ZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9BQk9VVC1OTFMgYi9lMmZzcHJvZ3MvQUJPVVQtTkxTCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MjhmOWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvQUJPVVQtTkxTCkBAIC0wLDAgKzEsNDM1IEBACitOb3RlcyBvbiB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKyAgIEZyZWUgc29mdHdhcmUgaXMgZ29pbmcgaW50ZXJuYXRpb25hbCEgIFRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QKK2lzIGEgd2F5IHRvIGdldCBtYWludGFpbmVycyBvZiBmcmVlIHNvZnR3YXJlLCB0cmFuc2xhdG9ycywgYW5kIHVzZXJzIGFsbAordG9nZXRoZXIsIHNvIHRoYXQgd2lsbCBncmFkdWFsbHkgYmVjb21lIGFibGUgdG8gc3BlYWsgbWFueSBsYW5ndWFnZXMuCitBIGZldyBwYWNrYWdlcyBhbHJlYWR5IHByb3ZpZGUgdHJhbnNsYXRpb25zIGZvciB0aGVpciBtZXNzYWdlcy4KKworICAgSWYgeW91IGZvdW5kIHRoaXMgYEFCT1VULU5MUycgZmlsZSBpbnNpZGUgYSBkaXN0cmlidXRpb24sIHlvdSBtYXkKK2Fzc3VtZSB0aGF0IHRoZSBkaXN0cmlidXRlZCBwYWNrYWdlIGRvZXMgdXNlIEdOVSBgZ2V0dGV4dCcgaW50ZXJuYWxseSwKK2l0c2VsZiBhdmFpbGFibGUgYXQgeW91ciBuZWFyZXN0IEdOVSBhcmNoaXZlIHNpdGUuICBCdXQgeW91IGRvIF9ub3RfCituZWVkIHRvIGluc3RhbGwgR05VIGBnZXR0ZXh0JyBwcmlvciB0byBjb25maWd1cmluZywgaW5zdGFsbGluZyBvciB1c2luZwordGhpcyBwYWNrYWdlIHdpdGggbWVzc2FnZXMgdHJhbnNsYXRlZC4KKworICAgSW5zdGFsbGVycyB3aWxsIGZpbmQgaGVyZSBzb21lIHVzZWZ1bCBoaW50cy4gIFRoZXNlIG5vdGVzIGFsc28KK2V4cGxhaW4gaG93IHVzZXJzIHNob3VsZCBwcm9jZWVkIGZvciBnZXR0aW5nIHRoZSBwcm9ncmFtcyB0byB1c2UgdGhlCithdmFpbGFibGUgdHJhbnNsYXRpb25zLiAgVGhleSB0ZWxsIGhvdyBwZW9wbGUgd2FudGluZyB0byBjb250cmlidXRlIGFuZAord29yayBhdCB0cmFuc2xhdGlvbnMgc2hvdWxkIGNvbnRhY3QgdGhlIGFwcHJvcHJpYXRlIHRlYW0uCisKKyAgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MgaW4gdGhlIGBpbnRsLycgZGlyZWN0b3J5IG9yIGJ1Z3Mgd2hpY2ggbWF5IGJlCityZWxhdGVkIHRvIGludGVybmF0aW9uYWxpemF0aW9uLCB5b3Ugc2hvdWxkIHRlbGwgYWJvdXQgdGhlIHZlcnNpb24gb2YKK2BnZXR0ZXh0JyB3aGljaCBpcyB1c2VkLiAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKK2BpbnRsL1ZFUlNJT04nIGZpbGUsIGluIGludGVybmF0aW9uYWxpemVkIHBhY2thZ2VzLgorCitRdWljayBjb25maWd1cmF0aW9uIGFkdmljZQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgSWYgeW91IHdhbnQgdG8gZXhwbG9pdCB0aGUgZnVsbCBwb3dlciBvZiBpbnRlcm5hdGlvbmFsaXphdGlvbiwgeW91CitzaG91bGQgY29uZmlndXJlIGl0IHVzaW5nCisKKyAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKKwordG8gZm9yY2UgdXNhZ2Ugb2YgaW50ZXJuYXRpb25hbGl6aW5nIHJvdXRpbmVzIHByb3ZpZGVkIHdpdGhpbiB0aGlzCitwYWNrYWdlLCBkZXNwaXRlIHRoZSBleGlzdGVuY2Ugb2YgaW50ZXJuYXRpb25hbGl6aW5nIGNhcGFiaWxpdGllcyBpbiB0aGUKK29wZXJhdGluZyBzeXN0ZW0gd2hlcmUgdGhpcyBwYWNrYWdlIGlzIGJlaW5nIGluc3RhbGxlZC4gIFNvIGZhciwgb25seQordGhlIGBnZXR0ZXh0JyBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgR05VIEMgbGlicmFyeSB2ZXJzaW9uIDIgcHJvdmlkZXMgYXMKK21hbnkgZmVhdHVyZXMgKHN1Y2ggYXMgbG9jYWxlIGFsaWFzLCBtZXNzYWdlIGluaGVyaXRhbmNlLCBhdXRvbWF0aWMKK2NoYXJzZXQgY29udmVyc2lvbiBvciBwbHVyYWwgZm9ybSBoYW5kbGluZykgYXMgdGhlIGltcGxlbWVudGF0aW9uIGhlcmUuCitJdCBpcyBhbHNvIG5vdCBwb3NzaWJsZSB0byBvZmZlciB0aGlzIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBvbiB0b3AKK29mIGEgYGNhdGdldHMnIGltcGxlbWVudGF0aW9uLiAgRnV0dXJlIHZlcnNpb25zIG9mIEdOVSBgZ2V0dGV4dCcgd2lsbAordmVyeSBsaWtlbHkgY29udmV5IGV2ZW4gbW9yZSBmdW5jdGlvbmFsaXR5LiAgU28gaXQgbWlnaHQgYmUgYSBnb29kIGlkZWEKK3RvIGNoYW5nZSB0byBHTlUgYGdldHRleHQnIGFzIHNvb24gYXMgcG9zc2libGUuCisKKyAgIFNvIHlvdSBuZWVkIF9ub3RfIHByb3ZpZGUgdGhpcyBvcHRpb24gaWYgeW91IGFyZSB1c2luZyBHTlUgbGliYyAyIG9yCit5b3UgaGF2ZSBpbnN0YWxsZWQgYSByZWNlbnQgY29weSBvZiB0aGUgR05VIGdldHRleHQgcGFja2FnZSB3aXRoIHRoZQoraW5jbHVkZWQgYGxpYmludGwnLgorCitJTlNUQUxMIE1hdHRlcnMKKz09PT09PT09PT09PT09PQorCisgICBTb21lIHBhY2thZ2VzIGFyZSAibG9jYWxpemFibGUiIHdoZW4gcHJvcGVybHkgaW5zdGFsbGVkOyB0aGUKK3Byb2dyYW1zIHRoZXkgY29udGFpbiBjYW4gYmUgbWFkZSB0byBzcGVhayB5b3VyIG93biBuYXRpdmUgbGFuZ3VhZ2UuCitNb3N0IHN1Y2ggcGFja2FnZXMgdXNlIEdOVSBgZ2V0dGV4dCcuICBPdGhlciBwYWNrYWdlcyBoYXZlIHRoZWlyIG93bgord2F5cyB0byBpbnRlcm5hdGlvbmFsaXphdGlvbiwgcHJlZGF0aW5nIEdOVSBgZ2V0dGV4dCcuCisKKyAgIEJ5IGRlZmF1bHQsIHRoaXMgcGFja2FnZSB3aWxsIGJlIGluc3RhbGxlZCB0byBhbGxvdyB0cmFuc2xhdGlvbiBvZgorbWVzc2FnZXMuICBJdCB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IHdoZXRoZXIgdGhlIHN5c3RlbSBhbHJlYWR5Citwcm92aWRlcyB0aGUgR05VIGBnZXR0ZXh0JyBmdW5jdGlvbnMuICBJZiBub3QsIHRoZSBHTlUgYGdldHRleHQnIG93bgorbGlicmFyeSB3aWxsIGJlIHVzZWQuICBUaGlzIGxpYnJhcnkgaXMgd2hvbGx5IGNvbnRhaW5lZCB3aXRoaW4gdGhpcworcGFja2FnZSwgdXN1YWxseSBpbiB0aGUgYGludGwvJyBzdWJkaXJlY3RvcnksIHNvIHByaW9yIGluc3RhbGxhdGlvbiBvZgordGhlIEdOVSBgZ2V0dGV4dCcgcGFja2FnZSBpcyBfbm90XyByZXF1aXJlZC4gIEluc3RhbGxlcnMgbWF5IHVzZQorc3BlY2lhbCBvcHRpb25zIGF0IGNvbmZpZ3VyYXRpb24gdGltZSBmb3IgY2hhbmdpbmcgdGhlIGRlZmF1bHQKK2JlaGF2aW91ci4gIFRoZSBjb21tYW5kczoKKworICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dAorICAgICAuL2NvbmZpZ3VyZSAtLWRpc2FibGUtbmxzCisKK3dpbGwgcmVzcGVjdGl2ZWx5IGJ5cGFzcyBhbnkgcHJlLWV4aXN0aW5nIGBnZXR0ZXh0JyB0byB1c2UgdGhlCitpbnRlcm5hdGlvbmFsaXppbmcgcm91dGluZXMgcHJvdmlkZWQgd2l0aGluIHRoaXMgcGFja2FnZSwgb3IgZWxzZSwKK190b3RhbGx5XyBkaXNhYmxlIHRyYW5zbGF0aW9uIG9mIG1lc3NhZ2VzLgorCisgICBXaGVuIHlvdSBhbHJlYWR5IGhhdmUgR05VIGBnZXR0ZXh0JyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gYW5kIHJ1bgorY29uZmlndXJlIHdpdGhvdXQgYW4gb3B0aW9uIGZvciB5b3VyIG5ldyBwYWNrYWdlLCBgY29uZmlndXJlJyB3aWxsCitwcm9iYWJseSBkZXRlY3QgdGhlIHByZXZpb3VzbHkgYnVpbHQgYW5kIGluc3RhbGxlZCBgbGliaW50bC5hJyBmaWxlIGFuZAord2lsbCBkZWNpZGUgdG8gdXNlIHRoaXMuICBUaGlzIG1pZ2h0IGJlIG5vdCB3aGF0IGlzIGRlc2lyYWJsZS4gIFlvdQorc2hvdWxkIHVzZSB0aGUgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LiAgSS5lLgoraWYgdGhlIGZpbGUgYGludGwvVkVSU0lPTicgc2hvd3MgdGhhdCB0aGUgbGlicmFyeSB3aGljaCBjb21lcyB3aXRoIHRoaXMKK3BhY2thZ2UgaXMgbW9yZSByZWNlbnQsIHlvdSBzaG91bGQgdXNlCisKKyAgICAgLi9jb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQKKwordG8gcHJldmVudCBhdXRvLWRldGVjdGlvbi4KKworICAgVGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyB3aWxsIG5vdCB0ZXN0IGZvciB0aGUgYGNhdGdldHMnIGZ1bmN0aW9uCithbmQgdGhlcmVmb3JlIGl0IHdpbGwgbm90IGJlIHVzZWQuICBUaGUgcmVhc29uIGlzIHRoYXQgZXZlbiBhbgorZW11bGF0aW9uIG9mIGBnZXR0ZXh0JyBvbiB0b3Agb2YgYGNhdGdldHMnIGNvdWxkIG5vdCBwcm92aWRlIGFsbCB0aGUKK2V4dGVuc2lvbnMgb2YgdGhlIEdOVSBgZ2V0dGV4dCcgbGlicmFyeS4KKworICAgSW50ZXJuYXRpb25hbGl6ZWQgcGFja2FnZXMgaGF2ZSB1c3VhbGx5IG1hbnkgYHBvL0xMLnBvJyBmaWxlcywgd2hlcmUKK0xMIGdpdmVzIGFuIElTTyA2MzkgdHdvLWxldHRlciBjb2RlIGlkZW50aWZ5aW5nIHRoZSBsYW5ndWFnZS4gIFVubGVzcwordHJhbnNsYXRpb25zIGhhdmUgYmVlbiBmb3JiaWRkZW4gYXQgYGNvbmZpZ3VyZScgdGltZSBieSB1c2luZyB0aGUKK2AtLWRpc2FibGUtbmxzJyBzd2l0Y2gsIGFsbCBhdmFpbGFibGUgdHJhbnNsYXRpb25zIGFyZSBpbnN0YWxsZWQKK3RvZ2V0aGVyIHdpdGggdGhlIHBhY2thZ2UuICBIb3dldmVyLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYExJTkdVQVMnCittYXkgYmUgc2V0LCBwcmlvciB0byBjb25maWd1cmF0aW9uLCB0byBsaW1pdCB0aGUgaW5zdGFsbGVkIHNldC4KK2BMSU5HVUFTJyBzaG91bGQgdGhlbiBjb250YWluIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgdHdvLWxldHRlcgorY29kZXMsIHN0YXRpbmcgd2hpY2ggbGFuZ3VhZ2VzIGFyZSBhbGxvd2VkLgorCitVc2luZyBUaGlzIFBhY2thZ2UKKz09PT09PT09PT09PT09PT09PQorCisgICBBcyBhIHVzZXIsIGlmIHlvdXIgbGFuZ3VhZ2UgaGFzIGJlZW4gaW5zdGFsbGVkIGZvciB0aGlzIHBhY2thZ2UsIHlvdQorb25seSBoYXZlIHRvIHNldCB0aGUgYExBTkcnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBhcHByb3ByaWF0ZQorYExMX0NDJyBjb21iaW5hdGlvbi4gIEhlcmUgYExMJyBpcyBhbiBJU08gNjM5IHR3by1sZXR0ZXIgbGFuZ3VhZ2UgY29kZSwKK2FuZCBgQ0MnIGlzIGFuIElTTyAzMTY2IHR3by1sZXR0ZXIgY291bnRyeSBjb2RlLiAgRm9yIGV4YW1wbGUsIGxldCdzCitzdXBwb3NlIHRoYXQgeW91IHNwZWFrIEdlcm1hbiBhbmQgbGl2ZSBpbiBHZXJtYW55LiAgQXQgdGhlIHNoZWxsCitwcm9tcHQsIG1lcmVseSBleGVjdXRlIGBzZXRlbnYgTEFORyBkZV9ERScgKGluIGBjc2gnKSwKK2BleHBvcnQgTEFORzsgTEFORz1kZV9ERScgKGluIGBzaCcpIG9yIGBleHBvcnQgTEFORz1kZV9ERScgKGluIGBiYXNoJykuCitUaGlzIGNhbiBiZSBkb25lIGZyb20geW91ciBgLmxvZ2luJyBvciBgLnByb2ZpbGUnIGZpbGUsIG9uY2UgYW5kIGZvcgorYWxsLgorCisgICBZb3UgbWlnaHQgdGhpbmsgdGhhdCB0aGUgY291bnRyeSBjb2RlIHNwZWNpZmljYXRpb24gaXMgcmVkdW5kYW50LgorQnV0IGluIGZhY3QsIHNvbWUgbGFuZ3VhZ2VzIGhhdmUgZGlhbGVjdHMgaW4gZGlmZmVyZW50IGNvdW50cmllcy4gIEZvcgorZXhhbXBsZSwgYGRlX0FUJyBpcyB1c2VkIGZvciBBdXN0cmlhLCBhbmQgYHB0X0JSJyBmb3IgQnJhemlsLiAgVGhlCitjb3VudHJ5IGNvZGUgc2VydmVzIHRvIGRpc3Rpbmd1aXNoIHRoZSBkaWFsZWN0cy4KKworICAgVGhlIGxvY2FsZSBuYW1pbmcgY29udmVudGlvbiBvZiBgTExfQ0MnLCB3aXRoIGBMTCcgZGVub3RpbmcgdGhlCitsYW5ndWFnZSBhbmQgYENDJyBkZW5vdGluZyB0aGUgY291bnRyeSwgaXMgdGhlIG9uZSB1c2Ugb24gc3lzdGVtcyBiYXNlZAorb24gR05VIGxpYmMuICBPbiBvdGhlciBzeXN0ZW1zLCBzb21lIHZhcmlhdGlvbnMgb2YgdGhpcyBzY2hlbWUgYXJlCit1c2VkLCBzdWNoIGFzIGBMTCcgb3IgYExMX0NDLkVOQ09ESU5HJy4gIFlvdSBjYW4gZ2V0IHRoZSBsaXN0IG9mCitsb2NhbGVzIHN1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSBmb3IgeW91ciBjb3VudHJ5IGJ5IHJ1bm5pbmcgdGhlIGNvbW1hbmQKK2Bsb2NhbGUgLWEgfCBncmVwICdeTEwnJy4KKworICAgTm90IGFsbCBwcm9ncmFtcyBoYXZlIHRyYW5zbGF0aW9ucyBmb3IgYWxsIGxhbmd1YWdlcy4gIEJ5IGRlZmF1bHQsIGFuCitFbmdsaXNoIG1lc3NhZ2UgaXMgc2hvd24gaW4gcGxhY2Ugb2YgYSBub25leGlzdGVudCB0cmFuc2xhdGlvbi4gIElmIHlvdQordW5kZXJzdGFuZCBvdGhlciBsYW5ndWFnZXMsIHlvdSBjYW4gc2V0IHVwIGEgcHJpb3JpdHkgbGlzdCBvZiBsYW5ndWFnZXMuCitUaGlzIGlzIGRvbmUgdGhyb3VnaCBhIGRpZmZlcmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgY2FsbGVkCitgTEFOR1VBR0UnLiAgR05VIGBnZXR0ZXh0JyBnaXZlcyBwcmVmZXJlbmNlIHRvIGBMQU5HVUFHRScgb3ZlciBgTEFORycKK2ZvciB0aGUgcHVycG9zZSBvZiBtZXNzYWdlIGhhbmRsaW5nLCBidXQgeW91IHN0aWxsIG5lZWQgdG8gaGF2ZSBgTEFORycKK3NldCB0byB0aGUgcHJpbWFyeSBsYW5ndWFnZTsgdGhpcyBpcyByZXF1aXJlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUKK3N5c3RlbSBsaWJyYXJpZXMuICBGb3IgZXhhbXBsZSwgc29tZSBTd2VkaXNoIHVzZXJzIHdobyB3b3VsZCByYXRoZXIKK3JlYWQgdHJhbnNsYXRpb25zIGluIEdlcm1hbiB0aGFuIEVuZ2xpc2ggZm9yIHdoZW4gU3dlZGlzaCBpcyBub3QKK2F2YWlsYWJsZSwgc2V0IGBMQU5HVUFHRScgdG8gYHN2OmRlJyB3aGlsZSBsZWF2aW5nIGBMQU5HJyB0byBgc3ZfU0UnLgorCisgICBJbiB0aGUgYExBTkdVQUdFJyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYnV0IG5vdCBpbiB0aGUgYExBTkcnCitlbnZpcm9ubWVudCB2YXJpYWJsZSwgYExMX0NDJyBjb21iaW5hdGlvbnMgY2FuIGJlIGFiYnJldmlhdGVkIGFzIGBMTCcKK3RvIGRlbm90ZSB0aGUgbGFuZ3VhZ2UncyBtYWluIGRpYWxlY3QuICBGb3IgZXhhbXBsZSwgYGRlJyBpcyBlcXVpdmFsZW50Cit0byBgZGVfREUnIChHZXJtYW4gYXMgc3Bva2VuIGluIEdlcm1hbnkpLCBhbmQgYHB0JyB0byBgcHRfUFQnCisoUG9ydHVndWVzZSBhcyBzcG9rZW4gaW4gUG9ydHVnYWwpIGluIHRoaXMgY29udGV4dC4KKworVHJhbnNsYXRpbmcgVGVhbXMKKz09PT09PT09PT09PT09PT09CisKKyAgIEZvciB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IHRvIGJlIGEgc3VjY2Vzcywgd2UgbmVlZCBpbnRlcmVzdGVkCitwZW9wbGUgd2hvIGxpa2UgdGhlaXIgb3duIGxhbmd1YWdlIGFuZCB3cml0ZSBpdCB3ZWxsLCBhbmQgd2hvIGFyZSBhbHNvCithYmxlIHRvIHN5bmVyZ2l6ZSB3aXRoIG90aGVyIHRyYW5zbGF0b3JzIHNwZWFraW5nIHRoZSBzYW1lIGxhbmd1YWdlLgorRWFjaCB0cmFuc2xhdGlvbiB0ZWFtIGhhcyBpdHMgb3duIG1haWxpbmcgbGlzdC4gIFRoZSB1cC10by1kYXRlIGxpc3Qgb2YKK3RlYW1zIGNhbiBiZSBmb3VuZCBhdCB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0J3MgaG9tZXBhZ2UsCitgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL2NvbnRyaWIvcG8vSFRNTC8nLCBpbiB0aGUgIk5hdGlvbmFsIHRlYW1zIgorYXJlYS4KKworICAgSWYgeW91J2QgbGlrZSB0byB2b2x1bnRlZXIgdG8gX3dvcmtfIGF0IHRyYW5zbGF0aW5nIG1lc3NhZ2VzLCB5b3UKK3Nob3VsZCBiZWNvbWUgYSBtZW1iZXIgb2YgdGhlIHRyYW5zbGF0aW5nIHRlYW0gZm9yIHlvdXIgb3duIGxhbmd1YWdlLgorVGhlIHN1YnNjcmliaW5nIGFkZHJlc3MgaXMgX25vdF8gdGhlIHNhbWUgYXMgdGhlIGxpc3QgaXRzZWxmLCBpdCBoYXMKK2AtcmVxdWVzdCcgYXBwZW5kZWQuICBGb3IgZXhhbXBsZSwgc3BlYWtlcnMgb2YgU3dlZGlzaCBjYW4gc2VuZCBhCittZXNzYWdlIHRvIGBzdi1yZXF1ZXN0QGxpLm9yZycsIGhhdmluZyB0aGlzIG1lc3NhZ2UgYm9keToKKworICAgICBzdWJzY3JpYmUKKworICAgS2VlcCBpbiBtaW5kIHRoYXQgdGVhbSBtZW1iZXJzIGFyZSBleHBlY3RlZCB0byBwYXJ0aWNpcGF0ZQorX2FjdGl2ZWx5XyBpbiB0cmFuc2xhdGlvbnMsIG9yIGF0IHNvbHZpbmcgdHJhbnNsYXRpb25hbCBkaWZmaWN1bHRpZXMsCityYXRoZXIgdGhhbiBtZXJlbHkgbHVya2luZyBhcm91bmQuICBJZiB5b3VyIHRlYW0gZG9lcyBub3QgZXhpc3QgeWV0IGFuZAoreW91IHdhbnQgdG8gc3RhcnQgb25lLCBvciBpZiB5b3UgYXJlIHVuc3VyZSBhYm91dCB3aGF0IHRvIGRvIG9yIGhvdyB0bworZ2V0IHN0YXJ0ZWQsIHBsZWFzZSB3cml0ZSB0byBgdHJhbnNsYXRpb25AaXJvLnVtb250cmVhbC5jYScgdG8gcmVhY2ggdGhlCitjb29yZGluYXRvciBmb3IgYWxsIHRyYW5zbGF0b3IgdGVhbXMuCisKKyAgIFRoZSBFbmdsaXNoIHRlYW0gaXMgc3BlY2lhbC4gIEl0IHdvcmtzIGF0IGltcHJvdmluZyBhbmQgdW5pZm9ybWl6aW5nCit0aGUgdGVybWlub2xvZ3kgaW4gdXNlLiAgUHJvdmVuIGxpbmd1aXN0aWMgc2tpbGwgYXJlIHByYWlzZWQgbW9yZSB0aGFuCitwcm9ncmFtbWluZyBza2lsbCwgaGVyZS4KKworQXZhaWxhYmxlIFBhY2thZ2VzCis9PT09PT09PT09PT09PT09PT0KKworICAgTGFuZ3VhZ2VzIGFyZSBub3QgZXF1YWxseSBzdXBwb3J0ZWQgaW4gYWxsIHBhY2thZ2VzLiAgVGhlIGZvbGxvd2luZworbWF0cml4IHNob3dzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGludGVybmF0aW9uYWxpemF0aW9uLCBhcyBvZiBBdWd1c3QKKzIwMDIuICBUaGUgbWF0cml4IHNob3dzLCBpbiByZWdhcmQgb2YgZWFjaCBwYWNrYWdlLCBmb3Igd2hpY2ggbGFuZ3VhZ2VzCitQTyBmaWxlcyBoYXZlIGJlZW4gc3VibWl0dGVkIHRvIHRyYW5zbGF0aW9uIGNvb3JkaW5hdGlvbiwgd2l0aCBhCit0cmFuc2xhdGlvbiBwZXJjZW50YWdlIG9mIGF0IGxlYXN0IDUwJS4KKworICAgICBSZWFkeSBQTyBmaWxlcyAgICBiZSBiZyBjYSBjcyBkYSBkZSBlbCBlbiBlbyBlcyBldCBmaSBmcgorICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgIGEycHMgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgIFtdIHwKKyAgICAgYXAtdXRpbHMgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBiYXNoICAgICAgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICBbXSB8CisgICAgIGJmZCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgYmludXRpbHMgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gfAorICAgICBiaXNvbiAgICAgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICBbXSB8CisgICAgIGNsaXNwICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgY2xpc3AgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgW10gICAgW10gICAgICAgW10gfAorICAgICBjbGlzcGxvdyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGNwaW8gICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgZGFya3N0YXQgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBkaWZmdXRpbHMgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSBbXSAgICAgICBbXSB8CisgICAgIGVuc2NyaXB0ICAgICAgICB8ICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKKyAgICAgZXJyb3IgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgW10gfAorICAgICBmZXRjaG1haWwgICAgICAgfCAgICAgICBbXSAoKSBbXSBbXSAgICAgICAgICBbXSAgICAgICAoKSB8CisgICAgIGZpbGV1dGlscyAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdIFtdICAgIFtdIHwKKyAgICAgZmluZHV0aWxzICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgW10gW10gW10gICAgW10gfAorICAgICBmbGV4ICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICBbXSAgICAgICBbXSB8CisgICAgIGdhcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgZ2F3ayAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgW10gfAorICAgICBnY2FsICAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8CisgICAgIGdjYyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgZ2V0dGV4dCAgICAgICAgIHwgICAgICAgW10gICAgW10gW10gICAgICAgICAgW10gICAgICAgW10gfAorICAgICBnbnVwZyAgICAgICAgICAgfCAgICAgICBbXSAgICAgICBbXSBbXSAgICBbXSBbXSBbXSAgICBbXSB8CisgICAgIGdwcm9mICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgZ3BzZHJpdmUgICAgICAgIHwgICAgICAgICAgICAgKCkgKCkgICAgKCkgICAgKCkgICAgICAgKCkgfAorICAgICBncmVwICAgICAgICAgICAgfCAgICBbXSBbXSAgICAgICBbXSBbXSAgICAgICBbXSBbXSBbXSBbXSB8CisgICAgIGdyZXRsICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIHwKKyAgICAgZ3RodW1iICAgICAgICAgIHwgICAgICAgICAgICAgICAgKCkgICAgICAgICAgKCkgICAgICAgKCkgfAorICAgICBoZWxsbyAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSBbXSBbXSAgICBbXSBbXSBbXSBbXSBbXSB8CisgICAgIGlkLXV0aWxzICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKKyAgICAgaW5kZW50ICAgICAgICAgIHwgICAgICAgW10gICAgICAgW10gICAgICAgW10gICAgW10gICAgW10gfAorICAgICBqcGlsb3QgICAgICAgICAgfCAgICAgICAgICAoKSBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSB8CisgICAgIGp3aG9pcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAga2JkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgW10gfAorICAgICBsZCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSB8CisgICAgIGxpYmMgICAgICAgICAgICB8ICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgIFtdICAgIFtdIFtdIHwKKyAgICAgbGliaWNvbnYgICAgICAgIHwgICAgICAgW10gICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgfAorICAgICBsaWZlbGluZXMgICAgICAgfCAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICAoKSB8CisgICAgIGxpbHlwb25kICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIFtdIHwKKyAgICAgbGluZ290ZWFjaCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gfAorICAgICBsaW5nb3RlYWNoX2xlc3NvbnN8ICAgICAgICAgICAgICAgICgpICAgICAgICAgICgpICAgICAgICAgIHwKKyAgICAgbHlueCAgICAgICAgICAgIHwgICAgICAgW10gW10gW10gW10gICAgICAgICAgICAgW10gICAgICAgfAorICAgICBtNCAgICAgICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSBbXSAgICAgICAgICAgICAgICBbXSB8CisgICAgIG1ha2UgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgbWFuLWRiICAgICAgICAgIHwgICAgICAgW10gKCkgKCkgW10gICAgICAgICAgKCkgICAgICAgKCkgfAorICAgICBteXNlY3JldGRpYXJ5ICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICBbXSB8CisgICAgIG5hbm8gICAgICAgICAgICB8ICAgICAgIFtdICgpIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgbmFub18xXzAgICAgICAgIHwgICAgICAgW10gKCkgW10gW10gICAgICAgICAgW10gICAgICAgW10gfAorICAgICBvcGNvZGVzICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSAgICAgICBbXSB8CisgICAgIHBhcnRlZCAgICAgICAgICB8ICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgcHR4ICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgW10gW10gW10gW10gW10gfAorICAgICBweXRob24gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIHJlY29kZSAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdIFtdICAgIFtdIFtdICAgICAgIFtdIHwKKyAgICAgc2VkICAgICAgICAgICAgIHwgICAgICAgW10gW10gW10gW10gW10gICAgW10gW10gW10gW10gW10gfAorICAgICBzaC11dGlscyAgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICBbXSB8CisgICAgIHNoYXJ1dGlscyAgICAgICB8ICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgIFtdIHwKKyAgICAgc2tldGNoICAgICAgICAgIHwgICAgICAgICAgICAgICAgKCkgICAgICAgICAgW10gICAgICAgKCkgfAorICAgICBzb3VuZHRyYWNrZXIgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICBbXSB8CisgICAgIHNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgdGFyICAgICAgICAgICAgIHwgICAgICAgICAgW10gW10gW10gICAgICAgICAgW10gW10gICAgW10gfAorICAgICB0ZXhpbmZvICAgICAgICAgfCAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSAgICAgICAgICBbXSB8CisgICAgIHRleHR1dGlscyAgICAgICB8ICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgIFtdIHwKKyAgICAgdXRpbC1saW51eCAgICAgIHwgICAgICAgICAgW10gW10gW10gICAgICAgICAgW10gW10gICAgW10gfAorICAgICB2b3JiaXMtdG9vbHMgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8CisgICAgIHdhc3Rlc2VkZ2UgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgd2RpZmYgICAgICAgICAgIHwgICAgICAgW10gICAgW10gW10gICAgICAgICAgW10gW10gICAgW10gfAorICAgICB3Z2V0ICAgICAgICAgICAgfCAgICBbXSBbXSBbXSBbXSBbXSBbXSAgICAgICBbXSBbXSBbXSBbXSB8CisgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgICAgICAgICAgICAgICAgICAgYmUgYmcgY2EgY3MgZGEgZGUgZWwgZW4gZW8gZXMgZXQgZmkgZnIKKyAgICAgICAgICAgICAgICAgICAgICAgIDAgIDIgMTkgMTAgMzAgNDQgIDkgIDEgMTIgNDQgMTcgIDYgNTMKKyAgICAgCisgICAgICAgICAgICAgICAgICAgICAgIGdsIGhlIGhyIGh1IGlkIGl0IGphIGtvIGx2IG5iIG5sIG5uCisgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgYTJwcyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICAgW10gICAgfAorICAgICBhcC11dGlscyAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGJhc2ggICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgYmZkICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAorICAgICBiaW51dGlscyAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8CisgICAgIGJpc29uICAgICAgICAgICB8ICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgIFtdICAgIHwKKyAgICAgY2xpc3AgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBjbGlzcCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8CisgICAgIGNsaXNwbG93ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgY3BpbyAgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgW10gICAgICAgW10gICAgfAorICAgICBkYXJrc3RhdCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGRpZmZ1dGlscyAgICAgICB8IFtdIFtdICAgIFtdIFtdICAgIFtdICAgICAgICAgICAgICAgIHwKKyAgICAgZW5zY3JpcHQgICAgICAgIHwgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgW10gICAgfAorICAgICBlcnJvciAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGZldGNobWFpbCAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKKyAgICAgZmlsZXV0aWxzICAgICAgIHwgICAgICAgICAgW10gICAgW10gW10gICAgICAgICAgICAgICAgfAorICAgICBmaW5kdXRpbHMgICAgICAgfCBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSAgICAgICBbXSAgICB8CisgICAgIGZsZXggICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgIHwKKyAgICAgZ2FzICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBnYXdrICAgICAgICAgICAgfCAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGdjYWwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgZ2NjICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAorICAgICBnZXR0ZXh0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICB8CisgICAgIGdudXBnICAgICAgICAgICB8IFtdICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwKKyAgICAgZ3Byb2YgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgfAorICAgICBncHNkcml2ZSAgICAgICAgfCAgICAgICAgICBbXSAgICAoKSAgICAgICAgICAgICAoKSAgICB8CisgICAgIGdyZXAgICAgICAgICAgICB8IFtdIFtdIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwKKyAgICAgZ3JldGwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBndGh1bWIgICAgICAgICAgfCAgICAgICAgICAgICAgICAoKSAoKSAgICAgICAgICAgICAgICB8CisgICAgIGhlbGxvICAgICAgICAgICB8IFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIFtdIHwKKyAgICAgaWQtdXRpbHMgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgW10gICAgfAorICAgICBpbmRlbnQgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICBbXSAgICAgICAgICBbXSAgICB8CisgICAgIGpwaWxvdCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICgpICAgIHwKKyAgICAgandob2lzICAgICAgICAgIHwgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgfAorICAgICBrYmQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGxkICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgbGliYyAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgfAorICAgICBsaWJpY29udiAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGxpZmVsaW5lcyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgbGlseXBvbmQgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAorICAgICBsaW5nb3RlYWNoICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIGxpbmdvdGVhY2hfbGVzc29uc3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICBseW54ICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICBbXSAgICB8CisgICAgIG00ICAgICAgICAgICAgICB8IFtdICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIFtdICAgIHwKKyAgICAgbWFrZSAgICAgICAgICAgIHwgW10gW10gW10gICAgICAgICAgW10gW10gICAgICAgW10gICAgfAorICAgICBtYW4tZGIgICAgICAgICAgfCAgICAgICAgICAgICAgICAoKSAoKSAgICAgICAgICAgICAgICB8CisgICAgIG15c2VjcmV0ZGlhcnkgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgbmFubyAgICAgICAgICAgIHwgW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgfAorICAgICBuYW5vXzFfMCAgICAgICAgfCBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICBbXSAgICBbXSB8CisgICAgIG9wY29kZXMgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIFtdICAgIHwKKyAgICAgcGFydGVkICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gfAorICAgICBwdHggICAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICBbXSBbXSAgICB8CisgICAgIHB5dGhvbiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgcmVjb2RlICAgICAgICAgIHwgW10gW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAorICAgICBzZWQgICAgICAgICAgICAgfCBbXSBbXSBbXSAgICBbXSBbXSBbXSBbXSAgICAgICBbXSAgICB8CisgICAgIHNoLXV0aWxzICAgICAgICB8ICAgICAgICAgICAgICAgIFtdIFtdICAgICAgIFtdICAgICAgIHwKKyAgICAgc2hhcnV0aWxzICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgfAorICAgICBza2V0Y2ggICAgICAgICAgfCAgICAgICAgICAgICAgICAoKSAgICAgICAgICAgICAgICAgICB8CisgICAgIHNvdW5kdHJhY2tlciAgICB8IFtdICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICB0YXIgICAgICAgICAgICAgfCBbXSAgICBbXSAgICBbXSBbXSBbXSAgICAgICBbXSAgICAgICB8CisgICAgIHRleGluZm8gICAgICAgICB8ICAgIFtdIFtdICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKKyAgICAgdGV4dHV0aWxzICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgfAorICAgICB1dGlsLWxpbnV4ICAgICAgfCAgICAgICAgICAgICAgICAoKSBbXSAgICAgICAgICAgICAgICB8CisgICAgIHZvcmJpcy10b29scyAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgd2FzdGVzZWRnZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICB3ZGlmZiAgICAgICAgICAgfCBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICB8CisgICAgIHdnZXQgICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgICAgICAgIFtdICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICAgICAgICAgICAgICAgICAgICBnbCBoZSBociBodSBpZCBpdCBqYSBrbyBsdiBuYiBubCBubgorICAgICAgICAgICAgICAgICAgICAgICAyMyAgOSAxMiAxOSAxNiAxMyAyNiAgOSAgMSAgNyAxOSAgMworICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgbm8gcGwgcHQgcHRfQlIgcnUgc2sgc2wgc3YgdHIgdWsgemhfQ04gemhfVFcKKyAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgICBhMnBzICAgICAgICAgICAgfCAoKSAoKSAoKSAgW10gICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICB8IDEwCisgICAgIGFwLXV0aWxzICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgIHwgIDAKKyAgICAgYmFzaCAgICAgICAgICAgIHwgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgorICAgICBiZmQgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8ICA1CisgICAgIGJpbnV0aWxzICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgIDUKKyAgICAgYmlzb24gICAgICAgICAgIHwgICAgICAgICAgIFtdICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAxMgorICAgICBjbGlzcCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCisgICAgIGNsaXNwICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKKyAgICAgY2xpc3Bsb3cgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAorICAgICBjcGlvICAgICAgICAgICAgfCAgICBbXSAgICAgW10gICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDEyCisgICAgIGRhcmtzdGF0ICAgICAgICB8ICAgICAgICAgICBbXSAgICAgICAgICAgIFtdICAgICAgICAoKSAgICAoKSAgIHwgIDIKKyAgICAgZGlmZnV0aWxzICAgICAgIHwgICAgW10gICAgIFtdICAgW10gICAgICAgW10gW10gICAgICAgICAgIFtdICAgfCAxNworICAgICBlbnNjcmlwdCAgICAgICAgfCAgICAgICAgICAgW10gICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8ICA4CisgICAgIGVycm9yICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgIHwgIDcKKyAgICAgZmV0Y2htYWlsICAgICAgIHwgICAgKCkgICAgICgpICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfCAgNgorICAgICBmaWxldXRpbHMgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgW10gICAgW10gICB8IDE0CisgICAgIGZpbmR1dGlscyAgICAgICB8ICAgIFtdICAgICBbXSAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwgMjEKKyAgICAgZmxleCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAgOQorICAgICBnYXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8ICAzCisgICAgIGdhd2sgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgIDYKKyAgICAgZ2NhbCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAgNAorICAgICBnY2MgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8ICA0CisgICAgIGdldHRleHQgICAgICAgICB8ICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICBbXSAgIHwgMTMKKyAgICAgZ251cGcgICAgICAgICAgIHwgICAgW10gICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAxNAorICAgICBncHJvZiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8ICA1CisgICAgIGdwc2RyaXZlICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwgIDMKKyAgICAgZ3JlcCAgICAgICAgICAgIHwgICAgW10gICAgIFtdICAgW10gICAgW10gICAgW10gICAgICAgICAgICAgICAgfCAyMAorICAgICBncmV0bCAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxCisgICAgIGd0aHVtYiAgICAgICAgICB8ICAgICAgICAgICAoKSAgICgpICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgIDEKKyAgICAgaGVsbG8gICAgICAgICAgIHwgW10gW10gICAgICAgICAgW10gW10gICAgW10gW10gW10gICAgICAgICAgICAgfCAyOAorICAgICBpZC11dGlscyAgICAgICAgfCAgICAgICAgICAgW10gICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8ICA5CisgICAgIGluZGVudCAgICAgICAgICB8ICAgICAgICAgICBbXSAgIFtdIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTQKKyAgICAganBpbG90ICAgICAgICAgIHwgKCkgICAgICAgICAgICAgICAgICAgICAgKCkgW10gICAgICAgICAgIFtdICAgfCAgNQorICAgICBqd2hvaXMgICAgICAgICAgfCAgICAgICAgICAgW10gICAoKSAgICAgICAoKSBbXSAgICAgICAgICAgW10gICB8ICA3CisgICAgIGtiZCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgIDUKKyAgICAgbGQgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAgNAorICAgICBsaWJjICAgICAgICAgICAgfCBbXSBbXSAgICAgW10gICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICB8IDE4CisgICAgIGxpYmljb252ICAgICAgICB8ICAgICAgICAgICBbXSAgIFtdIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTIKKyAgICAgbGlmZWxpbmVzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAgMQorICAgICBsaWx5cG9uZCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8ICA0CisgICAgIGxpbmdvdGVhY2ggICAgICB8ICAgICAgICAgICBbXSAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgIDUKKyAgICAgbGluZ290ZWFjaF9sZXNzb25zfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICB8ICAwCisgICAgIGx5bnggICAgICAgICAgICB8ICAgICAgICAgICBbXSAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTMKKyAgICAgbTQgICAgICAgICAgICAgIHwgICAgW10gICAgIFtdICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxMworICAgICBtYWtlICAgICAgICAgICAgfCAgICBbXSAgICAgW10gICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8IDE1CisgICAgIG1hbi1kYiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKKyAgICAgbXlzZWNyZXRkaWFyeSAgIHwgICAgICAgICAgIFtdICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAgNworICAgICBuYW5vICAgICAgICAgICAgfCAgICBbXSAgICAgICAgICBbXSAgICAgICBbXSAgICBbXSAgICAgICAgICAgICB8IDEzCisgICAgIG5hbm9fMV8wICAgICAgICB8ICAgIFtdICAgICAgICAgIFtdICAgICAgIFtdICAgIFtdICAgICAgICAgICAgIHwgMTQKKyAgICAgb3Bjb2RlcyAgICAgICAgIHwgICAgICAgICAgIFtdICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfCAgOAorICAgICBwYXJ0ZWQgICAgICAgICAgfCAgICAgICBbXSAgW10gICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICB8IDEyCisgICAgIHB0eCAgICAgICAgICAgICB8IFtdIFtdIFtdICBbXSAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTkKKyAgICAgcHl0aG9uICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAorICAgICByZWNvZGUgICAgICAgICAgfCAgICBbXSAgICAgW10gICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgICAgICB8IDE1CisgICAgIHNlZCAgICAgICAgICAgICB8ICAgICAgICAgICBbXSAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwgMjQKKyAgICAgc2gtdXRpbHMgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgfCAgOQorICAgICBzaGFydXRpbHMgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgW10gICB8IDE0CisgICAgIHNrZXRjaCAgICAgICAgICB8ICAgICAgICAgICBbXSAgICgpICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgIDQKKyAgICAgc291bmR0cmFja2VyICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAgNgorICAgICBzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxCisgICAgIHRhciAgICAgICAgICAgICB8IFtdIFtdICAgICBbXSAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwgMTkKKyAgICAgdGV4aW5mbyAgICAgICAgIHwgICAgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAxMAorICAgICB0ZXh0dXRpbHMgICAgICAgfCAgICAgICAgICAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICAgW10gICB8IDE0CisgICAgIHV0aWwtbGludXggICAgICB8ICAgICAgICAgICBbXSAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTAKKyAgICAgdm9yYmlzLXRvb2xzICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfCAgMworICAgICB3YXN0ZXNlZGdlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCisgICAgIHdkaWZmICAgICAgICAgICB8ICAgICAgICAgICBbXSAgIFtdIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIHwgMTQKKyAgICAgd2dldCAgICAgICAgICAgIHwgICAgW10gICAgICAgICAgW10gW10gW10gW10gW10gW10gICAgICAgIFtdICAgfCAyNAorICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICAgMzcgdGVhbXMgICAgICAgIG5vIHBsIHB0IHB0X0JSIHJ1IHNrIHNsIHN2IHRyIHVrIHpoX0NOIHpoX1RXCisgICAgICAgNjggZG9tYWlucyAgICAgICA0IDE1ICAyICAyOCAgIDI4IDEyIDEwIDQ5IDQzICA0ICAgMSAgICAgOSAgICA2MDkKKworICAgU29tZSBjb3VudGVycyBpbiB0aGUgcHJlY2VkaW5nIG1hdHJpeCBhcmUgaGlnaGVyIHRoYW4gdGhlIG51bWJlciBvZgordmlzaWJsZSBibG9ja3MgbGV0IHVzIGV4cGVjdC4gIFRoaXMgaXMgYmVjYXVzZSBhIGZldyBleHRyYSBQTyBmaWxlcyBhcmUKK3VzZWQgZm9yIGltcGxlbWVudGluZyByZWdpb25hbCB2YXJpYW50cyBvZiBsYW5ndWFnZXMsIG9yIGxhbmd1YWdlCitkaWFsZWN0cy4KKworICAgRm9yIGEgUE8gZmlsZSBpbiB0aGUgbWF0cml4IGFib3ZlIHRvIGJlIGVmZmVjdGl2ZSwgdGhlIHBhY2thZ2UgdG8KK3doaWNoIGl0IGFwcGxpZXMgc2hvdWxkIGFsc28gaGF2ZSBiZWVuIGludGVybmF0aW9uYWxpemVkIGFuZAorZGlzdHJpYnV0ZWQgYXMgc3VjaCBieSBpdHMgbWFpbnRhaW5lci4gIFRoZXJlIG1pZ2h0IGJlIGFuIG9ic2VydmFibGUKK2xhZyBiZXR3ZWVuIHRoZSBtZXJlIGV4aXN0ZW5jZSBhIFBPIGZpbGUgYW5kIGl0cyB3aWRlIGF2YWlsYWJpbGl0eSBpbiBhCitkaXN0cmlidXRpb24uCisKKyAgIElmIEF1Z3VzdCAyMDAyIHNlZW1zIHRvIGJlIG9sZCwgeW91IG1heSBmZXRjaCBhIG1vcmUgcmVjZW50IGNvcHkgb2YKK3RoaXMgYEFCT1VULU5MUycgZmlsZSBvbiBtb3N0IEdOVSBhcmNoaXZlIHNpdGVzLiAgVGhlIG1vc3QgdXAtdG8tZGF0ZQorbWF0cml4IHdpdGggZnVsbCBwZXJjZW50YWdlIGRldGFpbHMgY2FuIGJlIGZvdW5kIGF0CitgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL2NvbnRyaWIvcG8vSFRNTC9tYXRyaXguaHRtbCcuCisKK1VzaW5nIGBnZXR0ZXh0JyBpbiBuZXcgcGFja2FnZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgSWYgeW91IGFyZSB3cml0aW5nIGEgZnJlZWx5IGF2YWlsYWJsZSBwcm9ncmFtIGFuZCB3YW50IHRvCitpbnRlcm5hdGlvbmFsaXplIGl0IHlvdSBhcmUgd2VsY29tZSB0byB1c2UgR05VIGBnZXR0ZXh0JyBpbiB5b3VyCitwYWNrYWdlLiAgT2YgY291cnNlIHlvdSBoYXZlIHRvIHJlc3BlY3QgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitMaWNlbnNlIHdoaWNoIGNvdmVycyB0aGUgdXNlIG9mIHRoZSBHTlUgYGdldHRleHQnIGxpYnJhcnkuICBUaGlzIG1lYW5zCitpbiBwYXJ0aWN1bGFyIHRoYXQgZXZlbiBub24tZnJlZSBwcm9ncmFtcyBjYW4gdXNlIGBsaWJpbnRsJyBhcyBhIHNoYXJlZAorbGlicmFyeSwgd2hlcmVhcyBvbmx5IGZyZWUgc29mdHdhcmUgY2FuIHVzZSBgbGliaW50bCcgYXMgYSBzdGF0aWMKK2xpYnJhcnkgb3IgdXNlIG1vZGlmaWVkIHZlcnNpb25zIG9mIGBsaWJpbnRsJy4KKworICAgT25jZSB0aGUgc291cmNlcyBhcmUgY2hhbmdlZCBhcHByb3ByaWF0ZWx5IGFuZCB0aGUgc2V0dXAgY2FuIGhhbmRsZQordG8gdXNlIG9mIGBnZXR0ZXh0JyB0aGUgb25seSB0aGluZyBtaXNzaW5nIGFyZSB0aGUgdHJhbnNsYXRpb25zLiAgVGhlCitGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHBhY2thZ2VzIHdoaWNoIGFyZSBub3QKK2RldmVsb3BlZCBpbnNpZGUgdGhlIEdOVSBwcm9qZWN0LiAgVGhlcmVmb3JlIHRoZSBpbmZvcm1hdGlvbiBnaXZlbiBhYm92ZQorYXBwbGllcyBhbHNvIGZvciBldmVyeSBvdGhlciBGcmVlIFNvZnR3YXJlIFByb2plY3QuICBDb250YWN0CitgdHJhbnNsYXRpb25AaXJvLnVtb250cmVhbC5jYScgdG8gbWFrZSB0aGUgYC5wb3QnIGZpbGVzIGF2YWlsYWJsZSB0bwordGhlIHRyYW5zbGF0aW9uIHRlYW1zLgorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNTNlN2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvQW5kcm9pZC5tawpAQCAtMCwwICsxIEBACitpbmNsdWRlICQoY2FsbCBhbGwtc3ViZGlyLW1ha2VmaWxlcykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9DbGVhblNwZWMubWsgYi9lMmZzcHJvZ3MvQ2xlYW5TcGVjLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZDRjZWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvQ2xlYW5TcGVjLm1rCkBAIC0wLDAgKzEsNTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisKKyMgSWYgeW91IGRvbid0IG5lZWQgdG8gZG8gYSBmdWxsIGNsZWFuIGJ1aWxkIGJ1dCB3b3VsZCBsaWtlIHRvIHRvdWNoCisjIGEgZmlsZSBvciBkZWxldGUgc29tZSBpbnRlcm1lZGlhdGUgZmlsZXMsIGFkZCBhIGNsZWFuIHN0ZXAgdG8gdGhlIGVuZAorIyBvZiB0aGUgbGlzdC4gIFRoZXNlIHN0ZXBzIHdpbGwgb25seSBiZSBydW4gb25jZSwgaWYgdGhleSBoYXZlbid0IGJlZW4KKyMgcnVuIGJlZm9yZS4KKyMKKyMgRS5nLjoKKyMgICAgICQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgdG91Y2ggLWMgZXh0ZXJuYWwvc3FsaXRlL3NxbGl0ZTMuaCkKKyMgICAgICQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoUFJPRFVDVF9PVVQpL29iai9TVEFUSUNfTElCUkFSSUVTL2xpYnpfaW50ZXJtZWRpYXRlcykKKyMKKyMgQWx3YXlzIHVzZSAidG91Y2ggLWMiIGFuZCAicm0gLWYiIG9yICJybSAtcmYiIHRvIGdyYWNlZnVsbHkgZGVhbCB3aXRoCisjIGZpbGVzIHRoYXQgYXJlIG1pc3Npbmcgb3IgaGF2ZSBiZWVuIG1vdmVkLgorIworIyBVc2UgJChQUk9EVUNUX09VVCkgdG8gZ2V0IHRvIHRoZSAib3V0L3RhcmdldC9wcm9kdWN0L2JsYWgvIiBkaXJlY3RvcnkuCisjIFVzZSAkKE9VVF9ESVIpIHRvIHJlZmVyIHRvIHRoZSAib3V0IiBkaXJlY3RvcnkuCisjCisjIElmIHlvdSBuZWVkIHRvIHJlLWRvIHNvbWV0aGluZyB0aGF0J3MgYWxyZWFkeSBtZW50aW9uZWQsIGp1c3QgY29weQorIyB0aGUgY29tbWFuZCBhbmQgYWRkIGl0IHRvIHRoZSBib3R0b20gb2YgdGhlIGxpc3QuICBFLmcuLCBpZiBhIGNoYW5nZQorIyB0aGF0IHlvdSBtYWRlIGxhc3Qgd2VlayByZXF1aXJlZCB0b3VjaGluZyBhIGZpbGUgYW5kIGEgY2hhbmdlIHlvdQorIyBtYWRlIHRvZGF5IHJlcXVpcmVzIHRvdWNoaW5nIHRoZSBzYW1lIGZpbGUsIGp1c3QgY29weSB0aGUgb2xkCisjIHRvdWNoIHN0ZXAgYW5kIGFkZCBpdCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorIworIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgTkVXRVIgQ0xFQU4gU1RFUFMgTVVTVCBCRSBBVCBUSEUgRU5EIE9GIFRIRSBMSVNUCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisjIEZvciBleGFtcGxlOgorIyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoT1VUX0RJUikvdGFyZ2V0L2NvbW1vbi9vYmovQVBQUy9BbmRyb2lkVGVzdHNfaW50ZXJtZWRpYXRlcykKKyMkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2NvcmVfaW50ZXJtZWRpYXRlcykKKyMkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIGZpbmQgJChPVVRfRElSKSAtdHlwZSBmIC1uYW1lICJJR1RhbGtTZXNzaW9uKiIgLXByaW50MCB8IHhhcmdzIC0wIHJtIC1mKQorIyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoUFJPRFVDVF9PVVQpL2RhdGEvKikKKworIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgTkVXRVIgQ0xFQU4gU1RFUFMgTVVTVCBCRSBBVCBUSEUgRU5EIE9GIFRIRSBMSVNUCisjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCiskKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKFBST0RVQ1RfT1VUKS9vYmovU0hBUkVEX0xJQlJBUklFUy9saWJleHQyX3V1aWRfaW50ZXJtZWRpYXRlcykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9JTlNUQUxMIGIvZTJmc3Byb2dzL0lOU1RBTEwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVhZmQyZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9JTlNUQUxMCkBAIC0wLDAgKzEsNjkgQEAKKwlUbyBpbnN0YWxsIHRoZSBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gbWFuYWdlbWVudCBwcm9ncmFtcywKK2p1c3QgZm9sbG93IHRoZSBzdGVwczoKKworMSkgQ2hhbmdlIGRpcmVjdG9yeSBpbnRvIHRoZSB0b3Agb2YgdGhlIGUyZnNwcm9ncyBzb3VyY2UgdHJlZQorCisyKSBDcmVhdGUgYSBidWlsZCBkaXJlY3RvcnkgYW5kIGNkIGludG8gaXQ6CisKKwlta2RpciBidWlsZDsgY2QgYnVpbGQKKworMykgIFJ1biB0aGUgY29uZmlndXJlIHNjcmlwdAorCisJLi4vY29uZmlndXJlCisKKwlJZiB5b3Ugd2lzaCB0byB0dXJuIG9uIEVMRiBzaGFyZWQgbGlicmFyaWVzLCBhZGQgdGhlIG9wdGlvbgorLS1lbmFibGUtZWxmLXNobGlicy4gIElmIHlvdSB3aXNoIHRvIGJ1aWxkIHByb2ZpbGluZyBsaWJyYXJpZXMsIGFkZAordGhlIG9wdGlvbiAtLWVuYWJsZS1wcm9maWxlLgorCisJTm90ZSB0aGF0IGlmIHlvdSBhcmUgYnVpbGRpbmcgb24gYW4gb2xkZXIgc3lzdGVtIChpLmUuLCBhIDIuNAora2VybmVsIGFuZC9vciBnbGliYyAyLjIpLCB0aGUgdXNlIG9mIHRocmVhZCBsb2NhbCBzdG9yYWdlIHdpbGwgcHJvYmFibHkKK2NhdXNlIHByb2dyYW1zIHRoYXQgdXNlIHRoZSB1dWlkIGxpYnJhcnkgdG8gY29yZSBkdW1wLiAgVG8gZGlzYWJsZQordGhyZWFkIGxvY2FsIHN0b3JhZ2UsIHVzZSB0aGUgY29uZmlndXJlIG9wdGlvbiAtLWRpc2FibGUtdGxzLgorCis0KSAgQ29tcGlsZSB0aGUgcHJvZ3JhbXMKKworCW1ha2UKKworNSkgICBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGluc3RhbGxhdGlvbiBidWlsdCBjb3JyZWN0bHk6CisKKwltYWtlIGNoZWNrCisKKzYpICBJbnN0YWxsIHRoZSBwcm9ncmFtcworCisJUnVuIGBtYWtlIGluc3RhbGwnCisKKzcpICBJbnN0YWxsIHRoZSBpbmNsdWRlIGZpbGVzIGFuZCBsaWJyYXJpZXMKKworCVlvdSBjYW4gcnVuIGBtYWtlIGluc3RhbGwtbGlicycgdG8gaW5zdGFsbCB0aGUgaW5jbHVkZSBmaWxlcyBhbmQKK2xpYnJhcmllcy4gIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpbnN0YWxsYXRpb24gaXMgbm90IG5lZWRlZCBmb3IgdGhlCitwcm9ncmFtcyB0byB3b3JrLiAgSXQgaXMgb25seSBuZWVkZWQgaWYgeW91IGV4cGVjdCB0byBkZXZlbG9wIG90aGVyCitwcm9ncmFtcyB1c2luZyB0aGUgbGlicmFyaWVzIG9yIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgb3RoZXIgcHJvZ3JhbQordXNpbmcgdGhlc2UgbGlicmFyaWVzIChsaWtlIHRoZSA0LjRCU0QgZHVtcCBhbmQgcmVzdG9yZSBwb3J0KS4KKworOCkgIFJlbW92ZSBhbnkgcHJlLWZvcm1hdHRlZCBtYW4gcGFnZXMuICAKKworCVNvbWUgZGlzdHJpYnV0aW9ucyB3aWxsIGhhdmUgcHJlLWZvcm1hdHRlZCBtYW51YWwgcGFnZXMgd2hpY2gKK3dpbGwgYWx3YXlzIGJlIGRpc3BsYXllZCBpbiBwcmVmZXJlbmNlIHRvIG5ld2VyIG1hbiBwYWdlcyBpbiAvdXNyL21hbi4KK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHlvdSBtYXkgbmVlZCB0byBtYW51YWxseSByZW1vdmUgdGhlbSBpbiBvcmRlciB0bworc2VlIHRoZSBjb3JyZWN0IG1hbnVhbCBwYWdlcy4gIFRoZSBzaGVsbCBzY3JpcHQgaW4KK2luc3RhbGwtdXRpbHMvcmVtb3ZlX3ByZWZvcm1hdF9tYW5wYWdlcyBtYXkgYmUgaGVscGZ1bCBpbiBkb2luZyBzby4KKworOSkgIE1ha2Ugc3VyZSB5b3VyIC9ldGMvZnN0YWIgZmlsZSBpcyBjb3JyZWN0LgorCisJU29tZSBkaXN0cmlidXRpb25zIGluc3RhbGwgYW4gL2V0Yy9mc3RhYiB3aGljaCBpcyBtaXNzaW5nIHRoZQorZmlmdGggYW5kIHNpeHRoIGZpZWxkIG9mIGZpbGVzeXN0ZW0gZW50cnksIHdoaWNoIGFyZSB0aGUgZHVtcAorZnJlcXVlbmN5LCBhbmQgdGhlIGZzY2sgcGFzcyBudW1iZXIsIHJlc3BlY3RpdmVseS4gIFRoZSBwcm9ibGVtIHdpdGgKK3RoaXMgaXMgdGhhdCB0aGUgZ2V0bW50ZW50KCkgbGlicmFyeSByb3V0aW5lIGludGVycHJldHMgdGhvc2UgbWlzc2luZworZmllbGRzIGFzICIwIiwgYW5kIGEgcGFzcyBudW1iZXIgb2YgMCBpcyBkb2N1bWVudGVkIGFzIG1lYW5pbmcgdGhhdAorZnNjayBzaG91bGQgbm90IGNoZWNrIHRoYXQgcGFydGljdWxhciBmaWxlc3lzdGVtLiAgSWYgeW91ciBlbnRyaWVzIGluCit5b3VyIC9ldGMvZnN0YWIgZmlsZSBsb29rIGxpa3MgdGhpczoKKworL2Rldi9oZGE0ICAgICAgIC8gICAgICAgIGV4dDIgICAgICAgIGRlZmF1bHRzCisKK3lvdSBzaG91bGQgYWRkICIxIDEiIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lLCBzbyB0aGF0IHRoZXkgbG9vayBsaWtlIHRoaXM6CisKKy9kZXYvaGRhNCAgICAgICAvICAgICAgICBleHQyICAgICAgICBkZWZhdWx0cwkxCTEKKworCVRoZXJlIGlzIGEgc2NyaXB0IGluIGluc3RhbGwtdXRpbHMvY29udmZzdGFiIChkb25hdGVkIGJ5CitNaWNoYWVsIFdlbGxlcikgdGhhdCBtYXkgaGVscCB5b3UgY29ycmVjdCB5b3VyIC9ldGMvZnN0YWIgZmlsZS4KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL0lOU1RBTEwuZWxmYmluIGIvZTJmc3Byb2dzL0lOU1RBTEwuZWxmYmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNTRhYTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvSU5TVEFMTC5lbGZiaW4KQEAgLTAsMCArMSw1MyBAQAorTk9URTogVGhpcyBpcyB0aGUgRUxGIHZlcnNpb24gb2YgdGhlIGJpbmFyeSBkaXN0cmlidXRpb24uICBJZiB5b3UgaGF2ZQorYSBETEwgc3lzdGVtLCBwbGVhc2UgY29tcGlsZSBlMmZzcHJvZ3MgZnJvbSBzb3VyY2VzIHlvdXJzZWxmLiAgKEluCitmYWN0LCBpbiBnZW5lcmFsIHlvdSdyZSBiZXR0ZXIgb2ZmIGNvbXBpbGluZyBlMmZzcHJvZ3MgZnJvbSBzb3VyY2VzCitpbnN0ZWFkIG9mIHVzaW5nIHByZWNvbXBpbGVkIGJpbmFyaWVzLikgIAorCitBbHNvIHBsZWFzZSBub3RlIHRoYXQgdGhlc2UgYmluYXJpZXMgYXNzdW1lIHRoZSB1c2Ugb2YgdGhlIEdOVSBMaWJjLgorSWYgeW91J3JlIHN0aWxsIHVzaW5nIGxpYmM1LCB5b3UnbGwgbmVlZCBidWlsZCBlMmZzcHJvZ3MgZnJvbSBzb3VyY2UuCisKKwlUbyBpbnN0YWxsIHRoZSBiaW5hcnkgZGlzdHJpYnV0aW9uIG9mIHRoZSBzZWNvbmQgZXh0ZW5kZWQgZmlsZQorc3lzdGVtIG1hbmFnZW1lbnQgcHJvZ3JhbXMsIGp1c3QgZm9sbG93IHRoZSBzdGVwczoKKworMSkgSW5zdGFsbCB0aGlzIHRhciBmaWxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworCWd1bnppcCA8IGUyZnNwcm9ncy0xLjEzLWVsZmJpbi50YXIuZ3ogfCAoY2QgLzsgdGFyIFN4dnBmIC0gKQorCisyKSBSdW4gbGRjb25maWcgdG8gdXBkYXRlIHRoZSBzaGFyZWQgbGlicmFyeSBwb2ludGVycy4KKworICAgICAgICBBcyByb290LCB0eXBlIC9zYmluL2xkY29uZmlnLiBUaGlzIHdpbGwgdXBkYXRlIHRoZSBsaW5rcyB0bwordGhlIHNoYXJlZCBsaWJyYXJpZXMgaW5jbHVkZWQgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gWW91IGNhbiB0aGVuIHJlbW92ZQordGhlIG9sZCB2ZXJzaW9ucyBvZiB0aGUgbGlicmFyaWVzIGZyb20gL2xpYi4gIAorCiszKSBSZW1vdmUgYW55IHByZS1mb3JtYXR0ZWQgbWFuIHBhZ2VzLiAgCisKKwlTb21lIGRpc3RyaWJ1dGlvbnMgd2lsbCBoYXZlIHByZS1mb3JtYXR0ZWQgbWFudWFsIHBhZ2VzIHdoaWNoCit3aWxsIGFsd2F5cyBiZSBkaXNwbGF5ZWQgaW4gcHJlZmVyZW5jZSB0byBuZXdlciBtYW4gcGFnZXMgaW4gL3Vzci9tYW4uCitJZiB0aGlzIGlzIHRoZSBjYXNlLCB5b3UgbWF5IG5lZWQgdG8gbWFudWFsbHkgcmVtb3ZlIHRoZW0gaW4gb3JkZXIgdG8KK3NlZSB0aGUgY29ycmVjdCBtYW51YWwgcGFnZXMuICBUaGUgc2hlbGwgc2NyaXB0IGluCitpbnN0YWxsLXV0aWxzL3JlbW92ZV9wcmVmb3JtYXRfbWFucGFnZXMgbWF5IGJlIGhlbHBmdWwgaW4gZG9pbmcgc28uCisKKzQpIE1ha2Ugc3VyZSB5b3VyIC9ldGMvZnN0YWIgZmlsZSBpcyBjb3JyZWN0LgorCisJU29tZSBkaXN0cmlidXRpb25zIGluc3RhbGwgYW4gL2V0Yy9mc3RhYiB3aGljaCBpcyBtaXNzaW5nIHRoZQorZmlmdGggYW5kIHNpeHRoIGZpZWxkIG9mIGZpbGVzeXN0ZW0gZW50cnksIHdoaWNoIGFyZSB0aGUgZHVtcAorZnJlcXVlbmN5LCBhbmQgdGhlIGZzY2sgcGFzcyBudW1iZXIsIHJlc3BlY3RpdmVseS4gIFRoZSBwcm9ibGVtIHdpdGgKK3RoaXMgaXMgdGhhdCB0aGUgZ2V0bW50ZW50KCkgbGlicmFyeSByb3V0aW5lIGludGVycHJldHMgdGhvc2UgbWlzc2luZworZmllbGRzIGFzICIwIiwgYW5kIGEgcGFzcyBudW1iZXIgb2YgMCBpcyBkb2N1bWVudGVkIGFzIG1lYW5pbmcgdGhhdAorZnNjayBzaG91bGQgbm90IGNoZWNrIHRoYXQgcGFydGljdWxhciBmaWxlc3lzdGVtLiAgSWYgeW91ciBlbnRyaWVzIGluCit5b3VyIC9ldGMvZnN0YWIgZmlsZSBsb29rIGxpa3MgdGhpczoKKworL2Rldi9oZGE0ICAgICAgIC8gICAgICAgIGV4dDIgICAgICAgIGRlZmF1bHRzCisKK3lvdSBzaG91bGQgYWRkICIxIDEiIGF0IHRoZSBlbmQgb2YgZWFjaCBsaW5lLCBzbyB0aGF0IHRoZXkgbG9vayBsaWtlIHRoaXM6CisKKy9kZXYvaGRhNCAgICAgICAvICAgICAgICBleHQyICAgICAgICBkZWZhdWx0cwkxCTEKKworCVRoZXJlIGlzIGEgc2NyaXB0IGluIGluc3RhbGwtdXRpbHMvY29udmZzdGFiIChkb25hdGVkIGJ5CitNaWNoYWVsIFdlbGxlcikgdGhhdCBtYXkgaGVscCB5b3UgY29ycmVjdCB5b3VyIC9ldGMvZnN0YWIgZmlsZS4KKworNSkgQ2xlYW51cCBmaWxlcyBmcm9tIHRoZSBpbnN0YWxsYXRpb24uCisKKwlXaGVuIHlvdSdyZSBkb25lIHdpdGggdGhlIGluc3RhbGxhdGlvbiwgeW91IHdpbGwgcHJvYmFibHkgd2FudAordG8gcmVtb3ZlIC9JTlNUQUxMICh0aGlzIGZpbGUpLCAvUkVBRE1FLCBhbmQgL2luc3RhbGwtdXRpbHMgZnJvbSB5b3VyCityb290IGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL01DT05GSUcuaW4gYi9lMmZzcHJvZ3MvTUNPTkZJRy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODI5NjNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL01DT05GSUcuaW4KQEAgLTAsMCArMSwzMTIgQEAKKyMgQmVnaW5uaW5nIG9mIGZpbGUgTUNPTkZJRworCithbGw6OgorCitjaGVjazo6CisKK1NIRUxMID0gL2Jpbi9zaAorCitDT01QUkVTU19FWFQgPSBneiBiejIgYnogWgorCitwcmVmaXggPSBAcHJlZml4QAorcm9vdF9wcmVmaXggPSBAcm9vdF9wcmVmaXhACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK3Jvb3RfYmluZGlyID0gQHJvb3RfYmluZGlyQAorcm9vdF9zYmluZGlyID0gQHJvb3Rfc2JpbmRpckAKK3Jvb3RfbGliZGlyID0gQHJvb3RfbGliZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitiaW5kaXIgPSBAYmluZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorbGliZGlyID0gQGxpYmRpckAKK2RhdGFkaXI9IEBkYXRhZGlyQAorbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKK3Jvb3Rfc3lzY29uZmRpcj0gQHJvb3Rfc3lzY29uZmRpckAKK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKK21hbmRpciA9IEBtYW5kaXJACittYW4xZGlyID0gJChtYW5kaXIpL21hbjEKK21hbjNkaXIgPSAkKG1hbmRpcikvbWFuMworbWFuNWRpciA9ICQobWFuZGlyKS9tYW41CittYW44ZGlyID0gJChtYW5kaXIpL21hbjgKK2luZm9kaXIgPSBAaW5mb2RpckAKK2RhdGFkaXIgPSBAZGF0YWRpckAKK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKKworQFNFVF9NQUtFQAorCitAaWZHTlVtYWtlQCBWID0KK0BpZkdOVW1ha2VAIGlmZXEgKCQoc3RyaXAgJChWKSksKQorQGlmR05VbWFrZUAgIyAgRSA9IEBlY2hvCitAaWZHTlVtYWtlQCAjICBFUyA9IGVjaG8KK0BpZkdOVW1ha2VAICMgIFEgPSBACitAaWZHTlVtYWtlQCAgICBFID0gQEVACitAaWZHTlVtYWtlQCAgICBFUyA9IEBFU0AKK0BpZkdOVW1ha2VAICAgIFEgPSBAUUAKK0BpZkdOVW1ha2VAIGVsc2UKK0BpZkdOVW1ha2VAICAgIEUgPSBAXCMKK0BpZkdOVW1ha2VAICAgIEVTID0gXCMKK0BpZkdOVW1ha2VAICAgIFEgPQorQGlmR05VbWFrZUAgZW5kaWYKKworQGlmTm90R05VbWFrZUAgRSA9IEBFQAorQGlmTm90R05VbWFrZUAgRVMgPSBARVNACitAaWZOb3RHTlVtYWtlQCBRID0gQFFACisKK0BpZkdOVW1ha2VAIENIRUNLPXNwYXJzZQorQGlmR05VbWFrZUAgQ0hFQ0tfT1BUUz0tV3NwYXJzZS1hbGwgLVduby10cmFuc3BhcmVudC11bmlvbiAtV25vLXJldHVybi12b2lkIC1Xbm8tdW5kZWYgLVduby1ub24tcG9pbnRlci1udWxsCitAaWZHTlVtYWtlQCBDUFBDSEVDSz1jcHBjaGVjaworQGlmR05VbWFrZUAgQ1BQQ0hFQ0tfT1BUUz0tLWZvcmNlIC0tZW5hYmxlPWFsbCAtLXF1aWV0CitAaWZHTlVtYWtlQCBpZmVxICgiJChDKSIsICIyIikKK0BpZkdOVW1ha2VAICAgQ0hFQ0tfQ01EPSQoQ0hFQ0spICQoQ0hFQ0tfT1BUUykgLVdiaXR3aXNlIC1EX19DSEVDS19FTkRJQU5fXworQGlmR05VbWFrZUAgICBDUFBDSEVDS19DTUQ9JChDUFBDSEVDSykgJChDUFBDSEVDS19PUFRTKQorQGlmR05VbWFrZUAgZWxzZQorQGlmR05VbWFrZUAgICBpZmVxICgiJChDKSIsICIxIikKK0BpZkdOVW1ha2VAICAgICBDSEVDS19DTUQ9JChDSEVDSykgJChDSEVDS19PUFRTKQorQGlmR05VbWFrZUAgICAgIENQUENIRUNLX0NNRD0kKENQUENIRUNLKSAkKENQUENIRUNLX09QVFMpCitAaWZHTlVtYWtlQCAgICBlbHNlCitAaWZHTlVtYWtlQCAgICAgQ0hFQ0tfQ01EPUB0cnVlCitAaWZHTlVtYWtlQCAgICAgQ1BQQ0hFQ0tfQ01EPUB0cnVlCitAaWZHTlVtYWtlQCAgIGVuZGlmCitAaWZHTlVtYWtlQCBlbmRpZgorCitAaWZOb3RHTlVtYWtlQCBDSEVDS19DTUQ9dHJ1ZQorQGlmTm90R05VbWFrZUAgQ1BQQ0hFQ0tfQ01EPXRydWUKKworQ0MgPSBAQ0NACitCVUlMRF9DQyA9IEBCVUlMRF9DQ0AKK0NGTEFHUyA9IEBDRkxBR1NACitDRkxBR1NfU0hMSUIgPSBAQ0ZMQUdTX1NITElCQAorQ0ZMQUdTX1NUTElCID0gQENGTEFHU19TVExJQkAKK0NQUEZMQUdTID0gQElOQ0xVREVTQAorQUxMX0NGTEFHUyA9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKENGTEFHU19XQVJOKSBAREVGU0AgJChMT0NBTF9DRkxBR1MpCitBTExfQ0ZMQUdTX1NITElCID0gJChDUFBGTEFHUykgJChDRkxBR1NfU0hMSUIpICQoQ0ZMQUdTX1dBUk4pIEBERUZTQCAkKExPQ0FMX0NGTEFHUykKK0FMTF9DRkxBR1NfU1RMSUIgPSAkKENQUEZMQUdTKSAkKENGTEFHU19TVExJQikgJChDRkxBR1NfV0FSTikgQERFRlNAICQoTE9DQUxfQ0ZMQUdTKQorTERGTEFHUyA9IEBMREZMQUdTQAorTERGTEFHU19TSExJQiA9IEBMREZMQUdTX1NITElCQAorQUxMX0xERkxBR1MgPSAkKExERkxBR1MpIEBMREZMQUdfRFlOQU1JQ0AKK0xERkxBR1NfU1RBVElDID0gQExERkxBR1NfU1RBVElDQAorQlVJTERfQ0ZMQUdTID0gQEJVSUxEX0NGTEFHU0AKK0JVSUxEX0xERkxBR1MgPSBAQlVJTERfTERGTEFHU0AKK1JEWU5BTUlDID0gQFJEWU5BTUlDQAorTElOS19CVUlMRF9GTEFHUyA9IEBMSU5LX0JVSUxEX0ZMQUdTQAorTElOS19JTlNUQUxMX0ZMQUdTID0gQExJTktfSU5TVEFMTF9GTEFHU0AKK1JNID0gQFJNQAorTE4gPSBATE5ACitMTl9TID0gQExOX1NACitNViA9IEBNVkAKK0NQID0gQENQQAorQ0hNT0QgPSBAQ0hNT0RACitBUiA9IEBBUkAKK0FXSyA9IEBBV0tACitTRUQgPSBAU0VEQAorUEVSTCA9IEBQRVJMQAorUkFOTElCID0gQFJBTkxJQkAKK1NUUklQID0gQFNUUklQQAorTEQgPSAkKFBVUkUpIEBDQ0AKK0FSVVBEID0gJChBUikgcgorQVJHRU4gPSAkKEFSKSByYworTERDT05GSUcgPSBATERDT05GSUdACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK0lOU1RBTExfU0NSSVBUID0gQElOU1RBTExfU0NSSVBUQAorTUtJTlNUQUxMRElSUyA9IEBNS0lOU1RBTExESVJTQAorCisjCisjIExpYnJhcnkgZGVmaW5pdGlvbnMKKyMKK0xJQiA9ICQodG9wX2J1aWxkZGlyKS9saWIKK0xJQlNTID0gJChMSUIpL2xpYnNzQExJQl9FWFRAIEBQUklWQVRFX0xJQlNfQ01UQCBARExPUEVOX0xJQkAKK0xJQkNPTV9FUlIgPSAkKExJQikvbGliY29tX2VyckBMSUJfRVhUQCBAUFJJVkFURV9MSUJTX0NNVEAgQFNFTV9JTklUX0xJQkAKK0xJQkUyUCA9ICQoTElCKS9saWJlMnBATElCX0VYVEAKK0xJQkVYVDJGUyA9ICQoTElCKS9saWJleHQyZnNATElCX0VYVEAKK0xJQlVVSUQgPSBATElCVVVJREAgQFNPQ0tFVF9MSUJACitMSUJNQUdJQyA9IEBNQUdJQ19MSUJACitMSUJGVVNFID0gQEZVU0VfTElCQAorTElCU1VQUE9SVCA9ICQoTElCSU5UTCkgJChMSUIpL2xpYnN1cHBvcnRAU1RBVElDX0xJQl9FWFRACitMSUJCTEtJRCA9IEBMSUJCTEtJREAgQFBSSVZBVEVfTElCU19DTVRAICQoTElCVVVJRCkKK0xJQklOVEwgPSBATElCSU5UTEAKK1NZU0xJQlMgPSBATElCU0AKK0RFUExJQlNTID0gJChMSUIpL2xpYnNzQExJQl9FWFRACitERVBMSUJDT01fRVJSID0gJChMSUIpL2xpYmNvbV9lcnJATElCX0VYVEAKK0RFUExJQlVVSUQgPSBAREVQTElCVVVJREAKK0RFUExJQlNVUFBPUlQgPSAkKExJQikvbGlic3VwcG9ydEBTVEFUSUNfTElCX0VYVEAKK0RFUExJQkJMS0lEID0gQERFUExJQkJMS0lEQCBAUFJJVkFURV9MSUJTX0NNVEAgJChERVBMSUJVVUlEKQorVEVTVEVOViA9IExEX0xJQlJBUllfUEFUSD0iJChMSUIpOiQke0xEX0xJQlJBUllfUEFUSH0iIERZTERfTElCUkFSWV9QQVRIPSIkKExJQik6JCR7RFlMRF9MSUJSQVJZX1BBVEh9IgorCitTVEFUSUNfTElCU1MgPSAkKExJQikvbGlic3NAU1RBVElDX0xJQl9FWFRAIEBETE9QRU5fTElCQAorU1RBVElDX0xJQkNPTV9FUlIgPSAkKExJQikvbGliY29tX2VyckBTVEFUSUNfTElCX0VYVEAgQFNFTV9JTklUX0xJQkAKK1NUQVRJQ19MSUJFMlAgPSAkKExJQikvbGliZTJwQFNUQVRJQ19MSUJfRVhUQAorU1RBVElDX0xJQkVYVDJGUyA9ICQoTElCKS9saWJleHQyZnNAU1RBVElDX0xJQl9FWFRACitTVEFUSUNfTElCVVVJRCA9IEBTVEFUSUNfTElCVVVJREAgQFNPQ0tFVF9MSUJACitTVEFUSUNfTElCU1VQUE9SVCA9ICQoTElCSU5UTCkgJChMSUJTVVBQT1JUKQorU1RBVElDX0xJQkJMS0lEID0gQFNUQVRJQ19MSUJCTEtJREAgJChTVEFUSUNfTElCVVVJRCkKK0RFUFNUQVRJQ19MSUJTUyA9ICQoTElCKS9saWJzc0BTVEFUSUNfTElCX0VYVEAKK0RFUFNUQVRJQ19MSUJDT01fRVJSID0gJChMSUIpL2xpYmNvbV9lcnJAU1RBVElDX0xJQl9FWFRACitERVBTVEFUSUNfTElCVVVJRCA9IEBERVBTVEFUSUNfTElCVVVJREAKK0RFUFNUQVRJQ19MSUJTVVBQT1JUID0gJChERVBMSUJTVVBQT1JUKQorREVQU1RBVElDX0xJQkJMS0lEID0gQERFUFNUQVRJQ19MSUJCTEtJREAgJChERVBTVEFUSUNfTElCVVVJRCkKKworUFJPRklMRURfTElCU1MgPSAkKExJQikvbGlic3NAUFJPRklMRURfTElCX0VYVEAgQERMT1BFTl9MSUJACitQUk9GSUxFRF9MSUJDT01fRVJSID0gJChMSUIpL2xpYmNvbV9lcnJAUFJPRklMRURfTElCX0VYVEAgQFNFTV9JTklUX0xJQkAKK1BST0ZJTEVEX0xJQkUyUCA9ICQoTElCKS9saWJlMnBAUFJPRklMRURfTElCX0VYVEAKK1BST0ZJTEVEX0xJQkVYVDJGUyA9ICQoTElCKS9saWJleHQyZnNAUFJPRklMRURfTElCX0VYVEAKK1BST0ZJTEVEX0xJQlVVSUQgPSBAUFJPRklMRURfTElCVVVJREAgQFNPQ0tFVF9MSUJACitQUk9GSUxFRF9MSUJTVVBQT1JUID0gJChMSUJJTlRMKSAkKExJQikvbGlic3VwcG9ydEBQUk9GSUxFRF9MSUJfRVhUQAorUFJPRklMRURfTElCQkxLSUQgPSBAUFJPRklMRURfTElCQkxLSURAICQoUFJPRklMRURfTElCVVVJRCkKK0RFUFBST0ZJTEVEX0xJQlNTID0gJChMSUIpL2xpYnNzQFBST0ZJTEVEX0xJQl9FWFRACitERVBQUk9GSUxFRF9MSUJDT01fRVJSID0gJChMSUIpL2xpYmNvbV9lcnJAUFJPRklMRURfTElCX0VYVEAKK0RFUFBST0ZJTEVEX0xJQlVVSUQgPSBAUFJPRklMRURfTElCVVVJREAKK0RFUFBST0ZJTEVEX0xJQlNVUFBPUlQgPSAkKFBST0ZJTEVEX0xJQlNVUFBPUlQpCitERVBQUk9GSUxFRF9MSUJCTEtJRCA9IEBQUk9GSUxFRF9MSUJCTEtJREAgJChERVBQUk9GSUxFRF9MSUJVVUlEKQorCisjCisjIEEgZmFzdCBzdWJzdGl0dXRpb24gY29tbWFuZCBmb3IgZml4aW5nIHVwIG1hbiBwYWdlcywgc2hlbGwgc2NyaXB0cywgZXRjLgorIworU1VCU1RfQ09ORj0kKHRvcF9idWlsZGRpcikvdXRpbC9zdWJzdC5jb25mCitTVUJTVElUVVRFPSAkKHRvcF9idWlsZGRpcikvdXRpbC9zdWJzdCAtZiAkKFNVQlNUX0NPTkYpCitTVUJTVElUVVRFX1VQVElNRT0gJCh0b3BfYnVpbGRkaXIpL3V0aWwvc3Vic3QgLXQgLWYgJChTVUJTVF9DT05GKQorREVQX1NVQlNUSVRVVEU9ICQodG9wX2J1aWxkZGlyKS91dGlsL3N1YnN0ICQoU1VCU1RfQ09ORikKKworJCh0b3BfYnVpbGRkaXIpL3V0aWwvc3Vic3Q6CisJY2QgJCh0b3BfYnVpbGRkaXIpL3V0aWwgOyAkKE1BS0UpIHN1YnN0CisKKyMKKyMgU2NyaXB0IGZvciBpbnN0YWxsaW5nIHN5bWxpbmtzIChmb3Igc2hhcmVkIGxpYnJhcmllcykKKyMKKyQodG9wX2J1aWxkZGlyKS91dGlsL2luc3RhbGwtc3ltbGluazogJCh0b3Bfc3JjZGlyKS91dGlsL2luc3RhbGwtc3ltbGluay5pbiBcCisJCQkgICAgICAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCWNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPXV0aWwvaW5zdGFsbC1zeW1saW5rIC4vY29uZmlnLnN0YXR1cworCWNobW9kICt4ICQodG9wX2J1aWxkZGlyKS91dGlsL2luc3RhbGwtc3ltbGluaworCiskKHRvcF9idWlsZGRpcikvdXRpbC9zeW1saW5rczoKKwljZCAkKHRvcF9idWlsZGRpcikvdXRpbCA7ICQoTUFLRSkgc3ltbGlua3MKKworSU5TVEFMTF9TWU1MSU5LID0gL2Jpbi9zaCAkKHRvcF9idWlsZGRpcikvdXRpbC9pbnN0YWxsLXN5bWxpbmsgXAorCQkJQFNZTUxJTktfUkVMQVRJVkVAIFwKKwkJCS0tc3ltbGlua3M9JCh0b3BfYnVpbGRkaXIpL3V0aWwvc3ltbGlua3MKK0RFUF9JTlNUQUxMX1NZTUxJTksgPSAkKHRvcF9idWlsZGRpcikvdXRpbC9pbnN0YWxsLXN5bWxpbmsgXAorCQkJJCh0b3BfYnVpbGRkaXIpL3V0aWwvc3ltbGlua3MKKworIworIyBXYXJuaW5nIGZsYWdzCisjCisjIFJ1biBtYWtlIGdjYy13YWxsIHRvIGRvIGEgYnVpbGQgd2l0aCB3YXJuaW5nIG1lc3NhZ2VzLgorIworIworV0ZMQUdTPQkJLXN0ZD1nbnU5OSAtRF9YT1BFTl9TT1VSQ0U9NjAwIC1EX0dOVV9TT1VSQ0UgXAorCQkJLXBlZGFudGljICQoV0ZMQUdTX0VYVFJBKSBcCisJCQktV2FsbCAtVyAtV3dyaXRlLXN0cmluZ3MgLVdwb2ludGVyLWFyaXRoIFwKKwkJCS1XY2FzdC1xdWFsIC1XY2FzdC1hbGlnbiAtV25vLXZhcmlhZGljLW1hY3JvcyBcCisJCQktV3N0cmljdC1wcm90b3R5cGVzIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKKwkJCS1XZm9ybWF0LXNlY3VyaXR5ICAtV2Zvcm1hdC1ub25saXRlcmFsIFwKKwkJCS1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1PMiAtV3N0cmljdC1hbGlhc2luZyBcCisJCQktV25lc3RlZC1leHRlcm5zIC1XaW5saW5lIC1ETk9fSU5MSU5FX0ZVTkNTIC1Xc2hhZG93IFwKKwkJCS1VRU5BQkxFX05MUworCitnY2Mtd2FsbC1uZXc6CisJKCQoTUFLRSkgQ0ZMQUdTX1dBUk49IiQoV0ZMQUdTKSIgPiAvZGV2L251bGwpIDI+JjEgfCBzZWQgLWYgJCh0b3Bfc3JjZGlyKS91dGlsL2djYy13YWxsLWNsZWFudXAKKworZ2NjLXdhbGw6CisJJChNQUtFKSBjbGVhbiA+IC9kZXYvbnVsbAorCSQoTUFLRSkgZ2NjLXdhbGwtbmV3CisKK3N0YXRpYy1jaGVjazoKKwkoJChNQUtFKSBDPTEgVj0xIENGTEFHUz0iJChBTExfQ0ZMQUdTKSAkKFdGTEFHUykiKSAyPiYxIHwgc2VkIC1mICQodG9wX3NyY2RpcikvdXRpbC9zdGF0aWMtYW5hbHlzaXMtY2xlYW51cAorCitzdGF0aWMtY2hlY2stYWxsOgorCSQoTUFLRSkgY2xlYW4gPiAvZGV2L251bGwKKwkkKE1BS0UpIHN0YXRpYy1jaGVjaworCisjCisjIEluc3RhbGxhdGlvbiB1c2VyIGFuZCBncm91cHMKKyMKK0JJTkdSUD0JCWJpbgorQklOT1dOPQkJYmluCitCSU5NT0RFPQk1NTUKK0lOQ0dSUD0JCWJpbgorSU5DT1dOPQkJYmluCitJTkNNT0RFPQk0NDQKK0xJQk9XTj0JCWJpbgorTElCR1JQPQkJYmluCitMSUJNT0RFPQk0NDQKK01BTkdSUD0JCWJpbgorTUFOT1dOPQkJYmluCitNQU5NT0RFPQk0NDQKKworIworIyBBdXRvY29uZiBtYWdpYy4uLgorIworCitERVBfTElCX01BS0VGSUxFUyA9ICQodG9wX3NyY2RpcikvbGliL01ha2VmaWxlLmxpYnJhcnkgXAorCSQodG9wX3NyY2RpcikvbGliL01ha2VmaWxlLmVsZi1saWIgIFwKKwkkKHRvcF9zcmNkaXIpL2xpYi9NYWtlZmlsZS5ic2QtbGliIFwKKwkkKHRvcF9zcmNkaXIpL2xpYi9NYWtlZmlsZS5kYXJ3aW4tbGliIFwKKwkkKHRvcF9zcmNkaXIpL2xpYi9NYWtlZmlsZS5zb2xhcmlzLWxpYiBcCisJJCh0b3Bfc3JjZGlyKS9saWIvTWFrZWZpbGUucHJvZmlsZQorCiskKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUKKwljZCAkKHRvcF9idWlsZGRpcik7IC4vY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKKworJCh0b3BfYnVpbGRkaXIpL01DT05GSUc6ICQodG9wX3NyY2RpcikvTUNPTkZJRy5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCWNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPU1DT05GSUcgLi9jb25maWcuc3RhdHVzCisKKyQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmg6ICQodG9wX3NyY2RpcikvbGliL2NvbmZpZy5oLmluIFwKKwkJCSAgICAgICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJY2QgJCh0b3BfYnVpbGRkaXIpOyBDT05GSUdfRklMRVM9bGliL2NvbmZpZy5oIC4vY29uZmlnLnN0YXR1cworCiskKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmg6ICQoREVQX1NVQlNUSVRVVEUpICQodG9wX3NyY2RpcikvbGliL2RpcnBhdGhzLmguaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEUpICQodG9wX3NyY2RpcikvbGliL2RpcnBhdGhzLmguaW4gJEAKKworJCh0b3BfYnVpbGRkaXIpL2xpYi9zdWJzdGl0dXRlX3NoOiAkKHRvcF9zcmNkaXIpL2xpYi9zdWJzdGl0dXRlX3NoLmluIFwKKwkJJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwljZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz1saWIvc3Vic3RpdHV0ZV9zaCAuL2NvbmZpZy5zdGF0dXMKKworJCh0b3BfYnVpbGRkaXIpL3V0aWwvc3Vic3QuY29uZjogJCh0b3Bfc3JjZGlyKS91dGlsL3N1YnN0LmNvbmYuaW4gXAorCQkkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCWNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPXV0aWwvc3Vic3QuY29uZiAuL2NvbmZpZy5zdGF0dXMKKworTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvTUNPTkZJRyBcCisJCSQoREVQX01BS0VGSUxFKSAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCWNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPSQobXlfZGlyKS9NYWtlZmlsZSAuL2NvbmZpZy5zdGF0dXMKKworQE1BSU5UQUlORVJfQ01UQCQodG9wX3NyY2RpcikvY29uZmlndXJlOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworQE1BSU5UQUlORVJfQ01UQAljZCAkKHRvcF9zcmNkaXIpICYmIGF1dG9oZWFkZXIgJiYgYXV0b2NvbmYKKworY292ZXJhZ2UudHh0OiBNYWtlZmlsZSAkKFNSQ1MpCisJaWYgdGVzdCAtbiAiJChTUkNTKSI7IHRoZW4gXAorCQlnY292IC1zICQodG9wX3NyY2RpcikgLW8gLiAkKFNSQ1MpID4gY292ZXJhZ2UudHh0IDI+JjEgOyBcCisJZmkKKworY2xlYW46OgorCSQoUk0pIC1mICouZ2NkYSAqLmdjb3YgKi5nY25vIGNvdmVyYWdlLnR4dAorCisjCisjIE1ha2UgZGVwZW5kIG1hZ2ljLi4uCisjCisKKy5kZXBlbmQ6IE1ha2VmaWxlICQoU1JDUykgJCh0b3Bfc3JjZGlyKS9kZXBmaXguc2VkICQodG9wX3NyY2Rpcikvd29yZHdyYXAucGwKKwlpZiB0ZXN0IC1uICIkKFNSQ1MpIiA7IHRoZW4gXAorCQkkKENDKSAtTSAkKEFMTF9DRkxBR1MpICQoREVQRU5EX0NGTEFHUykgJChTUkNTKSB8IFwKKwkJCSQoU0VEKSAtZiAkKHRvcF9zcmNkaXIpL2RlcGZpeC5zZWQgXAorCQkJICAgIC1lICdzOyAkKHNyY2RpcikvOyAkJChzcmNkaXIpLztnJyBcCisJCQkgICAgLWUgJ3M7ICQodG9wX3NyY2RpcikvOyAkJCh0b3Bfc3JjZGlyKS87ZycgXAorCQkJICAgIC1lICdzOyAkKHRvcF9idWlsZGRpcikvOyAkJCh0b3BfYnVpbGRkaXIpLztnJyBcCisJCQkgICAgLWUgJ3M7IFwuLzsgO2cnIFwKKwkJCSAgICAtZSAnL14jL2QnIFwKKwkJCSAgICAtZSAnL14gKlxcJCQvZCcgfCBcCisJCQkkKFBFUkwpICQodG9wX3NyY2Rpcikvd29yZHdyYXAucGwgPiAuZGVwZW5kOyBcCisJZWxzZSA6OyBmaQorCitkZXBlbmQ6OiAuZGVwZW5kCisJaWYgdGVzdCAtbiAiJChTUkNTKSIgOyB0aGVuIFwKKwkJc2VkIC1lICcvXiMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysvLCQkZCcgXAorCQkJPCAkKHNyY2RpcikvTWFrZWZpbGUuaW4gfCBjYXQgLSAuZGVwZW5kIFwKKwkJCT4gJChzcmNkaXIpL01ha2VmaWxlLmluLm5ldzsgXAorCWlmIGNtcCAtcyAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL01ha2VmaWxlLmluLm5ldyA7IHRoZW4gXAorCQkkKFJNKSAkKHNyY2RpcikvTWFrZWZpbGUuaW4ubmV3IDsgXAorCWVsc2UgXAorCQkkKE1WKSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZDsgXAorCQkkKE1WKSAkKHNyY2RpcikvTWFrZWZpbGUuaW4ubmV3ICQoc3JjZGlyKS9NYWtlZmlsZS5pbjsgXAorCWZpIDsgZWxzZSA6OyBmaQorCisjIEVuZCBvZiBmaWxlIE1DT05GSUcKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE5YWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMTUzIEBACitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAordG9wX2J1aWxkZGlyID0gLgorbXlfZGlyID0gLgorSU5TVEFMTCA9IEBJTlNUQUxMQAorCitATUNPTkZJR0AKKworJSA6ICUuc2gKKworQFJFU0laRVJfQ01UQFJFU0laRV9ESVI9IHJlc2l6ZQorQERFQlVHRlNfQ01UQERFQlVHRlNfRElSPSBkZWJ1Z2ZzCitAVVVJRF9DTVRAVVVJRF9MSUJfU1VCRElSPSBsaWIvdXVpZAorQEJMS0lEX0NNVEBCTEtJRF9MSUJfU1VCRElSPSBsaWIvYmxraWQKK1NVUFBPUlRfTElCX1NVQkRJUj0gbGliL3N1cHBvcnQKKworTElCX1NVQkRJUlM9bGliL2V0IGxpYi9zcyBsaWIvZTJwICQoVVVJRF9MSUJfU1VCRElSKSAkKEJMS0lEX0xJQl9TVUJESVIpICQoU1VQUE9SVF9MSUJfU1VCRElSKSBsaWIvZXh0MmZzIGludGwKK1BST0dfU1VCRElSUz1lMmZzY2sgJChERUJVR0ZTX0RJUikgbWlzYyAkKFJFU0laRV9ESVIpIHRlc3RzL3Byb2dzIHBvCitTVUJESVJTPXV0aWwgJChMSUJfU1VCRElSUykgJChQUk9HX1NVQkRJUlMpIHRlc3RzCisKK1NVQlM9IHV0aWwvc3Vic3QuY29uZiBsaWIvY29uZmlnLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oIFwKKwlsaWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBsaWIvYmxraWQvYmxraWRfdHlwZXMuaCBsaWIvdXVpZC91dWlkX3R5cGVzLmgKKworVEFSPXRhcgorCithbGw6OiBzdWJzCisJJChNQUtFKSBsaWJzCisJJChNQUtFKSBwcm9ncworCSQoTUFLRSkgZG9jcworCitzdWJzOiAkKERFUF9TVUJTVElUVVRFKQorCUBmb3IgaSBpbiAkKFNVQlMpIDsgZG8gaWYgdGVzdCAtZCBgZGlybmFtZSAkJGlgIDsgXAorCQl0aGVuICQoTUFLRSkgJCRpIHx8IGV4aXQgJCQ/IDsgZmkgOyBkb25lCisJQChpZiB0ZXN0IC1kIGxpYi9ldCA7IHRoZW4gY2QgbGliL2V0ICYmICQoTUFLRSkgY29tcGlsZV9ldDsgZmkpCisJQChpZiB0ZXN0IC1kIGxpYi9leHQyZnMgOyB0aGVuIGNkIGxpYi9leHQyZnMgJiYgJChNQUtFKSBleHQyX2Vyci5oOyBmaSkKKwlAKGlmIHRlc3QgLWQgbGliL3N1cHBvcnQgOyB0aGVuIGNkIGxpYi9zdXBwb3J0ICYmICQoTUFLRSkgcHJvZl9lcnIuaDsgZmkpCisKK3Byb2dzOiBhbGwtcHJvZ3MtcmVjdXJzaXZlCitsaWJzOiBhbGwtbGlicy1yZWN1cnNpdmUKK2FsbC1wcm9ncy1yZWN1cnNpdmUgYWxsLWxpYnMtcmVjdXJzaXZlOiBzdWJzCisKK2UyZnNwcm9ncy5zcGVjOiAkKERFUF9TVUJTVElUVVRFKSBlMmZzcHJvZ3Muc3BlYy5pbgorCWNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPS4vZTJmc3Byb2dzLnNwZWMgLi9jb25maWcuc3RhdHVzCisKK3JwbTogZTJmc3Byb2dzLnNwZWMKKwlzaCBjb250cmliL2J1aWxkLXJwbQorCitkb2NzOgorCS1AdGVzdCAtZCBkb2MgJiYgY2QgZG9jICYmICQoTUFLRSkgbGliZXh0MmZzLmluZm8KKworaW5zdGFsbC1kb2MtbGliczoKKwktQHRlc3QgLWQgZG9jICYmIGNkIGRvYyAmJiAkKE1BS0UpIGluc3RhbGwtZG9jLWxpYnMKKwordW5pbnN0YWxsLWRvYy1saWJzOgorCS1AdGVzdCAtZCBkb2MgJiYgY2QgZG9jICYmICQoTUFLRSkgdW5pbnN0YWxsLWRvYy1saWJzCisKK2NsZWFuLWRvYzoKKwktQHRlc3QgLWQgZG9jICYmIGNkIGRvYyAmJiAkKE1BS0UpIGNsZWFuCisKK2Rpc3RjbGVhbi1kb2M6CisJLXRlc3QgLWQgZG9jICYmIGNkIGRvYyAmJiAkKE1BS0UpIGRpc3RjbGVhbgorCitpbnN0YWxsOiBzdWJzIGFsbC1saWJzLXJlY3Vyc2l2ZSBpbnN0YWxsLXByb2dzLXJlY3Vyc2l2ZSBcCisgIGluc3RhbGwtc2hsaWJzLWxpYnMtcmVjdXJzaXZlIGluc3RhbGwtZG9jLWxpYnMKKwlpZiB0ZXN0ICEgLWQgZTJmc2NrICYmIHRlc3QgISAtZCBkZWJ1Z2ZzICYmIHRlc3QgISAtZCBtaXNjICYmIHRlc3QgISAtZCBleHQyZWQgOyB0aGVuICQoTUFLRSkgaW5zdGFsbC1saWJzIDsgZmkKKworaW5zdGFsbC1zdHJpcDogc3VicyBhbGwtbGlicy1yZWN1cnNpdmUgaW5zdGFsbC1zdHJpcC1wcm9ncy1yZWN1cnNpdmUgXAorICBpbnN0YWxsLXNobGlicy1zdHJpcC1saWJzLXJlY3Vyc2l2ZSBpbnN0YWxsLWRvYy1saWJzCisKK3VuaW5zdGFsbDogdW5pbnN0YWxsLXByb2dzLXJlY3Vyc2l2ZSB1bmluc3RhbGwtc2hsaWJzLWxpYnMtcmVjdXJzaXZlIHVuaW5zdGFsbC1kb2MtbGlicworCitpbnN0YWxsLWxpYnM6IGluc3RhbGwtbGlicy1yZWN1cnNpdmUKKwordW5pbnN0YWxsLWxpYnM6IHVuaW5zdGFsbC1saWJzLXJlY3Vyc2l2ZQorCitjb3ZlcmFnZS50eHQ6IGNvdmVyYWdlLnR4dC1yZWN1cnNpdmUKKworY2hlY2stcmVjdXJzaXZlOiBhbGwKKworVEFHUyBjbGVhbi1yZWN1cnNpdmUgZGlzdGNsZWFuLXJlY3Vyc2l2ZSBkZXBlbmQtcmVjdXJzaXZlIGNoZWNrLXJlY3Vyc2l2ZSBcCisgIG1vc3RseWNsZWFuLXJlY3Vyc2l2ZSByZWFsY2xlYW4tcmVjdXJzaXZlIGNvdmVyYWdlLnR4dC1yZWN1cnNpdmU6CisJQGZvciBzdWJkaXIgaW4gJChTVUJESVJTKTsgZG8gXAorCSAgaWYgdGVzdCAtZCAkJHN1YmRpciA7IHRoZW4gXAorCSAgICB0YXJnZXQ9YGVjaG8gJEB8JChTRUQpICdzLy1yZWN1cnNpdmUvLydgOyBcCisJICAgIGVjaG8gbWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyOyBcCisJICAgIChjZCAkJHN1YmRpciAmJiAkKE1BS0UpICQkdGFyZ2V0KSB8fCBleGl0IDE7IFwKKwkgIGZpIDsgXAorCWRvbmUKKworYWxsLXByb2dzLXJlY3Vyc2l2ZSBpbnN0YWxsLXByb2dzLXJlY3Vyc2l2ZSBpbnN0YWxsLXN0cmlwLXByb2dzLXJlY3Vyc2l2ZSBcCisgIHVuaW5zdGFsbC1wcm9ncy1yZWN1cnNpdmUgY292ZXJhZ2UudHh0LXByb2dzLXJlY3Vyc2l2ZTogYWxsLWxpYnMtcmVjdXJzaXZlCisJQGZvciBzdWJkaXIgaW4gJChQUk9HX1NVQkRJUlMpOyBkbyBcCisJICBpZiB0ZXN0IC1kICQkc3ViZGlyIDsgdGhlbiBcCisJICAgIHRhcmdldD1gZWNobyAkQHwkKFNFRCkgJ3MvLXByb2dzLXJlY3Vyc2l2ZS8vJ2A7IFwKKwkgICAgZWNobyBtYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXI7IFwKKwkgICAgKGNkICQkc3ViZGlyICYmICQoTUFLRSkgJCR0YXJnZXQpIHx8IGV4aXQgMTsgXAorCSAgZmkgOyBcCisJZG9uZQorCithbGwtbGlicy1yZWN1cnNpdmUgaW5zdGFsbC1saWJzLXJlY3Vyc2l2ZSBpbnN0YWxsLXN0cmlwLWxpYnMtcmVjdXJzaXZlIFwKKyAgdW5pbnN0YWxsLWxpYnMtcmVjdXJzaXZlIGluc3RhbGwtc2hsaWJzLWxpYnMtcmVjdXJzaXZlIFwKKyAgaW5zdGFsbC1zaGxpYnMtc3RyaXAtbGlicy1yZWN1cnNpdmUgdW5pbnN0YWxsLXNobGlicy1saWJzLXJlY3Vyc2l2ZSBcCisgIGNvdmVyYWdlLnR4dC1saWJzLXJlY3Vyc2l2ZToKKwlAZm9yIHN1YmRpciBpbiAkKExJQl9TVUJESVJTKTsgZG8gXAorCSAgaWYgdGVzdCAtZCAkJHN1YmRpciA7IHRoZW4gXAorCSAgICB0YXJnZXQ9YGVjaG8gJEB8JChTRUQpICdzLy1saWJzLXJlY3Vyc2l2ZS8vJ2A7IFwKKwkgICAgZWNobyBtYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXI7IFwKKwkgICAgKGNkICQkc3ViZGlyICYmICQoTUFLRSkgJCR0YXJnZXQpIHx8IGV4aXQgMTsgXAorCSAgZmkgOyBcCisJZG9uZQorCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tcmVjdXJzaXZlIG1vc3RseWNsZWFuLWxvY2FsCisKK2NsZWFuOjogY2xlYW4tcmVjdXJzaXZlIGNsZWFuLWxvY2FsIGNsZWFuLWRvYworCSQoUk0pIC1mICQoU1VCUykgCisKK2Rpc3RjbGVhbjogZGlzdGNsZWFuLWRvYyBkaXN0Y2xlYW4tcmVjdXJzaXZlCisJJChSTSkgLXJmIGF1dG9tNHRlLmNhY2hlIGUyZnNwcm9ncy5zcGVjIGV4dDJlZC9NYWtlZmlsZSBwby9zdGFtcC1wbyBcCisJCWFzbV90eXBlcy5oIGNvbmZpZy5sb2cgcHVibGljX2NvbmZpZy5oIHBhcnNlLXR5cGVzLmxvZworCSQoTUFLRSkgZGlzdGNsZWFuLWxvY2FsIAorCityZWFsY2xlYW46IHJlYWxjbGVhbi1yZWN1cnNpdmUgcmVhbGNsZWFuLWxvY2FsCisKK2RlcGVuZDo6IGRlcGVuZC1yZWN1cnNpdmUKKworbGliL2V4dDJmcy9leHQyX3R5cGVzLmg6ICQoREVQX1NVQlNUSVRVVEUpIGFzbV90eXBlcy5oIFwKKwkJJChzcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oLmluCisJY2QgJCh0b3BfYnVpbGRkaXIpOyBDT05GSUdfRklMRVM9Li9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAuL2NvbmZpZy5zdGF0dXMKKworbGliL2Jsa2lkL2Jsa2lkX3R5cGVzLmg6ICQoREVQX1NVQlNUSVRVVEUpIGFzbV90eXBlcy5oIFwKKwkJJChzcmNkaXIpL2xpYi9ibGtpZC9ibGtpZF90eXBlcy5oLmluCisJY2QgJCh0b3BfYnVpbGRkaXIpOyBDT05GSUdfRklMRVM9Li9saWIvYmxraWQvYmxraWRfdHlwZXMuaCAuL2NvbmZpZy5zdGF0dXMKKworbGliL3V1aWQvdXVpZF90eXBlcy5oOiAkKERFUF9TVUJTVElUVVRFKSBhc21fdHlwZXMuaCBcCisJCSQoc3JjZGlyKS9saWIvdXVpZC91dWlkX3R5cGVzLmguaW4KKwljZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz0uL2xpYi91dWlkL3V1aWRfdHlwZXMuaCAuL2NvbmZpZy5zdGF0dXMKKworbW9zdGx5Y2xlYW4tbG9jYWw6CisJJChSTSkgLWYgXCMqICp+ICoub3JpZyBjb3JlIE1BS0VMT0cgCisKK2NsZWFuLWxvY2FsOiBtb3N0bHljbGVhbi1sb2NhbAorCitkaXN0Y2xlYW4tbG9jYWw6IGNsZWFuLWxvY2FsCisJJChSTSkgLWYgJChTVUJTKSAkKFNVQlNUX0NPTkYpIFwKKwkJY29uZmlnLnN0YXR1cyBjb25maWcubG9nIGNvbmZpZy5jYWNoZSBNQ09ORklHIE1ha2VmaWxlIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorCityZWFsY2xlYW4tbG9jYWw6IGRpc3RjbGVhbi1sb2NhbAorCSQoUk0pIC1mIGNvbmZpZ3VyZQorCitjaGVjazo6CWFsbCBjaGVjay1yZWN1cnNpdmUKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL05PVElDRSBiL2UyZnNwcm9ncy9OT1RJQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQxMjI3YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9OT1RJQ0UKQEAgLTAsMCArMSw4NDkgQEAKK1RoaXMgcGFja2FnZSwgdGhlIEVYVDIgZmlsZXN5c3RlbSB1dGlsaXRpZXMsIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlcgordGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgbGliL2V4dDJmcworYW5kIGxpYi9lMnAgbGlicmFyaWVzLCB3aGljaCBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIEdOVSBMaWJyYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMiwgdGhlIGxpYi91dWlkIGxpYnJhcnkgd2hpY2ggaXMgbWFkZQorYXZhaWxhYmxlIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UgYW5kIHRoZSBsaWIvZXQgYW5kIGxpYi9zcworbGlicmFyaWVzIHdoaWNoIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBhbiBNSVQtc3R5bGUgbGljZW5zZS4gIFBsZWFzZQorc2VlIGxpYi91dWlkL0NPUFlJTkcgZm9yIG1vcmUgZGV0YWlscyBmb3IgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmaWxlcworY29tcHJpc2luZyB0aGUgbGlidXVpZCBsaWJyYXJ5LCBhbmQgdGhlIHNvdXJjZSBmaWxlIGhlYWRlcnMgb2YgdGhlCitsaWJldCBhbmQgbGlic3MgbGlicmFyaWVzIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCitUaGUgbW9zdCByZWNlbnQgb2ZmaWNpYWxseSBkaXN0cmlidXRlZCB2ZXJzaW9uIGNhbiBiZSBmb3VuZCBhdAoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuICBJZiB5b3UgbmVlZCB0byBtYWtlIGEgZGlzdHJpYnV0aW9uLAordGhhdCdzIHRoZSBvbmUgeW91IHNob3VsZCB1c2UuICBJZiB0aGVyZSBpcyBzb21lIHJlYXNvbiB3aHkgeW91J2QgbGlrZQorYSBtb3JlIHJlY2VudCB2ZXJzaW9uIHRoYXQgaXMgc3RpbGwgaW4gQUxQSEEgdGVzdGluZyAoaS5lLiwgZWl0aGVyCit1c2luZyB0aGUgIldJUCIgdGVzdCBkaXN0cmlidXRpb25zIG9yIG9uZSBmcm9tIHRoZSBoZyBvciBnaXQKK3JlcG9zaXRvcnkgZnJvbSB0aGUgZGV2ZWxvcG1lbnQgYnJhbmNoLCBwbGVhc2UgY29udGFjdCBtZQorKHR5dHNvQG1pdC5lZHUpIGJlZm9yZSB5b3Ugc2hpcC4gIFRoZSByZWxlYXNlIHNjaGVkdWxlcyBmb3IgdGhpcworcGFja2FnZSBhcmUgZmxleGlibGUsIGlmIHlvdSBnaXZlIG1lIGVub3VnaCBsZWFkIHRpbWUuCisKKworCQkJCQlUaGVvZG9yZSBUcydvCisJCQkJCTIzLUp1bmUtMjAwNworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisJCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisgQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQorZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAoreW91IGhhdmUuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUKK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKK3JpZ2h0cy4KKworICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCisoMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAorZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KKworICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgordGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUKK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KK3RoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhlIG9yaWdpbmFsCithdXRob3JzJyByZXB1dGF0aW9ucy4KKworICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQorcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55CitwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCittb2RpZmljYXRpb24gZm9sbG93LgorDAorCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCityZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Cit0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAorZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KK3RoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgorCitBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAorY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgorcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQoraXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCitXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKworICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKK3NvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQorY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQorbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCit5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgorCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKKyAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAorICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKKyAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCisgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgorICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQorICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQorICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKKyAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcworICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CisgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgorICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQorDAorVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisMCisgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQorZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCit2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCitIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCit0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKworICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCithbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCithcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgorY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisMCisgIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwordGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZworY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCit0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uCisKKyAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgordG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKK21ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCitvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCitvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCitGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KK09USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKK1BST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECitPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUworVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQorUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCitSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCitSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAorSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCitPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECitUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCitQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKworCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworDAorCSAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CitmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KKworICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAordG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisKK0Fsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLgorCitJZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCit3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgorCisgICAgR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5ZWFyICBuYW1lIG9mIGF1dGhvcgorICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkKK2JlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQorbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4KKworWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKK3NjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCituZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CisKKyAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQorICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KKworICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkKKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCitwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQorY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCitsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkJICBHTlUgTElCUkFSWSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFCisJCSAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisgQ29weXJpZ2h0IChDKSAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgIAkJICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworW1RoaXMgaXMgdGhlIGZpcnN0IHJlbGVhc2VkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgR1BMLiAgSXQgaXMKKyBudW1iZXJlZCAyIGJlY2F1c2UgaXQgZ29lcyB3aXRoIHZlcnNpb24gMiBvZiB0aGUgb3JkaW5hcnkgR1BMLl0KKworCQkJICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2VzIGFyZSBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UKK2ZyZWUgc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4KKworICBUaGlzIGxpY2Vuc2UsIHRoZSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQorc3BlY2lhbGx5IGRlc2lnbmF0ZWQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlLCBhbmQgdG8gYW55CitvdGhlciBsaWJyYXJpZXMgd2hvc2UgYXV0aG9ycyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91IGNhbiB1c2UgaXQgZm9yCit5b3VyIGxpYnJhcmllcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmCit5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnksIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgbGlicmFyeSwgd2hldGhlciBncmF0aXMKK29yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0IHdlIGdhdmUKK3lvdS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZSBzb3VyY2UKK2NvZGUuICBJZiB5b3UgbGluayBhIHByb2dyYW0gd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQorY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzIHNvIHRoYXQgdGhleSBjYW4gcmVsaW5rIHRoZW0KK3dpdGggdGhlIGxpYnJhcnksIGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCByZWNvbXBpbGluZworaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCisKKyAgT3VyIG1ldGhvZCBvZiBwcm90ZWN0aW5nIHlvdXIgcmlnaHRzIGhhcyB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQKK3RoZSBsaWJyYXJ5LCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsCitwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgbGlicmFyeS4KKworICBBbHNvLCBmb3IgZWFjaCBkaXN0cmlidXRvcidzIHByb3RlY3Rpb24sIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorbGlicmFyeS4gIElmIHRoZSBsaWJyYXJ5IGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbAordmVyc2lvbiwgc28gdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbgordGhlIG9yaWdpbmFsIGF1dGhvcnMnIHJlcHV0YXRpb25zLgorDAorICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IGNvbXBhbmllcyBkaXN0cmlidXRpbmcgZnJlZQorc29mdHdhcmUgd2lsbCBpbmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgdGh1cyBpbiBlZmZlY3QKK3RyYW5zZm9ybWluZyB0aGUgcHJvZ3JhbSBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlLiAgVG8gcHJldmVudCB0aGlzLAord2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzCitmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIE1vc3QgR05VIHNvZnR3YXJlLCBpbmNsdWRpbmcgc29tZSBsaWJyYXJpZXMsIGlzIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgd2hpY2ggd2FzIGRlc2lnbmVkIGZvciB1dGlsaXR5IHByb2dyYW1zLiAgVGhpcworbGljZW5zZSwgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gY2VydGFpbgorZGVzaWduYXRlZCBsaWJyYXJpZXMuICBUaGlzIGxpY2Vuc2UgaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5CitvbmU7IGJlIHN1cmUgdG8gcmVhZCBpdCBpbiBmdWxsLCBhbmQgZG9uJ3QgYXNzdW1lIHRoYXQgYW55dGhpbmcgaW4gaXQgaXMKK3RoZSBzYW1lIGFzIGluIHRoZSBvcmRpbmFyeSBsaWNlbnNlLgorCisgIFRoZSByZWFzb24gd2UgaGF2ZSBhIHNlcGFyYXRlIHB1YmxpYyBsaWNlbnNlIGZvciBzb21lIGxpYnJhcmllcyBpcyB0aGF0Cit0aGV5IGJsdXIgdGhlIGRpc3RpbmN0aW9uIHdlIHVzdWFsbHkgbWFrZSBiZXR3ZWVuIG1vZGlmeWluZyBvciBhZGRpbmcgdG8gYQorcHJvZ3JhbSBhbmQgc2ltcGx5IHVzaW5nIGl0LiAgTGlua2luZyBhIHByb2dyYW0gd2l0aCBhIGxpYnJhcnksIHdpdGhvdXQKK2NoYW5naW5nIHRoZSBsaWJyYXJ5LCBpcyBpbiBzb21lIHNlbnNlIHNpbXBseSB1c2luZyB0aGUgbGlicmFyeSwgYW5kIGlzCithbmFsb2dvdXMgdG8gcnVubmluZyBhIHV0aWxpdHkgcHJvZ3JhbSBvciBhcHBsaWNhdGlvbiBwcm9ncmFtLiAgSG93ZXZlciwgaW4KK2EgdGV4dHVhbCBhbmQgbGVnYWwgc2Vuc2UsIHRoZSBsaW5rZWQgZXhlY3V0YWJsZSBpcyBhIGNvbWJpbmVkIHdvcmssIGEKK2Rlcml2YXRpdmUgb2YgdGhlIG9yaWdpbmFsIGxpYnJhcnksIGFuZCB0aGUgb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQordHJlYXRzIGl0IGFzIHN1Y2guCisKKyAgQmVjYXVzZSBvZiB0aGlzIGJsdXJyZWQgZGlzdGluY3Rpb24sIHVzaW5nIHRoZSBvcmRpbmFyeSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBmb3IgbGlicmFyaWVzIGRpZCBub3QgZWZmZWN0aXZlbHkgcHJvbW90ZSBzb2Z0d2FyZQorc2hhcmluZywgYmVjYXVzZSBtb3N0IGRldmVsb3BlcnMgZGlkIG5vdCB1c2UgdGhlIGxpYnJhcmllcy4gIFdlCitjb25jbHVkZWQgdGhhdCB3ZWFrZXIgY29uZGl0aW9ucyBtaWdodCBwcm9tb3RlIHNoYXJpbmcgYmV0dGVyLgorCisgIEhvd2V2ZXIsIHVucmVzdHJpY3RlZCBsaW5raW5nIG9mIG5vbi1mcmVlIHByb2dyYW1zIHdvdWxkIGRlcHJpdmUgdGhlCit1c2VycyBvZiB0aG9zZSBwcm9ncmFtcyBvZiBhbGwgYmVuZWZpdCBmcm9tIHRoZSBmcmVlIHN0YXR1cyBvZiB0aGUKK2xpYnJhcmllcyB0aGVtc2VsdmVzLiAgVGhpcyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW50ZW5kZWQgdG8KK3Blcm1pdCBkZXZlbG9wZXJzIG9mIG5vbi1mcmVlIHByb2dyYW1zIHRvIHVzZSBmcmVlIGxpYnJhcmllcywgd2hpbGUKK3ByZXNlcnZpbmcgeW91ciBmcmVlZG9tIGFzIGEgdXNlciBvZiBzdWNoIHByb2dyYW1zIHRvIGNoYW5nZSB0aGUgZnJlZQorbGlicmFyaWVzIHRoYXQgYXJlIGluY29ycG9yYXRlZCBpbiB0aGVtLiAgKFdlIGhhdmUgbm90IHNlZW4gaG93IHRvIGFjaGlldmUKK3RoaXMgYXMgcmVnYXJkcyBjaGFuZ2VzIGluIGhlYWRlciBmaWxlcywgYnV0IHdlIGhhdmUgYWNoaWV2ZWQgaXQgYXMgcmVnYXJkcworY2hhbmdlcyBpbiB0aGUgYWN0dWFsIGZ1bmN0aW9ucyBvZiB0aGUgTGlicmFyeS4pICBUaGUgaG9wZSBpcyB0aGF0IHRoaXMKK3dpbGwgbGVhZCB0byBmYXN0ZXIgZGV2ZWxvcG1lbnQgb2YgZnJlZSBsaWJyYXJpZXMuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuICBQYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYQorIndvcmsgYmFzZWQgb24gdGhlIGxpYnJhcnkiIGFuZCBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgbGlicmFyeSIuICBUaGUKK2Zvcm1lciBjb250YWlucyBjb2RlIGRlcml2ZWQgZnJvbSB0aGUgbGlicmFyeSwgd2hpbGUgdGhlIGxhdHRlciBvbmx5Cit3b3JrcyB0b2dldGhlciB3aXRoIHRoZSBsaWJyYXJ5LgorCisgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSBmb3IgYSBsaWJyYXJ5IHRvIGJlIGNvdmVyZWQgYnkgdGhlIG9yZGluYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHJhdGhlciB0aGFuIGJ5IHRoaXMgc3BlY2lhbCBvbmUuCisMCisJCSAgR05VIExJQlJBUlkgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIEFncmVlbWVudCBhcHBsaWVzIHRvIGFueSBzb2Z0d2FyZSBsaWJyYXJ5IHdoaWNoCitjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3Igb3RoZXIgYXV0aG9yaXplZAorcGFydHkgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWJyYXJ5CitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChhbHNvIGNhbGxlZCAidGhpcyBMaWNlbnNlIikuICBFYWNoIGxpY2Vuc2VlIGlzCithZGRyZXNzZWQgYXMgInlvdSIuCisKKyAgQSAibGlicmFyeSIgbWVhbnMgYSBjb2xsZWN0aW9uIG9mIHNvZnR3YXJlIGZ1bmN0aW9ucyBhbmQvb3IgZGF0YQorcHJlcGFyZWQgc28gYXMgdG8gYmUgY29udmVuaWVudGx5IGxpbmtlZCB3aXRoIGFwcGxpY2F0aW9uIHByb2dyYW1zCisod2hpY2ggdXNlIHNvbWUgb2YgdGhvc2UgZnVuY3Rpb25zIGFuZCBkYXRhKSB0byBmb3JtIGV4ZWN1dGFibGVzLgorCisgIFRoZSAiTGlicmFyeSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggc29mdHdhcmUgbGlicmFyeSBvciB3b3JrCit3aGljaCBoYXMgYmVlbiBkaXN0cmlidXRlZCB1bmRlciB0aGVzZSB0ZXJtcy4gIEEgIndvcmsgYmFzZWQgb24gdGhlCitMaWJyYXJ5IiBtZWFucyBlaXRoZXIgdGhlIExpYnJhcnkgb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlcgorY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBMaWJyYXJ5IG9yIGEKK3BvcnRpb24gb2YgaXQsIGVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQKK3N0cmFpZ2h0Zm9yd2FyZGx5IGludG8gYW5vdGhlciBsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMKK2luY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbiB0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pCisKKyAgIlNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGEgbGlicmFyeSwgY29tcGxldGUgc291cmNlIGNvZGUgbWVhbnMKK2FsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lhdGVkCitpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvIGNvbnRyb2wgY29tcGlsYXRpb24KK2FuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcnkuCisKKyAgQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKK2NvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKK3J1bm5pbmcgYSBwcm9ncmFtIHVzaW5nIHRoZSBMaWJyYXJ5IGlzIG5vdCByZXN0cmljdGVkLCBhbmQgb3V0cHV0IGZyb20KK3N1Y2ggYSBwcm9ncmFtIGlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQKK29uIHRoZSBMaWJyYXJ5IChpbmRlcGVuZGVudCBvZiB0aGUgdXNlIG9mIHRoZSBMaWJyYXJ5IGluIGEgdG9vbCBmb3IKK3dyaXRpbmcgaXQpLiAgV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBMaWJyYXJ5IGRvZXMKK2FuZCB3aGF0IHRoZSBwcm9ncmFtIHRoYXQgdXNlcyB0aGUgTGlicmFyeSBkb2VzLgorICAKKyAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgTGlicmFyeSdzCitjb21wbGV0ZSBzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdAoreW91IGNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4KK2FwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0CithbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueQord2FycmFudHk7IGFuZCBkaXN0cmlidXRlIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUKK0xpYnJhcnkuCisKKyAgWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwKK2FuZCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEKK2ZlZS4KKwwKKyAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgTGlicmFyeSBvciBhbnkgcG9ydGlvbgorb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBjb3B5IGFuZAorZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCithYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgVGhlIG1vZGlmaWVkIHdvcmsgbXVzdCBpdHNlbGYgYmUgYSBzb2Z0d2FyZSBsaWJyYXJ5LgorCisgICAgYikgWW91IG11c3QgY2F1c2UgdGhlIGZpbGVzIG1vZGlmaWVkIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KKworICAgIGMpIFlvdSBtdXN0IGNhdXNlIHRoZSB3aG9sZSBvZiB0aGUgd29yayB0byBiZSBsaWNlbnNlZCBhdCBubworICAgIGNoYXJnZSB0byBhbGwgdGhpcmQgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgZCkgSWYgYSBmYWNpbGl0eSBpbiB0aGUgbW9kaWZpZWQgTGlicmFyeSByZWZlcnMgdG8gYSBmdW5jdGlvbiBvciBhCisgICAgdGFibGUgb2YgZGF0YSB0byBiZSBzdXBwbGllZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRoYXQgdXNlcworICAgIHRoZSBmYWNpbGl0eSwgb3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUgZmFjaWxpdHkKKyAgICBpcyBpbnZva2VkLCB0aGVuIHlvdSBtdXN0IG1ha2UgYSBnb29kIGZhaXRoIGVmZm9ydCB0byBlbnN1cmUgdGhhdCwKKyAgICBpbiB0aGUgZXZlbnQgYW4gYXBwbGljYXRpb24gZG9lcyBub3Qgc3VwcGx5IHN1Y2ggZnVuY3Rpb24gb3IKKyAgICB0YWJsZSwgdGhlIGZhY2lsaXR5IHN0aWxsIG9wZXJhdGVzLCBhbmQgcGVyZm9ybXMgd2hhdGV2ZXIgcGFydCBvZgorICAgIGl0cyBwdXJwb3NlIHJlbWFpbnMgbWVhbmluZ2Z1bC4KKworICAgIChGb3IgZXhhbXBsZSwgYSBmdW5jdGlvbiBpbiBhIGxpYnJhcnkgdG8gY29tcHV0ZSBzcXVhcmUgcm9vdHMgaGFzCisgICAgYSBwdXJwb3NlIHRoYXQgaXMgZW50aXJlbHkgd2VsbC1kZWZpbmVkIGluZGVwZW5kZW50IG9mIHRoZQorICAgIGFwcGxpY2F0aW9uLiAgVGhlcmVmb3JlLCBTdWJzZWN0aW9uIDJkIHJlcXVpcmVzIHRoYXQgYW55CisgICAgYXBwbGljYXRpb24tc3VwcGxpZWQgZnVuY3Rpb24gb3IgdGFibGUgdXNlZCBieSB0aGlzIGZ1bmN0aW9uIG11c3QKKyAgICBiZSBvcHRpb25hbDogaWYgdGhlIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBpdCwgdGhlIHNxdWFyZQorICAgIHJvb3QgZnVuY3Rpb24gbXVzdCBzdGlsbCBjb21wdXRlIHNxdWFyZSByb290cy4pCisKK1RoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKK2lkZW50aWZpYWJsZSBzZWN0aW9ucyBvZiB0aGF0IHdvcmsgYXJlIG5vdCBkZXJpdmVkIGZyb20gdGhlIExpYnJhcnksCithbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KK3RoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKK3NlY3Rpb25zIHdoZW4geW91IGRpc3RyaWJ1dGUgdGhlbSBhcyBzZXBhcmF0ZSB3b3Jrcy4gIEJ1dCB3aGVuIHlvdQorZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCitvbiB0aGUgTGlicmFyeSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKK3RoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlCitlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUKK2l0LgorCitUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKK3lvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bworZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCitjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LgorCitJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBMaWJyYXJ5Cit3aXRoIHRoZSBMaWJyYXJ5IChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSkgb24gYSB2b2x1bWUgb2YKK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCit0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgorCisgIDMuIFlvdSBtYXkgb3B0IHRvIGFwcGx5IHRoZSB0ZXJtcyBvZiB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlIHRvIGEgZ2l2ZW4gY29weSBvZiB0aGUgTGlicmFyeS4gIFRvIGRvCit0aGlzLCB5b3UgbXVzdCBhbHRlciBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UsIHNvCit0aGF0IHRoZXkgcmVmZXIgdG8gdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIsCitpbnN0ZWFkIG9mIHRvIHRoaXMgTGljZW5zZS4gIChJZiBhIG5ld2VyIHZlcnNpb24gdGhhbiB2ZXJzaW9uIDIgb2YgdGhlCitvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBoYXMgYXBwZWFyZWQsIHRoZW4geW91IGNhbiBzcGVjaWZ5Cit0aGF0IHZlcnNpb24gaW5zdGVhZCBpZiB5b3Ugd2lzaC4pICBEbyBub3QgbWFrZSBhbnkgb3RoZXIgY2hhbmdlIGluCit0aGVzZSBub3RpY2VzLgorDAorICBPbmNlIHRoaXMgY2hhbmdlIGlzIG1hZGUgaW4gYSBnaXZlbiBjb3B5LCBpdCBpcyBpcnJldmVyc2libGUgZm9yCit0aGF0IGNvcHksIHNvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIGFsbAorc3Vic2VxdWVudCBjb3BpZXMgYW5kIGRlcml2YXRpdmUgd29ya3MgbWFkZSBmcm9tIHRoYXQgY29weS4KKworICBUaGlzIG9wdGlvbiBpcyB1c2VmdWwgd2hlbiB5b3Ugd2lzaCB0byBjb3B5IHBhcnQgb2YgdGhlIGNvZGUgb2YKK3RoZSBMaWJyYXJ5IGludG8gYSBwcm9ncmFtIHRoYXQgaXMgbm90IGEgbGlicmFyeS4KKworICA0LiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGEgcG9ydGlvbiBvcgorZGVyaXZhdGl2ZSBvZiBpdCwgdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0KK3VuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFjY29tcGFueQoraXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlLCB3aGljaAorbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhCittZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCisKKyAgSWYgZGlzdHJpYnV0aW9uIG9mIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKK2Zyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlCitzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIHNhdGlzZmllcyB0aGUgcmVxdWlyZW1lbnQgdG8KK2Rpc3RyaWJ1dGUgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisKKyAgNS4gQSBwcm9ncmFtIHRoYXQgY29udGFpbnMgbm8gZGVyaXZhdGl2ZSBvZiBhbnkgcG9ydGlvbiBvZiB0aGUKK0xpYnJhcnksIGJ1dCBpcyBkZXNpZ25lZCB0byB3b3JrIHdpdGggdGhlIExpYnJhcnkgYnkgYmVpbmcgY29tcGlsZWQgb3IKK2xpbmtlZCB3aXRoIGl0LCBpcyBjYWxsZWQgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiLiAgU3VjaCBhCit3b3JrLCBpbiBpc29sYXRpb24sIGlzIG5vdCBhIGRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSwgYW5kCit0aGVyZWZvcmUgZmFsbHMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgorCisgIEhvd2V2ZXIsIGxpbmtpbmcgYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHdpdGggdGhlIExpYnJhcnkKK2NyZWF0ZXMgYW4gZXhlY3V0YWJsZSB0aGF0IGlzIGEgZGVyaXZhdGl2ZSBvZiB0aGUgTGlicmFyeSAoYmVjYXVzZSBpdAorY29udGFpbnMgcG9ydGlvbnMgb2YgdGhlIExpYnJhcnkpLCByYXRoZXIgdGhhbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUKK2xpYnJhcnkiLiAgVGhlIGV4ZWN1dGFibGUgaXMgdGhlcmVmb3JlIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLgorU2VjdGlvbiA2IHN0YXRlcyB0ZXJtcyBmb3IgZGlzdHJpYnV0aW9uIG9mIHN1Y2ggZXhlY3V0YWJsZXMuCisKKyAgV2hlbiBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgdXNlcyBtYXRlcmlhbCBmcm9tIGEgaGVhZGVyIGZpbGUKK3RoYXQgaXMgcGFydCBvZiB0aGUgTGlicmFyeSwgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayBtYXkgYmUgYQorZGVyaXZhdGl2ZSB3b3JrIG9mIHRoZSBMaWJyYXJ5IGV2ZW4gdGhvdWdoIHRoZSBzb3VyY2UgY29kZSBpcyBub3QuCitXaGV0aGVyIHRoaXMgaXMgdHJ1ZSBpcyBlc3BlY2lhbGx5IHNpZ25pZmljYW50IGlmIHRoZSB3b3JrIGNhbiBiZQorbGlua2VkIHdpdGhvdXQgdGhlIExpYnJhcnksIG9yIGlmIHRoZSB3b3JrIGlzIGl0c2VsZiBhIGxpYnJhcnkuICBUaGUKK3RocmVzaG9sZCBmb3IgdGhpcyB0byBiZSB0cnVlIGlzIG5vdCBwcmVjaXNlbHkgZGVmaW5lZCBieSBsYXcuCisKKyAgSWYgc3VjaCBhbiBvYmplY3QgZmlsZSB1c2VzIG9ubHkgbnVtZXJpY2FsIHBhcmFtZXRlcnMsIGRhdGEKK3N0cnVjdHVyZSBsYXlvdXRzIGFuZCBhY2Nlc3NvcnMsIGFuZCBzbWFsbCBtYWNyb3MgYW5kIHNtYWxsIGlubGluZQorZnVuY3Rpb25zICh0ZW4gbGluZXMgb3IgbGVzcyBpbiBsZW5ndGgpLCB0aGVuIHRoZSB1c2Ugb2YgdGhlIG9iamVjdAorZmlsZSBpcyB1bnJlc3RyaWN0ZWQsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBsZWdhbGx5IGEgZGVyaXZhdGl2ZQord29yay4gIChFeGVjdXRhYmxlcyBjb250YWluaW5nIHRoaXMgb2JqZWN0IGNvZGUgcGx1cyBwb3J0aW9ucyBvZiB0aGUKK0xpYnJhcnkgd2lsbCBzdGlsbCBmYWxsIHVuZGVyIFNlY3Rpb24gNi4pCisKKyAgT3RoZXJ3aXNlLCBpZiB0aGUgd29yayBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIExpYnJhcnksIHlvdSBtYXkKK2Rpc3RyaWJ1dGUgdGhlIG9iamVjdCBjb2RlIGZvciB0aGUgd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiA2LgorQW55IGV4ZWN1dGFibGVzIGNvbnRhaW5pbmcgdGhhdCB3b3JrIGFsc28gZmFsbCB1bmRlciBTZWN0aW9uIDYsCit3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBsaW5rZWQgZGlyZWN0bHkgd2l0aCB0aGUgTGlicmFyeSBpdHNlbGYuCisMCisgIDYuIEFzIGFuIGV4Y2VwdGlvbiB0byB0aGUgU2VjdGlvbnMgYWJvdmUsIHlvdSBtYXkgYWxzbyBjb21waWxlIG9yCitsaW5rIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5IHRvIHByb2R1Y2UgYQord29yayBjb250YWluaW5nIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5LCBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdvcmsKK3VuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBwcm92aWRlZCB0aGF0IHRoZSB0ZXJtcyBwZXJtaXQKK21vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBmb3IgdGhlIGN1c3RvbWVyJ3Mgb3duIHVzZSBhbmQgcmV2ZXJzZQorZW5naW5lZXJpbmcgZm9yIGRlYnVnZ2luZyBzdWNoIG1vZGlmaWNhdGlvbnMuCisKKyAgWW91IG11c3QgZ2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggZWFjaCBjb3B5IG9mIHRoZSB3b3JrIHRoYXQgdGhlCitMaWJyYXJ5IGlzIHVzZWQgaW4gaXQgYW5kIHRoYXQgdGhlIExpYnJhcnkgYW5kIGl0cyB1c2UgYXJlIGNvdmVyZWQgYnkKK3RoaXMgTGljZW5zZS4gIFlvdSBtdXN0IHN1cHBseSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgSWYgdGhlIHdvcmsKK2R1cmluZyBleGVjdXRpb24gZGlzcGxheXMgY29weXJpZ2h0IG5vdGljZXMsIHlvdSBtdXN0IGluY2x1ZGUgdGhlCitjb3B5cmlnaHQgbm90aWNlIGZvciB0aGUgTGlicmFyeSBhbW9uZyB0aGVtLCBhcyB3ZWxsIGFzIGEgcmVmZXJlbmNlCitkaXJlY3RpbmcgdGhlIHVzZXIgdG8gdGhlIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAgQWxzbywgeW91IG11c3QgZG8gb25lCitvZiB0aGVzZSB0aGluZ3M6CisKKyAgICBhKSBBY2NvbXBhbnkgdGhlIHdvcmsgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZworICAgIG1hY2hpbmUtcmVhZGFibGUgc291cmNlIGNvZGUgZm9yIHRoZSBMaWJyYXJ5IGluY2x1ZGluZyB3aGF0ZXZlcgorICAgIGNoYW5nZXMgd2VyZSB1c2VkIGluIHRoZSB3b3JrICh3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyCisgICAgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSk7IGFuZCwgaWYgdGhlIHdvcmsgaXMgYW4gZXhlY3V0YWJsZSBsaW5rZWQKKyAgICB3aXRoIHRoZSBMaWJyYXJ5LCB3aXRoIHRoZSBjb21wbGV0ZSBtYWNoaW5lLXJlYWRhYmxlICJ3b3JrIHRoYXQKKyAgICB1c2VzIHRoZSBMaWJyYXJ5IiwgYXMgb2JqZWN0IGNvZGUgYW5kL29yIHNvdXJjZSBjb2RlLCBzbyB0aGF0IHRoZQorICAgIHVzZXIgY2FuIG1vZGlmeSB0aGUgTGlicmFyeSBhbmQgdGhlbiByZWxpbmsgdG8gcHJvZHVjZSBhIG1vZGlmaWVkCisgICAgZXhlY3V0YWJsZSBjb250YWluaW5nIHRoZSBtb2RpZmllZCBMaWJyYXJ5LiAgKEl0IGlzIHVuZGVyc3Rvb2QKKyAgICB0aGF0IHRoZSB1c2VyIHdobyBjaGFuZ2VzIHRoZSBjb250ZW50cyBvZiBkZWZpbml0aW9ucyBmaWxlcyBpbiB0aGUKKyAgICBMaWJyYXJ5IHdpbGwgbm90IG5lY2Vzc2FyaWx5IGJlIGFibGUgdG8gcmVjb21waWxlIHRoZSBhcHBsaWNhdGlvbgorICAgIHRvIHVzZSB0aGUgbW9kaWZpZWQgZGVmaW5pdGlvbnMuKQorCisgICAgYikgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQKKyAgICBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZSB0aGUgc2FtZSB1c2VyIHRoZSBtYXRlcmlhbHMKKyAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlCisgICAgdGhhbiB0aGUgY29zdCBvZiBwZXJmb3JtaW5nIHRoaXMgZGlzdHJpYnV0aW9uLgorCisgICAgYykgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkKKyAgICBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUgYWJvdmUKKyAgICBzcGVjaWZpZWQgbWF0ZXJpYWxzIGZyb20gdGhlIHNhbWUgcGxhY2UuCisKKyAgICBkKSBWZXJpZnkgdGhhdCB0aGUgdXNlciBoYXMgYWxyZWFkeSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlc2UKKyAgICBtYXRlcmlhbHMgb3IgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyB1c2VyIGEgY29weS4KKworICBGb3IgYW4gZXhlY3V0YWJsZSwgdGhlIHJlcXVpcmVkIGZvcm0gb2YgdGhlICJ3b3JrIHRoYXQgdXNlcyB0aGUKK0xpYnJhcnkiIG11c3QgaW5jbHVkZSBhbnkgZGF0YSBhbmQgdXRpbGl0eSBwcm9ncmFtcyBuZWVkZWQgZm9yCityZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwKK3RoZSBzb3VyY2UgY29kZSBkaXN0cmlidXRlZCBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkKK2Rpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeSBmb3JtKSB3aXRoIHRoZSBtYWpvcgorY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvbgord2hpY2ggdGhlIGV4ZWN1dGFibGUgcnVucywgdW5sZXNzIHRoYXQgY29tcG9uZW50IGl0c2VsZiBhY2NvbXBhbmllcwordGhlIGV4ZWN1dGFibGUuCisKKyAgSXQgbWF5IGhhcHBlbiB0aGF0IHRoaXMgcmVxdWlyZW1lbnQgY29udHJhZGljdHMgdGhlIGxpY2Vuc2UKK3Jlc3RyaWN0aW9ucyBvZiBvdGhlciBwcm9wcmlldGFyeSBsaWJyYXJpZXMgdGhhdCBkbyBub3Qgbm9ybWFsbHkKK2FjY29tcGFueSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFN1Y2ggYSBjb250cmFkaWN0aW9uIG1lYW5zIHlvdSBjYW5ub3QKK3VzZSBib3RoIHRoZW0gYW5kIHRoZSBMaWJyYXJ5IHRvZ2V0aGVyIGluIGFuIGV4ZWN1dGFibGUgdGhhdCB5b3UKK2Rpc3RyaWJ1dGUuCisMCisgIDcuIFlvdSBtYXkgcGxhY2UgbGlicmFyeSBmYWNpbGl0aWVzIHRoYXQgYXJlIGEgd29yayBiYXNlZCBvbiB0aGUKK0xpYnJhcnkgc2lkZS1ieS1zaWRlIGluIGEgc2luZ2xlIGxpYnJhcnkgdG9nZXRoZXIgd2l0aCBvdGhlciBsaWJyYXJ5CitmYWNpbGl0aWVzIG5vdCBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgc3VjaCBhIGNvbWJpbmVkCitsaWJyYXJ5LCBwcm92aWRlZCB0aGF0IHRoZSBzZXBhcmF0ZSBkaXN0cmlidXRpb24gb2YgdGhlIHdvcmsgYmFzZWQgb24KK3RoZSBMaWJyYXJ5IGFuZCBvZiB0aGUgb3RoZXIgbGlicmFyeSBmYWNpbGl0aWVzIGlzIG90aGVyd2lzZQorcGVybWl0dGVkLCBhbmQgcHJvdmlkZWQgdGhhdCB5b3UgZG8gdGhlc2UgdHdvIHRoaW5nczoKKworICAgIGEpIEFjY29tcGFueSB0aGUgY29tYmluZWQgbGlicmFyeSB3aXRoIGEgY29weSBvZiB0aGUgc2FtZSB3b3JrCisgICAgYmFzZWQgb24gdGhlIExpYnJhcnksIHVuY29tYmluZWQgd2l0aCBhbnkgb3RoZXIgbGlicmFyeQorICAgIGZhY2lsaXRpZXMuICBUaGlzIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICAgIFNlY3Rpb25zIGFib3ZlLgorCisgICAgYikgR2l2ZSBwcm9taW5lbnQgbm90aWNlIHdpdGggdGhlIGNvbWJpbmVkIGxpYnJhcnkgb2YgdGhlIGZhY3QKKyAgICB0aGF0IHBhcnQgb2YgaXQgaXMgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgZXhwbGFpbmluZworICAgIHdoZXJlIHRvIGZpbmQgdGhlIGFjY29tcGFueWluZyB1bmNvbWJpbmVkIGZvcm0gb2YgdGhlIHNhbWUgd29yay4KKworICA4LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIGxpbmsgd2l0aCwgb3IgZGlzdHJpYnV0ZQordGhlIExpYnJhcnkgZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkKK2F0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgbGluayB3aXRoLCBvcgorZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyCityaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLiAgSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsCitvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzCit0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaCBwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCisKKyAgOS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90CitzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgorZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCitwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5Cittb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBMaWJyYXJ5IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK0xpYnJhcnkpLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCithbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCit0aGUgTGlicmFyeSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KKworICAxMC4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorTGlicmFyeSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUsIGxpbmsgd2l0aCBvciBtb2RpZnkgdGhlIExpYnJhcnkKK3N1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKK3Jlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KK1lvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCit0aGlzIExpY2Vuc2UuCisMCisgIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkgYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueQorcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvIGFwcGx5LAorYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtIHdoaWNoIGlzCitpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKK2dlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CitzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCit0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKK2ltcG9zZSB0aGF0IGNob2ljZS4KKworVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCitiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KKworICAxMi4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBMaWJyYXJ5IGlzIHJlc3RyaWN0ZWQgaW4KK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQorb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkCithbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nIHRob3NlIGNvdW50cmllcywKK3NvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nIGNvdW50cmllcyBub3QgdGh1cworZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYKK3dyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgorCisgIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldwordmVyc2lvbnMgb2YgdGhlIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4KK1N1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwKK2J1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KKworRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgTGlicmFyeQorc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kCisiYW55IGxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kCitjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5Cit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIExpYnJhcnkgZG9lcyBub3Qgc3BlY2lmeSBhCitsaWNlbnNlIHZlcnNpb24gbnVtYmVyLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKwwKKyAgMTQuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBMaWJyYXJ5IGludG8gb3RoZXIgZnJlZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZXNlLAord3JpdGUgdG8gdGhlIGF1dGhvciB0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMKK2NvcHlyaWdodGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyCitkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzIG9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzCitvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kIG9mIHByb21vdGluZyB0aGUgc2hhcmluZworYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAgMTUuIEJFQ0FVU0UgVEhFIExJQlJBUlkgSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PCitXQVJSQU5UWSBGT1IgVEhFIExJQlJBUlksIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLgorRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IKK09USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgTElCUkFSWSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZCitLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKK0lNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFCitMSUJSQVJZIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBMSUJSQVJZIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRQorVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgorCisgIDE2LiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOCitXUklUSU5HIFdJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWQorQU5EL09SIFJFRElTVFJJQlVURSBUSEUgTElCUkFSWSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UKK0ZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFCitMSUJSQVJZIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HCitSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQQorRkFJTFVSRSBPRiBUSEUgTElCUkFSWSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFNPRlRXQVJFKSwgRVZFTiBJRgorU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFNQUdFUy4KKworCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworDAorICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgTGlicmFyaWVzCisKKyAgSWYgeW91IGRldmVsb3AgYSBuZXcgbGlicmFyeSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdAorcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHdlIHJlY29tbWVuZCBtYWtpbmcgaXQgZnJlZSBzb2Z0d2FyZSB0aGF0CitldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UuICBZb3UgY2FuIGRvIHNvIGJ5IHBlcm1pdHRpbmcKK3JlZGlzdHJpYnV0aW9uIHVuZGVyIHRoZXNlIHRlcm1zIChvciwgYWx0ZXJuYXRpdmVseSwgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorb3JkaW5hcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkuCisKKyAgVG8gYXBwbHkgdGhlc2UgdGVybXMsIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIGxpYnJhcnkuICBJdCBpcworc2FmZXN0IHRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKK2NvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0IHRoZQorImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KKworICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBsaWJyYXJ5J3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CisgICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCisKK1lvdSBzaG91bGQgYWxzbyBnZXQgeW91ciBlbXBsb3llciAoaWYgeW91IHdvcmsgYXMgYSBwcm9ncmFtbWVyKSBvciB5b3VyCitzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBsaWJyYXJ5LCBpZgorbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgorCisgIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCisgIGxpYnJhcnkgYEZyb2InIChhIGxpYnJhcnkgZm9yIHR3ZWFraW5nIGtub2JzKSB3cml0dGVuIGJ5IEphbWVzIFJhbmRvbSBIYWNrZXIuCisKKyAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTkwCisgIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCisKK1RoYXQncyBhbGwgdGhlcmUgaXMgdG8gaXQhCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvUkVBRE1FIGIvZTJmc3Byb2dzL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmZlMDcyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL1JFQURNRQpAQCAtMCwwICsxLDE5IEBACisJVGhpcyBpcyB0aGUgbmV3IHZlcnNpb24gKDEuNDMuMykgb2YgdGhlIHNlY29uZCBleHRlbmRlZCBmaWxlCitzeXN0ZW0gbWFuYWdlbWVudCBwcm9ncmFtcy4KKworCUZyb20gdGltZSB0byB0aW1lLCBJIHJlbGVhc2UgbmV3IHZlcnNpb25zIG9mIGUyZnNwcm9ncywgdG8gZml4CitidWdzIGFuZCB0byBtYWtlIHRoZSB1dGlsaXRpZXMgbW9yZSByb2J1c3QuICBZb3UgY2FuIGFsd2F5cyBmaW5kCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGF0ZXN0IHZlcnNpb24gYXQgdGhlIHRoZSBlMmZzcHJvZ3Mgd2ViIHBhZ2UsCit3aGljaCBpczoKKworCWh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0CisKKwlUaGUgSU5TVEFMTCBmaWxlIGhhcyBpbnN0cnVjdGlvbnMgb24gYnVpbGRpbmcgYW5kIGluc3RhbGxpbmcKK2UyZnNwcm9ncy4gIFByb3Zpc2lvbnMgZm9yIGJ1aWxkaW5nIFJlZCBIYXQgUlBNcyBhbmQgRGViaWFuIGRwa2cgZmlsZXMKK2FyZSBzdXBwbGllZCBhcyB3ZWxsLgorCisJSW4gY2FzZSBvZiBidWdzIGluIHRoZXNlIHByb2dyYW1zLCBwbGVhc2UgY29udGFjdCBUZWQgVHMnbyBhdAordHl0c29AbWl0LmVkdSBvciB0eXRzb0BhbHVtLm1pdC5lZHUuICBTZWUgdGhlIGUyZnNjayBtYW4gcGFnZSBmb3IKK3N1Z2dlc3Rpb25zIG9mIHdoYXQgc29ydCBvZiBpbmZvcm1hdGlvbiB0byBpbmNsdWRlIHdoZW4gc3VibWl0dGluZyBidWcKK3JlcG9ydHMgZm9yIHRoZXNlIHByb2dyYW1zLgorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvUkVBRE1FLnN1YnNldCBiL2UyZnNwcm9ncy9SRUFETUUuc3Vic2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZWQ0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvUkVBRE1FLnN1YnNldApAQCAtMCwwICsxLDE1IEBACitUaGlzIGRpc3RyaWJ1dGlvbiBjb250YWlucyBhIHN1YnNldCBvZiB0aGUgZTJmc3Byb2dzIHBhY2thZ2U7IGl0Citjb250YWlucyB0aGUgYmFzZSBsaWJyYXJpZXMgKHNzLCBldCwgdXVpZCwgYmxraWQpIHdoaWNoIG1heSBiZSB1c2VkIGJ5CitvdGhlciBub24tZXh0Mi1yZWxhdGVkIGFwcGxpY2F0aW9ucy4KKworVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBub24tTGludXggb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBuZWVkIHRoZXNlCitsaWJyYXJpZXMgZm9yIEdOT01FLCBidXQgd2hvIGRvIG5vdCBuZWVkIHRoZSBleHQyL2V4dDMgZmlsZXN5c3RlbQordXRpbGl0aWVzLgorCitUaGUgZnVsbCBlMmZzcHJvZ3MgZGlzdHJpYnV0aW9ucyBjYW4gYmUgZm91bmQgYXQgdGhlIGUyZnNwcm9ncyB3ZWIKK3BhZ2UsIHdoaWNoIGlzOgorCisJaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQKKworSW4gY2FzZSBvZiBidWdzIGluIHRoZXNlIGxpYnJhcmllcywgcGxlYXNlIGNvbnRhY3QgVGVkIFRzJ28gYXQKK3R5dHNvQG1pdC5lZHUgb3IgdHl0c29AYWx1bS5taXQuZWR1LgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL1JFTEVBU0UtTk9URVMgYi9lMmZzcHJvZ3MvUkVMRUFTRS1OT1RFUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTc1ZDQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL1JFTEVBU0UtTk9URVMKQEAgLTAsMCArMSw4MzQzIEBACitFMmZzcHJvZ3MgMS40My4zIChTZXB0ZW1iZXIgNCwgMjAxNikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggZTJmc2NrJ3MgaGFuZGxpbmcgb2YgdGltZXN0YW1wcyBvbiAzMi1iaXQgc3lzdGVtcy4KKworRTJmc2NrIHdpbGwgbm93IGNoZWNrLCBhbmQgaWYgbmVjZXNzYXJ5IHJlcGFpciB0aGUgZXh0cmEgaXNpemUgZmllbGRzCitpbiB0aGUgaW5vZGUgYW5kIHN1cGVyYmxvY2suCisKK0ZpeCBjcmFzaGVzIG9uIGFyY2hpdGVjdHVyZXMgc3VjaCBhcyBzcGFyYzY0IHRoYXQgYXJlIHNlbnNpdGl2ZSB0bwordW5hbGlnbmVkIHBvaW50ZXIgZGVyZmVyZW5jZXMgaW4gdGhlIGpvdXJuYWwgcmVjb3ZlcnkgY29kZSB3aGVuCitqb3VybmFsIGNoZWNrc3VtcyBhcmUgZW5hYmxlZC4KKworUHJvZ3JhbW1pbmcgbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1N1cHBvcnQgcmVwcm9kdWNpYmxlIGJ1aWxkcyBieSBub3QgY2FwdHVyaW5nIHRoZSBidWlsZCBkaXJlY3RvcnkgaW50bwordGhlIG1rX2NtZHMgYW5kIGNvbXBpbGVfZXQgc2NyaXB0cy4gIEFsc28gZml4IGRlYmlhbiBidWlsZCBydWxlcyB0bworZW5zdXJlIGJ1aWxkIHJlcHJvZHVjaWJpbGl0eS4KKworRml4IGRlYmlhbiBidWlsZCBydWxlcyB0byBlbnN1cmUgYnVpbGQgcmVwcm9kdWNpYmlsaXR5IGFuZCB0byBhdm9pZAoraGlkaW5nIHRoZSBsaW5rZXIgZmxhZ3MgZm9yIGUyZnNjay5zdGF0aWMgc28gdGhlIGJ1aWxkIGhhcmRlbmluZyBsb2cKK3NjYW5uZXIgY2FuIHByb3Blcmx5IGF1ZGl0IHRoZSBidWlsZC4KKworRml4IGNvbXBhdGliaWxpdHkgd2l0aCBGcmVlQlNEJ3MgcG1ha2UgYW5kIHRlYWNoIHRoZSBjb25maWd1cmUgc2NyaXB0Cit0byBmb3JjZSB0aGUgY3JlYXRpb24gb2YgcG1ha2UtY29tcGF0aWJsZSBNYWtlZmlsZXMgaWYgdGhlCitGT1JDRV9OQVRJVkVfTUFLRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gYSBub24tZW1wdHkgdmFsdWUuCisKKworRTJmc3Byb2dzIDEuNDMuMiAoU2VwdGVtYmVyIDEsIDIwMTYpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IHJlc2l6ZTJmcyBzbyBpdCB3aWxsIG5vdCBjcmFzaCBpZiB0aGVyZSBpcyBhbiBleHRlbmRlZCBhdHRyaWJ1dGUKK2Jsb2NrIGJ1dCBpdCBkb2Vzbid0IG5lZWQgdG8gbWlnYXRlIGFueSBibG9ja3MgZHVyaW5nIGFuIG9mZi1saW5lCityZXNpemUKKworRml4IGEgY3Jhc2ggd2hlbiBta2UyZnMgb3IgZGVidWdmcyB0cmllcyB0byBjb3B5IGluIGEgZGlyZWN0b3J5CitoaWVyYXJjaHkgY29udGFpbmluZyBhbiBlbXB0eSBkaXJlY3RvcnkKKworTWtlMmZzIHdpbGwgbm93IHVzZSBhIGxhcmdlciBqb3VybmFsIGJ5IGRlZmF1bHQgZm9yIGZpbGVzeXN0ZW1zCitncmVhdGVyIHRoYW4gMTI4IEdCLiAgKDFHQiBpbnN0ZWFkIG9mIDEyOCBNQi4pCisKK0ZpeCBhbiBhbGlnbm1lbnQgYnVnIGluIGUyZnNjayB3aGljaCBjYXVzZWQgc3BhcmM2NCBhcmNoaXRlY3R1cmVzIHRvCitjcmFzaCB3aGVuIHJlcGxheWluZyB0aGUgam91cm5hbCBvbiBmaWxlIHN5c3RlbXMgd2l0aCBhIDY0LWJpdCBibG9jaworbnVtYmVyLgorCitDbGFyaWZ5IHRoZSBtZXNzYWdlIHByaW50ZWQgYnkgdHVuZTJmcyBtZXNzYWdlIHdoZW4gdGhlIHVzZXIgbmVlZHMgdG8KK3J1biBlMmZzY2sgc28gaXQncyBjbGVhciB0aGF0IHRoZSAtZiBmbGFnIHRvIGUyZnNjayBpcyBuZWVkZWQgdG8KK2ZvcmNlIGEgZnVsbCBlMmZzY2sgc2Nhbi4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzgyODAyMikKKworRml4IGEgYnVnIGluIGUyZnNjayBjYXVzZWQgYnkgYSBwb3dlciBmYWlsdXJlIGR1cmluZyBlMmZzY2sncyBqb3VybmFsCityZXBsYXkgY291bGQgbGVhdmUgdGhlIGZpbGUgc3lzdGVtIGluIGEgc3RhdGUgd2hlcmUgaWYgdGhlIGZpbGUgc3lzdGVtCitpcyBtb3VudGVkIHdpdGhvdXQgZG9pbmcgYSBmdWxsIGUyZnNjayBzY2FuLCB0aGUgZmlsZSBzeXN0ZW0gY291bGQgZ2V0Citjb3JydXB0ZWQKKworRml4IHRoZSBsb2dpYyBpbiBlMmZzY2sgd2hpY2ggZGVjaWRlcyB3aGVuIHRvIHJlcGFpciBsZWdhY3kgbmVnYXRpdmUKK3RpbWVzdGFtcCBlbmNvZGluZ3MuCisKK0FkZCBhIGNvbW1hbmQgdG8gZGVidWdmcyB0byBjb3B5IHRoZSBpbm9kZSBzdHJ1Y3R1cmUgZnJvbSBvbmUgaW5vZGUgdG8KK2Fub3RoZXIuCisKK0ZpeCBhIHR5cG8gaW4gZGVidWdmcydzIHN0YXQgY29tbWFuZCB3aGVuIHByaW50aW5nIG91dCB0aGUgZHRpbWUgZmllbGQKK29uIGZpbGUgc3lzdGVtcyB3aXRoIGFuIGV4dGVuZGVkIHRpbWVzdGFtcC4KKworRml4IGJpZyBlbmRpYW4gYnVncyBpbiB0aGUgZTJ1bmRvIHByb2dyYW0uICAoQWRkcmVzc2VzIFJlZCBIYXQgQnVnCisjMTM0NDYzNikKKworRGVidWdmcydzIGxvZ2R1bXAgY2FuIG5vdyBwcm9wZXJseSBoYW5kbGUgam91cm5hbHMgbGFyZ2VyIHRoYW4gMkdCLgorCitBdm9pZCBpbnN0YWxsaW5nIHRoZSBtYW4gcGFnZSBmb3IgZnVzZTJmcyBpZiBpdCBoYXMgbm90IGJlZW4gYnVpbHQuCisKK1VwZGF0ZSB0aGUgQ2F0YWxhbiwgQ2hpbmVzZSwgRGFuaXNoLCBEdXRjaCwgRnJlbmNoLCBHZXJtYW4sIFBvbGlzaCwKK1N3ZWRpc2gsIFVrcmFpbmlhbiB0cmFuc2xhdGlvbnMgYW5kIGFkZGVkIG5ldyB0cmFuc2xhdGlvbnMgZm9yCitIdWdhcmlhbiBhbmQgU2VyYmlhbi4KKworCitQcm9ncmFtbWluZyBub3RlcworLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IHBvcnRhYmlsaXR5IHByb2JsZW1zIGluIGZ1c2UyZnMuICBQcmV2aW91c2x5IGl0IHdvdWxkbid0IGJ1aWxkIG9uCitzeXN0ZW1zIHdpdGggb2xkZXIgZ2xpYmMgdmVyc2lvbnMgd2hlcmUgY2xvY2tfZ2V0dGltZSgpIGlzIG9ubHkKK2F2YWlsYWJsZSBpbiB0aGUgbGlicnQgbGlicmFyeSwgYW5kIGlmIGxpYmludGwgaXMgbm90IGJ1bmRsZWQgaW50byB0aGUKK0MgbGlicmFyeS4KKworUmVtb3ZlIGNvbXBsaWNhdGVkIGxvZ2ljIHdoaWNoIGNhdXNlZCBhIHN0YXRpYyBjb2RlIGFuYWx5emVyIHRvIGZsYWcgYQorZmFsc2UgcG9zaXRpdmUuICAoQSBzdGF0aWMgY29kZSBhbmFseXplciBhbHNvIGZvdW5kIGEgdmFsaWQgYnVnIGluCitkZWNpZGluZyB3aGVuIHRvIHJlcGFpciBhIGxlZ2FjeSBuZWdhdGl2ZSB0aW1lc3RhbXAgZW5jb2RpbmcsIHNvCitlbGltaW5hdGluZyBmYWxzZSBwb3NpdGl2ZXMgaXMgaW1wb3J0YW50LikKKworRml4ZWQgYSBidWcgd2hlcmUgdGhlIGV4dDJmcyBsaWJyYXJ5IGNsb3VkIHByb3Zva2Ugd2hlbiBhCitleHRmczJfemVyb19ibG9ja3MoKSBpcyB1c2VkICh2aWEgZmFsbG9jYXRpb24sIGluaXRpYWxpemluZyBhIGZpbGUKK3N5c3RlbSwgdW5pbml0aWFsaXplZCB1bmluaXRpYWxpemVkIGlub2RlIHRhYmxlIGJsb2NrcykgYWZ0ZXIgYQorZGlmZmVyZW50IGZpbGUgc3lzdGVtIHdoaWNoIGFsc28gdXNlZCBleHQyZnNfemVyb19ibG9ja3MoKS4KKworRW5hYmxlIHRoZSB1bml4X2lvIG1hbmFnZXIgaW4gdGhlIGV4dDJmcyBsaWJyYXJ5IHNvIGl0IGNhbiBhY2NlcHQgdGhlCit1c2Ugb2YgYSBmaWxlIGRlc2NyaXB0b3IuICBUaGlzIGlzIGhlbHBmdWwgaW4gY2FzZXMgd2hlcmUgdGhlIGZpbGUKK2Rlc2NyaXB0b3IgY29tZXMgZnJvbSB0ZW1wb3JhcnkgZmlsZSBjcmVhdGVkIHVzaW5nIE9fVE1QRklMRSwgb3IKK3Bhc3NlZCBpbiBmcm9tIGEgdW5peCBkb21haW4gc29ja2V0LgorCitGaXggYSBXaW5kb3dzNjQgcG9ydGFiaWxpdHkgYnVnLgorCisKK0UyZnNwcm9ncyAxLjQzLjEgKEp1bmUgOCwgMjAxNikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZWQgZTJmc2NrIHNvIHRoYXQgaXQgd291bGQgY29ycmVjdGx5IHVwZGF0ZSB0aGUgcHJvamVjdCBxdW90YSB1c2FnZQord2hlbiBkZWxldGluZyBhIGNvcnJ1cHRlZCBhbmQgaW5vZGUsIGFuZCBmaXhlZCBta2UyZnMgc28gaXQgd291bGRuJ3QKK2RlcmVmZXJlbmNlIG1lbW9yeSBiZXlvbmQgdGhlIHNtYWxsIGlub2RlIHN0cnVjdHVyZSAod2hpY2ggd2FzIHdyb25nLAorYnV0IHdvcmtlZCBtb3N0bHkgYnkgYWNjaWRlbnQgdW5sZXNzIGhhcmRlbmluZyBvciBzb21lIHNlY3VyaXR5IG1hbGxvYword2FzIGluIHVzZSkuCisKK0ZpeGVkIGEgbGFyZ2UgbnVtYmVyIG9mIEZyZWVCU0QgcG9ydGFiaWxpdHkgcHJvYmxlbXMuICAoVG8gYnVpbGQgb24KK0ZyZWVCU0QsIGhvd2V2ZXIsIHdlIHN0aWxsIG5lZWQgdG8gdXNlIEdOVSBNYWtlIGFuZCByZWRpcmVjdCBkZCB0byB1c2UKK0dOVSBkZC4pCisKK1RoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBzdXBwb3J0cyAtLWVuYWJsZS1oYXJkZW5pbmcsIHdoaWNoIGVuYWJsZXMKK3N0YWNrIHByb3RlY3Rpb24sIGZvcnRpZnksIHJlYWQtb25seSByZWxvY2F0aW9uIHRhYmxlcywgaW1tZWRpYXRlCitkeW5hbWljIHN5bWJvbCBiaW5kaW5nLCBhbmQgdGV4dCBzZWdtZW50IEFTTFIgKGlmIHRoZSBrZXJuZWwgaGFzCit1c2Vyc3BhY2UgQVNMUiBzdXBwb3J0IGVuYWJsZWQpIGJ5IGVuYWJsaW5nIHBvc2l0aW9uIGluZGVwZW5kZW50CitleGVjdXRhYmxlIGNvZGUuICAoRGlzdHJpYnV0aW9ucyB3aG8gd2FudCB0byBkbyB0aGVpciBvd24gc3BlY2lhbAordGhpbmcgY2FuIHNldCBDRkxBR1MsIENGTEFHU19TSExJQiwgQ0xGQUdTX1NUTElCLCBMREZMQUdTLAorTERGTEFHU19TSExJQiBhbmQgTERGTEFHU19TVEFUSUMgYXMgYXBwcm9wcmlhdGUuKQorCitUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgc3VwcG9ydHMgLS1kaXNhYmxlLXRkYiBzaW5jZSBvbiA2NC1iaXQKK3N5c3RlbXMsIGl0J3MgbXVjaCBmYXN0ZXIgdG8ganVzdCBlbmFibGUgYWRkaXRpb25hbCBzd2FwIHNwYWNlLiAgVGhlCitzY3JhdGNoX2ZpbGVzIGZlYXR1cmUgaW4gZTJmc2NrLmNvbmYgaXMgbW9zdGx5IG9ubHkgdXNlZnVsIG9uIDMyLWJpdAorc3lzdGVtcy4KKworRml4ZWQgdGhlIERpcmVjdCBJL08gZmFsbGJhY2sgY29kZXBhdGggaW4gdGhlIFVuaXggSS9PIG1hbmFnZXIgc28gdGhhdAorcmVhZC9tb2RpZnkvd3JpdGUgd29ya2VkIGNvcnJlY3RseS4gIEZvcnR1bmF0ZWx5IGluIHByYWN0aWNlICh3aXRoIHRoZQorZXhjZXB0aW9uIG9mIHRoZSBVbmRvIGhhbmRsZXIgd2hlbiBydW5uaW5nIG9uIEZyZWVCU0QpIHVzZWQgdGhpcyBidWdneQorY29kZXBhdGguIHNvIGZpbGUgc3lzdGVtcyB3ZXJlbid0IGdldHRpbmcgY29ycnVwdGVkLgorCitNa2UyZnMgd2lsbCBub3cgd2FybiBpZiB0aGUgdXNlciBwcm92aWRlcyBhIGxhYmVsIHdoaWNoIGlzIHRvbyBsb25nLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzkxNjMwKQorCitEZWJ1Z2ZzJ3MgcmR1bXAgY29tbWFuZCBub3cgd29ya3MgY29ycmVjdGx5IHdoZW4gZHVtcGluZyB0aGUgcm9vdAorZGlyZWN0b3J5IG9mIGEgZmlsZSBzeXN0ZW0uICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3NjYxMjUpCisKK0ZpeGVkIGEgYnVnIGluIGRlYnVnZnMgc28gaXQgd291bGQgY29ycmVjdGx5IGNhbGN1bGF0ZSBhIGJsb2NrIGdyb3VwJ3MKK2NoZWNrc3VtIGZpZWxkIGZpZWxkIG9uIDY0LWJpdCBzc3lzdGVtcy4KKworRTJmc2NrIG5vdyBoYXMgYSBtdWNoIG1vcmUgdW5kZXJzdGFuZGFibGUgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZQoram91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQgYW5kIHRoZSB1c2VyIGRlY2xpbmVzIHRvIGZpeCBpdC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzc2ODE2MikKKworRml4ZWQgc3VwcG9ydCBvZiBleHRlbmRlZCB0aW1lc3RhbXBzIG9uIDY0LWJpdCBzeXN0ZW1zLgorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzc2NjM3OSwKKyM3NjExNDQsICM3NzA3NTAsICM0MjgzNjEsICM3NjYxMjcpCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIFBhY2thZ2luZyBJc3N1ZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM4MjU4NjgpCisKKworUHJvZ3JhbW1pbmcgbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIGNvdmVyaXR5LCBzcGFyc2UsIGdjYyAtV2FsbCwgYW5kIGNsYW5nIHdhcm5pbmdzL25pdHMuCisKK0ZpeGVkIEFuZHJvaWQgYnVpbGQgbWFrZWZpbGVzICh3aGljaCB3YXMgbWlzc2luZyBhIG5ld2x5IGFkZGVkIGZpbGUgaW4KK2xpYi9zdXBwb3J0KS4KKworSW4gZ2VuZXJhbCwgY2hlY2tzIG9uIHNfY3JlYXRvcl9vcyBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZgorZmVhdHVyZSBmbGFnIHNwZWNpZmljIGNoZWNrczsgaWYgdGhlcmUgaXMgc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUKK2NoZWNrZWQgdmlhIHRoZSBwcmVzZW5jZSBvZiBhIGZlYXR1cmUgZmxhZywgd2Ugd2lsbCBzaW1wbHkgY2hlY2sKK3doZXRoZXIgdGhlIGNyZWF0b3IgT1MgaXMgKm5vdCogRVhUMl9PU19IVVJEIHdoaWNoIGlzIHRoZSBvbmUKK29wZXJhdGluZyBzeXN0ZW0gd2hlcmUgdGhlcmUgaGFzIGJlZW4gZXh0ZW5zaXZlIGFidXNlIG9mIHRoZQorc19jcmVhdG9yX29zIGZsYWcuCisKK1RoZSBsaWJtYWdpYyBsaWJhcnkgaGFzIGJlZW4gc3VwcHJlc3NlZCB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24KK3Rlc3Qgc3VpdGUgdG8gYXZvaWQgZmFsc2UgdGVzdCBmYWlsdXJlcyBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgYmV0d2VlbgordmVyc2lvbnMgb2YgbGlibWFnaWMgKGFuZC9vciB0aGUgbWFnaWMgbnVtYmVyIGRhdGFiYXNlKS4KKworVGhlIHRlc3RzL3Rlc3Rfc2NyaXB0IHByb2dhbSBub3cgYWNjZXB0cyB0aGUgLS1mYWlsZWQgb3B0aW9uLCB3aGljaAord2lsbCBydW4gdGhvc2UgdGVzdHMgdGhhdCBoYWQgcHJldmlvdXNseSBmYWlsZWQuCisKK0ZpeGVkIHRlc3RzIGJ1aWxkIG9uIHRob3NlIHN5c3RlbXMgd2hpY2ggcmVxdWlyZSBMREZMQUdTIHRvIGJlIHNldC4KKworRml4ZWQgdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBzbyBpdCB3aWxsIHByb3Blcmx5IGZpbHRlciBvdXQgdmVyc2lvbgorbnVtYmVycyB3aXRoIHR3byBjb21wb25lbnRzIChzdWNoIGFzIDEuNDMpIGZyb20gbG9nIGZpbGVzIGJlZm9yZQorY29tcGFyaW5nIHRoZW0gd2l0aCB0aGUgZXhwZWN0ZWQgZ29sZGVuIG91dHB1dC4KKworCitFMmZzcHJvZ3MgMS40MyAoTWF5IDE3LCAyMDE2KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQWRkIHN1cHBvcnQgZm9yIHRoZSBleHQ0IG1ldGFkYXRhIGNoZWNrc3VtLCBjaGVja3N1bSBzZWVkLCBpbmxpbmUKK2RhdGEsIGVuY3J5cHRpb24sIHByb2plY3QgcXVvdGEsIGFuZCByZWFkLW9ubHkgZmVhdHVyZXMuCisKK1N1cHBvcnQgZm9yIHRoZSB2ZXJ5IG9sZCwgZXhwZXJpbWVudGFsLCBhbmQgbmV2ZXItYWRkZWQtdG8tbWFpbmxpbmUKK2NvbXByZXNzaW9uIGZlYXR1cmUgaGFzIGJlZW4gcmVtb3ZlZC4KKworTWtlMmZzIHdpbGwgbm93IGNyZWF0ZSBmaWxlIHN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBhbmQgNjRiaXQKK2ZlYXR1cmVzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworVGhlIG1rZTJmcyBwcm9ncmFtIHdpbGwgbm93IHN1cHBvcnQgbXVsdGlwbGUgLU8gb3B0aW9ucyAoaW5zdGVhZCBvZgoranVzdCBpZ25vcmluZyBhbGwgYnV0IHRoZSBsYXN0IC1PIG9wdGlvbikuCisKK01rZTJmcyB3aWxsIG5vdyBjb3JyZWN0bHkgZGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgZmlsZSBzeXN0ZW0gYW5kCitoYW5kbGUgdGhlIGRpc2NhcmQgb3BlcmF0aW9uIGNvcnJlY3RseSB3aGVuIHRoZSAiLUUgb2Zmc2V0PU5OTiIgaXMKK3VzZWQuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM4MDM2MjkpCisKK1RoZSB0dW5lMmZzIHByb2dyYW0gd2lsbCBhc2sgdGhlIHVzZXIgZm9yIGNvbmZpcm1hdGlvbiBiZWZvcmUgc3RhcnRpbmcKK2Rhbmdlcm91cyBvcGVyYXRpb25zIGlmIHRoZSB0ZXJtaW5hbCBpcyBhdmFpbGFibGUsIGFuZCBpdCB3aWxsIHJlcGxheQordGhlIGpvdXJuYWwgaWYgbmVjZXNzYXJ5LgorCitBZGQgYW4gZXh0Mi8zLzQgRlVTRSBzZXJ2ZXIKKworRGVidWdmcyBjYW4gbm93IG1vZGlmeSBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCBqb3VybmFsIHRyYW5zYWN0aW9ucy4KKworRGVidWdmcyBub3cgY2FuIHByb3Blcmx5IGRpc3BsYXkgYW5kIHNldCBleHRlbmRlZCB0aW1lc3RhbXBzLgorCitFMmZzY2sgd2lsbCBvZmZlciB0byBmaXggZXh0ZW5kZWQgdGltZXN0YW1wcyB0aGF0IHdlcmUgaW5jb3JyZWN0bHkKK2VuY29kZWQgYnkgb2xkZXIga2VybmVscy4KKworRml4IG1pc2NlbGxhbmVvdXMgTU1QIGJ1Z3MgaW4gZGVidWdmcy4KKworRml4IHNwYXJzZV9zdXBlcjIgYnVncyBpbiBta2UyZnMgYW5kIHJlc2l6ZTJmcy4KKworRml4IG9yIGltcHJvdmUgb2Zmc2V0IHN1cHBvcnQgaW4gbWtlMmZzLCBlMnVuZG8sIGFuZCBsaWJleHQyZnMuCisKK1RoZSByZXNpemUyZnMgY29tbWFuZCBjYW4gbm93IGNvbnZlcnQgZmlsZSBzeXN0ZW1zIGJldHdlZW4gNjQtYml0IGFuZAorMzItYml0IG1vZGUuCisKK0ZpeCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBtZW1vcnkgYWNjZXNzIGluIHJlc2l6ZTJmcyB3aGVuIGRvaW5nIGEKK2xhcmdlIG9mZi1saW5lIGZpbGUgc3lzdGVtIGdyb3cgb3BlcmF0aW9uLgorCitXZSBub3cgdXNlIGEgbmV3IGUydW5kbyBmaWxlIGZvcm1hdCB3aGljaCBpcyBtdWNoIG1vcmUgZWZmaWNpZW50IGFuZAorZmFzdGVyIHRoYW4gdGhlIG9sZCB0ZGItYmFzZWQgc2NoZW1lLiAgU2luY2UgaXQgc28gbXVjaCBmYXN0ZXIsCitlMmZzY2ssIHR1bmUyZnMsIGRlYnVnZnMsIGFuZCByZXNpemUyZnMgbm93IGFsc28gY2FuIHN1cHBvcnQgdXNpbmcKK2NyZWF0aW5nIGFuIHVuZG8gZmlsZS4KKworVGhlIG1rZTJmcyBjb21tYW5kIGNhbiBub3cgc2V0IHRoZSBlcnJvciBiZWhhdmlvciB3aGVuIGluaXRpYWxpemluZwordGhlIGZpbGUgc3lzdGVtIChzbyB0aGUgYWRtaW5pc3RyYXRvciBkb2Vzbid0IGhhdmUgdG8gaXNzdWUgYSBzZXBhcmF0ZQordHVuZTJmcyAtZSBjb21tYW5kKS4KKworVGVhY2ggbWtlMmZzIHRvIHBhcnNlIGEgaHVtYW4tcmVhZGFibGUgYXJndW1lbnQgZm9yIC1pIG9wdGlvbi4KKworVGVhY2ggbWtlMmZzIHRvIGF1dG9tYXRpY2FsbHkgaGFuZGxlIGNyZWF0aW5nIGZpbGUgc3lzdGVtcyA+IDUwMFQgYnkKK2F1dG9tYXRpY2FsbHkgZW5hYmxlIHRoZSBtZXRhX2JnIGZlYXR1cmUuCisKK01rZTJmcyB3aWxsIG5vdyBwcm9tcHQgZm9yIHVzZXIgdmVyaWZpY2F0aW9uIGJlZm9yZSByZXdyaXRpbmcgYSBmaWxlCitzeXN0ZW0ncyBzdXBlcmJsb2NrIHVzaW5nIHRoZSAtUyBvcHRpb24uCisKK01rZTJmcyBubyBsb25nZXIgY29tcGxhaW5zIGlmIHRoZSB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBhIGZpbGUgc3lzdGVtCit1c2luZyB0aGUgZW50aXJlIGJsb2NrIGRldmljZSAoZS5nLiwgd2l0aG91dCB1c2luZyBhIHBhcnRpdGlvbikuICBUaGUKK21pbm9yIG51bWJlciBjb252ZW50aW9uIGlzIG5vdCB1c2VkIGJ5IGFsbCBibG9jayBkZXZpY2VzLCBhbmQgaXQncworcXVpdGUgbm9ybWFsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyB0byBjcmVhdGUgYSBmaWxlIHN5c3RlbSBvbiAvZGV2L3NkYworaW5zdGVhZCBvZiAvZGV2L3NkYzEuCisKK0ZpeCBhbiAibWtlMmZzIC1kIiBidWcgd2hpY2ggY291bGQgY3JlYXRlIGlub2RlcyB3aXRoIGludmFsaWQKK2V4dGVuZGVkIGF0dHJpYnV0ZSBibG9ja3MKKworRTJmc2NrIGlzIG5vdyBtdWNoIG1vcmUgcGFyYW5vaWQgYWJvdXQgbm90IGZyZWVpbmcgb3IgY29ycnVwdGluZworY3JpdGljYWwgbWV0YWRhdGEgYmxvY2tzLCBzdWNoIGFzIGlub2RlIHRhYmxlIGJsb2NrcywgZXZlbiBpZgorY29ycnVwdGVkIGluZGlyZWN0IGJsb2NrcyBvciBleHRlbnQgdHJlZXMgcG9pbnQgYXQgdGhlc2UgYmxvY2tzLgorCitFMmZzY2sgbm93IHByaW50cyBibG9jayByYW5nZXMgaW4gcGFzczFiIGluc3RlYWQgb2YgbGlzdGluZyBhbGwgb2YgdGhlCitibG9ja3MgZXhoYXVzdGl2ZWx5LgorCitFMmZzY2sgd2lsbCB0cnkgdG8gZXhwYW5kIHRoZSByb290IGRpcmVjdG9yeSBpZiB0aGUgbG9zdCtmb3VuZCBjYW4ndAorYmUgbGlua2VkIHRvIHRoZSByb290IGRpcmVjdG9yeS4gIEFsc28sIG9mZmVyIHRvIHVzZSB0aGUgcm9vdAorZGlyZWN0b3J5IGlmIGxvc3QrZm91bmQgY2FuJ3QgYmUgY3JlYXRlZC4KKworRTJmc2NrIGlzIG5vdyBtb3JlIHBhcmFub2lkIGhhbmRsaW5nIGNvcnJ1cHRlZCBleHRlbnQgdHJlZXMgYXMgd2VsbCBhcworY29ycnVwdGVkIGpvdXJuYWxzLgorCitFMmZzY2sgY2FuIG5vdyByZWJ1aWxkIGV4dGVudCB0cmVlcywgZWl0aGVyIChhKSB0byBvcHRpbWl6ZSB0aGVtLCAoYikKK3RvIHJlY292ZXIgZnJvbSBhIGNvcnJ1cHRlZCBleHRlbnQgdHJlZSwgb3IgKGMpIHRvIGNvbnZlcnQKK2Jsb2NrLW1hcHBlZCBpbm9kZXMgdG8gdXNlIGV4dGVudHMuCisKK0UyZnNjayBub3cgaGFzIGEgcmVhZGFoZWFkIG1lY2hhbmlzbSB3aGljaCBjYW4gc2lnbmlmaWNhbnRseSBzcGVlZCBpdHMKK3BlcmZvcm1hbmNlLCBlc3BlY2lhbGx5IG9uIFJBSUQgYXJyYXlzLgorCitFMmZzY2sgbm93IGhhcyBhICJ5ZXMgdG8gYWxsIiBvcHRpb24gd2hpY2ggdGhlIHVzZXIgY2FuIGdpdmUgaWYgc2hlIGlzCit0aXJlZCBvZiBhbnN3ZXJpbmcgJ3knIHRvIGEgdmVyeSBsYXJnZSBudW1iZXIgb2YgcXVlc3Rpb25zLgorCitFMmZzY2sgd2lsbCBub3cgaWdub3JlIHRoZSBiYWRibG9ja3MgaW5vZGUgaWYgdGhlIGNvbnRlbnRzIG9mIHRoZQorYmFkYmxvY2tzIGlub2RlIGluZGljYXRlIHRoYXQgdGhlIHBvcnRpb24gaW5vZGUgdGFibGUgY29udGFpbmluZyB0aGUKK2JhZGJsb2NrcyBpbm9kZSBpcyBiYWQuICAoV2UgbXVzdCBnbyBkZWVwZXIuLi4pCisKK0UyZnNjayBjYW4gbm93IGNvcnJlY3RseSBmaXggZGlyZWN0b3J5IHdpdGggaG9sZXMgb24gYmlnYWxsb2MgZmlsZQorc3lzdGVtcy4KKworRTJmc2NrIHdpbGwgbm93IGNoZWNrIGZvciBleHRlbnQgbWFwcGVkIGlub2RlcyB3aXRoIG5vIGV4dGVudCBoZWFkZXIKK2FuZCBjbGVhciB0aGVtIGlmIGZvdW5kLgorCitFMmZzY2sgbm93IGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBoZWFkZXIgZG9lc24ndAorcmVzdWx0IGluIHRoZSB4YXR0ciBleHRlbmRpbmcgYmV5b25kIHRoZSBib3VuZHMgb2YgdGhlIGlub2RlCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayB0byBhdm9pZCBvdmVycnVubmluZyBhIGJ1ZmZlciBjb250YWluaW5nIGpiZDIKK3Jldm9rZSByZWNvcmRzIGlmIHRoZSBqb3VybmFsIGlzIGNvcnJ1cHRlZC4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoaWNoIGNvdWxkIGNhdXNlIGl0IGxvb3AgZm9yZXZlciBpZiBhIHNwZWNpYWwKK2lub2RlIGhhcyB0b28gbWFueSBpbnZhbGlkIGJsb2NrIG1hcHBpbmdzLgorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY291bGQgY2F1c2UgcGFzczFiL2MvZCBwcm9jZXNzaW5nIHRvIGdldAorY29uZnVzZWQgaWYgYW4gYXR0ZW1wdCB0byBhbGxvY2F0ZSBhIGJsb2NrIGNhbid0IGZpbmQgYW55IGZyZWUgc3BhY2UKK2luIHRoZSBmaWxlIHN5c3RlbS4KKworRTJmc2NrIHdpbGwgbm8gbG9uZ2VyIHRyeSB0byBmb3JjZSByZXdyaXRlIGJsb2NrcyBsb2NhdGVkIGJleW9uZCB0aGUKK2ZpbGUgc3lzdGVtLgorCitUaGUgZTJmc2NrIHByb2dyYW0gd2lsbCBubyBsb25nZXIgdXBkYXRlIHRoZSBxdW90YSBpbm9kZXMgd2hlbiBpdCBpcworaW50ZXJydXB0ZWQuCisKK0ZpeCBhIGJ1ZyB3aGljaCBpbiByYXJlIGNhc2VzIHdvdWxkIGNhdXNlIGUyZnNjayAtZkQgdG8gY29ycnVwdCBhbgorZXh0ZW50LW1hcHBlZCBkaXJlY3RvcnkuCisKK0ZpeGVkIGEgYnVnIGluIHJlc2l6ZTJmcyB3aGljaCBjb3VsZCBsZWFkIHRvIHJlc2l6ZTJmcyBjcmFzaGluZyBvciBhCitjb3JydXB0ZWQgZmlsZSBzeXN0ZW0gaWYgdGhlIGZpbGUgc3lzdGVtIGlzIGFsbW9zdCBjb21wbGV0ZWx5IGZ1bGwKK3doZW4gdHJ5aW5nIGdyb3cgYSBmaWxlIHN5c3RlbSBhbmQgd2UgbmVlZCB0byBhbGxvY2F0ZSBibG9ja3MgdG8gZ3JvdwordGhlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLgorCitGaXhlZCBhIGJ1ZyBpbiByZXNpemUyZnMgd2hpY2ggY291bGQgY2F1c2UgaXQgdG8gZ2V0IGZvb2xlZCB0cnlpbmcgdG8KK2RldGVybWludGhlIHRoZSBSQUlEIGFycmF5J3Mgc3RyaWRlIHdoZW4gZmxleF9iZyBpcyBlbmFibGVkLgorCitGaXggcmVzaXplMmZzIGJ1ZyB0aGF0IGNvdWxkIGxlYXZlIGJsb2NrIGFsbG9jYXRpb24gYml0bWFwcwordW5pbml0aWFsaXplZC4KKworVGhlIGR1bXBlMmZzIG91dHB1dCBoYXMgYmVlbiBpbXByb3ZlZCBzbyBpdCBpcyBjbGVhbmVyIGFuZCBhbHdheXMgZml0cword2l0aGluIDgwIGNvbHVtbnMuICBBbHNvIGFkZGVkIGEgbW9yZSBlYXNpbHkgbWFjaGluZS1wYXJzYWJsZSBvdXRwdXQKK29mIGR1bXBlMmZzLgorCitUaGUgbWtlMmZzIHByb2dyYW0gY2FuIG5vdyBwcmUtcG9wdWxhdGUgYSBmaWxlIHN5c3RlbSBmcm9tIGEgZGlyZWN0b3J5CitoaWVyYXJjaHkgdXNpbmcgdGhlIC1kIG9wdGlvbi4KKworVGhlIG1rZTJmcyBwcm9ncmFtIG5vdyBza2lwcyB6ZXJvaW5nIGlub2RlIHRhYmxlIGJsb2NrcyBpZiB0aGV5IHdlcmUKK2FscmVhZHkgemVyb2VkIHVzaW5nIHRoZSBkaXNjYXJkIGZlYXR1cmUuCisKK0NoZWNrIHRvIG1ha2Ugc3VyZSBmaWxlIHN5c3RlbSBmZWF0dXJlcyB3aGljaCBjYW4gbm90IGJlIHN1cHBvcnRlZCBieQorSFVSRCBhcmUgbm90IGVuYWJsZWQgaWYgdGhlIGZpbGUgc3lzdGVtIGlzIGNyZWF0ZWQgdG8gYmUKK0hVUkQtY29tcGF0aWJsZS4KKworQWRkZWQgYSBuZXcgZTJmdXp6IGNvbW1hbmQgdGhhdCB3aWxsIGZ1enogYW4gZXh0NCBpbWFnZSBmb3IgdGVzdGluZworcHVycG9zZXMuCisKK1RoZSBkZWJ1Z2ZzIGxvZ2R1bXAgY29tbWFuZCBjYW4gbm93IGRlYWwgd2l0aCA2NC1iaXQgcmV2b2tlIHRhYmxlcworY29ycmVjdGx5LiAgQWxzbywgImxvZ2R1bXAgLU8iIHdpbGwgcHJpbnQgdGhlIG9sZCBsb2cgY29udGVudHMgKGJlZm9yZQordGhlIGpvdXJuYWwgd2FzIHJlcGxheWVkKS4KKworVGhlIGRlYnVnZnMgYm1hcCBjb21tYW5kIGNhbiBub3cgYmUgdXNlZCB0byBzZXQgb3IgYWxsb2NhdGUgYSBwaHlzaWNhbAorYmxvY2suCisKK0ZpeGVkIGEgYnVnIHNvICJmaWxlZnJhZyAtQiAtZSAtdiIgZG9lcyBub3QgcmV0dXJuIGEgc2VwYXJhdGUgZW50cnkKK2ZvciBlYWNoIGJsb2NrLgorCitUaGUgZmlsZWZyYWcgcHJvZ3JhbSBub3cgYWNjb3VudHMgZm9yIGhvbGVzIGluIHNwYXJzZSBmaWxlcyBjcmVhdGVkIGJ5Cit0aGUgZmlsZSBwdW5jaCBvcGVyYXRpb24gYXMgYW4gZXhwZWN0ZWQvb3B0aW1hbCBtYXBwaW5nLgorCitUaGUgZmlsZSBJL08gZnVuY3Rpb25zIG5vdyBjb3JyZWN0bHkgaGFuZGxlIGlub2RlcyBjb250YWluaW5nCit1bmluaXRpYWxpemVkIGJsb2Nrcy4KKworRml4IGEgYnVnIGluIHR1bmUyZnMgc28gdGhhdCByZW1vdmluZyB1bmluaXRfYmcgZmVhdHVyZSBvbiBhIGJpZ2FsbG9jCitmaWxlIHN5c3RlbSB3b24ndCByZXN1bHQgaW4gY29ycnVwdGVkIGJsb2NrIGJpdG1hcHMuCisKK1VwZGF0ZWQvZml4ZWQgdmFyaW91cyBtYW4gcGFnZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3OTg0MjUpCisKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgY292ZXJpdHksIHNwYXJzZSBnY2MgLVdhbGwsIGFuZCBjbGFuZyB3YXJuaW5ncy9uaXRzLgorCitBZGRlZCBBbmRyb2lkIGJ1aWxkIGZpbGVzIHNvIHRoYXQgZTJmc3Byb2dzIGNhbiBiZSBidWlsdCBpbiB0aGUKK0FuZHJvaWQgc291cmNlIHRyZWUuCisKK1JlZHVjZSB0aGUgdXNlIG9mIGxpYmMgZnVuY3Rpb25zIGluIGxpYmV4dDJmcyB0aGF0IG1heSBub3QgYmUgcHJlc2VudAoraW4gdGhlIGJvb3QgbG9hZGVyIGVudmlyb25tZW50LCBhdCBsZWFzdCBmb3IgdGhvc2UgZnVuY3Rpb25zIHRoYXQgYXJlCituZWVkZWQgYnkgYm9vdCBsb2Fkc2VycyBzdWNoIGFzIHlhYm9vdC4KKworRGV2ZWxvcGVycyBjYW4gbm93IG92ZXJpZGUgdGhlIGRlYnVnZ2luZyBhbmQgb3B0aW1pemF0aW9uIGZsYWdzIGJ5CityZWRlZmluaW5nIHRoZSBDRkxBR1MgbWFrZWZpbGUgbWFjcm8uCisKK1RoZSBsaWJleHQyZnMgbGlicmFyeSBub3cgaGFzIHN1cHBvcnQgZm9yIGZhbGxvY2F0ZS4KKworVGhlIG1rZTJmcyBjb21tYW5kIHdpbGwgbm93IGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGlmIGJsb2NrCitkZXZpY2Ugb3IgaW1hZ2UgZmlsZSBjb250YWlucyBhbiBleGlzdGluZyBmaWxlIHN5c3RlbSBpbWFnZSwgYW5kCitzdGRvdXQgYW5kIHN0ZGluIGFyZSBjb25uZWN0ZWQgdG8gYSB0dHkuCisKK1RoZSBsaWJleHQyZnMgbGlicmFyeSBub3cgcGlja3MgYSBtb3JlIGludGVsbGlnZW50IGdvYWwgYmxvY2sgd2hlbgorZG9pbmcgYmxvY2sgYWxsb2NhdGlvbnMuCisKK1RoZSBsaWJleHQyZnMgbGlicmFyeSB3aWxsIG5vdyBhdXRvbWF0aWNhbGx5IHNldCB0aGUgQkxPQ0tfVU5JTlQgZmxhZworaWYgYWxsIG9mIHRoZSBibG9ja3MgaW4gYSBibG9jayBncm91cCBhcmUgZnJlZSwgdG8gc3BlZWQgdXAgZnV0dXJlCitlMmZzY2sgYW5kIGR1bXBlMmZzIG9wZXJhdGlvbnMgb24gdGhlIGZpbGUgc3lzdGVtLgorCitBZGQgdHdvIG5ldyBmdW5jdGlvbnMgZXh0MmZzX25ld19yYW5nZSgpIGFuZCBleHQyZnNfYWxsb2NfcmFuZ2UoKSB0bworbGliZXh0MmZzLgorCitUaGUgZXh0MmZzX3plcm9fYmxvY2tzKCkgY29tbWFuZCB3aWxsIHVzZSBGQUxMT0NfRkxfWkVST19SQU5HRSBmb3IKK2ZpbGUtYmFzZWQgaW1hZ2VzLgorCitUaGUgZXh0MmZzX2JtYXAoKSBmdW5jdGlvbiBzdXBwb3J0cyBuZXcgZmxhZ3MgQk1BUF9VTklOSVQgYW5kCitCTUFQX1pFUk8uCisKK1RoZSBleHQyZnNfbmV3X2Jsb2NrMigpIGZ1bmN0aW9uIHdpbGwgbm93IGNhbGwgdGhlIGFsbG9jX2Jsb2NrIGhvb2sKK2JlZm9yZSBjaGVja2luZyBmcy0+YmxvY2tfbWFwLgorCitTdXBwb3J0IGZvciB0aGUgTU1QIGZlYXR1cmUgY2FuIG5vdyBiZSBkaXNhYmxlZCBhdCBjb21waWxlIHRpbWUuCisKK0FkZGVkIHN1cHBvcnQgdG8gbWFuaXB1bGF0ZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGxpYmV4dDJmcy4KKworQWRkZWQgYSBsb3Qgb2YgbmV3IHJlZ3Jlc3Npb24gdGVzdHMuCisKK0FkZGVkIGVuZGlhbiBhbm5vdGF0aW9ucyBzbyBpdCdzIHBvc3NpYmxlIHRvIHNjYW4gZTJmc3Byb2dzIGZvciBlbmRpYW4KK3Byb2JsZW1zIHVzaW5nIGEgc3RhdGljIGNvZGUgYW5hbHl6ZXIuCisKK0ZpeGVkIG1lbW9yeSBsZWFrcyBpbiBsaWJleHQyZnMuCisKK1RoZSBlMmZzY2sgamJkMiBoYW5kbGluZyBjb2RlIGhhcyBiZWVuIHJlc3luY2VkIHdpdGggdGhlIDMuMTYga2VybmVsLgorVGhlcmUgaXMgbm93IGEgc2NyaXB0IGluIHRoZSBjb250cmliIGRpcmVjdG9yeSB3aGljaCBhdXRvbWF0ZXMgbW9zdCBvZgordGhlIHJlc3luYyBwcm9jZXNzLgorCitUaGUgYnVpbGQgc3lzdGVtIHdpbGwgbm93IHJ1biBjcHBjaGVjayAoYSBzdGF0aWMgY29kZSBhbmFseXNpcyB0b29sKQordmlhICJtYWtlIEM9MSIKKworCitFMmZzcHJvZ3MgMS40Mi4xMyAoTWF5IDE3LCAyMDE1KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZWQgYSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHdoaWxlIGNsb3NpbmcgYSBmaWxlIHN5c3RlbSBpbgorbGliZXh0MmZzLiAgKENWRS0yMDE1LTE1NzIsIEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzc4OTQ4KQorCitGaXhlZCBhIGJ1ZyB3aGljaCBjb3VsZCBjYXVzZSBlMmZzY2sgdG8gY29ycnVwdCBIdXJkIGZpbGUgc3lzdGVtcy4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzc2MDI3NSkKKworRml4ZWQgYSBkZWFkbG9jayB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBzeXN0ZW1kIGFuZCBlMmZzY2suY29uZidzCitsb2dnaW5nIGZlYXR1cmUuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3NzUyMzQpCisKK0ZpeGVkIGEgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIHByb2dyYW1zIHVzaW5nIGxpYmV4dDIncyBpbm9kZSB0YWJsZQorc2Nhbm5pbmcgZnVuY3Rpb25zIGZyb20gY3Jhc2hpbmcgb24gY2VydGFpbiBjb3JydXB0ZWQgZmlsZSBzeXN0ZW1zLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzczNzk1KQorCitGaXhlZCBkdW1wZTJmcyBzbyBpdCB3b24ndCBjcmFzaCBpZiB0aGUgdXNlciBkb2Vzbid0IHNwZWNpZnkgYSBibG9jaworZGV2aWNlIChmaWxlIHN5c3RlbSkuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3NjQyOTMpCisKK0ZpeGVkIGUyZnNjayBzbyBpZiBpdCBub3RpY2VzIHVuZXhwZWN0ZWQgSFRSRUUgYmxvY2tzIGluIHBhc3MgMiwgaXQKK3dpbGwgcmVwb3J0IHRoZSBjb3JyZWN0IGRpcmVjdG9yeSBpbm9kZSBjb250YWluaW5nIHRoZSBpbmNvbnNpc3RlbmN5LgorCitJZiBlMmZzY2sgZmFpbHMgdG8gZ3JvdyB0aGUgZGlyX2luZm8gc3RydWN0dXJlIGR1ZSByZWFsbG9jKDMpIG5vdAoraGF2aW5nIGVub3VnaCBtZW1vcnksIGl0IHdpbGwgbm93IGZhaWwgd2l0aCBleHBsYW5hdG9yeSBtZXNzYWdlCitpbnN0ZWFkIG9mIHN0YWdnZXJpbmcgb24gZmFpbGluZyB3aXRoIGEgY29uZnVzaW5nIGludGVybmFsIGVycm9yCittZXNzYWdlcy4KKworVGhlIHR1bmUyZnMgcHJvZ3JhbSB3aWxsIHplcm8gb3V0IHRoZSBzdXBlcmJsb2NrIGpvdXJuYWwgYmFja3VwCitpbmZvcm1hdGlvbiB3aGVuIHJlbW92aW5nIGEgam91cm5hbCBmcm9tIGEgZmlsZSBzeXN0ZW0uCisKK1RoZSBta2UyZnMgcHJvZ3JhbSBub3cgZW5hYmxlcyB0aGUgbGFyZ2VfZmlsZSBmZWF0dXJlIGJ5IGRlZmF1bHQuCisKK0ZpeGVkIGEgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGJhZGJsb2NrcyB0byBjcmFzaCBpZiB0aGVyZSBhcmUgbWlsbGlvbnMKK2FuZCBtaWxsaW9ucyBvZiBiYWQgYmxvY2tzLgorCitGaXhlZCBzb21lIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiByZXNpemUyZnMgYW5kIGUyZnNjay4KKworRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0dW5lMmZzLgorCitGaXhlZCBzb21lIGJpZ2VuZGlhbiBidWdzIHRoYXQgaGFkIGNyZXB0IGludG8gYm90aCBpbmRpcmVjdCBhbmQgZXh0ZW50CitoYW5kbGluZyBpbnNpZGUgbGliZXh0MmZzLgorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLgorCitVcGRhdGUgRXNwZXJhbnRvLCBHZXJtYW4sIGFuZCBTcGFuaXNoIHRyYW5zbGF0aW9ucy4gIEFkZGVkIERhbmlzaAordHJhbnNsYXRpb24uCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIGNvdmVyaXR5LCBzcGFyY2UgZ2NjIC1XYWxsLCBhbmQgY2xhbmcgd2FybmluZ3Mvbml0cy4KKworQ2xlYW4gdXAgc29tZSBidWlsZCBzeXN0ZW0gcHJvYmxlbXMgKGJ1aWxkIGZhaWx1cmVzIHdpdGggdmFyaW91cworY29uZmlndXJlIG9wdGlvbnMsIGZpeCBQb3NpeCBwb3J0YWJpbGl0eSBpc3N1ZXMsIGV0Yy4pCisKK1RoZSBmdW5jdGlvbnMgZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzWzJdKCkgYW5kCitleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHNbMl0oKSBub3cgY2hlY2sgdGhlIGlub2RlIGFuZCBibG9jayBudW1iZXJzCitwYXNzZWQgdG8gdGhlbSwgdG8gYXZvaWQgY3Jhc2hlcyBjYXVzZWQgYnkgYnVnZ3kgY2FsbGVycy4KKworVGhlIGxpYmV4dDJmcyBkaXJlY3RvcnkgaXRlcmF0b3Igd2lsbCBub3cgY2hlY2sgZm9yIGFuIGludmFsaWQKK2RpcmVjdG9yeSBlbnRyeSBsZW5ndGggaW5zdGVhZCBvZiBwb3NzaWJseSB3YWxraW5nIG9mZiB0aGUgZW5kIG9mIHRoZQorZGlyZWN0b3J5IGJ1ZmZlci4KKworCitFMmZzcHJvZ3MgMS40Mi4xMiAoQXVndXN0IDI1LCAyMDE0KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IHZhcmlvdXMgZTJmc2NrIGJ1Z3Mgd2hlbiB0cnlpbmcgdG8gcmVwYWlyIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcy4KKworRTJmc2NrIGNhbiBub3cgcmVwYWlyIGEgZmlsZSBzeXN0ZW0gd2l0aCBhbiBvdmVybHkgbGFyZ2UKK3NfZmlyc3RfbWV0YV9iZyBmaWVsZCwgd2hpY2ggaGFkIHByZXZpb3VzbHkgY2F1c2VkIGFsbCBlMmZzcHJvZ3MKK3Byb2dyYW1zIHRvIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG9wZW4gc3VjaCBhIGZpbGUgc3lzdGVtLgorCitGaXggZTJmc2NrIHNvIHRoYXQgaXQgY2FuIGNvcnJlY3RseSBmaXggYSBudW1iZXIgb2YgcmFyZSBmaWxlIHN5c3RlbQorY29ycnVwdGlvbnMgdGhhdCB3ZXJlIGRpc2NvdmVyZWQgd2hlbiB1c2luZyBhIGZpbGUgc3lzdGVtIGZ1enplci4KKworRml4IGUyZnNjayBzbyBpdCBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgYmFjayBibG9jayBncm91cCBkZXNjcmlwdG9ycyBpZgordGhleSBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkLgorCitNa2UyZnMgcHJvZ3JhbSB3aWxsIG5vdyBwbGFjZSBtZXRhZGF0YSBibG9ja3MgaW4gdGhlIGxhc3QgZmxleF9iZyBzbwordGhleSBhcmUgY29udGlndW91cy4gIFRoaXMgcmVkdWNlcyBmcmVlIHNwYWNlIGZyYWdtZW50YXRpb24gaW4gYQorZnJlc2hseSBjcmVhdGVkIGZpbGUgc3lzdGVtLCBhcyB3ZWxsIGFzIGFsbG93aW5nIG1rZTJmcyBjb21tYW5kcyB3aGljaAorcmVxdWVzdCBleHRyZW1lbHkgbGFyZ2UgZmxleF9iZyBzaXplIHRvIHN1Y2NlZWQuCisKK01rZTJmcyBub3cgY3JlYXRlcyBodWdlZmlsZXMgbW9yZSBlZmZpY2llbnRseSAod2l0aCBmZXdlciBleHRlbnQgdHJlZQorYmxvY2tzKS4KKworRml4IGEgMzIvNjQtYml0IG92ZXJmbG93IGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHJlc2l6ZTJmcyB0byBsb29wCitmb3JldmVyLiAoQWRkcmVzc2VzLUxhdW5jaHBhZC1CdWc6ICMxMzIxOTU4KQorCitUaGUgcmVzaXplMmZzIHByb2dyYW0gd2lsbCBub3cgdXNlIG11Y2ggbGVzcyBtZW1vcnkgd2hlbiByZXNpemluZyB2ZXJ5CitsYXJnZSBmaWxlIHN5c3RlbXMuCisKK0ZpeCBhIGJ1ZyB3aGljaCBjb3VsZCBjYXVzZSByZXNpemUyZnMgdG8gZ2V0IGNvbmZ1c2VkIGFuZCBwcm9kdWNlIGEKK2NvcnJ1cHRlZCBmaWxlIHN5c3RlbSB3aGVuIHNocmlua2luZyBhIGZpbGUgc3lzdGVtIHRoYXQgaGFkIGJlZW4KK3ByZXZpb3VzbHkgZXhwYW5kZWQgYW5kIGNvbnZlcnRlZCB0byB1c2UgdGhlIG1ldGFfYmcgZmlsZSBzeXN0ZW0KK2Zvcm1hdCwgYnV0IHdoaWNoIG5vIGxvbmdlciBuZWVkcyB0byB1c2UgdGhlIG1ldGFfYmcgZmlsZSBzeXN0ZW0KK2Zvcm1hdCBhbnkgbG9uZ2VyLiAgVGhpcyB0eXBpY2FsbHkgaGFwcGVuZWQgd2l0aCBsYXJnZSAoPiAxNlRCKSBmaWxlCitzeXN0ZW1zLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzU2OTIyKQorCitUaGUgZTRkZWZyYWcgcHJvZ3JhbSB3aWxsIG5vdyBkZWZyYWcgYmFja3dhcmRzLWFsbG9jYXRlZCBmaWxlcy4KKworRml4IHR1bmUyZnMgdXBkYXRpbmcgVVVJRCdzIHdoZW4gbWFuaXB1bGF0aW5nIGZpbGUgc3lzdGVtcyB3aXRoCitleHRlcm5hbCBqb3VybmFscyAoYm90aCB0aGUgZmlsZSBzeXN0ZW0gYW5kIGpvdXJuYWwgVVVJRCkuCisKK0ZpeCB0dW5lMmZzIHNvIGl0IGNhbiByZW1vdmUgYW4gZXh0ZXJuYWwgam91cm5hbCBmb3IgZmlsZSBzeXN0ZW1zIHdpdGgKK2EgMWsgYmxvY2sgc2l6ZS4KKworQWRkIGEgbmV3IGRlYnVnZnMgY29tbWFuZCwgImlub2RlX2R1bXAiLCB3aGljaCBwcmludHMgdGhlIGlub2RlIGluIGhleAorYW5kIEFTQ0lJIGZvcm1hdC4KKworVGhlIGRlYnVnZnMncyAic2V0X2lub2RlX2ZpZWxkIiB3aWxsIG5vdyBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlIGJsb2NrcworZm9yIGluZGlyZWN0IGJsb2NrcyBhbmQgZXh0ZW50IHRyZWUgYmxvY2tzLgorCitGaXggZGVidWdmcydzICJzZXRfaW5vZGVfZmllbGQiIHNvIGNhbiBwcm9wZXJseSBoYW5kbGUKKyJibG9ja1tJTkR8RElORHxUSU5EXSIuCisKK1RoZSBkZWJ1Z2ZzICJyZHVtcCIgY29tbWFuZCB3aWxsIG5vdyB0YWtlIG11bHRpcGxlIHNvdXJjZSBhcmd1bWVudHMuCisKK0ZpeGVkIGEgZG91YmxlIGNsb3NlKDIpIGJ1ZyBpbiAicmR1bXAiIGFuZCAicmR1bXAgLXAiLgorCitGaXggZGVidWdmcydzIGFyZ3VtZW50IHBhcnNpbmcgZm9yIHRoZSBmcmVlZnJhZyBjb21tYW5kLgorCitGaXggZmlsZWZyYWcgdG8gcHJvcGVybHkgaGFuZGxlIHVzaW5nIHRoZSBGSUJNQVAgaW9jdGwgKHdpdGggLUIpLgorKEFkZHJlc3NlcyBMYXVuY2hwYWQgQnVnOiAjMTM1NjQ5NikKKworQ2xhcmlmaWVkIG1lc3NhZ2VzIHRoYXQgd2VyZSBjb25mdXNpbmcgdXNlcnMgaW4gZGVidWdmcywgZTJmc2NrLAorbWtlMmZzLCBhbmQgcmVzaXplMmZzIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM3NTgwMjksICM3NTc1NDMsCisjNzU3NTQ0KQorCitEdW1wZTJmcyB3aWxsIG5vdyBjb21wbGFpbiBpZiBleHRyYSBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIGl0LgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzU4MDc0KQorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3Nlcy1EZWJpYW4tQnVnOiAjNzI2NzYwKQorCitVcGRhdGUgQ3plY2gsIER1dGNoLCBGcmVuY2gsIFBvbGlzaCwgU3BhbmlzaCwgU3dlZWRpc2gsIFVrcmFpbmlhbiwgYW5kCitWaWV0bmFtZXNlIHRyYW5zbGF0aW9ucy4KKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFVuaXggSS9PIGxheWVyIHdpbGwgbm93IHVzZSBwcmVhZFs2NF0vcHdyaXRlWzY0XSB0byByZWR1Y2UgdGhlCitudW1iZXIgb2Ygc3lzdGVtIGNhbGxzIGlzc3VlZC4KKworRml4ZWQgcHJvZmlsZWQgYnVpbGQuCisKK1RoZSBsaWJleHQyZnMgbGlicmFyeSB3aWxsIG5vdyBtb3JlIGVmZmljaWVudGx5IHNwbGl0IGFuIGV4dGVudCB0cmVlCitpbmRleCBibG9jayB3aGVuIGFwcGVuZGluZyB0byBhbiBlbmQgb2YgYSBmaWxlLgorCitGaXhlZCBmcmVlIGJsb2NrIGFjY291bnRpbmcgZm9yIDY0LWJpdCBmaWxlIHN5c3RlbXMuCisKK0FkZCBhIG5ldyBmdW5jdGlvbiBleHQyc19pbm9kZV9zaXplX3NldCgpIHdoaWNoIHRha2VzIGNhcmUgb2YgYWxsIG9mCit0aGUgcmVxdWlyZWQgZmVhdHVyZSBmbGFnIG1vZGlmaWNhdGlvbnMuCisKK1RoZSByZWdyZXNzaW9uIHRlc3RzIG5vIGxvbmdlciByZXF1aXJlIHRoZSBwcmVzZW5jZSBvZiB0aGUgbWQ1c3VtCitwcm9ncmFtLgorCitGaXggYnVpbGQgZmFpbHVyZSBvbiBNSVBTIHBsYXRmb3JtcyBvbiBEZWJpYW4gKEFkZHJlc3NlcyBEZWJpYW4gQnVnOgorIzc1NDYwNSkKKworRml4IHZhcmlvdXMgQ292ZXJpdHkgd2FybmluZ3MgKCMxMjI1MDAzLCAjMTIyOTI0MywgIzEyNTIwMDMpCisKKworRTJmc3Byb2dzIDEuNDIuMTEgKEp1bHkgOSwgMjAxNCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZCBzdXBwb3J0IHNvIHRoYXQgbWtlMmZzIGNhbiBjcmVhdGUgaHVnZWZpbGVzIHNvIHRoYXQgdGhleSBhcmUKK2FsaWduZWQgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGlzaywgaW5zdGVhZCBvZiByZWxhdGl2ZSB0bwordGhlIGJlZ2lubmluZyBvZiB0aGUgcGFydGl0aW9uLCB1c2luZyB0aGUgbWtlMmZzLmNvbmYgY29uZmlndXJhdGlvbgorcGFyYW1ldGVyICJodWdlZmlsZXNfYWxpZ25fZGlzayIuCisKK0ZpeCBhIGJ1ZyB3aGljaCBjYXVzZXMgZTJmc2NrIHRvIGFib3J0IGEgam91cm5hbCByZXBsYXkgb24gYSBmaWxlCitzeXN0ZW0gd2l0aCBiaWdhbGxvYyBlbmFibGVkLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzQ0OTUzKQorCitBZGQgc2FuaXR5IGNoZWNrcyBzbyB0aGF0IG1rZTJmcyB3aWxsIHJlZnVzZSBpbnNhbmVseSBsYXJnZSBmbGV4X2JnCitjb3VudHMgc3BlY2lmaWVkIGJ5IHRoZSAtRyBvcHRpb24uICBJbnNhbmVseSBsYXJnZSBmbGV4X2JnIHNpemVzIGNhbgorcmVzdWx0IGluIGEgZmlsZSBzeXN0ZW0gd2hpY2ggY2FuJ3QgYmUgdW5tb3VudGVkLCBvciB3aXRoIGV4dHJlbWVseQorcGVzc2ltYWwgbWV0YWRhdGEgbGF5b3V0cy4KKworVGhlIG1rZTJmcyBwcm9ncmFtIHdpbGwgcHJvdmlkZSBhIGJldHRlciBtZXRhZGF0YSBsYXlvdXQgZm9yCittb2RlcmF0ZWx5IGxhcmdlIChidXQgYmVsaWV2YWJsZSkgZmxleF9iZyBjb3VudHMsIHN1Y2ggYXMgMTMzLDA3Mi4KKworVGhlIG1rZTJmcyBwcm9nYW0gd2lsbCBhbHNvIGNoZWNrIHRoZSBrZXJuZWwgdmVyc2lvbiBudW1iZXIgdG8KK2RldGVybWluZSB3aGV0aGVyIHRoZSBsYXp5X2l0YWJsZV9pbml0IG9wdGlvbiBpcyBzdXBwb3J0ZWQsIHNvIHRoYXQKK2xhenkgaW5vZGUgdGFibGUgaW5pdGlhbGl6YXRpb24gY2FuIGJlIHVzZWQgZXZlbiBpZiB0aGUgZXh0NCBpcworY29tcGlsZWQgYXMgYSBtb2R1bGUgd2hpY2ggaXNuJ3QgbG9hZGVkIGF0IHRoZSB0aW1lIHRoYXQgbWtlMmZzIGlzCitydW4uCisKK0FkZCBkZXNjcmlwdGlvbiBvZiBleHQ0J3MgbW91bnQgb3B0aW9ucyB0byB0aGUgZXh0NCBzZWN0aW9uIDUgbWFuCitwYWdlLgorCitJbXByb3ZlIHRoZSBjaGF0dHIgbWFuIHBhZ2UgYW5kIGNsZWFuIHVwIHRoZSBjaGF0dHIgdXNhZ2UgbWVzc2FnZS4KKworRTJmc2NrIHdpbGwgbm93IGF1dG9tYXRpY2FsbHkgZml4IGEgbGFzdCBtb3VudCB0aW1lIG9yIGxhc3Qgd3JpdGUgdGltZQord2hpY2ggaXMgaW4gdGhlIGZ1dHVyZSBpbiBwcmVlbiBtb2RlLCBpbnN0ZWFkIG9mIGFib3J0aW5nIHRoZSBmc2NrCitjaGVjay4KKworTWtlMmZzIHdpbGwgbm93IGNoZWNrIHRoZSBmaWxlIHN5c3RlbSByZXZpc2lvbiBudW1iZXIgcmVxdWVzdGVkIGJ5IHRoZQorY29tbWFuZCBsaW5lLCBhbmQgcmVqZWN0IGl0IGlmIGl0IGlzIHRvbyBsYXJnZS4gIEEgZmlsZSBzeXN0ZW0gd2l0aCBhbgordW5zdXBwb3J0ZWQgcmV2aXNpb24gbnVtYmVyIHdpbGwgbm90IGJlIGFjY2VwdGVkIGJ5IGFueSBvZiB0aGUgb3RoZXIKK2ZpbGUgc3lzdGVtIHRvb2xzLCBhbmQgdGhpcyBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIHJhcmVseSB1c2VkLCBzbworbGV0J3MgdHJ5IHRvIGhlbHAgdGhlIHVzZXIgbm90IHNob290IHRoZWlyIG93biBmb290IG9mZi4KKworVGhlIGRlYnVnZnMgcHJvZ2FtIGNhbiBub3cgc2V0IHRoZSBlcnJvciBjb3VudCBhbmQgYXNzb2NpYXRlZAorZmlyc3RfZXJyb3IgYW5kIGxhc3RfZXJyb3IgZmllbGRzIGluIHRoZSBzdXBlcmJsb2NrIHVzaW5nIHRoZQorc2V0X3N1cGVyX3ZhbHVlIGNvbW1hbmQuCisKK1Jlc2l6ZTJmcyB3aWxsIG5vdCB0cnkgdG8gY2FsY3VsYXRlIHRoZSBtaW5pbXVtIHNpemUgb2YgYSBmaWxlIHN5c3RlbQoraWYgaXQgY29udGFpbnMgZXJyb3JzLiAgT3RoZXJ3aXNlIGEgdmVyeSBiYWRseSBjb3JydXB0ZWQgZmlsZSBzeXN0ZW0KK2ltYWdlIGNhbiBjYXVzZSB0aGUgbWluaW11bSBzaXplIGNhbGN1bGF0aW9uIHRvIGxvb3AgZm9yd2V2ZXIuICBTaW5jZQorcmVzaXplMmZzIHdpbGwgbm90IGFsbG93IGEgZmlsZSBzeXN0ZW0gbWFya2VkIGFzIGNvbnRhaW5pbmcgZXJyb3JzIHRvCitiZSByZXNpemVkLiAgSXQncyBwb2ludGxlc3MgdG8gY2FsY3VsYXRlIHRoZSBtaW5pbXVtIHNpemUsIHNvIGp1c3QKK3NraXAgaXQuCisKK0ZpeGVkIGEgdHlwbyBpbiBvbmUgb2YgbWtlMmZzJ3MgZXJyb3IgbWVzc2FnZS4KKworSWYgZmlsZWZyYWcgcnVucyBpbnRvIGFuIGVycm9yLCBpdCB3aWxsIGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhlIHJlc3QKK29mIHRoZSBmaWxlcyBzcGVjaWZpZWQgb24gdGhlYyBvbW1hbmQgbGluZSwgYnV0IHRoZW4gZXhpdCB3aXRoIGFuCitlcnJvciBjb2RlLgorCitGaWxlZnJhZyBub3cgcHJpbnRzIHNvbWUgYWRkaXRpb25hbCBuZXcgZmxhZ3MgKHN1Y2ggYXMKK0ZJRU1BUF9FWFRFTlRfRU5DT0RFRCksIGFuZCBwcmludCB1bmtub3duIGZsYWdzIGFzIGhleCB2YWx1ZXMuCisKK0ZpeGVkIHN1cHBvcnQgaW4gZmlsZWZyYWcgZm9yIGZpbGVzIHdpdGggPiAyKiozMiBibG9ja3Mgb24gMzItYml0CitwbGF0Zm9ybXMuCisKK0ZpeGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gZGVidWdmcyB3aGVuIGNvcHlpbmcgZmlsZXMuCisKK0ZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIDEuNDIuMTAgd2hpY2ggY2F1c2VkIG1rZTJmcyB0byBmYWlsCit0byBjcmVhdGUgZmlsZSBzeXN0ZW1zIGxhcmdlciB0aGFuIDJHQiBvbiAzMi1iaXQgcGxhdGZvcm1zLgorKEFkZHJlc3NlcyBSZWQgSGF0IEJ1Z3ppbGxhOiAjMTA5OTg5MiwgRGViaWFuIEJ1ZzogIzc1MjEwNykKKworQWRkIEVzcGFyYW50byBhbmQgVWtyYWluaWFuIHRyYW5zbGF0aW9ucywgYW5kIHVwZGF0ZSBDemVjaCwgRHV0Y2gsCitGcmVuY2gsIEdlcm1hbiwgSXRhbGlhbiwgUG9saXNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UKK3RyYW5zbGF0aW9ucy4KKworRml4ZWQgdmFyaW91cyBjb21waWxlciB3YXJuaW5ncy4KKworCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZ2NjICItY2hlY2tlciIgb3B0aW9uIGhhcyBiZWVuIGxvbmcgZGVwcmVjYXRlZCwgc28gcmVtb3ZlIHN1cHBvcnQKK2Zyb20gZTJmc3Byb2dzLiAgSXQgd2FzIGNhdXNpbmcgYSBmZXcgcGVvcGxlIHRvIGJlIGNvbmZ1c2VkIHdoZW4gdGhleQordHJpZWQgZW5hYmxpbmcgdGhlIGNvbmZpZ3VyZSBvcHRpb24uCisKK1VwZGF0ZSB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbmZpZy5zdGF0dXMgYW5kIGNvbmZpZy5ycGF0aAorZmlsZXMsIGFzIHdlbGwgYXMgbmV3ZXIgdmVyc2lvbnMgb2YgdGhlIGF1dG9jb25mIGZpbGVzIGluIGFjbG9jYWwubTQuCitBbHNvLCBtb3ZlIHRoZSBlMmZzcHJvZ3Mtc3BlY2lmaWMgbWFjcm9zIHRvIGFjaW5jbHVkZS5tNCwgd2hpY2ggYWxsb3dzCitwZW9wbGUgd2hvIHdhbnQgdG8gdXNlIGF1dG9yZWNvbmYgdG8gZG8gc28uCisKK01ha2UgdGhlIHVzZSBvZiBzdHJwdGltZSgpIGZ1bmN0aW9uIGluIGRlYnVnZnMgdG8gYmUgbW9yZSBwb3J0YWJsZSB0bworZml4IHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcyBmb3IgRnJlZUJTRCBhbmQgTWFjT1MuCisKK0EgZmV3IG1pc2NlbGxhbmVvdXMgY2hhbmdlcyBkZXNpZ25lZCB0byBtYWtlIGxpZmUgZWFzaWVyIGZvcgordHJhbnNsYXRvcnMuCisKK0ZpeCB0aGUgZl9xdW90YSB0ZXN0IGFuZCBzb21lIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBpZiBxdW90YSBzdXBwb3J0CitpcyBub3QgZW5hYmxlZC4KKworRml4IGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQsIHdoaWNoIGdvdCBicm9rZW4gaW4gMS40Mi4xMC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzc1MzM3NSkKKworRGVsZXRlIGxpYi9leHQyX3R5cGVzLmggb24gYSBtYWtlIGNsZWFuLCBhbmQgYnVpbGQgaXQgYXMgbmVjZXNzYXJ5LgorCitBZGQgYSBkZWJ1ZyBwcm9ncmFtIHVzZWQgZm9yIGxpYmV4dDJmcyB1bml0IHRlc3RzLgorCitDbGVhbiB1cCB0aGUgdGVzdHMgc28gdGhhdCBpdCBhdm9pZHMgdXNpbmcgR05VLXNwZWNpZmljIGJlaGF2aW91ciBpbgorbWt0ZW1wLiAgTWFrZSBzdXJlIHRoZSB0ZW1wb3JhcnkgZmlsZXMgYXJlIGNsZWFuZWQgdXAgaWYgdGhlIHRlc3RzIGFyZQoraW50ZXJydXB0ZWQuCisKK0FkZCBhIG5ldyBleHQyZnNfY2xvc2VfZnJlZSgpIGhlbHBlciBmdW5jdGlvbiB3aGljaCBhdXRvbWF0aWNhbGx5Cit0YWtlcyBjYXJlIG9mIGZyZWVpbmcgdGhlIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSBldmVuIGlmIGV4dDJmc19jbG9zZSgpCityZXR1cm5zIGFuIGVycm9yLgorCisKK0UyZnNwcm9ncyAxLjQyLjEwIChNYXkgMTgsIDIwMTQpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNa2UyZnMgbm93IGNyZWF0ZXMgZmlsZSBzeXN0ZW1zIGluIHJlZ3VsYXIgZmlsZXMgKHdoaWNoIGlzIHZlcnkgb2Z0ZW4KK3VzZWQgd2hlbiBtYWludGFpbmluZyB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2VzKSB3aXRob3V0IHJlcXVpcmluZyB0aGUKK3VzZXIgdG8gdXNlIHRoZSBmb3JjZSBvcHRpb24uICBJbiBhZGRpdGlvbiwgdGhlIG1rZTJmcyBvdXRwdXQgaGFzIGJlZW4KK21hZGUgbXVjaCBsZXNzIHZlcmJvc2UgYW5kIG9ubHkgZGlzcGxheXMgaW5mb3JtYXRpb24gdGhhdCB1c2VycyB3aWxsCitiZSBtb3JlIGxpa2VseSB0byBmaW5kIHVzZWZ1bCBieSBkZWZhdWx0LgorCitNa2UyZnMgbm93IHdpbGwgYXNrIHRoZSB1c2VyIHRvIGNvbmZpcm0gdGhhdCB0aGV5IHdhbnQgdG8gY29udGludWUKK2JlZm9yZSB3aXBpbmcgb3V0IGEgcHJlLWV4aXN0aW5nIGZpbGUgc3lzdGVtLCBwYXJ0aXRpb24gdGFibGUsIG9yIExWTQorcGh5c2ljYWwgdm9sdW1lLgorCitNa2UyZnMgbm93IGhhcyB0aGUgYWJpbGl0eSB0byBjcmVhdGUgZmlsZSBzeXN0ZW1zIHdoZXJlIGFsbCB0aGUKK21ldGFkYXRhIGlzIGxvY2F0ZWQgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBkZXZpY2UuICBUaGlzIGNhbiBiZQordXNlZnVsIGZvciBmbGFzaCBkZXZpY2VzIHdoaWNoIGhhdmUgU0xDIGZsYXNoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCitkaXNrLCBmb3IgRkFUIGNvbXBhdGliaWxpdHksIGZvciBleGFtcGxlLiAgQXMgcGFydCBvZiB0aGlzLCBta2UyZnMgYW5kCit0dW5lMmZzIGNhbiBjb250cm9sIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGF0YSBibG9ja3MgdXNlZCBieSB0aGUKK2pvdXJuYWwgaW5vZGUuICBJbiBhZGRpdGlvbiwgdGhlIG5ldyBzcGFyc2Vfc3VwZXIyIGZlYXR1cmUgYWxsb3dzIGZvcgorZXZlbiBmZXdlciAoYW55d2hlcmUgZnJvbSB6ZXJvIHRvIHR3bykgYmFja3VwIHN1cGVyYmxvY2tzLgorCitNa2UyZnMgbm93IHVzZXMgbXVjaCBsZXNzIENQVSB3aGVuIGFsbG9jYXRpbmcgdGhlIGJsb2NrcyB1c2VkIGZvciB2ZXJ5CitsYXJnZSBmaWxlIHN5c3RlbXMuCisKK01rZTJmcyBjYW4gbm93IHN1cHBvcnQgY3JlYXRpbmcgYSBmaWxlIHN5c3RlbSBhdCBhbiBvZmZzZXQuICBUaGlzIGNhbgorYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBkaXNrIGltYWdlIGZvciB2aXJ0dWFsIG1hY2hpbmVzIChBZGRyZXNzZXMKK0RlYmlhbiBCdWc6ICM0OTc5ODQpCisKK1ByZXZpb3VzbHksIGUyZnNjayBoYWQgYSBudW1iZXIgb2YgdmVyeSBzZXJpb3VzIGJ1Z3Mgd2hlbiBjaGVja2luZyBhCitmaWxlIHN5c3RlbSB3aWNoIHVzZWQgdGhlIG5ldyB0aGUgcXVvdGEgZmlsZSBzeXN0ZW0gb3B0aW9uICh3aGVyZSB0aGUKK3F1b3RhIGlub2RlcyB3ZXJlIHN0b3JlZCBpbiBoaWRkZW4gaW5vZGVzKSBhbmQgdGhlIHF1b3RhIGlub2RlIHdhcworaW5jb25zaXN0ZW50IHdpdGggdGhlIGFjdHVhbCB1c2FnZSBkYXRhLiAgVGhpcyBwcm9ibGVtIHdhcyBkb2N1bWVudGVkCitpbiBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9RdW90YS4gIFRoZXNlIHByb2JsZW1zIGhhdmUKK2JlZW4gZml4ZWQgaW4gMS40Mi4xMCwgc28gdGhlIHF1b3RhIHNob3VsZCBiZSBzYWZlIHRvIHVzZSB3aXRoCitlMmZzcHJvZ3MgMS40Mi4xMC4KKworRml4ZWQgaW4gYSBidWcgaW4gcmVzaXplMmZzIHdoaWNoIGNvdWxkIGNhdXNlIHNocmluayBvcGVyYXRpb24gZmFpbCBpbgordGhlIHVubGlrZWx5IHNpdHVhdGlvbiB3aGVuIHRoZSBpbm9kZSB0YWJsZSBuZWVkcyB0byBiZSBtb3ZlZCB0byBhCitsb2NhdGlvbiBiZWZvcmUgdGhlIGN1cnJlbnQgbG9jYXRpb24uCisKK1Jlc2l6ZTJmcyBub3cgaGFzIGEgbXVjaCBtb3JlIGFjY3VyYXRlIChhbmQgbGVzcyBjb25zZXJ2YXRpdmUpCitlc3RpbWF0aW9uIG9mIGhvdyBmYXIgdGhlIGZpbGUgc3lzdGVtIGNhbiBiZSBzaHJ1bmsuICBUaGlzIGFsbG93cyBhCittb3N0bHkgZW1wdHkgZmlsZXN5c3RlbSB3aGljaCBpcyBhIGZldyB0ZXJhYnl0ZXMsIHRvIGJlIHNocnVuayB0byBhCitmZXcgbWVnYWJ5dGVzIGluIGEgc2luZ2xlIHJlc2l6ZTJmcyAtTSBvcGVyYXRpb24uCisKK0UyZnNjayB3aWxsIG5vdyBmb3JjZSBhIGZ1bGwgZmlsZSBzeXN0ZW0gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBmaWxlCitzeXN0ZW0gaW5jb25zaXN0ZW5jaWVzIGRldGVjdGVkIGluIHRoZSBzdXBlciBibG9jay4KKworVGhlIGZpbGVmcmFnIHByb2dyYW0gd2lsbCBub3cgZGlzcGxheSBodGUgc2hhcmVkIGV4dGVudCBmbGFnLCB3aGljaCBpcwordXNlZCBieSBmaWxlIHN5c3RlbXMgc3VjaCBhcyBidHJmcy4KKworSWYgdGhlIG51bWJlciBvZiBpbm9kZXMgaW4gdGhlIGZpbGUgc3lzdGVtcyBpcyBsYXJnZXIgdGhhbiB0aGUgdGltZQordGhhdCBmaWxlIHN5dGVtIHdhcyBjcmVhdGVkIChhcyBtZWFzdXJlZCBieSB0aGUgbnVtYmVyIG9mIHNlY29uZHMKK3NpbmNlIEphbnVhcnkgMSwgMTk3MCkgZTJmc2NrIHdvdWxkIHByaW50IGEgc2NhcnkgKGJ1dCBvdGhlcndpc2UKK2hhcm1sZXNzKSB3YXJuaW5nIG9mIGZpbGUgc3lzdGVtIGNvcnJ1cHRpb24gZm9yIGVhY2ggaW5vZGUgaW4gdGhlCitvcnBoYW4gbGlzdC4gIFRoaXMgZmFsc2UgcG9zaXRpdmUgaGFzIGJlZW4gZml4ZWQuCisKK1RoZSBlNGRlZnJhZyBwcm9ncmFtIGhhcyBiZWVuIGZpeGVkIHNvIGl0IHdpbGwgbm8gbG9uZ2VyIHJlZnVzZSB3aXRoCitmaWxlc3lzdGVtIHdpdGggdGhlIDY0LWJpdCBvciB0aGUgYmlnYWxsb2MgZmVhdHVyZSBlbmFibGVkLgorCitUaGUgbG9nc2F2ZSBwcm9nYW0gd2lsbCBwcmludCBhIG11Y2ggbGVzcyBzY2FyeSBtZXNzYWdlIHdoaWNoIGNvdWxkCitsZWFkIHVzZXJzIHRvIGJlbGlldmUgc29tZXRoaW5nIGhhcyBnb25lIHZlcnkgd3Jvbmcgd2l0aCBlMmZzY2sgZXhpdHMKK3dpdGggYSBub24temVybyBleGl0IHN0YXR1cyAoc2luY2UgdGhpcyBpcyBub3JtYWwgYWZ0ZXIgZTJmc2NrIGhhcworYXV0b21hdGljYWxseSBmaXhlZCBhIGZpbGUgc3lzdGVtIGNvcnJ1cHRpb24gZHVyaW5nIGEgcHJlZW4KK29wZXJhdGlvbikuICAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDY4ODIxKQorCitXaGVuIGNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2hpY2ggaXMgbGFyZ2VyIHRoYW4gMTZUQiwgdGhlCityZXNpemVfaW5vZGUgb3B0aW9uIG11c3QgYmUgZGlzYWJsZWQgLS0gc2luY2UgdGhlIHJlc2l6ZV9pbm9kZSBzaW1wbHkKK2RvZXNuJ3Qgc3VwcG9ydCByZXNlcnZpbmcgbWV0YWRhdGEgYmxvY2sgbnVtYmVycyB3aGljaCBpcyBsYXJnZXIgdGhhbgorMzIgYml0cy4gIFRoZSBta2UyZnMgcHJvZ3JhbSBkb2VzIHRoaXMgYXV0b21hdGljYWxseSBpZiB0aGUgZmlsZQorc3lzdGVtIHNpemUgaXMgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5LiAgSXQgd2lsbCBub3cgYWxzbyBkbyB0aGlzIGlmCit0aGUgZmlsZSBzaXplIGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LgorCitGaXhlZCBidWdzIGFzc29jaWF0ZWQgd2l0aCByZXNpemUyZnMgYW5kIHNocmlua2luZyBiaWdhbGxvYyBmaWxlCitzeXN0ZW1zLgorCitUaGUgZTJmc2NrIHByb2dyYW0gd2lsbCBubyBsb25nZXIgdHJ5IHRvIGFkZCBhIFVVSUQgb24gYSBtb3VudGVkIGZpbGUKK3N5c3RlbSB3aXRoIGNoZWNrc3VtcyBlbmFibGVkLCBzaW5jZSB0aGlzIGNvdWxkIGxlYXZlIHRoZSBmaWxlIHN5c3RlbQorY2hlY2tzdW1zIGJyb2tlbi4KKworVHVuZTJmcyB3aWxsIGFsbG93IHRoZSByZW1vdmFsIG9mIGFuIGV4dGVybmFsIGpvdXJuYWwgZnJvbSBmaWxlIHN5c3RlbQord2hpY2ggaXMgbWFya2VkIGFzIG5lZWRpbmcgdGhlIGpvdXJuYWwgcmVwbGF5ZWQgd2hlbiB0aGUgZm9yY2UgKCItZiIpCitvcHRpb24gaXMgZ2l2ZW4gdHdpY2UuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM1NTkzMDEpCisKK1R1bmUyZnMgd2lsbCBubyBsb25nZXIgc3VwcG9ydCBlbmFibGluZyBzcGFyc2Vfc3VwZXIgaWYgdGhlIG1ldGFfYmcKK2ZpbGUgc3lzdGVtIGZlYXR1cmUgaXMgZW5hYmxlZCwgc2luY2UgaXQgY291bGQgcmVzdWx0IGluIGRhdGEgbG9zcy4KK0luIHByYWN0aWNlLCBhbGwgbW9kZXJuIGZpbGUgc3lzdGVtcyBoYXZlIHNwYXJzZV9zdXBlciBpcyBlbmFibGVkLCBzbworaXQncyBub3Qgd29ydGggdHJ5aW5nIHRvIGNoYW5nZSBob3cgdHVuZTJmcyBoYW5kbGVzIGVuYWJsaW5nIHRoZQorc3BhcnNlX3N1cGVyIGZlYXR1cmUuCisKK0ZpeGVkIHN1cHBvcnQgZm9yIDFrIGJsb2NrIGZpbGUgc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUuCisKK1doZW4gdGhlIHN1cGVyYmxvY2sgaXMgY29ycnVwdCwgZTJmc2NrIGNhbid0IGZpZ3VyZSBvdXQgdGhlIGxvY2F0aW9uCitvZiB0aGUgYWx0ZXJuYXRlIHN1cGVyYmxvY2suICBVbmZvcnR1bmF0ZWx5LCB0aGUgcm91dGluZSB0aGF0CitjYWxjdWxhdGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgYWx0ZXJuYXRlIHN1cGVyYmxvY2sgdXNlcyA4MTkzIGlmIGl0CitjYW4ndCBmaWd1cmUgdGhpcyBvdXQsIHNvIHRoZSBtZXNzYWdlIHByaW50ZWQgYnkgZTJmc2NrIGFsd2F5cworc3VnZ2VzdHMgdXNpbmcgImUyZnNjayAtYiA4MTkzIi4gIFRoaXMgbWVzc2FnZSBoYXMgYmVlbiBmaXhlZCB0bworc3VnZ2VzdCBib3RoIHRoZSBzdXBlcmJsb2NrIGxvY2F0aW9uIG9mIDgxOTMgYW5kIGFuZCAzMjc2OC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzcxOTE4NSkKKworVGhlIGxvb2tiYWNrIG1vdW50IGRldGVjdGlvbiBjb2RlIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gMS40Mi45IHdhc24ndAorYWN0dWFsbHkgY29tcGlsZWQgaW4gZHVlIHRvIGFuIGF1dG9jb25mIG9vcHMsIHNvIGl0J3MgZml4ZWQgbm93IGluCisxLjQyLjEwLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDk3OTg0KQorICAgIAorQSBidWcgaW50cm9kdWNlZCBpbiAxLjQyLjkgd291bGQgY2F1c2UgZGVidWdmcyB0byBwcmludCB0d28gZXJyb3IKK21lc3NhZ2VzIGlmIGl0IGZvdW5kIGFuIGVycm9yIHdoaWxlIHBhcnNpbmcgYSB1c2VyLXN1cHBsaWVkIGJsb2NrCitudW1iZXIuICBUaGlzIGhhcyBiZWVuIGZpeGVkIGluIDEuNDIuMTAuCisKK1VwZGF0ZSBDemVjaCwgRHV0Y2gsIEZyZW5jaCwgR2VybWFuLCBQb2xpc2gsIFNwYW5pc2gsIFN3ZWVkaXNoLCBhbmQKK1ZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNzAzMDQ4KQorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzcxOTE4OSwKKyM3MTkxODQpCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIFBhY2thZ2luZyBJc3N1ZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3MTg3MjUpCisKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgYSBsb3Qgb2YgY292ZXJpdHksIHNwYXJjZSBnY2MgLVdhbGwsIGFuZCBjbGFuZyB3YXJuaW5ncy9uaXRzLgorCitBbGxvdyB0aGUgbG9jYXRpb24gb2YgcGtnLWNvbmZpZyBmaWxlcyB0byBiZSBzcGVjaWZpZWQgaW5kZXBlbmRlbnQgb2YKK3RoZSBsaWJkaXIgbG9jYXRpb24gdmlhIGEgbWFrZWZpbGUgdmFyaWFibGUuCisKK0ZpeGVkIHBhcnNlLXR5cGVzLnNoIG5vdCB0byBjb21wbGFpbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBhbmQgdGhlCitzaXplcyBvZiB0eXBlcyBhcmUgZGlmZmVyZW50IGJldHdlZW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgYW5kIHRoZQorYXJjaGl0ZWN0dXJlIG9mIHRoZSBidWlsZCBzeXN0ZW0KKworQWxsb3cgdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSB0byB3b3JrIGNvcnJlY3RseSBvbiBzeXN0ZW1zIHdoaWNoIGRvCitub3QgaGF2ZSB0aGUgInRydW5jYXRlIiBvciAibWtzYXdwIiBwcm9ncmFtcy4KKworQWxsb3cgZTJmc2NrIHRvIGJ1aWxkIGNvcnJlY3RseSBvbiBzeXN0ZW1zIChzdWNoIGFzIEFuZHJvaWQpIHRoYXQgZG8KK25vdCBoYXZlIHRoZSBzaWduYWwuaCBmaWxlLgorCitFMmZzcHJvZ3Mgbm93IGhhcyBjb2RlIGNvdmVyYWdlIHRlc3Rpbmcgd2hpY2ggY2FuIGJlIGVuYmxlZCB1c2luZworImNvbmZpZ3VyZSAtLWVuYWJsZS1nY292Ii4KKworVGhlIGxpYmUycC5oIGhlYWRlciBmaWxlIGNhbiBub3cgYmUgdXNlZCBpbmNsdWRlZCBieSBDKysgcHJvZ3JhbXMuCisKK1RoZSBwcm9maWxlL2NvbmZpZyBmaWxlIHVzZWQgYnkgZTJmc2NrIGFuZCBta2UyZnMgd2lsbCBpbnRlcnByZXQKK251bWJlcnMgd2l0aCBhIGxlYWRpbmcgMCBjaGFyYWN0ZXIgdG8gbWVhbiB0aGF0IHRoZXkgc2hvdWxkIGJlCitpbnRlcnByZXRlZCBhcyBhbiBvY3RhbCBpbnRlZ2VyLgorCitUaGUgZXh0ZW50IGhhbmRsaW5nIGZ1bmN0aW9ucyBpbiBsaWJleHQyZnMgaGF2ZSBiZWVuIGltcHJvdmVkIHNvIHRoZXkKK2hhdmUgcHJvcGVyIHJvbGxiYWNrIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3Igc3BsaXR0aW5nIGFuIGV4dGVudC4gIEFsc28KK2ZpeCBhIG51bWJlciBvZiBidWdzIHdoZW4gcHVuY2hpbmcgaG9sZXMgaW4gZmlsZXMsIGFuZCBmaXggYW4KK29mZi1ieS1vbmUgYnVnIHdoZW4gaW5zZXJ0aW5nIGFuIGV4dGVudCBpbnRvIGFuIGVtcHR5IGlub2RlLgorCitUaGUgbGliZXh0MmZzIGxpYnJhcnkgbm93IGhhbmRsZXMgdGhlIHN1cHBvcnQgb2YgQkxPQ0tfVU5JTklUIGJ5CitjbGVhcmluZyB0aGUgcG9ydGlvbiBvZiBibG9jayBiaXRtYXAgd2hlbiBpdCBpcyBsb2FkZWQsIGluc3RlYWQgb2YKK3doZW4gaXQgaXMgdXNlZC4gIFRoaXMgcmVkdWNlcyB0aGUgY2hhbmNlcyBvZiBidWdzLCBhbmQgYW5kIHNpbXBsaWZpZXMKK3RoZSBjb2RlLiAgSXQgYWxzbyBtZWFucyB0aGF0IGRlYnVnZnMgd2lsbCBwcm9wZXJseSBzaG93IHRoYXQgYmxvY2tzCitpbiB1bmluaXRpYWxpemVkIGJsb2NrIGdyb3VwcyBhcyBiZWluZyB1bnVzZWQgd2hlbiB1c2luZyB0aGUgdGVzdGIKK2NvbW1hbmQuCisKK1RoZSBlNGRlZnJhZyBwcm9ncmFtIHdpbGwgdHJ5IHRvIHVzZSBmYWR2aXNlNjQgb3IgcG9zaXhfZmFkdmlzZTY0KCkgaWYKK2l0IGlzIHByZXNlbnQsIHdoaWNoIGFsbG93cyA2NC1iaXQgb2Zmc2V0cyBvbiAzMi1iaXQgc3lzdGVtcy4KKworCitFMmZzcHJvZ3MgMS40Mi45IChEZWNlbWJlciAyOCwgMjAxMykKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNa2UyZnMgd2lsbCBkZXRlY3QgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSBmaWxlIHN5c3RlbSBvbiBhIGxvb3AKK21vdW50ZWQgZmlsZSBhbmQgY29tcGxhaW4gd2l0aG91dCB0aGUgLUZGIG9wdGlvbi4gIEFsc28gZml4ZWQgbWtlMmZzCitzbyBpdCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGEgZmlsZSBzeXN0ZW0gb24gYSBtb3VudGVkIGRldmljZSB3aXRoCit0d28gLUYgb3B0aW9ucywgYXMgZG9jdW1lbnRlZCBpbiB0aGUgbWFuIHBhZ2UsIGluc3RlYWQgb2YgdGhyZWUgLUYKK29wdGlvbnMuCisKK0ZpeGVkIGEgbGFyZ2UgbnVtYmVyIG9mIGJ1Z3MgaW4gcmVzaXplMmZzLCBlMmZzY2ssIGRlYnVnZnMsIGFuZAorbGliZXh0MmZzIHRvIGNvcnJlY3RseSBoYW5kbGUgYmlnYWxsb2MgYW5kIDY0LWJpdCBmaWxlIHN5c3RlbXMuICBUaGVyZQord2VyZSBtYW55IGNvcm5lciBjYXNlcyB0aGF0IGhhZCBub3QgYmVlbiBub3RpY2VkIGluIHByZXZpb3VzIHVzZXMgb2YKK3RoZXNlIGZpbGUgc3lzdGVtcywgc2luY2UgdGhleSBhcmUgbm90IGFzIGNvbW1vbi4gIFNvbWUgb2YgdGhlIGJ1Z3MKK2NvdWxkIGNhdXNlIGZpbGUgc3lzdGVtIGNvcnJ1cHRpb24gb3IgZGF0YSBsb3NzLCBzbyB1c2VycyBvZiA2NC1iaXQgb3IKK2JpZ2FsbG9jIGZpbGUgc3lzdGVtcyBhcmUgc3Ryb25nbHkgdXJnZWQgdG8gdXBncmFkZSB0byBlMmZzcHJvZ3MKKzEuNDIuOS4KKworVGhlIHR1bmUyZnMgcHJvZ3JhbSB3aWxsIG5vdyBub3QgYWxsb3cgY2hhbmdpbmcgdGhlIHV1aWQgb24gYSBtb3VudGVkCitmaWxlIHN5c3RlbSB3aGljaCBoYXMgdGhlIHVuaW5pdF9iZyBmZWF0dXJlIGVuYWJsZWQuICBUaGlzIGF2b2lkcyBhCituYXN0eSByYWNlIHdoZXJlIHRoZSBrZXJuZWwgYW5kIHR1bmUyZnMgYXJlIGJvdGggcmV0cnlpbmcgcmV3cml0ZSB0aGUKK2dyb3VwIGRlc2NyaXB0b3JzIGF0IHRoZSBzYW1lIHRpbWUsIHdpdGggZGlmZmVyZW50IGlkZWFzIGFib3V0IHdoYXQKK3RoZSBVVUlEIHNob3VsZCBiZS4KKworV2hlbiBlMmZzY2sgaXMgcmVoYXNoaW5nIGFuIGV4dGVudC1tYXBwZWQgZGlyZWN0b3J5LCBpdCdzIHBvc3NpYmxlCisoYWx0aG91Z2ggdmVyeSByYXJlKSB0aGF0IGFuIGV4dGVudCBibG9jayB3aWxsIG5lZWQgdG8gYmUgYWxsb2NhdGVkOworZml4IGUyZnNjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYmxvY2sgZ2V0cyBtYXJrZWQgYXMgdXNlZC4KKworTWtlMmZzIHdpbGwgbm93IHByb3Blcmx5IHNldCB0aGUgTEFSR0VfRklMRSBmZWF0dXJlIHdoZW4gY3JlYXRpbmcgYQoram91cm5hbCA+PSAyR0IgLS0tIHdoaWNoIGNhbiBoYXBwZW4gd2hlbiB1c2luZyA2NGsgYmxvY2sgc2l6ZS4KKworRml4ZWQgZGVidWdmcyBzbyB0aGF0IGl0cyBmcmVlaSBjb21tYW5kIHdpbGwgY29ycmVjdGx5IGhhbmRsZSBhIHJlcXVlc3QKK3RvIGZyZWUgYSByYW5nZSBvZiBjb25zZWN1dGl2ZSBpbm9kZXMuCisKK0ZpeGVkIDJmc2NrIHNvIGl0IHdpbGwgbm90IGVycm9uZW91c2x5IGNvbXBsYWluIHRoYXQgYW4gZXh0ZXJuYWwgam91cm5hbAoraXMgaW52YWxpZCBpZiBpdCBpcyBleGFjdGx5IDIqKjMyIGJsb2Nrcy4KKworRml4ZWQgZTJmc2NrIHNvIGl0IHdvbid0IHRyeSBjaGVja2luZyBmb3IsIGFuZCBhZGRpbmcsIGEgbWlzc2luZworbG9zdCtmb3VuZCBkaXJlY3Rvcnkgd2hlbiBydW5uaW5nIGluIHJlYWQtb25seSBtb2RlLgorCitGaXhlZCBlMmltYWdlIHNvIHRoYXQgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gd29uJ3QgZ2V0IGxlYWtlZCB0byBzdGRvdXQuCisoQWRkcmVzc2VzIFJlZCBIYXQgQnVnemlsbGE6ICMxMzI3MzI5KQorCitGaXhlZCBlMmltYWdlIHRvIGF2b2lkIHNvbWUgYnVmZmVyIG92ZXJydW5zIHdoaWNoIHdvdWxkIGNhdXNlIGl0IHRvIHdoZW4KK2NyZWF0aW5nIGEgInN0YW5kYXJkIChub24tcmF3LCBub24tcWNvdzIpIGltYWdlIGZpbGUuICBTdGFuZGFyZAorZTJpbWFnZSBmaWxlcyBhcmUgYWN0dWFsbHkgdmVyeSByYXJlbHkgdXNlZCwgc28gd2UgZGlkbid0IG5vdGljZSB3aGVuCit0aGUgY2hhbmdlcyB0byBlbmFibGUgdGhlIHFjb3cyIGZvcm1hdCBicm9rZSB0aGlzIGUyaW1hZ2UgbW9kZS4KKworRml4ZWQgbWtlMmZzIHNvIHRoYXQgdGhlIGV4dGVuZGVkIG9wdGlvbiAiLUUgcmVzaXplPU5OTiIgd2lsbCBub3QgdHVybgorb24gdGhlIHJlc2l6ZV9pbm9kZSBmZWF0dXJlIHdoZW4gdGhlIG1ldGFfYmcgZmVhdHVyZSBpcyBzZXQsIHNpbmNlCit0aGVzZSB0d28gZmVhdHVyZXMgY2FuIG5vdCBiZSBzZXQgYXQgdGhlIHNhbWUgdGltZS4KKworRml4ZWQgdHVuZTJmcyBzbyB0aGF0IHdoZW4gaXQgZGlzYWJsZXMgdGhlIHF1b3RhIGZlYXR1cmUsIGl0IHVwZGF0ZXMgYWxsCitvZiB0aGUgYmFja3VwIHN1cGVyYmxvY2tzLgorCitGaXhlZCBkdW1wZTJmcyB0aGF0IHdvdWxkIGNhdXNlIGl0IHRvIGFib3J0IHdoZW4gcnVuIHVzaW5nIGFuIGltYWdlIGZpbGUKK3doZW4gdHJ5aW5nIHRvIHByaW50IHRoZSBqb3VybmFsIGluZm9ybWF0aW9uICh3aGljaCBpcyBub3QgcHJlc2VudCBpbgorYW4gZTJpbWFnZSBjcmVhdGVkIGltYWdlIGZpbGUpLgorCitGaXhlZCBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGluIGUycmVlZnJhZy4KKyhBZGRyZXNzZXMtRGViaWFuLUJ1ZzogIzcxODIwNSkKKworRW5oYW5jZSBkZWJ1Z2ZzIHNvIHRoYXQgd2hlbiBjb3B5aW5nIGEgc3BhcnNlIGZpbGUgZnJvbSBhIG5hdGl2ZSBmaWxlCitzeXN0ZW0gaW50byB0aGUgZmlsZSBzeXN0ZW0gaW1hZ2UgdXNpbmcgdGhlICJ3cml0ZSIgY29tbWFuZCwgaXQgd2lsbAorY3JlYXRlIGEgc3BhcnNlIGZpbGUgaW50byB0aGUgZGVzdGluYXRpb24gZmlsZSBzeXN0ZW0uCisKK0VuaGFuY2VkIGRlYnVnZnMgc28gaXQgY2FuIHN1cHBvcnQgYSBjb21tYW5kIGxpbmUgd2hpY2ggaXMgdXAgdG8gOGsKK2xvbmcuCisKK0UyaW1hZ2Ugd2lsbCByZWZ1c2UgKHVubGVzcyB0aGUgLWYgb3B0aW9uIGlzIHNwZWNpZmllZCB0byBmb3JjZSB0aGUKK2lzc3VlKSB0byBjcmVhdGUgYSByYXcgb3IgcWNvdyBpbWFnZSB1c2luZyBhIG1vdW50ZWQgZmlsZSBzeXN0ZW0sCit1bmxlc3MgdGhlIC1mIG9wdGlvbiBpcyBzcGVjaWZpZWQgdG8gZm9yY2UgdGhlIGlzc3VlLgorCitFMmltYWdlIGhhcyBiZWVuIG9wdGltaXplZCBmb3IgdXNpbmcgaXQgdG8gZWZmaWNpZW50bHkgY29weSBhIGZpbGUKK3N5c3RlbSBieSBvbmx5IGNvcHlpbmcgdGhlIGFsbG9jYXRlZCBibG9ja3MsIGJ5IHVzaW5nIHRoZSBvcHRpb25zIC1yYS4KK05ldyBvcHRpb25zICgtbyBhbmQgLU8pIGhhdmUgYmVlbiBhZGRlZCBzbyB0aGF0IGEgc291cmNlIGFuZAorZGVzdGluYXRpb24gb2Zmc2V0IGNhbiBiZSBnaXZlbi4gIFRoZSAtcCBvcHRpb24gd2lsbCBwcmludCBwcm9ncmVzcworaW5mb3JtYXRpb24gc28gdGhlIHVzZXIgd2lsbCBrbm93IGhvdyBmYXIgYWxvbmcgdGhlIGNvcHkgaXMgZ29pbmcuCitBbmQgZmluYWxseSwgdGhlIG5ldyBvcHRpb24gLWMgaXMgdXNlZnVsIGZvciB1cGRhdGluZyBhIGZpbGUgc3lzdGVtIG9uCithbiBTU0QsIGJ5IGF2b2lkaW5nIHVubmVjZXNzYXJ5IHdyaXRlcy4gIEUyaW1hZ2UgY2FuIGFsc28gc2hpZnQgYSBmaWxlCitzeXN0ZW0gaW1hZ2UgYnkgZG9pbmcgYW4gaW4gcGxhY2UgbW92ZS4KKworRml4IGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIDEuNDIuOCB3aGljaCB3b3VsZCBjYXVzZSBlMmZzY2sgdG8KK2Vycm9uZW91c2x5IHJlcG9ydCB1bmluaXRpYWxpemVkIGV4dGVudHMgcGFzdCB0aGUgRU9GIChhcyBkZXRlcm1pbmVkIGJ5CitpX3NpemUpIHRvIGJlIGludmFsaWQuCisKK0ZpeGVkIHJlc2l6ZTJmcyBzbyB1bmRlciBhIGNvcm5lciBjYXNlIHdoZW4gYW4gaW5vZGUgaGFzIGEgY29tcGxleAorZXh0ZW50IHRyZWUsIGl0IHdpbGwgbm90IGNvcnJ1cHQgYW4gaW50ZXJpb3Igbm9kZSBpbiB0aGUgZXh0ZW50IHRyZWUuCisKK0ZpeGVkIHJlc2l6ZTJmcyB3aGljaCB3b3VsZCBzb21ldGltZXMgY29ycnVwdCBhIGZpbGUgc3lzdGVtIHdoZW4KK3Nocmlua2luZyBhIGZpbGUgc3lzdGVtIHRvIGEgbWluaW11bSBzaXplIHVzaW5nIHJlc2l6ZTJmcyAtTS4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzY2MDc5MykKKworRml4ZWQgcmVzaXplMmZzIHNvIHRoYXQgaXQgd2lsbCByZWxvY2F0ZSBpbm9kZSB0YWJsZSBibG9ja3MgaWYgdGhpcworYmVjb21lcyBuZWNlc3Nhcnkgd2hlbiBzaHJpbmtpbmcgdGhlIGZpbGUgc3lzdGVtLgorCitGaXhlZCByZXNpemUyZnMgYW5kIGUyZnNjayBzbyB0aGV5IHdpbGwgbm90IGNyYXNoIHdoZW4gaGl0IGEgZmFpbHVyZQord2hpbGUgb3BlcmF0aW5nIG9uIGEgZmlsZSBzeXN0ZW0gd2l0aCB0aGUgTU1QIGZlYXR1cmUgZW5hYmxlZC4KKworRml4ZWQgYSBidWcgaW4gZGVidWdmcyB3aGljaCBjYXVzZWQgaXQgY3JlYXRlIGFuIGludmFsaWQgaW5vZGUgd2hlbgordHJ5aW5nIHRvIHdyaXRlIGEgemVyby1sZW5ndGggZmlsZS4KKworRTJmc2NrIHdpbGwgbm8gbG9uZ2VyIGNyYXNoIGlmIGl0IHRyaWVzIHRvIGRlbGV0ZSBhbiBpbnZhbGlkCitleHRlbnQtbWFwcGVkIHN5bWxpbmsuCisKK0UyZnNjayB3aWxsIG5vIGxvbmdlciBjcmFzaCBpZiBpdCBjb21lcyBhY3Jvc3MgYW4gZGlyZWN0b3J5IHdoaWNoIGlzCitsYXJnZXIgdGhhbiAyR0IgKHdoaWNoIGlzIG5vdCBhbGxvd2VkIGluIHZhbGlkIGZpbGUgc3lzdGVtcykuCisKK0ZpeGVkIGRlYnVnZnMncyBoZWxwIHRleHRzIHRvIGZ1bGx5IGRvY3VtZW50IGFsbCBvcHRpb25zIGFuZCBvdGhlcndpc2UKK2JlIG1vcmUgaGVscGZ1bC4KKworVXBkYXRlZC9maXhlZCB2YXJpb3VzIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM1ODYyMTgsCisjNjY5NzMwLCAjNjk4MDc2KQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBQYWNrYWdpbmcgSXNzdWVzICgjNjk4ODc5LCAjNzIxMzY1KQorCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeCBzcGFyc2UsIGdjYyAtV2FsbCBhbmQgY2xhbmcgbml0cy4KKworVXBkYXRlIGNvbmZpZy57Z3Vlc3Msc3VifSB0byB0aGUgbGF0ZXN0IHZlcnNpb24KKworRml4ZWQgdmFyaW91cyBtZW1vcnkgYW5kIGZpbGUgZGVzY3JpcHRvciBsZWFrcyBvbiB2YXJpb3VzIGVycm9yIHBhdGhzLAorYXMgd2VsbCBhcyBzb21lIG1pc3NpbmcgZXJyb3IgcmV0dXJuIGNoZWNrcywgd2hpY2ggd2VyZSBmb3VuZCB1c2luZworQ292ZXJpdHkuCisKK1J1biBzcGFyc2UgYWdhaW5zdCBzb3VyY2UgZmlsZXMgd2hlbiBidWlsZGluZyBlMmZzcHJvZ3Mgd2l0aCAnbWFrZQorQz0xJy4gIElmIGluc3RlYWQgQz0yLCBpdCBjb25maWd1cmVzIGJhc2ljIGV4dDIgdHlwZXMgZm9yIGJpdHdpc2UKK2NoZWNraW5nIHdpdGggc3BhcnNlLCB3aGljaCBjYW4gaGVscCBmaW5kIHRoZSAobWFueSBtYW55KSBzcG90cyB3aGVyZQorY29udmVyc2lvbiBlcnJvcnMgYXJlIChwb3NzaWJseSkgaGFwcGVuaW5nLgorCitBbGxvdyB0aGUgcmVncmVzc2lvbiB0ZXN0IHRvIGJlIHJ1biBpbiBjaHJvb3RlZCBlbnZpcm9ubWVudHMgd2hlcmUKKy9ldGMvbXRhYiBtaWdodCBiZSBtaXNzaW5nLgorCitUaGUgZXh0MmZzX3B1bmNoKCkgZnVuY3Rpb24sIHdoaWNoIHdhcyBpbnRyb2R1Y2VkIGluIDEuNDIsIHdhcyBicm9rZW4KK2luIG1hbnkgd2F5cywgYnV0IHRoaXMgd2FzIG5ldmVyIG5vdGljZWQgc2luY2UgaXQgd2Fzbid0IHVzZWQgZm9yCithbnl0aGluZyBzaWduaWZpY2FudC4gIFNvbWUgb2YgdGhlIGJ1Z3MgaW5jbHVkZSBmYWlsaW5nIHdoZW4gdHJ5aW5nIHRvCitwdW5jaCBhIGNvbXBsZXRlbHkgc3BhcnNlIGZpbGUsIGZhaWxpbmcgd2hlbiBwdW5jaGluZyBhbiBleHRlbnQtbWFwcGVkCitpbm9kZSB3aGVuIHRoZSBzdGFydGluZyBibG9jayB3YXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5vZGUsIGFuZAorbm90IGJlaW5nIGFibGUgdG8gcHVuY2ggYSBzaW5nbGUgYmxvY2sgKHdoZXJlIHN0YXJ0X2JsayA9PSBlbmRfYmxvY2spLgorSXQgYWxzbyBkaWRuJ3QgaGFuZGxlIGJlaW5nIHBhc3NlZCBhbiBpbnZhbGlkLCB0b28tbGFyZ2UgZW5kaW5nIGJsb2NrCitudW1iZXIsIGFuZCBkaWRuJ3QgaGFuZGxlIHByb3Blcmx5IHRlcm1pbmF0ZSBhdCB0aGUgcmlnaHQgcGxhY2Ugd2hlbgorb3BlcmF0aW5nIG9uIGFuIGluZGlyZWN0LW1hcHBlZCBpbm9kZS4KKworRml4ZWQgc29tZSBtaW5vciB0eXBvJ3MgaW4gdGhlIGVycm9yIGNhdGFsb2cgZm9yIGxpYmV4dDJmcy4KKworRml4ZWQgZXh0MmZzX2ZpbGVfc2V0X3NpemUyKCkgc28gdGhhdCBpZiBpdCB0cnVuY2F0ZXMgYW4gaW5vZGUgYnkKK3NldHRpbmcgdGhlIGZpbGUgc2l6ZSwgdG8gemVybyB0aGUgcmVzdCBvZiB0aGUgYmxvY2sgdG8gdGhlIGVuZCBvZiB0aGUKK2ZpbGUsIHNvIHRoYXQgaWYgYW4gZXh0NCBGVVNFIGRyaXZlciB0cmllcyB0byBleHRlbmRlZCB0aGUgZmlsZSwgdGhhdAord2UgZG9uJ3QgYXZvaWQgc3RhbGUgZGF0YSBmcm9tIGJlaW5nIHJldHVybmVkLgorCitGaXhlZCBleHQyZnNfYm1hcCgpIHRvIGRpc2FsbG93IGNsaWVudHMgZnJvbSB0cnlpbmcgdG8gbWFwIG9yIHNldAorbG9naWNhbCBibG9ja3Mgd2hpY2ggYXJlIGxhcmdlciB0aGFuIHdoYXQgYW4gZXh0ZW50LW1hcHBlZCBvciBpbmRpcmVjdAorYmxvY2stbWFwcGVkIGlub2RlIGNhbiBhbGxvdy4KKworSWYgZGVidWdmcyAob3Igc29tZSB1c2Vyc3BhY2UgcHJvZ3JhbSB1c2luZyBsaWJleHQyZnMpIGNyZWF0ZXMgYSBmaWxlCit3aGljaCBpcyBsYXJnZXIgdGhhbiAyR0IsIG1ha2Ugc3VyZSB0aGUgbGFyZ2VfZmlsZSBmZWF0dXJlIGZsYWcgZ2V0cworc2V0LgorCitGaXggYSBidWcgaW4gZXh0MmZzX2xpbmsoKSB3aGVyZSBpZiB0aGVyZSBpcyBtdWx0aXBsZSBlbXB0eSBzbG90cyBpbiB0aGUKK2RpcmVjdG9yeSB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoLCB0aGUgZGlyZWN0b3J5IGVudHJ5IGNvdWxkIGdldAoraW5zZXJ0ZWQgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIGRpcmVjdG9yeS4KKworSWYgcXVvdGEgc3VwcG9ydCBpcyBkaXNhYmxlZCAod2hpY2ggaXMgdGhlIGRlZmF1bHQpLCBtYWtlIHN1cmUgdGhhdAorYWxsIHRyYWNlcyBvZiB0aGUgcXVvdGEgc3VwcG9ydCBpcyByZW1vdmVkIGZyb20gdXNhZ2UgbWVzc2FnZXMsIG1hbgorcGFnZXMsIGFuZCB0dW5lMmZzIG11c3Qgbm90IGJlIGFibGUgdG8gZW5hYmxlIHRoZSBxdW90YSBmaWxlIHN5c3RlbQorZmVhdHVyZS4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzEwMTA3MDkpCisKK1RoZSBleHQyZnNfZmlsZV93cml0ZSgpIG5vdyB1cGRhdGVzIGlfc2l6ZSBvbiBhIHN1Y2Nlc3NmdWwgd3JpdGUsCitpbnN0ZWFkIG9mIG9ubHkgdXBkYXRpbmcgaV9zaXplIHdlbiB0aGUgZmlsZSBpcyBjbG9zZWQgdmlhCitleHQyZnNfZmlsZV9jbG9zZSgpLgorCitBZGRlZCBhIHNoZWxsIHNjcmlwdCwgcG9wdWxhdGUtZXh0ZnMuc2ggd2hpY2ggdXNlcyBkZWJ1Z2ZzIHRvIHBvcHVsYXRlCithbiBleHQyLzMvNCBmaWxlIHN5c3RlbSBpbWFnZSBmcm9tIGEgZ2l2ZW4gZGlyZWN0b3J5LiAgSXQgaXMgc2ltaWxhcgordG8gdGhlIGdlbmV4dDJmcyBwcm9ncmFtLCBidXQgaXQgc3VwcG9ydHMgZXh0MyBhbmQgZXh0NCBmaWxlIHN5c3RlbS4KKworQWRkIGNoYW5nZXMgdG8gdGhlIGxpYmV4dDJmcyBsaWJyYXJ5IHRvIHN1cHBvcnQgYmxvY2sgZ3JvdXAKK2Rlc2NyaXB0b3JzIGxhcmdlciB0aGFuIDY0IGJ5dGVzIChmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkpLgorCitGaXhlZCBhbiBvZmYtYnktb25lIGJ1ZyBpbiBleHQyZnNfZmlsZV9zZXRfc2l6ZTIoKSBzbyB0aGF0IGl0IHdpbGwgbm90CitsZWF2ZSBhbiBleHRyYSBibG9jayBpbiB0aGUgZmlsZSB3aGVuIHRydW5jYXRpbmcgdGhlIGZpbGUgZG93biB0bworc2l6ZS4KKworVGhlIGh0bWwgdmVyc2lvbiBpbmZvIHBhZ2VzIGFyZSBub3cgYnVpbHQgdXNpbmcgbWFrZWluZm8gLS1odG1sCitpbnN0ZWFkIG9mIHRoZSB1bm1haW50YWluZWQgYW5kIG5vdy1vYnNvbGV0ZSB0ZXhpMmh0bWwgcHJvZ3JhbS4KKworCitFMmZzcHJvZ3MgMS40Mi44IChKdW5lIDIwLCAyMDEzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQXMgYSBwYXJ0IG9mIG1rZTJmcydzIG9wdGlvbiBwYXJzaW5nIGNsZWFudXAsIHRoZSB1c2Ugb2YgdGhlIC1SIG9wdGlvbgord2lsbCBnaXZlIGEgd2FybmluZyB0aGF0IGl0IGlzIGRlcHJlYXRlZCAoaXQgaGFzIGJlZW4gc28gZG9jdW1lbnRlZAorc2luY2UgMjAwNSkgYW5kIC1FIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKK01rZTJmcyB3aWxsIG5vdCBnaXZlIHdhcm5pbmdzIGFib3V0IHRoZSBiaWdhbGxvYyBhbmQgcXVvdGEgb3B0aW9ucyBpbgorcXVpZXQgbW9kZS4KKworSWYgYW4gaW52YWxpZCBqb3VybmFsIHNpemUgaXMgZ2l2ZW4gdG8gbWtlMmZzLCBpdCB3aWxsIG5vdyBjb21wbGFpbgorYW5kIGV4aXQgc29vbmVyLgorCitEZWJ1Z2ZzIHdhcyBlcnJvbmVvdXNseSBnaXZpbmcgc3B1cmlvdXMgZXJyb3IgbWVzc2FnZXMgZm9yIGNlcnRhaW4KK2V4dGVudF9pbm9kZSBzdWJjb21tYW5kcyB3aGljaCB0YWtlIGFyZ3VtZW50cyAoc3BsaXRfbm9kZSwKK3JlcGxhY2Vfbm9kZSwgYW5kIGluc2VydF9ub2RlKS4gIFRoaXMgaGFzIGJlZW4gZml4ZWQuCisKK0ZpeCB0aGUgcGFyc2luZyBvZiB0aGUgJ3MnIChzZWN0b3JzKSBpbiBwYXJzZV9udW1fYmxvY2tzMiwgd2hpY2ggYW1vbmcKK290aGVyIHByb2dyYW1zIGlzIHVzZWQgYnkgbWtlMmZzLgorCitDaGFuZ2UgbWtlMmZzIHNvIHRoYXQgaXQgZG9lcyBub3Qgc2V0IHRoZSByb290IGRpcmVjdG9yeSB0byB0aGUgcmVhbAordWlkL2dpZCBvZiB0aGUgbWtlMmZzIHByb2Nlc3MuICBBZGQgdGhlIGV4dGVuZGVkIG9wdGlvbiByb290X293bmVyIHRvCitvdmVycmlkZSB0aGlzIGJlaGF2aW9yLgorCitGaXggcmVzaXplMmZzIHdoZW4gc2hyaW5raW5nIGZpbGUgc3lzdGVtcyB0byBtYWtlIHN1cmUgdGhhdCBiaXRtYXAKK2Jsb2NrcyBhcmVuJ3QgbGVmdCBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNocnVua2VuIGZpbGUgc3lzdGVtLgorVGhpcyBjb3VsZCBoYXBwZW4gd2l0aCBmbGV4X2JnIGZpbGUgc3lzdGVtcyB0aGF0IHdlcmUgZ3Jvd24gdXNpbmcKK3RoZSBvbGQgb25saW5lIHJlc2l6aW5nIGFsZ29yaXRobS4KKworRTJmc2NrIHdpbGwgbm93IGRldGVjdCBhbmQgcmVwYWlyIGNvcnJ1cHRlZCBleHRlbnQgdHJlZXMgd2hpY2ggY29udGFpbgoraW52YWxpZCBleHRlbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGV4dGVudCB0cmVlIGxlYWYgYmxvY2suCisKK0UyZnNjayB3aWxsIG5vdyBsb25nZXIgY29tcGxhaW4gYWJvdXQgemVybyBsZW5ndGggZXh0ZW5kZWQgYXR0cmlidXRlCit2YWx1ZXMuCisKK0ZpeCBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBlMmZzcHJvZ3MgdjEuNDIgd2hpY2ggY2F1c2VkIGUyaW1hZ2UgLXMKK3RvIGNyYXNoLgorCitBZGQgc2FmZXR5IGNoZWNrIHNvIHR1bmUyZnMgd2lsbCBub3QgYXR0ZW1wdCB0byBzZXQgdGhlIGlub2RlIHNpemUgdG8KK2JlIGxhcmdlciB0aGFuIHRoZSBibG9jayBzaXplLgorCitGaXggZTJmc2NrIHNvIGl0IGNhbiBjaGVjayBhIHJlYWQtb25seSByb290IGZpbGUgc3lzdGVtIHdpdGggYW4KK2V4dGVybmFsIGpvdXJuYWwuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM3MDcwMzAKKworRml4IG9mZi1saW5lIHJlc2l6aW5nIG9mIGZpbGUgc3lzdGVtcyB3aXRoIGZsZXhfYmcgJiYgIXJlc2l6ZV9pbm9kZQorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNjk2NzQ2KQorCitGaXggZTJpbWFnZSB3aXRoIGxhcmdlICg+IDMyLWJpdCkgZmlsZSBzeXN0ZW1zIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzoKKyM3MDMwNjcpCisKK0VuaGFuY2UgY2hhdHRyIHRvIGFsbG93IGNsZWFyaW5nIHRoZSBleHRlbnQgZmxhZyBpZiB0aGUga2VybmVsIGFsbG93cworbWlncmF0aW5nIGV4dGVudCBiYXNlZCBmaWxlcyB0byB1c2UgaW5kaXJlY3QgYmxvY2tzLgorCitVcGRhdGUgR2VybWFuIHRyYW5zbGF0aW9uLgorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzcxMjQyOSwKKyM3MTI0MzAsICM3MDc2MDkpCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIFBhY2thZ2luZyBJc3N1ZXMgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICM3MDgzMDcpCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZSBzZWN1cmVfZ2V0ZW52KCkgaW4gcHJlZmVyZW5jZSB0byBfX3NlY3VyZV9nZXRlbnYoKS4KKworT3B0aW1pemUgQ1BVIHV0aWxpemF0aW9uIG9mIGV4dDJmc19iZ19oYXNfc3VwZXIoKS4KKworRml4IGV4dDJmc19sbHNlZWsoKSBvbiAzMi1iaXQgaTM4NiBzeXN0ZW1zIHRvIHdvcmsgY29ycmVjdGx5IHdoZW4KK1NFRUtfQ1VSIGlzIHVzZWQgd2l0aCBsYXJnZSBmaWxlcy4KKworVGhlIGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoKSBmdW5jdGlvbiB3aWxsIG5vIGxvbmdlciB1c2UKK2ZzLT5yZWFkX2lub2RlKCkgaWYgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIG1vcmUgdGhhbiB0aGUgYmFzZSAxMjgKK2J5dGUgaW5vZGUgc3RydWN0dXJlIGFuZCB0aGUgaW5vZGUgc2l6ZSBpcyBncmVhdGVyIHRoYW4gMTI4IGJ5dGVzLgorCitGaXggYnVpbGQgZmFpbHVyZSB3aXRoIC0tZW5hYmxlLWpiZC1kZWJ1Zy4KKworQ2xlYW4gdXAgZmlsdGVyaW5nIG9mIG91dHB1dHMgZm9yIHRoZSByZWdyZXNzaW9uIHRlc3RzIGJ5IHVzaW5nIGEKK2NvbW1vbiBzZWQgc2NyaXB0LgorCitGaXggZ2NjIC1XYWxsIGFuZCBjbGFuZyBuaXRzLgorCisKK0UyZnNwcm9ncyAxLjQyLjcgKEphbnVhcnkgMjEsIDIwMTMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZGQgd2FybmluZ3MgdG8gbWtlMmZzLCByZXNpemUyZnMsIGFuZCB0dW5lMmZzIHRoYXQgdGhlIGJpZ2FsbG9jIGFuZAorcXVvdGEgZmVhdHVyZXMgYXJlIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LiAgRm9yIG1vcmUgaW5mb3JtYXRpb24KK3BsZWFzZSBzZWU6CisgICAgKiBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYworICAgICogaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvUXVvdGEKKworQWRkIHNvbWUgbmV3IG9wdGlvbnMgdG8gZmlsZWZyYWcgZnJvbSBMdXN0cmUncyBwYXRjaGVzIHRvIGUyZnNwcm9nczoKKyAgICAqIGFkZCAtayBvcHRpb24gdG8gcHJpbnQgZXh0ZW50cyBpbiBrQi1zaXplZCB1bml0cyAobGlrZSBkZiAtaykKKyAgICAqIGFkZCAtYiB7YmxvY2tzaXplfSB0byBwcmludCBleHRlbnRzIGluIGJsb2Nrc2l6ZSB1bml0cworICAgICogYWRkIC1lIG9wdGlvbiB0byBwcmludCBleHRlbnQgZm9ybWF0LCBldmVuIHdoZW4gRklCTUFQIGlzIHVzZWQKKyAgICAqIGFkZCAtWCBvcHRpb24gdG8gcHJpbnQgZXh0ZW50cyBpbiBoZXhhZGVjaW1hbCBmb3JtYXQKKworRml4IHJlc2l6ZTJmcyBzbyB0aGF0IGl0IGNhbiBoYW5kbGUgb2ZmLWxpbmUgcmVzaXplcyBvZiBmaWxlIHN5c3RlbXMKK3dpdGggdGhlIGZsZXhfYmcgZmVhdHVyZSBidXQgd2l0aG91dCBhIHJlc2l6ZV9pbm9kZSAob3IgaWYgd2UgcnVuIG91dAorb2YgcmVzZXJ2ZWQgZ2R0IGJsb2NrcykuICBUaGlzIGFsc28gZml4ZXMgYSBwcm9ibGVtIHdoZXJlIGlmIHRoZSB1c2VyCitjcmVhdGVzIGEgZmlsZXN5c3RlbSB3aXRoIGEgcmVzdHJpY3RlZCBudW1iZXIgb2YgcmVzZXJ2ZWQgZ2R0IGJsb2NrcywKK2FuIG9mZi1saW5lIHJlc2l6ZSB3aGljaCBncm93cyB0aGUgZmlsZSBzeXN0ZW0gY291bGQgcG90ZW50aWFsbHkKK3Jlc3VsdCBpbiBmaWxlIHN5c3RlbSBjb3JydXB0aW9uLgorCitGaXggYSByZXNpemUyZnMgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGl0IHRvIGNvcnJ1cHQgYmlnYWxsb2MgZmlsZQorc3lzdGVtcyB3aGVuIGRvaW5nIGFuIG9mZi1saW5lIHJlc2l6ZS4KKworRnVydGhlciBvcHRpbWl6ZSByZXNpemUyZnMgc28gaXQgZG9lc24ndCB1c2UgcXVpdGUgYXMgbXVjaCBDUFUgd2hlbgorcmVzaXppbmcgdmVyeSBsYXJnZSBmaWxlIHN5c3RlbXMuIAorCitGaXhlZCAzMi1iaXQgb3ZlcmZsb3cgYnVncyB3aGljaCBjb3VsZCBjYXVzZSByZXNpemUyZnMgdG8gZmFpbCBhbmQKK3Bvc3NpYmx5IGNvcnJ1cHQgdGhlIGZpbGUgc3lzdGVtIHdoaWxlIHJlc2l6aW5nIDY0LWJpdCBmaWxlIHN5c3RlbXMuCisKK0ZpeCBhIGJ1ZyBpbiBta2UyZnMgd2hlcmUgcGFyc2luZyAiLUUgcmVzaXplPU5OTiIgd2lsbCByZXN1bHQgaW4gYQorbWtlMmZzIGNyYXNoIGR1ZSB0byBhIGRpdmlkZS1ieS16ZXJvIGlmIHRoZSA2NGJpdCBmaWxlIHN5c3RlbSBmZWF0dXJlCitpcyBlbmFibGVkLgorCitBZGQgYmV0dGVyIGVycm9yIGNoZWNraW5nIHRvIG1rZTJmcyB0byBjaGVjayBmb3IgaW52YWxpZCBwYXJhbWV0ZXJzCit3aGVuIGNyZWF0aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtLgorCitXaGVuIGNyZWF0aW5nIGJpZ2FsbG9jIGZpbGVzeXN0ZW1zLCB0aGUgLWcgb3B0aW9uIHRvIG1rZTJmcyB3aWxsIG5vdworc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNsdXN0ZXJzIHBlciBibG9jayBncm91cC4KKworQWRkIHRvIGRlYnVnZnMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY29ycnVwdCBhIHNwZWNpZmljIGZpbGUgc3lzdGVtCitibG9jayB2aWEgdGhlICJ6YXBfYmxvY2siIGNvbW1hbmQuCisKK0FkZCB0byBkZWJ1Z2ZzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIHByaW50IG91dCBhIGhleCBkdW1wIG9mIGEgYmxvY2sgaW4KK3RoZSBmaWxlIHN5c3RlbSB2aWEgdGhlICJibG9ja19kdW1wIiBjb21tYW5kLgorCitBZGQgdG8gZGVidWdmcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBtYW5pcHVsYXRlIHRoZSBleHRlbnQgdHJlZQorZGlyZWN0bHkgdmlhIHRoZSAiZXh0ZW50X29wZW4iIGNvbW1hbmQuCisKK0ZpeGVkIGRlYnVnZnMncyBta25vZCBjb21tYW5kIHNvIHRoYXQgaXQgdXBkYXRlcyB0aGUgYmxvY2sgZ3JvdXAKK3N0YXRpc3RpY3MuCisKK0ZpeCBlMmZzY2sgc28gaXQgY2FuIGRldGVjdCBhbmQgZml4IGluY29uc2lzdGVuY2llcyBpbiB0aGUgaW50ZXJpb3IKK25vZGVzIG9mIGFuIGlub2RlJ3MgZXh0ZW50IHRyZWUuCisKK0ZpeCBhIHBvdGVudGlhbCBtZW1vcnkgY29ycnVwdGlvbiBmYWlsdXJlIGluIGUyZnNjaydzIGVycm9yIHBhdGggaWYKK3RoZSBjYWxsIHRvIGV4dDJmc19vcGVuMigpIGZhaWxzLgorCitGaXggZTJmc2NrIGlmIGl0cyBsb2dnaW5nIGZ1bmN0aW9uIGlzIGVuYWJsZWQgaW4gZTJmc2NrLmNvbmYsIGFuZCB0aGUKK3Jlc3VsdGluZyBmaWxlIG5hbWUgZm9yIHRoZSBsb2cgZmlsZSBpcyBsb25nZXIgdGhhbiAxMDAgYnl0ZXMsIHRoYXQgaXQKK3Byb3Blcmx5IGhhbmRsZXMgdGhpcyBzaXR1YXRpb24gaW5zdGVhZCBvZiBjcmFzaGluZy4KKworRTJmc2NrIHdpbGwgbm93IHJlcG9ydCB0aGUgYW1vdW50IG9mIG1lbW9yeSB0aGF0IGl0IGF0dGVtcHRlZCB0bworYWxsb2NhdGUgd2hlbiBhIG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3QgZmFpbHMsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCit0cmFjayBkb3duIHRoZSBwcm9ibGVtLgorCitGaXggbWtlMmZzJ3MgaGFuZGxpbmcgb2YgdGhlIG1tcF91cGRhdGVfaW50ZXJ2YWwgb3B0aW9uLiAgKEFkZHJlc3NlcworTHVzdHJlIEJ1ZzogTFUtMTg4OCkKKworRTJpbWFnZSBjYW4gbm93IGluY2x1ZGUgYWxsIGRhdGEgYmxvY2tzIGluIHRoZSBlMmltYWdlIG91dHB1dCBmaWxlCit3aGVuIHRoZSB1c2VyIHNwZWNpZmllcyB0aGUgLWEgb3B0aW9uLgorCitJZiBlMmZzcHJvZ3MgaXMgY29tcGlsZWQgd2l0aG91dCAtLWVuYWJsZS1xdW90YSwgbWFrZSBzdXJlIHRoYXQKK3R1bmUyZnMgY2FuIG5vdCB0dXJuIG9uIHRoZSBmZWF0dXJlIGZvciBuZXctc3R5bGUgcXVvdGEgc3VwcG9ydCwgc2luY2UKK2FmdGVyd2FyZHMsIG5vbmUgb2YgdGhlIGUyZnNwcm9ncyB0b29scyB3aWxsIGJlIHdpbGxpbmcgdG8gdG91Y2ggdGhhdAorZmlsZSBzeXN0ZW0uCisKK09wdGltaXplIGUyZnNjaydzIHNvIHRoYXQgaXQgdXNlcyBtdWNoIGxlc3MgQ1BVIGZvciBsYXJnZSBmaWxlCitzeXN0ZW1zLiAgVGhpcyBjYW4gcmVzdWx0IGluIHNpZ25pZmljYW50IHNwZWVkdXBzLCBlc3BlY2lhbGx5IG9uCitDUFUtY29uc3RyYWluZWQgc3lzdGVtcy4gIFRoaXMgd2FzIHByaW1hcmlseSBkb25lIGJ5IG9wdGltaXppbmcKK2xpYmV4dDJmcydzIGJpdG1hcCBmdW5jdGlvbnMuICAoQWRkcmVzc2VzIEdvb2dsZSBCdWc6ICM3NTM0ODEzKQorCitGaXggZGVidWdmcydzIGh0cmVlIGNvbW1hbmQgc28gdGhhdCBhbGwgaXRzIG1lc3NhZ2VzIGFyZSBzZW50IHRocm91Z2gKK3RoZSBwYWdlci4KKworRml4ZWQgZGVidWdmcydzICJkdW1wX2ZpbGUiIGFuZCAiY2F0IiBmdW5jdGlvbnMgd29yayBjb3JyZWN0bHkKK29uIGZpbGUgc3lzdGVtcyB3aG9zZSBibG9jayBzaXplIGlzIGdyZWF0ZXIgdGhhbiA4ay4KKworRml4IGUyZnJlZWZyYWcgc28gaXQgd29ya3Mgb24gNjQtYml0IGZpbGUgc3lzdGVtcywgYW5kIHNvIGl0IHVzZXMgbXVjaAorbGVzcyBtZW1vcnkuICAoQWRkcmVzc2VzIEdvb2dsZSBCdWc6IDcyNjk5NDgpCisKK1VwZGF0ZSB0aGUgc3BkX3JlYWRkaXIuYyBmaWxlIGluIHRoZSBjb250cmliIGRpcmVjdG9yeSB0byBpbmNsdWRlIHNvbWUKK2FkZGl0aW9ucyB3aGljaCB3ZXJlIG1hZGUgaW4gMjAwOCB0aGF0IGRpZG4ndCBnZXQgZm9sZGVkIGludG8gdGhlCit2ZXJzaW9uIHdoaWNoIHdlIGNoZWNrZWQgaW50byB0aGUgZTJmc3Byb2dzIHNvdXJjZSB0cmVlLiAgVGhlc2UKK2VuaGFuY2VtZW50cyBpbmNsdWRlIHRocmVhZCBzYWZldHksIHN1cHBvcnQgZm9yIHJlYWRkaXI2NF9yKCksIGFuZAorc2FmZV9nZXRlbnYoKSBzdXBwb3J0IGluIGNhc2Ugc3BkX3JlYWRkaXIuc28gaXMgdXNlZCBmb3Igc2V0dWlkIGJpbmFyaWVzLgorCitVcGRhdGUgQ3plY2gsIER1dGNoLCBGcmVuY2gsIEdlcm1hbiwgUG9saXNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UKK3RyYW5zbGF0aW9ucworCitBZGQgYSBjb21tYW5kIHRvIGRlYnVnZnMgdG8gY3JlYXRlIHN5bWxpbmtzLgorCitEb2N1bWVudCB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpbiB0aGUgbWtlMmZzIG1hbiBwYWdlLiAgKEFkZHJlc3NlcworRGViaWFuIEJ1ZzogIzY2OTczMCkKKworCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggZ2NjIC1XYWxsIG5pdHMuCisKK0ZpeCBhIHNwZWxsaW5nIHR5cG8gaW4gdGhlIGxpYmV4dDJmcyB0ZXhpbmZvIGRvY3VtZW50YXRpb24uCisKK0NoYW5nZSB0aGUgb3V0cHV0IGZyb20gIm1ha2UgY2hlY2siIHNvIHRoYXQgdG9vbHMgc3VjaCBhcyBlbWFjcydzICJNLXgKK2NvbXBpbGUiIGRvZXMgbm90IG1pc3Rha2UgdGhlIG91dHB1dCBhcyBjb250YWluaW5nIGEgY29tcGlsZXIgZXJyb3IuCisKK0V4cG9ydCB0d28gbmV3IGZ1bmN0aW9ucyBmcm9tIGxpYmV4dDJmczogZXh0MmZzX2V4dGVudF9ub2RlX3NwbGl0KCkKK2FuZCBleHQyZnNfZXh0ZW50X2dvdG8yKCkuCisKK1RoZSBleHQyZnNfZXh0ZW50c19maXhfcGFyZW50cygpIHdhcyBmaXhlZCBzbyBpdCBkb2VzIG5vdCBtb2RpZnkgdGhlCitsb2NhdGlvbiBvZiB0aGUgZXh0ZW50IGhhbmRsZSBpZiBpdHMgY3VycmVudCBsb2NhdGlvbiBpcyBhdCBhbgoraW50ZXJpb3Igbm9kZSwgcmF0aGVyIHRoYW4gYSBsZWFmIG5vZGUgb2YgYW4gaW5vZGUncyBleHRlbnQgdHJlZS4KKworQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHRvIGFzc3VyZSB0aGF0IGUyZnNjayBjYW4gY29ycmVjdGx5IGZpeCBhbgoraW5jb25zaXN0ZW50IGludGVyaW9yIG5vZGUgaW4gYW4gaW5vZGUncyBleHRlbnQgdHJlZS4KKworVGhlIGV4dDJmc197bWFyayx1bm1hcmssdGVzdH1fYmxvY2tfYml0bWFwX3JhbmdlMigpIGZ1bmN0aW9ucyBub3cKK2NvcnJlY3RseSBzdXBwb3J0IGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyB3aGljaCB1c2Ugc3RvcmUgYmxvY2sgdXNhZ2UKK2luZm9ybWF0aW9uIGluIHVuaXRzIG9mIGNsdXN0ZXJzLgorCitGaXhlZCB0aGUgaGVscCB0ZXh0IGluIHRoZSBjb25maWd1cmUgc2NyaXB0IGZvciAtLWVuYWJsZS1xdW90YS4KKworVGhlIG02OGstc3BlY2lmaWMgYml0b3BzIGNvZGUgaGFzIGJlZW4gcmVtb3ZlZCBzaW5jZSB0aGV5IHdlcmUKK2luY29ycmVjdGx5IHRyZWF0aW5nIGJpdCBudW1iZXJzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhcyBzaWduZWQKK2ludGVnZXJzLiAgRnVydGhlcm1vcmUsIG1vZGVybiBjb21waWxlcnMgZG8gYSBnb29kIGVub3VnaCBqb2IKK29wdGltaXppbmcgdGhlIGdlbmVyaWMgY29kZSB0aGVyZSBpcyBubyBwb2ludCBpbiBoYXZpbmcgdGhlIG02OGsKK3NwZWNpZmljIGFzbSBzdGF0ZW1lbnRzLgorCitGaXhlZCBob3cgd2UgbGluayB0aGUgdGVzdCBwcm9ncmFtcyBzbyB0aGV5IGFsd2F5cyB1c2UgdGhlIHN0YXRpYworbGlicmFyaWVzLCBzbyB0aGF0IHdlIHRlc3QgdXNpbmcgdGhlIGxpYnJhcmllcyB3aGljaCB3ZSBoYXZlIGp1c3QKK2J1aWx0LgorCitVcGRhdGUgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIHRvIHRoZSBsYXRlc3QgdmVyc2lvbnMgZnJvbSB0aGUgR05VCitwcm9qZWN0LgorCitGaXhlZCB0aGUgY29tX2Vyci50ZXhpbmZvIGZpbGUgc28gdGhhdCBpdCBjYW4gcHJvZHVjZSBhIHZhbGlkCitwb3N0c2NyaXB0L3BkZiBwcmludGVkIG91dHB1dC4KKworQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHdoaWNoIGNoZWNrcyBkZWJ1Z2ZzJ3MgYWJpbGl0eSB0byBjcmVhdGUKK3N5bWxpbmtzLCBuYW1lZCBGSUZPJ3MsIGFuZCBkZXZpY2Ugbm9kZXMuCisKK0FkZCBhIGZ1bmN0aW9uIGV4dDJmc19zeW1saW5rKCksIHdoaWNoIGNyZWF0ZXMgc3ltbGlua3MgdG8gdGhlCitsaWJleHQyZnMgbGlicmFyeS4KKworQWRkIGRlYnVnZ2luZyBjb2RlIHNvIHdlIGNhbiB0ZXN0IG9sZCBrZXJuZWwgaW50ZXJmYWNlcyBmb3Igb25saW5lCityZXNpemUgdG8gcmVzaXplMmZzLiAgVGhpcyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBjaGVja2luZyBpcyBrZXllZAorb2ZmIG9mIHRoZSBSRVNJWkUyRlNfS0VSTkVMX1ZFUlNJT04sIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGFsbG93IHVzIHRvCit0ZXN0IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBrZXJuZWwncyBvbGRlciByZXNpemUgaW9jdGxzIHdpdGhvdXQKK25lZWRpbmcgdG8gaW5zdGFsbCBhbiBvbGQgdmVyc2lvbiBvZiByZXNpemUyZnMsIGFuZCB0byBhbHNvIHRlc3QgYQorbW9kZXJuIHJlc2l6ZTJmcydzIGFiaWxpdHkgdG8gd29yayB3aXRoIG9sZGVyIGtlcm5lbHMgd2l0aG91dCBoYXZpbmcKK3RvIGluc3RhbGwgYW4gb2xkZXIgdmVyc2lvbiBvZiB0aGUga2VybmVsLgorCisKK0UyZnNwcm9ncyAxLjQyLjYgKFNlcHRlbWJlciAyMSwgMjAxMikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiBta2UyZnMgY3JlYXRlcyBmaWxlIHN5c3RlbXMgd2l0aCBsYXp5IGl0YWJsZSBpbml0aWFsaXphdGlvbiwgdGhlCitwcm9ncmVzcyB1cGRhdGVzIGZvciB3cml0aW5nIHRoZSBpbm9kZSB0YWJsZSBoYXBwZW5zIHNvIHF1aWNrbHkgdGhhdAorb24gYSBzZXJpYWwgY29uc29sZSwgdGhlIHRpbWUgdG8gd3JpdGUgdGhlIHByb2dyZXNzIHVwZGF0ZXMgY2FuIGJlIHRoZQorYm90dGxlbmVjay4gIFNvIG1rZTJmcyB3aWxsIG5vdyBvbmx5IHVwZGF0ZSBpdHMgcHJvZ3Jlc3MgaW5kaWNhdG9ycworb25jZSBhIHNlY29uZC4KKworUmVzaXplMmZzIHdpbGwgc2tpcCBpbml0aWFsaXppbmcgdGhlIGlub2RlIHRhYmxlcyBpZiB0aGUga2VybmVsCitzdXBwb3J0cyBsYXp5X2l0YWJsZV9pbml0LCB3aGljaCBzcGVlZHMgdXAgZ3Jvd2luZyBvZmYtbGluZSBncm93dGggb2YKK3VuaW5pdF9iZyBmaWxlIHN5c3RlbXMgc2lnbmlmaWNhbnRseS4gIFJlc2l6ZTJmcyB3aWxsIG5vdyBhbHNvCitjb3JyZWN0bHkgc2V0IHRoZSBpdGFibGVfdW51c2VkIGZpZWxkIGluIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIHRvCitzcGVlZCB1cCB0aGUgZmlyc3QgZTJmc2NrIGFmdGVyIHRoZSBmaWxlIHN5c3RlbSBpcyBncm93bi4KKworUmVzaXplMmZzIGhhcyBiZWVuIGZpeGVkIHNvIHRoYXQgb24tbGluZSByZXNpemluZyBvZiBtZXRhX2JnIGZpbGUKK3N5c3RlbXMgd29yayBjb3JyZWN0bHkuICBUaGlzIGlzIG5lZWRlZCB0byBncm93IGZpbGUgc3lzdGVtIHdoaWNoIGFyZQorbGFyZ2VyIHRoYW4gMTZULgorCitSZXNpemUyZnMgd2lsbCBub3cgY29ycmVjdGx5IGhhbmRsZSByZXNpemluZyBmaWxlIHN5c3RlbXMgdG8gMTZUQiBvbgorMzItYml0IGZpbGUgc3lzdGVtcyB3aGVuICIxNlRCIiBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKworRml4IG1rZTJmcyBzbyB0aGF0IGl0IHdpbGwgYmUgY2FyZWZ1bCB0byBzZXQgdGhlIHJlc2VydmVkIGJsb2NrcyByYXRpbworbGFyZ2VyIHRoYW4gNTAlOyB0aGlzIGNhbiBoYXBwZW4gd2hlbiBjcmVhdGluZyBzbWFsbCBmaWxlIHN5c3RlbXMgYW5kCit3aGVuIHRoZSBsYXN0IGJsb2NrIGdyb3VwIGlzIGRyb3BwZWQgYmVjYXVzZSB0aGVyZSBhcmUgbm90IGVub3VnaAorYmxvY2tzIHRvIHN1cHBvcnQgdGhlIG1ldGFkYXRhIGJsb2NrcyBpbiB0aGUgbGFzdCBibG9jayBncm91cC4KKworRml4ZWQgc3BlbGxpbmcgbWlzdGFrZSBpbiBkZWJ1Z2ZzJ3MgaGVscCBtZXNzYWdlLgorCitGaXhlZCBhIHBvdGVudGlhbCBzZWcgZmF1bHQgaW4gZTJmc2NrIHdoZW4gdGhlcmUgaXMgYW4gSS9PIGVycm9yIHdoaWxlCityZWFkaW5nIHRoZSBzdXBlcmJsb2NrLgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBQYWNrYWdpbmcgSXNzdWVzIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNjc3NDk3KQorCitVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjMzU1OTIxMCkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGNvbmZpZ3VyZSBvcHRpb24gLS1lbmFibGUtcmVsYXRpdmUtc3ltbGluayB3YXMgYnJva2VuIHNvIHRoYXQgaXQKK25lZWRlZCB0byBiZSAtLWVuYWJsZS1zeW1saW5rLXJlbGF0aXZlLXN5bWxpbmtzLiAgV2Ugd2lsbCBzdXBwb3J0IGJvdGgKK2ZvciBhdCBsZWFzdCB0d28geWVhcnMsIGJ1dCB0aGVuIHRoZSB3b3JuZyBjb25maWd1cmUgb3B0aW9uIHdpbGwgYmUKK3JlbW92ZWQuCisKK0ZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIDEuNDIuNSBzbyB0aGUgbGluayBvcmRlciBmb3IKK2UyZnNwcm9ncycgbGlicmFyaWVzIHdpbGwgYmUgY29ycmVjdCBmb3IgYm90aCBzdGF0aWMgYW5kIHNoYXJlZAorbGlua2luZy4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMzU1NDM0NSkKKworQWRkIHN1cHBvcnQgZm9yIGUyZnNwcm9ncyB0byBiZSBjb21waWxlZCB1c2luZyBjbGFuZy9MTFZNLgorCitGaXggcG9ydGFiaWxpdHkgcHJvYmxlbXMgb24gbm9uLUxpbnV4IHN5c3RlbXM6IGF2b2lkIGNvbXBpbGUgZmFpbHVyZXMKK29uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIG1hbGxvYy5oCisKK0ZpeCBmX21tcCByZWdyZXNzaW9uIHRlc3Qgc3VpdGUgc28gdGhhdCBkZWJ1Z2ZzIGdldHMga2lsbGVkIGlmIHRoZQordGVzdCBpcyBpbnRlcnJ1cHRlZC4KKworCisKK0UyZnNwcm9ncyAxLjQyLjUgKEp1bHkgMjksIDIwMTIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBhIGJ1ZyB3aXRoIG1rZTJmcyB3aGVyZSBpZiB0aGVyZSBpcyBvbmx5IDggaW5vZGVzIHBlciBibG9jaworZ3JvdXAsIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIHVuaW5pdGlhbGl6ZWQgaW5vZGVzIGluIHRoZQorZmlyc3QgYmxvY2sgZ3JvdXAgd291bGQgZ28gbmVnYXRpdmUuICBUaGlzIHJlc3VsdGVkIGluICJta2UyZnMgLU4gMjU2CistdCBleHQ0IC90bXAvZm9vLmltZyAyNTZtIiB0cnlpbmcgdG8gd3JpdGUgc28gbWFueSBibG9ja3MgdGhhdCAvdG1wCit3b3VsZCBydW4gb3V0IG9mIHNwYWNlLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMzNTI4ODkyKQorCitGaXhlZCBhIGJ1ZyBpbiBob3cgZTJmc2NrIHdvdWxkIHVuaXF1aWZ5IGRpcmVjdG9yeSBlbnRyeSBuYW1lcy4KKyhBZGRyZXNzZXNTb3VyY2Vmb3JnZSBCdWc6ICMzNTQwNTQ1KQorCitQcmV2aW91c2x5LCBlMmZzY2sgd291bGQgb25seSBhbGxvdyBhIG1vdW50ZWQgZmlsZSBzeXN0ZW0gdG8gYmUKK2NoZWNrZWQgaWYgaXQgd2FzIHRoZSByb290IGZpbGUgc3lzdGVtIGFuZCBpdCB3YXMgbW91bnRlZCByZWFkLW9ubHkuCitOb3cgaXQgd2lsbCBhbGxvdyBhbnkgZmlsZSBzeXN0ZW0gbW91bnRlZCByZWFkLW9ubHkgdG8gYmUgY2hlY2tlZCBpZgordGhlIC1mIG9wdGlvbiBpcyBzcGVjaWZpZWQuICBUaGlzIG1ha2VzIGl0IGVhc2llciB0byB0ZXN0IGhvdyBlMmZzY2sKK2hhbmRsZXMgY2hlY2tpbmcgZmlsZSBzeXN0ZW1zIHdoaWNoIGFyZSBtb3VudGVkIHdpdGhvdXQgaGF2aW5nIHRvIHRlc3QKK29uIHRoZSByb290IGZpbGUgc3lzdGVtLgorCitGaXhlZCBhIHByb2JsZW0gaWYgZTJmc2NrIHdoZXJlIGlmIHRoZSByb290IGZpbGUgc3lzdGVtIGlzIG1vdW50ZWQKK3JlYWQtb25seSwgZTJmc2NrIHdvdWxkIG5vdCBjbGVhciBhbiBlcnJvciBpbmRpY2F0aW9uIGluIHRoZSBqb3VybmFsCitzdXBlcmJsb2NrLiAgQ29tYmluZWQgd2l0aCBhIGtlcm5lbCBidWcsIHRoaXMgd291bGQgY2F1c2UgdGhlIGUyZnNjawordG8gY2hlY2sgdGhlIGZpbGUgc3lzdGVtIGFmdGVyIGV2ZXJ5IHNpbmdsZSBib290LgorCitUaGUgZTRkZWZyYWcgcHJvZ3JhbSBjYW4gbm93IGhhbmRsZSBkZXZpY2Ugc3ltbGlua3MsIHN1Y2ggYXMKKy9kZXYvbWFwcGVyL3Rlc3R2Zy10ZXN0bHYsIGluc3RlYWQgb2YgaW5zaXN0aW5nIG9uIGEgbGVzcworaHVtYW4tZnJpZW5kbHkgbmFtZSBzdWNoIGFzIC9kZXYvZG0tMi4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYToKKyM3MDcyMDkpCisKK0ZpeGVkIGZpbGVmcmFnIHNvIGl0IHdpbGwgbm90IGNyYXNoIHdpdGggYSBzZWdmYXVsdCBvbiBmaWxlcyBmcm9tIGEKK3ZpcnR1YWwgZmlsZSBzeXN0ZW0gc3VjaCBhcyAvcHJvYy4gIChlLmcuLCAiZmlsZWZyYWcKKy9wcm9jL3BhcnRpdGlvbnMiKQorCitGaXhlZCBmaWxlZnJhZyBzbyB0aGF0IGl0IGNvcnJlY3RseSByZXBvcnRzIHRoZSBudW1iZXIgb2YgZXh0ZW50cy4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzg0MDg0OCkKKworRml4ZWQgYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBsb2dzYXZlIHdoaWNoIGNvdWxkIGNhdXNlIGl0IHRvIGhhbmcuCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM2ODI1OTIpCisKK0ZpeGVkIGUyZnNjayBzbyB0aGF0IHRoZSBmaWxlIHN5c3RlbSBpcyBtYXJrZWQgYXMgY29udGFpbmluZyBhbiBlcnJvcgoraWYgdGhlIHVzZXIgY2hvb3NlcyBub3QgdG8gZml4IHRoZSBxdW90YSB1c2FnZSBpbmZvcm1hdGlvbi4KKworRml4ZWQgdHVuZTJmcyBzbyB0aGF0IGl0IGNvcnJlY3RseSByZW1vdmVzIHRoZSBxdW90YSBmZWF0dXJlIHdoZW4gdGhlCitsYXN0IHF1b3RhIGlub2RlIGlzIHJlbW92ZWQuCisKK0ZpeCB0dW5lMmZzIHNvIHRoYXQgYWZ0ZXIgcmVtb3ZpbmcgYSBxdW90YSBpbm9kZSwgdGhlIGJsb2NrIGJpdG1hcCBpcwordXBkYXRlZDsgb3RoZXJ3aXNlLCBlMmZzY2sgd291bGQgY29tcGxhaW4gYWZ0ZXIgcnVubmluZyAndHVuZTJmcyAtTworXnF1b3RhIDxkZXY+Jy4KKworRml4IHR1bmUyZnMgc28gdGhhdCB3aGVuIGNvbnZlcnRpbmcgYSBmaWxlIHN5c3RlbSBmcm9tIHVzaW5nIGxlZ2FjeQorcXVvdGEgZmlsZXMgdG8gdGhlIG5ldyBxdW90YSBmaWxlIHN5c3RlbSBmZWF0dXJlIHdpdGggaGlkZGVuIHF1b3RhCitmaWxlcywgdGhlIGFjY291bnRpbmcgZm9yIHRoZXNlIGZpbGVzIGlzIGhhbmRsZWQgY29ycmVjdGx5IHNvIHRoYXQKK2UyZnNjayBkb2Vzbid0IGNvbXBsYWluLgorCitJbXByb3ZlZCBlMmZzY2sncyB2ZXJib3NlIHJlcG9ydGluZyBzdGF0aXN0aWNzLCBhbmQgYWxsb3cgdGhlIG1vcmUKK3ZlcmJvc2UgcmVwb3J0aW5nIHRvIGJlIGVuYWJsZWQgdmlhIC9ldGMvZTJmc2NrLmNvbmYuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIFBhY2thZ2luZyBJc3N1ZXMgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICM2NzgzOTUpCisKK1VwZGF0ZWQvZml4ZWQgdmFyaW91cyBtYW4gcGFnZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNjgwMTE0KQorCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIHBvcnRhYmlsaXR5IHByb2JsZW1zIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zIChlLmcuLCBIdXJkIGFuZAorRnJlZUJzZCkgY2F1c2VkIGJ5IHRoZSBhdHRlbXB0ZWQgaW5jbHVzaW9uIG9mIDxzeXMvcXVvdGEuaD4uCisKK01ha2Ugc3VyZSB0aGF0IHNoYXJlZCBsaWJyYXJpZXMgbGluayB3aXRoIHRoZSBzaGFyZWQgbGlicmFyaWVzIGJ1aWx0CitpbiB0aGUgYnVpbGQgdHJlZSwgaW5zdGVhZCBvZiB0aGUgc3lzdGVtIHByb3ZpZGVkIGxpYnJhcmllcy4KK1ByZXZpb3VzbHksIGxpYnJhcmllcyBhbmQgZXhlY3V0YWJsZXMgd2VyZSBsaW5rZWQgd2l0aCB0aGUgc3lzdGVtCitsaWJyYXJpZXMgaWYgcHJlc2VudCwgYW5kIHBvc3NpYmx5IHVzaW5nIHN0YXRpYyBhcmNoaXZlcyBpbnN0ZWFkIG9mCitzaGFyZWQgbGlicmFyaWVzLiAgVGhpcyB3YXMgYWxzbyBwcm9ibGVtYXRpYyBzaW5jZSBpZiBsaWJleHQyZnMuc28gaXMKK2xpbmtlZCB3aXRoIGEgc3RhdGljIGxpYmNvbV9lcnIuYSBmcm9tIHN5c3RlbSwgdGhlIGJ1aWxkIHN5c3RlbSB3b3VsZAorYXR0ZW1wdCB0byBsaW5rIHdpdGhvdXQgLWxwdGhyZWFkLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjMzU0MjU3MikKKworCitFMmZzcHJvZ3MgMS40Mi40IChKdW5lIDEyLCAyMDEyKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZWQgbW9yZSA2NC1iaXQgYmxvY2sgbnVtYmVyIGJ1Z3MgKHdoaWNoIGNvdWxkIGVuZCB1cCBjb3JydXB0aW5nCitmaWxlIHN5c3RlbXMhKSBpbiBlMmZzY2ssIGRlYnVnZnMsIGFuZCBsaWJleHQyZnMuCisKK0ZpeGVkIGUyZnNjaydzIGhhbmRsaW5nIG9mIHRoZSBqb3VybmFsJ3Mgc19lcnJubyBmaWVsZC4gIEUyZnNjayB3YXMKK25vdCBwcm9wZXJseSBwcm9wYWdhdGluZyB0aGUgam91cm5hbCdzIHNfZXJybm8gZmllbGQgdG8gdGhlIHN1cGVyYmxvY2sKK2ZpZWxkOyBpdCB3YXMgbm90IGNoZWNraW5nIHRoaXMgZmllbGQgaWYgdGhlIGpvdXJuYWwgaGFkIGFscmVhZHkgYmVlbgorcmVwbGF5ZWQsIGFuZCBpZiB0aGUgam91cm5hbCAqd2FzKiBiZWluZyByZXBsYXllZCwgdGhlICJlcnJvciBiaXQiCit3YXNuJ3QgZ2V0dGluZyBmbHVzaGVkIG91dCB0byBkaXNrLgorCitGaXhlZCBhIGZhbHNlIHBvc2l0aXZlIGNvbXBsYWludCBieSBlMmZzY2sgaWYgYWxsIG9mIHRoZSBleHRlbnRzIGluCit0aGUgbGFzdCBleHRlbnQgdHJlZSBibG9jayBhcmUgdW5pbml0YWxpemVkIGFuZCBsb2NhdGVkIGFmdGVyIHRoZSBlbmQKK29mIHRoZSBmaWxlIGFzIGRlZmluZWQgYnkgaV9zaXplLgorCitUaGUgZHVtcGUyZnMgd2lsbCBub3cgZGlzcGxheSB0aGUgam91cm5hbCdzIHNfZXJybm8gZmllbGQgaWYgaXQgaXMKK25vbi16ZXJvLCBhbmQgaXQgd2lsbCBhbHNvIGRpc3BsYXkgdGhlIGpvdXJuYWwncyA2NC1iaXQgZmVhdHVyZSBmbGFnCitpZiBwcmVzZW50LgorCitGaXggZTJmc2NrIHNvIHRoYXQgaXQgYWx3YXlzIG9wZW5zIHRoZSBkZXZpY2UgZmlsZSBpbiBleGNsdXNpdmUgbW9kZQord2hlbiBpdCBtaWdodCBuZWVkIHRvIG1vZGlmeSB0aGUgZmlsZSBzeXN0ZW0sIGFuZCBuZXZlciBpZiB0aGUgLW4KK29wdGlvbiBpcyBzcGVjaWZpZWQuICAoUHJldmlvdXNseSwgdGhlcmUgd2VyZSBhIGZldyBjb3JuZXIgY2FzZXMgd2hlcmUKK2l0IG1pZ2h0IGdldCB0aGluZ3Mgd3JvbmcgaW4gZWl0aGVyIGRpcmVjdGlvbi4pCisKK0UyZnNjayBub3cgY29ycmVjdGx5IHRydW5jYXRlcyBvciBkZWFsbG9jYXRlcyBleHRlbnQtbWFwcGVkIGlub2RlcyBvbgordGhlIG9ycGhhbiBsaXN0LiAgVGhlIHJvb3QgY2F1c2Ugd2FzIGEgYnVnIGluIGxpYmV4dDJmcydzIGJsb2NrCitpdGVyYXRvciB3aGljaCBjb3VsZCBlbmQgdXAgc2tpcHBpbmcgYW4gZXh0ZW50IHdoZW4gdGhlIGxhc3QgYmxvY2sgaW4KK2FuIGV4dGVudCBpcyByZW1vdmVkLCBjYXVzaW5nIHRoZSBjdXJyZW50IGV4dGVudCB0byBiZSByZW1vdmVkIGZyb20KK3RoZSBleHRlbnQgdHJlZS4KKworRTJmc2NrIG5vdyBjb3JyZWN0bHkgc2V0cyB0aGUgZ2xvYmFsIGZyZWUgYmxvY2sgYW5kIGlub2RlIGNvdW50cyB3aGVuCit0cnVuY2F0aW5nIG9yIHJlbW92aW5nIGlub2RlcyBvbiB0aGUgb3JwaGFuIGxpc3QgaW4gcHJlZW4gbW9kZS4KK1ByZXZpb3VzbHksIGl0IHdvdWxkIGxlYXZlIHRoZXNlIHZhbHVlcyB3b3VsZCBiZSBzZXQgaW5jb3JyZWN0bHksCit3aGljaCBpcyBsYXJnZWx5IGEgY29zbWV0aWMgaXNzdWUgc2luY2UgdGhlIGtlcm5lbCBubyBsb25nZXIgcGF5cworYXR0ZW50aW9uIHRvIHRob3NlIGZpZWxkcywgYnV0IGl0IGNhbiBjYXVzZSBzcHVyaW91cyBjb21wbGFpbnRzIGluCitzdWJzZXF1ZW50IGUyZnNjayBydW5zLgorCitGaXggaV9ibG9ja3MgYWNjb3VudGluZyB3aGVuIHRoZSBsaWJleHQyZnMgbGlicmFyeSBuZWVkcyB0byBhZGQgb3IKK3JlbW92ZSBhbiBleHRlbnQgdHJlZSBibG9jayAgb24gYmlnYWxsb2MgZmlsZSBzeXN0ZW1zLgorCitUaGUgbHNhdHRyIGFuZCBjaGF0dHIgcHJvZ3JhbXMgbm93IHN1cHBvcnQgdGhlIE5vX0NPVyBmbGFnIGZvciB0aGUKK2JlbmVmaXQgb2YgYnRyZnMuCisKK0RlYnVnZnMgbm93IGludGVycHJldHMgZGF0ZSBzdHJpbmdzIG9mIHRoZSBmb3JtIEBkZGQgYXMgZGRkIHNlY29uZHMKK2FmdGVyIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVwb2NoLiAgVGhpcyBpcyBoYW5keSB3aGVuIHNldHRpbmcgYW4gaW5vZGUKK251bWJlciBpbnRvIHRoZSBkX3RpbWUgZmllbGQgd2hlbiBkZWJ1Z2dpbmcgb3JwaGFuIGxpc3QgaGFuZGxpbmcuCisKK0ZpeCBhIHByZWNlZGVuY2UgYnVnIHdpdGggYnVpbHQtaW4gcXVvdGEgc3VwcG9ydCB3aGljaCBtaWdodCByZXN1bHQgaW4KK2UyZnNjayBwYXlpbmcgYXR0ZW50aW9uIHRvIHRoZSBxdW90YSBpbm9kZSBmaWVsZCBldmVuIGlmIHRoZSBidWlsdC1pbgorcXVvdGEgZmVhdHVyZSBmbGFnIGlzIG5vdCBzZXQuICBGb3J0dW5hdGVseSwgaW4gcHJhY3RpY2UgdGhhdAorc3VwZXJibG9jayBmaWVsZCBzaG91bGQgYmUgemVybyBmb3Igbm9uLWJ1aWx0LWluIHF1b3RhIGZpbGUgc3lzdGVtcywKK3NvIGl0J3MgdW5saWtlbHkgdGhpcyBidWcgd291bGQgaGF2ZSBjYXVzZWQgcHJvYmxlbXMuCisKK1VwZGF0ZWQvZml4ZWQgdmFyaW91cyBtYW4gcGFnZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNjc0NDUzLAorIzY3NDY5NCkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBjYW4gbm93IHJ1biB0aGUgaW50ZWdyYXRpb24gdGVzdHMgaW4gdGhlCit0ZXN0cyBkaXJlY3RvcnkgaW4gcGFyYWxsZWwsIHZpYSAibWFrZSAtak4gY2hlY2siLgorCitBZGQgbmV3IHRlc3QsIGZfemVyb19leHRlbnRfbGVuZ3RoIHdoaWNoIHRlc3RzIGUyZnNjaydzIGhhbmRsaW5nIG9mCit0aGUgY2FzZSB3aGVyZSBhbGwgb2YgdGhlIGV4dGVudHMgaW4gdGhlIGxhc3QgZXh0ZW50IHRyZWUgYmxvY2sgYXJlCit1bmluaXRpYWxpemVkIGV4dGVudHMgYWZ0ZXIgaV9zaXplLgorCitBZGQgYSBuZXcgdGVzdCwgZl9qbmxfZXJybm8sIHdoaWNoIGNoZWNrcyBoYW5kbGluZyBvZiBhbiBlcnJvcgoraW5kaWNhdGlvbiBzZXQgaW4gdGhlIGpvdXJuYWwgc3VwZXJibG9jay4KKworRml4IHRoZSB0ZXN0IGZfam5sXzY0Yml0IHNvIHRoYXQgaXQgcHJvcGVybHkgY2hlY2tzIGUyZnNjaydzIGhhbmRsaW5nCitvZiBhIDY0LWJpdCBqb3VybmFsLgorCitBZGQgdHdvIHRlc3RzLCBmX29ycGhhbl9pbmRpcmVjdF9pbm9kZSBhbmQgZl9vcnBoYW5fZXh0ZW50X2lub2RlIHdoaWNoCit0ZXN0cyBlMmZzY2sncyBoYW5kbGluZyBvZiBvcnBoYW4gaW5vZGVzIGluIHByZWVuIG1vZGUsIGFuZCB0cnVuY2F0aW9uCitvZiBleHRlbnQgaW5vZGVzIG9uIHRoZSBvcnBoYW4gbGlzdC4KKworRml4ZWQgbW9yZSBPUyBYIHBvcnRhYmlsaXR5IGlzc3Vlcy4KKworCitFMmZzcHJvZ3MgMS40Mi4zIChNYXkgMTQsIDIwMTIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeCBhIGJ1ZyBpbiB0aGUgVW5peCBJL08gbWFuYWdlciB3aGljaCBjb3VsZCBjYXVzZSBjb3JydXB0aW9uIG9mIGZpbGUKK3N5c3RlbXMgd2l0aCBtb3JlIHRoYW4gMTZUQiB3aGVuIGUyZnNwcm9ncyBpcyBjb21waWxlZCBpbiAzMi1iaXQgbW9kZQorKGkuZS4sIHdoZW4gdW5zaWduZWQgbG9uZyBpcyAzMi1iaXRzKS4gIEFsc28gZml4IGEgYnVnIHdoaWNoIGNhdXNlZAorZHVtcGUyZnMgdG8gaW5jb3JyZWN0bHkgZGlzcGxheSBibG9jayBudW1iZXJzID4gMzItYml0cy4KKworSW1wcm92ZSB0aGUgc3VwcG9ydCBmb3IgaW50ZWdyYXRlZCBxdW90YSBmaWxlcyAod2hlcmUgcXVvdGEgaXMgYSBmaXJzdAorY2xhc3Mgc3VwcG9ydGVkIGZlYXR1cmUgdXNpbmcgaGlkZGVuIGZpbGVzIGluIHRoZSBleHQ0IGZpbGUgc3lzdGVtKS4KK1ByZXZpb3VzbHkgdGhlIHF1b3RhIGZpbGUgd2FzIGdldHRpbmcgcmV3cml0dGVuIGV2ZW4gd2hlbiBpdCB3YXMgbm90CituZWNlc3NhcnksIGFuZCBlMmZzY2sgd291bGQgZXJyb25lb3VzbHkgdHJ5IHRvIGhpZGUgcXVvdGEgZmlsZXMgd2hpY2gKK3dlcmUgYWxyZWFkeSBoaWRkZW4uCisKK1F1aWV0IGNvbXBsYWludHMgaW4gZTJmc2NrIHdoZW4gdGhlIHRvdGFsIGZyZWUgYmxvY2tzIG9yIGlub2RlcyBhcmUKK2luY29ycmVjdCBpbiB0aGUgc3VwZXJibG9jayBhZnRlciBhbiBzeXN0ZW0gY3Jhc2gsIHNpbmNlIHdlIGRvbid0Cit1cGRhdGUgbm9yIGRlcGVuZCBvbiB0aGUgc3VwZXJibG9jayBzdW1tYXJpZXMgYXQgZWFjaCBjb21taXQgYm91bmRhcnkuCisKK0ZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIDEuNDIuMiB3aGljaCB3b3VsZCBjYXVzZSBhcHBsaWNhdGlvbnMKK291dHNpZGUgb2YgZTJmc3Byb2dzIHdoaWNoIGRpZCBub3QgcGFzcyB0aGUgRVhUMl9GTEFHXzY0QklUIChhbmQgc28KK3dvdWxkIHdlcmUgc3RpbGwgdXNpbmcgdGhlIGxlZ2FjeSAzMi1iaXQgYml0bWFwcykgdG8gY3Jhc2guICBUaGlzIHdhcworZHVlIHRvIG1pc3NpbmcgMzItYml0IGNvbXBhdCBjb2RlIGluIHNpZGUgdGhlIGZ1bmN0aW9uCitleHQyZnNfZmluZF9maXJzdF96ZXJvX2dlbmVyaWNfYm1hcCgpLiAgKEFkZHJlc3NlcyBSZWQgSGF0IEJ1Z3ppbGxhOgorIzgwODQyMSkKKyAgICAKK0ZpeCBhIGJ1ZyB3aGljaCB3b3VsZCBjYXVzZSBta2UyZnMgdG8gZmFpbCBjcmVhdGluZyB0aGUgam91cm5hbCBpZgorL2V0Yy9tdGFiIGFuZCAvcHJvYy9tb3VudHMgYXJlIG1pc3NpbmcuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzoKKyMzNTA5Mzk4KQorICAgIAorVXBkYXRlZC9maXhlZCB2YXJpb3VzIG1hbiBwYWdlcy4KKworVXBkYXRlIEN6ZWNoLCBEdXRjaCwgRnJlbmNoLCBHZXJtYW4sIFBvbGlzaCwgU3dlZWRpc2gsIGFuZCBWaWV0bmFtZXNlCit0cmFuc2xhdGlvbnMKKworRml4ZWQgdmFyaW91cyBEZWJpYW4gUGFja2FnaW5nIGlzc3Vlcy4KKworCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2UgdGhlIG5vbnNlbnNpY2FsbHkgd3JvbmcgdHlwZXMgaW4gdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSBvZiB0aGUKK2lubGluZSBmdW5jdGlvbiBleHQyZnNfZmluZF9maXJzdF96ZXJvX2Jsb2NrX2JpdG1hcDIoKS4gIFRoaXMgd2FzCitjYXVzZWQgYnkgYSBjdXQgYW5kIHBhc3RlIGVycm9yOyBmb3J0dW5hdGVseSBubyBjb2RlIGluIGUyZnNwcm9ncyB1c2VkCit0aGlzIGlubGluZSBmdW5jdGlvbiwgYW5kIHRoZXJlIGFyZSBhbnkgdXNlcnMgb2YgdGhpcyBmdW5jdGlvbnMKK291dHNpZGUgb2YgZTJmc3Byb2dzLgorCitBZGQgc3VwcG9ydCBmb3Igc3lzdGVtcyB3aGljaCBoYXZlIHZhbGxvYygpLCBidXQgd2hpY2ggZG8gaGF2ZQorcG9zaXhfbWVtYWxpZ24oKSBub3IgbWVtYWxpZ24oKSAoc3VjaCBhcyBNYWNPUyAxMC41KS4KKworUmVmYWN0b3IgYW5kIGNsZWFuIHVwIHRoZSBhbGxvY2F0aW9uIG9mIGFsaWduZWQgYnVmZmVycyBmb3IgRGlyZWN0IEkvTworc3VwcG9ydC4gIFByZXZpb3VzbHkgc29tZSBhbGxvY2F0aW9ucyB3ZXJlIHJlcXVlc3RpbmcgYSBncmVhdGVyCithbGlnbm1lbnQgZmFjdG9yIHRoYXQgd2hhdCB3YXMgc3RyaWN0bHkgbmVjZXNzYXJ5LiAgQWxzbyBvcHRpbWl6ZQorcmVhZGluZyBhbmQgd3JpdGluZyBiaXRtYXBzIHVzaW5nIERpcmVjdCBJL08gd2hlbiB0aGUgc2l6ZSBvZiB0aGUKK2JpdG1hcCBkaWQgbm90IGZ1bGx5IGNvdmVyIHRoZSBmaWxlIHN5c3RlbSBibG9ja3NpemUuCisKK1Jlc2VydmUgdGhlIGNvZGVwb2ludHMgZm9yIHRoZSBJTkNPTVBBVCBmZWF0dXJlcyBMQVJHRURBVEEgYW5kCitJTkxJTkVEQVRBLgorCitJbXByb3ZlZCB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIGJ5IGFkZGluZyBzb21lIG5ldyBpbnRlZ3JhdGlvbgordGVzdHMgKGZfam5sXzMyYml0LCBmX2pubF82NGJpdCkgd2hpY2ggZGV0ZWN0IGJyZWFrYWdlIG9mIHRoZSBvbi1kaXNrCitqYmQyIGZvcm1hdCwgYXMgd2VsbCBhcyBmX2VvZmJsb2NrcyB3aGljaCB0ZXN0cyB0aGUgbmV3IGhhbmRsaW5nIG9mCit1bmluaXRpYWxpemVkIGFuZCBpbml0aWFsaXplZCBibG9ja3MgYmV5b25kIGlfc2l6ZS4gIEFsc28gYWRkIGEgbmV3Cit1bml0IHRlc3Qgd2hpY2ggdmVyaWZpZXMgMzItYml0IGJpdG1hcHMgc3VwcG9ydCBhbmQgdGhlIG5ldworZmluZF9maXJzdF96ZXJvIHByaW1pdGl2ZXMuCisKK0FkZCBhIGZldyBkZXBlbmRlbmNpZXMgdG8gZml4IHBhcmFsbGVsIChtYWtlIC1qKSBidWlsZHMuCisKK1JlbW92ZWQgYmFzaCdpc21zIHdoaWNoIHdlcmUgYnJlYWtpbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBvbgorc3lzdGVtcyB3aGVyZSAvYmluL3NoIGlzIG5vdCBiYXNoLgorCitUaGUgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHRoZSAyMDEyLTAyLTEwCit2ZXJzaW9uLgorICAgIAorRml4IGEgcG9ydGFiaWxpdHkgcHJvYmxlbSBjYXVzZWQgYnkgYXNzdW1pbmcgdGhlIHByZXNlbnQgb2YgbW50ZW50LmgKK21lYW5zIHRoYXQgc2V0bW50ZW50KCkgZXhpc3RzLiAgSW5zdGVhZCwgZXhwbGljaXRseSB0ZXN0IGZvciB0aGlzIGluCit0aGUgY29uZmlndXJlIHNjcmlwdC4KKworSWYgdGhlIHN5cy9zaWduYWwuaCBoZWFkZXIgZmlsZSBkb2VzIG5vdCBleGlzdCwgZG9uJ3QgdHJ5IHRvIGluY2x1ZGUKK2l0LCBzaW5jZSBpdCdzIG5vdCBhdmFpbGFibGUgb24gYWxsIHN5c3RlbXMuCisKK0FkZCBzdXBwb3J0IGZvciBzeXN0ZW1zIHRoYXQgZG8gbm90IHN1cHBvcnQgZ2V0cHd1aWRfcigpCisgICAgCitUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgc3VwcG9ydHMgYSBuZXcgb3B0aW9uLAorLS1lbmFibGUtcmVsYXRpdmUtc3ltbGlua3MsIHdoaWNoIHdpbGwgaW5zdGFsbCByZWxhdGl2ZSBzeW1saW5rcyBmb3IKK3RoZSBFTEYgc2hhcmVkIGxpYnJhcnkgZmlsZXMuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzM1MjA3NjcpLgorICAgIAorV2hlbiBidWlsZGluZyBCU0Qgc2hhcmVkIGxpYnJhcmllcyBtYWtlIHN1cmUgdGhlIExERkxBR1MgdmFyaWFibGUgaXMKK3Bhc3NlZCB0byB0aGUgbGlua2VyLiAgRml4aW5nIHRoaXMgYWxsb3dzLCBmb3IgZXhhbXBsZSwgZTJmc3Byb2dzIHRvCitiZSBidWlsdCBpbiAzMi1iaXQgbW9kZSBvbiBNYWMgT1MgWCBMaW9uIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOgorIzM1MTcyNzIpCisgICAgCitGaXggZ2NjIC1XYWxsIG5pdHBpY2tzCisKKworRTJmc3Byb2dzIDEuNDIuMiAoTWFyY2ggMjcsIDIwMTIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIHJlc2l6ZTJmcyBwcm9ncmFtIHVzZXMgbXVjaCBsZXNzIENQVSBhbmQgaXMgbXVjaCBmYXN0ZXIgZm9yIHZlcnkKK2xhcmdlIGZpbGUgc3lzdGVtcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzY2MzIzNykKKworVGhlIHNldGkgYW5kIGZyZWVpIGNvbW1hbmRzIGluIGRlYnVnZnMgY2FuIG5vdyB0YWtlIGFuIG9wdGlvbmFsIGxlbmd0aAorYXJndW1lbnQgdG8gc2V0IGFuZCBjbGVhciBhIGNvbnRpZ3VvdXMgcmFuZ2Ugb2YgaW5vZGVzLgorCitFMmZzY2sgd2lsbCBub3cgbWFrZSBleHBsaWNpdCBjaGVja3MgZm9yIHRoZSBFT0ZCTE9DS1NfRkwsIHNpbmNlIHdlCitwbGFuIHRvIHJlbW92ZSBzdXBwb3J0IGZvciBpdCBmcm9tIHRoZSBrZXJuZWwgZmlsZSBzeXN0ZW0gZHJpdmVyLiAgSXQKK3JlYWxseSB3YXNuJ3QgdmVyeSB1c2VmdWwgYW5kIHdhcyBjYXVzaW5nIG1vcmUgcHJvYmxlbXMgdGhhbiBpdAorc29sdmVzLiAgU2luY2UgZTJmc2NrIHdpbGwgY29tcGxhaW4gaWYgaW5vZGVzIHRoYXQgc2hvdWxkIGhhdmUKK0VPRkJMT0NLU19GTCBkbyBub3QgaGF2ZSB0aGUgZmxhZyBzZXQsIHdlIGFyZSBnb2luZyB0byByZW1vdmUgdGhpcworY2hlY2sgZnJvbSBlMmZzcHJvZ3MgZmlyc3QsIGFuZCB0aGVuIG9ubHkgcmVtb3ZlIHRoZSBmbGFnIGZyb20gdGhlCitrZXJuZWwgbXVjaCBsYXRlci4KKworVGhlIG1rZTJmcyBwcm9ncmFtIGNhbiBub3cgdXNlIGRpcmVjdCBJL08gdmlhICJta2UyZnMgLUQiLiAgVGhpcyB3aWxsCitzbG93IGRvd24gdGhlIG1rZTJmcywgYnV0IGl0IG1ha2VzIGl0IG1vcmUgcG9saXRlIG9uIGEgbG9hZGVkIHNlcnZlcgorYnkgbGltaXRpbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgdGhhdCBnZXRzIGRpcnRpZWQgYnkgbWtlMmZzIHdoZW4gaXQKK2lzIHVzaW5nIGJ1ZmZlcmVkIEkvTy4KKworRTJmc2NrIHdhcyBuZWVkbGVzc2x5IGNsb3NpbmcgYW5kIHJlLW9wZW5pbmcgdGhlIGZpbGUgc3lzdGVtIGFzIGEgc2lkZQorZWZmZWN0IG9mIGFkZGluZyBNdWx0aXBsZSBNb3VudCBQcm90ZWN0aW9uIChNTVApLiAgVGhpcyBpc24ndAorbmVjZXNzYXJ5IGZvciBub24tTU1QIGZpbGUgc3lzdGVtcywgc28gZHJvcCBpdC4KKworUHJpbnQgZXJyb3JzIHJldHVybmVkIGJ5IGV4dDJmc19vcGVuMigpIGFuZCBleHQyZnNfY2hlY2tfZGVzYygpIHNvIHdlCitjYW4gbW9yZSBlYXNpbHkgZGlhZ25vc2UgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMgY2F1c2VkIGJ5CitpbnN1ZmZpY2llbnQgbWVtb3J5LiAgRTJmc2NrIHdpbGwgbm93IGFib3J0IGlmIHRoZXJlIGFyZSBtZW1vcnkKK2FsbG9jYXRpb24gZmFpbHVyZXMgd2hlbiB0aGUgZmlsZSBzeXN0ZW0gaXMgaW5pdGlhbGx5IG9wZW5lZCBhbmQKK2R1cmluZyB0aGUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3MuICAoQWRkcmVzc2VzIEdvb2dsZSBCdWc6CisjNjIwODE4MykKKworSWYgdGhlcmUgYXJlIGluY29ycmVjdCBibG9jayBncm91cCBjaGVja3MsIGUyZnNjayB3aWxsIG5vdyByZXBvcnQgdGhlCitpbmNvcnJlY3QgYW5kIGNvcnJlY3RlZCBjaGVja3N1bSB2YWx1ZXMuCisKK1RoZSBlMmZzY2sgcHJvZ2FtIGNhbiBub3cgd3JpdGUgbG9nIGZpbGVzIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YKK3RoZSBwcm9ibGVtcyB0aGF0IHdlcmUgZm91bmQgYW5kIGZpeGVkIGRpcmVjdGx5LCB2aWEgY29uZmlndXJhdGlvbgorcGFyYW1ldGVycyBpbiAvZXRjL2UyZnNjay5jb25mLgorCitBZGRlZCB0aGUgYWJpbGl0eSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIG1lc3NhZ2VzIHJlcG9ydGVkIGJ5IGUyZnNjaworZm9yIGEgZ2l2ZW4gcHJvYmxlbSB0eXBlLiAgVGhpcyBhdm9pZHMgYSBwb3RlbnRpYWwgYm90dGxlbmVjayBpZiB0aGVyZQoraXMgYSBzZXJpYWwgY29uc29sZSB3aGljaCBjYW4gY2F1c2UgYSBib290IHNlcXVlbmNlIHRvIHRha2UgYSBsb25nCit0aW1lIGlmIGUyZnNjayBuZWVkcyB0byByZXBvcnQgbWFueSwgbWFueSBmaWxlIHN5c3RlbSBlcnJvcnMuCisKK1RoZSBkdW1wZTJmcywgZGVidWdmcywgYW5kIHR1bmUyZnMgbm93IHVzZSByYnRyZWUgYml0bWFwcywgd2hpY2ggY2F1c2UKK3RoZW0gdG8gdXNlIG11Y2ggbGVzcyBtZW1vcnkgZm9yIGxhcmdlIGZpbGUgc3lzdGVtcy4KKworVGhlIGR1bXBlMmZzIHByb2dyYW0gd2lsbCBub3cgcHJpbnQgdGhlIGV4cGVjdGVkIGJsb2NrIGdyb3VwIGNoZWNrc3VtCitpZiBpdCBpcyBpbmNvcnJlY3QuICBUaGlzIGhlbHBzIHRvIGRpYWdub3NlIHByb2JsZW1zIGNhdXNlZCBieQoraW5jb3JyZWN0IGJsb2NrIGdyb3VwIGNoZWNrc3Vtcy4KKworRTJmc2NrIG5vdyBjaGVja3MgZm9yIGV4dGVudHMgd2l0aCBhIHplcm8gbGVuZ3RoLCBzaW5jZSB0aGUga2VybmVsCit3aWxsIG9vcHMgaWYgaXQgY29tZXMgYWNjcm9zcyBzdWNoIGEgY29ycnVwdGVkIGRhdGEgc3RydWN0dXJlLiAgKFNlZQoraHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL3Nob3dfYnVnLmNnaT9pZD00Mjg1OSkKKworRTJmc2NrIGhhcyBhIG51bWJlciBvZiBidWdzIHJlbGF0aW5nIHRvIGRpc2NhcmQgdGhhdCBoYXZlIGJlZW4gZml4ZWQuCisoMSkgRml4ZWQgYSBidWcgd2hpY2ggY291bGQgY2F1c2UgZTJmc2NrIHRvIGRpc2NhcmQgcG9ydGlvbnMgb2YgdGhlCitpbm9kZSB0YWJsZSB3aGljaCB3ZXJlIGFjdHVhbGx5IGluIHVzZS4gICgyKSBFMmZzY2sgd2lsbCBub3cgYXZvaWQKK3VzaW5nIGRpc2NhcmQgaWYgdGhlIGJsb2NrIGRldmljZSBkb2Vzbid0IHplcm8gZGF0YSBvbiBkaXNjYXJkLCBzaW5jZQorb3RoZXJ3aXNlIHRoaXMgY291bGQgY2F1c2UgcHJvYmxlbXMgaWYgdGhlIGZpbGUgc3lzdGVtIGdldHMgY29ycnVwdGVkCitpbiB0aGUgZnV0dXJlLiAgKDMpIEUyZnNjayB3aWxsIG5vdyBhdm9pZCB1c2luZyBkaXNjYXJkIHdoZW4gaXQgaXMgcnVuCitpbiByZWFkLW9ubHkgbW9kZS4gICg0KSBGaXhlZCBhIGJ1ZyB3aGljaCBjYXVzZWQgZTJmc2NrIHRvIG5vdCBpc3N1ZQorZGlzY2FyZHMgaW4gdGhlIGxhc3QgYmxvY2sgZ3JvdXAuCisKK0UyZnNjaydzIENQVSB1dGlsaXphdGlvbiBpbiBwYXNzIDUgaGFzIGJlZW4gb3B0aW1pemVkLCB3aGljaCB3aWxsCitzcGVlZCB1cCBlMmZzY2sgc2xpZ2h0bHkuCisKK0UyaW1hZ2Ugd2lsbCBub3cgc2tpcCBjb3B5aW5nIHVuaW5pdGlhbGl6ZWQgYml0bWFwIGFuZCBpbm9kZSB0YWJsZQorYmxvY2tzLgorCitGaXhlZCBta2UyZnMgLVMgc28gaXQgZG9lcyBub3QgY29ycnVwdCB0aGUgZmlyc3QgYmxvY2sgZ3JvdXAncworaW5mb3JtYXRpb24uCisKK0UyZnNjayB3aWxsIG5vdyBjaGVjayB0aGUgbmV3IHN5c2ZzIGludGVyZmFjZSB0byBkZXRlcm1pbmUgaWYgd2UgYXJlCit1c2luZyB0aGUgYmF0dGVyeSBvciBBQyBtYWlucy4gIChBZGRyZXNzZXMgU291cmNlRm9yZ2UgQnVnOiAjMzQzOTI3NykKKworVXBkYXRlZC9maXhlZCB2YXJpb3VzIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzY2NTQyNykKKworRml4ZWQgdmFyaW91cyBEZWJpYW4gUGFja2FnaW5nIGlzc3Vlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzY2NTg4NSkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgdmFyaW91cyBwb3J0YWJpbGl0eSBpc3N1ZXMgZm9yIG5vbi1MaW51eCBzeXN0ZW1zLCBwYXJ0aWN1bGFybHkKK01hY09TIFgsIGFzIHdlbGwgYXMgTGludXggc3lzdGVtcyBydW5uaW5nIHdpdGggdGhlIGp1c3QtcmVsZWFzZWQgZ2xpYmMKKzIuMTUuCisKK0ZpeCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBleHQyZnNfY2xvc2UoKSBpZiB0aGUgZmlsZSBzeXN0ZW0gd2l0aAordW5pbml0X2JnIGlzIG9wZW5lZCByZWFkL29ubHkgd2l0aCBhIGJhY2t1cCBzdXBlcmJsb2NrLiAgKEFkZHJlc3NlcworU291cmNlRm9yZ2UgQnVnOiAjMzQ0NDM1MSkKKworRml4ZWQgYW4gaW52YWxpZCByZXR1cm4gaW4gYSBub24tdm9pZCBmdW5jdGlvbiBpbiB0aGUgcXVvdGEgY29kZS4KKyhBZGRyZXNzZXMgU291cmNlRm9yZ2UgQnVnOiAjMzQ2ODQyMykKKworRml4ZWQgdGhlIGRlYmlhbiBydWxlcyBmaWxlIHNvIHRoYXQgdGhlIGNhbGxzIHRvIGRwa2ctYnVpbGRmbGFncyB3b3Jrcword2hlbiB0aGUgc2hlbGwgaXMgZGFzaC4KKworVGhlIGRlYmlhbiBwYWNrYWdlIGJ1aWxkIG5vdyB1c2VzIFY9MSBzbyB0aGF0IHRoZXJlIGlzIG1vcmUKK2luZm9ybWF0aW9uIGFib3V0IHBvdGVudGlhbCBidWlsZCBmYWlsdXJlcyBpbiBkZWJpYW4gYnVpbGRkIGxvZ3MuCisKK0lmIHRoZSB1bmluaXQgZmxhZ3MgZ2V0IGNsZWFyZWQgYnkgZnVuY3Rpb25zIHN1Y2ggYXMKK2V4dDJmc19uZXdfaW5vZGUoKSBvciBleHQyZnNfbmV3X2Jsb2NrMigpLCB3ZSBub3cgbWFrZSBzdXJlIHRoZQorc3VwZXJibG9jayBpcyBtYXJrZWQgZGlydHkgYW5kIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtIGlzCit1cGRhdGVkIGlmIG5lY2Vzc2FyeS4KKworVGhlIGRlYmlhbiBydWxlcyBmaWxlIHdpbGwgbm93IHRyeSB0byBsb2FkIGRlYmlhbi9ydWxlcy5jdXN0b20gb2YgaXQKK2V4aXN0cy4gIFRoaXMgZmxpZSBjYW4gc2tpcCB2YXJpb3VzIGJ1aWxkcyBmb3Igc3BlZWQgcmVhc29ucyBpZiB0aGVyZQoraXMgbm8gbmVlZCBmb3IgdGhlIGUyZnNjay1zdGF0aWMgb3IgdWRlYiBwYWNrYWdlcy4gIEF2YWlsYWJsZQorY3VzdG9taXphdGlvbnMgaW4gdGhlIHJ1bGVzIGZpbGUgaW5jbHVkZXMgU0tJUF9TVEFUSUM9eWVzLAorU0tJUF9CRj15ZXMsIGFuZCBTS0lQX0RJRVRMSUJDPXllcy4KKworSW4gYWRkaXRpb24sIGlmIHRoZSBmaWxlIG1pc2MvbWtlMmZzLmNvbmYuY3VzdG9tLmluIGV4aXN0cyBpbiB0aGUKK3NvdXJjZSB0cmVlLCBpdCB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgbWlzYy5jb25mIGZpbGUgaW4KK3RoZSB1cHN0cmVhbSBzb3VyY2VzLiAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgZm9yIERlYmlhbi1kZXJpdmVkIHN5c3RlbXMKK3RvIGRpc3RyaWJ1dGUgYSBjdXN0b20gbWtlMmZzLmNvbmYgZmlsZSB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dAorbWVyZ2UgaXNzdWVzIGlmIGZ1dHVyZSB2ZXJzaW9ucyBvZiBlMmZzcHJvZ3MgbWFrZXMgY2hhbmdlcyBpbiB0aGUKK3Vwc3RyZWFtIGRlZmF1bHQgdmVyc2lvbiBvZiBta2UyZnMuY29uZi4KKworCitFMmZzcHJvZ3MgMS40Mi4xIChGZWJydWFyeSAxNywgMjAxMikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBta2UyZnMgYW5kIGUyZnNjayBub3cgdXNlIHNpZ25pZmljYW50bHkgbGVzcyBtZW1vcnkgd2hlbiBjcmVhdGluZworb3IgY2hlY2tpbmcgdmVyeSBsYXJnZSBmaWxlIHN5c3RlbXMuICBUaGlzIHdhcyBlbmFibGVkIGJ5IGFkZGluZworZXh0ZW50LWJhc2VkIGJpdG1hcHMgd2hpY2ggYXJlIHN0b3JlZCB1c2luZyBhIHJlZC1ibG9jayB0cmVlLCBzaW5jZQorYmxvY2sgYW5kIGlub2RlIGFsbG9jYXRpb25zIHRlbmQgdG8gYmUgY29udGlndW91cy4KKworVGhlIGNvbW1hbmQgbWtlMmZzIC1TIGlzIHVzZWQgYXMgYSBsYXN0IGRpdGNoIHJlY292ZXJ5IGNvbW1hbmQgdG8KK3dyaXRlIG5ldyBzdXBlcmJsb2NrIGFuZCBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYnV0IF9ub3RfIHRvIGRlc3Ryb3kKK3RoZSBpbm9kZSB0YWJsZSBpbiBob3BlcyBvZiByZWNvdmVyaW5nIGZyb20gYSBiYWRseSBjb3JydXB0ZWQgZmlsZQorc3lzdGVtLiAgU28gaWYgdGhlIHVuaW5pdF9iZyBmZWF0dXJlIGlzIGVuYWJsZWQsIG1rZTJmcyAtUyB3aWxsIG5vdworc2V0IHRoZSB1bnVzZWQgaW5vZGVzIGNvdW50IGZpZWxkIHRvIHplcm8uICBPdGhlcndpc2UsIGUyZnNjayAtZnkKK2FmdGVyIHVzaW5nIG1rZTJmcyAtUyB3b3VsZCBsZWF2ZSB0aGUgZmlsZSBzeXN0ZW0gY29tcGxldGVseSBlbXB0eS4KKworU2luY2UgbWtlMmZzIHJlY29nbml6ZXMgbWtlM2ZzIGluIGFyZ3ZbMF0gdG8gbWVhbiAibWtmcy5leHQzIiwgYWxzbworaG9ub3IgIm1rZTRmcyIgdG8gd29yayB0aGUgc2FtZSBhcyAibWtlMmZzLmV4dDQiLCBzaW5jZSBSSEVMNSBoYXMKK2luc3RhbGxlZCBhbiBta2UyZnMgYmluYXJ5IHVzaW5nIHRoYXQgbmFtZS4KKworVGhlIHVzYWdlIGFuZCBoZWxwIG1lc3NhZ2VzIGZvciB0aGUgLUcsIC10IGFuZCAtVCBvcHRpb25zIGluIG1rZTJmcworaGF2ZSBiZWVuIGZpeGVkLgorCitJZiBlMmZzY2sgbmVlZHMgdG8gdXNlIHRoZSBiYWNrdXAgZ3JvdXAgZGVzY3JpcHRvcnMsIHRoZQorZXh0MmZzX29wZW4yKCkgZnVuY3Rpb24gY2xlYXJzIHRoZSBVTklOSVQgYml0cyB0byBlbnN1cmUgYWxsIG9mIHRoZQoraW5vZGVzIGluIHRoZSBmaWxlIHN5c3RlbXMgZ2V0IHNjYW5uZWQuICBIb3dldmVyLCB0aGUgY29kZSB3aGljaCByZXNldAordGhlIFVOSU5JVCBmbGFncyBkaWQgbm90IGFsc28gcmVjYWxjdWxhdGUgdGhlIGNoZWNrc3VtLCB3aGljaCBwcm9kdWNlZAorbWFueSBzcHVyaW91cyAoYW5kIHNjYXJ5KSBlMmZzY2sgbWVzc2FnZXMuICBUaGlzIGhhcyBiZWVuIGZpeGVkIGJ5CityZXNldHRpbmcgY2hla3N1bXMgd2hlbiB0aGUgVU5JTklUIGJpdHMgYXJlIGNsZWFyZWQuCisKK1JlbGF4IGEgY2hlY2sgaW4gZTJmc2NrIHdoaWNoIHJlcXVpcmVkIHRoYXQgdGhlIGJsb2NrIGJpdG1hcCB0byBiZQoraW5pdGlhbGl6ZWQgd2hlbiB0aGUgaW5vZGUgYml0bWFwIGlzIGluIHVzZS4gIFRoaXMgd2lsbCBhbGxvdyB1cyB0bworZXZlbnR1YWxseSBlbGltaW5hdGUgY29kZSBmcm9tIHRoZSBrZXJuZWwgd2hpY2ggZm9yY2libHkgaW5pdGlhbGl6ZWQKK3RoZSBibG9jayBiaXRtYXAgd2hlbiB0aGUgaW5vZGUgYml0bWFwIGlzIGZpcnN0IHVzZWQsIHJlcXVpcmluZyBhbgorZXh0cmEgam91cm5hbCBjcmVkaXQgYW5kIGRpc2sgd3JpdGUuICAoQWRkcmVzc2VzIEdvb2dsZSBCdWc6ICM1OTQ0NDQwKQorICAgIAorTWFrZSBzdXJlIHJkZWJ1Z2ZzICh3aGljaCBtYXkgYmUgaW5zdGFsbGVkIHNldHVpZCBvciBzZXRnaWQgZGlzaykgZG9lcworbm90IGhvbm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiBldWlkICE9IHVpZCBvciBlZ2lkICE9IGdpZC4KKworRGVidWdmcydzIG5jaGVjayBjb21tYW5kIGhhcyBiZWVuIG9wdGltaXplZCBhbmQgbm93IGlzIG11Y2ggbW9yZQorcm9idXN0IHdpdGggZmFjZWQgd2l0aCBjb3JydXB0ZWQgZmlsZSBzeXN0ZW1zLiAgVGhlIG5jaGVjayBjb21tYW5kCithbHNvIG5vdyBoYXMgYSAtYyBvcHRpb24gd2hpY2ggd2lsbCB2ZXJpZnkgdGhlIGZpbGUgdHlwZSBpbmZvcm1hdGlvbgoraW4gdGhlIGRpcmVjdG9yeSBlbnRyeSB0byBzZWUgaWYgbWF0Y2hlcyB0aGUgaW5vZGUncyBtb2RlIGJpdHMuICBUaGlzCitpcyBleHRyZW1lbHkgdXNlZnVsIHdoZW4gdHJ5aW5nIHRvIHVzZSBkZWJ1Z3NmcyB0byBkZXRlcm1pbmUgd2hpY2gKK3BhcnRzIG9mIHRoZSBmaWxlIHN5c3RlbSBtZXRhZGF0YSBjYW4gYmUgdHJ1c3RlZC4KKworRTJpbWFnZSB3aWxsIHRyeSB0byB1c2UgZnRydW5jYXRlNjQoKSB0byBzZXQgdGhlIGlfc2l6ZSBmb3IgcmF3CitpbWFnZXMsIGluc3RlYWQgb2Ygd3JpdGluZyBhIHNpbmdsZSBudWxsIGJ5dGUuICBUaGlzIGF2b2lkIGFsbG9jYXRpbmcKK2FuIGV4dHJhIGJsb2NrIHRvIHRoZSByYXcgaW1hZ2UsIGZvciB0aG9zZSBmaWxlIHN5c3RlbXMgYW5kL29yCitvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHN1cHBvcnQgdGhpcy4gIChMaW51eCBkb2VzLikgIEluIGFkZGl0aW9uLCBmaXgKK2EgbG9naWMgYnVnIHRoYXQgY2F1c2VkIHRoZSBmaWxlIHRvIG5vdCBiZSBwcm9wZXJseSBleHRlbmRlZCBpZiB0aGUKK3NpemUgb2YgdGhlIGxhc3QgaG9sZSB3YXMgZXhhY3RseSBhbiBtdWx0aXBsZSBvZiBhIG1lZ2FieXRlLgorCitGaXhlZCBhIGJ1ZyBpbiByZXNpemUyZnMgd2hlcmUgZm9yIDFrIGFuZCAyayBmaWxlIHN5c3RlbXMsIHdoZXJlCitzX2ZpcnN0X2RhdGFfYmxvY2sgaXMgbm9uLXplcm8sIHRoaXMgd2Fzbid0IHRha2VuIGludG8gYWNjb3VudCB3aGVuCitjYWxjdWxhdGUgdGhlIG1pbmltdW0gZmlsZSBzeXN0ZW0gc2l6ZSBmb3IgdXNlIHdpdGggdGhlIC1NIG9wdGlvbi4KKworRml4ZWQgdGhlIGJhZGJsb2NrcyBwcm9ncmFtIHRvIGhvbm9yIHRoZSAtcyBmbGFnIHdoZW4gaW4gcmVhZC1vbmx5IC10Cittb2RlLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICM2NDY2MjkpCisKK1VwZGF0ZSBDemVjaCwgRHV0Y2gsIEZyZW5jaCwgUG9saXNoLCBhbmQgU3dlZWRpc2ggdHJhbnNsYXRpb24gZnJvbSB0aGUKK1RyYW5zbGF0aW9uIFByb2plY3QuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIFBhY2thZ2luZyBpc3N1ZXMgc28gdGhhdCBkcGtnLWJ1aWxkZmxhZ3MgaXMgdXNlZAoraWYgcHJlc2VudCwgd2hpY2ggYWxsb3dzIGUyZnNwcm9ncyB0byBiZSBidWlsdCB3aXRoIHNlY3VyaXR5IGhhcmRlbmluZworZmxhZ3MuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNjU0NDU3KQorCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggYSBidWcgaW4gZXh0MmZzX2NsZWFyX2dlbmVyaWNfYm1hcCgpIHdoZW4gdXNlZCBmb3IgMzItYml0IGJpdG1hcHMuCitUaGlzIHdhcyBvbmx5IGFuIGlzc3VlIGZvciBwcm9ncmFtcyBjb21waWxlZCBhZ2FpbnN0IGUyZnNwcm9ncyAxLjQxCit0aGF0IG1hbmlwdWxhdGUgYml0bWFwcyBkaXJlY3RseS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnczoKKyMzNDUxNDg2KQorCitUaGUgbGliZXh0MmZzIGxpYnJhcnkgbm93IHVzZXMgc3lzY29uZigpIHRvIGZldGNoIHRoZSBwYWdlIHNpemUsIGluc3RlYWQKK29mIHRoZSBkZXByZWNhdGVkIGdldHBhZ2VzaXplKCkuCisKK1RoZSBleHQyZnNfZ2V0X3BhdGhuYW1lKCkgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSBwYXJ0aWFsIHBhdGggaWYgYW4gYQorZGlyZWN0b3J5IGluIHRoZSBwYXRoIGlzIG5vdCBhIGRpcmVjdG9yeSwgZGlzcGxheWluZyBpdCBhcyBhbiBpbm9kZQorbnVtYmVyIGluIGFuZ2xlIGJyYWNrZXRzIGluc3RlYWQgb2YgZ2l2aW5nIHVwIGFuZCBkaXNwbGF5aW5nIGFuIGVycm9yLgorVGhpcyBpcyBtdWNoIG1vcmUgaGVscGZ1bCB3aGVuIGEgdXNlciBpcyB0cnlpbmcgdG8gZGVidWcgYSBjb3JydXB0ZWQKK2ZpbGUgc3lzdGVtLgorCitDb2RlcG9pbnRzIGZvciB0aGUgUk9fQ09NUEFUX1JFUExJQ0EgZmVhdHVyZSBoYXMgYmVlbiByZXNlcnZlZC4KKworQWRkZWQgYSBuZXcgbGlicmFyeSBmdW5jdGlvbiwgZXh0MmZzX2ZpbGVfZ2V0X2lub2RlX251bSgpLCBmb3IgdXNlIGJ5CitmdXNlMmZzLgorCitGaXhlZCBhIGJ1ZyBpbiBleHQyZnNfZmlsZV9zZXRfc2l6ZTIoKSBzbyB0aGF0IHdoZW4gaXQgaXMgdHJ1bmNhdGluZyBhCitmaWxlLCBpdCBhY3R1YWxseSB3b3Jrcy4KKworVGhlIGJsb2NrIGl0ZXJhdG9yIG5vdyBwcm9wZXJseSBob25vcnMgdGhlIEJMT0NLX0FCT1JUIGZsYWcgZm9yCitleHRlbnQtYmFzZWQgZmxhZ3MuICBQcmV2aW91c2x5LCBpdCBkaWRuJ3QsIHdoaWNoIGdlbmVyYWxseSBtYWRlIGNvZGUKK2JlIGxlc3MgZWZmaWNpZW50LCBidXQgaXQgY291bGQgY2F1c2UgYnVncyBpbiBleHQyZnNfbGluaygpLCBmb3IKK2V4YW1wbGUsIGJ5IGNhdXNpbmcgaXQgdG8gaW5zZXJ0IG11bHRpcGxlIGRpcmVjdG9yeSBlbnRyaWVzLgorCitGaXhlZCBhbiAoaGFybWxlc3Mgb3RoZXIgdGhhbiBjYXVzaW5nIGEgY29tcGlsZXIgd2FybmluZykgdXNlIG9mIGFuCit1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGUyZnNjaydzIE1NUCBjb2RlLgorCisKK0UyZnNwcm9ncyAxLjQyIChOb3ZlbWJlciAyOSwgMjAxMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyByZWxlYXNlIG9mIGUyZnNwcm9ncyBoYXMgc3VwcG9ydCBmb3IgZmlsZSBzeXN0ZW1zID4gMTZUQi4gIE9ubGluZQorcmVzaXplIHJlcXVpcmVzIGtlcm5lbCBzdXBwb3J0IHdoaWNoIHdpbGwgaG9wZWZ1bGx5IGJlIGluIExpbnV4Cit2ZXJzaW9uIDMuMi4gIE9mZmxpbmUgc3VwcG9ydCBpcyBub3QgeWV0IGF2YWlsYWJsZSBmb3IgPiAxNlRCIGZpbGUKK3N5c3RlbXMsIGJ1dCB3aWxsIGJlIGNvbWluZy4KKworVGhpcyByZWxlYXNlIG9mIGUyZnNwcm9ncyBoYXMgc3VwcG9ydCBmb3IgY2x1c3RlcmVkIGFsbG9jYXRpb24uICBUaGlzCityZWR1Y2VzIHRoZSBudW1iZXIgb2YgYmxvY2sgKG5vdyBjbHVzdGVyKSBiaXRtYXBzIGJ5IGFsbG9jYXRpbmcgYW5kCitkZWFsbG9jYXRpbmcgc3BhY2UgaW4gY29udGlndW91cyBwb3dlci1vZi0yIGNvbGxlY3Rpb25zIG9mIGJsb2NrcywKK3doaWNoIGFyZSBjYWxsZWQgY2x1c3RlcmVkLiAgVGhpcyBpcyBhIGZpbGUgc3lzdGVtIGxldmVsIGZlYXR1cmUsCitjYWxsZWQgJ2JpZ2FsbG9jJywgd2hpY2ggbXVzdCBiZSBlbmFibGVkIHdoZW4gdGhlIGZpbGUgc3lzdGVtIGlzCitpbml0aWFsbHkgZm9ybWF0dGVkLiAgSXQgaXMgbm90IGJhY2t3YXJkcyBjb21wYXRpYmxlIHdpdGggb2xkZXIKK2tlcm5lbHMuCisKK0FkZGVkIHN1cHBvcnQgZm9yIHRoZSBNdWx0aS1Nb3VudCBQcm90ZWN0aW9uIChNTVApIGZlYXR1cmUuCisKK0UyZnNjayBtb3JlIGVmZmljaWVudGx5IHVzZXMgc2NyYXRjaCBmaWxlcyBmb3IgcmVhbGx5IGJpZyBmaWxlCitzeXN0ZW1zLiAgKFRoaXMgaXMgYSBmZWF0dXJlIHRoYXQgaGFzIHRvIGJlIHR1cm5lZCBvbiBleHBsaWNpdGx5OyBzZWUKK1tzY3JhdGNoX2ZpbGVzXSBpbiB0aGUgZTJmc2NrLmNvbmYgbWFuIHBhZ2UuKQorCitGaXggYSBidWcgaW4gZTJmc2NrIHdoZXJlIGlmIHRoZSBmcmVlIGJsb2NrcyBhbmQgaW5vZGVzIGNvdW50cyBhcmUKK2luY29ycmVjdCwgZTJmc2NrIHdvdWxkIGZpeCB0aGVtIHdpdGhvdXQgcHJpbnRpbmcgYW4gZXJyb3IgbWVzc2FnZS4KK1RoaXMgd291bGQgY2F1c2UgYSAiKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioiIG1lc3NhZ2Ugd2l0aG91dAorYW55IGV4cGxhbmF0aW9uIG9mIHdoYXQgd2FzIGZpeGVkLgorCitFMmZzY2sgd2lsbCBubyBsb25nZXIgYXR0ZW1wdCB0byBjbG9uZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaW4KK3Bhc3MxYiBoYW5kbGluZyBpZiB0aGUgZmlsZSBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBleHRlbmRlZAorYXR0cmlidXRlcy4KKworRTJmc2NrIHdpbGwgYmUgbW9yZSBjYXJlZnVsIGFjY2lkZW50YWxseSBhc2tpbmcgdGhlIHVzZXIgdG8gY29udGludWUKK2lmIHRoZSBmaWxlIHN5c3RlbSBpcyBtb3VudGVkLCBzbyB0aGF0IGFuIGVzY2FwZSBzZXF1ZW5jZSB3b24ndCBjYXVzZQorYSBmYWxzZSBwb3NpdGl2ZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzYxOTg1OSkKKworRTJmc2NrIG5vdyB1c2VzIGxlc3MgY3B1IHRpbWUgaW4gcGFzcyA1IHdoZW4gbGFyZ2UgcG9ydGlvbnMgb2YgdGhlCitiaXRtYXBzIGFyZSB1bmluaXRpYWxpemVkLgorCitFMmZzY2sgd2lsbCBubyBsb25nZXIgc2VnYXVsdCB3aGVuIGEgY29ycnVwdGVkIGZpbGUgc3lzdGVtIGhhcyBhIGJhZAorZXh0ZW50LCBhbmQgcmVtb3ZpbmcgaXQgbGVhZHMgdG8gYSBibG9jayBuZWVkaW5nIHRvIGJlIGRlYWxsb2NhdGVkLgorKEFkZHJlc3NlcyBTb3VyY2VGb3JnZSBCdWc6ICMyOTcxODAwKQorCitFMmZzY2sgd2lsbCBjYXRjaCB0ZXJtaW5hdGlvbiBzaWduYWxzIChzZWdmYXVsdHMsIGJ1cyBlcnJvcnMsIHNpZ2ZwZSkKK2FuZCBwcmludCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdG8gbWFrZSBpdCBlYXNpZXIgdG8gZmluZCBwb3RlbnRpYWwKK3Byb2JsZW1zLgorCitFMmZzY2sgd2lsbCBjaGVjayB0byBzZWUgaWYgdGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnNhbmUsIGFuZCB3aWxsCitza2lwIHRyeWluZyB0byB1c2UgaWYgaXQgY2VydGFpbiBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIHplcm8gbG9vaworbm9uLXplcm8uICBUaGlzIGlzIHRvIGF2b2lkIGEgY29ycnVwdGVkIGJhZCBibG9jayBpbm9kZSBjYXVzaW5nIGUyZnNjawordG8gZ2V0IGNvbmZ1c2VkIGFuZCBkbyBtb3JlIGhhcm0gdGhhbiBnb29kLgorCitJZiBlMmZzY2sgbW9kaWZpZXMgY2VydGFpbiBzdXBlcmJsb2NrIGZpZWxkcyB3aGljaCB0aGUga2VybmVsIGRvZXNuJ3QKK2xvb2sgYXQsIGl0IHdpbGwgbm93IG1hcmsgdGhlIHN1cGVyYmxvY2sgYXMgZGlydHkgd2l0aG91dCBtYXJraW5nIHRoZQorZmlsZSBzeXN0ZW0gYXMgY2hhbmdlZC4gIFRoaXMgYXZvaWRzIHNpZ25hbGxpbmcgdGhlIGluaXQgc2NyaXB0cyB0aGF0CithIHJlYm9vdCBpcyBuZWNlc3NhcnksIHNpbmNlIHRoZSBrZXJuZWwgaXNuJ3QgZ29pbmcgdG8gbG9vayBhdCB0aG9zZQorZmllbGRzLCBzbyBpdCB3b24ndCBjYXJlIGlmIHRoZXkgaGF2ZSBiZWVuIGNoYW5nZWQuCisKK0ZpeGVkIGEgYnVnIGluIHRoZSBsaWJleHQyZnMgbGlicmFyeSAoaW4gdGhlIGJpbmFyeSBzZWFyY2ggcm91dGluZSBvZgordGhlIGljb3VudCBhYnN0cmFjdGlvbikgdGhhdCBjb3VsZCAodmVyeSwgdmVyeSByYXJlbHkpIGNhdXNlIGUyZnNjayB0bworZGllIGluIHRoZSBtaWRkbGUgb2YgcGFzcyAxIG9yIHBhc3MgMiBwcm9jZXNzaW5nLgorCitFMmZzY2sgd2lsbCBub3QgdHJ5IHRvIGRvIGEgZGlzY2FyZCBvcGVyYXRpb24gaWYgdGhlIC1uIG9wdGlvbiB3YXMKK3NwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgorCitFMmZzY2sgbm93IHN1cHBvcnRzIGFuIGV4dGVuZGVkICJkaXNjYXJkIiBvcHRpb24gd2hpY2ggd2lsbCBjYXVzZQorZTJmc2NrIHRvIGF0dGVtcHQgZGlzY2FyZCBhbGwgdW51c2VkIGJsb2NrcyBhZnRlciBhIGZ1bGwsIHN1Y2Nlc3NmdWwKK2ZpbGUgc3lzdGVtIGNoZWNrLgorCitFMmZzY2sgd2lsbCBjaGVjayBmb3IgdGhlIGJhZCBibG9jayBpbm9kZSB0byBtYWtlIHN1cmUgaXQgbG9va3Mgc2FuZQorYmVmb3JlIHRydXN0aW5nIGl0LCB0byBhdm9pZCBjYXVzaW5nIG1vcmUgaGFybSB0aGFuIGdvb2QgdG8gdGhlIGZpbGUKK3N5c3RlbS4KKworRTJmc2NrIG5vdyByZXR1cm5zIGFkZGl0aW9uYWwgc3RhdHVzIGJpdHMgaW4gaXRzIGV4aXQgY29kZSBpZiBpdAorYWJvcnRzIGVhcmx5IGluIHRoZSBlMmZzY2sgcnVuLgorCitFMmZzY2sgbm93IGNvcnJlY3RseSBjYWxjdWxhdGVzIHRoZSBtYXhpbXVtIGZpbGUgc2l6ZSBpbiB0aGUgY2FzZSBvZgordGhlIGh1Z2VfZmlsZSBmaWxlIHN5c3RlbSBmZWF0dXJlIGVuYWJsZWQgd2l0aG91dCBleHRlbnRzLgorCitUaGUgbWtlMmZzIGFuZCBlMmZzY2sgcHJvZ3JhbXMgbm93IHRyaWVzIHRvIHVzZSB0aGUgcHVuY2ggaG9sZSBjb21tYW5kCithcyBhICJkaXNjYXJkIiB3aGVuIG9wZXJhdGluZyBvbiBub3JtYWwgZmlsZXMuCisKK1RoZSBlMmltYWdlIHByb2dyYW0gbm93IHN1cHBvcnRzIHRoZSBxY293MiBmb3JtYXQsIHdoaWNoIGlzIGEgbW9yZQorZWZmaWNpZW50IHdheSBvZiBjYXB0dXJpbmcgZmlsZSBzeXN0ZW0gZHVtcHMuCisKK01rZTJmcyBub3cgc3VwcG9ydHMgdGhlIFtkZXZpY2VzXSBzdGFuemEgaW4gbWtlMmZzLmNvbmYgd2hpY2ggYWxsb3dzCitwZXItZGV2aWNlIGRlZmF1bHRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorCitNa2UyZnMgbm93IHN1cHBvcnRzIHRoZSByZXNlcnZlZF9yYXRpbyByZWxhdGlvbiBpbiB0aGUgW2RlZmF1bHRzXSBhbmQKK1tmc190eXBlc10gc2VjdGlvbiBpbiBta2UyZnMuY29uZi4KKworTWtlMmZzIG5vdyBjcmVhdGVzIGV4dGVudC1tYXBwZWQgZGlyZWN0b3JpZXMgZm9yIHRoZSByb290IGFuZAorbG9zdCtmb3VuZCBkaXJlY3Rvcmllcy4KKworTWtlMmZzIHdpbGwgc2tpcCB6ZXJvJ2luZyB0aGUgam91cm5hbCBpZiB0aGUgZXh0ZW5kZWQgb3B0aW9uCisibGF6eV9qb3VybmFsX2luaXQiIGlzIHNwZWNpZmllZC4gIFRoaXMgY2FuIHNhdmUgYSBsb3Qgb2YgdGltZSwgYnV0IGl0Citkb2VzIGFkZCBhIHNtYWxsIGFtb3VudCBvZiByaXNrIGlmIHRoZSBzeXN0ZW0gY3Jhc2hlcyBiZWZvcmUgdGhlCitqb3VybmFsIGlzIG92ZXJ3cml0dGVuIGVudGlyZWx5IG9uY2UuICBJdCBpcyBlcHNlY2lhbGx5IHVzZWZ1bCBmb3IKK3Rlc3RpbmcuCisKK01rZTJmcyB3aWxsIG5vdyBjcmVhdGUgZmlsZSBzeXN0ZW1zIHRoYXQgZW5hYmxlIHVzZXIgbmFtZXNwYWNlCitleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3aXRoIHRpbWUtIGFuZCBtb3VudCBjb3VudC1iYXNlZCBmaWxlCitzeXN0ZW0gY2hlY2tzIGRpc2FibGVkLgorCitNa2UyZnMgd2lsbCBub3Qgc2V0IGEgc3RyaWRlIG9yIHN0cmlwIHNpemUgb2Ygb25lIGJsb2NrIGJhc2VkIG9uIGJsb2NrCitkZXZpY2UgYXR0cmlidXRlcyBvYnRhaW5lZCBmcm9tIHN5c2ZzLgorCitNa2UyZnMgbm93IGRpc3BsYXlzIGEgcHJvZ3Jlc3MgcmVwb3J0IGR1cmluZyB0aGUgZGlzY2FyZCBwcm9jZXNzLgorCitNa2UyZnMgbm93IGhhbmRsZXMgZXh0cmVtZSBmaWxlIHN5c3RlbSBwYXJhbWV0ZXJzIGNvcnJlY3RseSB3aGljaAorcHJldmlvdXNseSBjYXVzZWQgdGhlIGlub2RlcyBwZXIgZ3JvdXAgdG8gZHJvcCBiZWxvdyA4LCBsZWFkaW5nIHRvIGEKK3NlZ2ZhdWx0LiAgKFRoZSBpbm9kZXMgcGVyIGdyb3VwIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4LCBidXQgdGhlIGNvZGUKK2RpZG4ndCBjb3JyZWN0bHkgZGVhbCB3aXRoIGFuIGlub2RlcyBwZXIgZ3JvdXAgY291bnQgbGVzcyB0aGFuIDguKQorCitNa2UyZnMgYW5kIHR1bmUyZnMgcHJldmlvdXNseSB3b3VsZCBnaXZlIGFuIGVycm9yIGlmIHRoZSB1c2VyIHRyaWVkCitzZXR0aW5nIHRoZSBzdHJpZGUgYW5kIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXJzIHRvIHplcm87IGJ1dCB0aGlzIGlzCituZWNlc3NhcnkgdG8gZGlzYWJsZSB0aGUgc3RyaWRlIGFuZCBzdHJpcGUtd2lkdGggc2V0dGluZ3MuICBTbyBhbGxvdworc2V0dGluZyB0aGVzZSBzdXBlcmJsb2NrIGZpZWxkcyB0byB6ZXJvLiAgKEFkZHJlc3NlcyBHb29nbGUgQnVnOgorIzQ5ODg1NTcpCisKK01rZTJmcyBub3cgZ2l2ZXMgYSB3YXJuaW5nIGlmIHRoZSBhdXRvLWRldGVjdGVkIGJsb2NrIHNpemUgZXhjZWVkcyB0aGUKK3N5c3RlbSdzIHBhZ2Ugc2l6ZS4KKworSWYgdGhlIGVuYWJsZV9wZXJpb2RpY19mc2NrIG9wdGlvbiBpcyBmYWxzZSBpbiAvZXRjL21rZTJmcy5jb25mICh3aGljaAoraXMgdGhlIGRlZmF1bHQpLCBta2UyZnMgd2lsbCBub3cgc2V0IHRoZSBzX21heF9tbnRfY291bnQgc3VwZXJibG9jaworZmllbGQgdG8gLTEsIGluc3RlYWQgb2YgMC4gIEtlcm5lbHMgb2xkZXIgdGhlbiAzLjAgd2lsbCBwcmludCBhCitzcHVyaW91cyBtZXNzYWdlIG9uIGVhY2ggbW91bnQgdGhlbiB0aGV5IHNlZSBhIHNfbWF4X21udF9jb3VudCBzZXQgdG8KKzAsIHdoaWNoIHdpbGwgYW5ub3kgdXNlcnMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM2MzI2MzcpCisgICAgCitUaGUgZGVmYXVsdCBta2UyZnMuY29uZiBub3cgaGFzIGVudHJpZXMgZm9yICJiaWciIGFuZCAiaHVnZSIsIHdoaWNoCithcmUgbmVlZGVkIGZvciB2ZXJ5IGJpZyBmaWxlIHN5c3RlbXMuCisKK1RoZSByZXNpemUyZnMgcHJvZ3JhbSBub3cgaGFzIHN1cHBvcnQgZm9yIGEgbmV3IG9ubGluZSByZXNpemUgaW9jdGwKK3RoYXQgY2FuIHN1cHBvcnQgZmlsZSBzeXN0ZW1zID4gMTZUQiwgb25jZSBpdCBhcnJpdmVzIGluIHYzLngga2VybmVscy4KKworRml4ZWQgYnVnIHdoaWNoIGNhdXNlZCByZXNpemUyZnMgdG8gZmFpbCB3aGVuIHNocmlua2luZyBhbiBlbXB0eSBmaWxlCitzeXN0ZW0gZG93biB0byBpdHMgbWluaW1hbCBzaXplLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWcgIzM0MDQwNTEpCisKK0ZpeGVkIHR1bmUyZnMncyBtb3VudCBvcHRpb25zIHBhcnNpbmcuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM2NDE2NjcpCisKK0FsbG93IHR1bmUyZnMgdG8gcmVtb3ZlIGV4dGVybmFsIGpvdXJuYWxzIGlmIHRoZSBkZXZpY2UgY2FuIG5vdCBiZQorZm91bmQuCisKK0RlYnVnZnMncyBpY2hlY2sgd2lsbCBub3cgY29ycmVjdGx5IGZpbmQgaW5vZGVzIHdoaWNoIHVzZSB0aGUKK3NlYXJjaGVkLWZvciBibG9jayBhcyBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2suCisKK0RlYnVnZnMgbm93IGhhcyBhIG5ldyAicHVuY2giIGNvbW1hbmQgd2hpY2ggcmVtb3ZlIGJsb2NrcyBmcm9tIHRoZQorbWlkZGxlIG9mIGFuIGlub2RlLgorCitEZWJ1Z2ZzIG5vdyBoYXMgYSBuZXcgImUyZnJlZWZyYWciIGNvbW1hbmQgd2hpY2ggYW5hbHl6ZXMgdGhlIGZyZWUKK3NwYWNlIGZyYWdtZW50YXRpb24gb2YgdGhlIGZpbGUgc3lzdGVtLCB1c2luZyB0aGUgc2FtZSBjb2RlIGFzIHRoZQorZTJmcmVlZnJhZyBwcm9ncmFtLgorCitEZWJ1Z2ZzIG5vdyBoYXMgYSAiZmlsZWZyYWciIGNvbW1hbmQgd2hpY2ggZGlzcGxheXMgaW5mb3JtYXRpb24gYWJvdXQKK2EgZmlsZSdzIGZyYWdtZW50YXRpb24uCisKK0FkZCBzdXBwb3J0IHRvIGJ1aWxkIGEgbWV0YWRhdGEtb25seSwgcmVhZC1vbmx5LCBzdHJpcHBlZC1kb3duIHZlcnNpb24KK29mIGRlYnVnZnMgY2FsbGVkIHJkZWJ1Z2ZzLgorCitGaXhlZCBhIHBvdGVudGlhbCBzdGFjayBvdmVycnVuIGJ1ZyBpbiBkZWJ1Z2ZzLgorCitUaGUgYmFkYmxvY2tzIHByb2dyYW0gbm93IGNvcnJlY3RseSByZWNvdmVycyBmcm9tIEkvTyBlcnJvcnMgd2hlbgorZGlyZWN0IEkvTyBpcyBiZWluZyB1c2VkLiAgVGhlIGJhZGJsb2NrcyBjb21tYW5kIG5vdyBhbHNvIHN1cHBvcnRzIGEKKy1CIG9wdGlvbiB3aGljaCBmb3JjZXMgdGhlIHVzZSBvZiBidWZmZXJlZCBJL08sIGFuZCB0aGUgLXYgb3B0aW9uIHdpbGwKK3Byb3ZpZGUgYSBtb3JlIGRldGFpbGVkIGJyZWFrZG93biBvZiByZWFkLCB3cml0ZSwgYW5kIGZhaWxlZAorY29tcGFyaXNvbiBlcnJvcnMuCisKK0FkZGVkIGU0ZGVmcmFnIHRvb2wgd2hpY2ggdXNlcyB0aGUgRVhUNF9JT0NfTU9WRV9FWFQgaW9jdGwuCisKK0FkZGVkIHN1cHBvcnQgZm9yIGpvdXJuYWxzIGxhcmdlciB0aGFuIDJHQi4KKworU3VwcG9ydCB1c2luZyBib3RoIGhhcmQgbGlua3MgYW5kIHN5bWxpbmtzIHdoZW4gaW5zdGFsbGluZyBlMmZzcHJvZ3MuCisKK0FkZCBvdmVyZmxvdyBjaGVja2luZyB0byB0dW5lMmZzIC1pJ3MgZnNjayBpbnRlcnZhbCwgd2hpY2ggbXVzdCBmaXQgaW4KK2EgMzItYml0IGZpZWxkLgorCitUaGUgZGVidWdmcyBjb21tYW5kIG5vdyBoYXMgYSBuZXcgJ2Jsb2NrcycgY29tbWFuZCB3aGljaCBwcmludHMgb3V0CitkYXRhIGJsb2NrcyBvZiBhIHBhcnRpY3VsYXIgaW5vZGUgaW4gYSBmb3JtYXQgd2hpY2ggaXMgdXNlZnVsIGZvcgorc2NyaXB0aW5nLgorCitGaWxlZnJhZyB3aWxsIHJlcG9ydCAwIGV4dGVudHMgY29ycmVjdGx5IGluIHZlcmJvc2UgbW9kZS4gIChBZGRyZXNzZXMKK1JlZEhhdCBCdWd6aWxsYTogIzY1MzIzNCkKKworRmlsZWZyYWcgaGFzIGJlZW4gZml4ZWQgc28gaXRzIC12IHJlcG9ydCBwcmludHMgdGhlIGNvcnJlY3QgZXhwZWN0ZWQKK2Jsb2NrIG51bWJlciAocHJldmlvdXNseSB0aGVyZSBoYWQgYmVlbiBhbiBvZmYtYnktb25lIGVycm9yKS4gIEluCithZGRpdGlvbiwgaXQgd2lsbCBub3cgZGlzcGxheSB0aGUgbnVtYmVyIG9mIGNvbnRpZ3VvdXMgZXh0ZW50cyB3aGVuIC12CitpcyBub3Qgc3BlY2lmaWVkLiAgVGhpcyBtYWtlcyBpdCBjb25zaXN0ZW50IHdpdGggdGhlIG51bWJlciBvZiBleHRlbnRzCitwcmludGVkIHdoZW4gdGhlIC12IG9wdGlvbiB3YXMgc3BlY2lmaWVkLiAgSW4gYWRkaXRpb24sIHRoZSBudW1iZXIgb2YKK2NvbnRpZ3VvdXMgZXh0ZW50cyBpcyBmYXIgbW9yZSBpbnRlcmVzdGluZy91c2VmdWwgdGhhbiB0aGUgbnVtYmVyIG9mCitwaHlzaWNhbCBleHRlbnRzIGZvciB2ZXJ5IGxhcmdlIGZpbGVzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOgorIzYzMTQ5OCwgIzY0NDc5MikKKyAgICAKK0xvZ3NhdmUncyB1c2FnZSBtZXNzYWdlIGhhcyBiZWVuIGZpeGVkLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOgorIzYxOTc4OCkKKworQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBpbiBleHQyZnNfZmluZF9ibG9ja19kZXZpY2UoKSBpZiB0aGVyZSBhcmUKK3N5bWxpbmsgbG9vcHMgaW4gL2RldiBjYXVzZWQgYnkgYSBidWdneSB1ZGV2LgorCitBZGRlZCBhIHVzZWZ1bCAiZmFsbG9jYXRlIiBwcm9ncmFtIHRvIHRoZSBjb250cmliIGRpcmVjdG9yeS4KKworRml4ZWQgYW4gQUJJIGNvbXBhdGliaWxpdHkgcHJvYmxlbSBpbiBsaWJleHQyZnMgd2hpY2ggYnJva2UgdGhlIGR1bXAKK3Byb2dyYW0uICBBbHNvIGFkZGVkIGJhY2sgc29tZSBtYWNyb3Mgd2hpY2ggZHVtcCBuZWVkZWQgc28gaXQgY291bGQKK2NvbXBpbGUgYWdhaW5zdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgZXh0Ml9mcy5oIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzoKKyM2MzY0MTgpCisKK0ZpeGVkIHBhcnNpbmcgb2YgTU5UT1BUXyBvcHRpb25zIGZvciB0dW5lMmZzIGFuZCBkZWJ1Z2ZzIChBZGRyZXNzZXMKK0RlYmlhbiBCdWc6ICM2NDE2NjcpCisKK0FkZGVkIGludGVybmF0aW9uYWxpemF0aW9uIHN1cHBvcnQgZm9yIGxpYmNvbV9lcnIgZXJyb3IgdGFibGUgc3RyaW5ncy4KKworRml4ZWQgdmFyaW91cyBzcGVsbGluZyBtaXN0YWtlcyBmb3VuZCBpbiB2YXJpb3VzIG91dHB1dCBzdHJpbmdzIGZvdW5kCitieSBJMThOIHRyYW5zbGF0b3JzLgorCitVcGRhdGUgdHJhbnNsYXRpb25zOiBGcmVuY2gsIENoaW5lc2UsIEdlcm1hbnksIEluZG9uZXNpYW4sIFN3ZWRpc2gsCitWaWV0bmFtZXNlLCBQb2xpc2gsIER1dGNoLCBDemVjaC4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM1MjA5ODUsCisjNjIwNjU5KQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBQYWNrYWdpbmcgaXNzdWVzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczoKKyM2MTQ2NjIsICM2MzIxNjksICM2NDE4MzgsICM2Mjc1MzUsICM2MjkzNTUpCisKK1VwZGF0ZWQvY2xhcmlmaWVkIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM2Mzk0MTEsCisjNjQyMTkzLCAjNjM0ODgzKQorCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitJbml0aWFsIHN1cHBvcnQgZm9yIHF1b3RhIGFzIGFuIGludGVncmF0ZWQgZmVhdHVyZSwgd2hlcmUgdGhlIHF1b3RhCitmaWxlcyBhcmUgaGlkZGVuIHN5c3RlbSBmaWxlcyB0aGF0IGFyZSBhdXRvbWF0aWNhbGx5IG1haW50YWluZWQgYnkKK2UyZnNjayBpcyBwcmVzZW50LCBhbHRob3VnaCBkaXNhYmxlZCBieSBkZWZhdWx0LiAgSXQgbXVzdCBiZSBlbmFibGVkCitieSB1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbiAtLWVuYWJsZS1xdW90YS4KKworUmVzZXJ2ZWQgdGhlIG9uLWRpc2sgZmllbGRzIGZvciB0aGUgbWV0YWRhdGEgY2hlY2tzdW0gYW5kIHNuYXBzaG90CitmZWF0dXJlcywgd2hpY2ggYXJlIGN1cnJlbnRseSBpbiBkZXZlbG9wbWVudC4KKworVGhlIGV4dDJmcyBsaWJyYXJ5IG5vdyBoYXMgdGhlIG5ldyBmdW5jdGlvbnMgZXh0MmZzX3B1bmNoKCksCitleHQyZnNfZ2V0X21lbXplcm8oKSBhbmQgZXh0MmZzX2ZpbGVfZ2V0X2lub2RlKCkuCisKK1RoZSBleHQyZnMgbGlicmFyeSBub3cgaGFzIHN1cHBvcnQgZm9yIGNhbGN1bGF0aW5nIHRoZSBjcmMzMmMgY2hlY2tzdW0KKyh2aWEgdGhlIG5ldyBmdW5jdGlvbnMgZXh0MmZzX2NyYzMyY19iZSBhbmQgZXh0MmZzX2NyYzMyY19sZSkuCisKK1RoZSBJL08gbWFuYWdlciBub3cgc3VwcG9ydHMgdGhlIGRpc2NhcmQgb3BlcmF0aW9uLgorCitSZXNlcnZlZCBmaWxlIHN5c3RlbSBjb2RlIHBvaW50cyBmb3IgbmV3IDFzdCBjbGFzcyBxdW90YSBmZWF0dXJlLgorCitTaG9ydGVuZWQgdGhlIGNvbXBpbGF0aW9uIGxpbmVzIGJ5IG1vdmluZyB0aGUgYXV0b2NvbmYgZGVmaW5lcyB0bworYSBjb25maWcuaCBoZWFkZXIgZmlsZS4KKworRml4ZWQgYSBwb3RlbnRpYWwgZnJlZSBvZiBhbiB1bml0aWFsaXplZCBwb2ludGVyIGluCitleHQyZnNfdXBkYXRlX2JiX2lub2RlKCkuCisKK0ZpeGVkIG1pc2NlbGxhbmVvdXMgZ2NjIC1XYWxsIGFuZCBjb3Zlcml0eSB3YXJuaW5ncy4KKworRml4ZWQgcG9ydGFiaWxpdHkgaXNzdWVzIGZvciBNYWMgT1MgWCwgSHVyZCwgYW5kIEZyZWVCU0QuCisKK0ZpeGVkIGEgYnVpbGQgZmFpbHVyZSB3aGVuIE9NSVRfQ09NX0VSUiBpcyBkZWZpbmVkLgorCitJbXByb3ZlZCBlcnJvciBjaGVja2luZyBhbmQgZml4ZWQgbWVtb3J5IGxlYWtzIGNhdXNlZCBieSBlcnJvciByZXR1cm4KK3BhdGhzLgorCitBZGQgZXh0MmZzX2ZsdXNoMigpIGFuZCBleHQyZnNfY2xvc2UyKCkgd2hpY2ggdGFrZXMgYSBmbGFnIHRvIGFsbG93Cit0aGUgZnN5bmMoKSB0byBiZSBza2lwcGVkLgorCitBZGRlZCBhIHRlc3QgZm9yIGV4dGVudC1tYXBwZWQgam91cm5hbHMgYnkgbWtlMmZzIGFuZCB0dW5lMmZzLgorCitBZGRlZCBhIHRlc3QgZm9yIGNyZWF0aW5nIGEgbGFyZ2UgKG92ZXIgNEdCKSBqb3VybmFsIHVzaW5nIG1rZTJmcy4KKworQWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgaW5vZGUgc2l6ZSByZW1haW5zIGNvbnN0YW50LgorCitUaGUgcmVncmVzc2lvbiB0ZXN0IHNjcmlwdCBub3cgcHJpbnRzIHRoZSBsaXN0IG9mIHdoaWNoIHRlc3RzIGZhaWxlZC4KKworVGhlIHJlZ3Jlc3Npb24gdGVzdCBzeXN0ZW0gbm93IHVzZXMgL3RtcCBmb3IgaXRzIHNjcmF0Y2ggZmlsZXMsIHdoaWNoCitpcyBvZnRlbiBhIHRtcGZzIG1vdW50ZWQgZmlsZSBzeXN0ZW0gYW5kIGhlbmNlIG11Y2ggZmFzdGVyLgorCitUaGUgaV9lMmltYWdlIHRlc3Qgd2FzIGZpeGVkIHNvIGl0IHdvcmtzIHdpdGggdmFsZ3JpbmQuCisKK1Rlc3RzIHRoYXQgcmVseSBvbiBkZWJ1Z2ZzIGFyZSBub3cgc2tpcHBlZCBpZiBkZWJ1Z2ZzIHdhc24ndCBidWlsdC4KKworRml4ZWQgdGhlIGRlcGVuZGVuY2llcyBmb3IgIm1ha2UgY2hlY2siIHNvIGFsbCByZXF1aXJlZCBkZXBlbmRlbmNpZXMKK2FyZSBidWlsdCBiZWZvcmUgcnVubmluZyB0aGUgZ3Jlc3Npb24gdGVzdHMuCisKK0EgbGluayB0byBjb21fZXJyLmggaXMgaW5zdGFsbGVkIGluICQoaW5jbHVkZWRpcikgZHVyaW5nIGEgIm1ha2UgaW5zdGFsbCIuCisKK1RoZSBwby8qLmdtbyBmaWxlcyBhcmUgYXV0b21hdGljYWxseSByZWJ1aWx0IGlmIHRoZXkgYXJlIG1pc3Npbmcgb3IKK291dCBvZiBkYXRlLiAgVGhpcyBoZWxwcyBvdXQgRGViaWFuIHBhY2thZ2luZy4KKworQWxsb3cgZXh0MmZzX2dldF9tZW1hbGlnbigpIHRvIGNvbXBpbGUgb24gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUKK3Bvc2l4X21lbWFsaWduKCkuCisKK0ZpeGVkIGEgbmFtZXNwYWNlIGxlYWsgaW4gbGliZXh0MmZzICh0ZGJfbnVsbCkuCisKKworRTJmc3Byb2dzIDEuNDEuMTQgKERlY2VtYmVyIDIyLCAyMDEwKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggc3B1cmlvdXMgY29tcGxhaW50IGluIG1rZTJmcyB3aGVyZSBpdCB3b3VsZCBjb21wbGFpbiBpZiB0aGUgZmlsZQorc3lzdGVtIHR5cGUgImRlZmF1bHQiIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mLgorCitUaGUgcmVzaXplMmZzIHByb2dyYW0gd2lsbCBubyBsb25nZXIgY2xlYXIgdGhlIHJlc2l6ZV9pbm9kZSBmZWF0dXJlCit3aGVuIHRoZSBudW1iZXIgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MgcmVhY2hlcyB6ZXJvLiAgVGhpcworYWxsb3dzIGZvciBzdWJzZXF1ZW50IHNocmlua3Mgb2YgdGhlIGZpbGUgc3lzdGVtIHRvIHdvcmsgY2xlYW5seSBmb3IKK2ZsZXhfYmcgZmlsZSBzeXN0ZW1zLgorCitUaGUgcmVzaXplMmZzIHByb2dyYW0gbm93IGhhbmRsZXMgZGV2aWNlcyB3aGljaCBhcmUgZXhhY3RseSAxNlQ7CitwcmV2aW91c2x5IGl0IHdvdWxkIGdpdmUgYW4gZXJyb3Igc2F5aW5nIHRoYXQgdGhlIGZpbGUgc3lzdGVtIHdhcyB0b28KK2JpZy4KKworRTJmc2NrIChhbmQgdGhlIGxpYmV4dDJmcyBsaWJyYXJ5KSB3aWxsIG5vdCB1c2UgdGhlIGV4dGVuZGVkIHJlY19sZW4KK2VuY29kaW5nIGZvciBmaWxlIHN5c3RlbXMgd2hvc2UgYmxvY2sgc2l6ZSBpcyBsZXNzIHRoYW4gNjRrLCBmb3IKK2NvbnNpc3RlbmN5IHdpdGggdGhlIGtlcm5lbC4KKworUHJvZ3JhbW1pbmcgbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK0UyZnNwcm9ncyAxLjQxLjEzIHdvdWxkIG5vdCBjb21waWxlIG9uIGJpZy1lbmRpYW4gc3lzdGVtcy4gIFRoaXMgaGFzCitiZWVuIGZpeGVkLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMzMTM4MTE1KQorCitUaGUgZXh0MmZzX2Jsb2NrX2l0ZXJhdG9yMigpIGZ1bmN0aW9uIHBhc3NlZCBhbiBpbmNvcnJlY3QgcmVmX29mZnNldAordG8gaXRzIGNhbGxiYWNrIGZ1bmN0aW9uIGluIHRoZSBjYXNlIG9mIHNwYXJzZSBmaWxlcy4gIChBZGRyZXNzZXMKK1NvdXJjZWZvcmdlIEJ1ZzogIzMwODEwODcpCisgICAgCitGaXggc29tZSB0eXBlLXB1bm5pbmcgd2FybmluZ3MgZ2VuZXJhdGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIGdjYy4KKworCitFMmZzcHJvZ3MgMS40MS4xMyAoRGVjZW1iZXIgMTMsIDIwMTApCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0UyZnNjayBub3cgc3VwcG9ydHMgdGhlIGV4dGVuZGVkIG9wdGlvbiAiLUUgam91cm5hbF9vbmx5Iiwgd2hpY2gKK2NhdXNlcyBpdCB0byBvbmx5IGRvIGEgam91cm5hbCByZXBsYXkuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2NyaXB0cwordGhhdCB3YW50IHRvIGZpcnN0IHJlcGxheSB0aGUgam91cm5hbCBhbmQgdGhlbiBjaGVjayB0byBzZWUgaWYgaXQKK2NvbnRhaW5zIGVycm9ycy4KKworRTJmc2NrIHdpbGwgbm93IHN1cHBvcnQgVVVJRD0gYW5kIExBQkVMPSBzcGVjaWZpZXJzIGZvciB0aGUgLWogb3B0aW9uCisod2hpY2ggc3BlY2lmaWVzIHdoZXJlIHRvIGZpbmQgdGhlIGV4dGVybmFsIGpvdXJuYWwpLiAgKEFkZHJlc3NlcworRGViaWFuIEJ1ZyAjNTU5MzE1KQorCitFMmZzY2sgbm93IGhhcyBzdXBwb3J0IGZvciB0aGUgcHJvYmxlbXMvPHByb2JsZW0gY29kZT4vZm9yY2Vfbm8KK2NvbmZpZ3VyYXRpb24gb3B0aW9uIGluIGUyZnNjay5jb25mLCB3aGljaCBmb3JjZXMgYSBwcm9ibGVtIHRvIG5vdCBiZQorZml4ZWQuCisKK0R1bXBlMmZzIHdpbGwgbm93IGF2b2lkIHByaW50aW5nIGxhcmdlIG5lZ2F0aXZlIG9mZnNldHMgZm9yIHRoZSBiaXRtYXAKK2Jsb2NrcyBhbmQgaW5zdGVhZCBwcmludCBhIG1lc3NhZ2Ugd2hpY2ggaXMgYSBiaXQgbW9yZSBoZWxwZnVsIGZvcgorZmxleF9iZyBmaWxlIHN5c3RlbXMuCisKK01rZTJmcyB3aWxsIG5vdyBjaGVjayB0aGUgZmlsZSBzeXN0ZW0gdHlwZSAoc3BlY2lmaWVkIHdpdGggdGhlIC10CitvcHRpb24pIHRvIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIGluIHRoZSBta2UyZnMuY29uZiBmaWxlOyBpZiBpdCBpcworbm90LCBpdCB3aWxsIHByaW50IGFuIGVycm9yIGFuZCBhYm9ydC4gIElmIHRoZSB1c2FnZSB0eXBlIChzcGVjaWZpZWQKK3dpdGggdGhlIC1UIG9wdGlvbikgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmYsIG1rZTJmcyB3aWxsIHByaW50IGEKK3dhcm5pbmcgYnV0IHdpbGwgY29udGludWUuICAoQWRkcmVzc2VzIERlYmlhbiBCdWcgIzU5NDYwOSkKKworQ2xhcmlmaWVkIGVycm9yIG1lc3NhZ2UgZnJvbSByZXNpemUyZnMgY2xhcmlmeWluZyB0aGF0IG9uLWxpbmUKK3Nocmlua2luZyBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbC4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNTk5Nzg2KQorICAgIAorRml4IGFuIGUyZnNjayBidWcgdGhhdCBjb3VsZCBjYXVzZSBhIFBST0dSQU1NSU5HIEJVRyBlcnJvciB0byBiZQorZGlzcGxheWVkLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICM1NTU0NTYpCisKK0UyZnNjayB3aWxsIG9wZW4gdGhlIGV4dGVybmFsIGpvdXJuYWwgaW4gZXhjbHVzaXZlIG1vZGUsIHRvIHByZXZlbnQKK3RoZSBqb3VybmFsIGZyb20gZ2V0dGluZyB0cnVuY2F0ZWQgd2hpbGUgaXQgaXMgaW4gdXNlIGR1ZSB0byBhIHVzZXIKK2FjY2lkZW50YWxseSB0cnlpbmcgdG8gcnVuIGUyZnNjayBvbiBhIHNuYXBzaG90dGVkIGZpbGUgc3lzdGVtIHZvbHVtZS4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNTg3NTMxKQorCitGaXggYSBidWcgaW4gZTJmc2NrIHNvIGl0IGhhcyB0aGUgY29ycmVjdCB0ZXN0IGZvciB0aGUgRU9GQkxPQ0tTX0ZMCitmbGFnLgorCitUaGUgdHVuZTJmcyBwcm9ncmFtIGNhbiBub3cgc2V0IHRoZSB1bmluaXRfYmcgZmVhdHVyZSB3aXRob3V0CityZXF1aXJpbmcgYW4gZnNjay4KKworVGhlIHR1bmUyZnMsIGR1bXBlMmZzLCBhbmQgZGVidWdmcyBwcm9ncmFtcyBub3cgc3VwcG9ydCB0aGUgbmV3IGV4dDQKK2RlZmF1bHQgbW91bnQgb3B0aW9ucyBzZXR0aW5ncyB3aGljaCB3ZXJlIGFkZGVkIGluIDIuNi4zNS4KKworVGhlIGUyZnNjayBhbmQgZHVtcGUyZnMgcHJvZ3JhbXMgbm93IHN1cHBvcnQgdGhlIG5ldyBleHQ0IHN1cGVyYmxvY2sKK2ZpZWxkcyB3aGljaCB0cmFjayB3aGVyZSBhbmQgd2hlbiB0aGUgZmlyc3QgYW5kIG1vc3QgcmVjZW50IGZpbGUKK3N5c3RlbSBlcnJvcnMgb2NjdXJyZWQuICBUaGVzZSBmaWVsZHMgYXJlIGRpc3BsYXllZCBieSBkdW1wZTJmcyBhbmQKK2NsZWFyZWQgYnkgZTJmc2NrLiAgVGhlc2UgbmV3IHN1cGVyYmxvY2sgZmllbGRzIHdlcmUgYWRkZWQgaW4gMi42LjM2LgorCitEZWJ1Z2ZzIG5vdyB1c2VzIGEgbW9yZSBjb25jaWNzZSBmb3JtYXQgZm9yIGxpc3RpbmcgZXh0ZW50cyBpbiBpdHMKK3N0YXQgY29tbWFuZC4gIFRoaXMgZm9ybWF0IGFsc28gaW5jbHVkZXMgdGhlIGludGVyaW9yIGV4dGVudCB0cmVlCitibG9ja3MsIHdoaWNoIHByZXZpb3VzbHkgd2FzIG1pc3NpbmcgZnJvbSBzdGF0J3Mgb3V0cHV0IGZvcgorZXh0ZW50LWJhc2VkIGZpbGVzLgorCitEZWJ1Z2ZzIGhhcyBhIG5ldyBvcHRpb24sIC1ELCB3aGljaCB3aWxsIHJlcXVlc3QgRGlyZWN0IEkvTyBhY2Nlc3Mgb2YKK3RoZSBmaWxlIHN5c3RlbS4KKworTWtlMmZzIHdpbGwgc2tpcCBpbml0aWFsaXppbmcgdGhlIGlub2RlIHRhYmxlIGlmIGEgZGV2aWNlIHN1cHBvcnRzCitkaXNjYXJkIGFuZCB0aGUgZGlzY2FyZCBvcGVyYXRpb24gd2lsbCByZXN1bHQgaW4gemVybydlZCBibG9ja3MuCisKK0JhZGJsb2NrcyB3aWxsIG5vdyBjb3JyZWN0bHkgYmFja3NwYWNlIG92ZXIgVVRGLTggY2hhcmFjdGVycyB3aGVuCitkaXNwbGF5aW5nIGl0cyBwcm9ncmVzcyBiYXIuICAoQWRkcmVzc2VzIEdlbnRvbyBCdWcgIzMwOTkwOTsgQWRkcmVzc2VzCitEZWJpYW4gQnVncyAjNTgzNzgyIGFuZCAjNTg3ODM0KQorCitFMmZyZWVmcmFnIHdpbGwgbm93IGRpc3BsYXkgdGhlIHRvdGFsIG51bWJlciBvZiBmcmVlIGV4dGVudHMuCisKK1Jlc2l6ZTJmcyAtUCBubyBsb25nZXIgcmVxdWlyZXMgYSBmcmVzaGx5IGNoZWNrZWQgZmlsZXN5c3RlbSBiZWZvcmUKK3ByaW50aW5nIHRoZSBtaW5pbXVtIHJlc2l6ZSBzaXplLgorCitGaXhlZCBhIGZsb2F0aW5nIHBvaW50IHByZWNpc2lvbiBlcnJvciBpbiBhIGJpbmFyeSB0cmVlIHNlYXJjaCByb3V0aW5lCit0aGF0IGNhbiBsZWFkIHRvIHNlZyBmYXVsdCBpbiBlMmZzY2sgYW5kIHJlc2l6ZTJmcy4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoZXJlIGlmIGJvdGggdGhlIG9yaWdpbmFsIGFuZCBiYWNrdXAgc3VwZXJibG9jaworYXJlIGludmFsaWQgaW4gc29tZSB3YXksIGUyZnNjayB3aWxsIGZhaWwgZ29pbmcgYmFjayB0byB0aGUgb3JpZ2luYWwKK3N1cGVyYmxvY2sgYmVjYXVzZSBpdCBkaWRuJ3QgY2xvc2UgdGhlIGJhY2t1cCBzdXBlcmJsb2NrIGZpcnN0LCBhbmQKK3RoZSBleGNsdXNpdmUgb3BlbiBwcmV2ZW50ZWQgdGhlIGZpbGUgc3lzdGVtIGZyb20gYmVpbmcgcmVvcGVuZWQuCisKK0ZpeGVkIGEgYmlnIGluIGUyZnJlZWZyYWcgd2hpY2ggY2F1c2VkIGdldG9wdCBwYXJzaW5nIHRvIGZhaWwgb24KK2FyY2hpdGVjdHVyZXMgd2l0aCB1bnNpZ25lZCBjaGFycy4gIChBZGRyZXNzZXMgR2VudG9vIEJ1ZzogIzI5OTM4NikKKworQ2xhcmlmaWVkIGFuIG1rZTJmcyBlcnJvciBtZXNzYWdlIHNvIGEgbWlzc2VkIGNvbW1vbiBpbiBhbiAtRSBvcHRpb24KKyhpLmUuLCBta2UyZnMgLXQgZXh0NCAtRSBzdHJpZGU9MTI4IHN0cmlwZS13aWR0aD01MTIgL2Rldi9zZGExIikKK3Jlc3VsdHMgaW4gYSBtb3JlIHVuZGVyc3RhbmRhYmxlIGV4cGxhbmF0aW9uIHRvIHRoZSB1c2VyLgorCitNa2UyZnMgbm93IGRpc3BsYXlzIHRoZSBjb3JyZWN0IHZhbGlkIGlub2RlIHJhdGlvIHJhbmdlIHdoZW4KK2NvbXBsYWluaW5nIGFib3V0IGFuIGludmFsaWQgaW5vZGUgcmF0aW8gc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLgorCitNa2UyZnMgbm93IHVuZGVyc3RhbmRzIHRoZSBleHRlbmRlZCBvcHRpb24gImRpc2NhcmQiIGFuZCAibm9kaXNjYXJkIiwKK2FuZCB0aGUgb2xkZXIgb3B0aW9uIC1LIGlzIGRlcHJlY2F0ZWQuICBUaGUgZGVmYXVsdCBvZiB3aGV0aGVyCitkaXNjYXJkcyBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IGNhbiBiZSBjb250cm9sZWQgYnkgdGhlIG1rZTJmcy5jb25mCitmaWxlLgorCitNa2UyZnMncyBoYW5kbGluZyBvZiBsb2dpY2FsIGFuZCBwaHlzaWNhbCBzZWN0b3Igc2l6ZXMgaGFzIGJlZW4KK2ltcHJvdmVkIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCB0aGVyZSB3aWxsIGJlIHNvbWUgU1NEJ3Mgd2l0aCA4ayBhbmQKKzE2ayBwaHlzaWNhbCBzZWN0b3JzIGFycml2aW5nIHNvb24uICBNa2UyZnMgd2lsbCBubyBsb25nZXIgZm9yY2UgYmxvY2sKK3NpemUgdG8gYmUgdGhlIHBoeXNpY2FsIHNlY3RvciBzaXplLCBzaW5jZSB0aGVyZSB3aWxsIGJlIGRldmljZXMgd2hlcmUKK3RoZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgc3lzdGVtJ3MgcGFnZSBzaXplLCBhbmQKK2hlbmNlIGxhcmdlciB0aGFuIHRoZSBtYXhpbWFsIHN1cHBvcnRlZCBibG9jayBzaXplLiAgSW4gYWRkaXRpb24sIGlmCit0aGUgbWluaW1hbCBhbmQgb3B0aW1hbCBpbyBzaXplIGFyZSBub3QgZXhwb3J0ZWQgYnkgdGhlIGRldmljZSwgYW5kCit0aGUgcGh5c2ljYWwgc2VjdG9yIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGJsb2NrIHNpemUsIHRoZSBwaHlzaWNhbAorc2VjdG9yIHNpemUgd2lsbCBiZSB1c2VkIHRvIHNldCB0aGUgUmFpZCBJL08gb3B0aW1pemF0aW9uIGhpbnRzIGluIHRoZQorc3VwZXJibG9jay4KKworRTJmc2NrIHdpbGwgbm93IGRpc3BsYXkgYSBiZXR0ZXIsIG1vcmUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZQordXNlciBlbnRlcnMgYSB0eXBvJ2VkIGRldmljZSBuYW1lLCBpbnN0ZWFkIG9mIGJsYXRoZXJpbmcgb24gYWJvdXQKK2FsdGVybmF0ZSBzdXBlcmJsb2Nrcy4KKworRml4ZWQgdmFyaW91cyBEZWJpYW4gUGFja2FnaW5nIElzc3VlcworCitVcGRhdGVkL2NsYXJpZmllZCBtYW4gcGFnZXMgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzU4MDIzNiwgIzU5NDAwNCwKKyM1ODkzNDUsICM1OTEwODM7IEFkZHJlc3NlcyBMYXVuY2hwYWQgQnVnOiAjNTA1NzE5KQorCitVcGRhdGUgdGhlIENoaW5lc2UsIENoemVjaCwgRHV0Y2gsIEZyZW5jaCwgR2VybWFueSwgSW5kb25lc2lhbiwKK1BvbGlzaCwgU3dlZGlzaCwgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLgorCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeCBhIGRlcGVuZGVuY3kgZGVmaW5pdGlvbiBmb3IgdGhlIHN0YXRpYyBhbmQgcHJvZmlsZWQgYmxraWQKK2xpYnJhcmllcyB3aGljaCBjb3VsZCBjYXVzZSBjb21waWxlIGZhaWx1cmVzIGluIHNvbWUgY29uZmlndXJhdGlvbnMuCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM2MDQ2MjkpCisgICAgCitBZGQgc3VwcG9ydCBmb3IgRGlyZWN0IEkvTyBpbiB0aGUgVW5peCBJL08gYWNjZXNzIGxheWVyLgorCitGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBVbml4IEkvTyBsYXllciB3aGVuIGNoYW5naW5nIGJsb2NrIHNpemVzLgorCitGaXhlZCBtaW5vciBtZW1vcnkgbGVha3MgaW4gbWtlMmZzLgorCitBZGRlZCBhIG5ldyBmdW5jdGlvbiB0byB0aGUgZXh0MmZzIGxpYnJhcnksIGV4dDJmc19nZXRfbWVtYWxpZ24oKS4KKworVGhlIHRzdF9zdXBlcl9zaXplIHRlc3QgcHJvZ3JhbSB3aWxsIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3VwZXJibG9jaworZmllbGRzIGFyZSBjb3JyZWN0bHkgYWxpZ25lZCBhbmQgd2lsbCBwcmludCB0aGVtIG91dCBzbyB0aGV5IGNhbiBiZQorbWFudWFsbHkgY2hlY2tlZCBmb3IgY29ycmVjdG5lc3MuCisKK0ZpeGVkIHNvbWUgbWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZvciB0ZXN0IHByb2dyYW1zIGluIGxpYi9leHQyZnMuCisKK1Jlc2VydmVkIHRoZSBmZWF0dXJlIGZsYWdzIGFuZCBzdXBlcmJsb2NrIGZpZWxkcyBuZWVkZWQgZm9yIHRoZSBOZXh0Mworc25hcHNob3QgZmVhdHVyZS4KKworUmVzZXJ2ZWQgdGhlIGZlYXR1cmUgZmxhZ3MgZm9yIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9ESVJEQVRBIGFuZAorRVhUNF9JTkNPTVBBVF9FQV9JTk9ERS4KKworCitFMmZzcHJvZ3MgMS40MS4xMiAoTWF5IDE3LCAyMDEwKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTWtlMmZzIG5vdyBnaXZlcyBhIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSBpZiB0aGUgZXh0ZXJuYWwgam91cm5hbAorZGV2aWNlIGlzIG5vdCBmb3VuZC4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWcgIzU3MjkzNSkKKworUmVzaXplMmZzIC1QIHdpbGwgbm93IHJlZnVzZSB0byBwcmludCBhIG1pbmltdW0gc2l6ZSBpZiB0aGUgZmlsZQorc3lzdGVtIGlzIG5vdCBjbGVhbi4gIFByZXZpb3VzbHkgaXQgd291bGQgZ28gYWhlYWQgYW5kIHByaW50IGEgbWluaW11bQorc2l6ZSBhbnl3YXksIHdoaWNoIG1pZ2h0IG5vdCBiZSBjb3JyZWN0LCBsZWFkaW5nIHRvIHVzZXIgY29uZnVzaW9uLgorCitFMmZzY2sgbm93IHRlc3RzIGZvciBleHRlbnRzIHRoYXQgYmVnaW4gYXQgcGh5c2ljYWwgYmxvY2sgMCBhbmQKK3JlamVjdHMgdGhlbSBhcyBpbnZhbGlkLiAgKEFkZHJlc3NlcyBHb29nbGUgQnVnOiAjMjU3MzgwNikKKyAgICAKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayB3aGljaCBjb3VsZCBjYXVzZSBpdCB0byBjcmFzaCB3aGVuIHRyeWluZyB0bworcmVtb3ZlIGFuIGludmFsaWQgZXh0ZW50IGFuZCB0aGUgYmxvY2sgYml0bWFwcyBoYWRuJ3QgeWV0IGJlZW4gbG9hZGVkLgorKEFkZHJlc3NlcyBTb3VyY2VGb3JnZSBCdWc6ICMyOTcxODAwKQorICAgIAorRTJmc2NrIG5vdyB3aWxsIGNvbXBsZXRlbHkgc2tpcCB0aW1lLWJhc2VkIGNoZWNrcyBpZiB0aGUgc3lzdGVtIGNsb2NrCitsb29rcyBpbnNhbmUgb3IgdGhlIG9wdGlvbiBicm9rZW5fc3lzdGVtX2Nsb2NrIGlzIHNldCBpbgorL2V0Yy9lMmZzY2suY29uZi4KKworRTJmc2NrIHdvdWxkIHByZXZpb3VzbHkgcmVwb3J0IGFuIGlfYmxvY2tzIGNvcnJ1cHRpb24gZm9yIGEgNFQgZmlsZQorY3JlYXRlZCB1c2luZyBwb3NpeF9mYWxsb2NhdGU7IHRoaXMgYnVnIGhhcyBiZWVuIGZpeGVkLgorCitFMmZzY2sgd2lsbCBub3cgY29ycmVjdGx5IG1hcmsgYSBzcGFyc2Ugam91cm5hbCBhcyBpbnZhbGlkIGFuZCB3aWxsCitkZWxldGUgYW5kIHJlY3JlYXRlIHRoZSBqb3VybmFsIHRvIGFkZHJlc3MgdGhlIHByb2JsZW0uCisKK0UyZnNjayB3b3VsZCBwcmV2aW91c2x5IGluY29ycmVjdGx5IGFzayB0aGUgdXNlciB3aGV0aGVyIHNoZSB3b3VsZAorbGlrZSB0byBhYm9ydCB0aGUgZmlsZSBzeXN0ZW0gY2hlY2sgYWZ0ZXIgZmluZGluZyBhIHByb2JsZW0gLS0tIGFuZAordGhlbiBhYm9ydCByZWdhcmRsZXNzIG9mIHRoZSB1c2VyJ3MgYW5zd2VyLiAgVGhpcyBpcyBhbm5veWluZywgYW5kCitoYXMgYmVlbiBmaXhlZC4KKworRTJmc2NrIGNhbiBub3cgY29udGludWUgZXZlbiBpZiBpdCBmYWlscyB0byByZWNyZWF0ZSB0aGUgcmVzaXplCitpbm9kZTsgcHJldmlvdXNseSBpdCB3b3VsZCBqdXN0IGFib3J0IHRoZSBmaWxlIHN5c3RlbSBjaGVjaworYWx0b2dldGhlci4KKworRTJmc2NrIGNvdWxkIHBvdGVudGlhbGx5IHJlbW92ZSBkaXJlY3RvcnkgZW50cmllcyBmb3IgaW5vZGVzIGZvdW5kIGluCit0aGUgdW51c2VkIHJlZ2lvbiBvZiB0aGUgaW5vZGUgdGFibGU7IHRoaXMgd291bGQgZ2VuZXJhbGx5IGhhcHBlbiBvbgorZXh0NCBmaWxlIHN5c3RlbXMgdGhhdCBkbyBub3QgdXNlIGpvdXJuYWxpbmcuICBUaGlzIGJ1ZyBoYXMgYmVlbiBmaXhlZAorYnkgbm90IGNsZWFyaW5nIHRoZXNlIGRpcmVjdG9yeSBlbnRyaWVzIG9uY2UgaXQgaGFzIGJlZW4gZXN0YWJsaXNoZWQKK3RoYXQgYmdfdW51c2VkX2lub2RlcyBtYXkgbm90IGJlIHRydXN0d29ydGh5OyBvbmNlIHBhc3MgIzIgaGFzIGJlZW4KK2NvbXBsZXRlZCwgZTJmc2NrIHdpbGwgcmVzdGFydCB0aGUgZmlsZSBzeXN0ZW0gY2hlY2sgZnJvbSB0aGUKK2JlZ2lubmluZywgYW5kIHRoZW4gaXQgd2lsbCBiZSBzYWZlIHRvIGRlbGV0ZSBhbnkgZGlyZWN0b3J5IGVudHJpZXMKK3BvaW50aW5nIHRvIGlub2RlcyB0aGF0IGFwcGVhciB0byBiZSBkZWxldGVkLiAgKEFkZHJlc3NlcyBHb29nbGUgQnVnOgorIzI2NDIxNjUpCisgICAgCitFMmZzY2sgd2lsbCBub3QgdHJ5IHRvIHNldCB0aGUgYmxvY2sgZ3JvdXAgY2hlY2tzdW1zIGlmIHRoZSB1c2VyCitjYW5jZWxzIHRoZSBmc2NrIHdpdGggYSBjb250cm9sLUMuICBJdCdzIGEgYmFkIGlkZWEgdG8gc2V0IHRoZQorY2hlY2tzdW1zIGlmIGUyZnNjayBoYXNuJ3QgYmVlbiBjb21wbGV0ZWQsIGFuZCBpdCBvZnRlbiByZXN1bHRzIGFuIHRoZQorZXJyb3IgbWVzc2FnZSwgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIHdoaWxlIHNldHRpbmcgYmxvY2sgZ3JvdXAKK2NoZWNrc3VtIGluZm8iLiAgKEFkZHJlc3NlcyBMYXVuY2hwYWQgQnVnOiAjNTgyMDM1KQorCitUaGUgbWtlMmZzIHByb2dyYW0gbm93IHF1ZXJpZXMgdGhlIGtlcm5lbCBmb3IgdGhlIHBoeXNpY2FsIGFzIHdlbGwgYXMKK3RoZSBsb2dpY2FsIHNlY3RvciBzaXplLCBhbmQgd2lsbCBub3QgYWxsb3cgYSBibG9ja3NpemUgYmVsb3cgdGhlCitsb2dpY2FsLCBhbmQgd2lsbCBzdHJvbmdseSBlbmNvdXJhZ2UgYSBibG9ja3NpemUgYXQgbGVhc3QgYXMgYmlnIGFzCit0aGUgcGh5c2ljYWwgYmxvY2tzaXplLiAgVGhpcyBpcyBuZWVkZWQgZm9yIDRrIHNlY3RvciBkcml2ZXMgdGhhdAorZW11bGF0ZSA1MTIgYnl0ZSBzZWN0b3Igc2l6ZXMuCisKK01rZTJmcyB3aWxsIG5vdyBhbGxvdyBhIGZsZXhfYmcgc2l6ZSBvZiAxLiAgVGhpcyBpcyB1bnVzdWFsLCBhbmQKK3JhcmVseSBuZWVkZWQsIGJ1dCBpdCBpcyBhIGxlZ2FsIHZhbHVlLgorCitFMmZzY2sgd2lsbCBjaGVjayBmb3IgY2FzZXMgd2hlcmUgdGhlIEVPRkJMT0NLU19GTCBpcyBzZXQgd2hlbiBpdCBpcworbm90IG5lZWRlZCwgYW5kIG9mZmVyIHRvIGNsZWFyIGl0OyB0aGlzIGlzIGEgc2lnbiBvZiBhIGtlcm5lbCBidWcsIGJ1dAorbW9yZSBpbXBvcnRhbnRseSwgc29tZSByZWxlYXNlZCBrZXJuZWxzIG1heSBjcmFzaCB3aGVuIHRoaXMgc2l0dWF0aW9uCitpcyBlbmNvdW50ZXJlZCBvbiBleHQ0IGZpbGUgc3lzdGVtcy4gIChBZGRyZXNzZXMgR29vZ2xlIEJ1ZzogIzI2MDQyMjQpCisgICAgCitFMmZzY2sgd2lsbCB1c2UgdGhlIEVPRkJMT0NLU19GTCBmbGFnIGV4Y2x1c2l2ZWx5IHRvIGNoZWNrIHdoZXRoZXIKK2lfc2l6ZSBpcyBjb3JyZWN0LiAgKEtlcm5lbHMgc3RhcnRpbmcgd2l0aCAyLjYuMzQgd2lsbCBzZXQKK0VPRkJMT0NLU19GTC4pCisKK1RoZSBjb21fZXJyIGxpYnJhcnkgd2lsbCBub3cgb25seSBvdXRwdXQgXk0gKGEgQ1IgY2hhcmFjdGVyKSB3aGVuIHRoZQordHR5IGlzIGluIHJhdyBtb2RlLgorCitVcGRhdGUgdGhlIEN6ZWNoLCBDaGluZXNlLCBEdXRjaCwgRnJlbmNoLCBHZXJtYW55LCBJbmRvbmVzaWFuLCBQb2xpc2gsCithbmQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM1NzEyNDcsICM1NjM0ODcpCisKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBub3cgdXNlcyBpdHMgb3duIG1rZTJmcy5jb25mIGZpbGUsIHNvIHRoYXQKK2Rvd25zdHJlYW0gZGlzdHJpYnV0aW9ucyB3YW50IGNoYW5nZSB0aGUgbWtlMmZzLmNvbmYgZmlsZSB3aGljaCBpcworZGlzdHJpYnV0ZWQgaW4gdGhlIFJQTSBvciBkcGtnIGZpbGUsIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc2NyZXdpbmcKK3VwIHRoZSByZWdyZXNzaW9uIHRlc3QgcmVzdWx0cy4KKworQWx3YXlzIGJ1aWxkIG5hbWVpLm8gc28gdGhhdCBidWlsZGluZyB3aXRoIGNvbmZpZ3VyZSAtLWRpc2FibGUtZGVidWdmcword29ya3MgY29ycmVjdGx5LiAgTG9uZy10ZXJtLCBpZiB3ZSBjYXJlIGFib3V0IHJlZHVjZWQgZTJmc3Byb2dzCitidWlsZHMsIHdlIG5lZWQgYSBtb3JlIGdlbmVyYWwgc29sdXRpb24gZm9yIGRlY2lkaW5nIHdoYXQgLm8gZmlsZXMgYXJlCituZWVkZWQgZm9yIGEgcGFydGljdWxhciBidWlsZC4gIEdpdmVuIHRoYXQgaW5zdGFsbCBmbG9wcGllcyBhcmUgZ29pbmcKKyhnb25lPykgdGhlIHdheSB0aGUgZG9kbyBiaXJkLCB3ZSBwcm9iYWJseSBkb24ndCBjYXJlLCB0aG91Z2guCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzI5MTE0MzMpCisKK0FkZCBjb25maWd1cmUgb3B0aW9ucyAtLWVuYWJsZS1zeW1saW5rLWJ1aWxkIGFuZAorLS1lbmFibGUtc3ltbGluay1pbnN0YWxsLCB3aGljaCBhbGxvdyBlMmZzcHJvZ3MgYmUgYnVpbHQgdXNpbmcKK3N5bWxpbmtzIGluc3RhZCBvZiBoYXJkIGxpbmtzLCBhbmQgdG8gYmUgaW5zdGFsbGVkIHVzaW5nIHN5bWxpbmtzCitpbnN0ZWFkIG9mIGhhcmQgbGlua3MsIHJlc3BlY3RpdmVseS4gIEl0IGlzIHVzZWZ1bCB3aGVuIHRoZSBmaWxlCitzeXN0ZW0gd2hlcmUgdGhlIGJ1aWxkIGlzIHRha2luZyBwbGFjZSwgb3IgdGhlIGZpbGUgc3lzdGVtIHdoZXJlCitlMmZzcHJvZ3MgaXMgaW5zdGFsbGVkLCBjYW4ndCBoYW5kbGUgaGFyZCBsaW5rcyBmb3Igc29tZSByZWFzb24uCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE0MzYyOTQpCisKK0ZpeGVkIGNvbXBpbGUgd2FybmluZyBpbiBta2UyZnMuYy4KKworICAgIAorRTJmc3Byb2dzIDEuNDEuMTEgKE1hcmNoIDE0LCAyMDEwKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFMmZzY2sgd2lsbCBubyBsb25nZXIgZ2l2ZSBhIGZhdGFsIGVycm9yIGFuZCBhYm9ydCBpZiB0aGUgcGh5c2ljYWwKK2RldmljZSBoYXMgYmVlbiByZXNpemVkIGJleW9uZCAyKiozMiBibG9ja3MuICAoQWRkcmVzc2VzIExhdW5jaHBhZAorQnVnOiAjNTIxNjQ4KQorCitEZWJ1Z2ZzIGhhcyBhIGJ1ZyBmaXhlZCBzbyB0aGF0ICJsb2dkdW1wIC1iIDxibGs+IiBub3cgcHJvcGVybHkgc2hvd3MKK3RoZSBhbGxvY2F0aW9uIHN0YXR1cyBvZiB0aGUgYmxvY2sgPGJsaz4uICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6CisjNTY0MDg0KQorICAgIAorRTJmc2NrIG5vdyBwcmludHMgYSBtdWNoIG1vcmUgZW1waGF0aWMgYW5kIGhvcGVmdWxseSBzY2FyeSBtZXNzYWdlCit3aGVuIGEgZmlsZSBzeXN0ZW0gaXMgZGV0ZWN0ZWQgYXMgbW91bnRlZCB3aGlsZSBkb2luZyBhIHJlYWQvd3JpdGUKK2NoZWNrIG9mIHRoZSBmaWxlc3lzdGVtLiAgSG9wZWZ1bGx5IHRoaXMgd2lsbCBkaXNzdWFkZSB1c2VycyBmcm9tCit0aGlua2luZywgInN1cmVseSB0aGF0IG1lc3NhZ2UgZG9lc24ndCBhcHBseSB0byAqbWUqIiA6LSgKKworRTJmc2NrIC1uIHdpbGwgbm93IGFsd2F5cyBvcGVuIHRoZSBmaWxlIHN5c3RlbSByZWFkLW9ubHkuICBXZSBub3cKK2Rpc2FsbG93IGNlcnRhaW4gY29tYmluYXRpb24gb2Ygb3B0aW9ucyB3aGljaCBwcmV2aW91c2x5IHdlcmUgbWFudWFsCitleGNlcHRpb25zOyB0aGlzIGlzIGJhZCBiZWNhdXNlIGl0IGNhdXNlcyB1c2VycyB0byB0aGluayB0aGV5IGFyZQorc21hcnRlciB0aGFuIHRoZXkgcmVhbGx5IGFyZS4gIFNvICItbiAtYyIsICItbiAtbCIsICItbiAtTCIsIGFuZCAiLW4KKy1EIiBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIChBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZzogIzUzNzQ4MykKKyAgICAKK0luIGUyZnNwcm9ncyAxLjQxLjEwLCBta2UyZnMgd291bGQgYXNrIGZvciBjb25maXJtYXRpb24gdG8gcHJvY2VlZCBpZgoraXQgZGV0ZWN0ZWQgYSBiYWRseSBhbGlnbmVkIHBhcnRpdGlvbi4gIFVuZm9ydHVuYXRlbHksIHRoaXMgYnJva2Ugc29tZQorZGlzdHJpYnV0aW9uIGluc3RhbGxhdGlvbiBzY3JpcHRzLCBzbyBpdCBub3cganVzdCBwcmludHMgdGhlIHdhcm5pbmcKK21lc3NhZ2UgYW5kIHByb2NlZWRzLiAgKEFkZHJlc3NlcyBSZWQgSGF0IEJ1ZzogIzU2OTAyMS4gQWRkcmVzc2VzCitMYXVuY2hwYWQgQnVnOiAjNTMwMDcxKQorICAgIAorTWtlMmZzIHdvdWxkIHRha2UgYSBsb25nIHRpbWUgdG8gY3JlYXRlIHZlcnkgbGFyZ2Ugam91cm5hbCBmaWxlcyBmb3IKK2V4dDQuICBUaGlzIHdhcyBjYXVzZWQgYnkgYSBidWcgaW4gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUyKCksIHdoaWNoIGlzCitub3cgZml4ZWQuCisKK0UyZnNjayBub3cgdW5kZXJzdGFuZHMgdGhlIEVPRkJMT0NLU19GTCBmbGFnIHdoaWNoIHdpbGwgYmUgdXNlZCBpbgorMi42LjM0IGtlcm5lbHMgdG8gbWFrZSBlMmZzY2sgbm90IGNvbXBsYWluIGFib3V0IGJsb2NrcyBkZWxpYmVyYXRlbHkKK2ZhbGxvY2F0ZWQoKSBiZXlvbmQgYW4gaW5vZGUncyBpX3NpemUuCisKK0UyZnNwcm9ncyAxLjQxLjEwIGludHJvZHVjZWQgYSByZWdyZXNzaW9uIChpbiBjb21taXQgYjcxZTAxOCkgd2hlcmUKK2UyZnNjayAtZkQgY2FuIGNvcnJ1cHQgbm9uLWluZGV4ZWQgZGlyZWN0b3JpZXMgd2hlbiBhcmUgZXhpc3RzIG9uZSBvcgorbW9yZSBmaWxlIG5hbWVzIHdoaWNoIGFscGhhYmV0aWNhbGx5IHNvcnQgYmVmb3JlICIuIi4gIFRoaXMgY2FuIGhhcHBlbgord2l0aCBleHQyIGZpbGVzeXN0ZW1zIG9yIGZvciBzbWFsbCBkaXJlY3RvcmllcyAodGFrZSBsZXNzIHRoYW4gYSBsb2NrKQord2hpY2ggY29udGFpbiBmaWxlbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGEgc3BhY2Ugb3Igc29tZSBvdGhlcgorcHVuY3R1YXRpb24gbWFyay4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzU3MzkyMywgQWRkcmVzc2VzIExhdW5jaHBhZAorQnVnOiAjNTI1MTE0KQorCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZCBuZXcgdGVzdCwgZl9yZWhhc2hfZGlyLCB3aGljaCBjaGVja3MgdG8gbWFrZSBzdXJlIGUyZnNjayAtRCB3b3JrcworY29ycmVjdGx5LgorCitUaGUgbGliY29tX2VyciBmdW5jdGlvbiBub3cgaGFzIHN1cHBvcnQgZm9yIEhlaW1kYWwncyBjb21fcmlnaHRfcgorZnVuY3Rpb24oKS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMjk2Mzg2NSwgQWRkcmVzc2VzIERlYmlhbgorQnVnOiAjNTU4OTEwKQorCisKK0UyZnNwcm9ncyAxLjQxLjEwIChGZWJydWFyeSA3LCAyMDEwKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeCByZXNpemUyZnMgYnVnIHdoaWNoIGNhdXNlcyBpdCB0byBhY2Nlc3MgaW52YWxpZCBtZW1vcnkuCisKK0FkZCBsaWJzcyBzdXBwb3J0IGZvciBsaWJyZWFkbGluZS5zby42LgorICAgIAorRml4IGUyZnNjaydzIGNoZWNrIGZvciBleHRlbnQtbWFwcGVkIGRpcmVjdG9yeSB3aXRoIGFuIGluY29ycmVjdCBmaWxlCit0eXBlLgorCitBZGQgbmV3IGUyZnNjay5jb25mIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBkZWZhdWx0L2Jyb2tlbl9zeXN0ZW1fY2xvY2sKK3RvIHN1cHBvcnQgc3lzdGVtcyB3aXRoIGJyb2tlbiBDTU9TIGhhcmR3YXJlIGNsb2Nrcy4gIEFsc28sIHNpbmNlIHRvbworbWFueSBkaXN0cmlidXRpb25zIHNlZW0gdG8gaGF2ZSBicm9rZW4gdmlydHVhbGl6YXRpb24gc2NyaXB0cyBub3csCitlMmZzY2sgd2lsbCBieSBkZWZhdWx0IGFjY2VwdCBkYXRlcyB3aGljaCBhcmUgb2ZmIGJ5IHVwIHRvIDI0IGhvdXJzIGJ5CitkZWZhdWx0LiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzU1OTc3NiwgIzU1NzYzNikKKworRml4IGEgYnVnIHdoZXJlIG1rZTJmcyBtYXkgbm90IHVzZSB0aGUgYmVzdCBwbGFjZW1lbnQgb2YgdGhlIGlub2RlCit0YWJsZSB3aGVuIHRoZXJlIGlzIG9ubHkgcm9vbSBmb3IgYSBzaW5nbGUgYmxvY2sgZ3JvdXAgaW4gdGhlIGxhc3QKK2ZsZXhfYmcuCisKK0UyZnNjayBpcyBub3cgc21hcnRlciB3aGVuIGl0IG5lZWRzIHRvIGFsbG9jYXRlIGJsb2NrcyBpbiB0aGUgY291cnNlCitvZiBmaXhpbmcgZmlsZSBzeXN0ZW0gcHJvYmxlbXMuICBUaGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiBzcHVyaW91cworZGlmZmVyZW5jZXMgZm91bmQgaW4gcGFzcyAjNS4KKworRTJmc2NrIHdpbGwgbm8gbG9uZ2VyIHJlaGFzaCBkaXJlY3RvcmllcyB3aGljaCBmaXQgaW4gYSBzaW5nbGUKK2RpcmVjdG9yeSBibG9jay4KKworRTJmc2NrIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBob2xlcyBpbiBleHRlbnQtbWFwcGVkIGRpcmVjdG9yaWVzIChpLmUuLAorc3BhcnNlIGRpcmVjdG9yaWVzIHdoaWNoIHVzZSBleHRlbnRzKS4KKworRml4IGJpZy1lbmRpYW4gcHJvYmxlbXMgd2l0aCBleHQyZnNfYm1hcCgpIGFuZCBleHQyZnNfYm1hcDIoKS4KKworRml4IGEgYnVnIGluIGZpbGVmcmFnIHdoZXJlIG9uIHBsYXRmb3JtcyB3aGljaCBjYW4gYWxsb3cgZmlsZSBzeXN0ZW1zCit3aXRoIDhrIGJsb2NrcywgdGhhdCBpdCBkb2Vzbid0IGNvcmUgZHVtcCB3aGVuIGl0IHNlZXMgYSBmaWxlIHN5c3RlbQord2l0aCA4ayBibG9jayBzaXplcy4gIChUaGFua3MgdG8gTWlrdWxhcyBQYXRvY2thIGZvciBwb2ludGluZyB0aGlzCitvdXQuKQorCitFMmZzY2sgd2lsbCBjb3JyZWN0bHkgZml4IGRpcmVjdG9yaWVzIHRoYXQgYXJlIGhhdmUgYW4gaW5hY2N1cmF0ZQoraV9zaXplIGFzIHdlbGwgYXMgb3RoZXIgcHJvYmxlbXMgaW4gYSBzaW5nbGUgcGFzcywgaW5zdGVhZCBvZgorcmVxdWlyaW5nIHR3byBlMmZzY2sgcnVucyBiZWZvcmUgdGhlIGZpbGUgc3lzdGVtIGlzIGZ1bGx5IGZpeGVkLgorCitGaXggZTJmc2NrIHNvIGl0IHdpbGwgY29ycmVjdGx5IGZpbmQgYW5kIGRldGVjdCBkdXBsaWNhdGUgZGlyZWN0b3J5CitlbnRyaWVzIGZvciBub24taW5kZXhlZCBkaXJlY3Rvcmllcy4gICggQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzoKKyMyODYyNTUxKQorICAgIAorTWtlMmZzIHdpbGwgdXNlIEJMS0RJU0NBUkQgdG8gcHJlLWRpc2NhcmQgYWxsIGJsb2NrcyBvbiBhbiBTU0Qgb3IKK3RoaW5seS1wcm92aXNpb25lZCBzdG9yYWdlIGRldmljZS4gIFRoaXMgY2FuIGJlIGRpc2FibGVkIHVzaW5nIHRoZSAtSworb3B0aW9uLgorCitFbmhhbmNlIGxpYmV4dDJmcyBzbyBpdCB3b3JrcyBhcm91bmQgYnVnIGluIExpbnV4IHZlcnNpb24gMi42LjE5CithbmQgZWFybGllciB3aGVyZSB0aGUgL3Byb2Mvc3dhcHMgZmlsZSB3YXMgbWlzc2luZyB0aGUgaGVhZGVyIG9uCit0aGUgZmlyc3QgbGluZS4KKworRml4IGJ1ZyBpbiBMaW51eCB2ZXJzaW9uIDIuNi4xOSBhbmQgZWFybGllciB3aGVyZSB0aGUgL3Byb2Mvc3dhcHMgZmlsZQord2FzIG1pc3NpbmcgdGhlIGhlYWRlciBvbiB0aGUgZmlyc3QgbGluZS4KKworRml4IHNvbWUgYmlnLWVuZGlhbiBidWdzIGluIGUyZnNjayBhbmQgbGliZXh0MmZzLgorCitGaXggcmVzaXplMmZzIHNvIGl0IHdvcmtzIGNvcnJlY3RseSBvbiBmaWxlIHN5c3RlbXMgd2l0aCBleHRlcm5hbAoram91cm5hbHMgaW5zdGVhZCBvZiBmYWlsaW5nIGVhcmx5IHdpdGggdGhlIGVycm9yICJJbGxlZ2FsIGlub2RlCitudW1iZXIiLgorCitGaXggbGlic3Mgc28gdGhhdCBpdCBkb2VzIG5vdCBzZWcgZmF1bHQgd2hlbiB1c2luZyBhIHJlYWRsaW5lIGxpYnJhcnkKK3doaWNoIGRvZXMgbm90IHN1cHBseSBhIHJlYWRsaW5lX3NodXRkb3duKCkgZnVuY3Rpb24uCisKK1VwZGF0ZWQgZHVtcGUyZnMncyB1c2FnZSBtZXNzYWdlIHNvIGl0IGNvcnJlY3RseSBnaXZlcyB0aGUgcmlnaHQKK2FyZ3VtZW50cyBzdW1tYXJ5IGZvciAiLW8gc3VwZXJibG9jaz08bnVtPiIgYW5kICItbyBibG9ja3NpemU9PG51bT4iLgorKEFkZHJlc3NlcyBMYXVuY2hwYWQgQnVnOiAjNDQ4MDk5KQorICAgCitUZWFjaCBsaWJleHQyZnMgdG8gaWdub3JlIHRoZSBoaWdoIDMyIGJpdHMgb2YgdGhlIGlfYmxvY2tzIGZpZWxkCit3aGVuIGh1Z2VfZmlsZSBmaWxlIHN5c3RlbSBmZWF0dXJlIGlzIHNldCwgYnV0IHRoZSBpbm9kZSBkb2VzIG5vdAoraGF2ZSB0aGUgSFVHRV9GSUxFX0ZMIGZsYWcgc2V0LgorCitGaXggZTJmc2NrJ3MgaGFuZGxpbmcgb2YgNjQtYml0IGlfYmxvY2tzIGZpZWxkcy4KKworRTJmc2NrIHdpbGwgbm93IHByaW50ICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIiwgIklsbGVnYWwKK2RvdWJsZS1pbmRpcmVjdCBibG9jayIsIGV0Yy4sIGluc3RlYWQgb2YgIklsbGVnYWwgYmxvY2sgIy0xIiBvcgorIklsbGVnYWwgYmxvY2sgIy0yIiwgZXRjLiAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgZm9yIHVzZXJzIHRvCit1bmRlcnN0YW5kIHdoYXQgaGFzIGdvbmUgd3JvbmcuICAoQWRkcmVzc2VzIFNvdXJjZUZvcmdlIEJ1ZzogIzI4NzE3ODIpCisKK01rZTJmcyBub3cgd2lsbCBvYnRhaW4gZ2V0IGRldmljZSB0b3BvbG9neSBpbmZvcm1hdGlvbiBmcm9tIGJsa2lkIGFuZAordXNlIGl0IHRvIHBvcHVsYXRlIHRoZSBzdXBlcmJsb2NrIHN0cmlkZSBhbmQgc3RyaXBlIHNpemVzLiAgSXQgd2lsbAorYWxzbyB3YXJuIGlmIHRoZSBibG9jayBkZXZpY2UgaXMgbWlzYWxpZ25lZAorCitGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWtzIGluIGZzY2sgYW5kIGRlYnVnZnMuICAoQWRkcmVzc2VzIE5vdmVsbCBCdWc6CisjIzUyNDUyNikKKworRml4IHRoZSBsaWJleHQyZnMgbGlicmFyeSBjb2RlIHRvIHJvdW5kIHVwIHRoZSBiaXRtYXAgc2l6ZSB0byBhIDQtYnl0ZQorYm91bmRhcnksIHRvIHByZXZlbnQgc3B1cmlvdXMgc2VnIGZhdWx0cyBjYXVzZWQgYnkgdGhlIHg4NgorYXJjaGl0ZWN0dXJlLiAgVGhpcyBkb2Vzbid0IGFmZmVjdCBMaW51eCBzeXN0ZW1zLCBidXQgd2FzIGEgbWFqb3IKK3Byb2JsZW0gb24gYSBudW1iZXIgb2YgKkJTRCBzeXN0ZW1zLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjMjMyODcwOCkKKworRml4IHJlc2l6ZTJmcydzIG1pbmltdW0gc2l6ZSByZXF1aXJlZCBmb3IgYSBmaWxlIHN5c3RlbSBzbyBpdCBkb2Vzbid0CitmYWlsIHdoZW4gInJlc2l6ZTJmcyAtTSIgaXMgcnVuLiAgKEFkZHJlc3NlcyBSZWRIYXQgQnVnemlsbGE6ICM1MTkxMzEpCisgICAgCitEdW1wZTJmcyBub3cgcHJpbnRzIHN1bW1hcnkgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRlbnRzIG9mIHRoZQoram91cm5hbC4KKyAgICAKK0F2b2lkIHByaW50aW5nIHNjYXJ5IGVycm9yIG1lc3NhZ2VzIHdoZW4gZTJmc2NrIHN0YXJ0cyBydW5uaW5nCitwcm9ibGVtcyBvbiBsb3ctbWVtb3J5IHN5c3RlbXMsIGFzIGl0IHRlbmRzIHRvIHBhbmljIGFuZCBtaXNsZWFkIHRoZQordXNlci4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzUwOTUyOSkKKworRml4IGJsa2lkJ3MgbW9kdWxlcy5kZXAgcGFyc2VyIHNvIGl0IGhhbmRsZXMgY29tcHJlc3NlZCAoLmtvLmd6KQorbW9kdWxlcyBmaWxlcy4gIChBZGRyZXNzIFJlZCBIYXQgQnVnOiAjNTE4NTcyKQorICAgIAorRml4IHR1bmUyZnMgc28gaXQgY2FuIGFkZCBhIGpvdXJuYWwgd2hlbiBhbiBleHRlbnQtZW5hYmxlZCBmaWxlIHN5c3RlbQoraXMgbW91bnRlZC4gIChBZGRyZXNzZXMgTGF1bmNocGFkIGJ1ZzogIzQxNjY0OCkKKworVXBkYXRlIEN6ZWNoLCBJbmRvbmVzaWFuLCBQb2xpc2ggYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zIChmcm9tIHRoZQorVHJhbnNsYXRpb24gUHJvamVjdCkuCisgICAgCitVcGRhdGUvY2xhcmlmeSBtYW4gcGFnZXMuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzI4MjIxODYpCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM1NDAxMTEpCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb25maWd1cmUgc2NyaXB0IHN1cHBvcnRzIHRoZSAtLXdpdGgtY2MsIC0td2l0aC1jY29wdHMsIGFuZAorLS13aXRoLWxkb3B0cyBvcHRpb25zLiAgSW5zdGVhZCwgdGhlIG1vcmUgc3RhbmRhcmQgdXNlIG9mIENDPSwKK0NDRkxBR1M9LCBhbmQgTERGTEFHUz0gaW4gdGhlIGNvbmZpZ3VyZSBjb21tYW5kIGxpbmUgaXMgdXNlZCBpbnN0ZWFkLgorQWxzbywgLS13aXRoLWxkLCB3aGljaCBuZXZlciB3b3JrZWQsIHdhcyBhbHNvIHJlbW92ZWQuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzI4NDMyNDgpCisKK1RoZSBpbi10cmVlIGhlYWRlciBmaWxlcyBhcmUgb25seSB1c2VkIGlmIHRoZSBpbi10cmVlIHV1aWQgb3IgYmxraWQKK2xpYnJhcmllcyBhcmUgdXNlZC4gIE90aGVyd2lzZSwgdXNlIHRoZSBzeXN0ZW0tcHJvdmlkZWQgdXVpZCBvciBibGtpZAoraGVhZGVyIGZpbGVzIGlmIHVzaW5nIHRoZSBzeXN0ZW0tcHJvdmlkZWQgbGlicmFyaWVzLgorCitGaXggc29tZSBidWlsZCBmYWlsdXJlcyBjYXVzZWQgYnkgLS1kaXNhYmxlLSogY29uZmlndXJlIG9wdGlvbnMuCisKK1dvcmsgYXJvdW5kIGEgYnVnIGluIGF1dG9jb25mIDIuNjQuCisKKworRTJmc3Byb2dzIDEuNDEuOSAoQXVndXN0IDIyLCAyMDA5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggYSBidWcgaW4gZTJmc2NrIHJvdXRpbmVzIGZvciByZWFsbG9jYXRpbmcgYW4gaW5vZGUgdGFibGUgd2hpY2gKK2NvdWxkIGNhdXNlIGl0IHRvIGxvb3AgZm9yZXZlciBvbiBhbiBleHQ0IGZpbGVzeXN0ZW0gd2l0aCB0aGUgRkxFWF9CRworZmlsZXN5c3RlbSBmZWF0dXJlIHdpdGggYSByZWxhdGl2ZWx5IHJhcmUgKGFuZCBzcGVjaWZpYykgZmlsZXN5c3RlbQorY29ycnVwdGlvbi4gIFRoaXMgZml4IGNhdXNlcyBlMmZzY2sgdG8gdHJ5IHRvIGZpbmQgc3BhY2UgZm9yIGEgbmV3Citwb3J0aW9uIG9mIHRoZSBpbm9kZSB0YWJsZSBpbiB0aGUgY29udGFpbmluZyBmbGV4X2JnLCBhbmQgaWYgdGhhdAorZmFpbHMsIHRoZSBuZXcgcG9ydGlvbiBvZiB0aGUgaW5vZGUgdGFibGUgd2lsbCBiZSBhbGxvY2F0ZWQgaW4gYW55CitmcmVlIHNwYWNlIGF2YWlsYWJsZSBpbiB0aGUgZmlsZXN5c3RlbS4KKworTWFrZSBlMmZzY2sgbGVzcyBhbm5veWluZyBieSBvbmx5IGFza2luZyBmb3IgcGVybWlzc2lvbiB0byByZWxvY2F0ZSBhCitibG9jayBncm91cCdzIGlub2RlIHRhYmxlIG9uY2UsIGluc3RlYWQgb2YgZm9yIGV2ZXJ5IG92ZXJsYXBwaW5nCitibG9jay4gIFNpbWlsYXJseSwgb25seSBhc2sgb25jZSB0byByZWNvbXB1dGUgdGhlIGJsb2NrIGdyb3VwCitjaGVja3N1bXMsIGluc3RlYWQgb2Ygb25jZSBmb3IgZWFjaCBjb3JydXB0ZWQgYmxvY2sgZ3JvdXAncyBjaGVja3N1bS4KKworRml4IGZpbGVmcmFnIHRvIGF2b2lkIHByaW50IHRoZSBleHRlbnQgaGVhZGVyIGlmIHRoZSBGSUVNQVAgaW9jdGwgaXMKK25vdCBwcmVzZW50LCBhbmQgaXQgbmVlZHMgdG8gZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBGSUJNQVAgaW9jdGwuCisKK0ZpeCBmaWxlZnJhZyB0byBjb3JyZWN0bHkgcHJpbnQgdGhlIG51bWJlciBvZiBleHRlbnRzIGZvciB6ZXJvLWxlbmd0aAorZmlsZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM1NDAzNzYpCisKK0ZpbGVmcmFnIG5vdyBoYXMgYSAtQiBvcHRpb24gd2hpY2ggZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIEZJQk1BUCBpb2N0bAordG8gbW9yZSBlYXNpbHkgZGVidWcgdGhlIEZJQk1BUCBjb2RlLgorCitGaXhlZCBmaWxlZnJhZyBmb3Igbm9uLWV4dGVudCBiYXNlZCBmaWxlcy4KKworQWRkIGEgbmV3IHByb2dyYW0sIGUyZnJlZWZyYWcsIHdoaWNoIGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorZnJlZSBzcGFjZSBmcmFnbWVudGF0aW9uIGluIGFuIGV4dDIvMy80IGZpbGVzeXN0ZW0uCisKK0ZpeCBpbm9kZSByZXNpemluZyB2aWEgdHVuZTJmcyAtSSBzbyB0aGF0IGl0IHdvcmtzIGNvcnJlY3RseSBpbiB0aGUKK2ZhY2Ugb2Ygbm9uLWVtcHR5IGJhZCBibG9ja3MgaW5vZGVzLCBhbmQgaWYgdGhlIGZpbGVzeXN0ZW0gd2FzCitmb3JtYXR0ZWQgdXNpbmcgdGhlICJta2UyZnMgLUUgc3RyaWRlPU4iIG9wdGlvbiBmb3IgUkFJRCBhcnJheXMuCisKK0ZpeCByZWdyZXNzaW9uIGluIGV4dDJmc19leHRlbnRfc2V0X2JtYXAoKSBjYXVzZWQgZTJmc2NrIC1mRCB0byBmYWlsCithbmQgY29ycnVwdCBsYXJnZSBkaXJlY3RvcmllcyBpZiB0aGUgZGlyZWN0b3J5IG5lZWRzIHRvIHNocmluayBieSBtb3JlCit0aGFuIG9uZSBibG9jay4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzUzNzUxMCkKKyAgICAKK0ZpeCBlMmZzY2sncyBidWdneV9pbml0X3Njcml0cHM9MSBzbyB0aGF0IHRoZSBpZiB0aGUgbGFzdCB3cml0ZSBhbmQvb3IKK2xhc3QgbW91bnQgdGltZXMgYXJlIGluIHRoZSBmdXR1cmUsIHRoZXkgYXJlIGNvcnJlY3RlZCBldmVuIGlmCitidWdneV9pbml0X3NjcmlwdHMgaXMgc2V0LiAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBvdGhlcndpc2UgcmVzaXplMmZzCit3aWxsIHJlZnVzZSB0byByZXNpemUgdGhlIGZpbGVzeXN0ZW0sIGV2ZW4gYWZ0ZXIgcnVubmluZyAiZTJmc2NrIC1mIi4KKyhBZGRyZXNzZXMgTGF1bmNocGFkIGJ1ZzogIzM3MzQwOSkKKworRTJmc2NrIHdpbGwgbm93IHByaW50IG11Y2ggZnVsbGVyIGluZm9ybWF0aW9uIHdoZW4gdGhlIGxhc3QgbW91bnQgdGltZQorb3IgbGFzdCB3cml0dGVuIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZSwgc2luY2UgbW9zdCBwZW9wbGUgY2FuJ3Qgc2VlbSB0bworYmVsaWV2ZSB0aGVpciBkaXN0cmlidXRpb24gaGFzIGJ1Z2d5IGluaXQgc2NyaXB0cywgb3IgdGhleSBoYXZlIGEKK2ZhaWxlZCBDTU9TL1JUUyBjbG9jayBiYXR0ZXJ5LgorCitFbmhhbmNlIGR1bXBlMmZzIHRvIGR1bXAgdGhlIGV4dGVudCBpbmZvcm1hdGlvbiB2aWEgdGhlICdzdGF0JworY29tbWFuZCwgYW5kIG1vcmUgZGV0YWlsZWQgZXh0ZW50IGluZm9ybWF0aW9uIHZpYSB0aGUgbmV3IGNvbW1hbmQKKydkdW1wX2V4dGVudHMnLgorICAgIAorVXBkYXRlIEZyZW5jaCwgUG9saXNoLCBDemVjaCwgYW5kIFN3ZWVkaXNoIHRyYW5zbGF0aW9uIGZyb20gdGhlCitUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIG1pc2NlbGxhbmVvdXMgZ2NjIC1XYWxsIHdhcm5pbmdzLgorCitGaXhlZCBtZW1vcnkgbGVhayBpbiBlcnJvciBwYXRoIGluIGV4dDJmc19ibG9ja19pdGVyYXRlMigpCisKK0ZpeGVkIG5vbi1MaW51eCBidWlsZCBvZiB0aGUgaW50bCBkaXJlY3RvcnkgYnkgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZQorRS9RL1YgbWFjcm9zLgorCitUaGUgYml0bWFwIHJlYWQvd3JpdGUgZnVuY3Rpb25zIG5vdyB0cmVhdCB1bmluaXRpYWxpemVkIGJpdG1hcHMgYXMKK3VuYWxsb2NhdGVkOyB0aGlzIGZpeGVzIGEgbnVtYmVyIG9mIHByb2JsZW1zIGluIGFsbCBlMmZzcHJvZ3MgZm9yIGV4dDQKK2ZpbGVzeXN0ZW1zIHdoZW4gdGhlcmUgaXMgYSBuZWVkIHRvIGFsbG9jYXRlIG5ldyBibG9ja3Mgb3IgaW5vZGVzLCBhbmQKK3RoZXJlIGFyZW4ndCBhbnkgZnJlZSBibG9ja3Mgb3IgaW5vZGVzIGluIHRoZSBhbHJlYWR5LXVzZWQgYmxvY2sKK2dyb3Vwcy4KKworSW1wcm92ZSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKCkgdG8gYXZvaWQgY3JlYXRpbmcgbmV3IGV4dGVudHMgd2hpY2gKK2dldCBpbnNlcnRlZCBpbnRvIHRoZSBleHRlbnQgdHJlZSB3aGVuIHRoZXkgYXJlIG5vdCBuZWVkZWQuCisgICAgCisKK0UyZnNwcm9ncyAxLjQxLjggKEp1bHkgMTEsIDIwMDkpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggcmVzaXplMmZzJ3Mgb25saW5lIHJlc2l6aW5nLCBmaXhpbmcgYSByZWdyZXNzaW9uIHdoaWNoIGluCitlMmZwc3JvZ3MgMS40MS43LiAgIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzUzNTQ1MikKKworRml4IHBvdGVudGlhbCBmaWxlc3lzdGVtIGNvcnJ1cHRpb25zIGNhdXNlZCBieSB1c2luZyByZXNpemUyZnMgdG8KK3Nocmlua2luZyBleHQ0IGZpbGVzeXN0ZW1zIHdpdGggZXh0ZW50cyBlbmFibGVkLiAgKEFkZHJlc3NlcyBSZWQgSGF0CitCdWc6ICM1MTAzNzkpCisKK09wdGltaXplIHV1aWRfZ2VuZXJhdGUoKSB0byBhdm9pZCBydW5uaW5nIHV1aWRkIGlmIGl0IGlzIG5vdCBzZXR1aWQgb3IKK3NldGdpZCBhbmQgdGhlIGN1cnJlbnRseSBydW5uaW5nIHByb2dyYW0gZG9lc24ndCBoYXZlIHdyaXRlIGFjY2VzcyB0bwordGhlIHV1aWRkIHdvcmsgZGlyZWN0b3J5LgorCitBZGQgc2FmZXR5IGNoZWNrcyAoZm9yIG5vbi1MaW51eCBzeXN0ZW1zKSBzbyB0aGF0IHV1aWRkIGlzbid0IHJ1biB3aXRoCitmaWxlIGRlc2NyaXB0b3JzIDAsIDEsIGFuZCAyIGNsb3NlZDsgYW5kIGlmIHRoZXkgYXJlIGNsb3NlZCwgdXVpZGQKK3dpbGwgYmUgY2FyZWZ1bCBub3QgdG8gY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgaXRzIHVuaXggZG9tYWluCitzb2NrZXQgd2hlbiBpdCBkZXRhY2hlcyBpdHNlbGYgZnJvbSB0aGUgY29udHJvbGxpbmcgdHR5LiAgQWxzbyBhZGQKK3NhZmV0eSBjaGVja3Mgc28gdGhhdCBpZiB0aGUgdW5peCBkb21haW4gc29ja2V0IGJldHdlZW4gdGhlIHV1aWQKK2xpYnJhcnkgYW5kIHV1aWRkIHByb2dyYW0gaXMgY2xvc2VkIGZvciBhbnkgcmVhc29uLCBib3RoIHRoZSBsaWJyYXJ5CithbmQgdGhlIHV1aWRkIHdpbGwgcmV0dXJuIGFuIGFwcHJvcHJpYXRlIGVycm9yIGNvZGUgaW5zdGVhZCBvZiBsb29waW5nCitpbiBhbiBpbmZpbml0ZSBsb29wLgorCitUaGUgZTJjcm9uY2hlY2sgc2NyaXB0LCB3aGljaCBjcmVhdGVzIGFuIExWTSBzbmFwc2hvdCBhbmQgdGhlbiBjaGVja3MKK3RoZSBleHQzLzQgZmlsZXN5c3RlbSB2aWEgdGhlIExWTSBzbmFwc2hvdCwgaGFzIGJlZW4gYWRkZWQgdG8gdGhlCitjb250cmliIGRpcmVjdG9yeS4KKworRml4IGZpbGVmcmFnIHByb2dyYW0gZm9yIGZpbGVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gMTQ0IGV4dGVudHMuCisKK1VwZGF0ZSBGcmVuY2gsIFBvbGlzaCwgQ3plY2gsIEluZG9uc2lhbiwgYW5kIFN3ZWVkaXNoIHRyYW5zbGF0aW9uIGZyb20KK3RoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWcgIzUzNTUzMCkKKworVXBkYXRlL2NsYXJpZnkgbWFuIHBhZ2VzLgorCitQcm9ncmFtbWVyJ3MgTm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggY29tcGlsYXRpb24gcHJvYmxlbSB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtdXVpZC4KKworRG9uJ3QgYnVpbGQgdXVpZGdlbiBpZiBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXV1aWQuCisKK0FkZCB0aGUgbmV3IGxpYnJhcnkgZnVuY3Rpb24gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwX3JhbmdlKCksIGFuZAorb3B0aW1pemVkIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZSgpLCB3aGljaCB3aWxsIGJlIG5lZWRlZCBmb3IKK2Z1dHVyZSBvcHRpbWl6YXRpb25zIGZvciBlMmZzY2suCisKK0ZpeCBtYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9yIGxpYmNvbV9lcnIgc28gdGhhdCB0aGUgTWFrZWZpbGVzIHdvcmsKK3dlbGwgb24gbm9uLUdOVSBtYWtlIHByb2dyYW0uICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIFBhdGNoZXM6ICMyODEzODA5KQorCitFbmhhbmNlIHRoZSBidWlsZCBzeXN0ZW0gc28gdGhhdCB0aGUgZnVsbCBzZXQgb2YgY29tbWFuZHMgZXhlY3V0ZWQgYnkKK3RoZSBNYWtlZmlsZXMgYXJlIGRpc3BsYXllZCwgaW5zdGVhZCBvZiB0aGUgTGludXgga2VybmVsIHN1bW1hcnkKK291dHB1dCwgaWYgdGhlIGJ1aWxkIHdhcyBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcywgb3IKK2lmIEdOVSBtYWtlIGlzIGluIHVzZSBhbmQgdGhlIFYgdmFyaWFibGUgaXMgbm9uLW51bGwsIGkuZS4sIHZpYSAibWFrZQorVj0xIi4KKworCitFMmZzcHJvZ3MgMS40MS43IChKdW5lIDI5LCAyMDA5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGEgYnVnIGluIGxpYmV4dDJmcyB3aGljaCBjYW4gY2F1c2UgZTJmc2NrIGFuZCByZXNpemUyZnMgdG8gd3JpdGUKK3VuaW5pdGFsaXplZCBkYXRhIGludG8gdGhlIHBvcnRpb24gb2YgdGhlIGlub2RlIGJleW9uZCB0aGUgZmlyc3QgMTI4CitieXRlcyB3aGVuIG9wZXJhdGluZyBvbiBpbm9kZXMgbWFwcGVkIHZpYSBleHRlbnRzOyBwb3RlbnRpYWxseQorY29ycnVwdGluZyBmaWxlc3lzdGVtcy4KKworRml4IG1lbW9yeSBsZWFrcyBpbiBlMmZzcHJvZ3MsIGluY2x1ZGluZyBhIHZlcnkgbGFyZ2UgbWVtb3J5IGxlYWsKK3doaWNoIGNhbiBjYXVzZSBlMmZzY2sgdG8gcnVuIG91dCBvZiBtZW1vcnkgd2hlbiBjaGVja2luZyB2ZXJ5IGxhcmdlCitmaWxlc3lzdGVtcyB1c2luZyBleHRlbnRzLgorCitUaGUgbG9nc2F2ZSBwcm9ncmFtIHdpbGwgbm93IGZpbHRlciBvdXQgdGhlIF5BIGFuZCBeQiBjaGFyYWN0ZXJzIHdoZW4KK3dyaXRpbmcgdG8gdGhlIGNvbnNvbGUuCisKK0hhcmRlbiBleHQyZnNfdmFsaWRhdGVfZW50cnkoKSBzbyB0aGF0IGxzZGVsIHdpbGwgbm90IHJlYWQgYmV5b25kIHRoZQorZW5kIG9mIHRoZSBibG9jayBldmVuIGlmIHRoZSBkaXJlY3RvcnkgYmxvY2sgaXMgY29ycnVwdGVkLgorCitGaXggZGVidWdmcyBmcm9tIGNvcmUgZHVtcGluZyBpZiB0aGUgbG9nZHVtcCBjb21tYW5kIGZhaWxzIHRvIG9wZW4gdGhlCitvdXRwdXQgZmlsZS4KKworRW5oYW5jZSBiYWRibG9ja3MgdG8gcHJpbnQgdGhlIGN1cnJlbnRseSB0ZXN0ZWQgYmxvY2sgbnVtYmVyIHdoZW4KK2ludGVycnVwdGVkIHdpdGggXkMuCisKK0ZpeCBsc2F0dHIgdG8gZXhpdCB3aXRoIGEgbm9uLXplcm8gc3RhdHVzIHdoZW4gaXQgZW5jb3VudGVycyBlcnJvcnMuCisoQWRkcmVzc2VzIFJlZEhhdCBCdWd6aWxsYSAjNDg5ODQxKQorCitGaXggZTJmc3Byb2dzIHRvIHVzZSB0aGUgc2FtZSBlbmNvZGluZyBmb3IgcmVjX2xlbiBpbiA2NGsgKGFuZCBsYXJnZXIpCitmaWxlc3lzdGVtcyBhcyB0aGUga2VybmVsIHdoZW4gZW5jb2RpbmcgcmVjX2xlbiA+PSA2NGsuICBGb3IgNjRrCitmaWxlc3lzdGVtcyAoY3VycmVudGx5IGFsbCB0aGF0IGlzIHN1cHBvcnRlZCBieSBlMmZzcHJvZ3MsIHRoaXMgaXMKK29ubHkgYSBtaW5vciBjb3JuZXIgY2FzZSkuCisKK1Jlc2l6ZTJmcyB3aWxsIG5vdyB1cGRhdGUgdGhlIGpvdXJuYWwgYmFja3VwIGZpbGVkcyBpbiB0aGUgc3VwMGVyYmxvY2sKK2lmIHRoZSBqb3VybmFsIGlzIG1vdmVkOyB0aGlzIGF2b2lkcyBhbiB1bm5lY2Vzc2FyeSBmdWxsIGZzY2sgYWZ0ZXIKK3Jlc2l6aW5nIHRoZSBmaWxlc3lzdGVtLiAgKEFkZHJlc3NlcyBSZWRIYXQgQnVnemlsbGE6ICM1MDUzMzkpCisgICAgCitGaXggbGliZXh0MmZzIHRvIHByb3Blcmx5IGluaXRpYWxpemUgaV9leHRyYV9zaXplIHdoZW4gY3JlYXRpbmcgdGhlCitqb3VybmFsIGFuZCByZXNpemUgaW5vZGVzLgorCitDaGFuZ2UgYmFkYmxvY2tzIHRvIGFsbG93IGJsb2NrIHNpemVzIGxhcmdlciB0aGFuIDRrLgorCitGaXggZmlsZWZyYWcgcHJvZ2FtIHNvIGl0IGNvcnJlY3RseSBjaGVja3MgZm9yIGVycm9ycyBmcm9tIHRoZSBmaWVtYXAgaW9jdGwuCisKK1VwZGF0ZSBDaGluZXNlIGFuZCBDemVjaCB0cmFuc2xhdGlvbiBmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitDbGVhbiB1cCB2YXJpb3VzIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNTMxMzg1IGFuZCAjNTIzMDYzKQorCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZCAtLWRpc2FibGUtbGlidXVpZCBvcHRpb24gdG8gY29uZmlndXJlIHdoaWNoIHVzZXMgYW4gaW4tc3lzdGVtCitpbnN0YWxsZWQgdmVyc2lvbiBvZiBsaWJ1dWlkOyB0aGUgcHJpdmF0ZSB2ZXJzaW9uIGlzIGVuYWJsZWQgYnkKK2RlZmF1bHQuCisKK0FkZCAtLXZhbGdyaW5kLWxlYWtjaGVjayBvcHRpb24gdG8gdGhlIHRlc3Rfc2NyaXB0IHByb2dyYW0gd2hpY2ggcnVucwordmFsZ3JpbmQgd2l0aCB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyB0byBmaW5kIG1lbW9yeSBsZWFrcy4KKworCitFMmZzcHJvZ3MgMS40MS42IChNYXkgMzAsIDIwMDkpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeCBhIGNyaXRpY2FsIHJlZ3Jlc3Npb24gaW4gZTJmc2NrIGludHJvZHVjZWQgdmVyc2lvbiAxLjQxLjUgd2hpY2gKK2NhbiB1bmRvIHVwZGF0ZXMgdG8gdGhlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIGFmdGVyIGEgam91cm5hbCByZXBsYXkuCisKK0lmIGUyZnNjayByZWNlaXZlcyBhbiBJL08gZXJyb3Igd2hpbGUgcmVwbGF5aW5nIHRoZSBqb3VybmFsLCBwcm9tcHQKK3RoZSB1c2VyIHdoZXRoZXIgdGhleSB3YW50IHRvIGlnbm9yZSB0aGUgZXJyb3Igb3Igbm90OyBpZiBlMmZzY2sgaXMKK3J1biBpbiBwcmVlbiBtb2RlLCBmb3JjZSBmc2NrIHRvIGFib3J0IHRoZSBwcmVlbiBwYXNzLgorCitGaXggYSBidWcgd2hpY2ggd291bGQgY2F1c2UgZTJmc2NrIHRvIGNvcmUgZHVtcCBpZiB0aGUgZmlsZXN5c3RlbQorY29udGFpbnMgYSBjb3JydXB0IGV4dGVudCBoZWFkZXIsIGFuZCB0aGUgdXNlciBkZWNsaW5lcyB0byBjbGVhciB0aGUKK2lub2RlLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMyNzkxNzk0KQorICAgIAorRml4IGUyZnNjayB0byByZXN0YXJ0IG9ubHkgb25jZSBpbiB0aGUgY2FzZSBvZiBtdWx0aXBsZSBibG9jayBncm91cHMKK3doaWNoIGlub2RlcyBpbiB1c2UgdGhhdCBhcmUgaW4gdGhlIHVuaW5pdGlhbGl6ZWQgcGFydCBvZiB0aGUgYmxvY2sKK2dyb3VwJ3MgaW5vZGUgdGFibGUuCisKK1RvIHJlZHVjZSB1c2VyIGNvbmZ1c2lvbiwgaWYgdGhlIC9ldGMvbXRhYiBmaWxlIGlzIG1pc3NpbmcKK2V4dDJmc19jaGVja19tb3VudF9wb2ludCBhbmQgZXh0MmZzX2NoZWNrX2lmX21vdW50ZWQgd2lsbCByZXR1cm4gYQorbmV3LCBleHBsaWNpdCBlcnJvciBjb2RlIHRvIGluZGljYXRlIHRoaXMgY2FzZS4gIFRoaXMgd2lsbCBjYXVzZQorZTJmc2NrIHRvIGdpdmUgYSBjbGVhcmVyIGVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgdXNlciBpcyB1c2luZyBidWdneQorcmVzY3VlIENEJ3MgdGhhdCBkb24ndCBwcm9wZXJseSBzZXQgdXAgL2V0Yy9tdGFiLiAgKEFkZHJlc3NlcyBEZWJpYW4KK0J1ZzogIzUyNzg1OSkKKyAgICAKK0ZpeCBlMmZzY2sgc28gdGhhdCBpZiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBhcmUgY29ycnVwdGVkLCBidXQKK3RoZSBiYWNrdXAgc3VwZXJibG9jayBpcyBlbnRpcmVseSBpbnZhbGlkLCB0byBnbyBiYWNrIHRvIHVzaW5nIChhbmQKK2ZpeGluZykgdGhlIHByaWFyeSBncm91cCBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGNvbXBsZXRlbHkgZ2l2aW5nIHVwCitvbiB0aGUgZmlsZXN5c3RlbS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzUxNjgyMCkKKyAgICAKK0NoYW5nZSBlMmZzY2sgdG8gbm90IGFib3J0IGEgcHJlZW4gcGFzcyBpZiBhbiBpbm9kZSBpcyBmb3VuZCB0byBoYXZlCitpX2ZpbGVfYWNsX2hpIG5vbi16ZXJvLiAgRXh0MyBmaWxlc3lzdGVtcyBkb24ndCBjYXJlLCBhbmQgbmV3ZXIKK2tlcm5lbHMgKHBvc3QgMi42LjI5KSB3aWxsIGlnbm9yZSB0aGlzIGZpZWxkLiAgU28gbGV0J3MgZml4IGl0CithdXRvbWF0aWNhbGx5IGR1cmluZyB0aGUgcHJlZW4gcGFzcyBpbnN0ZWFkIG9mIGZvcmNpbmcgdGhlIHVzZXIgdG8gZml4Cit0aGlzIHVwIG1hbnVhbGx5LiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNTI2NTI0KQorICAgIAorQWRkIHJlc291cmNlIHRyYWNraW5nIGZvciBlMmZzY2sgcGFzc2VzIDFiIHRocm91Z2ggMWQuCisKK1NwZWVkIHVwIGUyZnNjayBieSBlbGltaW5hdGluZyB1bm5lY2Vzc2FyeSBqb3VybmFsIGNoZWNrcyBpZiB0aGUKK2ZpbGVzeXN0ZW0gaXMgYWxyZWFkeSBtb3VudGVkIGFuZCBkb2Vzbid0IG5lZWQgcmVjb3ZlcnkgKHNpbmNlIHRoZQora2VybmVsIHdvdWxkIGhhdmUgcnVuIHRoZSBqb3VybmFsIHdoZW4gdGhlIGZpbGVzeXN0ZW0gd2FzIG1vdW50ZWQuKQorQWxzbyBzcGVlZCB1cCBlMmZzY2sgYnkgYXZvaWRpbmcgdW5uZWNlc3NhcnkgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcgordXBkYXRlcyBpbiBleHQyZnNfY2xvc2UoKS4KKworQWRkIHN1cHBvcnQgdG8gY2hhdHRyIHRvIG1pZ3JhdGUgaW5vZGVzIGZyb20gdXNpbmcgZGlyZWN0L2luZGlyZWN0CitibG9ja3MgdG8gZXh0ZW50cy4KKworQXZvaWQgY29ycnVwdGluZyB0aGUgZmlsZXN5c3RlbSBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIHNocmluayBhCitmaWxlc3lzdGVtIHVzaW5nIHJlc2l6ZTJmcyBzbWFsbGVyIHRoYW4gcG9zaWJsZSBieSBtYWtpbmcKK2V4dDJmc19zZXRfYm1hcCgpIG1vcmUgY2FyZWZ1bCBub3QgdG8gZGVsZXRlIHRoZSBvbGQgYmxvY2sgdW50aWwgdGhlCituZXcgYmxvY2sgY2FuIGJlIGluc2VydGVkLiAgSW4gYWRkaXRpb24sIGZpeCBhIGJ1ZyBpbiBob3cgdGhlIG1pbmltdW0KK3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0gKHBsdXMgYSBzYWZldHkgbWFyZ2luKSBpcyBjYWxjdWxhdGVkLCBhbmQKK21vZGlmeSByZXNpemUyZnMgdG8gcmVmdXNlIHRvIHNocmluayB0aGUgZmlsZXN5c3RlbSBiZWxvdyB0aGF0IG1pbmltdW0KK3NpemUgd2l0aG91dCB0aGUgZm9yY2UgZmxhZy4KKworVGVhY2ggYmxraWQgdG8gdHJ5IHRvIGZpZ3VyZSBvdXQgRE0gZGV2aWNlIG5hbWVzIHVzaW5nIHRha2UgYWR2YW50YWdlCitvZiBpbmZvcm1hdGlvbiBpbiBzeXNmcyB3aGVuIHJ1bm5pbmcgb24ga2VybmVscyAoMi42LjI5IGFuZCBsYXRlcikKK3doaWNoIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBpbiAvc3lzL2Jsb2NrL2RtLTxOPi9kbS9uYW1lOyB0aGlzIGlzCittdWNoIGZhc3RlciB0aGFuIHNjYW5uaW5nIGZvciB0aGUgZGV2bmNpZSBudW1iZXIgaW4gL2Rldi9tYXBwZXIuCisKK0ZpeCBibGtpZCB0byBwcmVmZXIgL2Rldi9tYXBwZXIvPG5hbWU+IGRldmljZSBuYW1lcyBpbnN0YWQgb2YgdGhlCitwcml2YXRlIC9kZXYvZG0tWCBuYW1lcy4KKworQWRkIGFuIC1hIG9wdGlvbiB0byBkZWJ1Z2ZzJ3MgY2xvc2VfZmlsZXN5cyBjb21tYW5kIHdoaWNoIHdyaXRlcyBhbnkKK2NoYW5nZXMgdG8gdGhlIHN1cGVyYmxvY2sgb3IgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgdG8gYWxsIG9mIHRoZQorYmFja3VwIHN1cGVyYmxvY2sgbG9jYXRpb25zLgorICAgIAorQWRkIHN1cHBvcnQgdG8gdGhlIGZpbGVmcmFnIHByb2dyYW0gdG8gdXNlIHRoZSBGSUVNQVAgaW9jdGwuCisKK1VwZGF0ZSBDaGluZXNlIHRyYW5zbGF0aW9uIGZyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QuCisKK0NsZWFuIHVwIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBSZWQgSGF0IEJ1Z3ppbGxhOiAjNTAyOTcxIGFuZAorTGF1bmNocGFkIEJ1ZzogIzM4MTg1NCkKKworRml4ZWQgdmFyaW91cyBEZWJpYW4gcGFja2FnaW5nIGlzc3VlcyAtLS0gc2VlIGRlYmlhbi9jaGFuZ2Vsb2cgZm9yCitkZXRhaWxzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICM1MDYwNjQpCisKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkIHRlc3QgY29kZSB0byBtYWtlIHN1cmUgZTJmc2NrJ3MgcHJvYmxlbS5jIGRvZXNuJ3QgaGF2ZSB0d28gcHJvYmxlbQorY29kZXMgYXNzaWduZWQgdG8gZHVwbGljYXRlIHZhbHVlcy4KKworQXZvaWQgdXNpbmcgYSBoYXJkLWNvZGVkIHBhdGggZm9yIC9iaW4vcm0gaW4gYmxvY2sncyB0ZXN0X3Byb2JlLmluLgorKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMyNzgwMjA1KQorCitDbGVhbiB1cCBlMmZzY2sgYnkgcmVtb3ZpbmcgI2lmZGVmIFJFU09VUkNFX1RSQUNLIGJ5IGFkZGluZyBhbiBlbXB0eQorZnVuY3Rpb24gZGVjbGFyYXRpb24gZm9yIGluaXRfcmVzb3VyY2VfdHJhY2soKSBhbmQKK3ByaW50X3Jlc291cmNlX3RyYWNrKCkgd2hlbiBSRVNPVVJDRV9UUkFDSyBpcyBub3QgZGVmaW5lZC4KKworVGhlIHRlc3QgY29kZSB3aGljaCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSB0c3RfY3N1bSBwcm9nYW0gaGFzIGJlZW4KK21vdmVkIGZyb20gZnJvbSB0c3RfY3N1bS5jIGludG8gY3N1bS5jIHVuZGVyIGFuICNpZmRlZiBERUJVRyB0byB0bworYXZvaWQgY29tcGlsZSBwcm9ibGVtcyBjYXVzZWQgYnkgbm90IGhhdmluZyBhIHByb3RvdHlwZSBmb3IKK2V4dDJmc19ncm91cF9kZXNjX2NzdW0oKS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnICMyNDg0MzMxKQorCitVcGRhdGUgdGhlIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiBmaWxlIHRvIHRoZSBsYXRlc3QgZnJvbSB0aGUKK0ZTRiwgdG8gYWxsb3cgZTJmc3Byb2dzIHRvIGJ1aWxkIG9uIHRoZSBhdnIzMiBwbGF0Zm9ybS4gIChBZGRyZXNzZXMKK0RlYmlhbiBCdWc6ICM1MjgzMzApCisKK0FkZCBhIG5ldyBmdW5jdGlvbiwgZXh0MmZzX2V4dGVudF9vcGVuMigpLCB3aGljaCBiZWhhdmVzIGxpa2UKK3BleHQyZnNfZXh0ZW50X29wZW4oKSwgYnV0IHVzZXMgdGhlIHVzZXItc3VwcGxpZWQgaW5vZGUgc3RydWN0dXJlCit3aGVuIG9wZW5pbmcgYW4gZXh0ZW50IGluc3RlYWQgb2YgcmVhZGluZyB0aGUgaW5vZGUgZnJvbSBkaXNrLgorCisKK0UyZnNwcm9ncyAxLjQxLjUgKEFwcmlsIDIzLCAyMDA5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeCBhIG51bWJlciBvZiBmaWxlc3lzdGVtIGNvcnJ1cHRpb24gYnVncyBpbiByZXNpemUyZnMgd2hlbiBncm93aW5nCitvciBzaHJpbmtpbmcgZXh0NCBmaWxlc3lzdGVtcyBvZmYtbGluZSAoaS5lLiwgd2hlbiB0aGUgZXh0NCBmaWxlc3lzdGVtCitpcyBub3QgbW91bnRlZCkuCisKK0RlYnVnZnMgY2FuIG5vdyBzZXQgaV9maWxlX2FjbF9oaWdoIHZpYSB0aGUgc2V0X2lub2Rlc19maWVsZCBjb21tYW5kLAorYW5kIHByaW50IGEgNjQtYml0IGZpbGUgYWNsLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZyBmaWxlc3lzdGVtCitjb3JydXB0aW9ucyB3aGVyZSB0aGUgaGlnaCBiaXRzIG9mIGlfZmlsZV9hY2xfaGlnaCBhcmUgc2V0LiAgRTJmc2NrCit3aWxsIGRldGVjdCBhbmQgZml4IG5vbi16ZXJvIGlfZmlsZV9hY2xfaGlnaCBvbiAzMi1iaXQgZmlsZXN5c3RlbXMKK3NpbmNlIHNvbWUgTGludXgga2VybmVsIHZlcnNpb25zIHBheSBhdHRlbnRpb24gdG8gdGhpcyBmaWVsZCBldmVuIHdoZW4KK3RoZXkgc2hvdWxkbid0LgorCitTcGVlZCB1cCBlMmZzY2sgd2hlbiBjaGVja2luZyBjbGVhbiBmaWxlc3lzdGVtcyBieSBhdm9pZGluZwordW5uZWNlc3NhcnkgYmxvY2sgcmVhZHMsIGFuZCBjb2FsZXNjaW5nIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yCitibG9ja3Mgc28gdGhleSBhcmUgcmVhZCB1c2luZyBhIHNpbmdsZSByZWFkIG9wZXJhdGlvbi4KKworVGhlIGxpYnV1aWQgbGlicmFyeSB3aWxsIG5vdyBjbG9zZSBhbGwgZmlsZSBkZXNjcmlwdG9ycyBiZWZvcmUgcnVubmluZwordXVpZGQuICBUaGlzIGF2b2lkcyBwcm9ibGVtcyB3aGVuIHRoZSBjYWxsaW5nIHByb2dyYW0gaGFzIG9wZW4gc29ja2V0cword2hpY2ggdGhlbiBuZXZlciBnZXQgY2xvc2VkIGJlY2F1c2UgdXVpZGQgaXMgYSBsb25nLXJ1bm5pbmcgaGVscGVyCitkYWVvbW4uICAoQWRkcmVzc2VzIExhdW5jaHBhZCBidWc6ICMzMDUwNTcpCisKK0luIG9yZGVyIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGZ1bGwgZmlsZXN5c3RlbSBjaGVja3MgYnkgZTJmc2NrIGFmdGVyCithbiBvbi1saW5lIHJlc2l6ZSwgZTJmc2NrIHdpbGwgaWdub3JlIHRoZSBORUVEU19SRUNPVkVSWSBmbGFnIHNldCBvbgordGhlIGJhY2t1cCBzdXBlcmJsb2Nrcy4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzQ3MTkyNSkKKworTWtlMmZzIHdpbGwgYXZvaWQgdHJ5aW5nIHRvIGNyZWF0ZSB0aGUgam91cm5hbCB3aGVuIHJ1biBpbgorc3VwZXJibG9jay1vbmx5IG1vZGUgKG1rZTJmcyAtUyksIHNpbmNlIHRoZSBsZWZ0LW92ZXIgam91cm5hbCBpbiB0aGUKK2lub2RlIHRhYmxlIHdpbGwgY2F1c2UgbWtlMmZzIHRvIGZhaWwuCisKK0ZpeCBhIGJ1ZyBpbiBsaWJleHQyZnMgZnVuY3Rpb25zIHRoYXQgY2hlY2sgdG8gc2VlIGlmIGEgcGFydGljdWxhcgorZGV2aWNlIG9yIGZpbGVzeXN0ZW0gaW1hZ2UgaXMgbW91bnRlZCwgd2hpY2ggd291bGQgY2F1c2UgdGhlc2UKK2Z1bmN0aW9ucyB0byByZXBvcnQgdGhhdCBhIGZpbGUgaWRlbnRpY2FsIHRvIHRoZSAocmVsYXRpdmUpIHBhdGhuYW1lCit1c2VkIGJ5IGEgcHNldWRvLWZpbGVzeXN0ZW0gd2FzIG1vdW50ZWQgd2hlbiBpbiBmYWN0IGl0IHdhcyBub3QuCisKK1VwZGF0ZSBDemVjaCB0cmFuc2xhdGlvbiBmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitBZGQgQ2hpbmVzZSAoc2ltcGxpZmllZCkgdHJhbnNsYXRpb24gZnJvbSB0aGUgVHJhbnNsYXRpb24gUHJvamVjdC4KKworRml4IHN1cHBvcnQgZm9yIGV4dGVybmFsIGpvdXJuYWxzICh3aGljaCB3YXMgYnJva2VuIGluIGUyZnNwcm9ncworMS40MS40KS4KKworRml4IGEgcmVncmVzc2lvbiBpbiBkZWJ1Z2ZzIHdoZXJlIHRoZSAic3RhdCIgY29tbWFuZCB3aGVuIG5vCitmaWxlc3lzdGVtIHdhcyBvcGVuIHdvdWxkIGNhdXNlIGRlYnVnZnMgdG8gY3Jhc2ggd2l0aCBhIHNlZ21lbnRhdGlvbgordmlvbGF0aW9uLgorCitTdGFydGluZyBpbiB0aGUgMi42LjI5IGxpbnV4IGtlcm5lbCwgdGhlIGV4dDQgZmlsZXN5c3RlbSBkcml2ZXIgY2FuIGJlCit1c2VkIHRvIHN1cHBvcnQgZmlsZXN5c3RlbXMgd2l0aG91dCBhIGpvdXJuYWwuICBVcGRhdGUgdGhlIGJsa2lkCitsaWJyYXJ5IHNvIGl0IHVuZGVyc3RhbmRzIHRoaXMuCisKK1RoZSBibGtpZCBsaWJyYXJ5IHdpbGwgcmVtb3ZlIGFuIGVudHJ5IGZyb20gdGhlIGJsa2lkIGNhY2hlCityZXByZXNlbnRpbmcgdGhlIGVudGlyZSBkaXNrIGlmIHBhcnRpdGlvbnMgYXJlIGZvdW5kLCBzaW5jZSBwcmVzdWFtYmx5Cit0aGUgZGV2aWNlIHByZXZpb3VzbHkgaGFkIG5vIHBhcnRpdGlvbiB0YWJsZSwgYnV0IGhhcyBub3cgdHJhbnNpdGlvbmVkCit0byB1c2luZyBhIHBhcnRpdGlvbiB0YWJsZS4KKworQWRkIGEgY2hlY2sgdG8gbWtlMmZzIGFuZCB0dW5lMmZzIHRoYXQgdGhlIGFyZ3VtZW50IHRvIHRoZSAtbSBvcHRpb24KKyh3aGljaCBzcGVjaWZpZXMgdGhlIHJlc2VydmVkIHJhdGlvKSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNTE3MDE1KQorCitBZGQgc3VwcG9ydCBmb3IgdHJhY2tpbmcgdGhlIG51bWJlciBraWxvYnl0ZXMgd3JpdHRlbiB0byB0aGUKK2ZpbGVzeXN0ZW0gdmlhIHRoZSBzdXBlcmJsb2NrIGZpZWxkIHNfa2J5dGVzX3dyaXR0ZW4uICBJdCB3aWxsIGJlCit1cGRhdGVkIGJ5IHRoZSBrZXJuZWwgYXMgd2VsbCBhcyBieSBlMmZzcHJvZ3MgcHJvZ3JhbXMgd2hpY2ggd3JpdGUgdG8KK3RoZSBmaWxlc3lzdGVtLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRyYWNraW5nIHRoZSB3ZWFyIHRvIGZpbGVzeXN0ZW1zCitvbiBTb2xpZCBTc3RhdGUgRHJpdmVzLgorCitGaXggY29tcGF0aWJpbGl0eSBpc3N1ZSBpbiB0aGUgbGliZXh0MmZzIGluZm8gZmlsZSBhbmQgbWFrZWluZm8KK3ZlcnNpb24gNC4xMi4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzQ4MTYyMCkKKworVXBkYXRlL2NsYXJpZnkgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNTE1NjkzLCAjMzY1NjE5KQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzUwNjI3OSkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IEh1cmQgY29tcGlsYXRpb24gcHJvYmxlbSBpbiBlMmZzY2sgYW5kIHR1bmUyZnMgKEFkZHJlc3NlcyBEZWJpYW4KK0J1ZzogIzUyMTYwMikKKworRml4IHZhcmlvdXMgZ2NjIGNvbXBpbGF0aW9uIHdhcm5pbmdzIGFuZCBvdGhlciBwcm9ncmFtbWluZyBjbGVhbnVwcy4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzQ4Njk5NykKKworQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHRoZSBibGtpZCBjb21tYW5kIHN0YXRpY2FsbHkuCisKK0FkZCBzdXBwb3J0IGZvciBkaXNhYmxpbmcgdGhlIGJ1aWx0LWluIGJsa2lkIGxpYnJhcnkgaW4gZmF2b3Igb2YgYQorc3lzdGVtLWluc3RhbGxlZCBibGtpZCBpbXBsZW1lbnRhdGlvbiB2aWEgdGhlIGNvbmZpZ3VyZSBvcHRpb24KKy0tZGlzYWJsZS1saWJibGtpZC4KKworCitFMmZzcHJvZ3MgMS40MS40IChKYW51YXJ5IDI3LCAyMDA5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4ZWQgYSBidWcgd2hpY2ggY291bGQgc29tZXRpbWVzIGNhdXNlIGJsa2lkIHRvIHJldHVybiBhbiBleGl0IHZhbHVlCitvZiB6ZXJvIGZvciBhIG5vbi1leGlzdGVudCBkZXZpY2UgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNTAyNTQxKQorCitCbGtpZCB3aWxsIG5vdyByZWNvZ25pemUgZXh0MyBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgdGhlIHRlc3RfZnMgZmxhZworc2V0IGFzIGV4dDMgZmlsZXN5c3RlbXMuCisKK1RoZSBibGtpZCBsaWJyYXJ5IHdpbGwgbm93IHJlY29nbml6ZSBidHJmcyBmaWxlc3lzdGVtcyBhbmQgc3dhcAorZGV2aWNlcyBjdXJyZW50bHkgdXNlZCBieSB1c2VyLWxldmVsIHNvZnR3YXJlIHN1c3BlbmQuCisKK1R1bmUyZnMgbm93IHVwZGF0ZXMgdGhlIGJsb2NrIGdyb3VwIGNoZWNrc3VtcyB3aGVuIGNoYW5naW5nIHRoZSBVVUlECit0byBhdm9pZCBjYXVzaW5nIGUyZnNjayB0byBjb21wbGFpbiB2b2NpZmVyb3VzbHkgYXQgdGhlIG5leHQgcmVib290LgorCitUdW5lMmZzJ3MgaW5vZGUgc2l6ZSByZXNpemluZyBhbGdvcml0aG1zIGhhdmUgYmVlbiBmaXhlZCBzbyBpdCBpcyBub3QKK3Zhc3RseSBpbmVmZmljaWVudCBmb3IgbW9kZXJhdGUtdG8tbGFyZ2UgZmlsZXN5c3RlbXMsIGR1ZSB0byBzb21lCitPKG4qKjIpIGFuZCBPKG4qbSkgYWxnb3JpdGhtcyB0aGF0IGRpZG4ndCBzY2FsZSB3ZWxsIGF0IGFsbC4KKworRml4IHR1bmUyZnMncyBpbm9kZSByZXNpemluZyBhbGdvcml0aG0gc28gaXQgd2lsbCBub3QgY29ycnVwdAorZmlsZXN5c3RlbXMgbGFpZCBvdXQgZm9yIFJBSUQgZmlsZXN5c3RlbXM7IGluIGFkZGl0aW9uLCB0dW5lMmZzIHdpbGwKK3JlZnVzZSB0byBjaGFuZ2UgdGhlIGlub2RlIHNpemUgZm9yIGZpbGVzeXN0ZW1zIHRoYXQgaGF2ZSB0aGUgZmxleF9iZworZmVhdHVyZSBlbmFibGVkLiAgKFRoaXMgaXMgYSBsaW1pdGF0aW9uIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uCitvZiB0dW5lMmZzIC1JLikKKworRTJmc3Byb2dzIDEuNDEgYnJva2UgZGVidWdmcydzIGxvZ2R1bXAgY29tbWFuZCBmb3Igbm9ybWFsIGV4dDMvNAorZmlsZXN5c3RlbXMgd2l0aCAzMi1iaXQgYmxvY2sgbnVtYmVycywgd2hlbiB0aGUgaGVhZGVycyBmb3IgNjQtYml0CitibG9jayBudW1iZXJzIHdhcyBhZGRlZC4gIFRoaXMgcmVncmVzc2lvbiBoYXMgYmVlbiBmaXhlZC4KKworRGVidWdmcydzIG5jaGVjayBjb21tYW5kIGhhcyBiZWVuIGZpeGVkIHRvIGF2b2lkIHByaW50aW5nIGdhcmJhZ2UKK2NoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBmaWxlIG5hbWVzLgorCitGaXggcmVzaXplMmZzIGZvciBleHQ0IGZpbGVzeXN0ZW1zLiAgU29tZSBibG9ja3MgdGhhdCB0aGF0IG5lZWQgbW92aW5nCit3aGVuIHNocmlua2luZyBmaWxlc3lzdGVtcyB3aXRoIHVuaW5pdF9iZyBmZWF0dXJlIHdvdWxkIG5vdCBiZSBtb3ZlZC4KK0luIGFkZGl0aW9uLCBibG9ja3MgYW5kIGlub2RlIHRhYmxlIGJsb2NrcyB3ZXJlIG5vdCBiZWluZyBjb3JyZWN0bHkKK2ZyZWVkIHdoZW4gc2hyaW5raW5nIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmcgZmVhYmxlLCB3aGljaCBjYXVzZWQKK3Jlc2l6ZTJmcyAtTSB0byBmYWlsLiAgRmluYWxseSwgd2hlbiBibG9ja3MgYXJlIG1vdmVkLCBtYWtlIHN1cmUgdGhlCit1bmluaXRpYWxpemVkIGZsYWcgaW4gZXh0ZW50cyBpcyBwcmVzZXJ2ZWQuCisKK0ZpeCBidWcgd2hpY2ggY2F1c2VkIGR1bXBlMmZzIHRvIGFib3J0IHdpdGggYW4gZXJyb3IgaWYgcnVuIG9uIGEKK2ZpbGVzeXN0ZW0gdGhhdCBjb250YWluZWQgYW4gZXh0ZXJuYWwgam91cm5hbC4KKworU29tZSBkaXN0cmlidXRpb25zIHVzZWQgIm1rZTNmcyIgYXMgYW4gYWxpYXMgZm9yICJta2ZzLmV4dDMiOyBjaGVjaworZm9yIHRoaXMgaW4gYXJndlswXSB0byBwcm92aWRlIGJldHRlciBsZWdhY3kgc3VwcG9ydCBmb3IgdGhlc2UKK2Rpc3RyaWJ1dGlvbnMuICBUaGlzIGlzIGEgcHJhY3RpY2UgdGhhdCBzaG91bGQgTk9UIGJlIGNvbnRpbnVlZCwKK2hvd2V2ZXIuCisKK01rZTJmcyBub3cgaGFzIGEgbmV3IG9wdGlvbiAtVSwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIHNwZWNpZnkgdGhlCitVVUlEIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBuZXcgZmlsZXN5c3RlbS4KKworTWtlMmZzIHdpbGwgdHJlYXQgZGV2aWNlcyB0aGF0IGFyZSBleGFjdGx5IDE2VEIgYXMgaWYgdGhleSB3ZXJlIDE2VEIKK21pbnVzIG9uZSBibG9jay4gIFRoaXMgYWxsb3dzIHVzZXJzIHdobyBoYXZlIHJlYWQgdGhhdCBleHQzIHN1cHBvcnRzCit1cCB0byAxNlRCIGZpbGVzeXN0ZW1zIGFuZCB3aG8gY3JlYXRlIGEgMTZUQiBMVk0gdG8gbm90IGdldCBjb25mdXNlZCwKK3NpbmNlIHRoZSB0cnVlIGxpbWl0IGlzIHJlYWxseSAxNlRCIG1pbnVzIG9uZSBibG9jay4KKworRTJmc2NrIHdpbGwgbm8gbG9uZ2VyIGFib3J0IGFuIGZzY2sgcnVuIGlmIGJsb2NrIGdyb3VwIGhhcyBhbiBlcnJhbnQKK0lOT0RFX1VOSU5JVCBmbGFnLgorCitFMmZzY2sgbm93IGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmcmFnbWVudGVkIGRpcmVjdG9yaWVzIGFuZCBmcmFnbWVudGVkCitmaWxlcyBpbiB2ZXJib3NlIG1vZGUgc3RhdGlzdGljcyBhbmQgaW4gdGhlIGZyYWdjaGVjayByZXBvcnQuCisKK0ZpeCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2FzdWVkIGl0IGRvdWJsZSBjb3VudCBub24tY29udGlndW91cworZXh0ZW50LWJhc2VkIGlub2Rlcy4KKworRTJmc2NrIHdpbGwgbGVhdmUgc29tZSBzbGFjayBzcGFjZSB3aGVuIHJlcGFja2luZyBkaXJlY3RvcmllcyB0byBhbGxvdworcm9vbSBmb3IgYSBmZXcgZGlyZWN0b3J5IGVudHJpZXMgdG8gYmUgYWRkZWQgd2l0aG91dCBjYXVzaW5nIGxlYWYKK25vZGVzIHRvIGJlIHNwbGl0IHJpZ2h0IGF3YXkuCisKK0ZpeCBhIGJ1ZyB3aGljaCBjYXVzZWQgZTJmc2NrIHRvIGNyYXNoIHdoZW4gaXQgY29tZXMgYWNyb3NzIGEKK2NvcnJ1cHRlZCBpbnRlcmlvciBub2RlIGluIGFuIGV4dGVudCB0cmVlIHdpdGggdGhlIGVycm9yIG1lc3NhZ2U6CisiRXJyb3IxOiBDb3JydXB0IGV4dGVudCBoZWFkZXIgb24gaW5vZGUgWFhYWFhYIgorCitFMmZzY2sgcHJvYmxlbSBkZXNjcmlwdGlvbnMgaW52b2x2aW5nIHRoZSBqb3VybmFsIGFyZSBubyBsb25nZXIKK3JlZmVycmVkIHRvIGFzICJleHQzIiBwcm9ibGVtcywgc2luY2UgZXh0NCBmaWxlc3lzdGVtcyBhbHNvIGhhdmUKK2pvdXJuYWxzLgorCitGaXggYSBsb25nLXN0YW5kaW5nIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggd291bGQgY2F1c2UgaXQgdG8gY3Jhc2ggd2hlbgorcmVwbHlpbmcgam91cm5hbHMgZm9yIGZpbGVzeXN0ZW1zIHdpdGggYmxvY2sgc2l6ZXMgZ3JlYXRlciB0aGFuIDhrLgorCitVcGRhdGUgQ2F0YWxhbiB0cmFuc2xhdGlvbiBmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM1MDMwNTcsICM1MDIzMjMsICM1MTEyMDcpCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeCBidWlsZCBvZiBlMmZzY2sucHJvZmlsZWQsIGFuZCBhZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgcHJvZmlsZWQKK2JpbmFyaWVzIGluIHRoZSBtaXNjIGRpcmVjdG9yeSBpZiBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtcHJvZmlsZS4KKworVGhlIGV4dDJmc19vcGVuKCkgZnVuY3Rpb24gbm93IHBlcmZvcm1zIG1vcmUgc2FuaXR5IGNoZWNrcyBvbiB0aGUKK3N1cGVyYmxvY2sgdG8gYXZvaWQgcG90ZW50aWFsIGRpdmlkZSBieSB6ZXJvIGVycm9ycyBieSBvdGhlciBwYXJ0cyBvZgorbGlicmFyeS4KKworVGhlIGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoKSBmdW5jdGlvbiBub3cgaGFzIGEgc2FmZXR5IGNoZWNrIHRvIGF2b2lkCithIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBjb3JydXB0ZWQgZmlsZXN5c3RlbXMuCisKK1RoZSBleHQyZnNfbmV3X2lub2RlKCkgZnVuY3Rpb24gbm93IGhhcyBhIHNhbml0eSBjaGVjayBzbyB0aGF0IGlmIHRoZQorc19maXJzdF9pbm9kZSBmaWVsZCBpbiB0aGUgc3VwZXJibG9jayBpcyBpbnNhbmUsIGl0IHdpbGwgcmV0dXJuCitFWFQyX0VUX0lOT0RFX0FMTE9DX0ZBSUwgaW5zdGVhZCBvZiByZXR1cm5pbmcgYW4gaW52YWxpZCBpbm9kZSBudW1iZXIuCisKK1RvIGF2b2lkIHNlZ21lbnRhdGlvbiBmYXVsdHMsIGV4dDJmc19ibG9ja19hbGxvY19zdGF0cygpIGFuZAorZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzKCkgbm93IHZhbGlkYXRlcyB0aGUgcGFzc2VkIGlub2RlIG9yIGJsb2NrCitudW1iZXIgdG8gYXZvaWQgb3ZlcnJ1bm5pbmcgYW4gYXJyYXkgYm91bmRhcnkuCisKK1ZhcmlvdXMgc2lnbmVkL3Vuc2lnbmVkIGVycm9ycyBmb3IgdmFyaWFibGVzIGNvbnRhaW5pbmcgYmxvY2sgbnVtYmVycworaGF2ZSBiZWVuIGZpeGVkLgorCitBY2NvbW9kYXRpb25zIGZvciBnY2MncyBzdHVwaWRpdHkgaW4gbm90IHJlYWxpemluZyB0aGF0IGNvbnN0YW50CitzdHJpbmdzIHRoYXQgZG8gbm90IGNvbnRhaW4gYSAnJScgY2hhcmFjdGVyIGFyZSBzYWZlIHRvIHVzZSBpbiBmb3JtYXQKK3N0cmluZ3MgaGF2ZSBiZWVuIG1hZGUgc28gdGhhdCBkaXN0cmlidXRpb25zIHRoYXQgd2FudCB0byBjb21waWxlCitlMmZzcHJvZ3Mgd2l0aCAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSBoYXZlIGFuIGVhc2llciB0aW1lIGRvaW5nIHNvLgorCitBZGRlZCBhIG5ldyA2NC1iaXQgZ2V0c2l6ZSBpbnRlcmZhY2UsIGV4dDJmc19nZXRfZGV2aWNlX3NpemUyKCkuCisKK0FkZGVkIHRoZSB1dGlsaXR5IG1ha2Utc3BhcnNlLmMgdG8gdGhlIGNvbnRyaWIgZGlyZWN0b3J5LgorCitUaGUgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUyKCkgZnVuY3Rpb24gbm93IHJlZmxlY3RzIGVycm9ycyBmcm9tCitleHQyZnNfZXh0ZW50X3NldF9ibWFwKCkgdG8gdGhlIGNhbGxlciwgaWYgdGhlIGNhbGxiYWNrIHRyaWVzIHRvCitjaGFuZ2UgYSBibG9jayBvbiBhbiBleHRlbnQtYmFzZWQgZmlsZSwgYW5kIGV4dDJmc19leHRlbnRfc2V0X2JtYXAoKQorZmFpbHMgZm9yIHNvbWUgcmVhc29uIChmb3IgZXhhbXBsZSwgdGhlcmUgaXNuJ3QgZW5vdWdoIGRpc2sgc3BhY2UgdG8KK3NwbGl0IGEgbm9kZSBhbmQgZXhwYW5kIHRoZSBleHRlbnQgdHJlZS4KKworVGhlIGV4dDJmc19ibG9ja19pdGVyYXRlMigpIGZ1bmN0aW9uIHdpbGwgcHJlc2VydmUgdGhlIHVuaW5pdCBmbGFnIGluCitleHRlbnRzIHdoZW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1vZGlmaWVzIGEgYmxvY2sgaW4gYW4gZXh0ZW50LWJhc2VkCitmaWxlLgorCitFMmZzY2sgd2lsbCBub3cgZmxhZyBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgYW4gaW5zYW5lIHNfZmlyc3RfaW5vIGZpZWxkCitpbiB0aGVpciBzdXBlcmJsb2NrLCBhbmQgYXR0ZW1wdCB0byB1c2UgYSBiYWNrdXAgc3VwZXJibG9jayB0byByZXBhaXIKK3RoZSBmaWxlc3lzdGVtLgorCisKK0UyZnNwcm9ncyAxLjQxLjMgKE9jdG9iZXIgMTIsIDIwMDgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFMmZzY2sgaGFzIGJlZW4gZml4ZWQgc28gaXQgcHJpbnRzIHRoZSBjb3JyZWN0IGlub2RlIG51bWJlciBmb3IKK3Vpbml0X2JnIHJlbGF0ZWQgcHJvYmxlbXMuCisKK0UyZnNjayB3aWxsIG5vdyBvZmZlciB0byBjbGVhciB0aGUgdGVzdF9mcyBmbGFnIGlmIHRoZSBleHQ0IGZpbGVzeXN0ZW0KK2lzIGF2YWlsYWJsZSBvbiBsaW51eC4gIFRoaXMgY2FuIGJlIGRpc2FibGVkIHZpYSBhIGNvbmZpZ3VyYXRpb24KK29wdGlvbiBpbiAvZXRjL2UyZnNjay5jb25mLgorCitGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBsaWJibGtpZCB3aGVuIGNoZWNraW5nIHRvIHNlZSBpZiBhbiBleHQ0CitvciBleHQ0ZGV2IG1vZHVsZSBleGlzdHMuCisKK0ZpeCBhIGJ1ZyBpbiBlMmZzY2sgd2hlcmUgaW4gcHJlZW4gbW9kZSwgaWYgdGhlcmUgYXJlIGRpc2sgSS9PIGVycm9ycword2hpbGUgdHJ5aW5nIHRvIGNsb3NlIGEgZmlsZXN5c3RlbSBjYW4gbGVhZCB0byBpbmZpbml0ZSBsb29wcy4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYSAjNDY1Njc5KQorICAgIAorRml4IGEgYnVnIGluIHJlc2l6ZTJmcyB3aGVyZSBwYXNzaW5nIGluIGEgYm9ndXMgbmV3IHNpemUgb2YgMCBibG9ja3MKK3dpbGwgY2F1c2UgcmVzaXplMmZzIHRvIGRyb3AgaW50byBhbiBpbmZpbml0ZSBsb29wLiAgKEFkZHJlc3NlcyBSZWQKK0hhdCBCdWd6aWxsYTogIzQ2NTk4NCkKKyAgICAKK0FkZCBhIGNoZWNrIGluIHRoZSBVbml4IEkvTyBmdW5jdGlvbnMgaW4gbGliZXh0MmZzIHNvIHRoYXQgd2hlbiBhCitkZXZpY2UgaXMgb3BlbmVkIHJlYWQvd3JpdGUsIHJldHVybiBhbiBlcnJvciBpZiB0aGUgZGV2aWNlIGlzCityZWFkLW9ubHkgdXNpbmcgdGhlIEJMS1JPR0VUIGlvY3RsLgorCitGaXggZGVidWdmcydzIG5jaGVjayBjb21tYW5kIHNvIHRoYXQgaXQgcHJpbnRzIGFsbCBvZiB0aGUgbmFtZXMgb2YKK2hhcmRsaW5rcyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisKK0ZpeCBhIGJ1ZyBpbiBsaWJibGtpZCBzbyBpdCBjb3JyZWN0bHkgZGV0ZWN0cyB3aGV0aGVyIHRoZSBleHQ0IGFuZAorZXh0NGRldiBmaWxlc3lzdGVtcyBhcmUgYXZhaWxhYmxlLCBzbyB0aGF0IHRoZSBleHQ0ZGV2LT5leHQ0CitmYWxsYmFjayBjb2RlIHdvcmtzIGNvcnJlY3RseS4KKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IGEgcGFyYWxsZWwgYnVpbGQgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB1dGlsL3N1YnN0IGlzIGJ1aWx0IGJlZm9yZQordHJ5aW5nIHRvIGJ1aWxkIHRoZSBsaWIvZXQgZGlyZWN0b3J5LiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjMjE0MzI4MSkKKworVXBkYXRlZCAibWFrZSBkZXBlbmQiIGluZm9ybWF0aW9uIGZvciBjcmMxNi5vCisgICAgCisKK0UyZnNwcm9ncyAxLjQxLjIgKE9jdG9iZXIgMiwgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGUyZnNjaydzIGF1dG9tYXRpYyBibG9ja3NpemUgZGV0ZWN0aW9uLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24KK2Zyb20gZTJmc3Byb2dzIDEuNDAuNyB3aGljaCBjYXVzZWQgZTJmc2NrIHRvIGZhaWwgaWYgdGhlIHVzZXIKK3NwZWNpZmllcyBhIGJsb2NrIG51bWJlciB1c2luZyB0aGUgLWIgb3B0aW9uIGlmIHRoZSBibG9ja3NpemUgb3B0aW9uCitpc24ndCBhbHNvIHNwZWNpZmllZCB1c2luZyAtQi4gIFVuZm9ydHVuYXRlbHksIHVzZXJzIHZlcnkgY29tbW9ubHkKK2ludm9rZSBlMmZzY2sgdXNpbmcgImUyZnNjayAtYiAzMjc2OCAvZGV2L2hkWFhYIiB0byB1c2UgdGhlIGJhY2t1cAorc3VwZXJibG9jazsgaW4gZmFjayBlMmZzY2sgd2lsbCBvZnRlbiBzdWdnZXN0IHRoaXMga2luZCBvZiBjb21tYW5kCitsaW5lLiAgT29wcy4KKworRW5oYW5jZSB0aGUgZGVidWdmcydzICJuY2hlY2siIGNvbW1hbmQgc28gaXQgd2lsbCBwcmludCBhbGwgb2YgdGhlCitwYXRobmFtZXMgZm9yIHRoZSBzcGVjaWZpZWQgaW5vZGVzLiAgKFByZXZpb3VzbHksIGluIHNvbWUgY2FzZXMgbmNoZWNrCittaWdodCBub3QgcHJpbnQgYSBwYXRobmFtZSBmb3IgYW4gaW5vZGUgYXQgYWxsIGlmIHNvbWUgb2YgdGhlIG90aGVyCitpbm9kZXMgaGFkIG11bHRpcGxlIGhhcmQgbGlua3MuKQorCitFbmhhbmNlIGRlYnVnZnMncyAiaGFzaCIgY29tbWFuZCBzbyB0aGUgaGFzaCBzZWVkIGNhbiBiZSBzcGVjaWZpZWQgdmlhCithIGNvbW1hbmQtbGluZSBvcHRpb24uICBJbiBhZGRpdGlvbiwgYWxsb3cgdGhlIGhhc2ggYWxnb3JpdGhtIHRvIGJlCitzcGVjaWZpZWQgYnkgbmFtZSBpbnN0ZWFkIG9mIGp1c3QgYnkgbnVtYmVyLgorCitGaXggZTJmc2NrIHNvIHRoYXQgd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IHByaW50IHRoZSB0cmFuc2xhdGlvbiBmaWxlJ3MKK2hlYWRlciB3aGVuIGFza2luZyB0aGUgdXNlciBhIGN1c3RvbSBxdWVzdGlvbiBzbyB0aGVyZSBpcyBubyBwcm9tcHQKK2RlZmluZWQgZm9yIGEgcGFydGljdWxhciBwcm9ibGVtIHJlY29yZC4gIEZvciBleGFtcGxlLCB0aGUgcXVlc3Rpb24KKyJSdW4gam91cm5hbCBhbnl3YXkiIHdpbGwgZ2V0IHRoZSBQTyBoZWFkZXIgdGFja2VkIG9uIGJlY2F1c2UgZTJmc2NrCitlcnJvbmVvdXNseSBwYXNzZWQgdGhlIG51bGwgc3RyaW5nIHRvIF8oKS4gIChBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZzoKKyMyNDY4OTIpCisKK0VuaGFuY2UgYmFkYmxvY2tzIHNvIHRoYXQgaXQgY2FuIHRlc3QgYSBub3JtYWwgZmlsZSB3aGljaCBpcyBncmVhdGVyCit0aGFuIDJHQi4KKworRW5oYW5jZSB0aGUgYmFkYmxvY2tzIGNvbW1hbmQgc28gdGhhdCBpdCBkaXNwbGF5cyB0aGUgdGltZSBhbmQKK3BlcmNlbnRhZ2UgY29tcGxldGUgd2hlbiBpbiB2ZXJib3NlIG1vZGUuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6CisjNDI5NzM5KQorCitGaXggYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgaW4gYSBlcnJvciBoYW5kbGluZyBwYXRoIGluIGRlYnVnZnMncworbmNoZWNrIGZ1bmN0aW9uLgorCitGaXggYSBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gcHJvYmxlbSBpZiBhIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzCitpbiByZXNpemUyZnMuCisKK0ZpeCB0aGUgdXNhZ2UgbWVzc2FnZSBmb3IgZGVidWdmcydzIGxvZ2R1bXAgY29tbWFuZCB0byBiZSBjb25zaXN0ZW50Cit3aXRoIGl0cyBtYW4gbWFucGFnZS4KKworVXBkYXRlIFBvbGlzaCwgRnJlbmNoLCBWaWV0bmFtZXNlLCBEdXRjaCwgSW5kb25lc2lhbiwgR2VybWFuLCBDemVjaCwKK2FuZCBTd2VlZGlzaCB0cmFuc2xhdGlvbiBmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorCitBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZpbGUgSS9PIGZ1bmN0aW9ucyB0byB0aGUgbGliZXh0MmZzLnRleGluZm8KK2ZpbGUuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0ODQ4NzcpCisgICAgCitVcGRhdGUgYW5kIGNsYXJpZmllZCB2YXJpb3VzIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZworIzI3NTI3MjsgQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNDk4MTAwLCAjNDk4MTAxLCAjNDk4MTAyLCAjNDk4MTAzKQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ5NzYxOSkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IGEgcG90ZW50aWFsIGZpbGUgZGVzY3JpcHRvciBsZWFjayBpbiBsaWJjb21fZXJyIGJ5IHNldHRpbmcgdGhlCitjbG9zZS1vbi1leGVjIGZsYWcgZm9yIGEgZmQgdXNlZCBmb3IgZGVidWdnaW5nLiAgKEFkZHJlc3NlcyBSZWQgSGF0CitCdWd6aWxsYSAjNDY0Njg5KQorCitGaXggYSBwb3RlbnRpYWwgcmFjZSBpbiBsaWJjb21fZXJyIGJ5IHVzaW5nIHNlbV9wb3N0L3NlbV9pbml0LiAgU3VTRQoraGFzIGJlZW4gY2FycnlpbmcgYSBwYXRjaCBmb3IgYSBsb25nIHRpbWUgdG8gcHJldmVudCBhIGxhcmdlbHkKK3RoZW9yZXRpY2FsIHJhY2UgY29uZGl0aW9uIGlmIGEgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb24gYWRkcyBhbmQKK3JlbW92ZXMgZXJyb3IgdGFibGVzIGluIG11bHRpcGxlIHRocmVhZHMuICBVbmZvcnR1bmF0ZWx5IFN1U0UncworYXBwcm9hY2ggYnJlYWtzIGNvbXBhdGliaWxpdHkgYnkgZm9yY2luZyBhcHBsaWNhdGlvbnMgdG8gbGluayBhbmQKK2NvbXBpbGUgd2l0aCB0aGUgLXB0aHJlYWQgb3B0aW9uOyB1c2luZyBwdGhyZWFkIG11dGV4ZXMgaGFzCitoaXN0b3JpY2FsbHkgYmVlbiBwcm9ibGVtYXRpYy4gIFdlIGZpeCB0aGlzIGJ5IHVzaW5nIHNlbV9wb3N0L3NlbV9pbml0CitpbnN0ZWFkLgorCitGaXggZTJmc3Byb2dzLWxpYnMgYnVpbGQgZmFpbHVyZSBkdWUgdG8gJ3N1YnMnIHRhcmdldC4gIChBZGRyZXNzZXMKK1NvdXJjZWZvcmdlIEJ1ZzogIzIwODc1MDIpCisKK0F2b2lkIGxpbmtpbmcgZTJpbml0cmRfaGVscGVyLCBkZWJ1Z2ZzLCBibGtpZCwgYW5kIGZzY2sgd2l0aCB1bm5lZWRlZAorbGlicmFyaWVzIHdoZW4gdXNpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXMuCisKK0ZpeCBFTEYgc2hhcmVkIGxpYnJhcnkgd2hlbiBidWlsZGluZyBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgYWxyZWFkeQoraGF2ZSB0aGUgZTJmc3Byb2dzIHNoYXJlZCBsaWJyYXJpZXMgYWxyZWFkeSBpbnN0YWxsZWQuICAoQWRkcmVzc2VzCitTb3VyY2Vmb3JnZSBCdWc6ICMyMDg4NTM3KQorCitGaXggdGhlIHBrZy1jb25maWcgZmlsZXMgc28gdGhleSB3b3JrIGNvcnJlY3RseSB3aGVuIGxpbmtpbmcgd2l0aAorc3RhdGljIGxpYnJhcmllcyBhbmQgZml4IHRoZSBpbmNsdWRlIGRpcmVjdG9yeSBzbyBwcm9ncmFtcyBkb24ndCBoYXZlCit0byB1c2UgI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4sIGJ1dCBjYW4gdXNlICNpbmNsdWRlIDxleHQyZnMuaD4KK2luc3RlYWQuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzIwODk1MzcpCisgICAgCitNYWtlIHN1cmUgZXh0MmZzX3N3YWI2NCgpIGlzIGNvbXBpbGVkIGZvciBhbGwgcGxhdGZvcm1zLCBhbmQgbm90IGp1c3QKK2ZvciB4ODYuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0OTc1MTUpCisgICAgCitSZW1vdmUgdGhlIHVudXNlZCBleHQyZnNfZmluZF97Zmlyc3QsZXh0fV9iaXRfc2V0KCkgZnVuY3Rpb25zIGZvciBhbGwKK25vbi14ODYgcGxhdGZvcm1zLiAgKFRoZXkgaGFkIGJlZW4gcmVtb3ZlZCBmb3IgeDg2IGVhcmxpZXIuKQorCitGaXggZGlldCBsaWJjIGNvbXBpbGF0aW9uIHN1cHBvcnQsIHdoaWNoIGhhZCBiaXRyb3R0ZWQgZHVlIHRvIGxhY2sgb2YKK1RMQy4gIEZpeGluZyB0aGlzIGltcHJvdmVzIGdlbmVyYWwgcG9ydGFiaWxpdHkuCisKK1doZW4gaW5zdGFsbGluZyB0aGUgbGluayBsaWJyYXJ5IHdoZW4gdXNpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXMsCithdm9pZCB1c2luZyBhYnNvbHV0ZSBwYXRobmFtZXMgaWYgdGhlIGxpbmsgbGlicmFyeSBhbmQgdGhlIHNoYXJlZAorbGlicmFyeSBhcmUgaW5zdGFsbGVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UKK0J1ZzogIzE3ODI5MTMpCisKK0ZpeCBnZW4tdGFyYmFsbCBzbyBpdCB3aWxsIHdvcmsgZXZlbiBpZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBoYXMKK2JlZW4gcmVuYW1lZCB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiAiZTJmc3Byb2dzIi4gIEFsc28gbWFrZQorZ2VuLXRhcmJhbGwgcHJpbnQgdGhlIHNpemUgb2YgdGhlIHJlc3VsdGluZyB0YXIuZ3ogZmlsZS4KKworCitFMmZzcHJvZ3MgMS40MS4xIChTZXB0ZW1iZXIgMSwgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNYW55IHBlb3BsZSBhcmUgZm9yZ2V0dGluZyB0byB1cGRhdGUgdGhlaXIgbWtlMmZzLmNvbmYgZmlsZSwgYW5kIHRoaXMKK2NhdXNlcyBleHQzLCBleHQ0LCBhbmQgZXh0NGRldiBmaWxlc3lzdGVtcyB3b24ndCBnZXQgY3JlYXRlZCB3aXRoIHRoZQorcHJvcGVyIGZlYXR1cmVzIGVuYWJsZWQuICBXZSBhZGRyZXNzIHRoaXMgaW4gdHdvIHdheXMuICBGaXJzdCwgbWtlMmZzCit3aWxsIGlzc3VlIGEgd2FybmluZyBpZiB0aGVyZSBpcyBub3QgZGVmaW5pdGlvbiBmb3IgYW4gZXh0MywgZXh0NCwgb3IKK2V4dDRkZXYgZmlsZXN5c3RlbSBhbmQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIGNyZWF0ZSBzdWNoIGEgZmlsZXN5c3RlbQordHlwZS4gIFNlY29uZGx5LCB3aGVuIGluc3RhbGxpbmcgZnJvbSBhIHNvdXJjZSBidWlsZCwgIm1ha2UgaW5zdGFsbCIKK3dpbGwgcHJvdmlkZSBiYXNpYyBjb25maWd1cmF0aW9uIGZpbGUgaGFuZGxpbmcgZm9yIC9ldGMvbWtlMmZzLmNvbmYuCitJZiBpdCBleGlzdHMsIGFuZCBkb2VzIG5vdCBtZW50aW9uIGV4dDRkZXYsIGl0IHdpbGwgYmUgbW92ZWQgYXNpZGUgdG8KKy9ldGMvbWtlMmZzLmNvbmYuZTJmcHNyb2dzLW9sZCBhbmQgdGhlIG5ldyAvZXRjL21rZTJmcy5jb25mIGZpbGUgd2lsbAorYmUgaW5zdGFsbGVkLiAgSWYgdGhlIGV4aXN0aW5nIC9ldGMvbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG1lbnRpb24KK2V4dDRkZXYsIHRoZW4gIm1ha2UgaW5zdGFsbCIgd2lsbCBpbnN0YWxsIG9mZmljaWFsIG1rZTJmcy5jb25mIGZpbGUgYXMKKy9ldGMvbWtlMmZzLmNvbmYuZTJmc3Byb2dzLW5ldyBhbmQgaXNzdWUgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIHRoYXQKK3RoZXkgc2hvdWxkIGxvb2sgdG8gc2VlIGlmIGFueSBjaGFuZ2VzIG5lZWQgdG8gYmUgbWVyZ2VkLgorCitUaGUgbWtlMmZzIHByb2dyYW0gd2lsbCBub3cgY3JlYXRlIHRoZSBqb3VybmFsIGluIHRoZSBtaWRkbGUgb2YgdGhlCitmaWxlc3lzdGVtLCBzaW5jZSB0aGlzIG1pbmltaXplcyBzZWVrIHRpbWVzIG9uIGF2ZXJhZ2UgZm9yIGZzeW5jLWhlYXZ5Cit3b3JrbG9hZHMuICBJbiBhZGRpdGlvbiwgbWtlMmZzIHdpbGwgbm93IGNyZWF0ZSBqb3VybmFscyB1c2luZyBleHRlbnRzCitmb3IgZmlsZXN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZW0uICBUaGlzIHJlc3VsdHMgaW4gYSBtb3JlIGVmZmljaWVudAorZW5jb2RpbmcgZm9yIHRoZSBqb3VybmFsIHNpbmNlIGl0IGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIHVzaW5nCitpbmRpcmVjdCBibG9ja3MuCisKK1RoZSBta2UyZnMgcHJvZ3JhbSB3aWxsIGF2b2lkIGFsbG9jYXRpbmcgYW4gZXh0cmEgYmxvY2sgdG8gdGhlCitqb3VybmFsLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMxNDgzNzkxKQorCitNa2UyZnMgd2lsbCBjb3JyZWN0bHkgZW5mb3JjZSB0aGUgcHJvaGliaXRpb24gYWdhaW5zdCBmZWF0dXJlcworKHNwZWNpZmljYWxseSByZWFkLW9ubHkgZmVhdHVyZXMpIGluIHJldmlzaW9uIDAgZmlsZXN5c3RlbXMuICAoVGhhbmtzCit0byBCZW5ubyBTY2h1bGVuYmVyZyBmb3Igbm90aWNpbmcgdGhpcyBwcm9ibGVtLikKKworTWtlMmZzIHByZXZpb3VzbHkgd291bGQgb2NjYXNpb25hbHkgY3JlYXRlIHNvbWUgc2xpZ2h0bHkgbm9uLW9wdGltYWxseQorcGxhY2VkIGlub2RlIHRhYmxlczsgdGhpcyBidWcgaGFzIGJlZW4gZml4ZWQuCisKK1RoZSBta2UyZnMgYW5kIHR1bmUyZnMgcHJvZ3JhbXMgbm93IHByaW50IHRoZSBjb3JyZWN0IHVzYWdlIG1lc3NhZ2UKK2Rlc2NyaWJpbmcgdGhlIG1heGltdW0gam91cm5hbCBzaXplLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDkxNjIwKQorCitBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyB0aGUgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB1c2VkIGluIGItdHJlZQorZGlyZWN0b3JpZXMgaW4gdHVuZTJmcyAoZnJvbSBhIGNvbW1hbmQtbGluZSBvcHRpb24pIG9yIG1rZTJmcyAodmlhCitta2UyZnMuY29uZikuICBJbiBhZGRpdGlvbiwgY2hhbmdlIHRoZSBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtIHRvCitoYWxmX21kNCwgc2luY2UgaXQgaXMgZmFzdGVyIGFuZCBiZXR0ZXIuCisKK1RoZSBibGtpZCBsaWJyYXJ5IHdpbGwgbm93IHJlY29nbml6ZSBNYWNPUyBoZnN4IGZpbGVzeXN0ZW1zLCBhbmQKK2NvcnJlY3RseSBleHRyYWN0IHRoZSBsYWJlbCBhbmQgdXVpZCBmb3IgaGZzLCBoZnN4LCBhbmQgaGZzcGx1cworZmlsZXN5c3RlbXMuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEZlYXR1cmUgUmVxdWVzdHM6ICMyMDYwMjkyKQorCitUaGUgYmxraWQgbGlicmFyeSBoYXMgaW1wcm92ZWQgZGV0ZWN0aW9uIG9mIEpGUyBhbmQgSFBGUyBmaWxlc3lzdGVtcy4KKyhBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZzogIzI1NTI1NSkKKworVGhlIGJsa2lkIGxpYnJhcnkgaXMgbm93IG11Y2ggbW9yZSBlZmZpY2llbnRseSBoYW5kbGluZyBkZXZpY2VtYXBwZXIKK2RldmljZXMsIG1haW5seSBieSBubyBsb25nZXIgdXNpbmcgdGhlIGRldmljZW1hcHBlciBsaWJyYXJ5LiAgVGhpcyBjYW4KK3NwZWVkIHVwIGFjY2VzcyBmb3Igc3lzdGVtcyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGRldmljZSBtYXBwZXIKK2RldmljZXMuCisKK0Jsa2lkIGhhZCBhIG51bWJlciBvZiBjYWNoZSB2YWxpZGF0aW9uIGJ1Z3MgaW4gbGliYmxraWQgdGhhdCBoYXZlIGJlZW4KK2ZpeGVkLiAgIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ5MzIxNikKKworUmVzaXplMmZzIHdpbGwgbm93IHByb3Blcmx5IGNsb3NlIG91dCB0aGUgInVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCitwcm9ncmVzcyBiYXIgc28gdGhlcmUgaXMgYSBuZXdsaW5lIHByaW50ZWQgYmVmb3JlIHByaW50aW5nIHRoZSBmaW5hbAorInJlc2l6ZSBpcyBzdWNjZXNzZnVsIiBtZXNzYWdlLgorCitSZXNpemUyZnMgd2lsbCBub3cgY29ycmVjdGx5IGhhbmRsZSBmaWxlc3lzdGVtcyB3aXRoIGV4dGVudHMgYW5kL28KK3VuaW5pdGlhbGl6ZWQgYmxvY2sgZ3JvdXBzIGNvcnJlY3RseSB3aGVuIGZpbGUvZGlyZWN0b3J5IGJsb2NrcyBuZWVkCit0byByZWxvY2F0ZWQgKGkuZS4sIHdoZW4gc2hyaW5raW5nIGEgZmlsZXN5c3RlbSBvciBpZiB0aGUgcmVzaXplX2lub2RlCitpcyBub3QgcHJlc2VudCkuICBUbyBzdXBwb3J0IHRoaXMsIHRoZSBleHQyZnMgbGlicmFyeSBub3cgc3VwcG9ydHMKK2luaXRpYWxpemluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyB0aGF0IGFyZSBub3QgeWV0IGluaXRpYWxpemVkIHdoZW4KK2FsbG9jYXRpbmcgdGhlbSB1c2luZyBleHQyZnNfbmV3X2Jsb2NrKCkgYW5kIGV4dDJmc19uZXdfaW5vZGUoKS4gIEluCithZGRpdGlvbiwgZTJmc19ibG9ja19pdGVyYXRlMigpIGNhbiBub3cgc3VwcG9ydCBjaGFuZ2luZyB0aGUgbG9jYXRpb24KK29mIGludGVyaW9yIG5vZGVzIG9mIGFuIGV4dGVudCB0cmVlLCBhbmQgZXh0MmZzX2V4dGVudF9zZXRfYm1hcCgpIGhhcworYmVlbiBvcHRpbWl6ZWQgdG8gYXZvaWQgY3JlYXRpbmcgdW5uZWNlc3NhcnkgbmV3IGV4dGVudHMgd2hlbiB1cGRhdGluZwordGhlIGxvY2F0aW9uIG9mIGJsb2NrcyBpbiB0aGUgZXh0ZW50IHRyZWUuICBUaGlzIHdpbGwgYWxzbyBoZWxwIG91dAorZTJmc2NrJ3MgcmVjb3Zlcnkgb2Ygb2JzY3VyZWx5IGNvcnJ1cHRlZCBmaWxlc3lzdGVtcyB3aXRoIGV4dGVudHMsCit3aGVuIGJsb2NrcyBhcmUgY2xhaW1lZCBieSBtdWx0aXBsZSBpbm9kZXMuCisKK0FkZCBzdXBwb3J0IGZvciBvbi1saW5lIHJlc2l6aW5nIGV4dDQgZmlsZXN5c3RlbSB3aXRoIHRoZSBmbGV4X2JnCitmaWxlc3lzdGVtIGZlYXR1cmUuICBUaGUgbWV0aG9kIGZvciBkb2luZyBzbyBpcyBub3Qgb3B0aW1hbCwgYnV0IHRvIGRvCithIGJldHRlciBqb2Igd2lsbCByZXF1aXJlIGtlcm5lbCBzdXBwb3J0LgorCitFMmZzcHJvZ3MgMS40MS4wIGludHJkdWNlZCBhIGJ1ZyBpbiBsaWJleHQyZnMgd2hpY2ggY2FzdWVkIGUyaW1hZ2UgYW5kCitkZWJ1Z2ZzIHByb2dyYW1zIHRvIG5vdCBiZSBhYmxlIHRvIHJlYWQgZTJpbWFnZSBmaWxlczsgdGhlIHNpZ25lZAordnMuIHVuc2lnbmVkIGJ1ZyBpbiB0aGUgY29kZSB3aGljaCByZWFkIGJpdG1hcHMgZnJvbSB0aGUgZTJpbWFnZSBoYXMKK2JlZW4gZml4ZWQuICAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDk1ODMwKQorCitSZXNpemUyZnMgaXMgbm93IGNvcnJlY3RseSBtYW5hZ2luZyB0aGUgZGlyZWN0b3J5IGluLXVzZSBjb3VudHMgd2hlbgorc2hyaW5raW5nIGZpbGVzeXN0ZW1zIGFuZCBkaXJlY3RvcnkgaW5vZGVzIG5lZWRlZCB0byBiZSBtb3ZlZCBmcm9tIG9uZQorYmxvY2sgZ3JvdXAgdG8gYW5vdGhlci4gIFRoaXMgYnVnIGhhcyBiZWVuIGFyb3VuZCBzaW5jZSBlMmZzcHJvZ3MKKzEuMjYsIGFuZCBpcyBsYXJnZWx5IGhhcm1sZXNzLCBidXQgZG9lcyBjYXVzZSBhIGZpbGVzeXN0ZW0gY29ycnVwdGlvbgord2hpY2ggd2lsbCBiZSBmbGFnZ2VkIGJ5IGUyZnNjayBhZnRlciB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbiBzaHJ1bmsuCisgCitFMmZzY2sgd2lsbCBubyBsb25nZXIgaXNzdWUgc3B1cmlvdXMgY29tcGxhaW50cyBhYm91dCB0aGUgaW5vZGUgc2l6ZQorY2F1c2VkIGJ5IHZlcnkgbGFyZ2UgZXh0ZW50LWJhc2VkIGZpbGVzLCBhbmQgYnkgYmxvY2tzIHJlYWxsb2NhdGVkCit1c2luZyBmYWxsb2NhdGUoKSB3aXRoIHRoZSBGQUxMT0NfRkxfS0VFUF9TSVpFIG9wdGlvbi4gIChBZGRyZXNzZXMKK0tlcm5lbCBCdWd6aWxsYTogIzExMzQxKQorCitNa2UyZnMgd2lsbCBub3cgc2V0IHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAgb24gdGhlIGxvc3QrZm91bmQgZGlyZWN0b3J5CithbmQgdGhlIHJvb3QgZGlyZWN0b3J5LiAgKE1vcmUgZ2VuZXJhbGx5LCBhbGwgbmV3IGlub2RlcyBjcmVhdGVkIHVzaW5nCit0aGUgZXh0MmZzIGxpYnJhcnkgd2lsbCBjb3JyZWN0bHkgc2V0IHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAuKQorCitFMmZzY2sgbm93IGNvcnJlY3RseSBjYWxjdWxhdGVzIGluZC9kaW5kL3RpbmQgc3RhdGlzdGljcyBpbiB0aGUKK3ByZXNlbmNlIG9mIGV4dGVudC1iYXNlZCBmaWxlcy4gIEluIGFkZGl0aW9uLCAiZTJmc2NrIC12IiB3aWxsIHJlcG9ydAorc3RhdGlzdGljcyBvZiB0aGUgZGVwdGggb2YgZXh0ZW50IHRyZWVzIGluIHRoZSBmaWxlc3lzdGVtLiAgRTJmc2NrIGNhbgorYWxzbyBnaXZlIGFuIGlub2RlIGZyYWdtZW50YXRpb24gcmVwb3J0IHVzaW5nICJlMmZzY2sgLUUgZnJhZ2NoZWNrIgord2hpY2ggY2FuIGJlIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZyB0aGUga2VybmVsIGJsb2NrIGFsbG9jYXRpb24KK3JvdXRpbmVzLgorCitGaXggc3VwcG9ydCBmb3IgZW1wdHkgZGlyZWN0b3J5IGJsb2NrcyBpbiBleHQ0IGZpbGVzeXN0ZW1zIHdpdGggNjRrCitibG9ja3NpemUgZmlsZXN5c3RlbXMuCisKK0UyZnNjayB3aWxsIG5vdyBwcmludCB0aGUgZGVwdGggb2YgY29ycnVwdCBodHJlZSBkaXJlY3Rvcmllcy4KKworRGVidWdmcydzIGh0cmVlIGNvbW1hbmQgbm93IGNvcnJlY3RseSB1bmRlcnN0YW5kcyBleHRlbnQtYmFzZWQKK2RpcmVjdG9yaWVzLiAgSXQgd2lsbCBhbHNvIHByaW50IG91dCB0aGUgbWlub3IgaGFzaCBhcyB3ZWxsIGFzIHRoZQorbWFqb3IgaGFzaC4KKworRGVidWdmcyBoYXMgYSBuZXcgY29tbWFuZCB3aGljaCB3aWxsIHByaW50IHRoZSBzdXBwb3J0ZWQgZmVhdHVyZXMgb2YKK2UyZnNwcm9ncywgdG8gZW5hYmxlIHNjcmlwdHMgdG8ga25vdyB3aGV0aGVyIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZgorZTJmc3Byb2dzIGNhbiBzdXBwb3J0IGEgc3BlY2lmaWMgZmVhdHVyZS4KKworRGVidWdmcyB3aWxsIG5vdyB3cml0ZSBmaWxlcyB1c2luZyBleHRlbnRzIGZvciBmaWxlc3lzdGVtcyB0aGF0CitzdXBwb3J0IHRoZW0uCisKK1RoZSBlcnJvciBtZXNzYWdlIHByaW50ZWQgYnkgInR1bmUyZnMgLUkiIGlmIHRoZSBpbm9kZSBzaXplIHdhcyB0b28KK3NtYWxsIHdhcyByYXRoZXIgY29uZnVzaW5nLCBzbyBpdCBoYXMgYmVlbiBpbXByb3ZlZC4gIEFsc28sIHdlIHdvbid0Cit0cnkgdG8gY3JlYXRlIGFuIHVuZG8gbG9nIHVudGlsIHdlIGtub3cgdGhhdCBjb21tYW5kLWxpbmUtc3BlY2lmaWVkCitwYXJhbWV0ZXJzIHN1Y2ggYXMgInR1bmUyZnMgLUkgPGlub2RlIHNpemU+IiBhcmUgdmFsaWQuCisKK0dpdmVuIHNvbWUgZmlsZXN5c3RlbXMgZm91bmQgImluIHRoZSB3aWxkIiB0aGF0IGhhZCBub24temVybyBibG9jaworZ3JvdXAgY2hlY2tzdW1zIGV2ZW4gdGhvdWdoIHRoZSB1bmluaXRfYmcvZ2R0X3N1bSBmZWF0dXJlIHdhcyBub3QKK2VuYWJsZWQsIGUyZnNjayB3b3VsZCBpc3N1ZSBzcHVyaW91cyBlcnJvciBtZXNzYWdlcy4gIFRlYWNoCitleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3ZlcmlmeSgpIHRvIGlnbm9yZSB0aGUgYmxvY2sgZ3JvdXAgY2hlY2tzdW0KK2VudGlyZWx5IGlmIHRoZSBmZWF0dXJlIGZsYWcgaXMgbm90IHNldC4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzoKKyM0OTA2MzcpCisKK1RoZSBibGtpZCBwcm9ncmFtIHdpbGwgbm93IHByaW50IG91dCBhIHVzZXItZnJpZW5kbHkgbGlzdGluZyBvZiBhbGwgb2YKK3RoZSBibG9jayBkZXZpY2VzIGluIHRoZSBzeXN0ZW0gYW5kIHdoYXQgdGhleSBjb250YWluIHdoZW4gZ2l2ZW4gdGhlCistTCBvcHRpb24uICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0OTA1MjcpCisKK1RoZSBmaWxlZnJhZyBwcm9ncmFtIG5vdyBoYXMgYSBtb3JlIGFjY3VyYXRlIGNhbGN1bGF0aW9uIGZvciB0aGUKK251bWJlciBvZiBpZGVhbCBleHRlbnRzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDU4MzA2KQorCitUaGUgdGVzdCBJL08gbWFuYWdlciBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0LCBidXQgaXRzIG92ZXJoZWFkIGlzCitvbmx5IGluY3VycmVkIHdoZW4gaXQgd291bGQgYmUgZW5hYmxlZCB2aWEgdGhlIFRFU1RfSU9fRkxBR1Mgb3IKK1RFU1RfSU9fQkxPQ0sgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCitUeXBvZ3JhcGhpY2FsIGVycm9ycyBpbiB2YXJpb3VzIHByb2dyYW0gc3RyaW5ncyBhbmQgdXNhZ2UgbWVzc2FnZXMKK2hhdmUgYmVlbiBmaXhlZDsgbW9zdCBvZiB0aGVzZSB3ZXJlIHBvaW50ZWQgb3V0IGJ5IHRoZSBlMmZzcHJvZ3MKK21lc3NhZ2UgY2F0YWxvZyB0cmFuc2xhdG9ycy4gIChUaGFua3MsIHRyYW5zbGF0b3JzISkKKworVXBkYXRlIGFuZCBjbGFyaWZpZWQgdmFyaW91cyBtYW4gcGFnZXMsIGFzIHdlbGwgYXMgc29tZSB0eXBvZ3JhcGhpY2FsCitlcnJvcnMgaW4gdGhlIGxpYmV4dDJmcyB0ZXhpbmZvIGZpbGUuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4KKworQWRkIEluZG9uZXNpYW4gYW5kIHVwZGF0ZSBGcmVuY2gsIFBvbGlzaCwgRHV0Y2gsIEdlcm1hbiwgU3dlZWRpc2gsCitDemVjaCwgYW5kIFZpZXRuYW1lc2UgVHJhbnNsYXRpb25zLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzMxMzY5NywKKyM0MDEwOTIpCisKK1Byb2dyYW1tZXIncyBOb3RlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeCBwb3J0YWJpbGl0eSBwcm9ibGVtIHdpdGggdGhlIGJhZGJsb2NrcyBncm91cDsgZm9yIHN5c3RlbXMgdGhhdAorZG9uJ3QgaGF2ZSBuYW5vc2xlZXAoKSwgdHJ5IHVzaW5nIHVzbGVlcCgpIGluc3RlYWQuCisKK1RoZSAibWFrZSBjaGVjayIgdGFyZ2V0IGluIHRoZSBlMmZzY2sgZGlyZWN0b3J5IG5vdyBzZXRzCitMRF9MSUJSQVJZX1BBVEggYmVmb3JlIHJ1bm5pbmcgdGhlIHZhcmlvdXMgZTJmc2NrIGludGVybmFsIGxpYnJhcnkKK3JlZ3Jlc3Npb24gdGVzdHMuCisKK1RoZSBjcmMzMiByZWdyZXNzaW9uIHRlc3QgaW4gdGhlIGUyZnNjayBsaWJyYXJ5IGlzIG5vdyBwb3J0YWJsZSB0bworZ3JlYXRlciB2YXJpZW50eSBvZiBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyBiaWctZW5kaWFuIHN5c3RlbXMgYW5kCit3aGVuIGNyb3NzLWJ1aWxkaW5nIGUyZnNwcm9ncyBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gIChBZGRyZXNzZXMKK1NvdXJjZWZvcmdlIEJ1ZzogIzIwMTkyODcpCisKK1RoZSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKCkgaGFkIHNvbWUgYnVncyB3aGVuIHNldHRpbmcgdGhlIGZpcnN0CitibG9jayBpbiBhIGZpbGUsIG9yIHdoZW4gcmVwbGFjaW5nIGEgc2luZ2xlIGJsb2NrIGV4dGVudC4gIFRob3NlIGNhc2VzCitmb3J0dW5hdGVseSB3ZXJlIGNhbWUgdXAgcmVsYXRpdmVseSByYXJlbHkgd2hlbiBlMmZzY2sgd2FzIGNoZWNraW5nCitmaWxlcywgYnV0IGNhdXNlZCBzb21lIHByb2JsZW1zIHdoZW4gcmVzaXplMmZzIHdhcyBzaHJpbmtpbmcKK2V4dGVudC1iYXNlZCBmaWxlcy4KKworRml4IGEgcG90ZW50aWFsIGNvcmUtZHVtcGluZyBidWcgaW4gbGliZTJwJ3MgaXRlcmF0ZV9vbl9kaXIoKQorZnVuY3Rpb24uCisKK1ZhcmlvdXMgZXh0MmZzIGxpYnJhcnkgZnVuY3Rpb25zIC0tLSBleHQyZnNfYmxvY2tfaXRlcmF0ZTIoKSwKK2V4dDJmc19pbml0aWFsaXplKCkgYW5kIGV4dDJmc19leHRlbnRfb3BlbigpIC0tLSBub3cgY29ycmVjdGx5IGZyZWUKK2FsbG9jYXRlZCBtZW1vcnkgdG8gYXZvaWQgbWVtb3J5IGxlYWtzIGluIGFsbCBvZiB0aGVpciBlcnJvciByZXR1cm4KK3BhdGhzLgorCitFeHQyZWQgd2FzIGZhaWxpbmcgdG8gYnVpbGQgYmVjYXVzZSBtYXNpeCBzdXBwb3J0IGhhZCBiZWVuIHJlbW92ZWQgaW4KK3RoZSByZXN0IG9mIGUyZnNwcm9ncywgc28gZXh0MmVkIG5vIGxvbmdlciBoYXMgbWFzaXggc3VwcG9ydCwgZWl0aGVyLgorCitUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgcmVzcGVjdHMgdGhlIExERkxBR1MgZW52aXJvbm1lbnQgdmFyaWFibGUgaWYKK2l0IGlzIHNldCB3aGVuIGNvbmZpZ3VyZSBpcyBjYWxsZWQuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEZlYXR1cmUKK1JlcXVlc3Q6ICMxOTM3Mjg3KQorCitMaWJ1dWlkIGlzIG5vdyBtb3JlIHBvcnRhYmxlIHRvIHRoZSBXaW5kb3dzIHBsYXRmb3JtLiAgKEFkZHJlc3NlcworU291cmNlZm9yZ2UgRmVhdHVyZSBSZXF1ZXN0OiAjMTkzNzI4NykKKworVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IHVzZXMgQUNfTVNHX3tSRVNVTFQsV0FSTixFUlJPUn0gaW5zdGVhZCBvZgorYmFyZSBlY2hvIGNvbW1hbmRzIHNvIHRoYXQgY29uZmlndXJlIGZsYWdzIHN1Y2ggYXMgLS1xdWlldCB3b3JrCitjb3JyZWN0bHkuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIFBhdGNoZXM6ICMyMDU4Nzk0KQorCitBIGZldyB1c2VzIG9mIHNwcmludGYgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgZXh0MmZzIGxpYnJhcnkgdG8KK21ha2UgbGlmZSBlYXNpZXIgZm9yIGJvb3Rsb2FkZXJzIHdpdGggYSBsaW1pdGVkIGxpYmMgZW52aXJvbm1lbnQuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzIwNDkxMjApCisKK1RoZSBleHQyZnNfcmVhZF9pbm9kZSgpIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGlub2RlIG51bWJlciBwYXNzZWQKK3RvIGl0IGVhcmxpZXIsIHRvIGF2b2lkIGRvaW5nIHNvbWUgbmVlZGxlc3Mgd29yayB3aGVuIGl0IHdvdWxkIGZhaWwKK2FueXdheS4KKworVGhlIGV4dDJmc19vcGVuKCkgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgYmxvY2tzaXplIHBhcmFtZXRlcgorcGFzc2VkIHRvIGl0IGVhcmxpZXIsIHRvIGF2b2lkIGRvaW5nIHNvbWUgbmVlZGxlc3Mgd29yayB3aGVuIGl0IHdvdWxkCitmYWlsIGFueXdheS4KKworRGlzYWJsZSBhIHZlcnkgYW5ub3lpbmcgYXV0b21hdGljICIlLnNoIC0+ICUiIEdOVSBtYWtlIHJ1bGUgaW4gdGhlCit0b3AtbGV2ZWwgTWFrZWZpbGUuICBUaGF0IGF1dG9tYXRpYyBydWxlIGlzIHVzZWQgdG8gYmV0dGVyIHN1cHBvcnQKK1NDQ1MsIGJ1dCBpdCBjYXVzZWQgcHJvYmxlbXMgZm9yIGEgcGFydGljdWxhciBuaWNoZSBkaXN0cmlidXRpb24gd2hpY2gKK2xpa2VzIHRvIHVzZSBjb25maWd1cmUuc2ggZmlsZXMgdG8gc3RvcmUgdGhlIGNvbmZpZ3VyZSBvcHRpb25zIHVzZWQgdG8KK2J1aWxkIGEgcGFja2FnZS4gIFVuZm9ydHVudGFlbHkgR05VIG1ha2Ugd2lsbCB1c2UgdGhlIGNvbmZpZ3VyZS5zaCB0bworcmVwbGFjZSB0aGUgY29uZmlndXJlIHNjcmlwdCwgcmVzdWx0aW5nIGluIGEgc2VsZi1pbmZsaWN0ZWQgZm9yayBib21iCitsZWFkaW5nIHRvIGFuIG91dC1vZi1tZW1vcnkgY3Jhc2guCisKK1RvIHN1cHBvcnQgb2xkIEdOVSBDIGNvbXBpbGVycyBkb24ndCB1c2UgQzk5L0MrKyBjb21tZW50cywgYnV0IG9ubHkKK0smUiBzdHlsZSBjb21tZW50cywgYW5kIGRvbid0IHRyeSB0byB1c2UgX19idWlsdGluX2V4cGVjdCBpZiBfX0dOVUNfXworaXMgbGVzcyB0aGFuIDMuICAoX19idWlsdGluX2V4cGVjdCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgZ2NjIHZlcnNpb25zCisyLjk2IGFuZCB1cCwgYW5kIGl0J3MgdHJpY2t5IHRvIGNoZWNrIGZvciBnY2MgMi45NSB2cyBnY2MgMi45Njsgc2luY2UKK3RoaXMgaXMgYW4gb3B0aW1pemF0aW9uLCB3ZSBvbmx5IHRyeSB0byB1c2UgX19idWlsdGluX2V4cGVjdCBmb3IgZ2NjIDMKK2FuZCB1cC4pCisKK0luIGUyZnNjaydzIGNyYyByb3V0aW5lcywgbWFrZSBzdXJlIHdlIHVzZSBXT1JEU19CSUdFTkRJQU4gaW5zdGVhZCBvZgorX19MSVRUTEVfRU5ESUFOLCB3aGljaCBhcmUgb25seSBkZWZpbmVkIGJ5IGdsaWJjJ3MgaGVhZGVyIGZpbGVzIGFuZAoraGVuY2UgaXNuJ3QgcG9ydGFibGUuCisKK0ZvciB0aGUgY29udmVuaWVuY2UgZm9yIHNvbWUgZGlzdHJpYnV0aW9ucyB0aGF0IG5lZWQgYSBzdGF0aWMgdHVuZTJmcywKK3RoZSBNYWtlZmlsZSBmb3IgbWlzYy8gbm93IGhhcyBhIHR1bmUyZnMuc3RhdGljIHRhcmdldC4KKworVGhlIGV4dDJmc19ibG9ja19pdGVyYXRlMigpIGZ1bmN0aW9uIG5vdyBzdXBwb3J0cyBCTE9DS19GTEFHX0FQUEVORAorZm9yIGV4dGVudC1iYXNlZCBmaWxlcworCitUaGUgZXh0MmZzX2JtYXAoKSBmdW5jdGlvbiBub3cgc3VwcG9ydHMgQk1BUF9BTExPQyBmb3IgZXh0ZW50LWJhc2VkCitmaWxlcy4KKworQWxsIHNvdXJjZSBmaWxlcyBubyBsb25nZXIgaGF2ZSBhbnkgdHJhaWxpbmcgd2hpdGUgc3BhY2UuCisKK1RoZSBpb19jaGFubmVsX3JlYWRfYmxrNjQoKSBhbmQgaW9fY2hhbm5lbF93cml0ZV9ibGs2NCgpIGZ1bmN0aW9ucyBhcmUKK25vdyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBDIHByZXByb2Nlc3NvciBtYWNyb3MgdG8gcHJvdmlkZSBiZXR0ZXIKK2ZvcndhcmQgY29tcGF0aWJpbGl0eS4KKworVGhlIGUyZnBzcm9ncyB0cmFuc2xhdGlvbiB0ZW1wbGF0ZSBub3cgZXhwYW5kcyB0aGUgQHggYWJicmV2YXRpb24uCisKK1ZhcmlvdXMgbmFtZXNwYWNlIGxlYWNrYWdlcyBpbiBsaWJibGtpZCwgbGliZTJwLCBhbmQgbGliZXh0MmZzIGhhdmUKK2JlZW4gZml4ZWQuCisKK0ZpeCBhIHBhcmFsbGVsIGJ1aWxkIHByb2JsZW0gaW4gZTJmc3Byb2dzLgorCitFMmZzcHJvZ3MgaXMgbm93IG1vcmUgcG9ydGFibGUgdG8gU29sYXJpcy4KKyAgKiBibGtpZCBubyBsb25nZXIgYXNzdW1lcyB0aGF0IHRoZSBUSU9DR1NJWkUgYW5kIFRJT0NHV0lOU1ogaW9jdGwncworICAgIGFyZSBhbHdheXMgcHJlc2VudC4KKyAgKiBTY3JpcHRzIGRvIG5vdCBhc3N1bWUgdGhhdCAvYmluL3RydWUgaXMgYWx3YXlzIGluIC9iaW4KKyAgKiBEb24ndCB1c2UgX19GVU5DVElPTl9fIHNpbmNlIFNvbGFyaXMncyBDOTkgZG9lc24ndCBzdXBwb3J0IGl0LgorICAqIEZsdXNoIHN0ZGlvIGhhbmRsZXMgYmVmb3JlIGNhbGxpbmcgc2V0YnVmKCksIHNpbmNlIFNvbGFyaXMgd2lsbAorICAgIGRpc2NhcmQgYW55IHBlbmRpbmcgb3V0cHV0IHRvIHRoZSBzdHJlYW0uCisgICogRGVmaW5lIF9YT1BFTl9TT1VSQ0UgdG8gNjAwIHNpbmNlIFNvbGFyaXMncyBoZWFkZXIgZmlsZXMgYXJlIHZlcnkKKyAgICBwaWNreSBhYm91dCB3aGljaCBDIGNvbXBpbGVyIGNhbiBiZXVzZWQgZm9yIFNVU3YzIGNvbmZvcm1hbmNlLgorICAgIFVzZSBvZiBDOTkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBTVVN2MiAoX1hPUEVOX1NPVVJDRT01MDApLAorICAgIGFuZCBDODkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBTVVN2MyAoX1hPUEVOX1NPVVJDRT02MDApLgorICAgIFNpbmNlIHdlIG5lZWQgc29tZSBTVVN2MyBmdW5jdGlvbnMsIGNvbnNpc3RlbnRseSB1c2UgU1VTdjMgc28KKyAgICB0aGF0IGUyZnNwcm9ncyB3aWxsIGJ1aWxkIG9uIFNvbGFyaXMgdXNpbmcgYzk5LgorICAqIFNvbGFyaXMgQzk5IGRvZXMgbm90IHN1cHBvcnQgdmFyYXJncyBDIHByZXByb2Nlc3NvciBtYWNyb3MKKyAgKiBTb2xhcmlzIGhlYWRlciBmaWxlcyBwb2xsdXRlIHRoZSBDIG5hbWVzcGFjZSBpZiBpbi9uZXRpbmV0LmgKKyAgICBpcyBpbmNsdWRlZCwgd2hpY2ggY29uZmxpY3RzIHdpdGggZTJmc3Byb2dzJyB1c2Ugb2YgdGhlIGttZW1fY2FjaGVfdAorICAgIHR5cGVkZWYuCisgICogU29sYXJpcyBzaGlwcyB3aXRoIGEgcGF0aGV0aWNhbGx5IGFuY2llbnQgc2hlbGwgaW4gL2Jpbi9zaCBzbyB3ZQorICAgIGF2b2lkIHRoZSB1c2Ugb2YgdmFyaW91cyBtb3JlIGF2YW5jZWQgc2hlbGwgY29uc3RydWN0cyBzdWNoIGFzICQoKS4KKworVGhlICJtYWtlIHJwbSIgY29tbWFuZCB3aWxsIG5vdyB0YWtlIHNvbWUgZXh0cmEgY29uZmlndXJlIG9wdGlvc24gZnJvbQordGhlIGJ1aWxkIGVudmlyb25tZW50IHdpdGhvdXQgbmVlZGluZyB0byBwYXRjaCB0aGUgc291cmNlIHRyZWUuCisKK1RoZSBleHQyZnNfYWRkX2Rpcl9ibG9jaygpIGZ1bmN0aW9uIHdpbGwgbm93IGdyb3cgdGhlIGRibGlzdCBtb3JlCithZ2dyZXNzaXZlbHkgYXMgYW4gb3B0aW1pemF0aW9uIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGFycmF5IHRvbyBvZnRlbi4KKworVGhlIGUyZnNja193cml0ZV9iaXRtYXBzKCkgd2lsbCB3cml0ZSB0aGUgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMKK3RvZ2V0aGVyIGluc3RlYWQgb2YgaW4gdHdvIHBhc3Nlcy4KKworCitFMmZzcHJvZ3MgMS40MSAoSnVseSAxMCwgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZGQgc3VwcG9ydCBmb3IgZXh0NCBmaWxlc3lzdGVtIGZlYXR1cmVzLCBpbiBwYXJ0aWN1bGFyIGV4dGVudHMsCit1bmluaXRfYmcsIGZsZXhfYmcsIGh1Z2VfZmlsZSwgYW5kIGRpcl9ubGluayBmZWF0dXJlcy4gIEFsc28gYWRkCitzdXBwb3J0IGZvciBjaGVja2luZyBqb3VybmFsIGNoZWNrc3Vtcy4gIERlYnVnZnMgd2lsbCBwcmludCBuZXcKK3N1cGVyYmxvY2sgYW5kIGlub2RlIGZpZWxkcyB0aGF0IHdlcmUgZGVmaW5lZCBmb3IgZXh0NC4gIEZvciBleGFtcGxlLAordGhlIG5hbm9zZWNvbmQgYW5kIGlfdmVyc2lvbiBmaWVsZHMgb2YgYW4gaW5vZGUsIGFuZCB0aGUKK3NfbWluX2V4dHJhX2lzaXplIGFuZCBzX3dhbnRlZF9leHRyYV9pc2l6ZSBmaWVsZHMgZnJvbSB0aGUgc3VwZXJibG9jay4KK05vdGU6IFJlc2l6ZTJmcyBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHRoZSBjb21iaW5hdGlvbiBvZiBmbGV4X2JnCithbmQgIXJlc2l6ZV9pbm9kZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzM4ODQ1MiwgIzQyNTQ3NykKKworVHVuZTJmcyBjYW4gc3VwcG9ydCBtaWdyYXRpbmcgYSBmaWxlc3lzdGVtIGZyb20gdXNpbmcgMTI4IGJ5dGUgaW5vZGVzCit0byAyNTYgYnl0ZSBpbm9kZXMsIHNvIGl0IGNhbiB0YWtlIGFkdmFudGFnZSBvZiB0aGUgZnVsbCBmZWF0dXJlcyBvZgorZXh0NC4KKworQWRkIHN1cHBvcnQgZm9yICJ1bmRvIiBzdXBwb3J0LiAgRTJmc2NrIGFuZCBta2UyZnMgY2FuIG9wdGlvbmFsbHkKK3JlY29yZCBhbiB1bmRvIGxvZyB3aGljaCBjYW4gcmVwbGF5ZWQgYnkgdGhlIHByb2dyYW0gZTJ1bmRvLgorCitFMmZzY2sgY291bGQgZGFtYWdlIGEgZmlsZXN5c3RlbSBieSB0cnlpbmcgdG8gcmVsb2NhdGUgaW5vZGUgdGFibGVzCitkdWUgdG8gY29ycnVwdGVkIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCB3aGVyZSB0aGUgYXR0ZW1wdGVkIGlub2RlCit0YWJsZSByZWxvY2F0aW9uIHdvdWxkIGRvIGZhciBtb3JlIGhhcm0gdGhhbiBnb29kLiAgRTJmc2NrIGhhcyBiZWVuCitmaXhlZCB0byBkZXRlY3QgdGhpcyB0aGVzZSBzb3J0cyBvZiBjb3JydXB0ZWQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMKK211Y2ggZWFybGllciBpbiBlMmZzY2sgcHJvY2Vzc2luZywgc28gaXQgY2FuIHRyeSB0byB1c2UgdGhlIGJhY2t1cAorc3VwZXJibG9jayBhbmQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgZmlyc3QuICBUaGlzIHNob3VsZCBiZSBhIG11Y2gKK2JldHRlciBzdHJhdGVneSBmb3IgcmVjb3ZlcmluZyB0aGVzZSB0eXBlcyBvZiBjb3JydXB0ZWQgZmlsZXN5c3RlbXMuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4NDAyOTEpCisKK0UyZnNjayB3aWxsIGRpc3BsYXkgYSBtb3JlIHVuZGVyc3RhbmRhYmxlIG1lc3NhZ2Ugd2hlbiB0aGUgbGFzdCBjaGVjaworZmllbGQgaW4gdGhlIHN1cGVyYmxvY2sgaXMgaW4gdGhlIGZ1dHVyZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzoKKyM0NDYwMDUpLgorCitFMmZzY2sgbm93IHBlcmZvcm1zIG1vcmUgZXh0ZW5zaXZlIGFuZCBjYXJlZnVsIGNoZWNrcyBvZiBleHRlbmRlZAorYXR0cmlidXRlcyBzdG9yZWQgaW4gdGhlIGlub2RlLgorCitFbmhhbmNlIG1rZTJmcyB0byBwcmludCBhIG1vcmUgZXhwbGFuYXRvcnkgZXJyb3IgbWVzc2FnZSB3aGVuCitleHQyZnNfZ2V0X2RldmljZV9zaXplKCkgcmV0dXJucyBFRkJJRy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzoKKyM0ODg2NjMpCisKK0ZpeCBta2UyZnMgdG8gdXNlIGEgZGVmYXVsdCBibG9jayBzaXplIG9mIDRrIHdoZW4gZm9ybWF0dGluZyBhbgorZXh0ZXJuYWwgam91cm5hbCBkZXZpY2UuICBUaGlzIGlzIGRvbmUgYnkgdXNpbmcgYSBmaXhlZCBmaWxlc3lzdGVtCit0eXBlIGxpc3QgdGhhdCBjb25zaXN0cyBvbmx5IG9mIHRoZSBzaW5nbGUgZmlsZXN5c3RlbSB0eXBlICJqb3VybmFsIgord2hlbiBsb29raW5nIHVwIGNvbmZpZ3VyYXRpb24ga2V5cyBpbiAvZXRjL21rZTJmcy5jb25mLiAgKEFkZHJlc3NlcworRGViaWFuIEJ1ZzogIzQ4ODY2MykKKworU3BlZWQgdXAgaG93IG1rZTJmcyB3cml0ZXMgdGhlIGpvdXJuYWwgZGF0YSBibG9ja3MgYnkgd3JpdGluZyB0aGUgZGlzaworYmxvY2tzIGluIGxhcmdlciBjaHVua3MuCisKK0ZpeCBibGtpZCBoYW5kbGluZyBvZiBzdGFsZSBkZXZpY2VzLiAgRml4IGEgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGEKK2NvcmUgZHVtcCB3aGlsZSBnYXJiYWdlIGNvbGxlY3RpbmcgdGhlIGJsa2lkIGNhY2hlLCBhbmQgYXNzdXJlIHRoYXQKK2Jsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnKCkgbmV2ZXIgcmV0dXJucyBhIG5vbi1leGlzdGVudCBkZXZpY2UuICBBbHNvLAoraWYgYSBmaWxlc3lzdGVtIGlzIGZvdW5kIGF0IGEgbmV3IC9kZXYgbG9jYXRpb24sIGVsaW1pbmF0ZSBhbnkKK2R1cGxpY2F0ZSBzdGFsZSBlbnRyaWVzIHdoaWNoIGNhbiBub3QgYmUgdmVyaWZpZWQuCisoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNDg3NzU4LCAjNDg3NzgzKQorICAgIAorQWRkIG1vcmUgcGFyYW5vaWQgY2hlY2tzIGZvciBMVk0gdm9sdW1lcyBhbmQgc3dhcCBwYXJ0aXRpb25zIGluCitibGtpZCdzIHByb2JlIGZ1bmN0aW9uLCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgZmFsc2UgcG9zaXRpdmVzLgorCitUaGUgbWtlMmZzIHByb2dyYW0gbm93IGhhcyBhIG11Y2ggbW9yZSBzb3BoaXN0aWNhdGVkIHN5c3RlbSBmb3IKK2NvbnRyb2xsaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBvZiBhIG5ld2x5IGNyZWF0ZWQgZmlsZXN5c3RlbQorYmFzZWQgb24gYSBzcGxpdCBmaWxlc3lzdGVtIGFuZCB1c2FnZSB0eXBlIHN5c3RlbS4gIFRoZSAtdCBvcHRpb24gdG8KK21rZTJmcyB3YXMgYSBkZXByZWNhdGVkIGFsaWFzIHRvIC1jOyBpdCBub3cgc3BlY2lmaWVzIGEgZmlsZXN5c3RlbQordHlwZSAoZXh0MiwgZXh0MywgZXh0NCwgZXRjLiksIHdoaWxlIHRoZSAtVCBvcHRpb24gY2FuIG5vdyBiZSBhIGNvbW1hCitzZXBhcmF0ZWQgdXNhZ2UgbGlzdC4gIFRoZSBmaWxlc3lzdGVtIHR5cGUgaW5mb3JtYXRpb24gYW5kIHR5cGUKK2luZm9ybWF0aW9uIGlzIHVzZWQgdG8gZXh0cmFjdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgZnJvbSB0aGUKKy9ldGMvbWtlMmZzLmNvbmYgZmlsZS4KKworVGhlIG1rZTJmcyBwcm9ncmFtIHdpbGwgbm8gbG9uZ2VyIGNvbXBsYWluIGFuZCByZXF1ZXN0IHRoZSAtZiBvcHRpb24KK3doZW4gdGhlIHVzZXIgdHJpZXMgdG8gY3JlYXRlIGEgZmlsZXN5c3RlbSB3aXRoIGdyZWF0ZXIgdGhhbiAyKiozMQorYmxvY2tzLgorCitXaGVuIGNyZWF0aW5nIGEgZmlsZXN5c3RlbSBmb3IgdGhlIEdOVSBIdXJkIHVzZSBhIGZzLXR5cGUgb2YgSHVyZCBhbmQKK2FkanVzdCB0aGUgbWtlMmZzLmNvbmYgZmlsZSBzbyBmaWxlc3lzdGVtcyBmb3IgdGhlIEh1cmQgYXJlIGNyZWF0ZWQKK3dpdGggYSBibG9ja3NpemUgb2YgNDA5NiBhbmQgaW5vZGUgc2l6ZSBvZiAxMjgsIHdoaWNoIGlzIGFsbCBpdCBrbm93cworaG93IHRvIGhhbmRsZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ3MTk3NykKKyAgICAKK01rZTJmcyB3aWxsIGFsd2F5cyBtYWtlIHN1cmUgdGhhdCBsb3N0K2ZvdW5kIGFsd2F5cyBoYXMgYXQgbGVhc3QgMgorYmxvY2tzLCBldmVuIGZvciBmaWxlc3lzdGVtcyB3aXRoIHZlcnkgbGFyZ2UgYmxvY2tzaXplcyAoaS5lLiwgNjRrYikuCisKK1Jlc2l6ZTJmcyB3aWxsIG5vdyBwcmludCB0aGUgbWluaW11bSBuZWVkZWQgZmlsZXN5c3RlbSBzaXplIGlmIGdpdmVuCit0aGUgLVAgb3B0aW9uLCBhbmQgd2lsbCByZXNpemUgdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlCitzaXplIGlmIGdpdmVuIHRoZSAtTSBvcHRpb24uCisKK0ZpeCByZXNpemUyZnMgdG8gY2xlYW4gdXAgdGhlIHJlc2l6ZV9pbm9kZSBpZiBhbGwgb2YgdGhlIHJlc2VydmVkIGdkdAorYmxvY2tzIGFyZSBjb25zdW1lZCBkdXJpbmcgYW4gb2ZmLWxpbmUgcmVzaXplLgorCitUaGUgImxzIiBjb21tYW5kIGluIGRlYnVnZnMgbm93IHN1cHBvcnRzIHRoZSAtcCBvcHRpb24sIHdoaWNoIGNhdXNlcworaXQgdG8gcXVvdGUgdGhlIGZpbGVuYW1lcyBzbyB0aGF0IHNwYWNlcyBvciB0YWJzIGluIGRpcmVjdG9yeSBlbnRyaWVzCithcmUgZWFzaWx5IHZpc2libGUuICAoQWRkcmVzc2VzIFJlZCBIYXQgQnVnemlsbGE6ICMxNDk0ODA7IEFkZHJlc3NlcworU291cmNlZm9yZ2UgRmVhdHVyZSBSZXF1ZXN0OiAjMTIwMTY2NykKKworRml4IGEgcG90ZW50aWFsIG9mZi1ieS1vbmUgYnVmZmVyIG92ZWZsb3cgaW4gdGhlIGZzX2RldmljZV9uYW1lIGluIGFuCitlMmltYWdlIGZpbGUuCisKK1RoZSBjaGF0dHIgcHJvZ3JhbSB3aWxsIHJldHVybiBhIG5vbi16ZXJvIGV4aXQgY29kZSBpbiBjYXNlIG9mCitmYWlsdXJlcywgYW5kIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBzdXBwcmVzc2VkIHdpdGggdGhlIC1mIG9wdGlvbi4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzE4MDU5NikKKworRml4IGEgYnVnIGluIGJhZGJsb2NrcyB3aGljaCBjYXVzZWQgaXQgdG8gb3ZlcnJ1biBhbiBhcnJheSBhbmQgbGlrZWx5CitjcmFzaCBpZiBtb3JlIHRoYW4gOCB0ZXN0IHBhdHRlcm5zIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIC10IG9wdGlvbi4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ4NzI5OCkKKyAgICAKK0FkZCBzdXBwb3J0IHRvIGJhZGJsb2NrcyB0byBsaW1pdCBob3cgcXVpY2tseSBpdCByZWFkcyBmcm9tIHRoZSBkaXNrCitkcml2ZSAoc28gaXQgY2FuIGJlIHVzZWQgZm9yIGJhY2tncm91bmQgc2NydWJiaW5nKSwgYW5kIHNvIGl0IHdpbGwKK2Fib3J0IGFmdGVyIGZpbmRpbmcgYSBnaXZlbiBudW1iZXIgb2YgZXJyb3JzLgorCitSZW1vdmUgc3VwcG9ydCBmb3IgdGhlIGxlZ2FjeSBiaWctZW5kaWFuIGZpbGVzeXN0ZW0gZm9ybWF0IHdoaWNoIG9ubHkKK2V4aXN0ZWQgb24gZXh0cmVtZWx5IGxvbmctZGVhZCBQb3dlclBDIGtlcm5lbHMgYWxtb3N0IGEgZGVjYWRlIGFnby4KKworUmVtb3ZlIE1BU0lYIHN1cHBvcnQgZnJvbSBlMmZzcHJvZ3MuCisKK0FkZCBJL08gc3RhdGlzdGljcyByZXBvcnRpbmcgdG8gZTJmc2NrLgorCitVcGRhdGUgVmlldG5hbWVzZSwgUG9saXNoLCBGcmVuY2gsIFNwYW5pc2gsIEdlcm1hbiwgQ2F0YWxhbiwgRHV0Y2gsCitDemVjaCB0cmFuc2xhdGlvbnMuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM0ODc0NDMsICM0ODc2NzUsICM0OTAwMDMpCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzM5MzMxMywgIzQ4Nzg0OSwgIzQ0MDk4MywgIzQ0MDk4MSkKKworUHJvZ3JhbW1lcidzIE5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRmFjdG9yIG91dCBiaXRtYXAgY29kZSBpbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIDY0LWJpdCBuZXctc3R5bGUKK2JpdG1hcHMuCisKK0ZpeCBnY2MgLVdhbGwgd2FybmluZ3MKKworRml4IHRoZSBwa2ctY29uZmlnIGZpbGVzIHNvIHRoYXQgcHJpdmF0ZSBsaWJyYXJlcyBhcmUgc3BlY2lmaWVkIGluCisiTGlicy5wcml2YXRlOiIuCisKK0ZpeCB0aGUgbGliZXh0MmZzLnRleGluZm8gbWFudWFsIHNvIGl0IGJ1aWxkcyB3aXRoIG1vZGVybiB2ZXJzaW9ucyBvZgordGV4aW5mby4KKworU2lsZW5jZSB0aGUgbWFrZWZpbGUgZnJvbSBzaG93aW5nIHRoZSBhd2sgY29tbWFuZCB1c2VkIHRvIGJ1aWxkIHRoZQorCitDbGVhbiB1cCB0aGUgYmFkYmxvY2tzIGdyb3VwIHNvIHRvIG1ha2UgaXQgbW9yZSBwb3J0YWJsZSBhbmQgcm9idXN0LgorCitBdm9pZCB1c2luZyBwcmVkaWN0YWJsZSBmaWxlbmFtZXMgaW4gL3RtcCBpbiBibGtpZCdzIHJlZ3Jlc3Npb24gdGVzdAorc3VpdGUuICBBbHNvIHJlbW92ZSBiYXNoaXNtJ3MgaW4gdGhlIHJlZ3Jlc3Npb24gdGVzdCBzY3JpcHQuCisKK0lmIHRoZSBjb25maWd1cmUgc2NyaXB0IGlzIGdpdmVuIC0td2l0aC1kaWV0LWxpYmMsIGRvbid0IHVzZSB0aHJlYWQKK2xvY2FsIHN0b3JhZ2UsIHNpbmNlIGRpZXQgbGliYyBkb2Vzbid0IHN1cHBvcnQgVExTLiAgKEFkZHJlc3NlcworU291cmNlZm9yZ2UgQnVnOiAjMjAwMDY1NCkKKyAgICAKK0ZpeCB0aGUgYmxraWQgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIHRvIHRvbGVyYXRlIG9sZGVyIHZlcnNpb25zIG9mCitta3N3YXAgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSAtVSBvcHRpb24uCisKK0EgZmV3IGxpYnJhcnkgcm91dGluZXMgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBzdXBwb3J0IDY0LWJpdCBibG9jaworbnVtYmVyczsgaW4gcGFydGljdWxhciwgdGhlIEkvTyBtYW5hZ2VyIGZ1bmN0aW9ucywgdGhlIHRlc3RfaW8sCitpbm9kZV9pbywgYW5kIHVuaXhfaW8gbWFuYWdlcnMgaGF2ZSBhbGwgYmUgY29udmVydGVkIHRvIHN1cHBvcnQgNjQtYml0CitvcGVyYXRpb24uCisKK0RlYnVnZnMgY2FuIG5vdyBiZSBleHRlbmRlZCBmb3IgdXNlIGJ5IHRlc3QgcHJvZ3JhbXMuICBTZWUKK2xpYi9leHQyZnMvZXh0ZW50cy5jIGZvciBhbiBleGFtcGxlIGZvciBob3cgaXQgY2FuIGJlIHVzZWQuICBUaGUgdGVzdAorcHJvZ3JhbSBsaW5rcyBhZ2FpbnN0IHRoZSBkZWJ1Z2ZzIG9iamVjdCBmaWxlcywgYW5kIHByb3ZpZGVzCithZGRpdGlvbmFsIGNvbW1hbmRzIGJ5IGRlZmluaW5nIGFuIGF1eGlsaWFyeSBsaWJzcyBjb21tYW5kIHRhYmxlLgorCitUaGUgbGF6eV9iZyBmaWxlc3lzdGVtIGZlYXR1cmUsIHdoaWNoIHdhcyBvbmx5IHVzZWQgYnkgZGV2ZWxvcGVyJ3MKK3Rlc3RpbmcsIGhhcyBiZWVuIHJlbW92ZWQgc2luY2UgaXQgaGFzIGJlZW4gbGFyZ2VseSBzdXBwbGFudGVkIGJ5Cit1bmluaXRfYmcuICBUaGlzIGFsc28gc2ltcGxpZmllcyB0aGUgY29kZS4KKworCitFMmZzcHJvZ3MgMS40MC4xMSAoSnVuZSAxNywgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNa2UyZnMsIHR1bmUyZnMsIGFuZCByZXNpemUyZnMgbm93IHVzZSBmbG9hdGluZyBwb2ludCB0byBjYWxjdWxhdGUgdGhlCitwZXJjZW50YWdlIG9mIHJlc2VydmVkIGJsb2Nrcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ1MjYzOSkKKworVXBkYXRlZCBTcGFuaXNoIGFuZCBDYXRhbGFuIHRyYW5zbGF0aW9ucy4KKworRml4ZWQgdmFyaW91cyBEZWJpYW4gcGFja2FnaW5nIGlzc3VlcyAtLS0gc2VlIGRlYmlhbi9jaGFuZ2Vsb2cgZm9yCitkZXRhaWxzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnczogIzQ4Mzk2MiwgIzQ4MzAyMykKKworQWRkIGRldGVjdGlvbiBmb3IgWkZTIHZvbHVtZXMgdG8gdGhlIGxpYmJsa2lkIGxpYnJhcnkuCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDg2NDYzKQorCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeCBtYXJnaW5hbCBDIGNvZGUgaW4gcHJvYmVfbHZtMigpIGZ1bmN0aW9uIHRvIHRoZSBibGtpZCBsaWJyYXJ5IG1vcmUKK3BvcnRhYmxlIGZvciBvbGRlciBjb21waWxlcnMuCisKK0ZpeCBidWlsZCBwcm9ibGVtcyBvbiBNYWNPUyBYLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMxOTcyNDczKQorCitGaXggZXh0MmZzX3N3YXB7MTYsMzIsNjR9IGZ1bmN0aW9ucyBzbyB0aGV5IGNhbiBiZSB1c2VkIGJ5IGV4dGVybmFsCithcHBsaWNhdGlvbnMgb24gYmlnLWVuZGlhbiBtYWNoaW5lcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ4NDg3OSkKKyAgICAKKworRTJmc3Byb2dzIDEuNDAuMTAgKE1heSAyMSwgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gcmV2YWxpZGF0ZSBhIGJsa2lkIGNhY2hlIGVudHJ5LCBpZiB0aGUKK2RldmljZSdzIG10aW1lIGlzIG5ld2VyIHRoYW4gdGhlIGxhc3QgdGltZSB0aGUgY2FjaGVkIGVudHJ5IHdhcwordmFsaWRhdGVkLCBmb3JjZSBhIHJldmFsaWRhdGlvbi4KKworRml4IGEgcG90ZW50aWFsIGRhdGEgY29ycnVwdGlvbiBidWcgaW4gZTJmc2NrIGluIHRoZSBqb3VybmFsIHJlcGxheS4KK1RoZSBjaGFuY2VzIG9mIHRoaXMgaXMgaGFwcGVuaW5nIGlzIGV4dHJlbWVseSByZW1vdGUsIGVzcGVjaWFsbHkgdGhlCitkZWZhdWx0IGRhdGE9b3JkZXJlZCBvciBkYXRhPXdyaXRlYmFjayBtb2Rlcy4gIEhvd2V2ZXIsIGlmIGEgYmxvY2sKK3doaWNoIGhhcyBiZWVuIGpvdXJuYWxsZWQgc3RhcnRzIHdpdGggdGhlIGZpcnN0IGZvdXIgYnl0ZXMgMHhjMDNiMzk5OCwKK3doZW4gZTJmc2NrIHJlcGxheXMgdGhlIGpvdXJuYWwsIHRob3NlIGZvdXIgYnl0ZXMgd2lsbCBiZSByZXBsYWNlZAord2l0aCB6ZXJvJ3MuICBGb3J0dW5hdGVseSwgaXQgaXMgaGlnaGx5LCBoaWdobHkgdW5saWtlbHkgZm9yIGUyZnNjaworbWV0YWRhdGEgdG8gYmVnaW4gd2l0aCB0aG9zZSBmYXRhbCA0IGJ5dGUgc2VxdWVuY2UsIGFuZCB1bmxlc3MKK2RhdGE9b3JkZXJlZCBtb2RlIGlzIGluIHVzZSwgZGF0YSBibG9ja3MgYXJlIG5ldmVyIGpvdXJuYWxlZC4KKworVXBkYXRlZCBHZXJtYW4sIER1dGNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLgorCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4KKworUmVtb3ZlIGRlZmF1bHQgc2l6ZXMgb2YgdHlwZXMgd2hlbiBjcm9zcyBjb21waWxpbmcsIHNpbmNlIGF1dG9jb25mCisyLjUwIGNhbiBmaWd1cmUgdGhpcyBvdXQgYXV0b21hdGljYWxseSBub3cuCisKKworRTJmc3Byb2dzIDEuNDAuOSAoQXByaWwgMjcsIDIwMDgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU3VTRSdzIHNlY3VyaXR5IHRlYW0gYXVkaXRlZCB1dWlkZCBhbmQgY2FtZSB1cCB3aXRoIGEgZmV3IG1pbm9yCitpc3N1ZXMuICBOb25lIG9mIHRoZW0gYXJlIHNlcmlvdXMgZ2l2ZW4gdGhhdCB1dWlkZCBydW5zIHNldHVpZCBhcyBhCit1bnByaXZpbGVnZWQgdXNlciB3aGljaCBoYXMgbm8gc3BlY2lhbCBhY2Nlc3Mgb3RoZXIgdGhhbiBsaWJ1dWlkCitkaXJlY3RvcnksIGJ1dCBpdCdzIGdvb2QgdG8gZ2V0IHRoZW0gZml4ZWQuCisKK09uZSBhZGRpdGlvbmFsIGZpeCBpbiBleHQyZnNfc3dhcF9pbm9kZV9mdWxsKCkgbmVlZGVkIGZvciByZXNpemUyZnMgdG8KK3dvcmsgY29ycmVjdGx5IHdpdGggaW4taW5vZGUgZXh0ZW5kZWQgYXR0cmlidXRlcy4KKworVXBkYXRlZCBHZXJtYW4sIEN6ZWNoLCBEdXRjaCwgRnJlbmNoLCBQb2xpc2gsIFN3ZWVkaXNoLCBhbmQgVmlldG5hbWVzZQordHJhbnNsYXRpb25zLgorCitEZWJ1Z2ZzIHdpbGwgYXZvaWQgdXNpbmcgYSBwYWdlciBpZiB0aGUgc3RhbmRhcmQgb3V0cHV0IGlzIG5vdCBhIHR0eS4KKworRml4IGRlYnVnZnMgYW5kIHR1bmUyZnMgdG8gY29ycmVjdGx5IGhhbmRsZSBkYXlsaWdodCBzYXZpbmdzIHRpbWUgd2hlbgorcGFyc2luZyBhIHRpbWUgc3RyaW5nLgorCitGaXhlZCBzcGVsbGluZyBtaXN0YWtlcywgdHlwb3MsIGFuZCBvdGhlcndpc2UgY2xhcmlmaWVkIG1hbiBwYWdlcy4KKworRml4IGZzY2sgY29tcGxldGlvbiBiYXJzIHdoZW4gbXVsdGlwbGUgZmlsZXN5c3RlbXMgd2VyZSBiZWluZyBjaGVja2VkCitpbiBwYXJhbGxlbC4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQzMjg2NSwgQWRkcmVzc2VzIExhdW5jaHBhZCBCdWc6CisjMjAzMzIzLCBBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTkyNjAyMykKKworRml4IGZzY2sgc28gdGhhdCBwcm9ncmVzcyBpbmZvcm1hdGlvbiBpcyBzZW50IGJhY2sgY29ycmVjdGx5IHdoZW4KK211bHRpcGxlIGZpbGVzeXN0ZW1zIGFyZSBiZWluZyBjaGVjayBhbmQgdGhlIG91dHB1dCBvZiBmc2NrIGlzIGJlaW5nCityZWRpcmVjdGVkIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiAgQWxzbywgaW5jbHVkZSB0aGUgZGV2aWNlIG5hbWUgKHcvbworc3BhY2VzKSBpbiB0aGUgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gc2VudCBiYWNrIHZpYSBhIGZpbGUgZGVzY3JpcHRvci4KKyhBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZzogIzIwMzMyMywgQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzoKKyMxOTI2MDIzKQorCitUZWFjaCBmc2NrIHRvIHRyZWF0ICJleHQ0IiBhbmQgImV4dDRkZXYiIGFzIGV4dCogZmlsZXN5c3RlbXMuCisKK0lmIGxvZ3NhdmUgcmVjZWl2ZXMgYSBTSUdURVJNIG9yIFNJR0lOVCBzaWduYWwsIGl0IHdpbGwgbm93IHBhc3MgdGhhdAorc2lnbmFsIHRvIGl0cyBjaGlsZCBwcm9jZXNzLgorCitGaXggbWtlMmZzJ3MgY3JlYXRpb24gb2YgYXJlIHJlc2l6ZSBpbm9kZSB3aGVuIHRoZXJlIGlzIGEgbm9uLXN0YW5kYXJkCitzX2ZpcnN0X2RhdGFfYmxvY2sgc2V0dGluZy4KKworRml4IGJ1ZyBpbiBibGtpZCB3aGVuIHJ1biBieSBhbiB1bnByaXZpbGVnZWQgdXNlcjsgbW9zdCBkZXZpY2VzIHdlcmUKK25vdCByZXBvcnRlZCBjb3JyZWN0bHkuICA5QWRkcmVzc2VzIExhdW5jaHBhZCBCdWc6ICMyMjAyNzUpCisKK01rZTJmcyB3aWxsIG5vdCBhbGxvdyB0aGUgbG9naWNhbGx5IGluY29yZWN0IGNvbWJpbmF0aW9uIG9mCityZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcsIHdoaWNoIGhhZCBwcmV2aW91c2x5IGNhdXNlZCBta2UyZnMgdG8gY3JlYXRlCithIGNvcnJ1cHQgZmlsZXlzdGVtLgorCitGaXggZnNjayBpbiBHZXJtYW4gbG9jYWxlcyBzbyB0aGF0IGEgJ2onIG1lYW5zIHllcy4KKyhBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTk0NzY4MykKKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4KKworVXBkYXRlIHZhbGdyaW5kIG9wdGlvbnMgaW4gdGVzdF9zY3JpcHQgdG8gd29yayB3aXRoIHZhbGdyaW5kIDMuMi4zCisKK1VwZGF0ZSB0ZXhpbmZvLnRleCB0byBhIG11Y2ggbmV3ZXIgdmVyc2lvbiBmcm9tIHRoZSBGU0YuCisKK1JlbW92ZSBiYXNoaXNtIGZvciBjb25maWd1cmUgc2NyaXB0IGFuZCBmcm9tIHRoZSBsaWIvc3MgTWFrZWZpbGUuCitBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAxOTIxOTY5CisKK0ZpeCBzb21lIHNpbGVudGx5IGJyb2tlbiB0ZXN0czogbV9ub19vcHQsIG1fbWV0YV9iZywgYW5kIG1fcmFpZF9vcHQuCisKK0ZpeCBidWlsZCBzeXN0ZW0gc28gdGhhdCBpZiB0ZXhpbmZvIGlzIG5vdCBpbnN0YWxsZWQsIGl0IHdvbid0IHByaW50IGEKKyhoYXJtbGVzcykgZXJyb3IgbWVzc2FnZS4KKworCitFMmZzcHJvZ3MgMS40MC44IChNYXJjaCAxMywgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBlMmltYWdlIC1JIHNvIGl0IHdvcmtzIG9uIGltYWdlIGZpbGVzIHdoaWNoIGFyZSBsYXJnZXIgdGhhbiAyR0IuCisKK0ZpeGVkIGUyZnNjaydzIGhhbmRsaW5nIG9mIGRpcmVjdG9yeSBpbm9kZXMgd2l0aCBhIGNvcnJ1cHQgc2l6ZSBmaWVsZC4gIElmCit0aGUgc2l6ZSBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBmb3VuZCBpbiB0aGUgaW5vZGUsIGRvbid0Cit0cnkgdG8gYWxsb2NhdGUgZXh0cmEgZW1wdHkgYmxvY2tzIGF0IHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeSB0byBtYWtlCit1cCB0aGUgZGlmZmVyZW5jZTsgdGhlcmUncyBubyBwb2ludCB0byBkb2luZyB0aGF0LiAgSW4gYWRkaXRpb24sIGlmCit0aGUgc2l6ZSBpcyBub3QgYSBtdWx0aXBsZSBvZiBhIGJsb2Nrc2l6ZSwgYWx3YXlzIGZpeCBpdC4KKworRTJmc2NrIGhhbmRsZWQgYSBwYXNzIDIgInNob3VsZCBuZXZlciBoYXBwZW4gZXJyb3IiIGJ5IG5vdCBnaXZpbmcKK2Vub3VnaCBpbmZvcm1hdGlvbiBhbmQgdGhlbiBjb3JlIGR1bXBpbmcuICBVbmZvcnR1bmF0ZWx5LCBpdCB3YXMgYWxsCit0b28gZWFzeSB0byB0cmlnZ2VyIHRoZSAic2hvdWxkIG5ldmVyIGhhcHBlbiIgc2l0dWF0aW9uIGlmIGEKK2RpcmVjdG9yeSdzIGlub2RlIHNpemUgd2FzIG5vdCBjb3JyZWN0LiAgVGhpcyBoYXMgYmVlbiBmaXhlZCwgYnV0CitlMmZzY2sgaGFzIGFsc28gYmVlbiB0YXVnaHQgaG93IHRvIGhhbmRsZSB0aGlzIHNpdHVhdGlvbiBtb3JlCitncmFjZWZ1bGx5LCBieSBzaW1wbHkgcmVtb3ZpbmcgdGhlIGlub2RlIGhhc2ggdHJlZSBpbmZvcm1hdGlvbiwgc28KK3RoYXQgaXQgY2FuIGJlIHJlYnVpbHQgYWdhaW4gYWZ0ZXIgZTJmc2NrJ3MgcGFzcyAzLiAgKEFkZHJlc3NlcworTGF1bmNocGFkIEJ1ZzogIzEyOTM5NSkKKworUmVzaXplMmZzIGhhZCBhIGJ1ZyByZXNpemluZyBsYXJnZSBpbm9kZXMgd2l0aCBleHRlbmRlZCBhdHRyaWJ1dGVzCit0aGF0IHdhcyBmaXhlZCBpbiAxLjQwLjY7IHVuZm9ydHVuYXRlbHksIGl0IHR1cm5lZCBvdXQgaXQgd2Fzbid0IGZpeGVkCitjb21wbGV0ZWx5IG9uIGJpZy1lbmRpYW4gc3lzdGVtcyBzdWNoIGFzIFBvd2VyUEMuICBUaGUgYnVnIHNob3VsZCBiZQorY29tcGxldGVseSBmaXhlZCBub3cuICBZYXkgZm9yIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZXMuICAoQWRkcmVzc2VzIFJlZAorSGF0IEJ1Z3ppbGxhOiAjNDM0ODkzKQorICAgIAorVXBkYXRlZCBHZXJtYW4sIEN6ZWNoLCBEdXRjaCwgUG9saXNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UKK3RyYW5zbGF0aW9ucy4gIE1hbnkgdGhhbmtzIHRvIFBoaWxpcHAgVGhvbWFzIGZyb20gTm92ZWxsIGZvciBzdGVwcGluZwordXAgdG8gYmVjb21lIHRoZSBuZXcgR2VybWFuIHRyYW5zbGF0aW9uIG1haW50YWluZXIhICAoQWRkcmVzc2VzIERlYmlhbgorQnVnczogIzMwMjUxMiwgIzM3MDI0NywgIzQwMTA5MiwgIzQxMjg4MikuCisKK1doZW4gZTJmc2NrIGlzIGNsZWFyaW5nIGEgY29ycnVwdCBpbm9kZSdzIEhUUkVFIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwKK21ha2UgaXQgY2xlYXIgdGhhdCBpdCBpcyBqdXN0IGNsZWFyaW5nIHRoZSBIVFJFRSBpbmZvcm1hdGlvbiwgbm90IHRoZQorZW50aXJlIGlub2RlLgorCitGaXhlZCBzcGVsbGluZyBtaXN0YWtlcywgdHlwb3MsIGFuZCBvdGhlcndpc2UgY2xhcmlmaWVkIG1hbiBwYWdlcy4gIAorCitQcm9ncmFtbWVyJ3Mgbm90ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitBZGQgbmV3IGZ1bmN0aW9ucywgZXh0MmZzX2RibGlzdF9nZXRfbGFzdCgpIGFuZAorZXh0MmZzX2RibGlzdF9kcm9wX2xhc3QoKSwgd2hpY2ggYWxsb3dzIHRoZSBjYWxsZXIgdG8gZXhhbWluZSB0aGUgbGFzdAorZGlyZWN0b3J5IGJsb2NrIGVudHJ5IGFkZGVkIHRvIHRoZSBsaXN0LCBhbmQgdG8gZHJvcCBpZiBpdCBuZWNlc3NhcnkuCisKK0ZpeGVkIGEgcG9ydGFiaWxpdHkgcHJvYmxlbSBpbiBsaWJibGtpZCB3aXRoIERKR1BQLgorCitGaXggYW4gb2J2aW91cyB0eXBvIGluIGFuICJpbnRlcm5hbCBlcnJvciIgbWVzc2FnZSBpbiBlMmZzY2suICBUaGFua3MKK3RvIFBoaWxpcHAgVGhvbWFzIGZvciBwb2ludGluZyB0aGlzIG91dC4KKworSWYgdGhlIGluZm8gZmlsZXMgYXJlIG5vdCBidWlsdCwgY2hhbmdlICJtYWtlIGluc3RhbGwiIHNvIGl0IGRvZXNuJ3QKK2ZhaWwgd2l0aCBhbiBlcnJvciBjb2RlLgorCisKK0UyZnNwcm9ncyAxLjQwLjcgKEZlYnJ1YXJ5IDI4LCAyMDA4KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbW92ZSBzdXBwb3J0IGZvciBjbGVhcmluZyB0aGUgU1BBUlNFX1NVUEVSIGZlYXR1cmUgZnJvbSB0dW5lMmZzLCBhbmQKK2RlcHJlY2lhdGUgdGhlIC1zIG9wdGlvbiwgc2luY2UgaXQgY2FuIHJlc3VsdCBpbiBmaWxlc3lzdGVtcyB3aGljaAorZTJmc2NrIGNhbid0IGZpeCBlYXNpbHkuICBUaGVyZSBhcmUgdmVyeSBnb29kIHJlYXNvbnMgZm9yIHdhbnRpbmcgdG8KK2Rpc2FibGUgc3BhcnNlX3N1cGVyOyB1c2VycyB3aG8gd2FudHMgdG8gdHVybiBvZmYgc3BhcnNlX3N1cGVyIGNhbiB1c2UKK2RlYnVnZnMuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4NDAyODYpCisgICAgCitBZGQgbWlzc2luZyBvcHRpb25zIHRvIG1rZTJmcydzIHVzYWdlIG1lc3NhZ2UuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlCitCdWc6ICMxNzUxMzkzKQorICAgIAorRml4IGJ1ZyBpbiByZXNpemUyZnMgd2hlbiBsYXJnZSAoZ3JlYXRlciB0aGFuIDEyOCBieXRlKSBpbm9kZXMgYXJlCittb3ZlZCB3aGVuIGEgZmlsZXN5c3RlbSBpcyBzaHJ1bms7IGl0IHdhcyBvbmx5IG1vdmluZyB0aGUgZmlyc3QgMTI4CitieXRlcywgc28gZXh0ZW5kZWQgYXR0cmlidXRlcyB3ZXJlIG5vdCBnZXR0aW5nIG1vdmVkLiAgKEFkZHJlc3NlcyBSZWQKK0hhdCBCdWd6aWxsYTogIzQzNDg5MykKKworRTJmc2NrIG5vdyBwcmludHMgYW4gZXhwbGljaXQgbWVzc2FnZSB3aGVuIHRoZSBiYWQgYmxvY2sgaW5vZGUgaXMKK3VwZGF0ZWQsIHRvIGF2b2lkIGNvbmZ1c2lvbiBhYm91dCB3aHkgdGhlIGZpbGVzeXN0ZW0gd2FzIG1vZGlmaWVkLgorKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICM3NTY0NjApCisgICAgCitBbGxvdyBta2UyZnMgYW5kIHR1bmUyZnMgbWFuaXB1bGF0ZSB0aGUgbGFyZ2VfZmlsZSBmZWF0dXJlLgorUHJldmlvdXNseSB3ZSBqdXN0IGxldCB0aGUga2VybmVsIGFuZCBlMmZzY2sgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LAorYnV0IGUyZnNjayB3aWxsIG5vIGxvbmdlciBhdXRvbWF0aWNhbGx5IGNsZWFyIHRoZSBsYXJnZV9maWxlIGZlYXR1cmUuCitJdCBzdGlsbCBpc24ndCByZWFsbHkgbmVjZXNzYXJ5IHRvIHdvcnJ5IGFib3V0IHRoaXMgZmVhdHVyZSBmbGFnCitleHBsaWNpdGx5LCBidXQgc29tZSB1c2VycyBzZWVtIHRvIGNhcmUuICAoQWRkcmVzc2VzIFJlZCBIYXQgQnVnemlsbGE6CisjMjU4MzgxKQorICAgIAorU3VwcHJlc3MgbWVzc2FnZSBhYm91dCBhbiBvbGQtc3R5bGUgZnN0YWIgaWYgdGhlIGZzdGFiIGZpbGUgaXMgZW1wdHkuCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0NjgxNzYpCisgICAgCitGaXggKHJlYWxseSBtaW5vcikgYnVnIGluIGRlYnVnZnMncyBmaW5kX2ZyZWVfYmxvY2sgc28gaXQgYXZvaWRzCityZXBvcnRpbmcgYSBmcmVlIGJsb2NrIG1vcmUgdGhhbiBvbmNlIGlmIHRoZXJlIGFyZSB0b28gZmV3IGZyZWUgYmxvY2tzCitpbiB0aGUgZmlsZXN5c3RlbS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTA5NjMxNSkKKyAgICAKK0NoYW5nZSBlMmZzY2sgdG8gbm8gbG9uZ2VyIGNsZWFyIHRoZSBMQVJHRV9GSUxFUyBmZWF0dXJlIGZsYWcKK2F1dG9tYXRpY2FsbHksIHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgPiAyR0IgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0uCitJdCdzIGJlZW4gYWxtb3N0IGEgZGVjYWRlIHNpbmNlIHRoZXJlIGhhdmUgYmVlbiBrZXJuZWxzIHRoYXQgZG9uJ3QKK3N1cHBvcnQgdGhpcyBmbGFnLCBhbmQgZTJmc2NrIGNsZWFycyBpdCBxdWlldGx5IHdpdGhvdXQgdGVsbGluZyB0aGUKK3VzZXIgd2h5IHRoZSBmaWxlc3lzdGVtIGhhcyBiZWVuIGNoYW5nZWQuCisgICAgCitGaXggYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGxpYmJsa2lkIHRvIHNlZyBmYXVsdCBpZiBhIGRldmljZSBtYXBwZXIKK3ZvbHVtZSBkaXNhcHBlYXJzIHdoaWxlIGl0IGlzIGJlaW5nIHByb2JlZC4gIChBZGRyZXNzZXMgUmVkSGF0CitCdWd6aWxsYTogIzQzMzg1NykKKyAgICAKK0luaGFuY2UgZTJmc2NrJ3MgcmVwb3J0aW5nIG9mIHVuc3VwcG9ydGVkIGZpbGVzeXN0ZW0gZmVhdHVyZSBmbGFncy4KKyhBZGRyZXNzZXMgU291cmNlZm9yZ2UgRmVhdHVyZSBSZXF1ZXN0OiAjMTE3NTgwOCkKKyAgICAKK0ZpeCBvcHRpb24gc3ludGF4IGluIGR1bXBlMmZzIGZvciBleHBsaWNpdCBzdXBlcmJsb2NrIGFuZCBibG9ja3NpemUKK3BhcmFtZXRlcnMuICBXaGF0IHdhcyBjdXJyZW50bHkgZG9jdW1lbnRlZCBpbiB0aGUgbWFuIHBhZ2UgaGFzIGJlZW4KK2Jyb2tlbiBmb3Igc29tZSB0aW1lLCBkdWUgdG8gZ2V0b3B0KCkgaW1wbGVtZW50YXRpb24gY2hhbmdlcy4gIFRoZQorb3B0aW9uIHN5dGF4IGhhcyBiZWVuIGNoYW5nZWQgdG8gb25lIHdoaWNoIGlzIGNhbiBiZSBtb3JlIHBvcnRhYmxlCitzdXBwb3J0ZWQgYW5kIHdoaWNoIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgZm9ybWF0IGZvciBleHRlbmRlZCBvcHRpb25zCitpbiBta2UyZnMgYW5kIHR1bmUyZnMuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4MzA5OTQpCisgICAgCitBZGQgc3VwcG9ydCB0byB0dW5lMmZzIHRvIGNsZWFyIHRoZSByZXNpemVfaW5vZGUgZmVhdHVyZS4gIFRoaXMKK3JlcXVpcmVzIGFuIGZzY2sgYWZ0ZXJ3YXJkcy4gIChBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYTogIzE2NzgxNikKKworVGVhY2ggYmxraWQgdG8gZGV0ZWN0IExWTTIgcGh5c2ljYWwgdm9sdW1lcy4gIChBZGRyZXNzZXMgUmVkIEhhdAorQnVnemlsbGE6ICM0MDkzMjEpCisKK0FkZCBzdXBwb3J0IGZvciBzZXR0aW5nIFJBSUQgc3RyaWRlIGFuZCBzdHJpcGUtd2lkdGggdmlhIG1rZTJmcyBhbmQKK3R1bmUyZnMuICBUZWFjaCBkdW1wZTJmcyB0byBwcmludCB0aGUgUkFJRCBwYXJhbWV0ZXJzLgorCitBZGQgc3VwcG9ydCBmb3Igc2V0dGluZyBuZXcgc3VwZXJibG9jayBmaWVsZHMgdG8gZGVidWdmcydzCitzZXRfc3VwZXJfdmFsdWUuCisKK0FkZCBzdXBwb3J0IGZvciBwcmludGluZyAibW9zdGx5LXByaW50YWJsZSIgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbgorRGVidWdmcy4KKworQWRkIHN1cHBvcnQgZm9yIHRoZSAtTSBvcHRpb24gdG8gZnNjaywgd2hpY2ggY2F1c2VzIGl0IHRvIGlnbm9yZQorbW91bnRlZCBmaWxlc3lzdGVtLgorCitGaXggdXVpZGQgc28gdGhhdCBpdCBjcmVhdGVzIHRoZSBwaWQgZmlsZSB3aXRoIHRoZSBjb3JyZWN0IHBpZCBudW1iZXIuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4OTMyNDQpCisKK0ZpeCB2YXJpb3VzIGdjYyAtV2FsbCB3YXJuaW5ncy4KKworVXBkYXRlIEN6ZWNoLCBEdXRjaCwgUG9saXNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLiAgCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIFBhdGNoOiAjMTM5OTMyNSkKKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQ2NjkyOSkKKworQWRkIG5ldyBmbGFnIEVYVDJfRkxBR19OT05GUkVFX09OX0VSUk9SIGV4dDJmc19vcGVuMigpIHdoaWNoIHJldHVybnMgYQorcGFydGlhbGx5IGZpbGxlZC1pbiBmaWxlc3lzdGVtIG9iamVjdCBvbiBhbiBlcnJvciwgc28gdGhhdCBlMmZzY2sgY2FuCitwcmludCBtb3JlIGludGVsbGlnZW50IGVycm9yIG1lc3NhZ2VzLgorICAgIAorQWRkIGEgbmV3IGZ1bmN0aW9uIGUycF9lZGl0X2ZlYXR1cmUyKCkgd2hpY2ggYWxsb3dzIHRoZSBjYWxsZXIgdG8KK3NwZWNpZnkgd2hpY2ggZmVhdHVyZSBmbGFncyBhcmUgT0sgdG8gc2V0IG9yIGNsZWFyLCBhbmQgd2hpY2ggcmV0dXJucworbW9yZSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCBmZWF0dXJlIGZsYWdzIHdoaWNoIGFyZSBub3QgYWxsb3dlZCB0bworYmUgc2V0L2NsZWFyZWQuCisgICAgCitTZXQgdGhlIEMgbG9jYWxlIGluIHRoZSB0ZXN0X3NjcmlwdCBkcml2ZXIgc2luY2UgaXQgdXNlcyBbQS1aYS16XS4KKyhBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTg5MDUyNikKKworVXNlIGZjbnRsIGxvY2tpbmcgaW5zdGVhZCBvZiBsb2NrZiBpbiBsaWJ1dWlkIHNpbmNlIEN5Z3dpbiBkb2Vzbid0CitzdXBwb3J0IGxvY2tmKCkuCisKK0NoYW5nZSBjb25maWd1cmUuaW4gdG8gYXZvaWQgdXNpbmcgdGhlICdkYycgY29tbWFuZCB1bmxlc3MgaXQgaXMKK2Fic29sdXRlbHkgbmVlZGVkLiAoaS5lLiwgd2hlbiB1c2luZyBwYXJzaW5nIGEgV0lQLXN0eWxlIHZlcnNpb24KK251bWJlcikgIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTg5MzAyNCkKKworQWRkIHBvcnRhYmlsaXR5IGNoZWNrcyB0byBzdXBwb3J0IGNvbXBpbGF0aW9uIHVuZGVyIERKR1BQLgorCitVcGRhdGUgdG8gdGhlIGxhdGVzdCBzYW1iYSB0ZGIgY29kZSBiZWZvcmUgdGhlIExHUEx2MyBjaGFuZ2UsIHdoaWNoCitmaXhlcyBhIHJlYWxsb2MoKSBsZWFrIG9uIGZhaWx1cmUuCisKK0ZpeCBtZW1vcnkgbGVhayBpbiBleHQyZnNfYWxsb2NfYmxvY2soKS4KKworRml4IG1ha2VmaWxlIGRlcGVuZGVuY3kgaXNzdWVzIGZvciB2YXJpb3VzIGluc3RhbGwgdGFyZ2V0cy4KKyhBZGRyZXNzZXMtU291cmNlZm9yZ2UtUGF0Y2hlczogIzE5MDM0ODQsICMxOTAzNDY2LCAjMTkwMzQ1NikKKyAgICAKK0ltcHJvdmUgZGVzY3JpcHRpb25zIGZvciB0aGUgcl9tb3ZlX2l0YWJsZSBhbmQgcl9yZXNpemVfaW5vZGUgdGVzdHMuCisKKworRTJmc3Byb2dzIDEuNDAuNiAoRmVicnVhcnkgOSwgMjAwOCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZCBzdXBwb3J0IGZvciByZXR1cm5pbmcgbGFiZWxzIGZvciBVREYgZmlsZXN5c3RlbXMgaW4gdGhlIGJsa2lkCitsaWJyYXJ5LgorCitGaXggYnVnIGluIHRoZSBibGtpZCBsaWJyYXJ5IHdoZXJlIGNhY2hlZCBmaWxlc3lzdGVtcyB3YXMgbm90IGJlaW5nCitmbHVzaGVkIHdoZW4gb3BlbmluZyBVU0IgZGV2aWNlcyByZXR1cm5lZCB0aGUgZXJyb3IgRU5PTUVESVVNLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDYzNzg3KQorCitBZGRlZCBsb2dpYyB0byB0aGUgYmxraWQgbGlicmFyeSB0byBhdXRvbWF0aWNhbGx5IGNob29zZSB3aGV0aGVyIGEKK2ZpbGVzeXN0ZW0gc2hvdWxkIGJlIG1vdW50ZWQgYXMgZXh0NCBvciBleHQ0ZGV2LCBhcyBhcHByb3ByaWF0ZS4KKworQWxsb3cgdHVuZTJmcyB0byBzZXQgYW5kIGNsZWFyIHRoZSB0ZXN0X2ZzIGZsYWcgb24gZXh0NCBmaWxlc3lzdGVtcy4KKworRml4IGEgYnVnIGluIGUyZnNjayB3aGljaCBjYXVzZWQgaXQgdG8gY29yZSBkdW1wIGlmIGUyZnNwcm9ncyBoYWQgYmVlbgorY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLWpiZC1kZWJ1Zy4KKworRG9jdW1lbnQgdGhlIEJMS0lEX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlIGxpYmJsa2lkIG1hbiBwYWdlCisKK1Byb2dyYW1tZXIncyBOb3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXBkYXRlIGUyZnNwcm9ncyB0cmFuc2xhdGlvbiB0ZW1wbGF0ZSBhbmQgVmlldG5hbWVzZSBhbmQgQ3plY2ggdHJhbnNsYXRpb25zCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3M6ICM0MzYwNTgpCisKK0Rvbid0IHRyeSB0byBjcmVhdGUgJERFU1RESVIvZXRjL2luaXQuZCBhcyBwYXJ0IG9mIG1ha2UgaW5zdGFsbCBhcyB3ZQorZG9uJ3QgaW5zdGFsbCB0aGUgaW5pdC5kIHNjcmlwdCAoYW5kIGl0J3Mgbm90IHRoZSByZWNvbW1lbmRlZCB3YXkgdG8KK3N0YXJ0IHV1aWRkIGFueXdheSkuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4ODUwODUpCisKK1VzZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSB0byBmaXggYSB0aGVvcmV0aWNhbCByYWNlIGNvbmRpdGlvbiBpZiB0d28KK3RocmVhZHMgdHJ5IHRvIGZvcm1hdCBhbiB1bmtub3duIGVycm9yIGNvZGUgYXQgdGhlIHNhbWUgdGltZSBpbiB0aGUKK2NvbV9lcnIgbGlicmFyeS4KKworCitFMmZzcHJvZ3MgMS40MC41IChKYW51YXJ5IDI3LCAyMDA4KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGEgcG90ZW50aWFsIG92ZXJmbG93IGJpZyBpbiBlMmltYWdlIGlmIHRoZSBkZXZpY2UgbmFtZSBpcyB0b28KK2xvbmcuCisKK01rZTJmcyB3aWxsIG5vdyBjcmVhdGUgbmV3IGZpbGVzeXN0ZW1zIHdpdGggMjU2IGJ5dGUgaW5vZGVzIGFuZCB0aGUKK2V4dF9hdHRyIGZlYXR1cmUgZmxhZyBieSBkZWZhdWx0LiAgVGhpcyBhbGxvd3MgZm9yIG11Y2ggYmV0dGVyIGZ1dHVyZQorY29tcGF0aWJpdHkgd2l0aCBleHQ0IGFuZCBzcGVlZHMgdXAgZXh0ZW5kZWQgYXR0cmlidXRlcyBldmVuIG9uIGV4dDMKK2ZpbGVzeXN0ZW1zLgorCitUZWFjaCBlMmZzY2sgdG8gaWdub3JlIGNlcnRhaW4gInNhZmUiIGZpbGVzeXN0ZW0gZmVhdHVyZXMgd2hpY2ggYXJlCitzZXQgYXV0b21hdGljYWxseSBieSB0aGUga2VybmVsLiAgSGF2aW5nIHRoZSBrZXJuZWwgc2V0IGZlYXR1cmVzCithdXRvbWFnaWNhbGx5IGJlaGluZCB0aGUgdXNlcidzIGJhY2sgaXMgYSBiYWQgaWRlYSwgYW5kIHdlIHNob3VsZCB0cnkKK3RvIGJyZWFrIHRoZSBrZXJuZWwgb2YgdGhpcyBoYWJpdCwgZXNwZWNpYWxseSBmb3IgdGhlIG5ld2VyIGV4dDQKK2ZlYXR1cmUgZmxhZ3MuICBCdXQgZm9yIG5vdywgd2Ugd2lsbCB0cnkgdG8gYXZvaWQgbmVlZGxlc3MgZnVsbCBjaGVja3MKK3doaWNoIGNhbiBhbm5veSB1c2VycyB3aG8gYXJlIGRvaW5nIGZyZXNoIGluc3RhbGxzLgorCitBZGQgc3VwcG9ydCBpbiB0dW5lMmZzIGFuZCBta2UyZnMgZm9yIG1ha2luZyBhIGZpbGVzeXN0ZW0gYXMgYmVpbmcgIm9rCit0byBiZSB1c2VkIHdpdGggdGVzdCBrZXJuZWwgY29kZSIuICBUaGlzIHdpbGwgYmUgbmVlZGVkIGZvciB1c2luZyB0ZXN0CitmaWxlc3lzdGVtcyB3aXRoIHRoZSBsYXRlc3QgZXh0NCBrZXJuZWwgY29kZS4KKworQ2hhbmdlIGUyZnNjayAtZkQgc28gdGhhdCBpdCBzb3J0cyBub24taHRyZWUgZGlyZWN0b3JpZXMgYnkgaW5vZGUKK251bWJlcnMgaW5zdGVhZCBvZiBieSBuYW1lLCBzaW5jZSB0aGF0IG9wdGltaXplcyBwZXJmb3JtYW5jZXMgbXVjaAorbW9yZSBzaWduaWZpY2FudGx5LiAgKEFkZHJlc3Nlcy1Tb3VyY2Vmb3JnZS1GZWF0dXJlLVJlcXVlc3Q6ICM1MzI0MzkpCisKK0lmIGUyaW1hZ2UgZmlsbHMgdGhlIGRpc2ssIGZpeCBpdCBzbyBpdCBleGl0cyByaWdodCBhd2F5IGluc3RlYWQgb2YKK3NwZXdpbmcgbGFyZ2UgbnVtYmVycyBvZiBlcnJvciBtZXNzYWdlcy4KKyhBZGRyZXNzZXMtU291cmNlZm9yZ2UtRmVhdHVyZS1SZXF1ZXN0OiAjNjA2NTA4KQorCitJZiBmdHJ1bmNhdGU2NCgpIGlzIG5vdCBhdmFpbGFibGUgZm9yIHJlc2l6ZTJmcywgbGV0IGl0IHVzZSBmdHJ1Y2F0ZSgpCitpbnN0ZWFkLCBidXQgaGF2ZSBpdCBjaGVjayB0byBzZWUgaWYgdGhlIHNpemUgd291bGQgZ2V0IHRydW5jYXRlZCwgYW5kCitza2lwIGNhbGxpbmcgZnRydW5jYXRlIGluIHRoYXQgY2FzZS4KKworQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyBIRlMrIGZpbGVzeXN0ZW1zIGluIHRoZSBibGtpZCBsaWJyYXJ5LgorCitBZGQgc3VwcHJ0IGluIHRoZSBibGtpZCBsaWJyYXJ5IGZvciBleHQ0L2V4dDRkZXYgZmlsZXN5c3RlbXMuCisKK0ZpeCBhIGJ1ZyBpbiBibGtpZCB3aGVyZSBpdCBjb3VsZCBkaWUgb24gYSBmbG9hdGluZyBwb2ludCBleGNlcHRpb24KK3doZW4gcHJlc2VudGVkIHdpdGggYSBjb3JydXB0IHJlaXNlcmZzIGltYWdlLgorCitGaXggYmxraWQncyBoYW5kbGluZyBvZiBudGZzIFVVSUQncyBzbyB0aGF0IGxlYWRpbmcgemVyb3MgYXJlIHByaW50ZWQKK3N1Y2ggdGhhdCBVVUlEIHN0cmluZyBpcyBhIGZpeGVkIGxlbmd0aC4KKworQWRkIHNhbXBsZSBweXRob24gYmluZGluZ3MgZm9yIHRoZSB1dWlkIGxpYnJhcnkgdG8gdGhlIGNvbnRyaWIKK2RpcmVjdG9yeS4gIChBZGRyZXNzZXMtU291cmNlZm9yZ2UtUGF0Y2hlczogIzc3ODgxNykKKworRml4IGRlYnVnZnMncyAnbHNkZWwnIGNvbW1hbmQgc28gaXQgdXNlcyBleHQyZnNfYmxvY2tfaXRlcmF0ZTIgc28gaXQKK3dpbGwgd29yayB3aXRoIGxhcmdlIGZpbGVzLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBGZWF0dXJlIFJlcXVlc3Q6CisjMTI1NzUwMCBhbmQgU291cmNlZm9yZ2UgU3VwcG9ydCBSZXF1ZXN0OiAjMTI1MzUxMSkKKyAgICAKK0FsbG93IHRoZSBkZWJ1Z2ZzICd1bmRlbCcgY29tbWFuZCB0byB1bmRlbGV0ZSBhbiBpbm9kZSB3aXRob3V0IGxpbmtpbmcKK2l0IHRvIGEgc3BlY2lmaWMgZGVzdGluYXRpb24gZGlyZWN0b3J5LCBzaW5jZSB0aGlzIG1pZ2h0IHJlcXVpcmUKK2FsbG9jYXRpbmcgYmxvY2tzIHRoYXQgY291bGQgb3ZlcndyaXRlIHNvbWUgeWV0LXRvLWJlLXJlY292ZXJlZAorZGVsZXRlZCBmaWxlcy4gIChBZGRyZXNzZXMtU291cmNlZm9yZ2UtRmVhdHVyZS1SZXF1ZXN0OiAjOTY3MTQxKQorCitVcGRhdGUgU3dlZGlzaCB0cmFuc2xhdGlvbnMgZnJvbSB0aGUgVHJhbnNsYXRpb24gUHJvamVjdC4KKworUHJvZ3JhbW1lcidzIE5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggY29uZmlndXJlIGhhbmRsaW5nIG9mIC0tc2JpbmRpciAod2hpY2ggc2hvdWxkIHJhcmVseSBiZSB1c2VkLCBidXQKK3NvbWVvbmUgZGlkIGNvbXBsYWluLCBzbyBsZXQncyBmaXggaXQpLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjNDk4MzgxKQorCitVcGRhdGVkIGUyZnNwcm9ncy5zcGVjIGZpbGUgdG8gaW5jbHVkZSBhIG5ldyB1dWlkZCBwYWNrYWdlCisKK1VzZSBwa2ctY29uZmlnIHRvIGRldGVybWluZSB3aGVyZSB0byBmaW5kIHRoZSBkZXZtYXBwZXIgbGlicmFyeSBzbyB3ZQorY2FuIGZpbmQgb3V0IHdoZXJlIGl0IGlzIGxvY2F0ZWQgb24gZGlmZmVyZW50IGRpc3RyaWJ1dGlvbnMuCisKK0ZpeCBNYWtlZmlsZSByYWNlIHNvIHRoYXQgIm1ha2UgLWozIGRpc3RjbGVhbiIgd29ya3MgY29ycmVjdGx5CisKK0ZpeCBwb3J0YWJpbGl0eSBwcm9ibGVtcyBvbiBub24tTGludXgvbm9uLUh1cmQvbm9uLU1hc2l4IHN5c3RlbXMsCitlc3BlY2lhbGx5IG9uIE1hY09TIFggc3lzdGVtcy4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnczogIzE4NjE2MzMsCisjMTgxOTAzNCwgIzE4NjM4MTkpCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNDU5NDAzLCAjNDU5NDc1LCAjNDU5NjE0KQorCitSZW1vdmUgdGhlIC0tZW5hYmxlLWR5bmFtaWMtc3RhdGljIGNvbmZpZ3VyZSBvcHRpb24sIGFuZCBidWlsZCBlMmZzY2sKK2R5bmFtaWNhbGx5IGJ5IGRlZmF1bHQuICBJZiB0aGUgdXNlciB3YW50cyBlMmZzY2suc3RhdGljLCBoZS9zaGUgd2lsbAorbmVlZCB0byBidWlsZCBpdCB2aWEgIm1ha2UgLUMgZTJmc2NrIGUyZnNjay5zdGF0aWMiCisKK0ZpeCB2YXJpb3VzIGJ1aWxkIHdhcm5pbmdzIGR1ZSB0byBtaXNzaW5nIHByb3RvdHlwZXMuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIFBhdGNoOiAjMTg2MTY2MywgIzE4NjE2NTkpCisKKworRTJmc3Byb2dzIDEuNDAuNCAoRGVjZW1iZXIgMzEsIDIwMDcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW1wcm92ZSB0aW1lLWJhc2VkIFVVSUQgZ2VuZXJhdGlvbi4gIEEgbmV3IGRhZW1vbiB1dWlkZCwgaXMgc3RhcnRlZAorYXV0b21hdGljYWxseSBieSBsaWJ1dWlkIGlmIG5lY2Vzc2FyeS4gIFRoaXMgZGFlbW9uIGlzIHNldHVpZCB0byBhbGxvdwordXBkYXRlcyB0byAvdmFyL2xpYi9saWJ1dWlkLCBzbyB0aGUgY2xvY2sgc2VxdWVuY2UgbnVtYmVyIGNhbiBiZQorc3RvcmVkIGFuZCBzbyBpZiB0aGUgY2xvY2sgaXMgc2V0IGJhY2t3YXJkcywgaXQgY2FuIGJlIGRldGVjdGVkLgorKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMxNTI5NjcyLCBBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYToKKyMyMzM0NzEpCisKK0ZpbHRlciBvdXQgdGhlIE5FRURTX1JFQ09WRVJZIGZlYXR1cmUgZmxhZyB3aGVuIHdyaXRpbmcgb3V0IHRoZSBiYWNrdXAKK3N1cGVyYmxvY2tzLiAgVGhpcyBhdm9pZHMgZTJmc2NrIGZyb20gY29uY2x1ZGluZyB0aGF0IGEgZnVsbAorZmlsZXN5c3RlbSBjaGVjayBpcyByZXF1aXJlZCBiZWZvcmUgYmFja2luZyB1cCB0aGUgc3VwZXJibG9jayBkdWUgdG8KK2NoYW5nZXMgaW4gdGhlIGZlYXR1cmUgZmxhZ3MuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0NTQ5MjYpCisKK0ZpeCBmc2NrIHRvIG9ubHkgdHJlYXQgdGhlICcjJyBjaGFyYWN0ZXIgYXMgYSBjb21tZW50IGF0IHRoZSBiZWdpbm5pbmcKK29mIHRoZSBsaW5lIGluIC9ldGMvZnN0YWIuICBPdGhlcndpc2UgZnN0YWJzIGZvciB0aGUgZnVzZSBmaWxlc3lzdGVtCit3aWxsIGNhdXNlIGZzY2sgdG8gaXNzdWUgYW4gYm9ndXMgd2FybmluZyBtZXNzYWdlLgorKEFkZHJlc3NlcyBHZW50b28gYnVnOiAjMTk1NDA1LCBBZGRyZXNzZXMgU291cmNlZm9yZ2UgYnVnOiAjMTgyNjE0NykKKworRm9ybWF0IGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSBoaWdoIGVpZ2h0aCBiaXQgc2V0Cit3aGVuIHByaW50aW5nIHRoZSBjb250ZW50cyBvZiB0aGUgYmxraWQgY2FjaGUsIHRvIHByZXZlbnQgZmlsZXN5c3RlbXMKK3dpdGggZ2FyYmFnZSBsYWJlbHMgZnJvbSBzZW5kaW5nIGVzY2FwZSBzZXF1ZW5jZXMgdG8gdGhlIHVzZXIncyBzY3JlZW4KK3RoYXQgbWlnaHQsIGZvciBleGFtcGxlIHBsYWNlIGl0IGluIGdyYXBoaWNzIG1vZGUuICAoQWRkcmVzc2VzIFVidW50dQorQnVnOiAjNzgwODcpCisKK0ZpeCBzaWduLWV4dGVuc2lvbiBwcm9ibGVtIG9uIDY0LWJpdCBzeXN0ZW1zIGluIGluIHRoZSBjb21fZXJyCitsaWJyYXJ5LiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6ICMxODA5NjU4KQorCitBdm9pZCBkaXZpc2lvbiBieSB6ZXJvIGVycm9yIHdoZW4gcHJvYmluZyBhbiBpbnZhbGlkIEZBVCBmaWxlc3lzdGVtIGluCit0aGUgYmxraWQgbGlicmFyeS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTgzMTYyNykKKworVXBkYXRlIER1dGNoLCBQb2xpc2gsIGFuZCBWaWV0bmFtZXNlIHRyYW5zbGF0aW9ucyBmcm9tIHRoZSBUcmFuc2xhdGlvbgorUHJvamVjdC4gIFJlbW92ZSB0aGUgUndhbmRhbiB0cmFuc2xhdGlvbiB1cG9uIGFkdmljZSBvZiB0aGUKK1RyYW5zbGF0aW9uIFByb2plY3QuCisKK1Byb2dyYW1tZXIncyBOb3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IHRoZSBsaWJzcyAibWFrZSBjaGVjayIgcmVncmVzc2lvbiB0ZXN0IHNvIHRoYXQgaXQgd29ya3MgaWYgdGhlCitjdXJyZW50IGRpcmVjdG9yeSBpcyBub3QgaW4gdGhlIHVzZXIncyBwYXRoIG9yIGlmIHRoZSBsaWJzcyBzaGFyZWQKK2xpYnJhcnkgaXMgbm90IGluc3RhbGxlZC4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTg0ODk3NCkKKworRml4ZWQgc3BlbGxpbmcgbWlzdGFrZXMsIHR5cG9zLCBhbmQgb3RoZXJ3aXNlIGNsYXJpZmllZCBtYW4gcGFnZXMuCisoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNDQ0ODgzLCAjNDQxODcyKQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjNDM3NzIwLCAjNDUxMTcyLCAjNDU4MDE3KQorCitGaXggYnVpbGQgZmFpbHVyZSBvbiBub24tTGludXgvbm9uLUh1cmQvbm9uLU1hc2l4IHN5c3RlbXMuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE4NTk3NzgpCisKK0ZpeCBIdXJkIHBvcnRhYmlsaXR5IGlzc3Vlcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQzNzcyMCkKKworCitFMmZzcHJvZ3MgMS40MC4zIChEZWNlbWJlciA1LCAyMDA3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGEgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgd2hlcmUgYW4gdW50cnVzdGVkIGZpbGVzeXN0ZW0KK2NhbiBiZSBjb3JydXB0ZWQgaW4gc3VjaCBhIHdheSB0aGF0IGEgcHJvZ3JhbSB1c2luZyBsaWJleHQyZnMgd2lsbAorYWxsb2NhdGUgYSBidWZmZXIgd2hpY2ggaXMgZmFyIHRvbyBzbWFsbC4gIFRoaXMgY2FuIGxlYWQgdG8gZWl0aGVyIGEKK2NyYXNoIG9yIHBvdGVudGlhbGx5IGEgaGVhcC1iYXNlZCBidWZmZXIgb3ZlcmZsb3cgY3Jhc2guICBObyBrbm93bgorZXhwbG9pdHMgZXhpc3QsIGJ1dCBtYWluIGNvbmNlcm4gaXMgd2hlcmUgYW4gdW50cnVzdGVkIHVzZXIgd2hvCitwb3NzZXNzZXMgcHJpdmlsZWdlZCBhY2Nlc3MgaW4gYSBndWVzdCBYZW4gZW52aXJvbm1lbnQgY291bGQgY29ycnVwdCBhCitmaWxlc3lzdGVtIHdoaWNoIGlzIHRoZW4gYWNjZXNzZWQgYnkgdGhlIHB5Z3J1YiBwcm9ncmFtLCBydW5uaW5nIGFzCityb290IGluIHRoZSBkb20wIGhvc3QgZW52aXJvbm1lbnQsIHRodXMgYWxsb3dpbmcgdGhlIHVudHJ1c3RlZCB1c2VyIHRvCitnYWluIHByaXZpbGVnZWQgYWNjZXNzIGluIHRoZSBob3N0IE9TLiAgVGhhbmtzIHRvIHRoZSBNY0FmZWUgQVZFUlQKK1Jlc2VhcmNoIGdyb3VwIGZvciByZXBvcnRpbmcgdGhpcyBpc3N1ZS4gIChBZGRyZXNzZXMgQ1ZFLTIwMDctNTQ5Ny4pCisKK0ZpeCBodWVyaXN0aWNzIGluIGJsa2lkIHdoaWNoIGNvdWxkIGNhdXNlIGEgZGlzayB3aXRob3V0IHBhcnRpdGlvbnMgdG8KK2JlIGluY29ycmVjdGx5IHNraXBwZWQgd2hlbiBhIGxvb3BiYWNrIGRldmljZSBpcyBwcmVzZW50LiAgKEFkZHJlc3NlcworUmVkIEhhdCBCdWd6aWxsYSAjNDAwMzIxLikKKworRml4IGUyaW1hZ2Ugc28gdGhhdCBpbiByYXcgbW9kZSBpdCBkb2VzIG5vdCBjcmVhdGUgYW4gaW1hZ2UgZmlsZSB3aGljaAoraXMgb25lIGJ5dGUgdG9vIGxhcmdlLgorCitDaGFuZ2UgbWtlMmZzJ3MgdXNhZ2UgbWVzc2FnZSBzbyBpdCByZWNvbW1lbmRzIHRoZSBwcmVmZXJyZWQgLUUgb3B0aW9uCitpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkIC1SIG9wdGlvbi4KKworRW5oYW5jZSB0aGUgYmxraWQgbGlicmFyeSBzbyBpdCB3aWxsIHJlY29nbml6ZSBzcXVhc2hmcyBmaWxlc3lzdGVtcy4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYSAjMzA1MTUxLikKKworRW5oYW5jZSBlMmZzY2sgc28gaXQgd2lsbCBmb3JjZSB0aGUgYmFja3VwIHN1cGVyYmxvY2tzIHRvIGJlIGJhY2tlZCB1cAoraWYgdGhlIGZpbGVzeXN0ZW0gaXMgY29uc2lzdGVudCBhbmQga2V5IGNvbnN0YW50cyBoYXZlIGJlZW4gY2hhbmdlZAorKGkuZS4sIGJ5IGFuIG9uLWxpbmUgcmVzaXplKSBvciBieSBlMmZzY2sgaW4gdGhlIGNvdXJzZSBvZiBpdHMKK29wZXJhdGlvbnMuCisKK0VuaGFuY2UgYmxraWQncyBkZXRlY3Rpb24gb2YgRkFUIGZpbGVzeXN0ZW1zOyBzbyB0aGF0IFVTQiBkaXNrcyB3aXRoCitvbmx5IGEgc2luZ2xlIGJvb3RhYmxlIHBhcnRpdGlvbiB3aWxsIG5vdCBnZXQgbWlzc2VkLgorCitFMmZzY2sgd2lsbCBubyBsb25nZXIgbWFyayBhIGZpbGVzeXN0ZW0gYXMgaW52YWxpZCBpZiBpdCBoYXMgdGltZQorZXJyb3JzIChpLmUuLCBpZiBzdXBlcmJsb2NrIG1vdW50IHRpbWUgb3IgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZQorZnV0dXJlKSBhbmQgdGhlIHVzZXIgcmVmdXNlcyB0byBmaXggdGhlIHByb2JsZW0uCisKK1RoZSBVYnVudHUgaW5pdCBzY3JpcHRzIGRvbid0IHByb3Blcmx5IHNldCB0aGUgc3lzdGVtIHRpbWUgY29ycmVjdGx5Citmcm9tIGhhcmR3YXJlIGNsb2NrIGlmIHRoZSBoYXJkd2FyZSBjbG9jayBpcyBjb25maWd1cmVkIHRvIHRpY2sgbG9jYWwKK3RpbWUgaW5zdGVhZCBvZiBHTVQgdGltZS4gIFdvcmsgYXJvdW5kIHRoaXMgYXMgYmVzdCBhcyB3ZSBjYW4gYnkKK3Byb3ZpZGluZyBhbiBvcHRpb24sIGJ1Z2d5X2luaXRfc2NyaXB0cywgaW4gL2V0Yy9lMmZzY2suY29uZiB3aGljaCBjYW4KK2JlIHNldCBvbiBVYnVudHUgc3lzdGVtcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNDQxMDkzLCBhbmQgVWJ1bnR1CitCdWcgIzEzMTIwMS4pCisKK0ZpeCBmc2NrIHRvIGlnbm9yZSAvZXRjL2ZzdGFiIGVudHJpZXMgZm9yIGJpbmQgbW91bnRzLiAgKEFkZHJlc3NlcyBSZWQKK0hhdCBCdWd6aWxsYSAjMTUxNTMzLikKKworRml4IGUyZnNjayBzbyB0aGF0IGlmIHRoZSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQsIGJ1dCBzdGlsbCBsb29rcwordmFndWVseSBsaWtlIGFuIGV4dDIvMy80IHN1cGVyYmxvY2ssIHRoYXQgaXQgYXV0b21hdGljYWxseSB0cmllcyB0bworZmFsbCBiYWNrIHRvIHRoZSBiYWNrdXAgc3VwZXJibG9jaywgaW5zdGVhZCBvZiBmYWlsaW5nIHdpdGggYSBoYXJkCitlcnJvci4KKworTWFrZSB0aGUgZTJmc3Byb2dzIHByb2dyYW0gbW9yZSByb2J1c3Qgc28gdGhhdCB0aGV5IHdpbGwgbm90IGNyYXNoCit3aGVuIG9wZW5pbmcgYSBjb3JydXB0IGZpbGVzeXN0ZW0gd2hlcmUgc19pbm9kZV9zaXplIGlzIHplcm8uCisKK0NoYW5nZSBlMmZzY2sgc28gaXQgdXNlcyBzc2NhbmYoKSBpbnN0ZWFkIG9mIGF0b2koKSBzbyBpdCBub24tbnVtZXJpYworYXJndW1lbnRzIGFyZSBkZXRlY3RlZCBhcyBzdWNoIGFuZCB0aGUgcGFyc2UgZXJyb3IgaXMgcmVwb3J0ZWQgdG8gdGhlCit1c2VyLiAgIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjNDM1MzgxLikKKworQ2hhbmdlIGUyZnNjayBzbyBpdCB3aWxsIG5vdCBjb21wbGFpbiBpZiBhIGZpbGUgaGFzIGJsb2NrcyByZWFsbG9jYXRlZAordXAgdG8gdGhlIG5leHQgbXVsdGlwbGUgb2YgYSBzeXN0ZW0ncyBwYWdlIHNpemUuCisKK0ZpeCBidWcgaW4gZXh0MmZzX2NoZWNrX2Rlc2MoKSB3aGljaCB3aWxsIGNhdXNlIGUyZnNjayB0byBjb21wbGFpbgorYWJvdXQgKHZhbGlkKSBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgaW5vZGUgdGFibGUgZXh0ZW5kcyB0byB0aGUgbGFzdAorYmxvY2sgb2YgdGhlIGJsb2NrIGdyb3VwLiAgKEFkZHJlc3NlcyBSZWQgSGF0IEJ1Z3ppbGxhICMyMTQ3NjUuKQorCitGaXggYSBidWcgaW4gZXh0MmZzX2luaXRpYWxpemUoKSB3aGljaCBjYXVzZXMgbWtlMmZzIHRvIGZhaWwgd2hpbGUKK2FsbG9jYXRpbmcgaW5vZGUgdGFibGVzIGZvciBzb21lIHJlbGF0aXZlbHkgcmFyZSBvZGQgZGlzayBzaXplcy4KKyhBZGRyZXNzZXMgUmVkIEhhdCBCdWd6aWxsYSAjMjQxNzY3LikKKworQWRkIENhdGFsYW4gdHJhbnNsYXRpb24gYW5kIHVwZGF0ZSBEdXRjaCBhbmQgU3dlZGlzaCB0cmFuc2xhdGlvbnMKK2Zyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QuCisKK0ZpeCBiaWctZW5kaWFuIGJ5dGUtc3dhcHBpbmcgYnVnIGluIGV4dDJmc19zd2FwX2lub2RlX2Z1bGwoKS4gIFdlCitzdGlsbCBoYWQgYW4gaXNzdWUgd2hlbiB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGV0aGVyIHdlIG5lZWQgdG8KK2J5dGUtc3dhcCBmYXN0IHN5bWxpbmtzIHRoYXQgY29udGFpbmVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLgorKEFkZHJlc3NlcyBTb3VyY2VGb3JnZSBCdWcgIzE4MjEzMzMuKQorCisKK1Byb2dyYW1tZXIncyBOb3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IG1rZTJmcyB0ZXN0cyB0byBhdm9pZCBuZWVkaW5nIGFueSBzaWduaWZpY2FudCBeTSAoQ1IpIGNoYXJhY3RlcnMKKworQWRkICJtYWtlIGNoZWNrIiB0byB0aGUgUlBNIHNwZWMgZmlsZQorCitGaXggIm1ha2UgaW5zdGFsbCIgYW5kICdtYWtlIHVuc3RhbGwiIGluIG1pc2MvTWFrZWZpbGUuaW4gc28gdGhhdCBpdAord29ya3MgY29ycmVjdGx5IHdoZW4gdGhlIHByZWZpeCBpcyBub3QgdGhlIHJvb3QgZGlyZWN0b3J5LgorCitGaXggdGhlIHJlc2l6ZTJmcyB0ZXN0cywgcl9tb3ZlX2l0YWJsZSBhbmQgcl9yZXNpemVfaW5vZGUsIHNvIHRoZXkKK2NsZW5hIHVwIGFmdGVyIHRoZW1zZWx2ZXMgYnkgZGVsZXRpbmcgdGhlIHRlc3QuaW1nIHRlbXBvcmFyeSBmaWxlCithZnRlciBjb21wbGV0aW5nIHRoZSB0ZXN0LgorCitGaXhlZCBhIGNvcm5lciBjYXNlIGJ1ZyBleHQyZnNfdW5saW5rKCkgd2hlbiB0cnlpbmcgdG8gZGVsZXRlIHRoZQorZmlyc3QgZGlyZWN0b3J5IGVudHJ5IGluIGEgZGlyZWN0b3J5IGJsb2NrIGFuZCB0aGUgbGFzdCBkaXJlY3RvcnkKK2VudHJ5IGluIHRoZSBwcmV2aW91cyBkaXJlY3RvcnkgYmxvY2sgaXMgbm90IGluIHVzZS4gIEZvcnR1bmF0ZWx5CitleHQyZnNfdW5saW5rKCkgaXMgb25seSB1c2VkIGJ5IGRlYnVnZnMgYW5kIGUyZnNjaywgYW5kIGluIGUyZnNjayBpbgorcGxhY2VzIHdoZXJlIGl0IGlzIGV4dHJlbWVseSB1bmxpa2VseSB0byBydW4gaW50byB0aGlzIGNvcm5lciBjYXNlLgorCitGaXggbWlzc2luZyBkZXBlbmRlbmN5IHdoaWNoIHdvdWxkIGN1YXNlIHBhcmFsbGVsIGJ1aWxkcyB0byBmYWlsLgorKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWcgIzE4NDIzMzEuKQorCitGaXggYSBidWlsZCBlcnJvciBvbiBuZXdlciBnY2MgY2F1c2VkIGJ5IGxpYi9leHQyZnMvaXNtb3VudGVkLmMKK2NhbGxpbmcgb3BlbihPX0NSRUFURSkgd2l0aCBhIG1pc3NpbmcgbW9kZSBwYXJhbWV0ZXIuCisKK0ZpeCB0aGUgdGVzdF9zcy5jIGluIGxpYi9zcyBzbyBpdCBjYW4gYmUgdXNlZCBhcyBhbiBleGFtcGxlCithcHBsaWNhdGlvbiBwcm9ncmFtIGZvciB0aGUgbGlicmFyeSBhcyB3ZWxsIGFzIGEgcmVncmVzc2lvbiB0ZXN0CitzdWl0ZS4KKworRml4IGV4dDJmc19kYmxpc3RfZGlyX2l0ZXJhdGUoKSBzbyB0aGF0IGVycm9yIGNvZGVzIGFuZCBhYm9ydCBjb2RlcworYXJlIHByb3Blcmx5IHBhc3NlZCBiYWNrIHVwIHRocm91Z2ggdGhlIGNhbGwgc3RhY2suCisKK0UyZnNwcm9ncyAxLjQwLjIgKEp1bHkgMTIsIDIwMDcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIHJlY2VudCBjaGFuZ2UgdG8gZTJmc2NrX2FkZF9kaXJfaW5mbygpIHRvIHVzZSB0ZGIgZmlsZXMgdG8gY2hlY2sKK2ZpbGVzeXN0ZW1zIHdpdGggYSB2ZXJ5IGxhcmdlIG51bWJlciBvZiBmaWxlc3lzdGVtcyBoYWQgYSB0eXBvIHdoaWNoCitjYXVzZWQgdXMgdG8gcmVzaXplIHRoZSB3cm9uZyBkYXRhIHN0cnVjdHVyZS4gIFRoaXMgd291bGQgY2F1c2UgYQorYXJyYXkgb3ZlcnJ1biBsZWFkaW5nIHRvIG1hbGxvYyBwb2ludGVyIGNvcnJ1cHRpb25zIGFuZCBzZWdmYXVsdHMuCitTaW5jZSB3ZSBub3JtYWxseSBjYW4gdmVyeSBhY2N1cmF0ZWx5IHByZWRpY3QgaG93IGJpZyB0aGUgdGhlIGRpcmluZm8KK2FycmF5IG5lZWRzIHRvIGJlLCB0aGlzIGJ1ZyBvbmx5IGdvdCB0cmlnZ2VyZWQgb24gdmVyeSBiYWRseSBjb3JydXB0ZWQKK2ZpbGVzeXN0ZW1zLgorCitGaXggYSBidWcgaW4gZTJmc2NrIHdoaWNoIGNhdXNlZCBpdCB0byBpbmNvcnJlY3RseSBzYWx2YW5nZQorZGlyZWN0b3JpZXMgd2hlbiB0aGUgbGFzdCBlbnRyeSdzIHJlY19sZW4gaXMgYm9ndXNseSB0b28gYmlnLiAgVGhpcworcmVzdWx0ZWQgaW4gYSBub25zZW5zZSBmaWxlc3lzdGVtIGNvcnJ1cHRpb24gdG8gYmUgcmVwb3J0ZWQsIGFuZAorcmVxdWlyZWQgYSBzZWNvbmQgcnVuIG9mIGUyZnNjayB0byBmdWxseSBmaXggdXAgdGhlIGRpcmVjdG9yeS4KKworVXBkYXRlIHR1bmUyZnMgbWFuIHBhZ2UgdG8gaW5jbHVkZSBtb3JlIGRpc2N1c3Npb24gb2YgcmVzZXJ2ZWQgYmxvY2tzCisoQWRkcmVzc2VzIExhdW5jaHBhZCBidWcgIzQ3ODE3KQorCitVcGRhdGUgVHVya2lzaCwgUG9saXNoLCBEdXRjaCwgYW5kIFZpZXRuYW1lc2UgUE8gZmlsZXMgZnJvbSB0aGUKK1RyYW5zbGF0aW9uIFByb2plY3QKKyAgICAKKworRTJmc3Byb2dzIDEuNDAuMSAoSnVseSA3LCAyMDA3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGxpYmJsa2lkIHRvIGxvb3AgZm9yZXZlci4gIFdoZW4gcmV2YWxpZGF0aW5nCithIHBhcnRpdGlvbiB3aGVyZSB0aGVyZSBpcyBvYnNvbGV0ZSBpbmZvcm1hdGlvbiBpbiAvZXRjL2Jsa2lkLnRhYiwgd2UKK2VuZCB1cCBmcmVlaW5nIGEgdGhlIHR5cGUgdGFnIHdpdGhvdXQgY2xlYXJpbmcgZGV2LT5iaWRfdHlwZSwgY2F1c2luZworYmxraWRfdmVyaWZ5KCkgdG8gbG9vcCBmb3JldmVyLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDMyMDUyKQorICAgIAorVGhlIFR1cmtpc2ggdHJhbnNsYXRpb24gaGFzIGEgYnVnIGluIGl0IHdoZXJlIGl0IGhhcyB0aGUgdHJhbnNsYXRpb24KK29mICJFQGUgJyVEbicgaW4gJXAgKCVpKSIgdG8gIkVARSIuICBUaGlzIGNhdXNlcyBARSB0byBiZSBleHBhbmRlZCBhdAorQEUsIHJlY3Vyc2l2ZWx5LCBmb3JldmVyLCB1bnRpbCB0aGUgc3RhY2sgZmlsbHMgdXAgYW5kIGUyZnNjayBjb3JlCitkdW1wcy4gIFdlIGZpeCB0aGlzIGJ5IG1ha2luZyBlMmZzY2sgc3RvcCBALWV4cGFuc2lvbnMgYWZ0ZXIgYQorcmVjdXJzaXZlIGRlcHRoIG9mIDEwLCB3aGljaCBpcyBmYXIgbW9yZSB0aGFuIHdlIG5lZWQuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZzogIzE2NDYwODEpCisgICAgCitDb21waWxlIHRoZSBkZWZhdWx0IG1rZTJmcy5jb25mIGludG8gbWtlMmZzIHByb2dyYW0uICBQZW9wbGUgYXJlCitnZXR0aW5nIHN1cnByaXNlZCBieSBta2UyZnMgY3JlYXRpbmcgZmlsZXN5c3RlbXMgd2l0aCBkaWZmZXJlbnQKK2RlZmF1bHRzIHRoYW4gZWFybGllciB2ZXJzaW9ucyBvZiBta2UyZnMgaWYgbWtlMmZzLmNvbmYgaXMgbm90CitwcmVzZW50LiAgU28gd2Ugbm93IGNyZWF0ZSBhIGJ1aWx0IGluIHZlcnNpb24gb2YgbWtlMmZzLmNvbmYgZmlsZQord2hpY2ggaXMgdXNlZCBieSBta2UyZnMgaWYgdGhlIC9ldGMvbWtlMmZzLmNvbmYgaXMgbm90IHByZXNlbnQuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlQnVnOiAjMTc0NTgxOCkKKworSW1wcm92ZSB0aGUgY29uZmlnL3BhcnNlX3R5cGVzLnNoIGhlbHBlciBzY3JpcHQuICBGaXggYSBwb3RlbnRpYWwKK3NlY3VyaXR5IHByb2JsZW0gaWYgZTJmc3Byb2dzIGlzIGJ1aWx0IGFzIHJvb3QgKGFzIEdlbnRvbyBkb2VzISkuICBJbgorYWRkaXRpb24gZml4IHRoZSBzY3JpcHQgYW5kIGhvdyBpdCBpcyBjYWxsZWQgZnJvbSB0aGUgY29uZmlndXJlIHNjcmlwdAorc28gdGhhdCBpdCBkb2VzIHRoZSByaWdodCB0aGluZyB3aGVuIGNyb3NzLWNvbXBpbGluZy4gIChGaXhlcyBHZW50b28KK2J1ZzogIzE0NjkwMykKKyAgICAKK1VwZGF0ZSBWaWV0bmFtZXNlLCBGcmVuY2gsIGFuZCBEdXRjaCBQTyBmaWxlcyBmcm9tIHRoZSBUcmFuc2xhdGlvbgorUHJvamVjdC4gIEFsc28gY3JlYXRlZCBhIG5ldyBlMmZzcHJvZ3MucG90IGZpbGUgZm9yIHRyYW5zbGF0b3IuCisgICAgCitGaXggYm9ndXMgc3RyaXAgcGVybWlzc2lvbiBlcnJvcnMgd2hlbiBidWlsZGluZyB1bmRlciBEZWJpYW4uICBXaGVuCitidWlsZGluZyB0aGUgZTJmc3Byb2dzIGRwa2cncywgdGhlIGRoX3N0cmlwIGNvbW1hbmQgZW1pdHMgYSBsYXJnZQorbnVtYmVyIG9mIGVycm9yIG1lc3NhZ2VzIGNhdXNlZCBieSB0aGUgcGVybWlzc2lvbnMgbm90IGJlaW5nIHJpZ2h0LgorU28gcnVuIGRoX2ZpeHBlcm1zIGJlZm9yZSBydW5uaW5nIGRoX3N0cmlwLgorCitQcm9ncmFtbWVyJ3MgTm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZCBuZXcgZnVuY3Rpb246IHByb2ZpbGVfc2V0X2RlZmF1bHQoKS4gIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgdmFsdWUKK29mIHRoZSBwc2V1ZG8gZmlsZSAiPGRlZmF1bHQ+Ii4gIElmIHRoZSBmaWxlICI8ZGVmYXVsdD4iIGhhZAorcHJldmlvdXNseSBiZWVuIHBhc3NlZCB0byBwcm9maWxlX2luaXQoKSwgdGhlbiBkZWZfc3RyaW5nIHBhcmFtZXRlcgord2lsbCBiZSBwYXJzZWQgYW5kIHVzZWQgYXMgdGhlIHByb2ZpbGUgaW5mb3JtYXRpb24gZm9yIHRoZSAiPGRlZmF1bHQ+IgorZmlsZS4KKyAgICAKK0ZpeCBta19jbWRzJ3MgZXJyb3IgcmVwb3J0aW5nIHNvIHRoYXQgaXQgaXMgdW5hbWJpZ3VvdXMgdGhhdCBpdCBpcyB0aGUKK21rX2NtZHMgc2NyaXB0IHdoaWNoIGlzIGdlbmVyYXRpbmcgdGhlIGVycm9yLiAgKE9idmlhdGVzIEdlbnRvbyBwYXRjaDoKK2UyZnNwcm9ncy0xLjMyLW1rX2NtZHMtY29zbWV0aWMucGF0Y2gpCisgICAgCitGaXggdGhlIHRlc3Qgc3VpdGUgdG8gdXNlIExDX0FMTCBpbnN0ZWFkIG9mIExBTkcuICBMQ19BTEwgaXMgdGhlICJoaWdoCitwcmlvcml0eSIgZW52aXJvbm1lbnQgdmFyaWFibGUgdGhhdCBvdmVycmlkZXMgYWxsIG90aGVycywgd2hlcmUgYXMKK0xBTkcgaXMgdGhlIGxvd2VzdCBwcmlvcnR5IGVudmlyb25tZW50IHZhcmlhYmxlLiAgSWYgTENfQUxMIGlzIHNldCwgaXQKK2RvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgTEFORywgTEFOR1VBR0UsIExDX0NPTExBVEUsIExDX01FU1NBR0VTLCBhbmQKK3RoZSBhbGwgdGhlIHJlc3QgYXJlIHNldC4gIFRoaXMgd2lsbCBhc3N1cmUgdGhhdCB0aGUgbG9jYWxlIHdoZW4KK3J1bm5pbmcgdGhlIHRlc3Qgc3VpdGVzIGlzIHRoZSAiQyIgbG9jYWxlLiAgKE9idmlhdGVzIEdlbnRvbyBwYXRjaDoKK2UyZnNwcm9ncy0xLjM4LXRlc3RzLWxvY2FsZS5wYXRjaCkKKyAgICAKKworRTJmc3Byb2dzIDEuNDAgKEp1bmUgMjksIDIwMDcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGRpdmlkZSBieSB6ZXJvIGVycm9yIGluIGJsa2lkJ3MgTlRGUyBwcm9iaW5nIGxvZ2ljLgorCitBZGQgbmV3IGJsa2lkIC1nIG9wdGlvbiB3aGljaCBjYXVzZXMgdGhlIGJsa2lkIGNhY2hlIHRvIGJlIGdhcmJhZ2UKK2NvbGxlY3RlZC4KKworRml4IGEgYnVnIGluIGxpYmJsa2lkIHdoaWNoIGNvdWxkIGNhdXNlIHRoZSBpbnRlcm5hbCBmaWVsZCBiaWRfdHlwZSB0bworYmVjb21lIGNvcnJ1cHRlZC4gIEZvcnR1bmF0ZWx5IGJpZF90eXBlIGlzbid0IHVzZWQgbXVjaCwgYW5kIGJpZF9sYWJlbAorYW5kIGJpZF91dWlkIGlzIG9ubHkgdXNlZCBieSBkZWJ1Z2dpbmcgY29kZSwgc28gdGhlIGltcGFjdCBvZiB0aGlzIGJ1Zword2FzIHZlcnkgbWlub3IuCisKK01rZTJmcyB3aWxsIG5vdyBzdG9yZSB0aGUgUkFJRCBzdHJpZGUgdmFsdWUgd2hlbiBhIGZpbGVzeXN0ZW0gaXMKK2NyZWF0ZWQgd2l0aCBhIHJlcXVlc3RlZCBSQUlEIHN0cmlkZSwgYW5kIHRoZW4gdXNlIGl0IGF1dG9tYXRpY2FsbHkgaW4KK3Jlc2l6ZTJmcy4KKworTWtlMmZzIGhhcyBhIHNhbml0eSBjaGVjayBhZGRlZCB0byBtYWtlIHN1cmUgKGlub2RlX3NpemUgKiBudW1faW5vZGVzKQoraXNuJ3QgdG9vIGJpZy4gIEluIHNvbWUgY2FzZXMgTHVzdHJlIHVzZXJzIGhhdmUgdHJpZWQgc3BlY2lmeWluZyBhbgoraW5vZGUgc2l6ZSBvZiA0MDk2IGJ5dGVzLCB3aGlsZSBrZWVwaW5nIGFuIGlub2RlIHJhdGlvIG9mIG9uZSBpbm9kZQorcGVyIDQwOTYgYnl0ZXMuICAKKworSW1wcm92ZSBzYW5pdHkgY2hlY2sgaW4gZTJmc2NrJ3MgYWxnb3JpdGhtIGZvciBmaW5kaW5nIGEgYmFja3VwCitzdXBlcmJsb2NrLCBzbyB0aGF0IGl0IHdvbid0IGFjY2lkZW50YWxseSBmaW5kIGEgc3VwZXJibG9jayB0aGF0IHdhcworbG9jYXRlZCBpbiB0aGUgam91cm5hbCwgYW5kIHRoZW4gbGF0ZXIgcmVqZWN0IGl0IGFzIGJlaW5nIG5vdCBhIHZhbGlkCitiYWNrdXAgc3VwZXJibG9jay4KKworRml4IGUyZnNjayBnZXRfc2l6ZSBsb2dpYyBzbyB0aGF0IGl0IHdpbGwgd29yayB3aXRoIHRoZSBMaW51eCBmbG9wcHkKK2RyaXZlci4gIFRoZSBMaW51eCBmbG9wcHkgZHJpdmVyIGlzIGEgYml0IGRpZmZlcmVudCBmcm9tIHRoZSBvdGhlcgorYmxvY2sgZGV2aWNlIGRyaXZlcnMsIGluIHRoYXQgaWYgdGhlIGRldmljZSBoYXMgYmVlbiBvcGVuZWQgd2l0aAorT19FWENMLCBpdCBkaXNhbGxvd3MgYW5vdGhlciBvcGVuKCksIGV2ZW4gaWYgdGhlIHNlY29uZCBvcGVuKCkgZG9lcworbm90IGhhdmUgdGhlIE9fRVhDTCBmbGFnLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDEwNTY5KQorCitGaXggZXJyb3IgY2hlY2tpbmcgb2YgYmFkYmxvY2sncyBsYXN0LWJsb2NrIGFuZCBzdGFydC1ibG9jayBhcmd1bWVudHMuCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0MTY0NzcpCisKK0ZpeCBlMmZzY2sgc28gdGhhdCBpdCBkb2Vzbid0IG92ZXJ3cml0ZSB0aGUgYmFja3VwIHN1cGVyYmxvY2tzIHdoZW4KK3JlY292ZXJpbmcgYSBqb3VybmFsIHVudGlsIHRoZSBtYXN0ZXIgc3VwZXJibG9jayBoYXMgYmVlbiBjb25maXJtZWQgYXMKK2JlaW5nIHNhbmUuCisKK0NoYW5nZSB0aGUgYmxraWQgbGlicmFyeSB0byBiZSBtdWNoIG1vcmUgcGFyYW5vaWQgYWJvdXQgY29uY2x1ZGluZwordGhhdCBhIHBhcnRpdGlvbiBjb250YWlucyBhbiBOVEZTIGZpbGVzeXN0ZW0sIGFuZCBmZXRjaCB0aGUgVVVJRCBhbmQKK0xBQkVMIGluZm9ybWF0aW9uIGZyb20gTlRGUyBmaWxlc3lzdGVtcy4gIChBZGRyZXNzZXMgTGF1bmNocGFkIEJ1ZzoKKyMxMTAxMzgpCisKK0ZhY3RvciBvdXQgdGhlIGNvZGUgd2hpY2ggc2V0cyB0aGUgZGVmYXVsdCBqb3VybmFsIHNpemUgYW5kIG1vdmUgaXQKK2ludG8gbGliZXh0MmZzLgorCitFbmhhbmNlIGUyZnNjayBzbyBpdCB3aWxsIHJlY3JlYXRlIHRoZSBleHQzIGpvdXJuYWwgaWYgdGhlIG9yaWdpbmFsCitqb3VybmFsIGlub2RlIHdhcyBjbGVhcmVkIHRvIGR1ZSBpdCBiZWluZyBjb3JydXB0IGFmdGVyIGZpbmlzaGluZyB0aGUKK2ZpbGVzeXN0ZW0gY2hlY2suCisKK0ZpeCBlMmZzY2sgc28gdGhhdCBpdCB1cGRhdGVzIHRoZSBqb3VybmFsIGlub2RlIGlmIGl0IGlzIGNvcnJ1cHRlZCBhbmQKK3RoZSBiYWNrdXAgam91cm5hbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzdXBlcmJsb2NrIHdhcyBzdWNjZXNzZnVsbHkKK3VzZWQgdG8gcmVjb3ZlciB0aGUgZmlsZXN5c3RlbS4KKworRml4IGUyZnNjayBzbyB0aGF0IGl0IGNoZWNrcyBhbGwgb2YgdGhlIGJsb2NrcyBpbiB0aGUgam91cm5hbCBpbm9kZQorZm9yIHZhbGlkaXR5LiAgVGhlIG9yaWdpbmFsIGNvZGUgb25seSBjaGVja2VkIHRoZSBkaXJlY3QgYmxvY2tzIHRvCittYWtlIHN1cmUgdGhlIGpvdXJuYWwgaW5vZGUgd2FzIHNhbmUuICBVbmZvcnR1bmF0ZWx5LCBpZiBzb21lIG9yIGFsbAorb2YgdGhlIGluZGlyZWN0IG9yIGRvdWJseSBpbmRpcmVjdCBibG9ja3Mgd2VyZSBjb3JydXB0ZWQsIHRoaXMgd291bGQKK25vdCBiZSBjYXVnaHQuCisKK0FkZCBzdXBwb3J0IGluIGJsa2lkIHRvIGRldGVjdCBMVUtTIGVuY3J5cHRlZCBwYXJ0aXRpb25zLgorCitBZGQgZXh0cmEgc2FuaXR5IGNoZWNrcyBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKK3NpemUgaXMgemVybyBidXQgdGhlIG9mZnNldCBpcyB2ZXJ5IGxhcmdlLgorCitGaXggYnl0ZS1zd2FwcGluZyBpc3N1ZXMgZm9yIGxhcmdlIGlub2RlcyBpbiBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKCkKK2FuZCBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbCgpLgorCitDbGFyaWZ5IHRoZSBjb3B5cmlnaHQgbGljZW5zZXMgdXNlZCBieSB0aGUgdmFyaW91cyBsaWJyYXJpZXMgaW4KK3RoZSB0b3AtbGV2ZWwgQ09QWUlORyAgZmlsZSAoUmVkIEhhdCBCdWd6aWxsYTogMTY2MDU4KQorCitNYWtlIG1rZTJmcydzIGRlZmF1bHRzIHdoZW4gL2V0Yy9ta2UyZnMuY29uZiBkb2Vzbid0IGV4aXN0IG1vcmUgc2FuZS4KKworRml4IG1rZTJmcyBhbmQgZGVidWdmcyB0byBzdXBwb3J0IGxhcmdlICg+IDE2IGJpdCkgdWlkJ3MgYW5kIGdpZCdzLgorCitSZW1vdmUgY2hlY2sgaW4gZTJmc2NrIHdoaWNoIHJlcXVpcmVzIEVBJ3MgaW4gaW5vZGVzIHRvIGJlIHNvcnRlZDsKK3RoZXkgZG9uJ3QgbmVlZCB0byBiZSBzb3J0ZWQsIGFuZCBlMmZzY2sgd2FzIHByZXZpb3VzbHkgd3JvbmdseQorY2xlYXJpbmcgdW5zb3J0ZWQgRUEncyBzdG9yZWQgaW4gdGhlIGlub2RlIHN0cnVjdHVyZS4KKworQWxsb3cgbWtlMmZzIG9yIHR1bmUyZnMgdG8gY3JlYXRlIGEgc3Vic3RhbnRpYWxseSBsYXJnZXIgam91cm5hbCAodXAKK3RvIDEwLDI0MCwwMDAgYmxvY2tzKS4KKworRml4IE1EIHN1cGVyYmxvY2sgZGV0ZWN0aW9uLCBhbmQgbWFrZSBzdXJlIHRoZSBjb3JyZWN0IFVVSUQgaXMKK3JlcG9ydGVkIGZyb20gdGhlIE1EIHN1cGVyYmxvY2suCisKK0ZpeCBhIHNpZ25lZCB2cy4gdW5zaWduZWQgYnVnIGluIGRlYnVnZnMuCisKK0VuaGFuY2UgZGVidWdmcydzIGRhdGUgcGFyc2VyIHNvIHRoYXQgaXQgYWNjZXB0cyBpbnRlZ2VyIHZhbHVlcy4KKworRml4IGUyZnNjaydzIHBhc3MxYyBhY2NvdW50aW5nIHNvIGl0IGRvZXNuJ3QgdGVybWluYXRlIHRvbyBlYXJseSBpZiBhCitmaWxlIHdpdGggbXVsdGlwbHkgY2xhaW1lZCBibG9ja3MgaXMgaGFyZCBsaW5rZWQuIG9yIG5vdCBhdCBhbGwgaWYgdGhlCityb290IGRpcmVjdG9yeSBjb250YWlucyBzaGFyZWQgYmxvY2tzCisKK0VuaGFuY2UgZGVidWdmcyBzbyBpdCBjYW4gbW9kaWZ5IHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycyB1c2luZyB0aGUKK2NvbW1hbmQgc2V0X2Jsb2NrX2dyb3VwX2Rlc2NyaXB0b3IuCisKK0ltcHJvdmUgZTJmc2NrJ3MgcmVwb3J0aW5nIG9mIEkvTyBlcnJvcnMgc28gaXQncyBjbGVhcmVyIHdoYXQgaXQgd2FzCit0cnlpbmcgdG8gZG8gd2hlbiBhbiBlcnJvciBoYXBwZW5zCisKK0ZpeCBhIGJ1ZyBpbiBpbiBob3cgZTJmc3Byb2dzIGJ5dGUgc3dhcHMgaW5vZGVzIGNvbnRhaW5pbmcgZmFzdAorc3ltbGlua3MgdGhhdCBoYXZlIGV4dGVuZGVkIGF0dHJpYnV0ZXMuICAoQWRkcmVzc2VzIFJlZCBIYXQgQnVnemlsbGE6CisjMjMyNjYzIGFuZCBMVEMgQnVnemlsbGE6ICMyNzYzNCkKKworRml4IHBvdGVudGlhbCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBleHQyZnNfZ2V0X2RldmljZV9zaXplKCkgaW4gYW4KK2Vycm9yIGNhc2UuCisKK0FkZCBsaWJyZWFkbGluZS5zby41IHN1cHBvcnQgdG8gbGlic3MuCisKK0ltcG92ZSBiYWRibG9ja3MgLW4vLXcgZXhjbHVzaXZlIHVzYWdlIG1lc3NhZ2UuCisKK0ZpeCBkdW1wX3VudXNlZCBzZWdmYXVsdCBpbiBkZWJ1Z2ZzIHdoZW4gYSBmaWxlc3lzdGVtIGlzIG5vdCBvcGVuCisKK0ZpeCBtZW1vcnkgbGVhayBpbiBibGtpZCBsaWJyYXJ5LiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDEzNjYxKQorCitBbGxvdyB0aGUgZGVidWdmcyBsY2QgY29tbWFuZCB0byB3b3JrIHcvbyBhIGZpbGVzeXN0ZW0gYmVpbmcgb3Blbi4KKyhBZGRyZXNzZXMgTFRDIEJ1Z3ppbGxhICMyNzUxMykKKworRml4IGUyZnNjayB0byBjbGVhciBpX3NpemUgZm9yIHNwZWNpYWwgZGV2aWNlcyB3aXRoIGEgYm9ndXMgaV9ibG9ja3MKK2ZpZWxkIG9uIHRoZSBmaXJzdCBwYXNzLgorCitGaXggZTJmc2NrIHRvIHNldCB0aGUgZmlsZSB0eXBlIG9mIHRoZSAnLi4nIGVudHJ5IHdoZW4gY29ubmVjdGluZworYSBkaXJlY3RvcnkgdG8gbG9zdCtmb3VuZC4gIChBZGRyZXNzZXMgTHVzdHJlIEJ1ZzogIzExNjQ1KQorCitFbmhhbmNlIGUyZnNjayB0byByZWNvdmVyIGRpcmVjdG9yaWVzIHdob3NlIG1vZGVzIGZpZWxkIHdlcmUgY29ycnVwdGVkCit0byBsb29rIGxpa2Ugc3BlY2lhbCBmaWxlcy4gIFRoaXMgaXMgcHJvYmFibHkgb25seSB1c2VmdWwgaW4KK2FydGlmaWNpYWwgdGVzdCBjYXNlcywgYnV0IGl0IHdpbGwgYmUgdXNlZnVsIGlmIHdlIGV2ZXIgZG8gdGhlICJpbm9kZXMKK2luIGRpcmVjdG9yeSIgaWRlYSBmb3IgZXh0NC4KKworQWxsb3cgZGVidWdmcyB0byBkdW1wIChhbmQgcmR1bXApID4gMkdCIGZpbGVzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOgorIzQxMjYxNCkKKworRml4IHJlc2l6ZTJmcyBwYXJzaW5nIG9mIHNpemUgcGFyYW1ldGVyIChpbiBzZWN0b3IgdW5pdHMpLiAgVGhpcyB3YXMKK2FjdHVhbGx5IGEgYnVnIGluIGxpYmUycCdzIHBhcnNlX251bV9ibG9ja3MoKSBmdW5jdGlvbi4gIFdoZW4gaGFuZGxpbmcKK3RoZSAncycgc3VmZml4LCBpdCB3YXMgaWdub3JpbmcgdGhlIGJsb2Nrc2l6ZSBpbmZvcm1hdGlvbiBwYXNzZWQgaW4KK2Zyb20gdGhlIGNhbGxlciBhbmQgYWx3YXlzIGludGVycHJldGluZyB0aGUgbnVtYmVyIGluIHRlcm1zIG9mIGEgMWsKK2Jsb2Nrc2l6ZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQwODI5OCkKKworVGhlcmUgd2FzIGEgZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uIGVycm9yIHdoaWNoIGNvdWxkIGNhdXNlIGUyZnNjayB0bworbG9vcCBmb3JldmVyIG9uIHJlYWxseSBiaWcgZmlsZXN5c3RlbXMgd2l0aCBhIGxhcmdlIGlub2RlIGNvdW50LgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjNDExODM4KQorCitGaXggbWVtb3J5IGxlYWsgaW4gZXh0MmZzX3dyaXRlX25ld19pbm9kZSgpCisKK0FkZCBzdXBwb3J0IGZvciB1c2luZyBhIHNjcmF0Y2ggZmlsZXMgZGlyZWN0b3J5IHRvIHJlZHVjZSBlMmZzY2sncworbWVtb3J5IHV0aWxpemF0aW9uIG9uIHJlYWxseSBiaWcgZmlsZXN5c3RlbXMuICBUaGlzIHVzZXMgdGhlIFREQgorbGlicmFyeS4gIFNlZSB0aGUgW3NjcmF0Y2hfZmlsZXNdIHNlY3Rpb24gb2YgdGhlIGUyZnNjay5jb25mIG1hbiBwYWdlCitmb3IgbW9yZSBkZXRhaWxzLgorCitGaXhlZCB0eXBlLXB1bm5pbmcgYnVnIHdoaWNoIGNhdXNlZCBkdW1wZTJmcyB0byBjcmFzaCBvbiB0aGUgQXJtCitwbGF0Zm9ybSAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICMzOTcwNDQpCisKK0FkZCBleHBsYW5hdG9yeSBtZXNzYWdlIHRvIGJhZGJsb2NrcyB0aGF0IC1uIGFuZCAtdyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICMzNzE4NjkpCisKK0FsbG93IGRlYnVnZnMgYW5kIGR1bXBlMmZzIHRvIHN1cHBvcnQgZnMgZmVhdHVyZXMgdW5kZXIgZGV2ZWxvcG1lbnQuCisKK0FkZCBzdXBwb3J0IGZvciB0aGUgbmV3IGZsYWcgRVhUMl9GTEFHX1NPRlRTVVBQX0ZFQVRVUkVTIGZsYWcgdG8KK2V4dDJmc19vcGVuKCkgLCB3aGljaCBhbGxvd3MgYXBwbGljYXRpb24gdG8gb3BlbiBmaWxlc3lzdGVzIHdpdGggZmVhdHVyZXMKK3doaWNoIGFyZSBjdXJyZW50bHkgb25seSBwYXJ0aWFsbHkgc3VwcG9ydGVkIGJ5IGUyZnNwcm9ncy4KKworQWxsb3cgdW5peF9pbyB0byBzdXBwb3J0IG9mZnNldHMgZ3JlYXRlciB0aGFuIDJHIChBZGRyZXNzZXMKK1NvdXJjZUZvcmdlIEJ1ZzogIzE1NDc5MjIpCisKK0ZpeGVkIG92ZXJmbG93IGFuZCBzaWduZWQvdW5zaWduZWQgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBudW1iZXIgb2YKK2Jsb2NrcyBvciBpbm9kZXMgZXhjZWVkaW5nIDIqKjMxIG9yIGJlaW5nIGNsb3NlIHRvIDIqKjMyLTEuCisKK0FkZCBzdXBwb3J0IGZvciB1bnNpZ25lZCBkaXJlY3RvcnkgaGFzaCBjYWxjdWxhdGlvbnMgd2l0aCBoaW50cyBpbiB0aGUKK3N1cGVyYmxvY2sgdG8gZml4IGNyb3NzLWFyY2hpdGVjdHVyYWwgcG9ydGFiaWxpdHkgZm9yIGh0cmVlCitkaXJlY3RvcmllcyB3aXRoIGZpbGVuYW1lcyB3aGVyZSB0aGUgaGlnaCA4dGggYml0IGlzIHNldC4gIChBZGRyZXNzZXMKK0RlYmlhbjogIzM4OTc3MikKKworRml4IHJlc2l6ZTJmcyBzbyB0aGF0IGl0IGdpdmVzIHVzZXItaW50ZWxsaWdpYmxlIGVycm9yIG1lc3NhZ2VzIGlmIHRoZQorZmlsZXN5c3RlbSBvciB0aGUga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb24tbGluZSByZXNpemluZy4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzM4MDU0OCkKKworUmVxdWlyZSBta2UyZnMgLUYgLUYgZm9yIHJlYWxseSBkYW5nZXJvdXMgb3BlcmF0aW9ucywgc2luY2UgLUYgaXMKK25lZWRlZCBmb3IgbGVzcyBkYW5nZXJvdXMgb3BlcmF0aW9ucyBzdWNoIGFzIGNyZWF0aW5nIGZpbGVzeXN0ZW1zCitpbWFnZXMgaW4gcmVndWxhciBmaWxlcywgb3IgY3JlYXRpbmcgZmlsZXN5c3RlbXMgb24gd2hvbGUgYmxvY2sKK2RldmljZXMuICBUaGVzZSByZWxhdGl2ZWx5IGlubm9jdW91cyB1c2FnZXMgc2hvdWxkIE5PVCBiZSBjb25mdXNlZAord2l0aCBydW5uaW5nIG1rZTJmcyBvbiBhbiBhcHBhcmVudGx5LW1vdW50ZWQgb3IgaW4tdXNlIGZpbGVzeXN0ZW0uCisKK0FsbG93IHRoZSBkZWZhdWx0IGlub2RlIHNpemUgdG8gYmUgc3BlY2lmaWVkIGludG8gdGhlIG1rZTJmcy5jb25mCitmaWxlLgorCitNYWtlIHRoZSBzbWFsbGVzdCBkZWZhdWx0IGpvdXJuYWwgc2l6ZSBpcyBiaWcgZW5vdWdoIHNvIHRoYXQgb24tbGluZQorcmVzaXppbmcgc2hvdWxkIGFsd2F5cyB3b3JrLgorCitGaXggc2lsbHkgc3BlbGxpbmcgZXJyb3IgaW4gZTJmc2NrLiAgKEFkZHJlc3NlcyBTb3VyY2VGb3JnZSBidWc6CisjMTUzMTM3MikKKworRml4IGRlYnVnZnMgY29yZWR1bXAgd2hlbiBsc2RlbCBpcyBydW4gd2l0aG91dCBhbiBvcGVuIGZpbGVzeXN0ZW0KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzM3ODMzNSkKKworRml4IGRlYnVnZnMgZGlzcGxheSBidWcgdXMgdGhhdCBieXRlcyB0aGF0IGhhdmUgdGhlIGhpZ2ggYml0IHNldCBhcmUKK2Rpc3BsYXllZCBhcyAiZWMiIGluc3RlYWQgb2YgImZmZmZmZmVjIi4KKworQWRkIHN1cHBvcnQgaW4gbHNhdHRyIHNvIGl0IHdpbGwgZGlzcGxheSB0aGUgRVhUNF9FWFRFTlRTX0ZMIGZsYWcuCisKK0RldmljZSBtYXBwZXIgc2Nhbm5pbmcgd2Fzbid0IHdvcmtpbmcgaW4gdGhlIGJsa2lkIGxpYnJhcnkgYmVjYXVzZSB0aGUKK3BhdGhuYW1lcyBoYWQgYW4gZXh0cmEgIi9kZXYiIHdoZW4gdGhleSB3ZXJlIGJlaW5nIHByb2JlZC4KKworQWRkIEdGUy9HRlMyIHN1cHBvcnQgdG8gdGhlIGJsa2lkIGxpYnJhcnkuCisKK0ZpeCBibGtpZCBzdXBwb3J0IG9mIGVtcHR5IEZBVCBmaWxlc3lzdGVtIGxhYmVscy4KKworQXZvaWQgcmVjdXJzaW5nIGZvcmV2ZXIgKG9yIGZvciBhIGxvbmcgdGltZSkgd2hlbiB0aGUgYmxraWQgbGlicmFyeQorc2VhcmNoZXMgZm9yIGEgZGV2aWNlIGFuZCB0aGVyZSBhcmUgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgaW4gL2Rldi4KKworQXZvaWQgdW5hbGlnbmVkIGhhbGZ3b3JkIGFjY2VzcyBpbiBibGtpZCB3aGVuIGFjY2Vzc2luZyBGQVQKK3N1cGVyYmxvY2tzLCBhcyB0aGlzIHdpbGwgY2F1c2UgU3BhcmMvU29sYXJpcyBzeXN0ZW1zIHRvIHRocm93IGEKK1NJR0JVUyBlcnJvci4KKworVGhlIGxhdGVzdCBkZXZtYXBwZXIgbGlicmFyaWVzIHJlcXVpcmVzIHB0aHJlYWRzLCBhZGQgLWxwdGhyZWFkcyB0bwordGhlIHN0YXRpYyBsaW5rIGxpYnJhcmllcyBmb3IgZTJmc2NrLnN0YXRpYyBpZiBkZXZtYXBwZXIgaXMgZW5hYmxlZC4KKyhBZGRyZXNzZXMgRGViaWFuIGJ1ZzogIzM4ODcxOCkKKworSW1wcm92ZSB0aGUgKG5vbi1pbnN0YWxsZWQsIGZvciBleHBlcnRzIG9ubHkpIGZpbmRzdXBlciBwcm9ncmFtIGJ5CitwcmludGluZyB0aGUgdXVpZCBhbmQgbGFiZWwgZnJvbSB0aGUgc3VwZXJibG9ja3MsIGFzIHdlbGwgYXMgdGhlCitzdGFydGluZyBhbmQgZW5kaW5nIG9mZnNldHMgb2YgdGhlIGZpbGVzeXN0ZW0gZ2l2ZW4gdGhlIGluZm9ybWF0aW9uIGluCit0aGUgc3VwZXJibG9jay4gIE9taXQgYnkgZGVmYXVsdCBwcmludGluZyBzdXBlcmJsb2NrcyB0aGF0IGFyZSBsaWtlbHkKK2ZvdW5kIGluIGxvY2F0ZWQgaW4gYW4gZXh0MyBqb3VybmFsIHVubGVzcyBhbiBleHBsaWNpdCAtaiBvcHRpb24gaXMKK2dpdmVuLgorCitVcGRhdGVkIFNwYW5pc2gsIEZyZW5jaCBhbmQgRHV0Y2ggdHJhbnNsYXRpb25zIGFuZCBhZGRlZCBDYXRhbGFuCit0cmFuc2xhdGlvbi4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZzogIzQxMTU2MikKKworVXNlIEZyZWVCU0QncyBESU9DR01FRElBU0laRSBhbmQgRElPQ0dESU5GTyBpb2N0bHMgaWYgYXZhaWxhYmxlIHdoZW4KK2RldGVybWluaW5nIGEgcGFydGl0aW9uJ3Mgc2l6ZSwgc2luY2UgYmluYXJ5IHNlYXJjaGluZyB0byBkZXRlcm1pbmUKK3RoZSBkZXZpY2UgZG9lc24ndCB3b3JrIG9uIEZyZWVCU0QuCisKK0RvY3VtZW50YXRpb24gYWJvdXQgVVVJRCdzIGlzIGF2YWlsYWJsZSBpbiBlbm91Z2ggcGxhY2VzLCBhbmQgaXQncworYXdrd2FyZCB0byBkZWFsIHdpdGggZGViaWFuLWxlZ2FsJ3MgaW5zYW5pdGllcy4gIFNvIEknbSBjYXZpbmcgaW4gdGhlCisibW9yZS1sdW5hdGljLXRoYW4tUk1TIiB3aW5nIG9mIERlYmlhbiBieSByZW1vdmluZyBSRkMtNDEyMiBzbyB3ZQorZG9uJ3QgaGF2ZSBkbyB0aGUgZGZzZyB0YXJiYWxsLiAgQWxzbyByZW1vdmUgdGhlIHJ1bGUgdGhhdCBvbmx5IHRyaWVkCit0byBpbnN0YWxsIFJGQy00MTIyIG9uIFVidW50dSwgc2luY2UgVWJ1bnR1IHNlZW1zIHRvIHdhbnQgdG8gZmV0Y2gKK2UyZnNwcm9ncyBleGNsdXNpdmVseSBmcm9tIERlYmlhbi4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzQwNzEwNykKKworRml4IHRoZSBpbmZvLWRpciBsaW5lIHNvIHRoYXQgdGhlIG1lbnUgbmFtZSBkb2VzIG5vdCBjb250YWluIGEgLmluZm8KK3ByZWZpeC4gIEZpcnN0IG9mIGFsbCwgaXQncyB1Z2x5LCBzZWNvbmRseSwgaXQgY2F1c2VzIHRoZSBpbnN0YWxsLWluZm8KK2NvbW1hbmQgdG8gZmFpbCB0byByZW1vdmUgdGhlIGNvbV9lcnIgaW5mbyBmaWxlIGZyb20gdGhlCisvdXNyL3NoYXJlL2luZm8vZGlyIGZpbGUgd2hlbiB0aGUgY29tZXJyLWRldiBwYWNrYWdlIGlzIHJlbW92ZWQgYW5kCitwdXJnZWQuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM0MDE3MTEpCisKK0ZpeGVkIHNwZWxsaW5nIG1pc3Rha2VzLCB0eXBvcywgYW5kIG90aGVyd2lzZSBjbGFyaWZpZWQgbWFuIHBhZ2VzLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjMzY5NzYxLCAjMzczMDA0LCAjMzc5Njk1KQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzICMzODk1NTQsICMzOTA2NjQsICM0MTMyMDgsICM0MTk2MDUsCisjNDA4MzUyLCAjNDE1NTYwLCAjMzk5MTU1KQorCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRTJmc2NrIG5vdyBzdXBwb3J0cyB0aGUgJUl0IGV4cGFuc2lvbiB3aGVuIHByaW50aW5nIGEgcHJvYmxlbSByZXBvcnQuCitJdCB3aWxsIHByaW50IHRoZSB0eXBlIG9mIHRoZSBpbm9kZSBpbiB0aGUgcHJvYmxlbSBjb250ZXh0LgorCitGaXggbWlzYy9NYWtlZmlsZS5pbiBzbyB0aGF0IGl0IGJ1aWxkcyBldmVuIGlmIGUyZnNjayBoYXNuJ3QgYmVlbiBidWlsdCB5ZXQKKyhBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTU2NTU2MSkKKworUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYW5kIG90aGVyIGxpbnQvZ2NjIC1XYWxsIGNsZWFudXBzCisKK0FkZCBjaGVjayB0byBleHQyZnNfZ2V0X2RldmljZV9zaXplKCkgc28gaXQgd2lsbCByZXR1cm4gRUZCSUcgZm9yIGZvcgorZmlsZXN5c3RlbXMgY29udGFpbmVkIGluIHJlZ3VsYXIgZmlsZXMgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gaW1hZ2Ugc2l6ZQoraXMgcmV0dXJuZWQgYnkgc3RhdDY0KCkuCisKK1NldCBsb2NhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gQyBzbyBta19jbWRzIGFuZCBjb21waWxlX2V0IGFsd2F5cword29yay4gIChBZGRyZXNzZXMgU291cmNlRm9yZ2UgQnVnOiAjMTUzMjE3NykKKworQWRkZWQgdGhlIDY0LWJpdCBieXRlIHN3YXBwaW5nIGZ1bmN0aW9uIGV4dDJmc19zd2FiNjQoKS4KKworQWRkZWQgdHdvIG5ldyBoZWxwZXIgZnVuY3Rpb25zIHRvIHByZXZlbnQgMioqMzEvMioqMzItMSBvdmVyZmxvdworcHJvYmxlbXM6IGV4dDJmc19kaXZfY2VpbCgpIGFuZCBlMnBfcGVyY2VudCgpLgorCitDcmVhdGUgbmV3IGV4dDJmcyBsaWJyYXJ5IGlubGluZSBmdW5jdGlvbnMgZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrKCkKK2FuZCBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jaygpIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUgc3RhcnRpbmcgYW5kCitlbmRpbmcgYmxvY2tzIGluIGEgYmxvY2sgZ3JvdXAuCisKK0NyZWF0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzIHJlYWQtb25seSB0byByZW1pbmQgZGV2ZWxvcGVycyBub3QgdG8gZWRpdCB0aGVtLgorCitBZGQgc3VwcG9ydCBmb3IgYXV0b2NvbmYgMi42MCAod2l0aCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBmb3Igb2xkZXIKK3ZlcnNpb25zIG9mIGF1dG9jb25mKS4KKworQWRkZWQgYW4gIm1ha2UgcnBtIiB0YXJnZXQgdG8gdG9wLWxldmVsIE1ha2VmaWxlCisKK0FkZGVkIHZhcmlvdXMgRnJlZUJTRCBwb3J0YWJpbGl0eSBmaXhlcy4KKworRXhjbHVkZSBtZXJjdXJpYWwgZmlsZXMgZnJvbSB0aGUgUlBNIGJ1aWxkIHRyZWUgdG8gc3BlZWQgdXAgY29weS9idWlsZC4KKworVXNlIHJvb3Rfc3lzY29uZmRpciB0byBkZWZpbmUgdGhlIGxvY2F0aW9ucyBvZiBta2UyZnMuY29uZiBhbmQKK2UyZnNjay5jb25mIGluc3RlYWQgb2YgdXNpbmcgYSBoYXJkLWNvZGVkIC9ldGMgcGF0aG5hbWUuCisKK1ByZXZlbnQgZTJmc2NrLmggYW5kIGV4dDJfZXh0X2F0dHIuaCBmcm9tIGdldHRpbmcgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCisKK0ZpeGVkICJtYWtlIGNsZWFuIiBpbiBibGtpZCdzIE1ha2VmaWxlLmluIGZpbGUgZnJvbSByZW1vdmluZyB0c3RfKi5jIGZpbGVzLgorCitJZiBkaWZmIC11IGlzIHN1cHBvcnRlZCwgdXNlIGl0IHRvIHJlcG9ydCB0ZXN0IGZhaWx1cmVzLgorCitVcGRhdGVzL2ltcHJvdmVtZW50cyB0byBSUE0gc3BlYyBmaWxlCisKK0FkZCBvbi1kaXNrIGZvcm1hdCBkZWZpbml0aW9ucyBmb3IgdGhlIGZvbGxvd2luZyBuZXcgZmVhdHVyZXM6CitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0hVR0VfRklMRSwgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9HRFRfQ1NVTSwKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LLCBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQsCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0VYVFJBX0lTSVpFCisKK0FkZCBhIG5ldyBtYWtlIHRhcmdldCAiY2hlY2tlZC1mYWlsZWQiIGluIHRoZSB0ZXN0cyBkaXJlY3Rvcnkgd2hpY2gKK3JlcnVucyBhbnkgZmFpbGVkIHRlc3RzCisKK1VwZGF0ZSBkcmFmdC1sZWFjaC11dWlkcy1ndWlkcy0wMS50eHQgd2l0aCByZmM0MTIyLnR4dAorCitGaXggbWlzY2VsbGFuZW91cyBidWdzIHJlcG9ydGVkIGJ5IENvdmVyaXR5OiBEZWFkIGNvZGUsIHBvdGVudGlhbCBudWwKK3BvaW50ZXIgZGVyZWZlcmVuY2VzLCBtZW1vcnkgbGVha3MsIGV0Yy4gIE5vbmUgd2VyZSBzZWN1cml0eS1jcml0aWNpYWwKK3Byb2JsZW1zLgorCitGaXggdXAgdXNhZ2UgYW5kIGRlY3JlbWVudCBlcnJvciBtZXNzYWdlcyBpbiB0aGUgdGVzdF9pY291bnQgcHJvZ3JhbQorCitBZGQgZGVidWdnaW5nIGNvZGUgdG8gdGhlIGNvbV9lcnIgbGlicmFyeTsgaWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCitDT01FUlJfREVCVUcgaXMgc2V0IHRvIDEsIHByaW50IG91dCBkZWJ1Z2dpbmcgbWVzc2FnZXMgYXMgZXJyb3IgdGFibGVzCithcmUgYWRkZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgY29tX2VyciBsaWJyYXJ5LiAgSWYgdGhlCitDT01FUlJfREVCVUdfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgKGFuZCB0aGUgcHJvY2VzcyBpcyBub3QKK3NldHVpZCkgdGhlIGRlYnVnZ2luZyBtZXNzYWdlcyBtYXkgYmUgcmVkaXJlY3RlZCB0byBhIGZpbGUuCisKK0NoYW5nZSBhbGwgb2YgdGhlIGUyZnNwcm9ncyBwcm9ncmFtcyB0byB1c2UgdGhlIG5ld2VyIGFkZF9lcnJvcl90YWJsZSgpCithbmQgcmVtb3ZlX2Vycm9yX3RhYmxlKCkgaW50ZXJmYWNlcyBpbnN0ZWFkIG9mIHRoZSBtdWNoIG9sZGVyCitpbml0aWFsaXplXypfZXJyb3JfdGFibGUoKSBmdW5jdGlvbi4KKworQWRkIFREQiBzdXBwb3J0IGludG8gdGhlIGV4dDJmcyBsaWJyYXJ5LiAgVGhpcyBhbGxvd3MgdXMgdG8gaGF2ZSBhCitndWFyYW50ZWVkIGxpYnJhcnkgd2UgY2FuIGNvdW50IG9uIGFsd2F5cyBiZWluZyBwcmVzZW50IHNvIHdlIGNhbgorc3RvcmUgZGF0YSBpbiBhbiBvbi1kaXNrIGRhdGFiYXNlLgorCitBZGQgc3VwcG9ydCBmb3IgdXNpbmcgVERCIHRvIHN0b3JlIHRoZSBpY291bnQgZGF0YSwgc28gd2UgZG9uJ3QgcnVuIG91dAorb2YgbWVtb3J5IHdoZW4gY2hlY2tpbmcgcmVhbGx5IGxhcmdlIGZpbGVzeXN0ZW1zLgorCitDaGFuZ2UgdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBzbyB0aGF0IGl0IHNraXBzIGVtcHR5IHRlc3QgZGlyZWN0b3JpZXMuCisKK0RlZmluZSB0aGUgbF9pX2l2ZXJzaW9uIGZpZWxkIGluIGV4dDJfaW5vZGUuICBUaGUgbF9pX3ZlcnNpb24gZmllbGQgaXMKK25vdyBkZWZpbmVkIGZyb20gdGhlIG9sZCBsX2lfcmVzZXJ2ZWQxIGZpZWxkIGluIHRoZSBleHQyIGlub2RlLiAgVGhpcworZmllbGQgd2lsbCBiZSB1c2VkIHRvIHN0b3JlIGhpZ2ggMzIgYml0cyBvZiB0aGUgNjQtYml0IGlub2RlIHZlcnNpb24KK251bWJlci4KKworQWRkIE1ha2VmaWxlIHByb2R1Y3Rpb24gcnVsZSBmb3IgZTJmc3Byb2dzLnNwZWMgaW4gY2FzZSBpdCBnZXRzCitkZWxldGVkLgorCitBZGQgbmV3IGZ1bmN0aW9uIHByb2ZpbGVfZ2V0X3VpbnQoKSB0byBhbGxvdyBmb3IgYSBjbGVhbiB3YXkgdG8gZmV0Y2gKK3Vuc2lnbmVkIGludGVnZXJzIGZyb20gdGhlIGNvbnRleHQuCisKK0FkZCB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgZXh0MiBzdXBlcmJsb2NrIHN0cnVjdHVyZSBpcyAxMDI0IGJ5dGVzLgorCitGaXggdHlwbyBpbiBuYW1lIG9mIGZfZHVwNCByZWdyZXNzaW9uIHRlc3QKKworQWRkIG5ldyBmdW5jdGlvbiBibGtpZF9nY19jYWNoZSgpIHdoaWNoIHBlcmZvcm1zIGEgZ2FyYmFnZSBjb2xsZWN0aW9uCitwYXNzIG9uIHRoZSAvZXRjL2Jsa2lkLnRhYiBmaWxlLgorCitUaGUgZXh0MmZzX29wZW4oKSBmdW5jdGlvbiBub3cgc2V0cyBFWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFkuICBJbgorZ2VuZXJhbCwgb25seSBlMmZzY2sgKGFmdGVyIHRoZSBmaWxlc3lzdGVtIGlzIGNsZWFuKSwgdHVuZTJmcywgYW5kCityZXNpemUyZnMgc2hvdWxkIGNoYW5nZSB0aGUgYmFja3VwIHN1cGVyYmxvY2tzIGJ5IGRlZmF1bHQuICBNb3N0CitjYWxsZXJzIG9mIGV4dDJmc19vcGVuKCkgc2hvdWxkIG5vdCBiZSB0b3VjaGluZyBhbnkgc3VwZXJibG9jayBmaWVsZHMKK3doaWNoIHJlcXVpcmUgdGhlIGJhY2t1cHMgdG8gYmUgdG91Y2hlZC4KKworQWRkIG5ldyBmdW5jdGlvbiB0byBsaWJleHQyZnMsIGV4dDJmc19kZWZhdWx0X2pvdXJuYWxfc2l6ZSgpLCB3aGljaAorcmV0dXJucyB0aGUgZGVmYXVsdCBqb3VybmFsIHNpemUuCisKKworRTJmc3Byb2dzIDEuMzkgKE1heSAyOSwgMjAwNikgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXggMzItYml0IGNsZWFubGluZXNzIGluIGUyZnNwcm9ncyBzbyB0aGF0IHdlIGNhbiBzdXBwb3J0IGZpbGVzeXN0ZW1zCitiZXR3ZWVuIDIqKjMxIGFuZCAyKiozMiBibG9ja3MuCisKK0NoYW5nZSBta2UyZnMgdG8gdXNlIC9ldGMvbWtlMmZzLmNvbmYgYXMgYSBjb25maWd1cmF0aW9uIGZpbGUgdG8KK2NvbmZpZ3VyZSB0aGUgZmlsZXN5c3RlbSBmZWF0dXJlcywgYmxvY2tzaXplLCBhbmQgaW5vZGVfcmF0aW8gZm9yCitkaWZmZXJlbnQgZmlsZXN5c3RlbSB0eXBlcy4KKworTWtlMmZzIHdpbGwgbm93IGNyZWF0ZSBmaWxlc3lzdGVtcyBoYXNoIHRyZWVzIGFuZCBvbi1saW5lIHJlc2l6aW5nCitlbmFibGVkIGJ5IGRlZmF1bHQsIGJhc2VkIG9uIHRoZSBuZXcgL2V0Yy9ta2UyZnMuY29uZiBmaWxlLgorCitUaGUgZTJmc3Byb2dzIHRvb2xzIChyZXNpemUyZnMsIGUyZnNjaywgbWtlMmZzKSB3aWxsIG9wZW4gdGhlCitmaWxlc3lzdGVtIGRldmljZSBub2RlIGluIGV4Y2x1c2l2ZSBtb2RlIHRvIHByZXZlbnQgYWNjaWRlbnRzIGJ5CitzeXN0ZW0gYWRtaW5pc3RyYXRvcnMuICBJbiB0aGUgY2FzZSBvZiByZXNpemUyZnMgYW5kIG1rZTJmcywgaXQgd2lsbAorb25seSB1c2UgZXhjbHVzaXZlIG1vZGUgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IG1vdW50ZWQuCisKK0ZpeGVkIGEgYnVnIGluIG1rZTJmcyB3aGljaCBjYXVzZWQgaXQgdG8gdG8gZmFpbCB3aGVuIGNyZWF0aW5nIHRoZQorcmVzaXplIGlub2RlIGZvciBsYXJnZSBmaWxlc3lzdGVtcy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMzQ2NTgwKQorCitXaGVuIGFsbG9jYXRpbmcgc3BhY2UgZm9yIHRoZSBSQUlEIGZpbGVzeXN0ZW1zIHdpdGggdGhlIHN0cmlkZQorcGFyYW1ldGVyLCBta2UyZnMgd2lsbCBub3cgcGxhY2UgZWFjaCBwb3J0aW9uIG9mIHRoZSBncm91cCdzIGlub2RlCit0YWJsZSByaWdodCB1cCBhZnRlciB0aGUgc3VwZXJibG9jayAoaWYgcHJlc2VudCkgaW4gb3JkZXIgdG8gbWluaW1pemUKK2ZyYWdtZW50YXRpb24gb2YgdGhlIGZyZWVzcGFjZS4KKworU3BlZWQgdXAgbWtlMmZzIGFuZCBlMmZzY2sgYnkgd3JpdGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyBtb3JlCitlZmZpY2llbnRseSBieSB3cml0aW5nIHRoZSBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyBpbiBvbmUgcGFzcywgdGh1cworcmVkdWNpbmcgdGhlIG51bWJlciBvZiBkaXNrIHNlZWtzIHJlcXVpcmVkLgorCitBZGQgc3VwcG9ydCBmb3Igb24tbGluZSByZXNpemluZyB0byByZXNpemUyZnMuCisKK0ZpeCBibGtpZCBsaWJyYXJ5IHNvIHRoYXQgbG9naWMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgZGV2aWNlJ3MKK2NhY2hlZCBpbmZvcm1hdGlvbiBpbiAvZXRjL2Jsa2lkLnRhYiBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBub3QKK2RvZXNuJ3QgZ2V0IGNvbmZ1c2VkIGJ5IGEgc3lzdGVtIGNsb2NrIHdoaWNoIGlzIGluc2FuZSAoZm9yIGV4YW1wbGUsCitpZiB0aGUgYmF0dGVyeSBpcyBkZWFkIG9uIGEgTWFjaW50b3NoIHJ1bm5pbmcgUFBDIExpbnV4LiAgKEFkZHJlc3NlcworUmVkIEhhdCBCdWc6ICMxODIxODgpCisKK1RoZSBibGtpZCBsaWJyYXJ5IHdpbGwgbm93IHN0b3JlIHRoZSBVVUlEIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsIHVzZWQKK2J5IGV4dDMgZmlsZXN5c3RlbXMsIHNvIHRoYXQgaW4gdGhlIGZ1dHVyZSwgdGhlIHVzZXJzcGFjZSBtb3VudCBiaW5hcnkKK2NhbiB1c2UgdGhpcyB0byBmaW5kIHRoZSBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbCBhbmQgcGFzcwordGhpcyBpbmZvcm1hdGlvbiB0byB0aGUga2VybmVsLgorCitFMmZzY2sgd2lsbCBub3cgY29uc3VsdCBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgL2V0Yy9lMmZzY2suY29uZiB0bworY29udHJvbCBob3cgdmFyaW91cyBvcHRpb25zIHNob3VsZCBiZSBoYW5kbGVkLiAgU2VlIHRoZSBlMmZzY2suY29uZgorbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4gICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICMxNTAyOTUpCisKK0UyZnNjayBub3cgcHJpbnRzIGFuIGV4cGxhbmF0b3J5IG1lc3NhZ2Ugd2hlbiBkZWxheWluZyBhIGZpbGVzeXN0ZW0KK2NoZWNrIHdoZW4gdGhlIHN5c3RlbSBpcyBydW5uaW5nIG9uIGJhdHRlcnkuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6CisjMzUwMzA2KQorCitFMmZzY2sgd2lsbCBkZXRlY3QgaWYgdGhlIHN1cGVyYmxvY2sncyBsYXN0IG1vdW50IGZpZWxkIG9yIGxhc3Qgd3JpdGUKK2ZpZWxkIGlzIGluIHRoZSBmdXR1cmUsIGFuZCBvZmZlciB0byBmaXggaWYgc28uICAoQWRkcmVzc2VzIERlYmlhbiBCdWcKKyMzMjc1ODApIFRoZXNlIHByb2JsZW1zIHdpbGwgYmUgZml4ZWQgYXV0b21hdGljYWxseSBpbiBwcmVlbiBtb2RlCitzaW5jZSBEZWJpYW4ncyBib290IHNlcXVlbmNlIGJvZ3VzbHkgZG9lc24ndCBzZXQgdGhlIHRpbWUgY29ycmVjdGx5Cit1bnRpbCBwb3RlbnRpYWxseSB2ZXJ5IGxhdGUgaW4gdGhlIGJvb3R1cCBwcm9jZXNzLCBhbmQgdGhpcyBjYW4gY2F1c2UKK2ZhbHNlIHBvc2l0aXZlcyB3aGljaCB3aWxsIGNhdXNlIHVzZXJzJyBzeXN0ZW1zIHRvIGZhaWwgdG8gYm9vdC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1Z3MgIzM0MzY2MiBhbmQgIzM0MzY0NSkKKworRTJmc2NrIG5vdyBjaGVja3MgdG8gc2VlIGlmIHRoZSBzdXBlcmJsb2NrIGhpbnQgZm9yIHRoZSBsb2NhdGlvbiBvZgordGhlIGV4dGVybmFsIGpvdXJuYWwgaXMgaW5jb3JyZWN0LCBhbmQgaWYgc28sIG9mZmVyIHRvIHVwZGF0ZSBpdC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzM1NTY0NCkKKworRml4IGUyZnNjayBmcm9tIHNlZ2ZhdWx0aW5nIG9uIGRpc2Nvbm5lY3RlZCBpbm9kZXMgdGhhdCBjb250YWluIG9uZSBvcgorbW9yZSBleHRlbmRlZCBhdHRyaWJ1dGVzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjMzE2NzM2LCAjMzE4NDYzKQorCitFMmZzY2sgd2lsbCBzdG9wIGFuZCBwcmludCBhIHdhcm5pbmcgaWYgdGhlIHVzZXIgdHJpZXMgcnVubmluZyBhCityZWFkL3dyaXRlIGJhZGJsb2NrcyB0ZXN0IG9uIGEgcmVhZC1vbmx5IG1vdW50ZWQgcm9vdCBmaWxlc3lzdGVtLgorCitGaXggYSBtZW1vcnkgbGVhayBpbiBlMmZzY2sncyBlcnJvciBwYXRocy4gIChUaGFua3MgdG8gTWljaGFlbAorQy4gVGhvbXBzb24gZm9yIHBvaW50aW5nIHRoZXNlIG91dDsgdGhleSB3ZXJlIG9yaWdpbmFsbHkgZm91bmQgdXNpbmcKK0NvdmVyaXR5LikKKworV2hlbiByZXNpemluZyBhIGZpbGUgY29udGFpbmluZyBhIGZpbGVzeXN0ZW0sIHJlc2l6ZTJmcyB3aWxsIGV4cGFuZCBvcgordHJ1bmNhdGUgYSBmaWxlIGFzIG5lY2Vzc2FyeS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzI3MTYwNykKKworUmVzaXplMmZzIHdpbGwgbm93IGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBSQUlEIHN0cmlkZSBwYXJhbWV0ZXIgdGhhdAoraGFkIGJlZW4gdXNlZCB0byBjcmVhdGUgdGhlIGZpbGVzeXN0ZW0sIGFuZCB1c2UgdGhhdCBmb3IgbmV3bHkgY3JlYXRlZAorYmxvY2sgZ3JvdXBzLiAgIFRoZSBSQUlEIHN0cmlkZSBwYXJhbWV0ZXIgbWF5IGFsc28gYmUgbWFudWFsbHkgc3BlY2lmaWVkCitvbiB0aGUgY29tbWFuZCBsaW5lIHVzaW5nIHRoZSBuZXcgLVMgb3B0aW9uIHRvIHJlc2l6ZTJmcy4KKworRml4IG1rZTJmcyBzbyB0aGF0IGl0IGNvcnJlY3RseSBjcmVhdGVzIGV4dGVybmFsIGpvdXJuYWxzIG9uCitiaWctZW5kaWFuIG1hY2hpbmVzIChzdWNoIGFzIGEgUy8zOTApLiAgCisKK0ZpeCBhIGJ1ZyBpbiB0aGUgZTJwIGxpYnJhcnkgd2hpY2ggY291bGQgY2F1c2UgZHVtcGUyZnMgdG8gKHJhcmVseSkKK2ZhaWwgdG8gcHJpbnQgb3V0IHRoZSBqb3VybmFsIG9yIGhhc2ggc2VlZCBVVUlELiAgKFRoYW5rcyB0byBHdWlsbGF1bWUKK0NoYW1icmF1ZCBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuKQorCitEdW1wZTJmcyB3aWxsIG5vdyBwcmludCB0aGUgc2l6ZSBvZiB0aGUgam91cm5hbCAoaWYgcHJlc2VudCkuCisKK0ZpeCBkZWJ1Z2ZzJ3Mgc2V0X2lub2RlX2ZpZWxkIGNvbW1hbmQgc28gaXQgY2FuIHByb3Blcmx5IHNldCB0aGUgZnJhZywKK2ZzaXplLCB1aWRfaGlnaCwgZ2lkX2hpZ2gsIGFuZCBhdXRob3IgZmllbGRzIGluIHRoZSBpbm9kZSBpbnN0ZWFkIG9mCitzaWxlbnRseSBmYWlsaW5nLCBhbmQgc28gdGhhdCBzZXR0aW5nIHRoZSBpX3NpemUgYWN0dWFsbHkgc2V0cyBpX3NpemUKK2NvcnJlY3RseS4KKworQWRkIGEgbmV3IGRlYnVnZnMgY29tbWFuZCwgc2V0X2N1cnJlbnRfdGltZSwgd2hpY2ggc2V0cyBmcy0+bm93IHNvCit0aGF0IHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZXMgY2FuIHJlcGVhdGVkbHkgbW9kaWZ5IHRoZSBmaWxlc3lzdGVtJ3MKK2xhc3Rfd3JpdGUgZmllbGRzLgorCitGaXggYSBidWcgaW4gZGVidWdmcydzIGljaGVjayB3aGljaCB3b3VsZCBpbmNvcnJlY3RseSByZXBvcnQgdGhlIG93bmVyCitvZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2suCisKK0ZpeCB0aGUgZGVidWdmcyBjb21tYW5kcyBodHJlZV9kdW1wLCBkeF9oYXNoLCBhbmQgbGlzdF9kaXIgc28gdGhleSBwcmludCBhCitwcmludCBhIHVzYWdlIG1lc3NhZ2Ugd2hlbiBhbiBpbGxlZ2FsIG9wdGlvbiBjaGFyYWN0ZXIgaXMgZ2l2ZW4uCisKK0ZpeCBkZWJ1Z2ZzJ3MgZHVtcF91bnN1ZWQgY29tbWFuZCBvbiBmaWxlc3lzdGVtcyB3aXRoIGEgNjRrIGJsb2Nrc2l6ZQorc28gaXQgd29uJ3QgY29yZSBkdW1wLiAgKEFkZHJlc3NlcyBTb3VyY2VGb3JnZSBidWcgIzE0MjQzMTEpCisKK0ZpeCBta2xvc3QrZm91bmQgc28gdGhhdCBpdCBjcmVhdGVzIGEgZnVsbC1zaXplZCBkaXJlY3Rvcnkgb24KK2ZpbGVzeXN0ZW1zIHdpdGggbGFyZ2VyIGJsb2NrIHNpemVzLgorCitGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBibGtpZCBsaWJyYXJ5LgorCitGaXggYSBkaXNwbGF5IGJ1ZyBpbiAiYmFkYmxvY2tzIC1zdiIgc28gdGhhdCB0aGUgZG9uZSBtZXNzYWdlIHByb3Blcmx5CitjbGVhcnMgdGhlIGJsb2NrIG51bWJlciBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnCisjMzIyMjMxKQorCitBbGxvdyBmcmFjdGlvbmFsIHBlcmNlbnRhZ2VzIHRvIHRoZSAtbSBvcHRpb24gaW4gbWtlMmZzIGFuZCB0dW5lMmZzCisoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICM4MDIwNSkKKworVXNlIGZzdGF0L2ZzdGF0NjQgaW4gZ2V0c2l6ZS5jIGlmIHRoZSB0aGUgdGFyZ2V0IGlzIGEgcmVndWxhciBmaWxlLAoraW5zdGVhZCBvZiBhdHRlbXB0aW5nIHRvIGRvIGEgYmluYXJ5IHNlYXJjaC4gIEZpeCBzb21lIGZkIGxlYWtzIGluCitlcnJvciBjYXNlcy4KKworQWRkIHN1cHBvcnQgZm9yIGRldmljZSBtYXBwZXIgbGlicmFyeSB0byB0aGUgYmxraWQgbGlicmFyeSB0byBlbnN1cmUKK3RoYXQgdGhlICJiZXN0IiAoaS5lLiwgbGVhZikgZGV2aWNlIGlzIHByb2JlZCBieSB0aGUgYmxraWQgbGlicmFyeS4KKworRml4IHRoZSBibGtpZCBsaWJyYXJ5IHNvIHRoYXQgaXQgbm90aWNlcyB3aGVuIGFuIGV4dDIgZmlsZXN5c3RlbSBpcwordXBncmFkZWQgdG8gZXh0My4KKworSW1wcm92ZSB0aGUgYmxraWQncyBsaWJyYXJ5IFZGQVQvRkFUIGRldGVjdGlvbjsgaXQgbm93IHVuZGVyc3RhbmRzCitsYWJlbHMgc3RvcmVkIGluIHRoZSByb290IGRpcmVjdG9yeSwgYW5kIGlzIG1vcmUgcGFyYW5vaWQgYWJvdXQKK2NoZWNraW5nIHRoZSBGQVQgc3VwZXJibG9jayB2YWx1ZXMuCisKK0ZpeGVkIGEgZmQgbGVhayBpbiB0aGUgdXVpZCBsaWJyYXJ5IHdoaWNoIHdhcyBjYXVzaW5nIHByb2JsZW1zIGZvciB0aGUKK0xWTSB0b29scy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzM0NTgzMikKKworQWRkIHN1cHBvcnQgZm9yIHRoZSByZWlzZXI0IGFuZCBzb2Z0d2FyZSBzdXNwZW5kIHBhcnRpdGlvbnMgdG8gdGhlCitibGtpZCBsaWJyYXJ5LiAgQWxzbyBhZGQgc3VwcG9ydCBmb3IgZXh0cmFjdCB0aGUgbGFiZWwgZnJvbSBpc285NjYwCitmaWxlc3lzdGVtcy4KKworRml4IGEgY29tcGlsZV9ldCBidWcgd2hpY2ggbWlzY291bnQgdGhlIG51bWJlciBvZiBlcnJvciBtZXNzYWdlcyBpZgorY29udGludWF0aW9ucyBhcmUgdXNlZCBpbiB0aGUgLmV0IGZpbGUuCisKK0FkZCBleHRyYSBzYW5pdHkgY2hlY2tzIHRvIHByb3RlY3QgdXNlcnMgZnJvbSB1bnVzdWFsIGNpcnVjbXN0YW5jZXMKK3doZXJlIC9ldGMvbXRhYiBtYXkgbm90IGJlIHNhbmUsIGJ5IGNoZWNraW5nIHRvIHNlZSBpZiB0aGUgZGV2aWNlIGlzCityZXBvcnRlZCBidXN5ICh3b3JrcyBvbiBMaW51eCAyLjYpIGtlcm5lbHMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWcKKyMzMTkwMDIpCisKK1VwZGF0ZWQgRnJlbmNoLCBEdXRjaCwgUG9saXNoLCBhbmQgU3dlZGlzaCB0cmFuc2xhdGlvbnMuICAoQWRkcmVzc2VzIERlYmlhbgorQnVnOiAjMzQzMTQ5LCAjMzQxOTExLCAjMzAwODcxLCAjMzE2NjA0LCAjMzE2NzgyLCAjMzMwNzg5KQorCitGaXggdXNlLWFmdGVyLWZyZWUgYnVnIGluIGUyZnNjayB3aGVuIGZpbmlzaGluZyB1cCB0aGUgdXNlIG9mIHRoZQorZTJmc2NrIGNvbnRleHQgc3RydWN0dXJlLgorCitGaXhlZCBzcGVsbGluZyBtaXN0YWtlcywgdHlwb3MsIGFuZCBvdGhlcndpc2UgY2xhcmlmaWVkIG1hbiBwYWdlcyBhbmQKK2RvY3VtZW50YXRpb24uICAoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjMzI5ODU5LCAjMzIyMTg4LCAjMzE2ODExLAorIzMxMjUxNSwgIzM1MTI2OCwgIzM1Nzk1MSwgIzM0NzI5NSwgIzMxNjA0MCwgIzM2ODM5MiwgIzM2ODM5MywgIzM2ODM5NCwKKyMzNjgxNzkpCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3MgIzMxNzg2MiwgIzMyMDM4OSwgIzI5MDQyOSwgIzMxMDk1MCwKKyMzMTA0MjgsICMzMzA3MzcsICMzMzA3MzYsICMzMjkwNzQsICMzNTYyOTMsICMzNjAwNDYsICMzNjYwMTcsICMzNjQ1MTYsCisjMzYyNTQ0LCAjMzYyOTcwKQorCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXBkYXRlIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiB0byBsYXRlc3QgdmVyc2lvbiAoMjAwNi0wMi0yMykgZnJvbQorRlNGLgorCitGaXggYXNtX3R5cGVzLmggdHlwZSBjb25mbGljdHMgb24gQU1EIDY0IHBsYXRmb3Jtcy4gIChBZGRyZXNzZXMgRGViaWFuCitCdWdzOiAjMzYwNjYxLCAjMzYwMzE3KQorCitGaXhlZCB0aGUgTWFrZWZpbGUgc28gdGhhdCB0aGV5IHdvcmsgY29ycmVjdGx5IG9uIG5ld2VyIHZlcnNpb25zIG9mCitHTlUgbWFrZSAoaS5lLiwgMy44MSkuCisKK0FkZCB2YWxncmluZCBzdXBwb3J0IHRvIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGVzLCBhbmQgZWxpbWluYXRlCitmYWxzZSBwb3NpdGl2ZXMgZnJvbSB2YWxncmluZC4KKworQWRkIGEgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIGZvciB0aGUgYmxraWQgbGlicmFyeS4KKworRml4IGEgZmVuY2Vwb3N0IGVycm9yIGluIHJlc2l6ZTJmcyBjYXVnaHQgYnkgdmFsZ3JpbmQuICAKKworRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgbWVtY3B5IHByb3RvdHlwZXMuCisKK1dlIG5vIGxvbmdlciBoYXZlIHRoZSBzcGFyYyBhc3NlbWJseSBjb2RlIGluIHRoZSBoZWFkZXIgZmlsZSBhbnkgbW9yZSwKK3NvIHdlIHNob3VsZG4ndCBzZXQgX0VYVDJfSEFWRV9IQVNfQklUT1BTXyBmb3IgdGhlIHNwYXJjLiAgVGhpcyB3b3VsZAorYnJlYWsgY29tcGlsZXMgb24gdGhlIHNwYXJjIGFyY2hpdGVjdHVyZXMgd2hlbiB1c2luZyBnY2MuCisKK0luIHRoZSBsaWJleHQyZnMgbGlicmFyeSwgYWRkIHRoZSBuZXcgZmllbGQgZnMtPm5vdyB3aGljaCBpZiBub24temVybworaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gdGltZSB3aGVuIHNldHRpbmcgdmFyaW91cyBmaWxlc3lzdGVtCitmaWVsZHMgKGxhc3QgbW9kaWZpZWQgdGltZSwgbGFzdCB3cml0ZSB0aW1lLCBldGMuKQorCitGaXggZ2NjIDQuMDEgY29tcGxhaW50cyBieSBhZGRpbmcgYSBtaXNzaW5nICNpbmNsdWRlIDxzdHJpbmcuaD4gdG8KK2V4dDJmcy5oIHdoaWNoIGlzIG5lZWRlZCBzaW5jZSB0aGUgaW5saW5lIGZ1bmN0aW9ucyB1c2UgbWVtY3B5KCkuCisoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIEJ1ZyAjMTI1MTA2MikKKworVXNlIEJVSUxEX0NGTEFHUyBhbmQgQlVJTERfTERGTEFHUyBpbnN0ZWFkIG9mIENGTEFHUyBhbmQgTERGTEFHUyBpbgordGhlIGJ1aWxkIHN5c3RlbSB3aGVuIGJ1aWxkaW5nIGZpbGVzIGluIHRoZSB1dGlsIGRpcmVjdG9yeSB3aGljaCBhcmUKK25lZWRlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuICBUaGlzIGF2b2lkcyBwb3RlbnRpYWwgcHJvYmxlbXMgd2hlbgorY3Jvc3MtY29tcGlsaW5nIGFuZCBzb21lIG9mIHRoZSBvcHRpb25zIHNwZWNpZmllZCBpbiBDRkxBR1Mgb3IgTERGTEFHUworYXJlIG5vdCByZWNvZ25pemVkIGFzIHZhbGlkIGJ5IHRoZSBob3N0IGNvbXBpbGVyLiAgKEFkZHJlc3NlcworU291cmNlZm9yZ2UgQnVnICMxMjYxNTQ3KQorCitDbGVhbiB1cCB0aGUgYmxraWQgbGlicmFyeSBieSBtYWtpbmcgdGhlIHN1cGVyYmxvY2sgYW5kIGdlbmVyaWMgaS9vCitmdW5jdGlvbnMgdG8gYmUgbW9yZSBnZW5lcmljLiAgQ2xlYW4gdXAgaW50ZXJmYWNlIHRvIHRoZSBwcm9iZQorZnVuY3Rpb24sIGFuZCBmaXggbWVtb3J5IGxlYWsuICBGaW5hbGxseSwgcmVtb3ZlIGFuIHVubmVlZGVkIHJlZmVyZW5jZQordG8gcHJvYmUuaCBpbiB0aGUgbGliL2Jsa2lkL3Jlc29sdmUuYworCitBZGQgYW4gZXh0MmZzX3JlYWRfYmJfRklMRSByZWdyZXNzaW9uIHRlc3QgdG8gY29uZmlybSBwcm9wZXIgZGV0ZWN0aW9uCitvZiBpbnZhbGlkIGJsb2NrICMncy4KKworVGhlIHg4NiBhc20gY29uc3RyYWludHMgZm9yIGV4dDJmc197c2V0L2NsZWFyfV9iaXQgaGF2ZSBiZWVuIGZpeGVkIHRvCitpbmRpY2F0ZSB0aGF0IHRoZSB0aGUgZnVuY3Rpb24gcmVhZC93cml0ZXMgdGhlIG1lbW9yeSBsb2NhdGlvbi4KKworRml4IHZhcmlvdXMgZ2NjIC1XYWxsIGNvbXBsYWludHMuCisKK0FkZCBhIGRlcGVuZGVuY3kgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHN1YmRpcmVjdG9yaWVzIGFyZSBjcmVhdGVkCitiZWZvcmUgY3JlYXRpbmcgYWxsIG9mIHRoZSBvYmplY3QgZmlsZXMsIGluIG9yZGVyIHRvIGFkZHJlc3MgcGFyYWxsZWwKK2J1aWxkIHByb2JsZW0gaW4gdGhlIGxpYnJhcnkgTWFrZWZpbGVzLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBCdWc6CisjMTI2MTU1MykKKworQWRkICQoTERGTEFHUykgdG8gdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCB3aGVuIGdlbmVyYXRpbmcgYW4gRUxGIG9yCitTb2xhcmlzIHNoYXJlZCBsaWJyYXJ5LCB0byBhbGxvdyBjcm9zcy1jb21waWxlIGFuZCBvdGhlciBidWlsZHMgdGhhdAorbWlnaHQgbmVlZCB0byBzcGVjaWZ5IC1MIHBhdGhzIHRvIG5lZWRlZCBsaWJyYXJpZXMuICAoQWRkcmVzc2VzCitTb3VyY2Vmb3JnZSBCdWcgIzEyNjE1NDkpCisKK0FkZCBhIG5ldyBmZWF0dXJlLCBFWFQyX0ZFQVRVUkVfQ09NUEFUX0xBWllfQkcsIHdoaWNoIGlzIGluaXRpYWxseQoraW50ZW5kZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuICBJdCBhbGxvd3MgYW4gZXh0Mi9leHQzIGRldmVsb3BlciB0bworY3JlYXRlIHZlcnkgbGFyZ2UgZmlsZXN5c3RlbXMgdXNpbmcgc3BhcnNlIGZpbGVzIHdoZXJlIG1vc3Qgb2YgdGhlCitibG9jayBncm91cHMgYXJlIG5vdCBpbml0aWFsaXplZCBhbmQgc28gZG8gbm90IHJlcXVpcmUgbXVjaCBkaXNrCitzcGFjZS4gIEV2ZW50dWFsbHkgaXQgY291bGQgYmUgdXNlZCBhcyBhIHdheSBvZiBzcGVlZGluZyB1cCBta2UyZnMgYW5kCitlMmZzY2sgZm9yIGxhcmdlIGZpbGVzeXN0ZW0sIGJ1dCB0aGF0IHdvdWxkIGJlIGJlc3QgZG9uZSBieSBhZGRpbmcgYW4KK1JPX0NPTVBBVCBleHRlbnNpb24gdG8gdGhlIGZpbGVzeXN0ZW0gdG8gYWxsb3cgdGhlIGlub2RlIHRhYmxlIHRvIGJlCitsYXppbHkgaW5pdGlhbGl6ZWQgb24gYSBwZXItYmxvY2sgYmFzaXMsIGluc3RlYWQgb2YgYmVpbmcgZW50aXJlbHkKK2luaXRpYWxpemVkIG9yIGVudGlyZWx5IHVudXNlZCBvbiBhIHBlci1ibG9ja2dyb3VwIGJhc2lzLgorCitGaXggYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgc28gZTJmc3Byb2dzIHdpbGwgYmV0dGVyIGNvbXBpbGUgb24gTGludXgKKzIuMC4zNSBzeXN0ZW1zLgorCitNYWtlIHRlc3Qgc2NyaXB0cyBtb3JlIHJvYnVzdCBhZ2FpbnN0IGxvY2FsZS1yZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcworCitGaXggdHlwZSB3YXJuaW5nIHByb2JsZW0gd2l0aCBzaXplb2YoKSBpbiBleHQyZnNfb3BlbjIoKS4KKworRml4IHR5cGUgd2FybmluZyBwcm9ibGVtIHdpdGggdGltZV90IGluIGRlYnVnZnMuCisKKworRTJmc3Byb2dzIDEuMzggKEp1bmUgMzAsIDIwMDUpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGJsa2lkJ3MgdGVzdCBwcm9ncmFtcyAoYnVpbHQgd2l0aCAibWFrZSBjaGVjayIpIGNvbXBpbGUgY29ycmVjdGx5CitldmVuIHdpdGhvdXQgImNvbmZpZ3VyZSAtLWVuYWJsZS1ibGtpZC1kZWJ1ZyIuCisKK0ZpeCBpYTY0IGNvcmUgZHVtcCBidWcgY2F1c2VkIGJ5IGUyZnNwcm9ncyBydW5uaW5nIGFmb3VsIG9mIEM5OSBzdHJpY3QKK3R5cGUgYWxpYXNpbmcgcnVsZXMgb24gbmV3ZXIgZ2NjIGNvbXBpbGVycy4gIChBZGRyZXNzZXMgUmVkIEhhdAorQnVnemlsbGEgIyMxNjExODMuKQorCitGaXggY29tX2VyciBsaWJyYXJ5IHRvIG1ha2UgaXQgbW9yZSBjb21wYXRpYmxlIHdpdGggcmVjZW50IGNoYW5nZXMKK21hZGUgdG8gdGhlIGNvbV9lcnIgbGlicmFyeSBpbiBNSVQgS2VyYmVyb3MgVjUgdmVyc2lvbiAxLjQuCisoQWRkcmVzc2VzIFNvdXJjZWZyb2dlIEJ1ZyAjMTE1MDE0NikKKworR2VuZXJhbCBjbGVhbnVwIG9mIG1lc3NhZ2VzIHByaW50ZWQgYnkgZTJmc3Byb2dzIHByb2dyYW1zIGZvciBncmFtbWFyLAorY29uc2lzdGVuY3ksIGFuZCB0byBtYWtlIGxpZmUgZWFzaWVyIGZvciB0cmFuc2xhdG9ycy4gIEZpeGVkIGEgZmV3CitzdHJpbmdzIGNvbnRhaW5pbmcgRW5nbGlzaCB0aGF0IGhhZCBub3QgYmVlbiBtYXJrZWQgYXMgbmVlZGluZwordHJhbnNsYXRpb25zLiAgUmVtb3ZlZCBzdHJpbmdzIHRoYXQgZG8gbm90IG5lZWQgdG8gYmUgdHJhbnNsYXRlZCwgdG8KK21ha2UgbGlmZSBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLgorCitNa2UyZnMgYW5kIGJhZGJsb2NrcyB3aWxsIHRha2UgYWR2YW50YWdlIG9mIGEgZmVhdHVyZSBpbiBMaW51eCAyLjYgdG8KK3Rlc3QgdG8gc2VlIGlmIGEgZGV2aWNlIGFwcGVhcnMgdG8gYmUgaW4gdXNlIGluc3RlYWQgb2YganVzdCByZWx5aW5nCitvbiAvcHJvYy9tb3VudHMgYW5kIC9ldGMvbXRhYi4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMzA4NTk0KS4KKworRml4IHBvcnRhYmlsaXR5IHByb2JsZW0gaW4gdGhlIGZpbGVmcmFnIHByb2dyYW0gYWZmZWN0aW5nIHBsYXRmb3Jtcword2hlcmUgdGhlIHNpemUgb2YgYW4gaW50ZWdlciBpcyBzbWFsbGVyIHRoYW4gdGhlIHNpemUgb2YgYSBsb25nLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMzMDk2NTUpCisKK01rZTJmcyB3aWxsIG5vdyB1c2UgYSBsYXJnZXIgam91cm5hbCBieSBkZWZhdWx0IGZvciBmaWxlc3lzdGVtcworZ3JlYXRlciB0aGFuIDRHQi4gICgxMjggTUIgaW5zdGVhZCBvZiAzMk1CKS4KKworTWtlMmZzIHdpbGwgcmVmdXNlIHRvIGNyZWF0ZSBmaWxlc3lzdGVtcyBncmVhdGVyIHRoYW4gMioqMzEtMSBibG9ja3MsCit1bmxlc3MgZm9yY2VkLiAgVGhpcyBpcyB0byBhdm9pZCBzaWduZWQgdnMuIHVuc2lnbmVkIGtlcm5lbCBidWdzIGluCitibG9jayBudW1iZXJzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBmaXhlZC4KKworVGhlIGJsa2lkIHByb2dyYW0gaGFzIGEgbmV3IG9wdGlvbiB3aGljaCB3aWxsIG1vcmUgZWZmaWNpZW50bHkgc2VhcmNoCitmb3IgZGV2aWNlIHdoZW4gaXQgaXMga25vd24gKG9yIGV4cGVjdGVkKSB0aGF0IG9ubHkgb25lIG1hdGNoaW5nCitkZXZpY2Ugd2lsbCBiZSBmb3VuZCBpbiB0aGUgc3lzdGVtLCBzdWNoIGFzIHdoZW4gZG9pbmcgYSBsb29rdXAgYnkKK1VVSUQuCisKK0RlYmlhbidzIGUyZnNwcm9ncy1zcGVjaWZpYyBpbml0cmQgZnJhZ21lbnQgd2lsbCBhdm9pZCBpbmNsdWRpbmcKK3VubmVjZXNzYXJ5IGxpYnJhcmllcyBpbnRvIHRoZSBpbml0cmQgcmFtZGlzayBieSB1bnNldHRpbmcgTERfUFJFTE9BRAorYW5kIExEX0xJQlJBUllfUEFUSCwgYW5kIGZpbHRlcmluZyBvdXQgbGlicmFyaWVzIGZvdW5kIGluCisvZXRjL2xkLnNvLnByZWxvYWQuICAoQWRkcmVzc2VzIERlYmlhbiBCdWc6ICMzMDQwMDMpCisKK0ZpeGVkIGEgcG90ZW50aWFsIHBvcnRhYmlsaXR5IGlzc3VlIGluIHRoZSBibGtpZCBwcm9ncmFtcyBmb3IKK2FyY2hpdGVjdHVyZXMgd2hlcmUgdGhlIGNoYXIgdHlwZSBpcyB1bnNpZ25lZC4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UKK0J1ZzogIzExODA1ODUpCisKK0ZpeCBhIGJ1ZyBpbiBmaWxlZnJhZyBzbyB0aGF0IGl0IGRvZXNuJ3QgZmFsc2VseSBjb3VudCBhbiBleHRyYQorZGlzY29udGludWl0eSB3aGVuIHRoZSBmaXJzdCBibG9jayBmb3VuZCBpcyBhbiBpbmRpcmVjdCBibG9jay4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMzA3NjA3KS4KKworRml4IGJsa2lkJ3MgcmVjb2duaXRpb24gb2YgY3JhbWZzIGZpbGVzeXN0ZW1zLCBhbmQgZW5oYW5jZSBpdCB0byBiZQorYWJsZSB0byBoYW5kbGUgY3JhbWZzIGxhYmVscy4KKworRml4IGRlYnVnZnMncyBzdGF0IGNvbW1hbmQgdG8gbm90IGNvcmUgZHVtcCB3aGVuIGEgZmlsZXN5c3RlbSBpcyBub3QKK29wZW4uCisKK0ZpeCBlMmZzY2sncyBoYW5kbGluZyBvZiBlcnJvciBjb25kaXRpb25zIGNhdXNlZCBieSB0aGUgcmVzaXplIGlub2RlCitjbGFpbWluZyBibG9ja3MgdGhhdCBhcmUgYWxzbyB1c2VkIGJ5IG90aGVyIGlub2RlcywgYSBmaWxlc3lzdGVtCitjb3JydXB0aW9uIHdoaWNoIHdhcyBjb21tb25seSBjYXVzZWQgYnkgYSBidWcgaW4gRmVkb3JhIENvcmUgMydzCityZXNpemUyZnMgcHJvZ3JhbS4KKworRml4ZWQgYnVnIGluIGZpbGVmcmFnIHdoaWNoIGNhdXNlZCBpdCB0byBmYWlsIG9uIG5vbi1leHQyLzMKK2ZpbGVzeXN0ZW1zLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjMzAzNTA5KQorCitJZiB0aGUgc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaW5kaWNhdGVzIHRoYXQgdGhlIHN5c3RlbSBjbG9jayBtYXkKK25vdCBiZSBhY2N1cmF0ZSwgdGhlbiBlMmZzY2sgd2lsbCBvbWl0IGNoZWNraW5nIGlub2RlcycgZGVsZXRpb24gdGltZQorZmllbGQgZm9yIGluZGljYXRpb25zIG9mIGEgcG90ZW50aWFsIGNvcnJ1cHRlZCBvcnBoYW5lZCBpbm9kZSBsaXN0LgorKFByZXZpb3VzbHkgZTJmc2NrIG9ubHkgb21taXRlZCB0aGVzZSBMT1dfRFRJTUUgY2hlY2tzIHdoZW4gdGhlCitzdXBlcmJsb2NrJ3MgbGFzdCB3cml0ZSB0aW1lIGxvb2tlZCBpbnNhbmUuKQorCitGaXhlZCBhIElBNjQgY29yZSBkdW1wIGJ1ZyBpbiB0aGUgZTJwIGxpYnJhcnkgd2hpY2ggYWZmZWN0ZWQgZHVtcGUyZnMuCisoQWRkcmVzc2VzIERlYmlhbiBidWcgIzMwMjIwMCkKKworTWFrZSB0aGUgYmxraWQgbGlicmFyeSBtb3JlIHBhcmFub2lkIGFib3V0IGJlaW5nIHJ1biBmcm9tIHNldGdpZAorcHJvZ3JhbXMsIGFuZCB0byB1c2UgX19zZWN1cmVfZ2V0ZW52KCkgZnJvbSBsaWJjIGlmIGl0IGlzIGF2YWlsYWJsZS4KKworRml4ZWQgc3BlbGxpbmcgbWlzdGFrZXMsIHR5cG9zLCBhbmQgb3RoZXJ3aXNlIGNsYXJpZmllZCBtYW4gcGFnZXMuCisoQWRkcmVzc2VzIERlYmlhbiBCdWdzOiAjMzA0NTkxLCAjMzA0NTkyLCAjMzA0NTk0LCAjMzA0NTk3LCAjMzA0NTkzCithbmQgU291cmNlZm9yZ2UgQnVnOiAjMTE4OTgwMykKKworVXBkYXRlZCBhbmQgZml4ZWQgdHJhbnNsYXRpb25zLgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIC0tLSBzZWUgZGViaWFuL2NoYW5nZWxvZyBmb3IKK2RldGFpbHMuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRXh0MmZzX3NldF9iaXQoKSwgZXh0MmZzX2NsZWFyX2JpdCgpLCBhbmQgZXh0MmZzX3Rlc3RfYml0KCBoYXZlIGJlZW4KK2NoYW5nZWQgdG8gdGFrZSBhbiB1bnNpZ25lZCBpbnQgZm9yIHRoZSBiaXQgbnVtYmVyLiAgTmVnYXRpdmUgYml0CitudW1iZXJzIHdlcmUgbmV2ZXIgYWxsb3dlZCAoYW5kIGRpZG4ndCBtYWtlIGFueSBzZW5zZSksIHNvIHRoaXMgc2hvdWxkCitiZSBhIHNhZmUgY2hhbmdlLiAgVGhpcyBpcyBuZWVkZWQgdG8gYWxsb3cgc2FmZSB1c2Ugb2YgYmxvY2sgbnVtYmVycworZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDIqKjMxLgorCitUaGUgY29tcGlsZV9ldCBwcm9ncmFtIHdpbGwgYXZvaWQgcmVjcmVhdGluZyBnZW5lcmF0ZWQgZm9vX2Vyci5jIGFuZAorZm9vX2Vyci5oIGZpbGVzIGlmIG5vIGNoYW5nZXMgYXJlIG5lY2Vzc2FyeS4gIFRoZSBjb21waWxlX2V0IHByb2dyYW0KK3dpbGwgYWxzbyBhdG9taWNhbGx5IHJlcGxhY2UgdGhlc2UgZmlsZXMgdG8gYXZvaWQgYSBwb3RlbnRpYWwgcGFyYWxsZWwKK2J1aWxkIHJhY2UgcHJvYmxlbSBvbiBTTVAgc3lzdGVtcy4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOgorIzExNTc5MzMpCisKK0FkZGVkIGEgbmV3IGZ1bmN0aW9uIHRvIHRoZSBibGtpZCBsaWJyYXJ5LCBibGtpZF9wcm9iZV9hbGxfbmV3KCksCit3aGljaCBvbmx5IHByb2JlcyBuZXdseSBhZGRlZCBkaXNrIGRldmljZXMsIGFuZCBjaGFuZ2UKK2Jsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnKCkgdG8gdXNlIHRoaXMgZnVuY3Rpb24gc28gdGhhdCB3aGVuIGEKK3JlcXVlc3RlZCB0YWcgaXMgbm90IGZvdW5kLCBkZXZpY2VzIHRoYXQgd2VyZSBwcmV2aW91c2x5IG5vdCBjaGVja2VkCithcmUgc2VhcmNoZWQgYmVmb3JlIHNlYXJjaGluZyBhbGwgZGV2aWNlcyBpbiB0aGUgc3lzdGVtLgorCitBZGRlZCBuZXcgZnVuY3Rpb25zIHRvIHRoZSBibGtpZCBsaWJyYXJ5LCBibGtpZF9kZXZfc2V0X3NlYXJjaCgpIGFuZAorYmxraWRfZGV2X2hhc190YWcoKS4KKworRTJmc2NrJ3MgcHJvYmxlbSBzdHJpbmdzIGNhbiBub3cgdXNlIEBtIGFuZCBAbiBhcyBhYmJyZXZhdGlvbnMgZm9yCisibXVsdGlwbHktY2xhaW1lZCIgYW5kICJpbnZhbGlkIiwgcmVzcGVjdGl2ZWx5LgorCitUaGUgZTJmc3Byb2cucG90IGZpbGUgbm93IGhhcyBhbiBleHBsYW5hdGlvbiBvZiBob3cgdGhlIEAtZXhwYW5zaW9uCithbmQgJS1leHBhbnNpb24gd29ya3MsIGFuZCBzdHJpbmdzIGluIGUyZnNjay9wcm9ibGVtLmMgd2hpY2ggY29udGFpbiBACitjaGFyYWN0ZXJzIG5vdyBoYXZlIGNvbW1lbnRzIGluIGUyZnNwcm9ncy5wb3Qgd2l0aCB0aGUgQC1leHBhbnNpb24gdG8KK21ha2UgbGlmZSBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLgorCitGaXhlZCBtaXNzaW5nIHJldHVybiB2YWx1ZXMgaW4gdGhlIGV4dDJmcyBsaWJyYXJ5IHdoaWNoIGNvdWxkIGNhdXNlIGl0Cit0byByZXR1cm4gcmFuZG9tIGdhcmJhZ2UgaW4gY2VydGFpbiBlcnJvciBjb25kaXRpb25zLgorCitBbGxvdyB0aGUgY3VycmVudCB0aW1lIHRvIGJlIG92ZXJyaWRlbiB2aWEgdGhlIEUyRlNDS19USU1FIGVudmlyb25tZW50Cit2YXJpYWJsZSBmb3IgdXNlIGluIHJlZ3Jlc3Npb24gdGVzdHMuCisKK1RoZSB0ZXN0IHNjcnBpdCBkcml2ZXIgcHJvZ3JhbSBub3cgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIHN0YXR1cyBpZgordGhlcmUgYW55IG9mIGl0cyB0ZXN0IHRoYXQgaXQgcmFuIGZhaWxlZC4KKworRml4ZWQgcHJvYmxlbXMgd2l0aCBwYXJhYnVpbGRzIG9uIFNNUCBzeXN0ZW1zLiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZQorQnVnOiAjMTE1NzkzMykKKworRml4ZWQgIm1ha2UgY2hlY2siIHNvIHRoYXQgaXQgY29tcGlsZXMgY29ycmVjdGx5IGV2ZW4gd2hlbiBlMmZzcHJvZ3MnCitoZWFkZXIgZmlsZXMgaGF2ZSBub3QgYmUgaW5zdGFsbGVkIGluIHRoZSBzeXN0ZW0gaW5jbHVkZSBkaXJlY3Rvcmllcy4KKyhBZGRyZXNzZXMgU291cmNlZm9yZ2UgQnVnOiAjMTE4MDU3MikKKworRml4ZWQgZ2NjIC1XYWxsIG5pdHMuCisKKworRTJmc3Byb2dzIDEuMzcgKE1hcmNoIDIxLCAyMDA1KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZGQgc3VwcG9ydCBmb3IgY2hlY2tpbmcgdGhlIHZhbGlkaXR5IG9mIEV4dGVuZGVkIEF0dHJpYnV0ZXMgc3RvcmVkIGluCitpbm9kZXMgdG8gZTJmc2NrLgorCitBZGQgc3VwcG9ydCBmb3IgZHVtcGluZyB0aGUgY29udGVudHMgb2YgbGFyZ2UgaW5vZGVzIHRvIGRlYnVnZnMsCitpbmNsdWRpbmcgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgc3RvcmVkIGluIGlub2Rlcy4KKworRml4IG1rZTJmcywgZTJmc2NrLCBkZWJ1Z2ZzLCBhbmQgdGhlIGV4dDJmc19ta2RpciBmdW5jdGlvbiBzbyB0aGF0Cit3aGVuIHdlIGNyZWF0ZSBhIG5ldyBpbm9kZSB3ZSBtYWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgaW5mb3JtYXRpb24gaW4KK3RoZSBpbm9kZSAoYW55IGV4dHJhIGZpZWxkcyBpbiBhIGxhcmdlIGlub2RlIGFuZCBhbnkgZWEtaW4taW5vZGUKK2luZm9ybWF0aW9uKSBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkuICBUaGlzIGNhbiB0YWtlIHBsYWNlIHdoZW4KK21rZTJmcyBjcmVhdGVzIHRoZSByb290IGFuZCBsb3N0K2ZvdW5kIGRpcmVjdG9yeSwgd2hlbiBlMmZzY2sgY3JlYXRlcworYSBuZXcgcm9vdCBpbm9kZSBvciBhIG5ldyBsb3N0K2ZvdW5kIGRpcmVjdG9yeSwgYW5kIHdoZW4gdGhlIHVzZXIgdXNlcwordGhlIGRlYnVnZnMgd3JpdGUsIG1rbm9kLCBvciBta2RpciBjb21tYW5kcy4gIE90aGVyd2lzZSwgdGhlIG5ld2x5CitjcmVhdGUgaW5vZGUgY291bGQgaW5oZXJpdCBnYXJiYWdlIChvciBvbGQgRUEgaW5mb3JtYXRpb24pIGZyb20gYQorcHJldmlvdXNseSBkZWxldGVkIGlub2RlLgorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgc28gaXQgd291bGQgbm90aWNlIGlmIGEgZmlsZSB3aXRoIGFuIGV4dGVuZGVkCithdHRyaWJ1dGUgYmxvY2sgd2FzIGV4YWN0bHkgMioqMzIgYmxvY2tzLCBzdWNoIHRoYXQgaV9ibG9ja3Mgd3JhcHBlZAordG8gemVyby4KKworQWRkZWQgc3VwcG9ydCB0byBmaWxlZnJhZyB0byBkZXRlY3QgZmlsZXMgd2hpY2ggYXJlIHVzaW5nIHRoZSBuZXcKK2V4cGVyaW1lbnRhbCBmaWxlIGV4dGVudHMgZm9ybWF0LCBhbmQgdXNlIHRoZSBub24tZXh0MiBhbGdvcml0aG0gaW4KK3RoYXQgY2FzZS4gIEZpeGVkIGEgYnVnIHRvIGF2b2lkIHJlcG9ydGluZyBhIGZhbHNlIGRpc2NvbnRpbnVpdHkgaWYKK3RoZXJlIGlzIG9uZSBvciBtb3JlIHVuYWxsb2NhdGVkIGJsb2NrcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgZmlsZS4KKworRHVwbGljYXRlZCBhIGNoZWNrIGZvciBub3RpY2luZyB3aGV0aGVyIG9yIG5vdCB0aGUgbnVtYmVyIG9mIGJsb2NrcworKGdpdmVuIGEgY2VydGFpbiBibG9ja3NpemUpIGlzIGdyZWF0ZXIgdGhhbiAyKiozMiB3aGVuIHRoZQorQkxLR0VUU0laRTY0IGlvY3RsIGlzIG5vdCBhdmFpbGFibGUgdG8gZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZSgpLiAgVGhpcworYWxsb3dzIG1rZTJmcyB0byBhdXRvbWF0aWNhbGx5IHVzZSBhIGxhcmdlciBibG9ja3NpemUgd2hlbiBjcmVhdGluZyBhCitmaWxlc3lzdGVtIG9uIGEgdmVyeSBsYXJnZSBkZXZpY2Ugd2hlbiBydW4gb24gc3lzdGVtcyB0aGF0IGRvIG5vdAorc3VwcG9ydCBCTEtHRVRTSVpFNjQuCisKK0ZpeCB0aGUgSTE4TiBidWlsZCB3aGljaCB3YXMgYnJva2VuIGluIGUyZnNwcm9ncyAxLjM2IGJlY2F1c2UgdGhlCitidWlsZCBzeXN0ZW0gaGFkIGJlZW4gc3dpdGNoZWQgdG8gdHJlYXQgdGhlIC5nbW8gZmlsZXMgYXMgc2hpcHBlZAorZmlsZXMgKGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHN5c3RlbXMgdGhhdCBoYXZlIG9sZGVyIEdOVQorSTE4TiB0b29scyBpbnN0YWxsZWQpLCBidXQgdGhlIGdlbl90YXJiYWxsLmluIHNjcmlwdCB3YXMgc3RpbGwKK3JlbW92aW5nIHRoZSAuZ21vIGZpbGVzIGZyb20gdGhlIG9mZmljaWFsIHNvdXJjZSBkaXN0cmlidXRpb24uCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgLS0tIHNlZSBkZWJpYW4vY2hhbmdlbG9nIGZvcgorZGV0YWlscy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1Z3MgIyMyOTY3NjksICMyOTkzNDEpCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkZWQgbmV3IGZ1bmN0aW9ucyB0byB0aGUgZTJwIGxpYnJhcnkgd2hpY2ggY29udmVydCBiZXR3ZWVuIGEgc3RyaW5nCithbmQgb3NfdHlwZTogZTJwX29zMnN0cmluZygpIGFuZCBlMnBfc3RyaW5nMm9zKCksIGFuZCB1c2VkIHRoZW0gdG8KK21ha2UgdGhlIGdlbmVyYXRlZCBiaW5hcmllcyBtb3JlIGNvbXBhY3QuCisKK0ZpeGVkIGEgY29tcGlsZS10aW1lIGVycm9yIG9uIERhcndpbiBzeXN0ZW1zLgorCitDbGVhbmVkIHVwIHRoZSBsaWIvZXh0MmZzIE1ha2VmaWxlIHNsaWdodGx5LgorCisKK0UyZnNwcm9ncyAxLjM2IChGZWJydWFyeSA0LCAyMDA1KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FsbCBvZiB0aGUgcGF0Y2hlcyB0aGF0IHdlcmUgYXBwbGllZCB0byBGZWRvcmUgQ29yZSAzJ3MKK2UyZnNwcm9ncy0xLjM1LTExLjIgaGF2ZSBiZWVuIGludGVncmF0ZWQsIGFsdGhvdWdoIHNvbWV0aW1lcyB3aXRoIGEKK2xvdCBvZiBidWcgZml4ZXMgZmlyc3QuICBVc2VycyBvZiBGZWRvcmEgQ29yZSAzIGFyZSBzdHJvbmdseQorZW5jb3VyYWdlZCB0byB1cGdyYWRlIHRvIGUyZnNwcm9ncyAxLjM2IGFzIHNvb24gYXMgcG9zc2libGUuCisKK0FkZCBzdXBwb3J0IGZvciBmaWxlc3lzdGVtIHdpdGggdGhlIG9ubGluZSByZXNpemluZyB2aWEgcmVzaXplIGlub2RlCitmZWF0dXJlLiAgRml4ZWQgbnVtZXJvdXMgYnVncyBmcm9tIHRoZSBGZWRvcmEgcGF0Y2hlcy4gIFRoZSBGZWRvcmEKK3BhdGNoZXMgYWxzbyBkaWRuJ3QgYm90aGVyIHRvIGRvIGFueSBjb25zaXN0ZW5jeSBjaGVja2luZyBvbiB0aGUKK3Jlc2l6ZSBpbm9kZSwgb3IgYWRkIGFueSB0ZXN0cyB0byB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLiAgVGhlICItUgorcmVzaXplPTRnIiBvcHRpb24gdG8gbWtlMmZzIHdhcyBhIG5vLW9wIGluIHRoZSBGZWRvcmEgcGF0Y2hlcywgZGVzcGl0ZQorYmVpbmcgbGlzdGVkIGluIG1rZTJmcydzIHVzYWdlIG1lc3NhZ2UuICBBbGwgb2YgdGhlc2Ugc2hvcnRjb21pbmdzCitoYXZlIGJlZW4gY29ycmVjdGVkLgorCitFMmZzY2sgY2FuIGFsc28gYWxzbyBmaXggZmlsZXN5c3RlbXMgdHJhc2hlZCBieSBGZWRvcmEncyByZXNpemUyZnMKK3Byb2dyYW0uICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGUgdXNlciBtdXN0IHJ1biB0aGUgY29tbWFuZHM6CisKKwlkZWJ1Z2ZzIC13IC9kZXYvaGRYWFggLVIgImZlYXR1cmVzIF5yZXNpemVfaW5vZGUiCisgICAgICAgIGUyZnNjayAtZiAvZGV2L2hkWFhYCisKK09wdGlvbmFsbHksIHRoZSBleHQycHJlcGFyZSBjb21tYW5kIGNhbiBiZSB1c2VkIHRvIHJlLWVuYWJsZSBvbmxpbmUKK3Jlc2l6aW5nIGFmdGVyIHRoZSBmaWxlc3lzdGVtIGhhcyBiZWVuIGZpeGVkLgorCitUaGUgZnNjayBwcm9ncmFtIHdpbGwgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBmaWxlZGVzY3JpcHRvciBhcmd1bWVudAordG8gdGhlIC1DIG9wdGlvbi4gIChUaGUgRmVkb3JhIHZlcnNpb24gb2YgdGhpcyBwYXRjaCB3b3VsZCBzb21ldGltZXMKK2NhdXNlIGZzY2sgdG8gaWdub3JlIGEgcGFyYW1ldGVyIG9uIGZzY2sncyBjb21tYW5kIGxpbmUgaW4gc29tZSByYXJlCitjYXNlcywgc2lnaC4pCisKK01ha2Ugc3VyZSBlMmZzcHJvZ3MgZG9lc24ndCB3cml0ZSBnYXJiYWdlIGludG8gdGhlIHJlc2VydmVkIHBvcnRpb24gb2YKK2xhcmdlIGlub2Rlcy4KKworTWFrZSBzdXJlIHJlc2l6ZTJmcyByZWxlYXNlcyB0aGUgYmxvY2tzIGJlbG9uZ2luZyB0byB0aGUgb2xkIGlub2RlCit0YWJsZSBibG9ja3Mgd2hlbiBtb3ZpbmcgdGhlIGlub2RlIHRhYmxlLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOgorIzI5MDg5NCkKKworU2tpcCB0aGUgcl9yZXNpemVfaW5vZGUgdGVzdCBpZiByZXNpemUyZnMgaXMgbm90IGNvbXBpbGVkIChkdWUgdG8KK2NvbmZpZ3VyZSAtLWRpc2FibGUtcmVzaXplcikKKworRTJmc2NrIG5vdyBjaGVja3MgdGhlIHN1bW1hcnkgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uLCBhbmQKK2lmIGFueSBvZiB0aGUgaW5mb3JtYXRpb24gaXMgb2J2aW91c2x5IHdyb25nLCBpdCB3aWxsIGZvcmNlIGEgZnVsbAorZmlsZXN5c3RlbSBjaGVjay4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMjkxNTcxKQorCitGaXggZTJmc2NrIHRvIG5vdCBjb21wbGFpbiB3aGVuIHRoZSByZXNpemVfaW5vZGUgZmVhdHVyZSBpcyBlbmFibGVkLAorc19yZXNlcnZlZF9nZHRfYmxvY2tzIGlzIHplcm8sIGFuZCB0aGVyZSBpcyBubyBESU5EIGJsb2NrIGFsbG9jYXRlZCBpbgordGhlIHJlc2l6ZSBpbm9kZS4KKworRml4IGUyZnNjayB0byBub3RlIGRlbGV0ZSBzeW1saW5rcyB0aGF0IGNvbnRhaW4gYW4gZXh0ZW5kZWQgYXR0cmlidXRlCithZnRlciB0aGUgZXh0X2F0dHIgZmVhdHVyZSBmbGFnIGhhcyBiZWVuIGNsZWFyZWQuICAoQWRkcmVzc2VzIFJlZCBIYXQKK0J1Z3ppbGxhICMxNDYyODQpLgorCitBZGQgbmV3IHV0aWxpdHkgcHJvZ3JhbSwgY29weV9zcGFyc2UuYywgd2hpY2ggaXMgdmVyeSB1c2VmdWwKK2ZvciBkZWFsaW5nIHdpdGggbGFyZ2Ugc3BhcnNlIGZpbGVzIChzdWNoIGFzIGUyaW1hZ2UgZmlsZXMpLgorCitBZGQgc3VwcG9ydCBmb3Igam5sX2Jsb2Nrc1tdIGZvciBkZWJ1Z2ZzJ3Mgc2V0X3N1cGVyX3ZhbHVlLgorCitGaXggZmlsZWZyYWcgc28gdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkgd2l0aCBzcGFyc2UgZmlsZXMuCisKK0ZpbGVmcmFnIC12IHdpbGwgcHJpbnQgZmlyc3QgYW5kIGxhc3QgYmxvY2tzLgorCitBZGQgaW50ZXJwcmV0YXRpb24gb2YgT1MgQ3JlYXRvciB2YWx1ZXMgZm9yIEZyZWVCU0QgYW5kIExpdGVzIGluIG1rZTJmcworYW5kIGR1bXBlMmZzLgorCitBZGQgbWtlMmZzIHN1cHBvcnQgc28gdGhhdCBpdCBjYW4gc3VwcG9ydCBmaWxlc3lzdGVtcyBsYXJnZXIgdGhhbiA0VEIKK2F1dG9tYXRpY2FsbHksIGJ5IHJldHJ5aW5nIHdpdGggYSA0ayBibG9ja3NpemUgaWYgdGhlIGRldmljZSBzaXplIGlzCit0b28gYmlnIHRvIGJlIGV4cHJlc3NlZCB1c2luZyBhIDFrIGJsb2Nrc2l6ZS4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UKK2J1ZyAjMTEwNjYzMSkKKworQ2hhbmdlIGJsa2lkIHRvIHRlc3QgZm9yIE5URlMgZmlyc3QgYmVjYXVzZSBXaW5kb3dzIHNvbWV0aW1lcyBkb2Vzbid0CitjbGVhciBlbm91Z2ggb2YgdGhlIHBhcml0aW9uIHRvIGNvbmZ1c2UgdGhlIHByb2Jpbmcgcm91dGluZXMgaW50bwordGhpbmtpbmcgdGhlIG9sZCBmaWxlc3lzdGVtIHR5cGUgaXMgc3RpbGwgdmFsaWQuICAoQWRkcmVzc2VzIERlYmlhbgorQnVnICMyOTE5OTApCisKK0FkZCBzdXBwb3J0IGZvciBzd2FwIHBhcnRpdGlvbiBsYWJlbCBhbmQgdXVpZCdzIGluIHRoZSBibGtpZCBsaWJyYXJ5LgorCitBZGQgc3VwcG9ydCB0byB0aGUgYmxraWQgbGlicmFyeSB0byByZWNvZ25pemUgT3JhY2xlIEFTTSB2b2x1bWVzLgorCitNYWtlIGJsa2lkIC10IGRpc3BsYXkgYWxsIGRldmljZXMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIGNyaXRlcmlhLAorbm90IGp1c3QgdGhlIGZpcnN0IG9uZSwgYW5kIHdvcmsgbW9yZSBjb25zaXN0ZW50bHkgd2hlbiB0aGUgYmxraWQKK2NhY2hlIGZpbGUgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQgdG8gL2Rldi9udWxsLiAgKEFkZHJlc3NlcyBEZWJpYW4KK0J1ZyAjMjkwNTMwIGFuZCAjMjkyNDI1KQorCitCYWRibG9ja3Mgd2lsbCBub3cgY29ycmVjdGx5IGRpc3BsYXkgYmxvY2sgbnVtYmVycyBncmVhdGVyIHRoYW4KKzk5OSw5OTksOTk5IGluIGl0cyBwcm9ncmVzcyBkaXNwbGF5LgorCitUaGUgdHVuZTJmcyBwcm9ncmFtIHdpbGwgbm90IGFsbG93IHRoZSB1c2VyIGZyb20gc2V0dGluZyBhIHJpZGljdWxvdXMKK251bWJlciBvZiByZXNlcnZlZCBibG9ja3Mgd2hpY2ggd291bGQgY2F1c2UgZTJmc2NrIHRvIGFzc3VtZSB0aGUKK3N1cGVyYmxvY2sgd2FzIGNvcnJ1cHQuICBFMmZzY2sncyBzdGFuZGFyZHMgZm9yIHdoYXQgaXMgYSByaWRpY3Vsb3VzCitudW1iZXIgb2YgcmVzZXJ2ZWQgYmxvY2sgaGFzIGFsc28gYmVlbiByZWxheGVkIHRvIDUwJSBvZiB0aGUgYmxvY2tzIGluCit0aGUgZmlsZXN5c3RlbS4KKworVGhlIGJsa2lkIGxpYnJhcnkgd2lsbCByZXR1cm4gdmZhdCBpbiBwcmVmZXJlbmNlIHRvIG1zZG9zLCBhbmQgZXh0MyBpbgorcHJlZmVyZW5jZSB0byBleHQyIChpZiB0aGUgam91cm5hbGxpbmcgZmxhZyBpcyBzZXQpIHNvIHRoYXQgbW91bnQgd2lsbAorZG8gdGhlIHJpZ2h0IHRoaW5nLiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMyODc0NTUpCisgIAorTWtlMmZzIHdpbGwgbm93IHVzZSB0aGUgLUUgb3B0aW9uIGZvciBleHRlbmRlZCBvcHRpb25zOyB0aGUgb2xkIC1SCisocmFpZCBvcHRpb25zKSBvcHRpb24gaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorRml4IGEgZG91YmxlLWZyZWUgcHJvYmxlbSBpbiByZXNpemUyZnMuICAoUmVkIEhhdCBCdWd6aWxsYSAjMTMyNzA3KQorCitNa2UyZnMgd2lsbCBub3cgYWNjZXB0IGEgc2l6ZSBpbiBtZWdhYnl0ZXMsIGdpZ2FieXRlcywgYW5kIG90aGVyIHVuaXRzCisodmlhICIzMm0iIG9yICI0ZyIgb24gdGhlIGNvbW1hbmQgbGluZSkgaWYgdGhlIHVzZXIgZmluZHMgdGhpcyBtb3JlCitjb252ZW5pZW50IHRoYW4gc3BlY2lmeWluZyBhIGJsb2NrIGNvdW50LgorCitGaXggYW4gb2JzY3VyZSwgaGFyZC10byBmaW5kIGJ1ZyBpbiAiZTJmc2NrIC1TIiBjYXVzZWQgYnkgYW4gaW5vZGUKK2NhY2hlIGNvbmhlcmVuY3kgcHJvYmxlbS4KKworRGVidWdmcyBub3cgc3VwcG9ydHMgYSBuZXcgY29tbWFuZCwgc2V0X2lub2RlX2ZpZWxkLCB3aGljaCBhbGxvd3MgYQordXNlciB0byBtYW51YWxseSBzZXQgYSBzcGVjaWZpYyBpbm9kZSBmaWVsZCBtb3JlIGNvbnZlbmllbnRseSwgYXMgd2VsbAorYXMgc2V0IGVudHJpZXMgaW4gdGhlIGluZGlyZWN0IGJsb2NrIG1hcC4KKworRGVidWdmcydzIHNldF9zdXBlcl92YWx1ZSBjb21tYW5kIGhhcyBiZWVuIGVuaGFuY2VkIHNvIHRoYXQgdGhlIHVzZXIKK2NhbiBzZXQgbW9zdCBzdXBlcmJsb2NrIGZpZWxkcywgaW5jbHVkaW5nIHRoZSBkYXRlL3RpbWUgZmllbGRzIGFuZAorc29tZSBvZiB0aGUgbW9yZSBuZXdzbHkgYWRkZWQgc3VwZXJibG9jayBmaWVsZHMuCisKK0UyZnNwcm9ncyBwcm9ncmFtcyBub3cgYWNjZXB0IGFuIG9mZnNldCB0byBiZSBwYXNzZWQgdG8gdGhlIGZpbGUKK3NwZWNpZmllcnMsIHZpYSB0aGUgc3ludGF4OiAiL3RtcC90ZXN0LmltZz9vZmZzZXQ9MTAyNCIuCisKK0UyZnNwcm9ncyBwcm9ncmFtcyB3aWxsIG5vdyBhY2NlcHQgYmxvY2tzaXplcyB1cCB0byA2NTUzNjsga2VybmVsCitzdXBwb3J0IG9uIHRoZSB4ODYgZG9lc24ndCBleGlzdCBmb3Igbm93LCBidXQgaXQgY2FuIGJlIHVzZWZ1bCBvbgorb3RoZXIgYXJjaGl0ZWN0dXJlcyB3aXRoIHBhZ2Ugc2l6ZXMgZ3JlYXRlciB0aGFuIDRrLiAgVGhlcmUgYXJlIDIuNgora2VybmVsIHBhdGNoZXMgb3V0IHRoZXJlIHdoaWNoIGVuYWJsZSB0aGlzLCBidXQgdGhleSBhcmUgb2YgdGhpcword3JpdGluZyBzdGlsbCBleHBlcmltZW50YWwuCisKK1RoZSBlMmltYWdlIGNvbW1hbmQgbm93IHRha2VzIHRoZSAtcyBvcHRpb24gd2hpY2ggd2lsbCBzY3JhbWJsZQorZGlyZWN0b3J5IGVudHJpZXMgZm9yIHJhdyBpbWFnZSBmaWxlcy4KKworRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIGZpbGVmcmFnIHByb2dyYW0uCisKK01ha2Ugc3VyZSBlMmZzY2sgZG9lc24ndCBjcmFzaCB3aGVuIC9wcm9jL2FjcGkvYWNfYWRhcHRlciBpcyBub3QKK3ByZXNlbnQuCisKK0ZpeCBidWcgaW4gZGVidWdmcyB3aGVyZSBraWxsX2ZpbGUgd291bGQgbGVhZCB0byBlcnJvcnMgd2hlbiBkZWxldGluZworZGV2aWNlcyBhbmQgc3ltbGlua3MuICAoU291cmNlZm9yZ2UgQnVncyAjOTU0NzQxIGFuZCAjOTU3MjQ0KQorCitGaXggYnVnIGluIHRoZSBibGtpZCBsaWJyYXJ5IHdoZW4gZGV0ZWN0aW5nIHRoZSBvY2ZzMSBmaWxlc3lzdGVtIAorCitSZW1vdmUgb2Jzb2xldGUgRVZNUyAxLnggYW5kIGEub3V0IERMTCBzdXBwb3J0LgorCitFMmZzY2sgd2lsbCBhdHRlbXB0IHRvIHJlY292ZXIgZnJvbSBhIGpvdXJuYWwgY29udGFpbmluZyBpbGxlZ2FsIGJsb2Nrcy4KKworRml4ZWQgdHdvIHBvdGVudGlhbCBvcmRlcmluZyBjb25zdHJhaW50IHByb2JsZW1zIGluIGUyZnNjayB3aGljaCBtaWdodAorY2F1c2UgdGhlIGZpbGVzeXN0ZW0gdG8gYmUgY29ycnVwdGVkIGlmIGUyZnNjayBpcyBpbnRlcnJ1cHRlZCBkdXJpbmcgYQorKGV4dHJlbWVseSBuYXJyb3cpIHJhY2Ugd2luZG93LiAgVGhhbmtzIHRvIEp1bmZlbmcgWWFuZyBmcm9tIHRoZQorU3RhbmZvcmQgTWV0YWNvbXBpbGF0aW9uIGdyb3VwIGZvciBwb2ludGluZyB0aGlzIG91dC4KKworRml4ZWQgYnVnIGluIGUyZnNjayB3aGVyZSBpdCB3b3VsZCBub3QgYWNjdXJhdGVseSBkZXRlY3Qgd2hldGhlciBvcgorbm90IHRoZSBzeXN0ZW0gaXMgcnVubmluZyBvbiBhZGFwdG9yIGlmIHRoZSBBQ1BJIGRldmljZSByZXByZXNlbnRpbmcKK3RoZSBBQyBhZGFwdGVyIGRpZG4ndCBjb3JyZXNwb25kIHRvIHRoZSB3aGF0IHdhcyB1c2VkIG9uIElCTQorVGhpbmtwYWRzLgorCitDaGFuZ2UgZTJmc2NrIHRvIGFjY2VwdCBkaXJlY3RvcmllcyBncmVhdGVyIHRoYW4gMzJNQi4KKworRml4IGUyZnNjayBzbyB0aGF0IGEgY2hlY2tpbnRlcnZhbCBvZiB6ZXJvIGRpc2FibGVzIGEgdGltZS1iYXNlZCBjaGVjaworb2YgdGhlIGZpbGVzeXN0ZW0uCisKK0RlYnVnZnMgd2lsbCBjaGVjayB0aGUgREVCVUdGU19QQUdFUiBlbnZpcm9tZW50IHZhcmlhYmxlIGluIHByZWZlcmVuY2UKK3RvIHRoZSBQQUdFUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMjM5NTQ3KQorCitUdW5lMmZzIHdpbGwgbm90IG1hcmsgcmV3cml0ZSB0aGUgc3VwZXJibG9jayBpZiB0aGUgZmVhdHVyZSBiaXRtYXNrcyAKK2FyZSBub3QgbW9kaWZpZWQuCisKK1RoZSBkZWJ1Z2ZzIHByb2dyYW0gd2lsbCBzZXQgdGhlIGZpbGV0eXBlIGluZm9ybWF0aW9uIHdoZW4gY3JlYXRpbmcgYQorbGluay4KKworQWRkIGRlYnVnZnMgLWQgb3B0aW9uIHRvIHVzZSBhIHNlcGFyYXRlIHNvdXJjZSBvZiBkYXRhIGJsb2NrcyB3aGVuCityZWFkaW5nIGZyb20gYW4gZTJpbWFnZSBmaWxlLgorCitBZGQgZTJpbWFnZSAtSSBvcHRpb24gd2hpY2ggYWxsb3dzIHRoZSBlMmltYWdlIG1ldGFkYXRhIHRvIGJlCitpbnN0YWxsZWQgaW50byBhIGZpbGVzeXN0ZW0uCisKK0ZpeGVkIGJ1ZyBpbiB0aGUgYmFkYmxvY2tzIHByb2dyYW0gd2hpY2ggY2F1c2VkICJkb25lIiB0byBhbHdheXMKK2FwcGVhciBpbiBlbmdsaXNoIGV2ZW4gd2hlbiBhIHRyYW5zbGF0aW9uIHdhcyBhdmFpbGFibGUuICAoQWRkcmVzc2VzCitEZWJpYW4gQnVnICMyNTI4MzYpCisKK1RoZSBibGtpZCBwcm9ncmFtIGhhcyBhIG5ldyBvcHRpb24gLW8gd2hpY2ggY29udHJvbHMgdGhlIG91dHB1dCBmb3JtYXQKK29mIHRoZSBibGtpZCBwcm9ncmFtOyB0aGlzIGlzIG1ha2VzIGJsa2lkIG1vcmUgY29udmVuaWVudCB0byB1c2UgaW4KK3NoZWxsIHNjcmlwdHMuCisKK0ZpeCBhIG1pbm9yIGJ1ZyBpbiB1dWlkIGxpYnJhcnksIHdoaWNoIHdhcyBub3QgdXNpbmcgdGhlIGZ1bGwgMTQgYml0cworb2YgY2xvY2sgc2VxdWVuY2Ugd2hlbiBnZW5lcmF0aW5nIFVVSUQncy4KKworRml4IGEgWTguODg4OEsgcHJvYmxlbSBpbiB0aGUgdXVpZCBsaWJyYXJ5LgorCitMb2dzYXZlIG5vdyBjcmVhdGVzIGEgbmV3IHNlc3Npb24gaWQgZm9yIGl0c2VsZiB0byBhdm9pZCBnZXR0aW5nCitraWxsZWQgYnkgaW5pdCB3aGFuIHRyYW5zaXRpb25pbmcgYmV0d2VlbiBpbml0IGxldmVscy4KKworQ2hhbmdlIHRoZSBsaWNlbnNpbmcgb2YgdGhlIFVVSUQgbGlicmFyeSB0byBiZSB0aGUgMy1jbGF1c2UgQlNELXN0eWxlCitsaWNlbnNlOyB0aGlzIGFsbG93cyBBcHBsZSB0byB1c2UgdGhlIHV1aWQgbGlicmFyeSBpbiBEYXJ3aW4uCisKK0FkZCBvY2ZzIGFuZCBvY2ZzMiBwcm9iZSBzdXBwb3J0IGludG8gdGhlIGJsa2lkIGxpYnJhcnkuCisKK0ZpeCBhIG1lbW9yeSBhbmQgZmlsZSBkZXNjcmlwdG9yIGxlYWsgaW4gdGhlIGJsa2lkIGxpYnJhcnkuCisKK1RoZSBibGtpZCBsaWJyYXJ5IHdpbGwgcmV2YWxpZGF0ZSB0aGUgZGV2aWNlIGlmIHRoZSBzeXN0ZW0gdGltZSBpcworZWFybGllciB0aGFuIGxhc3QgdmVyaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGRldmljZSwgc2luY2UgdGhhdAoraW5kaWNhdGVzIHRoYXQgdGhlIHN5c3RlbSB0aW1lIGlzIHByb2JhYmx5IG5vdHRydXN0d29ydGh5LgorCitUaGUgYmxraWQgbGlicmFyeSB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBibGtpZC50YWIKK2ZpbGUgYnkgdGhlIEJMS0lEX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUsIGlmIGl0IGlzIGF2YWlsYWJsZS4KKworQ2hhbmdlIHRoZSBnZXRzaXplIGZ1bmN0aW9ucyB0byB1c2UgdGhlIEJMS0dFVFNJWkU2NCBpb2N0bCBvbiBMaW51eCAyLjYuCisKK0FkZCB2YXJpb3VzIHBvcnRhYmlsaXR5IGZpeGVzIGZvciBsYW1lIG5ldyB2ZXJzaW9ucyBvZiBnbGliYywgRGFyd2luCithbmQgR05VL0tGcmVlQlNELCBhcyB3ZWxsIGFzIHJlbW92aW5nIFhTSTppc20ncy4gIChBZGRyZXNzZXMgRGViaWFuCitCdWdzICMyMzk5MzQsICMyNjQ2MzAsICMyNjkwNDQsICMyNTU1ODksICMyODkxMzMpCisKK0FkZCBzdXBwb3J0IGZvciBXaW5kb3dzIDl4L05UIHVuZGVyIEN5Z3dpbi4KKworVXBkYXRlZCBhbmQgY2xhcmlmaWVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVncyAjMjM2MzgzLAorCSMyNDE5NDAsICMyMzg3NDEsICMyNDI5OTUsICMyNTY2NjksICMyNjgxNDgsICMyNTY3NjAsICMyNzM2NzkpCisKK1VwZGF0ZWQgYW5kIGZpeGVkIHRyYW5zbGF0aW9ucy4gICAoQWRkcmVzc2VzIERlYmlhbiBidWdzICMyNDQxMDUsICMyNjI4MzYpCisKK1VwZGF0ZSB0aGUgcnBtIHNwZWMgZmlsZXMgc28gdGhhdCBpdCB3b3JrcyBiZXR0ZXIgd2l0aCBGZWRvcmEgY29yZSAyCithbmQgUkg5LgorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIChzZWUgZGViaWFuL2NoYW5nZWxvZykuICBJbgorcGFydGljdWxhciwgZml4ZWQgdGhlIERlYmlhbiBpbml0cmQgc2NyaXB0cy4gICgjMjQxMTgzLCAjMjQ4MDUwLAorIzI1MzU5NSwgIzI0Nzc3NSkKKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXhlZCB2YXJpb3VzIGdjYyAtV2FsbCB3YXJuaW5ncy4KKworVGhlIHV1aWQgbGlicmFyeSBub3cgaGFzIG5ldyBmdW5jdGlvbnMgdXVpZF91bnBhcnNlX3VwcGVyKCkgYW5kCit1dWlkX3VucGFyc2VfbG93ZXIoKSB3aGljaCBmb3JjZXMgdGhlIGNhc2Ugb2YgdGhlIGhleCBkaWdpdHMgdG8gYmUKK3VwcGVyIGNhc2UsIG9yIGxvd2VyIGNhc2UuCisKK1RoZSBidWlsZCBwcm9jZXNzIGhhcyBiZWVuIHNwZWVkZWQgdXAgYnkgZW5oYW5jaW5nIHRoZSBzdWJzdCBwcm9ncmFtCit0byB1cGRhdGUgdGhlIG1vZHRpbWUgb24gdGhlIGdlbmVyYXRlZCBmaWxlcyBldmVuIHdoZW4gdGhlIGdlbmVyYXRlZAorZmlsZSBoYXNuJ3QgY2hhbmdlZC4KKworVGhlIHV1aWQgbGlicmFyeSBub3cgdXNlcyBDOTkgc3RkaW50LmggdHlwZXMgaW5zdGVhZCBvZiBjdXN0b20gdHlwZXMuCisKK1VwZGF0ZWQgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIHdpdGggbmV3ZXIgdmVyc2lvbnMgZnJvbSB0aGUgRlNGLgorCitSZW1vdmVkIG91dCBvZiBkYXRlIC5jdnNpZ25vcmUgZmlsZXMgZnJvbSB0aGUgc291cmNlIGRpc3RyaWJ1dGlvbi4KKworVGhlIGV4dDJmc191bmxpbmsoKSBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBlcnJvciBpZiBib3RoIHRoZSBuYW1lIGFuZAoraW5vZGUgbnVtYmVyIGFyZSB1bnNwZWNpZmllZCwgdG8gYXZvaWQgZG9pbmcgc29tZXRoaW5nIHN1cnByaXNpbmcKKyhzdWNoIGFzIHVuY29uZGl0aW9uYWxseSBkZWxldGluZyB0aGUgZmlyc3QgZGlyZWN0b3J5IGVudHJ5KS4KK0RpcmVjdG9yeSBlbnRyaWVzIGFyZSBub3cgZGVsZXRlZCBieSBjb2FsZXNjaW5nIHRoZW0gd2l0aCB0aGUgcHJldmlvdXMKK2RpcmVjdG9yeSBlbnRyeSBpZiBwb3NzaWJsZSwgdG8gYXZvaWQgZGlyZWN0b3J5IGZyYWdtZW50YXRpb24uICBUaGlzCitpcyBub3QgYW4gaXNzdWUgd2l0aCB0aGUgZTJmc3Byb2dzIHN1aXRlLCBidXQgbWF5IGJlIGEgcHJvYmxlbSBmb3IKK3NvbWUgb2YgdGhlIHVzZXJzIG9mIGxpYmV4dDJmcywgc3VjaCBhcyBlMnRvb2xzLgorCitBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiBudW1iZXJzIG9mIHRoZSBmb3JtICIxLjM2LXJjMSIuCisKK0ZpeCBidWlsZCBvZiBta2UyZnMuc3RhdGljLgorCitBZGQgYmFzaWMgZXh0MmZzIGxpYnJhcnkgc3VwcG9ydCBmb3IgbGFyZ2UgKEVBIGluIGlub2RlKSBpbm9kZXMuCisKK1RoZSB0ZXN0X2lvIG1lY2hhbmlzbSBjYW4gbm93IGFib3J0IGFmdGVyIG4gcmVhZHMgb3Igd3JpdGVzIHRvIGEKK3BhcnRpY3VsYXIgYmxvY2suICBUaGUgYmxvY2sgaXMgc3BlY2lmaWVkIGJ5IFRFU1RfSU9fQkxPQ0sgZW52aXJvbm1lbnQKK3ZhcmlhYmxlLCBhbmQgdGhlIHJlYWQvd3JpdGUgY291bnQgYnkgdGhlIFRFU1RfSU9fUkVBRF9BQk9SVCBhbmQKK1RFU1RfSU9fV1JJVEVfQUJPUlQgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgVGhlIGJsb2NrIGRhdGEgaXMgbm93IG9ubHkKK2R1bXBlZCBpZiB0aGUgMHgxMCBiaXQgaXMgc2V0IGluIFRFU1RfSU9fRkxBR1MuCisKK1VVSURfREVGSU5FKCkgaW4gdGhlIHV1aWQgbGlicmFyeSBub3cgY3JlYXRlcyBhIHN0YXRpYyB2YXJpYWJsZSwgd2l0aAorX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIGlmIHdlIGFyZSB1c2luZyBHQ0MsIHNvIHRoYXQgVVVJRF9ERUZJTkUgY2FuCitiZSB1c2VkIGluIGhlYWRlciBmaWxlcy4KKworQWRkIHN1cHBvcnQgZm9yIHRoZSBpbnN0YWxsLXN0cmlwIGFuZCBpbnN0YWxsLXNobGlicy1zdHJpcCB0YXJnZXRzLCBhcworc3VnZ2VzdGVkIGJ5IHRoZSBHTlUgY29kaW5nIGd1aWVsaW5lcy4gICJtYWtlIGluc3RhbGwiIG5vIGxvbmdlcgorc3RyaXBzIHRoZSBiaW5hcmllcyB3aGljaCBhcmUgaW5zdGFsbGVkLgorCitSZW1vdmUgc3VwcG9ydCBmb3IgdGhlIC0tZW5hYmxlLW9sZC1iaXRvcHMgY29uZmlndXJlIG9wdGlvbiB3aGljaCB3YXMKK29ubHkgZm9yIHZlcnkgb2xkIHNwYXJjIHN5c3RlbXMuCisKK1JlbW92ZSBzdXBwb3J0IGZvciAtLWVuYWJsZS1jbGVhci1odHJlZTsgdGhpcyB3YXMgb25seSBuZWVkZWQgZHVyaW5nCit0aGUgZWFybHkgZGV2ZWxvcG1lbnQgb2YgdGhlIGh0cmVlIHBhdGNoLgorCitVc2UgTGludXgta2VybmVsLXN0eWxlIG1ha2VmaWxlIG91dHB1dCBzbyBpdCBpcyBlYXNpZXIgdG8gc2VlIGNvbXBpbGVyCit3YXJuaW5ncy4KKworVXBkYXRlIGdldHRleHQgZmlsZXMgdG8gdmVyc2lvbiAwLjE0LjEuCisKK1VwZGF0ZSB0byB1c2UgYXV0b2NvbmYgMi41eC4KKworSW1wcm92ZWQgc3VwcG9ydCBmb3IgY29tcGlsaW5nIGUyZnNwcm9ncyB1bmRlciBkaWV0bGliYy4KKworTWFrZSBlMmZzcHJvZ3MgcG9ydGFibGUgdG8gU29sYXJpcyBhbmQgRnJlZUJTRCBzeXN0ZW1zLgorCitBZGQgYmxraWRfdmVyaWZ5KCksIGJsa2lkX2dldF9saWJyYXJ5X3ZlcnNpb24oKSwgYW5kCitibGtpZF9wYXJzZV92ZXJzaW9uX3N0cmluZygpIGZ1bmN0aW9ucyB0byB0aGUgYmxraWQgbGlicmFyeS4KKworQWRkIHBrZy1jb25maWcgZmlsZXMgZm9yIGUyZnNwcm9ncydzIGxpYnJhcmllcy4KKworRml4ICJtYWtlIHVuaW5zdGFsbCIgdG8gc28gdGhhdCBpdCByZW1vdmVzIGV2ZXJ5dGhpbmcgdGhhdCBpcyBpbnN0YWxsZWQuCisKK0FkZCBhIGNvbmZpZ3VyZSAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgb3B0aW9uIHdoaWNoIGVuYWJsZXMgdGhlCittYWtlZmlsZSBydWxlcyB0byByZWJ1aWxkIHRoZSBjb25maWd1cmUgc2NyaXB0IGZyb20gY29uZmlndXJlLmluLCBhbmQKK3RvIHJldWJ1aWxkIHRoZSAuZ21vIGZpbGVzIGluIHBvIGRpcmVjdG9yeS4KKworRHJvcCB0aGUgc3BhcmMgYXNzZW1ibHkgYml0d2lzZSBvcGVyYXRpb25zOyBpdCdzIGxlc3MgZWZmaWNpZW50Cit0aGFuIHRoZSBHQ0MgMy40IGNvbXBpbGUgY29kZSBhbmQgdHJpZ2dlcnMgY29tcGlsZXIgd2FybmluZ3Mgb24KK3NwYXJjNjQuICBUaGFua3MgdG8gTWF0dGhpYXMgQW5kcmVlIGZvciBoaXMgYW5hbHlzaXMgYW5kIHN1Z2dlc3Rpb25zLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMyMzIzMjYpCisKKworRTJmc3Byb2dzIDEuMzUgKEZlYnJ1YXJ5IDI4LCAyMDA0KSAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRTJmc2NrIGhhcyBhIG5ldyAtayBvcHRpb24sIHdoaWNoIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIC1jIG9wdGlvbnMsCitwcmVzZXJ2ZXMgdGhlIGV4aXN0aW5nIGJhZGJsb2NrcyBsaXN0LgorCitDbGVhbmVkIHVwIGUyZnNjaydzIHByZWVuLW1vZGUgbWVzc2FnZXMgZHVyaW5nIHRoZSBwYXNzZXMgMWIsIDFjLCBhbmQgMWQuCisKK0UyZnNwcm9ncyB3aWxsIG5vdyBkZWFsIGNvcnJlY3RseSB3aXRoIHN5bWxpbmtzIHRoYXQgY29udGFpbgorZXh0ZW5kZWQgYXR0cmlidXRlIGluZm9ybWF0aW9uLCB3aGljaCBjYW4gYmUgY3JlYXRlZCB1c2luZyBTRSBMaW51eC4KKyhBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMjMyMzI4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorUmVtb3ZlIGEgZG91YmxlIGxvbmdqdW1wIGludG8gYW4gaW52YWxpZCBzdGFjayBmcmFtZSBidWcgaW4gZTJmc2NrLgorKFRoaXMgd2FzIGR1cmluZyBhbiBhYm9ydCBzZXF1ZW5jZSwgd2hpY2ggbm9ybWFsbHkgd29ya2VkIG9uIExpbnV4IGFuZAorY2F1c2VkIGEgY29yZSBkdW1wIG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLikKKworRml4IE5MUyBidWcgaW4gZTJmc2NrLCBieSBhdm9pZGluZyB0cnlpbmcgdG8gZXhwYW5kIGFuIGVtcHR5IHN0cmluZworKHRoZSBOTFMgbGlicmFyeSB3aWxsIHJlcGxhY2UgIiIgd2l0aCB0aGUgLnBvIGhlYWRlciBpbmZvcm1hdGlvbikuCisgCitGaXggYSBidWcgaW4gbWtlMmZzIHdoaWNoIGNhdXNlZCAtVCBsYXJnZWZpbGUgb3IgLVQgbGFyZ2VmaWxlNCB0byBjb3JlCitkdW1wIGR1ZSB0byBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3IuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzIwNzA4MikKKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoaWNoIGNhdXNlZCBpdCB0byBpbmNvcnJlY3RseSBmaXggYSBmaWxlc3lzdGVtCit3aGVuIHJlY29ubmVjdGluZyBhIGRpcmVjdG9yeSByZXF1aXJlcyBjcmVhdGluZyBhIGxvc3QrZm91bmQKK2RpcmVjdG9yeS4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMjE5NjQwKS4KKworRml4ZWQgYSBidWcgd2hlcmUgZTJmc2NrIHdvdWxkIGJvbWIgb3V0IGlmIGEgam91cm5hbCBuZWVkZWQgdG8gYmUKK3JlcGxheWVkIHdoZW4gdXNpbmcgYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2suCisgCitFMmZzY2sgd2lsbCBnaXZlIGFuIGV4dHJhIGdyYWNlIHBlcmlvZCBiZWZvcmUgYWN0dWFsbHkgZm9yY2luZyBhIGNoZWNrCitpZiB0aGUgbGFwdG9wIGlzIHJ1bm5pbmcgb24gYmF0dGVyeS4gIFRoZSBuZXh0IHRpbWUgZnNjayBydW5zIHdoaWxlCit0aGUgc3lzdGVtIGlzIG9uIHRoZSBBQyBtYWlucywgb3IgYWZ0ZXIgdGhlIGdyYWNlIHBlcmlvZCBpcyBleGNlZWRlZCwKK3RoZSBmaWxlc3lzdGVtIHdpbGwgYmUgY2hlY2tlZC4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMjA1MTc3KQorCitFMmZzY2sgd2lsbCBpbmZvcm0gdGhlIHVzZXIgd2hlbiB0aGVyZSBhcmUgNSBvciBmZXdlciBtb3VudHMgYmVmb3JlIGEKK2ZpbGVzeXN0ZW0gY2hlY2sgd2lsbCBiZSBmb3JjZWQuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzE1NzE5NCkKKworRml4IGUyZnNjaydzIGhhbmRsaW5nIG9mIGNvcnJ1cHRlZCBpbmRpcmVjdCBibG9ja3MgaW4gdGhlIGJhZCBibG9jay4KK1dlIG5vdyBjb3JyZWN0bHkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGlzIGFuIG92ZXJsYXAgYmV0d2VlbiBhCitibG9jayBncm91cCBkZXNjcmlwdG9yIG9yIGEgc3VwZXJibG9jayBhbmQgYSBiYWQgYmxvY2sgaW5kaXJlY3QgYmxvY2suCitJbiB0aGUgY2FzZSB3aGVyZSB0aGUgaW5kaXJlY3QgYmxvY2sgaXMgY29ycnVwdGVkLCB3ZSBub3cgc3VnZ2VzdAorImUyZnNjayAtYyIuCisKK0ZpeCBieXRlIHN3YXAgYnVncyBpbiBlMmZzY2sgdGhhdCBjYXVzZWQgdGhlIGpvdXJuYWwgYmFja3VwIGxvY2F0aW9uIAoraW4gdGhlIHN1cGVyYmxvY2sgYW5kIHN5bWxpbmtzIGNyZWF0ZWQgYnkgU0UgTGludXggdG8gYmUgY2xlYXJlZAorYnkgZTJmc2NrIG9uIGJpZy1lbmRpYW4gbWFjaGluZXMuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzIyODcyMykKKworRTJmc2NrIC1jIG5vdyByZXBsYWNlcyB0aGUgY3VycmVudCBsaXN0IG9mIGJhZCBibG9ja3Mgd2l0aCB0aGUgb25lcworZm91bmQgYnkgYmFkYmxvY2tzLgorCitGaXggYnVncyBpbiBlMmZzY2sgYW5kIHR1bmUyZnMgd2hpY2ggY291bGQgY2F1c2UgYSBjb3JlIGR1bXAgaWYgYQorbm9uLWV4aXN0ZW50IExBQkVMIG9yIFVVSUQgc3BlY2lmaWVyIGlzIHRvIGUyZnNjayBvciB0dW5lMmZzLgorCitGaXggYSBwb3RlbnRpYWwgYnVnIGluIGUyZnNjayB3aGljaCBjb3VsZCBjYXVzZSBpdCB0byBjb3JlIGR1bXAgd2hlbgordHJ5aW5nIHRvIHByaW50IHRoZSBsb2NhdGlvbiBvZiB0aGUgYmFja3VwIHN1cGVyYmxvY2suCisKK1Byb3RlY3QgYWdhaW5zdCBhIHBvdGVudGlhbCBjb3JlIGR1bXAgaW4gZTJmc2NrIHdoZW4gcHJpbnRpbmcgYQorbWVzc2FnZSBhYm91dCBiYWNrdXAgc3VwZXJibG9ja3MuCisKK0FkZCBzdXBwb3J0IGZvciBiYWNraW5nIHVwIHRoZSBqb3VybmFsIGlub2RlIGxvY2F0aW9uIGluIHRoZQorc3VwZXJibG9jay4gIEUyZnNjayB3aWxsIGF1dG9tYXRpY2FsbHkgc2F2ZSB0aGUgam91cm5hbCBpbmZvcm1hdGlvbiBpbgordGhlIHN1cGVyYmxvY2sgaWYgaXQgaXMgbm90IHRoZXJlIGFscmVhZHksIGFuZCB3aWxsIHVzZSBpdCBpZiB0aGUKK2pvdXJuYWwgaW5vZGUgYXBwZWFycyB0byBiZSBjb3JydXB0ZWQuICBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGUoKQord2lsbCBhbHNvIHNhdmUgdGhlIGJhY2t1cCBpbmZvcm1hdGlvbiwgc28gdGhhdCBuZXcgZmlsZXN5c3RlbXMgY3JlYXRlZAorYnkgbWtlMmZzIGFuZCBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgam91cm5hbHMgYWRkZWQgdmlhIHR1bmUyZnMgd2lsbAorYWxzbyBoYXZlIGpvdXJuYWwgbG9jYXRpb24gd3JpdHRlbiB0byB0aGUgc3VwZXJibG9jayBhcyB3ZWxsLgorRGVidWdmcydzIGxvZ2R1bXAgY29tbWFuZCBoYXMgYmVlbiBlbmhhbmNlZCBzbyB0aGF0IGl0IGNhbiB1c2UgdGhlCitqb3VybmFsIGluZm9ybWF0aW9uIGluIHRoZSBzdXBlcmJsb2NrLgorCitFMmZzY2sgd2lsbCBub3cgdXBkYXRlIGFsbCBzdXBlcmJsb2NrcyB3aGVuIG1vdmluZyB0aGUgam91cm5hbCBpbm9kZS4KKyAgCitTaHJpbmsgdGhlIHNpemUgb2YgdGhlIGUyZnNjayBleGVjdXRhYmxlIGJ5IG1vdmluZyBzb21lIGluaXRpYWxpemVkCit2YXJpYWJsZXMgdG8gdGhlIEJTUyBzZWdtZW50LgorCitFMmZzY2sgd2lsbCBhdm9pZCBwcmludGluZyB0aGUgXkEgYW5kIF5CIGNoYXJhY3RlcnMgd2hpY2ggYnJhY2tldCB0aGUKK3Byb2dyZXNzIGJhciB3aGVuIHN0ZG91dCBhbmQgc3RkaW4gYXJlIGEgdHR5IGRldmljZSBpbnN0ZWFkIG9mIGEgcGlwZQordG8gYW5vdGhlciBwcm9ncmFtLiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMyMDQxMzcpCisKK0RlYnVnZnMncyBta2RpciBjb21tYW5kIHdpbGwgYXV0b21hdGljYWxseSBleHBhbmQgdGhlIGRpcmVjdG9yeSBpZgorbmVjZXNzYXJ5LiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnOiAjMjE3ODkyKQorIAorRml4ZWQgYSBidWcgaW4gZGVidWdmcyBzbyB0aGF0IGNvcHlpbmcgYSBmaWxlIGZyb20gL2Rldi9udWxsIHVzZXMgdGhlCitjb3JyZWN0IG1vZGUgYml0cy4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZzogIzIxNzQ1NikKKyAKK0lmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgREVCVUZTX1BBR0VSIGFuZCBQQUdFUiBhcmUgbm90IHNldCwKK2RlYnVnZnMgbm93IHNlYXJjaGVzIGZvciB0aGUgYXBwcm9wcmlhdGUgcGFnZXIgdG8gdXNlLCBiZWdpbm5pbmcgd2l0aAorL3Vzci9iaW4vcGFnZXIsIGFuZCB0aGVuIGZhbGxpbmcgYmFjayB0byAnbW9yZScgYW5kICdsZXNzJy4KKyhBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMjIxOTc3KQorCitEZWJ1Z2ZzIHdpbGwgbm93IHN1cHBvcnQgMi42IGRldmljZSBudW1iZXJzIHdoZXJlIHRoZSBtYWpvciBvciBtaW5vcgorbnVtYmVyIG1heSBiZSBsYXJnZXIgdGhhbiAyNTUuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIGJ1ZyAjODY1Mjg5KQorIAorRml4IGRlYnVnZ2luZyBwcmludGYgaW4gcmVzaXplMmZzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMyNzE2MDUpCisKK0NoYXR0ciBub3cgc3RvcHMgcHJvY2Vzc2luZyBvcHRpb25zIHdoZW4gaXQgc2VlcyAnLS0nLiAgKEFkZHJlc3NlcworRGViaWFuIGJ1ZyAjMjI1MTg4KQorCitGaXggcmVncmVzc2lvbiB0ZXN0cyBzbyB0aGV5IHdvcmsgY29ycmVjdGx5IHdoZW4gZTJmc3Byb2dzIGlzIGNvbXBpbGVkCit3aXRoIGNvbmZpZ3VyZSAtLWRpc2FibGUtaHRyZWUuCisKK0ZpeCBidWcgaW4gdXVpZCBsaWJyYXJ5IHdoZW4gdGhlcmUgaXMgbm8gbmV0d29yayBjYXJkIGFuZCB0aGUgbGlicmFyeQoraXMgZ2VuZXJhdGluZyBhIHRpbWUtYmFzZWQgdXVpZC4gIFRoZSByYW5kb20gTUFDIGFkZHJlc3Mgd2FzIG5vdAorY29ycmVjdGx5IGdlbmVyYXRlZCB0byBiZSBhIG11bHRpY2FzdCBhZGRyZXNzLgorIAorQWRkIGNvbXBpbGVfZXQgZXh0ZW5zaW9ucyBmcm9tIEhlaW1kYWxsIHRoYXQgd2VyZSBtaXNzZWQgdGhlIGZpcnN0IHRpbWUKK2Fyb3VuZC4KKworRml4IGJ1ZyBpbiBiYWRibG9ja3Mgd2hlbiB1c2luZyBPX0RJUkVDVDsgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdAord2UncmUgcmVhZGluZyBmcm9tIGFuIG9mZnNldCB3aGljaCBpcyBwYWdlIGFsaWduZWQuICBGb3IgcmVhZC1vbmx5IGFuZAorcmVhZC13cml0ZSB0ZXN0cywgd2UgdHJ5IHRvIHJlY292ZXIgYWZ0ZXIgYW4gZXJyb3Igc28gdGhhdCB3ZSBjYW4KK2NvbnRpbnVlIHJlYWRpbmcgb24gcGFnZS1hbGlnbmVkIGJvdW5kYXJpZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWcKKyMyMDM3MTMpCisgIAorQmFkYmxvY2tzIG5vdyBjaGVja3MgNjQgYmxvY2tzIGF0IGEgdGltZSBpbnN0ZWFkIG9mIDE2LiAgKEFkZHJlc3NlcworRGViaWFuIGJ1ZyAjMjMyMjQwKQorIAorVXBkYXRlZCBhbmQgY2xhcmlmaWVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnCisjMjA2ODQ1LCAjMjIyNjA2LCAjMjE0OTIwLCAjMjMyNDA2KQorCitVcGRhdGVkIGFuZCBmaXhlZCB0cmFuc2xhdGlvbnMuICAgKEFkZHJlc3NlcyBEZWJpYW4gYnVncyAjMjAwMDg2LCAjMjE0NjMzKQorCitGaXhlZCB2YXJpb3VzIERlYmlhbiBwYWNrYWdpbmcgaXNzdWVzIChzZWUgZGViaWFuL2NoYW5nZWxvZykuCisKK1Byb2dyYW1tZXIncyBub3RlczogCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIGEgYnVpbGQgcHJvYmxlbSBzbyB0aGF0IGUyZnNwcm9ncyB3b3VsZCBjb21waWxlIHdpdGggdGhlCistLWVuYWJsZS1wcm9maWxlIG9wdGlvbiB0byBjb25maWd1cmUgc2VsZWN0ZWQuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlCitidWcgIzgxMTQwOCkKKyAKK0ZpeGVkIEMrKyBwcm9ibGVtcyB3aXRoIHRoZSBleHQyZnMuaCBoZWFkZXIuICAoQWRkcmVzc2VzIFJlZCBIYXQKK0J1Z3ppbGxhIEJ1ZyAjMTEyNDQ4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ2VudHJhbGl6ZSBjb2RlIHdoaWNoIGNhbGN1bGF0ZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdXBlcmJsb2NrCithbmQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgc28gdGhhdCBpdCBpcyBpbiBhIHNpbmdsZSBsaWJyYXJ5IHJvdXRpbmUuCisKK0FkZGVkIHR3byBuZXcgZnVuY3Rpb25zLCBleHQyZnNfZmlsZV9vcGVuMigpIGFuZAorZXh0MmZzX2lub2RlX2lvX2ludGVybjIoKSB3aGljaCB0YWtlIGEgcG9pbnRlciB0byBhbiBpbm9kZSBzdHJ1Y3R1cmUuCisKK0ZpeCBjb21waWxlX2V0IHRvIG91dHB1dCB0aGUgY29ycmVjdCBwcm90b3R5cGUgZm9yCitpbml0aWFsaXplX3h4eF9lcnJfdGFibGVfcigpIGluIHRoZSBoZWFkZXIgZmlsZS4gIChBZGRyZXNzZXMgRGViaWFuCitidWcgIzIwNDMzMikKKworSW4gdGhlIGxpYi9ldCBtYWtlZmlsZSwgbWFrZSBzdXJlIGNvbV9lcnIuaW5mbyBpcyBkZWxldGVkIG9uICJtYWtlIGNsZWFuIi4KKyAgCitGaXggNjQtYml0IHdhcm5pbmdzIGluIGUyZnNwcm9ncyBwYXNzMWIgYnkgdXNpbmcgaW50dHlwZXMuaCBpZgorcHJlc2VudC4gIFRoaXMgaXMgZm9yIHdoZW4gd2UgdHJ5IHN0dWZmaW5nIGFuIGludCBpbnRvIHZvaWQgKiBwb2ludGVyLgorCitGaXggdHlwZS1wdW5uaW5nIHdoaWNoIGNhbiBjYXVzZSBnY2MgMy54IHRvIG1pc2NvbXBpbGUgY29kZSBieSBnZXR0aW5nCitjb25mdXNlZCBhYm91dCBwb2ludGVyIGFsaWFzaW5nLiAgZXh0MmZzX2dldG1lbSgpLCBleHQyZnNfZnJlZV9tZW0oKSwKK2FuZCBleHQyZnNfcmVzaXplX21lbSgpIGFsbCBub3cgdGFrZSBhICd2b2lkIConIGluc3RlYWQgb2YgYSAndm9pZAorKionLiAgVGhlIEVWTVMgY29kZSB1c2VzIGFuIHVnbHkgdW5pb24gYXBwcm9hY2ggc2luY2Ugd2UgZG9uJ3Qgd2FudCB0bworbW9kaWZ5IHRoZSBFVk1TIGludGVyZmFjZXMuIAorCitNYWtlIHN1cmUgYWxsIE1ha2VmaWxlcyB1c2UgJChNQUtFKSByYXRoZXIgdGhhbiBoYXJkY29kZWQgIm1ha2UiLCB0bworYWlkIGJ1aWxkIHByb2Nlc3Mgb24gc3lzdGVtcyBjYW4gdXNlIGludm9rZSBHTlUgbWFrZSBhcyAiZ21ha2UiLgorCitBZGRlZCByZWdyZXNzaW9uIHRlc3RpbmcgZm9yIG1rZTJmcy4KKworRml4ZWQgZ2NjIC1XYWxsIG5pdHBpY2tzLgorCitGaXhlZCB2YXJpb3VzIGNvbXBpbGVyIHdhcm5pbmdzLgorCitBZGQgcG9ydGFiaWxpdHkgZml4ZXMgZm9yIEZyZWVCU0QgYW5kIGZvciB1c2luZyBmc2N0bCB1bmRlciBEYXJ3aW4gdG8KK3N1cHBvcnQgZXh0MiBpb2N0bCdzLgorCisKK0UyZnNwcm9ncyAxLjM0IChKdWx5IDI1LCAyMDAzKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBhIGJ1ZyBpbnRyb2R1Y2VkIGluIEUyZnNwcm9ncyAxLjMwIHdoaWNoIGNhdXNlZCBmc2NrIHRvIHNwaW4gaW4KK2EgdGlnaHQgbG9vcCB3aGlsZSB3YWl0aW5nIGZvciBhIGNoaWxkIGZzY2sgdG8gZXhpdCBpbiBzb21lIGNhc2VzLgorVGhpcyBidXJucyBDUFUgdGltZXMgd2hpY2ggc2xvd3MgZG93biB0aGUgbG93LWxldmVsIGZpbGVzeXN0ZW0gY2hlY2suCisKK0FkZGVkIGNvZGUgdG8gbWtlMmZzIHRvIGFzc3VyZSB0aGF0IHRoZSBkZWZhdWx0IGJsb2NrIHNpemUgZm9yIGEKK2ZpbGVzeXN0ZW0gaXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSBzZWN0b3Igc2l6ZSBvZiB0aGUgZGV2aWNlLCBpZiBpdAorY2FuIGJlIGRldGVybWluZWQuCisKK0NoYW5nZWQgbWtlMmZzIGFuZCByZXNpemUyZnMgdG8gcm91bmQgdGhlIGRlZmF1bHQgc2l6ZSBvZiBhIGZpbGVzeXN0ZW0KK3RvIGJlIGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIFZNIHBhZ2VzaXplIGluIG9yZGVyIHRvIGF2b2lkIGEgTGludXgKK2tlcm5lbCBidWcgaW50cm9kdWNlZCB3aGVuIHRoZSBzdG9yYWdlIG9mIHRoZSBidWZmZXIgY2FjaGUgd2FzIG1vdmVkCitpbnRvIHRoZSBwYWdlIGNhY2hlLgorCitNa2UyZnMgd2lsbCB3YXJuIHRoZSB1c2VyIHdoZW4gY3JlYXRpbmcgYSBmaWxlc3lzdGVtIHdpdGggam91cm5hbGluZworYW5kIGEgYmxvY2tzaXplIGdyZWF0ZXIgdGhhbiA0MDk2LiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMxOTM3NzMpCisKK0ZpeGVkIGEgYnVnIGluIHJlc2l6ZTJmcyB3aGljaCBjYXVzZWQgaXQgdG8gZmFpbCBvbiBmaWxlc3lzdGVtcyB3aXRoIGEKK25vbi1lbXB0eSBiYWQgYmxvY2sgbGlzdC4gIFJlc2l6ZTJmcyBub3cgZGlzY2FyZHMgYW55IGJsb2NrcyBvbiB0aGUKK2JhZGJsb2NrIGxpc3Qgd2hpY2ggYXJlIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBmaWxlc3lzdGVtIGFzIHRoZSByZXN1bHQKK29mIGEgZmlsZXN5c3RlbSBzaHJpbmsuICAoTm90ZTogdGhpcyBtZWFucyB0aGF0IHNocmlua2luZyBhbmQgdGhlbgorZW5sYXJnaW5nIGEgZmlsZXN5c3RlbSBpcyBubyBsb25nZXIgYSByZXZlcnNpYmxlIG9wZXJhdGlvbjsKK2luZm9ybWF0aW9uIGFib3V0IGJhZCBibG9ja3MgaW4gdGhlIHBhcnQgb2YgdGhlIGZpbGVzeXN0ZW0gd2hpY2ggaXMgdG8KK2JlIGNob3BwZWQgb2ZmIHdpbGwgYmUgbG9zdC4pCisKK0NoYW5nZWQgcmVzaXplMmZzIHNvIHRoZSB1c2VyIGNhbiB1c2UgcHJlZml4ZXMgdG8gc3BlY2lmeSB0aGUgdW5pdHMgb2YKK3RoZSBuZXcgZmlsZXN5c3RlbSBzaXplIChzZWN0b3JzLCBraWxvYnl0ZXMsIG1lZ2FieXRlcywgb3IgZ2lnYWJ5dGVzKSwKK2FuZCB0byBtYWtlIHRoZSBlcnJvciBhbmQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyBleHBsaWNpdGx5IGRpc3BsYXkKK3RoZSBibG9ja3NpemUgdXNlZCBieSB0aGUgZmlsZXN5c3RlbSwgaW4gb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uLgorKEFkZHJlc3NlcyBEZWJpYW4gYnVnOiAjMTg5ODE0KQorCitBZGRlZCBhIG5ldyBkZWJ1Z2ZzIGNvbW1hbmQsIGR1bXBfdW51c2VkLCB3aGljaCBkdW1wcyB0aGUgY29udGVudHMgb2YKK2FsbCB1bnVzZWQgYmxvY2tzIHRvIHN0ZG91dC4gIChVc2VmdWwgYXMgYW4gZW1lcmdlbmN5IHRyeS10by1maW5kCitkZWxldGVkIGRhdGEgY29tbWFuZC4pCisKK0FkZGVkIGEgbmV3IGRlYnVnZnMgY29tbWFuZCwgaW1hcCwgd2hpY2ggcHJpbnRzIHRoZSBsb2NhdGlvbiBvZiBhCitzcGVjaWZpZWQgaW5vZGUgaW4gdGhlIGlub2RlIHRhYmxlLgorCitGaXhlZCBhIGJ1ZyBpbiB0aGUgYmFkYmxvY2tzIHByb2dyYW0gd2hpY2ggY2F1c2VkIGl0IHRvIHVzZSBvbmUgYml0IG9mCityYW5kb21uZXNzIGluIGl0cyBub24tZGVzdHJ1Y3RpdmUgcmVhZC93cml0ZSB0ZXN0LCBpbnN0ZWFkIG9mIHVzaW5nIGEKK2Z1bGwgOCBiaXRzIG9mIHJhbmRvbW5lc3MuCisKK0FkZGVkIGEgbmV3IG9wdGlvbiAoLXQpIHRvIGJhZGJsb2Nrcywgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvIGNvbnRyb2wKK3RoZSB0ZXN0IHBhdHRlcm4ocykgdXNlZCB3aGVuIGNoZWNraW5nIGEgZGlzay4KKworVGhlIGJsa2lkIHByb2JlIGZ1bmN0aW9uIG5vdyBtb3JlIGNvcnJlY3RseSBkZXRlY3RzIFVERiBmaWxlc3lzdGVtcy4KKworRml4ZWQgYSBidWcgaW4gdGhlIGJsa2lkIGxpYnJhcnkgd2hpY2ggY2F1c2VkIGl0IHRvIG5vdCB1cGRhdGUgaXRzCitjYWNoZSBpZiBhIGZpbGVzeXN0ZW0gY2hhbmdlcyBmcm9tIGhhdmluZyBhIGxhYmVsIHRvIG5vdCBoYXZpbmcgYQorbGFiZWwuCisKK0ZpeGVkIGEgYnVnIGluIHRoZSBibGtpZCBsaWJyYXJ5IHdpaGNoIGNvdWxkIGF2b2lkIGFuIGluZmluaXRlIGxvb3AKK2luIGJsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnKCkgaWYgL3Byb2MgaXMgbm90IG1vdW50ZWQgYW5kIHRoZXJlIHRoZQorL2V0Yy9ibGtpZC50YWIgZmlsZSBoYXMgbm90IHlldCBiZWVuIGNyZWF0ZWQuCisKK0ZpeGVkIHRoZSBiYWRibG9ja3MgcHJvZ3JhbSBzbyB0aGF0IHRoZSBkZXN0cnVjdGl2ZSByZWFkL3dyaXRlIHRlc3QKK2hvbm9ycyB0aGUgLWMgb3B0aW9uLCBhbmQgdG8gdXNlIE9fRElSRUNUIHdoZW4gcG9zc2libGUgdG8gYXZvaWQKK3RocmFzaGluZyB0aGUgc3lzdGVtIGJsb2NrIGJ1ZmZlciBjYWNoZS4KKworRml4ZWQgdmFyaW91cyBOTFMgaXNzdWVzLgorIC0gQWRkZWQgQ3plY2ggYW5kIFN3ZWRpc2ggdHJhbnNsYXRpb25zCisgLSBSZW1vdmVkIHRlc3RpbmcgTllDIHRyYW5zbGF0aW9uCisgLSBGaXhlZCBOTFMgc3VwcG9ydCBmb3IgbWVzc2FnZSBhYmJyZXZhdGlvbnMgaW4gZTJmc2NrCisgLSBSZW1vdmUgZGUtdXRmLnBvLCBzaW5jZSB3ZSBzaG91bGRuJ3QgaGF2ZSB0d28gdmVyc2lvbnMgdXNpbmcgZGlmZmVyZW50CisJY2hhcnNldCBlbmNvZGluZ3MuCisgLSBVc2VkIG5nZXR0ZXh0KCkgKGFiYnJlaXZhdGVkIHdpdGggdGhlIG1hY3JvIFBfKHN0cjEsIHN0cjIsIG4pKSB0byAKKwlzaW1wbGlmeSB0aGUgc3RhdGlzdGljcyByZXBvcnRpbmcgaW4gZTJmc2NrLgorCitDaGFuZ2VkIGNvbmZpZ3VyZS5pbiBzbyB0aGF0IGl0cyBkZWZhdWx0cyBmb3IgKkJTRCBzeXN0ZW1zIG5vIGxvbmdlcgorYnVpbGQgYW4gZnNjayB3cmFwcGVyLCBhbmQgbm90IHRvIGluc3RhbGwgaW4gL3Vzci9sb2NhbCBieSBkZWZhdWx0LgorCitGaXhlZCBzb21lIG1pbm9yIHNwZWxsaW5nIGVycm9ycy90eXBvJ3MgaW4gZTJmc2NrIGFuZCB0aGUgY29uZmlndXJlCitzY3JpcHQuCisKK0ZpeGVkIHZhcmlvdXMgRGViaWFuIHBhY2thZ2luZyBpc3N1ZXMgKHNlZSBkZWJpYW4vY2hhbmdlbG9nKS4gCisKK1VwZGF0ZWQgYW5kIGNsYXJpZmllZCBtYW4gcGFnZXMuICAoQWRkcmVzc2VzIERlYmlhbiBCdWcgIzE5NTYxNikKKworUHJvZ3JhbW1lcidzIG5vdGVzOiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4IGdjYyAtV2FsbCBuaXRwaWNrcy4KKworVXBkYXRlZCBnZXR0ZXh0IGltcGxlbWVudGF0aW9uIHVzZWQgYnkgZTJmc3Byb2dzIHRvIDAuMTEuNSwgYW5kIGVuYWJsZQorTkxTIHN1cHBvcnQgYnkgZGVmYXVsdC4gIChBZGRlZCBwYXJ0aWFsIHdvcmthcm91bmQgZm9yIGdldHRleHQvRGFyd2luCitpbmNvbXBhdGliaWxpdHkgcHJvYmxlbXMuKQorCitBZGRlZCBmdWxsIE1JVCBLUkI1IGFuZCBIaW1kYWxsIGNvbXBhaWJpbGl0eSBzdXBwb3J0IHRvIHRoZSBjb21fZXJyCitsaWJyYXJ5IGFuZCB0aGUgY29tcGlsZV9ldCBwcm9ncmFtLiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMxOTE5MDApCisKK0FkZGVkIHRoZSBibGtpZF9rbm93bl9mc3R5cGUoKSBmdW5jdGlvbiB0byB0aGUgYmxraWQgbGlicmFyeSwgd2hpY2gKK3JldHVybnMgdHJ1ZSBpZiBpdCBpcyBwYXNzZWQgYSBmaWxlc3lzdGVtIHR5cGUgd2hpY2ggaXMgcmVjb2duaXplZCBieQordGhlIGJsa2lkIHByb2JpbmcgZnVuY3Rpb25zLgorCitJbXByb3ZlZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGJsa2lkIGxpYnJhcnkuCisKK0FkZGVkIHRoZSBleHQyZnNfZ2V0X2RldmljZV9zZWN0c2l6ZSgpIGZ1bmN0aW9uIHRoZSB0aGUgZXh0MmZzIGxpYnJhcnksIHdoaWNoCityZXR1cm5zIHRoZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSBvZiBhIGRldmljZSwgaWYgaXQgaXMgYXZhaWxhYmxlLgorCitBZGRlZCBhIGRlcGVuZGVuY3kgaW4gdGhlIGJsa2lkIGxpYnJhcnkncyAuc28gZmlsZSB0byB0aGUgdXVpZAorbGlicmFyeSwgc2luY2UgdGhlIGZvcm1lciB1c2VzIHRoZSBsYXR0ZXIuICAoQWRkcmVzc2VzIERlYmlhbiBidWcKKyMxOTQwOTQpCisKK0FkZGVkIC0td2l0aC1kaWV0LWxpYmMgYW5kIC0tZGlzYWJsZS1ldm1zIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LgorCitGaXhlZCBhIG1pbm9yIG1lbW9yeSBsZWFrIGluIHRoZSBiYWRibG9ja3MgcHJvZ3JhbS4KKworRml4ZWQgYSBwb3J0YWJpbGl0eSBwcm9ibGVtIGluIHR1bmUyZnMgLS0tIG5vdCBhbGwgc3lzdGVtcyBoYXZlIHN0cnB0aW1lKCkuCisKK0ZpeGVkIGEgcG9ydGFiaWxpdHkgcHJvYmxlbSBpbiBkZWJ1Z2ZzIHdpdGggdGhlIHVzZSBvZiBnZXRvcHQoKSBtb3JlCit0aGFuIG9uY2UuICBPbGQtc3R5bGUgQlNELCBuZXctc3R5bGUgQlNELCBhbmQgTGludXggQyBsaWJyYXJpZXMgYWxsIGRvCit0aGluZ3MgZGlmZmVyZW50bHkuCisKK0FkZCBzdXBwb3J0IFdpbmRvd3Mgc3VwcG9ydCB0byBleHQyZnNfZ2V0X2RldmljZV9zaXplKCkuCisKK0FkZGVkIChub3JtYWxseSBkaXNhYmxlZCkgZGVidWdnaW5nIGNvZGUgdG8gdGhlIFVuaXggSS9PIG1hbmFnZXIgd2hpY2gKK2NhdXNlcyBpdCB0byBkaXNhYmxlIGFsbCB1c2Vyc3BhY2UgY2FjaGluZyBpZiB0aGUgTk9fSU9fQ0FDSEUgaXMKK2RlZmluZWQuCisKK0NoYW5nZWQgdGhlIHRlc3QgSS9PIG1hbmFnZXIgc28gaXQgY2FuIGFsd2F5cyBiZSBsaW5rZWQgaW50byBlMmZzY2ssCitta2UyZnMsIGFuZCB0dW5lMmZzIGlmIGVuYWJsZWQgdmlhIC0tZW5hYmxlLXRlc3QtaW8tZGVidWcgdG8gdGhlCitjb25maWd1cmUgc2NyaXB0LiAgVGhlIHRlc3QgSS9PIG1hbmFnZXIgd2lsbCBvbmx5IHByaW50IGFueSBkZWJ1Z2dpbmcKK2luZm9ybWF0aW9uIGlmIHRoZSBURVNUX0lPX0ZMQUdTIG9yIFRFU1RfSU9fQkxPQ0sgZW52aXJvbm1lbnQKK3ZhcmlhYmxlcyBhcmUgc2V0LCB3aGljaCBzcGVjaWZpZXMgd2hpY2ggSS9PIG9wZXJhdGlvbnMgYXJlIGxvZ2dlZCBhbmQKK2EgYmxvY2sgbnVtYmVyIHRvIHdhdGNoLCByZXNwZWN0aXZlbHkuICBUaGUgbG9nIG1lc3NhZ2VzIGFyZSBzZW50IHRvCitzdGRlcnIgYnkgZGVmYXVsdCwgdW5sZXNzIGEgZmlsZW5hbWUgaXMgc3BlY2lmaWVkIHZpYSB0aGUKK1RFU1RfSU9fTE9HRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworCitFMmZzcHJvZ3MgMS4zMyAoQXByaWwgMjEsIDIwMDMpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZGVkIGEgbmV3IHV0aWxpdHkgcHJvZ3JhbSwgbG9nc2F2ZSwgd2hpY2ggY2FwdHVyZXMgdGhlIG91dHB1dCBvZiBhCitjb21tYW5kIGluIGEgbG9nIGZpbGUsIGV2ZW4gaWYgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGhhc24ndCBiZWVuCittb3VudGVkIHlldCAoaW4gd2hpY2ggY2FzZSB0aGUgaXQgc2F2ZXMgdGhlIG91dHB1dCBpbiBtZW1vcnkgdW50aWwgaXQKK2NhbiB3cml0ZSBvdXQgdGhlIGxvZ2ZpbGUpLiAgVGhpcyBpcyB1c2VmdWwgZm9yIGNhcHR1cmluZyB0aGUKK291dHB1dCBvZiBmc2NrIGR1cmluZyB0aGUgYm9vdCBzZXF1ZW5jZS4KKworRml4ZWQgc29tZSBwb3J0YWJpbGl0eSBwcm9ibGVtcyB0aGF0IHdlcmUgY2F1c2luZyBwcm9ibGVtcyB1bmRlcgordGhlIEN5Z3dpbjMyIGVudmlyb25tZW50LgorCitNa2UyZnMgbm93IGludGVycHJldHMgYSBuZWdhdGl2ZSBudW1iZXIgdG8gdGhlIC1iIG9wdGlvbiBhcyBhIG1pbmltdW0KK2Jsb2NrIHNpemUuCisKK0ZpeGVkIGEgYnVnIGluIG1rZTJmcyB3aGljaCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tpbmcgdGhlIGFyZ3VtZW50IHRvCit0aGUgLWcgb3B0aW9uIGlmIHRoZSBkZWZhdWx0IGJsb2NrIHNpemUgd2FzIHVzZWQuICAoQWRkcmVzc2VzIERlYmlhbgorYnVnICMxODgzMTkpCisKK0ZzY2sgbm93IGV4cGxpY2l0bHkgaWdub3JlcyB0bXBmcyBhbmQgZGV2cHRzLCBhbmQgaXQgd2lsbCBjb21wbGFpbiBpZgoraXQgY2FuIG5vdCBmaW5kIGZpbGVzeXN0ZW0gY2hlY2tlcnMgZm9yIGpmcywgcmVzZWlyZnMsIGFuZCB4ZnMuCisKK0UyZnNjayBub3cgdXBkYXRlcyB0aGUgZ2xvYmFsIGZyZWUgYmxvY2sgYW5kIGlub2RlIGNvdW50ZXJzIGZyb20gdGhlCitibG9jayBncm91cCBzcGVjaWZpYyBjb3VudGVycyBxdWlldGx5LiAgVGhpcyBpcyBuZWVkZWQgZm9yIGFuCitleHBlcmltZW50YWwgcGF0Y2ggd2hpY2ggZWxpbWluYXRlcyBsb2NraW5nIHRoZSBlbnRpcmUgZmlsZXN5c3RlbSB3aGVuCithbGxvY2F0aW5nIGJsb2NrcyBvciBpbm9kZXM7IGlmIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCB1bm1vdW50ZWQKK2NsZWFubHksIHRoZSBnbG9iYWwgY291bnRzIG1heSBub3QgYmUgYWNjdXJhdGUuCisKK0ltcG9ydGVkIGJ1ZyBmaXhlcyB0byB0aGUgRVZNUyBwbHVnaW4gZnJvbSB0aGUgRVZNUyAyLjAgdHJlZS4gIChFVk1TCisyLjAgaXMgbm90IHlldCBzdXBwb3J0ZWQ7IHRoaXMgb25seSBwdWxsZWQgaW4gdGhlIGJ1ZyBmaXhlczogZml4ZWQKK3Bvc3NpYmxlIGhhbmdzIGNhdXNlZCBieSBidWdzIGluIGNhbGxpbmcgd2FpdHBpZCwgYW5kIG5vdCBzZXR0aW5nIHRoZQorcGlwZSB0byBub24tYmxvY2tpbmcgbW9kZTsgYWxzbyBmaXhlZCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrOyBtYWRlCitzdXJlIGFsbCBmdW5jdGlvbnMgY2FsbCBsb2cgZW50cnkvZXhpdCBmdW5jdGlvbnMuKQorCitCYWRibG9ja3Mgbm93IGZsdXNoZXMgaXRzIG91dHB1dCBmaWxlIGFzIGJhZCBibG9ja3MgYXJlIGRpc2NvdmVyZWQuCisKK1RoZSB1dWlkIGxpYnJhcnkgaXMgbm93IG1vcmUgcGFyYW5vaWQgYWJvdXQgYXNzdW1pbmcgdGhlIGNvcnJlY3RuZXNzCitvZiB0aGUgL2Rldi9yYW5kb20gZGV2aWNlOyBpdCBtaXhlcyBpbiBhIHN0cmVhbSBvZiBieXRlcyBmcm9tCityYW5kb20vc3JhbmRvbSwganVzdCBpbiBjYXNlLgorCitVcGRhdGUgRGViaWFuIGZpbGVzIHRvIHJlZmxlY3QgdGhlIGZhY3QgdGhhdCBJIGFtIG5vdyB0aGUgRGViaWFuCittYWludGFpbmVyIG9mIGUyZnNwcm9ncy4gIE90aGVyIHZhcmlvdXMgRGViaWFuLXNwZWNpZmljIHBhY2thZ2luZworY2xlYW51cHMuCisKK01vdmUgdGhlIHNvdXJjZSB0YXJiYWxsIGdlbmVyYXRpb24gZnVuY3Rpb25zIGZyb20gdGhlIHRvcC1sZXZlbAorbWFrZWZpbGUgdG8gdGhlIHV0aWwvZ2VuLXRhcmJhbGwgc2NyaXB0LiAgCisKK1VwZGF0ZWQgdGhlIFR1cmtpc2ggLnBvIHRyYW5zbGF0aW9uIGZpbGUuCisKK0FkZGVkIEhlaW1kYWwgYW5kIE1JVCBrcmI1IGV4dGVuc2lvbnMgdG8gdGhlIGNvbV9lcnIgbGlicmFyeSB0byBtYWtlCitpdCBtb3JlIGNvbXBhdGlibGUgd2l0aCBjb21fZXJyIGxpYnJhcmllcyBmcm9tIHRob3NlIGRpc3RyaWJ1dGlvbnMuCisKK0NoYW5nZWQgZHVtcGUyZnMgdG8gYWx3YXlzIGRpc3BsYXkgdGhlIHN1cGVyYmxvY2sgZmllbGRzIHJlbGF0aW5nIHRvCit0aGUgam91cm5hbGxpbmcgYW5kL29yIGRpcmVjdG9yeSBpbmRleGluZyBmZWF0dXJlIGV2ZW4gaWYgdGhvc2UKK2ZlYXR1cmVzIGFyZSBub3QgZW5hYmxlZC4KKworVXBkYXRlZCBhbmQgY2xhcmlmeSBjb3B5cmlnaHQgc3RhdGVtZW50IHZpcy1hLXZpcyBhbHBoYSByZWxlYXNlcyBvZgorZTJmc3Byb2dzLgorCitUaGUgc3MgbGlicmFyeSB3aWxsIG5vdyB0cnkgdG8gZHluYW1pY2FsbHkgbGluayB0byB0aGUgcmVhZGxpbmUKK2xpYnJhcnkgYW5kIHVzZSBpdCBpZiBpdCBpcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0uICBUaGlzIG1lYW5zIHRoYXQKK3RoZSBkZWJ1Z2ZzIHByb2dyYW0gbm93IGhhcyBsaW5lIGVkaXRpbmcgYW5kIGhpc3RvcnkgZmVhdHVyZXMuICBUaGUKK1NTX1JFQURMSU5FX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgdXNlZCB0byBmaW5kIGEgcmVhZGxpbmUgb3IKK3JlYWRsaW5lLWNvbXBhdGlibGUgbGlicmFyeS4KKworRTJmc2NrIG5vdyBmaW5kcyBtb3N0IGR1cGxpY2F0ZSBmaWxlbmFtZXMgKGFsbCB3aGVuIHJlYnVpbGRpbmcgYWxsCitkaXJlY3RvcmllcyB2aWEgdGhlIC1EIG9wdGlvbikgYW5kIG9mZmVycyB0byBkZWxldGUgb3IgcmVuYW1lCitkdXBsaWNhdGUgZmlsZW5hbWVzL2RpcmVjdG9yeSBlbnRyaWVzLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMxNzY4MTQpLgorCitGaXggYnVnIGluIGUyaW1hZ2UuICBXaGVuIHdyaXRpbmcgb3V0IGEgcmF3IGltYWdlIGZpbGUsIGluY2x1ZGUgZGF0YQorYmxvY2tzIGZyb20gc3ltbGlua3MgdGhhdCBkbyBub3Qgc3RvcmUgdGhlIHN5bWxpbmsgd2l0aGluIHRoZSBpbm9kZS4KKworRml4IGJ1ZyBpbiByZXNpemUyZnMgd2hpY2ggaW5jb3JyZWN0bHkgbW92ZWQgdGhlIGJsb2NrIGFuZCBpbm9kZQorYml0bWFwcyBmb3Igc3BhcnNlIHN1cGVyYmxvY2sgZmlsZXN5c3RlbXMgYW5kIGluY29ycmVjdGx5IG1hcmtlZAorYmxvY2tzIGFzIGluIHVzZS4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTc0NzY2KQorIAorQWRkZWQgYSBuZXcgc2hhcmVkIGxpYnJhcnksIHRoZSBibGtpZCBsaWJyYXJ5LCB3aGljaCBlZmZpY2llbnRseQorYWxsb3dzIGZzY2ssIG1rZTJmcywgZTJmc2NrLCBhbmQgdHVuZTJmcyB0byBiZSBhYmxlIHRvIGxvb2sgdXAgTEFCRUwKK2FuZCBVVUlEIGZpbGVzeXN0ZW0gc3BlY2lmaWVycyB3aXRob3V0IG5lZWRpbmcgdG8gc2VhcmNoIGFsbCBvZiB0aGUKK2RldmljZXMgaW4gdGhlIHN5c3RlbS4gIEluc3RlYWQsIHRoZSBkZXZpY2UgaXMgbG9va2VkIHVwIGluIGEgY2FjaGUKK2ZpbGUsIGFuZCB0aGVuIHZlcmlmaWVkIHRvIG1ha2Ugc3VyZSB0aGUgYmxraWQgY2FjaGUgaXMgY29ycmVjdC4KKworVHVuZTJmcyBhbmQgZTJsYWJlbCB3aWxsIGFjY2VwdCBMQUJFTD14eHggYW5kIFVJRD15eXkgc3BlY2lmaWVycyBmb3IKK3RoZSBkZXZpY2UgbmFtZSwgdXNpbmcgdGhlIGJsa2lkIGxpYnJhcnkuICAoQWRkcmVzc2VzIERlYmlhbiBidWdzCisjMTY2MDQ4LCAjMTc5NjcxKQorCitGc2NrIG5vdyBzdXBwb3J0cyBiYWNrc2xhc2ggZXNjYXBlcyBpbiAvZXRjL2ZzdGFiIHNvIHRoYXQgXDA0MCBjYW4gYmUKK3VzZWQgZm9yIHNwYWNlcyBpbiBkZXZpY2UgbGFiZWxzLgorCitSZW1vdmVkIDMyLWJpdCBsaW1pdGF0aW9ucyBmb3IgZGVidWdmcydzIGR1bXAgY29tbWFuZC4KKworSWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgbGFyZ2UgbnVtYmVyIG9mIGlub2RlcywgTWtlMmZzIHdpbGwKK2F1dG9tYXRpY2FsbHkgYWRqdXN0IHRoZSBudW1iZXIgb2YgYmxvY2tzIHBlciBncm91cCB0byBmaW5kIGEgdmFsaWQKK3NldCBvZiBmaWxlc3lzdGVtIHBhcmFtZXRlcnMuCisKK0FkZCB3b3JrYXJvdW5kIHRvIGRldGVjdCBicm9rZW4gTUQgZGV2aWNlcyB3aGVyZSB3aGVuIHNvbWUgb2YgdGhlCit1bmRlcmx5aW5nIGRldmljZXMgYXJlIG1hcmtlZCByZWFkLW9ubHksIHdyaXRlcyB0byB0aGUgTUQgZGV2aWNlIGFyZQorc2lsZW50bHkgZHJvcHBlZC4gIEUyZnNjayB3aWxsIGRldGVjdCBpZiB0aGVyZSBpcyBhbiBhdHRlbXB0IHRvIHJ1bgordGhlIGpvdXJuYWwgdHdpY2UsIGFuZCBhYm9ydCB3aXRoIGFuIGVycm9yIGlmIHRoaXMgaXMgdGhlIGNhc2UuCisoQWRkcmVzc2VzIElCTSBCdWd6aWxsYSBidWcgIzEyMjYpCisKK0UyZnNjayB3aWxsIHByaW50IGFuIGVycm9yIGlmIG1vcmUgdGhhbiBvbmUgb2YgdGhlIC1wLy1hLCAtbiBvciAteQorb3B0aW9ucyBhcmUgc3BlY2lmaWVkLgorCitFMmZzY2sgd2lsbCBmaXggSFRSRUUgY29ycnVwdGlvbnMgaW4gcHJlZW4gbW9kZSwgd2l0aG91dCBzdG9wcGluZyB0aGUKK2Jvb3QgcHJvY2Vzcy4gIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgdGhlIDIuNCBleHQyIGZpbGVzeXN0ZW0KK2FjY2lkZW50YWxseSBoYWQgdGhlIElOREVYX0ZMIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGNvZGUgcmVtb3ZlZC4KKworTWtlMmZzIG5vIGxvbmdlciBjcmVhdGVzIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGRpcl9pbmRleCBmbGFnIHNldCBieQorZGVmYXVsdDsgdGhlIHVzZXIgaGFzIHRvIHNwZWNpZmljYWxseSByZXF1ZXN0IGl0LgorCitVcGRhdGUgYW5kIGNsYXJpZmllZCB2YXJpb3VzIG1hbiBwYWdlcy4gKEFkZHJlc3NlcyBEZWJpYW4gYnVncworIzE3MzYxMiwgIzE3NTIzMywgIzE3NTExMywgYW5kICMxNzA0OTcsICMxODU5NDUsICMxODgzMTgpCisKK0NyZWF0ZWQgbWFuIHBhZ2UgZm9yIHRoZSBta19jbWRzIHByb2dyYW0gKGZyb20gdGhlIGxpYnNzIGxpYnJhcnkpLgorCitQcm9ncmFtbWVyJ3Mgbm90ZXM6IAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggdmFyaW91cyBnY2MgLVdhbGwgbml0cy4KKworRml4ZWQgYSBsb3Qgb2YgcG9ydGFiaWxpdHkgcHJvYmxlbXMgdGhhdCBjYXVzZWQgZTJmc3Byb2dzIG5vdCB0byBidWlsZAorc3VjY2Vzc2Z1bGx5IHVuZGVyIFNvbGFyaXMgYW5kIEFwcGxlL0Rhcndpbi4KKworRml4ZWQgYSBNYWtlZmlsZSBkZXBlbmRlbmN5IHRvIGFsbG93IGJ1aWxkaW5nIGUyZnNwcm9ncyB1c2luZyBwYXJhbGxlbAorbWFrZSBqb2JzLgorCitDaGFuZ2VzIHRvIGNyZWF0ZSBhIHN1YnNldCBkaXN0cmlidXRpb24gd2hpY2ggY29uc2lzdHMgb25seSBvZiB0aGUKK2V0LCBzcywgdXVpZCwgYW5kIGJsa2lkIGxpYnJhcmllcy4gIFRoZSBjb25maWd1cmUgc2NyaXB0IGFuZCB0b3AtbGV2ZWwKK21ha2VmaWxlIHdlcmUgY2hhbmdlZCB0byBzdXBwb3J0IHdvcmtpbmcgd2l0aCBhIHN1YnNldCBkaXN0cmlidXRpb24uCisKK1JlbW92ZWQgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9CVFJFRV9ESVIgbWVudGlvbiBvZiBzaW5jZSBpdCdzIG5vdAorYWN0dWFsbHkgdXNlZCwgYW5kIG1pZ2h0IHBlb3BsZSB3aG8gYXJlIGxvb2tpbmcgZm9yCitFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9JTkRFWCwgd2hpY2ggaXMgaW4gdXNlLgorCitVcGRhdGVkIGRlYmlhbiBmaWxlcyB0byBmaXggYSBudW1iZXIgb2YgTGludGlhbiB3YXJuaW5ncy4KKworVXBkYXRlZCBjb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgd2l0aCBuZXdlciB2ZXJzaW9ucyBmcm9tIHRoZSBGU0YuCisKK1JlbW92ZWQgdW5uZWNlc3NhcnkgbGlicmFyaWVzIGZyb20gYmVpbmcgbGlua2VkIGludG8gdGhlIGZzY2ssIGxzYXR0ciwgCitjaGF0dHIsIGFuZCBibGtpZCBleGVjdXRhYmxlcy4KKworRTJmc3Byb2dzIDEuMzIgKE5vbXZlbWJlciA5LCAyMDAyKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBhIGJ1ZyBpbiB0aGUgVW5peCBJL08gcm91dGluZXMgd2hpY2ggY2F1c2VkIG5lZWRsZXNzIHdyaXRlYmFja3MKK29mIGNsZWFuIGJsb2NrcyBmcm9tIHRoZSB1bml4X2lvIGNhY2hlICh0aGV5IHdlcmUgZXJyb25lb3VzbHkgbWFya2VkCithcyBiZWluZyBkaXJ0eSwgc28gdGhleSB3ZXJlIGdldHRpbmcgd3JpdHRlbiBiYWNrIHRvIGRpc2sgYmVmb3JlCitnZXR0aW5nIGV2aWN0ZWQgZnJvbSB0aGUgZGlzayBjYWNoZSkuICBUaGlzIHdhcyBoYXJtbGVzcywgYnV0IGl0CitzaWduaWZpY2FudGx5IHNsb3dlZCBkb3duIGUyZnNjay4KKworTWFkZSBzb21lIG90aGVyIG1pbm9yIG9wdGltaXphdGlvbnMgdG8gdGhlIFVuaXggSS9PIHJvdXRpbmVzIHRvIHNhdmUgYQorc21hbGwgYW1vdW50IG9mIENQVSB0aW1lLgorCitVcGRhdGVkIGludGVybmF0aW9uYWxpemF0aW9uIGZpbGVzLgorCisKK0UyZnNwcm9ncyAxLjMxIChOb212ZW1iZXIgOCwgMjAwMikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVXBkYXRlIEVWTVMgZXh0MmZzaW0gcGx1Z2luIHdpdGggRVZNUyAxLjIuICAoV2Ugc3RpbGwgc3VwcG9ydAorY29tcGlsaW5nIHRoZSBmc2ltIHBsdWdpbiB3aXRoIEVWTVMgMS4wIGFuZCAxLjEuKSAgQWRkIGJldHRlciBlcnJvcgoraGFuZGxpbmcgZm9yIGNoaWxkIHByb2Nlc3MgdGhhdCBkaWUgdW5leHBlY3RseS4gIEFkZCBhIGhhY2sgdG8gZm9yY2UKK21rZnMgdG8gY3JlYXRlIGZpbGVzeXN0ZW1zIHRoYXQgd29uJ3QgY2F1c2UgcHJvYmxlbXMgd2l0aCBoYXJkd2FyZQordGhhdCBoYXMgMmsgb3IgNGsgbWluaW11bSBibG9ja3NpemUgcmVxdWlyZW1lbnRzLiAgUmVhZCBmcm9tIGNoaWxkCitwcm9jZXNzZXMgaW4gbm9uLWJsb2NraW5nIG1vZGUsIHNvIHRoYXQgdGhlIEdVSSBjb250aW51ZXMgdG8gdXBkYXRlLgorCitGaXggZTJmc2NrIHNvIHRoYXQgaXQgcmV0dXJucyB0aGUgYXBwcm9wcmlhdGUgZXhpdCBjb2RlIHdoZW4gdGhlIHJvb3QKK2ZpbGVzeXN0ZW0gaGFzIGJlZW4gY2hhbmdlZCwgc28gdGhhdCBzeXN0ZW0ncyByYyBzY3JpcHRzIHdpbGwgYmUgdG9sZCB0aGF0IAordGhlIHN5c3RlbSBuZWVkcyB0byBiZSByZWJvb3RlZC4KKworRml4IGEgYnVnIGluIGV4dDJmc19mbHVzaC9leHQyZnNfY2xvc2U7IHdoZW4gdGhlIE1BU1RFUl9TQl9PTkxZIGZsYWcKK3dhcyBzZXQsIHNvbWUgb2YgdGhlIGRlc2NyaXB0b3IgYmxvY2tzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiB3cml0dGVuCitvdXQgd2VyZSBnZXR0aW5nIHNraXBwZWQuCisKK0NoYW5nZWQgZTJmc2NrIHRvIGZvcmNlIG91dCBjaGFuZ2VzIHRvIHRoZSBiYWNrdXAgY29waWVzIG9mIHRoZQorc3VwZXJibG9jayBhbmQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgd2hlbiBpbXBvcnRhbnQgY2hhbmdlcyBhcmUgbWFkZQordG8gdGhvc2UgZGF0YSBzdHJ1Y3R1cmVzLgorCitGaXggYSBidWcgd2hlcmUgZTJmc2NrIGNvdWxkIGVycm9uZW91c2x5IG1hcmsgYSBmaWxlc3lzdGVtIGFzIGJlaW5nCitjbGVhbiBpZiBhIGNoZWNrIG9mIGRpcnR5IGZpbGVzeXN0ZW0gaXMgaW50ZXJydXB0ZWQgd2l0aCBhIF5DLiAgKEJ1ZworaW50cm9kdWNlZCBpbiBlMmZzcHJvZ3MgMS4yOC4pCisKK0lmIGpvdXJuYWwgZGVidWdpbmcgaXMgZW5hYmxlZCB1c2luZyAtLWVuYWJsZS1qYmQtZGVidWcsIHRoZSBkZWJ1Z2dpbmcKK2xldmVsIGlzIG5vdyBzZXQgdmlhIHRoZSBFMkZTQ0tfSkJEX0RFQlVHIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitJZiBieXRlc3dhcHBpbmcgc3VwcG9ydCBpcyBkaXNhYmxlZCB1c2luZyBjb25maWd1cmUgLS1kaXNhYmxlLXN3YXBmcywKK3NraXAgdGhlIHRlc3RzIHdoaWNoIGRlcGVuZCBvbiBieXRlLXN3YXBwaW5nLCBzbyB0aGF0ICJtYWtlIGNoZWNrIgord29uJ3QgYm9tYiBvdXQuCisKK0xzaGF0dHIgd2lsbCBub3cgZGlzcGxheSB0aGUgaW5kZXhlZCBkaXJlY3RvcnkgZmxhZy4gIEFsc28sIHNvbWUgb2YKK3RoZSBtb3JlIGVzb3RlcmljIGNvbXByZXNzaW9uIGZsYWdzIGFyZSBzdXByZXNzZWQgdW5sZXNzIGNvbXByZXNzaW9uCitzdXBwb3J0IGhhcyBiZWVuIGVuYWJsZWQuCisKK1VwZGF0ZSBtYW4gcGFnZXMuCisKKworRTJmc3Byb2dzIDEuMzAgKE9jdG9iZXIgMzEsIDIwMDIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworV2hlbiByZXNpemluZyBhIGZpbGVzeXN0ZW0sIGFuZCBpbm9kZXMgbmVlZCB0byBtb3ZlZCwgcmVzaXplMmZzIHdpbGwKK3VwZGF0ZSB0aGUgaW5vZGUncyBjdGltZSBmaWVsZCwgYW5kIHRoZSBtdGltZSBmaWVsZCBvZiB0aGUgY29udGFpbmluZworZGlyZWN0b3JpZXMsIHNvIHRoYXQgaW5jcmVtZW50YWwgYmFja3VwcyB1c2luZyBkdW1wL3Jlc3RvcmUgd2lsbCB3b3JrCitjb3JyZWN0bHkuCisKK0luIG9yZGVyIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9ycywgZTJmc2NrIHdpbCBjaGVjayB0aGUgbGFzdAorc3VwZXJibG9jayB3cml0ZSB0aW1lIHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBpdCBjYW4gc2FmZWx5IHVzZQordGhlIExPV19EVElNRSBjaGVja3MgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBpbm9kZXMgb24gdGhlIG9ycGhhbgoraW5vZGUgbGlua2VkIGxpc3QgdGhhdCBoYWQgc29tZWhvdyBnb3R0ZW4gZGlzY29ubmVjdGVkLiAgKEFkZHJlc3NlcworU291cmNlZm9yZ2UgYnVnICM2MjA5ODApCisKK1BhcnRpdGlvbiBpbiAvcHJvYy9wYXJ0aXRpb25zIHRoYXQgYmVpbmcgd2l0aCB0aGUgc3RyaW5nICJsdm0iIGFyZQorY29uc2lkZXJlZCByZWFsIHBhcnRpdGlvbnMgZXZlbiBpZiB0aGV5IGRvIG5vdCBlbmQgd2l0aCBhIG51bWJlci4KKworRml4ZWQgYSBidWcgaW4gdGhlIHRoZSB1dWlkIGdlbmVyYXRpb24gZnVuY3Rpb24sIHdoZXJlIGlmIC9kZXYvdXJhbmRvbQoraXMgbm90IHByZXNlbnQsIGJ1dCAvZGV2L3JhbmRvbSBpcywgYW5kIHRoZXJlIGlzbid0IHN1ZmZpY2llbnQKK2VudHJvcHksIHRoZSBnZXRfcmFuZG9tX2J5dGUgZnVuY3Rpb24gY291bGQgc3BpbiBhIGxvb3AgZm9yZXZlci4KKworRTJmc2NrLCBta2UyZnMsIGV0Yy4gd2lsbCBub3cgcmVsaWFibHkgbm90aWNlIHdoZW4gaW1hZ2UgZmlsZXMgYXJlCittb3VudGVkIHVzaW5nIHRoZSBsb29wYmFjayBpbnRlcmZhY2UuICAoQWRkcmVzc2VzIFNvdXJjZWZvcmdlIGJ1ZworIzYxOTExOSkKKworV2hlbiBmbHVzaGluZyBidWZmZXJzIChhcyBpcyBkb25lIGJ5IGJhZGJsb2NrcywgZm9yIGV4YW1wbGUpIGNoZWNrIHRvCitzZWUgaWYgdGhlIEJMS0ZMU0JVRiBpb2N0bCBzdWNjZWVkcywgYW5kIGlmIHNvLCBhdm9pZCB1c2luZyB0aGUKK0ZERkxVU0ggaW9jdGwgd2hpY2ggY2F1c2VzIHRoZSBNRCBkZXZpY2UgZHJpdmVyIHdoaWNoIGNhdXNlcyBjb25mdXNpbmcKK3N5c2xvZyBtZXNzYWdlcyBhYm91dCBvYnNlbGV0ZSBpb2N0bCBtZXNzYWdlcy4gIChBZGRyZXNzZXMgU291cmNlZm9yZ2UKK2J1ZyAjNTQ1ODMyKS4KKworRGVidWdmcydzIHdyaXRlIGNvbW1hbmQgbm93IGNoZWNrcyB0byBzZWUgaWYgdGhlIGRlc3RpbmF0aW9uIGZpbGVuYW1lCitleGlzdHMgYmVmb3JlIGNyZWF0aW5nIGl0LiAgKEFkZHJlc3NlcyBTb3VyY2Vmb3JnZSBidWcgIzQ3ODE5NS4pCisKK1doZW4gaW5zdGFsbGluZyBtYW4gcGFnZXMsIHNlYXJjaCBmb3IgY29tcHJlc3NlZCBtYW4gcGFnZXMgdXNpbmcgYWxsCitjb21tb25seSB1c2VkIGNvbXByZXNzaW9uIGV4dGVuc2lvbnMgKGkuZS4sIC5aLCAuZ3osIC5iejIsIGV0Yy4pCisKK0ZpeGVkIGEgYnVnIGluIGZzY2sgd2hlcmUgbXVsdGlwbGUgZmlsZXN5c3RlbXMgc3BlY2lmaWVkIG9uIHRoZQorY29tbWFuZCB3ZXJlIG5vdCBiZWluZyBjaGVja2VkIGluIHBhcmFsbGVsIGR1ZSB0byBhIGxvZ2ljIGJ1ZworaW50cm9kdWNlZCB0byBzdXBwb3J0IHRoZSBGU0NLX01BWF9JTlNUIGVudmlyb25tZW50IHZhcmlhYmxlLgorCitXZSBoYXZlIGFkZGVkIGEgbmV3IHN1cGVyYmxvY2sgZmllbGQsIHNfbWtmc190aW1lLCB3aGljaCBpbmRpY2F0ZXMKK3doZW4gYSBmaWxlc3lzdGVtIHdhcyBjcmVhdGVkLiAgSXQgaXMgc2V0IHZpYSBta2UyZnMsIGFuZCBwcmludGVkIG91dAorYnkgZHVtcGUyZnMsIGJ1dCBpcyBub3QgYWN0dWFsbHkgdG91Y2hlZCBieSB0aGUga2VybmVsLgorCitEdW1wZTJmcyBoYXMgYmVlbiBtYWRlIG1vcmUgcm9idXN0IGJ5IG5vdCBhYm9ydGluZyBpZiB0aGVyZSBpcyBhbgorZXJyb3IgcmVhZGluZyB0aGUgYmxvY2svaW5vZGUgYml0bWFwczsgaW5zdGVhZCBpdCB3aWxsIHN0aWxsIHByaW50IG91dAordGhlIGxvY2F0aW9uIG9mIHRoZSBibG9jay9pbm9kZSBiaXRtYXBzIGFuZCBpbm9kZSB0YWJsZS4KKworQWRkIHN1cHBvcnQgZm9yIHRoZSBhbiBhbHRlcm5hdGl2ZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGxheW91dCB3aGljaAorYWxsb3dzIGZvciBvbi1saW5lIHJlc2l6aW5nIHdpdGhvdXQgbmVlZGluZyB0byBwcmVwYXJlIHRoZSBmaWxlc3lzdGVtCitpbiBhZHZhbmNlLiAgKFRoaXMgaXMgdGhlIGluY29tYXQgZmVhdHVyZSBmbGFnIG1ldGFfYmcuKQorCitBZGQgc3VwcG9ydCBmb3Igc3RvcmluZyBkZWZhdWx0IG1vdW50IG9wdGlvbnMgaW4gdGhlIHN1cGVyYmxvY2ssIHNvCit0aGF0IHRoZSBmaWxlc3lzdGVtIGNhbiBiZSBtb3VudGVkIHdpdGggc3BlY2lmaWMgbW91bnQgb3B0aW9ucyB3aXRob3V0CituZWVkaW5nIHRvIHNwZWNpZnkgdGhlbSBvbiB0aGUgbW91bnQgY29tbWFuZCBsaW5lIG9yIGluIHRoZSAvZXRjL2ZzdGFiCitmaWxlLgorCitBZGQgc3VwcG9ydCBmb3IgYSBuZXcgaW5vZGUgZmxhZywgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgaW5kaWNhdGluZwordGhlIHRvcCBvZiBkaXJlY3RvcnkgaGllcmFyY2hpZXMgZm9yIHRoZSBPcmxvdiBibG9jayBhbGxvY2F0b3IuCisKK0ZpeCBlMmZzY2sgc28gdGhhdCBpZiBpdCBjcmVhdGVzIHRoZSBsb3N0K2ZvdW5kIGRpcmVjdG9yeSwgaXQgZG9lcyBzbword2l0aCB0aGUgbW9yZSBhcHBvcnByaWF0ZSBwZXJtaXNzaW9ucyBvZiAwNzAwLiAgQWxzbyBjaGFuZ2UKK21rbG9zdCtmb3VuZCBzbyB0aGF0IGl0IGFsc28gY3JlYXRlcyB0aGUgZGlyZWN0b3J5IDA3MDAuCisKK0ZpeGVkIGZvcm1hdCBidWcgaW4gZTJmc2NrIGlmIE5MUyBpcyBpbiB1c2UuCisgIAorQWRkIGEgR2VybWFuIHRyYW5zbGF0aW9uIGZvciBlMmZzcHJvZ3MncyBOTFMgc3VwcG9ydC4KKworRml4ZWQgZTJmc2NrIHNvIHRoYXQgaXQgbW9yZSBoYW5kbGVzIEJBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSBldmVuIGF0Cit0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbm9kZSB0YWJsZS4gIFRoaXMgd29uJ3QgbWF0dGVyIG11Y2gsIHNpbmNlIGlmCit0aGVyZSBpcyBhIGJhZCBibG9jayBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbm9kZSB0YWJsZSwgdGhlIHJvb3QKK2RpcmVjdG9yeSB3b24ndCBiZSBhdmFpbGFibGUuICBCdXQgYXQgbGVhc3QgZTJmc2NrIHdvbid0IGNyYXNoIGluIHRoaXMKK2Nhc2UuCisKK0ZpeGVkIGVuZGlhbiBwcm9ibGVtcyBpbiB0aGUgaHRyZWUgY29kZSBmb3IgZTJmc2NrIGFuZCBkZWJ1Z2ZzLgorICAKK1doZW4gYnl0ZS1zd2FwcGluZyBhIGZpbGVzeXN0ZW0gb24gYSBQUEMgYXJjaGl0ZWN0dXJlLCBieXRlLXN3YXAgdGhlCitiaXRtYXBzIHNpbmNlIHRoZSBoaXN0b3JpY2FsIGJpZy1lbmRpYW4gZXh0MiB2YXJpYW50IGhhZCBieXRlLXN3YXBwZWQKK2JpdG1hcHMsIGFuZCB0aGUgZXh0MmZzIGxpYnJhcnkgYXNzdW1lcyB0aGlzLiAgVGhpcyBmaXhlcyB0aGUKK3JlZ3Jlc3Npb24gdGVzdCBzdWl0ZSBvbiBQUEMgbWFjaGluZXMuCisKK0ZpeCBlMmltYWdlIHNvIHRoYXQgaXQgaGFuZGxlcyBhIGJhZCBibG9jayBpbiB0aGUgaW5vZGUgdGFibGUKK2FwcHJvcHJpYXRlbHkuCisKK0UyZnNjayBub3cgdXNlcyBhIG1vcmUgc29waGlzdGljYXRlZCBhbGdvcml0aG0gdG8gc2FsdmFnZSBjb3JydXB0ZWQKK2RpcmVjdG9yaWVzIHRoYXQgcmVjb3ZlcnMgbW9yZSBpbmZvcm1hdGlvbiBpbiB0aGUgY29ycnVwdGVkIGRpcmVjdG9yeQorYmxvY2suCisKK0UyZnNjayBub3cgcGVyZm9ybXMgYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3Mgb24gaW5kZXhlZCAoSFRSRUUpCitkaXJlY3Rvcmllcy4KKworRml4IGJ1ZyB3aGVyZSBlZnNjayBtaWdodCBnZXQgY29uZnVzZWQgYWJvdXQgd2hldGhlciBhIGNvbXBsZXRlbHkKK2VtcHR5IGRpcmVjdG9yeSBibG9jayBpcyBhbiBlbXB0eSBsZWFmIGJsb2NrIG9yIGFuIGludGVyaW9yIGh0cmVlCitub2RlLiAgVGhpcyBjb3VsZCBjYXVzZSBlMmZzY2sgdG8gZ2V0IGNvbmZ1c2VkIGludG8gdGhpbmsgdGhhdCBhIHZhbGlkCitpbmRleGVkIGRpcmVjdG9yeSB3YXMgY29ycnVwdGVkLgorCitFMmZzY2sgbm8gbG9uZ2VyIGNyZWF0ZXMgYW4gZW1wdHkgZGlyZWN0b3J5IGVudHJ5IGF0IHRoZSBlbmQgb2YgYQorZGlyZWN0b3J5IGJsb2NrIHdoZW4gb3B0aW1pemluZyBhIGRpcmVjdG9yeS4gIFRoaXMgd291bGQgY2F1c2Ugc29tZQorZWFybGllciB2ZXJzaW9ucyBvZiB0aGUgZHhkaXIga2VybmVsIGNvZGUgdG8gY29ycnVwdCB0aGUgZGlyZWN0b3J5Cit3aGVuIGF0dGVtcHRpbmcgdG8gc3BsaXQgYSBub2RlIGNvbnRhaW5pbmcgYW4gZW1wdHkgZGlyZWN0b3J5IGVudHJ5LgorCitFMmZzY2sgY291bGQgc29tZXRpbWVzIGluIHJhcmUgY2lyY3Vtc3RhbmNlcyBsZWF2ZSB0aGUgaW5kZXhlZCBmbGFnCitzZXQgYWZ0ZXIgYSBzbWFsbCBkaXJlY3Rvcnkgd2FzIG9wdGltaXplZCBieSBjb21wcmVzc2luZyBpdCBpbnN0ZWFkIG9mCitpbmRleGluZyBpdC4gIChUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gaW4gcmVhbCBsaWZlLCBzaW5jZQorZGlyZWN0b3JpZXMgdGhhdCBzbWFsbCB3b3VsZG4ndCBoYXZlIGJlZW4gaW5kZXhlZCwgYnV0IGJldHRlciBzYWZlCit0aGFuIHNvcnJ5LikKKworRTJmc2NrIG5vdyBvbmx5IHVwZGF0ZXMgdGhlIG1hc3RlciBzdXBlcmJsb2NrIGluIGFsbCBjYXNlcy4gIFRoaXMKK3NsaWdodGx5IHNob3J0ZW5zIGl0cyBydW4gdGltZS4KKworRXh0MmVkIGNhbiBkZWFsIHdpdGggZGlyZWN0b3J5IGVudHJpZXMgb2YgbGVuZ3RoIDA7IHByZXZpb3VzbHkgaXQKK3dvdWxkIGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wLgorCitGc2NrIG5vdyBoYXMgc3VwcG9ydCBmb3IgcmVpc2VyZnMgdm9sdW1lcyB3aGVuIHBhcnNpbmcgTEFCRUw9IGFuZCBVVUlEPQorc3BlY2lmaWVycy4gIChTb3VyY2Vmb3JnZSBwYXRjaCAjNjEzNDQ3KQorCitCYWRibG9ja3Mgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgb24gcmVhZC1vbmx5IGRldmljZXMgc3VjaCBhcworQ0QtUk9NJ3MuICAoU291cmNlZm9yZ2UgcGF0Y2ggIzYwMDQ1MSkKKworVXBkYXRlZCBhbmQgY2xhcmlmaWVkIG1hbiBwYWdlcy4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTY3MTA4KQorCisKK0UyZnNwcm9ncyAxLjI5IChTZXB0ZW1iZXIgMjQsIDIwMDIpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY291bGQgY29ycnVwdCBhIGRpcmVjdG9yeSB3aGVuIG9wdGltaXppbmcKK2l0ICh2aWEgdGhlIC1EIG9wdGlvbikgb3IgcmVidWlsaWRpbmcgdGhlIGhhc2ggdHJlZSBpbmRleCB3aXRoIGEgMSBpbgorNTEyIHByb2JhYmlsaXR5LCBkdWUgdG8gYSBmZW5jZSBwb3N0IGVycm9yLgorCitGaXhlZCBhIGJ1ZyBpbiB0aGUgTFZNIHN1cHBvcnQgY29kZSB3aGljaCBjYXVzZWQgTEFCRUw9J3h4eCcgbm90IHRvCit3b3JrIGNvcnJlY3RseS4KKworTWtlMmZzIG5vdyBlbmFibGVzIHRoZSBkaXJlY3RvcnkgaW5kZXhpbmcgZmxhZyBieSBkZWZhdWx0LiAgKFNpbmNlCit0aGlzIGlzIGEgY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcsIGl0J3Mgc2FmZSB0byBkbyBzby4pCisKK1R1bmUyZnMgd2lsbCBzdXBwb3J0IHNldHRpbmcgdGhlIGRpcmVjdG9yeSBpbmRleGluZyBmZWF0dXJlIGZsYWcuICBJdAord2lsbCBhdXRvbWF0aWNhbGx5IHNldCB1cCB0aGUgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSBhbmQgaGFzaCBzZWVkCitmaWVsZHMgaW4gdGhlIHN1cGVyYmxvY2suCisKK0lmIHRoZSBib25lLWhlYWRlZCB1c2VyIGVudGVycyB0aGUgcm9vdCBmaWxlc3lzdGVtIHR3aWNlIGluCisvZXRjL2ZzdGFiLCB0aGUgLVIgb3B0aW9uIHdoaWNoIHNraXBzIHRoZSByb290IGZpbGVzeXN0ZW0gd2lsbCBza2lwCithbGwgb2YgdGhlbS4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTU5NDIzKS4gIE5vdGUhICBUaGlzIGlzIG5vdCBhCitwcmVjZWRlbnQgZm9yIGRlYWxpbmcgaW50ZWxsaWdlbnRseSB3aXRoIGFueSBvdGhlciBraW5kIG9mIGRvdWJsZWQKK2VudHJ5IGluIC9ldGMvZnN0YWIhCisKKworUHJvZ3JhbW1lcidzIG5vdGVzOiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVtb3ZlZCBwZXJyb3IgZGVjbGFyYXRpb24gaW4gbGliL2V0L2ludGVybmFsLmguICBBbGwgbW9kZXJuIHN5c3RlbXMKK2NhbiBiZSBleHBlY3RlZCB0byBkZWZpbmUgcGVycm9yKCkgdGhlc2UgZGF5cy4gIEJlc2lkZXMsIHRoZSBsaWIvZXQKK2NvZGUgd2Fzbid0IHVzaW5nIHBlcnJvciBhdCBhbGwgYW55d2F5LiAgOi0pCisKKworRTJmc3Byb2dzIDEuMjggKEF1Z3VzdCAzMSwgMjAwMikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZCBzdXBwb3J0IGZvciB0aGUgSGFzaGVkLVRyZWUgRGlyZWN0b3J5IEluZGV4aW5nIHRvIGUyZnNjay4gIFN1cHBvcnQKK2ZvciBzZXR0aW5nIHRoZSBodHJlZSBmbGFnIGlzIG5vdCBpbmNsdWRlZCB5ZXQsIGFsdGhvdWdoIGl0IGNhbiBiZQorbWFudWFsbHkgdHVybmVkIG9uIHZpYSB0aGUgZGVidWdmcyBwcm9ncmFtLgorCitDbGFyaWZpZWQgZTJmc2NrIGVycm9yIG1lc3NhZ2Ugd2hpY2ggaXMgcHJpbnRlZCB3aGVuIGl0IGNhbm5vdCBmaW5kCitzdWZmaWNpZW50IGNvbnRpZ3VvdXMgYmxvY2sgd2hlbiByZWxjYXRpbmcgZmlsZXN5c3RlbSBtZXRhZGF0YS4KKworQWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgYW4gRVZNUyBwbHVnaW4gbW9kdWxlIGZvciBleHQyLzMuICBUaGlzCittb2R1bGUgaXMgc3Vic3RhbnRpYWxseSB0aGUgc2FtZSBhcyB0aGUgRVZNUyBtb2R1bGUgc2hpcHBpbmcgd2l0aCBFVk1TCisxLjEsIHdpdGggb25lIG9yIHR3byBidWdmaXhlcy4gIEUyZnNwcm9ncyBjYW4gYWxzbyBidWlsZCB0aGlzIHBsdWdpbgorZm9yIHVzZSB3aXRoIEVWTVMgMS4wICh3aGljaCBkaWQgbm90IGluY2x1ZGUgdGhlIGV4dDIgcGx1Z2luIG1vZHVsZSksCitpZiB0aGUgY29uZmlndXJlIC0tZW5hYmxlLW9sZC1ldm1zIGZsYWcgaXMgZ2l2ZW4uCisKK0ZzY2sgd2lsbCBzZWFyY2ggdGhyb3VnaCBFVk1TIHZvbHVtZXMgd2hlbiB0cnlpbmcgdG8gcmVzb2x2ZQorZmlsZXN5c3RlbSBzcGVjaWZpY2F0aW9ucyBzdWNoIGFzIExBQkVMPXh4eCBvciBVVUlEPXh4eC4KKyAgCitBZGRlZCBhIG5ldyB1dGlsaXR5IHByb2dyYW0sIC9zYmluL2ZpbmRmcywgd2hpY2ggd2lsbCByZXR1cm4KK2ZpbGVzeXN0ZW0gc3BlY2lmaWNhdGlvbnMgc3VjaCBhcyBMQUJFTD14eHggb3IgVVVJRD14eHgsIGFuZCBwcmludHMKK3RoZSBkZXZpY2UgbmFtZS4KKworVXBkYXRlIGFuZCBjbGFyaWZpZWQgdmFyaW91cyBtYW4gcGFnZXMuIChhZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMTQ1MDQ0LAorIzE0NjQzNywgIzEzMTM1MCwgIzE1MTk5MCwgIzE0NDYyMSwgIzE0MTkzOCkKKworSWYgdGhlcmUgYXJlIG5vIGZpbGVzeXN0ZW1zIHNwZWNpZmllZCBvbiBmc2NrJ3MgY29tbWFuZCBsaW5lLCBmc2NrIG5vdwordHJlYXQgdGhhdCBhcyBpZiB0aGUgLUFzIG9wdGlvbnMgd2VyZSBnaXZlbi4gIFByZXZpb3VzbHkgaXQgd291bGQKK3NpbXBseSBkbyBub3RoaW5nLiAgKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMxNTMxMDIpCisKK01rZTJmcyBubyBsb25nZXIgdHJlYXRzIGEgZmFpbHVyZSB0byBiZSBhYmxlIHRvIGNsZWFyIHRoZSBNRCBzaWduYXR1cmUKK2F0IHRoZSBlbmQgb2YgdGhlIGZpbGVzeXN0ZW0gYXMgYSBmYXRhbCBlcnJvci4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZworIzE1NTAwNykKKworVGhlIGUycCBsaWJyYXJ5IGZ1bmN0aW9ucyAod2hpY2ggYXJlIHVzZWQgYnkgbHNhdHRyIGFuZCBjaGF0dHIpIG5vdworZG91YmxlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyBhIHJlZ3VsYXIgZmlsZSBvciBkaXJlY3RvcnkKK2JlZm9yZSBhdHRlbXB0aW5nIHRvIHVzZSB0aGUgZXh0MiBpb2N0bHMuICBTb21lIGRldmljZSBkcml2ZXJzCit1bmZvcnR1bmF0ZWx5IHJlc3BvbmQgdG8gdGhlIGV4dDIgaW9jdGwncyB3aXRoIHVua25vd24gYmVoYXZpb3VyLgorKEFkZHJlc3NlcyBEZWJpYW4gQnVnICMxNTIwMjkpLgorCitUaGUgZXh0ZW5kZWQgYXR0cmlidXRlIGhhbmRsaW5nIGhhcyBiZWVuIHVwZGF0ZWQgdG8gY29ycmVzcG9uZCB3aXRoCit0aGUgbGF0ZXN0IFYyIGJlc3RiaXRzIEFDTCBjb2RlLgorCitGaXhlZCBidWcgaW4gZTJmc2NrIHdoaWNoIGNhdXNlZCBpdCB0byBub3QgY2xlYXIgdGhlIGR0aW1lIGZpZWxkIHdoZW4KK3Byb2Nlc3NpbmcgdHJ1bmNhdGVkIGlub2RlcyBvbiB0aGUgb3JwaGFuIGxpc3QuICBUaGlzIGNvdWxkIGNhdXNlIGRhdGEKK2xvc3MoISkgaWYgYSBmaWxlc3lzdGVtIGlzIHJlYm9vdGVkIGJlZm9yZSBhIHRydW5jYXRlIGhhcyBiZWVuCitjb21taXR0ZWQuCisKK0UyZnNjayBub3cgdXNlcyByZWQvYmxhY2sgdHJlZXMgaW4gcGFzczFiLCB3aGljaCByZW1vdmVzIHNvbWUgTyhuKioyKQorYWxnb3JpdGhtcy4gIFRoaXMgbWFrZXMgZTJmc2NrIG11Y2ggZmFzdGVyIGluIHRoZSBjYXNlIG9mIHNldmVyZWx5Citjb3JydXB0ZWQgZmlsZXN5c3RlbXMgd2hlcmUgYSBsYXJnZSBudW1iZXIgb2YgYmxvY2tzIGFyZSBjbGFpbWVkIGJ5IGEKK2xhcmdlIG51bWJlciBvZiBpbm9kZXMuICAoVGhhbmtzIHRvIHRoZSAyLjUgSURFIGRldmljZSBkcml2ZXIgZm9yCitpbnNwaXJpbmcgdGhpcyB3b3JrLikKKworUmVzaXplMmZzIGhhcyBiZWVuIHNpZ25pZmljYW50bHkgc3BlZCB1cCB3aGVuIHNocmlua2luZyBhbmQgZXhwYW5kaW5nCithIGZpbGVzeXN0ZW0gYnkgYSB2ZXJ5IHNtYWxsIG51bWJlciBvZiBibG9ja3MgKGZvciBleGFtcGxlLCB3aGVuIEVWTVMKK2lzIGNvbnZlcnRpbmcgYSBwYXJ0aXRpb24gdG8gYmUgYW4gRVZNUyBsZWdhY3kgdm9sdW1lKS4KKworQWRkZWQgYSBuZXcgb3B0aW9uIHRvIGUyZnNjaywgLUQsIHdoaWNoIHdpbGwgb3B0aW1pemUgb3IgY29tcHJlc3MgYWxsCitvZiB0aGUgZGlyZWN0b3JpZXMgaW4gdGhlIGZpbGVzeXN0ZW0uCisKK0UyZnNjayBub3cgY2F0Y2hlcyBTSUdJTlQgYW5kIFNJR1RFUk0gdG8gbWFrZSBzdXJlIGl0IHdpbGwgY2FuCitwcm9wZXJseSBjbGVhbiB1cCBhbmQgb25seSBleGl0IGF0IHNhZmUgcG9pbnRzLiAgRnNjayB3aWxsIHBhc3MKK1NJR0lOVC9TSUdURVJNIHRvIGl0cyBjaGlsZCBwcm9jZXNzZXMsIGFuZCB3YWl0IHVudGlsIHRoZXkgaGF2ZSBhbGwKK2V4aXRlZCBiZWZvcmUgaXQgZXhpdHMuCisKK1RoZSB1dWlkIHBhcnNpbmcgY29kZSBpbiB0aGUgdXVpZCBsaWJyYXJ5IG5vdyBwcm9wZXJseSBjb21wbGFpbnMgd2hlbgorYW4gaWxsZWdhbGx5IGZvcm1hdGVkIHV1aWQgaXMgcHJlc2VudGVkIHRvIGl0LiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnCisjMTUyODkxKQorCitSZXN0cmljdCB1c2Ugb2YgdGhlIDIuNCBzZXRybGltaXQgQUJJIGYqY2t1cCB0byBrZXJuZWxzIGJldHdlZW4gMi40LjEwCithbmQgMi40LjE3LCBzaW5jZSB0aGUgd29ya2Fyb3VuZCBjYW4gY2F1c2UgcHJvYmxlbXMgd2hlbiB1c2luZyBhIDIuNAora2VybmVsIHdpdGggYW4gb2xkIHZlcnNpb24gb2YgZ2xpYmMgYnVpbHQgd2l0aCB0aGUgMi4yIGhlYWRlcnMuCisKK0ZpeGVkIGEgYnVnIGluIG1rZTJmcyB3aGVyZSBpdCB3YXNuJ3QgcHJvcGVybHkgY2xlYXJpbmcgdGhlIGluaXRpYWwKK3N1cGVyYmxvY2sgdXNlZCBieSBvdGhlciBmaWxlc3lzdGVtcy4gIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTQ3MjU2LikKKworQWRkZWQgc3VwcG9ydCBmb3IgdGhlIHN5bmNocm9ub3VzIGRpcmVjdG9yeSBmZWF0dXJlIHdyaXR0ZW4gYnkgQW5kcmV3CitNb3J0b24uCisKK1RoZSBkZWJ1Z2ZzIHByb2dyYW0gY2FuIGRlbGV0ZSBkaXJlY3RvcmllcyB1c2luZyB0aGUgcm1kaXIgY29tbWFuZC4KKworQWRkIHN1cHBvcnQgZm9yIDhrIGFuZCAxNmsgZmlsZXN5c3RlbXMgKGZvciBzeXN0ZW1zIHdpdGggcGFnZSBzaXplcwordGhhdCBhcmUgZ3JlYXRlciBvciBlcXVhbCB0byA4ayBvciAxNmssIHJlc3BlY3RpdmVseSkuICBOb3RlIHRoYXQKK3RoZXNlIGZpbGVzeXN0ZW1zIGNhbiBub3QgYmUgbW91bnRlZCBvbiB4ODYgc3lzdGVtcywgb3Igb3RoZXIgc3lzdGVtcword2l0aCBvbmx5IDRrIHBhZ2Ugc2l6ZXMsIGR1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgY3VycmVudCBMaW51eCBWTQorY29kZS4KKworUmVzaXplMmZzIHJlcXVpcmVzIHRoYXQgdGhlIGZpbGVzeXN0ZW0gc3RhdGUgYmUgdmFsaWQgYW5kIGhhdmUgbm8KK2Vycm9yczsgb3RoZXJ3aXNlLCBlMmZzY2sgLWYgbXVzdCBiZSBydW4gZmlyc3QuICAoUHJldmlvdXNseSBpdCBzaW1wbHkKK3JlcXVpcmVkIHRoYXQgdGhlIGxhc3QgZnNjayB0aW1lIGJlIGdyZWF0ZXIgdGhhbiB0aGUgbGFzdCBtb3VudCB0aW1lLikKKworQ29uZmlndXJlIG5vdyBkZWZhdWx0cyB0aGUgbWFuIHBhZ2VzIGRpcmVjdG9yeSB0byAvdXNyL3NoYXJlL21hbiBvbgorTGludXggc3lzdGVtcy4KKworRTJmc2NrIG5vdyBvZmZlcnMgdG8gdHJ1bmNhdGUgaW5vZGVzIHdoaWNoIGNvbnRhaW4gdG9vIG1hbnkgYmxvY2tzIChzbwordGhhdCBpX2Jsb2NrcyB3b3VsZCBvdmVyZmxvdy4gIEFsc28gZml4ZWQgaGFuZGxpbmcgb2YgbGFyZ2Ugc3BhcnNlCitmaWxlcy4KKworRTJmc2NrIG5vdyBtb3JlIGNvbXBsZXRlbHkgY2hlY2tzIGZvciBzeW1saW5rIHZhbGlkaXR5LCBpbmNsdWRpbmcKK3JlcXVpcmluZyBOVUxMIHRlcm1pbmF0aW9uIGFuZCBsZW5ndGggY2hlY2tzLgorCitFMmZzY2sgd2lsbCBvZmZlciB0byB0cnkgZm9yY2luZyBhIGRpc2sgd3JpdGUgdG8gcmVtYXAgYSBiYWQgYmxvY2sKK2FmdGVyIGZpbmRpbmcgYSByZWFkIGVycm9yIHdoZW4gcmVhZGluZyBhIGZpbGVzeXN0ZW0gbWV0YWRhdGEgYmxvY2suCisKK0ZpeGVkIGEgYnVnIGluIGRlYnVnZnMgd2hpY2ggY2F1c2VkIHRoZSAtYiBhbmQgLXMgb3B0aW9ucyB0byBjcmFzaAorZGVidWdmcywgYXMgd2VsbCBhcyBicmVha2luZyB0aGUgdGVzdGIsIHNldGIsIGFuZCBjbGVhcmIgZnVuY3Rpb25zLgorCitBZGRlZCBhIGJtYXAgY29tbWFuZCB0byBkZWJ1Z2ZzIHdoaWNoIGNhbGN1bGF0ZXMgdGhlIGxvZ2ljYWwgdG8KK3BoeXNpY2FsIGJsb2NrIG1hcHBpbmcgZm9yIGEgcGFydGljdWxhciBpbm9kZS4KKworRml4ZWQgYSBidWcgaW4gY29kZSB3aGljaCBjaGVja2VkIHRvIHNlZSBpZiBhIGRldmljZSB3YXMgbW91bnRlZCB3aGljaAorc29tZXRpbWVzIChyYXJlbHkpIGZhaWxlZCBpbiB0aGUgY2FzZSBvZiBhIHBsYWluIGZpbGUuCisKK0ZpeGVkIGEgYnVnIGluIHJlc2l6ZTJmcyB3aGVyZSB3aGVuIGl0IHJlcG9ydGVkIGFuIGVycm9yLCBpdCB3b3VsZAorcHJpbnQgYSBtZXNzYWdlIGVycm9uZW91c2x5IGluZGljYXRpbmcgdGhhdCB0aGUgZmlsZXN5c3RlbSBoYWQgYmVlbgorcmVzaXplZCBiZWZvcmUgaXQgYWJvcnRlZC4KKworV2hlbiByZXNpemluZyBhIHBsYWluIGZpbGUgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRoZSByZXF1ZXN0ZWQgc2l6ZSwKK3Jlc2l6ZTJmcyB3aWxsIGF0dGVtcHQgdG8gZXh0ZW5kZWQgdGhlIGZpbGUgc28gdGhhdCBwcm9ncmFtcyBsaWtlCitlMmZzY2sgd2lsbCBub3QgY29tcGxhaW4gdGhhdCB0aGUgZmlsZSBpcyB0b28gc21hbGwuCisKK1Jlc2l6ZTJmcyB3aWxsIHByaW50IHRoZSBhY3R1YWwgbmV3IHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0gd2hlbiBpdCBpcworZmluaXNoZWQgcmVzaXppbmcuCisKK0ZpeGVkIGEgYnVnIGluIGRlYnVnZnMgd2hlcmUgImxzIC1sIiB3b3VsZCByZXBvcnQgaW5jb3JyZWN0bCBmaWxlIHR5cGUKK2luZm9ybWF0aW9uIG9uIGJpZy1lbmRpYW4gc3lzdGVtcy4KKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpeGVkIGNvbGxpc2lvbnMgd2l0aCBDKysgcmVzZXJ2ZWQgd29yZHMuCisKK0FkZGVkIHBvcnRhYmlsaXR5IGZpeGVzIGZvciBidWlsZGluZyBlMmZzcHJvZ3Mgb24gdGhlIEhVUkQgYW5kIEFJWC4KKworQWRkZWQgdGhlIGV4dDJlZCBwcm9ncmFtIGZvciBjcmVhdGlvbiBvZiB0ZXN0IGNhc2VzLiAgKGV4dDJlZCBoYXMgbWFueQorbGltaXRhdGlvbnMgYW5kIGJ1Z3Mgd2hpY2ggbWFrZSBpdCB1bnN1aXRhYmxlIGZvciBwcm9kdWN0aW9uIHVzZS4pCisKK1RoZSBleHQyZnNfcmVhZF9kaXJfYmxvY2syIGFuZCBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrIG5vdyB0YWtlIGEgbmV3CitmbGFnLCBFWFQyX0RJUkJMT0NLX1YyX1NUUlVDVCwgd2hpY2ggd2lsbCB3aWxsIHJldmVyc2Ugd2hlbiB0aGUKK25hbWVfbGVuIGZpZWxkIGlzIGJ5dGUgc3dhbXBwZWQgb24gYmlnLWVuZGlhbiBtYWNoaW5lcywgc2luY2UgaW4gdGhlCitWMiBzdHJ1Y3R1cmUsIG5hbWVfbGVuIGlzIGEgY2hhciBmaWVsZCB3aGljaCBpcyBkb2Vzbid0IG5lZWQgdG8gYmUKK2J5dGUgc3dhcHBlZCAtLS0gZXhjZXB0IGlmIGFuIG9sZC1zdHlsZSBrZXJuZWwgaGFkIGJ5dGUtc3dhcHBlZCB0aGUKK25hbWVfbGVuIGZpZWxkIGFzIHBhcnQgb2YgdGhlIFYxIHN0cnVjdHVyZS4KKyAgCisKK0UyZnNwcm9ncyAxLjI3IChNYXJjaCA4LCAyMDAyKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSB3YXJuaW5nIG1lc3NhZ2VzIGZvciBta2UyZnMgbm93IGdvIHRvIHN0YW5kYXJkIGVycm9yLgorCitGaXhlZCB0byBtYWtlIHN1cmUgIm1ha2UgY2hlY2siIHJ1bnMgYWxsIG9mIHRoZSB0ZXN0IHByb2dyYW1zIHdpdGgKK0xEX0xJQlJBUllfUEFUSCBzZXQsIHNvIHRoYXQgd2UgdGVzdCB0aGUgbGlicmFyaWVzIGluIHRoZSBidWlsZCB0cmVlLgorCitUaGUgbWtlMmZzIHByb2dyYW0gY2hlY2tzIHRoZSBib290IHNlY3RvciBmb3IgdGhlIEJTRCBkaXNrIGxhYmVsLCBhbmQKK2F2b2lkcyBlcmFzaW5nIGl0IGlmIGl0IGlzIHRoZXJlLgorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2F1c2VkIGl0IHRvIGNvcmUgZHVtcCBpZiB0aGUgam91cm5hbAoraW5vZGUgd2FzIG1pc3Npbmcgd2hlbiBpdCB3YXMgc3VwcG9zZWQgdG8gYmUgdGhlcmUuCisKK0UyZnNjayBub3cgcHJpbnRzIHJhbmdlcyBpbiBwYXNzIDUgd2hlbiBwcmludGluZyBkZWx0YXMgZm9yIHRoZSBibG9jaworYW5kIGlub2RlIGJpdG1hcHMuCisKK0RlYnVnZnMncyAibHMgLWwiIGNvbW1hbmQgbm93IHdpbGwgcHJpbnQgb3V0IHRoZSBmaWxlIHR5cGUgaW5mb3JtYXRpb24KK2luIHRoZSBkaXJlY3RvcnkgZW50cnkuCisKK0NyZWF0ZSBtYW4gcGFnZXMgYW5kIGhhcmQgbGlua3MgZm9yIGZzY2suZXh0MyBhbmQgbWtmcy5leHQzLiAgSWYKK21rZTJmcyBpcyBpbnZva2VkIGFzIG1rZnMuZXh0MywgY3JlYXRlIHRoZSBmaWxlc3lzdGVtIHdpdGggYSBqb3VybmFsLgorCitEZWJ1Z2ZzIGNhbiBub3cgZXhhbWluZSB0aGUgZXhwZXJpbWVudGFsIGRpcmVjdG9yeSBpbmRleGluZworaW5mb3JtYXRpb24uCisKK0ZpeGVkIGJ1ZyBpbiBkZWJ1Z2ZzIHdoaWNoIGNhdXNlZCBpdCB0byBjb3JlIGR1bXAgaWYgbW9kaWZ5X2lub2RlIGlzCitjYWxsZWQgd2l0aG91dCBhbiBvcGVuIGZpbGVzeXN0ZW0uCisKK1RoZSBkZWJ1Z2ZzIGxzZGVsIGNvbW1hbmQgbm93IHJ1bnMgaXRzIG91dHB1dCB0aHJvdWdoIGEgcGFnZXIgZmlyc3QuCisKK1doZW4gaW5zdGFsbGluZyBtYW51YWwgcGFnZXMsIHJlbW92ZSB0aGUgY29tcHJlc3NlZCBtYW51YWwgcGFnZXMgZmlyc3QuCisKK1N5bmNocm9uaXplZCB3aXRoIERlYmlhbidzIHBhY2thZ2luZyBpbmZvcm1hdGlvbiBmb3IgZTJmc3Byb2dzLTEuMjYtMS4KKworRml4IHRoZSAyLjQgcmVzb3VyY2UgbGltaXRhdGlvbiB3b3JrYXJvdW5kIGludHJvZHVjZWQgaW4gMS4yNiB3aGljaAorYWN0dWFsbHkgYnJva2UgdGhpbmdzIG9uIG1pcHMzMiwgc3BhcmMzMiwgYW5kIEFscGhhIHBsYXRmb3Jtcy4KKworVXBkYXRlZCB0aGUgSTE4TiBjb2RlIHNvIHRoYXQgY2FsbHMgdG8gc2V0bG9jYXRlKExDX0NUWVBFLCAwKSBhcmUgbWFkZQorKHdoaWNoIGlzIHJlcXVpcmVkIGJ5IHRoZSBuZXdlciBsaWJpbnRsIGxpYnJhcmllcykuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgdmFyaW91cyBnY2MgLVdhbGwgY29tcGxhaW50cy4KKworRml4ZWQgYSBmZXcgbWVtb3J5IGxlYWtzIGluIHRoZSBlMmZzY2sgam91cm5hbGluZyBjb2RlLCBhbmQgaW4gdGhlCitpc21vdW50ZWQgY29kZSBjaGVja2luZyBmb3IgYSBzd2FwIGRldmljZS4KKworQWRkIG5ldyBpbm9kZSBJL08gYWJzdHJhY3Rpb24gaW50ZXJmYWNlIHdoaWNoIGV4cG9ydHMgYW4gaW5vZGUgYXMKK2FuIEkvTyBvYmplY3QuCisgIAorRXhwb3J0ZWQgZXh0Ml9maWxlX2ZsdXNoIGFzIGEgcHVibGljIGludGVyZmFjZS4KKyAgCitJbiBleHQyX2ZpbGVfd3JpdGUsIHdlIG5vdyBtYXJrIHRoZSBidWZmZXIgdm9pZCAqIGFyZ3VtZW50IGFzIGEgY29uc3QsIHNpbmNlIGV4dDJfZmlsZV93cml0ZSBkb2Vzbid0IG1vZGlmeSB0aGUgYnVmZmVyLgorCitMb3RzIG9mIHNtYWxsIHJhbmRvbSBwb3J0YWJpbGl0eSBmaXhlcyB0byBtYWtlIGUyZnNwcm9ncyBidWlsZCB1bmRlcgorQUlYIC0tLSBldmVuIHdpdGhvdXQgdGhlIDVMIGNvbXBhdGliaWxpdHkgdG9vbGtpdCwgYW5kIGV2ZW4gdXNpbmcgdGhlCit1YmVyLWNyaXBwbGVkIEFJWCBuYXRpdmUgQyBjb21waWxlci4KKworCitFMmZzcHJvZ3MgMS4yNiAoRmVicnVhcnkgMywgMjAwMikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitEdW1wZTJmcyB3aWxsIGtlZXAgZ29pbmcgbm93IGlmIHRoZSBiYWQgYmxvY2sgaW5vZGUgY2FuJ3QgYmUgcmVhZC4KKyhQcmV2aW91c2x5IGl0IHN0b3BwZWQgd2l0aCBhIGZhdGFsIGVycm9yLikKKworRTJmc2NrIHdpbGwgbm93IGdpdmUgYW4gb3Bwb3J0dW5pdHkgdG8gcnVuIHRoZSBqb3VybmFsIGV2ZW4gaWYgdGhlCityZWNvdmVyeSBmbGFnIGlzIG5vdCBzZXQuICBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ciBpZiBlMmZzY2sgaXMKK3VzaW5nIGEgYmFja3VwIHN1cGVyYmxvY2ssIHNpbmNlIHRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIHdpbGwgbmV2ZXIgYmUKK3NldCBpbiB0aGUgYmFja3VwIHN1cGVyYmxvY2sgY29waWVzLgorCitFMmZzY2sgbm93IGF1dG9tYXRpY2FsbHkgZmluZHMgdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzCitldmVuIHdoZW4gdGhlIHByaW1hcnkgc3VwZXJibG9jayBpcyBjb21wbGV0ZWx5IGRlc3Ryb3llZCBmb3IgMmsgYW5kIDRrCitmaWxlc3lzdGVtcy4gIChQcmV2aW91c2x5IGl0IGp1c3QgZ3Vlc3NlZC9hc3N1bWVkIHRoYXQgd2Ugd2VyZSBkZWFsaW5nCit3aXRoIGEgMWsgZmlsZXN5c3RlbSBpbiB0aGF0IGNhc2UsIGFuZCB1c2VycyBoYWQgdG8gbWFudWFsbHkgc3BlY2lmeQordGhlIGJhY2t1cCBzdXBlcmJsb2NrIG51bWJlci4pCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayB3aGVyZSBpdCBkZXJlZmVyZW5jZXMgYSBudWxsIHBvaW50ZXIgd2hlbiB0aGVyZQoraXMgYSBwcm9ibGVtIG9wZW5pbmcgYSBmaWxlc3lzdGVtIGluIHByZWVuIG1vZGUuCisKK0UyZnNjayBub3cgaGFuZGxlcyBleHRlcm5hbCBqb3VybmFscyBjb3JyZWN0bHk7IHByZXZpb3VzbHkgaXQgdHJhc2hlZAordGhlIGV4dGVybmFsIGpvdXJuYWwgZGV2aWNlIGlmIHRoZSBqb3VybmFsIG5lZWRlZCB0byBiZSByZXBsYXllZC4KKworV29yayBhcm91bmQgdWxpbWl0IGluY29tcGF0aWJpbGl0eSBwcm9ibGVtIGNhdXNlZCBieSByZWNlbnQgMi40CitrZXJuZWxzOyB0aGUgdW5peCBJTyBtb2R1bGUgd2lsbCBhdXRvbWF0aWNhbGx5IHRyeSB0byBzZXQgYW55IHJlc291cmNlCitsaW1pdHMgdG8gYmUgaW5maW5pdGUgb24gc3RhcnR1cC4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoZXJlIGl0IHdhc24ndCBhbGxvY2F0aW5nIGEgbmV3IGJsb2NrIG9yIGlub2RlCitiaXRtYXAgaWYgaXQgd2Fzbid0IHByZXNlbnQgYW5kIHRoZSBibG9ja3NpemUgd2FzIDJrIG9yIDRrLgorIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMTE2OTc1KQorCitFMmZzY2sgd2lsbCBjaGVjayBhbmQgZml4IGJvdGNoZWQgZXh0MyBWMSB0byBWMiBzdXBlcmJsb2NrIHVwZGF0ZXMgYnkKK2NsZWFyaW5nIHRoZSBuZXcgVjIgZmllbGRzIGlmIHRoZXkgZG8gbm90IG1ha2Ugc2Vuc2Ugb3IgaWYgdGhlIGV4dDMKK3N1cGVyYmxvY2sgaXMgdmVyc2lvbiAxIHN1cGVyYmxvY2suCisKK0UyZnNjayB3aWxsIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhlIGV4dDMgam91cm5hbCBmcm9tIGEgdmlzaWJsZQorZmlsZSAoaS5lLiwgLy5qb3VybmFsKSB0byBhbiBoaWRkZW4gaW5vZGUgaWYgdGhlIGZpbGVzeXN0ZW0gaGFzIGJlZW4KK29wZW5lZCByZWFkL3dyaXRlLiAgVGhpcyBhbGxvd3MgdGhlIHVzZXJzIHRvIGFkZCBhIGpvdXJuYWwgd2hpbGUgdGhlCitmaWxlc3lzdGVtIGlzIG1vdW50ZWQsIGJ1dCB0aGUgbmV4dCB0aW1lIHRoZSBzeXN0ZW0gaXMgcmVib290ZWQsIHRoZQoram91cm5hbCBmaWxlIHdpbGwgZGlzYXBwZWFyLiAgVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aCBiYWNrdXBzLAorc3R1cGlkIG9wZXJhdG9ycyB3aXRoIHN1cGVydXNlciBiaXRzLCBldGMuCisKK0ZpeCBhIGJ1ZyBpbiBmc2NrIHdoZXJlIGl0IHdvdWxkIG5vdCBzdXBwb3J0IGEgZmlsZXN5c3RlbSB0eXBlIG9mCisiYXV0byIgaWYgdGhlIGRldmljZSB3YXMgc3BlY2lmaWVkIGluIHRlcm1zIG9mIExBQkVMPXh4eCBvciBVVUlEPXh4eC4KKworRnNjayBub3cgc3VwcG9ydHMgZnN0YWIgZW50cmllcyBvZiB0aGUgZm9ybSAiZXh0MyxleHQyIi4gIEl0IHdpbGwgYWxzbworYXV0b21hdGljYWxseSBpZGVudGlmeSByZWlzZXJmcyBmaWxlc3lzdGVtcy4KKworVGhlIG51bWJlciBvZiBwcm9jZXNzZXMgc3Bhd25lZCBieSBmc2NrIGNhbiBub3cgYmUgbGltaXRlZCB1c2luZyB0aGUKK0ZTQ0tfTUFYX0lOU1QgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK0ZzY2sgbm93IHNlYXJjaHMgdGhlIExWTSBwcm9jIGhpZXJhcmNoeSB0byBmaW5kIGxvZ2ljYWwgdm9sdW1lcyB3aGljaAorc2hvdWxkIGJlIHNlYXJjaGVkIGZvciAgVVVJRCBhbmQgbGFiZWwgaW5mb3JtYXRpb24uCisKK1dvcmsgYXJvdW5kIGEgYnVnIGluIDIuNC4xMCsga2VybmVscyBieSB0cnlpbmcgdG8gdW5zZXQgdGhlIGZpbGVzaXplCitsaW1pdCBpZiBhdCBhbGwgcG9zc2libGUsIHdoZW4gb3BlbmluZyBhIGJsb2NrIGRldmljZS4gIChUaGUgZmlsZXNpemUKK2xpbWl0IHNob3VsZG4ndCBiZSBhcHBsaWVkIGFnYWluc3Qgd3JpdGVzIHRvIGEgYmxvY2sgZGV2aWNlLikKKworSW4gbWtlMmZzIGFuZCBlMmZzY2ssIHNwZWNpZnlpbmcgdGhlIC1jIG9wdGlvbiB0d2ljZSB3aWxsIG5vdyBkbworYSByZWFkL3dyaXRlIHRlc3Qgb24gdGhlIGRpc2suICBVcGRhdGUgdGhlIG1hbiBwYWdlcyB0byBlbmNvdXJhZ2UKK3VzaW5nIHRoZSAtYyBvcHRpb24sIGFuZCB0byBkaXNjb3VyYWdpbmcgcnVubmluZyBiYWRibG9ja3Mgc2VwYXJhdGVseSwKK3NpbmNlIHVzZXJzIHRlbmQgdG8gZm9yZ2V0IHRvIHNldCB0aGUgYmxvY2tzaXplIHdoZW4gcnVubmluZyAKK2JhZGJsb2Nrcy4KKworTWtlMmZzIG5vdyBhdXRvbWF0aWNhbGx5IGNsZWFycyB0aGUgaW1tdXRhYmxlIGF0dHJpYnV0ZSBvbiBhCitwcmUtZXhpc3RpbmcgLmpvdXJuYWwgZmlsZSBsZWZ0IG92ZXIgZnJvbSBhIHByZXZpb3VzIGZhaWxlZCBhdHRlbXB0IHRvCithZGQgYSBqb3VybmFsIHRvIGFuIGFscmVhZHl5LW1vdW50ZWQgZmlsZXN5c3RlbS4KKworRml4ZWQgbWtlMmZzJ3MgZXhpdCBjb2RlcyB0byBjb25zaXN0ZW50bHkgaW5kaWNhdGUgd2hlbiB0aGUgbWtlMmZzCitvcGVyYXRpb24gZmFpbGVkLgorCitNa2UyZnMgbm93IGNyZWF0ZXMgdGhlIGxvc3QrZm91bmQgZGlyZWN0b3J5IHdpdGggcGVybWlzc2lvbnMgb2YgMDcwMCwKK3NvIHRoYXQgZmlsZXMgdGhhdCBoYWQgcHJldmlvdXNseSBsaXZlZCBpbiBwcm90ZWN0ZWQgZGlyZWN0b3J5IGFyZQorc2FmZSBpZiB0aGV5IGdldCBkcm9wcGVkIGluIGxvc3QrZm91bmQgYW5kIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcgorZG9lc24ndCBkZWFsIHdpdGggaW1tZWRpYXRlbHkuICAoQWRkcmVzc2VzIERlYmlhbiAjYnVnIDExODQ0MykKKworTWtlMmZzIGFuZCBlMmZzY2sgKGFuZCBhbGwgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlCitleHQyZnNfY2hlY2tfaWZfbW91bnRlZCBmdW5jdGlvbikgd2lsbCBub3cgcHJvcGVybHkgaWRlbnRpZnkgdGhhdCBhCitkZXZpY2UgaXMgbW91bnRlZCwgZXZlbiBpbiBjYXNlcyB3aGVyZSBkZXZmcyBoYXMgY29uZnVzZWQgdGhpbmdzIHdpdGgKK211bHRpcGxlIGRldmljZXMgbmFtZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSwgb3IgaWYgYSBkaW0td2l0dGVkCitzeXN0ZW0gYWRtaW5pc3RyYXRvciBoYXMgZG9uZSBzb21ldGhpbmcgc3R1cGlkIGxpa2UgY3JlYXRpbmcgZGV2aWNlCitmaWxlIGFsaWFzZXMgaW4gdGhlaXIgaG9tZSBkaXJlY3RvcnkuICBBbHNvIG5vdyBjaGVja3MgZm9yIHN3YXAgZGV2aWNlcworYnkgdXNpbmcgL3Byb2Mvc3dhcHMuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzEwNjYyMikKKworQWRkZWQgYSBuZXcgb3B0aW9uICgtVCkgdG8gdHVuZTJmcyB3aGljaCBzZXRzIHRoZSB0aW1lIGEgZmlsZXN5c3RlbQord2FzIGxhc3QgY2hlY2tlZC4KKworU3BlZWQgdXAgZTJpbWFnZSB3aGVuIGNyZWF0aW5nIHNwYXJzZSByYXcgaW1hZ2UgZmlsZXMgYnkgb3B0aW1pemluZworYXdheSBleGNlc3MgbHNlZWsoKSBzeXN0ZW0gY2FsbHMuCisKK0ZpeCBzdXBwb3J0IG9mIGxhcmdlICg+IDJHQikgZmlsZXMgd2hlbiB1c2VkIGFzIGEgZmlsZXN5c3RlbSBpbgorbWtlMmZzLCB0dW5lMmZzLCBkZWJ1Z2ZzLCBhbmQgZmluZHN1cGVyLgorCitEZWJ1Z2ZzJ3Mgc3RhdCBhbmQgaWNoZWNrIGNvbW1hbmRzIG5vdyBwcm9wZXJseSBkZWFscyB3aXRoIGxhcmdlICg+CisyR0IpIGZpbGVzLgorCitEZWJ1Z2ZzJ3Mgc2V0X3N1cGVyX3ZhbHVlIGNvbW1hbmQgbm93IHByaW50cyBvdXQgdGhlIGxpc3Qgb2YgdmFsaWQKK3N1cGVyYmxvY2sgZmllbGRzIHdoaWNoIGNhbiBiZSBzZXQgdXNpbmcgdGhlIGNvbW1hbmQuCisKK0RlYnVnZnMncyBybSBhbmQga2lsbF9maWxlIGNvbW1hbmQgbm93IHVwZGF0ZXMgdGhlIHN1cGVyYmxvY2sgZnJlZSBibG9jaworYW5kIGlub2RlIGNvdW50cywgdGh1cyBrZWVwaW5nIHRoZSBmaWxlc3lzdGVtIGNvbnNpc3RlbnQuCisKK0RlYnVnZnMncyBsc2RlbCBjb21tYW5kIG5vdyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBhbGxvd3MKK3RoZSB1c2VyIHRvIG9ubHkgc2VlIHRoZSBtb3N0IHJlY2VudGx5IGRlbGV0ZWQgZmlsZXMuCisKK0EgbmV3IGNvbW1hbmQgKHVuZGVsKSB3YXMgYWRkZWQgdG8gZGVidWdmcyB3aGljaCBhdXRvbWF0ZXMKK3VuZGVsZXRpbmcgYSBkZWxldGVkIGlub2RlIGFuZCBsaW5raW5nIGl0IGJhY2sgdG8gYSBkaXJlY3RvcnkuCisKK0RlYnVnZnMncyBscyBjb21tYW5kIG5vdyB0YWtlcyBhIG5ldyBvcHRpb24sIC1kLCB3aGljaCBsaXN0cyAKK2RlbGV0ZWQgZGlyZWN0b3J5IGVudHJpZXMuCisKK0RlYnVnZnMncyB0ZXN0YiwgZnJlZWIsIHNldGIsIGFuZCBmaW5kX2ZyZWVfYmxvY2sgY29tbWFuZHMgbm93IHRha2UgYW4KK29wdGlvbmFsIGNvdW50IGFyZ3VtZW50LgorCitBZGQgc3VwcG9ydCBmb3IgYSBuZXcgZXh0MiBmaWxlIGF0dHJpYnV0ZSwgRVhUMl9OT1RBSUxfRkwsIHdoaWNoIHdpbGwKK2JlIHVzZWQgdG8gc2lnbmFsIHRoYXQgYSBwYXJ0aWN1bGFyIGlub2RlIHNob3VsZCBub3QgYmUgZWxpZ2libGUgZm9yCit0YWlsLW1lcmdpbmcgLS0tIHRoaXMgaXMgbmVlZGVkIGZvciBwcm9ncmFtcyBsaWtlIExJTE8uCisKK1RoZSBmaW5kc3VwZXIgKGFuIHVucmVsZWFzZWQsIHVuaW5zdGFsbGVkIHV0aWxpdHkgcHJvZ3JhbSkgaGFzIGJlZW4KK2ltcHJvdmVkIHRvIGFkZCBleHRyYSB2YWxpZGl0eSBjaGVja3MgYW5kIHRvIGFkZCBhIHByb2dyZXNzIG1ldGVyLgorKEl0IGlzIHN0aWxsIGFuIHVuc3VwcG9ydGVkIHByb2dyYW07IHRoZSBvZmZpY2lhbGx5IHN1cHBvcnRlZCB3YXkgdG8KK3JlY292ZXIgZnJvbSBhIHRyYXNoZWQgcGFydGl0aW9uIHRhYmxlIGlzIHRvIHVzZSBncGFydDsgZmluZHN1cGVyIGlzCitmb3Igd2l6YXJkcyBvbmx5LiAgOi0pCisKK0RlYnVnZnMgd2FzIGZpeGVkIHRvIGNvbXBpbGUgd2l0aCAiY29uZmlndXJlIC0tZGlzYWJsZS1zd2FwZnMiLgorCitDbGVhbmVkIHVwIHZhcmlvdXMgbWFudWFsIHBhZ2VzLiAgIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTE5NjI0LCAjMTIwMTcxKQorCitBZGRlZCBuZXcgdHJhbnNsYXRpb24gZmlsZSBmb3IgVHVya2lzaC4KKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggZ2VuZXJhbCBnY2MgLVdhbGwgY29tcGxhaW50cy4KKworRTJmc3Byb2dzIChtb3N0bHkpIHdvcmtzIHdpdGggdGhlIGRpZXRsaWJjLgorCitUaGUgcHJvZ3JhbW1pbmcgdGV4aW5mbyBmaWxlIGhhcyBiZWVuIGV4cGFuZGVkIHRvIGluY2x1ZGUgZGVzY3JpcHRpb24KK29mIGFkZGl0aW9uYWwgbGliZXh0MmZzIGZ1bmN0aW9ucy4gIChTdGlsbCBub3QgY29tcGVsdGVseSBkb25lLCBidXQgYQorbG90IG9mIHRoZSBtb3JlIGltcG9ydGFudCBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRvY3VtZW50ZWQuKQorCitBZGRlZCBhIHVtYXNrIHN0cnVjdHVyZSB0byBzdHJ1Y3RfZXh0Ml9maWxzeXMsIHdoaWNoIGN1cnJlbnRseSBvbmx5Cittb2RpZmllcyB0aGUgYmVoYXZpb3VyIG9mIGV4dDJmc19ta2RpcigpLCBidXQgaWYgd2UgYWRkIGFueSBmaWxlCitjcmVhdGlvbiBmdW5jdGlvbnMgdG8gbGliZXh0MmZzLCB3ZSBzaG91bGQgYWxzbyBtYWtlIHN1cmUgdGhleSByZXNwZWN0Cit0aGUgdW1hc2sgc2V0dGluZy4KKworVGhlIGJ1aWxkLXJwbSBzY3JpcHQgd2FzIGZpeGVkIHRvIGJlIGEgYml0IG1vcmUgc2FmZS4KKworVGhlIHRlc3RzJyBNYWtlZmlsZSBub3cgaGFzIGEgd2F5IG9mIGF1dG9tYXRpbmcgdGVzdCBjYXNlIGNyZWF0aW9uIAorZm9yIGUyZnNjaywgdXNpbmcgIm1ha2UgdGVzdG5ldyIuCisKK0NyZWF0ZWQgYSBuZXcgZnVuY3Rpb24sIGV4dDJmc19kaXJfaXRlcmF0ZTIgd2hpY2ggcGFzc2VzIG1vcmUKK2luZm9ybWF0aW9uIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbiAoaWRlbnRpY2FsIHRvIHRoZSBvbmUgdXNlZCBieQorZXh0MmZzX2RibGlzdF9kaXJfaXRlcmF0ZSkuICBUaGUgZGlyZWN0b3J5IGl0ZXJhdG9yIGZ1bmN0aW9ucyB0YWtlIGEKK25ldyBmbGFnLCBESVJFTlRfRkxBR19JTkNMVURFX1JFTU9WRUQsIHdoaWNoIHdpbGwgcmV0dXJuIGRlbGV0ZWQKK2RpcmVjdG9yeSBlbnRyaWVzLiAgSWYgdGhlIGRpcmVjdG9yeSBlbnRyeSBpcyBkZWxldGVkLCB0aGUgY2FsbGJhY2sKK2Z1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGVudHJ5IHBhcmFlbXRlciBzZXQgdG8KK0RJUkVOVF9ERUxFVEVEX0ZJTEUuCisgIAorQWRkZWQgbmV3IGZ1bmN0aW9ucywgZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzIGFuZAorZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzLCB3aGljaCB0YWtlcyB1cGRhdGVzIGJsb2NrL2lub2RlIGFsbG9jYXRpb24KK3N0YXRpc3RpY3MgaW4gdGhlIGJpdG1hcHMsIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQgc3VwZXJibG9jaword2hlbiBpbm9kZXMgb3IgYmxvY2tzIGFyZSBhbGxvY2F0ZWQgb3IgZGVhbGxvY2F0ZWQuCisKKworRTJmc3Byb2dzIDEuMjUgKFNlcHRlbWJlciAyMCwgMjAwMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoaXMgaXMgcHJpbWFyaWx5IGEgYnVnLWZpeCByZWxlYXNlOyBubyBuZXcgZmVhdHVyZXMgd2VyZSBhZGRlZCwgYnV0Cit0aGVyZSBhcmUgYSBudW1iZXIgb2YgZW1iYXJhc3NpbmcgYnVnIGZpeGVzIGFuZCBjbGVhbnVwcyBhcHBsaWVkLgorCitGaXggYSBidWcgbWtlMmZzIHdoaWNoIGNhdXNlcyBzdGFjayBnYXJiYWdlIHRvIGJlIHdyaXR0ZW4gdG8gZGlzayB3aGVuCit6YXBwaW5nIGRpc2sgc2VjdG9ycy4gIChUaGlzIGJ1ZyBjb3VsZCBjYXVzZSBta2UyZnMgdG8gY29yZSBkdW1wIGZvcgorc29tZSBrZXJuZWxzLCBJIHN1c3BlY3Qgd2l0aCBzZWN1cml0eSBlbmhhbmNlbWVudCBwYXRjaGVzLikKKworUmVtb3ZlIHVubmVlZGVkICNpbmNsdWRlIG9mIDxsaW51eC9jb25maWcuaD4gd2hpY2ggd2FzIGJyZWFraW5nCitidWlsZGluZyBlMmZzcHJvZ3Mgb24gdGhlIEh1cmQuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzExMjQxNC4pCisKK1VwZGF0ZWQgdHVuZTJmcyBtYW4gcGFnZSB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgYWRkaW5nIG9yIHJlbW92aW5nIGEKK2pvdXJuYWwgZG9lc24ndCByZXF1aXJlIHJ1bm5pbmcgZTJmc2NrLgorCitSZW1vdmUgdXNlIG9mIEFDX1JFUVVJUkUgZnJvbSBhdXRvY29uZiB3aGljaCBoYWQgYmVlbiB1c2VkIHRvIHByZXZlbnQKK0FDX0NBTk9OSUNBTF9IT1NUIGZyb20gYmVpbmcgY2FsbGVkIHR3aWNlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgY2F1c2VzCityZWNlbnQgYXV0b2NvbmYgdG8gYm9tYiBvdXQgc2luY2UgdGhleSBkb24ndCBhbGxvdyBBQ19SRVFVSVJFIHRvIGJlCit1c2VkIG91dHNpZGUgb2YgYXV0b2NvbmYgbWFjcm9zLiAgRm9ydHVuYXRlbHksIGl0IGRvZXNuJ3Qgc2VlbSB0byBiZQorbmVjZXNzYXJ5IGFueSBtb3JlLCBhbnl3YXkuCisKK0UyZnNjayB3aWxsIG5vdyBub3QgZmFsbCBiYWNrIHRvIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrIGlmIHRoZSB1c2VyCitzcGVjaWZpZXMgdGhlIHN1cGVyYmxvY2sgbG9jYXRpb24gZXhwbGljaXRseSBvbiB0aGUgY29tbWFuZC1saW5lLgorVGhpcyBhbGxvd3MgZWFzaWVyIHJlY292ZXJ5IGZyb20gYSBzaXR1YXRpb24gd2hlcmUgdGhlIHByaW1hcnkKK3N1cGVyYmxvY2sgYW5kIGJsb2NrIGdyb3VwcyBhcmUgc2xpZ2h0bHkgY29ycnVwdGVkLCBidXQgdGhlIGJhY2t1cAorc3VwZXJibG9ja3MgYXJlIGNvbXBsZXRlbHkgYnJva2VuLiAgCisKK0ZpeCBwcm9ibGVtIHdoaWNoIGNhdXNlZCBjb21waWxlX2V0IGFuZCBta19jbWRzIHRvIGJsb3cgdXAgaWYKK2UyZnNwcm9ncyB3YXMgaW4gYSBkaXJlY3Rvcnkgd2l0aCBhIHBhdGhuYW1lIHRoYXQgY29udGFpbmVkIHNwYWNlcy4KKworV2UgYXJlIG5vdyBtb3JlIHBhcmFub2lkIGFib3V0IGNoZWNraW5nIHRoZSBlbnRyeSBpbiAvZXRjL210YWIgdG8gbWFrZQorc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyByZWFsbHkgbW91bnRlZCwgc2luY2Ugc29tZSBicm9rZW4gZGlzdHJpYnV0aW9ucworKHJlYWQ6IFNsYWNrd2FyZSkgZG9uJ3QgaW5pdGlhbGl6ZSAvZXRjL210YWIgYmVmb3JlIGNoZWNraW5nIG5vbi1yb290CitmaWxlc3lzdGVtcy4gIChTbGFja3dhcmUgYWxzbyBkb2Vzbid0IGNoZWNrIHRoZSByb290IGZpbGVzeXN0ZW0KK3NlcGFyYXRlbHksIGFuZCByZWJvb3QgaWYgdGhlIHJvb3QgZmlsZXN5c3RlbSBoYWQgY2hhbmdlcyBhcHBsaWVkIHRvCitpdCwgd2hpY2ggaXMgZGFuZ2Vyb3VzIGFuZCBicm9rZW4sIGJ1dCB0aGVyZSdzIG5vdGhpbmcgSSBjYW4gZG8gYWJvdXQKK3RoYXQuKQorCitNYWtlIFVVSUQgbGlicmFyeSBDKysgZnJpZW5kbHkgYnkgYWRkaW5nIGFwcHJvcHJpYXRlIGV4dGVybiAiQyIKK2RlY2xhcmF0aW9ucyBhbmQgdXNpbmcgY29uc3QgaW4gdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KKworRml4IHVwIHRoZSBjb21fZXJyIHRleGluZm8gZmlsZSBzbyB0aGF0IGl0IGNhbiBwcm9kdWN0IGEgdmFsaWQgaW5mbworZmlsZSAocHJldmlvdXNseSwgaXQgY291bGQgb25seSBiZSB1c2VkIHRvIGdlbmVyYXRlIHBhcGVyCitkb2N1bWVudGF0aW9uIHVzaW5nIHRleGluZm8udGV4KS4KKworCitFMmZzcHJvZ3MgMS4yNGEgKFNlcHRlbWJlciAyLCAyMDAxKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGJyb3duLXBhcGVyIGJ1ZyBpbiBta2UyZnMgd2hpY2ggY2F1c2VkIGl0IHRvIHNlZ2ZhdWx0IHdoZW4KK3ByaW50aW5nIHRoZSB2ZXJzaW9uIHN0cmluZy4KKworCitFMmZzcHJvZ3MgMS4yNCAoQXVndXN0IDMwLCAyMDAxKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmV2ZXJ0IHRoZSBCTEtHRVRTSVpFNjQgc3VwcG9ydCwgc2luY2UgZm9yIHNvbWUgZGlzdHJpYnV0aW9ucywgdGhpcworaW9jdGwgaGFzIGJlZW4gdXNlZCBieSBhbiB1bm9mZmljaWFsIGtlcm5lbCBwYXRjaCB0byB1cGRhdGUgdGhlIGxhc3QKK3NlY3RvciBvbiB0aGUgZGlzaywgYW5kIHRoaXMgd2FzIGNhdXNpbmcgZGlzayBjb3JydXB0aW9uIHByb2JsZW1zIGFzIGEKK3Jlc3VsdC4KKworTWtlMmZzIGlzIG5vdyBtb3JlIGNhcmVmdWwgYWJvdXQgemFwcGluZyBzd2FwIHNwYWNlIHNpZ25hdHVyZXMgYW5kCitvdGhlciBmaWxlc3lzdGVtL3JhaWQgc3VwZXJibG9jayBtYWdpYyB2YWx1ZXMgc28gdGhhdCBwcm9ncmFtcyBsaWtlCittb3VudCB3aG8gdHJ5IHRvIHVzZSBodWVyaXN0aWNzIHRvIGRldGVybWluZSB0aGUgZmlsZXN5c3RlbSB0eXBlIG9mIGEKK3BhcnRpdGlvbiBhcmUgbGVzcyBsaWtlbHkgdG8gYmUgY29uZnVzZWQuCisKK0UyZnNjayB3aWxsIG5vIGxvbmdlciBjb21wbGFpbiBpZiB0aGUgdGhlIG1vZGUgb2YgRVhUMl9SRVNJWkVfSU5PIGlzIGEKK3JlZ3VsYXIgZmlsZSAoc2luY2UgQW5kcmVhcyBEaWxnZXIncyBvbi1saW5lIHJlc2l6aW5nIHRvb2xzIHdpbGwgc2V0CitpdHMgbW9kZSBiaXRzKS4KKworRml4ZWQgc29tZSBtaW5vciB0ZXhpbmZvLCBtYW4gcGFnZXMgbml0cyBmb3Igc3BlbGxpbmcgZXJyb3JzLAordGV4aW5mbyB3YXJuaW5ncywgZXRjLiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMxMTA2MjEuKQorCitFMmZzcHJvZ3MgcHJvZ3JhbSBubyBsb25nZXIgcHJpbnQgdGhlIGZpbGVzeXN0ZW0gdmVyc2lvbiBudW1iZXIKKyhpLmUuIDAuNWIpLCBzaW5jZSBpdCBvbmx5IGNvbmZ1c2VzIHBlb3BsZSBhbmQgZG9lc24ndCBzZXJ2ZSBhbnkgcmVhbAorcHVycG9zZS4KKworRTJmc2NrIHdpbGwgb25jZSBhZ2FpbiBjb21waWxlIHVuZGVyIGxpYmM1LCBzaW5jZSBpdCB3aWxsIHN1cHBseSBpdHMKK293biB2ZXJzaW9uIG9mIHN0cm5sZW4gaWYgbmVjZXNzc2FyeS4KKworbWtlMmZzIGFuZCB0dW5lMmZzIHdpbGwgYWxsb3cgdGhlIHVzZSBvZiBVVUlEPSBvciBMQUJFTD0gc3BlY2lmaWVycword2hlbiBzcGVjaWZ5aW5nIHRoZSBleHRlcm5hbCBqb3VybmFsIGRldmljZS4gIHR1bmUyZnMgd2lsbCBhbHNvIHNlYXJjaAorZGV2aWNlcyBsb29raW5nIGZvciB0aGUgZXh0ZXJubGEgam91cm5hbCBkZWJpY2Ugd2hlbiByZW1vdmluZy4gIAorCitFMmZzcHJvZ3MgMS4yMyAoQXVndXN0IDE1LCAyMDAxKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyAoRUEpOyBlMmZzY2sgd2lsbAorY29ycmVjdGx5IGhhbmRsZSBhIGZpbGVzeXN0ZW0gd2l0aCBFQSdzIGFuZCBjaGVjayB0aGUgRUEgYmxvY2tzIGZvcgorY29ycnVwdGlvbnMuCisKK0UyZnNjaydzIHN5bWxpbmsgc2FuaXR5IGNoZWNraW5nIGhhcyBiZWVuIGNsZWFuZWQgdXAuICBJdCBub3cgY2hlY2tzCit0aGUgaV9zaXplIHZhbHVlIG9mIGZhc3Qgc3ltbGlua3MsIGFuZCBjaGVja3MgZm9yIGltbXV0YWJsZSBmbGFncworYmVpbmcgc2V0IG9mIHN5bWxpbmtzLCBldGMuCisKK0UyZnNjayBub3cgb2ZmZXJzIHRvIGNsZWFyIGlub2RlcyB3aGljaCBhcmUgc3BlY2lhbCBmaWxlcyB0aGF0IGhhdmUgYQorbm9uLXplcm8gaV9ibG9ja3Mgb3IgaV9zaXplIGZpZWxkLiAgKFRoZSBpX3NpemUgZmllbGQgY2hlY2sgd2FzIGluIHRoZQorcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUgY29kZSwgYnV0IGR1ZSB0byBhIGJ1ZyBpdCBkaWRuJ3Qgb2ZmZXIgdG8KK2NsZWFyIHRoZSBpbm9kZSB1bmxlc3MgaV9zaXplIGFuZCBpX3NpemVfaGlnaCB3ZXJlIGJvdGggbm9uLXplcm8uKQorCitFMmltYWdlIGNhbiBub3cgY3JlYXRlICJyYXciIGltYWdlIGZpbGVzLCB3aGljaCBvbmx5IGNvbnRhaW4gdGhlCitmaWxlc3lzdGVtIG1ldGFkYXRhIHBsYWNlZCBpbiBhIHNwYXJlIGZpbGUgc28gdGhhdCBlMmZzY2ssIGR1bXBlMmZzLAorZGVidWdmcywgZXRjLiwgY2FuIGJlIHJ1biBkaXJlY3RseSBvbiB0aGUgcmF3IGltYWdlIGZpbGUuCisKK0FkZCBzdXBwb3J0IGZvciB0aGUgNjQtYml0IGJsb2NrIGRldmljZSBwYXRjaGVzLgorCitGaXhlZCBidWdzIGluIGNyZWF0aW5nIGV4dGVybmFsIGpvdXJuYWxzIHdpdGggYSAxayBibG9ja3NpemUuCisKK0FkZCBpbml0aWFsIHN1cHBvcnQgZm9yIGV4dGVybmFsIGpvdXJuYWxzIChzbyBsb25nIGFzIHRoZSBleHRlcm5hbAoram91cm5hbCBvbmx5IHN1cHBvcnRzIGEgc2luZ2xlIGZpbGVzeXN0ZW0pIGluIGUyZnNjay4KKworUmVtb3ZlIHJlcXVpcmVtZW50IGZvciBuZWVkaW5nIHRvIHJ1biBmc2NrIG9uIGEgZmlsZXN5c3RlbSBhZnRlcgorcmVtb3ZpbmcgYSBqb3VybmFsIChlaXRoZXIgaW50ZXJuYWwgb3IgZXh0ZXJuYWwpLgorCitUaGUgbWFuIHBhZ2VzIG5vdyBkb2N1bWVudCBob3cgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgZXh0ZXJuYWwgam91cm5hbHMuCisKK1NwZWVkIHVwIHRoZSBjaGVjayBvZiBhbiBleHQzIGZpbGVzeXN0ZW1zIGJ5IGF2b2lkaW5nIGEgbmVlZGxlc3MgZmx1c2gKK29mIGFsbCBvZiB0aGUgc3VwZXJibG9jayBhbmQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMuCisKK1NwZWVkIHVwIGNyZWF0aW5nIGFuIGludGVybmFsIGpvdXJuYWwgdXNpbmcgdHVuZTJmcyBpbiB0aGUgY2FzZSB3aGVyZQordGhlIGZpbGVzeXN0ZW0gaGFzIGEgbG90IGJsb2NrcyBhbHJlYWR5IGFsbG9jYXRlZC4KKworVHVuZTJmcyBoYXMgYmVlbiBmaXhlZCB0byBtYWtlIHN1cmUgdGhhdCBvbmx5IGVycm9yIG1lc3NhZ2VzIGdvIHRvCitzdGRlcnIsIGFuZCBub3JtYWwgbWVzc2FnZSBnbyB0byBzdGRvdXQuIChBZGRyZXNzZXMgRGViaWFuIGJ1ZyAjMTA4NTU1KQorCitGaXhlZCBhIG1pbm9yIGJ1ZyBpbiBta2UyZnM7IGlmIC1PIG5vbmUgaXMgcGFzc2VkIHRvIG1rZTJmcywgaXQgd2lsbAorbm93IG5vdCBzZXQgdGhlIHNwYXJzZV9zdXBlciBmZWF0dXJlLiAgKEFkZHJlc3NlcyBEZWJpYW4gYnVnICMxMDgxNjUpCisKK0FkZCBzdXBwb3J0IGluIGZzY2sgZm9yIHRoZSBmaWxlc3lzdGVtIHR5cGUgImF1dG8iLgorCitGc2NrIC1BIHdpbGwgbm90IHRyeSB0byBpbnRlcnByZXQgZGV2aWNlIG5hbWVzIGZvciBmaWxlc3lzdGVtcyB3aGljaAoraGF2ZSBhIHBhc3MgbnVtYmVyIGlzIDAuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzEwNjY5NikuCisKK0ZzY2sgcHJpbnRzIGEgd2FybmluZyBtZXNzYWdlIGlmIG5vdyB2YWxpZCBmaWxlc3lzdGVtcyBhcmUgcGFzc2VkIHRvCitpdC4gIChBZGRyZXNzZXMgRGViaWFuIEJ1ZyAjMTA3NDU4LikKKworRTJmc2NrIG5vdyBnaXZlcyBhbiBleHBsaWNpdCB3YXJuaW5nIGlmIHRoZXJlIGZpbGVzeXN0ZW0gc3RpbGwgaGFzCitlcnJvcnMgYXQgdGhlIGVuZCBvZiB0aGUgcnVuLiAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzEwNDUwMikKKworRTJmc2NrIHdpbGwgc2V0IHRoZSBFWFQyX0VSUk9SX0ZTIGZsYWcgaWYgdGhlIGpvdXJuYWwgc3VwZXJibG9jaworcmVmbGVjdHMgYW4gZXJyb3IuICBFMmZzY2sgd2lsbCBhbHNvIG5vdCBydW4gdGhlIG9ycGhhbiBsaXN0IGlmIHRoZQorZmlsZXN5c3RlbSBjb250YWlucyBlcnJvcnMsIHNpbmNlIHRoZSBvcnBoYW4gbGlzdCBtaWdodCBiZSBjb3JydXB0ZWQuCisKK0UyZnNjayBub3cgcHJpbnRzIHRoZSBudW1iZXIgb2YgbGFyZ2UgZmlsZXMgd2hlbiBnaXZlbiB0aGUgLXYgb3B0aW9uLgorCitGaXhlZCBtaW5vciBtZW1vcnkgbGVha3MgaW4gZTJmc2NrLgorCitTb21lIG1pbm9yIG1hbiBwYWdlcyB1cGRhdGVzLiAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzMwODMzLCAjMTA4MTc0KQorCisKK0UyZnNwcm9ncyAxLjIyIChKdW5lIDIyLCAyMDAxKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjaydzIGhhbmRsaW5nIG9mIG9ycGhhbiBpbm9kZXMgd2hpY2ggYXJlIHNwZWNpYWwKK2ZpbGVzIChpLmUuLCBibG9jay9jaGFyYWN0ZXIgZGV2aWNlIGZpbGVzLCBuYW1lZCBGSUZPJ3MsIGV0Yy4pLgorCitGaXhlZCBhIGJ1ZyBhY2NpZGVudGFsbHkgaW50cm9kdWNlZCBpbiBlMmZzcHJvZ3MgMS4yMSB3aGljaCBjYXVzZWQKK3R1bmUyZnMgdG8gZmFpbCBhdCBhZGRpbmcgYSBqb3VybmFsIHRvIGEgbW91bnRlZCBmaWxlc3lzdGVtLgorCitGaXhlZCBhIGZldyBiaWctZW5kaWFuIGJ1Z3MgaW4gZTJmc3Byb2dzCisJKiBUaGUgZGlyZWN0b3J5IGJsb2NrIGZ1bmN0aW9ucyB3ZXJlIGFjY2lkZW50YWxseSByZXBvcnRpbmcKKwkJc29tZSBkaXJlY3RvcmllcyBhcyBjb3JydXB0ZWQgd2hlbiB0aGV5IHdlcmVuJ3QuCisJKiBJZiBlMmZzcHJvZ3MgaXMgY29tcGlsZWQgLS1kaXNhYmxlLXN3YXBmcywgdGhlIEMgbGFuZ3VhZ2UgCisJCWVxdWl2YWxlbnRzIHdlcmVuJ3QgYmVpbmcgaW5jbHVkZWQgZm9yIGJpZy1lbmRpYW4gcGxhdGZvcm1zLgorCQkoRml4ZXMgRGViaWFuIGJ1ZyAjMTAxNjg2KS4KKworRml4ZWQgYSBIdXJkIGNvbXBpbGF0aW9uIHByb2JsZW0uICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzEwMTM2MSkKKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVc2UgcGxhdGZvcm0gaW5kZXBlbmRlbnQgbWV0aG9kIG9mIGRlZmluaW5nIHRoZSBCTEtGTFNCVUYgYW5kIEZERkxVU0gKK2lvY3RscywgYW5kIGFsbG93IHRoZW0gdG8gYmUgZGVmaW5lZCBmb3Igbm9uLWkzODYgcGxhdGZvcm1zLgorCitUaGUgdXVpZC5oIGhlYWRlciBmaWxlIGlzIG5vdyBwcm90ZWN0ZWQgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdXNpb25zLgorCitFMmZzcHJvZ3MgaXMgbm93IGJlaW5nIGRldmVsb3BlZCB1c2luZyBCaXRLZWVwZXIuICBDaGFuZ2VkIHRoZSB0ZXN0CitzY3JpcHRzIHRvIGRlYWwgd2l0aCBCSydzIHN0cmlwcGluZyBDUiBjaGFyYWNndGVycyBmcm9tIHRleHQgZmlsZXMsCithbmQgY2hhbmdlZCB0aGUgdG9wLWxldmVsIE1ha2VmaWxlLmluIHRvIGF2b2lkIGluY2x1ZGluZyBCaXRLZWVwZXIKK2ZpbGVzIHdoZW4gZ2VuZXJhdGluZyB0aGUgc291cmNlIHRhcmJhbGwuCisKKworRTJmc3Byb2dzIDEuMjEgKEp1bmUgMTUsIDIwMDEpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQWRkZWQgbmV3IGNvbmZpZ3VyZSBmbGFncyB3aGljaCBhbGxvdyBhIHN1YnNldCBlMmZzcHJvZ3MgdG8gYmUgYnVpbHQ7Cit0aGlzIGlzIG1vc3QgdXNlZnVsIGZvciBib290IGZsb29waWVzLCBzaW5jZSB0aGUgcmVzdWx0aW5nIHNoYXJlZAorbGlicmFyaWVzIGFuZCBwcm9ncmFtcyBhcmUgc2xpbW1lZCBkb3duIGJ5IHJlbW92aW5nIGZlYXR1cmVzIHRoYXQKK2FyZW4ndCBuZWNlc3NhcnkgZm9yIGEgYm9vdCBmbG9wcHkuICBUaGUgbmV3IGZsYWdzIHRoYXQgd2VyZSBhZGRlZAorYXJlOiAtLWRpc2FibGUtc3dhcGZzLCB3aGljaCByZW1vdmVzIHN1cHBvcnQgZm9yIGJ5dGUgc3dhcHBpbmcgb2xkCitsZWdhY3kgUFBDLzY4ayBmaWxlc3lzdGVtcywgLS1kaXNhYmxlLWRlYnVnZnMsIHdoaWNoIHJlbW92ZXMgc3VwcG9ydAorZm9yIGRlYnVnZnMgZnJvbSB0aGUgbGliZXh0MmZzIGxpYnJhcnksIC0tZGlzYWJsZS1pbWFnZXIsIHdoaWNoCityZW1vdmVzIHN1cHBvcnQgZm9yIHRoZSBlMmltYWdlIHByb2dyYW0sIGFuZCAtLWRpc2FibGUtcmVzaXplciwgd2hpY2gKK3JlbW92ZXMgc3VwcG9ydCBmb3IgcmVzaXplMmZzLgorCitFMmZzY2sgbm93IHByaW50cyB0aGUgbnVtYmVyIG9mIG1vdW50cyBvciBkYXlzIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QKK2NoZWNrIHdoZW4gZTJmc2NrIGlzIGZvcmNlZCB0byBjaGVjayBhbiBvdGhlcndpc2UgY2xlYW4gZmlsZXN5c3RlbS4KKworVHVuZTJmcyBub3cgcHJpbnRzIGFuIGluZm9ybWF0aXZlIG1lc3NhZ2UgYWJvdXQgaG93IG9mdGVuIGEgZmlsZXN5c3RlbQord2lsbCBiZSBjaGVja2VkIHdoZW4gYWRkaW5nIGEgam91cm5hbCB0byB0aGUgZmlsZXN5c3RlbSwgdG8gcmVtaW5kIHRoZQordXNlciB0aGF0IGhlL3NoZSBtYXkgd2FudCB0byBhZGp1c3QgdGhvc2UgcGFyYW1ldGVycyB1c2luZyB0dW5lMmZzCistYy8taS4KKworV29ya2VkIGFyb3VuZCBodXJkIGJyYWluLWRhbWFnZSB3aGljaCBjYXVzZXMgZTJmc2NrIHRvIHNvbWV0aW1lcworYmVsaWV2ZSBhIGZpbGVzeXN0ZW0gaXMgdGhlIHJvb3QgZmlsZXN5c3RlbSBiYXNlZCBvbiBkZXZpY2UgbnVtYmVycworKHNpbmNlIEh1cmQgZG9lc24ndCBoYXZlIGRldl90J3MsIHdoaWNoIGlzIGFyZ3VhYmx5IGEgUE9TSVguMQordmlvbGF0aW9uKS4KKworRml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiAxLjIwIHdoaWNoIGNhdXNlZCBlMmZzY2sgdG8gYWJvcnQgd2l0aCBhbgorZXJyb25lb3VzIGVycm9yIHdpdGggdGhlIC1GIG9wdGlvbiB3YXMgc3BlY2lmaWVkLgorCitGaXhlZCBhIGV4dDMgcmVjb3ZlcnkgYnVnIGluIHRoZSByZXZva2UgaGFuZGxpbmc7IHN5bmNocm9uaXplZCB3aXRoCitleHQzIDAuN2EuCisKK0ZpeGVkIHR3byBidWdzIGluIGUyZnNjaydzIGhhbmRsaW5nIG9mIGR1cCBibG9jayBoYW5kbGluZywgZGVhbGluZword2l0aCByZWxhdGl2ZWx5IHVuY29tbW9uIGVkZ2UgY2FzZXM6IGEgZGlyZWN0b3J5IHdpdGggYW4gaW5kaXJlY3QKK2Jsb2NrIHdoaWNoIGlzIGNsYWltZWQgYnkgYW5vdGhlciBmaWxlLCBhbmQgd2hlbiB0aGUgbGFzdCBpbm9kZSBpbiB0aGUKK2ZpbGVzeXN0ZW0gaGFzIGJsb2NrcyBjbGFpbWVkIGJ5IGFub3RoZXIgZmlsZS4KKworRTJmc2NrIG5vdyBjaGVja3MgdG8gc2VlIGlmIHRoZSBpX3NpemUgZmllbGQgb2YgYSBmYXN0IHN5bWxpbmsgaXMgdG9vCitiaWcsIGFuZCBvZmZlcnMgdG8gY2xlYXIgdGhlIHN5bWxpbmsgaWYgc28uCisKK0UyZnNjayBub3cgY2hlY2tzIHRvIHNlZSBpZiBpX3NpemVfaGlnaCBvZiBzcGVjaWFsIGZpbGVzIGlzIG5vbi16ZXJvLAorYW5kIG9mZmVycyB0byBjbGVhciBpX3NpemVfaGlnaC4KKworRml4IGUyZnNjaydzIGhhbmRsaW5nIG9mIGluY29tcGF0aWJsZSBqb3VybmFsIGZsYWdzIHNvIHRoYXQgdGhlIHVzZXIKK2hhcyBjaGFuY2UgdG8gYWJvcnQsIGFuZCB0aGVuIGhhcyB0aGUgb3B0aW9uIHRvIGNsZWFyIG91dCB0aGUgam91cm5hbAorZW50aXJlbHkuICAoQWRkcmVzc2VzIERlYmlhbiBidWcgIzk4NTI3LikKKworRml4ZWQgYSBidWcgaW4gZnNjayB3aGljaCBjb3VsZCBjYXVzZSBpdCB0byBjb3JlIGR1bXAgaWYgYSBtaXggb2YKK3N0YW5kYXJkIGFuZCBub24tc3RhbmRhcmQgZGV2aWNlIG5hbWVzIGFyZSB1c2VkIGluIC9ldGMvZnN0YWIuCisoRGViaWFuIGJ1ZyAjMTAwNTU5KQorCitGaXhlZCBhIGJ1ZyBpbiBkZWJ1Z2ZzIHdoaWNoIGNhdXNlZCByZWFkIGVycm9ycyB3aGVuIGNvcHlpbmcgYSBmaWxlIHRvCitub3QgYmUgbm90aWNlZC4KKworVGhlIGRlYnVnZnMgc2V0X3N1cGVyX3ZhbHVlIGNvbW1hbmQgY2FuIG5vdyBtb2RpZnkgdGhlIHNfbGFzdGNoZWNrIGZpZWxkLgorCitGaXhlZCBhIGJ1ZyBpbiBsc2F0dHIgYW5kIGNoYXR0ciB3aGljaCB3YXMgYWNjaWRlbnRhbGx5IGludHJvZHVjZWQgaW4KKzEuMjAgdG8gc3VwcG9ydCA+IDJHQiBmaWxlczsgYm90aCBsc2F0dHIgYW5kIGNoYXR0ciB3YXNuJ3QgcmVhZGluZworZGlyZWN0b3JpZXMgY29ycmVjdGx5IGJlY2F1c2UgdGhlIGNoYW5nZSBtb2RpZmllZCB0aGUgbGF5b3V0IG9mIHN0cnVjdAorZGlyZW50IHRvIGJlIGluY29tcGF0aWJsZSB3aXRoIHRoZSBsaWJlMnAgc2hhcmVkIGxpYnJhcnkuCisKK0NsZWFuZWQgdXAgdGhlIG1rZTJmcyBtYW51YWwgcGFnZSBhbmQgaW5jbHVkZWQgYSBkaXNjdXNzaW9uIGFib3V0IHdoeQoraXQncyBnb29kIHRvIHBlcmlvZGljYWxseSBjaGVjayB0aGUgZmlsZXN5c3RlbSBldmVuIHdoZW4gam91cm5hbGluZyBpcworZW5hYmxlZC4KKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXggZ2VuZXJhbCBnY2MgLVdhbGwgY29tcGxhaW50cy4KKworVGhlIHR5cGVzIG5lZWRlZCBieSB0aGUgZXh0MiBoZWFkZXIgZmlsZXMgYXJlIG5vdyBwcm92aWRlZCBieQorbGliL2V4dDJmcy9leHQyX3R5cGVzLmgsIGluc3RlYWQgb2YgaW5jbHVkZS9hc20vdHlwZXMuaC4KKworSW50ZWdlcnMgYXJlIG5vdyBwcmVmZXJyZWQgdG8gbG9uZ3Mgd2hlbiB0cnlpbmcgdG8gZmluZCBhIDMyLWJpdCB0eXBlCitpbiBleHQyX3R5cGVzLmguICBBbHNvLCBpZiBsaW51eC90eXBlcy5oIGhhcyBhbHJlYWR5IGJlZW4gZGVmaW5lZCwKK2Rvbid0IHRyeSB0byByZWRlZmluZSB0aGUgdHlwZXMuCisKK0ZpeGVkIG1ha2UgZGVwZW5kIHNjcmlwdCBzbyB0aGF0IGl0IGF1dG9tYXRpY2FsbHkgY29ycmVjdHMgdGhlCitwYXRobmFtZSBjbGVhbnVwcyBwZXJmb3JtZWQgYnkgbWFrZSAtTSwgc28gSSBkb24ndCBoYXZlIHRvIGZpeCB0aGVtIHVwCitieSBoYW5kLgorCitGaXhlZCB0aGUgZF9sb2FkZHVtcCB0ZXN0IGNhc2UgdG8gYmUgbW9yZSByb2J1c3QsIGFuZCBub3QgZGVwZW5kIG9uCitiYXNoJ2lzbXMuCisKK1JlbW92ZWQgZGVidWdmcydzIGRlcGVuZGVuY2Ugb24gcHJlYWQoKSwgd2hpY2ggd2FzIGFjY2lkZW50YWxseQoraW50cnVkY2VkIGluIGUyZnNwcm9ncyAxLjIwCisKK0ZpeGVkIGEgcGVyZm9ybWFuY2UgYnVnIGluIHRoZSBsaWJleHQyZnMncyBpY291bnQgcm91dGluZTsgdGhlIHNpemUKK2VzdGltYXRlIG9mIHRoZSBpY291bnQgYXJyYXkgd2FzIGluY29ycmVjdGx5IGJlaW5nIGNhbGN1bGF0ZWQuCisKK1JlbW92ZWQgdXNlIG9mIHRoZSBiYWRibG9ja3MgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMgaW4gdGhlIGUyZnNwcm9ncworcHJvZ3JhbXMuCisKK0FkZGVkIHBhcmFub2lhIGNvZGUgd2hpY2ggcHJvdGVjdHMgYWdhaW5zdCBzdHJhbmdlIGNhc2VzIHdoZXJlIC9ldGMKK2lzbid0IG9uIHRoZSByb290IGZpbGVzeXN0ZW0sIG9yIGlmIC9ldGMvbXRhYiBkb2Vzbid0IGV4aXN0LgorCitUaGUgaGVhZGVyIGZpbGUgZXh0Ml90eXBlcy5oIGlzIG5vdyBpbnN0YWxsZWQuCisKK0F1dG9jb25mIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZW4gd2UgYXJlIG9uIGJpZy1lbmRpYW4gbWFjaGluZXMsCitpbnN0ZWFkIG9mIGRvaW5nIHJ1bi10aW1lIHRlc3RzLCB0byBzYXZlIGEgZmV3IGJ5dGVzIG9mIGNvZGUuCisKK1RoZSBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCBhbmQgZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcAorZnVuY3Rpb25zIGFyZSBubyBsb25nZXIgaW5saW5lIGZ1bmN0aW9ucywgd2hpY2ggc2F2ZXMgc3BhY2UgYW5kCitkb2Vzbid0IHJlYWxseSBjb3N0IGFueSByZWFsIHBlcmZvcm1hbmNlLgorCitUaGUgZXh0MmZzIGxpYnJhcnkgbm8gbG9uZ2VyIGRlcGVuZHMgb24gdGhlIGUycCBsaWJyYXJ5LiAgKFdoYXQgbmVlZAordGhlcmUgd2FzIG9mIGl0IC0tLSBuYW1lbHksIGZzZXRmbGFncywgd2FzIGNvZGVkIGluLWxpbmUpLgorCitGaXhlZCB0aGUgbWFrZWZpbGUgc28gdGhhdCBsaWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBpcyBnZW5lcmF0ZWQgZXZlbgord2hlbiB0aGUgdXNlciBpcyBzdHVwaWQgYW5kIHRyaWVzIGNvbXBpbGluZyB0aGUgcGFja2FnZSB1c2luZyAibWFrZQoraW5zdGFsbCIgYXMgcm9vdC4KKworTWlzY2VsbGFuZW91cyBjb2RlIGNsZWFudXBzOgorCSogQWRkZWQgbWlzc2luZyBmaWxlcyBmcm9tIE1ha2VmaWxlLmluJ3MgU1JDUyBmaWxlLCBzbyB0aGF0IAorCQl0aGVpciBkZXBlbmRlbmNpZXMgd291bGQgYmUgcHJvcGVybHkgY2FsY3VsYXRlZC4KKwkqIFJlbW92ZWQgcmVkdW5kYW50IGNvZGUKKwkqIEZpeGVkIGNvbW1lbnRzIGluIGNvZGUKKwkqIFJlbW92ZWQgbm8tbG9uZ2VyIHVubmVlZGVkIGFyZ3N1c2VkICNwcmFnbWEuCisKKworRTJmc3Byb2dzIDEuMjAgKE1heSAyMCwgMjAwMSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZCBzdXBwb3J0IGZvciByZXBsYXlpbmcgdGhlIGV4dDMgam91cm5hbCBwdXJlbHkgaW4gdXNlciBtb2RlLAoraW5jbHVkaW5nIGhhbmRsaW5nIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgVXNlZCBjb2RlIGNvbnRyaWJ1dGVkIGJ5CitBbmRyZWFzIERpbGdlciwgd2l0aCBidWcgZml4ZXMgYW5kIHRoZSBvcnBoYW5lZCBpbm9kZSBoYW5kbGluZyBkb25lCitieSBUaGVvZG9yZSBUcydvLgorCitUaGUgbWtlMmZzIGFuZCB0dW5lMmZzIHByb2dyYW1zIGNhbiBjcmVhdGUgb3IgbW9kaWZ5IGEgZmlsZXN5c3RlbSB0bworaW5jbHVkZSBhbiBleHQzIGpvdXJuYWwuICBUdW5lMmZzIGFsc28gY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIGFuIGV4dDMKK2pvdXJuYWwgZnJvbSBhIGZpbGVzeXN0ZW0uCisKK0UyZnNjayB3aWxsIG5vdyBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhIGxpbmtlZCBsaXN0IG9mIG9ycGhhbgoraW5vZGVzIGluIHRoZSBzdXBlcmJsb2NrLCBhbmQgY2xlYXIgdGhvc2UgaW5vZGVzIGJlZm9yZSBzdGFydGluZyB0aGUKK3Jlc3Qgb2YgdGhlIGZpbGVzeXN0ZW0gY2hlY2sgKGJ1dCBhZnRlciB0aGUgam91cm5hbCBwbGF5YmFjaykuCisKK0UyZnNjayBub3cgdmFsaWRhdGVzIHRoZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIHRoZSAtQyBvcHRpb24sCit3aGljaCBzYXZlcyBhZ2FpbnN0IHRoZSBjb21wbGV0aW9uIGJhciBnZXR0aW5nIHdyaXR0ZW4gdG8gYW4KK3VuZXhwZWN0ZWQgbG9jYXRpb24sIHN1Y2ggYXMgdGhlIGRpc2sgYmVpbmcgY2hlY2tlZC4gIChEZWJpYW4KK2J1Zy93aXNobGlzdCAjNTUyMjApCisKK0UyZnNjayB3aWxsIG5vdyBidW1wIHRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIG51bWJlciBmcm9tIHplcm8gdG8gb25lCitpZiBhbnkgb2YgdGhlIGNvbXBhdGliaWxpdHkgYml0cyBhcmUgc2V0LgorCitGaXhlZCBhIGJ1ZyB3aGVyZSBhIGJhZGx5IGNvcnJ1cHRlZCBkaXJlY3Rvcnkgb24gYSBiaWcgZW5kaWFuIHN5c3RlbQorY291bGQgY2F1c2UgZTJmc2NrIHRvIGRpZSB3aXRoIGEgYnVzIGVycm9yLiAgVGhlCitleHQyZnNfcmVhZF9kaXJfYmxvY2soKSBhbmQgZXh0MmZzX3Byb2Nlc3NfZGlyX2Jsb2NrKCkgZnVuY3Rpb25zIGluCit0aGUgZXh0MiBsaWJyYXJ5IG5vdyBkb2VzIGFsaWdubWVudCBzYW5pdHkgY2hlY2tzIG9uIHRoZSByZWNfbGVuIGZpZWxkCitvZiB0aGUgZGlyZWN0b3J5IGVudHJ5IGJlZm9yZSB1c2luZyBpdC4KKworVGhlIGV4dDIgbGlicmFyeSBoYXMgYmVlbiBlbmhhbmNlZCB0byBtYWtlIHR1bmUyZnMgc2FmZSB0byBydW4gb24KK21vdW50ZWQgZmlsZXN5c3RlbXMuICAoVXNlcnMgY291bGQgdXN1YWxseSBnZXQgYXdheSB3aXRoIHVzaW5nIHR1bmUyZnMKK29uIG1vdW50ZWQgZmlsZXN5c3RlbXMgYmVmb3JlLCBidXQgd2l0aCB0aGUgYWR2ZW50IG9mIGV4dDMgYW5kCitqb3VybmFsaW5nLCBpdCBiZWNhbWUgaW1wb3J0YW50IHRvIG1ha2UgdHVuZTJmcyB3YXMgKnJlYWxseSogc2FmZSBmb3IKK3VzZSBldmVuIHdoZW4gdGhlIGZpbGVzeXN0ZW0gYmVpbmcgbW9kaWZpZWQgaXMgbW91bnRlZC4pICBFMmxhYmVsIGlzCitub3cgaW1wbGVtZW50ZWQgYnkgdHVuZTJmcyB1c2luZyBhbiBhcmd2WzBdIGRpc3BhdGNoLCBzbyB0aGF0IGUybGFiZWwKK2lzIGFsc28gbm93IHNhZmUgZm9yIHVzZSBvbiBtb3VudGVkIGZpbGVzeXN0ZW1zLgorCitBZGRlZCBhIG5ldyBwcm9ncmFtLCBlMmltYWdlLCB3aGljaCBjcmVhdGVzIGEgYmFja3VwIG9mIGNyaXRpY2FsIGV4dDIKK2ZpbGVzeXN0ZW0gZGF0YSBzdHJ1Y3R1cmVzLiAgVGhlIGdlbmVyYXRlZCBpbWFnZSBmaWxlIGNhbiBiZSBleGFtaW5lZAordXNpbmcgZHVtcGUyZnMgYW5kIGRlYnVnZnMuICBJbiB0aGUgZnV0dXJlLCBlMmZzY2sgd2lsbCBiZSBhYmxlIHRvIHVzZQordGhlIGltYWdlIGZpbGUgdG8gaGVscCByZWNvdmVyIHZlcnkgYmFkbHkgZGFtYWdlZCBmaWxlc3lzdGVtcy4KKworRml4ZWQgYSBudW1iZXIgb2YgTEZTIGJ1Z3MgaW4gZTJmc2NrOyB2ZXJ5LCB2ZXJ5IGxhcmdlICg+IDIqKjQyKSBmaWxlcworbm8gbG9uZ2VyIGNhdXNlIGUyZnNjayB0byBib21iIG91dC4gIEFsc28gdHJlYXQgZmlsZXMgPiAyR0IgYXMgYmVpbmcKK2xhcmdlIGZpbGUgd2hlbiBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgZmlsZXN5c3RlbSBoYXMgbGFyZ2UgZmlsZXMuCisKK0ZpeGVkIGxzYXR0ciBhbmQgY2hhdHRyIHNvIHRoYXQgdGhleSB3b3JrIGNvcnJlY3RseSBvbiBsYXJnZSBmaWxlcy4KKyhGaXhlcyBEZWJpYW4gYnVnICM3MjY5MC4pCisKK1JlbW92ZWQgbGltaXRhdGlvbiBpbiBnZXRfZGV2aWNlX3NpemUoKSB3aGljaCBpbXBvc2VkIGEgb25lIHRlcnJhYnl0ZQorZmlsZXN5c3RlbSBsaW1pdGF0aW9uLiAgKE1vc3QgMi4yIGtlcm5lbHMgc3RpbGwgaGF2ZSBhIHNpZ25lZCBpbnQKK3Byb2JsZW0gd2hpY2ggY2F1c2UgMSBUQiBibG9jayBkZXZpY2UgbGltaXRhdGlvbi4gIEZvcnR1bmF0ZWx5LCB0aGUKK2tlcm5lbCBwYXRjaGVzIHRvIGZpeCB0aGlzIGFyZSBtdWNoIGVhc2llciB0aGFuIGZpeGluZyB0aGUgMlRCCitsaW1pdGF0aW9uIGluIHRoZSBrZXJuZWwuICA6LSkKKworQSBtYXhfbW91bnRfY291bnQgb2YgemVybyBpcyBub3cgdHJlYXRlZCBhcyBpZiBubyBtb3VudCBjb3VudCB3ZXJlCitzZXQuICAoUHJldmlvdXNseSwgbm8gbW91bnQgY291bnQgd2FzIGluZGljYXRlZCBieSB1c2luZyAtMSwgYW5kIGEKK21vdW50IGNvdW50IG9mIHplcm8gY2F1c2VkIGUyZnNjayB0byBhbHdheXMgYmUgcnVuLikKKworTWtlMmZzIHN1cHBvcnRzIHR3byBuZXcgZmlsZXN5c3RlbSB0eXBlcyBsYXJnZWZpbGUgYW5kIGxhcmdlZmlsZTQuCisKK01rZTJmcyBub3cgYWRkcyBzb21lIHJhbmRvbW5lc3MgaW4gc19tYXhfbW91bnRfY291bnQgc28gdGhhdCBtdWx0aXBsZQorZmlsZXN5c3RlbXMgd29uJ3QgYmUgYWxsIGNoZWNrZWQgYXQgdGhlIHNhbWUgdGltZSB1bmRlciBub3JtYWwKK29wZXJhdGlvbnMuCisKK0ZpeGVkIGJ1ZyBpbiB0aGUgcHJvZ3Jlc3MgYmFyIHByaW50aW5nIGNvZGUgd2hpY2ggY291bGQgY2F1c2UgZTJmc2NrCit0byBjb3JlIGR1bXAgb24gYW4gaWxsZWdhbCBmaWxlc3lzdGVtLgorCitGaXhlZCBidWcgaW4gZnNjayB3aGljaCBjb3VsZCBhbGxvdyBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIGUyZnNjawordG8gYmUgcHJpbnRpbmcgYSBwcm9ncmVzcyBiYXIuICAoRGViaWFuIGJ1ZyAjNjUyNjcpCisKK0ZzY2sgdXNpbmcgYSBVVUlEIG9yIGEgTEFCRUwgc3BlY2lmaWVyIHdpbGwgd29yayBldmVuIGlmIGRldmZzIGlzCitjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgYW5kIG5vdCBtb3VudGVkLiAgSWYgdGhlIHBhdGhuYW1lcyBpbgorL3Byb2MvcGFydGl0aW9ucyBhcmUgaW5jb3JyZWN0LCBmc2NrIHdpbGwgc2VhcmNoIC9kZXYgZm9yIHRoZSBjb3JyZWN0CitkZXZpY2UgKHVzaW5nIHRoZSBuZXcgZXh0MmZzX2ZpbmRfYmxvY2tfZGV2aWNlIGxpYnJhcnkgZnVuY3Rpb24pLgorRnNjayBub3cgYWxzbyBjaGVja3MgdGhlIFJBSUQgZGV2aWNlcyBmaXJzdCBzbyB0aGF0IHRoZXkgYXJlIHByb3Blcmx5Citmb3VuZCB3aGVuIHRoZXkgYXJlIGluIHVzZS4gIFN1cHBvcnQgaGFzIGFsc28gYmVlbiBhZGRlZCB0byBzdXBwb3J0CithZGRpdGlvbmFsIElERSBkaXNrcyBhbmQgdGhlIERBQyA5NjAgZGV2aWNlIG5hbWVzLiAgKERlYmlhbiBidWcgIzk0MTU5KQorCitGaXhlZCBhIGJ1ZyBpbiBmc2NrIHdoaWNoIGNhdXNlZCBpdCBub3QgZGVhbCBwcm9wZXJseSB3aXRoIDE2CitieXRlIGxvbmcgZmlsZXN5c3RlbSBsYWJlbHMuCisKK0ZzY2sncyAtdCBvcHRpb24gaGFzIGJlZW4gbWFkZSBhIGxvdCBtb3JlIGZsZXhpYmxlLiAgVGhlIHNlbWFudGljcyBmb3IKK3doYXQgaGFwcGVucyBpZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHRvIGZzY2sgaGFzIGJlZW4gcmVndWxhcml6ZWQsCithbmQgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGZpbHRlciB3aGF0IGZpbGVzeXN0ZW1zIHdpbGwgZ2V0IGNoZWNrZWQKK2Jhc2VkIHdoYXQgaXMgaW4gdGhlIGZpbGVzeXN0ZW0ncyBmc3RhYiBlbnRyeSdzIG9wdGlvbiBmaWVsZC4gIChEZWJpYW4KK2J1ZyAjODk0ODMuKQorCitUaGUgZHVtcGUyZnMgcHJvZ3JhbSBjYW4gbm93IHByaW50IG91dCB0aGUgZ3JvdXAgZGVzY3JpcHRpb24KK2luZm9ybWF0aW9uIGluIGhleCwgYW5kIGFsc28gcHJpbnRzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3VwZXJibG9jayBhbmQKK2Jsb2NrIGdyb3VwIGRlc2NyaXB0b3IgZm9yIHRob3NlIGJsb2NrIGdyb3VwcyB0aGF0IGhhdmUgdGhlbS4KKworTWtlMmZzIG5vdyBjbGVhcnMgdGhlIGV4dDIgc3VwZXJibG9jayBiZWZvcmUgaXQgc3RhcnRzIGNyZWF0aW5nIGEKK2ZpbGVzeXN0ZW0sIHNvIHRoYXQgdGhlIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGlzIG9ubHkgd3JpdHRlbiBpZiB0aGUKK2ZpbGVzeXN0ZW0gY3JlYXRpb24gcHJvY2VzcyBzdWNjZXNzZnVsbHkgY29tcGxldGVzLgorCitUaGUgZGVidWdmcyBwcm9ncmFtJ3Mgc3RhdCBjb21tYW5kIG5vdyBwcmV0dHktcHJpbnRzIHRoZSBibG9ja3MgdXNlZAorYnkgYW4gaW5vZGUgc28gdGhhdCBpdCdzIG1vcmUgY29tcGFjdCBhbmQgaW5mb3JtYXRpdmUuCisKK1RoZSBkZWJ1Z2ZzIHN0YXRzIGNvbW1hbmQgbm93IHVzZXMgdGhlIHNhbWUgbGliZTJwIGNvZGUgKHdoaWNoIGlzIHVzZWQKK2J5IGR1bXBlMmZzKSB0byBwcmludCB0aGUgc3VwZXJibG9jayBoZWFkZXIgaW5mb3JtYXRpb24uICBUaGlzIGlzIG1vcmUKK2NvbXBsZXRlLCBhbmQgaXQgYXZvaWRzIGEgYml0IG9mIGNvZGUgZHVwbGljYXRpb24uCisKK0FkZGVkIGEgbmV3IGRlYnVnZnMgY29tbWFuZCwgc2V0X3N1cGVyX3ZhbHVlIChzc3YpIHdoaWNoIGFsbG93cyB0aGUKK3VzZXIgdG8gc2V0IGFyYml0cmFyeSBzdXBlcmJsb2NrIGZpZWxkcy4KKworRGVidWdmcyB3YXMgZXh0ZW5kZWQgdG8gc3VwcG9ydCBpbm9kZSBudW1iZXJzIGluIGhleCAoYnkgcHJlZml4aW5nCit0aGVtIHdpdGggMHgpLCBhbmQgc28gdGhhdCBtb2RpZnlfaW5vZGUgY2FuIHNldCB0aGUgaW5vZGUgZ2VuZXJhdGlvbgorbnVtYmVyLiAgQWxzbywgdGhlcmUgaXMgbm93IGEgbmV3IGZ1bmN0aW9uIGNvbW1hbmQgY2FsbGVkIGxvZ2R1bXAKK3doaWNoIHdpbGwgZHVtcCBhbiBleHQzIGpvdXJuYWwuCisKK0ZpeGVkIGEgYnVnIGluIGRlYnVnZnMgc28gdGhhdCBxdWl0dGluZyBvdXQgb2YgdGhlIHBhZ2VyIGRvZXNuJ3Qga2lsbAorZGVidWdmcy4KKworRGVidWdmcydzIGR1bXAgY29tbWFuZCBub3cgc3RvcHMgaW1tZWRpYXRlbHkgdXBvbiByZXBvcnRpbmcgYSBkaXNrCityZWFkIGVycm9yLiAgKEZpeGVkIGEgYnVnIGluIGV4dDJmc19maWxlX3JlYWQgbGlicmFyeSByb3V0aW5lIHdoaWNoCitjYXVzZWQgZGVidWdmcyBub3QgdG8gc3RvcC4pICAoRGViaWFuIGJ1ZyAjNzkxNjMpCisKK09uIHN5c3RlbXMgd2l0aCAvcHJvYy9tb3VudHMgKG1haW5seSBMaW51eCBzeXN0ZW1zKSwgL3Byb2MvbW91bnRzIGlzCitjaGVja2VkIGJlZm9yZSAvZXRjL210YWIgaXMgdXNlZCwgc2luY2UgL3Byb2MvbW91bnRzIGlzIG1vcmUgbGlrZWx5IHRvCitiZSBhY2N1cmF0ZS4KKworQWRkZWQgcG9ydGFiaWxpdHkgZml4ZXMgZm9yIFNvbGFyaXMgYW5kIExpbnV4L2lhNjQuCisKK1ZhcmlvdXMgbWFudWFsIHBhZ2VzIHdlcmUgY2xhcmlmaWVkIGFuZCBjbGVhbmVkIHVwLiAgKEZpeGVkIGRlYmlhbgorYnVncyAjNjM0NDIsICM2NzQ0NiwgYW5kICM4NzIxNikKKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBlMmZzY2sgbWVzc2FnZSBwcmludGVyIG5vdyBzdXBwb3J0cyAlSXUgYW5kICVJZywgd2hpY2ggd2lsbCBwcmludAorb3V0IHRoZSBpbm9kZSdzIHVzZXIgYW5kIGdyb3VwIG93bmVycywgcmVzcGVjdGl2ZWx5LgorCitFMmZzcHJvZ3Mgbm93IGluY2x1ZGVzIGl0cyBvd24gdmVyc2lvbiBvZiBpbmNsdWRlL2xpbnV4L2V4dDJfZnMuaCwgc28KK3RoYXQgbm8gbG9uZ2VyIGRlcGVuZGVudCBvbiB0aGUgc3lzdGVtIGhhdmluZyB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mCit0aGUga2VybmVsIGhlYWRlciBmaWxlcy4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gdG8gbGliZXh0MiwgZXh0MmZzX2ZpbmRfYmxvY2tfZGV2aWNlKCksIHdoaWNoCitzZWFyY2hlcyB0aGUgc3lzdGVtIChpLmUuLCAvZGV2LCAvZGV2ZnMsIC9kZXZpY2VzKSBmb3IgYSBwYXRobmFtZSB0byBhCitkZXZpY2UgZ2l2ZW4gaXRzIGRldmljZSBudW1iZXIuCisKK0FkZGVkIGEgbmV3IGZ1bmN0aW9uIHRvIGxpYmV4dDIsIGV4dDJmc19zeW5jX2RldmljZSwgd2hpY2ggY2VudHJhbGl6ZXMKK2FsbCBvZiB0aGUgcGxhY2VzIHdoaWNoIG1pZ2h0IHRyeSB0byB1c2UgdGhlIEJMS0ZMU0JVRiBvciBGREZMVVNICitpb2N0bHMgKGFuZCB1c3VhbGx5IGZhaWxpbmcgdG8gZGVmaW5lIHRoZW0gc2luY2UgdGhlIHN5c3RlbSBoZWFkZXIKK2ZpbGVzIGRvbid0IHVzdWFsbHkgZG8gdGhpcyBmb3IgdXMsIGFuZCB3ZSdyZSB0cnlpbmcgdG8gYXZvaWQgdXNhZ2Ugb2YKK2tlcm5lbCBpbmNsdWRlIGZpbGVzIG5vdykuCisKK0FkZGVkIG5ldyB1dGlsaXR5IHByb2dyYW1zIGluIHRlc3RzL3Byb2dzOiByYW5kb21fZXhlcmNpc2UgYW5kCitob2xkX2lub2RlLiAgVGhleSBhcmVuJ3QgYnVpbHQgYnkgZGVmYXVsdDsgdGhleSdyZSB1c2VmdWwgZm9yCitleGVyY2lzaW5nIGV4dDMgZmlsZXN5c3RlbSBjb2RlLgorCitBZGRlZCBhIG5ldyBleHQyIGZpbGVzeXN0ZW0gZmxhZywgRVhUMl9GTEFHX1NVUEVSX09OTFksIHdoaWNoIGNhdXNlcwordGhlIGZpbGVzeXN0ZW0gY2xvc2UgZnVuY3Rpb25zIHRvIG9ubHkgdXBkYXRlIHRoZSBzdXBlcmJsb2NrLCBhbmQgdG8KK25vdCB0b3VjaCB0aGUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMuICBOZWVkZWQgYnkgdHVuZTJmcyB3aGVuCittb2RpZnlpbmcgYSBtb3VudGVkIGZpbGVzeXN0ZW0uCisKK0dvdCByaWQgb2Ygc3RydWN0IGV4dDJmc19zYiBhbmQgcmVwbGFjZWQgaXQgd2l0aCB0aGUgc3RhbmRhcmQgc3RydWN0CitleHQyX3N1cGVyX2Jsb2NrIGZyb20gaW5jbHVkZS9saW51eC9leHQyX2ZzLmguICBOb3RlOiB0aGlzIG1heSBicmVhaworc291cmNlIChidXQgbm90IGJpbmFyeSkgY29tcGF0aWJpbGl0eSBvZiBzb21lIHVzZXJzIG9mIHRoZSBleHQyCitsaWJyYXJ5LiAgVGhvc2UgYXBwbGljYXRpb25zIHNob3VsZCBqdXN0IHNpbXBseSBkbyBhIGdsb2JhbCBzZWFyY2ggYW5kCityZXBsYWNlIG9mIHN0cnVjdCBleHQyZnNfc2Igd2l0aCBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jaywgYW5kIGluY2x1ZGUKK3RoZSBuZXcgaGVhZGVyIGZpbGUgPGV4dDJmcy9leHQyX2ZzLmg+IHdoaWNoIGRlZmluZXMgaXQuCisKK1RoZSBpbm9fdCB0eXBlIGhhcyBiZWVuIHJlbmFtZWQgZXh0Ml9pbm9fdCB0byBwcm90ZWN0IGFwcGxpY2F0aW9ucwordGhhdCBhdHRlbXB0IHRvIGNvbXBpbGUgLURfRklMRV9PRkZTRVRfQklUUz02NCwgc2luY2UgdGhpcworaW5leHBsaWNhYmx5IGNoYW5nZXMgaW5vX3QoIT8pLiAgU28gd2UgdXNlIGV4dDJfaW5vX3QgdG8gYXZvaWQgYW4KK3VuZXhwZWN0ZWQgQUJJIGNoYW5nZS4KKworVGhlIE1ha2VmaWxlcyBoYXZlIGJlZW4gcmV3b3JrZWQgc28gdGhhdCAibWFrZSBjaGVjayIgY2FuIGJlIHJ1biBmcm9tCit0aGUgdG9wLWxldmVsIE1ha2VmaWxlLgorCitGaXggZ2VuZXJhbCBnY2MgLVdhbGwgY29tcGxhaW50cyBhbmQgcmVtb3ZlZCBkZWFkIGNvZGUuCisKK1JlbW92ZSB1c2Ugb2YgTk9BUkdTLCBiZWNhdXNlIHdlIGFzc3VtZSBldmVyeW9uZSBkb2VzIEFOU0kgQyB0aGVzZQorZGF5cy4KKworQWRkZWQgYnVpbGQtcnBtIHNjcmlwdCBmcm9tIHNjdC4KKworTmV3IGZ1bmN0aW9ucyBleHQyZnNfaW1hZ2Vfe2lub2RlLHN1cGVyLGJpdG1hcH1fe3JlYWQsd3JpdGV9IGFkZGVkIAordG8gc3VwcG9ydCBlMmltYWdlLgorCitOZXcgZnVuY3Rpb24gZXh0MmZzX2ZsdXNoX2ljYWNoZSB3aGljaCBtdXN0IGJlIGNhbGxlZCBpZiB0aGUKK2FwcGxpY2F0aW9uIHByb2dyYW0gbW9kaWZpZXMgdGhlIGlub2RlIHRhYmxlIGJsb2NrcyB3aXRob3V0IGdvaW5nCit0aHJvdWdoIGV4dDJmc193cml0ZV9pbm9kZSgpIGludGVyZmFjZS4KKworTmV3IGV4dDJmc19jaGVja19tb3VudF9wb2ludCgpIGZ1bmN0aW9uLCB3aGljaCB3aWxsIHJldHVybiB0aGUgbW91bnQKK3BvaW50IG9mIGEgZGV2aWNlIGlmIG1vdW50ZWQuCisKK1RoZSBpb19jaGFubmVsIGFic3RyYWN0aW9uIG5vdyBoYXMgYW4gb3B0aW9uYWwgaW50ZXJmYWNlLAoraW9fY2hhbm5lbF93cml0ZV9yYW5nZSwgd2hpY2ggYWxsb3dzIHNwZWNpZmljIGJ5dGUgcmFuZ2VzIHRvIGJlCit3cml0dGVuLiAgCisKK1RoZSB1bml4X2lvIElPIGNoYW5uZWwgbm93IHN1cHBvcnRzIHdyaXRlLXRocm91Z2ggY2FjaGluZywgc28gdGhhdAoram91cm5hbCBjcmVhdGlvbiBpcyBtb3JlIGVmZmljaWVudC4KKworQWRkZWQgeDg2IGFzc2VtYmx5IGxhbmd1YWdlIHJvdXRpbmVzIHRvIHN1cHBvcnQgYnl0ZSBzd2FwcGluZywgdG8KK3JlZHVjZSBleGVjdXRhYmxlIHNpemUuCisKK0ZpeGVkIGJ1ZyBpbiB0aGUgdXRpbGl0eSBwcm9ncmFtIHN1YnN0IHNvIHRoYXQgaXQncyBwb3NzaWJsZSB0bworcmVwbGFjZSBhIHN1YnN0aXR1dGlvbiB2YXJpYWJsZSB3aXRoIGEgemVyby1sZW5ndGggc3RyaW5nLgorCitGaXhlZCBudW1iZXJpbmcgZTJmc2NrIHBhc3MxIHByb2JsZW0gbnVtYmVyczsgYW4gZXh0cmEgemVybyBoYWQKK3NsaXBwZWQgaW50byBzb21lIG9mIHRoZSBwcm9ibGVtIG51bWJlci4KKworRTJmc3Byb2dzIDEuMTkgKEp1bHkgMTMsIDIwMDApCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSB0aGUgcmVzaXplMmZzIHByb2dyYW0gc2luY2UgdGhlIHRpbWVvdXQgYmVmb3JlIGl0IGNvdWxkCitiZSByZWxlYXNlZCB1bmRlciB0aGUgR1BMIGhhcyBmaW5hbGx5IGV4cGlyZWQuCisKK0FkZCBleHBlcmltZW50YWwgc3VwcG9ydCBuZWVkZWQgZm9yIHRoZSBleHQyIGNvbXByZXNzaW9uIHBhdGNoZXMuCitUaGlzIHJlcXVpcmVzIGNvbXBpbGluZyBlMmZzcHJvZ3Mgd2l0aCB0aGUgLS1lbmFibGUtY29tcHJlc3Npb24gZmxhZwordG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisKK0FkZGVkIGV4dDMgam91cm5hbGxpbmcgc3VwcG9ydC4gIEUyZnNjayB3aWxsIHJ1biB0aGUgam91cm5hbCAoaWYKK25lY2Vzc2FyeSkgYnkgdGVtcG9yYXJpbHkgbW91bnRpbmcgdGhlIGZpbGVzeXN0ZW0uICAvc2Jpbi9mc2NrLmV4dDMgaXMKK2luc3RhbGxlZCBhcyBhIHN5bWxpbmsgdG8gZTJmc2NrLiAgRnNjayBoYXMgYmVlbiB0YXVnaHQgYWJvdXQgZXh0MywKK2FuZCB0cmVhdHMgaXQgdGhlIHNhbWUgYXMgZXh0MiBpbiB0ZXJtcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyIGxvZ2ljLgorRHVtcGUyZnMgd2lsbCBkaXNwbGF5IHRoZSBzdXBlcmJsb2NrIGpvdXJuYWxpbmcgaW5mb3JtYXRpb24gaWYgdGhlCitmaWxlc3lzdGVtIGhhcyBhIGpvdXJuYWwuICBUaGUgZXh0MiBsaWJyYXJ5IHdpbGwgbm93IHBlcm1pdCBvcGVuaW5nIGFuCitleHQzIGZpbGVzeXN0ZW0gd2l0aCB0aGUgcmVjb3ZlcnkgZmxhZyBzZXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IKK29uLWxpbmUgZHVtcCdzIHRvIHdvcmsgY29ycmVjdGx5LCBidXQgdGhlcmUgbWF5IGJlIGlzc3VlcyB3aXRoIHRoaXMKK3dvcmtpbmcgd2VsbCBzaW5jZSBleHQzIGlzIG11Y2ggbGVzcyBhZ3Jlc3NpdmUgYWJvdXQgc3luY2luZyBibG9ja3MgdG8KK3RoZSBmaWxlc3lzdGVtLCBzaW5jZSB0aGV5J3JlIHNhZmUgb24gdGhlIGpvdXJuYWwuCisKK1R1bmUyZnMgYW5kIGUyZnNjayBoYXZlIGJlZW4gY2hhbmdlZCB0byBhbGxvdyB0aGUgbW91bnRfY291bnQgY2hlY2sgdG8KK2JlIGRpc2FibGVkIGJ5IHNldHRpbmcgbWF4X21vdW50X2NvdW50IHRvIC0xLiAgKFRoaXMgd2FzIGFscmVhZHkKK3N1cHBvcnRlZCBieSB0aGUga2VybmVsLikKKworQ3JlYXRlIGEgc3ltYm9saWMgbGluayBmb3IgZnNjay5leHQzLCBzaW5jZSB0aGUgZTJmc3Byb2dzIHV0aWxpdGllcworYXJlIHVzZWQgZm9yIGV4dDMgYXMgd2VsbC4KKworQWRkZWQgaW50ZXJuYXRpb25hbGl6YXRpb24gc3VwcG9ydCBmb3IgZTJmc3Byb2dzOyBtdXN0IGJlIGVuYWJsZWQKK2J5IHBhc3NpbmcgLS1lbmFibGUtbmxzIHRvIGNvbmZpZ3VyZS4KKworQWx3YXlzIHVzZSB0aGUgcHJvdmlkZWQgZXh0MmZzIGhlYWRlciBmaWxlcyB0byBpbnN1bGF0ZSBvdXJzZWx2ZXMgZnJvbQora2VybmVsIHZlcnNpb24gY2hhbmdlcy4gIFdoaWNoIGluY2x1ZGUgZmlsZXMgYXJlIHVzZWQgYnkgZTJmc3Byb2dzCitoYXZlIGFsc28gYmVlbiBjbGVhbmVkIHVwIHRvIGltcHJvdmUgcG9ydGFiaWxpdHkuCisKK0xpbWl0IHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBlMmZzY2sgdXBkYXRlcyB0aGUgcHJvZ3Jlc3MgYmFyIHNvIHRoYXQKK3Blb3BsZSB3aG8gYXJlIGJvb3RpbmcgdXNpbmcgYSA5NjAwIGJhdWQgY29uc29sZSBkb24ndCBnZXQgc3dhbXBwZWQgYnkKK3RvbyBtYW55IHVwZGF0ZXMuCisKK0ltcHJvdmVkIHRoZSBsb29wIGRldGVjdGlvbiBhbGdvcml0aG0gaW4gZTJzY2sncyBwYXNzICMzIHNvIHRoYXQgaXQgaXMKK211Y2gsIG11Y2ggZmFzdGVyIGZvciBsYXJnZSBmaWxlc3lzdGVtcyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mCitkaXJlY3Rvcmllcy4KKworVGhlIG1lbW9yeSBmb290cHJpbnQgZm9yIGUyZnNjayBpcyBub3cgc2xpZ2h0bHkgc21hbGxlciB0aGFuIGJlZm9yZS4KKworRTJmc2NrIG5vdyBjaGVja3MgaWYgc3BlY2lhbCBkZXZpY2VzIGhhdmUgYSBub24temVybyBzaXplLCBhbmQgb2ZmZXJzCit0byBjbGVhciB0aGUgc2l6ZSBmaWVsZCBpZiBpdCBmaW5kcyBzdWNoIGFuIGlub2RlLiAgCisKK0UyZnNjayBub3cgY2hlY2tzIGlmIHNwZWNpYWwgZGV2aWNlcyBoYXZlIHRoZSBhcHBlbmQtb25seSBmbGFnIHNldCwKK2FuZCBvZmZlcnMgdG8gY2xlYXIgdGhlIGlub2RlLgorCitFMmZzY2sgbm93IHByb3Blcmx5IGhhbmRsZXMgc29tZSAic2hvdWxkIG5ldmVyIGZhaWwiIGNhc2VzIGR1cmluZyBhCitiaXRtYXAgY29weSBpbiBwYXNzNS4KKworRTJmc2NrIG5vdyBwcm9wZXJseSBwcmludHMgY29udHJvbCBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lcyBhcyBeQSAuLiBeWi4KKworRTJmc2NrIG5vdyBjYWxjdWxhdGVzIHRoZSBjb3JyZWN0IGxvY2F0aW9uIG9mIHRoZSBiYWNrdXAgc3VwZXJibG9jayBpbgordGhlIGNhc2Ugb2YgZmlsZXN5c3RlbSBibG9ja3NpemVzID4gMWsuCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjaydzIGNhbGN1bGF0aW9uIG9mIHRoZSBudW1iZXIgb2YgaW5vZGVzX3Blcl9ibG9jaword2hpY2ggbm9ybWFsbHkgZGlkbid0IGNhdXNlIHByb2JsZW1zIHVuZGVyIG1vc3QgZmlsZXN5c3RlbSBwYXJhbWV0ZXJzLAorYnV0IGNvdWxkIGNhdXNlIGEgdmFsaWQgc3VwZXJibG9jayB0byBiZSByZWplY3RlZCBpbiBleHRyZW1lIGNhc2VzLgorT3RoZXIgY2hlY2tzIGZvciB2YWxpZGF0aW5nIHN1cGVyYmxvY2sgdmFsdWVzIHdlcmUgbWFkZSBtb3JlCitzdHJpbmdlbnQuCisKK0FkZGVkIG5vbi1kZXN0cnVjdGl2ZSB3cml0ZSB0ZXN0aW5nIHRvIHRoZSBiYWRibG9ja3MgcHJvZ3JhbSwgY291cnRlc3kKK29mIERhdmlkIEJlYXR0aWUuICBUaGUgYmFkYmxvY2tzIGFsc28gbm93IGhhcyBhbiBvcHRpb24gdG8gaW5wdXQgdGhlCitjdXJyZW50IHNldCBvZiBiYWQgYmxvY2tzLCBzbyB0aGF0IGtub3duIGJhZCBibG9ja3MgYXJlIHNraXBwZWQgdG8KK3NwZWVkIHVwIHRoZSBiYWRibG9ja3MgdGVzdC4gIFRoZXJlIGlzIGFsc28gYSBwZXJzaXN0ZW50IHJlc2NhbgorZmVhdHVyZSB3aGljaCBjYXVzZXMgYmFkYmxvY2tzIHRvIHJ1biB1bnRpbCBpdCBoYXMgY29tcGxldGVkIHNvbWUKK251bWJlciBvZiBwYXNzZXMgd2l0aG91dCBkaXNjb3ZlcmluZyBhbnkgbmV3IGJhZCBibG9ja3MuCisKK0JhZGJsb2NrcyBub3cgY2hlY2tzIHRvIHNlZSBpZiB0aGUgZGV2aWNlIGlzIG1vdW50ZWQgYW5kIHJlZnVzZXMgdG8gZG8KK3RoZSB0ZXN0cyBpbnZvbHZpbmcgd3JpdGluZyB0byB0aGUgZGV2aWNlIGlmIGl0IGlzIG1vdW50ZWQuICBBbHNvLAorYmFkYmxvY2tzIG5vdyBhbGxvd3MgdGhlIG51bWJlciBvZiBibG9ja3MgdG8gYmUgY2hlY2tlZCB0byBiZQorZGVmYXVsdGVkIHRvIHRoZSBzaXplIG9mIHRoZSBwYXJ0aXRpb24uCisKK0ZpeGVkIGEgYnVnIGluIGZzY2sgd2hpY2ggZGlkbid0IGFsbG93IG5vbi1yb290IHVzZXJzIHRvIGJlIGFibGUgdG8KK2NoZWNrIGZpbGVzeXN0ZW1zIGlmIHRoZXJlIHdlcmUgYW55IExBQkVMPSBvciBVVUlEPSBlbnRyaWVzIGluCisvZXRjL2ZzdGFiLgorCitUaGUgSHVyZCBkb2Vzbid0IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZpbGVzeXN0ZW0gZmVhdHVyZS4gIFRoZSBta2UyZnMKK3Byb2dyYW0gbm93IG1ha2VzIHN1cmUgdGhhdCBmb3IgdGhlIEh1cmQsIHRoZSBmaWxlc3R5cGUgZmVhdHVyZSBpcwordHVybmVkIG9mZi4gIEUyZnNjayB3aWxsIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlsZXR5cGUgZmVhdHVyZSBpcwordHVybmVkIG9uIGZvciBIdXJkIGZpbGVzeXN0ZW1zLCBhbmQgb2ZmZXIgdG8gdHVybiBvZmYgdGhlIGZlYXR1cmUuCisKK01rZTJmcyBub3cgaGFzIGEgc2FmZXR5IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIGJsb2NrcyBkbyBub3QKK2V4Y2VlZCAzMiBiaXRzIGV2ZW4gb24gYSA2NCBiaXQgcGxhdGZvcm0uCisKK1JlYWxseSBmaXhlZCBhIGJ1ZyBpbiBmc2NrIHRvIGFsbG93ICJmc2NrIC1BcyIgdG8gcnVuIGludGVyYWN0aXZlCitmc2NrJ3MuICAoRm9yIHRob3NlIHBlb3BsZSB3aG8gbGlrZSB0byBkbyBpbnRlcmFjdGl2ZSBmc2NrJ3MgaW4gdGhlCisvZXRjL3JjIHNjcmlwdHMhPyEpCisKK0RlYnVnZnMgaGFzIGEgZmV3IG5ldyBmZWF0dXJlczogdGhlIHJkdW1wIGNvbW1hbmQsIHdoaWNoIHdpbGwgZG8gYQorcmVjdXJzaXZlIGR1bXAgb2YgYSBkaXJlY3RvcnkgYW5kIGFsbCBvZiBpdHMgY29udGVudHMsIGFuZCB0aGUgbGNkCitjb21tYW5kIHdoaWNoIGRvZXMgYSBsb2NhbCBjaGRpciAobXVjaCBsaWtlIHRoZSBmdHAgY29tbWFuZCBvZiB0aGUKK3NhbWUgbmFtZSkuICBJbiBhZGRpdGlvbiwgdGhlIGRlYnVnZnMgcHJvZ3JhbSBhbmQgdGhlIG9wZW5fZmlsZXN5c3RlbQorY29tbWFuZCBub3cgdGFrZXMgdGhyZWUgbmV3IG9wdGlvbnM6IC1iIGFuZCAtcywgd2hpY2ggYWxsb3dzIHRoZQorYmxvY2tzaXplIGFuZCBzdXBlcmJsb2NrIGxvY2F0aW9uIHRvIGJlIHNwZWNpZmllZCwgYW5kIHRoZSAtYyBvcHRpb24KK3doaWNoIGlzIHVzZWQgaW4gY2F0YXN0cm9waGljIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGJsb2NrIGdyb3VwCitkZXNjcmlwdG9ycyBhcmUgY29ycnVwdC4gIElmIHRoZSAtYyBvcHRpb24gaXMgc3BlY2lmaWVkLCBkZWJ1Z2ZzIHdpbGwKK3NraXAgdHJ5aW5nIHRvIHJlYWQgaW4gdGhlIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzLgorCitEZWJ1ZnMncyBsc2RlbCBjb21tYW5kIHdhcyBmaXhlZCB0byBoYW5kbGUgYmFkIGJsb2NrcyBpbiB0aGUgaW5vZGUKK3RhYmxlLgorCitBIFkySyBidWcgaW4gZGVidWdmcydzICJscyAtbCIgaGFuZGxpbmcgd2FzIGZpeGVkIGJ5IHN3aXRjaGluZyB0byB1c2UKKzQgZGlnaXQgeWVhcnMuCisKK0dlbmVyYWwgaW1wcm92ZW1lbnRzIGluIGVycm9yIG1lc3NhZ2VzCisKKyAgLSBNa2UyZnMgcHJpbnRzIGEgc2FuZSBlcnJvciBtZXNzYWdlIGlmIHRoZSBwYXJ0aXRpb24gc2l6ZSBpcyB6ZXJvCisJKHVzdWFsbHkgYmVjYXVzZSB0aGUgcGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgYnkgdGhlCisJa2VybmVsIGR1ZSB0byB0aGUgcGFydGl0aW9uIGJlaW5nIGJ1c3kpLCBpbnN0ZWFkIG9mICJpbnZhbGlkCisJYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBpbml0aWFsaXppbmcgc3VwZXJibG9jayIuCisKKyAgLSBGc2NrIG5vdyBwcmludHMgbW9yZSBzZWxmLWV4cGxhbmF0b3J5IG1lc3NhZ2UgaWYgYW4gaW52YWxpZCBVVUlEPQorCW9yIExBQkVMPSBzcGVjaWZpY2F0aW9uIGlzIHBhc3NlZCB0byBpdC4KKworVVVJRCBsaWJyYXJ5IGNoYW5nZWQgdG8gdXNlIHRoZSBMR1BMLgorCitGaXhlZCBhIGJ1ZyBpbiB0aGUgVVVJRCBsaWJyYXJ5IHdoZXJlIHZlcnkgcmFwaWQgY2FsbHMgdG8gdGhlCit0aW1lLWJhc2VkIFVVSUQgZ2VuZXJhdG9yIGNvdWxkIGNhdXNlIGR1cGxpY2F0ZSBVVUlEJ3MgdG8gYmUgcmV0dXJuZWQuCitUaGlzIHdhcyBub3QgYSBwcm9ibGVtIGZvciBlMmZzcHJvZ3MsIGJ1dCBpdCBjb3VsZCBiZSBhIHByb2JsZW0gZm9yCitvdGhlciB1c2VycyBvZiB0aGUgbGlicmFyeS4KKworTWFrZSB0aGUgVVVJRCBsaWJyYXJ5IG1vcmUgcm9idXN0IGluIHRoZSBmYWNlIG9mIG1pc3Npbmcgb3IgYW4KK2ltcHJvcGVyIC9kZXYvdXJhbmRvbSBvciAvZGV2L3JhbmRvbSBmaWxlcy4KKworQWRkZWQgc29tZSByYW5kb20gcG9ydGFiaWxpdHkgZml4ZXMgZm9yIFNvbGFyaXMuCisKK1NvbWUgbWlub3IgbWFuIHBhZ2UgdXBkYXRlcy4KKworRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgc3MgbGlicmFyeS4KKworCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dlIG5vdyB0cnkgdG8gdXNlIGxzZWVrNjQgYW5kIG9wZW42NCBmcm9tIHRoZSBMRlMgaWYgcG9zc2libGUuCisKK1RoZSAzcmQgcGFyYW1ldGVyIGluIGUycCdzIHByaW50X2ZsYWdzIGlzIG5vdyBhIGZsYWdzIHdvcmQsIGluc3RlYWQgb2YKK2EgYm9vbGVhbiBvcHRpb24uCisKK1RoZSBtYXJrIGFuZCB1bm1hcmsgYml0bWFwIGZ1bmN0aW9ucyBub3cgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZSBvZgordGhlIGJpdCB0aGF0IHdhcyBiZWluZyBjaGFuZ2VkLCB3aGljaCBpcyB1c2VmdWwgZm9yIHNvbWUgc3BlZWQKK29wdGltaXphdGlvbnMuCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byBlbmhhbmNlIHRoZSBiYWRibG9ja3MgbGlzdAoraGFuZGxpbmcgaW4gbGliZXh0MmZzOiBleHQyZnNfd3JpdGVfYmJfRklMRSwgZXh0MmZzX3JlYWRfYmJfRklMRTIsIGFuZAorZXh0MmZzX2JhZGJsb2Nrc19lcXVhbC4KKworVGhlIGV4dDIgaGVhZGVyIGZpbGVzIG5vdyBoYXZlIHRoZSBsYXRlc3Qgam91cm5hbGxpbmcgZmllbGRzIHRvIHRoZQorc3VwZXJibG9jay4KKworVGhlIGV4dDJmc19ta2RpciBmdW5jdGlvbiBpbiBsaWJleHQyZnMgbm93IHByb3Blcmx5IGJhY2tzIG91dCBvZiBlcnJvcgorY29uZGl0aW9ucyByb2J1c3RseS4KKworQ2xlYW5lZCB1cCBtYWtlZmlsZXM6CisgIC0gdG8gY2xlYW5seSAgY29tcGlsZSB3aXRoIHRoZSAtaiBmbGFnLgorICAtIHNvIGRpc3RjbGVhbiByZW1vdmVzIGFsbCBnZW5lcmF0ZWQgZmlsZXMuCisgIC0gc28gaW4gY2FzZSBvZiBhbiBlcnJvciB3aGlsZSBpbnN0YWxsaW5nIGhlYWRlciBmaWxlcywgdGhlIG1ha2UgYWJvcnRzLgorCitGaXggdGVzdF9zY3JpcHQgc28gdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBjb21waWxpbmcgaW4gdGhlCitzb3VyY2UgZGlyZWN0b3J5LgorCitUaGUgcmFuZG9tIFVVSUQgZ2VuZXJhdGlvbiByb3V0aW5lIGhhcyBiZWVuIG1hZGUgc2xpZ2h0bHkgYmV0dGVyIGluCit0aGUgY2FzZSB3aGVyZSAvZGV2L3JhbmRvbSBkb2Vzbid0IGV4aXN0LiAgKFVzZSBvZiByYW5kb21seS1iYXNlZCBVVUlECitpcyBzdGlsbCBub3QgcmVjb21tZW5kZWQgaWYgL2Rldi9yYW5kb20gZG9lc24ndCBleGlzdCwgaG93ZXZlcjsgaXQncworYmV0dGVyIHRvIHVzZSB0aGUgdGltZS9ldGhlcm5ldCBNQUMgYWRkcmVzcyBVVUlEIGluIHRoaXMgY2FzZS4pCisKK0NsZWFuIHVwIHRoZSBidWlsZCBwcm9jZXNzIHNvIGl0J3MgbW9yZSBmcmllbmRseSBpbiBjYXNlIG9mIG1pc3NpbmcKK2RpcmVjdG9yaWVzLgorCitUaGUgZXh0MmZzIGhlYWRlciBmaWxlIGNhbiBub3cgYmUgI2luY2x1ZGUnZCBpbnRvIEMrKyBwcm9ncmFtcy4KKworVGhlIGUycC5oIGhlYWRlciBmaWxlIGlzIG5vdyBpbnN0YWxsZWQuCisKK0FkZGVkIHdvcmthcm91bmQgdG8gYSBnYXdrIDMuMC41IGJ1ZyBpbiBsaWIvc3MvbWtfY21kcy4KKworCisKK0UyZnNwcm9ncyAxLjE4IChOb3ZlbWJlciAxMCwgMTk5OSkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IGEgY29yZSBkdW1waW5nIGJ1ZyBpbiBlMmZzY2sgaWYgYW4gaW1hZ2ljIGlub2RlIGlzIHByZXNlbnQgb3IKKyhtb3JlIHJhcmVseSkgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgYmFkbHkgY29ycnVwdGVkIGVub3VnaCB0aGF0IGUyZnNjaworaGFzIHRvIHJlc3RhcnQgcGFzcyAxIHByb2Nlc3NpbmcuICBFMmZzY2sgbm93IGNsb3NlcyB0aGUgZmlsZXN5c3RlbQorYmVmb3JlIGZyZWVpbmcgYSBsYXJnZSBudW1iZXIgb2YgaXRzIGRhdGEgc3RydWN0dXJlcywgc28gaW4gdGhlIGNhc2UKK29mIGZ1dHVyZSBtZW1vcnkgZmF1bHRzLCBhdCBsZWFzdCB0aGUgZml4ZWQgZmlsZXN5c3RlbSB3aWxsIGJlIGZ1bGx5Cit3cml0dGVuIG91dC4KKworSWYgYSBmaWxlc3lzdGVtIGRvZXNuJ3Qgc3VwcG9ydCBpbWFnaWMgaW5vZGVzLCBhbmQgZTJmc2NrIGRpc2NvdmVycyBhbgoraW1hZ2ljIGlub2RlLCBpdCB3aWxsIG9mZmVyIHRvIGNsZWFyIHRoZSBpbWFnaWMgZmxhZy4KKworRTJmc2NrIHdpbGwgbm93IG9mZmVyIHRvIGNsZWFyIHRoZSBpbW11dGFibGUgZmxhZyBvbiBzcGVjaWFsIGZpbGVzCisoZGV2aWNlL3NvY2tldC9maWZvcykgd2hlbiBydW5uaW5nIGl0IGluIG5vbi1wcmVlbiBtb2RlLgorCitFMmZzY2sgd2lsbCBub3cgc2V0IHRoZSBmaWxldHlwZSB3aGVuIGNyZWF0aW5nIC9sb3N0K2ZvdW5kLCBhbmQgd2hlbgorY29ubmVjdGVkIG9ycGhhbmVkIGlub2RlcyB0byAvbG9zdCtmb3VuZC4KKworRGVidWdmcydzIG5jaGVjayBhbmQgaWNoZWNrIGNvbW1hbmRzIG5vdyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZXJlCithcmUgYmFkIGJsb2NrcyBpbiB0aGUgaW5vZGUgdGFibGUgd2l0aG91dCBib21iaW5nIG91dC4KKworVGhlIGJhZGJsb2NrcyBsaXN0IHByb2Nlc3NpbmcgY29kZSBoYXMgYmVlbiBtYWRlIG1vcmUgZWZmaWNpZW50bHkgZm9yCithcHBlbmRpbmcgYSBsYXJnZSBudW1iZXIgb2YgKG9yZGVyZWQpIGJhZGJsb2NrcyB0byB0aGUgYmFkYmxvY2tzIGxpc3QuCisKK1NvbWUgbWlub3IgbWFuIHBhZ2UgdXBkYXRlcy4KKworRnNjayBub3cgYWxsb3dzIGludGVyYWN0aXZlIGUyZnNjaydzIHdoZW4gdXNpbmcgZnNjayAtQXMgKG5vdCBhIGNvbW1vbgorbW9kZSwgYnV0IHNvbWUgcGVvcGxlIGxpa2UgdG8gZG8gdGhpcyBpbiBib290IHNjcmlwdHMgZm9yIHNpbGx5IHJlYXNvbnMpLgorCitQcm9ncmFtbWVyJ3Mgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpbnRlcm5hbCBlMmZzY2sgcHJvYmxlbSBjb2RlIGZvciBQUl8yX1NQTElUX0RPVCB3YXMgZml4ZWQgdG8gbWVldAord2l0aCB0aGUgcHJvYmxlbSBjb2RlIGNvbnZlbnRpb24uCisKK1RoZSBiYWRibG9ja3MgbGlzdCByZWdyZXNzaW9uIHRlc3QgcHJvZ3JhbSBoYXMgYmVlbiB1cGRhdGVkIHRvIHdvcmsKK3dpdGggcHJldmlvdXNseSBtYWRlIEFQSSBuYW1lIGNoYW5nZXMuCisKK1RoZSBleHQyZnNfZnJlZSgpIGNvbW1hbmQgbm93IHVzZXMgdGhlIG5ldyBiYWRibG9ja3MgQVBJIHRvIGF2b2lkCit1c2luZyB0aGUgY29tcGF0aWJpbGl0eSBsYXllci4KKworQWRkZWQgbmV3IHJlZ3Jlc3Npb24gdGVzdCBjYXNlczsgdGhlIHJ1bl9lMmZzY2sgdGVzdCBzY3JpcHQgbm93CitzdXBwb3J0cyB0aGUgYWJpbGl0eSBmb3IgYSB0ZXN0IGNhc2UgdG8gcnVuIGEgcHJlcHJhdG9yeSBjb21tYW5kCitiZWZvcmUgcnVubmluZyBlMmZzY2suCisKK0UyZnNwcm9ncyAxLjE3IChPY3RvYmVyIDI2LCAxOTk5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIG5hc3R5IHR5cG8gaW4gZnNjayB3aGljaCBjYXVzZWQgcGFyYWxsZWxpemVkIGZzY2sncyB0byBnbyBpbnRvIGFuCitpbmZpbml0ZSBsb29wLgorCitGaXhlZCBhIGJ1ZyBpbiBmc2NrIHdoZXJlIGl0IHVzZWQgc3RybmNtcCB0byBjb21wYXJlIGEgYmluYXJ5IFVVSUQsCit0aHVzIHBvdGVudGlhbGx5IGNhdXNpbmcgcHJvYmxlbXMgaWYgYSBiaW5hcnkgVVVJRCBjb250YWluZWQgYSBOVUxMCitjaGFyYWN0ZXIuCisKK0UyZnNjayBub3cgdXNlcyBzdHJpY3RlciBjaGVja3MgZm9yIGRpcmVjdG9yeSBlbnRyaWVzIGluIHBhc3MgMjoKK3plcm8tbGVuZ3RoIGZpbGVuYW1lcyBhcmUgbm90IGFsbG93ZWQ7IG5laXRoZXIgYXJlIDggYnl0ZSBsb25nCitkaXJlY3RvcnkgZW50cmllcy4KKworVGhlIGRlYnVnZnMgImRpcnR5IiBjb21tYW5kIG5vdyBjbGVhcnMgdGhlIGZpbGVzeXN0ZW0gdmFsaWQgYml0LgorKFByZXZpb3VzbHkgdGhpcyBqdXN0IHNldCB0aGUgZGlydHktYXMtaW4tbmVlZHMtd3JpdGluZy1vdXQtdG8tZGlzaworYml0IGluIHRoZSBpbi1jb3JlIHN1cGVyYmxvY2sgaW1hZ2UuICBUaGUgbmV3IGZ1bmN0aW9uYWxpdHkgaXMgbW9yZQord2hhdCB0aGUgdXNlciBleHBlY3RzLCBhbmQgaXMgbW9yZSB1c2VmdWwuKQorCitBZGRlZCBhIGRlYnVnZ2luZyBob29rIHRvIHRlc3QgcGFyYWxsZWwgZnNjazsgaWYgdGhlIGVudmlyb25tZW50Cit2YXJpYWJsZSBGU0NLX0ZPUkNFX0FMTF9QQVJBTExFTCwgdGhlbiBmaWxlc3lzdGVtcyBvbiB0aGUgc2FtZSBkcml2ZQord2lsbCBiZSBjaGVja2VkIGluIHBhcmFsbGVsIHdoZW4gdGhleSBub3JtYWxseSB3b3VsZCBub3QgYmUuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgc29tZSAjaWZkZWYncyBmb3IgY29tcGlsYXRpb24gdW5kZXIgdGhlIEh1cmQgT1MuCisKK0ZpeGVkIG1pbm9yIFcySyBjb21wYXRpYmlsaXR5IHByb2JsZW1zLgorCitGaXhlZCBzb21lIG1pc2NlbGxhbmVvdXMgR0NDIHdhcm5pbmdzLgorCisKK0UyZnNwcm9ncyAxLjE2IChPY3RvYmVyIDIyLCAxOTk5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIGEgcmFjZSBjb25kaXRpb24gYnVnIGluIGZzY2s7IHdoZW4gcHJpbnRpbmcgYSBwcm9ncmVzcyBiYXIsIGlmCitjaGVja2luZyBtdWx0aXBsZSBmaWxlc3lzdGVtcyBpbiBwYXJhbGxlbCwgaXQgd2FzIHBvc3NpYmxlIGZvciBmc2NrIHRvCitzZW5kIGUyZnNjayBhIFNJR1VTUjEgc2lnbmFsIGJlZm9yZSBlMmZzY2sgaGFkIGluc3RhbGxlZCBpdHMgc2lnbmFsCitoYW5kbGVyLCB3aGljaCB3b3VsZCBjYXVzZSBpdCB0byB0ZXJtaW5hdGUgd2l0aCBhIHNpZ25hbCAxMC4KKworRTJmc2NrIG5vdyBwcm9wZXJseSBoYW5kbGVzIGZpbGVzeXN0ZW1zIHRoYXQgaGF2ZSB0aGUKK0lOQ09NUEFUX0ZJTEVUWVBFIGZlYXR1cmUgdHVybmVkIG9uLiAgSXQgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhCitmaWxlc3lzdGVtIGludG8gdXNpbmcgb3Igbm90IHVzaW5nIEZJTEVUWVBFIGZlYXR1cmUuCisKK0UyZnNjayBub3cgcHJvcGVybHkgaGFuZGxlcyBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgdGhlIElNQUdJQyBmZWF0dXJlCit0dXJuZWQgb24gKHRoaXMgaXMgdXNlZCBvbiBMaW51eCBBRlMgc2VydmVycykuCisKK1RoZSBta2UyZnMgcHJvZ3JhbSBub3cgY3JlYXRlcyBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgdGhlIGZpbGV0eXBlIGFuZAorc3BhcnNlX3N1cGVyYmxvY2sgZmVhdHVyZXMgZW5hYmxlZCBieSBkZWZhdWx0LCB1bmxlc3MgaXQgaXMgcnVuIG9uIGEKK3ByZS0yLjIga2VybmVsLiAgVGhlc2UgZmVhdHVyZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYSBwcmUtMi4yIGtlcm5lbCwKK3NvIHRoZXJlIGlzIG5vdyBhIG5ldyBmbGFnIC1PIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHdpdGgKK3doaWNoIGZlYXR1cmVzIHNoZSB3b3VsZCBsaWtlIHRvIGNyZWF0ZSB0aGUgZmlsZXN5c3RlbTsgIm1rZTJmcyAtTworbm9uZSIgd2lsbCBjcmVhdGUgYSBmaWxlc3lzdHNlbSBjb21wYXRpYmxlIHdpdGggMi4wIGtlcm5lbHMuCisKK1RoZSB0dW5lMmZzIHByb2dyYW0gbm93IGhhcyBhIC1PIG9wdGlvbiB3aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gc2V0CithbmQgcmVzZXQgInNhZmUiIGZpbGVzeXN0ZW0gZmVhdHVyZXMuICBDdXJyZW50bHksIHRoZSBvbmx5IG9uZXMgd2hpY2gKK2FsbG93cyB0byBiZSBtb2RpZmllZCBhcmUgdGhlIGZpbGV0eXBlIGFuZCBzcGFyc2Vfc3VwZXJibG9jayBmZWF0dXJlcy4KK05vdGUgc2V0dGluZyBvciBjbGVhcmluZyBlaXRoZXIgZmVhdHVyZSB3aWxsIHJlcXVpcmUgcnVubmluZyBlMmZzY2sgb24KK3RoZSBmaWxlc3lzdGVtIGFmdGVyd2FyZHMuICAobi5iLiBDbGVhcmluZyB0aGUgc3BhcnNlX3N1cGVyYmxvY2sgZmVhdHVyZQorcmVxdWlyZXMgdGhhdCB0aGVyZSBpcyBlbm91Z2ggZnJlZSBzcGFjZSBvbiB0aGUgZmlsZXN5c3RlbSBmb3IgdGhlCitleHRyYSBzdXBlcmJsb2NrcyB3aGljaCB3aWxsIGJlIGNyZWF0ZWQgYnkgZTJmc2NrLikKKworRGVidWdmcyBjYW4gbm93IHNldCBhbmQgcHJpbnQgZmlsZXN5c3RlbSBmZWF0dXJlcyBpbiB0aGUgc3VwZXJibG9jawordXNpbmcgdGhlICJmZWF0dXJlcyIgY29tbWFuZC4gIER1bXBlMmZzIHdpbGwgcHJpbnQgb3V0IHRoZSBjb21wbGV0ZQorc2V0IG9mIGZlYXR1cmVzIHdoZW4gbGlzdGluZyB0aGUgc3VwZXJibG9jay4KKworRHVtcGUyZnMgaGFzIG5ldyBvcHRpb25zIC1mIChmb3JjZSkgYW5kIC1oIChoZWFkZXItb25seSkuCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayB3aGljaCBjb3VsZCBjYXVzZSB0aGUgUFJPR1JBTU1JTkcgRVJST1IvYm9uZWhlYWQKK21lc3NhZ2UgdG8gY29tZSB1cC4gIFRoaXMgY291bGQgaGFwcGVuIHdoZW4gZGVjcmVtZW50aW5nIG9yCitpbmNyZW1lbnRpbmcgYSBsaW5rIGNvdW50IGNvdWxkIHJlc3VsdCBpbiBhbiBvdmVyZmxvdy4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoZXJlIHRoZSBibG9jayBjb3VudCBvbiB0aGUgbG9zdCtmb3VuZAorZGlyZWN0b3J5IHdvdWxkIG5vdCBiZSBwcm9wZXJseSBpbmNyZW1lbnRlZCB3aGVuIHRoZSBkaXJlY3Rvcnkgd2FzCitleHBhbmRlZCB0byB0aGUgcG9pbnQgd2hlcmUgYW4gaW5kaXJlY3QgYmxvY2sgbmVlZGVkIHRvIGJlIGFsbG9jYXRlZC4KKworRTJmc2NrIG5vdyBtYWtlcyBzb21lIGFkZGl0aW9uYWwgc2FuaXR5IGNoZWNrcyBvbiB0aGUgc3VwZXJibG9jayB0bworYXZvaWQgY3Jhc2hpbmcgb3IgZ2l2aW5nIGEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IgaWYgc29tZSBvZiB0aGUKK3ZhbHVlcyBpbiB0aGUgc3VwZXJibG9jayBhcmUgdW5yZXNvbmFibGUgKGJ1dCB0aGUgc3VwZXJibG9jayBvdGhlcndpc2UKK2xvb2tzIHZhbGlkKS4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoZXJlIGEgdmVyeSBiYWRseSBjb3JydXB0ZWQgZmlsZXN5c3RlbSBtaWdodAorcmVxdWlyZSB0d28gcGFzc2VzIHRvIGNvbXBsZXRlbHkgZml4IHRoZSBmaWxlc3lzdGVtLiAgVGhpcyBoYXBwZW5lZCBpZgorYW4gaW5vZGUgY2xhaW1lZCBibG9ja3MgdGhhdCB3YXMgcGFydCBvZiB0aGUgZmlsZXN5c3RlbSBtZXRhZGF0YQorKHR5cGljYWxseSwgd2hlbiBnYXJiYWdlIHdhcyB3cml0dGVuIGludG8gYW4gaW5vZGUgdGFibGUgb3IgaW5kaXJlY3QKK2Jsb2NrLCBzaW5jZSB0aGlzIGtpbmQgb2YgZmlsZXN5c3RlbSBjb3JydXB0aW9uIG5vcm1hbGx5IGRvZXNuJ3QKK2hhcHBlbiBvdGhlcndpc2UpLgorCitPbiB0aGUgQWxwaGEsIGdsaWJjIGRlY2xhcmVzIHN0X2ZsYWdzIGFsdGhvdWdoIGl0IGlzbid0IGFjdHVhbGx5IHVzZWQ7Cit0aGUgY29uZmlndXJlIHNjcmlwdCB3YXMgaW1wcm92ZWQgdG8gZGV0ZWN0IHRoaXMgY2FzZSBzbyB0aGF0CitlMmZzcHJvZ3MgY2FuIGF2b2lkIHVzaW5nIHRoZSBub24tZnVuY3Rpb25hbCBzdGF0IGZpZWxkLgorCitUaGUgbWFudWFsIHBhZ2VzIHdlcmUgdXBkYXRlZCB0byB1c2UgYSBtb3JlIGNvbnNpc3RlbnQgZm9ybWF0dGluZworc3R5bGUgY29uc2lzdGVudCB3aXRoIHN0YW5kYXJkIFVuaXggbWFuIHBhZ2VzLiAgTWtlMmZzJ3MgbWFuIHBhZ2UKK2FkZGVkIGRvY3VtZW50YXRpb24gZm9yIGEgZmV3IHByZXZpb3VzbHkgdW5kb2N1bWVudGVkIG9wdGlvbnMuCisKK0ZpeGVkIG1pbm9yIGRpc3BsYXkgYnVncyBpbiB0dW5lMmZzIGFuZCBta2UyZnMuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW1wcm92ZWQgcG9ydGFiaWxpdHkgb2YgZTJmc3Byb2dzIHRvIG5vbi1Vbml4IHN5c3RlbXMgKGluIHBhcnRpY3VsYXIsIE5UKS4KKworQWRkZWQgZmVhdHVyZXMgdG8gcGFyc2UgYW5kIHByaW50IGZlYXR1cmUgc3RyaW5ncyBpbnRvIHRoZSBlMnAgbGlicmFyeS4gIAorKGUycF9mZWF0dXJlMnN0cmluZywgZTJwX3N0cmluZzJmZWF0dXJlLCBlMnBfZWRpdF9mZWF0dXJlKS4KKworZXh0MmZzX21rZGlyKCkgYW5kIGV4dDJmc19uZXdfZGlyX2Jsb2NrKCkgbm93IGNyZWF0ZXMgZGlyZWN0b3JpZXMKK3dob3NlIGRpcmVjdG9yeSBlbnRyaWVzIGNvbnRhaW4gcHJvcGVyIGZpbGV0eXBlIGluZm9ybWF0aW9uIGlmIHRoZQorZmlsZXN5c3RlbSBzdXBwb3J0cyBpdC4KKworZXh0MmZzX2xpbmsoKSBub3cgdXNlcyB0aGUgbG93IDMgYml0cyBvZiBpdHMgZmxhZ3MgcGFyYW1ldGVyIHRvIHBhc3MKK3RoZSBkaXJlY3RvcnkgZW50cnkgZmlsZXR5cGUgaW5mb3JtYXRpb24uICBUaGlzIGlzIHVzZWQgdG8gc2V0IHRoZQorZGlyZWN0b3J5IGVudHJ5IGZpbGV0eXBlIGluZm9ybWF0aW9uIGlmIHRoZSBmaWxlc3lzdGVtIHN1cHBvcnRzIGl0LgorCitGaXhlZCBhIGJ1ZyBpbiBleHQyZnNfZXhwYW5kX2RpcigpIHdoZXJlIHRoZSBibG9jayBjb3VudCBpbiBhCitkaXJlY3RvcnkncyBpbm9kZSB3b3VsZCBub3QgYmUgcHJvcGVybHkgaW5jcmVtZW50ZWQgd2hlbiB0aGUgZGlyZWN0b3J5Cit3YXMgZXhwYW5kZWQgdG8gdGhlIHBvaW50IHdoZXJlIGFuIGluZGlyZWN0IGJsb2NrIG5lZWRlZCB0byBiZQorYWxsb2NhdGVkLgorCisKK0UyZnNwcm9ncyAxLjE1IChKdWx5IDE4LCAxOTk5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FkZCBjb25maWd1cmF0aW9uIGNoZWNrcyBzbyB0aGF0IGUyZnNwcm9ncyB3aWxsIGNvbXBpbGUgY2xlYW5seSBvbgorTGludXggMi4zIGtlcm5lbHMgdGhhdCBoYXZlIHJlbmFtZWQgaV92ZXJzaW9uIHRvIGlfZ2VuZXJhdGlvbi4KKworRTJmc2NrIG5vdyBwcmludHMgYSBwcm9ncmVzcy9jb21wbGV0aW9uIGJhciAoYW5kIG5vdCBqdXN0IGEgc2ltcGxlCitzcGlubmVyKSBpZiB0aGUgLUMwIG9wdGlvbiBpcyByZXF1ZXN0ZWQgb3IgaWYgaXQgcmVjZWl2ZXMgYSBTSUdVU1IxCitzaWduYWwuICBGc2NrIHdpbGwgYXV0b21hdGljYWxseSBtYW5hZ2UgdGhlIChwb3RlbnRpYWxseSBtdWxpcGxlKQorZTJmc2NrIHByb2Nlc3NlcyB0byBwcmludCBjb21wbGV0aW9uIGJhcnMgaWYgaXQgaXMgZ2l2ZW4gYSAtQyBvcHRpb24sCit3aXRoIHRoZSByaWdodCB0aGluZyBoYXBwZW5pbmcgaWYgbXVsdGlwbGUgZmlsZXN5c3RlbXMgYXJlIGJlaW5nCitjaGVja2VkIGluIHBhcmFsbGVsLgorCitNa2UyZnMgbm93IGhhcyBiZXR0ZXIgYXV0b21hdGljIGh1ZXJpc3RpY3MgdG8gZGV0ZXJtaW5lIHRoZSBmaWxlc3lzdGVtCitwYXJhbWV0ZXJzIHRvIGJlIHVzZWQgZm9yIGEgcGFydGljdWxhciBmaWxlc3lzdGVtLiAgQWRkZWQgYSBuZXcgb3B0aW9uCistVCB3aGljaCBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBob3cgdGhlIGZpbGVzeXN0ZW0gaXMgdG8gYmUgdXNlZCwKK3doaWNoIGhlbHBzIG1rZTJmcyBkbyBhIGJldHRlciBqb2Igc2VsZWN0aW5nIHRoZSBmaWxlc3lzdGVtIHBhcmFtZXRlcnMuCisKK01rZTJmcyBub3cgY3JlYXRlcyByZXZpc2lvbiAxIGZpbGVzeXN0ZW1zIGJ5IGRlZmF1bHQsIGFuZCB3aXRoIHRoZQorc3BhcnNlIHN1cGVyYmxvY2sgZmVhdHVyZSBlbmFibGVkLiAgVGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZlYXR1cmUgaXMKK25vdCB1bmRlcnN0b29kIGJ5IExpbnV4IDIuMCBrZXJuZWxzLCBzbyB0aGV5IHdpbGwgb25seSBhbGxvdyByZWFkLW9ubHkKK21vdW50cyBvZiBmaWxlc3lzdGVtcyB3aXRoIHRoaXMgc3BhcnNlIHN1cGVyYmxvY2tzLgorCitGaXggYnVnIHdoZXJlIGlmIC9kZXYvbnVsbCBjb3VsZG4ndCBiZSBvcGVuZWQgKHNob3VsZCBuZXZlciBoYXBwZW4pLAorZTJmc2NrIHdvdWxkIGhhbmcgaW4gYSB0aWdodCBsb29wLgorCitNYWtlIGUyZnNjayBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgL2xvc3QrZm91bmQgaXNuJ3QgYSBkaXJlY3RvcnkuCisKK0UyZnNjayBub3cgdXNlcyBtYWxsaW5mbyBpZiBpdCBleGlzdHMgdG8gZ2V0IGFjY3VyYXRlIHN0YXRpc3RpY3MgYWJvdXQKK2l0cyBtZW1vcnkgdXNhZ2UuCisKK0ZpeCBidWcgaW4gZTJmc2NrIHdoZXJlIGl0IHdvdWxkbid0IGNoZWNrIHRvIHNlZSBpZiBhIGRpc2Nvbm5lY3RlZAoraW5vZGUgaGFkIGFueSBwcm9ibGVtcyBiZWZvcmUgY29ubmVjdGluZyBpdCB0byAvbG9zdCtmb3VuZC4KKworQWRkIGNoZWNrIHRvIGUyZnNjayBzbyBpdCBtYWtlcyBzdXJlIHRoYXQgdG90YWwgbnVtYmVyIG9mIGlub2RlcyBpbgordGhlIGZpbGVzeXN0ZW0gaXMgYSBzYW5lIG51bWJlci4KKworRml4IGZlbmNlcG9zdCBlcnJvciB3aGVuIGNsZWFyaW5nIGFuIHRoZSBlbmQgb2YgdGhlIGJsb2NrIGJpdG1hcCB3aGljaAorY2F1c2VkIHRoZSBsYXN0IGJsb2NrIGluIHRoZSBiaXRtYXAgbm90IHRvIGdldCBjbGVhcmVkLgorCitDbGVhbmVkIHVwIGEgbnVtYmVyIG9mIG1lc3NhZ2VzIGluIGUyZnNjazoKKwkqIFRoZSBtZXNzYWdlICJHcm91cCdzICMncyBjb3B5IG9mIHRoZSBncm91cCBkZXNjcmlwdG9yLi4uIgorCQl3YXMgZml4ZWQgc28gdGhhdCB0aGUgY29ycmVjdCBudW1iZXIgd291bGQgYmUgZGlzcGxheWVkLgorCSogQWRkZWQgbWlzc2luZyBzcGFjZSBpbiB0aGUgImRpc2sgd3JpdGUtcHJvdGVjdGVkIiBlcnJvciBtZXNzc2FnZQorCSogQ2xlYW5lZCB1cCB0aGUgZXJyb3IgbWVzc2FnZSBwcmludGVkIHdoZW4gYSBub24taW50ZXJhY3RpdmUKKwkJZTJmc2NrIG5lZWRzIHRvIGFib3J0IGEgY2hlY2sgYmVjYXVzZSB0aGUgZmlsZXN5c3RlbQorCQlhcHBlYXJzIHRvIGJlIG1vdW50ZWQuCisKK0FkZGVkIGEgbmV3IGNvbW1hbmQtbGluZSB1dGlsaXR5LCB1dWlkZ2VuLCB3aGljaCB3aWxsIGNyZWF0ZSBhbmQgcHJpbnQKK2EgVVVJRC4KKworTWFrZSBkZWJ1Z2ZzJ3MgaWNoZWNrIGNvbW1hbmQgbW9yZSByb2J1c3QgYnkgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIGFuCitpbm9kZSBoYXMgdmFsaWQgYmxvY2tzIGJlZm9yZSBpbnRlcmFydGluZyBvdmVyIHRoZSBpbm9kZSdzIGJsb2Nrcy4KKworVVVJRCBnZW5lcmF0aW9uIG5vdyB1c2VzIGEgcmFuZG9tLWJhc2VkIHNjaGVtZSB3aGVuZXZlciBwb3NzaWJsZSB0bworcHJldmVudCBwb3RlbnRpYWwgcHJpdmFjeSBwcm9ibGVtcy4KKworTWFuIHBhZ2VzIGZvciBhbGwgb2YgdGhlIFVVSUQgZnVuY3Rpb25zIGluIHRoZSBsaXJiYXJ5IHdlcmUgYWRkZWQuCisKK0ZpeGVkIGJ1ZyBpbiBmc2NrIHNvIGl0IHdvbid0IGNvcmVkdW1wIGlmIGEgZmlsZXN5c3RlbSBub3QgaW4KKy9ldGMvZnN0YWIgaXMgZ2l2ZW4gdG8gaXQuCisKK0ZzY2sgbm93IHVuZGVyc3RhbmRzIHRoZSBVVUlEPXh4eHggYW5kIExBQkVMPXl5eXkgZm9ybXMgaW4gL2V0Yy9mc3RhYgordGhhdCBtb3N0IG9mIHRoZSBvdGhlciBtb3VudCB1dGlsaXRpZXMgdW5kZXJzdGFuZHMuCisKK01rZTJmcyB3aWxsIG1ha2UgYSBmaWxlc3lzdGVtIGV2ZW4gaWYgaXQgYXBwZWFycyBtb3VudGVkIGlmIHRoZSBmb3JjZQorb3B0aW9uIGlzIGdpdmVuLgorCitEdW1wZTJmcyBoYXMgbmV3IGNvbW1hbmQtbGluZSBvcHRpb25zIHdoaWNoIGFsbG93IGEgZmlsZXN5c3RlbSBleHBlcnQKK3RvIHNwZWNpZnkgdGhlIHN1cGVyYmxvY2sgYW5kIGJsb2Nrc2l6ZSB3aGVuIG9wZW5pbmcgYSBmaWxlc3lzdGVtLgorVGhpcyBpcyBtYWlubHkgdXNlZnVsIHdoZW4gZXhhbWluaW5nIHRoZSByZW1haW5zIG9mIGEgdG9hc3RlZAorZmlsZXN5c3RlbS4KKworVGhlIGJhZGJsb2NrcyBwcm9ncmFtIGhhcyBiZWVuIHVwZGF0ZWQgdG8gZGlzcGxheSBjb3JyZWN0bHkgb24gZGlza3MKK3dpdGggbGFyZ2UgYmxvY2sgbnVtYmVycy4KKworVGhlIGJhZGJsb2NrcyBwcm9ncmFtIG5vIGxvbmdlciBnaXZlcyBzcHVyaW91cyBlcnJvcnMgd2hlbiBlcnJvcnMKK29jY3VyIG9uIG5vbi1ibG9jayBib3VuZGFyaWVzLCB3aGljaCBpcyBjb21tb24gaWYgdGhlIGJsb2Nrc2l6ZSBpcworbGFyZ2VyIHRoYW4gMWsuCisKK01rZTJmcyB3aWxsIHN5bmMgdGhlIGRpc2sgZGV2aWNlIGV2ZXJ5IE1LRTJGU19TWU5DIGJsb2NrIGdyb3VwcyBpZiB0aGUKK01LRTJGU19TWU5DIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldC4gIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBWTQorYnVnIGluIHRoZSAyLjAga2VybmVsLiAgSSd2ZSBoZWFyZCBhIHJlcG9ydCB0aGF0IGEgUkFJRCB1c2VyIHdhcyBhYmxlCit0byB0cmlnZ2VyIGl0IGV2ZW4gdXNpbmcgYSAyLjIga2VybmVsLCBidXQgaG9wZWZ1bGx5IGl0IHdpbGwgbm90IGJlCituZWVkZWQgZm9yIG1vc3QgTGludXggMi4yIHVzZXJzLgorCitGaXhlZCBtaXNjZWxsYW5lb3VzIGRvY3VtZW50YXRpb24gYW5kIG1hbiBwYWdlcy4KKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDbGVhbmVkIHVwIGZ1bmN0aW9ucyBzdWNoIGFzIHBhc3MxX2dldF9ibG9ja3MsIHBhc3MxX3JlYWRfaW5vZGUgd2hpY2gKK2luIGUyZnNjaydzIHBhc3MxLmMgcmVhbGx5IHNob3VsZCBoYXZlIGJlZW4gc3RhdGljLgorCitUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSB1dWlkX2NvbXBhcmUoKSBmdW5jdGlvbiB3YXMgY2hhbmdlZCB0byBtYWtlIGl0CittYXRjaCB3aXRoIHRoZSBjb252ZXRpb25zIHVzZWQgYnkgc3RyY21wLCBtZW1jbXAsIGFuZCBQYXVsIExlYWNoJ3MKK1VVSUQgc2FtcGxlIGRvY3VtZW50LgorCitUaGUgIm1ha2UgZGVwZW5kIiBwcm9jZXNzIGhhcyBub3cgYmVlbiBtYWRlIG1vcmUgYXV0b21hdGVkOyBpdCBub3cKK2F1dG9tYXRpY2FsbHkgd29yZC13cmFwcyB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgb25seSByZXBsYWNlcyBzb3VyY2UKK01ha2VmaWxlLmluIGlmIHRoZXJlIGhhcyBiZWVuIGEgY2hhbmdlIGluIHRoZSBkZXBlbmRlbmNpZXMuICBBbHNvLCBhCit0b3AtbGV2ZWwgIm1ha2UgZGVwZW5kIiBub3cgcmVjdXJzZXMgdGhyb3VnaCBhbGwgdGhlIHN1YmRpcmVjdG9yaWVzCithdXRvbWF0aWNhbGx5LgorCitUaGUgTWFrZWZpbGUgaW4gLi4uL3V0aWwgaGFzIGJlZW4gY2hhbmdlZCBzbyB0aGF0IHN1YnN0IGlzIGJ1aWx0IHVzaW5nCit0aGUgbmF0aXZlIEMgY29tcGlsZXIgZHVyaW5nIGEgY3Jvc3MtY29tcGlsYXRpb24sIHNpbmNlIHRoZSBzdWJzdAorcHJvZ3JhbSBpcyBvbmx5IHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiAgQWxzbyBhZGQgYW4gZXhwbGljaXQKK3J1bGUgdG8gYnVpbGQgdXRpbC9zdWJzdCBieSBjZCdpbmcgdG8gdGhlIGNvcnJlY3QgZGlyZWN0b3J5IGFuZAorcnVubmluZyBNYWtlZmlsZS4KKworVGhlIG1hbiBkaXJlY3RvcmllcyBhcmUgZGVmaW5lZCBpbiB0ZXJtcyBtYW5kaXIsIHNvIHRoYXQgdGhlIGNvbmZpZ3VyZQorc2NyaXB0IGNhbiBvdmVycmlkZSB0aGUgbG9jYXRpb24gb2YgdGhlIG1hbnVhbCBwYWdlcy4KKworVGhlIGNvbmZpZyBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byByZWNvZ25pemUgbmV3IG1hY2hpbmUgdHlwZXMgZm9yCitib3RoIHRoZSBpMzg2IGFuZCBhbHBoYSBmYW1pbGllcy4KKworRnNjayBoYXMgYmVlbiBtb2RpZmllZCBzbyB0aGF0IGl0IHdpbGwgYWNjdXJhdGVseSBjcmVhdGUgYW4KK2ZzY2tfaW5zdGFuY2UgZXZlbiB3aGVuIHRoZSBub2V4ZWN1dGUgZmxhZyBpcyBzZXQuICBUaGlzIGFsbG93cyBmb3IKK2FjY3VyYXRlIGRlYnVnZ2luZyBvZiB0aGUgZnNjayBwYXNzIHN0cnVjdHVyZS4gIEFsc28sIHdoZW4gdGhlIHZlcmJvc2UKK2ZsYWcgaXMgZ2l2ZW4gdHdpY2UsIGZzY2sgd2lsbCBwcmludCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hlbgorZnNjayBpcyB3YWl0aW5nIGZvciBqb2JzIHRvIGZpbmlzaC4KKworCitFMmZzcHJvZ3MgMS4xNCAoSmFudWFyeSA5LCAxOTk5KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IHRoZSBmc3RhYiBwYXJzaW5nIGNvZGUgc28gdGhhdCBpdCBjYW4gaGFuZGxlIGJsYW5rIGxpbmVzIGFuZAorY29tbWVudCBjaGFyYWN0ZXJzLiAgQWxzbywgbWlzc2luZyBwYXNzIG51bWJlcnMgbmVlZCB0byBiZSB0cmVhdGVkIGFzCit6ZXJvLgorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hlcmUgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzICh3aGVuIGUyZnNjaworbmVlZHMgdG8gcmVzdGFydCBwcm9jZXNzaW5nIGFmdGVyIGZpeGluZyBhbiBlZ3JlZ2lvdXMgaW5jb25zaXN0ZW5jeSkKK2l0IHdvdWxkIHRyeSB0byBhY2Nlc3MgYWxyZWFkeSBmcmVlZCBtZW1vcnkuCisKK0UyZnNjayBub3cgcHJpbnRzIG5vbi1wcmludGFibGUgY2hhcmFjdGVycyBpbiBkaXJlY3RvcnkgZW50cmllcyBhbmQKK3BhdGhuYW1lcyB1c2luZyAnXicgYW5kICdNLScgbm90YXRpb24uCisKK0ZpeGVkIGNoYXR0ciBzbyB0aGF0IGl0IHdpbGwgaWdub3JlIHN5bWJvbGljIGxpbmtzIHdoZW4gZG9pbmcKK3JlY3Vyc2l2ZSBkZXNjZW50IHRyYXZlcnNhbHMuICBGb3IgYm90aCBjaGF0dHIgYW5kIGxzYXR0ciwgbm8gbG9uZ2VyCitwcmludCB0aGUgdmVyc2lvbiBzdHJpbmcgdW5sZXNzIHRoZSAtViBvcHRpb24gaXMgZ2l2ZW4uCisKK0FsbG93IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciB0byBkaXJlY3RseSBzcGVjaWZ5IHRoZSBudW1iZXIgb2YKK2lub2RlcyBkZXNpcmVkIGluIHRoZSBmaWxlc3lzdGVtLCBmb3Igc29tZSBzcGVjaWFsIGNhc2VzIHdoZXJlIHRoaXMgaXMKK25lY2Vzc2FyeS4KKworRml4IHBvcnRhYmlsaXR5IHByb2JsZW1zIHNvIHRoYXQgZTJmc3Byb2dzIGNhbiBiZSBjb21waWxlZCB1bmRlciBMaW51eAorMS4yIHN5c3RlbXMgYW5kIFNvbGFyaXMgc3lzdGVtcy4KKworVXBkYXRlIHRoZSBjb25maWcuZ3Vlc3MgZmlsZSB3aXRoIGEgbW9yZSByZWNlbnQgdmVyc2lvbiB0aGF0IHdpbGwKK2lkZW50aWZ5IG5ld2VyIExpbnV4IHBsYXRmb3Jtcy4KKworUHJvZ3JhbW1lcidzIG5vdGVzCistLS0tLS0tLS0tLS0tLS0tLS0KKworRXh0MmZzX3JlYWRfaW5vZGUgYW5kIGV4dDJmc193cml0ZV9pbm9kZSB3aWxsIG5vdyByZXR1cm4gYW4gZXJyb3IgaWYKK2FuIGlub2RlIG51bWJlciBvZiB6ZXJvIGlzIHBhc3NlZCB0byB0aGVtLgorCitFMmZzcHJvZ3MgMS4xMyAoRGVjZW1iZXIgMTUsIDE5OTgpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIGEgYnVnIGluIGRlYnVnZnMgd2hlcmUgYW4gZXJyb3IgbWVzc2FnZXMgd2VyZW4ndCBnZXR0aW5nIHByaW50ZWQKK3doZW4gdGhlIGV4dDIgbGlicmFyeSByb3V0aW5lcyB0byByZWFkIGlub2RlcyByZXR1cm5lZCBlcnJvcnMgaW4gdGhlCitzdGF0LCBjbXJpIGFuZCBybSBjb21tYW5kcy4KKworRml4ZWQgYSBidWcgaW4gbWtlMmZzIHNvIHRoYXQgaWYgYSByaWRpY3Vsb3VzIGlub2RlIHJhdGlvIHBhcmFtZXRlciBpcworcHJvdmlkZWQsIGl0IHdvbid0IGNyZWF0ZSBhbiBpbm9kZSB0YWJsZSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0KK251bWJlciBvZiBpbm9kZXMgcmVxdWlyZWQgZm9yIGEgcHJvcGVyIGV4dDIgZmlsZXN5c3RlbS4KKworRnNjayBub3cgcGFyc2VzIHRoZSAvZXRjL2ZzdGFiIGZpbGUgZGlyZWN0bHkgKGluc3RlYWQgb2YgdXNpbmcKK2dldG1udGVudCgpKSwgc28gdGhhdCBpdCBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiBhIG1pc3NpbmcgcGFzcyBudW1iZXIKK2ZpZWxkIGFuZCBwYXNzIG51bWJlciBmaWVsZCBvZiB6ZXJvLiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgZm9yCitkaXNrbGVzcyB3b3Jrc3RhdGlvbnMgd2hlcmUgYWxsIG9mIHRoZSBmaWxlc3lzdGVtcyBpbiAvZXRjL2ZzdGFiIGhhdmUKK2FuIGV4cGxpY2l0IHBhc3MgbnVtYmVyIG9mIHplcm8sIGFuZCBmc2NrIGNvdWxkIG5vdCBkaXN0aW5ndWlzaCB0aGlzCitmcm9tIGEgL2V0Yy9mc3RhYiBmaWxlIHdpdGggbWlzc2luZyBwYXNzIG51bWJlcnMuCisKK0UyZnNjayB3aWxsIGNyZWF0ZSBhIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSBpZiB0aGVyZSBpc24ndCBvbmUgaW4gdGhlCitmaWxlc3lzdGVtLCBzaW5jZSBpdCdzIHNhZmVyIHRvIGNyZWF0ZSB0aGUgbG9zdCtmb3VuZCBkaXJlY3RvcnkgYmVmb3JlCitpdCdzIG5lZWRlZC4KKworRml4ZWQgZTJmc2NrIHNvIHRoYXQgaXQgd291bGQgZGV0ZWN0IGJvZ3VzIGltbXV0YWJsZSBpbm9kZXMgd2hpY2gKK2hhcHBlbiB0byBiZSBzb2NrZXRzIGFuZCBGSUZPIGZpbGVzLCBhbmQgb2ZmZXIgdG8gY2xlYXIgdGhlbS4KKworSWYgYSBmaWxlc3lzdGVtIGhhcyBtdWx0aXBsZSByZWFzb25zIHdoeSBpdCBuZWVkcyB0byBiZSBjaGVja2VkLCBhbmQKK29uZSBvZiB0aGUgcmVhc29ucyBpcyB0aGF0IGl0IGlzIHVuY2xlYW5seSBtb3VudGVkLCBlMmZzY2sgd2lsbCBwcmludAordGhhdCBhcyB0aGUgcmVhc29uIHdoeSB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBjaGVja2VkLgorCitDbGVhbmVkIHVwIHRoZSBvdXRwdXQgcm91dGluZXMgb2YgbWtlMmZzIHNvIHRoYXQgaXQgZG9lc24ndCBvdmVyZmxvdworYW4gODAgY29sdW1uIGRpc3BsYXkgd2hlbiBmb3JtYXRpbmcgcmVhbGx5IGJpZyBmaWxlc3lzdGVtcy4KKworQWRkZWQgYSBzYW5pdHkgY2hlY2sgdG8gZTJmc2NrIHRvIG1ha2Ugc3VyZSB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgMCwKKzEsIDIgYXJlIG9wZW4gYmVmb3JlIG9wZW5pbmcgdGhlIGhhcmQgZGlzay4gIFRoaXMgYXZvaWRzIGEgcHJvYmxlbQord2hlcmUgYSBicm9rZW4gcHJvZ3JhbSBtaWdodCBleGVjIGUyZnNjayB3aXRoIHRob3NlIGZpbGUgZGVzY3JpcHRvcnMKK2Nsb3NlZCwgd2hpY2ggd291bGQgY2F1c2UgZGlzYXN0cm91cyByZXN1bHRzIGlmIHRoZSBrZXJuZWwgcmV0dXJucyBhCitmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBibG9jayBkZXZpY2Ugd2hpY2ggaXMgYWxzbyB1c2VkIGJ5IEZJTEUgKgorc3Rkb3V0LgorCitGaXhlZCB1cCB0aGUgZTJmc2NrIHByb2dyZXNzIHJlcG9ydGluZyBmdW5jdGlvbnMgc28gdGhhdCB0aGUgdmFsdWVzCityZWxpYWJseSByZWFjaCAxMDAlIGF0IHRoZSBjb21wbGV0aW9uIG9mIGFsbCBvZiB0aGUgZTJmc2NrIHBhc3Nlcy4KKworRml4ZWQgbWlub3IgZG9jdW1lbnRhdGlvbiBidWdzIGluIG1hbiBwYWdlcyBhbmQgdXNhZ2UgbWVzc2FnZXMuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgYSBudW1iZXIgb2YgbGludCB3YXJuaW5ncyBpbiB0aGUgZXh0MmZzIGxpYnJhcnkgYW5kIHBvdGVudGlhbAorcG9ydGFiaWxpdHkgcHJvYmxlbXMgZnJvbSBvdGhlciBPUydzIGhlYWRlciBmaWxlcyB0aGF0IG1pZ2h0IGRlZmluZQorQ1BQIG1hY3JvcyBmb3IgbmFtZXMgbGlrZSAibWF4IiBhbmQgIm1pbiIuCisKK2V4dDJmc19iYWRibG9ja3NfbGlzdF9hZGQoKSBoYXMgYmVlbiBtYWRlIG1vcmUgZWZmaWNpZW50IHdoZW4gaXQgbmVlZHMKK3RvIGdyb3cgdGhlIGJhZCBibG9ja3MgbGlzdC4KKworRml4ZWQgYSBidWcgaW4gZTJmc2NrIHdoaWNoIGNhdXNlZCBpdCB0byBkZXJlZmVyZW5jZSBhIGZyZWVkIHBvaW50ZXIKK2p1c3QgYmVmb3JlIGV4aXRpbmcuCisKK0ZpeGVkIHRoZSBzdWJzdGl0aW9uIHByb2Nlc3MgZm9yIGdlbmVyYXRpbmcgdGhlIG1rX2NtZHMgYW5kIGNvbXBpbGVfZXQKK3NjcmlwdHMgc28gdGhhdCB0aGV5IHdpbGwgd29yayBvdXRzaWRlIG9mIHRoZSBidWlsZCB0cmVlLgorCitBZGQgc2FuaXR5IGNoZWNrIHRvIGUyZnNjayBzbyB0aGF0IGlmIGFuIGludGVybmFsIHJvdXRpbmUKKyhleHQyZnNfZ2V0X2Rpcl9pbmZvKSByZXR1cm5zIE5VTEwsIGF2b2lkIGRlcmVmZXJlbmNpbmcgdGhlIHBvaW50ZXIKK2FuZCBjYXVzaW5nIGEgY29yZSBkdW1wLiAgVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQuLi4KKworRTJmc3Byb2dzIDEuMTIgKEp1bHkgOSwgMTk5OCkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRTJmc3Byb2dzIG5vdyB3b3JrcyB3aXRoIGdsaWJjIChhdCBsZWFzdCB3aXRoIHRoZSB2ZXJzaW9uIHNoaXBwZWQgd3RpaAorUmVkSGF0IDUuMCkuICBUaGUgZXh0MmZzX2xsc2VlaygpIGZ1bmN0aW9uIHNob3VsZCBub3cgd29yayBldmVuIHdpdGgKK2kzODYgRUxGIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGlmIGxsc2VlaygpIGlzIG5vdCBwcmVzZW50LiAgV2UgYWxzbworZXhwbGljaXRseSBkbyBhIGNvbmZpZ3VyZSB0ZXN0IHRvIHNlZSBpZiAoYSkgbGxzZWVrIGlzIGluIGxpYmMsIGFuZAorKGIpIGlmIGxsc2VlayBpcyBkZWNsYXJlZCBpbiB0aGUgc3lzdGVtIGhlYWRlciBmaWxlcy4gIChTZWUgc3RhbmRhcmQKK2NvbXBsYWludHMgYWJvdXQgbGliYyBkZXZlbG9wZXJzIGRvbid0IHVuZGVyc3RhbmQgdGhlIGNvbmNlcHQgb2YKK2NvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyB2ZXJzaW9ucyBvZiBsaWJjLikKKworVGhlIGV4dDJmcyBsaWJyYXJ5IG5vdyB3cml0ZXMgb3V0IHRoZSBibG9jayBncm91cCBudW1iZXIgaW4gZWFjaCBvZgordGhlIHN1cGVyYmxvY2sgY29waWVzLiAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXV0b21hdGljYWxseQorZGV0ZXJtaW5lIHRoZSBzdGFydGluZyBibG9jayBncm91cCBvZiB0aGUgZmlsZXN5c3RlbSB3aGVuIHRoZSBibG9jaworZ3JvdXAgaW5mb3JtYXRpb24gaXMgdHJhc2hlZC4KKworQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9GSUxFVFlQRSBmZWF0dXJlLAord2hpY2ggbWVhbnMgdGhhdCBlMmZzcHJvZ3Mgd2lsbCBpZ25vcmUgdGhlIGhpZ2ggOCBiaXRzIG9mIHRoZQorZGlyZWN0b3J5IGVudHJ5J3MgbmFtZV9sZW4gZmllbGQsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgZm9yIG90aGVyCitwdXJwb3Nlcy4KKworQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfTEFSR0VfRklMRSBmZWF0dXJlLgorRTJmc3Byb2dzIHdpbGwgbm93IHN1cHBvcnQgZmlsZXN5c3RlbXMgd2l0aCA2NC1iaXQgc2l6ZWQgZmlsZXMuCisKK0FkZGVkIHN1cHBvcnQgZm9yIHRoZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9QUkVBTExPQyBmZWF0dXJlLgorCitBZGRlZCBuZXcgcHJvZ3JhbSAiZTJsYWJlbCIsIGNvbnRyaWJ1dGVkIGJ5IEFuZHJpZXMgQnJvdXdlci4gIEUybGFiZWwKK3Byb3ZpZGVzIGFuIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byBtb2RpZnkgdGhlIGZpbGVzeXN0ZW0gbGFiZWwuCisKK0ZpeGVkIGJ1ZyBzbyB0aGF0IGxzYXR0ciAtdiB3b3JrcyBpbnN0ZWFkIG9mIHByb2R1Y2luZyBhIGNvcmUgZHVtcC4KKworRml4ZWQgYSBtaW5vciBidWcgaW4gbWtlMmZzIHNvIHRoYXQgYWxsIGdyb3VwcyB3aXRoIGJhZCBzdXBlcmJsb2NrCitiYWNrdXAgYmxvY2tzIGFyZSBwcmludGVkIChub3QganVzdCB0aGUgZmlyc3Qgb25lKS4KKworTWtlMmZzIHdpbGwgY2hlY2sgdGhlIHNpemUgb2YgdGhlIGRldmljZSwgYW5kIGlmIHRoZSB1c2VyIHNwZWNpZmllcyBhCitmaWxlc3lzdGVtIHNpemUgbGFyZ2VyIHRoYW4gdGhlIGFwcGFyZW50IHNpemUgb2YgdGhlIGRldmljZSBpdCB3aWxsCitwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBhbmQgYXNrIGlmIHRoZSB1c2VyIHdhbnRzIHRvIHByb2NlZWQuCisKK0UyZnNjayBoYXMgYSBuZXcgb3B0aW9uIC1DLCB3aGljaCBzZW5kcyBjb21wbGV0aW9uIGluZm9ybWF0aW9uIHRvIHRoZQorc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4gIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGlzIGlzIGludGVuZGVkIGZvcgorcHJvZ3JhbXMgdG8gdXNlLCBhbHRob3VnaCAtQyAwIHdpbGwgcHJpbnQgYSBzcGlubmluZyBjaGFyYWN0ZXIgdG8gdGhlCitzdGRvdXQgZGV2aWNlLCB3aGljaCBtYXkgYmUgdXNlZnVsIGZvciB1c2VycyB3aG8gd2FudCB0byBzZWUgc29tZXRoaW5nCitoYXBwZW5pbmcgd2hpbGUgZTJmc2NrIGdvZXMgYWJvdXQgaXRzIGJ1c2luZXNzLgorCitGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY291bGQgY2F1c2UgYSBjb3JlIGR1bXAgd2hlbiBpdCBuZWVkcyB0bworZXhwYW5kIHRoZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnksIGFuZCBzb21ldGltZXMgdGhlIGJpdG1hcHMgaGF2ZW4ndAorYmVlbiBtZXJnZWQgaW4uICBBbHNvIGZpeGVkIGEgcmVsYXRlZCBidWcgd2hlcmUgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jaword2FzIHVzZWQgdG8gd3JpdGUgb3V0IGEgbm9uLWRpcmVjdG9yeSBibG9jay4gIChXaGljaCB3b3VsZCBiZSBiYWQgb24gYQorbm9uLUludGVsIHBsYXRmb3JtIHdpdGggYnl0ZSBzd2FwcGluZyBnb2luZyBvbi4pCisKK0ZpeGVkIGJ1ZyBpbiBlMmZzY2sgd2hlcmUgaXQgd291bGQgcHJpbnQgYSAicHJvZ3JhbW1pbmcgZXJyb3IiIG1lc3NhZ2UKK2luc3RlYWQgb2YgY29ycmVjdGx5IGlkZW50aWZ5aW5nIHdoZXJlIGEgYmFkIGJsb2NrIHdhcyBpbiB1c2VkIHdoZW4KK3RoZSBiYWQgYmxvY2sgd2FzIGluIGEgbm9uLXByaW1hcnkgc3VwZXJibG9jayBvciBibG9jayBncm91cAorZGVzY3JpcHRvci4gIEFsc28gZml4ZWQgYSByZWxhdGVkIGJ1ZyB3aGVuIHNwYXJzZSBzdXBlcmJsb2NrcyBhcmUgaW4KK3VzZSBhbmQgdGhlcmUgaXMgYSBiYWQgYmxvY2sgd2hlcmUgYSBzdXBlcmJsb2NrIG9yIGJsb2NrIGdyb3VwCitkZXNjcmlwdG9yIHdvdWxkIGhhdmUgYmVlbiBpbiBhIGdyb3VwIHRoYXQgZG9lc24ndCBpbmNsdWRlIGEKK3N1cGVyYmxvY2suCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayAocmVhbGx5IGluIGxpYmV4dDJmcydzIGRibGlzdCBmdW5jdGlvbikgd2hlcmUgaWYKK3RoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIHRhYmxlIGlzIGNvcnJ1cHQsIGl0IHdhcyBwb3NzaWJsZSB0byB0cnkgdG8KK2FsbG9jYXRlIGEgaHVnZSBhcnJheSwgZmFpbCwgYW5kIHRoZW4gYWJvcnQgZTJmc2NrLgorZXh0MmZzX2dldF9udW1fZGlycygpIG5vdyBzYW5pdHkgY2hlY2tzIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yLAorYW5kIHN1YnNpdHV0ZXMgcmVhc29uYWJsZSB2YWx1ZXMgaWYgdGhlIGRlc2NyaXB0b3JzIGFyZSBvYnZpb3VzbHkgYm9ndXMuCisKK0lmIGUyZnNjayBmaW5kcyBhIGRldmljZSBmaWxlIHdoaWNoIGhhcyB0aGUgaW1tdXRhYmxlIGZsYWcgc2V0IGFuZCB0aGUKK2lfYmxvY2tzIGJleW9uZCB0aGUgbm9ybWFsIGRldmljZSBudW1iZXIgYXJlIG5vbi16ZXJvLCBlMmZzY2sgd2lsbAorb2ZmZXIgdG8gcmVtb3ZlIGl0LCBzaW5jZSBpdCdzIHByb2JhYmx5IGNhdXNlZCBieSBnYXJiYWdlIGluIHRoZSBpbm9kZQordGFibGUuCisKK1doZW4gb3BlbmluZyBhIGZpbGVzeXN0ZW0sIGUyZnNjayBzcGVjaWFsbHkgY2hlY2tzIGZvciB0aGUgRVJPRlMgZXJyb3IKK2NvZGUsIGFuZCBwcmludHMgYSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIHRvIHRoZSB1c2VyIHdoaWNoIGlzIG1vcmUKK3VzZXIgZnJpZW5kbHkuCisKK0lmIHRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIHRvbyBoaWdoLCBjaGFuZ2UgdGhlIGUyZnNjayB0byBwcmludAordGhhdCB0aGlzIGlzIGVpdGhlciBiZWNhdXNlIGUyZnNjayBpcyBvdXQgb2YgZGF0ZSwgb3IgYmVjYXVzZSB0aGUKK3N1cGVyYmxvY2sgaXMgY29ycnVwdC4gIAorCitFMmZzY2sgbm93IGNoZWNrcyBmb3IgZGlyZWN0b3JpZXMgdGhhdCBoYXZlIGR1cGxpY2F0ZSAnLicgYW5kICcuLicKK2VudHJpZXMsIGFuZCBmaXhlcyB0aGlzIGNvcnJ1cHRpb24uCisKK0UyZnNjayBubyBsb25nZXIgZm9yY2VzIGEgc3luYyBvZiB0aGUgZmlsZXN5c3RlbSAod2l0aCBhdHRlbmRhbnQgc2xlZXAKK2NhbGxzKSBhdCBhbGwgdGltZXMuICBUaGUgZXh0MmZzX2ZsdXNoKCkgZnVuY3Rpb24gbm93IHBlcmZvcm1zIGEgc3luYworb25seSBpZiBpdCBuZWVkZWQgdG8gd3JpdGUgZGF0YSBibG9ja3MgdG8gZGlzay4KKworRml4ZWQgYSBtaW5vciBidWcgaW4gZTJmc2NrJ3MgcGFzczFiJ3MgZmlsZSBjbG9uaW5nIGZ1bmN0aW9uLCB3aGVyZQorY2VydGFpbiBlcnJvcnMgd291bGQgbm90IGJlIHByb3Blcmx5IHJlcG9ydGVkLgorCitVcGRhdGVkIGFuZCBleHBhbmRlZCBhIGZldyBwb2ludHMgaW4gdGhlIG1hbiBwYWdlcyB3aGljaCB1c2VycworY29tcGxhaW5lZCB3aGVyZW4ndCBleHBsaWNpdCBlbm91Z2guCisKK0FkZGVkIHNwZWNpYWwgY2FzZSBieXRlLXN3YXBwaW5nIGNvZGUgaWYgY29tcGlsaW5nIG9uIHRoZSBQb3dlclBDLCB0bworYWNjb21vZGF0ZSB0aGUgc3RyYW5nZSBiaWctZW5kaWFuIHZhcmlhbnQgb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSB0aGF0Cit3YXMgcHJldmlvdXNseSB1c2VkIG9uIHRoZSBQb3dlclBDIHBvcnQuCisKKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitSZW1vdmVkIEMrKyBrZXl3b3JkcyBmcm9tIHRoZSBleHQyZnMgbGlicmFyaWVzIHNvIHRoYXQgaXQgY291bGQgYmUKK2NvbXBpbGVkIHdpdGggQysrLgorCitFMmZzY2sncyBpbnRlcm5hbCBvcmdhbml6YXRpb24gaGFzIG5vdyBiZWVuIG1hc3NpdmVseSByZW9yZ2FuaXplZCBzbwordGhhdCBwYXNzKi5jIGRvbid0IGhhdmUgYW55IHByaW50ZiBzdGF0ZW1lbnRzLiAgSW5zdGVhZCwgYWxsIHByb2JsZW1zCithcmUgcmVwb3J0ZWQgdGhyb3VnaCB0aGUgZml4X3Byb2JsZW0oKSBhYnN0cmFjdGlvbiBpbnRlcmZhY2UuICBFMmZzY2sKK2hhcyBhbHNvIGJlZW4gcmV2YW1wZWQgc28gdGhhdCBpdCBjYW4gYmUgY2FsbGVkIGFzIGEgbGlicmFyeSBmcm9tIGEKK2FwcGxpY2F0aW9uLgorCitBZGRlZCBuZXcgZmlsZWlvIHByaW1pdGl2ZXMgaW4gbGliZXh0MmZzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nCitmaWxlcyBvbiBhbiB1bm1vdW50ZWQgZXh0MiBmaWxlc3lzdGVtLiAgVGhpcyBpbnRlcmZhY2UgaXMgbm93IHVzZWQgYnkKK2RlYnVnZnMuCisKK0FkZGVkIGEgbmV3IGxpYmV4dDJmcyBmdW5jdGlvbiBmb3IgbWFwcGluZyBsb2dpY2FsIGJsb2NrIG51bWJlcnMgb2YKK2EgZmlsZSB0byBhIHBoeXNpY2FsIGJsb2NrIG51bWJlci4KKworQWRkZWQgYSBuZXcgbGliZXh0MmZzIGZ1bmN0aW9uLCBleHQyZnNfYWxsb2NfYmxvY2soKSwgd2hpY2ggYWxsb2NhdGVzCithIGJsb2NrLCB6ZXJvcyBpdCwgYW5kIHVwZGF0ZXMgdGhlIGZpbGVzeXN0ZW0gYWNjb3VudGluZyByZWNvcmRzCithcHByb3ByaWF0ZWx5LgorCitBZGRlZCBhIG5ldyBsaWJleHQyZnMgZnVuY3Rpb24sIGV4dDJmc19zZXRfYml0bWFwX3BhZGRpbmcoKSwgd2hpY2gKK3NldHMgdGhlIHBhZGRpbmcgb2YgdGhlIGJpdG1hcCB0byBiZSBhbGwgb25lJ3MuICBVc2VkIGJ5IGUyZnNjayBwYXNzIDUuCisKK1RoZSBsaWJleHQyZnMgZnVuY3Rpb25zIG5vdyB1c2UgYSBzZXQgb2YgbWVtb3J5IGFsbG9jYXRpb24gd3JhcHBlcgorZnVuY3Rpb25zOiBleHQyZnNfZ2V0X21lbSwgZXh0MmZzX2ZyZWVfbWVtLCBhbmQgZXh0MmZzX3Jlc2l6ZV9tZW0sCitpbnN0ZWFkIG9mIG1hbGxvYywgZnJlZSwgYW5kIHJlc2l6ZS4gIFRoaXMgbWFrZXMgaXQgZWFzaWVyIGZvciB1cyB0bworYmUgcG9ydGVkIHRvIHN0cmFuZ2UgZW52aXJvbm1lbnRzIHdoZXJlIG1hbGxvYywgZXQuIGFsLiBhcmVuJ3QKK25lY2Vzc2FyaWx5IGF2YWlsYWJsZS4KKworQ2hhbmdlIHRoZSBsaWJleHQyZnMgZnVjbnRpb24gdG8gcmV0dXJuIGV4dDItc3BlY2lmaWMgZXJyb3IgY29kZXMKKyhFWFQyX0RJUl9FWElTVFMgYW5kIEVYVDJfREJfTk9UX0ZPVU5ELCBmb3IgZXhhbXBsZSkgaW5zdGVhZCBvZiB1c2luZworYW5kIGRlcGVuZGluZyBvbiB0aGUgZXhpc3RlbmNlIG9mIHN5c3RlbSBlcnJvciBjb2RlcyAoc3VjaCBhcyBFRVhJU1QKK2FuZCBFTk9FTlQpLgorCitSZW5hbWVkIGlvLmggdG8gZXh0Ml9pby5oIHRvIGF2b2lkIGNvbGxpc2lvbiB3aXRoIG90aGVyIE9TJ3MgaGVhZGVyCitmaWxlcy4KKworQWRkIHByb3RlY3Rpb24gYWdhaW5zdCBleHQyX2lvLmggYW5kIGV4dDJmcy5oIGJlaW5nIGluY2x1ZGVkIG11bHRpcGxlCit0aW1lcy4KKworVGhlIHR5cGVzIHVzZWQgZm9yIG1lbW9yeSBsZW5ndGhzLCBldGMuIGhhdmUgYmVlbiBtYWRlIG1vcmUgcG9ydGFibGUuCitJbiBnZW5lcmxhLCB0aGUgY29kZSBoYXMgYmVlbiBtYWRlIDE2LWJpdCBzYWZlLiAgQWRkZWQgTWFyaworSGFiZXJzYWNrJ3MgY29udHJpYnV0ZWQgRE9TIGRpc2sgaS9vIHJvdXRpbmVzLgorCitNaXNjZWxsYW5lb3VzIHBvcnRhYmlsaXR5IGZpeGVzLCBpbmNsdWRpbmcgbm90IGRlcGVuZGluZyBvbiBjaGFyJ3MKK2JlaW5nIHNpZ25lZC4KKworVGhlIGlvX2NoYW5uZWwgc3RydWN0dXJlIGhhcyBhIG5ldyBlbGVtZW50LCBhcHBfZGF0YSwgd2hpY2ggaXMKK2luaXRpYWxpemVkIGJ5IHRoZSBleHQyZnMgcm91dGluZXMgdG8gY29udGFpbiBhIGNvcHkgb2YgdGhlIGZpbGVzeXN0ZW0KK2hhbmRsZS4KKworZXh0MmZzX2NoZWNrX2RpcmVjdG9yeSgpJ3MgY2FsbGJhY2sgZnVuY3Rpb24gbWF5IG5vdyByZXR1cm4gdGhlIGVycm9yCitFWFQyX0VUX0NBTExCQUNLX05PVEhBTkRMRUQgaWYgaXQgd2lzaGVzIGV4dDJmc19jaGVja19kaXJlY3RvcnkoKSB0bworcmVhbGx5IGRvIHRoZSBjaGVja2luZywgZGVzcGl0ZSB0aGUgcHJlc2VuY2Ugb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLgorCisKK0UyZnNwcm9zZyAxLjExIChKdW5lIDE3LCAxOTk3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIGUyZnNjayB0byBkZXRlY3QgKHByZXZpb3VzbHkgaWdub3JlZCkgY29uZmxpY3RzIGJldHdlZW4gdGhlCitzdXBlcmJsb2NrIG9yIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIGFuZCBibG9jayBiaXRtYXBzLCBpbm9kZQorYml0bWFwcywgYW5kIGlub2RlIHRhYmxlcy4KKworRml4ZWQgYnVnIGluIGUyZnNjayBzbyB0aGF0IHdoZW4gdGhlIG1lc3NhZ2UgcHJpbnRlZCBvdXQgd2hlbiBhIGJsb2NrCitvciBpbm9kZSBiaXRtYXAgY29uZmxpY3RzIHdpdGggb3RoZXIgZGF0YSwgaXQgaGFzIHRoZSBjb3JyZWN0IGdyb3VwCitudW1iZXIuCisKK0ZpeGVkIGJ1ZyBpbiBlMmZzY2sgYW5kIG1rZTJmcyB3aGVyZSB0aGUgYmxvY2tzaXplIHdhc24ndCBiZWluZyBwYXNzZWQKK3RvIGJhZGJsb2Nrcy4gIFRoaXMgbWVhbnQgdGhhdCBub3QgYWxsIG9mIHRoZSBmaWxlc3lzdGVtIHdhcyBiZWluZwordGVzdGVkIGZvciBiYWQgYmxvY2tzISAKKworRml4ZWQgYW4gYXJyYXkgYm91bmRhcnkgb3ZlcnJ1biBjYXNlIHdoaWNoIGNyb3BwZWQgdXAgaW4KK2V4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0IHdoZW4gYSB1c2VyIHRyaWVkIHJ1bm5pbmcgIm1rZTJmcyAtYyAKKy1iIDQwOTYiLgorCitBZGp1c3RlZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgcHJpbnRlZCBieSBta2UyZnMgd2hlbiBkaXNwbGF5aW5nIHRoZQorc3VwZXJibG9jayBiYWNrdXBzIHRvIGF2b2lkIHJ1bm5pbmcgb3ZlciA4MCBjb2x1bW5zIHdoZW4gbWFraW5nIGEKK3JlYWxseSBiaWcgZmlsZXN5c3RlbS4KKworRml4ZWQgdXAgdGhlIG1hbiBwYWdlcyBmb3IgZTJmc2NrLCBkZWJ1Z2ZzLCBiYWRibG9ja3MsIGNoYXR0ciwKK2R1bXBlMmZzLCBmc2NrLCBta2UyZnMsIGFuZCB0dW5lMmZzICh0eXBvcyBhbmQgb3RoZXIgbWlub3IgZ3JhbW1hcgorZml4ZXMpLCB0aGFua3MgdG8gc29tZSBzdWdnZXN0aW9ucyBmcm9tIEJpbGwgSGF3ZXMgKHdoYXdlc0BzdGFyLm5ldCkuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworRml4ZWQgaW5zdGFsbCBydWxlIGluIGxpYi9zcyBzbyB0aGF0IHNzX2Vyci5oIGlzIGFjdHVhbGx5IGdldHRpbmcKK2luc3RhbGxlZC4KKworRml4ZWQgYnVnIGluIGV4dDJmc19jb3B5X2JpdG1hcDsgdGhlIGRlc3RpbmF0aW9uIGJpdG1hcCB3YXNuJ3QgZ2V0dGluZworYmFzc2VkIGJhY2sgdG8gdGhlIGNhbGxlci4KKworRml4ZWQgYnVnIGluIGV4dDJmc19pbm9kZV9zY2FuX2dvdG9fYmxvY2tncm91cDsgaXQgaGFkIG5vdCBiZWVuCitzZXR0aW5nIHRoZSBjdXJyZW50IGlub2RlIG51bWJlciAod2hpY2ggbWVhbnQgdGhpcyBmdW5jdGlvbiB3YXNuJ3QKK3dvcmtpbmcgYXQgYWxsKS4KKworRml4ZWQgYnVnIGluIGV4dDJmc19yZXNpemVfZ2VuZXJpY19iaXRtYXA7IGl0IGhhZCBub3QgYmUgemVyb2luZyBhbGwKK2Jsb2NrcyBpbiB0aGUgYml0bWFwIHdoZW4gaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUgYml0bWFwLgorCitDaGFuZ2VkIHRoZSBpbml0aWFsIG51bWJlciBvZiBibG9ja3MgYWxsb2NhdGVkIGJ5IGV4dDJmc19pbml0X2RibGlzdCgpCit0byBiZSBtb3JlIHJlYWxpc3RpYy4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX2FsbG9jYXRlX2dyb3VwX3RhYmxlLCB3aGljaCBzZXRzIHVwIHRoZQorZ3JvdXAgZGVzY3JpcHRvciBpbmZvcm1hdGlvbiAoYW5kIGFsbG9jYXRlcyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcywKK2FuZCBpbm9kZSB0YWJsZXMgZm9yIGEgcGFydGljdWxhciBncm91cCkuICBUaGUgZnVuY3Rpb24gd2FzIGNyZWF0ZWQgYnkKK2ZhY3RvcmluZyBvdXQgY29kZSBmb3JtIGV4dDJmc19hbGxvY2F0ZV90YWJsZXMoKS4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX21vdmVfYmxvY2tzIHdoaWNoIHRha2VzIGEgYml0bWFwIG9mIHRoZQorYmxvY2tzIHRvIGJlIG1vdmVkLCBhbmQgbW92ZXMgdGhlbSB0byBhbm90aGVyIGxvY2F0aW9uIG9uIHRoZQorYm9hcmRib2FyZC4KKworTWFrZSB0aGUgdW5peF9pbyBjaGFubmVsJ3MgaW9fY2hhbm5lbF9mbHVzaCBpbXBsZW1lbnRhdGlvbiBjYWxscyBzeW5jKCkKK3RvIHRvIGZsdXNoIHRoZSBrZXJuZWwgYnVmZmVycyB0byBkaXNrLgorCitBZGRlZCBhIG5ldyBmdW5jdGlvbiBleHQyZnNfZGJsaXN0X2NvdW50IHJldHVybnMgdGhlIG51bWJlciBvZgorZGlyZWN0b3J5IGJsb2NrcyBpbiBkYmxpc3QuCisKKworRTJmc3Byb2dzIDEuMTAgKEFwcmlsIDI0LCAxOTk3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitNa2UyZnMgb25jZSBhZ2FpbiBkZWZhdWx0cyB0byBjcmVhdGluZyByZXZpc2lvbiAjMCBmaWxlc3lzdGVtcywgc2luY2UKK3Blb3BsZSB3ZXJlIGNvbXBsYWluaW5nIGFib3V0IGJyZWFraW5nIGNvbXBhdGliaWxpdHkgd2l0aCAxLjIga2VybmVscy4KK1dhcm5pbmcgbWVzc2FnZXMgd2VyZSBhZGRlZCB0byB0aGUgbWtlMmZzIGFuZCB0dW5lMmZzIG1hbiBwYWdlcyB0aGF0Cit0aGUgc3BhcnNlIHN1cGVyYmxvY2sgb3B0aW9uIGlzbid0IHN1cHBvcnRlZCBieSBtb3N0IGtlcm5lbHMgeWV0ICgxLjIKK2FuZCAyLjAgYm90aCBkb24ndCBzdXBwb3J0IHBhcnNlIHN1cGVyYmxvY2tzLikKKworQWRkZWQgbmV3IGZsYWcgdG8gbWtlMmZzLCAtUiA8cmFpZCBvcHRpb25zPiwgd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvCit0ZWxsIG1rZTJmcyBhYm91dCB0aGUgUkFJRCBjb25maWd1cmF0aW9uIG9mIHRoZSBmaWxlc3lzdGVtLiAgQ3VycmVudGx5Cit0aGUgb25seSBzdXBwb3J0ZWQgcmFpZCBvcHRpb24gaXMgInN0cmlkZSIgd2hpY2ggc3BlY2lmaWVzIHRoZSB3aWR0aAorb2YgdGhlIFJBSUQgc3RyaXBlLgorCitGaXhlZCBidWcgaW4gZTJmc2NrIHdoZXJlIHBhc3MxYiB3b3VsZCBib21iIG91dCBpZiB0aGVyZSB3ZXJlIGFueQorYmxvY2tzIG1hcmtlZCBiYWQgaW4gdGhlIGlub2RlIHRhYmxlLgorCitGaXhlZCByYXJlIGJ1ZyBpbiBta2UyZnMgd2hlcmUgaWYgdGhlIHVzZXIgaGFkIGEgdmVyeSB1bmx1Y2t5IG51bWJlcgorb2YgYmxvY2tzIGluIGEgZmlsZXN5c3RlbSAocHJvYmFiaWxpdHkgbGVzcyB0aGFuIC4wMDIpIHRoZSByZXN1bHRpbmcKK2ZpbGVzeXN0ZW0gd291bGQgYmUgY29ycnVwdCBpbiB0aGUgbGFzdCBibG9jayBncm91cC4KKworRml4ZWQgYnVnIHdoZXJlIGlmIGUyZnNjayB0cmllZCB0byBhbGxvY2F0ZSBhIGJsb2NrIHRvIGZpeCBhCitmaWxlc3lzdGVtIGNvcnJ1cHRpb24gcHJvYmxlbSBhbmQgdGhlIGZpbGVzeXN0ZW0gaGFkIG5vIGZyZWUgYmxvY2tzLAorZXh0MmZzX25ld19ibG9jaygpIHdvdWxkIGxvb3AgZm9yZXZlci4KKworVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGNoZWNrcyBleHBsaWNpdGx5IHRvIHNlZSBpZiAiLXN0YXRpYyIgd29ya3MsCitzaW5jZSB0aGF0IGNhbid0IGJlIGFzc3VtZWQgdG8gYmUgdHJ1ZSAtLS0gUmVkSGF0IGRvZXNuJ3QgaW5zdGFsbAorbGliYy1zdGF0aWMgYnkgZGVmYXVsdC4KKworRml4ZWQgYnVnIGluIGxpYmV4dDIncyBibG9jayBpdGVyYXRvciBmdW5jdGlvbnMgd2hlcmUgdW5kZXIgc29tZQorY2lybWN1c3RhbmNlcywgZmlsZSB3aXRoIGhvbGVzIHdvdWxkIGNhdXNlIHRoZSBiY291bnQgcGFyYW1ldGVyIHRvIHRoZQorY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgaW5jb3JyZWN0LiAgVGhpcyBidWcgZGlkbid0IGFmZmVjdCBhbnkgb2YKK2UyZnNwcm9ncyBwcm9ncmFtcywgYnV0IGl0IHdhcyBkaXNjb3ZlcmVkIGJ5IFBhdWwgTWFja2VycmFzLCB0aGUKK2F1dGhvciBvZiB0aGUgUFBDIGJvb3QgbG9hZGVyLgorCitSZW1vdmVkIHVzZSBvZiBzdGF0aWMgdmFyaWFibGVzIHRvIHN0b3JlIHRoZSBpbm9kZSBjYWNoZSBpbiBsaWJleHQyZnMuCitUaGlzIGNhdXNlZCBwcm9ibGVtcyBpZiBtb3JlIHRoYW4gb25lIGZpbGVzeXN0ZW0gd2FzIGFjY2Vzc2VkIHZpYQorbGliZXh0MmZzIChzdGF0aWMgdmFyaWFibGVzIGluIGxpYnJhcmllcyBhcmUgZ2VuZXJhbGx5IGEgYmFkIGlkZWEpLgorQWdhaW4sIHRoaXMgZGlkbid0IGFmZmVjdCBlMmZzcHJvZ3MgcHJvZ3JhbXMsIGJ1dCBpdCB3YXMgZGlzY292ZXJlZCBieQorUGF1bCBNYWNrZXJyYXMuCisKK0ZpeGVkIG1pbm9yIGJ1Z3MgYW5kIHZlcnNpb24gY29kZSBkcmlmdCB0byBhc3N1cmUgdGhhdCBlMmZzcHJvZ3MgMS4xMAord2lsbCBjb21waWxlIGNsZWFubHkgd2l0aCAxLjIuMTMga2VybmVscyAoZXZlbiB3aXRoIGEub3V0IHNoYXJlZAorbGlicmFyaWVzISkKKworUHJvZ3JhbW1lcidzIG5vdGVzOgorLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZGRlZCBuZXcgZnVuY3Rpb25zIHRvIGR1cGxpY2F0ZSBhbiBleHQyIGZpbGVzeXN0ZW0gaGFuZGxlLCBhbmQgaXRzCithc3NvY2lhdGVkIHN1YnN0cnVjdHVyZS4gIE5ldyBmdW5jdGlvbnM6IGV4dDJmc19kdXBfaGFuZGxlKCksCitleHQyZnNfY29weV9kYmxpc3QoKSwgZXh0MmZzX2JhZGJsb2Nrc19jb3B5KCksIGV4dDJmc19jb3B5X2JpdG1hcCgpLgorT3RoZXIgc3RydWN0dXJlcywgc3VjaCBhcyB0aGUgaW9fY2hhbm5lbCBhbmQgdGhlIGlub2RlX2NhY2hlLCBub3cgaGF2ZQorYSByZWYgY291bnQgc28gdGhhdCB0aGV5IG9ubHkgZ2V0IGZyZWVkIHdoZW4gdGhleSBhcmUgbm8gbG9uZ2VyIHVzZWQKK2J5IGFueSBmaWxlc3lzdGVtIGhhbmRsZS4gIChUaGVzZSBmdW5jdGlvbnMgd2VyZSBhZGRlZCBhcyBwYXJ0IG9mIHRoZQorZGV2ZWxvcG1lbnQgZWZmb3J0IGZvciBhbiBleHQyIHJlc2l6ZXIpLgorCitFMmZzcHJvZ3MgMS4wOSAoQXByaWwgMTQsIDE5OTcpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZpeGVkIGJ1ZyBpbiBta2UyZnMgKHJlYWxseSBpbiBsaWIvZXh0MmZzL2luaXRpYWxpemUuYykgd2hpY2ggd2FzCithY2NpZGVudGFsbHkgaW50cm9kdWNlZCBpbiB0aGUgMS4wOCByZWxlYXNlLiAgVGhlIG92ZXJoZWFkIGNhbGN1bGF0aW9uCit3YXMgYWNjaWRlbnRhbGx5IHJlbW92ZWQsIHdoaWNoIGNhdXNlZCBleHQyZnNfaW5pdGlhbGl6ZSgpIHRvIG5vdAorbm90aWNlIHdoZW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZSBuZWVkZWQgdG8gYmUgYWRqdXN0ZWQgZG93biBiZWNhdXNlCit0aGVyZSB3YXNuJ3QgZW5vdWdoIHNwYWNlIGluIHRoZSBsYXN0IGJsb2NrIGdyb3VwLgorCitGaXhlZCBidWcgaW4gdmVyc2lvbiBwYXJzaW5nIGxpYnJhcnkgcm91dGluZTsgaXQgd2FzIGFsd2F5cyBwYXJzaW5nCit0aGUgbGlicmFyeSB2ZXJzaW9uIHN0cmluZywgaW5zdGVhZCBvZiB1c2luZyB0aGUgcGFzc2VkLWluIHN0cmluZy4KKworQ2xhcmlmaWVkIGNoYXR0ciBtYW4gcGFnZS4KKworRTJmc3Byb2dzIDEuMDggKEFwcmlsIDEwLCAxOTk3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitFMmZzY2sgMS4wNyB3YXMgdmVyeSBzbG93IHdoZW4gY2hlY2tpbmcgdmVyeSBsYXJnZSBmaWxlc3lzdGVtcyB3aXRoIGEKK2xvdCBvZiBmaWxlcyB0aGF0IGhhZCBoYXJkIGxpbmtzIChpLmUuLCBuZXdzIHNwb29scykuICBUaGlzIHdhcyBmaXhlZAorYnkgc2VyaW91c2x5IHJldmFtcGluZyB0aGUgaWNvdW50IGFic3RyYWN0aW9uLiAgQWRkZWQgYSBmb3JtYWwgdGVzdAorc3VpdGUgZm9yIHRoZSBpY291bnQgYWJzdHJhY3Rpb24uCisKK0RlYnVnZnMgbm93IGhhcyBhICItbCIgb3B0aW9uIHRvIHRoZSAibHMiIGNvbW1hbmQsIHdoaWNoIGxpc3RzIHRoZQoraW5vZGUgbnVtYmVyLCBwZXJtaXNzaW9ucywgb3duZXIsIGdyb3VwLCBzaXplLCBhbmQgbmFtZSBvZiB0aGUgZmlsZXMKK2luIHRoZSBkaXJlY3RvcnkuCisKK0ZpeCBhIGJ1ZyBpbiBlMmZzY2sgd2hlcmUgd2hlbiBhIGRpcmVjdG9yeSBoYWQgaXRzIGJsb2NrcyBtb3ZlZCB0bworYW5vdGhlciBsb2NhdGlvbiBkdXJpbmcgdGhlIHBhc3MgMWIgcHJvY2Vzc2luZywgdGhlIGRpcmVjdG9yeSBibG9jaworbGlzdCB3YXNuJ3QgdXBkYXRlZCwgc28gcGFzcyAyIHdvdWxkbid0IGNoZWNrIChhbmQgY29ycmVjdCkgdGhlCitjb3JyZWN0IGRpcmVjdG9yeSBibG9jay4KKworRTJmc2NrIHdpbGwgbm93IHRyZWF0IGlub2RlcyB3aGljaCBjb250YWluIGJsb2NrcyB3aGljaCBhcmUgY2xhaW1lZCBieQordGhlIGZpbGVzeXN0ZW0gbWV0YWRhdGEgYnkgdHJlYXRpbmcgdGhlbSBhcyBtdWx0aXBseSBjbGFpbWVkIGJsb2Nrcy4KK1RoaXMgd2F5LCB0aGUgZGF0YSBpbiB0aG9zZSBibG9ja3MgY2FuIGJlIGNvcGllZCB0byBhIG5ldyBibG9jayBkdXJpbmcKK3RoZSBwYXNzIDFiLS0xZCBwcm9jZXNzaW5nLgorCitFMmZzY2sgd2lsbCBhdHRlbXB0IHRvIGRldGVybWluZSB0aGUgY29ycmVjdCBzdXBlcmJsb2NrIG51bWJlciBhbmQKK2Rpc3BsYXkgaXQgaW4gdGhlIGRpYWdub3N0aWMgYW5kIHdhcm5pbmcgbWVzc2FnZXMgaWYgcG9zc2libGUuCisKK0FkZCBzdXBwb3J0IGZvciBhIG5ldyAoaW5jb21wYXRpYmxlKSBmZWF0dXJlLCAic3BhcnNlX3N1cGVyIi4gIFRoaXMKK2ZlYXR1cmUgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGJsb2NrcyB3aGljaCBjb250YWluIGNvcGllcyBvZiBiYWNrdXAKK3N1cGVyYmxvY2tzIGFuZCBibG9jayBncm91cCBkZXNjcmlwdG9ycy4gIChJdCBpcyBvbmx5IGFuIGluY29tcGF0aWJsZQorZmVhdHVyZSBiZWNhdXNlIG9mIGEgYnVnIGluIGV4dDJfZnJlZV9ibG9ja3MuKSAgbWtlMmZzIGFuZCB0dW5lMmZzIG5vdworc3VwcG9ydCBhIG5ldyAtcyBvcHRpb247IGUyZnNjayB3aWxsIHJlY29nbml6ZSBmaWxlc3lzdGVtcyBidWlsdCB3aXRoCit0aGlzIGZlYXR1cmUgdHVybmVkIG9uLgorCitFMmZzY2sgbm93IGNoZWNrcyB0aGUgbGlicmFyeSB0byBtYWtlIHN1cmUgaXMgdGhlIGNvcnJlY3QgdmVyc2lvbiwKK3VzaW5nIG5ldyBsaWJyYXJ5IGZ1bmN0aW9ucy4gIChUaGlzIGhlbHBzIHRvIGRpYWdub3NlIGluY29ycmVjdGx5CitpbnN0YWxsZWQgZTJmc3Byb2dzIGRpc3RyaWJ1dGlvbnMuKQorCitEdW1wZTJmcyBub3cgcHJpbnRzIG1vcmUgaW5mb3JtYXRpb247IGl0cyBub3cgcHJpbnRzIHRoZSB0aGUKK2ZpbGVzeXN0ZW0gcmV2aXNpb24gbnVtYmVyLCB0aGUgZmlsZXN5c3RlbSBzcGFyc2Vfc3VwZXIgZmVhdHVyZSAoaWYKK3ByZXNlbnQpLCB0aGUgYmxvY2sgcmFuZ2VzIGZvciBlYWNoIGJsb2NrIGdyb3VwLCBhbmQgdGhlIG9mZnNldCBmcm9tCit0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBncm91cC4KKworTWtlMmZzIG5vdyBkaXN0cmlidXRlcyB0aGUgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcCBibG9rIHNvIHRoYXQgdGhlCit3b24ndCBiZSBjb25jZW50cmF0ZWQgaW4gb25lIG9yIHR3byBkaXNrcyBpbiBSQUlEL3N0cmlwaW5nIHNldHVwcy4KK0Fsc28sIGlmIHRoZSB1c2VyIGNob29zZXMgYSAyayBvciA0ayBibG9jayBncm91cCwgbWtlMmZzIHdpbGwgdHJ5IHRvCitjaG9vc2UgdGhlIGxhcmdlc3QgYmxvY2tzIHBlciBncm91cCB0aGF0IGJlIGNob3Nlbi4gIChGb3IgMmsgYmxvY2tzLAoreW91IGNhbiBoYXZlIHVwIHRvIDE2Mzg0IGJsb2Nrcy9ncm91cDsgZm9yIDRrIGJsb2NrcywgeW91IGNhbiBoYXZlIHVwCit0byAzMjc2OCBibG9ja3MvZ3JvdXAuKSAgUHJldmlvdXNseSBta2UyZnMgd291bGQgbm90IGFsbG93CitzcGVjaWZpY2F0aW9uIG9mIG1vcmUgdGhhbiA4MTkyIGJsb2NrcyBwZXIgZ3JvdXAsIGV2ZW4gaWYgeW91IHdlcmUKK3VzaW5nIGEgMmsgb3IgNGsgYmxvY2sgZ3JvdXAuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX2NyZWF0ZV9pY291bnQyKCkgd2hpY2ggdGFrZXMgYSAiaGludCIKK2FyZ3VtZW50LiAgVGhpcyBoaW50IGFyZ3VtZW50IHByZXNldHMgdGhlIGljb3VudCBhcnJheSB3aXRoIHRoZSBsaXN0CitvZiBpbm9kZXMgd2hpY2ggYWN0dWFsbHkgbmVlZCB0byBiZSBpbiB0aGUgaWNvdW50IGFycmF5LiAgVGhpcyByZWFsbHkKK2hlbHBzIHRvIHNwZWVkIHVwIGUyZnNjay4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX2ljb3VudF92YWxpZGF0ZSgpIHdoaWNoIGNoZWNrcyB0aGUgcmVwCitpbnZhcmlhbnQgZm9yIHRoZSBpY291bnQgc3RydWN0dXJlLiAgVGhpcyBpcyB1c2VkIG1vc3RseSBmb3IgdGVzdGluZy4KKworVGhlIGVycm9yIG1lc2FzYWdlIGdpdmVuIHdoZW4gYSBiYWQgaW5vZGUgbnVtYmVyIGlzIHBhc3NlZCB0bwordGVzdF9nZW5lcmljX2JpdG1hcCB0byByZWZsZWN0IEVYVDJGU19URVNUX0VSUk9SIChpbnN0ZWFkIG9mCitFWFQyRlNfVU5NQVJLX0VSUk9SKS4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX3NldF9kaXJfYmxvY2sgd2hpY2ggc2V0cyB0aGUgYmxvY2sgb2YgYQorZGJsaXN0IGVudHJ5LCBnaXZlbiB0aGUgZGlyZWN0b3J5IGlub2RlIGFuZCBibG9ja2NudC4KKworQWRkZWQgYSBuZXcgZnVuY3Rpb24gZXh0MmZzX2dldF9saWJyYXJ5X3ZlcnNpb24oKSB3aGljaCByZXR1cm5zIHRoZQorY3VycmVudCBsaWJyYXJ5IHZlcnNpb24sIGFuZCBleHQyZnNfcGFyc2VfdmVyc2lvbl9zdHJpbmcoKSB3aGljaAorcmV0dXJucyBhIHZlcnNpb24gbnVtYmVyIGJhc2VkIG9uIGEgZTJmc3Byb2dzIHZlcnNpb24gc3RyaW5nLgorCitUaGUgaWNvdW50IGZ1bmN0aW9ucyB3aWxsIHJldHVybiBFSU5WQUwgaWYgdGhlIHBhc3NlZCBpbiBpbm9kZSBudW1iZXIKK2lzIG91dCBvZiBib3VuZHMuCisKK0UyZnNwcm9ncyAxLjA3IChNYXJjaCA5LCAxOTk3KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0UyZnNjayBpcyBub3cgdXNlcyBtdWNoIGxlc3MgbWVtb3J5IHdoZW4gY2hlY2tpbmcgcmVhbGx5IGxhcmdlCitmaWxlc3lzdGVtcyAob3IgcmF0aGVyLCBmaWxlc3lzdGVtcyB3aXRoIGEgbGFyZ2UgbnVtYmVyIG9mIGlub2RlcykuCitQcmV2aW91c2x5IGEgZmlsZXN5c3RlbSB3aXRoIDEgbWlsbGlvbiBpbm9kZXMgcmVxdWlyZWQgNCBtZWdhYnl0ZXMgb2YKK21lbW9yeSB0byBzdG9yZSBpbm9kZSBjb3VudCBzdGF0aXN0aWNzOyB0aGF0IHN0b3JhZ2UgcmVxdWlyZW1lbnQgaGFzCitub3cgYmVlbiByZWR1Y2VkIHRvIHJvdWdobHkgaGFsZiBhIG1lZ2FieXRlLgorCitFMmZzY2sgY2FuIG5vdyBwcm9wZXJseSBkZWFsIHdpdGggYmFkIGJsb2NrcyBhcHBlYXJpbmcgaW5zaWRlIHRoZQoraW5vZGUgdGFibGUuICBJbnN0ZWFkIG9mIHRyeWluZyB0byByZWxvY2F0ZSB0aGUgaW5vZGUgdGFibGUgKHdoaWNoCitvZnRlbiBmYWlsZWQgYmVjYXVzZSB0aGVyZSB3YXNuJ3QgZW5vdWdoIHNwYWNlKSwgdGhlIGlub2RlcyBpbiB0aGUgYmFkCitibG9jayBhcmUgbWFya2VkIGFzIGluIHVzZS4KKworRTJmc2NrIHdpbGwgYXV0b21hdGljYWxseSB0cnkgdG8gdXNlIHRoZSBiYWNrdXAgc3VwZXJibG9ja3MgaWYgdGhlCitwcmltYXJ5IHN1cGVyYmxvY2tzIGhhdmUgYSBiYWQgbWFnaWMgbnVtYmVyIG9yIGhhdmUgbWlzc2luZyBtZXRhLWRhdGEKK2Jsb2NrcyAob3IgbWV0YS1kYXRhIGJsb2NrcyB3aGljaCBhcmUgb3V0IG9mIHJhbmdlKS4KKworRTJmc2NrJ3MgcGFzcyAzIGhhcyBiZWVuIG1hZGUgbW9yZSBlZmZpY2llbnQ7IG1vc3Qgbm90aWNlYWJsZSBvbgorZmlsZXN5c3RlbXMgd2l0aCBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9mIGRpcmVjdG9yaWVzLgorCitDb21wbGV0ZWx5IHJldmFtcGVkIGUyZnNjaydzIHN5c3RlbSBvZiBwcmludGluZyBwcm9ibGVtIHJlcG9ydHMuICBJdAoraXMgbm93IHRhYmxlIGRyaXZlbiwgdG8gbWFrZSB0aGVtIG1vcmUgZWFzaWx5IGN1c3RvbWl6ZWFibGUgYW5kCitleHRlbmRhYmxlLiAgRXJyb3IgbWVzc2FnZXMgd2hpY2ggY2FuIGJlIHByaW50ZWQgb3V0IGR1cmluZyBwcmVlbiBtb2RlCithcmUgbm93IG9uZSBsaW5lIGxvbmcuCisKK0ZpeGVkIGUyZnNjaydzIGZpbGVzeXN0ZW0gc3dhcHBpbmcgY29kZSBzbyB0aGF0IGl0IHdvbid0IHRyeSB0byBzd2FwCitmYXN0IHN5bWJvbGljIGxpbmtzIG9yIGRlbGV0ZWQgZmlsZXMuCisKK0ZpeGVkIGUyZnNjayBjb3JlIGR1bXBpbmcgd2hlbiBmaXhpbmcgYSBmaWxlc3lzdGVtIHdoaWNoIGhhcyBubworZGlyZWN0b3JpZXMgKG5vdCBldmVuIGEgcm9vdCBkaXJlY3RvcnkpLgorCitBZGRlZCBhIGNoZWNrIHRvIGUyZnNjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgbGVuZ3RoIG9mIGV2ZXJ5CitkaXJlY3RvcnkgZW50cnkgaXMgYSBtdWx0aXBsZSBvZiA0IChzaW5jZSB0aGUga2VybmVsIGNvbXBsYWlucyBpZiBpdAoraXNuJ3QpLgorCitBZGRlZCBhIGNoZWNrIHRvIGUyZnNjayB0byBtYWtlIHN1cmUgdGhhdCBhIGRpcmVjdG9yeSBlbnRyeSBpc24ndCBhCitsaW5rIHRvIHRoZSByb290IGRpcmVjdG9yeSwgc2luY2UgdGhhdCBpc24ndCBhbGxvd2VkLgorCitBZGRlZCBhIGNoZWNrIHRvIGUyZnNrIHRvIG5vdyBtYWtlIHN1cmUgdGhlICcuJyBhbmQgJy4uJyBkaXJlY3RvcnkKK2VudHJpZXMgYXJlIG51bGwgdGVybWluYXRlZCwgc2luY2UgdGhlIDIuMCBrZXJuZWwgcmVxdWlyZXMgaXQuCisKK0FkZGVkIGNoZWNrIHRvIHdyaXRlX2JpdG1hcHMoKSB0byBtYWtlIHN1cmUgdGhlIHN1cGVyYmxvY2sgZG9lc24ndCBnZXQKK3RyYXNoZWQgaWYgdGhlIGlub2RlIG9yIGJsb2NrIGJpdG1hcCBpcyBtYXJrZWQgYXMgYmVpbmcgYmxvY2sgemVyby4KKworQWRkZWQgY2hlY2tpbmcgb2YgdGhlIG5ldyBmZWF0dXJlIHNldCBmaWVsZHMgaW4gdGhlIHN1cGVyYmxvY2ssIHRvCithdm9pZCBkZWFsaW5nIHdpdGggbmV3IGZpbGVzeXN0ZW0gZmVhdHVyZXMgdGhhdCB0aGlzIHBhY2thZ2Ugd2Fzbid0CitzZXQgdXAgdG8gaGFuZGxlLgorCitGaXhlZCBhIGZlbmNlcG9zdCBlcnJvciBpbiBleHQyZnNfbmV3X2Jsb2NrKCkgd2hpY2ggd291bGQgb2NjYXNpb25hbGx5Cit0cnkgdG8gYWxsb2NhdGUgYSBibG9jayBiZXlvbmQgdGhlIGVuZCBvZiBhIGZpbGVzeXN0ZW0uCisKK1doZW4gdGhlIFVVSUQgbGlicmFyeSBwaWNrcyBhIHJhbmRvbSBJRUVFIDgwMiBhZGRyZXNzIChiZWNhdXNlIGl0CitjYW4ndCBmaW5kIG9uZSBmcm9tIGEgbmV0d29yayBjYXJkKSwgaXQgc2V0cyB0aGUgbXVsdGljYXN0IGJpdCwgdG8KK2F2b2lkIGNvbmZsaWN0aW5nIHdpdGggYSBsZWdpdGltYXRlIElFRUUgODAyIGFkZHJlc3MuCisKK01rZTJmcyBub3cgc2V0cyB0aGUgcm9vdCBkaXJlY3RvcnkncyBvd25lciB0byBiZSB0aGUgcmVhbCB1aWQgb2YgdGhlCit1c2VyIHJ1bm5pbmcgbWtlMmZzLiAgSWYgdGhlIHJlYWwgdWlkIGlzIG5vbi16ZXJvLCBpdCBhbHNvIHNldHMKK3RoZSBncm91cCBvd25lcnNoaXAgb2YgdGhlIHJvb3QgZGlyZWN0b3J5IHRvIGJlIHRoZSByZWFsIGdyb3VwLWlkIG9mCit0aGUgdXNlciBydW5uaW5nIG1rZTJmcy4KKworTWtlMmZzIG5vdyBoYXMgbW9yZSBpbnRlbGxpZ2VudCBlcnJvciBjaGVja2luZyB3aGVuIGl0IGlzIGdpdmVuIGEKK25vbi1leGlzdGVudCBkZXZpY2UuCisKK1doZW4gYmFkYmxvY2tzIGlzIGdpdmVuIHRoZSAtdnYgb3B0aW9uLCBpdCBub3cgdXBkYXRlcyB0aGUgYmxvY2sgdGhhdAoraXQgaXMgY3VycmVudGx5IHRlc3Rpbmcgb24gZXZlcnkgYmxvY2suCisKK0ZpeGVkIGEgYnVnIGluIGZzY2sgd2hlcmUgaXQgd291bGRuJ3QgbW9kaWZ5IHRoZSBQQVRIIGVudmlybm9tZW50CitjdXJyZW50bHkgY29ycmVjdGx5IGlmIFBBVEggd2Fzbid0IGFscmVhZHkgc2V0LgorCitTaGFyZWQgbGlicmFyaWVzIG5vdyBidWlsdCB3aXRoIGRlcGVuZGVuY2llcy4gIFRoaXMgYWxsb3dzIHRoZSBzaGFyZWQKK2xpYnJhcnkgZmlsZXMgdG8gYmUgdXNlZCB3aXRoIGRsb3BlbigpOyBpdCBhbHNvIG1ha2VzIHRoZSB0cmFuc2l0aW9uCit0byBsaWJjIDYgZWFzaWVyLCBzaW5jZSBsZC5zbyBjYW4gdGVsbCB3aGljaCBsaWJjIGEgcGFydGljdWxhciBzaGFyZWQKK2xpYnJhcnkgZXhwZWN0cyB0byB1c2UuCisKK1Byb2dyYW1tZXIncyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkZWQgbmV3IGFic3RyYWN0aW9uIChkZWZpbmVkIGluIGRibGlzdC5jKSBmb3IgbWFpbnRhaW5pbmcgYSBsaXN0IG9mCitibG9ja3Mgd2hpY2ggYmVsb25ncyB0byBkaXJlY3Rvcmllcy4gIFRoaXMgaXMgdXNlZCBpbiBlMmZzY2sgYW5kIG90aGVyCitwcm9ncmFtcyB3aGljaCBuZWVkIHRvIGl0ZXJhdGUgb3ZlciBhbGwgZGlyZWN0b3JpZXMuCisKK0FkZGVkIG5ldyBmdW5jdGlvbnMgd2hpY2ggdGVzdCB0byBzZWUgaWYgYSBjb250aWd1b3VzIHJhbmdlIG9mIGJsb2NrcworKG9yIGlub2RlcykgYXJlIGF2YWlsYWJsZS4gIChleHQyZnNfKl9iaXRtYXBfcmFuZ2UpLgorCitBZGRlZCBuZXcgZnVuY3Rpb24gKGV4dDJfaW5vZGVfaGFzX3ZhbGlkX2Jsb2Nrcykgd2hpY2ggcmV0dXJucyB0cnVlIGlmCithbiBpbm9kZSBoYXMgdmFsaWQgYmxvY2tzLiAgKG1vdmVkIGZyb20gZTJmc2NrIGNvZGUpLgorCitBZGRlZCBuZXcgZnVuY3Rpb24gKGV4dDJmc19hbGxvY2F0ZV90YWJsZXMpIHdoaWNoIGFsbG9jYXRlcyB0aGUKK21ldGEtZGF0YSBibG9ja3MgYXMgcGFydCBvZiBpbml0aWFsaXppbmcgYSBmaWxlc3lzdGVtLiAgKG1vdmVkIGZyb20KK21rZTJmcyBjb2RlKS4KKworQWRkZWQgYSBuZXcgSS9PIG1hbmFnZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMuICBJdCB3aWxsIGVpdGhlciBhbGxvdyBhCitwcm9ncmFtIHRvIGludGVyY2VwdCBJL08gcmVxdWVzdHMsIG9yIHByaW50IGRlYnVnZ2luZyBtZXNzYWdlcyB0bwordHJhY2UgdGhlIGFjdGl2aXR5IG9mIGEgcHJvZ3JhbSB1c2luZyB0aGUgSS9PIG1hbmFnZXIuCisKK1RoZSBiYWRibG9ja3NfbGlzdCBmdW5jdGlvbnMgbm93IHN0b3JlIHRoZSBiYWQgYmxvY2tzIGluIGEgc29ydGVkCitvcmRlciwgYW5kIHVzZSBhIGJpbmFyeSBzZWFyY2ggdG8gc3BlZWQgdXAgYmFkYmxvY2tzX2xpc3RfdGVzdC4KKworVGhlIGlub2RlIHNjYW4gZnVuY3Rpb24gZXh0MmZzX2dldF9uZXh0X2lub2RlKCkgbWF5IG5vdyByZXR1cm4gYSBzb2Z0CitlcnJvciByZXR1cm5zOiBNSVNTSU5HX0lOT0RFX1RBQkxFIGFuZCBCQURfQkxPQ0tfSU5fSU5PREVfVEFCTEUgaW4KK3Rob3NlIGNhc2VzIHdoZXJlIHBhcnQgb2YgYW4gaW5vZGUgdGFibGUgaXMgbWlzc2luZyBvciB0aGVyZSBpcyBhIGJhZAorYmxvY2sgaW4gdGhlIGlub2RlIHRhYmxlLiAgCisKK0FkZGVkIGEgbmV3IGZ1bmN0aW9uIChleHQyZnNfYmxvY2tfaXRlcmF0ZTIpIHdoaWNoIGFkZHMgbmV3IGFyZ3VtZW50cyB0bwordGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJldHVybiBhIHBvaW50ZXIgKGJsb2NrIGFuZCBvZmZzZXQpIHRvIHRoZQorcmVmZXJlbmNlIG9mIHRoZSBibG9jay4KKworQWRkZWQgbmV3IGZ1bmN0aW9uIChleHQyZnNfaW5vZGVfc2Nhbl9nb3RvX2Jsb2NrZ3JvdXApIHdoaWNoIGFsbG93cyBhbgorYXBwbGljYXRpb24gdG8ganVtcCB0byBhIHBhcnRpY3VsYXIgYmxvY2sgZ3JvdXAgd2hpbGUgZG9pbmcgYW4gaW5vZGUKK3NjYW4uCisKK1RoZSBiYWRibG9ja3MgbGlzdCBmdW5jdGlvbnMgd2VyZSByZW5hbWVkIGZyb20gYmFkYmxvY2tzXyogdG8KK2V4dDJmc19iYWRibG9ja3NfKi4gIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlCitmb3Igbm93LCBidXQgcHJvZ3JhbXMgc2hvdWxkIGJlIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGludGVyZmFjZS4KKworU29tZSBvZiB0aGUgbGlicmFyeSBmdW5jdGlvbnMgd2VyZSByZW9yZ2FuaXplZCBpbnRvIHNlcGFyYXRlIGZpbGVzIHRvCityZWR1Y2UgdGhlIHNpemUgb2Ygc29tZSBwcm9ncmFtcyB3aGljaCBzdGF0aWNhbGx5IGxpbmsgYWdhaW5zdCB0aGUKK2V4dDIgbGlicmFyeS4KKworUHV0IGluIHNvbWUgbWlzY2VsbGFuZW91cyBmaXhlcyBmb3IgdGhlIEFscGhhIHBsYXRmb3JtLgorCisKK0UyZnNwcm9ncyAxLjA2IChPY3RvYmVyIDcsIDE5OTYpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXhlZCBzZXJpb3VzIGJ1ZyBpbiBlMmZzY2s6IGlmIHRoZSBibG9jayBkZXNjcmlwdG9ycyBhcmUgYmFkLCBkb24ndAorc21hc2ggdGhlIGJhY2t1cCBjb3BpZXMgaW4gZXh0MmZzX2Nsb3NlKCkuICAoVGhlIHByb2JsZW0gd2FzIHRoYXQgd2hlbgorZTJmc2NrIC1wIGRpc2NvdmVyZWQgdGhlIHByb2JsZW0sIHdoaWxlIGl0IHdhcyBjbG9zaW5nIHRoZSBmaWxlc3lzdGVtCithbmQgZXhpdGluZywgaXQgd2FzIGFsc28gYmxvd2luZyBhd2F5IHRoZSBiYWNrdXAgc3VwZXJibG9ja3Mgb24gdGhlCitkaXNrLCB3aGljaCB3YXMgbGVzcyB0aGFuIGZyaWVuZGx5LikgIFdlIG5vdyBtYWtlIGl0IHRoZSBjYXNlIHRoYXQgd2UKK29ubHkgd3JpdGUgb3V0IHRoZSBiYWNrdXAgc3VwZXJibG9jayBhbmQgdGhlIGJhY2sgYmxvY2sgZGVzY3JpcHRvcnMgaWYKK3RoZSBmaWxlc3lzdGVtIGlzIGNvbXBsZXRlbHkgZnJlZSBmcm9tIHByb2JsZW1zLgorCitGaXhlZCBhIGJ1ZyBpbiBibG9ja19pbnRlcmF0ZSBpbiB0aGUgbGliL2V4dDJmcyBsaWJyYXJ5IHdoaWNoIGNhdXNlZAorZTJmc2NrIHRvIGZhaWwgb24gR05VIEh1cmQtY3JlYXRlZCBmaWxlc3lzdGVtcy4KKworQWRkIHN1cHBvcnQgZm9yIExpbnV4L0ZUJ3MgYm9vdGxvYWRlciwgd2hpY2ggYWN0dWFsbHkgdXNlcworRVhUMl9CT09UX0xPQURFUiwgYW5kIHNldHMgaXRzIG1vZGUgYml0cyB3aGljaCBjYXVzZWQgZTJmc2NrIHRvIHdhbnQKK3RvIGNsZWFyIHRoZSBpbm9kZS4KKworQWRkIHN1cHBvcnQgZm9yIHRoZSAiQSIgKG5vIGF0aW1lIHVwZGF0ZSkgYXR0cmlidXRlLiAgKE5vdGU6IHRoaXMKK2F0dHJpYnV0ZSBpcyBub3QgeWV0IGluIHByb2R1Y3Rpb24ga2VybmVscy4pCisKK1RoZSB0ZXN0IHN1aXRlIGlzIG5vdCBhdXRvbWF0aWNhbGx5IHJ1biB3aGVuIGRvaW5nIGEgIm1ha2UgYWxsIiBmcm9tCit0aGUgdG9wIGxldmVsIGRpcmVjdG9yeS4gIFVzZXJzIHNob3VsZCBtYW51YWxseSBydW4gIm1ha2UgY2hlY2siIGlmCit0aGV5IHdpc2ggdG8gcnVuIHRoZSB0ZXN0IHN1aXRlLgorCitVcG9uIGEgcHJlZW5oYWx0KCksIG1ha2UgdGhlIHByaW50ZWQgbWVzc2FnZSBtb3JlIGV4cGxpY2l0IHRoYXQKK3J1bm5pbmcgZTJmc2NrICJNQU5BVUxMWSIgbWVhbnMgd2l0aG91dCB0aGUgLXAgb3IgLWEgb3B0aW9ucy4KKworSW4gZTJmc2NrLCBpZiBhIGRpc2Nvbm5lY3RlZCBpbm9kZSBpcyB6ZXJvLWxlbmd0aCwgb2ZmZXIgdG8gY2xlYXIgaXQKK2luc3RlYWQgb2Ygb2ZmZXJpbmcgdG8gY29ubmVjdCBpdCB0byBsb3N0K2ZvdW5kLgorCitJbiBlMmZzY2ssIGlmIGEgZmlsZXN5c3RlbSB3YXMganVzdCB1bm1vdW50ZWQgdW5jbGVhbmx5LCBhbmQgbmVlZHMKK2UyZnNjayB0byBiZSBydW4gb3ZlciBpdCwgY2hhbmdlIGUyZnNjayB0byBleHBsaWNpdGx5IGRpc3BsYXkgdGhpcworZmFjdC4KKworRm9yIGR1bXBlMmZzIGFuZCBlMmZzY2ssIGNhdXNlIHRoZSAtViBvcHRpb24gdG8gcHJpbnQgb3V0IHdoaWNoCit2ZXJzaW9uIG9mIHRoZSBleHQyZnMgbGlicmFyeSBpcyBhY3R1YWxseSBnZXR0aW5nIHVzZWQuICAoVGhpcyB3aWxsCitoZWxwIGRldGVjdCBtaXNtYXRjaGVzIG9mIHVzaW5nIGEgMS4wNiB1dGlsaXR5IHdpdGggYSAxLjA1IGxpYnJhcnksCitldGMuKQorCitQcm9ncmFtbWVycycgbm90ZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VYVDJfU1dBUF9CWVRFUyB3YXMgY2hhbmdlZCB0byBFWFQyX0ZMQUdfU1dBUF9CWVRFUywgd2hpY2ggYmV0dGVyIGZpdHMKK3RoZSBuYW1pbmcgY29udmVudGlvbi4KKworSW4gZXh0MmZzX2luaXRpYWxpemUoKSwgbWFrZSBzdXJlIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIGlub2RlIGJpdG1hcAoraXMgY29ycmVjdGx5IGluaXRpYWxpemUuCisKK0ZpeGVkIG1pbm9yIHR5cGUgdHlwbyBpbiBleHQyZnNfYWxsb2NhdGVfZ2VuZXJpY19iaXRtYXAoKTsKKworRTJmc3Byb2dzIDEuMDUgKFNlcHRlbWJlciA3LCAxOTk2KQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBZGQgc3VwcG9ydCBmb3IgbmV3IGZpZWxkcyBpbiB0aGUgZXh0MiBzdXBlcmJsb2NrIC0tLSB2b2x1bWUgbmFtZSwKK3ZvbHVtZSBVVUlELCBhbmQgbGFzdCBtb3VudGVkIGZpZWxkLiAgRHVtcGUyZnMgZGlzcGxheXMgdGhlc2UgZmllbGRzLAordHVuZTJmcyBhbmQgbWtlMmZzIGFsbG93cyB5b3UgdG8gc2V0IHRoZW0uICBFMmZzY2sgd2lsbCBhdXRvbWF0aWNhbGx5CitnZW5lcmF0ZSBhIFVVSUQgZm9yIHRob3NlIHZvbHVtZXMgdGhhdCBkb24ndCBoYXZlIHRoZW0uICAKKworUHV0IGluIHN1cHBvcnQgZm9yIGUyZnNjayB0byByZWNvZ25pemUgSFVSRCBzcGVjaWZpYyBleHQyIGZlYXR1cmVzIC0tLQorbW9zdCBub3RhYmx5LCB0aGUgdHJhbnNsYXRvciBibG9jay4gIFRoZSBlMmZzcHJvZ3MgdG9vbHMgd2lsbCBub3cgdXNlCit0aGUgY3JlYXRvcl9vcyBmaWVsZCBpbiB0aGUgc3VwZXJibG9jayB0byBjb3JyZWN0bHkgaGFuZGxlIGRpZmZlcmVudAorT1Mtc3BlY2lmaWMgdmFyaWFudHMgb2YgdGhlIGV4dDIgZmlsZXN5c3RlbS4KKworRTJmc2NrIG5vdyBmaXhlcyBpbm9kZXMgd2hpY2ggaGF2ZSBhIHRoZSBkZWxldGlvbiB0aW1lIHNldCwgYnV0IHdoaWNoCitoYXZlIGEgbm9uLXplcm8gaV9saW5rX2NvdW50IGZpZWxkIGJ5IG9mZmVyaW5nIHRvIGNsZWFyIHRoZSBkZWxldGlvbgordGltZS4gIFByZXZpb3VzbHkgZTJmc2NrIGFzc3VtZWQgdGhhdCB0aGUgaW5vZGUgd2FzIGRlbGV0ZWQgKHBlciAwLjNjCitleHQyIGtlcm5lbCBiZWhhdmlvcikgYW5kIG9mZmVyZWQgdG8gdW5saW5rIHRoZSBmaWxlLgorCitJZiBlMmZzY2sgc2V0cyB0aGUgY2xlYW4gYml0LCBidXQgbm90aGluZyBlbHNlLCBzZXQgdGhlIGV4aXQgY29kZQorRlNDS19OT05ERVNUUlVDVC4gIEFmdGVyIGFsbCwgZTJmc2NrIGRpZCBmaXggYSBmaWxlc3lzdGVtIGVycm9yIC0tLSBpdAorc2V0IHRoZSBmaWxlc3lzdGVtIHZhbGlkIGJpdCB3aGVuIGl0IHdhcyBwcmV2aW91c2x5IGNsZWFyZWQuICA6LSkgVGhpcword2FzIG5lZWRlZCB0byBtYWtlIHRoZSBIVVJEIGZzY2sgZHJpdmVyIGhhcHB5LgorCitJZiB0aGUgIHVzZXIgIHJlZnVzZXMgdG8gYXR0YWNoIGFuICB1bmF0dGFjaGVkICBpbm9kZSwgZTJmc2NrICB3aWxsIG5vCitsb25nZXIgc2V0IHRoZSBpbm9kZSdzIGxpbmsgY291bnQuICBPdGhlcndpc2UsIHRoZSAgaW5vZGUgd291bGQgZW5kIHVwCitnZXR0aW5nIG1hcmtlZCBhcyB1bnVzZWQsIHdoaWNoIG1pZ2h0IGNhdXNlIGxvc3Mgb2YgZGF0YSBsYXRlci4KKworTWFrZSB0aGUgbWVzc2FnZSBpc3N1ZWQgYnkgZTJmc2NrIHdoZW4gdGhlIHN1cGVyYmxvY2sgaXMgY29ycnVwdCBsZXNzCitjb25mdXNpbmcgZm9yIHVzZXJzLiAgSXQgbm93IG1lbnRpb25zIHRoYXQgYW5vdGhlciByZWFzb24gZm9yIHRoZQorImNvcnJ1cHQgc3VwZXJibG9jayIgbWVzc2FnZSBtaWdodCBiZSB0aGF0IHRoZSBwYXJ0aXRpb24gbWlnaHQgbm90IGJlCithbiBleHQyIGZpbGVzeXN0ZW0gYXQgYWxsIChpdCBtaWdodCBzd2FwLCBtc2RvcyBmaWxlc3lzdGVtLCB1ZnMsIGV0Yy4pCisKK01ha2UgdGhlIGxpYmV4dDIgbGlicmFyeSBtb3JlIHJvYnVlc3Qgc28gdGhhdCBlMmZzY2sgd29uJ3QgY29yZWR1bXAgb24KK2FuIGlsbGVnYWwgc3VwZXJibG9jayB3aGVyZSB0aGUgYmxvY2tzaXplIGlzIHplcm8uICAoZl9jcmFzaGRpc2sgaXMKK3RoZSB0ZXN0IGNhc2UpLgorCitCeSBkZWZhdWx0LCBjcmVhdGUgZmlsZXN5c3RlbXMgd2hlcmUgdGhlIGRlZmF1bHQgY2hlY2tpbnRlcnZhbCBpcyA2Cittb250aHMgKDE4MCBkYXlzKS4gIExpbnV4IHNlcnZlcnMgY2FuIGJlIHJvYnVzdCBlbm91Z2ggdGhhdCAyMCByZWJvb3RzCitjYW4gYmUgYSBsb25nLCBsb25nIHRpbWUuCisKK0FkZGVkIGNvbmZpZ3VyZSBmbGFnIC0tZW5hYmxlLW9sZC1iaXRvcHMsIHdoaWNoIGZvcmNlcyB0aGUgYml0b3BzIHRvCit1c2UgdGhlIG9sZCAobmF0aXZlKSBiaXRtYXNrIG9wZXJhdGlvbnMuICBCeSBkZWZhdWx0IG9uIHRoZSBzcGFyYworcGxhdGZvcm0sIHRoZSBzdGFuZGFyZCBleHQyIGJpdCBvcmRlcmluZyBpcyBub3cgdXNlZC4KKworQWRkZWQgYSBuZXcgZmVhdHVyZSB0byBlMmZzY2sgdG8gYnl0ZS1zd2FwIGZpbGVzeXN0ZW1zOyB0aGlzIGNhbiBiZQordXNlZCB0byBjb252ZXJ0IG9sZCBtNjhrIGZpbGVzeXN0ZW1zIHRvIHVzZSB0aGUgc3RhbmRhcmQgYnl0ZS1vcmRlcgorc3RvcmFnZSBmb3IgdGhlIHN1cGVyYmxvY2ssIGlub2RlcywgYW5kIGRpcmVjdG9yeSBibG9ja3MuICBUaGlzCitmdW5jdGlvbiBpcyBpbnZva2VkIGJ5IHVzaW5nIHRoZSAnLXMnIG9wdGlvbiB0byBlMmZzY2suCisKK0RlYnVnZnMncyAiZHVtcCIgY29tbWFuZCBoYXMgYmVlbiBlbmhhbmNlZCBzbyB0aGF0IGl0IHdyaXRlcyBvdXQgdGhlCitleGFjdCBzaXplIG9mIHRoZSBmaWxlIHNvIHRoYXQgdGhlIG51bGxzIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYXJlCitlbGltaW5hdGVkLiAgVGhlIGNvbW1hbmQgYWxzbyBhY2NlcHQgYSBuZXcgIi1wIiBvcHRpb24gd2hpY2ggd2lsbAorYXR0ZW1wdCBwcmVzZXJ2ZSB0byBwcmVzZXJ2ZSB0aGUgb3duZXJuc2hpcCwgcGVybWlzc2lvbnMsIGFuZAorZmlsZSBtb2RpZmljYXRpb24vYWNjZXNzIHRpbWVzLgorCitEZWJ1Z2ZzIGhhcyB0d28gbmV3IG9wdGlvbnMsIC1mIGFuZCAtUi4gIFRoZSAtUiBvcHRpb24gYWxsb3dzIHRoZSB1c2VyCit0byBleGVjdXRlIGEgc2luZ2xlIGRlYnVnZnMgY29tbWFuZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGUgLWYKK29wdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gc3BlY2lmeSBhICJjb21tYW5kIGZpbGUiIGNvbnRhaW5pbmcgZGVidWdmcworY29tbWFuZHMgd2hpY2ggd2lsbCBnZXQgZXhlY3V0ZWQuCisKK0R1bXBlMmZzIG5vdyBwcmV0dHkgcHJpbnRzIHRoZSBjaGVjayBpbnRlcnZhbCwgaW5zdGVhZCBvZiBqdXN0CitwcmludGluZyB0aGUgY2hlY2sgaW50ZXJ2YWwgYXMgYSBudW1iZXIgb2Ygc2Vjb25kcy4KKworRml4IGJ1Z3MgaW4gZGVidWdmczogdGhlIHBhcmFtcyBjb21tYW5kIHdoZW4gbm8gZmlsZXN5c3RlbSBpcyBvcGVuZWQKK25vIGxvbmdlciBjYXVzZXMgYSBjb3JlIGR1bXAuICBJdCBpcyBub3cgcG9zc2libGUgdG8gdW5saW5rIGEgZmlsZQord2hlbiBhIHBhdGhhbWUgY29udGFpbmluZyBhICcvJyBpcyBzcGVjaWZpZWQuCisKK1R1bmUyZnMgaGFzIGEgbmV3IC1DIG9wdGlvbiB3aGljaCBzZXRzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlCitmaWxlc3lzdGVtIGhhcyBiZWVuIG1vdW50ZWQuCisKK0ZpeCB0aGUgY2hhdHRyICctdicgb3B0aW9uIHNvIHRoYXQgaXQgYWN0dWFsbHkgd29ya3MuICBDaGF0dHIgd2FzCitiZWluZyBidWdneSBhYm91dCB0aGUgLXYgb3B0aW9uIHBhcnNpbmcuCisKK1Byb2dyYW1tZXJzJyBub3RlczoKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGRpcmVjdG9yeSBsaWIvdXVpZCBjb250YWlucyBhIHNldCBvZiBsaWJyYXJ5IHJvdXRpbmVzIHRvIGdlbmVyYXRlCitEQ0UgY29tcGF0aWJsZSBVVUlEcy4gIAorCitFeHRlbmRlZCBleHQyZnNfbmFtZWkoKSB0byBoYW5kbGUgc3ltYm9saWMgbGlua3MuICBBZGRlZCBuZXcgZnVuY3Rpb24KK2V4dDJmc19uYW1pX2ZvbGxvdygpIHdoaWNoIHdpbGwgZm9sbG93IGxhc3Qgc3ltYm9saWMgbGluayBpbiB0aGUgY2FzZQord2hlcmUgdGhlIHBhdGhuYW1lIHBvaW50cyB0byBhIHN5bSBsaW5rLgorCitUaGUgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZnVuY3Rpb24gd2lsbCBub3cgcmV0dXJuIHRoZSBIVVJEIHRyYW5zbGF0b3IKK2Jsb2NrLCBpZiBwcmVzZW50LiAgVGhlIG5ldyBmbGFnIEJMT0NLX0ZMQUdfREFUQV9PTkxZIHdpbGwgY2F1c2UgdGhlCitpdGVyYXRvciB0byByZXR1cm4gZGF0YSBibG9ja3Mgb25seS4gIFRoZSBleHQyZnMuaCBmaWxlIG5vdyBkZWZpbmVzCitjb25zdGFudHMgQkxPQ0tfQ09VTlRfSU5ELCBCTE9DS19DT1VOVF9ESU5ELCBCTE9DS19DT1VOVF9USU5ELCBhbmQKK0JMT0NLX0NPVU5UX1RSQU5TTEFUT1IsIHdoaWNoIGFyZSB0aGUgbWFnaWMgdmFsdWVzIHBhc3NlZCBpbiB0aGUgYmxvY2sKK2NvdW50IGZpZWxkIG9mIHRoZSBpdGVyYXRvciBjYWxsYmFjayBmdW5jdGlvbi4KKworVGhlIHRlc3Qgc2NyaXB0IGRyaXZlciBub3cgdGFrZXMgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50LCB3aGljaCBpcwordGhlIHRlc3QgY2FzZSB0byBiZSBydW4uICBUaGlzIGFsbG93cyB5b3UgdG8gcnVuIGEgdGVzdCBjYXNlIHdpdGhvdXQKK25lZWRpbmcgdG8gcnVuIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZS4KKworT24gTGludXggRUxGIHN5c3RlbXMsIGluc3RhbGwgdGhlIC5zbyBmaWxlcyBpbiB0aGUgY29ycmVjdCBwbGFjZXMKKygvdXNyL2xpYikuICBUaGUgLnNvIGZpbGVzIG11c3QgYmUgc3RvcmVkIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUKKy5hIGZpbGVzLgorCitGaXhlZCBtaXNjZWxsYW5lb3VzIEhVUkQgY29tcGlsYXRpb24gaXNzdWVzIHdpdGggaGVhZGVyIGZpbGUgYmVpbmcKK2luY2x1ZGVkIGluIHRoZSByaWdodCBvcmRlci4KKworRml4ZWQgZGVidWdmcyBzbyB0aGF0IGl0IHJlc2V0cyBvcHRpbmQgdG8gemVybywgbm90IG9uZSwgc2luY2Ugc2V0dGluZworb3B0aW5kIHRvIHplcm8gaXMgbW9yZSBjb3JyZWN0LgorCisKK0UyZnNwcm9ncyAxLjA0IChNYXkgMTYsIDE5OTYpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGaXJzdCAib2ZmaWNpYWwiICgxLjAzIHdhcyBhIGxpbWl0ZWQgcmVsZWFzZSBvbmx5KSB0byBzdXBwb3J0IGJ1aWxkaW5nCitlMmZzcHJvZ3MgdW5kZXIgTGludXggMi4wIGtlcm5lbHMgKGFzIHdlbGwgYXMgbGF0ZSBtb2RlbCAxLjMgYW5kIDEuOTkKK2tlcm5lbHMpLgorCitUaGlzIHBhY2thZ2UgaW5jbHVkZXMgYSBSUE0gc3BlY3MgZmlsZSwgdGhhdCBpdCBjYW4gYmUgYnVpbHQgdXNpbmcgdGhlCitSZWRIYXQgUGFja2FnZSBNYW5hZ2VyLgorCitFMmZzY2sgbm93IHByaW50cyBhIGhpbnQgdGhhdCBpZiB0aGVyZSBhcmUgbG90cyBvZiBpbmNvcnJlY3RseSBsb2NhdGVkCitpbm9kZSBiaXRtYXBzLCBibG9jayBiaXRtYXBzLCBhbmQgaW5vZGUgdGFibGUgYmxvY2tzLCB0aGUgdXNlciBtaWdodAord2FudCB0byB0cnkgdXNpbmcgZTJmc2NrIC1iIDgxOTMgZmlyc3QsIHRvIHNlZSBpZiB0aGF0IGZhcmVzIGFueQorYmV0dGVyLgorCitGb3IgZXh0MiBmaWxlc3lzdGVtIHdyaXR0ZW4gd2l0aCB0aGUgaHVyZCwgZGVidWdmcyB3aWxsIG5vdyBwcmludCBvdXQKK3RoZSB0cmFuc2xhdG9yIGZpZWxkIHdoZW4gcHJpbnRpbmcgYW4gaW5vZGUgc3RydWN0dXJlLgorCitMb3RzIG9mIG1pc2NlbGxhbmVvdXMgbGlua2luZy9pbnN0YWxsYXRpb24gY2xlYW51cHM6CisKKyAgTGlicmFyaWVzIGFyZSBub3cgbGlua2VkIHVzaW5nIGEgcmVsYXRpdmUgcGF0aG5hbWUsIGluc3RlYWQgb2YKKyAgcmVseWluZyBvbiAtTCB3b3JraW5nIGNvcnJlY3QuICBJdCBkb2Vzbid0LCBpbiBtYW55IGNhc2VzLCBpbmNsdWRpbmcKKyAgY3VycmVudCB2ZXJzaW9ucyBvZiBHTlUgbGQuICBUaGlzIGd1YXJhbnRlZXMgdGhhdCB0aGUgYnVpbGQgdHJlZSBpcworICBsaW5raW5nIHdpdGggdGhlIHJpZ2h0IGxpYnJhcmllcywgaW5zdGVhZCBvZiB0aGUgb25lcyBpbnN0YWxsZWQgaW4KKyAgL3Vzci9saWIuCisKKyAgSGVhZGVyIGZpbGVzLCBtYW4gcGFnZXMsIGFuZCB0aGUgZXQvc3Mgc2hlbGwgc2NyaXB0cyBhcmUgbm93CisgIGdlbmVyYXRlZCB1c2luZyBhIGN1c3RvbSBzdWJzdGl0dXRpb24gc2NyaXB0LCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24KKyAgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuICBUaGlzIHByZXZlbnRzIG5lZWRsZXNzIHJlY29tcGlsYXRpb24gb2YKKyAgZmlsZXM7IGluIGFkZGl0aW9uLCB0aGUgY3VzdG9tIHN1YnN0aXR1dGlvbiBzY3JpcHQgaXMgbXVjaCBmYXN0ZXIuCisKKyAgZTJmc2NrIG1heSBub3cgYmUgbGlua2VkIGR5bmFtaWNhbGx5LCBieSB1c2luZyB0aGUKKyAgLS1lbmFibGUtZHluYW1pYy1lMmZzY2sgZmxhZyB0byBjb25maWd1cmUuICBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZCwKKyAgc2luY2UgaXQgaW5jcmVhc2VzIGUyZnNjaydzIGRlcGVuZGVuY2Ugb24gb3RoZXIgZmlsZXMsIGJ1dCBzb21lCisgIHBlb3BsZSBuZWVkIHRvIHNhdmUgZGlzayBzcGFjZSwgYW5kIG90aGVyIGNyaXRpY2FsIHByb2dyYW1zIG9uIHRoZWlyCisgIHN5c3RlbXMgd2VyZSBiZWluZyBsaW5rZWQgZHluYW1pY2FsbHkgYW55d2F5LgorCisgIFByb2dyYW1zIHN1Y2ggYXMgZnNjayB3aGljaCBkaWRuJ3QgbmVlZCB0byBiZSBsaW5rZWQgYWdhaW5zdAorICBsaWJleHQyZnMgKG9yIG1rZTJmcyB3aGljaCBkaWRuJ3QgbmVlZCB0byBiZSBsaW5rZWQgYWdhaW5zdCBsaWJlMnApCisgIG9ubHkgbGluayBhZ2FpbnN0IGxpYnJhcmllcyB0aGV5IGFjdHVhbGx5IG5lZWQuICBPdGhlcndpc2UsIHRob3NlCisgIHByb2dyYW1zIHdvdWxkIHJlcXVpcmUgdGhlIHByZXNlbnNlIG9mIGxpYnJhcmllcyB0aGF0IG90aGVyd2lzZQorICBjb3VsZCBiZSByZW1vdmVkIGZyb20gYSByZXNjdXNlIGRpc2tldHRlLgorCisgIFRoZSBzcyBpbmNsdWRlIGZpbGVzIGFyZSBub3cgaW5zdGFsbGVkIGNvcnJlY3RseSBzbyB0aGV5IGNhbgorICBhY3R1YWxseSBiZSB1c2VkIGJ5IGFub3RoZXIgcGFja2FnZS4KKworICBJZiB0aGUgcHJvZmlsaW5nIGxpYnJhcmllcyBhcmUgYnVpbHQsIHRoZXkgYXJlIG5vdyBpbnN0YWxsZWQgb24gYQorICAibWFrZSBpbnN0YWxsLWxpYnMiLgorCisKK0UyZnNwcm9ncyAxLjAzIChNYXJjaCAyNywgMTk5NikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ2hhbmdlIHRoZSBtNjhrIGJpdCBudW1iZXJpbmcgZm9yIGJpdG1hc2tzIHRvIG1hdGNoIHRoZSBiaXQgbnVtYmVyaW5nCit1c2VkIGJ5IGFsbCBvdGhlciBleHQyIGltcGxlbWVudGF0aW9ucy4gIChUaGlzIGNoYW5nZSB3YXMgcmVxdWVzdGVkIGJ5Cit0aGUgbTY4ayBrZXJuZWwgZGV2ZWxvcG1lbnQgdGVhbS4pCisKK1N1cHBvcnQgKGluLWRldmVsb3BtZW50KSBmaWxlc3lzdGVtIGZvcm1hdCByZXZpc2lvbiB3aGljaCBzdXBwb3J0cworKGFtb25nIG90aGVyIHRoaW5ncykgZHluYW1pY2FsbHkgc2l6ZWQgaW5vZGVzLgorCitGaXhlZCBhIGJ1ZyBpbiB0aGUgZXh0MiBsaWJyYXJ5IHNvIHRoYXQgYW4gaW50ZWxsaWdlbnQgZXJyb3IgaXMKK3JldHVybmVkIGlmIG1rZTJmcyBpcyBydW4gd2l0aCBhIHJpZGljdWxvdXNseSBzbWFsbCBudW1iZXIgb2YgYmxvY2tzCitmb3IgYSBwYXJ0aXRpb24uCisKK0ZpeGVkIGEgYnVnIGluIHRoZSBleHQyIGxpYnJhcnkgd2hpY2ggcmVxdWlyZWQgdGhhdCB0aGUgZGV2aWNlIGJlCitvcGVuYWJsZSBpbiByZWFkL3dyaXRlIG1vZGUgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIGl0cyBzaXplLiAgVGhpcworY2F1c2VkIGUyZnNjayAtbiB0byByZXF1aXJlIHJlYWQvd3JpdGUgYWNjZXNzIHdoZW4gaXQgd2FzIG5vdAorcHJldmlvdXNseSBuZWNlc3NhcnkuCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayB3aGljaCBjYXN1ZWQgaXQgdG8gb2NjYXNpb25hbGx5IGZhaWwgdGhlIHRlc3QKK3N1aXRlIGRlcGVuZGluZyBvbiB3aGljaCB2ZXJzaW9uIG9mIHRoZSBmbG9hdGluZyBwb2ludCBsaWJyYXJ5IGl0IHdhcwordXNpbmcuCisKK0ZpeGVkIGEgYnVnIGluIGUyZnNjayBzbyB0aGF0IGl0IG5vdyBoYWx0cyB3aXRoIGEgZmF0YWwgZXJyb3Igd2hlbgorY2VydGFpbiBzdXBlcmJsb2NrIGNvbnNpc3RlbmN5IGNoZWNrcyBmYWlsLiAgUHJldmlvdXNseSBpdCBjb250aW51ZWQKK3J1bm5pbmcgZTJmc2NrLCB3aXRoIHNvbWUgcG90ZW50aWFsIGNvbmZ1c2luZy9kYW1hZ2luZyBjb25zZXF1ZW5jZXMuCisKK0FkZGVkIG5ldyBmbGFnIHRvIGZzY2sgd2hpY2ggYWxsb3dzIHRoZSByb290IHRvIGJlIGNoZWNrZWQgaW4gcGFyYWxsZWwKK3dpdGggb3RoZXIgZmlsZXN5dGVtcy4gIFRoaXMgaXMgbm90IHRoZSBzYWZlc3QgdGhpbmcgaW4gdGhlIHdvcmxkIHRvCitkbywgYnV0IHNvbWUgc3lzdGVtIGFkbWluaXN0cmF0b3JzIHJlYWxseSB3YW50ZWQgaXQuCisKK0ZpeGVkIC1XYWxsIGZsYW1lcyBpbiBsaWIvc3MuCisKKworRTJmc3Byb2dzIDEuMDIgKEphbnVhcnkgMTYsIDE5OTYpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRml4IHRvIGFsbG93IGUyZnNwcm9ncyB0byBiZSBjb21waWxlZCBvbiByZWNlbnQgMS4zIChwbDQ1Kykga2VybmVscy4KKworQ2hhbmdlIGUyZnNjayB0byBwcmludCBzdGF0aXN0aWNzIG9mIGhvdyBtYW55IG5vbi1jb250aWd1b3VzIGZpbGVzIGFyZQorb24gdGhlIHN5c3RlbS4gIE5vdGUgdGhhdCBhIGZpbGUgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gOGsgYmxvY2tzLCBpdCBpcworZ3VhcmFudGVlZCB0byBiZSBub24tY29udGlndW91cy4KKworSW4gbWtlMmZzLCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpZiBhIHVzZXIgdHJpZXMgdG8gZm9ybWF0IGEgd2hvbGUKK2Rpc2sgKC9kZXYvaGRhIHZlcnN1cyAvZGV2L2hkYTEpLiAgSWYgYSB1c2VyIHJlYWxseSB3YW50cyB0byBmb3JtYXQgYQord2hvbGUgZGlzaywgdGhlIC1GIChmb3JjZSkgb3B0aW9uIGZvcmNlcyBta2UyZnMgdG8gZm9ybWF0IGEgd2hvbGUgZGlzaworYXMgYSBmaWxlc3l0ZW0uCisKK0ZpeCBhIGJ1ZyBpbiBmc2NrIHdoZXJlIGluIHNvbWUgY2FzZXMgaXQgbWlnaHQgc3RhcnQgY2hlY2tpbmcKK3BhcnRpdGlvbnMgaW4gdGhlIG5leHQgcGFzcyBiZWZvcmUgaXQgZmluaXNoZXMgY2hlY2tpbmcgcGFydGl0aW9ucyBpbgordGhlIGN1cnJlbnQgcGFzcy4gIFRoaXMgc3RpbGwgd29uJ3QgY2F1c2UgdHdvIHBhcnRpdGlvbnMgb24gdGhlIHNhbWUKK2Rpc2sgd2lsbCBiZSBjaGVja2VkLCBzbyBpdCdzIHJhcmVseSBhIHByb2JsZW0gaW4gcmVhbCBsaWZlLgorCitQYXRjaCBsc2F0dHIgc28gdGhhdCBpdCB3b24ndCBoYW5nIHdoZW4gY2hlY2tpbmcgYSBuYW1lZCBwaXBlLgorCitNaW5vciBjb21waWxhdGlvbiBmaXhlczoKKwkqIEZpeCB0aGUgb3JkZXIgb2YgbGlicmFyaWVzIHRoYXQgd2VyZSBsaW5rZWQgaW4gZGVidWdmcy4KKwkqIEFsbG93IHRoZSBzb3VyY2VzIHRvIGJlIGNvbXBpbGVkIHdpdGggLWFuc2kgdHVybmVkIG9uLgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL1NITElCUyBiL2UyZnNwcm9ncy9TSExJQlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZjYmJjMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9TSExJQlMKQEAgLTAsMCArMSwzNSBAQAorTGlicmFyeTpsaWJjb21fZXJyLm8KK0Rlc2NyaXB0aW9uOiBDb21tb24gZXJyb3IgY29kZSBsaWJyYXJ5CitNYWludGFpbmVyOiBUaGVvZG9yZSBUcydvCitFbWFpbDogdHl0c29AbWl0LmVkdQorU3RhcnQ6IDB4NjY4MDAwMDAKK0VuZDogICAweDY2ODdmZmZmCisKK0xpYnJhcnk6bGlic3MubworRGVzY3JpcHRpb246IEdlbmVyaWMgU3Vic3lzdGVtIGxpYnJhcnkgKFNpbXBsZSB0dHkgVUkpCitNYWludGFpbmVyOiBUaGVvZG9yZSBUcydvCitFbWFpbDogdHl0c29AbWl0LmVkdQorU3RhcnQ6IDB4NjY4ODAwMDAKK0VuZDogICAweDY2OGZmZmZmCisKK0xpYnJhcnk6bGliZXh0MmZzLnNvCitEZXNjcmlwdGlvbjogVGhlIGV4dDJmcyAocmF3IGludGVyZmFjZSkgbGlicmFyeQorTWFpbnRhaW5lcjogVGhlb2RvcmUgVHMnbworRW1haWw6IHR5dHNvQG1pdC5lZHUKK1N0YXJ0OiAweDY2OTAwMDAwCitFbmQ6ICAgMHg2Njk3ZmZmZgorCitMaWJyYXJ5OmxpYmUycC5zbworRGVzY3JpcHRpb246IFRoZSBlMnAgKGV4dDJmcydzIHByb2dyYW1tZXJzKSBsaWJyYXJ5CitNYWludGFpbmVyOiBUaGVvZG9yZSBUcydvCitFbWFpbDogdHl0c29AbWl0LmVkdQorU3RhcnQ6IDB4NjY5ODAwMDAKK0VuZDogICAweDY2OWZmZmZmCisKK0xpYnJhcnk6bGlidXVpZC5zbworRGVzY3JpcHRpb246IERDRSBVbml2ZXJzYWxseSBVbmlxdWUgSUQgKFVVSUQpIGxpYnJhcnkKK01haW50YWluZXI6IFRoZW9kb3JlIFRzJ28KK0VtYWlsOiB0eXRzb0BtaXQuZWR1CitTdGFydDogMHg2NzkwMDAwMAorRW5kOiAgIDB4Njc5ZmZmZmYKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL1NVQk1JVFRJTkctUEFUQ0hFUyBiL2UyZnNwcm9ncy9TVUJNSVRUSU5HLVBBVENIRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5ZGViMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9TVUJNSVRUSU5HLVBBVENIRVMKQEAgLTAsMCArMSwzOSBAQAorCitMaWtlIHRoZSBMaW51eCBrZXJuZWwsIHN1Ym1pdHRlZCBlMmZzcHJvZ3MgcGF0Y2hlcyBub3cgcmVxdWlyZSB0aGUKK2ZvbGxvd2luZyAic2lnbi1vZmYiIHByb2NlZHVyZToKKworVGhlIHNpZ24tb2ZmIGlzIGEgc2ltcGxlIGxpbmUgYXQgdGhlIGVuZCBvZiB0aGUgZXhwbGFuYXRpb24gZm9yIHRoZQorcGF0Y2gsIHdoaWNoIGNlcnRpZmllcyB0aGF0IHlvdSB3cm90ZSBpdCBvciBvdGhlcndpc2UgaGF2ZSB0aGUgcmlnaHQgdG8KK3Bhc3MgaXQgb24gYXMgYSBvcGVuLXNvdXJjZSBwYXRjaC4gIFRoZSBydWxlcyBhcmUgcHJldHR5IHNpbXBsZTogaWYgeW91CitjYW4gY2VydGlmeSB0aGUgYmVsb3c6CisKKyAgICAgICAgRGV2ZWxvcGVyJ3MgQ2VydGlmaWNhdGUgb2YgT3JpZ2luIDEuMQorCisgICAgICAgIEJ5IG1ha2luZyBhIGNvbnRyaWJ1dGlvbiB0byB0aGlzIHByb2plY3QsIEkgY2VydGlmeSB0aGF0OgorCisgICAgICAgIChhKSBUaGUgY29udHJpYnV0aW9uIHdhcyBjcmVhdGVkIGluIHdob2xlIG9yIGluIHBhcnQgYnkgbWUgYW5kIEkKKyAgICAgICAgICAgIGhhdmUgdGhlIHJpZ2h0IHRvIHN1Ym1pdCBpdCB1bmRlciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZQorICAgICAgICAgICAgaW5kaWNhdGVkIGluIHRoZSBmaWxlOyBvcgorCisgICAgICAgIChiKSBUaGUgY29udHJpYnV0aW9uIGlzIGJhc2VkIHVwb24gcHJldmlvdXMgd29yayB0aGF0LCB0byB0aGUgYmVzdAorICAgICAgICAgICAgb2YgbXkga25vd2xlZGdlLCBpcyBjb3ZlcmVkIHVuZGVyIGFuIGFwcHJvcHJpYXRlIG9wZW4gc291cmNlCisgICAgICAgICAgICBsaWNlbnNlIGFuZCBJIGhhdmUgdGhlIHJpZ2h0IHVuZGVyIHRoYXQgbGljZW5zZSB0byBzdWJtaXQgdGhhdAorICAgICAgICAgICAgd29yayB3aXRoIG1vZGlmaWNhdGlvbnMsIHdoZXRoZXIgY3JlYXRlZCBpbiB3aG9sZSBvciBpbiBwYXJ0CisgICAgICAgICAgICBieSBtZSwgdW5kZXIgdGhlIHNhbWUgb3BlbiBzb3VyY2UgbGljZW5zZSAodW5sZXNzIEkgYW0KKyAgICAgICAgICAgIHBlcm1pdHRlZCB0byBzdWJtaXQgdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSksIGFzIGluZGljYXRlZAorICAgICAgICAgICAgaW4gdGhlIGZpbGU7IG9yCisKKyAgICAgICAgKGMpIFRoZSBjb250cmlidXRpb24gd2FzIHByb3ZpZGVkIGRpcmVjdGx5IHRvIG1lIGJ5IHNvbWUgb3RoZXIKKyAgICAgICAgICAgIHBlcnNvbiB3aG8gY2VydGlmaWVkIChhKSwgKGIpIG9yIChjKSBhbmQgSSBoYXZlIG5vdCBtb2RpZmllZAorICAgICAgICAgICAgaXQuCisKKwkoZCkgSSB1bmRlcnN0YW5kIGFuZCBhZ3JlZSB0aGF0IHRoaXMgcHJvamVjdCBhbmQgdGhlIGNvbnRyaWJ1dGlvbgorCSAgICBhcmUgcHVibGljIGFuZCB0aGF0IGEgcmVjb3JkIG9mIHRoZSBjb250cmlidXRpb24gKGluY2x1ZGluZyBhbGwKKwkgICAgcGVyc29uYWwgaW5mb3JtYXRpb24gSSBzdWJtaXQgd2l0aCBpdCwgaW5jbHVkaW5nIG15IHNpZ24tb2ZmKSBpcworCSAgICBtYWludGFpbmVkIGluZGVmaW5pdGVseSBhbmQgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgY29uc2lzdGVudCB3aXRoCisJICAgIHRoaXMgcHJvamVjdCBvciB0aGUgb3BlbiBzb3VyY2UgbGljZW5zZShzKSBpbnZvbHZlZC4KKwordGhlbiB5b3UganVzdCBhZGQgYSBsaW5lIHNheWluZworCisJU2lnbmVkLW9mZi1ieTogUmFuZG9tIEogRGV2ZWxvcGVyIDxyYW5kb21AZGV2ZWxvcGVyLmV4YW1wbGUub3JnPgorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvVE9ETyBiL2UyZnNwcm9ncy9UT0RPCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MzFkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvVE9ETwpAQCAtMCwwICsxLDI3NyBAQAorTmVlZCB0byBwcm9jZXNzIHRoZSBiYWQgYmxvY2sgaW5vZGUgKmJlZm9yZSogZG9pbmcgdGhlIGlub2RlIHNjYW4uCisKK0Fsc28gY2hlY2sgdG8gc2VlIGlmIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgaW5vZGUgdGFibGUgaXMgbm90IG9uIHRoZQorYmFkIGJsb2NrIHNjYW4sIGFuZCBmaXggdGhhdC4gIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGFuIGluYWNjdXJhdGUKK2Jsb2NrcywgYW5kIGZpeCB0aGVtIGJlZm9yZSB3ZSBzdGFydCBkb2luZyBhbnl0aGluZyBlbHNlIHdpdGggdGhlCitmaWxlc3lzdGVtIQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1VzZXIgcmVxdWVzdDoKKworQlRXOiBDb3VsZCB5b3UgcGxlYXNlIGFkZCBzb21lIHNvcnQgb2YgZGVsZXRlZCBhbmQgcG9zc2libHkgY29ycnVwdGVkIGZpbGUKKyAgICAgYW5kIGlub2RlIGxpc3QgdG8gZTJmc2NrIHJlcG9ydC4gVGhlcmUgc2hvdWxkIGJlIGZpbGVuYW1lcyBkZWxldGVkCisgICAgIGZyb20gZGlyZWN0b3J5IGlub2RlcywgZmlsZXMgd2l0aCBkdXBsaWNhdGUgYmxvY2tzIGUudC5jLgorICAgICBJdCdzIHByZXR0eSBhbm5veWluZyB0byBmaWx0ZXIgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIGUyZnNjayBvdXRwdXQKKyAgICAgYnkgaGFuZCA6LQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkIGEgImFuc3dlciBZZXMgYWx3YXlzIHRvIHRoaXMgY2xhc3Mgb2YgcXVlc3Rpb24iIHJlc3BvbnNlLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2V4dDJmc19mbHVzaCgpIHNob3VsZCByZXR1cm4gYSBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZSBmb3IgcHJpbWFyeQordmVyc3VzIGJhY2t1cCBzdXBlcmJsb2NrIGZsdXNoaW5nLCBzbyB0aGF0IG1rZTJmcyBjYW4gcHJpbnQgYW4KK2FwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRGF0ZTogTW9uLCAwOCBNYXIgMTk5OSAyMTo0NjoxNCArMDEwMAorRnJvbTogU2VyZ2lvIFBvbGluaSA8cy5wb2xpbmlAbWNsaW5rLml0PgorCisKK0knbSByZWFkaW5nIHRoZSBzb3JjZSBjb2RlIG9mIGUyZnNjayAxLjE0LgorSW4gcGFzczIuYywgbGluZXMgMzUyLTM1NywgSSByZWFkOgorCitpZiAoKGRpcmVudC0+bmFtZV9sZW4gJiAweEZGKSA+IEVYVDJfTkFNRV9MRU4pIHsKKyAgICAgICAgaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GSUxFTkFNRV9MT05HLCAmY2QtPnBjdHgpKSB7CisgICAgICAgICAgICAgICAgZGlyZW50LT5uYW1lX2xlbiA9IEVYVDJfTkFNRV9MRU47CisgICAgICAgICAgICAgICAgZGlyX21vZGlmaWVkKys7CisgICAgICAgIH0KK30KKworSSB0aGluayB0aGF0IEknbGwgbmV2ZXIgc2VlIGFueSBtZXNzYWdlcyBhYm91dCB0b28gbG9uZyBmaWxlbmFtZXMsCitiZWNhdXNlICJ3aGF0ZXZlciAmIDB4RkYiIGNhbiBuZXZlciBiZSAiPiAweEZGIi4KK0FtIEkgd3Jvbmc/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZGQgY2htb2QgY29tbWFuZCB0byBkZWJ1Z2ZzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRGF0ZTogVHVlLCAxOCBKYW4gMjAwMCAxNzo1NDo1MyAtMDgwMCAoUFNUKQorRnJvbTogQWxhbiBCbGFuY2hhcmQgPGFsYW5AYWJyYXhhcy50bz4KK1RvOiB0eXRzb0BNSVQuRURVCitTdWJqZWN0OiBERUJVR0ZTIC0gdGhhbmtzIGFuZCBhIGZlYXR1cmUgaWRlYQorQ29udGVudC1UeXBlOiBURVhUL1BMQUlOOyBjaGFyc2V0PVVTLUFTQ0lJCisKK1RoZW9kb3JlOgorCitGaXJzdCwgbGV0IG1lIHRoYW5rIHlvdSBmb3Igd3JpdGluZyBkZWJ1Z2ZzLiBSZWNlbnRseSwgbXkgTGludXggYm94CisoUkggNi4wLCA0MDAgTUh6IFBJSUksIG9uIGEgRFNMIGxpbmUpIHdhcyBoYWNrZWQgaW50by4gIFRoZSBpbnRydWRlciBkaWQKK2FuICJybSAtUmYiIG9uIGEgMzQgR0IgZHJpdmUgd2l0aCBhYm91dCA1R0Igb2YgZGF0YSBvbiBpdC4gIEkgd2FzIGFibGUgdG8KK3Jlc3RvcmUgZXNzZW50aWFsbHkgdGhlIGVudGlyZSB0aGluZyB3aXRoIGRlYnVnZnMgYW5kIGEgYml0IG9mIEMgY29kZSBhbmQgUGVybC4KK0FjdHVhbGx5LCBJIGNvdWxkIGhhdmUgZG9uZSB0aGUgZW50aXJlIHRoaW5nIHdpdGggZGVidWdmcyBhbmQgUGVybCwgYnV0IEkKK3Rob3VnaHQgaXQgd291bGQgYmUgdG9vIHNsb3cuCisKK0R1cmluZyB0aGlzIGV4ZXJjaXNlLCBJIG5vdGljZWQgdGhhdCBvbmUgc21hbGwgZmVhdHVyZSB3YXMgbGFja2luZyB0aGF0IHdvdWxkCitoYXZlIG1hZGUgbXkgam9iIGEgYml0IGVhc2llci4gIFRoZSBsZW5ndGggb2YgYSBkZWxldGVkIGRpcmVjdG9yeSBpcworcmVwb3J0ZWQgYXMgMCwgaGVuY2UgZGVidWdmcyB3b24ndCBkdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IHRvIGEKK2ZpbGUgdXNpbmcgdGhlICJkdW1wIiBjb21tYW5kLiAgVGhlIG9ubHkgdGhpbmcgdGhhdCBzYXZlZCBtZSB3YXMgdGhhdCB0aGUKK2xpc3Qgb2YgZGlzayBibG9ja3MgaXMgbm90IHplcm9lZCBvdXQuICBJIHdhcyBhYmxlIHRvIGR1bXAgdGhlIGNvbnRlbnRzIG9mIHRoZQorZGlyZWN0b3JpZXMgYnkgdXNpbmcgZGVidWdmcyB0byBnZXQgdGhlIHJlbGV2YW50IGJsb2NrIG51bWJlcnMsIHRoZW4KK3VzaW5nIGRkIHRvIGdldCB0aGUgYWN0dWFsIGRhdGEuCisKK0lmIGRlYnVnZnMgaGFkIGEgZmVhdHVyZSB3aGVyZSBpdCBpZ25vcmVkIHRoZSBzaXplIG9mIGEgZGlyZWN0b3J5IHJlcG9ydGVkIGJ5Cit0aGUgaW5vZGUgYW5kIGluc3RlYWQganVzdCBkdW1wZWQgYWxsIHRoZSBibG9ja3MsIGl0IHdvdWxkIGhhdmUgZmFjaWxpdGVkCit0aGluZ3MgYSBiaXQuIFRoaXMgc2VlbXMgbGlrZSBhIHZlcnkgZWFzeSBmZWF0dXJlIHRvIGFkZC4KKworQWdhaW4sIHRoYW5rcyBmb3Igd3JpdGluZyBkZWJ1Z2ZzIChhbmQgYWxsIHRoZSBvdGhlciBMaW51eCBzdHVmZiB5b3UndmUgd3JpdHRlbiEpLgorCitDaGVlcnMsCitBbGFuIEJsYW5jaGFyZAorYWxhbkBhYnJheGFzLnRvCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitEYXRlOiBGcmksIDIxIEphbiAyMDAwIDE0OjA3OjEyIC0wODAwCitGcm9tOiAiSC4gUGV0ZXIgQW52aW4iIDxocGFAd3d3LnRyYW5zbWV0YS5jb20+CitTdWJqZWN0OiBta2ZzIC1jYyBhbmQgZnNjayAtYworCitiKSBBbiBvcHRpb24gdG8gbWtmcyB0byB6ZXJvIHRoZSBwYXJ0aXRpb24uICBZZXMsIGl0IGNhbiBiZSBkb25lIHdpdGgKK2RkLCBidXQgaXQgd291bGQgYmUgYSBuaWNlciB3YXkgb2YgZG9pbmcgaXQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBZGQgc3VwcG9ydCBmb3IgaW4gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUoKSBmb3IgYSByZXR1cm5pbmcgdGhlCitjb21wcmVzc2VkIGZsYWcgYmxvY2tzIHRvIGJsb2NrX2l0ZXJhdGUuICBDaGFuZ2UgZGVmYXVsdCB0byBub3QgcmV0dXJuCitFWFQyX0NPTVBSRVNTRURfQkxLQUREUi4gIENoYW5nZSBlMmZzY2sgdG8gcGFzcyB0aGlzIGZsYWcgaW4uCisKKyhUaGUgb2xkIGNvbXByZXNzaW9uIHBhdGNoZXMgZGlkIHRoaXMgYnkgZGVmYXVsdCBhbGwgdGhlIHRpbWUsIHdoaWNoCitpcyBiYWQsIHNpbmNlIGl0IG1lYW50IGUyZnNjayBuZXZlciBzYXcgdGhlIEVYVDJfQ09NUFJFU1NFRF9CTEtBRERSCitmbGFnd29yZC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0UyZnNjayBzaG91bGQgb2ZmZXIgdG8gY2xlYXIgYWxsIHRoZSBibG9ja3MgaW4gYW4gaW5kaXJlY3QgYmxvY2ssIG5vdAordGhlIGVudGlyZSBpbm9kZSwgc28gdGhlcmUncyBiZXR0ZXIgcmVjb3ZlcnkgZm9yIHdoZW4gYW4gaW5kaXJlY3QKK2Jsb2NrIGdldHMgdHJhc2hlZC4KKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Zyb206IFlhbm4gRGlyc29uIC0gTE9HQVRJUVVFIDxZYW5uLkRpcnNvbkBGcmFuY2UuU3VuLkNPTT4KK0RhdGU6IFRodSwgMiBNYXIgMjAwMCAxMzo1MjoxMyArMDEwMCAoTUVUKQorCitEdXJpbmcgbXkgZXhwZXJpbWVudHMgb24gdGhlIGJyb2tlbiBzeXN0ZW0sIEkgbm90aWNlZCB0aGUgZm9sbG93aW5nIGluCit0aGUgYmFkYmxvY2tzIHByb2dyYW0gKHdoaWNoIEknbSBhd2FyZSBpcyBub3QgZGVzaWduZWQgZm9yIElERSBkcml2ZXMpCistIEknZCBwcm9iYWJseSBoYXZlIGFscmVhZHkgZml4ZWQgdGhlbSBpZiBteSBob21lIHN5c3RlbSB3YXMgdXAgOigKKworKiB0aGUgc3ludGF4IHN1bW1hcnkgZG9jdW1lbnRzIDJuZCBhcmcgYXMgYmxvY2tzX2NvdW50LCB3aGljaCBzaG91bGQKK3Byb2JhYmx5IHJlYWQgc29tZXRoaW5nIGxpa2UgZW5kX2NvdW50LgorCisqIHRlc3RpbmcgcGFzdCBlbmQgb2YgZGV2aWNlIGlzIG5vdCBkZXRlY3RlZCwgYW5kIGxpc3RzIHRob3NlIGJsb2NrcworYXMgYmFkLCB3aGVyZWFzIHRoZXkgc2ltcGx5IGRvIG5vdCBleGlzdC4KKworCitJIHRoaW5rIEknbGwgcHJvYmFibHkgYWRkIGEgIm1heCBjb3VudCIgb3B0aW9uIHRvIGZpbmRzdXBlcig4KSwgc28KK3RoYXQgSSBkbyBub3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgd2hvbGUgZGlzayB0byBiZSBzY2FubmVkIHdoZW4gdGhlCitzeXN0ZW0gaGFkIHRvIGJlIGxhdW5jaGVkIHdpdGggImluaXQ9L2Jpbi9zaCIsIGluIHdoaWNoIGNhc2UgQ3RybC1bQ1pdCithbmQgZnJpZW5kcyBhcHBlYXIgdG8gYmUgYWJzb2x1dGVseSBpZ25vcmVkLgorCisKK1NvbWV3aGF0IHVucmVsYXRlZCwgSSBqdXN0IG5vdGljZWQgdGhlCitodHRwOi8vd2ViLm1pdC5lZHUvdHl0c28vd3d3L2xpbnV4L2V4dDIuaHRtbCBjb3VsZCBiZSB1cGRhdGVkOgorCistIGNvdWxkIG1lbnRpb24gU0dJIHhmcyAoaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcy8gLSB0aGV5IGp1c3QKKyAgcmVsZWFzZSAwLjAzIHNuYXBzaG90KQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JldHVybi1QYXRoOiA8dHl0c29ATUlULkVEVT4KK0RhdGU6IFRodSwgMTAgRmViIDIwMDAgMTM6MjA6MTQgLTA1MDAKK0Zyb206ICJUaGVvZG9yZSBZLiBUcydvIiA8dHl0c29ATUlULkVEVT4KK1RvOiBSLkUuV29sZmZAQml0V2l6YXJkLm5sCitJbi1SZXBseS1UbzogUm9naWVyIFdvbGZmJ3MgbWVzc2FnZSBvZiBUaHUsIDEwIEZlYiAyMDAwIDA4OjQ2OjMwICswMTAwIChNRVQpLAorCTwyMDAwMDIxMDA3NDYuSUFBMjQ1NzNAY2F2ZS5iaXR3aXphcmQubmw+CitTdWJqZWN0OiBSZTogZTJmc2NrIHJlcXVlc3QgZm9yIGVuaGFuY2VtZW50LgorUGhvbmU6ICg3ODEpIDM5MS0zNDY0CisKKyAgIERhdGU6IFRodSwgMTAgRmViIDIwMDAgMDg6NDY6MzAgKzAxMDAgKE1FVCkKKyAgIEZyb206IFIuRS5Xb2xmZkBCaXRXaXphcmQubmwgKFJvZ2llciBXb2xmZikKKworICAgTGF0ZWx5LCB3aGlsZSB0cnlpbmcgdG8gcmVjb3ZlciBhIGJyb2tlbiBkaXNrLCBteSBzeXN0ZW0gZnJvemUgKHR3aWNlLAorICAgdW50aWwgSSB0cmllZCBzb21ldGhpbmcgZWxzZSkgd2hpbGUgY29weWluZyB0aGUgZGlzay4KKworICAgU28gSSBoYWQgYSBmaWxlIG9mIGFib3V0IDUwTWIgdGhhdCB3YXMgZ3Jvd2luZyBmcmFudGljYWxseSBhdCB0aGUKKyAgIG1vbWVudCBvZiB0aGUgY3Jhc2guCisKKyAgIGUyZnNjaywgdGhlbiBmaW5kcyBhbiBpbmRpcmVjdCBibG9jayB0aGF0IGlzIGNvbXBsZXRlbHkgYm9ndXMuIEl0CisgICBzdGFydHMgYnkgYXNraW5nIG1lIGlmIGl0J3Mgb2sgdG8gY2xlYXIgYSBmZXcgb2YgdGhlIHJlZmVyZW5jZWQKKyAgIGJsb2Nrcy4gSSBzYXkgeWVzLiBUaGVuIGl0IGNvbWVzIHRvIHRoZSBjb25jbHVzaW9uOiAKKworICAgICAgdG9vIG1hbnkgaW52YWxpZCBibG9ja3MuIENsZWFyIGlub2RlPworCisgICBhbmQgdGhlbiBJIGdldCB0aGUgb3B0aW9uIHRvIGRlbGV0ZSB0aGUgd2hvbGUgZmlsZS4gTm90IHRvIHRydW5jYXRlCisgICB0aGUgZmlsZSB0byBhICJ3b3JraW5nIiBzaXplLgorCisKKyAgIEknZCBNVUNIIHJhdGhlciBoYXZlIGUyZnNjayBzYXkgc29tZXRoaW5nIGxpa2U6CisKKyAgICAgIGlub2RlIDEyMzQgcmVmZXJlbmNlcyBhbiBpbnZhbGlkIGJsb2NrIDEzNDM0NTQ1NC4gSG1tLgorICAgICAgaW5vZGUgMTIzNCByZWZlcmVuY2VzIDU2NyBvdXQgb2YgNTAxNzYgaW52YWxpZCBibG9ja3MsIAorCQkJICBhbGwgbmVhciB0aGUgZW5kLiBUcnVuY2F0ZSBmaWxlIHRvIDQ5MTUyIGJsb2Nrcz8KKworICAgSGVyZSB5b3UgY2FuIHNlZSB0aGF0IG9mIHRoZSAxMDI0IGJsb2NrcyBuZWFyIHRoZSBlbmQgb2YgdGhlIGZpbGUsCisgICBvbmx5IDU2NyB3ZXJlIGRldGVjdGVkIGFzIGludmFsaWQuIEhvd2V2ZXIgbm93IDQ4TWIgb2YgdGhlIGZpbGUgd2lsbAorICAgYmUgcmVjb3ZlcmVkLCBpbnN0ZWFkIG9mIHRocm93biBhd2F5LgorCitUaGF0J3MgYSBnb29kIHBvaW50LiAgQWN0dWFsbHksIHRoZSByaWdodCB0aGluZyBpcyBmb3IgZTJmc2NrIHRvIG9mZmVyCit0byBjbGVhciBhbGwgb2YgdGhlIGJhZCBibG9ja3MgaW4gYSBwYXJ0aWN1bGFyIGluZGlyZWN0IGJsb2NrLiAgSSBkb24ndAora25vdyBob3cgaGFyZCBpdCB3b3VsZCBiZSB0byBkbyB0aGF0LCBidXQgSSdsbCBwdXQgaXQgb24gbXkgZTJmc3Byb2dzCitUT0RPIGxpc3QuCisKKwkJCQkJCQktIFRlZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0Zyb20gZTJmc3Byb2dzIERlYmlhbiBUT0RPIGZpbGUgYXMgb2YgMS4xMC0xMy4KKworKiBNYXliZSBtYWtlIC1kYmcgcGFja2FnZXMuIExvb2sgYXQgaG93IG90aGVycyBkbyBpdC4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FkZCAtLWxiYSBvcHRpb24gdG8gZGViaWFuIGljaGVjayBjb21tYW5kLCBhbmQgaGF2ZSB3YXlzIG9mIG1ha2luZyBpdAorZWFzaWVyIHRvIHRyYW5zbGF0ZSBMQkEgdG8gZmlsZXN5c3RlbSBibG9jayBudW1iZXJzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworCitMaXN0IG9mIHByb2plY3RzIGZvciBlMmZzcHJvZ3M6CisKKworMSkgTWFrZSBkZWJ1Z2ZzJ3MgIm5jaGVjayA8aW5vZGU+IiBjb21tYW5kIGxpc3QgYWxsIG9mIHRoZSBwYXRobmFtZXMKK3RvIGFuIGlub2RlLCBub3QganVzdCBvbmx5IHRoZSBmaXJzdCBsaW5rIHRvIHRoZSBpbm9kZSB3aGljaCBpcyBmb3VuZC4KKyhBIGdvb2QgImludHJvIHRvIGxpYmV4dDJmcyBwcm9ncmFtbWluZyBpbnRlcmZhY2VzIHByb2plY3QpCisKKwlEaWZmaWN1bHR5OiBMb3cJCVByaW9yaXR5OiBMb3cKKworMikgVXNlIGEgY29kZSBjb3ZlcmFnZSB0b29sIHN1Y2ggYXMgUmF0aW9uYWwncyBQdXJlQ292ZXJhZ2UgdG8gc2VlCit3aGF0IGtpbmQgb2YgY29kZSBjb3ZlcmFnZSB3ZSBoYXZlIGZvciBlMmZzY2ssIGFuZCB0cnkgdG8gYWRkIHRlc3QKK2Nhc2VzIHRvIGluY3JlYXNlIHRoZSBjb2RlIGNvdmVyYWdlIGZvciBlMmZzY2suCisKKwlEaWZmaWN1bHR5OiBNZWRpdW0JUHJpb3J0eTogTG93CisKKzMpIFVzZSBhIGNvZGUgY292ZXJhZ2UgdG9vbCBzdWNoIGFzIFJhdGlvbmFsJ3MgUHVyZUNvdmVyYWdlIHRvIHNlZQord2hhdCBraW5kIG9mIGNvZGUgY292ZXJhZ2Ugd2UgaGF2ZSBmb3IgcmVzaXplMmZzLCBhbmQgdHJ5IHRvIGFkZCB0ZXN0CitjYXNlcyB0byBpbmNyZWFzZSB0aGUgY29kZSBjb3ZlcmFnZSBmb3IgcmVzaXplMmZzLgorCisJRGlmZmljdWx0eTogTWVkaXVtCVByaW9ydHk6IE1lZGl1bQorCis0KSBDcmVhdGUgYSBuZXcgSS9PIG1hbmFnZXIgKGkuZS4sIHRlc3RfaW8uYywgdW5peF9pby5jLCBldC5hbC4pIHdoaWNoCitsYXllcnMgb24gdG9wIG9mIGFuIGV4aXN0aW5nIEkvTyBtYW5hZ2VyIHdoaWNoIHByb3ZpZGVzIGNvcHktb24td3JpdGUKK2Z1bmN0aW9uYWxpdHkuICBUaGlzIENPVyBJL08gbWFuYWdlciB0YWtlcyB3aWxsIHRha2UgdHdvIG9wZW4gSS9PCittYW5hZ2VycywgY2FsbCB0aGVtICJiYXNlIiBhbmQgImNoYW5nZWQiLiAgVGhlICJiYXNlIiBJL08gbWFuYWdlciBpcworb3BlbmVkIHJlYWQvb25seSwgc28gYW55IGNoYW5nZXMgYXJlIHdyaXR0ZW4gaW5zdGVhZCB0byB0aGUgImNoYW5nZWQiCitJL08gbWFuYWdlciwgaW4gYSBjb21wYWN0LCBub24tc3BhcnNlIGZvcm1hdCBjb250YWluaW5nIHRoZSBpbnRlbmRlZAorbW9kaWZpY2F0aW9uIHRvIHRoZSAiYmFzZSIgZmlsZXN5c3RlbS4gIAorCitUaGlzIHdpbGwgYWxsb3cgcmVzaXplMmZzIHRvIGZpZ3VyZSBvdXQgd2hhdCBjaGFuZ2VzIG5lZWQgdG8gbWFkZSB0bworZXh0ZW5kIGEgZmlsZXN5c3RlbSwgb3IgZXhwYW5kIHRoZSBzaXplIG9mIGlub2RlcyBpbiB0aGUgaW5vZGUgdGFibGUsCithbmQgdGhlIGNoYW5nZXMgY2FuIGJlIHB1c2hlZCB0aGUgZmlsZXN5c3RlbSBpbiBvbmUgZmVsbCBzd29vcC4gIChJZgordGhlIHN5c3RlbSBjcmFzaGVzOyB0aGUgcHJvZ3JhbSB3aGljaCBydW5zIHRoZSAiY2hhbmdlZCIgZmlsZSBjYW4gYmUKK3JlLXJ1biwgbXVjaCBsaWtlIGEgam91cm5hbCByZXBsYXkuICBNeSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIENPVworZmlsZSB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzeXN0ZW0gVVVJRCBpbiBhIHRoZSBDT1cgc3VwZXJibG9jaywgYW5kIHRoZQorQ09XIGZpbGUgd2lsbCBiZSBzdG9yZWQgaW4gc29tZSBwbGFjZSBzdWNoIGFzIC92YXIvc3RhdGUvZTJmc3Byb2dzLAord2l0aCBhbiBpbml0LmQgZmlsZSB0byBhdXRvbWF0ZSB0aGUgcmVwbGF5IHNvIHdlIGNhbiByZWNvdmVyIGNsZWFubHkKK2Zyb20gYSBjcmFzaCBkdXJpbmcgdGhlIHJlc2l6ZTJmcyBwcm9jZXNzLikKKworCURpZmZpY3VsdHk6IE1lZGl1bQlQcmlvcml0eTogTWVkaXVtCisKKzUpIENyZWF0ZSBhIG5ldyBJL08gbWFuYWdlciAoaS5lLiwgdGVzdF9pby5jLCB1bml4X2lvLmMsIGV0LmFsLikgd2hpY2gKK2xheWVycyBvbiB0b3Agb2YgYW4gZXhpc3RpbmcgSS9PIG1hbmFnZXIgd2hpY2ggcHJvdmlkZXMgYW4gInVuZG8iCitmdW5jdGlvbmFsaXR5LiAgVGhpcyB1bmRvIEkvTyBtYW5hZ2VyIHRha2VzIHdpbGwgdGFrZSB0d28gb3BlbiBJL08KK21hbmFnZXJzLCBjYWxsIHRoZW0gImJhc2UiIGFuZCAidW5kbyIuICBUaGUgImJhc2UiIEkvTyBtYW5hZ2VyIGlzIGJlCitvcGVuZWQgcmVhZC93cml0ZSwgYW5kIHdoZW4gYW55IHdyaXRlcyBhcmUgc2VudCB0byB0aGUgSS9PIG1hbmFnZXIsCit0aGUgSS9PIG1hbmFnZXIgd2lsbCBjaGVjayB0aGUgInVuZG8iIEkvTyBtYW5hZ2VyLCB1c2luZyBhIGZpbGUgZm9ybWF0CitpZGVudGljYWwgdG8gdGhlIG9uZSBmb3VuZCBpbiAoNSkgYWJvdmUuICAKKworVGhpcyBpcyB1c2VmdWwgZm9yIGFsbG93aW5nIGUyZnNjayB0byBjcmVhdGUgYW4gInVuZG8iIGZpbGUsIHdoaWNoCit3b3VsZCBtYWtlIHRoaW5ncyBsaWtlICJlMmZzY2sgLXkiIG11Y2ggc2FmZXIuCisKKwlEaWZmaWN1bHR5OiBMb3cgKG9uY2UgNSBpcyBkb25lKSAgUHJpb3JpdHk6IExvdworCis2KSBNb2RpZnkgcmVzaXplMmZzIHNvIHRoYXQgaXQgY2FuIHJlbG9jYXRlIGFuZCByZW9yZ2FuaXplIHRoZQorZmlsZXN5c3RlbSBpbiB0aGUgZm9sbG93aW5nIHdheXM6ICgxKSBpbmNyZWFzZSB0aGUgaW5vZGUgc2l6ZSwgc28gdGhhdAorYW4gZXhpc3RpbmcgZmlsZXN5c3RlbSBjYW4gdXNlIHRoZSBFQS1pbi1pbm9kZSBrZXJuZWwgcGF0Y2gsICgyKQorcmVzZXJ2ZSBibG9ja3MgaW4gdGhlIHJlc2l6ZSBpbm9kZSB0byBhbGxvdyBmb3Igb24tbGluZSByZXNpemluZy4gIFVzZQordGhlIENPVyBJL08gbWFuYWdlciBkZXNjcmliZWQgaW4gKDUpIGluIG9yZGVyIHRvIHByb3ZpZGUgcm9idXN0bmVzcyBpbgorY2FzZSBvZiBhIGNyYXNoIGR1cmluZyB0aGUgcmVzaXplL3Jlb3JnYW5pemF0aW9uIG9wZXJhdGlvbi4gIAorCisJRGlmZmljdWx0eTogSGlnaAlQcmlvcml0eTogTWVkaXVtCisKKzcpIFJldmlldyB0aGUgRUEtaW4taW5vZGUgcGF0Y2hlcyB0byBlMmZzY2sgZm9yIGNvcnJlY3RuZXNzL2NvZGUKK2NsZWFubGluZXNzLiAgKEkgd2lsbCBwcm9iYWJseSBoYXZlIHRvIGRvIHRoaXMgbXlzZWxmIC0tIFRlZCkKKworCURpZmZpY3VsdHk6IEhpZ2gJUHJpb3J0eTogTWVkaXVtCisKKzgpIEFkZCBzdXBwb3J0IGZvciBleHRlbnQgbWFwcyB0byBlMmZzcHJvZ3MuICBJIG5lZWQgdG8gcmV2aWV3IHRoZQorZXh0ZW50IG1hcHMgZmlyc3QvaW4gcGFyYWxsZWwuIAorCisJRGlmZmljdWx0eTogSGlnaAlQcmlvcml0eTogTWVkaXVtCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmVlZCB0byBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHJlc2l6ZSBpbm9kZSBvdmVybGFwcyB3aXRoIHRoZQorYmFkIGJsb2NrcyBpbm9kZS4KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2FjaW5jbHVkZS5tNCBiL2UyZnNwcm9ncy9hY2luY2x1ZGUubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiZGM1ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9hY2luY2x1ZGUubTQKQEAgLTAsMCArMSwxNTMgQEAKKyMgZnJvbSBodHRwOi8vYXV0b2NvbmYtYXJjaGl2ZS5jcnlwLnRvL2F4X3Rscy5odG1sCisjCisjIFRoaXMgd2FzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjoKKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQKKyMgb3duZXIgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZQorIyBjb25maWd1cmUgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZworIyB0aGUgTWFjcm8uIFlvdSBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSB3aGVuIHVzaW5nIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoCisjIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZSBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsCisjIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQKKyMgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUKKyMgQXV0b2NvbmYgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIE1hY3JvIEFyY2hpdmUuIFdoZW4geW91IG1ha2UKKyMgYW5kIGRpc3RyaWJ1dGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heQorIyBleHRlbmQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQKKyMgdmVyc2lvbiBhcyB3ZWxsLgorIworQUNfREVGVU4oW0FYX1RMU10sIFsKKyAgQUNfTVNHX0NIRUNLSU5HKGZvciB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBjbGFzcykKKyAgQUNfQ0FDSEVfVkFMKGFjX2N2X3RscywgWworICAgIGF4X3Rsc19rZXl3b3Jkcz0iX190aHJlYWQgX19kZWNsc3BlYyh0aHJlYWQpIG5vbmUiCisgICAgZm9yIGF4X3Rsc19rZXl3b3JkIGluICRheF90bHNfa2V5d29yZHM7IGRvCisgICAgICAgY2FzZSAkYXhfdGxzX2tleXdvcmQgaW4KKyAgICAgICAgICBub25lKSBhY19jdl90bHM9bm9uZSA7IGJyZWFrIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgICBBQ19UUllfQ09NUElMRSgKKyAgICAgICAgICAgICAgICBbI2luY2x1ZGUgPHN0ZGxpYi5oPgorICAgICAgICAgICAgICAgICBzdGF0aWMgdm9pZAorICAgICAgICAgICAgICAgICBmb28odm9pZCkgeworICAgICAgICAgICAgICAgICBzdGF0aWMgXSAkYXhfdGxzX2tleXdvcmQgWyBpbnQgYmFyOworICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgIFthY19jdl90bHM9JGF4X3Rsc19rZXl3b3JkIDsgYnJlYWtdLAorICAgICAgICAgICAgICAgICBhY19jdl90bHM9bm9uZQorICAgICAgICAgICAgICkKKyAgICAgICAgICBlc2FjCisgICAgZG9uZQorXSkKKworICBpZiB0ZXN0ICIkYWNfY3ZfdGxzIiAhPSAibm9uZSI7IHRoZW4KKyAgICBkbmwgQUNfREVGSU5FKFtUTFNdLCBbXSwgW0lmIHRoZSBjb21waWxlciBzdXBwb3J0cyBhIFRMUyBzdG9yYWdlIGNsYXNzIGRlZmluZSBpdCB0byB0aGF0IGhlcmVdKQorICAgIEFDX0RFRklORV9VTlFVT1RFRChbVExTXSwgJGFjX2N2X3RscywgW0lmIHRoZSBjb21waWxlciBzdXBwb3J0cyBhIFRMUyBzdG9yYWdlIGNsYXNzIGRlZmluZSBpdCB0byB0aGF0IGhlcmVdKQorICBmaQorICBBQ19NU0dfUkVTVUxUKCRhY19jdl90bHMpCitdKQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgIGh0dHA6Ly93d3cubm9uZ251Lm9yZy9hdXRvY29uZi1hcmNoaXZlL2NoZWNrX2dudV9tYWtlLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQ0hFQ0tfR05VX01BS0UoKQorIworIyBERVNDUklQVElPTgorIworIyAgIFRoaXMgbWFjcm8gc2VhcmNoZXMgZm9yIGEgR05VIHZlcnNpb24gb2YgbWFrZS4gSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhlCisjICAgbWFrZWZpbGUgdmFyaWFibGUgYGlmR05VbWFrZScgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lzZSBpdAorIyAgIGlzIHNldCB0byAiIyIuIFRoaXMgaXMgdXNlZnVsIGZvciBpbmNsdWRpbmcgYSBzcGVjaWFsIGZlYXR1cmVzIGluIGEKKyMgICBNYWtlZmlsZSwgd2hpY2ggY2Fubm90IGJlIGhhbmRsZWQgYnkgb3RoZXIgdmVyc2lvbnMgb2YgbWFrZS4gVGhlCisjICAgdmFyaWFibGUgX2N2X2dudV9tYWtlX2NvbW1hbmQgaXMgc2V0IHRvIHRoZSBjb21tYW5kIHRvIGludm9rZSBHTlUgbWFrZQorIyAgIGlmIGl0IGV4aXN0cywgdGhlIGVtcHR5IHN0cmluZyBvdGhlcndpc2UuCisjCisjICAgSGVyZSBpcyBhbiBleGFtcGxlIG9mIGl0cyB1c2U6CisjCisjICAgTWFrZWZpbGUuaW4gbWlnaHQgY29udGFpbjoKKyMKKyMgICAgICAgIyBBIGZhaWxzYWZlIHdheSBvZiBwdXR0aW5nIGEgZGVwZW5kZW5jeSBydWxlIGludG8gYSBtYWtlZmlsZQorIyAgICAgICAkKERFUEVORCk6CisjICAgICAgICAgICAgICAgJChDQykgLU1NICQoc3JjZGlyKS8qLmMgPiAkKERFUEVORCkKKyMKKyMgICAgICAgQGlmR05VbWFrZUAgaWZlcSAoJChERVBFTkQpLCQod2lsZGNhcmQgJChERVBFTkQpKSkKKyMgICAgICAgQGlmR05VbWFrZUAgaW5jbHVkZSAkKERFUEVORCkKKyMgICAgICAgQGlmR05VbWFrZUAgZW5kaWYKKyMKKyMgICBUaGVuIGNvbmZpZ3VyZS5pbiB3b3VsZCBub3JtYWxseSBjb250YWluOgorIworIyAgICAgICBDSEVDS19HTlVfTUFLRSgpCisjICAgICAgIEFDX09VVFBVVChNYWtlZmlsZSkKKyMKKyMgICBUaGVuIHBlcmhhcHMgdG8gY2F1c2UgZ251IG1ha2UgdG8gb3ZlcnJpZGUgYW55IG90aGVyIG1ha2UsIHdlIGNvdWxkIGRvCisjICAgc29tZXRoaW5nIGxpa2UgdGhpcyAobm90ZSB0aGF0IEdOVSBtYWtlIGFsd2F5cyBsb29rcyBmb3IgR05VbWFrZWZpbGUKKyMgICBmaXJzdCk6CisjCisjICAgICAgIGlmICAhIHRlc3QgeCRfY3ZfZ251X21ha2VfY29tbWFuZCA9IHggOyB0aGVuCisjICAgICAgICAgICAgICAgbXYgTWFrZWZpbGUgR05VbWFrZWZpbGUKKyMgICAgICAgICAgICAgICBlY2hvIC5ERUZBVUxUOiA+IE1ha2VmaWxlIDsKKyMgICAgICAgICAgICAgICBlY2hvIFwgICRfY3ZfZ251X21ha2VfY29tbWFuZCBcJEAgPj4gTWFrZWZpbGU7CisjICAgICAgIGZpCisjCisjICAgVGhlbiwgaWYgYW55ICh3ZWxsIGFsbW9zdCBhbnkpIG90aGVyIG1ha2UgaXMgY2FsbGVkLCBhbmQgR05VIG1ha2UgYWxzbworIyAgIGV4aXN0cywgdGhlbiB0aGUgb3RoZXIgbWFrZSB3cmFwcyB0aGUgR05VIG1ha2UuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggSm9obiBEYXJyaW5ndG9uIDxqLmRhcnJpbmd0b25AZWx2aXMubXVyZG9jaC5lZHUuYXU+CisjCisjICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCisjICAgcGVybWl0dGVkIGluIGFueSBtZWRpdW0gd2l0aG91dCByb3lhbHR5IHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlCisjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuCisjCisjIE5vdGU6IE1vZGlmaWVkIGJ5IFRlZCBUcydvIHRvIGFkZCBAaWZOb3RHTlVNYWtlQAorCitBQ19ERUZVTigKKyAgICAgICAgW0NIRUNLX0dOVV9NQUtFXSwgWyBBQ19DQUNIRV9DSEVDSyggZm9yIEdOVSBtYWtlLF9jdl9nbnVfbWFrZV9jb21tYW5kLAorICAgICAgICAgICAgICAgIF9jdl9nbnVfbWFrZV9jb21tYW5kPScnIDsKK2RubCBTZWFyY2ggYWxsIHRoZSBjb21tb24gbmFtZXMgZm9yIEdOVSBtYWtlCisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJEZPUkNFX05BVElWRV9NQUtFIiA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICBNQUtFUz0ibWFrZSIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgTUFLRVM9Im1ha2UgZ21ha2UgZ251bWFrZSIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZvciBhIGluICIkTUFLRSIgJE1BS0VTIDsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhIiA7IHRoZW4gY29udGludWUgOyBmaSA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKCBzaCAtYyAiJGEgLS12ZXJzaW9uIiAyPiAvZGV2L251bGwgfCBncmVwIEdOVSAgMj4mMSA+IC9kZXYvbnVsbCApIDsgIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2N2X2dudV9tYWtlX2NvbW1hbmQ9JGEgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG9uZSA7CisgICAgICAgICkgOworZG5sIElmIHRoZXJlIHdhcyBhIEdOVSB2ZXJzaW9uLCB0aGVuIHNldCBAaWZHTlVtYWtlQCB0byB0aGUgZW1wdHkgc3RyaW5nLCAnIycgb3RoZXJ3aXNlCisgICAgICAgIGlmIHRlc3QgICJ4JF9jdl9nbnVfbWFrZV9jb21tYW5kIiAhPSAieCIgIDsgdGhlbgorICAgICAgICAgICAgICAgIGlmR05VbWFrZT0nJyA7CisgICAgICAgICAgICAgICAgaWZOb3RHTlVtYWtlPScjJyA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZkdOVW1ha2U9JyMnIDsKKyAgICAgICAgICAgICAgICBpZk5vdEdOVW1ha2U9JycgOworICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoIk5vdCBmb3VuZCIpOworICAgICAgICBmaQorICAgICAgICBBQ19TVUJTVChpZkdOVW1ha2UpCisgICAgICAgIEFDX1NVQlNUKGlmTm90R05VbWFrZSkKK10gKQorIyB3YXMgb3JpZ2luYWxseSBmcm9tIG5scy5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQorQUNfREVGVU4oW0FNX01LSU5TVEFMTERJUlNdLAorWworICBkbmwgSWYgdGhlIEFDX0NPTkZJR19BVVhfRElSIG1hY3JvIGZvciBhdXRvY29uZiBpcyB1c2VkIHdlIHBvc3NpYmx5CisgIGRubCBmaW5kIHRoZSBta2luc3RhbGxkaXJzIHNjcmlwdCBpbiBhbm90aGVyIHN1YmRpciBidXQgJCh0b3Bfc3JjZGlyKS4KKyAgZG5sIFRyeSB0byBsb2NhdGUgaXQuCisgIE1LSU5TVEFMTERJUlM9CisgIGlmIHRlc3QgLW4gIiRhY19hdXhfZGlyIjsgdGhlbgorICAgIGNhc2UgIiRhY19hdXhfZGlyIiBpbgorICAgICAgLyopIE1LSU5TVEFMTERJUlM9IiRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiIDs7CisgICAgICAqKSBNS0lOU1RBTExESVJTPSJcJCh0b3BfYnVpbGRkaXIpLyRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiIDs7CisgICAgZXNhYworICBmaQorICBpZiB0ZXN0IC16ICIkTUtJTlNUQUxMRElSUyI7IHRoZW4KKyAgICBNS0lOU1RBTExESVJTPSJcJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzIgorICBmaQorICBBQ19TVUJTVChNS0lOU1RBTExESVJTKQorXSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9hY2xvY2FsLm00IGIvZTJmc3Byb2dzL2FjbG9jYWwubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmMTIzYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9hY2xvY2FsLm00CkBAIC0wLDAgKzEsNDMzMCBAQAorIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuMTQuMSAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworbTRfaWZuZGVmKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFttNF9kZWZ1bihbX0FNX0NPTkZJR19NQUNST19ESVJTXSwgW10pbTRfZGVmdW4oW0FDX0NPTkZJR19NQUNST19ESVJTXSwgW19BTV9DT05GSUdfTUFDUk9fRElSUygkQCldKV0pCisjIGNvZGVzZXQubTQgc2VyaWFsIDUgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyLCAyMDA2LCAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19ERUZVTihbQU1fTEFOR0lORk9fQ09ERVNFVF0sCitbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVRdLCBbYW1fY3ZfbGFuZ2luZm9fY29kZXNldF0sCisgICAgW0FDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8bGFuZ2luZm8uaD5dXSwKKyAgICAgICAgICBbW2NoYXIqIGNzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHJldHVybiAhY3M7XV0pXSwKKyAgICAgICBbYW1fY3ZfbGFuZ2luZm9fY29kZXNldD15ZXNdLAorICAgICAgIFthbV9jdl9sYW5naW5mb19jb2Rlc2V0PW5vXSkKKyAgICBdKQorICBpZiB0ZXN0ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0xBTkdJTkZPX0NPREVTRVRdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIDxsYW5naW5mby5oPiBhbmQgbmxfbGFuZ2luZm8oQ09ERVNFVCkuXSkKKyAgZmkKK10pCisKK2RubCAnZXh0ZXJuIGlubGluZScgYSBsYSBJU08gQzk5LgorCitkbmwgQ29weXJpZ2h0IDIwMTItMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitBQ19ERUZVTihbZ2xfRVhURVJOX0lOTElORV0sCitbCisgIEFIX1ZFUkJBVElNKFtleHRlcm5faW5saW5lXSwKK1svKiBQbGVhc2Ugc2VlIHRoZSBHbnVsaWIgbWFudWFsIGZvciBob3cgdG8gdXNlIHRoZXNlIG1hY3Jvcy4KKworICAgU3VwcHJlc3MgZXh0ZXJuIGlubGluZSB3aXRoIEhQLVVYIGNjLCBhcyBpdCBhcHBlYXJzIHRvIGJlIGJyb2tlbjsgc2VlCisgICA8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy10ZXhpbmZvLzIwMTMtMDIvbXNnMDAwMzAuaHRtbD4uCisKKyAgIFN1cHByZXNzIGV4dGVybiBpbmxpbmUgd2l0aCBTdW4gQyBpbiBzdGFuZGFyZHMtY29uZm9ybWFuY2UgbW9kZSwgYXMgaXQKKyAgIG1pc2hhbmRsZXMgaW5saW5lIGZ1bmN0aW9ucyB0aGF0IGNhbGwgZWFjaCBvdGhlci4gIEUuZy4sIGZvciAnaW5saW5lIHZvaWQgZgorICAgKHZvaWQpIHsgfSBpbmxpbmUgdm9pZCBnICh2b2lkKSB7IGYgKCk7IH0nLCBjOTkgaW5jb3JyZWN0bHkgY29tcGxhaW5zCisgICAncmVmZXJlbmNlIHRvIHN0YXRpYyBpZGVudGlmaWVyICJmIiBpbiBleHRlcm4gaW5saW5lIGZ1bmN0aW9uJy4KKyAgIFRoaXMgYnVnIHdhcyBvYnNlcnZlZCB3aXRoIFN1biBDIDUuMTIgU3VuT1NfaTM4NiAyMDExLzExLzE2LgorCisgICBTdXBwcmVzcyB0aGUgdXNlIG9mIGV4dGVybiBpbmxpbmUgb24gQXBwbGUncyBwbGF0Zm9ybXMsIGFzIExpYmMgYXQgbGVhc3QKKyAgIHRocm91Z2ggTGliYy04MjUuMjYgKDIwMTMtMDQtMDkpIGlzIGluY29tcGF0aWJsZSB3aXRoIGl0OyBzZWUsIGUuZy4sCisgICA8aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1nbnVsaWIvMjAxMi0xMi9tc2cwMDAyMy5odG1sPi4KKyAgIFBlcmhhcHMgQXBwbGUgd2lsbCBmaXggdGhpcyBzb21lIGRheS4gICovCisjaWYgKChfX0dOVUNfXyBcCisgICAgICA/IGRlZmluZWQgX19HTlVDX1NURENfSU5MSU5FX18gJiYgX19HTlVDX1NURENfSU5MSU5FX18gXAorICAgICAgOiAoMTk5OTAxTCA8PSBfX1NURENfVkVSU0lPTl9fIFwKKyAgICAgICAgICYmICFkZWZpbmVkIF9fSFBfY2MgXAorICAgICAgICAgJiYgIShkZWZpbmVkIF9fU1VOUFJPX0MgJiYgX19TVERDX18pKSkgXAorICAgICAmJiAhZGVmaW5lZCBfX0FQUExFX18pCisjIGRlZmluZSBfR0xfSU5MSU5FIGlubGluZQorIyBkZWZpbmUgX0dMX0VYVEVSTl9JTkxJTkUgZXh0ZXJuIGlubGluZQorI2VsaWYgKDIgPCBfX0dOVUNfXyArICg3IDw9IF9fR05VQ19NSU5PUl9fKSAmJiAhZGVmaW5lZCBfX1NUUklDVF9BTlNJX18gXAorICAgICAgICYmICFkZWZpbmVkIF9fQVBQTEVfXykKKyMgaWYgX19HTlVDX0dOVV9JTkxJTkVfXworICAgLyogX19nbnVfaW5saW5lX18gc3VwcHJlc3NlcyBhIEdDQyA0LjIgZGlhZ25vc3RpYy4gICovCisjICBkZWZpbmUgX0dMX0lOTElORSBleHRlcm4gaW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpCisjIGVsc2UKKyMgIGRlZmluZSBfR0xfSU5MSU5FIGV4dGVybiBpbmxpbmUKKyMgZW5kaWYKKyMgZGVmaW5lIF9HTF9FWFRFUk5fSU5MSU5FIGV4dGVybgorI2Vsc2UKKyMgZGVmaW5lIF9HTF9JTkxJTkUgc3RhdGljIF9HTF9VTlVTRUQKKyMgZGVmaW5lIF9HTF9FWFRFUk5fSU5MSU5FIHN0YXRpYyBfR0xfVU5VU0VECisjZW5kaWYKKworI2lmIDQgPCBfX0dOVUNfXyArICg2IDw9IF9fR05VQ19NSU5PUl9fKQorIyBpZiBkZWZpbmVkIF9fR05VQ19TVERDX0lOTElORV9fICYmIF9fR05VQ19TVERDX0lOTElORV9fCisjICBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfQ09OU1RfUFJBR01BCisjIGVsc2UKKyMgIGRlZmluZSBfR0xfSU5MSU5FX0hFQURFUl9DT05TVF9QUkFHTUEgXAorICAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Y29uc3RcIiIpCisjIGVuZGlmCisgIC8qIFN1cHByZXNzIEdDQydzIGJvZ3VzICJubyBwcmV2aW91cyBwcm90b3R5cGUgZm9yICdGT08nIgorICAgICBhbmQgIm5vIHByZXZpb3VzIGRlY2xhcmF0aW9uIGZvciAnRk9PJyIgIGRpYWdub3N0aWNzLAorICAgICB3aGVuIEZPTyBpcyBhbiBpbmxpbmUgZnVuY3Rpb24gaW4gdGhlIGhlYWRlcjsgc2VlCisgICAgIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU0MTEzPi4gICovCisjIGRlZmluZSBfR0xfSU5MSU5FX0hFQURFUl9CRUdJTiBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHB1c2giKSBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV21pc3NpbmctcHJvdG90eXBlc1wiIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdtaXNzaW5nLWRlY2xhcmF0aW9uc1wiIikgXAorICAgIF9HTF9JTkxJTkVfSEVBREVSX0NPTlNUX1BSQUdNQQorIyBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfRU5EIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgcG9wIikKKyNlbHNlCisjIGRlZmluZSBfR0xfSU5MSU5FX0hFQURFUl9CRUdJTgorIyBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfRU5ECisjZW5kaWZdKQorXSkKKworIyBmY250bC1vLm00IHNlcmlhbCA0CitkbmwgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA5LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIFdyaXR0ZW4gYnkgUGF1bCBFZ2dlcnQuCisKKyMgVGVzdCB3aGV0aGVyIHRoZSBmbGFncyBPX05PQVRJTUUgYW5kIE9fTk9GT0xMT1cgYWN0dWFsbHkgd29yay4KKyMgRGVmaW5lIEhBVkVfV09SS0lOR19PX05PQVRJTUUgdG8gMSBpZiBPX05PQVRJTUUgd29ya3MsIG9yIHRvIDAgb3RoZXJ3aXNlLgorIyBEZWZpbmUgSEFWRV9XT1JLSU5HX09fTk9GT0xMT1cgdG8gMSBpZiBPX05PRk9MTE9XIHdvcmtzLCBvciB0byAwIG90aGVyd2lzZS4KK0FDX0RFRlVOKFtnbF9GQ05UTF9PX0ZMQUdTXSwKK1sKKyAgZG5sIFBlcnN1YWRlIGdsaWJjIDxmY250bC5oPiB0byBkZWZpbmUgT19OT0FUSU1FIGFuZCBPX05PRk9MTE9XLgorICBkbmwgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIHdhcyBpbnRyb2R1Y2VkIGluIGF1dG9jb25mIDIuNjAgYW5kIG9ic29sZXRlcworICBkbmwgQUNfR05VX1NPVVJDRS4KKyAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sCisgICAgW0FDX1JFUVVJUkUoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10pXSwKKyAgICBbQUNfUkVRVUlSRShbQUNfR05VX1NPVVJDRV0pXSkKKworICBBQ19DSEVDS19IRUFERVJTX09OQ0UoW3VuaXN0ZC5oXSkKKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbc3ltbGlua10pCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd29ya2luZyBmY250bC5oXSwgW2dsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2hdLAorICAgIFtBQ19SVU5fSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICAgICAgICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICAgICAgICAgICAjaWYgSEFWRV9VTklTVERfSAorICAgICAgICAgICAjIGluY2x1ZGUgPHVuaXN0ZC5oPgorICAgICAgICAgICAjZWxzZSAvKiBvbiBXaW5kb3dzIHdpdGggTVNWQyAqLworICAgICAgICAgICAjIGluY2x1ZGUgPGlvLmg+CisgICAgICAgICAgICMgaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICMgZGVmaW5lZCBzbGVlcChuKSBfc2xlZXAgKChuKSAqIDEwMDApCisgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAjaW5jbHVkZSA8ZmNudGwuaD4KKyAgICAgICAgICAgI2lmbmRlZiBPX05PQVRJTUUKKyAgICAgICAgICAgICNkZWZpbmUgT19OT0FUSU1FIDAKKyAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICNpZm5kZWYgT19OT0ZPTExPVworICAgICAgICAgICAgI2RlZmluZSBPX05PRk9MTE9XIDAKKyAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgIHN0YXRpYyBpbnQgY29uc3QgY29uc3RhbnRzW10gPQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBPX0NSRUFULCBPX0VYQ0wsIE9fTk9DVFRZLCBPX1RSVU5DLCBPX0FQUEVORCwKKyAgICAgICAgICAgICAgT19OT05CTE9DSywgT19TWU5DLCBPX0FDQ01PREUsIE9fUkRPTkxZLCBPX1JEV1IsIE9fV1JPTkxZCisgICAgICAgICAgICB9OworICAgICAgICAgIF1dLAorICAgICAgICAgIFtbCisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gIWNvbnN0YW50czsKKyAgICAgICAgICAgICNpZiBIQVZFX1NZTUxJTksKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNoYXIgY29uc3Qgc3ltW10gPSAiY29uZnRlc3Quc3ltIjsKKyAgICAgICAgICAgICAgaWYgKHN5bWxpbmsgKCIvZGV2L251bGwiLCBzeW0pICE9IDApCisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDI7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpbnQgZmQgPSBvcGVuIChzeW0sIE9fV1JPTkxZIHwgT19OT0ZPTExPVyB8IE9fQ1JFQVQsIDApOworICAgICAgICAgICAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjbG9zZSAoZmQpOworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAodW5saW5rIChzeW0pICE9IDAgfHwgc3ltbGluayAoIi4iLCBzeW0pICE9IDApCisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDI7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBpbnQgZmQgPSBvcGVuIChzeW0sIE9fUkRPTkxZIHwgT19OT0ZPTExPVyk7CisgICAgICAgICAgICAgICAgICBpZiAoZmQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGNsb3NlIChmZCk7CisgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIHVubGluayAoc3ltKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgeworICAgICAgICAgICAgICBzdGF0aWMgY2hhciBjb25zdCBmaWxlW10gPSAiY29uZmRlZnMuaCI7CisgICAgICAgICAgICAgIGludCBmZCA9IG9wZW4gKGZpbGUsIE9fUkRPTkxZIHwgT19OT0FUSU1FKTsKKyAgICAgICAgICAgICAgaWYgKGZkIDwgMCkKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gODsKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0MDsKKyAgICAgICAgICAgICAgICAgIGlmIChmc3RhdCAoZmQsICZzdDApICE9IDApCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAxNjsKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgIGNoYXIgYzsKKyAgICAgICAgICAgICAgICAgICAgICBzbGVlcCAoMSk7CisgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWQgKGZkLCAmYywgMSkgIT0gMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAyNDsKKyAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbG9zZSAoZmQpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDMyOworICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3QxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXQgKGZpbGUsICZzdDEpICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA0MDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0MC5zdF9hdGltZSAhPSBzdDEuc3RfYXRpbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDY0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XV0pXSwKKyAgICAgICBbZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD15ZXNdLAorICAgICAgIFtjYXNlICQ/IGluICMoCisgICAgICAgIDQpIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9J25vIChiYWQgT19OT0ZPTExPVyknOzsgIygKKyAgICAgICAgNjQpIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9J25vIChiYWQgT19OT0FUSU1FKSc7OyAjKAorICAgICAgICA2OCkgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD0nbm8gKGJhZCBPX05PQVRJTUUsIE9fTk9GT0xMT1cpJzs7ICMoCisgICAgICAgICAqKSBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oPSdubyc7OworICAgICAgICBlc2FjXSwKKyAgICAgICBbZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD1jcm9zcy1jb21waWxpbmddKV0pCisKKyAgY2FzZSAkZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaCBpbiAjKAorICAqT19OT0FUSU1FKiB8IG5vIHwgY3Jvc3MtY29tcGlsaW5nKSBhY192YWw9MDs7ICMoCisgICopIGFjX3ZhbD0xOzsKKyAgZXNhYworICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfV09SS0lOR19PX05PQVRJTUVdLCBbJGFjX3ZhbF0sCisgICAgW0RlZmluZSB0byAxIGlmIE9fTk9BVElNRSB3b3Jrcy5dKQorCisgIGNhc2UgJGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2ggaW4gIygKKyAgKk9fTk9GT0xMT1cqIHwgbm8gfCBjcm9zcy1jb21waWxpbmcpIGFjX3ZhbD0wOzsgIygKKyAgKikgYWNfdmFsPTE7OworICBlc2FjCisgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9XT1JLSU5HX09fTk9GT0xMT1ddLCBbJGFjX3ZhbF0sCisgICAgW0RlZmluZSB0byAxIGlmIE9fTk9GT0xMT1cgd29ya3MuXSkKK10pCisKKyMgZ2V0dGV4dC5tNCBzZXJpYWwgNjYgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDYsIDIwMDgtMjAxMC4KKworZG5sIE1hY3JvIHRvIGFkZCBmb3IgdXNpbmcgR05VIGdldHRleHQuCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFQoW0lOVExTWU1CT0xdLCBbTkVFRFNZTUJPTF0sIFtJTlRMRElSXSkuCitkbmwgSU5UTFNZTUJPTCBjYW4gYmUgb25lIG9mICdleHRlcm5hbCcsICduby1saWJ0b29sJywgJ3VzZS1saWJ0b29sJy4gVGhlCitkbmwgICAgZGVmYXVsdCAoaWYgaXQgaXMgbm90IHNwZWNpZmllZCBvciBlbXB0eSkgaXMgJ25vLWxpYnRvb2wnLgorZG5sICAgIElOVExTWU1CT0wgc2hvdWxkIGJlICdleHRlcm5hbCcgZm9yIHBhY2thZ2VzIHdpdGggbm8gaW50bCBkaXJlY3RvcnksCitkbmwgICAgYW5kICduby1saWJ0b29sJyBvciAndXNlLWxpYnRvb2wnIGZvciBwYWNrYWdlcyB3aXRoIGFuIGludGwgZGlyZWN0b3J5LgorZG5sICAgIElmIElOVExTWU1CT0wgaXMgJ3VzZS1saWJ0b29sJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeQorZG5sICAgICQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwubGEgd2lsbCBiZSBjcmVhdGVkIChzaGFyZWQgYW5kL29yIHN0YXRpYywKK2RubCAgICBkZXBlbmRpbmcgb24gLS17ZW5hYmxlLGRpc2FibGV9LXtzaGFyZWQsc3RhdGljfSBhbmQgb24gdGhlIHByZXNlbmNlIG9mCitkbmwgICAgQU0tRElTQUJMRS1TSEFSRUQpLiBJZiBJTlRMU1lNQk9MIGlzICduby1saWJ0b29sJywgYSBzdGF0aWMgbGlicmFyeQorZG5sICAgICQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwuYSB3aWxsIGJlIGNyZWF0ZWQuCitkbmwgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzICduZWVkLW5nZXR0ZXh0JywgdGhlbiBHTlUgZ2V0dGV4dAorZG5sICAgIGltcGxlbWVudGF0aW9ucyAoaW4gbGliYyBvciBsaWJpbnRsKSB3aXRob3V0IHRoZSBuZ2V0dGV4dCgpIGZ1bmN0aW9uCitkbmwgICAgd2lsbCBiZSBpZ25vcmVkLiAgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzCitkbmwgICAgJ25lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcycsIHRoZW4gR05VIGdldHRleHQgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QKK2RubCAgICBzdXBwb3J0IHRoZSBJU08gQyA5OSA8aW50dHlwZXMuaD4gZm9ybWF0c3RyaW5nIG1hY3JvcyB3aWxsIGJlIGlnbm9yZWQuCitkbmwgSU5UTERJUiBpcyB1c2VkIHRvIGZpbmQgdGhlIGludGwgbGlicmFyaWVzLiAgSWYgZW1wdHksCitkbmwgICAgdGhlIHZhbHVlICckKHRvcF9idWlsZGRpcikvaW50bC8nIGlzIHVzZWQuCitkbmwKK2RubCBUaGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIG9uZSBvZiB0aHJlZSBjYXNlczoKK2RubCAxKSBHTlUgZ2V0dGV4dCwgYXMgaW5jbHVkZWQgaW4gdGhlIGludGwgc3ViZGlyZWN0b3J5LCB3aWxsIGJlIGNvbXBpbGVkCitkbmwgICAgYW5kIHVzZWQuCitkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCitkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKK2RubCAyKSBHTlUgZ2V0dGV4dCBoYXMgYmVlbiBmb3VuZCBpbiB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LgorZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCitkbmwgMykgTm8gaW50ZXJuYXRpb25hbGl6YXRpb24sIGFsd2F5cyB1c2UgRW5nbGlzaCBtc2dpZC4KK2RubCAgICBDYXRhbG9nIGZvcm1hdDogbm9uZQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiBub25lCitkbmwgSWYgSU5UTFNZTUJPTCBpcyAnZXh0ZXJuYWwnLCBvbmx5IGNhc2VzIDIgYW5kIDMgY2FuIG9jY3VyLgorZG5sIFRoZSB1c2Ugb2YgLmdtbyBpcyBoaXN0b3JpY2FsIChpdCB3YXMgbmVlZGVkIHRvIGF2b2lkIG92ZXJ3cml0aW5nIHRoZQorZG5sIEdOVSBmb3JtYXQgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBvbiBhIHBsYXRmb3JtIHdpdGggYW4gWC9PcGVuIGdldHRleHQpLAorZG5sIGJ1dCB3ZSBrZWVwIGl0IGluIG9yZGVyIG5vdCB0byBmb3JjZSBpcnJlbGV2YW50IGZpbGVuYW1lIGNoYW5nZXMgb24gdGhlCitkbmwgbWFpbnRhaW5lcnMuCitkbmwKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF0sCitbCisgIGRubCBBcmd1bWVudCBjaGVja2luZy4KKyAgaWZlbHNlKFskMV0sIFtdLCAsIFtpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgLCBbaWZlbHNlKFskMV0sIFtuby1saWJ0b29sXSwgLCBbaWZlbHNlKFskMV0sIFt1c2UtbGlidG9vbF0sICwKKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IHRvIEFNX0dOVV9HRVRURVhUCitdKV0pXSldKV0pCisgIGlmZWxzZShpZmVsc2UoWyQxXSwgW10sIFtvbGRdKVtdaWZlbHNlKFskMV0sIFtuby1saWJ0b29sXSwgW29sZF0pLCBbb2xkXSwKKyAgICBbQUNfRElBR05PU0UoW29ic29sZXRlXSwgW1VzZSBvZiBBTV9HTlVfR0VUVEVYVCB3aXRob3V0IFtleHRlcm5hbF0gYXJndW1lbnQgaXMgZGVwcmVjYXRlZC5dKV0pCisgIGlmZWxzZShbJDJdLCBbXSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgLCBbaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLCAsCisgICAgW2VycnByaW50KFtFUlJPUjogaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgdG8gQU1fR05VX0dFVFRFWFQKK10pXSldKV0pCisgIGRlZmluZShbZ3RfaW5jbHVkZWRfaW50bF0sCisgICAgaWZlbHNlKFskMV0sIFtleHRlcm5hbF0sCisgICAgICBpZmRlZihbQU1fR05VX0dFVFRFWFRfXVtJTlRMX1NVQkRJUl0sIFt5ZXNdLCBbbm9dKSwKKyAgICAgIFt5ZXNdKSkKKyAgZGVmaW5lKFtndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXhdLCBpZmVsc2UoWyQxXSwgW3VzZS1saWJ0b29sXSwgW2xdLCBbXSkpCisgIGd0X05FRURTX0lOSVQKKyAgQU1fR05VX0dFVFRFWFRfTkVFRChbJDJdKQorCisgIEFDX1JFUVVJUkUoW0FNX1BPX1NVQkRJUlNdKWRubAorICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgQUNfUkVRVUlSRShbQU1fSU5UTF9TVUJESVJdKWRubAorICBdKQorCisgIGRubCBQcmVyZXF1aXNpdGVzIG9mIEFDX0xJQl9MSU5LRkxBR1NfQk9EWS4KKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKworICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCisgIGRubCBJZGVhbGx5IHdlIHdvdWxkIGRvIHRoaXMgc2VhcmNoIG9ubHkgYWZ0ZXIgdGhlCisgIGRubCAgICAgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisgIGRubCAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorICBkbmwgdGVzdHMuIEJ1dCBpZiBjb25maWd1cmUuaW4gaW52b2tlcyBBTV9JQ09OViBhZnRlciBBTV9HTlVfR0VUVEVYVAorICBkbmwgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd291bGQgbmVlZCB0byBjb250YWluIHRoZSBzYW1lIHNoZWxsIGNvZGUKKyAgZG5sIGFnYWluLCBvdXRzaWRlIGFueSAnaWYnLiBUaGVyZSBhcmUgdHdvIHNvbHV0aW9uczoKKyAgZG5sIC0gSW52b2tlIEFNX0lDT05WX0xJTktGTEFHU19CT0RZIGhlcmUsIG91dHNpZGUgYW55ICdpZicuCisgIGRubCAtIENvbnRyb2wgdGhlIGV4cGFuc2lvbnMgaW4gbW9yZSBkZXRhaWwgdXNpbmcgQUNfUFJPVklERV9JRkVMU0UuCisgIGRubCBTaW5jZSBBQ19QUk9WSURFX0lGRUxTRSBpcyBvbmx5IGluIGF1dG9jb25mID49IDIuNTIgYW5kIG5vdAorICBkbmwgZG9jdW1lbnRlZCwgd2UgYXZvaWQgaXQuCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWworICAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKKyAgXSkKKworICBkbmwgU29tZXRpbWVzLCBvbiBNYWMgT1MgWCwgbGliaW50bCByZXF1aXJlcyBsaW5raW5nIHdpdGggQ29yZUZvdW5kYXRpb24uCisgIGd0X0lOVExfTUFDT1NYCisKKyAgZG5sIFNldCBVU0VfTkxTLgorICBBQ19SRVFVSVJFKFtBTV9OTFNdKQorCisgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPW5vCisgICAgVVNFX0lOQ0xVREVEX0xJQklOVEw9bm8KKyAgXSkKKyAgTElCSU5UTD0KKyAgTFRMSUJJTlRMPQorICBQT1NVQj0KKworICBkbmwgQWRkIGEgdmVyc2lvbiBudW1iZXIgdG8gdGhlIGNhY2hlIG1hY3Jvcy4KKyAgY2FzZSAiICRndF9uZWVkcyAiIGluCisgICAgKiIgbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zICIqKSBndF9hcGlfdmVyc2lvbj0zIDs7CisgICAgKiIgbmVlZC1uZ2V0dGV4dCAiKikgZ3RfYXBpX3ZlcnNpb249MiA7OworICAgICopIGd0X2FwaV92ZXJzaW9uPTEgOzsKKyAgZXNhYworICBndF9mdW5jX2dudWdldHRleHRfbGliYz0iZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0JHtndF9hcGlfdmVyc2lvbn1fbGliYyIKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmludGwiCisKKyAgZG5sIElmIHdlIHVzZSBOTFMgZmlndXJlIG91dCB3aGF0IG1ldGhvZAorICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD1ubworICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnZXR0ZXh0IGlzIHJlcXVlc3RlZF0pCisgICAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtZ2V0dGV4dF0sCisgICAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHVzZSB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpbmNsdWRlZCBoZXJlXSwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbCwKKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD1ubykKKyAgICAgIEFDX01TR19SRVNVTFQoWyRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0XSkKKworICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD0iJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiCisgICAgICBpZiB0ZXN0ICIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKyAgICBdKQorICAgICAgICBkbmwgVXNlciBkb2VzIG5vdCBpbnNpc3Qgb24gdXNpbmcgR05VIE5MUyBsaWJyYXJ5LiAgRmlndXJlIG91dCB3aGF0CisgICAgICAgIGRubCB0byB1c2UuICBJZiBHTlUgZ2V0dGV4dCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMuICBFbHNlIHdlIGhhdmUKKyAgICAgICAgZG5sIHRvIGZhbGwgYmFjayB0byBHTlUgTkxTIGxpYnJhcnkuCisKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDM7IHRoZW4KKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9JworI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKKyNlbmRpZgorY2hhbmdlcXVvdGUoLClkbmwKK3R5cGVkZWYgaW50IGFycmF5IFsyICogKF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKDApID49IDEpIC0gMV07CitjaGFuZ2VxdW90ZShbLF0pZG5sCisnCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9CisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAyOyB0aGVuCisgICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9JyArICogbmdldHRleHQgKCIiLCAiIiwgMCknCisgICAgICAgIGVsc2UKKyAgICAgICAgICBndF9leHByZXNzaW9uX3Rlc3RfY29kZT0KKyAgICAgICAgZmkKKworICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmNdLCBbJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjXSwKKyAgICAgICAgIFtBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyRndF9yZXZpc2lvbl90ZXN0X2NvZGUKK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybiBpbnQgKl9ubF9kb21haW5fYmluZGluZ3M7CisgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgIFtbCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2RvbWFpbl9iaW5kaW5ncworICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9eWVzIl0sCisgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjPW5vIl0pXSkKKworICAgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliYyI7IHRlc3QgIiRndF92YWwiICE9ICJ5ZXMiOyB9OyB0aGVuCisgICAgICAgICAgZG5sIFNvbWV0aW1lcyBsaWJpbnRsIHJlcXVpcmVzIGxpYmljb252LCBzbyBmaXJzdCBzZWFyY2ggZm9yIGxpYmljb252LgorICAgICAgICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsICwgWworICAgICAgICAgICAgQU1fSUNPTlZfTElOSworICAgICAgICAgIF0pCisgICAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliaW50bCBhbmQgZGVmaW5lIExJQklOVEwsIExUTElCSU5UTCBhbmQgSU5DSU5UTAorICAgICAgICAgIGRubCBhY2NvcmRpbmdseS4gRG9uJ3QgdXNlIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbaW50bF0sW2ljb252XSkKKyAgICAgICAgICBkbmwgYmVjYXVzZSB0aGF0IHdvdWxkIGFkZCAiLWxpY29udiIgdG8gTElCSU5UTCBhbmQgTFRMSUJJTlRMCisgICAgICAgICAgZG5sIGV2ZW4gaWYgbGliaWNvbnYgZG9lc24ndCBleGlzdC4KKyAgICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2ludGxdKQorICAgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgR05VIGdldHRleHQgaW4gbGliaW50bF0sCisgICAgICAgICAgICBbJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsXSwKKyAgICAgICAgICAgW2d0X3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0lOVEwiCisgICAgICAgICAgICBndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICAgICAgTElCUz0iJExJQlMgJExJQklOVEwiCisgICAgICAgICAgICBkbmwgTm93IHNlZSB3aGV0aGVyIGxpYmludGwgZXhpc3RzIGFuZCBkb2VzIG5vdCBkZXBlbmQgb24gbGliaWNvbnYuCisgICAgICAgICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKCIiKQorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyJdLAorICAgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPW5vIl0pCisgICAgICAgICAgICBkbmwgTm93IHNlZSB3aGV0aGVyIGxpYmludGwgZXhpc3RzIGFuZCBkZXBlbmRzIG9uIGxpYmljb252LgorICAgICAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiAhPSB5ZXM7IH0gJiYgdGVzdCAtbiAiJExJQklDT05WIjsgdGhlbgorICAgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICAgICAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CisgICAgICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAgICAgICAgICAgW1sKK2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOworcmV0dXJuICogZ2V0dGV4dCAoIiIpJGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgiIikKKyAgICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICAgIFtMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKKyAgICAgICAgICAgICAgICAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyIKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIENQUEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKKyAgICAgICAgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgICAgICAgZmkKKworICAgICAgICBkbmwgSWYgYW4gYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZCBHTlUgZ2V0dGV4dCgpIGlzIGZvdW5kLAorICAgICAgICBkbmwgdXNlIGl0LiAgQnV0IGlmIHRoaXMgbWFjcm8gaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCwgYW5kIEdOVQorICAgICAgICBkbmwgZ2V0dGV4dCBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBpbiBsaWJpbnRsLCB3ZSB1cGRhdGUgdGhpcworICAgICAgICBkbmwgbGliaW50bC4gIChDZi4gdGhlIGluc3RhbGwgcnVsZSBpbiBpbnRsL01ha2VmaWxlLmluLikKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9IFwKKyAgICAgICAgICAgfHwgeyB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH0gXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXJ1bnRpbWUgXAorICAgICAgICAgICAgICAgICYmIHRlc3QgIiRQQUNLQUdFIiAhPSBnZXR0ZXh0LXRvb2xzOyB9OyB0aGVuCisgICAgICAgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PXllcworICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFJlc2V0IHRoZSB2YWx1ZXMgc2V0IGJ5IHNlYXJjaGluZyBmb3IgbGliaW50bC4KKyAgICAgICAgICBMSUJJTlRMPQorICAgICAgICAgIExUTElCSU5UTD0KKyAgICAgICAgICBJTkNJTlRMPQorICAgICAgICBmaQorCisgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgorICAgICAgICAgIGRubCBHTlUgZ2V0dGV4dCBpcyBub3QgZm91bmQgaW4gdGhlIEMgbGlicmFyeS4KKyAgICAgICAgICBkbmwgRmFsbCBiYWNrIG9uIGluY2x1ZGVkIEdOVSBnZXR0ZXh0IGxpYnJhcnkuCisgICAgICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD15ZXMKKyAgICAgICAgZmkKKyAgICAgIGZpCisKKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdXNlZCB0byBnZW5lcmF0ZSBHTlUgTkxTIGxpYnJhcnkuCisgICAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCisgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5bXWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeFtdYSAkTElCSUNPTlYgJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJJTlRMPSJpZmVsc2UoWyQzXSxbXSxcJHt0b3BfYnVpbGRkaXJ9L2ludGwsWyQzXSkvbGliaW50bC5bXWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeFtdYSAkTFRMSUJJQ09OViAkTFRMSUJUSFJFQUQiCisgICAgICAgIExJQlM9YGVjaG8gIiAkTElCUyAiIHwgc2VkIC1lICdzLyAtbGludGwgLyAvJyAtZSAncy9eIC8vJyAtZSAncy8gJC8vJ2AKKyAgICAgIGZpCisKKyAgICAgIENBVE9CSkVYVD0KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB0byB1c2UgR05VIGdldHRleHQgdG9vbHMuCisgICAgICAgIENBVE9CSkVYVD0uZ21vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0IC1uICIkSU5UTF9NQUNPU1hfTElCUyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgZG5sIFNvbWUgZXh0cmEgZmxhZ3MgYXJlIG5lZWRlZCBkdXJpbmcgbGlua2luZy4KKyAgICAgICAgTElCSU5UTD0iJExJQklOVEwgJElOVExfTUFDT1NYX0xJQlMiCisgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkSU5UTF9NQUNPU1hfTElCUyIKKyAgICAgIGZpCisgICAgZmkKKworICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBBQ19ERUZJTkUoW0VOQUJMRV9OTFNdLCBbMV0sCisgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlIGxhbmd1YWdlCisgICBpcyByZXF1ZXN0ZWQuXSkKKyAgICBlbHNlCisgICAgICBVU0VfTkxTPW5vCisgICAgZmkKKyAgZmkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE5MU10pCisgIEFDX01TR19SRVNVTFQoWyRVU0VfTkxTXSkKKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb21dKQorICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCisgICAgICBlbHNlCisgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIEFDX01TR19SRVNVTFQoWyRndF9zb3VyY2VdKQorICBmaQorCisgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH07IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmludGxdKQorICAgICAgICBBQ19NU0dfUkVTVUxUKFskTElCSU5UTF0pCisgICAgICAgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ0lOVExdKQorICAgICAgZmkKKworICAgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIHBhY2thZ2VzIG1heSBiZSB1c2luZyB0aGlzLgorICAgICAgQUNfREVGSU5FKFtIQVZFX0dFVFRFWFRdLCBbMV0sCisgICAgICAgW0RlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgICBBQ19ERUZJTkUoW0hBVkVfRENHRVRURVhUXSwgWzFdLAorICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBkY2dldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCisgICAgZmkKKworICAgIGRubCBXZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHBvLyBkaXJlY3RvcnkuCisgICAgUE9TVUI9cG8KKyAgZmkKKworICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgZG5sIElmIHRoaXMgaXMgdXNlZCBpbiBHTlUgZ2V0dGV4dCB3ZSBoYXZlIHRvIHNldCBCVUlMRF9JTkNMVURFRF9MSUJJTlRMCisgICAgZG5sIHRvICd5ZXMnIGJlY2F1c2Ugc29tZSBvZiB0aGUgdGVzdHN1aXRlIHJlcXVpcmVzIGl0LgorICAgIGlmIHRlc3QgIiRQQUNLQUdFIiA9IGdldHRleHQtcnVudGltZSB8fCB0ZXN0ICIkUEFDS0FHRSIgPSBnZXR0ZXh0LXRvb2xzOyB0aGVuCisgICAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPXllcworICAgIGZpCisKKyAgICBkbmwgTWFrZSBhbGwgdmFyaWFibGVzIHdlIHVzZSBrbm93biB0byBhdXRvY29uZi4KKyAgICBBQ19TVUJTVChbQlVJTERfSU5DTFVERURfTElCSU5UTF0pCisgICAgQUNfU1VCU1QoW1VTRV9JTkNMVURFRF9MSUJJTlRMXSkKKyAgICBBQ19TVUJTVChbQ0FUT0JKRVhUXSkKKworICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBjb25maWd1cmUuaW5zIG1heSBiZSB1c2luZyB0aGlzLgorICAgIG5sc19jdl9oZWFkZXJfaW50bD0KKyAgICBubHNfY3ZfaGVhZGVyX2xpYmd0PQorCisgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KKyAgICBEQVRBRElSTkFNRT1zaGFyZQorICAgIEFDX1NVQlNUKFtEQVRBRElSTkFNRV0pCisKKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgorICAgIElOU1RPQkpFWFQ9Lm1vCisgICAgQUNfU1VCU1QoW0lOU1RPQkpFWFRdKQorCisgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KKyAgICBHRU5DQVQ9Z2VuY2F0CisgICAgQUNfU1VCU1QoW0dFTkNBVF0pCisKKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgorICAgIElOVExPQkpTPQorICAgIGlmIHRlc3QgIiRVU0VfSU5DTFVERURfTElCSU5UTCIgPSB5ZXM7IHRoZW4KKyAgICAgIElOVExPQkpTPSJcJChHRVRUT0JKUykiCisgICAgZmkKKyAgICBBQ19TVUJTVChbSU5UTE9CSlNdKQorCisgICAgZG5sIEVuYWJsZSBsaWJ0b29sIHN1cHBvcnQgaWYgdGhlIHN1cnJvdW5kaW5nIHBhY2thZ2Ugd2lzaGVzIGl0LgorICAgIElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYPWd0X2xpYnRvb2xfc3VmZml4X3ByZWZpeAorICAgIEFDX1NVQlNUKFtJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWF0pCisgIF0pCisKKyAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KKyAgSU5UTExJQlM9IiRMSUJJTlRMIgorICBBQ19TVUJTVChbSU5UTExJQlNdKQorCisgIGRubCBNYWtlIGFsbCBkb2N1bWVudGVkIHZhcmlhYmxlcyBrbm93biB0byBhdXRvY29uZi4KKyAgQUNfU1VCU1QoW0xJQklOVExdKQorICBBQ19TVUJTVChbTFRMSUJJTlRMXSkKKyAgQUNfU1VCU1QoW1BPU1VCXSkKK10pCisKKworZG5sIGd0X05FRURTX0lOSVQgZW5zdXJlcyB0aGF0IHRoZSBndF9uZWVkcyB2YXJpYWJsZSBpcyBpbml0aWFsaXplZC4KK200X2RlZmluZShbZ3RfTkVFRFNfSU5JVF0sCitbCisgIG00X2RpdmVydF90ZXh0KFtERUZBVUxUU10sIFtndF9uZWVkcz1dKQorICBtNF9kZWZpbmUoW2d0X05FRURTX0lOSVRdLCBbXSkKK10pCisKKworZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVF9ORUVEKFtORUVEU1lNQk9MXSkKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF9ORUVEXSwKK1sKKyAgbTRfZGl2ZXJ0X3RleHQoW0lOSVRfUFJFUEFSRV0sIFtndF9uZWVkcz0iJGd0X25lZWRzICQxIl0pCitdKQorCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbZ2V0dGV4dC12ZXJzaW9uXSkKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF9WRVJTSU9OXSwgW10pCisKKyMgZ2xpYmMyLm00IHNlcmlhbCAzCitkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIDIwMDQsIDIwMDgsIDIwMTAtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCitkbmwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgVGVzdCBmb3IgdGhlIEdOVSBDIExpYnJhcnksIHZlcnNpb24gMi4wIG9yIG5ld2VyLgorIyBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfREVGVU4oW2d0X0dMSUJDMl0sCisgIFsKKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExpYnJhcnkgMiBvciBuZXdlcl0sCisgICAgICBbYWNfY3ZfZ251X2xpYnJhcnlfMl0sCisgICAgICBbQUNfRUdSRVBfQ1BQKFtMdWNreSBHTlUgdXNlcl0sCisgICAgICAgIFsKKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgorI2lmZGVmIF9fR05VX0xJQlJBUllfXworICNpZiAoX19HTElCQ19fID49IDIpICYmICFkZWZpbmVkIF9fVUNMSUJDX18KKyAgTHVja3kgR05VIHVzZXIKKyAjZW5kaWYKKyNlbmRpZgorICAgICAgICBdLAorICAgICAgICBbYWNfY3ZfZ251X2xpYnJhcnlfMj15ZXNdLAorICAgICAgICBbYWNfY3ZfZ251X2xpYnJhcnlfMj1ub10pCisgICAgICBdCisgICAgKQorICAgIEFDX1NVQlNUKFtHTElCQzJdKQorICAgIEdMSUJDMj0iJGFjX2N2X2dudV9saWJyYXJ5XzIiCisgIF0KKykKKworIyBnbGliYzIxLm00IHNlcmlhbCA1CitkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIsIDIwMDQsIDIwMDgsIDIwMTAtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCitkbmwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgVGVzdCBmb3IgdGhlIEdOVSBDIExpYnJhcnksIHZlcnNpb24gMi4xIG9yIG5ld2VyLCBvciB1Q2xpYmMuCisjIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19ERUZVTihbZ2xfR0xJQkMyMV0sCisgIFsKKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExpYnJhcnkgPj0gMi4xIG9yIHVDbGliY10sCisgICAgICBbYWNfY3ZfZ251X2xpYnJhcnlfMl8xXSwKKyAgICAgIFtBQ19FR1JFUF9DUFAoW0x1Y2t5XSwKKyAgICAgICAgWworI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWZkZWYgX19HTlVfTElCUkFSWV9fCisgI2lmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSkgfHwgKF9fR0xJQkNfXyA+IDIpCisgIEx1Y2t5IEdOVSB1c2VyCisgI2VuZGlmCisjZW5kaWYKKyNpZmRlZiBfX1VDTElCQ19fCisgTHVja3kgdXNlcgorI2VuZGlmCisgICAgICAgIF0sCisgICAgICAgIFthY19jdl9nbnVfbGlicmFyeV8yXzE9eWVzXSwKKyAgICAgICAgW2FjX2N2X2dudV9saWJyYXJ5XzJfMT1ub10pCisgICAgICBdCisgICAgKQorICAgIEFDX1NVQlNUKFtHTElCQzIxXSkKKyAgICBHTElCQzIxPSIkYWNfY3ZfZ251X2xpYnJhcnlfMl8xIgorICBdCispCisKKyMgaWNvbnYubTQgc2VyaWFsIDE4IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiwgMjAwNy0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfREVGVU4oW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSwKK1sKKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgQUNfTElCX0xJTktGTEFHU19CT0RZLgorICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorCisgIGRubCBTZWFyY2ggZm9yIGxpYmljb252IGFuZCBkZWZpbmUgTElCSUNPTlYsIExUTElCSUNPTlYgYW5kIElOQ0lDT05WCisgIGRubCBhY2NvcmRpbmdseS4KKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpY29udl0pCitdKQorCitBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCitbCisgIGRubCBTb21lIHN5c3RlbXMgaGF2ZSBpY29udiBpbiBsaWJjLCBzb21lIGhhdmUgaXQgaW4gbGliaWNvbnYgKE9TRi8xIGFuZAorICBkbmwgdGhvc2Ugd2l0aCB0aGUgc3RhbmRhbG9uZSBwb3J0YWJsZSBHTlUgbGliaWNvbnYgaW5zdGFsbGVkKS4KKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0pCisKKyAgZG5sIEFkZCAkSU5DSUNPTlYgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCisgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliaWNvbnYgYW5kIG5vdCBkaXNhYmxlZCBpdHMgdXNlCisgIGRubCB2aWEgLS13aXRob3V0LWxpYmljb252LXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LiBUaGUgZmlyc3QKKyAgZG5sIEFDX0xJTktfSUZFTFNFIHdpbGwgdGhlbiBmYWlsLCB0aGUgc2Vjb25kIEFDX0xJTktfSUZFTFNFIHdpbGwgc3VjY2VlZC4KKyAgYW1fc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJQ09OVl0pCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpY29udl0sIFthbV9jdl9mdW5jX2ljb252XSwgWworICAgIGFtX2N2X2Z1bmNfaWNvbnY9Im5vLCBjb25zaWRlciBpbnN0YWxsaW5nIEdOVSBsaWJpY29udiIKKyAgICBhbV9jdl9saWJfaWNvbnY9bm8KKyAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CisgICAgICAgICBdXSwKKyAgICAgICAgIFtbaWNvbnZfdCBjZCA9IGljb252X29wZW4oIiIsIiIpOworICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO11dKV0sCisgICAgICBbYW1fY3ZfZnVuY19pY29udj15ZXNdKQorICAgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiAhPSB5ZXM7IHRoZW4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVMTCk7CisgICAgICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO11dKV0sCisgICAgICAgIFthbV9jdl9saWJfaWNvbnY9eWVzXQorICAgICAgICBbYW1fY3ZfZnVuY19pY29udj15ZXNdKQorICAgICAgTElCUz0iJGFtX3NhdmVfTElCUyIKKyAgICBmaQorICBdKQorICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgaWNvbnZdLCBbYW1fY3ZfZnVuY19pY29udl93b3Jrc10sIFsKKyAgICAgIGRubCBUaGlzIHRlc3RzIGFnYWluc3QgYnVncyBpbiBBSVggNS4xLCBBSVggNi4xLi43LjEsIEhQLVVYIDExLjExLAorICAgICAgZG5sIFNvbGFyaXMgMTAuCisgICAgICBhbV9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgaWYgdGVzdCAkYW1fY3ZfbGliX2ljb252ID0geWVzOyB0aGVuCisgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgIGZpCisgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxpY29udi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgoraW50IG1haW4gKCkKK3sKKyAgaW50IHJlc3VsdCA9IDA7CisgIC8qIFRlc3QgYWdhaW5zdCBBSVggNS4xIGJ1ZzogRmFpbHVyZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGFibGUgZnJvbSBzdWNjZXNzZnVsCisgICAgIHJldHVybnMuICAqLworICB7CisgICAgaWNvbnZfdCBjZF91dGY4X3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICJVVEYtOCIpOworICAgIGlmIChjZF91dGY4X3RvXzg4NTkxICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGlucHV0W10gPSAiXDM0MlwyMDJcMjU0IjsgLyogRVVSTyBTSUdOICovCisgICAgICAgIGNoYXIgYnVmWzEwXTsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gc3RybGVuIChpbnB1dCk7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF91dGY4X3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICoqKSAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKQorICAgICAgICAgIHJlc3VsdCB8PSAxOworICAgICAgICBpY29udl9jbG9zZSAoY2RfdXRmOF90b184ODU5MSk7CisgICAgICB9CisgIH0KKyAgLyogVGVzdCBhZ2FpbnN0IFNvbGFyaXMgMTAgYnVnOiBGYWlsdXJlcyBhcmUgbm90IGRpc3Rpbmd1aXNoYWJsZSBmcm9tCisgICAgIHN1Y2Nlc3NmdWwgcmV0dXJucy4gICovCisgIHsKKyAgICBpY29udl90IGNkX2FzY2lpX3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICI2NDYiKTsKKyAgICBpZiAoY2RfYXNjaWlfdG9fODg1OTEgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaW5wdXRbXSA9ICJcMjYzIjsKKyAgICAgICAgY2hhciBidWZbMTBdOworICAgICAgICBjb25zdCBjaGFyICppbnB0ciA9IGlucHV0OworICAgICAgICBzaXplX3QgaW5ieXRlc2xlZnQgPSBzdHJsZW4gKGlucHV0KTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gc2l6ZW9mIChidWYpOworICAgICAgICBzaXplX3QgcmVzID0gaWNvbnYgKGNkX2FzY2lpX3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICoqKSAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKQorICAgICAgICAgIHJlc3VsdCB8PSAyOworICAgICAgICBpY29udl9jbG9zZSAoY2RfYXNjaWlfdG9fODg1OTEpOworICAgICAgfQorICB9CisgIC8qIFRlc3QgYWdhaW5zdCBBSVggNi4xLi43LjEgYnVnOiBCdWZmZXIgb3ZlcnJ1bi4gICovCisgIHsKKyAgICBpY29udl90IGNkXzg4NTkxX3RvX3V0ZjggPSBpY29udl9vcGVuICgiVVRGLTgiLCAiSVNPLTg4NTktMSIpOworICAgIGlmIChjZF84ODU5MV90b191dGY4ICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGlucHV0W10gPSAiXDMwNCI7CisgICAgICAgIHN0YXRpYyBjaGFyIGJ1ZlsyXSA9IHsgKGNoYXIpMHhERSwgKGNoYXIpMHhBRCB9OworICAgICAgICBjb25zdCBjaGFyICppbnB0ciA9IGlucHV0OworICAgICAgICBzaXplX3QgaW5ieXRlc2xlZnQgPSAxOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSAxOworICAgICAgICBzaXplX3QgcmVzID0gaWNvbnYgKGNkXzg4NTkxX3RvX3V0ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKiopICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzICE9IChzaXplX3QpKC0xKSB8fCBvdXRwdHIgLSBidWYgPiAxIHx8IGJ1ZlsxXSAhPSAoY2hhcikweEFEKQorICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CisgICAgICB9CisgIH0KKyNpZiAwIC8qIFRoaXMgYnVnIGNvdWxkIGJlIHdvcmtlZCBhcm91bmQgYnkgdGhlIGNhbGxlci4gICovCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IFBvc2l0aXZlIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIDAuICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoInV0ZjgiLCAiaXNvODg1OTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBpbnB1dFtdID0gIlwzMDRyZ2VyIG1pdCBiXDM2NnNlbiBCXDM3NGJjaGVuIG9obmUgQXVnZW5tYVwzMzciOworICAgICAgICBjaGFyIGJ1Zls1MF07CisgICAgICAgIGNvbnN0IGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKikgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmICgoaW50KXJlcyA+IDApCisgICAgICAgICAgcmVzdWx0IHw9IDg7CisgICAgICAgIGljb252X2Nsb3NlIChjZF84ODU5MV90b191dGY4KTsKKyAgICAgIH0KKyAgfQorI2VuZGlmCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcworICAgICBwcm92aWRlZC4gICovCisgIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KKyAgICAgIGljb252X29wZW4gKCJVVEYtOCIsICJFVUMtSlAiKSA9PSAoaWNvbnZfdCkoLTEpCisgICAgICAvKiBUcnkgSVJJWCwgT1NGLzEgbmFtZXMuICAqLworICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKQorICAgICAgLyogVHJ5IEFJWCBuYW1lcy4gICovCisgICAgICAmJiBpY29udl9vcGVuICgiVVRGLTgiLCAiSUJNLWV1Y0pQIikgPT0gKGljb252X3QpKC0xKQorICAgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KKyAgICAgICYmIGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIikgPT0gKGljb252X3QpKC0xKSkKKyAgICByZXN1bHQgfD0gMTY7CisgIHJldHVybiByZXN1bHQ7Cit9XV0pXSwKKyAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKKyAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9bm9dLAorICAgICAgICBbCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgIGFpeCogfCBocHV4KikgYW1fY3ZfZnVuY19pY29udl93b3Jrcz0iZ3Vlc3Npbmcgbm8iIDs7CisgICAgICAgICAgICopICAgICAgICAgICAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz0iZ3Vlc3NpbmcgeWVzIiA7OworICAgICAgICAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICAgICBdKQorICAgICAgTElCUz0iJGFtX3NhdmVfTElCUyIKKyAgICBdKQorICAgIGNhc2UgIiRhbV9jdl9mdW5jX2ljb252X3dvcmtzIiBpbgorICAgICAgKm5vKSBhbV9mdW5jX2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubyA7OworICAgICAgKikgICBhbV9mdW5jX2ljb252PXllcyA7OworICAgIGVzYWMKKyAgZWxzZQorICAgIGFtX2Z1bmNfaWNvbnY9bm8gYW1fY3ZfbGliX2ljb252PW5vCisgIGZpCisgIGlmIHRlc3QgIiRhbV9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9JQ09OVl0sIFsxXSwKKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGljb252KCkgZnVuY3Rpb24gYW5kIGl0IHdvcmtzLl0pCisgIGZpCisgIGlmIHRlc3QgIiRhbV9jdl9saWJfaWNvbnYiID0geWVzOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYmljb252XSkKKyAgICBBQ19NU0dfUkVTVUxUKFskTElCSUNPTlZdKQorICBlbHNlCisgICAgZG5sIElmICRMSUJJQ09OViBkaWRuJ3QgbGVhZCB0byBhIHVzYWJsZSBsaWJyYXJ5LCB3ZSBkb24ndCBuZWVkICRJTkNJQ09OVgorICAgIGRubCBlaXRoZXIuCisgICAgQ1BQRkxBR1M9IiRhbV9zYXZlX0NQUEZMQUdTIgorICAgIExJQklDT05WPQorICAgIExUTElCSUNPTlY9CisgIGZpCisgIEFDX1NVQlNUKFtMSUJJQ09OVl0pCisgIEFDX1NVQlNUKFtMVExJQklDT05WXSkKK10pCisKK2RubCBEZWZpbmUgQU1fSUNPTlYgdXNpbmcgQUNfREVGVU5fT05DRSBmb3IgQXV0b2NvbmYgPj0gMi42NCwgaW4gb3JkZXIgdG8KK2RubCBhdm9pZCB3YXJuaW5ncyBsaWtlCitkbmwgIndhcm5pbmc6IEFDX1JFUVVJUkU6IGBBTV9JQ09OVicgd2FzIGV4cGFuZGVkIGJlZm9yZSBpdCB3YXMgcmVxdWlyZWQiLgorZG5sIFRoaXMgaXMgdHJpY2t5IGJlY2F1c2Ugb2YgdGhlIHdheSAnYWNsb2NhbCcgaXMgaW1wbGVtZW50ZWQ6CitkbmwgLSBJdCByZXF1aXJlcyBkZWZpbmluZyBhbiBhdXhpbGlhcnkgbWFjcm8gd2hvc2UgbmFtZSBlbmRzIGluIEFDX0RFRlVOLgorZG5sICAgT3RoZXJ3aXNlIGFjbG9jYWwncyBpbml0aWFsIHNjYW4gcGFzcyB3b3VsZCBtaXNzIHRoZSBtYWNybyBkZWZpbml0aW9uLgorZG5sIC0gSXQgcmVxdWlyZXMgYSBsaW5lIGJyZWFrIGluc2lkZSB0aGUgQUNfREVGVU5fT05DRSBhbmQgQUNfREVGVU4gZXhwYW5zaW9ucy4KK2RubCAgIE90aGVyd2lzZSBhY2xvY2FsIHdvdWxkIGVtaXQgbWFueSAiVXNlIG9mIHVuaW5pdGlhbGl6ZWQgdmFsdWUgJDEiCitkbmwgICB3YXJuaW5ncy4KK200X2RlZmluZShbZ2xfaWNvbnZfQUNfREVGVU5dLAorICBtNF92ZXJzaW9uX3ByZXJlcShbMi42NF0sCisgICAgW1tBQ19ERUZVTl9PTkNFKAorICAgICAgICBbJDFdLCBbJDJdKV1dLAorICAgIFttNF9pZmRlZihbZ2xfMDBHTlVMSUJdLAorICAgICAgIFtbQUNfREVGVU5fT05DRSgKKyAgICAgICAgICAgWyQxXSwgWyQyXSldXSwKKyAgICAgICBbW0FDX0RFRlVOKAorICAgICAgICAgICBbJDFdLCBbJDJdKV1dKV0pKQorZ2xfaWNvbnZfQUNfREVGVU4oW0FNX0lDT05WXSwKK1sKKyAgQU1fSUNPTlZfTElOSworICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBpY29udiBkZWNsYXJhdGlvbl0pCisgICAgQUNfQ0FDSEVfVkFMKFthbV9jdl9wcm90b19pY29udl0sIFsKKyAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKKyNpZiBkZWZpbmVkKF9fU1REQ19fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fY3BsdXNwbHVzKQorc2l6ZV90IGljb252IChpY29udl90IGNkLCBjaGFyICogKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LCBjaGFyICogKm91dGJ1Ziwgc2l6ZV90ICpvdXRieXRlc2xlZnQpOworI2Vsc2UKK3NpemVfdCBpY29udigpOworI2VuZGlmCisgICAgICAgICAgIF1dLAorICAgICAgICAgICBbW11dKV0sCisgICAgICAgIFthbV9jdl9wcm90b19pY29udl9hcmcxPSIiXSwKKyAgICAgICAgW2FtX2N2X3Byb3RvX2ljb252X2FyZzE9ImNvbnN0Il0pCisgICAgICBhbV9jdl9wcm90b19pY29udj0iZXh0ZXJuIHNpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsiXSkKKyAgICBhbV9jdl9wcm90b19pY29udj1gZWNobyAiWyRdYW1fY3ZfcHJvdG9faWNvbnYiIHwgdHIgLXMgJyAnIHwgc2VkIC1lICdzLyggLygvJ2AKKyAgICBBQ19NU0dfUkVTVUxUKFsKKyAgICAgICAgICRhbV9jdl9wcm90b19pY29udl0pCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKFtJQ09OVl9DT05TVF0sIFskYW1fY3ZfcHJvdG9faWNvbnZfYXJnMV0sCisgICAgICBbRGVmaW5lIGFzIGNvbnN0IGlmIHRoZSBkZWNsYXJhdGlvbiBvZiBpY29udigpIG5lZWRzIGNvbnN0Ll0pCisgICAgZG5sIEFsc28gc3Vic3RpdHV0ZSBJQ09OVl9DT05TVCBpbiB0aGUgZ251bGliIGdlbmVyYXRlZCA8aWNvbnYuaD4uCisgICAgbTRfaWZkZWYoW2dsX0lDT05WX0hfREVGQVVMVFNdLAorICAgICAgW0FDX1JFUVVJUkUoW2dsX0lDT05WX0hfREVGQVVMVFNdKQorICAgICAgIGlmIHRlc3QgLW4gIiRhbV9jdl9wcm90b19pY29udl9hcmcxIjsgdGhlbgorICAgICAgICAgSUNPTlZfQ09OU1Q9ImNvbnN0IgorICAgICAgIGZpCisgICAgICBdKQorICBmaQorXSkKKworIyBpbnRkaXYwLm00IHNlcmlhbCA2IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDctMjAwOCwgMjAxMC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfREVGVU4oW2d0X0lOVERJVjBdLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorCisgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgU0lHRlBFXSwKKyAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSwKKyAgICBbCisgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0KK2NoYW5nZXF1b3RlKCwpZG5sCisgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgbWFjb3MqIHwgZGFyd2luWzYtOV0qIHwgZGFyd2luWzEtOV1bMC05XSopCisgICAgICAgICAgIyBPbiBNYWMgT1MgWCAxMC4yIG9yIG5ld2VyLCBqdXN0IGFzc3VtZSB0aGUgc2FtZSBhcyB3aGVuIGNyb3NzLQorICAgICAgICAgICMgY29tcGlsaW5nLiBJZiB3ZSB3ZXJlIHRvIHBlcmZvcm0gdGhlIHJlYWwgdGVzdCwgMSBDcmFzaCBSZXBvcnQKKyAgICAgICAgICAjIGRpYWxvZyB3aW5kb3cgd291bGQgcG9wIHVwLgorICAgICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgICAgIGlbMzQ1NjddODYgfCB4ODZfNjQpCisgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyB5ZXMiIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIDs7CisgICAgICBlc2FjCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICBpZiB0ZXN0IC16ICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiOyB0aGVuCisgICAgICAgIEFDX1JVTl9JRkVMU0UoCisgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKFtbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK3N0YXRpYyB2b2lkCitzaWdmcGVfaGFuZGxlciAoaW50IHNpZykKK3sKKyAgLyogRXhpdCB3aXRoIGNvZGUgMCBpZiBTSUdGUEUsIHdpdGggY29kZSAxIGlmIGFueSBvdGhlciBzaWduYWwuICAqLworICBleGl0IChzaWcgIT0gU0lHRlBFKTsKK30KKworaW50IHggPSAxOworaW50IHkgPSAwOworaW50IHo7CitpbnQgbmFuOworCitpbnQgbWFpbiAoKQoreworICBzaWduYWwgKFNJR0ZQRSwgc2lnZnBlX2hhbmRsZXIpOworLyogSVJJWCBhbmQgQUlYICh3aGVuICJ4bGMgLXFjaGVjayIgaXMgdXNlZCkgeWllbGQgc2lnbmFsIFNJR1RSQVAuICAqLworI2lmIChkZWZpbmVkIChfX3NnaSkgfHwgZGVmaW5lZCAoX0FJWCkpICYmIGRlZmluZWQgKFNJR1RSQVApCisgIHNpZ25hbCAoU0lHVFJBUCwgc2lnZnBlX2hhbmRsZXIpOworI2VuZGlmCisvKiBMaW51eC9TUEFSQyB5aWVsZHMgc2lnbmFsIFNJR0lMTC4gICovCisjaWYgZGVmaW5lZCAoX19zcGFyY19fKSAmJiBkZWZpbmVkIChfX2xpbnV4X18pCisgIHNpZ25hbCAoU0lHSUxMLCBzaWdmcGVfaGFuZGxlcik7CisjZW5kaWYKKworICB6ID0geCAvIHk7CisgIG5hbiA9IHkgLyB5OworICBleGl0ICgyKTsKK30KK11dKV0sCisgICAgICAgICAgW2d0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPXllc10sCisgICAgICAgICAgW2d0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPW5vXSwKKyAgICAgICAgICBbCisgICAgICAgICAgICAjIEd1ZXNzIGJhc2VkIG9uIHRoZSBDUFUuCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICAgICAgICBhbHBoYSogfCBpWzM0NTY3XTg2IHwgeDg2XzY0IHwgbTY4ayB8IHMzOTAqKQorICAgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyB5ZXMiOzsKKyAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0iZ3Vlc3Npbmcgbm8iOzsKKyAgICAgICAgICAgIGVzYWMKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgICAgICAgICBdKQorICAgICAgZmkKKyAgICBdKQorICBjYXNlICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiIGluCisgICAgKnllcykgdmFsdWU9MTs7CisgICAgKikgdmFsdWU9MDs7CisgIGVzYWMKKyAgQUNfREVGSU5FX1VOUVVPVEVEKFtJTlRESVYwX1JBSVNFU19TSUdGUEVdLCBbJHZhbHVlXSwKKyAgICBbRGVmaW5lIGlmIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgc2lnbmFsIFNJR0ZQRS5dKQorXSkKKworIyBpbnRsLm00IHNlcmlhbCAyNSAoZ2V0dGV4dC0wLjE4LjMpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwOS4KKworQUNfUFJFUkVRKFsyLjYwXSkKKworZG5sIENoZWNrcyBmb3IgYWxsIHByZXJlcXVpc2l0ZXMgb2YgdGhlIGludGwgc3ViZGlyZWN0b3J5LAorZG5sIGV4Y2VwdCBmb3IgSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVggKGFuZCBwb3NzaWJseSBMSUJUT09MKSwgSU5UTE9CSlMsCitkbmwgICAgICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTCwgQlVJTERfSU5DTFVERURfTElCSU5UTC4KK0FDX0RFRlVOKFtBTV9JTlRMX1NVQkRJUl0sCitbCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfTUtESVJfUF0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisgIEFDX1JFUVVJUkUoW2d0X0dMSUJDMl0pZG5sCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfUkFOTElCXSlkbmwKKyAgQUNfUkVRVUlSRShbZ2xfVklTSUJJTElUWV0pZG5sCisgIEFDX1JFUVVJUkUoW2d0X0lOVExfU1VCRElSX0NPUkVdKWRubAorICBBQ19SRVFVSVJFKFtBQ19UWVBFX0xPTkdfTE9OR19JTlRdKWRubAorICBBQ19SRVFVSVJFKFtndF9UWVBFX1dDSEFSX1RdKWRubAorICBBQ19SRVFVSVJFKFtndF9UWVBFX1dJTlRfVF0pZG5sCisgIEFDX1JFUVVJUkUoW2dsX0FDX0hFQURFUl9JTlRUWVBFU19IXSkKKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9JTlRNQVhfVF0pCisgIEFDX1JFUVVJUkUoW2d0X1BSSU5URl9QT1NJWF0pCisgIEFDX1JFUVVJUkUoW2dsX0dMSUJDMjFdKWRubAorICBBQ19SRVFVSVJFKFtnbF9YU0laRV0pZG5sCisgIEFDX1JFUVVJUkUoW2dsX0ZDTlRMX09fRkxBR1NdKWRubAorICBBQ19SRVFVSVJFKFtndF9JTlRMX01BQ09TWF0pZG5sCisgIEFDX1JFUVVJUkUoW2dsX0VYVEVSTl9JTkxJTkVdKWRubAorCisgIGRubCBTdXBwb3J0IGZvciBhdXRvbWFrZSdzIC0tZW5hYmxlLXNpbGVudC1ydWxlcy4KKyAgY2FzZSAiJGVuYWJsZV9zaWxlbnRfcnVsZXMiIGluCisgICAgeWVzKSBJTlRMX0RFRkFVTFRfVkVSQk9TSVRZPTA7OworICAgIG5vKSAgSU5UTF9ERUZBVUxUX1ZFUkJPU0lUWT0xOzsKKyAgICAqKSAgIElOVExfREVGQVVMVF9WRVJCT1NJVFk9MTs7CisgIGVzYWMKKyAgQUNfU1VCU1QoW0lOVExfREVGQVVMVF9WRVJCT1NJVFldKQorCisgIEFDX0NIRUNLX1RZUEUoW3B0cmRpZmZfdF0sICwKKyAgICBbQUNfREVGSU5FKFtwdHJkaWZmX3RdLCBbbG9uZ10sCisgICAgICAgW0RlZmluZSBhcyB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0IG9mIHN1YnRyYWN0aW5nIHR3byBwb2ludGVycywgaWYgdGhlIHN5c3RlbSBkb2Vzbid0IGRlZmluZSBpdC5dKQorICAgIF0pCisgIEFDX0NIRUNLX0hFQURFUlMoW2ZlYXR1cmVzLmggc3RkZGVmLmggc3RkbGliLmggc3RyaW5nLmhdKQorICBBQ19DSEVDS19GVU5DUyhbYXNwcmludGYgZndwcmludGYgbmV3bG9jYWxlIHB1dGVudiBzZXRlbnYgc2V0bG9jYWxlIFwKKyAgICBzbnByaW50ZiBzdHJubGVuIHdjc2xlbiB3Y3NubGVuIG1icnRvd2Mgd2NydG9tYl0pCisKKyAgZG5sIFVzZSB0aGUgX3NucHJpbnRmIGZ1bmN0aW9uIG9ubHkgaWYgaXQgaXMgZGVjbGFyZWQgKGJlY2F1c2Ugb24gTmV0QlNEIGl0CisgIGRubCBpcyBkZWZpbmVkIGFzIGEgd2VhayBhbGlhcyBvZiBzbnByaW50Zjsgd2UgcHJlZmVyIHRvIHVzZSB0aGUgbGF0dGVyKS4KKyAgQUNfQ0hFQ0tfREVDTFMoW19zbnByaW50ZiwgX3Nud3ByaW50Zl0sICwgLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKKworICBkbmwgVXNlIHRoZSAqX3VubG9ja2VkIGZ1bmN0aW9ucyBvbmx5IGlmIHRoZXkgYXJlIGRlY2xhcmVkLgorICBkbmwgKGJlY2F1c2Ugc29tZSBvZiB0aGVtIHdlcmUgZGVmaW5lZCB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGluIFNvbGFyaXMKKyAgZG5sIDIuNS4xIGJ1dCB3ZXJlIHJlbW92ZWQgaW4gU29sYXJpcyAyLjYsIHdoZXJlYXMgd2Ugd2FudCBiaW5hcmllcyBidWlsdAorICBkbmwgb24gU29sYXJpcyAyLjUuMSB0byBydW4gb24gU29sYXJpcyAyLjYpLgorICBBQ19DSEVDS19ERUNMUyhbZ2V0Y191bmxvY2tlZF0sICwgLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKKworICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgorICAgICp5ZXMpIEhBVkVfUE9TSVhfUFJJTlRGPTEgOzsKKyAgICAqKSBIQVZFX1BPU0lYX1BSSU5URj0wIDs7CisgIGVzYWMKKyAgQUNfU1VCU1QoW0hBVkVfUE9TSVhfUFJJTlRGXSkKKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfYXNwcmludGYiID0geWVzOyB0aGVuCisgICAgSEFWRV9BU1BSSU5URj0xCisgIGVsc2UKKyAgICBIQVZFX0FTUFJJTlRGPTAKKyAgZmkKKyAgQUNfU1VCU1QoW0hBVkVfQVNQUklOVEZdKQorICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19zbnByaW50ZiIgPSB5ZXM7IHRoZW4KKyAgICBIQVZFX1NOUFJJTlRGPTEKKyAgZWxzZQorICAgIEhBVkVfU05QUklOVEY9MAorICBmaQorICBBQ19TVUJTVChbSEFWRV9TTlBSSU5URl0pCisgIGlmIHRlc3QgIiRhY19jdl9mdW5jX25ld2xvY2FsZSIgPSB5ZXM7IHRoZW4KKyAgICBIQVZFX05FV0xPQ0FMRT0xCisgIGVsc2UKKyAgICBIQVZFX05FV0xPQ0FMRT0wCisgIGZpCisgIEFDX1NVQlNUKFtIQVZFX05FV0xPQ0FMRV0pCisgIGlmIHRlc3QgIiRhY19jdl9mdW5jX3dwcmludGYiID0geWVzOyB0aGVuCisgICAgSEFWRV9XUFJJTlRGPTEKKyAgZWxzZQorICAgIEhBVkVfV1BSSU5URj0wCisgIGZpCisgIEFDX1NVQlNUKFtIQVZFX1dQUklOVEZdKQorCisgIEFNX0xBTkdJTkZPX0NPREVTRVQKKyAgZ3RfTENfTUVTU0FHRVMKKworICBkbmwgQ29tcGlsYXRpb24gb24gbWluZ3cgYW5kIEN5Z3dpbiBuZWVkcyBzcGVjaWFsIE1ha2VmaWxlIHJ1bGVzLCBiZWNhdXNlCisgIGRubCAxLiB3aGVuIHdlIGluc3RhbGwgYSBzaGFyZWQgbGlicmFyeSwgd2UgbXVzdCBhcnJhbmdlIHRvIGV4cG9ydAorICBkbmwgICAgYXV4aWxpYXJ5IHBvaW50ZXIgdmFyaWFibGVzIGZvciBldmVyeSBleHBvcnRlZCB2YXJpYWJsZSwKKyAgZG5sIDIuIHdoZW4gd2UgaW5zdGFsbCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBhIHN0YXRpYyBsaWJyYXJ5IHNpbXVsdGFuZW91c2x5LAorICBkbmwgICAgdGhlIGluY2x1ZGUgZmlsZSBzcGVjaWZpZXMgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGFuZCB0aGVyZWZvcmUgd2UKKyAgZG5sICAgIG11c3QgYXJyYW5nZSB0byBkZWZpbmUgdGhlIGF1eGlsaWFyeSBwb2ludGVyIHZhcmlhYmxlcyBmb3IgdGhlCisgIGRubCAgICBleHBvcnRlZCB2YXJpYWJsZXMgX2Fsc29fIGluIHRoZSBzdGF0aWMgbGlicmFyeS4KKyAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzOyB0aGVuCisgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICBtaW5ndyogfCBjeWd3aW4qKSBpc193b2UzMmRsbD15ZXMgOzsKKyAgICAgICopIGlzX3dvZTMyZGxsPW5vIDs7CisgICAgZXNhYworICBlbHNlCisgICAgaXNfd29lMzJkbGw9bm8KKyAgZmkKKyAgV09FMzJETEw9JGlzX3dvZTMyZGxsCisgIEFDX1NVQlNUKFtXT0UzMkRMTF0pCisKKyAgZG5sIE9uIG1pbmd3IGFuZCBDeWd3aW4sIHdlIGNhbiBhY3RpdmF0ZSBzcGVjaWFsIE1ha2VmaWxlIHJ1bGVzIHdoaWNoIGFkZAorICBkbmwgdmVyc2lvbiBpbmZvcm1hdGlvbiB0byB0aGUgc2hhcmVkIGxpYnJhcmllcyBhbmQgZXhlY3V0YWJsZXMuCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIG1pbmd3KiB8IGN5Z3dpbiopIGlzX3dvZTMyPXllcyA7OworICAgICopIGlzX3dvZTMyPW5vIDs7CisgIGVzYWMKKyAgV09FMzI9JGlzX3dvZTMyCisgIEFDX1NVQlNUKFtXT0UzMl0pCisgIGlmIHRlc3QgJFdPRTMyID0geWVzOyB0aGVuCisgICAgZG5sIENoZWNrIGZvciBhIHByb2dyYW0gdGhhdCBjb21waWxlcyBXaW5kb3dzIHJlc291cmNlIGZpbGVzLgorICAgIEFDX0NIRUNLX1RPT0woW1dJTkRSRVNdLCBbd2luZHJlc10pCisgIGZpCisKKyAgZG5sIERldGVybWluZSB3aGV0aGVyIHdoZW4gY3JlYXRpbmcgYSBsaWJyYXJ5LCAiLWxjIiBzaG91bGQgYmUgcGFzc2VkIHRvCisgIGRubCBsaWJ0b29sIG9yIG5vdC4gT24gbWFueSBwbGF0Zm9ybXMsIGl0IGlzIHJlcXVpcmVkIGZvciB0aGUgbGlidG9vbCBvcHRpb24KKyAgZG5sIC1uby11bmRlZmluZWQgdG8gd29yay4gT24gSFAtVVgsIGhvd2V2ZXIsIHRoZSAtbGMgLSBzdG9yZWQgYnkgbGlidG9vbAorICBkbmwgaW4gdGhlICoubGEgZmlsZXMgLSBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBtdWx0aXRocmVhZGVkIHByb2dyYW1zLAorICBkbmwgYmVjYXVzZSBsaWJ0b29sIGFsc28gcmVvcmRlcnMgdGhlIC1sYyB0byBjb21lIGJlZm9yZSB0aGUgLXB0aHJlYWQsIGFuZAorICBkbmwgdGhpcyBkaXNhYmxlcyBwdGhyZWFkX2NyZWF0ZSgpIDxodHRwOi8vZG9jcy5ocC5jb20vZW4vMTg5Ni9wdGhyZWFkcy5odG1sPi4KKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgaHB1eCopIExUTElCQz0iIiA7OworICAgICopICAgICBMVExJQkM9Ii1sYyIgOzsKKyAgZXNhYworICBBQ19TVUJTVChbTFRMSUJDXSkKKworICBkbmwgUmVuYW1lIHNvbWUgbWFjcm9zIGFuZCBmdW5jdGlvbnMgdXNlZCBmb3IgbG9ja2luZy4KKyAgQUhfQk9UVE9NKFsKKyNkZWZpbmUgX19saWJjX2xvY2tfdCAgICAgICAgICAgICAgICAgICBnbF9sb2NrX3QKKyNkZWZpbmUgX19saWJjX2xvY2tfZGVmaW5lICAgICAgICAgICAgICBnbF9sb2NrX2RlZmluZQorI2RlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgIGdsX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkCisjZGVmaW5lIF9fbGliY19sb2NrX2luaXQgICAgICAgICAgICAgICAgZ2xfbG9ja19pbml0CisjZGVmaW5lIF9fbGliY19sb2NrX2xvY2sgICAgICAgICAgICAgICAgZ2xfbG9ja19sb2NrCisjZGVmaW5lIF9fbGliY19sb2NrX3VubG9jayAgICAgICAgICAgICAgZ2xfbG9ja191bmxvY2sKKyNkZWZpbmUgX19saWJjX2xvY2tfcmVjdXJzaXZlX3QgICAgICAgICAgICAgICAgICAgZ2xfcmVjdXJzaXZlX2xvY2tfdAorI2RlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfcmVjdXJzaXZlICAgICAgICAgICAgICBnbF9yZWN1cnNpdmVfbG9ja19kZWZpbmUKKyNkZWZpbmUgX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkX3JlY3Vyc2l2ZSAgZ2xfcmVjdXJzaXZlX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkCisjZGVmaW5lIF9fbGliY19sb2NrX2luaXRfcmVjdXJzaXZlICAgICAgICAgICAgICAgIGdsX3JlY3Vyc2l2ZV9sb2NrX2luaXQKKyNkZWZpbmUgX19saWJjX2xvY2tfbG9ja19yZWN1cnNpdmUgICAgICAgICAgICAgICAgZ2xfcmVjdXJzaXZlX2xvY2tfbG9jaworI2RlZmluZSBfX2xpYmNfbG9ja191bmxvY2tfcmVjdXJzaXZlICAgICAgICAgICAgICBnbF9yZWN1cnNpdmVfbG9ja191bmxvY2sKKyNkZWZpbmUgZ2x0aHJlYWRfaW5fdXNlICBsaWJpbnRsX3RocmVhZF9pbl91c2UKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja19pbml0X2Z1bmMgICAgIGxpYmludGxfbG9ja19pbml0X2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja19sb2NrX2Z1bmMgICAgIGxpYmludGxfbG9ja19sb2NrX2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja191bmxvY2tfZnVuYyAgIGxpYmludGxfbG9ja191bmxvY2tfZnVuYworI2RlZmluZSBnbHRocmVhZF9sb2NrX2Rlc3Ryb3lfZnVuYyAgbGliaW50bF9sb2NrX2Rlc3Ryb3lfZnVuYworI2RlZmluZSBnbHRocmVhZF9yd2xvY2tfaW5pdF9tdWx0aXRocmVhZGVkICAgICBsaWJpbnRsX3J3bG9ja19pbml0X211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcndsb2NrX2luaXRfZnVuYyAgICAgICAgICAgICAgbGliaW50bF9yd2xvY2tfaW5pdF9mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19yZGxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3JkbG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19yZGxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3JkbG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja193cmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3dybG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja193cmxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3dybG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja191bmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3VubG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja191bmxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3VubG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19kZXN0cm95X211bHRpdGhyZWFkZWQgIGxpYmludGxfcndsb2NrX2Rlc3Ryb3lfbXVsdGl0aHJlYWRlZAorI2RlZmluZSBnbHRocmVhZF9yd2xvY2tfZGVzdHJveV9mdW5jICAgICAgICAgICBsaWJpbnRsX3J3bG9ja19kZXN0cm95X2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfaW5pdF9tdWx0aXRocmVhZGVkICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2luaXRfbXVsdGl0aHJlYWRlZAorI2RlZmluZSBnbHRocmVhZF9yZWN1cnNpdmVfbG9ja19pbml0X2Z1bmMgICAgICAgICAgICAgIGxpYmludGxfcmVjdXJzaXZlX2xvY2tfaW5pdF9mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3JlY3Vyc2l2ZV9sb2NrX2xvY2tfbXVsdGl0aHJlYWRlZCAgICAgbGliaW50bF9yZWN1cnNpdmVfbG9ja19sb2NrX211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfbG9ja19mdW5jICAgICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2xvY2tfZnVuYworI2RlZmluZSBnbHRocmVhZF9yZWN1cnNpdmVfbG9ja191bmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcmVjdXJzaXZlX2xvY2tfdW5sb2NrX211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfdW5sb2NrX2Z1bmMgICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX3VubG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3JlY3Vyc2l2ZV9sb2NrX2Rlc3Ryb3lfbXVsdGl0aHJlYWRlZCAgbGliaW50bF9yZWN1cnNpdmVfbG9ja19kZXN0cm95X211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfZGVzdHJveV9mdW5jICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2Rlc3Ryb3lfZnVuYworI2RlZmluZSBnbHRocmVhZF9vbmNlX2Z1bmMgICAgICAgICAgICBsaWJpbnRsX29uY2VfZnVuYworI2RlZmluZSBnbHRocmVhZF9vbmNlX3NpbmdsZXRocmVhZGVkICBsaWJpbnRsX29uY2Vfc2luZ2xldGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfb25jZV9tdWx0aXRocmVhZGVkICAgbGliaW50bF9vbmNlX211bHRpdGhyZWFkZWQKK10pCitdKQorCisKK2RubCBDaGVja3MgZm9yIHRoZSBjb3JlIGZpbGVzIG9mIHRoZSBpbnRsIHN1YmRpcmVjdG9yeToKK2RubCAgIGRjaWdldHRleHQuYworZG5sICAgZXZhbC1wbHVyYWwuaAorZG5sICAgZXhwbG9kZW5hbWUuYworZG5sICAgZmluZGRvbWFpbi5jCitkbmwgICBnZXR0ZXh0UC5oCitkbmwgICBnbW8uaAorZG5sICAgaGFzaC1zdHJpbmcuaCBoYXNoLXN0cmluZy5jCitkbmwgICBsMTBuZmxpc3QuYworZG5sICAgbGliZ251aW50bC5oLmluIChleGNlcHQgdGhlICpwcmludGYgc3R1ZmYpCitkbmwgICBsb2FkaW5mby5oCitkbmwgICBsb2FkbXNnY2F0LmMKK2RubCAgIGxvY2FsZWFsaWFzLmMKK2RubCAgIGxvZy5jCitkbmwgICBwbHVyYWwtZXhwLmggcGx1cmFsLWV4cC5jCitkbmwgICBwbHVyYWwueQorZG5sIFVzZWQgYnkgbGliZ2xvY2FsZS4KK0FDX0RFRlVOKFtndF9JTlRMX1NVQkRJUl9DT1JFXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfQ19JTkxJTkVdKWRubAorICBBQ19SRVFVSVJFKFtBQ19UWVBFX1NJWkVfVF0pZG5sCisgIEFDX1JFUVVJUkUoW2dsX0FDX0hFQURFUl9TVERJTlRfSF0pCisgIEFDX1JFUVVJUkUoW0FDX0ZVTkNfQUxMT0NBXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfRlVOQ19NTUFQXSlkbmwKKyAgQUNfUkVRVUlSRShbZ3RfSU5URElWMF0pZG5sCisgIEFDX1JFUVVJUkUoW2dsX0FDX1RZUEVfVUlOVE1BWF9UXSlkbmwKKyAgQUNfUkVRVUlSRShbZ3RfSU5UVFlQRVNfUFJJXSlkbmwKKyAgQUNfUkVRVUlSRShbZ2xfTE9DS10pZG5sCisKKyAgQUNfTElOS19JRkVMU0UoCisgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICBbW2ludCBmb28gKGludCBhKSB7IGEgPSBfX2J1aWx0aW5fZXhwZWN0IChhLCAxMCk7IHJldHVybiBhID09IDEwID8gMCA6IDE7IH1dXSwKKyAgICAgICBbW11dKV0sCisgICAgW0FDX0RFRklORShbSEFWRV9CVUlMVElOX0VYUEVDVF0sIFsxXSwKKyAgICAgICBbRGVmaW5lIHRvIDEgaWYgdGhlIGNvbXBpbGVyIHVuZGVyc3RhbmRzIF9fYnVpbHRpbl9leHBlY3QuXSldKQorCisgIEFDX0NIRUNLX0hFQURFUlMoW2FyZ3ouaCBpbnR0eXBlcy5oIGxpbWl0cy5oIHVuaXN0ZC5oIHN5cy9wYXJhbS5oXSkKKyAgQUNfQ0hFQ0tfRlVOQ1MoW2dldGN3ZCBnZXRlZ2lkIGdldGV1aWQgZ2V0Z2lkIGdldHVpZCBtZW1wY3B5IG11bm1hcCBcCisgICAgc3RwY3B5IHN0cmNhc2VjbXAgc3RyZHVwIHN0cnRvdWwgdHNlYXJjaCB1c2Vsb2NhbGUgYXJnel9jb3VudCBcCisgICAgYXJnel9zdHJpbmdpZnkgYXJnel9uZXh0IF9fZnNldGxvY2tpbmddKQorCisgIGRubCBVc2UgdGhlICpfdW5sb2NrZWQgZnVuY3Rpb25zIG9ubHkgaWYgdGhleSBhcmUgZGVjbGFyZWQuCisgIGRubCAoYmVjYXVzZSBzb21lIG9mIHRoZW0gd2VyZSBkZWZpbmVkIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgaW4gU29sYXJpcworICBkbmwgMi41LjEgYnV0IHdlcmUgcmVtb3ZlZCBpbiBTb2xhcmlzIDIuNiwgd2hlcmVhcyB3ZSB3YW50IGJpbmFyaWVzIGJ1aWx0CisgIGRubCBvbiBTb2xhcmlzIDIuNS4xIHRvIHJ1biBvbiBTb2xhcmlzIDIuNikuCisgIEFDX0NIRUNLX0RFQ0xTKFtmZW9mX3VubG9ja2VkLCBmZ2V0c191bmxvY2tlZF0sICwgLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKKworICBBTV9JQ09OVgorCisgIGRubCBpbnRsL3BsdXJhbC5jIGlzIGdlbmVyYXRlZCBmcm9tIGludGwvcGx1cmFsLnkuIEl0IHJlcXVpcmVzIGJpc29uLAorICBkbmwgYmVjYXVzZSBwbHVyYWwueSB1c2VzIGJpc29uIHNwZWNpZmljIGZlYXR1cmVzLiBJdCByZXF1aXJlcyBhdCBsZWFzdAorICBkbmwgYmlzb24tMS4yNiBiZWNhdXNlIGVhcmxpZXIgdmVyc2lvbnMgZ2VuZXJhdGUgYSBwbHVyYWwuYyB0aGF0IGRvZXNuJ3QKKyAgZG5sIGNvbXBpbGUuCisgIGRubCBiaXNvbiBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIG1haW50YWluZXIgKHdobyB0b3VjaGVzIHBsdXJhbC55KS4gQnV0IGluCisgIGRubCBvcmRlciB0byBhdm9pZCBzZXBhcmF0ZSBNYWtlZmlsZXMgb3IgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlLCB3ZSBwdXQKKyAgZG5sIHRoZSBydWxlIGluIGdlbmVyYWwgTWFrZWZpbGUuIE5vdywgc29tZSBwZW9wbGUgY2FyZWxlc3NseSB0b3VjaCB0aGUKKyAgZG5sIGZpbGVzIG9yIGhhdmUgYSBicm9rZW4gIm1ha2UiIHByb2dyYW0sIGhlbmNlIHRoZSBwbHVyYWwuYyBydWxlIHdpbGwKKyAgZG5sIHNvbWV0aW1lcyBmaXJlLiBUbyBhdm9pZCBhbiBlcnJvciwgZGVmaW5lcyBCSVNPTiB0byAiOiIgaWYgaXQgaXMgbm90CisgIGRubCBwcmVzZW50IG9yIHRvbyBvbGQuCisgIEFDX0NIRUNLX1BST0dTKFtJTlRMQklTT05dLCBbYmlzb25dKQorICBpZiB0ZXN0IC16ICIkSU5UTEJJU09OIjsgdGhlbgorICAgIGFjX3ZlcmNfZmFpbD15ZXMKKyAgZWxzZQorICAgIGRubCBGb3VuZCBpdCwgbm93IGNoZWNrIHRoZSB2ZXJzaW9uLgorICAgIEFDX01TR19DSEVDS0lORyhbdmVyc2lvbiBvZiBiaXNvbl0pCitjaGFuZ2VxdW90ZSg8PCw+PilkbmwKKyAgICBhY19wcm9nX3ZlcnNpb249YCRJTlRMQklTT04gLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIEJpc29uLiogXChbMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKKyAgICBjYXNlICRhY19wcm9nX3ZlcnNpb24gaW4KKyAgICAgICcnKSBhY19wcm9nX3ZlcnNpb249InYuID8uPz8sIGJhZCI7IGFjX3ZlcmNfZmFpbD15ZXM7OworICAgICAgMS4yWzYtOV0qIHwgMS5bMy05XVswLTldKiB8IFsyLTldLiopCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICAgICBhY19wcm9nX3ZlcnNpb249IiRhY19wcm9nX3ZlcnNpb24sIG9rIjsgYWNfdmVyY19mYWlsPW5vOzsKKyAgICAgICopIGFjX3Byb2dfdmVyc2lvbj0iJGFjX3Byb2dfdmVyc2lvbiwgYmFkIjsgYWNfdmVyY19mYWlsPXllczs7CisgICAgZXNhYworICAgIEFDX01TR19SRVNVTFQoWyRhY19wcm9nX3ZlcnNpb25dKQorICBmaQorICBpZiB0ZXN0ICRhY192ZXJjX2ZhaWwgPSB5ZXM7IHRoZW4KKyAgICBJTlRMQklTT049OgorICBmaQorXSkKKworIyBpbnRsbWFjb3N4Lm00IHNlcmlhbCA1IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBDaGVja3MgZm9yIHNwZWNpYWwgb3B0aW9ucyBuZWVkZWQgb24gTWFjIE9TIFguCitkbmwgRGVmaW5lcyBJTlRMX01BQ09TWF9MSUJTLgorQUNfREVGVU4oW2d0X0lOVExfTUFDT1NYXSwKK1sKKyAgZG5sIENoZWNrIGZvciBBUEkgaW50cm9kdWNlZCBpbiBNYWMgT1MgWCAxMC4yLgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWVdLAorICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWVdLAorICAgIFtndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZQcmVmZXJlbmNlcy5oPl1dLAorICAgICAgICAgIFtbQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShOVUxMLCBOVUxMKV1dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT15ZXNdLAorICAgICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9bm9dKQorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRlBSRUZFUkVOQ0VTQ09QWUFQUFZBTFVFXSwgWzFdLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlIGluIHRoZSBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmsuXSkKKyAgZmkKKyAgZG5sIENoZWNrIGZvciBBUEkgaW50cm9kdWNlZCBpbiBNYWMgT1MgWCAxMC4zLgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIENGTG9jYWxlQ29weUN1cnJlbnRdLCBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50XSwKKyAgICBbZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+XV0sCisgICAgICAgICAgW1tDRkxvY2FsZUNvcHlDdXJyZW50KCk7XV0pXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PXllc10sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD1ub10pCisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0NGTE9DQUxFQ09QWUNVUlJFTlRdLCBbMV0sCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1hYyBPUyBYIGZ1bmN0aW9uIENGTG9jYWxlQ29weUN1cnJlbnQgaW4gdGhlIENvcmVGb3VuZGF0aW9uIGZyYW1ld29yay5dKQorICBmaQorICBJTlRMX01BQ09TWF9MSUJTPQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXMgfHwgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzOyB0aGVuCisgICAgSU5UTF9NQUNPU1hfTElCUz0iLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICBmaQorICBBQ19TVUJTVChbSU5UTF9NQUNPU1hfTElCU10pCitdKQorCisjIGludG1heC5tNCBzZXJpYWwgNiAoZ2V0dGV4dC0wLjE4LjIpCitkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDUsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCitkbmwgVGVzdCB3aGV0aGVyIHRoZSBzeXN0ZW0gaGFzIHRoZSAnaW50bWF4X3QnIHR5cGUsIGJ1dCBkb24ndCBhdHRlbXB0IHRvCitkbmwgZmluZCBhIHJlcGxhY2VtZW50IGlmIGl0IGlzIGxhY2tpbmcuCisKK0FDX0RFRlVOKFtndF9UWVBFX0lOVE1BWF9UXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfQUNfSEVBREVSX0lOVFRZUEVTX0hdKQorICBBQ19SRVFVSVJFKFtnbF9BQ19IRUFERVJfU1RESU5UX0hdKQorICBBQ19DQUNIRV9DSEVDSyhbZm9yIGludG1heF90XSwgW2d0X2N2X2NfaW50bWF4X3RdLAorICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2VuZGlmCisgICAgICAgICAgXV0sCisgICAgICAgICAgW1tpbnRtYXhfdCB4ID0gLTE7CisgICAgICAgICAgICByZXR1cm4gIXg7XV0pXSwKKyAgICAgICBbZ3RfY3ZfY19pbnRtYXhfdD15ZXNdLAorICAgICAgIFtndF9jdl9jX2ludG1heF90PW5vXSldKQorICBpZiB0ZXN0ICRndF9jdl9jX2ludG1heF90ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0lOVE1BWF9UXSwgWzFdLAorICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ludG1heF90JyB0eXBlIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+Ll0pCisgIGZpCitdKQorCisjIGludHR5cGVzLXByaS5tNCBzZXJpYWwgNyAoZ2V0dGV4dC0wLjE4LjIpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDIsIDIwMDYsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK0FDX1BSRVJFUShbMi41M10pCisKKyMgRGVmaW5lIFBSSV9NQUNST1NfQlJPS0VOIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRlZmluZXMgdGhlIFBSSSoKKyMgbWFjcm9zIHRvIG5vbi1zdHJpbmcgdmFsdWVzLiAgVGhpcyBpcyB0aGUgY2FzZSBvbiBBSVggNC4zLjMuCisKK0FDX0RFRlVOKFtndF9JTlRUWVBFU19QUkldLAorWworICBBQ19DSEVDS19IRUFERVJTKFtpbnR0eXBlcy5oXSkKKyAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSB5ZXM7IHRoZW4KKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgaW50dHlwZXMuaCBQUkl4Tk4gbWFjcm9zIGFyZSBicm9rZW5dLAorICAgICAgW2d0X2N2X2ludHR5cGVzX3ByaV9icm9rZW5dLAorICAgICAgWworICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgIFtbCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpZmRlZiBQUklkMzIKK2NoYXIgKnAgPSBQUklkMzI7CisjZW5kaWYKKyAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICBbW11dKV0sCisgICAgICAgICAgW2d0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49bm9dLAorICAgICAgICAgIFtndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuPXllc10pCisgICAgICBdKQorICBmaQorICBpZiB0ZXN0ICIkZ3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1BSSV9NQUNST1NfQlJPS0VOXSwgWzFdLAorICAgICAgW0RlZmluZSBpZiA8aW50dHlwZXMuaD4gZXhpc3RzIGFuZCBkZWZpbmVzIHVudXNhYmxlIFBSSSogbWFjcm9zLl0pCisgICAgUFJJX01BQ1JPU19CUk9LRU49MQorICBlbHNlCisgICAgUFJJX01BQ1JPU19CUk9LRU49MAorICBmaQorICBBQ19TVUJTVChbUFJJX01BQ1JPU19CUk9LRU5dKQorXSkKKworIyBpbnR0eXBlc19oLm00IHNlcmlhbCAxMAorZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDA0LCAyMDA2LCAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gUGF1bCBFZ2dlcnQuCisKKyMgRGVmaW5lIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVggaWYgPGludHR5cGVzLmg+IGV4aXN0cywKKyMgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuCisKK0FDX0RFRlVOKFtnbF9BQ19IRUFERVJfSU5UVFlQRVNfSF0sCitbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgaW50dHlwZXMuaF0sIFtnbF9jdl9oZWFkZXJfaW50dHlwZXNfaF0sCisgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICAgICAgICAgIF1dLAorICAgICAgICAgIFtbdWludG1heF90IGkgPSAodWludG1heF90KSAtMTsgcmV0dXJuICFpO11dKV0sCisgICAgICAgW2dsX2N2X2hlYWRlcl9pbnR0eXBlc19oPXllc10sCisgICAgICAgW2dsX2N2X2hlYWRlcl9pbnR0eXBlc19oPW5vXSldKQorICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWF0sIFsxXSwKKyAgICAgIFtEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cywgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sCisgICAgICAgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4gXSkKKyAgZmkKK10pCisKKyMgbGNtZXNzYWdlLm00IHNlcmlhbCA3IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiwgMjAwNC0yMDA1LCAyMDA4LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorZG5sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUuCisKKyMgQ2hlY2sgd2hldGhlciBMQ19NRVNTQUdFUyBpcyBhdmFpbGFibGUgaW4gPGxvY2FsZS5oPi4KKworQUNfREVGVU4oW2d0X0xDX01FU1NBR0VTXSwKK1sKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBMQ19NRVNTQUdFU10sIFtndF9jdl92YWxfTENfTUVTU0FHRVNdLAorICAgIFtBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPGxvY2FsZS5oPl1dLAorICAgICAgICAgIFtbcmV0dXJuIExDX01FU1NBR0VTXV0pXSwKKyAgICAgICBbZ3RfY3ZfdmFsX0xDX01FU1NBR0VTPXllc10sCisgICAgICAgW2d0X2N2X3ZhbF9MQ19NRVNTQUdFUz1ub10pXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfdmFsX0xDX01FU1NBR0VTID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0xDX01FU1NBR0VTXSwgWzFdLAorICAgICAgW0RlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLl0pCisgIGZpCitdKQorCisjIGxpYi1sZC5tNCBzZXJpYWwgNgorZG5sIENvcHlyaWdodCAoQykgMTk5Ni0yMDAzLCAyMDA5LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIFN1YnJvdXRpbmVzIG9mIGxpYnRvb2wubTQsCitkbmwgd2l0aCByZXBsYWNlbWVudHMgcy9fKkxUX1BBVEgvQUNfTElCX1BST0cvIGFuZCBzL2x0Xy9hY2xfLyB0byBhdm9pZAorZG5sIGNvbGxpc2lvbiB3aXRoIGxpYnRvb2wubTQuCisKK2RubCBGcm9tIGxpYnRvb2wtMi40LiBTZXRzIHRoZSB2YXJpYWJsZSB3aXRoX2dudV9sZCB0byB5ZXMgb3Igbm8uCitBQ19ERUZVTihbQUNfTElCX1BST0dfTERfR05VXSwKK1tBQ19DQUNIRV9DSEVDSyhbaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGRdLCBbYWNsX2N2X3Byb2dfZ251X2xkXSwKK1sjIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiBoZXJlLCBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZHMgb25seSBhY2NlcHQgLXYuCitjYXNlIGAkTEQgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgorKkdOVSogfCAqJ3dpdGggQkZEJyopCisgIGFjbF9jdl9wcm9nX2dudV9sZD15ZXMKKyAgOzsKKyopCisgIGFjbF9jdl9wcm9nX2dudV9sZD1ubworICA7OworZXNhY10pCit3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCitdKQorCitkbmwgRnJvbSBsaWJ0b29sLTIuNC4gU2V0cyB0aGUgdmFyaWFibGUgTEQuCitBQ19ERUZVTihbQUNfTElCX1BST0dfTERdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorCitBQ19BUkdfV0lUSChbZ251LWxkXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLAorICAgICAgICBbYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXV0pXSwKKyAgICBbdGVzdCAiJHdpdGh2YWwiID0gbm8gfHwgd2l0aF9nbnVfbGQ9eWVzXSwKKyAgICBbd2l0aF9nbnVfbGQ9bm9dKWRubAorCisjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgICMgRGV0ZXJtaW5lIFBBVEhfU0VQQVJBVE9SIGJ5IHRyeWluZyB0byBmaW5kIC9iaW4vc2ggaW4gYSBQQVRIIHdoaWNoCisgICMgY29udGFpbnMgb25seSAvYmluLiBOb3RlIHRoYXQga3NoIGxvb2tzIGFsc28gYXQgdGhlIEZQQVRIIHZhcmlhYmxlLAorICAjIHNvIHdlIGhhdmUgdG8gc2V0IHRoYXQgYXMgd2VsbCBmb3IgdGhlIHRlc3QuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICYmIHsgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgXAorICAgICAgICAgICB8fCBQQVRIX1NFUEFSQVRPUj0nOycKKyAgICAgICB9CitmaQorCithY19wcm9nPWxkCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGQgdXNlZCBieSAkQ0NdKQorICBjYXNlICRob3N0IGluCisgICotKi1taW5ndyopCisgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndworICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKKyAgKikKKyAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CisgIGVzYWMKKyAgY2FzZSAkYWNfcHJvZyBpbgorICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgorICAgIFtbXFwvXV0qIHwgPzpbW1xcL11dKikKKyAgICAgIHJlX2RpcmVsdD0nL1tbXi9dXVtbXi9dXSovXC5cLi8nCisgICAgICAjIENhbm9uaWNhbGl6ZSB0aGUgcGF0aG5hbWUgb2YgbGQKKyAgICAgIGFjX3Byb2c9YGVjaG8gIiRhY19wcm9nInwgc2VkICdzJVxcXFwlLyVnJ2AKKyAgICAgIHdoaWxlIGVjaG8gIiRhY19wcm9nIiB8IGdyZXAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCisgICAgICAgIGFjX3Byb2c9YGVjaG8gJGFjX3Byb2d8IHNlZCAicyUkcmVfZGlyZWx0JS8lImAKKyAgICAgIGRvbmUKKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9IiRhY19wcm9nIgorICAgICAgOzsKKyAgIiIpCisgICAgIyBJZiBpdCBmYWlscywgdGhlbiBwcmV0ZW5kIHdlIGFyZW4ndCB1c2luZyBHQ0MuCisgICAgYWNfcHJvZz1sZAorICAgIDs7CisgICopCisgICAgIyBJZiBpdCBpcyByZWxhdGl2ZSwgdGhlbiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBsZCBpbiBQQVRILgorICAgIHdpdGhfZ251X2xkPXVua25vd24KKyAgICA7OworICBlc2FjCitlbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgR05VIGxkXSkKK2Vsc2UKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLUdOVSBsZF0pCitmaQorQUNfQ0FDSEVfVkFMKFthY2xfY3ZfcGF0aF9MRF0sCitbaWYgdGVzdCAteiAiJExEIjsgdGhlbgorICBhY2xfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgSUZTPSIkYWNsX3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCisgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKKyAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKKyAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCisgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KKyAgICAgIGNhc2UgYCIkYWNsX2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworICAgICAgICA7OworICAgICAgZXNhYworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkYWNsX3NhdmVfaWZzIgorZWxzZQorICBhY2xfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KK2ZpXSkKK0xEPSIkYWNsX2N2X3BhdGhfTEQiCitpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoWyRMRF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vXSkKK2ZpCit0ZXN0IC16ICIkTEQiICYmIEFDX01TR19FUlJPUihbbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEhdKQorQUNfTElCX1BST0dfTERfR05VCitdKQorCisjIGxpYi1saW5rLm00IHNlcmlhbCAyNiAoZ2V0dGV4dC0wLjE4LjIpCitkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19QUkVSRVEoWzIuNTRdKQorCitkbmwgQUNfTElCX0xJTktGTEFHUyhuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAorZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQKK2RubCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUuCitkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9X1BSRUZJWCB2YXJpYWJsZSB0byBub25lbXB0eSBpZiBsaWJuYW1lCitkbmwgd2FzIGZvdW5kIGluICR7TElCJHtOQU1FfV9QUkVGSVh9LyRhY2xfbGliZGlyc3RlbS4KK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgcHVzaGRlZihbTmFtZV0sW200X3RyYW5zbGl0KFskMV0sWy4vKy1dLCBbX19fX10pXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIEFDX0NBQ0hFX0NIRUNLKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lW11fbGlic10sIFsKKyAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKKyAgICBhY19jdl9saWJbXU5hbWVbXV9saWJzPSIkTElCW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicz0iJExUTElCW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzPSIkSU5DW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX3ByZWZpeD0iJExJQltdTkFNRVtdX1BSRUZJWCIKKyAgXSkKKyAgTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbGlicyIKKyAgTFRMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9sdGxpYnMiCisgIElOQ1tdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzIgorICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRhY19jdl9saWJbXU5hbWVbXV9wcmVmaXgiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUVbX1BSRUZJWF0pCisgIGRubCBBbHNvIHNldCBIQVZFX0xJQltdTkFNRSBzbyB0aGF0IEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gcmV1c2UgdGhlCisgIGRubCByZXN1bHRzIG9mIHRoaXMgc2VhcmNoIHdoZW4gdGhpcyBsaWJyYXJ5IGFwcGVhcnMgYXMgYSBkZXBlbmRlbmN5LgorICBIQVZFX0xJQltdTkFNRT15ZXMKKyAgcG9wZGVmKFtOQU1FXSkKKyAgcG9wZGVmKFtOYW1lXSkKK10pCisKK2RubCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MobmFtZSwgZGVwZW5kZW5jaWVzLCBpbmNsdWRlcywgdGVzdGNvZGUsIFttaXNzaW5nLW1lc3NhZ2VdKQorZG5sIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kCitkbmwgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCB0b2dldGhlciB3aXRoIHRoZSBzcGVjaWZpZWQgaW5jbHVkZSBmaWxlcyBhbmQKK2RubCB0aGUgYWJpbGl0eSB0byBjb21waWxlIGFuZCBsaW5rIHRoZSBzcGVjaWZpZWQgdGVzdGNvZGUuIFRoZSBtaXNzaW5nLW1lc3NhZ2UKK2RubCBkZWZhdWx0cyB0byAnbm8nIGFuZCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGhpbnRzIGZvciB0aGUgdXNlci4KK2RubCBJZiBmb3VuZCwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzIEhBVkVfTElCJHtOQU1FfT15ZXMgYW5kIHRoZSBMSUIke05BTUV9CitkbmwgYW5kIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kIGF1Z21lbnRzIHRoZSBDUFBGTEFHUyB2YXJpYWJsZSwgYW5kCitkbmwgI2RlZmluZXMgSEFWRV9MSUIke05BTUV9IHRvIDEuIE90aGVyd2lzZSwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzCitkbmwgSEFWRV9MSUIke05BTUV9PW5vIGFuZCBMSUIke05BTUV9IGFuZCBMVExJQiR7TkFNRX0gdG8gZW1wdHkuCitkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9X1BSRUZJWCB2YXJpYWJsZSB0byBub25lbXB0eSBpZiBsaWJuYW1lCitkbmwgd2FzIGZvdW5kIGluICR7TElCJHtOQU1FfV9QUkVGSVh9LyRhY2xfbGliZGlyc3RlbS4KK0FDX0RFRlVOKFtBQ19MSUJfSEFWRV9MSU5LRkxBR1NdLAorWworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorICBwdXNoZGVmKFtOYW1lXSxbbTRfdHJhbnNsaXQoWyQxXSxbLi8rLV0sIFtfX19fXSldKQorICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKworICBkbmwgU2VhcmNoIGZvciBsaWJbXU5hbWUgYW5kIGRlZmluZSBMSUJbXU5BTUUsIExUTElCW11OQU1FIGFuZCBJTkNbXU5BTUUKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKKworICBkbmwgQWRkICRJTkNbXU5BTUUgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCisgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliW11OYW1lIGFuZCBub3QgZGlzYWJsZWQgaXRzIHVzZQorICBkbmwgdmlhIC0td2l0aG91dC1saWJbXU5hbWUtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuCisgIGFjX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZV0sIFsKKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgorICAgIGRubCBJZiAkTElCW11OQU1FIGNvbnRhaW5zIHNvbWUgLWwgb3B0aW9ucywgYWRkIGl0IHRvIHRoZSBlbmQgb2YgTElCUywKKyAgICBkbmwgYmVjYXVzZSB0aGVzZSAtbCBvcHRpb25zIG1pZ2h0IHJlcXVpcmUgLUwgb3B0aW9ucyB0aGF0IGFyZSBwcmVzZW50IGluCisgICAgZG5sIExJQlMuIC1sIG9wdGlvbnMgYmVuZWZpdCBvbmx5IGZyb20gdGhlIC1MIG9wdGlvbnMgbGlzdGVkIGJlZm9yZSBpdC4KKyAgICBkbmwgT3RoZXJ3aXNlLCBhZGQgaXQgdG8gdGhlIGZyb250IG9mIExJQlMsIGJlY2F1c2UgaXQgbWF5IGJlIGEgc3RhdGljCisgICAgZG5sIGxpYnJhcnkgdGhhdCBkZXBlbmRzIG9uIGFub3RoZXIgc3RhdGljIGxpYnJhcnkgdGhhdCBpcyBwcmVzZW50IGluIExJQlMuCisgICAgZG5sIFN0YXRpYyBsaWJyYXJpZXMgYmVuZWZpdCBvbmx5IGZyb20gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGlzdGVkIGFmdGVyCisgICAgZG5sIGl0LgorICAgIGNhc2UgIiAkTElCW11OQU1FIiBpbgorICAgICAgKiIgLWwiKikgTElCUz0iJExJQlMgJExJQltdTkFNRSIgOzsKKyAgICAgICopICAgICAgIExJQlM9IiRMSUJbXU5BTUUgJExJQlMiIDs7CisgICAgZXNhYworICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgW0FDX0xBTkdfUFJPR1JBTShbWyQzXV0sIFtbJDRdXSldLAorICAgICAgW2FjX2N2X2xpYltdTmFtZT15ZXNdLAorICAgICAgW2FjX2N2X2xpYltdTmFtZT0nbTRfaWYoWyQ1XSwgW10sIFtub10sIFtbJDVdXSknXSkKKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgorICBdKQorICBpZiB0ZXN0ICIkYWNfY3ZfbGliW11OYW1lIiA9IHllczsgdGhlbgorICAgIEhBVkVfTElCW11OQU1FPXllcworICAgIEFDX0RFRklORShbSEFWRV9MSUJdTkFNRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliXVskMSBsaWJyYXJ5Ll0pCisgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdKQorICAgIEFDX01TR19SRVNVTFQoWyRMSUJbXU5BTUVdKQorICBlbHNlCisgICAgSEFWRV9MSUJbXU5BTUU9bm8KKyAgICBkbmwgSWYgJExJQltdTkFNRSBkaWRuJ3QgbGVhZCB0byBhIHVzYWJsZSBsaWJyYXJ5LCB3ZSBkb24ndCBuZWVkCisgICAgZG5sICRJTkNbXU5BTUUgZWl0aGVyLgorICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKKyAgICBMSUJbXU5BTUU9CisgICAgTFRMSUJbXU5BTUU9CisgICAgTElCW11OQU1FW11fUFJFRklYPQorICBmaQorICBBQ19TVUJTVChbSEFWRV9MSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQorICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FW19QUkVGSVhdKQorICBwb3BkZWYoW05BTUVdKQorICBwb3BkZWYoW05hbWVdKQorXSkKKworZG5sIERldGVybWluZSB0aGUgcGxhdGZvcm0gZGVwZW5kZW50IHBhcmFtZXRlcnMgbmVlZGVkIHRvIHVzZSBycGF0aDoKK2RubCAgIGFjbF9saWJleHQsCitkbmwgICBhY2xfc2hsaWJleHQsCitkbmwgICBhY2xfbGlibmFtZV9zcGVjLAorZG5sICAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYywKK2RubCAgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLAorZG5sICAgYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsCitkbmwgICBhY2xfaGFyZGNvZGVfZGlyZWN0LAorZG5sICAgYWNsX2hhcmRjb2RlX21pbnVzX0wuCitBQ19ERUZVTihbQUNfTElCX1JQQVRIXSwKK1sKKyAgZG5sIFRlbGwgYXV0b21ha2UgPj0gMS4xMCB0byBjb21wbGFpbiBpZiBjb25maWcucnBhdGggaXMgbWlzc2luZy4KKyAgbTRfaWZkZWYoW0FDX1JFUVVJUkVfQVVYX0ZJTEVdLCBbQUNfUkVRVUlSRV9BVVhfRklMRShbY29uZmlnLnJwYXRoXSldKQorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkgICAgICAgICAgICAgICAgZG5sIHdlIHVzZSAkQ0MsICRHQ0MsICRMREZMQUdTCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUk9HX0xEXSkgICAgICAgICAgICBkbmwgd2UgdXNlICRMRCwgJHdpdGhfZ251X2xkCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkgICAgICAgICBkbmwgd2UgdXNlICRob3N0CisgIEFDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKSBkbmwgd2UgdXNlICRhY19hdXhfZGlyCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luXSwgW2FjbF9jdl9ycGF0aF0sIFsKKyAgICBDQz0iJENDIiBHQ0M9IiRHQ0MiIExERkxBR1M9IiRMREZMQUdTIiBMRD0iJExEIiB3aXRoX2dudV9sZD0iJHdpdGhfZ251X2xkIiBcCisgICAgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0IiA+IGNvbmZ0ZXN0LnNoCisgICAgLiAuL2NvbmZ0ZXN0LnNoCisgICAgcm0gLWYgLi9jb25mdGVzdC5zaAorICAgIGFjbF9jdl9ycGF0aD1kb25lCisgIF0pCisgIHdsPSIkYWNsX2N2X3dsIgorICBhY2xfbGliZXh0PSIkYWNsX2N2X2xpYmV4dCIKKyAgYWNsX3NobGliZXh0PSIkYWNsX2N2X3NobGliZXh0IgorICBhY2xfbGlibmFtZV9zcGVjPSIkYWNsX2N2X2xpYm5hbWVfc3BlYyIKKyAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYz0iJGFjbF9jdl9saWJyYXJ5X25hbWVzX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCisgIGFjbF9oYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgorICBhY2xfaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9oYXJkY29kZV9taW51c19MIgorICBkbmwgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgcnBhdGggaGFuZGxpbmcgYXQgYWxsLgorICBBQ19BUkdfRU5BQkxFKFtycGF0aF0sCisgICAgWyAgLS1kaXNhYmxlLXJwYXRoICAgICAgICAgZG8gbm90IGhhcmRjb2RlIHJ1bnRpbWUgbGlicmFyeSBwYXRoc10sCisgICAgOiwgZW5hYmxlX3JwYXRoPXllcykKK10pCisKK2RubCBBQ19MSUJfRlJPTVBBQ0tBR0UobmFtZSwgcGFja2FnZSkKK2RubCBkZWNsYXJlcyB0aGF0IGxpYm5hbWUgY29tZXMgZnJvbSB0aGUgZ2l2ZW4gcGFja2FnZS4gVGhlIGNvbmZpZ3VyZSBmaWxlCitkbmwgd2lsbCB0aGVuIG5vdCBoYXZlIGEgLS13aXRoLWxpYm5hbWUtcHJlZml4IG9wdGlvbiBidXQgYQorZG5sIC0td2l0aC1wYWNrYWdlLXByZWZpeCBvcHRpb24uIFNldmVyYWwgbGlicmFyaWVzIGNhbiBjb21lIGZyb20gdGhlIHNhbWUKK2RubCBwYWNrYWdlLiBUaGlzIGRlY2xhcmF0aW9uIG11c3Qgb2NjdXIgYmVmb3JlIGFuIEFDX0xJQl9MSU5LRkxBR1Mgb3Igc2ltaWxhcgorZG5sIG1hY3JvIGNhbGwgdGhhdCBzZWFyY2hlcyBmb3IgbGlibmFtZS4KK0FDX0RFRlVOKFtBQ19MSUJfRlJPTVBBQ0tBR0VdLAorWworICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgZGVmaW5lKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFskMl0pCisgIHBvcGRlZihbTkFNRV0pCisgIHB1c2hkZWYoW1BBQ0tdLFskMl0pCisgIHB1c2hkZWYoW1BBQ0tVUF0sW200X3RyYW5zbGl0KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgZGVmaW5lKFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLAorICAgIG00X2lmZGVmKFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLCBbbTRfZGVmbihbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUClbLCBdXSwpW2xpYiQxXSkKKyAgcG9wZGVmKFtQQUNLVVBdKQorICBwb3BkZWYoW1BBQ0tdKQorXSkKKworZG5sIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAorZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgorZG5sIFNldHMgdGhlIExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBhbmQgSU5DJHtOQU1FfSB2YXJpYWJsZXMuCitkbmwgQWxzbywgc2V0cyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZSB3YXMgZm91bmQKK2RubCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdKQorICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgcHVzaGRlZihbUEFDS10sW200X2lmZGVmKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIGxpYlskMV0pXSkKKyAgcHVzaGRlZihbUEFDS1VQXSxbbTRfdHJhbnNsaXQoUEFDSyxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBwdXNoZGVmKFtQQUNLTElCU10sW200X2lmZGVmKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLCBsaWJbJDFdKV0pCisgIGRubCBBdXRvY29uZiA+PSAyLjYxIHN1cHBvcnRzIGRvdHMgaW4gLS13aXRoIG9wdGlvbnMuCisgIHB1c2hkZWYoW1BfQV9DX0tdLFttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbbTRfUEFDS0FHRV9WRVJTSU9OXSksWzIuNjFdKSxbLTFdLFttNF90cmFuc2xpdChQQUNLLFsuXSxbX10pXSxQQUNLKV0pCisgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgorICB1c2VfYWRkaXRpb25hbD15ZXMKKyAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgIF0pCisgIEFDX0FSR19XSVRIKFBfQV9DX0tbLXByZWZpeF0sCitbWyAgLS13aXRoLV1dUF9BX0NfS1tbLXByZWZpeFs9RElSXSAgc2VhcmNoIGZvciBdUEFDS0xJQlNbIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1dXVBfQV9DX0tbWy1wcmVmaXggICAgIGRvbid0IHNlYXJjaCBmb3IgXVBBQ0tMSUJTWyBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdXSwKK1sKKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCisgICAgZWxzZQorICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgorICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgICAgICAgXSkKKyAgICAgIGVsc2UKKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgorICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIgorICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYmRpcnN0ZW0yIiAhPSAiJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICYmICEgdGVzdCAtZCAiJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgorICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0yIgorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorXSkKKyAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kCisgIGRubCAkTERGTEFHUy4gVXNpbmcgYnJlYWR0aC1maXJzdC1zZWFjaC4KKyAgTElCW11OQU1FPQorICBMVExJQltdTkFNRT0KKyAgSU5DW11OQU1FPQorICBMSUJbXU5BTUVbXV9QUkVGSVg9CisgIGRubCBIQVZFX0xJQiR7TkFNRX0gaXMgYW4gaW5kaWNhdG9yIHRoYXQgTElCJHtOQU1FfSwgTFRMSUIke05BTUV9IGhhdmUgYmVlbgorICBkbmwgY29tcHV0ZWQuIFNvIGl0IGhhcyB0byBiZSByZXNldCBoZXJlLgorICBIQVZFX0xJQltdTkFNRT0KKyAgcnBhdGhkaXJzPQorICBsdHJwYXRoZGlycz0KKyAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPQorICBuYW1lc19uZXh0X3JvdW5kPSckMSAkMicKKyAgd2hpbGUgdGVzdCAtbiAiJG5hbWVzX25leHRfcm91bmQiOyBkbworICAgIG5hbWVzX3RoaXNfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kIgorICAgIG5hbWVzX25leHRfcm91bmQ9CisgICAgZm9yIG5hbWUgaW4gJG5hbWVzX3RoaXNfcm91bmQ7IGRvCisgICAgICBhbHJlYWR5X2hhbmRsZWQ9CisgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbworICAgICAgICBpZiB0ZXN0ICIkbiIgPSAiJG5hbWUiOyB0aGVuCisgICAgICAgICAgYWxyZWFkeV9oYW5kbGVkPXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgorICAgICAgICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9IiRuYW1lc19hbHJlYWR5X2hhbmRsZWQgJG5hbWUiCisgICAgICAgIGRubCBTZWUgaWYgaXQgd2FzIGFscmVhZHkgbG9jYXRlZCBieSBhbiBlYXJsaWVyIEFDX0xJQl9MSU5LRkxBR1MKKyAgICAgICAgZG5sIG9yIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYWxsLgorICAgICAgICB1cHBlcm5hbWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19ffCdgCisgICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCisgICAgICAgIGlmIHRlc3QgLW4gIiR2YWx1ZSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kdmFsdWUiCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgorICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSR2YWx1ZSIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBkbmwgQW4gZWFybGllciBjYWxsIHRvIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBoYXMgZGV0ZXJtaW5lZAorICAgICAgICAgICAgZG5sIHRoYXQgdGhpcyBsaWJyYXJ5IGRvZXNuJ3QgZXhpc3QuIFNvIGp1c3QgZHJvcCBpdC4KKyAgICAgICAgICAgIDoKKyAgICAgICAgICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBsaWIkbmFtZSBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kICRMREZMQUdTCisgICAgICAgICAgZG5sIGFuZCB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRS8kTFRMSUJOQU1FLgorICAgICAgICAgIGZvdW5kX2Rpcj0KKyAgICAgICAgICBmb3VuZF9sYT0KKyAgICAgICAgICBmb3VuZF9zbz0KKyAgICAgICAgICBmb3VuZF9hPQorICAgICAgICAgIGV2YWwgbGlibmFtZT1cIiRhY2xfbGlibmFtZV9zcGVjXCIgICAgIyB0eXBpY2FsbHk6IGxpYm5hbWU9bGliJG5hbWUKKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgc2hyZXh0PSIuJGFjbF9zaGxpYmV4dCIgICAgICAgICAgICAgIyB0eXBpY2FsbHk6IHNocmV4dD0uc28KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzaHJleHQ9CisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgICAgICAgICAgZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICBkbmwgVGhlIHNhbWUgY29kZSBhcyBpbiB0aGUgbG9vcCBiZWxvdzoKKyAgICAgICAgICAgIGRubCBGaXJzdCBsb29rIGZvciBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkbmwgVGhlbiBsb29rIGZvciBhIHN0YXRpYyBsaWJyYXJ5LgorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLmxhIjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRsaWJuYW1lLmxhIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbworICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICBjYXNlICIkeCIgaW4KKyAgICAgICAgICAgICAgICAtTCopCisgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkeCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKyAgICAgICAgICAgICAgICAgIGRubCBGaXJzdCBsb29rIGZvciBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkbmwgVGhlbiBsb29rIGZvciBhIHN0YXRpYyBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLmxhIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRsaWJuYW1lLmxhIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICBkbmwgRm91bmQgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9zbyIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzaGFyZWQgbGlicmFyeS4gV2UgYXR0ZW1wdCB0byBoYXJkY29kZSBpdHMKKyAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeSBpbnRvIHRoZSBleGVjdXRhYmxlJ3MgcnVucGF0aCwgdW5sZXNzIGl0J3MgdGhlCisgICAgICAgICAgICAgIGRubCBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgPSBubyBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgZG5sIE5vIGhhcmRjb2RpbmcgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZworICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCisgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRubCBUaGUgaGFyZGNvZGluZyBpbnRvICRMSUJOQU1FIGlzIHN5c3RlbSBkZXBlbmRlbnQuCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgICBkbmwgVXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgZG5sIHJlc3VsdGluZyBiaW5hcnkuCisgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCisgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZG5sIFJlbHkgb24gIi1MJGZvdW5kX2RpciIuCisgICAgICAgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0IGlmIGl0J3MgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIExERkxBR1MKKyAgICAgICAgICAgICAgICAgICAgZG5sIG9yIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiICE9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgIi1MJGZvdW5kX2RpciAtbCRuYW1lIiBvciAiLUwkZm91bmRfZGlyICRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGRubCBXZSBjYW5ub3QgdXNlICRhY2xfaGFyZGNvZGVfcnVucGF0aF92YXIgYW5kIExEX1JVTl9QQVRICisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUsIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGZpdCBpbiBmbGFncyBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGNvbXBpbGVyLiBTbyBnaXZlIHVwLiBObyBoYXJkY29kaW5nLiBUaGlzIGFmZmVjdHMgb25seQorICAgICAgICAgICAgICAgICAgICAgIGRubCB2ZXJ5IG9sZCBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2EiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9hIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG5sIFdlIHNob3VsZG4ndCBjb21lIGhlcmUsIGJ1dCBhbnl3YXkgaXQncyBnb29kIHRvIGhhdmUgYQorICAgICAgICAgICAgICAgIGRubCBmYWxsYmFjay4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRubCBBc3N1bWUgdGhlIGluY2x1ZGUgZmlsZXMgYXJlIG5lYXJieS4KKyAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0KKyAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9kaXIiIGluCisgICAgICAgICAgICAgICovJGFjbF9saWJkaXJzdGVtIHwgKi8kYWNsX2xpYmRpcnN0ZW0vKQorICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtLyInKiQsLCdgCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiID0gJyQxJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCW11OQU1FW11fUFJFRklYPSIkYmFzZWRpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbTIgfCAqLyRhY2xfbGliZGlyc3RlbTIvKQorICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtMi8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICckMSc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRVtdX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgorICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCisgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgICAgICAgICAgICBkbmwgICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1Mgb3IgdGhlIGFscmVhZHkKKyAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJElOQ05BTUUsCisgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGZvciB4IGluICRDUFBGTEFHUyAkSU5DW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJElOQ05BTUUuCisgICAgICAgICAgICAgICAgICAgICAgSU5DW11OQU1FPSIke0lOQ1tdTkFNRX0ke0lOQ1tdTkFNRTorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG5sIExvb2sgZm9yIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4KKyAgICAgICAgICAgICAgZG5sIFJlYWQgdGhlIC5sYSBmaWxlLiBJdCBkZWZpbmVzIHRoZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgZG5sIGRsbmFtZSwgbGlicmFyeV9uYW1lcywgb2xkX2xpYnJhcnksIGRlcGVuZGVuY3lfbGlicywgY3VycmVudCwKKyAgICAgICAgICAgICAgZG5sIGFnZSwgcmV2aXNpb24sIGluc3RhbGxlZCwgZGxvcGVuLCBkbHByZW9wZW4sIGxpYmRpci4KKyAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9sYSIgaW4KKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgICAgKikgLiAiLi8kZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAgIGRubCBXZSB1c2Ugb25seSBkZXBlbmRlbmN5X2xpYnMuCisgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgorICAgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FIGFuZCAkTFRMSUJOQU1FLgorICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgICAgICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1Mgb3IgdGhlIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJExJQk5BTUUsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMVExJQk5BTUUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgIC1SKikKKyAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgIT0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTElCTkFNRSBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgLWwqKQorICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuCisgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLWwvLydgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqLmxhKQorICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuIFRocm93IGF3YXkgdGhlIC5sYSdzCisgICAgICAgICAgICAgICAgICAgIGRubCBkaXJlY3Rvcnk7IGl0IGlzIGFscmVhZHkgY29udGFpbmVkIGluIGEgcHJlY2VkaW5nIC1MCisgICAgICAgICAgICAgICAgICAgIGRubCBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICBkbmwgTW9zdCBsaWtlbHkgYW4gaW1tZWRpYXRlIGxpYnJhcnkgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSRkZXAiCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICBmaQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRubCBEaWRuJ3QgZmluZCB0aGUgbGlicmFyeTsgYXNzdW1lIGl0IGlzIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMKKyAgICAgICAgICAgIGRubCBrbm93biB0byB0aGUgbGlua2VyIGFuZCBydW50aW1lIGxvYWRlci4gKEFsbCB0aGUgc3lzdGVtCisgICAgICAgICAgICBkbmwgZGlyZWN0b3JpZXMga25vd24gdG8gdGhlIGxpbmtlciBzaG91bGQgYWxzbyBiZSBrbm93biB0byB0aGUKKyAgICAgICAgICAgIGRubCBydW50aW1lIGxvYWRlciwgb3RoZXJ3aXNlIHRoZSBzeXN0ZW0gaXMgc2V2ZXJlbHkgbWlzY29uZmlndXJlZC4pCisgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCisgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1sJG5hbWUiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCisgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyIG11c3QKKyAgICAgIGRubCBwYXNzIGFsbCBwYXRoIGVsZW1lbnRzIGluIG9uZSBvcHRpb24uIFdlIGNhbiBhcnJhbmdlIHRoYXQgZm9yIGEKKyAgICAgIGRubCBzaW5nbGUgbGlicmFyeSwgYnV0IG5vdCB3aGVuIG1vcmUgdGhhbiBvbmUgJExJQk5BTUVzIGFyZSB1c2VkLgorICAgICAgYWxsZGlycz0KKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yfSRmb3VuZF9kaXIiCisgICAgICBkb25lCisgICAgICBkbmwgTm90ZTogYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgdXNlcyAkbGliZGlyIGFuZCAkd2wuCisgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICBsaWJkaXI9IiRhbGxkaXJzIgorICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCisgICAgZWxzZQorICAgICAgZG5sIFRoZSAtcnBhdGggb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICBsaWJkaXI9IiRmb3VuZF9kaXIiCisgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZmxhZyIKKyAgICAgIGRvbmUKKyAgICBmaQorICBmaQorICBpZiB0ZXN0ICJYJGx0cnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBkbmwgV2hlbiB1c2luZyBsaWJ0b29sLCB0aGUgb3B0aW9uIHRoYXQgd29ya3MgZm9yIGJvdGggbGlicmFyaWVzIGFuZAorICAgIGRubCBleGVjdXRhYmxlcyBpcyAtUi4gVGhlIC1SIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgZm9yIGZvdW5kX2RpciBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1SJGZvdW5kX2RpciIKKyAgICBkb25lCisgIGZpCisgIHBvcGRlZihbUF9BX0NfS10pCisgIHBvcGRlZihbUEFDS0xJQlNdKQorICBwb3BkZWYoW1BBQ0tVUF0pCisgIHBvcGRlZihbUEFDS10pCisgIHBvcGRlZihbTkFNRV0pCitdKQorCitkbmwgQUNfTElCX0FQUEVORFRPVkFSKFZBUiwgQ09OVEVOVFMpIGFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIENPTlRFTlRTIHRvIFZBUiwKK2RubCB1bmxlc3MgYWxyZWFkeSBwcmVzZW50IGluIFZBUi4KK2RubCBXb3JrcyBvbmx5IGZvciBDUFBGTEFHUywgbm90IGZvciBMSUIqIHZhcmlhYmxlcyBiZWNhdXNlIHRoYXQgc29tZXRpbWVzCitkbmwgY29udGFpbnMgdHdvIG9yIHRocmVlIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYmVsb25nIHRvZ2V0aGVyLgorQUNfREVGVU4oW0FDX0xJQl9BUFBFTkRUT1ZBUl0sCitbCisgIGZvciBlbGVtZW50IGluIFskMl07IGRvCisgICAgaGF2ZWl0PQorICAgIGZvciB4IGluICRbJDFdOyBkbworICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRlbGVtZW50IjsgdGhlbgorICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgWyQxXT0iJHtbJDFdfSR7WyQxXTorIH0kZWxlbWVudCIKKyAgICBmaQorICBkb25lCitdKQorCitkbmwgRm9yIHRob3NlIGNhc2VzIHdoZXJlIGEgdmFyaWFibGUgY29udGFpbnMgc2V2ZXJhbCAtTCBhbmQgLWwgb3B0aW9ucworZG5sIHJlZmVycmluZyB0byB1bmtub3duIGxpYnJhcmllcyBhbmQgZGlyZWN0b3JpZXMsIHRoaXMgbWFjcm8gZGV0ZXJtaW5lcyB0aGUKK2RubCBuZWNlc3NhcnkgYWRkaXRpb25hbCBsaW5rZXIgb3B0aW9ucyBmb3IgdGhlIHJ1bnRpbWUgcGF0aC4KK2RubCBBQ19MSUJfTElOS0ZMQUdTX0ZST01fTElCUyhbTERBRERWQVJdLCBbTElCU1ZBTFVFXSwgW1VTRS1MSUJUT09MXSkKK2RubCBzZXRzIExEQUREVkFSIHRvIGxpbmtlciBvcHRpb25zIG5lZWRlZCB0b2dldGhlciB3aXRoIExJQlNWQUxVRS4KK2RubCBJZiBVU0UtTElCVE9PTCBldmFsdWF0ZXMgdG8gbm9uLWVtcHR5LCBsaW5raW5nIHdpdGggbGlidG9vbCBpcyBhc3N1bWVkLAorZG5sIG90aGVyd2lzZSBsaW5raW5nIHdpdGhvdXQgbGlidG9vbCBpcyBhc3N1bWVkLgorQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NfRlJPTV9MSUJTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdKQorICAkMT0KKyAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgIT0gbm87IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgZGlyZWN0b3JpZXMgaW50byB0aGUgcmVzdWx0aW5nCisgICAgICBkbmwgYmluYXJ5LgorICAgICAgcnBhdGhkaXJzPQorICAgICAgbmV4dD0KKyAgICAgIGZvciBvcHQgaW4gJDI7IGRvCisgICAgICAgIGlmIHRlc3QgLW4gIiRuZXh0IjsgdGhlbgorICAgICAgICAgIGRpcj0iJG5leHQiCisgICAgICAgICAgZG5sIE5vIG5lZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3IvbGliLgorICAgICAgICAgIGlmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgJiYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgZmkKKyAgICAgICAgICBuZXh0PQorICAgICAgICBlbHNlCisgICAgICAgICAgY2FzZSAkb3B0IGluCisgICAgICAgICAgICAtTCkgbmV4dD15ZXMgOzsKKyAgICAgICAgICAgIC1MKikgZGlyPWBlY2hvICJYJG9wdCIgfCBzZWQgLWUgJ3MsXlgtTCwsJ2AKKyAgICAgICAgICAgICAgICAgZG5sIE5vIG5lZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3IvbGliLgorICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgIG5leHQ9IDs7CisgICAgICAgICAgICAqKSBuZXh0PSA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAtbiAiIiQzIiI7IHRoZW4KKyAgICAgICAgICBkbmwgbGlidG9vbCBpcyB1c2VkIGZvciBsaW5raW5nLiBVc2UgLVIgb3B0aW9ucy4KKyAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAkMT0iJHskMX0keyQxOisgfS1SJGRpciIKKyAgICAgICAgICBkb25lCisgICAgICAgIGVsc2UKKyAgICAgICAgICBkbmwgVGhlIGxpbmtlciBpcyB1c2VkIGZvciBsaW5raW5nIGRpcmVjdGx5LgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKyAgICAgICAgICAgIGRubCBXZWlyZCBwbGF0Zm9ybTogb25seSB0aGUgbGFzdCAtcnBhdGggb3B0aW9uIGNvdW50cywgdGhlIHVzZXIKKyAgICAgICAgICAgIGRubCBtdXN0IHBhc3MgYWxsIHBhdGggZWxlbWVudHMgaW4gb25lIG9wdGlvbi4KKyAgICAgICAgICAgIGFsbGRpcnM9CisgICAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZGlyIgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgbGliZGlyPSIkYWxsZGlycyIKKyAgICAgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAkMT0iJGZsYWciCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZG5sIFRoZSAtcnBhdGggb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KKyAgICAgICAgICAgIGZvciBkaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBsaWJkaXI9IiRkaXIiCisgICAgICAgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgICAgICAgJDE9IiR7JDF9JHskMTorIH0kZmxhZyIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbJDFdKQorXSkKKworIyBsaWItcHJlZml4Lm00IHNlcmlhbCA3IChnZXR0ZXh0LTAuMTgpCitkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDUsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK2RubCBBQ19MSUJfQVJHX1dJVEggaXMgc3lub255bW91cyB0byBBQ19BUkdfV0lUSCBpbiBhdXRvY29uZi0yLjEzLCBhbmQKK2RubCBzaW1pbGFyIHRvIEFDX0FSR19XSVRIIGluIGF1dG9jb25mIDIuNTIuLi4yLjU3IGV4Y2VwdCB0aGF0IGlzIGRvZXNuJ3QKK2RubCByZXF1aXJlIGV4Y2Vzc2l2ZSBicmFja2V0aW5nLgoraWZkZWYoW0FDX0hFTFBfU1RSSU5HXSwKK1tBQ19ERUZVTihbQUNfTElCX0FSR19XSVRIXSwgW0FDX0FSR19XSVRIKFskMV0sW1skMl1dLFskM10sWyQ0XSldKV0sCitbQUNfREVGVU4oW0FDX11bTElCX0FSR19XSVRIXSwgW0FDX0FSR19XSVRIKFskMV0sWyQyXSxbJDNdLFskNF0pXSldKQorCitkbmwgQUNfTElCX1BSRUZJWCBhZGRzIHRvIHRoZSBDUFBGTEFHUyBhbmQgTERGTEFHUyB0aGUgZmxhZ3MgdGhhdCBhcmUgbmVlZGVkCitkbmwgdG8gYWNjZXNzIHByZXZpb3VzbHkgaW5zdGFsbGVkIGxpYnJhcmllcy4gVGhlIGJhc2ljIGFzc3VtcHRpb24gaXMgdGhhdAorZG5sIGEgdXNlciB3aWxsIHdhbnQgcGFja2FnZXMgdG8gdXNlIG90aGVyIHBhY2thZ2VzIGhlIHByZXZpb3VzbHkgaW5zdGFsbGVkCitkbmwgd2l0aCB0aGUgc2FtZSAtLXByZWZpeCBvcHRpb24uCitkbmwgVGhpcyBtYWNybyBpcyBub3QgbmVlZGVkIGlmIG9ubHkgQUNfTElCX0xJTktGTEFHUyBpcyB1c2VkIHRvIGxvY2F0ZQorZG5sIGxpYnJhcmllcywgYnV0IGlzIG90aGVyd2lzZSB2ZXJ5IGNvbnZlbmllbnQuCitBQ19ERUZVTihbQUNfTElCX1BSRUZJWF0sCitbCisgIEFDX0JFRk9SRShbJDBdLCBbQUNfTElCX0xJTktGTEFHU10pCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX01VTFRJTElCXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgZG5sIEJ5IGRlZmF1bHQsIGxvb2sgaW4gJGluY2x1ZGVkaXIgYW5kICRsaWJkaXIuCisgIHVzZV9hZGRpdGlvbmFsPXllcworICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgXSkKKyAgQUNfTElCX0FSR19XSVRIKFtsaWItcHJlZml4XSwKK1sgIC0td2l0aC1saWItcHJlZml4Wz1ESVJdIHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1saWItcHJlZml4ICAgIGRvbid0IHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl0sCitbCisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgICAgICAgIF0pCisgICAgICBlbHNlCisgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKyAgICAgIGZpCisgICAgZmkKK10pCisgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCisgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KKyAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1MsCisgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2luY2x1ZGUgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KKyAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICBoYXZlaXQ9CisgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KKyAgICAgICAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCisgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUywKKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvbGliIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgIGhhdmVpdD0KKyAgICAgIGZvciB4IGluICRMREZMQUdTOyBkbworICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgZXNhYworICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgorICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSR7TERGTEFHUzorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICBmaQorXSkKKworZG5sIEFDX0xJQl9QUkVQQVJFX1BSRUZJWCBjcmVhdGVzIHZhcmlhYmxlcyBhY2xfZmluYWxfcHJlZml4LAorZG5sIGFjbF9maW5hbF9leGVjX3ByZWZpeCwgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIHdoaWNoICRwcmVmaXggYW5kCitkbmwgJGV4ZWNfcHJlZml4IHdpbGwgZXhwYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCitBQ19ERUZVTihbQUNfTElCX1BSRVBBUkVfUFJFRklYXSwKK1sKKyAgZG5sIFVuZm9ydHVuYXRlbHksIHByZWZpeCBhbmQgZXhlY19wcmVmaXggZ2V0IG9ubHkgZmluYWxseSBkZXRlcm1pbmVkCisgIGRubCBhdCB0aGUgZW5kIG9mIGNvbmZpZ3VyZS4KKyAgaWYgdGVzdCAiWCRwcmVmaXgiID0gIlhOT05FIjsgdGhlbgorICAgIGFjbF9maW5hbF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKyAgZWxzZQorICAgIGFjbF9maW5hbF9wcmVmaXg9IiRwcmVmaXgiCisgIGZpCisgIGlmIHRlc3QgIlgkZXhlY19wcmVmaXgiID0gIlhOT05FIjsgdGhlbgorICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0nJHtwcmVmaXh9JworICBlbHNlCisgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGZpCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgZXZhbCBhY2xfZmluYWxfZXhlY19wcmVmaXg9XCIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4XCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorXSkKKworZG5sIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbc3RhdGVtZW50XSkgZXZhbHVhdGVzIHN0YXRlbWVudCwgd2l0aCB0aGUKK2RubCB2YXJpYWJsZXMgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBib3VuZCB0byB0aGUgdmFsdWVzIHRoZXkgd2lsbCBoYXZlCitkbmwgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdC4KK0FDX0RFRlVOKFtBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVhdLAorWworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICAkMQorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCitdKQorCitkbmwgQUNfTElCX1BSRVBBUkVfTVVMVElMSUIgY3JlYXRlcworZG5sIC0gYSB2YXJpYWJsZSBhY2xfbGliZGlyc3RlbSwgY29udGFpbmluZyB0aGUgYmFzZW5hbWUgb2YgdGhlIGxpYmRpciwgZWl0aGVyCitkbmwgICAibGliIiBvciAibGliNjQiIG9yICJsaWIvNjQiLAorZG5sIC0gYSB2YXJpYWJsZSBhY2xfbGliZGlyc3RlbTIsIGFzIGEgc2Vjb25kYXJ5IHBvc3NpYmxlIHZhbHVlIGZvcgorZG5sICAgYWNsX2xpYmRpcnN0ZW0sIGVpdGhlciB0aGUgc2FtZSBhcyBhY2xfbGliZGlyc3RlbSBvciAibGliL3NwYXJjdjkiIG9yCitkbmwgICAibGliL2FtZDY0Ii4KK0FDX0RFRlVOKFtBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQl0sCitbCisgIGRubCBUaGVyZSBpcyBubyBmb3JtYWwgc3RhbmRhcmQgcmVnYXJkaW5nIGxpYiBhbmQgbGliNjQuCisgIGRubCBPbiBnbGliYyBzeXN0ZW1zLCB0aGUgY3VycmVudCBwcmFjdGljZSBpcyB0aGF0IG9uIGEgc3lzdGVtIHN1cHBvcnRpbmcKKyAgZG5sIDMyLWJpdCBhbmQgNjQtYml0IGluc3RydWN0aW9uIHNldHMgb3IgQUJJcywgNjQtYml0IGxpYnJhcmllcyBnbyB1bmRlcgorICBkbmwgJHByZWZpeC9saWI2NCBhbmQgMzItYml0IGxpYnJhcmllcyBnbyB1bmRlciAkcHJlZml4L2xpYi4gV2UgZGV0ZXJtaW5lCisgIGRubCB0aGUgY29tcGlsZXIncyBkZWZhdWx0IG1vZGUgYnkgbG9va2luZyBhdCB0aGUgY29tcGlsZXIncyBsaWJyYXJ5IHNlYXJjaAorICBkbmwgcGF0aC4gSWYgYXQgbGVhc3Qgb25lIG9mIGl0cyBlbGVtZW50cyBlbmRzIGluIC9saWI2NCBvciBwb2ludHMgdG8gYQorICBkbmwgZGlyZWN0b3J5IHdob3NlIGFic29sdXRlIHBhdGhuYW1lIGVuZHMgaW4gL2xpYjY0LCB3ZSBhc3N1bWUgYSA2NC1iaXQgQUJJLgorICBkbmwgT3RoZXJ3aXNlIHdlIHVzZSB0aGUgZGVmYXVsdCwgbmFtZWx5ICJsaWIiLgorICBkbmwgT24gU29sYXJpcyBzeXN0ZW1zLCB0aGUgY3VycmVudCBwcmFjdGljZSBpcyB0aGF0IG9uIGEgc3lzdGVtIHN1cHBvcnRpbmcKKyAgZG5sIDMyLWJpdCBhbmQgNjQtYml0IGluc3RydWN0aW9uIHNldHMgb3IgQUJJcywgNjQtYml0IGxpYnJhcmllcyBnbyB1bmRlcgorICBkbmwgJHByZWZpeC9saWIvNjQgKHdoaWNoIGlzIGEgc3ltbGluayB0byBlaXRoZXIgJHByZWZpeC9saWIvc3BhcmN2OSBvcgorICBkbmwgJHByZWZpeC9saWIvYW1kNjQpIGFuZCAzMi1iaXQgbGlicmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliLgorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIGFjbF9saWJkaXJzdGVtPWxpYgorICBhY2xfbGliZGlyc3RlbTI9CisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIHNvbGFyaXMqKQorICAgICAgZG5sIFNlZSBTb2xhcmlzIDEwIFNvZnR3YXJlIERldmVsb3BlciBDb2xsZWN0aW9uID4gU29sYXJpcyA2NC1iaXQgRGV2ZWxvcGVyJ3MgR3VpZGUgPiBUaGUgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQKKyAgICAgIGRubCA8aHR0cDovL2RvY3Muc3VuLmNvbS9hcHAvZG9jcy9kb2MvODE2LTUxMzgvZGV2LWVudj9sPWVuJmE9dmlldz4uCisgICAgICBkbmwgIlBvcnRhYmxlIE1ha2VmaWxlcyBzaG91bGQgcmVmZXIgdG8gYW55IGxpYnJhcnkgZGlyZWN0b3JpZXMgdXNpbmcgdGhlIDY0IHN5bWJvbGljIGxpbmsuIgorICAgICAgZG5sIEJ1dCB3ZSB3YW50IHRvIHJlY29nbml6ZSB0aGUgc3BhcmN2OSBvciBhbWQ2NCBzdWJkaXJlY3RvcnkgYWxzbyBpZiB0aGUKKyAgICAgIGRubCBzeW1saW5rIGlzIG1pc3NpbmcsIHNvIHdlIHNldCBhY2xfbGliZGlyc3RlbTIgdG9vLgorICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciA2NC1iaXQgaG9zdF0sIFtnbF9jdl9zb2xhcmlzXzY0Yml0XSwKKyAgICAgICAgW0FDX0VHUkVQX0NQUChbc2l4dHlmb3VyIGJpdHNdLCBbCisjaWZkZWYgX0xQNjQKK3NpeHR5Zm91ciBiaXRzCisjZW5kaWYKKyAgICAgICAgICAgXSwgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9eWVzXSwgW2dsX2N2X3NvbGFyaXNfNjRiaXQ9bm9dKQorICAgICAgICBdKQorICAgICAgaWYgdGVzdCAkZ2xfY3Zfc29sYXJpc182NGJpdCA9IHllczsgdGhlbgorICAgICAgICBhY2xfbGliZGlyc3RlbT1saWIvNjQKKyAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICAgIHNwYXJjKikgICAgICAgIGFjbF9saWJkaXJzdGVtMj1saWIvc3BhcmN2OSA7OworICAgICAgICAgIGkqODYgfCB4ODZfNjQpIGFjbF9saWJkaXJzdGVtMj1saWIvYW1kNjQgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNlYXJjaHBhdGg9YChMQ19BTEw9QyAkQ0MgLXByaW50LXNlYXJjaC1kaXJzKSAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAncyxebGlicmFyaWVzOiAsLHAnIHwgc2VkIC1lICdzLF49LCwnYAorICAgICAgaWYgdGVzdCAtbiAiJHNlYXJjaHBhdGgiOyB0aGVuCisgICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9IjsgSUZTPSI6IgorICAgICAgICBmb3Igc2VhcmNoZGlyIGluICRzZWFyY2hwYXRoOyBkbworICAgICAgICAgIGlmIHRlc3QgLWQgIiRzZWFyY2hkaXIiOyB0aGVuCisgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAqL2xpYjY0LyB8ICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAqLy4uLyB8ICovLi4gKQorICAgICAgICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlzIGZvcm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKikgc2VhcmNoZGlyPWBjZCAiJHNlYXJjaGRpciIgJiYgcHdkYAorICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCisgICAgICBmaQorICAgICAgOzsKKyAgZXNhYworICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xfbGliZGlyc3RlbTI9IiRhY2xfbGliZGlyc3RlbSIKK10pCisKKyMgbG9jay5tNCBzZXJpYWwgMTMgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMjAwNS0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfREVGVU4oW2dsX0xPQ0tdLAorWworICBBQ19SRVFVSVJFKFtnbF9USFJFQURMSUJdKQorICBpZiB0ZXN0ICIkZ2xfdGhyZWFkc19hcGkiID0gcG9zaXg7IHRoZW4KKyAgICAjIE9TRi8xIDQuMCBhbmQgTWFjIE9TIFggMTAuMSBsYWNrIHRoZSBwdGhyZWFkX3J3bG9ja190IHR5cGUgYW5kIHRoZQorICAgICMgcHRocmVhZF9yd2xvY2tfKiBmdW5jdGlvbnMuCisgICAgQUNfQ0hFQ0tfVFlQRShbcHRocmVhZF9yd2xvY2tfdF0sCisgICAgICBbQUNfREVGSU5FKFtIQVZFX1BUSFJFQURfUldMT0NLXSwgWzFdLAorICAgICAgICAgW0RlZmluZSBpZiB0aGUgUE9TSVggbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBoYXMgcmVhZC93cml0ZSBsb2Nrcy5dKV0sCisgICAgICBbXSwKKyAgICAgIFsjaW5jbHVkZSA8cHRocmVhZC5oPl0pCisgICAgIyBnbGliYyBkZWZpbmVzIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFIGFzIGVudW0sIG5vdCBhcyBhIG1hY3JvLgorICAgIEFDX0NPTVBJTEVfSUZFTFNFKFsKKyAgICAgIEFDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgW1sjaW5jbHVkZSA8cHRocmVhZC5oPl1dLAorICAgICAgICBbWworI2lmIF9fRnJlZUJTRF9fID09IDQKK2Vycm9yICJObywgaW4gRnJlZUJTRCA0LjAgcmVjdXJzaXZlIG11dGV4ZXMgYWN0dWFsbHkgZG9uJ3Qgd29yay4iCisjZWxpZiAoZGVmaW5lZCBfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gXAorICAgICAgICYmIF9fRU5WSVJPTk1FTlRfTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRURfXyA8IDEwNzApCitlcnJvciAiTm8sIGluIE1hYyBPUyBYIDwgMTAuNyByZWN1cnNpdmUgbXV0ZXhlcyBhY3R1YWxseSBkb24ndCB3b3JrLiIKKyNlbHNlCitpbnQgeCA9IChpbnQpUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkU7CityZXR1cm4gIXg7CisjZW5kaWYKKyAgICAgICAgXV0pXSwKKyAgICAgIFtBQ19ERUZJTkUoW0hBVkVfUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkVdLCBbMV0sCisgICAgICAgICBbRGVmaW5lIGlmIHRoZSA8cHRocmVhZC5oPiBkZWZpbmVzIFBUSFJFQURfTVVURVhfUkVDVVJTSVZFLl0pXSkKKyAgZmkKKyAgZ2xfUFJFUkVRX0xPQ0sKK10pCisKKyMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvZ2x0aHJlYWQvbG9jay5jLgorQUNfREVGVU4oW2dsX1BSRVJFUV9MT0NLXSwgWzpdKQorCisjIGxvbmdsb25nLm00IHNlcmlhbCAxNworZG5sIENvcHlyaWdodCAoQykgMTk5OS0yMDA3LCAyMDA5LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gUGF1bCBFZ2dlcnQuCisKKyMgRGVmaW5lIEhBVkVfTE9OR19MT05HX0lOVCBpZiAnbG9uZyBsb25nIGludCcgd29ya3MuCisjIFRoaXMgZml4ZXMgYSBidWcgaW4gQXV0b2NvbmYgMi42MSwgYW5kIGNhbiBiZSBmYXN0ZXIKKyMgdGhhbiB3aGF0J3MgaW4gQXV0b2NvbmYgMi42MiB0aHJvdWdoIDIuNjguCisKKyMgTm90ZTogSWYgdGhlIHR5cGUgJ2xvbmcgbG9uZyBpbnQnIGV4aXN0cyBidXQgaXMgb25seSAzMiBiaXRzIGxhcmdlCisjIChhcyBvbiBzb21lIHZlcnkgb2xkIGNvbXBpbGVycyksIEhBVkVfTE9OR19MT05HX0lOVCB3aWxsIG5vdCBiZQorIyBkZWZpbmVkLiBJbiB0aGlzIGNhc2UgeW91IGNhbiB0cmVhdCAnbG9uZyBsb25nIGludCcgbGlrZSAnbG9uZyBpbnQnLgorCitBQ19ERUZVTihbQUNfVFlQRV9MT05HX0xPTkdfSU5UXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb25nIGxvbmcgaW50XSwgW2FjX2N2X3R5cGVfbG9uZ19sb25nX2ludF0sCisgICAgIFthY19jdl90eXBlX2xvbmdfbG9uZ19pbnQ9eWVzCisgICAgICBpZiB0ZXN0ICJ4JHthY19jdl9wcm9nX2NjX2M5OS1ub30iID0geG5vOyB0aGVuCisgICAgICAgIGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludD0kYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50CisgICAgICAgIGlmIHRlc3QgJGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludCA9IHllczsgdGhlbgorICAgICAgICAgIGRubCBDYXRjaCBhIGJ1ZyBpbiBUYW5kZW0gTm9uU3RvcCBLZXJuZWwgKE9TUykgY2MgLU8gY2lyY2EgMjAwNC4KKyAgICAgICAgICBkbmwgSWYgY3Jvc3MgY29tcGlsaW5nLCBhc3N1bWUgdGhlIGJ1ZyBpcyBub3QgaW1wb3J0YW50LCBzaW5jZQorICAgICAgICAgIGRubCBub2JvZHkgY3Jvc3MgY29tcGlsZXMgZm9yIHRoaXMgcGxhdGZvcm0gYXMgZmFyIGFzIHdlIGtub3cuCisgICAgICAgICAgQUNfUlVOX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbW0AlOkBpbmNsdWRlIDxsaW1pdHMuaD4KKyAgICAgICAgICAgICAgICAgQCU6QGlmbmRlZiBMTE9OR19NQVgKKyAgICAgICAgICAgICAgICAgQCU6QCBkZWZpbmUgSEFMRiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxTEwgPDwgKHNpemVvZiAobG9uZyBsb25nIGludCkgKiBDSEFSX0JJVCAtIDIpKQorICAgICAgICAgICAgICAgICBAJTpAIGRlZmluZSBMTE9OR19NQVggKEhBTEYgLSAxICsgSEFMRikKKyAgICAgICAgICAgICAgICAgQCU6QGVuZGlmXV0sCisgICAgICAgICAgICAgICBbW2xvbmcgbG9uZyBpbnQgbiA9IDE7CisgICAgICAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyA7IGkrKykKKyAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IG0gPSBuIDw8IGk7CisgICAgICAgICAgICAgICAgICAgICBpZiAobSA+PiBpICE9IG4pCisgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICAgaWYgKExMT05HX01BWCAvIDIgPCBtKQorICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHJldHVybiAwO11dKV0sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgIFthY19jdl90eXBlX2xvbmdfbG9uZ19pbnQ9bm9dLAorICAgICAgICAgICAgWzpdKQorICAgICAgICBmaQorICAgICAgZmldKQorICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfTE9OR19MT05HX0lOVF0sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSAnbG9uZyBsb25nIGludCcuXSkKKyAgZmkKK10pCisKKyMgRGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVCBpZiAndW5zaWduZWQgbG9uZyBsb25nIGludCcgd29ya3MuCisjIFRoaXMgZml4ZXMgYSBidWcgaW4gQXV0b2NvbmYgMi42MSwgYW5kIGNhbiBiZSBmYXN0ZXIKKyMgdGhhbiB3aGF0J3MgaW4gQXV0b2NvbmYgMi42MiB0aHJvdWdoIDIuNjguCisKKyMgTm90ZTogSWYgdGhlIHR5cGUgJ3Vuc2lnbmVkIGxvbmcgbG9uZyBpbnQnIGV4aXN0cyBidXQgaXMgb25seSAzMiBiaXRzCisjIGxhcmdlIChhcyBvbiBzb21lIHZlcnkgb2xkIGNvbXBpbGVycyksIEFDX1RZUEVfVU5TSUdORURfTE9OR19MT05HX0lOVAorIyB3aWxsIG5vdCBiZSBkZWZpbmVkLiBJbiB0aGlzIGNhc2UgeW91IGNhbiB0cmVhdCAndW5zaWduZWQgbG9uZyBsb25nIGludCcKKyMgbGlrZSAndW5zaWduZWQgbG9uZyBpbnQnLgorCitBQ19ERUZVTihbQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UXSwKK1sKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB1bnNpZ25lZCBsb25nIGxvbmcgaW50XSwKKyAgICBbYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50XSwKKyAgICBbYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50PXllcworICAgICBpZiB0ZXN0ICJ4JHthY19jdl9wcm9nX2NjX2M5OS1ub30iID0geG5vOyB0aGVuCisgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICBbX0FDX1RZUEVfTE9OR19MT05HX1NOSVBQRVRdLAorICAgICAgICAgW10sCisgICAgICAgICBbYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50PW5vXSkKKyAgICAgZmldKQorICBpZiB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVF0sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSAndW5zaWduZWQgbG9uZyBsb25nIGludCcuXSkKKyAgZmkKK10pCisKKyMgRXhwYW5kcyB0byBhIEMgcHJvZ3JhbSB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3QgZm9yIHNpbXVsdGFuZW91cyBzdXBwb3J0CisjIG9mICdsb25nIGxvbmcnIGFuZCAndW5zaWduZWQgbG9uZyBsb25nJy4gV2UgZG9uJ3Qgd2FudCB0byBzYXkgdGhhdAorIyAnbG9uZyBsb25nJyBpcyBhdmFpbGFibGUgaWYgJ3Vuc2lnbmVkIGxvbmcgbG9uZycgaXMgbm90LCBvciB2aWNlIHZlcnNhLAorIyBiZWNhdXNlIHRvbyBtYW55IHByb2dyYW1zIHJlbHkgb24gdGhlIHN5bW1ldHJ5IGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZAorIyBpbnRlZ2VyIHR5cGVzIChleGNsdWRpbmcgJ2Jvb2wnKS4KK0FDX0RFRlVOKFtfQUNfVFlQRV9MT05HX0xPTkdfU05JUFBFVF0sCitbCisgIEFDX0xBTkdfUFJPR1JBTSgKKyAgICBbWy8qIEZvciBub3csIGRvIG5vdCB0ZXN0IHRoZSBwcmVwcm9jZXNzb3I7IGFzIG9mIDIwMDcgdGhlcmUgYXJlIHRvbyBtYW55CisgICAgICAgICBpbXBsZW1lbnRhdGlvbnMgd2l0aCBicm9rZW4gcHJlcHJvY2Vzc29ycy4gIFBlcmhhcHMgdGhpcyBjYW4KKyAgICAgICAgIGJlIHJldmlzaXRlZCBpbiAyMDEyLiAgSW4gdGhlIG1lYW50aW1lLCBjb2RlIHNob3VsZCBub3QgZXhwZWN0CisgICAgICAgICAjaWYgdG8gd29yayB3aXRoIGxpdGVyYWxzIHdpZGVyIHRoYW4gMzIgYml0cy4gICovCisgICAgICAvKiBUZXN0IGxpdGVyYWxzLiAgKi8KKyAgICAgIGxvbmcgbG9uZyBpbnQgbGwgPSA5MjIzMzcyMDM2ODU0Nzc1ODA3bGw7CisgICAgICBsb25nIGxvbmcgaW50IG5sbCA9IC05MjIzMzcyMDM2ODU0Nzc1ODA3TEw7CisgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHVsbCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1VUxMOworICAgICAgLyogVGVzdCBjb25zdGFudCBleHByZXNzaW9ucy4gICAqLworICAgICAgdHlwZWRlZiBpbnQgYVsoKC05MjIzMzcyMDM2ODU0Nzc1ODA3TEwgPCAwICYmIDAgPCA5MjIzMzcyMDM2ODU0Nzc1ODA3bGwpCisgICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMSldOworICAgICAgdHlwZWRlZiBpbnQgYlsoMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEwgPD0gKHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpIC0xCisgICAgICAgICAgICAgICAgICAgICA/IDEgOiAtMSldOworICAgICAgaW50IGkgPSA2MztdXSwKKyAgICBbWy8qIFRlc3QgYXZhaWxhYmlsaXR5IG9mIHJ1bnRpbWUgcm91dGluZXMgZm9yIHNoaWZ0IGFuZCBkaXZpc2lvbi4gICovCisgICAgICBsb25nIGxvbmcgaW50IGxsbWF4ID0gOTIyMzM3MjAzNjg1NDc3NTgwN2xsOworICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludCB1bGxtYXggPSAxODQ0Njc0NDA3MzcwOTU1MTYxNXVsbDsKKyAgICAgIHJldHVybiAoKGxsIDw8IDYzKSB8IChsbCA+PiA2MykgfCAobGwgPCBpKSB8IChsbCA+IGkpCisgICAgICAgICAgICAgIHwgKGxsbWF4IC8gbGwpIHwgKGxsbWF4ICUgbGwpCisgICAgICAgICAgICAgIHwgKHVsbCA8PCA2MykgfCAodWxsID4+IDYzKSB8ICh1bGwgPDwgaSkgfCAodWxsID4+IGkpCisgICAgICAgICAgICAgIHwgKHVsbG1heCAvIHVsbCkgfCAodWxsbWF4ICUgdWxsKSk7XV0pCitdKQorCisjIG5scy5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjE4KQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDA1LTIwMDYsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCitkbmwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCisKK0FDX1BSRVJFUShbMi41MF0pCisKK0FDX0RFRlVOKFtBTV9OTFNdLAorWworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgTkxTIGlzIHJlcXVlc3RlZF0pCisgIGRubCBEZWZhdWx0IGlzIGVuYWJsZWQgTkxTCisgIEFDX0FSR19FTkFCTEUoW25sc10sCisgICAgWyAgLS1kaXNhYmxlLW5scyAgICAgICAgICAgZG8gbm90IHVzZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydF0sCisgICAgVVNFX05MUz0kZW5hYmxldmFsLCBVU0VfTkxTPXllcykKKyAgQUNfTVNHX1JFU1VMVChbJFVTRV9OTFNdKQorICBBQ19TVUJTVChbVVNFX05MU10pCitdKQorCisjIHBrZy5tNCAtIE1hY3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNvbmZpZy4gICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQpCisjIAorIyBDb3B5cmlnaHQgwqkgMjAwNCBTY290dCBKYW1lcyBSZW1uYW50IDxzY290dEBuZXRzcGxpdC5jb20+LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKyMgUEtHX1BST0dfUEtHX0NPTkZJRyhbTUlOLVZFUlNJT05dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX1BST0dfUEtHX0NPTkZJR10sCitbbTRfcGF0dGVybl9mb3JiaWQoW15fP1BLR19bQS1aX10rJF0pCittNF9wYXR0ZXJuX2FsbG93KFteUEtHX0NPTkZJRyhfKFBBVEh8TElCRElSfFNZU1JPT1RfRElSfEFMTE9XX1NZU1RFTV8oQ0ZMQUdTfExJQlMpKSk/JF0pCittNF9wYXR0ZXJuX2FsbG93KFteUEtHX0NPTkZJR18oRElTQUJMRV9VTklOU1RBTExFRHxUT1BfQlVJTERfRElSfERFQlVHX1NQRVcpJF0pCitBQ19BUkdfVkFSKFtQS0dfQ09ORklHXSwgW3BhdGggdG8gcGtnLWNvbmZpZyB1dGlsaXR5XSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUdfUEFUSF0sIFtkaXJlY3RvcmllcyB0byBhZGQgdG8gcGtnLWNvbmZpZydzIHNlYXJjaCBwYXRoXSkKK0FDX0FSR19WQVIoW1BLR19DT05GSUdfTElCRElSXSwgW3BhdGggb3ZlcnJpZGluZyBwa2ctY29uZmlnJ3MgYnVpbHQtaW4gc2VhcmNoIHBhdGhdKQorCitpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCisJQUNfUEFUSF9UT09MKFtQS0dfQ09ORklHXSwgW3BrZy1jb25maWddKQorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorCV9wa2dfbWluX3ZlcnNpb249bTRfZGVmYXVsdChbJDFdLCBbMC45LjBdKQorCUFDX01TR19DSEVDS0lORyhbcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uXSkKKwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KKwkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKwllbHNlCisJCUFDX01TR19SRVNVTFQoW25vXSkKKwkJUEtHX0NPTkZJRz0iIgorCWZpCitmaVtdZG5sCitdKSMgUEtHX1BST0dfUEtHX0NPTkZJRworCisjIFBLR19DSEVDS19FWElTVFMoTU9EVUxFUywgW0FDVElPTi1JRi1GT1VORF0sIFtBQ1RJT04tSUYtTk9ULUZPVU5EXSkKKyMKKyMgQ2hlY2sgdG8gc2VlIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIHNldCBvZiBtb2R1bGVzIGV4aXN0cy4gIFNpbWlsYXIKKyMgdG8gUEtHX0NIRUNLX01PRFVMRVMoKSwgYnV0IGRvZXMgbm90IHNldCB2YXJpYWJsZXMgb3IgcHJpbnQgZXJyb3JzLgorIworIyBQbGVhc2UgcmVtZW1iZXIgdGhhdCBtNCBleHBhbmRzIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQorIyBvbmx5IGF0IHRoZSBmaXJzdCBvY2N1cmVuY2UgaW4gY29uZmlndXJlLmFjLCBzbyBpZiB0aGUgZmlyc3QgcGxhY2UKKyMgaXQncyBjYWxsZWQgbWlnaHQgYmUgc2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4gImlmIiwgeW91CisjIGhhdmUgdG8gY2FsbCBQS0dfQ0hFQ0tfRVhJU1RTIG1hbnVhbGx5CisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbUEtHX0NIRUNLX0VYSVNUU10sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkMSJdKTsgdGhlbgorICBtNF9kZWZhdWx0KFskMl0sIFs6XSkKK200X2lmdmFsbihbJDNdLCBbZWxzZQorICAkM10pZG5sCitmaV0pCisKKyMgX1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfUEtHX0NPTkZJR10sCitbaWYgdGVzdCAtbiAiJCQxIjsgdGhlbgorICAgIHBrZ19jdl9bXSQxPSIkJDEiCisgZWxpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBQS0dfQ0hFQ0tfRVhJU1RTKFskM10sCisgICAgICAgICAgICAgICAgICAgICBbcGtnX2N2X1tdJDE9YCRQS0dfQ09ORklHIC0tW10kMiAiJDMiIDI+L2Rldi9udWxsYAorCQkgICAgICB0ZXN0ICJ4JD8iICE9ICJ4MCIgJiYgcGtnX2ZhaWxlZD15ZXMgXSwKKwkJICAgICBbcGtnX2ZhaWxlZD15ZXNdKQorIGVsc2UKKyAgICBwa2dfZmFpbGVkPXVudHJpZWQKK2ZpW11kbmwKK10pIyBfUEtHX0NPTkZJRworCisjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRF0sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmlbXWRubAorXSkjIF9QS0dfU0hPUlRfRVJST1JTX1NVUFBPUlRFRAorCisKKyMgUEtHX0NIRUNLX01PRFVMRVMoVkFSSUFCTEUtUFJFRklYLCBNT0RVTEVTLCBbQUNUSU9OLUlGLUZPVU5EXSwKKyMgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorIworIworIyBOb3RlIHRoYXQgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGUgZmlyc3QgY2FsbCB0bworIyBQS0dfQ0hFQ0tfTU9EVUxFUyBtaWdodCBub3QgaGFwcGVuLCB5b3Ugc2hvdWxkIGJlIHN1cmUgdG8gaW5jbHVkZSBhbgorIyBleHBsaWNpdCBjYWxsIHRvIFBLR19QUk9HX1BLR19DT05GSUcgaW4geW91ciBjb25maWd1cmUuYWMKKyMKKyMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtQS0dfQ0hFQ0tfTU9EVUxFU10sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitBQ19BUkdfVkFSKFskMV1bX0NGTEFHU10sIFtDIGNvbXBpbGVyIGZsYWdzIGZvciAkMSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnXSlkbmwKK0FDX0FSR19WQVIoWyQxXVtfTElCU10sIFtsaW5rZXIgZmxhZ3MgZm9yICQxLCBvdmVycmlkaW5nIHBrZy1jb25maWddKWRubAorCitwa2dfZmFpbGVkPW5vCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkMV0pCisKK19QS0dfQ09ORklHKFskMV1bX0NGTEFHU10sIFtjZmxhZ3NdLCBbJDJdKQorX1BLR19DT05GSUcoWyQxXVtfTElCU10sIFtsaWJzXSwgWyQyXSkKKworbTRfZGVmaW5lKFtfUEtHX1RFWFRdLCBbQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAkMVtdX0NGTEFHUworYW5kICQxW11fTElCUyB0byBhdm9pZCB0aGUgbmVlZCB0byBjYWxsIHBrZy1jb25maWcuCitTZWUgdGhlIHBrZy1jb25maWcgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy5dKQorCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiJDIiIDI+JjFgCisgICAgICAgIGVsc2UgCisJICAgICAgICAkMVtdX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tcHJpbnQtZXJyb3JzIC0tY2ZsYWdzIC0tbGlicyAiJDIiIDI+JjFgCisgICAgICAgIGZpCisJIyBQdXQgdGhlIG5hc3R5IGVycm9yIG1lc3NhZ2UgaW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxvbmdzCisJZWNobyAiJCQxW11fUEtHX0VSUk9SUyIgPiZBU19NRVNTQUdFX0xPR19GRAorCisJbTRfZGVmYXVsdChbJDRdLCBbQUNfTVNHX0VSUk9SKAorW1BhY2thZ2UgcmVxdWlyZW1lbnRzICgkMikgd2VyZSBub3QgbWV0OgorCiskJDFfUEtHX0VSUk9SUworCitDb25zaWRlciBhZGp1c3RpbmcgdGhlIFBLR19DT05GSUdfUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiB5b3UKK2luc3RhbGxlZCBzb2Z0d2FyZSBpbiBhIG5vbi1zdGFuZGFyZCBwcmVmaXguCisKK19QS0dfVEVYVF0pW11kbmwKKyAgICAgICAgXSkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKyAgICAgCUFDX01TR19SRVNVTFQoW25vXSkKKwltNF9kZWZhdWx0KFskNF0sIFtBQ19NU0dfRkFJTFVSRSgKK1tUaGUgcGtnLWNvbmZpZyBzY3JpcHQgY291bGQgbm90IGJlIGZvdW5kIG9yIGlzIHRvbyBvbGQuICBNYWtlIHN1cmUgaXQKK2lzIGluIHlvdXIgUEFUSCBvciBzZXQgdGhlIFBLR19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGZ1bGwKK3BhdGggdG8gcGtnLWNvbmZpZy4KKworX1BLR19URVhUCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+Ll0pW11kbmwKKyAgICAgICAgXSkKK2Vsc2UKKwkkMVtdX0NGTEFHUz0kcGtnX2N2X1tdJDFbXV9DRkxBR1MKKwkkMVtdX0xJQlM9JHBrZ19jdl9bXSQxW11fTElCUworICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCSQzCitmaVtdZG5sCitdKSMgUEtHX0NIRUNLX01PRFVMRVMKKworCisjIFBLR19JTlNUQUxMRElSKERJUkVDVE9SWSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTdWJzdGl0dXRlcyB0aGUgdmFyaWFibGUgcGtnY29uZmlnZGlyIGFzIHRoZSBsb2NhdGlvbiB3aGVyZSBhIG1vZHVsZQorIyBzaG91bGQgaW5zdGFsbCBwa2ctY29uZmlnIC5wYyBmaWxlcy4gQnkgZGVmYXVsdCB0aGUgZGlyZWN0b3J5IGlzCisjICRsaWJkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJlIGNoYW5nZWQgYnkgcGFzc2luZworIyBESVJFQ1RPUlkuIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aHJvdWdoIHRoZSAtLXdpdGgtcGtnY29uZmlnZGlyCisjIHBhcmFtZXRlci4KK0FDX0RFRlVOKFtQS0dfSU5TVEFMTERJUl0sCitbbTRfcHVzaGRlZihbcGtnX2RlZmF1bHRdLCBbbTRfZGVmYXVsdChbJDFdLCBbJyR7bGliZGlyfS9wa2djb25maWcnXSldKQorbTRfcHVzaGRlZihbcGtnX2Rlc2NyaXB0aW9uXSwKKyAgICBbcGtnLWNvbmZpZyBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IEA8OkBdcGtnX2RlZmF1bHRbQDo+QF0pCitBQ19BUkdfV0lUSChbcGtnY29uZmlnZGlyXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wa2djb25maWdkaXJdLCBwa2dfZGVzY3JpcHRpb24pXSwsCisgICAgW3dpdGhfcGtnY29uZmlnZGlyPV1wa2dfZGVmYXVsdCkKK0FDX1NVQlNUKFtwa2djb25maWdkaXJdLCBbJHdpdGhfcGtnY29uZmlnZGlyXSkKK200X3BvcGRlZihbcGtnX2RlZmF1bHRdKQorbTRfcG9wZGVmKFtwa2dfZGVzY3JpcHRpb25dKQorXSkgZG5sIFBLR19JTlNUQUxMRElSCisKKworIyBQS0dfTk9BUkNIX0lOU1RBTExESVIoRElSRUNUT1JZKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFN1YnN0aXR1dGVzIHRoZSB2YXJpYWJsZSBub2FyY2hfcGtnY29uZmlnZGlyIGFzIHRoZSBsb2NhdGlvbiB3aGVyZSBhCisjIG1vZHVsZSBzaG91bGQgaW5zdGFsbCBhcmNoLWluZGVwZW5kZW50IHBrZy1jb25maWcgLnBjIGZpbGVzLiBCeQorIyBkZWZhdWx0IHRoZSBkaXJlY3RvcnkgaXMgJGRhdGFkaXIvcGtnY29uZmlnLCBidXQgdGhlIGRlZmF1bHQgY2FuIGJlCisjIGNoYW5nZWQgYnkgcGFzc2luZyBESVJFQ1RPUlkuIFRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aHJvdWdoIHRoZQorIyAtLXdpdGgtbm9hcmNoLXBrZ2NvbmZpZ2RpciBwYXJhbWV0ZXIuCitBQ19ERUZVTihbUEtHX05PQVJDSF9JTlNUQUxMRElSXSwKK1ttNF9wdXNoZGVmKFtwa2dfZGVmYXVsdF0sIFttNF9kZWZhdWx0KFskMV0sIFsnJHtkYXRhZGlyfS9wa2djb25maWcnXSldKQorbTRfcHVzaGRlZihbcGtnX2Rlc2NyaXB0aW9uXSwKKyAgICBbcGtnLWNvbmZpZyBhcmNoLWluZGVwZW5kZW50IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkgQDw6QF1wa2dfZGVmYXVsdFtAOj5AXSkKK0FDX0FSR19XSVRIKFtub2FyY2gtcGtnY29uZmlnZGlyXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ub2FyY2gtcGtnY29uZmlnZGlyXSwgcGtnX2Rlc2NyaXB0aW9uKV0sLAorICAgIFt3aXRoX25vYXJjaF9wa2djb25maWdkaXI9XXBrZ19kZWZhdWx0KQorQUNfU1VCU1QoW25vYXJjaF9wa2djb25maWdkaXJdLCBbJHdpdGhfbm9hcmNoX3BrZ2NvbmZpZ2Rpcl0pCittNF9wb3BkZWYoW3BrZ19kZWZhdWx0XSkKK200X3BvcGRlZihbcGtnX2Rlc2NyaXB0aW9uXSkKK10pIGRubCBQS0dfTk9BUkNIX0lOU1RBTExESVIKKworCisjIFBLR19DSEVDS19WQVIoVkFSSUFCTEUsIE1PRFVMRSwgQ09ORklHLVZBUklBQkxFLAorIyBbQUNUSU9OLUlGLUZPVU5EXSwgW0FDVElPTi1JRi1OT1QtRk9VTkRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIHBrZy1jb25maWcgdmFyaWFibGUgZm9yIHRoZSBnaXZlbiBtb2R1bGUuCitBQ19ERUZVTihbUEtHX0NIRUNLX1ZBUl0sCitbQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pZG5sCitBQ19BUkdfVkFSKFskMV0sIFt2YWx1ZSBvZiAkMyBmb3IgJDIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZ10pZG5sCisKK19QS0dfQ09ORklHKFskMV0sIFt2YXJpYWJsZT0iXVskM11bIl0sIFskMl0pCitBU19WQVJfQ09QWShbJDFdLCBbcGtnX2N2X11bJDFdKQorCitBU19WQVJfSUYoWyQxXSwgWyIiXSwgWyQ1XSwgWyQ0XSlkbmwKK10pIyBQS0dfQ0hFQ0tfVkFSCisKKyMgcG8ubTQgc2VyaWFsIDIxIChnZXR0ZXh0LTAuMTguMykKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgorCitBQ19QUkVSRVEoWzIuNjBdKQorCitkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgcG8gc3ViZGlyZWN0b3J5LgorQUNfREVGVU4oW0FNX1BPX1NVQkRJUlNdLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX01BS0VfU0VUXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19NS0RJUl9QXSlkbmwKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19TRURdKWRubAorICBBQ19SRVFVSVJFKFtBTV9OTFNdKWRubAorCisgIGRubCBSZWxlYXNlIHZlcnNpb24gb2YgdGhlIGdldHRleHQgbWFjcm9zLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgZG5sIHRoZSBnZXR0ZXh0IG1hY3JvcyBhbmQgcG8vTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCisgIEFDX1NVQlNUKFtHRVRURVhUX01BQ1JPX1ZFUlNJT05dLCBbMC4xOF0pCisKKyAgZG5sIFBlcmZvcm0gdGhlIGZvbGxvd2luZyB0ZXN0cyBhbHNvIGlmIC0tZGlzYWJsZS1ubHMgaGFzIGJlZW4gZ2l2ZW4sCisgIGRubCBiZWNhdXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgIm1ha2UgZGlzdCIgdG8gd29yay4KKworICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnZm10IGluIHRoZSBQQVRILgorICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyBtc2dmbXQgYW5kIGVhcmx5IEdOVSBtc2dmbXQgdmVyc2lvbnMuCisgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCBtc2dmbXQuCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHRk1ULCBtc2dmbXQsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAorICAgIDopCisgIEFDX1BBVEhfUFJPRyhbR01TR0ZNVF0sIFtnbXNnZm10XSwgWyRNU0dGTVRdKQorCisgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ2ZtdCA+PSAwLjE1LgorY2hhbmdlcXVvdGUoLClkbmwKKyAgY2FzZSBgJE1TR0ZNVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBNU0dGTVRfMDE1PTogOzsKKyAgICAqKSBNU0dGTVRfMDE1PSRNU0dGTVQgOzsKKyAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICBBQ19TVUJTVChbTVNHRk1UXzAxNV0pCitjaGFuZ2VxdW90ZSgsKWRubAorICBjYXNlIGAkR01TR0ZNVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBHTVNHRk1UXzAxNT06IDs7CisgICAgKikgR01TR0ZNVF8wMTU9JEdNU0dGTVQgOzsKKyAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICBBQ19TVUJTVChbR01TR0ZNVF8wMTVdKQorCisgIGRubCBTZWFyY2ggZm9yIEdOVSB4Z2V0dGV4dCAwLjEyIG9yIG5ld2VyIGluIHRoZSBQQVRILgorICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyB4Z2V0dGV4dCBhbmQgZWFybHkgR05VIHhnZXR0ZXh0IHZlcnNpb25zLgorICBkbmwgVGhlIHNlY29uZCB0ZXN0IGV4Y2x1ZGVzIEZyZWVCU0QgeGdldHRleHQuCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoWEdFVFRFWFQsIHhnZXR0ZXh0LAorICAgIFskYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4mXUFTX01FU1NBR0VfTE9HX0ZEWyAyPiYxICYmCisgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAorICAgIDopCisgIGRubCBSZW1vdmUgbGVmdG92ZXIgZnJvbSBGcmVlQlNEIHhnZXR0ZXh0IGNhbGwuCisgIHJtIC1mIG1lc3NhZ2VzLnBvCisKKyAgZG5sIFRlc3Qgd2hldGhlciBpdCBpcyBHTlUgeGdldHRleHQgPj0gMC4xNS4KK2NoYW5nZXF1b3RlKCwpZG5sCisgIGNhc2UgYCRYR0VUVEVYVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBYR0VUVEVYVF8wMTU9OiA7OworICAgICopIFhHRVRURVhUXzAxNT0kWEdFVFRFWFQgOzsKKyAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICBBQ19TVUJTVChbWEdFVFRFWFRfMDE1XSkKKworICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnbWVyZ2UgMC4xMSBvciBuZXdlciBpbiB0aGUgUEFUSC4KKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dNRVJHRSwgbXNnbWVyZ2UsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS11cGRhdGUgLXEgL2Rldi9udWxsIC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMV0sIDopCisKKyAgZG5sIEluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KKyAgZG5sIEF1dG9jb25mID49IDIuNjAgZGVmaW5lcyBsb2NhbGVkaXIuIEZvciBvbGRlciB2ZXJzaW9ucyBvZiBhdXRvY29uZiwgd2UKKyAgZG5sIGhhdmUgdG8gZGVmaW5lIGl0IGhlcmUsIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gcG8vTWFrZWZpbGUuCisgIHRlc3QgLW4gIiRsb2NhbGVkaXIiIHx8IGxvY2FsZWRpcj0nJHtkYXRhZGlyfS9sb2NhbGUnCisgIEFDX1NVQlNUKFtsb2NhbGVkaXJdKQorCisgIGRubCBTdXBwb3J0IGZvciBBTV9YR0VUVEVYVF9PUFRJT04uCisgIHRlc3QgLW4gIiR7WEdFVFRFWFRfRVhUUkFfT1BUSU9OUytzZXR9IiB8fCBYR0VUVEVYVF9FWFRSQV9PUFRJT05TPQorICBBQ19TVUJTVChbWEdFVFRFWFRfRVhUUkFfT1BUSU9OU10pCisKKyAgQUNfQ09ORklHX0NPTU1BTkRTKFtwby1kaXJlY3Rvcmllc10sIFtbCisgICAgZm9yIGFjX2ZpbGUgaW4gJENPTkZJR19GSUxFUzsgZG8KKyAgICAgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIKKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbgorICAgICAgICAqOiopIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlOi4qJSUnYCA7OworICAgICAgZXNhYworICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCisgICAgICBjYXNlICIkYWNfZmlsZSIgaW4gKi9NYWtlZmlsZS5pbikKKyAgICAgICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCisgICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKKyAgICAgICAgYWNfZGlyX3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYAorICAgICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCisgICAgICAgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgorICAgICAgICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCisgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OworICAgICAgICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICAgICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgIyBUcmVhdCBhIGRpcmVjdG9yeSBhcyBhIFBPIGRpcmVjdG9yeSBpZiBhbmQgb25seSBpZiBpdCBoYXMgYQorICAgICAgICAjIFBPVEZJTEVTLmluIGZpbGUuIFRoaXMgYWxsb3dzIHBhY2thZ2VzIHRvIGhhdmUgbXVsdGlwbGUgUE8KKyAgICAgICAgIyBkaXJlY3RvcmllcyB1bmRlciBkaWZmZXJlbnQgbmFtZXMgb3IgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KKyAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIjsgdGhlbgorICAgICAgICAgIHJtIC1mICIkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIGd0X3RhYj1gcHJpbnRmICdcdCdgCisgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAke2d0X3RhYn1dKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCisgICAgICAgICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgorICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCisgICAgICAgICAgIyBvbiAkYWNfZGlyIGJ1dCBkb24ndCBkZXBlbmQgb24gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbgorICAgICAgICAgICMgcGFyYW1ldGVycy4KKyAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICAgICAgICAgICMgSGlkZSB0aGUgQUxMX0xJTkdVQVMgYXNzaWdubWVudCBmcm9tIGF1dG9tYWtlIDwgMS41LgorICAgICAgICAgICAgZXZhbCAnQUxMX0xJTkdVQVMnJz0kQUxMX0xJTkdVQVNfJworICAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgVGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzIHdhcyBnaXZlbiBpbiBjb25maWd1cmUuaW4uCisgICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbm1lbnQgZnJvbSBhdXRvbWFrZSA8IDEuNS4KKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JE9CU09MRVRFX0FMTF9MSU5HVUFTJworICAgICAgICAgIGZpCisgICAgICAgICAgIyBDb21wdXRlIFBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKKyAgICAgICAgICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorICAgICAgICAgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKKyAgICAgICAgICAjIENvbXB1dGUgR01PRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCisgICAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAgICAgICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAgICAgICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgUE9GSUxFUz0KKyAgICAgICAgICBVUERBVEVQT0ZJTEVTPQorICAgICAgICAgIERVTU1ZUE9GSUxFUz0KKyAgICAgICAgICBHTU9GSUxFUz0KKyAgICAgICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgICAgICAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCisgICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgorICAgICAgICAgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgICAgICAgIGRvbmUKKyAgICAgICAgICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKKyAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICAgIElOU1RfTElOR1VBUz0KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICB1c2VpdD1ubworICAgICAgICAgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcworICAgICAgICAgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKKyAgICAgICAgICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCisgICAgICAgICAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIENBVEFMT0dTPQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rpci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9NYWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01ha2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIiL1J1bGVzLSo7IGRvCisgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KKyAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCisgICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsgfCAqfikgOzsKKyAgICAgICAgICAgICAgICAqKSBjYXQgIiRmIiA+PiAiJGFjX2Rpci9NYWtlZmlsZSIgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZG9uZV1dLAorICAgWyMgQ2FwdHVyZSB0aGUgdmFsdWUgb2Ygb2Jzb2xldGUgQUxMX0xJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUKKyAgICAjIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMsIENBVEFMT0dTLiBCdXQgaGlkZSBpdAorICAgICMgZnJvbSBhdXRvbWFrZSA8IDEuNS4KKyAgICBldmFsICdPQlNPTEVURV9BTExfTElOR1VBUycnPSIkQUxMX0xJTkdVQVMiJworICAgICMgQ2FwdHVyZSB0aGUgdmFsdWUgb2YgTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZSBDQVRBTE9HUy4KKyAgICBMSU5HVUFTPSIke0xJTkdVQVMtJVVOU0VUJX0iCisgICBdKQorXSkKKworZG5sIFBvc3Rwcm9jZXNzZXMgYSBNYWtlZmlsZSBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIFBPIGZpbGVzLgorQUNfREVGVU4oW0FNX1BPU1RQUk9DRVNTX1BPX01BS0VGSUxFXSwKK1sKKyAgIyBXaGVuIHRoaXMgY29kZSBpcyBydW4sIGluIGNvbmZpZy5zdGF0dXMsIHR3byB2YXJpYWJsZXMgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgIyBzZXQ6CisgICMgLSBPQlNPTEVURV9BTExfTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgTElOR1VBUyBzZXQgaW4gY29uZmlndXJlLmluLAorICAjIC0gTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExJTkdVQVMgYXQgY29uZmlndXJlCisgICMgICB0aW1lLgorCitjaGFuZ2VxdW90ZSgsKWRubAorICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KKyAgYWNfZGlyPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAorICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgCisgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKKyAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgorICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVkICRzcmNkaXIuCisgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKKyAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7CisgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgZXNhYworCisgICMgRmluZCBhIHdheSB0byBlY2hvIHN0cmluZ3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgYmFja3NsYXNoLgorICBpZiB0ZXN0ICJYYChlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAgIGd0X2VjaG89J2VjaG8nCisgIGVsc2UKKyAgICBpZiB0ZXN0ICJYYChwcmludGYgJyVzXG4nICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAgICAgZ3RfZWNobz0ncHJpbnRmICVzXG4nCisgICAgZWxzZQorICAgICAgZWNob19mdW5jICgpIHsKKyAgICAgICAgY2F0IDw8RU9UCiskKgorRU9UCisgICAgICB9CisgICAgICBndF9lY2hvPSdlY2hvX2Z1bmMnCisgICAgZmkKKyAgZmkKKworICAjIEEgc2VkIHNjcmlwdCB0aGF0IGV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBWQVJJQUJMRSBmcm9tIGEgTWFrZWZpbGUuCisgIHRhYj1gcHJpbnRmICdcdCdgCisgIHNlZF94X3ZhcmlhYmxlPScKKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KK3gKK3MvUC9QLworeAordGEKKyMgWWVzIGl0IHdhcyBlbXB0eS4gTG9vayBpZiB3ZSBoYXZlIHRoZSBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uLgorL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9L3sKKyAgIyBTZWVuIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgorICBzL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9Ly8KKyAgYmEKK30KK2JkCis6YQorIyBIZXJlIHdlIGFyZSBwcm9jZXNzaW5nIGEgbGluZSBmcm9tIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgorIyBSZW1vdmUgY29tbWVudCwgbW9yZSBwcmVjaXNlbHkgcmVwbGFjZSBpdCB3aXRoIGEgc3BhY2UuCitzLyMuKiQvIC8KKyMgU2VlIGlmIHRoZSBsaW5lIGVuZHMgaW4gYSBiYWNrc2xhc2guCit0YgorOmIKK3MvXFwkLy8KKyMgUHJpbnQgdGhlIGxpbmUsIHdpdGhvdXQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaC4KK3AKK3RjCisjIFRoZXJlIHdhcyBubyB0cmFpbGluZyBiYWNrc2xhc2guIFRoZSBlbmQgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaXMKKyMgcmVhY2hlZC4gQ2xlYXIgdGhlIGhvbGQgc3BhY2UuCitzL14uKiQvLworeAorYmQKKzpjCisjIEEgdHJhaWxpbmcgYmFja3NsYXNoIG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gY29udGludWVzIGluIHRoZQorIyBuZXh0IGxpbmUuIFB1dCBhIG5vbmVtcHR5IHN0cmluZyBpbnRvIHRoZSBob2xkIHNwYWNlIHRvIGluZGljYXRlIHRoaXMuCitzL14uKiQvUC8KK3gKKzpkCisnCitjaGFuZ2VxdW90ZShbLF0pZG5sCisKKyAgIyBTZXQgUE9URklMRVMgdG8gdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBQT1RGSUxFUy4KKyAgc2VkX3hfUE9URklMRVM9YCRndF9lY2hvICIkc2VkX3hfdmFyaWFibGUiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9QT1RGSUxFUy9nJ2AKKyAgUE9URklMRVM9YHNlZCAtbiAtZSAiJHNlZF94X1BPVEZJTEVTIiA8ICIkYWNfZmlsZSJgCisgICMgQ29tcHV0ZSBQT1RGSUxFU19ERVBTIGFzCisgICMgICAkKGZvcmVhY2ggZmlsZSwgJChQT1RGSUxFUyksICQodG9wX3NyY2RpcikvJChmaWxlKSkKKyAgUE9URklMRVNfREVQUz0KKyAgZm9yIGZpbGUgaW4gJFBPVEZJTEVTOyBkbworICAgIFBPVEZJTEVTX0RFUFM9IiRQT1RGSUxFU19ERVBTICInJCh0b3Bfc3JjZGlyKS8nIiRmaWxlIgorICBkb25lCisgIFBPTUFLRUZJTEVERVBTPSIiCisKKyAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgorICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCisgIGZpCisgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgorICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICBQT01BS0VGSUxFREVQUz0iJFBPTUFLRUZJTEVERVBTIExJTkdVQVMiCisgIGVsc2UKKyAgICAjIFNldCBBTExfTElOR1VBUyB0byB0aGUgdmFsdWUgb2YgdGhlIE1ha2VmaWxlIHZhcmlhYmxlIExJTkdVQVMuCisgICAgc2VkX3hfTElOR1VBUz1gJGd0X2VjaG8gIiRzZWRfeF92YXJpYWJsZSIgfCBzZWQgLWUgJy9eICojL2QnIC1lICdzL1ZBUklBQkxFL0xJTkdVQVMvZydgCisgICAgQUxMX0xJTkdVQVNfPWBzZWQgLW4gLWUgIiRzZWRfeF9MSU5HVUFTIiA8ICIkYWNfZmlsZSJgCisgIGZpCisgICMgSGlkZSB0aGUgQUxMX0xJTkdVQVMgYXNzaWdubWVudCBmcm9tIGF1dG9tYWtlIDwgMS41LgorICBldmFsICdBTExfTElOR1VBUycnPSRBTExfTElOR1VBU18nCisgICMgQ29tcHV0ZSBQT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnBvKQorICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKKyAgIyBDb21wdXRlIERVTU1ZUE9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKKyAgIyBDb21wdXRlIEdNT0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLmdtbykKKyAgIyBDb21wdXRlIFBST1BFUlRJRVNGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHRvcF9zcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLnByb3BlcnRpZXMpCisgICMgQ29tcHV0ZSBDTEFTU0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQodG9wX3NyY2RpcikvJChET01BSU4pXyQobGFuZykuY2xhc3MpCisgICMgQ29tcHV0ZSBRTUZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGxhbmcpLnFtKQorICAjIENvbXB1dGUgTVNHRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoZnJvYiAkKGxhbmcpKS5tc2cpCisgICMgQ29tcHV0ZSBSRVNPVVJDRVNETExGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLyQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsKQorICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgorICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CisgIGVzYWMKKyAgUE9GSUxFUz0KKyAgVVBEQVRFUE9GSUxFUz0KKyAgRFVNTVlQT0ZJTEVTPQorICBHTU9GSUxFUz0KKyAgUFJPUEVSVElFU0ZJTEVTPQorICBDTEFTU0ZJTEVTPQorICBRTUZJTEVTPQorICBNU0dGSUxFUz0KKyAgUkVTT1VSQ0VTRExMRklMRVM9CisgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgorICAgIERVTU1ZUE9GSUxFUz0iJERVTU1ZUE9GSUxFUyAkbGFuZy5ub3AiCisgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgIFBST1BFUlRJRVNGSUxFUz0iJFBST1BFUlRJRVNGSUxFUyBcJCh0b3Bfc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCisgICAgQ0xBU1NGSUxFUz0iJENMQVNTRklMRVMgXCQodG9wX3NyY2RpcikvXCQoRE9NQUlOKV8kbGFuZy5jbGFzcyIKKyAgICBRTUZJTEVTPSIkUU1GSUxFUyAkc3JjZGlycHJlJGxhbmcucW0iCisgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKKyAgICBNU0dGSUxFUz0iJE1TR0ZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcubXNnIgorICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgIFJFU09VUkNFU0RMTEZJTEVTPSIkUkVTT1VSQ0VTRExMRklMRVMgJHNyY2RpcnByZSRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCisgIGRvbmUKKyAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCisgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgIElOU1RfTElOR1VBUz0KKyAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgorICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICB1c2VpdD1ubworICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgorICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKKyAgICAgIGVsc2UKKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgorICAgICAgZmkKKyAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KKyAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKKyAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgorICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKyAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCisgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgorICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCisgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OworICAgICAgICBlc2FjCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgorICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgorICAgICAgZmkKKyAgICBkb25lCisgIGZpCisgIENBVEFMT0dTPQorICBKQVZBQ0FUQUxPR1M9CisgIFFUQ0FUQUxPR1M9CisgIFRDTENBVEFMT0dTPQorICBDU0hBUlBDQVRBTE9HUz0KKyAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KKyAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbworICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCisgICAgICBKQVZBQ0FUQUxPR1M9IiRKQVZBQ0FUQUxPR1MgXCQoRE9NQUlOKV8kbGFuZy5wcm9wZXJ0aWVzIgorICAgICAgUVRDQVRBTE9HUz0iJFFUQ0FUQUxPR1MgJGxhbmcucW0iCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAorICAgICAgVENMQ0FUQUxPR1M9IiRUQ0xDQVRBTE9HUyAkZnJvYmJlZGxhbmcubXNnIgorICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnIC1lICdzL15zci1DUy9zci1TUC8nIC1lICdzL0BsYXRpbiQvLUxhdG4vJyAtZSAncy9AY3lyaWxsaWMkLy1DeXJsLycgLWUgJ3MvXnNyLVNQJC9zci1TUC1MYXRuLycgLWUgJ3MvXnV6LVVaJC91ei1VWi1MYXRuLydgCisgICAgICBDU0hBUlBDQVRBTE9HUz0iJENTSEFSUENBVEFMT0dTICRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCisgICAgZG9uZQorICBmaQorCisgIHNlZCAtZSAic3xAUE9URklMRVNfREVQU0B8JFBPVEZJTEVTX0RFUFN8ZyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBQUk9QRVJUSUVTRklMRVNAfCRQUk9QRVJUSUVTRklMRVN8ZyIgLWUgInN8QENMQVNTRklMRVNAfCRDTEFTU0ZJTEVTfGciIC1lICJzfEBRTUZJTEVTQHwkUU1GSUxFU3xnIiAtZSAic3xATVNHRklMRVNAfCRNU0dGSUxFU3xnIiAtZSAic3xAUkVTT1VSQ0VTRExMRklMRVNAfCRSRVNPVVJDRVNETExGSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xASkFWQUNBVEFMT0dTQHwkSkFWQUNBVEFMT0dTfGciIC1lICJzfEBRVENBVEFMT0dTQHwkUVRDQVRBTE9HU3xnIiAtZSAic3xAVENMQ0FUQUxPR1NAfCRUQ0xDQVRBTE9HU3xnIiAtZSAic3xAQ1NIQVJQQ0FUQUxPR1NAfCRDU0hBUlBDQVRBTE9HU3xnIiAtZSAncyxeI2Rpc3RkaXI6LGRpc3RkaXI6LCcgPCAiJGFjX2ZpbGUiID4gIiRhY19maWxlLnRtcCIKKyAgdGFiPWBwcmludGYgJ1x0J2AKKyAgaWYgZ3JlcCAtbCAnQFRDTENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgorICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCisgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKKyRmcm9iYmVkbGFuZy5tc2c6ICRsYW5nLnBvCiske3RhYn1AZWNobyAiXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyI7IFwKKyR7dGFifVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KK0VPRgorICAgIGRvbmUKKyAgZmkKKyAgaWYgZ3JlcCAtbCAnQENTSEFSUENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgorICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCiskZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsOiAkbGFuZy5wbworJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKKyR7dGFifVwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciAiXCQoRE9NQUlOKSIgfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9CitFT0YKKyAgICBkb25lCisgIGZpCisgIGlmIHRlc3QgLW4gIiRQT01BS0VGSUxFREVQUyI7IHRoZW4KKyAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKK01ha2VmaWxlOiAkUE9NQUtFRklMRURFUFMKK0VPRgorICBmaQorICBtdiAiJGFjX2ZpbGUudG1wIiAiJGFjX2ZpbGUiCitdKQorCitkbmwgSW5pdGlhbGl6ZXMgdGhlIGFjY3VtdWxhdG9yIHVzZWQgYnkgQU1fWEdFVFRFWFRfT1BUSU9OLgorQUNfREVGVU4oW0FNX1hHRVRURVhUX09QVElPTl9JTklUXSwKK1sKKyAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KK10pCisKK2RubCBSZWdpc3RlcnMgYW4gb3B0aW9uIHRvIGJlIHBhc3NlZCB0byB4Z2V0dGV4dCBpbiB0aGUgcG8gc3ViZGlyZWN0b3J5LgorQUNfREVGVU4oW0FNX1hHRVRURVhUX09QVElPTl0sCitbCisgIEFDX1JFUVVJUkUoW0FNX1hHRVRURVhUX09QVElPTl9JTklUXSkKKyAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0iJFhHRVRURVhUX0VYVFJBX09QVElPTlMgJDEiCitdKQorCisjIHByaW50Zi1wb3NpeC5tNCBzZXJpYWwgNiAoZ2V0dGV4dC0wLjE4LjIpCitkbmwgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA5LTIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorZG5sIFRlc3Qgd2hldGhlciB0aGUgcHJpbnRmKCkgZnVuY3Rpb24gc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzIHdpdGgKK2RubCBwb3NpdGlvbnMuCisKK0FDX0RFRlVOKFtndF9QUklOVEZfUE9TSVhdLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgcHJpbnRmKCkgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzXSwKKyAgICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCwKKyAgICBbCisgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorLyogVGhlIHN0cmluZyAiJTIkZCAlMSRkIiwgd2l0aCBkb2xsYXIgY2hhcmFjdGVycyBwcm90ZWN0ZWQgZnJvbSB0aGUgc2hlbGwncworICAgZG9sbGFyIGV4cGFuc2lvbiAocG9zc2libHkgYW4gYXV0b2NvbmYgYnVnKS4gICovCitzdGF0aWMgY2hhciBmb3JtYXRbXSA9IHsgJyUnLCAnMicsICckJywgJ2QnLCAnICcsICclJywgJzEnLCAnJCcsICdkJywgJ1wwJyB9Oworc3RhdGljIGNoYXIgYnVmWzEwMF07CitpbnQgbWFpbiAoKQoreworICBzcHJpbnRmIChidWYsIGZvcm1hdCwgMzMsIDU1KTsKKyAgcmV0dXJuIChzdHJjbXAgKGJ1ZiwgIjU1IDMzIikgIT0gMCk7Cit9XV0pXSwKKyAgICAgICAgW2d0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PXllc10sCisgICAgICAgIFtndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD1ub10sCisgICAgICAgIFsKKyAgICAgICAgICBBQ19FR1JFUF9DUFAoW25vdHBvc2l4XSwgWworI2lmIGRlZmluZWQgX19OZXRCU0RfXyB8fCBkZWZpbmVkIF9fQkVPU19fIHx8IGRlZmluZWQgX01TQ19WRVIgfHwgZGVmaW5lZCBfX01JTkdXMzJfXyB8fCBkZWZpbmVkIF9fQ1lHV0lOX18KKyAgbm90cG9zaXgKKyNlbmRpZgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIFtndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3Npbmcgbm8iXSwKKyAgICAgICAgICAgIFtndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3NpbmcgeWVzIl0pCisgICAgICAgIF0pCisgICAgXSkKKyAgY2FzZSAkZ3RfY3ZfZnVuY19wcmludGZfcG9zaXggaW4KKyAgICAqeWVzKQorICAgICAgQUNfREVGSU5FKFtIQVZFX1BPU0lYX1BSSU5URl0sIFsxXSwKKyAgICAgICAgW0RlZmluZSBpZiB5b3VyIHByaW50ZigpIGZ1bmN0aW9uIHN1cHBvcnRzIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zLl0pCisgICAgICA7OworICBlc2FjCitdKQorCisjIHByb2d0ZXN0Lm00IHNlcmlhbCA3IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMywgMjAwNSwgMjAwOC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KKworQUNfUFJFUkVRKFsyLjUwXSkKKworIyBTZWFyY2ggcGF0aCBmb3IgYSBwcm9ncmFtIHdoaWNoIHBhc3NlcyB0aGUgZ2l2ZW4gdGVzdC4KKworZG5sIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoVkFSSUFCTEUsIFBST0ctVE8tQ0hFQ0stRk9SLAorZG5sICAgVEVTVC1QRVJGT1JNRUQtT04tRk9VTkRfUFJPR1JBTSBbLCBWQUxVRS1JRi1OT1QtRk9VTkQgWywgUEFUSF1dKQorQUNfREVGVU4oW0FNX1BBVEhfUFJPR19XSVRIX1RFU1RdLAorWworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworIyBGaW5kIG91dCBob3cgdG8gdGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCisjIGFzIHN5c3RlbXMgbWF5IHVzZSBtZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5LgorY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgorIyEgL2Jpbi9zaAorZXhpdCAwCitfQVNFT0YKK2NobW9kICt4IGNvbmYkJC5maWxlCitpZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCitlbHNlCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKK2ZpCitybSAtZiBjb25mJCQuZmlsZQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiQyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkMjsgYWNfd29yZD1bJF0yCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkYWNfd29yZF0pCitBQ19DQUNIRV9WQUwoW2FjX2N2X3BhdGhfJDFdLAorW2Nhc2UgIlskXSQxIiBpbgorICBbW1xcL11dKiB8ID86W1tcXC9dXSopCisgICAgYWNfY3ZfcGF0aF8kMT0iWyRdJDEiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICAgIDs7CisgICopCisgICAgYWNfc2F2ZV9JRlM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgZm9yIGFjX2RpciBpbiBpZmVsc2UoWyQ1XSwgLCAkUEFUSCwgWyQ1XSk7IGRvCisgICAgICBJRlM9IiRhY19zYXZlX0lGUyIKKyAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgICAgaWYgJGFjX2V4ZWN1dGFibGVfcCAiJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICAgICAgICBlY2hvICIkYXNfbWU6IHRyeWluZyAkYWNfZGlyLyRhY193b3JkLi4uIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgICAgaWYgWyQzXTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfcGF0aF8kMT0iJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAgICAgICAgIGJyZWFrIDIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBJRlM9IiRhY19zYXZlX0lGUyIKK2RubCBJZiBubyA0dGggYXJnIGlzIGdpdmVuLCBsZWF2ZSB0aGUgY2FjaGUgdmFyaWFibGUgdW5zZXQsCitkbmwgc28gQUNfUEFUSF9QUk9HUyB3aWxsIGtlZXAgbG9va2luZy4KK2lmZWxzZShbJDRdLCAsICwgWyAgdGVzdCAteiAiWyRdYWNfY3ZfcGF0aF8kMSIgJiYgYWNfY3ZfcGF0aF8kMT0iJDQiCitdKWRubAorICAgIDs7Citlc2FjXSlkbmwKKyQxPSIkYWNfY3ZfcGF0aF8kMSIKK2lmIHRlc3QgaWZlbHNlKFskNF0sICwgWy1uICJbJF0kMSJdLCBbIlskXSQxIiAhPSAiJDQiXSk7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChbJF1bJDFdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFtub10pCitmaQorQUNfU1VCU1QoWyQxXSlkbmwKK10pCisKKyMgc2l6ZV9tYXgubTQgc2VyaWFsIDEwCitkbmwgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LTIwMDYsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK0FDX0RFRlVOKFtnbF9TSVpFX01BWF0sCitbCisgIEFDX0NIRUNLX0hFQURFUlMoW3N0ZGludC5oXSkKKyAgZG5sIEZpcnN0IHRlc3Qgd2hldGhlciB0aGUgc3lzdGVtIGFscmVhZHkgaGFzIFNJWkVfTUFYLgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIFNJWkVfTUFYXSwgW2dsX2N2X3NpemVfbWF4XSwgWworICAgIGdsX2N2X3NpemVfbWF4PQorICAgIEFDX0VHUkVQX0NQUChbRm91bmQgaXRdLCBbCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaWYgSEFWRV9TVERJTlRfSAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisjaWZkZWYgU0laRV9NQVgKK0ZvdW5kIGl0CisjZW5kaWYKK10sIFtnbF9jdl9zaXplX21heD15ZXNdKQorICAgIGlmIHRlc3QgLXogIiRnbF9jdl9zaXplX21heCI7IHRoZW4KKyAgICAgIGRubCBEZWZpbmUgaXQgb3Vyc2VsdmVzLiBIZXJlIHdlIGFzc3VtZSB0aGF0IHRoZSB0eXBlICdzaXplX3QnIGlzIG5vdCB3aWRlcgorICAgICAgZG5sIHRoYW4gdGhlIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnLiBUcnkgaGFyZCB0byBmaW5kIGEgZGVmaW5pdGlvbiB0aGF0IGNhbgorICAgICAgZG5sIGJlIHVzZWQgaW4gYSBwcmVwcm9jZXNzb3IgI2lmLCBpLmUuIGRvZXNuJ3QgY29udGFpbiBhIGNhc3QuCisgICAgICBBQ19DT01QVVRFX0lOVChbc2l6ZV90X2JpdHNfbWludXNfMV0sIFtzaXplb2YgKHNpemVfdCkgKiBDSEFSX0JJVCAtIDFdLAorICAgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPl0sIFtzaXplX3RfYml0c19taW51c18xPV0pCisgICAgICBBQ19DT01QVVRFX0lOVChbZml0c19pbl91aW50XSwgW3NpemVvZiAoc2l6ZV90KSA8PSBzaXplb2YgKHVuc2lnbmVkIGludCldLAorICAgICAgICBbI2luY2x1ZGUgPHN0ZGRlZi5oPl0sIFtmaXRzX2luX3VpbnQ9XSkKKyAgICAgIGlmIHRlc3QgLW4gIiRzaXplX3RfYml0c19taW51c18xIiAmJiB0ZXN0IC1uICIkZml0c19pbl91aW50IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICRmaXRzX2luX3VpbnQgPSAxOyB0aGVuCisgICAgICAgICAgZG5sIEV2ZW4gdGhvdWdoIFNJWkVfTUFYIGZpdHMgaW4gYW4gdW5zaWduZWQgaW50LCBpdCBtdXN0IGJlIG9mIHR5cGUKKyAgICAgICAgICBkbmwgJ3Vuc2lnbmVkIGxvbmcnIGlmIHRoZSB0eXBlICdzaXplX3QnIGlzIHRoZSBzYW1lIGFzICd1bnNpZ25lZCBsb25nJy4KKyAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICBbWyNpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgICAgICAgICAgICAgZXh0ZXJuIHNpemVfdCBmb287CisgICAgICAgICAgICAgICAgIGV4dGVybiB1bnNpZ25lZCBsb25nIGZvbzsKKyAgICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgICAgW1tdXSldLAorICAgICAgICAgICAgW2ZpdHNfaW5fdWludD0wXSkKKyAgICAgICAgZmkKKyAgICAgICAgZG5sIFdlIGNhbm5vdCB1c2UgJ2V4cHInIHRvIHNpbXBsaWZ5IHRoaXMgZXhwcmVzc2lvbiwgYmVjYXVzZSAnZXhwcicKKyAgICAgICAgZG5sIHdvcmtzIG9ubHkgd2l0aCAnbG9uZycgaW50ZWdlcnMgaW4gdGhlIGhvc3QgZW52aXJvbm1lbnQsIHdoaWxlIHdlCisgICAgICAgIGRubCBtaWdodCBiZSBjcm9zcy1jb21waWxpbmcgZnJvbSBhIDMyLWJpdCBwbGF0Zm9ybSB0byBhIDY0LWJpdCBwbGF0Zm9ybS4KKyAgICAgICAgaWYgdGVzdCAkZml0c19pbl91aW50ID0gMTsgdGhlbgorICAgICAgICAgIGdsX2N2X3NpemVfbWF4PSIoKCgxVSA8PCAkc2l6ZV90X2JpdHNfbWludXNfMSkgLSAxKSAqIDIgKyAxKSIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGdsX2N2X3NpemVfbWF4PSIoKCgxVUwgPDwgJHNpemVfdF9iaXRzX21pbnVzXzEpIC0gMSkgKiAyICsgMSkiCisgICAgICAgIGZpCisgICAgICBlbHNlCisgICAgICAgIGRubCBTaG91bGRuJ3QgaGFwcGVuLCBidXQgd2hvIGtub3dzLi4uCisgICAgICAgIGdsX2N2X3NpemVfbWF4PScoKHNpemVfdCl+KHNpemVfdCkwKScKKyAgICAgIGZpCisgICAgZmkKKyAgXSkKKyAgaWYgdGVzdCAiJGdsX2N2X3NpemVfbWF4IiAhPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1NJWkVfTUFYXSwgWyRnbF9jdl9zaXplX21heF0sCisgICAgICBbRGVmaW5lIGFzIHRoZSBtYXhpbXVtIHZhbHVlIG9mIHR5cGUgJ3NpemVfdCcsIGlmIHRoZSBzeXN0ZW0gZG9lc24ndCBkZWZpbmUgaXQuXSkKKyAgZmkKKyAgZG5sIERvbid0IHJlZGVmaW5lIFNJWkVfTUFYIGluIGNvbmZpZy5oIGlmIGNvbmZpZy5oIGlzIHJlLWluY2x1ZGVkIGFmdGVyCisgIGRubCA8c3RkaW50Lmg+LiBSZW1lbWJlciB0aGF0IHRoZSAjdW5kZWYgaW4gQUhfVkVSQkFUSU0gZ2V0cyByZXBsYWNlZCB3aXRoCisgIGRubCAjZGVmaW5lIGJ5IEFDX0RFRklORV9VTlFVT1RFRC4KKyAgQUhfVkVSQkFUSU0oW1NJWkVfTUFYXSwKK1svKiBEZWZpbmUgYXMgdGhlIG1heGltdW0gdmFsdWUgb2YgdHlwZSAnc2l6ZV90JywgaWYgdGhlIHN5c3RlbSBkb2Vzbid0IGRlZmluZQorICAgaXQuICovCisjaWZuZGVmIFNJWkVfTUFYCisjIHVuZGVmIFNJWkVfTUFYCisjZW5kaWZdKQorXSkKKworZG5sIEF1dG9jb25mID49IDIuNjEgaGFzIEFDX0NPTVBVVEVfSU5UIGJ1aWx0LWluLgorZG5sIFJlbW92ZSB0aGlzIHdoZW4gd2UgY2FuIGFzc3VtZSBhdXRvY29uZiA+PSAyLjYxLgorbTRfaWZkZWYoW0FDX0NPTVBVVEVfSU5UXSwgW10sIFsKKyAgQUNfREVGVU4oW0FDX0NPTVBVVEVfSU5UXSwgW19BQ19DT01QVVRFX0lOVChbJDJdLFskMV0sWyQzXSxbJDRdKV0pCitdKQorCisjIHN0ZGludF9oLm00IHNlcmlhbCA5CitkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDQsIDIwMDYsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBQYXVsIEVnZ2VydC4KKworIyBEZWZpbmUgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVggaWYgPHN0ZGludC5oPiBleGlzdHMsCisjIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LCBhbmQgZGVjbGFyZXMgdWludG1heF90LgorCitBQ19ERUZVTihbZ2xfQUNfSEVBREVSX1NURElOVF9IXSwKK1sKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdGRpbnQuaF0sIFtnbF9jdl9oZWFkZXJfc3RkaW50X2hdLAorICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPl1dLAorICAgICAgICAgIFtbdWludG1heF90IGkgPSAodWludG1heF90KSAtMTsgcmV0dXJuICFpO11dKV0sCisgICAgICAgW2dsX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXNdLAorICAgICAgIFtnbF9jdl9oZWFkZXJfc3RkaW50X2g9bm9dKV0pCisgIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zdGRpbnRfaCA9IHllczsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChbSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVhdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwKKyAgICAgICBhbmQgZGVjbGFyZXMgdWludG1heF90LiBdKQorICBmaQorXSkKKworIyB0aHJlYWRsaWIubTQgc2VyaWFsIDEwIChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK2RubCBnbF9USFJFQURMSUIKK2RubCAtLS0tLS0tLS0tLS0KK2RubCBUZXN0cyBmb3IgYSBtdWx0aXRocmVhZGluZyBsaWJyYXJ5IHRvIGJlIHVzZWQuCitkbmwgSWYgdGhlIGNvbmZpZ3VyZS5hYyBjb250YWlucyBhIGRlZmluaXRpb24gb2YgdGhlIGdsX1RIUkVBRExJQl9ERUZBVUxUX05PCitkbmwgKGl0IG11c3QgYmUgcGxhY2VkIGJlZm9yZSB0aGUgaW52b2NhdGlvbiBvZiBnbF9USFJFQURMSUJfRUFSTFkhKSwgdGhlbiB0aGUKK2RubCBkZWZhdWx0IGlzICdubycsIG90aGVyd2lzZSBpdCBpcyBzeXN0ZW0gZGVwZW5kZW50LiBJbiBib3RoIGNhc2VzLCB0aGUgdXNlcgorZG5sIGNhbiBjaGFuZ2UgdGhlIGNob2ljZSB0aHJvdWdoIHRoZSBvcHRpb25zIC0tZW5hYmxlLXRocmVhZHM9Y2hvaWNlIG9yCitkbmwgLS1kaXNhYmxlLXRocmVhZHMuCitkbmwgRGVmaW5lcyBhdCBtb3N0IG9uZSBvZiB0aGUgbWFjcm9zIFVTRV9QT1NJWF9USFJFQURTLCBVU0VfU09MQVJJU19USFJFQURTLAorZG5sIFVTRV9QVEhfVEhSRUFEUywgVVNFX1dJTkRPV1NfVEhSRUFEUworZG5sIFNldHMgdGhlIHZhcmlhYmxlcyBMSUJUSFJFQUQgYW5kIExUTElCVEhSRUFEIHRvIHRoZSBsaW5rZXIgb3B0aW9ucyBmb3IgdXNlCitkbmwgaW4gYSBNYWtlZmlsZSAoTElCVEhSRUFEIGZvciB1c2Ugd2l0aG91dCBsaWJ0b29sLCBMVExJQlRIUkVBRCBmb3IgdXNlIHdpdGgKK2RubCBsaWJ0b29sKS4KK2RubCBTZXRzIHRoZSB2YXJpYWJsZXMgTElCTVVMVElUSFJFQUQgYW5kIExUTElCTVVMVElUSFJFQUQgc2ltaWxhcmx5LCBmb3IKK2RubCBwcm9ncmFtcyB0aGF0IHJlYWxseSBuZWVkIG11bHRpdGhyZWFkIGZ1bmN0aW9uYWxpdHkuIFRoZSBkaWZmZXJlbmNlCitkbmwgYmV0d2VlbiBMSUJUSFJFQUQgYW5kIExJQk1VTFRJVEhSRUFEIGlzIHRoYXQgb24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgd2VhaworZG5sIHN5bWJvbHMsIHR5cGljYWxseSBMSUJUSFJFQUQ9IiIgd2hlcmVhcyBMSUJNVUxUSVRIUkVBRD0iLWxwdGhyZWFkIi4KK2RubCBBZGRzIHRvIENQUEZMQUdTIHRoZSBmbGFnIC1EX1JFRU5UUkFOVCBvciAtRF9USFJFQURfU0FGRSBpZiBuZWVkZWQgZm9yCitkbmwgbXVsdGl0aHJlYWQtc2FmZSBwcm9ncmFtcy4KKworQUNfREVGVU4oW2dsX1RIUkVBRExJQl9FQVJMWV0sCitbCisgIEFDX1JFUVVJUkUoW2dsX1RIUkVBRExJQl9FQVJMWV9CT0RZXSkKK10pCisKK2RubCBUaGUgZ3V0cyBvZiBnbF9USFJFQURMSUJfRUFSTFkuIE5lZWRzIHRvIGJlIGV4cGFuZGVkIG9ubHkgb25jZS4KKworQUNfREVGVU4oW2dsX1RIUkVBRExJQl9FQVJMWV9CT0RZXSwKK1sKKyAgZG5sIE9yZGVyaW5nIGNvbnN0cmFpbnRzOiBUaGlzIG1hY3JvIG1vZGlmaWVzIENQUEZMQUdTIGluIGEgd2F5IHRoYXQKKyAgZG5sIGluZmx1ZW5jZXMgdGhlIHJlc3VsdCBvZiB0aGUgYXV0b2NvbmYgdGVzdHMgdGhhdCB0ZXN0IGZvciAqX3VubG9ja2VkCisgIGRubCBkZWNsYXJhdGlvbnMsIG9uIEFJWCA1IGF0IGxlYXN0LiBUaGVyZWZvcmUgaXQgbXVzdCBjb21lIGVhcmx5LgorICBBQ19CRUZPUkUoWyQwXSwgW2dsX0ZVTkNfR0xJQkNfVU5MT0NLRURfSU9dKWRubAorICBBQ19CRUZPUkUoWyQwXSwgW2dsX0FSR1BdKWRubAorCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKyAgZG5sIF9HTlVfU09VUkNFIGlzIG5lZWRlZCBmb3IgcHRocmVhZF9yd2xvY2tfdCBvbiBnbGliYyBzeXN0ZW1zLgorICBkbmwgQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TIHdhcyBpbnRyb2R1Y2VkIGluIGF1dG9jb25mIDIuNjAgYW5kIG9ic29sZXRlcworICBkbmwgQUNfR05VX1NPVVJDRS4KKyAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sCisgICAgW0FDX1JFUVVJUkUoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10pXSwKKyAgICBbQUNfUkVRVUlSRShbQUNfR05VX1NPVVJDRV0pXSkKKyAgZG5sIENoZWNrIGZvciBtdWx0aXRocmVhZGluZy4KKyAgbTRfaWZkZWYoW2dsX1RIUkVBRExJQl9ERUZBVUxUX05PXSwKKyAgICBbbTRfZGl2ZXJ0X3RleHQoW0RFRkFVTFRTXSwgW2dsX3VzZV90aHJlYWRzX2RlZmF1bHQ9bm9dKV0sCisgICAgW200X2RpdmVydF90ZXh0KFtERUZBVUxUU10sIFtnbF91c2VfdGhyZWFkc19kZWZhdWx0PV0pXSkKKyAgQUNfQVJHX0VOQUJMRShbdGhyZWFkc10sCitBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtdGhyZWFkcz17cG9zaXh8c29sYXJpc3xwdGh8d2luZG93c31dLCBbc3BlY2lmeSBtdWx0aXRocmVhZGluZyBBUEldKW00X2lmZGVmKFtnbF9USFJFQURMSUJfREVGQVVMVF9OT10sIFtdLCBbCitBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXRocmVhZHNdLCBbYnVpbGQgd2l0aG91dCBtdWx0aXRocmVhZCBzYWZldHldKV0pLAorICAgIFtnbF91c2VfdGhyZWFkcz0kZW5hYmxldmFsXSwKKyAgICBbaWYgdGVzdCAtbiAiJGdsX3VzZV90aHJlYWRzX2RlZmF1bHQiOyB0aGVuCisgICAgICAgZ2xfdXNlX3RocmVhZHM9IiRnbF91c2VfdGhyZWFkc19kZWZhdWx0IgorICAgICBlbHNlCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgZG5sIERpc2FibGUgbXVsdGl0aHJlYWRpbmcgYnkgZGVmYXVsdCBvbiBPU0YvMSwgYmVjYXVzZSBpdCBpbnRlcmZlcmVzCisgICAgICAgICBkbmwgd2l0aCBmb3JrKCkvZXhlYygpOiBXaGVuIG1zZ2V4ZWMgaXMgbGlua2VkIHdpdGggLWxwdGhyZWFkLCBpdHMKKyAgICAgICAgIGRubCBjaGlsZCBwcm9jZXNzIGdldHMgYW4gZW5kbGVzcyBzZWdtZW50YXRpb24gZmF1bHQgaW5zaWRlIGV4ZWN2cCgpLgorICAgICAgICAgZG5sIERpc2FibGUgbXVsdGl0aHJlYWRpbmcgYnkgZGVmYXVsdCBvbiBDeWd3aW4gMS41LngsIGJlY2F1c2UgaXQgaGFzCisgICAgICAgICBkbmwgYnVncyB0aGF0IGxlYWQgdG8gZW5kbGVzcyBsb29wcyBvciBjcmFzaGVzLiBTZWUKKyAgICAgICAgIGRubCA8aHR0cDovL2N5Z3dpbi5jb20vbWwvY3lnd2luLzIwMDktMDgvbXNnMDAyODMuaHRtbD4uCisgICAgICAgICBvc2YqKSBnbF91c2VfdGhyZWFkcz1ubyA7OworICAgICAgICAgY3lnd2luKikKKyAgICAgICAgICAgICAgIGNhc2UgYHVuYW1lIC1yYCBpbgorICAgICAgICAgICAgICAgICAxLlswLTVdLiopIGdsX3VzZV90aHJlYWRzPW5vIDs7CisgICAgICAgICAgICAgICAgICopICAgICAgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CisgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICA7OworICAgICAgICAgKikgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CisgICAgICAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICBmaQorICAgIF0pCisgIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSB5ZXMgfHwgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHBvc2l4OyB0aGVuCisgICAgIyBGb3IgdXNpbmcgPHB0aHJlYWQuaD46CisgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICBvc2YqKQorICAgICAgICAjIE9uIE9TRi8xLCB0aGUgY29tcGlsZXIgbmVlZHMgdGhlIGZsYWcgLURfUkVFTlRSQU5UIHNvIHRoYXQgaXQKKyAgICAgICAgIyBncm9rcyA8cHRocmVhZC5oPi4gY2MgYWxzbyB1bmRlcnN0YW5kcyB0aGUgZmxhZyAtcHRocmVhZCwgYnV0CisgICAgICAgICMgd2UgZG9uJ3QgdXNlIGl0IGJlY2F1c2UgMS4gZ2NjLTIuOTUgZG9lc24ndCB1bmRlcnN0YW5kIC1wdGhyZWFkLAorICAgICAgICAjIDIuIHB1dHRpbmcgYSBmbGFnIGludG8gQ1BQRkxBR1MgdGhhdCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBsaW5rZXIKKyAgICAgICAgIyBjYXVzZXMgdGhlIEFDX0xJTktfSUZFTFNFIHRlc3QgYmVsb3cgdG8gc3VjY2VlZCB1bmV4cGVjdGVkbHksCisgICAgICAgICMgbGVhZGluZyB0byB3cm9uZyB2YWx1ZXMgb2YgTElCVEhSRUFEIGFuZCBMVExJQlRIUkVBRC4KKyAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9SRUVOVFJBTlQiCisgICAgICAgIDs7CisgICAgZXNhYworICAgICMgU29tZSBzeXN0ZW1zIG9wdGltaXplIGZvciBzaW5nbGUtdGhyZWFkZWQgcHJvZ3JhbXMgYnkgZGVmYXVsdCwgYW5kCisgICAgIyBuZWVkIHNwZWNpYWwgZmxhZ3MgdG8gZGlzYWJsZSB0aGVzZSBvcHRpbWl6YXRpb25zLiBGb3IgZXhhbXBsZSwgdGhlCisgICAgIyBkZWZpbml0aW9uIG9mICdlcnJubycgaW4gPGVycm5vLmg+LgorICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgYWl4KiB8IGZyZWVic2QqKSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1RIUkVBRF9TQUZFIiA7OworICAgICAgc29sYXJpcyopIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfUkVFTlRSQU5UIiA7OworICAgIGVzYWMKKyAgZmkKK10pCisKK2RubCBUaGUgZ3V0cyBvZiBnbF9USFJFQURMSUIuIE5lZWRzIHRvIGJlIGV4cGFuZGVkIG9ubHkgb25jZS4KKworQUNfREVGVU4oW2dsX1RIUkVBRExJQl9CT0RZXSwKK1sKKyAgQUNfUkVRVUlSRShbZ2xfVEhSRUFETElCX0VBUkxZX0JPRFldKQorICBnbF90aHJlYWRzX2FwaT1ub25lCisgIExJQlRIUkVBRD0KKyAgTFRMSUJUSFJFQUQ9CisgIExJQk1VTFRJVEhSRUFEPQorICBMVExJQk1VTFRJVEhSRUFEPQorICBpZiB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiICE9IG5vOyB0aGVuCisgICAgZG5sIENoZWNrIHdoZXRoZXIgdGhlIGNvbXBpbGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB3ZWFrIGRlY2xhcmF0aW9ucy4KKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBpbXBvcnRlZCBzeW1ib2xzIGNhbiBiZSBkZWNsYXJlZCB3ZWFrXSwKKyAgICAgIFtnbF9jdl9oYXZlX3dlYWtdLAorICAgICAgW2dsX2N2X2hhdmVfd2Vhaz1ubworICAgICAgIGRubCBGaXJzdCwgdGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBhY2NlcHRzIGl0IHN5bnRhY3RpY2FsbHkuCisgICAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgW1tleHRlcm4gdm9pZCB4eXp6eSAoKTsKKyNwcmFnbWEgd2VhayB4eXp6eV1dLAorICAgICAgICAgICAgW1t4eXp6eSgpO11dKV0sCisgICAgICAgICBbZ2xfY3ZfaGF2ZV93ZWFrPW1heWJlXSkKKyAgICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX3dlYWsgPSBtYXliZTsgdGhlbgorICAgICAgICAgZG5sIFNlY29uZCwgdGVzdCB3aGV0aGVyIGl0IGFjdHVhbGx5IHdvcmtzLiBPbiBDeWd3aW4gMS43LjIsIHdpdGgKKyAgICAgICAgIGRubCBnY2MgNC4zLCBzeW1ib2xzIGRlY2xhcmVkIHdlYWsgYWx3YXlzIGV2YWx1YXRlIHRvIHRoZSBhZGRyZXNzIDAuCisgICAgICAgICBBQ19SVU5fSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI3ByYWdtYSB3ZWFrIGZwdXRzCitpbnQgbWFpbiAoKQoreworICByZXR1cm4gKGZwdXRzID09IE5VTEwpOworfV1dKV0sCisgICAgICAgICAgIFtnbF9jdl9oYXZlX3dlYWs9eWVzXSwKKyAgICAgICAgICAgW2dsX2N2X2hhdmVfd2Vhaz1ub10sCisgICAgICAgICAgIFtkbmwgV2hlbiBjcm9zcy1jb21waWxpbmcsIGFzc3VtZSB0aGF0IG9ubHkgRUxGIHBsYXRmb3JtcyBzdXBwb3J0CisgICAgICAgICAgICBkbmwgd2VhayBzeW1ib2xzLgorICAgICAgICAgICAgQUNfRUdSRVBfQ1BQKFtFeHRlbnNpYmxlIExpbmtpbmcgRm9ybWF0XSwKKyAgICAgICAgICAgICAgWyNpZmRlZiBfX0VMRl9fCisgICAgICAgICAgICAgICBFeHRlbnNpYmxlIExpbmtpbmcgRm9ybWF0CisgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hhdmVfd2Vhaz0iZ3Vlc3NpbmcgeWVzIl0sCisgICAgICAgICAgICAgIFtnbF9jdl9oYXZlX3dlYWs9Imd1ZXNzaW5nIG5vIl0pCisgICAgICAgICAgIF0pCisgICAgICAgZmkKKyAgICAgIF0pCisgICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHllcyB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gcG9zaXg7IHRoZW4KKyAgICAgICMgT24gT1NGLzEsIHRoZSBjb21waWxlciBuZWVkcyB0aGUgZmxhZyAtcHRocmVhZCBvciAtRF9SRUVOVFJBTlQgc28gdGhhdAorICAgICAgIyBpdCBncm9rcyA8cHRocmVhZC5oPi4gSXQncyBhZGRlZCBhYm92ZSwgaW4gZ2xfVEhSRUFETElCX0VBUkxZX0JPRFkuCisgICAgICBBQ19DSEVDS19IRUFERVIoW3B0aHJlYWQuaF0sCisgICAgICAgIFtnbF9oYXZlX3B0aHJlYWRfaD15ZXNdLCBbZ2xfaGF2ZV9wdGhyZWFkX2g9bm9dKQorICAgICAgaWYgdGVzdCAiJGdsX2hhdmVfcHRocmVhZF9oIiA9IHllczsgdGhlbgorICAgICAgICAjIE90aGVyIHBvc3NpYmxlIHRlc3RzOgorICAgICAgICAjICAgLWxwdGhyZWFkcyAoRlNVIHRocmVhZHMsIFBDdGhyZWFkcykKKyAgICAgICAgIyAgIC1sZ3RocmVhZHMKKyAgICAgICAgZ2xfaGF2ZV9wdGhyZWFkPQorICAgICAgICAjIFRlc3Qgd2hldGhlciBib3RoIHB0aHJlYWRfbXV0ZXhfbG9jayBhbmQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCBleGlzdAorICAgICAgICAjIGluIGxpYmMuIElSSVggNi41IGhhcyB0aGUgZmlyc3Qgb25lIGluIGJvdGggbGliYyBhbmQgbGlicHRocmVhZCwgYnV0CisgICAgICAgICMgdGhlIHNlY29uZCBvbmUgb25seSBpbiBsaWJwdGhyZWFkLCBhbmQgbG9jay5jIG5lZWRzIGl0LgorICAgICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgIFtbI2luY2x1ZGUgPHB0aHJlYWQuaD5dXSwKKyAgICAgICAgICAgICBbW3B0aHJlYWRfbXV0ZXhfbG9jaygocHRocmVhZF9tdXRleF90KikwKTsKKyAgICAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQoKHB0aHJlYWRfbXV0ZXhhdHRyX3QqKTApO11dKV0sCisgICAgICAgICAgW2dsX2hhdmVfcHRocmVhZD15ZXNdKQorICAgICAgICAjIFRlc3QgZm9yIGxpYnB0aHJlYWQgYnkgbG9va2luZyBmb3IgcHRocmVhZF9raWxsLiAoTm90IHB0aHJlYWRfc2VsZiwKKyAgICAgICAgIyBzaW5jZSBpdCBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gb24gT1NGLzEuKQorICAgICAgICBpZiB0ZXN0IC1uICIkZ2xfaGF2ZV9wdGhyZWFkIjsgdGhlbgorICAgICAgICAgICMgVGhlIHByb2dyYW0gbGlua3MgZmluZSB3aXRob3V0IGxpYnB0aHJlYWQuIEJ1dCBpdCBtYXkgYWN0dWFsbHkKKyAgICAgICAgICAjIG5lZWQgdG8gbGluayB3aXRoIGxpYnB0aHJlYWQgaW4gb3JkZXIgdG8gY3JlYXRlIG11bHRpcGxlIHRocmVhZHMuCisgICAgICAgICAgQUNfQ0hFQ0tfTElCKFtwdGhyZWFkXSwgW3B0aHJlYWRfa2lsbF0sCisgICAgICAgICAgICBbTElCTVVMVElUSFJFQUQ9LWxwdGhyZWFkIExUTElCTVVMVElUSFJFQUQ9LWxwdGhyZWFkCisgICAgICAgICAgICAgIyBPbiBTb2xhcmlzIGFuZCBIUC1VWCwgbW9zdCBwdGhyZWFkIGZ1bmN0aW9ucyBleGlzdCBhbHNvIGluIGxpYmMuCisgICAgICAgICAgICAgIyBUaGVyZWZvcmUgcHRocmVhZF9pbl91c2UoKSBuZWVkcyB0byBhY3R1YWxseSB0cnkgdG8gY3JlYXRlIGEKKyAgICAgICAgICAgICAjIHRocmVhZDogcHRocmVhZF9jcmVhdGUgZnJvbSBsaWJjIHdpbGwgZmFpbCwgd2hlcmVhcworICAgICAgICAgICAgICMgcHRocmVhZF9jcmVhdGUgd2lsbCBhY3R1YWxseSBjcmVhdGUgYSB0aHJlYWQuCisgICAgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICBzb2xhcmlzKiB8IGhwdXgqKQorICAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW1BUSFJFQURfSU5fVVNFX0RFVEVDVElPTl9IQVJEXSwgWzFdLAorICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgdGhlIHB0aHJlYWRfaW5fdXNlKCkgZGV0ZWN0aW9uIGlzIGhhcmQuXSkKKyAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBdKQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBTb21lIGxpYnJhcnkgaXMgbmVlZGVkLiBUcnkgbGlicHRocmVhZCBhbmQgbGliY19yLgorICAgICAgICAgIEFDX0NIRUNLX0xJQihbcHRocmVhZF0sIFtwdGhyZWFkX2tpbGxdLAorICAgICAgICAgICAgW2dsX2hhdmVfcHRocmVhZD15ZXMKKyAgICAgICAgICAgICBMSUJUSFJFQUQ9LWxwdGhyZWFkIExUTElCVEhSRUFEPS1scHRocmVhZAorICAgICAgICAgICAgIExJQk1VTFRJVEhSRUFEPS1scHRocmVhZCBMVExJQk1VTFRJVEhSRUFEPS1scHRocmVhZF0pCisgICAgICAgICAgaWYgdGVzdCAteiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KKyAgICAgICAgICAgICMgRm9yIEZyZWVCU0QgNC4KKyAgICAgICAgICAgIEFDX0NIRUNLX0xJQihbY19yXSwgW3B0aHJlYWRfa2lsbF0sCisgICAgICAgICAgICAgIFtnbF9oYXZlX3B0aHJlYWQ9eWVzCisgICAgICAgICAgICAgICBMSUJUSFJFQUQ9LWxjX3IgTFRMSUJUSFJFQUQ9LWxjX3IKKyAgICAgICAgICAgICAgIExJQk1VTFRJVEhSRUFEPS1sY19yIExUTElCTVVMVElUSFJFQUQ9LWxjX3JdKQorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgLW4gIiRnbF9oYXZlX3B0aHJlYWQiOyB0aGVuCisgICAgICAgICAgZ2xfdGhyZWFkc19hcGk9cG9zaXgKKyAgICAgICAgICBBQ19ERUZJTkUoW1VTRV9QT1NJWF9USFJFQURTXSwgWzFdLAorICAgICAgICAgICAgW0RlZmluZSBpZiB0aGUgUE9TSVggbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBjYW4gYmUgdXNlZC5dKQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJNVUxUSVRIUkVBRCIgfHwgdGVzdCAtbiAiJExUTElCTVVMVElUSFJFQUQiOyB0aGVuCisgICAgICAgICAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCisgICAgICAgICAgICAgIEFDX0RFRklORShbVVNFX1BPU0lYX1RIUkVBRFNfV0VBS10sIFsxXSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIGlmIHJlZmVyZW5jZXMgdG8gdGhlIFBPU0lYIG11bHRpdGhyZWFkaW5nIGxpYnJhcnkgc2hvdWxkIGJlIG1hZGUgd2Vhay5dKQorICAgICAgICAgICAgICBMSUJUSFJFQUQ9CisgICAgICAgICAgICAgIExUTElCVEhSRUFEPQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICAgIGlmIHRlc3QgLXogIiRnbF9oYXZlX3B0aHJlYWQiOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0geWVzIHx8IHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSBzb2xhcmlzOyB0aGVuCisgICAgICAgIGdsX2hhdmVfc29sYXJpc3RocmVhZD0KKyAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgTElCUz0iJExJQlMgLWx0aHJlYWQiCisgICAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDx0aHJlYWQuaD4KKyNpbmNsdWRlIDxzeW5jaC5oPgorICAgICAgICAgICAgIF1dLAorICAgICAgICAgICAgIFtbdGhyX3NlbGYoKTtdXSldLAorICAgICAgICAgIFtnbF9oYXZlX3NvbGFyaXN0aHJlYWQ9eWVzXSkKKyAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKyAgICAgICAgaWYgdGVzdCAtbiAiJGdsX2hhdmVfc29sYXJpc3RocmVhZCI7IHRoZW4KKyAgICAgICAgICBnbF90aHJlYWRzX2FwaT1zb2xhcmlzCisgICAgICAgICAgTElCVEhSRUFEPS1sdGhyZWFkCisgICAgICAgICAgTFRMSUJUSFJFQUQ9LWx0aHJlYWQKKyAgICAgICAgICBMSUJNVUxUSVRIUkVBRD0iJExJQlRIUkVBRCIKKyAgICAgICAgICBMVExJQk1VTFRJVEhSRUFEPSIkTFRMSUJUSFJFQUQiCisgICAgICAgICAgQUNfREVGSU5FKFtVU0VfU09MQVJJU19USFJFQURTXSwgWzFdLAorICAgICAgICAgICAgW0RlZmluZSBpZiB0aGUgb2xkIFNvbGFyaXMgbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBjYW4gYmUgdXNlZC5dKQorICAgICAgICAgIGlmIGNhc2UgIiRnbF9jdl9oYXZlX3dlYWsiIGluICp5ZXMpIHRydWU7OyAqKSBmYWxzZTs7IGVzYWM7IHRoZW4KKyAgICAgICAgICAgIEFDX0RFRklORShbVVNFX1NPTEFSSVNfVEhSRUFEU19XRUFLXSwgWzFdLAorICAgICAgICAgICAgICBbRGVmaW5lIGlmIHJlZmVyZW5jZXMgdG8gdGhlIG9sZCBTb2xhcmlzIG11bHRpdGhyZWFkaW5nIGxpYnJhcnkgc2hvdWxkIGJlIG1hZGUgd2Vhay5dKQorICAgICAgICAgICAgTElCVEhSRUFEPQorICAgICAgICAgICAgTFRMSUJUSFJFQUQ9CisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gcHRoOyB0aGVuCisgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICBBQ19MSUJfTElOS0ZMQUdTKFtwdGhdKQorICAgICAgZ2xfaGF2ZV9wdGg9CisgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgTElCUz0iJExJQlMgJExJQlBUSCIKKyAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHB0aC5oPl1dLCBbW3B0aF9zZWxmKCk7XV0pXSwKKyAgICAgICAgW2dsX2hhdmVfcHRoPXllc10pCisgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorICAgICAgaWYgdGVzdCAtbiAiJGdsX2hhdmVfcHRoIjsgdGhlbgorICAgICAgICBnbF90aHJlYWRzX2FwaT1wdGgKKyAgICAgICAgTElCVEhSRUFEPSIkTElCUFRIIgorICAgICAgICBMVExJQlRIUkVBRD0iJExUTElCUFRIIgorICAgICAgICBMSUJNVUxUSVRIUkVBRD0iJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJNVUxUSVRIUkVBRD0iJExUTElCVEhSRUFEIgorICAgICAgICBBQ19ERUZJTkUoW1VTRV9QVEhfVEhSRUFEU10sIFsxXSwKKyAgICAgICAgICBbRGVmaW5lIGlmIHRoZSBHTlUgUHRoIG11bHRpdGhyZWFkaW5nIGxpYnJhcnkgY2FuIGJlIHVzZWQuXSkKKyAgICAgICAgaWYgdGVzdCAtbiAiJExJQk1VTFRJVEhSRUFEIiB8fCB0ZXN0IC1uICIkTFRMSUJNVUxUSVRIUkVBRCI7IHRoZW4KKyAgICAgICAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkUoW1VTRV9QVEhfVEhSRUFEU19XRUFLXSwgWzFdLAorICAgICAgICAgICAgICBbRGVmaW5lIGlmIHJlZmVyZW5jZXMgdG8gdGhlIEdOVSBQdGggbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBzaG91bGQgYmUgbWFkZSB3ZWFrLl0pCisgICAgICAgICAgICBMSUJUSFJFQUQ9CisgICAgICAgICAgICBMVExJQlRIUkVBRD0KKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAteiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KKyAgICAgIGNhc2UgIiRnbF91c2VfdGhyZWFkcyIgaW4KKyAgICAgICAgeWVzIHwgd2luZG93cyB8IHdpbjMyKSAjIFRoZSAnd2luMzInIGlzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorICAgICAgICAgIGlmIHsgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICAgIG1pbmd3KikgdHJ1ZTs7CisgICAgICAgICAgICAgICAgICopIGZhbHNlOzsKKyAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICB9OyB0aGVuCisgICAgICAgICAgICBnbF90aHJlYWRzX2FwaT13aW5kb3dzCisgICAgICAgICAgICBBQ19ERUZJTkUoW1VTRV9XSU5ET1dTX1RIUkVBRFNdLCBbMV0sCisgICAgICAgICAgICAgIFtEZWZpbmUgaWYgdGhlIG5hdGl2ZSBXaW5kb3dzIG11bHRpdGhyZWFkaW5nIEFQSSBjYW4gYmUgdXNlZC5dKQorICAgICAgICAgIGZpCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBmaQorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBtdWx0aXRocmVhZCBBUEkgdG8gdXNlXSkKKyAgQUNfTVNHX1JFU1VMVChbJGdsX3RocmVhZHNfYXBpXSkKKyAgQUNfU1VCU1QoW0xJQlRIUkVBRF0pCisgIEFDX1NVQlNUKFtMVExJQlRIUkVBRF0pCisgIEFDX1NVQlNUKFtMSUJNVUxUSVRIUkVBRF0pCisgIEFDX1NVQlNUKFtMVExJQk1VTFRJVEhSRUFEXSkKK10pCisKK0FDX0RFRlVOKFtnbF9USFJFQURMSUJdLAorWworICBBQ19SRVFVSVJFKFtnbF9USFJFQURMSUJfRUFSTFldKQorICBBQ19SRVFVSVJFKFtnbF9USFJFQURMSUJfQk9EWV0pCitdKQorCisKK2RubCBnbF9ESVNBQkxFX1RIUkVBRFMKK2RubCAtLS0tLS0tLS0tLS0tLS0tLS0KK2RubCBTZXRzIHRoZSBnbF9USFJFQURMSUIgZGVmYXVsdCBzbyB0aGF0IHRocmVhZHMgYXJlIG5vdCB1c2VkIGJ5IGRlZmF1bHQuCitkbmwgVGhlIHVzZXIgY2FuIHN0aWxsIG92ZXJyaWRlIGl0IGF0IGluc3RhbGxhdGlvbiB0aW1lLCBieSB1c2luZyB0aGUKK2RubCBjb25maWd1cmUgb3B0aW9uICctLWVuYWJsZS10aHJlYWRzJy4KKworQUNfREVGVU4oW2dsX0RJU0FCTEVfVEhSRUFEU10sIFsKKyAgbTRfZGl2ZXJ0X3RleHQoW0lOSVRfUFJFUEFSRV0sIFtnbF91c2VfdGhyZWFkc19kZWZhdWx0PW5vXSkKK10pCisKKworZG5sIFN1cnZleSBvZiBwbGF0Zm9ybXM6CitkbmwKK2RubCBQbGF0Zm9ybSAgICAgICAgICAgQXZhaWxhYmxlICBDb21waWxlciAgICBTdXBwb3J0cyAgIHRlc3QtbG9jaworZG5sICAgICAgICAgICAgICAgICAgICBmbGF2b3VycyAgIG9wdGlvbiAgICAgIHdlYWsgICAgICAgcmVzdWx0CitkbmwgLS0tLS0tLS0tLS0tLS0tICAgIC0tLS0tLS0tLSAgLS0tLS0tLS0tICAgLS0tLS0tLS0gICAtLS0tLS0tLS0KK2RubCBMaW51eCAyLjQvZ2xpYmMgICAgcG9zaXggICAgICAtbHB0aHJlYWQgICAgICAgWSAgICAgIE9LCitkbmwKK2RubCBHTlUgSHVyZC9nbGliYyAgICAgcG9zaXgKK2RubAorZG5sIEZyZWVCU0QgNS4zICAgICAgICBwb3NpeCAgICAgIC1sY19yICAgICAgICAgICBZCitkbmwgICAgICAgICAgICAgICAgICAgIHBvc2l4ICAgICAgLWxrc2UgPyAgICAgICAgIFkKK2RubCAgICAgICAgICAgICAgICAgICAgcG9zaXggICAgICAtbHB0aHJlYWQgPyAgICAgWQorZG5sICAgICAgICAgICAgICAgICAgICBwb3NpeCAgICAgIC1sdGhyICAgICAgICAgICBZCitkbmwKK2RubCBGcmVlQlNEIDUuMiAgICAgICAgcG9zaXggICAgICAtbGNfciAgICAgICAgICAgWQorZG5sICAgICAgICAgICAgICAgICAgICBwb3NpeCAgICAgIC1sa3NlICAgICAgICAgICBZCitkbmwgICAgICAgICAgICAgICAgICAgIHBvc2l4ICAgICAgLWx0aHIgICAgICAgICAgIFkKK2RubAorZG5sIEZyZWVCU0QgNC4wLDQuMTAgICBwb3NpeCAgICAgIC1sY19yICAgICAgICAgICBZICAgICAgT0sKK2RubAorZG5sIE5ldEJTRCAxLjYgICAgICAgICAtLQorZG5sCitkbmwgT3BlbkJTRCAzLjQgICAgICAgIHBvc2l4ICAgICAgLWxwdGhyZWFkICAgICAgIFkgICAgICBPSworZG5sCitkbmwgTWFjIE9TIFggMTAuWzEyM10gIHBvc2l4ICAgICAgLWxwdGhyZWFkICAgICAgIFkgICAgICBPSworZG5sCitkbmwgU29sYXJpcyA3LDgsOSAgICAgIHBvc2l4ICAgICAgLWxwdGhyZWFkICAgICAgIFkgICAgICBTb2wgNyw4OiAwLjA7IFNvbCA5OiBPSworZG5sICAgICAgICAgICAgICAgICAgICBzb2xhcmlzICAgIC1sdGhyZWFkICAgICAgICBZICAgICAgU29sIDcsODogMC4wOyBTb2wgOTogT0sKK2RubAorZG5sIEhQLVVYIDExICAgICAgICAgICBwb3NpeCAgICAgIC1scHRocmVhZCAgICAgICBOIChjYykgT0sKK2RubCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWSAoZ2NjKQorZG5sCitkbmwgSVJJWCA2LjUgICAgICAgICAgIHBvc2l4ICAgICAgLWxwdGhyZWFkICAgICAgIFkgICAgICAwLjUKK2RubAorZG5sIEFJWCA0LjMsNS4xICAgICAgICBwb3NpeCAgICAgIC1scHRocmVhZCAgICAgICBOICAgICAgQUlYIDQ6IDAuNTsgQUlYIDU6IE9LCitkbmwKK2RubCBPU0YvMSA0LjAsNS4xICAgICAgcG9zaXggICAgICAtcHRocmVhZCAoY2MpICAgTiAgICAgIE9LCitkbmwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWxwdGhyZWFkIChnY2MpIFkKK2RubAorZG5sIEN5Z3dpbiAgICAgICAgICAgICBwb3NpeCAgICAgIC1scHRocmVhZCAgICAgICBZICAgICAgT0sKK2RubAorZG5sIEFueSBvZiB0aGUgYWJvdmUgICBwdGggICAgICAgIC1scHRoICAgICAgICAgICAgICAgICAgMC4wCitkbmwKK2RubCBNaW5ndyAgICAgICAgICAgICAgd2luZG93cyAgICAgICAgICAgICAgICAgICAgTiAgICAgIE9LCitkbmwKK2RubCBCZU9TIDUgICAgICAgICAgICAgLS0KK2RubAorZG5sIFRoZSB0ZXN0LWxvY2sgcmVzdWx0IHNob3dzIHdoYXQgaGFwcGVucyBpZiBpbiB0ZXN0LWxvY2suYyBFWFBMSUNJVF9ZSUVMRCBpcworZG5sIHR1cm5lZCBvZmY6CitkbmwgICBPSyBpZiBhbGwgdGhyZWUgdGVzdHMgdGVybWluYXRlIE9LLAorZG5sICAgMC41IGlmIHRoZSBmaXJzdCB0ZXN0IHRlcm1pbmF0ZXMgT0sgYnV0IHRoZSBzZWNvbmQgb25lIGxvb3BzIGVuZGxlc3NseSwKK2RubCAgIDAuMCBpZiB0aGUgZmlyc3QgdGVzdCBhbHJlYWR5IGxvb3BzIGVuZGxlc3NseS4KKworIyB1aW50bWF4X3QubTQgc2VyaWFsIDEyCitkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDQsIDIwMDctMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBQYXVsIEVnZ2VydC4KKworQUNfUFJFUkVRKFsyLjEzXSkKKworIyBEZWZpbmUgdWludG1heF90IHRvICd1bnNpZ25lZCBsb25nJyBvciAndW5zaWduZWQgbG9uZyBsb25nJworIyBpZiBpdCBpcyBub3QgYWxyZWFkeSBkZWZpbmVkIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+LgorCitBQ19ERUZVTihbZ2xfQUNfVFlQRV9VSU5UTUFYX1RdLAorWworICBBQ19SRVFVSVJFKFtnbF9BQ19IRUFERVJfSU5UVFlQRVNfSF0pCisgIEFDX1JFUVVJUkUoW2dsX0FDX0hFQURFUl9TVERJTlRfSF0pCisgIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oID0gbm8gJiYgdGVzdCAkZ2xfY3ZfaGVhZGVyX3N0ZGludF9oID0gbm87IHRoZW4KKyAgICBBQ19SRVFVSVJFKFtBQ19UWVBFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlRdKQorICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nX2ludCA9IHllcyBcCisgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKKyAgICAgIHx8IGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcnCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKFt1aW50bWF4X3RdLCBbJGFjX3R5cGVdLAorICAgICAgW0RlZmluZSB0byB1bnNpZ25lZCBsb25nIG9yIHVuc2lnbmVkIGxvbmcgbG9uZworICAgICAgIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPiBkb24ndCBkZWZpbmUuXSkKKyAgZWxzZQorICAgIEFDX0RFRklORShbSEFWRV9VSU5UTUFYX1RdLCBbMV0sCisgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAndWludG1heF90JyB0eXBlIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+Ll0pCisgIGZpCitdKQorCisjIHZpc2liaWxpdHkubTQgc2VyaWFsIDUgKGdldHRleHQtMC4xOC4yKQorZG5sIENvcHlyaWdodCAoQykgMjAwNSwgMjAwOCwgMjAxMC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworZG5sIFRlc3RzIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uCitkbmwgLWZ2aXNpYmlsaXR5PWhpZGRlbiBhbmQgdGhlIGZ1bmN0aW9uIGFuZCB2YXJpYWJsZSBhdHRyaWJ1dGVzCitkbmwgX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImhpZGRlbiIpKSkgYW5kCitkbmwgX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpLgorZG5sIERvZXMgKm5vdCogdGVzdCBmb3IgX192aXNpYmlsaXR5X18oInByb3RlY3RlZCIpIC0gd2hpY2ggaGFzIHRyaWNreQorZG5sIHNlbWFudGljcyAoc2VlIHRoZSAndmlzbWFpbicgdGVzdCBpbiBnbGliYykgYW5kIGRvZXMgbm90IGV4aXN0IGUuZy4gb24KK2RubCBNYWMgT1MgWC4KK2RubCBEb2VzICpub3QqIHRlc3QgZm9yIF9fdmlzaWJpbGl0eV9fKCJpbnRlcm5hbCIpIC0gd2hpY2ggaGFzIHByb2Nlc3NvcgorZG5sIGRlcGVuZGVudCBzZW1hbnRpY3MuCitkbmwgRG9lcyAqbm90KiB0ZXN0IGZvciAjcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHB1c2goaGlkZGVuKSAtIHdoaWNoIGlzCitkbmwgInJlYWxseSBvbmx5IHJlY29tbWVuZGVkIGZvciBsZWdhY3kgY29kZSIuCitkbmwgU2V0IHRoZSB2YXJpYWJsZSBDRkxBR19WSVNJQklMSVRZLgorZG5sIERlZmluZXMgYW5kIHNldHMgdGhlIHZhcmlhYmxlIEhBVkVfVklTSUJJTElUWS4KKworQUNfREVGVU4oW2dsX1ZJU0lCSUxJVFldLAorWworICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKKyAgQ0ZMQUdfVklTSUJJTElUWT0KKyAgSEFWRV9WSVNJQklMSVRZPTAKKyAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICBkbmwgRmlyc3QsIGNoZWNrIHdoZXRoZXIgLVdlcnJvciBjYW4gYmUgYWRkZWQgdG8gdGhlIGNvbW1hbmQgbGluZSwgb3IKKyAgICBkbmwgd2hldGhlciBpdCBsZWFkcyB0byBhbiBlcnJvciBiZWNhdXNlIG9mIHNvbWUgb3RoZXIgb3B0aW9uIHRoYXQgdGhlCisgICAgZG5sIHVzZXIgaGFzIHB1dCBpbnRvICRDQyAkQ0ZMQUdTICRDUFBGTEFHUy4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIC1XZXJyb3Igb3B0aW9uIGlzIHVzYWJsZV0pCisgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9jY192aXNfd2Vycm9yXSwgWworICAgICAgZ2xfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKKyAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pXSwKKyAgICAgICAgW2dsX2N2X2NjX3Zpc193ZXJyb3I9eWVzXSwKKyAgICAgICAgW2dsX2N2X2NjX3Zpc193ZXJyb3I9bm9dKQorICAgICAgQ0ZMQUdTPSIkZ2xfc2F2ZV9DRkxBR1MiXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfY2NfdmlzX3dlcnJvcl0pCisgICAgZG5sIE5vdyBjaGVjayB3aGV0aGVyIHZpc2liaWxpdHkgZGVjbGFyYXRpb25zIGFyZSBzdXBwb3J0ZWQuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igc2ltcGxlIHZpc2liaWxpdHkgZGVjbGFyYXRpb25zXSkKKyAgICBBQ19DQUNIRV9WQUwoW2dsX2N2X2NjX3Zpc2liaWxpdHldLCBbCisgICAgICBnbF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgIENGTEFHUz0iJENGTEFHUyAtZnZpc2liaWxpdHk9aGlkZGVuIgorICAgICAgZG5sIFdlIHVzZSB0aGUgb3B0aW9uIC1XZXJyb3IgYW5kIGEgZnVuY3Rpb24gZHVtbXlmdW5jLCBiZWNhdXNlIG9uIHNvbWUKKyAgICAgIGRubCBwbGF0Zm9ybXMgKEN5Z3dpbiAxLjcpIHRoZSB1c2Ugb2YgLWZ2aXNpYmlsaXR5IHRyaWdnZXJzIGEgd2FybmluZworICAgICAgZG5sICJ2aXNpYmlsaXR5IGF0dHJpYnV0ZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29uZmlndXJhdGlvbjsgaWdub3JlZCIKKyAgICAgIGRubCBhdCB0aGUgZmlyc3QgZnVuY3Rpb24gZGVmaW5pdGlvbiBpbiBldmVyeSBjb21waWxhdGlvbiB1bml0LCBhbmQgd2UKKyAgICAgIGRubCBkb24ndCB3YW50IHRvIHVzZSB0aGUgb3B0aW9uIGluIHRoaXMgY2FzZS4KKyAgICAgIGlmIHRlc3QgJGdsX2N2X2NjX3Zpc193ZXJyb3IgPSB5ZXM7IHRoZW4KKyAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IiCisgICAgICBmaQorICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgIFtbZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJoaWRkZW4iKSkpIGludCBoaWRkZW52YXI7CisgICAgICAgICAgICAgZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJkZWZhdWx0IikpKSBpbnQgZXhwb3J0ZWR2YXI7CisgICAgICAgICAgICAgZXh0ZXJuIF9fYXR0cmlidXRlX18oKF9fdmlzaWJpbGl0eV9fKCJoaWRkZW4iKSkpIGludCBoaWRkZW5mdW5jICh2b2lkKTsKKyAgICAgICAgICAgICBleHRlcm4gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpIGludCBleHBvcnRlZGZ1bmMgKHZvaWQpOworICAgICAgICAgICAgIHZvaWQgZHVtbXlmdW5jICh2b2lkKSB7fQorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tdXSldLAorICAgICAgICBbZ2xfY3ZfY2NfdmlzaWJpbGl0eT15ZXNdLAorICAgICAgICBbZ2xfY3ZfY2NfdmlzaWJpbGl0eT1ub10pCisgICAgICBDRkxBR1M9IiRnbF9zYXZlX0NGTEFHUyJdKQorICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9jY192aXNpYmlsaXR5XSkKKyAgICBpZiB0ZXN0ICRnbF9jdl9jY192aXNpYmlsaXR5ID0geWVzOyB0aGVuCisgICAgICBDRkxBR19WSVNJQklMSVRZPSItZnZpc2liaWxpdHk9aGlkZGVuIgorICAgICAgSEFWRV9WSVNJQklMSVRZPTEKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbQ0ZMQUdfVklTSUJJTElUWV0pCisgIEFDX1NVQlNUKFtIQVZFX1ZJU0lCSUxJVFldKQorICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfVklTSUJJTElUWV0sIFskSEFWRV9WSVNJQklMSVRZXSwKKyAgICBbRGVmaW5lIHRvIDEgb3IgMCwgZGVwZW5kaW5nIHdoZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHNpbXBsZSB2aXNpYmlsaXR5IGRlY2xhcmF0aW9ucy5dKQorXSkKKworIyB3Y2hhcl90Lm00IHNlcmlhbCA0IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMywgMjAwOC0yMDEzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KK2RubCBUZXN0IHdoZXRoZXIgPHN0ZGRlZi5oPiBoYXMgdGhlICd3Y2hhcl90JyB0eXBlLgorZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQworCitBQ19ERUZVTihbZ3RfVFlQRV9XQ0hBUl9UXSwKK1sKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3Y2hhcl90XSwgW2d0X2N2X2Nfd2NoYXJfdF0sCisgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8c3RkZGVmLmg+CisgICAgICAgICAgICB3Y2hhcl90IGZvbyA9ICh3Y2hhcl90KSdcMCc7XV0sCisgICAgICAgICAgW1tdXSldLAorICAgICAgIFtndF9jdl9jX3djaGFyX3Q9eWVzXSwKKyAgICAgICBbZ3RfY3ZfY193Y2hhcl90PW5vXSldKQorICBpZiB0ZXN0ICRndF9jdl9jX3djaGFyX3QgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfV0NIQVJfVF0sIFsxXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3djaGFyX3QnIHR5cGUuXSkKKyAgZmkKK10pCisKKyMgd2ludF90Lm00IHNlcmlhbCA1IChnZXR0ZXh0LTAuMTguMikKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDctMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCitkbmwgVGVzdCB3aGV0aGVyIDx3Y2hhci5oPiBoYXMgdGhlICd3aW50X3QnIHR5cGUuCitkbmwgUHJlcmVxdWlzaXRlOiBBQ19QUk9HX0NDCisKK0FDX0RFRlVOKFtndF9UWVBFX1dJTlRfVF0sCitbCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igd2ludF90XSwgW2d0X2N2X2Nfd2ludF90XSwKKyAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICBbWworLyogVHJ1NjQgd2l0aCBEZXNrdG9wIFRvb2xraXQgQyBoYXMgYSBidWc6IDxzdGRpby5oPiBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZQorICAgPHdjaGFyLmg+LgorICAgQlNEL09TIDQuMC4xIGhhcyBhIGJ1ZzogPHN0ZGRlZi5oPiwgPHN0ZGlvLmg+IGFuZCA8dGltZS5oPiBtdXN0IGJlIGluY2x1ZGVkCisgICBiZWZvcmUgPHdjaGFyLmg+LiAgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx3Y2hhci5oPgorICAgICAgICAgICAgd2ludF90IGZvbyA9ICh3Y2hhcl90KSdcMCc7XV0sCisgICAgICAgICAgW1tdXSldLAorICAgICAgIFtndF9jdl9jX3dpbnRfdD15ZXNdLAorICAgICAgIFtndF9jdl9jX3dpbnRfdD1ub10pXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfY193aW50X3QgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoW0hBVkVfV0lOVF9UXSwgWzFdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnd2ludF90JyB0eXBlLl0pCisgIGZpCitdKQorCisjIHhzaXplLm00IHNlcmlhbCA1CitkbmwgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQsIDIwMDgtMjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitBQ19ERUZVTihbZ2xfWFNJWkVdLAorWworICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBsaWIveHNpemUuaC4KKyAgQUNfUkVRVUlSRShbZ2xfU0laRV9NQVhdKQorICBBQ19DSEVDS19IRUFERVJTKFtzdGRpbnQuaF0pCitdKQorCittNF9pbmNsdWRlKFthY2luY2x1ZGUubTRdKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbmZpZy9jb25maWcuZ3Vlc3MgYi9lMmZzcHJvZ3MvY29uZmlnL2NvbmZpZy5ndWVzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNGJkODI3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2NvbmZpZy9jb25maWcuZ3Vlc3MKQEAgLTAsMCArMSwxNDU2IEBACisjISAvYmluL3NoCisjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCisjICAgQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKwordGltZXN0YW1wPScyMDE2LTA1LTE1JworCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQKKyMgcHJvZ3JhbS4gIFRoaXMgRXhjZXB0aW9uIGlzIGFuIGFkZGl0aW9uYWwgcGVybWlzc2lvbiB1bmRlciBzZWN0aW9uIDcKKyMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDMgKCJHUEx2MyIpLgorIworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXI7IG1haW50YWluZWQgc2luY2UgMjAwMCBieSBCZW4gRWxsaXN0b24uCisjCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzCisjCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LgorCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dCisKK091dHB1dCB0aGUgY29uZmlndXJhdGlvbiBuYW1lIG9mIHRoZSBzeXN0ZW0gXGAkbWUnIGlzIHJ1biBvbi4KKworT3BlcmF0aW9uIG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQorCitPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCitDb3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUgdGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24gaXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNyZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBkZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZPUl9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9TVF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1wIGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAwIDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIkUkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2FzZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4gJGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAtbyAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9SX0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZPUl9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsKKwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JVSUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisKK2Nhc2UgIiR7VU5BTUVfU1lTVEVNfSIgaW4KK0xpbnV4fEdOVXxHTlUvKikKKwkjIElmIHRoZSBzeXN0ZW0gbGFja3MgYSBjb21waWxlciwgdGhlbiBqdXN0IHBpY2sgZ2xpYmMuCisJIyBXZSBjb3VsZCBwcm9iYWJseSB0cnkgaGFyZGVyLgorCUxJQkM9Z251CisKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJY2F0IDw8LUVPRiA+ICRkdW1teS5jCisJI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisJI2lmIGRlZmluZWQoX19VQ0xJQkNfXykKKwlMSUJDPXVjbGliYworCSNlbGlmIGRlZmluZWQoX19kaWV0bGliY19fKQorCUxJQkM9ZGlldGxpYmMKKwkjZWxzZQorCUxJQkM9Z251CisJI2VuZGlmCisJRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15MSUJDJyB8IHNlZCAncywgLCxnJ2AKKwk7OworZXNhYworCisjIE5vdGU6IG9yZGVyIGlzIHNpZ25pZmljYW50IC0gdGhlIGNhc2UgYnJhbmNoZXMgYXJlIG5vdCBleGNsdXNpdmUuCisKK2Nhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAgICAqOk5ldEJTRDoqOiopCisJIyBOZXRCU0QgKG5ic2QpIHRhcmdldHMgc2hvdWxkICh3aGVyZSBhcHBsaWNhYmxlKSBtYXRjaCBvbmUgb3IKKwkjIG1vcmUgb2YgdGhlIHR1cGxlczogKi0qLW5ldGJzZGVsZiosICotKi1uZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRhcmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3VsZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBib3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20gZm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBOZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3RsPSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKHVuYW1lIC1wIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBcCisJICAgIC91c3Ivc2Jpbi8kc3lzY3RsIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgZWNobyB1bmtub3duKWAKKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGFybWViKSBtYWNoaW5lPWFybWViLXVua25vd24gOzsKKwkgICAgYXJtKikgbWFjaGluZT1hcm0tdW5rbm93biA7OworCSAgICBzaDNlbCkgbWFjaGluZT1zaGwtdW5rbm93biA7OworCSAgICBzaDNlYikgbWFjaGluZT1zaC11bmtub3duIDs7CisJICAgIHNoNWVsKSBtYWNoaW5lPXNoNWxlLXVua25vd24gOzsKKwkgICAgZWFybXYqKQorCQlhcmNoPWBlY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfSB8IHNlZCAtZSAncyxeZVwoYXJtdlswLTldXCkuKiQsXDEsJ2AKKwkJZW5kaWFuPWBlY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfSB8IHNlZCAtbmUgJ3MsXi4qXChlYlwpJCxcMSxwJ2AKKwkJbWFjaGluZT0ke2FyY2h9JHtlbmRpYW59LXVua25vd24KKwkJOzsKKwkgICAgKikgbWFjaGluZT0ke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93biA7OworCWVzYWMKKwkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKKwkjIHRvIEVMRiByZWNlbnRseSAob3Igd2lsbCBpbiB0aGUgZnV0dXJlKSBhbmQgQUJJLgorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgZWFybSopCisJCW9zPW5ldGJzZGVsZgorCQk7OworCSAgICBhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJfCBncmVwIC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBSZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQorCQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJCW9zPW5ldGJzZAorCQk7OworCWVzYWMKKwkjIERldGVybWluZSBBQkkgdGFncy4KKwljYXNlICIke1VOQU1FX01BQ0hJTkVfQVJDSH0iIGluCisJICAgIGVhcm0qKQorCQlleHByPSdzL15lYXJtdlswLTldLy1lYWJpLztzL2ViJC8vJworCQlhYmk9YGVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9IHwgc2VkIC1lICIkZXhwciJgCisJCTs7CisJZXNhYworCSMgVGhlIE9TIHJlbGVhc2UKKwkjIERlYmlhbiBHTlUvTmV0QlNEIG1hY2hpbmVzIGhhdmUgYSBkaWZmZXJlbnQgdXNlcmxhbmQsIGFuZAorCSMgdGh1cywgbmVlZCBhIGRpc3RpbmN0IHRyaXBsZXQuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IG5lZWQKKwkjIGtlcm5lbCB2ZXJzaW9uIGluZm9ybWF0aW9uLCBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhCisJIyBzdWl0YWJsZSB0YWcsIGluIHRoZSBzdHlsZSBvZiBsaW51eC1nbnUuCisJY2FzZSAiJHtVTkFNRV9WRVJTSU9OfSIgaW4KKwkgICAgRGViaWFuKikKKwkJcmVsZWFzZT0nLWdudScKKwkJOzsKKwkgICAgKikKKwkJcmVsZWFzZT1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1stX10uKi8vJyB8IGN1dCAtZC4gLWYxLDJgCisJCTs7CisJZXNhYworCSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgorCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgorCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KKwllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSR7YWJpfSIKKwlleGl0IDs7CisgICAgKjpCaXRyaWc6KjoqKQorCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9CaXRyaWcuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tYml0cmlnJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk9wZW5CU0Q6KjoqKQorCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKKwllY2hvICR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6TGliZXJ0eUJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL14uKkJTRFwuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tbGliZXJ0eWJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNvbGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNvcnRpeDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc29ydGl4CisJZXhpdCA7OworICAgIGFscGhhOk9TRjE6KjoqKQorCWNhc2UgJFVOQU1FX1JFTEVBU0UgaW4KKwkqNC4wKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAorCQk7OworCSo1LiopCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCisJCTs7CisJZXNhYworCSMgQWNjb3JkaW5nIHRvIENvbXBhcSwgL3Vzci9zYmluL3BzcmluZm8gaGFzIGJlZW4gYXZhaWxhYmxlIG9uCisJIyBPU0YvMSBhbmQgVHJ1NjQgc3lzdGVtcyBwcm9kdWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKKwkjIGNvdmVycyBtb3N0IHN5c3RlbXMgcnVubmluZyB0b2RheS4gIFRoaXMgY29kZSBwaXBlcyB0aGUgQ1BVCisJIyB0eXBlcyB0aHJvdWdoIGhlYWQgLW4gMSwgc28gd2Ugb25seSBkZXRlY3QgdGhlIHR5cGUgb2YgQ1BVIDAuCisJQUxQSEFfQ1BVX1RZUEU9YC91c3Ivc2Jpbi9wc3JpbmZvIC12IHwgc2VkIC1uIC1lICdzL14gIFRoZSBhbHBoYSBcKC4qXCkgcHJvY2Vzc29yLiokL1wxL3AnIHwgaGVhZCAtbiAxYAorCWNhc2UgIiRBTFBIQV9DUFVfVFlQRSIgaW4KKwkgICAgIkVWNCAoMjEwNjQpIikKKwkJVU5BTUVfTUFDSElORT1hbHBoYSA7OworCSAgICAiRVY0LjUgKDIxMDY0KSIpCisJCVVOQU1FX01BQ0hJTkU9YWxwaGEgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVOQU1FX01BQ0hJTkU9YWxwaGEgOzsKKwkgICAgIkVWNSAoMjExNjQpIikKKwkJVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCSAgICAiRVY1LjYgKDIxMTY0QSkiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICAgICJFVjUuNyAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhcGNhNTcgOzsKKwkgICAgIkVWNiAoMjEyNjQpIikKKwkJVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgICAiRVY2LjhDQiAoMjEyNjRDKSIpCisJCVVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisJICAgICJFVjYuOEFMICgyMTI2NEIpIikKKwkJVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCSAgICAiRVY2LjlBICgyMTI2NC9FVjY5QSkiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhZXY2OSA7OworCSAgICAiRVY3ICgyMTM2NCkiKQorCQlVTkFNRV9NQUNISU5FPWFscGhhZXY3IDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9YWxwaGFldjc5IDs7CisJZXNhYworCSMgQSBQbi5uIHZlcnNpb24gaXMgYSBwYXRjaGVkIHZlcnNpb24uCisJIyBBIFZuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCisJIyBBIFRuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIGZpZWxkIHRlc3QgdmVyc2lvbi4KKwkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFzZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KKwkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyIEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YAorCSMgUmVzZXQgRVhJVCB0cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29kZS4KKwlleGl0Y29kZT0kPworCXRyYXAgJycgMAorCWV4aXQgJGV4aXRjb2RlIDs7CisgICAgQWxwaGFcICo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisJIyBvZiB0aGUgc3BlY2lmaWMgQWxwaGEgbW9kZWw/CisJZWNobyBhbHBoYS1wYy1pbnRlcml4CisJZXhpdCA7OworICAgIDIxMDY0OldpbmRvd3NfTlQ6NTA6MykKKwllY2hvIGFscGhhLWRlYy13aW5udDMuNQorCWV4aXQgOzsKKyAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKKwllY2hvIG02OGstdW5rbm93bi1zeXN2NAorCWV4aXQgOzsKKyAgICAqOltBYV1taWdhW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWFtaWdhb3MKKwlleGl0IDs7CisgICAgKjpbTW1db3JwaFtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1tb3JwaG9zCisJZXhpdCA7OworICAgICo6T1MvMzkwOio6KikKKwllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCisJZXhpdCA7OworICAgICo6ei9WTToqOiopCisJZWNobyBzMzkwLWlibS16dm1vZQorCWV4aXQgOzsKKyAgICAqOk9TNDAwOio6KikKKwllY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFybSo6cmlzY29zOio6Knxhcm0qOlJJU0NPUzoqOiopCisJZWNobyBhcm0tdW5rbm93bi1yaXNjb3MKKwlleGl0IDs7CisgICAgU1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKwllY2hvIGhwcGExLjEtaGl0YWNoaS1oaXV4bXBwCisJZXhpdCA7OworICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQorCSMgYWtlZUB3cGRpczAzLndwYWZiLmFmLm1pbCAoRWFybGUgRi4gQWtlKSBjb250cmlidXRlZCBNSVMgYW5kIE5JTEUuCisJaWYgdGVzdCAiYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAiID0gYXR0IDsgdGhlbgorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1zeXN2MworCWVsc2UKKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtYnNkCisJZmkKKwlleGl0IDs7CisgICAgTklMRSo6KjoqOmRjb3N4KQorCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN2cjQKKwlleGl0IDs7CisgICAgRFJTPzYwMDA6dW5peDo0LjA6NiopCisJZWNobyBzcGFyYy1pY2wtbng2CisJZXhpdCA7OworICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3KiB8IERSUz82MDAwOmlzaXM6NC4yKjo3KikKKwljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KKwkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OworCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40SDpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPWkzODYKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9IG5vX2NvbXBpbGVyX2ZvdW5kIF07IHRoZW4KKwkgICAgaWYgKGVjaG8gJyNpZmRlZiBfX2FtZDY0JzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJKENDT1BUUz0iIiAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPXg4Nl82NAorCSAgICBmaQorCWZpCisJZWNobyAke1NVTl9BUkNIfS1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo2KjoqKQorCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRoaXMgaXMgdGhlIHByb3BlciB3YXkgdG8gY2Fub25pY2FsaXplCisJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKwkjIGl0J3MgbGlrZWx5IHRvIGJlIG1vcmUgbGlrZSBTb2xhcmlzIHRoYW4gU3VuT1M0LgorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMzYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOio6KikKKwljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCisJICAgIFNlcmllcyp8UzQqKQorCQlVTkFNRV9SRUxFQVNFPWB1bmFtZSAtdmAKKwkJOzsKKwllc2FjCisJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgorCWVjaG8gc3BhcmMtc3VuLXN1bm9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fLydgCisJZXhpdCA7OworICAgIHN1bjMqOlN1bk9TOio6KikKKwllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzdW4qOio6NC4yQlNEOiopCisJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBzdWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKKwl0ZXN0ICJ4JHtVTkFNRV9SRUxFQVNFfSIgPSB4ICYmIFVOQU1FX1JFTEVBU0U9MworCWNhc2UgImAvYmluL2FyY2hgIiBpbgorCSAgICBzdW4zKQorCQllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCSAgICBzdW40KQorCQllY2hvIHNwYXJjLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwllc2FjCisJZXhpdCA7OworICAgIGF1c2hwOlN1bk9TOio6KikKKwllY2hvIHNwYXJjLWF1c3BleC1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgIyBUaGUgc2l0dWF0aW9uIGZvciBNaU5UIGlzIGEgbGl0dGxlIGNvbmZ1c2luZy4gIFRoZSBtYWNoaW5lIG5hbWUKKyAgICAjIGNhbiBiZSB2aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKKyAgICAjICJhdGFyaXN0IiBvciAiYXRhcmlzdGUiIGF0IGxlYXN0IHNob3VsZCBoYXZlIGEgcHJvY2Vzc29yCisgICAgIyA+IG02ODAwMCkuICBUaGUgc3lzdGVtIG5hbWUgcmFuZ2VzIGZyb20gIk1pTlQiIG92ZXIgIkZyZWVNaU5UIgorICAgICMgdG8gdGhlIGxvd2VyY2FzZSB2ZXJzaW9uICJtaW50IiAob3IgImZyZWVtaW50IikuICBGaW5hbGx5CisgICAgIyB0aGUgc3lzdGVtIG5hbWUgIlRPUyIgZGVub3RlcyBhIHN5c3RlbSB3aGljaCBpcyBhY3R1YWxseSBub3QKKyAgICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28gdGhpcyBzaG91bGQKKyAgICAjIGJlIG5vIHByb2JsZW0uCisgICAgYXRhcmlzdFtlXToqTWlOVDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGF0YXJpKjoqTWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKKwllY2hvIG02OGstbWlsYW4tbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQorCWVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOipNaU5UOio6KiB8ICo6Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKKwllY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtNjhrOm1hY2h0ZW46KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBwb3dlcnBjOm1hY2h0ZW46KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSSVNDKjpNYWNoOio6KikKKwllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4zCisJZXhpdCA7OworICAgIFJJU0MqOlVMVFJJWDoqOiopCisJZWNobyBtaXBzLWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFZBWCo6VUxUUklYKjoqOiopCisJZWNobyB2YXgtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgMjAyMDpDTElYOio6KiB8IDI0MzA6Q0xJWDoqOiopCisJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpSSVNDb3MpCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisjaWZkZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRpby5oPiAgLyogZm9yIHByaW50ZigpIHByb3RvdHlwZSAqLworCWludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CisjZWxzZQorCWludCBtYWluIChhcmdjLCBhcmd2KSBpbnQgYXJnYzsgY2hhciAqYXJndltdOyB7CisjZW5kaWYKKwkjaWYgZGVmaW5lZCAoaG9zdF9taXBzKSAmJiBkZWZpbmVkIChNSVBTRUIpCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1lTVikKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N5c3ZcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TVlI0KQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3ZyNFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX0JTRDQzKSB8fCBkZWZpbmVkKFNZU1RZUEVfQlNEKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzYnNkXG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2VuZGlmCisJICBleGl0ICgtMSk7CisJfQorRU9GCisJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYKKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9IiB8IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCisJICBTWVNURU1fTkFNRT1gJGR1bW15ICRkdW1teWFyZ2AgJiYKKwkgICAgeyBlY2hvICIkU1lTVEVNX05BTUUiOyBleGl0OyB9CisJZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLW1vdG9yb2xhLXBvd2VybWF4CisJZXhpdCA7OworICAgIE1vdG9yb2xhOio6NC4zOlBMOC0qKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azoqOio6UG93ZXJNQVhfT1MgfCBTeW5lcmd5OlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcnVuaXgKKwlleGl0IDs7CisgICAgbTg4azpDWC9VWDo3KjoqKQorCWVjaG8gbTg4ay1oYXJyaXMtY3h1eDcKKwlleGl0IDs7CisgICAgbTg4azoqOjQqOlI0KikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKKwlleGl0IDs7CisgICAgbTg4azoqOjMqOlIzKikKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgQVZpaU9OOmRndXg6KjoqKQorCSMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisJVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgorCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhlbgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hvIG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZXhpdCA7OworICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCisJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKKwlleGl0IDs7CisgICAgTTg4KjoqOlIzKjoqKQorCSMgRGVsdGEgODhrIHN5c3RlbSBydW5uaW5nIFNWUjMKKwllY2hvIG04OGstbW90b3JvbGEtc3lzdjMKKwlleGl0IDs7CisgICAgWEQ4OCo6KjoqOiopICMgVGVrdHJvbml4IFhEODggc3lzdGVtIHJ1bm5pbmcgVVRla1YgKFNWUjMpCisJZWNobyBtODhrLXRla3Ryb25peC1zeXN2MworCWV4aXQgOzsKKyAgICBUZWs0M1swLTldWzAtOV06VVRlazoqOiopICMgVGVrdHJvbml4IDQzMDAgc3lzdGVtIHJ1bm5pbmcgVVRlayAoQlNEKQorCWVjaG8gbTY4ay10ZWt0cm9uaXgtYnNkCisJZXhpdCA7OworICAgICo6SVJJWCo6KjoqKQorCWVjaG8gbWlwcy1zZ2ktaXJpeGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy9nJ2AKKwlleGl0IDs7CisgICAgPz8/Pz8/Pz86QUlYPzpbMTJdLjE6MikgICAjIEFJWCAyLjIuMSBvciBBSVggMi4xLjEgaXMgUlQvUEMgQUlYLgorCWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCisJZXhpdCA7OyAgICAgICAgICAgICAgICMgTm90ZSB0aGF0OiBlY2hvICInYHVuYW1lIC1zYCciIGdpdmVzICdBSVggJworICAgIGkqODY6QUlYOio6KikKKwllY2hvIGkzODYtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYTY0OkFJWDoqOiopCisJaWYgWyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2ZWxgCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1haXgke0lCTV9SRVZ9CisJZXhpdCA7OworICAgICo6QUlYOjI6MykKKwlpZiBncmVwIGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkJI2luY2x1ZGUgPHN5cy9zeXN0ZW1jZmcuaD4KKworCQltYWluKCkKKwkJCXsKKwkJCWlmICghX19wb3dlcl9wYygpKQorCQkJCWV4aXQoMSk7CisJCQlwdXRzKCJwb3dlcnBjLWlibS1haXgzLjIuNSIpOworCQkJZXhpdCgwKTsKKwkJCX0KK0VPRgorCQlpZiAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YAorCQl0aGVuCisJCQllY2hvICIkU1lTVEVNX05BTUUiCisJCWVsc2UKKwkJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQorCQlmaQorCWVsaWYgZ3JlcCBib3MzMjQgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNAorCWVsc2UKKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMgorCWZpCisJZXhpdCA7OworICAgICo6QUlYOio6WzQ1NjddKQorCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJQk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXggL3Vzci9iaW4vbHNscHAgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vbHNscHAgLUxxYyBib3MucnRlLmxpYmMgfAorCQkJICAgYXdrIC1GOiAneyBwcmludCAkMyB9JyB8IHNlZCBzL1swLTldKiQvMC9gCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZWNobyAke0lCTV9BUkNIfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOiopCisJZWNobyByczYwMDAtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYm1ydDo0LjRCU0Q6Knxyb21wLWlibTpCU0Q6KikKKwllY2hvIHJvbXAtaWJtLWJzZDQuNAorCWV4aXQgOzsKKyAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAgICAgICAgIyBjb3ZlcnMgUlQvUEMgQlNEIGFuZAorCWVjaG8gcm9tcC1pYm0tYnNkJHtVTkFNRV9SRUxFQVNFfSAgICMgNC4zIHdpdGggdW5hbWUgYWRkZWQgdG8KKwlleGl0IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcG9ydDogcm9tcC1pYm0gQlNEIDQuMworICAgICo6Qk9TWDoqOiopCisJZWNobyByczYwMDAtYnVsbC1ib3N4CisJZXhpdCA7OworICAgIERQWC8yPzAwOkIuTy5TLjoqOiopCisJZWNobyBtNjhrLWJ1bGwtc3lzdjMKKwlleGl0IDs7CisgICAgOTAwMC9bMzRdPz86NC4zYnNkOjEuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2QKKwlleGl0IDs7CisgICAgaHAzMDA6NC40QlNEOio6KiB8IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKKwllY2hvIG02OGstaHAtYnNkNC40CisJZXhpdCA7OworICAgIDkwMDAvWzM0Njc4XT8/OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICA5MDAwLzMxPyApICAgICAgICAgICAgSFBfQVJDSD1tNjgwMDAgOzsKKwkgICAgOTAwMC9bMzRdPz8gKSAgICAgICAgIEhQX0FSQ0g9bTY4ayA7OworCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkKKwkJaWYgWyAteCAvdXNyL2Jpbi9nZXRjb25mIF07IHRoZW4KKwkJICAgIHNjX2NwdV92ZXJzaW9uPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAorCQkgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KKwkJICAgICAgNTIzKSBIUF9BUkNIPWhwcGExLjAgOzsgIyBDUFVfUEFfUklTQzFfMAorCQkgICAgICA1MjgpIEhQX0FSQ0g9aHBwYTEuMSA7OyAjIENQVV9QQV9SSVNDMV8xCisJCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorCQkJY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisJCQkgIDMyKSBIUF9BUkNIPWhwcGEyLjBuIDs7CisJCQkgIDY0KSBIUF9BUkNIPWhwcGEyLjB3IDs7CisJCQkgICcnKSBIUF9BUkNIPWhwcGEyLjAgOzsgICAjIEhQLVVYIDEwLjIwCisJCQllc2FjIDs7CisJCSAgICBlc2FjCisJCWZpCisJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgorCQkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQkgICAgc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisKKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5jbHVkZSA8dW5pc3RkLmg+CisKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKworCQkgICAgc3dpdGNoIChjcHUpCisJCQl7CisJCQljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOworCQkJY2FzZSBDUFVfUEFfUklTQzJfMDoKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkJICAgIHN3aXRjaCAoYml0cykKKwkJCQl7CisJCQkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOworCQkJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKKwkJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJCQl9IGJyZWFrOworCQkjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLworCQkJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworCQkjZW5kaWYKKwkJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworCQkJfQorCQkgICAgZXhpdCAoMCk7CisJCX0KK0VPRgorCQkgICAgKENDT1BUUz0iIiAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSBocHBhMi4wdyBdCisJdGhlbgorCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisKKwkgICAgIyBocHBhMi4wdy1ocC1ocHV4KiBoYXMgYSA2NC1iaXQga2VybmVsIGFuZCBhIGNvbXBpbGVyIGdlbmVyYXRpbmcKKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhlIHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCisJICAgICMgZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4gIEdOVSBhbmQgSFAgdXNlIGRpZmZlcmVudCBub21lbmNsYXR1cmU6CisJICAgICMKKwkgICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGEyLjB3LWhwLWhwdXgxMS4yMworCSAgICAjICQgQ0NfRk9SX0JVSUxEPSJjYyArREEyLjB3IiAuL2NvbmZpZy5ndWVzcworCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKKworCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0iIiAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAgICB0aGVuCisJCUhQX0FSQ0g9aHBwYTIuMHcKKwkgICAgZWxzZQorCQlIUF9BUkNIPWhwcGE2NAorCSAgICBmaQorCWZpCisJZWNobyAke0hQX0FSQ0h9LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICBpYTY0OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwllY2hvIGlhNjQtaHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7OworICAgIDMwNTAqOkhJLVVYOio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8dW5pc3RkLmg+CisJaW50CisJbWFpbiAoKQorCXsKKwkgIGxvbmcgY3B1ID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKwkgIC8qIFRoZSBvcmRlciBtYXR0ZXJzLCBiZWNhdXNlIENQVV9JU19IUF9NQzY4SyBlcnJvbmVvdXNseSByZXR1cm5zCisJICAgICB0cnVlIGZvciBDUFVfUEFfUklTQzFfMC4gIENQVV9JU19QQV9SSVNDIHJldHVybnMgY29ycmVjdAorCSAgICAgcmVzdWx0cywgaG93ZXZlci4gICovCisJICBpZiAoQ1BVX0lTX1BBX1JJU0MgKGNwdSkpCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKGNwdSkKKwkJeworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzJfMDogcHV0cyAoImhwcGEyLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGRlZmF1bHQ6IHB1dHMgKCJocHBhLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJfQorCSAgICB9CisJICBlbHNlIGlmIChDUFVfSVNfSFBfTUM2OEsgKGNwdSkpCisJICAgIHB1dHMgKCJtNjhrLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZWxzZSBwdXRzICgidW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGV4aXQgKDApOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gdW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKKwlleGl0IDs7CisgICAgOTAwMC83Pz86NC4zYnNkOio6KiB8IDkwMDAvOD9bNzldOjQuM2JzZDoqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1ic2QKKwlleGl0IDs7CisgICAgOTAwMC84Pz86NC4zYnNkOio6KikKKwllY2hvIGhwcGExLjAtaHAtYnNkCisJZXhpdCA7OworICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKwllY2hvIGhwcGExLjAtaHAtbXBlaXgKKwlleGl0IDs7CisgICAgaHA3Pz86T1NGMToqOiogfCBocDg/Wzc5XTpPU0YxOio6KiApCisJZWNobyBocHBhMS4xLWhwLW9zZgorCWV4aXQgOzsKKyAgICBocDg/PzpPU0YxOio6KikKKwllY2hvIGhwcGExLjAtaHAtb3NmCisJZXhpdCA7OworICAgIGkqODY6T1NGMToqOiopCisJaWYgWyAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiBdIDsgdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxbWsKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjEKKwlmaQorCWV4aXQgOzsKKyAgICBwYXJpc2MqOkxpdGVzKjoqOiopCisJZWNobyBocHBhMS4xLWhwLWxpdGVzCisJZXhpdCA7OworICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCisJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisJZWNobyBjMzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDUkFZKlktTVA6KjoqOiopCisJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUM0U6KjoqOiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21rJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8gc3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikKKwllY2hvIGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQorCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emAKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKwlGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorCWV4aXQgOzsKKyAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgc3BhcmMqOkJTRC9PUzoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6QlNEL09TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkZyZWVCU0Q6KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJY2FzZSAke1VOQU1FX1BST0NFU1NPUn0gaW4KKwkgICAgYW1kNjQpCisJCWVjaG8geDg2XzY0LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkgICAgKikKKwkJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tdW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYCA7OworCWVzYWMKKwlleGl0IDs7CisgICAgaSo6Q1lHV0lOKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1jeWd3aW4KKwlleGl0IDs7CisgICAgKjpNSU5HVzY0KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzY0CisJZXhpdCA7OworICAgICo6TUlOR1cqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKwlleGl0IDs7CisgICAgKjpNU1lTKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc3lzCisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKwkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOlBXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCisJZXhpdCA7OworICAgICo6SW50ZXJpeCo6KikKKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdXSU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdOVToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxzZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi0ke0xJQkN9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MsLy4qJCwsJ2AKKwlleGl0IDs7CisgICAgKjpHTlUvKjoqOiopCisJIyBvdGhlciBzeXN0ZW1zIHdpdGggR05VIGxpYmMgYW5kIHVzZXJsYW5kCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFNRV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAiWzp1cHBlcjpdIiAiWzpsb3dlcjpdImBgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLSR7TElCQ30KKwlleGl0IDs7CisgICAgaSo4NjpNaW5peDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CisJZXhpdCA7OworICAgIGFhcmNoNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgYWFyY2g2NF9iZTpMaW51eDoqOiopCisJVU5BTUVfTUFDSElORT1hYXJjaDY0X2JlCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBhbHBoYTpMaW51eDoqOiopCisJY2FzZSBgc2VkIC1uICcvXmNwdSBtb2RlbC9zL14uKjogXCguKlwpL1wxL3AnIDwgL3Byb2MvY3B1aW5mb2AgaW4KKwkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhhZXY1IDs7CisJICBFVjU2KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKKwkgIFBDQTU2KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIFBDQTU3KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKKwkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2IDs7CisJICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKKwkgIEVWNjgqKSBVTkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OworCWVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPWdudWxpYmMxIDsgZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGFyYzpMaW51eDoqOiogfCBhcmNlYjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZWxzZQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ31lYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfWVhYmloZgorCSAgICBmaQorCWZpCisJZXhpdCA7OworICAgIGF2cjMyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tYXhpcy1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgZTJrOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGZydjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBoZXhhZ29uOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGkqODY6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIGlhNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgazFvbTpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBtMzJyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIG1pcHM6TGludXg6KjoqIHwgbWlwczY0OkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjdW5kZWYgQ1BVCisJI3VuZGVmICR7VU5BTUVfTUFDSElORX0KKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfWVsCisJI2lmIGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX01JUFNFTCkgfHwgZGVmaW5lZChfTUlQU0VMKSB8fCBkZWZpbmVkKE1JUFNFTCkKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCisJI2Vsc2UKKwkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9CisJI2Vsc2UKKwlDUFU9CisJI2VuZGlmCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkNQVSdgCisJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LSR7TElCQ30iOyBleGl0OyB9CisJOzsKKyAgICBvcGVucmlzYyo6TGludXg6KjoqKQorCWVjaG8gb3Ixay11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgb3IzMjpMaW51eDoqOiogfCBvcjFrKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBwYWRyZTpMaW51eDoqOiopCisJZWNobyBzcGFyYy11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKKwllY2hvIGhwcGE2NC11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVsCisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKKwkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKKwkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHBwYzY0bGU6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHBwY2xlOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGNsZS11bmtub3duLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBzcGFyYzpMaW51eDoqOiogfCBzcGFyYzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHZheDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC0ke0xJQkN9CisJZXhpdCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30KKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQorCWV4aXQgOzsKKyAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQorCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCisJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aAorCSMgc3lzbmFtZSBhbmQgbm9kZW5hbWUuCisJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKKwkjIFVuaXh3YXJlIGlzIGFuIG9mZnNob290IG9mIFNWUjQsIGJ1dCBpdCBoYXMgaXRzIG93biB2ZXJzaW9uCisJIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorCSMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKKwkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisJIyBVc2Ugc3lzdjQuMnV3Li4uIHNvIHRoYXQgc3lzdjQqIG1hdGNoZXMgaXQuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5BTUVfVkVSU0lPTn0KKwlleGl0IDs7CisgICAgaSo4NjpPUy8yOio6KikKKwkjIElmIHdlIHdlcmUgYWJsZSB0byBmaW5kIGB1bmFtZScsIHRoZW4gRU1YIFVuaXggY29tcGF0aWJpbGl0eQorCSMgaXMgcHJvYmFibHkgaW5zdGFsbGVkLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1vczItZW14CisJZXhpdCA7OworICAgIGkqODY6WFRTLTMwMDoqOlNUT1ApCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3RvcAorCWV4aXQgOzsKKyAgICBpKjg2OmF0aGVvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYXRoZW9zCisJZXhpdCA7OworICAgIGkqODY6c3lsbGFibGU6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeWxsYWJsZQorCWV4aXQgOzsKKyAgICBpKjg2Okx5bnhPUzoyLio6KiB8IGkqODY6THlueE9TOjMuWzAxXSo6KiB8IGkqODY6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIGkzODYtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGkqODY6KkRPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CisgICAgaSo4NjoqOjQuKjoqIHwgaSo4NjpTWVNURU1fVjo0Lio6KikKKwlVTkFNRV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAncy9cL01QJC8vJ2AKKwlpZiBncmVwIE5vdmVsbCAvdXNyL2luY2x1ZGUvbGluay5oID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVuaXZlbC1zeXN2JHtVTkFNRV9SRUx9CisJZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdiR7VU5BTUVfUkVMfQorCWZpCisJZXhpdCA7OworICAgIGkqODY6Kjo1Ols2NzhdKikKKwkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KKwljYXNlIGAvYmluL3VuYW1lIC1YIHwgZ3JlcCAiXk1hY2hpbmUiYCBpbgorCSAgICAqNDg2KikJICAgICBVTkFNRV9NQUNISU5FPWk0ODYgOzsKKwkgICAgKlBlbnRpdW0pCSAgICAgVU5BTUVfTUFDSElORT1pNTg2IDs7CisJICAgICpQZW50KnwqQ2VsZXJvbikgVU5BTUVfTUFDSElORT1pNjg2IDs7CisJZXNhYworCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Oio6My4yOiopCisJaWYgdGVzdCAtZiAvdXNyL29wdGlvbnMvY2IubmFtZTsgdGhlbgorCQlVTkFNRV9SRUw9YHNlZCAtbiAncy8uKlZlcnNpb24gLy9wJyA8L3Vzci9vcHRpb25zL2NiLm5hbWVgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1pc2MkVU5BTUVfUkVMCisJZWxpZiAvYmluL3VuYW1lIC1YIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX1JFTD1gKC9iaW4vdW5hbWUgLVh8Z3JlcCBSZWxlYXNlfHNlZCAtZSAncy8uKj0gLy8nKWAKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCBpODA0ODYgPi9kZXYvbnVsbCkgJiYgVU5BTUVfTUFDSElORT1pNDg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk1ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnQgKklJJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0gUHJvJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNjbyRVTkFNRV9SRUwKKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2MzIKKwlmaQorCWV4aXQgOzsKKyAgICBwYzoqOio6KikKKwkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKKwkjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAorCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCisJIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBzYW1lIGFzIHdoYXQgY29uZmlnLnN1YgorCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cmUgd2lsbCBkZWNpZGUgdGhhdAorCSMgdGhpcyBpcyBhIGNyb3NzLWJ1aWxkLgorCWVjaG8gaTU4Ni1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIEludGVsOk1hY2g6Myo6KikKKwllY2hvIGkzODYtcGMtbWFjaDMKKwlleGl0IDs7CisgICAgcGFyYWdvbjoqOio6KikKKwllY2hvIGk4NjAtaW50ZWwtb3NmMQorCWV4aXQgOzsKKyAgICBpODYwOio6NC4qOiopICMgaTg2MC1TVlI0CisJaWYgZ3JlcCBTdGFyZGVudCAvdXNyL2luY2x1ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwkgIGVjaG8gaTg2MC1zdGFyZGVudC1zeXN2JHtVTkFNRV9SRUxFQVNFfSAjIFN0YXJkZW50IFZpc3RyYSBpODYwLVNWUjQKKwllbHNlICMgQWRkIG90aGVyIGk4NjAtU1ZSNCB2ZW5kb3JzIGJlbG93IGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuCisJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSAgIyBVbmtub3duIGk4NjAtU1ZSNAorCWZpCisJZXhpdCA7OworICAgIG1pbmkqOkNUSVg6U1lTKjU6KikKKwkjICJtaW5pZnJhbWUiCisJZWNobyBtNjgwMTAtY29udmVyZ2VudC1zeXN2CisJZXhpdCA7OworICAgIG1jNjhrOlVOSVg6U1lTVEVNNTozLjUxbSkKKwllY2hvIG02OGstY29udmVyZ2VudC1zeXN2CisJZXhpdCA7OworICAgIE02ODA/MDpELU5JWDo1LjM6KikKKwllY2hvIG02OGstZGlhYi1kbml4CisJZXhpdCA7OworICAgIE02OCo6KjpSM1ZbNTY3OF0qOiopCisJdGVzdCAtciAvc3lzVjY4ICYmIHsgZWNobyAnbTY4ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OworICAgIDNbMzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjAgfCBTNzUwMSo6Kjo0LjA6My4wKQorCU9TX1JFTD0nJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSYmIE9TX1JFTD0uYHNlZCAtbiAncy9bXiBdKiBbXiBdKiBcKFswLTldWzAtOV1cKS4qL1wxL3AnIDwgL2V0Yy8ucmVsaWRgCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKKyAgICAzWzM0XT8/Oio6NC4wOiogfCAzWzM0XT8/LCo6Kjo0LjA6KikKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7OworICAgIE5DUio6Kjo0LjI6KiB8IE1QUkFTKjoqOjQuMjoqKQorCU9TX1JFTD0nLjMnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJICAgICYmIE9TX1JFTD0uYHNlZCAtbiAncy9bXiBdKiBbXiBdKiBcKFswLTldWzAtOV1cKS4qL1wxL3AnIDwgL2V0Yy8ucmVsaWRgCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBwdGVyb24gPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgbTY4KjpMeW54T1M6Mi4qOiogfCBtNjgqOkx5bnhPUzozLjAqOiopCisJZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisJZWNobyBtNjhrLWF0YXJpLXN5c3Y0CisJZXhpdCA7OworICAgIFRTVU5BTUk6THlueE9TOjIuKjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCisJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU01bQkVdUzpVTklYX1NWOio6KikKKwllY2hvIG1pcHMtZGRlLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFJNKjpSZWxpYW50VU5JWC0qOio6KikKKwllY2hvIG1pcHMtc25pLXN5c3Y0CisJZXhpdCA7OworICAgIFJNKjpTSU5JWC0qOio6KikKKwllY2hvIG1pcHMtc25pLXN5c3Y0CisJZXhpdCA7OworICAgICo6U0lOSVgtKjoqOiopCisJaWYgdW5hbWUgLXAgMj4vZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXNuaS1zeXN2NAorCWVsc2UKKwkJZWNobyBuczMyay1zbmktc3lzdgorCWZpCisJZXhpdCA7OworICAgIFBFTlRJVU06Kjo0LjAqOiopCSMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisJCQkjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+CisJZWNobyBpNTg2LXVuaXN5cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKKwkjIEZyb20gR2VyYWxkIEhld2VzIDxoZXdlc0BvcGVubWFya2V0LmNvbT4uCisJIyBIb3cgYWJvdXQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gc3RyYXR1cyBhcmNoaXRlY3R1cmVzPyAtZGptCisJZWNobyBocHBhMS4xLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgKjoqOio6RlRYKikKKwkjIEZyb20gc2VhbmZAc3dkYy5zdHJhdHVzLmNvbS4KKwllY2hvIGk4NjAtc3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICBpKjg2OlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXN0cmF0dXMtdm9zCisJZXhpdCA7OworICAgICo6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvIGhwcGExLjEtc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgbWM2OCo6QS9VWDoqOiopCisJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQorCWVjaG8gbWlwcy1zb255LW5ld3NvczYKKwlleGl0IDs7CisgICAgUlszNF0wMDA6KlN5c3RlbV9WKjoqOiogfCBSNDAwMDpVTklYX1NZU1Y6KjoqIHwgUiowMDA6VU5JWF9TVjoqOiopCisJaWYgWyAtZCAvdXNyL25lYyBdOyB0aGVuCisJCWVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwllbHNlCisJCWVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZmkKKwlleGl0IDs7CisgICAgQmVCb3g6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIGhhcmR3YXJlIG1hZGUgYnkgQmUsIFBQQyBvbmx5LgorCWVjaG8gcG93ZXJwYy1iZS1iZW9zCisJZXhpdCA7OworICAgIEJlTWFjOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBNYWMgb3IgTWFjIGNsb25lLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYXBwbGUtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBJbnRlbCBQQyBjb21wYXRpYmxlLgorCWVjaG8gaTU4Ni1wYy1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6SGFpa3U6KjoqKQkjIEhhaWt1IHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtaGFpa3UKKwlleGl0IDs7CisgICAgeDg2XzY0OkhhaWt1Oio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWhhaWt1CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtQUNFOlNVUEVSLVVYOio6KikKKwllY2hvIHN4YWNlLW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlcio6UmhhcHNvZHk6KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpSaGFwc29keToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkRhcndpbjoqOiopCisJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09SPXVua25vd24KKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSB1bmtub3duIDsgdGhlbgorCSAgICBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYworCWZpCisJaWYgdGVzdCBgZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1wuLiovLydgIC1sZSAxMCA7IHRoZW4KKwkgICAgaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gbm9fY29tcGlsZXJfZm91bmQgXTsgdGhlbgorCQlpZiAoZWNobyAnI2lmZGVmIF9fTFA2NF9fJzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJICAgIChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCXRoZW4KKwkJICAgIGNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCQkJaTM4NikgVU5BTUVfUFJPQ0VTU09SPXg4Nl82NCA7OworCQkJcG93ZXJwYykgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGM2NCA7OworCQkgICAgZXNhYworCQlmaQorCSAgICBmaQorCWVsaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSBpMzg2IDsgdGhlbgorCSAgICAjIEF2b2lkIGV4ZWN1dGluZyBjYyBvbiBPUyBYIDEwLjksIGFzIGl0IHNoaXBzIHdpdGggYSBzdHViCisJICAgICMgdGhhdCBwdXRzIHVwIGEgZ3JhcGhpY2FsIGFsZXJ0IHByb21wdGluZyB0byBpbnN0YWxsCisJICAgICMgZGV2ZWxvcGVyIHRvb2xzLiAgQW55IHN5c3RlbSBydW5uaW5nIE1hYyBPUyBYIDEwLjcgb3IKKwkgICAgIyBsYXRlciAoRGFyd2luIDExIGFuZCBsYXRlcikgaXMgcmVxdWlyZWQgdG8gaGF2ZSBhIDY0LWJpdAorCSAgICAjIHByb2Nlc3Nvci4gVGhpcyBpcyBub3QgdHJ1ZSBvZiB0aGUgQVJNIHZlcnNpb24gb2YgRGFyd2luCisJICAgICMgdGhhdCBBcHBsZSB1c2VzIGluIHBvcnRhYmxlIGRldmljZXMuCisJICAgIFVOQU1FX1BST0NFU1NPUj14ODZfNjQKKwlmaQorCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LWFwcGxlLWRhcndpbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCisJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAKKwlpZiB0ZXN0ICIkVU5BTUVfUFJPQ0VTU09SIiA9IHg4NjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2LXBjLXFueAorCWV4aXQgOzsKKyAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuZW8tdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNFLSo6Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNlLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zci10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk5vblN0b3AtVVg6KjoqKQorCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CisJZXhpdCA7OworICAgIEJTMjAwMDpQT1NJWCo6KjoqKQorCWVjaG8gYnMyMDAwLXNpZW1lbnMtc3lzdgorCWV4aXQgOzsKKyAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS0ke1VOQU1FX1NZU1RFTX0tJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlBsYW45Oio6KikKKwkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVzZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKKwkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgorCSMgb3BlcmF0aW5nIHN5c3RlbXMuCisJaWYgdGVzdCAiJGNwdXR5cGUiID0gMzg2OyB0aGVuCisJICAgIFVOQU1FX01BQ0hJTkU9aTM4NgorCWVsc2UKKwkgICAgVU5BTUVfTUFDSElORT0iJGNwdXR5cGUiCisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1wbGFuOQorCWV4aXQgOzsKKyAgICAqOlRPUFMtMTA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMTAKKwlleGl0IDs7CisgICAgKjpURU5FWDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRlbmV4CisJZXhpdCA7OworICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC1kZWMtdG9wczIwCisJZXhpdCA7OworICAgIFhLTC0xOlRPUFMtMjA6KjoqIHwgVFlQRTU6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC14a2wtdG9wczIwCisJZXhpdCA7OworICAgICo6VE9QUy0yMDoqOiopCisJZWNobyBwZHAxMC11bmtub3duLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOklUUzoqOiopCisJZWNobyBwZHAxMC11bmtub3duLWl0cworCWV4aXQgOzsKKyAgICBTRUk6KjoqOlNFSVVYKQorCWVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RHJhZ29uRmx5Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1kcmFnb25mbHlgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCisJZXhpdCA7OworICAgICo6KlZNUzoqOiopCisJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1kZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkzODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gLiokLy8nYAorCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CisgICAgeDg2XzY0OlZNa2VybmVsOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1lc3gKKwlleGl0IDs7CisgICAgYW1kNjQ6SXNpbG9uXCBPbmVGUzoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1vbmVmcworCWV4aXQgOzsKK2VzYWMKKworY2F0ID4mMiA8PEVPRgorJDA6IHVuYWJsZSB0byBndWVzcyBzeXN0ZW0gdHlwZQorCitUaGlzIHNjcmlwdCAodmVyc2lvbiAkdGltZXN0YW1wKSwgaGFzIGZhaWxlZCB0byByZWNvZ25pemUgdGhlCitvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIElmIHlvdXIgc2NyaXB0IGlzIG9sZCwgb3ZlcndyaXRlCitjb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb25zIGZyb206CisKKyAgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcworYW5kCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViCisKK0lmICQwIGhhcyBhbHJlYWR5IGJlZW4gdXBkYXRlZCwgc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueQoraW5mb3JtYXRpb24geW91IHRoaW5rIG1pZ2h0IGJlIHBlcnRpbmVudCB0byBjb25maWctcGF0Y2hlc0BnbnUub3JnIHRvCitwcm92aWRlIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gaGFuZGxlIHlvdXIgc3lzdGVtLgorCitjb25maWcuZ3Vlc3MgdGltZXN0YW1wID0gJHRpbWVzdGFtcAorCit1bmFtZSAtbSA9IGAodW5hbWUgLW0pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1yID0gYCh1bmFtZSAtcikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXMgPSBgKHVuYW1lIC1zKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtdiA9IGAodW5hbWUgLXYpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKworL3Vzci9iaW4vdW5hbWUgLXAgPSBgKC91c3IvYmluL3VuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKy9iaW4vdW5hbWUgLVggICAgID0gYCgvYmluL3VuYW1lIC1YKSAyPi9kZXYvbnVsbGAKKworaG9zdGluZm8gICAgICAgICAgICAgICA9IGAoaG9zdGluZm8pIDI+L2Rldi9udWxsYAorL2Jpbi91bml2ZXJzZSAgICAgICAgICA9IGAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9hcmNoIC1rICAgICAgID0gYCgvdXNyL2Jpbi9hcmNoIC1rKSAyPi9kZXYvbnVsbGAKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGxgCisvdXNyL2Jpbi9vc2xldmVsICAgICAgID0gYCgvdXNyL2Jpbi9vc2xldmVsKSAyPi9kZXYvbnVsbGAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsYAorCitVTkFNRV9NQUNISU5FID0gJHtVTkFNRV9NQUNISU5FfQorVU5BTUVfUkVMRUFTRSA9ICR7VU5BTUVfUkVMRUFTRX0KK1VOQU1FX1NZU1RFTSAgPSAke1VOQU1FX1NZU1RFTX0KK1VOQU1FX1ZFUlNJT04gPSAke1VOQU1FX1ZFUlNJT059CitFT0YKKworZXhpdCAxCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9jb25maWcvY29uZmlnLnJwYXRoIGIvZTJmc3Byb2dzL2NvbmZpZy9jb25maWcucnBhdGgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjYyNTYyMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb25maWcvY29uZmlnLnJwYXRoCkBAIC0wLDAgKzEsNjg0IEBACisjISAvYmluL3NoCisjIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQorIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCisjCisjICAgQ29weXJpZ2h0IDE5OTYtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCisjICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKyMKKyMgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyAgIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyAgIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisjIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCisjIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KKyMKKyMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgorCisjIEtub3duIGxpbWl0YXRpb25zOgorIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKKyMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5CisjICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAorIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhICcuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKK3NocmV4dD0uc28KKworaG9zdD0iJDEiCitob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKK2hvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAoraG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DQ19CQVNFTkFNRS4KKworZm9yIGNjX3RlbXAgaW4gJENDIiI7IGRvCisgIGNhc2UgJGNjX3RlbXAgaW4KKyAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKKyAgICBcLSopIDs7CisgICAgKikgYnJlYWs7OworICBlc2FjCitkb25lCitjY19iYXNlbmFtZT1gZWNobyAiJGNjX3RlbXAiIHwgc2VkIC1lICdzJV4uKi8lJSdgCisKKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ09NUElMRVJfUElDLgorCit3bD0KK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIHdsPSctV2wsJworZWxzZQorICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCisgICAgICA7OworICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZWNjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBpY2MqIHwgaWZvcnQqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGxmOTUqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIG5hZ2ZvciopCisgICAgICAgICAgd2w9Jy1XbCwtV2wsLCcKKyAgICAgICAgICA7OworICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY2NjKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgY29tbykKKyAgICAgICAgICB3bD0nLWxvcHQ9JworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisgICAgICAgICAgICAqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCisgICAgICAgICAgICAgIHdsPQorICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKlN1blwgQyopCisgICAgICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBuZXdzb3M2KQorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgcmRvcyopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorICAgICAgICAgIHdsPSctUW9wdGlvbiBsZCAnCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKKyAgICAgIDs7CisgICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICB1bmljb3MqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgOzsKKyAgZXNhYworZmkKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9MSU5LRVJfU0hMSUJTLgorCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQoraGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KK2hhcmRjb2RlX2RpcmVjdD1ubworaGFyZGNvZGVfbWludXNfTD1ubworCitjYXNlICIkaG9zdF9vcyIgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKKyAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICB3aXRoX2dudV9sZD1ubworICAgIGZpCisgICAgOzsKKyAgaW50ZXJpeCopCisgICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKKyAgICB3aXRoX2dudV9sZD15ZXMKKyAgICA7OworICBvcGVuYnNkKikKKyAgICB3aXRoX2dudV9sZD1ubworICAgIDs7Citlc2FjCisKK2xkX3NobGlicz15ZXMKK2lmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKKyAgIyBhcmUgcmVzZXQgbGF0ZXIgaWYgc2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZC4gUHV0dGluZyB0aGVtCisgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KKyAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKKyAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgorICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeFszLTldKikKKyAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgIDs7CisgICAgaW50ZXJpeFszLTldKikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgIDs7CisgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICAgIG5ldGJzZCopCisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKKyAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjFbMC01XS4qKQorICAgICAgICAgIGxkX3NobGlicz1ubworICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICAgICAgZmkKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICAqKQorICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgZXNhYworICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IG5vOyB0aGVuCisgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAgZmkKK2Vsc2UKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4MyopCisgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQorICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICBmaQorICAgICAgOzsKKyAgICBhaXhbNC05XSopCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgorICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICBlbHNlCisgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKyAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCisgICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQorICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCisgICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisgICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgorICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQorICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKyAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCisgICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCisgICAgICAgICAgdGhlbgorICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCisgICAgICAgICAgICA6CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCisgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KKyAgICAgICAgICBmaQorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCisgICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAorICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgCisgICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCisgICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KK30nYAorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAorICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KKyAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgZWxzZQorICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICBlbHNlCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICA7OworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICBwb3dlcnBjKQorICAgICAgICAgIDs7CisgICAgICAgIG02OGspCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgYnNkaVs0NV0qKQorICAgICAgOzsKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworICAgICAgbGliZXh0PWxpYgorICAgICAgOzsKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICBpZiB7IGNhc2UgJGNjX2Jhc2VuYW1lIGluIGlmb3J0KikgdHJ1ZTs7ICopIHRlc3QgIiRHQ0MiID0geWVzOzsgZXNhYzsgfTsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZGd1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICA7OworICAgIGZyZWVic2QyLlswMV0qKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICBocHV4OSopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgaHB1eDEwKikKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICBmaQorICAgICAgOzsKKyAgICBocHV4MTEqKQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgICAgICBocHBhKjY0KnxpYTY0KikKKyAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgICAgICAgOzsKKyAgICAgICAgICAqKQorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgIGZpCisgICAgICA7OworICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgbmV0YnNkKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIDs7CisgICAgbmV3c29zNikKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICAqbnRvKiB8ICpxbngqKQorICAgICAgOzsKKyAgICBvcGVuYnNkKikKKyAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgZWxzZQorICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgIGZpCisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgb3MyKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIG9zZjMqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIG9zZjQqIHwgb3NmNSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBlbHNlCisgICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJworICAgICAgZmkKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgIDs7CisgICAgc3Vub3M0KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICA7OworICAgIHN5c3Y0KQorICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKyAgICAgICAgc25pKQorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/CisgICAgICAgICAgOzsKKyAgICAgICAgc2llbWVucykKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgICAgICA7OworICAgICAgICBtb3Rvcm9sYSkKKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIHN5c3Y0LjMqKQorICAgICAgOzsKKyAgICBzeXN2NCpNUCopCisgICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCisgICAgICAgIGxkX3NobGlicz15ZXMKKyAgICAgIGZpCisgICAgICA7OworICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCisgICAgICA7OworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tUiwkbGliZGlyYCcKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCisgICAgICA7OworICAgIHV0czQqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgOzsKKyAgICAqKQorICAgICAgbGRfc2hsaWJzPW5vCisgICAgICA7OworICBlc2FjCitmaQorCisjIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIuCisjIFVubGlrZSBsaWJ0b29sLm00LCBoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgX2FsbF8gbmFtZXMgb2YgdGhlIGxpYnJhcnksIGJ1dAorIyBvbmx5IGFib3V0IHRoZSBvbmUgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuIFRoaXMgaXMgdGhlIGxhc3QKKyMgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNCwgb3IgcG9zc2libHkgdHdvIG9mIHRoZW0gaWYgdGhlCisjIGxpbmtlciBoYXMgc3BlY2lhbCBzZWFyY2ggcnVsZXMuCitsaWJyYXJ5X25hbWVzX3NwZWM9ICAgICAgIyB0aGUgbGFzdCBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00CitsaWJuYW1lX3NwZWM9J2xpYiRuYW1lJworY2FzZSAiJGhvc3Rfb3MiIGluCisgIGFpeDMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKKyAgICA7OworICBhaXhbNC05XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgYW1pZ2FvcyopCisgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgcG93ZXJwYyopCisgICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JyA7OworICAgICAgbTY4aykKKyAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJyA7OworICAgIGVzYWMKKyAgICA7OworICBiZW9zKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBic2RpWzQ1XSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYSAkbGlibmFtZS5saWInCisgICAgOzsKKyAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICBzaHJleHQ9LmR5bGliCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZGd1eCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZnJlZWJzZFsyM10uKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGdudSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaGFpa3UqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBpYTY0KikKKyAgICAgICAgc2hyZXh0PS5zbworICAgICAgICA7OworICAgICAgaHBwYSo2NCopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIHNocmV4dD0uc2wKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaW50ZXJpeFszLTldKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgY2FzZSAkTEQgaW4KKyAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7CisgICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7CisgICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7CisgICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCisgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGtuZXRic2QqLWdudSkKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBuZXRic2QqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIG5ld3NvczYpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgKm50byogfCAqcW54KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBvcGVuYnNkKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCisgICAgOzsKKyAgb3MyKikKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNocmV4dD0uZGxsCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJworICAgIDs7CisgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICByZG9zKikKKyAgICA7OworICBzb2xhcmlzKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzdW5vczQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKKyAgICA7OworICBzeXN2NCB8IHN5c3Y0LjMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHN5c3Y0Kk1QKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICB0cGYqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHV0czQqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7Citlc2FjCisKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCitlc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitzaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAorZXNjYXBlZF9saWJuYW1lX3NwZWM9YGVjaG8gIlgkbGlibmFtZV9zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCitlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYz1gZWNobyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKK2VzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisKK0xDX0FMTD1DIHNlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgorCisjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCit3bD0iJGVzY2FwZWRfd2wiCisKKyMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgorbGliZXh0PSIkbGliZXh0IgorCisjIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCitzaGxpYmV4dD0iJHNobGliZXh0IgorCisjIEZvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4LgorbGlibmFtZV9zcGVjPSIkZXNjYXBlZF9saWJuYW1lX3NwZWMiCisKKyMgTGlicmFyeSBuYW1lcyB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLgorbGlicmFyeV9uYW1lc19zcGVjPSIkZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWMiCisKKyMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgorIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgoraGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKKworIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgorCisjIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorIyByZXN1bHRpbmcgYmluYXJ5LgoraGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCisKK0VPRgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbmZpZy9jb25maWcuc3ViIGIvZTJmc3Byb2dzL2NvbmZpZy9jb25maWcuc3ViCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmExZjgyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29uZmlnL2NvbmZpZy5zdWIKQEAgLTAsMCArMSwxODIzIEBACisjISAvYmluL3NoCisjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KKyMgICBDb3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMTYtMDgtMjUnCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdAorIyBwcm9ncmFtLiAgVGhpcyBFeGNlcHRpb24gaXMgYW4gYWRkaXRpb25hbCBwZXJtaXNzaW9uIHVuZGVyIHNlY3Rpb24gNworIyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMyAoIkdQTHYzIikuCisKKworIyBQbGVhc2Ugc2VuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4KKyMKKyMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCisjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KKyMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCisjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCisKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViCisKKyMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCisjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcworIyB0aGF0IGFyZSBtZWFuaW5nZnVsIHdpdGggKmFueSogR05VIHNvZnR3YXJlLgorIyBFYWNoIHBhY2thZ2UgaXMgcmVzcG9uc2libGUgZm9yIHJlcG9ydGluZyB3aGljaCB2YWxpZCBjb25maWd1cmF0aW9ucworIyBpdCBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gKKyMgYSBmYWlsdXJlIHRvIHN1cHBvcnQgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZyb20gYSBtZWFuaW5nbGVzcworIyBjb25maWd1cmF0aW9uLgorCisjIFRoZSBnb2FsIG9mIHRoaXMgZmlsZSBpcyB0byBtYXAgYWxsIHRoZSB2YXJpb3VzIHZhcmlhdGlvbnMgb2YgYSBnaXZlbgorIyBtYWNoaW5lIHNwZWNpZmljYXRpb24gaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvciBpbiBzb21lIGNhc2VzLCB0aGUgbmV3ZXIgZm91ci1wYXJ0IGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBJdCBpcyB3cm9uZyB0byBlY2hvIGFueSBvdGhlciB0eXBlIG9mIHNwZWNpZmljYXRpb24uCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMgb3IgQUxJQVMKKworQ2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiBuYW1lLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorCitDb3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiCisgICAgICAgZXhpdCAxIDs7CisKKyAgICAqbG9jYWwqKQorICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgorICAgICAgIGVjaG8gJDEKKyAgICAgICBleGl0IDs7CisKKyAgICAqICkKKyAgICAgICBicmVhayA7OworICBlc2FjCitkb25lCisKK2Nhc2UgJCMgaW4KKyAwKSBlY2hvICIkbWU6IG1pc3NpbmcgYXJndW1lbnQkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKKyAxKSA7OworICopIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICAgIGV4aXQgMTs7Citlc2FjCisKKyMgU2VwYXJhdGUgd2hhdCB0aGUgdXNlciBnYXZlIGludG8gQ1BVLUNPTVBBTlkgYW5kIE9TIG9yIEtFUk5FTC1PUyAoaWYgYW55KS4KKyMgSGVyZSB3ZSBtdXN0IHJlY29nbml6ZSBhbGwgdGhlIHZhbGlkIEtFUk5FTC1PUyBjb21iaW5hdGlvbnMuCittYXliZV9vcz1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDIvJ2AKK2Nhc2UgJG1heWJlX29zIGluCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAorICBsaW51eC1tdXNsKiB8IGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IFwKKyAga25ldGJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IG5ldGJzZCotZWFiaSogfCBcCisgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKKyAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgIG9zPS0kbWF5YmVfb3MKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYAorICAgIDs7CisgIGFuZHJvaWQtbGludXgpCisgICAgb3M9LWxpbnV4LWFuZHJvaWQKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMS8nYC11bmtub3duCisgICAgOzsKKyAgKikKKyAgICBiYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkICdzLy1bXi1dKiQvLydgCisgICAgaWYgWyAkYmFzaWNfbWFjaGluZSAhPSAkMSBdCisgICAgdGhlbiBvcz1gZWNobyAkMSB8IHNlZCAncy8uKi0vLS8nYAorICAgIGVsc2Ugb3M9OyBmaQorICAgIDs7Citlc2FjCisKKyMjIyBMZXQncyByZWNvZ25pemUgY29tbW9uIG1hY2hpbmVzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcyBzbworIyMjIHRoYXQgdGhpbmdzIGxpa2UgY29uZmlnLnN1YiBkZWNzdGF0aW9uLTMxMDAgd29yay4gIFdlIGFsc28KKyMjIyByZWNvZ25pemUgc29tZSBtYW51ZmFjdHVyZXJzIGFzIG5vdCBiZWluZyBvcGVyYXRpbmcgc3lzdGVtcywgc28gd2UKKyMjIyBjYW4gcHJvdmlkZSBkZWZhdWx0IG9wZXJhdGluZyBzeXN0ZW1zIGJlbG93LgorY2FzZSAkb3MgaW4KKwktc3VuKm9zKikKKwkJIyBQcmV2ZW50IGZvbGxvd2luZyBjbGF1c2UgZnJvbSBoYW5kbGluZyB0aGlzIGludmFsaWQgaW5wdXQuCisJCTs7CisJLWRlYyogfCAtbWlwcyogfCAtc2VxdWVudCogfCAtZW5jb3JlKiB8IC1wYzUzMiogfCAtc2dpKiB8IC1zb255KiB8IFwKKwktYXR0KiB8IC03MzAwKiB8IC0zMzAwKiB8IC1kZWx0YSogfCAtbW90b3JvbGEqIHwgLXN1blsyMzRdKiB8IFwKKwktdW5pY29tKiB8IC1pYm0qIHwgLW5leHQgfCAtaHAgfCAtaXNpKiB8IC1hcG9sbG8gfCAtYWx0b3MqIHwgXAorCS1jb252ZXJnZW50KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxcCisJLWNbMTIzXSogfCAtY29udmV4KiB8IC1zdW4gfCAtY3JkcyB8IC1vbXJvbiogfCAtZGcgfCAtdWx0cmEgfCAtdHRpKiB8IFwKKwktaGFycmlzIHwgLWRvbHBoaW4gfCAtaGlnaGxldmVsIHwgLWdvdWxkIHwgLWNibSB8IC1ucyB8IC1tYXNzY29tcCB8IFwKKwktYXBwbGUgfCAtYXhpcyB8IC1rbnV0aCB8IC1jcmF5IHwgLW1pY3JvYmxhemUqKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1ibHVlZ2VuZSopCisJCW9zPS1jbmsKKwkJOzsKKwktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktc2NvdXQpCisJCTs7CisJLXdycykKKwkJb3M9LXZ4d29ya3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1jaG9ydXNvcyopCisJCW9zPS1jaG9ydXNvcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c3JkYikKKwkJb3M9LWNob3J1c3JkYgorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWhpdXgqKQorCQlvcz0taGl1eHdlMgorCQk7OworCS1zY282KQorCQlvcz0tc2NvNXY2CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNSkKKwkJb3M9LXNjbzMuMnY1CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNCkKKwkJb3M9LXNjbzMuMnY0CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4yLls0LTldKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3NjbzMuMi4vc2NvMy4ydi8nYAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMnZbNC05XSopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNXY2KikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28qKQorCQlvcz0tc2NvMy4ydjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS11ZGsqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWlzYykKKwkJb3M9LWlzYzIuMgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWNsaXgqKQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaW50ZXJncmFwaAorCQk7OworCS1pc2MqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWx5bngqMTc4KQorCQlvcz0tbHlueG9zMTc4CisJCTs7CisJLWx5bngqNSkKKwkJb3M9LWx5bnhvczUKKwkJOzsKKwktbHlueCopCisJCW9zPS1seW54b3MKKwkJOzsKKwktcHR4KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1zZXF1ZW50LydgCisJCTs7CisJLXdpbmRvd3NudCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAncy93aW5kb3dzbnQvd2lubnQvJ2AKKwkJOzsKKwktcHNvcyopCisJCW9zPS1wc29zCisJCTs7CisJLW1pbnQgfCAtbWludFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7Citlc2FjCisKKyMgRGVjb2RlIGFsaWFzZXMgZm9yIGNlcnRhaW4gQ1BVLUNPTVBBTlkgY29tYmluYXRpb25zLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCisJIyBTb21lIGFyZSBvbWl0dGVkIGhlcmUgYmVjYXVzZSB0aGV5IGhhdmUgc3BlY2lhbCBtZWFuaW5ncyBiZWxvdy4KKwkxNzUwYSB8IDU4MCBcCisJfCBhMjlrIFwKKwl8IGFhcmNoNjQgfCBhYXJjaDY0X2JlIFwKKwl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisJfCBhbHBoYTY0IHwgYWxwaGE2NGV2WzQtOF0gfCBhbHBoYTY0ZXY1NiB8IGFscGhhNjRldjZbNzhdIHwgYWxwaGE2NHBjYTVbNjddIFwKKwl8IGFtMzNfMi4wIFwKKwl8IGFyYyB8IGFyY2ViIFwKKwl8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBhcm12WzItOF0gfCBhcm12WzMtOF1bbGJdIHwgYXJtdjdbYXJtXSBcCisJfCBhdnIgfCBhdnIzMiBcCisJfCBiYSBcCisJfCBiZTMyIHwgYmU2NCBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGM4MDUxIHwgY2xpcHBlciBcCisJfCBkMTB2IHwgZDMwdiB8IGRseCB8IGRzcDE2eHggXAorCXwgZTJrIHwgZXBpcGhhbnkgXAorCXwgZmlkbyB8IGZyMzAgfCBmcnYgfCBmdDMyIFwKKwl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBoZXhhZ29uIFwKKwl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaXAyayB8IGlxMjAwMCBcCisJfCBrMW9tIFwKKwl8IGxlMzIgfCBsZTY0IFwKKwl8IGxtMzIgXAorCXwgbTMyYyB8IG0zMnIgfCBtMzJybGUgfCBtNjgwMDAgfCBtNjhrIHwgbTg4ayBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWljcm9ibGF6ZWVsIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCisJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKwl8IG1pcHMxNiBcCisJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCisJfCBtaXBzNjRvY3Rlb24gfCBtaXBzNjRvY3Rlb25lbCBcCisJfCBtaXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9uZWwgXAorCXwgbWlwczY0cjU5MDAgfCBtaXBzNjRyNTkwMGVsIFwKKwl8IG1pcHM2NHZyIHwgbWlwczY0dnJlbCBcCisJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCisJfCBtaXBzNjR2cjQzMDAgfCBtaXBzNjR2cjQzMDBlbCBcCisJfCBtaXBzNjR2cjUwMDAgfCBtaXBzNjR2cjUwMDBlbCBcCisJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCisJfCBtaXBzaXNhMzIgfCBtaXBzaXNhMzJlbCBcCisJfCBtaXBzaXNhMzJyMiB8IG1pcHNpc2EzMnIyZWwgXAorCXwgbWlwc2lzYTMycjYgfCBtaXBzaXNhMzJyNmVsIFwKKwl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKKwl8IG1pcHNpc2E2NHIyIHwgbWlwc2lzYTY0cjJlbCBcCisJfCBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwgXAorCXwgbWlwc2lzYTY0c2IxIHwgbWlwc2lzYTY0c2IxZWwgXAorCXwgbWlwc2lzYTY0c3I3MWsgfCBtaXBzaXNhNjRzcjcxa2VsIFwKKwl8IG1pcHNyNTkwMCB8IG1pcHNyNTkwMGVsIFwKKwl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisJfCBtbjEwMjAwIHwgbW4xMDMwMCBcCisJfCBtb3hpZSBcCisJfCBtdCBcCisJfCBtc3A0MzAgXAorCXwgbmRzMzIgfCBuZHMzMmxlIHwgbmRzMzJiZSBcCisJfCBuaW9zIHwgbmlvczIgfCBuaW9zMmViIHwgbmlvczJlbCBcCisJfCBuczE2ayB8IG5zMzJrIFwKKwl8IG9wZW44IHwgb3IxayB8IG9yMWtuZCB8IG9yMzIgXAorCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIFwKKwl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSBcCisJfCBweXJhbWlkIFwKKwl8IHJpc2N2MzIgfCByaXNjdjY0IFwKKwl8IHJsNzggfCByeCBcCisJfCBzY29yZSBcCisJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFsyMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKKwl8IHNoNjQgfCBzaDY0bGUgXAorCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAorCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKKwl8IHNwdSBcCisJfCB0YWhvZSB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAorCXwgdWJpY29tMzIgXAorCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAorCXwgdmlzaXVtIFwKKwl8IHdlMzJrIFwKKwl8IHg4NiB8IHhjMTZ4IHwgeHN0b3JteTE2IHwgeHRlbnNhIFwKKwl8IHo4ayB8IHo4MCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCWxlb258bGVvblszLTldKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLSRiYXNpY19tYWNoaW5lCisJCTs7CisJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgbTY4aGNzMTJ4IHwgbnZwdHggfCBwaWNvY2hpcCkKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisJCTs7CisJbXMxKQorCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKwkJOzsKKworCXN0cm9uZ2FybSB8IHRodW1iIHwgeHNjYWxlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCTs7CisJeGdhdGUpCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCXhzY2FsZWViKQorCQliYXNpY19tYWNoaW5lPWFybWViLXVua25vd24KKwkJOzsKKworCXhzY2FsZWVsKQorCQliYXNpY19tYWNoaW5lPWFybWVsLXVua25vd24KKwkJOzsKKworCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisJIyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCisJIyAoMikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJzLgorCWkqODYgfCB4ODZfNjQpCisJICBiYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXBjCisJICA7OworCSMgT2JqZWN0IGlmIG1vcmUgdGhhbiBvbmUgY29tcGFueSBuYW1lIHdvcmQuCisJKi0qLSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGggY29tcGFueSBuYW1lLgorCTU4MC0qIFwKKwl8IGEyOWstKiBcCisJfCBhYXJjaDY0LSogfCBhYXJjaDY0X2JlLSogXAorCXwgYWxwaGEtKiB8IGFscGhhZXZbNC04XS0qIHwgYWxwaGFldjU2LSogfCBhbHBoYWV2Nls3OF0tKiBcCisJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorCXwgYWxwaGFwY2E1WzY3XS0qIHwgYWxwaGE2NHBjYTVbNjddLSogfCBhcmMtKiB8IGFyY2ViLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmEtKiBcCisJfCBiZTMyLSogfCBiZTY0LSogXAorCXwgYmZpbi0qIHwgYnMyMDAwLSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAorCXwgYzgwNTEtKiB8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCisJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisJfCBlMmstKiB8IGVseHNpLSogXAorCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorCXwgaDgzMDAtKiB8IGg4NTAwLSogXAorCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGhleGFnb24tKiBcCisJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAorCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgazFvbS0qIFwKKwl8IGxlMzItKiB8IGxlNjQtKiBcCisJfCBsbTMyLSogXAorCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAorCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFnLSogXAorCXwgbWljcm9ibGF6ZS0qIHwgbWljcm9ibGF6ZWVsLSogXAorCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAorCXwgbWlwczE2LSogXAorCXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwKKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisJfCBtaXBzNjRvcmlvbi0qIHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHI1OTAwLSogfCBtaXBzNjRyNTkwMGVsLSogXAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjR2cjQxMDAtKiB8IG1pcHM2NHZyNDEwMGVsLSogXAorCXwgbWlwczY0dnI0MzAwLSogfCBtaXBzNjR2cjQzMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisJfCBtaXBzNjR2cjU5MDAtKiB8IG1pcHM2NHZyNTkwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKKwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTMycjYtKiB8IG1pcHNpc2EzMnI2ZWwtKiBcCisJfCBtaXBzaXNhNjQtKiB8IG1pcHNpc2E2NGVsLSogXAorCXwgbWlwc2lzYTY0cjItKiB8IG1pcHNpc2E2NHIyZWwtKiBcCisJfCBtaXBzaXNhNjRyNi0qIHwgbWlwc2lzYTY0cjZlbC0qIFwKKwl8IG1pcHNpc2E2NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCisJfCBtaXBzaXNhNjRzcjcxay0qIHwgbWlwc2lzYTY0c3I3MWtlbC0qIFwKKwl8IG1pcHNyNTkwMC0qIHwgbWlwc3I1OTAwZWwtKiBcCisJfCBtaXBzdHgzOS0qIHwgbWlwc3R4MzllbC0qIFwKKwl8IG1taXgtKiBcCisJfCBtdC0qIFwKKwl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAorCXwgbmlvcy0qIHwgbmlvczItKiB8IG5pb3MyZWItKiB8IG5pb3MyZWwtKiBcCisJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKwl8IG9wZW44LSogXAorCXwgb3IxayotKiBcCisJfCBvcmlvbi0qIFwKKwl8IHBkcDEwLSogfCBwZHAxMS0qIHwgcGotKiB8IHBqbC0qIHwgcG4tKiB8IHBvd2VyLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAorCXwgcHlyYW1pZC0qIFwKKwl8IHJpc2N2MzItKiB8IHJpc2N2NjQtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAorCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCisJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCisJfCBzcGFyY2xpdGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3gqLSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKKwl8IHRyb24tKiBcCisJfCB1Ymljb20zMi0qIFwKKwl8IHY4NTAtKiB8IHY4NTBlLSogfCB2ODUwZTEtKiB8IHY4NTBlcy0qIHwgdjg1MGUyLSogfCB2ODUwZTJ2My0qIFwKKwl8IHZheC0qIFwKKwl8IHZpc2l1bS0qIFwKKwl8IHdlMzJrLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCisJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCisJfCB5bXAtKiBcCisJfCB6OGstKiB8IHo4MC0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUsIHdpdGggZ2xvYiBtYXRjaC4KKwl4dGVuc2EqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCisJIyBmb3IgYSBDUFUgdHlwZSBhbmQgYSBjb21wYW55IGFuZCBzb21ldGltZXMgZXZlbiBhbiBPUy4KKwkzODZic2QpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1ic2QKKwkJOzsKKwkzYjEgfCA3MzAwIHwgNzMwMC1hdHQgfCBhdHQtNzMwMCB8IHBjNzMwMCB8IHNhZmFyaSB8IHVuaXhwYykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtYXR0CisJCTs7CisJM2IqKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCWEyOWtoaWYpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCWFiYWN1cykKKwkJYmFzaWNfbWFjaGluZT1hYmFjdXMtdW5rbm93bgorCQk7OworCWFkb2JlNjhrKQorCQliYXNpY19tYWNoaW5lPW02ODAxMC1hZG9iZQorCQlvcz0tc2NvdXQKKwkJOzsKKwlhbGxpYW50IHwgZng4MCkKKwkJYmFzaWNfbWFjaGluZT1meDgwLWFsbGlhbnQKKwkJOzsKKwlhbHRvcyB8IGFsdG9zMzA2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFsdG9zCisJCTs7CisJYW0yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ub25lCisJCW9zPS1ic2QKKwkJOzsKKwlhbWQ2NCkKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtcGMKKwkJOzsKKwlhbWQ2NC0qKQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWFtZGFobCkKKwkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCisJCW9zPS1zeXN2CisJCTs7CisJYW1pZ2EgfCBhbWlnYS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQk7OworCWFtaWdhb3MgfCBhbWlnYWRvcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWFtaWdhb3MKKwkJOzsKKwlhbWlnYXVuaXggfCBhbWl4KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tc3lzdjQKKwkJOzsKKwlhcG9sbG82OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tc3lzdgorCQk7OworCWFwb2xsbzY4YnNkKQorCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCisJCW9zPS1ic2QKKwkJOzsKKwlhcm9zKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWFyb3MKKwkJOzsKKwlhc21qcykKKwkJYmFzaWNfbWFjaGluZT1hc21qcy11bmtub3duCisJCTs7CisJYXV4KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKKwkJb3M9LWF1eAorCQk7OworCWJhbGFuY2UpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwlibGFja2ZpbikKKwkJYmFzaWNfbWFjaGluZT1iZmluLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJYmxhY2tmaW4tKikKKwkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY2VnY2MpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LWNlZ2NjCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTYgfCBjcjE2LSopCisJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwljcmRzIHwgdW5vcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKKwkJOzsKKwljcmlzdjMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhmcyopCisJCWJhc2ljX21hY2hpbmU9Y3Jpc3YzMi1heGlzCisJCTs7CisJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKKwkJYmFzaWNfbWFjaGluZT1jcmlzLWF4aXMKKwkJOzsKKwljcngpCisJCWJhc2ljX21hY2hpbmU9Y3J4LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWRhMzAgfCBkYTMwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1kYTMwCisJCTs7CisJZGVjc3RhdGlvbiB8IGRlY3N0YXRpb24tMzEwMCB8IHBtYXggfCBwbWF4LSogfCBwbWluIHwgZGVjMzEwMCB8IGRlY3N0YXRuKQorCQliYXNpY19tYWNoaW5lPW1pcHMtZGVjCisJCTs7CisJZGVjc3lzdGVtMTAqIHwgZGVjMTAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczEwCisJCTs7CisJZGVjc3lzdGVtMjAqIHwgZGVjMjAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczIwCisJCTs7CisJZGVsdGEgfCAzMzAwIHwgbW90b3JvbGEtMzMwMCB8IG1vdG9yb2xhLWRlbHRhIFwKKwkgICAgICB8IDMzMDAtbW90b3JvbGEgfCBkZWx0YS1tb3Rvcm9sYSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW1vdG9yb2xhCisJCTs7CisJZGVsdGE4OCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLW1vdG9yb2xhCisJCW9zPS1zeXN2MworCQk7OworCWRpY29zKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJb3M9LWRpY29zCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZTUwMHZbMTJdKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0kb3Mic3BlIgorCQk7OworCWU1MDB2WzEyXS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9JG9zInNwZSIKKwkJOzsKKwllYm1vbjI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tZWJtb24KKwkJOzsKKwllbHhzaSkKKwkJYmFzaWNfbWFjaGluZT1lbHhzaS1lbHhzaQorCQlvcz0tYnNkCisJCTs7CisJZW5jb3JlIHwgdW1heCB8IG1tYXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstZW5jb3JlCisJCTs7CisJZXMxODAwIHwgT1NFNjhrIHwgb3NlNjhrIHwgb3NlIHwgT1NFKQorCQliYXNpY19tYWNoaW5lPW02OGstZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCWZ4MjgwMCkKKwkJYmFzaWNfbWFjaGluZT1pODYwLWFsbGlhbnQKKwkJOzsKKwlnZW5peCkKKwkJYmFzaWNfbWFjaGluZT1uczMyay1ucworCQk7OworCWdtaWNybykKKwkJYmFzaWNfbWFjaGluZT10cm9uLWdtaWNybworCQlvcz0tc3lzdgorCQk7OworCWdvMzIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tZ28zMgorCQk7OworCWgzMDUwciogfCBoaXV4KikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwloODMwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODMwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloODMwMHhyYXkpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0teHJheQorCQk7OworCWg4NTAwaG1zKQorCQliYXNpY19tYWNoaW5lPWg4NTAwLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCWhhcnJpcykKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tc3lzdjMKKwkJOzsKKwlocDMwMC0qKQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJOzsKKwlocDMwMGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCW9zPS1ic2QKKwkJOzsKKwlocDMwMGhwdXgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0taHB1eAorCQk7OworCWhwM2s5WzAtOV1bMC05XSB8IGhwOVswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWsyWzAtOV1bMC05XSB8IGhwOWszMVswLTldKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1ocAorCQk7OworCWhwOWszWzItOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHA5azZbMC05XVswLTldIHwgaHA2WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHA5azdbMC03OV1bMC05XSB8IGhwN1swLTc5XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrNzhbMC05XSB8IGhwNzhbMC05XSkKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbNjddMSB8IGhwOFs2N10xIHwgaHA5azgwWzI0XSB8IGhwODBbMjRdIHwgaHA5azhbNzhdOSB8IGhwOFs3OF05IHwgaHA5azg5MyB8IGhwODkzKQorCQkjIEZJWE1FOiByZWFsbHkgaHBwYTIuMC1ocAorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKKwkJOzsKKwlocDlrOFswLTldWzEzNjc5XSB8IGhwOFswLTldWzEzNjc5XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVswLTldIHwgaHA4WzAtOV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4wLWhwCisJCTs7CisJaHBwYS1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJaHBwYW9zZikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1vc2YKKwkJOzsKKwlocHBybykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlpMzcwLWlibSogfCBpYm0qKQorCQliYXNpY19tYWNoaW5lPWkzNzAtaWJtCisJCTs7CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbGVvbi0qfGxlb25bMy05XS0qKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzLy0uKi8vJ2AKKwkJOzsKKwltNjhrbm9tbXUpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1saW51eAorCQk7OworCW02OGtub21tdS0qKQorCQliYXNpY19tYWNoaW5lPW02OGstYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJb3M9LWxpbnV4CisJCTs7CisJbTg4ay1vbXJvbiopCisJCWJhc2ljX21hY2hpbmU9bTg4ay1vbXJvbgorCQk7OworCW1hZ251bSB8IG0zMjMwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtbWlwcworCQlvcz0tc3lzdgorCQk7OworCW1lcmxpbikKKwkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCisJCW9zPS1zeXN2CisJCTs7CisJbWljcm9ibGF6ZSopCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKKwltaW5ndzY0KQorCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYworCQlvcz0tbWluZ3c2NAorCQk7OworCW1pbmd3MzIpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCW1pbmd3MzJjZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQlvcz0tbWluZ3czMmNlCisJCTs7CisJbWluaWZyYW1lKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1jb252ZXJnZW50CisJCTs7CisJKm1pbnQgfCAtbWludFswLTldKiB8ICpNaU5UIHwgKk1pTlRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworCW1pcHMzKi0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYAorCQk7OworCW1pcHMzKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5rbm93bgorCQk7OworCW1vbml0b3IpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwltb3JwaG9zKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQlvcz0tbW9ycGhvcworCQk7OworCW1veGllYm94KQorCQliYXNpY19tYWNoaW5lPW1veGllLXVua25vd24KKwkJb3M9LW1veGllYm94CisJCTs7CisJbXNkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbXNkb3MKKwkJOzsKKwltczEtKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9tczEtL210LS8nYAorCQk7OworCW1zeXMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbXN5cworCQk7OworCW12cykKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQlvcz0tbXZzCisJCTs7CisJbmFjbCkKKwkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KKwkJb3M9LW5hY2wKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFjaGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBuZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcwLW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAgICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAxKQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworCW5zZS10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNlLXRhbmRlbQorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcGVucmlzYyB8IG9wZW5yaXNjLSopCisJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCisJCTs7CisJb3M0MDApCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CisJT1NFNjgwMDAgfCBvc2U2ODAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCW9zNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQorCQlvcz0tb3M2OGsKKwkJOzsKKwlwYS1oaXRhY2hpKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1eHdlMgorCQk7OworCXBhcmFnb24pCisJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorCQlvcz0tb3NmCisJCTs7CisJcGFyaXNjKQorCQliYXNpY19tYWNoaW5lPWhwcGEtdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwlwYXJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCXBiZCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKwkJOzsKKwlwYmIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay10dGkKKwkJOzsKKwlwYzUzMiB8IHBjNTMyLSopCisJCWJhc2ljX21hY2hpbmU9bnMzMmstcGM1MzIKKwkJOzsKKwlwYzk4KQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJOzsKKwlwYzk4LSopCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW0gfCBwNSB8IGs1IHwgazYgfCBuZXhnZW4gfCB2aWFjMykKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCTs7CisJcGVudGl1bXBybyB8IHA2IHwgNng4NiB8IGF0aGxvbiB8IGF0aGxvbl8qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtaWkgfCBwZW50aXVtMiB8IHBlbnRpdW1paWkgfCBwZW50aXVtMykKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bTQpCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1wYworCQk7OworCXBlbnRpdW0tKiB8IHA1LSogfCBrNS0qIHwgazYtKiB8IG5leGdlbi0qIHwgdmlhYzMtKikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bXByby0qIHwgcDYtKiB8IDZ4ODYtKiB8IGF0aGxvbi0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtaWktKiB8IHBlbnRpdW0yLSogfCBwZW50aXVtaWlpLSogfCBwZW50aXVtMy0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtNC0qKQorCQliYXNpY19tYWNoaW5lPWk3ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwbikKKwkJYmFzaWNfbWFjaGluZT1wbi1nb3VsZAorCQk7OworCXBvd2VyKQliYXNpY19tYWNoaW5lPXBvd2VyLWlibQorCQk7OworCXBwYyB8IHBwY2JlKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQk7OworCXBwYy0qIHwgcHBjYmUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCisJCTs7CisJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NCkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtdW5rbm93bgorCQk7OworCXBwYzY0LSopIGJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCisJCTs7CisJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwczIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1pYm0KKwkJOzsKKwlwdzMyKQorCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgorCQlvcz0tcHczMgorCQk7OworCXJkb3MgfCByZG9zNjQpCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LXBjCisJCW9zPS1yZG9zCisJCTs7CisJcmRvczMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LXJkb3MKKwkJOzsKKwlyb202OGspCisJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202OGsKKwkJb3M9LWNvZmYKKwkJOzsKKwlybVs0Nl0wMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNpZW1lbnMKKwkJOzsKKwlydHBjIHwgcnRwYy0qKQorCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisJCTs7CisJczM5MCB8IHMzOTAtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkwLWlibQorCQk7OworCXMzOTB4IHwgczM5MHgtKikKKwkJYmFzaWNfbWFjaGluZT1zMzkweC1pYm0KKwkJOzsKKwlzYTI5MjAwKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwlzYjEpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxLXVua25vd24KKwkJOzsKKwlzYjFlbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjFlbC11bmtub3duCisJCTs7CisJc2RlKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2EzMi1zZGUKKwkJb3M9LWVsZgorCQk7OworCXNlaSkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorCQlvcz0tc2VpdXgKKwkJOzsKKwlzZXF1ZW50KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQk7OworCXNoKQorCQliYXNpY19tYWNoaW5lPXNoLWhpdGFjaGkKKwkJb3M9LWhtcworCQk7OworCXNoNWVsKQorCQliYXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKwkJOzsKKwlzaDY0KQorCQliYXNpY19tYWNoaW5lPXNoNjQtdW5rbm93bgorCQk7OworCXNwYXJjbGl0ZS13cnMgfCBzaW1zby13cnMpCisJCWJhc2ljX21hY2hpbmU9c3BhcmNsaXRlLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXNwczcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1idWxsCisJCW9zPS1zeXN2MgorCQk7OworCXNwdXIpCisJCWJhc2ljX21hY2hpbmU9c3B1ci11bmtub3duCisJCTs7CisJc3QyMDAwKQorCQliYXNpY19tYWNoaW5lPW02OGstdGFuZGVtCisJCTs7CisJc3RyYXR1cykKKwkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKKwkJb3M9LXN5c3Y0CisJCTs7CisJc3Ryb25nYXJtLSogfCB0aHVtYi0qKQorCQliYXNpY19tYWNoaW5lPWFybS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXN1bjIpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQk7OworCXN1bjJvczMpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuMm9zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW4zb3MzKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczMKKwkJOzsKKwlzdW4zb3M0KQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40b3MzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuNG9zNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zNAorCQk7OworCXN1bjRzb2wyKQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQlvcz0tc29sYXJpczIKKwkJOzsKKwlzdW4zIHwgc3VuMy0qKQorCQliYXNpY19tYWNoaW5lPW02OGstc3VuCisJCTs7CisJc3VuNCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwlzdW4zODYgfCBzdW4zODZpIHwgcm9hZHJ1bm5lcikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXN1bgorCQk7OworCXN2MSkKKwkJYmFzaWNfbWFjaGluZT1zdjEtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJc3ltbWV0cnkpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCW9zPS1keW5peAorCQk7OworCXQzZSkKKwkJYmFzaWNfbWFjaGluZT1hbHBoYWV2NS1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0OTApCisJCWJhc2ljX21hY2hpbmU9dDkwLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXRpbGUqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7OworCXR4MzkpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXItMzIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQorCQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5lPXY4MTAtbmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXZtcworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0c3UKKwkJOzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlvcz0tbm9uZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJb3M9LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3ZWxsCisJCTs7CisJeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL154c2NhbGUvYXJtLydgCisJCTs7CisJeW1wKQorCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGstKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwlub25lKQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcy4gIEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBvdGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9tcCkKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hpbmU9bW1peC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJtCisJCTs7CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJIyB0aGVyZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNpY19tYWNoaW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMS1kZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUKKwkJOzsKKwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlvcmlvbjEwNSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8IG1wdyB8IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMgfCBwbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtub3duKQorCQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFjaGluZSBuYW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMgZm9yIG1hbnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiovZGVjLydgCisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citlc2FjCisKKyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAkb3MgaW4KKwkjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcworCSMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCisJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisJLWF1cm9yYXV4KQorCQlvcz0tYXVyb3JhdXgKKwkJOzsKKwktc29sYXJpczEgfCAtc29sYXJpczEuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNvbGFyaXMxfHN1bm9zNHwnYAorCQk7OworCS1zb2xhcmlzKQorCQlvcz0tc29sYXJpczIKKwkJOzsKKwktc3ZyNCopCisJCW9zPS1zeXN2NAorCQk7OworCS11bml4d2FyZSopCisJCW9zPS1zeXN2NC4ydXcKKwkJOzsKKwktZ251L2xpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGdudS9saW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwkjIEZpcnN0IGFjY2VwdCB0aGUgYmFzaWMgc3lzdGVtIHR5cGVzLgorCSMgVGhlIHBvcnRhYmxlIHN5c3RlbXMgY29tZXMgZmlyc3QuCisJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KKwkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCisJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAorCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLWNuayogfCAtc3Vub3MgfCAtc3Vub3NbMzRdKlwKKwkgICAgICB8IC1ocHV4KiB8IC11bm9zKiB8IC1vc2YqIHwgLWx1bmEqIHwgLWRndXgqIHwgLWF1cm9yYXV4KiB8IC1zb2xhcmlzKiBcCisJICAgICAgfCAtc3ltKiB8IC1rb3BlbnNvbGFyaXMqIHwgLXBsYW45KiBcCisJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiB8IC1jbG91ZGFiaSogfCAtc29ydGl4KiBcCisJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKKwkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKKwkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCisJICAgICAgfCAtYml0cmlnKiB8IC1vcGVuYnNkKiB8IC1zb2xpZGJzZCogfCAtbGliZXJ0eWJzZCogXAorCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgqIHwgLWx5bnhvcyogXAorCSAgICAgIHwgLWJvc3gqIHwgLW5leHRzdGVwKiB8IC1jeHV4KiB8IC1hb3V0KiB8IC1lbGYqIHwgLW9hYmkqIFwKKwkgICAgICB8IC1wdHgqIHwgLWNvZmYqIHwgLWVjb2ZmKiB8IC13aW5udCogfCAtZG9tYWluKiB8IC12c3RhKiBcCisJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKKwkgICAgICB8IC1jeWd3aW4qIHwgLW1zeXMqIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCisJICAgICAgfCAtbWlkaXBpeCogfCAtbWluZ3czMiogfCAtbWluZ3c2NCogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC1tdXNsKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiB8IC1tb3hpZWJveCogXAorCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqIFwKKwkgICAgICB8IC1vbmVmcyogfCAtdGlydG9zKiB8IC1waG9lbml4KikKKwkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJCTs7CisJLXFueCopCisJCWNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkJICAgIHg4Ni0qIHwgaSo4Ni0qKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0tbnRvJG9zCisJCQk7OworCQllc2FjCisJCTs7CisJLW50by1xbngqKQorCQk7OworCS1udG8qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bnRvfG50by1xbnh8J2AKKwkJOzsKKwktc2ltIHwgLWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCisJICAgICAgfCAtd2luZG93cyogfCAtb3N4IHwgLWFidWcgfCAtbmV0d2FyZSogfCAtb3M5KiB8IC1iZW9zKiB8IC1oYWlrdSogXAorCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwgLW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisJCTs7CisJLW1hYyopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xtYWN8bWFjb3N8J2AKKwkJOzsKKwktbGludXgtZGlldGxpYmMpCisJCW9zPS1saW51eC1kaWV0bGliYworCQk7OworCS1saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xsaW51eHxsaW51eC1nbnV8J2AKKwkJOzsKKwktc3Vub3M1KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNXxzb2xhcmlzMnwnYAorCQk7OworCS1zdW5vczYqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M2fHNvbGFyaXMzfCdgCisJCTs7CisJLW9wZW5lZCopCisJCW9zPS1vcGVuZWRpdGlvbgorCQk7OworCS1vczQwMCopCisJCW9zPS1vczQwMAorCQk7OworCS13aW5jZSopCisJCW9zPS13aW5jZQorCQk7OworCS1vc2Zyb3NlKikKKwkJb3M9LW9zZnJvc2UKKwkJOzsKKwktb3NmKikKKwkJb3M9LW9zZgorCQk7OworCS11dGVrKikKKwkJb3M9LWJzZAorCQk7OworCS1keW5peCopCisJCW9zPS1ic2QKKwkJOzsKKwktYWNpcyopCisJCW9zPS1hb3MKKwkJOzsKKwktYXRoZW9zKikKKwkJb3M9LWF0aGVvcworCQk7OworCS1zeWxsYWJsZSopCisJCW9zPS1zeWxsYWJsZQorCQk7OworCS0zODZic2QpCisJCW9zPS1ic2QKKwkJOzsKKwktY3RpeCogfCAtdXRzKikKKwkJb3M9LXN5c3YKKwkJOzsKKwktbm92YSopCisJCW9zPS1ydG1rLW5vdmEKKwkJOzsKKwktbnMyICkKKwkJb3M9LW5leHRzdGVwMgorCQk7OworCS1uc2sqKQorCQlvcz0tbnNrCisJCTs7CisJIyBQcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1iZXIgb2Ygc2luaXg1LgorCS1zaW5peDUuKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHNpbml4fHN5c3Z8J2AKKwkJOzsKKwktc2luaXgqKQorCQlvcz0tc3lzdjQKKwkJOzsKKwktdHBmKikKKwkJb3M9LXRwZgorCQk7OworCS10cml0b24qKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktb3NzKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCS1zdnIzKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3lzdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGFmdGVyIC1zeXN2cjQuCisJLXN5c3YqKQorCQk7OworCS1vc2UqKQorCQlvcz0tb3NlCisJCTs7CisJLWVzMTgwMCopCisJCW9zPS1vc2UKKwkJOzsKKwkteGVuaXgpCisJCW9zPS14ZW5peAorCQk7OworCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCW9zPS1taW50CisJCTs7CisJLWFyb3MqKQorCQlvcz0tYXJvcworCQk7OworCS16dm1vZSkKKwkJb3M9LXp2bW9lCisJCTs7CisJLWRpY29zKikKKwkJb3M9LWRpY29zCisJCTs7CisJLW5hY2wqKQorCQk7OworCS1pb3MpCisJCTs7CisJLW5vbmUpCisJCTs7CisJKikKKwkJIyBHZXQgcmlkIG9mIHRoZSBgLScgYXQgdGhlIGJlZ2lubmluZyBvZiAkb3MuCisJCW9zPWBlY2hvICRvcyB8IHNlZCAncy9bXi1dKi0vLydgCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogc3lzdGVtIFxgJG9zXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKK2Vsc2UKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IGNvbWUgd2l0aCB2YXJpb3VzIG1hY2hpbmVzLgorIyBUaGUgdmFsdWUgc2hvdWxkIGJlIHdoYXQgdGhlIHZlbmRvciBjdXJyZW50bHkgc2hpcHMgb3V0IHRoZSBkb29yIHdpdGggdGhlaXIKKyMgbWFjaGluZSBvciBwdXQgYW5vdGhlciB3YXksIHRoZSBtb3N0IHBvcHVsYXIgb3MgcHJvdmlkZWQgd2l0aCB0aGUgbWFjaGluZS4KKworIyBOb3RlIHRoYXQgaWYgeW91J3JlIGdvaW5nIHRvIHRyeSB0byBtYXRjaCAiLU1BTlVGQUNUVVJFUiIgaGVyZSAoc2F5LAorIyAiLXN1biIpLCB0aGVuIHlvdSBoYXZlIHRvIHRlbGwgdGhlIGNhc2Ugc3RhdGVtZW50IHVwIHRvd2FyZHMgdGhlIHRvcAorIyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcgc3lzdGVtLiAgT3RoZXJ3aXNlLCBjb2RlIGFib3ZlCisjIHdpbGwgc2lnbmFsIGFuIGVycm9yIHNheWluZyB0aGF0IE1BTlVGQUNUVVJFUiBpc24ndCBhbiBvcGVyYXRpbmcKKyMgc3lzdGVtLCBhbmQgd2UnbGwgbmV2ZXIgZ2V0IHRvIHRoaXMgcG9pbnQuCisKK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwlzY29yZS0qKQorCQlvcz0tZWxmCisJCTs7CisJc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlvcz0tYW91dAorCQk7OworCWM0eC0qIHwgdGljNHgtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwljODA1MS0qKQorCQlvcz0tZWxmCisJCTs7CisJaGV4YWdvbi0qKQorCQlvcz0tZWxmCisJCTs7CisJdGljNTR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNngtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25lCisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBvbGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJCTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7CisJbWVwLSopCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi1jaXNjbykKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLSopCisJCW9zPS1lbGYKKwkJOzsKKwlvcjMyLSopCisJCW9zPS1jb2ZmCisJCTs7CisJKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMgZW50cnkgb3Igd2UgZ2V0IHRoZSB3cm9uZyBvcy4KKwkJb3M9LXN5c3YzCisJCTs7CisJc3BhcmMtKiB8ICotc3VuKQorCQlvcz0tc3Vub3M0LjEuMQorCQk7OworCSotYmUpCisJCW9zPS1iZW9zCisJCTs7CisJKi1oYWlrdSkKKwkJb3M9LWhhaWt1CisJCTs7CisJKi1pYm0pCisJCW9zPS1haXgKKwkJOzsKKwkqLWtudXRoKQorCQlvcz0tbW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkKKwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkKKwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQorCQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJCW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNjdXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkqLW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJOzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJzZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlvcz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhwdgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwgYnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFjdHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsKKwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9yPWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdlbml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJdmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3MqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikKKwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMKKworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29uZmlnL2luc3RhbGwtc2ggYi9lMmZzcHJvZ3MvY29uZmlnL2luc3RhbGwtc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODlmYzliMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb25maWcvaW5zdGFsbC1zaApAQCAtMCwwICsxLDIzOCBAQAorIyEgL2Jpbi9zaAorIworIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKKyMgVGhpcyBjb21lcyBmcm9tIFgxMVI1LgorIworIyBDYWxsaW5nIHRoaXMgc2NyaXB0IGluc3RhbGwtc2ggaXMgcHJlZmVycmVkIG92ZXIgaW5zdGFsbC5zaCwgdG8gcHJldmVudAorIyBgbWFrZScgaW1wbGljaXQgcnVsZXMgZnJvbSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkIGluc3RhbGwgZnJvbSBpdAorIyB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgorIworIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCisjIGZyb20gc2NyYXRjaC4KKyMKKworCisjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKKworIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgorZG9pdD0iJHtET0lUUFJPRy19IgorCisKKyMgcHV0IGluIGFic29sdXRlIHBhdGhzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOyBvciB1c2UgZW52LiB2YXJzLgorCittdnByb2c9IiR7TVZQUk9HLW12fSIKK2NwcHJvZz0iJHtDUFBST0ctY3B9IgorY2htb2Rwcm9nPSIke0NITU9EUFJPRy1jaG1vZH0iCitjaG93bnByb2c9IiR7Q0hPV05QUk9HLWNob3dufSIKK2NoZ3JwcHJvZz0iJHtDSEdSUFBST0ctY2hncnB9Igorc3RyaXBwcm9nPSIke1NUUklQUFJPRy1zdHJpcH0iCitybXByb2c9IiR7Uk1QUk9HLXJtfSIKK21rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgorCit0cmFuZm9ybWJhc2VuYW1lPSIiCit0cmFuc2Zvcm1fYXJnPSIiCitpbnN0Y21kPSIkbXZwcm9nIgorY2htb2RjbWQ9IiRjaG1vZHByb2cgMDc1NSIKK2Nob3duY21kPSIiCitjaGdycGNtZD0iIgorc3RyaXBjbWQ9IiIKK3JtY21kPSIkcm1wcm9nIC1mIgorbXZjbWQ9IiRtdnByb2ciCitzcmM9IiIKK2RzdD0iIgorZGlyX2FyZz0iIgorCit3aGlsZSBbIHgiJDEiICE9IHggXTsgZG8KKyAgICBjYXNlICQxIGluCisJLWMpIGluc3RjbWQ9IiRjcHByb2ciCisJICAgIHNoaWZ0CisJICAgIGNvbnRpbnVlOzsKKworCS1kKSBkaXJfYXJnPXRydWUKKwkgICAgc2hpZnQKKwkgICAgY29udGludWU7OworCisJLW0pIGNobW9kY21kPSIkY2htb2Rwcm9nICQyIgorCSAgICBzaGlmdAorCSAgICBzaGlmdAorCSAgICBjb250aW51ZTs7CisKKwktbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCisJICAgIHNoaWZ0CisJICAgIHNoaWZ0CisJICAgIGNvbnRpbnVlOzsKKworCS1nKSBjaGdycGNtZD0iJGNoZ3JwcHJvZyAkMiIKKwkgICAgc2hpZnQKKwkgICAgc2hpZnQKKwkgICAgY29udGludWU7OworCisJLXMpIHN0cmlwY21kPSIkc3RyaXBwcm9nIgorCSAgICBzaGlmdAorCSAgICBjb250aW51ZTs7CisKKwktdD0qKSB0cmFuc2Zvcm1hcmc9YGVjaG8gJDEgfCBzZWQgJ3MvLXQ9Ly8nYAorCSAgICBzaGlmdAorCSAgICBjb250aW51ZTs7CisKKwktYj0qKSB0cmFuc2Zvcm1iYXNlbmFtZT1gZWNobyAkMSB8IHNlZCAncy8tYj0vLydgCisJICAgIHNoaWZ0CisJICAgIGNvbnRpbnVlOzsKKworCSopICBpZiBbIHgiJHNyYyIgPSB4IF0KKwkgICAgdGhlbgorCQlzcmM9JDEKKwkgICAgZWxzZQorCQkjIHRoaXMgY29sb24gaXMgdG8gd29yayBhcm91bmQgYSAzODZCU0QgL2Jpbi9zaCBidWcKKwkJOgorCQlkc3Q9JDEKKwkgICAgZmkKKwkgICAgc2hpZnQKKwkgICAgY29udGludWU7OworICAgIGVzYWMKK2RvbmUKKworaWYgWyB4IiRzcmMiID0geCBdCit0aGVuCisJZWNobyAiaW5zdGFsbDoJbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQiCisJZXhpdCAxCitlbHNlCisJdHJ1ZQorZmkKKworaWYgWyB4IiRkaXJfYXJnIiAhPSB4IF07IHRoZW4KKwlkc3Q9JHNyYworCXNyYz0iIgorCQorCWlmIFsgLWQgJGRzdCBdOyB0aGVuCisJCWluc3RjbWQ9OgorCWVsc2UKKwkJaW5zdGNtZD1ta2RpcgorCWZpCitlbHNlCisKKyMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRpbnN0Y21kICRzcmMgJGRzdHRtcCIgY29tbWFuZAorIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZCAKKyMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgorCisJaWYgWyAtZiAkc3JjIC1vIC1kICRzcmMgXQorCXRoZW4KKwkJdHJ1ZQorCWVsc2UKKwkJZWNobyAiaW5zdGFsbDogICRzcmMgZG9lcyBub3QgZXhpc3QiCisJCWV4aXQgMQorCWZpCisJCisJaWYgWyB4IiRkc3QiID0geCBdCisJdGhlbgorCQllY2hvICJpbnN0YWxsOglubyBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiCisJCWV4aXQgMQorCWVsc2UKKwkJdHJ1ZQorCWZpCisKKyMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IGlmIHlvdXIgc3lzdGVtCisjIGRvZXMgbm90IGxpa2UgZG91YmxlIHNsYXNoZXMgaW4gZmlsZW5hbWVzLCB5b3UgbWF5IG5lZWQgdG8gYWRkIHNvbWUgbG9naWMKKworCWlmIFsgLWQgJGRzdCBdCisJdGhlbgorCQlkc3Q9IiRkc3QiL2BiYXNlbmFtZSAkc3JjYAorCWVsc2UKKwkJdHJ1ZQorCWZpCitmaQorCisjIyB0aGlzIHNlZCBjb21tYW5kIGVtdWxhdGVzIHRoZSBkaXJuYW1lIGNvbW1hbmQKK2RzdGRpcj1gZWNobyAkZHN0IHwgc2VkIC1lICdzLFteL10qJCwsO3MsLyQsLDtzLF4kLC4sJ2AKKworIyBNYWtlIHN1cmUgdGhhdCB0aGUgZGVzdGluYXRpb24gZGlyZWN0b3J5IGV4aXN0cy4KKyMgIHRoaXMgcGFydCBpcyB0YWtlbiBmcm9tIE5vYWggRnJpZWRtYW4ncyBta2luc3RhbGxkaXJzIHNjcmlwdAorCisjIFNraXAgbG90cyBvZiBzdGF0IGNhbGxzIGluIHRoZSB1c3VhbCBjYXNlLgoraWYgWyAhIC1kICIkZHN0ZGlyIiBdOyB0aGVuCitkZWZhdWx0SUZTPScJCisnCitJRlM9IiR7SUZTLSR7ZGVmYXVsdElGU319IgorCitvSUZTPSIke0lGU30iCisjIFNvbWUgc2gncyBjYW4ndCBoYW5kbGUgSUZTPS8gZm9yIHNvbWUgcmVhc29uLgorSUZTPSclJworc2V0IC0gYGVjaG8gJHtkc3RkaXJ9IHwgc2VkIC1lICdzQC9AJUBnJyAtZSAnc0BeJUAvQCdgCitJRlM9IiR7b0lGU30iCisKK3BhdGhjb21wPScnCisKK3doaWxlIFsgJCMgLW5lIDAgXSA7IGRvCisJcGF0aGNvbXA9IiR7cGF0aGNvbXB9JHsxfSIKKwlzaGlmdAorCisJaWYgWyAhIC1kICIke3BhdGhjb21wfSIgXSA7CisgICAgICAgIHRoZW4KKwkJJG1rZGlycHJvZyAiJHtwYXRoY29tcH0iCisJZWxzZQorCQl0cnVlCisJZmkKKworCXBhdGhjb21wPSIke3BhdGhjb21wfS8iCitkb25lCitmaQorCitpZiBbIHgiJGRpcl9hcmciICE9IHggXQordGhlbgorCSRkb2l0ICRpbnN0Y21kICRkc3QgJiYKKworCWlmIFsgeCIkY2hvd25jbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2hvd25jbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkgJiYKKwlpZiBbIHgiJGNoZ3JwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNoZ3JwY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpICYmCisJaWYgWyB4IiRzdHJpcGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRzdHJpcGNtZCAkZHN0OyBlbHNlIHRydWUgOyBmaSAmJgorCWlmIFsgeCIkY2htb2RjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkY2htb2RjbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkKK2Vsc2UKKworIyBJZiB3ZSdyZSBnb2luZyB0byByZW5hbWUgdGhlIGZpbmFsIGV4ZWN1dGFibGUsIGRldGVybWluZSB0aGUgbmFtZSBub3cuCisKKwlpZiBbIHgiJHRyYW5zZm9ybWFyZyIgPSB4IF0gCisJdGhlbgorCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0YAorCWVsc2UKKwkJZHN0ZmlsZT1gYmFzZW5hbWUgJGRzdCAkdHJhbnNmb3JtYmFzZW5hbWUgfCAKKwkJCXNlZCAkdHJhbnNmb3JtYXJnYCR0cmFuc2Zvcm1iYXNlbmFtZQorCWZpCisKKyMgZG9uJ3QgYWxsb3cgdGhlIHNlZCBjb21tYW5kIHRvIGNvbXBsZXRlbHkgZWxpbWluYXRlIHRoZSBmaWxlbmFtZQorCisJaWYgWyB4IiRkc3RmaWxlIiA9IHggXSAKKwl0aGVuCisJCWRzdGZpbGU9YGJhc2VuYW1lICRkc3RgCisJZWxzZQorCQl0cnVlCisJZmkKKworIyBNYWtlIGEgdGVtcCBmaWxlIG5hbWUgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCisKKwlkc3R0bXA9JGRzdGRpci8jaW5zdC4kJCMKKworIyBNb3ZlIG9yIGNvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lCisKKwkkZG9pdCAkaW5zdGNtZCAkc3JjICRkc3R0bXAgJiYKKworCXRyYXAgInJtIC1mICR7ZHN0dG1wfSIgMCAmJgorCisjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMKKworIyBJZiBhbnkgb2YgdGhlc2UgZmFpbCwgd2UgYWJvcnQgdGhlIHdob2xlIHRoaW5nLiAgSWYgd2Ugd2FudCB0bworIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCisjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGluc3RjbWQgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgorCisJaWYgWyB4IiRjaG93bmNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG93bmNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKKwlpZiBbIHgiJGNoZ3JwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNoZ3JwY21kICRkc3R0bXA7IGVsc2UgdHJ1ZTtmaSAmJgorCWlmIFsgeCIkc3RyaXBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkc3RyaXBjbWQgJGRzdHRtcDsgZWxzZSB0cnVlO2ZpICYmCisJaWYgWyB4IiRjaG1vZGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG1vZGNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKKworIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorCisJJGRvaXQgJHJtY21kIC1mICRkc3RkaXIvJGRzdGZpbGUgJiYKKwkkZG9pdCAkbXZjbWQgJGRzdHRtcCAkZHN0ZGlyLyRkc3RmaWxlIAorCitmaSAmJgorCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbmZpZy9ta2luc3RhbGxkaXJzIGIvZTJmc3Byb2dzL2NvbmZpZy9ta2luc3RhbGxkaXJzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRmNTg1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29uZmlnL21raW5zdGFsbGRpcnMKQEAgLTAsMCArMSw0MCBAQAorIyEgL2Jpbi9zaAorIyBta2luc3RhbGxkaXJzIC0tLSBtYWtlIGRpcmVjdG9yeSBoaWVyYXJjaHkKKyMgQXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBwcmVwLmFpLm1pdC5lZHU+CisjIENyZWF0ZWQ6IDE5OTMtMDUtMTYKKyMgUHVibGljIGRvbWFpbgorCisjICRJZDogbWtpbnN0YWxsZGlycyx2IDEuMTMgMTk5OS8wMS8wNSAwMzoxODo1NSBiamUgRXhwICQKKworZXJyc3RhdHVzPTAKKworZm9yIGZpbGUKK2RvCisgICBzZXQgZm5vcmQgYGVjaG8gIjokZmlsZSIgfCBzZWQgLW5lICdzL146XC8vIy87cy9eOi8vO3MvXC8vIC9nO3MvXiMvXC8vO3AnYAorICAgc2hpZnQKKworICAgcGF0aGNvbXA9CisgICBmb3IgZAorICAgZG8KKyAgICAgcGF0aGNvbXA9IiRwYXRoY29tcCRkIgorICAgICBjYXNlICIkcGF0aGNvbXAiIGluCisgICAgICAgLSogKSBwYXRoY29tcD0uLyRwYXRoY29tcCA7OworICAgICBlc2FjCisKKyAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCisgICAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIKKworICAgICAgICBta2RpciAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/CisKKyAgICAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCisgIAkgIGVycnN0YXR1cz0kbGFzdGVycgorICAgICAgICBmaQorICAgICBmaQorCisgICAgIHBhdGhjb21wPSIkcGF0aGNvbXAvIgorICAgZG9uZQorZG9uZQorCitleGl0ICRlcnJzdGF0dXMKKworIyBta2luc3RhbGxkaXJzIGVuZHMgaGVyZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbmZpZy9wYXJzZS10eXBlcy5zaCBiL2UyZnNwcm9ncy9jb25maWcvcGFyc2UtdHlwZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjRkMmE5OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb25maWcvcGFyc2UtdHlwZXMuc2gKQEAgLTAsMCArMSwxMjcgQEAKKyMhL2Jpbi9zaAorCitjYXQgPiBzZWQuc2NyaXB0IDw8ICJFT0YiCisvXiMvZAorL14kL2QKK3MvX19leHRlbnNpb25fXyAvLworcy90eXBlZGVmIFwoLipcKSBfX3VcKFsxLTldKlwpOy8jZGVmaW5lIF9fVVwyX1RZUEVERUYgXDEvCitzL3R5cGVkZWYgXCguKlwpIF9fc1woWzEtOV0qXCk7LyNkZWZpbmUgX19TXDJfVFlQRURFRiBcMS8KK0VPRgorCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICAgQ0M9Z2NjCitmaQorCitpZiB0ZXN0IC16ICIkQ1BQIjsgdGhlbgorICAgIENQUD0iJENDIC1FIgorZmkKKworL2Jpbi9lY2hvIC1uICJjaGVja2luZyBmb3IgX191Tk4gdHlwZXMuLi4gIgorIyBjYW4ndCBjaGVjayBbIC1mIC91c3IvaW5jbHVkZS9hc20vdHlwZXMuaCBdIGRpcmVjdGx5LCBzaW5jZQorIyB0aGUgaW5jbHVkZSBwYXRoIG1pZ2h0IGJlIGRpZmZlcmVudCBpZiBjcm9zcy1jb21waWxpbmcKK2lmIGVjaG8gJyNpbmNsdWRlIDxhc20vdHlwZXMuaD4nIHwgJENQUCAtIDI+IHBhcnNlLXR5cGVzLmxvZyB8IFwKKwlzZWQgLWYgc2VkLnNjcmlwdCB8IGdyZXAgJ14jJyA+IGFzbV90eXBlcy5oOyB0aGVuCisJZWNobyAidXNpbmcgPGFzbS90eXBlcy5oPiIKK2Vsc2UKKwllY2hvICJ1c2luZyBnZW5lcmljIHR5cGVzIgorZmkKKworcm0gc2VkLnNjcmlwdAorCitjcCBhc21fdHlwZXMuaCBhc21fdHlwZXMuYworCitjYXQgPj4gYXNtX3R5cGVzLmMgPDxFT0YKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworI2lmZGVmIF9fVThfVFlQRURFRgorCWlmIChzaXplb2YoX19VOF9UWVBFREVGKSAhPSAxKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fVThfX1RZUEVERUYpIGlzICVkIHNob3VsZCBiZSAxXG4iLCAKKwkJICAgICAgIChpbnQpIHNpemVvZihfX1U4X1RZUEVERUYpKTsKKwkJZXhpdCgxKTsKKwl9CisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyN3YXJuaW5nIF9fVThfVFlQRURFRiBub3QgZGVmaW5lZAorI2VuZGlmCisjaWZkZWYgX19TOF9UWVBFREVGCisJaWYgKHNpemVvZihfX1M4X1RZUEVERUYpICE9IDEpIHsKKwkJcHJpbnRmKCJTaXplb2YoX1M4X19UWVBFREVGKSBpcyAlZCBzaG91bGQgYmUgMVxuIiwgCisJCSAgICAgICAoaW50KSBzaXplb2YoX19TOF9UWVBFREVGKSk7CisJCWV4aXQoMSk7CisJfQorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjd2FybmluZyBfX1M4X1RZUEVERUYgbm90IGRlZmluZWQKKyNlbmRpZgorI2lmZGVmIF9fVTE2X1RZUEVERUYKKwlpZiAoc2l6ZW9mKF9fVTE2X1RZUEVERUYpICE9IDIpIHsKKwkJcHJpbnRmKCJTaXplb2YoX19VMTZfX1RZUEVERUYpIGlzICVkIHNob3VsZCBiZSAyXG4iLCAKKwkJICAgICAgIChpbnQpIHNpemVvZihfX1UxNl9UWVBFREVGKSk7CisJCWV4aXQoMSk7CisJfQorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjd2FybmluZyBfX1UxNl9UWVBFREVGIG5vdCBkZWZpbmVkCisjZW5kaWYKKyNpZmRlZiBfX1MxNl9UWVBFREVGCisJaWYgKHNpemVvZihfX1MxNl9UWVBFREVGKSAhPSAyKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fUzE2X19UWVBFREVGKSBpcyAlZCBzaG91bGQgYmUgMlxuIiwgCisJCSAgICAgICAoaW50KSBzaXplb2YoX19TMTZfVFlQRURFRikpOworCQlleGl0KDEpOworCX0KKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQorI3dhcm5pbmcgX19TMTZfVFlQRURFRiBub3QgZGVmaW5lZAorI2VuZGlmCisKKyNpZmRlZiBfX1UzMl9UWVBFREVGCisJaWYgKHNpemVvZihfX1UzMl9UWVBFREVGKSAhPSA0KSB7CisJCXByaW50ZigiU2l6ZW9mKF9fVTMyX19UWVBFREVGKSBpcyAlZCBzaG91bGQgYmUgNFxuIiwgCisJCSAgICAgICAoaW50KSBzaXplb2YoX19VMzJfVFlQRURFRikpOworCQlleGl0KDEpOworCX0KKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQorI3dhcm5pbmcgX19VMzJfVFlQRURFRiBub3QgZGVmaW5lZAorI2VuZGlmCisjaWZkZWYgX19TMzJfVFlQRURFRgorCWlmIChzaXplb2YoX19TMzJfVFlQRURFRikgIT0gNCkgeworCQlwcmludGYoIlNpemVvZihfX1MzMl9fVFlQRURFRikgaXMgJWQgc2hvdWxkIGJlIDRcbiIsIAorCQkgICAgICAgKGludCkgc2l6ZW9mKF9fUzMyX1RZUEVERUYpKTsKKwkJZXhpdCgxKTsKKwl9CisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyN3YXJuaW5nIF9fUzMyX1RZUEVERUYgbm90IGRlZmluZWQKKyNlbmRpZgorCisjaWZkZWYgX19VNjRfVFlQRURFRgorCWlmIChzaXplb2YoX19VNjRfVFlQRURFRikgIT0gOCkgeworCQlwcmludGYoIlNpemVvZihfX1U2NF9fVFlQRURFRikgaXMgJWQgc2hvdWxkIGJlIDhcbiIsIAorCQkgICAgICAgKGludCkgc2l6ZW9mKF9fVTY0X1RZUEVERUYpKTsKKwkJZXhpdCgxKTsKKwl9CisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyN3YXJuaW5nIF9fVTY0X1RZUEVERUYgbm90IGRlZmluZWQKKyNlbmRpZgorI2lmZGVmIF9fUzY0X1RZUEVERUYKKwlpZiAoc2l6ZW9mKF9fUzY0X1RZUEVERUYpICE9IDgpIHsKKwkJcHJpbnRmKCJTaXplb2YoX19TNjRfX1RZUEVERUYpIGlzICVkIHNob3VsZCBiZSA4XG4iLCAKKwkJICAgICAgIChpbnQpIHNpemVvZihfX1M2NF9UWVBFREVGKSk7CisJCWV4aXQoMSk7CisJfQorI2VsaWYgZGVmaW5lZChfX2xpbnV4X18pCisjd2FybmluZyBfX1M2NF9UWVBFREVGIG5vdCBkZWZpbmVkCisjZW5kaWYKKwlyZXR1cm4gMDsKK30KK0VPRgorCiske0JVSUxEX0NDLSR7Q0MtZ2NjfX0gLW8gYXNtX3R5cGVzIGFzbV90eXBlcy5jCitpZiAuL2FzbV90eXBlcwordGhlbgorICAgIHRydWUKK2Vsc2UKKyAgICBpZiBbICIke0NST1NTX0NPTVBJTEV9IiAhPSAiMSIgXTsgdGhlbgorCWVjaG8gIlByb2JsZW0gZGV0ZWN0ZWQgd2l0aCBhc21fdHlwZXMuaCIKKwllY2hvICIiID4gYXNtX3R5cGVzLmgKKyAgICBmaQorZmkKK3JtIGFzbV90eXBlcy5jIGFzbV90eXBlcworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29uZmlndXJlIGIvZTJmc3Byb2dzL2NvbmZpZ3VyZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ODI1YmQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2NvbmZpZ3VyZQpAQCAtMCwwICsxLDE1MzQ0IEBACisjISAvYmluL3NoCisjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCisjIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4KKyMKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTkyLTE5OTYsIDE5OTgtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMKKyMgVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgorIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE00c2ggSW5pdGlhbGl6YXRpb24uICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIEJlIG1vcmUgQm91cm5lIGNvbXBhdGlibGUKK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgIGVtdWxhdGUgc2gKKyAgTlVMTENNRD06CisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicKKyAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKK2Vsc2UKKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICMoCisgICpwb3NpeCopIDoKKyAgICBzZXQgLW8gcG9zaXggOzsgIygKKyAgKikgOgorICAgICA7OworZXNhYworZmkKKworCithc19ubD0nCisnCitleHBvcnQgYXNfbmwKKyMgUHJpbnRpbmcgYSBsb25nIHN0cmluZyBjcmFzaGVzIFNvbGFyaXMgNyAvdXNyL2Jpbi9wcmludGYuCithc19lY2hvPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvCithc19lY2hvPSRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobworIyBQcmVmZXIgYSBrc2ggc2hlbGwgYnVpbHRpbiBvdmVyIGFuIGV4dGVybmFsIHByaW50ZiBwcm9ncmFtIG9uIFNvbGFyaXMsCisjIGJ1dCB3aXRob3V0IHdhc3RpbmcgZm9ya3MgZm9yIGJhc2ggb3IgenNoLgoraWYgdGVzdCAteiAiJEJBU0hfVkVSU0lPTiRaU0hfVkVSU0lPTiIgXAorICAgICYmICh0ZXN0ICJYYHByaW50IC1yIC0tICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0ncHJpbnQgLXIgLS0nCisgIGFzX2VjaG9fbj0ncHJpbnQgLXJuIC0tJworZWxpZiAodGVzdCAiWGBwcmludGYgJXMgJGFzX2VjaG9gIiA9ICJYJGFzX2VjaG8iKSAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19lY2hvPSdwcmludGYgJXNcbicKKyAgYXNfZWNob19uPSdwcmludGYgJXMnCitlbHNlCisgIGlmIHRlc3QgIlhgKC91c3IvdWNiL2VjaG8gLW4gLW4gJGFzX2VjaG8pIDI+L2Rldi9udWxsYCIgPSAiWC1uICRhc19lY2hvIjsgdGhlbgorICAgIGFzX2VjaG9fYm9keT0nZXZhbCAvdXNyL3VjYi9lY2hvIC1uICIkMSRhc19ubCInCisgICAgYXNfZWNob19uPScvdXNyL3VjYi9lY2hvIC1uJworICBlbHNlCisgICAgYXNfZWNob19ib2R5PSdldmFsIGV4cHIgIlgkMSIgOiAiWFxcKC4qXFwpIicKKyAgICBhc19lY2hvX25fYm9keT0nZXZhbAorICAgICAgYXJnPSQxOworICAgICAgY2FzZSAkYXJnIGluICMoCisgICAgICAqIiRhc19ubCIqKQorCWV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkkYXNfbmwiOworCWFyZz1gZXhwciAiWCRhcmciIDogIi4qJGFzX25sXFwoLipcXCkiYDs7CisgICAgICBlc2FjOworICAgICAgZXhwciAiWCRhcmciIDogIlhcXCguKlxcKSIgfCB0ciAtZCAiJGFzX25sIgorICAgICcKKyAgICBleHBvcnQgYXNfZWNob19uX2JvZHkKKyAgICBhc19lY2hvX249J3NoIC1jICRhc19lY2hvX25fYm9keSBhc19lY2hvJworICBmaQorICBleHBvcnQgYXNfZWNob19ib2R5CisgIGFzX2VjaG89J3NoIC1jICRhc19lY2hvX2JvZHkgYXNfZWNobycKK2ZpCisKKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7CisgICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7JworICB9CitmaQorCisKKyMgSUZTCisjIFdlIG5lZWQgc3BhY2UsIHRhYiBhbmQgbmV3IGxpbmUsIGluIHByZWNpc2VseSB0aGF0IG9yZGVyLiAgUXVvdGluZyBpcworIyB0aGVyZSB0byBwcmV2ZW50IGVkaXRvcnMgZnJvbSBjb21wbGFpbmluZyBhYm91dCBzcGFjZS10YWIuCisjIChJZiBfQVNfUEFUSF9XQUxLIHdlcmUgY2FsbGVkIHdpdGggSUZTIHVuc2V0LCBpdCB3b3VsZCBkaXNhYmxlIHdvcmQKKyMgc3BsaXR0aW5nIGJ5IHNldHRpbmcgSUZTIHRvIGVtcHR5IHZhbHVlLikKK0lGUz0iICIiCSRhc19ubCIKKworIyBGaW5kIHdobyB3ZSBhcmUuICBMb29rIGluIHRoZSBwYXRoIGlmIHdlIGNvbnRhaW4gbm8gZGlyZWN0b3J5IHNlcGFyYXRvci4KK2FzX215c2VsZj0KK2Nhc2UgJDAgaW4gIygoCisgICpbXFwvXSogKSBhc19teXNlbGY9JDAgOzsKKyAgKikgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIHRlc3QgLXIgIiRhc19kaXIvJDAiICYmIGFzX215c2VsZj0kYXNfZGlyLyQwICYmIGJyZWFrCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICAgICA7OworZXNhYworIyBXZSBkaWQgbm90IGZpbmQgb3Vyc2VsdmVzLCBtb3N0IHByb2JhYmx5IHdlIHdlcmUgcnVuIGFzIGBzaCBDT01NQU5EJworIyBpbiB3aGljaCBjYXNlIHdlIGFyZSBub3QgdG8gYmUgZm91bmQgaW4gdGhlIHBhdGguCitpZiB0ZXN0ICJ4JGFzX215c2VsZiIgPSB4OyB0aGVuCisgIGFzX215c2VsZj0kMAorZmkKK2lmIHRlc3QgISAtZiAiJGFzX215c2VsZiI7IHRoZW4KKyAgJGFzX2VjaG8gIiRhc19teXNlbGY6IGVycm9yOiBjYW5ub3QgZmluZCBteXNlbGY7IHJlcnVuIHdpdGggYW4gYWJzb2x1dGUgZmlsZSBuYW1lIiA+JjIKKyAgZXhpdCAxCitmaQorCisjIFVuc2V0IHZhcmlhYmxlcyB0aGF0IHdlIGRvIG5vdCBuZWVkIGFuZCB3aGljaCBjYXVzZSBidWdzIChlLmcuIGluCisjIHByZS0zLjAgVVdJTiBrc2gpLiAgQnV0IGRvIG5vdCBjYXVzZSBidWdzIGluIGJhc2ggMi4wMTsgdGhlICJ8fCBleGl0IDEiCisjIHN1cHByZXNzZXMgYW55ICJTZWdtZW50YXRpb24gZmF1bHQiIG1lc3NhZ2UgdGhlcmUuICAnKCgnIGNvdWxkCisjIHRyaWdnZXIgYSBidWcgaW4gcGRrc2ggNS4yLjE0LgorZm9yIGFzX3ZhciBpbiBCQVNIX0VOViBFTlYgTUFJTCBNQUlMUEFUSAorZG8gZXZhbCB0ZXN0IHhcJHskYXNfdmFyK3NldH0gPSB4c2V0IFwKKyAgJiYgKCAodW5zZXQgJGFzX3ZhcikgfHwgZXhpdCAxKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgJGFzX3ZhciB8fCA6Citkb25lCitQUzE9JyQgJworUFMyPSc+ICcKK1BTND0nKyAnCisKKyMgTkxTIG51aXNhbmNlcy4KK0xDX0FMTD1DCitleHBvcnQgTENfQUxMCitMQU5HVUFHRT1DCitleHBvcnQgTEFOR1VBR0UKKworIyBDRFBBVEguCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICisKKyMgVXNlIGEgcHJvcGVyIGludGVybmFsIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGVuc3VyZSB3ZSBkb24ndCBmYWxsCisgICMgaW50byBhbiBpbmZpbml0ZSBsb29wLCBjb250aW51b3VzbHkgcmUtZXhlY3V0aW5nIG91cnNlbHZlcy4KKyAgaWYgdGVzdCB4IiR7X2FzX2Nhbl9yZWV4ZWN9IiAhPSB4bm8gJiYgdGVzdCAieCRDT05GSUdfU0hFTEwiICE9IHg7IHRoZW4KKyAgICBfYXNfY2FuX3JlZXhlYz1ubzsgZXhwb3J0IF9hc19jYW5fcmVleGVjOworICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCisjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbworIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKyMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KK0JBU0hfRU5WPS9kZXYvbnVsbAorRU5WPS9kZXYvbnVsbAorKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCitjYXNlICQtIGluICMgKCgoKAorICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0tdnggOzsKKyAgKnYqICkgYXNfb3B0cz0tdiA7OworICAqeCogKSBhc19vcHRzPS14IDs7CisgICogKSBhc19vcHRzPSA7OworZXNhYworZXhlYyAkQ09ORklHX1NIRUxMICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KKyMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9pZCwgc2luY2UgYWxsIHRoZSBrbm93biBzaGVsbHMgYmFpbAorIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgorJGFzX2VjaG8gIiQwOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwiID4mMgorYXNfZm5fZXhpdCAyNTUKKyAgZmkKKyAgIyBXZSBkb24ndCB3YW50IHRoaXMgdG8gcHJvcGFnYXRlIHRvIG90aGVyIHN1YnByb2Nlc3Nlcy4KKyAgICAgICAgICB7IF9hc19jYW5fcmVleGVjPTsgdW5zZXQgX2FzX2Nhbl9yZWV4ZWM7fQoraWYgdGVzdCAieCRDT05GSUdfU0hFTEwiID0geDsgdGhlbgorICBhc19ib3VybmVfY29tcGF0aWJsZT0iaWYgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cIiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBQcmUtNC4yIHZlcnNpb25zIG9mIFpzaCBkbyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaAorICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgorICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICMoCisgICpwb3NpeCopIDoKKyAgICBzZXQgLW8gcG9zaXggOzsgIygKKyAgKikgOgorICAgICA7OworZXNhYworZmkKKyIKKyAgYXNfcmVxdWlyZWQ9ImFzX2ZuX3JldHVybiAoKSB7IChleGl0IFwkMSk7IH0KK2FzX2ZuX3N1Y2Nlc3MgKCkgeyBhc19mbl9yZXR1cm4gMDsgfQorYXNfZm5fZmFpbHVyZSAoKSB7IGFzX2ZuX3JldHVybiAxOyB9Cithc19mbl9yZXRfc3VjY2VzcyAoKSB7IHJldHVybiAwOyB9Cithc19mbl9yZXRfZmFpbHVyZSAoKSB7IHJldHVybiAxOyB9CisKK2V4aXRjb2RlPTAKK2FzX2ZuX3N1Y2Nlc3MgfHwgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3N1Y2Nlc3MgZmFpbGVkLjsgfQorYXNfZm5fZmFpbHVyZSAmJiB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fZmFpbHVyZSBzdWNjZWVkZWQuOyB9Cithc19mbl9yZXRfc3VjY2VzcyB8fCB7IGV4aXRjb2RlPTE7IGVjaG8gYXNfZm5fcmV0X3N1Y2Nlc3MgZmFpbGVkLjsgfQorYXNfZm5fcmV0X2ZhaWx1cmUgJiYgeyBleGl0Y29kZT0xOyBlY2hvIGFzX2ZuX3JldF9mYWlsdXJlIHN1Y2NlZWRlZC47IH0KK2lmICggc2V0IHg7IGFzX2ZuX3JldF9zdWNjZXNzIHkgJiYgdGVzdCB4ID0gXCJcJDFcIiApOyB0aGVuIDoKKworZWxzZQorICBleGl0Y29kZT0xOyBlY2hvIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB3ZXJlIG5vdCBzYXZlZC4KK2ZpCit0ZXN0IHhcJGV4aXRjb2RlID0geDAgfHwgZXhpdCAxCit0ZXN0IC14IC8gfHwgZXhpdCAxIgorICBhc19zdWdnZXN0ZWQ9IiAgYXNfbGluZW5vXzE9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18xYT1cJExJTkVOTworICBhc19saW5lbm9fMj0iO2FzX3N1Z2dlc3RlZD0kYXNfc3VnZ2VzdGVkJExJTkVOTzthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCIgYXNfbGluZW5vXzJhPVwkTElORU5PCisgIGV2YWwgJ3Rlc3QgXCJ4XCRhc19saW5lbm9fMSdcJGFzX3J1bidcIiAhPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiICYmCisgIHRlc3QgXCJ4XGBleHByIFwkYXNfbGluZW5vXzEnXCRhc19ydW4nICsgMVxgXCIgPSBcInhcJGFzX2xpbmVub18yJ1wkYXNfcnVuJ1wiJyB8fCBleGl0IDEKK3Rlc3QgXCQoKCAxICsgMSApKSA9IDIgfHwgZXhpdCAxIgorICBpZiAoZXZhbCAiJGFzX3JlcXVpcmVkIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBhc19oYXZlX3JlcXVpcmVkPXllcworZWxzZQorICBhc19oYXZlX3JlcXVpcmVkPW5vCitmaQorICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHh5ZXMgJiYgKGV2YWwgIiRhc19zdWdnZXN0ZWQiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisKK2Vsc2UKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorYXNfZm91bmQ9ZmFsc2UKK2ZvciBhc19kaXIgaW4gL2JpbiRQQVRIX1NFUEFSQVRPUi91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgYXNfZm91bmQ9OgorICBjYXNlICRhc19kaXIgaW4gIygKKwkgLyopCisJICAgZm9yIGFzX2Jhc2UgaW4gc2ggYmFzaCBrc2ggc2g1OyBkbworCSAgICAgIyBUcnkgb25seSBzaGVsbHMgdGhhdCBleGlzdCwgdG8gc2F2ZSBzZXZlcmFsIGZvcmtzLgorCSAgICAgYXNfc2hlbGw9JGFzX2Rpci8kYXNfYmFzZQorCSAgICAgaWYgeyB0ZXN0IC1mICIkYXNfc2hlbGwiIHx8IHRlc3QgLWYgIiRhc19zaGVsbC5leGUiOyB9ICYmCisJCSAgICB7ICRhc19lY2hvICIkYXNfYm91cm5lX2NvbXBhdGlibGUiIiRhc19yZXF1aXJlZCIgfCBhc19ydW49YSAiJGFzX3NoZWxsIjsgfSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIENPTkZJR19TSEVMTD0kYXNfc2hlbGwgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKKwkJICAgaWYgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfc3VnZ2VzdGVkIiB8IGFzX3J1bj1hICIkYXNfc2hlbGwiOyB9IDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgYnJlYWsgMgorZmkKK2ZpCisJICAgZG9uZTs7CisgICAgICAgZXNhYworICBhc19mb3VuZD1mYWxzZQorZG9uZQorJGFzX2ZvdW5kIHx8IHsgaWYgeyB0ZXN0IC1mICIkU0hFTEwiIHx8IHRlc3QgLWYgIiRTSEVMTC5leGUiOyB9ICYmCisJICAgICAgeyAkYXNfZWNobyAiJGFzX2JvdXJuZV9jb21wYXRpYmxlIiIkYXNfcmVxdWlyZWQiIHwgYXNfcnVuPWEgIiRTSEVMTCI7IH0gMj4vZGV2L251bGw7IHRoZW4gOgorICBDT05GSUdfU0hFTEw9JFNIRUxMIGFzX2hhdmVfcmVxdWlyZWQ9eWVzCitmaTsgfQorSUZTPSRhc19zYXZlX0lGUworCisKKyAgICAgIGlmIHRlc3QgIngkQ09ORklHX1NIRUxMIiAhPSB4OyB0aGVuIDoKKyAgZXhwb3J0IENPTkZJR19TSEVMTAorICAgICAgICAgICAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCisjIG5ldXRyYWxpemF0aW9uIHZhbHVlIGZvciBzaGVsbHMgd2l0aG91dCB1bnNldDsgYW5kIHRoaXMgYWxzbworIyB3b3JrcyBhcm91bmQgc2hlbGxzIHRoYXQgY2Fubm90IHVuc2V0IG5vbmV4aXN0ZW50IHZhcmlhYmxlcy4KKyMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KK0JBU0hfRU5WPS9kZXYvbnVsbAorRU5WPS9kZXYvbnVsbAorKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCitjYXNlICQtIGluICMgKCgoKAorICAqdip4KiB8ICp4KnYqICkgYXNfb3B0cz0tdnggOzsKKyAgKnYqICkgYXNfb3B0cz0tdiA7OworICAqeCogKSBhc19vcHRzPS14IDs7CisgICogKSBhc19vcHRzPSA7OworZXNhYworZXhlYyAkQ09ORklHX1NIRUxMICRhc19vcHRzICIkYXNfbXlzZWxmIiAkezErIiRAIn0KKyMgQWRtaXR0ZWRseSwgdGhpcyBpcyBxdWl0ZSBwYXJhbm9pZCwgc2luY2UgYWxsIHRoZSBrbm93biBzaGVsbHMgYmFpbAorIyBvdXQgYWZ0ZXIgYSBmYWlsZWQgYGV4ZWMnLgorJGFzX2VjaG8gIiQwOiBjb3VsZCBub3QgcmUtZXhlY3V0ZSB3aXRoICRDT05GSUdfU0hFTEwiID4mMgorZXhpdCAyNTUKK2ZpCisKKyAgICBpZiB0ZXN0IHgkYXNfaGF2ZV9yZXF1aXJlZCA9IHhubzsgdGhlbiA6CisgICRhc19lY2hvICIkMDogVGhpcyBzY3JpcHQgcmVxdWlyZXMgYSBzaGVsbCBtb3JlIG1vZGVybiB0aGFuIGFsbCIKKyAgJGFzX2VjaG8gIiQwOiB0aGUgc2hlbGxzIHRoYXQgSSBmb3VuZCBvbiB5b3VyIHN5c3RlbS4iCisgIGlmIHRlc3QgeCR7WlNIX1ZFUlNJT04rc2V0fSA9IHhzZXQgOyB0aGVuCisgICAgJGFzX2VjaG8gIiQwOiBJbiBwYXJ0aWN1bGFyLCB6c2ggJFpTSF9WRVJTSU9OIGhhcyBidWdzIGFuZCBzaG91bGQiCisgICAgJGFzX2VjaG8gIiQwOiBiZSB1cGdyYWRlZCB0byB6c2ggNC4zLjQgb3IgbGF0ZXIuIgorICBlbHNlCisgICAgJGFzX2VjaG8gIiQwOiBQbGVhc2UgdGVsbCBidWctYXV0b2NvbmZAZ251Lm9yZyBhYm91dCB5b3VyIHN5c3RlbSwKKyQwOiBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcworJDA6IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuCiskMDogdGhlIHNjcmlwdCB1bmRlciBzdWNoIGEgc2hlbGwgaWYgeW91IGRvIGhhdmUgb25lLiIKKyAgZmkKKyAgZXhpdCAxCitmaQorZmkKK2ZpCitTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorZXhwb3J0IFNIRUxMCisjIFVuc2V0IG1vcmUgdmFyaWFibGVzIGtub3duIHRvIGludGVyZmVyZSB3aXRoIGJlaGF2aW9yIG9mIGNvbW1vbiB0b29scy4KK0NMSUNPTE9SX0ZPUkNFPSBHUkVQX09QVElPTlM9Cit1bnNldCBDTElDT0xPUl9GT1JDRSBHUkVQX09QVElPTlMKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNNHNoIFNoZWxsIEZ1bmN0aW9ucy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyBhc19mbl91bnNldCBWQVIKKyMgLS0tLS0tLS0tLS0tLS0tCisjIFBvcnRhYmx5IHVuc2V0IFZBUi4KK2FzX2ZuX3Vuc2V0ICgpCit7CisgIHsgZXZhbCAkMT07IHVuc2V0ICQxO30KK30KK2FzX3Vuc2V0PWFzX2ZuX3Vuc2V0CisKKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLgorYXNfZm5fc2V0X3N0YXR1cyAoKQoreworICByZXR1cm4gJDEKK30gIyBhc19mbl9zZXRfc3RhdHVzCisKKyMgYXNfZm5fZXhpdCBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0LgorYXNfZm5fZXhpdCAoKQoreworICBzZXQgK2UKKyAgYXNfZm5fc2V0X3N0YXR1cyAkMQorICBleGl0ICQxCit9ICMgYXNfZm5fZXhpdAorCisjIGFzX2ZuX21rZGlyX3AKKyMgLS0tLS0tLS0tLS0tLQorIyBDcmVhdGUgIiRhc19kaXIiIGFzIGEgZGlyZWN0b3J5LCBpbmNsdWRpbmcgcGFyZW50cyBpZiBuZWNlc3NhcnkuCithc19mbl9ta2Rpcl9wICgpCit7CisKKyAgY2FzZSAkYXNfZGlyIGluICMoCisgIC0qKSBhc19kaXI9Li8kYXNfZGlyOzsKKyAgZXNhYworICB0ZXN0IC1kICIkYXNfZGlyIiB8fCBldmFsICRhc19ta2Rpcl9wIHx8IHsKKyAgICBhc19kaXJzPQorICAgIHdoaWxlIDo7IGRvCisgICAgICBjYXNlICRhc19kaXIgaW4gIygKKyAgICAgICpcJyopIGFzX3FkaXI9YCRhc19lY2hvICIkYXNfZGlyIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7ICMnKAorICAgICAgKikgYXNfcWRpcj0kYXNfZGlyOzsKKyAgICAgIGVzYWMKKyAgICAgIGFzX2RpcnM9IickYXNfcWRpcicgJGFzX2RpcnMiCisgICAgICBhc19kaXI9YCRhc19kaXJuYW1lIC0tICIkYXNfZGlyIiB8fAorJGFzX2V4cHIgWCIkYXNfZGlyIiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC8vXClbXi9dJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgiJGFzX2RpciIgfAorICAgIHNlZCAnL15YXCguKlteL11cKVwvXC8qW14vXVteL10qXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKVteL10uKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXC9cKSQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wpLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgcy8uKi8uLzsgcSdgCisgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhaworICAgIGRvbmUKKyAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCisKKworfSAjIGFzX2ZuX21rZGlyX3AKKworIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCithc19mbl9leGVjdXRhYmxlX3AgKCkKK3sKKyAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorfSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAorIyBhc19mbl9hcHBlbmQgVkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQXBwZW5kIHRoZSB0ZXh0IGluIFZBTFVFIHRvIHRoZSBlbmQgb2YgdGhlIGRlZmluaXRpb24gY29udGFpbmVkIGluIFZBUi4gVGFrZQorIyBhZHZhbnRhZ2Ugb2YgYW55IHNoZWxsIG9wdGltaXphdGlvbnMgdGhhdCBhbGxvdyBhbW9ydGl6ZWQgbGluZWFyIGdyb3d0aCBvdmVyCisjIHJlcGVhdGVkIGFwcGVuZHMsIGluc3RlYWQgb2YgdGhlIHR5cGljYWwgcXVhZHJhdGljIGdyb3d0aCBwcmVzZW50IGluIG5haXZlCisjIGltcGxlbWVudGF0aW9ucy4KK2lmIChldmFsICJhc192YXI9MTsgYXNfdmFyKz0yOyB0ZXN0IHhcJGFzX3ZhciA9IHgxMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQxKz1cJDIKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXBwZW5kICgpCisgIHsKKyAgICBldmFsICQxPVwkJDFcJDIKKyAgfQorZmkgIyBhc19mbl9hcHBlbmQKKworIyBhc19mbl9hcml0aCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYXJpdGhtZXRpYyBldmFsdWF0aW9uIG9uIHRoZSBBUkdzLCBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbiB0aGUKKyMgZ2xvYmFsICRhc192YWwuIFRha2UgYWR2YW50YWdlIG9mIHNoZWxscyB0aGF0IGNhbiBhdm9pZCBmb3Jrcy4gVGhlIGFyZ3VtZW50cworIyBtdXN0IGJlIHBvcnRhYmxlIGFjcm9zcyAkKCgpKSBhbmQgZXhwci4KK2lmIChldmFsICJ0ZXN0IFwkKCggMSArIDEgKSkgPSAyIikgMj4vZGV2L251bGw7IHRoZW4gOgorICBldmFsICdhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPSQoKCAkKiApKQorICB9JworZWxzZQorICBhc19mbl9hcml0aCAoKQorICB7CisgICAgYXNfdmFsPWBleHByICIkQCIgfHwgdGVzdCAkPyAtZXEgMWAKKyAgfQorZmkgIyBhc19mbl9hcml0aAorCisKKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5fZXJyb3IgKCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0ICRhc19zdGF0dXMKK30gIyBhc19mbl9lcnJvcgorCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNfYmFzZW5hbWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5hbWUKK2Vsc2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworCisgIGFzX2xpbmVub18xPSRMSU5FTk8gYXNfbGluZW5vXzFhPSRMSU5FTk8KKyAgYXNfbGluZW5vXzI9JExJTkVOTyBhc19saW5lbm9fMmE9JExJTkVOTworICBldmFsICd0ZXN0ICJ4JGFzX2xpbmVub18xJyRhc19ydW4nIiAhPSAieCRhc19saW5lbm9fMickYXNfcnVuJyIgJiYKKyAgdGVzdCAieGBleHByICRhc19saW5lbm9fMSckYXNfcnVuJyArIDFgIiA9ICJ4JGFzX2xpbmVub18yJyRhc19ydW4nIicgfHwgeworICAjIEJsYW1lIExlZSBFLiBNY01haG9uICgxOTMxLTE5ODkpIGZvciBzZWQncyBzeW50YXguICA6LSkKKyAgc2VkIC1uICcKKyAgICBwCisgICAgL1skXUxJTkVOTy89CisgICcgPCRhc19teXNlbGYgfAorICAgIHNlZCAnCisgICAgICBzL1skXUxJTkVOTy4qLyYtLworICAgICAgdCBsaW5lbm8KKyAgICAgIGIKKyAgICAgIDpsaW5lbm8KKyAgICAgIE4KKyAgICAgIDpsb29wCisgICAgICBzL1skXUxJTkVOT1woW14nJGFzX2NyX2FsbnVtJ19dLipcblwpXCguKlwpL1wyXDFcMi8KKyAgICAgIHQgbG9vcAorICAgICAgcy8tXG4uKi8vCisgICAgJyA+JGFzX21lLmxpbmVubyAmJgorICBjaG1vZCAreCAiJGFzX21lLmxpbmVubyIgfHwKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjYW5ub3QgY3JlYXRlICRhc19tZS5saW5lbm87IHJlcnVuIHdpdGggYSBQT1NJWCBzaGVsbCIgPiYyOyBhc19mbl9leGl0IDE7IH0KKworICAjIElmIHdlIGhhZCB0byByZS1leGVjdXRlIHdpdGggJENPTkZJR19TSEVMTCwgd2UncmUgZW5zdXJlZCB0byBoYXZlCisgICMgYWxyZWFkeSBkb25lIHRoYXQsIHNvIGVuc3VyZSB3ZSBkb24ndCB0cnkgdG8gZG8gc28gYWdhaW4gYW5kIGZhbGwKKyAgIyBpbiBhbiBpbmZpbml0ZSBsb29wLiAgVGhpcyBoYXMgYWxyZWFkeSBoYXBwZW5lZCBpbiBwcmFjdGljZS4KKyAgX2FzX2Nhbl9yZWV4ZWM9bm87IGV4cG9ydCBfYXNfY2FuX3JlZXhlYworICAjIERvbid0IHRyeSB0byBleGVjIGFzIGl0IGNoYW5nZXMgJFswXSwgY2F1c2luZyBhbGwgc29ydCBvZiBwcm9ibGVtcworICAjICh0aGUgZGlybmFtZSBvZiAkWzBdIGlzIG5vdCB0aGUgcGxhY2Ugd2hlcmUgd2UgbWlnaHQgZmluZCB0aGUKKyAgIyBvcmlnaW5hbCBhbmQgc28gb24uICBBdXRvY29uZiBpcyBlc3BlY2lhbGx5IHNlbnNpdGl2ZSB0byB0aGlzKS4KKyAgLiAiLi8kYXNfbWUubGluZW5vIgorICAjIEV4aXQgc3RhdHVzIGlzIHRoYXQgb2YgdGhlIGxhc3QgY29tbWFuZC4KKyAgZXhpdAorfQorCitFQ0hPX0M9IEVDSE9fTj0gRUNIT19UPQorY2FzZSBgZWNobyAtbiB4YCBpbiAjKCgoKCgKKy1uKikKKyAgY2FzZSBgZWNobyAneHlcYydgIGluCisgICpjKikgRUNIT19UPScJJzs7CSMgRUNIT19UIGlzIHNpbmdsZSB0YWIgY2hhcmFjdGVyLgorICB4eSkgIEVDSE9fQz0nXGMnOzsKKyAgKikgICBlY2hvIGBlY2hvIGtzaDg4IGJ1ZyBvbiBBSVggNi4xYCA+IC9kZXYvbnVsbAorICAgICAgIEVDSE9fVD0nCSc7OworICBlc2FjOzsKKyopCisgIEVDSE9fTj0nLW4nOzsKK2VzYWMKKworcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmZpbGUKK2lmIHRlc3QgLWQgY29uZiQkLmRpcjsgdGhlbgorICBybSAtZiBjb25mJCQuZGlyL2NvbmYkJC5maWxlCitlbHNlCisgIHJtIC1mIGNvbmYkJC5kaXIKKyAgbWtkaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorZmkKK2lmIChlY2hvID5jb25mJCQuZmlsZSkgMj4vZGV2L251bGw7IHRoZW4KKyAgaWYgbG4gLXMgY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz0nbG4gLXMnCisgICAgIyAuLi4gYnV0IHRoZXJlIGFyZSB0d28gZ290Y2hhczoKKyAgICAjIDEpIE9uIE1TWVMsIGJvdGggYGxuIC1zIGZpbGUgZGlyJyBhbmQgYGxuIGZpbGUgZGlyJyBmYWlsLgorICAgICMgMikgREpHUFAgPCAyLjA0IGhhcyBubyBzeW1saW5rczsgYGxuIC1zJyBjcmVhdGVzIGEgd3JhcHBlciBleGVjdXRhYmxlLgorICAgICMgSW4gYm90aCBjYXNlcywgd2UgaGF2ZSB0byBkZWZhdWx0IHRvIGBjcCAtcFInLgorICAgIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJC5kaXIgMj4vZGV2L251bGwgJiYgdGVzdCAhIC1mIGNvbmYkJC5leGUgfHwKKyAgICAgIGFzX2xuX3M9J2NwIC1wUicKKyAgZWxpZiBsbiBjb25mJCQuZmlsZSBjb25mJCQgMj4vZGV2L251bGw7IHRoZW4KKyAgICBhc19sbl9zPWxuCisgIGVsc2UKKyAgICBhc19sbl9zPSdjcCAtcFInCisgIGZpCitlbHNlCisgIGFzX2xuX3M9J2NwIC1wUicKK2ZpCitybSAtZiBjb25mJCQgY29uZiQkLmV4ZSBjb25mJCQuZGlyL2NvbmYkJC5maWxlIGNvbmYkJC5maWxlCitybWRpciBjb25mJCQuZGlyIDI+L2Rldi9udWxsCisKK2lmIG1rZGlyIC1wIC4gMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfbWtkaXJfcD0nbWtkaXIgLXAgIiRhc19kaXIiJworZWxzZQorICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAorICBhc19ta2Rpcl9wPWZhbHNlCitmaQorCithc190ZXN0X3g9J3Rlc3QgLXgnCithc19leGVjdXRhYmxlX3A9YXNfZm5fZXhlY3V0YWJsZV9wCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCBDUFAgbmFtZS4KK2FzX3RyX2NwcD0iZXZhbCBzZWQgJ3klKiRhc19jcl9sZXR0ZXJzJVAkYXNfY3JfTEVUVEVSUyU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisKKyMgU2VkIGV4cHJlc3Npb24gdG8gbWFwIGEgc3RyaW5nIG9udG8gYSB2YWxpZCB2YXJpYWJsZSBuYW1lLgorYXNfdHJfc2g9ImV2YWwgc2VkICd5JSorJXBwJTtzJVteXyRhc19jcl9hbG51bV0lXyVnJyIKKworCit0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMgNzwmMCA8L2Rldi9udWxsCitleGVjIDY+JjEKKworIyBOYW1lIG9mIHRoZSBob3N0LgorIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgb2xkIEdOVS9MaW51eCkgcmV0dXJucyBhIGJvZ3VzIGV4aXQgc3RhdHVzLAorIyBzbyB1bmFtZSBnZXRzIHJ1biB0b28uCithY19ob3N0bmFtZT1gKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKworIworIyBJbml0aWFsaXphdGlvbnMuCisjCithY19kZWZhdWx0X3ByZWZpeD0vdXNyL2xvY2FsCithY19jbGVhbl9maWxlcz0KK2FjX2NvbmZpZ19saWJvYmpfZGlyPS4KK0xJQk9CSlM9Citjcm9zc19jb21waWxpbmc9bm8KK3N1YmRpcnM9CitNRkxBR1M9CitNQUtFRkxBR1M9CisKKyMgSWRlbnRpdHkgb2YgdGhpcyBwYWNrYWdlLgorUEFDS0FHRV9OQU1FPQorUEFDS0FHRV9UQVJOQU1FPQorUEFDS0FHRV9WRVJTSU9OPQorUEFDS0FHRV9TVFJJTkc9CitQQUNLQUdFX0JVR1JFUE9SVD0KK1BBQ0tBR0VfVVJMPQorCithY191bmlxdWVfZmlsZT0idmVyc2lvbi5oIgorIyBGYWN0b3JpbmcgZGVmYXVsdCBoZWFkZXJzIGZvciBtb3N0IHRlc3RzLgorYWNfaW5jbHVkZXNfZGVmYXVsdD0iXAorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgU1REQ19IRUFERVJTCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1RETElCX0gKKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJJTkdfSAorIyBpZiAhZGVmaW5lZCBTVERDX0hFQURFUlMgJiYgZGVmaW5lZCBIQVZFX01FTU9SWV9ICisjICBpbmNsdWRlIDxtZW1vcnkuaD4KKyMgZW5kaWYKKyMgaW5jbHVkZSA8c3RyaW5nLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR1NfSAorIyBpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1RESU5UX0gKKyMgaW5jbHVkZSA8c3RkaW50Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmIgorCitndF9uZWVkcz0KK2FjX2hlYWRlcl9saXN0PQorZ2xfdXNlX3RocmVhZHNfZGVmYXVsdD0KK2FjX2Z1bmNfbGlzdD0KK2FjX3N1YnN0X3ZhcnM9J0xUTElCT0JKUworTElCT0JKUworTERGTEFHU19TSExJQgorQ0ZMQUdTX1NUTElCCitDRkxBR1NfU0hMSUIKK0JVSUxEX0xERkxBR1MKK0JVSUxEX0NGTEFHUworTUtJTlNUQUxMRElSUworSU5DTFVERVMKK0RPX1RFU1RfU1VJVEUKK0xERkxBR1NfU1RBVElDCityb290X3N5c2NvbmZkaXIKK3Jvb3RfbGliZGlyCityb290X3NiaW5kaXIKK3Jvb3RfYmluZGlyCityb290X3ByZWZpeAorVU5JWF9DTVQKK0NZR1dJTl9DTVQKK0xJTlVYX0NNVAorVU5JX0RJRkZfT1BUUworU0VNX0lOSVRfTElCCitGVVNFX0NNVAorRlVTRV9MSUIKK0NMT0NLX0dFVFRJTUVfTElCCitNQUdJQ19MSUIKK1NPQ0tFVF9MSUIKK1NJWkVPRl9USU1FX1QKK1NJWkVPRl9PRkZfVAorU0laRU9GX0xPTkdfTE9ORworU0laRU9GX0xPTkcKK1NJWkVPRl9JTlQKK1NJWkVPRl9TSE9SVAorQlVJTERfQ0MKK01BS0VJTkZPCitTVFJJUAorQVIKK0xEQ09ORklHCitQRVJMCitBV0sKK0NITU9ECitSTQorQ1AKK01WCitMTl9TCitMTgoraWZOb3RHTlVtYWtlCitpZkdOVW1ha2UKK0JJTkFSWV9UWVBFCitQT1NVQgorTFRMSUJJTlRMCitMSUJJTlRMCitJTlRMTElCUworSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVgKK0lOVExPQkpTCitHRU5DQVQKK0lOU1RPQkpFWFQKK0RBVEFESVJOQU1FCitDQVRPQkpFWFQKK1VTRV9JTkNMVURFRF9MSUJJTlRMCitCVUlMRF9JTkNMVURFRF9MSUJJTlRMCitMVExJQkMKK1dJTkRSRVMKK1dPRTMyCitXT0UzMkRMTAorSEFWRV9XUFJJTlRGCitIQVZFX05FV0xPQ0FMRQorSEFWRV9TTlBSSU5URgorSEFWRV9BU1BSSU5URgorSEFWRV9QT1NJWF9QUklOVEYKK0lOVExfREVGQVVMVF9WRVJCT1NJVFkKK0lOVExfTUFDT1NYX0xJQlMKK0dMSUJDMjEKK0lOVExCSVNPTgorTFRMSUJJQ09OVgorTElCSUNPTlYKK0xUTElCTVVMVElUSFJFQUQKK0xJQk1VTFRJVEhSRUFECitMVExJQlRIUkVBRAorTElCVEhSRUFECitMSUJQVEhfUFJFRklYCitMVExJQlBUSAorTElCUFRICitQUklfTUFDUk9TX0JST0tFTgorQUxMT0NBCitIQVZFX1ZJU0lCSUxJVFkKK0NGTEFHX1ZJU0lCSUxJVFkKK1JBTkxJQgorR0xJQkMyCitYR0VUVEVYVF9FWFRSQV9PUFRJT05TCitNU0dNRVJHRQorWEdFVFRFWFRfMDE1CitYR0VUVEVYVAorR01TR0ZNVF8wMTUKK01TR0ZNVF8wMTUKK0dNU0dGTVQKK01TR0ZNVAorR0VUVEVYVF9NQUNST19WRVJTSU9OCitVU0VfTkxTCitTRUQKK01LRElSX1AKK0lOU1RBTExfREFUQQorSU5TVEFMTF9TQ1JJUFQKK0lOU1RBTExfUFJPR1JBTQorU0VUX01BS0UKK1ZFUlNJT04KK1BBQ0tBR0UKK0dFVFRFWFRfUEFDS0FHRQorVERCX01BTl9DT01NRU5UCitUREJfQ01UCitVVUlERF9DTVQKK0UySU5JVFJEX01BTgorRTJJTklUUkRfUFJPRworRlNDS19NQU4KK0ZTQ0tfUFJPRworREVGUkFHX0NNVAorUkVTSVpFUl9DTVQKK0lNQUdFUl9DTVQKK0RFQlVHRlNfQ01UCitCTEtJRF9DTVQKK0RFUFBST0ZJTEVEX0xJQkJMS0lECitQUk9GSUxFRF9MSUJCTEtJRAorREVQU1RBVElDX0xJQkJMS0lECitTVEFUSUNfTElCQkxLSUQKK0RFUExJQkJMS0lECitMSUJCTEtJRAorVVVJRF9DTVQKK0RFUFBST0ZJTEVEX0xJQlVVSUQKK1BST0ZJTEVEX0xJQlVVSUQKK0RFUFNUQVRJQ19MSUJVVUlECitTVEFUSUNfTElCVVVJRAorREVQTElCVVVJRAorTElCVVVJRAorUEtHX0NPTkZJR19MSUJESVIKK1BLR19DT05GSUdfUEFUSAorUEtHX0NPTkZJRworVEVTVF9JT19DTVQKK1BSSVZBVEVfTElCU19DTVQKK0xERkxBR19EWU5BTUlDCitQUk9GSUxFRF9MSUJfRVhUCitTVEFUSUNfTElCX0VYVAorTElCX0VYVAorUFJPRklMRV9DTVQKK0JTRExJQl9DTVQKK0VMRl9DTVQKK1EKK0VTCitFCitMSU5LX0JVSUxEX0ZMQUdTCitTWU1MSU5LX1JFTEFUSVZFCitMSU5LX0lOU1RBTExfRkxBR1MKK01BSU5UQUlORVJfQ01UCitFR1JFUAorR1JFUAorQ1BQCitSRFlOQU1JQworRExPUEVOX0xJQgorT0JKRVhUCitFWEVFWFQKK2FjX2N0X0NDCitDUFBGTEFHUworTERGTEFHUworQ0ZMQUdTCitDQworaG9zdF9vcworaG9zdF92ZW5kb3IKK2hvc3RfY3B1Citob3N0CitidWlsZF9vcworYnVpbGRfdmVuZG9yCitidWlsZF9jcHUKK2J1aWxkCitFMkZTUFJPR1NfUEtHVkVSCitFMkZTUFJPR1NfVkVSU0lPTgorRTJGU1BST0dTX0RBWQorRTJGU1BST0dTX01PTlRICitFMkZTUFJPR1NfWUVBUgordGFyZ2V0X2FsaWFzCitob3N0X2FsaWFzCitidWlsZF9hbGlhcworTElCUworRUNIT19UCitFQ0hPX04KK0VDSE9fQworREVGUworbWFuZGlyCitsb2NhbGVkaXIKK2xpYmRpcgorcHNkaXIKK3BkZmRpcgorZHZpZGlyCitodG1sZGlyCitpbmZvZGlyCitkb2NkaXIKK29sZGluY2x1ZGVkaXIKK2luY2x1ZGVkaXIKK3J1bnN0YXRlZGlyCitsb2NhbHN0YXRlZGlyCitzaGFyZWRzdGF0ZWRpcgorc3lzY29uZmRpcgorZGF0YWRpcgorZGF0YXJvb3RkaXIKK2xpYmV4ZWNkaXIKK3NiaW5kaXIKK2JpbmRpcgorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZQorcHJlZml4CitleGVjX3ByZWZpeAorUEFDS0FHRV9VUkwKK1BBQ0tBR0VfQlVHUkVQT1JUCitQQUNLQUdFX1NUUklORworUEFDS0FHRV9WRVJTSU9OCitQQUNLQUdFX1RBUk5BTUUKK1BBQ0tBR0VfTkFNRQorUEFUSF9TRVBBUkFUT1IKK1NIRUxMJworYWNfc3Vic3RfZmlsZXM9J01DT05GSUcKK01BS0VGSUxFX0VMRgorTUFLRUZJTEVfQlNETElCCitNQUtFRklMRV9QUk9GSUxFCitNQUtFRklMRV9MSUJSQVJZCitBU01fVFlQRVNfSEVBREVSCitQVUJMSUNfQ09ORklHX0hFQURFUicKK2FjX3VzZXJfb3B0cz0nCitlbmFibGVfb3B0aW9uX2NoZWNraW5nCit3aXRoX2RpZXRfbGliYword2l0aF9jYword2l0aF9jY29wdHMKK3dpdGhfbGRvcHRzCit3aXRoX3Jvb3RfcHJlZml4CitlbmFibGVfbWFpbnRhaW5lcl9tb2RlCitlbmFibGVfc3ltbGlua19pbnN0YWxsCitlbmFibGVfcmVsYXRpdmVfc3ltbGlua3MKK2VuYWJsZV9zeW1saW5rX3JlbGF0aXZlX3N5bWxpbmtzCitlbmFibGVfc3ltbGlua19idWlsZAorZW5hYmxlX3ZlcmJvc2VfbWFrZWNtZHMKK2VuYWJsZV9lbGZfc2hsaWJzCitlbmFibGVfYnNkX3NobGlicworZW5hYmxlX3Byb2ZpbGUKK2VuYWJsZV9nY292CitlbmFibGVfaGFyZGVuaW5nCitlbmFibGVfamJkX2RlYnVnCitlbmFibGVfYmxraWRfZGVidWcKK2VuYWJsZV90ZXN0aW9fZGVidWcKK2VuYWJsZV9saWJ1dWlkCitlbmFibGVfbGliYmxraWQKK2VuYWJsZV9iYWNrdHJhY2UKK2VuYWJsZV9kZWJ1Z2ZzCitlbmFibGVfaW1hZ2VyCitlbmFibGVfcmVzaXplcgorZW5hYmxlX2RlZnJhZworZW5hYmxlX2ZzY2sKK2VuYWJsZV9lMmluaXRyZF9oZWxwZXIKK2VuYWJsZV90bHMKK2VuYWJsZV91dWlkZAorZW5hYmxlX21tcAorZW5hYmxlX3RkYgorZW5hYmxlX2JtYXBfc3RhdHMKK2VuYWJsZV9ibWFwX3N0YXRzX29wcworZW5hYmxlX25scworZW5hYmxlX3RocmVhZHMKK3dpdGhfZ251X2xkCitlbmFibGVfcnBhdGgKK3dpdGhfbGlicHRoX3ByZWZpeAord2l0aF9saWJpY29udl9wcmVmaXgKK3dpdGhfaW5jbHVkZWRfZ2V0dGV4dAord2l0aF9saWJpbnRsX3ByZWZpeAorZW5hYmxlX2Z1c2UyZnMKK3dpdGhfbXVsdGlhcmNoCisnCisgICAgICBhY19wcmVjaW91c192YXJzPSdidWlsZF9hbGlhcworaG9zdF9hbGlhcwordGFyZ2V0X2FsaWFzCitDQworQ0ZMQUdTCitMREZMQUdTCitMSUJTCitDUFBGTEFHUworQ1BQCitQS0dfQ09ORklHCitQS0dfQ09ORklHX1BBVEgKK1BLR19DT05GSUdfTElCRElSJworCisKKyMgSW5pdGlhbGl6ZSBzb21lIHZhcmlhYmxlcyBzZXQgYnkgb3B0aW9ucy4KK2FjX2luaXRfaGVscD0KK2FjX2luaXRfdmVyc2lvbj1mYWxzZQorYWNfdW5yZWNvZ25pemVkX29wdHM9CithY191bnJlY29nbml6ZWRfc2VwPQorIyBUaGUgdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgdGhlIG9wdGlvbnMsIHdpdGgKKyMgZGFzaGVzIGNoYW5nZWQgdG8gdW5kZXJsaW5lcy4KK2NhY2hlX2ZpbGU9L2Rldi9udWxsCitleGVjX3ByZWZpeD1OT05FCitub19jcmVhdGU9Citub19yZWN1cnNpb249CitwcmVmaXg9Tk9ORQorcHJvZ3JhbV9wcmVmaXg9Tk9ORQorcHJvZ3JhbV9zdWZmaXg9Tk9ORQorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT1zLHgseCwKK3NpbGVudD0KK3NpdGU9CitzcmNkaXI9Cit2ZXJib3NlPQoreF9pbmNsdWRlcz1OT05FCit4X2xpYnJhcmllcz1OT05FCisKKyMgSW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvcHRpb25zLgorIyBUaGVzZSBhcmUgbGVmdCB1bmV4cGFuZGVkIHNvIHVzZXJzIGNhbiAibWFrZSBpbnN0YWxsIGV4ZWNfcHJlZml4PS9mb28iCisjIGFuZCBhbGwgdGhlIHZhcmlhYmxlcyB0aGF0IGFyZSBzdXBwb3NlZCB0byBiZSBiYXNlZCBvbiBleGVjX3ByZWZpeAorIyBieSBkZWZhdWx0IHdpbGwgYWN0dWFsbHkgY2hhbmdlLgorIyBVc2UgYnJhY2VzIGluc3RlYWQgb2YgcGFyZW5zIGJlY2F1c2Ugc2gsIHBlcmwsIGV0Yy4gYWxzbyBhY2NlcHQgdGhlbS4KKyMgKFRoZSBsaXN0IGZvbGxvd3MgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzLikKK2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vYmluJworc2JpbmRpcj0nJHtleGVjX3ByZWZpeH0vc2JpbicKK2xpYmV4ZWNkaXI9JyR7ZXhlY19wcmVmaXh9L2xpYmV4ZWMnCitkYXRhcm9vdGRpcj0nJHtwcmVmaXh9L3NoYXJlJworZGF0YWRpcj0nJHtkYXRhcm9vdGRpcn0nCitzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJworc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCitsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJworcnVuc3RhdGVkaXI9JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJworaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCitvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCitkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0V9JworaW5mb2Rpcj0nJHtkYXRhcm9vdGRpcn0vaW5mbycKK2h0bWxkaXI9JyR7ZG9jZGlyfScKK2R2aWRpcj0nJHtkb2NkaXJ9JworcGRmZGlyPScke2RvY2Rpcn0nCitwc2Rpcj0nJHtkb2NkaXJ9JworbGliZGlyPScke2V4ZWNfcHJlZml4fS9saWInCitsb2NhbGVkaXI9JyR7ZGF0YXJvb3RkaXJ9L2xvY2FsZScKK21hbmRpcj0nJHtkYXRhcm9vdGRpcn0vbWFuJworCithY19wcmV2PQorYWNfZGFzaGRhc2g9Citmb3IgYWNfb3B0aW9uCitkbworICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KKyAgaWYgdGVzdCAtbiAiJGFjX3ByZXYiOyB0aGVuCisgICAgZXZhbCAkYWNfcHJldj1cJGFjX29wdGlvbgorICAgIGFjX3ByZXY9CisgICAgY29udGludWUKKyAgZmkKKworICBjYXNlICRhY19vcHRpb24gaW4KKyAgKj0/KikgYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKKyAgKj0pICAgYWNfb3B0YXJnPSA7OworICAqKSAgICBhY19vcHRhcmc9eWVzIDs7CisgIGVzYWMKKworICAjIEFjY2VwdCB0aGUgaW1wb3J0YW50IEN5Z251cyBjb25maWd1cmUgb3B0aW9ucywgc28gd2UgY2FuIGRpYWdub3NlIHR5cG9zLgorCisgIGNhc2UgJGFjX2Rhc2hkYXNoJGFjX29wdGlvbiBpbgorICAtLSkKKyAgICBhY19kYXNoZGFzaD15ZXMgOzsKKworICAtYmluZGlyIHwgLS1iaW5kaXIgfCAtLWJpbmRpIHwgLS1iaW5kIHwgLS1iaW4gfCAtLWJpKQorICAgIGFjX3ByZXY9YmluZGlyIDs7CisgIC1iaW5kaXI9KiB8IC0tYmluZGlyPSogfCAtLWJpbmRpPSogfCAtLWJpbmQ9KiB8IC0tYmluPSogfCAtLWJpPSopCisgICAgYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtYnVpbGQgfCAtLWJ1aWxkIHwgLS1idWlsIHwgLS1idWkgfCAtLWJ1KQorICAgIGFjX3ByZXY9YnVpbGRfYWxpYXMgOzsKKyAgLWJ1aWxkPSogfCAtLWJ1aWxkPSogfCAtLWJ1aWw9KiB8IC0tYnVpPSogfCAtLWJ1PSopCisgICAgYnVpbGRfYWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWxlIHwgLS1jYWNoZS1maWwgfCAtLWNhY2hlLWZpIFwKKyAgfCAtLWNhY2hlLWYgfCAtLWNhY2hlLSB8IC0tY2FjaGUgfCAtLWNhY2ggfCAtLWNhYyB8IC0tY2EgfCAtLWMpCisgICAgYWNfcHJldj1jYWNoZV9maWxlIDs7CisgIC1jYWNoZS1maWxlPSogfCAtLWNhY2hlLWZpbGU9KiB8IC0tY2FjaGUtZmlsPSogfCAtLWNhY2hlLWZpPSogXAorICB8IC0tY2FjaGUtZj0qIHwgLS1jYWNoZS09KiB8IC0tY2FjaGU9KiB8IC0tY2FjaD0qIHwgLS1jYWM9KiB8IC0tY2E9KiB8IC0tYz0qKQorICAgIGNhY2hlX2ZpbGU9JGFjX29wdGFyZyA7OworCisgIC0tY29uZmlnLWNhY2hlIHwgLUMpCisgICAgY2FjaGVfZmlsZT1jb25maWcuY2FjaGUgOzsKKworICAtZGF0YWRpciB8IC0tZGF0YWRpciB8IC0tZGF0YWRpIHwgLS1kYXRhZCkKKyAgICBhY19wcmV2PWRhdGFkaXIgOzsKKyAgLWRhdGFkaXI9KiB8IC0tZGF0YWRpcj0qIHwgLS1kYXRhZGk9KiB8IC0tZGF0YWQ9KikKKyAgICBkYXRhZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGF0YXJvb3RkaXIgfCAtLWRhdGFyb290ZGlyIHwgLS1kYXRhcm9vdGRpIHwgLS1kYXRhcm9vdGQgfCAtLWRhdGFyb290IFwKKyAgfCAtLWRhdGFyb28gfCAtLWRhdGFybyB8IC0tZGF0YXIpCisgICAgYWNfcHJldj1kYXRhcm9vdGRpciA7OworICAtZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaXI9KiB8IC0tZGF0YXJvb3RkaT0qIHwgLS1kYXRhcm9vdGQ9KiBcCisgIHwgLS1kYXRhcm9vdD0qIHwgLS1kYXRhcm9vPSogfCAtLWRhdGFybz0qIHwgLS1kYXRhcj0qKQorICAgIGRhdGFyb290ZGlyPSRhY19vcHRhcmcgOzsKKworICAtZGlzYWJsZS0qIHwgLS1kaXNhYmxlLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZGlzYWJsZS0kYWNfdXNlcm9wdF9vcmlnIgorCSBhY191bnJlY29nbml6ZWRfc2VwPScsICc7OworICAgIGVzYWMKKyAgICBldmFsIGVuYWJsZV8kYWNfdXNlcm9wdD1ubyA7OworCisgIC1kb2NkaXIgfCAtLWRvY2RpciB8IC0tZG9jZGkgfCAtLWRvYyB8IC0tZG8pCisgICAgYWNfcHJldj1kb2NkaXIgOzsKKyAgLWRvY2Rpcj0qIHwgLS1kb2NkaXI9KiB8IC0tZG9jZGk9KiB8IC0tZG9jPSogfCAtLWRvPSopCisgICAgZG9jZGlyPSRhY19vcHRhcmcgOzsKKworICAtZHZpZGlyIHwgLS1kdmlkaXIgfCAtLWR2aWRpIHwgLS1kdmlkIHwgLS1kdmkgfCAtLWR2KQorICAgIGFjX3ByZXY9ZHZpZGlyIDs7CisgIC1kdmlkaXI9KiB8IC0tZHZpZGlyPSogfCAtLWR2aWRpPSogfCAtLWR2aWQ9KiB8IC0tZHZpPSogfCAtLWR2PSopCisgICAgZHZpZGlyPSRhY19vcHRhcmcgOzsKKworICAtZW5hYmxlLSogfCAtLWVuYWJsZS0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSplbmFibGUtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJlbmFibGVfJGFjX3VzZXJvcHQiCisiKikgOzsKKyAgICAgICopIGFjX3VucmVjb2duaXplZF9vcHRzPSIkYWNfdW5yZWNvZ25pemVkX29wdHMkYWNfdW5yZWNvZ25pemVkX3NlcC0tZW5hYmxlLSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgZW5hYmxlXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CisKKyAgLWV4ZWMtcHJlZml4IHwgLS1leGVjX3ByZWZpeCB8IC0tZXhlYy1wcmVmaXggfCAtLWV4ZWMtcHJlZmkgXAorICB8IC0tZXhlYy1wcmVmIHwgLS1leGVjLXByZSB8IC0tZXhlYy1wciB8IC0tZXhlYy1wIHwgLS1leGVjLSBcCisgIHwgLS1leGVjIHwgLS1leGUgfCAtLWV4KQorICAgIGFjX3ByZXY9ZXhlY19wcmVmaXggOzsKKyAgLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWNfcHJlZml4PSogfCAtLWV4ZWMtcHJlZml4PSogfCAtLWV4ZWMtcHJlZmk9KiBcCisgIHwgLS1leGVjLXByZWY9KiB8IC0tZXhlYy1wcmU9KiB8IC0tZXhlYy1wcj0qIHwgLS1leGVjLXA9KiB8IC0tZXhlYy09KiBcCisgIHwgLS1leGVjPSogfCAtLWV4ZT0qIHwgLS1leD0qKQorICAgIGV4ZWNfcHJlZml4PSRhY19vcHRhcmcgOzsKKworICAtZ2FzIHwgLS1nYXMgfCAtLWdhIHwgLS1nKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGgtZ2FzLgorICAgIHdpdGhfZ2FzPXllcyA7OworCisgIC1oZWxwIHwgLS1oZWxwIHwgLS1oZWwgfCAtLWhlIHwgLWgpCisgICAgYWNfaW5pdF9oZWxwPWxvbmcgOzsKKyAgLWhlbHA9ciogfCAtLWhlbHA9ciogfCAtLWhlbD1yKiB8IC0taGU9ciogfCAtaHIqKQorICAgIGFjX2luaXRfaGVscD1yZWN1cnNpdmUgOzsKKyAgLWhlbHA9cyogfCAtLWhlbHA9cyogfCAtLWhlbD1zKiB8IC0taGU9cyogfCAtaHMqKQorICAgIGFjX2luaXRfaGVscD1zaG9ydCA7OworCisgIC1ob3N0IHwgLS1ob3N0IHwgLS1ob3MgfCAtLWhvKQorICAgIGFjX3ByZXY9aG9zdF9hbGlhcyA7OworICAtaG9zdD0qIHwgLS1ob3N0PSogfCAtLWhvcz0qIHwgLS1obz0qKQorICAgIGhvc3RfYWxpYXM9JGFjX29wdGFyZyA7OworCisgIC1odG1sZGlyIHwgLS1odG1sZGlyIHwgLS1odG1sZGkgfCAtLWh0bWxkIHwgLS1odG1sIHwgLS1odG0gfCAtLWh0KQorICAgIGFjX3ByZXY9aHRtbGRpciA7OworICAtaHRtbGRpcj0qIHwgLS1odG1sZGlyPSogfCAtLWh0bWxkaT0qIHwgLS1odG1sZD0qIHwgLS1odG1sPSogfCAtLWh0bT0qIFwKKyAgfCAtLWh0PSopCisgICAgaHRtbGRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaXIgfCAtLWluY2x1ZGVkaSB8IC0taW5jbHVkZWQgfCAtLWluY2x1ZGUgXAorICB8IC0taW5jbHVkIHwgLS1pbmNsdSB8IC0taW5jbCB8IC0taW5jKQorICAgIGFjX3ByZXY9aW5jbHVkZWRpciA7OworICAtaW5jbHVkZWRpcj0qIHwgLS1pbmNsdWRlZGlyPSogfCAtLWluY2x1ZGVkaT0qIHwgLS1pbmNsdWRlZD0qIHwgLS1pbmNsdWRlPSogXAorICB8IC0taW5jbHVkPSogfCAtLWluY2x1PSogfCAtLWluY2w9KiB8IC0taW5jPSopCisgICAgaW5jbHVkZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWluZm9kaXIgfCAtLWluZm9kaXIgfCAtLWluZm9kaSB8IC0taW5mb2QgfCAtLWluZm8gfCAtLWluZikKKyAgICBhY19wcmV2PWluZm9kaXIgOzsKKyAgLWluZm9kaXI9KiB8IC0taW5mb2Rpcj0qIHwgLS1pbmZvZGk9KiB8IC0taW5mb2Q9KiB8IC0taW5mbz0qIHwgLS1pbmY9KikKKyAgICBpbmZvZGlyPSRhY19vcHRhcmcgOzsKKworICAtbGliZGlyIHwgLS1saWJkaXIgfCAtLWxpYmRpIHwgLS1saWJkKQorICAgIGFjX3ByZXY9bGliZGlyIDs7CisgIC1saWJkaXI9KiB8IC0tbGliZGlyPSogfCAtLWxpYmRpPSogfCAtLWxpYmQ9KikKKyAgICBsaWJkaXI9JGFjX29wdGFyZyA7OworCisgIC1saWJleGVjZGlyIHwgLS1saWJleGVjZGlyIHwgLS1saWJleGVjZGkgfCAtLWxpYmV4ZWNkIHwgLS1saWJleGVjIFwKKyAgfCAtLWxpYmV4ZSB8IC0tbGliZXggfCAtLWxpYmUpCisgICAgYWNfcHJldj1saWJleGVjZGlyIDs7CisgIC1saWJleGVjZGlyPSogfCAtLWxpYmV4ZWNkaXI9KiB8IC0tbGliZXhlY2RpPSogfCAtLWxpYmV4ZWNkPSogfCAtLWxpYmV4ZWM9KiBcCisgIHwgLS1saWJleGU9KiB8IC0tbGliZXg9KiB8IC0tbGliZT0qKQorICAgIGxpYmV4ZWNkaXI9JGFjX29wdGFyZyA7OworCisgIC1sb2NhbGVkaXIgfCAtLWxvY2FsZWRpciB8IC0tbG9jYWxlZGkgfCAtLWxvY2FsZWQgfCAtLWxvY2FsZSkKKyAgICBhY19wcmV2PWxvY2FsZWRpciA7OworICAtbG9jYWxlZGlyPSogfCAtLWxvY2FsZWRpcj0qIHwgLS1sb2NhbGVkaT0qIHwgLS1sb2NhbGVkPSogfCAtLWxvY2FsZT0qKQorICAgIGxvY2FsZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaXIgfCAtLWxvY2Fsc3RhdGVkaSB8IC0tbG9jYWxzdGF0ZWQgXAorICB8IC0tbG9jYWxzdGF0ZSB8IC0tbG9jYWxzdGF0IHwgLS1sb2NhbHN0YSB8IC0tbG9jYWxzdCB8IC0tbG9jYWxzKQorICAgIGFjX3ByZXY9bG9jYWxzdGF0ZWRpciA7OworICAtbG9jYWxzdGF0ZWRpcj0qIHwgLS1sb2NhbHN0YXRlZGlyPSogfCAtLWxvY2Fsc3RhdGVkaT0qIHwgLS1sb2NhbHN0YXRlZD0qIFwKKyAgfCAtLWxvY2Fsc3RhdGU9KiB8IC0tbG9jYWxzdGF0PSogfCAtLWxvY2Fsc3RhPSogfCAtLWxvY2Fsc3Q9KiB8IC0tbG9jYWxzPSopCisgICAgbG9jYWxzdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLW1hbmRpciB8IC0tbWFuZGlyIHwgLS1tYW5kaSB8IC0tbWFuZCB8IC0tbWFuIHwgLS1tYSB8IC0tbSkKKyAgICBhY19wcmV2PW1hbmRpciA7OworICAtbWFuZGlyPSogfCAtLW1hbmRpcj0qIHwgLS1tYW5kaT0qIHwgLS1tYW5kPSogfCAtLW1hbj0qIHwgLS1tYT0qIHwgLS1tPSopCisgICAgbWFuZGlyPSRhY19vcHRhcmcgOzsKKworICAtbmZwIHwgLS1uZnAgfCAtLW5mKQorICAgICMgT2Jzb2xldGU7IHVzZSAtLXdpdGhvdXQtZnAuCisgICAgd2l0aF9mcD1ubyA7OworCisgIC1uby1jcmVhdGUgfCAtLW5vLWNyZWF0ZSB8IC0tbm8tY3JlYXQgfCAtLW5vLWNyZWEgfCAtLW5vLWNyZSBcCisgIHwgLS1uby1jciB8IC0tbm8tYyB8IC1uKQorICAgIG5vX2NyZWF0ZT15ZXMgOzsKKworICAtbm8tcmVjdXJzaW9uIHwgLS1uby1yZWN1cnNpb24gfCAtLW5vLXJlY3Vyc2lvIHwgLS1uby1yZWN1cnNpIFwKKyAgfCAtLW5vLXJlY3VycyB8IC0tbm8tcmVjdXIgfCAtLW5vLXJlY3UgfCAtLW5vLXJlYyB8IC0tbm8tcmUgfCAtLW5vLXIpCisgICAgbm9fcmVjdXJzaW9uPXllcyA7OworCisgIC1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGlyIHwgLS1vbGRpbmNsdWRlZGkgfCAtLW9sZGluY2x1ZGVkIFwKKyAgfCAtLW9sZGluY2x1ZGUgfCAtLW9sZGluY2x1ZCB8IC0tb2xkaW5jbHUgfCAtLW9sZGluY2wgfCAtLW9sZGluYyBcCisgIHwgLS1vbGRpbiB8IC0tb2xkaSB8IC0tb2xkIHwgLS1vbCB8IC0tbykKKyAgICBhY19wcmV2PW9sZGluY2x1ZGVkaXIgOzsKKyAgLW9sZGluY2x1ZGVkaXI9KiB8IC0tb2xkaW5jbHVkZWRpcj0qIHwgLS1vbGRpbmNsdWRlZGk9KiB8IC0tb2xkaW5jbHVkZWQ9KiBcCisgIHwgLS1vbGRpbmNsdWRlPSogfCAtLW9sZGluY2x1ZD0qIHwgLS1vbGRpbmNsdT0qIHwgLS1vbGRpbmNsPSogfCAtLW9sZGluYz0qIFwKKyAgfCAtLW9sZGluPSogfCAtLW9sZGk9KiB8IC0tb2xkPSogfCAtLW9sPSogfCAtLW89KikKKyAgICBvbGRpbmNsdWRlZGlyPSRhY19vcHRhcmcgOzsKKworICAtcHJlZml4IHwgLS1wcmVmaXggfCAtLXByZWZpIHwgLS1wcmVmIHwgLS1wcmUgfCAtLXByIHwgLS1wKQorICAgIGFjX3ByZXY9cHJlZml4IDs7CisgIC1wcmVmaXg9KiB8IC0tcHJlZml4PSogfCAtLXByZWZpPSogfCAtLXByZWY9KiB8IC0tcHJlPSogfCAtLXByPSogfCAtLXA9KikKKyAgICBwcmVmaXg9JGFjX29wdGFyZyA7OworCisgIC1wcm9ncmFtLXByZWZpeCB8IC0tcHJvZ3JhbS1wcmVmaXggfCAtLXByb2dyYW0tcHJlZmkgfCAtLXByb2dyYW0tcHJlZiBcCisgIHwgLS1wcm9ncmFtLXByZSB8IC0tcHJvZ3JhbS1wciB8IC0tcHJvZ3JhbS1wKQorICAgIGFjX3ByZXY9cHJvZ3JhbV9wcmVmaXggOzsKKyAgLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZml4PSogfCAtLXByb2dyYW0tcHJlZmk9KiBcCisgIHwgLS1wcm9ncmFtLXByZWY9KiB8IC0tcHJvZ3JhbS1wcmU9KiB8IC0tcHJvZ3JhbS1wcj0qIHwgLS1wcm9ncmFtLXA9KikKKyAgICBwcm9ncmFtX3ByZWZpeD0kYWNfb3B0YXJnIDs7CisKKyAgLXByb2dyYW0tc3VmZml4IHwgLS1wcm9ncmFtLXN1ZmZpeCB8IC0tcHJvZ3JhbS1zdWZmaSB8IC0tcHJvZ3JhbS1zdWZmIFwKKyAgfCAtLXByb2dyYW0tc3VmIHwgLS1wcm9ncmFtLXN1IHwgLS1wcm9ncmFtLXMpCisgICAgYWNfcHJldj1wcm9ncmFtX3N1ZmZpeCA7OworICAtcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaXg9KiB8IC0tcHJvZ3JhbS1zdWZmaT0qIFwKKyAgfCAtLXByb2dyYW0tc3VmZj0qIHwgLS1wcm9ncmFtLXN1Zj0qIHwgLS1wcm9ncmFtLXN1PSogfCAtLXByb2dyYW0tcz0qKQorICAgIHByb2dyYW1fc3VmZml4PSRhY19vcHRhcmcgOzsKKworICAtcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYW0gfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW4gfCAtLXByb2dyYW0tdHJhbnNmb3JtLSBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm9ybSB8IC0tcHJvZ3JhbS10cmFuc2ZvciBcCisgIHwgLS1wcm9ncmFtLXRyYW5zZm8gfCAtLXByb2dyYW0tdHJhbnNmIFwKKyAgfCAtLXByb2dyYW0tdHJhbnMgfCAtLXByb2dyYW0tdHJhbiBcCisgIHwgLS1wcm9nci10cmEgfCAtLXByb2dyYW0tdHIgfCAtLXByb2dyYW0tdCkKKyAgICBhY19wcmV2PXByb2dyYW1fdHJhbnNmb3JtX25hbWUgOzsKKyAgLXByb2dyYW0tdHJhbnNmb3JtLW5hbWU9KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW5hbT0qIHwgLS1wcm9ncmFtLXRyYW5zZm9ybS1uYT0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmb3JtLW49KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcm0tPSogXAorICB8IC0tcHJvZ3JhbS10cmFuc2Zvcm09KiB8IC0tcHJvZ3JhbS10cmFuc2Zvcj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnNmbz0qIHwgLS1wcm9ncmFtLXRyYW5zZj0qIFwKKyAgfCAtLXByb2dyYW0tdHJhbnM9KiB8IC0tcHJvZ3JhbS10cmFuPSogXAorICB8IC0tcHJvZ3ItdHJhPSogfCAtLXByb2dyYW0tdHI9KiB8IC0tcHJvZ3JhbS10PSopCisgICAgcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZT0kYWNfb3B0YXJnIDs7CisKKyAgLXBkZmRpciB8IC0tcGRmZGlyIHwgLS1wZGZkaSB8IC0tcGRmZCB8IC0tcGRmIHwgLS1wZCkKKyAgICBhY19wcmV2PXBkZmRpciA7OworICAtcGRmZGlyPSogfCAtLXBkZmRpcj0qIHwgLS1wZGZkaT0qIHwgLS1wZGZkPSogfCAtLXBkZj0qIHwgLS1wZD0qKQorICAgIHBkZmRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXBzZGlyIHwgLS1wc2RpciB8IC0tcHNkaSB8IC0tcHNkIHwgLS1wcykKKyAgICBhY19wcmV2PXBzZGlyIDs7CisgIC1wc2Rpcj0qIHwgLS1wc2Rpcj0qIHwgLS1wc2RpPSogfCAtLXBzZD0qIHwgLS1wcz0qKQorICAgIHBzZGlyPSRhY19vcHRhcmcgOzsKKworICAtcSB8IC1xdWlldCB8IC0tcXVpZXQgfCAtLXF1aWUgfCAtLXF1aSB8IC0tcXUgfCAtLXEgXAorICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICBzaWxlbnQ9eWVzIDs7CisKKyAgLXJ1bnN0YXRlZGlyIHwgLS1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaSB8IC0tcnVuc3RhdGVkIFwKKyAgfCAtLXJ1bnN0YXRlIHwgLS1ydW5zdGF0IHwgLS1ydW5zdGEgfCAtLXJ1bnN0IHwgLS1ydW5zIFwKKyAgfCAtLXJ1biB8IC0tcnUgfCAtLXIpCisgICAgYWNfcHJldj1ydW5zdGF0ZWRpciA7OworICAtcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaXI9KiB8IC0tcnVuc3RhdGVkaT0qIHwgLS1ydW5zdGF0ZWQ9KiBcCisgIHwgLS1ydW5zdGF0ZT0qIHwgLS1ydW5zdGF0PSogfCAtLXJ1bnN0YT0qIHwgLS1ydW5zdD0qIHwgLS1ydW5zPSogXAorICB8IC0tcnVuPSogfCAtLXJ1PSogfCAtLXI9KikKKyAgICBydW5zdGF0ZWRpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXNiaW5kaXIgfCAtLXNiaW5kaXIgfCAtLXNiaW5kaSB8IC0tc2JpbmQgfCAtLXNiaW4gfCAtLXNiaSB8IC0tc2IpCisgICAgYWNfcHJldj1zYmluZGlyIDs7CisgIC1zYmluZGlyPSogfCAtLXNiaW5kaXI9KiB8IC0tc2JpbmRpPSogfCAtLXNiaW5kPSogfCAtLXNiaW49KiBcCisgIHwgLS1zYmk9KiB8IC0tc2I9KikKKyAgICBzYmluZGlyPSRhY19vcHRhcmcgOzsKKworICAtc2hhcmVkc3RhdGVkaXIgfCAtLXNoYXJlZHN0YXRlZGlyIHwgLS1zaGFyZWRzdGF0ZWRpIFwKKyAgfCAtLXNoYXJlZHN0YXRlZCB8IC0tc2hhcmVkc3RhdGUgfCAtLXNoYXJlZHN0YXQgfCAtLXNoYXJlZHN0YSBcCisgIHwgLS1zaGFyZWRzdCB8IC0tc2hhcmVkcyB8IC0tc2hhcmVkIHwgLS1zaGFyZSB8IC0tc2hhciBcCisgIHwgLS1zaGEgfCAtLXNoKQorICAgIGFjX3ByZXY9c2hhcmVkc3RhdGVkaXIgOzsKKyAgLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGlyPSogfCAtLXNoYXJlZHN0YXRlZGk9KiBcCisgIHwgLS1zaGFyZWRzdGF0ZWQ9KiB8IC0tc2hhcmVkc3RhdGU9KiB8IC0tc2hhcmVkc3RhdD0qIHwgLS1zaGFyZWRzdGE9KiBcCisgIHwgLS1zaGFyZWRzdD0qIHwgLS1zaGFyZWRzPSogfCAtLXNoYXJlZD0qIHwgLS1zaGFyZT0qIHwgLS1zaGFyPSogXAorICB8IC0tc2hhPSogfCAtLXNoPSopCisgICAgc2hhcmVkc3RhdGVkaXI9JGFjX29wdGFyZyA7OworCisgIC1zaXRlIHwgLS1zaXRlIHwgLS1zaXQpCisgICAgYWNfcHJldj1zaXRlIDs7CisgIC1zaXRlPSogfCAtLXNpdGU9KiB8IC0tc2l0PSopCisgICAgc2l0ZT0kYWNfb3B0YXJnIDs7CisKKyAgLXNyY2RpciB8IC0tc3JjZGlyIHwgLS1zcmNkaSB8IC0tc3JjZCB8IC0tc3JjIHwgLS1zcikKKyAgICBhY19wcmV2PXNyY2RpciA7OworICAtc3JjZGlyPSogfCAtLXNyY2Rpcj0qIHwgLS1zcmNkaT0qIHwgLS1zcmNkPSogfCAtLXNyYz0qIHwgLS1zcj0qKQorICAgIHNyY2Rpcj0kYWNfb3B0YXJnIDs7CisKKyAgLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaXIgfCAtLXN5c2NvbmZkaSB8IC0tc3lzY29uZmQgfCAtLXN5c2NvbmYgXAorICB8IC0tc3lzY29uIHwgLS1zeXNjbyB8IC0tc3lzYyB8IC0tc3lzIHwgLS1zeSkKKyAgICBhY19wcmV2PXN5c2NvbmZkaXIgOzsKKyAgLXN5c2NvbmZkaXI9KiB8IC0tc3lzY29uZmRpcj0qIHwgLS1zeXNjb25mZGk9KiB8IC0tc3lzY29uZmQ9KiB8IC0tc3lzY29uZj0qIFwKKyAgfCAtLXN5c2Nvbj0qIHwgLS1zeXNjbz0qIHwgLS1zeXNjPSogfCAtLXN5cz0qIHwgLS1zeT0qKQorICAgIHN5c2NvbmZkaXI9JGFjX29wdGFyZyA7OworCisgIC10YXJnZXQgfCAtLXRhcmdldCB8IC0tdGFyZ2UgfCAtLXRhcmcgfCAtLXRhciB8IC0tdGEgfCAtLXQpCisgICAgYWNfcHJldj10YXJnZXRfYWxpYXMgOzsKKyAgLXRhcmdldD0qIHwgLS10YXJnZXQ9KiB8IC0tdGFyZ2U9KiB8IC0tdGFyZz0qIHwgLS10YXI9KiB8IC0tdGE9KiB8IC0tdD0qKQorICAgIHRhcmdldF9hbGlhcz0kYWNfb3B0YXJnIDs7CisKKyAgLXYgfCAtdmVyYm9zZSB8IC0tdmVyYm9zZSB8IC0tdmVyYm9zIHwgLS12ZXJibyB8IC0tdmVyYikKKyAgICB2ZXJib3NlPXllcyA7OworCisgIC12ZXJzaW9uIHwgLS12ZXJzaW9uIHwgLS12ZXJzaW8gfCAtLXZlcnNpIHwgLS12ZXJzIHwgLVYpCisgICAgYWNfaW5pdF92ZXJzaW9uPTogOzsKKworICAtd2l0aC0qIHwgLS13aXRoLSopCisgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKndpdGgtXChbXj1dKlwpJ2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHBhY2thZ2UgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgYWNfdXNlcm9wdF9vcmlnPSRhY191c2Vyb3B0CisgICAgYWNfdXNlcm9wdD1gJGFzX2VjaG8gIiRhY191c2Vyb3B0IiB8IHNlZCAncy9bLSsuXS9fL2cnYAorICAgIGNhc2UgJGFjX3VzZXJfb3B0cyBpbgorICAgICAgKiIKKyJ3aXRoXyRhY191c2Vyb3B0IgorIiopIDs7CisgICAgICAqKSBhY191bnJlY29nbml6ZWRfb3B0cz0iJGFjX3VucmVjb2duaXplZF9vcHRzJGFjX3VucmVjb2duaXplZF9zZXAtLXdpdGgtJGFjX3VzZXJvcHRfb3JpZyIKKwkgYWNfdW5yZWNvZ25pemVkX3NlcD0nLCAnOzsKKyAgICBlc2FjCisgICAgZXZhbCB3aXRoXyRhY191c2Vyb3B0PVwkYWNfb3B0YXJnIDs7CisKKyAgLXdpdGhvdXQtKiB8IC0td2l0aG91dC0qKQorICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCisgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgorICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAorICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKKyAgICBjYXNlICRhY191c2VyX29wdHMgaW4KKyAgICAgICoiCisid2l0aF8kYWNfdXNlcm9wdCIKKyIqKSA7OworICAgICAgKikgYWNfdW5yZWNvZ25pemVkX29wdHM9IiRhY191bnJlY29nbml6ZWRfb3B0cyRhY191bnJlY29nbml6ZWRfc2VwLS13aXRob3V0LSRhY191c2Vyb3B0X29yaWciCisJIGFjX3VucmVjb2duaXplZF9zZXA9JywgJzs7CisgICAgZXNhYworICAgIGV2YWwgd2l0aF8kYWNfdXNlcm9wdD1ubyA7OworCisgIC0teCkKKyAgICAjIE9ic29sZXRlOyB1c2UgLS13aXRoLXguCisgICAgd2l0aF94PXllcyA7OworCisgIC14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGVzIHwgLS14LWluY2x1ZGUgfCAtLXgtaW5jbHVkIHwgLS14LWluY2x1IFwKKyAgfCAtLXgtaW5jbCB8IC0teC1pbmMgfCAtLXgtaW4gfCAtLXgtaSkKKyAgICBhY19wcmV2PXhfaW5jbHVkZXMgOzsKKyAgLXgtaW5jbHVkZXM9KiB8IC0teC1pbmNsdWRlcz0qIHwgLS14LWluY2x1ZGU9KiB8IC0teC1pbmNsdWQ9KiB8IC0teC1pbmNsdT0qIFwKKyAgfCAtLXgtaW5jbD0qIHwgLS14LWluYz0qIHwgLS14LWluPSogfCAtLXgtaT0qKQorICAgIHhfaW5jbHVkZXM9JGFjX29wdGFyZyA7OworCisgIC14LWxpYnJhcmllcyB8IC0teC1saWJyYXJpZXMgfCAtLXgtbGlicmFyaWUgfCAtLXgtbGlicmFyaSBcCisgIHwgLS14LWxpYnJhciB8IC0teC1saWJyYSB8IC0teC1saWJyIHwgLS14LWxpYiB8IC0teC1saSB8IC0teC1sKQorICAgIGFjX3ByZXY9eF9saWJyYXJpZXMgOzsKKyAgLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWVzPSogfCAtLXgtbGlicmFyaWU9KiB8IC0teC1saWJyYXJpPSogXAorICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKKyAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7CisKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgorICAgIDs7CisKKyAgKj0qKQorICAgIGFjX2VudnZhcj1gZXhwciAieCRhY19vcHRpb24iIDogJ3hcKFtePV0qXCk9J2AKKyAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCisgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCisgICAgICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgIGVzYWMKKyAgICBldmFsICRhY19lbnZ2YXI9XCRhY19vcHRhcmcKKyAgICBleHBvcnQgJGFjX2VudnZhciA7OworCisgICopCisgICAgIyBGSVhNRTogc2hvdWxkIGJlIHJlbW92ZWQgaW4gYXV0b2NvbmYgMy4wLgorICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdSBzaG91bGQgdXNlIC0tYnVpbGQsIC0taG9zdCwgLS10YXJnZXQiID4mMgorICAgIGV4cHIgIngkYWNfb3B0aW9uIiA6ICIuKlteLS5fJGFzX2NyX2FsbnVtXSIgPi9kZXYvbnVsbCAmJgorICAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaW52YWxpZCBob3N0IHR5cGU6ICRhY19vcHRpb24iID4mMgorICAgIDogIiR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259IgorICAgIDs7CisKKyAgZXNhYworZG9uZQorCitpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKyAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAorICBhc19mbl9lcnJvciAkPyAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbgorICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNraW5nIGluCisgICAgbm8pIDs7CisgICAgZmF0YWwpIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA7OworICAgICopICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA+JjIgOzsKKyAgZXNhYworZmkKKworIyBDaGVjayBhbGwgZGlyZWN0b3J5IGFyZ3VtZW50cyBmb3IgY29uc2lzdGVuY3kuCitmb3IgYWNfdmFyIGluCWV4ZWNfcHJlZml4IHByZWZpeCBiaW5kaXIgc2JpbmRpciBsaWJleGVjZGlyIGRhdGFyb290ZGlyIFwKKwkJZGF0YWRpciBzeXNjb25mZGlyIHNoYXJlZHN0YXRlZGlyIGxvY2Fsc3RhdGVkaXIgaW5jbHVkZWRpciBcCisJCW9sZGluY2x1ZGVkaXIgZG9jZGlyIGluZm9kaXIgaHRtbGRpciBkdmlkaXIgcGRmZGlyIHBzZGlyIFwKKwkJbGliZGlyIGxvY2FsZWRpciBtYW5kaXIgcnVuc3RhdGVkaXIKK2RvCisgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAjIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLgorICBjYXNlICRhY192YWwgaW4KKyAgICAqLyApCisgICAgICBhY192YWw9YGV4cHIgIlgkYWNfdmFsIiA6ICdYXCguKlteL11cKScgXHwgIlgkYWNfdmFsIiA6ICdYXCguKlwpJ2AKKyAgICAgIGV2YWwgJGFjX3Zhcj1cJGFjX3ZhbDs7CisgIGVzYWMKKyAgIyBCZSBzdXJlIHRvIGhhdmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWVzLgorICBjYXNlICRhY192YWwgaW4KKyAgICBbXFwvJF0qIHwgPzpbXFwvXSogKSAgY29udGludWU7OworICAgIE5PTkUgfCAnJyApIGNhc2UgJGFjX3ZhciBpbiAqcHJlZml4ICkgY29udGludWU7OyBlc2FjOzsKKyAgZXNhYworICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKK2RvbmUKKworIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JworIyB1c2VkIHRvIGhvbGQgdGhlIGFyZ3VtZW50IG9mIC0taG9zdCBldGMuCisjIEZJWE1FOiBUbyByZW1vdmUgc29tZSBkYXkuCitidWlsZD0kYnVpbGRfYWxpYXMKK2hvc3Q9JGhvc3RfYWxpYXMKK3RhcmdldD0kdGFyZ2V0X2FsaWFzCisKKyMgRklYTUU6IFRvIHJlbW92ZSBzb21lIGRheS4KK2lmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgorICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KKyAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKKyAgZWxpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiAhPSAieCRob3N0X2FsaWFzIjsgdGhlbgorICAgIGNyb3NzX2NvbXBpbGluZz15ZXMKKyAgZmkKK2ZpCisKK2FjX3Rvb2xfcHJlZml4PQordGVzdCAtbiAiJGhvc3RfYWxpYXMiICYmIGFjX3Rvb2xfcHJlZml4PSRob3N0X2FsaWFzLQorCit0ZXN0ICIkc2lsZW50IiA9IHllcyAmJiBleGVjIDY+L2Rldi9udWxsCisKKworYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmCithY19sc19kaT1gbHMgLWRpIC5gICYmCithY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAgfHwKKyAgYXNfZm5fZXJyb3IgJD8gIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgordGVzdCAiWCRhY19sc19kaSIgPSAiWCRhY19wd2RfbHNfZGkiIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJwd2QgZG9lcyBub3QgcmVwb3J0IG5hbWUgb2Ygd29ya2luZyBkaXJlY3RvcnkiCisKKworIyBGaW5kIHRoZSBzb3VyY2UgZmlsZXMsIGlmIGxvY2F0aW9uIHdhcyBub3Qgc3BlY2lmaWVkLgoraWYgdGVzdCAteiAiJHNyY2RpciI7IHRoZW4KKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD15ZXMKKyAgIyBUcnkgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoaXMgc2NyaXB0LCB0aGVuIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgorICBhY19jb25mZGlyPWAkYXNfZGlybmFtZSAtLSAiJGFzX215c2VsZiIgfHwKKyRhc19leHByIFgiJGFzX215c2VsZiIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYXNfbXlzZWxmIiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSBYIiRhc19teXNlbGYiIDogJ1hcKC8vXCkkJyBcfCBcCisJIFgiJGFzX215c2VsZiIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhc19teXNlbGYiIHwKKyAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXClbXi9dLioveworCSAgICBzLy9cMS8KKwkgICAgcQorCSAgfQorCSAgL15YXChcL1wvXCkkL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorICBzcmNkaXI9JGFjX2NvbmZkaXIKKyAgaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KKyAgICBzcmNkaXI9Li4KKyAgZmkKK2Vsc2UKKyAgYWNfc3JjZGlyX2RlZmF1bHRlZD1ubworZmkKK2lmIHRlc3QgISAtciAiJHNyY2Rpci8kYWNfdW5pcXVlX2ZpbGUiOyB0aGVuCisgIHRlc3QgIiRhY19zcmNkaXJfZGVmYXVsdGVkIiA9IHllcyAmJiBzcmNkaXI9IiRhY19jb25mZGlyIG9yIC4uIgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGZpbmQgc291cmNlcyAoJGFjX3VuaXF1ZV9maWxlKSBpbiAkc3JjZGlyIgorZmkKK2FjX21zZz0ic291cmNlcyBhcmUgaW4gJHNyY2RpciwgYnV0IFxgY2QgJHNyY2RpcicgZG9lcyBub3Qgd29yayIKK2FjX2Fic19jb25mZGlyPWAoCisJY2QgIiRzcmNkaXIiICYmIHRlc3QgLXIgIi4vJGFjX3VuaXF1ZV9maWxlIiB8fCBhc19mbl9lcnJvciAkPyAiJGFjX21zZyIKKwlwd2QpYAorIyBXaGVuIGJ1aWxkaW5nIGluIHBsYWNlLCBzZXQgc3JjZGlyPS4KK2lmIHRlc3QgIiRhY19hYnNfY29uZmRpciIgPSAiJGFjX3B3ZCI7IHRoZW4KKyAgc3JjZGlyPS4KK2ZpCisjIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmFpbGluZyBzbGFzaGVzIGZyb20gc3JjZGlyLgorIyBEb3VibGUgc2xhc2hlcyBpbiBmaWxlIG5hbWVzIGluIG9iamVjdCBmaWxlIGRlYnVnZ2luZyBpbmZvCisjIG1lc3MgdXAgTS14IGdkYiBpbiBFbWFjcy4KK2Nhc2UgJHNyY2RpciBpbgorKi8pIHNyY2Rpcj1gZXhwciAiWCRzcmNkaXIiIDogJ1hcKC4qW14vXVwpJyBcfCAiWCRzcmNkaXIiIDogJ1hcKC4qXCknYDs7Citlc2FjCitmb3IgYWNfdmFyIGluICRhY19wcmVjaW91c192YXJzOyBkbworICBldmFsIGFjX2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9CisgIGV2YWwgYWNfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQorICBldmFsIGFjX2N2X2Vudl8ke2FjX3Zhcn1fc2V0PVwkeyR7YWNfdmFyfStzZXR9CisgIGV2YWwgYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZT1cJCR7YWNfdmFyfQorZG9uZQorCisjCisjIFJlcG9ydCB0aGUgLS1oZWxwIG1lc3NhZ2UuCisjCitpZiB0ZXN0ICIkYWNfaW5pdF9oZWxwIiA9ICJsb25nIjsgdGhlbgorICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KKyAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgorICBjYXQgPDxfQUNFT0YKK1xgY29uZmlndXJlJyBjb25maWd1cmVzIHRoaXMgcGFja2FnZSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCisKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgorCitUbyBhc3NpZ24gZW52aXJvbm1lbnQgdmFyaWFibGVzIChlLmcuLCBDQywgQ0ZMQUdTLi4uKSwgc3BlY2lmeSB0aGVtIGFzCitWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRoZSB1c2VmdWwgdmFyaWFibGVzLgorCitEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNpZmllZCBpbiBicmFja2V0cy4KKworQ29uZmlndXJhdGlvbjoKKyAgLWgsIC0taGVscCAgICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgICAgIC0taGVscD1zaG9ydCAgICAgICAgZGlzcGxheSBvcHRpb25zIHNwZWNpZmljIHRvIHRoaXMgcGFja2FnZQorICAgICAgLS1oZWxwPXJlY3Vyc2l2ZSAgICBkaXNwbGF5IHRoZSBzaG9ydCBoZWxwIG9mIGFsbCB0aGUgaW5jbHVkZWQgcGFja2FnZXMKKyAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAgZGlzcGxheSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKKyAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQorICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJworICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcworICAgICAgLS1zcmNkaXI9RElSICAgICAgICBmaW5kIHRoZSBzb3VyY2VzIGluIERJUiBbY29uZmlndXJlIGRpciBvciBcYC4uJ10KKworSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLXByZWZpeD1QUkVGSVggICAgICAgICBpbnN0YWxsIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcyBpbiBQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRhY19kZWZhdWx0X3ByZWZpeF0KKyAgLS1leGVjLXByZWZpeD1FUFJFRklYICAgaW5zdGFsbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIGluIEVQUkVGSVgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW1BSRUZJWF0KKworQnkgZGVmYXVsdCwgXGBtYWtlIGluc3RhbGwnIHdpbGwgaW5zdGFsbCBhbGwgdGhlIGZpbGVzIGluCitcYCRhY19kZWZhdWx0X3ByZWZpeC9iaW4nLCBcYCRhY19kZWZhdWx0X3ByZWZpeC9saWInIGV0Yy4gIFlvdSBjYW4gc3BlY2lmeQorYW4gaW5zdGFsbGF0aW9uIHByZWZpeCBvdGhlciB0aGFuIFxgJGFjX2RlZmF1bHRfcHJlZml4JyB1c2luZyBcYC0tcHJlZml4JywKK2ZvciBpbnN0YW5jZSBcYC0tcHJlZml4PVwkSE9NRScuCisKK0ZvciBiZXR0ZXIgY29udHJvbCwgdXNlIHRoZSBvcHRpb25zIGJlbG93LgorCitGaW5lIHR1bmluZyBvZiB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzOgorICAtLWJpbmRpcj1ESVIgICAgICAgICAgICB1c2VyIGV4ZWN1dGFibGVzIFtFUFJFRklYL2Jpbl0KKyAgLS1zYmluZGlyPURJUiAgICAgICAgICAgc3lzdGVtIGFkbWluIGV4ZWN1dGFibGVzIFtFUFJFRklYL3NiaW5dCisgIC0tbGliZXhlY2Rpcj1ESVIgICAgICAgIHByb2dyYW0gZXhlY3V0YWJsZXMgW0VQUkVGSVgvbGliZXhlY10KKyAgLS1zeXNjb25mZGlyPURJUiAgICAgICAgcmVhZC1vbmx5IHNpbmdsZS1tYWNoaW5lIGRhdGEgW1BSRUZJWC9ldGNdCisgIC0tc2hhcmVkc3RhdGVkaXI9RElSICAgIG1vZGlmaWFibGUgYXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IGRhdGEgW1BSRUZJWC9jb21dCisgIC0tbG9jYWxzdGF0ZWRpcj1ESVIgICAgIG1vZGlmaWFibGUgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL3Zhcl0KKyAgLS1ydW5zdGF0ZWRpcj1ESVIgICAgICAgbW9kaWZpYWJsZSBwZXItcHJvY2VzcyBkYXRhIFtMT0NBTFNUQVRFRElSL3J1bl0KKyAgLS1saWJkaXI9RElSICAgICAgICAgICAgb2JqZWN0IGNvZGUgbGlicmFyaWVzIFtFUFJFRklYL2xpYl0KKyAgLS1pbmNsdWRlZGlyPURJUiAgICAgICAgQyBoZWFkZXIgZmlsZXMgW1BSRUZJWC9pbmNsdWRlXQorICAtLW9sZGluY2x1ZGVkaXI9RElSICAgICBDIGhlYWRlciBmaWxlcyBmb3Igbm9uLWdjYyBbL3Vzci9pbmNsdWRlXQorICAtLWRhdGFyb290ZGlyPURJUiAgICAgICByZWFkLW9ubHkgYXJjaC4taW5kZXBlbmRlbnQgZGF0YSByb290IFtQUkVGSVgvc2hhcmVdCisgIC0tZGF0YWRpcj1ESVIgICAgICAgICAgIHJlYWQtb25seSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbREFUQVJPT1RESVJdCisgIC0taW5mb2Rpcj1ESVIgICAgICAgICAgIGluZm8gZG9jdW1lbnRhdGlvbiBbREFUQVJPT1RESVIvaW5mb10KKyAgLS1sb2NhbGVkaXI9RElSICAgICAgICAgbG9jYWxlLWRlcGVuZGVudCBkYXRhIFtEQVRBUk9PVERJUi9sb2NhbGVdCisgIC0tbWFuZGlyPURJUiAgICAgICAgICAgIG1hbiBkb2N1bWVudGF0aW9uIFtEQVRBUk9PVERJUi9tYW5dCisgIC0tZG9jZGlyPURJUiAgICAgICAgICAgIGRvY3VtZW50YXRpb24gcm9vdCBbREFUQVJPT1RESVIvZG9jL1BBQ0tBR0VdCisgIC0taHRtbGRpcj1ESVIgICAgICAgICAgIGh0bWwgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLWR2aWRpcj1ESVIgICAgICAgICAgICBkdmkgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLXBkZmRpcj1ESVIgICAgICAgICAgICBwZGYgZG9jdW1lbnRhdGlvbiBbRE9DRElSXQorICAtLXBzZGlyPURJUiAgICAgICAgICAgICBwcyBkb2N1bWVudGF0aW9uIFtET0NESVJdCitfQUNFT0YKKworICBjYXQgPDxcX0FDRU9GCisKK1N5c3RlbSB0eXBlczoKKyAgLS1idWlsZD1CVUlMRCAgICAgY29uZmlndXJlIGZvciBidWlsZGluZyBvbiBCVUlMRCBbZ3Vlc3NlZF0KKyAgLS1ob3N0PUhPU1QgICAgICAgY3Jvc3MtY29tcGlsZSB0byBidWlsZCBwcm9ncmFtcyB0byBydW4gb24gSE9TVCBbQlVJTERdCitfQUNFT0YKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiOyB0aGVuCisKKyAgY2F0IDw8XF9BQ0VPRgorCitPcHRpb25hbCBGZWF0dXJlczoKKyAgLS1kaXNhYmxlLW9wdGlvbi1jaGVja2luZyAgaWdub3JlIHVucmVjb2duaXplZCAtLWVuYWJsZS8tLXdpdGggb3B0aW9ucworICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCisgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIGVuYWJsZSBtYWtlZmlsZSBydWxlcyB1c2VmdWwgZm9yIG1haW50YWluZXJzCisgIC0tZW5hYmxlLXN5bWxpbmstaW5zdGFsbCB1c2Ugc3ltbGlua3Mgd2hlbiBpbnN0YWxsaW5nIGluc3RlYWQgb2YgaGFyZCBsaW5rcworICAtLWVuYWJsZS1yZWxhdGl2ZS1zeW1saW5rcyB1c2UgcmVsYXRpdmUgc3ltbGlua3Mgd2hlbiBpbnN0YWxsaW5nCisKKyAgLS1lbmFibGUtc3ltbGluay1idWlsZCAgdXNlIHN5bWxpbmtzIHdoaWxlIGJ1aWxkaW5nIGluc3RlYWQgb2YgaGFyZCBsaW5rcworICAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIGVuYWJsZSB2ZXJib3NlIG1ha2UgY29tbWFuZCBvdXRwdXQKKyAgLS1lbmFibGUtZWxmLXNobGlicwkgIHNlbGVjdCBFTEYgc2hhcmVkIGxpYnJhcmllcworICAtLWVuYWJsZS1ic2Qtc2hsaWJzCSAgc2VsZWN0IEJTRCBzaGFyZWQgbGlicmFyaWVzCisgIC0tZW5hYmxlLXByb2ZpbGUJICBidWlsZCBwcm9maWxpbmcgbGlicmFyaWVzCisgIC0tZW5hYmxlLWdjb3YJICAJICBidWlsZCBmb3IgY292ZXJhZ2UgdGVzdGluZyB1c2luZyBnY292CisgIC0tZW5hYmxlLWhhcmRlbmluZwkgIAkgIGJ1aWxkIGZvciBjb3ZlcmFnZSB0ZXN0aW5nIHVzaW5nIGdjb3YKKyAgLS1lbmFibGUtamJkLWRlYnVnICAJICBlbmFibGUgam91cm5hbCBkZWJ1Z2dpbmcKKyAgLS1lbmFibGUtYmxraWQtZGVidWcgICAgZW5hYmxlIGJsa2lkIGRlYnVnZ2luZworICAtLWRpc2FibGUtdGVzdGlvLWRlYnVnICBkaXNhYmxlIHRoZSB1c2Ugb2YgdGhlIHRlc3QgSS9PIG1hbmFnZXIgZm9yIGRlYnVnZ2luZworICAtLWVuYWJsZS1saWJ1dWlkCSAgYnVpbGQgYW5kIHVzZSBwcml2YXRlIHV1aWQgbGlicmFyeQorICAtLWVuYWJsZS1saWJibGtpZAkgIGJ1aWxkIGFuZCB1c2UgcHJpdmF0ZSBibGtpZCBsaWJyYXJ5CisgIC0tZGlzYWJsZS1iYWNrdHJhY2UJICBkaXNhYmxlIHVzZSBiYWNrdHJhY2UKKyAgLS1kaXNhYmxlLWRlYnVnZnMgICAJICBkaXNhYmxlIHN1cHBvcnQgb2YgZGVidWdmcyBwcm9ncmFtCisgIC0tZGlzYWJsZS1pbWFnZXIgICAJICBkaXNhYmxlIHN1cHBvcnQgb2YgZTJpbWFnZSBwcm9ncmFtCisgIC0tZGlzYWJsZS1yZXNpemVyICAgCSAgZGlzYWJsZSBzdXBwb3J0IG9mIGUycmVzaXplIHByb2dyYW0KKyAgLS1kaXNhYmxlLWRlZnJhZyAgIAkgIGRpc2FibGUgc3VwcG9ydCBvZiBlNGRlZnJhZyBwcm9ncmFtCisgIC0tZW5hYmxlLWZzY2sgICAgICAgICAgIGJ1aWxkIGZzY2sgd3JhcHBlciBwcm9ncmFtCisgIC0tZW5hYmxlLWUyaW5pdHJkLWhlbHBlciBidWlsZCBlMmluaXRyZC1oZWxwZXIgcHJvZ3JhbQorICAtLWRpc2FibGUtdGxzICAgICAgICAgICBkaXNhYmxlIHVzZSBvZiB0aHJlYWQgbG9jYWwgc3VwcG9ydAorICAtLWRpc2FibGUtdXVpZGQgICAgICAgICBkaXNhYmxlIGJ1aWxkaW5nIHRoZSB1dWlkIGRhZW1vbgorICAtLWRpc2FibGUtbW1wICAgICAgICAgICBkaXNhYmxlIHN1cHBvcnQgbW1wLCBNdWx0aSBNb3VudCBQcm90ZWN0aW9uCisgIC0tZGlzYWJsZS10ZGIgICAgICAgICAgIGRpc2FibGUgdGRiIHN1cHBvcnQKKyAgLS1kaXNhYmxlLWJtYXAtc3RhdHMgICAgZGlzYWJsZSBjb2xsZWN0aW9uIG9mIGJpdG1hcCBzdGF0cy4KKyAgLS1lbmFibGUtYm1hcC1zdGF0cy1vcHMgZW5hYmxlIGNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBiaXRtYXAgc3RhdHMKKyAgLS1kaXNhYmxlLW5scyAgICAgICAgICAgZG8gbm90IHVzZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydAorICAtLWVuYWJsZS10aHJlYWRzPXtwb3NpeHxzb2xhcmlzfHB0aHx3aW5kb3dzfQorICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IG11bHRpdGhyZWFkaW5nIEFQSQorICAtLWRpc2FibGUtdGhyZWFkcyAgICAgICBidWlsZCB3aXRob3V0IG11bHRpdGhyZWFkIHNhZmV0eQorICAtLWRpc2FibGUtcnBhdGggICAgICAgICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzCisgIC0tZGlzYWJsZS1mdXNlMmZzCSAgZG8gbm90IGJ1aWxkIGZ1c2UyZnMKKworT3B0aW9uYWwgUGFja2FnZXM6CisgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtBUkc9eWVzXQorICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pCisgIC0td2l0aC1kaWV0LWxpYmMgICAgICAgIHVzZSBkaWV0IGxpYmMKKyAgLS13aXRoLWNjICAgICAgICAgICAgICAgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdXNlIENDPSBpbnN0ZWFkCisgIC0td2l0aC1jY29wdHMgICAgICAgICAgIG5vIGxvbmdlciBzdXBwb3J0ZWQsIHVzZSBDRkxBR1M9IGluc3RlYWQKKyAgLS13aXRoLWxkb3B0cyAgICAgICAgICAgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdXNlIExERkxBR1M9IGluc3RlYWQKKyAgLS13aXRoLXJvb3QtcHJlZml4PVBSRUZJWCBvdmVycmlkZSBwcmVmaXggdmFyaWFibGUgZm9yIGZpbGVzIHRvIGJlIHBsYWNlZCBpbiB0aGUgcm9vdAorICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisgIC0td2l0aC1saWJwdGgtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYnB0aCBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgorICAtLXdpdGhvdXQtbGlicHRoLXByZWZpeCAgICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJwdGggaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyCisgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKKyAgLS13aXRob3V0LWxpYmljb252LXByZWZpeCAgICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJpY29udiBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXIKKyAgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgdXNlIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGluY2x1ZGVkIGhlcmUKKyAgLS13aXRoLWxpYmludGwtcHJlZml4Wz1ESVJdICBzZWFyY2ggZm9yIGxpYmludGwgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKKyAgLS13aXRob3V0LWxpYmludGwtcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYmludGwgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyCisgIC0td2l0aC1tdWx0aWFyY2g9QVJDSCBzcGVjaWZ5IHRoZSBtdWx0aWFyY2ggdHJpcGxldAorCitTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCisgIENGTEFHUyAgICAgIEMgY29tcGlsZXIgZmxhZ3MKKyAgTERGTEFHUyAgICAgbGlua2VyIGZsYWdzLCBlLmcuIC1MPGxpYiBkaXI+IGlmIHlvdSBoYXZlIGxpYnJhcmllcyBpbiBhCisgICAgICAgICAgICAgIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8bGliIGRpcj4KKyAgTElCUyAgICAgICAgbGlicmFyaWVzIHRvIHBhc3MgdG8gdGhlIGxpbmtlciwgZS5nLiAtbDxsaWJyYXJ5PgorICBDUFBGTEFHUyAgICAoT2JqZWN0aXZlKSBDL0MrKyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+IGlmCisgICAgICAgICAgICAgIHlvdSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgorICBDUFAgICAgICAgICBDIHByZXByb2Nlc3NvcgorICBQS0dfQ09ORklHICBwYXRoIHRvIHBrZy1jb25maWcgdXRpbGl0eQorICBQS0dfQ09ORklHX1BBVEgKKyAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgdG8gYWRkIHRvIHBrZy1jb25maWcncyBzZWFyY2ggcGF0aAorICBQS0dfQ09ORklHX0xJQkRJUgorICAgICAgICAgICAgICBwYXRoIG92ZXJyaWRpbmcgcGtnLWNvbmZpZydzIGJ1aWx0LWluIHNlYXJjaCBwYXRoCisKK1VzZSB0aGVzZSB2YXJpYWJsZXMgdG8gb3ZlcnJpZGUgdGhlIGNob2ljZXMgbWFkZSBieSBgY29uZmlndXJlJyBvciB0byBoZWxwCitpdCB0byBmaW5kIGxpYnJhcmllcyBhbmQgcHJvZ3JhbXMgd2l0aCBub25zdGFuZGFyZCBuYW1lcy9sb2NhdGlvbnMuCisKK1JlcG9ydCBidWdzIHRvIHRoZSBwYWNrYWdlIHByb3ZpZGVyLgorX0FDRU9GCithY19zdGF0dXM9JD8KK2ZpCisKK2lmIHRlc3QgIiRhY19pbml0X2hlbHAiID0gInJlY3Vyc2l2ZSI7IHRoZW4KKyAgIyBJZiB0aGVyZSBhcmUgc3ViZGlycywgcmVwb3J0IHRoZWlyIHNwZWNpZmljIC0taGVscC4KKyAgZm9yIGFjX2RpciBpbiA6ICRhY19zdWJkaXJzX2FsbDsgZG8gdGVzdCAieCRhY19kaXIiID0geDogJiYgY29udGludWUKKyAgICB0ZXN0IC1kICIkYWNfZGlyIiB8fAorICAgICAgeyBjZCAiJHNyY2RpciIgJiYgYWNfcHdkPWBwd2RgICYmIHNyY2Rpcj0uICYmIHRlc3QgLWQgIiRhY19kaXIiOyB9IHx8CisgICAgICBjb250aW51ZQorICAgIGFjX2J1aWxkZGlyPS4KKworY2FzZSAiJGFjX2RpciIgaW4KKy4pIGFjX2Rpcl9zdWZmaXg9IGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworKikKKyAgYWNfZGlyX3N1ZmZpeD0vYCRhc19lY2hvICIkYWNfZGlyIiB8IHNlZCAnc3xeXC5bXFwvXXx8J2AKKyAgIyBBICIuLiIgZm9yIGVhY2ggZGlyZWN0b3J5IGluICRhY19kaXJfc3VmZml4LgorICBhY190b3BfYnVpbGRkaXJfc3ViPWAkYXNfZWNobyAiJGFjX2Rpcl9zdWZmaXgiIHwgc2VkICdzfC9bXlxcL10qfC8uLnxnO3N8L3x8J2AKKyAgY2FzZSAkYWNfdG9wX2J1aWxkZGlyX3N1YiBpbgorICAiIikgYWNfdG9wX2J1aWxkZGlyX3N1Yj0uIGFjX3RvcF9idWlsZF9wcmVmaXg9IDs7CisgICopICBhY190b3BfYnVpbGRfcHJlZml4PSRhY190b3BfYnVpbGRkaXJfc3ViLyA7OworICBlc2FjIDs7Citlc2FjCithY19hYnNfdG9wX2J1aWxkZGlyPSRhY19wd2QKK2FjX2Fic19idWlsZGRpcj0kYWNfcHdkJGFjX2Rpcl9zdWZmaXgKKyMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk6CithY190b3BfYnVpbGRkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgKKworY2FzZSAkc3JjZGlyIGluCisgIC4pICAjIFdlIGFyZSBidWlsZGluZyBpbiBwbGFjZS4KKyAgICBhY19zcmNkaXI9LgorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZGRpcl9zdWIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kYWNfcHdkIDs7CisgIFtcXC9dKiB8ID86W1xcL10qICkgICMgQWJzb2x1dGUgbmFtZS4KKyAgICBhY19zcmNkaXI9JHNyY2RpciRhY19kaXJfc3VmZml4OworICAgIGFjX3RvcF9zcmNkaXI9JHNyY2RpcgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRzcmNkaXIgOzsKKyAgKikgIyBSZWxhdGl2ZSBuYW1lLgorICAgIGFjX3NyY2Rpcj0kYWNfdG9wX2J1aWxkX3ByZWZpeCRzcmNkaXIkYWNfZGlyX3N1ZmZpeAorICAgIGFjX3RvcF9zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZC8kc3JjZGlyIDs7Citlc2FjCithY19hYnNfc3JjZGlyPSRhY19hYnNfdG9wX3NyY2RpciRhY19kaXJfc3VmZml4CisKKyAgICBjZCAiJGFjX2RpciIgfHwgeyBhY19zdGF0dXM9JD87IGNvbnRpbnVlOyB9CisgICAgIyBDaGVjayBmb3IgZ3Vlc3RlZCBjb25maWd1cmUuCisgICAgaWYgdGVzdCAtZiAiJGFjX3NyY2Rpci9jb25maWd1cmUuZ251IjsgdGhlbgorICAgICAgZWNobyAmJgorICAgICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZS5nbnUiIC0taGVscD1yZWN1cnNpdmUKKyAgICBlbGlmIHRlc3QgLWYgIiRhY19zcmNkaXIvY29uZmlndXJlIjsgdGhlbgorICAgICAgZWNobyAmJgorICAgICAgJFNIRUxMICIkYWNfc3JjZGlyL2NvbmZpZ3VyZSIgLS1oZWxwPXJlY3Vyc2l2ZQorICAgIGVsc2UKKyAgICAgICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IG5vIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gaXMgaW4gJGFjX2RpciIgPiYyCisgICAgZmkgfHwgYWNfc3RhdHVzPSQ/CisgICAgY2QgIiRhY19wd2QiIHx8IHsgYWNfc3RhdHVzPSQ/OyBicmVhazsgfQorICBkb25lCitmaQorCit0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIiAmJiBleGl0ICRhY19zdGF0dXMKK2lmICRhY19pbml0X3ZlcnNpb247IHRoZW4KKyAgY2F0IDw8XF9BQ0VPRgorY29uZmlndXJlCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKKworQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KK19BQ0VPRgorICBleGl0CitmaQorCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEF1dG9jb25mIGluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgYWNfZm5fY190cnlfY29tcGlsZSBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGNvbXBpbGUgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLgorYWNfZm5fY190cnlfY29tcGlsZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjEKKyAgICBjYXQgY29uZnRlc3QuZXIxID4mNQorICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgZmkKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeworCSB0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIgfHwKKwkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgorICAgICAgIH0gJiYgdGVzdCAtcyBjb25mdGVzdC4kYWNfb2JqZXh0OyB0aGVuIDoKKyAgYWNfcmV0dmFsPTAKK2Vsc2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKwlhY19yZXR2YWw9MQorZmkKKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190cnlfY29tcGlsZQorCisjIGFjX2ZuX2NfdHJ5X2xpbmsgTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyeSB0byBsaW5rIGNvbmZ0ZXN0LiRhY19leHQsIGFuZCByZXR1cm4gd2hldGhlciB0aGlzIHN1Y2NlZWRlZC4KK2FjX2ZuX2NfdHJ5X2xpbmsgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0JGFjX2V4ZWV4dAorICBpZiB7IHsgYWNfdHJ5PSIkYWNfbGluayIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2xpbmsiKSAyPmNvbmZ0ZXN0LmVycgorICBhY19zdGF0dXM9JD8KKyAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgICAgbXYgLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB7CisJIHRlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIiB8fAorCSB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyCisgICAgICAgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAmJiB7CisJIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIHx8CisJIHRlc3QgLXggY29uZnRlc3QkYWNfZXhlZXh0CisgICAgICAgfTsgdGhlbiA6CisgIGFjX3JldHZhbD0wCitlbHNlCisgICRhc19lY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mNQorc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorCisJYWNfcmV0dmFsPTEKK2ZpCisgICMgRGVsZXRlIHRoZSBJUEEvSVBPIChJbnRlciBQcm9jZWR1cmFsIEFuYWx5c2lzL09wdGltaXphdGlvbikgaW5mb3JtYXRpb24KKyAgIyBjcmVhdGVkIGJ5IHRoZSBQR0kgY29tcGlsZXIgKGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28pLCBhcyBpdCB3b3VsZAorICAjIGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxldGUgYSBkaXJlY3RvcnkgdGhhdCBpcworICAjIGxlZnQgYmVoaW5kIGJ5IEFwcGxlJ3MgY29tcGlsZXIuICBXZSBkbyB0aGlzIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbnMuCisgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190cnlfbGluaworCisjIGFjX2ZuX2NfdHJ5X2NwcCBMSU5FTk8KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnkgdG8gcHJlcHJvY2VzcyBjb25mdGVzdC4kYWNfZXh0LCBhbmQgcmV0dXJuIHdoZXRoZXIgdGhpcyBzdWNjZWVkZWQuCithY19mbl9jX3RyeV9jcHAgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiB7IHsgYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+Y29uZnRlc3QuZXJyCisgIGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAgICBtdiAtZiBjb25mdGVzdC5lcjEgY29uZnRlc3QuZXJyCisgIGZpCisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ID4gY29uZnRlc3QuaSAmJiB7CisJIHRlc3QgLXogIiRhY19jX3ByZXByb2Nfd2Fybl9mbGFnJGFjX2Nfd2Vycm9yX2ZsYWciIHx8CisJIHRlc3QgISAtcyBjb25mdGVzdC5lcnIKKyAgICAgICB9OyB0aGVuIDoKKyAgYWNfcmV0dmFsPTAKK2Vsc2UKKyAgJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKKyAgICBhY19yZXR2YWw9MQorZmkKKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAorCit9ICMgYWNfZm5fY190cnlfY3BwCisKKyMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgSEVBREVSIGV4aXN0cywgZ2l2aW5nIGEgd2FybmluZyBpZiBpdCBjYW5ub3QgYmUgY29tcGlsZWQgdXNpbmcKKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNldHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgorIyBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICBpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KK2Vsc2UKKyAgIyBJcyB0aGUgaGVhZGVyIGNvbXBpbGFibGU/Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyAkMiB1c2FiaWxpdHkuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfaGVhZGVyX2NvbXBpbGVyPXllcworZWxzZQorICBhY19oZWFkZXJfY29tcGlsZXI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX2NvbXBpbGVyIiA+JjY7IH0KKworIyBJcyB0aGUgaGVhZGVyIHByZXNlbnQ/Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHByZXNlbmNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKK2Vsc2UKKyAgYWNfaGVhZGVyX3ByZXByb2M9bm8KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyRhc19lY2hvICIkYWNfaGVhZGVyX3ByZXByb2MiID4mNjsgfQorCisjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KK2Nhc2UgJGFjX2hlYWRlcl9jb21waWxlcjokYWNfaGVhZGVyX3ByZXByb2M6JGFjX2NfcHJlcHJvY193YXJuX2ZsYWcgaW4gIygoCisgIHllczpubzogKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KKyAgICA7OworICBubzp5ZXM6KiApCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiBwcmVzZW50IGJ1dCBjYW5ub3QgYmUgY29tcGlsZWQiID4mMjt9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHNlZSB0aGUgQXV0b2NvbmYgZG9jdW1lbnRhdGlvbiIgPiYyO30KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjI7fQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2NlZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9CisgICAgOzsKK2VzYWMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwKKworIyBhY19mbl9jX3RyeV9ydW4gTElORU5PCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJ5IHRvIGxpbmsgY29uZnRlc3QuJGFjX2V4dCwgYW5kIHJldHVybiB3aGV0aGVyIHRoaXMgc3VjY2VlZGVkLiBBc3N1bWVzCisjIHRoYXQgZXhlY3V0YWJsZXMgKmNhbiogYmUgcnVuLgorYWNfZm5fY190cnlfcnVuICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgeyBhY190cnk9Jy4vY29uZnRlc3QkYWNfZXhlZXh0JworICB7IHsgY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfdHJ5IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IH07IHRoZW4gOgorICBhY19yZXR2YWw9MAorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBwcm9ncmFtIGV4aXRlZCB3aXRoIHN0YXR1cyAkYWNfc3RhdHVzIiA+JjUKKyAgICAgICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworICAgICAgIGFjX3JldHZhbD0kYWNfc3RhdHVzCitmaQorICBybSAtcmYgY29uZnRlc3QuZFNZTSBjb25mdGVzdF9pcGE4X2NvbmZ0ZXN0Lm9vCisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworICBhc19mbl9zZXRfc3RhdHVzICRhY19yZXR2YWwKKworfSAjIGFjX2ZuX2NfdHJ5X3J1bgorCisjIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgTElORU5PIEhFQURFUiBWQVIgSU5DTFVERVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBiZSBjb21waWxlZCB1c2luZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgorIyBJTkNMVURFUywgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CisjaW5jbHVkZSA8JDI+CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVzIgorZWxzZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlCisKKyMgYWNfZm5fY19jaGVja190eXBlIExJTkVOTyBUWVBFIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3RzIHdoZXRoZXIgVFlQRSBleGlzdHMgYWZ0ZXIgaGF2aW5nIGluY2x1ZGVkIElOQ0xVREVTLCBzZXR0aW5nIGNhY2hlCisjIHZhcmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KK2FjX2ZuX2NfY2hlY2tfdHlwZSAoKQoreworICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGV2YWwgIiQzPW5vIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitpZiAoc2l6ZW9mICgkMikpCisJIHJldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK2lmIChzaXplb2YgKCgkMikpKQorCSAgICByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGV2YWwgIiQzPXllcyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCQzCisJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCisKK30gIyBhY19mbl9jX2NoZWNrX3R5cGUKKworIyBhY19mbl9jX2NoZWNrX2Z1bmMgTElORU5PIEZVTkMgVkFSCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBGVU5DIGV4aXN0cywgc2V0dGluZyB0aGUgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5CithY19mbl9jX2NoZWNrX2Z1bmMgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisvKiBEZWZpbmUgJDIgdG8gYW4gaW5ub2N1b3VzIHZhcmlhbnQsIGluIGNhc2UgPGxpbWl0cy5oPiBkZWNsYXJlcyAkMi4KKyAgIEZvciBleGFtcGxlLCBIUC1VWCAxMWkgPGxpbWl0cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLworI2RlZmluZSAkMiBpbm5vY3VvdXNfJDIKKworLyogU3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9wZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgIHdoaWNoIGNhbiBjb25mbGljdCB3aXRoIGNoYXIgJDIgKCk7IGJlbG93LgorICAgIFByZWZlciA8bGltaXRzLmg+IHRvIDxhc3NlcnQuaD4gaWYgX19TVERDX18gaXMgZGVmaW5lZCwgc2luY2UKKyAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZyZWVzdGFuZGluZyBjb21waWxlcnMuICAqLworCisjaWZkZWYgX19TVERDX18KKyMgaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorIyBpbmNsdWRlIDxhc3NlcnQuaD4KKyNlbmRpZgorCisjdW5kZWYgJDIKKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciAkMiAoKTsKKy8qIFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25zIHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICB0byBhbHdheXMgZmFpbCB3aXRoIEVOT1NZUy4gIFNvbWUgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSBuYW1lZAorICAgIHNvbWV0aGluZyBzdGFydGluZyB3aXRoIF9fIGFuZCB0aGUgbm9ybWFsIG5hbWUgaXMgYW4gYWxpYXMuICAqLworI2lmIGRlZmluZWQgX19zdHViXyQyIHx8IGRlZmluZWQgX19zdHViX19fJDIKK2Nob2tlIG1lCisjZW5kaWYKKworaW50CittYWluICgpCit7CityZXR1cm4gJDIgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDM9eWVzIgorZWxzZQorICBldmFsICIkMz1ubyIKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK2V2YWwgYWNfcmVzPVwkJDMKKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19yZXMiID4mNQorJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKworfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYworCisjIGFjX2ZuX2NfY2hlY2tfZGVjbCBMSU5FTk8gU1lNQk9MIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgd2hldGhlciBTWU1CT0wgaXMgZGVjbGFyZWQgaW4gSU5DTFVERVMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCisjIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19kZWNsICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgYXNfZGVjbF9uYW1lPWBlY2hvICQyfHNlZCAncy8gKiguKi8vJ2AKKyAgYXNfZGVjbF91c2U9YGVjaG8gJDJ8c2VkIC1lICdzLygvKCgvJyAtZSAncy8pLykgMCYvJyAtZSAncy8sLykgMCYgKC9nJ2AKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyICRhc19kZWNsX25hbWUgaXMgZGVjbGFyZWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkYXNfZGVjbF9uYW1lIGlzIGRlY2xhcmVkLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworI2lmbmRlZiAkYXNfZGVjbF9uYW1lCisjaWZkZWYgX19jcGx1c3BsdXMKKyAgKHZvaWQpICRhc19kZWNsX3VzZTsKKyNlbHNlCisgICh2b2lkKSAkYXNfZGVjbF9uYW1lOworI2VuZGlmCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQzPXllcyIKK2Vsc2UKKyAgZXZhbCAiJDM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja19kZWNsCisKKyMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKKyMgSU5DTFVERVMsIHNldHRpbmcgVkFSIGFjY29yZGluZ2x5LiBSZXR1cm5zIHdoZXRoZXIgdGhlIHZhbHVlIGNvdWxkIGJlCisjIGNvbXB1dGVkCithY19mbl9jX2NvbXB1dGVfaW50ICgpCit7CisgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICAjIERlcGVuZGluZyB1cG9uIHRoZSBzaXplLCBjb21wdXRlIHRoZSBsbyBhbmQgaGkgYm91bmRzLgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA+PSAwKV07Cit0ZXN0X2FycmF5IFswXSA9IDA7CityZXR1cm4gdGVzdF9hcnJheSBbMF07CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19sbz0wIGFjX21pZD0wCisgIHdoaWxlIDo7IGRvCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA8PSAkYWNfbWlkKV07Cit0ZXN0X2FycmF5IFswXSA9IDA7CityZXR1cm4gdGVzdF9hcnJheSBbMF07CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19oaT0kYWNfbWlkOyBicmVhaworZWxzZQorICBhc19mbl9hcml0aCAkYWNfbWlkICsgMSAmJiBhY19sbz0kYXNfdmFsCisJCQlpZiB0ZXN0ICRhY19sbyAtbGUgJGFjX21pZDsgdGhlbgorCQkJICBhY19sbz0gYWNfaGk9CisJCQkgIGJyZWFrCisJCQlmaQorCQkJYXNfZm5fYXJpdGggMiAnKicgJGFjX21pZCArIDEgJiYgYWNfbWlkPSRhc192YWwKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgZG9uZQorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitzdGF0aWMgaW50IHRlc3RfYXJyYXkgWzEgLSAyICogISgoJDIpIDwgMCldOwordGVzdF9hcnJheSBbMF0gPSAwOworcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfaGk9LTEgYWNfbWlkPS0xCisgIHdoaWxlIDo7IGRvCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCQyKSA+PSAkYWNfbWlkKV07Cit0ZXN0X2FycmF5IFswXSA9IDA7CityZXR1cm4gdGVzdF9hcnJheSBbMF07CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19sbz0kYWNfbWlkOyBicmVhaworZWxzZQorICBhc19mbl9hcml0aCAnKCcgJGFjX21pZCAnKScgLSAxICYmIGFjX2hpPSRhc192YWwKKwkJCWlmIHRlc3QgJGFjX21pZCAtbGUgJGFjX2hpOyB0aGVuCisJCQkgIGFjX2xvPSBhY19oaT0KKwkJCSAgYnJlYWsKKwkJCWZpCisJCQlhc19mbl9hcml0aCAyICcqJyAkYWNfbWlkICYmIGFjX21pZD0kYXNfdmFsCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGRvbmUKK2Vsc2UKKyAgYWNfbG89IGFjX2hpPQorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBCaW5hcnkgc2VhcmNoIGJldHdlZW4gbG8gYW5kIGhpIGJvdW5kcy4KK3doaWxlIHRlc3QgIngkYWNfbG8iICE9ICJ4JGFjX2hpIjsgZG8KKyAgYXNfZm5fYXJpdGggJygnICRhY19oaSAtICRhY19sbyAnKScgLyAyICsgJGFjX2xvICYmIGFjX21pZD0kYXNfdmFsCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyQ0CitpbnQKK21haW4gKCkKK3sKK3N0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkMikgPD0gJGFjX21pZCldOwordGVzdF9hcnJheSBbMF0gPSAwOworcmV0dXJuIHRlc3RfYXJyYXkgWzBdOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfaGk9JGFjX21pZAorZWxzZQorICBhc19mbl9hcml0aCAnKCcgJGFjX21pZCAnKScgKyAxICYmIGFjX2xvPSRhc192YWwKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKK2Nhc2UgJGFjX2xvIGluICMoKAorPyopIGV2YWwgIiQzPVwkYWNfbG8iOyBhY19yZXR2YWw9MCA7OworJycpIGFjX3JldHZhbD0xIDs7Citlc2FjCisgIGVsc2UKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAorc3RhdGljIGxvbmcgaW50IGxvbmd2YWwgKCkgeyByZXR1cm4gJDI7IH0KK3N0YXRpYyB1bnNpZ25lZCBsb25nIGludCB1bG9uZ3ZhbCAoKSB7IHJldHVybiAkMjsgfQorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CitpbnQKK21haW4gKCkKK3sKKworICBGSUxFICpmID0gZm9wZW4gKCJjb25mdGVzdC52YWwiLCAidyIpOworICBpZiAoISBmKQorICAgIHJldHVybiAxOworICBpZiAoKCQyKSA8IDApCisgICAgeworICAgICAgbG9uZyBpbnQgaSA9IGxvbmd2YWwgKCk7CisgICAgICBpZiAoaSAhPSAoJDIpKQorCXJldHVybiAxOworICAgICAgZnByaW50ZiAoZiwgIiVsZCIsIGkpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIHVuc2lnbmVkIGxvbmcgaW50IGkgPSB1bG9uZ3ZhbCAoKTsKKyAgICAgIGlmIChpICE9ICgkMikpCisJcmV0dXJuIDE7CisgICAgICBmcHJpbnRmIChmLCAiJWx1IiwgaSk7CisgICAgfQorICAvKiBEbyBub3Qgb3V0cHV0IGEgdHJhaWxpbmcgbmV3bGluZSwgYXMgdGhpcyBjYXVzZXMgXHJcbiBjb25mdXNpb24KKyAgICAgb24gc29tZSBwbGF0Zm9ybXMuICAqLworICByZXR1cm4gZmVycm9yIChmKSB8fCBmY2xvc2UgKGYpICE9IDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGVjaG8gPj5jb25mdGVzdC52YWw7IHJlYWQgJDMgPGNvbmZ0ZXN0LnZhbDsgYWNfcmV0dmFsPTAKK2Vsc2UKKyAgYWNfcmV0dmFsPTEKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC52YWwKKworICBmaQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KKyAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCisKK30gIyBhY19mbl9jX2NvbXB1dGVfaW50CisKKyMgYWNfZm5fY19jaGVja19tZW1iZXIgTElORU5PIEFHR1IgTUVNQkVSIFZBUiBJTkNMVURFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyaWVzIHRvIGZpbmQgaWYgdGhlIGZpZWxkIE1FTUJFUiBleGlzdHMgaW4gdHlwZSBBR0dSLCBhZnRlciBpbmNsdWRpbmcKKyMgSU5DTFVERVMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSIGFjY29yZGluZ2x5LgorYWNfZm5fY19jaGVja19tZW1iZXIgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMi4kMyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuJDMuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChhY19hZ2dyLiQzKQorcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJDQ9eWVzIgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNQoraW50CittYWluICgpCit7CitzdGF0aWMgJDIgYWNfYWdncjsKK2lmIChzaXplb2YgYWNfYWdnci4kMykKK3JldHVybiAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGV2YWwgIiQ0PXllcyIKK2Vsc2UKKyAgZXZhbCAiJDQ9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkNAorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja19tZW1iZXIKK2NhdCA+Y29uZmlnLmxvZyA8PF9BQ0VPRgorVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKK3J1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCisKK0l0IHdhcyBjcmVhdGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICAkICQwICRACisKK19BQ0VPRgorZXhlYyA1Pj5jb25maWcubG9nCit7CitjYXQgPDxfQVNVTkFNRQorIyMgLS0tLS0tLS0tICMjCisjIyBQbGF0Zm9ybS4gIyMKKyMjIC0tLS0tLS0tLSAjIworCitob3N0bmFtZSA9IGAoaG9zdG5hbWUgfHwgdW5hbWUgLW4pIDI+L2Rldi9udWxsIHwgc2VkIDFxYAordW5hbWUgLW0gPSBgKHVuYW1lIC1tKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtciA9IGAodW5hbWUgLXIpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC1zID0gYCh1bmFtZSAtcykgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXYgPSBgKHVuYW1lIC12KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCisKKy91c3IvYmluL3VuYW1lIC1wID0gYCgvdXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsICAgICB8fCBlY2hvIHVua25vd25gCisKKy9iaW4vYXJjaCAgICAgICAgICAgICAgPSBgKC9iaW4vYXJjaCkgMj4vZGV2L251bGwgICAgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvY29udmV4L2dldHN5c2luZm8gPSBgKC91c3IvY29udmV4L2dldHN5c2luZm8pIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL2hvc3RpbmZvICAgICAgPSBgKC91c3IvYmluL2hvc3RpbmZvKSAyPi9kZXYvbnVsbCAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vbWFjaGluZSAgICAgICAgICAgPSBgKC9iaW4vbWFjaGluZSkgMj4vZGV2L251bGwgICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKy9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsICAgICAgICAgIHx8IGVjaG8gdW5rbm93bmAKKworX0FTVU5BTUUKKworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICRhc19lY2hvICJQQVRIOiAkYXNfZGlyIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK30gPiY1CisKK2NhdCA+JjUgPDxfQUNFT0YKKworCisjIyAtLS0tLS0tLS0tLSAjIworIyMgQ29yZSB0ZXN0cy4gIyMKKyMjIC0tLS0tLS0tLS0tICMjCisKK19BQ0VPRgorCisKKyMgS2VlcCBhIHRyYWNlIG9mIHRoZSBjb21tYW5kIGxpbmUuCisjIFN0cmlwIG91dCAtLW5vLWNyZWF0ZSBhbmQgLS1uby1yZWN1cnNpb24gc28gdGhleSBkbyBub3QgcGlsZSB1cC4KKyMgU3RyaXAgb3V0IC0tc2lsZW50IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byByZWNvcmQgaXQgZm9yIGZ1dHVyZSBydW5zLgorIyBBbHNvIHF1b3RlIGFueSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YS1jaGFyYWN0ZXJzLgorIyBNYWtlIHR3byBwYXNzZXMgdG8gYWxsb3cgZm9yIHByb3BlciBkdXBsaWNhdGUtYXJndW1lbnQgc3VwcHJlc3Npb24uCithY19jb25maWd1cmVfYXJncz0KK2FjX2NvbmZpZ3VyZV9hcmdzMD0KK2FjX2NvbmZpZ3VyZV9hcmdzMT0KK2FjX211c3Rfa2VlcF9uZXh0PWZhbHNlCitmb3IgYWNfcGFzcyBpbiAxIDIKK2RvCisgIGZvciBhY19hcmcKKyAgZG8KKyAgICBjYXNlICRhY19hcmcgaW4KKyAgICAtbm8tY3JlYXRlIHwgLS1uby1jKiB8IC1uIHwgLW5vLXJlY3Vyc2lvbiB8IC0tbm8tciopIGNvbnRpbnVlIDs7CisgICAgLXEgfCAtcXVpZXQgfCAtLXF1aWV0IHwgLS1xdWllIHwgLS1xdWkgfCAtLXF1IHwgLS1xIFwKKyAgICB8IC1zaWxlbnQgfCAtLXNpbGVudCB8IC0tc2lsZW4gfCAtLXNpbGUgfCAtLXNpbCkKKyAgICAgIGNvbnRpbnVlIDs7CisgICAgKlwnKikKKyAgICAgIGFjX2FyZz1gJGFzX2VjaG8gIiRhY19hcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgZXNhYworICAgIGNhc2UgJGFjX3Bhc3MgaW4KKyAgICAxKSBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MwICIgJyRhY19hcmcnIiA7OworICAgIDIpCisgICAgICBhc19mbl9hcHBlbmQgYWNfY29uZmlndXJlX2FyZ3MxICIgJyRhY19hcmcnIgorICAgICAgaWYgdGVzdCAkYWNfbXVzdF9rZWVwX25leHQgPSB0cnVlOyB0aGVuCisJYWNfbXVzdF9rZWVwX25leHQ9ZmFsc2UgIyBHb3QgdmFsdWUsIGJhY2sgdG8gbm9ybWFsLgorICAgICAgZWxzZQorCWNhc2UgJGFjX2FyZyBpbgorCSAgKj0qIHwgLS1jb25maWctY2FjaGUgfCAtQyB8IC1kaXNhYmxlLSogfCAtLWRpc2FibGUtKiBcCisJICB8IC1lbmFibGUtKiB8IC0tZW5hYmxlLSogfCAtZ2FzIHwgLS1nKiB8IC1uZnAgfCAtLW5mKiBcCisJICB8IC1xIHwgLXF1aWV0IHwgLS1xKiB8IC1zaWxlbnQgfCAtLXNpbCogfCAtdiB8IC12ZXJiKiBcCisJICB8IC13aXRoLSogfCAtLXdpdGgtKiB8IC13aXRob3V0LSogfCAtLXdpdGhvdXQtKiB8IC0teCkKKwkgICAgY2FzZSAiJGFjX2NvbmZpZ3VyZV9hcmdzMCAiIGluCisJICAgICAgIiRhY19jb25maWd1cmVfYXJnczEiKiIgJyRhY19hcmcnICIqICkgY29udGludWUgOzsKKwkgICAgZXNhYworCSAgICA7OworCSAgLSogKSBhY19tdXN0X2tlZXBfbmV4dD10cnVlIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCitkb25lCit7IGFjX2NvbmZpZ3VyZV9hcmdzMD07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMDt9Cit7IGFjX2NvbmZpZ3VyZV9hcmdzMT07IHVuc2V0IGFjX2NvbmZpZ3VyZV9hcmdzMTt9CisKKyMgV2hlbiBpbnRlcnJ1cHRlZCBvciBleGl0J2QsIGNsZWFudXAgdGVtcG9yYXJ5IGZpbGVzLCBhbmQgY29tcGxldGUKKyMgY29uZmlnLmxvZy4gIFdlIHJlbW92ZSBjb21tZW50cyBiZWNhdXNlIGFueXdheSB0aGUgcXVvdGVzIGluIHRoZXJlCisjIHdvdWxkIGNhdXNlIHByb2JsZW1zIG9yIGxvb2sgdWdseS4KKyMgV0FSTklORzogVXNlICdcJycgdG8gcmVwcmVzZW50IGFuIGFwb3N0cm9waGUgd2l0aGluIHRoZSB0cmFwLgorIyBXQVJOSU5HOiBEbyBub3Qgc3RhcnQgdGhlIHRyYXAgY29kZSB3aXRoIGEgbmV3bGluZSwgZHVlIHRvIGEgRnJlZUJTRCA0LjAgYnVnLgordHJhcCAnZXhpdF9zdGF0dXM9JD8KKyAgIyBTYXZlIGludG8gY29uZmlnLmxvZyBzb21lIGluZm9ybWF0aW9uIHRoYXQgbWlnaHQgaGVscCBpbiBkZWJ1Z2dpbmcuCisgIHsKKyAgICBlY2hvCisKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgQ2FjaGUgdmFyaWFibGVzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICBlY2hvCisgICAgIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKKygKKyAgZm9yIGFjX3ZhciBpbiBgKHNldCkgMj4mMSB8IHNlZCAtbiAnXCcncy9eXChbYS16QS1aX11bYS16QS1aMC05X10qXCk9LiovXDEvcCdcJydgOyBkbworICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAgIGNhc2UgJGFjX3ZhbCBpbiAjKAorICAgICoke2FzX25sfSopCisgICAgICBjYXNlICRhY192YXIgaW4gIygKKyAgICAgICpfY3ZfKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBjYWNoZSB2YXJpYWJsZSAkYWNfdmFyIGNvbnRhaW5zIGEgbmV3bGluZSIgPiYyO30gOzsKKyAgICAgIGVzYWMKKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorICAgICAgXyB8IElGUyB8IGFzX25sKSA7OyAjKAorICAgICAgQkFTSF9BUkdWIHwgQkFTSF9TT1VSQ0UpIGV2YWwgJGFjX3Zhcj0gOzsgIygKKyAgICAgICopIHsgZXZhbCAkYWNfdmFyPTsgdW5zZXQgJGFjX3Zhcjt9IDs7CisgICAgICBlc2FjIDs7CisgICAgZXNhYworICBkb25lCisgIChzZXQpIDI+JjEgfAorICAgIGNhc2UgJGFzX25sYChhY19zcGFjZT0nXCcnICdcJyc7IHNldCkgMj4mMWAgaW4gIygKKyAgICAqJHthc19ubH1hY19zcGFjZT1cICopCisgICAgICBzZWQgLW4gXAorCSJzLydcJycvJ1wnJ1xcXFwnXCcnJ1wnJy9nOworCSAgcy9eXFwoW18kYXNfY3JfYWxudW1dKl9jdl9bXyRhc19jcl9hbG51bV0qXFwpPVxcKC4qXFwpL1xcMT0nXCcnXFwyJ1wnJy9wIgorICAgICAgOzsgIygKKyAgICAqKQorICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKKyAgICAgIDs7CisgICAgZXNhYyB8CisgICAgc29ydAorKQorICAgIGVjaG8KKworICAgICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgT3V0cHV0IHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjIgorICAgIGVjaG8KKyAgICBmb3IgYWNfdmFyIGluICRhY19zdWJzdF92YXJzCisgICAgZG8KKyAgICAgIGV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorICAgICAgY2FzZSAkYWNfdmFsIGluCisgICAgICAqXCdcJycqKSBhY192YWw9YCRhc19lY2hvICIkYWNfdmFsIiB8IHNlZCAicy8nXCcnLydcJydcXFxcXFxcXCdcJycnXCcnL2ciYDs7CisgICAgICBlc2FjCisgICAgICAkYXNfZWNobyAiJGFjX3Zhcj0nXCcnJGFjX3ZhbCdcJyciCisgICAgZG9uZSB8IHNvcnQKKyAgICBlY2hvCisKKyAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyIKKyAgICAgIGVjaG8KKyAgICAgIGZvciBhY192YXIgaW4gJGFjX3N1YnN0X2ZpbGVzCisgICAgICBkbworCWV2YWwgYWNfdmFsPVwkJGFjX3ZhcgorCWNhc2UgJGFjX3ZhbCBpbgorCSpcJ1wnJyopIGFjX3ZhbD1gJGFzX2VjaG8gIiRhY192YWwiIHwgc2VkICJzLydcJycvJ1wnJ1xcXFxcXFxcJ1wnJydcJycvZyJgOzsKKwllc2FjCisJJGFzX2VjaG8gIiRhY192YXI9J1wnJyRhY192YWwnXCcnIgorICAgICAgZG9uZSB8IHNvcnQKKyAgICAgIGVjaG8KKyAgICBmaQorCisgICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0gIyMKKyMjIGNvbmZkZWZzLmguICMjCisjIyAtLS0tLS0tLS0tLSAjIyIKKyAgICAgIGVjaG8KKyAgICAgIGNhdCBjb25mZGVmcy5oCisgICAgICBlY2hvCisgICAgZmkKKyAgICB0ZXN0ICIkYWNfc2lnbmFsIiAhPSAwICYmCisgICAgICAkYXNfZWNobyAiJGFzX21lOiBjYXVnaHQgc2lnbmFsICRhY19zaWduYWwiCisgICAgJGFzX2VjaG8gIiRhc19tZTogZXhpdCAkZXhpdF9zdGF0dXMiCisgIH0gPiY1CisgIHJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiAmJgorICAgIHJtIC1mIC1yIGNvbmZ0ZXN0KiBjb25mZGVmcyogY29uZiQkKiAkYWNfY2xlYW5fZmlsZXMgJiYKKyAgICBleGl0ICRleGl0X3N0YXR1cworJyAwCitmb3IgYWNfc2lnbmFsIGluIDEgMiAxMyAxNTsgZG8KKyAgdHJhcCAnYWNfc2lnbmFsPSckYWNfc2lnbmFsJzsgYXNfZm5fZXhpdCAxJyAkYWNfc2lnbmFsCitkb25lCithY19zaWduYWw9MAorCisjIGNvbmZkZWZzLmggYXZvaWRzIE9TIGNvbW1hbmQgbGluZSBsZW5ndGggbGltaXRzIHRoYXQgREVGUyBjYW4gZXhjZWVkLgorcm0gLWYgLXIgY29uZnRlc3QqIGNvbmZkZWZzLmgKKworJGFzX2VjaG8gIi8qIGNvbmZkZWZzLmggKi8iID4gY29uZmRlZnMuaAorCisjIFByZWRlZmluZWQgcHJlcHJvY2Vzc29yIHZhcmlhYmxlcy4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX05BTUUgIiRQQUNLQUdFX05BTUUiCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1RBUk5BTUUgIiRQQUNLQUdFX1RBUk5BTUUiCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIiRQQUNLQUdFX1ZFUlNJT04iCitfQUNFT0YKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFX1NUUklORyAiJFBBQ0tBR0VfU1RSSU5HIgorX0FDRU9GCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUEFDS0FHRV9CVUdSRVBPUlQgIiRQQUNLQUdFX0JVR1JFUE9SVCIKK19BQ0VPRgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFBBQ0tBR0VfVVJMICIkUEFDS0FHRV9VUkwiCitfQUNFT0YKKworCisjIExldCB0aGUgc2l0ZSBmaWxlIHNlbGVjdCBhbiBhbHRlcm5hdGUgY2FjaGUgZmlsZSBpZiBpdCB3YW50cyB0by4KKyMgUHJlZmVyIGFuIGV4cGxpY2l0bHkgc2VsZWN0ZWQgZmlsZSB0byBhdXRvbWF0aWNhbGx5IHNlbGVjdGVkIG9uZXMuCithY19zaXRlX2ZpbGUxPU5PTkUKK2FjX3NpdGVfZmlsZTI9Tk9ORQoraWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgorICAjIFdlIGRvIG5vdCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKKyAgICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICAgICovKikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEU7OworICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CisgIGVzYWMKK2VsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCisgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQorICBhY19zaXRlX2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlCitlbHNlCisgIGFjX3NpdGVfZmlsZTE9JGFjX2RlZmF1bHRfcHJlZml4L3NoYXJlL2NvbmZpZy5zaXRlCisgIGFjX3NpdGVfZmlsZTI9JGFjX2RlZmF1bHRfcHJlZml4L2V0Yy9jb25maWcuc2l0ZQorZmkKK2ZvciBhY19zaXRlX2ZpbGUgaW4gIiRhY19zaXRlX2ZpbGUxIiAiJGFjX3NpdGVfZmlsZTIiCitkbworICB0ZXN0ICJ4JGFjX3NpdGVfZmlsZSIgPSB4Tk9ORSAmJiBjb250aW51ZQorICBpZiB0ZXN0IC9kZXYvbnVsbCAhPSAiJGFjX3NpdGVfZmlsZSIgJiYgdGVzdCAtciAiJGFjX3NpdGVfZmlsZSI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CisgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1CisgICAgLiAiJGFjX3NpdGVfZmlsZSIgXAorICAgICAgfHwgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiZmFpbGVkIHRvIGxvYWQgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKyAgZmkKK2RvbmUKKworaWYgdGVzdCAtciAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICMgU29tZSB2ZXJzaW9ucyBvZiBiYXNoIHdpbGwgZmFpbCB0byBzb3VyY2UgL2Rldi9udWxsIChzcGVjaWFsIGZpbGVzCisgICMgYWN0dWFsbHkpLCBzbyB3ZSBhdm9pZCBkb2luZyB0aGF0LiAgREpHUFAgZW11bGF0ZXMgaXQgYXMgYSByZWd1bGFyIGZpbGUuCisgIGlmIHRlc3QgL2Rldi9udWxsICE9ICIkY2FjaGVfZmlsZSIgJiYgdGVzdCAtZiAiJGNhY2hlX2ZpbGUiOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBsb2FkaW5nIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGxvYWRpbmcgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CisgICAgY2FzZSAkY2FjaGVfZmlsZSBpbgorICAgICAgW1xcL10qIHwgPzpbXFwvXSogKSAuICIkY2FjaGVfZmlsZSI7OworICAgICAgKikgICAgICAgICAgICAgICAgICAgICAgLiAiLi8kY2FjaGVfZmlsZSI7OworICAgIGVzYWMKKyAgZmkKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjcmVhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgPiRjYWNoZV9maWxlCitmaQorCitndF9uZWVkcz0iJGd0X25lZWRzICIKK2FzX2ZuX2FwcGVuZCBhY19oZWFkZXJfbGlzdCAiIHN0ZGxpYi5oIgorYXNfZm5fYXBwZW5kIGFjX2hlYWRlcl9saXN0ICIgdW5pc3RkLmgiCithc19mbl9hcHBlbmQgYWNfaGVhZGVyX2xpc3QgIiBzeXMvcGFyYW0uaCIKK2FzX2ZuX2FwcGVuZCBhY19mdW5jX2xpc3QgIiBzeW1saW5rIgorIyBDaGVjayB0aGF0IHRoZSBwcmVjaW91cyB2YXJpYWJsZXMgc2F2ZWQgaW4gdGhlIGNhY2hlIGhhdmUga2VwdCB0aGUgc2FtZQorIyB2YWx1ZS4KK2FjX2NhY2hlX2NvcnJ1cHRlZD1mYWxzZQorZm9yIGFjX3ZhciBpbiAkYWNfcHJlY2lvdXNfdmFyczsgZG8KKyAgZXZhbCBhY19vbGRfc2V0PVwkYWNfY3ZfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19uZXdfc2V0PVwkYWNfZW52XyR7YWNfdmFyfV9zZXQKKyAgZXZhbCBhY19vbGRfdmFsPVwkYWNfY3ZfZW52XyR7YWNfdmFyfV92YWx1ZQorICBldmFsIGFjX25ld192YWw9XCRhY19lbnZfJHthY192YXJ9X3ZhbHVlCisgIGNhc2UgJGFjX29sZF9zZXQsJGFjX25ld19zZXQgaW4KKyAgICBzZXQsKQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgc2V0IHRvIFxgJGFjX29sZF92YWwnIGluIHRoZSBwcmV2aW91cyBydW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IFxgJGFjX3Zhcicgd2FzIHNldCB0byBcYCRhY19vbGRfdmFsJyBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjI7fQorICAgICAgYWNfY2FjaGVfY29ycnVwdGVkPTogOzsKKyAgICAsc2V0KQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyB3YXMgbm90IHNldCBpbiB0aGUgcHJldmlvdXMgcnVuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBcYCRhY192YXInIHdhcyBub3Qgc2V0IGluIHRoZSBwcmV2aW91cyBydW4iID4mMjt9CisgICAgICBhY19jYWNoZV9jb3JydXB0ZWQ9OiA7OworICAgICwpOzsKKyAgICAqKQorICAgICAgaWYgdGVzdCAieCRhY19vbGRfdmFsIiAhPSAieCRhY19uZXdfdmFsIjsgdGhlbgorCSMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSBkbyBub3QgbGVhZCB0byBmYWlsdXJlLgorCWFjX29sZF92YWxfdz1gZWNobyB4ICRhY19vbGRfdmFsYAorCWFjX25ld192YWxfdz1gZWNobyB4ICRhY19uZXdfdmFsYAorCWlmIHRlc3QgIiRhY19vbGRfdmFsX3ciICE9ICIkYWNfbmV3X3ZhbF93IjsgdGhlbgorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogXGAkYWNfdmFyJyBoYXMgY2hhbmdlZCBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGFjX2NhY2hlX2NvcnJ1cHRlZD06CisJZWxzZQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB3YXJuaW5nOiBpZ25vcmluZyB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gXGAkYWNfdmFyJyBzaW5jZSB0aGUgcHJldmlvdXMgcnVuOiIgPiYyO30KKwkgIGV2YWwgJGFjX3Zhcj1cJGFjX29sZF92YWwKKwlmaQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBmb3JtZXIgdmFsdWU6ICBcYCRhY19vbGRfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGZvcm1lciB2YWx1ZTogIFxgJGFjX29sZF92YWwnIiA+JjI7fQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogICBjdXJyZW50IHZhbHVlOiBcYCRhY19uZXdfdmFsJyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAgIGN1cnJlbnQgdmFsdWU6IFxgJGFjX25ld192YWwnIiA+JjI7fQorICAgICAgZmk7OworICBlc2FjCisgICMgUGFzcyBwcmVjaW91cyB2YXJpYWJsZXMgdG8gY29uZmlnLnN0YXR1cy4KKyAgaWYgdGVzdCAiJGFjX25ld19zZXQiID0gc2V0OyB0aGVuCisgICAgY2FzZSAkYWNfbmV3X3ZhbCBpbgorICAgICpcJyopIGFjX2FyZz0kYWNfdmFyPWAkYXNfZWNobyAiJGFjX25ld192YWwiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgKikgYWNfYXJnPSRhY192YXI9JGFjX25ld192YWwgOzsKKyAgICBlc2FjCisgICAgY2FzZSAiICRhY19jb25maWd1cmVfYXJncyAiIGluCisgICAgICAqIiAnJGFjX2FyZycgIiopIDs7ICMgQXZvaWQgZHVwcy4gIFVzZSBvZiBxdW90ZXMgZW5zdXJlcyBhY2N1cmFjeS4KKyAgICAgICopIGFzX2ZuX2FwcGVuZCBhY19jb25maWd1cmVfYXJncyAiICckYWNfYXJnJyIgOzsKKyAgICBlc2FjCisgIGZpCitkb25lCitpZiAkYWNfY2FjaGVfY29ycnVwdGVkOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogY2hhbmdlcyBpbiB0aGUgZW52aXJvbm1lbnQgY2FuIGNvbXByb21pc2UgdGhlIGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mMjt9CisgIGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQorZmkKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworYWNfYXV4X2Rpcj0KK2ZvciBhY19kaXIgaW4gY29uZmlnICIkc3JjZGlyIi9jb25maWc7IGRvCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQorZG9uZQoraWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gY29uZmlnIFwiJHNyY2RpclwiL2NvbmZpZyIgIiRMSU5FTk8iIDUKK2ZpCisKKyMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAorIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5CisjIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KKworCithY19jb25maWdfaGVhZGVycz0iJGFjX2NvbmZpZ19oZWFkZXJzIGxpYi9jb25maWcuaCIKKworCitNQ09ORklHPS4vTUNPTkZJRworCitCSU5BUllfVFlQRT1iaW4KK0UyRlNQUk9HU19WRVJTSU9OPWBncmVwIEUyRlNQUk9HU19WRVJTSU9OICR7c3JjZGlyfS92ZXJzaW9uLmggIFwKKwl8IGF3ayAne3ByaW50ICQzfScgfCB0ciBcIiAiICIgfCBhd2sgJ3twcmludCAkMX0nYAorREFURT1gZ3JlcCBFMkZTUFJPR1NfREFURSAke3NyY2Rpcn0vdmVyc2lvbi5oIHwgYXdrICd7cHJpbnQgJDN9JyBcCisJfCB0ciBcIiAiICJgCitFMkZTUFJPR1NfREFZPSQoZWNobyAkREFURSB8IGF3ayAtRi0gJ3twcmludCAkMX0nIHwgc2VkIC1lICcvXlsxLTldJC9zL14vMC8nKQorTU9OVEg9YGVjaG8gJERBVEUgfCBhd2sgLUYtICd7cHJpbnQgJDJ9J2AKK1lFQVI9YGVjaG8gJERBVEUgfCBhd2sgLUYtICd7cHJpbnQgJDN9J2AKKworaWYgZXhwciAkWUVBUiAiPiIgMTkwMCA+IC9kZXYvbnVsbCA7IHRoZW4KKwlFMkZTUFJPR1NfWUVBUj0kWUVBUgorZWxpZiBleHByICRZRUFSICI+IiA5MCA+L2Rldi9udWxsIDsgdGhlbgorCUUyRlNQUk9HU19ZRUFSPTE5JFlFQVIKK2Vsc2UKKwlFMkZTUFJPR1NfWUVBUj0yMCRZRUFSCitmaQorCitjYXNlICRNT05USCBpbgorSmFuKQlNT05USF9OVU09MDE7IEUyRlNQUk9HU19NT05USD0iSmFudWFyeSIgOzsKK0ZlYikJTU9OVEhfTlVNPTAyOyBFMkZTUFJPR1NfTU9OVEg9IkZlYnJ1YXJ5IiA7OworTWFyKQlNT05USF9OVU09MDM7IEUyRlNQUk9HU19NT05USD0iTWFyY2giIDs7CitBcHIpCU1PTlRIX05VTT0wNDsgRTJGU1BST0dTX01PTlRIPSJBcHJpbCIgOzsKK01heSkJTU9OVEhfTlVNPTA1OyBFMkZTUFJPR1NfTU9OVEg9Ik1heSIgOzsKK0p1bikJTU9OVEhfTlVNPTA2OyBFMkZTUFJPR1NfTU9OVEg9Ikp1bmUiIDs7CitKdWwpCU1PTlRIX05VTT0wNzsgRTJGU1BST0dTX01PTlRIPSJKdWx5IiA7OworQXVnKQlNT05USF9OVU09MDg7IEUyRlNQUk9HU19NT05USD0iQXVndXN0IiA7OworU2VwKQlNT05USF9OVU09MDk7IEUyRlNQUk9HU19NT05USD0iU2VwdGVtYmVyIiA7OworT2N0KQlNT05USF9OVU09MTA7IEUyRlNQUk9HU19NT05USD0iT2N0b2JlciIgOzsKK05vdikJTU9OVEhfTlVNPTExOyBFMkZTUFJPR1NfTU9OVEg9Ik5vdmVtYmVyIiA7OworRGVjKQlNT05USF9OVU09MTI7IEUyRlNQUk9HU19NT05USD0iRGVjZW1iZXIiIDs7CisqKQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVua25vd24gbW9udGggJE1PTlRIPz8iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5rbm93biBtb250aCAkTU9OVEg/PyIgPiYyO30gOzsKK2VzYWMKKworYmFzZV92ZXI9YGVjaG8gJEUyRlNQUk9HU19WRVJTSU9OIHwgXAorCSAgICAgICBzZWQgLWUgJ3MvLVdJUC8vJyAtZSAncy9wcmUtLy8nIC1lICdzLy1QTFVTLy8nYAorCitkYXRlX3NwZWM9JHtFMkZTUFJPR1NfWUVBUn0uJHtNT05USF9OVU19LiR7RTJGU1BST0dTX0RBWX0KKworY2FzZSAkRTJGU1BST0dTX1ZFUlNJT04gaW4KKyotV0lQfHByZS0qKQorCUUyRlNQUk9HU19QS0dWRVI9IiRiYXNlX3Zlcn5XSVAuJGRhdGVfc3BlYyIKKwk7OworKikKKwlFMkZTUFJPR1NfUEtHVkVSPSIkYmFzZV92ZXIiCisJOzsKK2VzYWMKKwordW5zZXQgREFURSBNT05USCBZRUFSIGJhc2VfdmVyIHByZV92ZXJzIGRhdGVfc3BlYworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmaWxlIGZvciBlMmZzcHJvZ3MgdmVyc2lvbiAkRTJGU1BST0dTX1ZFUlNJT04iID4mNQorJGFzX2VjaG8gIkdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmaWxlIGZvciBlMmZzcHJvZ3MgdmVyc2lvbiAkRTJGU1BST0dTX1ZFUlNJT04iID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IFJlbGVhc2UgZGF0ZSBpcyAke0UyRlNQUk9HU19NT05USH0sICR7RTJGU1BST0dTX1lFQVJ9IiA+JjUKKyRhc19lY2hvICJSZWxlYXNlIGRhdGUgaXMgJHtFMkZTUFJPR1NfTU9OVEh9LCAke0UyRlNQUk9HU19ZRUFSfSIgPiY2OyB9CisKKworCisKKworV0lUSF9ESUVUX0xJQkM9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZGlldC1saWJjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kaWV0X2xpYmMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2RpZXRfbGliYzsgQ0M9ImRpZXQgY2MgLW5vc3RkaW5jIgorV0lUSF9ESUVUX0xJQkM9eWVzCitpZiB0ZXN0IC16ICIkTElCUyIKK3RoZW4KKwlMSUJTPSItbGNvbXBhdCIKK2Vsc2UKKwlMSUJTPSIkTElCUyAtbGNvbXBhdCIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogQ0M9JENDIiA+JjUKKyRhc19lY2hvICJDQz0kQ0MiID4mNjsgfQorZmkKKyMgTWFrZSBzdXJlIHdlIGNhbiBydW4gY29uZmlnLnN1Yi4KKyRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgc3VuNCA+L2Rldi9udWxsIDI+JjEgfHwKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfYnVpbGQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19idWlsZF9hbGlhcz0kYnVpbGRfYWxpYXMKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhY19idWlsZF9hbGlhcz1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiYAordGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZ3Vlc3MgYnVpbGQgdHlwZTsgeW91IG11c3Qgc3BlY2lmeSBvbmUiICIkTElORU5PIiA1CithY19jdl9idWlsZD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkYWNfYnVpbGRfYWxpYXNgIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KK2Nhc2UgJGFjX2N2X2J1aWxkIGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworZXNhYworYnVpbGQ9JGFjX2N2X2J1aWxkCithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfYnVpbGQKK3NoaWZ0CitidWlsZF9jcHU9JDEKK2J1aWxkX3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2J1aWxkX29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRidWlsZF9vcyBpbiAqXCAqKSBidWlsZF9vcz1gZWNobyAiJGJ1aWxkX29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgorICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAorZWxzZQorICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAorICAgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9ob3N0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaG9zdCIgPiY2OyB9CitjYXNlICRhY19jdl9ob3N0IGluCisqLSotKikgOzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7Citlc2FjCitob3N0PSRhY19jdl9ob3N0CithY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCitzZXQgeCAkYWNfY3ZfaG9zdAorc2hpZnQKK2hvc3RfY3B1PSQxCitob3N0X3ZlbmRvcj0kMgorc2hpZnQ7IHNoaWZ0CisjIFJlbWVtYmVyLCB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIElGUyBpcyB1c2VkIHRvIGNyZWF0ZSAkKiwKKyMgZXhjZXB0IHdpdGggb2xkIHNoZWxsczoKK2hvc3Rfb3M9JCoKK0lGUz0kYWNfc2F2ZV9JRlMKK2Nhc2UgJGhvc3Rfb3MgaW4gKlwgKikgaG9zdF9vcz1gZWNobyAiJGhvc3Rfb3MiIHwgc2VkICdzLyAvLS9nJ2A7OyBlc2FjCisKKworRExPUEVOX0xJQj0nJworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9Z2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWdjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitDQz0kYWNfY3ZfcHJvZ19DQworaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENDIiA+JjUKKyRhc19lY2hvICIkQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0NDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSJnY2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQ0M9JGFjX2N2X3Byb2dfYWNfY3RfQ0MKK2lmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9DQyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfQ0MiID0geDsgdGhlbgorICAgIENDPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ0M9JGFjX2N0X0NDCisgIGZpCitlbHNlCisgIENDPSIkYWNfY3ZfcHJvZ19DQyIKK2ZpCisKK2lmIHRlc3QgLXogIiRDQyI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiR7YWNfdG9vbF9wcmVmaXh9Y2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgZmkKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNjOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKKyAgYWNfcHJvZ19yZWplY3RlZD1ubworYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgaWYgdGVzdCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPSAiL3Vzci91Y2IvY2MiOyB0aGVuCisgICAgICAgYWNfcHJvZ19yZWplY3RlZD15ZXMKKyAgICAgICBjb250aW51ZQorICAgICBmaQorICAgIGFjX2N2X3Byb2dfQ0M9ImNjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitpZiB0ZXN0ICRhY19wcm9nX3JlamVjdGVkID0geWVzOyB0aGVuCisgICMgV2UgZm91bmQgYSBib2dvbiBpbiB0aGUgcGF0aCwgc28gbWFrZSBzdXJlIHdlIG5ldmVyIHVzZSBpdC4KKyAgc2V0IGR1bW15ICRhY19jdl9wcm9nX0NDCisgIHNoaWZ0CisgIGlmIHRlc3QgJCMgIT0gMDsgdGhlbgorICAgICMgV2UgY2hvc2UgYSBkaWZmZXJlbnQgY29tcGlsZXIgZnJvbSB0aGUgYm9ndXMgb25lLgorICAgICMgSG93ZXZlciwgaXQgaGFzIHRoZSBzYW1lIGJhc2VuYW1lLCBzbyB0aGUgYm9nb24gd2lsbCBiZSBjaG9zZW4KKyAgICAjIGZpcnN0IGlmIHdlIHNldCBDQyB0byBqdXN0IHRoZSBiYXNlbmFtZTsgdXNlIHRoZSBmdWxsIGZpbGUgbmFtZS4KKyAgICBzaGlmdAorICAgIGFjX2N2X3Byb2dfQ0M9IiRhc19kaXIvJGFjX3dvcmQkezErJyAnfSRAIgorICBmaQorZmkKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gY2wuZXhlCisgIGRvCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICB0ZXN0IC1uICIkQ0MiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgIGFjX2N0X0NDPSRDQworICBmb3IgYWNfcHJvZyBpbiBjbC5leGUKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iJGFjX2N0X0NDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRhY19jdF9DQyIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAgICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENDPSRhY19jdF9DQworICBmaQorZmkKKworZmkKKworCit0ZXN0IC16ICIkQ0MiICYmIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgQyBjb21waWxlciBmb3VuZCBpbiBcJFBBVEgKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisKKyMgUHJvdmlkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlci4KKyRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIHZlcnNpb24iID4mNQorc2V0IFggJGFjX2NvbXBpbGUKK2FjX2NvbXBpbGVyPSQyCitmb3IgYWNfb3B0aW9uIGluIC0tdmVyc2lvbiAtdiAtViAtcXZlcnNpb247IGRvCisgIHsgeyBhY190cnk9IiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIKK2Nhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX2NvbXBpbGVyICRhY19vcHRpb24gPiY1IikgMj5jb25mdGVzdC5lcnIKKyAgYWNfc3RhdHVzPSQ/CisgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgc2VkICcxMGFcCisuLi4gcmVzdCBvZiBzdGRlcnIgb3V0cHV0IGRlbGV0ZWQgLi4uCisgICAgICAgICAxMHEnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIxCisgICAgY2F0IGNvbmZ0ZXN0LmVyMSA+JjUKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QuZXIxIGNvbmZ0ZXN0LmVycgorICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorZG9uZQorCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCithY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzIGEub3V0IGEub3V0LmRTWU0gYS5leGUgYi5vdXQiCisjIFRyeSB0byBjcmVhdGUgYW4gZXhlY3V0YWJsZSB3aXRob3V0IC1vIGZpcnN0LCBkaXNyZWdhcmQgYS5vdXQuCisjIEl0IHdpbGwgaGVscCB1cyBkaWFnbm9zZSBicm9rZW4gY29tcGlsZXJzLCBhbmQgZmluZGluZyBvdXQgYW4gaW50dWl0aW9uCisjIG9mIGV4ZWV4dC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciB3b3JrcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIHdvcmtzLi4uICIgPiY2OyB9CithY19saW5rX2RlZmF1bHQ9YCRhc19lY2hvICIkYWNfbGluayIgfCBzZWQgJ3MvIC1vICpjb25mdGVzdFteIF0qLy8nYAorCisjIFRoZSBwb3NzaWJsZSBvdXRwdXQgZmlsZXM6CithY19maWxlcz0iYS5vdXQgY29uZnRlc3QuZXhlIGNvbmZ0ZXN0IGEuZXhlIGFfb3V0LmV4ZSBiLm91dCBjb25mdGVzdC4qIgorCithY19ybWZpbGVzPQorZm9yIGFjX2ZpbGUgaW4gJGFjX2ZpbGVzCitkbworICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKSA7OworICAgICogKSBhY19ybWZpbGVzPSIkYWNfcm1maWxlcyAkYWNfZmlsZSI7OworICBlc2FjCitkb25lCitybSAtZiAkYWNfcm1maWxlcworCitpZiB7IHsgYWNfdHJ5PSIkYWNfbGlua19kZWZhdWx0IgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfbGlua19kZWZhdWx0IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4gOgorICAjIEF1dG9jb25mLTIuMTMgY291bGQgc2V0IHRoZSBhY19jdl9leGVleHQgdmFyaWFibGUgdG8gYG5vJy4KKyMgU28gaWdub3JlIGEgdmFsdWUgb2YgYG5vJywgb3RoZXJ3aXNlIHRoaXMgd291bGQgbGVhZCB0byBgRVhFRVhUID0gbm8nCisjIGluIGEgTWFrZWZpbGUuICBXZSBzaG91bGQgbm90IG92ZXJyaWRlIGFjX2N2X2V4ZWV4dCBpZiBpdCB3YXMgY2FjaGVkLAorIyBzbyB0aGF0IHRoZSB1c2VyIGNhbiBzaG9ydC1jaXJjdWl0IHRoaXMgdGVzdCBmb3IgY29tcGlsZXJzIHVua25vd24gdG8KKyMgQXV0b2NvbmYuCitmb3IgYWNfZmlsZSBpbiAkYWNfZmlsZXMgJycKK2RvCisgIHRlc3QgLWYgIiRhY19maWxlIiB8fCBjb250aW51ZQorICBjYXNlICRhY19maWxlIGluCisgICAgKi4kYWNfZXh0IHwgKi54Y29mZiB8ICoudGRzIHwgKi5kIHwgKi5wZGIgfCAqLnhTWU0gfCAqLmJiIHwgKi5iYmcgfCAqLm1hcCB8ICouaW5mIHwgKi5kU1lNIHwgKi5vIHwgKi5vYmogKQorCTs7CisgICAgW2FiXS5vdXQgKQorCSMgV2UgZm91bmQgdGhlIGRlZmF1bHQgZXhlY3V0YWJsZSwgYnV0IGV4ZWV4dD0nJyBpcyBtb3N0CisJIyBjZXJ0YWlubHkgcmlnaHQuCisJYnJlYWs7OworICAgICouKiApCisJaWYgdGVzdCAiJHthY19jdl9leGVleHQrc2V0fSIgPSBzZXQgJiYgdGVzdCAiJGFjX2N2X2V4ZWV4dCIgIT0gbm87CisJdGhlbiA6OyBlbHNlCisJICAgYWNfY3ZfZXhlZXh0PWBleHByICIkYWNfZmlsZSIgOiAnW14uXSpcKFwuLipcKSdgCisJZmkKKwkjIFdlIHNldCBhY19jdl9leGVleHQgaGVyZSBiZWNhdXNlIHRoZSBsYXRlciB0ZXN0IGZvciBpdCBpcyBub3QKKwkjIHNhZmU6IGNyb3NzIGNvbXBpbGVycyBtYXkgbm90IGFkZCB0aGUgc3VmZml4IGlmIGdpdmVuIGFuIGAtbycKKwkjIGFyZ3VtZW50LCBzbyB3ZSBtYXkgbmVlZCB0byBrbm93IGl0IGF0IHRoYXQgcG9pbnQgYWxyZWFkeS4KKwkjIEV2ZW4gaWYgdGhpcyBzZWN0aW9uIGxvb2tzIGNydWZ0eTogaXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YKKwkjIGFjdHVhbGx5IHdvcmtpbmcuCisJYnJlYWs7OworICAgICogKQorCWJyZWFrOzsKKyAgZXNhYworZG9uZQordGVzdCAiJGFjX2N2X2V4ZWV4dCIgPSBubyAmJiBhY19jdl9leGVleHQ9CisKK2Vsc2UKKyAgYWNfZmlsZT0nJworZmkKK2lmIHRlc3QgLXogIiRhY19maWxlIjsgdGhlbiA6CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorJGFzX2VjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1CitzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19leHQgPiY1CisKK3sgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgNzcgIkMgY29tcGlsZXIgY2Fubm90IGNyZWF0ZSBleGVjdXRhYmxlcworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDIGNvbXBpbGVyIGRlZmF1bHQgb3V0cHV0IGZpbGUgbmFtZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQyBjb21waWxlciBkZWZhdWx0IG91dHB1dCBmaWxlIG5hbWUuLi4gIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFjX2ZpbGUiID4mNjsgfQorYWNfZXhlZXh0PSRhY19jdl9leGVleHQKKworcm0gLWYgLXIgYS5vdXQgYS5vdXQuZFNZTSBhLmV4ZSBjb25mdGVzdCRhY19jdl9leGVleHQgYi5vdXQKK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2YgZXhlY3V0YWJsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBleGVjdXRhYmxlcy4uLiAiID4mNjsgfQoraWYgeyB7IGFjX3RyeT0iJGFjX2xpbmsiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19saW5rIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4gOgorICAjIElmIGJvdGggYGNvbmZ0ZXN0LmV4ZScgYW5kIGBjb25mdGVzdCcgYXJlIGBwcmVzZW50JyAod2VsbCwgb2JzZXJ2YWJsZSkKKyMgY2F0Y2ggYGNvbmZ0ZXN0LmV4ZScuICBGb3IgaW5zdGFuY2Ugd2l0aCBDeWd3aW4sIGBscyBjb25mdGVzdCcgd2lsbAorIyB3b3JrIHByb3Blcmx5IChpLmUuLCByZWZlciB0byBgY29uZnRlc3QuZXhlJyksIHdoaWxlIGl0IHdvbid0IHdpdGgKKyMgYHJtJy4KK2ZvciBhY19maWxlIGluIGNvbmZ0ZXN0LmV4ZSBjb25mdGVzdCBjb25mdGVzdC4qOyBkbworICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWUKKyAgY2FzZSAkYWNfZmlsZSBpbgorICAgICouJGFjX2V4dCB8ICoueGNvZmYgfCAqLnRkcyB8ICouZCB8ICoucGRiIHwgKi54U1lNIHwgKi5iYiB8ICouYmJnIHwgKi5tYXAgfCAqLmluZiB8ICouZFNZTSB8ICoubyB8ICoub2JqICkgOzsKKyAgICAqLiogKSBhY19jdl9leGVleHQ9YGV4cHIgIiRhY19maWxlIiA6ICdbXi5dKlwoXC4uKlwpJ2AKKwkgIGJyZWFrOzsKKyAgICAqICkgYnJlYWs7OworICBlc2FjCitkb25lCitlbHNlCisgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBleGVjdXRhYmxlczogY2Fubm90IGNvbXBpbGUgYW5kIGxpbmsKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorcm0gLWYgY29uZnRlc3QgY29uZnRlc3QkYWNfY3ZfZXhlZXh0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4ZWV4dCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2V4ZWV4dCIgPiY2OyB9CisKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0VYRUVYVD0kYWNfY3ZfZXhlZXh0CithY19leGVleHQ9JEVYRUVYVAorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKK0ZJTEUgKmYgPSBmb3BlbiAoImNvbmZ0ZXN0Lm91dCIsICJ3Iik7CisgcmV0dXJuIGZlcnJvciAoZikgfHwgZmNsb3NlIChmKSAhPSAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgY29uZnRlc3Qub3V0IgorIyBDaGVjayB0aGF0IHRoZSBjb21waWxlciBwcm9kdWNlcyBleGVjdXRhYmxlcyB3ZSBjYW4gcnVuLiAgSWYgbm90LCBlaXRoZXIKKyMgdGhlIGNvbXBpbGVyIGlzIGJyb2tlbiwgb3Igd2UgY3Jvc3MgY29tcGlsZS4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIGNyb3NzIGNvbXBpbGluZy4uLiAiID4mNjsgfQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0geWVzOyB0aGVuCisgIHsgeyBhY190cnk9IiRhY19saW5rIgorY2FzZSAiKCgkYWNfdHJ5IiBpbgorICAqXCIqIHwgKlxgKiB8ICpcXCopIGFjX3RyeV9lY2hvPVwkYWNfdHJ5OzsKKyAgKikgYWNfdHJ5X2VjaG89JGFjX3RyeTs7Citlc2FjCitldmFsIGFjX3RyeV9lY2hvPSJcIlwkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRhY190cnlfZWNob1wiIgorJGFzX2VjaG8gIiRhY190cnlfZWNobyI7IH0gPiY1CisgIChldmFsICIkYWNfbGluayIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisgIGlmIHsgYWNfdHJ5PScuL2NvbmZ0ZXN0JGFjX2N2X2V4ZWV4dCcKKyAgeyB7IGNhc2UgIigoJGFjX3RyeSIgaW4KKyAgKlwiKiB8ICpcYCogfCAqXFwqKSBhY190cnlfZWNobz1cJGFjX3RyeTs7CisgICopIGFjX3RyeV9lY2hvPSRhY190cnk7OworZXNhYworZXZhbCBhY190cnlfZWNobz0iXCJcJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkYWNfdHJ5X2VjaG9cIiIKKyRhc19lY2hvICIkYWNfdHJ5X2VjaG8iOyB9ID4mNQorICAoZXZhbCAiJGFjX3RyeSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVuCisgICAgY3Jvc3NfY29tcGlsaW5nPW5vCisgIGVsc2UKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCisJY3Jvc3NfY29tcGlsaW5nPXllcworICAgIGVsc2UKKwl7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuIEMgY29tcGlsZWQgcHJvZ3JhbXMuCitJZiB5b3UgbWVhbnQgdG8gY3Jvc3MgY29tcGlsZSwgdXNlIFxgLS1ob3N0Jy4KK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgICAgZmkKKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGNyb3NzX2NvbXBpbGluZyIgPiY1CiskYXNfZWNobyAiJGNyb3NzX2NvbXBpbGluZyIgPiY2OyB9CisKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQgY29uZnRlc3QkYWNfY3ZfZXhlZXh0IGNvbmZ0ZXN0Lm91dAorYWNfY2xlYW5fZmlsZXM9JGFjX2NsZWFuX2ZpbGVzX3NhdmUKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfb2JqZXh0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitybSAtZiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iagoraWYgeyB7IGFjX3RyeT0iJGFjX2NvbXBpbGUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4gOgorICBmb3IgYWNfZmlsZSBpbiBjb25mdGVzdC5vIGNvbmZ0ZXN0Lm9iaiBjb25mdGVzdC4qOyBkbworICB0ZXN0IC1mICIkYWNfZmlsZSIgfHwgY29udGludWU7CisgIGNhc2UgJGFjX2ZpbGUgaW4KKyAgICAqLiRhY19leHQgfCAqLnhjb2ZmIHwgKi50ZHMgfCAqLmQgfCAqLnBkYiB8ICoueFNZTSB8ICouYmIgfCAqLmJiZyB8ICoubWFwIHwgKi5pbmYgfCAqLmRTWU0gKSA7OworICAgICopIGFjX2N2X29iamV4dD1gZXhwciAiJGFjX2ZpbGUiIDogJy4qXC5cKC4qXCknYAorICAgICAgIGJyZWFrOzsKKyAgZXNhYworZG9uZQorZWxzZQorICAkYXNfZWNobyAiJGFzX21lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKworeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiY2Fubm90IGNvbXB1dGUgc3VmZml4IG9mIG9iamVjdCBmaWxlczogY2Fubm90IGNvbXBpbGUKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorcm0gLWYgY29uZnRlc3QuJGFjX2N2X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9vYmpleHQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9vYmpleHQiID4mNjsgfQorT0JKRVhUPSRhY19jdl9vYmpleHQKK2FjX29iamV4dD0kT0JKRVhUCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19jb21waWxlcl9nbnUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworI2lmbmRlZiBfX0dOVUNfXworICAgICAgIGNob2tlIG1lCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2NvbXBpbGVyX2dudT15ZXMKK2Vsc2UKKyAgYWNfY29tcGlsZXJfZ251PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CithY19jdl9jX2NvbXBpbGVyX2dudT0kYWNfY29tcGlsZXJfZ251CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfY19jb21waWxlcl9nbnUiID4mNjsgfQoraWYgdGVzdCAkYWNfY29tcGlsZXJfZ251ID0geWVzOyB0aGVuCisgIEdDQz15ZXMKK2Vsc2UKKyAgR0NDPQorZmkKK2FjX3Rlc3RfQ0ZMQUdTPSR7Q0ZMQUdTK3NldH0KK2FjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZworICAgYWNfY193ZXJyb3JfZmxhZz15ZXMKKyAgIGFjX2N2X3Byb2dfY2NfZz1ubworICAgQ0ZMQUdTPSItZyIKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitlbHNlCisgIENGTEFHUz0iIgorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnCisJIENGTEFHUz0iLWciCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9wcm9nX2NjX2c9eWVzCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICBhY19jX3dlcnJvcl9mbGFnPSRhY19zYXZlX2Nfd2Vycm9yX2ZsYWcKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3Byb2dfY2NfZyIgPiY2OyB9CitpZiB0ZXN0ICIkYWNfdGVzdF9DRkxBR1MiID0gc2V0OyB0aGVuCisgIENGTEFHUz0kYWNfc2F2ZV9DRkxBR1MKK2VsaWYgdGVzdCAkYWNfY3ZfcHJvZ19jY19nID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgQ0ZMQUdTPSItZyAtTzIiCisgIGVsc2UKKyAgICBDRkxBR1M9Ii1nIgorICBmaQorZWxzZQorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENGTEFHUz0iLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPQorICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRDQyBvcHRpb24gdG8gYWNjZXB0IElTTyBDODkuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19jY19jODkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jdl9wcm9nX2NjX2M4OT1ubworYWNfc2F2ZV9DQz0kQ0MKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorc3RydWN0IHN0YXQ7CisvKiBNb3N0IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIHN0b2xlbiBmcm9tIFJDUyA1LjcncyBzcmMvY29uZi5zaC4gICovCitzdHJ1Y3QgYnVmIHsgaW50IHg7IH07CitGSUxFICogKCpyY3NvcGVuKSAoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpOworc3RhdGljIGNoYXIgKmUgKHAsIGkpCisgICAgIGNoYXIgKipwOworICAgICBpbnQgaTsKK3sKKyAgcmV0dXJuIHBbaV07Cit9CitzdGF0aWMgY2hhciAqZiAoY2hhciAqICgqZykgKGNoYXIgKiosIGludCksIGNoYXIgKipwLCAuLi4pCit7CisgIGNoYXIgKnM7CisgIHZhX2xpc3QgdjsKKyAgdmFfc3RhcnQgKHYscCk7CisgIHMgPSBnIChwLCB2YV9hcmcgKHYsaW50KSk7CisgIHZhX2VuZCAodik7CisgIHJldHVybiBzOworfQorCisvKiBPU0YgNC4wIENvbXBhcSBjYyBpcyBzb21lIHNvcnQgb2YgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdC4gIEl0IGhhcworICAgZnVuY3Rpb24gcHJvdG90eXBlcyBhbmQgc3R1ZmYsIGJ1dCBub3QgJ1x4SEgnIGhleCBjaGFyYWN0ZXIgY29uc3RhbnRzLgorICAgVGhlc2UgZG9uJ3QgcHJvdm9rZSBhbiBlcnJvciB1bmZvcnR1bmF0ZWx5LCBpbnN0ZWFkIGFyZSBzaWxlbnRseSB0cmVhdGVkCisgICBhcyAneCcuICBUaGUgZm9sbG93aW5nIGluZHVjZXMgYW4gZXJyb3IsIHVudGlsIC1zdGQgaXMgYWRkZWQgdG8gZ2V0CisgICBwcm9wZXIgQU5TSSBtb2RlLiAgQ3VyaW91c2x5ICdceDAwJyE9J3gnIGFsd2F5cyBjb21lcyBvdXQgdHJ1ZSwgZm9yIGFuCisgICBhcnJheSBzaXplIGF0IGxlYXN0LiAgSXQncyBuZWNlc3NhcnkgdG8gd3JpdGUgJ1x4MDAnPT0wIHRvIGdldCBzb21ldGhpbmcKKyAgIHRoYXQncyB0cnVlIG9ubHkgd2l0aCAtc3RkLiAgKi8KK2ludCBvc2Y0X2NjX2FycmF5IFsnXHgwMCcgPT0gMCA/IDEgOiAtMV07CisKKy8qIElCTSBDIDYgZm9yIEFJWCBpcyBhbG1vc3QtQU5TSSBieSBkZWZhdWx0LCBidXQgaXQgcmVwbGFjZXMgbWFjcm8gcGFyYW1ldGVycworICAgaW5zaWRlIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMuICAqLworI2RlZmluZSBGT08oeCkgJ3gnCitpbnQgeGxjNl9jY19hcnJheVtGT08oYSkgPT0gJ3gnID8gMSA6IC0xXTsKKworaW50IHRlc3QgKGludCBpLCBkb3VibGUgeCk7CitzdHJ1Y3QgczEge2ludCAoKmYpIChpbnQgYSk7fTsKK3N0cnVjdCBzMiB7aW50ICgqZikgKGRvdWJsZSBhKTt9OworaW50IHBhaXJuYW1lcyAoaW50LCBjaGFyICoqLCBGSUxFICooKikoc3RydWN0IGJ1ZiAqLCBzdHJ1Y3Qgc3RhdCAqLCBpbnQpLCBpbnQsIGludCk7CitpbnQgYXJnYzsKK2NoYXIgKiphcmd2OworaW50CittYWluICgpCit7CityZXR1cm4gZiAoZSwgYXJndiwgMCkgIT0gYXJndlswXSAgfHwgIGYgKGUsIGFyZ3YsIDEpICE9IGFyZ3ZbMV07CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2ZvciBhY19hcmcgaW4gJycgLXFsYW5nbHZsPWV4dGM4OSAtcWxhbmdsdmw9YW5zaSAtc3RkIFwKKwktQWUgIi1BYSAtRF9IUFVYX1NPVVJDRSIgIi1YYyAtRF9fRVhURU5TSU9OU19fIgorZG8KKyAgQ0M9IiRhY19zYXZlX0NDICRhY19hcmciCisgIGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19jODk9JGFjX2FyZworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyAgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0gInhubyIgJiYgYnJlYWsKK2RvbmUKK3JtIC1mIGNvbmZ0ZXN0LiRhY19leHQKK0NDPSRhY19zYXZlX0NDCisKK2ZpCisjIEFDX0NBQ0hFX1ZBTAorY2FzZSAieCRhY19jdl9wcm9nX2NjX2M4OSIgaW4KKyAgeCkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm9uZSBuZWVkZWQiID4mNQorJGFzX2VjaG8gIm5vbmUgbmVlZGVkIiA+JjY7IH0gOzsKKyAgeG5vKQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB1bnN1cHBvcnRlZCIgPiY1CiskYXNfZWNobyAidW5zdXBwb3J0ZWQiID4mNjsgfSA7OworICAqKQorICAgIENDPSIkQ0MgJGFjX2N2X3Byb2dfY2NfYzg5IgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcHJvZ19jY19jODkiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2M4OSIgPiY2OyB9IDs7Citlc2FjCitpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfY2NfYzg5IiAhPSB4bm87IHRoZW4gOgorCitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGRsICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBkbG9wZW4gKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBkbG9wZW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2RsX2Rsb3Blbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX2RsX2Rsb3Blbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllczsgdGhlbiA6CisgIERMT1BFTl9MSUI9LWxkbAorZmkKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY2Mgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2NjK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9jYzsgYXNfZm5fZXJyb3IgJD8gIi0td2l0aC1jYyBubyBsb25nZXIgc3VwcG9ydGVkOyB1c2UgQ0M9IGluc3RlYWQiICIkTElORU5PIiA1CitmaQorCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtY2NvcHRzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9jY29wdHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2Njb3B0czsgYXNfZm5fZXJyb3IgJD8gIi0td2l0aC1jY29wdHMgbm8gbG9uZ2VyIHN1cHBvcnRlZDsgdXNlIENGTEFHUz0gaW5zdGVhZCIgIiRMSU5FTk8iIDUKK2ZpCisKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1sZG9wdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX2xkb3B0cytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGRvcHRzOyBhc19mbl9lcnJvciAkPyAiLS13aXRoLWxkb3B0cyBubyBsb25nZXIgc3VwcG9ydGVkOyB1c2UgTERGTEFHUz0gaW5zdGVhZCIgIiRMSU5FTk8iIDUKK2ZpCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWdjYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgorICBhY19jdl9wcm9nX0NDPSIkQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19DQz0iJHthY190b29sX3ByZWZpeH1nY2MiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQ0M9JGFjX2N2X3Byb2dfQ0MKK2lmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CiskYXNfZWNobyAiJENDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19DQyI7IHRoZW4KKyAgYWNfY3RfQ0M9JENDCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2NjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfY3RfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9DQz0iZ2NjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NDPSRhY19jdl9wcm9nX2FjX2N0X0NDCitpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ0MiID4mNQorJGFzX2VjaG8gIiRhY19jdF9DQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NDIiA9IHg7IHRoZW4KKyAgICBDQz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENDPSRhY19jdF9DQworICBmaQorZWxzZQorICBDQz0iJGFjX2N2X3Byb2dfQ0MiCitmaQorCitpZiB0ZXN0IC16ICIkQ0MiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1jYyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0NDPSIke2FjX3Rvb2xfcHJlZml4fWNjIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIGZpCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNjIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjYzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfQ0M9IiRDQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCisgIGFjX3Byb2dfcmVqZWN0ZWQ9bm8KK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGlmIHRlc3QgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID0gIi91c3IvdWNiL2NjIjsgdGhlbgorICAgICAgIGFjX3Byb2dfcmVqZWN0ZWQ9eWVzCisgICAgICAgY29udGludWUKKyAgICAgZmkKKyAgICBhY19jdl9wcm9nX0NDPSJjYyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworaWYgdGVzdCAkYWNfcHJvZ19yZWplY3RlZCA9IHllczsgdGhlbgorICAjIFdlIGZvdW5kIGEgYm9nb24gaW4gdGhlIHBhdGgsIHNvIG1ha2Ugc3VyZSB3ZSBuZXZlciB1c2UgaXQuCisgIHNldCBkdW1teSAkYWNfY3ZfcHJvZ19DQworICBzaGlmdAorICBpZiB0ZXN0ICQjICE9IDA7IHRoZW4KKyAgICAjIFdlIGNob3NlIGEgZGlmZmVyZW50IGNvbXBpbGVyIGZyb20gdGhlIGJvZ3VzIG9uZS4KKyAgICAjIEhvd2V2ZXIsIGl0IGhhcyB0aGUgc2FtZSBiYXNlbmFtZSwgc28gdGhlIGJvZ29uIHdpbGwgYmUgY2hvc2VuCisgICAgIyBmaXJzdCBpZiB3ZSBzZXQgQ0MgdG8ganVzdCB0aGUgYmFzZW5hbWU7IHVzZSB0aGUgZnVsbCBmaWxlIG5hbWUuCisgICAgc2hpZnQKKyAgICBhY19jdl9wcm9nX0NDPSIkYXNfZGlyLyRhY193b3JkJHsxKycgJ30kQCIKKyAgZmkKK2ZpCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGNsLmV4ZQorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19DQys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRDQyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19DQz0iJENDIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfQ0M9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0NDPSRhY19jdl9wcm9nX0NDCitpZiB0ZXN0IC1uICIkQ0MiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQorJGFzX2VjaG8gIiRDQyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgdGVzdCAtbiAiJENDIiAmJiBicmVhaworICBkb25lCitmaQoraWYgdGVzdCAteiAiJENDIjsgdGhlbgorICBhY19jdF9DQz0kQ0MKKyAgZm9yIGFjX3Byb2cgaW4gY2wuZXhlCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfQ0MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ0MiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfQ0M9IiRhY19jdF9DQyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NDPSIkYWNfcHJvZyIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCithY19jdF9DQz0kYWNfY3ZfcHJvZ19hY19jdF9DQworaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0NDIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ0MiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkYWNfY3RfQ0MiICYmIGJyZWFrCitkb25lCisKKyAgaWYgdGVzdCAieCRhY19jdF9DQyIgPSB4OyB0aGVuCisgICAgQ0M9IiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDQz0kYWNfY3RfQ0MKKyAgZmkKK2ZpCisKK2ZpCisKKwordGVzdCAteiAiJENDIiAmJiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorCisjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiskYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9uIiA+JjUKK3NldCBYICRhY19jb21waWxlCithY19jb21waWxlcj0kMgorZm9yIGFjX29wdGlvbiBpbiAtLXZlcnNpb24gLXYgLVYgLXF2ZXJzaW9uOyBkbworICB7IHsgYWNfdHJ5PSIkYWNfY29tcGlsZXIgJGFjX29wdGlvbiA+JjUiCitjYXNlICIoKCRhY190cnkiIGluCisgICpcIiogfCAqXGAqIHwgKlxcKikgYWNfdHJ5X2VjaG89XCRhY190cnk7OworICAqKSBhY190cnlfZWNobz0kYWNfdHJ5OzsKK2VzYWMKK2V2YWwgYWNfdHJ5X2VjaG89IlwiXCRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX3RyeV9lY2hvXCIiCiskYXNfZWNobyAiJGFjX3RyeV9lY2hvIjsgfSA+JjUKKyAgKGV2YWwgIiRhY19jb21waWxlciAkYWNfb3B0aW9uID4mNSIpIDI+Y29uZnRlc3QuZXJyCisgIGFjX3N0YXR1cz0kPworICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgIHNlZCAnMTBhXAorLi4uIHJlc3Qgb2Ygc3RkZXJyIG91dHB1dCBkZWxldGVkIC4uLgorICAgICAgICAgMTBxJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMQorICAgIGNhdCBjb25mdGVzdC5lcjEgPiY1CisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KK2RvbmUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgY29tcGlsZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfY29tcGlsZXJfZ251Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKyNpZm5kZWYgX19HTlVDX18KKyAgICAgICBjaG9rZSBtZQorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jb21waWxlcl9nbnU9eWVzCitlbHNlCisgIGFjX2NvbXBpbGVyX2dudT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorYWNfY3ZfY19jb21waWxlcl9nbnU9JGFjX2NvbXBpbGVyX2dudQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2NvbXBpbGVyX2dudSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfY29tcGlsZXJfZ251IiA+JjY7IH0KK2lmIHRlc3QgJGFjX2NvbXBpbGVyX2dudSA9IHllczsgdGhlbgorICBHQ0M9eWVzCitlbHNlCisgIEdDQz0KK2ZpCithY190ZXN0X0NGTEFHUz0ke0NGTEFHUytzZXR9CithY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIGFjY2VwdHMgLWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2NjX2crOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19zYXZlX2Nfd2Vycm9yX2ZsYWc9JGFjX2Nfd2Vycm9yX2ZsYWcKKyAgIGFjX2Nfd2Vycm9yX2ZsYWc9eWVzCisgICBhY19jdl9wcm9nX2NjX2c9bm8KKyAgIENGTEFHUz0iLWciCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19nPXllcworZWxzZQorICBDRkxBR1M9IiIKKyAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGFjX2Nfd2Vycm9yX2ZsYWc9JGFjX3NhdmVfY193ZXJyb3JfZmxhZworCSBDRkxBR1M9Ii1nIgorCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfcHJvZ19jY19nPXllcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgYWNfY193ZXJyb3JfZmxhZz0kYWNfc2F2ZV9jX3dlcnJvcl9mbGFnCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wcm9nX2NjX2ciID4mNQorJGFzX2VjaG8gIiRhY19jdl9wcm9nX2NjX2ciID4mNjsgfQoraWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiA9IHNldDsgdGhlbgorICBDRkxBR1M9JGFjX3NhdmVfQ0ZMQUdTCitlbGlmIHRlc3QgJGFjX2N2X3Byb2dfY2NfZyA9IHllczsgdGhlbgorICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgIENGTEFHUz0iLWcgLU8yIgorICBlbHNlCisgICAgQ0ZMQUdTPSItZyIKKyAgZmkKK2Vsc2UKKyAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBDRkxBR1M9Ii1PMiIKKyAgZWxzZQorICAgIENGTEFHUz0KKyAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfY2NfYzg5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfcHJvZ19jY19jODk9bm8KK2FjX3NhdmVfQ0M9JENDCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KK3N0cnVjdCBzdGF0OworLyogTW9zdCBvZiB0aGUgZm9sbG93aW5nIHRlc3RzIGFyZSBzdG9sZW4gZnJvbSBSQ1MgNS43J3Mgc3JjL2NvbmYuc2guICAqLworc3RydWN0IGJ1ZiB7IGludCB4OyB9OworRklMRSAqICgqcmNzb3BlbikgKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KTsKK3N0YXRpYyBjaGFyICplIChwLCBpKQorICAgICBjaGFyICoqcDsKKyAgICAgaW50IGk7Cit7CisgIHJldHVybiBwW2ldOworfQorc3RhdGljIGNoYXIgKmYgKGNoYXIgKiAoKmcpIChjaGFyICoqLCBpbnQpLCBjaGFyICoqcCwgLi4uKQoreworICBjaGFyICpzOworICB2YV9saXN0IHY7CisgIHZhX3N0YXJ0ICh2LHApOworICBzID0gZyAocCwgdmFfYXJnICh2LGludCkpOworICB2YV9lbmQgKHYpOworICByZXR1cm4gczsKK30KKworLyogT1NGIDQuMCBDb21wYXEgY2MgaXMgc29tZSBzb3J0IG9mIGFsbW9zdC1BTlNJIGJ5IGRlZmF1bHQuICBJdCBoYXMKKyAgIGZ1bmN0aW9uIHByb3RvdHlwZXMgYW5kIHN0dWZmLCBidXQgbm90ICdceEhIJyBoZXggY2hhcmFjdGVyIGNvbnN0YW50cy4KKyAgIFRoZXNlIGRvbid0IHByb3Zva2UgYW4gZXJyb3IgdW5mb3J0dW5hdGVseSwgaW5zdGVhZCBhcmUgc2lsZW50bHkgdHJlYXRlZAorICAgYXMgJ3gnLiAgVGhlIGZvbGxvd2luZyBpbmR1Y2VzIGFuIGVycm9yLCB1bnRpbCAtc3RkIGlzIGFkZGVkIHRvIGdldAorICAgcHJvcGVyIEFOU0kgbW9kZS4gIEN1cmlvdXNseSAnXHgwMCchPSd4JyBhbHdheXMgY29tZXMgb3V0IHRydWUsIGZvciBhbgorICAgYXJyYXkgc2l6ZSBhdCBsZWFzdC4gIEl0J3MgbmVjZXNzYXJ5IHRvIHdyaXRlICdceDAwJz09MCB0byBnZXQgc29tZXRoaW5nCisgICB0aGF0J3MgdHJ1ZSBvbmx5IHdpdGggLXN0ZC4gICovCitpbnQgb3NmNF9jY19hcnJheSBbJ1x4MDAnID09IDAgPyAxIDogLTFdOworCisvKiBJQk0gQyA2IGZvciBBSVggaXMgYWxtb3N0LUFOU0kgYnkgZGVmYXVsdCwgYnV0IGl0IHJlcGxhY2VzIG1hY3JvIHBhcmFtZXRlcnMKKyAgIGluc2lkZSBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzLiAgKi8KKyNkZWZpbmUgRk9PKHgpICd4JworaW50IHhsYzZfY2NfYXJyYXlbRk9PKGEpID09ICd4JyA/IDEgOiAtMV07CisKK2ludCB0ZXN0IChpbnQgaSwgZG91YmxlIHgpOworc3RydWN0IHMxIHtpbnQgKCpmKSAoaW50IGEpO307CitzdHJ1Y3QgczIge2ludCAoKmYpIChkb3VibGUgYSk7fTsKK2ludCBwYWlybmFtZXMgKGludCwgY2hhciAqKiwgRklMRSAqKCopKHN0cnVjdCBidWYgKiwgc3RydWN0IHN0YXQgKiwgaW50KSwgaW50LCBpbnQpOworaW50IGFyZ2M7CitjaGFyICoqYXJndjsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGYgKGUsIGFyZ3YsIDApICE9IGFyZ3ZbMF0gIHx8ICBmIChlLCBhcmd2LCAxKSAhPSBhcmd2WzFdOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitmb3IgYWNfYXJnIGluICcnIC1xbGFuZ2x2bD1leHRjODkgLXFsYW5nbHZsPWFuc2kgLXN0ZCBcCisJLUFlICItQWEgLURfSFBVWF9TT1VSQ0UiICItWGMgLURfX0VYVEVOU0lPTlNfXyIKK2RvCisgIENDPSIkYWNfc2F2ZV9DQyAkYWNfYXJnIgorICBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X3Byb2dfY2NfYzg5PSRhY19hcmcKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisgIHRlc3QgIngkYWNfY3ZfcHJvZ19jY19jODkiICE9ICJ4bm8iICYmIGJyZWFrCitkb25lCitybSAtZiBjb25mdGVzdC4kYWNfZXh0CitDQz0kYWNfc2F2ZV9DQworCitmaQorIyBBQ19DQUNIRV9WQUwKK2Nhc2UgIngkYWNfY3ZfcHJvZ19jY19jODkiIGluCisgIHgpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUgbmVlZGVkIiA+JjUKKyRhc19lY2hvICJub25lIG5lZWRlZCIgPiY2OyB9IDs7CisgIHhubykKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogdW5zdXBwb3J0ZWQiID4mNQorJGFzX2VjaG8gInVuc3VwcG9ydGVkIiA+JjY7IH0gOzsKKyAgKikKKyAgICBDQz0iJENDICRhY19jdl9wcm9nX2NjX2M4OSIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3Byb2dfY2NfYzg5IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcHJvZ19jY19jODkiID4mNjsgfSA7OworZXNhYworaWYgdGVzdCAieCRhY19jdl9wcm9nX2NjX2M4OSIgIT0geG5vOyB0aGVuIDoKKworZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgUkRZTkFNSUM9Ii1yZHluYW1pYyIKKworZmkKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IuLi4gIiA+JjY7IH0KKyMgT24gU3Vucywgc29tZXRpbWVzICRDUFAgbmFtZXMgYSBkaXJlY3RvcnkuCitpZiB0ZXN0IC1uICIkQ1BQIiAmJiB0ZXN0IC1kICIkQ1BQIjsgdGhlbgorICBDUFA9CitmaQoraWYgdGVzdCAteiAiJENQUCI7IHRoZW4KKyAgaWYgJHthY19jdl9wcm9nX0NQUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAjIERvdWJsZSBxdW90ZXMgYmVjYXVzZSBDUFAgbmVlZHMgdG8gYmUgZXhwYW5kZWQKKyAgICBmb3IgQ1BQIGluICIkQ0MgLUUiICIkQ0MgLUUgLXRyYWRpdGlvbmFsLWNwcCIgIi9saWIvY3BwIgorICAgIGRvCisgICAgICBhY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4IGVycm9yCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKKyAgYnJlYWsKK2ZpCisKKyAgICBkb25lCisgICAgYWNfY3ZfcHJvZ19DUFA9JENQUAorCitmaQorICBDUFA9JGFjX2N2X3Byb2dfQ1BQCitlbHNlCisgIGFjX2N2X3Byb2dfQ1BQPSRDUFAKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENQUCIgPiY1CiskYXNfZWNobyAiJENQUCIgPiY2OyB9CithY19wcmVwcm9jX29rPWZhbHNlCitmb3IgYWNfY19wcmVwcm9jX3dhcm5fZmxhZyBpbiAnJyB5ZXMKK2RvCisgICMgVXNlIGEgaGVhZGVyIGZpbGUgdGhhdCBjb21lcyB3aXRoIGdjYywgc28gY29uZmlndXJpbmcgZ2xpYmMKKyAgIyB3aXRoIGEgZnJlc2ggY3Jvc3MtY29tcGlsZXIgd29ya3MuCisgICMgUHJlZmVyIDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZpbmVkLCBzaW5jZQorICAjIDxsaW1pdHMuaD4gZXhpc3RzIGV2ZW4gb24gZnJlZXN0YW5kaW5nIGNvbXBpbGVycy4KKyAgIyBPbiB0aGUgTmVYVCwgY2MgLUUgcnVucyB0aGUgY29kZSB0aHJvdWdoIHRoZSBjb21waWxlcidzIHBhcnNlciwKKyAgIyBub3QganVzdCB0aHJvdWdoIGNwcC4gIlN5bnRheCBlcnJvciIgaXMgaGVyZSB0byBjYXRjaCB0aGlzIGNhc2UuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZmRlZiBfX1NURENfXworIyBpbmNsdWRlIDxsaW1pdHMuaD4KKyNlbHNlCisjIGluY2x1ZGUgPGFzc2VydC5oPgorI2VuZGlmCisJCSAgICAgU3ludGF4IGVycm9yCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCisgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCisgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhY19ub25leGlzdGVudC5oPgorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jcHAgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBCcm9rZW46IHN1Y2Nlc3Mgb24gaW52YWxpZCBpbnB1dC4KK2NvbnRpbnVlCitlbHNlCisgICMgUGFzc2VzIGJvdGggdGVzdHMuCithY19wcmVwcm9jX29rPToKK2JyZWFrCitmaQorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAorCitkb25lCisjIEJlY2F1c2Ugb2YgYGJyZWFrJywgX0FDX1BSRVBST0NfSUZFTFNFJ3MgY2xlYW5pbmcgY29kZSB3YXMgc2tpcHBlZC4KK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK2lmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKKworZWxzZQorICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFkZGl0aW9uYWwgc3BlY2lhbCBjb21waWxlciBmbGFncyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYWRkaXRpb25hbCBzcGVjaWFsIGNvbXBpbGVyIGZsYWdzLi4uICIgPiY2OyB9CitpZiB0ZXN0ICIkR0NDIiA9IHllcwordGhlbgorICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKwlhbHBoYSkJCWFkZGNmbGFncz0iLW1pZWVlIiA7OworICAgIGVzYWMKK2ZpCitpZiB0ZXN0ICJ4JGFkZGNmbGFncyIgIT0geAordGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWRkY2ZsYWdzIiA+JjUKKyRhc19lY2hvICIkYWRkY2ZsYWdzIiA+JjY7IH0KKyAgICBDRkxBR1M9IiRhZGRjZmxhZ3MgJENGTEFHUyIKK2Vsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogKG5vbmUpIiA+JjUKKyRhc19lY2hvICIobm9uZSkiID4mNjsgfQorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ3JlcCB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lcyBhbmQgLWUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLXogIiRHUkVQIjsgdGhlbgorICBhY19wYXRoX0dSRVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBncmVwIGdncmVwOyBkbworICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgYWNfcGF0aF9HUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9HUkVQIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfR1JFUCBhbmQgc2VsZWN0IGl0IGlmIGl0IGlzIGZvdW5kLgorICAjIENoZWNrIGZvciBHTlUgJGFjX3BhdGhfR1JFUAorY2FzZSBgIiRhY19wYXRoX0dSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfR1JFUD0iJGFjX3BhdGhfR1JFUCIgYWNfcGF0aF9HUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdHUkVQJyA+PiAiY29uZnRlc3QubmwiCisgICAgIiRhY19wYXRoX0dSRVAiIC1lICdHUkVQJCcgLWUgJy0oY2Fubm90IG1hdGNoKS0nIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9HUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0dSRVA9IiRhY19wYXRoX0dSRVAiCisgICAgICBhY19wYXRoX0dSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9HUkVQX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9HUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0dSRVA9JEdSRVAKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfR1JFUCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3BhdGhfR1JFUCIgPiY2OyB9CisgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9FR1JFUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGVjaG8gYSB8ICRHUkVQIC1FICcoYXxiKScgPi9kZXYvbnVsbCAyPiYxCisgICB0aGVuIGFjX2N2X3BhdGhfRUdSRVA9IiRHUkVQIC1FIgorICAgZWxzZQorICAgICBpZiB0ZXN0IC16ICIkRUdSRVAiOyB0aGVuCisgIGFjX3BhdGhfRUdSRVBfZm91bmQ9ZmFsc2UKKyAgIyBMb29wIHRocm91Z2ggdGhlIHVzZXIncyBwYXRoIGFuZCB0ZXN0IGZvciBlYWNoIG9mIFBST0dOQU1FLUxJU1QKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4KK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfcHJvZyBpbiBlZ3JlcDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGFjX3BhdGhfRUdSRVA9IiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiCisgICAgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhY19wYXRoX0VHUkVQIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfRUdSRVAgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgIyBDaGVjayBmb3IgR05VICRhY19wYXRoX0VHUkVQCitjYXNlIGAiJGFjX3BhdGhfRUdSRVAiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfRUdSRVA9IiRhY19wYXRoX0VHUkVQIiBhY19wYXRoX0VHUkVQX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICdFR1JFUCcgPj4gImNvbmZ0ZXN0Lm5sIgorICAgICIkYWNfcGF0aF9FR1JFUCIgJ0VHUkVQJCcgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX0VHUkVQX21heC0wfTsgdGhlbgorICAgICAgIyBCZXN0IG9uZSBzbyBmYXIsIHNhdmUgaXQgYnV0IGtlZXAgbG9va2luZyBmb3IgYSBiZXR0ZXIgb25lCisgICAgICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIKKyAgICAgIGFjX3BhdGhfRUdSRVBfbWF4PSRhY19jb3VudAorICAgIGZpCisgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgIHRlc3QgJGFjX2NvdW50IC1ndCAxMCAmJiBicmVhaworICBkb25lCisgIHJtIC1mIGNvbmZ0ZXN0LmluIGNvbmZ0ZXN0LnRtcCBjb25mdGVzdC5ubCBjb25mdGVzdC5vdXQ7OworZXNhYworCisgICAgICAkYWNfcGF0aF9FR1JFUF9mb3VuZCAmJiBicmVhayAzCisgICAgZG9uZQorICBkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKyAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfRUdSRVAiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQorICBmaQorZWxzZQorICBhY19jdl9wYXRoX0VHUkVQPSRFR1JFUAorZmkKKworICAgZmkKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3BhdGhfRUdSRVAiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX0VHUkVQIiA+JjY7IH0KKyBFR1JFUD0iJGFjX2N2X3BhdGhfRUdSRVAiCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oZWFkZXJfc3RkYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmbG9hdC5oPgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2hlYWRlcl9zdGRjPXllcworZWxzZQorICBhY19jdl9oZWFkZXJfc3RkYz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJmcmVlIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKK2ZpCisKK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kgY3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICA6CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmICgoJyAnICYgMHgwRkYpID09IDB4MDIwKQorIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3onKQorIyBkZWZpbmUgVE9VUFBFUihjKSAoSVNMT1dFUihjKSA/ICdBJyArICgoYykgLSAnYScpIDogKGMpKQorI2Vsc2UKKyMgZGVmaW5lIElTTE9XRVIoYykgXAorCQkgICAoKCdhJyA8PSAoYykgJiYgKGMpIDw9ICdpJykgXAorCQkgICAgIHx8ICgnaicgPD0gKGMpICYmIChjKSA8PSAncicpIFwKKwkJICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAoKGMpIHwgMHg0MCkgOiAoYykpCisjZW5kaWYKKworI2RlZmluZSBYT1IoZSwgZikgKCgoZSkgJiYgIShmKSkgfHwgKCEoZSkgJiYgKGYpKSkKK2ludAorbWFpbiAoKQoreworICBpbnQgaTsKKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgIGlmIChYT1IgKGlzbG93ZXIgKGkpLCBJU0xPV0VSIChpKSkKKwl8fCB0b3VwcGVyIChpKSAhPSBUT1VQUEVSIChpKSkKKyAgICAgIHJldHVybiAyOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9oZWFkZXJfc3RkYyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgT24gSVJJWCA1LjMsIHN5cy90eXBlcyBhbmQgaW50dHlwZXMuaCBhcmUgY29uZmxpY3RpbmcuCitmb3IgYWNfaGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVtb3J5Lmggc3RyaW5ncy5oIFwKKwkJICBpbnR0eXBlcy5oIHN0ZGludC5oIHVuaXN0ZC5oCitkbyA6CisgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX2NvbXBpbGUgIiRMSU5FTk8iICIkYWNfaGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0CisiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm1pbml4L2NvbmZpZy5oIiAiYWNfY3ZfaGVhZGVyX21pbml4X2NvbmZpZ19oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9taW5peF9jb25maWdfaCIgPSB4eWVzOyB0aGVuIDoKKyAgTUlOSVg9eWVzCitlbHNlCisgIE1JTklYPQorZmkKKworCisgIGlmIHRlc3QgIiRNSU5JWCIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKworCiskYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfMV9TT1VSQ0UgMiIgPj5jb25mZGVmcy5oCisKKworJGFzX2VjaG8gIiNkZWZpbmUgX01JTklYIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBkZWZpbmUgX19FWFRFTlNJT05TX18iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBpdCBpcyBzYWZlIHRvIGRlZmluZSBfX0VYVEVOU0lPTlNfXy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworIyAgICAgICAgIGRlZmluZSBfX0VYVEVOU0lPTlNfXyAxCisgICAgICAgICAgJGFjX2luY2x1ZGVzX2RlZmF1bHQKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX189eWVzCitlbHNlCisgIGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zYWZlX3RvX2RlZmluZV9fX2V4dGVuc2lvbnNfXyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fIiA+JjY7IH0KKyAgdGVzdCAkYWNfY3Zfc2FmZV90b19kZWZpbmVfX19leHRlbnNpb25zX18gPSB5ZXMgJiYKKyAgICAkYXNfZWNobyAiI2RlZmluZSBfX0VYVEVOU0lPTlNfXyAxIiA+PmNvbmZkZWZzLmgKKworICAkYXNfZWNobyAiI2RlZmluZSBfQUxMX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKworICAkYXNfZWNobyAiI2RlZmluZSBfR05VX1NPVVJDRSAxIiA+PmNvbmZkZWZzLmgKKworICAkYXNfZWNobyAiI2RlZmluZSBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgMSIgPj5jb25mZGVmcy5oCisKKyAgJGFzX2VjaG8gIiNkZWZpbmUgX1RBTkRFTV9TT1VSQ0UgMSIgPj5jb25mZGVmcy5oCisKKworTElCX0VYVD0uYQorU1RBVElDX0xJQl9FWFQ9LmEKK1BST0ZJTEVEX0xJQl9FWFQ9LmEKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1yb290LXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfcm9vdF9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX3Jvb3RfcHJlZml4OyByb290X3ByZWZpeD0kd2l0aHZhbAorZWxzZQorICByb290X3ByZWZpeD1OT05FCitmaQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9tYWludGFpbmVyX21vZGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9tYWludGFpbmVyX21vZGU7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCU1BSU5UQUlORVJfQ01UPSMKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIG1haW50YWluZXIgbW9kZSIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIG1haW50YWluZXIgbW9kZSIgPiY2OyB9CitlbHNlCisJTUFJTlRBSU5FUl9DTVQ9CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIG1haW50YWluZXIgbW9kZSIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgbWFpbnRhaW5lciBtb2RlIiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgTUFJTlRBSU5FUl9DTVQ9IworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBtYWludGFpbmVyIG1vZGUgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIG1haW50YWluZXIgbW9kZSBieSBkZWZhdWx0IiA+JjY7IH0KKworZmkKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3ltbGluay1pbnN0YWxsIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3N5bWxpbmtfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3N5bWxpbmtfaW5zdGFsbDsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJTElOS19JTlNUQUxMX0ZMQUdTPS1mCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHN5bWxpbmtzIGZvciBpbnN0YWxsIiA+JjY7IH0KK2Vsc2UKKwlMSU5LX0lOU1RBTExfRkxBR1M9LXNmCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIHN5bWxpbmtzIGZvciBpbnN0YWxsIiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY2OyB9CitmaQorCitlbHNlCisgIExJTktfSU5TVEFMTF9GTEFHUz0tZgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBzeW1saW5rcyBmb3IgaW5zdGFsbCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgc3ltbGlua3MgZm9yIGluc3RhbGwgYnkgZGVmYXVsdCIgPiY2OyB9CisKK2ZpCisKKworcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkPQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlbGF0aXZlLXN5bWxpbmtzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3JlbGF0aXZlX3N5bWxpbmtzK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfcmVsYXRpdmVfc3ltbGlua3M7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCVNZTUxJTktfUkVMQVRJVkU9CisJcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkPXllcworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGwiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyByZWxhdGl2ZSBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY2OyB9CitlbHNlCisJU1lNTElOS19SRUxBVElWRT0tLXJlbGF0aXZlCisJcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkPXllcworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyByZWxhdGl2ZSBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGwiID4mNjsgfQorZmkKK2ZpCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zeW1saW5rLXJlbGF0aXZlLXN5bWxpbmtzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3N5bWxpbmtfcmVsYXRpdmVfc3ltbGlua3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9zeW1saW5rX3JlbGF0aXZlX3N5bWxpbmtzOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlTWU1MSU5LX1JFTEFUSVZFPXllcworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGwiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyByZWxhdGl2ZSBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY2OyB9CitlbHNlCisJU1lNTElOS19SRUxBVElWRT0tLXJlbGF0aXZlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIHJlbGF0aXZlIHN5bWxpbmtzIGZvciBpbnN0YWxsIiA+JjUKKyRhc19lY2hvICJFbmFibGluZyByZWxhdGl2ZSBzeW1saW5rcyBmb3IgaW5zdGFsbCIgPiY2OyB9CitmaQorCitlbHNlCisgIGlmIHRlc3QgLXogIiRyZWxhdGl2ZV9zeW1saW5rX2RlZmluZWQiCit0aGVuCisJU1lNTElOS19SRUxBVElWRT0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGwgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHJlbGF0aXZlIHN5bWxpbmtzIGZvciBpbnN0YWxsIGJ5IGRlZmF1bHQiID4mNjsgfQorZmkKKworZmkKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtc3ltbGluay1idWlsZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9zeW1saW5rX2J1aWxkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfc3ltbGlua19idWlsZDsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJTElOS19CVUlMRF9GTEFHUz0KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHN5bWxpbmtzIGZvciBidWlsZCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHN5bWxpbmtzIGZvciBidWlsZCIgPiY2OyB9CitlbHNlCisJTElOS19CVUlMRF9GTEFHUz0tcworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBzeW1saW5rcyBmb3IgYnVpbGQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHN5bWxpbmtzIGZvciBidWlsZCIgPiY2OyB9CitmaQorCitlbHNlCisgIExJTktfQlVJTERfRkxBR1M9Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHN5bWxpbmtzIGZvciBidWlsZCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgc3ltbGlua3MgZm9yIGJ1aWxkIGJ5IGRlZmF1bHQiID4mNjsgfQorCitmaQorCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3ZlcmJvc2VfbWFrZWNtZHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV92ZXJib3NlX21ha2VjbWRzOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHZlcmJvc2UgbWFrZSBjb21tYW5kcyIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHZlcmJvc2UgbWFrZSBjb21tYW5kcyIgPiY2OyB9CisJRT1AZWNobworCUVTPWVjaG8KKwlRPUAKK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgdmVyYm9zZSBtYWtlIGNvbW1hbmRzIiA+JjUKKyRhc19lY2hvICJFbmFibGluZyB2ZXJib3NlIG1ha2UgY29tbWFuZHMiID4mNjsgfQorCUU9QFxcIworCUVTPVxcIworCVE9CitmaQorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgdmVyYm9zZSBtYWtlIGNvbW1hbmRzIiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgdmVyYm9zZSBtYWtlIGNvbW1hbmRzIiA+JjY7IH0KK0U9QGVjaG8KK0VTPWVjaG8KK1E9QAorCitmaQorCisKKworCitFMl9QS0dfQ09ORklHX1NUQVRJQz0tLXN0YXRpYworTERGTEFHX0RZTkFNSUM9CitQUklWQVRFX0xJQlNfQ01UPQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWVsZi1zaGxpYnMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZWxmX3NobGlicytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2VsZl9zaGxpYnM7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUVMRl9DTVQ9IworCU1BS0VGSUxFX0VMRj0vZGV2L251bGwKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIEVMRiBzaGFyZWQgbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXMiID4mNjsgfQorZWxzZQorCUUyX1BLR19DT05GSUdfU1RBVElDPQorCUVMRl9DTVQ9CisJTUFLRUZJTEVfRUxGPSRzcmNkaXIvbGliL01ha2VmaWxlLmVsZi1saWIKKwljYXNlICIkaG9zdF9vcyIgaW4KKwlzb2xhcmlzMi4qKQorCQlNQUtFRklMRV9FTEY9JHNyY2Rpci9saWIvTWFrZWZpbGUuc29sYXJpcy1saWIKKwk7OworCWVzYWMKKwlCSU5BUllfVFlQRT1lbGZiaW4KKwlMSUJfRVhUPS5zbworCVBSSVZBVEVfTElCU19DTVQ9IworCUxERkxBR19EWU5BTUlDPSctV2wsLXJwYXRoLWxpbmssJCh0b3BfYnVpbGRkaXIpL2xpYicKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIEVMRiBzaGFyZWQgbGlicmFyaWVzIiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgTUFLRUZJTEVfRUxGPS9kZXYvbnVsbAorRUxGX0NNVD0jCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIEVMRiBzaGFyZWQgbGlicmFyaWVzIGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBFTEYgc2hhcmVkIGxpYnJhcmllcyBieSBkZWZhdWx0IiA+JjY7IH0KKworZmkKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ic2Qtc2hsaWJzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2JzZF9zaGxpYnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9ic2Rfc2hsaWJzOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlCU0RMSUJfQ01UPSMKKwlNQUtFRklMRV9CU0RMSUI9L2Rldi9udWxsCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBCU0Qgc2hhcmVkIGxpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIEJTRCBzaGFyZWQgbGlicmFyaWVzIiA+JjY7IH0KK2Vsc2UKKwlFMl9QS0dfQ09ORklHX1NUQVRJQz0KKwlCU0RMSUJfQ01UPQorCU1BS0VGSUxFX0JTRExJQj0kc3JjZGlyL2xpYi9NYWtlZmlsZS5ic2QtbGliCisJTElCX0VYVD0uc28KKwljYXNlICIkaG9zdF9vcyIgaW4KKwlkYXJ3aW4qKQorCQlNQUtFRklMRV9CU0RMSUI9JHNyY2Rpci9saWIvTWFrZWZpbGUuZGFyd2luLWxpYgorCQlMSUJfRVhUPS5keWxpYgorCTs7CisJZXNhYworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBCU0Qgc2hhcmVkIGxpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgQlNEIHNoYXJlZCBsaWJyYXJpZXMiID4mNjsgfQorZmkKKworZWxzZQorICBNQUtFRklMRV9CU0RMSUI9L2Rldi9udWxsCitCU0RMSUJfQ01UPSMKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgQlNEIHNoYXJlZCBsaWJyYXJpZXMgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIEJTRCBzaGFyZWQgbGlicmFyaWVzIGJ5IGRlZmF1bHQiID4mNjsgfQorCitmaQorCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXByb2ZpbGUgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcHJvZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3Byb2ZpbGU7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCVBST0ZJTEVfQ01UPSMKKwlNQUtFRklMRV9QUk9GSUxFPS9kZXYvbnVsbAorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgcHJvZmlsaW5nIGxpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHByb2ZpbGluZyBsaWJyYXJpZXMiID4mNjsgfQorZWxzZQorCVBST0ZJTEVfQ01UPQorCU1BS0VGSUxFX1BST0ZJTEU9JHNyY2Rpci9saWIvTWFrZWZpbGUucHJvZmlsZQorCVBST0ZJTEVEX0xJQl9FWFQ9X3AuYQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBCdWlsZGluZyBwcm9maWxpbmcgbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICJCdWlsZGluZyBwcm9maWxpbmcgbGlicmFyaWVzIiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgUFJPRklMRV9DTVQ9IworTUFLRUZJTEVfUFJPRklMRT0vZGV2L251bGwKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgcHJvZmlsaW5nIGxpYnJhcmllcyBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgcHJvZmlsaW5nIGxpYnJhcmllcyBieSBkZWZhdWx0IiA+JjY7IH0KKworZmkKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nY292IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2djb3Yrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9nY292OyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJ5ZXMiCit0aGVuCisJQ0ZMQUdTPSItZyAtZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UiCisJTERGTEFHUz0iLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlIgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBnY292IHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGdjb3Ygc3VwcG9ydCIgPiY2OyB9CitmaQorCitmaQorCitDRkxBR1NfU0hMSUI9IiR7Q0ZMQUdTX1NITElCOi0kQ0ZMQUdTfSIKK0NGTEFHU19TVExJQj0iJHtDRkxBR1NfU1RMSUI6LSRDRkxBR1N9IgorTERGTEFHU19TSExJQj0ke0xERkxBR1NfU0hMSUI6LSRMREZMQUdTfQorTERGTEFHU19TVEFUSUM9JHtMREZMQUdTX1NUQVRJQzotJExERkxBR1N9CisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaGFyZGVuaW5nIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2hhcmRlbmluZytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2hhcmRlbmluZzsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAieWVzIgordGhlbgorCUhBUkRFTl9DRkxBR1M9Ii1EX0ZPUlRJRllfU09VUkNFPTIgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgorCUhBUkRFTl9MREZMQUdTPSItV2wsLXoscmVscm8gLVdsLC16LG5vdyIKKwlDRkxBR1M9IiRDRkxBR1MgJEhBUkRFTl9DRkxBR1MgLWZQSUUiCisJQ0ZMQUdTX1NITElCPSIkQ0ZMQUdTX1NITElCICRIQVJERU5fQ0ZMQUdTIgorCUNGTEFHU19TVExJQj0iJENGTEFHU19TVExJQiAkSEFSREVOX0NGTEFHUyAtZlBJRSIKKwlMREZMQUdTPSIkTERGTEFHUyAkSEFSREVOX0xERkxBR1MgLWZQSUUgLXBpZSIKKwlMREZMQUdTX1NUQVRJQz0iJExERkxBR1NfU1RBVElDICRIQVJERU5fTERGTEFHUyIKKwlMREZMQUdTX1NITElCPSIkTERGTEFHU19TSExJQiAkSEFSREVOX0xERkxBR1MiCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGhhcmRlbmluZyBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBoYXJkZW5pbmcgc3VwcG9ydCIgPiY2OyB9CitmaQorCitmaQorCisKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWpiZC1kZWJ1ZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9qYmRfZGVidWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9qYmRfZGVidWc7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgam91cm5hbCBkZWJ1Z2dpbmciID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBqb3VybmFsIGRlYnVnZ2luZyIgPiY2OyB9CitlbHNlCisKKyRhc19lY2hvICIjZGVmaW5lIENPTkZJR19KQkRfREVCVUcgMSIgPj5jb25mZGVmcy5oCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgam91cm5hbCBkZWJ1Z2dpbmciID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGpvdXJuYWwgZGVidWdnaW5nIiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBqb3VybmFsIGRlYnVnZ2luZyBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgam91cm5hbCBkZWJ1Z2dpbmcgYnkgZGVmYXVsdCIgPiY2OyB9CisKK2ZpCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ibGtpZC1kZWJ1ZyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ibGtpZF9kZWJ1ZytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2Jsa2lkX2RlYnVnOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIGJsa2lkIGRlYnVnZ2luZyIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGJsa2lkIGRlYnVnZ2luZyIgPiY2OyB9CitlbHNlCisKKyRhc19lY2hvICIjZGVmaW5lIENPTkZJR19CTEtJRF9ERUJVRyAxIiA+PmNvbmZkZWZzLmgKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBibGtpZCBkZWJ1Z2dpbmciID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGJsa2lkIGRlYnVnZ2luZyIgPiY2OyB9CitmaQorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgYmxraWQgZGVidWdnaW5nIGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBibGtpZCBkZWJ1Z2dpbmcgYnkgZGVmYXVsdCIgPiY2OyB9CisKK2ZpCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10ZXN0aW8tZGVidWcgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfdGVzdGlvX2RlYnVnK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfdGVzdGlvX2RlYnVnOworaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyB0ZXN0aW8gZGVidWdnaW5nIiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgdGVzdGlvIGRlYnVnZ2luZyIgPiY2OyB9CisJVEVTVF9JT19DTVQ9IiMiCitlbHNlCisJVEVTVF9JT19DTVQ9CisJJGFzX2VjaG8gIiNkZWZpbmUgQ09ORklHX1RFU1RJT19ERUJVRyAxIiA+PmNvbmZkZWZzLmgKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyB0ZXN0aW8gZGVidWdnaW5nIiA+JjUKKyRhc19lY2hvICJFbmFibGluZyB0ZXN0aW8gZGVidWdnaW5nIiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIHRlc3RpbyBkZWJ1Z2dpbmcgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgdGVzdGlvIGRlYnVnZ2luZyBieSBkZWZhdWx0IiA+JjY7IH0KKyRhc19lY2hvICIjZGVmaW5lIENPTkZJR19URVNUSU9fREVCVUcgMSIgPj5jb25mZGVmcy5oCisKK1RFU1RfSU9fQ01UPQorCitmaQorCisKKworCisKKworCisKKworaWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgorCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFBLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCitQS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQorJGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsgdGhlbgorICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKK2lmIHRlc3QgLW4gIiRhY19wdF9QS0dfQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQorJGFzX2VjaG8gIiRhY19wdF9QS0dfQ09ORklHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfcHRfUEtHX0NPTkZJRyIgPSB4OyB0aGVuCisgICAgUEtHX0NPTkZJRz0iIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIFBLR19DT05GSUc9JGFjX3B0X1BLR19DT05GSUcKKyAgZmkKK2Vsc2UKKyAgUEtHX0NPTkZJRz0iJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKK2ZpCisKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKwlfcGtnX21pbl92ZXJzaW9uPTAuOS4wCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgcGtnLWNvbmZpZyBpcyBhdCBsZWFzdCB2ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uLi4uICIgPiY2OyB9CisJaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uICRfcGtnX21pbl92ZXJzaW9uOyB0aGVuCisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJZWxzZQorCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKwkJUEtHX0NPTkZJRz0iIgorCWZpCitmaQorTElCVVVJRD0KK0RFUExJQlVVSUQ9CitTVEFUSUNfTElCVVVJRD0KK0RFUFNUQVRJQ19MSUJVVUlEPQorUFJPRklMRURfTElCVVVJRD0KK0RFUFBST0ZJTEVEX0xJQlVVSUQ9CitVVUlEX0NNVD0KKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ1dWlkIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xpYnV1aWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9saWJ1dWlkOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlpZiB0ZXN0IC16ICIkUEtHX0NPTkZJRyI7IHRoZW4KKwkJYXNfZm5fZXJyb3IgJD8gInBrZy1jb25maWcgbm90IGluc3RhbGxlZDsgcGxlYXNlIGluc3RhbGwgaXQuIiAiJExJTkVOTyIgNQorCWZpCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1dWlkX2dlbmVyYXRlIGluIC1sdXVpZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdXVpZF9nZW5lcmF0ZSBpbiAtbHV1aWQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3V1aWRfdXVpZF9nZW5lcmF0ZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sdXVpZCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgdXVpZF9nZW5lcmF0ZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHV1aWRfZ2VuZXJhdGUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9nZW5lcmF0ZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3V1aWRfdXVpZF9nZW5lcmF0ZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdXVpZF91dWlkX2dlbmVyYXRlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3V1aWRfdXVpZF9nZW5lcmF0ZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl91dWlkX3V1aWRfZ2VuZXJhdGUiID0geHllczsgdGhlbiA6CisgIExJQlVVSUQ9YCRQS0dfQ09ORklHIC0tbGlicyB1dWlkYDsKKwkJIFNUQVRJQ19MSUJVVUlEPWAkUEtHX0NPTkZJRyAtLXN0YXRpYyAtLWxpYnMgdXVpZGAKK2Vsc2UKKyAgYXNfZm5fZXJyb3IgJD8gImV4dGVybmFsIHV1aWQgbGlicmFyeSBub3QgZm91bmQiICIkTElORU5PIiA1CitmaQorCisJUFJPRklMRURfTElCVVVJRD0kTElCVVVJRAorCVVVSURfQ01UPSMKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHByaXZhdGUgdXVpZCBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgcHJpdmF0ZSB1dWlkIGxpYnJhcnkiID4mNjsgfQorZWxzZQorCUxJQlVVSUQ9JyQoTElCKS9saWJ1dWlkJyRMSUJfRVhUCisJREVQTElCVVVJRD0kTElCVVVJRAorCVNUQVRJQ19MSUJVVUlEPSckKExJQikvbGlidXVpZCckU1RBVElDX0xJQl9FWFQKKwlERVBTVEFUSUNfTElCVVVJRD0kU1RBVElDX0xJQlVVSUQKKwlQUk9GSUxFRF9MSUJVVUlEPSckKExJQikvbGlidXVpZCckUFJPRklMRURfTElCX0VYVAorCURFUFBST0ZJTEVEX0xJQlVVSUQ9JFBST0ZJTEVEX0xJQlVVSUQKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgcHJpdmF0ZSB1dWlkIGxpYnJhcnkiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHByaXZhdGUgdXVpZCBsaWJyYXJ5IiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXVpZF9nZW5lcmF0ZSBpbiAtbHV1aWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHV1aWRfZ2VuZXJhdGUgaW4gLWx1dWlkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl91dWlkX3V1aWRfZ2VuZXJhdGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHV1aWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHV1aWRfZ2VuZXJhdGUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiB1dWlkX2dlbmVyYXRlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl91dWlkX3V1aWRfZ2VuZXJhdGU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl91dWlkX3V1aWRfZ2VuZXJhdGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3V1aWRfdXVpZF9nZW5lcmF0ZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl91dWlkX3V1aWRfZ2VuZXJhdGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfdXVpZF91dWlkX2dlbmVyYXRlIiA9IHh5ZXM7IHRoZW4gOgorICBMSUJVVUlEPWAkUEtHX0NPTkZJRyAtLWxpYnMgdXVpZGA7CisJCSBTVEFUSUNfTElCVVVJRD1gJFBLR19DT05GSUcgLS1zdGF0aWMgLS1saWJzIHV1aWRgCitmaQorCitmaQoraWYgdGVzdCAtbiAiJExJQlVVSUQiOyB0aGVuCisJUFJPRklMRURfTElCVVVJRD0kTElCVVVJRAorCVVVSURfQ01UPSMKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogVXNpbmcgc3lzdGVtIHV1aWQgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiVXNpbmcgc3lzdGVtIHV1aWQgYnkgZGVmYXVsdCIgPiY2OyB9CitlbHNlCisJTElCVVVJRD0nJChMSUIpL2xpYnV1aWQnJExJQl9FWFQKKwlERVBMSUJVVUlEPSRMSUJVVUlECisJU1RBVElDX0xJQlVVSUQ9JyQoTElCKS9saWJ1dWlkJyRTVEFUSUNfTElCX0VYVAorCURFUFNUQVRJQ19MSUJVVUlEPSRTVEFUSUNfTElCVVVJRAorCVBST0ZJTEVEX0xJQlVVSUQ9JyQoTElCKS9saWJ1dWlkJyRQUk9GSUxFRF9MSUJfRVhUCisJREVQUFJPRklMRURfTElCVVVJRD0kUFJPRklMRURfTElCVVVJRAorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBwcml2YXRlIHV1aWQgbGlicmFyeSBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBwcml2YXRlIHV1aWQgbGlicmFyeSBieSBkZWZhdWx0IiA+JjY7IH0KK2ZpCisKK2ZpCisKKworCisKKworCisKKworCisKKworCisKKworCitpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIgIT0gInhzZXQiOyB0aGVuCisJaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1wa2ctY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9QS0dfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QS0dfQ09ORklHPSIkUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK1BLR19DT05GSUc9JGFjX2N2X3BhdGhfUEtHX0NPTkZJRworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUEtHX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJFBLR19DT05GSUciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wYXRoX1BLR19DT05GSUciOyB0aGVuCisgIGFjX3B0X1BLR19DT05GSUc9JFBLR19DT05GSUcKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwa2ctY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBwa2ctY29uZmlnOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYWNfcHRfUEtHX0NPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9hY19wdF9QS0dfQ09ORklHPSIkYWNfcHRfUEtHX0NPTkZJRyIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK2FjX3B0X1BLR19DT05GSUc9JGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRworaWYgdGVzdCAtbiAiJGFjX3B0X1BLR19DT05GSUciOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcHRfUEtHX0NPTkZJRyIgPiY1CiskYXNfZWNobyAiJGFjX3B0X1BLR19DT05GSUciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19wdF9QS0dfQ09ORklHIiA9IHg7IHRoZW4KKyAgICBQS0dfQ09ORklHPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgUEtHX0NPTkZJRz0kYWNfcHRfUEtHX0NPTkZJRworICBmaQorZWxzZQorICBQS0dfQ09ORklHPSIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIgorZmkKKworZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorCV9wa2dfbWluX3ZlcnNpb249MC45LjAKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KKwlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KKwkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwllbHNlCisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCQlQS0dfQ09ORklHPSIiCisJZmkKK2ZpCitMSUJCTEtJRD0KK0RFUExJQkJMS0lEPQorU1RBVElDX0xJQkJMS0lEPQorREVQU1RBVElDX0xJQkJMS0lEPQorUFJPRklMRURfTElCQkxLSUQ9CitERVBQUk9GSUxFRF9MSUJCTEtJRD0KK0JMS0lEX0NNVD0KKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYmJsa2lkIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2xpYmJsa2lkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfbGliYmxraWQ7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCWlmIHRlc3QgLXogIiRQS0dfQ09ORklHIjsgdGhlbgorCQlhc19mbl9lcnJvciAkPyAicGtnLWNvbmZpZyBub3QgaW5zdGFsbGVkOyBwbGVhc2UgaW5zdGFsbCBpdC4iICIkTElORU5PIiA1CisJZmkKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGJsa2lkX2dldF9jYWNoZSBpbiAtbGJsa2lkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBibGtpZF9nZXRfY2FjaGUgaW4gLWxibGtpZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfYmxraWRfYmxraWRfZ2V0X2NhY2hlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxibGtpZCAtbHV1aWQgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgYmxraWRfZ2V0X2NhY2hlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gYmxraWRfZ2V0X2NhY2hlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ibGtpZF9ibGtpZF9nZXRfY2FjaGU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ibGtpZF9ibGtpZF9nZXRfY2FjaGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2Jsa2lkX2Jsa2lkX2dldF9jYWNoZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ibGtpZF9ibGtpZF9nZXRfY2FjaGUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfYmxraWRfYmxraWRfZ2V0X2NhY2hlIiA9IHh5ZXM7IHRoZW4gOgorICBMSUJCTEtJRD1gJFBLR19DT05GSUcgLS1saWJzIGJsa2lkYDsKKwkJIFNUQVRJQ19MSUJCTEtJRD1gJFBLR19DT05GSUcgLS1zdGF0aWMgLS1saWJzIGJsa2lkYAorZWxzZQorICBhc19mbl9lcnJvciAkPyAiZXh0ZXJuYWwgYmxraWQgbGlicmFyeSBub3QgZm91bmQiICIkTElORU5PIiA1CitmaQorCisJQkxLSURfQ01UPSMKKwlQUk9GSUxFRF9MSUJCTEtJRD0kTElCQkxLSUQKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHByaXZhdGUgYmxraWQgbGlicmFyeSIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIHByaXZhdGUgYmxraWQgbGlicmFyeSIgPiY2OyB9CitlbHNlCisJTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckTElCX0VYVAorCURFUExJQkJMS0lEPSRMSUJCTEtJRAorCVNUQVRJQ19MSUJCTEtJRD0nJChMSUIpL2xpYmJsa2lkJyRTVEFUSUNfTElCX0VYVAorCURFUFNUQVRJQ19MSUJCTEtJRD0kU1RBVElDX0xJQkJMS0lECisJUFJPRklMRURfTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckUFJPRklMRURfTElCX0VYVAorCURFUFBST0ZJTEVEX0xJQkJMS0lEPSRQUk9GSUxFRF9MSUJCTEtJRAorCSRhc19lY2hvICIjZGVmaW5lIENPTkZJR19CVUlMRF9GSU5ERlMgMSIgPj5jb25mZGVmcy5oCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgcHJpdmF0ZSBibGtpZCBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBwcml2YXRlIGJsa2lkIGxpYnJhcnkiID4mNjsgfQorZmkKKworZWxzZQorICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBibGtpZF9nZXRfY2FjaGUgaW4gLWxibGtpZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYmxraWRfZ2V0X2NhY2hlIGluIC1sYmxraWQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2Jsa2lkX2Jsa2lkX2dldF9jYWNoZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sYmxraWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGJsa2lkX2dldF9jYWNoZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGJsa2lkX2dldF9jYWNoZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfYmxraWRfYmxraWRfZ2V0X2NhY2hlPXllcworZWxzZQorICBhY19jdl9saWJfYmxraWRfYmxraWRfZ2V0X2NhY2hlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ibGtpZF9ibGtpZF9nZXRfY2FjaGUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfYmxraWRfYmxraWRfZ2V0X2NhY2hlIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2Jsa2lkX2Jsa2lkX2dldF9jYWNoZSIgPSB4eWVzOyB0aGVuIDoKKyAgTElCQkxLSUQ9YCRQS0dfQ09ORklHIC0tbGlicyBibGtpZGA7CisJCSBTVEFUSUNfTElCQkxLSUQ9YCRQS0dfQ09ORklHIC0tc3RhdGljIC0tbGlicyBibGtpZGAKK2ZpCisKK2ZpCitpZiB0ZXN0IC1uICIkTElCQkxLSUQiOyB0aGVuCisJQkxLSURfQ01UPSMKKwlQUk9GSUxFRF9MSUJCTEtJRD0kTElCQkxLSUQKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogVXNpbmcgc3lzdGVtIGJsa2lkIGxpYnJhcnkgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiVXNpbmcgc3lzdGVtIGJsa2lkIGxpYnJhcnkgYnkgZGVmYXVsdCIgPiY2OyB9CitlbHNlCisJTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckTElCX0VYVAorCURFUExJQkJMS0lEPSRMSUJCTEtJRAorCVNUQVRJQ19MSUJCTEtJRD0nJChMSUIpL2xpYmJsa2lkJyRTVEFUSUNfTElCX0VYVAorCURFUFNUQVRJQ19MSUJCTEtJRD0kU1RBVElDX0xJQkJMS0lECisJUFJPRklMRURfTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckUFJPRklMRURfTElCX0VYVAorCURFUFBST0ZJTEVEX0xJQkJMS0lEPSRQUk9GSUxFRF9MSUJCTEtJRAorCSRhc19lY2hvICIjZGVmaW5lIENPTkZJR19CVUlMRF9GSU5ERlMgMSIgPj5jb25mZGVmcy5oCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgcHJpdmF0ZSBibGtpZCBsaWJyYXJ5IGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHByaXZhdGUgYmxraWQgbGlicmFyeSBieSBkZWZhdWx0IiA+JjY7IH0KK2ZpCisKK2ZpCisKKworCisKKworCisKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYmFja3RyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2JhY2t0cmFjZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2JhY2t0cmFjZTsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyB1c2Ugb2YgYmFja3RyYWNlIiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgdXNlIG9mIGJhY2t0cmFjZSIgPiY2OyB9CisJJGFzX2VjaG8gIiNkZWZpbmUgRElTQUJMRV9CQUNLVFJBQ0UgMSIgPj5jb25mZGVmcy5oCisKK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgdXNlIG9mIGJhY2t0cmFjZSIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgdXNlIG9mIGJhY2t0cmFjZSIgPiY2OyB9CitmaQorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyB1c2Ugb2YgYmFja3RyYWNlIGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHVzZSBvZiBiYWNrdHJhY2UgYnkgZGVmYXVsdCIgPiY2OyB9CisKK2ZpCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZWJ1Z2ZzIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2RlYnVnZnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9kZWJ1Z2ZzOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIGRlYnVnZnMgc3VwcG9ydCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGRlYnVnZnMgc3VwcG9ydCIgPiY2OyB9CisJREVCVUdGU19DTVQ9IiMiCitlbHNlCisJREVCVUdGU19DTVQ9CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGRlYnVnZnMgc3VwcG9ydCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgZGVidWdmcyBzdXBwb3J0IiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGRlYnVnZnMgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBkZWJ1Z2ZzIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY2OyB9CitERUJVR0ZTX0NNVD0KKworZmkKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtaW1hZ2VyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2ltYWdlcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2ltYWdlcjsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBlMmltYWdlIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBlMmltYWdlIHN1cHBvcnQiID4mNjsgfQorCUlNQUdFUl9DTVQ9IiMiCitlbHNlCisJSU1BR0VSX0NNVD0KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgZTJpbWFnZSBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBlMmltYWdlIHN1cHBvcnQiID4mNjsgfQorZmkKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgZTJpbWFnZSBzdXBwb3J0IGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGUyaW1hZ2Ugc3VwcG9ydCBieSBkZWZhdWx0IiA+JjY7IH0KK0lNQUdFUl9DTVQ9CisKK2ZpCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJlc2l6ZXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcmVzaXplcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3Jlc2l6ZXI7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgZTJyZXNpemUgc3VwcG9ydCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGUycmVzaXplIHN1cHBvcnQiID4mNjsgfQorCVJFU0laRVJfQ01UPSIjIgorZWxzZQorCVJFU0laRVJfQ01UPQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBlMnJlc2l6ZSBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBlMnJlc2l6ZSBzdXBwb3J0IiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGUycmVzaXplIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgZTJyZXNpemUgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjY7IH0KK1JFU0laRVJfQ01UPQorCitmaQorCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1kZWZyYWcgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZGVmcmFnK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZGVmcmFnOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBlNGRlZnJhZyBzdXBwb3J0IiA+JjY7IH0KKwlERUZSQUdfQ01UPSIjIgorZWxzZQorCURFRlJBR19DTVQ9CisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnQiID4mNjsgfQorZmkKKworZWxzZQorICBpZiB0ZXN0IC16ICIkV0lUSF9ESUVUX0xJQkMiCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgZTRkZWZyYWcgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjY7IH0KKwlERUZSQUdfQ01UPQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgZTRkZWZyYWcgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgZTRkZWZyYWcgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjY7IH0KKwlERUZSQUdfQ01UPSIjIgorZmkKKworZmkKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZnNjayB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9mc2NrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZnNjazsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJRlNDS19QUk9HPScnIEZTQ0tfTUFOPScnCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE5vdCBidWlsZGluZyBmc2NrIHdyYXBwZXIiID4mNQorJGFzX2VjaG8gIk5vdCBidWlsZGluZyBmc2NrIHdyYXBwZXIiID4mNjsgfQorZWxzZQorCUZTQ0tfUFJPRz1mc2NrIEZTQ0tfTUFOPWZzY2suOAorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBCdWlsZGluZyBmc2NrIHdyYXBwZXIiID4mNQorJGFzX2VjaG8gIkJ1aWxkaW5nIGZzY2sgd3JhcHBlciIgPiY2OyB9CitmaQorCitlbHNlCisgIGNhc2UgIiRob3N0X29zIiBpbgorICBnbnUqKQorICAgIEZTQ0tfUFJPRz0nJyBGU0NLX01BTj0nJworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBOb3QgYnVpbGRpbmcgZnNjayB3cmFwcGVyIGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIk5vdCBidWlsZGluZyBmc2NrIHdyYXBwZXIgYnkgZGVmYXVsdCIgPiY2OyB9CisgICAgOzsKKyAgKikKKyAgICBGU0NLX1BST0c9ZnNjayBGU0NLX01BTj1mc2NrLjgKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogQnVpbGRpbmcgZnNjayB3cmFwcGVyIGJ5IGRlZmF1bHQiID4mNQorJGFzX2VjaG8gIkJ1aWxkaW5nIGZzY2sgd3JhcHBlciBieSBkZWZhdWx0IiA+JjY7IH0KK2VzYWMKKworZmkKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1lMmluaXRyZC1oZWxwZXIgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZTJpbml0cmRfaGVscGVyK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZTJpbml0cmRfaGVscGVyOyBpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlFMklOSVRSRF9QUk9HPScnIEUySU5JVFJEX01BTj0nJworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBOb3QgYnVpbGRpbmcgZTJpbml0cmQgaGVscGVyIiA+JjUKKyRhc19lY2hvICJOb3QgYnVpbGRpbmcgZTJpbml0cmQgaGVscGVyIiA+JjY7IH0KK2Vsc2UKKwlFMklOSVRSRF9QUk9HPWUyaW5pdHJkX2hlbHBlciBFMklOSVRSRF9NQU49ZTJpbml0cmRfaGVscGVyLjgKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogQnVpbGRpbmcgZTJpbml0cmQgaGVscGVyIiA+JjUKKyRhc19lY2hvICJCdWlsZGluZyBlMmluaXRyZCBoZWxwZXIiID4mNjsgfQorZmkKKworZWxzZQorICBFMklOSVRSRF9QUk9HPWUyaW5pdHJkX2hlbHBlciBFMklOSVRSRF9NQU49ZTJpbml0cmRfaGVscGVyLjgKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBCdWlsZGluZyBlMmluaXRyZCBoZWxwZXIgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiQnVpbGRpbmcgZTJpbml0cmQgaGVscGVyIGJ5IGRlZmF1bHQiID4mNjsgfQorCitmaQorCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRscyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV90bHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV90bHM7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXRyeV90bHM9IiIKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIHRocmVhZCBsb2NhbCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgdGhyZWFkIGxvY2FsIHN1cHBvcnQiID4mNjsgfQorZWxzZQorCXRyeV90bHM9InllcyIKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgdGhyZWFkIGxvY2FsIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHRocmVhZCBsb2NhbCBzdXBwb3J0IiA+JjY7IH0KK2ZpCisKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFdJVEhfRElFVF9MSUJDIgordGhlbgorCXRyeV90bHM9IiIKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlldCBsaWJjIGRvZXMgbm90IHN1cHBvcnQgdGhyZWFkIGxvY2FsIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkRpZXQgbGliYyBkb2VzIG5vdCBzdXBwb3J0IHRocmVhZCBsb2NhbCBzdXBwb3J0IiA+JjY7IH0KK2Vsc2UKKwl0cnlfdGxzPSJ5ZXMiCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IFRyeSB1c2luZyB0aHJlYWQgbG9jYWwgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJUcnkgdXNpbmcgdGhyZWFkIGxvY2FsIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY2OyB9CitmaQorCitmaQorCitpZiB0ZXN0ICIkdHJ5X3RscyIgPSAieWVzIgordGhlbgorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHRocmVhZCBsb2NhbCBzdG9yYWdlIChUTFMpIGNsYXNzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSBjbGFzcy4uLiAiID4mNjsgfQorICBpZiAke2FjX2N2X3Rscys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICBheF90bHNfa2V5d29yZHM9Il9fdGhyZWFkIF9fZGVjbHNwZWModGhyZWFkKSBub25lIgorICAgIGZvciBheF90bHNfa2V5d29yZCBpbiAkYXhfdGxzX2tleXdvcmRzOyBkbworICAgICAgIGNhc2UgJGF4X3Rsc19rZXl3b3JkIGluCisgICAgICAgICAgbm9uZSkgYWNfY3ZfdGxzPW5vbmUgOyBicmVhayA7OworICAgICAgICAgICopCisgICAgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGxpYi5oPgorICAgICAgICAgICAgICAgICBzdGF0aWMgdm9pZAorICAgICAgICAgICAgICAgICBmb28odm9pZCkgeworICAgICAgICAgICAgICAgICBzdGF0aWMgICRheF90bHNfa2V5d29yZCAgaW50IGJhcjsKKyAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICAgfQoraW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl90bHM9JGF4X3Rsc19rZXl3b3JkIDsgYnJlYWsKK2Vsc2UKKyAgYWNfY3ZfdGxzPW5vbmUKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgICAgIGVzYWMKKyAgICBkb25lCisKK2ZpCisKKworICBpZiB0ZXN0ICIkYWNfY3ZfdGxzIiAhPSAibm9uZSI7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBUTFMgJGFjX2N2X3RscworX0FDRU9GCisKKyAgZmkKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90bHMiID4mNQorJGFzX2VjaG8gIiRhY19jdl90bHMiID4mNjsgfQorCitmaQorCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdXVpZGQgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfdXVpZGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV91dWlkZDsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IE5vdCBidWlsZGluZyB1dWlkZCIgPiY1CiskYXNfZWNobyAiTm90IGJ1aWxkaW5nIHV1aWRkIiA+JjY7IH0KKwlVVUlERF9DTVQ9IiMiCitlbHNlCisJJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1VVSUREIDEiID4+Y29uZmRlZnMuaAorCisJVVVJRERfQ01UPSIiCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEJ1aWxkaW5nIHV1aWRkIiA+JjUKKyRhc19lY2hvICJCdWlsZGluZyB1dWlkZCIgPiY2OyB9CitmaQorCitlbHNlCisgICRhc19lY2hvICIjZGVmaW5lIFVTRV9VVUlERCAxIiA+PmNvbmZkZWZzLmgKKworaWYgdGVzdCAteiAiJFVVSURfQ01UIgordGhlbgorCVVVSUREX0NNVD0iIgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBCdWlsZGluZyB1dWlkZCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJCdWlsZGluZyB1dWlkZCBieSBkZWZhdWx0IiA+JjY7IH0KK2Vsc2UKKwlVVUlERF9DTVQ9IiMiCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyB1dWlkZCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgdXVpZGQgYnkgZGVmYXVsdCIgPiY2OyB9CitmaQorCitmaQorCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1tcCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9tbXArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9tbXA7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgbW1wIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyBtbXAgc3VwcG9ydCIgPiY2OyB9CitlbHNlCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIG1tcCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBtbXAgc3VwcG9ydCIgPiY2OyB9CisJJGFzX2VjaG8gIiNkZWZpbmUgQ09ORklHX01NUCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgbW1wIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgbW1wIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY2OyB9CiskYXNfZWNobyAiI2RlZmluZSBDT05GSUdfTU1QIDEiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRkYiB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV90ZGIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV90ZGI7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgdGRiIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkRpc2FibGluZyB0ZGIgc3VwcG9ydCIgPiY2OyB9CisJVERCX0NNVD0iIyIKKwlUREJfTUFOX0NPTU1FTlQ9Jy5cIicKK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgdGRiIHN1cHBvcnQiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIHRkYiBzdXBwb3J0IiA+JjY7IH0KKwkkYXNfZWNobyAiI2RlZmluZSBDT05GSUdfVERCIDEiID4+Y29uZmRlZnMuaAorCisJVERCX0NNVD0iIgorCVREQl9NQU5fQ09NTUVOVD0iIgorZmkKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgbW1wIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgbW1wIHN1cHBvcnQgYnkgZGVmYXVsdCIgPiY2OyB9CiskYXNfZWNobyAiI2RlZmluZSBDT05GSUdfVERCIDEiID4+Y29uZmRlZnMuaAorCitUREJfQ01UPSIiCitUREJfTUFOX0NPTU1FTlQ9IiIKKworZmkKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJtYXAtc3RhdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfYm1hcF9zdGF0cytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2JtYXBfc3RhdHM7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgYml0bWFwIHN0YXRpc3RpY3Mgc3VwcG9ydCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGJpdG1hcCBzdGF0aXN0aWNzIHN1cHBvcnQiID4mNjsgfQorZWxzZQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBFbmFibGluZyBiaXRtYXAgc3RhdGlzdGljcyBzdXBwb3J0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBiaXRtYXAgc3RhdGlzdGljcyBzdXBwb3J0IiA+JjY7IH0KKwkkYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfQk1BUF9TVEFUUyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgYml0bWFwIHN0YXRpc3RpY3Mgc3VwcG9ydCBieSBkZWZhdWx0IiA+JjUKKyRhc19lY2hvICJFbmFibGluZyBiaXRtYXAgc3RhdGlzdGljcyBzdXBwb3J0IGJ5IGRlZmF1bHQiID4mNjsgfQorJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX0JNQVBfU1RBVFMgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtYm1hcC1zdGF0cy1vcHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfYm1hcF9zdGF0c19vcHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9ibWFwX3N0YXRzX29wczsgaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IERpc2FibGluZyBhZGRpdGlvbmFsIGJpdG1hcCBzdGF0aXN0aWNzIiA+JjUKKyRhc19lY2hvICJEaXNhYmxpbmcgYWRkaXRpb25hbCBiaXRtYXAgc3RhdGlzdGljcyIgPiY2OyB9CitlbHNlCisJCWlmIHRlc3QgIngke2VuYWJsZV9ibWFwX3N0YXRzfSIgPSAieG5vIjsgdGhlbiA6CisgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIkVycm9yIC0tZW5hYmxlLWJtYXAtc3RhdHMtb3BzIHJlcXVpcmVzIGJtYXAtc3RhdHMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CitmaQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3MiID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3MiID4mNjsgfQorCSRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9CTUFQX1NUQVRTX09QUyAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRGlzYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3MgYnkgZGVmYXVsdCIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3MgYnkgZGVmYXVsdCIgPiY2OyB9CisKK2ZpCisKK01BS0VGSUxFX0xJQlJBUlk9JHNyY2Rpci9saWIvTWFrZWZpbGUubGlicmFyeQorCitHRVRURVhUX1BBQ0tBR0U9ZTJmc3Byb2dzCitQQUNLQUdFPWUyZnNwcm9ncworVkVSU0lPTj0iJEUyRlNQUk9HU19WRVJTSU9OIgorVkVSU0lPTj0wLjE0LjEKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBQQUNLQUdFICIkUEFDS0FHRSIKK19BQ0VPRgorCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgVkVSU0lPTiAiJFZFUlNJT04iCitfQUNFT0YKKworCisKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJHtNQUtFLW1ha2V9IHNldHMgXCQoTUFLRSkiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKS4uLiAiID4mNjsgfQorc2V0IHggJHtNQUtFLW1ha2V9CithY19tYWtlPWAkYXNfZWNobyAiJDIiIHwgc2VkICdzLysvcC9nOyBzL1teYS16QS1aMC05X10vXy9nJ2AKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRgorU0hFTEwgPSAvYmluL3NoCithbGw6CisJQGVjaG8gJ0BAQCUlJT0kKE1BS0UpPUBAQCUlJScKK19BQ0VPRgorIyBHTlUgbWFrZSBzb21ldGltZXMgcHJpbnRzICJtYWtlWzFdOiBFbnRlcmluZyAuLi4iLCB3aGljaCB3b3VsZCBjb25mdXNlIHVzLgorY2FzZSBgJHtNQUtFLW1ha2V9IC1mIGNvbmZ0ZXN0Lm1ha2UgMj4vZGV2L251bGxgIGluCisgICpAQEAlJSU9Pyo9QEBAJSUlKikKKyAgICBldmFsIGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldD15ZXM7OworICAqKQorICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PW5vOzsKK2VzYWMKK3JtIC1mIGNvbmZ0ZXN0Lm1ha2UKK2ZpCitpZiBldmFsIHRlc3QgXCRhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQgPSB5ZXM7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgU0VUX01BS0U9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICBTRVRfTUFLRT0iTUFLRT0ke01BS0UtbWFrZX0iCitmaQorCisjIEZpbmQgYSBnb29kIGluc3RhbGwgcHJvZ3JhbS4gIFdlIHByZWZlciBhIEMgcHJvZ3JhbSAoZmFzdGVyKSwKKyMgc28gb25lIHNjcmlwdCBpcyBhcyBnb29kIGFzIGFub3RoZXIuICBCdXQgYXZvaWQgdGhlIGJyb2tlbiBvcgorIyBpbmNvbXBhdGlibGUgdmVyc2lvbnM6CisjIFN5c1YgL2V0Yy9pbnN0YWxsLCAvdXNyL3NiaW4vaW5zdGFsbAorIyBTdW5PUyAvdXNyL2V0Yy9pbnN0YWxsCisjIElSSVggL3NiaW4vaW5zdGFsbAorIyBBSVggL2Jpbi9pbnN0YWxsCisjIEFtaWdhT1MgL0MvaW5zdGFsbCwgd2hpY2ggaW5zdGFsbHMgYm9vdGJsb2NrcyBvbiBmbG9wcHkgZGlzY3MKKyMgQUlYIDQgL3Vzci9iaW4vaW5zdGFsbGJzZCwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGhvdXQgYSAtZyBmbGFnCisjIEFGUyAvdXNyL2Fmc3dzL2Jpbi9pbnN0YWxsLCB3aGljaCBtaXNoYW5kbGVzIG5vbmV4aXN0ZW50IGFyZ3MKKyMgU1ZSNCAvdXNyL3VjYi9pbnN0YWxsLCB3aGljaCB0cmllcyB0byB1c2UgdGhlIG5vbmV4aXN0ZW50IGdyb3VwICJzdGFmZiIKKyMgT1MvMidzIHN5c3RlbSBpbnN0YWxsLCB3aGljaCBoYXMgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZW1hbnRpYworIyAuL2luc3RhbGwsIHdoaWNoIGNhbiBiZSBlcnJvbmVvdXNseSBjcmVhdGVkIGJ5IG1ha2UgZnJvbSAuL2luc3RhbGwuc2guCisjIFJlamVjdCBpbnN0YWxsIHByb2dyYW1zIHRoYXQgY2Fubm90IGluc3RhbGwgbXVsdGlwbGUgZmlsZXMuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIEJTRC1jb21wYXRpYmxlIGluc3RhbGwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbC4uLiAiID4mNjsgfQoraWYgdGVzdCAteiAiJElOU1RBTEwiOyB0aGVuCitpZiAke2FjX2N2X3BhdGhfaW5zdGFsbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAjIEFjY291bnQgZm9yIHBlb3BsZSB3aG8gcHV0IHRyYWlsaW5nIHNsYXNoZXMgaW4gUEFUSCBlbGVtZW50cy4KK2Nhc2UgJGFzX2Rpci8gaW4gIygoCisgIC4vIHwgLi8vIHwgL1tjQ10vKiB8IFwKKyAgL2V0Yy8qIHwgL3Vzci9zYmluLyogfCAvdXNyL2V0Yy8qIHwgL3NiaW4vKiB8IC91c3IvYWZzd3MvYmluLyogfCBcCisgID86W1xcL11vczJbXFwvXWluc3RhbGxbXFwvXSogfCA/OltcXC9dT1MyW1xcL11JTlNUQUxMW1xcL10qIHwgXAorICAvdXNyL3VjYi8qICkgOzsKKyAgKikKKyAgICAjIE9TRjEgYW5kIFNDTyBPRFQgMy4wIGhhdmUgdGhlaXIgb3duIG5hbWVzIGZvciBpbnN0YWxsLgorICAgICMgRG9uJ3QgdXNlIGluc3RhbGxic2QgZnJvbSBPU0Ygc2luY2UgaXQgaW5zdGFsbHMgc3R1ZmYgYXMgcm9vdAorICAgICMgYnkgZGVmYXVsdC4KKyAgICBmb3IgYWNfcHJvZyBpbiBnaW5zdGFsbCBzY29pbnN0IGluc3RhbGw7IGRvCisgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKwlpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCisJICBpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIGRzcG1zZyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgQUlYIGluc3RhbGwuICBJdCBoYXMgYW4gaW5jb21wYXRpYmxlIGNhbGxpbmcgY29udmVudGlvbi4KKwkgICAgOgorCSAgZWxpZiB0ZXN0ICRhY19wcm9nID0gaW5zdGFsbCAmJgorCSAgICBncmVwIHB3cGx1cyAiJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJICAgICMgcHJvZ3JhbS1zcGVjaWZpYyBpbnN0YWxsIHNjcmlwdCB1c2VkIGJ5IEhQIHB3cGx1cy0tZG9uJ3QgdXNlLgorCSAgICA6CisJICBlbHNlCisJICAgIHJtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcgorCSAgICBlY2hvIG9uZSA+IGNvbmZ0ZXN0Lm9uZQorCSAgICBlY2hvIHR3byA+IGNvbmZ0ZXN0LnR3bworCSAgICBta2RpciBjb25mdGVzdC5kaXIKKwkgICAgaWYgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC1jIGNvbmZ0ZXN0Lm9uZSBjb25mdGVzdC50d28gImBwd2RgL2NvbmZ0ZXN0LmRpciIgJiYKKwkgICAgICB0ZXN0IC1zIGNvbmZ0ZXN0Lm9uZSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0LnR3byAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0Lm9uZSAmJgorCSAgICAgIHRlc3QgLXMgY29uZnRlc3QuZGlyL2NvbmZ0ZXN0LnR3bworCSAgICB0aGVuCisJICAgICAgYWNfY3ZfcGF0aF9pbnN0YWxsPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IC1jIgorCSAgICAgIGJyZWFrIDMKKwkgICAgZmkKKwkgIGZpCisJZmkKKyAgICAgIGRvbmUKKyAgICBkb25lCisgICAgOzsKK2VzYWMKKworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK3JtIC1yZiBjb25mdGVzdC5vbmUgY29uZnRlc3QudHdvIGNvbmZ0ZXN0LmRpcgorCitmaQorICBpZiB0ZXN0ICIke2FjX2N2X3BhdGhfaW5zdGFsbCtzZXR9IiA9IHNldDsgdGhlbgorICAgIElOU1RBTEw9JGFjX2N2X3BhdGhfaW5zdGFsbAorICBlbHNlCisgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB1c2UgdGhlIHNsb3cgc2hlbGwgc2NyaXB0LiAgRG9uJ3QgY2FjaGUgYQorICAgICMgdmFsdWUgZm9yIElOU1RBTEwgd2l0aGluIGEgc291cmNlIGRpcmVjdG9yeSwgYmVjYXVzZSB0aGF0IHdpbGwKKyAgICAjIGJyZWFrIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoZSBjYWNoZSBpZiB0aGF0IGRpcmVjdG9yeSBpcworICAgICMgcmVtb3ZlZCwgb3IgaWYgdGhlIHZhbHVlIGlzIGEgcmVsYXRpdmUgbmFtZS4KKyAgICBJTlNUQUxMPSRhY19pbnN0YWxsX3NoCisgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRJTlNUQUxMIiA+JjUKKyRhc19lY2hvICIkSU5TVEFMTCIgPiY2OyB9CisKKyMgVXNlIHRlc3QgLXogYmVjYXVzZSBTdW5PUzQgc2ggbWlzaGFuZGxlcyBicmFjZXMgaW4gJHt2YXItdmFsfS4KKyMgSXQgdGhpbmtzIHRoZSBmaXJzdCBjbG9zZSBicmFjZSBlbmRzIHRoZSB2YXJpYWJsZSBzdWJzdGl0dXRpb24uCit0ZXN0IC16ICIkSU5TVEFMTF9QUk9HUkFNIiAmJiBJTlNUQUxMX1BST0dSQU09JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX1NDUklQVCIgJiYgSU5TVEFMTF9TQ1JJUFQ9JyR7SU5TVEFMTH0nCisKK3Rlc3QgLXogIiRJTlNUQUxMX0RBVEEiICYmIElOU1RBTExfREFUQT0nJHtJTlNUQUxMfSAtbSA2NDQnCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGEgdGhyZWFkLXNhZmUgbWtkaXIgLXAuLi4gIiA+JjY7IH0KK2lmIHRlc3QgLXogIiRNS0RJUl9QIjsgdGhlbgorICBpZiAke2FjX2N2X3BhdGhfbWtkaXIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL29wdC9zZncvYmluCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gbWtkaXIgZ21rZGlyOyBkbworCSBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKwkgICBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIHx8IGNvbnRpbnVlCisJICAgY2FzZSBgIiRhc19kaXIvJGFjX3Byb2ckYWNfZXhlY19leHQiIC0tdmVyc2lvbiAyPiYxYCBpbiAjKAorCSAgICAgJ21rZGlyIChHTlUgY29yZXV0aWxzKSAnKiB8IFwKKwkgICAgICdta2RpciAoY29yZXV0aWxzKSAnKiB8IFwKKwkgICAgICdta2RpciAoZmlsZXV0aWxzKSAnNC4xKikKKwkgICAgICAgYWNfY3ZfcGF0aF9ta2Rpcj0kYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0CisJICAgICAgIGJyZWFrIDM7OworCSAgIGVzYWMKKwkgZG9uZQorICAgICAgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorCisgIHRlc3QgLWQgLi8tLXZlcnNpb24gJiYgcm1kaXIgLi8tLXZlcnNpb24KKyAgaWYgdGVzdCAiJHthY19jdl9wYXRoX21rZGlyK3NldH0iID0gc2V0OyB0aGVuCisgICAgTUtESVJfUD0iJGFjX2N2X3BhdGhfbWtkaXIgLXAiCisgIGVsc2UKKyAgICAjIEFzIGEgbGFzdCByZXNvcnQsIHVzZSB0aGUgc2xvdyBzaGVsbCBzY3JpcHQuICBEb24ndCBjYWNoZSBhCisgICAgIyB2YWx1ZSBmb3IgTUtESVJfUCB3aXRoaW4gYSBzb3VyY2UgZGlyZWN0b3J5LCBiZWNhdXNlIHRoYXQgd2lsbAorICAgICMgYnJlYWsgb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhlIGNhY2hlIGlmIHRoYXQgZGlyZWN0b3J5IGlzCisgICAgIyByZW1vdmVkLCBvciBpZiB0aGUgdmFsdWUgaXMgYSByZWxhdGl2ZSBuYW1lLgorICAgIE1LRElSX1A9IiRhY19pbnN0YWxsX3NoIC1kIgorICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUtESVJfUCIgPiY1CiskYXNfZWNobyAiJE1LRElSX1AiID4mNjsgfQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLworICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworICAgICAgIGFjX3NjcmlwdD0iJGFjX3NjcmlwdCRhc19ubCRhY19zY3JpcHQiCisgICAgIGRvbmUKKyAgICAgZWNobyAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgICAgeyBhY19zY3JpcHQ9OyB1bnNldCBhY19zY3JpcHQ7fQorICAgICBpZiB0ZXN0IC16ICIkU0VEIjsgdGhlbgorICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX1NFRD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfU0VEIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNfcGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfU0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NFRF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIkYWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIE5MUyBpcyByZXF1ZXN0ZWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkLi4uICIgPiY2OyB9CisgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW5scyB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ubHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBlbmFibGV2YWw9JGVuYWJsZV9ubHM7IFVTRV9OTFM9JGVuYWJsZXZhbAorZWxzZQorICBVU0VfTkxTPXllcworZmkKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFVTRV9OTFMiID4mNQorJGFzX2VjaG8gIiRVU0VfTkxTIiA+JjY7IH0KKworCisKKworICAgICAgR0VUVEVYVF9NQUNST19WRVJTSU9OPTAuMTgKKworCisKKworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworIyBGaW5kIG91dCBob3cgdG8gdGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCisjIGFzIHN5c3RlbXMgbWF5IHVzZSBtZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5LgorY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgorIyEgL2Jpbi9zaAorZXhpdCAwCitfQVNFT0YKK2NobW9kICt4IGNvbmYkJC5maWxlCitpZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCitlbHNlCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKK2ZpCitybSAtZiBjb25mJCQuZmlsZQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm1zZ2ZtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbXNnZm10OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9NU0dGTVQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICIkTVNHRk1UIiBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgICBhY19jdl9wYXRoX01TR0ZNVD0iJE1TR0ZNVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgICAgOzsKKyAgKikKKyAgICBhY19zYXZlX0lGUz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworICAgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCisgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICAgIGlmICRhY19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgICAgZWNobyAiJGFzX21lOiB0cnlpbmcgJGFjX2Rpci8kYWNfd29yZC4uLiIgPiY1CisgICAgICAgICAgaWYgJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4mNSAyPiYxICYmCisgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tc3RhdGlzdGljcyAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfcGF0aF9NU0dGTVQ9IiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgICAgICAgICBicmVhayAyCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICBkb25lCisgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX01TR0ZNVCIgJiYgYWNfY3ZfcGF0aF9NU0dGTVQ9IjoiCisgICAgOzsKK2VzYWMKK2ZpCitNU0dGTVQ9IiRhY19jdl9wYXRoX01TR0ZNVCIKK2lmIHRlc3QgIiRNU0dGTVQiICE9ICI6IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1TR0ZNVCIgPiY1CiskYXNfZWNobyAiJE1TR0ZNVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGdtc2dmbXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0dNU0dGTVQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRHTVNHRk1UIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0dNU0dGTVQ9IiRHTVNHRk1UIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9HTVNHRk1UPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0dNU0dGTVQiICYmIGFjX2N2X3BhdGhfR01TR0ZNVD0iJE1TR0ZNVCIKKyAgOzsKK2VzYWMKK2ZpCitHTVNHRk1UPSRhY19jdl9wYXRoX0dNU0dGTVQKK2lmIHRlc3QgLW4gIiRHTVNHRk1UIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEdNU0dGTVQiID4mNQorJGFzX2VjaG8gIiRHTVNHRk1UIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKworICAgIGNhc2UgYCRNU0dGTVQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgTVNHRk1UXzAxNT06IDs7CisgICAgKikgTVNHRk1UXzAxNT0kTVNHRk1UIDs7CisgIGVzYWMKKworICBjYXNlIGAkR01TR0ZNVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBHTVNHRk1UXzAxNT06IDs7CisgICAgKikgR01TR0ZNVF8wMTU9JEdNU0dGTVQgOzsKKyAgZXNhYworCisKKworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworIyBGaW5kIG91dCBob3cgdG8gdGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlcy4gRG9uJ3QgdXNlIGEgemVyby1ieXRlIGZpbGUsCisjIGFzIHN5c3RlbXMgbWF5IHVzZSBtZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5LgorY2F0ID5jb25mJCQuZmlsZSA8PF9BU0VPRgorIyEgL2Jpbi9zaAorZXhpdCAwCitfQVNFT0YKK2NobW9kICt4IGNvbmYkJC5maWxlCitpZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLXgiCitlbHNlCisgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKK2ZpCitybSAtZiBjb25mJCQuZmlsZQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInhnZXR0ZXh0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSB4Z2V0dGV4dDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfWEdFVFRFWFQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICIkWEdFVFRFWFQiIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICAgIGFjX2N2X3BhdGhfWEdFVFRFWFQ9IiRYR0VUVEVYVCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgICAgOzsKKyAgKikKKyAgICBhY19zYXZlX0lGUz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworICAgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCisgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICAgIGlmICRhY19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgICAgZWNobyAiJGFzX21lOiB0cnlpbmcgJGFjX2Rpci8kYWNfd29yZC4uLiIgPiY1CisgICAgICAgICAgaWYgJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCA+JjUgMj4mMSAmJgorICAgICAoaWYgJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpOyB0aGVuCisgICAgICAgICAgICBhY19jdl9wYXRoX1hHRVRURVhUPSIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICAgICAgICAgYnJlYWsgMgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgZG9uZQorICAgIElGUz0iJGFjX3NhdmVfSUZTIgorICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9YR0VUVEVYVCIgJiYgYWNfY3ZfcGF0aF9YR0VUVEVYVD0iOiIKKyAgICA7OworZXNhYworZmkKK1hHRVRURVhUPSIkYWNfY3ZfcGF0aF9YR0VUVEVYVCIKK2lmIHRlc3QgIiRYR0VUVEVYVCIgIT0gIjoiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkWEdFVFRFWFQiID4mNQorJGFzX2VjaG8gIiRYR0VUVEVYVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICAgIHJtIC1mIG1lc3NhZ2VzLnBvCisKKyAgICBjYXNlIGAkWEdFVFRFWFQgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbgorICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTRdIHwgMC4xWzAtNF0uKikgWEdFVFRFWFRfMDE1PTogOzsKKyAgICAqKSBYR0VUVEVYVF8wMTU9JFhHRVRURVhUIDs7CisgIGVzYWMKKworCisKKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5nIHRvIGZpbmQgL2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKyAgIyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9va3MgYWxzbyBhdCB0aGUgRlBBVEggdmFyaWFibGUsCisgICMgc28gd2UgaGF2ZSB0byBzZXQgdGhhdCBhcyB3ZWxsIGZvciB0aGUgdGVzdC4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgJiYgeyAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9SPSc7JworICAgICAgIH0KK2ZpCisKKyMgRmluZCBvdXQgaG93IHRvIHRlc3QgZm9yIGV4ZWN1dGFibGUgZmlsZXMuIERvbid0IHVzZSBhIHplcm8tYnl0ZSBmaWxlLAorIyBhcyBzeXN0ZW1zIG1heSB1c2UgbWV0aG9kcyBvdGhlciB0aGFuIG1vZGUgYml0cyB0byBkZXRlcm1pbmUgZXhlY3V0YWJpbGl0eS4KK2NhdCA+Y29uZiQkLmZpbGUgPDxfQVNFT0YKKyMhIC9iaW4vc2gKK2V4aXQgMAorX0FTRU9GCitjaG1vZCAreCBjb25mJCQuZmlsZQoraWYgdGVzdCAteCBjb25mJCQuZmlsZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC14IgorZWxzZQorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLWYiCitmaQorcm0gLWYgY29uZiQkLmZpbGUKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dtZXJnZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbXNnbWVyZ2U7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX01TR01FUkdFKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAiJE1TR01FUkdFIiBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgICBhY19jdl9wYXRoX01TR01FUkdFPSIkTVNHTUVSR0UiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICAgIDs7CisgICopCisgICAgYWNfc2F2ZV9JRlM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KKyAgICAgIElGUz0iJGFjX3NhdmVfSUZTIgorICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgICAgICBpZiAkYWNfZXhlY3V0YWJsZV9wICIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgICAgICAgIGVjaG8gIiRhc19tZTogdHJ5aW5nICRhY19kaXIvJGFjX3dvcmQuLi4iID4mNQorICAgICAgICAgIGlmICRhY19kaXIvJGFjX3dvcmQgLS11cGRhdGUgLXEgL2Rldi9udWxsIC9kZXYvbnVsbCA+JjUgMj4mMTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfcGF0aF9NU0dNRVJHRT0iJGFjX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAgICAgICAgIGJyZWFrIDIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBJRlM9IiRhY19zYXZlX0lGUyIKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfTVNHTUVSR0UiICYmIGFjX2N2X3BhdGhfTVNHTUVSR0U9IjoiCisgICAgOzsKK2VzYWMKK2ZpCitNU0dNRVJHRT0iJGFjX2N2X3BhdGhfTVNHTUVSR0UiCitpZiB0ZXN0ICIkTVNHTUVSR0UiICE9ICI6IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1TR01FUkdFIiA+JjUKKyRhc19lY2hvICIkTVNHTUVSR0UiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICAgICAgICB0ZXN0IC1uICIkbG9jYWxlZGlyIiB8fCBsb2NhbGVkaXI9JyR7ZGF0YWRpcn0vbG9jYWxlJworCisKKyAgICB0ZXN0IC1uICIke1hHRVRURVhUX0VYVFJBX09QVElPTlMrc2V0fSIgfHwgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KKworCisgIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBwby1kaXJlY3RvcmllcyIKKworCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBMaWJyYXJ5IDIgb3IgbmV3ZXIiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExpYnJhcnkgMiBvciBuZXdlci4uLiAiID4mNjsgfQoraWYgJHthY19jdl9nbnVfbGlicmFyeV8yKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyNpZmRlZiBfX0dOVV9MSUJSQVJZX18KKyAjaWYgKF9fR0xJQkNfXyA+PSAyKSAmJiAhZGVmaW5lZCBfX1VDTElCQ19fCisgIEx1Y2t5IEdOVSB1c2VyCisgI2VuZGlmCisjZW5kaWYKKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAiTHVja3kgR05VIHVzZXIiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgIGFjX2N2X2dudV9saWJyYXJ5XzI9eWVzCitlbHNlCisgIGFjX2N2X2dudV9saWJyYXJ5XzI9bm8KK2ZpCitybSAtZiBjb25mdGVzdCoKKworCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2dudV9saWJyYXJ5XzIiID4mNQorJGFzX2VjaG8gIiRhY19jdl9nbnVfbGlicmFyeV8yIiA+JjY7IH0KKworICAgIEdMSUJDMj0iJGFjX2N2X2dudV9saWJyYXJ5XzIiCisKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfUkFOTElCKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK1JBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKK2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUkFOTElCIiA+JjUKKyRhc19lY2hvICIkUkFOTElCIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19SQU5MSUIiOyB0aGVuCisgIGFjX2N0X1JBTkxJQj0kUkFOTElCCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSIkYWNfY3RfUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQgoraWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9SQU5MSUIiID4mNQorJGFzX2VjaG8gIiRhY19jdF9SQU5MSUIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9SQU5MSUIiID0geDsgdGhlbgorICAgIFJBTkxJQj0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBSQU5MSUI9JGFjX2N0X1JBTkxJQgorICBmaQorZWxzZQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKK2ZpCisKKworCisgIENGTEFHX1ZJU0lCSUxJVFk9CisgIEhBVkVfVklTSUJJTElUWT0wCisgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAtV2Vycm9yIG9wdGlvbiBpcyB1c2FibGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgLVdlcnJvciBvcHRpb24gaXMgdXNhYmxlLi4uICIgPiY2OyB9CisgICAgaWYgJHtnbF9jdl9jY192aXNfd2Vycm9yKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgZ2xfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgICAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKKyAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBnbF9jdl9jY192aXNfd2Vycm9yPXllcworZWxzZQorICBnbF9jdl9jY192aXNfd2Vycm9yPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICBDRkxBR1M9IiRnbF9zYXZlX0NGTEFHUyIKK2ZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2NjX3Zpc193ZXJyb3IiID4mNQorJGFzX2VjaG8gIiRnbF9jdl9jY192aXNfd2Vycm9yIiA+JjY7IH0KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2ltcGxlIHZpc2liaWxpdHkgZGVjbGFyYXRpb25zIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzaW1wbGUgdmlzaWJpbGl0eSBkZWNsYXJhdGlvbnMuLi4gIiA+JjY7IH0KKyAgICBpZiAke2dsX2N2X2NjX3Zpc2liaWxpdHkrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICBnbF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgIENGTEFHUz0iJENGTEFHUyAtZnZpc2liaWxpdHk9aGlkZGVuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAkZ2xfY3ZfY2NfdmlzX3dlcnJvciA9IHllczsgdGhlbgorICAgICAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKKyAgICAgIGZpCisgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCitleHRlcm4gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImhpZGRlbiIpKSkgaW50IGhpZGRlbnZhcjsKKyAgICAgICAgICAgICBleHRlcm4gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImRlZmF1bHQiKSkpIGludCBleHBvcnRlZHZhcjsKKyAgICAgICAgICAgICBleHRlcm4gX19hdHRyaWJ1dGVfXygoX192aXNpYmlsaXR5X18oImhpZGRlbiIpKSkgaW50IGhpZGRlbmZ1bmMgKHZvaWQpOworICAgICAgICAgICAgIGV4dGVybiBfX2F0dHJpYnV0ZV9fKChfX3Zpc2liaWxpdHlfXygiZGVmYXVsdCIpKSkgaW50IGV4cG9ydGVkZnVuYyAodm9pZCk7CisgICAgICAgICAgICAgdm9pZCBkdW1teWZ1bmMgKHZvaWQpIHt9CisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ2xfY3ZfY2NfdmlzaWJpbGl0eT15ZXMKK2Vsc2UKKyAgZ2xfY3ZfY2NfdmlzaWJpbGl0eT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgQ0ZMQUdTPSIkZ2xfc2F2ZV9DRkxBR1MiCitmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9jY192aXNpYmlsaXR5IiA+JjUKKyRhc19lY2hvICIkZ2xfY3ZfY2NfdmlzaWJpbGl0eSIgPiY2OyB9CisgICAgaWYgdGVzdCAkZ2xfY3ZfY2NfdmlzaWJpbGl0eSA9IHllczsgdGhlbgorICAgICAgQ0ZMQUdfVklTSUJJTElUWT0iLWZ2aXNpYmlsaXR5PWhpZGRlbiIKKyAgICAgIEhBVkVfVklTSUJJTElUWT0xCisgICAgZmkKKyAgZmkKKworCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9WSVNJQklMSVRZICRIQVZFX1ZJU0lCSUxJVFkKK19BQ0VPRgorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlubGluZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW5saW5lLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NfaW5saW5lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfY19pbmxpbmU9bm8KK2ZvciBhY19rdyBpbiBpbmxpbmUgX19pbmxpbmVfXyBfX2lubGluZTsgZG8KKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmbmRlZiBfX2NwbHVzcGx1cwordHlwZWRlZiBpbnQgZm9vX3Q7CitzdGF0aWMgJGFjX2t3IGZvb190IHN0YXRpY19mb28gKCkge3JldHVybiAwOyB9CiskYWNfa3cgZm9vX3QgZm9vICgpIHtyZXR1cm4gMDsgfQorI2VuZGlmCisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX2lubGluZT0kYWNfa3cKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgdGVzdCAiJGFjX2N2X2NfaW5saW5lIiAhPSBubyAmJiBicmVhaworZG9uZQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2lubGluZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfaW5saW5lIiA+JjY7IH0KKworY2FzZSAkYWNfY3ZfY19pbmxpbmUgaW4KKyAgaW5saW5lIHwgeWVzKSA7OworICAqKQorICAgIGNhc2UgJGFjX2N2X2NfaW5saW5lIGluCisgICAgICBubykgYWNfdmFsPTs7CisgICAgICAqKSBhY192YWw9JGFjX2N2X2NfaW5saW5lOzsKKyAgICBlc2FjCisgICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2lmbmRlZiBfX2NwbHVzcGx1cworI2RlZmluZSBpbmxpbmUgJGFjX3ZhbAorI2VuZGlmCitfQUNFT0YKKyAgICA7OworZXNhYworCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJzaXplX3QiICJhY19jdl90eXBlX3NpemVfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl90eXBlX3NpemVfdCIgPSB4eWVzOyB0aGVuIDoKKworZWxzZQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIHNpemVfdCB1bnNpZ25lZCBpbnQKK19BQ0VPRgorCitmaQorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3RkaW50LmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN0ZGludC5oLi4uICIgPiY2OyB9CitpZiAke2dsX2N2X2hlYWRlcl9zdGRpbnRfaCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgICAgICAgICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KK2ludAorbWFpbiAoKQorewordWludG1heF90IGkgPSAodWludG1heF90KSAtMTsgcmV0dXJuICFpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGdsX2N2X2hlYWRlcl9zdGRpbnRfaD15ZXMKK2Vsc2UKKyAgZ2xfY3ZfaGVhZGVyX3N0ZGludF9oPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbF9jdl9oZWFkZXJfc3RkaW50X2giID4mNQorJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfc3RkaW50X2giID4mNjsgfQorICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJfc3RkaW50X2ggPSB5ZXM7IHRoZW4KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NURElOVF9IX1dJVEhfVUlOVE1BWCAxCitfQUNFT0YKKworICBmaQorCisjIFRoZSBVbHRyaXggNC4yIG1pcHMgYnVpbHRpbiBhbGxvY2EgZGVjbGFyZWQgYnkgYWxsb2NhLmggb25seSB3b3JrcworIyBmb3IgY29uc3RhbnQgYXJndW1lbnRzLiAgVXNlbGVzcyEKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgYWxsb2NhLmguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfd29ya2luZ19hbGxvY2FfaCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxhbGxvY2EuaD4KK2ludAorbWFpbiAoKQoreworY2hhciAqcCA9IChjaGFyICopIGFsbG9jYSAoMiAqIHNpemVvZiAoaW50KSk7CisJCQkgIGlmIChwKSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl93b3JraW5nX2FsbG9jYV9oPXllcworZWxzZQorICBhY19jdl93b3JraW5nX2FsbG9jYV9oPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3dvcmtpbmdfYWxsb2NhX2giID4mNQorJGFzX2VjaG8gIiRhY19jdl93b3JraW5nX2FsbG9jYV9oIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X3dvcmtpbmdfYWxsb2NhX2ggPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BTExPQ0FfSCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYWxsb2NhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhbGxvY2EuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19HTlVDX18KKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCisjZWxzZQorIyBpZmRlZiBfTVNDX1ZFUgorIyAgaW5jbHVkZSA8bWFsbG9jLmg+CisjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKKyMgZWxzZQorIyAgaWZkZWYgSEFWRV9BTExPQ0FfSAorIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgorIyAgZWxzZQorIyAgIGlmZGVmIF9BSVgKKyAjcHJhZ21hIGFsbG9jYQorIyAgIGVsc2UKKyMgICAgaWZuZGVmIGFsbG9jYSAvKiBwcmVkZWZpbmVkIGJ5IEhQIGNjICtPbGliY2FsbHMgKi8KK3ZvaWQgKmFsbG9jYSAoc2l6ZV90KTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK2NoYXIgKnAgPSAoY2hhciAqKSBhbGxvY2EgKDEpOworCQkJCSAgICBpZiAocCkgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3M9eWVzCitlbHNlCisgIGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZnVuY19hbGxvY2Ffd29ya3MiID4mNjsgfQorCitpZiB0ZXN0ICRhY19jdl9mdW5jX2FsbG9jYV93b3JrcyA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FMTE9DQSAxIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICAjIFRoZSBTVlIzIGxpYlBXIGFuZCBTVlI0IGxpYnVjYiBib3RoIGNvbnRhaW4gaW5jb21wYXRpYmxlIGZ1bmN0aW9ucworIyB0aGF0IGNhdXNlIHRyb3VibGUuICBTb21lIHZlcnNpb25zIGRvIG5vdCBldmVuIGNvbnRhaW4gYWxsb2NhIG9yCisjIGNvbnRhaW4gYSBidWdneSB2ZXJzaW9uLiAgSWYgeW91IHN0aWxsIHdhbnQgdG8gdXNlIHRoZWlyIGFsbG9jYSwKKyMgdXNlIGFyIHRvIGV4dHJhY3QgYWxsb2NhLm8gZnJvbSB0aGVtIGluc3RlYWQgb2YgY29tcGlsaW5nIGFsbG9jYS5jLgorCitBTExPQ0E9XCR7TElCT0JKRElSfWFsbG9jYS4kYWNfb2JqZXh0CisKKyRhc19lY2hvICIjZGVmaW5lIENfQUxMT0NBIDEiID4+Y29uZmRlZnMuaAorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBcYGFsbG9jYS5jJyBuZWVkcyBDcmF5IGhvb2tzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9vc19jcmF5Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2lmIGRlZmluZWQgQ1JBWSAmJiAhIGRlZmluZWQgQ1JBWTIKK3dlYmVjcmF5CisjZWxzZQord2Vub3RiZWNyYXkKKyNlbmRpZgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJ3ZWJlY3JheSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgYWNfY3Zfb3NfY3JheT15ZXMKK2Vsc2UKKyAgYWNfY3Zfb3NfY3JheT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9vc19jcmF5IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfb3NfY3JheSIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9vc19jcmF5ID0geWVzOyB0aGVuCisgIGZvciBhY19mdW5jIGluIF9nZXRiNjcgR0VUQjY3IGdldGI2NzsgZG8KKyAgICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBDUkFZX1NUQUNLU0VHX0VORCAkYWNfZnVuYworX0FDRU9GCisKKyAgICBicmVhaworZmkKKworICBkb25lCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYWNfY3ZfY19zdGFja19kaXJlY3Rpb249MAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskYWNfaW5jbHVkZXNfZGVmYXVsdAoraW50CitmaW5kX3N0YWNrX2RpcmVjdGlvbiAoaW50ICphZGRyLCBpbnQgZGVwdGgpCit7CisgIGludCBkaXIsIGR1bW15ID0gMDsKKyAgaWYgKCEgYWRkcikKKyAgICBhZGRyID0gJmR1bW15OworICAqYWRkciA9IGFkZHIgPCAmZHVtbXkgPyAxIDogYWRkciA9PSAmZHVtbXkgPyAwIDogLTE7CisgIGRpciA9IGRlcHRoID8gZmluZF9zdGFja19kaXJlY3Rpb24gKGFkZHIsIGRlcHRoIC0gMSkgOiAwOworICByZXR1cm4gZGlyICsgZHVtbXk7Cit9CisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICByZXR1cm4gZmluZF9zdGFja19kaXJlY3Rpb24gKDAsIGFyZ2MgKyAhYXJndiArIDIwKSA8IDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX3N0YWNrX2RpcmVjdGlvbj0xCitlbHNlCisgIGFjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uPS0xCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24iID4mNQorJGFzX2VjaG8gIiRhY19jdl9jX3N0YWNrX2RpcmVjdGlvbiIgPiY2OyB9CitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNUQUNLX0RJUkVDVElPTiAkYWNfY3ZfY19zdGFja19kaXJlY3Rpb24KK19BQ0VPRgorCisKK2ZpCisKKworCisKKyAgZm9yIGFjX2hlYWRlciBpbiAkYWNfaGVhZGVyX2xpc3QKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQKKyIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKworCisKKworCisKK2ZvciBhY19mdW5jIGluIGdldHBhZ2VzaXplCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImdldHBhZ2VzaXplIiAiYWNfY3ZfZnVuY19nZXRwYWdlc2l6ZSIKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19nZXRwYWdlc2l6ZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKK19BQ0VPRgorCitmaQorZG9uZQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIG1tYXAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgbW1hcC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPW5vCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CisvKiBtYWxsb2MgbWlnaHQgaGF2ZSBiZWVuIHJlbmFtZWQgYXMgcnBsX21hbGxvYy4gKi8KKyN1bmRlZiBtYWxsb2MKKworLyogVGhhbmtzIHRvIE1pa2UgSGFlcnRlbCBhbmQgSmltIEF2ZXJhIGZvciB0aGlzIHRlc3QuCisgICBIZXJlIGlzIGEgbWF0cml4IG9mIG1tYXAgcG9zc2liaWxpdGllczoKKwltbWFwIHByaXZhdGUgbm90IGZpeGVkCisJbW1hcCBwcml2YXRlIGZpeGVkIGF0IHNvbWV3aGVyZSBjdXJyZW50bHkgdW5tYXBwZWQKKwltbWFwIHByaXZhdGUgZml4ZWQgYXQgc29tZXdoZXJlIGFscmVhZHkgbWFwcGVkCisJbW1hcCBzaGFyZWQgbm90IGZpeGVkCisJbW1hcCBzaGFyZWQgZml4ZWQgYXQgc29tZXdoZXJlIGN1cnJlbnRseSB1bm1hcHBlZAorCW1tYXAgc2hhcmVkIGZpeGVkIGF0IHNvbWV3aGVyZSBhbHJlYWR5IG1hcHBlZAorICAgRm9yIHByaXZhdGUgbWFwcGluZ3MsIHdlIHNob3VsZCB2ZXJpZnkgdGhhdCBjaGFuZ2VzIGNhbm5vdCBiZSByZWFkKCkKKyAgIGJhY2sgZnJvbSB0aGUgZmlsZSwgbm9yIG1tYXAncyBiYWNrIGZyb20gdGhlIGZpbGUgYXQgYSBkaWZmZXJlbnQKKyAgIGFkZHJlc3MuICAoVGhlcmUgaGF2ZSBiZWVuIHN5c3RlbXMgd2hlcmUgcHJpdmF0ZSB3YXMgbm90IGNvcnJlY3RseQorICAgaW1wbGVtZW50ZWQgbGlrZSB0aGUgaW5mYW1vdXMgaTM4NiBzdnI0LjAsIGFuZCBzeXN0ZW1zIHdoZXJlIHRoZQorICAgVk0gcGFnZSBjYWNoZSB3YXMgbm90IGNvaGVyZW50IHdpdGggdGhlIGZpbGUgc3lzdGVtIGJ1ZmZlciBjYWNoZQorICAgbGlrZSBlYXJseSB2ZXJzaW9ucyBvZiBGcmVlQlNEIGFuZCBwb3NzaWJseSBjb250ZW1wb3JhcnkgTmV0QlNELikKKyAgIEZvciBzaGFyZWQgbWFwcGluZ3MsIHdlIHNob3VsZCBjb252ZXJzZWx5IHZlcmlmeSB0aGF0IGNoYW5nZXMgZ2V0CisgICBwcm9wYWdhdGVkIGJhY2sgdG8gYWxsIHRoZSBwbGFjZXMgdGhleSdyZSBzdXBwb3NlZCB0byBiZS4KKworICAgR3JlcCB3YW50cyBwcml2YXRlIGZpeGVkIGFscmVhZHkgbWFwcGVkLgorICAgVGhlIG1haW4gdGhpbmdzIGdyZXAgbmVlZHMgdG8ga25vdyBhYm91dCBtbWFwIGFyZToKKyAgICogZG9lcyBpdCBleGlzdCBhbmQgaXMgaXQgc2FmZSB0byB3cml0ZSBpbnRvIHRoZSBtbWFwJ2QgYXJlYQorICAgKiBob3cgdG8gdXNlIGl0IChCU0QgdmFyaWFudHMpICAqLworCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorCisjaWYgIWRlZmluZWQgU1REQ19IRUFERVJTICYmICFkZWZpbmVkIEhBVkVfU1RETElCX0gKK2NoYXIgKm1hbGxvYyAoKTsKKyNlbmRpZgorCisvKiBUaGlzIG1lc3Mgd2FzIGNvcGllZCBmcm9tIHRoZSBHTlUgZ2V0cGFnZXNpemUuaC4gICovCisjaWZuZGVmIEhBVkVfR0VUUEFHRVNJWkUKKyMgaWZkZWYgX1NDX1BBR0VTSVpFCisjICBkZWZpbmUgZ2V0cGFnZXNpemUoKSBzeXNjb25mKF9TQ19QQUdFU0laRSkKKyMgZWxzZSAvKiBubyBfU0NfUEFHRVNJWkUgKi8KKyMgIGlmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyMgICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyMgICBpZmRlZiBFWEVDX1BBR0VTSVpFCisjICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIEVYRUNfUEFHRVNJWkUKKyMgICBlbHNlIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgICAgaWZkZWYgTkJQRworIyAgICAgZGVmaW5lIGdldHBhZ2VzaXplKCkgTkJQRyAqIENMU0laRQorIyAgICAgaWZuZGVmIENMU0laRQorIyAgICAgIGRlZmluZSBDTFNJWkUgMQorIyAgICAgZW5kaWYgLyogbm8gQ0xTSVpFICovCisjICAgIGVsc2UgLyogbm8gTkJQRyAqLworIyAgICAgaWZkZWYgTkJQQworIyAgICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIE5CUEMKKyMgICAgIGVsc2UgLyogbm8gTkJQQyAqLworIyAgICAgIGlmZGVmIFBBR0VTSVpFCisjICAgICAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIFBBR0VTSVpFCisjICAgICAgZW5kaWYgLyogUEFHRVNJWkUgKi8KKyMgICAgIGVuZGlmIC8qIG5vIE5CUEMgKi8KKyMgICAgZW5kaWYgLyogbm8gTkJQRyAqLworIyAgIGVuZGlmIC8qIG5vIEVYRUNfUEFHRVNJWkUgKi8KKyMgIGVsc2UgLyogbm8gSEFWRV9TWVNfUEFSQU1fSCAqLworIyAgIGRlZmluZSBnZXRwYWdlc2l6ZSgpIDgxOTIJLyogcHVudCB0b3RhbGx5ICovCisjICBlbmRpZiAvKiBubyBIQVZFX1NZU19QQVJBTV9IICovCisjIGVuZGlmIC8qIG5vIF9TQ19QQUdFU0laRSAqLworCisjZW5kaWYgLyogbm8gSEFWRV9HRVRQQUdFU0laRSAqLworCitpbnQKK21haW4gKCkKK3sKKyAgY2hhciAqZGF0YSwgKmRhdGEyLCAqZGF0YTM7CisgIGNvbnN0IGNoYXIgKmNkYXRhMjsKKyAgaW50IGksIHBhZ2VzaXplOworICBpbnQgZmQsIGZkMjsKKworICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOworCisgIC8qIEZpcnN0LCBtYWtlIGEgZmlsZSB3aXRoIHNvbWUga25vd24gZ2FyYmFnZSBpbiBpdC4gKi8KKyAgZGF0YSA9IChjaGFyICopIG1hbGxvYyAocGFnZXNpemUpOworICBpZiAoIWRhdGEpCisgICAgcmV0dXJuIDE7CisgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgICooZGF0YSArIGkpID0gcmFuZCAoKTsKKyAgdW1hc2sgKDApOworICBmZCA9IGNyZWF0ICgiY29uZnRlc3QubW1hcCIsIDA2MDApOworICBpZiAoZmQgPCAwKQorICAgIHJldHVybiAyOworICBpZiAod3JpdGUgKGZkLCBkYXRhLCBwYWdlc2l6ZSkgIT0gcGFnZXNpemUpCisgICAgcmV0dXJuIDM7CisgIGNsb3NlIChmZCk7CisKKyAgLyogTmV4dCwgY2hlY2sgdGhhdCB0aGUgdGFpbCBvZiBhIHBhZ2UgaXMgemVyby1maWxsZWQuICBGaWxlIG11c3QgaGF2ZQorICAgICBub24temVybyBsZW5ndGgsIG90aGVyd2lzZSB3ZSByaXNrIFNJR0JVUyBmb3IgZW50aXJlIHBhZ2UuICAqLworICBmZDIgPSBvcGVuICgiY29uZnRlc3QudHh0IiwgT19SRFdSIHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2MDApOworICBpZiAoZmQyIDwgMCkKKyAgICByZXR1cm4gNDsKKyAgY2RhdGEyID0gIiI7CisgIGlmICh3cml0ZSAoZmQyLCBjZGF0YTIsIDEpICE9IDEpCisgICAgcmV0dXJuIDU7CisgIGRhdGEyID0gKGNoYXIgKikgbW1hcCAoMCwgcGFnZXNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGZkMiwgMEwpOworICBpZiAoZGF0YTIgPT0gTUFQX0ZBSUxFRCkKKyAgICByZXR1cm4gNjsKKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgaWYgKCooZGF0YTIgKyBpKSkKKyAgICAgIHJldHVybiA3OworICBjbG9zZSAoZmQyKTsKKyAgaWYgKG11bm1hcCAoZGF0YTIsIHBhZ2VzaXplKSkKKyAgICByZXR1cm4gODsKKworICAvKiBOZXh0LCB0cnkgdG8gbW1hcCB0aGUgZmlsZSBhdCBhIGZpeGVkIGFkZHJlc3Mgd2hpY2ggYWxyZWFkeSBoYXMKKyAgICAgc29tZXRoaW5nIGVsc2UgYWxsb2NhdGVkIGF0IGl0LiAgSWYgd2UgY2FuLCBhbHNvIG1ha2Ugc3VyZSB0aGF0CisgICAgIHdlIHNlZSB0aGUgc2FtZSBnYXJiYWdlLiAgKi8KKyAgZmQgPSBvcGVuICgiY29uZnRlc3QubW1hcCIsIE9fUkRXUik7CisgIGlmIChmZCA8IDApCisgICAgcmV0dXJuIDk7CisgIGlmIChkYXRhMiAhPSBtbWFwIChkYXRhMiwgcGFnZXNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCisJCSAgICAgTUFQX1BSSVZBVEUgfCBNQVBfRklYRUQsIGZkLCAwTCkpCisgICAgcmV0dXJuIDEwOworICBmb3IgKGkgPSAwOyBpIDwgcGFnZXNpemU7ICsraSkKKyAgICBpZiAoKihkYXRhICsgaSkgIT0gKihkYXRhMiArIGkpKQorICAgICAgcmV0dXJuIDExOworCisgIC8qIEZpbmFsbHksIG1ha2Ugc3VyZSB0aGF0IGNoYW5nZXMgdG8gdGhlIG1hcHBlZCBhcmVhIGRvIG5vdAorICAgICBwZXJjb2xhdGUgYmFjayB0byB0aGUgZmlsZSBhcyBzZWVuIGJ5IHJlYWQoKS4gIChUaGlzIGlzIGEgYnVnIG9uCisgICAgIHNvbWUgdmFyaWFudHMgb2YgaTM4NiBzdnI0LjAuKSAgKi8KKyAgZm9yIChpID0gMDsgaSA8IHBhZ2VzaXplOyArK2kpCisgICAgKihkYXRhMiArIGkpID0gKihkYXRhMiArIGkpICsgMTsKKyAgZGF0YTMgPSAoY2hhciAqKSBtYWxsb2MgKHBhZ2VzaXplKTsKKyAgaWYgKCFkYXRhMykKKyAgICByZXR1cm4gMTI7CisgIGlmIChyZWFkIChmZCwgZGF0YTMsIHBhZ2VzaXplKSAhPSBwYWdlc2l6ZSkKKyAgICByZXR1cm4gMTM7CisgIGZvciAoaSA9IDA7IGkgPCBwYWdlc2l6ZTsgKytpKQorICAgIGlmICgqKGRhdGEgKyBpKSAhPSAqKGRhdGEzICsgaSkpCisgICAgICByZXR1cm4gMTQ7CisgIGNsb3NlIChmZCk7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXMKK2Vsc2UKKyAgYWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2Z1bmNfbW1hcF9maXhlZF9tYXBwZWQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NTUFQIDEiID4+Y29uZmRlZnMuaAorCitmaQorcm0gLWYgY29uZnRlc3QubW1hcCBjb25mdGVzdC50eHQKKworCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgU0lHRlBFIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBTSUdGUEUuLi4gIiA+JjY7IH0KK2lmICR7Z3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT0KKyAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgICBtYWNvcyogfCBkYXJ3aW5bNi05XSogfCBkYXJ3aW5bMS05XVswLTldKikKKyAgICAgICAgICAjIE9uIE1hYyBPUyBYIDEwLjIgb3IgbmV3ZXIsIGp1c3QgYXNzdW1lIHRoZSBzYW1lIGFzIHdoZW4gY3Jvc3MtCisgICAgICAgICAgIyBjb21waWxpbmcuIElmIHdlIHdlcmUgdG8gcGVyZm9ybSB0aGUgcmVhbCB0ZXN0LCAxIENyYXNoIFJlcG9ydAorICAgICAgICAgICMgZGlhbG9nIHdpbmRvdyB3b3VsZCBwb3AgdXAuCisgICAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICAgICAgaVszNDU2N104NiB8IHg4Nl82NCkKKyAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIHllcyIgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIGlmIHRlc3QgLXogIiRndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZSI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorCisgICAgICAgICAgICAjIEd1ZXNzIGJhc2VkIG9uIHRoZSBDUFUuCisgICAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICAgICAgICAgIGFscGhhKiB8IGlbMzQ1NjddODYgfCB4ODZfNjQgfCBtNjhrIHwgczM5MCopCisgICAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIHllcyI7OworICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyBubyI7OworICAgICAgICAgICAgZXNhYworCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitzdGF0aWMgdm9pZAorc2lnZnBlX2hhbmRsZXIgKGludCBzaWcpCit7CisgIC8qIEV4aXQgd2l0aCBjb2RlIDAgaWYgU0lHRlBFLCB3aXRoIGNvZGUgMSBpZiBhbnkgb3RoZXIgc2lnbmFsLiAgKi8KKyAgZXhpdCAoc2lnICE9IFNJR0ZQRSk7Cit9CisKK2ludCB4ID0gMTsKK2ludCB5ID0gMDsKK2ludCB6OworaW50IG5hbjsKKworaW50IG1haW4gKCkKK3sKKyAgc2lnbmFsIChTSUdGUEUsIHNpZ2ZwZV9oYW5kbGVyKTsKKy8qIElSSVggYW5kIEFJWCAod2hlbiAieGxjIC1xY2hlY2siIGlzIHVzZWQpIHlpZWxkIHNpZ25hbCBTSUdUUkFQLiAgKi8KKyNpZiAoZGVmaW5lZCAoX19zZ2kpIHx8IGRlZmluZWQgKF9BSVgpKSAmJiBkZWZpbmVkIChTSUdUUkFQKQorICBzaWduYWwgKFNJR1RSQVAsIHNpZ2ZwZV9oYW5kbGVyKTsKKyNlbmRpZgorLyogTGludXgvU1BBUkMgeWllbGRzIHNpZ25hbCBTSUdJTEwuICAqLworI2lmIGRlZmluZWQgKF9fc3BhcmNfXykgJiYgZGVmaW5lZCAoX19saW51eF9fKQorICBzaWduYWwgKFNJR0lMTCwgc2lnZnBlX2hhbmRsZXIpOworI2VuZGlmCisKKyAgeiA9IHggLyB5OworICBuYW4gPSB5IC8geTsKKyAgZXhpdCAoMik7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPXllcworZWxzZQorICBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgIGZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlIiA+JjUKKyRhc19lY2hvICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiID4mNjsgfQorICBjYXNlICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiIGluCisgICAgKnllcykgdmFsdWU9MTs7CisgICAgKikgdmFsdWU9MDs7CisgIGVzYWMKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBJTlRESVYwX1JBSVNFU19TSUdGUEUgJHZhbHVlCitfQUNFT0YKKworCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaW50dHlwZXMuaCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50dHlwZXMuaC4uLiAiID4mNjsgfQoraWYgJHtnbF9jdl9oZWFkZXJfaW50dHlwZXNfaCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKK2ludAorbWFpbiAoKQorewordWludG1heF90IGkgPSAodWludG1heF90KSAtMTsgcmV0dXJuICFpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oPXllcworZWxzZQorICBnbF9jdl9oZWFkZXJfaW50dHlwZXNfaD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3ZfaGVhZGVyX2ludHR5cGVzX2giID4mNQorJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfaW50dHlwZXNfaCIgPiY2OyB9CisgIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWCAxCitfQUNFT0YKKworICBmaQorCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdW5zaWduZWQgbG9uZyBsb25nIGludCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdW5zaWduZWQgbG9uZyBsb25nIGludC4uLiAiID4mNjsgfQoraWYgJHthY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQ9eWVzCisgICAgIGlmIHRlc3QgIngke2FjX2N2X3Byb2dfY2NfYzk5LW5vfSIgPSB4bm87IHRoZW4KKyAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgLyogRm9yIG5vdywgZG8gbm90IHRlc3QgdGhlIHByZXByb2Nlc3NvcjsgYXMgb2YgMjAwNyB0aGVyZSBhcmUgdG9vIG1hbnkKKyAgICAgICAgIGltcGxlbWVudGF0aW9ucyB3aXRoIGJyb2tlbiBwcmVwcm9jZXNzb3JzLiAgUGVyaGFwcyB0aGlzIGNhbgorICAgICAgICAgYmUgcmV2aXNpdGVkIGluIDIwMTIuICBJbiB0aGUgbWVhbnRpbWUsIGNvZGUgc2hvdWxkIG5vdCBleHBlY3QKKyAgICAgICAgICNpZiB0byB3b3JrIHdpdGggbGl0ZXJhbHMgd2lkZXIgdGhhbiAzMiBiaXRzLiAgKi8KKyAgICAgIC8qIFRlc3QgbGl0ZXJhbHMuICAqLworICAgICAgbG9uZyBsb25nIGludCBsbCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbDsKKyAgICAgIGxvbmcgbG9uZyBpbnQgbmxsID0gLTkyMjMzNzIwMzY4NTQ3NzU4MDdMTDsKKyAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsID0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEw7CisgICAgICAvKiBUZXN0IGNvbnN0YW50IGV4cHJlc3Npb25zLiAgICovCisgICAgICB0eXBlZGVmIGludCBhWygoLTkyMjMzNzIwMzY4NTQ3NzU4MDdMTCA8IDAgJiYgMCA8IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbCkKKyAgICAgICAgICAgICAgICAgICAgID8gMSA6IC0xKV07CisgICAgICB0eXBlZGVmIGludCBiWygxODQ0Njc0NDA3MzcwOTU1MTYxNVVMTCA8PSAodW5zaWduZWQgbG9uZyBsb25nIGludCkgLTEKKyAgICAgICAgICAgICAgICAgICAgID8gMSA6IC0xKV07CisgICAgICBpbnQgaSA9IDYzOworaW50CittYWluICgpCit7CisvKiBUZXN0IGF2YWlsYWJpbGl0eSBvZiBydW50aW1lIHJvdXRpbmVzIGZvciBzaGlmdCBhbmQgZGl2aXNpb24uICAqLworICAgICAgbG9uZyBsb25nIGludCBsbG1heCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDdsbDsKKyAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgdWxsbWF4ID0gMTg0NDY3NDQwNzM3MDk1NTE2MTV1bGw7CisgICAgICByZXR1cm4gKChsbCA8PCA2MykgfCAobGwgPj4gNjMpIHwgKGxsIDwgaSkgfCAobGwgPiBpKQorICAgICAgICAgICAgICB8IChsbG1heCAvIGxsKSB8IChsbG1heCAlIGxsKQorICAgICAgICAgICAgICB8ICh1bGwgPDwgNjMpIHwgKHVsbCA+PiA2MykgfCAodWxsIDw8IGkpIHwgKHVsbCA+PiBpKQorICAgICAgICAgICAgICB8ICh1bGxtYXggLyB1bGwpIHwgKHVsbG1heCAlIHVsbCkpOworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZ19pbnQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICBmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50IiA+JjY7IH0KKyAgaWYgdGVzdCAkYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmdfaW50ID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVCAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorCisKKworCisgIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9pbnR0eXBlc19oID0gbm8gJiYgdGVzdCAkZ2xfY3ZfaGVhZGVyX3N0ZGludF9oID0gbm87IHRoZW4KKworICAgIHRlc3QgJGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nX2ludCA9IHllcyBcCisgICAgICAmJiBhY190eXBlPSd1bnNpZ25lZCBsb25nIGxvbmcnIFwKKyAgICAgIHx8IGFjX3R5cGU9J3Vuc2lnbmVkIGxvbmcnCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgdWludG1heF90ICRhY190eXBlCitfQUNFT0YKKworICBlbHNlCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfVUlOVE1BWF9UIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisKKworICBmb3IgYWNfaGVhZGVyIGluIGludHR5cGVzLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImludHR5cGVzLmgiICJhY19jdl9oZWFkZXJfaW50dHlwZXNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfaW50dHlwZXNfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgaW50dHlwZXMuaCBQUkl4Tk4gbWFjcm9zIGFyZSBicm9rZW4iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgaW50dHlwZXMuaCBQUkl4Tk4gbWFjcm9zIGFyZSBicm9rZW4uLi4gIiA+JjY7IH0KK2lmICR7Z3RfY3ZfaW50dHlwZXNfcHJpX2Jyb2tlbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNpZmRlZiBQUklkMzIKK2NoYXIgKnAgPSBQUklkMzI7CisjZW5kaWYKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuPW5vCitlbHNlCisgIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW49eWVzCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW4iID4mNQorJGFzX2VjaG8gIiRndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuIiA+JjY7IH0KKyAgZmkKKyAgaWYgdGVzdCAiJGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW4iID0geWVzOyB0aGVuCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgUFJJX01BQ1JPU19CUk9LRU4gMQorX0FDRU9GCisKKyAgICBQUklfTUFDUk9TX0JST0tFTj0xCisgIGVsc2UKKyAgICBQUklfTUFDUk9TX0JST0tFTj0wCisgIGZpCisKKworCisKKworCisKKyAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRocmVhZHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfdGhyZWFkcytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3RocmVhZHM7IGdsX3VzZV90aHJlYWRzPSRlbmFibGV2YWwKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGdsX3VzZV90aHJlYWRzX2RlZmF1bHQiOyB0aGVuCisgICAgICAgZ2xfdXNlX3RocmVhZHM9IiRnbF91c2VfdGhyZWFkc19kZWZhdWx0IgorICAgICBlbHNlCisgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc2YqKSBnbF91c2VfdGhyZWFkcz1ubyA7OworICAgICAgICAgY3lnd2luKikKKyAgICAgICAgICAgICAgIGNhc2UgYHVuYW1lIC1yYCBpbgorICAgICAgICAgICAgICAgICAxLlswLTVdLiopIGdsX3VzZV90aHJlYWRzPW5vIDs7CisgICAgICAgICAgICAgICAgICopICAgICAgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CisgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICA7OworICAgICAgICAgKikgICAgZ2xfdXNlX3RocmVhZHM9eWVzIDs7CisgICAgICAgZXNhYworICAgICBmaQorCitmaQorCisgIGlmIHRlc3QgIiRnbF91c2VfdGhyZWFkcyIgPSB5ZXMgfHwgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHBvc2l4OyB0aGVuCisgICAgIyBGb3IgdXNpbmcgPHB0aHJlYWQuaD46CisgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICBvc2YqKQorICAgICAgICAjIE9uIE9TRi8xLCB0aGUgY29tcGlsZXIgbmVlZHMgdGhlIGZsYWcgLURfUkVFTlRSQU5UIHNvIHRoYXQgaXQKKyAgICAgICAgIyBncm9rcyA8cHRocmVhZC5oPi4gY2MgYWxzbyB1bmRlcnN0YW5kcyB0aGUgZmxhZyAtcHRocmVhZCwgYnV0CisgICAgICAgICMgd2UgZG9uJ3QgdXNlIGl0IGJlY2F1c2UgMS4gZ2NjLTIuOTUgZG9lc24ndCB1bmRlcnN0YW5kIC1wdGhyZWFkLAorICAgICAgICAjIDIuIHB1dHRpbmcgYSBmbGFnIGludG8gQ1BQRkxBR1MgdGhhdCBoYXMgYW4gZWZmZWN0IG9uIHRoZSBsaW5rZXIKKyAgICAgICAgIyBjYXVzZXMgdGhlIEFDX0xJTktfSUZFTFNFIHRlc3QgYmVsb3cgdG8gc3VjY2VlZCB1bmV4cGVjdGVkbHksCisgICAgICAgICMgbGVhZGluZyB0byB3cm9uZyB2YWx1ZXMgb2YgTElCVEhSRUFEIGFuZCBMVExJQlRIUkVBRC4KKyAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtRF9SRUVOVFJBTlQiCisgICAgICAgIDs7CisgICAgZXNhYworICAgICMgU29tZSBzeXN0ZW1zIG9wdGltaXplIGZvciBzaW5nbGUtdGhyZWFkZWQgcHJvZ3JhbXMgYnkgZGVmYXVsdCwgYW5kCisgICAgIyBuZWVkIHNwZWNpYWwgZmxhZ3MgdG8gZGlzYWJsZSB0aGVzZSBvcHRpbWl6YXRpb25zLiBGb3IgZXhhbXBsZSwgdGhlCisgICAgIyBkZWZpbml0aW9uIG9mICdlcnJubycgaW4gPGVycm5vLmg+LgorICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgICAgYWl4KiB8IGZyZWVic2QqKSBDUFBGTEFHUz0iJENQUEZMQUdTIC1EX1RIUkVBRF9TQUZFIiA7OworICAgICAgc29sYXJpcyopIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURfUkVFTlRSQU5UIiA7OworICAgIGVzYWMKKyAgZmkKKworCisKKworCisgICAgICBpZiB0ZXN0ICJYJHByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCisgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorICBlbHNlCisgICAgYWNsX2ZpbmFsX3ByZWZpeD0iJHByZWZpeCIKKyAgZmkKKyAgaWYgdGVzdCAiWCRleGVjX3ByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCisgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PScke3ByZWZpeH0nCisgIGVsc2UKKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZmkKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBldmFsIGFjbF9maW5hbF9leGVjX3ByZWZpeD1cIiRhY2xfZmluYWxfZXhlY19wcmVmaXhcIgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCisKKworCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWdudS1sZCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZ251X2xkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllcworZWxzZQorICB3aXRoX2dudV9sZD1ubworZmkKKworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworYWNfcHJvZz1sZAoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgIyBDaGVjayBpZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxkIHVzZWQgYnkgJENDIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQy4uLiAiID4mNjsgfQorICBjYXNlICRob3N0IGluCisgICotKi1taW5ndyopCisgICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndworICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKKyAgKikKKyAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CisgIGVzYWMKKyAgY2FzZSAkYWNfcHJvZyBpbgorICAgICMgQWNjZXB0IGFic29sdXRlIHBhdGhzLgorICAgIFtcXC9dKiB8ID86W1xcL10qKQorICAgICAgcmVfZGlyZWx0PScvW14vXVteL10qL1wuXC4vJworICAgICAgIyBDYW5vbmljYWxpemUgdGhlIHBhdGhuYW1lIG9mIGxkCisgICAgICBhY19wcm9nPWBlY2hvICIkYWNfcHJvZyJ8IHNlZCAncyVcXFxcJS8lZydgCisgICAgICB3aGlsZSBlY2hvICIkYWNfcHJvZyIgfCBncmVwICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbworICAgICAgICBhY19wcm9nPWBlY2hvICRhY19wcm9nfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJgCisgICAgICBkb25lCisgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIDs7CisgICIiKQorICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgorICAgIGFjX3Byb2c9bGQKKyAgICA7OworICAqKQorICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KKyAgICB3aXRoX2dudV9sZD11bmtub3duCisgICAgOzsKKyAgZXNhYworZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxkLi4uICIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG5vbi1HTlUgbGQuLi4gIiA+JjY7IH0KK2ZpCitpZiAke2FjbF9jdl9wYXRoX0xEKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAteiAiJExEIjsgdGhlbgorICBhY2xfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgSUZTPSIkYWNsX3NhdmVfaWZzIgorICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCisgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKKyAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKKyAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCisgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KKyAgICAgIGNhc2UgYCIkYWNsX2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworICAgICAgICA7OworICAgICAgZXNhYworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkYWNsX3NhdmVfaWZzIgorZWxzZQorICBhY2xfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KK2ZpCitmaQorCitMRD0iJGFjbF9jdl9wYXRoX0xEIgoraWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExEIiA+JjUKKyRhc19lY2hvICIkTEQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCit0ZXN0IC16ICIkTEQiICYmIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQuLi4gIiA+JjY7IH0KK2lmICR7YWNsX2N2X3Byb2dfZ251X2xkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgorY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKypHTlUqIHwgKid3aXRoIEJGRCcqKQorICBhY2xfY3ZfcHJvZ19nbnVfbGQ9eWVzCisgIDs7CisqKQorICBhY2xfY3ZfcHJvZ19nbnVfbGQ9bm8KKyAgOzsKK2VzYWMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjbF9jdl9wcm9nX2dudV9sZCIgPiY1CiskYXNfZWNobyAiJGFjbF9jdl9wcm9nX2dudV9sZCIgPiY2OyB9Cit3aXRoX2dudV9sZD0kYWNsX2N2X3Byb2dfZ251X2xkCisKKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luLi4uICIgPiY2OyB9CitpZiAke2FjbF9jdl9ycGF0aCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICBDQz0iJENDIiBHQ0M9IiRHQ0MiIExERkxBR1M9IiRMREZMQUdTIiBMRD0iJExEIiB3aXRoX2dudV9sZD0iJHdpdGhfZ251X2xkIiBcCisgICAgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0IiA+IGNvbmZ0ZXN0LnNoCisgICAgLiAuL2NvbmZ0ZXN0LnNoCisgICAgcm0gLWYgLi9jb25mdGVzdC5zaAorICAgIGFjbF9jdl9ycGF0aD1kb25lCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjbF9jdl9ycGF0aCIgPiY1CiskYXNfZWNobyAiJGFjbF9jdl9ycGF0aCIgPiY2OyB9CisgIHdsPSIkYWNsX2N2X3dsIgorICBhY2xfbGliZXh0PSIkYWNsX2N2X2xpYmV4dCIKKyAgYWNsX3NobGliZXh0PSIkYWNsX2N2X3NobGliZXh0IgorICBhY2xfbGlibmFtZV9zcGVjPSIkYWNsX2N2X2xpYm5hbWVfc3BlYyIKKyAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYz0iJGFjbF9jdl9saWJyYXJ5X25hbWVzX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCisgIGFjbF9oYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgorICBhY2xfaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9oYXJkY29kZV9taW51c19MIgorICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ycGF0aCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV9ycGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3JwYXRoOyA6CitlbHNlCisgIGVuYWJsZV9ycGF0aD15ZXMKK2ZpCisKKworCisKKyAgYWNsX2xpYmRpcnN0ZW09bGliCisgIGFjbF9saWJkaXJzdGVtMj0KKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgc29sYXJpcyopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciA2NC1iaXQgaG9zdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgNjQtYml0IGhvc3QuLi4gIiA+JjY7IH0KK2lmICR7Z2xfY3Zfc29sYXJpc182NGJpdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2lmZGVmIF9MUDY0CitzaXh0eWZvdXIgYml0cworI2VuZGlmCisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgInNpeHR5Zm91ciBiaXRzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBnbF9jdl9zb2xhcmlzXzY0Yml0PXllcworZWxzZQorICBnbF9jdl9zb2xhcmlzXzY0Yml0PW5vCitmaQorcm0gLWYgY29uZnRlc3QqCisKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xfY3Zfc29sYXJpc182NGJpdCIgPiY1CiskYXNfZWNobyAiJGdsX2N2X3NvbGFyaXNfNjRiaXQiID4mNjsgfQorICAgICAgaWYgdGVzdCAkZ2xfY3Zfc29sYXJpc182NGJpdCA9IHllczsgdGhlbgorICAgICAgICBhY2xfbGliZGlyc3RlbT1saWIvNjQKKyAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgorICAgICAgICAgIHNwYXJjKikgICAgICAgIGFjbF9saWJkaXJzdGVtMj1saWIvc3BhcmN2OSA7OworICAgICAgICAgIGkqODYgfCB4ODZfNjQpIGFjbF9saWJkaXJzdGVtMj1saWIvYW1kNjQgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNlYXJjaHBhdGg9YChMQ19BTEw9QyAkQ0MgLXByaW50LXNlYXJjaC1kaXJzKSAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAncyxebGlicmFyaWVzOiAsLHAnIHwgc2VkIC1lICdzLF49LCwnYAorICAgICAgaWYgdGVzdCAtbiAiJHNlYXJjaHBhdGgiOyB0aGVuCisgICAgICAgIGFjbF9zYXZlX0lGUz0iJHtJRlM9IAl9IjsgSUZTPSI6IgorICAgICAgICBmb3Igc2VhcmNoZGlyIGluICRzZWFyY2hwYXRoOyBkbworICAgICAgICAgIGlmIHRlc3QgLWQgIiRzZWFyY2hkaXIiOyB0aGVuCisgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAqL2xpYjY0LyB8ICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAqLy4uLyB8ICovLi4gKQorICAgICAgICAgICAgICAgICMgQmV0dGVyIGlnbm9yZSBkaXJlY3RvcmllcyBvZiB0aGlzIGZvcm0uIFRoZXkgYXJlIG1pc2xlYWRpbmcuCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKikgc2VhcmNoZGlyPWBjZCAiJHNlYXJjaGRpciIgJiYgcHdkYAorICAgICAgICAgICAgICAgICBjYXNlICIkc2VhcmNoZGlyIiBpbgorICAgICAgICAgICAgICAgICAgICovbGliNjQgKSBhY2xfbGliZGlyc3RlbT1saWI2NCA7OworICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgICAgICBJRlM9IiRhY2xfc2F2ZV9JRlMiCisgICAgICBmaQorICAgICAgOzsKKyAgZXNhYworICB0ZXN0IC1uICIkYWNsX2xpYmRpcnN0ZW0yIiB8fCBhY2xfbGliZGlyc3RlbTI9IiRhY2xfbGliZGlyc3RlbSIKKworCisKKyAgZ2xfdGhyZWFkc19hcGk9bm9uZQorICBMSUJUSFJFQUQ9CisgIExUTElCVEhSRUFEPQorICBMSUJNVUxUSVRIUkVBRD0KKyAgTFRMSUJNVUxUSVRIUkVBRD0KKyAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiAhPSBubzsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgaW1wb3J0ZWQgc3ltYm9scyBjYW4gYmUgZGVjbGFyZWQgd2VhayIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGltcG9ydGVkIHN5bWJvbHMgY2FuIGJlIGRlY2xhcmVkIHdlYWsuLi4gIiA+JjY7IH0KK2lmICR7Z2xfY3ZfaGF2ZV93ZWFrKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgZ2xfY3ZfaGF2ZV93ZWFrPW5vCisgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KK2V4dGVybiB2b2lkIHh5enp5ICgpOworI3ByYWdtYSB3ZWFrIHh5enp5CitpbnQKK21haW4gKCkKK3sKK3h5enp5KCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ2xfY3ZfaGF2ZV93ZWFrPW1heWJlCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX3dlYWsgPSBtYXliZTsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICAgICAgICAgICAgICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaWZkZWYgX19FTEZfXworICAgICAgICAgICAgICAgRXh0ZW5zaWJsZSBMaW5raW5nIEZvcm1hdAorICAgICAgICAgICAgICAgI2VuZGlmCisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgIkV4dGVuc2libGUgTGlua2luZyBGb3JtYXQiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgIGdsX2N2X2hhdmVfd2Vhaz0iZ3Vlc3NpbmcgeWVzIgorZWxzZQorICBnbF9jdl9oYXZlX3dlYWs9Imd1ZXNzaW5nIG5vIgorZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCisKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNwcmFnbWEgd2VhayBmcHV0cworaW50IG1haW4gKCkKK3sKKyAgcmV0dXJuIChmcHV0cyA9PSBOVUxMKTsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGdsX2N2X2hhdmVfd2Vhaz15ZXMKK2Vsc2UKKyAgZ2xfY3ZfaGF2ZV93ZWFrPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICAgIGZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hhdmVfd2VhayIgPiY1CiskYXNfZWNobyAiJGdsX2N2X2hhdmVfd2VhayIgPiY2OyB9CisgICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHllcyB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gcG9zaXg7IHRoZW4KKyAgICAgICMgT24gT1NGLzEsIHRoZSBjb21waWxlciBuZWVkcyB0aGUgZmxhZyAtcHRocmVhZCBvciAtRF9SRUVOVFJBTlQgc28gdGhhdAorICAgICAgIyBpdCBncm9rcyA8cHRocmVhZC5oPi4gSXQncyBhZGRlZCBhYm92ZSwgaW4gZ2xfVEhSRUFETElCX0VBUkxZX0JPRFkuCisgICAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAicHRocmVhZC5oIiAiYWNfY3ZfaGVhZGVyX3B0aHJlYWRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfcHRocmVhZF9oIiA9IHh5ZXM7IHRoZW4gOgorICBnbF9oYXZlX3B0aHJlYWRfaD15ZXMKK2Vsc2UKKyAgZ2xfaGF2ZV9wdGhyZWFkX2g9bm8KK2ZpCisKKworICAgICAgaWYgdGVzdCAiJGdsX2hhdmVfcHRocmVhZF9oIiA9IHllczsgdGhlbgorICAgICAgICAjIE90aGVyIHBvc3NpYmxlIHRlc3RzOgorICAgICAgICAjICAgLWxwdGhyZWFkcyAoRlNVIHRocmVhZHMsIFBDdGhyZWFkcykKKyAgICAgICAgIyAgIC1sZ3RocmVhZHMKKyAgICAgICAgZ2xfaGF2ZV9wdGhyZWFkPQorICAgICAgICAjIFRlc3Qgd2hldGhlciBib3RoIHB0aHJlYWRfbXV0ZXhfbG9jayBhbmQgcHRocmVhZF9tdXRleGF0dHJfaW5pdCBleGlzdAorICAgICAgICAjIGluIGxpYmMuIElSSVggNi41IGhhcyB0aGUgZmlyc3Qgb25lIGluIGJvdGggbGliYyBhbmQgbGlicHRocmVhZCwgYnV0CisgICAgICAgICMgdGhlIHNlY29uZCBvbmUgb25seSBpbiBsaWJwdGhyZWFkLCBhbmQgbG9jay5jIG5lZWRzIGl0LgorICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8cHRocmVhZC5oPgoraW50CittYWluICgpCit7CitwdGhyZWFkX211dGV4X2xvY2soKHB0aHJlYWRfbXV0ZXhfdCopMCk7CisgICAgICAgICAgICAgICBwdGhyZWFkX211dGV4YXR0cl9pbml0KChwdGhyZWFkX211dGV4YXR0cl90KikwKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBnbF9oYXZlX3B0aHJlYWQ9eWVzCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICAgIyBUZXN0IGZvciBsaWJwdGhyZWFkIGJ5IGxvb2tpbmcgZm9yIHB0aHJlYWRfa2lsbC4gKE5vdCBwdGhyZWFkX3NlbGYsCisgICAgICAgICMgc2luY2UgaXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIG9uIE9TRi8xLikKKyAgICAgICAgaWYgdGVzdCAtbiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KKyAgICAgICAgICAjIFRoZSBwcm9ncmFtIGxpbmtzIGZpbmUgd2l0aG91dCBsaWJwdGhyZWFkLiBCdXQgaXQgbWF5IGFjdHVhbGx5CisgICAgICAgICAgIyBuZWVkIHRvIGxpbmsgd2l0aCBsaWJwdGhyZWFkIGluIG9yZGVyIHRvIGNyZWF0ZSBtdWx0aXBsZSB0aHJlYWRzLgorICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbHB0aHJlYWQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxwdGhyZWFkICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBwdGhyZWFkX2tpbGwgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBwdGhyZWFkX2tpbGwgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsPXllcworZWxzZQorICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3B0aHJlYWRfcHRocmVhZF9raWxsIiA9IHh5ZXM7IHRoZW4gOgorICBMSUJNVUxUSVRIUkVBRD0tbHB0aHJlYWQgTFRMSUJNVUxUSVRIUkVBRD0tbHB0aHJlYWQKKyAgICAgICAgICAgICAjIE9uIFNvbGFyaXMgYW5kIEhQLVVYLCBtb3N0IHB0aHJlYWQgZnVuY3Rpb25zIGV4aXN0IGFsc28gaW4gbGliYy4KKyAgICAgICAgICAgICAjIFRoZXJlZm9yZSBwdGhyZWFkX2luX3VzZSgpIG5lZWRzIHRvIGFjdHVhbGx5IHRyeSB0byBjcmVhdGUgYQorICAgICAgICAgICAgICMgdGhyZWFkOiBwdGhyZWFkX2NyZWF0ZSBmcm9tIGxpYmMgd2lsbCBmYWlsLCB3aGVyZWFzCisgICAgICAgICAgICAgIyBwdGhyZWFkX2NyZWF0ZSB3aWxsIGFjdHVhbGx5IGNyZWF0ZSBhIHRocmVhZC4KKyAgICAgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgICAgIHNvbGFyaXMqIHwgaHB1eCopCisKKyRhc19lY2hvICIjZGVmaW5lIFBUSFJFQURfSU5fVVNFX0RFVEVDVElPTl9IQVJEIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICAgZXNhYworCitmaQorCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIFNvbWUgbGlicmFyeSBpcyBuZWVkZWQuIFRyeSBsaWJwdGhyZWFkIGFuZCBsaWJjX3IuCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1scHRocmVhZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgcHRocmVhZF9raWxsIGluIC1scHRocmVhZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHB0aHJlYWQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHB0aHJlYWRfa2lsbCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHB0aHJlYWRfa2lsbCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGw9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9wdGhyZWFkX3B0aHJlYWRfa2lsbD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcHRocmVhZF9wdGhyZWFkX2tpbGwiID0geHllczsgdGhlbiA6CisgIGdsX2hhdmVfcHRocmVhZD15ZXMKKyAgICAgICAgICAgICBMSUJUSFJFQUQ9LWxwdGhyZWFkIExUTElCVEhSRUFEPS1scHRocmVhZAorICAgICAgICAgICAgIExJQk1VTFRJVEhSRUFEPS1scHRocmVhZCBMVExJQk1VTFRJVEhSRUFEPS1scHRocmVhZAorZmkKKworICAgICAgICAgIGlmIHRlc3QgLXogIiRnbF9oYXZlX3B0aHJlYWQiOyB0aGVuCisgICAgICAgICAgICAjIEZvciBGcmVlQlNEIDQuCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBwdGhyZWFkX2tpbGwgaW4gLWxjX3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHB0aHJlYWRfa2lsbCBpbiAtbGNfci4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfY19yX3B0aHJlYWRfa2lsbCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sY19yICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBwdGhyZWFkX2tpbGwgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBwdGhyZWFkX2tpbGwgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGw9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9jX3JfcHRocmVhZF9raWxsPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9jX3JfcHRocmVhZF9raWxsIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Nfcl9wdGhyZWFkX2tpbGwiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfY19yX3B0aHJlYWRfa2lsbCIgPSB4eWVzOyB0aGVuIDoKKyAgZ2xfaGF2ZV9wdGhyZWFkPXllcworICAgICAgICAgICAgICAgTElCVEhSRUFEPS1sY19yIExUTElCVEhSRUFEPS1sY19yCisgICAgICAgICAgICAgICBMSUJNVUxUSVRIUkVBRD0tbGNfciBMVExJQk1VTFRJVEhSRUFEPS1sY19yCitmaQorCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAtbiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KKyAgICAgICAgICBnbF90aHJlYWRzX2FwaT1wb3NpeAorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUE9TSVhfVEhSRUFEUyAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJNVUxUSVRIUkVBRCIgfHwgdGVzdCAtbiAiJExUTElCTVVMVElUSFJFQUQiOyB0aGVuCisgICAgICAgICAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9QT1NJWF9USFJFQURTX1dFQUsgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAgICAgTElCVEhSRUFEPQorICAgICAgICAgICAgICBMVExJQlRIUkVBRD0KKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0IC16ICIkZ2xfaGF2ZV9wdGhyZWFkIjsgdGhlbgorICAgICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHllcyB8fCB0ZXN0ICIkZ2xfdXNlX3RocmVhZHMiID0gc29sYXJpczsgdGhlbgorICAgICAgICBnbF9oYXZlX3NvbGFyaXN0aHJlYWQ9CisgICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCisgICAgICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkIgorICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDx0aHJlYWQuaD4KKyNpbmNsdWRlIDxzeW5jaC5oPgorCitpbnQKK21haW4gKCkKK3sKK3Rocl9zZWxmKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ2xfaGF2ZV9zb2xhcmlzdGhyZWFkPXllcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCisgICAgICAgIGlmIHRlc3QgLW4gIiRnbF9oYXZlX3NvbGFyaXN0aHJlYWQiOyB0aGVuCisgICAgICAgICAgZ2xfdGhyZWFkc19hcGk9c29sYXJpcworICAgICAgICAgIExJQlRIUkVBRD0tbHRocmVhZAorICAgICAgICAgIExUTElCVEhSRUFEPS1sdGhyZWFkCisgICAgICAgICAgTElCTVVMVElUSFJFQUQ9IiRMSUJUSFJFQUQiCisgICAgICAgICAgTFRMSUJNVUxUSVRIUkVBRD0iJExUTElCVEhSRUFEIgorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfU09MQVJJU19USFJFQURTIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgaWYgY2FzZSAiJGdsX2N2X2hhdmVfd2VhayIgaW4gKnllcykgdHJ1ZTs7ICopIGZhbHNlOzsgZXNhYzsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfU09MQVJJU19USFJFQURTX1dFQUsgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAgIExJQlRIUkVBRD0KKyAgICAgICAgICAgIExUTElCVEhSRUFEPQorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAiJGdsX3VzZV90aHJlYWRzIiA9IHB0aDsgdGhlbgorICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorCisKKworCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gbGluayB3aXRoIGxpYnB0aCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gbGluayB3aXRoIGxpYnB0aC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJwdGhfbGlicys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKworCisKKworCisKKworICAgIHVzZV9hZGRpdGlvbmFsPXllcworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisKKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlicHRoLXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbGlicHRoX3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGlicHRoX3ByZWZpeDsKKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCisgICAgZWxzZQorICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgorCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICBlbHNlCisgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKyAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJkaXJzdGVtMiIgIT0gIiRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAmJiAhIHRlc3QgLWQgIiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtMiIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZmkKKworZmkKKworICAgICAgTElCUFRIPQorICBMVExJQlBUSD0KKyAgSU5DUFRIPQorICBMSUJQVEhfUFJFRklYPQorICAgICAgSEFWRV9MSUJQVEg9CisgIHJwYXRoZGlycz0KKyAgbHRycGF0aGRpcnM9CisgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KKyAgbmFtZXNfbmV4dF9yb3VuZD0ncHRoICcKKyAgd2hpbGUgdGVzdCAtbiAiJG5hbWVzX25leHRfcm91bmQiOyBkbworICAgIG5hbWVzX3RoaXNfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kIgorICAgIG5hbWVzX25leHRfcm91bmQ9CisgICAgZm9yIG5hbWUgaW4gJG5hbWVzX3RoaXNfcm91bmQ7IGRvCisgICAgICBhbHJlYWR5X2hhbmRsZWQ9CisgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbworICAgICAgICBpZiB0ZXN0ICIkbiIgPSAiJG5hbWUiOyB0aGVuCisgICAgICAgICAgYWxyZWFkeV9oYW5kbGVkPXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgorICAgICAgICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9IiRuYW1lc19hbHJlYWR5X2hhbmRsZWQgJG5hbWUiCisgICAgICAgICAgICAgICAgICAgICAgICB1cHBlcm5hbWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19ffCdgCisgICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCisgICAgICAgIGlmIHRlc3QgLW4gIiR2YWx1ZSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kdmFsdWUiCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgorICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMVExJQlBUSD0iJHtMVExJQlBUSH0ke0xUTElCUFRIOisgfSR2YWx1ZSIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CisgICAgICAgICAgZmkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPQorICAgICAgICAgIGZvdW5kX2xhPQorICAgICAgICAgIGZvdW5kX3NvPQorICAgICAgICAgIGZvdW5kX2E9CisgICAgICAgICAgZXZhbCBsaWJuYW1lPVwiJGFjbF9saWJuYW1lX3NwZWNcIiAgICAjIHR5cGljYWxseTogbGlibmFtZT1saWIkbmFtZQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICBzaHJleHQ9Ii4kYWNsX3NobGliZXh0IiAgICAgICAgICAgICAjIHR5cGljYWxseTogc2hyZXh0PS5zbworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNocmV4dD0KKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCisgICAgICAgICAgICBkaXI9IiRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfc2hsaWJleHQiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlYyIgPSAnJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIHZlcj1gKGNkICIkZGlyIiAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAiJGxpYm5hbWUkc2hyZXh0Ii4qOyBkbyBlY2hvICIkZiI7IGRvbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLWUgInMsXiRsaWJuYW1lJHNocmV4dFxcXFwuLCwiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc29ydCAtdCAnLicgLW4gLXIgLWsxLDEgLWsyLDIgLWszLDMgLWs0LDQgLWs1LDUgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgMXEgKSAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiR2ZXIiICYmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0LiR2ZXIiCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgIGV2YWwgbGlicmFyeV9uYW1lcz1cIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjXCIKKyAgICAgICAgICAgICAgICAgIGZvciBmIGluICRsaWJyYXJ5X25hbWVzOyBkbworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRmIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kZiIKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLmxhIjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRsaWJuYW1lLmxhIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCUFRIOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgorICAgICAgICAgICAgICAgIC1MKikKKyAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCR4IiB8IHNlZCAtZSAncy9eWC1MLy8nYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUubGEiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIExUTElCUFRIPSIke0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX3NvIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgPSBubyBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCUFRIOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0tTCRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJQVEg9IiR7TElCUFRIfSR7TElCUFRIOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJQVEg9IiR7TElCUFRIfSR7TElCUFRIOisgfS1sJG5hbWUiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9JGZvdW5kX2EiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQorICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2RpciIgaW4KKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCisgICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJzLC8kYWNsX2xpYmRpcnN0ZW0vIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAncHRoJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCUFRIX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0yIHwgKi8kYWNsX2xpYmRpcnN0ZW0yLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbTIvIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAncHRoJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCUFRIX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1MgJElOQ1BUSDsgZG8KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICBldmFsIHg9XCIkeFwiCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNQVEg9IiR7SU5DUFRIfSR7SU5DUFRIOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZm91bmRfbGEiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCisgICAgICAgICAgICAgICAgKi8qIHwgKlxcKikgLiAiJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGxpYmRpcj0iJHNhdmVfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgorICAgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQlBUSDsgZG8KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICBldmFsIHg9XCIkeFwiCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJQVEg7IGRvCisKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgZXZhbCB4PVwiJHhcIgorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUTElCUFRIPSIke0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtUiopCisgICAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLVIvLydgCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgIC1sKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgKi5sYSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAtZSAncyxcLmxhJCwsJ2AKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICBMVExJQlBUSD0iJHtMVExJQlBUSH0ke0xUTElCUFRIOisgfSRkZXAiCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICBmaQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQlBUSD0iJHtMSUJQVEh9JHtMSUJQVEg6KyB9LWwkbmFtZSIKKyAgICAgICAgICAgIExUTElCUFRIPSIke0xUTElCUFRIfSR7TFRMSUJQVEg6KyB9LWwkbmFtZSIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBkb25lCisgIGRvbmUKKyAgaWYgdGVzdCAiWCRycGF0aGRpcnMiICE9ICJYIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbGRpcnM9CisgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZm91bmRfZGlyIgorICAgICAgZG9uZQorICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgbGliZGlyPSIkYWxsZGlycyIKKyAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICBMSUJQVEg9IiR7TElCUFRIfSR7TElCUFRIOisgfSRmbGFnIgorICAgIGVsc2UKKyAgICAgICAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICBsaWJkaXI9IiRmb3VuZF9kaXIiCisgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgTElCUFRIPSIke0xJQlBUSH0ke0xJQlBUSDorIH0kZmxhZyIKKyAgICAgIGRvbmUKKyAgICBmaQorICBmaQorICBpZiB0ZXN0ICJYJGx0cnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGZvciBmb3VuZF9kaXIgaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgTFRMSUJQVEg9IiR7TFRMSUJQVEh9JHtMVExJQlBUSDorIH0tUiRmb3VuZF9kaXIiCisgICAgZG9uZQorICBmaQorCisKKworCisKKworICAgIGFjX2N2X2xpYnB0aF9saWJzPSIkTElCUFRIIgorICAgIGFjX2N2X2xpYnB0aF9sdGxpYnM9IiRMVExJQlBUSCIKKyAgICBhY19jdl9saWJwdGhfY3BwZmxhZ3M9IiRJTkNQVEgiCisgICAgYWNfY3ZfbGlicHRoX3ByZWZpeD0iJExJQlBUSF9QUkVGSVgiCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYnB0aF9saWJzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGlicHRoX2xpYnMiID4mNjsgfQorICBMSUJQVEg9IiRhY19jdl9saWJwdGhfbGlicyIKKyAgTFRMSUJQVEg9IiRhY19jdl9saWJwdGhfbHRsaWJzIgorICBJTkNQVEg9IiRhY19jdl9saWJwdGhfY3BwZmxhZ3MiCisgIExJQlBUSF9QUkVGSVg9IiRhY19jdl9saWJwdGhfcHJlZml4IgorCisgIGZvciBlbGVtZW50IGluICRJTkNQVEg7IGRvCisgICAgaGF2ZWl0PQorICAgIGZvciB4IGluICRDUFBGTEFHUzsgZG8KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICBldmFsIHg9XCIkeFwiCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGVsZW1lbnQiOyB0aGVuCisgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICAgZG9uZQorICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30ke0NQUEZMQUdTOisgfSRlbGVtZW50IgorICAgIGZpCisgIGRvbmUKKworCisKKworICAgICAgSEFWRV9MSUJQVEg9eWVzCisKKworCisgICAgICBnbF9oYXZlX3B0aD0KKyAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBMSUJTPSIkTElCUyAkTElCUFRIIgorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHB0aC5oPgoraW50CittYWluICgpCit7CitwdGhfc2VsZigpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGdsX2hhdmVfcHRoPXllcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorICAgICAgaWYgdGVzdCAtbiAiJGdsX2hhdmVfcHRoIjsgdGhlbgorICAgICAgICBnbF90aHJlYWRzX2FwaT1wdGgKKyAgICAgICAgTElCVEhSRUFEPSIkTElCUFRIIgorICAgICAgICBMVExJQlRIUkVBRD0iJExUTElCUFRIIgorICAgICAgICBMSUJNVUxUSVRIUkVBRD0iJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJNVUxUSVRIUkVBRD0iJExUTElCVEhSRUFEIgorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUFRIX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgaWYgdGVzdCAtbiAiJExJQk1VTFRJVEhSRUFEIiB8fCB0ZXN0IC1uICIkTFRMSUJNVUxUSVRIUkVBRCI7IHRoZW4KKyAgICAgICAgICBpZiBjYXNlICIkZ2xfY3ZfaGF2ZV93ZWFrIiBpbiAqeWVzKSB0cnVlOzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9QVEhfVEhSRUFEU19XRUFLIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBMSUJUSFJFQUQ9CisgICAgICAgICAgICBMVExJQlRIUkVBRD0KKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAteiAiJGdsX2hhdmVfcHRocmVhZCI7IHRoZW4KKyAgICAgIGNhc2UgIiRnbF91c2VfdGhyZWFkcyIgaW4KKyAgICAgICAgeWVzIHwgd2luZG93cyB8IHdpbjMyKSAjIFRoZSAnd2luMzInIGlzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorICAgICAgICAgIGlmIHsgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgICAgIG1pbmd3KikgdHJ1ZTs7CisgICAgICAgICAgICAgICAgICopIGZhbHNlOzsKKyAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICB9OyB0aGVuCisgICAgICAgICAgICBnbF90aHJlYWRzX2FwaT13aW5kb3dzCisKKyRhc19lY2hvICIjZGVmaW5lIFVTRV9XSU5ET1dTX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICBmaQorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZmkKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbXVsdGl0aHJlYWQgQVBJIHRvIHVzZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbXVsdGl0aHJlYWQgQVBJIHRvIHVzZS4uLiAiID4mNjsgfQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX3RocmVhZHNfYXBpIiA+JjUKKyRhc19lY2hvICIkZ2xfdGhyZWFkc19hcGkiID4mNjsgfQorCisKKworCisKKworCisKKworCisKKyAgaWYgdGVzdCAiJGdsX3RocmVhZHNfYXBpIiA9IHBvc2l4OyB0aGVuCisgICAgIyBPU0YvMSA0LjAgYW5kIE1hYyBPUyBYIDEwLjEgbGFjayB0aGUgcHRocmVhZF9yd2xvY2tfdCB0eXBlIGFuZCB0aGUKKyAgICAjIHB0aHJlYWRfcndsb2NrXyogZnVuY3Rpb25zLgorICAgIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInB0aHJlYWRfcndsb2NrX3QiICJhY19jdl90eXBlX3B0aHJlYWRfcndsb2NrX3QiICIjaW5jbHVkZSA8cHRocmVhZC5oPgorIgoraWYgdGVzdCAieCRhY19jdl90eXBlX3B0aHJlYWRfcndsb2NrX3QiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUFRIUkVBRF9SV0xPQ0sgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyAgICAjIGdsaWJjIGRlZmluZXMgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUgYXMgZW51bSwgbm90IGFzIGEgbWFjcm8uCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisgICAgICAjaW5jbHVkZSA8cHRocmVhZC5oPgoraW50CittYWluICgpCit7CisKKyNpZiBfX0ZyZWVCU0RfXyA9PSA0CitlcnJvciAiTm8sIGluIEZyZWVCU0QgNC4wIHJlY3Vyc2l2ZSBtdXRleGVzIGFjdHVhbGx5IGRvbid0IHdvcmsuIgorI2VsaWYgKGRlZmluZWQgX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fIFwKKyAgICAgICAmJiBfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gPCAxMDcwKQorZXJyb3IgIk5vLCBpbiBNYWMgT1MgWCA8IDEwLjcgcmVjdXJzaXZlIG11dGV4ZXMgYWN0dWFsbHkgZG9uJ3Qgd29yay4iCisjZWxzZQoraW50IHggPSAoaW50KVBUSFJFQURfTVVURVhfUkVDVVJTSVZFOworcmV0dXJuICF4OworI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1BUSFJFQURfTVVURVhfUkVDVVJTSVZFIDEiID4+Y29uZmRlZnMuaAorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgIGZpCisgIDoKKworCisKKworCisKKworCisKKworCisKKyAgICB1c2VfYWRkaXRpb25hbD15ZXMKKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorCisgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYmljb252LXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbGliaWNvbnZfcHJlZml4K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9saWJpY29udl9wcmVmaXg7CisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgZWxzZQorICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iCisgICAgICAgIGlmIHRlc3QgIiRhY2xfbGliZGlyc3RlbTIiICE9ICIkYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgJiYgISB0ZXN0IC1kICIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbTIiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisKK2ZpCisKKyAgICAgIExJQklDT05WPQorICBMVExJQklDT05WPQorICBJTkNJQ09OVj0KKyAgTElCSUNPTlZfUFJFRklYPQorICAgICAgSEFWRV9MSUJJQ09OVj0KKyAgcnBhdGhkaXJzPQorICBsdHJwYXRoZGlycz0KKyAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPQorICBuYW1lc19uZXh0X3JvdW5kPSdpY29udiAnCisgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KKyAgICBuYW1lc190aGlzX3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCIKKyAgICBuYW1lc19uZXh0X3JvdW5kPQorICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbworICAgICAgYWxyZWFkeV9oYW5kbGVkPQorICAgICAgZm9yIG4gaW4gJG5hbWVzX2FscmVhZHlfaGFuZGxlZDsgZG8KKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgorICAgICAgICAgIGFscmVhZHlfaGFuZGxlZD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGFscmVhZHlfaGFuZGxlZCI7IHRoZW4KKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgorICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX3wnYAorICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgorICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVybmFtZVwiCisgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JHZhbHVlIgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTFRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJJQ09OVj0iJHtMVExJQklDT05WfSR7TFRMSUJJQ09OVjorIH0kdmFsdWUiCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgorICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0KKyAgICAgICAgICBmb3VuZF9sYT0KKyAgICAgICAgICBmb3VuZF9zbz0KKyAgICAgICAgICBmb3VuZF9hPQorICAgICAgICAgIGV2YWwgbGlibmFtZT1cIiRhY2xfbGlibmFtZV9zcGVjXCIgICAgIyB0eXBpY2FsbHk6IGxpYm5hbWU9bGliJG5hbWUKKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgc2hyZXh0PSIuJGFjbF9zaGxpYmV4dCIgICAgICAgICAgICAgIyB0eXBpY2FsbHk6IHNocmV4dD0uc28KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzaHJleHQ9CisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgICAgICAgICAgZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCisgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxcLiwsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBldmFsIGxpYnJhcnlfbmFtZXM9XCIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlY1wiCisgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCisgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQklDT05WOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgorICAgICAgICAgICAgICAgIC1MKikKKyAgICAgICAgICAgICAgICAgIGRpcj1gZWNobyAiWCR4IiB8IHNlZCAtZSAncy9eWC1MLy8nYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci8kbGlibmFtZS4kYWNsX2xpYmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUubGEiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRkaXIvJGxpYm5hbWUubGEiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIExUTElCSUNPTlY9IiR7TFRMSUJJQ09OVn0ke0xUTElCSUNPTlY6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX3NvIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgPSBubyBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9IiR7TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCSUNPTlY7IGRvCisKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgZXZhbCB4PVwiJHhcIgorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCisKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfS1MJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9taW51c19MIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9LWwkbmFtZSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9hIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9IiR7TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0kZm91bmRfYSIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSUNPTlY9IiR7TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9CisgICAgICAgICAgICBjYXNlICIkZm91bmRfZGlyIiBpbgorICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbSB8ICovJGFjbF9saWJkaXJzdGVtLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbS8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICdpY29udic7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQklDT05WX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0yIHwgKi8kYWNsX2xpYmRpcnN0ZW0yLykKKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgInMsLyRhY2xfbGliZGlyc3RlbTIvIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnaWNvbnYnOyB0aGVuCisgICAgICAgICAgICAgICAgICBMSUJJQ09OVl9QUkVGSVg9IiRiYXNlZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNJQ09OVjsgZG8KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICBldmFsIHg9XCIkeFwiCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNJQ09OVj0iJHtJTkNJQ09OVn0ke0lOQ0lDT05WOisgfS1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZm91bmRfbGEiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBjYXNlICIkZm91bmRfbGEiIGluCisgICAgICAgICAgICAgICAgKi8qIHwgKlxcKikgLiAiJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGxpYmRpcj0iJHNhdmVfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgorICAgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQklDT05WOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQklDT05WOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVExJQklDT05WPSIke0xUTElCSUNPTlZ9JHtMVExJQklDT05WOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgLVIqKQorICAgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1SLy8nYAorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtbCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtbC8vJ2AKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICoubGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGRlcCIKKyAgICAgICAgICAgICAgICAgICAgTFRMSUJJQ09OVj0iJHtMVExJQklDT05WfSR7TFRMSUJJQ09OVjorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJQ09OVj0iJHtMSUJJQ09OVn0ke0xJQklDT05WOisgfS1sJG5hbWUiCisgICAgICAgICAgICBMVExJQklDT05WPSIke0xUTElCSUNPTlZ9JHtMVExJQklDT05WOisgfS1sJG5hbWUiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCisgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxkaXJzPQorICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKKyAgICAgIGRvbmUKKyAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCisgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgTElCSUNPTlY9IiR7TElCSUNPTlZ9JHtMSUJJQ09OVjorIH0kZmxhZyIKKyAgICBlbHNlCisgICAgICAgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgorICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgIExJQklDT05WPSIke0xJQklDT05WfSR7TElCSUNPTlY6KyB9JGZsYWciCisgICAgICBkb25lCisgICAgZmkKKyAgZmkKKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgIExUTElCSUNPTlY9IiR7TFRMSUJJQ09OVn0ke0xUTElCSUNPTlY6KyB9LVIkZm91bmRfZGlyIgorICAgIGRvbmUKKyAgZmkKKworCisKKworCisKKworCisKKworCisKKyAgICAgICAgICBhbV9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisKKyAgZm9yIGVsZW1lbnQgaW4gJElOQ0lDT05WOyBkbworICAgIGhhdmVpdD0KKyAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCisKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgZXZhbCB4PVwiJHhcIgorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCisKKyAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRlbGVtZW50IjsgdGhlbgorICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9JHtDUFBGTEFHUzorIH0kZWxlbWVudCIKKyAgICBmaQorICBkb25lCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpY29udiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaWNvbnYuLi4gIiA+JjY7IH0KK2lmICR7YW1fY3ZfZnVuY19pY29udis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICBhbV9jdl9mdW5jX2ljb252PSJubywgY29uc2lkZXIgaW5zdGFsbGluZyBHTlUgbGliaWNvbnYiCisgICAgYW1fY3ZfbGliX2ljb252PW5vCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aWNvbnYuaD4KKworaW50CittYWluICgpCit7CitpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOworICAgICAgICAgICBpY29udl9jbG9zZShjZCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYW1fY3ZfZnVuY19pY29udj15ZXMKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICAgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiAhPSB5ZXM7IHRoZW4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorCitpbnQKK21haW4gKCkKK3sKK2ljb252X3QgY2QgPSBpY29udl9vcGVuKCIiLCIiKTsKKyAgICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgICBpY29udl9jbG9zZShjZCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYW1fY3ZfbGliX2ljb252PXllcworICAgICAgICBhbV9jdl9mdW5jX2ljb252PXllcworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgorICAgIGZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFtX2N2X2Z1bmNfaWNvbnYiID4mNQorJGFzX2VjaG8gIiRhbV9jdl9mdW5jX2ljb252IiA+JjY7IH0KKyAgaWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyBpY29udiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd29ya2luZyBpY29udi4uLiAiID4mNjsgfQoraWYgJHthbV9jdl9mdW5jX2ljb252X3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgICAgICAgICAgICAgYW1fc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgIGlmIHRlc3QgJGFtX2N2X2xpYl9pY29udiA9IHllczsgdGhlbgorICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICBmaQorICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorCisgICAgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICAgICAgYWl4KiB8IGhwdXgqKSBhbV9jdl9mdW5jX2ljb252X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKyAgICAgICAgICAgKikgICAgICAgICAgICBhbV9jdl9mdW5jX2ljb252X3dvcmtzPSJndWVzc2luZyB5ZXMiIDs7CisgICAgICAgICBlc2FjCisKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8aWNvbnYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KK2ludCBtYWluICgpCit7CisgIGludCByZXN1bHQgPSAwOworICAvKiBUZXN0IGFnYWluc3QgQUlYIDUuMSBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20gc3VjY2Vzc2Z1bAorICAgICByZXR1cm5zLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfdXRmOF90b184ODU5MSA9IGljb252X29wZW4gKCJJU084ODU5LTEiLCAiVVRGLTgiKTsKKyAgICBpZiAoY2RfdXRmOF90b184ODU5MSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBpbnB1dFtdID0gIlwzNDJcMjAyXDI1NCI7IC8qIEVVUk8gU0lHTiAqLworICAgICAgICBjaGFyIGJ1ZlsxMF07CisgICAgICAgIGNvbnN0IGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfdXRmOF90b184ODU5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKikgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICByZXN1bHQgfD0gMTsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkX3V0ZjhfdG9fODg1OTEpOworICAgICAgfQorICB9CisgIC8qIFRlc3QgYWdhaW5zdCBTb2xhcmlzIDEwIGJ1ZzogRmFpbHVyZXMgYXJlIG5vdCBkaXN0aW5ndWlzaGFibGUgZnJvbQorICAgICBzdWNjZXNzZnVsIHJldHVybnMuICAqLworICB7CisgICAgaWNvbnZfdCBjZF9hc2NpaV90b184ODU5MSA9IGljb252X29wZW4gKCJJU084ODU5LTEiLCAiNjQ2Iik7CisgICAgaWYgKGNkX2FzY2lpX3RvXzg4NTkxICE9IChpY29udl90KSgtMSkpCisgICAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGlucHV0W10gPSAiXDI2MyI7CisgICAgICAgIGNoYXIgYnVmWzEwXTsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gc3RybGVuIChpbnB1dCk7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IHNpemVvZiAoYnVmKTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF9hc2NpaV90b184ODU5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKikgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmIChyZXMgPT0gMCkKKyAgICAgICAgICByZXN1bHQgfD0gMjsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkX2FzY2lpX3RvXzg4NTkxKTsKKyAgICAgIH0KKyAgfQorICAvKiBUZXN0IGFnYWluc3QgQUlYIDYuMS4uNy4xIGJ1ZzogQnVmZmVyIG92ZXJydW4uICAqLworICB7CisgICAgaWNvbnZfdCBjZF84ODU5MV90b191dGY4ID0gaWNvbnZfb3BlbiAoIlVURi04IiwgIklTTy04ODU5LTEiKTsKKyAgICBpZiAoY2RfODg1OTFfdG9fdXRmOCAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBpbnB1dFtdID0gIlwzMDQiOworICAgICAgICBzdGF0aWMgY2hhciBidWZbMl0gPSB7IChjaGFyKTB4REUsIChjaGFyKTB4QUQgfTsKKyAgICAgICAgY29uc3QgY2hhciAqaW5wdHIgPSBpbnB1dDsKKyAgICAgICAgc2l6ZV90IGluYnl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gMTsKKyAgICAgICAgc2l6ZV90IHJlcyA9IGljb252IChjZF84ODU5MV90b191dGY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICoqKSAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKHJlcyAhPSAoc2l6ZV90KSgtMSkgfHwgb3V0cHRyIC0gYnVmID4gMSB8fCBidWZbMV0gIT0gKGNoYXIpMHhBRCkKKyAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkXzg4NTkxX3RvX3V0ZjgpOworICAgICAgfQorICB9CisjaWYgMCAvKiBUaGlzIGJ1ZyBjb3VsZCBiZSB3b3JrZWQgYXJvdW5kIGJ5IHRoZSBjYWxsZXIuICAqLworICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBQb3NpdGl2ZSByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiAwLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfODg1OTFfdG9fdXRmOCA9IGljb252X29wZW4gKCJ1dGY4IiwgImlzbzg4NTkxIik7CisgICAgaWYgKGNkXzg4NTkxX3RvX3V0ZjggIT0gKGljb252X3QpKC0xKSkKKyAgICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaW5wdXRbXSA9ICJcMzA0cmdlciBtaXQgYlwzNjZzZW4gQlwzNzRiY2hlbiBvaG5lIEF1Z2VubWFcMzM3IjsKKyAgICAgICAgY2hhciBidWZbNTBdOworICAgICAgICBjb25zdCBjaGFyICppbnB0ciA9IGlucHV0OworICAgICAgICBzaXplX3QgaW5ieXRlc2xlZnQgPSBzdHJsZW4gKGlucHV0KTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gc2l6ZW9mIChidWYpOworICAgICAgICBzaXplX3QgcmVzID0gaWNvbnYgKGNkXzg4NTkxX3RvX3V0ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKiopICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAoKGludClyZXMgPiAwKQorICAgICAgICAgIHJlc3VsdCB8PSA4OworICAgICAgICBpY29udl9jbG9zZSAoY2RfODg1OTFfdG9fdXRmOCk7CisgICAgICB9CisgIH0KKyNlbmRpZgorICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKKyAgICAgcHJvdmlkZWQuICAqLworICBpZiAoLyogVHJ5IHN0YW5kYXJkaXplZCBuYW1lcy4gICovCisgICAgICBpY29udl9vcGVuICgiVVRGLTgiLCAiRVVDLUpQIikgPT0gKGljb252X3QpKC0xKQorICAgICAgLyogVHJ5IElSSVgsIE9TRi8xIG5hbWVzLiAgKi8KKyAgICAgICYmIGljb252X29wZW4gKCJVVEYtOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkKKyAgICAgIC8qIFRyeSBBSVggbmFtZXMuICAqLworICAgICAgJiYgaWNvbnZfb3BlbiAoIlVURi04IiwgIklCTS1ldWNKUCIpID09IChpY29udl90KSgtMSkKKyAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCisgICAgICAmJiBpY29udl9vcGVuICgidXRmOCIsICJldWNKUCIpID09IChpY29udl90KSgtMSkpCisgICAgcmVzdWx0IHw9IDE2OworICByZXR1cm4gcmVzdWx0OworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz15ZXMKK2Vsc2UKKyAgYW1fY3ZfZnVuY19pY29udl93b3Jrcz1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgIExJQlM9IiRhbV9zYXZlX0xJQlMiCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiID4mNQorJGFzX2VjaG8gIiRhbV9jdl9mdW5jX2ljb252X3dvcmtzIiA+JjY7IH0KKyAgICBjYXNlICIkYW1fY3ZfZnVuY19pY29udl93b3JrcyIgaW4KKyAgICAgICpubykgYW1fZnVuY19pY29udj1ubyBhbV9jdl9saWJfaWNvbnY9bm8gOzsKKyAgICAgICopICAgYW1fZnVuY19pY29udj15ZXMgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBhbV9mdW5jX2ljb252PW5vIGFtX2N2X2xpYl9pY29udj1ubworICBmaQorICBpZiB0ZXN0ICIkYW1fZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JQ09OViAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGxpbmsgd2l0aCBsaWJpY29udiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gbGluayB3aXRoIGxpYmljb252Li4uICIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJJQ09OViIgPiY1CiskYXNfZWNobyAiJExJQklDT05WIiA+JjY7IH0KKyAgZWxzZQorICAgICAgICAgICAgQ1BQRkxBR1M9IiRhbV9zYXZlX0NQUEZMQUdTIgorICAgIExJQklDT05WPQorICAgIExUTElCSUNPTlY9CisgIGZpCisKKworCisgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGljb252IGRlY2xhcmF0aW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpY29udiBkZWNsYXJhdGlvbi4uLiAiID4mNjsgfQorICAgIGlmICR7YW1fY3ZfcHJvdG9faWNvbnYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorZXh0ZXJuCisjaWZkZWYgX19jcGx1c3BsdXMKKyJDIgorI2VuZGlmCisjaWYgZGVmaW5lZChfX1NURENfXykgfHwgZGVmaW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX2NwbHVzcGx1cykKK3NpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKKyNlbHNlCitzaXplX3QgaWNvbnYoKTsKKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFtX2N2X3Byb3RvX2ljb252X2FyZzE9IiIKK2Vsc2UKKyAgYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iY29uc3QiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICBhbV9jdl9wcm90b19pY29udj0iZXh0ZXJuIHNpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsiCitmaQorCisgICAgYW1fY3ZfcHJvdG9faWNvbnY9YGVjaG8gIiRhbV9jdl9wcm90b19pY29udiIgfCB0ciAtcyAnICcgfCBzZWQgLWUgJ3MvKCAvKC8nYAorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OgorICAgICAgICAgJGFtX2N2X3Byb3RvX2ljb252IiA+JjUKKyRhc19lY2hvICIKKyAgICAgICAgICRhbV9jdl9wcm90b19pY29udiIgPiY2OyB9CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSUNPTlZfQ09OU1QgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEKK19BQ0VPRgorCisKKyAgZmkKKworCisKKworICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCitpbnQgZm9vIChpbnQgYSkgeyBhID0gX19idWlsdGluX2V4cGVjdCAoYSwgMTApOyByZXR1cm4gYSA9PSAxMCA/IDAgOiAxOyB9CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQlVJTFRJTl9FWFBFQ1QgMSIgPj5jb25mZGVmcy5oCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCisgIGZvciBhY19oZWFkZXIgaW4gYXJnei5oIGludHR5cGVzLmggbGltaXRzLmggdW5pc3RkLmggc3lzL3BhcmFtLmgKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworICBmb3IgYWNfZnVuYyBpbiBnZXRjd2QgZ2V0ZWdpZCBnZXRldWlkIGdldGdpZCBnZXR1aWQgbWVtcGNweSBtdW5tYXAgXAorICAgIHN0cGNweSBzdHJjYXNlY21wIHN0cmR1cCBzdHJ0b3VsIHRzZWFyY2ggdXNlbG9jYWxlIGFyZ3pfY291bnQgXAorICAgIGFyZ3pfc3RyaW5naWZ5IGFyZ3pfbmV4dCBfX2ZzZXRsb2NraW5nCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworCisgICAgICAgICAgYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiZmVvZl91bmxvY2tlZCIgImFjX2N2X2hhdmVfZGVjbF9mZW9mX3VubG9ja2VkIiAiI2luY2x1ZGUgPHN0ZGlvLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9mZW9mX3VubG9ja2VkIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfRkVPRl9VTkxPQ0tFRCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgImZnZXRzX3VubG9ja2VkIiAiYWNfY3ZfaGF2ZV9kZWNsX2ZnZXRzX3VubG9ja2VkIiAiI2luY2x1ZGUgPHN0ZGlvLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9mZ2V0c191bmxvY2tlZCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX0ZHRVRTX1VOTE9DS0VEICRhY19oYXZlX2RlY2wKK19BQ0VPRgorCisKKworCisgICAgICAgICAgICAgICAgICAgICAgZm9yIGFjX3Byb2cgaW4gYmlzb24KK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19JTlRMQklTT04rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkSU5UTEJJU09OIjsgdGhlbgorICBhY19jdl9wcm9nX0lOVExCSVNPTj0iJElOVExCSVNPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX0lOVExCSVNPTj0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorSU5UTEJJU09OPSRhY19jdl9wcm9nX0lOVExCSVNPTgoraWYgdGVzdCAtbiAiJElOVExCSVNPTiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRJTlRMQklTT04iID4mNQorJGFzX2VjaG8gIiRJTlRMQklTT04iID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkSU5UTEJJU09OIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgLXogIiRJTlRMQklTT04iOyB0aGVuCisgICAgYWNfdmVyY19mYWlsPXllcworICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdmVyc2lvbiBvZiBiaXNvbiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB2ZXJzaW9uIG9mIGJpc29uLi4uICIgPiY2OyB9CisgICAgYWNfcHJvZ192ZXJzaW9uPWAkSU5UTEJJU09OIC0tdmVyc2lvbiAyPiYxIHwgc2VkIC1uICdzL14uKkdOVSBCaXNvbi4qIFwoWzAtOV0qXC5bMC05Ll0qXCkuKiQvXDEvcCdgCisgICAgY2FzZSAkYWNfcHJvZ192ZXJzaW9uIGluCisgICAgICAnJykgYWNfcHJvZ192ZXJzaW9uPSJ2LiA/Lj8/LCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKKyAgICAgIDEuMls2LTldKiB8IDEuWzMtOV1bMC05XSogfCBbMi05XS4qKQorICAgICAgICAgYWNfcHJvZ192ZXJzaW9uPSIkYWNfcHJvZ192ZXJzaW9uLCBvayI7IGFjX3ZlcmNfZmFpbD1ubzs7CisgICAgICAqKSBhY19wcm9nX3ZlcnNpb249IiRhY19wcm9nX3ZlcnNpb24sIGJhZCI7IGFjX3ZlcmNfZmFpbD15ZXM7OworICAgIGVzYWMKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3Byb2dfdmVyc2lvbiIgPiY1CiskYXNfZWNobyAiJGFjX3Byb2dfdmVyc2lvbiIgPiY2OyB9CisgIGZpCisgIGlmIHRlc3QgJGFjX3ZlcmNfZmFpbCA9IHllczsgdGhlbgorICAgIElOVExCSVNPTj06CisgIGZpCisKKworCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBpbnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGxvbmcgbG9uZyBpbnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfdHlwZV9sb25nX2xvbmdfaW50PXllcworICAgICAgaWYgdGVzdCAieCR7YWNfY3ZfcHJvZ19jY19jOTktbm99IiA9IHhubzsgdGhlbgorICAgICAgICBhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQ9JGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nX2ludAorICAgICAgICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIDoKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGxpbWl0cy5oPgorICAgICAgICAgICAgICAgICAjaWZuZGVmIExMT05HX01BWAorICAgICAgICAgICAgICAgICAjIGRlZmluZSBIQUxGIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKDFMTCA8PCAoc2l6ZW9mIChsb25nIGxvbmcgaW50KSAqIENIQVJfQklUIC0gMikpCisgICAgICAgICAgICAgICAgICMgZGVmaW5lIExMT05HX01BWCAoSEFMRiAtIDEgKyBIQUxGKQorICAgICAgICAgICAgICAgICAjZW5kaWYKK2ludAorbWFpbiAoKQoreworbG9uZyBsb25nIGludCBuID0gMTsKKyAgICAgICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IDsgaSsrKQorICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBpbnQgbSA9IG4gPDwgaTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChtID4+IGkgIT0gbikKKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICAgICBpZiAoTExPTkdfTUFYIC8gMiA8IG0pCisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorCitlbHNlCisgIGFjX2N2X3R5cGVfbG9uZ19sb25nX2ludD1ubworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgICAgZmkKKyAgICAgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQiID4mNQorJGFzX2VjaG8gIiRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQiID4mNjsgfQorICBpZiB0ZXN0ICRhY19jdl90eXBlX2xvbmdfbG9uZ19pbnQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MT05HX0xPTkdfSU5UIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3Y2hhcl90IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB3Y2hhcl90Li4uICIgPiY2OyB9CitpZiAke2d0X2N2X2Nfd2NoYXJfdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgICAgICAgIHdjaGFyX3QgZm9vID0gKHdjaGFyX3QpJ1wwJzsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ3RfY3ZfY193Y2hhcl90PXllcworZWxzZQorICBndF9jdl9jX3djaGFyX3Q9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2Nfd2NoYXJfdCIgPiY1CiskYXNfZWNobyAiJGd0X2N2X2Nfd2NoYXJfdCIgPiY2OyB9CisgIGlmIHRlc3QgJGd0X2N2X2Nfd2NoYXJfdCA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDSEFSX1QgMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKworCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHdpbnRfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igd2ludF90Li4uICIgPiY2OyB9CitpZiAke2d0X2N2X2Nfd2ludF90Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBUcnU2NCB3aXRoIERlc2t0b3AgVG9vbGtpdCBDIGhhcyBhIGJ1ZzogPHN0ZGlvLmg+IG11c3QgYmUgaW5jbHVkZWQgYmVmb3JlCisgICA8d2NoYXIuaD4uCisgICBCU0QvT1MgNC4wLjEgaGFzIGEgYnVnOiA8c3RkZGVmLmg+LCA8c3RkaW8uaD4gYW5kIDx0aW1lLmg+IG11c3QgYmUgaW5jbHVkZWQKKyAgIGJlZm9yZSA8d2NoYXIuaD4uICAqLworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHdjaGFyLmg+CisgICAgICAgICAgICB3aW50X3QgZm9vID0gKHdjaGFyX3QpJ1wwJzsKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ3RfY3ZfY193aW50X3Q9eWVzCitlbHNlCisgIGd0X2N2X2Nfd2ludF90PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9jX3dpbnRfdCIgPiY1CiskYXNfZWNobyAiJGd0X2N2X2Nfd2ludF90IiA+JjY7IH0KKyAgaWYgdGVzdCAkZ3RfY3ZfY193aW50X3QgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XSU5UX1QgMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKworCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbnRtYXhfdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaW50bWF4X3QuLi4gIiA+JjY7IH0KK2lmICR7Z3RfY3ZfY19pbnRtYXhfdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbmRpZgorCitpbnQKK21haW4gKCkKK3sKK2ludG1heF90IHggPSAtMTsKKyAgICAgICAgICAgIHJldHVybiAheDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl9jX2ludG1heF90PXllcworZWxzZQorICBndF9jdl9jX2ludG1heF90PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9jX2ludG1heF90IiA+JjUKKyRhc19lY2hvICIkZ3RfY3ZfY19pbnRtYXhfdCIgPiY2OyB9CisgIGlmIHRlc3QgJGd0X2N2X2NfaW50bWF4X3QgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlRNQVhfVCAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcHJpbnRmKCkgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgcHJpbnRmKCkgc3VwcG9ydHMgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzLi4uICIgPiY2OyB9CitpZiAke2d0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorCisgICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaWYgZGVmaW5lZCBfX05ldEJTRF9fIHx8IGRlZmluZWQgX19CRU9TX18gfHwgZGVmaW5lZCBfTVNDX1ZFUiB8fCBkZWZpbmVkIF9fTUlOR1czMl9fIHx8IGRlZmluZWQgX19DWUdXSU5fXworICBub3Rwb3NpeAorI2VuZGlmCisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgIm5vdHBvc2l4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD0iZ3Vlc3Npbmcgbm8iCitlbHNlCisgIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PSJndWVzc2luZyB5ZXMiCitmaQorcm0gLWYgY29uZnRlc3QqCisKKworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorLyogVGhlIHN0cmluZyAiJTIkZCAlMSRkIiwgd2l0aCBkb2xsYXIgY2hhcmFjdGVycyBwcm90ZWN0ZWQgZnJvbSB0aGUgc2hlbGwncworICAgZG9sbGFyIGV4cGFuc2lvbiAocG9zc2libHkgYW4gYXV0b2NvbmYgYnVnKS4gICovCitzdGF0aWMgY2hhciBmb3JtYXRbXSA9IHsgJyUnLCAnMicsICckJywgJ2QnLCAnICcsICclJywgJzEnLCAnJCcsICdkJywgJ1wwJyB9Oworc3RhdGljIGNoYXIgYnVmWzEwMF07CitpbnQgbWFpbiAoKQoreworICBzcHJpbnRmIChidWYsIGZvcm1hdCwgMzMsIDU1KTsKKyAgcmV0dXJuIChzdHJjbXAgKGJ1ZiwgIjU1IDMzIikgIT0gMCk7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeD15ZXMKK2Vsc2UKKyAgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9bm8KK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4IiA+JjUKKyRhc19lY2hvICIkZ3RfY3ZfZnVuY19wcmludGZfcG9zaXgiID4mNjsgfQorICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgorICAgICp5ZXMpCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUE9TSVhfUFJJTlRGIDEiID4+Y29uZmRlZnMuaAorCisgICAgICA7OworICBlc2FjCisKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIExpYnJhcnkgPj0gMi4xIG9yIHVDbGliYyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgTGlicmFyeSA+PSAyLjEgb3IgdUNsaWJjLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2dudV9saWJyYXJ5XzJfMSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWZkZWYgX19HTlVfTElCUkFSWV9fCisgI2lmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSkgfHwgKF9fR0xJQkNfXyA+IDIpCisgIEx1Y2t5IEdOVSB1c2VyCisgI2VuZGlmCisjZW5kaWYKKyNpZmRlZiBfX1VDTElCQ19fCisgTHVja3kgdXNlcgorI2VuZGlmCisKK19BQ0VPRgoraWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorICAkRUdSRVAgIkx1Y2t5IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBhY19jdl9nbnVfbGlicmFyeV8yXzE9eWVzCitlbHNlCisgIGFjX2N2X2dudV9saWJyYXJ5XzJfMT1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCisKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZ251X2xpYnJhcnlfMl8xIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZ251X2xpYnJhcnlfMl8xIiA+JjY7IH0KKworICAgIEdMSUJDMjE9IiRhY19jdl9nbnVfbGlicmFyeV8yXzEiCisKKworCisgIGZvciBhY19oZWFkZXIgaW4gc3RkaW50LmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN0ZGludC5oIiAiYWNfY3ZfaGVhZGVyX3N0ZGludF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NURElOVF9IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBTSVpFX01BWCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgU0laRV9NQVguLi4gIiA+JjY7IH0KK2lmICR7Z2xfY3Zfc2l6ZV9tYXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgICAgZ2xfY3Zfc2l6ZV9tYXg9CisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaWYgSEFWRV9TVERJTlRfSAorI2luY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisjaWZkZWYgU0laRV9NQVgKK0ZvdW5kIGl0CisjZW5kaWYKKworX0FDRU9GCitpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisgICRFR1JFUCAiRm91bmQgaXQiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgIGdsX2N2X3NpemVfbWF4PXllcworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCisgICAgaWYgdGVzdCAteiAiJGdsX2N2X3NpemVfbWF4IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgInNpemVvZiAoc2l6ZV90KSAqIENIQVJfQklUIC0gMSIgInNpemVfdF9iaXRzX21pbnVzXzEiICAgICAgICAiI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPiI7IHRoZW4gOgorCitlbHNlCisgIHNpemVfdF9iaXRzX21pbnVzXzE9CitmaQorCisgICAgICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAic2l6ZW9mIChzaXplX3QpIDw9IHNpemVvZiAodW5zaWduZWQgaW50KSIgImZpdHNfaW5fdWludCIgICAgICAgICIjaW5jbHVkZSA8c3RkZGVmLmg+IjsgdGhlbiA6CisKK2Vsc2UKKyAgZml0c19pbl91aW50PQorZmkKKworICAgICAgaWYgdGVzdCAtbiAiJHNpemVfdF9iaXRzX21pbnVzXzEiICYmIHRlc3QgLW4gIiRmaXRzX2luX3VpbnQiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgJGZpdHNfaW5fdWludCA9IDE7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgICAgICAgICAgICAgZXh0ZXJuIHNpemVfdCBmb287CisgICAgICAgICAgICAgICAgIGV4dGVybiB1bnNpZ25lZCBsb25nIGZvbzsKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBmaXRzX2luX3VpbnQ9MAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICRmaXRzX2luX3VpbnQgPSAxOyB0aGVuCisgICAgICAgICAgZ2xfY3Zfc2l6ZV9tYXg9IigoKDFVIDw8ICRzaXplX3RfYml0c19taW51c18xKSAtIDEpICogMiArIDEpIgorICAgICAgICBlbHNlCisgICAgICAgICAgZ2xfY3Zfc2l6ZV9tYXg9IigoKDFVTCA8PCAkc2l6ZV90X2JpdHNfbWludXNfMSkgLSAxKSAqIDIgKyAxKSIKKyAgICAgICAgZmkKKyAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnbF9jdl9zaXplX21heD0nKChzaXplX3QpfihzaXplX3QpMCknCisgICAgICBmaQorICAgIGZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X3NpemVfbWF4IiA+JjUKKyRhc19lY2hvICIkZ2xfY3Zfc2l6ZV9tYXgiID4mNjsgfQorICBpZiB0ZXN0ICIkZ2xfY3Zfc2l6ZV9tYXgiICE9IHllczsgdGhlbgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVfTUFYICRnbF9jdl9zaXplX21heAorX0FDRU9GCisKKyAgZmkKKworCisKKworICBmb3IgYWNfaGVhZGVyIGluIHN0ZGludC5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzdGRpbnQuaCIgImFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3RkaW50X2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisKKworCisKKyAgZm9yIGFjX2Z1bmMgaW4gJGFjX2Z1bmNfbGlzdAorZG8gOgorICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCitkb25lCisKKworCisKKworCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIGZjbnRsLmgiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgZmNudGwuaC4uLiAiID4mNjsgfQoraWYgJHtnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oPWNyb3NzLWNvbXBpbGluZworZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICAgICAgICNpbmNsdWRlIDxzeXMvc3RhdC5oPgorICAgICAgICAgICAjaWYgSEFWRV9VTklTVERfSAorICAgICAgICAgICAjIGluY2x1ZGUgPHVuaXN0ZC5oPgorICAgICAgICAgICAjZWxzZSAvKiBvbiBXaW5kb3dzIHdpdGggTVNWQyAqLworICAgICAgICAgICAjIGluY2x1ZGUgPGlvLmg+CisgICAgICAgICAgICMgaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICMgZGVmaW5lZCBzbGVlcChuKSBfc2xlZXAgKChuKSAqIDEwMDApCisgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAjaW5jbHVkZSA8ZmNudGwuaD4KKyAgICAgICAgICAgI2lmbmRlZiBPX05PQVRJTUUKKyAgICAgICAgICAgICNkZWZpbmUgT19OT0FUSU1FIDAKKyAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICNpZm5kZWYgT19OT0ZPTExPVworICAgICAgICAgICAgI2RlZmluZSBPX05PRk9MTE9XIDAKKyAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgIHN0YXRpYyBpbnQgY29uc3QgY29uc3RhbnRzW10gPQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBPX0NSRUFULCBPX0VYQ0wsIE9fTk9DVFRZLCBPX1RSVU5DLCBPX0FQUEVORCwKKyAgICAgICAgICAgICAgT19OT05CTE9DSywgT19TWU5DLCBPX0FDQ01PREUsIE9fUkRPTkxZLCBPX1JEV1IsIE9fV1JPTkxZCisgICAgICAgICAgICB9OworCitpbnQKK21haW4gKCkKK3sKKworICAgICAgICAgICAgaW50IHJlc3VsdCA9ICFjb25zdGFudHM7CisgICAgICAgICAgICAjaWYgSEFWRV9TWU1MSU5LCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHN0YXRpYyBjaGFyIGNvbnN0IHN5bVtdID0gImNvbmZ0ZXN0LnN5bSI7CisgICAgICAgICAgICAgIGlmIChzeW1saW5rICgiL2Rldi9udWxsIiwgc3ltKSAhPSAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAyOworICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaW50IGZkID0gb3BlbiAoc3ltLCBPX1dST05MWSB8IE9fTk9GT0xMT1cgfCBPX0NSRUFULCAwKTsKKyAgICAgICAgICAgICAgICAgIGlmIChmZCA+PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgY2xvc2UgKGZkKTsKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKHVubGluayAoc3ltKSAhPSAwIHx8IHN5bWxpbmsgKCIuIiwgc3ltKSAhPSAwKQorICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAyOworICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaW50IGZkID0gb3BlbiAoc3ltLCBPX1JET05MWSB8IE9fTk9GT0xMT1cpOworICAgICAgICAgICAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjbG9zZSAoZmQpOworICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB1bmxpbmsgKHN5bSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgc3RhdGljIGNoYXIgY29uc3QgZmlsZVtdID0gImNvbmZkZWZzLmgiOworICAgICAgICAgICAgICBpbnQgZmQgPSBvcGVuIChmaWxlLCBPX1JET05MWSB8IE9fTk9BVElNRSk7CisgICAgICAgICAgICAgIGlmIChmZCA8IDApCisgICAgICAgICAgICAgICAgcmVzdWx0IHw9IDg7CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBzdDA7CisgICAgICAgICAgICAgICAgICBpZiAoZnN0YXQgKGZkLCAmc3QwKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMTY7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICBjaGFyIGM7CisgICAgICAgICAgICAgICAgICAgICAgc2xlZXAgKDEpOworICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkIChmZCwgJmMsIDEpICE9IDEpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gMjQ7CisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2UgKGZkKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSAzMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0IChmaWxlLCAmc3QxKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgfD0gNDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdDAuc3RfYXRpbWUgIT0gc3QxLnN0X2F0aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSA2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD15ZXMKK2Vsc2UKKyAgY2FzZSAkPyBpbiAjKAorICAgICAgICA0KSBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oPSdubyAoYmFkIE9fTk9GT0xMT1cpJzs7ICMoCisgICAgICAgIDY0KSBnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oPSdubyAoYmFkIE9fTk9BVElNRSknOzsgIygKKyAgICAgICAgNjgpIGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2g9J25vIChiYWQgT19OT0FUSU1FLCBPX05PRk9MTE9XKSc7OyAjKAorICAgICAgICAgKikgZ2xfY3ZfaGVhZGVyX3dvcmtpbmdfZmNudGxfaD0nbm8nOzsKKyAgICAgICAgZXNhYworZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2giID4mNQorJGFzX2VjaG8gIiRnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oIiA+JjY7IH0KKworICBjYXNlICRnbF9jdl9oZWFkZXJfd29ya2luZ19mY250bF9oIGluICMoCisgICpPX05PQVRJTUUqIHwgbm8gfCBjcm9zcy1jb21waWxpbmcpIGFjX3ZhbD0wOzsgIygKKyAgKikgYWNfdmFsPTE7OworICBlc2FjCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9XT1JLSU5HX09fTk9BVElNRSAkYWNfdmFsCitfQUNFT0YKKworCisgIGNhc2UgJGdsX2N2X2hlYWRlcl93b3JraW5nX2ZjbnRsX2ggaW4gIygKKyAgKk9fTk9GT0xMT1cqIHwgbm8gfCBjcm9zcy1jb21waWxpbmcpIGFjX3ZhbD0wOzsgIygKKyAgKikgYWNfdmFsPTE7OworICBlc2FjCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9XT1JLSU5HX09fTk9GT0xMT1cgJGFjX3ZhbAorX0FDRU9GCisKKworCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZS4uLiAiID4mNjsgfQoraWYgJHtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlByZWZlcmVuY2VzLmg+CitpbnQKK21haW4gKCkKK3sKK0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoTlVMTCwgTlVMTCkKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9eWVzCitlbHNlCisgIGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUiID4mNQorJGFzX2VjaG8gIiRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUiID4mNjsgfQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DRlBSRUZFUkVOQ0VTQ09QWUFQUFZBTFVFIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ0ZMb2NhbGVDb3B5Q3VycmVudCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ0ZMb2NhbGVDb3B5Q3VycmVudC4uLiAiID4mNjsgfQoraWYgJHtndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oPgoraW50CittYWluICgpCit7CitDRkxvY2FsZUNvcHlDdXJyZW50KCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PXllcworZWxzZQorICBndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50IiA+JjUKKyRhc19lY2hvICIkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50IiA+JjY7IH0KKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ0ZMT0NBTEVDT1BZQ1VSUkVOVCAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorICBJTlRMX01BQ09TWF9MSUJTPQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUgPSB5ZXMgfHwgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzOyB0aGVuCisgICAgSU5UTF9NQUNPU1hfTElCUz0iLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICBmaQorCisKKworCisKKworCisKKworCisgICAgY2FzZSAiJGVuYWJsZV9zaWxlbnRfcnVsZXMiIGluCisgICAgeWVzKSBJTlRMX0RFRkFVTFRfVkVSQk9TSVRZPTA7OworICAgIG5vKSAgSU5UTF9ERUZBVUxUX1ZFUkJPU0lUWT0xOzsKKyAgICAqKSAgIElOVExfREVGQVVMVF9WRVJCT1NJVFk9MTs7CisgIGVzYWMKKworCisgIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInB0cmRpZmZfdCIgImFjX2N2X3R5cGVfcHRyZGlmZl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfcHRyZGlmZl90IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisKKyRhc19lY2hvICIjZGVmaW5lIHB0cmRpZmZfdCBsb25nIiA+PmNvbmZkZWZzLmgKKworCitmaQorCisgIGZvciBhY19oZWFkZXIgaW4gZmVhdHVyZXMuaCBzdGRkZWYuaCBzdGRsaWIuaCBzdHJpbmcuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCisgIGZvciBhY19mdW5jIGluIGFzcHJpbnRmIGZ3cHJpbnRmIG5ld2xvY2FsZSBwdXRlbnYgc2V0ZW52IHNldGxvY2FsZSBcCisgICAgc25wcmludGYgc3RybmxlbiB3Y3NsZW4gd2NzbmxlbiBtYnJ0b3djIHdjcnRvbWIKK2RvIDoKKyAgYXNfYWNfdmFyPWAkYXNfZWNobyAiYWNfY3ZfZnVuY18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIkYWNfZnVuYyIgIiRhc19hY192YXIiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX3ZhciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19mdW5jIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorZG9uZQorCisKKyAgICAgIGFjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIl9zbnByaW50ZiIgImFjX2N2X2hhdmVfZGVjbF9fc25wcmludGYiICIjaW5jbHVkZSA8c3RkaW8uaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX19zbnByaW50ZiIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX19TTlBSSU5URiAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIl9zbndwcmludGYiICJhY19jdl9oYXZlX2RlY2xfX3Nud3ByaW50ZiIgIiNpbmNsdWRlIDxzdGRpby5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfX3Nud3ByaW50ZiIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX19TTldQUklOVEYgJGFjX2hhdmVfZGVjbAorX0FDRU9GCisKKworICAgICAgICAgIGFjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgImdldGNfdW5sb2NrZWQiICJhY19jdl9oYXZlX2RlY2xfZ2V0Y191bmxvY2tlZCIgIiNpbmNsdWRlIDxzdGRpby5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfZ2V0Y191bmxvY2tlZCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX0dFVENfVU5MT0NLRUQgJGFjX2hhdmVfZGVjbAorX0FDRU9GCisKKworICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgorICAgICp5ZXMpIEhBVkVfUE9TSVhfUFJJTlRGPTEgOzsKKyAgICAqKSBIQVZFX1BPU0lYX1BSSU5URj0wIDs7CisgIGVzYWMKKworICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19hc3ByaW50ZiIgPSB5ZXM7IHRoZW4KKyAgICBIQVZFX0FTUFJJTlRGPTEKKyAgZWxzZQorICAgIEhBVkVfQVNQUklOVEY9MAorICBmaQorCisgIGlmIHRlc3QgIiRhY19jdl9mdW5jX3NucHJpbnRmIiA9IHllczsgdGhlbgorICAgIEhBVkVfU05QUklOVEY9MQorICBlbHNlCisgICAgSEFWRV9TTlBSSU5URj0wCisgIGZpCisKKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfbmV3bG9jYWxlIiA9IHllczsgdGhlbgorICAgIEhBVkVfTkVXTE9DQUxFPTEKKyAgZWxzZQorICAgIEhBVkVfTkVXTE9DQUxFPTAKKyAgZmkKKworICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY193cHJpbnRmIiA9IHllczsgdGhlbgorICAgIEhBVkVfV1BSSU5URj0xCisgIGVsc2UKKyAgICBIQVZFX1dQUklOVEY9MAorICBmaQorCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQuLi4gIiA+JjY7IH0KK2lmICR7YW1fY3ZfbGFuZ2luZm9fY29kZXNldCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxsYW5naW5mby5oPgoraW50CittYWluICgpCit7CitjaGFyKiBjcyA9IG5sX2xhbmdpbmZvKENPREVTRVQpOyByZXR1cm4gIWNzOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9eWVzCitlbHNlCisgIGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhbV9jdl9sYW5naW5mb19jb2Rlc2V0IiA+JjUKKyRhc19lY2hvICIkYW1fY3ZfbGFuZ2luZm9fY29kZXNldCIgPiY2OyB9CisgIGlmIHRlc3QgJGFtX2N2X2xhbmdpbmZvX2NvZGVzZXQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MQU5HSU5GT19DT0RFU0VUIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisKKworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBMQ19NRVNTQUdFUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTENfTUVTU0FHRVMuLi4gIiA+JjY7IH0KK2lmICR7Z3RfY3ZfdmFsX0xDX01FU1NBR0VTKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGxvY2FsZS5oPgoraW50CittYWluICgpCit7CityZXR1cm4gTENfTUVTU0FHRVMKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl92YWxfTENfTUVTU0FHRVM9eWVzCitlbHNlCisgIGd0X2N2X3ZhbF9MQ19NRVNTQUdFUz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl92YWxfTENfTUVTU0FHRVMiID4mNQorJGFzX2VjaG8gIiRndF9jdl92YWxfTENfTUVTU0FHRVMiID4mNjsgfQorICBpZiB0ZXN0ICRndF9jdl92YWxfTENfTUVTU0FHRVMgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MQ19NRVNTQUdFUyAxIiA+PmNvbmZkZWZzLmgKKworICBmaQorCisKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiopIGlzX3dvZTMyZGxsPXllcyA7OworICAgICAgKikgaXNfd29lMzJkbGw9bm8gOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBpc193b2UzMmRsbD1ubworICBmaQorICBXT0UzMkRMTD0kaXNfd29lMzJkbGwKKworCisgICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBtaW5ndyogfCBjeWd3aW4qKSBpc193b2UzMj15ZXMgOzsKKyAgICAqKSBpc193b2UzMj1ubyA7OworICBlc2FjCisgIFdPRTMyPSRpc193b2UzMgorCisgIGlmIHRlc3QgJFdPRTMyID0geWVzOyB0aGVuCisgICAgICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXdpbmRyZXMiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9d2luZHJlczsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfV0lORFJFUys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRXSU5EUkVTIjsgdGhlbgorICBhY19jdl9wcm9nX1dJTkRSRVM9IiRXSU5EUkVTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfV0lORFJFUz0iJHthY190b29sX3ByZWZpeH13aW5kcmVzIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK1dJTkRSRVM9JGFjX2N2X3Byb2dfV0lORFJFUworaWYgdGVzdCAtbiAiJFdJTkRSRVMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkV0lORFJFUyIgPiY1CiskYXNfZWNobyAiJFdJTkRSRVMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX1dJTkRSRVMiOyB0aGVuCisgIGFjX2N0X1dJTkRSRVM9JFdJTkRSRVMKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3aW5kcmVzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSB3aW5kcmVzOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9XSU5EUkVTKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X1dJTkRSRVMiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfV0lORFJFUz0iJGFjX2N0X1dJTkRSRVMiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9XSU5EUkVTPSJ3aW5kcmVzIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X1dJTkRSRVM9JGFjX2N2X3Byb2dfYWNfY3RfV0lORFJFUworaWYgdGVzdCAtbiAiJGFjX2N0X1dJTkRSRVMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfV0lORFJFUyIgPiY1CiskYXNfZWNobyAiJGFjX2N0X1dJTkRSRVMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9XSU5EUkVTIiA9IHg7IHRoZW4KKyAgICBXSU5EUkVTPSIiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgV0lORFJFUz0kYWNfY3RfV0lORFJFUworICBmaQorZWxzZQorICBXSU5EUkVTPSIkYWNfY3ZfcHJvZ19XSU5EUkVTIgorZmkKKworICBmaQorCisgICAgICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGhwdXgqKSBMVExJQkM9IiIgOzsKKyAgICAqKSAgICAgTFRMSUJDPSItbGMiIDs7CisgIGVzYWMKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlLi4uICIgPiY2OyB9CitpZiAke2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGd0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGUHJlZmVyZW5jZXMuaD4KK2ludAorbWFpbiAoKQoreworQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShOVUxMLCBOVUxMKQorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT15ZXMKK2Vsc2UKKyAgZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgTElCUz0iJGd0X3NhdmVfTElCUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSIgPiY1CiskYXNfZWNobyAiJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSIgPiY2OyB9CisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NGUFJFRkVSRU5DRVNDT1BZQVBQVkFMVUUgMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDRkxvY2FsZUNvcHlDdXJyZW50IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDRkxvY2FsZUNvcHlDdXJyZW50Li4uICIgPiY2OyB9CitpZiAke2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGd0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+CitpbnQKK21haW4gKCkKK3sKK0NGTG9jYWxlQ29weUN1cnJlbnQoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQ9eWVzCitlbHNlCisgIGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQiID4mNQorJGFzX2VjaG8gIiRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQiID4mNjsgfQorICBpZiB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DRkxPQ0FMRUNPUFlDVVJSRU5UIDEiID4+Y29uZmRlZnMuaAorCisgIGZpCisgIElOVExfTUFDT1NYX0xJQlM9CisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllcyB8fCB0ZXN0ICRndF9jdl9mdW5jX0NGTG9jYWxlQ29weUN1cnJlbnQgPSB5ZXM7IHRoZW4KKyAgICBJTlRMX01BQ09TWF9MSUJTPSItV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgIGZpCisKKworCisKKworCisgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD1ubworICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPW5vCisKKyAgTElCSU5UTD0KKyAgTFRMSUJJTlRMPQorICBQT1NVQj0KKworICAgIGNhc2UgIiAkZ3RfbmVlZHMgIiBpbgorICAgICoiIG5lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcyAiKikgZ3RfYXBpX3ZlcnNpb249MyA7OworICAgICoiIG5lZWQtbmdldHRleHQgIiopIGd0X2FwaV92ZXJzaW9uPTIgOzsKKyAgICAqKSBndF9hcGlfdmVyc2lvbj0xIDs7CisgIGVzYWMKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmMiCisgIGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPSJndF9jdl9mdW5jX2dudWdldHRleHQke2d0X2FwaV92ZXJzaW9ufV9saWJpbnRsIgorCisgICAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9bm8KKworICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBpcyByZXF1ZXN0ZWQuLi4gIiA+JjY7IH0KKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9pbmNsdWRlZF9nZXR0ZXh0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9pbmNsdWRlZF9nZXR0ZXh0OyBubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0PSR3aXRodmFsCitlbHNlCisgIG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQ9bm8KK2ZpCisKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgPiY1CiskYXNfZWNobyAiJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiID4mNjsgfQorCisgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0PSIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIKKyAgICAgIGlmIHRlc3QgIiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgorCisKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDM7IHRoZW4KKyAgICAgICAgICBndF9yZXZpc2lvbl90ZXN0X2NvZGU9JworI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgKChtYWpvcikgPT0gMCA/IDAgOiAtMSkKKyNlbmRpZgordHlwZWRlZiBpbnQgYXJyYXkgWzIgKiAoX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04oMCkgPj0gMSkgLSAxXTsKKycKKyAgICAgICAgZWxzZQorICAgICAgICAgIGd0X3JldmlzaW9uX3Rlc3RfY29kZT0KKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAkZ3RfYXBpX3ZlcnNpb24gLWdlIDI7IHRoZW4KKyAgICAgICAgICBndF9leHByZXNzaW9uX3Rlc3RfY29kZT0nICsgKiBuZ2V0dGV4dCAoIiIsICIiLCAwKScKKyAgICAgICAgZWxzZQorICAgICAgICAgIGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlPQorICAgICAgICBmaQorCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmMuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisjaW5jbHVkZSA8bGliaW50bC5oPgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOworZXh0ZXJuIGludCAqX25sX2RvbWFpbl9iaW5kaW5nczsKKworaW50CittYWluICgpCit7CisKK2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOworcmV0dXJuICogZ2V0dGV4dCAoIiIpJGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZG9tYWluX2JpbmRpbmdzCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9eWVzIgorZWxzZQorICBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitldmFsIGFjX3Jlcz1cJCRndF9mdW5jX2dudWdldHRleHRfbGliYworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisKKyAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmMiOyB0ZXN0ICIkZ3RfdmFsIiAhPSAieWVzIjsgfTsgdGhlbgorCisKKworCisKKworCisKKyAgICB1c2VfYWRkaXRpb25hbD15ZXMKKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorCisgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYmludGwtcHJlZml4IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9saWJpbnRsX3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGliaW50bF9wcmVmaXg7CisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgZWxzZQorICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiR3aXRodmFsL2luY2x1ZGUiCisgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iCisgICAgICAgIGlmIHRlc3QgIiRhY2xfbGliZGlyc3RlbTIiICE9ICIkYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgJiYgISB0ZXN0IC1kICIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0iOyB0aGVuCisgICAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbTIiCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisKK2ZpCisKKyAgICAgIExJQklOVEw9CisgIExUTElCSU5UTD0KKyAgSU5DSU5UTD0KKyAgTElCSU5UTF9QUkVGSVg9CisgICAgICBIQVZFX0xJQklOVEw9CisgIHJwYXRoZGlycz0KKyAgbHRycGF0aGRpcnM9CisgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0KKyAgbmFtZXNfbmV4dF9yb3VuZD0naW50bCAnCisgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8KKyAgICBuYW1lc190aGlzX3JvdW5kPSIkbmFtZXNfbmV4dF9yb3VuZCIKKyAgICBuYW1lc19uZXh0X3JvdW5kPQorICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbworICAgICAgYWxyZWFkeV9oYW5kbGVkPQorICAgICAgZm9yIG4gaW4gJG5hbWVzX2FscmVhZHlfaGFuZGxlZDsgZG8KKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgorICAgICAgICAgIGFscmVhZHlfaGFuZGxlZD15ZXMKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgZG9uZQorICAgICAgaWYgdGVzdCAteiAiJGFscmVhZHlfaGFuZGxlZCI7IHRoZW4KKyAgICAgICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgorICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXJuYW1lPWBlY2hvICIkbmFtZSIgfCBzZWQgLWUgJ3l8YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX3wnYAorICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgorICAgICAgICBpZiB0ZXN0IC1uICIkdmFsdWUiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAiJHZhbHVlIiA9IHllczsgdGhlbgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVybmFtZVwiCisgICAgICAgICAgICB0ZXN0IC16ICIkdmFsdWUiIHx8IExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JHZhbHVlIgorICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTFRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJJTlRMPSIke0xUTElCSU5UTH0ke0xUTElCSU5UTDorIH0kdmFsdWUiCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOgorICAgICAgICAgIGZpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0KKyAgICAgICAgICBmb3VuZF9sYT0KKyAgICAgICAgICBmb3VuZF9zbz0KKyAgICAgICAgICBmb3VuZF9hPQorICAgICAgICAgIGV2YWwgbGlibmFtZT1cIiRhY2xfbGlibmFtZV9zcGVjXCIgICAgIyB0eXBpY2FsbHk6IGxpYm5hbWU9bGliJG5hbWUKKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgc2hyZXh0PSIuJGFjbF9zaGxpYmV4dCIgICAgICAgICAgICAgIyB0eXBpY2FsbHk6IHNocmV4dD0uc28KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzaHJleHQ9CisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgICAgICAgICAgZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCisgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxcLiwsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBldmFsIGxpYnJhcnlfbmFtZXM9XCIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlY1wiCisgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCisgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWCI7IHRoZW4KKyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQklOVEw7IGRvCisKKyAgYWNsX3NhdmVfcHJlZml4PSIkcHJlZml4IgorICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgorICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgorICBleGVjX3ByZWZpeD0iJGFjbF9maW5hbF9leGVjX3ByZWZpeCIKKyAgZXZhbCB4PVwiJHhcIgorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCisKKyAgICAgICAgICAgICAgY2FzZSAiJHgiIGluCisgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGxpYm5hbWUkc2hyZXh0IgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWMiID0gJyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICB2ZXI9YChjZCAiJGRpciIgJiYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gIiRsaWJuYW1lJHNocmV4dCIuKjsgZG8gZWNobyAiJGYiOyBkb25lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIC1lICJzLF4kbGlibmFtZSRzaHJleHRcXFxcLiwsIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNvcnQgLXQgJy4nIC1uIC1yIC1rMSwxIC1rMiwyIC1rMywzIC1rNCw0IC1rNSw1IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VkIDFxICkgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkdmVyIiAmJiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dC4kdmVyIgorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBldmFsIGxpYnJhcnlfbmFtZXM9XCIkYWNsX2xpYnJhcnlfbmFtZXNfc3BlY1wiCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kZiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfc289IiRkaXIvJGYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9hPSIkZGlyLyRsaWJuYW1lLiRhY2xfbGliZXh0IgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZS5sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGRpci8kbGlibmFtZS5sYSIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG9uZQorICAgICAgICAgIGZpCisgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIke0xUTElCSU5UTH0ke0xUTElCSU5UTDorIH0tTCRmb3VuZF9kaXIgLWwkbmFtZSIKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfc28iICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGZvdW5kX2RpciIgPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtMiI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJTlRMPSIke0xJQklOVEx9JHtMSUJJTlRMOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJJTlRMOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZm91bmRfZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0tTCRmb3VuZF9kaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJTlRMPSIke0xJQklOVEx9JHtMSUJJTlRMOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJTlRMPSIke0xJQklOVEx9JHtMSUJJTlRMOisgfS1sJG5hbWUiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JGZvdW5kX2EiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQorICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2RpciIgaW4KKyAgICAgICAgICAgICAgKi8kYWNsX2xpYmRpcnN0ZW0gfCAqLyRhY2xfbGliZGlyc3RlbS8pCisgICAgICAgICAgICAgICAgYmFzZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICJzLC8kYWNsX2xpYmRpcnN0ZW0vIicqJCwsJ2AKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgPSAnaW50bCc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQklOVExfUFJFRklYPSIkYmFzZWRpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbTIgfCAqLyRhY2xfbGliZGlyc3RlbTIvKQorICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtMi8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICdpbnRsJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCSU5UTF9QUkVGSVg9IiRiYXNlZGlyIgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYL3Vzci9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgICAgICAgICAgICAgICBsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkgaGF2ZWl0PXllczs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNJTlRMOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOQ0lOVEw9IiR7SU5DSU5UTH0ke0lOQ0lOVEw6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9sYSIgaW4KKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgICAgKikgLiAiLi8kZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworICAgICAgICAgICAgICAgIGNhc2UgIiRkZXAiIGluCisgICAgICAgICAgICAgICAgICAtTCopCisgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgICAgICAgICAgICYmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCSU5UTDsgZG8KKworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICBldmFsIHg9XCIkeFwiCisgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCisgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTFRMSUJJTlRMOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVExJQklOVEw9IiR7TFRMSUJJTlRMfSR7TFRMSUJJTlRMOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgLVIqKQorICAgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1SLy8nYAorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiAhPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAtbCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtbC8vJ2AKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgICoubGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JGRlcCIKKyAgICAgICAgICAgICAgICAgICAgTFRMSUJJTlRMPSIke0xUTElCSU5UTH0ke0xUTElCSU5UTDorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJJTlRMPSIke0xJQklOVEx9JHtMSUJJTlRMOisgfS1sJG5hbWUiCisgICAgICAgICAgICBMVExJQklOVEw9IiR7TFRMSUJJTlRMfSR7TFRMSUJJTlRMOisgfS1sJG5hbWUiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCisgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBhbGxkaXJzPQorICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICBhbGxkaXJzPSIke2FsbGRpcnN9JHthbGxkaXJzOiskYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKKyAgICAgIGRvbmUKKyAgICAgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCisgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgorICAgICAgTElCSU5UTD0iJHtMSUJJTlRMfSR7TElCSU5UTDorIH0kZmxhZyIKKyAgICBlbHNlCisgICAgICAgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgIGFjbF9zYXZlX2xpYmRpcj0iJGxpYmRpciIKKyAgICAgICAgbGliZGlyPSIkZm91bmRfZGlyIgorICAgICAgICBldmFsIGZsYWc9XCIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgIExJQklOVEw9IiR7TElCSU5UTH0ke0xJQklOVEw6KyB9JGZsYWciCisgICAgICBkb25lCisgICAgZmkKKyAgZmkKKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICBmb3IgZm91bmRfZGlyIGluICRsdHJwYXRoZGlyczsgZG8KKyAgICAgIExUTElCSU5UTD0iJHtMVExJQklOVEx9JHtMVExJQklOVEw6KyB9LVIkZm91bmRfZGlyIgorICAgIGRvbmUKKyAgZmkKKworCisKKworCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsLi4uICIgPiY2OyB9CitpZiBldmFsIFwkeyRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGd0X3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0lOVEwiCisgICAgICAgICAgICBndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICAgICAgTElCUz0iJExJQlMgJExJQklOVEwiCisgICAgICAgICAgICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CisKK2ludAorbWFpbiAoKQoreworCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoIiIpCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzIgorZWxzZQorICBldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9bm8iCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgIT0geWVzOyB9ICYmIHRlc3QgLW4gIiRMSUJJQ09OViI7IHRoZW4KKyAgICAgICAgICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgorICAgICAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CiskZ3RfcmV2aXNpb25fdGVzdF9jb2RlCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CisKK2ludAorbWFpbiAoKQoreworCitiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKK3JldHVybiAqIGdldHRleHQgKCIiKSRndF9leHByZXNzaW9uX3Rlc3RfY29kZSArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoIiIpCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKKyAgICAgICAgICAgICAgICAgZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyIKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgICAgICAgICBmaQorICAgICAgICAgICAgQ1BQRkxBR1M9IiRndF9zYXZlX0NQUEZMQUdTIgorICAgICAgICAgICAgTElCUz0iJGd0X3NhdmVfTElCUyIKK2ZpCitldmFsIGFjX3Jlcz1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bAorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgICAgICAgIGZpCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliYyI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH0gXAorICAgICAgICAgICB8fCB7IHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfSBcCisgICAgICAgICAgICAgICAgJiYgdGVzdCAiJFBBQ0tBR0UiICE9IGdldHRleHQtcnVudGltZSBcCisgICAgICAgICAgICAgICAgJiYgdGVzdCAiJFBBQ0tBR0UiICE9IGdldHRleHQtdG9vbHM7IH07IHRoZW4KKyAgICAgICAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9eWVzCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgTElCSU5UTD0KKyAgICAgICAgICBMVExJQklOVEw9CisgICAgICAgICAgSU5DSU5UTD0KKyAgICAgICAgZmkKKworCisgICAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiICE9ICJ5ZXMiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0PXllcworICAgICAgICBmaQorICAgICAgZmkKKworICAgICAgaWYgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgICAgICAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTD15ZXMKKyAgICAgICAgTElCSU5UTD0iXCR7dG9wX2J1aWxkZGlyfS9pbnRsL2xpYmludGwuYSAkTElCSUNPTlYgJExJQlRIUkVBRCIKKyAgICAgICAgTFRMSUJJTlRMPSJcJHt0b3BfYnVpbGRkaXJ9L2ludGwvbGliaW50bC5hICRMVExJQklDT05WICRMVExJQlRIUkVBRCIKKyAgICAgICAgTElCUz1gZWNobyAiICRMSUJTICIgfCBzZWQgLWUgJ3MvIC1saW50bCAvIC8nIC1lICdzL14gLy8nIC1lICdzLyAkLy8nYAorICAgICAgZmkKKworICAgICAgQ0FUT0JKRVhUPQorICAgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIiBcCisgICAgICAgICB8fCB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgorICAgICAgICAgICAgICAgIENBVE9CSkVYVD0uZ21vCisgICAgICBmaQorCisKKyAgICBpZiB0ZXN0IC1uICIkSU5UTF9NQUNPU1hfTElCUyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAorICAgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgICAgICAgICAgICBMSUJJTlRMPSIkTElCSU5UTCAkSU5UTF9NQUNPU1hfTElCUyIKKyAgICAgICAgTFRMSUJJTlRMPSIkTFRMSUJJTlRMICRJTlRMX01BQ09TWF9MSUJTIgorICAgICAgZmkKKyAgICBmaQorCisgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIiBcCisgICAgICAgfHwgdGVzdCAiJG5sc19jdl91c2VfZ251X2dldHRleHQiID0gInllcyI7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX05MUyAxIiA+PmNvbmZkZWZzLmgKKworICAgIGVsc2UKKyAgICAgIFVTRV9OTFM9bm8KKyAgICBmaQorICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byB1c2UgTkxTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdG8gdXNlIE5MUy4uLiAiID4mNjsgfQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFVTRV9OTFMiID4mNQorJGFzX2VjaG8gIiRVU0VfTkxTIiA+JjY7IH0KKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb20iID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hlcmUgdGhlIGdldHRleHQgZnVuY3Rpb24gY29tZXMgZnJvbS4uLiAiID4mNjsgfQorICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyI7IHRoZW4KKyAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfTsgdGhlbgorICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCisgICAgICBlbHNlCisgICAgICAgIGd0X3NvdXJjZT0ibGliYyIKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZ3Rfc291cmNlPSJpbmNsdWRlZCBpbnRsIGRpcmVjdG9yeSIKKyAgICBmaQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ3Rfc291cmNlIiA+JjUKKyRhc19lY2hvICIkZ3Rfc291cmNlIiA+JjY7IH0KKyAgZmkKKworICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorCisgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgorICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9OyB0aGVuCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGxpbmsgd2l0aCBsaWJpbnRsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBsaW5rIHdpdGggbGliaW50bC4uLiAiID4mNjsgfQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExJQklOVEwiID4mNQorJGFzX2VjaG8gIiRMSUJJTlRMIiA+JjY7IH0KKworICBmb3IgZWxlbWVudCBpbiAkSU5DSU5UTDsgZG8KKyAgICBoYXZlaXQ9CisgICAgZm9yIHggaW4gJENQUEZMQUdTOyBkbworCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCisgIGV2YWwgeD1cIiR4XCIKKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorCisgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7IHRoZW4KKyAgICAgICAgaGF2ZWl0PXllcworICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9JGVsZW1lbnQiCisgICAgZmkKKyAgZG9uZQorCisgICAgICBmaQorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0VUVEVYVCAxIiA+PmNvbmZkZWZzLmgKKworCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0RDR0VUVEVYVCAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCisKKyAgICAgICAgUE9TVUI9cG8KKyAgZmkKKworCisgICAgICAgICAgICBpZiB0ZXN0ICIkUEFDS0FHRSIgPSBnZXR0ZXh0LXJ1bnRpbWUgfHwgdGVzdCAiJFBBQ0tBR0UiID0gZ2V0dGV4dC10b29sczsgdGhlbgorICAgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD15ZXMKKyAgICBmaQorCisKKworCisKKyAgICAgICAgbmxzX2N2X2hlYWRlcl9pbnRsPQorICAgIG5sc19jdl9oZWFkZXJfbGliZ3Q9CisKKyAgICAgICAgREFUQURJUk5BTUU9c2hhcmUKKworCisgICAgICAgIElOU1RPQkpFWFQ9Lm1vCisKKworICAgICAgICBHRU5DQVQ9Z2VuY2F0CisKKworICAgICAgICBJTlRMT0JKUz0KKyAgICBpZiB0ZXN0ICIkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0geWVzOyB0aGVuCisgICAgICBJTlRMT0JKUz0iXCQoR0VUVE9CSlMpIgorICAgIGZpCisKKworICAgICAgICBJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWD0KKworCisKKyAgICBJTlRMTElCUz0iJExJQklOVEwiCisKKworCisKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJChNQUtFKSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4uICIgPiY2OyB9CitzZXQgeCAke01BS0UtbWFrZX0KK2FjX21ha2U9YCRhc19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMvW15hLXpBLVowLTlfXS9fL2cnYAoraWYgZXZhbCBcJHthY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgPmNvbmZ0ZXN0Lm1ha2UgPDxcX0FDRU9GCitTSEVMTCA9IC9iaW4vc2gKK2FsbDoKKwlAZWNobyAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJworX0FDRU9GCisjIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nIC4uLiIsIHdoaWNoIHdvdWxkIGNvbmZ1c2UgdXMuCitjYXNlIGAke01BS0UtbWFrZX0gLWYgY29uZnRlc3QubWFrZSAyPi9kZXYvbnVsbGAgaW4KKyAgKkBAQCUlJT0/Kj1AQEAlJSUqKQorICAgIGV2YWwgYWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0PXllczs7CisgICopCisgICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9bm87OworZXNhYworcm0gLWYgY29uZnRlc3QubWFrZQorZmkKK2lmIGV2YWwgdGVzdCBcJGFjX2N2X3Byb2dfbWFrZV8ke2FjX21ha2V9X3NldCA9IHllczsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorICBTRVRfTUFLRT0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgIFNFVF9NQUtFPSJNQUtFPSR7TUFLRS1tYWtlfSIKK2ZpCisKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbWFrZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIG1ha2UuLi4gIiA+JjY7IH0KK2lmICR7X2N2X2dudV9tYWtlX2NvbW1hbmQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBfY3ZfZ251X21ha2VfY29tbWFuZD0nJyA7CisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJEZPUkNFX05BVElWRV9NQUtFIiA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICBNQUtFUz0ibWFrZSIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgTUFLRVM9Im1ha2UgZ21ha2UgZ251bWFrZSIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZvciBhIGluICIkTUFLRSIgJE1BS0VTIDsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRhIiA7IHRoZW4gY29udGludWUgOyBmaSA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAgKCBzaCAtYyAiJGEgLS12ZXJzaW9uIiAyPiAvZGV2L251bGwgfCBncmVwIEdOVSAgMj4mMSA+IC9kZXYvbnVsbCApIDsgIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2N2X2dudV9tYWtlX2NvbW1hbmQ9JGEgOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZG9uZSA7CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJF9jdl9nbnVfbWFrZV9jb21tYW5kIiA+JjUKKyRhc19lY2hvICIkX2N2X2dudV9tYWtlX2NvbW1hbmQiID4mNjsgfSA7CisgICAgICAgIGlmIHRlc3QgICJ4JF9jdl9nbnVfbWFrZV9jb21tYW5kIiAhPSAieCIgIDsgdGhlbgorICAgICAgICAgICAgICAgIGlmR05VbWFrZT0nJyA7CisgICAgICAgICAgICAgICAgaWZOb3RHTlVtYWtlPScjJyA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZkdOVW1ha2U9JyMnIDsKKyAgICAgICAgICAgICAgICBpZk5vdEdOVW1ha2U9JycgOworICAgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBcIk5vdCBmb3VuZFwiIiA+JjUKKyRhc19lY2hvICJcIk5vdCBmb3VuZFwiIiA+JjY7IH07CisgICAgICAgIGZpCisKKworCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxuIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBsbjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfTE4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRMTiBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9MTj0iJExOIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9MTj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9MTiIgJiYgYWNfY3ZfcGF0aF9MTj0ibG4iCisgIDs7Citlc2FjCitmaQorTE49JGFjX2N2X3BhdGhfTE4KK2lmIHRlc3QgLW4gIiRMTiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMTiIgPiY1CiskYXNfZWNobyAiJExOIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBsbiAtcyB3b3JrcyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGxuIC1zIHdvcmtzLi4uICIgPiY2OyB9CitMTl9TPSRhc19sbl9zCitpZiB0ZXN0ICIkTE5fUyIgPSAibG4gLXMiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubywgdXNpbmcgJExOX1MiID4mNQorJGFzX2VjaG8gIm5vLCB1c2luZyAkTE5fUyIgPiY2OyB9CitmaQorCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm12Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBtdjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfTVYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRNViBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9NVj0iJE1WIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9NVj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9NViIgJiYgYWNfY3ZfcGF0aF9NVj0ibXYiCisgIDs7Citlc2FjCitmaQorTVY9JGFjX2N2X3BhdGhfTVYKK2lmIHRlc3QgLW4gIiRNViI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNViIgPiY1CiskYXNfZWNobyAiJE1WIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY3AiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGNwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9DUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENQIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0NQPSIkQ1AiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX0NQPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0NQIiAmJiBhY19jdl9wYXRoX0NQPSJjcCIKKyAgOzsKK2VzYWMKK2ZpCitDUD0kYWNfY3ZfcGF0aF9DUAoraWYgdGVzdCAtbiAiJENQIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENQIiA+JjUKKyRhc19lY2hvICIkQ1AiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJybSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgcm07IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1JNKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUk0gaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfUk09IiRSTSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfUk09IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgdGVzdCAteiAiJGFjX2N2X3BhdGhfUk0iICYmIGFjX2N2X3BhdGhfUk09InJtIgorICA7OworZXNhYworZmkKK1JNPSRhY19jdl9wYXRoX1JNCitpZiB0ZXN0IC1uICIkUk0iOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUk0iID4mNQorJGFzX2VjaG8gIiRSTSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImNobW9kIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBjaG1vZDsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfQ0hNT0QrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRDSE1PRCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9DSE1PRD0iJENITU9EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9DSE1PRD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DSE1PRCIgJiYgYWNfY3ZfcGF0aF9DSE1PRD0iOiIKKyAgOzsKK2VzYWMKK2ZpCitDSE1PRD0kYWNfY3ZfcGF0aF9DSE1PRAoraWYgdGVzdCAtbiAiJENITU9EIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJENITU9EIiA+JjUKKyRhc19lY2hvICIkQ0hNT0QiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZm9yIGFjX3Byb2cgaW4gZ2F3ayBtYXdrIG5hd2sgYXdrCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQVdLKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19BV0s9IiRBV0siICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19BV0s9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK0FXSz0kYWNfY3ZfcHJvZ19BV0sKK2lmIHRlc3QgLW4gIiRBV0siOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQVdLIiA+JjUKKyRhc19lY2hvICIkQVdLIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJEFXSyIgJiYgYnJlYWsKK2RvbmUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdyZXAiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVncmVwLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRUdSRVArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4vZGV2L251bGwgMj4mMQorICAgdGhlbiBhY19jdl9wYXRoX0VHUkVQPSIkR1JFUCAtRSIKKyAgIGVsc2UKKyAgICAgaWYgdGVzdCAteiAiJEVHUkVQIjsgdGhlbgorICBhY19wYXRoX0VHUkVQX2ZvdW5kPWZhbHNlCisgICMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3IgZWFjaCBvZiBQUk9HTkFNRS1MSVNUCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gZWdyZXA7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX0VHUkVQPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9FR1JFUCIgfHwgY29udGludWUKKyMgQ2hlY2sgZm9yIEdOVSBhY19wYXRoX0VHUkVQIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9FR1JFUAorY2FzZSBgIiRhY19wYXRoX0VHUkVQIiAtLXZlcnNpb24gMj4mMWAgaW4KKypHTlUqKQorICBhY19jdl9wYXRoX0VHUkVQPSIkYWNfcGF0aF9FR1JFUCIgYWNfcGF0aF9FR1JFUF9mb3VuZD06OzsKKyopCisgIGFjX2NvdW50PTAKKyAgJGFzX2VjaG9fbiAwMTIzNDU2Nzg5ID4iY29uZnRlc3QuaW4iCisgIHdoaWxlIDoKKyAgZG8KKyAgICBjYXQgImNvbmZ0ZXN0LmluIiAiY29uZnRlc3QuaW4iID4iY29uZnRlc3QudG1wIgorICAgIG12ICJjb25mdGVzdC50bXAiICJjb25mdGVzdC5pbiIKKyAgICBjcCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5ubCIKKyAgICAkYXNfZWNobyAnRUdSRVAnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfRUdSRVAiICdFR1JFUCQnIDwgImNvbmZ0ZXN0Lm5sIiA+ImNvbmZ0ZXN0Lm91dCIgMj4vZGV2L251bGwgfHwgYnJlYWsKKyAgICBkaWZmICJjb25mdGVzdC5vdXQiICJjb25mdGVzdC5ubCIgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgYXNfZm5fYXJpdGggJGFjX2NvdW50ICsgMSAmJiBhY19jb3VudD0kYXNfdmFsCisgICAgaWYgdGVzdCAkYWNfY291bnQgLWd0ICR7YWNfcGF0aF9FR1JFUF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9FR1JFUD0iJGFjX3BhdGhfRUdSRVAiCisgICAgICBhY19wYXRoX0VHUkVQX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfRUdSRVBfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0VHUkVQIjsgdGhlbgorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGVncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9FR1JFUD0kRUdSRVAKK2ZpCisKKyAgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX0VHUkVQIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9FR1JFUCIgPiY2OyB9CisgRUdSRVA9IiRhY19jdl9wYXRoX0VHUkVQIgorCisKKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic2VkIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBzZWQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFNFRCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9TRUQ9IiRTRUQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1NFRD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiICYmIGFjX2N2X3BhdGhfU0VEPSJzZWQiCisgIDs7Citlc2FjCitmaQorU0VEPSRhY19jdl9wYXRoX1NFRAoraWYgdGVzdCAtbiAiJFNFRCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRTRUQiID4mNQorJGFzX2VjaG8gIiRTRUQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJwZXJsIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBwZXJsOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9QRVJMKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkUEVSTCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QRVJMPSIkUEVSTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfUEVSTD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QRVJMIiAmJiBhY19jdl9wYXRoX1BFUkw9InBlcmwiCisgIDs7Citlc2FjCitmaQorUEVSTD0kYWNfY3ZfcGF0aF9QRVJMCitpZiB0ZXN0IC1uICIkUEVSTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQRVJMIiA+JjUKKyRhc19lY2hvICIkUEVSTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxkY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBsZGNvbmZpZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfTERDT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRMRENPTkZJRyBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9MRENPTkZJRz0iJExEQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9MRENPTkZJRz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9MRENPTkZJRyIgJiYgYWNfY3ZfcGF0aF9MRENPTkZJRz0iOiIKKyAgOzsKK2VzYWMKK2ZpCitMRENPTkZJRz0kYWNfY3ZfcGF0aF9MRENPTkZJRworaWYgdGVzdCAtbiAiJExEQ09ORklHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExEQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTERDT05GSUciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEFSIjsgdGhlbgorICBhY19jdl9wcm9nX0FSPSIkQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworZmkKK2ZpCitBUj0kYWNfY3ZfcHJvZ19BUgoraWYgdGVzdCAtbiAiJEFSIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEFSIiA+JjUKKyRhc19lY2hvICIkQVIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorICBhY19jdF9BUj0kQVIKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfY3RfQVIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQVI9JGFjX2N2X3Byb2dfYWNfY3RfQVIKK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0FSIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgIEFSPSJhciIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBBUj0kYWNfY3RfQVIKKyAgZmkKK2Vsc2UKKyAgQVI9IiRhY19jdl9wcm9nX0FSIgorZmkKKworaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXJhbmxpYjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfUkFOTElCKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19SQU5MSUI9IiRSQU5MSUIiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19SQU5MSUI9IiR7YWNfdG9vbF9wcmVmaXh9cmFubGliIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK1JBTkxJQj0kYWNfY3ZfcHJvZ19SQU5MSUIKK2lmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUkFOTElCIiA+JjUKKyRhc19lY2hvICIkUkFOTElCIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19SQU5MSUIiOyB0aGVuCisgIGFjX2N0X1JBTkxJQj0kUkFOTElCCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicmFubGliIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSByYW5saWI7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9SQU5MSUIiOyB0aGVuCisgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSIkYWNfY3RfUkFOTElCIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfUkFOTElCPSJyYW5saWIiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfUkFOTElCPSRhY19jdl9wcm9nX2FjX2N0X1JBTkxJQgoraWYgdGVzdCAtbiAiJGFjX2N0X1JBTkxJQiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9SQU5MSUIiID4mNQorJGFzX2VjaG8gIiRhY19jdF9SQU5MSUIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9SQU5MSUIiID0geDsgdGhlbgorICAgIFJBTkxJQj0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBSQU5MSUI9JGFjX2N0X1JBTkxJQgorICBmaQorZWxzZQorICBSQU5MSUI9IiRhY19jdl9wcm9nX1JBTkxJQiIKK2ZpCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19TVFJJUD0iJFNUUklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfU1RSSVA9IiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorU1RSSVA9JGFjX2N2X3Byb2dfU1RSSVAKK2lmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRTVFJJUCIgPiY1CiskYXNfZWNobyAiJFNUUklQIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19TVFJJUCI7IHRoZW4KKyAgYWNfY3RfU1RSSVA9JFNUUklQCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHN0cmlwOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9TVFJJUCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9TVFJJUD0iJGFjX2N0X1NUUklQIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfU1RSSVA9InN0cmlwIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X1NUUklQPSRhY19jdl9wcm9nX2FjX2N0X1NUUklQCitpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfU1RSSVAiID4mNQorJGFzX2VjaG8gIiRhY19jdF9TVFJJUCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X1NUUklQIiA9IHg7IHRoZW4KKyAgICBTVFJJUD0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBTVFJJUD0kYWNfY3RfU1RSSVAKKyAgZmkKK2Vsc2UKKyAgU1RSSVA9IiRhY19jdl9wcm9nX1NUUklQIgorZmkKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtYWtlaW5mbyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbWFrZWluZm87IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX01BS0VJTkZPKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE1BS0VJTkZPIjsgdGhlbgorICBhY19jdl9wcm9nX01BS0VJTkZPPSIkTUFLRUlORk8iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19NQUtFSU5GTz0ibWFrZWluZm8iCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorTUFLRUlORk89JGFjX2N2X3Byb2dfTUFLRUlORk8KK2lmIHRlc3QgLW4gIiRNQUtFSU5GTyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQUtFSU5GTyIgPiY1CiskYXNfZWNobyAiJE1BS0VJTkZPIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2lmIHRlc3QgIl8kTUFLRUlORk8iID0gIl8iOyB0aGVuCisgICAgTUFLRUlORk89IkBlY2hvIE1ha2VpbmZvIGlzIG1pc3NpbmcuIEluZm8gZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBiZSBidWlsdC47dHJ1ZSIKK2Vsc2UKKyAgICBjYXNlICIkTUFLRUlORk8iIGluCisgICAgICAqL21pc3NpbmcuKikKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOgorKioqIE1ha2VpbmZvIGlzIG1pc3NpbmcuIEluZm8gZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBiZSBidWlsdC4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzoKKyoqKiBNYWtlaW5mbyBpcyBtaXNzaW5nLiBJbmZvIGRvY3VtZW50YXRpb24gd2lsbCBub3QgYmUgYnVpbHQuIiA+JjI7fQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorCisKKyMgU2VlIGlmIHdlIG5lZWQgYSBzZXBhcmF0ZSBuYXRpdmUgY29tcGlsZXIuCitpZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSBubzsgdGhlbgorICBCVUlMRF9DQz0iJENDIgorCitlbHNlCisgIGZvciBhY19wcm9nIGluIGdjYyBjYworZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX0JVSUxEX0NDKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEJVSUxEX0NDIjsgdGhlbgorICBhY19jdl9wcm9nX0JVSUxEX0NDPSIkQlVJTERfQ0MiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcHJvZ19CVUlMRF9DQz0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorQlVJTERfQ0M9JGFjX2N2X3Byb2dfQlVJTERfQ0MKK2lmIHRlc3QgLW4gIiRCVUlMRF9DQyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRCVUlMRF9DQyIgPiY1CiskYXNfZWNobyAiJEJVSUxEX0NDIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJEJVSUxEX0NDIiAmJiBicmVhaworZG9uZQorCitmaQorZm9yIGFjX2hlYWRlciBpbiAgCWRpcmVudC5oIAllcnJuby5oIAlleGVjaW5mby5oIAlnZXRvcHQuaCAJbWFsbG9jLmggCW1udGVudC5oIAlwYXRocy5oIAlzZW1hcGhvcmUuaCAJc2V0am1wLmggCXNpZ25hbC5oIAlzdGRhcmcuaCAJc3RkaW50LmggCXN0ZGxpYi5oIAl0ZXJtaW9zLmggCXRlcm1pby5oIAl1bmlzdGQuaCAJdXRpbWUuaCAJYXR0ci94YXR0ci5oIAlsaW51eC9mYWxsb2MuaCAJbGludXgvZmQuaCAJbGludXgvbWFqb3IuaCAJbGludXgvbG9vcC5oIAluZXQvaWZfZGwuaCAJbmV0aW5ldC9pbi5oIAlzeXMvYWNsLmggCXN5cy9kaXNrbGFiZWwuaCAJc3lzL2Rpc2suaCAJc3lzL2ZpbGUuaCAJc3lzL2lvY3RsLmggCXN5cy9rZXkuaCAJc3lzL21rZGV2LmggCXN5cy9tbWFuLmggCXN5cy9tb3VudC5oIAlzeXMvcHJjdGwuaCAJc3lzL3Jlc291cmNlLmggCXN5cy9zZWxlY3QuaCAJc3lzL3NvY2tldC5oIAlzeXMvc29ja2lvLmggCXN5cy9zdGF0LmggCXN5cy9zeXNjYWxsLmggCXN5cy9zeXNjdGwuaCAJc3lzL3N5c21hY3Jvcy5oIAlzeXMvdGltZS5oIAlzeXMvdHlwZXMuaCAJc3lzL3VuLmggCXN5cy93YWl0LmgKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiBldmFsIHRlc3QgXCJ4XCQiJGFzX2FjX0hlYWRlciJcIiA9IHgieWVzIjsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgYCRhc19lY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworZm9yIGFjX2hlYWRlciBpbiBuZXQvaWYuaAorZG8gOgorICBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAibmV0L2lmLmgiICJhY19jdl9oZWFkZXJfbmV0X2lmX2giICIKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVQKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbmV0X2lmX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ORVRfSUZfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitmb3IgYWNfZnVuYyBpbiB2cHJpbnRmCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInZwcmludGYiICJhY19jdl9mdW5jX3ZwcmludGYiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfdnByaW50ZiIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1ZQUklOVEYgMQorX0FDRU9GCisKK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9kb3BybnQiICJhY19jdl9mdW5jX19kb3BybnQiCitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfX2RvcHJudCIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9ET1BSTlQgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK2ZpCitkb25lCisKKworYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3QgZGlyZW50IiAiZF9yZWNsZW4iICJhY19jdl9tZW1iZXJfc3RydWN0X2RpcmVudF9kX3JlY2xlbiIgIiNpbmNsdWRlIDxkaXJlbnQuaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9kaXJlbnRfZF9yZWNsZW4iID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkVDTEVOX0RJUkVOVCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworYWNfZm5fY19jaGVja19tZW1iZXIgIiRMSU5FTk8iICJzdHJ1Y3Qgc3RhdCIgInN0X2F0aW0iICJhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYXRpbSIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3N0YXRfc3RfYXRpbSIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NUUlVDVF9TVEFUX1NUX0FUSU0gMQorX0FDRU9GCisKKworZmkKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic3NpemVfdCIgImFjX2N2X3R5cGVfc3NpemVfdCIgIiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1RZUEVfU1NJWkVfVCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKworYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAibGxzZWVrIiAiYWNfY3ZfaGF2ZV9kZWNsX2xsc2VlayIgIiNpbmNsdWRlIDx1bmlzdGQuaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2xsc2VlayIgPSB4eWVzOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MTFNFRUtfUFJPVE9UWVBFIDEiID4+Y29uZmRlZnMuaAorCitmaQorCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJsc2VlazY0IiAiYWNfY3ZfaGF2ZV9kZWNsX2xzZWVrNjQiICIjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisJCSAjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKwkJICNpbmNsdWRlIDx1bmlzdGQuaD4KKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGF2ZV9kZWNsX2xzZWVrNjQiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTFNFRUs2NF9QUk9UT1RZUEUgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygc2hvcnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBzaG9ydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2Zfc2hvcnQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChzaG9ydCkpIiAiYWNfY3Zfc2l6ZW9mX3Nob3J0IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfc2hvcnQiID0geWVzOyB0aGVuCisgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAoc2hvcnQpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2Zfc2hvcnQ9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9zaG9ydCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9TSE9SVCAkYWNfY3Zfc2l6ZW9mX3Nob3J0CitfQUNFT0YKKworCisjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgorIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cworIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCisjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGludCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGludC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfaW50Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAoaW50KSkiICJhY19jdl9zaXplb2ZfaW50IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfaW50IiA9IHllczsgdGhlbgorICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGludCkKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CisgICBlbHNlCisgICAgIGFjX2N2X3NpemVvZl9pbnQ9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9pbnQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfaW50IiA+JjY7IH0KKworCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgU0laRU9GX0lOVCAkYWNfY3Zfc2l6ZW9mX2ludAorX0FDRU9GCisKKworIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKKyMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zaXplb2ZfbG9uZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcpKSIgImFjX2N2X3NpemVvZl9sb25nIiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6CisKK2Vsc2UKKyAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nKQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKyAgIGVsc2UKKyAgICAgYWNfY3Zfc2l6ZW9mX2xvbmc9MAorICAgZmkKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl9sb25nIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmciID4mNjsgfQorCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBTSVpFT0ZfTE9ORyAkYWNfY3Zfc2l6ZW9mX2xvbmcKK19BQ0VPRgorCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBsb25nLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3NpemVvZl9sb25nX2xvbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChsb25nIGxvbmcpKSIgImFjX2N2X3NpemVvZl9sb25nX2xvbmciICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKKworZWxzZQorICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzOyB0aGVuCisgICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgNzcgImNhbm5vdCBjb21wdXRlIHNpemVvZiAobG9uZyBsb25nKQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKyAgIGVsc2UKKyAgICAgYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZz0wCisgICBmaQorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQorCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBTSVpFT0ZfTE9OR19MT05HICRhY19jdl9zaXplb2ZfbG9uZ19sb25nCitfQUNFT0YKKworCisjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgorIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cworIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCisjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIG9mZl90IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2Ygb2ZmX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX29mZl90Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAob2ZmX3QpKSIgImFjX2N2X3NpemVvZl9vZmZfdCIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX29mZl90IiA9IHllczsgdGhlbgorICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKG9mZl90KQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KKyAgIGVsc2UKKyAgICAgYWNfY3Zfc2l6ZW9mX29mZl90PTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2Zfb2ZmX3QiID4mNQorJGFzX2VjaG8gIiRhY19jdl9zaXplb2Zfb2ZmX3QiID4mNjsgfQorCisKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBTSVpFT0ZfT0ZGX1QgJGFjX2N2X3NpemVvZl9vZmZfdAorX0FDRU9GCisKKworIyBUaGUgY2FzdCB0byBsb25nIGludCB3b3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIEhQIEMgQ29tcGlsZXIKKyMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKKyMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgorIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB0aW1lX3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB0aW1lX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX3RpbWVfdCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKHRpbWVfdCkpIiAiYWNfY3Zfc2l6ZW9mX3RpbWVfdCIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3RpbWVfdCIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh0aW1lX3QpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2ZfdGltZV90PTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfdGltZV90IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX3RpbWVfdCIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9USU1FX1QgJGFjX2N2X3NpemVvZl90aW1lX3QKK19BQ0VPRgorCisKK1NJWkVPRl9TSE9SVD0kYWNfY3Zfc2l6ZW9mX3Nob3J0CitTSVpFT0ZfSU5UPSRhY19jdl9zaXplb2ZfaW50CitTSVpFT0ZfTE9ORz0kYWNfY3Zfc2l6ZW9mX2xvbmcKK1NJWkVPRl9MT05HX0xPTkc9JGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK1NJWkVPRl9PRkZfVD0kYWNfY3Zfc2l6ZW9mX29mZl90CitTSVpFT0ZfVElNRV9UPSRhY19jdl9zaXplb2ZfdGltZV90CisKKworCisKKworCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4uLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY19iaWdlbmRpYW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jdl9jX2JpZ2VuZGlhbj11bmtub3duCisgICAgIyBTZWUgaWYgd2UncmUgZGVhbGluZyB3aXRoIGEgdW5pdmVyc2FsIGNvbXBpbGVyLgorICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpZm5kZWYgX19BUFBMRV9DQ19fCisJICAgICAgIG5vdCBhIHVuaXZlcnNhbCBjYXBhYmxlIGNvbXBpbGVyCisJICAgICAjZW5kaWYKKwkgICAgIHR5cGVkZWYgaW50IGR1bW15OworCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworCSMgQ2hlY2sgZm9yIHBvdGVudGlhbCAtYXJjaCBmbGFncy4gIEl0IGlzIG5vdCB1bml2ZXJzYWwgdW5sZXNzCisJIyB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIC1hcmNoIGZsYWdzIHdpdGggZGlmZmVyZW50IHZhbHVlcy4KKwlhY19hcmNoPQorCWFjX3ByZXY9CisJZm9yIGFjX3dvcmQgaW4gJENDICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTOyBkbworCSBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KKwkgICBjYXNlICRhY193b3JkIGluCisJICAgICBpPzg2IHwgeDg2XzY0IHwgcHBjIHwgcHBjNjQpCisJICAgICAgIGlmIHRlc3QgLXogIiRhY19hcmNoIiB8fCB0ZXN0ICIkYWNfYXJjaCIgPSAiJGFjX3dvcmQiOyB0aGVuCisJCSBhY19hcmNoPSRhY193b3JkCisJICAgICAgIGVsc2UKKwkJIGFjX2N2X2NfYmlnZW5kaWFuPXVuaXZlcnNhbAorCQkgYnJlYWsKKwkgICAgICAgZmkKKwkgICAgICAgOzsKKwkgICBlc2FjCisJICAgYWNfcHJldj0KKwkgZWxpZiB0ZXN0ICJ4JGFjX3dvcmQiID0gIngtYXJjaCI7IHRoZW4KKwkgICBhY19wcmV2PWFyY2gKKwkgZmkKKyAgICAgICBkb25lCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgICAgaWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB1bmtub3duOyB0aGVuCisgICAgICAjIFNlZSBpZiBzeXMvcGFyYW0uaCBkZWZpbmVzIHRoZSBCWVRFX09SREVSIG1hY3JvLgorICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCSAgICAgI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorCitpbnQKK21haW4gKCkKK3sKKyNpZiAhIChkZWZpbmVkIEJZVEVfT1JERVIgJiYgZGVmaW5lZCBCSUdfRU5ESUFOIFwKKwkJICAgICAmJiBkZWZpbmVkIExJVFRMRV9FTkRJQU4gJiYgQllURV9PUkRFUiAmJiBCSUdfRU5ESUFOIFwKKwkJICAgICAmJiBMSVRUTEVfRU5ESUFOKQorCSAgICAgIGJvZ3VzIGVuZGlhbiBtYWNyb3MKKwkgICAgICNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0byBCSUdfRU5ESUFOIG9yIG5vdC4KKwkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCQkjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisKK2ludAorbWFpbiAoKQoreworI2lmIEJZVEVfT1JERVIgIT0gQklHX0VORElBTgorCQkgbm90IGJpZyBlbmRpYW4KKwkJI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfY19iaWdlbmRpYW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBmaQorICAgIGlmIHRlc3QgJGFjX2N2X2NfYmlnZW5kaWFuID0gdW5rbm93bjsgdGhlbgorICAgICAgIyBTZWUgaWYgPGxpbWl0cy5oPiBkZWZpbmVzIF9MSVRUTEVfRU5ESUFOIG9yIF9CSUdfRU5ESUFOIChlLmcuLCBTb2xhcmlzKS4KKyAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworaW50CittYWluICgpCit7CisjaWYgISAoZGVmaW5lZCBfTElUVExFX0VORElBTiB8fCBkZWZpbmVkIF9CSUdfRU5ESUFOKQorCSAgICAgIGJvZ3VzIGVuZGlhbiBtYWNyb3MKKwkgICAgICNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgIyBJdCBkb2VzOyBub3cgc2VlIHdoZXRoZXIgaXQgZGVmaW5lZCB0byBfQklHX0VORElBTiBvciBub3QuCisJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworaW50CittYWluICgpCit7CisjaWZuZGVmIF9CSUdfRU5ESUFOCisJCSBub3QgYmlnIGVuZGlhbgorCQkjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2NfYmlnZW5kaWFuPXllcworZWxzZQorICBhY19jdl9jX2JpZ2VuZGlhbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICAgIGZpCisgICAgaWYgdGVzdCAkYWNfY3ZfY19iaWdlbmRpYW4gPSB1bmtub3duOyB0aGVuCisgICAgICAjIENvbXBpbGUgYSB0ZXN0IHByb2dyYW0uCisgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgICMgVHJ5IHRvIGd1ZXNzIGJ5IGdyZXBwaW5nIHZhbHVlcyBmcm9tIGFuIG9iamVjdCBmaWxlLgorCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCitzaG9ydCBpbnQgYXNjaWlfbW1bXSA9CisJCSAgeyAweDQyNDksIDB4NDc2NSwgMHg2RTQ0LCAweDY5NjEsIDB4NkU1MywgMHg3OTUzLCAwIH07CisJCXNob3J0IGludCBhc2NpaV9paVtdID0KKwkJICB7IDB4Njk0QywgMHg1NDU0LCAweDY1NkMsIDB4NkU0NSwgMHg2OTQ0LCAweDZFNjEsIDAgfTsKKwkJaW50IHVzZV9hc2NpaSAoaW50IGkpIHsKKwkJICByZXR1cm4gYXNjaWlfbW1baV0gKyBhc2NpaV9paVtpXTsKKwkJfQorCQlzaG9ydCBpbnQgZWJjZGljX2lpW10gPQorCQkgIHsgMHg4OUQzLCAweEUzRTMsIDB4ODU5MywgMHg5NUM1LCAweDg5QzQsIDB4OTU4MSwgMCB9OworCQlzaG9ydCBpbnQgZWJjZGljX21tW10gPQorCQkgIHsgMHhDMkM5LCAweEM3ODUsIDB4OTVDNCwgMHg4OTgxLCAweDk1RTIsIDB4QThFMiwgMCB9OworCQlpbnQgdXNlX2ViY2RpYyAoaW50IGkpIHsKKwkJICByZXR1cm4gZWJjZGljX21tW2ldICsgZWJjZGljX2lpW2ldOworCQl9CisJCWV4dGVybiBpbnQgZm9vOworCitpbnQKK21haW4gKCkKK3sKK3JldHVybiB1c2VfYXNjaWkgKGZvbykgPT0gdXNlX2ViY2RpYyAoZm9vKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBpZiBncmVwIEJJR2VuRGlhblN5UyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGw7IHRoZW4KKwkgICAgICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKKwkgICAgZmkKKwkgICAgaWYgZ3JlcCBMaVRUbGVFbkRpYW4gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgIiRhY19jdl9jX2JpZ2VuZGlhbiIgPSB1bmtub3duOyB0aGVuCisJCWFjX2N2X2NfYmlnZW5kaWFuPW5vCisJICAgICAgZWxzZQorCQkjIGZpbmRpbmcgYm90aCBzdHJpbmdzIGlzIHVubGlrZWx5IHRvIGhhcHBlbiwgYnV0IHdobyBrbm93cz8KKwkJYWNfY3ZfY19iaWdlbmRpYW49dW5rbm93bgorCSAgICAgIGZpCisJICAgIGZpCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyRhY19pbmNsdWRlc19kZWZhdWx0CitpbnQKK21haW4gKCkKK3sKKworCSAgICAgLyogQXJlIHdlIGxpdHRsZSBvciBiaWcgZW5kaWFuPyAgRnJvbSBIYXJiaXNvbiZTdGVlbGUuICAqLworCSAgICAgdW5pb24KKwkgICAgIHsKKwkgICAgICAgbG9uZyBpbnQgbDsKKwkgICAgICAgY2hhciBjW3NpemVvZiAobG9uZyBpbnQpXTsKKwkgICAgIH0gdTsKKwkgICAgIHUubCA9IDE7CisJICAgICByZXR1cm4gdS5jW3NpemVvZiAobG9uZyBpbnQpIC0gMV0gPT0gMTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY19iaWdlbmRpYW49bm8KK2Vsc2UKKyAgYWNfY3ZfY19iaWdlbmRpYW49eWVzCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgIGZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jX2JpZ2VuZGlhbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NfYmlnZW5kaWFuIiA+JjY7IH0KKyBjYXNlICRhY19jdl9jX2JpZ2VuZGlhbiBpbiAjKAorICAgeWVzKQorICAgICAkYXNfZWNobyAiI2RlZmluZSBXT1JEU19CSUdFTkRJQU4gMSIgPj5jb25mZGVmcy5oCis7OyAjKAorICAgbm8pCisgICAgICA7OyAjKAorICAgdW5pdmVyc2FsKQorCiskYXNfZWNobyAiI2RlZmluZSBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgOzsgIygKKyAgICopCisgICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bmtub3duIGVuZGlhbm5lc3MKKyBwcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgIiRMSU5FTk8iIDUgOzsKKyBlc2FjCisKK2lmIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IG5vOyB0aGVuCisgIEJVSUxEX0NDPSIkQlVJTERfQ0MiIENQUD0iJENQUCIgL2Jpbi9zaCAkYWNfYXV4X2Rpci9wYXJzZS10eXBlcy5zaAorZWxzZQorICBDUk9TU19DT01QSUxFPSIxIiBCVUlMRF9DQz0iJEJVSUxEX0NDIiBDUFA9IiRDUFAiIC9iaW4vc2ggJGFjX2F1eF9kaXIvcGFyc2UtdHlwZXMuc2gKK2ZpCitBU01fVFlQRVNfSEVBREVSPS4vYXNtX3R5cGVzLmgKKworZWNobyAiLyogVGhlc2UgZGVmaW5lcyBhcmUgbmVlZGVkIGZvciB0aGUgcHVibGljIGV4dDJmcy5oIGhlYWRlciBmaWxlICovIiBcCisgICAgID4gcHVibGljX2NvbmZpZy5oCitpZiBncmVwIEhBVkVfU1lTX1RZUEVTX0ggY29uZmRlZnMuaCA+IHRtcF9jb25maWcuJCQ7IHRoZW4KKyAgdW5pcSB0bXBfY29uZmlnLiQkID4+IHB1YmxpY19jb25maWcuaAorZWxzZQorICBlY2hvICIjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSCIgPj4gcHVibGljX2NvbmZpZy5oCitmaQoraWYgZ3JlcCBXT1JEU19CSUdFTkRJQU4gY29uZmRlZnMuaCA+IHRtcF9jb25maWcuJCQ7IHRoZW4KKyAgdW5pcSB0bXBfY29uZmlnLiQkID4+IHB1YmxpY19jb25maWcuaAorZWxzZQorICBlY2hvICIjdW5kZWYgV09SRFNfQklHRU5ESUFOIiA+PiBwdWJsaWNfY29uZmlnLmgKK2ZpCitybSAtZiB0bXBfY29uZmlnLiQkCitQVUJMSUNfQ09ORklHX0hFQURFUj0uL3B1YmxpY19jb25maWcuaAorCitmb3IgYWNfaGVhZGVyIGluIGludHR5cGVzLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImludHR5cGVzLmgiICJhY19jdl9oZWFkZXJfaW50dHlwZXNfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfaW50dHlwZXNfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiaW50cHRyX3QiICJhY19jdl90eXBlX2ludHB0cl90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50cHRyX3QiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9JTlRQVFJfVCAxCitfQUNFT0YKKworCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgc3RydWN0IHN0YXQgaGFzIGEgc3RfZmxhZ3MgZmllbGQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBzdHJ1Y3Qgc3RhdCBoYXMgYSBzdF9mbGFncyBmaWVsZC4uLiAiID4mNjsgfQoraWYgJHtlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CitpbnQKK21haW4gKCkKK3sKK3N0cnVjdCBzdGF0IHN0YXQ7IHN0YXQuc3RfZmxhZ3MgPSAwOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3M9eWVzCitlbHNlCisgIGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3M9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZTJmc3Byb2dzX2N2X3N0cnVjdF9zdF9mbGFncyIgPiY1CiskYXNfZWNobyAiJGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3MiID4mNjsgfQoraWYgdGVzdCAiJGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3MiID0geWVzOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzdF9mbGFncyBmaWVsZCBpcyB1c2VmdWwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBzdF9mbGFncyBmaWVsZCBpcyB1c2VmdWwuLi4gIiA+JjY7IH0KKyAgaWYgJHtlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CitpbnQKK21haW4gKCkKK3sKK3N0cnVjdCBzdGF0IHN0YXQ7IHN0YXQuc3RfZmxhZ3MgfD0gVUZfSU1NVVRBQkxFOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3NfaW1tdXQ9eWVzCitlbHNlCisgIGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3NfaW1tdXQ9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0IiA+JjUKKyRhc19lY2hvICIkZTJmc3Byb2dzX2N2X3N0cnVjdF9zdF9mbGFnc19pbW11dCIgPiY2OyB9CisgIGlmIHRlc3QgIiRlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0IiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1NUQVRfRkxBR1MgMSIgPj5jb25mZGVmcy5oCisKKyAgZmkKK2ZpCithY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBzb2NrYWRkciIgInNhX2xlbiIgImFjX2N2X21lbWJlcl9zdHJ1Y3Rfc29ja2FkZHJfc2FfbGVuIiAiI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorIgoraWYgdGVzdCAieCRhY19jdl9tZW1iZXJfc3RydWN0X3NvY2thZGRyX3NhX2xlbiIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX1NBX0xFTiAxCitfQUNFT0YKKworZmkKKworaWYgdGVzdCAtbiAiJEJMS0lEX0NNVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGJsa2lkX3Byb2JlX2FsbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIGJsa2lkX3Byb2JlX2FsbC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9zZWFyY2hfYmxraWRfcHJvYmVfYWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTPSRMSUJTCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgYmxraWRfcHJvYmVfYWxsICgpOworaW50CittYWluICgpCit7CityZXR1cm4gYmxraWRfcHJvYmVfYWxsICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitmb3IgYWNfbGliIGluICcnIGJsa2lkOyBkbworICBpZiB0ZXN0IC16ICIkYWNfbGliIjsgdGhlbgorICAgIGFjX3Jlcz0ibm9uZSByZXF1aXJlZCIKKyAgZWxzZQorICAgIGFjX3Jlcz0tbCRhY19saWIKKyAgICBMSUJTPSItbCRhY19saWIgICRhY19mdW5jX3NlYXJjaF9zYXZlX0xJQlMiCisgIGZpCisgIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc2VhcmNoX2Jsa2lkX3Byb2JlX2FsbD0kYWNfcmVzCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0CisgIGlmICR7YWNfY3Zfc2VhcmNoX2Jsa2lkX3Byb2JlX2FsbCs6fSBmYWxzZTsgdGhlbiA6CisgIGJyZWFrCitmaQorZG9uZQoraWYgJHthY19jdl9zZWFyY2hfYmxraWRfcHJvYmVfYWxsKzp9IGZhbHNlOyB0aGVuIDoKKworZWxzZQorICBhY19jdl9zZWFyY2hfYmxraWRfcHJvYmVfYWxsPW5vCitmaQorcm0gY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfZnVuY19zZWFyY2hfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zZWFyY2hfYmxraWRfcHJvYmVfYWxsIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2VhcmNoX2Jsa2lkX3Byb2JlX2FsbCIgPiY2OyB9CithY19yZXM9JGFjX2N2X3NlYXJjaF9ibGtpZF9wcm9iZV9hbGwKK2lmIHRlc3QgIiRhY19yZXMiICE9IG5vOyB0aGVuIDoKKyAgdGVzdCAiJGFjX3JlcyIgPSAibm9uZSByZXF1aXJlZCIgfHwgTElCUz0iJGFjX3JlcyAkTElCUyIKKworZmkKKworZmkKK2lmIHRlc3QgLW4gIiRETE9QRU5fTElCIiA7IHRoZW4KKyAgIGFjX2N2X2Z1bmNfZGxvcGVuPXllcworZmkKK2ZvciBhY19mdW5jIGluICAJX19zZWN1cmVfZ2V0ZW52IAlhZGRfa2V5IAliYWNrdHJhY2UgCWJsa2lkX3Byb2JlX2dldF90b3BvbG9neSAJYmxraWRfcHJvYmVfZW5hYmxlX3BhcnRpdGlvbnMgCWNoZmxhZ3MgCWRsb3BlbiAJZmFkdmlzZTY0IAlmYWxsb2NhdGUgCWZhbGxvY2F0ZTY0IAlmY2hvd24gCWZkYXRhc3luYyAJZnN0YXQ2NCAJZnRydW5jYXRlNjQgCWZ1dGltZXMgCWdldGN3ZCAJZ2V0ZHRhYmxlc2l6ZSAJZ2V0bW50aW5mbyAJZ2V0cHd1aWRfciAJZ2V0cmxpbWl0IAlnZXRydXNhZ2UgCWpyYW5kNDggCWtleWN0bCAJbGxpc3R4YXR0ciAJbGxzZWVrIAlsc2VlazY0IAltYWxsaW5mbyAJbWJzdG93Y3MgCW1lbWFsaWduIAltZW1wY3B5IAltbWFwIAltc3luYyAJbmFub3NsZWVwIAlvcGVuNjQgCXBhdGhjb25mIAlwb3NpeF9mYWR2aXNlIAlwb3NpeF9mYWR2aXNlNjQgCXBvc2l4X21lbWFsaWduIAlwcmN0bCAJcHJlYWQgCXB3cml0ZSAJcHJlYWQ2NCAJcHdyaXRlNjQgCXNlY3VyZV9nZXRlbnYgCXNldG1udGVudCAJc2V0cmVzZ2lkIAlzZXRyZXN1aWQgCXNucHJpbnRmIAlzcmFuZG9tIAlzdHBjcHkgCXN0cmNhc2VjbXAgCXN0cmR1cCAJc3RybmxlbiAJc3RycHRpbWUgCXN0cnRvdWxsIAlzeW5jX2ZpbGVfcmFuZ2UgCXN5c2NvbmYgCXVzbGVlcCAJdXRpbWUgCXV0aW1lcyAJdmFsbG9jCitkbyA6CisgIGFzX2FjX3Zhcj1gJGFzX2VjaG8gImFjX2N2X2Z1bmNfJGFjX2Z1bmMiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAiJGFjX2Z1bmMiICIkYXNfYWNfdmFyIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY192YXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZmkKK2RvbmUKKworU09DS0VUX0xJQj0nJworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc29ja2V0IGluIC1sc29ja2V0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzb2NrZXQgaW4gLWxzb2NrZXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX3NvY2tldF9zb2NrZXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHNvY2tldCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgc29ja2V0ICgpOworaW50CittYWluICgpCit7CityZXR1cm4gc29ja2V0ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9zb2NrZXRfc29ja2V0PXllcworZWxzZQorICBhY19jdl9saWJfc29ja2V0X3NvY2tldD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc29ja2V0X3NvY2tldCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9zb2NrZXRfc29ja2V0IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3NvY2tldF9zb2NrZXQiID0geHllczsgdGhlbiA6CisgIFNPQ0tFVF9MSUI9LWxzb2NrZXQKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbWFnaWNfZmlsZSBpbiAtbG1hZ2ljIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWdpY19maWxlIGluIC1sbWFnaWMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX21hZ2ljX21hZ2ljX2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbG1hZ2ljICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBtYWdpY19maWxlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gbWFnaWNfZmlsZSAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfbWFnaWNfbWFnaWNfZmlsZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX21hZ2ljX21hZ2ljX2ZpbGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX21hZ2ljX21hZ2ljX2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfbWFnaWNfbWFnaWNfZmlsZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9tYWdpY19tYWdpY19maWxlIiA9IHh5ZXM7IHRoZW4gOgorICBNQUdJQ19MSUI9LWxtYWdpYworZm9yIGFjX2hlYWRlciBpbiBtYWdpYy5oCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJtYWdpYy5oIiAiYWNfY3ZfaGVhZGVyX21hZ2ljX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX21hZ2ljX2giID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9NQUdJQ19IIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKK2ZpCisKK2lmIHRlc3QgIiRhY19jdl9mdW5jX2Rsb3BlbiIgPSB5ZXMgOyB0aGVuCisgICBNQUdJQ19MSUI9JERMT1BFTl9MSUIKK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY2xvY2tfZ2V0dGltZSBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY2xvY2tfZ2V0dGltZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGNsb2NrX2dldHRpbWUgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWU9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPSB4eWVzOyB0aGVuIDoKKyAgQ0xPQ0tfR0VUVElNRV9MSUI9LWxydAorZmkKKworCitGVVNFX0NNVD0KK0ZVU0VfTElCPQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWZ1c2UyZnMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfZnVzZTJmcytzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX2Z1c2UyZnM7IGlmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUZVU0VfQ01UPSIjIgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBEaXNhYmxpbmcgZnVzZTJmcyIgPiY1CiskYXNfZWNobyAiRGlzYWJsaW5nIGZ1c2UyZnMiID4mNjsgfQorZWxzZQorCWZvciBhY19oZWFkZXIgaW4gcHRocmVhZC5oIGZ1c2UuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTCTY0CisjZGVmaW5lIEZVU0VfVVNFX1ZFUlNJT04gMjkKKyIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZWxzZQorICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJDYW5ub3QgZmluZCBmdXNlMmZzIGhlYWRlcnMuCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorZmkKKworZG9uZQorCisKKwljYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjZGVmaW5lIEZVU0VfVVNFX1ZFUlNJT04gMjkKKyNpZmRlZiBfX2xpbnV4X18KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L2ZhbGxvYy5oPgorI2luY2x1ZGUgPGxpbnV4L3hhdHRyLmg+CisjZW5kaWYKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY3BwICIkTElORU5PIjsgdGhlbiA6CisKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiQ2Fubm90IGZpbmQgZnVzZTJmcyBMaW51eCBoZWFkZXJzLgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBmdXNlX21haW4gaW4gLWxvc3hmdXNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBmdXNlX21haW4gaW4gLWxvc3hmdXNlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9vc3hmdXNlX2Z1c2VfbWFpbis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sb3N4ZnVzZSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgZnVzZV9tYWluICgpOworaW50CittYWluICgpCit7CityZXR1cm4gZnVzZV9tYWluICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9vc3hmdXNlX2Z1c2VfbWFpbj15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9vc3hmdXNlX2Z1c2VfbWFpbiIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9vc3hmdXNlX2Z1c2VfbWFpbiIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9vc3hmdXNlX2Z1c2VfbWFpbiIgPSB4eWVzOyB0aGVuIDoKKyAgRlVTRV9MSUI9LWxvc3hmdXNlCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZ1c2VfbWFpbiBpbiAtbGZ1c2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGZ1c2VfbWFpbiBpbiAtbGZ1c2UuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2Z1c2VfZnVzZV9tYWluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxmdXNlICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBmdXNlX21haW4gKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBmdXNlX21haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX2Z1c2VfZnVzZV9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfZnVzZV9mdXNlX21haW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2Z1c2VfZnVzZV9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX2Z1c2VfZnVzZV9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2Z1c2VfZnVzZV9tYWluIiA9IHh5ZXM7IHRoZW4gOgorICBGVVNFX0xJQj0tbGZ1c2UKK2Vsc2UKKyAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciAkPyAiQ2Fubm90IGZpbmQgZnVzZSBsaWJyYXJ5LgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2ZpCisKK2ZpCisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogRW5hYmxpbmcgZnVzZTJmcyIgPiY1CiskYXNfZWNobyAiRW5hYmxpbmcgZnVzZTJmcyIgPiY2OyB9CitmaQorCitlbHNlCisgIGZvciBhY19oZWFkZXIgaW4gcHRocmVhZC5oIGZ1c2UuaAorZG8gOgorICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCithY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTCTY0CisjZGVmaW5lIEZVU0VfVVNFX1ZFUlNJT04gMjkKKyNpZmRlZiBfX2xpbnV4X18KKyMgaW5jbHVkZSA8bGludXgvZnMuaD4KKyMgaW5jbHVkZSA8bGludXgvZmFsbG9jLmg+CisjIGluY2x1ZGUgPGxpbnV4L3hhdHRyLmg+CisjZW5kaWYKKyIKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfSGVhZGVyIlwiID0geCJ5ZXMiOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBgJGFzX2VjaG8gIkhBVkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCitfQUNFT0YKKworZWxzZQorICBGVVNFX0NNVD0iIyIKK2ZpCisKK2RvbmUKKworaWYgdGVzdCAteiAiJEZVU0VfQ01UIgordGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZ1c2VfbWFpbiBpbiAtbG9zeGZ1c2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGZ1c2VfbWFpbiBpbiAtbG9zeGZ1c2UuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxvc3hmdXNlICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBmdXNlX21haW4gKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBmdXNlX21haW4gKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluPXllcworZWxzZQorICBhY19jdl9saWJfb3N4ZnVzZV9mdXNlX21haW49bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX29zeGZ1c2VfZnVzZV9tYWluIiA9IHh5ZXM7IHRoZW4gOgorICBGVVNFX0xJQj0tbG9zeGZ1c2UKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZnVzZV9tYWluIGluIC1sZnVzZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZnVzZV9tYWluIGluIC1sZnVzZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfZnVzZV9mdXNlX21haW4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGZ1c2UgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGZ1c2VfbWFpbiAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGZ1c2VfbWFpbiAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfZnVzZV9mdXNlX21haW49eWVzCitlbHNlCisgIGFjX2N2X2xpYl9mdXNlX2Z1c2VfbWFpbj1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZnVzZV9mdXNlX21haW4iID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfZnVzZV9mdXNlX21haW4iID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfZnVzZV9mdXNlX21haW4iID0geHllczsgdGhlbiA6CisgIEZVU0VfTElCPS1sZnVzZQorZWxzZQorICBGVVNFX0NNVD0iIyIKK2ZpCisKK2ZpCisKK2ZpCitpZiB0ZXN0IC16ICIkRlVTRV9DTVQiCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IEVuYWJsaW5nIGZ1c2UyZnMgYnkgZGVmYXVsdC4iID4mNQorJGFzX2VjaG8gIkVuYWJsaW5nIGZ1c2UyZnMgYnkgZGVmYXVsdC4iID4mNjsgfQorZmkKKworZmkKKworCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG9wdHJlc2V0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBvcHRyZXNldC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9oYXZlX29wdHJlc2V0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitfQUNFT0YKK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKyAgJEVHUkVQICJvcHRyZXNldCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgYWNfY3ZfaGF2ZV9vcHRyZXNldD15ZXMKK2Vsc2UKKyAgYWNfY3ZfaGF2ZV9vcHRyZXNldD1ubworZmkKK3JtIC1mIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9oYXZlX29wdHJlc2V0IiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfaGF2ZV9vcHRyZXNldCIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9oYXZlX29wdHJlc2V0ID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfT1BUUkVTRVQgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKK1NFTV9JTklUX0xJQj0nJworYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAic2VtX2luaXQiICJhY19jdl9mdW5jX3NlbV9pbml0IgoraWYgdGVzdCAieCRhY19jdl9mdW5jX3NlbV9pbml0IiA9IHh5ZXM7IHRoZW4gOgorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNlbV9pbml0IGluIC1scHRocmVhZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2VtX2luaXQgaW4gLWxwdGhyZWFkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9wdGhyZWFkX3NlbV9pbml0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWxwdGhyZWFkICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBzZW1faW5pdCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHNlbV9pbml0ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9wdGhyZWFkX3NlbV9pbml0PXllcworZWxzZQorICBhY19jdl9saWJfcHRocmVhZF9zZW1faW5pdD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcHRocmVhZF9zZW1faW5pdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9wdGhyZWFkX3NlbV9pbml0IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3B0aHJlYWRfc2VtX2luaXQiID0geHllczsgdGhlbiA6CisgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfU0VNX0lOSVQgMSIgPj5jb25mZGVmcy5oCisKKyAgCVNFTV9JTklUX0xJQj0tbHB0aHJlYWQKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VtX2luaXQgaW4gLWxydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2VtX2luaXQgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfc2VtX2luaXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBzZW1faW5pdCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHNlbV9pbml0ICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9zZW1faW5pdD15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X3NlbV9pbml0PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9ydF9zZW1faW5pdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9zZW1faW5pdCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9zZW1faW5pdCIgPSB4eWVzOyB0aGVuIDoKKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TRU1fSU5JVCAxIiA+PmNvbmZkZWZzLmgKKworICAJU0VNX0lOSVRfTElCPS1scnQKK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VtX2luaXQgaW4gLWxwb3NpeDQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHNlbV9pbml0IGluIC1scG9zaXg0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9wb3NpeDRfc2VtX2luaXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHBvc2l4NCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgc2VtX2luaXQgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBzZW1faW5pdCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfcG9zaXg0X3NlbV9pbml0PXllcworZWxzZQorICBhY19jdl9saWJfcG9zaXg0X3NlbV9pbml0PW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9wb3NpeDRfc2VtX2luaXQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfcG9zaXg0X3NlbV9pbml0IiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3Bvc2l4NF9zZW1faW5pdCIgPSB4eWVzOyB0aGVuIDoKKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TRU1fSU5JVCAxIiA+PmNvbmZkZWZzLmgKKworICAJU0VNX0lOSVRfTElCPS1scG9zaXg0CitmaQorCitmaQorCitmaQorCitmaQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB1bmlmaWVkIGRpZmYgb3B0aW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB1bmlmaWVkIGRpZmYgb3B0aW9uLi4uICIgPiY2OyB9CitpZiBkaWZmIC11ICQwICQwID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisgICBVTklfRElGRl9PUFRTPS11CitlbHNlCisgICBVTklfRElGRl9PUFRTPS1jCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRVTklfRElGRl9PUFRTIiA+JjUKKyRhc19lY2hvICIkVU5JX0RJRkZfT1BUUyIgPiY2OyB9CisKK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqKQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0VYVDJfSU9DVExTIDEiID4+Y29uZmRlZnMuaAorCisJOzsKK2VzYWMKK0xJTlVYX0NNVD0iIyIKK0NZR1dJTl9DTVQ9IiMiCitVTklYX0NNVD0KK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqKQorCUxJTlVYX0NNVD0KKwk7OworY3lnd2luKQorCUNZR1dJTl9DTVQ9CisJVU5JWF9DTVQ9IiMiCisJOzsKK2VzYWMKKworCisKK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpCisJaWYgdGVzdCAiJHByZWZpeCIgPSBOT05FIC1hICIkcm9vdF9wcmVmaXgiID0gTk9ORSA7IHRoZW4KKwkJcm9vdF9wcmVmaXg9IiI7CisJCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBPbiAkaG9zdF9vcyBzeXN0ZW1zLCByb290X3ByZWZpeCBkZWZhdWx0cyB0byAnJyIgPiY1CiskYXNfZWNobyAiT24gJGhvc3Rfb3Mgc3lzdGVtcywgcm9vdF9wcmVmaXggZGVmYXVsdHMgdG8gJyciID4mNjsgfQorCWZpCisJOzsKK2VzYWMKK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpCisJaWYgdGVzdCAiJHByZWZpeCIgPSBOT05FIDsgdGhlbgorCQlwcmVmaXg9Ii91c3IiOworCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogT24gJGhvc3Rfb3Mgc3lzdGVtcywgcHJlZml4IGRlZmF1bHRzIHRvIC91c3IiID4mNQorJGFzX2VjaG8gIk9uICRob3N0X29zIHN5c3RlbXMsIHByZWZpeCBkZWZhdWx0cyB0byAvdXNyIiA+JjY7IH0KKwkJaWYgdGVzdCAiJG1hbmRpciIgPSAnJHtwcmVmaXh9L21hbicgOyB0aGVuCisJCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogLi4uYW5kIG1hbmRpciBkZWZhdWx0cyB0byAvdXNyL3NoYXJlL21hbiIgPiY1CiskYXNfZWNobyAiLi4uYW5kIG1hbmRpciBkZWZhdWx0cyB0byAvdXNyL3NoYXJlL21hbiIgPiY2OyB9CisJCQltYW5kaXI9L3Vzci9zaGFyZS9tYW4KKwkJZmkKKwlmaQorOzsKK2VzYWMKK2lmIHRlc3QgIiRyb290X3ByZWZpeCIgPSBOT05FIDsgdGhlbgorCWlmIHRlc3QgIiRwcmVmaXgiID0gTk9ORSA7IHRoZW4KKwkJcm9vdF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKwllbHNlCisJCXJvb3RfcHJlZml4PSIkcHJlZml4IgorCWZpCisJcm9vdF9iaW5kaXI9JGJpbmRpcgorCXJvb3Rfc2JpbmRpcj0kc2JpbmRpcgorCXJvb3RfbGliZGlyPSRsaWJkaXIKKwlyb290X3N5c2NvbmZkaXI9JHN5c2NvbmZkaXIKK2Vsc2UKKwlyb290X2JpbmRpcj0nJHtyb290X3ByZWZpeH0vYmluJworCXJvb3Rfc2JpbmRpcj0nJHtyb290X3ByZWZpeH0vc2JpbicKKwlyb290X2xpYmRpcj0nJHtyb290X3ByZWZpeH0vbGliJworCXJvb3Rfc3lzY29uZmRpcj0nJHtyb290X3ByZWZpeH0vZXRjJworZmkKK2lmIHRlc3QgIiRiaW5kaXIiICE9ICcke2V4ZWNfcHJlZml4fS9iaW4nOyB0aGVuCisgICAgcm9vdF9iaW5kaXI9JGJpbmRpcgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBTZXR0aW5nIHJvb3RfYmluZGlyIHRvICRyb290X2JpbmRpciIgPiY1CiskYXNfZWNobyAiU2V0dGluZyByb290X2JpbmRpciB0byAkcm9vdF9iaW5kaXIiID4mNjsgfQorZmkKK2lmIHRlc3QgIiRzYmluZGlyIiAhPSAnJHtleGVjX3ByZWZpeH0vc2Jpbic7IHRoZW4KKyAgICByb290X3NiaW5kaXI9JHNiaW5kaXIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogU2V0dGluZyByb290X3NiaW5kaXIgdG8gJHJvb3Rfc2JpbmRpciIgPiY1CiskYXNfZWNobyAiU2V0dGluZyByb290X3NiaW5kaXIgdG8gJHJvb3Rfc2JpbmRpciIgPiY2OyB9CitmaQoraWYgdGVzdCAiJGxpYmRpciIgIT0gJyR7ZXhlY19wcmVmaXh9L2xpYic7IHRoZW4KKyAgICByb290X2xpYmRpcj0kbGliZGlyCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IFNldHRpbmcgcm9vdF9saWJkaXIgdG8gJHJvb3RfbGliZGlyIiA+JjUKKyRhc19lY2hvICJTZXR0aW5nIHJvb3RfbGliZGlyIHRvICRyb290X2xpYmRpciIgPiY2OyB9CitmaQoraWYgdGVzdCAiJHN5c2NvbmZkaXIiICE9ICcke3ByZWZpeH0vZXRjJzsgdGhlbgorICAgIHJvb3Rfc3lzY29uZmRpcj0kc3lzY29uZmRpcgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBTZXR0aW5nIHJvb3Rfc3lzY29uZmRpciB0byAkcm9vdF9zeXNjb25mZGlyIiA+JjUKKyRhc19lY2hvICJTZXR0aW5nIHJvb3Rfc3lzY29uZmRpciB0byAkcm9vdF9zeXNjb25mZGlyIiA+JjY7IH0KK2ZpCisKKworCisKKworCisjIENoZWNrIHdoZXRoZXIgLS13aXRoLW11bHRpYXJjaCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbXVsdGlhcmNoK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgd2l0aHZhbD0kd2l0aF9tdWx0aWFyY2g7IGlmIHRlc3QgIiR3aXRodmFsIiA9ICJsaWI2NCI7IHRoZW4KKyAgICBsaWJkaXI9L3Vzci9saWI2NAorICAgIHJvb3RfbGliZGlyPS9saWI2NAorZWxzZQorICAgIGxpYmRpcj0kbGliZGlyLyR3aXRodmFsCisgICAgcm9vdF9saWJkaXI9JHJvb3RfbGliZGlyLyR3aXRodmFsCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHdlIGNhbiBsaW5rIHdpdGggLXN0YXRpYyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHdlIGNhbiBsaW5rIHdpdGggLXN0YXRpYy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9lMmZzcHJvZ3NfdXNlX3N0YXRpYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIFNBVkVfTERGTEFHUz0kTERGTEFHUzsgTERGTEFHUz0iJExERkxBR1NfU1RBVElDIC1zdGF0aWMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworZmZsdXNoKHN0ZG91dCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfZTJmc3Byb2dzX3VzZV9zdGF0aWM9eWVzCitlbHNlCisgIGFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xERkxBR1M9JFNBVkVfTERGTEFHUworZmkKKworY2FzZSAiJGhvc3Rfb3MiIGluCitzb2xhcmlzMi4qKQorCWFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljPW5vCis7OworZXNhYworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9lMmZzcHJvZ3NfdXNlX3N0YXRpYyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljIiA+JjY7IH0KK2lmIHRlc3QgJGFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljID0geWVzOyB0aGVuCisJTERGTEFHU19TVEFUSUM9IiRMREZMQUdTX1NUQVRJQyAtc3RhdGljIgorZmkKKworY2FzZSAiJGhvc3Rfb3MiIGluCitkYXJ3aW4qKQorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBVc2luZyBBcHBsZSBEYXJ3aW4gLyBHTlUgbGliaW50bCB3b3JrYXJvdW5kIiA+JjUKKyRhc19lY2hvICJVc2luZyBBcHBsZSBEYXJ3aW4gLyBHTlUgbGliaW50bCB3b3JrYXJvdW5kIiA+JjY7IH0KKworJGFzX2VjaG8gIiNkZWZpbmUgX0lOVExfUkVESVJFQ1RfTUFDUk9TIDEiID4+Y29uZmRlZnMuaAorCisJOzsKK2VzYWMKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzIDsgdGhlbgorICBET19URVNUX1NVSVRFPQorZWxzZQorICBET19URVNUX1NVSVRFPWNoZWNrCitmaQorCitJTkNMVURFUz0nLUkuIC1JJCh0b3BfYnVpbGRkaXIpL2xpYiAtSSQodG9wX3NyY2RpcikvbGliJworaWYgdGVzdCAtbiAiJENQUEZMQUdTIiA7IHRoZW4KKwlJTkNMVURFUz0iJElOQ0xVREVTICRDUFBGTEFHUyIKK2ZpCitpZiB0ZXN0ICIkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0gInllcyIgOyB0aGVuCisJSU5DTFVERVM9JElOQ0xVREVTJyAtSSQodG9wX2J1aWxkZGlyKS9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9pbnRsJworZmkKK2lmIHRlc3QgLW4gIiRXSVRIX0RJRVRfTElCQyIgOyB0aGVuCisJSU5DTFVERVM9IiRJTkNMVURFUyAtRF9SRUVOVFJBTlQiCitmaQorCisKKyAgICAgICAgTUtJTlNUQUxMRElSUz0KKyAgaWYgdGVzdCAtbiAiJGFjX2F1eF9kaXIiOyB0aGVuCisgICAgY2FzZSAiJGFjX2F1eF9kaXIiIGluCisgICAgICAvKikgTUtJTlNUQUxMRElSUz0iJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyIgOzsKKyAgICAgICopIE1LSU5TVEFMTERJUlM9IlwkKHRvcF9idWlsZGRpcikvJGFjX2F1eF9kaXIvbWtpbnN0YWxsZGlycyIgOzsKKyAgICBlc2FjCisgIGZpCisgIGlmIHRlc3QgLXogIiRNS0lOU1RBTExESVJTIjsgdGhlbgorICAgIE1LSU5TVEFMTERJUlM9IlwkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMiCisgIGZpCisKKworaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0gbm87IHRoZW4KKyAgIEJVSUxEX0NGTEFHUz0iJENGTEFHUyAkQ1BQRkxBR1MgJElOQ0xVREVTIC1ESEFWRV9DT05GSUdfSCIKKyAgIEJVSUxEX0xERkxBR1M9IiRMREZMQUdTIgorZmkKKworCitDRkxBR1NfU0hMSUI9JHtDRkxBR1NfU0hMSUI6LSRDRkxBR1N9CitDRkxBR1NfU1RMSUI9JHtDRkxBR1NfU1RMSUI6LSRDRkxBR1N9CitMREZMQUdTX1NITElCPSR7TERGTEFHU19TSExJQjotJExERkxBR1N9CisKKworCit0ZXN0IC1kIGxpYiB8fCBta2RpciBsaWIKK3Rlc3QgLWQgaW5jbHVkZSB8fCBta2RpciBpbmNsdWRlCit0ZXN0IC1kIGluY2x1ZGUvbGludXggfHwgbWtkaXIgaW5jbHVkZS9saW51eAordGVzdCAtZCBpbmNsdWRlL2FzbSB8fCBta2RpciBpbmNsdWRlL2FzbQoraWYgdGVzdCAteiAiJFVVSURfQ01UIiA7IHRoZW4KKwl1dWlkX291dF9saXN0PSJsaWIvdXVpZC9NYWtlZmlsZSBsaWIvdXVpZC91dWlkLnBjIFwKKwkJbGliL3V1aWQvdXVpZF90eXBlcy5oIgorZmkKK2lmIHRlc3QgLXogIiRCTEtJRF9DTVQiIDsgdGhlbgorCWJsa2lkX291dF9saXN0PSJsaWIvYmxraWQvTWFrZWZpbGUgbGliL2Jsa2lkL2Jsa2lkLnBjIFwKKwkJbGliL2Jsa2lkL2Jsa2lkX3R5cGVzLmgiCitmaQorZm9yIGkgaW4gTUNPTkZJRyBNYWtlZmlsZSBlMmZzcHJvZ3Muc3BlYyBcCisJdXRpbC9NYWtlZmlsZSB1dGlsL3N1YnN0LmNvbmYgdXRpbC9nZW4tdGFyYmFsbCB1dGlsL2luc3RhbGwtc3ltbGluayBcCisJbGliL2V0L01ha2VmaWxlIGxpYi9zcy9NYWtlZmlsZSBsaWIvZTJwL01ha2VmaWxlIFwKKwlsaWIvZXh0MmZzL01ha2VmaWxlIGxpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKwkkdXVpZF9vdXRfbGlzdCAkYmxraWRfb3V0X2xpc3QgbGliL3N1cHBvcnQvTWFrZWZpbGUgXAorCWxpYi9zcy9zcy5wYyBsaWIvZXQvY29tX2Vyci5wYyBsaWIvZTJwL2UycC5wYyBsaWIvZXh0MmZzL2V4dDJmcy5wYyBcCisJbWlzYy9NYWtlZmlsZSBleHQyZWQvTWFrZWZpbGUgZTJmc2NrL01ha2VmaWxlIFwKKwlkZWJ1Z2ZzL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL3Byb2dzL01ha2VmaWxlIFwKKwlyZXNpemUvTWFrZWZpbGUgZG9jL01ha2VmaWxlIGludGwvTWFrZWZpbGUgXAorCWludGwvbGliZ251aW50bC5oIHBvL01ha2VmaWxlLmluIDsgZG8KKwlpZiB0ZXN0IC1kIGBkaXJuYW1lICR7c3JjZGlyfS8kaWAgOyB0aGVuCisJCW91dGxpc3Q9IiRvdXRsaXN0ICRpIgorCWZpCitkb25lCithY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgJG91dGxpc3QiCisKK2NhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgorIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCisjIHRlc3RzIHJ1biBvbiB0aGlzIHN5c3RlbSBzbyB0aGV5IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBjb25maWd1cmUKKyMgc2NyaXB0cyBhbmQgY29uZmlndXJlIHJ1bnMsIHNlZSBjb25maWd1cmUncyBvcHRpb24gLS1jb25maWctY2FjaGUuCisjIEl0IGlzIG5vdCB1c2VmdWwgb24gb3RoZXIgc3lzdGVtcy4gIElmIGl0IGNvbnRhaW5zIHJlc3VsdHMgeW91IGRvbid0CisjIHdhbnQgdG8ga2VlcCwgeW91IG1heSByZW1vdmUgb3IgZWRpdCBpdC4KKyMKKyMgY29uZmlnLnN0YXR1cyBvbmx5IHBheXMgYXR0ZW50aW9uIHRvIHRoZSBjYWNoZSBmaWxlIGlmIHlvdSBnaXZlIGl0CisjIHRoZSAtLXJlY2hlY2sgb3B0aW9uIHRvIHJlcnVuIGNvbmZpZ3VyZS4KKyMKKyMgYGFjX2N2X2Vudl9mb28nIHZhcmlhYmxlcyAoc2V0IG9yIHVuc2V0KSB3aWxsIGJlIG92ZXJyaWRkZW4gd2hlbgorIyBsb2FkaW5nIHRoaXMgZmlsZSwgb3RoZXIgKnVuc2V0KiBgYWNfY3ZfZm9vJyB3aWxsIGJlIGFzc2lnbmVkIHRoZQorIyBmb2xsb3dpbmcgdmFsdWVzLgorCitfQUNFT0YKKworIyBUaGUgZm9sbG93aW5nIHdheSBvZiB3cml0aW5nIHRoZSBjYWNoZSBtaXNoYW5kbGVzIG5ld2xpbmVzIGluIHZhbHVlcywKKyMgYnV0IHdlIGtub3cgb2Ygbm8gd29ya2Fyb3VuZCB0aGF0IGlzIHNpbXBsZSwgcG9ydGFibGUsIGFuZCBlZmZpY2llbnQuCisjIFNvLCB3ZSBraWxsIHZhcmlhYmxlcyBjb250YWluaW5nIG5ld2xpbmVzLgorIyBVbHRyaXggc2ggc2V0IHdyaXRlcyB0byBzdGRlcnIgYW5kIGNhbid0IGJlIHJlZGlyZWN0ZWQgZGlyZWN0bHksCisjIGFuZCBzZXRzIHRoZSBoaWdoIGJpdCBpbiB0aGUgY2FjaGUgZmlsZSB1bmxlc3Mgd2UgYXNzaWduIHRvIHRoZSB2YXJzLgorKAorICBmb3IgYWNfdmFyIGluIGAoc2V0KSAyPiYxIHwgc2VkIC1uICdzL15cKFthLXpBLVpfXVthLXpBLVowLTlfXSpcKT0uKi9cMS9wJ2A7IGRvCisgICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCisgICAgY2FzZSAkYWNfdmFsIGluICMoCisgICAgKiR7YXNfbmx9KikKKyAgICAgIGNhc2UgJGFjX3ZhciBpbiAjKAorICAgICAgKl9jdl8qKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IGNhY2hlIHZhcmlhYmxlICRhY192YXIgY29udGFpbnMgYSBuZXdsaW5lIiA+JjI7fSA7OworICAgICAgZXNhYworICAgICAgY2FzZSAkYWNfdmFyIGluICMoCisgICAgICBfIHwgSUZTIHwgYXNfbmwpIDs7ICMoCisgICAgICBCQVNIX0FSR1YgfCBCQVNIX1NPVVJDRSkgZXZhbCAkYWNfdmFyPSA7OyAjKAorICAgICAgKikgeyBldmFsICRhY192YXI9OyB1bnNldCAkYWNfdmFyO30gOzsKKyAgICAgIGVzYWMgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAoc2V0KSAyPiYxIHwKKyAgICBjYXNlICRhc19ubGAoYWNfc3BhY2U9JyAnOyBzZXQpIDI+JjFgIGluICMoCisgICAgKiR7YXNfbmx9YWNfc3BhY2U9XCAqKQorICAgICAgIyBgc2V0JyBkb2VzIG5vdCBxdW90ZSBjb3JyZWN0bHksIHNvIGFkZCBxdW90ZXM6IGRvdWJsZS1xdW90ZQorICAgICAgIyBzdWJzdGl0dXRpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgc2VkIHR1cm5zIFxcIGludG8gXC4KKyAgICAgIHNlZCAtbiBcCisJInMvJy8nXFxcXCcnL2c7CisJICBzL15cXChbXyRhc19jcl9hbG51bV0qX2N2X1tfJGFzX2NyX2FsbnVtXSpcXCk9XFwoLipcXCkvXFwxPSdcXDInL3AiCisgICAgICA7OyAjKAorICAgICopCisgICAgICAjIGBzZXQnIHF1b3RlcyBjb3JyZWN0bHkgYXMgcmVxdWlyZWQgYnkgUE9TSVgsIHNvIGRvIG5vdCBhZGQgcXVvdGVzLgorICAgICAgc2VkIC1uICIvXltfJGFzX2NyX2FsbnVtXSpfY3ZfW18kYXNfY3JfYWxudW1dKj0vcCIKKyAgICAgIDs7CisgICAgZXNhYyB8CisgICAgc29ydAorKSB8CisgIHNlZCAnCisgICAgIC9eYWNfY3ZfZW52Xy9iIGVuZAorICAgICB0IGNsZWFyCisgICAgIDpjbGVhcgorICAgICBzL15cKFtePV0qXCk9XCguKlt7fV0uKlwpJC90ZXN0ICIke1wxK3NldH0iID0gc2V0IHx8ICYvCisgICAgIHQgZW5kCisgICAgIHMvXlwoW149XSpcKT1cKC4qXCkkL1wxPSR7XDE9XDJ9LworICAgICA6ZW5kJyA+PmNvbmZjYWNoZQoraWYgZGlmZiAiJGNhY2hlX2ZpbGUiIGNvbmZjYWNoZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICBpZiB0ZXN0IC13ICIkY2FjaGVfZmlsZSI7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIjsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KKyAgICAgIGlmIHRlc3QgISAtZiAiJGNhY2hlX2ZpbGUiIHx8IHRlc3QgLWggIiRjYWNoZV9maWxlIjsgdGhlbgorCWNhdCBjb25mY2FjaGUgPiIkY2FjaGVfZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgY2FzZSAkY2FjaGVfZmlsZSBpbiAjKAorICAgICAgICAqLyogfCA/OiopCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiQkICYmCisJICBtdiAtZiAiJGNhY2hlX2ZpbGUiJCQgIiRjYWNoZV9maWxlIiA7OyAjKAorICAgICAgICAqKQorCSAgbXYgLWYgY29uZmNhY2hlICIkY2FjaGVfZmlsZSIgOzsKKwllc2FjCisgICAgICBmaQorICAgIGZpCisgIGVsc2UKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IG5vdCB1cGRhdGluZyB1bndyaXRhYmxlIGNhY2hlICRjYWNoZV9maWxlIiA+JjY7fQorICBmaQorZmkKK3JtIC1mIGNvbmZjYWNoZQorCit0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9JGFjX2RlZmF1bHRfcHJlZml4CisjIExldCBtYWtlIGV4cGFuZCBleGVjX3ByZWZpeC4KK3Rlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKworREVGUz0tREhBVkVfQ09ORklHX0gKKworYWNfbGlib2Jqcz0KK2FjX2x0bGlib2Jqcz0KK1U9Citmb3IgYWNfaSBpbiA6ICRMSUJPQkpTOyBkbyB0ZXN0ICJ4JGFjX2kiID0geDogJiYgY29udGludWUKKyAgIyAxLiBSZW1vdmUgdGhlIGV4dGVuc2lvbiwgYW5kICRVIGlmIGFscmVhZHkgaW5zdGFsbGVkLgorICBhY19zY3JpcHQ9J3MvXCRVXC4vLi87cy9cLm8kLy87cy9cLm9iaiQvLycKKyAgYWNfaT1gJGFzX2VjaG8gIiRhY19pIiB8IHNlZCAiJGFjX3NjcmlwdCJgCisgICMgMi4gUHJlcGVuZCBMSUJPQkpESVIuICBXaGVuIHVzZWQgd2l0aCBhdXRvbWFrZT49MS4xMCBMSUJPQkpESVIKKyAgIyAgICB3aWxsIGJlIHNldCB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIExJQk9CSlMgb2JqZWN0cyBhcmUgYnVpbHQuCisgIGFzX2ZuX2FwcGVuZCBhY19saWJvYmpzICIgXCR7TElCT0JKRElSfSRhY19pXCRVLiRhY19vYmpleHQiCisgIGFzX2ZuX2FwcGVuZCBhY19sdGxpYm9ianMgIiBcJHtMSUJPQkpESVJ9JGFjX2kiJyRVLmxvJworZG9uZQorTElCT0JKUz0kYWNfbGlib2JqcworCitMVExJQk9CSlM9JGFjX2x0bGlib2JqcworCisKKworCis6ICIke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfSIKK2FjX3dyaXRlX2ZhaWw9MAorYWNfY2xlYW5fZmlsZXNfc2F2ZT0kYWNfY2xlYW5fZmlsZXMKK2FjX2NsZWFuX2ZpbGVzPSIkYWNfY2xlYW5fZmlsZXMgJENPTkZJR19TVEFUVVMiCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiA+JjY7fQorYXNfd3JpdGVfZmFpbD0wCitjYXQgPiRDT05GSUdfU1RBVFVTIDw8X0FTRU9GIHx8IGFzX3dyaXRlX2ZhaWw9MQorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuCisjIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyMgQ29tcGlsZXIgb3V0cHV0IHByb2R1Y2VkIGJ5IGNvbmZpZ3VyZSwgdXNlZnVsIGZvciBkZWJ1Z2dpbmcKKyMgY29uZmlndXJlLCBpcyBpbiBjb25maWcubG9nIGlmIGl0IGV4aXN0cy4KKworZGVidWc9ZmFsc2UKK2FjX2NzX3JlY2hlY2s9ZmFsc2UKK2FjX2NzX3NpbGVudD1mYWxzZQorCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BU0VPRiB8fCBhc193cml0ZV9mYWlsPTEKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBNNHNoIEluaXRpYWxpemF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBCZSBtb3JlIEJvdXJuZSBjb21wYXRpYmxlCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICBlbXVsYXRlIHNoCisgIE5VTExDTUQ9OgorICAjIFByZS00LjIgdmVyc2lvbnMgb2YgWnNoIGRvIHdvcmQgc3BsaXR0aW5nIG9uICR7MSsiJEAifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKyAgYWxpYXMgLWcgJyR7MSsiJEAifSc9JyIkQCInCisgIHNldG9wdCBOT19HTE9CX1NVQlNUCitlbHNlCisgIGNhc2UgYChzZXQgLW8pIDI+L2Rldi9udWxsYCBpbiAjKAorICAqcG9zaXgqKSA6CisgICAgc2V0IC1vIHBvc2l4IDs7ICMoCisgICopIDoKKyAgICAgOzsKK2VzYWMKK2ZpCisKKworYXNfbmw9JworJworZXhwb3J0IGFzX25sCisjIFByaW50aW5nIGEgbG9uZyBzdHJpbmcgY3Jhc2hlcyBTb2xhcmlzIDcgL3Vzci9iaW4vcHJpbnRmLgorYXNfZWNobz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK2FzX2VjaG89JGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobworYXNfZWNobz0kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8kYXNfZWNobyRhc19lY2hvJGFzX2VjaG8KKyMgUHJlZmVyIGEga3NoIHNoZWxsIGJ1aWx0aW4gb3ZlciBhbiBleHRlcm5hbCBwcmludGYgcHJvZ3JhbSBvbiBTb2xhcmlzLAorIyBidXQgd2l0aG91dCB3YXN0aW5nIGZvcmtzIGZvciBiYXNoIG9yIHpzaC4KK2lmIHRlc3QgLXogIiRCQVNIX1ZFUlNJT04kWlNIX1ZFUlNJT04iIFwKKyAgICAmJiAodGVzdCAiWGBwcmludCAtciAtLSAkYXNfZWNob2AiID0gIlgkYXNfZWNobyIpIDI+L2Rldi9udWxsOyB0aGVuCisgIGFzX2VjaG89J3ByaW50IC1yIC0tJworICBhc19lY2hvX249J3ByaW50IC1ybiAtLScKK2VsaWYgKHRlc3QgIlhgcHJpbnRmICVzICRhc19lY2hvYCIgPSAiWCRhc19lY2hvIikgMj4vZGV2L251bGw7IHRoZW4KKyAgYXNfZWNobz0ncHJpbnRmICVzXG4nCisgIGFzX2VjaG9fbj0ncHJpbnRmICVzJworZWxzZQorICBpZiB0ZXN0ICJYYCgvdXNyL3VjYi9lY2hvIC1uIC1uICRhc19lY2hvKSAyPi9kZXYvbnVsbGAiID0gIlgtbiAkYXNfZWNobyI7IHRoZW4KKyAgICBhc19lY2hvX2JvZHk9J2V2YWwgL3Vzci91Y2IvZWNobyAtbiAiJDEkYXNfbmwiJworICAgIGFzX2VjaG9fbj0nL3Vzci91Y2IvZWNobyAtbicKKyAgZWxzZQorICAgIGFzX2VjaG9fYm9keT0nZXZhbCBleHByICJYJDEiIDogIlhcXCguKlxcKSInCisgICAgYXNfZWNob19uX2JvZHk9J2V2YWwKKyAgICAgIGFyZz0kMTsKKyAgICAgIGNhc2UgJGFyZyBpbiAjKAorICAgICAgKiIkYXNfbmwiKikKKwlleHByICJYJGFyZyIgOiAiWFxcKC4qXFwpJGFzX25sIjsKKwlhcmc9YGV4cHIgIlgkYXJnIiA6ICIuKiRhc19ubFxcKC4qXFwpImA7OworICAgICAgZXNhYzsKKyAgICAgIGV4cHIgIlgkYXJnIiA6ICJYXFwoLipcXCkiIHwgdHIgLWQgIiRhc19ubCIKKyAgICAnCisgICAgZXhwb3J0IGFzX2VjaG9fbl9ib2R5CisgICAgYXNfZWNob19uPSdzaCAtYyAkYXNfZWNob19uX2JvZHkgYXNfZWNobycKKyAgZmkKKyAgZXhwb3J0IGFzX2VjaG9fYm9keQorICBhc19lY2hvPSdzaCAtYyAkYXNfZWNob19ib2R5IGFzX2VjaG8nCitmaQorCisjIFRoZSB1c2VyIGlzIGFsd2F5cyByaWdodC4KK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCisgIFBBVEhfU0VQQVJBVE9SPToKKyAgKFBBVEg9Jy9iaW47L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgJiYgeworICAgIChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIHx8CisgICAgICBQQVRIX1NFUEFSQVRPUj0nOycKKyAgfQorZmkKKworCisjIElGUworIyBXZSBuZWVkIHNwYWNlLCB0YWIgYW5kIG5ldyBsaW5lLCBpbiBwcmVjaXNlbHkgdGhhdCBvcmRlci4gIFF1b3RpbmcgaXMKKyMgdGhlcmUgdG8gcHJldmVudCBlZGl0b3JzIGZyb20gY29tcGxhaW5pbmcgYWJvdXQgc3BhY2UtdGFiLgorIyAoSWYgX0FTX1BBVEhfV0FMSyB3ZXJlIGNhbGxlZCB3aXRoIElGUyB1bnNldCwgaXQgd291bGQgZGlzYWJsZSB3b3JkCisjIHNwbGl0dGluZyBieSBzZXR0aW5nIElGUyB0byBlbXB0eSB2YWx1ZS4pCitJRlM9IiAiIgkkYXNfbmwiCisKKyMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CitjYXNlICQwIGluICMoKAorICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CisgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICB0ZXN0IC1yICIkYXNfZGlyLyQwIiAmJiBhc19teXNlbGY9JGFzX2Rpci8kMCAmJiBicmVhaworICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgICAgOzsKK2VzYWMKKyMgV2UgZGlkIG5vdCBmaW5kIG91cnNlbHZlcywgbW9zdCBwcm9iYWJseSB3ZSB3ZXJlIHJ1biBhcyBgc2ggQ09NTUFORCcKKyMgaW4gd2hpY2ggY2FzZSB3ZSBhcmUgbm90IHRvIGJlIGZvdW5kIGluIHRoZSBwYXRoLgoraWYgdGVzdCAieCRhc19teXNlbGYiID0geDsgdGhlbgorICBhc19teXNlbGY9JDAKK2ZpCitpZiB0ZXN0ICEgLWYgIiRhc19teXNlbGYiOyB0aGVuCisgICRhc19lY2hvICIkYXNfbXlzZWxmOiBlcnJvcjogY2Fubm90IGZpbmQgbXlzZWxmOyByZXJ1biB3aXRoIGFuIGFic29sdXRlIGZpbGUgbmFtZSIgPiYyCisgIGV4aXQgMQorZmkKKworIyBVbnNldCB2YXJpYWJsZXMgdGhhdCB3ZSBkbyBub3QgbmVlZCBhbmQgd2hpY2ggY2F1c2UgYnVncyAoZS5nLiBpbgorIyBwcmUtMy4wIFVXSU4ga3NoKS4gIEJ1dCBkbyBub3QgY2F1c2UgYnVncyBpbiBiYXNoIDIuMDE7IHRoZSAifHwgZXhpdCAxIgorIyBzdXBwcmVzc2VzIGFueSAiU2VnbWVudGF0aW9uIGZhdWx0IiBtZXNzYWdlIHRoZXJlLiAgJygoJyBjb3VsZAorIyB0cmlnZ2VyIGEgYnVnIGluIHBka3NoIDUuMi4xNC4KK2ZvciBhc192YXIgaW4gQkFTSF9FTlYgRU5WIE1BSUwgTUFJTFBBVEgKK2RvIGV2YWwgdGVzdCB4XCR7JGFzX3ZhcitzZXR9ID0geHNldCBcCisgICYmICggKHVuc2V0ICRhc192YXIpIHx8IGV4aXQgMSkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0ICRhc192YXIgfHwgOgorZG9uZQorUFMxPSckICcKK1BTMj0nPiAnCitQUzQ9JysgJworCisjIE5MUyBudWlzYW5jZXMuCitMQ19BTEw9QworZXhwb3J0IExDX0FMTAorTEFOR1VBR0U9QworZXhwb3J0IExBTkdVQUdFCisKKyMgQ0RQQVRILgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCisKKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQorIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorYXNfZm5fZXJyb3IgKCkKK3sKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAorICBmaQorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgorICBhc19mbl9leGl0ICRhc19zdGF0dXMKK30gIyBhc19mbl9lcnJvcgorCisKKyMgYXNfZm5fc2V0X3N0YXR1cyBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0ICQ/IHRvIFNUQVRVUywgd2l0aG91dCBmb3JraW5nLgorYXNfZm5fc2V0X3N0YXR1cyAoKQoreworICByZXR1cm4gJDEKK30gIyBhc19mbl9zZXRfc3RhdHVzCisKKyMgYXNfZm5fZXhpdCBTVEFUVVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgRXhpdCB0aGUgc2hlbGwgd2l0aCBTVEFUVVMsIGV2ZW4gaW4gYSAidHJhcCAwIiBvciAic2V0IC1lIiBjb250ZXh0LgorYXNfZm5fZXhpdCAoKQoreworICBzZXQgK2UKKyAgYXNfZm5fc2V0X3N0YXR1cyAkMQorICBleGl0ICQxCit9ICMgYXNfZm5fZXhpdAorCisjIGFzX2ZuX3Vuc2V0IFZBUgorIyAtLS0tLS0tLS0tLS0tLS0KKyMgUG9ydGFibHkgdW5zZXQgVkFSLgorYXNfZm5fdW5zZXQgKCkKK3sKKyAgeyBldmFsICQxPTsgdW5zZXQgJDE7fQorfQorYXNfdW5zZXQ9YXNfZm5fdW5zZXQKKyMgYXNfZm5fYXBwZW5kIFZBUiBWQUxVRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCB0aGUgdGV4dCBpbiBWQUxVRSB0byB0aGUgZW5kIG9mIHRoZSBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbiBWQVIuIFRha2UKKyMgYWR2YW50YWdlIG9mIGFueSBzaGVsbCBvcHRpbWl6YXRpb25zIHRoYXQgYWxsb3cgYW1vcnRpemVkIGxpbmVhciBncm93dGggb3ZlcgorIyByZXBlYXRlZCBhcHBlbmRzLCBpbnN0ZWFkIG9mIHRoZSB0eXBpY2FsIHF1YWRyYXRpYyBncm93dGggcHJlc2VudCBpbiBuYWl2ZQorIyBpbXBsZW1lbnRhdGlvbnMuCitpZiAoZXZhbCAiYXNfdmFyPTE7IGFzX3Zhcis9MjsgdGVzdCB4XCRhc192YXIgPSB4MTIiKSAyPi9kZXYvbnVsbDsgdGhlbiA6CisgIGV2YWwgJ2FzX2ZuX2FwcGVuZCAoKQorICB7CisgICAgZXZhbCAkMSs9XCQyCisgIH0nCitlbHNlCisgIGFzX2ZuX2FwcGVuZCAoKQorICB7CisgICAgZXZhbCAkMT1cJCQxXCQyCisgIH0KK2ZpICMgYXNfZm5fYXBwZW5kCisKKyMgYXNfZm5fYXJpdGggQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBQZXJmb3JtIGFyaXRobWV0aWMgZXZhbHVhdGlvbiBvbiB0aGUgQVJHcywgYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4gdGhlCisjIGdsb2JhbCAkYXNfdmFsLiBUYWtlIGFkdmFudGFnZSBvZiBzaGVsbHMgdGhhdCBjYW4gYXZvaWQgZm9ya3MuIFRoZSBhcmd1bWVudHMKKyMgbXVzdCBiZSBwb3J0YWJsZSBhY3Jvc3MgJCgoKSkgYW5kIGV4cHIuCitpZiAoZXZhbCAidGVzdCBcJCgoIDEgKyAxICkpID0gMiIpIDI+L2Rldi9udWxsOyB0aGVuIDoKKyAgZXZhbCAnYXNfZm5fYXJpdGggKCkKKyAgeworICAgIGFzX3ZhbD0kKCggJCogKSkKKyAgfScKK2Vsc2UKKyAgYXNfZm5fYXJpdGggKCkKKyAgeworICAgIGFzX3ZhbD1gZXhwciAiJEAiIHx8IHRlc3QgJD8gLWVxIDFgCisgIH0KK2ZpICMgYXNfZm5fYXJpdGgKKworCitpZiBleHByIGEgOiAnXChhXCknID4vZGV2L251bGwgMj4mMSAmJgorICAgdGVzdCAiWGBleHByIDAwMDAxIDogJy4qXCguLi5cKSdgIiA9IFgwMDE7IHRoZW4KKyAgYXNfZXhwcj1leHByCitlbHNlCisgIGFzX2V4cHI9ZmFsc2UKK2ZpCisKK2lmIChiYXNlbmFtZSAtLSAvKSA+L2Rldi9udWxsIDI+JjEgJiYgdGVzdCAiWGBiYXNlbmFtZSAtLSAvIDI+JjFgIiA9ICJYLyI7IHRoZW4KKyAgYXNfYmFzZW5hbWU9YmFzZW5hbWUKK2Vsc2UKKyAgYXNfYmFzZW5hbWU9ZmFsc2UKK2ZpCisKK2lmIChhc19kaXI9YGRpcm5hbWUgLS0gL2AgJiYgdGVzdCAiWCRhc19kaXIiID0gWC8pID4vZGV2L251bGwgMj4mMTsgdGhlbgorICBhc19kaXJuYW1lPWRpcm5hbWUKK2Vsc2UKKyAgYXNfZGlybmFtZT1mYWxzZQorZmkKKworYXNfbWU9YCRhc19iYXNlbmFtZSAtLSAiJDAiIHx8CiskYXNfZXhwciBYLyIkMCIgOiAnLiovXChbXi9dW14vXSpcKS8qJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiQwIiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKyRhc19lY2hvIFgvIiQwIiB8CisgICAgc2VkICcvXi4qXC9cKFteL11bXi9dKlwpXC8qJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcL1woXC9cKS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIHMvLiovLi87IHEnYAorCisjIEF2b2lkIGRlcGVuZGluZyB1cG9uIENoYXJhY3RlciBSYW5nZXMuCithc19jcl9sZXR0ZXJzPSdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicKK2FzX2NyX0xFVFRFUlM9J0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJworYXNfY3JfTGV0dGVycz0kYXNfY3JfbGV0dGVycyRhc19jcl9MRVRURVJTCithc19jcl9kaWdpdHM9JzAxMjM0NTY3ODknCithc19jcl9hbG51bT0kYXNfY3JfTGV0dGVycyRhc19jcl9kaWdpdHMKKworRUNIT19DPSBFQ0hPX049IEVDSE9fVD0KK2Nhc2UgYGVjaG8gLW4geGAgaW4gIygoKCgoCistbiopCisgIGNhc2UgYGVjaG8gJ3h5XGMnYCBpbgorICAqYyopIEVDSE9fVD0nCSc7OwkjIEVDSE9fVCBpcyBzaW5nbGUgdGFiIGNoYXJhY3Rlci4KKyAgeHkpICBFQ0hPX0M9J1xjJzs7CisgICopICAgZWNobyBgZWNobyBrc2g4OCBidWcgb24gQUlYIDYuMWAgPiAvZGV2L251bGwKKyAgICAgICBFQ0hPX1Q9JwknOzsKKyAgZXNhYzs7CisqKQorICBFQ0hPX049Jy1uJzs7Citlc2FjCisKK3JtIC1mIGNvbmYkJCBjb25mJCQuZXhlIGNvbmYkJC5maWxlCitpZiB0ZXN0IC1kIGNvbmYkJC5kaXI7IHRoZW4KKyAgcm0gLWYgY29uZiQkLmRpci9jb25mJCQuZmlsZQorZWxzZQorICBybSAtZiBjb25mJCQuZGlyCisgIG1rZGlyIGNvbmYkJC5kaXIgMj4vZGV2L251bGwKK2ZpCitpZiAoZWNobyA+Y29uZiQkLmZpbGUpIDI+L2Rldi9udWxsOyB0aGVuCisgIGlmIGxuIC1zIGNvbmYkJC5maWxlIGNvbmYkJCAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGFzX2xuX3M9J2xuIC1zJworICAgICMgLi4uIGJ1dCB0aGVyZSBhcmUgdHdvIGdvdGNoYXM6CisgICAgIyAxKSBPbiBNU1lTLCBib3RoIGBsbiAtcyBmaWxlIGRpcicgYW5kIGBsbiBmaWxlIGRpcicgZmFpbC4KKyAgICAjIDIpIERKR1BQIDwgMi4wNCBoYXMgbm8gc3ltbGlua3M7IGBsbiAtcycgY3JlYXRlcyBhIHdyYXBwZXIgZXhlY3V0YWJsZS4KKyAgICAjIEluIGJvdGggY2FzZXMsIHdlIGhhdmUgdG8gZGVmYXVsdCB0byBgY3AgLXBSJy4KKyAgICBsbiAtcyBjb25mJCQuZmlsZSBjb25mJCQuZGlyIDI+L2Rldi9udWxsICYmIHRlc3QgISAtZiBjb25mJCQuZXhlIHx8CisgICAgICBhc19sbl9zPSdjcCAtcFInCisgIGVsaWYgbG4gY29uZiQkLmZpbGUgY29uZiQkIDI+L2Rldi9udWxsOyB0aGVuCisgICAgYXNfbG5fcz1sbgorICBlbHNlCisgICAgYXNfbG5fcz0nY3AgLXBSJworICBmaQorZWxzZQorICBhc19sbl9zPSdjcCAtcFInCitmaQorcm0gLWYgY29uZiQkIGNvbmYkJC5leGUgY29uZiQkLmRpci9jb25mJCQuZmlsZSBjb25mJCQuZmlsZQorcm1kaXIgY29uZiQkLmRpciAyPi9kZXYvbnVsbAorCisKKyMgYXNfZm5fbWtkaXJfcAorIyAtLS0tLS0tLS0tLS0tCisjIENyZWF0ZSAiJGFzX2RpciIgYXMgYSBkaXJlY3RvcnksIGluY2x1ZGluZyBwYXJlbnRzIGlmIG5lY2Vzc2FyeS4KK2FzX2ZuX21rZGlyX3AgKCkKK3sKKworICBjYXNlICRhc19kaXIgaW4gIygKKyAgLSopIGFzX2Rpcj0uLyRhc19kaXI7OworICBlc2FjCisgIHRlc3QgLWQgIiRhc19kaXIiIHx8IGV2YWwgJGFzX21rZGlyX3AgfHwgeworICAgIGFzX2RpcnM9CisgICAgd2hpbGUgOjsgZG8KKyAgICAgIGNhc2UgJGFzX2RpciBpbiAjKAorICAgICAgKlwnKikgYXNfcWRpcj1gJGFzX2VjaG8gIiRhc19kaXIiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgIycoCisgICAgICAqKSBhc19xZGlyPSRhc19kaXI7OworICAgICAgZXNhYworICAgICAgYXNfZGlycz0iJyRhc19xZGlyJyAkYXNfZGlycyIKKyAgICAgIGFzX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhc19kaXIiIHx8CiskYXNfZXhwciBYIiRhc19kaXIiIDogJ1hcKC4qW14vXVwpLy8qW14vXVteL10qLyokJyBcfCBcCisJIFgiJGFzX2RpciIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYXNfZGlyIiA6ICdYXCgvL1wpJCcgXHwgXAorCSBYIiRhc19kaXIiIDogJ1hcKC9cKScgXHwgLiAyPi9kZXYvbnVsbCB8fAorJGFzX2VjaG8gWCIkYXNfZGlyIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgICAgIHRlc3QgLWQgIiRhc19kaXIiICYmIGJyZWFrCisgICAgZG9uZQorICAgIHRlc3QgLXogIiRhc19kaXJzIiB8fCBldmFsICJta2RpciAkYXNfZGlycyIKKyAgfSB8fCB0ZXN0IC1kICIkYXNfZGlyIiB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBkaXJlY3RvcnkgJGFzX2RpciIKKworCit9ICMgYXNfZm5fbWtkaXJfcAoraWYgbWtkaXIgLXAgLiAyPi9kZXYvbnVsbDsgdGhlbgorICBhc19ta2Rpcl9wPSdta2RpciAtcCAiJGFzX2RpciInCitlbHNlCisgIHRlc3QgLWQgLi8tcCAmJiBybWRpciAuLy1wCisgIGFzX21rZGlyX3A9ZmFsc2UKK2ZpCisKKworIyBhc19mbl9leGVjdXRhYmxlX3AgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGlmIEZJTEUgaXMgYW4gZXhlY3V0YWJsZSByZWd1bGFyIGZpbGUuCithc19mbl9leGVjdXRhYmxlX3AgKCkKK3sKKyAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorfSAjIGFzX2ZuX2V4ZWN1dGFibGVfcAorYXNfdGVzdF94PSd0ZXN0IC14JworYXNfZXhlY3V0YWJsZV9wPWFzX2ZuX2V4ZWN1dGFibGVfcAorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgQ1BQIG5hbWUuCithc190cl9jcHA9ImV2YWwgc2VkICd5JSokYXNfY3JfbGV0dGVycyVQJGFzX2NyX0xFVFRFUlMlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgorCisjIFNlZCBleHByZXNzaW9uIHRvIG1hcCBhIHN0cmluZyBvbnRvIGEgdmFsaWQgdmFyaWFibGUgbmFtZS4KK2FzX3RyX3NoPSJldmFsIHNlZCAneSUqKyVwcCU7cyVbXl8kYXNfY3JfYWxudW1dJV8lZyciCisKKworZXhlYyA2PiYxCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTWFpbiBib2R5IG9mICRDT05GSUdfU1RBVFVTIHNjcmlwdC4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCitfQVNFT0YKK3Rlc3QgJGFzX3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICRDT05GSUdfU1RBVFVTIHx8IGFjX3dyaXRlX2ZhaWw9MQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIFNhdmUgdGhlIGxvZyBtZXNzYWdlLCB0byBrZWVwICQwIGFuZCBzbyBvbiBtZWFuaW5nZnVsLCBhbmQgdG8KKyMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgorIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KK2FjX2xvZz0iCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5ICRhc19tZSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKKworICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCisgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVBREVSUworICBDT05GSUdfTElOS1MgICAgPSAkQ09ORklHX0xJTktTCisgIENPTkZJR19DT01NQU5EUyA9ICRDT05GSUdfQ09NTUFORFMKKyAgJCAkMCAkQAorCitvbiBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWAKKyIKKworX0FDRU9GCisKK2Nhc2UgJGFjX2NvbmZpZ19maWxlcyBpbiAqIgorIiopIHNldCB4ICRhY19jb25maWdfZmlsZXM7IHNoaWZ0OyBhY19jb25maWdfZmlsZXM9JCo7OworZXNhYworCitjYXNlICRhY19jb25maWdfaGVhZGVycyBpbiAqIgorIiopIHNldCB4ICRhY19jb25maWdfaGVhZGVyczsgc2hpZnQ7IGFjX2NvbmZpZ19oZWFkZXJzPSQqOzsKK2VzYWMKKworCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgRmlsZXMgdGhhdCBjb25maWcuc3RhdHVzIHdhcyBtYWRlIGZvci4KK2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyIKK2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMiCitjb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMiCisKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCithY19jc191c2FnZT0iXAorXGAkYXNfbWUnIGluc3RhbnRpYXRlcyBmaWxlcyBhbmQgb3RoZXIgY29uZmlndXJhdGlvbiBhY3Rpb25zCitmcm9tIHRlbXBsYXRlcyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFVubGVzcyB0aGUgZmlsZXMKK2FuZCBhY3Rpb25zIGFyZSBzcGVjaWZpZWQgYXMgVEFHcywgYWxsIGFyZSBpbnN0YW50aWF0ZWQgYnkgZGVmYXVsdC4KKworVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtUQUddLi4uCisKKyAgLWgsIC0taGVscCAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtViwgLS12ZXJzaW9uICAgIHByaW50IHZlcnNpb24gbnVtYmVyIGFuZCBjb25maWd1cmF0aW9uIHNldHRpbmdzLCB0aGVuIGV4aXQKKyAgICAgIC0tY29uZmlnICAgICBwcmludCBjb25maWd1cmF0aW9uLCB0aGVuIGV4aXQKKyAgLXEsIC0tcXVpZXQsIC0tc2lsZW50CisgICAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IHByb2dyZXNzIG1lc3NhZ2VzCisgIC1kLCAtLWRlYnVnICAgICAgZG9uJ3QgcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcworICAgICAgLS1yZWNoZWNrICAgIHVwZGF0ZSAkYXNfbWUgYnkgcmVjb25maWd1cmluZyBpbiB0aGUgc2FtZSBjb25kaXRpb25zCisgICAgICAtLWZpbGU9RklMRVs6VEVNUExBVEVdCisgICAgICAgICAgICAgICAgICAgaW5zdGFudGlhdGUgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBGSUxFCisgICAgICAtLWhlYWRlcj1GSUxFWzpURU1QTEFURV0KKyAgICAgICAgICAgICAgICAgICBpbnN0YW50aWF0ZSB0aGUgY29uZmlndXJhdGlvbiBoZWFkZXIgRklMRQorCitDb25maWd1cmF0aW9uIGZpbGVzOgorJGNvbmZpZ19maWxlcworCitDb25maWd1cmF0aW9uIGhlYWRlcnM6CiskY29uZmlnX2hlYWRlcnMKKworQ29uZmlndXJhdGlvbiBjb21tYW5kczoKKyRjb25maWdfY29tbWFuZHMKKworUmVwb3J0IGJ1Z3MgdG8gdGhlIHBhY2thZ2UgcHJvdmlkZXIuIgorCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKK2FjX2NzX3ZlcnNpb249IlxcCitjb25maWcuc3RhdHVzCitjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCisgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgorCitDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCisKK2FjX3B3ZD0nJGFjX3B3ZCcKK3NyY2Rpcj0nJHNyY2RpcicKK0lOU1RBTEw9JyRJTlNUQUxMJworTUtESVJfUD0nJE1LRElSX1AnCitBV0s9JyRBV0snCit0ZXN0IC1uICJcJEFXSyIgfHwgQVdLPWF3aworX0FDRU9GCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyMgVGhlIGRlZmF1bHQgbGlzdHMgYXBwbHkgaWYgdGhlIHVzZXIgZG9lcyBub3Qgc3BlY2lmeSBhbnkgZmlsZS4KK2FjX25lZWRfZGVmYXVsdHM9Ogord2hpbGUgdGVzdCAkIyAhPSAwCitkbworICBjYXNlICQxIGluCisgIC0tKj0/KikKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz1gZXhwciAiWCQxIiA6ICdYW149XSo9XCguKlwpJ2AKKyAgICBhY19zaGlmdD06CisgICAgOzsKKyAgLS0qPSkKKyAgICBhY19vcHRpb249YGV4cHIgIlgkMSIgOiAnWFwoW149XSpcKT0nYAorICAgIGFjX29wdGFyZz0KKyAgICBhY19zaGlmdD06CisgICAgOzsKKyAgKikKKyAgICBhY19vcHRpb249JDEKKyAgICBhY19vcHRhcmc9JDIKKyAgICBhY19zaGlmdD1zaGlmdAorICAgIDs7CisgIGVzYWMKKworICBjYXNlICRhY19vcHRpb24gaW4KKyAgIyBIYW5kbGluZyBvZiB0aGUgb3B0aW9ucy4KKyAgLXJlY2hlY2sgfCAtLXJlY2hlY2sgfCAtLXJlY2hlYyB8IC0tcmVjaGUgfCAtLXJlY2ggfCAtLXJlYyB8IC0tcmUgfCAtLXIpCisgICAgYWNfY3NfcmVjaGVjaz06IDs7CisgIC0tdmVyc2lvbiB8IC0tdmVyc2lvIHwgLS12ZXJzaSB8IC0tdmVycyB8IC0tdmVyIHwgLS12ZSB8IC0tdiB8IC1WICkKKyAgICAkYXNfZWNobyAiJGFjX2NzX3ZlcnNpb24iOyBleGl0IDs7CisgIC0tY29uZmlnIHwgLS1jb25maSB8IC0tY29uZiB8IC0tY29uIHwgLS1jbyB8IC0tYyApCisgICAgJGFzX2VjaG8gIiRhY19jc19jb25maWciOyBleGl0IDs7CisgIC0tZGVidWcgfCAtLWRlYnUgfCAtLWRlYiB8IC0tZGUgfCAtLWQgfCAtZCApCisgICAgZGVidWc9OiA7OworICAtLWZpbGUgfCAtLWZpbCB8IC0tZmkgfCAtLWYgKQorICAgICRhY19zaGlmdAorICAgIGNhc2UgJGFjX29wdGFyZyBpbgorICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQiIDs7CisgICAgZXNhYworICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGVhZGVyIHwgLS1oZWFkZSB8IC0taGVhZCB8IC0taGVhICkKKyAgICAkYWNfc2hpZnQKKyAgICBjYXNlICRhY19vcHRhcmcgaW4KKyAgICAqXCcqKSBhY19vcHRhcmc9YCRhc19lY2hvICIkYWNfb3B0YXJnIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYCA7OworICAgIGVzYWMKKyAgICBhc19mbl9hcHBlbmQgQ09ORklHX0hFQURFUlMgIiAnJGFjX29wdGFyZyciCisgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CisgIC0taGUgfCAtLWgpCisgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKKyAgICBhc19mbl9lcnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKK1RyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CisgIC0taGVscCB8IC0taGVsIHwgLWggKQorICAgICRhc19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7CisgIC1xIHwgLXF1aWV0IHwgLS1xdWlldCB8IC0tcXVpZSB8IC0tcXVpIHwgLS1xdSB8IC0tcSBcCisgIHwgLXNpbGVudCB8IC0tc2lsZW50IHwgLS1zaWxlbiB8IC0tc2lsZSB8IC0tc2lsIHwgLS1zaSB8IC0tcykKKyAgICBhY19jc19zaWxlbnQ9OiA7OworCisgICMgVGhpcyBpcyBhbiBlcnJvci4KKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJworVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7CisKKyAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCisgICAgIGFjX25lZWRfZGVmYXVsdHM9ZmFsc2UgOzsKKworICBlc2FjCisgIHNoaWZ0Citkb25lCisKK2FjX2NvbmZpZ3VyZV9leHRyYV9hcmdzPQorCitpZiAkYWNfY3Nfc2lsZW50OyB0aGVuCisgIGV4ZWMgNj4vZGV2L251bGwKKyAgYWNfY29uZmlndXJlX2V4dHJhX2FyZ3M9IiRhY19jb25maWd1cmVfZXh0cmFfYXJncyAtLXNpbGVudCIKK2ZpCisKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitpZiBcJGFjX2NzX3JlY2hlY2s7IHRoZW4KKyAgc2V0IFggJFNIRUxMICckMCcgJGFjX2NvbmZpZ3VyZV9hcmdzIFwkYWNfY29uZmlndXJlX2V4dHJhX2FyZ3MgLS1uby1jcmVhdGUgLS1uby1yZWN1cnNpb24KKyAgc2hpZnQKKyAgXCRhc19lY2hvICJydW5uaW5nIENPTkZJR19TSEVMTD0kU0hFTEwgXCQqIiA+JjYKKyAgQ09ORklHX1NIRUxMPSckU0hFTEwnCisgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgZXhlYyAiXCRAIgorZmkKKworX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitleGVjIDU+PmNvbmZpZy5sb2cKK3sKKyAgZWNobworICBzZWQgJ2g7cy8uLy0vZztzL14uLi4vIyMgLztzLy4uLiQvICMjLztwO3g7cDt4JyA8PF9BU0JPWAorIyMgUnVubmluZyAkYXNfbWUuICMjCitfQVNCT1gKKyAgJGFzX2VjaG8gIiRhY19sb2ciCit9ID4mNQorCitfQUNFT0YKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorIworIyBJTklULUNPTU1BTkRTCisjCisjIENhcHR1cmUgdGhlIHZhbHVlIG9mIG9ic29sZXRlIEFMTF9MSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlCisgICAgIyBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTLCBDQVRBTE9HUy4gQnV0IGhpZGUgaXQKKyAgICAjIGZyb20gYXV0b21ha2UgPCAxLjUuCisgICAgZXZhbCAnT0JTT0xFVEVfQUxMX0xJTkdVQVMnJz0iJEFMTF9MSU5HVUFTIicKKyAgICAjIENhcHR1cmUgdGhlIHZhbHVlIG9mIExJTkdVQVMgYmVjYXVzZSB3ZSBuZWVkIGl0IHRvIGNvbXB1dGUgQ0FUQUxPR1MuCisgICAgTElOR1VBUz0iJHtMSU5HVUFTLSVVTlNFVCV9IgorCisKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisKKyMgSGFuZGxpbmcgb2YgYXJndW1lbnRzLgorZm9yIGFjX2NvbmZpZ190YXJnZXQgaW4gJGFjX2NvbmZpZ190YXJnZXRzCitkbworICBjYXNlICRhY19jb25maWdfdGFyZ2V0IGluCisgICAgImxpYi9jb25maWcuaCIpIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgbGliL2NvbmZpZy5oIiA7OworICAgICJwby1kaXJlY3RvcmllcyIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBwby1kaXJlY3RvcmllcyIgOzsKKyAgICAiJG91dGxpc3QiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgJG91dGxpc3QiIDs7CisKKyAgKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7CisgIGVzYWMKK2RvbmUKKworCisjIElmIHRoZSB1c2VyIGRpZCBub3QgdXNlIHRoZSBhcmd1bWVudHMgdG8gc3BlY2lmeSB0aGUgaXRlbXMgdG8gaW5zdGFudGlhdGUsCisjIHRoZW4gdGhlIGVudnZhciBpbnRlcmZhY2UgaXMgdXNlZC4gIFNldCBvbmx5IHRob3NlIHRoYXQgYXJlIG5vdC4KKyMgV2UgdXNlIHRoZSBsb25nIGZvcm0gZm9yIHRoZSBkZWZhdWx0IGFzc2lnbm1lbnQgYmVjYXVzZSBvZiBhbiBleHRyZW1lbHkKKyMgYml6YXJyZSBidWcgb24gU3VuT1MgNC4xLjMuCitpZiAkYWNfbmVlZF9kZWZhdWx0czsgdGhlbgorICB0ZXN0ICIke0NPTkZJR19GSUxFUytzZXR9IiA9IHNldCB8fCBDT05GSUdfRklMRVM9JGNvbmZpZ19maWxlcworICB0ZXN0ICIke0NPTkZJR19IRUFERVJTK3NldH0iID0gc2V0IHx8IENPTkZJR19IRUFERVJTPSRjb25maWdfaGVhZGVycworICB0ZXN0ICIke0NPTkZJR19DT01NQU5EUytzZXR9IiA9IHNldCB8fCBDT05GSUdfQ09NTUFORFM9JGNvbmZpZ19jb21tYW5kcworZmkKKworIyBIYXZlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgY29udmVuaWVuY2UuICBNYWtlIGl0IGluIHRoZSBidWlsZCB0cmVlCisjIHNpbXBseSBiZWNhdXNlIHRoZXJlIGlzIG5vIHJlYXNvbiBhZ2FpbnN0IGhhdmluZyBpdCBoZXJlLCBhbmQgaW4gYWRkaXRpb24sCisjIGNyZWF0aW5nIGFuZCBtb3ZpbmcgZmlsZXMgZnJvbSAvdG1wIGNhbiBzb21ldGltZXMgY2F1c2UgcHJvYmxlbXMuCisjIEhvb2sgZm9yIGl0cyByZW1vdmFsIHVubGVzcyBkZWJ1Z2dpbmcuCisjIE5vdGUgdGhhdCB0aGVyZSBpcyBhIHNtYWxsIHdpbmRvdyBpbiB3aGljaCB0aGUgZGlyZWN0b3J5IHdpbGwgbm90IGJlIGNsZWFuZWQ6CisjIGFmdGVyIGl0cyBjcmVhdGlvbiBidXQgYmVmb3JlIGl0cyBuYW1lIGhhcyBiZWVuIGFzc2lnbmVkIHRvIGAkdG1wJy4KKyRkZWJ1ZyB8fAoreworICB0bXA9IGFjX3RtcD0KKyAgdHJhcCAnZXhpdF9zdGF0dXM9JD8KKyAgOiAiJHthY190bXA6PSR0bXB9IgorICB7IHRlc3QgISAtZCAiJGFjX3RtcCIgfHwgcm0gLWZyICIkYWNfdG1wIjsgfSAmJiBleGl0ICRleGl0X3N0YXR1cworJyAwCisgIHRyYXAgJ2FzX2ZuX2V4aXQgMScgMSAyIDEzIDE1Cit9CisjIENyZWF0ZSBhIChzZWN1cmUpIHRtcCBkaXJlY3RvcnkgZm9yIHRtcCBmaWxlcy4KKworeworICB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIuL2NvbmZYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYKKyAgdGVzdCAtZCAiJHRtcCIKK30gIHx8Cit7CisgIHRtcD0uL2NvbmYkJC0kUkFORE9NCisgICh1bWFzayAwNzcgJiYgbWtkaXIgIiR0bXAiKQorfSB8fCBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gLiIgIiRMSU5FTk8iIDUKK2FjX3RtcD0kdG1wCisKKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfRklMRVMgc2VjdGlvbi4KKyMgTm8gbmVlZCB0byBnZW5lcmF0ZSB0aGVtIGlmIHRoZXJlIGFyZSBubyBDT05GSUdfRklMRVMuCisjIFRoaXMgaGFwcGVucyBmb3IgaW5zdGFuY2Ugd2l0aCBgLi9jb25maWcuc3RhdHVzIGNvbmZpZy5oJy4KK2lmIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiOyB0aGVuCisKK2lmICRBV0sgJ0JFR0lOIHsgZ2V0bGluZSA8Ii9kZXYvbnVsbCIgfScgPC9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorICBhY19jc19hd2tfZ2V0bGluZT06CisgIGFjX2NzX2F3a19waXBlX2luaXQ9CisgIGFjX2NzX2F3a19yZWFkX2ZpbGU9JworICAgICAgd2hpbGUgKChnZXRsaW5lIGFsaW5lIDwgKEZba2V5XSkpID4gMCkKKwlwcmludChhbGluZSkKKyAgICAgIGNsb3NlKEZba2V5XSknCisgIGFjX2NzX2F3a19waXBlX2Zpbmk9CitlbHNlCisgIGFjX2NzX2F3a19nZXRsaW5lPWZhbHNlCisgIGFjX2NzX2F3a19waXBlX2luaXQ9InByaW50IFwiY2F0IDw8J3wjXyEhXyN8JyAmJlwiIgorICBhY19jc19hd2tfcmVhZF9maWxlPScKKyAgICAgIHByaW50ICJ8I18hIV8jfCIKKyAgICAgIHByaW50ICJjYXQgIiBGW2tleV0gIiAmJiIKKyAgICAgICckYWNfY3NfYXdrX3BpcGVfaW5pdAorICAjIFRoZSBmaW5hbCBgOicgZmluaXNoZXMgdGhlIEFORCBsaXN0LgorICBhY19jc19hd2tfcGlwZV9maW5pPSdFTkQgeyBwcmludCAifCNfISFfI3wiOyBwcmludCAiOiIgfScKK2ZpCithY19jcj1gZWNobyBYIHwgdHIgWCAnXDAxNSdgCisjIE9uIGN5Z3dpbiwgYmFzaCBjYW4gZWF0IFxyIGluc2lkZSBgYCBpZiB0aGUgdXNlciByZXF1ZXN0ZWQgaWduY3IuCisjIEJ1dCB3ZSBrbm93IG9mIG5vIG90aGVyIHNoZWxsIHdoZXJlIGFjX2NyIHdvdWxkIGJlIGVtcHR5IGF0IHRoaXMKKyMgcG9pbnQsIHNvIHdlIGNhbiB1c2UgYSBiYXNoaXNtIGFzIGEgZmFsbGJhY2suCitpZiB0ZXN0ICJ4JGFjX2NyIiA9IHg7IHRoZW4KKyAgZXZhbCBhY19jcj1cJFwnXFxyXCcKK2ZpCithY19jc19hd2tfY3I9YCRBV0sgJ0JFR0lOIHsgcHJpbnQgImFccmIiIH0nIDwvZGV2L251bGwgMj4vZGV2L251bGxgCitpZiB0ZXN0ICIkYWNfY3NfYXdrX2NyIiA9ICJhJHthY19jcn1iIjsgdGhlbgorICBhY19jc19hd2tfY3I9J1xccicKK2Vsc2UKKyAgYWNfY3NfYXdrX2NyPSRhY19jcgorZmkKKworZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKK19BQ0VPRgorCisjIENyZWF0ZSBjb21tYW5kcyB0byBzdWJzdGl0dXRlIGZpbGUgb3V0cHV0IHZhcmlhYmxlcy4KK3sKKyAgZWNobyAiY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xIiAmJgorICBlY2hvICdjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmJyAmJgorICBlY2hvICIkYWNfc3Vic3RfZmlsZXMiIHwgc2VkICdzLy4qL0ZbIiYiXT0iJCYiLycgJiYKKyAgZWNobyAiX0FDQVdLIiAmJgorICBlY2hvICJfQUNFT0YiCit9ID5jb25mJCRmaWxlcy5zaCAmJgorLiAuL2NvbmYkJGZpbGVzLnNoIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKK3JtIC1mIGNvbmYkJGZpbGVzLnNoCisKK3sKKyAgZWNobyAiY2F0ID5jb25mJCRzdWJzLmF3ayA8PF9BQ0VPRiIgJiYKKyAgZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgc2VkICdzLy4qLyYhJCYkYWNfZGVsaW0vJyAmJgorICBlY2hvICJfQUNFT0YiCit9ID5jb25mJCRzdWJzLnNoIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgbWFrZSAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKK2FjX2RlbGltX251bT1gZWNobyAiJGFjX3N1YnN0X3ZhcnMiIHwgZ3JlcCAtYyAnXidgCithY19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIGZhbHNlIDo7IGRvCisgIC4gLi9jb25mJCRzdWJzLnNoIHx8CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorCisgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgCisgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCisgICAgYnJlYWsKKyAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgIGVsc2UKKyAgICBhY19kZWxpbT0iJGFjX2RlbGltISRhY19kZWxpbSBfJGFjX2RlbGltISEgIgorICBmaQorZG9uZQorcm0gLWYgY29uZiQkc3Vicy5zaAorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8XFxfQUNBV0sgJiYKK19BQ0VPRgorc2VkIC1uICcKK2gKK3MvXi9TWyIvOyBzLyEuKi8iXT0vCitwCitnCitzL15bXiFdKiEvLworOnJlcGwKK3QgcmVwbAorcy8nIiRhY19kZWxpbSInJC8vCit0IGRlbGltCis6bmwKK2gKK3MvXCguXHsxNDhcfVwpLi4qL1wxLwordCBtb3JlMQorcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvXFxuIlxcLworcAorbgorYiByZXBsCis6bW9yZTEKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwordCBubAorOmRlbGltCitoCitzL1woLlx7MTQ4XH1cKS4uKi9cMS8KK3QgbW9yZTIKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyIvCitwCitiCis6bW9yZTIKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kLyJcXC8KK3AKK2cKK3MvLlx7MTQ4XH0vLwordCBkZWxpbQorJyA8Y29uZiQkc3Vicy5hd2sgfCBzZWQgJworL15bXiIiXS97CisgIE4KKyAgcy9cbi8vCit9CisnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCitybSAtZiBjb25mJCRzdWJzLmF3aworY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitfQUNBV0sKK2NhdCA+PiJcJGFjX3RtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCisgIGZvciAoa2V5IGluIFMpIFNfaXNfc2V0W2tleV0gPSAxCisgIEZTID0gIgciCisgIFwkYWNfY3NfYXdrX3BpcGVfaW5pdAorfQoreworICBsaW5lID0gJCAwCisgIG5maWVsZHMgPSBzcGxpdChsaW5lLCBmaWVsZCwgIkAiKQorICBzdWJzdGVkID0gMAorICBsZW4gPSBsZW5ndGgoZmllbGRbMV0pCisgIGZvciAoaSA9IDI7IGkgPCBuZmllbGRzOyBpKyspIHsKKyAgICBrZXkgPSBmaWVsZFtpXQorICAgIGtleWxlbiA9IGxlbmd0aChrZXkpCisgICAgaWYgKFNfaXNfc2V0W2tleV0pIHsKKyAgICAgIHZhbHVlID0gU1trZXldCisgICAgICBsaW5lID0gc3Vic3RyKGxpbmUsIDEsIGxlbikgIiIgdmFsdWUgIiIgc3Vic3RyKGxpbmUsIGxlbiArIGtleWxlbiArIDMpCisgICAgICBsZW4gKz0gbGVuZ3RoKHZhbHVlKSArIGxlbmd0aChmaWVsZFsrK2ldKQorICAgICAgc3Vic3RlZCA9IDEKKyAgICB9IGVsc2UKKyAgICAgIGxlbiArPSAxICsga2V5bGVuCisgIH0KKyAgaWYgKG5maWVsZHMgPT0gMyAmJiAhc3Vic3RlZCkgeworICAgIGtleSA9IGZpZWxkWzJdCisgICAgaWYgKEZba2V5XSAhPSAiIiAmJiBsaW5lIH4gL15bCSBdKkAuKkBbCSBdKiQvKSB7CisgICAgICBcJGFjX2NzX2F3a19yZWFkX2ZpbGUKKyAgICAgIG5leHQKKyAgICB9CisgIH0KKyAgcHJpbnQgbGluZQorfQorXCRhY19jc19hd2tfcGlwZV9maW5pCitfQUNBV0sKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQoraWYgc2VkICJzLyRhY19jci8vIiA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIHNlZCAicy8kYWNfY3JcJC8vOyBzLyRhY19jci8kYWNfY3NfYXdrX2NyL2ciCitlbHNlCisgIGNhdAorZmkgPCAiJGFjX3RtcC9zdWJzMS5hd2siID4gIiRhY190bXAvc3Vicy5hd2siIFwKKyAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBzZXR1cCBjb25maWcgZmlsZXMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQorX0FDRU9GCisKKyMgVlBBVEggbWF5IGNhdXNlIHRyb3VibGUgd2l0aCBzb21lIG1ha2VzLCBzbyB3ZSByZW1vdmUgc29sZSAkKHNyY2RpciksCisjICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZW50cmllcyBmcm9tIFZQQVRIIGlmIHNyY2RpciBpcyAiLiIsIHN0cmlwIGxlYWRpbmcgYW5kCisjIHRyYWlsaW5nIGNvbG9ucyBhbmQgdGhlbiByZW1vdmUgdGhlIHdob2xlIGxpbmUgaWYgVlBBVEggYmVjb21lcyBlbXB0eQorIyAoYWN0dWFsbHkgd2UgbGVhdmUgYW4gZW1wdHkgbGluZSB0byBwcmVzZXJ2ZSBsaW5lIG51bWJlcnMpLgoraWYgdGVzdCAieCRzcmNkaXIiID0geC47IHRoZW4KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKK2gKK3MvLy8KK3MvXi86Lworcy9bCSBdKiQvOi8KK3MvOlwkKHNyY2Rpcik6LzovZworcy86XCR7c3JjZGlyfTovOi9nCitzLzpAc3JjZGlyQDovOi9nCitzL146Ki8vCitzLzoqJC8vCit4CitzL1woPVsJIF0qXCkuKi9cMS8KK0cKK3MvXG4vLworcy9eW149XSo9WwkgXSokLy8KK30nCitmaQorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCitmaSAjIHRlc3QgLW4gIiRDT05GSUdfRklMRVMiCisKKyMgU2V0IHVwIHRoZSBzY3JpcHRzIGZvciBDT05GSUdfSEVBREVSUyBzZWN0aW9uLgorIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19IRUFERVJTLgorIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBNYWtlZmlsZScuCitpZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCitjYXQgPiIkYWNfdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKK0JFR0lOIHsKK19BQ0VPRgorCisjIFRyYW5zZm9ybSBjb25mZGVmcy5oIGludG8gYW4gYXdrIHNjcmlwdCBgZGVmaW5lcy5hd2snLCBlbWJlZGRlZCBhcworIyBoZXJlLWRvY3VtZW50IGluIGNvbmZpZy5zdGF0dXMsIHRoYXQgc3Vic3RpdHV0ZXMgdGhlIHByb3BlciB2YWx1ZXMgaW50bworIyBjb25maWcuaC5pbiB0byBwcm9kdWNlIGNvbmZpZy5oLgorCisjIENyZWF0ZSBhIGRlbGltaXRlciBzdHJpbmcgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBjb25mZGVmcy5oLCB0byBlYXNlCisjIGhhbmRsaW5nIG9mIGxvbmcgbGluZXMuCithY19kZWxpbT0nJSFfISMgJworZm9yIGFjX2xhc3RfdHJ5IGluIGZhbHNlIGZhbHNlIDo7IGRvCisgIGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3R0IjsgdGhlbgorICAgIGJyZWFrCisgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKKyAgZWxzZQorICAgIGFjX2RlbGltPSIkYWNfZGVsaW0hJGFjX2RlbGltIF8kYWNfZGVsaW0hISAiCisgIGZpCitkb25lCisKKyMgRm9yIHRoZSBhd2sgc2NyaXB0LCBEIGlzIGFuIGFycmF5IG9mIG1hY3JvIHZhbHVlcyBrZXllZCBieSBuYW1lLAorIyBsaWtld2lzZSBQIGNvbnRhaW5zIG1hY3JvIHBhcmFtZXRlcnMgaWYgYW55LiAgUHJlc2VydmUgYmFja3NsYXNoCisjIG5ld2xpbmUgc2VxdWVuY2VzLgorCithY193b3JkX3JlPVtfJGFzX2NyX0xldHRlcnNdW18kYXNfY3JfYWxudW1dKgorc2VkIC1uICcKK3MvLlx7MTQ4XH0vJiciJGFjX2RlbGltIicvZwordCByc2V0Cis6cnNldAorcy9eWwkgXSojWwkgXSpkZWZpbmVbCSBdWwkgXSovIC8KK3QgZGVmCitkCis6ZGVmCitzL1xcJC8vCit0IGJzbmwKK3MvWyJcXF0vXFwmL2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorRFsiXDEiXT0iIFwzIi9wCitzL14gXCgnIiRhY193b3JkX3JlIidcKVsJIF0qXCguKlwpL0RbIlwxIl09IiBcMiIvcAorZAorOmJzbmwKK3MvWyJcXF0vXFwmL2cKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpXCgoW14oKV0qKVwpWwkgXSpcKC4qXCkvUFsiXDEiXT0iXDIiXAorRFsiXDEiXT0iIFwzXFxcXFxcbiJcXC9wCit0IGNvbnQKK3MvXiBcKCciJGFjX3dvcmRfcmUiJ1wpWwkgXSpcKC4qXCkvRFsiXDEiXT0iIFwyXFxcXFxcbiJcXC9wCit0IGNvbnQKK2QKKzpjb250CituCitzLy5cezE0OFx9LyYnIiRhY19kZWxpbSInL2cKK3QgY2xlYXIKKzpjbGVhcgorcy9cXCQvLwordCBic25sYworcy9bIlxcXS9cXCYvZzsgcy9eLyIvOyBzLyQvIi9wCitkCis6YnNubGMKK3MvWyJcXF0vXFwmL2c7IHMvXi8iLzsgcy8kL1xcXFxcXG4iXFwvcAorYiBjb250CisnIDxjb25mZGVmcy5oIHwgc2VkICcKK3MvJyIkYWNfZGVsaW0iJy8iXFxcCisiL2cnID4+JENPTkZJR19TVEFUVVMgfHwgYWNfd3JpdGVfZmFpbD0xCisKK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorICBmb3IgKGtleSBpbiBEKSBEX2lzX3NldFtrZXldID0gMQorICBGUyA9ICIHIgorfQorL15bXHQgXSojW1x0IF0qKGRlZmluZXx1bmRlZilbXHQgXSskYWNfd29yZF9yZShbXHQgKF18XCQpLyB7CisgIGxpbmUgPSBcJCAwCisgIHNwbGl0KGxpbmUsIGFyZywgIiAiKQorICBpZiAoYXJnWzFdID09ICIjIikgeworICAgIGRlZnVuZGVmID0gYXJnWzJdCisgICAgbWFjMSA9IGFyZ1szXQorICB9IGVsc2UgeworICAgIGRlZnVuZGVmID0gc3Vic3RyKGFyZ1sxXSwgMikKKyAgICBtYWMxID0gYXJnWzJdCisgIH0KKyAgc3BsaXQobWFjMSwgbWFjMiwgIigiKSAjKQorICBtYWNybyA9IG1hYzJbMV0KKyAgcHJlZml4ID0gc3Vic3RyKGxpbmUsIDEsIGluZGV4KGxpbmUsIGRlZnVuZGVmKSAtIDEpCisgIGlmIChEX2lzX3NldFttYWNyb10pIHsKKyAgICAjIFByZXNlcnZlIHRoZSB3aGl0ZSBzcGFjZSBzdXJyb3VuZGluZyB0aGUgIiMiLgorICAgIHByaW50IHByZWZpeCAiZGVmaW5lIiwgbWFjcm8gUFttYWNyb10gRFttYWNyb10KKyAgICBuZXh0CisgIH0gZWxzZSB7CisgICAgIyBSZXBsYWNlICN1bmRlZiB3aXRoIGNvbW1lbnRzLiAgVGhpcyBpcyBuZWNlc3NhcnksIGZvciBleGFtcGxlLAorICAgICMgaW4gdGhlIGNhc2Ugb2YgX1BPU0lYX1NPVVJDRSwgd2hpY2ggaXMgcHJlZGVmaW5lZCBhbmQgcmVxdWlyZWQKKyAgICAjIG9uIHNvbWUgc3lzdGVtcyB3aGVyZSBjb25maWd1cmUgd2lsbCBub3QgZGVjaWRlIHRvIGRlZmluZSBpdC4KKyAgICBpZiAoZGVmdW5kZWYgPT0gInVuZGVmIikgeworICAgICAgcHJpbnQgIi8qIiwgcHJlZml4IGRlZnVuZGVmLCBtYWNybywgIiovIgorICAgICAgbmV4dAorICAgIH0KKyAgfQorfQoreyBwcmludCB9CitfQUNBV0sKK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxcX0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKK2ZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIgorCisKK2V2YWwgc2V0IFggIiAgOkYgJENPTkZJR19GSUxFUyAgOkggJENPTkZJR19IRUFERVJTICAgIDpDICRDT05GSUdfQ09NTUFORFMiCitzaGlmdAorZm9yIGFjX3RhZworZG8KKyAgY2FzZSAkYWNfdGFnIGluCisgIDpbRkhMQ10pIGFjX21vZGU9JGFjX3RhZzsgY29udGludWU7OworICBlc2FjCisgIGNhc2UgJGFjX21vZGUkYWNfdGFnIGluCisgIDpbRkhMXSo6Kik7OworICA6TCogfCA6Qyo6KikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdGFnIFxgJGFjX3RhZyciICIkTElORU5PIiA1OzsKKyAgOltGSF0tKSBhY190YWc9LTotOzsKKyAgOltGSF0qKSBhY190YWc9JGFjX3RhZzokYWNfdGFnLmluOzsKKyAgZXNhYworICBhY19zYXZlX0lGUz0kSUZTCisgIElGUz06CisgIHNldCB4ICRhY190YWcKKyAgSUZTPSRhY19zYXZlX0lGUworICBzaGlmdAorICBhY19maWxlPSQxCisgIHNoaWZ0CisKKyAgY2FzZSAkYWNfbW9kZSBpbgorICA6TCkgYWNfc291cmNlPSQxOzsKKyAgOltGSF0pCisgICAgYWNfZmlsZV9pbnB1dHM9CisgICAgZm9yIGFjX2YKKyAgICBkbworICAgICAgY2FzZSAkYWNfZiBpbgorICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7OworICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0aGUgc291cmNlIHRyZWUKKwkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCisJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCisJIHRlc3QgLWYgIiRhY19mIiB8fAorCSAgIGNhc2UgJGFjX2YgaW4KKwkgICBbXFwvJF0qKSBmYWxzZTs7CisJICAgKikgdGVzdCAtZiAiJHNyY2Rpci8kYWNfZiIgJiYgYWNfZj0iJHNyY2Rpci8kYWNfZiI7OworCSAgIGVzYWMgfHwKKwkgICBhc19mbl9lcnJvciAxICJjYW5ub3QgZmluZCBpbnB1dCBmaWxlOiBcYCRhY19mJyIgIiRMSU5FTk8iIDU7OworICAgICAgZXNhYworICAgICAgY2FzZSAkYWNfZiBpbiAqXCcqKSBhY19mPWAkYXNfZWNobyAiJGFjX2YiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsgZXNhYworICAgICAgYXNfZm5fYXBwZW5kIGFjX2ZpbGVfaW5wdXRzICIgJyRhY19mJyIKKyAgICBkb25lCisKKyAgICAjIExldCdzIHN0aWxsIHByZXRlbmQgaXQgaXMgYGNvbmZpZ3VyZScgd2hpY2ggaW5zdGFudGlhdGVzIChpLmUuLCBkb24ndAorICAgICMgdXNlICRhc19tZSksIHBlb3BsZSB3b3VsZCBiZSBzdXJwcmlzZWQgdG8gcmVhZDoKKyAgICAjICAgIC8qIGNvbmZpZy5oLiAgR2VuZXJhdGVkIGJ5IGNvbmZpZy5zdGF0dXMuICAqLworICAgIGNvbmZpZ3VyZV9pbnB1dD0nR2VuZXJhdGVkIGZyb20gJ2AKKwkgICRhc19lY2hvICIkKiIgfCBzZWQgJ3N8XlteOl0qL3x8O3N8OlteOl0qL3wsIHxnJworCWAnIGJ5IGNvbmZpZ3VyZS4nCisgICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgorICAgICAgY29uZmlndXJlX2lucHV0PSIkYWNfZmlsZS4gICRjb25maWd1cmVfaW5wdXQiCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNyZWF0aW5nICRhY19maWxlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGNyZWF0aW5nICRhY19maWxlIiA+JjY7fQorICAgIGZpCisgICAgIyBOZXV0cmFsaXplIHNwZWNpYWwgY2hhcmFjdGVycyBpbnRlcnByZXRlZCBieSBzZWQgaW4gcmVwbGFjZW1lbnQgc3RyaW5ncy4KKyAgICBjYXNlICRjb25maWd1cmVfaW5wdXQgaW4gIygKKyAgICAqXCYqIHwgKlx8KiB8ICpcXCogKQorICAgICAgIGFjX3NlZF9jb25mX2lucHV0PWAkYXNfZWNobyAiJGNvbmZpZ3VyZV9pbnB1dCIgfAorICAgICAgIHNlZCAncy9bXFxcXCZ8XS9cXFxcJi9nJ2A7OyAjKAorICAgICopIGFjX3NlZF9jb25mX2lucHV0PSRjb25maWd1cmVfaW5wdXQ7OworICAgIGVzYWMKKworICAgIGNhc2UgJGFjX3RhZyBpbgorICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgZXNhYworCisgIGFjX2Rpcj1gJGFzX2Rpcm5hbWUgLS0gIiRhY19maWxlIiB8fAorJGFzX2V4cHIgWCIkYWNfZmlsZSIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgWCIkYWNfZmlsZSIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CiskYXNfZWNobyBYIiRhY19maWxlIiB8CisgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkgICAgcy8vXDEvCisJICAgIHEKKwkgIH0KKwkgIC9eWFwoXC9cL1wpJC97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICAvXlhcKFwvXCkuKi97CisJICAgIHMvL1wxLworCSAgICBxCisJICB9CisJICBzLy4qLy4vOyBxJ2AKKyAgYXNfZGlyPSIkYWNfZGlyIjsgYXNfZm5fbWtkaXJfcAorICBhY19idWlsZGRpcj0uCisKK2Nhc2UgIiRhY19kaXIiIGluCisuKSBhY19kaXJfc3VmZml4PSBhY190b3BfYnVpbGRkaXJfc3ViPS4gYWNfdG9wX2J1aWxkX3ByZWZpeD0gOzsKKyopCisgIGFjX2Rpcl9zdWZmaXg9L2AkYXNfZWNobyAiJGFjX2RpciIgfCBzZWQgJ3N8XlwuW1xcL118fCdgCisgICMgQSAiLi4iIGZvciBlYWNoIGRpcmVjdG9yeSBpbiAkYWNfZGlyX3N1ZmZpeC4KKyAgYWNfdG9wX2J1aWxkZGlyX3N1Yj1gJGFzX2VjaG8gIiRhY19kaXJfc3VmZml4IiB8IHNlZCAnc3wvW15cXC9dKnwvLi58ZztzfC98fCdgCisgIGNhc2UgJGFjX3RvcF9idWlsZGRpcl9zdWIgaW4KKyAgIiIpIGFjX3RvcF9idWlsZGRpcl9zdWI9LiBhY190b3BfYnVpbGRfcHJlZml4PSA7OworICAqKSAgYWNfdG9wX2J1aWxkX3ByZWZpeD0kYWNfdG9wX2J1aWxkZGlyX3N1Yi8gOzsKKyAgZXNhYyA7OworZXNhYworYWNfYWJzX3RvcF9idWlsZGRpcj0kYWNfcHdkCithY19hYnNfYnVpbGRkaXI9JGFjX3B3ZCRhY19kaXJfc3VmZml4CisjIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OgorYWNfdG9wX2J1aWxkZGlyPSRhY190b3BfYnVpbGRfcHJlZml4CisKK2Nhc2UgJHNyY2RpciBpbgorICAuKSAgIyBXZSBhcmUgYnVpbGRpbmcgaW4gcGxhY2UuCisgICAgYWNfc3JjZGlyPS4KKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRkaXJfc3ViCisgICAgYWNfYWJzX3RvcF9zcmNkaXI9JGFjX3B3ZCA7OworICBbXFwvXSogfCA/OltcXC9dKiApICAjIEFic29sdXRlIG5hbWUuCisgICAgYWNfc3JjZGlyPSRzcmNkaXIkYWNfZGlyX3N1ZmZpeDsKKyAgICBhY190b3Bfc3JjZGlyPSRzcmNkaXIKKyAgICBhY19hYnNfdG9wX3NyY2Rpcj0kc3JjZGlyIDs7CisgICopICMgUmVsYXRpdmUgbmFtZS4KKyAgICBhY19zcmNkaXI9JGFjX3RvcF9idWlsZF9wcmVmaXgkc3JjZGlyJGFjX2Rpcl9zdWZmaXgKKyAgICBhY190b3Bfc3JjZGlyPSRhY190b3BfYnVpbGRfcHJlZml4JHNyY2RpcgorICAgIGFjX2Fic190b3Bfc3JjZGlyPSRhY19wd2QvJHNyY2RpciA7OworZXNhYworYWNfYWJzX3NyY2Rpcj0kYWNfYWJzX3RvcF9zcmNkaXIkYWNfZGlyX3N1ZmZpeAorCisKKyAgY2FzZSAkYWNfbW9kZSBpbgorICA6RikKKyAgIworICAjIENPTkZJR19GSUxFCisgICMKKworICBjYXNlICRJTlNUQUxMIGluCisgIFtcXC8kXSogfCA/OltcXC9dKiApIGFjX0lOU1RBTEw9JElOU1RBTEwgOzsKKyAgKikgYWNfSU5TVEFMTD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRJTlNUQUxMIDs7CisgIGVzYWMKKyAgYWNfTUtESVJfUD0kTUtESVJfUAorICBjYXNlICRNS0RJUl9QIGluCisgIFtcXC8kXSogfCA/OltcXC9dKiApIDs7CisgICovKikgYWNfTUtESVJfUD0kYWNfdG9wX2J1aWxkX3ByZWZpeCRNS0RJUl9QIDs7CisgIGVzYWMKK19BQ0VPRgorCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisjIElmIHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBrbm93IGFib3V0IGRhdGFyb290ZGlyLCBleHBhbmQgaXQuCisjIEZJWE1FOiBUaGlzIGhhY2sgc2hvdWxkIGJlIHJlbW92ZWQgYSBmZXcgeWVhcnMgYWZ0ZXIgMi42MC4KK2FjX2RhdGFyb290ZGlyX2hhY2s9OyBhY19kYXRhcm9vdGRpcl9zZWVuPQorYWNfc2VkX2RhdGFyb290PScKKy9kYXRhcm9vdGRpci8geworICBwCisgIHEKK30KKy9AZGF0YWRpckAvcAorL0Bkb2NkaXJAL3AKKy9AaW5mb2RpckAvcAorL0Bsb2NhbGVkaXJAL3AKKy9AbWFuZGlyQC9wJworY2FzZSBgZXZhbCAic2VkIC1uIFwiXCRhY19zZWRfZGF0YXJvb3RcIiAkYWNfZmlsZV9pbnB1dHMiYCBpbgorKmRhdGFyb290ZGlyKikgYWNfZGF0YXJvb3RkaXJfc2Vlbj15ZXM7OworKkBkYXRhZGlyQCp8KkBkb2NkaXJAKnwqQGluZm9kaXJAKnwqQGxvY2FsZWRpckAqfCpAbWFuZGlyQCopCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJGFjX2ZpbGVfaW5wdXRzIHNlZW1zIHRvIGlnbm9yZSB0aGUgLS1kYXRhcm9vdGRpciBzZXR0aW5nIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlX2lucHV0cyBzZWVtcyB0byBpZ25vcmUgdGhlIC0tZGF0YXJvb3RkaXIgc2V0dGluZyIgPiYyO30KK19BQ0VPRgorY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCisgIGFjX2RhdGFyb290ZGlyX2hhY2s9JworICBzJkBkYXRhZGlyQCYkZGF0YWRpciZnCisgIHMmQGRvY2RpckAmJGRvY2RpciZnCisgIHMmQGluZm9kaXJAJiRpbmZvZGlyJmcKKyAgcyZAbG9jYWxlZGlyQCYkbG9jYWxlZGlyJmcKKyAgcyZAbWFuZGlyQCYkbWFuZGlyJmcKKyAgcyZcXFwke2RhdGFyb290ZGlyfSYkZGF0YXJvb3RkaXImZycgOzsKK2VzYWMKK19BQ0VPRgorCisjIE5ldXRyYWxpemUgVlBBVEggd2hlbiBgJHNyY2RpcicgPSBgLicuCisjIFNoZWxsIGNvZGUgaW4gY29uZmlndXJlLmFjIG1pZ2h0IHNldCBleHRyYXN1Yi4KKyMgRklYTUU6IGRvIHdlIHJlYWxseSB3YW50IHRvIG1haW50YWluIHRoaXMgZmVhdHVyZT8KK2NhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQorYWNfc2VkX2V4dHJhPSIkYWNfdnBzdWIKKyRleHRyYXN1YgorX0FDRU9GCitjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCis6dAorL0BbYS16QS1aX11bYS16QS1aXzAtOV0qQC8hYgorc3xAY29uZmlndXJlX2lucHV0QHwkYWNfc2VkX2NvbmZfaW5wdXR8O3QgdAorcyZAdG9wX2J1aWxkZGlyQCYkYWNfdG9wX2J1aWxkZGlyX3N1YiY7dCB0CitzJkB0b3BfYnVpbGRfcHJlZml4QCYkYWNfdG9wX2J1aWxkX3ByZWZpeCY7dCB0CitzJkBzcmNkaXJAJiRhY19zcmNkaXImO3QgdAorcyZAYWJzX3NyY2RpckAmJGFjX2Fic19zcmNkaXImO3QgdAorcyZAdG9wX3NyY2RpckAmJGFjX3RvcF9zcmNkaXImO3QgdAorcyZAYWJzX3RvcF9zcmNkaXJAJiRhY19hYnNfdG9wX3NyY2RpciY7dCB0CitzJkBidWlsZGRpckAmJGFjX2J1aWxkZGlyJjt0IHQKK3MmQGFic19idWlsZGRpckAmJGFjX2Fic19idWlsZGRpciY7dCB0CitzJkBhYnNfdG9wX2J1aWxkZGlyQCYkYWNfYWJzX3RvcF9idWlsZGRpciY7dCB0CitzJkBJTlNUQUxMQCYkYWNfSU5TVEFMTCY7dCB0CitzJkBNS0RJUl9QQCYkYWNfTUtESVJfUCY7dCB0CiskYWNfZGF0YXJvb3RkaXJfaGFjaworIgorZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwKK2lmICRhY19jc19hd2tfZ2V0bGluZTsgdGhlbgorICAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIgorZWxzZQorICAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiB8ICRTSEVMTAorZmkgXAorICA+JGFjX3RtcC9vdXQgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisKK3Rlc3QgLXogIiRhY19kYXRhcm9vdGRpcl9oYWNrJGFjX2RhdGFyb290ZGlyX3NlZW4iICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwKKyAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJword2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQorCisgIHJtIC1mICIkYWNfdG1wL3N0ZGluIgorICBjYXNlICRhY19maWxlIGluCisgIC0pIGNhdCAiJGFjX3RtcC9vdXQiICYmIHJtIC1mICIkYWNfdG1wL291dCI7OworICAqKSBybSAtZiAiJGFjX2ZpbGUiICYmIG12ICIkYWNfdG1wL291dCIgIiRhY19maWxlIjs7CisgIGVzYWMgXAorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKKyA7OworICA6SCkKKyAgIworICAjIENPTkZJR19IRUFERVIKKyAgIworICBpZiB0ZXN0IHgiJGFjX2ZpbGUiICE9IHgtOyB0aGVuCisgICAgeworICAgICAgJGFzX2VjaG8gIi8qICRjb25maWd1cmVfaW5wdXQgICovIiBcCisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKKyAgICB9ID4iJGFjX3RtcC9jb25maWcuaCIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KKyAgICBlbHNlCisgICAgICBybSAtZiAiJGFjX2ZpbGUiCisgICAgICBtdiAiJGFjX3RtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCisJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgZmkKKyAgZWxzZQorICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAorICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJGFjX3RtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKKyAgICAgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CisgIGZpCisgOzsKKworICA6QykgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXhlY3V0aW5nICRhY19maWxlIGNvbW1hbmRzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGV4ZWN1dGluZyAkYWNfZmlsZSBjb21tYW5kcyIgPiY2O30KKyA7OworICBlc2FjCisKKworICBjYXNlICRhY19maWxlJGFjX21vZGUgaW4KKyAgICAicG8tZGlyZWN0b3JpZXMiOkMpCisgICAgZm9yIGFjX2ZpbGUgaW4gJENPTkZJR19GSUxFUzsgZG8KKyAgICAgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIKKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbgorICAgICAgICAqOiopIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlOi4qJSUnYCA7OworICAgICAgZXNhYworICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCisgICAgICBjYXNlICIkYWNfZmlsZSIgaW4gKi9NYWtlZmlsZS5pbikKKyAgICAgICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCisgICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKKyAgICAgICAgYWNfZGlyX3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYAorICAgICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCisgICAgICAgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgorICAgICAgICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCisgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OworICAgICAgICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICAgICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgIyBUcmVhdCBhIGRpcmVjdG9yeSBhcyBhIFBPIGRpcmVjdG9yeSBpZiBhbmQgb25seSBpZiBpdCBoYXMgYQorICAgICAgICAjIFBPVEZJTEVTLmluIGZpbGUuIFRoaXMgYWxsb3dzIHBhY2thZ2VzIHRvIGhhdmUgbXVsdGlwbGUgUE8KKyAgICAgICAgIyBkaXJlY3RvcmllcyB1bmRlciBkaWZmZXJlbnQgbmFtZXMgb3IgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KKyAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIjsgdGhlbgorICAgICAgICAgIHJtIC1mICIkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIGd0X3RhYj1gcHJpbnRmICdcdCdgCisgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAke2d0X3RhYn1dKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCisgICAgICAgICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgorICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCisgICAgICAgICAgIyBvbiAkYWNfZGlyIGJ1dCBkb24ndCBkZXBlbmQgb24gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbgorICAgICAgICAgICMgcGFyYW1ldGVycy4KKyAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgQUxMX0xJTkdVQVNfPWBzZWQgLWUgIi9eIy9kIiAtZSAicy8jLiovLyIgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTImAKKyAgICAgICAgICAgICMgSGlkZSB0aGUgQUxMX0xJTkdVQVMgYXNzaWdubWVudCBmcm9tIGF1dG9tYWtlIDwgMS41LgorICAgICAgICAgICAgZXZhbCAnQUxMX0xJTkdVQVMnJz0kQUxMX0xJTkdVQVNfJworICAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgVGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzIHdhcyBnaXZlbiBpbiBjb25maWd1cmUuaW4uCisgICAgICAgICAgICAjIEhpZGUgdGhlIEFMTF9MSU5HVUFTIGFzc2lnbm1lbnQgZnJvbSBhdXRvbWFrZSA8IDEuNS4KKyAgICAgICAgICAgIGV2YWwgJ0FMTF9MSU5HVUFTJyc9JE9CU09MRVRFX0FMTF9MSU5HVUFTJworICAgICAgICAgIGZpCisgICAgICAgICAgIyBDb21wdXRlIFBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKKyAgICAgICAgICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUworICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQorICAgICAgICAgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKKyAgICAgICAgICAjIENvbXB1dGUgR01PRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCisgICAgICAgICAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAgICAgICAgIC4pIHNyY2RpcnByZT0gOzsKKyAgICAgICAgICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgUE9GSUxFUz0KKyAgICAgICAgICBVUERBVEVQT0ZJTEVTPQorICAgICAgICAgIERVTU1ZUE9GSUxFUz0KKyAgICAgICAgICBHTU9GSUxFUz0KKyAgICAgICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICAgICAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCisgICAgICAgICAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCisgICAgICAgICAgICBEVU1NWVBPRklMRVM9IiREVU1NWVBPRklMRVMgJGxhbmcubm9wIgorICAgICAgICAgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgorICAgICAgICAgIGRvbmUKKyAgICAgICAgICAjIENBVEFMT0dTIGRlcGVuZHMgb24gYm90aCAkYWNfZGlyIGFuZCB0aGUgdXNlcidzIExJTkdVQVMKKyAgICAgICAgICAjIGVudmlyb25tZW50IHZhcmlhYmxlLgorICAgICAgICAgIElOU1RfTElOR1VBUz0KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgcHJlc2VudGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICB1c2VpdD1ubworICAgICAgICAgICAgICBpZiB0ZXN0ICIlVU5TRVQlIiAhPSAiJExJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJExJTkdVQVMiCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkQUxMX0xJTkdVQVMiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJlc2VudGxhbmcgY2F0YWxvZyBpZiBkZXNpcmVkbGFuZyBpcworICAgICAgICAgICAgICAgICMgICBhLiBlcXVhbCB0byBwcmVzZW50bGFuZywgb3IKKyAgICAgICAgICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgICAgICAjICAgICAgcHJlc2VudGxhbmcgY2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAjICAgICAgd2hpY2ggYXJlIG5vdCB0cmFuc2xhdGVkIGluIHRoZSBkZXNpcmVkbGFuZyBjYXRhbG9nKS4KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCisgICAgICAgICAgICAgICAgICAiJHByZXNlbnRsYW5nIiopIHVzZWl0PXllczs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgIGlmIHRlc3QgJHVzZWl0ID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgSU5TVF9MSU5HVUFTPSIkSU5TVF9MSU5HVUFTICRwcmVzZW50bGFuZyIKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIENBVEFMT0dTPQorICAgICAgICAgIGlmIHRlc3QgLW4gIiRJTlNUX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbworICAgICAgICAgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIHNlZCAtZSAiL15QT1RGSUxFUyA9L3IgJGFjX2Rpci9QT1RGSUxFUyIgLWUgIi9eIyBNYWtldmFycy9yICRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9NYWtldmFycyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBDQVRBTE9HU0B8JENBVEFMT0dTfGciIC1lICJzfEBQT01BS0VGSUxFREVQU0B8JFBPTUFLRUZJTEVERVBTfGciICIkYWNfZGlyL01ha2VmaWxlLmluIiA+ICIkYWNfZGlyL01ha2VmaWxlIgorICAgICAgICAgIGZvciBmIGluICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIiL1J1bGVzLSo7IGRvCisgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KKyAgICAgICAgICAgICAgY2FzZSAiJGYiIGluCisgICAgICAgICAgICAgICAgKi5vcmlnIHwgKi5iYWsgfCAqfikgOzsKKyAgICAgICAgICAgICAgICAqKSBjYXQgIiRmIiA+PiAiJGFjX2Rpci9NYWtlZmlsZSIgOzsKKyAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgZmkKKyAgICAgICAgICBkb25lCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZG9uZSA7OworCisgIGVzYWMKK2RvbmUgIyBmb3IgYWNfdGFnCisKKworYXNfZm5fZXhpdCAwCitfQUNFT0YKK2FjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCisKK3Rlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorCisKKyMgY29uZmlndXJlIGlzIHdyaXRpbmcgdG8gY29uZmlnLmxvZywgYW5kIHRoZW4gY2FsbHMgY29uZmlnLnN0YXR1cy4KKyMgY29uZmlnLnN0YXR1cyBkb2VzIGl0cyBvd24gcmVkaXJlY3Rpb24sIGFwcGVuZGluZyB0byBjb25maWcubG9nLgorIyBVbmZvcnR1bmF0ZWx5LCBvbiBET1MgdGhpcyBmYWlscywgYXMgY29uZmlnLmxvZyBpcyBzdGlsbCBrZXB0IG9wZW4KKyMgYnkgY29uZmlndXJlLCBzbyBjb25maWcuc3RhdHVzIHdvbid0IGJlIGFibGUgdG8gd3JpdGUgdG8gaXQ7IGl0cworIyBvdXRwdXQgaXMgc2ltcGx5IGRpc2NhcmRlZC4gIFNvIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwKKyMgZWZmZWN0aXZlbHkgY2xvc2luZyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQKKyMgYXBwZW5kZWQgdG8gYnkgY29uZmlnLnN0YXR1cy4gIFdoZW4gY29taW5nIGJhY2sgdG8gY29uZmlndXJlLCB3ZQorIyBuZWVkIHRvIG1ha2UgdGhlIEZEIGF2YWlsYWJsZSBhZ2Fpbi4KK2lmIHRlc3QgIiRub19jcmVhdGUiICE9IHllczsgdGhlbgorICBhY19jc19zdWNjZXNzPToKKyAgYWNfY29uZmlnX3N0YXR1c19hcmdzPQorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICAgIGFjX2NvbmZpZ19zdGF0dXNfYXJncz0iJGFjX2NvbmZpZ19zdGF0dXNfYXJncyAtLXF1aWV0IgorICBleGVjIDU+L2Rldi9udWxsCisgICRTSEVMTCAkQ09ORklHX1NUQVRVUyAkYWNfY29uZmlnX3N0YXR1c19hcmdzIHx8IGFjX2NzX3N1Y2Nlc3M9ZmFsc2UKKyAgZXhlYyA1Pj5jb25maWcubG9nCisgICMgVXNlIHx8LCBub3QgJiYsIHRvIGF2b2lkIGV4aXRpbmcgZnJvbSB0aGUgaWYgd2l0aCAkPyA9IDEsIHdoaWNoCisgICMgd291bGQgbWFrZSBjb25maWd1cmUgZmFpbCBpZiB0aGlzIGlzIHRoZSBsYXN0IGluc3RydWN0aW9uLgorICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0IDEKK2ZpCitpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyO30KK2ZpCisKK2lmIHRlc3QgLWYgdXRpbC9nZW4tdGFyYmFsbDsgdGhlbiBjaG1vZCAreCB1dGlsL2dlbi10YXJiYWxsOyBmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbmZpZ3VyZS5hYyBiL2UyZnNwcm9ncy9jb25maWd1cmUuYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM3MzMwMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb25maWd1cmUuYWMKQEAgLTAsMCArMSwxNDc1IEBACitBQ19JTklUKHZlcnNpb24uaCkKK0FDX1BSRVJFUSgyLjU0KQorQUNfQ09ORklHX0FVWF9ESVIoY29uZmlnKQorQUNfQ09ORklHX0hFQURFUlMoW2xpYi9jb25maWcuaF0pCitBSF9CT1RUT00oWyNpbmNsdWRlIDxkaXJwYXRocy5oPl0pCitNQ09ORklHPS4vTUNPTkZJRworQUNfU1VCU1RfRklMRShNQ09ORklHKQorQklOQVJZX1RZUEU9YmluCitkbmwKK2RubCBUaGlzIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIHZlcnNpb24gbnVtYmVyIGFuZCB0aGUgZGF0ZS4uLi4KK2RubAorRTJGU1BST0dTX1ZFUlNJT049YGdyZXAgRTJGU1BST0dTX1ZFUlNJT04gJHtzcmNkaXJ9L3ZlcnNpb24uaCAgXAorCXwgYXdrICd7cHJpbnQgJDN9JyB8IHRyIFwiICIgIiB8IGF3ayAne3ByaW50ICQxfSdgCitEQVRFPWBncmVwIEUyRlNQUk9HU19EQVRFICR7c3JjZGlyfS92ZXJzaW9uLmggfCBhd2sgJ3twcmludCAkM30nIFwKKwl8IHRyIFwiICIgImAKK0UyRlNQUk9HU19EQVk9JChlY2hvICREQVRFIHwgYXdrIC1GLSAne3ByaW50ICQxfScgfCBzZWQgLWUgJy9eW1sxLTldXSQvcy9eLzAvJykKK01PTlRIPWBlY2hvICREQVRFIHwgYXdrIC1GLSAne3ByaW50ICQyfSdgCitZRUFSPWBlY2hvICREQVRFIHwgYXdrIC1GLSAne3ByaW50ICQzfSdgCisKK2lmIGV4cHIgJFlFQVIgIj4iIDE5MDAgPiAvZGV2L251bGwgOyB0aGVuCisJRTJGU1BST0dTX1lFQVI9JFlFQVIKK2VsaWYgZXhwciAkWUVBUiAiPiIgOTAgPi9kZXYvbnVsbCA7IHRoZW4KKwlFMkZTUFJPR1NfWUVBUj0xOSRZRUFSCitlbHNlCisJRTJGU1BST0dTX1lFQVI9MjAkWUVBUgorZmkKKworY2FzZSAkTU9OVEggaW4KK0phbikJTU9OVEhfTlVNPTAxOyBFMkZTUFJPR1NfTU9OVEg9IkphbnVhcnkiIDs7CitGZWIpCU1PTlRIX05VTT0wMjsgRTJGU1BST0dTX01PTlRIPSJGZWJydWFyeSIgOzsKK01hcikJTU9OVEhfTlVNPTAzOyBFMkZTUFJPR1NfTU9OVEg9Ik1hcmNoIiA7OworQXByKQlNT05USF9OVU09MDQ7IEUyRlNQUk9HU19NT05USD0iQXByaWwiIDs7CitNYXkpCU1PTlRIX05VTT0wNTsgRTJGU1BST0dTX01PTlRIPSJNYXkiIDs7CitKdW4pCU1PTlRIX05VTT0wNjsgRTJGU1BST0dTX01PTlRIPSJKdW5lIiA7OworSnVsKQlNT05USF9OVU09MDc7IEUyRlNQUk9HU19NT05USD0iSnVseSIgOzsKK0F1ZykJTU9OVEhfTlVNPTA4OyBFMkZTUFJPR1NfTU9OVEg9IkF1Z3VzdCIgOzsKK1NlcCkJTU9OVEhfTlVNPTA5OyBFMkZTUFJPR1NfTU9OVEg9IlNlcHRlbWJlciIgOzsKK09jdCkJTU9OVEhfTlVNPTEwOyBFMkZTUFJPR1NfTU9OVEg9Ik9jdG9iZXIiIDs7CitOb3YpCU1PTlRIX05VTT0xMTsgRTJGU1BST0dTX01PTlRIPSJOb3ZlbWJlciIgOzsKK0RlYykJTU9OVEhfTlVNPTEyOyBFMkZTUFJPR1NfTU9OVEg9IkRlY2VtYmVyIiA7OworKikJQUNfTVNHX1dBUk4oW1Vua25vd24gbW9udGggJE1PTlRIPz9dKSA7OworZXNhYworCitiYXNlX3Zlcj1gZWNobyAkRTJGU1BST0dTX1ZFUlNJT04gfCBcCisJICAgICAgIHNlZCAtZSAncy8tV0lQLy8nIC1lICdzL3ByZS0vLycgLWUgJ3MvLVBMVVMvLydgCisKK2RhdGVfc3BlYz0ke0UyRlNQUk9HU19ZRUFSfS4ke01PTlRIX05VTX0uJHtFMkZTUFJPR1NfREFZfQorCitjYXNlICRFMkZTUFJPR1NfVkVSU0lPTiBpbgorKi1XSVB8cHJlLSopCisJRTJGU1BST0dTX1BLR1ZFUj0iJGJhc2VfdmVyfldJUC4kZGF0ZV9zcGVjIgorCTs7CisqKQorCUUyRlNQUk9HU19QS0dWRVI9IiRiYXNlX3ZlciIKKwk7OworZXNhYworCit1bnNldCBEQVRFIE1PTlRIIFlFQVIgYmFzZV92ZXIgcHJlX3ZlcnMgZGF0ZV9zcGVjCitBQ19NU0dfUkVTVUxUKFtHZW5lcmF0aW5nIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgZTJmc3Byb2dzIHZlcnNpb24gJEUyRlNQUk9HU19WRVJTSU9OXSkKK0FDX01TR19SRVNVTFQoW1JlbGVhc2UgZGF0ZSBpcyAke0UyRlNQUk9HU19NT05USH0sICR7RTJGU1BST0dTX1lFQVJ9XSkKK0FDX1NVQlNUKEUyRlNQUk9HU19ZRUFSKQorQUNfU1VCU1QoRTJGU1BST0dTX01PTlRIKQorQUNfU1VCU1QoRTJGU1BST0dTX0RBWSkKK0FDX1NVQlNUKEUyRlNQUk9HU19WRVJTSU9OKQorQUNfU1VCU1QoRTJGU1BST0dTX1BLR1ZFUikKK2RubAorZG5sIFVzZSBkaWV0IGxpYmMKK2RubCAKK1dJVEhfRElFVF9MSUJDPQorQUNfQVJHX1dJVEgoW2RpZXQtbGliY10sCitbICAtLXdpdGgtZGlldC1saWJjICAgICAgICB1c2UgZGlldCBsaWJjXSwKK0NDPSJkaWV0IGNjIC1ub3N0ZGluYyIKK1dJVEhfRElFVF9MSUJDPXllcworaWYgdGVzdCAteiAiJExJQlMiCit0aGVuCisJTElCUz0iLWxjb21wYXQiCitlbHNlCisJTElCUz0iJExJQlMgLWxjb21wYXQiCitmaQorQUNfTVNHX1JFU1VMVChDQz0kQ0MpKWRubAorZG5sCitBQ19DQU5PTklDQUxfSE9TVAorZG5sCitkbmwgQ2hlY2sgdG8gc2VlIGlmIGxpYmRsIGV4aXN0cyBmb3IgdGhlIHNha2Ugb2YgZGxvcGVuCitkbmwKK0RMT1BFTl9MSUI9JycKK0FDX0NIRUNLX0xJQihkbCwgZGxvcGVuLERMT1BFTl9MSUI9LWxkbCkKK0FDX1NVQlNUKERMT1BFTl9MSUIpCitkbmwKK0FDX0FSR19XSVRIKFtjY10sCitBQ19IRUxQX1NUUklORyhbLS13aXRoLWNjXSxbbm8gbG9uZ2VyIHN1cHBvcnRlZCwgdXNlIENDPSBpbnN0ZWFkXSksCitBQ19NU0dfRVJST1IoWy0td2l0aC1jYyBubyBsb25nZXIgc3VwcG9ydGVkOyB1c2UgQ0M9IGluc3RlYWRdKSkKK2RubAorQUNfQVJHX1dJVEgoW2Njb3B0c10sCitBQ19IRUxQX1NUUklORyhbLS13aXRoLWNjb3B0c10sW25vIGxvbmdlciBzdXBwb3J0ZWQsIHVzZSBDRkxBR1M9IGluc3RlYWRdKSwKK0FDX01TR19FUlJPUihbLS13aXRoLWNjb3B0cyBubyBsb25nZXIgc3VwcG9ydGVkOyB1c2UgQ0ZMQUdTPSBpbnN0ZWFkXSkpCitkbmwKK0FDX0FSR19XSVRIKFtsZG9wdHNdLAorQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1sZG9wdHNdLFtubyBsb25nZXIgc3VwcG9ydGVkLCB1c2UgTERGTEFHUz0gaW5zdGVhZF0pLAorQUNfTVNHX0VSUk9SKFstLXdpdGgtbGRvcHRzIG5vIGxvbmdlciBzdXBwb3J0ZWQ7IHVzZSBMREZMQUdTPSBpbnN0ZWFkXSkpCitkbmwKK0FDX1BST0dfQ0MKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICBSRFlOQU1JQz0iLXJkeW5hbWljIgorICAgQUNfU1VCU1QoUkRZTkFNSUMpCitmaQorQUNfUFJPR19DUFAKK2RubAorZG5sIEFscGhhIGNvbXB1dGVycyB1c2UgZmFzdCBhbmQgaW1wcmVjaXNlIGZsb2F0aW5nIHBvaW50IGNvZGUgdGhhdCBtYXkKK2RubCBtaXNzIGV4Y2VwdGlvbnMgYnkgZGVmYXVsdC4gRm9yY2Ugc2FuZSBvcHRpb25zIGlmIHdlJ3JlIHVzaW5nIEdDQy4KK0FDX01TR19DSEVDS0lORyhmb3IgYWRkaXRpb25hbCBzcGVjaWFsIGNvbXBpbGVyIGZsYWdzKQoraWYgdGVzdCAiJEdDQyIgPSB5ZXMKK3RoZW4KKyAgICBjYXNlICIkaG9zdF9jcHUiIGluCisJYWxwaGEpCQlhZGRjZmxhZ3M9Ii1taWVlZSIgOzsKKyAgICBlc2FjCitmaQoraWYgdGVzdCAieCRhZGRjZmxhZ3MiICE9IHgKK3RoZW4KKyAgICBBQ19NU0dfUkVTVUxUKCRhZGRjZmxhZ3MpCisgICAgQ0ZMQUdTPSIkYWRkY2ZsYWdzICRDRkxBR1MiCitlbHNlCisgICAgQUNfTVNHX1JFU1VMVChbWyhub25lKV1dKQorZmkKK0FDX1VTRV9TWVNURU1fRVhURU5TSU9OUworZG5sCitkbmwgU2V0IGRlZmF1bHQgdmFsdWVzIGZvciBsaWJyYXJ5IGV4dGVudGlvbnMuICBXaWxsIGJlIGRlYWx0IHdpdGggYWZ0ZXIKK2RubCBwYXJzaW5nIGNvbmZpZ3VyYXRpb24gb3Bpb25zLCB3aGljaCBtYXkgbW9kaWZ5IHRoZXNlCitkbmwKK0xJQl9FWFQ9LmEKK1NUQVRJQ19MSUJfRVhUPS5hCitQUk9GSUxFRF9MSUJfRVhUPS5hCitkbmwKK2RubCBBbGxvdyBzZXBhcmF0ZSBgcm9vdF9wcmVmaXgnIHRvIGJlIHNwZWNpZmllZAorZG5sCitBQ19BUkdfV0lUSChbcm9vdC1wcmVmaXhdLAorWyAgLS13aXRoLXJvb3QtcHJlZml4PVBSRUZJWCBvdmVycmlkZSBwcmVmaXggdmFyaWFibGUgZm9yIGZpbGVzIHRvIGJlIHBsYWNlZCBpbiB0aGUgcm9vdF0sCityb290X3ByZWZpeD0kd2l0aHZhbCwKK3Jvb3RfcHJlZml4PU5PTkUpZG5sCitkbmwKK2RubCBoYW5kbGUgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlCitkbmwKK0FDX0FSR19FTkFCTEUoW21haW50YWluZXItbW9kZV0sCitbICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgZW5hYmxlIG1ha2VmaWxlIHJ1bGVzIHVzZWZ1bCBmb3IgbWFpbnRhaW5lcnNdLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJTUFJTlRBSU5FUl9DTVQ9IworCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBtYWludGFpbmVyIG1vZGVdKQorZWxzZQorCU1BSU5UQUlORVJfQ01UPQorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIG1haW50YWluZXIgbW9kZV0pCitmaQorLAorTUFJTlRBSU5FUl9DTVQ9IworQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIG1haW50YWluZXIgbW9kZSBieSBkZWZhdWx0XSkKKykKK0FDX1NVQlNUKE1BSU5UQUlORVJfQ01UKQorZG5sCitkbmwgaGFuZGxlIC0tZW5hYmxlLXN5bWxpbmstaW5zdGFsbAorZG5sCitBQ19BUkdfRU5BQkxFKFtzeW1saW5rLWluc3RhbGxdLAorWyAgLS1lbmFibGUtc3ltbGluay1pbnN0YWxsIHVzZSBzeW1saW5rcyB3aGVuIGluc3RhbGxpbmcgaW5zdGVhZCBvZiBoYXJkIGxpbmtzXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUxJTktfSU5TVEFMTF9GTEFHUz0tZgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBzeW1saW5rcyBmb3IgaW5zdGFsbF0pCitlbHNlCisJTElOS19JTlNUQUxMX0ZMQUdTPS1zZgorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIHN5bWxpbmtzIGZvciBpbnN0YWxsXSkKK2ZpCissCitMSU5LX0lOU1RBTExfRkxBR1M9LWYKK0FDX01TR19SRVNVTFQoW0Rpc2FibGluZyBzeW1saW5rcyBmb3IgaW5zdGFsbCBieSBkZWZhdWx0XSkKKykKK0FDX1NVQlNUKExJTktfSU5TVEFMTF9GTEFHUykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1yZWxhdGl2ZS1zeW1saW5rcworZG5sCityZWxhdGl2ZV9zeW1saW5rX2RlZmluZWQ9CitBQ19BUkdfRU5BQkxFKFtyZWxhdGl2ZS1zeW1saW5rc10sCitbICAtLWVuYWJsZS1yZWxhdGl2ZS1zeW1saW5rcyB1c2UgcmVsYXRpdmUgc3ltbGlua3Mgd2hlbiBpbnN0YWxsaW5nXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCVNZTUxJTktfUkVMQVRJVkU9CisJcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkPXllcworCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyByZWxhdGl2ZSBzeW1saW5rcyBmb3IgaW5zdGFsbF0pCitlbHNlCisJU1lNTElOS19SRUxBVElWRT0tLXJlbGF0aXZlCisJcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkPXllcworCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIHJlbGF0aXZlIHN5bWxpbmtzIGZvciBpbnN0YWxsXSkKK2ZpKQorQUNfQVJHX0VOQUJMRShbc3ltbGluay1yZWxhdGl2ZS1zeW1saW5rc10sLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJU1lNTElOS19SRUxBVElWRT15ZXMKKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGxdKQorZWxzZQorCVNZTUxJTktfUkVMQVRJVkU9LS1yZWxhdGl2ZQorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIHJlbGF0aXZlIHN5bWxpbmtzIGZvciBpbnN0YWxsXSkKK2ZpCissCitpZiB0ZXN0IC16ICIkcmVsYXRpdmVfc3ltbGlua19kZWZpbmVkIgordGhlbgorCVNZTUxJTktfUkVMQVRJVkU9CitBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgcmVsYXRpdmUgc3ltbGlua3MgZm9yIGluc3RhbGwgYnkgZGVmYXVsdF0pCitmaQorKQorQUNfU1VCU1QoU1lNTElOS19SRUxBVElWRSkKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1zeW1saW5rLWJ1aWxkCitkbmwKK0FDX0FSR19FTkFCTEUoW3N5bWxpbmstYnVpbGRdLAorWyAgLS1lbmFibGUtc3ltbGluay1idWlsZCAgdXNlIHN5bWxpbmtzIHdoaWxlIGJ1aWxkaW5nIGluc3RlYWQgb2YgaGFyZCBsaW5rc10sCitpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlMSU5LX0JVSUxEX0ZMQUdTPQorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBzeW1saW5rcyBmb3IgYnVpbGRdKQorZWxzZQorCUxJTktfQlVJTERfRkxBR1M9LXMKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBzeW1saW5rcyBmb3IgYnVpbGRdKQorZmkKKywKK0xJTktfQlVJTERfRkxBR1M9CitBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgc3ltbGlua3MgZm9yIGJ1aWxkIGJ5IGRlZmF1bHRdKQorKQorQUNfU1VCU1QoTElOS19CVUlMRF9GTEFHUykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzCitkbmwKK0FDX0FSR19FTkFCTEUoW3ZlcmJvc2UtbWFrZWNtZHNdLAorWyAgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyBlbmFibGUgdmVyYm9zZSBtYWtlIGNvbW1hbmQgb3V0cHV0XSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyB2ZXJib3NlIG1ha2UgY29tbWFuZHNdKQorCUU9QGVjaG8KKwlFUz1lY2hvCisJUT1ACitlbHNlCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdmVyYm9zZSBtYWtlIGNvbW1hbmRzXSkKKwlFPUBcXCMKKwlFUz1cXCMKKwlRPSAKK2ZpCissCitBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgdmVyYm9zZSBtYWtlIGNvbW1hbmRzXSkKK0U9QGVjaG8KK0VTPWVjaG8KK1E9QAorKQorQUNfU1VCU1QoRSkKK0FDX1NVQlNUKEVTKQorQUNfU1VCU1QoUSkKK2RubAorZG5sIFRoaXMgbmVlZHMgdG8gYmUgYmVmb3JlIGFsbCBvZiB0aGUgLS1lbmFibGUtKi1zaGxpYnMgb3B0aW9ucworZG5sCitFMl9QS0dfQ09ORklHX1NUQVRJQz0tLXN0YXRpYworTERGTEFHX0RZTkFNSUM9CitQUklWQVRFX0xJQlNfQ01UPQorZG5sCitkbmwgaGFuZGxlIC0tZW5hYmxlLWVsZi1zaGxpYnMKK2RubAorQUNfQVJHX0VOQUJMRShbZWxmLXNobGlic10sCitbICAtLWVuYWJsZS1lbGYtc2hsaWJzCSAgc2VsZWN0IEVMRiBzaGFyZWQgbGlicmFyaWVzXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUVMRl9DTVQ9IworCU1BS0VGSUxFX0VMRj0vZGV2L251bGwKKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXNdKQorZWxzZQorCUUyX1BLR19DT05GSUdfU1RBVElDPQorCUVMRl9DTVQ9CisJTUFLRUZJTEVfRUxGPSRzcmNkaXIvbGliL01ha2VmaWxlLmVsZi1saWIKKwlbY2FzZSAiJGhvc3Rfb3MiIGluCisJc29sYXJpczIuKikKKwkJTUFLRUZJTEVfRUxGPSRzcmNkaXIvbGliL01ha2VmaWxlLnNvbGFyaXMtbGliCisJOzsKKwllc2FjXQorCUJJTkFSWV9UWVBFPWVsZmJpbgorCUxJQl9FWFQ9LnNvCisJUFJJVkFURV9MSUJTX0NNVD0jCisJTERGTEFHX0RZTkFNSUM9WyctV2wsLXJwYXRoLWxpbmssJCh0b3BfYnVpbGRkaXIpL2xpYiddCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgRUxGIHNoYXJlZCBsaWJyYXJpZXNdKQorZmkKKywKK01BS0VGSUxFX0VMRj0vZGV2L251bGwKK0VMRl9DTVQ9IworQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIEVMRiBzaGFyZWQgbGlicmFyaWVzIGJ5IGRlZmF1bHRdKQorKQorQUNfU1VCU1QoRUxGX0NNVCkKK0FDX1NVQlNUX0ZJTEUoTUFLRUZJTEVfRUxGKQorZG5sCitkbmwgaGFuZGxlIC0tZW5hYmxlLWJzZC1zaGxpYnMKK2RubAorQUNfQVJHX0VOQUJMRShbYnNkLXNobGlic10sCitbICAtLWVuYWJsZS1ic2Qtc2hsaWJzCSAgc2VsZWN0IEJTRCBzaGFyZWQgbGlicmFyaWVzXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUJTRExJQl9DTVQ9IworCU1BS0VGSUxFX0JTRExJQj0vZGV2L251bGwKKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgQlNEIHNoYXJlZCBsaWJyYXJpZXNdKQorZWxzZQorCUUyX1BLR19DT05GSUdfU1RBVElDPQorCUJTRExJQl9DTVQ9CisJTUFLRUZJTEVfQlNETElCPSRzcmNkaXIvbGliL01ha2VmaWxlLmJzZC1saWIKKwlMSUJfRVhUPS5zbworCVtjYXNlICIkaG9zdF9vcyIgaW4KKwlkYXJ3aW4qKQorCQlNQUtFRklMRV9CU0RMSUI9JHNyY2Rpci9saWIvTWFrZWZpbGUuZGFyd2luLWxpYgorCQlMSUJfRVhUPS5keWxpYgorCTs7CisJZXNhY10KKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBCU0Qgc2hhcmVkIGxpYnJhcmllc10pCitmaQorLAorTUFLRUZJTEVfQlNETElCPS9kZXYvbnVsbAorQlNETElCX0NNVD0jCitBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgQlNEIHNoYXJlZCBsaWJyYXJpZXMgYnkgZGVmYXVsdF0pCispCitBQ19TVUJTVChCU0RMSUJfQ01UKQorQUNfU1VCU1RfRklMRShNQUtFRklMRV9CU0RMSUIpCitkbmwKK2RubCBoYW5kbGUgLS1lbmFibGUtcHJvZmlsZQorZG5sCitBQ19BUkdfRU5BQkxFKFtwcm9maWxlXSwKK1sgIC0tZW5hYmxlLXByb2ZpbGUJICBidWlsZCBwcm9maWxpbmcgbGlicmFyaWVzXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCVBST0ZJTEVfQ01UPSMKKwlNQUtFRklMRV9QUk9GSUxFPS9kZXYvbnVsbAorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBwcm9maWxpbmcgbGlicmFyaWVzXSkKK2Vsc2UKKwlQUk9GSUxFX0NNVD0KKwlNQUtFRklMRV9QUk9GSUxFPSRzcmNkaXIvbGliL01ha2VmaWxlLnByb2ZpbGUKKwlQUk9GSUxFRF9MSUJfRVhUPV9wLmEKKwlBQ19NU0dfUkVTVUxUKFtCdWlsZGluZyBwcm9maWxpbmcgbGlicmFyaWVzXSkKK2ZpCissCitQUk9GSUxFX0NNVD0jCitNQUtFRklMRV9QUk9GSUxFPS9kZXYvbnVsbAorQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIHByb2ZpbGluZyBsaWJyYXJpZXMgYnkgZGVmYXVsdF0pCispCitBQ19TVUJTVChQUk9GSUxFX0NNVCkKK0FDX1NVQlNUX0ZJTEUoTUFLRUZJTEVfUFJPRklMRSkKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1nY292CitkbmwKK0FDX0FSR19FTkFCTEUoW2djb3ZdLAorWyAgLS1lbmFibGUtZ2NvdgkgIAkgIGJ1aWxkIGZvciBjb3ZlcmFnZSB0ZXN0aW5nIHVzaW5nIGdjb3ZdLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAieWVzIgordGhlbgorCUNGTEFHUz0iLWcgLWZwcm9maWxlLWFyY3MgLWZ0ZXN0LWNvdmVyYWdlIgorCUxERkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSIKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBnY292IHN1cHBvcnRdKQorZmkKKykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1oYXJkZW5pbmcKK2RubAorQ0ZMQUdTX1NITElCPSIke0NGTEFHU19TSExJQjotJENGTEFHU30iCitDRkxBR1NfU1RMSUI9IiR7Q0ZMQUdTX1NUTElCOi0kQ0ZMQUdTfSIKK0xERkxBR1NfU0hMSUI9JHtMREZMQUdTX1NITElCOi0kTERGTEFHU30KK0xERkxBR1NfU1RBVElDPSR7TERGTEFHU19TVEFUSUM6LSRMREZMQUdTfQorQUNfQVJHX0VOQUJMRShbaGFyZGVuaW5nXSwKK1sgIC0tZW5hYmxlLWhhcmRlbmluZwkgIAkgIGJ1aWxkIGZvciBjb3ZlcmFnZSB0ZXN0aW5nIHVzaW5nIGdjb3ZdLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAieWVzIgordGhlbgorCUhBUkRFTl9DRkxBR1M9Ii1EX0ZPUlRJRllfU09VUkNFPTIgLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nIgorCUhBUkRFTl9MREZMQUdTPVsiLVdsLC16LHJlbHJvIC1XbCwteixub3ciXQorCUNGTEFHUz0iJENGTEFHUyAkSEFSREVOX0NGTEFHUyAtZlBJRSIKKwlDRkxBR1NfU0hMSUI9IiRDRkxBR1NfU0hMSUIgJEhBUkRFTl9DRkxBR1MiCisJQ0ZMQUdTX1NUTElCPSIkQ0ZMQUdTX1NUTElCICRIQVJERU5fQ0ZMQUdTIC1mUElFIgorCUxERkxBR1M9IiRMREZMQUdTICRIQVJERU5fTERGTEFHUyAtZlBJRSAtcGllIgorCUxERkxBR1NfU1RBVElDPSIkTERGTEFHU19TVEFUSUMgJEhBUkRFTl9MREZMQUdTIgorCUxERkxBR1NfU0hMSUI9IiRMREZMQUdTX1NITElCICRIQVJERU5fTERGTEFHUyIKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBoYXJkZW5pbmcgc3VwcG9ydF0pCitmaQorKQorZG5sCitkbmwgU3Vic3RpdHV0ZSBsaWJyYXJ5IGV4dGVuc2lvbnMKK2RubAorQUNfU1VCU1QoTElCX0VYVCkKK0FDX1NVQlNUKFNUQVRJQ19MSUJfRVhUKQorQUNfU1VCU1QoUFJPRklMRURfTElCX0VYVCkKK0FDX1NVQlNUKExERkxBR19EWU5BTUlDKQorQUNfU1VCU1QoUFJJVkFURV9MSUJTX0NNVCkKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1qYmQtZGVidWcKK2RubAorQUNfQVJHX0VOQUJMRShbamJkLWRlYnVnXSwKK1sgIC0tZW5hYmxlLWpiZC1kZWJ1ZyAgCSAgZW5hYmxlIGpvdXJuYWwgZGVidWdnaW5nXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBqb3VybmFsIGRlYnVnZ2luZ10pCitlbHNlCisJQUNfREVGSU5FKENPTkZJR19KQkRfREVCVUcsIDEsCisJCVtEZWZpbmUgdG8gMSBpZiBkZWJ1Z2dpbmcgZXh0My80IGpvdXJuYWwgY29kZV0pCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgam91cm5hbCBkZWJ1Z2dpbmddKQorZmkKKywKK0FDX01TR19SRVNVTFQoW0Rpc2FibGluZyBqb3VybmFsIGRlYnVnZ2luZyBieSBkZWZhdWx0XSkKKykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1ibGtpZC1kZWJ1ZworZG5sCitBQ19BUkdfRU5BQkxFKFtibGtpZC1kZWJ1Z10sCitbICAtLWVuYWJsZS1ibGtpZC1kZWJ1ZyAgICBlbmFibGUgYmxraWQgZGVidWdnaW5nXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBibGtpZCBkZWJ1Z2dpbmddKQorZWxzZQorCUFDX0RFRklORShDT05GSUdfQkxLSURfREVCVUcsIDEsCisJCVtEZWZpbmUgdG8gMSBpZiBkZWJ1Z2dpbmcgdGhlIGJsa2lkIGxpYnJhcnldKQorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIGJsa2lkIGRlYnVnZ2luZ10pCitmaQorLAorQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIGJsa2lkIGRlYnVnZ2luZyBieSBkZWZhdWx0XSkKKykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS10ZXN0aW8tZGVidWcKK2RubAorQUNfQVJHX0VOQUJMRShbdGVzdGlvLWRlYnVnXSwKK1sgIC0tZGlzYWJsZS10ZXN0aW8tZGVidWcgIGRpc2FibGUgdGhlIHVzZSBvZiB0aGUgdGVzdCBJL08gbWFuYWdlciBmb3IgZGVidWdnaW5nXSwKK0FIX1RFTVBMQVRFKFtDT05GSUdfVEVTVElPX0RFQlVHXSwKKwlbRGVmaW5lIHRvIDEgaWYgdGhlIHRlc3RpbyBJL08gbWFuYWdlciBzaG91bGQgYmUgZW5hYmxlZF0pCitpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgdGVzdGlvIGRlYnVnZ2luZ10pCisJVEVTVF9JT19DTVQ9IiMiCitlbHNlCisJVEVTVF9JT19DTVQ9CisJQUNfREVGSU5FKENPTkZJR19URVNUSU9fREVCVUcsIDEpCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdGVzdGlvIGRlYnVnZ2luZ10pCitmaQorLAorQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdGVzdGlvIGRlYnVnZ2luZyBieSBkZWZhdWx0XSkKK0FDX0RFRklORShDT05GSUdfVEVTVElPX0RFQlVHLCAxKQorVEVTVF9JT19DTVQ9CispCitBQ19TVUJTVChURVNUX0lPX0NNVCkKK2RubAorZG5sIGhhbmRsZSAtLWRpc2FibGUtbGlidXVpZAorZG5sCitQS0dfUFJPR19QS0dfQ09ORklHCitMSUJVVUlEPQorREVQTElCVVVJRD0KK1NUQVRJQ19MSUJVVUlEPQorREVQU1RBVElDX0xJQlVVSUQ9CitQUk9GSUxFRF9MSUJVVUlEPQorREVQUFJPRklMRURfTElCVVVJRD0KK1VVSURfQ01UPQorQUNfQVJHX0VOQUJMRShbbGlidXVpZF0sCitbICAtLWVuYWJsZS1saWJ1dWlkCSAgYnVpbGQgYW5kIHVzZSBwcml2YXRlIHV1aWQgbGlicmFyeV0sCitpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlpZiB0ZXN0IC16ICIkUEtHX0NPTkZJRyI7IHRoZW4KKwkJQUNfTVNHX0VSUk9SKFtwa2ctY29uZmlnIG5vdCBpbnN0YWxsZWQ7IHBsZWFzZSBpbnN0YWxsIGl0Ll0pCisJZmkKKworCUFDX0NIRUNLX0xJQih1dWlkLCB1dWlkX2dlbmVyYXRlLAorCQlbTElCVVVJRD1gJFBLR19DT05GSUcgLS1saWJzIHV1aWRgOworCQkgU1RBVElDX0xJQlVVSUQ9YCRQS0dfQ09ORklHIC0tc3RhdGljIC0tbGlicyB1dWlkYF0sCisJCVtBQ19NU0dfRVJST1IoW2V4dGVybmFsIHV1aWQgbGlicmFyeSBub3QgZm91bmRdKV0pCisJUFJPRklMRURfTElCVVVJRD0kTElCVVVJRAorCVVVSURfQ01UPSMKKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgcHJpdmF0ZSB1dWlkIGxpYnJhcnldKQorZWxzZQorCUxJQlVVSUQ9JyQoTElCKS9saWJ1dWlkJyRMSUJfRVhUCisJREVQTElCVVVJRD0kTElCVVVJRAorCVNUQVRJQ19MSUJVVUlEPSckKExJQikvbGlidXVpZCckU1RBVElDX0xJQl9FWFQKKwlERVBTVEFUSUNfTElCVVVJRD0kU1RBVElDX0xJQlVVSUQKKwlQUk9GSUxFRF9MSUJVVUlEPSckKExJQikvbGlidXVpZCckUFJPRklMRURfTElCX0VYVAorCURFUFBST0ZJTEVEX0xJQlVVSUQ9JFBST0ZJTEVEX0xJQlVVSUQKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBwcml2YXRlIHV1aWQgbGlicmFyeV0pCitmaQorLAoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisJQUNfQ0hFQ0tfTElCKHV1aWQsIHV1aWRfZ2VuZXJhdGUsCisJCVtMSUJVVUlEPWAkUEtHX0NPTkZJRyAtLWxpYnMgdXVpZGA7CisJCSBTVEFUSUNfTElCVVVJRD1gJFBLR19DT05GSUcgLS1zdGF0aWMgLS1saWJzIHV1aWRgXSkKK2ZpCitpZiB0ZXN0IC1uICIkTElCVVVJRCI7IHRoZW4KKwlQUk9GSUxFRF9MSUJVVUlEPSRMSUJVVUlECisJVVVJRF9DTVQ9IworCUFDX01TR19SRVNVTFQoW1VzaW5nIHN5c3RlbSB1dWlkIGJ5IGRlZmF1bHRdKQorZWxzZQorCUxJQlVVSUQ9JyQoTElCKS9saWJ1dWlkJyRMSUJfRVhUCisJREVQTElCVVVJRD0kTElCVVVJRAorCVNUQVRJQ19MSUJVVUlEPSckKExJQikvbGlidXVpZCckU1RBVElDX0xJQl9FWFQKKwlERVBTVEFUSUNfTElCVVVJRD0kU1RBVElDX0xJQlVVSUQKKwlQUk9GSUxFRF9MSUJVVUlEPSckKExJQikvbGlidXVpZCckUFJPRklMRURfTElCX0VYVAorCURFUFBST0ZJTEVEX0xJQlVVSUQ9JFBST0ZJTEVEX0xJQlVVSUQKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBwcml2YXRlIHV1aWQgbGlicmFyeSBieSBkZWZhdWx0XSkKK2ZpCispCitBQ19TVUJTVChMSUJVVUlEKQorQUNfU1VCU1QoREVQTElCVVVJRCkKK0FDX1NVQlNUKFNUQVRJQ19MSUJVVUlEKQorQUNfU1VCU1QoREVQU1RBVElDX0xJQlVVSUQpCitBQ19TVUJTVChQUk9GSUxFRF9MSUJVVUlEKQorQUNfU1VCU1QoREVQUFJPRklMRURfTElCVVVJRCkKK0FDX1NVQlNUKFVVSURfQ01UKQorZG5sCitkbmwgaGFuZGxlIC0tZGlzYWJsZS1saWJibGtpZAorZG5sCitQS0dfUFJPR19QS0dfQ09ORklHCitMSUJCTEtJRD0KK0RFUExJQkJMS0lEPQorU1RBVElDX0xJQkJMS0lEPQorREVQU1RBVElDX0xJQkJMS0lEPQorUFJPRklMRURfTElCQkxLSUQ9CitERVBQUk9GSUxFRF9MSUJCTEtJRD0KK0JMS0lEX0NNVD0KK0FIX1RFTVBMQVRFKFtDT05GSUdfQlVJTERfRklOREZTXSwgW0RlZmluZSB0byAxIHRvIGNvbXBpbGUgZmluZGZzXSkKK0FDX0FSR19FTkFCTEUoW2xpYmJsa2lkXSwKK1sgIC0tZW5hYmxlLWxpYmJsa2lkCSAgYnVpbGQgYW5kIHVzZSBwcml2YXRlIGJsa2lkIGxpYnJhcnldLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJaWYgdGVzdCAteiAiJFBLR19DT05GSUciOyB0aGVuCisJCUFDX01TR19FUlJPUihbcGtnLWNvbmZpZyBub3QgaW5zdGFsbGVkOyBwbGVhc2UgaW5zdGFsbCBpdC5dKQorCWZpCisKKwlBQ19DSEVDS19MSUIoYmxraWQsIGJsa2lkX2dldF9jYWNoZSwKKwkJW0xJQkJMS0lEPWAkUEtHX0NPTkZJRyAtLWxpYnMgYmxraWRgOworCQkgU1RBVElDX0xJQkJMS0lEPWAkUEtHX0NPTkZJRyAtLXN0YXRpYyAtLWxpYnMgYmxraWRgXSwKKwkJW0FDX01TR19FUlJPUihbZXh0ZXJuYWwgYmxraWQgbGlicmFyeSBub3QgZm91bmRdKV0sIC1sdXVpZCkKKwlCTEtJRF9DTVQ9IworCVBST0ZJTEVEX0xJQkJMS0lEPSRMSUJCTEtJRAorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBwcml2YXRlIGJsa2lkIGxpYnJhcnldKQorZWxzZQorCUxJQkJMS0lEPSckKExJQikvbGliYmxraWQnJExJQl9FWFQKKwlERVBMSUJCTEtJRD0kTElCQkxLSUQKKwlTVEFUSUNfTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckU1RBVElDX0xJQl9FWFQKKwlERVBTVEFUSUNfTElCQkxLSUQ9JFNUQVRJQ19MSUJCTEtJRAorCVBST0ZJTEVEX0xJQkJMS0lEPSckKExJQikvbGliYmxraWQnJFBST0ZJTEVEX0xJQl9FWFQKKwlERVBQUk9GSUxFRF9MSUJCTEtJRD0kUFJPRklMRURfTElCQkxLSUQKKwlBQ19ERUZJTkUoQ09ORklHX0JVSUxEX0ZJTkRGUywgMSkKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBwcml2YXRlIGJsa2lkIGxpYnJhcnldKQorZmkKKywKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorCUFDX0NIRUNLX0xJQihibGtpZCwgYmxraWRfZ2V0X2NhY2hlLAorCQlbTElCQkxLSUQ9YCRQS0dfQ09ORklHIC0tbGlicyBibGtpZGA7CisJCSBTVEFUSUNfTElCQkxLSUQ9YCRQS0dfQ09ORklHIC0tc3RhdGljIC0tbGlicyBibGtpZGBdKQorZmkKK2lmIHRlc3QgLW4gIiRMSUJCTEtJRCI7IHRoZW4KKwlCTEtJRF9DTVQ9IworCVBST0ZJTEVEX0xJQkJMS0lEPSRMSUJCTEtJRAorCUFDX01TR19SRVNVTFQoW1VzaW5nIHN5c3RlbSBibGtpZCBsaWJyYXJ5IGJ5IGRlZmF1bHRdKQorZWxzZQorCUxJQkJMS0lEPSckKExJQikvbGliYmxraWQnJExJQl9FWFQKKwlERVBMSUJCTEtJRD0kTElCQkxLSUQKKwlTVEFUSUNfTElCQkxLSUQ9JyQoTElCKS9saWJibGtpZCckU1RBVElDX0xJQl9FWFQKKwlERVBTVEFUSUNfTElCQkxLSUQ9JFNUQVRJQ19MSUJCTEtJRAorCVBST0ZJTEVEX0xJQkJMS0lEPSckKExJQikvbGliYmxraWQnJFBST0ZJTEVEX0xJQl9FWFQKKwlERVBQUk9GSUxFRF9MSUJCTEtJRD0kUFJPRklMRURfTElCQkxLSUQKKwlBQ19ERUZJTkUoQ09ORklHX0JVSUxEX0ZJTkRGUywgMSkKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBwcml2YXRlIGJsa2lkIGxpYnJhcnkgYnkgZGVmYXVsdF0pCitmaQorKQorQUNfU1VCU1QoTElCQkxLSUQpCitBQ19TVUJTVChERVBMSUJCTEtJRCkKK0FDX1NVQlNUKFNUQVRJQ19MSUJCTEtJRCkKK0FDX1NVQlNUKERFUFNUQVRJQ19MSUJCTEtJRCkKK0FDX1NVQlNUKFBST0ZJTEVEX0xJQkJMS0lEKQorQUNfU1VCU1QoREVQUFJPRklMRURfTElCQkxLSUQpCitBQ19TVUJTVChCTEtJRF9DTVQpCitkbmwKK2RubCBoYW5kbGUgLS1kaXNhYmxlLWJhY2t0cmFjZQorZG5sCitBSF9URU1QTEFURShbRElTQUJMRV9CQUNLVFJBQ0VdLCBbRGVmaW5lIHRvIDEgdG8gZGlzYWJsZSB1c2Ugb2YgYmFja3RyYWNlXSkKK0FDX0FSR19FTkFCTEUoW2JhY2t0cmFjZV0sCitbICAtLWRpc2FibGUtYmFja3RyYWNlCSAgZGlzYWJsZSB1c2UgYmFja3RyYWNlXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyB1c2Ugb2YgYmFja3RyYWNlXSkKKwlBQ19ERUZJTkUoRElTQUJMRV9CQUNLVFJBQ0UsIDEpCitlbHNlCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdXNlIG9mIGJhY2t0cmFjZV0pCitmaQorLAorQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdXNlIG9mIGJhY2t0cmFjZSBieSBkZWZhdWx0XSkKKykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1kZWJ1Z2ZzCitkbmwKK0FDX0FSR19FTkFCTEUoW2RlYnVnZnNdLAorWyAgLS1kaXNhYmxlLWRlYnVnZnMgICAJICBkaXNhYmxlIHN1cHBvcnQgb2YgZGVidWdmcyBwcm9ncmFtXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBkZWJ1Z2ZzIHN1cHBvcnRdKQorCURFQlVHRlNfQ01UPSIjIgorZWxzZQorCURFQlVHRlNfQ01UPQorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIGRlYnVnZnMgc3VwcG9ydF0pCitmaQorLAorQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgZGVidWdmcyBzdXBwb3J0IGJ5IGRlZmF1bHRdKQorREVCVUdGU19DTVQ9CispCitBQ19TVUJTVChERUJVR0ZTX0NNVCkKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1pbWFnZXIKK2RubAorQUNfQVJHX0VOQUJMRShbaW1hZ2VyXSwKK1sgIC0tZGlzYWJsZS1pbWFnZXIgICAJICBkaXNhYmxlIHN1cHBvcnQgb2YgZTJpbWFnZSBwcm9ncmFtXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBlMmltYWdlIHN1cHBvcnRdKQorCUlNQUdFUl9DTVQ9IiMiCitlbHNlCisJSU1BR0VSX0NNVD0KKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBlMmltYWdlIHN1cHBvcnRdKQorZmkKKywKK0FDX01TR19SRVNVTFQoW0VuYWJsaW5nIGUyaW1hZ2Ugc3VwcG9ydCBieSBkZWZhdWx0XSkKK0lNQUdFUl9DTVQ9CispCitBQ19TVUJTVChJTUFHRVJfQ01UKQorZG5sCitkbmwgaGFuZGxlIC0tZW5hYmxlLXJlc2l6ZXIKK2RubAorQUNfQVJHX0VOQUJMRShbcmVzaXplcl0sCitbICAtLWRpc2FibGUtcmVzaXplciAgIAkgIGRpc2FibGUgc3VwcG9ydCBvZiBlMnJlc2l6ZSBwcm9ncmFtXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBlMnJlc2l6ZSBzdXBwb3J0XSkKKwlSRVNJWkVSX0NNVD0iIyIKK2Vsc2UKKwlSRVNJWkVSX0NNVD0KKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBlMnJlc2l6ZSBzdXBwb3J0XSkKK2ZpCissCitBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBlMnJlc2l6ZSBzdXBwb3J0IGJ5IGRlZmF1bHRdKQorUkVTSVpFUl9DTVQ9CispCitBQ19TVUJTVChSRVNJWkVSX0NNVCkKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1kZWZyYWcKK2RubAorQUNfQVJHX0VOQUJMRShbZGVmcmFnXSwKK1sgIC0tZGlzYWJsZS1kZWZyYWcgICAJICBkaXNhYmxlIHN1cHBvcnQgb2YgZTRkZWZyYWcgcHJvZ3JhbV0sCitpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgZTRkZWZyYWcgc3VwcG9ydF0pCisJREVGUkFHX0NNVD0iIyIKK2Vsc2UKKwlERUZSQUdfQ01UPQorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnRdKQorZmkKKywKK2lmIHRlc3QgLXogIiRXSVRIX0RJRVRfTElCQyIKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBlNGRlZnJhZyBzdXBwb3J0IGJ5IGRlZmF1bHRdKQorCURFRlJBR19DTVQ9CitlbHNlCisJQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIGU0ZGVmcmFnIHN1cHBvcnQgYnkgZGVmYXVsdF0pCisJREVGUkFHX0NNVD0iIyIKK2ZpCispCitBQ19TVUJTVChERUZSQUdfQ01UKQorZG5sCitkbmwgU2VlIHdoZXRoZXIgdG8gaW5zdGFsbCB0aGUgYGZzY2snIHdyYXBwZXIgcHJvZ3JhbSAodGhhdCBjYWxscyBlMmZzY2spCitkbmwKK0FDX0FSR19FTkFCTEUoW2ZzY2tdLAorWyAgLS1lbmFibGUtZnNjayAgICAgICAgICAgYnVpbGQgZnNjayB3cmFwcGVyIHByb2dyYW1dLAorW2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUZTQ0tfUFJPRz0nJyBGU0NLX01BTj0nJworCUFDX01TR19SRVNVTFQoW05vdCBidWlsZGluZyBmc2NrIHdyYXBwZXJdKQorZWxzZQorCUZTQ0tfUFJPRz1mc2NrIEZTQ0tfTUFOPWZzY2suOAorCUFDX01TR19SRVNVTFQoW0J1aWxkaW5nIGZzY2sgd3JhcHBlcl0pCitmaV0KKywKK1tjYXNlICIkaG9zdF9vcyIgaW4KKyAgZ251KikKKyAgICBGU0NLX1BST0c9JycgRlNDS19NQU49JycKKyAgICBBQ19NU0dfUkVTVUxUKFtOb3QgYnVpbGRpbmcgZnNjayB3cmFwcGVyIGJ5IGRlZmF1bHRdKQorICAgIDs7CisgICopCisgICAgRlNDS19QUk9HPWZzY2sgRlNDS19NQU49ZnNjay44CisgICAgQUNfTVNHX1JFU1VMVChbQnVpbGRpbmcgZnNjayB3cmFwcGVyIGJ5IGRlZmF1bHRdKQorZXNhY10KKykKK0FDX1NVQlNUKEZTQ0tfUFJPRykKK0FDX1NVQlNUKEZTQ0tfTUFOKQorZG5sCitkbmwgU2VlIHdoZXRoZXIgdG8gaW5zdGFsbCB0aGUgYGUyaW5pdHJkLWhlbHBlcicgcHJvZ3JhbQorZG5sCitBQ19BUkdfRU5BQkxFKFtlMmluaXRyZC1oZWxwZXJdLAorWyAgLS1lbmFibGUtZTJpbml0cmQtaGVscGVyIGJ1aWxkIGUyaW5pdHJkLWhlbHBlciBwcm9ncmFtXSwKK1tpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlFMklOSVRSRF9QUk9HPScnIEUySU5JVFJEX01BTj0nJworCUFDX01TR19SRVNVTFQoW05vdCBidWlsZGluZyBlMmluaXRyZCBoZWxwZXJdKQorZWxzZQorCUUySU5JVFJEX1BST0c9ZTJpbml0cmRfaGVscGVyIEUySU5JVFJEX01BTj1lMmluaXRyZF9oZWxwZXIuOAorCUFDX01TR19SRVNVTFQoW0J1aWxkaW5nIGUyaW5pdHJkIGhlbHBlcl0pCitmaV0KKywKK0UySU5JVFJEX1BST0c9ZTJpbml0cmRfaGVscGVyIEUySU5JVFJEX01BTj1lMmluaXRyZF9oZWxwZXIuOAorQUNfTVNHX1JFU1VMVChbQnVpbGRpbmcgZTJpbml0cmQgaGVscGVyIGJ5IGRlZmF1bHRdKQorKQorQUNfU1VCU1QoRTJJTklUUkRfUFJPRykKK0FDX1NVQlNUKEUySU5JVFJEX01BTikKK2RubAorZG5sCitkbmwKK0FDX0FSR19FTkFCTEUoW3Rsc10sCitbICAtLWRpc2FibGUtdGxzICAgICAgICAgICBkaXNhYmxlIHVzZSBvZiB0aHJlYWQgbG9jYWwgc3VwcG9ydF0sCitbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJdHJ5X3Rscz0iIgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyB0aHJlYWQgbG9jYWwgc3VwcG9ydF0pCitlbHNlCisJdHJ5X3Rscz0ieWVzIgorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIHRocmVhZCBsb2NhbCBzdXBwb3J0XSkKK2ZpXQorLAoraWYgdGVzdCAtbiAiJFdJVEhfRElFVF9MSUJDIgordGhlbgorCXRyeV90bHM9IiIKKwlBQ19NU0dfUkVTVUxUKFtEaWV0IGxpYmMgZG9lcyBub3Qgc3VwcG9ydCB0aHJlYWQgbG9jYWwgc3VwcG9ydF0pCitlbHNlCisJdHJ5X3Rscz0ieWVzIgorCUFDX01TR19SRVNVTFQoW1RyeSB1c2luZyB0aHJlYWQgbG9jYWwgc3VwcG9ydCBieSBkZWZhdWx0XSkKK2ZpCispCitpZiB0ZXN0ICIkdHJ5X3RscyIgPSAieWVzIgordGhlbgorQVhfVExTCitmaQorZG5sCitkbmwKK2RubAorQUhfVEVNUExBVEUoW1VTRV9VVUlERF0sIFtEZWZpbmUgdG8gMSB0byBidWlsZCB1dWlkZF0pCitBQ19BUkdfRU5BQkxFKFt1dWlkZF0sCitbICAtLWRpc2FibGUtdXVpZGQgICAgICAgICBkaXNhYmxlIGJ1aWxkaW5nIHRoZSB1dWlkIGRhZW1vbl0sCitbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJQUNfTVNHX1JFU1VMVChbTm90IGJ1aWxkaW5nIHV1aWRkXSkKKwlVVUlERF9DTVQ9IiMiCitlbHNlCisJQUNfREVGSU5FKFVTRV9VVUlERCwgMSkKKwlVVUlERF9DTVQ9IiIKKwlBQ19NU0dfUkVTVUxUKFtCdWlsZGluZyB1dWlkZF0pCitmaV0KKywKK0FDX0RFRklORShVU0VfVVVJREQsIDEpCitpZiB0ZXN0IC16ICIkVVVJRF9DTVQiCit0aGVuCisJVVVJRERfQ01UPSIiCisJQUNfTVNHX1JFU1VMVChbQnVpbGRpbmcgdXVpZGQgYnkgZGVmYXVsdF0pCitlbHNlCisJVVVJRERfQ01UPSIjIgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyB1dWlkZCBieSBkZWZhdWx0XSkKK2ZpCispCitBQ19TVUJTVChVVUlERF9DTVQpCitkbmwKK2RubCBoYW5kbGUgLS1kaXNhYmxlLW1tcAorZG5sCitBSF9URU1QTEFURShbQ09ORklHX01NUF0sIFtEZWZpbmUgdG8gMSB0byBlbmFibGUgbW1wIHN1cHBvcnRdKQorQUNfQVJHX0VOQUJMRShbbW1wXSwKK1sgIC0tZGlzYWJsZS1tbXAgICAgICAgICAgIGRpc2FibGUgc3VwcG9ydCBtbXAsIE11bHRpIE1vdW50IFByb3RlY3Rpb25dLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIG1tcCBzdXBwb3J0XSkKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBtbXAgc3VwcG9ydF0pCisJQUNfREVGSU5FKENPTkZJR19NTVAsIDEpCitmaQorLAorQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgbW1wIHN1cHBvcnQgYnkgZGVmYXVsdF0pCitBQ19ERUZJTkUoQ09ORklHX01NUCwgMSkKKykKK2RubAorZG5sIGhhbmRsZSAtLWRpc2FibGUtdGRiCitkbmwKK0FIX1RFTVBMQVRFKFtDT05GSUdfVERCXSwgW0RlZmluZSB0byAxIHRvIGVuYWJsZSB0ZGIgc3VwcG9ydF0pCitBQ19BUkdfRU5BQkxFKFt0ZGJdLAorWyAgLS1kaXNhYmxlLXRkYiAgICAgICAgICAgZGlzYWJsZSB0ZGIgc3VwcG9ydF0sCitpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJubyIKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKFtEaXNhYmxpbmcgdGRiIHN1cHBvcnRdKQorCVREQl9DTVQ9IiMiCisJVERCX01BTl9DT01NRU5UPScuXCInCitlbHNlCisJQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgdGRiIHN1cHBvcnRdKQorCUFDX0RFRklORShDT05GSUdfVERCLCAxKQorCVREQl9DTVQ9IiIKKwlUREJfTUFOX0NPTU1FTlQ9IiIKK2ZpCissCitBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBtbXAgc3VwcG9ydCBieSBkZWZhdWx0XSkKK0FDX0RFRklORShDT05GSUdfVERCLCAxKQorVERCX0NNVD0iIgorVERCX01BTl9DT01NRU5UPSIiCispCitBQ19TVUJTVChUREJfQ01UKQorQUNfU1VCU1QoVERCX01BTl9DT01NRU5UKQorZG5sCitkbmwgaGFuZGxlIC0tZGlzYWJsZS1ibWFwLXN0YXRzCitkbmwKK0FIX1RFTVBMQVRFKFtFTkFCTEVfQk1BUF9TVEFUU10sIFtEZWZpbmUgdG8gMSB0byBlbmFibGUgYml0bWFwIHN0YXRzLl0pCitBQ19BUkdfRU5BQkxFKFtibWFwLXN0YXRzXSwKK1sgIC0tZGlzYWJsZS1ibWFwLXN0YXRzICAgIGRpc2FibGUgY29sbGVjdGlvbiBvZiBiaXRtYXAgc3RhdHMuXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBiaXRtYXAgc3RhdGlzdGljcyBzdXBwb3J0XSkKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBiaXRtYXAgc3RhdGlzdGljcyBzdXBwb3J0XSkKKwlBQ19ERUZJTkUoRU5BQkxFX0JNQVBfU1RBVFMsIDEpCitmaQorLAorQUNfTVNHX1JFU1VMVChbRW5hYmxpbmcgYml0bWFwIHN0YXRpc3RpY3Mgc3VwcG9ydCBieSBkZWZhdWx0XSkKK0FDX0RFRklORShFTkFCTEVfQk1BUF9TVEFUUywgMSkKKykKK2RubAorZG5sIGhhbmRsZSAtLWVuYWJsZS1ibWFwLXN0YXRzLW9wcworZG5sCitBSF9URU1QTEFURShbRU5BQkxFX0JNQVBfU1RBVFNfT1BTXSwgW0RlZmluZSB0byAxIHRvIGVuYWJsZSBiaXRtYXAgc3RhdHMuXSkKK0FDX0FSR19FTkFCTEUoW2JtYXAtc3RhdHMtb3BzXSwKK1sgIC0tZW5hYmxlLWJtYXAtc3RhdHMtb3BzIGVuYWJsZSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRzXSwKK2lmIHRlc3QgIiRlbmFibGV2YWwiID0gIm5vIgordGhlbgorCUFDX01TR19SRVNVTFQoW0Rpc2FibGluZyBhZGRpdGlvbmFsIGJpdG1hcCBzdGF0aXN0aWNzXSkKK2Vsc2UKKwlkbmwgVGhlcmUgaGFzIHRvIGJlIGEgYmV0dGVyIHdheSEKKwlBU19JRihbdGVzdCAieCR7ZW5hYmxlX2JtYXBfc3RhdHN9IiA9ICJ4bm8iXSwKKwkgQUNfTVNHX0ZBSUxVUkUoW0Vycm9yIC0tZW5hYmxlLWJtYXAtc3RhdHMtb3BzIHJlcXVpcmVzIGJtYXAtc3RhdHNdKSkKKworCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3NdKQorCUFDX0RFRklORShFTkFCTEVfQk1BUF9TVEFUU19PUFMsIDEpCitmaQorLAorQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIGFkZGl0aW9uYWwgYml0bWFwIHN0YXRpc3RpY3MgYnkgZGVmYXVsdF0pCispCitkbmwKK2RubAorZG5sCitNQUtFRklMRV9MSUJSQVJZPSRzcmNkaXIvbGliL01ha2VmaWxlLmxpYnJhcnkKK0FDX1NVQlNUX0ZJTEUoTUFLRUZJTEVfTElCUkFSWSkKK2RubAorZG5sIEFkZCBpbnRlcm5hdGlvbmFsaXphdGlvbiBzdXBwb3J0LCB1c2luZyBnZXR0ZXh0LgorZG5sCitHRVRURVhUX1BBQ0tBR0U9ZTJmc3Byb2dzCitQQUNLQUdFPWUyZnNwcm9ncworVkVSU0lPTj0iJEUyRlNQUk9HU19WRVJTSU9OIgorVkVSU0lPTj0wLjE0LjEKK0FDX0RFRklORV9VTlFVT1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLCBbcGFja2FnZSBuYW1lIGZvciBnZXR0ZXh0XSkKK0FDX0RFRklORV9VTlFVT1RFRChWRVJTSU9OLCAiJFZFUlNJT04iLCBbdmVyc2lvbiBmb3IgZ2V0dGV4dF0pCitBQ19TVUJTVChHRVRURVhUX1BBQ0tBR0UpCitBQ19TVUJTVChQQUNLQUdFKQorQUNfU1VCU1QoVkVSU0lPTikKKworQU1fR05VX0dFVFRFWFQKK2RubAorZG5sIEVuZCBvZiBjb25maWd1cmF0aW9uIG9wdGlvbnMKK2RubAorQUNfU1VCU1QoQklOQVJZX1RZUEUpCitBQ19QUk9HX01BS0VfU0VUCitDSEVDS19HTlVfTUFLRQorQUNfUEFUSF9QUk9HKExOLCBsbiwgbG4pCitBQ19QUk9HX0xOX1MKK0FDX1BBVEhfUFJPRyhNViwgbXYsIG12KQorQUNfUEFUSF9QUk9HKENQLCBjcCwgY3ApCitBQ19QQVRIX1BST0coUk0sIHJtLCBybSkKK0FDX1BBVEhfUFJPRyhDSE1PRCwgY2htb2QsIDopCitBQ19QUk9HX0FXSworQUNfUFJPR19FR1JFUAorQUNfUEFUSF9QUk9HKFNFRCwgc2VkLCBzZWQpCitBQ19QQVRIX1BST0coUEVSTCwgcGVybCwgcGVybCkKK0FDX1BBVEhfUFJPRyhMRENPTkZJRywgbGRjb25maWcsIDopCitBQ19DSEVDS19UT09MKEFSLCBhciwgYXIpCitBQ19DSEVDS19UT09MKFJBTkxJQiwgcmFubGliLCA6KQorQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCitBQ19DSEVDS19QUk9HKE1BS0VJTkZPLCBtYWtlaW5mbywgbWFrZWluZm8sICkKK2lmIHRlc3QgIl8kTUFLRUlORk8iID0gIl8iOyB0aGVuCisgICAgTUFLRUlORk89IkBlY2hvIE1ha2VpbmZvIGlzIG1pc3NpbmcuIEluZm8gZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBiZSBidWlsdC47dHJ1ZSIKK2Vsc2UKKyAgICBjYXNlICIkTUFLRUlORk8iIGluCisgICAgICAqL21pc3NpbmcuKikKKyAgICAgICAgQUNfTVNHX1dBUk4oWworKioqIE1ha2VpbmZvIGlzIG1pc3NpbmcuIEluZm8gZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBiZSBidWlsdC5dKQorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgOzsKKyAgICBlc2FjCitmaQorQUNfU1VCU1QoTUFLRUlORk8pCitBQ19QUk9HX0lOU1RBTEwKKyMgU2VlIGlmIHdlIG5lZWQgYSBzZXBhcmF0ZSBuYXRpdmUgY29tcGlsZXIuCitpZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSBubzsgdGhlbgorICBCVUlMRF9DQz0iJENDIgorICBBQ19TVUJTVChCVUlMRF9DQykKK2Vsc2UKKyAgQUNfQ0hFQ0tfUFJPR1MoQlVJTERfQ0MsIGdjYyBjYykKK2ZpCitBQ19DSEVDS19IRUFERVJTKG00X2ZsYXR0ZW4oWworCWRpcmVudC5oCisJZXJybm8uaAorCWV4ZWNpbmZvLmgKKwlnZXRvcHQuaAorCW1hbGxvYy5oCisJbW50ZW50LmgKKwlwYXRocy5oCisJc2VtYXBob3JlLmgKKwlzZXRqbXAuaAorCXNpZ25hbC5oCisJc3RkYXJnLmgKKwlzdGRpbnQuaAorCXN0ZGxpYi5oCisJdGVybWlvcy5oCisJdGVybWlvLmgKKwl1bmlzdGQuaAorCXV0aW1lLmgKKwlhdHRyL3hhdHRyLmgKKwlsaW51eC9mYWxsb2MuaAorCWxpbnV4L2ZkLmgKKwlsaW51eC9tYWpvci5oCisJbGludXgvbG9vcC5oCisJbmV0L2lmX2RsLmgKKwluZXRpbmV0L2luLmgKKwlzeXMvYWNsLmgKKwlzeXMvZGlza2xhYmVsLmgKKwlzeXMvZGlzay5oCisJc3lzL2ZpbGUuaAorCXN5cy9pb2N0bC5oCisJc3lzL2tleS5oCisJc3lzL21rZGV2LmgKKwlzeXMvbW1hbi5oCisJc3lzL21vdW50LmgKKwlzeXMvcHJjdGwuaAorCXN5cy9yZXNvdXJjZS5oCisJc3lzL3NlbGVjdC5oCisJc3lzL3NvY2tldC5oCisJc3lzL3NvY2tpby5oCisJc3lzL3N0YXQuaAorCXN5cy9zeXNjYWxsLmgKKwlzeXMvc3lzY3RsLmgKKwlzeXMvc3lzbWFjcm9zLmgKKwlzeXMvdGltZS5oCisJc3lzL3R5cGVzLmgKKwlzeXMvdW4uaAorCXN5cy93YWl0LmgKK10pKQorQUNfQ0hFQ0tfSEVBREVSUyhuZXQvaWYuaCwsLAorW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVQKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKK11dKQorQUNfRlVOQ19WUFJJTlRGCitkbmwgQ2hlY2sgdG8gc2VlIGlmIGRpcmVudCBoYXMgbWVtYmVyIGRfcmVjbGVuLiBPbiBjeWd3aW4gdGhvc2UgZF9yZWNsZW4KK2RubCBpcyBub3QgZGVjbGVhcmVkLgorQUNfQ0hFQ0tfTUVNQkVSKHN0cnVjdCBkaXJlbnQuZF9yZWNsZW4sW0FDX0RFRklORShIQVZFX1JFQ0xFTl9ESVJFTlQsIDEsCisJCSAgICAgICBbRGVmaW5lIHRvIDEgaWYgZGlyZW50IGhhcyBkX3JlY2xlbl0pXSwsCisJCVsjaW5jbHVkZSA8ZGlyZW50Lmg+XSkKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2F0aW1dKQorZG5sIENoZWNrIHRvIHNlZSBpZiBzc2l6ZV90IHdhcyBkZWNsYXJlZAorQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LFtBQ19ERUZJTkUoSEFWRV9UWVBFX1NTSVpFX1QsIDEsCisJCVtEZWZpbmUgdG8gMSBpZiBzc2l6ZV90IGRlY2xhcmVkXSldLCwKKwkgICAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0pCitkbmwKK2RubCBDaGVjayB0byBzZWUgaWYgbGxzZWVrKCkgaXMgZGVjbGFyZWQgaW4gdW5pc3RkLmguICBPbiBzb21lIGxpYmMncyAKK2RubCBpdCBpcywgYW5kIG9uIG90aGVycyBpdCBpc24ndC4uLi4uIFRoYW5rIHlvdSBnbGliYyBkZXZlbG9wZXJzLi4uLgorZG5sCitBQ19DSEVDS19ERUNMKGxsc2VlayxbQUNfREVGSU5FKEhBVkVfTExTRUVLX1BST1RPVFlQRSwgMSwKKwkJCVtEZWZpbmUgdG8gMSBpZiBsbHNlZWsgZGVjbGFyZWQgaW4gdW5pc3RkLmhdKV0sLAorCSAgICAgIFsjaW5jbHVkZSA8dW5pc3RkLmg+XSkKK2RubAorZG5sIENoZWNrIHRvIHNlZSBpZiBsc2VlazY0KCkgaXMgZGVjbGFyZWQgaW4gdW5pc3RkLmguICBHbGliYydzIGhlYWRlciBmaWxlcworZG5sIGFyZSBzbyBjb252b2x1dGVkIHRoYXQgSSBjYW4ndCB0ZWxsIHdoZXRoZXIgaXQgd2lsbCBhbHdheXMgYmUgZGVmaW5lZCwKK2RubCBhbmQgaWYgaXQgaXNuJ3QgZGVmaW5lZCB3aGlsZSBsc2VlazY0IGlzIGRlZmluZWQgaW4gdGhlIGxpYnJhcnksIAorZG5sIGRpc2FzdGVyIHdpbGwgc3RyaWtlLiAgCitkbmwKK2RubCBXYXJuaW5nISAgVXNlIG9mIC0tZW5hYmxlLWdjYy13YWxsIG1heSB0aHJvdyBvZmYgdGhpcyB0ZXN0LgorZG5sCitkbmwKK0FDX0NIRUNLX0RFQ0wobHNlZWs2NCxbQUNfREVGSU5FKEhBVkVfTFNFRUs2NF9QUk9UT1RZUEUsIDEsCisJCQlbRGVmaW5lIHRvIDEgaWYgbHNlZWs2NCBkZWNsYXJlZCBpbiB1bmlzdGQuaF0pXSwsCisJCVsjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisJCSAjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKwkJICNpbmNsdWRlIDx1bmlzdGQuaD5dKQorZG5sCitkbmwgV29yZCBzaXplcy4uLgorZG5sCitBQ19DSEVDS19TSVpFT0Yoc2hvcnQpCitBQ19DSEVDS19TSVpFT0YoaW50KQorQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCitBQ19DSEVDS19TSVpFT0YobG9uZyBsb25nKQorQUNfQ0hFQ0tfU0laRU9GKG9mZl90KQorQUNfQ0hFQ0tfU0laRU9GKHRpbWVfdCkKK1NJWkVPRl9TSE9SVD0kYWNfY3Zfc2l6ZW9mX3Nob3J0CitTSVpFT0ZfSU5UPSRhY19jdl9zaXplb2ZfaW50CitTSVpFT0ZfTE9ORz0kYWNfY3Zfc2l6ZW9mX2xvbmcKK1NJWkVPRl9MT05HX0xPTkc9JGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK1NJWkVPRl9PRkZfVD0kYWNfY3Zfc2l6ZW9mX29mZl90CitTSVpFT0ZfVElNRV9UPSRhY19jdl9zaXplb2ZfdGltZV90CitBQ19TVUJTVChTSVpFT0ZfU0hPUlQpCitBQ19TVUJTVChTSVpFT0ZfSU5UKQorQUNfU1VCU1QoU0laRU9GX0xPTkcpCitBQ19TVUJTVChTSVpFT0ZfTE9OR19MT05HKQorQUNfU1VCU1QoU0laRU9GX09GRl9UKQorQUNfU1VCU1QoU0laRU9GX1RJTUVfVCkKK0FDX0NfQklHRU5ESUFOCitpZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSBubzsgdGhlbgorICBCVUlMRF9DQz0iJEJVSUxEX0NDIiBDUFA9IiRDUFAiIC9iaW4vc2ggJGFjX2F1eF9kaXIvcGFyc2UtdHlwZXMuc2gKK2Vsc2UKKyAgQ1JPU1NfQ09NUElMRT0iMSIgQlVJTERfQ0M9IiRCVUlMRF9DQyIgQ1BQPSIkQ1BQIiAvYmluL3NoICRhY19hdXhfZGlyL3BhcnNlLXR5cGVzLnNoCitmaQorQVNNX1RZUEVTX0hFQURFUj0uL2FzbV90eXBlcy5oCitBQ19TVUJTVF9GSUxFKEFTTV9UWVBFU19IRUFERVIpCitkbmwKK2RubCBTYXZlIHRoZSBjb25maWd1cmF0aW9uICNkZWZpbmVzIG5lZWRlZCBmb3IgdGhlIHB1YmxpYyBleHQyZnMuaAorZG5sIGhlYWRlciBmaWxlCitkbmwKK2VjaG8gIi8qIFRoZXNlIGRlZmluZXMgYXJlIG5lZWRlZCBmb3IgdGhlIHB1YmxpYyBleHQyZnMuaCBoZWFkZXIgZmlsZSAqLyIgXAorICAgICA+IHB1YmxpY19jb25maWcuaAoraWYgZ3JlcCBIQVZFX1NZU19UWVBFU19IIGNvbmZkZWZzLmggPiB0bXBfY29uZmlnLiQkOyB0aGVuCisgIHVuaXEgdG1wX2NvbmZpZy4kJCA+PiBwdWJsaWNfY29uZmlnLmgKK2Vsc2UKKyAgZWNobyAiI3VuZGVmIEhBVkVfU1lTX1RZUEVTX0giID4+IHB1YmxpY19jb25maWcuaAorZmkKK2lmIGdyZXAgV09SRFNfQklHRU5ESUFOIGNvbmZkZWZzLmggPiB0bXBfY29uZmlnLiQkOyB0aGVuCisgIHVuaXEgdG1wX2NvbmZpZy4kJCA+PiBwdWJsaWNfY29uZmlnLmgKK2Vsc2UKKyAgZWNobyAiI3VuZGVmIFdPUkRTX0JJR0VORElBTiIgPj4gcHVibGljX2NvbmZpZy5oCitmaQorcm0gLWYgdG1wX2NvbmZpZy4kJAorUFVCTElDX0NPTkZJR19IRUFERVI9Li9wdWJsaWNfY29uZmlnLmgKK0FDX1NVQlNUX0ZJTEUoUFVCTElDX0NPTkZJR19IRUFERVIpCitkbmwKK2RubCBTZWUgaWYgd2UgaGF2ZSBpbnR0eXBlcy5oIGFuZCBpZiBpbnRwdHJfdCBpcyBkZWZpbmVkCitkbmwKK0FDX0NIRUNLX0hFQURFUlMoW2ludHR5cGVzLmhdKQorQUNfQ0hFQ0tfVFlQRVMoaW50cHRyX3QpCitkbmwKK2RubCBTZWUgaWYgc3RydWN0IHN0YXQgaGFzIGEgc3RfZmxhZ3MgZmllbGQsIGluIHdoaWNoIGNhc2Ugd2UgY2FuIGdldCBmaWxlCitkbmwgZmxhZ3Mgc29tZXdoYXQgcG9ydGFibHkuICBBbHNvIGNoZWNrIGZvciB0aGUgYW5hbG9nb3VzIHNldHRlciwgY2hmbGFncygpLgorZG5sCitBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBzdHJ1Y3Qgc3RhdCBoYXMgYSBzdF9mbGFncyBmaWVsZCkKK0FDX0NBQ0hFX1ZBTChlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzLAorCUFDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8c3lzL3N0YXQuaD5dLAorCQlbc3RydWN0IHN0YXQgc3RhdDsgc3RhdC5zdF9mbGFncyA9IDA7XSwKKwkJW2UyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3M9eWVzXSwKKwkJW2UyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3M9bm9dKSkKK0FDX01TR19SRVNVTFQoJGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3MpCitpZiB0ZXN0ICIkZTJmc3Byb2dzX2N2X3N0cnVjdF9zdF9mbGFncyIgPSB5ZXM7IHRoZW4KKyAgQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgc3RfZmxhZ3MgZmllbGQgaXMgdXNlZnVsKQorICBBQ19DQUNIRV9WQUwoZTJmc3Byb2dzX2N2X3N0cnVjdF9zdF9mbGFnc19pbW11dCwKKwlBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN5cy9zdGF0Lmg+XSwKKwkJW3N0cnVjdCBzdGF0IHN0YXQ7IHN0YXQuc3RfZmxhZ3MgfD0gVUZfSU1NVVRBQkxFO10sCisJCVtlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0PXllc10sCisJCVtlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0PW5vXSkpCisgIEFDX01TR19SRVNVTFQoJGUyZnNwcm9nc19jdl9zdHJ1Y3Rfc3RfZmxhZ3NfaW1tdXQpCisgIGlmIHRlc3QgIiRlMmZzcHJvZ3NfY3Zfc3RydWN0X3N0X2ZsYWdzX2ltbXV0IiA9IHllczsgdGhlbgorCSAgQUNfREVGSU5FKEhBVkVfU1RBVF9GTEFHUywgMSwKKwkJW0RlZmluZSB0byAxIGlmIHN0cnVjdCBzdGF0IGhhcyBzdF9mbGFnc10pCisgIGZpCitmaQorZG5sCitkbmwgQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBTQV9MRU4KK2RubAorQUNfQ0hFQ0tfTUVNQkVSKHN0cnVjdCBzb2NrYWRkci5zYV9sZW4sCisJCUFDX0RFRklORV9VTlFVT1RFRChIQVZFX1NBX0xFTiwxLAorCQkJW0RlZmluZSB0byAxIGlmIGlmIHN0cnVjdCBzb2NrYWRkciBjb250YWlucyBzYV9sZW5dKSwsCisJWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKwkgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dKQorZG5sCitkbmwgVGhpcyB3aWxsIGFkZCAtbGJsa2lkIHRvIHRoZSBBQ19DSEVDS19GVU5DUyBzZWFyY2ggaWYgd2UgYXJlIHVzaW5nCitkbmwgdGhlIHN5c3RlbS1wcm92aWRlZCBibGtpZCBsaWJyYXJ5CitkbmwKK2lmIHRlc3QgLW4gIiRCTEtJRF9DTVQiOyB0aGVuCisgIEFDX1NFQVJDSF9MSUJTKFtibGtpZF9wcm9iZV9hbGxdLCBbYmxraWRdKQorZmkKK2RubAoraWYgdGVzdCAtbiAiJERMT1BFTl9MSUIiIDsgdGhlbgorICAgYWNfY3ZfZnVuY19kbG9wZW49eWVzCitmaQorQUNfQ0hFQ0tfRlVOQ1MobTRfZmxhdHRlbihbCisJX19zZWN1cmVfZ2V0ZW52CisJYWRkX2tleQorCWJhY2t0cmFjZQorCWJsa2lkX3Byb2JlX2dldF90b3BvbG9neQorCWJsa2lkX3Byb2JlX2VuYWJsZV9wYXJ0aXRpb25zCisJY2hmbGFncworCWRsb3BlbgorCWZhZHZpc2U2NAorCWZhbGxvY2F0ZQorCWZhbGxvY2F0ZTY0CisJZmNob3duCisJZmRhdGFzeW5jCisJZnN0YXQ2NAorCWZ0cnVuY2F0ZTY0CisJZnV0aW1lcworCWdldGN3ZAorCWdldGR0YWJsZXNpemUKKwlnZXRtbnRpbmZvCisJZ2V0cHd1aWRfcgorCWdldHJsaW1pdAorCWdldHJ1c2FnZQorCWpyYW5kNDgKKwlrZXljdGwKKwlsbGlzdHhhdHRyCisJbGxzZWVrCisJbHNlZWs2NAorCW1hbGxpbmZvCisJbWJzdG93Y3MKKwltZW1hbGlnbgorCW1lbXBjcHkKKwltbWFwCisJbXN5bmMKKwluYW5vc2xlZXAKKwlvcGVuNjQKKwlwYXRoY29uZgorCXBvc2l4X2ZhZHZpc2UKKwlwb3NpeF9mYWR2aXNlNjQKKwlwb3NpeF9tZW1hbGlnbgorCXByY3RsCisJcHJlYWQKKwlwd3JpdGUKKwlwcmVhZDY0CisJcHdyaXRlNjQKKwlzZWN1cmVfZ2V0ZW52CisJc2V0bW50ZW50CisJc2V0cmVzZ2lkCisJc2V0cmVzdWlkCisJc25wcmludGYKKwlzcmFuZG9tCisJc3RwY3B5CisJc3RyY2FzZWNtcAorCXN0cmR1cAorCXN0cm5sZW4KKwlzdHJwdGltZQorCXN0cnRvdWxsCisJc3luY19maWxlX3JhbmdlCisJc3lzY29uZgorCXVzbGVlcAorCXV0aW1lCisJdXRpbWVzCisJdmFsbG9jCitdKSkKK2RubAorZG5sIENoZWNrIHRvIHNlZSBpZiAtbHNvY2tldCBpcyByZXF1aXJlZCAoc29sYXJpcykgdG8gbWFrZSBzb21ldGhpbmcKK2RubCB0aGF0IHVzZXMgc29ja2V0KCkgdG8gY29tcGlsZTsgdGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBVVUlEIGxpYnJhcnkKK2RubAorU09DS0VUX0xJQj0nJworQUNfQ0hFQ0tfTElCKHNvY2tldCwgc29ja2V0LCBbU09DS0VUX0xJQj0tbHNvY2tldF0pCitBQ19TVUJTVChTT0NLRVRfTElCKQorZG5sCitkbmwgU2VlIGlmIGxpYm1hZ2ljIGV4aXN0cworZG5sCitBQ19DSEVDS19MSUIobWFnaWMsIG1hZ2ljX2ZpbGUsIFtNQUdJQ19MSUI9LWxtYWdpYworQUNfQ0hFQ0tfSEVBREVSUyhbbWFnaWMuaF0pXSkKK2lmIHRlc3QgIiRhY19jdl9mdW5jX2Rsb3BlbiIgPSB5ZXMgOyB0aGVuCisgICBNQUdJQ19MSUI9JERMT1BFTl9MSUIKK2ZpCitBQ19TVUJTVChNQUdJQ19MSUIpCitkbmwKK2RubCBDaGVjayB0byBzZWUgaWYgbGlicnQgaXMgcmVxdWlyZWQgZm9yIGNsb2NrX2dldHRpbWUoKSAoZ2xpYmMgPCAyLjE3KQorZG5sCitBQ19DSEVDS19MSUIocnQsIGNsb2NrX2dldHRpbWUsIFtDTE9DS19HRVRUSU1FX0xJQj0tbHJ0XSkKK0FDX1NVQlNUKENMT0NLX0dFVFRJTUVfTElCKQorZG5sCitkbmwgQ2hlY2sgdG8gc2VlIGlmIHRoZSBGVVNFIGxpYnJhcnkgaXMgLWxmdXNlIG9yIC1sb3N4ZnVzZQorZG5sCitGVVNFX0NNVD0KK0ZVU0VfTElCPQorZG5sIG9zeGZ1c2UuZHlsaWIgc3VwZXJzZWRlcyBmdXNlbGliLmR5bGliCitBQ19BUkdfRU5BQkxFKFtmdXNlMmZzXSwKK1sgIC0tZGlzYWJsZS1mdXNlMmZzCSAgZG8gbm90IGJ1aWxkIGZ1c2UyZnNdLAoraWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAibm8iCit0aGVuCisJRlVTRV9DTVQ9IiMiCisJQUNfTVNHX1JFU1VMVChbRGlzYWJsaW5nIGZ1c2UyZnNdKQorZWxzZQorCUFDX0NIRUNLX0hFQURFUlMoW3B0aHJlYWQuaCBmdXNlLmhdLCBbXSwKK1tBQ19NU0dfRkFJTFVSRShbQ2Fubm90IGZpbmQgZnVzZTJmcyBoZWFkZXJzLl0pXSwKK1sjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTCTY0CisjZGVmaW5lIEZVU0VfVVNFX1ZFUlNJT04gMjldKQorCisJQUNfUFJFUFJPQ19JRkVMU0UoCitbQUNfTEFOR19QUk9HUkFNKFtbI2RlZmluZSBGVVNFX1VTRV9WRVJTSU9OIDI5CisjaWZkZWYgX19saW51eF9fCisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9mYWxsb2MuaD4KKyNpbmNsdWRlIDxsaW51eC94YXR0ci5oPgorI2VuZGlmCitdXSwgW10pXSwgW10sIFtBQ19NU0dfRkFJTFVSRShbQ2Fubm90IGZpbmQgZnVzZTJmcyBMaW51eCBoZWFkZXJzLl0pXSkKKworCUFDX0NIRUNLX0xJQihvc3hmdXNlLCBmdXNlX21haW4sIFtGVVNFX0xJQj0tbG9zeGZ1c2VdLAorCQlbQUNfQ0hFQ0tfTElCKGZ1c2UsIGZ1c2VfbWFpbiwgW0ZVU0VfTElCPS1sZnVzZV0sCisJCQkgICAgICBbQUNfTVNHX0ZBSUxVUkUoW0Nhbm5vdCBmaW5kIGZ1c2UgbGlicmFyeS5dKV0pXSkKKwlBQ19NU0dfUkVTVUxUKFtFbmFibGluZyBmdXNlMmZzXSkKK2ZpCissCitBQ19DSEVDS19IRUFERVJTKFtwdGhyZWFkLmggZnVzZS5oXSwgW10sIFtGVVNFX0NNVD0iIyJdLAorWyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMJNjQKKyNkZWZpbmUgRlVTRV9VU0VfVkVSU0lPTiAyOQorI2lmZGVmIF9fbGludXhfXworIyBpbmNsdWRlIDxsaW51eC9mcy5oPgorIyBpbmNsdWRlIDxsaW51eC9mYWxsb2MuaD4KKyMgaW5jbHVkZSA8bGludXgveGF0dHIuaD4KKyNlbmRpZl0pCitpZiB0ZXN0IC16ICIkRlVTRV9DTVQiCit0aGVuCisJQUNfQ0hFQ0tfTElCKG9zeGZ1c2UsIGZ1c2VfbWFpbiwgW0ZVU0VfTElCPS1sb3N4ZnVzZV0sCitbQUNfQ0hFQ0tfTElCKGZ1c2UsIGZ1c2VfbWFpbiwgW0ZVU0VfTElCPS1sZnVzZV0sIFtGVVNFX0NNVD0iIyJdKV0pCitmaQoraWYgdGVzdCAteiAiJEZVU0VfQ01UIgordGhlbgorCUFDX01TR19SRVNVTFQoW0VuYWJsaW5nIGZ1c2UyZnMgYnkgZGVmYXVsdC5dKQorZmkKKykKK0FDX1NVQlNUKEZVU0VfTElCKQorQUNfU1VCU1QoRlVTRV9DTVQpCitkbmwKK2RubCBTZWUgaWYgb3B0cmVzZXQgZXhpc3RzCitkbmwKK0FDX01TR19DSEVDS0lORyhmb3Igb3B0cmVzZXQpCitBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9vcHRyZXNldCwKK1tBQ19FR1JFUF9IRUFERVIob3B0cmVzZXQsIHVuaXN0ZC5oLAorICBhY19jdl9oYXZlX29wdHJlc2V0PXllcywgYWNfY3ZfaGF2ZV9vcHRyZXNldD1ubyldKWRubAorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGF2ZV9vcHRyZXNldCkKK2lmIHRlc3QgJGFjX2N2X2hhdmVfb3B0cmVzZXQgPSB5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKEhBVkVfT1BUUkVTRVQsIDEsIFtEZWZpbmUgdG8gMSBpZiBvcHRyZXNldCBmb3IgZ2V0b3B0IGlzIHByZXNlbnRdKQorZmkKK2RubAorZG5sIFRlc3QgZm9yIHNlbV9pbml0LCBhbmQgd2hpY2ggbGlicmFyeSBpdCBtaWdodCByZXF1aXJlOgorZG5sCitBSF9URU1QTEFURShbSEFWRV9TRU1fSU5JVF0sIFtEZWZpbmUgdG8gMSBpZiBzZW1faW5pdCgpIGV4aXN0c10pCitTRU1fSU5JVF9MSUI9JycKK0FDX0NIRUNLX0ZVTkMoc2VtX2luaXQsICwKKyAgQUNfQ0hFQ0tfTElCKHB0aHJlYWQsIHNlbV9pbml0LAorICAJQUNfREVGSU5FKEhBVkVfU0VNX0lOSVQsIDEpCisgIAlTRU1fSU5JVF9MSUI9LWxwdGhyZWFkLAorICBBQ19DSEVDS19MSUIocnQsIHNlbV9pbml0LAorICAJQUNfREVGSU5FKEhBVkVfU0VNX0lOSVQsIDEpCisgIAlTRU1fSU5JVF9MSUI9LWxydCwKKyAgQUNfQ0hFQ0tfTElCKHBvc2l4NCwgc2VtX2luaXQsCisgIAlBQ19ERUZJTkUoSEFWRV9TRU1fSU5JVCwgMSkKKyAgCVNFTV9JTklUX0xJQj0tbHBvc2l4NCkpKSlkbmwKK0FDX1NVQlNUKFNFTV9JTklUX0xJQikKK2RubAorZG5sIENoZWNrIGZvciB1bmlmaWVkIGRpZmYKK2RubAorQUNfTVNHX0NIRUNLSU5HKGZvciB1bmlmaWVkIGRpZmYgb3B0aW9uKQoraWYgZGlmZiAtdSAkMCAkMCA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbgorICAgVU5JX0RJRkZfT1BUUz0tdQorZWxzZQorICAgVU5JX0RJRkZfT1BUUz0tYworZmkKK0FDX01TR19SRVNVTFQoJFVOSV9ESUZGX09QVFMpCitBQ19TVUJTVChVTklfRElGRl9PUFRTKQorZG5sCitkbmwgV2UgdXNlIHRoZSBFWFQyIGlvY3RscyBvbmx5IHVuZGVyIExpbnV4CitkbmwKK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqKQorCUFDX0RFRklORShIQVZFX0VYVDJfSU9DVExTLCAxLCBbRGVmaW5lIHRvIDEgaWYgRXh0MiBpb2N0bHMgcHJlc2VudF0pCisJOzsKK2VzYWMKK2RubAorZG5sIE9TLXNwZWNpZmljIHVuY29tbWVudCBjb250cm9sCitkbmwKK0xJTlVYX0NNVD0iIyIKK0NZR1dJTl9DTVQ9IiMiCitVTklYX0NNVD0KK2Nhc2UgIiRob3N0X29zIiBpbgorbGludXgqKQorCUxJTlVYX0NNVD0KKwk7OworY3lnd2luKQorCUNZR1dJTl9DTVQ9CisJVU5JWF9DTVQ9IiMiCisJOzsKK2VzYWMKK0FDX1NVQlNUKExJTlVYX0NNVCkKK0FDX1NVQlNUKENZR1dJTl9DTVQpCitBQ19TVUJTVChVTklYX0NNVCkKK2RubAorZG5sIExpbnV4IGFuZCBIdXJkIHBsYWNlcyByb290IGZpbGVzIGluIHRoZSAvIGJ5IGRlZmF1bHQKK2RubAorY2FzZSAiJGhvc3Rfb3MiIGluCitsaW51eCogfCBnbnUqIHwgaypic2QqLWdudSkKKwlpZiB0ZXN0ICIkcHJlZml4IiA9IE5PTkUgLWEgIiRyb290X3ByZWZpeCIgPSBOT05FIDsgdGhlbgorCQlyb290X3ByZWZpeD0iIjsKKwkJQUNfTVNHX1JFU1VMVChbT24gJGhvc3Rfb3Mgc3lzdGVtcywgcm9vdF9wcmVmaXggZGVmYXVsdHMgdG8gJyddKQorCWZpCisJOzsKK2VzYWMKK2RubAorZG5sIE9uIExpbnV4L2h1cmQsIGZvcmNlIHRoZSBwcmVmaXggdG8gYmUgL3VzcgorZG5sCitjYXNlICIkaG9zdF9vcyIgaW4KK2xpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KQorCWlmIHRlc3QgIiRwcmVmaXgiID0gTk9ORSA7IHRoZW4KKwkJcHJlZml4PSIvdXNyIjsKKwkJQUNfTVNHX1JFU1VMVChbT24gJGhvc3Rfb3Mgc3lzdGVtcywgcHJlZml4IGRlZmF1bHRzIHRvIC91c3JdKQorCQlpZiB0ZXN0ICIkbWFuZGlyIiA9ICcke3ByZWZpeH0vbWFuJyA7IHRoZW4KKwkJCUFDX01TR19SRVNVTFQoWy4uLmFuZCBtYW5kaXIgZGVmYXVsdHMgdG8gL3Vzci9zaGFyZS9tYW5dKQorCQkJbWFuZGlyPS91c3Ivc2hhcmUvbWFuCisJCWZpCisJZmkKKzs7Citlc2FjCitpZiB0ZXN0ICIkcm9vdF9wcmVmaXgiID0gTk9ORSA7IHRoZW4KKwlpZiB0ZXN0ICIkcHJlZml4IiA9IE5PTkUgOyB0aGVuCisJCXJvb3RfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCisJZWxzZQorCQlyb290X3ByZWZpeD0iJHByZWZpeCIKKwlmaQorCXJvb3RfYmluZGlyPSRiaW5kaXIKKwlyb290X3NiaW5kaXI9JHNiaW5kaXIKKwlyb290X2xpYmRpcj0kbGliZGlyCisJcm9vdF9zeXNjb25mZGlyPSRzeXNjb25mZGlyCitlbHNlCisJcm9vdF9iaW5kaXI9JyR7cm9vdF9wcmVmaXh9L2JpbicKKwlyb290X3NiaW5kaXI9JyR7cm9vdF9wcmVmaXh9L3NiaW4nCisJcm9vdF9saWJkaXI9JyR7cm9vdF9wcmVmaXh9L2xpYicKKwlyb290X3N5c2NvbmZkaXI9JyR7cm9vdF9wcmVmaXh9L2V0YycKK2ZpCitpZiB0ZXN0ICIkYmluZGlyIiAhPSAnJHtleGVjX3ByZWZpeH0vYmluJzsgdGhlbgorICAgIHJvb3RfYmluZGlyPSRiaW5kaXIKKyAgICBBQ19NU0dfUkVTVUxUKFtTZXR0aW5nIHJvb3RfYmluZGlyIHRvICRyb290X2JpbmRpcl0pCitmaQoraWYgdGVzdCAiJHNiaW5kaXIiICE9ICcke2V4ZWNfcHJlZml4fS9zYmluJzsgdGhlbgorICAgIHJvb3Rfc2JpbmRpcj0kc2JpbmRpcgorICAgIEFDX01TR19SRVNVTFQoW1NldHRpbmcgcm9vdF9zYmluZGlyIHRvICRyb290X3NiaW5kaXJdKQorZmkKK2lmIHRlc3QgIiRsaWJkaXIiICE9ICcke2V4ZWNfcHJlZml4fS9saWInOyB0aGVuCisgICAgcm9vdF9saWJkaXI9JGxpYmRpcgorICAgIEFDX01TR19SRVNVTFQoW1NldHRpbmcgcm9vdF9saWJkaXIgdG8gJHJvb3RfbGliZGlyXSkKK2ZpCitpZiB0ZXN0ICIkc3lzY29uZmRpciIgIT0gJyR7cHJlZml4fS9ldGMnOyB0aGVuCisgICAgcm9vdF9zeXNjb25mZGlyPSRzeXNjb25mZGlyCisgICAgQUNfTVNHX1JFU1VMVChbU2V0dGluZyByb290X3N5c2NvbmZkaXIgdG8gJHJvb3Rfc3lzY29uZmRpcl0pCitmaQorQUNfU1VCU1Qocm9vdF9wcmVmaXgpCitBQ19TVUJTVChyb290X2JpbmRpcikKK0FDX1NVQlNUKHJvb3Rfc2JpbmRpcikKK0FDX1NVQlNUKHJvb3RfbGliZGlyKQorQUNfU1VCU1Qocm9vdF9zeXNjb25mZGlyKQorZG5sCitkbmwgQWxsb3cgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbXVsdGlhcmNoIGFyY2gKK2RubAorQUNfQVJHX1dJVEgoW211bHRpYXJjaF0sCitbICAtLXdpdGgtbXVsdGlhcmNoPUFSQ0ggc3BlY2lmeSB0aGUgbXVsdGlhcmNoIHRyaXBsZXRdLAoraWYgdGVzdCAiJHdpdGh2YWwiID0gImxpYjY0IjsgdGhlbgorICAgIGxpYmRpcj0vdXNyL2xpYjY0CisgICAgcm9vdF9saWJkaXI9L2xpYjY0CitlbHNlCisgICAgbGliZGlyPSRsaWJkaXIvJHdpdGh2YWwKKyAgICByb290X2xpYmRpcj0kcm9vdF9saWJkaXIvJHdpdGh2YWwKK2ZpCispZG5sCitkbmwKK2RubCBTZWUgaWYgLXN0YXRpYyB3b3Jrcy4gIFRoaXMgY291bGQgZmFpbCBpZiB0aGUgbGlua2VyIGRvZXMgbm90Citkbmwgc3VwcG9ydCAtc3RhdGljLCBvciBpZiByZXF1aXJlZCBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBhdmFpbGFibGUKK2RubCBpbiBzdGF0aWMgZm9ybS4KK2RubAorQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHdlIGNhbiBsaW5rIHdpdGggLXN0YXRpY10pCitBQ19DQUNIRV9WQUwoYWNfY3ZfZTJmc3Byb2dzX3VzZV9zdGF0aWMsCitbU0FWRV9MREZMQUdTPSRMREZMQUdTOyBMREZMQUdTPSIkTERGTEFHU19TVEFUSUMgLXN0YXRpYyIKK0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8c3RkaW8uaD5dLFtmZmx1c2goc3Rkb3V0KTtdLAorIGFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljPXllcywgYWNfY3ZfZTJmc3Byb2dzX3VzZV9zdGF0aWM9bm8pCitMREZMQUdTPSRTQVZFX0xERkxBR1NdKQorZG5sCitkbmwgUmVnYXJkbGVzcyBvZiBob3cgdGhlIHRlc3QgdHVybnMgb3V0LCBTb2xhcmlzIGRvZXNuJ3QgaGFuZGxlIC1zdGF0aWMKK2RubCBUaGlzIGlzIGNhdXNlZCBieSB0aGUgc29ja2V0IGxpYnJhcnkgcmVxdWlyaW5nIHRoZSBuc2wgbGlicmFyeSwgd2hpY2gKK2RubCByZXF1aXJlcyB0aGUgLWRsIGxpYnJhcnksIHdoaWNoIG9ubHkgd29ya3MgZm9yIGR5bmFtaWNhbGx5IGxpbmtlZCAKK2RubCBwcm9ncmFtcy4gIEl0IGJhc2ljYWxseSBtZWFucyB5b3UgY2FuJ3QgaGF2ZSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtcworZG5sIHdoaWNoIHVzZSB0aGUgbmV0d29yayB1bmRlciBTb2xhcmlzLiAgCitkbmwKK2Nhc2UgIiRob3N0X29zIiBpbgorc29sYXJpczIuKikKKwlhY19jdl9lMmZzcHJvZ3NfdXNlX3N0YXRpYz1ubwkKKzs7Citlc2FjCitBQ19NU0dfUkVTVUxUKCRhY19jdl9lMmZzcHJvZ3NfdXNlX3N0YXRpYykKK2lmIHRlc3QgJGFjX2N2X2UyZnNwcm9nc191c2Vfc3RhdGljID0geWVzOyB0aGVuCisJTERGTEFHU19TVEFUSUM9IiRMREZMQUdTX1NUQVRJQyAtc3RhdGljIgorZmkKK0FDX1NVQlNUKExERkxBR1NfU1RBVElDKQorZG5sCitkbmwgV29yayBhcm91bmQgbXlzdGVyaW91cyBEYXJ3aW4gLyBHTlUgbGliaW50bCBwcm9ibGVtCitkbmwgKF9fYXNtX18gcmVkaXJlY3Rpb24gZG9lc24ndCB3b3JrIGZvciBzb21lIG15c3RlcmlvdXMgcmVhc29uLiAgTG9va3MgbGlrZQorZG5sIEFwcGxlIGhhY2tlZCBnY2Mgc29tZWhvdz8pCitkbmwKK2Nhc2UgIiRob3N0X29zIiBpbgorZGFyd2luKikKKwlBQ19NU0dfUkVTVUxUKFtVc2luZyBBcHBsZSBEYXJ3aW4gLyBHTlUgbGliaW50bCB3b3JrYXJvdW5kXSkKKwlBQ19ERUZJTkUoX0lOVExfUkVESVJFQ1RfTUFDUk9TLCAxLAorCQlbRGVmaW5lIHRvIDEgaWYgQXBwbGUgRGFyd2luIGxpYmludGwgd29ya2Fyb3VuZCBpcyBuZWVkZWRdKQorCTs7Citlc2FjCitkbmwKK2RubCBPbmx5IHRyeSB0byBydW4gdGhlIHRlc3Qgc3VpdGUgaWYgd2UncmUgbm90IGNyb3NzIGNvbXBpbGluZy4KK2RubAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXMgOyB0aGVuCisgIERPX1RFU1RfU1VJVEU9CitlbHNlCisgIERPX1RFU1RfU1VJVEU9Y2hlY2sKK2ZpCitBQ19TVUJTVChET19URVNUX1NVSVRFKQorZG5sCitkbmwgT25seSBpbmNsdWRlIHRoZSBpbnRsIGluY2x1ZGUgZmlsZXMgaWYgd2UncmUgYnVpbGRpbmcgd2l0aCB0aGVtCitkbmwKK0lOQ0xVREVTPSctSS4gLUkkKHRvcF9idWlsZGRpcikvbGliIC1JJCh0b3Bfc3JjZGlyKS9saWInCitpZiB0ZXN0IC1uICIkQ1BQRkxBR1MiIDsgdGhlbgorCUlOQ0xVREVTPSIkSU5DTFVERVMgJENQUEZMQUdTIgorZmkKK2lmIHRlc3QgIiRVU0VfSU5DTFVERURfTElCSU5UTCIgPSAieWVzIiA7IHRoZW4KKwlJTkNMVURFUz0kSU5DTFVERVMnIC1JJCh0b3BfYnVpbGRkaXIpL2ludGwgLUkkKHRvcF9zcmNkaXIpL2ludGwnCitmaQoraWYgdGVzdCAtbiAiJFdJVEhfRElFVF9MSUJDIiA7IHRoZW4KKwlJTkNMVURFUz0iJElOQ0xVREVTIC1EX1JFRU5UUkFOVCIKK2ZpCitBQ19TVUJTVChJTkNMVURFUykKK0FNX01LSU5TVEFMTERJUlMKK2RubAorZG5sIEJ1aWxkIENGTEFHUworZG5sCitpZiB0ZXN0ICRjcm9zc19jb21waWxpbmcgPSBubzsgdGhlbgorICAgQlVJTERfQ0ZMQUdTPSIkQ0ZMQUdTICRDUFBGTEFHUyAkSU5DTFVERVMgLURIQVZFX0NPTkZJR19IIgorICAgQlVJTERfTERGTEFHUz0iJExERkxBR1MiCitmaQorQUNfU1VCU1QoQlVJTERfQ0ZMQUdTKQorQUNfU1VCU1QoQlVJTERfTERGTEFHUykKK2RubAorZG5sIERlZmluZSBDRkxBR1MgYW5kIExERkxBR1MgZm9yIHNoYXJlZCBsaWJyYXJpZXMKK2RubAorQ0ZMQUdTX1NITElCPSR7Q0ZMQUdTX1NITElCOi0kQ0ZMQUdTfQorQ0ZMQUdTX1NUTElCPSR7Q0ZMQUdTX1NUTElCOi0kQ0ZMQUdTfQorTERGTEFHU19TSExJQj0ke0xERkxBR1NfU0hMSUI6LSRMREZMQUdTfQorQUNfU1VCU1QoQ0ZMQUdTX1NITElCKQorQUNfU1VCU1QoQ0ZMQUdTX1NUTElCKQorQUNfU1VCU1QoTERGTEFHU19TSExJQikKK2RubAorZG5sIE1ha2Ugb3VyIG91dHB1dCBmaWxlcywgYmVpbmcgc3VyZSB0aGF0IHdlIGNyZWF0ZSB0aGUgc29tZSBtaXNjZWxsYW5lb3VzIAorZG5sIGRpcmVjdG9yaWVzCitkbmwKK3Rlc3QgLWQgbGliIHx8IG1rZGlyIGxpYgordGVzdCAtZCBpbmNsdWRlIHx8IG1rZGlyIGluY2x1ZGUKK3Rlc3QgLWQgaW5jbHVkZS9saW51eCB8fCBta2RpciBpbmNsdWRlL2xpbnV4Cit0ZXN0IC1kIGluY2x1ZGUvYXNtIHx8IG1rZGlyIGluY2x1ZGUvYXNtCitpZiB0ZXN0IC16ICIkVVVJRF9DTVQiIDsgdGhlbgorCXV1aWRfb3V0X2xpc3Q9ImxpYi91dWlkL01ha2VmaWxlIGxpYi91dWlkL3V1aWQucGMgXAorCQlsaWIvdXVpZC91dWlkX3R5cGVzLmgiCitmaQoraWYgdGVzdCAteiAiJEJMS0lEX0NNVCIgOyB0aGVuCisJYmxraWRfb3V0X2xpc3Q9ImxpYi9ibGtpZC9NYWtlZmlsZSBsaWIvYmxraWQvYmxraWQucGMgXAorCQlsaWIvYmxraWQvYmxraWRfdHlwZXMuaCIKK2ZpCitmb3IgaSBpbiBNQ09ORklHIE1ha2VmaWxlIGUyZnNwcm9ncy5zcGVjIFwKKwl1dGlsL01ha2VmaWxlIHV0aWwvc3Vic3QuY29uZiB1dGlsL2dlbi10YXJiYWxsIHV0aWwvaW5zdGFsbC1zeW1saW5rIFwKKwlsaWIvZXQvTWFrZWZpbGUgbGliL3NzL01ha2VmaWxlIGxpYi9lMnAvTWFrZWZpbGUgXAorCWxpYi9leHQyZnMvTWFrZWZpbGUgbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorCSR1dWlkX291dF9saXN0ICRibGtpZF9vdXRfbGlzdCBsaWIvc3VwcG9ydC9NYWtlZmlsZSBcCisJbGliL3NzL3NzLnBjIGxpYi9ldC9jb21fZXJyLnBjIGxpYi9lMnAvZTJwLnBjIGxpYi9leHQyZnMvZXh0MmZzLnBjIFwKKwltaXNjL01ha2VmaWxlIGV4dDJlZC9NYWtlZmlsZSBlMmZzY2svTWFrZWZpbGUgXAorCWRlYnVnZnMvTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvcHJvZ3MvTWFrZWZpbGUgXAorCXJlc2l6ZS9NYWtlZmlsZSBkb2MvTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBcCisJaW50bC9saWJnbnVpbnRsLmggcG8vTWFrZWZpbGUuaW4gOyBkbworCWlmIHRlc3QgLWQgYGRpcm5hbWUgJHtzcmNkaXJ9LyRpYCA7IHRoZW4KKwkJb3V0bGlzdD0iJG91dGxpc3QgJGkiCisJZmkKK2RvbmUKK0FDX09VVFBVVCgkb3V0bGlzdCkKK2lmIHRlc3QgLWYgdXRpbC9nZW4tdGFyYmFsbDsgdGhlbiBjaG1vZCAreCB1dGlsL2dlbi10YXJiYWxsOyBmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbnRyaWIvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9jb250cmliL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyZDQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL0FuZHJvaWQubWsKQEAgLTAsMCArMSw3OSBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgZnNzdHJlc3MKKyMKK2Zzc3RyZXNzX3NyY19maWxlcyA6PSBcCisJZnNzdHJlc3MuYworCitmc3N0cmVzc19jX2luY2x1ZGVzIDo9IAorCitmc3N0cmVzc19jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2Zzc3RyZXNzX3NoYXJlZF9saWJyYXJpZXMgOj0gCisKK2Zzc3RyZXNzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGZzc3RyZXNzX3NyY19maWxlcykKK21rZTJmc19jX2luY2x1ZGVzTE9DQUxfQ0ZMQUdTIDo9ICQoZnNzdHJlc3NfY2ZsYWdzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChmc3N0cmVzc19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBmc3N0cmVzcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChmc3N0cmVzc19zcmNfZmlsZXMpCitMT0NBTF9DRkxBR1MgOj0gJChmc3N0cmVzc19jZmxhZ3MpCitMT0NBTF9NT0RVTEUgOj0gZnNzdHJlc3NfaG9zdAorTE9DQUxfTU9EVUxFX1NURU0gOj0gZnNzdHJlc3MKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgYWRkX2V4dDRfZW5jcnlwdAorIworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK2FkZF9leHQ0X2VuY3J5cHRfc3JjX2ZpbGVzIDo9IFwKKwlhZGRfZXh0NF9lbmNyeXB0LmMKKworYWRkX2V4dDRfZW5jcnlwdF9jX2luY2x1ZGVzIDo9IFwKKwlleHRlcm5hbC9lMmZzcHJvZ3MvbGliCisKK2FkZF9leHQ0X2VuY3J5cHRfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbAorCithZGRfZXh0NF9lbmNyeXB0X3NoYXJlZF9saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJmcyBcCisJbGliZXh0Ml9jb21fZXJyCisKK2FkZF9leHQ0X2VuY3J5cHRfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChhZGRfZXh0NF9lbmNyeXB0X3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGFkZF9leHQ0X2VuY3J5cHQKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoYWRkX2V4dDRfZW5jcnlwdF9jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkc3VmZml4IC1ob3N0LCAkKGFkZF9leHQ0X2VuY3J5cHRfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9NT0RVTEUgOj0gYWRkX2V4dDRfZW5jcnlwdF9ob3N0CitMT0NBTF9NT0RVTEVfU1RFTSA6PSBhZGRfZXh0NF9lbmNyeXB0CitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9FWEVDVVRBQkxFKQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9hZGRfZXh0NF9lbmNyeXB0LmMgYi9lMmZzcHJvZ3MvY29udHJpYi9hZGRfZXh0NF9lbmNyeXB0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlN2M4YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL2FkZF9leHQ0X2VuY3J5cHQuYwpAQCAtMCwwICsxLDY0IEBACisvKgorICogQmFzaWMgcHJvZ2FtIHRvIGFkZCBleHQ0IGVuY3J5cHRpb24gdG8gYSBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAyMDE1LCBHb29nbGUsIEluYy4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfZnMuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0MmZzLmg+CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCWV4dDJfZmlsc3lzCWZzOworCisJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CisJc2V0YnVmKHN0ZGVyciwgTlVMTCk7CisJaW5pdGlhbGl6ZV9leHQyX2Vycm9yX3RhYmxlKCk7CisKKwlpZiAoYXJnYyAhPSAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IFVzYWdlIDxkZXZpY2V8ZmlsZXN5c3RlbT5cbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19vcGVuKGFyZ3ZbMV0sIEVYVDJfRkxBR19SVywgMCwgMCwKKwkJCSAgICAgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciLAorCQkJYXJndlsxXSk7CisJCWV4aXQoMSk7CisJfQorCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2VuY3J5cHQoZnMtPnN1cGVyKSkgeworCQlleHQyZnNfc2V0X2ZlYXR1cmVfZW5jcnlwdChmcy0+c3VwZXIpOworCQlmcy0+c3VwZXItPnNfZW5jcnlwdF9hbGdvc1swXSA9CisJCQlFWFQ0X0VOQ1JZUFRJT05fTU9ERV9BRVNfMjU2X1hUUzsKKwkJZnMtPnN1cGVyLT5zX2VuY3J5cHRfYWxnb3NbMV0gPQorCQkJRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9DVFM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJcHJpbnRmKCJFeHQ0IGVuY3J5cHRpb24gZW5hYmxlZCBvbiAlc1xuIiwgYXJndlsxXSk7CisJfSBlbHNlCisJCXByaW50ZigiRXh0NCBlbmNyeXB0aW9uIGFscmVhZHkgZW5hYmxlZCBvbiAlc1xuIiwgYXJndlsxXSk7CisKKwlyZXR2YWwgPSBleHQyZnNfY2xvc2UoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSB0cnlpbmcgdG8gY2xvc2UgJyVzJyIsCisJCQlhcmd2WzFdKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dXJuICgwKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbnRyaWIvYnVpbGQtcnBtIGIvZTJmc3Byb2dzL2NvbnRyaWIvYnVpbGQtcnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDYwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9idWlsZC1ycG0KQEAgLTAsMCArMSw0NSBAQAorIyEvYmluL3NoCisKKyMgZW5hYmxlIHh0cmFjZSBvdXRwdXQgaWYgcmVxdWVzdGVkCitpZiBbIC1uICR7RU5BQkxFX1hUUkFDRTotJyd9IF07IHRoZW4KKyAgICBzZXQgLXgKK2ZpCisKKyMgQnVpbGQgYW4gZTJmc3Byb2dzIFJQTSBmcm9tIGN2cworCitwd2Q9YHB3ZGAKK2N1cnJkaXI9YGJhc2VuYW1lICRwd2RgCitwa2duYW1lPWBncmVwIE5hbWU6IGUyZnNwcm9ncy5zcGVjIHwgYXdrICd7cHJpbnQgJDI7fSdgCitwa2d2ZXJzPWBncmVwIFZlcnNpb246IGUyZnNwcm9ncy5zcGVjIHwgYXdrICd7cHJpbnQgJDI7fSdgCitidWlsZGRpcj0ke3BrZ25hbWV9LSR7cGtndmVyc30KKworIyBlbnN1cmUgdGhhdCAkVE1QIGlzIHNldCB0byBzb21ldGhpbmcKK1RNUD0ke1RNUDotJy90bXAnfQorCitjZCAuLgordG1wZGlyPWBta3RlbXAgLWQgJHtSUE1fVE1QRElSOi0kVE1QfS9ycG10bXAuWFhYWFhYYAorCisjIFdlIG5lZWQgdG8gYnVpbGQgYSB0YXJiYWxsIGZvciB0aGUgU1JQTSB1c2luZyAkYnVpbGRkaXIgYXMgdGhlIAorIyBkaXJlY3RvcnkgbmFtZSAoc2luY2UgdGhhdCdzIHdoYXQgUlBNIHdpbGwgZXhwZWN0IGl0IHRvIHVucGFjaworIyBpbnRvKS4gIFRoYXQgbWF5IHJlcXVpcmUgYSBzeW1saW5rLgorCisjIE1ha2UgYSByZWN1cnNpdmUtc3ltbGluayBjb3B5IG9mIHRoZSBzb3VyY2UgZGlyCitjcCAtc1IgYHB3ZGAvJGN1cnJkaXIgJHRtcGRpci8kYnVpbGRkaXIgfHwgZXhpdCAxCisKKyMgUmVtb3ZlIGFueSBidWlsZCBmaWxlcyBmcm9tIHRoZSB0ZW1wb3JhcnkgdGFyYmFsbCBkaXJlY3RvcnkKK1sgLWYgJHRtcGRpci8kYnVpbGRkaXIvTWFrZWZpbGUgXSAmJiBtYWtlIC1DICR0bXBkaXIvJGJ1aWxkZGlyIGRpc3RjbGVhbgorCitFWENMVURFPSItLWV4Y2x1ZGUgLmhnKiAtLWV4Y2x1ZGUgLnBjKiIKKyhjZCAkdG1wZGlyICYmIHRhciBjemZoICR7YnVpbGRkaXJ9LnRhci5neiAkRVhDTFVERSAkYnVpbGRkaXIpCisKK1sgImBycG1idWlsZCAtLXZlcnNpb24gMj4gL2Rldi9udWxsYCIgXSAmJiBSUE09cnBtYnVpbGQgfHwgUlBNPXJwbQorCiskUlBNIC0tZGVmaW5lICJfc291cmNlZGlyICR0bXBkaXIiIFwKKyAgICAgLS1kZWZpbmUgIl90b3BkaXIgJHtSUE1fVE9QRElSOi0kKHJwbSAtRSAlX3RvcGRpcil9IiBcCisgICAgIC0tZGVmaW5lICJfdG1wZGlyICR7UlBNX1RNUERJUjotJFRNUH0iIFwKKyAgICAgLS1kZWZpbmUgImV4dHJhX2NvbmZpZ19mbGFncyAke0VYVFJBX0NPTkZJR19GTEFHUzotJyd9IiBcCisgICAgIC1iYSAkY3VycmRpci9lMmZzcHJvZ3Muc3BlYworCitycG1fZXhpdD0kPworcm0gLXJmICR0bXBkaXIKK2V4aXQgJHJwbV9leGl0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9kY29uZiBiL2UyZnNwcm9ncy9jb250cmliL2Rjb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZjRjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9kY29uZgpAQCAtMCwwICsxLDExOCBAQAorIyEvYmluL3NoCisjJElkJAorIyBDcmVhdGUgQWRvYmUtUG9zdFNjcmlwdCBmaWxlIHRoYXQgZ3JhcGhpY2FsbHkgZGlzcGxheXMgdGhlIG91dHB1dCBvZgorIyBkdW1wZTJmcyg4KS4gVXNlICJkdW1wZTJmcyB8IGRjb25mIiB0byBjcmVhdGUgYSBQb3N0U2NyaXB0IGZpbGUgb24gc3Rkb3V0LgorIyBEZXZlbG9wZWQgYW5kIHRlc3RlZCBmb3IgTGludXggMS4wLgorIyBDb3B5cmlnaHQgKGMpIDE5OTQKKyMgVWxyaWNoIFdpbmRsCisjIEFMdGUgUmVnZW5zYnVyZ2VyIFN0cmFzc2UgMTFhCisjIEQtOTMxNDkgTml0dGVuYXUsIEdlcm1hbnkKKyMgPFVscmljaC5XaW5kbEByei51bmktcmVnZW5zYnVyZy5kZT4KK1NFTEY9YGJhc2VuYW1lICQwYAorQVdLRklMRT0vdG1wLyR7U0VMRn0uYXdrCitURU1QRklMRT0vdG1wLyR7U0VMRn0udG1wCitlY2hvICcKK0JFR0lOIHsKKwlwcmludCAiQiIKK30KKy9eSW5vZGUgY291bnQ6LyB7CisJaWM9JDM7IG5leHQKK30KKy9eQmxvY2sgY291bnQ6LyB7CisJYmM9JDM7IG5leHQKK30KKy9eRmlyc3QgYmxvY2s6LyB7CisJZmI9JDM7IG5leHQKK30KKy9eQmxvY2sgc2l6ZTovIHsKKwlicz0kMzsgbmV4dAorfQorL15CbG9ja3MgcGVyIGdyb3VwOi8geworCWJwZz0kNAorCXByaW50ZigiQkMgJWRcbiIsIGJwZykKKwlwcmludGYoIkdDICVkXG4iLCAoYmMgKyBicGcgLSAxKSAvIGJwZykKKwluZXh0Cit9CisvXklub2RlcyBwZXIgZ3JvdXA6LyB7CisJaXBnPSQ0OyBuZXh0Cit9CisvXkxhc3Qgd3JpdGUgdGltZTovIHsKKwlsd3RpbWU9JDA7IGdzdWIoIkxhc3Qgd3JpdGUgdGltZTpbIF0rIiwgIiIsIGx3dGltZSkKKwlwcmludGYoIlQgJXNcbiIsIGx3dGltZSkKKwluZXh0Cit9CisvXkdyb3VwIFswLTldKzovIHsKKwlncm91cD0kMjsgZ3N1YigiOiIsICIiLCBncm91cCkKKwlibG9jaz0iIgorCWdyb3VwX3N0YXJ0PWdyb3VwKmJwZytmYgorCWdyb3VwX2VuZD1ncm91cF9zdGFydCticGcKKwlwcmludGYoIkcgJWQgOiAlZCAtICVkXG4iLCBncm91cCwgZ3JvdXBfc3RhcnQsIGdyb3VwX2VuZCkKKwluZXh0Cit9CisvXlsgXStGcmVlIGJsb2NrczogLyB7CisJZm9yICggaT0zOyBpIDwgTkY7ICsraSApIHsKKwkJYmxvY2s9JGk7IGdzdWIoIiwiLCAiIiwgYmxvY2spCisJCWlmICggaW5kZXgoYmxvY2ssICItIikgPT0gMCApIGJsb2NrPWJsb2NrICItIiBibG9jaworCQlwb3M9aW5kZXgoYmxvY2ssICItIikKKwkJcHJpbnRmKCJGQiAlZC0lZFxuIiwKKwkJICAgICAgIHN1YnN0cihibG9jaywgMCwgcG9zKSAtIGdyb3VwX3N0YXJ0LAorCQkgICAgICAgc3Vic3RyKGJsb2NrLCBwb3MgKyAxKSAtIGdyb3VwX3N0YXJ0KQorCX0KKwlpZiAoIGJsb2NrID09ICIiICkgcHJpbnRmKCJHcm91cCAlZCBpcyBmdWxsXG4iLCBncm91cCkKKwlwcmludCAiLS0tLSIKKwluZXh0Cit9CitFTkQgeworCXByaW50ZigiRSAlc1xuIiwgbHd0aW1lKQorfScgPiRBV0tGSUxFCithd2sgLWYgJEFXS0ZJTEUgJCogPiRURU1QRklMRQorZWNobyAnCitCRUdJTiB7CisgICAgICAgIHByaW50ZigiJSUhUFMtQWRvYmVcbiIpCisgICAgICAgIHByaW50ZigiJSUlJUJvdW5kaW5nQm94OiAwIDAgMSAxXG4iKQorCXByaW50ZigiL3JlY3Qgey95MiBleGNoIGRlZiAveDIgZXhjaCBkZWYgL3kxIGV4Y2ggZGVmIC94MSBleGNoIGRlZlxuIikKKwlwcmludGYoIiAgICAgICBuZXdwYXRoIHgxIHkxIG1vdmV0byB4MiB5MSBsaW5ldG8geDIgeTIgbGluZXRvXG4iKQorCXByaW50ZigiICAgICAgIHgxIHkyIGxpbmV0byBjbG9zZXBhdGh9IGRlZlxuIikKKwlwcmludGYoIi9mYiB7cmVjdCBnc2F2ZSAxLjAgc2V0Z3JheSBmaWxsIGdyZXN0b3JlfSBkZWZcbiIpCisJcHJpbnRmKCIvZGcge3JlY3QgZ3NhdmUgZ3NhdmUgMC4wIHNldGdyYXkgZmlsbCBncmVzdG9yZVxuIikKKwlwcmludGYoIiAgICAgMC41IHNldGdyYXkgc3Ryb2tlIGdyZXN0b3JlfSBkZWZcbiIpCisJcHJpbnRmKCIvdGV4dHh5IHttb3ZldG8gc2hvd30gYmluZCBkZWZcbiIpCisJcHJpbnRmKCIwLjAwMDEgc2V0bGluZXdpZHRoXG4iKQorfQorJDEgPT0gIkdDIiAmJiBORiA9PSAyIHsKKwludW1iZXJfb2ZfZ3JvdXBzPSQyCisJcHJpbnRmKCIvVGltZXMtUm9tYW4gZmluZGZvbnQgJWcgc2NhbGVmb250IHNldGZvbnRcbiIsCisJICAgICAgIDEuMCAvIG51bWJlcl9vZl9ncm91cHMpCisJbmV4dAorfQorJDEgPT0gIkJDIiAmJiBORiA9PSAyIHsKKwlibG9ja3NfcGVyX2dyb3VwPSQyOyBuZXh0Cit9CiskMSA9PSAiVCIgJiYgTkYgPiAxIHsKKwlwcmludGYoIiglcykgJWcgJWcgdGV4dHh5XG4iLAorCSAgICAgICBzdWJzdHIoJDAsIDIpLCAwLCAxLjAyKQorCW5leHQKK30KKyQxID09ICJHIiAmJiBORiA9PSA2ICYmICQzID09ICI6IiAmJiAkNSA9PSAiLSIgeworCWdyb3VwX2luZGV4PSQyCisJZ3M9JDQKKwlnZT0kNgorCWhlaWdodD0xLjAgLyBudW1iZXJfb2ZfZ3JvdXBzCisJdnN0YXJ0PWdyb3VwX2luZGV4ICogaGVpZ2h0CisJcHJpbnRmKCIlJSBncm91cCAlZCBvZiAlZDpcbjAgJWcgMSAlZyBkZ1xuIiwKKwkgICAgICAgZ3JvdXBfaW5kZXgsIG51bWJlcl9vZl9ncm91cHMsIHZzdGFydCwgdnN0YXJ0ICsgaGVpZ2h0KQorCXByaW50ZigiKEdyb3VwICVzKSAxLjAyICVnIHRleHR4eVxuIiwgZ3JvdXBfaW5kZXgsIHZzdGFydCkKKwluZXh0Cit9CiskMSA9PSAiRkIiICYmIE5GID09IDIgeworCXBvcyA9IGluZGV4KCQyLCAiLSIpCisJcHJpbnRmKCIlJSBob2xlICVzXG4lZyAlZyAlZyAlZyBmYlxuIiwKKwkgICAgICAgJDIsIHN1YnN0cigkMiwgMCwgcG9zKSAvIGJsb2Nrc19wZXJfZ3JvdXAsIHZzdGFydCwKKwkgICAgICAgKHN1YnN0cigkMiwgcG9zICsgMSkgKyAxKSAvIGJsb2Nrc19wZXJfZ3JvdXAsIHZzdGFydCArIGhlaWdodCkKKwluZXh0Cit9CitFTkQgeworICAgIAlwcmludGYoIiUlJSVFT0ZcbiIpCit9CisnID4kQVdLRklMRQorYXdrIC1mICRBV0tGSUxFICRURU1QRklMRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbnRyaWIvZGlyMmZzIGIvZTJmc3Byb2dzL2NvbnRyaWIvZGlyMmZzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFiY2VjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9kaXIyZnMKQEAgLTAsMCArMSw2NiBAQAorIyEvYmluL3NoCisKK2Rpcj0iJDEiCitkZXY9IiQyIgorCitpZiBbICIkMSIgPSAiLS1oZWxwIiBdIHx8IFsgISAtZCAiJHtkaXJ9IiBdOyB0aGVuCisJZWNobyAiVXNhZ2U6ICQwIGRpciBbbWtlMmZzIGFyZ3NdIGRldiIKKwlleGl0IDEKK2ZpCisKK3NoaWZ0CisKKyMgR29hbDogUHV0IGFsbCB0aGUgZmlsZXMgYXQgdGhlIGJlZ2lubmluZyAod2hpY2ggbWtlMmZzIGRvZXMpIGFuZCBtaW5pbWl6ZQorIyB0aGUgbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGdpdmVuIHRoZSBtaW5pbXVtIG51bWJlciBvZiBibG9ja3MgcmVxdWlyZWQuCisjIEhlbmNlIGFsbCB0aGlzIG1hdGggdG8gZ2V0IHRoZSBpbm9kZSByYXRpbyBqdXN0IHJpZ2h0LgorCitieXRlcz0iJChkdSAta3MgIiR7ZGlyfSIgfCBhd2sgJ3twcmludCAkMX0nKSIKK2J5dGVzPSIkKChieXRlcyAqIDEwMjQpKSIKK2lub2Rlcz0iJChmaW5kICIke2Rpcn0iIC1wcmludDAgfCB4YXJncyAtMCBzdGF0IC1jICclaScgfCBzb3J0IC1nIHwgdW5pcSB8IHdjIC1sKSIKK2Jsb2NrX3N6PTQwOTYKK2lub2RlX3N6PTI1Ngorc2Jfb3ZlcmhlYWQ9NDA5NgorYmxvY2tzX3Blcl9ncm91cD0iJCgoYmxvY2tfc3ogKiA4KSkiCitieXRlc19wZXJfZ3JvdXA9IiQoKGJsb2Nrc19wZXJfZ3JvdXAgKiBibG9ja19zeikpIgoraW5vZGVfYnl0ZXM9IiQoKGlub2RlcyAqIGlub2RlX3N6KSkiCisKKyMgRXN0aW1hdGUgb3ZlcmhlYWQgd2l0aCB0aGUgbWluaW11bSBudW1iZXIgb2YgZ3JvdXBzLi4uCitucl9ncm91cHM9IiQoKCAoYnl0ZXMgKyBpbm9kZV9ieXRlcyArIGJ5dGVzX3Blcl9ncm91cCAtIDEpIC8gYnl0ZXNfcGVyX2dyb3VwKSkiCitpbm9kZV9ieXRlc19wZXJfZ3JvdXA9IiQoKGlub2RlX2J5dGVzIC8gbnJfZ3JvdXBzKSkiCitpbm9kZV9ibG9ja3NfcGVyX2dyb3VwPSIkKCggKGlub2RlX2J5dGVzX3Blcl9ncm91cCArIChibG9ja19zeiAtIDEpKSAvIGJsb2NrX3N6ICkpIgorcGVyX2dycF9vdmVyaGVhZD0iJCgoICgoMyArIGlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApICogYmxvY2tfc3opICsgNjQgKSkiCitvdmVyaGVhZD0iJCgoIHNiX292ZXJoZWFkICsgKHBlcl9ncnBfb3ZlcmhlYWQgKiBucl9ncm91cHMpICkpIgordXNlZF9ieXRlcz0iJCgoYnl0ZXMgKyBvdmVyaGVhZCkpIgorCisjIFRoZW4gZG8gaXQgYWdhaW4gd2l0aCB0aGUgcmVhbCBudW1iZXIgb2YgZ3JvdXBzLgorbnJfZ3JvdXBzPSIkKCggKHVzZWRfYnl0ZXMgKyAoYnl0ZXNfcGVyX2dyb3VwIC0gMSkpIC8gYnl0ZXNfcGVyX2dyb3VwKSkiCit0b3RfYmxvY2tzPSIkKChucl9ncm91cHMgKiBibG9ja3NfcGVyX2dyb3VwKSkiCit0b3RfYnl0ZXM9IiQoKHRvdF9ibG9ja3MgKiBibG9ja19zeikpIgorCityYXRpbz0iJCgoYnl0ZXMgLyBpbm9kZXMpKSIKK21rZnNfYmxvY2tzPSIkKCh0b3RfYmxvY2tzICogNCAvIDMpKSIKKworbWtlMmZzIC1pICIke3JhdGlvfSIgLVQgZXh0NCAtZCAiJHtkaXJ9IiAtTyBecmVzaXplX2lub2RlLHNwYXJzZV9zdXBlcjIsbWV0YWRhdGFfY3N1bSw2NGJpdCxeaGFzX2pvdXJuYWwgLUUgcGFja2VkX21ldGFfYmxvY2tzPTEsbnVtX2JhY2t1cF9zYj0wIC1iICIke2Jsb2NrX3N6fSIgLUkgIiR7aW5vZGVzen0iIC1GICIke2Rldn0iICIke21rZnNfYmxvY2tzfSIgfHwgZXhpdAorCitlMmZzY2sgLWZ5RCAiJHtkZXZ9IgorCitibG9ja3M9IiQoZHVtcGUyZnMgLWggIiR7ZGV2fSIgMj4mMSB8IGdyZXAgJ0Jsb2NrIGNvdW50OicgfCBhd2sgJ3twcmludCAkM30nKSIKK3doaWxlIHJlc2l6ZTJmcyAtZiAtTSAiJHtkZXZ9IjsgZG8KKwluZXdfYmxvY2tzPSIkKGR1bXBlMmZzIC1oICIke2Rldn0iIDI+JjEgfCBncmVwICdCbG9jayBjb3VudDonIHwgYXdrICd7cHJpbnQgJDN9JykiCisJaWYgWyAiJHtuZXdfYmxvY2tzfSIgLWVxICIke2Jsb2Nrc30iIF07IHRoZW4KKwkJYnJlYWs7CisJZmkKKwlibG9ja3M9IiR7bmV3X2Jsb2Nrc30iCitkb25lCisKK2lmIFsgISAtYiAiJHtkZXZ9IiBdOyB0aGVuCisgICAgdHJ1bmNhdGUgLXMgIiQoKGJsb2NrcyAqIGJsb2NrX3N6KSkiICIke2Rldn0iIHx8IChlMmltYWdlIC1hciAiJHtkZXZ9IiAiJHtkZXZ9Lm1pbiI7IG12ICIke2Rldn0ubWluIiAiJHtkZXZ9IikKK2ZpCisKK2UyZnNjayAtZnkgIiR7ZGV2fSIKKworZGlyX2Jsb2Nrcz0iJCgoYnl0ZXMgLyBibG9ja19zeikpIgorb3ZlcmhlYWQ9IiQoKGJsb2NrcyAtIGRpcl9ibG9ja3MpKSIKK2VjaG8gIk1pbmltaXplZCBpbWFnZSBvdmVyaGVhZDogJCgoMTAwICogb3ZlcmhlYWQgLyBkaXJfYmxvY2tzKSklIgorCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9jb250cmliL2UyY3JvbmNoZWNrIGIvZTJmc3Byb2dzL2NvbnRyaWIvZTJjcm9uY2hlY2sKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGUwYjQxZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL2UyY3JvbmNoZWNrCkBAIC0wLDAgKzEsNDcgQEAKKyMhL2Jpbi9zaAorIworIyBlMmNyb25jaGVjayAtLSBydW4gZTJmc2NrIGF1dG9tYXRpY2FsbHkgb3V0IG9mIC9ldGMvY3Jvbi53ZWVrbHkKKyMKKyMgVGhpcyBzY3JpcHQgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciAKKyMgcGVyaW9kaWNhbGx5IGZyb20gdGhlIGNvbW1hbmQgbGluZSwgb3IgdG8gYmUgcnVuIG9uY2UgYSB3ZWVrCisjIG9yIHNvIGJ5IHRoZSBjcm9uIGRhZW1vbiB0byBjaGVjayBhIG1vdW50ZWQgZmlsZXN5c3RlbSAobm9ybWFsbHkKKyMgdGhlIHJvb3QgZmlsZXN5c3RlbSwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgdG8gY2hlY2sgb3RoZXIgZmlsZXN5c3RlbXMKKyMgdGhhdCBhcmUgYWx3YXlzIG1vdW50ZWQgd2hlbiB0aGUgc3lzdGVtIGlzIGJvb3RlZCkuCisjCisjIE1ha2Ugc3VyZSB5b3UgY3VzdG9taXplICJWRyIgc28gaXQgaXMgeW91ciBMVk0gdm9sdW1lIGdyb3VwIG5hbWUsIAorIyAiVk9MVU1FIiBzbyBpdCBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZXN5c3RlbSdzIGxvZ2ljYWwgdm9sdW1lLCAKKyMgYW5kICJFTUFJTCIgdG8gYmUgeW91ciBlLW1haWwgYWRkcmVzcworIworIyBXcml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28sIENvcHlyaWdodCAyMDA3LCAyMDA4LCAyMDA5LgorIworIyBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAKKyMgR05VIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisjCisKK1ZHPXNzZAorVk9MVU1FPXJvb3QKK1NOQVBTSVpFPTEwMG0KK0VNQUlMPXN5c2FkbWluQGV4YW1wbGUuY29tCisKK1RNUEZJTEU9YG1rdGVtcCAke1RNUERJUjotL3RtcH0vZTJmc2NrLmxvZy5YWFhYWFhYWFhYYAorCitPUFRTPSItRnR0diAtQzAiCisjT1BUUz0iLUZ0dHYgLUUgZnJhZ2NoZWNrIgorCitzZXQgLWUKK1NUQVJUPSIkKGRhdGUgKyclWSVtJWQlSCVNJVMnKSIKK2x2Y3JlYXRlIC1zIC1MICR7U05BUFNJWkV9IC1uICIke1ZPTFVNRX0tc25hcCIgIiR7Vkd9LyR7Vk9MVU1FfSIKK2lmIG5pY2UgbG9nc2F2ZSAtYXMgJFRNUEZJTEUgZTJmc2NrIC1wICRPUFRTICIvZGV2LyR7Vkd9LyR7Vk9MVU1FfS1zbmFwIiAmJiBcCisgICBuaWNlIGxvZ3NhdmUgLWFzICRUTVBGSUxFIGUyZnNjayAtZnkgJE9QVFMgIi9kZXYvJHtWR30vJHtWT0xVTUV9LXNuYXAiIDsgdGhlbgorICBlY2hvICdCYWNrZ3JvdW5kIHNjcnViYmluZyBzdWNjZWVkZWQhJworICB0dW5lMmZzIC1DIDAgLVQgIiR7U1RBUlR9IiAiL2Rldi8ke1ZHfS8ke1ZPTFVNRX0iCitlbHNlCisgIGVjaG8gJ0JhY2tncm91bmQgc2NydWJiaW5nIGZhaWxlZCEgUmVib290IHRvIGZzY2sgc29vbiEnCisgIHR1bmUyZnMgLUMgMTYwMDAgLVQgIjE5MDAwMTAxIiAiL2Rldi8ke1ZHfS8ke1ZPTFVNRX0iCisgIGlmIHRlc3QgLW4gIiRSUFQtRU1BSUwiOyB0aGVuIAorICAgIG1haWwgLXMgIkUyZnNjayBvZiAvZGV2LyR7Vkd9LyR7Vk9MVU1FfSBmYWlsZWQhIiAkRU1BSUwgPCAkVE1QRklMRQorICBmaQorZmkKK2x2cmVtb3ZlIC1mICIke1ZHfS8ke1ZPTFVNRX0tc25hcCIKK3JtICRUTVBGSUxFCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9jb250cmliL2ZhbGxvY2F0ZS5jIGIvZTJmc3Byb2dzL2NvbnRyaWIvZmFsbG9jYXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA1YjhmMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL2ZhbGxvY2F0ZS5jCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICogZmFsbG9jYXRlIC0gdXRpbGl0eSB0byB1c2UgdGhlIGZhbGxvY2F0ZSBzeXN0ZW0gY2FsbAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBXcml0dGVuIGJ5IEVyaWMgU2FuZGVlbiA8c2FuZGVlbkByZWRoYXQuY29tPgorICoKKyAqIGN2dG51bSByb3V0aW5lIHRha2VuIGZyb20geGZzcHJvZ3MsCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorI2lmbmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorCisvLyAjaW5jbHVkZSA8bGludXgvZmFsbG9jLmg+CisjZGVmaW5lIEZBTExPQ19GTF9LRUVQX1NJWkUJMHgwMQorI2RlZmluZSBGQUxMT0NfRkxfUFVOQ0hfSE9MRQkweDAyIC8qIGRlLWFsbG9jYXRlcyByYW5nZSAqLworI2RlZmluZSBGQUxMT0NfRkxfQ09MTEFQU0VfUkFOR0UJMHgwOAorI2RlZmluZSBGQUxMT0NfRkxfWkVST19SQU5HRQkJMHgxMAorCit2b2lkIHVzYWdlKHZvaWQpCit7CisJcHJpbnRmKCJVc2FnZTogZmFsbG9jYXRlIFstbnB0XSBbLW8gb2Zmc2V0XSAtbCBsZW5ndGggZmlsZW5hbWVcbiIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKworI2RlZmluZSBFWEFCWVRFUyh4KSAgICAgKChsb25nIGxvbmcpKHgpIDw8IDYwKQorI2RlZmluZSBQRVRBQllURVMoeCkgICAgKChsb25nIGxvbmcpKHgpIDw8IDUwKQorI2RlZmluZSBURVJBQllURVMoeCkgICAgKChsb25nIGxvbmcpKHgpIDw8IDQwKQorI2RlZmluZSBHSUdBQllURVMoeCkgICAgKChsb25nIGxvbmcpKHgpIDw8IDMwKQorI2RlZmluZSBNRUdBQllURVMoeCkgICAgKChsb25nIGxvbmcpKHgpIDw8IDIwKQorI2RlZmluZSBLSUxPQllURVMoeCkgICAgKChsb25nIGxvbmcpKHgpIDw8IDEwKQorCitsb25nIGxvbmcKK2N2dG51bShjaGFyICpzKQoreworCWxvbmcgbG9uZwlpOworCWNoYXIJCSpzcDsKKwlpbnQJCWM7CisKKwlpID0gc3RydG9sbChzLCAmc3AsIDApOworCWlmIChpID09IDAgJiYgc3AgPT0gcykKKwkJcmV0dXJuIC0xTEw7CisJaWYgKCpzcCA9PSAnXDAnKQorCQlyZXR1cm4gaTsKKwlpZiAoc3BbMV0gIT0gJ1wwJykKKwkJcmV0dXJuIC0xTEw7CisKKwljID0gdG9sb3dlcigqc3ApOworCXN3aXRjaCAoYykgeworCWNhc2UgJ2snOgorCQlyZXR1cm4gS0lMT0JZVEVTKGkpOworCWNhc2UgJ20nOgorCQlyZXR1cm4gTUVHQUJZVEVTKGkpOworCWNhc2UgJ2cnOgorCQlyZXR1cm4gR0lHQUJZVEVTKGkpOworCWNhc2UgJ3QnOgorCQlyZXR1cm4gVEVSQUJZVEVTKGkpOworCWNhc2UgJ3AnOgorCQlyZXR1cm4gUEVUQUJZVEVTKGkpOworCWNhc2UgJ2UnOgorCQlyZXR1cm4gIEVYQUJZVEVTKGkpOworCX0KKworCXJldHVybiAtMUxMOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CWZkOworCWNoYXIJKmZuYW1lOworCWludAlvcHQ7CisJbG9mZl90CWxlbmd0aCA9IC0yTEw7CisJbG9mZl90CW9mZnNldCA9IDA7CisJaW50CWZhbGxvY19tb2RlID0gMDsKKwlpbnQJZXJyb3I7CisJaW50CXRmbGFnID0gMDsKKworCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJucGw6bzp0emMiKSkgIT0gLTEpIHsKKwkJc3dpdGNoKG9wdCkgeworCQljYXNlICduJzoKKwkJCS8qIGRvIG5vdCBjaGFuZ2UgZmlsZXNpemUgKi8KKwkJCWZhbGxvY19tb2RlID0gRkFMTE9DX0ZMX0tFRVBfU0laRTsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCS8qIHB1bmNoIG1vZGUgKi8KKwkJCWZhbGxvY19tb2RlID0gKEZBTExPQ19GTF9QVU5DSF9IT0xFIHwKKwkJCQkgICAgICAgRkFMTE9DX0ZMX0tFRVBfU0laRSk7CisJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQkvKiBjb2xsYXBzZSByYW5nZSBtb2RlICovCisJCQlmYWxsb2NfbW9kZSA9IChGQUxMT0NfRkxfQ09MTEFQU0VfUkFOR0UgfAorCQkJCSAgICAgICBGQUxMT0NfRkxfS0VFUF9TSVpFKTsKKwkJCWJyZWFrOworCQljYXNlICd6JzoKKwkJCS8qIHplcm8gcmFuZ2UgbW9kZSAqLworCQkJZmFsbG9jX21vZGUgPSAoRkFMTE9DX0ZMX1pFUk9fUkFOR0UgfAorCQkJCSAgICAgICBGQUxMT0NfRkxfS0VFUF9TSVpFKTsKKwkJCWJyZWFrOworCQljYXNlICdsJzoKKwkJCWxlbmd0aCA9IGN2dG51bShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ28nOgorCQkJb2Zmc2V0ID0gY3Z0bnVtKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQl0ZmxhZysrOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZSgpOworCQl9CisJfQorCisJaWYgKGxlbmd0aCA9PSAtMkxMKSB7CisJCXByaW50ZigiRXJyb3I6IG5vIGxlbmd0aCBhcmd1bWVudCBzcGVjaWZpZWRcbiIpOworCQl1c2FnZSgpOworCX0KKworCWlmIChsZW5ndGggPD0gMCkgeworCQlwcmludGYoIkVycm9yOiBpbnZhbGlkIGxlbmd0aCB2YWx1ZSBzcGVjaWZpZWRcbiIpOworCQl1c2FnZSgpOworCX0KKworCWlmIChvZmZzZXQgPCAwKSB7CisJCXByaW50ZigiRXJyb3I6IGludmFsaWQgb2Zmc2V0IHZhbHVlIHNwZWNpZmllZFxuIik7CisJCXVzYWdlKCk7CisJfQorCisJaWYgKHRmbGFnICYmIChmYWxsb2NfbW9kZSAmIEZBTExPQ19GTF9LRUVQX1NJWkUpKSB7CisJCXByaW50ZigiLW4gYW5kIC10IG9wdGlvbnMgaW5jb21wYXRpYmxlXG4iKTsKKwkJdXNhZ2UoKTsKKwl9CisKKwlpZiAodGZsYWcgJiYgb2Zmc2V0KSB7CisJCXByaW50ZigiLW4gYW5kIC1vIG9wdGlvbnMgaW5jb21wYXRpYmxlXG4iKTsKKwkJdXNhZ2UoKTsKKwl9CisKKwlpZiAob3B0aW5kID09IGFyZ2MpIHsKKwkJcHJpbnRmKCJFcnJvcjogbm8gZmlsZW5hbWUgc3BlY2lmaWVkXG4iKTsKKwkJdXNhZ2UoKTsKKwl9CisKKwlmbmFtZSA9IGFyZ3Zbb3B0aW5kKytdOworCisJLyogU2hvdWxkIHdlIGNyZWF0ZSB0aGUgZmlsZSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3Q/ICovCisJZmQgPSBvcGVuKGZuYW1lLCBPX1dST05MWXxPX0xBUkdFRklMRSk7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoIkVycm9yIG9wZW5pbmcgZmlsZSIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCisJaWYgKHRmbGFnKQorCQllcnJvciA9IGZ0cnVuY2F0ZShmZCwgbGVuZ3RoKTsKKwllbHNlCisJCWVycm9yID0gc3lzY2FsbChTWVNfZmFsbG9jYXRlLCBmZCwgZmFsbG9jX21vZGUsIG9mZnNldCwgbGVuZ3RoKTsKKworCWlmIChlcnJvciA8IDApIHsKKwkJcGVycm9yKCJmYWxsb2NhdGUgZmFpbGVkIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisKKwljbG9zZShmZCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9mc3N0cmVzcy5jIGIvZTJmc3Byb2dzL2NvbnRyaWIvZnNzdHJlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTk4MzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2NvbnRyaWIvZnNzdHJlc3MuYwpAQCAtMCwwICsxLDI3MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDAgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdvdWxkIGJlIHVzZWZ1bCwgYnV0CisgKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgKgorICogRnVydGhlciwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0IGFueSB3YXJyYW50eSB0aGF0IGl0IGlzCisgKiBmcmVlIG9mIHRoZSByaWdodGZ1bCBjbGFpbSBvZiBhbnkgdGhpcmQgcGVyc29uIHJlZ2FyZGluZyBpbmZyaW5nZW1lbnQKKyAqIG9yIHRoZSBsaWtlLiAgQW55IGxpY2Vuc2UgcHJvdmlkZWQgaGVyZWluLCB3aGV0aGVyIGltcGxpZWQgb3IKKyAqIG90aGVyd2lzZSwgYXBwbGllcyBvbmx5IHRvIHRoaXMgc29mdHdhcmUgZmlsZS4gIFBhdGVudCBsaWNlbnNlcywgaWYKKyAqIGFueSwgcHJvdmlkZWQgaGVyZWluIGRvIG5vdCBhcHBseSB0byBjb21iaW5hdGlvbnMgb2YgdGhpcyBwcm9ncmFtIHdpdGgKKyAqIG90aGVyIHNvZnR3YXJlLCBvciBhbnkgb3RoZXIgcHJvZHVjdCB3aGF0c29ldmVyLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyAqCisgKiBDb250YWN0IGluZm9ybWF0aW9uOiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuLCAxNjAwIEFtcGhpdGhlYXRyZSBQa3d5LAorICogTW91bnRhaW4gVmlldywgQ0EgIDk0MDQzLCBvcjoKKyAqCisgKiBodHRwOi8vd3d3LnNnaS5jb20KKyAqCisgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhpcyBub3RpY2UsIHNlZToKKyAqCisgKiBodHRwOi8vb3NzLnNnaS5jb20vcHJvamVjdHMvR2VuSW5mby9TR0lHUExOb3RpY2VFeHBsYW4vCisgKi8KKworI2RlZmluZSBOT19YRlMKKyNkZWZpbmUgSEFWRV9TWVNfUFJDVExfSAorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisKKyNkZWZpbmUgTUFYTkFNRUxFTiAxMDI0CitzdHJ1Y3QgZGlvYXR0ciB7CisJaW50IGRfbWluaW9zeiwgZF9tYXhpb3N6LCBkX21lbTsKK307CisKKyNkZWZpbmUgTUlOKGEsYikgKChhKTwoYikgPyAoYSk6KGIpKQorI2RlZmluZSBNQVgoYSxiKSAoKGEpPihiKSA/IChhKTooYikpCisKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWZuZGVmIE9fRElSRUNUCisjZGVmaW5lIE9fRElSRUNUIDA0MDAwMAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19QUkNUTF9ICisjIGluY2x1ZGUgPHN5cy9wcmN0bC5oPgorI2VuZGlmCisKKyNkZWZpbmUgWEZTX0VSUlRBR19NQVgJCTE3CisKK3R5cGVkZWYgZW51bSB7CisjaWZuZGVmIE5PX1hGUworCU9QX0FMTE9DU1AsCisJT1BfQVRUUl9SRU1PVkUsCisJT1BfQVRUUl9TRVQsCisJT1BfQlVMS1NUQVQsCisJT1BfQlVMS1NUQVQxLAorI2VuZGlmCisJT1BfQ0hPV04sCisJT1BfQ1JFQVQsCisJT1BfRFJFQUQsCisJT1BfRFdSSVRFLAorCU9QX0ZEQVRBU1lOQywKKyNpZm5kZWYgTk9fWEZTCisJT1BfRlJFRVNQLAorI2VuZGlmCisJT1BfRlNZTkMsCisJT1BfR0VUREVOVFMsCisJT1BfTElOSywKKwlPUF9NS0RJUiwKKwlPUF9NS05PRCwKKwlPUF9SRUFELAorCU9QX1JFQURMSU5LLAorCU9QX1JFTkFNRSwKKyNpZm5kZWYgTk9fWEZTCisJT1BfUkVTVlNQLAorI2VuZGlmCisJT1BfUk1ESVIsCisJT1BfU1RBVCwKKwlPUF9TWU1MSU5LLAorCU9QX1NZTkMsCisJT1BfVFJVTkNBVEUsCisJT1BfVU5MSU5LLAorI2lmbmRlZiBOT19YRlMKKwlPUF9VTlJFU1ZTUCwKKyNlbmRpZgorCU9QX1dSSVRFLAorCU9QX0xBU1QKK30gb3B0eV90OworCit0eXBlZGVmIHZvaWQgKCpvcGZuY190KSAoaW50LCBsb25nKTsKKwordHlwZWRlZiBzdHJ1Y3Qgb3BkZXNjIHsKKwlvcHR5X3Qgb3A7CisJY2hhciAqbmFtZTsKKwlvcGZuY190IGZ1bmM7CisJaW50IGZyZXE7CisJaW50IGlzd3JpdGU7CisJaW50IGlzeGZzOworfSBvcGRlc2NfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZmVudCB7CisJaW50IGlkOworCWludCBwYXJlbnQ7Cit9IGZlbnRfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZmxpc3QgeworCWludCBuZmlsZXM7CisJaW50IG5zbG90czsKKwlpbnQgdGFnOworCWZlbnRfdCAqZmVudHM7Cit9IGZsaXN0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHBhdGhuYW1lIHsKKwlpbnQgbGVuOworCWNoYXIgKnBhdGg7Cit9IHBhdGhuYW1lX3Q7CisKKyNkZWZpbmUJRlRfRElSCTAKKyNkZWZpbmUJRlRfRElSbQkoMSA8PCBGVF9ESVIpCisjZGVmaW5lCUZUX1JFRwkxCisjZGVmaW5lCUZUX1JFR20JKDEgPDwgRlRfUkVHKQorI2RlZmluZQlGVF9TWU0JMgorI2RlZmluZQlGVF9TWU1tCSgxIDw8IEZUX1NZTSkKKyNkZWZpbmUJRlRfREVWCTMKKyNkZWZpbmUJRlRfREVWbQkoMSA8PCBGVF9ERVYpCisjZGVmaW5lCUZUX1JURgk0CisjZGVmaW5lCUZUX1JURm0JKDEgPDwgRlRfUlRGKQorI2RlZmluZQlGVF9uZnQJNQorI2RlZmluZQlGVF9BTlltCSgoMSA8PCBGVF9uZnQpIC0gMSkKKyNkZWZpbmUJRlRfUkVHRklMRQkoRlRfUkVHbSB8IEZUX1JURm0pCisjZGVmaW5lCUZUX05PVERJUgkoRlRfQU5ZbSAmIH5GVF9ESVJtKQorCisjZGVmaW5lCUZMSVNUX1NMT1RfSU5DUgkxNgorI2RlZmluZQlORENBQ0hFCTY0CisKKyNkZWZpbmUJTUFYRlNJWkUJKCgxVUxMIDw8IDYzKSAtIDFVTEwpCisjZGVmaW5lCU1BWEZTSVpFMzIJKCgxVUxMIDw8IDQwKSAtIDFVTEwpCisKK3ZvaWQgYWxsb2NzcF9mKGludCwgbG9uZyk7Cit2b2lkIGF0dHJfcmVtb3ZlX2YoaW50LCBsb25nKTsKK3ZvaWQgYXR0cl9zZXRfZihpbnQsIGxvbmcpOwordm9pZCBidWxrc3RhdF9mKGludCwgbG9uZyk7Cit2b2lkIGJ1bGtzdGF0MV9mKGludCwgbG9uZyk7Cit2b2lkIGNob3duX2YoaW50LCBsb25nKTsKK3ZvaWQgY3JlYXRfZihpbnQsIGxvbmcpOwordm9pZCBkcmVhZF9mKGludCwgbG9uZyk7Cit2b2lkIGR3cml0ZV9mKGludCwgbG9uZyk7Cit2b2lkIGZkYXRhc3luY19mKGludCwgbG9uZyk7Cit2b2lkIGZyZWVzcF9mKGludCwgbG9uZyk7Cit2b2lkIGZzeW5jX2YoaW50LCBsb25nKTsKK3ZvaWQgZ2V0ZGVudHNfZihpbnQsIGxvbmcpOwordm9pZCBsaW5rX2YoaW50LCBsb25nKTsKK3ZvaWQgbWtkaXJfZihpbnQsIGxvbmcpOwordm9pZCBta25vZF9mKGludCwgbG9uZyk7Cit2b2lkIHJlYWRfZihpbnQsIGxvbmcpOwordm9pZCByZWFkbGlua19mKGludCwgbG9uZyk7Cit2b2lkIHJlbmFtZV9mKGludCwgbG9uZyk7Cit2b2lkIHJlc3ZzcF9mKGludCwgbG9uZyk7Cit2b2lkIHJtZGlyX2YoaW50LCBsb25nKTsKK3ZvaWQgc3RhdF9mKGludCwgbG9uZyk7Cit2b2lkIHN5bWxpbmtfZihpbnQsIGxvbmcpOwordm9pZCBzeW5jX2YoaW50LCBsb25nKTsKK3ZvaWQgdHJ1bmNhdGVfZihpbnQsIGxvbmcpOwordm9pZCB1bmxpbmtfZihpbnQsIGxvbmcpOwordm9pZCB1bnJlc3ZzcF9mKGludCwgbG9uZyk7Cit2b2lkIHdyaXRlX2YoaW50LCBsb25nKTsKKworb3BkZXNjX3Qgb3BzW10gPSB7CisjaWZuZGVmIE5PX1hGUworCXtPUF9BTExPQ1NQLCAiYWxsb2NzcCIsIGFsbG9jc3BfZiwgMSwgMSwgMX0sCisJe09QX0FUVFJfUkVNT1ZFLCAiYXR0cl9yZW1vdmUiLCBhdHRyX3JlbW92ZV9mLCAvKiAxICovIDAsIDEsIDF9LAorCXtPUF9BVFRSX1NFVCwgImF0dHJfc2V0IiwgYXR0cl9zZXRfZiwgLyogMiAqLyAwLCAxLCAxfSwKKwl7T1BfQlVMS1NUQVQsICJidWxrc3RhdCIsIGJ1bGtzdGF0X2YsIDEsIDAsIDF9LAorCXtPUF9CVUxLU1RBVDEsICJidWxrc3RhdDEiLCBidWxrc3RhdDFfZiwgMSwgMCwgMX0sCisjZW5kaWYKKwl7T1BfQ0hPV04sICJjaG93biIsIGNob3duX2YsIDMsIDEsIDB9LAorCXtPUF9DUkVBVCwgImNyZWF0IiwgY3JlYXRfZiwgNCwgMSwgMH0sCisJe09QX0RSRUFELCAiZHJlYWQiLCBkcmVhZF9mLCA0LCAwLCAwfSwKKwl7T1BfRFdSSVRFLCAiZHdyaXRlIiwgZHdyaXRlX2YsIDQsIDEsIDB9LAorCXtPUF9GREFUQVNZTkMsICJmZGF0YXN5bmMiLCBmZGF0YXN5bmNfZiwgMSwgMSwgMH0sCisjaWZuZGVmIE5PX1hGUworCXtPUF9GUkVFU1AsICJmcmVlc3AiLCBmcmVlc3BfZiwgMSwgMSwgMX0sCisjZW5kaWYKKwl7T1BfRlNZTkMsICJmc3luYyIsIGZzeW5jX2YsIDEsIDEsIDB9LAorCXtPUF9HRVRERU5UUywgImdldGRlbnRzIiwgZ2V0ZGVudHNfZiwgMSwgMCwgMH0sCisJe09QX0xJTkssICJsaW5rIiwgbGlua19mLCAxLCAxLCAwfSwKKwl7T1BfTUtESVIsICJta2RpciIsIG1rZGlyX2YsIDIsIDEsIDB9LAorCXtPUF9NS05PRCwgIm1rbm9kIiwgbWtub2RfZiwgMiwgMSwgMH0sCisJe09QX1JFQUQsICJyZWFkIiwgcmVhZF9mLCAxLCAwLCAwfSwKKwl7T1BfUkVBRExJTkssICJyZWFkbGluayIsIHJlYWRsaW5rX2YsIDEsIDAsIDB9LAorCXtPUF9SRU5BTUUsICJyZW5hbWUiLCByZW5hbWVfZiwgMiwgMSwgMH0sCisjaWZuZGVmIE5PX1hGUworCXtPUF9SRVNWU1AsICJyZXN2c3AiLCByZXN2c3BfZiwgMSwgMSwgMX0sCisjZW5kaWYKKwl7T1BfUk1ESVIsICJybWRpciIsIHJtZGlyX2YsIDEsIDEsIDB9LAorCXtPUF9TVEFULCAic3RhdCIsIHN0YXRfZiwgMSwgMCwgMH0sCisJe09QX1NZTUxJTkssICJzeW1saW5rIiwgc3ltbGlua19mLCAyLCAxLCAwfSwKKwl7T1BfU1lOQywgInN5bmMiLCBzeW5jX2YsIDEsIDAsIDB9LAorCXtPUF9UUlVOQ0FURSwgInRydW5jYXRlIiwgdHJ1bmNhdGVfZiwgMiwgMSwgMH0sCisJe09QX1VOTElOSywgInVubGluayIsIHVubGlua19mLCAxLCAxLCAwfSwKKyNpZm5kZWYgTk9fWEZTCisJe09QX1VOUkVTVlNQLCAidW5yZXN2c3AiLCB1bnJlc3ZzcF9mLCAxLCAxLCAxfSwKKyNlbmRpZgorCXtPUF9XUklURSwgIndyaXRlIiwgd3JpdGVfZiwgNCwgMSwgMH0sCit9LCAqb3BzX2VuZDsKKworZmxpc3RfdCBmbGlzdFtGVF9uZnRdID0geworCXswLCAwLCAnZCcsIE5VTEx9LAorCXswLCAwLCAnZicsIE5VTEx9LAorCXswLCAwLCAnbCcsIE5VTEx9LAorCXswLCAwLCAnYycsIE5VTEx9LAorCXswLCAwLCAncicsIE5VTEx9LAorfTsKKworaW50IGRjYWNoZVtORENBQ0hFXTsKK2ludCBlcnJyYW5nZTsKK2ludCBlcnJ0YWc7CitvcHR5X3QgKmZyZXFfdGFibGU7CitpbnQgZnJlcV90YWJsZV9zaXplOworI2lmbmRlZiBOT19YRlMKK3hmc19mc29wX2dlb21fdCBnZW9tOworI2VuZGlmCitjaGFyICpob21lZGlyOworaW50ICppbGlzdDsKK2ludCBpbGlzdGxlbjsKK29mZjY0X3QgbWF4ZnNpemU7CitjaGFyICpteXByb2c7CitpbnQgbmFtZXJhbmQ7CitpbnQgbmFtZXNlcTsKK2ludCBub3BzOworaW50IG5wcm9jID0gMTsKK2ludCBvcGVyYXRpb25zID0gMTsKK2ludCBwcm9jaWQ7CitpbnQgcnRwY3Q7Cit1bnNpZ25lZCBsb25nIHNlZWQgPSAwOworaW5vX3QgdG9wX2lubzsKK2ludCB2ZXJib3NlID0gMDsKKyNpZm5kZWYgTk9fWEZTCitpbnQgbm9feGZzID0gMDsKKyNlbHNlCitpbnQgbm9feGZzID0gMTsKKyNlbmRpZgorc2lnX2F0b21pY190IHNob3VsZF9zdG9wID0gMDsKKwordm9pZCBhZGRfdG9fZmxpc3QoaW50LCBpbnQsIGludCk7Cit2b2lkIGFwcGVuZF9wYXRobmFtZShwYXRobmFtZV90ICosIGNoYXIgKik7CisjaWZuZGVmIE5PX1hGUworaW50IGF0dHJfbGlzdF9wYXRoKHBhdGhuYW1lX3QgKiwgY2hhciAqLCBjb25zdCBpbnQsIGludCwgYXR0cmxpc3RfY3Vyc29yX3QgKik7CitpbnQgYXR0cl9yZW1vdmVfcGF0aChwYXRobmFtZV90ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK2ludCBhdHRyX3NldF9wYXRoKHBhdGhuYW1lX3QgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGludCwgaW50KTsKKyNlbmRpZgordm9pZCBjaGVja19jd2Qodm9pZCk7CitpbnQgY3JlYXRfcGF0aChwYXRobmFtZV90ICosIG1vZGVfdCk7Cit2b2lkIGRjYWNoZV9lbnRlcihpbnQsIGludCk7Cit2b2lkIGRjYWNoZV9pbml0KHZvaWQpOworZmVudF90ICpkY2FjaGVfbG9va3VwKGludCk7Cit2b2lkIGRjYWNoZV9wdXJnZShpbnQpOwordm9pZCBkZWxfZnJvbV9mbGlzdChpbnQsIGludCk7CitpbnQgZGlyaWRfdG9fbmFtZShjaGFyICosIGludCk7Cit2b2lkIGRvcHJvYyh2b2lkKTsKK3ZvaWQgZmVudF90b19uYW1lKHBhdGhuYW1lX3QgKiwgZmxpc3RfdCAqLCBmZW50X3QgKik7Cit2b2lkIGZpeF9wYXJlbnQoaW50LCBpbnQpOwordm9pZCBmcmVlX3BhdGhuYW1lKHBhdGhuYW1lX3QgKik7CitpbnQgZ2VuZXJhdGVfZm5hbWUoZmVudF90ICosIGludCwgcGF0aG5hbWVfdCAqLCBpbnQgKiwgaW50ICopOworaW50IGdldF9mbmFtZShpbnQsIGxvbmcsIHBhdGhuYW1lX3QgKiwgZmxpc3RfdCAqKiwgZmVudF90ICoqLCBpbnQgKik7Cit2b2lkIGluaXRfcGF0aG5hbWUocGF0aG5hbWVfdCAqKTsKK2ludCBsY2hvd25fcGF0aChwYXRobmFtZV90ICosIHVpZF90LCBnaWRfdCk7CitpbnQgbGlua19wYXRoKHBhdGhuYW1lX3QgKiwgcGF0aG5hbWVfdCAqKTsKK2ludCBsc3RhdDY0X3BhdGgocGF0aG5hbWVfdCAqLCBzdHJ1Y3Qgc3RhdDY0ICopOwordm9pZCBtYWtlX2ZyZXFfdGFibGUodm9pZCk7CitpbnQgbWtkaXJfcGF0aChwYXRobmFtZV90ICosIG1vZGVfdCk7CitpbnQgbWtub2RfcGF0aChwYXRobmFtZV90ICosIG1vZGVfdCwgZGV2X3QpOwordm9pZCBuYW1lcmFuZHBhZChpbnQsIGNoYXIgKiwgaW50KTsKK2ludCBvcGVuX3BhdGgocGF0aG5hbWVfdCAqLCBpbnQpOworRElSICpvcGVuZGlyX3BhdGgocGF0aG5hbWVfdCAqKTsKK3ZvaWQgcHJvY2Vzc19mcmVxKGNoYXIgKik7CitpbnQgcmVhZGxpbmtfcGF0aChwYXRobmFtZV90ICosIGNoYXIgKiwgc2l6ZV90KTsKK2ludCByZW5hbWVfcGF0aChwYXRobmFtZV90ICosIHBhdGhuYW1lX3QgKik7CitpbnQgcm1kaXJfcGF0aChwYXRobmFtZV90ICopOwordm9pZCBzZXBhcmF0ZV9wYXRobmFtZShwYXRobmFtZV90ICosIGNoYXIgKiwgcGF0aG5hbWVfdCAqKTsKK3ZvaWQgc2hvd19vcHMoaW50LCBjaGFyICopOworaW50IHN0YXQ2NF9wYXRoKHBhdGhuYW1lX3QgKiwgc3RydWN0IHN0YXQ2NCAqKTsKK2ludCBzeW1saW5rX3BhdGgoY29uc3QgY2hhciAqLCBwYXRobmFtZV90ICopOworaW50IHRydW5jYXRlNjRfcGF0aChwYXRobmFtZV90ICosIG9mZjY0X3QpOworaW50IHVubGlua19wYXRoKHBhdGhuYW1lX3QgKik7Cit2b2lkIHVzYWdlKHZvaWQpOwordm9pZCB3cml0ZV9mcmVxKHZvaWQpOwordm9pZCB6ZXJvX2ZyZXEodm9pZCk7CisKK3ZvaWQgc2dfaGFuZGxlcihpbnQgc2lnbnVtKQoreworCXNob3VsZF9zdG9wID0gMTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIgYnVmWzEwXTsKKwlpbnQgYzsKKwljaGFyICpkaXJuYW1lID0gTlVMTDsKKwlpbnQgZmQ7CisJaW50IGk7CisJaW50IGNsZWFudXAgPSAwOworCWludCBsb29wcyA9IDE7CisJaW50IGxvb3BjbnRyID0gMTsKKwljaGFyIGNtZFsyNTZdOworI2lmbmRlZiBOT19YRlMKKwlpbnQgajsKKyNlbmRpZgorCWNoYXIgKnA7CisJaW50IHN0YXQ7CisJc3RydWN0IHRpbWV2YWwgdDsKKyNpZm5kZWYgTk9fWEZTCisJcHRyZGlmZl90IHNydmFsOworI2VuZGlmCisJaW50IG5vdXNhZ2UgPSAwOworI2lmbmRlZiBOT19YRlMKKwl4ZnNfZXJyb3JfaW5qZWN0aW9uX3QgZXJyX2luajsKKyNlbmRpZgorCXN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworCisJZXJycmFuZ2UgPSBlcnJ0YWcgPSAwOworCXVtYXNrKDApOworCW5vcHMgPSBzaXplb2Yob3BzKSAvIHNpemVvZihvcHNbMF0pOworCW9wc19lbmQgPSAmb3BzW25vcHNdOworCW15cHJvZyA9IGFyZ3ZbMF07CisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjZDplOmY6aTpsOm46cDpyczp2d3pIU1giKSkgIT0gLTEpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2MnOgorCQkJLypEb24ndCBjbGVhbnVwICovCisJCQljbGVhbnVwID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWRpcm5hbWUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnZSc6CisJCQlzc2NhbmYob3B0YXJnLCAiJWQiLCAmZXJydGFnKTsKKwkJCWlmIChlcnJ0YWcgPCAwKSB7CisJCQkJZXJydGFnID0gLWVycnRhZzsKKwkJCQllcnJyYW5nZSA9IDE7CisJCQl9IGVsc2UgaWYgKGVycnRhZyA9PSAwKQorCQkJCWVycnRhZyA9IC0xOworCQkJaWYgKGVycnRhZyA+PSBYRlNfRVJSVEFHX01BWCkgeworCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQkiZXJyb3IgdGFnICVkIHRvbyBsYXJnZSAobWF4ICVkKVxuIiwKKwkJCQkJZXJydGFnLCBYRlNfRVJSVEFHX01BWCAtIDEpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlwcm9jZXNzX2ZyZXEob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdpJzoKKwkJCWlsaXN0ID0gcmVhbGxvYyhpbGlzdCwgKytpbGlzdGxlbiAqIHNpemVvZigqaWxpc3QpKTsKKwkJCWlsaXN0W2lsaXN0bGVuIC0gMV0gPSBzdHJ0b2wob3B0YXJnLCAmcCwgMTYpOworCQkJYnJlYWs7CisJCWNhc2UgJ2wnOgorCQkJbG9vcHMgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnbic6CisJCQlvcGVyYXRpb25zID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3AnOgorCQkJbnByb2MgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQluYW1lcmFuZCA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlzZWVkID0gc3RydG91bChvcHRhcmcsIE5VTEwsIDApOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJdmVyYm9zZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAndyc6CisJCQl3cml0ZV9mcmVxKCk7CisJCQlicmVhazsKKwkJY2FzZSAneic6CisJCQl6ZXJvX2ZyZXEoKTsKKwkJCWJyZWFrOworCQljYXNlICdTJzoKKwkJCXNob3dfb3BzKDAsIE5VTEwpOworCQkJcHJpbnRmKCJcbiIpOworCQkJbm91c2FnZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnPyc6CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIC0gaW52YWxpZCBwYXJhbWV0ZXJzXG4iLCBteXByb2cpOworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgJ0gnOgorCQkJdXNhZ2UoKTsKKwkJCWV4aXQoMSk7CisJCWNhc2UgJ1gnOgorCQkJbm9feGZzID0gMTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKG5vX3hmcyAmJiBlcnJ0YWcpIHsKKwkJZnByaW50ZihzdGRlcnIsICJlcnJvciBpbmplY3Rpb24gb25seSB3b3JrcyBvbiBYRlNcbiIpOworCQlleGl0KDEpOworCX0KKworCWlmIChub194ZnMpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IG9wcyArIGkgPCBvcHNfZW5kOyArK2kpIHsKKwkJCWlmIChvcHNbaV0uaXN4ZnMpCisJCQkJb3BzW2ldLmZyZXEgPSAwOworCQl9CisJfQorCisJbWFrZV9mcmVxX3RhYmxlKCk7CisKKwl3aGlsZSAoKChsb29wY250ciA8PSBsb29wcykgfHwgKGxvb3BzID09IDApKSAmJiAhc2hvdWxkX3N0b3ApIHsKKwkJaWYgKCFkaXJuYW1lKSB7CisJCQkvKiBubyBkaXJlY3Rvcnkgc3BlY2lmaWVkICovCisJCQlpZiAoIW5vdXNhZ2UpCisJCQkJdXNhZ2UoKTsKKwkJCWV4aXQoMSk7CisJCX0KKworCQkodm9pZClta2RpcihkaXJuYW1lLCAwNzc3KTsKKwkJaWYgKGNoZGlyKGRpcm5hbWUpIDwgMCkgeworCQkJcGVycm9yKGRpcm5hbWUpOworCQkJZXhpdCgxKTsKKwkJfQorCQlzcHJpbnRmKGJ1ZiwgImZzcyV4IiwgZ2V0cGlkKCkpOworCQlmZCA9IGNyZWF0KGJ1ZiwgMDY2Nik7CisJCWlmIChsc2VlazY0KGZkLCAob2ZmNjRfdCkgKE1BWEZTSVpFMzIgKyAxVUxMKSwgU0VFS19TRVQpIDwgMCkKKwkJCW1heGZzaXplID0gKG9mZjY0X3QpIE1BWEZTSVpFMzI7CisJCWVsc2UKKwkJCW1heGZzaXplID0gKG9mZjY0X3QpIE1BWEZTSVpFOworCQlkY2FjaGVfaW5pdCgpOworCQlzZXRsaW5lYnVmKHN0ZG91dCk7CisJCWlmICghc2VlZCkgeworCQkJZ2V0dGltZW9mZGF5KCZ0LCBOVUxMKTsKKwkJCXNlZWQgPSAoaW50KXQudHZfc2VjIF4gKGludCl0LnR2X3VzZWM7CisJCQlwcmludGYoInNlZWQgPSAlbGRcbiIsIHNlZWQpOworCQl9CisjaWZuZGVmIE5PX1hGUworCQlpZiAoIW5vX3hmcykgeworCQkJbWVtc2V0KCZnZW9tLCAwLCBzaXplb2YoZ2VvbSkpOworCQkJaSA9IGlvY3RsKGZkLCBYRlNfSU9DX0ZTR0VPTUVUUlksICZnZW9tKTsKKwkJCWlmIChpID49IDAgJiYgZ2VvbS5ydGJsb2NrcykKKwkJCQlydHBjdCA9IE1JTihNQVgoZ2VvbS5ydGJsb2NrcyAqIDEwMCAvCisJCQkJCQkoZ2VvbS5ydGJsb2NrcyArCisJCQkJCQkgZ2VvbS5kYXRhYmxvY2tzKSwgMSksIDk5KTsKKwkJCWVsc2UKKwkJCQlydHBjdCA9IDA7CisJCX0KKwkJaWYgKGVycnRhZyAhPSAwKSB7CisJCQlpZiAoZXJycmFuZ2UgPT0gMCkgeworCQkJCWlmIChlcnJ0YWcgPD0gMCkgeworCQkJCQlzcmFuZG9tKHNlZWQpOworCQkJCQlqID0gcmFuZG9tKCkgJSAxMDA7CisKKwkJCQkJZm9yIChpID0gMDsgaSA8IGo7IGkrKykKKwkJCQkJCSh2b2lkKXJhbmRvbSgpOworCisJCQkJCWVycnRhZyA9CisJCQkJCSAgICAocmFuZG9tKCkgJSAoWEZTX0VSUlRBR19NQVggLSAxKSkgKworCQkJCQkgICAgMTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXNyYW5kb20oc2VlZCk7CisJCQkJaiA9IHJhbmRvbSgpICUgMTAwOworCisJCQkJZm9yIChpID0gMDsgaSA8IGo7IGkrKykKKwkJCQkJKHZvaWQpcmFuZG9tKCk7CisKKwkJCQllcnJ0YWcgKz0KKwkJCQkgICAgKHJhbmRvbSgpICUgKFhGU19FUlJUQUdfTUFYIC0gZXJydGFnKSk7CisJCQl9CisJCQlwcmludGYoIkluamVjdGluZyBmYWlsdXJlIG9uIHRhZyAjJWRcbiIsIGVycnRhZyk7CisJCQltZW1zZXQoJmVycl9pbmosIDAsIHNpemVvZihlcnJfaW5qKSk7CisJCQllcnJfaW5qLmVycnRhZyA9IGVycnRhZzsKKwkJCWVycl9pbmouZmQgPSBmZDsKKwkJCXNydmFsID0gaW9jdGwoZmQsIFhGU19JT0NfRVJST1JfSU5KRUNUSU9OLCAmZXJyX2luaik7CisJCQlpZiAoc3J2YWwgPCAtMSkgeworCQkJCXBlcnJvcgorCQkJCSAgICAoImZzc3RyZXNzIC0gWEZTX1NZU1NHSSBlcnJvciBpbmplY3Rpb24gY2FsbCIpOworCQkJCWNsb3NlKGZkKTsKKwkJCQl1bmxpbmsoYnVmKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9IGVsc2UKKyNlbmRpZgorCQkJY2xvc2UoZmQpOworCQl1bmxpbmsoYnVmKTsKKworCisJCWlmIChucHJvYyA9PSAxKSB7CisJCQlwcm9jaWQgPSAwOworCQkJZG9wcm9jKCk7CisJCX0gZWxzZSB7CisJCQlzZXRwZ2lkKDAsIDApOworCQkJYWN0aW9uLnNhX2hhbmRsZXIgPSBzZ19oYW5kbGVyOworCQkJc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKwkJCWFjdGlvbi5zYV9mbGFncyA9IDA7CisJCQlpZiAoc2lnYWN0aW9uKFNJR1RFUk0sICZhY3Rpb24sIDApKSB7CisJCQkJcGVycm9yKCJzaWdhY3Rpb24gZmFpbGVkIik7CisJCQkJZXhpdCgxKTsKKwkJCX0KKworCQkJZm9yIChpID0gMDsgaSA8IG5wcm9jOyBpKyspIHsKKwkJCQlpZiAoZm9yaygpID09IDApIHsKKworCQkJCQlhY3Rpb24uc2FfaGFuZGxlciA9IFNJR19ERkw7CisJCQkJCXNpZ2VtcHR5c2V0KCZhY3Rpb24uc2FfbWFzayk7CisJCQkJCWlmIChzaWdhY3Rpb24oU0lHVEVSTSwgJmFjdGlvbiwgMCkpCisJCQkJCQlyZXR1cm4gMTsKKyNpZmRlZiBIQVZFX1NZU19QUkNUTF9ICisJCQkJCXByY3RsKFBSX1NFVF9QREVBVEhTSUcsIFNJR0tJTEwpOworCQkJCQlpZiAoZ2V0cHBpZCgpID09IDEpIC8qIHBhcmVudCBkaWVkIGFscmVhZHk/ICovCisJCQkJCQlyZXR1cm4gMDsKKyNlbmRpZgorCQkJCQlwcm9jaWQgPSBpOworCQkJCQlkb3Byb2MoKTsKKwkJCQkJcmV0dXJuIDA7CisJCQkJfQorCQkJfQorCQkJd2hpbGUgKHdhaXQoJnN0YXQpID4gMCAmJiAhc2hvdWxkX3N0b3ApIHsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChzaG91bGRfc3RvcCkgeworCQkJCWFjdGlvbi5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisJCQkJc2lnYWN0aW9uKFNJR1RFUk0sICZhY3Rpb24sIDApOworCQkJCWtpbGwoLWdldHBpZCgpLCBTSUdURVJNKTsKKwkJCQl3aGlsZSAod2FpdCgmc3RhdCkgPiAwKQorCQkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorI2lmbmRlZiBOT19YRlMKKwkJaWYgKGVycnRhZyAhPSAwKSB7CisJCQltZW1zZXQoJmVycl9pbmosIDAsIHNpemVvZihlcnJfaW5qKSk7CisJCQllcnJfaW5qLmVycnRhZyA9IDA7CisJCQllcnJfaW5qLmZkID0gZmQ7CisJCQlpZiAoKHNydmFsID0KKwkJCSAgICAgaW9jdGwoZmQsIFhGU19JT0NfRVJST1JfQ0xFQVJBTEwsCisJCQkJICAgJmVycl9pbmopKSAhPSAwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJCYWQgZWogY2xlYXIgb24gJWQgKCVkKS5cbiIsCisJCQkJCWZkLCBlcnJubyk7CisJCQkJcGVycm9yCisJCQkJICAgICgiZnNzdHJlc3MgLSBYRlNfU1lTU0dJIGNsZWFyIGVycm9yIGluamVjdGlvbiBjYWxsIik7CisJCQkJY2xvc2UoZmQpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQljbG9zZShmZCk7CisJCX0KKyNlbmRpZgorCQlpZiAoY2xlYW51cCA9PSAwKSB7CisJCQlzcHJpbnRmKGNtZCwgInJtIC1yZiAlcy8qIiwgZGlybmFtZSk7CisJCQlzeXN0ZW0oY21kKTsKKwkJCWZvciAoaSA9IDA7IGkgPCBGVF9uZnQ7IGkrKykgeworCQkJCWZsaXN0W2ldLm5zbG90cyA9IDA7CisJCQkJZmxpc3RbaV0ubmZpbGVzID0gMDsKKwkJCQlmcmVlKGZsaXN0W2ldLmZlbnRzKTsKKwkJCQlmbGlzdFtpXS5mZW50cyA9IE5VTEw7CisJCQl9CisJCX0KKwkJbG9vcGNudHIrKzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgYWRkX3RvX2ZsaXN0KGludCBmdCwgaW50IGlkLCBpbnQgcGFyZW50KQoreworCWZlbnRfdCAqZmVwOworCWZsaXN0X3QgKmZ0cDsKKworCWZ0cCA9ICZmbGlzdFtmdF07CisJaWYgKGZ0cC0+bmZpbGVzID09IGZ0cC0+bnNsb3RzKSB7CisJCWZ0cC0+bnNsb3RzICs9IEZMSVNUX1NMT1RfSU5DUjsKKwkJZnRwLT5mZW50cyA9IHJlYWxsb2MoZnRwLT5mZW50cywgZnRwLT5uc2xvdHMgKiBzaXplb2YoZmVudF90KSk7CisJfQorCWZlcCA9ICZmdHAtPmZlbnRzW2Z0cC0+bmZpbGVzKytdOworCWZlcC0+aWQgPSBpZDsKKwlmZXAtPnBhcmVudCA9IHBhcmVudDsKK30KKwordm9pZCBhcHBlbmRfcGF0aG5hbWUocGF0aG5hbWVfdCAqIG5hbWUsIGNoYXIgKnN0cikKK3sKKwlpbnQgbGVuOworCisJbGVuID0gc3RybGVuKHN0cik7CisjaWZkZWYgREVCVUcKKwlpZiAobGVuICYmICpzdHIgPT0gJy8nICYmIG5hbWUtPmxlbiA9PSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiZnNzdHJlc3M6IGFwcGVuZF9wYXRobmFtZSBmYWlsdXJlXG4iKTsKKwkJY2hkaXIoaG9tZWRpcik7CisJCWFib3J0KCk7CisKKwl9CisjZW5kaWYKKwluYW1lLT5wYXRoID0gcmVhbGxvYyhuYW1lLT5wYXRoLCBuYW1lLT5sZW4gKyAxICsgbGVuKTsKKwlzdHJjcHkoJm5hbWUtPnBhdGhbbmFtZS0+bGVuXSwgc3RyKTsKKwluYW1lLT5sZW4gKz0gbGVuOworfQorCisjaWZuZGVmIE5PX1hGUworaW50CithdHRyX2xpc3RfcGF0aChwYXRobmFtZV90ICogbmFtZSwgY2hhciAqYnVmZmVyLCBjb25zdCBpbnQgYnVmZmVyc2l6ZSwgaW50IGZsYWdzLAorCSAgICAgICBhdHRybGlzdF9jdXJzb3JfdCAqIGN1cnNvcikKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlwYXRobmFtZV90IG5ld25hbWU7CisJaW50IHJ2YWw7CisKKwlydmFsID0gYXR0cl9saXN0KG5hbWUtPnBhdGgsIGJ1ZmZlciwgYnVmZmVyc2l6ZSwgZmxhZ3MsIGN1cnNvcik7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IGF0dHJfbGlzdF9wYXRoKCZuZXduYW1lLCBidWZmZXIsIGJ1ZmZlcnNpemUsIGZsYWdzLAorCQkJCSAgICAgIGN1cnNvcik7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IGF0dHJfcmVtb3ZlX3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIGNvbnN0IGNoYXIgKmF0dHJuYW1lLCBpbnQgZmxhZ3MpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJcnZhbCA9IGF0dHJfcmVtb3ZlKG5hbWUtPnBhdGgsIGF0dHJuYW1lLCBmbGFncyk7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IGF0dHJfcmVtb3ZlX3BhdGgoJm5ld25hbWUsIGF0dHJuYW1lLCBmbGFncyk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50CithdHRyX3NldF9wYXRoKHBhdGhuYW1lX3QgKiBuYW1lLCBjb25zdCBjaGFyICphdHRybmFtZSwgY29uc3QgY2hhciAqYXR0cnZhbHVlLAorCSAgICAgIGNvbnN0IGludCB2YWx1ZWxlbmd0aCwgaW50IGZsYWdzKQoreworCWNoYXIgYnVmW01BWE5BTUVMRU5dOworCXBhdGhuYW1lX3QgbmV3bmFtZTsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBhdHRyX3NldChuYW1lLT5wYXRoLCBhdHRybmFtZSwgYXR0cnZhbHVlLCB2YWx1ZWxlbmd0aCwgZmxhZ3MpOworCWlmIChydmFsID49IDAgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQorCQlyZXR1cm4gcnZhbDsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lLCBidWYsICZuZXduYW1lKTsKKwlpZiAoY2hkaXIoYnVmKSA9PSAwKSB7CisJCXJ2YWwgPSBhdHRyX3NldF9wYXRoKCZuZXduYW1lLCBhdHRybmFtZSwgYXR0cnZhbHVlLCB2YWx1ZWxlbmd0aCwKKwkJCQkgICAgIGZsYWdzKTsKKwkJY2hkaXIoIi4uIik7CisJfQorCWZyZWVfcGF0aG5hbWUoJm5ld25hbWUpOworCXJldHVybiBydmFsOworfQorI2VuZGlmCisKK3ZvaWQgY2hlY2tfY3dkKHZvaWQpCit7CisjaWZkZWYgREVCVUcKKwlzdHJ1Y3Qgc3RhdDY0IHN0YXRidWY7CisKKwlpZiAoc3RhdDY0KCIuIiwgJnN0YXRidWYpID09IDAgJiYgc3RhdGJ1Zi5zdF9pbm8gPT0gdG9wX2lubykKKwkJcmV0dXJuOworCWNoZGlyKGhvbWVkaXIpOworCWZwcmludGYoc3RkZXJyLCAiZnNzdHJlc3M6IGNoZWNrX2N3ZCBmYWlsdXJlXG4iKTsKKwlhYm9ydCgpOworCisjZW5kaWYKK30KKworaW50IGNyZWF0X3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgYnVmW01BWE5BTUVMRU5dOworCXBhdGhuYW1lX3QgbmV3bmFtZTsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBjcmVhdChuYW1lLT5wYXRoLCBtb2RlKTsKKwlpZiAocnZhbCA+PSAwIHx8IGVycm5vICE9IEVOQU1FVE9PTE9ORykKKwkJcmV0dXJuIHJ2YWw7CisJc2VwYXJhdGVfcGF0aG5hbWUobmFtZSwgYnVmLCAmbmV3bmFtZSk7CisJaWYgKGNoZGlyKGJ1ZikgPT0gMCkgeworCQlydmFsID0gY3JlYXRfcGF0aCgmbmV3bmFtZSwgbW9kZSk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKwordm9pZCBkY2FjaGVfZW50ZXIoaW50IGRpcmlkLCBpbnQgc2xvdCkKK3sKKwlkY2FjaGVbZGlyaWQgJSBORENBQ0hFXSA9IHNsb3Q7Cit9CisKK3ZvaWQgZGNhY2hlX2luaXQodm9pZCkKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBORENBQ0hFOyBpKyspCisJCWRjYWNoZVtpXSA9IC0xOworfQorCitmZW50X3QgKmRjYWNoZV9sb29rdXAoaW50IGRpcmlkKQoreworCWZlbnRfdCAqZmVwOworCWludCBpOworCisJaSA9IGRjYWNoZVtkaXJpZCAlIE5EQ0FDSEVdOworCWlmIChpID49IDAgJiYgKGZlcCA9ICZmbGlzdFtGVF9ESVJdLmZlbnRzW2ldKS0+aWQgPT0gZGlyaWQpCisJCXJldHVybiBmZXA7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgZGNhY2hlX3B1cmdlKGludCBkaXJpZCkKK3sKKwlpbnQgKmRjcDsKKworCWRjcCA9ICZkY2FjaGVbZGlyaWQgJSBORENBQ0hFXTsKKwlpZiAoKmRjcCA+PSAwICYmIGZsaXN0W0ZUX0RJUl0uZmVudHNbKmRjcF0uaWQgPT0gZGlyaWQpCisJCSpkY3AgPSAtMTsKK30KKwordm9pZCBkZWxfZnJvbV9mbGlzdChpbnQgZnQsIGludCBzbG90KQoreworCWZsaXN0X3QgKmZ0cDsKKworCWZ0cCA9ICZmbGlzdFtmdF07CisJaWYgKGZ0ID09IEZUX0RJUikKKwkJZGNhY2hlX3B1cmdlKGZ0cC0+ZmVudHNbc2xvdF0uaWQpOworCWlmIChzbG90ICE9IGZ0cC0+bmZpbGVzIC0gMSkgeworCQlpZiAoZnQgPT0gRlRfRElSKQorCQkJZGNhY2hlX3B1cmdlKGZ0cC0+ZmVudHNbZnRwLT5uZmlsZXMgLSAxXS5pZCk7CisJCWZ0cC0+ZmVudHNbc2xvdF0gPSBmdHAtPmZlbnRzWy0tZnRwLT5uZmlsZXNdOworCX0gZWxzZQorCQlmdHAtPm5maWxlcy0tOworfQorCitmZW50X3QgKmRpcmlkX3RvX2ZlbnQoaW50IGRpcmlkKQoreworCWZlbnRfdCAqZWZlcDsKKwlmZW50X3QgKmZlcDsKKwlmbGlzdF90ICpmbHA7CisKKwlpZiAoKGZlcCA9IGRjYWNoZV9sb29rdXAoZGlyaWQpKSkKKwkJcmV0dXJuIGZlcDsKKwlmbHAgPSAmZmxpc3RbRlRfRElSXTsKKwlmb3IgKGZlcCA9IGZscC0+ZmVudHMsIGVmZXAgPSAmZmVwW2ZscC0+bmZpbGVzXTsgZmVwIDwgZWZlcDsgZmVwKyspIHsKKwkJaWYgKGZlcC0+aWQgPT0gZGlyaWQpIHsKKwkJCWRjYWNoZV9lbnRlcihkaXJpZCwgZmVwIC0gZmxwLT5mZW50cyk7CisJCQlyZXR1cm4gZmVwOworCQl9CisJfQorCXJldHVybiBOVUxMOworfQorCit2b2lkIGRvcHJvYyh2b2lkKQoreworCXN0cnVjdCBzdGF0NjQgc3RhdGJ1ZjsKKwljaGFyIGJ1ZlsxMF07CisJaW50IG9wbm87CisJaW50IHJ2YWw7CisJb3BkZXNjX3QgKnA7CisKKwlzcHJpbnRmKGJ1ZiwgInAleCIsIHByb2NpZCk7CisJKHZvaWQpbWtkaXIoYnVmLCAwNzc3KTsKKwlpZiAoY2hkaXIoYnVmKSA8IDAgfHwgc3RhdDY0KCIuIiwgJnN0YXRidWYpIDwgMCkgeworCQlwZXJyb3IoYnVmKTsKKwkJX2V4aXQoMSk7CisJfQorCXRvcF9pbm8gPSBzdGF0YnVmLnN0X2lubzsKKwlob21lZGlyID0gZ2V0Y3dkKE5VTEwsIC0xKTsKKwlzZWVkICs9IHByb2NpZDsKKwlzcmFuZG9tKHNlZWQpOworCWlmIChuYW1lcmFuZCkKKwkJbmFtZXJhbmQgPSByYW5kb20oKTsKKwlmb3IgKG9wbm8gPSAwOyBvcG5vIDwgb3BlcmF0aW9uczsgb3BubysrKSB7CisJCXAgPSAmb3BzW2ZyZXFfdGFibGVbcmFuZG9tKCkgJSBmcmVxX3RhYmxlX3NpemVdXTsKKwkJaWYgKCh1bnNpZ25lZCBsb25nKXAtPmZ1bmMgPCA0MDk2KQorCQkJYWJvcnQoKTsKKworCQlwLT5mdW5jKG9wbm8sIHJhbmRvbSgpKTsKKwkJLyoKKwkJICogdGVzdCBmb3IgZm9yY2VkIHNodXRkb3duIGJ5IHN0YXQnaW5nIHRoZSB0ZXN0CisJCSAqIGRpcmVjdG9yeS4gIElmIHRoaXMgc3RhdCByZXR1cm5zIEVJTywgYXNzdW1lCisJCSAqIHRoZSBmb3JjZWQgc2h1dGRvd24gaGFwcGVuZWQuCisJCSAqLworCQlpZiAoZXJydGFnICE9IDAgJiYgb3BubyAlIDEwMCA9PSAwKSB7CisJCQlydmFsID0gc3RhdDY0KCIuIiwgJnN0YXRidWYpOworCQkJaWYgKHJ2YWwgPT0gRUlPKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJEZXRlY3RlZCBFSU9cbiIpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KK30KKwordm9pZCBmZW50X3RvX25hbWUocGF0aG5hbWVfdCAqIG5hbWUsIGZsaXN0X3QgKiBmbHAsIGZlbnRfdCAqIGZlcCkKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlpbnQgaTsKKwlmZW50X3QgKnBmZXA7CisKKwlpZiAoZmVwID09IE5VTEwpCisJCXJldHVybjsKKwlpZiAoZmVwLT5wYXJlbnQgIT0gLTEpIHsKKwkJcGZlcCA9IGRpcmlkX3RvX2ZlbnQoZmVwLT5wYXJlbnQpOworCQlmZW50X3RvX25hbWUobmFtZSwgJmZsaXN0W0ZUX0RJUl0sIHBmZXApOworCQlhcHBlbmRfcGF0aG5hbWUobmFtZSwgIi8iKTsKKwl9CisJaSA9IHNwcmludGYoYnVmLCAiJWMleCIsIGZscC0+dGFnLCBmZXAtPmlkKTsKKwluYW1lcmFuZHBhZChmZXAtPmlkLCBidWYsIGkpOworCWFwcGVuZF9wYXRobmFtZShuYW1lLCBidWYpOworfQorCit2b2lkIGZpeF9wYXJlbnQoaW50IG9sZGlkLCBpbnQgbmV3aWQpCit7CisJZmVudF90ICpmZXA7CisJZmxpc3RfdCAqZmxwOworCWludCBpOworCWludCBqOworCisJZm9yIChpID0gMCwgZmxwID0gZmxpc3Q7IGkgPCBGVF9uZnQ7IGkrKywgZmxwKyspIHsKKwkJZm9yIChqID0gMCwgZmVwID0gZmxwLT5mZW50czsgaiA8IGZscC0+bmZpbGVzOyBqKyssIGZlcCsrKSB7CisJCQlpZiAoZmVwLT5wYXJlbnQgPT0gb2xkaWQpCisJCQkJZmVwLT5wYXJlbnQgPSBuZXdpZDsKKwkJfQorCX0KK30KKwordm9pZCBmcmVlX3BhdGhuYW1lKHBhdGhuYW1lX3QgKiBuYW1lKQoreworCWlmIChuYW1lLT5wYXRoKSB7CisJCWZyZWUobmFtZS0+cGF0aCk7CisJCW5hbWUtPnBhdGggPSBOVUxMOworCQluYW1lLT5sZW4gPSAwOworCX0KK30KKworaW50IGdlbmVyYXRlX2ZuYW1lKGZlbnRfdCAqIGZlcCwgaW50IGZ0LCBwYXRobmFtZV90ICogbmFtZSwgaW50ICppZHAsIGludCAqdikKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlmbGlzdF90ICpmbHA7CisJaW50IGlkOworCWludCBqOworCWludCBsZW47CisKKwlmbHAgPSAmZmxpc3RbZnRdOworCWxlbiA9IHNwcmludGYoYnVmLCAiJWMleCIsIGZscC0+dGFnLCBpZCA9IG5hbWVzZXErKyk7CisJbmFtZXJhbmRwYWQoaWQsIGJ1ZiwgbGVuKTsKKwlpZiAoZmVwKSB7CisJCWZlbnRfdG9fbmFtZShuYW1lLCAmZmxpc3RbRlRfRElSXSwgZmVwKTsKKwkJYXBwZW5kX3BhdGhuYW1lKG5hbWUsICIvIik7CisJfQorCWFwcGVuZF9wYXRobmFtZShuYW1lLCBidWYpOworCSppZHAgPSBpZDsKKwkqdiA9IHZlcmJvc2U7CisJZm9yIChqID0gMDsgISp2ICYmIGogPCBpbGlzdGxlbjsgaisrKSB7CisJCWlmIChpbGlzdFtqXSA9PSBpZCkgeworCQkJKnYgPSAxOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIDE7Cit9CisKK2ludAorZ2V0X2ZuYW1lKGludCB3aGljaCwgbG9uZyByLCBwYXRobmFtZV90ICogbmFtZSwgZmxpc3RfdCAqKiBmbHBwLCBmZW50X3QgKiogZmVwcCwKKwkgIGludCAqdikKK3sKKwlpbnQgYzsKKwlmZW50X3QgKmZlcDsKKwlmbGlzdF90ICpmbHA7CisJaW50IGk7CisJaW50IGo7CisJaW50IHg7CisKKwlmb3IgKGkgPSAwLCBjID0gMCwgZmxwID0gZmxpc3Q7IGkgPCBGVF9uZnQ7IGkrKywgZmxwKyspIHsKKwkJaWYgKHdoaWNoICYgKDEgPDwgaSkpCisJCQljICs9IGZscC0+bmZpbGVzOworCX0KKwlpZiAoYyA9PSAwKSB7CisJCWlmIChmbHBwKQorCQkJKmZscHAgPSBOVUxMOworCQlpZiAoZmVwcCkKKwkJCSpmZXBwID0gTlVMTDsKKwkJKnYgPSB2ZXJib3NlOworCQlyZXR1cm4gMDsKKwl9CisJeCA9IChpbnQpKHIgJSBjKTsKKwlmb3IgKGkgPSAwLCBjID0gMCwgZmxwID0gZmxpc3Q7IGkgPCBGVF9uZnQ7IGkrKywgZmxwKyspIHsKKwkJaWYgKHdoaWNoICYgKDEgPDwgaSkpIHsKKwkJCWlmICh4IDwgYyArIGZscC0+bmZpbGVzKSB7CisJCQkJZmVwID0gJmZscC0+ZmVudHNbeCAtIGNdOworCQkJCWlmIChuYW1lKQorCQkJCQlmZW50X3RvX25hbWUobmFtZSwgZmxwLCBmZXApOworCQkJCWlmIChmbHBwKQorCQkJCQkqZmxwcCA9IGZscDsKKwkJCQlpZiAoZmVwcCkKKwkJCQkJKmZlcHAgPSBmZXA7CisJCQkJKnYgPSB2ZXJib3NlOworCQkJCWZvciAoaiA9IDA7ICEqdiAmJiBqIDwgaWxpc3RsZW47IGorKykgeworCQkJCQlpZiAoaWxpc3Rbal0gPT0gZmVwLT5pZCkgeworCQkJCQkJKnYgPSAxOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCQljICs9IGZscC0+bmZpbGVzOworCQl9CisJfQorI2lmZGVmIERFQlVHCisJZnByaW50ZihzdGRlcnIsICJmc3N0cmVzczogZ2V0X2ZuYW1lIGZhaWx1cmVcbiIpOworCWFib3J0KCk7CisjZW5kaWYKKwlyZXR1cm4gLTE7CisKK30KKwordm9pZCBpbml0X3BhdGhuYW1lKHBhdGhuYW1lX3QgKiBuYW1lKQoreworCW5hbWUtPmxlbiA9IDA7CisJbmFtZS0+cGF0aCA9IE5VTEw7Cit9CisKK2ludCBsY2hvd25fcGF0aChwYXRobmFtZV90ICogbmFtZSwgdWlkX3Qgb3duZXIsIGdpZF90IGdyb3VwKQoreworCWNoYXIgYnVmW01BWE5BTUVMRU5dOworCXBhdGhuYW1lX3QgbmV3bmFtZTsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBsY2hvd24obmFtZS0+cGF0aCwgb3duZXIsIGdyb3VwKTsKKwlpZiAocnZhbCA+PSAwIHx8IGVycm5vICE9IEVOQU1FVE9PTE9ORykKKwkJcmV0dXJuIHJ2YWw7CisJc2VwYXJhdGVfcGF0aG5hbWUobmFtZSwgYnVmLCAmbmV3bmFtZSk7CisJaWYgKGNoZGlyKGJ1ZikgPT0gMCkgeworCQlydmFsID0gbGNob3duX3BhdGgoJm5ld25hbWUsIG93bmVyLCBncm91cCk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IGxpbmtfcGF0aChwYXRobmFtZV90ICogbmFtZTEsIHBhdGhuYW1lX3QgKiBuYW1lMikKK3sKKwljaGFyIGJ1ZjFbTUFYTkFNRUxFTl07CisJY2hhciBidWYyW01BWE5BTUVMRU5dOworCWludCBkb3duMTsKKwlwYXRobmFtZV90IG5ld25hbWUxOworCXBhdGhuYW1lX3QgbmV3bmFtZTI7CisJaW50IHJ2YWw7CisKKwlydmFsID0gbGluayhuYW1lMS0+cGF0aCwgbmFtZTItPnBhdGgpOworCWlmIChydmFsID49IDAgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQorCQlyZXR1cm4gcnZhbDsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lMSwgYnVmMSwgJm5ld25hbWUxKTsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lMiwgYnVmMiwgJm5ld25hbWUyKTsKKwlpZiAoc3RyY21wKGJ1ZjEsIGJ1ZjIpID09IDApIHsKKwkJaWYgKGNoZGlyKGJ1ZjEpID09IDApIHsKKwkJCXJ2YWwgPSBsaW5rX3BhdGgoJm5ld25hbWUxLCAmbmV3bmFtZTIpOworCQkJY2hkaXIoIi4uIik7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoc3RyY21wKGJ1ZjEsICIuLiIpID09IDApCisJCQlkb3duMSA9IDA7CisJCWVsc2UgaWYgKHN0cmNtcChidWYyLCAiLi4iKSA9PSAwKQorCQkJZG93bjEgPSAxOworCQllbHNlIGlmIChzdHJsZW4oYnVmMSkgPT0gMCkKKwkJCWRvd24xID0gMDsKKwkJZWxzZSBpZiAoc3RybGVuKGJ1ZjIpID09IDApCisJCQlkb3duMSA9IDE7CisJCWVsc2UKKwkJCWRvd24xID0gTUFYKG5ld25hbWUxLmxlbiwgMyArIG5hbWUyLT5sZW4pIDw9CisJCQkgICAgTUFYKDMgKyBuYW1lMS0+bGVuLCBuZXduYW1lMi5sZW4pOworCQlpZiAoZG93bjEpIHsKKwkJCWZyZWVfcGF0aG5hbWUoJm5ld25hbWUyKTsKKwkJCWFwcGVuZF9wYXRobmFtZSgmbmV3bmFtZTIsICIuLi8iKTsKKwkJCWFwcGVuZF9wYXRobmFtZSgmbmV3bmFtZTIsIG5hbWUyLT5wYXRoKTsKKwkJCWlmIChjaGRpcihidWYxKSA9PSAwKSB7CisJCQkJcnZhbCA9IGxpbmtfcGF0aCgmbmV3bmFtZTEsICZuZXduYW1lMik7CisJCQkJY2hkaXIoIi4uIik7CisJCQl9CisJCX0gZWxzZSB7CisJCQlmcmVlX3BhdGhuYW1lKCZuZXduYW1lMSk7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUxLCAiLi4vIik7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUxLCBuYW1lMS0+cGF0aCk7CisJCQlpZiAoY2hkaXIoYnVmMikgPT0gMCkgeworCQkJCXJ2YWwgPSBsaW5rX3BhdGgoJm5ld25hbWUxLCAmbmV3bmFtZTIpOworCQkJCWNoZGlyKCIuLiIpOworCQkJfQorCQl9CisJfQorCWZyZWVfcGF0aG5hbWUoJm5ld25hbWUxKTsKKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lMik7CisJcmV0dXJuIHJ2YWw7Cit9CisKK2ludCBsc3RhdDY0X3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIHN0cnVjdCBzdGF0NjQgKnNidWYpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJcnZhbCA9IGxzdGF0NjQobmFtZS0+cGF0aCwgc2J1Zik7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IGxzdGF0NjRfcGF0aCgmbmV3bmFtZSwgc2J1Zik7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKwordm9pZCBtYWtlX2ZyZXFfdGFibGUodm9pZCkKK3sKKwlpbnQgZjsKKwlpbnQgaTsKKwlvcGRlc2NfdCAqcDsKKworCWZvciAocCA9IG9wcywgZiA9IDA7IHAgPCBvcHNfZW5kOyBwKyspCisJCWYgKz0gcC0+ZnJlcTsKKwlmcmVxX3RhYmxlID0gbWFsbG9jKGYgKiBzaXplb2YoKmZyZXFfdGFibGUpKTsKKwlmcmVxX3RhYmxlX3NpemUgPSBmOworCWZvciAocCA9IG9wcywgaSA9IDA7IHAgPCBvcHNfZW5kOyBwKyspIHsKKwkJZm9yIChmID0gMDsgZiA8IHAtPmZyZXE7IGYrKywgaSsrKQorCQkJZnJlcV90YWJsZVtpXSA9IHAtPm9wOworCX0KK30KKworaW50IG1rZGlyX3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIG1vZGVfdCBtb2RlKQoreworCWNoYXIgYnVmW01BWE5BTUVMRU5dOworCXBhdGhuYW1lX3QgbmV3bmFtZTsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBta2RpcihuYW1lLT5wYXRoLCBtb2RlKTsKKwlpZiAocnZhbCA+PSAwIHx8IGVycm5vICE9IEVOQU1FVE9PTE9ORykKKwkJcmV0dXJuIHJ2YWw7CisJc2VwYXJhdGVfcGF0aG5hbWUobmFtZSwgYnVmLCAmbmV3bmFtZSk7CisJaWYgKGNoZGlyKGJ1ZikgPT0gMCkgeworCQlydmFsID0gbWtkaXJfcGF0aCgmbmV3bmFtZSwgbW9kZSk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IG1rbm9kX3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJcnZhbCA9IG1rbm9kKG5hbWUtPnBhdGgsIG1vZGUsIGRldik7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IG1rbm9kX3BhdGgoJm5ld25hbWUsIG1vZGUsIGRldik7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKwordm9pZCBuYW1lcmFuZHBhZChpbnQgaWQsIGNoYXIgKmJ1ZiwgaW50IGkpCit7CisJaW50IGJ1Y2tldDsKKwlzdGF0aWMgaW50IGJ1Y2tldHNbXSA9IHsgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4LCBNQVhOQU1FTEVOIC0gMSB9OworCWludCBwYWRsZW47CisJaW50IHBhZG1vZDsKKworCWlmIChuYW1lcmFuZCA9PSAwKQorCQlyZXR1cm47CisJYnVja2V0ID0gKGlkIF4gbmFtZXJhbmQpICUgKHNpemVvZihidWNrZXRzKSAvIHNpemVvZihidWNrZXRzWzBdKSk7CisJcGFkbW9kID0gYnVja2V0c1tidWNrZXRdICsgMSAtIGk7CisJaWYgKHBhZG1vZCA8PSAwKQorCQlyZXR1cm47CisJcGFkbGVuID0gKGlkIF4gbmFtZXJhbmQpICUgcGFkbW9kOworCWlmIChwYWRsZW4pIHsKKwkJbWVtc2V0KCZidWZbaV0sICdYJywgcGFkbGVuKTsKKwkJYnVmW2kgKyBwYWRsZW5dID0gJ1wwJzsKKwl9Cit9CisKK2ludCBvcGVuX3BhdGgocGF0aG5hbWVfdCAqIG5hbWUsIGludCBvZmxhZykKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlwYXRobmFtZV90IG5ld25hbWU7CisJaW50IHJ2YWw7CisKKwlydmFsID0gb3BlbihuYW1lLT5wYXRoLCBvZmxhZyk7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IG9wZW5fcGF0aCgmbmV3bmFtZSwgb2ZsYWcpOworCQljaGRpcigiLi4iKTsKKwl9CisJZnJlZV9wYXRobmFtZSgmbmV3bmFtZSk7CisJcmV0dXJuIHJ2YWw7Cit9CisKK0RJUiAqb3BlbmRpcl9wYXRoKHBhdGhuYW1lX3QgKiBuYW1lKQoreworCWNoYXIgYnVmW01BWE5BTUVMRU5dOworCXBhdGhuYW1lX3QgbmV3bmFtZTsKKwlESVIgKnJ2YWw7CisKKwlydmFsID0gb3BlbmRpcihuYW1lLT5wYXRoKTsKKwlpZiAocnZhbCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IG9wZW5kaXJfcGF0aCgmbmV3bmFtZSk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKwordm9pZCBwcm9jZXNzX2ZyZXEoY2hhciAqYXJnKQoreworCW9wZGVzY190ICpwOworCWNoYXIgKnM7CisKKwlzID0gc3RyY2hyKGFyZywgJz0nKTsKKwlpZiAocyA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCAiYmFkIGFyZ3VtZW50ICclcydcbiIsIGFyZyk7CisJCWV4aXQoMSk7CisJfQorCSpzKysgPSAnXDAnOworCWZvciAocCA9IG9wczsgcCA8IG9wc19lbmQ7IHArKykgeworCQlpZiAoc3RyY21wKGFyZywgcC0+bmFtZSkgPT0gMCkgeworCQkJcC0+ZnJlcSA9IGF0b2kocyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisJZnByaW50ZihzdGRlcnIsICJjYW4ndCBmaW5kIG9wIHR5cGUgJXMgZm9yIC1mXG4iLCBhcmcpOworCWV4aXQoMSk7Cit9CisKK2ludCByZWFkbGlua19wYXRoKHBhdGhuYW1lX3QgKiBuYW1lLCBjaGFyICpsYnVmLCBzaXplX3QgbGJ1ZnNpeikKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlwYXRobmFtZV90IG5ld25hbWU7CisJaW50IHJ2YWw7CisKKwlydmFsID0gcmVhZGxpbmsobmFtZS0+cGF0aCwgbGJ1ZiwgbGJ1ZnNpeik7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUsIGJ1ZiwgJm5ld25hbWUpOworCWlmIChjaGRpcihidWYpID09IDApIHsKKwkJcnZhbCA9IHJlYWRsaW5rX3BhdGgoJm5ld25hbWUsIGxidWYsIGxidWZzaXopOworCQljaGRpcigiLi4iKTsKKwl9CisJZnJlZV9wYXRobmFtZSgmbmV3bmFtZSk7CisJcmV0dXJuIHJ2YWw7Cit9CisKK2ludCByZW5hbWVfcGF0aChwYXRobmFtZV90ICogbmFtZTEsIHBhdGhuYW1lX3QgKiBuYW1lMikKK3sKKwljaGFyIGJ1ZjFbTUFYTkFNRUxFTl07CisJY2hhciBidWYyW01BWE5BTUVMRU5dOworCWludCBkb3duMTsKKwlwYXRobmFtZV90IG5ld25hbWUxOworCXBhdGhuYW1lX3QgbmV3bmFtZTI7CisJaW50IHJ2YWw7CisKKwlydmFsID0gcmVuYW1lKG5hbWUxLT5wYXRoLCBuYW1lMi0+cGF0aCk7CisJaWYgKHJ2YWwgPj0gMCB8fCBlcnJubyAhPSBFTkFNRVRPT0xPTkcpCisJCXJldHVybiBydmFsOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUxLCBidWYxLCAmbmV3bmFtZTEpOworCXNlcGFyYXRlX3BhdGhuYW1lKG5hbWUyLCBidWYyLCAmbmV3bmFtZTIpOworCWlmIChzdHJjbXAoYnVmMSwgYnVmMikgPT0gMCkgeworCQlpZiAoY2hkaXIoYnVmMSkgPT0gMCkgeworCQkJcnZhbCA9IHJlbmFtZV9wYXRoKCZuZXduYW1lMSwgJm5ld25hbWUyKTsKKwkJCWNoZGlyKCIuLiIpOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKHN0cmNtcChidWYxLCAiLi4iKSA9PSAwKQorCQkJZG93bjEgPSAwOworCQllbHNlIGlmIChzdHJjbXAoYnVmMiwgIi4uIikgPT0gMCkKKwkJCWRvd24xID0gMTsKKwkJZWxzZSBpZiAoc3RybGVuKGJ1ZjEpID09IDApCisJCQlkb3duMSA9IDA7CisJCWVsc2UgaWYgKHN0cmxlbihidWYyKSA9PSAwKQorCQkJZG93bjEgPSAxOworCQllbHNlCisJCQlkb3duMSA9IE1BWChuZXduYW1lMS5sZW4sIDMgKyBuYW1lMi0+bGVuKSA8PQorCQkJICAgIE1BWCgzICsgbmFtZTEtPmxlbiwgbmV3bmFtZTIubGVuKTsKKwkJaWYgKGRvd24xKSB7CisJCQlmcmVlX3BhdGhuYW1lKCZuZXduYW1lMik7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUyLCAiLi4vIik7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUyLCBuYW1lMi0+cGF0aCk7CisJCQlpZiAoY2hkaXIoYnVmMSkgPT0gMCkgeworCQkJCXJ2YWwgPSByZW5hbWVfcGF0aCgmbmV3bmFtZTEsICZuZXduYW1lMik7CisJCQkJY2hkaXIoIi4uIik7CisJCQl9CisJCX0gZWxzZSB7CisJCQlmcmVlX3BhdGhuYW1lKCZuZXduYW1lMSk7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUxLCAiLi4vIik7CisJCQlhcHBlbmRfcGF0aG5hbWUoJm5ld25hbWUxLCBuYW1lMS0+cGF0aCk7CisJCQlpZiAoY2hkaXIoYnVmMikgPT0gMCkgeworCQkJCXJ2YWwgPSByZW5hbWVfcGF0aCgmbmV3bmFtZTEsICZuZXduYW1lMik7CisJCQkJY2hkaXIoIi4uIik7CisJCQl9CisJCX0KKwl9CisJZnJlZV9wYXRobmFtZSgmbmV3bmFtZTEpOworCWZyZWVfcGF0aG5hbWUoJm5ld25hbWUyKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IHJtZGlyX3BhdGgocGF0aG5hbWVfdCAqIG5hbWUpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJcnZhbCA9IHJtZGlyKG5hbWUtPnBhdGgpOworCWlmIChydmFsID49IDAgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQorCQlyZXR1cm4gcnZhbDsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lLCBidWYsICZuZXduYW1lKTsKKwlpZiAoY2hkaXIoYnVmKSA9PSAwKSB7CisJCXJ2YWwgPSBybWRpcl9wYXRoKCZuZXduYW1lKTsKKwkJY2hkaXIoIi4uIik7CisJfQorCWZyZWVfcGF0aG5hbWUoJm5ld25hbWUpOworCXJldHVybiBydmFsOworfQorCit2b2lkIHNlcGFyYXRlX3BhdGhuYW1lKHBhdGhuYW1lX3QgKiBuYW1lLCBjaGFyICpidWYsIHBhdGhuYW1lX3QgKiBuZXduYW1lKQoreworCWNoYXIgKnNsYXNoOworCisJaW5pdF9wYXRobmFtZShuZXduYW1lKTsKKwlzbGFzaCA9IHN0cmNocihuYW1lLT5wYXRoLCAnLycpOworCWlmIChzbGFzaCA9PSBOVUxMKSB7CisJCWJ1ZlswXSA9ICdcMCc7CisJCXJldHVybjsKKwl9CisJKnNsYXNoID0gJ1wwJzsKKwlzdHJjcHkoYnVmLCBuYW1lLT5wYXRoKTsKKwkqc2xhc2ggPSAnLyc7CisJYXBwZW5kX3BhdGhuYW1lKG5ld25hbWUsIHNsYXNoICsgMSk7Cit9CisKKyNkZWZpbmUgV0lEVEggODAKKwordm9pZCBzaG93X29wcyhpbnQgZmxhZywgY2hhciAqbGVhZF9zdHIpCit7CisJb3BkZXNjX3QgKnA7CisKKwlpZiAoZmxhZyA8IDApIHsKKwkJLyogcHJpbnQgaW4gbGlzdCBmb3JtICovCisJCWludCB4ID0gV0lEVEg7CisKKwkJZm9yIChwID0gb3BzOyBwIDwgb3BzX2VuZDsgcCsrKSB7CisJCQlpZiAobGVhZF9zdHIgIT0gTlVMTAorCQkJICAgICYmIHggKyBzdHJsZW4ocC0+bmFtZSkgPj0gV0lEVEggLSA1KQorCQkJCXggPSBwcmludGYoIiVzJXMiLCAocCA9PSBvcHMpID8gIiIgOiAiXG4iLAorCQkJCQkgICBsZWFkX3N0cik7CisJCQl4ICs9IHByaW50ZigiJXMgIiwgcC0+bmFtZSk7CisJCX0KKwkJcHJpbnRmKCJcbiIpOworCX0gZWxzZSB7CisJCWludCBmOworCQlmb3IgKGYgPSAwLCBwID0gb3BzOyBwIDwgb3BzX2VuZDsgcCsrKQorCQkJZiArPSBwLT5mcmVxOworCisJCWlmIChmID09IDApCisJCQlmbGFnID0gMTsKKworCQlmb3IgKHAgPSBvcHM7IHAgPCBvcHNfZW5kOyBwKyspIHsKKwkJCWlmIChmbGFnICE9IDAgfHwgcC0+ZnJlcSA+IDApIHsKKwkJCQlpZiAobGVhZF9zdHIgIT0gTlVMTCkKKwkJCQkJcHJpbnRmKCIlcyIsIGxlYWRfc3RyKTsKKwkJCQlwcmludGYoIiUyMHMgJWQvJWQgJXNcbiIsCisJCQkJICAgICAgIHAtPm5hbWUsIHAtPmZyZXEsIGYsCisJCQkJICAgICAgIChwLT5pc3dyaXRlID09IDApID8gIiAiIDogIndyaXRlIG9wIik7CisJCQl9CisJCX0KKwl9Cit9CisKK2ludCBzdGF0NjRfcGF0aChwYXRobmFtZV90ICogbmFtZSwgc3RydWN0IHN0YXQ2NCAqc2J1ZikKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlwYXRobmFtZV90IG5ld25hbWU7CisJaW50IHJ2YWw7CisKKwlydmFsID0gc3RhdDY0KG5hbWUtPnBhdGgsIHNidWYpOworCWlmIChydmFsID49IDAgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQorCQlyZXR1cm4gcnZhbDsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lLCBidWYsICZuZXduYW1lKTsKKwlpZiAoY2hkaXIoYnVmKSA9PSAwKSB7CisJCXJ2YWwgPSBzdGF0NjRfcGF0aCgmbmV3bmFtZSwgc2J1Zik7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IHN5bWxpbmtfcGF0aChjb25zdCBjaGFyICpuYW1lMSwgcGF0aG5hbWVfdCAqIG5hbWUpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJaWYgKCFzdHJjbXAobmFtZTEsIG5hbWUtPnBhdGgpKSB7CisJCXByaW50ZigieWlrZXMhICVzICVzXG4iLCBuYW1lMSwgbmFtZS0+cGF0aCk7CisJCXJldHVybiAwOworCX0KKworCXJ2YWwgPSBzeW1saW5rKG5hbWUxLCBuYW1lLT5wYXRoKTsKKwlpZiAocnZhbCA+PSAwIHx8IGVycm5vICE9IEVOQU1FVE9PTE9ORykKKwkJcmV0dXJuIHJ2YWw7CisJc2VwYXJhdGVfcGF0aG5hbWUobmFtZSwgYnVmLCAmbmV3bmFtZSk7CisJaWYgKGNoZGlyKGJ1ZikgPT0gMCkgeworCQlydmFsID0gc3ltbGlua19wYXRoKG5hbWUxLCAmbmV3bmFtZSk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKworaW50IHRydW5jYXRlNjRfcGF0aChwYXRobmFtZV90ICogbmFtZSwgb2ZmNjRfdCBsZW5ndGgpCit7CisJY2hhciBidWZbTUFYTkFNRUxFTl07CisJcGF0aG5hbWVfdCBuZXduYW1lOworCWludCBydmFsOworCisJcnZhbCA9IHRydW5jYXRlNjQobmFtZS0+cGF0aCwgbGVuZ3RoKTsKKwlpZiAocnZhbCA+PSAwIHx8IGVycm5vICE9IEVOQU1FVE9PTE9ORykKKwkJcmV0dXJuIHJ2YWw7CisJc2VwYXJhdGVfcGF0aG5hbWUobmFtZSwgYnVmLCAmbmV3bmFtZSk7CisJaWYgKGNoZGlyKGJ1ZikgPT0gMCkgeworCQlydmFsID0gdHJ1bmNhdGU2NF9wYXRoKCZuZXduYW1lLCBsZW5ndGgpOworCQljaGRpcigiLi4iKTsKKwl9CisJZnJlZV9wYXRobmFtZSgmbmV3bmFtZSk7CisJcmV0dXJuIHJ2YWw7Cit9CisKK2ludCB1bmxpbmtfcGF0aChwYXRobmFtZV90ICogbmFtZSkKK3sKKwljaGFyIGJ1ZltNQVhOQU1FTEVOXTsKKwlwYXRobmFtZV90IG5ld25hbWU7CisJaW50IHJ2YWw7CisKKwlydmFsID0gdW5saW5rKG5hbWUtPnBhdGgpOworCWlmIChydmFsID49IDAgfHwgZXJybm8gIT0gRU5BTUVUT09MT05HKQorCQlyZXR1cm4gcnZhbDsKKwlzZXBhcmF0ZV9wYXRobmFtZShuYW1lLCBidWYsICZuZXduYW1lKTsKKwlpZiAoY2hkaXIoYnVmKSA9PSAwKSB7CisJCXJ2YWwgPSB1bmxpbmtfcGF0aCgmbmV3bmFtZSk7CisJCWNoZGlyKCIuLiIpOworCX0KKwlmcmVlX3BhdGhuYW1lKCZuZXduYW1lKTsKKwlyZXR1cm4gcnZhbDsKK30KKwordm9pZCB1c2FnZSh2b2lkKQoreworCXByaW50ZigiVXNhZ2U6ICVzIC1IICAgb3JcbiIsIG15cHJvZyk7CisJcHJpbnRmCisJICAgICgiICAgICAgICVzIFstY11bLWQgZGlyXVstZSBlcnJ0Z11bLWYgb3BfbmFtZT1mcmVxXVstbCBsb29wc11bLW4gbm9wc11cbiIsCisJICAgICBteXByb2cpOworCXByaW50ZigiICAgICAgICAgIFstcCBucHJvY11bLXIgbGVuXVstcyBzZWVkXVstdl1bLXddWy16XVstU11cbiIpOworCXByaW50Zigid2hlcmVcbiIpOworCXByaW50ZgorCSAgICAoIiAgIC1jICAgICAgICAgICAgICAgc3BlY2lmaWVzIG5vdCB0byByZW1vdmUgZmlsZXMoY2xlYW51cCkgYWZ0ZXIgZXhlY3V0aW9uXG4iKTsKKwlwcmludGYKKwkgICAgKCIgICAtZCBkaXIgICAgICAgICAgIHNwZWNpZmllcyB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIG9wZXJhdGlvbnNcbiIpOworCXByaW50ZigiICAgLWUgZXJydGcgICAgICAgICBzcGVjaWZpZXMgZXJyb3IgaW5qZWN0aW9uIHN0dWZmXG4iKTsKKwlwcmludGYKKwkgICAgKCIgICAtZiBvcF9uYW1lPWZyZXEgIGNoYW5nZXMgdGhlIGZyZXF1ZW5jeSBvZiBvcHRpb24gbmFtZSB0byBmcmVxXG4iKTsKKwlwcmludGYoIiAgICAgICAgICAgICAgICAgICAgdGhlIHZhbGlkIG9wZXJhdGlvbiBuYW1lcyBhcmU6XG4iKTsKKwlzaG93X29wcygtMSwgIiAgICAgICAgICAgICAgICAgICAgICAgICIpOworCXByaW50ZgorCSAgICAoIiAgIC1sIGxvb3BzICAgICAgICAgc3BlY2lmaWVzIHRoZSBuby4gb2YgdGltZXMgdGhlIHRlc3RydW4gc2hvdWxkIGxvb3AuXG4iKTsKKwlwcmludGYoIiAgICAgICAgICAgICAgICAgICAgICp1c2UgMCBmb3IgaW5maW5pdGUgKGRlZmF1bHQgMSlcbiIpOworCXByaW50ZgorCSAgICAoIiAgIC1uIG5vcHMgICAgICAgICAgc3BlY2lmaWVzIHRoZSBuby4gb2Ygb3BlcmF0aW9ucyBwZXIgcHJvY2VzcyAoZGVmYXVsdCAxKVxuIik7CisJcHJpbnRmCisJICAgICgiICAgLXAgbnByb2MgICAgICAgICBzcGVjaWZpZXMgdGhlIG5vLiBvZiBwcm9jZXNzZXMgKGRlZmF1bHQgMSlcbiIpOworCXByaW50ZigiICAgLXIgICAgICAgICAgICAgICBzcGVjaWZpZXMgcmFuZG9tIG5hbWUgcGFkZGluZ1xuIik7CisJcHJpbnRmCisJICAgICgiICAgLXMgc2VlZCAgICAgICAgICBzcGVjaWZpZXMgdGhlIHNlZWQgZm9yIHRoZSByYW5kb20gZ2VuZXJhdG9yIChkZWZhdWx0IHJhbmRvbSlcbiIpOworCXByaW50ZigiICAgLXYgICAgICAgICAgICAgICBzcGVjaWZpZXMgdmVyYm9zZSBtb2RlXG4iKTsKKwlwcmludGYKKwkgICAgKCIgICAtdyAgICAgICAgICAgICAgIHplcm9zIGZyZXF1ZW5jaWVzIG9mIG5vbi13cml0ZSBvcGVyYXRpb25zXG4iKTsKKwlwcmludGYoIiAgIC16ICAgICAgICAgICAgICAgemVyb3MgZnJlcXVlbmNpZXMgb2YgYWxsIG9wZXJhdGlvbnNcbiIpOworCXByaW50ZgorCSAgICAoIiAgIC1TICAgICAgICAgICAgICAgcHJpbnRzIHRoZSB0YWJsZSBvZiBvcGVyYXRpb25zIChvbWl0dGluZyB6ZXJvIGZyZXF1ZW5jeSlcbiIpOworCXByaW50ZigiICAgLUggICAgICAgICAgICAgICBwcmludHMgdXNhZ2UgYW5kIGV4aXRzXG4iKTsKKwlwcmludGYKKwkgICAgKCIgICAtWCAgICAgICAgICAgICAgIGRvbid0IGRvIGFueXRoaW5nIFhGUyBzcGVjaWZpYyAoZGVmYXVsdCB3aXRoIC1ETk9fWEZTKVxuIik7Cit9CisKK3ZvaWQgd3JpdGVfZnJlcSh2b2lkKQoreworCW9wZGVzY190ICpwOworCisJZm9yIChwID0gb3BzOyBwIDwgb3BzX2VuZDsgcCsrKSB7CisJCWlmICghcC0+aXN3cml0ZSkKKwkJCXAtPmZyZXEgPSAwOworCX0KK30KKwordm9pZCB6ZXJvX2ZyZXEodm9pZCkKK3sKKwlvcGRlc2NfdCAqcDsKKworCWZvciAocCA9IG9wczsgcCA8IG9wc19lbmQ7IHArKykKKwkJcC0+ZnJlcSA9IDA7Cit9CisKKyNpZm5kZWYgTk9fWEZTCisKK3ZvaWQgYWxsb2NzcF9mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWludCBmZDsKKwlzdHJ1Y3QgeGZzX2Zsb2NrNjQgZmw7CisJX19zNjQgbHI7CisJX19zNjQgb2ZmOworCXN0cnVjdCBzdGF0NjQgc3RiOworCWludCB2OworCisJaW5pdF9wYXRobmFtZSgmZik7CisJaWYgKCFnZXRfZm5hbWUoRlRfUkVHRklMRSwgciwgJmYsIE5VTEwsIE5VTEwsICZ2KSkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGFsbG9jc3AgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBvcGVuX3BhdGgoJmYsIE9fUkRXUik7CisJZSA9IGZkIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZmQgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogYWxsb2NzcCAtIG9wZW4gJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJaWYgKGZzdGF0NjQoZmQsICZzdGIpIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGFsbG9jc3AgLSBmc3RhdDY0ICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZXJybm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm47CisJfQorCWxyID0gKChfX3M2NCkgcmFuZG9tKCkgPDwgMzIpICsgcmFuZG9tKCk7CisJb2ZmID0gbHIgJSBNSU4oc3RiLnN0X3NpemUgKyAoMTAyNCAqIDEwMjQpLCBNQVhGU0laRSk7CisJb2ZmICU9IG1heGZzaXplOworCW1lbXNldCgmZmwsIDAsIHNpemVvZihmbCkpOworCWZsLmxfd2hlbmNlID0gU0VFS19TRVQ7CisJZmwubF9zdGFydCA9IG9mZjsKKwlmbC5sX2xlbiA9IDA7CisJZSA9IGlvY3RsKGZkLCBYRlNfSU9DX0FMTE9DU1A2NCwgJmZsKSA8IDAgPyBlcnJubyA6IDA7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IGlvY3RsKFhGU19JT0NfQUxMT0NTUDY0KSAlcyAlbGxkIDAgJWRcbiIsCisJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgKGxvbmcgbG9uZylvZmYsIGUpOworCWZyZWVfcGF0aG5hbWUoJmYpOworCWNsb3NlKGZkKTsKK30KKwordm9pZCBhdHRyX3JlbW92ZV9mKGludCBvcG5vLCBsb25nIHIpCit7CisJYXR0cmxpc3RfZW50X3QgKmFlcDsKKwlhdHRybGlzdF90ICphbGlzdDsKKwljaGFyICphbmFtZTsKKwljaGFyIGJ1Zls0MDk2XTsKKwlhdHRybGlzdF9jdXJzb3JfdCBjdXJzb3I7CisJaW50IGU7CisJaW50IGVudDsKKwlwYXRobmFtZV90IGY7CisJaW50IHRvdGFsOworCWludCB2OworCWludCB3aGljaDsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX0FOWW0sIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpCisJCWFwcGVuZF9wYXRobmFtZSgmZiwgIi4iKTsKKwl0b3RhbCA9IDA7CisJbWVtc2V0KCZjdXJzb3IsIDB4MDAsIHNpemVvZihjdXJzb3IpKTsKKwlkbyB7CisJCWUgPSBhdHRyX2xpc3RfcGF0aCgmZiwgYnVmLCBzaXplb2YoYnVmKSwgQVRUUl9ET05URk9MTE9XLAorCQkJCSAgICZjdXJzb3IpOworCQljaGVja19jd2QoKTsKKwkJaWYgKGUpCisJCQlicmVhazsKKwkJYWxpc3QgPSAoYXR0cmxpc3RfdCAqKSBidWY7CisJCXRvdGFsICs9IGFsaXN0LT5hbF9jb3VudDsKKwl9IHdoaWxlIChhbGlzdC0+YWxfbW9yZSk7CisJaWYgKHRvdGFsID09IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiBhdHRyX3JlbW92ZSAtIG5vIGF0dHJzIGZvciAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCXdoaWNoID0gKGludCkocmFuZG9tKCkgJSB0b3RhbCk7CisJbWVtc2V0KCZjdXJzb3IsIDB4MDAsIHNpemVvZihjdXJzb3IpKTsKKwllbnQgPSAwOworCWFuYW1lID0gTlVMTDsKKwlkbyB7CisJCWUgPSBhdHRyX2xpc3RfcGF0aCgmZiwgYnVmLCBzaXplb2YoYnVmKSwgQVRUUl9ET05URk9MTE9XLAorCQkJCSAgICZjdXJzb3IpOworCQljaGVja19jd2QoKTsKKwkJaWYgKGUpCisJCQlicmVhazsKKwkJYWxpc3QgPSAoYXR0cmxpc3RfdCAqKSBidWY7CisJCWlmICh3aGljaCA8IGVudCArIGFsaXN0LT5hbF9jb3VudCkgeworCQkJYWVwID0gKGF0dHJsaXN0X2VudF90ICopCisJCQkgICAgJiBidWZbYWxpc3QtPmFsX29mZnNldFt3aGljaCAtIGVudF1dOworCQkJYW5hbWUgPSBhZXAtPmFfbmFtZTsKKwkJCWJyZWFrOworCQl9CisJCWVudCArPSBhbGlzdC0+YWxfY291bnQ7CisJfSB3aGlsZSAoYWxpc3QtPmFsX21vcmUpOworCWlmIChhbmFtZSA9PSBOVUxMKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogYXR0cl9yZW1vdmUgLSBuYW1lICVkIG5vdCBmb3VuZCBhdCAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIHdoaWNoLCBmLnBhdGgpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gYXR0cl9yZW1vdmVfcGF0aCgmZiwgYW5hbWUsIEFUVFJfRE9OVEZPTExPVykgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBhdHRyX3JlbW92ZSAlcyAlcyAlZFxuIiwKKwkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBhbmFtZSwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKK3ZvaWQgYXR0cl9zZXRfZihpbnQgb3BubywgbG9uZyByKQoreworCWNoYXIgYW5hbWVbMTBdOworCWNoYXIgKmF2YWw7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWludCBsZW47CisJc3RhdGljIGludCBsZW5ndGhzW10gPSB7IDEwLCAxMDAsIDEwMDAsIDEwMDAwIH07CisJaW50IGxpOworCWludCB2OworCisJaW5pdF9wYXRobmFtZSgmZik7CisJaWYgKCFnZXRfZm5hbWUoRlRfQU5ZbSwgciwgJmYsIE5VTEwsIE5VTEwsICZ2KSkKKwkJYXBwZW5kX3BhdGhuYW1lKCZmLCAiLiIpOworCXNwcmludGYoYW5hbWUsICJhJXgiLCBuYW1lc2VxKyspOworCWxpID0gKGludCkocmFuZG9tKCkgJSAoc2l6ZW9mKGxlbmd0aHMpIC8gc2l6ZW9mKGxlbmd0aHNbMF0pKSk7CisJbGVuID0gKGludCkocmFuZG9tKCkgJSBsZW5ndGhzW2xpXSk7CisJaWYgKGxlbiA9PSAwKQorCQlsZW4gPSAxOworCWF2YWwgPSBtYWxsb2MobGVuKTsKKwltZW1zZXQoYXZhbCwgbmFtZXNlcSAmIDB4ZmYsIGxlbik7CisJZSA9IGF0dHJfc2V0X3BhdGgoJmYsIGFuYW1lLCBhdmFsLCBsZW4sIEFUVFJfRE9OVEZPTExPVykgPCAwID8KKwkgICAgZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWZyZWUoYXZhbCk7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IGF0dHJfc2V0ICVzICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwKKwkJICAgICAgIGFuYW1lLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKwordm9pZCBidWxrc3RhdF9mKGludCBvcG5vLCBsb25nIHIpCit7CisJX19zMzIgY291bnQ7CisJaW50IGZkOworCV9fdTY0IGxhc3Q7CisJX19zMzIgbmVudDsKKwl4ZnNfYnN0YXRfdCAqdDsKKwlfX2ludDY0X3QgdG90YWw7CisJeGZzX2Zzb3BfYnVsa3JlcV90IGJzcjsKKworCWxhc3QgPSAwOworCW5lbnQgPSAociAlIDk5OSkgKyAyOworCXQgPSBtYWxsb2MobmVudCAqIHNpemVvZigqdCkpOworCWZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKwl0b3RhbCA9IDA7CisKKwltZW1zZXQoJmJzciwgMCwgc2l6ZW9mKGJzcikpOworCWJzci5sYXN0aXAgPSAmbGFzdDsKKwlic3IuaWNvdW50ID0gbmVudDsKKwlic3IudWJ1ZmZlciA9IHQ7CisJYnNyLm9jb3VudCA9ICZjb3VudDsKKworCXdoaWxlIChpb2N0bChmZCwgWEZTX0lPQ19GU0JVTEtTVEFULCAmYnNyKSA9PSAwICYmIGNvdW50ID4gMCkKKwkJdG90YWwgKz0gY291bnQ7CisJZnJlZSh0KTsKKwlpZiAodmVyYm9zZSkKKwkJcHJpbnRmKCIlZC8lZDogYnVsa3N0YXQgbmVudCAlZCB0b3RhbCAlbGxkXG4iLAorCQkgICAgICAgcHJvY2lkLCBvcG5vLCAoaW50KW5lbnQsIChsb25nIGxvbmcpdG90YWwpOworCWNsb3NlKGZkKTsKK30KKwordm9pZCBidWxrc3RhdDFfZihpbnQgb3BubywgbG9uZyByKQoreworCWludCBlOworCXBhdGhuYW1lX3QgZjsKKwlpbnQgZmQ7CisJaW50IGdvb2Q7CisJX191NjQgaW5vOworCXN0cnVjdCBzdGF0NjQgczsKKwl4ZnNfYnN0YXRfdCB0OworCWludCB2OworCXhmc19mc29wX2J1bGtyZXFfdCBic3I7CisKKwlnb29kID0gcmFuZG9tKCkgJiAxOworCWlmIChnb29kKSB7CisJCS8qIHVzZSBhbiBpbm9kZSB3ZSBrbm93IGV4aXN0cyAqLworCQlpbml0X3BhdGhuYW1lKCZmKTsKKwkJaWYgKCFnZXRfZm5hbWUoRlRfQU5ZbSwgciwgJmYsIE5VTEwsIE5VTEwsICZ2KSkKKwkJCWFwcGVuZF9wYXRobmFtZSgmZiwgIi4iKTsKKwkJaW5vID0gc3RhdDY0X3BhdGgoJmYsICZzKSA8IDAgPyAoaW5vNjRfdCkgciA6IHMuc3RfaW5vOworCQljaGVja19jd2QoKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogcGljayBhIHJhbmRvbSBpbm9kZQorCQkgKgorCQkgKiBub3RlIHRoaXMgY2FuIGdlbmVyYXRlIGtlcm5lbCB3YXJuaW5nIG1lc3NhZ2VzCisJCSAqIHNpbmNlIGJ1bGtzdGF0X29uZSB3aWxsIHJlYWQgdGhlIGRpc2sgYmxvY2sgdGhhdAorCQkgKiB3b3VsZCBjb250YWluIGEgZ2l2ZW4gaW5vZGUgZXZlbiBpZiB0aGF0IGRpc2sKKwkJICogYmxvY2sgZG9lc24ndCBjb250YWluIGlub2Rlcy4KKwkJICoKKwkJICogdGhpcyBpcyBkZXRlY3RlZCBsYXRlciwgYnV0IG5vdCB1bnRpbCBhZnRlciB0aGUKKwkJICogd2FybmluZyBpcyBkaXNwbGF5ZWQuCisJCSAqCisJCSAqICJYRlM6IGRldmljZSAweDgyNS0gYmFkIGlub2RlIG1hZ2ljL3ZzbiBkYWRkciAweDAgIzAiCisJCSAqCisJCSAqLworCQlpbm8gPSAoaW5vNjRfdCkgcjsKKwkJdiA9IHZlcmJvc2U7CisJfQorCWZkID0gb3BlbigiLiIsIE9fUkRPTkxZKTsKKworCW1lbXNldCgmYnNyLCAwLCBzaXplb2YoYnNyKSk7CisJYnNyLmxhc3RpcCA9ICZpbm87CisJYnNyLmljb3VudCA9IDE7CisJYnNyLnVidWZmZXIgPSAmdDsKKwlic3Iub2NvdW50ID0gTlVMTDsKKworCWUgPSBpb2N0bChmZCwgWEZTX0lPQ19GU0JVTEtTVEFUX1NJTkdMRSwgJmJzcikgPCAwID8gZXJybm8gOiAwOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBidWxrc3RhdDEgJXMgaW5vICVsbGQgJWRcbiIsCisJCSAgICAgICBwcm9jaWQsIG9wbm8sIGdvb2QgPyAicmVhbCIgOiAicmFuZG9tIiwKKwkJICAgICAgIChsb25nIGxvbmcpaW5vLCBlKTsKKwljbG9zZShmZCk7Cit9CisKKyNlbmRpZgorCit2b2lkIGNob3duX2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJaW50IG5iaXRzOworCXVpZF90IHU7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9BTlltLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKQorCQlhcHBlbmRfcGF0aG5hbWUoJmYsICIuIik7CisJdSA9ICh1aWRfdCkgcmFuZG9tKCk7CisJbmJpdHMgPSAoaW50KShyYW5kb20oKSAlIDMyKTsKKwl1ICY9ICgxIDw8IG5iaXRzKSAtIDE7CisJZSA9IGxjaG93bl9wYXRoKCZmLCB1LCAtMSkgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBjaG93biAlcyAlZCAlZFxuIiwgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIHUsIGUpOworCWZyZWVfcGF0aG5hbWUoJmYpOworfQorCit2b2lkIGNyZWF0X2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwlpbnQgZTsKKwlpbnQgZTE7CisJaW50IGV4dHNpemU7CisJcGF0aG5hbWVfdCBmOworCWludCBmZDsKKwlmZW50X3QgKmZlcDsKKwlpbnQgaWQ7CisJaW50IHBhcmlkOworCWludCB0eXBlOworCWludCB2OworCWludCB2MTsKKwlpbnQgZXN6ID0gMDsKKworCWlmICghZ2V0X2ZuYW1lKEZUX0RJUm0sIHIsIE5VTEwsIE5VTEwsICZmZXAsICZ2MSkpCisJCXBhcmlkID0gLTE7CisJZWxzZQorCQlwYXJpZCA9IGZlcC0+aWQ7CisJaW5pdF9wYXRobmFtZSgmZik7CisJdHlwZSA9IHJ0cGN0ID8gKChyYW5kb20oKSAlIDEwMCkgPiBydHBjdCA/IEZUX1JFRyA6IEZUX1JURikgOiBGVF9SRUc7CisJaWYgKHR5cGUgPT0gRlRfUlRGKQorCQlleHRzaXplID0gKHJhbmRvbSgpICUgMTApICsgMTsKKwllbHNlCisJCWV4dHNpemUgPSAwOworCWUgPSBnZW5lcmF0ZV9mbmFtZShmZXAsIHR5cGUsICZmLCAmaWQsICZ2KTsKKwl2IHw9IHYxOworCWlmICghZSkgeworCQlpZiAodikgeworCQkJZmVudF90b19uYW1lKCZmLCAmZmxpc3RbRlRfRElSXSwgZmVwKTsKKwkJCXByaW50ZigiJWQvJWQ6IGNyZWF0IC0gbm8gZmlsZW5hbWUgZnJvbSAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCk7CisJCX0KKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBjcmVhdF9wYXRoKCZmLCAwNjY2KTsKKwllID0gZmQgPCAwID8gZXJybm8gOiAwOworCWUxID0gMDsKKwljaGVja19jd2QoKTsKKwllc3ogPSAwOworCWlmIChmZCA+PSAwKSB7CisjaWZuZGVmIE5PX1hGUworCQlzdHJ1Y3QgZnN4YXR0ciBhOworCQltZW1zZXQoJmEsIDAsIHNpemVvZihhKSk7CisJCWlmIChleHRzaXplICYmIGlvY3RsKGZkLCBYRlNfSU9DX0ZTR0VUWEFUVFIsICZhKSA+PSAwKSB7CisJCQlhLmZzeF94ZmxhZ3MgfD0gWEZTX1hGTEFHX1JFQUxUSU1FOworCQkJYS5mc3hfZXh0c2l6ZSA9CisJCQkgICAgZ2VvbS5ydGV4dHNpemUgKiBnZW9tLmJsb2Nrc2l6ZSAqIGV4dHNpemU7CisJCQlpZiAoaW9jdGwoZmQsIFhGU19JT0NfRlNTRVRYQVRUUiwgJmEpIDwgMCkKKwkJCQllMSA9IGVycm5vOworCQkJZXN6ID0gYS5mc3hfZXh0c2l6ZTsKKworCQl9CisjZW5kaWYKKwkJYWRkX3RvX2ZsaXN0KHR5cGUsIGlkLCBwYXJpZCk7CisJCWNsb3NlKGZkKTsKKwl9CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IGNyZWF0ICVzIHg6JWQgJWQgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLAorCQkgICAgICAgZXN6LCBlLCBlMSk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKK2ludCBzZXRkaXJlY3QoaW50IGZkKQoreworCXN0YXRpYyBpbnQgbm9fZGlyZWN0OworCWludCBmbGFnczsKKworCWlmIChub19kaXJlY3QpCisJCXJldHVybiAwOworCisJZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGTCwgMCk7CisJaWYgKGZsYWdzIDwgMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZmNudGwoZmQsIEZfU0VURkwsIGZsYWdzIHwgT19ESVJFQ1QpIDwgMCkgeworCQlpZiAobm9feGZzKSB7CisJCQlub19kaXJlY3QgPSAxOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcHJpbnRmKCJjYW5ub3Qgc2V0IE9fRElSRUNUOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDE7Cit9CisKK3ZvaWQgZHJlYWRfZihpbnQgb3BubywgbG9uZyByKQoreworCV9faW50NjRfdCBhbGlnbjsKKwljaGFyICpidWYgPSBOVUxMOworCXN0cnVjdCBkaW9hdHRyIGRpb2I7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWludCBmZDsKKwlzaXplX3QgbGVuOworCV9faW50NjRfdCBscjsKKwlvZmY2NF90IG9mZjsKKwlzdHJ1Y3Qgc3RhdDY0IHN0YjsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX1JFR0ZJTEUsIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiBkcmVhZCAtIG5vIGZpbGVuYW1lXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlmZCA9IG9wZW5fcGF0aCgmZiwgT19SRE9OTFkpOworCisJZSA9IGZkIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZmQgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZHJlYWQgLSBvcGVuICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCisJaWYgKCFzZXRkaXJlY3QoZmQpKSB7CisJCWNsb3NlKGZkKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoZnN0YXQ2NChmZCwgJnN0YikgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZHJlYWQgLSBmc3RhdDY0ICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZXJybm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm47CisJfQorCWlmIChzdGIuc3Rfc2l6ZSA9PSAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZHJlYWQgLSAlcyB6ZXJvIHNpemVcbiIsIHByb2NpZCwgb3BubywKKwkJCSAgICAgICBmLnBhdGgpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm47CisJfQorCisJbWVtc2V0KCZkaW9iLCAwLCBzaXplb2YoZGlvYikpOworCWlmIChub194ZnMpIHsKKwkJZGlvYi5kX21pbmlvc3ogPSBzdGIuc3RfYmxrc2l6ZTsKKwkJZGlvYi5kX21heGlvc3ogPSBzdGIuc3RfYmxrc2l6ZSAqIDI1NjsJLyogZ29vZCBudW1iZXIgPyAqLworCQlkaW9iLmRfbWVtID0gc3RiLnN0X2Jsa3NpemU7CisJfQorI2lmbmRlZiBOT19YRlMKKwllbHNlIGlmIChpb2N0bChmZCwgWEZTX0lPQ19ESU9JTkZPLCAmZGlvYikgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmCisJCQkgICAgKCIlZC8lZDogZHJlYWQgLSBpb2N0bChmZCwgWEZTX0lPQ19ESU9JTkZPKSAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlcnJubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQljbG9zZShmZCk7CisJCXJldHVybjsKKwl9CisjZW5kaWYKKwlhbGlnbiA9IChfX2ludDY0X3QpIGRpb2IuZF9taW5pb3N6OworCWxyID0gKChfX2ludDY0X3QpIHJhbmRvbSgpIDw8IDMyKSArIHJhbmRvbSgpOworCW9mZiA9IChvZmY2NF90KSAobHIgJSBzdGIuc3Rfc2l6ZSk7CisJb2ZmIC09IChvZmYgJSBhbGlnbik7CisJbHNlZWs2NChmZCwgb2ZmLCBTRUVLX1NFVCk7CisJbGVuID0gKHJhbmRvbSgpICUgKGdldHBhZ2VzaXplKCkgKiAzMikpICsgMTsKKwlsZW4gLT0gKGxlbiAlIGFsaWduKTsKKwlpZiAobGVuIDw9IDApCisJCWxlbiA9IGFsaWduOworCWVsc2UgaWYgKGxlbiA+IGRpb2IuZF9tYXhpb3N6KQorCQlsZW4gPSBkaW9iLmRfbWF4aW9zejsKKwlpZiAoKGUgPSBwb3NpeF9tZW1hbGlnbigodm9pZCAqKikmYnVmLCBkaW9iLmRfbWVtLCBsZW4pKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAicG9zaXhfbWVtYWxpZ246ICVzXG4iLCBzdHJlcnJvcihlKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChidWYgPT0gTlVMTCkgeworCQlmcHJpbnRmKHN0ZGVyciwgInBvc2l4X21lbWFsaWduOiBidWYgaXMgTlVMTFxuIik7CisJCWV4aXQoMSk7CisJfQorCWUgPSByZWFkKGZkLCBidWYsIGxlbikgPCAwID8gZXJybm8gOiAwOworCWZyZWUoYnVmKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogZHJlYWQgJXMgWyVsbGQsJWxkXSAlZFxuIiwKKwkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCAobG9uZyBsb25nIGludClvZmYsIChsb25nKWxlbiwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7CisJY2xvc2UoZmQpOworfQorCit2b2lkIGR3cml0ZV9mKGludCBvcG5vLCBsb25nIHIpCit7CisJX19pbnQ2NF90IGFsaWduOworCWNoYXIgKmJ1ZiA9IE5VTEw7CisJc3RydWN0IGRpb2F0dHIgZGlvYjsKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJaW50IGZkOworCXNpemVfdCBsZW47CisJX19pbnQ2NF90IGxyOworCW9mZjY0X3Qgb2ZmOworCXN0cnVjdCBzdGF0NjQgc3RiOworCWludCB2OworCisJaW5pdF9wYXRobmFtZSgmZik7CisJaWYgKCFnZXRfZm5hbWUoRlRfUkVHRklMRSwgciwgJmYsIE5VTEwsIE5VTEwsICZ2KSkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGR3cml0ZSAtIG5vIGZpbGVuYW1lXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlmZCA9IG9wZW5fcGF0aCgmZiwgT19XUk9OTFkpOworCWUgPSBmZCA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGZkIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGR3cml0ZSAtIG9wZW4gJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIXNldGRpcmVjdChmZCkpIHsKKwkJY2xvc2UoZmQpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoZnN0YXQ2NChmZCwgJnN0YikgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZHdyaXRlIC0gZnN0YXQ2NCAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGVycm5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuOworCX0KKwltZW1zZXQoJmRpb2IsIDAsIHNpemVvZihkaW9iKSk7CisJaWYgKG5vX3hmcykgeworCQlkaW9iLmRfbWluaW9zeiA9IHN0Yi5zdF9ibGtzaXplOworCQlkaW9iLmRfbWF4aW9zeiA9IHN0Yi5zdF9ibGtzaXplICogMjU2OwkvKiBnb29kIG51bWJlciA/ICovCisJCWRpb2IuZF9tZW0gPSBzdGIuc3RfYmxrc2l6ZTsKKwl9CisjaWZuZGVmIE5PX1hGUworCWVsc2UgaWYgKGlvY3RsKGZkLCBYRlNfSU9DX0RJT0lORk8sICZkaW9iKSA8IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYKKwkJCSAgICAoIiVkLyVkOiBkd3JpdGUgLSBpb2N0bChmZCwgWEZTX0lPQ19ESU9JTkZPKSAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlcnJubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQljbG9zZShmZCk7CisJCXJldHVybjsKKwl9CisjZW5kaWYKKwlhbGlnbiA9IChfX2ludDY0X3QpIGRpb2IuZF9taW5pb3N6OworCWxyID0gKChfX2ludDY0X3QpIHJhbmRvbSgpIDw8IDMyKSArIHJhbmRvbSgpOworCW9mZiA9IChvZmY2NF90KSAobHIgJSBNSU4oc3RiLnN0X3NpemUgKyAoMTAyNCAqIDEwMjQpLCBNQVhGU0laRSkpOworCW9mZiAtPSAob2ZmICUgYWxpZ24pOworCWxzZWVrNjQoZmQsIG9mZiwgU0VFS19TRVQpOworCWxlbiA9IChyYW5kb20oKSAlIChnZXRwYWdlc2l6ZSgpICogMzIpKSArIDE7CisJbGVuIC09IChsZW4gJSBhbGlnbik7CisJaWYgKGxlbiA8PSAwKQorCQlsZW4gPSBhbGlnbjsKKwllbHNlIGlmIChsZW4gPiBkaW9iLmRfbWF4aW9zeikKKwkJbGVuID0gZGlvYi5kX21heGlvc3o7CisJaWYgKChlID0gcG9zaXhfbWVtYWxpZ24oKHZvaWQgKiopJmJ1ZiwgZGlvYi5kX21lbSwgbGVuKSkgIT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgInBvc2l4X21lbWFsaWduOiAlc1xuIiwgc3RyZXJyb3IoZSkpOworCQlleGl0KDEpOworCX0KKwlpZiAoYnVmID09IE5VTEwpIHsKKwkJZnByaW50ZihzdGRlcnIsICJwb3NpeF9tZW1hbGlnbjogYnVmIGlzIE5VTExcbiIpOworCQlleGl0KDEpOworCX0KKwlvZmYgJT0gbWF4ZnNpemU7CisJbHNlZWs2NChmZCwgb2ZmLCBTRUVLX1NFVCk7CisJbWVtc2V0KGJ1ZiwgbmFtZXNlcSAmIDB4ZmYsIGxlbik7CisJZSA9IHdyaXRlKGZkLCBidWYsIGxlbikgPCAwID8gZXJybm8gOiAwOworCWZyZWUoYnVmKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogZHdyaXRlICVzIFslbGxkLCVsZF0gJWRcbiIsCisJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgKGxvbmcgbG9uZylvZmYsIChsb25nIGludClsZW4sIGUpOworCWZyZWVfcGF0aG5hbWUoJmYpOworCWNsb3NlKGZkKTsKK30KKwordm9pZCBmZGF0YXN5bmNfZihpbnQgb3BubywgbG9uZyByKQoreworCWludCBlOworCXBhdGhuYW1lX3QgZjsKKwlpbnQgZmQ7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9SRUdGSUxFLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZmRhdGFzeW5jIC0gbm8gZmlsZW5hbWVcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBvcGVuX3BhdGgoJmYsIE9fV1JPTkxZKTsKKwllID0gZmQgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmIChmZCA8IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiBmZGF0YXN5bmMgLSBvcGVuICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWUgPSBmZGF0YXN5bmMoZmQpIDwgMCA/IGVycm5vIDogMDsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogZmRhdGFzeW5jICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7CisJY2xvc2UoZmQpOworfQorCisjaWZuZGVmIE5PX1hGUwordm9pZCBmcmVlc3BfZihpbnQgb3BubywgbG9uZyByKQoreworCWludCBlOworCXBhdGhuYW1lX3QgZjsKKwlpbnQgZmQ7CisJc3RydWN0IHhmc19mbG9jazY0IGZsOworCV9fczY0IGxyOworCV9fczY0IG9mZjsKKwlzdHJ1Y3Qgc3RhdDY0IHN0YjsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX1JFR0ZJTEUsIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiBmcmVlc3AgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBvcGVuX3BhdGgoJmYsIE9fUkRXUik7CisJZSA9IGZkIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZmQgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZnJlZXNwIC0gb3BlbiAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGUpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoZnN0YXQ2NChmZCwgJnN0YikgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogZnJlZXNwIC0gZnN0YXQ2NCAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGVycm5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuOworCX0KKwlsciA9ICgoX19zNjQpIHJhbmRvbSgpIDw8IDMyKSArIHJhbmRvbSgpOworCW9mZiA9IGxyICUgTUlOKHN0Yi5zdF9zaXplICsgKDEwMjQgKiAxMDI0KSwgTUFYRlNJWkUpOworCW9mZiAlPSBtYXhmc2l6ZTsKKwltZW1zZXQoJmZsLCAwLCBzaXplb2YoZmwpKTsKKwlmbC5sX3doZW5jZSA9IFNFRUtfU0VUOworCWZsLmxfc3RhcnQgPSBvZmY7CisJZmwubF9sZW4gPSAwOworCWUgPSBpb2N0bChmZCwgWEZTX0lPQ19GUkVFU1A2NCwgJmZsKSA8IDAgPyBlcnJubyA6IDA7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IGlvY3RsKFhGU19JT0NfRlJFRVNQNjQpICVzICVsbGQgMCAlZFxuIiwKKwkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCAobG9uZyBsb25nKW9mZiwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7CisJY2xvc2UoZmQpOworfQorCisjZW5kaWYKKwordm9pZCBmc3luY19mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWludCBmZDsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX1JFR0ZJTEUsIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiBmc3luYyAtIG5vIGZpbGVuYW1lXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlmZCA9IG9wZW5fcGF0aCgmZiwgT19XUk9OTFkpOworCWUgPSBmZCA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGZkIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGZzeW5jIC0gb3BlbiAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGUpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gZnN5bmMoZmQpIDwgMCA/IGVycm5vIDogMDsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogZnN5bmMgJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKKwljbG9zZShmZCk7Cit9CisKK3ZvaWQgZ2V0ZGVudHNfZihpbnQgb3BubywgbG9uZyByKQoreworCURJUiAqZGlyOworCXBhdGhuYW1lX3QgZjsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX0RJUm0sIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpCisJCWFwcGVuZF9wYXRobmFtZSgmZiwgIi4iKTsKKwlkaXIgPSBvcGVuZGlyX3BhdGgoJmYpOworCWNoZWNrX2N3ZCgpOworCWlmIChkaXIgPT0gTlVMTCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IGdldGRlbnRzIC0gY2FuJ3Qgb3BlbiAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCXdoaWxlIChyZWFkZGlyNjQoZGlyKSAhPSBOVUxMKQorCQljb250aW51ZTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogZ2V0ZGVudHMgJXMgMFxuIiwgcHJvY2lkLCBvcG5vLCBmLnBhdGgpOworCWZyZWVfcGF0aG5hbWUoJmYpOworCWNsb3NlZGlyKGRpcik7Cit9CisKK3ZvaWQgbGlua19mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWZlbnRfdCAqZmVwOworCWZsaXN0X3QgKmZscDsKKwlpbnQgaWQ7CisJcGF0aG5hbWVfdCBsOworCWludCBwYXJpZDsKKwlpbnQgdjsKKwlpbnQgdjE7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9OT1RESVIsIHIsICZmLCAmZmxwLCBOVUxMLCAmdjEpKSB7CisJCWlmICh2MSkKKwkJCXByaW50ZigiJWQvJWQ6IGxpbmsgLSBubyBmaWxlXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoIWdldF9mbmFtZShGVF9ESVJtLCByYW5kb20oKSwgTlVMTCwgTlVMTCwgJmZlcCwgJnYpKQorCQlwYXJpZCA9IC0xOworCWVsc2UKKwkJcGFyaWQgPSBmZXAtPmlkOworCXYgfD0gdjE7CisJaW5pdF9wYXRobmFtZSgmbCk7CisJZSA9IGdlbmVyYXRlX2ZuYW1lKGZlcCwgZmxwIC0gZmxpc3QsICZsLCAmaWQsICZ2MSk7CisJdiB8PSB2MTsKKwlpZiAoIWUpIHsKKwkJaWYgKHYpIHsKKwkJCWZlbnRfdG9fbmFtZSgmbCwgJmZsaXN0W0ZUX0RJUl0sIGZlcCk7CisJCQlwcmludGYoIiVkLyVkOiBsaW5rIC0gbm8gZmlsZW5hbWUgZnJvbSAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGwucGF0aCk7CisJCX0KKwkJZnJlZV9wYXRobmFtZSgmbCk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWUgPSBsaW5rX3BhdGgoJmYsICZsKSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGUgPT0gMCkKKwkJYWRkX3RvX2ZsaXN0KGZscCAtIGZsaXN0LCBpZCwgcGFyaWQpOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBsaW5rICVzICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwgbC5wYXRoLAorCQkgICAgICAgZSk7CisJZnJlZV9wYXRobmFtZSgmbCk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKK3ZvaWQgbWtkaXJfZihpbnQgb3BubywgbG9uZyByKQoreworCWludCBlOworCXBhdGhuYW1lX3QgZjsKKwlmZW50X3QgKmZlcDsKKwlpbnQgaWQ7CisJaW50IHBhcmlkOworCWludCB2OworCWludCB2MTsKKworCWlmICghZ2V0X2ZuYW1lKEZUX0RJUm0sIHIsIE5VTEwsIE5VTEwsICZmZXAsICZ2KSkKKwkJcGFyaWQgPSAtMTsKKwllbHNlCisJCXBhcmlkID0gZmVwLT5pZDsKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwllID0gZ2VuZXJhdGVfZm5hbWUoZmVwLCBGVF9ESVIsICZmLCAmaWQsICZ2MSk7CisJdiB8PSB2MTsKKwlpZiAoIWUpIHsKKwkJaWYgKHYpIHsKKwkJCWZlbnRfdG9fbmFtZSgmZiwgJmZsaXN0W0ZUX0RJUl0sIGZlcCk7CisJCQlwcmludGYoIiVkLyVkOiBta2RpciAtIG5vIGZpbGVuYW1lIGZyb20gJXNcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgpOworCQl9CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWUgPSBta2Rpcl9wYXRoKCZmLCAwNzc3KSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGUgPT0gMCkKKwkJYWRkX3RvX2ZsaXN0KEZUX0RJUiwgaWQsIHBhcmlkKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogbWtkaXIgJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKwordm9pZCBta25vZF9mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWZlbnRfdCAqZmVwOworCWludCBpZDsKKwlpbnQgcGFyaWQ7CisJaW50IHY7CisJaW50IHYxOworCisJaWYgKCFnZXRfZm5hbWUoRlRfRElSbSwgciwgTlVMTCwgTlVMTCwgJmZlcCwgJnYpKQorCQlwYXJpZCA9IC0xOworCWVsc2UKKwkJcGFyaWQgPSBmZXAtPmlkOworCWluaXRfcGF0aG5hbWUoJmYpOworCWUgPSBnZW5lcmF0ZV9mbmFtZShmZXAsIEZUX0RFViwgJmYsICZpZCwgJnYxKTsKKwl2IHw9IHYxOworCWlmICghZSkgeworCQlpZiAodikgeworCQkJZmVudF90b19uYW1lKCZmLCAmZmxpc3RbRlRfRElSXSwgZmVwKTsKKwkJCXByaW50ZigiJWQvJWQ6IG1rbm9kIC0gbm8gZmlsZW5hbWUgZnJvbSAlc1xuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCk7CisJCX0KKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZSA9IG1rbm9kX3BhdGgoJmYsIFNfSUZDSFIgfCAwNDQ0LCAwKSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGUgPT0gMCkKKwkJYWRkX3RvX2ZsaXN0KEZUX0RFViwgaWQsIHBhcmlkKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogbWtub2QgJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKwordm9pZCByZWFkX2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwljaGFyICpidWY7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWludCBmZDsKKwlzaXplX3QgbGVuOworCV9faW50NjRfdCBscjsKKwlvZmY2NF90IG9mZjsKKwlzdHJ1Y3Qgc3RhdDY0IHN0YjsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX1JFR0ZJTEUsIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiByZWFkIC0gbm8gZmlsZW5hbWVcbiIsIHByb2NpZCwgb3Bubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWZkID0gb3Blbl9wYXRoKCZmLCBPX1JET05MWSk7CisJZSA9IGZkIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZmQgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogcmVhZCAtIG9wZW4gJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJaWYgKGZzdGF0NjQoZmQsICZzdGIpIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHJlYWQgLSBmc3RhdDY0ICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZXJybm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm47CisJfQorCWlmIChzdGIuc3Rfc2l6ZSA9PSAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogcmVhZCAtICVzIHplcm8gc2l6ZVxuIiwgcHJvY2lkLCBvcG5vLAorCQkJICAgICAgIGYucGF0aCk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQljbG9zZShmZCk7CisJCXJldHVybjsKKwl9CisJbHIgPSAoKF9faW50NjRfdCkgcmFuZG9tKCkgPDwgMzIpICsgcmFuZG9tKCk7CisJb2ZmID0gKG9mZjY0X3QpIChsciAlIHN0Yi5zdF9zaXplKTsKKwlsc2VlazY0KGZkLCBvZmYsIFNFRUtfU0VUKTsKKwlsZW4gPSAocmFuZG9tKCkgJSAoZ2V0cGFnZXNpemUoKSAqIDMyKSkgKyAxOworCWJ1ZiA9IG1hbGxvYyhsZW4pOworCWUgPSByZWFkKGZkLCBidWYsIGxlbikgPCAwID8gZXJybm8gOiAwOworCWZyZWUoYnVmKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogcmVhZCAlcyBbJWxsZCwlbGRdICVkXG4iLAorCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIChsb25nIGxvbmcpb2ZmLCAobG9uZyBpbnQpbGVuLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKKwljbG9zZShmZCk7Cit9CisKK3ZvaWQgcmVhZGxpbmtfZihpbnQgb3BubywgbG9uZyByKQoreworCWNoYXIgYnVmW1BBVEhfTUFYXTsKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9TWU1tLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogcmVhZGxpbmsgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZSA9IHJlYWRsaW5rX3BhdGgoJmYsIGJ1ZiwgUEFUSF9NQVgpIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogcmVhZGxpbmsgJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKwordm9pZCByZW5hbWVfZihpbnQgb3BubywgbG9uZyByKQoreworCWZlbnRfdCAqZGZlcDsKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJZmVudF90ICpmZXA7CisJZmxpc3RfdCAqZmxwOworCWludCBpZDsKKwlwYXRobmFtZV90IG5ld2Y7CisJaW50IG9sZGlkOworCWludCBwYXJpZDsKKwlpbnQgdjsKKwlpbnQgdjE7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9BTlltLCByLCAmZiwgJmZscCwgJmZlcCwgJnYxKSkgeworCQlpZiAodjEpCisJCQlwcmludGYoIiVkLyVkOiByZW5hbWUgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJaWYgKCFnZXRfZm5hbWUoRlRfRElSbSwgcmFuZG9tKCksIE5VTEwsIE5VTEwsICZkZmVwLCAmdikpCisJCXBhcmlkID0gLTE7CisJZWxzZQorCQlwYXJpZCA9IGRmZXAtPmlkOworCXYgfD0gdjE7CisJaW5pdF9wYXRobmFtZSgmbmV3Zik7CisJZSA9IGdlbmVyYXRlX2ZuYW1lKGRmZXAsIGZscCAtIGZsaXN0LCAmbmV3ZiwgJmlkLCAmdjEpOworCXYgfD0gdjE7CisJaWYgKCFlKSB7CisJCWlmICh2KSB7CisJCQlmZW50X3RvX25hbWUoJmYsICZmbGlzdFtGVF9ESVJdLCBkZmVwKTsKKwkJCXByaW50ZigiJWQvJWQ6IHJlbmFtZSAtIG5vIGZpbGVuYW1lIGZyb20gJXNcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgpOworCQl9CisJCWZyZWVfcGF0aG5hbWUoJm5ld2YpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gcmVuYW1lX3BhdGgoJmYsICZuZXdmKSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGUgPT0gMCkgeworCQlpZiAoZmxwIC0gZmxpc3QgPT0gRlRfRElSKSB7CisJCQlvbGRpZCA9IGZlcC0+aWQ7CisJCQlmaXhfcGFyZW50KG9sZGlkLCBpZCk7CisJCX0KKwkJZGVsX2Zyb21fZmxpc3QoZmxwIC0gZmxpc3QsIGZlcCAtIGZscC0+ZmVudHMpOworCQlhZGRfdG9fZmxpc3QoZmxwIC0gZmxpc3QsIGlkLCBwYXJpZCk7CisJfQorCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiByZW5hbWUgJXMgdG8gJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLAorCQkgICAgICAgbmV3Zi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZuZXdmKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKworI2lmbmRlZiBOT19YRlMKK3ZvaWQgcmVzdnNwX2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJaW50IGZkOworCXN0cnVjdCB4ZnNfZmxvY2s2NCBmbDsKKwlfX3M2NCBscjsKKwlfX3M2NCBvZmY7CisJc3RydWN0IHN0YXQ2NCBzdGI7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9SRUdGSUxFLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogcmVzdnNwIC0gbm8gZmlsZW5hbWVcbiIsIHByb2NpZCwgb3Bubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWZkID0gb3Blbl9wYXRoKCZmLCBPX1JEV1IpOworCWUgPSBmZCA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKGZkIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHJlc3ZzcCAtIG9wZW4gJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJaWYgKGZzdGF0NjQoZmQsICZzdGIpIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHJlc3ZzcCAtIGZzdGF0NjQgJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlcnJubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQljbG9zZShmZCk7CisJCXJldHVybjsKKwl9CisJbHIgPSAoKF9fczY0KSByYW5kb20oKSA8PCAzMikgKyByYW5kb20oKTsKKwlvZmYgPSBsciAlIE1JTihzdGIuc3Rfc2l6ZSArICgxMDI0ICogMTAyNCksIE1BWEZTSVpFKTsKKwlvZmYgJT0gbWF4ZnNpemU7CisJbWVtc2V0KCZmbCwgMCwgc2l6ZW9mKGZsKSk7CisJZmwubF93aGVuY2UgPSBTRUVLX1NFVDsKKwlmbC5sX3N0YXJ0ID0gb2ZmOworCWZsLmxfbGVuID0gKF9fczY0KSAocmFuZG9tKCkgJSAoMTAyNCAqIDEwMjQpKTsKKwllID0gaW9jdGwoZmQsIFhGU19JT0NfUkVTVlNQNjQsICZmbCkgPCAwID8gZXJybm8gOiAwOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBpb2N0bChYRlNfSU9DX1JFU1ZTUDY0KSAlcyAlbGxkICVsbGQgJWRcbiIsCisJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgKGxvbmcgbG9uZylvZmYsCisJCSAgICAgICAobG9uZyBsb25nKWZsLmxfbGVuLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKKwljbG9zZShmZCk7Cit9CisjZW5kaWYKKwordm9pZCBybWRpcl9mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWZlbnRfdCAqZmVwOworCWludCB2OworCisJaW5pdF9wYXRobmFtZSgmZik7CisJaWYgKCFnZXRfZm5hbWUoRlRfRElSbSwgciwgJmYsIE5VTEwsICZmZXAsICZ2KSkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHJtZGlyIC0gbm8gZGlyZWN0b3J5XG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gcm1kaXJfcGF0aCgmZikgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmIChlID09IDApCisJCWRlbF9mcm9tX2ZsaXN0KEZUX0RJUiwgZmVwIC0gZmxpc3RbRlRfRElSXS5mZW50cyk7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IHJtZGlyICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKK3ZvaWQgc3RhdF9mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCXN0cnVjdCBzdGF0NjQgc3RiOworCWludCB2OworCisJaW5pdF9wYXRobmFtZSgmZik7CisJaWYgKCFnZXRfZm5hbWUoRlRfQU5ZbSwgciwgJmYsIE5VTEwsIE5VTEwsICZ2KSkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHN0YXQgLSBubyBlbnRyaWVzXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gbHN0YXQ2NF9wYXRoKCZmLCAmc3RiKSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IHN0YXQgJXMgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKK30KKwordm9pZCBzeW1saW5rX2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJZmVudF90ICpmZXA7CisJaW50IGk7CisJaW50IGlkOworCWludCBsZW47CisJaW50IHBhcmlkOworCWludCB2OworCWludCB2MTsKKwljaGFyICp2YWw7CisKKwlpZiAoIWdldF9mbmFtZShGVF9ESVJtLCByLCBOVUxMLCBOVUxMLCAmZmVwLCAmdikpCisJCXBhcmlkID0gLTE7CisJZWxzZQorCQlwYXJpZCA9IGZlcC0+aWQ7CisJaW5pdF9wYXRobmFtZSgmZik7CisJZSA9IGdlbmVyYXRlX2ZuYW1lKGZlcCwgRlRfU1lNLCAmZiwgJmlkLCAmdjEpOworCXYgfD0gdjE7CisJaWYgKCFlKSB7CisJCWlmICh2KSB7CisJCQlmZW50X3RvX25hbWUoJmYsICZmbGlzdFtGVF9ESVJdLCBmZXApOworCQkJcHJpbnRmKCIlZC8lZDogc3ltbGluayAtIG5vIGZpbGVuYW1lIGZyb20gJXNcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgpOworCQl9CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWxlbiA9IChpbnQpKHJhbmRvbSgpICUgUEFUSF9NQVgpOworCXZhbCA9IG1hbGxvYyhsZW4gKyAxKTsKKwlpZiAobGVuKQorCQltZW1zZXQodmFsLCAneCcsIGxlbik7CisJdmFsW2xlbl0gPSAnXDAnOworCWZvciAoaSA9IDEwOyBpIDwgbGVuIC0gMTsgaSArPSAxMCkKKwkJdmFsW2ldID0gJy8nOworCWUgPSBzeW1saW5rX3BhdGgodmFsLCAmZikgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmIChlID09IDApCisJCWFkZF90b19mbGlzdChGVF9TWU0sIGlkLCBwYXJpZCk7CisJZnJlZSh2YWwpOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiBzeW1saW5rICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKKy8qIEFSR1NVU0VEICovCit2b2lkIHN5bmNfZihpbnQgb3BubywgbG9uZyByKQoreworCXN5bmMoKTsKKwlpZiAodmVyYm9zZSkKKwkJcHJpbnRmKCIlZC8lZDogc3luY1xuIiwgcHJvY2lkLCBvcG5vKTsKK30KKwordm9pZCB0cnVuY2F0ZV9mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCV9faW50NjRfdCBscjsKKwlvZmY2NF90IG9mZjsKKwlzdHJ1Y3Qgc3RhdDY0IHN0YjsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX1JFR0ZJTEUsIHIsICZmLCBOVUxMLCBOVUxMLCAmdikpIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiB0cnVuY2F0ZSAtIG5vIGZpbGVuYW1lXG4iLCBwcm9jaWQsIG9wbm8pOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwllID0gc3RhdDY0X3BhdGgoJmYsICZzdGIpIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZSA+IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiB0cnVuY2F0ZSAtIHN0YXQ2NCAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGUpOworCQlmcmVlX3BhdGhuYW1lKCZmKTsKKwkJcmV0dXJuOworCX0KKwlsciA9ICgoX19pbnQ2NF90KSByYW5kb20oKSA8PCAzMikgKyByYW5kb20oKTsKKwlvZmYgPSBsciAlIE1JTihzdGIuc3Rfc2l6ZSArICgxMDI0ICogMTAyNCksIE1BWEZTSVpFKTsKKwlvZmYgJT0gbWF4ZnNpemU7CisJZSA9IHRydW5jYXRlNjRfcGF0aCgmZiwgb2ZmKSA8IDAgPyBlcnJubyA6IDA7CisJY2hlY2tfY3dkKCk7CisJaWYgKHYpCisJCXByaW50ZigiJWQvJWQ6IHRydW5jYXRlICVzICVsbGQgJWRcbiIsIHByb2NpZCwgb3BubywgZi5wYXRoLAorCQkgICAgICAgKGxvbmcgbG9uZylvZmYsIGUpOworCWZyZWVfcGF0aG5hbWUoJmYpOworfQorCit2b2lkIHVubGlua19mKGludCBvcG5vLCBsb25nIHIpCit7CisJaW50IGU7CisJcGF0aG5hbWVfdCBmOworCWZlbnRfdCAqZmVwOworCWZsaXN0X3QgKmZscDsKKwlpbnQgdjsKKworCWluaXRfcGF0aG5hbWUoJmYpOworCWlmICghZ2V0X2ZuYW1lKEZUX05PVERJUiwgciwgJmYsICZmbHAsICZmZXAsICZ2KSkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHVubGluayAtIG5vIGZpbGVcbiIsIHByb2NpZCwgb3Bubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWUgPSB1bmxpbmtfcGF0aCgmZikgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmIChlID09IDApCisJCWRlbF9mcm9tX2ZsaXN0KGZscCAtIGZsaXN0LCBmZXAgLSBmbHAtPmZlbnRzKTsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogdW5saW5rICVzICVkXG4iLCBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJZnJlZV9wYXRobmFtZSgmZik7Cit9CisKKyNpZm5kZWYgTk9fWEZTCit2b2lkIHVucmVzdnNwX2YoaW50IG9wbm8sIGxvbmcgcikKK3sKKwlpbnQgZTsKKwlwYXRobmFtZV90IGY7CisJaW50IGZkOworCXN0cnVjdCB4ZnNfZmxvY2s2NCBmbDsKKwlfX3M2NCBscjsKKwlfX3M2NCBvZmY7CisJc3RydWN0IHN0YXQ2NCBzdGI7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9SRUdGSUxFLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogdW5yZXN2c3AgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBvcGVuX3BhdGgoJmYsIE9fUkRXUik7CisJZSA9IGZkIDwgMCA/IGVycm5vIDogMDsKKwljaGVja19jd2QoKTsKKwlpZiAoZmQgPCAwKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogdW5yZXN2c3AgLSBvcGVuICVzIGZhaWxlZCAlZFxuIiwKKwkJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgZSk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQlyZXR1cm47CisJfQorCWlmIChmc3RhdDY0KGZkLCAmc3RiKSA8IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiB1bnJlc3ZzcCAtIGZzdGF0NjQgJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlcnJubyk7CisJCWZyZWVfcGF0aG5hbWUoJmYpOworCQljbG9zZShmZCk7CisJCXJldHVybjsKKwl9CisJbHIgPSAoKF9fczY0KSByYW5kb20oKSA8PCAzMikgKyByYW5kb20oKTsKKwlvZmYgPSBsciAlIE1JTihzdGIuc3Rfc2l6ZSArICgxMDI0ICogMTAyNCksIE1BWEZTSVpFKTsKKwlvZmYgJT0gbWF4ZnNpemU7CisJbWVtc2V0KCZmbCwgMCwgc2l6ZW9mKGZsKSk7CisJZmwubF93aGVuY2UgPSBTRUVLX1NFVDsKKwlmbC5sX3N0YXJ0ID0gb2ZmOworCWZsLmxfbGVuID0gKF9fczY0KSAocmFuZG9tKCkgJSAoMSA8PCAyMCkpOworCWUgPSBpb2N0bChmZCwgWEZTX0lPQ19VTlJFU1ZTUDY0LCAmZmwpIDwgMCA/IGVycm5vIDogMDsKKwlpZiAodikKKwkJcHJpbnRmKCIlZC8lZDogaW9jdGwoWEZTX0lPQ19VTlJFU1ZTUDY0KSAlcyAlbGxkICVsbGQgJWRcbiIsCisJCSAgICAgICBwcm9jaWQsIG9wbm8sIGYucGF0aCwgKGxvbmcgbG9uZylvZmYsCisJCSAgICAgICAobG9uZyBsb25nKWZsLmxfbGVuLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKKwljbG9zZShmZCk7Cit9CisjZW5kaWYKKwordm9pZCB3cml0ZV9mKGludCBvcG5vLCBsb25nIHIpCit7CisJY2hhciAqYnVmOworCWludCBlOworCXBhdGhuYW1lX3QgZjsKKwlpbnQgZmQ7CisJc2l6ZV90IGxlbjsKKwlfX2ludDY0X3QgbHI7CisJb2ZmNjRfdCBvZmY7CisJc3RydWN0IHN0YXQ2NCBzdGI7CisJaW50IHY7CisKKwlpbml0X3BhdGhuYW1lKCZmKTsKKwlpZiAoIWdldF9mbmFtZShGVF9SRUdtLCByLCAmZiwgTlVMTCwgTlVMTCwgJnYpKSB7CisJCWlmICh2KQorCQkJcHJpbnRmKCIlZC8lZDogd3JpdGUgLSBubyBmaWxlbmFtZVxuIiwgcHJvY2lkLCBvcG5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJZmQgPSBvcGVuX3BhdGgoJmYsIE9fV1JPTkxZKTsKKwllID0gZmQgPCAwID8gZXJybm8gOiAwOworCWNoZWNrX2N3ZCgpOworCWlmIChmZCA8IDApIHsKKwkJaWYgKHYpCisJCQlwcmludGYoIiVkLyVkOiB3cml0ZSAtIG9wZW4gJXMgZmFpbGVkICVkXG4iLAorCQkJICAgICAgIHByb2NpZCwgb3BubywgZi5wYXRoLCBlKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCXJldHVybjsKKwl9CisJaWYgKGZzdGF0NjQoZmQsICZzdGIpIDwgMCkgeworCQlpZiAodikKKwkJCXByaW50ZigiJWQvJWQ6IHdyaXRlIC0gZnN0YXQ2NCAlcyBmYWlsZWQgJWRcbiIsCisJCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIGVycm5vKTsKKwkJZnJlZV9wYXRobmFtZSgmZik7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuOworCX0KKwlsciA9ICgoX19pbnQ2NF90KSByYW5kb20oKSA8PCAzMikgKyByYW5kb20oKTsKKwlvZmYgPSAob2ZmNjRfdCkgKGxyICUgTUlOKHN0Yi5zdF9zaXplICsgKDEwMjQgKiAxMDI0KSwgTUFYRlNJWkUpKTsKKwlvZmYgJT0gbWF4ZnNpemU7CisJbHNlZWs2NChmZCwgb2ZmLCBTRUVLX1NFVCk7CisJbGVuID0gKHJhbmRvbSgpICUgKGdldHBhZ2VzaXplKCkgKiAzMikpICsgMTsKKwlidWYgPSBtYWxsb2MobGVuKTsKKwltZW1zZXQoYnVmLCBuYW1lc2VxICYgMHhmZiwgbGVuKTsKKwllID0gd3JpdGUoZmQsIGJ1ZiwgbGVuKSA8IDAgPyBlcnJubyA6IDA7CisJZnJlZShidWYpOworCWlmICh2KQorCQlwcmludGYoIiVkLyVkOiB3cml0ZSAlcyBbJWxsZCwlbGRdICVkXG4iLAorCQkgICAgICAgcHJvY2lkLCBvcG5vLCBmLnBhdGgsIChsb25nIGxvbmcpb2ZmLCAobG9uZyBpbnQpbGVuLCBlKTsKKwlmcmVlX3BhdGhuYW1lKCZmKTsKKwljbG9zZShmZCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9qYmQyLXJlc3luYy5zaCBiL2UyZnNwcm9ncy9jb250cmliL2piZDItcmVzeW5jLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQxMzNiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9qYmQyLXJlc3luYy5zaApAQCAtMCwwICsxLDE5IEBACisjIS9iaW4vYmFzaAorCitpZiBbIC16ICIkMSIgLW8gLXogIiQyIiBdOyB0aGVuCisJZWNobyAiVXNhZ2U6ICQwIGtlcm5lbC1maWxlIGUyZnNwcm9ncy1maWxlIgorCWV4aXQgMAorZmkKKworIyBUcmFuc2Zvcm0gYSBmZXcgdGhpbmdzIHRvIGZpdCB0aGUgY29tcGF0aWJpbGl0eSB0aGluZ3MgZGVmaW5lZCBpbiBqZnNfdXNlci5oLgorIyBVc2UgdGhlIGV4dDJmc18gZW5kaWFuIGNvbnZlcnNpb24gZnVuY3Rpb25zIGJlY2F1c2UgdGhleSB0cnVuY2F0ZSBvdmVyc2l6ZWQKKyMgaW5wdXRzIChlLmcuIHBhc3NpbmcgYSB1MzIgdG8gY3B1X3RvX2JlMTYoKSkgbGlrZSB0aGUga2VybmVsIHZlcnNpb25zIGFuZAorIyB1bmxpa2UgdGhlIGxpYmM2IHZlcnNpb25zLgorZXhlYyBzZWQgLWUgJ3MvSkJEXy9KRlNfL2cnIFwKKwkgLWUgJ3MvSkJEMl8vSkZTXy9nJyBcCisJIC1lICdzL2piZDJfam91cm5hbF8vam91cm5hbF8vZycgXAorCSAtZSAncy9fX2JlL19fdS9nJyBcCisJIC1lICdzL3N0cnVjdCBrbWVtX2NhY2hlL2xrbWVtX2NhY2hlX3QvZycgXAorCSAtZSAncy9jcHVfdG9fYmUvZXh0MmZzX2NwdV90b19iZS9nJyBcCisJIC1lICdzL2JlXChbMC05XVswLTldXClfdG9fY3B1L2V4dDJmc19iZVwxX3RvX2NwdS9nJyBcCisJIDwgIiQxIiA+ICIkMiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9jb250cmliL21ha2Utc3BhcnNlLmMgYi9lMmZzcHJvZ3MvY29udHJpYi9tYWtlLXNwYXJzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Yjg2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9tYWtlLXNwYXJzZS5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBtYWtlLXNwYXJzZS5jIC0tLSBtYWtlIGEgc3BhcnNlIGZpbGUgZnJvbSBzdGRpbgorICogCisgKiBDb3B5cmlnaHQgMjAwNCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCitpbnQgZnVsbF9yZWFkKGludCBmZCwgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJaW50IGdvdCwgdG90YWwgPSAwOworCWludCBwYXNzID0gMDsKKworCXdoaWxlIChjb3VudCA+IDApIHsKKwkJZ290ID0gcmVhZChmZCwgYnVmLCBjb3VudCk7CisJCWlmIChnb3QgPT0gLTEpIHsKKwkJCWlmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSAKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiB0b3RhbCA/IHRvdGFsIDogLTE7CisJCX0KKwkJaWYgKGdvdCA9PSAwKSB7CisJCQlpZiAocGFzcysrID49IDMpCisJCQkJcmV0dXJuIHRvdGFsOworCQkJY29udGludWU7CisJCX0KKwkJcGFzcyA9IDA7CisJCWJ1ZiArPSBnb3Q7CisJCXRvdGFsICs9IGdvdDsKKwkJY291bnQgLT0gZ290OworCX0KKwlyZXR1cm4gdG90YWw7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgZmQsIGdvdCwgaTsKKwlpbnQgemZsYWcgPSAwOworCWNoYXIgYnVmWzEwMjRdOworCisJaWYgKGFyZ2MgIT0gMikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiBtYWtlLXNwYXJzZSBvdXQtZmlsZVxuIik7CisJCWV4aXQoMSk7CisJfQorCWZkID0gb3Blbihhcmd2WzFdLCBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkN8T19MQVJHRUZJTEUsIDA3NzcpOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKGFyZ3ZbMV0pOworCQlleGl0KDEpOworCX0KKwl3aGlsZSAoMSkgeworCQlnb3QgPSBmdWxsX3JlYWQoMCwgYnVmLCBzaXplb2YoYnVmKSk7CisJCWlmIChnb3QgPT0gMCkKKwkJCWJyZWFrOworCQlpZiAoZ290ID09IHNpemVvZihidWYpKSB7CisJCQlmb3IgKGk9MDsgaSA8IHNpemVvZihidWYpOyBpKyspIAorCQkJCWlmIChidWZbaV0pCisJCQkJCWJyZWFrOworCQkJaWYgKGkgPT0gc2l6ZW9mKGJ1ZikpIHsKKwkJCQlsc2VlayhmZCwgc2l6ZW9mKGJ1ZiksIFNFRUtfQ1VSKTsKKwkJCQl6ZmxhZyA9IDE7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwkJemZsYWcgPSAwOworCQl3cml0ZShmZCwgYnVmLCBnb3QpOworCX0KKwlpZiAoemZsYWcpIHsKKwkJbHNlZWsoZmQsIC0xLCBTRUVLX0NVUik7CisJCWJ1ZlswXSA9IDA7CisJCXdyaXRlKGZkLCBidWYsIDEpOworCX0KKwlyZXR1cm4gMDsKK30KKwkJCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCBiL2UyZnNwcm9ncy9jb250cmliL3BvcHVsYXRlLWV4dGZzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIxZDNkMWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaApAQCAtMCwwICsxLDEwNSBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgc2NyaXB0IHVzZXMgZGVidWdmcyBjb21tYW5kIHRvIHBvcHVsYXRlIHRoZSBleHQyLzMvNCBmaWxlc3lzdGVtCisjIGZyb20gYSBnaXZlbiBkaXJlY3RvcnkuCisjCisKK2RvX3VzYWdlICgpIHsKKwljYXQgPDwgX0VPRgorVXNhZ2U6IHBvcHVsYXRlLWV4dGZzLnNoIDxzb3VyY2U+IDxkZXZpY2U+CitDcmVhdGUgYW4gZXh0Mi9leHQzL2V4dDQgZmlsZXN5c3RlbSBmcm9tIGEgZGlyZWN0b3J5IG9yIGZpbGUKKworICBzb3VyY2U6IFRoZSBzb3VyY2UgZGlyZWN0b3J5IG9yIGZpbGUKKyAgZGV2aWNlOiBUaGUgdGFyZ2V0IGRldmljZQorCitfRU9GCisJZXhpdCAxCit9CisKK1sgJCMgLW5lIDIgXSAmJiBkb191c2FnZQorCitTUkNESVI9JHsxJSUvfQorREVWSUNFPSQyCisKKyMgRmluZCB3aGVyZSBpcyB0aGUgZGVidWdmcyBjb21tYW5kIGlmIG5vdCBmb3VuZCBpbiB0aGUgZW52LgoraWYgWyAteiAiJERFQlVHRlMiIF07IHRoZW4KKwlDT05UUklCX0RJUj0kKGRpcm5hbWUgJChyZWFkbGluayAtZiAkMCkpCisJREVCVUdGUz0iJENPTlRSSUJfRElSLy4uL2RlYnVnZnMvZGVidWdmcyIKK2ZpCisKK3sKKwlDV0Q9Ii8iCisJZmluZCAkU1JDRElSIHwgd2hpbGUgcmVhZCBGSUxFOyBkbworICAgICAgICAgICAgICAgIFRHVD0iJHtGSUxFIyMqL30iCisgICAgICAgICAgICAgICAgRElSPSIke0ZJTEUjJFNSQ0RJUn0iCisgICAgICAgICAgICAgICAgRElSPSIke0RJUiUkVEdUfSIKKworCQkjIFNraXAgdGhlIHJvb3QgZGlyCisJCVsgISAteiAiJERJUiIgXSB8fCBjb250aW51ZQorCQlbICEgLXogIiRUR1QiIF0gfHwgY29udGludWUKKworCQlpZiBbICIkRElSIiAhPSAiJENXRCIgXTsgdGhlbgorCQkJZWNobyAiY2QgJERJUiIKKwkJCUNXRD0iJERJUiIKKwkJZmkKKworCQkjIE9ubHkgc3RhdCBvbmNlIHNpbmNlIHN0YXQgaXMgYSB0aW1lIGNvbnN1bWluZyBjb21tYW5kCisJCVNUQVQ9JChzdGF0IC1jICJUWVBFPVwiJUZcIjtERVZOTz1cIjB4JXQgMHglVFwiO01PREU9XCIlZlwiO1U9XCIldVwiO0c9XCIlZ1wiIiAkRklMRSkKKwkJZXZhbCAkU1RBVAorCisJCWNhc2UgJFRZUEUgaW4KKwkJImRpcmVjdG9yeSIpCisJCQllY2hvICJta2RpciAkVEdUIgorCQkJOzsKKwkJInJlZ3VsYXIgZmlsZSIgfCAicmVndWxhciBlbXB0eSBmaWxlIikKKwkJCWVjaG8gIndyaXRlICRGSUxFICRUR1QiCisJCQk7OworCQkic3ltYm9saWMgbGluayIpCisJCQlMSU5LX1RHVD0kKHJlYWRsaW5rICRGSUxFKQorCQkJZWNobyAic3ltbGluayAkVEdUICRMSU5LX1RHVCIKKwkJCTs7CisJCSJibG9jayBzcGVjaWFsIGZpbGUiKQorCQkJZWNobyAibWtub2QgJFRHVCBiICRERVZOTyIKKwkJCTs7CisJCSJjaGFyYWN0ZXIgc3BlY2lhbCBmaWxlIikKKwkJCWVjaG8gIm1rbm9kICRUR1QgYyAkREVWTk8iCisJCQk7OworCQkiZmlmbyIpCisJCQllY2hvICJta25vZCAkVEdUIHAiCisJCQk7OworCQkqKQorCQkJZWNobyAiVW5rbm93bi91bmhhbmRsZWQgZmlsZSB0eXBlICckVFlQRScgZmlsZTogJEZJTEUiIDE+JjIKKwkJCTs7CisJCWVzYWMKKworCQkjIFNldCB0aGUgZmlsZSBtb2RlCisJCWVjaG8gInNpZiAkVEdUIG1vZGUgMHgkTU9ERSIKKworCQkjIFNldCB1aWQgYW5kIGdpZAorCQllY2hvICJzaWYgJFRHVCB1aWQgJFUiCisJCWVjaG8gInNpZiAkVEdUIGdpZCAkRyIKKwlkb25lCisKKwkjIEhhbmRsZSB0aGUgaGFyZCBsaW5rcy4KKwkjIFNhdmUgdGhlIGhhcmQgbGlua3MgdG8gYSBmaWxlLCB1c2UgdGhlIGlub2RlIG51bWJlciBhcyB0aGUgZmlsZW5hbWUsIGZvciBleGFtcGxlOgorCSMgSWYgYSBhbmQgYidzIGlub2RlIG51bWJlciBpcyA2Nzc1OTI4LCBzYXZlIGEgYW5kIGIgdG8gL3RtcC90bXAuVnJDd0hoNWdkdC82Nzc1OTI4LgorCUlOT0RFX0RJUj1gbWt0ZW1wIC1kYCB8fCBleGl0IDEKKwlmb3IgaSBpbiBgZmluZCAkU1JDRElSIC10eXBlIGYgLWxpbmtzICsxIC1wcmludGYgJ0lOT0RFPSVpIyMjRk49JXBcbidgOyBkbworCQlldmFsIGBlY2hvICRpIHwgc2VkICdzJCMjIyQgJCdgCisJCWVjaG8gJHtGTiMkU1JDRElSfSA+PiRJTk9ERV9ESVIvJElOT0RFCisJZG9uZQorCSMgVXNlIHRoZSBkZWJ1Z2ZzJyBsbiBhbmQgInNpZiBsaW5rc19jb3VudCIgdG8gaGFuZGxlIHRoZW0uCisJZm9yIGkgaW4gYGxzICRJTk9ERV9ESVJgOyBkbworCQkjIFRoZSBsaW5rIHNvdXJjZQorCQlTUkM9YGhlYWQgLTEgJElOT0RFX0RJUi8kaWAKKwkJIyBSZW1vdmUgdGhlIGZpbGVzIGFuZCBsaW5rIHRoZW0gYWdhaW4gZXhjZXB0IHRoZSBmaXJzdCBvbmUKKwkJZm9yIFRHVCBpbiBgc2VkIC1uIC1lICcxIXAnICRJTk9ERV9ESVIvJGlgOyBkbworCQkJZWNobyAicm0gJFRHVCIKKwkJCWVjaG8gImxuICRTUkMgJFRHVCIKKwkJZG9uZQorCQlMTl9DTlQ9YGNhdCAkSU5PREVfRElSLyRpIHwgd2MgLWxgCisJCSMgU2V0IHRoZSBsaW5rcyBjb3VudAorCQllY2hvICJzaWYgJFNSQyBsaW5rc19jb3VudCAkTE5fQ05UIgorCWRvbmUKKwlybSAtZnIgJElOT0RFX0RJUgorfSB8ICRERUJVR0ZTIC13IC1mIC0gJERFVklDRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbnRyaWIvcHl0aG9uLXV1aWQvc2V0dXAucHkgYi9lMmZzcHJvZ3MvY29udHJpYi9weXRob24tdXVpZC9zZXR1cC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zOTM0ZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2NvbnRyaWIvcHl0aG9uLXV1aWQvc2V0dXAucHkKQEAgLTAsMCArMSwxMSBAQAorIyEvdXNyL2Jpbi9weXRob24KK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KKwordXVpZCA9IEV4dGVuc2lvbignZTJmc3Byb2dzX3V1aWQnLAorICAgICAgICAgICAgICAgICBzb3VyY2VzID0gWyd1dWlkLmMnXSwKKyAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gWyd1dWlkJ10pCisKK3NldHVwIChuYW1lID0gJ2UyZnNwcm9nc191dWlkJywKKyAgICAgICB2ZXJzaW9uID0gJzEuMCcsCisgICAgICAgZGVzY3JpcHRpb24gPSAnVGhpcyBpcyBweXRob24gdXVpZCBpbnRlcmZhY2UnLAorICAgICAgIGV4dF9tb2R1bGVzID0gW3V1aWRdKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2NvbnRyaWIvcHl0aG9uLXV1aWQvdGVzdC5weSBiL2UyZnNwcm9ncy9jb250cmliL3B5dGhvbi11dWlkL3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjI2NGY2MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL3B5dGhvbi11dWlkL3Rlc3QucHkKQEAgLTAsMCArMSwxOCBAQAorIyEvdXNyL2Jpbi9weXRob24KK2ltcG9ydCBlMmZzcHJvZ3NfdXVpZAoraW1wb3J0IHRpbWUKKworcHJpbnQgIkdlbmVyYXRpbmcgdXVpZC4uLiIsCit0cnk6CisgICAgdGltZSA9IHRpbWUudGltZSgpCisgICAgdSA9IGUyZnNwcm9nc191dWlkLmdlbmVyYXRlKCkKK2V4Y2VwdDoKKyAgICB1ID0gIkZBSUwiCitwcmludCB1LCAiLi4uIiwgdGltZQorCitwcmludCAiQ2FsbGluZyBnZW5lcmF0ZSB3aXRoIHBhcmFtLi4uIiwKK3RyeToKKyAgICBlMmZzcHJvZ3NfdXVpZC5nZW5lcmF0ZSgicGFyYW0iKQorICAgIHByaW50ICJGQUlMLiIKK2V4Y2VwdDoKKyAgICBwcmludCAiT0siCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvY29udHJpYi9weXRob24tdXVpZC91dWlkLmMgYi9lMmZzcHJvZ3MvY29udHJpYi9weXRob24tdXVpZC91dWlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRkZDU2YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9jb250cmliL3B5dGhvbi11dWlkL3V1aWQuYwpAQCAtMCwwICsxLDIzIEBACisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorCitzdGF0aWMgUHlPYmplY3QgKiBfdXVpZF9nZW5lcmF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgIHV1aWRfdCB1OworICBjaGFyIHV1aWRbMzddOworICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIpKSByZXR1cm4gTlVMTDsKKyAgdXVpZF9nZW5lcmF0ZSh1KTsKKyAgdXVpZF91bnBhcnNlKHUsIHV1aWQpOworICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgicyIsIHV1aWQpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgX3V1aWRfbWV0aG9kc1tdID0geworICB7ImdlbmVyYXRlIiwgX3V1aWRfZ2VuZXJhdGUsIE1FVEhfVkFSQVJHUywgIkdlbmVyYXRlIFVVSUQifSwKKyAge05VTEwsIE5VTEwsIDAsIE5VTEx9Cit9OworCit2b2lkIGluaXRlMmZzcHJvZ3NfdXVpZCh2b2lkKQoreworICAodm9pZCkgUHlfSW5pdE1vZHVsZSgiZTJmc3Byb2dzX3V1aWQiLCBfdXVpZF9tZXRob2RzKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9jb250cmliL3NwZF9yZWFkZGlyLmMgYi9lMmZzcHJvZ3MvY29udHJpYi9zcGRfcmVhZGRpci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNDVmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvY29udHJpYi9zcGRfcmVhZGRpci5jCkBAIC0wLDAgKzEsNDU4IEBACisvKgorICogcmVhZGRpciBhY2NlbGVyYXRvcgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMywgMjAwNCwgMjAwOCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqIDIwMDgtMDYtMDggTW9kaWZpZWQgYnkgUm9zcyBCb3lsYW4gPFJvc3NCb3lsYW4gc3RhbmZvcmRhbHVtbmkgb3JnPgorICogICAgQWRkZWQgc3VwcG9ydCBmb3IgcmVhZGRpcl9yIGFuZCByZWFkZGlyNjRfciBjYWxscy4gIE5vdGUKKyAqICAgICB0aGlzIGhhcyBub3QgYmVlbiB0ZXN0ZWQgb24gYW55dGhpbmcgb3RoZXIgdGhhbiBHTlUvTGludXggaTM4NiwKKyAqICAgICBhbmQgdGhhdCB0aGUgcmVndWxhciByZWFkZGlyIHdyYXBwZXIgd2lsbCB0YWtlIHNsaWdodGx5IG1vcmUKKyAqICAgICBzcGFjZSB0aGFuIFRlZCdzIG9yaWdpbmFsIHNpbmNlIGl0IG5vdyBpbmNsdWRlcyBhIGxvY2suCisgKgorICogQ29tcGlsZSB1c2luZyB0aGUgY29tbWFuZDoKKyAqCisgKiBnY2MgLW8gc3BkX3JlYWRkaXIuc28gLXNoYXJlZCAtZnBpYyBzcGRfcmVhZGRpci5jIC1sZGwKKyAqCisgKiBVc2UgaXQgYnkgc2V0dGluZyB0aGUgTERfUFJFTE9BRCBlbnZpcm9ubWVudCB2YXJpYWJsZToKKyAqIAorICogZXhwb3J0IExEX1BSRUxPQUQ9L3Vzci9sb2NhbC9zYmluL3NwZF9yZWFkZGlyLnNvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqIAorICovCisKKyNkZWZpbmUgQUxMT0NfU1RFUFNJWkUJMTAwCisjZGVmaW5lIE1BWF9ESVJTSVpFCTAKKworI2RlZmluZSBERUJVRworLyogVXRpbCB3ZSBhdXRvY29uZmlzY2F0ZSBzcGRfcmVhZGRpci4uLiAqLworI2RlZmluZSBIQVZFX19fU0VDVVJFX0dFVEVOVgkxCisjZGVmaW5lIEhBVkVfUFJDVEwJCTEKKyNkZWZpbmUgSEFWRV9TWVNfUFJDVExfSAkxCisKKyNpZmRlZiBERUJVRworI2RlZmluZSBERUJVR19ESVIoeCkJe2lmIChkb19kZWJ1ZykgeyB4OyB9fQorI2Vsc2UKKyNkZWZpbmUgREVCVUdfRElSKHgpCisjZW5kaWYKKworI2RlZmluZSBfR05VX1NPVVJDRQorI2RlZmluZSBfX1VTRV9MQVJHRUZJTEU2NAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpZmRlZiBIQVZFX1NZU19QUkNUTF9ICisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjZWxzZQorI2RlZmluZSBQUl9HRVRfRFVNUEFCTEUgMworI2VuZGlmCisjaW5jbHVkZSA8cHRocmVhZC5oPgorCitzdHJ1Y3QgZGlyZW50X3MgeworCXVuc2lnbmVkIGxvbmcgbG9uZyBkX2lubzsKKwlsb25nIGxvbmcgZF9vZmY7CisJdW5zaWduZWQgc2hvcnQgaW50IGRfcmVjbGVuOworCXVuc2lnbmVkIGNoYXIgZF90eXBlOworCWNoYXIgKmRfbmFtZTsKK307CisKK3N0cnVjdCBkaXJfcyB7CisJRElSCSpkaXI7CisJcHRocmVhZF9tdXRleF90IGxvY2s7IC8qIE11dGV4IGxvY2sgZm9yIHRoaXMgc3RydWN0dXJlLiAgKi8KKwlpbnQJbnVtOworCWludAltYXg7CisJc3RydWN0IGRpcmVudF9zICpkcDsKKwlpbnQJcG9zOworCWludAlkaXJlY3Q7CisJc3RydWN0IGRpcmVudCByZXRfZGlyOworCXN0cnVjdCBkaXJlbnQ2NCByZXRfZGlyNjQ7Cit9OworCitzdGF0aWMgaW50ICgqcmVhbF9jbG9zZWRpcikoRElSICpkaXIpID0gMDsKK3N0YXRpYyBESVIgKigqcmVhbF9vcGVuZGlyKShjb25zdCBjaGFyICpuYW1lKSA9IDA7CitzdGF0aWMgRElSICooKnJlYWxfZmRvcGVuZGlyKShpbnQgZmQpID0gMDsKK3N0YXRpYyB2b2lkICooKnJlYWxfcmV3aW5kZGlyKShESVIgKmRpcnApID0gMDsKK3N0YXRpYyBzdHJ1Y3QgZGlyZW50ICooKnJlYWxfcmVhZGRpcikoRElSICpkaXIpID0gMDsKK3N0YXRpYyBpbnQgKCpyZWFsX3JlYWRkaXJfcikoRElSICpkaXIsIHN0cnVjdCBkaXJlbnQgKmVudHJ5LAorCQkJICAgICBzdHJ1Y3QgZGlyZW50ICoqcmVzdWx0KSA9IDA7CitzdGF0aWMgc3RydWN0IGRpcmVudDY0ICooKnJlYWxfcmVhZGRpcjY0KShESVIgKmRpcikgPSAwOworc3RhdGljIGludCAoKnJlYWxfcmVhZGRpcjY0X3IpKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50NjQgKmVudHJ5LAorCQkJICAgICAgIHN0cnVjdCBkaXJlbnQ2NCAqKnJlc3VsdCkgPSAwOworc3RhdGljIG9mZl90ICgqcmVhbF90ZWxsZGlyKShESVIgKmRpcikgPSAwOworc3RhdGljIHZvaWQgKCpyZWFsX3NlZWtkaXIpKERJUiAqZGlyLCBvZmZfdCBvZmZzZXQpID0gMDsKK3N0YXRpYyBpbnQgKCpyZWFsX2RpcmZkKShESVIgKmRpcikgPSAwOworc3RhdGljIHVuc2lnbmVkIGxvbmcgbWF4X2RpcnNpemUgPSBNQVhfRElSU0laRTsKK3N0YXRpYyBpbnQgbnVtX29wZW4gPSAwOworI2lmZGVmIERFQlVHCitzdGF0aWMgaW50IGRvX2RlYnVnID0gMDsKKyNlbmRpZgorCitzdGF0aWMgY2hhciAqc2FmZV9nZXRlbnYoY29uc3QgY2hhciAqYXJnKQoreworCWlmICgoZ2V0dWlkKCkgIT0gZ2V0ZXVpZCgpKSB8fCAoZ2V0Z2lkKCkgIT0gZ2V0ZWdpZCgpKSkKKwkJcmV0dXJuIE5VTEw7CisjaWYgSEFWRV9QUkNUTAorCWlmIChwcmN0bChQUl9HRVRfRFVNUEFCTEUsIDAsIDAsIDAsIDApID09IDApCisJCXJldHVybiBOVUxMOworI2Vsc2UKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChTWVNfcHJjdGwpKQorCWlmIChzeXNjYWxsKFNZU19wcmN0bCwgUFJfR0VUX0RVTVBBQkxFLCAwLCAwLCAwLCAwKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFX19fU0VDVVJFX0dFVEVOVgorCXJldHVybiBfX3NlY3VyZV9nZXRlbnYoYXJnKTsKKyNlbHNlCisJcmV0dXJuIGdldGVudihhcmcpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHNldHVwX3B0cigpCit7CisJY2hhciAqY3A7CisKKwlyZWFsX29wZW5kaXIgPSBkbHN5bShSVExEX05FWFQsICJvcGVuZGlyIik7CisJcmVhbF9mZG9wZW5kaXIgPSBkbHN5bShSVExEX05FWFQsICJmZG9wZW5kaXIiKTsKKwlyZWFsX2Nsb3NlZGlyID0gZGxzeW0oUlRMRF9ORVhULCAiY2xvc2VkaXIiKTsKKwlyZWFsX3Jld2luZGRpciA9IGRsc3ltKFJUTERfTkVYVCwgInJld2luZGRpciIpOworCXJlYWxfcmVhZGRpciA9IGRsc3ltKFJUTERfTkVYVCwgInJlYWRkaXIiKTsKKwlyZWFsX3JlYWRkaXJfciA9IGRsc3ltKFJUTERfTkVYVCwgInJlYWRkaXJfciIpOworCXJlYWxfcmVhZGRpcjY0ID0gZGxzeW0oUlRMRF9ORVhULCAicmVhZGRpcjY0Iik7CisJcmVhbF9yZWFkZGlyNjRfciA9IGRsc3ltKFJUTERfTkVYVCwgInJlYWRkaXI2NF9yIik7CisJcmVhbF90ZWxsZGlyID0gZGxzeW0oUlRMRF9ORVhULCAidGVsbGRpciIpOworCXJlYWxfc2Vla2RpciA9IGRsc3ltKFJUTERfTkVYVCwgInNlZWtkaXIiKTsKKwlyZWFsX2RpcmZkID0gZGxzeW0oUlRMRF9ORVhULCAiZGlyZmQiKTsKKwlpZiAoKGNwID0gc2FmZV9nZXRlbnYoIlNQRF9SRUFERElSX01BWF9TSVpFIikpICE9IE5VTEwpIHsKKwkJbWF4X2RpcnNpemUgPSBhdG9sKGNwKTsKKwl9CisjaWZkZWYgREVCVUcKKwlpZiAoc2FmZV9nZXRlbnYoIlNQRF9SRUFERElSX0RFQlVHIikpIHsKKwkJcHJpbnRmKCJpbml0aWFsaXplZCFcbiIpOworCQlkb19kZWJ1ZysrOworCX0KKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZCBmcmVlX2NhY2hlZF9kaXIoc3RydWN0IGRpcl9zICpkaXJzdHJ1Y3QpCit7CisJaW50IGk7CisKKwlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJihkaXJzdHJ1Y3QtPmxvY2spKTsKKworCWlmICghZGlyc3RydWN0LT5kcCkKKwkJcmV0dXJuOworCisJZm9yIChpPTA7IGkgPCBkaXJzdHJ1Y3QtPm51bTsgaSsrKSB7CisJCWZyZWUoZGlyc3RydWN0LT5kcFtpXS5kX25hbWUpOworCX0KKwlmcmVlKGRpcnN0cnVjdC0+ZHApOworCWRpcnN0cnVjdC0+ZHAgPSAwOworCWRpcnN0cnVjdC0+bWF4ID0gZGlyc3RydWN0LT5udW0gPSAwOworfQkKKworc3RhdGljIGludCBpbm9fY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJY29uc3Qgc3RydWN0IGRpcmVudF9zICpkc19hID0gKGNvbnN0IHN0cnVjdCBkaXJlbnRfcyAqKSBhOworCWNvbnN0IHN0cnVjdCBkaXJlbnRfcyAqZHNfYiA9IChjb25zdCBzdHJ1Y3QgZGlyZW50X3MgKikgYjsKKwlpbm9fdCBpX2EsIGlfYjsKKwkKKwlpX2EgPSBkc19hLT5kX2lubzsKKwlpX2IgPSBkc19iLT5kX2lubzsKKworCWlmIChkc19hLT5kX25hbWVbMF0gPT0gJy4nKSB7CisJCWlmIChkc19hLT5kX25hbWVbMV0gPT0gMCkKKwkJCWlfYSA9IDA7CisJCWVsc2UgaWYgKChkc19hLT5kX25hbWVbMV0gPT0gJy4nKSAmJiAoZHNfYS0+ZF9uYW1lWzJdID09IDApKQorCQkJaV9hID0gMTsKKwl9CisJaWYgKGRzX2ItPmRfbmFtZVswXSA9PSAnLicpIHsKKwkJaWYgKGRzX2ItPmRfbmFtZVsxXSA9PSAwKQorCQkJaV9iID0gMDsKKwkJZWxzZSBpZiAoKGRzX2ItPmRfbmFtZVsxXSA9PSAnLicpICYmIChkc19iLT5kX25hbWVbMl0gPT0gMCkpCisJCQlpX2IgPSAxOworCX0KKworCXJldHVybiAoaV9hIC0gaV9iKTsKK30KKworc3RhdGljIHN0cnVjdCBkaXJfcyAqYWxsb2NfZGlyc3RydWN0KERJUiAqZGlyKQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0OworCXN0YXRpYyBwdGhyZWFkX211dGV4YXR0cl90IG11dGV4YXR0cjsKKwltdXRleGF0dHIuX19hbGlnbiA9IFBUSFJFQURfTVVURVhfUkVDVVJTSVZFOworCisJZGlyc3RydWN0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGlyX3MpKTsKKwlpZiAoZGlyc3RydWN0KQorCQltZW1zZXQoZGlyc3RydWN0LCAwLCBzaXplb2Yoc3RydWN0IGRpcl9zKSk7CisJZGlyc3RydWN0LT5kaXIgPSBkaXI7CisJcHRocmVhZF9tdXRleF9pbml0KCYoZGlyc3RydWN0LT5sb2NrKSwgJm11dGV4YXR0cik7CisJcmV0dXJuIGRpcnN0cnVjdDsKK30KKworc3RhdGljIHZvaWQgY2FjaGVfZGlyc3RydWN0KHN0cnVjdCBkaXJfcyAqZGlyc3RydWN0KQoreworCXN0cnVjdCBkaXJlbnRfcyAqZHMsICpkbmV3OworCXN0cnVjdCBkaXJlbnQ2NCAqZDsKKworCXdoaWxlICgoZCA9ICgqcmVhbF9yZWFkZGlyNjQpKGRpcnN0cnVjdC0+ZGlyKSkgIT0gTlVMTCkgeworCQlpZiAoZGlyc3RydWN0LT5udW0gPj0gZGlyc3RydWN0LT5tYXgpIHsKKwkJCWRpcnN0cnVjdC0+bWF4ICs9IEFMTE9DX1NURVBTSVpFOworCQkJREVCVUdfRElSKHByaW50ZigiUmVhbGxvY2F0aW5nIHRvIHNpemUgJWRcbiIsIAorCQkJCQkgZGlyc3RydWN0LT5tYXgpKTsKKwkJCWRuZXcgPSByZWFsbG9jKGRpcnN0cnVjdC0+ZHAsIAorCQkJCSAgICAgICBkaXJzdHJ1Y3QtPm1heCAqIHNpemVvZihzdHJ1Y3QgZGlyX3MpKTsKKwkJCWlmICghZG5ldykKKwkJCQlnb3RvIG5vbWVtOworCQkJZGlyc3RydWN0LT5kcCA9IGRuZXc7CisJCX0KKwkJZHMgPSAmZGlyc3RydWN0LT5kcFtkaXJzdHJ1Y3QtPm51bSsrXTsKKwkJZHMtPmRfaW5vID0gZC0+ZF9pbm87CisJCWRzLT5kX29mZiA9IGQtPmRfb2ZmOworCQlkcy0+ZF9yZWNsZW4gPSBkLT5kX3JlY2xlbjsKKwkJZHMtPmRfdHlwZSA9IGQtPmRfdHlwZTsKKwkJaWYgKChkcy0+ZF9uYW1lID0gbWFsbG9jKHN0cmxlbihkLT5kX25hbWUpKzEpKSA9PSBOVUxMKSB7CisJCQlkaXJzdHJ1Y3QtPm51bS0tOworCQkJZ290byBub21lbTsKKwkJfQorCQlzdHJjcHkoZHMtPmRfbmFtZSwgZC0+ZF9uYW1lKTsKKwkJREVCVUdfRElSKHByaW50ZigicmVhZGRpcjogJWx1ICVzXG4iLCAKKwkJCQkgKHVuc2lnbmVkIGxvbmcpIGQtPmRfaW5vLCBkLT5kX25hbWUpKTsKKwl9CisJcXNvcnQoZGlyc3RydWN0LT5kcCwgZGlyc3RydWN0LT5udW0sIHNpemVvZihzdHJ1Y3QgZGlyZW50X3MpLCBpbm9fY21wKTsKKwlyZXR1cm47Citub21lbToKKwlERUJVR19ESVIocHJpbnRmKCJObyBtZW1vcnksIGJhY2tpbmcgb2ZmIHRvIGRpcmVjdCByZWFkZGlyXG4iKSk7CisJZnJlZV9jYWNoZWRfZGlyKGRpcnN0cnVjdCk7CisJZGlyc3RydWN0LT5kaXJlY3QgPSAxOworfQorCitESVIgKm9wZW5kaXIoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlESVIgKmRpcjsKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdDsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKworCWlmICghcmVhbF9vcGVuZGlyKQorCQlzZXR1cF9wdHIoKTsKKworCURFQlVHX0RJUihwcmludGYoIk9wZW5kaXIoJXMpICglZCBvcGVuKVxuIiwgbmFtZSwgbnVtX29wZW4rKykpOworCWRpciA9ICgqcmVhbF9vcGVuZGlyKShuYW1lKTsKKwlpZiAoIWRpcikKKwkJcmV0dXJuIE5VTEw7CisKKwlkaXJzdHJ1Y3QgPSBhbGxvY19kaXJzdHJ1Y3QoZGlyKTsKKwlpZiAoIWRpcnN0cnVjdCkgeworCQkoKnJlYWxfY2xvc2VkaXIpKGRpcik7CisJCWVycm5vID0gLUVOT01FTTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKG1heF9kaXJzaXplICYmIChzdGF0KG5hbWUsICZzdCkgPT0gMCkgJiYgCisJICAgIChzdC5zdF9zaXplID4gbWF4X2RpcnNpemUpKSB7CisJCURFQlVHX0RJUihwcmludGYoIkRpcmVjdG9yeSBzaXplICVsZCwgdXNpbmcgZGlyZWN0IHJlYWRkaXJcbiIsCisJCQkJIHN0LnN0X3NpemUpKTsKKwkJZGlyc3RydWN0LT5kaXJlY3QgPSAxOworCQlyZXR1cm4gKERJUiAqKSBkaXJzdHJ1Y3Q7CisJfQorCisJY2FjaGVfZGlyc3RydWN0KGRpcnN0cnVjdCk7CisJcmV0dXJuICgoRElSICopIGRpcnN0cnVjdCk7Cit9CisKK0RJUiAqZmRvcGVuZGlyKGludCBmZCkKK3sKKwlESVIgKmRpcjsKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdDsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKworCWlmICghcmVhbF9mZG9wZW5kaXIpCisJCXNldHVwX3B0cigpOworCisJREVCVUdfRElSKHByaW50ZigiZmRvcGVuZGlyKCVkKSAoJWQgb3BlbilcbiIsIGZkLCBudW1fb3BlbisrKSk7CisJZGlyID0gKCpyZWFsX2Zkb3BlbmRpcikoZmQpOworCWlmICghZGlyKQorCQlyZXR1cm4gTlVMTDsKKworCWRpcnN0cnVjdCA9IGFsbG9jX2RpcnN0cnVjdChkaXIpOworCWlmICghZGlyc3RydWN0KSB7CisJCSgqcmVhbF9jbG9zZWRpcikoZGlyKTsKKwkJZXJybm8gPSAtRU5PTUVNOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlpZiAobWF4X2RpcnNpemUgJiYgKGZzdGF0KGZkLCAmc3QpID09IDApICYmIAorCSAgICAoc3Quc3Rfc2l6ZSA+IG1heF9kaXJzaXplKSkgeworCQlERUJVR19ESVIocHJpbnRmKCJEaXJlY3Rvcnkgc2l6ZSAlbGQsIHVzaW5nIGRpcmVjdCByZWFkZGlyXG4iLAorCQkJCSBzdC5zdF9zaXplKSk7CisJCWRpcnN0cnVjdC0+ZGlyID0gZGlyOworCQlkaXJzdHJ1Y3QtPmRpcmVjdCA9IDE7CisJCXJldHVybiAoRElSICopIGRpcnN0cnVjdDsKKwl9CisKKwljYWNoZV9kaXJzdHJ1Y3QoZGlyc3RydWN0KTsKKwlyZXR1cm4gKChESVIgKikgZGlyc3RydWN0KTsKK30KKworaW50IGNsb3NlZGlyKERJUiAqZGlyKQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0ID0gKHN0cnVjdCBkaXJfcyAqKSBkaXI7CisKKwlERUJVR19ESVIocHJpbnRmKCJDbG9zZWRpciAoJWQgb3BlbilcbiIsIC0tbnVtX29wZW4pKTsKKwlpZiAoZGlyc3RydWN0LT5kaXIpCisJCSgqcmVhbF9jbG9zZWRpcikoZGlyc3RydWN0LT5kaXIpOworCisJZnJlZV9jYWNoZWRfZGlyKGRpcnN0cnVjdCk7CisJZnJlZShkaXJzdHJ1Y3QpOworCXJldHVybiAwOworfQorCitzdHJ1Y3QgZGlyZW50ICpyZWFkZGlyKERJUiAqZGlyKQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0ID0gKHN0cnVjdCBkaXJfcyAqKSBkaXI7CisJc3RydWN0IGRpcmVudF9zICpkczsKKworCWlmIChkaXJzdHJ1Y3QtPmRpcmVjdCkKKwkJcmV0dXJuICgqcmVhbF9yZWFkZGlyKShkaXJzdHJ1Y3QtPmRpcik7CisKKwlpZiAoZGlyc3RydWN0LT5wb3MgPj0gZGlyc3RydWN0LT5udW0pCisJCXJldHVybiBOVUxMOworCisJZHMgPSAmZGlyc3RydWN0LT5kcFtkaXJzdHJ1Y3QtPnBvcysrXTsKKwlkaXJzdHJ1Y3QtPnJldF9kaXIuZF9pbm8gPSBkcy0+ZF9pbm87CisJZGlyc3RydWN0LT5yZXRfZGlyLmRfb2ZmID0gZHMtPmRfb2ZmOworCWRpcnN0cnVjdC0+cmV0X2Rpci5kX3JlY2xlbiA9IGRzLT5kX3JlY2xlbjsKKwlkaXJzdHJ1Y3QtPnJldF9kaXIuZF90eXBlID0gZHMtPmRfdHlwZTsKKwlzdHJuY3B5KGRpcnN0cnVjdC0+cmV0X2Rpci5kX25hbWUsIGRzLT5kX25hbWUsCisJCXNpemVvZihkaXJzdHJ1Y3QtPnJldF9kaXIuZF9uYW1lKSk7CisKKwlyZXR1cm4gKCZkaXJzdHJ1Y3QtPnJldF9kaXIpOworfQorCitpbnQgcmVhZGRpcl9yKERJUiAqZGlyLCBzdHJ1Y3QgZGlyZW50ICplbnRyeSwgc3RydWN0IGRpcmVudCAqKnJlc3VsdCkKK3sKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdCA9IChzdHJ1Y3QgZGlyX3MgKikgZGlyOworCXN0cnVjdCBkaXJlbnRfcyAqZHM7CisKKwlpZiAoZGlyc3RydWN0LT5kaXJlY3QpCisJCXJldHVybiAoKnJlYWxfcmVhZGRpcl9yKShkaXJzdHJ1Y3QtPmRpciwgZW50cnksIHJlc3VsdCk7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJihkaXJzdHJ1Y3QtPmxvY2spKTsKKwlpZiAoZGlyc3RydWN0LT5wb3MgPj0gZGlyc3RydWN0LT5udW0pIHsKKwkJKnJlc3VsdCA9IE5VTEw7CisJfSBlbHNlIHsKKwkJZHMgPSAmZGlyc3RydWN0LT5kcFtkaXJzdHJ1Y3QtPnBvcysrXTsKKwkJZW50cnktPmRfaW5vID0gZHMtPmRfaW5vOworCQllbnRyeS0+ZF9vZmYgPSBkcy0+ZF9vZmY7CisJCWVudHJ5LT5kX3JlY2xlbiA9IGRzLT5kX3JlY2xlbjsKKwkJZW50cnktPmRfdHlwZSA9IGRzLT5kX3R5cGU7CisJCXN0cm5jcHkoZW50cnktPmRfbmFtZSwgZHMtPmRfbmFtZSwgc2l6ZW9mKGVudHJ5LT5kX25hbWUpKTsKKwkJKnJlc3VsdCA9IGVudHJ5OworCX0KKwlwdGhyZWFkX211dGV4X3VubG9jaygmKGRpcnN0cnVjdC0+bG9jaykpOworCXJldHVybiAwOworfQorCitzdHJ1Y3QgZGlyZW50NjQgKnJlYWRkaXI2NChESVIgKmRpcikKK3sKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdCA9IChzdHJ1Y3QgZGlyX3MgKikgZGlyOworCXN0cnVjdCBkaXJlbnRfcyAqZHM7CisKKwlpZiAoZGlyc3RydWN0LT5kaXJlY3QpCisJCXJldHVybiAoKnJlYWxfcmVhZGRpcjY0KShkaXJzdHJ1Y3QtPmRpcik7CisKKwlpZiAoZGlyc3RydWN0LT5wb3MgPj0gZGlyc3RydWN0LT5udW0pCisJCXJldHVybiBOVUxMOworCisJZHMgPSAmZGlyc3RydWN0LT5kcFtkaXJzdHJ1Y3QtPnBvcysrXTsKKwlkaXJzdHJ1Y3QtPnJldF9kaXI2NC5kX2lubyA9IGRzLT5kX2lubzsKKwlkaXJzdHJ1Y3QtPnJldF9kaXI2NC5kX29mZiA9IGRzLT5kX29mZjsKKwlkaXJzdHJ1Y3QtPnJldF9kaXI2NC5kX3JlY2xlbiA9IGRzLT5kX3JlY2xlbjsKKwlkaXJzdHJ1Y3QtPnJldF9kaXI2NC5kX3R5cGUgPSBkcy0+ZF90eXBlOworCXN0cm5jcHkoZGlyc3RydWN0LT5yZXRfZGlyNjQuZF9uYW1lLCBkcy0+ZF9uYW1lLAorCQlzaXplb2YoZGlyc3RydWN0LT5yZXRfZGlyNjQuZF9uYW1lKSk7CisKKwlyZXR1cm4gKCZkaXJzdHJ1Y3QtPnJldF9kaXI2NCk7Cit9CisKK2ludCByZWFkZGlyNjRfciAoRElSICpfX3Jlc3RyaWN0IGRpciwKKwkJIHN0cnVjdCBkaXJlbnQ2NCAqX19yZXN0cmljdCBlbnRyeSwKKwkJIHN0cnVjdCBkaXJlbnQ2NCAqKl9fcmVzdHJpY3QgcmVzdWx0KQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0ID0gKHN0cnVjdCBkaXJfcyAqKSBkaXI7CisJc3RydWN0IGRpcmVudF9zICpkczsKKworCWlmIChkaXJzdHJ1Y3QtPmRpcmVjdCkKKwkJcmV0dXJuICgqcmVhbF9yZWFkZGlyNjRfcikoZGlyLCBlbnRyeSwgcmVzdWx0KTsKKwlwdGhyZWFkX211dGV4X2xvY2soJihkaXJzdHJ1Y3QtPmxvY2spKTsKKwlpZiAoZGlyc3RydWN0LT5wb3MgPj0gZGlyc3RydWN0LT5udW0pIHsKKwkJKnJlc3VsdCA9IE5VTEw7CisJfSBlbHNlIHsKKwkJZHMgPSAmZGlyc3RydWN0LT5kcFtkaXJzdHJ1Y3QtPnBvcysrXTsKKwkJZW50cnktPmRfaW5vID0gZHMtPmRfaW5vOworCQllbnRyeS0+ZF9vZmYgPSBkcy0+ZF9vZmY7CisJCWVudHJ5LT5kX3JlY2xlbiA9IGRzLT5kX3JlY2xlbjsKKwkJZW50cnktPmRfdHlwZSA9IGRzLT5kX3R5cGU7CisJCXN0cm5jcHkoZW50cnktPmRfbmFtZSwgZHMtPmRfbmFtZSwKKwkJCXNpemVvZihlbnRyeS0+ZF9uYW1lKSk7CisJCSpyZXN1bHQgPSBlbnRyeTsKKwl9CisJcHRocmVhZF9tdXRleF91bmxvY2soJihkaXJzdHJ1Y3QtPmxvY2spKTsKKwlyZXR1cm4gMDsKK30KKworb2ZmX3QgdGVsbGRpcihESVIgKmRpcikKK3sKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdCA9IChzdHJ1Y3QgZGlyX3MgKikgZGlyOworCisJaWYgKGRpcnN0cnVjdC0+ZGlyZWN0KQorCQlyZXR1cm4gKCpyZWFsX3RlbGxkaXIpKGRpcnN0cnVjdC0+ZGlyKTsKKworCXJldHVybiAoKG9mZl90KSBkaXJzdHJ1Y3QtPnBvcyk7Cit9CisKK3ZvaWQgc2Vla2RpcihESVIgKmRpciwgb2ZmX3Qgb2Zmc2V0KQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0ID0gKHN0cnVjdCBkaXJfcyAqKSBkaXI7CisKKwlpZiAoZGlyc3RydWN0LT5kaXJlY3QpIHsKKwkJKCpyZWFsX3NlZWtkaXIpKGRpcnN0cnVjdC0+ZGlyLCBvZmZzZXQpOworCQlyZXR1cm47CisJfQorCisJZGlyc3RydWN0LT5wb3MgPSBvZmZzZXQ7Cit9CisKK3ZvaWQgcmV3aW5kZGlyKERJUiAqZGlyKQoreworCXN0cnVjdCBkaXJfcwkqZGlyc3RydWN0ID0gKHN0cnVjdCBkaXJfcyAqKSBkaXI7CisKKwkoKnJlYWxfcmV3aW5kZGlyKShkaXJzdHJ1Y3QtPmRpcik7CisJaWYgKGRpcnN0cnVjdC0+ZGlyZWN0KQorCQlyZXR1cm47CisJCisJcHRocmVhZF9tdXRleF9sb2NrKCYoZGlyc3RydWN0LT5sb2NrKSk7CisJZGlyc3RydWN0LT5wb3MgPSAwOworCWZyZWVfY2FjaGVkX2RpcihkaXJzdHJ1Y3QpOworCWNhY2hlX2RpcnN0cnVjdChkaXJzdHJ1Y3QpOworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCYoZGlyc3RydWN0LT5sb2NrKSk7Cit9CisKK2ludCBkaXJmZChESVIgKmRpcikKK3sKKwlzdHJ1Y3QgZGlyX3MJKmRpcnN0cnVjdCA9IChzdHJ1Y3QgZGlyX3MgKikgZGlyOworCWludCBmZCA9ICgqcmVhbF9kaXJmZCkoZGlyc3RydWN0LT5kaXIpOworCisJREVCVUdfRElSKHByaW50ZigiZGlyZmQgJWQsICVwXG4iLCBmZCwgcmVhbF9kaXJmZCkpOworCXJldHVybiBmZDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvY29tZXJyZy1kZXYuaW5mbyBiL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvY29tZXJyZy1kZXYuaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmQzNDRiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9jb21lcnJnLWRldi5pbmZvCkBAIC0wLDAgKzEsNCBAQAorREVTQ1I9IlRoZSBDb21tb24gRXJyb3IgRGVzY3JpcHRpb24gbGlicmFyeS4iCitTRUNUSU9OX01BVENIPSJEZXZlbG9wbWVudCIKK1NFQ1RJT05fTkFNRT0iRGV2ZWxvcG1lbnQiCitGSUxFPWNvbV9lcnIuaW5mbwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9jb21lcnJnLWRldi5tZW51IGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9jb21lcnJnLWRldi5tZW51Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGRhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2NvbWVycmctZGV2Lm1lbnUKQEAgLTAsMCArMSw3IEBACis/cGFja2FnZShjb21lcnJnLWRldik6bmVlZHM9ImR3d3ciIHNlY3Rpb249IkFwcHMvUHJvZ3JhbW1pbmciXAorICB0aXRsZT0iVGhlIGNvbV9lcnIgbGlicmFyeSIgXAorICBsb25ndGl0bGU9IlRoZSBDb21tb24gRXJyb3IgRGVzY3JpcHRpb24gbGlicmFyeSJcCisgIGRlc2NyaXB0aW9uPSJsaWJjb21lcnIgaXMgYW4gYXR0ZW1wdCB0byBwcmVzZW50IGEgY29tbW9uIGVycm9yLWhhbmRsaW5nIG1lY2hhbmlzbSB0byBcCisJbWFuaXB1bGF0ZSB0aGUgbW9zdCBjb21tb24gZm9ybSBvZiBlcnJvciBjb2RlIGluIGEgZmFzaGlvbiB0aGF0IGRvZXMgbm90IFwKKwloYXZlIHRoZSBwcm9ibGVtcyBpZGVudGlmaWVkIHdpdGggbWVjaGFuaXNtcyBjb21tb25seSBpbiB1c2UuIiBcCisgIGNvbW1hbmQ9Ii91c3IvZG9jL2NvbWVycmctZGV2L2h0bWwtaW5mby9jb21fZXJyX3RvYy5odG1sIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9lMmZzbGlic2ctZGV2LmluZm8gYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2UyZnNsaWJzZy1kZXYuaW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJlOTUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9lMmZzbGlic2ctZGV2LmluZm8KQEAgLTAsMCArMSw0IEBACitERVNDUj0iTGlicmFyeSBvZiByb3V0aW5lcyB0byBtYW5pcHVsYXRlIGFuIGV4dDIgZmlsZXN5c3RlbS4iCitTRUNUSU9OX01BVENIPSJEZXZlbG9wbWVudCIKK1NFQ1RJT05fTkFNRT0iRGV2ZWxvcG1lbnQiCitGSUxFPWxpYmV4dDJmcy5pbmZvCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2UyZnNsaWJzZy1kZXYubWVudSBiL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvZTJmc2xpYnNnLWRldi5tZW51Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhY2U4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2UyZnNsaWJzZy1kZXYubWVudQpAQCAtMCwwICsxLDQgQEAKKz9wYWNrYWdlKGUyZnNsaWJzZy1kZXYpOm5lZWRzPSJkd3d3IiBzZWN0aW9uPSJBcHBzL1Byb2dyYW1taW5nIlwKKyAgdGl0bGU9IlRoZSBleHQyZnMgbGlicmFyeS4iIFwKKyAgbG9uZ3RpdGxlPSJBIGxpYnJhcnkgdG8gaGFuZGxlIGxvdy1sZXZlbCBzdHJ1Y3R1cmVzIGluIGFuIGV4dDIgZmlsZXN5c3RlbSJcCisgIGNvbW1hbmQ9Ii91c3IvZG9jL2UyZnNsaWJzZy1kZXYvaHRtbC1pbmZvL2xpYmV4dDJmc190b2MuaHRtbCIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvbGlicy9jb21lcnIyZy5maWxlcyBiL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvbGlicy9jb21lcnIyZy5maWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjFmNTUyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9saWJzL2NvbWVycjJnLmZpbGVzCkBAIC0wLDAgKzEsMiBAQAorbGliL2xpYmNvbV9lcnIuc28uPy4qCitsaWIvbGliY29tX2Vyci5zby4/CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvY29udHJvbCBiL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvbGlicy9jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMDUxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvY29udHJvbApAQCAtMCwwICsxLDExNCBAQAorU291cmNlOiBlMmZzcHJvZ3MKK1NlY3Rpb246IGJhc2UKK1ByaW9yaXR5OiByZXF1aXJlZAorTWFpbnRhaW5lcjogWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPgorU3RhbmRhcmRzLVZlcnNpb246IDIuNC4wLjAKKworUGFja2FnZTogZTJmc3Byb2dzCitFc3NlbnRpYWw6IHllcworRGVwZW5kczogJHtzaGxpYnM6RGVwZW5kc30KK0NvbmZsaWN0czogZTJmc3Byb2dzZywgZHVtcCAoPDwgMC40YjQtNCksIHF1b3RhICg8PCAxLjU1LTguMSkKK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogVGhlIEVYVDIgZmlsZSBzeXN0ZW0gdXRpbGl0aWVzLgorIEVYVDIgc3RhbmRzIGZvciAiRXh0ZW5kZWQgRmlsZXN5c3RlbSIsIHZlcnNpb24gMi4gSXQncyB0aGUgbWFpbgorIGZpbGVzeXN0ZW0gdHlwZSB1c2VkIGZvciBoYXJkIGRpc2tzIG9uIERlYmlhbiBhbmQgb3RoZXIgTGludXggc3lzdGVtcy4KKyAuCisgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHByb2dyYW1zIGZvciBjcmVhdGluZywgY2hlY2tpbmcsIGFuZCBtYWludGFpbmluZyBFWFQyCisgZmlsZXN5c3RlbXMsIGFuZCB0aGUgZ2VuZXJpYyBgZnNjaycgd3JhcHBlci4KKyAuCisgVGhpcyByZWxlYXNlIG1heSBicmVhayBvbGRlciB2ZXJzaW9ucyBvZiBkdW1wIGFuZCBxdW90YS4KKworUGFja2FnZTogY29tZXJyMmcKK0RlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9CitDb25mbGljdHM6IGUyZnNwcm9ncyAoPDwgMS4xMC02KSwgY29tZXJyMgorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBUaGUgQ29tbW9uIEVycm9yIERlc2NyaXB0aW9uIGxpYnJhcnkgLSBzaGFyZWQgbGlicmFyaWVzLgorIGxpYmNvbWVyciBpcyBhbiBhdHRlbXB0IHRvIHByZXNlbnQgYSBjb21tb24gZXJyb3ItaGFuZGxpbmcgbWVjaGFuaXNtIHRvCisgbWFuaXB1bGF0ZSB0aGUgbW9zdCBjb21tb24gZm9ybSBvZiBlcnJvciBjb2RlIGluIGEgZmFzaGlvbiB0aGF0IGRvZXMgbm90CisgaGF2ZSB0aGUgcHJvYmxlbXMgaWRlbnRpZmllZCB3aXRoIG1lY2hhbmlzbXMgY29tbW9ubHkgaW4gdXNlLgorIC4KKyBJdCBpcyBtYWlubHkgdXNlZCBieSB0aGUgRVhUMi1maWxlc3lzdGVtIHRvb2xzLgorCitQYWNrYWdlOiBzczJnCitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfQorQ29uZmxpY3RzOiBlMmZzcHJvZ3MgKDw8IDEuMTAtNiksIHNzMgorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiAiU3ViLVN5c3RlbSIgbGlicmFyeSBmb3Igc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcGFyc2luZyAtIHNoYXJlZCBsaWJzCisgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBzaGFyZWQgbGlicyB0byBzdXBwb3J0IGNvbW1hbmQtbGluZQorIGludGVyZmFjZSBwYXJzZXJzIGdlbmVyYXRlZCB3aXRoIHRoZSBzc2ctZGV2IHBhY2thZ2UuCisgLiAKKyBJdCB3YXMgb3JpZ2luYWxseSBpbnNwaXJlZCBieSB0aGUgTXVsdGljcyBTdWJTeXN0ZW0gbGlicmFyeS4KKworUGFja2FnZTogZTJmc2xpYnNnCitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfQorUHJvdmlkZXM6IGV4dDJmczJnLCBlMnAyZywgdXVpZDFnCitDb25mbGljdHM6IGUyZnNwcm9ncyAoPD0gMS4xMC03KQorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBUaGUgRVhUMiBmaWxlIHN5c3RlbSBzaGFyZWQgbGlicy4KKyBFWFQyIHN0YW5kcyBmb3IgIkV4dGVuZGVkIEZpbGVzeXN0ZW0iLCB2ZXJzaW9uIDIuIEl0J3MgdGhlIGZpbGVzeXN0ZW0gdHlwZQorIHVzZWQgZm9yIGhhcmQgZGlza3Mgb24gRGViaWFuIGFuZCBvdGhlciBMaW51eCBzeXN0ZW1zLgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgc2hhcmVkIGxpYnJhcmllcyBuZWVkZWQgYnkgdGhlIHV0aWxpdHkgcHJvZ3JhbXMuCisKK1BhY2thZ2U6IGNvbWVycmctZGV2CitTZWN0aW9uOiBkZXZlbAorUHJpb3JpdHk6IGV4dHJhCitEZXBlbmRzOiAke2xpYmNkZXY6RGVwZW5kc30sIGNvbWVycjJnCitTdWdnZXN0czogZG9jLWJhc2UKK0NvbmZsaWN0czogZTJmc3Byb2dzICg8PCAxLjEwLTYpLCBjb21lcnItZGV2CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IFRoZSBDb21tb24gRXJyb3IgRGVzY3JpcHRpb24gbGlicmFyeSAtIGhlYWRlcnMgYW5kIHN0YXRpYyBsaWJyYXJpZXMuCisgbGliY29tZXJyIGlzIGFuIGF0dGVtcHQgdG8gcHJlc2VudCBhIGNvbW1vbiBlcnJvci1oYW5kbGluZyBtZWNoYW5pc20gdG8KKyBtYW5pcHVsYXRlIHRoZSBtb3N0IGNvbW1vbiBmb3JtIG9mIGVycm9yIGNvZGUgaW4gYSBmYXNoaW9uIHRoYXQgZG9lcyBub3QKKyBoYXZlIHRoZSBwcm9ibGVtcyBpZGVudGlmaWVkIHdpdGggbWVjaGFuaXNtcyBjb21tb25seSBpbiB1c2UuCisKK1BhY2thZ2U6IHNzZy1kZXYKK1NlY3Rpb246IGRldmVsCitQcmlvcml0eTogZXh0cmEKK0RlcGVuZHM6ICR7bGliY2RldjpEZXBlbmRzfSwgc3MyZworQ29uZmxpY3RzOiBlMmZzcHJvZ3MgKDw8IDEuMTAtNiksIHNzLWRldgorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiAiU3ViLVN5c3RlbSIgbGlicmFyeSBmb3Igc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcGFyc2luZyAtIGRldmVsLiBmaWxlcworIFRoaXMgcGFja2FnZSBpbmNsdWRlcyBhIHRvb2wgdGhhdCBwYXJzZXMgYSBjb21tYW5kIHRhYmxlIHRvIGdlbmVyYXRlCisgYSBzaW1wbGUgY29tbWFuZC1saW5lIGludGVyZmFjZSBwYXJzZXIsIHRoZSBpbmNsdWRlIGZpbGVzIG5lZWRlZCB0bworIGNvbXBpbGUgYW5kIHVzZSBpdCwgYW5kIHRoZSBzdGF0aWMgbGlicy4KKyAuIAorIEl0IHdhcyBvcmlnaW5hbGx5IGluc3BpcmVkIGJ5IHRoZSBNdWx0aWNzIFN1YlN5c3RlbSBsaWJyYXJ5LgorCitQYWNrYWdlOiBlMmZzbGlic2ctZGV2CitTZWN0aW9uOiBkZXZlbAorUHJpb3JpdHk6IGV4dHJhCitEZXBlbmRzOiAke2xpYmNkZXY6RGVwZW5kc30sIGUyZnNsaWJzZywgY29tZXJyZy1kZXYKK1N1Z2dlc3RzOiBkb2MtYmFzZQorUHJvdmlkZXM6IGV4dDJmc2ctZGV2LCBlMnBnLWRldiwgdXVpZGctZGV2CitDb25mbGljdHM6IGUyZnNwcm9ncyAoPDwgMS4xMC02KSwgZTJmc2xpYnMtZGV2CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IFRoZSBoZWFkZXJzIGFuZCBzdGF0aWMgbGlicmFyaWVzIGZvciBleHQyZnMtYXdhcmUgdG9vbHMtZGV2ZWxvcG1lbnQuCisgRVhUMkZTIHN0YW5kcyBmb3IgIkV4dGVuZGVkIEZpbGVzeXN0ZW0iLCB2ZXJzaW9uIDIuIEl0J3MgdGhlIGZpbGVzeXN0ZW0KKyB0eXBlIHVzZWQgZm9yIGhhcmQgZGlza3Mgb24gRGViaWFuIGFuZCBvdGhlciBMaW51eCBzeXN0ZW1zLgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGhlYWRlcnMgYW5kIHNoYXJlZCBsaWJyYXJpZXMgbmVlZGVkIHRvIGNvbXBpbGUKKyBleHQyZnMtYXdhcmUgcHJvZ3JhbXMuIE9ubHkgcHJvZ3JhbW1lcnMgdGhhdCByZWFsbHkgbWFuaXB1bGF0ZQorIGZlYXR1cmVzIHNwZWNpZmljIHRvIHRoZSBleHQyIGZpbGVzeXN0ZW0gd2lsbCBuZWVkIHRoaXMuIE1vc3QKKyBwcm9ncmFtbWVycyB3aWxsIHVzZSB0aGUgZ2VuZXJpYyBmaWxlc3lzdGVtLWluZGVwZW5kZW50IGludGVyZmFjZQorIGZyb20gbGliYy4KKyAuCisgSXQgYWxzbyBjb250YWlucyBkZXYgZmlsZXMgZm9yIDIgb3RoZXIgbGlicyAoZTJwIGFuZCB1dWlkKSB1c2VkIGJ5CisgdGhlIGUyZnNwcm9ncywgYnV0IHdoaWNoIGFyZSBub3QgeWV0IHBhY2thZ2VkIGFsbCBieSB0aGVtc2VsdmVzCisgYmVjYXVzZSB0aGV5IGxhY2sgZG9jdW1lbnRhdGlvbi4gVGhleSBtYXkgYWxzbyBsYWNrIHNvbWUgc3VwcG9ydAorIGZpbGVzLCBieSBJIGNhbid0IHJlYWxseSBrbm93IHVudGlsIHNvbWVvbmUgdXNlcyB0aGVtLi4uCisgLgorIGxpYmUycCBpcyBmb3IgdXNlci1sZXZlbCBlMmZzcHJvZ3MgY29tbWFuZHMuICBJdCdzIHVzZWQgYnkgZHVtcGUyZnMsCisgY2hhdHRyLCBhbmQgbHNhdHRyLiAgRnVuY3Rpb25zIGluIGxpYmUycCB0eXBpY2FsbHkgaGF2ZSB0d28KKyBjaGFyYWN0ZXJpc3RpY3MgKGEpIGRvbid0IHJlcXVpcmUgdGhhdCBibG9jayBkZXZpY2UgY29udGFpbmluZyB0aGUKKyBmaWxlc3lzdGVtIGJlIG9wZW5lZCBkaXJlY3RseSAoZnVuY3Rpb25zIGluIGxpYmV4dDJmcyBkbyksIGFuZCAoYikKKyBsaWJlMnAgdHlwaWNhbGx5IGNvbnRhaW5zIHByaW50ZiBzdGF0ZW1lbnRzIG9yIHBhcnNlIHVzZXIgaW5wdXQsIGFuZCBzbworIGhhdmUgbW9yZSBpbnRlcm5hdGlvbmFsaXphdGlvbiBpc3N1ZXMuCisgLgorIGxpYnV1aWQgZ2VuZXJhdGVzIGFuZCBwYXJzZXMgMTI4LWJpdCB1bml2ZXJzYWxseSB1bmlxdWUgaWQncyAoVVVJRCdzKSwKKyB1c2luZyBhIHN0YW5kYXJkIHdoaWNoIGlzIGJsZXNzZWQgYnkgYm90aCBNaWNyb3NvZnQgYW5kIERDRSwgYW5kIGlzCisgYmVpbmcgcHJvcG9zZWQgYXMgYW4gaW50ZXJuZXQgc3RhbmRhcmQuICBTZWUgdGhlIGludGVybmV0LWRyYWZ0OgorIC4KKyAgICAgICAgICAgICAgICBkcmFmdC1sZWFjaC11dWlkcy1ndWlkcy0wMS50eHQKKyAuCisgZm9yIG1vcmUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvZTJmc2xpYnNnLmZpbGVzIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9saWJzL2UyZnNsaWJzZy5maWxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzc3MDg0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9saWJzL2UyZnNsaWJzZy5maWxlcwpAQCAtMCwwICsxLDMgQEAKK2xpYi8qLnNvLj8uKgorbGliLyouc28uPwordXNyL2RvYy9lMmZzbGlic2cvKgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9saWJzL3J1bGVzIGIvZTJmc3Byb2dzL2RlYmlhbi9hdHRpYy9saWJzL3J1bGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZjNjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvcnVsZXMKQEAgLTAsMCArMSwxODIgQEAKKyMhIC91c3IvYmluL21ha2UgLWYKKyMgLSotIG1ha2VmaWxlIC0qLQorIworIyBJbnZva2UgZWFjaCB0YXJnZXQgd2l0aCBgLi9kZWJpYW4vcnVsZXMgPHRhcmdldD4nLiAgQWxsIHRhcmdldHMgc2hvdWxkIGJlCisjIGludm9rZWQgd2l0aCB0aGUgcGFja2FnZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyMKKyMgVGhlIGBiaW5hcnknIHRhcmdldCBtdXN0IGJlIHJ1biBhcyByb290LCBhcyBpdCBuZWVkcyB0byBpbnN0YWxsIGZpbGVzIHdpdGgKKyMgc3BlY2lmaWMgb3duZXJzaGlwcy4KKworIyBVbmNvbW1lbnQgdGhpcyB0byB0dXJuIG9uIHZlcmJvc2UgbW9kZS4KK2V4cG9ydCBESF9WRVJCT1NFPTEKKworcGFja2FnZSA9IGUyZnNwcm9ncworQVJDSCA9ICQoc2hlbGwgZHBrZyAtLXByaW50LWFyY2hpdGVjdHVyZSkKKworIyBmaW5kIHRoZSB2ZXJzaW9uIGZvciB0aGUgbWFpbiBwYWNrYWdlLCBmcm9tIGNoYW5nZWxvZyBmaWxlCitNQUlOX1ZFUlNJT04gPSAkKHNoZWxsIGhlYWQgLTEgZGViaWFuL2NoYW5nZWxvZyB8IGN1dCAnLWQgJyAtZiAyIHwgc2VkICdzL1soKV0vL2cnKQorIyBmaW5kIHZlcnNpb25zIGZvciBsaWJyYXJpZXMgZ29pbmcgaW50byB0aGVpciBvd24gcGFja2FnZXMsIGZyb20gdGhlaXIgTWFrZWZpbGUuaW4ncworQ09NRVJSX1ZFUlNJT04gPSAkKHNoZWxsIGdyZXAgRUxGX1ZFUlNJT04gbGliL2V0L01ha2VmaWxlLmluIHwgY3V0ICctZCAnIC1mMykKK0NPTUVSUl9NQUpPUiA9ICQod29yZCAxLCQoc3Vic3QgLiwgLCQoQ09NRVJSX1ZFUlNJT04pKSkKK1NTX1ZFUlNJT04gPSAkKHNoZWxsIGdyZXAgRUxGX1ZFUlNJT04gbGliL3NzL01ha2VmaWxlLmluIHwgY3V0ICctZCAnIC1mMykKK1NTX01BSk9SID0gJCh3b3JkIDEsJChzdWJzdCAuLCAsJChTU19WRVJTSU9OKSkpCisKK3RvcGRpciA9ICQoc2hlbGwgcHdkKQorZGViZGlyID0gJCh0b3BkaXIpL2RlYmlhbgorbWFpbmRpciA9ICQoZGViZGlyKS90bXAKK2J1aWxkZGlyID0gJCh0b3BkaXIpL2J1aWxkZGlyCitkb2NkaXIgPSAkKG1haW5kaXIpL3Vzci9kb2MvJChwYWNrYWdlKQorCitTVUJQQUNLQUdFU19ESVJTID0gdG1wIGUyZnNsaWJzZyBlMmZzbGlic2ctZGV2IGNvbWVyciQoQ09NRVJSX01BSk9SKWcgY29tZXJyZy1kZXYgXAorCXNzJChTU19NQUpPUilnIHNzZy1kZXYKKworaW5zdGFsbGRvYyA9IGluc3RhbGwgLW0gNjQ0CitpbnN0YWxsYmluID0gaW5zdGFsbCAtbSA3NTUKKworaWZlcSAoJChBUkNIKSxhbHBoYSkKK0NDT1BUUyA9IC1nIC1PMiAtZnNpZ25lZC1jaGFyIC1ESEFWRV9ORVRJTkVUX0lOX0gKK0xJQkMtREVWID0gbGliYzYuMS1kZXYKK2Vsc2UKK0NDT1BUUyA9IC1nIC1PMiAtZnNpZ25lZC1jaGFyCitMSUJDLURFViA9IGxpYmM2LWRldgorZW5kaWYKKworYnVpbGQ6IGNvbmZpZ3VyZWQKKwlkaF90ZXN0ZGlyCisJbWFrZSAtQyAkKGJ1aWxkZGlyKQorCW1ha2UgLUMgJChidWlsZGRpcikvbWlzYyBmaW5kc3VwZXIKKwljZCBkb2MgJiYgdGV4aTJodG1sIC1zcGxpdF9jaGFwdGVyIGxpYmV4dDJmcy50ZXhpbmZvCisJY2QgbGliL2V0ICYmIHRleGkyaHRtbCAtc3BsaXRfY2hhcHRlciAtZXhwYW5kaW5mbyBjb21fZXJyLnRleGluZm8KKwl0b3VjaCBidWlsZAorCitjb25maWd1cmVkOgorCWRoX3Rlc3RkaXIKKwlta2RpciAtcCAkKGJ1aWxkZGlyKQorCWNkICQoYnVpbGRkaXIpICYmIENGTEFHUz0iJChDRkxBR1MpIiBcCisJCS4uL2NvbmZpZ3VyZSAtLWVuYWJsZS1lbGYtc2hsaWJzIC0tZW5hYmxlLWR5bmFtaWMtZTJmc2NrIFwKKwkJLS13aXRoLWNjb3B0cz0iJChDQ09QVFMpIgorCXRvdWNoIGNvbmZpZ3VyZWQKKworY2xlYW46CisJZGhfdGVzdGRpcgorCXJtIC1mIGJ1aWxkIGNvbmZpZ3VyZWQgaW5zdGFsbAorCS1tYWtlIC1DICQoYnVpbGRkaXIpIC1pIGRpc3RjbGVhbgorCXJtIC1yZiAkKGJ1aWxkZGlyKQorCXJtIC1mIGRvYy9saWJleHQyZnNfKi5odG1sIGxpYi9ldC9jb21fZXJyXyouaHRtbAorCWRoX2NsZWFuCisKK2JpbmFyeS1pbmRlcDogYnVpbGQKKyAgIyBubyBhcmNoLWluZGVwZW5kYW50IGRlYnMuCisKK2JpbmFyeS1hcmNoOiBidWlsZAorCWRoX3Rlc3R2ZXJzaW9uIDAuNTYgIyA9PSAwLjUzICsgZml4ZXMKKwlkaF90ZXN0ZGlyIC1hCisJZGhfdGVzdHJvb3QgLWEKKwlkaF9jbGVhbiAtYSAtaworCWRoX2luc3RhbGxkaXJzIC1hCisKKwltYWtlIC1DICQoYnVpbGRkaXIpIGluc3RhbGwgREVTVERJUj0kKG1haW5kaXIpCisJaW5zdGFsbCAtbSA3NTUgJChidWlsZGRpcikvbWlzYy9maW5kc3VwZXIgJChtYWluZGlyKS9zYmluCisgICMgc3RhdGljIGxpYnMgYW5kIC5oIGZpbGVzCisJbWFrZSAtQyAkKGJ1aWxkZGlyKSBpbnN0YWxsLWxpYnMgREVTVERJUj0kKG1haW5kaXIpCisJaW5zdGFsbCAtbSA2NDQgJChidWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQobWFpbmRpcikvdXNyL2luY2x1ZGUvc3MvCisKKyMgZml4IGFuZCBpbnN0YWxsIGNvbXBpbGVfZXQgc2NyaXB0CisJc2VkIHMlJCh0b3BkaXIpL2xpYi9ldCUvdXNyL3NoYXJlL2NvbWVyciUgXAorCSAgPCQoYnVpbGRkaXIpL2xpYi9ldC9jb21waWxlX2V0IFwKKwkgID4kKGRlYmRpcikvY29tZXJyZy1kZXYvdXNyL2Jpbi9jb21waWxlX2V0CisJY2htb2QgNzU1ICQoZGViZGlyKS9jb21lcnJnLWRldi91c3IvYmluL2NvbXBpbGVfZXQKKyMgYWRkIHN1cHBvcnQgZmlsZXMgZm9yIGNvbXBpbGVfZXQKKwlpbnN0YWxsIC1tIDY0NCBsaWIvZXQvZXRfYy5hd2sgbGliL2V0L2V0X2guYXdrIFwKKwkgICQoZGViZGlyKS9jb21lcnJnLWRldi91c3Ivc2hhcmUvY29tZXJyLworCisjIGZpeCBhbmQgaW5zdGFsbCBta19jbWRzIHNjcmlwdAorCXNlZCBzJSQodG9wZGlyKS9saWIvc3MlL3Vzci9zaGFyZS9zcyUgXAorCSAgPCQoYnVpbGRkaXIpL2xpYi9zcy9ta19jbWRzIFwKKwkgID4kKGRlYmRpcikvc3NnLWRldi91c3IvYmluL21rX2NtZHMKKwljaG1vZCA3NTUgJChkZWJkaXIpL3NzZy1kZXYvdXNyL2Jpbi9ta19jbWRzCisjIGFkZCBzdXBwb3J0IGZpbGVzIGZvciBta19jbWRzCisJaW5zdGFsbCAtbSA2NDQgbGliL3NzL2N0X2MuYXdrIGxpYi9zcy9jdF9jLnNlZCBcCisJICAkKGRlYmRpcikvc3NnLWRldi91c3Ivc2hhcmUvc3MvCisKKyMgZG9jcworCW1rZGlyIC1wICQoZGViZGlyKS9lMmZzbGlic2ctZGV2L3Vzci9kb2MvZTJmc2xpYnNnCisJbG4gLXNmIGUyZnNsaWJzZyAkKGRlYmRpcikvZTJmc2xpYnNnLWRldi91c3IvZG9jL2UyZnNsaWJzZy1kZXYKKwlta2RpciAtcCAkKG1haW5kaXIpL3Vzci9kb2MvZTJmc2xpYnNnCisJbG4gLXNmIGUyZnNsaWJzZyAkKG1haW5kaXIpL3Vzci9kb2MvZTJmc3Byb2dzCisJbWtkaXIgLXAgJChkZWJkaXIpL2NvbWVycmctZGV2L3Vzci9kb2MvY29tZXJyJChDT01FUlJfTUFKT1IpZworCWxuIC1zZiBjb21lcnIkKENPTUVSUl9NQUpPUilnICQoZGViZGlyKS9jb21lcnJnLWRldi91c3IvZG9jL2NvbWVycmctZGV2CisJbWtkaXIgLXAgJChkZWJkaXIpL3NzZy1kZXYvdXNyL2RvYy9zcyQoU1NfTUFKT1IpZworCWxuIC1zZiBzcyQoU1NfTUFKT1IpZyAkKGRlYmRpcikvc3NnLWRldi91c3IvZG9jL3NzZy1kZXYKKwlkaF9pbnN0YWxsZG9jcyAtYQorCisgICMgSFRNTCBkb2NzCisJaW5zdGFsbCAtZCAkKGRlYmRpcikvZTJmc2xpYnNnLWRldi91c3IvZG9jL2UyZnNsaWJzZy1kZXYvaHRtbC1pbmZvLworCWluc3RhbGwgLXAgJCh0b3BkaXIpL2RvYy9saWJleHQyZnNfKi5odG1sIFwKKwkgICAkKGRlYmRpcikvZTJmc2xpYnNnLWRldi91c3IvZG9jL2UyZnNsaWJzZy1kZXYvaHRtbC1pbmZvLworCWluc3RhbGwgLWQgJChkZWJkaXIpL2NvbWVycmctZGV2L3Vzci9kb2MvY29tZXJyZy1kZXYvaHRtbC1pbmZvLworCWluc3RhbGwgLXAgJCh0b3BkaXIpL2xpYi9ldC9jb21fZXJyXyouaHRtbCBcCisJICAgJChkZWJkaXIpL2NvbWVycmctZGV2L3Vzci9kb2MvY29tZXJyZy1kZXYvaHRtbC1pbmZvLworCisgICMgdGV4aW5mbyBkb2NzCisJaW5zdGFsbCAtcCAkKHRvcGRpcikvZG9jL2xpYmV4dDJmcy50ZXhpbmZvIFwKKwkgICAkKGRlYmRpcikvZTJmc2xpYnNnLWRldi91c3IvZG9jL2UyZnNsaWJzZy9saWJleHQyZnMudGV4aQorCWluc3RhbGwgLXAgJCh0b3BkaXIpL2xpYi9ldC9jb21fZXJyLnRleGluZm8gXAorCSAgICQoZGViZGlyKS9jb21lcnJnLWRldi91c3IvZG9jL2NvbWVycjJnL2NvbV9lcnIudGV4aQorCisgICMgZG9jLWJhc2Ugc3VwcG9ydAorCWluc3RhbGwgLWQgJChkZWJkaXIpL2UyZnNsaWJzZy1kZXYvdXNyL3NoYXJlL2RvYy1iYXNlLworCWluc3RhbGwgLXAgLW0gNjQ0ICQoZGViZGlyKS9saWJleHQyZnMuZG9jYmFzZSBcCisJICAgJChkZWJkaXIpL2UyZnNsaWJzZy1kZXYvdXNyL3NoYXJlL2RvYy1iYXNlL2xpYmV4dDJmcworCWluc3RhbGwgLWQgJChkZWJkaXIpL2NvbWVycmctZGV2L3Vzci9zaGFyZS9kb2MtYmFzZS8KKwlpbnN0YWxsIC1wIC1tIDY0NCAkKGRlYmRpcikvY29tX2Vyci5kb2NiYXNlIFwKKwkgICAkKGRlYmRpcikvY29tZXJyZy1kZXYvdXNyL3NoYXJlL2RvYy1iYXNlL2NvbV9lcnIKKworICAjIGV4YW1wbGVzCisJZGhfaW5zdGFsbGV4YW1wbGVzIC1hCisKKyAgIyBkaF9pbnN0YWxsbWFucGFnZXMgc3RpbGwgbWFrZXMgYSBtZXNzIGFzIG9mIDAuNTQgKHNlZSBiZWxvdyBkaF9tb3ZlZmlsZXMpCisJaW5zdGFsbCAtcCAkKHRvcGRpcikvbGliL2V0L2NvbXBpbGVfZXQuMSAkKG1haW5kaXIpL3Vzci9tYW4vbWFuMS8KKwlpbnN0YWxsIC1kICQobWFpbmRpcikvdXNyL21hbi9tYW4zLworCWluc3RhbGwgLXAgJCh0b3BkaXIpL2xpYi9ldC9jb21fZXJyLjMgJChtYWluZGlyKS91c3IvbWFuL21hbjMvCisJbG4gLXMgZTJmc2NrLjggJChtYWluZGlyKS91c3IvbWFuL21hbjgvZnNjay5leHQyLjgKKwlsbiAtcyBta2UyZnMuOCAkKG1haW5kaXIpL3Vzci9tYW4vbWFuOC9ta2ZzLmV4dDIuOAorCisJZGhfbW92ZWZpbGVzIC1hCisgICMgY2xlYW51cCBlbXB0eSBkaXJzCisJY2QgICQobWFpbmRpcikgJiYgcm1kaXIgdXNyL21hbi9jYXQ/IGJpbiBsaWIgdXNyL2luY2x1ZGUvKiB1c3IvaW5jbHVkZSBcCisJCXVzci9pbmZvIHVzci9saWIgdXNyL21hbi9tYW4zIHVzci9kb2MvZTJmc2xpYnNnCisKKyMJZGhfaW5zdGFsbG1lbnUgLWEKKworICAjIGJyb2tlbiArIHVzZWxlc3MgaW4gMC41MgorICAjCWRoX2luc3RhbGxtYW5wYWdlcyAtYQorCisJZGhfdW5kb2N1bWVudGVkIC1hCisKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncyAtcGUyZnNsaWJzZyAtcGNvbWVyciQoQ09NRVJSX01BSk9SKWcgLXBzcyQoU1NfTUFKT1IpZyBDaGFuZ2VMb2cKKworCWRoX3N0cmlwIC1hCisJZGhfY29tcHJlc3MgLWEKKwlkaF9maXhwZXJtcyAtYQorCisJZWNobyAibGliY2RldjpEZXBlbmRzPSQoTElCQy1ERVYpIiA+IGRlYmlhbi9jb21lcnJnLWRldi5zdWJzdHZhcnMKKwllY2hvICJsaWJjZGV2OkRlcGVuZHM9JChMSUJDLURFVikiID4gZGViaWFuL3NzZy1kZXYuc3Vic3R2YXJzCisJZWNobyAibGliY2RldjpEZXBlbmRzPSQoTElCQy1ERVYpIiA+IGRlYmlhbi9lMmZzbGlic2ctZGV2LnN1YnN0dmFycworCisJZGhfaW5zdGFsbGRlYiAtYQorCUxEX0xJQlJBUllfUEFUSD0kKGJ1aWxkZGlyKS9saWI6L2xpYjovdXNyL2xpYiBcCisJICBkaF9zaGxpYmRlcHMgLWEKKwlkaF9nZW5jb250cm9sIC11ICctaXNwJyAtcGUyZnNwcm9ncyAtcGUyZnNsaWJzZyAtcGUyZnNsaWJzZy1kZXYKKwlkaF9nZW5jb250cm9sIC11ICctaXNwJyAtcGNvbWVyciQoQ09NRVJSX01BSk9SKWcgLXBjb21lcnJnLWRldiBcCisJICAtdSAnLXYkKENPTUVSUl9WRVJTSU9OKS0kKE1BSU5fVkVSU0lPTiknCisJZGhfZ2VuY29udHJvbCAtdSAnLWlzcCcgLXBzcyQoU1NfTUFKT1IpZyAtcHNzZy1kZXYgXAorCSAgLXUgJy12JChTU19WRVJTSU9OKS0kKE1BSU5fVkVSU0lPTiknCisJZGhfbWFrZXNobGlicyAtYQorIwlkaF9kdSAtYQorCWRoX21kNXN1bXMgLWEKKwlkaF9idWlsZGRlYiAtYQorCitiaW5hcnk6IGJpbmFyeS1pbmRlcCBiaW5hcnktYXJjaAorCisuUEhPTlk6IGJpbmFyeSBiaW5hcnktYXJjaCBiaW5hcnktaW5kZXAgY2xlYW4gY2hlY2tyb290CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvc3MyZy5maWxlcyBiL2UyZnNwcm9ncy9kZWJpYW4vYXR0aWMvbGlicy9zczJnLmZpbGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNzE3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2F0dGljL2xpYnMvc3MyZy5maWxlcwpAQCAtMCwwICsxLDIgQEAKK2xpYi9saWJzcy5zby4/LioKK2xpYi9saWJzcy5zby4/CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2NoYW5nZWxvZyBiL2UyZnNwcm9ncy9kZWJpYW4vY2hhbmdlbG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Mzc3YWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2NoYW5nZWxvZwpAQCAtMCwwICsxLDM5MzQgQEAKK2UyZnNwcm9ncyAoMS40My4zLTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogRml4IGUyZnNjaydzIGhhbmRsaW5nIG9mIHRpbWVzdGFtcHMgb24gMzItYml0IHN5c3RlbSAoQ2xvc2VzOiAjODM2NTU5KQorICAqIEUyZnNjayB3aWxsIHNhbml0eSBjaGVjayBhbmQgcmVwYWlyIHRoZSBleHRyYSBpc2l6ZSBmaWVsZHMgaW4gaW5vZGVzCisgICAgYW5kIHRoZSBzdXBlcmJsb2NrLgorICAqIEZpeCBzcGFyYzY0IGNyYXNoZXMgd2hlbiBkZXJlZmVyZW5jaW5nIHVuYWxpZ25lZCBpbnRlZ2VycyBpbiBqb3VybmFsCisgICAgYmxvY2tzIHdoZW4gbWV0ZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAwNCBTZXAgMjAxNiAyMDo0MToyMSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDMuMi0yKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIEZpeCBidWlsZCByZXByb2R1Y2liaWxpdHkgcHJvYmxlbXMKKyAgKiBEb24ndCBoaWRlIHRoZSBsaW5rZXIgZmxhZ3MgZm9yIGUyZnNjay5zdGF0aWMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDAxIFNlcCAyMDE2IDIzOjMwOjU1IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40My4yLTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogQ2hhbmdlIHRoZSBkZWZhdWx0IGpvdXJuYWwgc2l6ZSB0byBiZSBsYXJnZXIgZm9yIGZpbGUgc3lzdGVtcyBsYXJnZXIKKyAgICB0aGFuIDEyOCBHQiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIG1ldGFkYXRhLWhlYXZ5IHdvcmtsb2FkcworICAqIENsYXJpZnkgdHVuZTJmcydzIG1lc3NhZ2Ugd2hlbiB0aGUgdXNlciBuZWVkcyB0byBydW4gZTJmc2NrCisgICAgKENsb3NlczogIzgyODAyMikKKyAgKiBGaXggYW4gYWxpZ25tZW50IGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2F1c2VkIHNwYXJjNjQgYXJjaGl0ZWN0dXJlcyB0bworICAgIGNyYXNoIHdoZW4gcmVwbGF5aW5nIHRoZSBqb3VybmFsIG9uIGZpbGUgc3lzdGVtcyB3aXRoIGEgNjQtYml0IGJsb2NrCisgICAgbnVtYmVyCisgICogRml4IGEgdHlwbyBpbiBkZWJ1Z2ZzIHdoZW4gcHJpbnRpbmcgb3V0IHRoZSBkdGltZSBmaWVsZCBvbiBmaWxlCisgICAgc3lzdGVtcyB3aXRoIGFuIGV4dGVuZGVkIHRpbWVzdGFtcAorICAqIEZpeCB0aGUgbG9naWMgaW4gZTJmc2NrIHdoaWNoIGRlY2lkZXMgd2hlbiB0byByZXBhaXIgbGVnYWN5IG5lZ2F0aXZlCisgICAgdGltZXN0YW1wIGVuY29kaW5ncy4KKyAgKiBBZGQgYSBjb21tYW5kIHRvIGRlYnVnZnMgdG8gY29weSB0aGUgaW5vZGUgc3RydWN0dXJlIGZyb20gb25lIGlub2RlCisgICAgdG8gYW5vdGhlcgorICAqIEZpeCByZXNpemUyZnMgc28gaXQgd2lsbCBub3QgY3Jhc2ggaWYgdGhlcmUgaXMgYW4gZXh0ZW5kZWQKKyAgICBhdHRyaWJ1dGUgYmxvY2sgYnV0IGl0IGRvZXNuJ3QgbmVlZCB0byBtaWdhdGUgYW55IGJsb2NrcyBkdXJpbmcKKyAgICBhbiBvZmYtbGluZSByZXNpemUKKyAgKiBGaXggYSBjcmFzaCB3aGVuIG1rZTJmcyBvciBkZWJ1Z2ZzIHRyaWVzIHRvIGNvcHkgaW4gYSBkaXJlY3RvcnkKKyAgICBoaWVyYXJjaHkgY29udGFpbmluZyBhbiBlbXB0eSBkaXJlY3RvcnkKKyAgKiBGaXggYSBidWcgaW4gZTJmc2NrIGNhdXNlZCBieSBhIHBvd2VyIGZhaWx1cmUgZHVyaW5nIGUyZnNjaydzIGpvdXJuYWwKKyAgICByZXBsYXkgY291bGQgbGVhdmUgdGhlIGZpbGUgc3lzdGVtIGluIGEgc3RhdGUgd2hlcmUgaWYgdGhlIGZpbGUKKyAgICBzeXN0ZW0gaXMgbW91bnRlZCB3aXRob3V0IGRvaW5nIGEgZnVsbCBlMmZzY2sgc2NhbiwgdGhlIGZpbGUgc3lzdGVtCisgICAgY291bGQgZ2V0IGNvcnJ1cHRlZAorICAqIEZpeCBiaWcgZW5kaWFuIGJ1Z3MgaW4gdGhlIGUydW5kbyBwcm9ncmFtCisgICogRml4IGRlYnVnZnMncyBsb2dkdW1wIHNvIGNvbW1hbmQgc28gaXQgY2FuIGNvcnJlY3RseSBoYW5kbGUgam91cm5hbHMKKyAgICB3aGljaCBhcmUgbGFyZ2VyIHRoYW4gMkdCCisgICogQWRkIG5ldyB0cmFuc2xhdGlvbnM6IEh1Z2FyaWFuIGFuZCBTZXJiaWFuCisgICogVXBkYXRlIHRoZSBDYXRhbGFuLCBDaGluZXNlLCBEYW5pc2gsIER1dGNoLCBGcmVuY2gsIEdlcm1hbiwgUG9saXNoLAorICAgIFN3ZWRpc2gsIFVrcmFpbmlhbiB0cmFuc2xhdGlvbnMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDAxIFNlcCAyMDE2IDAwOjU1OjEzIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40My4xLTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBGaXggdGhlIERpcmVjdCBJL08gZmFsbGJhY2sgY29kZSBpbiB0aGUgVW5peCBJL08gbWFuYWdlciBzbyBpdAorICAgIGltcGxlbWVudHMgcmVhZC1tb2RpZnktd3JpdGUgY29ycmVjdGx5LgorICAqIFRoZSBta2UyZnMgcHJvZ3JhbSB3aWxsIG5vdyB3YXJuIGlmIHRoZSB1c2VyIHNwZWNpZmllcyBhIGxhYmVsIHdoaWNoCisgICAgaXMgdG9vIGxvbmcuICAoQ2xvc2VzOiAjNzkxNjMwKQorICAqIENsZWFuIHVwIHZhcmlvdXMgbWFuIHBhZ2VzIChDbG9zZXM6ICM3NjYzNzksICM3NjExNDQsICM3NzA3NTAsCisgICAgIzQyODM2MSwgIzc2NjEyNykKKyAgKiBGaXggYnVnIHNvIHRoYXQgZGVidWdmcydzIHJkdW1wIGNvbW1hbmQgd29ya3Mgb24gdGhlIHJvb3QgZGlyZWN0b3J5CisgICAgKENsb3NlczogIzc2NjEyNSkKKyAgKiBGaXggdmFyaW91cyBEZWJpYW4gcGFja2FnaW5nIGlzc3VlcyAoQ2xvc2VzOiAjODI1ODY4KQorICAqIEJ1aWxkIGZ1bGx5IHNlY3VyaXR5IGhhcmRlbmVkIGJpbmFyaWVzCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAwNyBKdW4gMjAxNiAyMzowOTo1NSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDMtMykgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBGaXggdmFyaW91cyBkZWJpYW4gcGFja2FnaW5nIG5pdHMKKyAgKiBGaXggc3BlbGxpbmcgbWlzdGFrZXMgaW4gdGhlIGNvcHlyaWdodCBmaWxlcworICAqIEZpeCB2YXJpb3VzIHNwZWxsaW5nIG1pc3Rha2VzIGluIG1hbiBwYWdlcworICAqIEZpeCBwcm9qZWN0IHF1b3RhIGJ1Z3MgaW4gZTJmc2NrIGFuZCBta2UyZnMKKyAgKiBCdWlsZCBiaW5hcmllcyB3aXRoIGhhcmRlbmluZyBzdXBwb3J0CisgICogSW1wcm92ZSBlMmZzY2sgbWVzc2FnZXMgd2hlbiB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQgYW5kCisgICAgdGhlIHVzZXIgZGVjbGluZXMgdG8gZml4IHRoZSBqb3VybmFsLiAgKENsb3NlczogIzc2ODE2MikKKyAgKiBGaXggZGVidWdmcydzIGhhbmRsaW5nIG9mICJzZXRfYmcgPGJnPiBjaGVja3N1bSBjYWxjIiBvbiA2NC1iaXQgZmlsZQorICAgIHN5c3RlbXMuCisgICogU2ltcGxpZnkgdGhlIGRlYmlhbiBydWxlcyBmaWxlCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgV2VkLCAyNSBNYXkgMjAxNiAwMDo1MTozMyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDMtMikgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBVcGRhdGUgd2F0Y2ggZmlsZSB0byBjaGVjayBmb3IgdGhlIEdQRyBzaWduYXR1cmVzCisgICogVXNlIGRoX3VwZGF0ZV9hdXRvdG9vbHNfY29udHJvbCB0byB1cGRhdGUgY29uZmlnLntndWVzcyxzdWJ9CisgICAgYXV0b21hdGljYWxseSB3aGVuIGJ1aWxkaW5nIHRoZSBwYWNrYWdlLgorICAqIE9ubHkgdHJ5IHRvIHJ1biB1cGRhdGUtaW5pdHJhbWZzIGlmIGl0IGV4aXN0cworICAqIFRyYW5zaXRpb24gdG8gZGJnc3ltIHBhY2thZ2VzCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgRnJpLCAyMCBNYXkgMjAxNiAxNDowNzo0MCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDMtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIEZpeCBvciBpbXByb3ZlIG9mZnNldCBzdXBwb3J0IGluIG1rZTJmcywgZTJ1bmRvLCBhbmQgbGliZXh0MmZzCisgICogVXBkYXRlIGRlYmlhbiBwb2xpY3kgdmVyc2lvbiB0byAzLjkuOAorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMTcgTWF5IDIwMTYgMDE6MDQ6MjggLTA0MDAKKworZTJmc3Byb2dzICgxLjQzfldJUC4yMDE2LjAzLjE1LTIpIHNpZDsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBGVEJGUyBvbiBiaWctZW5kaWFuIHN5c3RlbXMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDE3IE1hciAyMDE2IDIyOjU1OjUyIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40M35XSVAuMjAxNi4wNS4xMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogQ2xlYW4gdXAgdmFyaW91cyBtYW4gcGFnZXMgYW5kIHVzYWdlIG1lc3NhZ2VzCisgICogRml4IHVwIGdjYyBhbmQgQ292ZXJpdHkgd2FybmluZ3MKKyAgKiBTdG9wIGJ1aWxkaW5nIHN0YXRpYyBiaW5hcmllcyB1c2luZyBkaWV0bGliYworICAqIEZpeCBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kYXJ5IG1lbW9yeSBhY2Nlc3MgaW4gcmVzaXplMmZzCisgICogRml4IHNwYXJzZV9zdXBlcjIgYnVncyBpbiBta2UyZnMgYW5kIHJlc2l6ZTJmcworICAqIFRoZSBta2UyZnMgcHJvZ3JhbSB3aWxsIG5vdyBzdXBwb3J0IG11bHRpcGxlIC1PIG9wdGlvbnMKKyAgKiBUaGUgZTJpbWFnZSBwcm9ncmFtIG5vdyBpZ25vcmVzIGNoZWNrc3VtIGVycm9yIHNvIHRoYXQgZGVidWdnaW5nCisgICAgc25hcHNob3RzIG9mIGEgZmlsZSBzeXN0ZW0gY2FuIGJlIHRha2VuIG9mIGEgYnJva2VuIGZpbGUgc3lzdGVtCisgICogRTJmc2NrIG5vdyBtb3JlIGNsZWFubHkgaGFuZGxlcyBjaGVja3N1bSBlcnJvcnMgd2hpbGUgcmVwbGF5aW5nIHRoZQorICAgIGpvdXJuYWwKKyAgKiBGaXggZTJmc2NrIHRvIG5vdCB0cnkgdG8gc2V0IGEgVVVJRCBpZiB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGlzCisgICAgZW5hYmxlZCBzaW5jZSB0aGlzIHdpbGwgYnJlYWsgdGhlIGNoZWNrc3VtcworICAqIEZpeCBlMmltYWdlIHNvIHByb2dyZXNzIGluZm9ybWF0aW9uIHdvbid0IGdldCBsZWFrZWQgdG8gc3Rkb3V0CisgICogRml4IGJ1Z3MgaW4gIm1rZTJmcyAtRSBvZmZzZXQ9Tk5OTiIgKENsb3NlczogIzgwMzYyOSkKKyAgKiBGaXggSHVyZCBwb3J0YWJpbGl0eSBpc3N1ZXMgKENsb3NlczogIzgyMjU3NikKKyAgKiBVcGRhdGUgaW5pdHJhbWZzIGluIGUyZnNwcm9ncydzIHBvc3RpbnN0IHNjcmlwdCBzbyB0aGUgaW5pdGlhbAorICAgIHJhbWRpc2sgZ2V0cyB0aGUgdXBkYXRlZCBlMmZzcHJvZ3MgYmluYXJpZXMgKENsb3NlczogIzgwNDIzNykKKyAgKiBXb3JrIGFyb3VuZCB0ZXhpMmR2aSBidWcgd2hpY2ggY2FuIGNhdXNlIGJ1aWxkIGZhaWx1cmVzIChDbG9zZXM6ICM4MjIyMjcpCisgICogRTJmc2NrIG5vdyBwcmludHMgIlJFQk9PVCBTWVNURU0iIGluc3RlYWQgb2YgIlJFQk9PVCBMSU5VWCIgdG8KKyAgICBhc3N1YWdlIHRoZSBzZW5zaWJpbGl0aWVzIG9mIEh1cmQgdXNlcnMgKENsb3NlczogIzc2OTgzOCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDEyIE1heSAyMDE2IDAwOjE4OjQ1IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40M35XSVAuMjAxNi4wMy4xNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4IHJlc2l6ZTJmcyBidWcgdGhhdCBjb3VsZCBsZWF2ZSBibG9jayBhbGxvY2F0aW9uIGJpdG1hcHMKKyAgICB1bmluaXRpYWxpemVkCisgICogVGhlIHR1bmUyZnMgcHJvZ3JhbSB3aWxsIGFzayB0aGUgdXNlciBmb3IgY29uZmlybWF0aW9uIGJlZm9yZQorICAgIHN0YXJ0aW5nIGRhbmdlcm91cyBvcGVyYXRpb25zIGlmIHRoZSB0ZXJtaW5hbCBpcyBhdmFpbGFibGUsIGFuZCBpdAorICAgIHdpbGwgcmVwbGF5IHRoZSBqb3VybmFsIGlmIG5lY2Vzc2FyeQorICAqIEZpeCBhIGJ1ZyB3aGljaCBpbiByYXJlIGNhc2VzIHdvdWxkIGNhdXNlIGUyZnNjayAtZkQgdG8gY29ycnVwdCBhbgorICAgIGV4dGVudC1tYXBwZWQgZGlyZWN0b3J5LgorICAqIEUyZnNjayB3aWxsIG5vdyBjaGVjayBmb3IgZXh0ZW50IG1hcHBlZCBpbm9kZXMgd2l0aCBubyBleHRlbnQgaGVhZGVyCisgICAgYW5kIGNsZWFyIHRoZW0gaWYgZm91bmQKKyAgKiBFMmZzY2sgbm93IGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBoZWFkZXIgZG9lc24ndAorICAgIHJlc3VsdCBpbiB0aGUgeGF0dHIgZXh0ZW5kaW5nIGJleW9uZCB0aGUgYm91bmRzIG9mIHRoZSBpbm9kZQorICAqIFRlYWNoIG1rZTJmcyB0byBwYXJzZSBhIGh1bWFuLXJlYWRhYmxlIGFyZ3VtZW50IGZvciAtaSBvcHRpb24KKyAgKiBUZWFjaCBta2UyZnMgdG8gYXV0b21hdGljYWxseSBoYW5kbGUgY3JlYXRpbmcgZmlsZSBzeXN0ZW1zID4gNTAwVCBieQorICAgIGF1dG9tYXRpY2FsbHkgZW5hYmxlIHRoZSBtZXRhX2JnIGZlYXR1cmUKKyAgKiBNa2UyZnMgd2lsbCBub3cgcHJvbXB0IGZvciB1c2VyIHZlcmlmaWNhdGlvbiBiZWZvcmUgcmV3cml0aW5nIGEgZmlsZQorICAgIHN5c3RlbSdzIHN1cGVyYmxvY2sgdXNpbmcgdGhlIC1TIG9wdGlvbgorICAqIE1rZTJmcyBubyBsb25nZXIgY29tcGxhaW5zIGlmIHRoZSB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBhIGZpbGUgc3lzdGVtCisgICAgdXNpbmcgdGhlIGVudGlyZSBibG9jayBkZXZpY2UgKGUuZy4sIHdpdGhvdXQgdXNpbmcgYSBwYXJ0aXRpb24pLgorICAgIFRoZSBtaW5vciBudW1iZXIgY29udmVudGlvbiBpcyBub3QgdXNlZCBieSBhbGwgYmxvY2sgZGV2aWNlcywgYW5kCisgICAgaXQncyBxdWl0ZSBub3JtYWwgaW4gc29tZSBjaXJjdW1zdGFuY2VzIHRvIGNyZWF0ZSBhIGZpbGUgc3lzdGVtCisgICAgb24gL2Rldi9zZGMgaW5zdGVhZCBvZiAvZGV2L3NkYzEKKyAgKiBEZWJ1Z2ZzIG5vdyBjYW4gcHJvcGVybHkgZGlzcGxheSBhbmQgc2V0IGV4dGVuZGVkIHRpbWVzdGFtcHMKKyAgKiBBZGQgYW4gZXh0Mi8zLzQgRlVTRSBzZXJ2ZXIKKyAgKiBGaXggYW4gIm1rZTJmcyAtZCIgYnVnIHdoaWNoIGNvdWxkIGNyZWF0ZSBpbm9kZXMgd2l0aCBpbnZhbGlkCisgICAgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrcworICAqIEZpeCBtaXNjZWxsYW5lb3VzIGZpbGUgZW5jcnlwdGlvbiBidWdzCisgICogRml4IG1pc2NlbGxhbmVvdXMgTU1QIGJ1Z3MgaW4gZGVidWdmcworICAqIFRoZSBlMmZzY2sgcHJvZ3JhbSB3aWxsIG5vIGxvbmdlciB1cGRhdGUgdGhlIHF1b3RhIGlub2RlcyB3aGVuIGl0IGlzCisgICAgaW50ZXJydXB0ZWQKKyAgKiBUaGUgZmlsZWZyYWcgcHJvZ3JhbSBub3cgYWNjb3VudHMgZm9yIGhvbGVzIGluIHNwYXJzZSBmaWxlcyBjcmVhdGVkCisgICAgYnkgdGhlIGZpbGUgcHVuY2ggb3BlcmF0aW9uIGFzIGFuIGV4cGVjdGVkL29wdGltYWwgbWFwcGluZworICAqIENsZWFuIHVwIGdjYy9jbGFuZyB3YXJuaW5ncworICAqIEFkZCBzdXBwb3J0IGZvciB0aGUgY2hlY2tzdW0gc2VlZCBmZWF0dXJlCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBwcm9qZWN0IHF1b3RhIGZlYXR1cmUKKyAgKiBBZGQgZmFsbG9jYXRlIHN1cHBvcnQgdG8gbGliZXh0MmZzIGFuZCB0byBkZWJ1Z2ZzCisgICogQ2xlYW4gdXAgdmFyaW91cyBtYW4gcGFnZXMgKENsb3NlczogIzc5ODQyNSkKKyAgKiBVcGRhdGUgZGViaWFuIHBvbGljeSBjb21wbGlhbmNlIHRvIDMuOS43CisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAxNSBNYXIgMjAxNiAwMTozNDoxNCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDN+V0lQLjIwMTUuMDUuMTgtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNZXJnZSBpbiB1cGRhdGVzIGZyb20gdGhlIG1haW50IGJyYW5jaCAoY2hhbmdlcyBmcm9tIDEuNDIuMTMpCisgICogQWRkIHN1cHBvcnQgZm9yIGZpbGUgZW5jcnlwdGlvbiBmZWF0dXJlCisgICogTWtlMmZzIHdpbGwgbm93IGNyZWF0ZSBmaWxlIHN5c3RlbXMgd2l0aCBtZXRhZGF0YV9jc3VtIGFuZCA2NGJpdAorICAgIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgKiBUaGUgcmVzaXplMmZzIGNvbW1hbmQgY2FuIG5vdyBjb252ZXJ0IGZpbGUgc3lzdGVtcyBiZXR3ZWVuIDY0LWJpdAorICAgIGFuZCAzMi1iaXQgbW9kZS4KKyAgKiBUaGUgbmV3IHVuZG8gZmlsZSBmb3JtYXQgaXMgbXVjaCBmYXN0ZXIvZWZmaWNlbnQgdGhhbiBiZWZvcmUKKyAgKiBFMmZzY2sgbm93IGhhcyByZWFkYWhlYWQgc3VwcG9ydCB0byBzcGVlZCB1cCBpdHMgYmVoYXZpb3Igb24gUkFJRAorICAgIGFycmF5cy4KKyAgKiBFMmZzY2sgY2FuIG5vdyByZWJ1aWxkL29wdGltaXplIGlub2RlIGV4dGVudCB0cmVlcworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgMTggTWF5IDIwMTUgMDE6NDc6NDMgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjEzLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBOTVUgYWNrbm93bGVkZ2UgKENsb3NlczogIzc3ODk0OCkKKyAgKiBGaXhlZCBhIGJ1ZyB3aGljaCBjb3VsZCBjYXVzZSBlMmZzY2sgdG8gY29ycnVwdCBIdXJkIGZpbGUgc3lzdGVtcy4KKyAgICAoQ2xvc2VzOiAjNzYwMjc1KQorICAqIEZpeGVkIGEgZGVhZGxvY2sgd2hpY2ggb2NjdXJzIHdoZW4gdXNpbmcgc3lzdGVtZCBhbmQgZTJmc2NrLmNvbmYncworICAgIGxvZ2dpbmcgZmVhdHVyZS4gIChDbG9zZXM6ICM3NzUyMzQpCisgICogRml4ZWQgYSBidWcgd2hpY2ggY291bGQgY2F1c2UgcHJvZ3JhbXMgdXNpbmcgbGliZXh0MidzIGlub2RlIHRhYmxlCisgICAgc2Nhbm5pbmcgZnVuY3Rpb25zIGZyb20gY3Jhc2hpbmcgb24gY2VydGFpbiBjb3JydXB0ZWQgZmlsZSBzeXN0ZW1zLgorICAgIChDbG9zZXM6ICM3NzM3OTUpCisgICogRml4ZWQgZHVtcGUyZnMgc28gaXQgd29uJ3QgY3Jhc2ggaWYgdGhlIHVzZXIgZG9lc24ndCBzcGVjaWZ5IGEgYmxvY2sKKyAgICBkZXZpY2UgKGZpbGUgc3lzdGVtKS4gIChDbG9zZXM6ICM3NjQyOTMpCisgICogRml4ZWQgZTJmc2NrIHNvIGlmIGl0IG5vdGljZXMgdW5leHBlY3RlZCBIVFJFRSBibG9ja3MgaW4gcGFzcyAyLCBpdAorICAgIHdpbGwgcmVwb3J0IHRoZSBjb3JyZWN0IGRpcmVjdG9yeSBpbm9kZSBjb250YWluaW5nIHRoZSBpbmNvbnNpc3RlbmN5LgorICAqIElmIGUyZnNjayBmYWlscyB0byBncm93IHRoZSBkaXJfaW5mbyBzdHJ1Y3R1cmUgZHVlIHJlYWxsb2MoMykgbm90CisgICAgaGF2aW5nIGVub3VnaCBtZW1vcnksIGl0IHdpbGwgbm93IGZhaWwgd2l0aCBleHBsYW5hdG9yeSBtZXNzYWdlCisgICAgaW5zdGVhZCBvZiBzdGFnZ2VyaW5nIG9uIGZhaWxpbmcgd2l0aCBhIGNvbmZ1c2luZyBpbnRlcm5hbCBlcnJvcgorICAgIG1lc3NhZ2VzLgorICAqIFRoZSB0dW5lMmZzIHByb2dyYW0gd2lsbCB6ZXJvIG91dCB0aGUgc3VwZXJibG9jayBqb3VybmFsIGJhY2t1cAorICAgIGluZm9ybWF0aW9uIHdoZW4gcmVtb3ZpbmcgYSBqb3VybmFsIGZyb20gYSBmaWxlIHN5c3RlbS4KKyAgKiBUaGUgbWtlMmZzIHByb2dyYW0gbm93IGVuYWJsZXMgdGhlIGxhcmdlX2ZpbGUgZmVhdHVyZSBieSBkZWZhdWx0LgorICAqIEZpeGVkIGEgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIGJhZGJsb2NrcyB0byBjcmFzaCBpZiB0aGVyZSBhcmUgbWlsbGlvbnMKKyAgICBhbmQgbWlsbGlvbnMgb2YgYmFkIGJsb2Nrcy4KKyAgKiBGaXhlZCBzb21lIHVzZS1hZnRlci1mcmVlIGJ1ZyBpbiByZXNpemUyZnMgYW5kIGUyZnNjay4KKyAgKiBGaXhlZCBzb21lIGJpZ2VuZGlhbiBidWdzIHRoYXQgaGFkIGNyZXB0IGludG8gYm90aCBpbmRpcmVjdCBhbmQgZXh0ZW50CisgICAgaGFuZGxpbmcgaW5zaWRlIGxpYmV4dDJmcy4KKyAgKiBVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLgorICAqIFVwZGF0ZSBFc3BlcmFudG8sIEdlcm1hbiwgYW5kIFNwYW5pc2ggdHJhbnNsYXRpb25zLiAgQWRkZWQgRGFuaXNoCisgICAgdHJhbnNsYXRpb24uCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxNyBNYXkgMjAxNSAyMDozODoyNyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDN+V0lQLTIwMTUtMDMtMjktMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNZXJnZSBpbiB1cGRhdGVzIGZyb20gdGhlIG1haW50IGJyYW5jaCAoY2hhbmdlcyBmcm9tIDEuNDIuMTItMSkKKyAgKiBBZGQgc3VwcG9ydCBmb3IgaW5saW5lIGRpcmVjdG9yaWVzCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBqYmQyIGNoZWNrc3VtIHYzIGZvcm1hdAorICAqIE5ldyBkdW1wZTJmcyBmb3JtYXQKKyAgKiBBZGQgc3VwcG9ydCBmb3IgZmlsZSBlbmNyeXB0aW9uIGZlYXR1cmUKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDE0IERlYyAyMDE0IDIyOjQ5OjAzIC0wNTAwCisKK2UyZnNwcm9ncyAoMS40Mi4xMi0xLjEpIHVuc3RhYmxlOyB1cmdlbmN5PWhpZ2gKKworICAqIE5vbi1tYWludGFpbmVyIHVwbG9hZCBieSB0aGUgU2VjdXJpdHkgVGVhbS4KKyAgKiBGaXggQ1ZFLTIwMTUtMTU3MjogaW5jb21wbGV0ZSBmaXggZm9yIENWRS0yMDE1LTAyNDcgKGNsb3NlczogIzc3ODk0OCkuCisKKyAtLSBNaWNoYWVsIEdpbGJlcnQgPG1naWxiZXJ0QGRlYmlhbi5vcmc+ICBTdW4sIDIyIEZlYiAyMDE1IDAxOjUwOjU3ICswMDAwCisKK2UyZnNwcm9ncyAoMS40Mi4xMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogRml4IHZhcmlvdXMgZTJmc2NrIGJ1Z3Mgd2hlbiB0cnlpbmcgdG8gcmVwYWlyIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcy4KKyAgKiBFMmZzY2sgY2FuIG5vdyByZXBhaXIgYSBmaWxlIHN5c3RlbSB3aXRoIGFuIG92ZXJseSBsYXJnZQorICAgIHNfZmlyc3RfbWV0YV9iZyBmaWVsZCwgd2hpY2ggaGFkIHByZXZpb3VzbHkgY2F1c2VkIGFsbCBlMmZzcHJvZ3MKKyAgICBwcm9ncmFtcyB0byBjcmFzaCB3aGVuIHRyeWluZyB0byBvcGVuIHN1Y2ggYSBmaWxlIHN5c3RlbS4KKyAgKiBGaXggZTJmc2NrIHNvIHRoYXQgaXQgY2FuIGNvcnJlY3RseSBmaXggYSBudW1iZXIgb2YgcmFyZSBmaWxlIHN5c3RlbQorICAgIGNvcnJ1cHRpb25zIHRoYXQgd2VyZSBkaXNjb3ZlcmVkIHdoZW4gdXNpbmcgYSBmaWxlIHN5c3RlbSBmdXp6ZXIuCisgICogRml4IGUyZnNjayBzbyBpdCBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgYmFjayBibG9jayBncm91cCBkZXNjcmlwdG9ycworICAgIGlmIHRoZXkgaGF2ZSBub3QgYmVlbiBtb2RpZmllZC4KKyAgKiBUaGUgbWtlMmZzIHByb2dyYW0gd2lsbCBub3cgcGxhY2UgbWV0YWRhdGEgYmxvY2tzIGluIHRoZSBsYXN0CisgICAgZmxleF9iZyBzbyB0aGV5IGFyZSBjb250aWd1b3VzLiAgVGhpcyByZWR1Y2VzIGZyZWUgc3BhY2UKKyAgICBmcmFnbWVudGF0aW9uIGluIGEgZnJlc2hseSBjcmVhdGVkIGZpbGUgc3lzdGVtLCBhcyB3ZWxsIGFzIGFsbG93aW5nCisgICAgbWtlMmZzIGNvbW1hbmRzIHdoaWNoIHJlcXVlc3QgZXh0cmVtZWx5IGxhcmdlIGZsZXhfYmcgc2l6ZSB0byBzdWNjZWVkLgorICAqIE1rZTJmcyBub3cgY3JlYXRlcyBodWdlZmlsZXMgbW9yZSBlZmZpY2llbnRseSAod2l0aCBmZXdlciBleHRlbnQKKyAgICB0cmVlIGJsb2NrcykuCisgICogRml4IGEgMzIvNjQtYml0IG92ZXJmbG93IGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHJlc2l6ZTJmcyB0byBsb29wCisgICAgZm9yZXZlci4KKyAgKiBSZWR1Y2UgdGhlIG1lbW9yeSBjb25zdW1wdGlvbiBvZiByZXNpemUyZnMgZm9yIHZlcnkgbGFyZ2UgZmlsZQorICAgIHN5c3RlbXMuCisgICogRml4IGEgYnVnIHRoYXQgY291bGQgY2F1c2UgcmVzaXplMmZzIHRvIGNyZWF0ZSBhIGNvcnJ1cHRlZCBmaWxlCisgICAgc3lzdGVtIHdoZW4gc2hyaW5raW5nIGEgdmVyeSBsYXJnZSBmaWxlIHN5c3RlbSAodHlwaWNhbGx5ID4gMTZUQikKKyAgICB0aGF0IGhhZCBiZWVuIHByZXZpb3VzbHkgZ3Jvd24gdXNpbmcgcmVzaXplMmZzLiAgKENsb3NlczogIzc1NjkyMikKKyAgKiBGaXggdHVuZTJmcyB1cGRhdGluZyBVVUlEJ3Mgd2hlbiBtYW5pcHVsYXRpbmcgZmlsZSBzeXN0ZW1zIHdpdGgKKyAgICBleHRlcm5hbCBqb3VybmFscyAoYm90aCB0aGUgZmlsZSBzeXN0ZW0gYW5kIGpvdXJuYWwgVVVJRCkuCisgICogRml4IHR1bmUyZnMgc28gaXQgY2FuIHJlbW92ZSBhbiBleHRlcm5hbCBqb3VybmFsIGZvciBmaWxlIHN5c3RlbXMKKyAgICB3aXRoIGEgMWsgYmxvY2sgc2l6ZS4KKyAgKiBBZGQgYSBuZXcgZGVidWdmcyBjb21tYW5kLCAiaW5vZGVfZHVtcCIsIHdoaWNoIHByaW50cyB0aGUgaW5vZGUgaW4KKyAgICBoZXggYW5kIEFTQ0lJIGZvcm1hdC4KKyAgKiBUaGUgZGVidWdmcyBjb21tYW5kICJzZXRfaW5vZGVfZmllbGQiIHdpbGwgbm93IGF1dG9tYXRpY2FsbHkKKyAgICBhbGxvY2F0ZSBibG9ja3MgZm9yIGluZGlyZWN0IGJsb2NrcyBhbmQgZXh0ZW50IHRyZWUgYmxvY2tzLgorICAqIEZpeCBkZWJ1Z2ZzJ3MgInNldF9pbm9kZV9maWVsZCIgc28gY2FuIHByb3Blcmx5IGhhbmRsZQorICAgICJibG9ja1tJTkR8RElORHxUSU5EXSIuCisgICogVGhlIGRlYnVnZnMgInJkdW1wIiBjb21tYW5kIHdpbGwgbm93IHRha2UgbXVsdGlwbGUgc291cmNlIGFyZ3VtZW50cy4KKyAgKiBGaXggZGVidWdmcydzIGFyZ3VtZW50IHBhcnNpbmcgZm9yIHRoZSBmcmVlZnJhZyBjb21tYW5kLgorICAqIEZpeGVkIGEgZG91YmxlIGNsb3NlKDIpIGJ1ZyBpbiAicmR1bXAiIGFuZCAicmR1bXAgLXAiLgorICAqIEZpeCBmaWxlZnJhZyB0byBwcm9wZXJseSBoYW5kbGUgdXNpbmcgdGhlIEZJQk1BUCBpb2N0bCAod2l0aCAtQikuCisgICogZTRkZWZyYWcgd2lsbCBub3cgZGVmcmFnIGJhY2t3YXJkcy1hbGxvY2F0ZWQgZmlsZXMKKyAgKiBDbGFyaWZpZWQgbWVzc2FnZXMgdGhhdCB3ZXJlIGNvbmZ1c2luZyB1c2VycyBpbiBkZWJ1Z2ZzLCBlMmZzY2ssCisgICAgbWtlMmZzLCBhbmQgcmVzaXplMmZzIChDbG9zZXM6ICM3NTgwMjksICM3NTc1NDMsICM3NTc1NDQpCisgICogRHVtcGUyZnMgd2lsbCBub3cgY29tcGxhaW4gaWYgZXh0cmEgYXJndW1lbnRzIGFyZSBnaXZlbiB0byBpdC4KKyAgICAoQ2xvc2VzOiAjNzU4MDc0KQorICAqIFVwZGF0ZS9jbGFyaWZ5IHZhcmlvdXMgbWFuIHBhZ2VzIChDbG9zZXM6ICM3MjY3NjApCisgICogVXBkYXRlIEN6ZWNoLCBEdXRjaCwgRnJlbmNoLCBQb2xpc2gsIFNwYW5pc2gsIFN3ZWVkaXNoLCBVa3JhaW5pYW4sCisgICAgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgRnJpLCAyOSBBdWcgMjAxNCAwODo1MDo0OCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDIuMTEtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBEb24ndCB0cnkgdG8gYnVpbGQgbGliL2V4dDJmcy90c3RfZXh0MmZzIHVubGVzcyBydW5uaW5nICJtYWtlCisgICAgY2hlY2siOyB0aGlzIGZpeGVzIGEgTUlQUyBGVEJGUyBwcm9ibGVtIGJlY2F1c2UgbWlwcyBoYXMgYSBzcGVjaWFsCisgICAgbm8tcGljcyBidWlsZCBuZWVkZWQgZm9yIGJvb3Rsb2FkZXJzIHdoZXJlIHdlIG9ubHkgYnVpbGQgbGliZXh0MmZzCisgICAgYnV0IG5vdCBsaWJzcyBvciBvdGhlciBsaWJyYXJpZXMgKENsb3NlczogIzc1NDYwNSkKKyAgKiBVcGRhdGUgRnJlbmNoIHRyYW5zbGF0aW9uCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxMyBKdWwgMjAxNCAxNjoxODoyNyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDIuMTEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIE5NVSBhY2tub3dsZWRnZSAoQ2xvc2VzOiAjNzUyMTA3KQorICAqIG1rZTJmcyBjYW4gbm93IGNyZWF0ZSBodWdlZmlsZXMgd2hpY2ggYXJlIGFsaWduZWQgdG8gdGhlIGJlZ2lubmluZworICAgIG9mIHRoZSBkaXNrIChpbnN0ZWFkIG9mIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhcnRpdGlvbiksCisgICAgY29udHJvbGxlZCB2aWEgYSBta2UyZnMuY29uZiBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4KKyAgKiBGaXggYSBidWcgd2hpY2ggY2F1c2VkIGUyZnNjayB0byBhYm9ydCBhIGpvdXJuYWwgcmVwbGF5IG9uIGEgZmlsZQorICAgIHN5c3RlbSB3aXRoIGJpZ2FsbG9jIGVuYWJsZWQuICAoQ2xvc2VzOiAjNzQ0OTUzKQorICAqIEZpeCBta2UyZnMgc28gaXQgbW9yZSBjb3JyZWN0bHkgaGFuZGxlcyBsYXJnZSBmbGV4X2JnIGNvdW50cworICAqIE1rZTJmcyB3aWxsIGNoZWNrIHRoZSBrZXJuZWwgdmVyc2lvbiBudW1iZXIgYW5kIG5vdCBqdXN0IHRoZSBzeXNmcworICAgIGZlYXR1cmUgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBzYWZlIHRvIGVuYWJsZSBsYXp5CisgICAgaW5vZGUgdGFibGUgaW5pdGlhbGl6YXRpb24sIHNvIGl0IHdvbid0IGdldCBmYWtlZCBvdXQgaWYgdGhlIGV4dDQgaXMKKyAgICBjb21waWxlZCBhcyBhIG1kb3VsZSB3aGljaCBoYXNuJ3QgaGFwcGVuZWQgdG8gYmUgbG9hZGVkIHlldC4KKyAgKiBFMmZzY2sgd2lsbCBub3cgYXV0b21hdGljYWxseSBmaXggYSBsYXN0IG1vdW50IHRpbWUgb3IgbGFzdCB3cml0ZSB0aW1lCisgICAgd2hpY2ggaXMgaW4gdGhlIGZ1dHVyZSBpbiBwcmVlbiBtb2RlLgorICAqIE1rZTJmcyB3aWxsIG5vdyBjaGVjayB0aGUgZmlsZSBzeXN0ZW0gcmV2aXNpb24gbnVtYmVyIHJlcXVlc3RlZCBieSB0aGUKKyAgICBjb21tYW5kIGxpbmUsIGFuZCByZWplY3QgaXQgaWYgaXQgaXMgdG9vIGxhcmdlLgorICAqIElmIGZpbGVmcmFnIHJ1bnMgaW50byBhbiBlcnJvciwgaXQgd2lsbCBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSByZXN0CisgICAgb2YgdGhlIGZpbGVzIHNwZWNpZmllZCBvbiB0aGVjIG9tbWFuZCBsaW5lLCBidXQgdGhlbiBleGl0IHdpdGggYW4KKyAgICBlcnJvciBjb2RlLgorICAqIEZpbGVmcmFnIG5vdyBwcmludHMgc29tZSBhZGRpdGlvbmFsIG5ldyBmbGFncyAoc3VjaCBhcworICAgIEZJRU1BUF9FWFRFTlRfRU5DT0RFRCksIGFuZCBwcmludCB1bmtub3duIGZsYWdzIGFzIGhleCB2YWx1ZXMuCisgICogRml4ZWQgc3VwcG9ydCBpbiBmaWxlZnJhZyBmb3IgZmlsZXMgd2l0aCA+IDIqKjMyIGJsb2NrcyBvbiAzMi1iaXQKKyAgICBwbGF0Zm9ybXMuCisgICogRml4ZWQgYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBkZWJ1Z2ZzIHdoZW4gY29weWluZyBmaWxlcy4KKyAgKiBBZGQgRXNwYXJhbnRvIGFuZCBVa3JhaW5pYW4gdHJhbnNsYXRpb25zLCBhbmQgdXBkYXRlIEN6ZWNoLCBEdXRjaCwKKyAgICBGcmVuY2gsIEdlcm1hbiwgSXRhbGlhbiwgUG9saXNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLgorICAqIEZpeGVkIGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQuICAoQ2xvc2VzOiAjNzUzMzc1KQorICAqIFVwZGF0ZS9maXggdmFyaW91cyBtYW4gcGFnZXMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBXZWQsIDkgSnVsIDIwMTQgMjM6NDM6MjcgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjEwLTEuMSkgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBOb24tbWFpbnRhaW5lciB1cGxvYWQuCisgICogQWRkIHBhdGNoIGZyb20gdXBzdHJlYW0gZ2l0IHRoYXQgZml4ZXMgY3JlYXRpbmcgZmlsZXN5c3RlbXMgaW4gZmlsZXMKKyAgICBsYXJnZXIgdGhhbiAyR0Igb24gMzIgYml0IGFyY2hpdGVjdHVyZXMgKENsb3NlczogIzc1MjEwNykKKworIC0tIEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+ICBTYXQsIDIxIEp1biAyMDE0IDEyOjU3OjI1ICswMjAwCisKK2UyZnNwcm9ncyAoMS40M35XSVAtMjAxNC0wMi0wNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1lcmdlIGluIHVwZGF0ZXMgZnJvbSB0aGUgbWFpbnQgYnJhbmNoIChjaGFuZ2VzIGZyb20gMS40Mi4xMC0xKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMDQgRmViIDIwMTQgMjM6MzE6NTYgLTA1MDAKKworZTJmc3Byb2dzICgxLjQyLjEwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBUaGUgbWtlMmZzIHByb2dyYW0gbm8gbG9uZ2VyIHJlcXVpcmVzIGEgZm9yY2UgKC1GKSBvcHRpb24gd2hlbgorICAgIHdoZW4gY3JlYXRpbmcgYSBmaWxlIHN5c3RlbSBpbiBhIHJlZ3VsYXIgZmlsZSwgc2luY2UgdGhpcyBpcyBhIHZlcnkKKyAgICBjb21tb24gdXNlIGNhc2Ugd2hlbiBtYW5hZ2luZyB2aXJ0dWFsIG1hY2hpbmUgaW1hZ2VzCisgICogVGhlIG1rZTJmcyBwcm9ncmFtIHdpbGwgbm93IGFzayBmb3IgY29uZmlybWF0aW9uIGJlZm9yZSB3aXBpbmcgb3V0IGEKKyAgICBwcmUtZXhpc3RpbmcgZmlsZSBzeXN0ZW0sIHBhcnRpdGlvbiBsYWJlbCwgb3IgcGh5c2ljYWwgdm9sdW1lCisgICogRml4IGUyZnNjayBzbyB0aGF0IGl0IHByb3Blcmx5IGhhbmRsZXMgYW4gaW5jb25zaXN0ZW50IHF1b3RhIGlub2RlLgorICAgIFByZXZpb3VzbHkgdGhlIHF1b3RhIGlub2RlIGNvdWxkIGJlIGNvbXBsZXRlbHkgY29ycnVwdGVkLCBhbmQKKyAgICBtaXNzaW5nIHF1b3RhIHJlY29yZHMgY291bGQgYmUgbm90IG5vdGljZWQKKyAgKiBGaXggbWtlMmZzIHNvIGlmIHBhY2tlZCBtZXRhZGF0YSBibG9ja3MgYXJlIGVuYWJsZWQgdGhhdCB0aGUgYmxvY2sKKyAgICBncm91cCBjaGVja3N1bSBhcmUgc2V0IGNvcnJlY3RseQorICAqIERlYnVnZnMgaGFzIG5ldyBjb21tYW5kcyB0byBhbGxvdyB0aGUgcXVvdGEgaW5vZGUgdG8gYmUgcXVlcmllZCBkaXJlY3RseQorICAqIFR1bmUyZnMgd2lsbCBhbGxvdyByZW1vdmFsIG9mIGRpcnR5IGpvdXJuYWwgd2l0aCB0d28gIi1mIiBvcHRpb25zCisgICAgKENsb3NlczogIzU1OTMwMSkKKyAgKiBGaXhlZCBzb21lIG9mZi1saW5lIHJlc2l6ZTJmcyBidWdzIHdoZW4gcmVsb2NhdGluZyBtZXRhZGF0YSBibG9ja3MKKyAgICB3aGVuIGdyb3dpbmcgb3Igc2hyaW5raW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcworICAqIEZpeGVkIHJlc2l6ZTJmcydzIGNhbGN1bGF0aW9uIG9mIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGZpbGUgc3lzdGVtCisgICAgc2l6ZS4gIFRoaXMgYWxsb3dzIHJlc2l6ZTJmcyAtTSB0byBzaHJpbmsgdGhlIGZpbGUgc3lzdGVtIG1vcmUKKyAgICBhZ2dyZXNzaXZlbHkKKyAgKiBGaXhlZCByZXNpemUyZnMgdG8gcHJvcGVybHkgaGFuZGxlIHNocmlua2luZyBhIHZlcnkgbGFyZ2UgYW5kIGVtcHR5CisgICAgZmlsZSBzeXN0ZW0gdG8gYSB2ZXJ5IHZlcnkgc21hbGwgc2l6ZQorICAqIEZpeGVkIGU0ZGVmcmFnIHRvIHdvcmsgd2l0aCA2NC1iaXQgYW5kIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcworICAqIEZpeGVkIGUyZnNjayB0byBub3QgaXNzdWUgYSBsYXJnZSBudW1iZXIgb2YgdmVyeSBzY2FyeSAoYnV0CisgICAgaGFybWxlc3MpIGNvcnJ1cHRpb24gbWVzc2FnZXMgd2hlbiBjaGVja2luZyB2ZXJ5IGxhcmdlIGZpbGUgc3lzdGVtcworICAgIHdoZW4gdGhlIGZpbGUgc3lzdGVtIGhhcyBtb3JlIGlub2RlcyB0aGFuIHRoZSBudW1iZXIgb2Ygc2Vjb25kcworICAgIHNpbmNlIEphbnVhcnkgMSwgMTk3MC4KKyAgKiBFMmZzY2sgd2lsbCBub3cgY2hlY2sgdGhlIHdob2xlIGZpbGUgc3lzdGVtIGlmIGZpbGUgc3lzdGVtIHByb2JsZW1zCisgICAgYXJlIGRldGVjdGVkIGR1cmluZ3MgaXRzIGluaXRpYWwgInBhc3MgMCIgc2FuaXR5IGNoZWNrCisgICogRmlsZWZyYWcgbm93IHByaW50cyB0aGUgInNoYXJlZCBleHRlbnQiIGZsYWcgd2hpY2ggaXMgdXNlZCBieSBzb21lCisgICAgZmlsZSBzeXN0ZW1zIHN1Y2ggYXMgYnRyZnMKKyAgKiBUaGUgbWtlMmZzIHByb2dyYW0gd291bGQgcHJldmlvdXNseSBjb3JyZWN0bHkgb21pdCB0aGUgcmVzaXplX2lub2RlCisgICAgZmVhdHVyZSB3aGVuIGNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gPiAxNlRCIHdoZW4gdGhlIGZzIHNpemUgd2FzCisgICAgZGV0ZXJtaW5lZCBhdXRvbWF0aWNhbGx5LiAgSXQgd2lsbCBub3cgYWxzbyBkbyB0aGUgcmlnaHQgdGhpbmcgd2hlbgorICAgIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSBmaWxlIHN5c3RlbSBzaXplLgorICAqIFRoZSBtZXNzYWdlIHByaW50ZWQgYnkgbG9nc2F2ZSBpcyBub3cgbXVjaCBsZXNzIHNjYXJ5IChDbG9zZXM6ICM0Njg4MjEpCisgICogRml4IHNwZWxsaW5nIHR5cG8gaW4gdGhlIHBhY2thZ2UgZGVzY3JpcHRpb25zCisgICogVXBkYXRlIEN6ZWNoLCBEdXRjaCwgRnJlbmNoLCBHZXJtYW4sIFBvbGlzaCwgU3BhbmlzaCwgU3dlZWRpc2gsIGFuZAorICAgIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zIChDbG9zZXM6ICM3MDMwNDgpCisgICogVXBkYXRlL2ZpeCB2YXJpb3VzIG1hbiBwYWdlcworICAqIEZpeCBkZWJpYW4vcnVsZXMgY29tcGF0aWJpbGl0eSBwcm9ibGVtIHdpdGggR05VIG1ha2UgNC4wCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxOCBNYXkgMjAxNCAyMjo1NDozOCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDIuOS0zKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIEFkZCB0aGUgYWJpbGl0eSBmb3IgbWtlMmZzIHRvIGNyZWF0ZSBodWdlZmlsZXMKKyAgKiBBZGQgc3VwcG9ydCBmb3IgdGhlIHNwYXJzZV9zdXBlcjIgY29tcGF0IGZlYXR1cmUKKyAgKiBNa2UyZnMgY2FuIG5vdyBmb3JjZSBhbGwgb2YgdGhlIG1ldGFkYXRhIGJsb2NrcyB0byBiZSBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgc3lzdGVtCisgICogRml4IGxvb3BiYWNrIG1vdW50IGRldGVjdGlvbiAoQ2xvc2VzOiAjNDk3OTg0KQorICAqIEFkZCBzdXBwb3J0IHRvIG1rZTJmcyB0byBjcmVhdGUgYSBmaWxlIHN5c3RlbSBhdCBhbiBvZmZzZXQKKyAgICAoQ2xvc2VzOiAjNDE3Mzg1KQorICAqIE1lbnRpb24gYmFkYmxvY2tzIGluIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9uIChDbG9zZXM6ICM3MTg3MjUpCisgICogVXBkYXRlL2ZpeCB2YXJpb3VzIG1hbiBwYWdlcyAoQ2xvc2VzOiAjNzE5MTg0LCAjNzE5MTg5KQorICAqIEltcHJvdmUgZTJmc2NrJ3MgInN1cGVyYmxvY2sgY29ycnVwdCIgbWVzc2FnZSAoQ2xvc2VzOiAjNzE5MTg1KQorICAqIE1pc2NlbGxhbmVvdXMgQ292ZXJpdHkgY2xlYW4gdXBzCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAwNCBGZWIgMjAxNCAyMjoxNzoyMiAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDIuOS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBsaW50aWFuIHdhcm5pbmc6IGRlYmlhbi1jaGFuZ2Vsb2ctaGFzLXdyb25nLXdlZWtkYXkKKyAgKiBGaXggbGludGlhbiB3YXJuaW5nOiBub24tc3RhbmRhcmQtZGlyLXBlcm0gYnkgdXNpbmcgZGhfc3RyaXAncworICAgIC0tZGJnLXBhY2thZ2Ugb3B0aW9uIGluc3RlYWQgb2YgbWFudWFsbHkgbWFuYWdpbmcgdGhlIGRlYnVnIGZpbGVzCisgICogRml4IHByaW50ZiB0eXBlIGZvcm1hdCBtaXNtYXRjaCBpbiBlMmltYWdlCisgICogSW1wcm92ZWQgZGVidWdmcydzIGVycm9yIHJlcG9ydGluZyB3aGVuIHBhcnNpbmcgYmxvY2sgbnVtYmVycworICAqIFVzZSBjb25zaXN0ZW50IGNvbmZpZ3VyZSBvcHRpb25zIGFjcm9zcyB0aGUgbXVsdGlwbGUgZTJmc3Byb2dzCisgICAgYnVpbGRzOyB0aGlzIG1lYW5zIHRoYXQgZTJmc2NrLnN0YXRpYyB3aWxsIG5vdyB1c2UgdGhlIGJsa2lkIGxpYnJhcnkKKyAgICBzaGlwcGVkIHdpdGggdXRpbC1saW51eCwgaW5zdGVhZCBvZiB0aGUgaW50ZXJuYWwgb25lIHNoaXBwZWQgd2l0aAorICAgIHRoZSBlMmZzcHJvZ3Mgc291cmNlcy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDMwIERlYyAyMDEzIDE2OjU2OjUwIC0wNTAwCisKK2UyZnNwcm9ncyAoMS40Mi45LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBOTVUgYWNrIChDbG9zZXM6ICM2OTg4NzkpCisgICogRml4IGNyb3NzLWJ1aWxkIHN1cHBvcnQgKENsb3NlczogIzcyMTM2NSkKKyAgKiBta2UyZnMgd2lsbCBkZXRlY3QgYW4gYXR0ZW1wdCB0byBjcmVhdGUgYSBmaWxlIHN5c3RlbSBvbiBhCisgICAgbG9vcC1tb3VudGVkIGltYWdlIGZpbGUKKyAgKiBGaXhlZCBhIGxhcmdlIG51bWJlciBvZiBidWdzIGluIHJlc2l6ZTJmcywgZTJmc2NrLCBkZWJ1Z2ZzLCB0bworICAgIGhhbmRsZSBiaWdhbGxvYyBhbmQgNjQtYml0IGZpbGUgc3lzdGVtcy4KKyAgKiBUdW5lMmZzIHdpbGwgbm8gbG9uZ2VyIGFsbG93IGNoYW5naW5nIHRoZSB1dWlkIG9uIGEgbW91bnRlZCBmaWxlCisgICAgc3lzdGVtIHdpdGggdGhlIHVuaW5pdF9iZyBmZWF0dXJlIGVuYWJsZWQuCisgICogRTJmc2NrIHdpbGwgcHJvcGVybHkgYWxsb2NhdGUgYSBuZXcgZXh0ZW50IHRyZWUgYmxvY2sgaW4gdGhlIHJhcmUKKyAgICBjYXNlIHdoZXJlIG9uZSBpcyBuZWVkZWQgd2hlbiByZWhhc2hpbmcgYW4gZXh0ZW50LW1hcHBlZCBkaXJlY3RvcnkuCisgICogTWtlMmZzIHdpbCBub3cgcHJvcGVybHkgc2V0IHRoZSBMQVJHRV9GSUxFIGZlYXR1cmUgd2hlbiBjcmVhdGluZyBhCisgICAgam91cm5hbCA+IDJHQi4KKyAgKiBEZWJ1Z2ZzIHdpbGwgbm93IGNvcnJlY3RseSBoYW5kbGUgZnJlZSBhIHJhbmdlIG9mIGlub2RlcyB1c2luZyB0aGUKKyAgICBmcmVlaSBjb21tYW5kLgorICAqIEUyZnNjayB3aWxsIG5vIGxvbmdlciBjb21wbGFpbiBpZiBhbiBleHRlcm5hbCBqb3VybmFsIHdhcyBleGFjdGx5CisgICAgMioqMzIgYmxvY2tzLgorICAqIEUyZnNjayB3aWxsIG5vdCBsb25nZXIgdHJ5IHRvIGFkZCBhIG1pc3NpbmcgbG9zdCtmb3VuZCBkaXJlY3RvcnkKKyAgICB3aGVuIHJ1biBpbiByZWFkLW9ubHkgbW9kZS4KKyAgKiBGaXhlZCBzb21lIGJ1ZmZlciBvdmVycnVuIGJ1Z3Mgd2hlbiBjcmVhdGluZyBzdGFuZGFyZCBlMmltYWdlIGZpbGVzCisgICogTWtlMmZzIHdpbGwgbm90IHRyeSB0byBzZXQgYm90aCB0aGUgbWV0YV9iZyBhbmQgcmVzaXplX2lub2RlIGZlYXR1cmUKKyAgICB3aGVuIHRoZSBleHRlbmRlZCBvcHRpb24gIi1FIHJlc2l6ZT1OTk4iIGlzIHNwZWNpZmllZCBieSB0aGUgdXNlci4KKyAgKiBEdW1wZTJmcyB3aWxsIG5vIGxvbmdlciBhYm9ydCB3aGVuIHRyeWluZyB0byBwcmludCB0aGUgam91cm5hbAorICAgIGluZm9ybWF0aW9uIGZyb20gYW4gZTJpbWFnZS1jcmVhdGVkIGltYWdlIGZpbGUuCisgICogRGVidWdmcydzICJ3cml0ZSIgY29tbWFuZCBjYW4gbm93IGNyZWF0ZSBhIHNwYXJzZSBmaWxlcworICAqIERlYnVnZnMgY2FuIG5vdyBzdXBwb3J0IGEgY29tbWFuZCBsaW5lIHdoaWNoIGlzIHVwIHRvIDhrIGxvbmcKKyAgKiBFMmltYWdlIHdpbGwgcmVmdXNlIHRvIGNyZWF0ZSBhIHJhdyBvciBxY29tdyBpbWFnZSB1c2luZyBhIG1vdW50ZWQKKyAgICBmaWxlIHN5c3RlbSB1bmxlc3MgdGhlIC1mIG9wdGlvbiBpcyBnaXZlbi4KKyAgKiBFMmltYWdlIGhhcyBiZWVuIG1hZGUgbW9yZSB1c2VmdWwgZm9yIGVmZmljaWVudGx5IGNvcHlpbmcgZmlsZQorICAgIHN5c3RlbXMgdXNpbmcgdGhlIC1yYSBvcHRpb25zLiAgTmV3IG9wdGlvbnMgdG8gaGVscCB3aXRoIHRoaXMgdXNlCisgICAgY2FzZSB0aGF0IHdlcmUgYWRkZWQ6IC1vLCAtTywgLXAsIGFuZCAtYy4KKyAgKiBGaXhlZCBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiAxLjQyLjggd2hpY2ggd291bGQgY2F1c2UgZTJmc2NrIHRvCisgICAgZXJyb25lb3VzbHkgcmVwb3J0IHVuaW5pdGlhbGl6ZWQgZXh0ZW50cyBwYXN0IGlfc2l6ZSB0byBiZSBpbnZhbGlkLgorICAqIEZpeGVkIGNhc2VzIHdoZXJlIHJlc2l6ZTJmcyBjb3VsZCBjb3JydXB0IGEgZmlsZSBzeXN0ZW0sIGVzcGVjaWFsbHkKKyAgICB3aGVuIHNocmlua2luZyBhIGZpbGUgc3lzdGVtLiAgKENsb3NlczogIzY2MDc5MykKKyAgKiBGaXhlZCByZXNpemUyZnMgYW5kIGUyZnNjayB0byBub3QgY3Jhc2ggd2hlbiBvcGVyYXRpbmcgb24gYSBmaWxlCisgICAgc3lzdGVtIHdpdGggdGhlIE1NUCBmZWF0dXJlIGVuYWJsZWQuCisgICogRml4ZWQgZGVidWdmcydzIHdyaXRlIGNvbW1hbmQgdG8gcHJvcGVybHkgY3JlYXRlIGEgemVyby1sZW5ndGggZmlsZQorICAgIChpbnN0ZWFkIG9mIGNyZWF0aW5nIGFuIGludmFsaWQgaW5vZGUpLgorICAqIEZpeGVkIGUyZnNjayB0byBub3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGFuIGludmFsaWQKKyAgICBleHRlbnQtbWFwcGVkIHN5bWxpbmsuCisgICogSW1wcm92ZWQgZGVidWdmcydzIGhlbHAgdGV4dHMKKyAgKiBGaXhlZCBhIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IHByb2JsZW0gaW4gZTJmcmVlZnJhZworICAgIChDbG9zZXM6ICM3MTgyMDUpCisgICogVGhlIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiBmaWxlcyBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUKKyAgICBsYXRlc3QgdG8gaGVscCB3aXRoIHRoZSBwcGNsZSBwb3J0LiAgKENsb3NlczogIzczMjA3NikKKyAgKiBVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzLiAgKENsb3NlczogIzU4NjIxOCwgIzY2OTczMCwKKyAgICAjNjk4MDc2LCAjNzMxMzI5KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFNhdCwgMjggRGVjIDIwMTMgMjM6MTg6MzYgLTA1MDAKKworZTJmc3Byb2dzICgxLjQyLjgtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIFdvcmsgYXJvdW5kIERlYmlhbiBCdWcgIzcxMjUzMCAoQ2xvc2VzOiAjNzA4MzA3KQorICAqIEZpeCBlMmZzY2sgc28gaXQgY2FuIGNoZWNrIGEgcmVhZC1vbmx5IHJvb3QgZmlsZSBzeXN0ZW0gd2l0aCBhbgorICAgIGV4dGVybmFsIGpvdXJuYWwuICAoQ2xvc2VzOiAjNzA3MDMwKQorICAqIEZpeCBvZmYtbGluZSByZXNpemluZyBvZiBmaWxlIHN5c3RlbXMgd2l0aCBmbGV4X2JnICYmICFyZXNpemVfaW5vZGUKKyAgICAoQ2xvc2VzOiAjNjk2NzQ2KQorICAqIENoYW5nZSBta2UyZnMgc28gdGhhdCBpdCBkb2VzIG5vdCBzZXQgdGhlIHJvb3QgZGlyZWN0b3J5IHRvIHRoZSByZWFsCisgICAgdWlkL2dpZCBvZiB0aGUgbWtlMmZzIHByb2Nlc3MuICBBZGQgdGhlIGV4dGVuZGVkIG9wdGlvbiByb290X293bmVyIHRvCisgICAgb3ZlcnJpZGUgdGhpcyBiZWhhdmlvci4KKyAgKiBJZiBhbiBpbnZhbGlkIGpvdXJuYWwgc2l6ZSBpcyBnaXZlbiB0byBta2UyZnMsIGl0IHdpbGwgbm93IGNvbXBsYWluCisgICAgYW5kIGV4aXQgc29vbmVyLgorICAqIEZpeCByZXNpemUyZnMgd2hlbiBzaHJpbmtpbmcgZmlsZSBzeXN0ZW1zIHRvIG1ha2Ugc3VyZSB0aGF0IGJpdG1hcAorICAgIGJsb2NrcyBhcmVuJ3QgbGVmdCBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIHNocnVua2VuIGZpbGUgc3lzdGVtLgorICAgIFRoaXMgY291bGQgaGFwcGVuIHdpdGggZmxleF9iZyBmaWxlIHN5c3RlbXMgdGhhdCB3ZXJlIGdyb3duIHVzaW5nCisgICAgdGhlIG9sZCBvbmxpbmUgcmVzaXppbmcgYWxnb3JpdGhtLgorICAqIEUyZnNjayB3aWxsIG5vdyBkZXRlY3QgYW5kIHJlcGFpciBjb3JydXB0ZWQgZXh0ZW50IHRyZWVzIHdoaWNoIGNvbnRhaW4KKyAgICBpbnZhbGlkIGV4dGVudHMgYXQgdGhlIGVuZCBvZiB0aGUgZXh0ZW50IHRyZWUgbGVhZiBibG9jay4KKyAgKiBFMmZzY2sgd2lsbCBub3cgbG9uZ2VyIGNvbXBsYWluIGFib3V0IHplcm8gbGVuZ3RoIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZXMuCisgICogRml4IGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGluIGUyZnNwcm9ncyB2MS40MiB3aGljaCBjYXVzZWQgZTJpbWFnZSAtcworICAgIHRvIGNyYXNoLgorICAqIEFkZCBzYWZldHkgY2hlY2sgc28gdHVuZTJmcyB3aWxsIG5vdCBhdHRlbXB0IHRvIHNldCB0aGUgaW5vZGUgc2l6ZSB0bworICAgIGJlIGxhcmdlciB0aGFuIHRoZSBibG9jayBzaXplLgorICAqIEVuaGFuY2UgY2hhdHRyIHRvIGFsbG93IGNsZWFyaW5nIHRoZSBleHRlbnQgZmxhZyBpZiB0aGUga2VybmVsIGFsbG93cyBpdAorICAqIEZpeCBlMmltYWdlIHdpdGggbGFyZ2UgKD4gMzItYml0KSBmaWxlIHN5c3RlbXMgKENsb3NlczogIzcwMzA2NykKKyAgKiBNa2UyZnMgd2lsbCBub3QgZ2l2ZSB3YXJuaW5ncyBhYm91dCB0aGUgYmlnYWxsb2MgYW5kIHF1b3RhIG9wdGlvbnMgaW4KKyAgICBxdWlldCBtb2RlLgorICAqIERlYnVnZnMgd2FzIGVycm9uZW91c2x5IGdpdmluZyBzcHVyaW91cyBlcnJvciBtZXNzYWdlcyBmb3IgY2VydGFpbgorICAgIGV4dGVudF9pbm9kZSBzdWJjb21tYW5kcyB3aGljaCB0YWtlIGFyZ3VtZW50cyAoc3BsaXRfbm9kZSwKKyAgICByZXBsYWNlX25vZGUsIGFuZCBpbnNlcnRfbm9kZSkuICBUaGlzIGhhcyBiZWVuIGZpeGVkLgorICAqIEZpeCB0aGUgcGFyc2luZyBvZiB0aGUgJ3MnIChzZWN0b3JzKSBpbiBwYXJzZV9udW1fYmxvY2tzMiwgd2hpY2ggYW1vbmcKKyAgICBvdGhlciBwcm9ncmFtcyBpcyB1c2VkIGJ5IG1rZTJmcy4KKyAgKiBGaXggdGV4aW5mbyBpbmNvbXBhdGliaWxpdGllcyAoQ2xvc2VzOiAjNzEyMzY1KQorICAqIFVwZGF0ZWQvZml4ZWQgdmFyaW91cyBtYW4gcGFnZXMgIChDbG9zZXM6ICM3MTI0MjksICM3MTI0MzAsICM3MDc2MDkpCisgICogVXBkYXRlIEdlcm1hbiB0cmFuc2xhdGlvbgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFRodSwgMjAgSnVuIDIwMTMgMjM6MDk6MjUgLTA1MDAKKworZTJmc3Byb2dzICgxLjQyLjctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIEFkZCB3YXJuaW5nIGluZGljYXRpbmcgdGhhdCB0aGUgcXVvdGEgYW5kIGJpZ2FsbG9jIGZlYXR1cmVzIGFyZQorICAgIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LgorICAqIEFkZGVkIG5ldyBvcHRpb25zIHRvIGZpbGVmcmFnIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgdmVyc2lvbiBmcm9tCisgICAgTHVzdHJlCisgICogT3B0aW1pemVkIGUyZnNjaydzIENQVSB1dGlsaXphdGlvbgorICAqIEZpeGVkIGUyZnNjayBzbyBpdCBkZXRlY3RzIGFuZCBmaXhlcyBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlIGludGVyaW9yCisgICAgbm9kZXMgb2YgYW4gaW5vZGUncyBleHRlbnQgdHJlZQorICAqIEZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIGZhaWx1cmUgaW4gZTJmc2NrJ3MgZXJyb3IgcGF0aCBpZgorICAgIHRoZSBjYWxsIHRvIGV4dDJmc19vcGVuMigpIGZhaWxzLgorICAqIEZpeGVkIGUyZnNjayBpZiBpdHMgbG9nZ2luZyBmdW5jdGlvbiBpcyBlbmFibGVkIGluIGUyZnNjay5jb25mLCBhbmQKKyAgICB0aGUgcmVzdWx0aW5nIGZpbGUgbmFtZSBmb3IgdGhlIGxvZyBmaWxlIGlzIGxvbmdlciB0aGFuIDEwMCBieXRlcywKKyAgICB0aGF0IGl0IHByb3Blcmx5IGhhbmRsZXMgdGhpcyBzaXR1YXRpb24gaW5zdGVhZCBvZiBjcmFzaGluZy4KKyAgKiBFMmZzY2sgd2lsbCBub3cgcmVwb3J0IHRoZSBhbW91bnQgb2YgbWVtb3J5IHRoYXQgaXQgYXR0ZW1wdGVkIHRvCisgICAgYWxsb2NhdGUgd2hlbiBhIG1lbW9yeSBhbGxvY2F0aW9uIHJlcXVlc3QgZmFpbHMsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCisgICAgdHJhY2sgZG93biB0aGUgcHJvYmxlbS4KKyAgKiBGaXhlZCBhIGJ1ZyBpbiByZXNpemUyZnMgd2hpY2ggY291bGQgY2F1c2Ugc2V2ZXJlIGZpbGUgc3lzdGVtCisgICAgY29ycnVwdGlvbiB3aGVuIGdyb3dpbmcgYW4gZXh0NCBmaWxlIHN5c3RlbSB3aGljaCB3YXMgZm9ybWF0dGVkIHdpdGgKKyAgICBmZXdlci10aGFuLW5vcm1hbCByZXNlcnZlZCBnZHQgYmxvY2tzCisgICogRml4ZWQgcmVzaXplMmZzIHRvIGJlIGFibGUgdG8gaGFuZGxlIG9mZi1saW5lIHJlc2l6ZXMgb2YgZmlsZQorICAgIHN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZyBmZWF0dXJlIGFuZCB3aXRob3V0IGFueSByZXNlcnZlZCBnZHQKKyAgICBibG9ja3Mgb3IgaWYgdGhlIGZpbGUgc3lzdGVtIGRpZCBub3QgaGF2ZSB0aGUgcmVzaXplX2lub2RlIGZlYXR1cmUKKyAgKiBGdXJ0aGVyIG9wdGltaXplIHJlc2l6ZTJmcyBzbyBpdCBkb2Vzbid0IHVzZSBxdWl0ZSBhcyBtdWNoIENQVSB3aGVuCisgICAgcmVzaXppbmcgdmVyeSBsYXJnZSBmaWxlIHN5c3RlbXMuCisgICogRml4ZWQgMzItYml0IG92ZXJmbG93IGJ1Z3Mgd2hpY2ggY291bGQgY2F1c2UgcmVzaXplMmZzIHRvIGZhaWwgYW5kCisgICAgcG9zc2libHkgY29ycnVwdCB0aGUgZmlsZSBzeXN0ZW0gd2hpbGUgcmVzaXppbmcgNjQtYml0IGZpbGUgc3lzdGVtcy4KKyAgKiBGaXhlZCBhIGJpZyB3aGljaCBjb3VsZCBjYXVzZSByZXNpemUyZnMgdG8gY29ycnVwdCBiaWdhbGxvYyBmaWxlIHN5c3RlbXMuCisgICogRml4IGEgY3Jhc2ggd2hpbGUgbWtlMmZzIGlzIHBhcnNpbmcgIi1FIHJlc2l6ZT1OTk4iIHdpdGggdGhlIDY0Yml0CisgICAgZmlsZSBzeXN0ZW0gZmVhdHVyZSBlbmFibGVkCisgICogQWRkZWQgYmV0dGVyIGVycm9yIGNoZWNraW5nIHRvIG1rZTJmcyB0byBjaGVjayBmb3IgaW52YWxpZAorICAgIHBhcmFtZXRlcnMgd2hlbiBjcmVhdGluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbS4KKyAgKiBXaGVuIGNyZWF0aW5nIGJpZ2FsbG9jIGZpbGVzeXN0ZW1zLCB0aGUgLWcgb3B0aW9uIHRvIG1rZTJmcyB3aWxsIG5vdworICAgIHNwZWNpZnkgdGhlIG51bWJlciBvZiBjbHVzdGVycyBwZXIgYmxvY2sgZ3JvdXAuCisgICogQWRkZWQgdGhlICJzeW1saW5rIiwgInphcF9ibG9jayIsICJibG9ja19kdW1wIiwgYW5kICJleHRlbnRfb3BlbiIKKyAgICBjb21tYW5kcyB0byBkZWJ1Z2ZzCisgICogRml4ZWQgZGVidWdmcydzIGh0cmVlIGNvbW1hbmQgc28gdGhhdCBhbGwgaXRzIG1lc3NhZ2VzIGFyZSBzZW50CisgICAgdGhyb3VnaCB0aGUgcGFnZXIuCisgICogRml4ZWQgZGVidWdmcydzIGR1bXBfZmlsZSBhbmQgY2F0IGZ1bmN0aW9ucyBzbyB0aGV5IHdvcmsgY29ycmVjdGx5CisgICAgb24gZmlsZSBzeXN0ZW1zIHdpdGggYSBibG9jayBzaXplIGdyZWF0ZXIgdGhhbiA4ay4KKyAgKiBGaXhlZCBta2UyZnMncyBoYW5kbGluZyBvZiB0aGUgbW1wX3VwZGF0ZV9pbnRlcnZhbCBvcHRpb24KKyAgKiBGaXhlZCBlMmZyZWVmcmFnIHNvIGl0IHdvcmtzIG9uIDY0LWJpdCBmaWxlIHN5c3RlbXMsIGFuZCBzbyBpdCB1c2VzCisgICAgbXVjaCBsZXNzIG1lbW9yeS4KKyAgKiBFMmltYWdlIGNhbiBub3cgaW5jbHVkZSBhbGwgZGF0YSBibG9ja3MgaW4gdGhlIGUyaW1hZ2Ugb3V0cHV0CisgICAgZmlsZSB3aGVuIHRoZSB1c2VyIHNwZWNpZmllcyB0aGUgLWEgb3B0aW9uLgorICAqIEZpeGVkIGRlYnVnZnMncyBta25vZCBjb21tYW5kIHNvIHRoYXQgaXQgdXBkYXRlcyB0aGUgYmxvY2sgZ3JvdXAKKyAgICBzdGF0aXN0aWNzCisgICogRG9jdW1lbnQgdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaW4gdGhlIG1rZTJmcyBtYW4gcGFnZS4KKyAgICAoQ2xvc2VzOiAjNjY5NzMwKQorICAqIFVwZGF0ZSBDemVjaCwgRHV0Y2gsIEZyZW5jaCwgR2VybWFuLCBQb2xpc2gsIFN3ZWVkaXNoLCBhbmQKKyAgICBWaWV0bmFtZXNlIHRyYW5zbGF0aW9ucworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMjEgSmFuIDIwMTMgMjE6NTI6NTggLTA1MDAKKworZTJmc3Byb2dzICgxLjQzfldJUC0yMDEyLTA5LTIyLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQWRkIG1ldGFkYXRhIGNoZWNrc3VtIGZlYXR1cmUKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDIyIFNlcCAyMDEyIDIxOjUwOjIwIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mi42LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBGaXggYnVpbGQgZGVwZW5kZW5jaWVzIHRvIGF2b2lkIHJlcXVpcmluZyBkYywgYW5kIHRvIGFsbG93CisgICAgY3Jvc3MtYnVpbGRpbmcgdG8gd29yayAoQ2xvc2VzOiAjNjc3NDk3KQorICAqIFVwZGF0ZWQvZml4ZWQgdmFyaW91cyBtYW4gcGFnZXMKKyAgKiBNa2UyZnMgd2lsbCBub3cgdXBkYXRlIGl0cyBwcm9ncmVzcyBpbmRpY2F0b3JzIGF0IG1vc3Qgb25jZSBhIHNlY29uZAorICAgIHRvIGF2b2lkIG92ZXJ3aGVsbWluZyBzZXJpYWwgY29uc29sZXMuCisgICogUmVzaXplMmZzIHdpbGwgc3VwcG9ydCBsYXp5X2l0YWJsZV9pbml0LCBzcGVlZGluZyB1cCBvZmYtbGluZSBncm93dGgKKyAgICBvZiB1bmluaXRfYmcgZmlsZSBzeXN0ZW1zLgorICAqIFJlc2l6ZTJmcyBub3cgc3VwcG9ydHMgb24tbGluZSByZXNpemluZyA2NC1iaXQgZmlsZSBzeXN0ZW1zIGJleW9uZAorICAgIDE2VEIuICBBIG51bWJlciBvZiBidWdzIGluIHJlc2l6ZTJmcyB3aGljaCBwcmV2ZW50ZWQgdGhpcyBoYXZlIGJlZW4KKyAgICBmaXhlZC4KKyAgKiBSZXNpemUyZnMgbm93IGNvcnJlY3RseSBoYW5kbGVzIHJlc2l6aW5nIDMyLWJpdCBmaWxlIHN5c3RlbXMgdG8gMTZUQi4KKyAgKiBGaXhlZCBhIHBvdGVudGlhbCBzZWdmYXVsdCBpbiBlMmZzY2sgd2hlbiB0aGVyZSBpcyBhbiBJL08gZXJyb3IKKyAgICB3aGlsZSByZWFkaW5nIHRoZSBzdXBlcmJsb2NrLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIEZyaSwgMjEgU2VwIDIwMTIgMTI6MTQ6NDEgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjUtMS4xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5vbi1tYWludGFpbmVyIHVwbG9hZC4KKyAgKiBlMmZzY2stc3RhdGljLCBlMmZzcHJvZ3M6IGxldCBwcmVpbnN0IHJlbW92ZSBhIHN5bWJvbGljIGxpbmsgaW4KKyAgICAvdXNyL3NoYXJlL2RvYywgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYSBkaXJlY3Rvcnkgc2luY2UKKyAgICAxLjM5KzEuNDAtV0lQLTIwMDYuMTAuMDIrZGZzZy0xLiAoQ2xvc2VzOiAjNjk4ODc5KS4KKworIC0tIE5pY29sYXMgQm91bGVuZ3VleiA8bmljb2xhc0BkZWJpYW4ub3JnPiAgRnJpLCAyMiBGZWIgMjAxMyAyMzoxNDo1OSArMDEwMAorCitlMmZzcHJvZ3MgKDEuNDIuNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogTWFyayB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgYXMgTXVsdGktQXJjaDogZm9yZWlnbiwgc28gaWYgYSBwYWNrYWdlCisgICAgZm9vOmkzODYgZGVwZW5kcyBvbiBlMmZzcHJvZ3MgYW5kIGlzIGluc3RhbGxlZCBvbiBhbiBhbWQ2NCBzeXN0ZW0sCisgICAgdGhlIG5hdGl2ZSBlMmZzcHJvZ3Mgd2lsbCBzYXRpc2Z5IHRoZSBkZXBlbmRlbmN5LiAgKENsb3NlczogIzY3ODM5NSkKKyAgKiBGaXggYSBmZCBsZWFrIHdoaWNoIGNvdWxkIGNhdXNlIGxvZ3NhdmUgKGFuZCBoZW5jZSBhIGJvb3QtdGltZSByYworICAgIGluaXQgc2NyaXB0KSB0byBoYW5nIChDbG9zZXM6ICM2ODI1OTIpCisgICogRml4IGEgcHJvYmxlbSBpZiBlMmZzY2sgd2hlcmUgaWYgdGhlIHJvb3QgZmlsZSBzeXN0ZW0gaXMgbW91bnRlZAorICAgIHJlYWQtb25seSwgZTJmc2NrIHdvdWxkIG5vdCBjbGVhciBhbiBlcnJvciBpbmRpY2F0aW9uIGluIHRoZSBqb3VybmFsCisgICAgc3VwZXJibG9jay4gIENvbWJpbmVkIHdpdGggYSBrZXJuZWwgYnVnLCB0aGlzIHdvdWxkIGNhdXNlIHRoZSBlMmZzY2sKKyAgICB0byBjaGVjayB0aGUgZmlsZSBzeXN0ZW0gYWZ0ZXIgZXZlcnkgc2luZ2xlIGJvb3QKKyAgKiBGaXhlZCBmaWxlZnJhZyBzbyBpdCB3b3VsZCBub3Qgc2VnIGZhdWx0IG9uIHZpcnR1YWwgZmlsZXN5c3RlbXMgc3VjaAorICAgIGFzIC9wcm9jOiBlLmcuLCAiZmlsZWZyYWcgL3Byb2MvcGFydGl0aW9ucyIKKyAgKiBGaXggZmlsZWZyYWcgc28gdGhhdCBpdCBjb3JyZWN0bHkgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGV4dGVudHMKKyAgKiBGaXhlZCBhIGJ1ZyB3aGljaCBjYXVzZWQgIm1rZTJmcyAtTiAyNTYgLXQgZXh0NCAvdG1wL2Zvby5pbWcgMjU2bSIKKyAgICB0byB3cml0ZSBibG9ja3Mgb3V0IHVudGlsIC90bXAgZmlsbGVkCisgICogRml4ZWQgYSBidWcgaW4gaG93IGUyZnNjayB3b3VsZCB1bmlxdWlmeSBkaXJlY3RvcnkgZW50cnkgbmFtZXMKKyAgKiBDaGFuZ2UgZTJmc2NrIHNvIGl0IHdpbGwgYWxsb3cgZmlsZSBzeXN0ZW1zIG1vdW50ZWQgcmVhZC1vbmx5IHRvIGJlCisgICAgY2hlY2tlZCB3aXRoIHRoZSAtZiBvcHRpb24uCisgICogRml4IGUyZnNjayBzbyB0aGF0IHRoZSBmaWxlIHN5c3RlbSBpcyBtYXJrZWQgYXMgY29udGFpbmluZyBhbgorICAgIGVycm9yIGlmIHRoZSB1c2VyIGNob29zZXMgbm90IHRvIGZpeCB0aGUgcXVvdGEgdXNhZ2UgaW5mb3JtYXRpb24uCisgICogRml4IHR1bmUyZnMgc28gdGhhdCBpdCBjb3JyZWN0bHkgcmVtb3ZlcyB0aGUgcXVvdGEgZmVhdHVyZSB3aGVuCisgICAgdGhlIGxhc3QgcXVvdGEgaW5vZGUgaXMgcmVtb3ZlZC4KKyAgKiBGaXggdHVuZTJmcyBzbyB0aGF0IGFmdGVyIHJlbW92aW5nIGEgcXVvdGEgaW5vZGUsIHRoZSBibG9jayBiaXRtYXAKKyAgICBpcyB1cGRhdGVkOyBvdGhlcndpc2UsIGUyZnNjayB3b3VsZCBjb21wbGFpbiBhZnRlciBydW5uaW5nICd0dW5lMmZzCisgICAgLU8gXnF1b3RhIDxkZXY+Jy4KKyAgKiBGaXggdHVuZTJmcyBzbyB0aGF0IHdoZW4gY29udmVydGluZyBhIGZpbGUgc3lzdGVtIGZyb20gdXNpbmcgbGVnYWN5CisgICAgcXVvdGEgZmlsZXMgdG8gdGhlIG5ldyBxdW90YSBmaWxlIHN5c3RlbSBmZWF0dXJlIHdpdGggaGlkZGVuIHF1b3RhCisgICAgZmlsZXMsIHRoZSBhY2NvdW50aW5nIGZvciB0aGVzZSBmaWxlcyBpcyBoYW5kbGVkIGNvcnJlY3RseSBzbyB0aGF0CisgICAgZTJmc2NrIGRvZXNuJ3QgY29tcGxhaW4uCisgICogVGhlIGU0ZGVmcmFnIHByb2dyYW0gbm93IGFsbG93cyBkZXZpY2Ugc3ltbGlua3MsIHN1Y2ggYXMKKyAgICAvZGV2L21hcHBlci90ZXN0dmctdGVzdGx2LCBpbnN0ZWFkIG9mIGluc2lzdGluZyBvbiBsZXNzCisgICAgaHVtYW4tZnJpZW5kbHkgbmFtZXMgc3VjaCBhcyAvZGV2L2RtLTIKKyAgKiBVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzICAoQ2xvc2VzOiAjNjgwMTE0KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMjkgSnVsIDIwMTIgMTk6NTk6NTYgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjQtMykgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBBZGQgdGhlIC1DIG9wdGlvbiB0byBjaGF0dHIncyB1c2FnZSBtZXNzYWdlCisgICogRml4IGUyZnNwcm9ncyBzbyBpdCBpcyBibGhjIChidWlsZCBsb2cgaGFyZGVuaW5nIGNoZWNrKSBjbGVhbi4gIFRoaXMKKyAgICBmaXhlZCBlMmZzY2suc3RhdGljIHdoaWNoIHByZXZpb3VzbHkgd2FzIG5vdCBnZXR0aW5nIGJ1aWx0IHdpdGggdGhlCisgICAgc2VjdXJpdHkgaGFyZGVuaW5nIGZsYWdzLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMTMgSnVuIDIwMTIgMTY6MDM6MjQgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjQtMikgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBGaXggRlRCRlMgcHJvYmxlbSBvbiB0aGUgaHVyZCBhbmQgZnJlZWJzZCBwbGF0Zm9ybXMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDEyIEp1biAyMDEyIDE4OjI2OjQwIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mi40LTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBGaXggNjQtYml0IGJsb2NrIG51bWJlciBidWdzIGluIGUyZnNjaywgZHVtcGUyZnMsIGFuZCBkZWJ1Z2ZzIHdoaWNoCisgICAgY291bGQgY29ycnVwdCBmaWxlIHN5c3RlbXMKKyAgKiBGaXhlZCBlMmZzY2sncyBoYW5kbGluZyBvZiBob3cgZXJyb3JzIHByb3BhZ2F0ZSBmcm9tIHRoZSBqb3VybmFsIHRvCisgICAgdGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sKKyAgKiBGaXhlZCBhIGZhbHNlIHBvc2l0aXZlIGNvbXBsYWludCBmcm9tIGUyZnNjayBpZiBhbGwgb2YgdGhlIGV4dGVudHMKKyAgICBpbiB0aGUgbGFzdCBleHRlbnQgYmxvY2sgYXJlIHVuaW5pdGlhbGl6ZWQgYW5kIGxvY2F0ZWQgYWZ0ZXIgdGhlCisgICAgZW5kIG9mIHRoZSBmaWxlLgorICAqIGR1bXBlMmZzIHdpbGwgZGlzcGxheSB0aGUgam91cm5hbCdzIGVycm9yIGluZGljYXRvciBpbiB0aGUKKyAgICBzdXBlcmJsb2NrIGlmIGl0IGlzIHNldAorICAqIEZpeGVkIGEgIGJ1ZyB3aGljaCBjYXVzZWQgZTJmc2NrIHRvIGluY29ycmVjdGx5IHVzZSBPX0VYQ0xVU0lWRSBpbgorICAgIHNvbWUgY29ybmVyIGNhc2VzLgorICAqIEZpeCB0cnVuY2F0aW9uIG9mIGV4dGVudC1tYXBwZWQgaW5vZGVzIGluIGUyZnNjayBhbmQgbGliZXh0MmZzCisgICogRml4ZWQgaV9ibG9ja3MgYWNjb3VudGluZyBpbiBiaWdhbGxvYyBmaWxlIHN5c3RlbXMuCisgICogQWRkIHN1cHBvcnQgZm9yIGJ0cmZzJ3MgTm9fQ09XIGZsYWcgdG8gbHNhdHRyIGFuZCBjaGF0dHIKKyAgKiBEZWJ1Z2ZzIGludGVycHJldHMgdGhlIGRhdGUgc3RyaW5ncyBvZiB0aGUgZm9ybSAiQGRkZCIgYXMgZGRkCisgICAgc2Vjb25kcyBhZnRlciB0aGUgZXBvY2gKKyAgKiBVcGRhdGVkL2ZpeGVkIHZhcmlvdXMgbWFuIHBhZ2VzICAoQ2xvc2VzOiAjNjc0NDUzLCAjNjc0Njk0KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMTIgSnVuIDIwMTIgMTg6MjA6NTUgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyLjMtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIEZpeCBidWdzIG9uIDMyLWJpdCBzeXN0ZW1zIHdoaWNoIGNvdWxkIGNvcnJ1cHQgPiAxNlRCIGZpbGUgc3lzdGVtcworICAqIFF1aWV0IGNvbXBsYWludHMgaW4gZTJmc2NrIHdoZW4gdGhlIHRvdGFsIGZyZWUgYmxvY2tzIG9yIGlub2RlcyBhcmUKKyAgICBpbmNvcnJlY3QgaW4gdGhlIHN1cGVyYmxvY2sgYWZ0ZXIgYW4gc3lzdGVtIGNyYXNoLCBzaW5jZSB3ZSBkb24ndAorICAgIHVwZGF0ZSBub3IgZGVwZW5kIG9uIHRoZSBzdXBlcmJsb2NrIHN1bW1hcmllcyBhdCBlYWNoIGNvbW1pdCBib3VuZGFyeQorICAqIEZpeGVkIHN1cHBvcnQgZm9yIChoaWRkZW4pIHF1b3RhIGZpbGVzIGJ1aWx0IGludG8gZXh0NDsgaW4KKyAgICBwYXJ0aWN1bGFyLCBkb24ndCByZXdyaXRlIHRoZSBxdW90YSBpbm9kZSB1bmxlc3MgdGhlIHF1b3RhcyBhcmUKKyAgICBpbmNvbnNpc3RlbnQKKyAgKiBPcHRpbWl6ZWQgcmVhZGluZyBhbmQgd3JpdGluZyBiaXRtYXBzIGlmIGRpcmVjdCBJL08gd2FzIGVuYWJsZWQKKyAgKiBVcGRhdGUgQ3plY2gsIER1dGNoLCBGcmVuY2gsIEdlcm1hbiwgUG9saXNoLCBTd2VlZGlzaCwgYW5kCisgICAgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMKKyAgKiBGaXhlZCBpbmNvcnJlY3QgaW5kZW50YXRpb24gaW4gdHVuZTJmcyBtYW4gcGFnZQorICAqIFVwZGF0ZSBkZWJpYW4gcG9saWN5IGNvbXBsaWFuY2UgdG8gMy45LjMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDE0IE1heSAyMDEyIDE0OjQzOjA5IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mi4yLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4ZWQgZTJmc2NrLmNvbmYncyBtYW4gcGFnZSAoQ2xvc2VzOiAjNjQ2OTYzKQorICAqIEZpeGVkIDMyLWJpdCBiaW5hcnkgY29tcGF0aWJpbGl0eSBwcm9ibGVtIGZvciB0aGUgbGliZXh0MmZzIHNoYXJlZAorICAgIGxpYnJhcnkgaW50cm9kdWNlZCBpbiAxLjQyLjIKKyAgKiBta2UyZnMgd2lsbCBubyBsb25nZXIgZmFpbCBpZiB0aGUgL2V0Yy9tdGFiIGZpbGUgaXMgbm90IHByZXNlbnQKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDA5IEFwciAyMDEyIDE0OjU0OjMzIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mi4yLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24KKyAgKiBGaXhlZCB2YXJpb3VzIG1hbiBwYWdlcyAoQ2xvc2VzOiAjNjY1NDI3KQorICAqIFNwZWVkIHVwIHJlc2l6ZTJmcyBmb3IgbGFyZ2UgZmlsZSBzeXN0ZW1zIChDbG9zZXM6ICM2NjMyMzcpCisgICogQmUgbGVzcyBzdHJpY3QgYWJvdXQgdGhlIEVYVDRfRU9GQkxPQ0tTX0ZMIGZsYWcgKHdoaWNoIHdpbGwKKyAgICBldmVudHVhbGx5IGJlIGdvaW5nIGF3YXkgaW4gdGhlIGV4dDQgZmlsZSBzeXN0ZW0gZm9ybWF0KQorICAqIFRlYWNoIG1rZTJmcyB0byB1c2UgZGlyZWN0IEkvTyBpZiB0aGUgLUQgb3B0aW9uIGlzIGdpdmVuCisgICogUHJpbnQgZXJyb3JzIHJldHVybmVkIGJ5IGV4dDJmc19vcGVuMigpIGFuZCBleHQyZnNfY2hlY2tfZGVzYygpIHNvCisgICAgd2UgY2FuIG1vcmUgZWFzaWx5IGRpYWdub3NlIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzIGNhdXNlZCBieQorICAgIGluc3VmZmljaWVudCBtZW1vcnkgYW5kIGFib3J0IG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzCisgICogRTJmc2NrIGNhbiBub3cgd3JpdGUgbG9nIGZpbGVzIGNvbnRhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlCisgICAgcHJvYmxlbXMgdGhhdCB3ZXJlIGZvdW5kIGFuZCBmaXhlZCBkaXJlY3RseS4KKyAgKiBFMmZzY2sgY2FuIG5vdyBsaW1pdCB0aGUgbnVtYmVyIG9mIG1lc3NhZ2VzIGlzc3VlZCBhbmQgcHJpbnRlZCBvbgorICAgIHRoZSBjb25zb2xlCisgICogVGhlIGR1bXBlMmZzLCBkZWJ1Z2ZzLCBhbmQgdHVuZTJmcyBub3cgdXNlIHJidHJlZSBiaXRtYXBzLCB3aGljaAorICAgIGNhdXNlIHRoZW0gdG8gdXNlIG11Y2ggbGVzcyBtZW1vcnkgZm9yIGxhcmdlIGZpbGUgc3lzdGVtcy4KKyAgKiBFMmZzY2sgd2lsbCBub3cgY2hlY2sgZm9yIHplcm8tbGVuZ3RoIGV4dGVudHMsIHNpbmNlIG9sZGVyIGtlcm5lbHMgd2lsbAorICAgIE9PUFMgaWYgdGhleSBjb21lcyBhY3Jvc3Mgb25lCisgICogRml4IGUyZnNjaydzIGRpc2NhcmQgYmVoYXZpb3VyIHNvIGl0IGRvZXMgbm90IGRpc2NhcmQgdG9vIG1hbnkKKyAgICBibG9ja3MsIGFuZCBpdCB3aWxsIG5vdCB1c2UgZGlzY2FyZCBpZiB0aGUgZGV2aWNlIGFkdmVydGlzZXMKKyAgICB0aGF0IGRpc2NhcmQgZG9lcyBub3QgcGVyc2lzdGVudGx5IHplcm8gZGF0YS4gIEFsc28sIGlmIGUyZnNjayBpcworICAgIHJ1biBpbiByZWFkLW9ubHkgbW9kZSwgZG8gbm90IHRyeSB0byBkaXNjYXJkIGRhdGEuCisgICogRml4IG1rZTJmcyAtUyBzbyBpdCBkb2VzIG5vdCBjb3JydXB0IHRoZSBmaXJzdCBibG9jayBncm91cCdzCisgICAgaW5mb3JtYXRpb24uCisgICogQWRkIHBvaW50ZXIgZm9yIGUyZnNwcm9ncy11ZGViIHRvIGxpYmNvbWVycjIuc2hsaWJzIChDbG9zZXM6ICM2NjU4ODUpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAyNyBNYXIgMjAxMiAxNTo1NTo1NyAtMDcwMAorCitlMmZzcHJvZ3MgKDEuNDIuMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCB0aGUgZmFjdCB0aGF0IGRwa2ctYnVpbGRmbGFncyB3YXMgYmVpbmcgaWdub3JlZCBkdWUgdG8gYQorICAgIGJhc2gnaXNtIGluIGRlYmlhbi9ydWxlcy4KKyAgKiBDaGVjayB0aGUgbmV3IC9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5L0FDL29ubGluZSBzaW5jZQorICAgIC9wcm9jL2FjcGkvYWNfYWRhcHRlci8uLi4gaXMgZGVwcmVjYXRlZCBhbmQgbWF5IG5vdCBiZSBwcmVzZW50IG9uCisgICAgbmV3ZXIga2VybmVscy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDIwIEZlYiAyMDEyIDE5OjEyOjIwIC0wNTAwCisKK2UyZnNwcm9ncyAoMS40Mi4xLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBkcGtnLWJ1aWxkZmxhZ3MgaXMgbm93IHVzZWQgaWYgaXQgaXMgcHJlc2VudC4gIFRoaXMgYWxsb3dzIERlYmlhbgorICAgIFdoZWV6eSB0byBidWlsZCB3aXRoIHNlY3VyaXR5IGhhcmRlbmVkIGJ1aWxkIGZsYWdzLiAgKENsb3NlczogIzY1NDQ1NykKKyAgKiBta2UyZnMgYW5kIGUyZnNjayBub3cgdXNlIG11Y2ggbGVzcyBtZW1vcnkgZm9yIGxhcmdlIGZpbGUgc3lzdGVtcworICAqIEZpeGVkIG1rZTJmcyAtUyBzbyBpdCBjYW4gYmUgdXNlZnVsbHkgdXNlZCBhcyBhIGxhc3QgZGl0Y2ggcmVjb3ZlcnkKKyAgICBjb21tYW5kIHdoZW4gZm9yIGV4dDQgZmlsZXN5c3RlbXMgdGhhdCBoYXZlIHRoZSB1bmluaXRfYmcgZmVhdHVyZSBlbmFibGVkLgorICAqIFRoZSBta2U0ZnMgYXJndlswXSBpcyBub3cgcmVjb2duaXplZCBieSBta2UyZnMuCisgICogRml4ZWQgdXNhZ2UgYW5kIGhlbHAgbWVzc2FnZXMgZm9yIG1rZTJmcy4KKyAgKiBFbGltaW5hdGVkIHNwdXJpb3VzIGJhZCBibG9jayBncm91cCBjaGVja3N1bSB3YXJuaW5ncyB3aGVuIGUyZnNjaworICAgIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGJhY2t1cCBncm91cCBkZXNjcmlwdG9ycy4KKyAgKiBEZWJ1Z2ZzJ3MgbmNoZWNrIGNvbW1hbmQgaXMgbm93IG11Y2ggbW9yZSB1c2VmdWwgd2hlbiB1c2VkIHRvCisgICAgZGlhZ25vc2UgYmFkbHkgY29ycnVwdGVkIGZpbGUgc3lzdGVtLiAgQWRkZWQgYSBuZXcgLWMgb3B0aW9uLgorICAqIEZpeGVkIGJ1ZyBpbiBlMmltYWdlIHdoaWNoIGNvdWxkIGNhdXNlIGl0IHRvIGZhaWwgdG8gc2V0IGlfc2l6ZQorICAgIGNvcnJlY3RseSBpZiB0aGUgbGFzdCBob2xlIGluIHRoZSBmaWxlIGlzIGFuIGV4YWN0IG11bHRpcGxlIG9mIGEKKyAgICBtZWdhYnl0ZS4KKyAgKiBGaXhlZCBhIGJ1ZyB3aXRoIHJlc2l6ZTJmcyB3aGVyZSBmb3IgMWsgYW5kIDJrIGZpbGUgc3lzdGVtcywgdGhlCisgICAgbWluaW11bSBmaWxlIHNpemUgdXNlZCBmb3IgcmVzaXplMmZzIC1NIGNvdWxkIGJlIGEgYmxvY2sgdG9vIHNtYWxsLgorICAqIEZpeGVkIHRoZSBiYWRibG9ja3MgcHJvZ3JhbSB0byBob25vciB0aGUgLXMgZmxhZyB3aGVuIGluIHJlYWQtb25seSAtdAorICAgIG1vZGUuICAoQ2xvc2VzOiAjNjQ2NjI5KQorICAqIFVwZGF0ZSBDemVjaCwgRHV0Y2gsIEZyZW5jaCwgUG9saXNoLCBhbmQgU3dlZGlzaCB0cmFuc2xhdGlvbnMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksIDE3IEZlYiAyMDEyIDE1OjA3OjEzIC0wNTAwCisKK2UyZnNwcm9ncyAoMS40Mi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4ZWQgaHVyZCBGVEJGUyAoQ2xvc2VzOiAjNjQ5Njg5KQorICAqIE9wdGltaXplZCBlMmZzY2sgc3BlZWQgb24gbGFyZ2UgZmlsZSBzeXN0ZW1zIHdoZW4gdXNpbmcgW3NjcmF0Y2hfZmlsZXNdCisgICogRml4ZWQgZTJmc2NrIGhhbmRsaW5nIG9mIGJsb2NrcyBjbGFpbWVkIGJ5IG11bHRpcGxlIGlub2RlcyBpbgorICAgIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcworICAqIEZpeGVkIGUyZnNjaydzIGNhbGN1bGF0aW9uIG9mIG1heCBmaWxlIHNpemUgZm9yIG5vbi1leHRlbnQgYmFzZWQKKyAgICBmaWxlcyB3aGVuIGh1Z2VfZmlsZSBpcyBlbmFibGVkCisgICogVXBkYXRlIEN6ZWNoIGFuZCBTd2VkaXNoIHRyYW5zbGF0aW9ucworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMjkgTm92IDIwMTEgMTU6NTA6MDcgLTA1MDAKKworZTJmc3Byb2dzICgxLjQyfldJUC0yMDExLTExLTIwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBGaXggZXJyb3IgY2hlY2tpbmcgc28gcmVzaXplMmZzIHdvcmtzIHdoZW4gdXNpbmcgYSAzMi1iaXQgdXNlcnNwYWNlCisgICAgYW5kIGEgNjQtYml0IGtlcm5lbCAoQ2xvc2VzOiAjNjQ0OTg5KQorICAqIGUyZnNjayBub3cgcmV0dXJucyBhZGRpdGlvbmFsIHN0YXR1cyBiaXRzIGluIGl0cyBleGl0IGNvZGUgaWYgaXQKKyAgICBhYm9ydHMgZWFybHkgaW4gdGhlIGUyZnNjayBydW4KKyAgKiBGaXggcG90ZW50aWFsIHN0YWNrIG92ZXJmbG93IGluIGRlYnVnZnMKKyAgKiBBdm9pZCBhbiBpbmZpbml0ZSBsb29wIGluIGV4dDJmc19maW5kX2Jsb2NrX2RldmljZSgpIGlmIHRoZXJlIGFyZQorICAgIHN5bWxpbmsgbG9vcHMgaW4gL2RldiBjYXVzZWQgYnkgYSBidWdneSB1ZGV2CisgICogRml4IHRlc3QgZmFpbHVyZXMgb24gYmlnLWVuZGlhbiBzeXN0ZW1zCisgICogRml4IGdjYyAtV2FsbCBjb21wbGFpbnRzCisgICogQWRkIGZyZWVmcmFnIGFuZCBlMmZyZWVmcmFnIGNvbW1hbmRzIHRvIGRlYnVnZnMKKyAgKiBBZGQgYSByZWFkLW9ubHksIG1ldGFkYXRhLW9ubHkgZGVidWdmcyBjb21tYW5kIGNhbGxlZCByZGVidWdmcworICAqIEltcHJvdmUgZmlyc3QtY2xhc3MgcXVvdGEgc3VwcG9ydAorICAqIEZpeCBiaWdhbGxvYyBzdXBwb3J0IGluIGUyZnJlZWZyYWcKKyAgKiBDbGVhbiB1cCBtbXAgaGFuZGxpbmcKKyAgKiBGaXggYSByZWdyZXNzaW9uIHdoaWNoIGNhdXNlZCBta2UyZnMgdG8gbm90IHdvcmsgY29ycmVjdGx5IG9uIGZpbGVzCisgICAgPiAyR0IuICAoQ2xvc2VzOiAjNjQ3MjQ1KQorICAqIEZpeCBhIG5hbWVzcGFjZSBsZWFrIGluIGxpYmV4dDJmcyAodGRiX251bGwpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAyMCBOb3YgMjAxMSAyMTozMjo0OSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDJ+V0lQLTIwMTEtMTAtMTYtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeCBvbmxpbmUgcmVzaXppbmcgd2l0aCByZXNpemUyZnMgKENsb3NlczogIzY0NDk4OSkKKyAgKiBGaXggYnVnIHdoaWNoIGNhdXNlZCBzaHJpbmtpbmcgYW4gZW1wdHkgZmlsZSBzeXN0ZW0gZmlsZSBzeXN0ZW0gdG8KKyAgICBpdHMgbWluaW1hbCBzaXplIHRvIHNvbWV0aW1lcyBmYWlsLgorICAqIERvbid0IGxvb2sgYXQgdGhlIGhpZ2ggMTYgYml0cyBvZiBpX2ZpbGVfYWNsIGlmIHRoZSA2NC1iaXQgZmVhdHVyZQorICAgIGlzIG5vdCBlbmFibGVkOyB0aGlzIGZpeGVzIGEgSHVyZCBjb21wYXRpYmlsaXR5IGZpZWxkIHNpbmNlIHRoaXMgaXMKKyAgICB1c2VkIGZvciB0aGUgaGlnaCAxNiBiaXRzIG9mIGlfbW9kZSBvbiBIdXJkLgorICAqIFVwZGF0ZSBTd2VlZGlzaCwgUG9saXNoLCBGcmVuY2gsIEdlcm1hbiwgYW5kIEN6ZWNoIHRyYW5zbGF0aW9ucworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMTYgT2N0IDIwMTEgMjI6MDc6MDMgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyfldJUC0yMDExLTEwLTA5LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBGaXhlZCBpbmZpbml0ZSBsb29wIGluIGZpbGVmcmFnIChDbG9zZXM6ICM2NDQ3OTIpCisgICogRml4ZWQgdmFyaW91cyBzcGVsbGluZyBhbmQgdHJhbnNsYXRpb24gcHJvYmxlbXMKKyAgKiBGaXhlZCB2YXJpb3VzIG1hbiBwYWdlcworICAqIEZpeGVkIDY0LWJpdCBibG9jayBudW1iZXJzIGluIGUyZnNjaydzIGpvdXJuYWwgcmVwbGF5CisgICogRml4ZWQgbWlwc2VsIEZUQkZTIHRoYXQgd2FzIGZpeGVkIGZvciBtaXBzCisgICogVXBkYXRlIFN3ZWVkaXNoLCBGcmVuY2gsIGFuZCBDemVjaCB0cmFuc2xhdGlvbnMKKyAgKiBDb252ZXJ0IHRvIGRlYmlhbiBzb3VyY2UgMy4wIChxdWlsdCkgZm9ybWF0CisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAwOSBPY3QgMjAxMSAyMjoyNDozMSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDJ+V0lQLTIwMTEtMTAtMDUtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXggcG9ydGFiaWxpdHkgaXNzdWVzIHdpdGggbm9uLUxpbnV4IHBsYXRmb3JtcyBhbmQgZm9yIHRoZSBtaXBzCisgICAgcGxhdGZvcm0sIHdoaWNoIGRvZXMgc29tZSByZWFsbHkgc3RyYW5nZSB0aGluZ3MgdmlzLWEtdmlzCisgICAgMzIvNjQtYml0IHN1cHBvcnQgd2l0aG91dCBhY3R1YWxseSBoYXZpbmcgYSA2NC1iaXQgdmVyc2lvbiBvZgorICAgIHRoZSBhcmNoaXRlY3R1cmUgKENsb3NlczogIzY0NDUwMikKKyAgKiBGaXggZGVwZW5kZW5jeSBwcm9ibGVtIHdoaWNoIGNhdXNlcyB0aGUgbmV3ZXIgdmVyc2lvbiBvZiBsaWJjb21fZXJyMgorICAgIHRvIGdldCBwdWxsZWQgaW4gd2hlbiB1cGdyYWRpbmcgdG8gZTJmc3Byb2dzLCB3aGljaCBuZWVkcyB0aGUgbmV3CisgICAgaW50ZXJmYWNlIGV4cG9ydGVkIGJ5IGxpYmNvbV9lcnIyLiAgKENsb3NlczogIzY0NDQyNSwgIzY0NDU4NCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksIDA3IE9jdCAyMDExIDE4OjI3OjA2IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mn5XSVAtMjAxMS0xMC0wNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFVwZGF0ZSB0cmFuc2xhdGlvbnM6IEdlcm1hbiAoQ2xvc2VzOiAjNTIwOTg1KQorICAqIEZpeGVkIHVzYWdlIGFuZCBlcnJvciB0ZXh0IGZvciBta2UyZnMgLUMgb3B0aW9uCisgICogVXBkYXRlZCBlMmZzcHJvZ3MucG90IGZpbGUgZm9yIHRyYW5zbGF0b3JzCisgICogQWRkZWQgc3VwcG9ydCBmb3IgaW50ZXJuYXRpb25hbGl6ZWQgZXJyb3Igc3RyaW5ncyBmb3IgbGliY29tX2VycgorICAqIEZpeGVkIHZhcmlvdXMgcG9ydGFiaWxpdHkgbml0cyB0aGF0IHdlcmUgY2F1c2luZyBGVEJGUyBwcm9ibGVtcyBvbgorICAgIEh1cmQgYW5kIEZyZWVCU0QKKyAgKiBBZGRlZCAiYmlnIiBhbmQgImh1Z2UiIHR5cGVzIHRvIG1rZTJmcy5jb25mLCBzaW5jZSB0aGV5IGFyZSBuZWVkZWQKKyAgICBmb3IgdmVyeSBsYXJnZSBmaWxlIHN5c3RlbXMKKyAgKiBGaXhlZCBvbi1saW5lIHJlc2l6aW5nIHdoaWNoIGhhZCBiZWVuIGJyb2tlbiBpbiB0aGUgMS40MiBzZXJpZXMKKyAgICAoQ2xvc2VzOiAjNDUxMzg4KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMDUgT2N0IDIwMTEgMDI6MTA6NTMgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyfldJUC0yMDExLTEwLTAxLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogVXBkYXRlIHRyYW5zbGF0aW9uczogRnJlbmNoLCBHZXJtYW4gKENsb3NlczogIzYyMDY1OSkKKyAgKiBGaXggY29tcGlsYXRpb24gcHJvYmxlbXMgaW4gaGVybWV0aWMgZW52aXJvbm1lbnRzCisgICogRml4IG9uLWxpbmUgcmVzaXppbmcgaW4gcmVzaXplMmZzIChDbG9zZXM6ICM0NTEzODgpCisgICogQWRkIGRlZmluaXRpb25zIGZvciAiYmlnIiBhbmQgImh1Z2UiIGZpbGVzeXN0ZW1zIHRvIC9ldGMvbWtlMmZzLmNvbmYKKyAgKiBGaXggbWtlMmZzIHdoZW4gdGhlcmUgYXJlIG1vcmUgdGhhbiAyKiozMiBibG9jayBncm91cHMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDA0IE9jdCAyMDExIDAwOjA0OjI1IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mn5XSVAtMjAxMS0xMC0wMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogQXZvaWQgdW5uZWNlc3NhcnkgcmVib290cyB3aGVuIGNoZWNraW5nIHRoZSByb290IGZzIGluIHNvbWUgc3BlY2lhbCBjYXNlcworICAqIEZpeCBhbiBvZmYtYnktb25lIGVycm9yIGluIGZpbGVmcmFnIC12J3Mgb3V0cHV0CisgICogTWFrZSBmaWxlZnJhZyBkaXNwbGF5IHRoZSBudW1iZXIgb2YgY29udGlndW91cyAobm90IHBoeXNpY2FsKQorICAgICAgZXh0ZW50cyAoQ2xvc2VzOiAjNjMxNDk4KQorICAqIENsYXJpZnkgdGhlIG1rZTJmcy5jb25mLjUgbWFuIHBhZ2UgKENsb3NlczogIzYzNDg4MykKKyAgKiBBZGQgYSBodXJkLXNwZWNpZmljIG1rZTJmcy5jb25mIGZpbGUgKENsb3NlczogIzYyOTM1NSkKKyAgKiBta2UyZnMgd2lsbCBzZXQgc19tYXhfbW50X2NvdW50IHRvIC0xIGluc3RlYWQgb2YgMCBieSBkZWZhdWx0IHRvCisgICAgICB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBwcmUtMy4wIGtlcm5lbHMgd2hpY2ggY2F1c2VkIGEgc3B1cmlvdXMKKyAgICAgIG1lc3NhZ2UgdG8gYmUgcHJpbnRlZCB3aGVuIHRoZSBmaWxlIHN5c3RlbSB3YXMgbW91bnRlZCAoQ2xvc2VzOiAjNjMyNjM3KQorICAqIEZpeGVkIHBvcnRhYmlsaXR5IHByb2JsZW1zIHdoaWNoIHdhcyBjYXVzaW5nIGJ1aWxkIGZhaWx1cmVzIG9uCisgICAgICBub24tTGludXgvbm9uLXg4NiBzeXN0ZW1zLgorICAqIFZlcmlmeSB0aGF0IHRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3Mgc2FuZSBiZWZvcmUgdHJ1c3RpbmcgaXQsIHRvCisgICAgICBhdm9pZCBpdCBjYXVzaW5nIG1vcmUgaGFybSB0aGFuIGdvb2QuCisgICogRml4ZWQgdGhlIGRlYmlhbi9ydWxlcyBmaWxlIHNvIHRoYXQgaXQgYnVpbGQgc3VjY2Vzc2Z1bGx5IGlmCisgICAgICBERUJfQlVJTERfT1BUSU9OUyBjb250YWlucyAibm9zdHJpcCIgKENsb3NlczogIzYyNzUzNSkKKyAgKiBGaXhlZCBzb21lIGJpZy1lbmRpYW4gYnVncyBpbiB0aGUgTU1QIGNvZGUKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksIDMwIFNlcCAyMDExIDIyOjMzOjQxIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40Mn5XSVAtMjAxMS0wOS0yNS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4IEZUQkZTIG9uIGJpZy1lbmRpYW4gYXJjaGl0ZWN0dXJlcyAoQ2xvc2VzOiAjNjQxODM4KQorICAqIEFkZCBzdXBwb3J0IGZvciBtdWx0aWFyY2ggKENsb3NlczogIzYzMjE2OSkKKyAgKiBDbGFyaWZ5IGFuZCB1cGRhdGUgZGViaWFuL2NvcHlyaWdodCBmaWxlIChDbG9zZXM6ICM2MTQ2NjIpCisgICogQWRkIHN1cHBvcnQgZm9yIE11bHRpLU1vdW50IFByb3RlY3Rpb24gKE1NUCkKKyAgKiBBbGxvdyB0dW5lMmZzIHRvIHJlbW92ZSB0aGUgZXh0ZXJuYWwgam91cm5hbCBpZiB0aGUgZGV2aWNlIGlzIG5vdCBmb3VuZAorICAqIFVwZGF0ZWQvY2xhcmlmaWVkIG1hbiBwYWdlcyAoQ2xvc2VzOiAjNjQyMTkzKQorICAqIEZpeCBhIHBvdGVudGlhbCBGVEJGUyBjYXVzZWQgYnkgb3Zlcmx5IGxvbmcgY29tcGlsZSBsaW5lcyAoQ2xvc2VzOiAjNjI5ODgzKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMjUgU2VwIDIwMTEgMDE6Mjg6MzQgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyfldJUC0yMDExLTA5LTE2LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBxdW90YSBmZWF0dXJlCisgICogSW1wcm92ZWQgNjQtYml0IGFuZCBiaWdhbGxvYyBzdXBwb3J0CisgICogTWtlMmZzIGFuZCB0dW5lMmZzIG5vdyBhbGxvd3Mgc2V0dGluZyB0aGUgc3RyaWRlIGFuZCBzdHJpcGUgd2lkdGggdG8gemVybworICAqIEZpeGVkIHR1bmUyZnMncyBtb3VudCBvcHRpb25zIHBhcnNpbmcgIChDbG9zZXM6ICM2NDE2NjcpCisgICogRml4ZWQgYW4gQUJJIGNvbXBhdGliaWxpdHkgcHJvYmxlbSB3aGljaCBicm9rZSB0aGUgZHVtcCBwcm9ncmFtCisgICAgICAoQ2xvc2VzOiAjNjM2NDE4KQorICAqIFJlc2l6ZTJmcyBoYXMgZm9yd2FyZCBjb21wYXRpYmlsaXR5IGZvciBhIG5ldyBvbi1saW5lIHJlc2l6ZSBpb2N0bAorICAgICAgZm9yID4gMTZUQiBmaWxlIHN5c3RlbXMuCisgICogRml4ZWQgYSAodmVyeSBoYXJkIHRvIGhpdCkgYnVnIHRoYXQgY291bGQgY2F1c2UgZTJmc2NrIHRvIGNyYXNoIGluCisgICAgICAgcGFzcyAxIG9yIHBhc3MgMgorICAqIERlYnVnZnMgaGFzIGEgbmV3ICdibG9ja3MnIGNvbW1hbmQKKyAgKiBNa2UyZnMgbm93IGdpdmVzIGEgd2FybmluZyBpZiB0aGUgYXV0by1kZXRlY3RlZCBibG9jayBzaXplIGV4Y2VlZHMKKyAgICAgIHRoZSBwYWdlIHNpemUKKyAgKiBNa2UyZnMgYW5kIGUyZnNjayBub3cgdHJpZXMgdG8gdXNlIHRoZSBwdW5jaCBob2xlIGNvbW1hbmQgYXMgYQorICAgICAgImRpc2NhcmQiIHdoZW4gb3BlcmF0aW5nIG9uIG5vcm1hbCBmaWxlcworICAqIE1rZTJmcyB3aWxsIG5vdCB0cnkgdG8gZG8gYW55IGRpc2NhcmQgb3BlcmF0aW9ucyBpZiAtbiBpcyBzcGVjaWZpZWQKKyAgICAgIG9uIHRoZSBjb21tYW5kIGxpbmUKKyAgKiBVcGRhdGVkL2NsYXJpZmllZCBtYW4gcGFnZXMgKENsb3NlczogIzYzOTQxMSkKKyAgKiBGaXhlZCBwYXJzaW5nIG9mIE1OVE9QVF8gb3B0aW9ucyBmb3IgdHVuZTJmcyBhbmQgZGVidWdmcyAoQ2xvc2VzOiAjNjQxNjY3KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIEZyaSwgMTYgU2VwIDIwMTEgMTA6MzM6NTkgLTA0MDAKKworZTJmc3Byb2dzICgxLjQyfldJUC0yMDExLTA3LTAyLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBBZGQgc3VwcG9ydCBmb3IgNjQtYml0IGZpbGUgc3lzdGVtcworICAqIEFkZCBzdXBwb3J0IGZvciBiaWdhbGxvYyBmaWxlIHN5c3RlbXMKKyAgKiBGaXhlZCBhbiBlMmZzY2sgYnVnIHdoaWNoIGNhdXNlZCAiKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioiCisgICAgICB3aXRob3V0IGFuIGV4cGxhbmF0aW9uIG9mIHdoYXQgd2FzIGZpeGVkLgorICAqIEUyZnNjayB3aWxsIG5vIGxvbmdlciBhdHRlbXB0IHRvIGNsb25lIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jaworICAgICAgaW4gcGFzczFiIGhhbmRsaW5nIGlmIHRoZSBmaWxlIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGV4dGVuZGVkCisgICAgICBhdHRyaWJ1dGVzLgorICAqIEUyZnNjayB3aWxsIGJlIG1vcmUgY2FyZWZ1bCBhY2NpZGVudGFsbHkgYXNraW5nIHRoZSB1c2VyIHRvIGNvbnRpbnVlCisgICAgICBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgbW91bnRlZCwgc28gdGhhdCBhbiBlc2NhcGUgc2VxdWVuY2Ugd29uJ3QKKyAgICAgIGNhdXNlIGEgZmFsc2UgcG9zaXRpdmUuICAoQ2xvc2VzOiAjNjE5ODU5KQorICAqIEUyZnNjayBub3cgdXNlcyBsZXNzIGNwdSB0aW1lIGluIHBhc3MgNQorICAqIEUyZnNjayB3aWxsIG5vIGxvbmdlciBzZWdhdWx0IHdoZW4gYSBjb3JydXB0ZWQgZmlsZSBzeXN0ZW0gaGFzIGEgYmFkCisgICAgZXh0ZW50LCBhbmQgcmVtb3ZpbmcgaXQgbGVhZHMgdG8gYSBibG9jayBuZWVkaW5nIHRvIGJlIGRlYWxsb2NhdGVkLgorICAqIEUyZnNjayBub3cgc3VwcG9ydHMgYW4gZXh0ZW5kZWQgImRpc2NhcmQiIG9wdGlvbiB3aGljaCB3aWxsIGNhdXNlCisgICAgICBlMmZzY2sgdG8gYXR0ZW1wdCBkaXNjYXJkIGFsbCB1bnVzZWQgYmxvY2tzIGFmdGVyIGEgZnVsbCBjaGVjaworICAqIFRoZSBlMmltYWdlIHByb2dyYW0gbm93IHN1cHBvcnRzIHRoZSBxY293MiBmb3JtYXQsIGEgbW9yZSBlZmZpY2llbnQKKyAgICAgIHdheSBvZiBjYXB0dXJpbmcgZmlsZSBzeXN0ZW0gbWV0YWRhdGEgc25hcHNob3RzLgorICAqIE1rZTJmcyBub3cgc3VwcG9ydHMgdGhlIFtkZXZpY2VzXSBzdGFuemEgaW4gbWtlMmZzLmNvbmYuCisgICogTWtlMmZzIG5vdyBzdXBwb3J0cyB0aGUgcmVzZXJ2ZWRfcmF0aW8gcmVsYXRpb24gaW4gbWtlMmZzLmNvbmYuCisgICogTWtlMmZzIG5vdyBjcmVhdGVzIGV4dGVudC1tYXBwZWQgZGlyZWN0b3JpZXMgZm9yIHRoZSByb290IGFuZAorICAgICAgbG9zdCtmb3VuZCBkaXJlY3Rvcmllcy4KKyAgKiBNa2UyZnMgd2lsbCBza2lwIHplcm8naW5nIHRoZSBqb3VybmFsIGlmIHRoZSBleHRlbmRlZCBvcHRpb24KKyAgICAgICJsYXp5X2pvdXJuYWxfaW5pdCIgaXMgc3BlY2lmaWVkLgorICAqIE1rZTJmcyB3aWxsIG5vdyBjcmVhdGUgZmlsZSBzeXN0ZW1zIHRoYXQgZW5hYmxlIHVzZXIgbmFtZXNwYWNlCisgICAgICBleHRlbmRlZCBhdHRyaWJ1dGVzIGFuZCB3aXRoIHRpbWUtIGFuZCBtb3VudCBjb3VudC1iYXNlZCBmaWxlCisgICAgICBzeXN0ZW0gY2hlY2tzIGRpc2FibGVkLgorICAgKiBNa2UyZnMgd2lsbCBub3Qgc2V0IGEgc3RyaWRlIG9yIHN0cmlwIHNpemUgb2Ygb25lIGJsb2NrIGJhc2VkIG9uCisgICAgICAgYmxvY2sgYmV2aWNlIGF0dHJpYnV0ZXMgb2J0YWluZWQgZnJvbSBzeXNmcy4KKyAgICogTWtlMmZzIG5vdyBkaXNwbGF5cyBhIHByb2dyZXNzIHJlcG9ydCBkdXJpbmcgdGhlIGRpc2NhcmQgcHJvY2Vzcy4KKyAgICogTWtlMmZzIG5vdyBoYW5kbGVzIGV4dHJlbWUgZmlsZSBzeXN0ZW0gcGFyYW1ldGVycyBjb3JyZWN0bHkgd2hpY2gKKyAgICAgICBwcmV2aW91c2x5IGNhdXNlZCB0aGUgaW5vZGVzIHBlciBncm91cCB0byBkcm9wIGJlbG93IDgsIGxlYWRpbmcKKyAgICAgICB0byBhIHNlZ2ZhdWx0LgorICAgKiBEZWJ1Z2ZzJ3MgaWNoZWNrIHdpbGwgbm93IGNvcnJlY3RseSBmaW5kIGlub2RlcyB3aGljaCB1c2UgdGhlCisgICAgICAgc2VhcmNoZWQtZm9yIGJsb2NrIGFzIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jay4KKyAgICogRGVidWdmcyBub3cgaGFzIGEgbmV3ICJwdW5jaCIgY29tbWFuZCB3aGljaCByZW1vdmUgYmxvY2tzIGZyb20gdGhlCisgICAgICAgbWlkZGxlIG9mIGFuIGlub2RlLgorICAgKiBUaGUgYmFkYmxvY2tzIHByb2dyYW0gbm93IGNvcnJlY3RseSByZWNvdmVycyBmcm9tIEkvTyBlcnJvcnMgd2hlbgorICAgICAgIGRpcmVjdCBJL08gaXMgYmVpbmcgdXNlZC4gIFRoZSBiYWRibG9ja3MgY29tbWFuZCBub3cgYWxzbworICAgICAgIHN1cHBvcnRzIGEgLUIgb3B0aW9uIHdoaWNoIGZvcmNlcyB0aGUgdXNlIG9mIGJ1ZmZlcmVkIEkvTywgYW5kCisgICAgICAgdGhlIC12IG9wdGlvbiB3aWxsIHByb3ZpZGUgYSBtb3JlIGRldGFpbGVkIGJyZWFrZG93biBvZiByZWFkLAorICAgICAgIHdyaXRlLCBhbmQgZmFpbGVkIGNvbXBhcmlzb24gZXJyb3JzLgorICAgKiBBZGRlZCBlNGRlZnJhZyB0b29sIHdoaWNoIHVzZXMgdGhlIEVYVDRfSU9DX01PVkVfRVhUIGlvY3RsLgorICAgKiBBZGRlZCBzdXBwb3J0IGZvciBqb3VybmFscyBsYXJnZXIgdGhhbiAyR0IuCisgICAqIFN1cHBvcnQgdXNpbmcgYm90aCBoYXJkIGxpbmtzIGFuZCBzeW1saW5rcyB3aGVuIGluc3RhbGxpbmcgZTJmc3Byb2dzLgorICAgKiBBZGQgb3ZlcmZsb3cgY2hlY2tpbmcgdG8gdHVuZTJmcyAtaSdzIGZzY2sgaW50ZXJ2YWwsIHdoaWNoIG11c3QgZml0CisgICAgICAgaW4gYSAzMi1iaXQgZmllbGQuCisgICAqIEZpbGVmcmFnIHdpbGwgcmVwb3J0IDAgZXh0ZW50cyBjb3JyZWN0bHkgaW4gdmVyYm9zZSBtb2RlLgorICAgKiBMb2dzYXZlJ3MgdXNhZ2UgbWVzc2FnZSBoYXMgYmVlbiBmaXhlZC4gIChDbG9zZXM6ICM2MTk3ODgpCisgICAqIFVwZGF0ZSB0cmFuc2xhdGlvbnM6IEZyZW5jaCwgQ2hpbmVzZSwgR2VybWFueSwgSW5kb25lc2lhbiwgU3dlZGlzaCwKKyAgICAgICAgVmlldG5hbWVzZSwgUG9saXNoLCBEdXRjaCwgQ3plY2guCisgICAqIFVwZGF0ZWQvY2xhcmlmaWVkIG1hbiBwYWdlcy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDAyIEp1bCAyMDExIDIyOjM4OjU3IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS4xNC0xKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeGVkIGEgRlRCRlMgb24gYmlnLWVuZGlhbiBhcmNoaXRlY3R1cmVzCisgICogRml4ZWQgc3B1cmlvdXMgd2FybmluZyBpbiBta2UyZnMKKyAgKiByZXNpemUyZnMgbm93IHdvcmtzIGNvcnJlY3RseSBvbiBkZXZpY2VzIGV4YWN0bHkgMTZUQgorICAqIHJlc2l6ZTJmcyB3aWxsIG5vIGxvbmdlciBjbGVhciB0aGUgcmVzaXplX2lub2RlIGZlYXR1cmUgd2hlbiB0aGUKKyAgICBudW1iZXIgb2YgcmVzZXJ2ZWQgR0RUIGJsb2NrcyByZWFjaGVzIDAuICBUaGlzIGFsbG93cyBhIGZpbGUKKyAgICBzeXN0ZW0gd2l0aCB0aGUgZmxleF9iZyBmZWF0dXJlIHRvIGJlIHN1YnNlcXVlbnRseSBzaHJ1bmsuCisgICogZTJmc2NrIHdpbGwgbm8gbG9uZ2VyIHVzZSB0aGUgZXh0ZW5kZWQgcmVjX2xlbiBlbmNvZGluZyBmb3IgZmlsZQorICAgIHN5c3RlbXMgd2hvc2UgYmxvY2tzaXplIGlzIGxlc3MgdGhhbiA2NGssIHRvIGNhdGNoIGZzIGluY29uc2lzdGVuY2llcworICAgIHdoaWNoIHRoZSBrZXJuZWwgd2lsbCBjb21wbGFpbiBhYm91dC4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBXZWQsIDIyIERlYyAyMDEwIDE4OjM5OjE5IC0wNTAwCisKK2UyZnNwcm9ncyAoMS40MS4xMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRTJmc2NrIGNhbiBub3cgZG8gam91cm5hbC1vbmx5IHJlcGxheXMgdmlhICJlMmZzY2sgLUUgam91cm5hbF9vbmx5IgorICAqIEUyZnNjayBub3cgdW5kZXJzdGFuZHMgVVVJRD0gYW5kIExBQkVMPSBzcGVjaWZpZXJzIGZvciB0aGUgLWogb3B0aW9uCisgICAgKENsb3NlczogIzU1OTMxNSkKKyAgKiBFMmZzY2suY29uZiBub3cgc3VwcG9ydHMgYSBuZXcgY29uZmlnIG9wdGlvbiwgd2hpY2ggZm9yY2VzIHRoZQorICAgIHByb2JsZW0gbm90IHRvIGJlIGZpeGVkOiBwcm9ibGVtcy88cHJvYmxlbSBjb2RlL2ZvcmNlX25vCisgICogRHVtcGUyZnMgbm93IHByaW50cyBmcmllbmRsaWVyIG9mZnNldHMgZm9yIGZsZXhfYmcgZmlsZSBzeXN0ZW1zCisgICogTWtlMmZzIHdpbGwgbm93IGZhaWwgaWYgdGhlIHVzZXIgdXNlcyBhbiBmaWxlIHN5c3RlbSB0eXBlIG5vdAorICAgIGRlZmluZWQgaW4gbWtlMmZzLmNvbmYgKENsb3NlczogIzU5NDYwOSkKKyAgKiBSZXNpemUgbm93IHByaW50cyBhIGNsYXJpZmllZCBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgdGhhdCBvbi1saW5lCisgICAgc2hyaW5raW5nIGlzIG5vdCBzdXBwb3J0ZWQgYXQgYWxsLiAgKENsb3NlczogIzU5OTc4NikKKyAgKiBGaXhlZCBhIGJ1aWxkIGVycm9yIGNhdXNlZCBieSBiYWQgc3RhdGljIGFuZCBwcm9maWxlZCBkZXBlbmRlbmNpZXMKKyAgICBmb3IgdGhlIGJsa2lkIGxpYnJhcnkgKENsb3NlczogIzYwNDYyOSkKKyAgKiBGaXhlZCBhbiBlMmZzY2sgUFJPR1JBTU1JTkcgQlVHIGVycm9yIChDbG9zZXM6ICM1NTU0NTYpCisgICogRml4ZWQgb3V0ZGF0ZWQgbWVudGlvbiBvZiBmc2NrIGluIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSAoQ2xvc2VzOiAjNTg4NzI2KQorICAqIFJlbW92ZWQgb2Jzb2xldGUgaW5pdHJkIHNjcmlwdCAoQ2xvc2VzOiAjNTg1MDQxKQorICAqIEZpeGVkIGJhZCBkZXBlbmRlbmN5IG9uIGxpYmJsa2lkMSBkdWUgdG8gc2hsaWJzLmxvY2FsIChDbG9zZXM6ICM1ODM1NTEpCisgICogRTJmc2NrIG5vdyBvcGVucyB0aGUgZXh0ZXJuYWwgam91cm5hbCBpbiBleGNsdXNpdmUgbW9kZSB0byBwcmV2ZW50CisgICAgY2xlYXJpbmcgdGhlIGpvdXJuYWwgb2YgYSBtb3VudGVkLCBzbmFwc2hvdHRlZCB2b2x1bWUgaWYgdGhlIHVzZXIKKyAgICBhY2NpZGVudGFsbHkgdHJpZXMgdG8gcnVuIGUyZnNjayBvbiB0aGUgc25hcHNob3Qgdm9sdW1lIChDbG9zZXM6ICM1ODc1MzEpCisgICogRml4IGEgYmlnIGluIGUyZnNjayBzbyBpdCBjb3JyZWN0IHRlc3QgZm9yIHdoZXRoZXIgdGhlIEVPRkJMT0NLU19GTAorICAgIGZsYWcgc2hvdWxkIGJlIHNldCBvciBub3QuCisgICogVHVuZTJmcyBjYW4gbm93IHNldCB1bmluaXRfYmcgd2l0aG91dCByZXF1aXJpbmcgYW4gZnNjayBhZnRlcndhcmRzCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgZXh0NCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgYWRkZWQgaW4gMi42LjM1CisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBleHQ0IGVycm9yIHRyYWNraW5nIHN1cGVyYmxvY2sgZmllbGRzIGFkZGVkIGluIDIuNi4zNgorICAqIERlYnVnZnMgbm93IHVzZXMgYSBtb3JlIGNvbmNpc2UgZm9ybWF0IGZvciBsaXN0aW5nIGV4dGVudHMgaW4gaXRzCisgICAgc3RhdCBjb21tYW5kCisgICogRGVidWdmcyBjYW4gbm93IHVzZSBkaXJlY3QgSS9PIHRvIGFjY2VzcyB0aGUgZmlsZSBzeXN0ZW0gd2l0aCB0aGUgLUQgb3B0aW9uCisgICogTWtlMmZzIHdpbGwgc2tpcCBpbml0aWFsaXppbmcgdGhlIGlub2RlIHRhYmxlIGlmIGEgZGV2aWNlIHN1cHBvcnRzCisgICAgZGlzY2FyZCBhbmQgdGhlIGRpc2NhcmQgb3BlcmF0aW9uIHJlc3VsdHMgaW4gemVybydlZCBibG9ja3MKKyAgKiBNa2UyZnMncyBoYW5kbGluZyBvZiBsb2dpY2FsIGFuZCBwaHlzaWNhbCBzZWN0b3Igc2l6ZXMgaGFzIGJlZW4KKyAgICBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorICAqIERlYnVnZnMgd2lsbCBjb3JyZWN0bHkgc2hvdyB0aGUgcHJvZ3Jlc3MgYmFyIGV2ZW4gd2hlbiBVVEYtOAorICAgIGNoYXJhY3RlcnMgYXJlIHVzZWQgaW4gaXRzIHRyYW5zbGF0aW9uIGZpbGVzIChDbG9zZXM6ICM1ODM3ODIsICM1ODc4MzQpCisgICogRTJmcmVlZnJhZyB3aWxsIG5vdyBkaXNwbGF5IHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZSBleHRlbnRzLgorICAqIFJlc2l6ZTJmcyAtUCBub3cgbG9uZ2VyIHJlcXVpcmVzIGEgZnJlc2hseSBjaGVja2VkIGZpbGUgc3lzdGVtCisgICogRml4ZWQgYSBmbG9hdGluZyBwb2ludCBwcmVjaXNpb24gZXJyb3IgdGhhdCBjYW4gY2F1c2Ugc2VnZmF1bHRzIGluCisgICAgZTJmc2NrIGFuZCByZXNpemUyZnMgaW4gZXh0cmVtZWx5IHJhcmUgY2FzZXMKKyAgKiBGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2F1c2VkIGl0IHRvIGZhaWwgaWYgYm90aCB0aGUgb3JpZ2luYWwKKyAgICBhbmQgYmFja3VwIHN1cGVyYmxvY2tzIHdlcmUgaW52YWxpZCBpbiBzb21lIHdheQorICAqIEZpeGVkIGEgYnVnIGluIGUyZnJlZWZyYWcgd2hpY2ggY2F1c2VkIGdldG9wdCBwYXJzaW5nIHRvIGZhaWwgb24KKyAgICBhcmNoaXRlY3R1cmVzIHdpdGggdW5zaWduZWQgY2hhcnMKKyAgKiBDbGFyaWZpZWQgbWtlMmZzIGFuZCBlMmZzY2sgZXJyb3IgbWVzc2FnZXMgd2hlbiBnaXZlbiBpbmNvcnJlY3QKKyAgICBvcHRpb25zL3ZhbHVlcyBieSB0aGUgdXNlcgorICAqIFVwZGF0ZWQvY2xhcmlmaWVkIG1hbiBwYWdlcyAoQ2xvc2VzOiAjNTgwMjM2LCAjNTk0MDA0LCAjNTg5MzQ1LCAjNTkxMDgzKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgMjIgTm92IDIwMTAgMTY6MDA6NTAgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjEyLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWhpZ2gKKworICAqIEFsbG93IHR1bmUyZnMgdG8gc2V0IHVuaW5pdF9iZyB3aXRob3V0IHJlcXVpcmluZyBhbiBmc2NrCisgICogRml4IHRlc3QgaW4gZTJmc2NrIHRvIGNvcnJlY3RseSBjaGVjayBmb3IgRU9GQkxPQ0tTIGZpbGVzCisgICogRml4IGRlcGVuZGVuY2llcyBmb3IgbGlidXVpZCBhbmQgbGliYmxraWQgKENsb3NlczogIzU4MzU1MSkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDAzIEp1biAyMDEwIDA5OjMwOjM2IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS4xMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogbWtlMmZzIG5vdyBnaXZlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlIGlmIHRoZSBleHRlcm5hbCBqb3VybmFsCisgICAgaXMgZGV2aWNlIGlzIG5vdCBmb3VuZAorICAqIFRoZSByZXNpemUyZnMgcHJvZ3JhbSB3aWxsIHJlZnVzZSB0byBwcmludCB0aGUgbWluaW11bSBzaXplIG5lZWRlZAorICAgIGZvciBhIGZpbGUgc3lzdGVtIGlmIGl0IGlzIG5vdCBjbGVhbi4KKyAgKiBFMmZzY2sgbm93IHRlc3RzIGZvciBleHRlbnRzIHRoYXQgYmVnaW4gYXQgcGh5c2ljYWwgYmxvY2sgMCBhbmQKKyAgICByZWplY3RzIHRoZW0gYXMgaW52YWxpZC4KKyAgKiBGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY291bGQgY2F1c2UgaXQgdG8gY3Jhc2ggd2hlbiB0cnlpbmcgdG8KKyAgICByZW1vdmUgYW4gaW52YWxpZCBleHRlbnQgYW5kIHRoZSBibG9jayBiaXRtYXBzIGhhZG4ndCB5ZXQgYmVlbiBsb2FkZWQuCisgICogRTJmc2NrIHdpbGwgbm93IGNvbXBsZXRlbHkgc2tpcCB0aW1lLWJhc2VkIGNoZWNrcyBpZiB0aGUgc3lzdGVtCisgICAgY2xvY2sgbG9va3MgaW5zYW5lIG9yIGlmIHRoZSBicm9rZW5fc3lzdGVtX2Nsb2NrIG9wdGlvbiBpcyBzZXQKKyAgICBpbiAvZXRjL2UyZnNjay5jb25mLiAgKENsb3NlczogIzU0OTg2MSwgIzU0MDE1MikKKyAgKiBGaXhlZCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2F1c2VkIGUyZnNjayB0byBjb21wbGFpbiBhYm91dCBpX2Jsb2NrcworICAgIHdpdGggYSA0VCBmaWxlIGNyZWF0ZWQgdXNpbmcgcG9zaXhfZmFsbG9jYXRlKCkKKyAgKiBFMmZzY2sgd2lsbCBub3cgY29ycmVjdGx5IG1hcmsgYSBzcGFyc2Ugam91cm5hbCBhcyBpbnZhbGlkIGFuZCB3aWxsCisgICAgZGVsZXRlIGFuZCByZWNyZWF0ZSB0aGUgam91cm5hbCB0byBhZGRyZXNzIHRoZSBwcm9ibGVtLgorICAqIEZpeGVkIGUyZnNjayBub3QgdG8gYXNrIHBlcm1pc3Npb24gZnJvbSB0aGUgdXNlciB0byBhYm9ydCBpZiBpdCdzCisgICAgZ29pbmcgdG8gYWJvcnQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSB1c2VyIGlzIGdvaW5nIHRvIHNheS4uLgorICAqIEUyZnNjayBjYW4gbm93IGNvbnRpbnVlIGV2ZW4gaWYgaXQgZmFpbHMgdG8gcmVjcmVhdGUgdGhlIHJlc2l6ZSBpbm9kZQorICAqIEUyZnNjayB3aWxsIG5vdyBhdm9pZCByZW1vdmluZyBkaXJlY3RvcnkgZW50cmllcyBmb3IgaW5vZHMgZm91bmQgaW4KKyAgICB0aGUgdW51c2VkIHJlZ2lvbiBvZiB0aGUgaW5vZGUgdGFibGUgdW50aWwgYWZ0ZXIgaXQgcmVzdGFydHMgdGhlIGZzCisgICAgY2hlY2sgdG8gYXZvaWQgcmVtb3ZpbmcgdmFsaWQgZGF0YS4KKyAgKiBFMmZzY2sgd2lsbCBub3cgbG9uZ2VyIHRyeSB0byBzZXQgdGhlIGJsb2NrIGdyb3VwIGNoZWNrc3VtcyBpZiBpdAorICAgIGlzIGludGVycnVwdGVkLgorICAqIE1rZTJmcyB3aWxsIGNoZWNrIGJvdGggdGhlIHBoeXNpY2FsIGFuZCBsb2dpY2FsIGJsb2Nrc2l6ZXMgb2YgYQorICAgIGRldmljZSB0byBiZXR0ZXIgc3VwcG9ydCA0ayBzZWN0b3IgZHJpdmVzLgorICAqIE1rZTJmcyB3aWxsIGFjY2VwdCB0aGUgdmFsaWQgKGJ1dCByYXJlbHkgdXNlZnVsKSBmbGV4X2JnIHNpemUgb2YgMQorICAqIEUyZnNjayB3aWxsIGNoZWNrIGZvciBjYXNlcyB3aGVyZSB0aGUgRU9GQkxPQ0tTX0ZMIGlzIHNldCB3aGUgbml0IGlzCisgICAgbm90IG5lZWRlZCwgYW5kIG9mZmVyIHRvIGNsZWFyIGl0LgorICAqIFRoZSBjb21fZXJyIGxpYnJhcnkgd2lsbCBub3cgb25seSBvdXRwdXQgYSBDUiBjaGFyYWN0ZXIgaWYgdGhlCisgICAgc3RkZXJyIGlzIGNvbm5lY3RlZCB0byBhIHR0eSBpbiByYXcgbW9kZS4KKyAgKiBVcGRhdGUgQ3plY2gsIENoaW5lc2UsIER1dGNoLCBGcmVuY2gsIEdlcm1hbnksIEluZG9uZXNpYW4sIFBvbGlzaCwKKyAgICBhbmQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMgKGZyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QpCisgICogQWRkIGFuIGZzY2suZXh0NCBzeW1saW5rIGluIHRoZSBlMmZzcHJvZ3MtdWRlYiBwYWNrYWdlIChDbG9zZXM6ICM1NzEyNDcpCisgICogRml4IG1ha2VmaWxlIGRlcGVuZGVuY3kgc28gZHBrZy1idWlsZHBhY2thZ2UgLWoyIHdvcmtzIChDbG9zZXM6ICM1NjM0ODcpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAxNyBNYXkgMjAxMCAxOTo0Mzo1MiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuMTEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEFkZCBIZWltZGFsIGZ1bmN0aW9uIGNvbV9yaWdodF9yKCkgdG8gbGliY29tX2VyciAoQ2xvc2VzOiAjNTU4OTEwKQorICAqIEFsbG93IGUyZnNjayB0byBydW4gZXZlbiBpZiB0aGUgcGh5c2ljYWwgZGV2aWNlIGhhcyBtb3JlIHRoYW4gMioqMzIgYmxvY2tzCisgICogRGVidWdmcydzICJsb2dkdW1wIC1iIDxibGs+IiBub3cgcHJvcGVybHkgc2hvd3MgdGhlIGFsbG9jYXRpb24gc3RhdHVzCisgICAgb2YgdGhlIGJsb2NrIDxibGs+LiAgKENsb3NlczogIzU2NDA4NCkKKyAgKiBNYWtlIGUyZnNjaydzICJ0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIiBtZXNzYWdlIGlzIG5vdyBtb3JlIHNjYXJ5CisgICAgdG8gaG9wZWZ1bGx5IGRpc3N1YWRlIHVzZXJzIGZyb20gdGhpbmtpbmcsICJzdXJlbHkgdGhhdCBtZXNzYWdlCisgICAgZG9lc24ndCBhcHBseSB0byAqbWUqIiAgOi0oCisgICogZTJmc2NrIC1uIHdpbGwgbm93IGFsd2F5cyBvcGVuIHRoZSBmaWxlIHN5c3RlbSByZWFkLW9ubHkuICAgV2Ugbm93CisgICAgZGlzYWxsb3cgY2VydGFpbiBjb21iaW5hdGlvbiBvZiBvcHRpb25zIHdoaWNoIHByZXZpb3VzbHkgd2VyZSBtYW51YWwKKyAgICBleGNlcHRpb25zOyB0aGlzIGlzIGJhZCBiZWNhdXNlIGl0IGNhdXNlcyB1c2VycyB0byB0aGluayB0aGV5IGFyZQorICAgIHNtYXJ0ZXIgdGhhbiB0aGV5IHJlYWxseSBhcmUuICAgU28gIi1uIC1jIiwgIi1uIC1sIiwgIi1uIC1MIiwgYW5kCisgICAgIi1uIC1EIiBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KKyAgKiBJZiB0aGUgcGFydGl0aW9uIGlzIGJhZGx5IGFsaWduZWQsIGhhdmUgbWtlMmZzIGp1c3QgcHJpbnQgYSB3YXJuaW5nCisgICAgbWVzc2FnZSBhbmQgY29udGludWUuICBQcmV2aW91c2x5IG1rZTJmcyB3b3VsZCBhc2sgdG8gY29uZmlybSwgYW5kCisgICAgdGhpcyBicm9rZSBkaXN0cm8gaW5zdGFsbGF0aW9uIHNjcmlwdHMuCisgICogRml4IGEgYnVnIGluIGxpYmV4dDJmcyBjYXVzZWQgdGhlIGNyZWF0aW9uIG9mIHZlcnkgbGFyZ2Ugam91cm5hbHMKKyAgICBmb3IgZXh0NCB0byBiZSBfdmVyeV8gc2xvdy4KKyAgKiBFMmZzY2sgbm93IHVuZGVyc3RhbmRzIHRoZSBFT0ZCTE9DS1NfRkwgZmxhZyB3aGljaCB3aWxsIGJlIHVzZWQgaW4KKyAgICAyLjYuMzQga2VybmVscyB0byBtYWtlIGUyZnNjayBub3QgY29tcGxhaW4gYWJvdXQgYmxvY2tzIGRlbGliZXJhdGVseQorICAgIGZhbGxvY2F0ZWQoKSBiZXlvbmQgYW4gaW5vZGUncyBpX3NpemUuCisgICogRml4IGEgYnVnIGluIGUyZnNjayB3aGljaCBjb3VsZCBjYXVzZSBlMmZzY2sgLUQgdG8gY29ycnVwdAorICAgIG5vbi1pbmRleGVkIGRpcmVjdG9yaWVzLiAgKENsb3NlczogIzU3MjQ1MykKKyAgKiBkZWJpYW4vcnVsZXM6IGNhbiBiZSBjb21waWxlZCBzdGF0aWNhbGx5IHdpdGggc3RhY2sgcHJvdGVjdG9yIG5vdy4KKyAgICAoQ2xvc2VzOiAjNTczOTIzKQorICAqIFVwZGF0ZSBkZWJpYW4gcG9saWN5IGNvbXBsaWFuY2UgdG8gMy44LjQKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDE1IE1hciAyMDEwIDAwOjE2OjM1IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS4xMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4IHJlc2l6ZTJmcyBidWcgd2hpY2ggY2F1c2VzIGl0IHRvIGFjY2VzcyBpbnZhbGlkIG1lbW9yeQorICAqIEFkZCBsaWJzcyBzdXBwb3J0IGZvciBsaWJyZWFkbGluZS5zby42CisgICogRml4IGUyZnNjaydzIGNoZWNrIGZvciBleHRlbnQtbWFwcGVkIGRpcmVjdG9yeSB3aXRoIGFuIGluY29ycmVjdCBmaWxlIHR5cGUKKyAgKiBBZGQgbmV3IGUyZnNjay5jb25mIGNvbmZpZ3VyYXRpb24gb3B0aW9uOgorICAgIGRlZmF1bHQvYnJva2VuX3N5c3RlbV9jbG9jayBmb3Igc3lzdGVtIHdpdGggYnJva2VuIENNT1MgaGFyZHdhcmUKKyAgICBjbG9ja3MuICAoQ2xvc2VzOiAjNTU5Nzc2KQorICAqIEZpeCBmbGV4X2JnIGlub2RlIHRhYmxlIHBsYWNlbWVudCBhbGdvcml0aG0gdXNlZCBieSBta2UyZnMgZm9yCisgICAgY2VydGFpbiBzcGVjaWZpYyBmaWxlIHN5c3RlbSBzaXplcworICAqIEFkZCBzb3VyY2UgbGludGlhbiBvdmVycmlkcyBmb3Igd2Vhay1saWJyYXJ5LWRldi1kZXBlbmRlbmN5CisgICogRml4IEZUQkZTIHByb2JsZW0gY2F1c2VkIGJ5IHRleGkyaHRtbCBjaGFuZ2luZyAoYWdhaW4pIGl0cyBvdXRwdXQKKyAgICBsb2NhdGlvbi4gIChDbG9zZXM6ICM1NTI5MzQpCisgICogTWFrZSBlMmZzY2sgdG8gYXZvaWQgcmVoYXNoaW5nIGRpcmVjdG9yaWVzIHdoaWNoIGNhbiBmaXQgaW4gYQorICAgIHNpbmdsZSBkaXJlY3RvcnkgYmxvY2suCisgICogRml4IGhvdyBlMmZzY2sgZml4ZXMgc3BhcnNlIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBleHRlbnQtbWFwcGVkLgorICAqIEZpeCBzb21lIGJpZy1lbmRpYW4gYnVncyBpbiBlMmZzY2sgYW5kIGxpYmV4dDJmcworICAqIFRlYWNoIGUyZnNjayB0byBkZXRlY3QgYW5kIGZpeCBzcGFyc2UgZXh0ZW50LW1hcHBlZCBkaXJlY3RvcmllcworICAqIEZpeCBmaWxlZnJhZyBmcm9tIGNvcmUgZHVtcGluZyBvbiBmaWxlIHN5c3RlbXMgd2l0aCA4ayBibG9jayBzaXplcworICAqIEUyZnNjayB3YXMgZGVwZW5kaW5nIG9uIGlfc2l6ZSB0byBiZSBjb3JyZWN0IHRvIGRldGVjdCBhbmQgZml4CisgICAgY2VydGFpbiBkaXJlY3RvcnkgcHJvYmxlbXMgYmVmb3JlIGFjdHVhbGx5IGZpeGluZyB0aGUKKyAgICBkaXJlY3RvcnkncyBpX3NpemUuICBUaGlzIGNhdXNlZCBjZXJ0YWluIHJhcmUgY29ycnVwdGlvbnMgdG8KKyAgICByZXF1aXJlIHR3byBydW5zIG9mIGUyZnNjayB0byBhZGRyZXNzLgorICAqIFVwZGF0ZSBDemVjaCwgSW5kb25lc2lhbiwgUG9saXNoIGFuZCBWaWV0bmFtZXNlIHRyYW5zbGF0aW9ucworICAgIChmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0KQorICAqIEZpeCBlMmZzY2sgdG8gZmluZCBhbmQgY29ycmVjdCBkdXBsaWNhdGUgZGlyZWN0b3J5IGVudHJpZXMgaW4KKyAgICBub24taW5kZXhlZCBkaXJlY3Rvcmllcy4KKyAgKiBBZGQgc3VwcG9ydCBmb3IgY2FsbGluZyBCTEtESVNDQVJEIHRvIG1rZTJmcy4KKyAgKiBFbmhhbmNlIGxpYmV4dDJmcyBzbyBpdCB3b3JrcyBhcm91bmQgYnVnIGluIExpbnV4IHZlcnNpb24gMi42LjE5CisgICAgYW5kIGVhcmxpZXIgd2hlcmUgdGhlIC9wcm9jL3N3YXBzIGZpbGUgd2FzIG1pc3NpbmcgdGhlIGhlYWRlciBvbgorICAgIHRoZSBmaXJzdCBsaW5lLgorICAqIEZpeCByZXNpemUyZnMgc28gaXQgd29ya3MgY29ycmVjdGx5IG9uIGZpbGUgc3lzdGVtcyB3aXRoIGV4dGVybmFsIGpvdXJuYWxzCisgICogRml4IGxpYnNzIHNvIHRoYXQgaXQgZG9lcyBub3Qgc2VnIGZhdWx0IHdoZW4gdXNpbmcgYSByZWFkbGluZQorICAgIGxpYnJhcnkgd2hpY2ggZG9lcyBub3Qgc3VwcGx5IGEgcmVhZGxpbmVfc2h1dGRvd24oKSBmdW5jdGlvbi4KKyAgKiBBZGQgYSBwcmUtZGVwZW5kcyBmb3IgdXRpbC1saW51eC1uZyAoQ2xvc2VzOiAjNTUxNzk1KQorICAqIFVwZGF0ZSBhbmQgY2xhcmlmeSB2YXJpb3VzIG1hbiBwYWdlcy4KKyAgKiBDb3JyZWN0ZWQgZHVtcGUyZnMncyB1c2FnZSBtZXNzYWdlCisgICogVGVhY2ggbGliZXh0MmZzIHRvIGlnbm9yZSB0aGUgaGlnaCAzMiBiaXRzIG9mIHRoZSBpX2Jsb2NrcyBmaWVsZAorICAgIHdoZW4gaHVnZV9maWxlIGZpbGUgc3lzdGVtIGZlYXR1cmUgaXMgc2V0LCBidXQgdGhlIGlub2RlIGRvZXMgbm90CisgICAgaGF2ZSB0aGUgSFVHRV9GSUxFX0ZMIGZsYWcgc2V0LgorICAqIENoYW5nZSBlMmZzY2sgdG8gYWNjZXB0IHN1cGVyYmxvY2sgdGltZXMgdG8gYmUgZnVkZ2VkIGJ5IHVwIHRvIDI0CisgICAgaG91cnMgYnkgZGVmYXVsdC4gIE1vc3QgZGlzdHJpYnV0aW9ucyBoYXZlIGZpeGVkIHRoZWlyIGluaXQgc2NyaXB0cywKKyAgICBidXQgYXBwYXJlbnRseSBub3cgdGhleSBoYXZlIGJ1Z2d5IHZpcnR1YWxpemF0aW9uIHNjcmlwdHMuICA6LSggIEkKKyAgICBnaXZlIHVwLCB0b28gbWFueSBidWdneSB1c2VyIHNwYWNlIHNldCB1cHMgb3V0IHRoZXJlLiAgKENsb3NlczogIzU1NzYzNikKKyAgKiBGaXggZTJmc2NrIHRvIGNvcnJlY3RseSBwcmludCA+IDMyLWJpdCBpX2Jsb2NrcyBudW1iZXJzIGluIHByb2JsZW0gcmVwb3J0cworICAqIEltcHJvdmUgZTJmc2NrIHNvIGl0IHByaW50cyAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayIgaW5zdGVhZCBvZgorICAgICJJbGxlZ2FsIGJsb2NrICMtMSIKKyAgKiBUZWFjaCBta2UyZnMgdG8gZ2V0IGRldmljZSB0b3BvbG9neSBpbmZvcm1hdGlvbiBmcm9tIGJsa2lkIGFuZCB1c2UKKyAgICBpdCB0byBwb3B1bGF0ZSB0aGUgc3VwZXJibG9jayBzdHJpZGUgYW5kIHN0cmlwZSBzaXplcyBhbmQgd2FybiBpZgorICAgIHRoZSBibG9jayBkZXZpY2UgaXMgbWlzYWxpZ25lZAorICAqIEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGRlYnVnZnMgd2hlbiBzb3VyY2luZyBhIGNvbW1hbmQgZmlsZQorICAqIEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGZzY2sKKyAgKiBSb3VuZCB1cCB0aGUgYml0bWFwIHNpemUgdG8gcHJldmVudCBzcHVyaW91cyBzZWdtZW50YXRpb24gZmF1bHRzIG9uCisgICAgQlNEIHBsYXRmb3Jtcy4KKyAgKiBGaXggcmVzaXplMmZzIHRvIGNvcnJlY3RseSBjYWxjdWxhdGUgdGhlIG1pbmltdW0gc2l6ZSBuZWVkZWQsIHdoZW4KKyAgICBmbGV4X2JnIGlzIGVuYWJsZWQsIHRvIHByZXZlbnQgcmVzaXplMmZzIC1NIGZyb20gZmFpbGluZy4KKyAgKiBEdW1wZTJmcyBub3cgZGlzcGxheXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29udGVudHMgb2YgdGhlIGpvdXJuYWwKKyAgKiBNYWtlIHN1cmUgdGhlIGxpYmJsa2lkMSBhbmQgbGliYmxraWQxLWRiZyBwYWNrYWdzIGhhdmUgY2hhbmdlbG9ncworICAqIE9uIGxvdyBtZW1vcnkgc3lzdGVtcywgZTJmc2NrIGNhbiBwcmludCBzb21lIHZlcnkgc2NhcnkgbG9va2luZworICAgIGVycm9yIG1lc3NhZ2VzLiAgQ2xlYW4gdXAgdGhlbSB1cCB0byBhdm9pZCB1c2VyIHBhbmljLiAgKENsb3NlczogIzUwOTUyOSkKKyAgKiBFbmhhbmNlIGJsa2lkIHRvIHN1cHBvcnQgLmtvLmd6IGZpbGVzIGluIHRoZSBtb2R1bGVzLmRlcCBwYXJzZXIKKyAgKiBGaXggdHVuZTJmcyAtaiBmb3IgbW91bnRlZCBleHRlZC1lbmFibGVkIGZpbGUgc3lzdGVtcworICAqIFVzZSB0aGUgZmVhdHVyZSBuYW1lICJleHRlbnQiIGluc3RlYWQgb2YgImV4dGVudHMiIGluIG1rZTJmcy5jb25mLgorICAgIEJvdGggd29yaywgYnV0IHRoZSBsYXR0ZXIgaXMgd2hhdCBpcyBkb2N1bWVudGVkIGluIHRoZSBtYW4gcGFnZS4KKyAgICAoQ2xvc2VzOiAjNTQwMTExKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMDcgRmViIDIwMTAgMjA6NTY6NDcgLTA1MDAKKworZTJmc3Byb2dzICgxLjQxLjktMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeCB0dW5lMmZzIC1JIHRvIHdvcmsgY29ycmVjdGx5IGluIHRoZSBmYWNlIG9mIGJhZCBibG9ja3MgYW5kCisgICAgZmlsZXN5c3RlbXMgZm9ybWF0dGVkIGZvciBSQUlEIGFycmF5cywgYW5kIEVOT1NQQyBlcnJvcnMKKyAgKiBSZXF1aXJlIHRoZSB1c2VyIHRvIG9ubHkgYW5zd2VyIG9uZSBxdWVzdGlvbiBpbnN0ZWFkIG9mIG11bHRpcGxlCisgICAgb25lcyBmb3IgbXVsdGlwbGUgYmFkIGJsb2NrIGdyb3VwIGNoZWNrc3Vtcywgb3Igd2hlbiBhbiBpbm9kZQorICAgIHRhYmxlIG5lZWRzIHRvIGJlIG1vdmVkLgorICAqIEZpeCBlMmZzY2sgdG8gaGFuZGxlIG1vdmluZyBpbm9kZSB0YWJsZXMgaW4gRkxFWF9CRyBmaWxlc3lzdGVtcyBtb3JlCisgICAgZ3JhY2VmdWxseSBieSBsb29raW5nIGluIHRoZSBlbnRpcmUgZmxleF9iZyBmb3Igc3BhY2UsIGluc3RlYWQgb2YKKyAgICBqdXN0IGluIHRoZSBibG9jayBncm91cDsgaWYgdGhhdCBkb2Vzbid0IHdvcmssIHRyeSBsb29raW5nIGZvcgorICAgIHNwYWNlIGluIHRoZSBlbnRpcmUgZmlsZXN5c3RlbS4KKyAgKiBGaXggdGhlIGZpbGVmcmFnIGNvZGUgdG8gYXZvaWQgcHJpbnRpbmcgdGhlIGV4dGVudCBoZWFkZXIgaWYgaXQKKyAgICBuZWVkcyB0byBmYWxsYmFjayB0byB1c2luZyB0aGUgRklCTUFQIGlvY3RsLgorICAqIEZpeCBmaWxlZnJhZyB0byBwcmludCB0aGUgY29ycmVjdCBudW1iZXIgb2YgZXh0ZW50cyBmb3IgemVyby1sZW5ndGgKKyAgICBmaWxlcyB3aGVuIHVzaW5nIEZJQk1BUC4gIChDbG9zZXM6ICM1NDAzNzYpCisgICogQWRkIGEgZmlsZWZyYWcgLUIgb3B0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHRoZSBGSUJNQVAKKyAgICBzdXBwb3J0LgorICAqIEFsbG93IGUyZnNwcm9ncyBwcm9ncmFtcyB0byBhbGxvY2F0ZSBmcm9tIHVuaW5pdGFsaXplZCBibG9jayBncm91cHMuCisgICogQWRkIGEgbmV3IHByb2dyYW0sIGUyZnJlZWZyYWcsIHdoaWNoIGRpc3BsYXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZQorICAgIGZyZWUgc3BhY2UgZnJhZ21lbnRhdGlvbiBpbiBhbiBleHQyLzMvNCBmaWxlc3lzdGVtLgorICAqIEUyZnNjayB3aWxsIG5vdyBwcmludCBtdWNoIGZ1bGxlciBpbmZvcm1hdGlvbiB3aGVuIHRoZSBsYXN0IG1vdW50CisgICAgdGltZSBvciBsYXN0IHdyaXR0ZW4gdGltZSBpcyBpbiB0aGUgZnV0dXJlLCBzaW5jZSBtb3N0IHBlb3BsZSBjYW4ndAorICAgIHNlZW0gdG8gYmVsaWV2ZSB0aGVpciBkaXN0cmlidXRpb24gaGFzIGJ1Z2d5IGluaXQgc2NyaXB0cywgb3IgdGhleQorICAgIGhhdmUgYSBmYWlsZWQgQ01PUy9SVFMgY2xvY2sgYmF0dGVyeS4KKyAgKiBVcGRhdGUgRnJlbmNoLCBQb2xpc2gsIEN6ZWNoLCBhbmQgU3dlZWRpc2ggdHJhbnNsYXRpb24gZnJvbSB0aGUKKyAgICBUcmFuc2xhdGlvbiBQcm9qZWN0LgorICAqIEVuaGFuY2UgZGVidWdmcydzICdzdGF0JyBjb21tYW5kIHRvIHByaW50IGJhc2ljIGV4dGVudCBpbmZvcm1hdGlvbgorICAgIGZvciBleHRlbnQtbWFwcGVkIGlub2RlcywgYW5kIGFkZCBhIG5ldyBjb21tYW5kLCAnZHVtcF9leHRlbnRzJworICAgIHdoaWNoIHByaW50cyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCBhbiBpbm9kZSdzIGV4dGVudCB0cmVlLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMjMgQXVnIDIwMDkgMTA6MDg6NTIgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjgtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXggcmVncmVzc2lvbiBpbiBleHQyZnNfZXh0ZW50X3NldF9ibWFwKCkgd2hpY2ggY2F1c2VkIGUyZnNjayAtZkQKKyAgICB0byBmYWlsIG9uIGV4dDQgZmlsZXN5c3RlbXMgaWYgdGhlIGRpcmVjdG9yeSBuZWVkcyB0byBzaHJpbmsgYnkgbW9yZQorICAgIHRoYW4gYSBibG9jayAoQ2xvc2VzOiAjNTM3NTEwKQorICAqIEZpeGVkIGZpbGVmcmFnIGZvciBub24tZXh0ZW50IGJhc2VkIGZpbGVzCisgICogRml4IHVzZSBvZiBhcG9zdHJvaGUncyBpbiBwYWNrYWdlIGRlc2NyaXB0aW9ucworICAqIERvbid0IHVzZSBkaWV0bGliYyB3aGVuIGJ1aWxkaW5nIGZvciBtaXBzIGFuZCBtaXBzZWwgYXJjaGl0ZWN0dXJlcworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgMjAgSnVsIDIwMDkgMDk6Mzg6MjEgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjgtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeCByZXNpemUyZnMgYnVncyB3aGVuIHNocmlua2luZyBleHQ0IGZpbGVzeXN0ZW1zCisgICogVXBkYXRlIGRlYmlhbiBwb2xpY3kgY29tcGxpYW5jZSB0byAzLjguMgorICAqIFVwZGF0ZSBwYWNrYWdlIGRlc2NyaXB0aW9ucyB0byBtZW50aW9uIGV4dDMgYW5kIGV4dDQgZmlsZXN5dGVtcworICAgICAgKENsb3NlczogIzUzNTUzMCkKKyAgKiBVcGRhdGUgRnJlbmNoLCBQb2xpc2gsIEN6ZWNoLCBJbmRvbmVzaWFuLCBhbmQgU3dlZWRpc2ggdHJhbnNsYXRpb24KKyAgICAgIGZyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QuCisgICogSWYgdGhlIHJlc2l6ZTJmcyBvcGVyYXRpb24gZmFpbHMsIHRoZSB1c2VyIHdpbGwgYmUgdG9sZCB0byBmaXggdXAKKyAgICB0aGUgZmlsZXN5c3RlbSB1c2luZyBlMmZzY2sgLWZ5LgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFNhdCwgMTEgSnVsIDIwMDkgMTc6MjY6MTYgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjctMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXggb25saW5lIHJlc2l6aW5nIHVzaW5nIHJlc2l6ZTJmcyAoQ2xvc2VzOiAjNTM1NDUyKQorICAqIEZpeCB0aGUgZmlsZWZyYWcgcHJvZ3JhbSBmb3IgZmlsZXMgd2l0aCBtb3JlIHRoYW4gMTQ0IGV4dGVudHMKKyAgKiBVcGRhdGUgYW5kIGNsYXJpZnkgdmFyaW91cyBtYW4gcGFnZXMuCisgICogRml4IHBvdGVudGlhbCBmaWxlc3lzdGVtIGNvcnJ1cHRpb25zIGNhdXNlZCBieSB1c2luZyByZXNpemUyZnMgdG8KKyAgICBzaHJpbmsgZmlsZXN5c3RlbXMgd2l0aCBleHRlbnRzIGVuYWJsZWQuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAwNyBKdWwgMjAwOSAyMzoyMTo0NiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuNy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4IG1lbW9yeSBsZWFrcyBpbiBlMmZzcHJvZ3MsIGluY2x1ZGluZyBhIHZlcnkgbGFyZ2UgbWVtb3J5IGxlYWsKKyAgICB3aGljaCBjYW4gY2F1c2UgZTJmc2NrIHRvIHJ1biBvdXQgb2YgbWVtb3J5IHdoZW4gY2hlY2tpbmcgdmVyeSBsYXJnZQorICAgIGZpbGVzeXN0ZW1zIHVzaW5nIGV4dGVudHMuCisgICogRml4IGEgYnVnIGluIGxpYmV4dDJmcyB3aGljaCBjYW4gY2F1c2UgZTJmc2NrIGFuZCByZXNpemUyZnMgdG8gd3JpdGUKKyAgICB1bmluaXRhbGl6ZWQgZGF0YSBpbnRvIHRoZSBwb3J0aW9uIG9mIHRoZSBpbm9kZSBiZXlvbmQgdGhlIGZpcnN0IDEyOAorICAgIGJ5dGVzIHdoZW4gb3BlcmF0aW5nIG9uIGV4dGVudHM7IHBvdGVudGlhbGx5IGNvcnJ1cHRpbmcgZmlsZXN5c3RlbXMuCisgICogVGhlIGxvZ3NhdmUgcHJvZ3JhbSB3aWxsIG5vdyBmaWx0ZXIgb3V0IHRoZSBeQSBhbmQgXkIgY2hhcmFjdGVycyB3aGVuCisgICAgd3JpdGluZyB0byB0aGUgY29uc29sZS4KKyAgKiBVcGRhdGUvY2xhcmlmeSBtYW4gcGFnZXMgKENsb3NlczogIzUzMTM4NSwgIzUyMzA2MykKKyAgKiBGaXggZmlsZWZyYWcgcHJvZ2FtIHNvIGl0IGNvcnJlY3RseSBjaGVja3MgZm9yIGVycm9ycyBmcm9tIHRoZQorICAgIGZpZW1hcCBpb2N0bC4KKyAgKiBDaGFuZ2UgYmFkYmxvY2tzIHRvIGFsbG93IGJsb2NrIHNpemVzIGxhcmdlciB0aGFuIDRrLgorICAqIEZpeCBsaWJleHQyZnMgdG8gcHJvcGVybHkgaW5pdGlhbGl6ZSBpX2V4dHJhX3NpemUgd2hlbiBjcmVhdGluZyB0aGUKKyAgICBqb3VybmFsIGFuZCByZXNpemUgaW5vZGVzLgorICAqIFJlc2l6ZTJmcyB3aWxsIG5vdyB1cGRhdGUgdGhlIGpvdXJuYWwgYmFja3VwIGZpbGVkcyBpbiB0aGUKKyAgICBzdXBlcmJsb2NrIGlmIHRoZSBqb3VybmFsIGlzIG1vdmVkOyB0aGlzIGF2b2lkcyBhbiB1bm5lY2Vzc2FyeSBmdWxsCisgICAgZnNjayBhZnRlciByZXNpemluZyB0aGUgZmlsZXN5c3RlbS4KKyAgKiBVc2UgdGhlIHNhbWUgZW5jb2RpbmcgYXMgdGhlIGtlcm5lbCBmb3IgcmVjX2xlbiA9PSA2NGsgaW4gNjRrIGJsb2NrCisgICAgZmlsZXN5c3RlbXMuCisgICogRml4IGxzYXR0ciB0byBleGl0IHdpdGggYSBub24temVybyBzdGF0dXMgd2hlbiBpdCBlbmNvdW50ZXJzIGVycm9ycy4KKyAgKiBFbmhhbmNlIGJhZGJsb2NrcyB0byBwcmludCB0aGUgY3VycmVudGx5IHRlc3RlZCBibG9jayBudW1iZXIgd2hlbgorICAgIGludGVycnVwdGVkIHdpdGggXkMuCisgICogRml4IGRlYnVnZnMgZnJvbSBjb3JlIGR1bXBpbmcgaWYgdGhlIGxvZ2R1bXAgY29tbWFuZCBmYWlscyB0byBvcGVuIHRoZQorICAgIG91dHB1dCBmaWxlLgorICAqIEhhcmRlbiBleHQyZnNfdmFsaWRhdGVfZW50cnkoKSBzbyB0aGF0IGxzZGVsIHdpbGwgbm90IHJlYWQgYmV5b25kIHRoZQorICAgIGVuZCBvZiB0aGUgYmxvY2sgZXZlbiBpZiB0aGUgZGlyZWN0b3J5IGJsb2NrIGlzIGNvcnJ1cHRlZC4KKyAgKiBVcGRhdGUgQ2hpbmVzZSBhbmQgQ3plY2ggdHJhbnNsYXRpb24gZnJvbSB0aGUgVHJhbnNsYXRpb24gUHJvamVjdC4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDI5IEp1biAyMDA5IDE1OjEyOjE0IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS42LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBVcGRhdGUgYW5kIGNsYXJpZnkgbWFuIHBhZ2VzCisgICogRml4IGEgbnVtYmVyIG9mIExpbnRpYW4gd2FybmluZ3MsIGluY2x1ZGluZyB0byB1cGRhdGluZyB0byBkZWJpYW4KKyAgICBwb2xpY3kgMy44LjEKKyAgKiBVcGRhdGUgY29uZmlnLmd1ZXNzIGFuZCBjb25maWcuc3ViIHRvIHRoZSBsYXRlc3QgKDIwMDktMDQtMTcpCisgICAgdmVyc2lvbiBzbyB0aGF0IGUyZnNwcm9ncyB3aWxsIGJ1aWxkIG9uIHRoZSBhdnIzMiBwbGF0Zm9ybQorICAgIChDbG9zZXM6ICM1MjgzMzApCisgICogQWRkIGFuIGV4cGxpY2l0IGVycm9yIG1lc3NhZ2UgaWYgdGhlIC9ldGMvbXRhYiBmaWxlIGlzIG1pc3NpbmcKKyAgICB3aGVuIHJ1bm5pbmcgZTJmc2NrIG9yIHJlc2l6ZTJmcyAoQ2xvc2VzOiAjNTI3ODU5KQorICAqIEVuaGFuY2UgZTJmc2NrIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgcHJpbWFyeSBibG9jayBncm91cAorICAgIGRlc2NyaXB0b3JzIG5lZWQgZml4aW5nLCBhbmQgdGhlIGJhY2t1cCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuCisgICAgKENsb3NlczogIzUxNjgyMCkKKyAgKiBBZGQgYW4gIi1hIiBvcHRpb24gdG8gZGVidWdmcydzIGNsb3NlX2ZpbGVzeXMgY29tbWFuZAorICAqIGUyZnNjayB3aWxsIG5vIGxvbmdlciBhYm9ydCBhIHByZWVuIG9wZXJhdGlvbiBpZiBhbiBpbm9kZSdzCisgICAgaV9maWxlX2FjbF9oaSBmaWVsZCBpcyBub24temVyby4gIChDbG9zZXM6ICM1MjY1MjQpCisgICogVGhlIGNoYXR0ciBwcm9ncmFtIGNhbiBub3cgbWlncmF0ZSBpbm9kZXMgZnJvbSB1c2luZyBkaXJlY3QvaW5kaXJlY3QKKyAgICBibG9ja3MgdG8gZXh0ZW50IHRyZWVzLgorICAqIFNwZWVkIHVwIGUyZnNjayBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgYmxvY2sgZ3JvdXBzIHdpdGggaW5vZGVzIGluCisgICAgdXNlIGluIHRoZSB1bnVzZWQgcG9ydGlvbiBvZiB0aGUgYmxvY2sgZ3JvdXAncyBpbm9kZSB0YWJsZS4KKyAgKiBVcGRhdGUgQ2hpbmVzZSB0cmFuc2xhdGlvbiBmcm9tIHRoZSB0cmFuc2xhdGlvbiBwcm9qZWN0CisgICogRml4IHJlc2l6ZTJmcyBzbyBpdCB3b24ndCBjb3JydXB0IGV4dDQgZmlsZXN5c3RlbSB3aGVuIGFza2VkIHRvCisgICAgc2hyaW5rIGEgZmlsZXN5c3RlbSBzbWFsbGVyIHRoYW4gdGhlIG1pbmltdW0gc3VnZ2VzdGVkIHNpemUuCisgICogRml4IGUyZnNjayByZWdyZXNzaW9uIHdoaWNoIGNhbiBjb3JydXB0IGV4dDQgZmlsZXN5c3RlbXMgd2hlbgorICAgIHJlcGxheWluZyB0aGUgam91cm5hbC4KKyAgKiBBZGQgc3VwcG9ydCB0byBlMmZzY2sgZm9yIGhhbmRsaW5nIEkvTyBlcnJvcnMgd2hpbGUgcmVwbGF5aW5nIHRoZQorICAgIGpvdXJuYWwKKyAgKiBGaXggYSBidWcgaW4gZTJmc2NrIHdoaWNoIGNvdWxkIGNhdXNlIGl0IHRvIGNyYXNoIGlmIGFuIGlub2RlIGhhcyBhCisgICAgY29ycnVwdCBleHRlbnQgaGVhZGVyLCBhbmQgdGhlIHVzZXIgZGVjbGluZXMgdG8gY2xlYXIgdGhlIGlub2RlLgorICAqIEZpeCBibGtpZCB0byBwcmVmZXIgdGhlIC9kZXYvbWFwcGVyLzxuYW1lPiBkZXZpY2UgbmFtZXMgb3ZlciB0aGUKKyAgICBwcml2YXRlIC9kZXYvZG0tTiBkZXZpY2UgbmFtZXMuCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBGSUVNQVAgaW9jdGwgdG8gdGhlIGZpbGVmcmFnIHByb2dyYW0KKyAgKiBGdXJ0aGVyIHNwZWVkIHVwIGUyZnNjayBieSBza2lwcGluZyBqb3VybmFsIGNoZWNrcyBpZiB0aGUgZmlsZXN5c3RlbQorICAgIGlzIG1vdW50ZWQgcmVhZC1vbmx5IGFuZCBpcyBtYXJrZWQgYXMgbm90IG5lZWRpbmcgam91cm5hbCByZXBsYXkuCisgICogQWRkIGEgYnVpbGQgZGVwZW5kcyBpbiB0aGUgY29udHJvbCBmaWxlIGluZGljYXRpbmcgdGhhdCBkaWV0bGliYworICAgIG11c3QgYmUgbmV3ZXIgdGhhbiB2ZXJzaW9uIDAuMzAgKENsb3NlczogIzUwNjA2NCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksIDMwIE1heSAyMDA5IDEzOjI2OjIzIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS41LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBFMmZzY2sgd2lsbCBub3cgZGV0ZWN0IGFuZCBmaXggaW5vZGVzIHRoYXQgaGF2ZSBhIG5vbi16ZXJvCisgICAgaV9maWxlX2FjbF9oaWdoIGZpZWxkIG9uIDMyLWJpdCBmaWxlc3lzdGVtcy4KKyAgKiBVcGRhdGUgYnVpbGQtZGVwZW5kcyB0byBpbmRpY2F0ZSB0aGF0IGRpZXRsaWJjIDAuMzAgZG9lc24ndCB3b3JrLgorICAgIChDbG9zZXM6ICM1MDYwNjQpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgRnJpLCAyNCBBcHIgMjAwOSAwODo1Mjo0NyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuNC0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFVwZGF0ZS9jbGFyaWZ5IG1hbiBwYWdlcyAoQ2xvc2VzOiAjMzY1NjE5KQorICAqIEZpeCBhIHByb2JsZW0gd2hlcmUgdGhlICdkZXZpY2UgbmFtZXMnIGZvciBwc2V1ZG8tZmlsZXN5c3RlbXMgaW4KKyAgICAvcHJvYy9tb3VudHMgY291bGQgY29uZnVzZSB0aGUgZTJmc3Byb2dzIGludG8gdGhpbmtpbmcgdGhhdCBhCisgICAgZmlsZXN5c3RlbSBpbWFnZSBzdG9yZWQgaW4gYSByZWd1bGFyIGZpbGUgd2FzIG1vdW50ZWQgd2hlbiBpdCB3YXMgbm90CisgICogUmVtb3ZlIHdob2xlLWRpc2sgZW50cmllcyBmcm9tIHRoZSBibGtpZCBjYWNoZSB3aGVuIHBhcnRpdGlvbnMgYXJlIGZvdW5kCisgICogUmVkdWNlIHRoZSBudW1iZXIgb2YgZGlzayByZWFkcyBuZWVkZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBjbGVhbgorICAqIEFkZCBDaGluZXNlIChzaW1wbGlmaWVkKSB0cmFuc2xhdGlvbiBmcm9tIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0CisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAyMyBBcHIgMjAwOSAwMTozNToyMiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuNC0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFVwZGF0ZSB0aGUgZGViaWFuIGNvcHlyaWdodCBmaWxlcyB0byBwb2ludCBhdCB0aGUgdmVyc2lvbi1zcGVjaWZpYworICAgIEdQTCBhbmQgTEdQTCBmaWxlcy4KKyAgKiBVcGRhdGUgdGhlIGRlYmhlbHBlciBjb21wYXQgbGV2ZWwgdG8gNworICAqIEZpeCBhIG51bWJlciBvZiBmaWxlc3lzdGVtIGNvcnJ1cHRpb24gYnVncyBpbiByZXNpemUyZnMgd2hlbiBncm93aW5nCisgICAgb3Igc2hyaW5raW5nIGV4dDQgZmlsZXN5c3RlbXMgb2ZmLWxpbmUgKGkuZS4sIHdoZW4gdGhlIGV4dDQKKyAgICBmaWxlc3lzdGVtIGlzIG5vdCBtb3VudGVkKS4KKyAgKiBDbGFyaWZ5IHR1bmUyZnMgbWFuIHBhZ2UgIChDbG9zZXM6ICM1MTU2OTMpCisgICogQWRkIGhvbWVwYWdlIGZpZWxkIHRvIHRoZSBkZWJpYW4gY29udHJvbCBmaWxlIChDbG9zZXM6ICM1MDYyNzkpCisgICogRml4IEh1cmQgY29tcGlsYXRpb24gcHJvYmxlbSAoQ2xvc2VzOiAjNTIxNjAyKQorICAqIERlYnVnZnMgY2FuIG5vdyBzZXQgaV9maWxlX2FjbF9oaWdoIHZpYSB0aGUgc2V0X2lub2Rlc19maWVsZCBjb21tYW5kCisgICogRGVidWdmcyB3aWxsIG5vdyBkaXNwbGF5IGEgNjQtYml0IGZpbGUgYWNsIGJsb2NrCisgICogRml4IHZhcmlvdXMgZ2NjIGNvbXBpbGF0aW9uIHdhcm5pbmdzIGFuZCBvdGhlciBwcm9ncmFtbWluZyBjbGVhbnVwcworICAqIE1ha2Ugc3VyZSBsaWJ1dWlkIGNsb3NlcyBhbGwgZmlsZSBkZXNjcmlwdG9ycyBiZWZvcmUgc3RhcnRpbmcgdGhlCisgICAgdXVpZGQgZGFlbW9uLgorICAqIEF2b2lkIHJ1bm5pbmcgZTJmc2NrIHVubmVjZXNzYXJpbHkgYWZ0ZXIgZG9pbmcgYW4gb25saW5lIHJlc2l6ZQorICAqIE1rZTJmcyAtUyB3aWxsIG5vdyBhdm9pZCB0cnlpbmcgdG8gY3JlYXRlIHRoZSBqb3VybmFsCisgICogVXBkYXRlIHRoZSBDemVjaCB0cmFuc2xhdGlvbiBmcm9tIHRoZSB0cmFuc2xhdGlvbiBwcm9qZWN0LgorICAqIEZpeCBzdXBwb3J0IGZvciBleHRlcm5hbCBqb3VybmFscyAod2hpY2ggd2FzIGJyb2tlbiBpbiBlMmZzcHJvZ3MgMS40MS40KQorICAqIEZpeCBhIGNvbXBhdGliaWxpdHkgaXNzdWUgd2l0aCBsaWJleHQyZnMgaW5mbyBwYWdlIGFuZCBtYWtlaW5mbyA0LjEyCisgICogRml4IGEgc2VnZmF1bHQgaW4gZGVidWdmcyB3aGVuIHJ1bm5pbmcgc3RhdCB3aXRob3V0IGFuIG9wZW4gZmlsZXN5c3RlbQorICAqIFRlYWNoIHRoZSBibGtpZCBsaWJyYXJ5IHRoYXQgc3RhcnRpbmcgaW4gMi42LjI5LCBleHQ0IGNhbiBzdXBwb3J0CisgICAgZmlsZXN5c3RlbXMgd2l0aG91dCBqb3VybmFscy4KKyAgKiBBZGQgZXJyb3IgY2hlY2sgcHJldmVudGluZyB0aGUgcmVzZXJ2ZWRfcmF0aW8gYXJndW1lbnQgdG8gbWtlMmZzIGFuZAorICAgIHR1bmUyZnMgZnJvbSBiZWluZyBuZWdhdGl2ZS4gIChDbG9zZXM6ICM1MTcwMTUpCisgICogQWRkIHN1cHBvcnQgZm9yIHRyYWNraW5nIHRoZSBudW1iZXIga2lsb2J5dGVzIHdyaXR0ZW4gdG8gdGhlCisgICAgZmlsZXN5c3RlbSB2aWEgdGhlIHN1cGVyYmxvY2sgZmllbGQgc19rYnl0ZXNfd3JpdHRlbgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMTkgQXByIDIwMDkgMjM6MDU6NTMgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjQtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeCBidWcgd2hpY2ggY291bGQgc29tZXRpbWVzIGNhdXNlIGJsa2lkIHRvIHJldHVybiBhbiBleGl0IHZhbHVlIG9mCisgICAgemVybyBmb3IgYSBub24tZXhpc3RlbnQgZGV2aWNlIChDbG9zZXM6ICM1MDI1NDEpCisgICogRml4IHNwZWxsaW5nIG1pc3Rha2UgaW4gRGViaWFuIGNoYW5nZWxvZyAoQ2xvc2VzOiAjNTAyMzIzKQorICAqIEZpeCBibGtpZCB0byBkZWFsIHdpdGggYW4gZXh0MyBmaWxlc3lzdGVtIHdpdGggdGhlIHRlc3RfZnMgZmxhZworICAqIEZpeCBkZWJ1Z2ZzJ3MgbmNoZWNrIG91dHB1dCB0byBzdXBwcmVzcyBleHRyYSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQKKyAgICBvZiB0aGUgZmlsZSBuYW1lCisgICogVHVuZTJmcyBub3cgdXBkYXRlcyB0aGUgYmxvY2sgZ3JvdXAgY2hlY2tzdW1zIGFmdGVyIGNoYW5naW5nIHRoZQorICAgIGZpbGVzeXN0ZW0ncyBVVUlECisgICogU3BlZWQgdXAgdHVuZTJmcydzIGlub2RlIHJlc2l6aW5nIGNvZGUgc28gaXQgaXMgbm8gbG9uZ2VyIHZhc3RseQorICAgIGluZWZmaWNpZW50IGZvciBtb2RlcmF0ZSB0byBsYXJnZSBmaWxlc3lzdGVtcworICAqIEZpeCBkdW1wZTJmcyBzbyBpdCBkb2Vzbid0IGF0dGVtcHQgdG8gcHJpbnQgdGhlIGlubGluZSBqb3VybmFsCisgICAgaW5mb3JtYXRpb24gb24gZmlsZXN5c3RlbXMgd2l0aCBhbiBleHRlcm5hbCBqb3VybmFsCisgICogVXBkYXRlIHRoZSBDYXRhbGFuIHRyYW5zbGF0aW9uCisgICogRmlsdGVyIG91dCBsaW51eC12ZHNvLnNvIGxpbmVzIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIGxpYnJhcnkKKyAgICBkZXBlbmRlbmNpZXMgd2hpbGUgYnVpbGRpbmcgdGhlIGluaXRpYWwgcmFtZGlzayAoQ2xvc2VzOiAjNTAzMDU3KQorICAqIEZpeCBlMmZzY2sgc28gYW4gZXJyYW50IElOT0RFX1VOSU5JVCBmbGFnIHNldCBpbiBhIGJsb2NrIGdyb3VwCisgICAgZG9lc24ndCBjYXVzZSBlMmZzY2sgdG8gYWJvcnQuCisgICogRTJmc2NrIG5vdyBkaXN0aW5ndWlzaGVzIGJldHdlZW4gZnJhZ21lbnRlZCBkaXJlY3RvcmllcyBhbmQKKyAgICBmcmFnbWVudGVkIGZpbGVzIGluIHZlcmJvc2UgbW9kZSBzdGF0aXN0aWNzIGFuZCBpbiB0aGUgZnJhZ2NoZWNrCisgICAgcmVwb3J0LgorICAqIEF2b2lkIGRvdWJsZS1jb3VudGluZyBub24tY29udGlndW91cyBleHRlbnQtYmFzZWQgaW5vZGVzIGluIHRoZQorICAgIHZlcmJvc2UgbW9kZSBzdGF0aXN0aWNzLgorICAqIEUyZnNjayBub3cgbGVhdmVzIHNsYWNrIHNwYWNlIHdoZW4gcmVwYWNraW5nIGRpcmVjdG9yaWVzIHNvIHRoYXQgYQorICAgIGZldyBuZXcgZGlyZWN0b3J5IGVudHJpZXMgd29uJ3QgY2F1c2UgbGVhZiBub2RlcyB0byBiZWNvbWUgc3BsaXQKKyAgICByaWdodCBhd2F5LgorICAqIEUyZnNjayB3YXMgcHJldmlvdXNseSBub3QgaGFuZGxpbmcgdGhlIGNhc2Ugb2YgYSBjb3JydXB0ZWQgaW50ZXJpb3IKKyAgICBub2RlIGluIHRoZSBleHRlbnQgdHJlZSwgYW5kIHdvdWxkIGNyYXNoIGluIHRoYXQgY2FzZS4gIEl0IG5vdyB3aWxsCisgICAgaGFuZGxlIHRoaXMgYW5kIHJlbGF0ZWQgZmFpbHVyZXMgcm9idXN0bHkuCisgICogRTJmc2NrIHByb2JsZW0gZGVzY3JpcHRpb25zIGludm9sdmluZyB0aGUgam91cm5hbCBhcmUgbm8gbG9uZ2VyCisgICAgcmVmZXJyZWQgdG8gYXMgImV4dDMiIHByb2JsZW1zLCBzaW5jZSBleHQ0IGZpbGVzeXN0ZW1zIGFsc28gaGF2ZQorICAgIGpvdXJuYWxzLgorICAqIEZpeCBhIGxvbmctc3RhbmRpbmcgYnVnIGluIGUyZnNjayB3aGljaCB3b3VsZCBjYXVzZSBpdCB0byBjcmFzaCB3aGVuCisgICAgcmVwbHlpbmcgam91cm5hbHMgZm9yIGZpbGVzeXN0ZW1zIHdpdGggYmxvY2sgc2l6ZXMgZ3JlYXRlciB0aGFuIDhrLgorICAqIEZpeCBhIHJlZ3Jlc3Npb24gaW4gZGVidWdmcydzIGxvZ2R1bXAgY29tbWFuZCBzbyBpdCB3b3JrcyBmb3IKKyAgICBmaWxlc3lzdGVtcyB3aXRoIDMyLWJpdCBibG9jayBudW1iZXJzLiAgVGhpcyB3YXMgYWNjaWRlbnRhbGx5IGJyb2tlbgorICAgIHdoZW4gdGhlIGhlYWRlciBmaWxlcyB3ZXJlIGNoYW5nZWQgdG8gc3VwcG9ydCB0aGUgNjQtYml0IGJsb2NrIG51bWJlcnMuCisgICogRml4IHJlc2l6ZTJmcyBmb3IgZXh0NCBmaWxlc3lzdGVtcy4gIFNvbWUgYmxvY2tzIHRoYXQgdGhhdCBuZWVkIG1vdmluZworICAgIHdoZW4gc2hyaW5raW5nIGZpbGVzeXN0ZW1zIHdpdGggdW5pbml0X2JnIGZlYXR1cmUgd291bGQgbm90IGJlCisgICAgbW92ZWQuICBJbiBhZGRpdGlvbiwgYmxvY2tzIGFuZCBpbm9kZSB0YWJsZSBibG9ja3Mgd2VyZSBub3QgYmVpbmcKKyAgICBjb3JyZWN0bHkgZnJlZWQgd2hlbiBzaHJpbmtpbmcgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZyBmZWFibGUsCisgICAgd2hpY2ggY2F1c2VkIHJlc2l6ZTJmcyAtTSB0byBmYWlsLiAgRmluYWxseSwgd2hlbiBibG9ja3MgYXJlIG1vdmVkLAorICAgIG1ha2Ugc3VyZSB0aGUgdW5pbml0aWFsaXplZCBmbGFnIGluIGV4dGVudHMgaXMgcHJlc2VydmVkLgorICAqIEFkZCBta2ZzLmV4dDQgc3ltbGluayB0byB0aGUgZTJmc3Byb2dzLXVkZWIgcGFja2FnZSAoQ2xvc2VzOiAjNTExMjA3KQorICAqIFJlc2l6ZTJmcyBub3cgcmVzZXJ2ZXMgc29tZSBleHRyYSBibG9jayB3aGVuIGNhbGN1bGF0aW5nIHRoZSBtaW5pbXVtCisgICAgc2l6ZSB0byBzaHJpbmsgdGhlIGZpbGVzeXN0ZW0gaW4gY2FzZSBzb21lIGV4dGVudCBhbGxvY2F0aW9uIHRyZWVzCisgICogQWRkIGEgInNldCAtZSIgdG8gdXVpZC1ydW50aW1lJ3MgcHJlcm0gc2NyaXB0IHRvIG1ha2UgTGludGlhbiBoYXBweQorICAqIFRoZSBibGtpZCBsaWJyYXJ5IHdpbGwgbm93IHJlY29nbml6ZSBidHJmcyBmaWxlc3lzdGVtcyBhbmQgc3dhcAorICAgIGRldmljZXMgY3VycmVudGx5IHVzZWQgYnkgdXNlci1sZXZlbCBzb2Z0d2FyZSBzdXNwZW5kLgorICAqIHR1bmUyZnMgd2lsbCBub3QgYWxsb3cgY2hhbmdpbmcgdGhlIGlub2RlIHNpemUgZm9yIGZpbGVzeXN0ZW1zIHRoYXQKKyAgICBoYXZlIHRoZSBmbGV4X2JnIGZlYXR1cmUgZW5hYmxlZCwgc2luY2UgdGhlIGNvZGUgY3VycmVudGx5IGFzc3VtZXMKKyAgICB0aGUgZWFjaCBibG9jayBncm91cCdzIHBvcnRpb24gaW5vZGUgdGFibGUgaXMgbG9jYXRlZCBpbiBpdHMgb3duCisgICAgYmxvY2sgZ3JvdXAuCisgICogRml4IHR1bmUyZnMgLUkgc28gaXQgd29uJ3QgY29ycnVwdCBleHQzL2V4dDQgZmlsZXN5c3RlbSBjb25maWd1cmVkCisgICAgZm9yIFJBSUQgc3RvcmFnZSBkZXZpY2VzLgorICAqIE1rZTJmcyBub3cgdW5kZXJzdGFuZHMgYSAtVSBvcHRpb24gd2hpY2ggYWxsb3dzIHRoZSBVVUlEIHRvIGJlCisgICAgc3BlY2lmaWVkIGZvciB0aGUgbmV3IGZpbGVzeXN0ZW0uCisgICogTWtlMmZzIHdpbGwgbm93IHRyZWF0IGRldmljZXMgd2l0aCBleGFjdGx5IDE2VEIgYXMgaWYgdGhleSBoYXZlIDE2VEIKKyAgICBtaW51cyBvbmUgYmxvY2ssIHNpbmNlIG1hbnkgdXNlcnMgZXhwZWN0IGV4dDQgdG8gc3VwcG9ydCAxNlRCCisgICAgZGV2aWNlcywgYW5kIHRoZSB0cnVlIG1heGltdW0gc2l6ZSBpcyAxNlRCLTEuCisgICogRTJmc2NrIHdpbGwgbm93IGZsYWcgZmlsZXN5c3RlbXMgdGhhdCBoYXZlIGFuIGluc2FuZSBzX2ZpcnN0X2lubworICAgIGZpZWxkIGluIHRoZWlyIHN1cGVyYmxvY2suCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAyNyBKYW4gMjAwOSAxMTo1MDo0OSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDEuMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogRml4IGUyZnNjayBzbyBpdCBwcmludHMgdGhlIGNvcnJlY3QgaW5vZGUgbnVtYmVyIGZvciB1aW5pdF9iZworICAgIHJlbGF0ZWQgcHJvYmxlbXMuCisgICogRTJmc2NrIHdpbGwgb2ZmZXIgdG8gY2xlYXIgdGhlIHRlc3RfZnMgZmxhZyBpZiB0aGUgZXh0NCBmaWxlc3lzdGVtCisgICAgaXMgYXZhaWxhYmxlLgorICAqIEZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGxpYmJsa2lkCisgICogQXZvaWQgYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBpbiBlMmZzY2sgd2hlbiB0aGVyZSBhcmUgZGlzayBJL08KKyAgICBlcnJvcnMgd2hpbGUgdHJ5aW5nIHRvIGNsb3NlIGEgZmlsZXN5c3RlbS4KKyAgKiBGaXggYSBwb3RlbnRpYWwgaW5maW5pdGUgbG9vcCBpbiByZXNpemUyZnMgd2hlbiBhIGJvZ3VzIG5ldyBzaXplIG9mCisgICAgMCBibG9ja3MgaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgICogQWRkIGFuIGVhcmx5IGNoZWNrIHRvIHNlZSBpZiBhIGRldmljZSBpcyByZWFkLW9ubHkgdG8gYXZvaWQgbG90cyBvZgorICAgIGNvbmZ1c2luZyBlcnJvciBtZXNzYWdlcy4KKyAgKiBGaXggZGVidWdmcydzIG5jaGVjayBjb21tYW5kIHNvIGl0IHByaW50cyBhbGwgb2YgdGhlIG5hbWVzIG9mCisgICAgaGFyZGxpbmtzIGluIHRoZSBzYW1lIGRpcmVjdG9yaWVzLgorICAqIEZpeCBhIGJ1ZyBpbiBsaWJibGtpZCBzbyBpdCBjb3JyZWN0bHkgZGV0ZWN0cyB3aGV0aGVyIHRoZSBleHQ0IGFuZAorICAgIGV4dDRkZXYgZmlsZXN5c3RlbXMgYXJlIGF2YWlsYWJsZSwgc28gdGhhdCB0aGUgZXh0NGRldi0+ZXh0NAorICAgIGZhbGxiYWNrIGNvZGUgd29ya3MgY29ycmVjdGx5LgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMTIgT2N0IDIwMDggMjI6NDU6MzQgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIEZpeCBlMmZzY2sncyBhdXRvbWF0aWMgYmxvY2tzaXplIGRldGVjdGlvbi4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uCisgICAgICBhZGRlZCBpbiBlMmZzcHJvZ3MgMS40MC43IHdoZXJlIGUyZnNjaydzIC1iIG9wdGlvbiB3b3VsZCBub3QKKyAgICAgIHdvcmsgaWYgYSBibG9ja3NpemUgd2Fzbid0IGFsc28gc3BlY2lmaWVkIHZpYSB0aGUgLUIgb3B0aW9uLgorICAqIEZpeCBhIHBvdGVudGlhbCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiBsaWJjb21fZXJyIGlmIHRoZQorICAgICAgYXBwbGljYXRpb24gZXhlYydzIGFub3RoZXIgcHJvZ3JhbS4KKyAgKiBGaXhlZCBiYWRibG9ja3Mgb3V0cHV0IGZvciAiYmFkYmxvY2tzIC1zdyIKKyAgKiBkZWJ1Z2ZzOiBGaXggbmNoZWNrIHRvIHByaW50IGFsbCBwYXRobmFtZXMgZm9yIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGlub2RlcworICAqIFVzZSBkaWV0bGliYyB3aGVuIHBvc3NpYmxlIGZvciBidWlsZGluZyBlMmZzY2suc3RhdGljLCB0byByZWR1Y2UgdGhlCisgICAgICBzaXplIG9mIHRoZSBzdGF0aWMgYmluYXJ5LgorICAqIGRlYnVnZnM6IEFkZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHRoZSBoYXNoIHNlZWQgYW5kIHRvIHNwZWNpZnkgdGhlCisgICAgICBoYXNoIGFsZ29yaXRobSBieSBuYW1lIHRvIHRoZSAiaGFzaCIgY29tbWFuZC4KKyAgKiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZpbGUgSS9PIGZ1bmN0aW9ucyB0byBsaWJleHQyZnMudGV4aW5mby4KKyAgICAgIChDbG9zZXM6ICM0ODQ4NzcpCisgICogRml4IGEgYnVnIGluIGUyZnNjayB3aGVyZSBpZiBhIHRyYW5zbGF0aW9uIGZpbGUgaXMgYmVpbmcgdXNlZCBhbmQKKyAgICAgIGUyZnNjayBuZWVkcyB0byBwcmludCBwcm9ibGVtIHJlcG9ydCB3aXRoIGEgY3VzdG9tIHF1ZXN0aW9uIChzdWNoIGFzCisgICAgICAiUnVuIGpvdXJuYWwgYW55d2F5PyIpLCB0aGUgUE8gZmlsZSdzIGhlYWRlciB3b3VsZCBnZXQgc3Bld2VkIG9udG8KKyAgICAgIHRoZSB0ZXJtaW5hbC4KKyAgKiBVcGRhdGUgU3dlZGlzaCwgVmlldG5hbWVzZSwgRHV0Y2gsIEluZG9uZXNpYW4sIEdlcm1hbiwgQ3plY2ggdHJhbnNsYXRpb25zCisgICogRml4ZWQgc3BlbGxpbmcgbWlzdGFrZXMgaW4gbWFuIHBhZ2VzICAoQ2xvc2VzOiAjNDk4MTAwLCAjNDk4MTAxLAorICAgICAgIzQ5ODEwMiwgIzQ5ODEwMykKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDAyIE9jdCAyMDA4IDA4OjU0OjE2IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MS4xLTMpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogYmFkYmxvY2tzIC12IHdpbGwgbm93IGRpc3BsYXkgdGhlIHRpbWUgYW5kIHBlcmNlbnRhZ2UgY29tcGxldGUKKyAgICAgIChDbG9zZXM6ICM0Mjk3MzkpCisgICogUmVvcmRlcmVkIGRlYmlhbi9ydWxlcyB3aGVuIGJ1aWxkaW5nIHVkZWJzIHRvIGF2b2lkIGEgTGludGlhbiB3YXJuaW5nCisgICogRml4ZWQgZGVwZW5kZW5jaWVzIGZpZWxkcyBpbiB0aGUgdWRlYiBwYWNrYWdlcyAoQ2xvc2VzOiAjNDk3NjE5KQorICAqIEF2b2lkIGxpbmtpbmcgdmFyaW91cyBwcm9ncmFtcyB3aXRoIHVubmVlZGVkIGxpYnJhcmllcworICAqIEZpeGVkIGEgdHlwbydlZCBib2xkIGZvbnQgc3BlY2lmaWVyIGluIG1rZTJmcydzIG1hbiBwYWdlCisgICogRml4ZWQgdGhlIHBrZy1jb25maWcgZmlsZXMgc28gdGhlIGluY2x1ZGUgZGlyZWN0b3J5IG5lZWRlZCBieSB0aGUKKyAgICAgIHZhcmlvdXMgbGlicmFyaWVzIGlzIGluY2x1ZGVkLCBhbmQgdG8gdXNlIFJlcXVpcmVzLnByaXZhdGUgdG8KKyAgICAgIGF2b2lkIHVubmVjZXNzYXJ5IGxpbmtpbmcgb2YgZHluYW1pYyBsaWJyYXJpZXMuCisgICogQWRkIG1vcmUgaGlzdG9yaWNhbCBpbmZvcm1hdGlvbiB0byB0aGUgZGViaWFuLyouc3ltYm9sIGZpbGVzCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgRnJpLCAwNSBTZXAgMjAwOCAxMToxMTowMyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1ha2Ugc3VyZSBleHQ0X3N3YWI2NCgpIGlzIGRlZmluZWQgb24gYWxsIHBsYXRmb3JtcyAoQ2xvc2VzOiAjNDk3NTE1KQorICAqIEJhZGxvY2tzOiBVc2UgT19MQVJHRUZJTEUgc28gaXQgd2lsbCBydW4gb24gZmlsZXMgZ3JlYXRlciB0aGFuIDJHQgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMDIgU2VwIDIwMDggMDk6NTM6NDYgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIG1rZTJmcyBhbmQgdHVuZTJmcyBub3cgdXNlIGhhbGYtbWQ0IGFzIHRoZSBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtCisgICAgICAgSW4gYWRkaXRpb24gdGhlIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gY2FuIGJlIHZpYSBta2UyZnMuY29uZiBmb3IKKyAgICAgICBta2UyZnMsIGFuZCB2aWEgYSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciB0dW5lMmZzLgorICAqIEFkZCBzdXBwb3J0IGZvciBvbi1saW5lIHJlc2l6aW5nIG9mIGV4dDQgZmlsZXN5c3RlbXMgd2l0aCB0aGUKKyAgICAgICBmbGV4X2JnIGZpbGVzeXN0ZW0gZmVhdHVyZS4KKyAgKiBlMmZzY2sgbm93IGNyZWF0ZXMgdGhlIGpvdXJuYWwgaW4gdGhlIG1pZGRsZSBvZiB0aGUgZmlsZXN5c3RlbSwKKyAgICAgICB3aGljaCBjYW4gc3BlZWQgdXAgZnN5bmMtaGVhdnkgd29ya2xvYWRzLgorICAqIE1ha2UgdGhlIGJsa2lkIGxpYnJhcnkgbW9yZSBlZmZpY2llbnQgZm9yIGRldmljZW1hcHBlciBkZXZpY2VzLAorICAgICAgIG1vc3RseSBieSBubyBsb25nZXIgdXNpbmcgdGhlIGxpYmRldm1hcHBlciBsaWJyYXJ5LgorICAqIEZpeCB2YXJpb3VzIG5hbWVzcGFjZSBsZWFrYWdlcyBieSB0aGUgbGliYmxraWQsIGxpYmUycCBhbmQgbGliZXh0MmZzCisgICAgICAgbGlicmFyaWVzLgorICAqIEZpeCBzdXBwb3J0IGZvciBlbXB0eSBkaXJlY3RvcmllcyBpbiA2NGsgYmxvY2tzaXplIGZpbGVzeXN0ZW1zLgorICAqIEFkZCBzdXBwb3J0ZWRfZmVhdHVyZXMgY29tbWFuZCB0byBkZWJ1Z2ZzCisgICogSW1wcm92ZSBsaWJibGtpZCBkZXRlY3Rpb24gb2YgSkZTIGFuZCBIUEZTIGZpbGVzeXN0ZW1zCisgICogVGhlIHRlc3QgSS9PIG1hbmFnZXIgaXMgbm93IGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQsIGJ1dCB0byBhdm9pZCBpdHMKKyAgICBvdmVyaGVhZCwgaXQgaXMgb25seSBlbmFibGVkIHdoZW4gdGhlIFRFU1RfSU9fRkxBR1Mgb3IgVEVTVF9JT19CTE9DSworICAgIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgc2V0LgorICAqIEZpeCBmaWxlZnJhZydzIGlkZWFsIGV4dGVudCBjYWxjdWxhdGlvbiAoQ2xvc2VzOiAjNDU4MzA2KQorICAqIEZpeCBwb3N0aW5zdGFsbCBzY3JpcHRzIHdoZW4gdGhlIHVzZXIvZ3JvdXAgaXMgaW4gTERBUCAoQ2xvc2VzOiAjNDk3MDEwKQorICAqIEFkZCBJbmRvbmVzaWFuIGFuZCB1cGRhdGUgRnJlbmNoLCBQb2xpc2gsIER1dGNoLCBHZXJtYW4sIFN3ZWVkaXNoLAorICAgICAgIEN6ZWNoLCBhbmQgVmlldG5hbWVzZSBUcmFuc2xhdGlvbnMuICAoQ2xvc2VzOiAjMzEzNjk3LCAjNDAxMDkyKQorICAqIFVwZGF0ZS9jbGFyaWZpZWQgbWFuIHBhZ2VzCisgICogQWRkIGRwa2ctZ2Vuc3ltYm9scyBzdXBwb3J0IHRvIHRyYWNrIEFCSSBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJpZXMKKyAgKiBBZGQgbGludGlhbiBvdmVycmlkZXMgZm9yIHV1aWQtcnVudGltZSBhbmQgbGlidXVpZDEKKyAgKiBSZW1vdmUgKG5vIGxvbmdlciBuZWVkZWQpIGxpbnRpYW4gb3ZlcnJpZGVzIGZvciBlMmZzY2stc3RhdGljCisgICogQWRkIGRlYmlhbi93YXRjaCBmaWxlCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAwMSBTZXAgMjAwOCAxMTozMDoyMSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuMC00KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIG1rZTJmcyB3aWxsIGlzc3VlIGEgd2FybmluZyBpZiBta2UyZnMuY29uZiBoYXNuJ3QgYmVlbiB1cGRhdGVkIGFuZAorICAgIHRoZSB1c2VyIHRyaWVzIHRvIGNyZWF0ZSBhbiBleHQzLCBleHQ0LCBvciBleHQ0ZGV2IGZpbGVzeXN0ZW0sCisgICAgc2luY2UgaXQgZGVwZW5kcyBvbiB0aGUgbWtlMmZzLmNvbmYgZmlsZSBpbiBvcmRlciB0byBjcmVhdGUgdGhlCisgICAgZmlsZXN5c3RlbSBwcm9wZXJseSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBmZWF0dXJlcy4KKyAgKiBGaXggdGhlIG1heGltdW0gam91cm5hbCBzaXplIG1lc3NhZ2UgaW4gbWtlMmZzIGFuZCB0dW5lMmZzIHRvIGJlCisgICAgY29uc2lzdGVudC9jb3JyZWN0LiAgKENsb3NlczogIzQ5MTYyMCkKKyAgKiBBZGQgZGV0ZWN0aW9uIGZvciBoZnN4IGZpbGVzeXN0ZW0gYW5kIGFkZCBsYWJlbCBhbmQgdXVpZCBkZXRlY3Rpb24KKyAgICBmb3IgaGZzLCBoZnNwbHVzLCBhbmQgaGZzeCBmaWxlc3lzdGVtcyBpbiBsaWJibGtpZC4KKyAgKiBGaXggY29zbWV0aWMgaXNzdWUgaW4gcmVzaXplMmZzIHdoZW4gYSBwcm9ncmVzcyBiYXIgZG9lc24ndCBmaW5pc2gKKyAgICB3aXRoIGEgbmV3bGluZSBmb3IgcGFzcyA0ICh3aGVuIHRoZSBpbm9kZSByZWZlcmVuY2VzIGFyZSB1cGRhdGVkKS4KKyAgKiBUZWFjaCByZXNpemUyZnMgdG8gbW92ZSBibG9ja3Mgd2hlbiBleHRlbnRzIGFyZSBwcmVzZW50ICh3aGVuCisgICAgc2hyaW5raW5nIGEgZmlsZXN5c3RlbSBhbmQvb3IgaWYgcmVzaXplX2lub2RlIGlzIG5vdCBwcmVzZW50KS4KKyAgKiBUZWFjaCByZXNpemUyZnMgdG8gd29yayBjb3JyZWN0bHkgd2l0aCB0aGUgdW5pbml0X2JnIHdoZW4gYmxvY2tzCisgICAgbmVlZCB0byBiZSBtb3ZlZCBvciBhbGxvY2F0ZWQuCisgICogRml4IGFuZCBvcHRpbWl6ZSBleHRlbnQgbWFuaXB1bGF0aW9uIGluIGxpYmV4dDJmcyBmb3IgcmVzaXplMmZzLgorICAqIEZpeCAiZHVtcGUyZnMgLWkiIGFuZCAiZGVidWdmcyAtaSIuICAoQ2xvc2VzOiAjNDk1ODMwKQorICAqIEZpeCByZXNpemUyZnMgaW5jb3JyZWN0bHkgbWFuYWdpbmcgZGlyZWN0b3J5IGluLXVzZSBjb3VudHMgd2hlbgorICAgIHNocmlua2luZyBmaWxlc3lzdGVtcyBhbmQgZGlyZWN0b3J5IGlub2RlcyBuZWVkIHRvIGJlIG1vdmVkLgorICAqIEZpeCBzcHVyaW91cyBlMmZzY2sgY29tcGxhaW50cyB3aXRoIGlfc2l6ZSB3aXRoIGV4dGVudHMgYW5kIGxhcmdlCisgICAgZmlsZXMgYW5kIHByZWFsbG9jYXRlZCBibG9ja3MuCisgICogTWFrZSBzdXJlIHRoZSBjcmVhdGlvbiB0aW1lc3RhbXAgaXMgc2V0IGJ5IG1rZTJmcyBhbmQgYnkgbmV3IGlub2RlcworICAgIGNyZWF0ZWQgYnkgdGhlIGxpYmV4dDJmcyBpbiBnZW5lcmFsLgorICAqIEZpeCBpbmQvZGluZC90aW5kIHN0YXRpc3RpY3Mgd2hlbiBleHRlbnRzIGFyZSBwcmVzZW50LCBhbmQgYWRkCisgICAgZXh0ZW50IHRyZWUgZGVwdGggc3RhdGlzdGljcy4KKyAgKiBBZGQgYSBmcmFnbWVudGF0aW9uIHJlcG9ydCBleHRlbmRlZCBvcHRpb24gdG8gZTJmc2NrLgorICAqIEZpeCBibGtpZCBjYWNoZSB2YWxpZGF0aW9uIGFuZCBzb21lIHBvc3NpYmxlIGJsa2lkIGNyYXNoZXMKKyAgICAoQ2xvc2VzOiAjNDkzMjE2KQorICAqIFRlYWNoIGRlYnVnZnMncyBodHJlZSBjb21tYW5kIHRvIHdvcmsgd2l0aCBleHRlbnQtYmFzZWQgZGlyZWN0b3JpZXMuCisgICogSW1wcm92ZSB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgInR1bmUyZnMgLUkiLgorICAqIEZpeCBtaXNjZWxsYW5lb3VzIHN0cmluZ3MgYW5kIHVzYWdlIG1lc3NhZ2VzIHBvaW50ZWQgb3V0IGJ5IHRoZQorICAgIHRyYW5zbGF0b3JzLiAgKFRoYW5rcywgdHJhbnNsYXRvcnMhKQorICAqIEVuZm9yY2UgdGhhdCBta2UyZnMgd29uJ3QgYWxsb3cgZmVhdHVyZXMgZm9yIHJldmlzaW9uIDAgZmlsZXN5c3RlbXMuCisgICogT3B0aW1pemUgaW5vZGUgdGFibGUgYWxsb2NhdGlvbiBpbiBta2UyZnMgZm9yIGZsZXhfYmcgZmlsZXN5c3RlbXMuCisgICogVXBkYXRlL2NsYXJpZmllZCBtYW4gcGFnZXMKKyAgKiBGaXggbWlub3IgdHlwbyBpbiB1dWlkLXJ1bnRpbWUncyBkZWJpYW4gcGFja2FnZSBkZXNjcmlwdGlvbgorICAqIFdyYXAgZGViaWFuL2NvcHlyaWdodCBmaWxlcyB0byBhdm9pZCAibGluZSB0b28gbG9uZyIgbGludGlhbiB3YXJuaW5ncworCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFNhdCwgMjMgQXVnIDIwMDggMDg6NTY6NDcgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjAtMykgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBGaXggbWlwcy1zcGVjaWZpYyBGVEJGUyBwcm9ibGVtIGluIGRlYmlhbi9ydWxlcyBmaWxlCisgICogU3luY2hyb25pemUgc2VjdGlvbiBhbmQgcHJpb3JpdHkgbGV2ZWxzIGluIGNvbnRyb2wgZmlsZSB3aXRoIHRoZQorICAgIEZUUCBtYXN0ZXJzJyBvdmVycmlkZSBmaWxlLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMTUgSnVsIDIwMDggMTE6Mzg6NTkgLTA0MDAKKworZTJmc3Byb2dzICgxLjQxLjAtMikgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBEb24ndCB0cnkgdG8gY2hlY2sgdGhlIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW0gaWYgdGhlIEdEVF9DU1VNCisgICAgZmVhdHVyZSBpcyBub3QgcHJlc2VudC4gIChDbG9zZXM6ICM0OTA2MzcpCisgICogQWRkIGEgbmV3IGJsa2lkIC1MIG9wdGlvbiB3aGljaCBwcmV0dHktcHJpbnRzIHRoZSBjdXJyZW50bHkKKyAgICBhdmFpbGFibGUgYmxvY2sgZGV2aWNlcy4gIChDbG9zZXM6ICM0OTA1MjcpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxMyBKdWwgMjAwOCAxOToxODowOCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDEuMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogTWFrZSBlMmZzY2sgZGV0ZWN0IGNvcnJ1cHRlZCBibG9jayBncm91cCBkZXNjcmlwdG9ycyB0aGF0IHdvdWxkCisgICAgY2F1c2UgaXQgdG8gcmVsb2NhdGUgaW5vZGUgdGFibGVzLCBjYXVzaW5nIG1vcmUgZGFtYWdlIHRvIHRoZQorICAgIGZpbGVzeXN0ZW0sIGFuZCBtYWtlIGl0IHRyeSB0aGUgYmFja3VwIHN1cGVyYmxvY2svYmxvY2sgZ3JvdXAKKyAgICBkZXNjcmlwdG9ycyBmaXJzdC4KKyAgKiBGaXggcmVzaXplMmZzIHRvIGNsZWFuIHVwIHRoZSByZXNpemVfaW5vZGUgaWYgYWxsIG9mIHRoZSByZXNlcnZlZAorICAgIGdkdCBibG9ja3MgYXJlIGNvbnN1bWVkIGR1cmluZyBhbiBvZmYtbGluZSByZXNpemUuCisgICogRW5hYmxlIGh1Z2VfZmlsZSwgZGlyX25saW5rLCBleHRyYV9pc2l6ZSBmZWF1dHJlcyBmb3IgbWtlMmZzIGFuZCB0dW5lMmZzLgorICAqIEVuYWJsZSBodWdlX2ZpbGUsIGRpcl9ubGluaywgZXh0cmFfaXNpemUsIGFuZCB1bmluaXRfYmcgYnkgZGVmYXVsdAorICAgIGluIG1rZTJmcy5jb25mLgorICAqIEZpeCBiYWRibG9ja3MgdGVybWlub2xvZ3kgaW4gbWFuIHBhZ2UgYW5kIHByb2dyYW0gb3V0cHV0LgorICAgIChDbG9zZXM6ICM0NDA5ODMsICM0NDA5ODEpCisgICogQ2xhcmlmeSBzdHJpcGUtd2lkdGggYW5kIHN0cmlkZS1zaXplIGluIG1rZTJmcyBtYW4gcGFnZS4gIChDbG9zZXM6ICM0ODc4NDkpCisgICogbWtlMmZzOiBEdW1iIGRvd24gZmlsZXN5c3RlbXMgZm9yIEdOVSBIdXJkIChDbG9zZXM6ICM0NzE5NzcpCisgICogQWRkIGJhc2gtc3RhdGljIHRvIHRoZSBsaXN0IG9mIHNoZWxscyByZWNvbW1lbmRlZCBmb3IgZTJmc2NrLXN0YXRpYworICAgIChDbG9zZXM6ICM0OTAwMDMpCisgICogbWtlMmZzOiBGaXggZmxleF9iZyBtZXRhZGF0YSBkZWZhdWx0IGxheW91dCB0byBhdm9pZCBhIGhvbGUgYmV0d2VlbgorICAgIHRoZSBiaXRtYXBzIGFuZCBpbm9kZSB0YWJsZXMuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAxMCBKdWwgMjAwOCAxNzoyNTozMiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDF+V0lQLTIwMDgtMDctMDctMSkgZXhwZXJpbWVudGFsOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24gKHByZS1yZWxlYXNlIGZvciBlMnNwcm9ncyAxLjQxKQorICAqIFVwZGF0ZSB0byBpbmRpY2F0ZSBjb21wbGlhbmNlIHdpdGggZGViaWFuIHBvbGljeSB2ZXJzaW9uIDMuOC4wLjAuCisgICogRml4IGUyZnNjayB0byBub3QgdHJ1bmNhdGUgdmFsaWQgZXh0ZW50IGZpbGVzIHRoYXQgYXJlIGxhcmdlciB0aGFuCisgICAgd2hhdCBpcyBzdXBwb3J0ZWQgYnkgaW5kaXJlY3QgZmlsZXMuCisgICogQWRkIC1kYmcgcGFja2FnZXMgd2hpY2ggY29udGFpbiB0aGUgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorICAqIG1rZTJmczogUHJpbnQgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSB3aGVuIGEgZGV2aWNlIGlzIHRvbyBiaWcuCisgICAgKENsb3NlczogIzQ4ODY2MykKKyAgKiBDcmVhdGUgZXh0ZXJuYWwgam91cm5hbCBkZXZpY2VzIHdpdGggYSBkZWZhdWx0IGJsb2Nrc2l6ZSBvZiA0aworICAqIEZpeCBidWcgaW4gYmFkYmxvY2tzIHdoaWNoIGNhdXNlZCBjcmFzaCB3aGVuIGxvdHMgb2YgLXQgcGF0dGVybnMgYXJlCisgICAgZ2l2ZW4uICAoQ2xvc2VzOiAjNDg3Mjk4KQorICAqIEZpeCBibGtpZCBoYW5kbGluZyBvZiBzdGFsZSBlbnRyaWVzLiAgKENsb3NlczogIzQ4Nzc1OCwgIzQ4Nzc4MykKKyAgKiBVcGRhdGUgVmlldG5hbWVzZSwgUG9saXNoLCBGcmVuY2gsIFNwYW5pc2gsIEdlcm1hbiwgQ2F0YWxhbiwKKyAgICBEdXRjaCwgQ3plY2ggdHJhbnNsYXRpb25zIGZyb20gdGhlIHRyYW5zbGF0aW9uIHByb2plY3QuCisgICogRml4IEZUQkZTIHByb2JsZW0gb24gTUlQUyAoQ2xvc2VzOiAjNDg3Njc1KQorICAqIEZpeCBidWcgaW4gbGlidXVpZDEucG9zdGluc3Qgd2hpY2ggd291bGQgY2F1c2UgaXQgdG8gYmxvdyB1cCBpZgorICAgIHRoZXJlIHdlcmUgc3BhY2VzIGFyb3VuZCB0aGUgZXF1YWxzIHNpZ24gaW4gL2V0Yy9hZGR1c2VyLmNvbmYuCisgICAgKENsb3NlczogIzQ4NzQ0MykKKyAgKiBVcGRhdGUvY2xhcmlmaWVkIG1hbiBwYWdlcy4gIChDbG9zZXM6ICMzOTMzMTMpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAwNyBKdWwgMjAwOCAxNjozMDo0MyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDF+V0lQLTIwMDgtMDYtMTctMSkgZXhwZXJpbWVudGFsOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHZlcnNpb24gKHByZS1yZWxlYXNlIGZvciBlMmZzcHJvZ3MgMS40MSkKKyAgKiBOZXcgb3B0aW9ucyB0byBiYWRibG9ja3MgYWxsb3cgaXQgdG8gbGltaXQgaG93IHF1aWNrbHkgaXQgcmVhZHMKKyAgICBmcm9tIGRpc2sgKGZvciBiYWNrZ3JvdW5kIHNjcnViYmluZykgYW5kIGFib3J0IGFmdGVyIGEgZmluZGluZworICAgIGdpdmluZyBhIG51bWJlciBvZiBlcnJvcnMuCisgICogQWRkIHN1cHBvcnQgZm9yIGV4dDQgZmlsZXN5c3RlbSBmZWF0dXJlcy4gIChDbG9zZXM6ICMzODg0NTIsICM0MjU0NzcpCisgICogVHVuZTJmcyBjYW4gbWlncmF0ZSBhIGZpbGVzeXN0ZW0gZnJvbSB1c2luZyAxMjggYnl0ZSBpbm9kZXMgdG8KKyAgICBsYXJnZXIgaW5vZGUgc2l6ZXMgc28gdGhlIHVzZXIgY2FuIHRha2UgZnVsbCBhZHZhbnRhZ2Ugb2YgZXh0NCkKKyAgKiBFMmZzY2sgYW5kIG1rZTJmcyBjYW4gb3B0aW9uYWxseSByZWNvcmQgYW4gdW5kbyBsb2cgd2hpY2ggY2FuIGJlCisgICAgcmVwbGF5ZWQgYnkgdGhlIGUydW5kbyBwcm9ncmFtLgorICAqIEUyZnNjayB3aWxsIGRpc3BsYXkgYSBsZXNzIGNyeXB0aWMgbWVzc2FnZSB3aGVuIHRoZSBsYXN0IGNoZWNrIGZpZWxkCisgICAgaW4gdGhlIHN1cGVyYmxvY2sgaXMgaW4gdGhlIGZ1dHVyZS4gIChDbG9zZXM6ICM0NDYwMDUpCisgICogSW1wcm92ZSBibGtpZCBwcm9iZXMgZm9yIExWTSB2b2x1bWVzIGFuZCBzd2FwIHBhcnRpdGlvbnMKKyAgKiBNa2UyZnMgaGFzIGEgbXVjaCBtb3JlIHNvcGhpc3RpY2F0ZWQgc3lzdGVtIGZvciBjb250cm9sbGluZyB0aGUKKyAgICBwYXJhbWV0ZXJzIG9mIG5ld2x5IGNyZWF0ZWQgZmlsZXN5c3RlbXMuICBUaGUgLXQgb3B0aW9uIG5vdyBpcyB1c2VkCisgICAgdG8gc3BlY2lmeSB0aGUgZmlsZXN5c3RlbSB0eXBlLiAgU2VlIHRoZSBta2UyZnMgYW5kIG1rZTJmcy5jb25mIG1hbgorICAgIHBhZ2VzIGZvciBtb3JlIGRldGFpbHMuCisgICogUmVzaXplMmZzIHdpbGwgbm93IHByaW50IHRoZSBtaW5pbXVtIG5lZWRlZCBmaWxlc3lzdGVtIHNpemUgaWYgZ2l2ZW4KKyAgICB0aGUgLVAgb3B0aW9uLCBhbmQgd2lsbCByZXNpemUgdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIHNtYWxsZXN0IHBvc3NpYmxlCisgICAgc2l6ZSBpZiBnaXZlbiB0aGUgLU0gb3B0aW9uLgorICAqIEUyZnNjayBub3cgcGVyZm9ybXMgbW9yZSBleHRlbnNpdmUgYW5kIGNhcmVmdWwgY2hlY2tzIG9mIGV4dGVuZGVkCisgICAgYXR0cmlidXRlcyBzdG9yZWQgaW4gdGhlIGlub2RlLgorICAqIE1rZTJmcyB3aWxsIGFsd2F5cyBtYWtlIHN1cmUgdGhhdCBsb3N0K2ZvdW5kIGFsd2F5cyBoYXMgYXQgbGVhc3QgMgorICAgIGJsb2NrcywgZXZlbiBmb3IgZmlsZXN5c3RlbXMgd2l0aCB2ZXJ5IGxhcmdlIGJsb2Nrc2l6ZXMgKGkuZS4sIDY0a2IpLgorICAqIFRoZSBkZWJ1Z2ZzICJscyIgY29tbWFuZCBub3cgc3VwcG9ydHMgdGhlIC1wIG9wdGlvbiwgd2hpY2ggY2F1c2VzCisgICAgZmlsZW5hbWVzIHRvIGJlIHByaW50ZWQgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzLgorICAqIEZpeCBhIHBvdGVudGlhbCBvZmYtYnktb25lIGJ1ZmZlciBvdmVyZmxvdyBpbiBlMmltYWdlCisgICogVGhlIGNoYXR0ciBwcm9ncmFtIHdpbGwgbm93IHJldHVybiBhIG5vbi16ZXJvIGV4aXQgY29kZSBpbiBjYXNlIG9mCisgICAgZmFpbHVyZXMuCisgICogVGhpcyB2ZXJzaW9uIG9mIGUyZnNwcm9ncyByZW1vdmVzIHN1cHBvcnQgZm9yIGxlZ2FjeSBiaWctZW5kaWFuCisgICAgZmlsZXN5c3RlbXMgYW5kIGZvciBNQVNJWCBmaWxlc3lzdGVtcy4KKyAgKiBBZGQgSS9PIHN0YXRpc3RpY3MgcmVwb3J0aW5nIHRvIGUyZnNjay4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDE3IEp1biAyMDA4IDIzOjU3OjA4IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MC4xMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIENoYW5nZSBta2UyZnMsIHR1bmUyZnMgYW5kIHJlc2l6ZTJmcyB0byB1c2UgZmxvYXRpbmcgcG9pbnQgcHJlY2lzaW9uCisgICAgd2hlbiBjYWxjdWxhdGluZyB0aGUgbnVtYmVyIG9mIHJlc2VydmVkIGJsb2Nrcy4gIChDbG9zZXM6ICM0NTI2MzkpCisgICogVXBkYXRlIFNwYW5pc2ggYW5kIENhdGFsYW4gdHJhbnNsYXRpb25zLgorICAqIEZpeCBleHQyZnNfc3dhcHsxNiwzMiw2NH0gZm9yIGV4dGVybmFsIGFwcGxpY2F0aW9ucy4gIChDbG9zZXM6ICM0ODQ4NzkpCisgICogSW1wcm92ZSB1dWlkLXJ1bnRpbWUgcGFja2FnZSBkZXNjcmlwdGlvbi4gIChDbG9zZXM6ICM0ODM5NjIpCisgICogSW1wcm92ZSBlMmZzcHJvZ3MgcGFja2FnZSBkZXNjcmlwdGlvbi4gIChDbG9zZXM6ICM0ODMwMjMpCisgICogQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyBaRlMgdm9sdW1lcyB0byBsaWJibGtpZC4KKyAgKiBDbGFyaWZ5IGRlYnVnZnMgbWFuIHBhZ2UuICAoQ2xvc2VzOiAjNDg2NDYzKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMTcgSnVuIDIwMDggMjE6NTk6MjEgLTA0MDAKKworZTJmc3Byb2dzICgxLjQwLjEwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IGEgdmVyeSByYXJlIHBvdGVudGlhbCBkYXRhIGNvcnJ1cHRpb24gYnVnIGluIGUyZnNjaydzIGpvdXJuYWwKKyAgICByZXBsYXkuCisgICogVXBkYXRlZCBHZXJtYW4sIER1dGNoLCBTd2VlZGlzaCwgYW5kIFZpZXRuYW1lc2UgdHJhbnNsYXRpb25zLgorICAqIEZvcmNlIGJsa2lkIHRvIHJldmFsaWRhdGUgYSBkZXZpY2UgaWYgaXRzIG10aW1lIGlzIG5ld2VyIHRoYW4gdGhlCisgICAgbGFzdCB2YWxpZGF0aW9uIHRpbWUgaW4gdGhlIGNhY2hlLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMjEgTWF5IDIwMDggMTM6MzU6MTIgLTA0MDAKKworZTJmc3Byb2dzICgxLjQwLjktMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXggZnNjayBzbyB0aGF0IGlmIG11bHRpcGxlIGZpbGVzeXN0ZW1zIGFyZSBiZWluZyBjaGVja2VkIGluCisgICAgICBwYXJhbGxlbCwgdGhlIHByb2dyZXNzIGJhciBmb3Igc3Vic2VxdWVudCBmaWxlc3lzdGVtcyB3aWxsIGJlCisgICAgICBjb3JyZWN0bHkgZGlzcGxheWVkLiAgKENsb3NlczogIzQzMjg2NSkKKyAgKiBGaXggZnNjayAtQ24gZm9yIG4hPTAgZm9yIGJldHRlciBVYnVudHUgYm9vdC10aW1lIHN1cHBvcnQKKyAgKiBkZWJ1Z2ZzOiBEb24ndCBib3RoZXIgdXNpbmcgYSBwYWdlciBvZiBzdGRvdXQgaXMgbm90IGEgdHR5CisgICogRml4IHR1bmUyZnMgYW5kIGRlYnVnZnMgdG8gY29ycmVjdGx5IHBhcnNlIHRpbWUgc3RyaW5ncyBkdXJpbmcKKyAgICAgIGRheWxpZ2h0IHNhdmluZ3MgdGltZS4gIChDbG9zZXM6ICM0NzE4ODIpCisgICogVGVhY2ggZnNjayB0byB0cmVhdCBleHQ0IGFuZCBleHQ0IGZpbGVzeXN0ZW1zIGFzIGV4dCogZmlsZXN5c3RlbXMKKyAgKiBMb2dzYXZlIHdpbGwgbm93IHByb3BhZ2F0ZSBTSUdJTlQgYW5kIFNJR1RFUk0gc2lnbmFscyB0byBpdHMgY2hpbGQKKyAgICAgIHByb2Nlc3MuCisgICogTWtlMmZzIHdpbGwgbm90IGFsbG93IHRoZSBpbGxvZ2ljYWwgY29tYmluYXRpb24gb2YgdGhlIHJlc2l6ZV9pbm9kZQorICAgICAgYW5kIG1ldGFfYmcgZmlsZXN5c3RlbSBmZWF0dXJlcy4KKyAgKiBVc2UgVUlEL0dJRCByYW5nZXMgZnJvbSBhZGR1c2VyLmNvbmYgaWYgcHJlc2VudCwgZXZlbiB0aG91Z2ggd2UKKyAgICAgIGRvbid0IHVzZSBhZGR1c2VyIHRvIGFkZCB1c2Vycy9ncm91cHMuICAoQ2xvc2VzOiAjNDczMTc5KQorICAqIFVwZGF0ZWQgR2VybWFuLCBDemVjaCwgRHV0Y2gsIEZyZW5jaCwgUG9saXNoLCBTd2VlZGlzaCwgYW5kCisgICAgICBWaWV0bmFtZXNlIHRyYW5zbGF0aW9ucy4KKyAgKiBVcGRhdGUvY2xhcmlmaWVkIHRoZSBta2UyZnMgbWFuIHBhZ2UKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDI3IEFwciAyMDA4IDAwOjM1OjIwIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MC44LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogT25lIG1vcmUgYmlnLWVuZGlhbiBzd2FwIGZpeCBuZWVkZWQgZm9yIHJlc2l6ZTJmcyB0byB3b3JrIGNvcnJlY3RseQorICAgICAgd2l0aCBpbi1pbm9kZSBleHRlbmRlZCBhdHRyaWJ1dGVzLgorICAqIEZpeCBtaW5vciBzZWN1cml0eSBpc3N1ZXMgaWRlbnRpZmllZCBpbiB1dWlkZC4KKyAgKiBSZW1vdmUgZTJmc3Byb2dzIHByZWluc3RhbGwgc2NyaXB0IHdoaWNoIGNvbnRhaW5lZCBzdHVmZiBub3QgbmVlZGVkCisgICAgICBpbiB3ZWxsIG92ZXIgdHdvIHN0YWJsZSByZWxlYXNlcy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksIDE0IE1hciAyMDA4IDE0OjI1OjU0IC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MC44LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IGUyaW1hZ2UgLUkgc28gaXQgd29ya3Mgb24gaW1hZ2UgZmlsZXMgd2hpY2ggYXJlIGxhcmdlciB0aGFuIDJHQi4KKyAgKiBGaXggZTJmc2NrJ3MgaGFuZGxpbmcgb2YgZGlyZWN0b3J5IGlub2RlcyB3aXRoIGEgY29ycnVwdCBzaXplIGZpZWxkLgorICAqIEZ1bGx5IGZpeCBhIHJlc2l6ZTJmcyBidWcgd2hlcmUgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiBsYXJnZSBpbm9kZXMKKyAgICAgIGNvdWxkIGdldCBkcm9wcGVkIG9uIGJpZy1lbmRpYW4gc3lzdGVtcy4KKyAgKiBVcGRhdGUgQ3plY2gsIER1dGNoLCBQb2xpc2gsIFN3ZWVkaXNoLCBhbmQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMuCisgICogU2lnbmlmaWNhbnRseSB1cGRhdGVkIEdlcm1hbiB0cmFuc2xhdGlvbiEgIFRoYW5rcyB0byBQaGlsaXBwIFRob21hcworICAgIGZyb20gTm92ZWxsIGZvciBzdGVwcGluZyB1cCB0byBiZSBvdXIgbmV3IEdlcm1hbiB0cmFuc2xhdGlvbgorICAgIG1haW50YWluZXIhICAoQ2xvc2VzOiAjMzAyNTEyLCAjMzcwMjQ3LCAjNDAxMDkyLCAjNDEyODgyKQorICAqIEZpeGVkIG1rZTJmcyBtYW4gcGFnZSB0byBkb2N1bWVudCBuZXcgZGVmYXVsdCBpbm9kZSBzaXplLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFRodSwgMTMgTWFyIDIwMDggMjA6MDA6MDkgLTA0MDAKKworZTJmc3Byb2dzICgxLjQwLjctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIHR1bmUyZnMgbm8gbG9uZ2VyIHdpbGwgcmVtb3ZlIHRoZSBzcGFyc2Vfc3VwZXIgZmVhdHVyZSwgYXMgaXQgaXMgZGFuZ2Vyb3VzCisgICogVXBkYXRlL2NsYXJpZmllZCB2YXJpb3VzIG1hbiBwYWdlcworICAqIEZpeCBidWcgd2hlcmUgbGFyZ2Ugbm9kZXMgd2VyZSBub3QgZ2V0dGluZyBmdWxseSBjb3BpZWQgd2hlbgorICAgICAgc2hyaW5raW5nIGEgZmlsZXlzdGVtIHVzaW5nIHJlc2l6ZTJmcy4KKyAgKiBBbGxvdyBta2UyZnMgYW5kIHR1bmUyZnMgdG8gbWFuaXB1bGF0ZSB0aGUgbGFyZ2VfZmlsZSBmZWF0dXJlIGZsYWcKKyAgKiBTdXBwcmVzcyBmc2NrJ3Mgd2FybmluZyBtZXNzYWdlIGFib3V0IGFuIG9sZC1zdHlsZSBmc3RhYiBpZiB0aGUKKyAgICAgIGZzdGFiIGZpbGUgaXMgZW1wdHkuICAoQ2xvc2VzOiAjNDY4MTc2KQorICAqIEUyZnNjayB3aWxsIG5vIGxvbmdlciBjbGVhciB0aGUgbGFyZ2VfZmlsZXMgZmVhdHVyZSBmbGFnCisgICAgICBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgbGFyZ2UgZmlsZXMgaW4gdGhlIHN5c3RlbS4KKyAgKiBGaXggYmxraWQgY29kZSB0byBhdm9pZCBzZWdmYXVsdGluZyB3aGVuIGEgZGV2aWNlIG1hcHBlciB2b2x1bWUKKyAgICAgIGRpc2FwcGVhcnMgb3V0IGZyb20gdW5kZXIgaXQuCisgICogRW5oYW5jZSBlMmZzY2sncyByZXBvcnRpbmcgb2YgdW5zdXBwb3J0ZWQgZmlsZXN5c3RlbSBmZWF0dXJlcworICAqIEZpeCBkdW1wZTJmcyBjb21tYW5kIHN5bnRheCBmb3IgZXhwbGljaXQgc3VwZXJibG9jay9ibG9ja3NpemUgcGFyYW1ldGVycworICAqIFRlYWNoIHR1bmUyZnMgdG8gY2xlYXIgdGhlIHJlc2l6ZV9pbm9kZSBmZWF0dXJlIGZsYWcKKyAgKiBGaXggbGlidXVpZDEgcG9zdGluc3RhbGwgc2NyaXB0IHRvIGV4cGxpY2l0bHkgcGFzcyAxMDAgdG8gVUlEX01JTgorICAgICAgYW5kIEdJRF9NSU4sIHRvIG1ha2UgaXQgY2xlYXIgd2UgYXJlIG5vdCB0cnlpbmcgdG8gYWxsb2NhdGUgYW4KKyAgICAgIHVpZC9naWQgaW4gdGhlIGdsb2JhbGx5IHJlc2VydmVkIHJhbmdlLiAgKENsb3NlczogIzQ2NjkyOSkKKyAgKiBGaXggbWVtb3J5IGxlYWsgaW4gZXh0MmZzX2FsbG9jX2Jsb2NrKCkKKyAgKiBUZWFjaCBibGtpZCB0byByZWNvZ25pemUgTFZNMiBwaHlzaWNhbCB2b2x1bWVzCisgICogQWRkIHN1cHBvcnQgdG8gZHVtcGUyZnMsIG1rZTJmcywgYW5kIHR1bmUyZnMgZm9yIHNwZWNpZnlpbmcgYW5kCisgICAgICBwcmludGluZyB0aGUgUkFJRCBzdHJpZGUgYW5kIHN0cmlwZSB3aWR0aC4KKyAgKiBBZGQgc3VwcG9ydCBmb3IgbmV3IHN1cGVyYmxvY2sgZmllbGRzIHRvIGRlYnVnZnMncyBzZXRfc3VwZXJfdmFsdWUgY29tbWFuZAorICAqIFRlYWNoIGRlYnVnZnMgdG8gcHJpbnQgIm1vc3RseS1wcmludGFibGUiIHhhdHRyIHN0cmluZ3MsIHN1Y2ggYXMgaXMKKyAgICAgIHVzZWQgYnkgU0VMaW51eC4KKyAgKiBBZGQgc3VwcG9ydCBpbiBmc2NrIHRvIGlnbm9yZSBtb3VudGVkIGZpbGVzeXN0ZW1zIHdoZW4gZ2l2ZW4gdGhlIC1NIG9wdGlvbgorICAqIEZpeCB1dWlkZCBzbyBpdCBjcmVhdGVzIHRoZSBwaWQgZmlsZSB3aXRoIHRoZSBjb3JyZWN0IHBpZCBudW1iZXIKKyAgKiBVcGRhdGUgQ3plY2gsIER1dGNoLCBQb2xpc2gsIFN3ZWVkaXNoLCBhbmQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMKKyAgICAgIGZyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAyOCBGZWIgMjAwOCAyMjoyNzozOSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDAuNi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogQWRkIHN1cHBvcnQgZm9yIHJldHVybmluZyBsYWJlbHMgZm9yIFVERiBmaWxlc3lzdGVtcyBpbiB0aGUgYmxraWQKKyAgICAgIGxpYnJhcnkuCisgICogRml4IGJ1ZyBpbiB0aGUgYmxraWQgbGlicmFyeSB3aGVyZSBjYWNoZWQgZmlsZXN5c3RlbXMgd2FzIG5vdCBiZWluZworICAgICAgZmx1c2hlZCB3aGVuIG9wZW5pbmcgVVNCIGRldmljZXMgcmV0dXJuZWQgdGhlIGVycm9yIEVOT01FRElVTS4KKyAgICAgIChDbG9zZXM6ICM0NjM3ODcpCisgICogQWRkIGxvZ2ljIHRvIHRoZSBibGtpZCBsaWJyYXJ5IHRvIGF1dG9tYXRpY2FsbHkgY2hvb3NlIHdoZXRoZXIgYQorICAgICAgZmlsZXN5c3RlbSBzaG91bGQgYmUgbW91bnRlZCBhcyBleHQ0IG9yIGV4dDRkZXYsIGFzIGFwcHJvcHJpYXRlLgorICAqIEFsbG93IHR1bmUyZnMgdG8gc2V0IGFuZCBjbGVhciB0aGUgdGVzdF9mcyBmbGFnIG9uIGV4dDQgZmlsZXN5c3RlbXMuCisgICogRG9jdW1lbnQgdGhlIEJMS0lEX0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gdGhlIGxpYmJsa2lkIG1hbiBwYWdlCisgICogVXBkYXRlIFZpZXRuYW1lc2UgYW5kIEN6ZWNoIHRyYW5zbGF0aW9ucyBmcm9tIHRoZSB0cmFuc2xhdGlvbiBwcm9qZWN0CisgICogRml4IGRlcGVuZGVuY3kgcHJvYmxlbSBjYXVzZWQgYnkgZHBrZyAxLjE0LjE2IChDbG9zZXM6ICM0MzYwNTgpCisgICogVXNlIHRocmVhZCBsb2NhbCBzdG9yYWdlIHRvIGZpeCBhIHRoZW9yZXRpY2FsIHJhY2UgY29uZGl0aW9uIGlmIHR3bworICAgICAgdGhyZWFkcyB0cnkgdG8gZm9ybWF0IGFuIHVua25vd24gZXJyb3IgY29kZSBhdCB0aGUgc2FtZSB0aW1lIGluCisgICAgICB0aGUgY29tX2VyciBsaWJyYXJ5LgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMTAgRmViIDIwMDggMDA6MDY6MDIgLTA1MDAKKworZTJmc3Byb2dzICgxLjQwLjUtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXggZGViaWFuL2NvbnRyb2wgYW5kIGRlYmlhbi9ydWxlcyBzbyB0aGF0IHRoZXkgd29yayBjb3JyZWN0bHkKKyAgICBhZnRlciBhIGNoYW5nZSBpbiBkcGtnLWdlbmNvbnRyb2wncyBiZWhhdmlvciBhZnRlciB2ZXJzaW9uIDEuMTQuMTYKKyAgICBvZiBkcGtnLiAgVGhpcyBmaXhlcyBiYWQgdmVyc2lvbiBkZXBlbmRlbmNpZXMgZm9yIGNvbWVyci1kZXYsCisgICAgdXVpZC1kZXYgYW5kIHNzLWRldi4gVGhhbmtzIHRvIERvbiBBcm1zdHJvbmcgZm9yIHRoZSBleHBsYW5hdGlvbiBhbmQKKyAgICBNYXJnYXJpdHkgTWFudGVyb2xhIGZvciBhIHByb3Bvc2VkIHBhdGNoLiAoQ2xvc2VzOiAjNDYzMDU4KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMzAgSmFuIDIwMDggMDc6MTc6MjcgLTA1MDAKKworZTJmc3Byb2dzICgxLjQwLjUtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZS4KKyAgKiBNa2UyZnMgd2lsbCBub3cgY3JlYXRlIG5ldyBmaWxlc3lzdGVtcyB3aXRoIDI1NiBieXRlIGlub2RlcyBhbmQgdGhlCisgICAgICBleHRfYXR0ciBmZWF0dXJlIGZsYWcgYnkgZGVmYXVsdC4gIFRoaXMgYWxsb3dzIGZvciBtdWNoIGJldHRlcgorICAgICAgZnV0dXJlIGNvbXBhdGliaXR5IHdpdGggZXh0NCBhbmQgc3BlZWRzIHVwIGV4dGVuZGVkIGF0dHJpYnV0ZXMKKyAgICAgIGV2ZW4gb24gZXh0MyBmaWxlc3lzdGVtcy4KKyAgKiBUZWFjaCBta2UyZnMgYW5kIHR1bmUyZnMgdG8gc2V0IGEgInRlc3RfZnMiIGZsYWcsIHdoaWNoIGluZGljYXRlcworICAgICAgdGhhdCBpdCBpcyBvayB0byB1c2UgdGhlIGZpbGVzeXN0ZW0gb24gaW4tZGV2ZWxvcG1lbnQga2VybmVsCisgICAgICBjb2RlIChpLmUuLCBleHQ0ZGV2KQorICAqIEUyZnNjayBub3cgb3B0aW1pemVzIG5vbi1odHJlZSBkaXJlY3RvcmllcyBieSBzb3J0aW5nIHRoZW0gYnkgaW5vZGUKKyAgICAgIG51bWJlci4KKyAgKiBBZGQgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIEhGUysgYW5kIGV4dDQvZXh0NGRldiBmaWxlc3lzdGVtcyBpbiBibGtpZAorICAqIEZpeCBibGtpZCdzIG50ZnMgVVVJRCBoYW5kbGluZyBzbyBpdCBpcyBjb21wYXRpYmxlIHdpdGggdm9sX2lkCisgICogQXZvaWQgYSBmbG9hdGluZyBwb2ludCBleGNlcHRpb24gd2hlbiBibGtpZCB0cmllcyB0byBwcm9iZSBhIGNvcnJwdAorICAgICAgcmVpc2VyZnMgZmlsZXN5c3RlbS4KKyAgKiBGaXggcG90ZW50aWFsIG92ZXJmbG93IHByb2JsZW0gaW4gZTJpbWFnZSBpZiB0aGUgZGV2aWNlIG5hbWUgaXMKKyAgICAgIHRvbyBsb25nLgorICAqIENhdXNlIGUyaW1hZ2UgdG8gZXhpdCBpbW1lZGlhdGVseSB3aXRoIGFuIGVycm9yIG1lc3NhZ2Ugb24gYSBkaXNrCisgICAgICBmdWxsIHNpdHVhdGlvbi4KKyAgKiBGaXggYSBtaW5vciB0eXBvcyBpbiB0aGUgcmVzaXplMmZzIGFuZCB1dWlkZCBtYW5wYWdlcy4KKyAgKiBFMmZzY2sgd2lsbCBubyBsb25nZXIgYmFja3VwIHN1cGVyYmxvY2tzIHdoZW4gdGhlIGtlcm5lbCBtYWtlcworICAgICAgY2VydGFpbiAic2FmZSIgZmVhdHVyZSBzZXQgY2hhbmdlcyBiZWhpbmQgdGhlIHVzZXIncyBiYWNrLgorICAqIEZpeCBkZWJ1Z2ZzJ3MgbHNkZWwgY29tbWFuZCBzbyBpdCB3b3JrcyBvbiBsYXJnZSBmaWxlcworICAqIEFsbG93IGEgdXNlciB0byB1bmRlbGV0ZSBhbiBpbm9kZSB3aXRoIGxpbmtpbmcgdG8gYSBkZXN0aW5hdGlvbgorICAgICAgZGlyZWN0b3J5LgorICAqIFVwZGF0ZSBTd2VkaXNoIHRyYW5zbGF0aW9uIGZpbGUgZnJvbSB0aGUgVHJhbnNsYXRpb24gUHJvamVjdAorICAqIFRoZSBsaWJ1dWlkMSBhbmQgdXVpZC1ydW50aW1lIHBhY2thZ2VzIHJlcXVpcmVzIHBhc3N3ZCBwYWNrYWdlLCBzbworICAgICAgZGVjbGFyZSBpdCBhcyBhIGRlcGVuZGVuY3kuICAoQ2xvc2VzOiAjNDU5NDAzKQorICAqIEZpeCBhIEZUQkZTIHByb2JsZW0gb24geDg2XzY0IGNhdXNlZCBieSB0aGUgZmFjdCB0aGF0IGRpZXRsaWJjCisgICAgICBkb2Vzbid0IHByb3ZpZGUgbGxzZWVrIG9uIHRoZSB4ODZfNjQuICAoQ2xvc2VzOiAjNDU5NjE0KQorICAqIERvbid0IHVzZSBkaWV0bGliYyBvbiBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IGl0IChDbG9zZXM6ICM0NTk0NzUpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAyNyBKYW4gMjAwOCAxNjo1NzozNCAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDAuNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1ha2Ugc3VyZSB0aGF0IHByb2dyYW1zIGxpa2UgdHVuZTJmcywgd2hlbiBtb2RpZnlpbmcgYSBtb3VudGVkCisgICAgICBmaWxlc3lzdGVtIGRvIG5vdCB3cml0ZSB0aGUgYmFja3VwIHN1cGVyYmxvY2tzIHdpdGggdGhlCisgICAgICBORUVEU19SRUNPVkVSWSBmbGFnLCB0byBhdm9pZCBlMmZzY2sgZnJvbSBuZWVkbGVzc2x5IGZvcmNpbmcgYQorICAgICAgZnVsbCBmc2NrIGJlY2F1c2UgaXQgdGhpbmtzIHRoZSBmZWF0dXJlIGZsYWdzIG5lZWQgdG8gYmUgYmFja2VkIHVwCisgICAgICBmcm9tIHRoZSBtYXN0ZXIgdG8gdGhlIGJhY2t1cCBzdXBlcmJsb2Nrcy4gIChDbG9zZXM6ICM0NTQ5MjYpCisgICogSW1wcm92ZSB0aW1lLWJhc2VkIFVVSUQgZ2VuZXJhdGlvbiB0byBndWFyYW50ZWUgdW5pcXVlbmVzcyBldmVuIHdoZW4KKyAgICAgIFVVSUQncyBhcmUgYmVpbmcgZ2VuZXJhdGVkIGF0IHZlcnkgaGlnaCByYXRlcyBvbiBTTVAgc3lzdGVtcy4gIFRvCisgICAgICBkbyB0aGlzIHdlIHVzZSBhbiBvcHRpb25hbCBzZXR1aWQgaGVscGVyIGRhZW1vbiAodXVpZGQpIHdoaWNoIGlzCisgICAgICBzdGFydGVkIGJ5IGxpYnV1aWQgd2hlbiBpdCBpcyBuZWVkZWQuICBUaGUgdXVpZGQgZGFlbW9uIGlzCisgICAgICBwYWNrYWdlZCBpbiB0aGUgKG5ldykgdXVpZC1ydW50aW1lIHBhY2thZ2UsIHdoaWNoIG5vdyBhbHNvIGluY2x1ZGVzCisgICAgICB0aGUgdXVpZGdlbiBwcm9ncmFtICh3aGljaCBoYWQgYmVlbiBwcmV2aW91c2x5IGJlZW4gaW5jbHVkZWQgYXMKKyAgICAgIHBhcnQgb2YgdGhlIGUyZnNwcm9ncyBwYWNrYWdlKS4KKyAgKiBGaXggZnNjayB0byBvbmx5IHRyZWF0ICcjJyBjaGFyYWN0ZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgL2V0Yy9mc3RhYgorICAgICAgbGluZXMgYXMgc3RhcnRpbmcgYSBjb21tZW50LiAgVGhpcyBhdm9pZHMgc3B1cmlvdXMgd2FybmluZ3MgcHJpbnRlZAorICAgICAgZm9yIGZpbGVzeXN0ZW1zIHN1Y2ggYXMgZnVzZSB0aGF0IG9mdGVuIHVzZSAnIycgYXMgcGFydCBvZiB0aGUKKyAgICAgIGZpbGVzeXN0ZW0gc3BlY2lmaWVyIChpLmUuLCB3ZGZzI2h0dHBzOi8vZGF2Lmhvc3Rlci5jb20vZm9vKS4KKyAgKiBFbmhhbmNlIHRoZSBibGtpZCBwcm9ncmFtIHRvIHByZXR0eS1wcmludCBjb250cm9sIGFuZCBtZXRhCisgICAgICBjaGFyYWN0ZXJzIHRvIGF2b2lkIGdhcmJhZ2UgZmlsZXN5c3RlbSBsYWJlbHMgZnJvbSBzY3Jld2luZyB1cCB0aGUKKyAgICAgIHVzZXIncyB0ZXJtaW5hbAorICAqIEZpeCBwb3RlbnRpYWwgaW50ZWdlciBvdmVyZmxvd3MgcGFzc2VkIHRvIG1hbGxvYygpIGluIHJlc2l6ZTJmcworICAqIFVwZGF0ZSBEdXRjaCwgUG9saXNoLCBhbmQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbnMgZnJvbSB0aGUKKyAgICAgIFRyYW5zbGF0aW9uIFByb2plY3QuICBSZW1vdmUgdGhlIFJ3YW5kYW4gdHJhbnNsYXRpb24gdXBvbiBhZHZpY2UKKyAgICAgIG9mIHRoZSBUcmFuc2xhdGlvbiBQcm9qZWN0LgorICAqIEZpeCBjcm9zcy1jb21waWxhdGlvbiBzdXBwb3J0IGZvciBub24tTGludXggYXJjaGl0ZWN0dXJlcworICAgICAgICAoQ2xvc2VzOiAjNDUxMTcyLCAjNDM3NzIwKQorICAqIENsYXJpZmllZCBhbmQgaW1wcm92ZWQgbWFuIHBhZ2VzIChDbG9zZXM6ICM0NDQ4ODMsICM0NDE4NzIpCisgICogRml4IHBvdGVudGlhbCBkaXZpZGUgYnkgemVybyBlcnJvciB3aGVuIGxpYmJsa2lkIHRyaWVkIHByb2JpbmcgYW4KKyAgICAgIGludmFsaWQgRkFUIGZpbGVzeXN0ZW0uCisgICogTWFrZSBlcnJvcl9tZXNzYWdlKCkgaW4gbGliY29tX2VyciBEVFJUIHdoZW4gd2hlbiBhIDY0LWJpdCBzaWduLWV4dGVuZGVkCisgICAgICBlcnJvciBjb2RlIGlzIHBhc3NlZCB0byBpdC4KKyAgKiBCdWlsZCB0aGUgZTJmc2NrLXN0YXRpYyBwYWNrYWdlIHNvIHRoYXQgZTJmc2NrLnN0YXRpYyB3aWxsIG5vdCB1c2UKKyAgICAgIFRMUyBhbmQgaGVuY2Ugd2lsbCBydW4gY29ycmVjdGx5IG9uIGJhY2stbGV2ZWwgRGViaWFuIHN5c3RlbXMKKyAgICAgIHVzaW5nIGEgMi40IExpbnV4IGtlcm5lbC4gIChDbG9zZXM6ICM0NTgwMTcpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAzMSBEZWMgMjAwNyAyMjo0MDo0MiAtMDUwMAorCitlMmZzcHJvZ3MgKDEuNDAuMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogbGliZXh0MmZzOiBBZGQgY2hlY2tzIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MgcGFzc2VkIHRvCisgICAgICBtYWxsb2MoKS4gIEZpeGVzIHNlY3VyaXR5IGlzc3VlIHJlbGF0ZWQgdG8gWGVuJ3MgcHlncnViOiBDVkUtMjAwNy01NDk3CisgICogbGlic3M6IEZpeCBwYXJhbGxlbCBidWlsZCBmYWlsdXJlCisgICogZTJmc3Byb2dzOiBmaXggYmxraWQgd2hvbGUtZGlzayBzY2FubmluZyBoZXVyaXN0aWNzCisgICogbGliZXh0MmZzOiBGaXggYSBjb3JuZXIgY2FzZSBidWcgaW4gZXh0MmZzX3VubGluaworICAqIGZpeCBjaGVja19tbnRlbnRfZmlsZSgpIHRvIHBhc3MgbW9kZSBmb3Igb3BlbihPX0NSRUFUKQorICAqIEZpeCBlcnJvcnMgaW4gdGVzdF9zcy5jIHNvIGl0IGNhbiBiZSBhbiBleGFtcGxlIGFwcGxpY2F0aW9uIGFuZCB0ZXN0IGNhc2UKKyAgKiBlMmltYWdlIGluIHJhdy1tb2RlIGFwcGVuZHMgYW4gZXh0cmEgYnl0ZSB0byBpbWFnZS1maWxlCisgICogRml4IHR5cG8gaW4gdGhlIHN1bW1hcnkgc2VjdGlvbiBvZiB0aGUgYmxraWQgbWFuIHBhZ2UKKyAgKiBta2UyZnM6IENoYW5nZSB1c2FnZSBtZXNzYWdlIHRvIHVzZSAtRSBpbnN0ZWFkIC1SLCB3aGljaCBpcyBkZXByZWNhdGVkCisgICogbGliYmxraWQ6IHJlY29nbml6ZSBzcXVhc2hmcyBmaWxlc3lzdGVtcyBvbiBCRSBzeXN0ZW1zLgorICAqIGxpYmJsa2lkOiBkZXRlY3Qgc3F1YXNoZnMKKyAgKiBlMmZzY2s6IGJhY2t1cCBzdXBlcmJsb2NrcyBpZiBrZXkgY29uc3RhbnRzIGhhdmUgY2hhbmdlZAorICAqIGUyZnNjazogdXBkYXRlIHRoZSBiYWNrdXAgc3VwZXJibG9ja3MgaWYgdGhlIGZlYXR1cmUgYml0bWFza3MgYXJlIGNoYW5nZWQKKyAgKiBleHQyZnNfZGJsaXN0X2Rpcl9pdGVyYXRlOiBGaXggQUJPUlQgcHJvcGFnYXRpb24gbG9naWMKKyAgKiBsaWJibGtpZDogQWRkIG1vcmUgbWFnaWMgbnVtYmVycyB0aGF0IG1pZ2h0IG1lYW4gdGhlcmUgaXMgYSBGQVQgZmlsZXN5c3RlbQorICAqIGUyZnNjazogRG9uJ3QgbWFyayB0aGUgZmlsZXN5c3RlbSBpbnZhbGlkIGJlY2F1c2Ugb2YgdGltZSBlcnJvcnMKKyAgKiBXb3JrIGFyb3VuZCBsYW1lIFVidW50dSBpbml0IHNjcmlwdHMgLyBpbnN0YWxsZXIgYnVncworICAqIGZzY2s6IElnbm9yZSAvZXRjL2ZzdGFiIGVudHJpZXMgZm9yIGJpbmQgbW91bnRzCisgICogZTJmc2NrOiBJZiB0aGUgc3VwZXJibG9jayBpcyBjb3JydXB0LCBhdXRvbWF0aWNhbGx5IHJldHJ5IHdpdGggdGhlIGJhY2t1cCBzYgorICAqIERvbid0IGNyYXNoIGlmIHNfaW5vZGVfc2l6ZSBpcyB6ZXJvCisgICogVXNlIHNzY2FuZiBpbnN0ZWFkIG9mIGF0b2kgd2hlbiBwYXJzaW5nIGUyZnNjayBvcHRpb25zCisgICogQWRkIENhdGFsYW4gdHJhbnNsYXRpb24gYW5kIHVwZGF0ZSBTcGFuaXNoLCBGcmVuY2gsIGFuZCBEdXRjaAorICAgICAgdHJhbnNsYXRpb25zIGZyb20gdGhlIFRyYW5zbGF0aW9uIFByb2plY3QuICAoQ2xvc2VzOiAjNDExNTYyKQorICAqIEZpeCB0eXBvIGFuZCBjbGFyaWZ5IHRoZSB1dWlkZ2VuIG1hbiBwYWdlCisgICogTWFrZSBzdXJlICRwcmVmaXgvZXRjIGlzIGNyZWF0ZWQgYmVmb3JlIGluc3RhbGxpbmcgbWtlMmZzLmNvbmYKKyAgKiBlMmZzY2s6IEFsbG93IGlfc2l6ZSB0byBiZSByb3VuZGVkIHVwIHRvIHRoZSBzaXplIG9mIGEgVk0gcGFnZQorICAqIEZpeCBhIGJ1ZyBpbiBleHQyZnNfaW5pdGlhbGl6ZSgpIHdoaWNoIGNhdXNlcyBta2UyZnMgdG8gZmFpbCB3aGlsZQorICAgICAgIGFsbG9jYXRpbmcgaW5vZGUgdGFibGVzIGZvciBzb21lIHJlbGF0aXZlbHkgcmFyZSBvZGQgZGlzayBzaXplcy4KKyAgKiBGaXggYmlnLWVuZGlhbiBieXRlLXN3YXBwaW5nIGJ1ZyBpbiBleHQyZnNfc3dhcF9pbm9kZV9mdWxsKCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBXZWQsIDA1IERlYyAyMDA3IDIwOjA0OjI4IC0wNTAwCisKK2UyZnNwcm9ncyAoMS40MC4yLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBlMmZzY2s6IEZpeCBzYWx2YWdlX2RpcmVjdG9yeSB3aGVuIHRoZSBsYXN0IGVudHJ5J3MgcmVjX2xlbiBpcyB0b28gYmlnCisgICogVXBkYXRlIFR1cmtpc2gsIFBvbGlzaCwgRHV0Y2gsIGFuZCBWaWV0bmFtZXNlIFBPIGZpbGVzIGZyb20gdGhlCisgICAgICBUcmFuc2xhdGlvbiBQcm9qZWN0CisgICogRml4IGEgYnVnIHdoaWNoIHdvdWxkIGNhdXNlIGUyZnNjayBzZWdmYXVsdCBvbiB2ZXJ5IGJhZGx5IGRhbWFnZWQKKyAgICAgIGZpbGVzeXN0ZW1zCisgICogVXBkYXRlIHR1bmUyZnMgbWFuIHBhZ2UgdG8gaW5jbHVkZSBtb3JlIGRpc2N1c3Npb24gb2YgcmVzZXJ2ZWQKKyAgICAgIGJsb2NrcyAoQWRkcmVzc2VzIFVidW50dSBMYXVuY2hwYWQgYnVnICM0NzgxNykKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDEyIEp1bCAyMDA3IDIyOjE4OjUxIC0wNDAwCisKK2UyZnNwcm9ncyAoMS40MC4xLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBDbGFyaWZ5IG1rX2NtZHMnIGVycm9yIHJlcG9ydGluZworICAqIGUyZnNjazogRGV0ZWN0IHJlY3Vyc2l2ZSBsb29wcyBpbiBALWV4cGFuc2lvbnMKKyAgKiBDb21waWxlIHRoZSBkZWZhdWx0IG1rZTJmcy5jb25mIGludG8gbWtlMmZzIHByb2dyYW0KKyAgKiBGaXggYm9ndXMgc3RyaXAgcGVybWlzc2lvbiBlcnJvcnMgd2hlbiBidWlsZGluZyB1bmRlciBEZWJpYW4KKyAgKiBVcGRhdGUgVmlldG5hbWVzZSwgRnJlbmNoLCBhbmQgRHV0Y2ggUE8gZmlsZXMgZnJvbSB0aGUgVHJhbnNsYXRpb24gUHJvamVjdAorICAqIEZpeCBidWcgd2hpY2ggY291bGQgY2F1c2UgbGliYmxraWQgdG8gbG9vcCBmb3JldmVyIChDbG9zZXM6ICM0MzIwNTIpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAgOCBKdWwgMjAwNyAyMDoyNTowOCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuNDAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZQorICAqIFJlbW92ZSBSRkMtNDEyMiBsb2dpYyBmcm9tIERlYmlhbiBidWlsZCBydWxlcyAoQ2xvc2VzOiAjNDA3MTA3KQorICAqIEZpeCBjb21fZXJyLnRleGluZm8gc28gdGhhdCB0aGUgaW5zdGFsbC1pbmZvIGNvbW1hbmQgd2lsbCByZW1vdmUKKyAgICAgIHRoZSBjb21fZXJyIGluZm8gZmlsZSBmcm9tIHRoZSAvdXNyL3NoYXJlL2luZm8vZGlyIGZpbGUgd2hlbiB0aGUKKyAgICAgIGNvbWVyci1kZXYgcGFja2FnZSBpcyByZW1vdmVkIGFuZCBwdXJnZWQgKENsb3NlczogIzQwMTcxMSkKKyAgKiBGaXggZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gYmxraWQncyBOVEZTIHByb3ZpbmcgbG9naWMKKyAgKiBBZGQgbmV3IGJsa2lkIC1nIG9wdGlvbiB3aGljaCBjYXVzZXMgdGhlIGJsa2lkIGNhY2hlIHRvIGJlIGdhcmJhZ2UKKyAgICAgIGNvbGxlY3RlZAorICAqIGxpYmJsa2lkOiBGaXggYnVnIHdoaWNoIGNvdWxkIGN1YXNlIGJpZF90eXBlIHRvIGJlIGNvcnJ1cHRlZAorICAqIG1rZTJmczogQWRkIHNhbnR5IGNoZWNrIHRvIG1ha2Ugc3VyZSBpbm9kZV9zaXplICogbnVtX2lub2RlcyBpc24ndCB0b28gYmlnCisgICogRml4IGFkZGl0aW9uYWwgQ292ZXJpdHkgYnVncyBpbiBta2UyZnMgYW5kIGUyZnNjaworICAqIEltcHJvdmUgc2FuaXR5IGNoZWNrIGluIGUyZnNjaydzIGFsZ29yaXRobSBmb3IgZmluZGluZyBhIGJhY2t1cCBzdXBlcmJsb2NrCisgICogRml4IGUyZnNjayBnZXRfc2l6ZSBsb2dpYyBzbyB0aGF0IGl0IHdpbGwgd29yayB3aXRoIHRoZSBMaW51eCBmbG9wcHkKKyAgICAgIGRyaXZlciAoQ2xvc2VzOiAjNDEwNTY5KQorICAqIEZpeCBlcnJvciBjaGVja2luZyBvZiBiYWRibG9jaydzIGxhc3QtYmxvY2sgYW5kIHN0YXJ0LWJsb2NrIGFyZ3VtZW50cworICAgICAgKENsb3NlczogIzQxNjQ3NykKKyAgKiBlMmZzY2s6IGF2b2lkIHdyaXRpbmcgb3ZlcndyaXRpbmcgdGhlIGJhY2t1cCBzdXBlcmJsb2NrcyB1bnRpbCB0aGUKKyAgICAgIG1hc3RlciBzdXBlcmJsb2NrIGlzIGNvbmZpcm1lZCB0byBiZSBzYW5lCisgICogTWFrZSB0aGUgYmxraWQgbGlicmFyeSBtb3JlIHBhcmFub2lkIGFib3V0IGNvbmNsdWRpbmcgYSBwYXJ0aXRpb24KKyAgICAgIGNvbnRhaW5zIGEgTlRGUyBmaWxlc3lzdGVtLiAgKEFkZHJlc3NlcyBMYXVuY2hwYWQgQnVnOiAjMTEwMTM4KQorICAqIEVuaGFuY2UgZTJmc2NrIHNvIGl0IHdpbGwgcmVjcmVhdGUgdGhlIGV4dDMgam91cm5hbCBpZiB0aGUgb3JpZ2luYWwKKyAgICAgIGpvdXJuYWwgaW5vZGUgd2FzIGNsZWFyZWQgdG8gZHVlIGJlaW5nIGNvcnJ1cHQKKyAgKiBGaXggZTJmc2NrIHNvIHRoYXQgaWYgdGhlIGJhY2t1cCBqb3VybmFsIGluZm9ybWF0aW9uIGlzIHVzZWQsIHRoYXQKKyAgICAgIHRoaXMgaXMgd3JpdHRlbiBvdXQgdG8gdGhlIGpvdXJuYWwgaW5vZGUKKyAgKiBNYWtlIGUyZnNjayBjaGVjayBhbGwgb2YgdGhlIGJsb2NrcyBpbiB0aGUgam91cm5hbCBpbm9kZSBmb3IgdmFsaWRpdHkKKyAgKiBibGtpZDogQWRkIHN1cHBvcnQgZm9yIGRldGVjdGluZyBMVUtTIGVuY3J5cHRlZCBwYXJ0aXRpb25zCisgICogZTJmc2NrOiBhZGRlZCBzYW5pdHkgY2hlY2sgZm9yIHhhdHRyIHZhbGlkYXRpb24KKyAgKiBGaXggYnl0ZS1zd2FwcGluZyBidWcgZm9yIGZpbGVzeXN0ZW1zIHdpdGggbGFyZ2UgaW5vZGVzCisgICogQ2xhcmlmeSB0aGUgY29weXJpZ2h0IGxpY2Vuc2VzIHVzZWQgYnkgdGhlIHZhcmlvdXMgbGlicmFyaWVzIGluIENPUFlJTkcKKyAgKiBSZW1vdmUgUkZDLTQxMjIgZnJvbSB1cHN0cmVhbSAoQ2xvc2VzOiAjNDA3MTA3KQorICAqIEZpeCBpbmZvLWRpciBsaW5lIHdoaWNoIHByZXZlbnRlZCBpbnN0YWxsLWluZm8gZnJvbSByZW1vdmluZworICAgICAgY29tX2VyciBlbnRyeSBmcm9tIGZyb20gL3Vzci9zaGFyZS9pbmZvL2RpciB3aGVuIHRoZSBjb21lcnItZGV2CisgICAgICBwYWNrYWdlIGlzIHB1cmdlZCAoQ2xvc2VzOiAjNDAxNzExKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMjkgSnVuIDIwMDcgMjI6NDA6MjcgLTA0MDAKKworZTJmc3Byb2dzICgxLjM5KzEuNDAtV0lQLTIwMDcuMDQuMDcrZGZzZy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFsbG93IHRoZSBqb3VybmFsIHRvIHVwIHRvIDEwLDI0MCwwMDAgYmxvY2tzCisgICogRml4IGJsa2lkIGxpYnJhcnkgdG8gcmVjb2duaXplIE1EIDAuOTAgc3VwZXJibG9jayBvbiBsaXR0bGUgZW5kaWFuCisgICAgICBzeXN0ZW1zCisgICogRml4IGJsa2lkIGxpYnJhcnkgdG8gcmVwb3J0IHRoZSBjb3JyZWN0IFVVSUQgZnJvbSBNRCBzdXBlcmJsb2NrcworICAqIEZpeCBzaWduZWQgdnMuIHVuc2lnbmVkIHByb2JsZW0gaW4gZGVidWdmcycgc2V0Yi90ZXN0Yi9mcmVlYiBjb21tYW5kcworICAqIEVuaGFuY2UgZGVidWdmcydzIGRhdGUgcGFyc2VyIHNvIGl0IGFjY2NlcHRzIGludGVnZXIgdmFsdWVzCisgICogRml4IGUyZnNjaydzIHBhc3MxYyBhY2NvdW50aW5nIHNvIGl0IGRvZXNuJ3QgdGVybWluYXRlIHRvbyBlYXJseQorICAgICAgaWYgYSBmaWxlIHdpdGggbXVsdGlwbHkgY2xhaW1lZCBibG9ja3MgaXMgaGFyZCBsaW5rZWQuIG9yIG5vdCBhdAorICAgICAgYWxsIGlmIHRoZSByb290IGRpcmVjdG9yeSBjb250YWlucyBzaGFyZWQgYmxvY2tzCisgICogRW5oYW5jZSBkZWJ1Z2ZzIHNvIGl0IGNhbiBtb2RpZnkgdGhlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIHVzaW5nCisgICAgICB0aGUgY29tbWFuZCBzZXRfYmxvY2tfZ3JvdXBfZGVzY3JpcHRvcgorICAqIEltcHJvdmUgZTJmc2NrJ3MgcmVwb3J0aW5nIG9mIEkvTyBlcnJvcnMgc28gaXQncyBjbGVhcmVyIHdoYXQgaXQKKyAgICAgIHdhcyB0cnlpbmcgdG8gZG8gd2hlbiBhbiBlcnJvciBoYXBwZW5zCisgICogRml4IGEgYnVnIGluIGhvdyBlMmZzcHJvZ3MgYnl0ZSBzd2FwcyBpbm9kZXMgY29udGFpbmluZyBmYXN0CisgICAgICBzeW1saW5rcyB0aGF0IGhhdmUgZXh0ZW5kZWQgYXR0cmlidXRlcy4KKyAgKiBGaXggcG90ZW50aWFsIGZpbGUgZGVzY3JpcHRvciBsZWFrIGluIGV4dDJmc19nZXRfZGV2aWNlX3NpemUoKQorICAqIEZpeCBtaW5vciB0eXBvIGluIGUyZnNjay5jb25mLjUgbWFuIHBhZ2UKKyAgKiBDbGVhbnVwIHVkZWIgZGVwZW5kZW5jeSAoQ2xvc2VzOiAjNDE5NjA1KQorICAqIFJlYnVpbGRpbmcgd2l0aCBsaWJkZXZtYXBwZXIgMS4wMi4xIChDbG9zZXM6ICM0MjEwMjIgYW5kICM0MjE2NjgpCisgICogQWRkIGRlcGVuZGVuY3kgb24gY29tZXJyLWRldiB0byBzcy1kZXYgKENsb3NlczogIzQwODM1MikKKyAgKiBNYWtlIG1rZTJmcyB1c2Ugc2FuZSBkZWZhdWx0cyB3aGVuIC9ldGMvbWtlMmZzLmNvbmYgZG9lc24ndCBleGlzdAorICAqIEZpeCBta2UyZnMgYW5kIGRlYnVnZnMgdG8gc3VwcG9ydCBsYXJnZSAoPiAxNiBiaXQpIHVpZCdzIGFuZCBnaWQncworICAqIEZpeCBzcGVsbGluZyB0eXBvIGluIGRlYmlhbiBwYWNrYWdlIGRlc2NyaXB0aW9uIGZvciBsaWJibGtpZDEKKyAgICAoQ2xvc2VzOiAjMzk5MTU1KQorICAqIFJlbW92ZSAtV0lQIGxhbmd1YWdlIGZyb20gdGhlIGRlYmlhbiBjb3B5cmlnaHQgZmlsZS4gIChDbG9zZXM6ICM0MTU1NjApCisgICogUmVtb3ZlIGNoZWNrIGluIGUyZnNjayB3aGljaCByZXF1aXJlZCBFQSdzIGluIGlub2RlcyB0byBiZSBzb3J0ZWQKKyAgICAoV2Ugc2hvdWxkIGdldCB0aGlzIGJhY2stcG9ydGVkIHRvIHRoZSBzdGFibGUgYnJhbmNoIHNpbmNlCisgICAgZmlsZXN5c3RlbXMgd2l0aCBsYXJnZSBpbm9kZXMgd2lsbCBoYXZlIEVBJ3MgZXJyb25lb3VzbHkKKyAgICByZW1vdmVkLCB3aGljaCB3aWxsIGZvciBleGFtcGxlIHRvYXN0IGFuIFNFTGludXggc3lzdGVtLikKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sICA2IE1heSAyMDA3IDE5OjQ0OjM1IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zOSsxLjQwLVdJUC0yMDA3LjA0LjA3K2Rmc2ctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGQgbGlicmVhZGxpbmUuc28uNSBzdXBwb3J0IHRvIGxpYnNzLgorICAqIEltcG92ZSBiYWRibG9ja3MgLW4vLXcgZXhjbHVzaXZlIHVzYWdlIG1lc3NhZ2UuCisgICogQWRkIGRlYnVnZ2luZyBjb2RlICh2aWEgdGhlIENPTUVSUl9ERUJVRyBlbnYuIHZhcmlhYmxlKSB0byB0aGUKKyAgICAgIGNvbV9lcnIgbGlicmFyeQorICAqIEZpeCBkdW1wX3VudXNlZCBzZWdmYXVsdCBpbiBkZWJ1Z2ZzIHdoZW4gYSBmaWxlc3lzdGVtIGlzIG5vdCBvcGVuCisgICogQWRkIHZlcnNpb25lZCBkZXBlbmRlbmN5IGluIERlYmlhbidzIHNobGlicyBmb3IgbGliYmxraWQuCisgICAgICAoQ2xvc2VzOiAjNDEzMjA4KQorICAqIEZpeCBtZW1vcnkgbGVhayBpbiBibGtpZCBsaWJyYXJ5LiAgKENsb3NlczogIzQxMzY2MSkKKyAgKiBMZXQgdGhlIGRlYnVnZnMgbGNkIGNvbW1hbmQgd29yayBldmVuIGlmIGEgZmlsZXN5c3RlbSBpcyBub3Qgb3BlbgorICAqIEZpeCBsYXJnZSBudW1iZXIgb2YgbWlzY2VsbGFuZW91cyBDb3Zlcml5IGJ1Z3MuICAoTm9uZSB3ZXJlCisgICAgICBzZWN1cml0eS1zZWN1cml0eSkuCisgICogRml4IGUyZnNjayB0byBjbGVhciBpX3NpemUgZm9yIHNwZWNpYWwgZGV2aWNlcyB3aXRoIGEgYm9ndXMgaV9ibG9ja3MKKyAgICAgIGZpZWxkIG9uIHRoZSBmaXJzdCBwYXNzLgorICAqIEZpeCBlMmZzY2sgdG8gc2V0IHRoZSBmaWxlIHR5cGUgb2YgdGhlICcuLicgZW50cnkgd2hlbiBjb25uZWN0aW5nCisgICAgICBhIGRpcmVjdG9yeSB0byBsb3N0K2ZvdW5kLgorICAqIEVuaGFuY2UgZTJmc2NrIHRvIHJlY292ZXIgZGlyZWN0b3JpZXMgd2hvc2UgbW9kZXMgZmllbGQgd2VyZQorICAgICAgY29ycnVwdGVkIHRvIGxvb2sgbGlrZSBzcGVjaWFsIGZpbGVzLgorICAqIEFsbG93IGRlYnVnZnMgdG8gZHVtcCA+IDJHQiBmaWxlcy4gIChDbG9zZXM6ICM0MTI2MTQpCisgICogTWlzYy4gbWFuIHBhZ2UgY2xlYW51cHMuICAoQ2xvc2VzOiAjMzc5Njk1KQorICAqIEZpeCByZXNpemUyZnMgcGFyc2luZyBvZiBzaXplIHBhcmFtZXRlciAoQ2xvc2VzOiAjNDA4Mjk4KQorICAqIEZpeCBpbmZpbml0ZSBsb29wIGluIGUyZnNjayBvbiByZWFsbHkgYmlnIGZpbGVzeXN0ZW1zIChDbG9zZXM6ICM0MTE4MzgpCisgICogRml4IG1lbW9yeSBsZWFrIGluIGV4dDJmc193cml0ZV9uZXdfaW5vZGUoKQorICAqIEFkZCBzdXBwb3J0IGZvciB1c2luZyBhIHNjcmF0Y2ggZmlsZXMgZGlyZWN0b3J5IHRvIHJlZHVjZSBlMmZzY2sncworICAgICAgbWVtb3J5IHV0aWxpemF0aW9uIG9uIHJlYWxseSBiaWcgZmlsZXN5c3RlbXMuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU2F0LCAgNyBBcHIgMjAwNyAxMDozODo0MCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzkrMS40MC1XSVAtMjAwNi4xMS4xNCtkZnNnLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IHNwdXJpb3VzIGVycm9yIGZyb20gZTJmc2NrIC1jIGFuZCBta2UyZnMgLWMgY2F1c2VkIGJ5IHRoZSBmaXgKKyAgICB0byAjMzg2NDc1LgorICAqIEFkZCBkaXJoYXNoIHNpZ25lZC91bnNpZ25lZCBoaW50IHRvIHN1cGVyYmxvY2suICAoQ2xvc2VzOiAjMzg5NzcyKQorICAqIEFsbG93IHVuaXhfaW8gb2Zmc2V0cyBncmVhdGVyIHRoYW4gMiBnaWdhYnl0ZXMKKyAgKiBNYWtlIHN1cmUgbWtfY21kcyBhbmQgY29tcGlsZV9ldCB3b3JrIGV2ZW4gaW4gc3RyYW5nZSBsb2NhbGVzCisgICogRml4IHR5cGUtcHVubmluZyBidWcgd2hpY2ggY2F1c2VkIGR1bXBlMmZzIHRvIGNyYXNoIG9uIHRoZSBBcm0gcGxhdGZvcm0KKyAgICAoQ2xvc2VzOiAjMzk3MDQ0KQorICAqIEFkZCBleHBsYW5hdG9yeSBtZXNzYWdlIHRvIGJhZGJsb2NrcyB0aGF0IC1uIGFuZCAtdyBhcmUgbXV0dWFsbHkKKyAgICBleGNsdXNpdmUuICAoQ2xvc2VzOiAjMzcxODY5KQorICAqIE5ldyArZGZzZyBzb3VyY2UgdGFyYmFsbCB0aGF0IGhhcyB1c2VmdWwgZG9jdW1lbnRhdGlvbiBSRUFMTFkKKyAgICByZW1vdmVkIHRvIHNhdGlzZnkgdGhlIERGU0cgTGljZW5zZSBOYXppJ3MuICAoQ2xvc2VzOiAjMzkwNjY0KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgMTQgTm92IDIwMDYgMjM6NDU6MzQgLTA1MDAKKworZTJmc3Byb2dzICgxLjM5KzEuNDAtV0lQLTIwMDYuMTAuMDIrZGZzZy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFkZCBmYWlsc2FmZXMgYWdhaW5zdCBkdXBsaWNhdGUgVVVJRCBnZW5lcmF0aW9uIGNhdXNlZCBieSB0aHJlYWRzCisgICogRml4IHBvdGVudGlhbCBlMmZzY2sgLW4gY3Jhc2ggY2F1c2VkIGJ5IGNvcnJ1cHQgaHRyZWVzCisgICogUmVvcmRlciB0aGUgbGlicmFyeSBsaW5lIGZvciBzdGF0aWMgbGlua2luZywgdG8gZml4IHVuZGVmaW5lZAorICAgIHJlZmVyZW5jZXMgdG8gcHRocmVhZHMgb24gYW1kNjQuICAoQ2xvc2VzOiAjMzkzNjgwKQorICAqIEZpeCBta2UyZnMncyBlcnJvciBjaGVja2luZyB3aGVuIGNyZWF0aW5nIHJldmlzaW9uIDAgZmlsZXN5c3RlbXMuCisgICAgKENsb3NlczogIzM5MjEwNykKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDIyIE9jdCAyMDA2IDAwOjE5OjQ0IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zOSsxLjQwLVdJUC0yMDA2LjEwLjAyK2Rmc2ctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgK2Rmc2cgc291cmNlIHRhcmJhbGwgdGhhdCBoYXMgdXNlZnVsIGRvY3VtZW50YXRpb24gcmVtb3ZlZCB0bworICAgIHNhdGlzZnkgdGhlIERGU0cgTGljZW5zZSBOYXppJ3MuICAoQ2xvc2VzOiAjMzkwNjY0KQorICAqIFJlbW92ZSBkZXBlbmRlbmN5IG9uIGUyZnNwcm9ncyBmcm9tIHRoZSBlMmZzY2stc3RhdGljIHBhY2thZ2UKKyAgICAoQ2xvc2VzOiAjMzgzNTIxKQorICAqIEZpeCBiYWRibG9ja3MgaW50ZXJwcmV0YXRpb24gb2YgaXRzIGZpcnN0IG9wdGlvbmFsIGFyZ3VtZW50IChsYXN0LWJsb2NrKQorICAgIChDbG9zZXM6ICMzODY0NzUpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAgMyBPY3QgMjAwNiAyMzozNjowNSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzkrMS40MC1XSVAtMjAwNi4xMC4wMi0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEJ1aWxkIHVzaW5nIHRoZSBzaWQgdmVyc2lvbiBvZiBsaWJjLCBub3QgZXhwZXJpbWVudGFsIQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgIDIgT2N0IDIwMDYgMjE6NDM6NDQgLTA0MDAKKworZTJmc3Byb2dzICgxLjM5KzEuNDAtV0lQLTIwMDYuMTAuMDItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBQcmV2aW91cyBOTVUgYWNrbm93bGVkZ2VkIChDbG9zZXM6ICMzODg3MTgpCisgICogRml4IGRlYnVnZnMgdG8gcHJpbnQgdW5zaWduZWQgdmFsdWVzIGZvciBFQSdzCisgICogTWlub3IgbWFuIHBhZ2UgZml4ZXMgKENsb3NlczogIzM3MzAwNCwgIzM2OTc2MSkKKyAgKiBBbGxvdyB0aGUgZGVmYXVsdCBpbm9kZSBzaXplIHRvIGJlIHNwZWNpZmllZCBpbiBta2UyZnMuY29uZgorICAqIFJlcXVpcmUgbWtlMmZzIC1GIC1GIGZvciByZWFsbHkgZGFuZ2Vyb3VzIG9wZXJhdGlvbnMKKyAgKiBBZGQgVmlldG5hbWVzZSB0cmFuc2xhdGlvbgorICAqIFVwZGF0ZSBGcmVuY2ggYW5kIER1dGNoIHRyYW5zbGF0aW9ucworICAqIEZpeCBkZWJ1Z2ZzIGNvcmVkdW1wIHdoZW4gbHNkZWwgaXMgcnVuIHdpdGhvdXQgYW4gb3BlbiBmaWxlc3lzdGVtCisgICAgKENsb3NlczogIzM3ODMzNSkKKyAgKiBGaXggc3BlbGxpbmcgZXJyb3IgaW4gZTJmc2NrIG91dHB1dAorICAqIEZpeCBvdmVyZmxvdyBwcm9ibGVtcyB3aGVuIHRoZSBudW1iZXIgb2YgaW5vZGVzIGFuZCBibG9ja3MgaXMKKyAgICBjbG9zZSB0byAyKiozMi0xCisgICogQWRkIEdGUy9HRlMyIHN1cHBvcnQgdG8gdGhlIGJsa2lkIGxpYnJhcnkuCisgICogRml4IGJsa2lkIHN1cHBvcnQgb2YgZW1wdHkgRkFUIGZpbGVzeXN0ZW0gbGFiZWxzCisgICogQXZvaWQgcmVjdXJzaW5nIGZvcmV2ZXIgZHVlIHRvIHN5bWxpbmtzIGluIC9kZXYgYnkgdGhlIGJsa2lkIGxpYnJhcnkKKyAgKiBGaXggYm9ndXMgZXJyb3IgbWVzc2FnZXMgZnJvbSByZXNpemUyZnMgY2F1c2VkIGJ5IHRoZSBmaWxlc3lzdGVtCisgICAgbm90IGNvbnRhaW5pbmcgYSByZXNpemUgaW5vZGUuICAoQ2xvc2VzOiAjMzgwNTQ4KQorICAqIEZpeGVkIGRldmljZS1tYXBwZXIgcHJvYmluZyAoaXQgd2FzIGZhaWxpbmcgZHVlIHRvIGFuIGV4dHJhICcvZGV2JyBiZWluZworICAgIGFkZGVkIHRvIHRoZSBkZXZpY2UgcGF0aG5hbWUpCisgICogTWFrZSBzdXJlIHRoZSBkZWZhdWx0IG1pbmltdW0gc2l6ZSBqb3VybmFsIGlzIGJpZyBlbm91Z2ggdG8gc3VwcG9ydAorICAgIG9uLWxpbmUgcmVzaXppbmcuCisgICogQWRkIGEgdmVyc2lvbmVkIGJ1aWxkLWRlcCBvbiB0ZXhpMmh0bWwgKENsb3NlczogIzM4OTU1NCkKKyAgKiBSZW1vdmUgdXNlZnVsIFVVSUQgc3BlY2lmaWNhdGlvbiB0aGFua3MgdG8gTGljZW5zZSBOYXppJ3MgKENsb3NlczogIzM5MDY2NCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sICAyIE9jdCAyMDA2IDEzOjA0OjI3IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zOS0xLjEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTm9uLW1haW50YWluZXIgdXBsb2FkCisgICogQWRkZWQgLXB0aHJlYWRzIHRvIGRldm1hcHBlciBsaWJyYXJpZXMgKENsb3NlczogIzM4ODcxOCkKKworIC0tIEJlbiBIdXRjaGluZ3MgPGJlbkBkZWNhZGVudC5vcmcudWs+ICBTYXQsIDMwIFNlcCAyMDA2IDEyOjQ5OjQ3ICswMTAwCisKK2UyZnNwcm9ncyAoMS4zOS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogRml4IGRlYnVnZnMncyBkdW1wX3VudXNlZCBjb21tYW5kIHNvIGl0IHdpbGwgbm90IGNvcmUgZHVtcCBvbgorICAgIGZpbGVzeXN0ZW1zIHdpdGggYSA2NGsgYmxvY2tzaXplCisgICogQ2xhcmlmaWVkIGFuZCBpbXByb3ZlZCBtYW4gcGFnZXMsIGluY2x1ZGluZyBzcGVsbGluZyBlcnJvcnMKKyAgICAoQ2xvc2VzOiAjMzY4MzkyLCAjMzY4MzkzLCAjMzY4Mzk0LCAjMzY4MTc5KQorICAqIE5ldyBmaWxlc3lzdGVtcyBhcmUgbm93IGNyZWF0ZWQgd2l0aCBkaXJlY3RvcnkgaW5kZXhpbmcgYW5kCisgICAgb24tbGluZSByZXNpemluZyBlbmFibGVkIGJ5IGRlZmF1bHQKKyAgKiBGaXggcHJldmlvdXNseSBtYW5nbGVkIHdvcmRpbmcgaW4gYW4gb2xkZXIgRGViaWFuIGNoYW5nZWxvZyBlbnRyeQorICAqIEZpeCBkb2MtYmFzZSBwb2ludGVyIHRvIHRoZSB0b3AtbGV2ZWwgaHRtbCBmaWxlIChDbG9zZXM6ICMzNjI1NDQsICMzNjI5NzApCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAyOSBNYXkgMjAwNiAxMTowNzo1MyAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzgrMS4zOS1XSVAtMjAwNi4wNC4wOS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFJlc2l6ZTJmcyBhdXRvbWF0aWNhbGx5IGRldGVjdHMgdGhlIHByZXZpb3VzbHkgdXNlZCBSQUlEIHN0cmlkZQorICAgIHBhcmFtZXRlciBzbyB0aGF0IHJlc2l6ZWQgZmlsZXN5c3RlbXMgY2FuIGJlIG1vcmUgb3B0aW1hbGx5IGxhaWQKKyAgICBvdXQgZm9yIFJBSUQgZmlsZXN5c3RlbXMuCisgICogRml4IG1rZTJmcyAtY2MgYW5kIGUyZnNjayAtY2MgKENsb3NlczogIzM2NjAxNykKKyAgKiBGaXggaW5pdHJkIHNjcmlwdCB0byBmaXggZmFpbHVyZSB3aXRoIDIuNCBrZXJuZWxzIChDbG9zZXM6ICMzNjQ1MTYpCisgICogTWtlMmZzIG5vdyB1c2VzIGFuIGltcHJvdmVkIGxheW91dCBmb3IgUkFJRCBmaWxlc3lzdGVtcyB3aGVuIHRoZQorICAgIHN0cmlkZSBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkLgorICAqIEZpeCB0aGUgZGVidWdmcyBjb21tYW5kcyBodHJlZV9kdW1wLCBkeF9oYXNoLCBhbmQgbGlzdF9kaXIgc28gdGhleQorICAgIHByaW50IGEgdXNhZ2UgbWVzc2FnZSB3aGVuIGFuIGlsbGVnYWwgb3B0aW9uIGNoYXJhY3RlciBpcyBnaXZlbi4KKyAgKiBTcGVlZCB1cCBta2UyZnMgYW5kIGUyZnNjayBieSB3cml0aW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIGluIG9uZSBwYXNzCisgICogRml4IGZpbGVmcmFnIHRvIGJlIDMyLWJpdCBjbGVhbiBieSB1c2luZyB1bnNpZ25lZCBsb25nIGluc3RlYWQgb2YKKyAgICBhIHNpZ25lZCBpbnRlZ2VyIGZvciBibG9jayBudW1iZXJzLgorICAqIEZpeCBhIGJ1ZyBpbiB0aGUgZTJwIGxpYnJhcnkgd2hpY2ggY291bGQgY2F1c2UgZHVtcGUyZnMgdG8KKyAgICAocmFyZWx5KSBmYWlsIHRvIHByaW50IG91dCB0aGUgam91cm5hbCBvciBoYXNoIHNlZWQgVVVJRC4KKyAgKiBGaXggbWVtb3J5IGxlYWsgaW4gZTJmc2NrJ3MgZXJyb3IgcGF0aHMuCisgICogRml4IGNvbWVyci1kZXYncyBkb2MtYmFzZSBwb2ludGVyIHRvIHRoZSB0b3AtbGV2ZWwgaHRtbCBmaWxlCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxNCBNYXkgMjAwNiAxODowOToyMCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzgrMS4zOS1XSVAtMjAwNi4wNC4wOS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFVwZGF0ZSBjb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgdG8gbGF0ZXN0IHZlcnNpb24gKDIwMDYtMDItMjMpIGZyb20gRlNGCisgICogVXBkYXRlIEZyZW5jaCwgRHV0Y2gsIFBvbGlzaCwgU3dlZGlzaCwgYW5kIFR1cmtpc2ggdHJhbnNsYXRpb25zCisgICogRml4IGFzbS90eXBlcy5oIHR5cGUgY29uZmxpY3RzIG9uIEFNRDY0IHRvIGZpeCBGVEJGUyBwcm9ibGVtcy4KKyAgICAgIChDbG9zZXM6ICMzNjA2NjEsICMzNjAzMTcpCisgICogRml4IGJ1ZyB3aGljaCBjYXVzZWQgbWtlMmZzIC1qIHRvIGZhaWwgd2l0aCBhbiBFQlVTWSBlcnJvci4gIChDbG9zZXMKKyAgICAgICMzNjA2NTIpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAgOSBBcHIgMjAwNiAyMzowNDoxNSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzgrMS4zOS1XSVAtMjAwNi4wMy4yOS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFkZGVkIG1pc3NpbmcgYnVpbGQgZGVwZW5kZW5jeSBvbiBsaWJkZXZtYXBwZXItZGV2LiAgKENsb3NlczogIzM2MDA0NikKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUaHUsIDMwIE1hciAyMDA2IDEyOjMzOjMwIC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zOCsxLjM5LVdJUC0yMDA2LjAzLjI5LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQWRkIHVkZWI6IGxpbmVzIHRvIHRoZSBEZWJpYW4ncyBzaGxpYnMgZmlsZXMgKENsb3NlczogIzM1NjI5MykKKyAgKiBFbmhhbmNlIGR1bXBlMmZzIHRvIHByaW50IHRoZSBzaXplIG9mIHRoZSBqb3VybmFsCisgICogRml4IGUyc3Byb2dzIHNvIHRoYXQgaXQgaXMgMzItYml0IGNsZWFuIG9uIHg4NiBwbGF0b3Jtcy4KKyAgKiBGaXggbWtsb3N0K291bmQgc28gdGhhdCBpdCBjcmVhdGVzIGEgZnVsbC1zaXplZCBkaXJlY3Rvcnkgb24gNGsgYW5kCisgICAgbGFyZ2VyIGJsb2NrIHNpemVzLgorICAqIEFkZCBta2UyZnMuY29uZiBjb25pZ3VyYXRpb24gZmlsZSB0byBjb25pZ3VyZSBta2UyZnMncyBkZWZhdWx0cworICAqIEFkZCBkZXZtYXBwZXIgc3VwcG9ydCB0byB0aGUgYmxraWQgbGlicmFyeS4KKyAgKiBFMmZzY2ssIHJlc2l6ZTJmcyBhbmQgbWtlMmZzIHdpbGwgbm93IG9wZW4gdGhlIGZpbGVzeXN0ZW0gZGV2aWNlIGluCisgICAgZXhjbHVzaXZlIG1vZGUKKyAgKiBGaXggZG9jdW1lbnRhdGlvbiBhbmQgbWFuIHBhZ2VzLiAgKENsb3NlczogIzM1MTI2OCwgIzM1Nzk1MSwgIzM0NzI5NSwKKyAgICAjMzE2MDQwKQorICAqIENpeCAibWtlMmZzIC1PIHJlc2l6ZV9pbm9kZSIgZm9yIHZlcnkgbGFyZ2UgZmlsZXN5c3RlbXMgKENsb3NlczogIzM0NjU4MCkKKyAgKiBBZGQgb24tbGluZSByZXNpemluZyBzdXBwb3J0IGludG8gcmVzaXplMmZzCisgICogRml4IGJsa2lkJ3MgaGFuZGxpbmcgb2YgdmVyaWZpY2F0aW9uIHRpbWVvdXRzIHdoZW4gdGhlIHN5c3RlbSBjbG9jayBpcworICAgIGluc2FuZQorICAqIEZpeCBsaWJyYXJ5IE1ha2VmaWxlcyBzbyB0aGV5IHdvcmsgd2l0aCBHTlUgbWFrZSAzLjgxIGFzIHdlbGwgYXMgR05VCisgICAgbWFrZSAzLjgwLgorICAqIEVuaGFuY2UgdGhlIGJsa2lkIGxpYnJhcnkgdG8gZGlzcGxheSB0aGUgdXVpZCBvZiBleHRlcm5hbCBqb3VybmFscyBmb3IKKyAgICBleHQzIGZpbGVzeXN0ZW1zCisgICogRW5oYW5jZSBlMmZzY2sgc28gaXQgd2lsbCBmaXggdGhlIGV4dGVybmFsIGpvdXJuYWwgaGludCBpbiB0aGUKKyAgICBzdXBlcmJsb2NrIGlmIGl0IGlzIG91dCBvZiBkYXRlLgorICAqIEZpeCBkZWJ1Z2ZzJ3MgaWNoZWNrIHRvIGNvcnJlY3RseSByZXBvcnQgdGhlIG93bmVyIG9mIGFuIEVBIGJsb2NrCisgICogVXBkYXRlIFN3ZWVkaXNoIHRyYW5zbGF0aW9uCisgICogQWRkIGEgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gZTJmc2NrLmNvbmYgdG8gY29udHJvbCB3aGV0aGVyIG9yIG5vdAorICAgIGZpbGVzeXN0ZW0gY2hlY2tzIGFyZSBkb25lIHdoZW4gdGhlIHN5c3RlbSBpcyBydW5uaW5nIG9uIGJhdHRlcnkgcG93ZXIuCisgICogUHJpbnQgYW4gZXhwbGFuYXRpb24gd2hlbiBza2lwcGluZyBhIGNoZWNrIGR1ZSBiZWluZyBvbiBiYXR0ZXJ5CisgICAgKENsb3NlczogIzM1MDMwNikKKyAgKiBVcGRhdGUgRnJlbmNoIHRyYW5zbGF0aW9uIChDbG9zZXM6ICMzNDE5MTEsICMzMDA4NzEsICMzMTY2MDQsICMzMTY3ODIsCisgICAgICMzMzA3ODkpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgV2VkLCAyOSBNYXIgMjAwNiAyMDozNzoyNyAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzgrMS4zOS1XSVAtMjAwNS4xMi4zMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICogVXBkYXRlIHByb2ZpbGUgbGlicmFyeSBjb2RlIGJhc2UKKyAgICAtIEFsbG93IHRhZyBhbmQgc2VjdGlvbiBuYW1lcyB0byBoYXZlIHF1b3RlZCBzdHJpbmdzCisgICAgLSBNYWtlIHRoZSBwcm9maWxlIGxpYnJhcnkgc3VwcG9ydCByZWFkaW5nIGZpbGVzIGluIGEgY29uZi5kIGRpcmVjdG9yeQorICAgIC0gU2xpZ2h0bHkgY2hhbmdlIHRoZSBwYXJzZXIgdG8gc3VwcG9ydCBjb21tZW50cyBhdCB0aGUgZW5kIG9mIGFsbCBsaW5lcworICAgIC0gQWRkIHN5bnRheCBlcnJvciByZXBvcnRpbmcKKyAgICAtIFNpbXBsaWZ5IHByb2ZpbGUgY29kZQorICAgIC0gQWRkIEUyRlNDS19DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2ggb3ZlcnJpZGVzIHdoZXJlIHRvCisgICAgICBmaW5kIC9ldGMvZTJmc2NrLmNvbmYKKyAgICAtIE1ha2UgZTJmc2NrJ3MgZmlsZXN5c3RlbSBwcm9ibGVtIGhhbmRpbmcgY29uZmlndXJhYmxlCisgICAgLSBGaXggRlRCRlMgYnVnIGlmIGNvbWVyci1kZXYgaXMgbm90IGluc3RhbGxlZC4gIChDbG9zZXM6ICMzNDU1MTkpCisgICogVXBkYXRlIER1dGNoLCBQb2xpc2gsIGFuZCBTd2VkaXNoIHRyYW5zbGF0aW9ucy4gIChDbG9zZXM6ICMzNDMxNDkpCisgICogRml4IGEgZmQgbGVhayBhY3Jvc3MgYW4gZXhlYyBpbiBsaWJ1dWlkLiAgKENsb3NlczogIzM0NTgzMikKKyAgKiBBZGRyZXNzIG92ZXJyaWRlIGZpbGUgZGlzcGFyaXRpZXMKKyAgKiBNYWtlIHVyZ2VuY3kgYmUgbWVkaXVtIHRvIGFjY2VsZXJhdGUgYSB3b3JrYXJvdW5kIHRvIERlYmlhbidzIGJ1Z2d5CisgICAgaW5pdHNjcmlwdHMgKFNlZSBEZWJpYW4gYnVnczogIzM0MzY2MiwgIzM0MzY0NSkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksICA2IEphbiAyMDA2IDIxOjQxOjA2IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zOCsxLjM5LVdJUC0yMDA1LjEyLjEwLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTWFrZSByZXNpemUyZnMgZXhwYW5kIG9yIHRydW5jYXRlIGEgZmlsZSBjb250YWluaW5nIGEgZmlsZXN5c3RlbS4KKyAgICAoQ2xvc2VzOiAjMjcxNjA3KQorICAqIEFkZCBzdXBwb3J0IGZvciBsaWI2NGV4dDJmcy1ub3BpYy5hIGZvciB0aGUgbWlwcyBhcmNoaXRlY3R1cmUKKyAgICAoQ2xvc2VzOiAjMzI5MDc0KQorICAqIERlYWwgd2l0aCB0aGUgZmFjdCB0aGF0IERlYmlhbidzIGJvb3Qgc2VxdWVuY2UgYm9ndXNseSBkb2Vzbid0IHNldCB0aGUKKyAgICB0aW1lIGNvcnJlY3RseSB1bnRpbCB2ZXJ5IGxhdGUgaW4gdGhlIGJvb3QgcHJvY2Vzczsgc28gaWYgdGhlCisgICAgc3VwZXJibG9jaydzIGxhc3QgbW91bnQgb3Igd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLCBkb24ndCB0cmVhdAorICAgIHRoaXMgYXMgYSBmYXRhbCBlcnJvci4gIChDbG9zZXM6ICMzNDM2NjIsICMzNDM2NDUpCisgICogTW92ZSB0aGUgYmxraWQgYW5kIHV1aWRnZW4gYmluYXJpZXMgb3V0IG9mIGxpYmJsa2lkMSBhbmQgbGlidXVpZDEgYW5kCisgICAgaW50byB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgdG8gc3VwcG9ydCBzb25hbWUgdHJhbnNpdGlvbnMgYW5kCisgICAgc2ltdWxhbmVvdXMgaW5zdGFsbHMgb2YgbXVsdGlhcmNoIGZsYXZvcnMgdG8gY29leGlzdC4gIChJdCdzIG5vdCB3b3J0aAorICAgIGNyZWF0aW5nIHR3byB3aG9sZSBuZXcgcGFja2FnZXMgZm9yIHR3byBzZXBhcmF0ZSBiaW5hcmllcywgc28gd2UganVzdAorICAgIGZvbGQgdGhlbSBpbnRvIGUyZnNwcm9ncy4pICAoQ2xvc2VzOiAjMzMwNzM3LCAjMzMwNzM2KQorICAqIE9wdGlvbmFsbHkgYWxsb3cgdGhlIHVzZXIgdG8gaW50ZXJydXB0IGUyZnNjayAic2FmZWx5IiBkdXJpbmcgYSBib290CisgICAgc2VxdWVuY2Ugd2l0aG91dCBjYXVzaW5nIHRoZSBib290IHNjcmlwdHMgdG8gYWJvcnQuICAoQ2xvc2VzOiAjMTUwMjk1KQorICAqIFVwZGF0ZSBhbmQgY2xhcmlmeSBtYW4gcGFnZXMgKENsb3NlczogIzMxMjUxNSkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDMxIERlYyAyMDA1IDAxOjA1OjM1IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zOCsxLjM5LVdJUC0yMDA1LjEyLjEwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogVXBkYXRlIGFuZCBjbGFyaWZ5IG1hbiBwYWdlcyAoQ2xvc2VzOiAjMzI5ODU5LCAjMzIyMTg4LCAjMzE2ODExKQorICAqIEZpeCBidWcgY3JlYXRpbmcgZXh0ZXJuYWwgam91cm5hbHMgb24gYmlnLWVuZGlhbiBtYWNoaW5lcy4KKyAgKiBEZXRlY3QgaWYgdGhlIHN1cGVyYmxvY2sncyBsYXN0IG1vdW50IHRpbWUgb3IgbGFzdCB3cml0ZSB0aW1lIGlzIGluCisgICAgdGhlIGZ1dHVyZSwgYW5kIG9mZmVyIHRvIGZpeCBpdCBpZiB0aGlzIGlzIHRoZSBjYXNlIChDbG9zZXM6ICMzMjc1ODApCisgICogQWRkIG5ldyBkZWJ1Z2ZzIGNvbW1hbmQsIHNldF9jdXJyZW50X3RpbWUgd2hpY2ggc2V0cyB0aGUgdGltZSB1c2VkIHRvCisgICAgdXBkYXRlIHRoZSBmaWxlc3lzdGVtcydzIHRpbWUgZmllbGRzLgorICAqIEZpeCBkaXNwbGF5IGJ1ZyBpbiBiYWRibG9ja3MgLXN3IHdoZW4gcHJpbnRpbmcgdGhlICJkb25lIiBtZXNzYWdlLgorICAgIChDbG9zZXM6ICMzMjIyMzEpCisgICogSW1wcm92ZSBibGtpZCdzIEZBVC9WRkFUIGZpbGVzeXN0ZW0gZGV0ZWN0aW9uIGNvZGUgc28gdGhhdCBpdCBjYW4gZmluZAorICAgIGxhYmVscyBzdG9yZWQgdGhlIHJvb3QgZGlyZWN0b3J5IGFuZCB0byBiZSBtb3JlIGNvcnJlY3QvcGFyYW5vaWQuCisgICogQWRkIHN1cHBvcnQgdG8gZXh0cmFjdCBpc285NjYwIGxhYmVsIGluZm9ybWF0aW9uIHRvIHRoZSBibGtpZCBsaWJyYXJ5LgorICAqIEFkZCBzdXBwb3J0IHRvIGRldGVjdCB0aGUgcmVpc2VyNCBmaWxlc3lzdGVtIHRvIHRoZSBibGtpZCBsaWJyYXJ5LgorICAqIEFkZCBzdXBwb3J0IGZvciBkZXRlY3Rpbmcgc29mdHdhcmUgc3VzcGVuZCBwYXJ0aXRpb25zIHRvIHRoZSBibGtpZCBsaWJyYXJ5LgorICAqIEZpeCB0aGUgYmxraWQgbGlicmFyeSB0byBub3RpY2Ugd2hlbiBhbiBleHQyIGZpbGVzeXN0ZW0gaXMgdXBncmFkZWQgdG8KKyAgICBleHQzLgorICAqIEZpeCBkZWJ1Z2ZzJ3Mgc2V0X2lub2RlX2ZpZWxkIHNvIHRoYXQgc3VjY2Vzc2Z1bGx5IHNldHMgdGhlIGlfc2l6ZSBmaWVsZAorICAqIFVwZGF0ZWQgRHV0Y2ggdHJhbnNsYXRpb24KKyAgKiBFMmZzY2sgd2lsbCBzdG9wIGFuZCBwcmludCBhIHdhcm5pbmcgaWYgdGhlIHVzZXIgdHJpZXMgcnVubmluZyBhCisgICAgcmVhZC93cml0ZSBiYWRibG9ja3MgdGVzdCBvbiBhIHJlYWQtb25seSBtb3VudGVkIHJvb3QgZmlsZXN5c3RlbS4KKyAgKiBBZGQgcmVzaXplMmZzIGFuZCBiYWRibG9ja3MgdG8gdGhlIGUyZnNwcm9ncyB1ZGViCisgICAgKENsb3NlczogIzI5MDQyOSwgIzMxMDk1MCkKKyAgKiBBdm9pZCB0cnlpbmcgdG8gbW91bnQgdGhlIHJvb3QgZGV2aWNlIGlmIGl0IGlzIGFuIE5GUyBkZXZpY2UuCisgICAgKENsb3NlczogIzMxMDQyOCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDEwIERlYyAyMDA1IDIyOjQ5OjQ3IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zOC0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFByZXZpb3VzIE5NVSBhY2tub3dsZWRnZWQgKENsb3NlczogIzMxNzg2MiwgIzMyMDM4OSkKKyAgKiBGaXggZGVidWdmcydzIHNldF9pbm9kZV9maWVsZHMgY29tbWFuZCBzbyBpdCBkb2Vzbid0IHNpbGVudGx5IGZhaWwKKyAgICB3aGVuIHNldHRpbmcgY2VydGFpbiBpbm9kZSBmaWVsZHMuCisgICogRml4IGUyZnNjayBmcm9tIHNlZ2ZhdWx0aW5nIG9uIGRpc2Nvbm5lY3RlZCBpbm9kZXMgdGhhdCBjb250YWluIG9uZSBvcgorICAgIG1vcmUgZXh0ZW5kZWQgYXR0cmlidXRlcy4gIChDbG9zZXM6ICMzMTY3MzYsICMzMTg0NjMpCisgICogQWxsb3cgbWtlMmZzIGFuZCB0dW5lMmZzIHRvIHRha2UgZnJhY3Rpb25hbCBwZXJjZW50YWdlcyB0byB0aGUgLW0KKyAgICBvcHRpb24gaW4gbWtlMmZzIGFuZCB0dW5lMmZzLiAgKENsb3NlczogIzgwMjA1KQorICAqIEZpeCBhIGNvbXBpbGVfZXQgYnVnIHdoaWNoIG1pc2NvdW50IHRoZSBudW1iZXIgb2YgZXJyb3IgbWVzc2FnZXMgaWYKKyAgICBjb250aW51YXRpb25zIGFyZSB1c2VkIGluIHRoZSAuZXQgZmlsZSwgYW5kIGZpeCBjb21wYXRpYmlsaXR5IHByb2JsZW1zCisgICAgd2l0aCBNSVQgS2VyYmVyb3MgMS40CisgICogQWRkIGV4dHJhIHNhbml0eSBjaGVja3MgdG8gcHJvdGVjdCB1c2VycyBmcm9tIHVudXN1YWwgY2lydWNtc3RhbmNlcworICAgIHdoZXJlIC9ldGMvbXRhYiBtYXkgbm90IGJlIHNhbmUsIGJ5IGNoZWNraW5nIHRvIHNlZSBpZiB0aGUgZGV2aWNlIGlzCisgICAgcmVwb3J0ZWQgYnVzeSAod29ya3Mgb24gTGludXggMi42KSBrZXJuZWxzLiAgKENsb3NlczogIzMxOTAwMikKKyAgKiBGaXggdXNlLWFmdGVyLWZyZWUgYnVnIGluIGUyZnNjayB3aGVuIGZpbmlzaGluZyB1cCB0aGUgdXNlIG9mIHRoZQorICAgIGUyZnNjayBjb250ZXh0IHN0cnVjdHVyZS4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDIxIEF1ZyAyMDA1IDIzOjM1OjI5IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zOC0xLjEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTk1VIGZvciBSQyBidWcgZHVycmluZyBidWcgc3F1aXNoaW5nIHBhcnR5CisgICogRml4IGZvciBjaGFuZ2VzIHRvIHRleGkyaHRtbCwgcGF0Y2ggYnkgTWF0dCBLcmFhaQorICAgIChDbG9zZXM6ICMzMTc4NjIsICMzMjAzODkpCisgICogdmVyc2lvbiBidWlsZC1kZXBlbmQgb24gdGV4aTJodG1sLCB3b24ndCB3b3JrIHdpdGggb2xkZXIgb25lIGFueW1vcmUKKworIC0tIEJsYXJzIEJsYXJzb24gPGJsYXJzb25AYmxhcnMub3JnPiAgRnJpLCAgNSBBdWcgMjAwNSAwNDo0Njo1NCArMDAwMAorCitlMmZzcHJvZ3MgKDEuMzgtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbgorICAqIEZpeCBpYTY0IGNvcmUgZHVtcCBidWcgY2F1c2VkIGJ5IGUyZnNwcm9ncyBydW5uaW5nIGFmb3VsIG9mIEM5OSBzdHJpY3QKKyAgICB0eXBlIGFsaWFzaW5nIHJ1bGVzIG9uIG5ld2VyIGdjYyBjb21waWxlcnMuICAoQWRkcmVzc2VzIFJlZCBIYXQKKyAgICBCdWd6aWxsYSAjIzE2MTE4My4pCisgICogRml4IG1pbm9yIHR5cG8ncyBpbiB0dW5lMmZzIG1hbiBwYWdlLgorICAqIE1rZTJmcyB3aWxsIHJlZnVzZSB0byBjcmVhdGUgZmlsZXN5c3RlbXMgZ3JlYXRlciB0aGFuIDIqKjMxLTEgYmxvY2tzLAorICAgIHVubGVzcyBmb3JjZWQsIHRvIGF2b2lkIGtlcm5lbCBidWdzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBmaXhlZCBhcworICAgIG9mIHRoaXMgcmVsZWFzZS4KKyAgKiBVcGRhdGUgRnJlbmNoLCBEdXRjaCwgUG9saXNoLCBTd2VkaXNoLCBhbmQgVHVya2lzaCB0cmFuc2xhdGlvbnMuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgV2VkLCAzMCBKdW4gMjAwNSAyMDowMjo0MiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzcrMS4zOC1XSVAtMDYyMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFVwZGF0ZSBhbmQgY2xhcmlmeSBtYW4gcGFnZXMuCisgICogQ2xhcmlmeSBhbmQgY2xlYW4gdXAgZTJmc2NrJ3MgcHJvYmxlbSBkZXNjcmlwdGlvbnMKKyAgKiBBZGQgRHV0Y2ggdHJhbnNsYXRpb24sIGFuZCB1cGRhdGUgRnJlbmNoLCBQb2xpc2gsIFN3ZWRpc2gsIGFuZAorICAgIFR1cmtpc2ggdHJhbnNsYXRpb24uCisgICogbWtlMmZzIGFuZCBiYWRibG9ja3Mgd2lsbCBjaGVjayB0byBzZWUgaWYgdGhlIGRldmljZSBhcHBlYXJzIHRvIGJlCisgICAgYnVzeSBhbmQgYWJvcnQgaWYgc287IHRoaXMgZmVhdHVyZSBvbmx5IHdvcmtzIG9uIExpbnV4IDIuNiBzeXN0ZW1zLgorICAgIChDbG9zZXM6ICMzMDg1OTQpCisgICogRml4IGZpbGVmcmFnIHNvIHRoYXQgaXQgd29ya3Mgb24gNjQtYml0IHBsYXRmb3JtcyB3aGVyZSB0aGUgc2l6ZSBvZgorICAgIGFuIGludGVnZXIgIT0gdGhlIHNpemUgb2YgYSBsb25nLiAgKENsb3NlczogIzMwOTY1NSkKKyAgKiBDaGFuZ2UgdGhlIGRlZmF1bHQgam91cm5hbCBzaXplIHRvIGJlIGJpZ2dlciBmb3IgbGFyZ2VyIGZpbGVzeXN0ZW1zLAorICAgIGdpdmVuIG1vZGVybiBtZW1vcnkgc2l6ZXMuCisgICogRml4IGNvbV9lcnIgbGlicmFyeSBzbyBpdCBpcyBjb21wYXRpYmxlIHdpdGggTUlUIGtyYjUgMS40LgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgMjAgSnVuIDIwMDUgMTc6MTE6MjkgLTA0MDAKKworZTJmc3Byb2dzICgxLjM3KzEuMzgtV0lQLTA1MDktMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNYWtlIHRoZSBibGtpZCBsaWJyYXJ5IG11Y2ggbW9yZSBlZmZpY2llbnQgd2hlbiBhIG5ldyBkZXZpY2UgaXMgYWRkZWQKKyAgICBvbiBzeXN0ZW1zIHdpdGggYSBodWdlIG51bWJlciBvZiBkaXNrcy4KKyAgKiBGaXggaGFuZGxpbmcgb2YgdGhlIFBBR0VSIGFuZCBTU19SRUFETElORV9QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlcworICAgIGluIHRoZSBzcyBsaWJyYXJ5LCBhbmQgdGhlIFRFU1RfSU9fKiBlbnZpcm9uZW1udCB2YWlhYmxlcyBmb3IgdGhlCisgICAgdGVzdF9pbyBpb19tYW5hZ2VyLCB3aGljaCB3YXMgYWNjaWRlbnRhbGx5IGJyb2tlbiBpbiAxLjM3LTEuCisgICogRml4IGxpYmJsa2lkJ3MgcmVjb2duaXRpb24gb2YgY3JhbWZzIGZpbGVzeXN0ZW1zLCBhbmQgYWRkIHN1cHBvcnQgZm9yCisgICAgY3JhbWZzIGxhYmVscy4KKyAgKiBGaXggZmlsZWZyYWcgdG8gZ2l2ZSBjb3JyZWN0IHJlc3VsdHMgd2hlbiB0aGUgZmlyc3QgYmxvY2sgZm91bmQgaXMgYW4KKyAgICBpbmRpcmVjdCBibG9jay4gIChDbG9zZXM6ICMzMDc2MDcpCisgICogRml4IGRlYnVnZnMgc2VnIGZhdWx0IHdoZW4gdGhlIHN0YXQgY29tbWFuZCBpcyBnaXZlbiBhbmQgYSBmaWxlc3lzdGVtCisgICAgaXMgbm90IG9wZW4uCisgICogSW1wcm92ZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBwYXJhbm9pYSBjaGVja3MuCisgICogRml4IGUyZnNjaydzIGhhbmRsaW5nIG9mIG11bHRpcGx5IGNsYWltZWQgYmxvY2tzIGludm9sdmluZyB0aGUgcmVzaXplCisgICAgaW5vZGUuCisgICogV2hlbiBkZXRlcm1pbmluZyB0aGUgbGlicmFyaWVzIG5lZWRlZCBmb3IgdGhlIGluaXRyZCwgdW5zZXQgTERfUFJFTE9BRAorICAgIGFuZCBMRF9MSUJSQVJZX1BBVEggYW5kIGZpbHRlciBvdXQgbGlicmFyaWVzIGZvdW5kIGluCisgICAgL2V0Yy9sZC5zby5wcmVsb2FkLiAgKENsb3NlczogIzMwNDAwMykKKyAgKiBVcGRhdGUgU3dlZGlzaCB0cmFuc2xhdGlvbiwgYW5kIGFkZGVkIHRyYW5zbGF0aW9uIGZvciBSd2FuZGEuCisgICogTWlub3IgbWFuIHBhZ2Ugc3BlbGxpbmcvdHlwbyBmaXhlcy4gIChDbG9zZXM6ICMzMDQ1OTEsICMzMDQ1OTIsCisgICAgIzMwNDU5NCwgIzMwNDU5NywgIzMwNDU5MykKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sICA5IE1heSAyMDA1IDA5OjEwOjIwIC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zNy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBmaWxlZnJhZyBzbyB0aGF0IGl0IHdvcmtzIG5vbiBleHQyLzMgZmlsZXN5c3RlbXMgYWdhaW4uCisgICAgKENsb3NlczogIzMwMzUwOSkKKyAgKiBNYWtlIHN1cmUgd2UgaW5jbHVkZSBzdGRsaWIuaCB0byBmaXggYSBjb3JlIGR1bXAgYnVnIGluIG1rZTJmcyBvbiB0aGUKKyAgICBJQTY0IGFyY2hpdGVjdHVyZSAob3Igb3RoZXIgcGxhdGZvcm1zIHdoZXJlIHNpemVvZihwdHIpID4gc2l6ZW9mKGludCkpCisgICAgKENsb3NlczogIzMwMjIwMCkKKyAgKiBBZGQgbWlzc2luZyByZXR1cm4gdmFsdWVzIHNvIHRoYXQgd2UgZG9uJ3QgcmV0dXJuIGdhcmJhZ2UgaW4gY2VydGFpbgorICAgIGVycm9yIGNhc2VzIGluIGV4dDJmc193cml0ZV9uZXdfaW5vZGUoKSBhbmQgZXh0MmZzX3JlYWRfaW50X2Jsb2NrKCkuCisgICogRml4IG1pbm9yIHNwZWxsaW5nIHR5cG8gaW4gdGhlIG1rZTJmcyBtYW4gcGFnZQorICAqIEF2b2lkIGRvaW5nIHRoZSBMT1dfRFRJTUUgY2hlY2tzIGlmIHRoZSBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZQorICAgIGluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gY2xvY2sgbWF5IG5vdCBiZSBzZXQgY29ycmVjdGx5LgorICAqIEFkZCBmdXJ0aGVyIHBhcmFub2lhIGNoZWNrcyB0byB0aGUgYmxraWQsIGV4dDJmcywgYW5kIHNzIGxpYnJhcmllcyB0bworICAgIG1ha2UgdGhlbSBzYWZlIHRvIGNhbGwgZnJvbSBzZXR1aWQgb3Igc2V0Z2lkIGFwcGxpY2F0aW9ucy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsICA5IEFwciAyMDA1IDExOjA4OjA0IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zNy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlLgorICAqIEZpeGVkIGEgYnVnIGluIGUyZnNjayBzbyBpdCB3b3VsZCBub3RpY2UgaWYgYSBmaWxlIHdpdGggYW4gZXh0ZW5kZWQKKyAgICBhdHRyaWJ1dGUgYmxvY2sgd2FzIGV4YWN0bHkgMioqMzIgYmxvY2tzLCBzdWNoIHRoYXQgaV9ibG9ja3Mgd3JhcHBlZAorICAgIHRvIHplcm8uCisgICogRml4ZWQgYSBidWcgaW4gZmlsZWZyYWcgd2hpY2ggY2F1c2VkIGl0IHRvIGZhbHNlbHkgcmVwb3J0IGEKKyAgICBkaXNjb250aW51aXR5IHdoZW4gdGhlcmUgYXJlIG9uZSBvciBtb3JlIHVuYWxsb2NhdGVkIGJsb2NrcyBhdCB0aGUKKyAgICBiZWdpbm5pbmcgb2YgYSBmaWxlLgorICAqIEZpeCB0aGUgbWlzc2luZyB0cmFuc2xhdGlvbnMgKGNhdXNlZCBieSBhIGJ1ZyBpbiB0aGUgZ2VuLXRhcmJhbGwKKyAgICBzY3JpcHQpLiAgKENsb3NlczogIzI5Njc2OSkKKyAgKiBBZGQgc3VwcG9ydCBpbiBlMmZzY2sgYW5kIGRlYnVnZnMgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gaW5vZGVzLgorICAqIEZpeCB0aGUgbWlzc2luZyB0cmFuc2xhdGlvbnMgKGNhdXNlZCBieSBhIGJ1ZyBpbiB0aGUgZ2VuLXRhcmJhbGwgc2NyaXB0KS4KKyAgICAoQ2xvc2VzOiAjMjk2NzY5KQorICAqIEZvcmNlIGNvbXBpbGVfZXQgYW5kIG1rX2NtZHMgdG8gdXNlIC91c3IvYmluL2F3ayBzbyB0aGF0IHdlIHdpbGwgd29yaworICAgIG9uIGFueSBEZWJpYW4gc3lzdGVtIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggdmVyc2lvbiBvZiBhd2sgaXMgaW5zdGFsbGVkLgorICAgIChDbG9zZXM6ICMyOTkzNDEpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAyMSBNYXIgMjAwNSAyMjozMTowOCAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzZyZWxlYXNlLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UuCisgICogTWFrZSBmaWxlZnJhZyBwcmludCB0aGUgZmlyc3QgYW5kIGxhc3QgYmxvY2tzIHdoZW4gaW4gdmVyYm9zZSBtb2RlLgorICAqIERyb3Agc3BhcmMgYXNzZW1ibHkgYml0b3BzOyBpdCdzIGxlc3MgZWZmaWNpZW50IHRoYW4gZ2NjIDMuNCdzCisgICAgZ2VuZXJhdGVkIGNvZGUsIGFuZCBpdCB0cmlnZ2VycyBjb21waWxlciB3YXJuaW5ncyBvbiBzcGFyYyA2NC4KKyAgICAoQ2xvc2VzOiAjMjMyMzI2KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIEZyaSwgIDQgRmViIDIwMDUgMjA6NTg6MzUgLTA1MDAKKworZTJmc3Byb2dzICgxLjM2cmM1LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTWFrZSBibGtpZCAtdCB3b3JrIG1vcmUgY29uc2lzdGVudGx5IGV2ZW4gd2hlbiB0aGUgY2FjaGUgZmlsZSBpcyBub3QKKyAgICBhdmFpbGFibGUgb3Igc2V0IHRvIC9kZXYvbnVsbC4gIChDbG9zZXM6ICMyOTI0MjUpCisgICogRG9uJ3QgZXZlciB1c2UgYSBibG9ja3NpemUgZ3JlYXRlciB0aGFuIDRrLCBzaW5jZSBub3QgYWxsIDIuNiBrZXJuZWxzCisgICAgd2lsbCBzdXBwb3J0IHRoaXMuCisgICogRml4IGJ1ZyB3aGVyZSBta2UyZnMgd291bGQgbm90IGNvcnJlY3RseSBjcmVhdGUgZmlsZXN5c3RlbXMgZ3JlYXRlcgorICAgIHRoYW4gNFRCLgorICAqIEZpeCBlMmZzY2sgc28gaXQgd29uJ3QgZGVsZXRlIHN5bWxpbmtzIHRoYXQgY29udGFpbiBhbiBleHRlbmRlZAorICAgIGF0dHJpYnV0ZSBhZnRlciB0aGUgZXh0X2F0dHIgZmVhdHVyZSBmbGFnIGhhcyBiZWVuIGNsZWFyZWQuCisgICogRml4IGUyZnNjaydzIHJlc2l6ZSBpbm9kZSBoYW5kbGluZyBpbiBzb21lIGFkZGl0aW9uYWwgY29ybmVyIGNhc2VzLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFRodSwgMjcgSmFuIDIwMDUgMjI6NDQ6MzEgLTA1MDAKKworZTJmc3Byb2dzICgxLjM2cmM0LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IGEgYnVnIGluIHJlc2l6ZTJmcyB3aGVyZSB3ZSBkb24ndCByZWxlYXNlIHRoZSBibG9ja3MgYmVsb25naW5nIHRvCisgICAgdGhlIG9sZCBpbm9kZSB0YWJsZSBibG9ja3Mgd2hlbiB3ZSBtb3ZlIHRoZSBpbm9kZSB0YWJsZS4KKyAgICAoQ2xvc2VzOiAjMjkwODk0KQorICAqIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHdyaXRlIGdhcmJhZ2Ugd2hlbiB3cml0aW5nIGEgbGFyZ2UgaW5vZGUuCisgICogQ2hlY2sgTlRGUyBhaGVhZCBvZiBvdGhlciBmaWxlc3lzdGVtcyBzaW5jZSBXaW5kb3dzIGRvZXNuJ3QgYWx3YXlzCisgICAgY2xlYXJpbmcgZW5vdWdoIG9mIHRoZSBwYXJ0aXRpb24gdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzIHdpdGggb2xkZXIKKyAgICBmaWxlc3lzdGVtcy4gIChDbG9zZXM6ICMyOTE5OTApCisgICogRTJmc2NrIG5vdyBjaGVja3MgdGhlIHN1bW1hcnkgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uLCBhbmQKKyAgICBpZiBhbnkgb2YgdGhlIGluZm9ybWF0aW9uIGlzIG9idmlvdXNseSB3cm9uZywgaXQgd2lsbCBmb3JjZSBhIGZ1bGwKKyAgICBmaWxlc3lzdGVtIGNoZWNrLiAgKENsb3NlczogIzI5MTU3MSkKKyAgKiBDbGFyaWZpZWQgYW5kIHVwZGF0ZWQgdHVuZTJmcyBhbmQgYmxraWQgbWFuIHBhZ2VzCisgICogRml4IGUyZnNjayB0byBub3QgY29tcGxhaW4gd2hlbiB0aGUgcmVzaXplX2lub2RlIGZlYXR1cmUgaXMgZW5hYmxlZCwKKyAgICBzX3Jlc2VydmVkX2dkdF9ibG9ja3MgaXMgemVybywgYW5kIHRoZXJlIGlzIG5vIERJTkQgYmxvY2sgYWxsb2NhdGVkIGluCisgICAgdGhlIHJlc2l6ZSBpbm9kZS4KKyAgKiBGaXggYmxraWQgLXQgdG8gZGlzcGxheSBhbGwgZGV2aWNlcyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEsCisgICAgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4gIChDbG9zZXM6ICMyOTA1MzApCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBibGtpZCBsaWJyYXJ5IHRvIHJlY29nbml6ZSBPcmFjbGUgQVNNIHZvbHVtZXMuCisgICogQWRkIHNldF9zdXBlcl92YWx1ZSBqbmxfYmxvY2tzW10gaW4gZGVidWdmcy4KKyAgKiBGaXggdGhlIGZpbGVmcmFnIHByb2dyYW0gc28gdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkgd2l0aCBzcGFyc2UgZmlsZXMuCisgICogRml4IHBvcnRhYmlsaXR5IHByb2JsZW1zIHdpdGggRnJlZUJTRCwgU29sYXJpcywgYW5kIEludGVsIEMrKyA4LjEuCisgICogQWRkIHN1cHBvcnQgZm9yIEZyZWVCU0QgYW5kIExpdGVzIGFzIE9TIENyZWF0b3IgdmFsdWVzLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMjYgSmFuIDIwMDUgMTA6MjI6MDIgLTA1MDAKKworZTJmc3Byb2dzICgxLjM2cmMzLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogUmVtb3ZlIGRlYnVnZ2luZyBwcmludGYncyBmcm9tIGUyaW1hZ2UncyAtcyBjb2RlLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMTkgSmFuIDIwMDUgMDI6MjU6NTMgLTA1MDAKKworZTJmc3Byb2dzICgxLjM2cmMzLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UKKyAgKiBVcGRhdGUgSXRhbGlhbiwgRnJlbmNoLCBhbmQgVHVya2lzaCB0cmFuc2xhdGlvbnMKKyAgKiBGaXhlZCBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiB0aGUgZmlsZWZyYWcgcHJvZ3JhbQorICAqIEFkZCAtcyBvcHRpb24gdG8gZTJpbWFnZSB3aGljaCBzY3JhbWJsZXMgZGlyZWN0b3J5IGVudHJpZXMgd2hlbiBtYWtpbmcKKyAgICAgICAgcmF3IGltYWdlIGZpbGVzCisgICogTWFrZSBzdXJlIGUyZnNjayBkb2Vzbid0IGNyYXNoIGlmIC9wcm9jL2FjcGkvYWNfYWRhcHRlciBkb2VzIG5vdAorICAgICAgICBleGlzdAorICAqIEFkZGVkIFNvbGFyaXMsIEZyZWVCU0QgcG9ydGFiaWxpdHkgZml4ZXMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBXZWQsIDE5IEphbiAyMDA1IDAwOjMzOjMxIC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zNnJjMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlCisgICogVXBkYXRlIEl0YWxpYW4gdHJhbnNsYXRpb24KKyAgKiBBZGQgc3VwcG9ydCBmb3Igc3dhcCBwYXJ0aXRpb24gbGFiZWxzIGFuZCB1dWlkJ3MKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDExIEphbiAyMDA1IDE0OjEyOjE3IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zNnJjMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBhIEZUQkZTIGJ1ZyBmb3IgYW1kNjQvZ2NjLTMuMCAoQ2xvc2VzOiAjMjg5MTMzKQorICAqIE1pbm9yIG1hbiBwYWdlIGNsYXJpZmljYXRpb25zLiAgKENsb3NlczogIzI3MzY3OSkKKyAgKiBBZGQgc3VwcG9ydCBmb3Igb25saW5lIHJlc2l6aW5nIHZpYSB0aGUgcmVzaXplIGlub2RlLgorICAqIEJhZGJsb2NrcyB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBibG9jayBudW1iZXJzIGdyZWF0ZXIgdGhhbgorICAgICAgICA5OTksOTk5LDk5OSBpbiBpdHMgcHJvZ3Jlc3MgZGlzcGxheS4KKyAgKiB0dW5lMmZzIHdpbGwgbm90IGFsbG93IHRoZSB1c2VyIGZyb20gc2V0dGluZyBhIHJpZGljdWxvdXMgbnVtYmVyIG9mCisgICAgICAgIHJlc2VydmVkIGJsb2NrcyB3aGljaCB3b3VsZCBjYXVzZSBlMmZzY2sgdG8gYXNzdW1lIHRoZSBzdXBlcmJsb2NrCisgICAgICAgIHdhcyBjb3JydXB0LiAgRTJmc2NrJ3Mgc3RhbmRhcmRzIGZvciB3aGF0IGlzIGEgcmlkaWN1bG91cyBudW1iZXIKKyAgICAgICAgb2YgcmVzZXJ2ZWQgYmxvY2tzIGhhcyBhbHNvIGJlZW4gcmVsYXhlZCB0byA1MCUgb2YgdGhlIGJsb2NrcyBpbgorICAgICAgICB0aGUgZmlsZXN5c3RlbS4KKyAgKiBUaGUgYmxraWQgbGlicmFyeSB3aWxsIHJldHVybiB2ZmF0IGluIHByZWZlcmVuY2UgdG8gbXNkb3MsIGFuZCBleHQzIGluCisgICAgICAgIHByZWZlcmVuY2UgdG8gZXh0MiAoaWYgdGhlIGpvdXJuYWxsaW5nIGZsYWcgaXMgc2V0KSBzbyB0aGF0IG1vdW50CisgICAgICAgIHdpbGwgZG8gdGhlIHJpZ2h0IHRoaW5nLiAgKENsb3NlczogIzI4NzQ1NSkKKyAgKiBUaGUgZnNjayBwcm9ncmFtIHdpbGwgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBmaWxlZGVzY3JpcHRvciBhcmd1bWVudAorICAgICAgICB0byB0aGUgLUMgb3B0aW9uLgorICAqIE1rZTJmcyB3aWxsIG5vdyB1c2UgdGhlIC1FIG9wdGlvbiBmb3IgZXh0ZW5kZWQgb3B0aW9uczsgdGhlIG9sZCAtUgorICAgICAgICAocmFpZCBvcHRpb25zKSBvcHRpb24gaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAqIEZpeCBhIGRvdWJsZS1mcmVlIHByb2JsZW0gaW4gcmVzaXplMmZzLiAgKFJlZCBIYXQgQnVnemlsbGEgIzEzMjcwNykKKyAgKiBNa2UyZnMgd2lsbCBub3cgYWNjZXB0IGEgc2l6ZSBpbiBtZWdhYnl0ZXMgb3IgZ2lnYWJ5dGVzICh2aWEgIjMybSIgb3IKKyAgICAgICAgIjRnIiBvbiB0aGUgY29tbWFuZCBsaW5lKSBpZiB0aGUgdXNlciBmaW5kcyB0aGlzIG1vcmUgY29udmVuaWVudAorICAgICAgICB0aGFuIHNwZWNpZnlpbmcgYSBibG9jayBjb3VudC4KKyAgKiBGaXggYW4gb2JzY3VyZSwgaGFyZC10byBmaW5kIGJ1ZyBpbiAiZTJmc2NrIC1TIiBjYXVzZWQgYnkgYW4gaW5vZGUKKyAgICAgICAgY2FjaGUgY29uaGVyZW5jeSBwcm9ibGVtLgorICAqIERlYnVnZnMgbm93IHN1cHBvcnRzIGEgbmV3IGNvbW1hbmQsIHNldF9pbm9kZV9maWVsZCwgd2hpY2ggYWxsb3dzIGEKKyAgICAgICAgdXNlciB0byBtYW51YWxseSBzZXQgYSBzcGVjaWZpYyBpbm9kZSBmaWVsZCBtb3JlIGNvbnZlbmllbnRseSwgYXMKKyAgICAgICAgd2VsbCBhcyBzZXQgZW50cmllcyBpbiB0aGUgaW5kaXJlY3QgYmxvY2sgbWFwLgorICAqIERlYnVnZnMncyBzZXRfc3VwZXJfdmFsdWUgY29tbWFuZCBoYXMgYmVlbiBlbmhhbmNlZCBzbyB0aGF0IHRoZSB1c2VyCisgICAgICAgIGNhbiBzZXQgbW9zdCBzdXBlcmJsb2NrIGZpZWxkcywgaW5jbHVkaW5nIHRoZSBkYXRlL3RpbWUgZmllbGRzIGFuZAorICAgICAgICBzb21lIG9mIHRoZSBtb3JlIG5ld3NseSBhZGRlZCBzdXBlcmJsb2NrIGZpZWxkcy4KKyAgKiBFMmZzcHJvZ3MgcHJvZ3JhbXMgbm93IGFjY2VwdCBhbiBvZmZzZXQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmaWxlCisgICAgICAgIHNwZWNpZmllcnMsIHZpYSB0aGUgc3ludGF4OiAiL3RtcC90ZXN0LmltZz9vZmZzZXQ9MTAyNCIKKyAgKiBFMmZzcHJvZ3Mgd2lsbCBub3cgYWNjZXB0IGJsb2Nrc2l6ZXMgdXAgdG8gNjU1MzY7IGtlcm5lbCBzdXBwb3J0IG9uCisgICAgICAgIHRoZSB4ODYgZG9lc24ndCBleGlzdCwgYnV0IGl0IGlzIHVzZWZ1bCBvbiBvdGhlciBhcmNoaXRlY3R1cmVzLgorICAqIEZpeCBidWcgaW4gZGVidWdmcyB3aGVyZSBraWxsX2ZpbGUgd291bGQgbGVhZCB0byBlcnJvcnMgd2hlbiBkZWxldGluZworICAgICAgICBkZXZpY2VzIGFuZCBzeW1saW5rcy4gIChTb3VyY2Vmb3JnZSBCdWdzICM5NTQ3NDEgYW5kICM5NTcyNDQpCisgICogRml4IGJ1ZyBpbiB0aGUgYmxraWQgbGlicmFyeSB3aGVuIGRldGVjdGluZyB0aGUgb2NmczEgZmlsZXN5c3RlbQorICAqIFVwZGF0ZWQgSXRhbGlhbiB0cmFuc2xhdGlvbiBmaWxlCisgICogRTJmc2NrIHdpbGwgbm93IHJlY292ZXIgZnJvbSBhIGpvdXJuYWwgY29udGFpbmluZyBpbGxlZ2FsIGJsb2Nrcy4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksICA3IEphbiAyMDA1IDIwOjIyOjM2IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zNS05KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1pbm9yIG1hbiBwYWdlIGNsYXJpZmljYXRpb25zLiAgKENsb3NlczogIzI3MzY3OSkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDI4IFNlcCAyMDA0IDEwOjI5OjI5IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zNS04KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFJlbW92ZSBkb3VibGUgIi8vIiB3aGVuIGxpc3RpbmcgYXR0cmlidXRlcyBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb3IKKyAgICAgICB3aGVuIHRoZXJlIGlzIGEgdHJhaWxpbmcgJy8nIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4gIChDbG9zZXM6ICMyNzI5NDMpCisgICogTWFrZSBzdXJlIHRoZSBjb25maWd1cmUgZmlsZXMgYXJlIG5ld2VyIHRoYW4gY29uZmlndXJlLmluIHRoZQorICAgICAgIGRlYmlhbi9ydWxlcyBmaWxlIHNvIHRoYXQgYSBkcGtnLXNvdXJjZSBjcmVhdGVkIHBhdGNoIHdvbid0CisgICAgICAgdHJpZ2dlciBhbiBhdHRlbXB0IHJlYnVpbGQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisgICAgICAgKENsb3NlczogIzI3MjU1OCwgIzI3MzI0MikKKyAgKiBNYWtlIHN1cmUgL3Vzci9saWIvZTJpbml0cmRfaGVscGVyIGlzIGluIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyAgICAgICAoQ2xvc2VzOiAjMjcyNjk4LCAjMjcyNzI4LCAjMjczMTYxLCAjMjczMTYzKQorICAqIE9ubHkgdXNlIGJsb2Nrc2l6ZXMgPiA0ayBvbiBMaW51eCAyLjYgYW5kIG5ld2VyIHN5c3RlbXMuICAoQ2xvc2VzOiAjMjcxMDY0KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFNhdCwgMjUgU2VwIDIwMDQgMDc6Mzc6NTIgLTA0MDAKKworZTJmc3Byb2dzICgxLjM1LTcpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTWFrZSBzdXJlICJkb25lIiBnZXRzIGNvcnJlY3RseSB0cmFuc2xhdGVkIGluIGJhZGJsb2Nrcyg4KSwgYW5kIHVwZGF0ZQorICAgICAgRnJlbmNoIHRyYW5zbGF0aW9uIChDbG9zZXM6ICMyNTI4MzYpCisgICogQWx3YXlzIGJ1aWxkIHRoZSBmc2NrIHdyYXBwZXIgb24gRGViaWFuIHN5c3RlbXMgKENsb3NlczogIzI0ODA1MCkKKyAgKiBGaWx0ZXIgb3V0IGxpbnV4LWdhdGUuc28sIHdoaWNoIGlzIGEgcHNldWRvIGVudHJ5IGZvciB0aGUgMzItPjY0Yml0CisgICAgICB0cmFuc2xhdGlvbiBmb3IgYW1kNjQgc3lzdGVtcywgaW4gdGhlIGluaXRyZCBjcmVhdGlvbiBzY3JpcHQuCisgICAgICAoQ2xvc2VzOiAjMjUzNTk1KQorICAqIENoYW5nZSB0aGUgaW5pdHJkIHNjcmlwdHMgdG8gYmUgdXNlIGEgaGVscGVyIHByb2dyYW0gd2hpY2ggYXZvaWRzCisgICAgICAgbmVlZGluZyB0byBtb3VudCB0aGUgcm9vdCBmaWxlc3lzdGVtIGFuZCB1c2UgYXdrIHRvIHF1ZXJ5IHRoZQorICAgICAgIC9ldGMvZnN0YWIgZmlsZS4gIChDbG9zZXM6ICMyNDc3NzUpCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSBvY2ZzMiBmaWxlc3lzdGVtIHRvIHRoZSBibGtpZCBsaWJyYXJ5LgorICAqIFZhcmlvdXMgcG9ydGFiaWxpdHkgZml4ZXMgZm9yIEh1cmQgYW5kIEZyZWVCc2QsIGFzIHdlbGwgYXMKKyAgICAgICAgcmVtb3ZpbmcgWFNJOmlzbXMuICAoQ2xvc2VzOiAjMjU2NjY5LCAjMjY0NjMwLCAjMjY5MDQ0LCAjMjU1NTg5KQorICAqIFVwZGF0ZSBjb25maWcuZ3Vlc3MgYW5kIGNvbmZpZy5zdWIgZnJvbSB0aGUgRlNGLgorICAqIE1pbm9yIG1hbnVhbCBwYWdlIGNsYXJpZmljYXRpb25zIChDbG9zZXM6ICMyNjgxNDgpCisgICogRml4IHdyaXRlIG9yZGVyaW5nIHByb2JsZW1zIHRvIG1ha2UgZTJmc2NrIG1vcmUgcm9idXN0IGluIHRoZSBmYWNlCisgICAgICAgb2Ygc3lzdGVtIGNyYXNoZXMgd2hpbGUgcmVwbGF5aW5nIHRoZSBqb3VybmFsLCBldGMuCisgICogRml4IGRlYnVnZ2luZyBwcmludGYgaW4gcmVzaXplMmZzLiAgKENsb3NlczogIzI3MTYwNSkKKyAgKiBBZGQgZGVidWdmcyAtZCBvcHRpb24gdG8gdXNlIGEgc2VwYXJhdGUgc291cmNlIG9mIGRhdGEgYmxvY2tzIHdoZW4KKyAgICAgICByZWFkaW5nIGZyb20gYW4gZTJpbWFnZSBmaWxlLgorICAqIEFkZCBlMmltYWdlIC1JIG9wdGlvbiB3aGljaCBhbGxvd3MgdGhlIGUyaW1hZ2UgbWV0YWRhdGEgdG8gYmUKKyAgICAgICBpbnN0YWxsZWQgaW50byBhIGZpbGVzeXN0ZW0uCisgICogQ2hhbmdlIGUyZnNjayB0byBhY2NlcHQgZGlyZWN0b3JpZXMgZ3JlYXRlciB0aGFuIDMyTUIuCisgICogQWRkIHRlc3RfaW8gbWVjaGFuaXNtcyB0byBhYm9ydCBhZnRlciByZWFkaW5nIG9yIHdyaXRpbmcgdG8gYQorICAgICAgIHBhcnRpY3VsYXIgYmxvY2suCisgICogRml4IGJsa2lkIGZpbGUgZGVzY3JpcHRvciBhbmQgbWVtb3J5IGxlYWsuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU2F0LCAxOCBTZXAgMjAwNCAwOTo1ODo0NiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzUtNikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBJbiB0aGUgbWtpbml0cmQgc2NyaXB0LCBtYWtlIHN1cmUgdGhlIGRpcmVjdG9yaWVzIGV4aXN0IGJlZm9yZQorICAgIHRyeWluZyB0byBjb3B5IGluIHRoZSBuZWVkZWQgc2hhcmVkIGxpYnJhcmllcy4gIChDbG9zZXM6ICMyNDQwNTgsICMyNDY0ODApCisgICogSW4gdGhlIG1raW5pdHJkIHNjcmlwdCwgdXNlIExEX0FTU1VNRV9LRVJORUw9Mi40IGlmIG5lY2Vzc2FyeS4KKyAgICAoQ2xvc2VzOiAjMjQ1OTMxKQorICAqIEluIHRoZSBta2luaXRyZCBzY3JpcHQgY29weSBpbiAvdXNyL2Jpbi9hd2sgaW5zdGVhZCBvZiAvdXNyL2Jpbi9tYXdrLgorICAgIChDbG9zZXM6ICMyNDU2NzApCisgICogSW4gdGhlIGluaXRyZCBzY3JpcHQsIGZhaWwgcXVpZXRseSBpZiAvbW50L2V0Yy9mc3RhYiBkb2VzIG5vdCBleGlzdC4KKyAgICAoQ2xvc2VzOiAjMjQ2OTE3KQorICAqIE1pbm9yIHVwZGF0ZXMgdG8gR2VybWFuIHRyYW5zbGF0aW9uIChDbG9zZXM6ICMyNDQxMDUpCisgICogU2luY2Ugd29vZHkncyBzeXN2aW5pdCBwYWNrYWdlIGlzIGJlZm9yZSB0aGUgaW5pdHNjcmlwdHMgd2VyZSBicm9rZW4gb3V0CisgICAgd2UgbmVlZCBhbiBleHBsaWN0IENvbmZsaWN0OiBzeXN2aW5pdCAoPDwgMi44NS00KSBoZWFkZXIuIChDbG9zZXM6ICMyNDM4MjkpCisgICogVXBkYXRlIHRoZSBVVUlEIGxpYnJhcnkgbWFuIHBhZ2VzCisgICogRml4IGEgWTguODg4OEsgcG90ZW50aWFsIHByb2JsZW0gd2l0aCB0aGUgdXVpZCBsaWJyYXJ5CisgICogTWlub3IgdXBkYXRlcyB0byB0aGUgZ2VybWFuIHRyYW5zbGF0aW9uCisgICogQ2xhcmlmaWVkL2NvcnJlY3RlZCB0aGUgY29weXJpZ2h0IHN0YXRlbWVudHMgb2YgdGhlIFVVSUQgYW5kIGJsa2lkCisgICAgbGlicmFyaWVzIGluIHRoZSBEZWJpYW4gY29weXJpZ2h0IGZpbGVzLgorICAqIEFkZGVkIHNhbml0eSBjaGVjayB0byB0aGUgYmxraWQgbGlicmFyeSBzbyB0aGF0IGlmIGN1cnJlbnQgdGltZSBpcworICAgIGxlc3MgdGhhbiBsYXN0IHRpbWUgYSBkZXZpY2UgaXMgdmVyaWZpZWQsIGZvcmNlIGEgcmV2ZXJpZmljYXRpb24gc2luY2UKKyAgICBpdCBtZWFucyB0aGUgc3lzdGVtIHRpbWUgaXMgbm90IHRydXN0d29ydGh5LgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFR1ZSwgIDQgTWF5IDIwMDQgMTY6MjM6MDYgLTA0MDAKKworZTJmc3Byb2dzICgxLjM1LTUpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQWRkIHV1aWRfdW5wYXJzZV91cHBlcigpIGFuZCB1dWlkX3VucGFyc2VfbG93ZXIoKSBmdW5jdGlvbnMgdG8gdGhlCisgICAgdXVpZCBsaWJyYXJ5LgorICAqIEFkZHJlc3MgR05VL0tGcmVlQlNEIHBvcnRhYmlsaXR5IGlzc3VlcyAoQ2xvc2VzOiAjMjM5OTM0KQorICAqIFVzZSB1bnNpZ25lZCBmb3IgMSBiaXQgd2lkZSBiaXRmaWVsZHMgaW4gaGVhZGVyIGZpbGVzIHRvIGF2b2lkCisgICAgSW50ZWwgQysrIGNvbXBpbGVyIHdhcm5pbmdzLgorICAqIFVzZSBDOTkgc3RkaW50LmggdHlwZXMgaW4gdGhlIHV1aWQgbGlicmFyeQorICAqIEZpeCB1cCBhbmQgY2xlYW51cCB1dWlkIG1hbiBwYWdlcworICAqIENoYW5nZSB0aGUgbGljZW5zaW5nIG9mIHRoZSB1dWlkIG1hbiBwYWdlcyB0byBiZSAzLWNsYXVzZSBCU0QuCisgICogRml4IHRoZSBpbml0cmQgc2NyaXB0cyBzbyB0aGF0IHRoZSBhdXRvbWF0aWMgZXh0MyBqb3VybmFsCisgICAgY29udmVyc2lvbiBhY3R1YWxseSB3b3JrcyBjb3JyZWN0bHk7IGFsc28gYWxsb3cgY29udmVyc2lvbiBvZiB0aGUgcm9vdAorICAgIGZpbGVzeXN0ZW0gZnJvbSBleHQzIGJhY2sgdG8gZXh0MiAgKENsb3NlczogIzI0MTE4MykKKyAgKiBNaW5vciBtYW4gcGFnZSBmaXhlcyAoQ2xvc2VzOiAjMjQxOTQwLCAyNDI5OTUpCisgICogVXNlIHRoZSBERUJVR0ZTX1BBR0VSIGVudmlyb25tZW50IHZhcmlhYmxlIGluIHByZWZlcmVuY2UgdG8gUEFHRVIKKyAgICAoQ2xvc2VzOiAjMjM5NTQ3KQorICAqIEFkZGVkIEZyZW5jaCB0cmFuc2xhdGlvbgorICAqIEJlIGZsZXhpYmxlIGFib3V0IHRoZSBuYW1lIG9mIHRoZSBBQ1BJIGRldmljZSB0aGF0IGNvb3Jlc3BvbmRzIHRvCisgICAgdGhlIEFDIGFkYXB0ZXIgKENsb3NlczogIzI0MjEzNikKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sIDEyIEFwciAyMDA0IDEyOjM4OjM0IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zNS00KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBidWcgaW4gdGhlIGJsa2lkIGxpYnJhcnkgKGludHJvZHVjZWQgaW4gMS4zNS0zKSB3aGljaCBjYXVzZWQKKyAgICB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gY29tcGxldGVseSBtYWxmdW5jdGlvbi4gIChDbG9zZXM6ICMyMzkxOTEpCisgICogTWFrZSB0aGUgZGVidWdmcyBjb21tYW5kJ3MgbGluayBjb21tYW5kIHNldCB0aGUgZmlsZXR5cGUgaW5mb3JtYXRpb24KKyAgICBjb3JyZWN0bHkuCisgICogVXBkYXRlIHRoZSBQb2xpc2gsIFN3ZWRpc2gsIGFuZCBUdXJraXNoIHRyYW5zbGF0aW9ucworICAqIEFkZCBhbiAtbyBvcHRpb24gdG8gdGhlIGJsa2lkIHByb2dyYW0gd2hpY2ggYWxsb3dzIHRoZSB1c2VyIHRvCisgICAgY29udHJvbCB0aGUgb3V0cHV0IGZvcm1hdCBvZiBibGtpZC4KKyAgKiBGaXhlZCBhbmQgY2xlYW5lZCB1cCB0aGUgdHVuZTJmcyBhbmQgYmxraWQgbWFuIHBhZ2VzIChDbG9zZXM6ICMyMzg3NDEpCisgICogSW1wcm92ZSBVVUlEIGdlbmVyYXRpb24gYWxnb3JpdGhtICh1c2UgYWxsIDE0IGJpdHMgaW4gdGhlIGNsb2NrIHNlcXVlbmNlKQorICAqIENoYW5nZSB0aGUgbGljZW5zZSBvbiB0aGUgVVVJRCBsaWJyYXJ5IHRvIGJlIDMtY2xhdXNlIEJTRC4KKyAgKiBSZW1vdmUgdGhlIG9ubHktcGFydGlhbGx5LWltcGxlbWVudGVkIC1wIG9wdGlvbiB0byBibGtpZC4KKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDIxIE1hciAyMDA0IDIwOjE3OjAzIC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zNS0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1lbnRpb24gZTJpbWFnZSdzIGxpbWl0YXRpb24gaW4gd3JpdGluZyBhIG5vcm1hbCBpbWFnZSBmaWxlIHRvCisgICAgc3Rkb3V0IChDbG9zZXM6ICMyMzYzODMpCisgICogT25seSB1c2UgQkxLR0VUU0laRTY0IG9uIExpbnV4IDIuNiBzaW5jZSBpdCBpcyB1bnJlbGlhYmxlIG9uIExpbnV4IDIuNC4KKyAgICAoQ2xvc2VzOiAjMjM2NTI4KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIE1vbiwgIDggTWFyIDIwMDQgMTQ6MTk6MTUgLTA1MDAKKworZTJmc3Byb2dzICgxLjM1LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogVXNlIDY0LWJpdCBpb2N0bCdzIGlmIHByZXNlbnQgdG8gZGV0ZXJtaW5lIHRoZSA2NC1iaXQgc2l6ZSBvZiBhIGRldmljZQorICAqIEFkZCB0dW5lMmZzIHRvIHRoZSBlMmZzcHJvZ3MgdWRlYiBwYWNrYWdlIChDbG9zZXM6ICMyMzU2MzkpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAgMiBNYXIgMjAwNCAxMDoxMzozOSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzUtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbi4KKyAgKiBGaXggImJhZGJsb2NrcyAtdCByYW5kb20iLiAoQ2xvc2VzOiAjMjM0ODI4KQorICAqIEZpeCAiZTJmc2NrIC1rIi4gIChDbG9zZXM6ICMyMzQ5OTMpCisgICogQ2hhbmdlIGJhZGJsb2NrJ3MgZGVmYXVsdCBudW1iZXIgb2YgYmxvY2tzIHRlc3RlZCBhdCBvbmNlIGZyb20KKyAgICAxNiB0byA2NC4gIChDbG9zZXM6ICMyMzIyNDApCisgICogc3MtZGV2IGFuZCBjb21lcnItZGV2IG5vdyB1c2UgYSB2ZXJzaW9uZWQgZGVwZW5kZW5jeSBmb3IgbGlic3MyIGFuZAorICAgIGxpYmNvbWVycjIsIHJlc3BlY3RpdmVseS4gIChDbG9zZXM6ICMyMzUyODApCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU2F0LCAyOCBGZWIgMjAwNCAxMDoxNDoxOSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwNC4wMS4zMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFkZCBhIG5ldyAtayBvcHRpb24gdG8gZTJmc2NrIHdoaWNoIGtlZXBzIHRoZSBleGlzdGluZyBiYWRibG9ja3MKKyAgICBsaXN0IHdoZW4gdXNpbmcgdGhlIC1jIG9wdGlvbi4gIChDbG9zZXM6ICMyMjkxMDMpCisgICogVXBkYXRlIGRlYnVnZnMgdG8gc3VwcG9ydCBuZXcgbGFyZ2UgbWFqb3IvbWlub3IgZGV2aWNlIG51bWJlcnMKKyAgICBzdXBwb3J0ZWQgYnkgTGludXggMi42LiAgKENsb3NlczogIzg2NTI4OSkKKyAgKiBGaXggbWFrZWZpbGVzIHNvIHRoYXQgaXQgd2lsbCBidWlsZCBjb3JyZWN0bHkgd2l0aCAtLWVuYWJsZS1wcm9maWxlLgorICAqIEFkZCAtbWllZWUgd2hlbiBjb21waWxpbmcgd2l0aCBHQ0Mgb24gYW4gQWxwaGEuCisgICogRml4IGUyZnNjayBwcmVlbiBtb2RlIG1lc3NhZ2VzIHVzaW5nIHBhc3MgMUIvQy9ELgorICAqIEZpeCB0aGUgZGVidWdmcyBtYW4gcGFnZS4gIChDbG9zZXM6ICMyMzI0MDYpCisgICogRml4IHRoZSBleHQyZnMuaCBoZWFkZXIgZmlsZSB0byB3b3JrIGNvcnJlY3RseSB3aXRoIEMrKy4KKyAgKiBlMmZzY2sgYW5kIGRlYnVnZnMgbm93IGNvcnJlY3RseSBkZWFscyB3aXRoIHN5bWxpbmtzIHRoYXQgaGF2ZQorICAgIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aG9zZSBjcmVhdGVkIGJ5IFNFIExpbnV4LgorICAgIChDbG9zZXM6ICMyMzIzMjgpCisgICogTWFrZSBzdXJlIGZpbGVmcmFnIGFjdHVhbGx5IGdldHMgY29tcGlsZWQgdW5kZXIgTGludXggKENsb3NlczogIzIzMDk5MikKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsIDI0IEZlYiAyMDA0IDAwOjE2OjQzIC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zNCsxLjM1LVdJUC0yMDA0LjAxLjMxLTEpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogRml4IGJ5dGUgc3dhcCBidWdzIGluIGUyZnNjayB0aGF0IGNhdXNlZCB0aGUgam91cm5hbCBiYWNrdXAgbG9jYXRpb24KKyAgICBpbiB0aGUgc3VwZXJibG9jayBhbmQgc3ltbGlua3MgY3JlYXRlZCBieSBTRSBMaW51eCB0byBiZSBjbGVhcmVkCisgICAgYnkgZTJmc2NrIG9uIGJpZy1lbmRpYW4gbWFjaGluZXMuICAoQ2xvc2VzOiAjMjI4NzIzKQorICAqIENoYXR0ciBub3cgc3RvcHMgcHJvY2Vzc2luZyBvcHRpb25zIHdoZW4gaXQgc2VlcyAnLS0nLiAgKENsb3NlczogIzIyNTE4OCkKKyAgKiBBZGQgRnJlZUJTRCBwb3J0IGZpeHVwcworICAqIFVzZSB0aGUgREVCVUdGU19QQUdFUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBwcmVmZXJlbmNlIHRvIFBBR0VSLgorICAgIERvY3VtZW50IHRoYXQgbGVzcyBpcyBhIHJlYWxseSwgcmVhbGx5LCByZWFsbHkgYmFkIHBhZ2VyIHRvIHVzZQorICAgIGZvciBkZWJ1Z2ZzICh1bmZvcnR1bmF0ZWx5LCBEZWJpYW4gcG9saWN5IHNheXMgd2UgbXVzdCB1c2UKKyAgICAvdXNyL2Jpbi9wYWdlciBldmVuIGlmIGl0IHJlc3VsdHMgaW4gdmVyeSBhbm5veWluZyBiZWhhdmlvdXIgZm9yCisgICAgdGhlIHVzZXIgc2luY2UgJ2xlc3MnIGlzIHVzZWQgaW4gcHJlZmVyZW5jZSB0byAnbW9yZScgdW5sZXNzIGl0IGlzCisgICAgZ2xvYmFsbHkgb3ZlcnJpZGVuIHZpYSB1cGRhdGUtYWx0ZXJuYXRpdmVzKDgpLiAgT2gsIHdlbGwuICBEZWJpYW4KKyAgICB1c2VycyBhcmUgZW5jb3VyYWdlZCB0byBzZXQgREVCVUdGU19QQUdFUiB0byBiZSAibW9yZSIgaW4gdGhlaXIKKyAgICBkb3QgZmlsZXMgdG8gYXZvaWQgdGhpcyBicmFpbiBkYW1hZ2UpLgorICAqIEZpeCBsaWJ1dWlkMS11ZGViIHNvIHRoYXQgaXQgcHJvdmlkZXMgbGlidXVpZDEuICAoQ2xvc2VzOiAjMjI5NjMzKQorICAqIEZpeCBidWcgaW4gdXVpZCBsaWJyYXJ5IHdoZW4gdGhlcmUgaXMgbm8gbmV0d29yayBjYXJkIGFuZCB0aGUKKyAgICBsaWJyYXJ5IGlzIGdlbmVyYXRpbmcgYSB0aW1lLWJhc2VkIHV1aWQuICBUaGUgcmFuZG9tIE1BQyBhZGRyZXNzCisgICAgd2FzIG5vdCBjb3JyZWN0bHkgZ2VuZXJhdGVkIHRvIGJlIGEgbXVsdGljYXN0IGFkZHJlc3MuCisgICogSW5zdGFsbCB0aGUgZmlsZWZyYWcgcHJvZ3JhbS4KKyAgKiBEb24ndCB0cnkgdG8gY29tcGlsZSBmaWxlZnJhZyBvbiBub24tTGludXggcGxhdGZvcm1zLiAoQ2xvc2VzOiAjMjI2NDU2KQorICAqIE1pbm9yIG1hbnVhbCBwYWdlIGNsYXJpZmljYXRpb25zIChDbG9zZXM6ICMyMjI2MDYsICMyMTQ5MjApCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU2F0LCAzMSBKYW4gMjAwNCAyMDo1NzozNSAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwMy4xMi4wNy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCB0ZXN0IGZvciAvZXRjL21raW5pdHJkL3NjcmlwdHMvZTJmc3Byb2dzIHRvIG1ha2Ugc3VyZSBpdCBnZXRzCisgICAgcmVtb3ZlZC4gIChDbG9zZXM6ICMyMTMyNzUpCisgICogRGVidWdmcyBub3cgc2VhcmNoZXMgZm9yIHRoZSBhcHByb3ByaWF0ZSBwYWdlciB0byB1c2UsIGJlZ2lubmluZworICAgIHdpdGggL3Vzci9iaW4vcGFnZXIsIGFuZCB0aGVuIGZhbGxpbmcgYmFjayB0byAnbGVzcycgYW5kICdtb3JlJy4KKyAgICAoQ2xvc2VzOiAjMjIxOTc3KQorICAqIEZpeGVkIG1hbmdsZWQgZW5jb2RpbmcgaW4gQ3plY2ggbG9jYWxlIGZpbGUuICAoQ2xvc2VzOiAjMjE0NjMzKQorICAqIEZpeCBidWcgd2hlcmUgdXNpbmcgZGVidWdmcyB0byBjb3B5IGEgZmlsZSBmcm9tIC9kZXYvbnVsbCBjYXVzZWQKKyAgICBpbiBjb3JyZWN0IG1vZGUgYml0cy4gIChDbG9zZXM6ICMyMTc0NTYpCisgICogRml4ZWQgYSBidWcgd2hlcmUgZTJmc2NrIHdvdWxkIGJvbWIgb3V0IGlmIGEgam91cm5hbCBuZWVkZWQgdG8gYmUKKyAgICByZXBsYXllZCB3aGVuIHVzaW5nIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrLgorICAqIE1pbm9yIG1hbnVhbCBwYWdlIGZpeHVwcy9jbGVhbnVwcy4KKyAgKiBEZWJ1Z2ZzJ3MgbWtkaXIgY29tbWFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwYW5kIHRoZSBkaXJlY3RvcnkgaWYKKyAgICBuZWNlc3NhcnkuICAoQ2xvc2VzOiAjMjE3ODkyKQorICAqIEZpeCBhIGJ1ZyBpbiBlMmZzY2sgd2hpY2ggY2F1c2VkIGl0IHRvIGluY29ycmVjdGx5IGZpeCBhIGZpbGVzeXN0ZW0KKyAgICB3aGVuIHJlY29ubmVjdGluZyBhIGRpcmVjdG9yeSByZXF1aXJlcyBjcmVhdGluZyBhIGxvc3QrZm91bmQKKyAgICBkaXJlY3RvcnkuICAoQ2xvc2VzOiAjMjE5NjQwKQorICAqIEFkZCBTcGFuaXNoIHRyYW5zbGF0aW9uLgorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFdlZCwgMjQgRGVjIDIwMDMgMTQ6MjQ6MTQgLTA1MDAKKworZTJmc3Byb2dzICgxLjM0KzEuMzUtV0lQLTIwMDMuMTIuMDctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBBZGRlZCByZWdyZXNzaW9uIHRlc3RzIGZvciBta2UyZnMgYW5kIGR1bXBlMmZzLgorICAqIFN1cHBvcnQgMi42IGtlcm5lbCBoZWFkZXIgZmlsZXMuICAoQ2xvc2VzOiAjMjIxNzc4KQorICAqIEZpeCBidWcgd2hpY2ggY291bGQgYSBjb3JlIGR1bXAgaWYgYSBub24tZXhpc3RlbnQgTEFCRUwgb3IgVVVJRAorICAgIHNwZWNpZmllciBpcyBwYXNzZWQgdG8gZTJmc2NrIG9yIHR1bmUyZnMuCisgICogRml4IGhhbmRsaW5nIG9mIGNvcnJ1cHRlZCBpbmRpcmVjdCBibG9ja3MgaW4gdGhlIGJhZCBibG9jayBpbm9kZS4KKyAgKiBJZiB0aGUgbnVtYmVyIG9mIG1vdW50cyB1bnRpbCB0aGUgbmV4dCBmb3JjZWQgZmlsZXN5c3RlbSBjaGVjayBpcyBsZXNzCisgICAgdGhhbiA2LCBtZW50aW9uIHRoaXMgdG8gdGhlIHVzZXIuICAoQ2xvc2VzOiAjMTU3MTk0KQorICAqIEUyZnNjayB3aWxsIHRyeSB0byBhdm9pZCBkb2luZyBhIGZvcmNlZCBmaWxlc3lzdGVtIGNoY2VrIGlmIGEgc3lzdGVtCisgICAgaXMgcnVubmluZyBvbiBiYXR0ZXJpZXMgYWNjb3JkaW5nIHRvIEFQTSBvciBBQ1BJLiAgKENsb3NlczogIzIwNTE3NykKKyAgKiBGaXggcHJvYmxlbXMgaW4gdGhlIEdlcm1hbiB0cmFuc2xhdGlvbi4gIChDbG9zZXM6ICMyMDAwMDg2KQorICAqIFVwZGF0ZWQgU3dlZGlzaCB0cmFuc2xhdGlvbiBhbmQgYWRkZWQgUG9saXNoIHRyYW5zbGF0aW9uLgorICAqIEZpeCBzaWduZWQgdnMgdW5zaWduZWQgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIHRoZSBjb21fcmlnaHQgZnVuY3Rpb24gdG8KKyAgICBzZWcgZmF1bHQuICAoQ2xvc2VzOiAjMjEzNDUwKQorICAqIEFkZCBsaWJ1dWlkMS11ZGViIChDbG9zZXM6ICMyMjE3NzcpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU2F0LCAyMiBOb3YgMjAwMyAxMTo1MToxMyAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwMy4wOC4yMS0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFkanVzdCB0aGUgbWFuIHBhZ2UgZGVzY3JpcHRpb25zIHNvIHRoYXQgImFwcm9wb3MgZXh0MiIgb3IKKyAgICAiYXByb3BvcyBleHQzIiB3aWxsIGZpbmQgYWxsIG9mIHRoZSBlMmZzcHJvZ3MgbWFuIHBhZ2VzLgorICAgIChDbG9zZXM6ICMyMDY4NDUpCisgICogUHJvdGVjdCBhZ2FpbnN0IGEgcG90ZW50aWFsIGNvcmUgZHVtcCBpbiBlMmZzY2sgd2hlbiBwcmludGluZyBhCisgICAgbWVzc2FnZSBhYm91dCBhIGJhY2t1cCBzdXBlcmJsb2NrLgorICAqIEZpeCBhIGJ1ZyBpbiBta2UyZnMgd2hpY2ggY2F1c2VkIC1UIGxhcmdlZmlsZSBvciAtVCBsYXJnZWZpbGU0IHRvCisgICAgY29yZSBkdW1wIGR1ZSB0byBhIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3IuICAoQ2xvc2VzOiAjMjA3MDgyKQorICAqIEZvcmNlIGUyZnNwcm9ncyB0byB1c2UgdGhlIG1hdGNoZWQgdmVyc2lvbiBvZiBlMmZzbGlicy4gIChDbG9zZXM6ICMyMDgxMDMpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAzMSBBdWcgMjAwMyAyMTo0OTo1MiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwMy4wOC4yMS0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFdoZW4gbW92aW5nIHRoZSBqb3VybmFsIG9yIGJhY2tpbmcgdXAgdGhlIGpvdXJuYWwgaW5vZGUKKyAgICBpbmZvcm1hdGlvbiwgbWFrZSBzdXJlIGUyZnNjayB1cGRhdGVzIGFsbCB0aGUgc3VwZXJibG9ja3MsIGFuZCBub3QKKyAgICBqdXN0IHRoZSBtYXN0ZXIgc3VwZXJibG9jay4KKyAgKiBDaGFuZ2UgdGhlIHByaW9yaXR5IG9mIGxpYmJsa2lkMS11ZGViIHRvIGJlIHJlcXVpcmVkIGluc3RlYWQgb2YKKyAgICBzdGFuZGFyZCwgdG8gbWF0Y2ggdGhlIG92ZXJyaWRlIGZpbGUuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAyMSBBdWcgMjAwMyAwODo1MDozNCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwMy4wOC4yMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBjb21waWxlX2V0IHRvIG91dHB1dCB0aGUgY29ycmVjdCBwcm90b3R5cGUgZm9yCisgICAgaW5pdGlhbGl6ZV94eHhfZXJyX3RhYmxlX3IoKSBpbiB0aGUgaGVhZGVyIGZpbGUuICAoQ2xvc2VzOiAjMjA0MzMyKQorICAqIEUyZnNjayB3aWxsIGF2b2lkIHByaW50aW5nIF5BIGFuZCBeQiBjaGFyYWN0ZXJzIGJyYWNrZXRpbmcgdGhlCisgICAgcHJvZ3Jlc3MgYmFyIHdoZW4gc3Rkb3V0IGlzIGEgdHR5IGRldmljZS4gIChDbG9zZXM6ICMyMDQxMzcpCisgICogQWRkIHN1cHBvcnQgZm9yIHN0b3JpbmcgdGhlIGpvdXJuYWwgaW5vZGUgbG9jYXRpb24gaW4gdGhlIHN1cGVyYmxvY2sKKyAgICBzbyB0aGF0IGUyZnNjayBjYW4gcmVjb3ZlciBmcm9tIGEgY29ycnVwdGVkIGlub2RlIHRhYmxlIGFmdGVyIGEgcG93ZXIKKyAgICBmYWlsdXJlLgorICAqIE1vdmUgdGhlIGluaXRyZCBzY3JpcHQgZnJvbSAvZXRjL21raW5pdHJkL3NjcmlwdHMgdG8KKyAgICAvdXNyL3NoYXJlL2luaXRyZC10b29scy9zY3JpcHRzIHNvIHRoYXQgbWtpbml0cmQgd2lsbCBub3QgcmVtb3ZlCisgICAgdGhlIGZpbGUgd2hlbiBpdCBpcyB1bmluc3RhbGxlZC4gIChDbG9zZXM6ICMyMDQwMTkpCisgICogUmVtb3ZlIHVubmVlZGVkIGZpbGVzIGluIGRlYmlhbiBkaXJlY3Rvcnk6IGJsa2lkLWRldi5zdWJzdHZhcnMgYW5kCisgICAgZTJmc3Byb2dzLWJmLmxpbnRpYW4tb3ZlcnJpZGVzLiAgKENsb3NlczogIzIwMzkxNCkKKyAgKiBTdXBwb3J0ICJub29wdCIgaW4gREVCX0JVSUxEX09QVElPTlMgaW5zdGVhZCBvZiAiZGVidWciLgorICAgIChDbG9zZXM6ICMyMDM5MTQpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAyMSBBdWcgMjAwMyAwMTo0Nzo1OCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzQrMS4zNS1XSVAtMjAwMy4wOC4wMS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBPX0RJUkVDVCB0ZXN0IHRvIHByZXZlbnQgYmFkYmxvY2tzIGZyb20gc2NyZXdpbmcgdXAgYWZ0ZXIKKyAgICBmaW5kaW5nIGEgYmFkIGJsb2NrLiAgKENsb3NlczogIzIwMzcxMykKKyAgKiBBZGQgSGVpbWRhbCBjb21waWxlX2V0IGV4dGVuc2lvbnMgZnJvbSBQaGlsaXBwIFRob21hcyAocHRob21hc0BzdXNlLmRlKQorICAqIEZpeCBwb3RlbnRpYWwgcG9pbnRlciBhbGlhc2luZyBidWdzIGNhdXNlZCBieSB0eXBlLXB1bm5pbmcgYW5kIGdjYyAzLngKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBGcmksICAxIEF1ZyAyMDAzIDEzOjQ0OjU4IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zNC0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCBlcnJvbmVvdXMgcmVmZXJlbmNlIHRvIC91c3Ivc2hhcmUvZG9jL2UyZnNwcm9ncy9odG1sLWluZm8gaW4KKyAgICAvdXNyL3NoYXJlL2RvYy1iYXNlL2xpYmV4dDJmcyAoQ2xvc2VzOiAjMjAzMTU3KQorICAqIEV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdmVyc2lvbiBvZiBsaWJibGtpZDEgbmVlZGVkIGluCisgICAgZTJmc3Byb2dzLnNobGlicy5sb2NhbCBpbiBvcmRlciB0byBhdm9pZCBwaWNraW5nIHVwIHRoZSB3cm9uZyBkZXBlZGVuY3kuCisgICAgKENsb3NlczogIzIwMzE1NykKKyAgKiBDaGFuZ2VkIHByaW9yaXR5IG9mIGxpYmJsa2lkMS11ZGViIHRvIGJlIHN0YW5kYXJkLCBub3QgcmVxdWlyZWQuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgV2VkLCAzMCBKdWwgMjAwMyAxOTo0NzozMiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzQtMS4xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5vbi1tYWludGFpbmVyIHVwbG9hZC4KKyAgKiBkb24ndCBjYWxsIGxkY29uZmlnIGluIHVkZWJzLgorICAqIGZpeCBkZXBlbmRlbmNpZXMgb2YgZTJmc3Byb2dzLXVkZWIuCisKKyAtLSBCYXN0aWFuIEJsYW5rIDx3YWxkaUBkZWJpYW4ub3JnPiAgVHVlLCAyOSBKdWwgMjAwMyAxMjoxMTo1NCArMDIwMAorCitlMmZzcHJvZ3MgKDEuMzQtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gdmVyc2lvbi4KKyAgKiBGaXhlZCBidWcgaW4gZnNjayB3aGljaCBjYXVzZWQgaXQgdG8gd2FzdGUgQ1BVIGJ5IHNwaW5uaW5nIHdoaWxlCisgICAgd2FpdGluZyBmb3IgYSBjaGlsZCBmc2NrIHByb2Nlc3MgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLgorICAqIEZpeGVkIGJ1ZyBpbiBibGtpZCBsaWJyYXJ5IHdoaWNoIHdvdWxkIGNhdXNlIGl0IHRvIHNwaW4gZm9yZXZlciBpZgorICAgIC9wcm9jIGlzIG5vdCBtb3VudGVkIGFuZCAvZXRjL2Jsa2lkLnRhYiBpcyBub3QgcHJlc2VudC4KKyAgKiBJbXByb3ZlZCB0aGUgYmxraWQgbGlicmFyeSdzIFVERidzIHByb2JpbmcgZnVuY3Rpb25zLgorICAqIEZpeGVkIHRoZSBibGtpZCBsaWJyYXJ5IHNvIGl0IHdpbGwgcmVtb3ZlIGRlbGV0ZSB0aGUgTEFCRUwKKyAgICBhdHRyaWJ1dGUgZnJvbSBpdHMgY2FjaGUgd2hlbiBhIGZpbGVzeXN0ZW0gdGhhdCBwcmV2aW91c2x5IGhhZCBhCisgICAgbGFiZWwgbm8gbG9uZ2VyIGhhcyBvbmUuCisgICogQWRkZWQgU3dlZGlzaCB0cmFuc2xhdGlvbi4KKyAgKiBSZW1vdmUgZGVidWdnaW5nIHByaW50ZiBpbiBiYWRibG9ja3MgcHJvZ3JhbSAoQ2xvc2VzOiAjMjAxNDk5KQorICAqIFNwbGl0IHNoYXJlZCBsaWJyYXJpZXMgb3V0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBpbnRvIHNlcGFyYXRlCisgICAgcGFja2FnZXM6IGxpYnNzMiwgbGliY29tZXJyMiwgbGlidXVpZDEsIGFuZCBlMmZzbGlicy4gIChDbG9zZXM6ICMyMDExNTUsCisgICAgIzIwMTE2NCkKKyAgKiBXYXJuIHRoZSB1c2VyIHdoZW4gY3JlYXRpbmcgYSBmaWxlc3lzdGVtIHdpdGggYSBqb3VybmFsIGFuZCBhIGJsb2Nrc2l6ZQorICAgIGdyZWF0ZXIgdGhhbiA0MDk2LCBzaW5jZSBzb21lIGtlcm5lbHMgZG9uJ3Qgc3VwcG9ydCBleHQzIHdpdGggbGFyZ2UKKyAgICBibG9jayBzaXplcy4gIChDbG9zZXM6ICAjMTkzNzczKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFNhdCwgMjYgSnVsIDIwMDMgMDE6MDE6NTUgLTA0MDAKKworZTJmc3Byb2dzICgxLjMzKzEuMzQtV0lQLTIwMDMuMDUuMjEtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBTZXQgdXAgRnJlZUJTRCBjb25maWd1cmF0aW9uIGRlZmF1bHRzIChDbG9zZXM6ICMxOTUyNzQpCisgICogQ2xhcmlmeSByZXNpemUyZnMgbWFuIHBhZ2UgKENsb3NlczogIzE5NTYxNikKKyAgKiBGaXggcmVzaXplMmZzIHRvIGRlYWwgd2l0aCBmaWxlc3lzdGVtIHdpdGggYmFkIGJsb2NrcworICAqIEZpeCBzcGVsbGluZyBlcnJvciBpbiBlMmZzY2sKKyAgKiBBZGQgd29ya2Fyb3VuZCBmb3IgaW50bCBsaWJyYXJ5IG9uIERhcndpbgorICAqIEZpeCBnY2MgLVdhbGwgbml0cGlja3MKKyAgKiBSb3VuZCBkb3duIHRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0gZm9yIG1rZTJmcyBhbmQKKyAgICByZXNpemUyZnMgdG8gYmUgYSBtdWx0aXBsZSBvZiB0aGUgcGFnZXNpemUgdG8gd29yayBhcm91bmQgYSBwb3RlbnRpYWwKKyAgICBMaW51eCBrZXJuZWwgYnVnCisgICogRml4IGJ1ZyBpbiBta2UyZnMgd2hlcmUgaXQgY291bGQgZGllIHdpdGggYSBmbG9hdGluZyBleGNlcHRpb24gaWYKKyAgICB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgdGhlIEJMS1NTWkdFVCBpb2N0bCAoQ2xvc2VzOiAjMTk2NzM0KQorICAqIEFkZCBjb25mbGljdHMgYWdhaW5zdCBvbGRlciB2ZXJzaW9ucyBvZiBzeXN2aW5pdCB0aGF0IGRvbid0IGNvcnJlY3RseQorICAgIGhhbmRsZSBhbiBleGl0IGNvZGUgdGhhdCBoYXMgdGhlIGJpdCAjMiBzZXQuICAoQ2xvc2VzOiAjMTgzNjc1KQorICAqIEJhZGJsb2NrcyB3aWxsIGF0dGVtcHQgdG8gdXNlIE9fRElSRUNUIGlmIGl0IGlzIHNhZmUgdG8gZG8gc28uCisgICAgKENsb3NlczogIzE5ODAwNikKKyAgKiBVc2Ugc3ltYm9saWMgbGlua3MgZm9yIGZzY2suZXh0ezIsM30gYW5kIG1rZnMuZXh0ezIsM30gaW4gdGhlIHVkZWIKKyAgICBwYWNrYWdlIHNpbmNlIGJ1c3lib3ggdGFyIGNhbid0IGRlYWwgd2l0aCBoYXJkIGxpbmtzLiAgKENsb3NlczogIzE5NjUwOCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDEyIEp1bCAyMDAzIDAzOjE2OjA4IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zMysxLjM0LVdJUC0yMDAzLjA1LjIxLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IHByb2JsZW1zIHdpdGggY29tcGlsaW5nIGUyZnNwcm9ncyB3aXRoIE5MUyBzdXBwb3J0IG9uIHdvb2R5CisgICAgKENsb3NlczogIzE5MzM3MikKKyAgKiBSZW1vdmUgdGhlIGV4dHJhbmVvdXMgZGUtdXRmLnBvIGZpbGUuCisgICogQWRkIGdldC10ZXh0IHRvIGJ1aWxkLWRlcGVuZHMuCisgICogVXNlIG5nZXR0ZXh0IChhYmJyZXZpYXRlZCB3aXRoIFBfKCkpIHRvIHNpbXBsaWZ5IHRoZSBzdGF0aXN0aWNzIHJlcG9ydGluZy4KKyAgKiBGaXggYmFkYmxvY2tzIHRvIGJlIGFibGUgdG8gc3VwcG9ydCBhcmJpdHJhcnkgNCBieXRlIHRlc3QgcGF0dGVybnMuCisgICogRml4IGJ1ZyB3aGljaCBjYXVzZWQgdXMgdG8gYWNjaWRlbnRhbGx5IGluY2x1ZGUgdGhlIEVWTVMgcGx1Z2luIGluCisgICAgdGhlIGUyZnNwcm9ncyBwYWNrYWdlICh3aGljaCBkb2Vzbid0IHdvcmssIGJ1dCBjYXVzZXMgY29uZnVzaW5nIG1lc3NhZ2VzCisgICAgdG8gc2hvdyB1cCB3aGVuIHRoZSBldm1zIGNsaWVudCBpcyBzdGFydGVkKS4KKyAgKiBJZiB0aGUgaGFyZHdhcmUgc2VjdG9yIHNpemUgb2YgYSBkZXZpY2UgaXMgbGFyZ2VyIHRoYW4gdGhlIGRlZmF1bHQKKyAgICBibG9ja3NpemUsIHVzZSB0aGUgaGFyZHdhcmUgc2VjdG9yIHNpemUgYXMgdGhlIGJsb2Nrc2l6ZSB3aGVuIGNyZWF0aW5nCisgICAgYSBmaWxlc3lzdGVtLCB0byBzb2x2ZSBwcm9ibGVtcyB3aXRoIHMvMzkwIERBU0Qncy4KKyAgKiBBZGQgYSBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IHRvIGxpYnV1aWQgdG8gbGliYmxraWQgKENsb3NlczogIzE5NDA5NCkKKyAgKiBBZGQgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBhIGR1bXBfdW51c2VkIGNvbW1hbmQgKENsb3NlczogIzc5MTY0KQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgMTggTWF5IDIwMDMgMDE6MjQ6MTYgLTA0MDAKKworZTJmc3Byb2dzICgxLjMzLTUpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQ2xhcmlmeSBibG9ja3NpemUgdW5pdHMgd2hlbiBkaXNwbGF5aW5nIG1lc3NhZ2VzIGluIHJlc2l6ZTJmcywgYW5kCisgICAgc3VwcG9ydCB1c2luZyBzdWZmaXhlcyAoc2VjdG9ycywga2lsb2J5dGVzLCBtZWdhYml0ZXMsIGdpZ2FieXRlcykKKyAgICB0byB0aGUgc2l6ZSBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgdW5pdHMuICAoQ2xvc2VzOiAjMTg5ODE0KQorICAqIEZpeCBkZWJ1Z2ZzIGNvcmUtZHVtcGluZyBwcm9ibGVtIGNhdXNlZCBieSBnZXRvcHQuICAoV29ya3MgYXJvdW5kOiAjMTkyODM0KQorICAqIEFkZCBwYWNrYWdlIGRlcGVuZGVuY3kgdG8gc2hsaWJzIGZvciBjb21lcnIgdG8gaW5kaWNhdGUgc3VwcG9ydAorICAgIGZvciBrdGggY29tcGF0aWJpbGl0eS4gIChDbG9zZXM6ICMxOTMwOTYpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVHVlLCAxMyBNYXkgMjAwMyAyMzo0NTowOCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzMtNCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGQgcmVwbGFjZXMgZmllbGQgdG8gY29tZXJyLWRldiB0byByZXNvbHZlIGEgZmlsZSBjb25mbGljdCB3aXRoCisgICAgL3Vzci9pbmNsdWRlL2NvbV9lcnIuaCBhbmQgdGhlIGxpYmtyYjUtZGV2IHBhY2thZ2UuICAoQ2xvc2VzOiAjMTkyMjc3KQorICAqIEFkZCAtdCBvcHRpb24gdG8gYmFkYmxvY2tzIHRvIGNvbnRyb2wgdGhlIHRlc3QgcGF0dGVybiB1c2VkLgorICAqIFJlbW92ZSBlMmZzcHJvZ3MtYmYgcGFja2FnZSwgYXMgaXQgaXMgb2Jzb2xldGUuIChDbG9zZXM6ICMxODM0NTMpCisgICogUmVtb3ZlIE5MUyBzdXBwb3J0IGZyb20gZTJmc3Byb2dzLXVkZWIuICBTYXZlIDUuNWsgb24gdGhlIGJvb3QKKyAgICBmbG9wcGllcyAvIGluc3RhbGwgbWVkaWEuCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgVGh1LCAgOCBNYXkgMjAwMyAxMDoyNTowNSAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzMtMykgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGQgZnVsbCBIZWltZGFsbC9LZXJiZXJvczQta3RoIGNvbXBhdGliaWxpdHkgdG8gY29tX2VyciByb3V0aW5lcy4KKyAgKiBEZWNsYXJlIGNvbWVyci1kZXYgYXMgcmVwbGFjaW5nIDw8IGUyZnNsaWJzLWRldiAxLjMzLTIsIHRvIGF2b2lkCisgICAgZXJyb3JzIHdoZW4gdXBncmFkaW5nIHRvIHRoZSBuZXcgdmVyc2lvbnMgb2YgY29tZXJyLWRldiBhbmQKKyAgICBlMmZzbGlicy1kZXYKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBUdWUsICA2IE1heSAyMDAzIDAwOjI5OjQ3IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zMy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeCB1cCBOTFMgc3VwcG9ydAorICAgICAtIEZpeCBtZXNzYWdlIGFiYnJldmlhdGlvbnMgc3VwcG9ydCAoaS5lLiwgQGcgLS0+IGdyb3VwKQorICAgICAtIFVwZGF0ZSB0byBnZXR0ZXh0IDAuMTEuNQorICAgICAtIEFkZCBDemVjaCB0cmFuc2xhdGlvbgorICAgICAtIEluc3RhbGwgbWVzc2FnZSBjYXRhbG9ncworICAgICAtIE90aGVyIG1pc2NlbGxhbmVvdXMgTkxTIGJ1ZyBmaXhlcworICAqIEFkZCBuZXcgZGVidWdmcyBjb21tYW5kLCBpbWFwLCB3aGljaCBwcmludHMgdGhlIGxvY2F0aW9uIG9mIGEKKyAgICBzcGVjaWZpZWQgaW5vZGUgaW4gdGhlIGlub2RlIHRhYmxlLgorICAqIFB1dCAvdXNyL2luY2x1ZGUvY29tX2Vyci5oIGluIGNvbWVyci1kZXYgaW5zdGVhZCBvZiBlMmZzbGlicy1kZXYuCisgICAgKENsb3NlczogIzE5MTg5OSkKKyAgKiBBZGQgc3VwcG9ydCBmb3IgT1Ytc3R5bGUgY29udGludWF0aW9ucyBpbiBjb21waWxlX2V0LiAgKENsb3NlczogIzE5MTkwMCkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBNb24sICA1IE1heSAyMDAzIDE4OjEzOjEyIC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uIChDbG9zZXM6ICMxODk2ODcpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgTW9uLCAyMSBBcHIgMjAwMyAxMzo0OTo1MiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzIrMS4zMy1XSVAtMjAwMy4wNC4xNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSB2ZXJzaW9uCisgICAgIC0gQWRkIG5ldyB1dGlsaXR5IHByb2dyYW0sIGxvZ3NhdmUsIHRvIGNhcHR1cmUgdGhlIG91dHB1dCBvZiBmc2NrCisgICAgICAgZHVyaW5nIHRoZSBib290IHNlcXVlbmNlCisgICogQWRkIHN1cHBvcnQgZm9yIHRoZSAtYSBhbmQgLXMgb3B0aW9ucyB0byBsb2dzYXZlLgorICAqIENoYW5nZSBlMmZzY2sgdG8gYnJhY2tldCBpdHMgcHJvZ3Jlc3MgYmFyIG91dHB1dCB3aXRoIGN0cmwtQSBhbmQgY3RybC1CCisgICAgY2hhcmFjdGVycywgc28gdGhhdCBsb2dzYXZlIC1zIGNhbiBvbWl0IHdyaXRpbmcgdGhlIHByb2dyZXNzIGJhciBvdXRwdXQKKyAgICB0byB0aGUgbG9nIGZpbGUuCisgICogQXZvaWQgcHJpbnRpbmcgdGhlIHZlcnNpb24gYmFubmVyIGZvciBta2UyZnMgaWYgdGhlIC1xIG9wdGlvbiBpcworICAgIHNwZWNpZmllZC4gIChDbG9zZXM6ICMxNzI3MTYpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgV2VkLCAxNiBBcHIgMjAwMyAxNToyNzoyMCAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMzIrMS4zMy1XSVAtMjAwMy4wMy4zMC0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFByb3ZpZGUgL3Vzci9pbmNsdWRlL2NvbV9lcnIuaCwgd2hpY2ggd2FzIHByZXZpb3VzbHkgcHJvdmlkZWQgYnkgdGhlCisgICAgbGlia3JiNS1kZXYgcGFja2FnZQorICAqIENoYW5nZSB0aGUgc2VjdG9pbiBvZiBjb21fZXJyLWRldiwgc3MtZGV2LCB1dWlkLWRldiwgbGliYmxraWQtZGV2LAorICAgIGUyZnNsaWJzLWRldiB0byBsaWJkZXZlbAorICAqIEFkZCBsaWJibGtpZDEtdWRlYiBwYWNrYWdlIGZvciB0aGUgRGViaWFuIEluc3RhbGxlci4KKyAgKiBVc2UgdGhlIFNTX1JFQURMSU5FX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gY29udHJvbCB0aGUgc2VhcmNoCisgICAgZm9yIGEgc3VpdGFibGUgcmVhZGluZSBsaWJyYXJ5LgorICAqIEZpeCBidWcgaW4gbWtlMmZzLCB3aGljaCB3YXMgd2FzIGluY29ycmVjdGx5IGNoZWNraW5nIHRoZSBhcmd1bWVudAorICAgIHRvIHRoZSAtZyBvcHRpb24gaWYgdGhlIGRlZmF1bHQgYmxvY2sgc2l6ZSBpcyB1c2VkLiAgKENsb3NlczogIzE4ODMxOSkKKyAgKiBVcGRhdGUgbWFuIHBhZ2VzLiAgKENsb3NlczogIzE4ODMxOCkKKyAgKiBNa2UyZnMgY2FuIGJlIGdpdmVuIGEgbWluaW11bSBibG9jayBzaXplIGJ5IHBhc3NpbmcgaW4gYSBuZWdhdGl2ZQorICAgIG51bWJlciB0byB0aGUgLWIgb3B0aW9uLgorICAqIFVwZGF0ZSB0byBzdGFuZGFyZHMgMy41LjkKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDEyIEFwciAyMDAzIDAyOjUyOjE3IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4zMisxLjMzLVdJUC0yMDAzLjAzLjMwLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRml4IFhGUyBzdXBlcmJsb2NrIGRlZmluaXRpb24uICBBZGQgc3VwcG9ydCB0byBleHRyYWN0IFVVSUQgYW5kCisgICAgbGFiZWxzIGZvciBKRlMgYW5kIFJPTUZTLgorICAqIE1ha2UgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIG1vcmUgcGFyYW5vaWQgYWJvdXQgcG90ZW50aWFsbHkgYnVnZ3kKKyAgICAvZGV2L3JhbmRvbSBkZXZpY2VzLgorICAqIFRoZSBiYWRibG9ja3MgcHJvZ3JhbSBub3cgZmx1c2hlcyBpdHMgb3V0cHV0IGFzIGl0IGRpc2NvdmVycyBiYWQgYmxvY2tzLgorICAqIEltcG9ydGVkIGJ1ZyBmaXhlcyB0byBFVk1TIGRyaXZlciBmcm9tIHRoZSBFVk1TIDIuMCB0cmVlLiAgRml4ZWQgYQorICAgIGZldyBwb3RlbnRpYWwgaGFuZ3MsIGFuZCBlbGltaW5hdGVkIGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsuCisgICogRTJmc2NrIG5vdyB1cGRhdGVzIHRoZSBnbG9iYWwgZnJlZSBibG9jayBhbmQgaW5vZGUgY291bnRlcnMgZnJvbQorICAgIHRoZSBibG9jayBncm91cCBzcGVjaWZpYyBjb3VudGVycyBxdWlldGx5LiAgVGhpcyBpcyBuZWVkZWQgZm9yIGFuCisgICAgZXhwZXJpbWVudGFsIGtlcm5lbCBwYXRjaCB3aGljaCBpbXByb3ZlcyBTTVAgc2NhbGFiaWxpdHkgYnkgbm90CisgICAgbG9ja2luZyB0aGUgZW50aXJlIGZpbGVzeXN0ZW0gZHVyaW5nIGJsb2NrIG9yIGlub2RlIGFsbG9jYXRpb247IGlmCisgICAgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IHVubW91dG5lZCBjbGVhbmx5LCB0aGUgZ2xvYmFsIGNvdW50cyBtYXkgbm90CisgICAgYmUgYWNjdXJhdGUuCisgICogRml4IGEgYnVnIGluIGZzY2sgd2hpY2ggY2FuIGNhdXNlIGl0IHRvIGhhbmcgdHJ5aW5nIHRvIGFjY2VzcyB0aGUKKyAgICBmbG9wcHkgZGlzayBpZiB0aGVyZSB0aGUgZmxvcHB5IGRyaXZlIGhhcyBmaWxlc3lzdGVtIHR5cGUgb2YKKyAgICAnYXV0bycuICAoQ2xvc2VzOiAjMTg3ODEyKQorCisgLS0gVGhlb2RvcmUgWS4gVHMnbyA8dHl0c29AbWl0LmVkdT4gIFN1biwgIDYgQXByIDIwMDMgMjM6MTM6NTAgLTA0MDAKKworZTJmc3Byb2dzICgxLjMyKzEuMzMtV0lQLTIwMDMuMDMuMzAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBDaGFuZ2UgY29tcGlsZV9ldCB0byBnZW5lcmF0ZSBoZWFkZXIgZmlsZXMgdGhhdCB1c2UgPGV0L2NvbV9lcnIuaD4KKyAgICBpbnN0ZWFkIG9mIDxjb21fZXJyLmg+LCBzbyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBoZWFkZXIgZmlsZQorICAgIGlzIHVzZWQuICBSZW1vdmUgbGVnYWN5IEsmUiwgdmFyYXJncywgYW5kIHByZS1QT1NJWCBzaWduYWwgc3VwcG9ydC4KKyAgKiBGaXggKG9uZSBtb3JlIHRpbWUhKSBBcHBsZSBEYXJ3aW4gcG9ydCBpbiBibGtpZC9nZXRzaXplLmMKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTdW4sIDMwIE1hciAyMDAzIDIzOjM0OjU1IC0wNTAwCisKK2UyZnNwcm9ncyAoMS4zMisxLjMzLVdJUC0yMDAzLjAzLjI1LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IG1haW50YWluZXIKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiAjMTc2ODE0LCAjMTc0NzY2LCAjMTY2MDQ4LCAjMTc5NjcxLAorICAgICMxNzM2MTIsICMxNzUyMzMsICMxNzUxMTMsICMxNzA0OTcsICMxODU5NDUpCisKKyAtLSBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PiAgU3VuLCAxNiBNYXIgMjAwMyAxODowNTowOCAtMDUwMAorCitlMmZzcHJvZ3MgKDEuMzItMikgdW5zdGFibGU7IHVyZ2VuY3k9aGlnaAorCisgICogQXBwbGllZCB1cHN0cmVhbSBwYXRjaCB0byBmaXggaHRyZWUgcHJvYmxlbXMsIGFuZCB0byBkZWFjdGl2YXRlIGl0IGJ5CisgICAgZGVmYXVsdCBpbiBta2UyZnMgKENsb3NlczogIzE4MTYxNSwgIzE3OTA0MykKKyAgKiBCZSBzdXJlIHJlbW92YWwgb2YgbGliZTJmc2ltIGRvZXNuJ3QgZmFpbCwgYXMgaXQncyBub3QgYnVpbHQgb24gaHVyZAorICAgIChDbG9zZXM6ICMxNjQxMTcpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgRnJpLCAyMSBGZWIgMjAwMyAwMDoyMTo0NCArMDEwMAorCitlMmZzcHJvZ3MgKDEuMzItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiAjMTY3MTA4KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFR1ZSwgMTkgTm92IDIwMDIgMDA6MTg6MDkgKzAxMDAKKworZTJmc3Byb2dzICgxLjI5KzEuMzAtV0lQLTA5MzAtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNYWRlIG1raW5pdHJkIHNjcmlwdCB0byBza2lwIGNvbW1lbnRlZC1vdXQgbGluZXMgKENsb3NlczogIzE2MzI1MSkuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUdWUsIDE1IE9jdCAyMDAyIDAwOjE2OjA4ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yOSsxLjMwLVdJUC0wOTMwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHByZXJlbGVhc2UuCisgICogUmVwbGFjZWQgaW4gbWtpbml0cmQgc2NyaXB0ICJ0dW5lMmZzIC1qIiB3aXRoICJ0dW5lMmZzIC1PCisgICAgaGFzX2pvdXJuYWwiLCBhcyBzdWdnZXN0ZWQgYnkgVGhlb2RvcmUgVHMnbyAoQ2xvc2VzOiAjMTYyOTQ5KS4KKyAgKiBSZW1vdmUgLS1kaXNhYmxlLWRlYnVnZnMgZnJvbSBtaXBzLW5vcGljIGZsYWdzIChDbG9zZXM6ICMxNjI2NzQpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVGh1LCAgMyBPY3QgMjAwMiAwMDowNTozNiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjktMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiAjMTU5NDIzKS4KKyAgKiBGaXhlZCB0eXBvIGluIGNoYXR0ciBtYW5wYWdlIChQaGlsaXBwIE1hdHRoaWFzIEhhaG4sIENsb3NlczoKKyAgICAjMTYyMjk3KS4KKyAgKiBHZW5lcmF0ZSB1ZGViIHBhY2thZ2UgZm9yIGRlYmlhbi1pbnN0YWxsZXIgKE1hcnRpbiBTam9lZ3JlbiwgQ2xvc2VzOgorICAgICMxNjIyMTIpLgorICAqIEZpeGVkIGluc3RhbGxhdGlvbiBvZiBta2luaXRyZCBzY3JpcHQgKGRvbid0IHVzZSBkaF9pbnN0YWxsKS4gIFJlbW92ZQorICAgIGl0IGZyb20gdGhlIHdyb25nIGxvY2F0aW9uIHdoZXJlIGl0IHdhcywgaW4gcHJlaW5zdC4gIEhvcGVmdWxseSBub29uZQorICAgIG5vdGljZWQuCisgICogQWxzbyBoYXZlIG9sZCBzY3JpcHRzL2UyZnNwcm9ncy5ta2luaXRyZCByZW1vdmVkLgorICAqIEJ1bXBlZCBTdGFuZGFyZHMtVmVyc2lvbiB0byAzLjUuNiwgbm8gY2hhbmdlLiAgMy41Ljcgd2lsbCBuZWVkIGEgYml0CisgICAgb2Ygd29yayBidXQgbm90IHRvbmlnaHQuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUaHUsIDI2IFNlcCAyMDAyIDAxOjQ2OjI1ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yOC01KSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFRoZSAidGhpcyB0aW1lIGl0IHdpbGwgd29yayAhIChmYW1vdXMgbGFzdCB3b3JkcykiIHJlbGVhc2UuCisgICogTm93IHRoYXQgaXQgYnVpbGRzLCBlbnN1cmUgdGhlIGRpciBpbiB3aGljaCB3ZSBpbnN0YWxsIHRoaXMgZGFtbiBtaXBzCisgICAgbm9uLXBpYyBsaWIgZXhpc3RzLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVHVlLCAxNyBTZXAgMjAwMiAwMDowNDo0OSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjgtNCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNb3ZlZCBzZXR0aW5nIG9mIENGTEFHUyB0byB0aGUgY29ycmVjdCBwbGFjZSB3aGVuIGJ1aWxkaW5nIHRoZSBzcGVjaWFsCisgICAgbWlwcyBub24tcGljIGxpYiAoQ2xvc2VzOiAjMTU5NzU3IGFnYWluKS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFN1biwgMTUgU2VwIDIwMDIgMjE6MTk6MTkgKzAyMDAKKworZTJmc3Byb2dzICgxLjI4LTMpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRG9uJ3QgdXNlIHNwZWNpYWwgY2ZsYWdzIGF0IGNvbmZpZ3VyZSB0aW1lIHdoZW4gYnVpbGRpbmcgdGhlIHNwZWNpYWwKKyAgICBtaXBzIG5vbi1waWMgbGliLCBpbiB5ZXQgYW5vdGhlciBhdHRlbXB0IHRvIGZpeCBteSBhZGFwdGF0aW9uIG9mIHRoZQorICAgIHBhdGNoIGZyb20gdGhlIG1pcHMgdGVhbS4gIEFsc28gYWRkZWQgLS1kaXNhYmxlLW5scyB3aGljaCB3YXMgcHJlc2VudAorICAgIGluIHRoZSBvcmlnaW5hbCBwYXRjaC4KKyAgKiBSZW1vdmUgZGViaWFuL0JVSUxELU1JUFMgb24gY2xlYW4uCisgICogSW5zdGFsbCBta2luaXRyZCBzY3JpcHQgYXMgc2NyaXB0cy9lMmZzcHJvZ3MsIG5vdCBhcworICAgIHNjcmlwdHMvZTJmc3Byb2dzLm1raW5pdHJkLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgTW9uLCAgOSBTZXAgMjAwMiAyMzowMTozMSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjgtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXhlZCBteSBhZGFwYXRpb24gb2YgdGhlIG1pcHMgbm9uLXBpYyBidWlsZCAoQ2xvc2VzOiAjMTU5NzU3KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgIDYgU2VwIDIwMDIgMDA6MDM6NDUgKzAyMDAKKworZTJmc3Byb2dzICgxLjI4LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBNb24sICAyIFNlcCAyMDAyIDIzOjM0OjU1ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yNysxLjI4LVdJUC0wODE3LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHByZS1yZWxlYXNlLiAgQ2xvc2VzOiAjMTM4MDAzLCAjMTQ0NjIxLCAjMTQ1MDQ0LCAjMTUxOTkwLAorICAgICMxNTIwMjksICMxNTI4OTEsICMxNTUwMDcsICMxMzEzNTAsICMxNDcyNTYsICMxNTMxMDIuCisgICogTmV3IGJpbmFyeTogZmluZGZzLgorICAqIEFkZGVkIGV4ZWN1dGUgcGVybWlzc2lvbnMgdG8gdGhlIG1raW5pdHJkIHNjcmlwdCAodGhhbmtzIGxpbnRpYW4pLgorICAqIERvbid0IHNoaXAgRlNJTSBmb3IgRVZNUyBmb3Igbm93LgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgU3VuLCAyNSBBdWcgMjAwMiAxOTozMjoxMiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjcrMS4yOC1XSVAtMDYyNi0yKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CisKKyAgKiBSZW1vdmUgYm9ndXMgc2hsaWJzIGRlcHMgb24gImUyZnNwcm9ncyAoPj0gPGN1cnJlbnQ+KSIKKworIC0tIFRoZW9kb3JlIFkuIFRzJ28gPHR5dHNvQG1pdC5lZHU+ICBTYXQsIDE3IEF1ZyAyMDAyIDE3OjU5OjE3IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4yNysxLjI4LVdJUC0wNjI2LTEpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSBwcmUtcmVsZWFzZToKKyAgKiogU3VwcG9ydHMgdjIgQUNMIGZvcm1hdCAoQ2xvc2VzOiAjMTM4MTYwKS4KKyAgKiBSZW1vdmVkIGV4cGxpY2l0IC0tbWFuZGlyIGZsYWcsIGFzIGl0IG5vdyB1c2VzIEZIUyBtYW4gbG9jYXRpb24gYnkKKyAgICBkZWZhdWx0LgorICAqIEFkZGVkIG1raW5pdHJkIHNjcmlwdCwgInVwc3RyZWFtLWNvbnRyaWJ1dGVkIiA7KSBieSBUZWQgVHMnbyAoQ2xvc2VzOgorICAgICMxNDgwNjQpLgorICAqIEJ1aWxkIGEgbm8tcGljIHZlcnNpb24gb2YgbGliZXh0MmZzLmEgb24gbWlwcyBhbmQgbWlwc2VsLCBwYXRjaCBieQorICAgIEZsb3JpYW4gTG9ob2ZmLCBhZGFwdGVkIGZvciBzdHlsZSBjb25zaXN0ZW5jeSAoQ2xvc2VzOiAjMTQ1NDMyKS4KKyAgKiBSZW1vdmVkIHByZXN1bWFibHktdXNlbGVzcyBhbmQgcHJlc3VtYWJseS1icm9rZW4gQ0ZMQUdTIHByb3BhZ2F0aW9uLgorICAgIElmIHNvbWVvbmUgbWlzc2VzIHRoYXQsIEknbGwgYWRkICR7Q0ZMQUdTfSB0byAtLWNjb3B0cy4KKworICAqIFN3aXRjaGVkIHRvIGRlYmhlbHBlciB2NC4KKyAgKiBBZGRlZCAke21pc2M6RGVwZW5kc30gdG8gYWxsIHBhY2thZ2VzJyBEZXBlbmRzIGZpZWxkLgorCisgICogRml4ZWQgdHlwb3MgaW4gZnNjay44LCBhZGRlZCBhbiBleGFtcGxlIGZvciBjbGFyaXR5IChDbG9zZXM6CisgICAgIzE0NTA0NCkuCisgICogRml4ZWQgdHlwbyBpbiBjaGF0dHIgbWFucGFnZSAoQ2xvc2VzOiAjMTQxOTM4KS4KKyAgKiBGaXhlZCB0eXBvIGluIHR1bmUyZnMgbWFucGFnZSAoQ2xvc2VzOiAjMTQ4NTE0KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFR1ZSwgMjMgSnVsIDIwMDIgMDA6MTI6MzMgKzAyMDAKKworZTJmc3Byb2dzICgxLjI3LTIpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogVXJnZW5jeSBtZWRpdW0gc2luY2UgdGhpcyBmaXhlcyBhIFJDIGJ1Zy4KKyAgKiBHZW5lcmF0ZSB0aGUgc2hsaWJzIGZpbGUgaW5zdGVhZCBvZiBqdXN0IGNvcHlpbmcgaXQgaW4gcGxhY2UsIGFuZCBtYWtlCisgICAgaXQgcHJvZHVjZSBkZXBzIG9uICJlMmZzcHJvZ3MgKD49IDxjdXJyZW50PikiIGFzIHdlbGwsIHRvIGNvcGUgd2l0aAorICAgIG5ldyBmdW5jdGlvbnMgaW50cm9kdWNlZCBpbiB0aGUgbGlicyAoQ2xvc2VzOiAjMTM5Mjc0KS4KKyAgKiBBZGRlZCBhIG5vdGUgb24gdGhpcyBpbiBSRUFETUUuRGViaWFuLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVGh1LCAyMSBNYXIgMjAwMiAyMzo1ODo0OCArMDEwMAorCitlMmZzcHJvZ3MgKDEuMjctMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiAjMTM2NzM3KS4KKyAgKiBObyBtb3JlIHVzZSBmb3IgZGhfbGluaydpbmcgKi5leHRbMjNdLCBpdCdzIG5vdyBkb25lIGJ5IHVwc3RyZWFtCisgICAgTWFrZWZpbGVzLgorICAqIE9ubHkgaW5jbHVkZSAobmV3KSBpbm9kZV9pby5vIGZyb20gbGliZXh0MmZzIHdoZW4gZmlsZWlvLm8gaXMsIG9yIHRoZQorICAgIEJGIGJ1aWxkIGZhaWxzIGJlY2F1c2Ugb2YgdGhpcyBhZGRpdGlvbmFsICh1bnVzZWQpIG1lbWJlciAodXBzdHJlYW0KKyAgICBoaW50KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIE1vbiwgMTEgTWFyIDIwMDIgMDA6MTc6MzIgKzAxMDAKKworZTJmc3Byb2dzICgxLjI2LTMpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogU2ltcGxlIHJlYnVpbGQgYWZ0ZXIgZml4aW5nIHRoZSBzZXR0aW5ncyBvZiBteSBjb21wdXRlcidzIGNsb2NrLCBzbworICAgIHRoYXQga2F0aWUgYWNjZXB0cyB0byBpbnN0YWxsIHRoZSBwYWNrYWdlLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgU2F0LCAyMyBGZWIgMjAwMiAxNDo1MzoxNSArMDEwMAorCitlMmZzcHJvZ3MgKDEuMjYtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBcHBsaWVkIHVwc3RyZWFtIHBhdGNoIGRlYWxpbmcgd2l0aCB0aGUgcmxpbWl0IGZpbGVzaXplIHZhcmlhdGlvbgorICAgIGFtb25nIGFyY2hzIGFuZCBrZXJuZWwgdmVyc2lvbnMgKENsb3NlczogIzEzMzkwOSkuCisgICogQ3JlYXRlIGZzY2suZXh0My44IHN5bWxpbmsgKENsb3NlczogIzEyMTUyNikuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBTYXQsIDIzIEZlYiAyMDAyIDA2OjQ0OjAyICswMTAwCisKK2UyZnNwcm9ncyAoMS4yNi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFRoaXMgdXBsb2FkcyBmaXhlcyAxMCBidWdzLCBpbmNsdWRpbmcgZGF0YS1jb3JydXB0aW9uIHByb2JsZW1zLCBhbmQKKyAgICBhZGRzIG11Y2ggdG8gdGhlIGVhc2Ugb2YgbWFpbnRhaW5hbmNlIGFuZCBwcm9ibGVtIHRyYWNraW5nLiAgR29vZAorICAgIGNob2ljZSBmb3Igd29vZHkuCisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiAjMTA2NjIyLCAjMTE2OTc1LCAjMTE4NDQzLCAjMTE5NjI0LAorICAgICMxMjAxNzEsICMxMjAwNzcsICMxMjk4MjgsICMxMzI3NjQpLgorICAqKiBGaXhlcyBmb3IgZGF0YS1jb3JydXB0aW9uIGJ1Z3Mgbm90IHJlcG9ydGVkIHRvIHRoZSBCVFM6IGUyZnNjaworICAgIHRyYXNoZWQgZXh0ZXJuYWwgam91cm5hbHMgbmVlZGluZyB0byBiZSByZXBsYXllZCwgZTJmc2NrIG5vdyBoaWRlcworICAgIHZpc2libGUgam91cm5hbCBmaWxlcyAoZGF0YSBjb3JydXB0aW9uIHByb2JsZW1zIHdoZW4gbm90IGV4Y2x1ZGVkIGZyb20KKyAgICBhIGJhY2t1cCBhbmQgdGhlbiByZXN0b3JlZCkgKENsb3NlczogIzEzMjY1NCkuCisgICoqIE90aGVyIG5vdGljYWJsZSBidWdzIGZpeGVkIGluY2x1ZGU6IGUyZnNjayBudWxsIHBvaW50ZXIKKyAgICBkZXJlZmVyZW5jaW5nLCBmc2NrIGRpZCBub3QgZmluZHMgTFZNIHZvbHVtZXMgYnkgVVVJRCBvciBieSBsYWJlbCwKKyAgICBsYXJnZWZpbGUgc3VwcG9ydCAoaWUuIGRlYWxpbmcgd2l0aCBmaWxlc3lzdGVtcyBpbnNpZGUgMkdCKyBmaWxlcykgd2FzCisgICAgYnJva2VuIGluIHNldmVyYWwgcHJvZ3JhbXMuCisgICogU3dpdGNoIHRvIGRlYmhlbHBlciB2MyB0byBnZXQgbGRjb25maWcgYXV0b21hdGljYWxseSBoYW5kbGVkCisgICAgKGxpbnRpYW4gcmVwb3J0ZWQgdGhhdCBpdCB3YXMgYnJva2VuKS4gIE5vdyBjYWxsIGRoX21ha2VzaGxpYnMsIGJ1dAorICAgIHN0aWxsIG92ZXJyaWRlIGl0cyBnZW5lcmF0ZWQgc2hsaWJzIGZpbGUgd2l0aCBvdXJzLCB0byBnZXQgY29tcGlsZWQKKyAgICBwYWNrYWdlcyBkZXBlbmQgb2YgdGhlIGNvcnJlY3QgdmlydHVhbCBwYWNrYWdlcywgd2hpY2ggaW5jbHVkZQorICAgIGZ1bGwgc29uYW1lcy4KKyAgKiBSZW1vdmVkIGNhbGwgZG8gZGhfaW5zdGFsbG1hbiAoQ2xvc2VzOiAjMTE1NTI2KS4KKyAgKiBDbGVhbmVkIHVwIG1haW50YWluZXIgc2NyaXB0cyB3aXRoIGRlYWQgY29kZSAtIG1vc3QgdGhpbmdzIGFyZSBub3cKKyAgICBtb3JlIHByb3Blcmx5IGhhbmRsZWQgYnkgZGViaGVscGVyLiAgUmVtb3ZlZCBhbiAiZXhpdCAwIiBsdXJraW5nIGluCisgICAgcHJlaW5zdCAtIGNhbid0IGZpbmQgYSByZWFzb24gZm9yIGl0IGluIHRoZSBjaGFuZ2Vsb2csIGl0IHdhcyBwcm9iYWJseQorICAgIGhlcmUgZm9yIGFnZXMuCisgICogUmVtb3ZlIG9ic29sZXRlIG1haW50LXNjcmlwdHMgaW4gYmluYXJ5LWFyY2gsIGFzIHRoZXkgYXJlIHByb3ZpZGVkIGJ5CisgICAgdXBzdHJlYW0uCisgICogQWxzbyByZW1vdmUgdXBzdHJlYW0tc2hpcHBlZCBjb25maWcuY2FjaGUgYmVmb3JlIGNvbmZpZ3VyaW5nLiAgVGhhdAorICAgIHNob3VsZG4ndCBpbXBhY3QgdXMsIGJ1dCB3ZWxsLCB0aGF0IG1ha2VzIGxpbnRpYW4gaGFwcHkgOikKKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgIDggRmViIDIwMDIgMDY6MTI6MzUgKzAxMDAKKworZTJmc3Byb2dzICgxLjI1LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWhpZ2gKKworICAqIE5ldyB1cHN0cmVhbSBidWdmaXggcmVsZWFzZSAoQ2xvc2VzOiAjMTEyNDE0KSwgdGFyZ2V0ZWQgdG8gd29vZHkuCisgICogY29tX2Vyci5pbmZvIHByb3ZpZGVkIGFnYWluIG5vdyB0aGF0IGl0IHdhcyBmaXhlZCB1cHN0cmVhbS4KKyAgKiBBZGRlZCBtZXRhaW5mbyB0byBjb21fZXJyLnRleGluZm8gc28gdGhhdCBpdCBnZXRzIGluZGV4ZWQgY29ycmVjdGx5CisgICAgKHRoYW5rcyBsaW50aWFuKS4gIE1vdmVkIEBzZXRmaWxlbmFtZSBhbmQgQHNldHRpdGxlIHRvIHRoZSB0b3Agc28gdGhhdAorICAgIHRoaW5ncyBnZXQgb3V0cHV0IGFzIGV4cGVjdGVkLgorICAqIEFkZGVkIGxpbnRpYW4gb3ZlcnJpZGVzIGZvciAtYmYgYW5kIC1zdGF0aWMgcGFja2FnZXMuCisgICogUHV0IGFsbCBzdGFtcCBmaWxlcyBpbiBkZWJpYW4vc3RhbXBkaXIuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBTYXQsIDIyIFNlcCAyMDAxIDE2OjIyOjQ3ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yNGEtMSkgdW5zdGFibGU7IHVyZ2VuY3k9aGlnaAorCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UgKENsb3NlczogIzEwOTU3NykuCisgICoqIFRoZSBvbmx5IG5ldyBjb2RlIGluIHRoZXJlIGlzIGluIGNvZGVwYXRocyB0aGF0CisgICAgYXJlIG9ubHkgdmlzaXRlZCB3aGVuIHByZXZpb3VzbHkgdW5zdXBwb3J0ZWQgZmVhdHVyZXMgYXJlIHVzZWQsIHNvCisgICAgdGhleSBhZGQgdmlydHVhbGx5IG5vIHJpc2suICBTdXBwb3J0IGZvciByYXcgaW1hZ2UgZmlsZXMgd2lsbCBiZSBvZgorICAgIGdyZWF0IGhlbHAgdG8gZGVidWcgdXNlcnMnIHByb2JsZW1zLiAgVXJnZW5jeSBzZXQgdG8gImhpZ2giIHRvIG1ha2UKKyAgICBzdXJlIHRoaXMgdmVyc2lvbiBnZXRzIHJlbGVhc2VkIHdpdGggd29vZHkuCisKKyAgKiogRnNjayBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgaWYgbm93IHZhbGlkIGZpbGVzeXN0ZW1zIGFyZSBwYXNzZWQgdG8KKyAgICBpdC4gKENsb3NlczogIzEwNzQ1OCkuCisgICoqIEZzY2sgLUEgd2lsbCBub3QgdHJ5IHRvIGludGVycHJldCBkZXZpY2UgbmFtZXMgZm9yIGZpbGVzeXN0ZW1zIHdoaWNoCisgICAgaGF2ZSBhIHBhc3MgbnVtYmVyIGlzIDAuIChDbG9zZXM6ICMxMDY2OTYpLgorICAqKiBJZiAtTyBub25lIGlzIHBhc3NlZCB0byBta2UyZnMsIGl0IHdpbGwgbm93IG5vdCBzZXQgdGhlIHNwYXJzZV9zdXBlcgorICAgIGZlYXR1cmUgKENsb3NlczogIzEwODE2NSkuCisgICoqIFR1bmUyZnMgaGFzIGJlZW4gZml4ZWQgdG8gbWFrZSBzdXJlIHRoYXQgb25seSBlcnJvciBtZXNzYWdlcyBnbyB0bworICAgIHN0ZGVyciwgYW5kIG5vcm1hbCBtZXNzYWdlIGdvIHRvIHN0ZG91dCAoQ2xvc2VzOiAjMTA4NTU1KS4KKyAgKiogTWlub3IgbWFuIHBhZ2VzIHVwZGF0ZXMgKENsb3NlczogIzMwODMzLCAjMTA4MTc0KS4KKyAgKiogRG9jIGZpeGVzIChDbG9zZXM6ICMxMTA2MjEpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVHVlLCAgNCBTZXAgMjAwMSAyMzo0NDo1NiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjItMikgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBUaGlzIGlzIG9ubHkgYSB0cml2aWFsIHBhdGNoIHRvIHN0b3Agc29tZSB1c2VyIGNvbmZ1c2lvbiwgYW5kIHdvdWxkIGJlCisgICAgZ3JlYXQgdG8gaGF2ZSBpbiB3b29keSwgaGVuY2UgdGhlIHVyZ2VuY3kuCisgICogQXBwbGllZCB1cHN0cmVhbSBwYXRjaCB0byBlMmZzY2sgdG8gd2FybiB1c2VyIHdoZW4gc29tZSBlcnJvcnMgd2VyZQorICAgIG5vdCBjb3JyZWN0ZWQgZHVlIHRvIHVzZXIgYW5zd2VyaW5nICJubyIgKENsb3NlczogIzEwNDUwMikuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBTYXQsIDI4IEp1bCAyMDAxIDIzOjAxOjQ5ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpbmFsIDEuMjIgcmVsZWFzZToKKyAgKiogRml4ZXMgYnVpbGQgcHJvYmxlbXMgb24gYmlnLWVuZGlhbiAoQ2xvc2VzOiAjMTAxNjg2LCAjMTAxNzk4KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFNhdCwgMjMgSnVuIDIwMDEgMTQ6MDM6MTcgKzAyMDAKKworZTJmc3Byb2dzICgxLjIxKzEuMjItV0lQLTA2MjAtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcHJlLXJlbGVhc2UsIGNyaXRpY2FsIGZvciBiaWctZW5kaWFuIHBsYXRmb3JtcworICAgIChDbG9zZXM6ICMxMDE3NTIpLgorICAqIFJlLWFwcGxpZWQgaHVyZCBmaXggYWdhaW4uCisgICogQnVpbGQgZTJmc3Byb2dzLWJmIHdpdGggLU9zIHRvIGdhaW4gbW9yZSBzcGFjZS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMjIgSnVuIDIwMDEgMDA6MTg6NDAgKzAyMDAKKworZTJmc3Byb2dzICgxLjIxLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRmluYWwgMS4yMSByZWxlYXNlLgorICAqIFJlLWFwcGxpZWQgaHVyZCBmaXggdGhhdCBkaWQgbm90IGNhbWUgcXVpY2tseSBlbm91Z2ggdG8gbWFrZSBpdCBpbgorICAgIDEuMjEuCisgICogRml4ZWQgbmFtZSBvZiBjb3B5cmlnaHQgZmlsZSBpbiBlMmZzcHJvZ3MtYmYuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBXZWQsIDIwIEp1biAyMDAxIDIyOjMyOjA4ICswMjAwCisKK2UyZnNwcm9ncyAoMS4yMCsxLjIxLVdJUC0wNjE0LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRG9uJ3QgYnVpbGQgUElDIGxpYnMsIGJ1aWxkIGEgcmVkdWNlZCB2ZXJzaW9uIG9mIHRoZSBsaWJzIGluc3RlYWQsIGluCisgICAgcGFja2FnZSBlMmZzcHJvZ3MtYmYuICBNYWRlIHRoaXMgbmV3IHBhY2thZ2UgY29uZmxpY3Qgd2l0aCBlMmZzcHJvZ3MuCisgICogQ29tcGlsYXRpb24gZml4IGZvciB0aGUgSHVyZCAoQ2xvc2VzOiAjMTAxMzYxKS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFR1ZSwgMTkgSnVuIDIwMDEgMjM6MzM6MjUgKzAyMDAKKworZTJmc3Byb2dzICgxLjIwKzEuMjEtV0lQLTA2MTQtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcHJlLXJlbGVhc2UgKENsb3NlczogIzEwMDU1OSwgIzEwMDMwNCkuCisgICogRml4ZWQgbGliL2V4dDJmcy9NYWtlZmlsZS5pbiBmb3IgaW5zdGFsbGF0aW9uIG9mIG5ldyBnZW5lcmF0ZWQgLmgKKyAgICBmaWxlLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVGh1LCAxNCBKdW4gMjAwMSAxNjoxNDoxMSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjArMS4yMS1XSVAtMDYwOC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSBwcmUtcmVsZWFzZSAoY3JpdGljYWwgZXh0MyBidWdmaXggbW9zdGx5KS4KKyAgKiBDb3JyZWN0bHkgdXNlIGRoX2luc3RhbGxpbmZvLgorICAqIEFkanVzdGVkIHZhcmlvdXMgdGhpbmdzIGFjY29yZGluZ2x5LgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgU2F0LCAgOSBKdW4gMjAwMSAwMDoyNTo1MSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMjAtNCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBDbGVhbnVwIGdlbmVyYXRlZCBzdWJzdHZhcnMgZmlsZXMgbm93IHRoYXQgZGViaGVscGVyIHVzZXMgb3RoZXIKKyAgICBuYW1lcyAobWF5IGNhdXNlIHByb2JsZW1zIG9uIG90aGVyIGFyY2hzKS4gIEJ1aWxkLWRlcCBvbiBkZWJoZWxwZXIKKyAgICAzLjAuMzAgb3IgbmV3ZXIgdG8gYmUgc3VyZSBpdCB3b24ndCBjYXVzZSBicm9rZW4gdXBsb2Fkcy4gIEFsbG93cyB0bworICAgIGdldCByaWQgb2YgaGFpcnkgZGVwLCBidXQgY2Fubm90IGJ1aWxkIHN0cmFpZ2h0Zm9yd2FyZGx5IG9uIHBvdGF0byBhbnkKKyAgICBtb3JlLi4uCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBXZWQsICA2IEp1biAyMDAxIDAyOjMzOjMyICswMjAwCisKK2UyZnNwcm9ncyAoMS4yMC0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIENyZWF0ZSBhbGwgc3ltbGlua3MgdG8gdXVpZC1nZW5lcmF0ZS4zIChDbG9zZXM6ICM5OTU3MykuCisgICogU29tZXdoYXQgbW9kZXJuaXplZCBkZWJpYW4vcnVsZXMgKGRlYmhlbHBlciB2MiwgZXRjLikuCisgICogRml4ZWQgbGlic3MyIGNvcHlyaWdodCBmaWxlLgorICAqIEZpeGVkIGUyZnNsaWJzLXBpYyBzaG9ydCBkZXNjcmlwdGlvbi4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFdlZCwgIDYgSnVuIDIwMDEgMDE6MTk6MTkgKzAyMDAKKworZTJmc3Byb2dzICgxLjIwLTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQWRkZWQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgcGljIGxpYnMgdG8gTWFrZWZpbGUuZWxmLWxpYi4KKyAgKiBOZXcgcGFja2FnZSBlMmZzbGlicy1waWMgZm9yIGJvb3QtZmxvcHBpZXMgdGVhbSAoQ2xvc2VzOiAjOTkyODUpLgorICAqIFVzZSAtTiBvbiBkaF9nZW5jb250cm9sIGluc3RlYWQgb2YgbG90cyBvZiAtcC4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFRodSwgMzEgTWF5IDIwMDEgMjM6NTk6NTEgKzAyMDAKKworZTJmc3Byb2dzICgxLjIwLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRmluYWwgMS4yMCByZWxlYXNlLgorICAqIEFkZGVkIG5ldyB6c2gtc3RhdGljIHRvIHRoZSBsaXN0IG9mIHBvc3NpYmxlIHN0YXRpYyBzaGVsbHMgcmVjb21tZW5kZWQKKyAgICBieSBlMmZzY2stc3RhdGljLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgTW9uLCAyOCBNYXkgMjAwMSAyMTozOTowNiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTkrMS4yMC1XSVAtMDUyMC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSBwcmUtcmVsZWFzZSBzbmFwc2hvdDoKKyAgKiogRXh0ZW5kZWQgImZzY2sgLXQiIHN5bnRheCAoQ2xvc2VzOiAjODk0ODMpLgorICAqKiBGaXggaGFuZGxpbmcgb2YgZGV2aWNlcyBmb3Igd2hpY2ggZnNjayBjYW4ndCBkZXRlcm1pbmUgYSBwaHlzaWNhbAorICAgIHNwaW5kYWwsIGNhdXNpbmcgbG9ja3VwIHdoZW4gY2hlY2tpbmcgTFZNIHZvbHVtZXMgKENsb3NlczogIzk4MTAzKS4KKyAgKiogRml4ZWQgdHlwbyBpbiBlMmZzY2stc3RhdGljIGRlc2NyaXB0aW9uIC0gdGhhbmtzIFRlZCA6KS4KKyAgKiBGaXhlZCBzbWFsbCBjb21waWxhdGlvbiBidWcgaW4gZnNjay5jCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBNb24sIDIxIE1heSAyMDAxIDIwOjQ3OjEwICswMjAwCisKK2UyZnNwcm9ncyAoMS4xOSsxLjIwLVdJUC0wNTE0LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogVGlnaHRlbiBkZXBlbmRlbmN5IG9uIGRlYmhlbHBlci4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFR1ZSwgMTUgTWF5IDIwMDEgMjE6Mzg6NDcgKzAyMDAKKworZTJmc3Byb2dzICgxLjE5KzEuMjAtV0lQLTA1MTQtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcHJlLXJlbGVhc2Ugc25hcHNob3Q6CisgICoqIG5ldyBwcm9ncmFtOiBlMmltYWdlLgorICAqKiBlMmZzY2sgdmFsaWRhdGVzIGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpZWQgaW4gLUMgKENsb3NlczogIzU1MjIwKQorICAqKiBGaXggbXVsdGlwbGUgcHJvZ3Jlc3MgYmFyIGZzY2sgYnVnIChDbG9zZXM6ICM2NTI2NykKKyAgKiogQWRkIGRldmZzIHN1cHBvcnQgdG8gZnNjayAoQ2xvc2VzOiAjOTQxNTkpCisgICoqIEZpeCBkZWJ1Z2ZzIGR1bXAgY21kIGxvb3Bpbmcgb24gZGlzayBlcnJvcnMgKENsb3NlczogIzc5MTYzKQorICAqKiBNaXNjZWxsYW5lb3VzIG1hbnVhbCBwYWdlIGNsYXJpZmljYXRpb25zIChDbG9zZXM6ICM2MzQ0MiwgIzY3NDQ2LAorICAgICM4NzIxNikKKyAgKiogQ29tcGlsYXRpb24gZml4ZXMgZm9yIEh1cmQgKENsb3NlczogIzUyMDQ1KS4KKyAgKiogTmV3IGNvbmZpZy57Z3Vlc3Msc3VifSBmb3IgcGFyaXNjIHN1cHBvcnQgKENsb3NlczogIzk0NjkwKS4KKyAgKiogSW1wcm92ZWQgZXh0MyBzdXBwb3J0CisgICoqIHR1bmUyZnMgY2FuIG5vdyBzYWZlbHkgbW9kaWZ5IG1vdW50ZWQgZmlsZXN5c3RlbXMKKyAgKiBBZGRlZCBtaXNzaW5nIEBkaXJjYXRlZ29yeSBlbnRyeSB0byBsaWJleHQyZnMuaW5mbyAobGludGlhbikKKyAgKiBNb3ZlZCBkZWJ1Z2ZzIGJhY2sgZnJvbSAvdXNyL3NiaW4vIHRvIC9zYmluLyAoQ2xvc2VzOiAjOTcwMzUpLgorICAqIE1vdmVkIGUybGFiZWwgYmFjayB0byAvc2Jpbi8gYXMgd2VsbCwgYXMgaXQgaXMgbm93IGEgaGFyZCBsaW5rIHRvCisgICAgdHVuZTJmcy4KKyAgKiBOZXcgYmluYXJ5IHBhY2thZ2Ugd2l0aCBzdGF0aWNhbGx5IGxpbmtlZCBlMmZzY2ssIHJlY29tbWVuZGluZyBhCisgICAgc3RhdGljYWxseSBsaW5rZWQgc2hlbGwgKENsb3NlczogIzYyNjExKS4KKyAgKiBBbGwgZGVwcyBhZ2FpbnN0IGUyZnNwcm9ncyBpdHNlbGYgbm93IHZlcnNpb25uZWQgKGxpbnRpYW4pLgorICAqIFVwZGF0ZWQgY29weXJpZ2h0IGZpbGUgKHVwc3RyZWFtIGxvY2F0aW9uLCBwYWNrYWdpbmcgY29weXJpZ2h0IG5vdGljZQorICAgIGZvciBwcmV2aW91cyBtYWludGFpbmVycyBhbmQgZm9yIEFsY292ZSkuCisgICogUmVtb3ZlIGNhbGwgdG8gZGhfdGVzdHZlcnNpb24sIHVzZSB2ZXJzaW9ubmVkIGJ1aWxkLWRlcCBpbnN0ZWFkCisgICAgKGxpbnRpYW4pLgorICAqIFN1cHBvcnQgZm9yIERFQl9CVUlMRF9PUFRJT05TIGRlYnVnL25vc3RyaXAgZm9yIHBvbGljeSAzLjIKKyAgICBjb21wbGlhbmNlLgorICAqIFVzZSBkaF9zaGxpYmRlcHMgLWwgaW5zdGVhZCBvZiBzZXR0aW5nIExEX0xJQlJBUllfUEFUSCBleHBsaWNpdGVseSAtCisgICAgbmVjZXNzYXJ5IGZvciBuZXcgdmVyc2lvbnMgb2YgZmFrZXJvb3QsIGFuZCByZXF1aXJlcyBkZWJoZWxwZXIgMy4wLjIzCisgICAgZm9yIGEgZml4LiAgV2VsbCBmaW5hbGx5IDMuMC4yMyBpcyBidWdneSwgbGVhdmUgdGhpcyBmb3IgbGF0ZXIuCisgICogQXZvaWQgdG8gY2FsbCBsZGNvbmZpZyBhdCAibWFrZSBpbnN0YWxsIiB0aW1lLCB0b28gY29zdGx5LgorICAqIEdldCByaWQgaW4gY29udHJvbCBmaWxlcyBvZiByZWZlcmVuY2VzIHRvIG5ldmVyLXJlbGVhc2VkIHN0YW5kYWxvbmUKKyAgICBsaWIgZmlsZXMgKHNwbGl0IGF0dGVtcHRlZCBpbiAxOTk3Lzk4KS4KKyAgKiBCdW1wZWQgU3RhbmRhcmRzLVZlcnNpb24gdG8gMy41LjQuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUdWUsIDE1IE1heSAyMDAxIDE0OjI4OjM5ICswMjAwCisKK2UyZnNwcm9ncyAoMS4xOS00KSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIEFkZGVkIHRleGluZm8gdG8gYnVpbGQtZGVwcyAoQ2xvc2VzOiAjODc2ODUpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVHVlLCAgMyBBcHIgMjAwMSAwOTowMzoxMyArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTktMykgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBEcm9wIGZpbmRzdXBlciBiaW5hcnksIGFuZCBzdWdnZXN0IGdwYXJ0IChDbG9zZXM6ICM3NDAzNCkuCisgICogRHJvcCBmbHVzaGIgYW5kIGV4dGVuZCBhdCB1cHN0cmVhbSByZXF1ZXN0IChDbG9zZXM6ICMzOTUwNikuCisgICogQXBwbGllZCB1cHN0cmVhbSBmaXggZm9yIGNoYXR0ciBvbiBsYXJnZSBmaWxlcyAoQ2xvc2VzOiAjNzI2OTApLgorICAqIEFwcGxpZWQgY2xhcmlmaWNhdGlvbiBwYXRjaCB0byB0dW5lMmZzLjggKENsb3NlczogIzY3NDQ2KS4KKyAgKiBBcHBsaWVkIHR5cG8gcGF0Y2ggdG8gY29tcGlsZV9ldC4xIChDbG9zZXM6ICM2Mzc4NikuCisgICogSW5jbHVkZSA8c3lzL21vdW50Lmg+IGluIGUyZnNjay9qb3VybmFsLmMgKENsb3NlczogIzcxNzc1KS4KKyAgKiBTdWdnZXN0IHBhcnRlZC4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIE1vbiwgIDQgRGVjIDIwMDAgMjI6MDg6MDYgKzAxMDAKKworZTJmc3Byb2dzICgxLjE5LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogQ2xhcmlmaWVkIGxpYnV1aWQgY29weXJpZ2h0IHRvIExHUEwtMiwgZXhjbHVkaW5nIExHUEwtMi4xLgorICAqIEFkZGVkIGJ1aWxkLWRlcGVuZGVuY3kgb24gZGViaGVscGVyIChDbG9zZXM6ICM2NzUzMikuCisgICogRG9uJ3QgcGFyYWxlbGl6ZSBmc2NrIHJ1bnMgb24gc2FtZSBkcml2ZSBmb3IgaGRbZWZnaF0gKENsb3NlczoKKyAgICAjNTkxMDMpLgorICAqIFVwbG9hZCBwcmlzdGluZSBzb3VyY2UsIC0xIHdhcyBlcnJvbmVvdXNseSB1cGxvYWRlZCBhcyBhCisgICAgZGViaWFuLXNwZWNpZmljIHBhY2thZ2UuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUaHUsICAzIEF1ZyAyMDAwIDAwOjMwOjQ5ICswMjAwCisKK2UyZnNwcm9ncyAoMS4xOS0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlOgorICAqKiBuZXcgcHJvZ3JhbTogcmVzaXplMmZzLgorICAqKiBleHQzIHN1cHBvcnQuCisgICoqIE5MUyBzdXBwb3J0IChub24tZGVmYXVsdCwgYWN0aXZhdGVkKS4KKyAgKiogQ29tcHJlc3Npb24gc3VwcG9ydCAobm9uLWRlZmF1bHQsIGFjdGl2YXRlZCkuCisgICoqIFByb2dyZXNzIGJhciBuaWNlIHRvIHNlcmlhbCBjb25zb2xlIChDbG9zZXM6ICM2NjA3OSkKKyAgKiogRW5zdXJlIGZpbGV0eXBlIGZlYXR1cmUgaXMgdHVybmVkIG9mZiBmb3IgSHVyZCBmaWxlc3lzdGVtcyAoQ2xvc2VzOgorICAgICM2MTg2MykKKyAgKiBVcGRhdGVkIG1haW4gY29weXJpZ2h0IGZpbGUgZm9yIGEgbnVtYmVyIG9mIHRoaW5ncy4KKyAgKiBGaXhlZCBOTFMgc3VwcG9ydCBmb3IgZmx1c2hiIGFuZCBleHRlbmQuCisgICogU3RhcnRlZCB0byBhZGQgYnVpbGQtZGVwZW5kcy4KKyAgKiBJbmNsdWRlIG5ldyBlMnAgaGVhZGVyLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgV2VkLCAxOSBKdWwgMjAwMCAwMTo1NToyNyArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTgtMykgZnJvemVuIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogRml4IFkySyBkaXNwbGF5LW9ubHkgYnVnIGluIGRlYnVnZnMgLSAibHMgLWwiIGRpc3BsYXllZCByYXcgdG1feWVhciwKKyAgICBjYXVzaW5nIDIwMDAgdG8gYmUgZGlzcGxheWVkIGFzICIxMDAiIChDbG9zZXM6ICM1NzEzNSkuICBQb3RhdG8gc2hvdWxkCisgICAgYmUgeTJrLWNsZWFuLgorICAqIFJlbW92ZSBlbXB0eSBkaXJzIC91c3Ivc2hhcmUvZXQvIGFuZCAvdXNyL3NoYXJlL3NzLyBmcm9tIHBhY2thZ2UKKyAgICBlMmZzcHJvZ3MgKENsb3NlczogIzUyOTAwKS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIE1vbiwgMjEgRmViIDIwMDAgMjM6MDY6NDcgKzAxMDAKKworZTJmc3Byb2dzICgxLjE4LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogVGVzdCBmb3IgIl9fc3BhcmNfXyIgaW5zdGVhZCBvZiAic3BhcmMiIGFzIGEgY3BwIG1hY3JvIGluIG1rZTJmcy5jCisgICAgKHRlc3RzIGluIG90aGVyIHBsYWNlcyBhcmUgY29ycmVjdCkgKENsb3NlczogIzUwMDEyKS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMTIgTm92IDE5OTkgMjE6NDA6MjcgKzAxMDAKKworZTJmc3Byb2dzICgxLjE4LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIChidWdmaXgpIHJlbGVhc2UuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBGcmksIDEyIE5vdiAxOTk5IDE3OjI3OjIwICswMTAwCisKK2UyZnNwcm9ncyAoMS4xNy0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFwcGxpZWQgdXBzdHJlYW0gcGF0Y2ggdG8gZml4IHNlZ2ZhdWx0IChDbG9zZXM6ICM0OTUzNSkuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUdWUsICA5IE5vdiAxOTk5IDIyOjE0OjUzICswMTAwCisKK2UyZnNwcm9ncyAoMS4xNy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSAoYnVnZml4KSByZWxlYXNlLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgV2VkLCAyNyBPY3QgMTk5OSAyMzo0NjozOSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTYtMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXhlZCBidWlsZCBvZiBhIGxpbmsgbGlzdCBpbiBmc2NrLmMgKENsb3NlczogIzQ4MzEyKS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIFR1ZSwgMjYgT2N0IDE5OTkgMDE6MTc6MzYgKzAyMDAKKworZTJmc3Byb2dzICgxLjE2LTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UuCisgICogUmUtYXBwbGllZCBIdXJkIHBhdGNoZXMgdGhhdCBkaWQgbm90IHNlZW0gdG8gaGF2ZSBiZWVuIHJlY2VpdmVkCisgICAgdXBzdHJlYW0uCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBTdW4sIDI0IE9jdCAxOTk5IDE2OjExOjU5ICswMjAwCisKK2UyZnNwcm9ncyAoMS4xNS0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeGVkIG1pbm9yIHR5cG8gZm9yIHRoZSBIdXJkLgorICAqIEZpeGVkIHZhcmlvdXMgSHVyZCBkZWZpbmVzIHRvIF9fR05VX18gKENsb3NlczogIzQ0NDA3KS4KKyAgKiBTd2l0Y2hlZCBkb2MvIGFuZCBpbmZvLyB0byBGSFMuCisgICogQ2xlYW5lZCB1cCBkZWJpYW4vcnVsZXMgdG8gdXNlIG5ldyBkZWJoZWxwZXIgZmVhdHVyZXMuCisgICogQm91bmNlZCBTdGFuZGFyZHMtVmVyc2lvbiB0byAzLjAuMS4KKyAgKiBEbyBub3QgaW5zdGFsbCBidWdneSBjb21fZXJyLmluZm8sIHNoaXBwZWQgYXMgSFRNTC4KKyAgKiBSZW1vdmVkIHBhcnRpbmZvIGZyb20gdGhlIHBhY2thZ2UsIGZvbGxvd2luZyB0aGUgd2lzaCBvZiB1cHN0cmVhbQorICAgIGF1dGhvciwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgZnVuY3Rpb25hbGl0eSB3aXRoICJmZGlzayAtbCIgKENsb3NlczoKKyAgICAjNDIxMzkpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgTW9uLCAyMCBTZXAgMTk5OSAyMzowNDowNiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTUtMikgdW5zdGFibGU7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBDaGFuZ2VkIGJ1aWxkIGRpcmVjdG9yeSBkbyBkZWJpYW4vQlVJTEQvIC0gcmVsYXRlZCBjbGVhbnVwcyBpbgorICAgIGRlYmlhbi9ydWxlcy4KKyAgKiBGaXhlZCBwYXJ0aW5mby5jIHRvIGhhdmUgaXQgY29tcGlsZWQsIGFuZCBmaXhlZCBkaXNwbGF5IG9mIHBhcnRpdGlvbgorICAgIGRldmljZSBpbiBlcnJvciBtZXNzYWdlcy4KKyAgKiBBZGRlZCAvdXNyL3NiaW4vcGFydGluZm8gdG8gdGhlIHBhY2thZ2UgKENsb3NlczogIzQyMTM5KS4KKyAgKiBBZGRlZCBub3RlIGFib3V0IHV1aWRnZW4oMSkgaW4gUkVBRE1FLkRlYmlhbi4KKyAgKiBEb2N1bWVudGVkIGluIG1hbnBhZ2UgdGhhdCBkZWZhdWx0IG1rZTJmcyBiZWhhdmlvdXIgaXMgbm93IC1yMSAtczEKKyAgICAoQ2xvc2VzOiAjNDQ0NzgpLgorICAqIERvY3VtZW50ZWQgaW4gbWtlMmZzLjggdGhhdCAtcjEgZm9yY2VzIC1zMSwgdGh1cyBpZ25vcmluZyAtczAuCisgICogQWRkZWQgd2FybmluZyBtZXNzYWdlIHdoZW4gLXMwIGlzIGlnbm9yZWQgYmVjYXVzZSBvZiAtcjEuCisgICogRG9jdW1lbnRlZCAtbiBvcHRpb24gb2YgbWtlMmZzLgorICAqIEZpeGVkIGRpc3BsYXkgYnVnbGV0IGNhdXNpbmcgdHJhaWxpbmcgY29tbWFzIGluIGxpc3Qgb2Ygc3VwZXJibG9jaworICAgIGJhY2t1cHMgd2hlbiBzcGFyc2UgZmxhZyBpcyBvbiBhbmQgbGFzdCBncm91cCBoYXMgbm8gc3VwZXJibG9jaworICAgIGJhY2t1cC4KKyAgKiBDbG9zZXM6ICM0MjQzNCwgIzQzMTM0LgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgV2VkLCAgOCBTZXAgMTk5OSAwMDo0NjozOCArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTUtMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAoQ2xvc2VzOiBCdWcjNDE3NjMpLgorICAqIEFsbCBjaGFuZ2VzIHRvIHVwc3RyZWFtIGZpbGVzIGluIDEuMTQtMyB3ZXJlIGludGVncmF0ZWQgdXBzdHJlYW0uCisgICogU2VwYXJhdGVkIGxpYnV1aWQtZGV2IGZyb20gZTJmc2xpYnMtZGV2IGJlY2F1c2UgaXQgbm93IGhhcyBtYW5wYWdlcy4KKyAgKiBGaXhlZCBkZWJpYW4vcnVsZXMgZm9yIFBPU0lYICJybWRpciAtcCIKKyAgKiBDb3JyZWN0ZWQgdGhlIGxvY2F0aW9uIG9mIHRoZSBHUEwgaW4gY29weXJpZ2h0IGZpbGUuCisgICogTW92ZWQgdGhlIG1hbnBhZ2VzIHRvIC91c3Ivc2hhcmUvLgorICAqIEJ1bXBlZCBTdGFuZGFyZHMtVmVyc2lvbiB0byAzLjAuMC4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMjMgSnVsIDE5OTkgMDE6Mzc6NTEgKzAyMDAKKworZTJmc3Byb2dzICgxLjE0LTMpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogRmFpbCB3aXRoIGVycm9yIG1lc3NhZ2Ugd2hlbiAvZGV2L251bGwgY2Fubm90IGJlIG9wZW5lZCAoRml4ZXM6CisgICAgQnVnIzM1NTk1KS4KKyAgKiBGaXhlZCB0eXBvIGluIGUyZnNjay91bml4LmMgKEZpeGVzOiBCdWcjMzY5NjApLgorICAqIEFkZGVkICJlbWVyZWdlbmN5IGhlbHAiIG9wdGlvbnMgc3VtbWFyeSB0byBlMmZzY2sgKEZpeGVzOiBCdWcjMTEzNzIpLgorICAqIFByZXBhcmVkIGRlYmlhbi9ydWxlcyBmb3IgdXNyL3NoYXJlL21hbi8uCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUdWUsICAxIEp1biAxOTk5IDIzOjM3OjEyICswMjAwCisKK2UyZnNwcm9ncyAoMS4xNC0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeGVkIGZzY2soMSkgbm90IHRvIGNvcmVkdW1wIHdoZW4gaXQgZG9lcyBub3QgZmluZCBpdHMgYXJndW1lbnQgaW4KKyAgICAvZXRjL2ZzdGFiIChGaXhlczogQnVnIzMzNTMzLCBCdWcjMzQzMjAsIHBhcnQgb2YgQnVnIzM0MTMxKS4KKyAgKiBGaXhlZCBzcGVsbGluZyBvZiB1cHN0cmVhbSBhdXRob3IncyBuYW1lLgorICAqIENsZWFuZWQgZGViaWFuLyouZmlsZXMgdXAuCisgICogVW5kaWQgdGhlIDxsaW51eC90eXBlcy5oPiBjaGFuZ2VzLgorICAqIENoYW5nZWQgInJtZGlyIC1wIiBpbnZvY2F0aW9ucyBpbiBkZWJpYW4vcnVsZXMgaW50byAiLXJtZGlyIC1wIiB0bworICAgIHR1cm4gYXJvdW5kIGNoYW5nZWQgYmVoYXZpb3VyIGluIGZpbGV1dGlsc180LjAuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBGcmksIDEyIE1hciAxOTk5IDIzOjUwOjQ3ICswMTAwCisKK2UyZnNwcm9ncyAoMS4xNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlIChGaXhlczogQnVnIzMzMTEzKS4KKyAgKiBBbGwgcGF0Y2hlcyB3ZSB1c2VkIGZvciAxLjEyIGFyZSBvYnNvbGV0ZWQgYnkgMS4xNC4KKyAgKiBTdGlsbCBoYXZlIHRvIGluc3RhbGwgY29tX2Vyci5pbmZvIGZyb20gZGViaWFuL3J1bGVzIHRob3VnaC4KKyAgKiBJbmNvcnBvcmF0ZWQgcGF0Y2hlcyBmcm9tIEdvcmRvbiBNYXR6aWdrZWl0IGZvciBodXJkIGNyb3NzLWNvbXBpbGF0aW9uOgorICAqIC0gY29uZmlndXJlLmluOiBDaGFuZ2UgY3Jvc3MtY29tcGlsZSBkZWZhdWx0IGZvciBzaXplb2YgKGxvbmcKKyAgICAgIGxvbmcpIHRvIDgsIHNvIHRoYXQgX19zNjQgYW5kIF9fdTY0IGdldCBkZWZpbmVkIGluIGV4dDJmcy5oLgorICAgICAgKEJVSUxEX0NDKTogRGlzY292ZXIgYSBuYXRpdmUgY29tcGlsZXIgaWYgd2UgYXJlIGNyb3NzLWNvbXBsaW5nCisgICAgICAodXNlZCBmb3IgdXRpbC9zdWJzdCkuCisgICAgLSBJbmNsdWRlIGxpbnV4L3R5cGVzLmggaW5zdGVhZCBvZiBhc20vdHlwZXMuaCwgc28gdGhhdAorICAgICAgbm9uLUxpbnV4IHBsYXRmb3JtcyB1c2UgdGhlIHN0dWJiZWQgdmVyc2lvbiBwcm92aWRlZCB3aXRoIHRoaXMKKyAgICAgIHBhY2thZ2UuCisgICAgLSBtaXNjL01ha2VmaWxlLmluIChmaW5kc3VwZXIpOiBBZGQgYSBydWxlIHNvIHRoYXQgZmluZHN1cGVyIGdldHMgYnVpbHQKKyAgICAgIHdpdGggdGhlIHJpZ2h0IGNvbXBpbGVyIGZsYWdzLgorICAgIC0gZXRjLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgV2VkLCAxMCBGZWIgMTk5OSAyMzoyMzowMyArMDEwMAorCitlMmZzcHJvZ3MgKDEuMTItNCkgZnJvemVuIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogU2hpcCBmbHVzaGIoOCkgYW5kIGV4dGVuZCg4KSB3ZXJlIG1pc3NpbmcgaW4gYWxsIDEuMTIgcGFja2FnZXMKKyAgICAoRml4ZXM6IEJ1ZyMyODc3MSkuCisgICogQWRkIGV4dGVuZC44IGxpbmsgdG8gdW5kb2N1bWVudGVkLjcuCisgICogUmVwbGFjZWQgbXkgKGFkLWhvYykgZml4IGZvciBCdWcjMjU2ODQgd2l0aCAocmVhbGx5IGJldHRlcikgb25lCisgICAgZnJvbSB1cHN0cmVhbS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIE1vbiwgIDIgTm92IDE5OTggMjA6NTM6MjggKzAxMDAKKworZTJmc3Byb2dzICgxLjEyLTMpIGZyb3plbiB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeGVkIDxleHQyZnMvZXh0MmZzLmg+IHRvIHVzZSBhbmdsZSBicmFja2V0cyBpbnN0ZWFkIG9mIGRvdWJsZQorICAgIHF1b3RlcyB3aGVuIGluY2x1ZGluZyBmaWxlcyBmcm9tIC91c3IvaW5jbHVkZS8uCisgICogTWFkZSBlMmZzbGlicy1kZXYgZGVwZW5kIG9uIGNvbWVyci1kZXYgKEZpeGVzOiBCdWcjMjYyODIsCisgICAgQnVnIzI3NDk3KS4KKyAgKiBGaXhlZCBta2UyZnMnIGRpc3BsYXkgd2l0aCBpbm9kZSBudW1iZXJzID4gOTk5OSAoRml4ZXM6IEJ1ZyMyNTY4NCkuCisgICogVXNlIC1EX19OT19TVFJJTkdfSU5MSU5FUyBvbiBwb3dlcnBjIHRvIGFsbG93IGJ1aWxkaW5nIHRoZSBib290CisgICAgYmxvY2tzIGluIFFVSUssIHRoZSBwb3dlcm1hYyBib290IGxvYWRlciAtIHJlcG9ydGVkIGJ5IE1hdHQKKyAgICBNY0xlYW4uCisgICogUmVtb3ZlZCB1bnN1cHBvcnRlZCBpbmZvIGFuZCB0ZXhpIGVudHJpZXMgZnJvbSBkb2NiYXNlIGZpbGVzLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgTW9uLCAxOSBPY3QgMTk5OCAyMzozMjo0MSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTItMi4xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5vbi1tYWludGFpbmVyIHVwbG9hZAorICAgIGNvbmZpZy5ndWVzcyBhbmQgY29uZmlnLnN1YiBmaWxlcyBtb2RpZmllZCwgdG8gcmVjb2duaXplIGEgQXJtCisgICAgYXJjaGl0ZWN0dXJlLgorCisgLS0gVHVyYm8gRnJlZHJpa3Nzb24gPHR1cmJvQGRlYmlhbi5vcmc+ICBUaHUsIDEzIEF1ZyAxOTk4IDE5OjE1OjU2IC0wNDAwCisKK2UyZnNwcm9ncyAoMS4xMi0yKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIFJlYWxseSBpbnN0YWxsIGUybGFiZWwuOCBtYW5wYWdlLgorICAqIFJlbW92ZWQgcGF0aCBmcm9tIGxkY29uZmlnIGludm9jYXRpb24sIG9iZXlpbmcgcGFja2FnaW5nIG1hbnVhbC4KKyAgKiBJbXByb3ZlZCB0aGUgc3Vic3QuYyBwYXRjaCAodGhhbmtzIHRvIFBldGVyIE1vdWxkZXIpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgVGh1LCAxNCBKdWwgMTk5OCAxNDoxMDowNiArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTItMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBOZXcgdXBzdHJlYW0gcmVsZWFzZSAtIGF0IGxhc3Qgb3V0IG9mIGFscGhhIHN0YXR1cyAhCisgICogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGZpbGVzIGZyb20gZGViaWFuL2F0dGljLgorICAqIFBhdGNoZWQgdXRpbC9zdWJzdC5jIHRvIGV4cGFuZCBlbnYgdmFyaWFibGVzLCBhbmQgTUNPTkZJRy5pbiB0bworICAgIGhhdmUgJHtwcmVmaXh9IGV4cG9ydGVkIHRvIHRoZSBgc3Vic3QnIHByb2Nlc3MsIHNvIHRoYXQgd2UgZ2V0CisgICAgY29ycmVjdCBwYXRocyBpbiBta19jbWRzIGFuZCBjb21waWxlX2V0LiAgRm9yd2FyZGVkIHVwc3RyZWFtLgorICAqIERlYmlhbi1zcGVjaWZpYyAvdXNyL3NoYXJlL2NvbWVyci8gcmVuYW1lZCB0byAvdXNyL3NoYXJlL2V0Lywgbm93CisgICAgaW5zdGFsbGVkIHVwc3RyZWFtLgorICAqIFJlbW92ZWQgLWlzcCBmcm9tIGRoX2dlbmNvbnRyb2wgaW52b2NhdGlvbiAtIG5vdyB0aGUgZGVmYXVsdC4KKyAgKiBQYXNzZWQgbGludGlhbiAwLjUuMC4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMTAgSnVsIDE5OTggMjI6NDk6MTggKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTE3KSBmcm96ZW4gdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBDb21tZW50ZWQgb3V0IG9ic29sZXRlIGNvZGUgaW4gZnNjay5jIHRoYXQgYXNzdW1lZCBmc3RhYiBlbnRyaWVzCisgICAgZGVjbGFyZWQgYG5vYXV0bycgc2hvdWxkIG5vdCBiZSBjaGVja2VkIC0gc3VjY2Vzc2Z1bGx5IGZvcndhcmRlZAorICAgIHVwc3RyZWFtIChGaXhlczogQnVnIzE3MjQ0KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMTUgTWF5IDE5OTggMDE6MTQ6NTQgKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTE2KSBmcm96ZW4gdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBDaGFuZ2VkIDxsaW51eC90eXBlcy5oPiB0byA8YXNtL3R5cGVzLmg+IGluIGxpYi91dWlkL3V1aWRQLmggdG8KKyAgICBhbGxvdyBjb21waWxhdGlvbiB3aXRoIGdsaWJjIDIuMC43cHJlMSAoRml4ZXM6IEJ1ZyMyMjAzOSkuCisgICogVXNlICJidWlsZC1zdGFtcCIgYXMgYSBzdGFtcCBmaWxlIGluc3RlYWQgb2YgImJ1aWxkIi4KKyAgKiBSZXN0b3JlZCAiUHJvdmlkZXM6IGUyZnNsaWJzZyIgaW4gb3JkZXIgdG8gYWxsb3cgdXBncmFkZSBmcm9tCisgICAgdW5zdGFibGUgaGFtbS4gIERvY3VtZW50ZWQgaW4gUkVBRE1FLkRlYmlhbiBzbyB0aGF0IGl0IGRvZXMgbm90CisgICAgZ2V0IHJlbW92ZWQgYWdhaW4gKEZpeGVzOiBCdWcjMjIwMTkpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgTW9uLCAgNCBNYXkgMTk5OCAyMToxMTozOCArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTAtMTUpIGZyb3plbiB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEFkZGVkIGNhbGwgdG8gbGRjb25maWcgaW4gZTJmc3Byb2dzLnBvc3RpbnN0LgorICAqIEZpeGVzIGNoZWNrcyBmb3IgaW5zdGFsbC1kb2NzIGluIHBvc3RpbnN0L3ByZXJtIChGaXhlczogQnVnIzIwMzAzLAorICAgIEJ1ZyMyMDMwNCwgQnVnIzIwNTkwKS4KKyAgKiBSZW1vdmVkIGUyZnNsaWJzZyBmcm9tIHdoYXQgZTJmc3Byb2dzIHByb3ZpZGVzICh3YXMganVzdCBmb3Jnb3R0ZW4pLgorICAqIFBhc3NlZCBsaW50aWFuIDAuNC4yLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiAgU3VuLCAyNiBBcHIgMTk5OCAyMjoyNzoxMSArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTAtMTQpIGZyb3plbiB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEZpeGVkIGNoZWNrcyBmb3IgaW5zdGFsbC1kb2NzIHRvIHVzZSAteC4KKyAgKiBBcHBsaWVkIHBhdGNoIGZvciBzcGFyYyBmcm9tIEp1YW4gdG8gZnNjay5jIHRvIGNvbXBpbGUgd2l0aCBnbGliYworICAgIDIuMSAoRml4ZXM6IEJ1ZyMyMDg0MSkuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUdWUsIDE0IEFwciAxOTk4IDE3OjEyOjE5ICswMjAwCisKK2UyZnNwcm9ncyAoMS4xMC0xMykgZnJvemVuIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogdGVzdCBmb3IgL3Vzci9zYmluL2luc3RhbGwtZG9jcyBiZWZvcmUgdHJ5aW5nIHRvIHJ1biBpdCBpbgorICAgIHBvc3RpbnN0IGFuZCBwcmVybSAoRml4ZXM6IEJ1ZyMxOTQ2MSwgQnVnIzE5NDY5LCBCdWcjMTk5NDksCisgICAgQnVnIzIwMDA2KS4KKyAgKiBjb21lcnJnLWRldiBub3cgc3VnZ2VzdHMgZG9jLWJhc2UuCisgICogbW92ZWQgYmluYXJ5IHBhY2thZ2VzIHNzMmcsIGNvbWVycjJnIGFuZCBlMmZzbGlic2cgYmFjayBpbnRvCisgICAgYmluYXJ5IHBhY2thZ2UgZTJmc3Byb2dzLgorICAqIHVzZSBuZXcgdmlydHVhbCBwYWNrYWdlcyBsaWJjb21lcnIyLCBsaWJzczIsIGxpYmV4dDJmczIsIGxpYmUycDIsCisgICAgbGlidXVpZDEgaW4gc2hsaWJzIGFuZCBkZXBlbmRlbmNpZXMuCisgICogQ2hhbmdlZCBlMmZzcHJvZ3MgZGVwZW5kZW5jeSBvbiBsaWJzIHRvIGEgUHJlLURlcGVuZHMgKEZpeGVzOgorICAgIEJ1ZyMxODIyMSkuCisgICogTm90IGNvbmZsaWN0aW5nIHdpdGggb2xkIHNzMmcgYW5kIGNvbWVycjJnIC0gdGhlc2Ugd2lsbCBoYXZlIHRvIGJlCisgICAgcmVtb3ZlZCBieSBoYW5kLgorICAqIFR1cm5lZCBhcm91bmQgZHBrZydzIGJ1ZyAjMTc2MjQgaW4gZTJmc3Byb2dzLnByZWluc3QuCisgICogVXBkYXRlZCBSRUFETUUuRGViaWFuIHRvIGV4cGxhaW4gdGhlIG5ldyBwYWNrYWdlIGFyY2hpdGVjdHVyZS4KKyAgKiBQYXNzZWQgbGludGlhbiAwLjMuNC4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4gIEZyaSwgMjAgTWFyIDE5OTggMTM6MDM6MTEgKzAxMDAKKworZTJmc3Byb2dzICgxLjEwLTEyKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIENvcnJlY3RlZCBkb2MgbWVudSBlbnRyaWVzIHRvIHBvaW50IHRvIHRoZSByZWFsIGRvY3VtZW50cycgcGxhY2VzLgorICAqIEZpeGVkIG1rX2NtZHMgdG8gcmVhbGx5IGZpbmQgaXRzIHN1cHBvcnQgc2NyaXB0cyAoRml4ZXM6IEJ1ZyMxODc3OSkuCisgICogTWFkZSBta19jbWRzIGFuZCBjb21waWxlX2V0IHVzZSAic2ggLWUiLgorICAqIEhhdmUgbWlzc2luZyBmaWxlIC91c3IvaW5jbHVkZS9zcy9zc19lcnIuaCBpbnN0YWxsZWQgKEZpeGVzOiBCdWcjMTg3NzgpLgorICAqIENvcnJlY3RlZCB0eXBvIGluIERlc2NyaXB0aW9uIChGaXhlczogQnVnIzE4ODkwKS4KKyAgKiBGaXhlZCBkZXNjcmlwdGlvbnMgZm9yIHNzKiBwYWNrYWdlcywgdGhhbmtzIHRvIEdyZWcgU3RhcmsgKEZpeGVzOgorICAgIEJ1ZyMxODM3MywgQnVnIzE4NDQ3KS4KKyAgKiBBZGRlZCBkZXNjcmlwdGlvbiBvZiBlMnAgYW5kIHV1aWQgbGlicyBpbiBlMmZzbGlic2ctZGV2IGRlc2NyaXB0aW9uLgorICAqIEluY2x1ZGVkIHRleGluZm8gc291cmNlcy4KKyAgKiBBZGRlZCBkb2MtYmFzZSBzdXBwb3J0IC0gc3VwcHJlc3NlZCBkaXJlY3QgbWVudS9kd3d3IHN1cHBvcnQuCisgICogQ29tcGxpZXMgd2l0aCBzdGFuZGFyZHMgdmVyc2lvbiAyLjQuMC4wLgorICAqIFBhc3NlZCBsaW50aWFuIDAuMy4wOgorICAqICByZW1vdmVkIC5kdSBjb250cm9sIGZpbGUuCisgICogIHVwZGF0ZWQgRlNGIGFkZHJlc3MuCisgICogIGZpeGVkIGluICouZmlsZXMgbmFzdHkgbGRjb25maWctc3ltbGluay1iZWZvcmUtc2hsaWItaW4tZGViJ3MuCisgICogIHR1cm5lZCByZWxhdGl2ZSBsaW5rcyBmcm9tIC91c3IvbGliIGludG8gL2xpYiBpbnRvIGFic29sdXRlIG9uZXMuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBTdW4sICA4IE1hciAxOTk4IDE5OjQyOjU4ICswMTAwCisKK2UyZnNwcm9ncyAoMS4xMC0xMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBTd2l0Y2hlZCB0byBkZWJoZWxwZXIgKEZpeGVzOkJ1ZyMxNjMwNykuCisgICogVXBkYXRlZCBzdGFuZGFyZHMgdG8gMi4zLjAuMQorICAqIENoYW5nZWQgbWFpbnRhaW5lcidzIG1haWwgYWRkcmVzcy4KKyAgKiBBZGRlZCBjb25mbGljdHMgd2l0aCBvbGQgdmVyc2lvbnMgb2YgZHVtcCBhbmQgcXVvdGEuCisgICogQWRkZWQgaHRtbC1jb252ZXJ0ZWQgdGV4aSBkb2NzIGZvciBsaWJzLCB3aXRoIG1lbnUoZHd3dykgc3VwcG9ydC4KKyAgKiBBZGRlZCBmaW5kc3VwZXIuOCBsaW5rIHRvIHVuZG9jdW1lbnRlZC4KKyAgKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIG9mIGxpYiBwYWNrYWdlcyB0byByZWZsZWN0IHRoZSBsaWIgdmVyc2lvbnMuCisgICogTW92ZWQgbGlic3MgaW50byBpdHMgb3duIHBhY2thZ2VzOyBhZGRlZCBta19jbWRzIHNjcmlwdCBhbmQKKyAgICBzdXBwb3J0IGZpbGVzIGZvciBsaWJzcyBkZXZlbG9wbWVudCAoRml4ZXM6QnVnIzE3MjMzKS4KKyAgKiBBZGRlZCBSRUFETUUuRGViaWFuIGZpbGUgZG9jdW1lbnRpbmcgYWxsIHRob3NlIGRlcGVuZGVuY3kgc3R1ZmYuCisgICogSW5jbHVkZWQgZXhhbXBsZSBlcnJvciB0YWJsZXMgZnJvbSBsaWJleHQyZnMgYW5kIGxpYnNzIGluCisgICAgY29tZXJyLWRldi4KKyAgKiBJbmNsdWRlZCBleGFtcGxlIGNvbW1hbmQgdGFibGVzIGZyb20gZGVidWdmcyBpbiBzcy1kZXYuCisgICogQWRkZWQgc2VjdGlvbi9wcmlvcml0eSBmaWxlcyBpbiBwYWNrYWdlcyAoLWlzcCkuCisgICogQ2hhbmdlZCBuYW1lcy9yZWxhdGlvbnMgZm9yIGRvYyBkaXJzIHRvIGNvbXBseSB3aXRoIHBvbGljeS4KKyAgKiBSZW1vdmVkIGNhbGwgdG8gbGRjb25maWcgZnJvbSBlMmZzcHJvZ3MucG9zdGluc3QuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQGRlYmlhbi5vcmc+ICBUaHUsIDI5IEphbiAxOTk4IDE4OjEwOjAzICswMTAwCisKK2UyZnNwcm9ncyAoMS4xMC0xMCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGRlZCBwYXRjaCBmcm9tIE1pY2hhZWwgQWxhbiBEb3JtYW4gZm9yIGNvbXBpbGF0aW9uIG9uIGFscGhhLUxpbnV4CisgICAgKENsb3NlczpCdWcjMTU1OTYpLgorICAqIEFkZGVkICctZnNpZ25lZC1jaGFyJyB0byBDT1BUUyB0byBhbGxvdyBjb21waWxhdGlvbiBvbiBwcGMtTGludXgKKyAgICAoQ2xvc2VzOkJ1ZyMxNTk3NikuCisgICogU3VwcHJlc3NlZCBFc3NlbnRpYWwgZmxhZyBvbiBsaWJzLCBhcyB3ZWxsIGFzIHVzZWxlc3MgUmVwbGFjZXMKKyAgICAoQ2xvc2VzOiBCdWcjMTY0ODApLgorICAqIFN1cHByZXNzZWQgcmVmZXJlbmNlIHRvIG9ic29sZXRlIHBhY2thZ2UgYGUyZnNwcm9nc2cnIGluIGNvbnRyb2wKKyAgICBpbmZvLCBidXQgQ29uZmxpY3RzIGZvciBzZWN1cml0eSAoQ2xvc2VzOkJ1ZyMxNjc5MSkuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQHVuaXYtbWx2LmZyPiAgV2VkLCAgNyBKYW4gMTk5OCAyMjozNTowOCArMDEwMAorCitlMmZzcHJvZ3MgKDEuMTAtOSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBGaXhlZCBjb21lcnIyZy5zaGxpYnMgdG8gcmVmbGVjdCBwYWNrYWdlLW5hbWUgY2hhbmdlLgorICAqIEZpeGVkIHByb2JsZW0gd2l0aCBzcyBpbmNsdWRlIGZpbGVzIGJlaW5nIHJlbW92ZWQgZnJvbSAvdXNyIG9uIG1ha2UKKyAgICBpbnN0YWxsIChpbmRlZWQgZml4ZWQgaW4gMS4xMC04KS4KKyAgKiBBZGRlZCBjaGFuZ2Vsb2cgZmlsZSB0byBjb21lcnIyZyBwYWNrYWdlIChpbmRlZWQgZml4ZWQgaW4gMS4xMC04KS4KKyAgKiBDb3JyZWN0ZWQgbGluayBmcm9tIGZsdXNoYi44IHRvIHVuZG9jdW1lbnRlZCAoQ2xvc2VzOkJ1ZyMxNTMzNSxCdWcjMTU2NjAsQnVnIzE1Njc1KS4KKyAgKiBBZGRlZCAvc2Jpbi9maW5kc3VwZXIgKENsb3NlczpCdWcjMTUyMjQpLgorICAqIEZpeGVkIC91c3IvYmluL2NvbXBpbGVfZXQgc2NyaXB0IChDbG9zZXM6QnVnIzE1NDg3KS4KKyAgKiBJbmNsdWRlZCBhd2sgc2NyaXB0cyBpbiAvdXNyL3NoYXJlL2NvbWVyciwgZm9yIHVzZSBieSBjb21waWxlX2V0LgorICAqIENoYW5nZWQgYmFjayB0aGUgbmFtZSBmcm9tICJlMmZzcHJvZ3NnIiB0byAiZTJmc3Byb2dzIiB0byBnZXQgYmV0dGVyCisgICAgZGVwZW5kZW5jaWVzLgorICAqIFN0cmlwIGxpYnJhcmllcyAoQ2xvc2VzOkJ1ZyMxNTY2NykuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQHVuaXYtbWx2LmZyPiAgVHVlLCAgOSBEZWMgMTk5NyAyMjo1Mjo0MiArMDEwMAorCitlMmZzcHJvZ3MgKDEuMTAtOCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGRlZCBsYXRlc3QgcGF0Y2ggZnJvbSBUZWQgZm9yIGF1dG9kZXRlY3Rpb24gb2YgbGxzZWVrKCkgcHJvdG8uCisgICogU3dpdGNoZWQgdG8gbGliYzYsIHdpdGhvdXQgbGliYzUgY29tcGF0aWJpbGl0eSAoeWV0ID8pLgorICAqIFR1cm5lZCBQcmUtRGVwZW5kcyBpbnRvIERlcGVuZHMgdG8gYWxsb3cgaW5zdGFsbGF0aW9uLiBEaXJ0eQorICAgIHRob3VnaC4gQnV0IHdoYXQgd2VyZSBQcmUtRGVwZW5kcyBmb3IgYW55d2F5ID8KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AdW5pdi1tbHYuZnI+ICBTdW4sIDIzIE5vdiAxOTk3IDIzOjAzOjAyICswMTAwCisKK2UyZnNwcm9ncyAoMS4xMC03KSB1bnN0YWJsZTsgdXJnZW5jeT1ISUdICisKKyAgKiBUdXJuZWQgIiNpZiAoX19HTElCQ19fID09IDIpIiBpbnRvICIjaWYgMSIgdG8gdHVybiBhcm91bmQgbWlzc2luZyBsbHNlZWsoKQorICAgIHByb3RvdHlwZSBpbiBsaWJjXzUuNC4zMy01IGFzIHdlbGwgYXMgbGliYzYuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQHVuaXYtbWx2LmZyPiAgVHVlLCAyMSBPY3QgMTk5NyAxMjo1MzoyNyArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTAtNikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBPZmZpY2lhbCBsaWJjNiBwYXRjaGVzIGZyb20gVGVkLgorICAqIENvbnZlcnRlZCB0byBkZWJzdGQgLSBsZXQgaXQgZG8gdGhlIHN0cmlwcGluZyBzdHVmZi4KKyAgKiBTZXBhcmF0ZWQgbGliY29tZXJyIGludG8gYSBzdGFuZGFsb25lIGxpYiAtIGluY2x1ZGVzIGZ1bGwgZG9jIGFuZCB0b29scy4KKyAgKiBTZXBhcmF0ZWQgZGV2ZWxvcG1lbnQgZmlsZXMgaW50byBlMmZzbGlicy1kZXYsIHdoaWNoIFByb3ZpZGVzIHRoZSA0IG90aGVyCisgICAgLWRldiBwYWNrYWdlcy4KKyAgKiBOb3cgUHJvdmlkZXMgdGhlIDQgb3RoZXIgbGliIHBhY2thZ2VzLCB0byBtYWtlIGl0IHBvc3NpYmxlIG5vdCB0byBkZXBlbmQKKyAgICB1cG9uIGUyZnNwcm9ncyBpdHNlbGYuIFRoZXNlIGxpYnMgV0lMTCBiZSB0YWtlbiBvdXQgb2YgInByb2dzIiBpbiB0aGUKKyAgICBuZXh0IHJlbGVhc2UuCisKKyAtLSBZYW5uIERpcnNvbiA8ZGlyc29uQHVuaXYtbWx2LmZyPiAgV2VkLCAyNCBTZXAgMTk5NyAxMDo0NjowMCArMDIwMAorCitlMmZzcHJvZ3MgKDEuMTAtNS4xKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bG93CisKKyAgKiBBcHBsaWVkIHBhdGNoIGZyb20gVGVkIGZvciBsaWJjNiBjb21wYXRpYmlsaXR5LCBmb3IgdGVzdCBwdXJwb3NlLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkB1bml2LW1sdi5mcj4gIFRodSwgMTEgU2VwIDE5OTcgMDk6MDk6NDIgKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTUpIHVuc3RhYmxlOyB1cmdlbmN5PW1lZGl1bQorCisgICogU3dpdGNoZWQgYmFjayB0byBsaWJjNSBiZWNhdXNlIG9mIHBvc3NpYmxlIGJ1ZyBpbiBsaWJjNi0yLjAuNC1wcm92aWRlZAorICAgIGxsc2VlaygpIGNhdXNpbmcgcHJvYmxlbSB3aXRoIHBhcnRpdGlvbnMgPiAyR2IuCisgICogU3dpdGNoZWQgYmFjayB0byBsaWJjLXByb3ZpZGVkIGxsc2VlaygpLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkB1bml2LW1sdi5mcj4gIFR1ZSwgIDUgQXVnIDE5OTcgMTY6NTQ6NDAgKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTQuMSkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBNYWtlIHVzZSBvZiBzaGlwcGVkIGxsc2VlayBpbnN0ZWFkIG9mIGdsaWJjJ3Mgd2hpY2ggc2VlbXMgYnVnZ3kKKyAgICBbdW5yZWxlYXNlZCAtIGNvdWxkIG5vdCBjb21waWxlIGR1ZSB0byBwb3NzaWJsZSBnY2MgYnVnXS4KKyAgKiBDb3JyZWN0ZWQgY29tcGlsZXItb3B0aW9ucyBoYW5kbGluZyBpbiBkZWJpYW4vcnVsZXMgKHVzZSBDQ09QVFMgaW5zdGVhZAorICAgIG9mIENGTEFHUyB3aGljaCBpcyBtZXNzZWQgd2l0aCBpbiBjb25maWd1cmUuaW4pLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkB1bml2LW1sdi5mcj4gIE1vbiwgMjggSnVsIDE5OTcgMTk6NDc6MDIgKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTQpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogU3dpdGNoZWQgdG8gbGliYzYuCisgICogQWRkZWQgY2FsbHMgdG8gdXBkYXRlLWluZm8gaW4gcG9zdGlucy9wcmVybS4KKyAgKiBNaXNjIGNoYW5nZXMgdG8gZGViaWFuL3J1bGVzOyBzb21lIGNsZWFudXAgaW4gTWFrZWZpbGVzLgorCisgLS0gWWFubiBEaXJzb24gPGRpcnNvbkB1bml2LW1sdi5mcj4gIFRodSwgMTAgSnVsIDE5OTcgMTk6NDI6NTQgKzAyMDAKKworZTJmc3Byb2dzICgxLjEwLTMpIHN0YWJsZSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE5ldyBtYWludGFpbmVyIChjbG9zZWQgbWFueSBvYnNvbGV0ZSBidWctcmVwb3J0cykuCisgICogdXBkYXRlZCAiY29weXJpZ2h0IiB0byBzaG93IG5ldyBsb2NhdGlvbiBvbiB0c3gtMTEuCisgICogc3RhcnRlZCBkZWJpYW4vcnVsZXMgY2xlYW51cCwgdG93YXJkcyBuZXcgcG9saWN5IGNvbmZvcm1hbmNlLgorICAqIEFkZGVkIGZsdXNoYi44IGxpbmsgdG8gdW5kb2N1bWVudGVkLjcgKGJ1ZyAjODY0NCkuCisgICogQWRkZWQge2ZzY2ssbWtmc30uZXh0Mi44IGxpbmtzIHRvIGV4aXN0aW5nIG1hbnBhZ2VzIChidWdzICM1NTk4LAorICAgICM2Mjg2KS4KKworIC0tIFlhbm4gRGlyc29uIDxkaXJzb25AdW5pdi1tbHYuZnI+ICBXZWQsIDI1IEp1biAxOTk3IDE0OjU5OjU4ICswMjAwCisKK2UyZnNwcm9ncyAoMS4xMC0yKSBmcm96ZW4gdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGQgJ2xkY29uZmlnJyB0byBwb3N0aW5zdCAoc2hvdWxkIGZpeCAjOTAyMCkuCisgICogRGVmaW5lIEhBVkVfTkVUSU5FVF9JTl9IIG9uIGFscGhhL2dsaWJjLgorCisgLS0gS2xlZSBEaWVuZXMgPGtsZWVAZGViaWFuLm9yZz4gIFR1ZSwgMjkgQXByIDE5OTcgMTc6MjQ6MTIgLTA0MDAKKworZTJmc3Byb2dzICgxLjEwLTEpIGZyb3plbiB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KKworICAqIFVwc3RyZWFtIGJ1Zy1maXggcmVsZWFzZS4KKworIC0tIEtsZWUgRGllbmVzIDxrbGVlQGRlYmlhbi5vcmc+ICBUaHUsIDI0IEFwciAxOTk3IDE0OjU0OjEyIC0wNDAwCisKK2UyZnNwcm9ncyAoMS4wOS0xKSBmcm96ZW47IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBVcHN0cmVhbSBidWctZml4IHJlbGVhc2UuCisKKyAtLSBLbGVlIERpZW5lcyA8a2xlZUBkZWJpYW4ub3JnPiAgVGh1LCAyNCBBcHIgMTk5NyAxNDo1NDoxMiAtMDQwMAorCitlMmZzcHJvZ3MgKDEuMDYtNCkgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBBZGRlZCBlbXB0eSBlbnRyaWVzIHRvIHNobGlicy5sb2NhbCwgdG8gbmVhdGx5IHNvbHZlIHRoZSBwcmUtZGVwZW5kcworICAgIHByb2JsZW0sIGFzIHN1Z2dlc3RlZCBieSBJYW4gSmFja3Nvbi4KKworIC0tIE1pY2hhZWwgTm9ud2VpbGVyIDxtcm4yMEBjYW0uYWMudWs+ICBXZWQsIDEzIE5vdiAxOTk2IDA4OjEzOjI4ICswMDAwCisKK2UyZnNwcm9ncyAoMS4wNi0zKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIEhhcmQgY29kZWQgUHJlLURlcGVuZHMgbGluZSwgYXMgYSB0ZW1wb3JhcnkgZml4IGZvciB0aGUgcHJlLWRlcGVuZHMKKyAgICBjb250YWlucyBlMmZzcHJvZ3MgcHJvYmxlbS4KKworIC0tIE1pY2hhZWwgTm9ud2VpbGVyIDxtcm4yMEBjYW0uYWMudWs+ICBTYXQsIDkgTm92IDE5OTYgMTI6NTc6NDQgKzAwMDAKKworZTJmc3Byb2dzICgxLjA2LTIpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogTmV3IHBhY2thZ2luZyBmb3JtYXQKKyAgKiBGaXhlcyBwYWNrYWdpbmcgYnVncyAtCisgICAgICBGaWxlcyBpbiAvbGliIGFyZSBub3cgc3RyaXBwZWQgb2YgYWxsIHVubmVlZGVkIHN5bWJvbHMgKEJ1ZyM1MTIxKQorICAgICAgQ2FsbHMgdG8gbGRjb25maWcgaW4gbWFpbnRhaW5lciBzY3JpcHRzIGhhdmUgYmVlbiByZW1vdmVkIChCdWcjNDI0NykKKworIC0tIE1pY2hhZWwgTm9ud2VpbGVyIDxtcm4yMEBjYW0uYWMudWs+ICBUdWUsIDUgTm92IDE5OTYgMjE6MTQ6NTQgKzAwMDAKKworZTJmc3Byb2dzICgxLjAxLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogdXBncmFkZWQgdG8gbGF0ZXN0IHVwc3RyZWFtIHZlcnNpb24sIHRvIDEuMDYgZnJvbSAxLjA1CisgICogdXBncmFkZWQgdG8gbGF0ZXN0IHVwc3RyZWFtIHZlcnNpb24sIHRvIDEuMDUgZnJvbSAxLjA0CisgICogZ3ppcCBtYW5wYWdlcworICAqIG1pbm9yIGNoYW5nZXMgdG8gZGViaWFuLnJ1bGVzCisKKyAtLSBNaWNoYWVsIE1lc2tlcyA8bWVza2VzQGRlYmlhbi5vcmc+ICBGcmksIDE4IE9jdCAxOTk2IDAwOjAwOjAwICswMDAwCisKK2UyZnNwcm9ncyAoMS4wNC0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAgKiB1cGdyYWRlZCB0byBsYXRlc3QgdXBzdHJlYW0gdmVyc2lvbiwgdG8gMS4wNCBmcm9tIDEuMDIKKyAgICogYW5vdGhlciB0aWR5LXVwIG9mIGRlYmlhbi5ydWxlcworICAgKiBzZWN0aW9uIGFuZCBwcmlvcml0eSBhZGRlZCB0byBkZWJpYW4uY29udHJvbCwgc2luY2UgdGhpcyBpcyBhbgorICAgICBlc3NlbnRpYWwgYmFzZSBwYWNrYWdlLgorCisgLS0gTWljaGFlbCBOb253ZWlsZXIgPG1ybjIwQGNhbS5hYy51az4gIFN1biwgMjMgSnVuIDE5OTYgMDA6MDA6MDAgKzAwMDAKKworZTJmc3Byb2dzICgxLjAyLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogdXBncmFkZWQgdG8gbGF0ZXN0IHVwc3RyZWFtIHZlcnNpb24sIHRvIDEuMDIgZnJvbSAxLjAxCisgICogY29waWVkICJjb25maWd1cmUiIHVzcl9wcmVmaXggY2hhbmdlIChzZWUgYmVsb3cpLCBpbnRvIGNvbmZpZ3VyZS5pbgorICAqIHVwZGF0ZWQgZGViaWFuLmNvbnRyb2wgZmlsZSwgYWRkZWQgUHJlLURlcGVuZHMgZmllbGQKKyAgICBjcmVhdGVkIHByZWluc3Qgc2NyaXB0IHRvIGNoZWNrIGRwa2cgLS1hc3NlcnQtcHJlZGVwZW5kcworICAgIHRpZHllZCBhbmQgZml4ZWQgZGViaWFuLnJ1bGVzCisgICogc2V0IGUyZnNjayB0byBsaW5rIHNoYXJlZCwgYXMgc3VnZ2VzdGVkIGJ5IEJydWNlIFBlcmVucyBpbiBCdWcjMjMzMgorICAqIGNvcnJlY3RlZCBwcm9ibGVtIGluIGUyZnNjayBlcnJvciBtZXNzYWdlLCBCdWcjMjUzNAorICAqIGFkZGVkIEFyY2hpdGVjdHVyZSBmaWVsZAorICAqIHZlcnkgbWlub3IgY29ycmVjdGlvbiB0byBleHBlY3RlZCBvdXRwdXQgb2YgYSBidWlsZCB0aW1lIHRlc3QKKworIC0tIE1pY2hhZWwgTm9ud2VpbGVyIDxtcm4yMEBjYW0uYWMudWs+ICBUdWUsIDUgTWFyIDE5OTYgMDA6MDA6MDAgKzAwMDAKKworZTJmc3Byb2dzICgxLjAxLTEpIHVuc3RhYmxlOyB1cmdlbmN5PWxvdworCisgICogcmVtb3ZlZCBkZWJ1Z2dpbmcgc3ltYm9scyBmcm9tIGxpYnMgYW5kIGVuYWJsZWQgbW9yZSBvcHRpbWl6YXRpb24KKyAgICBhcyBzdWdnZXN0ZWQgYnkgUm9sZiBSb3NzaXVzCisgICogYWxzbyByZW1vdmVkIHRoZSAvdmFyL2NhdG1hbiBwYWdlcworICAqIGNoYW5nZWQgdG8gZWxmIGNvbXBpbGF0aW9uCisKKyAtLSBBbmRyZXcgRC4gRmVybmFuZGVzIDxhZGZlcm5hbkBjbmQubWNnaWxsLmNhPiAgTW9uLCAyMCBOb3YgMTk5NSAwMDowMDowMCArMDAwMAorCitlMmZzcHJvZ3MgKDAuNWItMikgdW5zdGFibGU7IHVyZ2VuY3k9bG93CisKKyAgKiBVcGdyYWRlZCB0byBsYXRlc3QgdmVyc2lvbiwgdG8gMS4wMSBmcm9tIDAuNWIuCisgICogY2hhbmdlZCB0aGUgaW5zdGFsbGF0aW9uIGdyb3VwcyBmcm9tIGJpbiB0byByb290IGluIE1DT05GSUcuaW4KKyAgKiBjaGFuZ2VkIGNvbmZpZ3VyZSB0byBzZXQgdXNyX3ByZWZpeD0iXCR7cHJlZml4fS91c3IiCisgICogbW92ZWQgdGhlIGNhdCBwYWdlcyB0byAvdmFyL2NhdG1hbiBpbiBNQ09ORklHLmluCisKKyAtLSBBbmRyZXcgRC4gRmVybmFuZGVzIDxhZGZlcm5hbkBjbmQubWNnaWxsLmNhPiAgU2F0LCA3IE9jdCAxOTk1IDAwOjAwOjAwICswMDAwCisKK2UyZnNwcm9ncyAoMC41Yi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1sb3cKKworICAqIE1hZGUgImZzY2sgLXQgPGZpbGVzeXN0ZW0tdHlwZT4gPGRldmljZT4iIHdvcmsgY29ycmVjdGx5LiBGb3JtZXJseQorICAgIHRoZSAtdCBhcmd1bWVudCB3YXMgb3ZlcnJpZGVuIGJ5IHRoZSBmaWxlc3lzdGVtIHR5cGUgbGlzdGVkIGZvciB0aGUKKyAgICBkZXZpY2UgaW4gL2V0Yy9mc3RhYi4KKyAgKiBhZGRlZCBEZWJpYW4gR05VL0xpbnV4IHBhY2thZ2UgbWFpbnRlbmFuY2Ugc3lzdGVtIGZpbGVzCisKKyAtLSBCcnVjZSBQZXJlbnMgPEJydWNlQFBpeGFyLmNvbT4gIFRodSwgMyBBdWcgMTk5NSAwMDowMDowMCArMDAwMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9jb21lcnItZGV2LmRvYy1iYXNlIGIvZTJmc3Byb2dzL2RlYmlhbi9jb21lcnItZGV2LmRvYy1iYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2ViNzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2NvbWVyci1kZXYuZG9jLWJhc2UKQEAgLTAsMCArMSwxMiBAQAorRG9jdW1lbnQ6IGNvbWVyci1tYW51YWwKK1RpdGxlOiBUaGUgY29tX2VyciBsaWJyYXJ5CitBdXRob3I6IEtlbiBSYWVidXJuIGFuZCBCaWxsIFNvbW1lcmZlbGQKK0Fic3RyYWN0OiBBIGxpYnJhcnksIGFuZCBhc3NvY2lhdGVkIHV0aWxpdGllcywKKyB3aGljaCBhbGxvdyBhIG1vcmUgdW5pZm9ybSB3YXkgZm9yIGxpYnJhcmllcworIHRvIHJldHVybiBlcnJvcnMgdG8gdGhlaXIgY2FsbGVycywgYW5kIGZvciBwcm9ncmFtcworIHRvIGRlc2NyaWJlIGVycm9ycyBhbmQgZXhjZXB0aW9uYWwgY29uZGl0aW9ucyB0byB0aGVpciB1c2Vycy4KK1NlY3Rpb246IFByb2dyYW1taW5nCisKK0Zvcm1hdDogSFRNTAorSW5kZXg6IC91c3Ivc2hhcmUvZG9jL2NvbWVyci1kZXYvaHRtbC1pbmZvL2NvbV9lcnIuaHRtbAorRmlsZXM6IC91c3Ivc2hhcmUvZG9jL2NvbWVyci1kZXYvaHRtbC1pbmZvLyouaHRtbApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9jb21lcnItZGV2LmV4YW1wbGVzIGIvZTJmc3Byb2dzL2RlYmlhbi9jb21lcnItZGV2LmV4YW1wbGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmZjIwY2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2NvbWVyci1kZXYuZXhhbXBsZXMKQEAgLTAsMCArMSwyIEBACitsaWIvc3Mvc3NfZXJyLmV0CitkZWJpYW4vQlVJTEQtU1REL2xpYi9leHQyZnMvZXh0Ml9lcnIuZXQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vY29tZXJyLWRldi5maWxlcy5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vY29tZXJyLWRldi5maWxlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2I4YjBlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9jb21lcnItZGV2LmZpbGVzLmluCkBAIC0wLDAgKzEsOSBAQAordXNyL2xpYi8qL2xpYmNvbV9lcnIuYQordXNyL2xpYi8qL2xpYmNvbV9lcnIuc28KK3Vzci9pbmNsdWRlL2V0LyoKK3Vzci9pbmNsdWRlL2NvbV9lcnIuaAordXNyL3NoYXJlL21hbi9tYW4xL2NvbXBpbGVfZXQqCit1c3Ivc2hhcmUvbWFuL21hbjMvY29tX2Vyci4zKgordXNyL2Jpbi9jb21waWxlX2V0Cit1c3Ivc2hhcmUvZXQvKgordXNyL2xpYi8qL3BrZ2NvbmZpZy9jb21fZXJyLnBjCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2NvbXBhdCBiL2UyZnNwcm9ncy9kZWJpYW4vY29tcGF0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNjM1MTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2NvbXBhdApAQCAtMCwwICsxIEBACis5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2NvbnRyb2wuaW4gYi9lMmZzcHJvZ3MvZGViaWFuL2NvbnRyb2wuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNiOWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vY29udHJvbC5pbgpAQCAtMCwwICsxLDM0OCBAQAorZGVmaW5lKE1VTFRJQVJDSF9IRUFERVJTLGlmZGVmKGBET19NVUxUSUFSQ0gnLAorTXVsdGktQXJjaDogc2FtZQorUHJlLURlcGVuZHM6ICR7bWlzYzpQcmUtRGVwZW5kc30sUkVNT1ZFX01FKSlkbmwKK2RlZmluZShVVElMX0xJTlVYX05HX0RFRklORVMsCitpZmRlZihgVVRJTF9MSU5VWF9ORycsIGBgbGliYmxraWQtZGV2ICg+PSAyLjE2KSwgdXVpZC1kZXYgKD49IDIuMTYpLCcnKSlkbmwKK1NvdXJjZTogZTJmc3Byb2dzCitTZWN0aW9uOiBhZG1pbgorUHJpb3JpdHk6IHJlcXVpcmVkCitNYWludGFpbmVyOiBUaGVvZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PgorQnVpbGQtRGVwZW5kczogZ2V0dGV4dCwgdGV4aW5mbywgcGtnLWNvbmZpZywgZ2NjLW11bHRpbGliIFttaXBzIG1pcHNlbF0sIGxpYmZ1c2UtZGV2IFtsaW51eC1hbnkga2ZyZWVic2QtYW55XSwgbGliYXR0cjEtZGV2LCBkZWJoZWxwZXIgKD49IDkuMCksIFVUSUxfTElOVVhfTkdfREVGSU5FUyBtNAorU3RhbmRhcmRzLVZlcnNpb246IDMuOS44CitIb21lcGFnZTogaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQKKworaWZkZWYoYEZVU0UyRlMnLGBgCitQYWNrYWdlOiBmdXNlMmZzCitQcmlvcml0eTogb3B0aW9uYWwKK0RlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9LCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogbGludXgtYW55IGtmcmVlYnNkLWFueQorRGVzY3JpcHRpb246IGV4dDIgLyBleHQzIC8gZXh0NCBmaWxlIHN5c3RlbSBkcml2ZXIgZm9yIEZVU0UKKyBmdXNlMmZzIGlzIGEgRlVTRSBmaWxlIHN5c3RlbSBjbGllbnQgdGhhdCBzdXBwb3J0cyByZWFkaW5nIGFuZAorIHdyaXRpbmcgZnJvbSBkZXZpY2VzIG9yIGltYWdlIGZpbGVzIGNvbnRhaW5pbmcgZXh0MiwgZXh0MywgYW5kIGV4dDQKKyBmaWxlIHN5c3RlbXMuCisnJylkbmwKKworaWZkZWYoYEUyRlNDS19TVEFUSUMnLGBgCitQYWNrYWdlOiBlMmZzY2stc3RhdGljCitQcmlvcml0eTogb3B0aW9uYWwKK0RlcGVuZHM6ICR7bWlzYzpEZXBlbmRzfQorUmVjb21tZW5kczogc2FzaCB8IGJhc2gtc3RhdGljIHwgenNoLXN0YXRpYyB8IGJ1c3lib3gtc3RhdGljIHwgenNoMzAtc3RhdGljCitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IHN0YXRpY2FsbHktbGlua2VkIHZlcnNpb24gb2YgdGhlIGV4dDIvZXh0My9leHQ0IGZpbGVzeXN0ZW0gY2hlY2tlcgorIFRoaXMgbWF5IGJlIG9mIHNvbWUgaGVscCB0byB5b3UgaWYgeW91ciBmaWxlc3lzdGVtIGdldHMgY29ycnVwdGVkIGVub3VnaAorIHRvIGJyZWFrIHRoZSBzaGFyZWQgbGlicmFyaWVzIHVzZWQgYnkgdGhlIGR5bmFtaWNhbGx5IGxpbmtlZCBjaGVja2VyLgorIC4KKyBUaGlzIGJpbmFyeSB0YWtlcyBtdWNoIG1vcmUgc3BhY2UgdGhhbiBpdHMgZHluYW1pYyBjb3VudGVycGFydCBsb2NhdGVkCisgaW4gZTJmc3Byb2dzLCB0aG91Z2guCisgLgorIFlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGEgc3RhdGljYWxseS1saW5rZWQgc2hlbGwgYXMgd2VsbCwgdG8gYmUgYWJsZQorIHRvIHJ1biB0aGlzIHByb2dyYW0gaWYgc29tZXRoaW5nIGxpa2UgeW91ciBDIGxpYnJhcnkgZ2V0cyBjb3JydXB0ZWQuCisnJylkbmwKKworUGFja2FnZTogbGliY29tZXJyMgorU2VjdGlvbjogbGlicworUHJvdmlkZXM6IGxpYmNvbWVyci1rdGgtY29tcGF0CitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitSZXBsYWNlczogZTJmc3Byb2dzICg8PCAxLjM0LTEpCitBcmNoaXRlY3R1cmU6IGFueQorTVVMVElBUkNIX0hFQURFUlMKK0Rlc2NyaXB0aW9uOiBjb21tb24gZXJyb3IgZGVzY3JpcHRpb24gbGlicmFyeQorIGxpYmNvbWVyciBpcyBhbiBhdHRlbXB0IHRvIHByZXNlbnQgYSBjb21tb24gZXJyb3ItaGFuZGxpbmcgbWVjaGFuaXNtIHRvCisgbWFuaXB1bGF0ZSB0aGUgbW9zdCBjb21tb24gZm9ybSBvZiBlcnJvciBjb2RlIGluIGEgZmFzaGlvbiB0aGF0IGRvZXMgbm90CisgaGF2ZSB0aGUgcHJvYmxlbXMgaWRlbnRpZmllZCB3aXRoIG1lY2hhbmlzbXMgY29tbW9ubHkgaW4gdXNlLgorCitQYWNrYWdlOiBjb21lcnItZGV2CitTZWN0aW9uOiBsaWJkZXZlbAorUHJpb3JpdHk6IGV4dHJhCitEZXBlbmRzOiBsaWJjNi1kZXYgfCBsaWJjLWRldiwgbGliY29tZXJyMiAoPSAke21haW5CaW5hcnl9KSwgJHttaXNjOkRlcGVuZHN9CitTdWdnZXN0czogZG9jLWJhc2UKK1JlcGxhY2VzOiBlMmZzbGlicy1kZXYgKDw8IDEuMzMtMiksIGxpYmtyYjUtZGV2ICg8PCAxLjMpCitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IGNvbW1vbiBlcnJvciBkZXNjcmlwdGlvbiBsaWJyYXJ5IC0gaGVhZGVycyBhbmQgc3RhdGljIGxpYnJhcmllcworIGxpYmNvbV9lcnIgaXMgYW4gYXR0ZW1wdCB0byBwcmVzZW50IGEgY29tbW9uIGVycm9yLWhhbmRsaW5nIG1lY2hhbmlzbSB0bworIG1hbmlwdWxhdGUgdGhlIG1vc3QgY29tbW9uIGZvcm0gb2YgZXJyb3IgY29kZSBpbiBhIGZhc2hpb24gdGhhdCBkb2VzIG5vdAorIGhhdmUgdGhlIHByb2JsZW1zIGlkZW50aWZpZWQgd2l0aCBtZWNoYW5pc21zIGNvbW1vbmx5IGluIHVzZS4KKyAuCisgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBmb3IgdGhlIGNvbV9lcnIgbGlicmFyeS4KKworUGFja2FnZTogbGlic3MyCitTZWN0aW9uOiBsaWJzCitEZXBlbmRzOiBsaWJjb21lcnIyLCAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitSZXBsYWNlczogZTJmc3Byb2dzICg8PCAxLjM0LTEpCitBcmNoaXRlY3R1cmU6IGFueQorTVVMVElBUkNIX0hFQURFUlMKK0Rlc2NyaXB0aW9uOiBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIHBhcnNpbmcgbGlicmFyeQorIGxpYnNzIHByb3ZpZGVzIGEgc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcGFyc2VyIHdoaWNoIHdpbGwKKyBhY2NlcHQgaW5wdXQgZnJvbSB0aGUgdXNlciwgcGFyc2UgdGhlIGNvbW1hbmQgaW50byBhbiBhcmd2IGFyZ3VtZW50CisgdmVjdG9yLCBhbmQgdGhlbiBkaXNwYXRjaCBpdCB0byBhIGhhbmRsZXIgZnVuY3Rpb24uCisgLgorIEl0IHdhcyBvcmlnaW5hbGx5IGluc3BpcmVkIGJ5IHRoZSBNdWx0aWNzIFN1YlN5c3RlbSBsaWJyYXJ5LgorCitQYWNrYWdlOiBzcy1kZXYKK1NlY3Rpb246IGxpYmRldmVsCitQcmlvcml0eTogZXh0cmEKK0RlcGVuZHM6IGxpYmM2LWRldiB8IGxpYmMtZGV2LCBsaWJzczIgKD0gJHttYWluQmluYXJ5fSksIGNvbWVyci1kZXYsICR7bWlzYzpEZXBlbmRzfQorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBjb21tYW5kLWxpbmUgaW50ZXJmYWNlIHBhcnNpbmcgbGlicmFyeSAtIGhlYWRlcnMgYW5kIHN0YXRpYyBsaWJyYXJpZXMKKyBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgYSB0b29sIHRoYXQgcGFyc2VzIGEgY29tbWFuZCB0YWJsZSB0byBnZW5lcmF0ZQorIGEgc2ltcGxlIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgcGFyc2VyLCB0aGUgaW5jbHVkZSBmaWxlcyBuZWVkZWQgdG8KKyBjb21waWxlIGFuZCB1c2UgaXQsIGFuZCB0aGUgc3RhdGljIGxpYnMuCisgLgorIEl0IHdhcyBvcmlnaW5hbGx5IGluc3BpcmVkIGJ5IHRoZSBNdWx0aWNzIFN1YlN5c3RlbSBsaWJyYXJ5LgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciB0aGUgc3MgbGlicmFyeS4KK2lmZGVmKGBVVElMX0xJTlVYX05HJywsYGAKK1BhY2thZ2U6IGxpYnV1aWQxCitTZWN0aW9uOiBsaWJzCitEZXBlbmRzOiBwYXNzd2QsICR7c2hsaWJzOkRlcGVuZHN9LCAke21pc2M6RGVwZW5kc30KK1JlY29tbWVuZHM6IHV1aWQtcnVudGltZQorUmVwbGFjZXM6IGUyZnNwcm9ncyAoPDwgMS4zNC0xKQorQXJjaGl0ZWN0dXJlOiBhbnkKK01VTFRJQVJDSF9IRUFERVJTCitEZXNjcmlwdGlvbjogVW5pdmVyc2FsbHkgVW5pcXVlIElEIGxpYnJhcnkKKyBUaGUgbGlidXVpZCBsaWJyYXJ5IGdlbmVyYXRlcyBhbmQgcGFyc2VzIDEyOC1iaXQgdW5pdmVyc2FsbHkgdW5pcXVlCisgaWRzIChVVUlEcykuICBBIFVVSUQgaXMgYW4gaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYm90aAorIHNwYWNlIGFuZCB0aW1lLCB3aXRoIHJlc3BlY3QgdG8gdGhlIHNwYWNlIG9mIGFsbCBVVUlEcy4gIEEgVVVJRCBjYW4KKyBiZSB1c2VkIGZvciBtdWx0aXBsZSBwdXJwb3NlcywgZnJvbSB0YWdnaW5nIG9iamVjdHMgd2l0aCBhbiBleHRyZW1lbHkKKyBzaG9ydCBsaWZldGltZSwgdG8gcmVsaWFibHkgaWRlbnRpZnlpbmcgdmVyeSBwZXJzaXN0ZW50IG9iamVjdHMKKyBhY3Jvc3MgYSBuZXR3b3JrLgorIC4KKyBTZWUgUkZDIDQxMjIgZm9yIG1vcmUgaW5mb3JtYXRpb24uICAKKworUGFja2FnZTogdXVpZC1ydW50aW1lCitTZWN0aW9uOiBsaWJzCitQcmlvcml0eTogb3B0aW9uYWwKK0RlcGVuZHM6IHBhc3N3ZCwgbGlidXVpZDEgKD4+IDEuNDAuMy0xKSwgJHtzaGxpYnM6RGVwZW5kc30sICR7bWlzYzpEZXBlbmRzfQorUmVwbGFjZXM6IGUyZnNwcm9ncyAoPD0gMS40MC4zLTF1YnVudHUxKQorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBydW50aW1lIGNvbXBvbmVudHMgZm9yIHRoZSBVbml2ZXJzYWxseSBVbmlxdWUgSUQgbGlicmFyeQorIFRoZSBsaWJ1dWlkIGxpYnJhcnkgZ2VuZXJhdGVzIGFuZCBwYXJzZXMgMTI4LWJpdCB1bml2ZXJzYWxseSB1bmlxdWUKKyBpZHMgKFVVSURzKS4gIEEgVVVJRCBpcyBhbiBpZGVudGlmaWVyIHRoYXQgaXMgdW5pcXVlIGFjcm9zcyBib3RoCisgc3BhY2UgYW5kIHRpbWUsIHdpdGggcmVzcGVjdCB0byB0aGUgc3BhY2Ugb2YgYWxsIFVVSURzLiAgQSBVVUlEIGNhbgorIGJlIHVzZWQgZm9yIG11bHRpcGxlIHB1cnBvc2VzLCBmcm9tIHRhZ2dpbmcgb2JqZWN0cyB3aXRoIGFuIGV4dHJlbWVseQorIHNob3J0IGxpZmV0aW1lLCB0byByZWxpYWJseSBpZGVudGlmeWluZyB2ZXJ5IHBlcnNpc3RlbnQgb2JqZWN0cworIGFjcm9zcyBhIG5ldHdvcmsuCisgLgorIFNlZSBSRkMgNDEyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIAorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIHV1aWRnZW4gcHJvZ3JhbSBhbmQgdGhlIHV1aWRkIGRhZW1vbi4KKyAuCisgVGhlIHV1aWRkIGRhZW1vbiBpcyB1c2VkIHRvIGdlbmVyYXRlIFVVSURzLCBlc3BlY2lhbGx5IHRpbWUtYmFzZWQKKyBVVUlE4oCZcywgaW4gYSBzZWN1cmUgYW5kIGd1YXJhbnRlZWQtdW5pcXVlIGZhc2hpb24sIGV2ZW4gaW4gdGhlIGZhY2UKKyBvZiBsYXJnZSBudW1iZXJzIG9mIHRocmVhZHMgdHJ5aW5nIHRvIGdyYWIgVVVJROKAmXMgcnVubmluZyBvbgorIGRpZmZlcmVudCBDUFXigJlzLiBJdCBpcyB1c2VkIGJ5IGxpYnV1aWQgYXMgd2VsbCBhcyB0aGUgdXVpZGdlbgorIHByb2dyYW0uCisKK2lmZGVmKGBVREVCX1BLR1MnLGBgCitQYWNrYWdlOiBsaWJ1dWlkMS11ZGViCitQYWNrYWdlLVR5cGU6IHVkZWIKK1NlY3Rpb246IGRlYmlhbi1pbnN0YWxsZXIKK1ByaW9yaXR5OiBvcHRpb25hbAorRGVwZW5kczogJHtzaGxpYnM6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogc3RyaXBwZWQgZG93biB1bml2ZXJzYWxseSB1bmlxdWUgaWQgbGlicmFyeSwgZm9yIGRlYmlhbi1pbnN0YWxsZXIKKyBsaWJ1dWlkIGdlbmVyYXRlcyBhbmQgcGFyc2VzIDEyOC1iaXQgdW5pdmVyc2FsbHkgdW5pcXVlIGlkcyAoVVVJRHMpLgorIFNlZSBSRkMgNDEyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAuCisgVGhpcyBpcyBhIG1pbmltYWwgcGFja2FnZSBmb3IgZGViaWFuLWluc3RhbGxlci4KKycnKWRubAorCitQYWNrYWdlOiB1dWlkLWRldgorU2VjdGlvbjogbGliZGV2ZWwKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogbGliYzYtZGV2IHwgbGliYy1kZXYsIGxpYnV1aWQxICg9ICR7bWFpbkJpbmFyeX0pLCAke21pc2M6RGVwZW5kc30KK1JlcGxhY2VzOiBlMmZzbGlicy1kZXYgKDw8IDEuMTUpCitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IHVuaXZlcnNhbGx5IHVuaXF1ZSBpZCBsaWJyYXJ5IC0gaGVhZGVycyBhbmQgc3RhdGljIGxpYnJhcmllcworIGxpYnV1aWQgZ2VuZXJhdGVzIGFuZCBwYXJzZXMgMTI4LWJpdCB1bml2ZXJzYWxseSB1bmlxdWUgaWRzIChVVUlEcykuCisgU2VlIFJGQyA0MTIyIGZvciBtb3JlIGluZm9ybWF0aW9uLgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciB0aGUgdXVpZCBsaWJyYXJ5LgorCitQYWNrYWdlOiBsaWJibGtpZDEKK1NlY3Rpb246IGxpYnMKK0RlcGVuZHM6ICR7c2hsaWJzOkRlcGVuZHN9LCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogYmxvY2sgZGV2aWNlIGlkIGxpYnJhcnkKKyBUaGUgYmxraWQgbGlicmFyeSB3aGljaCBhbGxvd3Mgc3lzdGVtIHByb2dyYW1zIGxpa2UgZnNjayBhbmQgCisgbW91bnQgdG8gcXVpY2tseSBhbmQgZWFzaWx5IGZpbmQgYmxvY2sgZGV2aWNlcyBieSBmaWxlc3lzdGVtIFVVSUQgYW5kIAorIExBQkVMLiAgVGhpcyBhbGxvd3Mgc3lzdGVtIGFkbWluaXN0cmF0b3JzIHRvIGF2b2lkIHNwZWNpZnlpbmcgCisgZmlsZXN5c3RlbXMgYnkgaGFyZC1jb2RlZCBkZXZpY2UgbmFtZXMsIGJ1dCB2aWEgYSBsb2dpY2FsIG5hbWluZyAKKyBzeXN0ZW0gaW5zdGVhZC4KKworaWZkZWYoYFVERUJfUEtHUycsYGAKK1BhY2thZ2U6IGxpYmJsa2lkMS11ZGViCitQYWNrYWdlLVR5cGU6IHVkZWIKK1NlY3Rpb246IGRlYmlhbi1pbnN0YWxsZXIKK1ByaW9yaXR5OiBvcHRpb25hbAorRGVwZW5kczogJHtzaGxpYnM6RGVwZW5kc30sICR7bWlzYzpEZXBlbmRzfQorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBzdHJpcHBlZCBkb3duIGJsb2NrIGRldmljZSBpZCBsaWJyYXJ5LCBmb3IgZGViaWFuLWluc3RhbGxlcgorIFRoZSBibGtpZCBsaWJyYXJ5IHdoaWNoIGFsbG93cyBzeXN0ZW0gcHJvZ3JhbXMgbGlrZSBmc2NrIGFuZCAKKyBtb3VudCB0byBxdWlja2x5IGFuZCBlYXNpbHkgZmluZCBibG9jayBkZXZpY2VzIGJ5IGZpbGVzeXN0ZW0gVVVJRCBhbmQgCisgTEFCRUwuICBUaGlzIGFsbG93cyBzeXN0ZW0gYWRtaW5pc3RyYXRvcnMgdG8gYXZvaWQgc3BlY2lmaXlpbmcgCisgZmlsZXN5c3RlbXMgYnkgaGFyZC1jb2RlZCBkZXZpY2UgbmFtZXMsIGJ1dCB2aWEgYSBsb2dpY2FsIG5hbWluZyAKKyBzeXN0ZW0gaW5zdGVhZC4KKyAuCisgVGhpcyBpcyBhIG1pbmltYWwgcGFja2FnZSBmb3IgZGViaWFuLWluc3RhbGxlci4KKycnKWRubAorCitQYWNrYWdlOiBsaWJibGtpZC1kZXYKK1NlY3Rpb246IGxpYmRldmVsCitQcmlvcml0eTogZXh0cmEKK0RlcGVuZHM6IGxpYmM2LWRldiB8IGxpYmMtZGV2LCBsaWJibGtpZDEgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogYmxvY2sgZGV2aWNlIGlkIGxpYnJhcnkgLSBoZWFkZXJzIGFuZCBzdGF0aWMgbGlicmFyaWVzCisgVGhlIGJsa2lkIGxpYnJhcnkgd2hpY2ggYWxsb3dzIHN5c3RlbSBwcm9ncmFtcyBsaWtlIGZzY2sgYW5kIAorIG1vdW50IHRvIHF1aWNrbHkgYW5kIGVhc2lseSBmaW5kIGJsb2NrIGRldmljZXMgYnkgZmlsZXN5c3RlbSBVVUlEIGFuZCAKKyBMQUJFTC4gIFRoaXMgYWxsb3dzIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyB0byBhdm9pZCBzcGVjaWZpeWluZyAKKyBmaWxlc3lzdGVtcyBieSBoYXJkLWNvZGVkIGRldmljZSBuYW1lcywgYnV0IHZpYSBhIGxvZ2ljYWwgbmFtaW5nIAorIHN5c3RlbSBpbnN0ZWFkLgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciB0aGUgYmxraWQgbGlicmFyeS4KKycnKWRubAorCitpZmRlZihgVURFQl9QS0dTJyxgYAorUGFja2FnZTogZTJmc3Byb2dzLXVkZWIKK1BhY2thZ2UtVHlwZTogdWRlYgorU2VjdGlvbjogZGViaWFuLWluc3RhbGxlcgorUHJpb3JpdHk6IG9wdGlvbmFsCitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IHN0cmlwcGVkLWRvd24gdmVyc2lvbnMgb2YgZTJmc3Byb2dzLCBmb3IgZGViaWFuLWluc3RhbGxlcgorIFRoaXMgcGFja2FnZSBpcyBhbiBlMmZzcHJvZ3MgcGFja2FnZSBidWlsdCBmb3IgYSByZWR1Y2VkIHNpemUsIHNvIHRoYXQKKyBpdCBjYW4gaGVscCB0byBzYXZlIHNwYWNlIGluIGRlYmlhbi1pbnN0YWxsZXIuCisgLgorIERvbicnJ2BgdCBhdHRlbXB0IHRvIGluc3RhbGwgdGhpcyBwYWNrYWdlLCBpdCBoYXMgbm8gc3VwcG9ydCBmb3IgYSBjb3VwbGUgb2YKKyBmZWF0dXJlcyB5b3Ugc3VyZWx5IHdhbnQuICBBbnl3YXkgaXQgc2hvdWxkIHJlZnVzZSB0byBpbnN0YWxsLgorJycpZG5sCisKK1BhY2thZ2U6IGUyZnNsaWJzCitTZWN0aW9uOiBsaWJzCitEZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CitSZXBsYWNlczogZTJmc3Byb2dzICg8PCAxLjM0LTEpCitQcm92aWRlczogbGliZXh0MmZzMiwgbGliZTJwMgorQXJjaGl0ZWN0dXJlOiBhbnkKK01VTFRJQVJDSF9IRUFERVJTCitEZXNjcmlwdGlvbjogZXh0Mi9leHQzL2V4dDQgZmlsZSBzeXN0ZW0gbGlicmFyaWVzCisgVGhlIGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZSBzeXN0ZW1zIGFyZSBzdWNjZXNzb3JzIG9mIHRoZSBvcmlnaW5hbCBleHQKKyAoImV4dGVuZGVkIikgZmlsZSBzeXN0ZW0uIFRoZXkgYXJlIHRoZSBtYWluIGZpbGUgc3lzdGVtIHR5cGVzIHVzZWQgZm9yCisgaGFyZCBkaXNrcyBvbiBEZWJpYW4gYW5kIG90aGVyIExpbnV4IHN5c3RlbXMuCisgLgorIFRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgZXh0MmZzIGFuZCBlMnAgbGlicmFyaWVzLCBmb3IgdXNlcnNwYWNlIHNvZnR3YXJlCisgdGhhdCBkaXJlY3RseSBhY2Nlc3NlcyBleHRlbmRlZCBmaWxlIHN5c3RlbXMuIFByb2dyYW1zIHRoYXQgdXNlIGxpYmV4dDJmcworIGluY2x1ZGUgZTJmc2NrLCBta2UyZnMsIGFuZCB0dW5lMmZzLiBQcm9ncmFtcyB0aGF0IHVzZSBsaWJlMnAgaW5jbHVkZQorIGR1bXBlMmZzLCBjaGF0dHIsIGFuZCBsc2F0dHIuCisKK1BhY2thZ2U6IGUyZnNsaWJzLWRldgorU2VjdGlvbjogbGliZGV2ZWwKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogbGliYzYtZGV2IHwgbGliYy1kZXYsIGNvbWVyci1kZXYsIGUyZnNsaWJzICg9ICR7YmluYXJ5OlZlcnNpb259KSwgJHttaXNjOkRlcGVuZHN9CitTdWdnZXN0czogZG9jLWJhc2UKK1Byb3ZpZGVzOiBleHQyZnMtZGV2LCBlMnAtZGV2CitSZXBsYWNlczogbGlia3JiNS1kZXYgKDw8IDEuMykKK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogZXh0Mi9leHQzL2V4dDQgZmlsZSBzeXN0ZW0gbGlicmFyaWVzIC0gaGVhZGVycyBhbmQgc3RhdGljIGxpYnJhcmllcworIFRoZSBleHQyLCBleHQzIGFuZCBleHQ0IGZpbGUgc3lzdGVtcyBhcmUgc3VjY2Vzc29ycyBvZiB0aGUgb3JpZ2luYWwgZXh0CisgKCJleHRlbmRlZCIpIGZpbGUgc3lzdGVtLiBUaGV5IGFyZSB0aGUgbWFpbiBmaWxlIHN5c3RlbSB0eXBlcyB1c2VkIGZvcgorIGhhcmQgZGlza3Mgb24gRGViaWFuIGFuZCBvdGhlciBMaW51eCBzeXN0ZW1zLgorIC4KKyBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciB0aGUgZXh0MmZzIGFuZCBlMnAgCisgbGlicmFyaWVzLgorCitQYWNrYWdlOiBlMmZzcHJvZ3MKK0Vzc2VudGlhbDogeWVzCitpZmRlZihgVVRJTF9MSU5VWF9ORycsCitgYFByZS1EZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9LCB1dGlsLWxpbnV4ICg+PSAyLjE1fnJjMS0xKQorJycsCitgYFByZS1EZXBlbmRzOiAke3NobGliczpEZXBlbmRzfSwgJHttaXNjOkRlcGVuZHN9CisnJylkbmwKK011bHRpLUFyY2g6IGZvcmVpZ24KK1N1Z2dlc3RzOiBncGFydCwgcGFydGVkLCBmdXNlMmZzLCBlMmZzY2stc3RhdGljCitDb25mbGljdHM6IGR1bXAgKDw8IDAuNGI0LTQpLCBxdW90YSAoPDwgMS41NS04LjEpLCBpbml0c2NyaXB0cyAoPDwgMi44NS00KSwgc3lzdmluaXQgKDw8IDIuODUtNCkKK1JlcGxhY2VzOiBodXJkICg8PSAyMDA0MDMwMS0xKSwgbGliYmxraWQxICg8PCAxLjM4KzEuMzktV0lQLTIwMDUuMTIuMTAtMiksIGxpYnV1aWQxICg8PCAxLjM4KzEuMzktV0lQLTIwMDUuMTIuMTAtMikKK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogZXh0Mi9leHQzL2V4dDQgZmlsZSBzeXN0ZW0gdXRpbGl0aWVzCisgVGhlIGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZSBzeXN0ZW1zIGFyZSBzdWNjZXNzb3JzIG9mIHRoZSBvcmlnaW5hbCBleHQKKyAoImV4dGVuZGVkIikgZmlsZSBzeXN0ZW0uIFRoZXkgYXJlIHRoZSBtYWluIGZpbGUgc3lzdGVtIHR5cGVzIHVzZWQgZm9yCisgaGFyZCBkaXNrcyBvbiBEZWJpYW4gYW5kIG90aGVyIExpbnV4IHN5c3RlbXMuCisgLgorIFRoaXMgcGFja2FnZSBjb250YWlucyBwcm9ncmFtcyBmb3IgY3JlYXRpbmcsIGNoZWNraW5nLCBhbmQgbWFpbnRhaW5pbmcKKyBleHQyLzMvNC1iYXNlZCBmaWxlIHN5c3RlbXMuICBJdCBhbHNvIGluY2x1ZGVzIHRoZSAiYmFkYmxvY2tzIiBwcm9ncmFtLAorIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHNjYW4gZm9yIGJhZCBibG9ja3Mgb24gYSBkaXNrIG9yIG90aGVyIHN0b3JhZ2UgZGV2aWNlLgoraWZkZWYoYFVTRV9EQkdTWU0nLCxgYAorUGFja2FnZTogZTJmc3Byb2dzLWRiZworU2VjdGlvbjogZGVidWcKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogZTJmc3Byb2dzICg9ICR7YmluYXJ5OlZlcnNpb259KSwgJHttaXNjOkRlcGVuZHN9CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmb3IgZTJmc3Byb2dzCisgVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiB1c2VmdWwgZm9yIGRlYnVnZ2luZyBlMmZzcHJvZ3MKKyBhbmQgaXRzIGxpYnJhcmllcywgY29udGFpbmVkIGluIHRoZSBlMmZzcHJvZ3MgYW5kIGUyZnNjay1zdGF0aWMgcGFja2FnZXMuCisgVGhlIGRlYnVnIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiB0cmFjaW5nIGFuZCBjb3JlCisgZHVtcCBhbmFseXNpcy4KKycnKQoraWZkZWYoYFVTRV9EQkdTWU0nLCxpZmRlZihgVVRJTF9MSU5VWF9ORycsLGBgCitQYWNrYWdlOiB1dWlkLXJ1bnRpbWUtZGJnCitTZWN0aW9uOiBkZWJ1ZworUHJpb3JpdHk6IGV4dHJhCitEZXBlbmRzOiB1dWlkLXJ1bnRpbWUgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciB1dWlkLXJ1bnRpbWUKKyBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZQorIHV1aWQgcnVudGltZSBwcm9ncmFtcywgY29udGFpbmVkIGluIHRoZSB1dWlkLXJ1bnRpbWUgcGFja2FnZS4KKyBUaGUgZGVidWdnaW5nIGluZm9ybWF0aW9uIGlzIHVzZWQgZm9yIGV4ZWN1dGlvbiB0cmFjaW5nIGFuZCBjb3JlCisgZHVtcCBhbmFseXNpcy4KKycnKSlkbmwKK2lmZGVmKGBVU0VfREJHU1lNJywsYGAKK1BhY2thZ2U6IGUyZnNsaWJzLWRiZworU2VjdGlvbjogZGVidWcKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogZTJmc2xpYnMgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciBlMmZzbGlicworIFRoaXMgcGFja2FnZSBpbmNsdWRlcyB0aGUgZGVidWcgaW5mb3JtYXRpb24gdXNlZnVsIGZvciBkZWJ1Z2dpbmcgdGhlCisgZXh0MmZzIGFuZCBlMnAgbGlicmFyaWVzLCBjb250YWluZWQgaW4gdGhlIGUyZnNsaWJzIHBhY2thZ2UuICBUaGUgZGVidWcKKyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBleGVjdXRpb24gdHJhY2luZyBhbmQgY29yZSBkdW1wIGFuYWx5c2lzLgorCitQYWNrYWdlOiBsaWJjb21lcnIyLWRiZworU2VjdGlvbjogZGVidWcKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogbGliY29tZXJyMiAoPSAke2JpbmFyeTpWZXJzaW9ufSksICR7bWlzYzpEZXBlbmRzfQorQXJjaGl0ZWN0dXJlOiBhbnkKK0Rlc2NyaXB0aW9uOiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZm9yIGxpYmNvbWVycjIKKyBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZQorIGNvbV9lcnIgbGlicmFyeSwgY29udGFpbmVkIGluIHRoZSBsaWJjb21lcnIyIHBhY2thZ2UuICBUaGUgZGVidWdnaW5nCisgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3IgZXhlY3V0aW9uIHRyYWNpbmcgYW5kIGNvcmUgZHVtcCBhbmFseXNpcy4KKworUGFja2FnZTogbGlic3MyLWRiZworU2VjdGlvbjogZGVidWcKK1ByaW9yaXR5OiBleHRyYQorRGVwZW5kczogbGlic3MyICg9ICR7YmluYXJ5OlZlcnNpb259KSwgJHttaXNjOkRlcGVuZHN9CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmb3IgbGlic3MyCisgVGhpcyBwYWNrYWdlIGluY2x1ZGVzIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiB1c2VmdWwgZm9yIGRlYnVnZ2luZyB0aGUKKyBzcyBsaWJyYXJ5LCBjb250YWluZWQgaW4gdGhlIGxpYnNzMiBwYWNrYWdlLiAgVGhlIGRlYnVnIGluZm9ybWF0aW9uCisgaXMgdXNlZCBmb3IgZXhlY3V0aW9uIHRyYWNpbmcgYW5kIGNvcmUgZHVtcCBhbmFseXNpcy4KKycnKWRubAoraWZkZWYoYFVTRV9EQkdTWU0nLCxpZmRlZihgVVRJTF9MSU5VWF9ORycsLGBgCitQYWNrYWdlOiBsaWJibGtpZDEtZGJnCitTZWN0aW9uOiBkZWJ1ZworUHJpb3JpdHk6IGV4dHJhCitEZXBlbmRzOiBsaWJibGtpZDEgKD0gJHtiaW5hcnk6VmVyc2lvbn0pLCAke21pc2M6RGVwZW5kc30KK0FyY2hpdGVjdHVyZTogYW55CitEZXNjcmlwdGlvbjogZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciBsaWJibGtpZDEKKyBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZQorIGJsa2lkIGxpYnJhcnksIGNvbnRhaW5lZCBpbiB0aGUgbGliYmxraWQxIHBhY2thZ2UuICBUaGUgZGVidWcKKyBpbmZvcm1hdGlvbiBpcyB1c2VkIGZvciBleGVjdXRpb24gdHJhY2luZyBhbmQgY29yZSBkdW1wIGFuYWx5c2lzLgorCitQYWNrYWdlOiBsaWJ1dWlkMS1kYmcKK1NlY3Rpb246IGRlYnVnCitQcmlvcml0eTogZXh0cmEKK0RlcGVuZHM6IGxpYnV1aWQxICg9ICR7YmluYXJ5OlZlcnNpb259KSwgJHttaXNjOkRlcGVuZHN9CitBcmNoaXRlY3R1cmU6IGFueQorRGVzY3JpcHRpb246IGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmb3IgbGlidXVpZDEKKyBUaGlzIHBhY2thZ2UgaW5jbHVkZXMgdGhlIGRlYnVnIGluZm9ybWF0aW9uIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHRoZQorIFVVSUQgbGlicmFyeSwgY29udGFpbmVkIGluIHRoZSBsaWJ1dWlkMSBwYWNrYWdlLiAgVGhlIGRlYnVnCisgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3IgZXhlY3V0aW9uIHRyYWNpbmcgYW5kIGNvcmUgZHVtcCBhbmFseXNpcy4KKycnKSlkbmwKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vY29weXJpZ2h0IGIvZTJmc3Byb2dzL2RlYmlhbi9jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZmNDY3NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vY29weXJpZ2h0CkBAIC0wLDAgKzEsNzMgQEAKK1RoaXMgaXMgdGhlIERlYmlhbiBHTlUvTGludXggcHJlcGFja2FnZWQgdmVyc2lvbiBvZiB0aGUgRVhUMiBmaWxlCitzeXN0ZW0gdXRpbGl0aWVzIChlMmZzY2ssIG1rZTJmcywgZXRjLikuICBUaGUgRVhUMiB1dGlsaXRpZXMgd2VyZQord3JpdHRlbiBieSBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PiBhbmQgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPi4KKworU291cmNlcyB3ZXJlIG9idGFpbmVkIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMmZzcHJvZ3MKKworUGFja2FnaW5nIGlzIENvcHlyaWdodCAoYykgMjAwMy0yMDA3IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDMgWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPgorCSAgICAgQ29weXJpZ2h0IChjKSAyMDAxIEFsY292ZSA8aHR0cDovL3d3dy5hbGNvdmUuY29tLz4KKwkgICAgIENvcHlyaWdodCAoYykgMTk5NyBLbGVlIERpZW5lcworCSAgICAgQ29weXJpZ2h0IChjKSAxOTk1LTE5OTYgTWljaGFlbCBOb253ZWlsZXIgPG1ybjIwQGNhbS5hYy51az4KKworVXBzdHJlYW0gQXV0aG9yOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitDb3B5cmlnaHQgbm90aWNlOgorCitUaGlzIHBhY2thZ2UsIHRoZSBFWFQyIGZpbGVzeXN0ZW0gdXRpbGl0aWVzLCBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIKK3RoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUKK2xpYi9leHQyZnMgYW5kIGxpYi9lMnAgbGlicmFyaWVzLCB3aGljaCBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlCitHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMiwgdGhlIGxpYi91dWlkIGxpYnJhcnkKK3doaWNoIGlzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UgYW5kIHRoZSBsaWIvZXQgYW5kCitsaWIvc3MgbGlicmFyaWVzIHdoaWNoIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBhbiBNSVQtc3R5bGUgbGljZW5zZS4KKworCUNvcHlyaWdodCAoYykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgCisJMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBieSBUaGVvZG9yZSBUcydvCisKK09uIERlYmlhbiBHTlUgc3lzdGVtcywgdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworTGljZW5zZSBjYW4gYmUgZm91bmQgaW4gYC91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzL0dQTC0yJy4gIFRoZQorY29tcGxldGUgdGV4dCBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBjYW4gYmUgZm91bmQKK2luICcvdXNyL3NoYXJlL2NvbW1vbi1saWNlbnNlcy9MR1BMLTInLgorCisKK1RoZSBsaWNlbnNlIHVzZWQgZm9yIGxpYi9ldCBhbmQgbGliL3NzIGxpYnJhcmllcyBpczoKKworICAgQ29weXJpZ2h0IDE5ODcgYnkgdGhlIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZAorICAgb2YgdGhlIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKworICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAgIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICAgdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICAgYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICAgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAgIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAgIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgICBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisKK1RoZSBsaWNlbnNlIHVzZWQgZm9yIGxpYi91dWlkIGlzOgorCisgICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICAgYXJlIG1ldDoKKyAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAgICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAgICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAgICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAgIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgICBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAgIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAgIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgICBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAgIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAgIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICAgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAgIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgICBEQU1BR0UuCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2UyZnNjay1zdGF0aWMuY29weXJpZ2h0IGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzY2stc3RhdGljLmNvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmJkYzY3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzY2stc3RhdGljLmNvcHlyaWdodApAQCAtMCwwICsxLDI2IEBACitUaGlzIGlzIHRoZSBEZWJpYW4gR05VL0xpbnV4IHByZXBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHN0YXRpYyBFWFQyCitmaWxlIHN5c3RlbSBjb25zaXN0ZW5jeSBjaGVja2VyIChlMmZzY2suc3RhdGljKS4gIFRoZSBFWFQyIHV0aWxpdGllcword2VyZSB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+IGFuZCBSZW15IENhcmQKKzxjYXJkQG1hc2kuaWJwLmZyPi4KKworU291cmNlcyB3ZXJlIG9idGFpbmVkIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMmZzcHJvZ3MKKworUGFja2FnaW5nIGlzIENvcHlyaWdodCAoYykgMjAwMy0yMDA2IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDMgWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPgorCSAgICAgQ29weXJpZ2h0IChjKSAyMDAxIEFsY292ZSA8aHR0cDovL3d3dy5hbGNvdmUuY29tLz4KKwkgICAgIENvcHlyaWdodCAoYykgMTk5NyBLbGVlIERpZW5lcworCSAgICAgQ29weXJpZ2h0IChjKSAxOTk1LTE5OTYgTWljaGFlbCBOb253ZWlsZXIgPG1ybjIwQGNhbS5hYy51az4KKworVXBzdHJlYW0gQXV0aG9yOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitDb3B5cmlnaHQgbm90aWNlOgorCitUaGlzIHBhY2thZ2UsIHRoZSBFWFQyIGZpbGVzeXN0ZW0gdXRpbGl0aWVzLCBpcyBwcm90ZWN0ZWQgYnkgdGhlIEdOVQorUHVibGljIExpY2Vuc2UuCisKKwlDb3B5cmlnaHQgKGMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisJMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBieSBUaGVvZG9yZSBUcydvCisKK09uIERlYmlhbiBHTlUgc3lzdGVtcywgdGhlIGNvbXBsZXRlIHRleHQgb2YgdGhlIEdOVSBHZW5lcmFsCitQdWJsaWMgTGljZW5zZSBjYW4gYmUgZm91bmQgaW4gYC91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzL0dQTC0yJy4KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzY2stc3RhdGljLmZpbGVzIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzY2stc3RhdGljLmZpbGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YTc3MTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2UyZnNjay1zdGF0aWMuZmlsZXMKQEAgLTAsMCArMSwyIEBACisvc2Jpbi9lMmZzY2suc3RhdGljCisvdXNyL3NoYXJlL21hbi9tYW44L2UyZnNjay5zdGF0aWMqCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2UyZnNjay1zdGF0aWMucHJlaW5zdCBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc2NrLXN0YXRpYy5wcmVpbnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NTZhZGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2UyZnNjay1zdGF0aWMucHJlaW5zdApAQCAtMCwwICsxLDE5IEBACisjIS9iaW4vc2gKKworIyBBYm9ydCBvbiBlcnJvci4KK3NldCAtZQorCitQS0c9ZTJmc2NrLXN0YXRpYworRE9DTE5LPS91c3Ivc2hhcmUvZG9jLyRQS0cKK2lmIHRlc3QgIiQxIiA9IHVwZ3JhZGUgXAorICAgIC1hIC1MICRET0NMTksKK3RoZW4KKyAgICBybSAkRE9DTE5LCitmaQorCisjIGRoX2luc3RhbGxkZWIgd2lsbCByZXBsYWNlIHRoaXMgd2l0aCBzaGVsbCBjb2RlIGF1dG9tYXRpY2FsbHkKKyMgZ2VuZXJhdGVkIGJ5IG90aGVyIGRlYmhlbHBlciBzY3JpcHRzLgorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vZTJmc2xpYnMtZGV2LmRvYy1iYXNlIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy1kZXYuZG9jLWJhc2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkMDRmNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc2xpYnMtZGV2LmRvYy1iYXNlCkBAIC0wLDAgKzEsMTAgQEAKK0RvY3VtZW50OiBsaWJleHQyZnMKK1RpdGxlOiBUaGUgRVhUMkZTIGxpYnJhcnkKK0F1dGhvcjogVGhlb2RvcmUgVHMnbworQWJzdHJhY3Q6IFRoZSBFWFQyRlMgbGlicmFyeSBpcyBkZXNpZ25lZCB0byBhbGxvdworIHVzZXItbGV2ZWwgcHJvZ3JhbXMgdG8gbWFuaXB1bGF0ZSBhbiBleHQyIGZpbGVzeXN0ZW0uCitTZWN0aW9uOiBQcm9ncmFtbWluZworCitGb3JtYXQ6IEhUTUwKK0luZGV4OiAvdXNyL3NoYXJlL2RvYy9lMmZzbGlicy9odG1sLWluZm8vbGliZXh0MmZzLmh0bWwKK0ZpbGVzOiAvdXNyL3NoYXJlL2RvYy9lMmZzbGlicy9odG1sLWluZm8vKi5odG1sIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy1kZXYuZmlsZXMuaW4gYi9lMmZzcHJvZ3MvZGViaWFuL2UyZnNsaWJzLWRldi5maWxlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmNkNmM5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy1kZXYuZmlsZXMuaW4KQEAgLTAsMCArMSw5IEBACit1c3IvbGliLyovbGliZXh0MmZzKi5zbwordXNyL2xpYi8qL2xpYmV4dDJmcyouYQordXNyL2xpYi8qL2xpYmUycCouc28KK3Vzci9saWIvKi9saWJlMnAqLmEKK3Vzci9pbmNsdWRlL2V4dDJmcwordXNyL2luY2x1ZGUvZTJwCit1c3Ivc2hhcmUvaW5mby9saWJleHQyZnMuaW5mbyoKK3Vzci9saWIvKi9wa2djb25maWcvZTJwLnBjCit1c3IvbGliLyovcGtnY29uZmlnL2V4dDJmcy5wYwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy5maWxlcy5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc2xpYnMuZmlsZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExOThmNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc2xpYnMuZmlsZXMuaW4KQEAgLTAsMCArMSwyIEBACitsaWIvKi9saWJleHQyZnMqLnNvLioKK2xpYi8qL2xpYmUycCouc28uKgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy5zeW1ib2xzIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzbGlicy5zeW1ib2xzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwZGE0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2UyZnNsaWJzLnN5bWJvbHMKQEAgLTAsMCArMSw2NDAgQEAKK2xpYmUycC5zby4yIGUyZnNsaWJzICNNSU5WRVIjCisgZTJwX2VkaXRfZmVhdHVyZTJAQmFzZSAxLjQwLjcKKyBlMnBfZWRpdF9mZWF0dXJlQEJhc2UgMS4zNworIGUycF9lZGl0X21udG9wdHNAQmFzZSAxLjM3CisgZTJwX2VuY21vZGUyc3RyaW5nQEJhc2UgMS40MworIGUycF9mZWF0dXJlMnN0cmluZ0BCYXNlIDEuMzcKKyBlMnBfaGFzaDJzdHJpbmdAQmFzZSAxLjM3CisgZTJwX2lzX251bGxfdXVpZEBCYXNlIDEuMzcKKyBlMnBfanJubF9mZWF0dXJlMnN0cmluZ0BCYXNlIDEuNDEuMQorIGUycF9qcm5sX3N0cmluZzJmZWF0dXJlQEJhc2UgMS40MS4xCisgZTJwX21udG9wdDJzdHJpbmdAQmFzZSAxLjM3CisgZTJwX29zMnN0cmluZ0BCYXNlIDEuMzcKKyBlMnBfcGVyY2VudEBCYXNlIDEuNDAKKyBlMnBfc3RyaW5nMmVuY21vZGVAQmFzZSAxLjQzCisgZTJwX3N0cmluZzJmZWF0dXJlQEJhc2UgMS4zNworIGUycF9zdHJpbmcyaGFzaEBCYXNlIDEuMzcKKyBlMnBfc3RyaW5nMm1udG9wdEBCYXNlIDEuMzcKKyBlMnBfc3RyaW5nMm9zQEJhc2UgMS4zNworIGUycF91dWlkMnN0ckBCYXNlIDEuMzcKKyBlMnBfdXVpZF90b19zdHJAQmFzZSAxLjM3CisgZmdldGZsYWdzQEJhc2UgMS4zNworIGZnZXRwcm9qZWN0QEJhc2UgMS40MworIGZnZXR2ZXJzaW9uQEJhc2UgMS4zNworIGZzZXRmbGFnc0BCYXNlIDEuMzcKKyBmc2V0cHJvamVjdEBCYXNlIDEuNDMKKyBmc2V0dmVyc2lvbkBCYXNlIDEuMzcKKyBnZXRmbGFnc0BCYXNlIDEuMzcKKyBnZXR2ZXJzaW9uQEJhc2UgMS4zNworIGl0ZXJhdGVfb25fZGlyQEJhc2UgMS4zNworIGxpc3Rfc3VwZXIyQEJhc2UgMS4zNworIGxpc3Rfc3VwZXJAQmFzZSAxLjM3CisgcGFyc2VfbnVtX2Jsb2NrczJAQmFzZSAxLjQyCisgcGFyc2VfbnVtX2Jsb2Nrc0BCYXNlIDEuMzcKKyBwcmludF9mbGFnc0BCYXNlIDEuMzcKKyBwcmludF9mc19lcnJvcnNAQmFzZSAxLjM3CisgcHJpbnRfZnNfc3RhdGVAQmFzZSAxLjM3Cisgc2V0ZmxhZ3NAQmFzZSAxLjM3Cisgc2V0dmVyc2lvbkBCYXNlIDEuMzcKK2xpYmV4dDJmcy5zby4yIGUyZnNsaWJzICNNSU5WRVIjCisgYmFkYmxvY2tzX2xpc3RfYWRkQEJhc2UgMS4zNworIGJhZGJsb2Nrc19saXN0X2NyZWF0ZUBCYXNlIDEuMzcKKyBiYWRibG9ja3NfbGlzdF9mcmVlQEJhc2UgMS4zNworIGJhZGJsb2Nrc19saXN0X2l0ZXJhdGVAQmFzZSAxLjM3CisgYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbkBCYXNlIDEuMzcKKyBiYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZEBCYXNlIDEuMzcKKyBiYWRibG9ja3NfbGlzdF90ZXN0QEJhc2UgMS4zNworIGV0X2V4dDJfZXJyb3JfdGFibGVAQmFzZSAxLjM3CisgZXh0MmZzX2FkZF9kaXJfYmxvY2syQEJhc2UgMS40MgorIGV4dDJmc19hZGRfZGlyX2Jsb2NrQEJhc2UgMS4zNworIGV4dDJmc19hZGRfZXhpdF9mbkBCYXNlIDEuNDMKKyBleHQyZnNfYWRkX2pvdXJuYWxfZGV2aWNlQEJhc2UgMS4zNworIGV4dDJmc19hZGRfam91cm5hbF9pbm9kZTJAQmFzZSAxLjQyLjktM34KKyBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGVAQmFzZSAxLjM3CisgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDJAQmFzZSAxLjQyCisgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDNAQmFzZSAxLjQzCisgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudEBCYXNlIDEuMzcKKyBleHQyZnNfYWxsb2NfYmxvY2syQEJhc2UgMS40MgorIGV4dDJmc19hbGxvY19ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfYWxsb2NfZ2VuZXJpY19ibWFwQEJhc2UgMS40MgorIGV4dDJmc19hbGxvY19yYW5nZUBCYXNlIDEuNDMKKyBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19hbGxvY2F0ZV9nZW5lcmljX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGVAQmFzZSAxLjM3CisgZXh0MmZzX2FsbG9jYXRlX2lub2RlX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfYWxsb2NhdGVfc3ViY2x1c3Rlcl9iaXRtYXBAQmFzZSAxLjQyCisgZXh0MmZzX2FsbG9jYXRlX3RhYmxlc0BCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2NvcHlAQmFzZSAxLjM3CisgZXh0MmZzX2JhZGJsb2Nrc19lcXVhbEBCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2xpc3RfYWRkQEJhc2UgMS4zNworIGV4dDJmc19iYWRibG9ja3NfbGlzdF9jcmVhdGVAQmFzZSAxLjM3CisgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2RlbEBCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZUBCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZUBCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbkBCYXNlIDEuMzcKKyBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9lbmRAQmFzZSAxLjM3CisgZXh0MmZzX2JhZGJsb2Nrc19saXN0X3Rlc3RAQmFzZSAxLjM3CisgZXh0MmZzX2JnX2NoZWNrc3VtQEJhc2UgMS40MgorIGV4dDJmc19iZ19jaGVja3N1bV9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2JnX2ZsYWdzQEJhc2UgMS40MgorIGV4dDJmc19iZ19mbGFnc19jbGVhckBCYXNlIDEuNDIKKyBleHQyZnNfYmdfZmxhZ3Nfc2V0QEJhc2UgMS40MgorIGV4dDJmc19iZ19mbGFnc190ZXN0QEJhc2UgMS40MgorIGV4dDJmc19iZ19mbGFnc196YXBAQmFzZSAxLjQyCisgZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50QEJhc2UgMS40MgorIGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2JnX2ZyZWVfaW5vZGVzX2NvdW50QEJhc2UgMS40MgorIGV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2JnX2hhc19zdXBlckBCYXNlIDEuMzcKKyBleHQyZnNfYmdfaXRhYmxlX3VudXNlZEBCYXNlIDEuNDIKKyBleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudEBCYXNlIDEuNDIKKyBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50X3NldEBCYXNlIDEuNDIKKyBleHQyZnNfYml0Y291bnRAQmFzZSAxLjQyLjcKKyBleHQyZnNfYmxrbWFwNjRfYml0YXJyYXlAQmFzZSAxLjQyCisgZXh0MmZzX2Jsa21hcDY0X3JidHJlZUBCYXNlIDEuNDIuMQorIGV4dDJmc19ibG9ja19hbGxvY19zdGF0czJAQmFzZSAxLjQyCisgZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzQEJhc2UgMS4zNworIGV4dDJmc19ibG9ja19hbGxvY19zdGF0c19yYW5nZUBCYXNlIDEuNDIuOS0zfgorIGV4dDJmc19ibG9ja19iaXRtYXBfY2hlY2tzdW1AQmFzZSAxLjQzCisgZXh0MmZzX2Jsb2NrX2JpdG1hcF9jc3VtX3NldEBCYXNlIDEuNDMKKyBleHQyZnNfYmxvY2tfYml0bWFwX2NzdW1fdmVyaWZ5QEJhc2UgMS40MworIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jQEJhc2UgMS40MgorIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldEBCYXNlIDEuNDIKKyBleHQyZnNfYmxvY2tfaXRlcmF0ZTJAQmFzZSAxLjM3CisgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzQEJhc2UgMS40MgorIGV4dDJmc19ibG9ja19pdGVyYXRlQEJhc2UgMS4zNworIGV4dDJmc19ibG9ja3NfY291bnRAQmFzZSAxLjQyCisgZXh0MmZzX2Jsb2Nrc19jb3VudF9hZGRAQmFzZSAxLjQyCisgZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2JtYXAyQEJhc2UgMS40MS4wCisgZXh0MmZzX2JtYXBAQmFzZSAxLjM3CisgZXh0MmZzX2NoZWNrX2Rlc2NAQmFzZSAxLjM3CisgZXh0MmZzX2NoZWNrX2RpcmVjdG9yeUBCYXNlIDEuMzcKKyBleHQyZnNfY2hlY2tfaWZfbW91bnRlZEBCYXNlIDEuMzcKKyBleHQyZnNfY2hlY2tfbW91bnRfcG9pbnRAQmFzZSAxLjM3CisgZXh0MmZzX2NsZWFyX2JpdDY0QEJhc2UgMS40MgorIGV4dDJmc19jbGVhcl9iaXRAQmFzZSAxLjM3CisgZXh0MmZzX2NsZWFyX2Jsb2NrX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfY2xlYXJfYmxvY2tfdW5pbml0QEJhc2UgMS40MworIGV4dDJmc19jbGVhcl9nZW5lcmljX2JpdG1hcEBCYXNlIDEuNDEuMAorIGV4dDJmc19jbGVhcl9nZW5lcmljX2JtYXBAQmFzZSAxLjQyCisgZXh0MmZzX2NsZWFyX2lub2RlX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfY2xvc2UyQEJhc2UgMS40MgorIGV4dDJmc19jbG9zZUBCYXNlIDEuMzcKKyBleHQyZnNfY2xvc2VfZnJlZUBCYXNlIDEuNDIuMTEKKyBleHQyZnNfY2xvc2VfaW5vZGVfc2NhbkBCYXNlIDEuMzcKKyBleHQyZnNfY29tcGFyZV9ibG9ja19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX2NvbXBhcmVfZ2VuZXJpY19iaXRtYXBAQmFzZSAxLjQxLjAKKyBleHQyZnNfY29tcGFyZV9nZW5lcmljX2JtYXBAQmFzZSAxLjQyCisgZXh0MmZzX2NvbXBhcmVfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19jb25zdF9pbm9kZUBCYXNlIDEuNDMKKyBleHQyZnNfY29udmVydF9zdWJjbHVzdGVyX2JpdG1hcEBCYXNlIDEuNDIKKyBleHQyZnNfY29weV9iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX2NvcHlfZGJsaXN0QEJhc2UgMS4zNworIGV4dDJmc19jb3B5X2dlbmVyaWNfYml0bWFwQEJhc2UgMS40MS4wCisgZXh0MmZzX2NvcHlfZ2VuZXJpY19ibWFwQEJhc2UgMS40MgorIGV4dDJmc19jcmMxNkBCYXNlIDEuNDEuMQorIGV4dDJmc19jcmMzMl9iZUBCYXNlIDEuNDMKKyBleHQyZnNfY3JjMzJjX2xlQEJhc2UgMS40MgorIGV4dDJmc19jcmVhdGVfaWNvdW50MkBCYXNlIDEuMzcKKyBleHQyZnNfY3JlYXRlX2ljb3VudEBCYXNlIDEuMzcKKyBleHQyZnNfY3JlYXRlX2ljb3VudF90ZGJAQmFzZSAxLjQwCisgZXh0MmZzX2NyZWF0ZV9pbm9kZV9jYWNoZUBCYXNlIDEuNDMKKyBleHQyZnNfY3JlYXRlX2pvdXJuYWxfc3VwZXJibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfY3JlYXRlX3Jlc2l6ZV9pbm9kZUBCYXNlIDEuMzcKKyBleHQyZnNfZGJsaXN0X2NvdW50MkBCYXNlIDEuNDIKKyBleHQyZnNfZGJsaXN0X2NvdW50QEJhc2UgMS4zNworIGV4dDJmc19kYmxpc3RfZGlyX2l0ZXJhdGVAQmFzZSAxLjM3CisgZXh0MmZzX2RibGlzdF9kcm9wX2xhc3RAQmFzZSAxLjQwLjgKKyBleHQyZnNfZGJsaXN0X2dldF9sYXN0MkBCYXNlIDEuNDIKKyBleHQyZnNfZGJsaXN0X2dldF9sYXN0QEJhc2UgMS40MC44CisgZXh0MmZzX2RibGlzdF9pdGVyYXRlMkBCYXNlIDEuNDIKKyBleHQyZnNfZGJsaXN0X2l0ZXJhdGUzQEJhc2UgMS40MworIGV4dDJmc19kYmxpc3RfaXRlcmF0ZUBCYXNlIDEuMzcKKyBleHQyZnNfZGJsaXN0X3NvcnQyQEJhc2UgMS40MgorIGV4dDJmc19kYmxpc3Rfc29ydEBCYXNlIDEuMzcKKyBleHQyZnNfZGVmYXVsdF9qb3VybmFsX3NpemVAQmFzZSAxLjQwCisgZXh0MmZzX2Rlc2NyaXB0b3JfYmxvY2tfbG9jMkBCYXNlIDEuNDIKKyBleHQyZnNfZGVzY3JpcHRvcl9ibG9ja19sb2NAQmFzZSAxLjM3CisgZXh0MmZzX2Rpcl9ibG9ja19jc3VtX3NldEBCYXNlIDEuNDMKKyBleHQyZnNfZGlyX2Jsb2NrX2NzdW1fdmVyaWZ5QEJhc2UgMS40MworIGV4dDJmc19kaXJfaXRlcmF0ZTJAQmFzZSAxLjM3CisgZXh0MmZzX2Rpcl9pdGVyYXRlQEJhc2UgMS4zNworIGV4dDJmc19kaXJlbnRfY3N1bV92ZXJpZnlAQmFzZSAxLjQzCisgZXh0MmZzX2RpcmVudF9maWxlX3R5cGVAQmFzZSAxLjQzCisgZXh0MmZzX2RpcmVudF9oYXNfdGFpbEBCYXNlIDEuNDMKKyBleHQyZnNfZGlyZW50X25hbWVfbGVuQEJhc2UgMS40MworIGV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZUBCYXNlIDEuNDMKKyBleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbkBCYXNlIDEuNDMKKyBleHQyZnNfZGlyaGFzaEBCYXNlIDEuMzcKKyBleHQyZnNfZGl2NjRfY2VpbEBCYXNlIDEuNDIKKyBleHQyZnNfZGl2X2NlaWxAQmFzZSAxLjQwCisgZXh0MmZzX2R1cF9oYW5kbGVAQmFzZSAxLjM3CisgZXh0MmZzX2V4cGFuZF9kaXJAQmFzZSAxLjM3CisgZXh0MmZzX2V4dF9hdHRyX2Jsb2NrX2NzdW1fc2V0QEJhc2UgMS40MworIGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3ZlcmlmeUBCYXNlIDEuNDMKKyBleHQyZnNfZXh0X2F0dHJfaGFzaF9lbnRyeUBCYXNlIDEuNDEuMAorIGV4dDJmc19leHRlbnRfYmxvY2tfY3N1bV9zZXRAQmFzZSAxLjQzCisgZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtX3ZlcmlmeUBCYXNlIDEuNDMKKyBleHQyZnNfZXh0ZW50X2RlbGV0ZUBCYXNlIDEuNDEuMAorIGV4dDJmc19leHRlbnRfZml4X3BhcmVudHNAQmFzZSAxLjQyLjcKKyBleHQyZnNfZXh0ZW50X2ZyZWVAQmFzZSAxLjQxLjAKKyBleHQyZnNfZXh0ZW50X2dldEBCYXNlIDEuNDEuMAorIGV4dDJmc19leHRlbnRfZ2V0X2luZm9AQmFzZSAxLjQxLjAKKyBleHQyZnNfZXh0ZW50X2dvdG8yQEJhc2UgMS40Mi43CisgZXh0MmZzX2V4dGVudF9nb3RvQEJhc2UgMS40MS4wCisgZXh0MmZzX2V4dGVudF9oZWFkZXJfdmVyaWZ5QEJhc2UgMS40MS4wCisgZXh0MmZzX2V4dGVudF9pbnNlcnRAQmFzZSAxLjQxLjAKKyBleHQyZnNfZXh0ZW50X25vZGVfc3BsaXRAQmFzZSAxLjQyLjcKKyBleHQyZnNfZXh0ZW50X29wZW4yQEJhc2UgMS40MS42CisgZXh0MmZzX2V4dGVudF9vcGVuQEJhc2UgMS40MS4wCisgZXh0MmZzX2V4dGVudF9yZXBsYWNlQEJhc2UgMS40MS4wCisgZXh0MmZzX2V4dGVudF9zZXRfYm1hcEBCYXNlIDEuNDEuMAorIGV4dDJmc19mYWxsb2NhdGVAQmFzZSAxLjQzCisgZXh0MmZzX2Zhc3RfY2xlYXJfYml0NjRAQmFzZSAxLjQyCisgZXh0MmZzX2Zhc3RfY2xlYXJfYml0QEJhc2UgMS4zOQorIGV4dDJmc19mYXN0X21hcmtfYmxvY2tfYml0bWFwMkBCYXNlIDEuNDIKKyBleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTJAQmFzZSAxLjQyCisgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXBfcmFuZ2VAQmFzZSAxLjM3CisgZXh0MmZzX2Zhc3RfbWFya19pbm9kZV9iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc19mYXN0X21hcmtfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19mYXN0X3NldF9iaXQ2NEBCYXNlIDEuNDIKKyBleHQyZnNfZmFzdF9zZXRfYml0QEJhc2UgMS4zOQorIGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMkBCYXNlIDEuNDIKKyBleHQyZnNfZmFzdF90ZXN0X2Jsb2NrX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfZmFzdF90ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZTJAQmFzZSAxLjQyCisgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2VAQmFzZSAxLjM3CisgZXh0MmZzX2Zhc3RfdGVzdF9pbm9kZV9iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc19mYXN0X3Rlc3RfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19mYXN0X3VubWFya19ibG9ja19iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc19mYXN0X3VubWFya19ibG9ja19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTJAQmFzZSAxLjQyCisgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZUBCYXNlIDEuMzcKKyBleHQyZnNfZmFzdF91bm1hcmtfaW5vZGVfYml0bWFwMkBCYXNlIDEuNDIKKyBleHQyZnNfZmFzdF91bm1hcmtfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19maWxlX2FjbF9ibG9ja0BCYXNlIDEuNDIKKyBleHQyZnNfZmlsZV9hY2xfYmxvY2tfc2V0QEJhc2UgMS40MgorIGV4dDJmc19maWxlX2Jsb2NrX29mZnNldF90b29fYmlnQEJhc2UgMS40Mi45CisgZXh0MmZzX2ZpbGVfY2xvc2VAQmFzZSAxLjM3CisgZXh0MmZzX2ZpbGVfZmx1c2hAQmFzZSAxLjM3CisgZXh0MmZzX2ZpbGVfZ2V0X2ZzQEJhc2UgMS4zNworIGV4dDJmc19maWxlX2dldF9pbm9kZUBCYXNlIDEuNDIKKyBleHQyZnNfZmlsZV9nZXRfaW5vZGVfbnVtQEJhc2UgMS40Mi4xCisgZXh0MmZzX2ZpbGVfZ2V0X2xzaXplQEJhc2UgMS4zNworIGV4dDJmc19maWxlX2dldF9zaXplQEJhc2UgMS4zNworIGV4dDJmc19maWxlX2xsc2Vla0BCYXNlIDEuMzcKKyBleHQyZnNfZmlsZV9sc2Vla0BCYXNlIDEuMzcKKyBleHQyZnNfZmlsZV9vcGVuMkBCYXNlIDEuMzcKKyBleHQyZnNfZmlsZV9vcGVuQEJhc2UgMS4zNworIGV4dDJmc19maWxlX3JlYWRAQmFzZSAxLjM3CisgZXh0MmZzX2ZpbGVfc2V0X3NpemUyQEJhc2UgMS40MgorIGV4dDJmc19maWxlX3NldF9zaXplQEJhc2UgMS4zNworIGV4dDJmc19maWxlX3dyaXRlQEJhc2UgMS4zNworIGV4dDJmc19maW5kX2Jsb2NrX2RldmljZUBCYXNlIDEuMzcKKyBleHQyZnNfZmluZF9maXJzdF9zZXRfYmxvY2tfYml0bWFwMkBCYXNlIDEuNDIuOS0zfgorIGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JpdG1hcEBCYXNlIDEuNDIuOS0zfgorIGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JtYXBAQmFzZSAxLjQyLjktM34KKyBleHQyZnNfZmluZF9maXJzdF9zZXRfaW5vZGVfYml0bWFwMkBCYXNlIDEuNDIuOS0zfgorIGV4dDJmc19maW5kX2ZpcnN0X3plcm9fYmxvY2tfYml0bWFwMkBCYXNlIDEuNDIuMgorIGV4dDJmc19maW5kX2ZpcnN0X3plcm9fZ2VuZXJpY19iaXRtYXBAQmFzZSAxLjQyLjMKKyBleHQyZnNfZmluZF9maXJzdF96ZXJvX2dlbmVyaWNfYm1hcEBCYXNlIDEuNDIuMgorIGV4dDJmc19maW5kX2ZpcnN0X3plcm9faW5vZGVfYml0bWFwMkBCYXNlIDEuNDIuMgorIGV4dDJmc19maW5kX2lub2RlX2dvYWxAQmFzZSAxLjQzCisgZXh0MmZzX2ZsdXNoMkBCYXNlIDEuNDIKKyBleHQyZnNfZmx1c2hAQmFzZSAxLjM3CisgZXh0MmZzX2ZsdXNoX2ljYWNoZUBCYXNlIDEuMzcKKyBleHQyZnNfZm9sbG93X2xpbmtAQmFzZSAxLjM3CisgZXh0MmZzX2ZyZWVAQmFzZSAxLjM3CisgZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudEBCYXNlIDEuNDIKKyBleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfYWRkQEJhc2UgMS40MgorIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2ZyZWVfZGJsaXN0QEJhc2UgMS4zNworIGV4dDJmc19mcmVlX2V4dF9hdHRyQEJhc2UgMS40MworIGV4dDJmc19mcmVlX2dlbmVyaWNfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19mcmVlX2dlbmVyaWNfYm1hcEBCYXNlIDEuNDIKKyBleHQyZnNfZnJlZV9pY291bnRAQmFzZSAxLjM3CisgZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19mcmVlX2lub2RlX2NhY2hlQEJhc2UgMS40MworIGV4dDJmc19mcmVlX21lbUBCYXNlIDEuMzcKKyBleHQyZnNfZnN0YXRAQmFzZSAxLjQyCisgZXh0MmZzX2Z1ZGdlX2Jsb2NrX2JpdG1hcF9lbmQyQEJhc2UgMS40MgorIGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kQEJhc2UgMS4zNworIGV4dDJmc19mdWRnZV9nZW5lcmljX2JpdG1hcF9lbmRAQmFzZSAxLjQxLjAKKyBleHQyZnNfZnVkZ2VfZ2VuZXJpY19ibWFwX2VuZEBCYXNlIDEuNDIKKyBleHQyZnNfZnVkZ2VfaW5vZGVfYml0bWFwX2VuZEBCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X2FycmF5QEJhc2UgMS40MC4zCisgZXh0MmZzX2dldF9hcnJheXplcm9AQmFzZSAxLjQyCisgZXh0MmZzX2dldF9iaXRtYXBfZ3JhbnVsYXJpdHlAQmFzZSAxLjQyCisgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfZW5kMkBCYXNlIDEuNDIKKyBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9lbmRAQmFzZSAxLjM3CisgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3JhbmdlQEJhc2UgMS40MS4wCisgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfc3RhcnQyQEJhc2UgMS40MgorIGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3N0YXJ0QEJhc2UgMS4zNworIGV4dDJmc19nZXRfYmxvY2tzQEJhc2UgMS4zNworIGV4dDJmc19nZXRfZGF0YV9pb0BCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X2RldmljZV9waHlzX3NlY3RzaXplQEJhc2UgMS40MS4xMgorIGV4dDJmc19nZXRfZGV2aWNlX3NlY3RzaXplQEJhc2UgMS4zNworIGV4dDJmc19nZXRfZGV2aWNlX3NpemUyQEJhc2UgMS40MS40CisgZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZUBCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X2Rpb19hbGlnbm1lbnRAQmFzZSAxLjQyLjMKKyBleHQyZnNfZ2V0X2R4X2NvdW50bGltaXRAQmFzZSAxLjQzCisgZXh0MmZzX2dldF9mcmVlX2Jsb2NrczJAQmFzZSAxLjQyCisgZXh0MmZzX2dldF9mcmVlX2Jsb2Nrc0BCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX2VuZEBCYXNlIDEuNDEuMAorIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfcmFuZ2VAQmFzZSAxLjQxLjAKKyBleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX3N0YXJ0QEJhc2UgMS40MS4wCisgZXh0MmZzX2dldF9nZW5lcmljX2JtYXBfZW5kQEJhc2UgMS40MgorIGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3JhbmdlQEJhc2UgMS40MgorIGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3N0YXJ0QEJhc2UgMS40MgorIGV4dDJmc19nZXRfaWNvdW50X3NpemVAQmFzZSAxLjM3CisgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kMkBCYXNlIDEuNDIKKyBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9lbmRAQmFzZSAxLjM3CisgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3JhbmdlQEJhc2UgMS40MS4wCisgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfc3RhcnQyQEJhc2UgMS40MgorIGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3N0YXJ0QEJhc2UgMS4zNworIGV4dDJmc19nZXRfbGlicmFyeV92ZXJzaW9uQEJhc2UgMS4zNworIGV4dDJmc19nZXRfbWVtQEJhc2UgMS4zNworIGV4dDJmc19nZXRfbWVtYWxpZ25AQmFzZSAxLjQxLjEzCisgZXh0MmZzX2dldF9tZW16ZXJvQEJhc2UgMS40MgorIGV4dDJmc19nZXRfbmV4dF9pbm9kZUBCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbEBCYXNlIDEuMzcKKyBleHQyZnNfZ2V0X251bV9kaXJzQEJhc2UgMS4zNworIGV4dDJmc19nZXRfcGF0aG5hbWVAQmFzZSAxLjM3CisgZXh0MmZzX2dldF9yZWNfbGVuQEJhc2UgMS40MS43CisgZXh0MmZzX2dyb3VwX2Jsb2Nrc19jb3VudEBCYXNlIDEuNDIKKyBleHQyZnNfZ3JvdXBfZGVzY0BCYXNlIDEuNDIKKyBleHQyZnNfZ3JvdXBfZGVzY19jc3VtQEJhc2UgMS40Mi4yCisgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXRAQmFzZSAxLjQxLjAKKyBleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3ZlcmlmeUBCYXNlIDEuNDEuMAorIGV4dDJmc19ncm91cF9maXJzdF9ibG9jazJAQmFzZSAxLjQyCisgZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrQEJhc2UgMS40MAorIGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMkBCYXNlIDEuNDIKKyBleHQyZnNfZ3JvdXBfbGFzdF9ibG9ja0BCYXNlIDEuNDAKKyBleHQyZnNfZ3JvdXBfb2ZfYmxrMkBCYXNlIDEuNDIKKyBleHQyZnNfZ3JvdXBfb2ZfYmxrQEJhc2UgMS4zNworIGV4dDJmc19ncm91cF9vZl9pbm9AQmFzZSAxLjM3CisgZXh0MmZzX2libGtfYWRkX2Jsb2Nrc0BCYXNlIDEuNDEuMAorIGV4dDJmc19pYmxrX3NldEBCYXNlIDEuNDEuMAorIGV4dDJmc19pYmxrX3N1Yl9ibG9ja3NAQmFzZSAxLjQxLjAKKyBleHQyZnNfaWNvdW50X2RlY3JlbWVudEBCYXNlIDEuMzcKKyBleHQyZnNfaWNvdW50X2ZldGNoQEJhc2UgMS4zNworIGV4dDJmc19pY291bnRfaW5jcmVtZW50QEJhc2UgMS4zNworIGV4dDJmc19pY291bnRfc3RvcmVAQmFzZSAxLjM3CisgZXh0MmZzX2ljb3VudF92YWxpZGF0ZUBCYXNlIDEuMzcKKyBleHQyZnNfaW1hZ2VfYml0bWFwX3JlYWRAQmFzZSAxLjM3CisgZXh0MmZzX2ltYWdlX2JpdG1hcF93cml0ZUBCYXNlIDEuMzcKKyBleHQyZnNfaW1hZ2VfaW5vZGVfcmVhZEBCYXNlIDEuMzcKKyBleHQyZnNfaW1hZ2VfaW5vZGVfd3JpdGVAQmFzZSAxLjM3CisgZXh0MmZzX2ltYWdlX3N1cGVyX3JlYWRAQmFzZSAxLjM3CisgZXh0MmZzX2ltYWdlX3N1cGVyX3dyaXRlQEJhc2UgMS4zNworIGV4dDJmc19pbml0X2NzdW1fc2VlZEBCYXNlIDEuNDMKKyBleHQyZnNfaW5pdF9kYmxpc3RAQmFzZSAxLjM3CisgZXh0MmZzX2luaXRpYWxpemVAQmFzZSAxLjM3CisgZXh0MmZzX2luaXRpYWxpemVfZGlyZW50X3RhaWxAQmFzZSAxLjQzCisgZXh0MmZzX2lubGluZV9kYXRhX2Rpcl9pdGVyYXRlQEJhc2UgMS40MworIGV4dDJmc19pbmxpbmVfZGF0YV9lYV9yZW1vdmVAQmFzZSAxLjQzCisgZXh0MmZzX2lubGluZV9kYXRhX2V4cGFuZEBCYXNlIDEuNDMKKyBleHQyZnNfaW5saW5lX2RhdGFfZ2V0QEJhc2UgMS40MworIGV4dDJmc19pbmxpbmVfZGF0YV9pbml0QEJhc2UgMS40MworIGV4dDJmc19pbmxpbmVfZGF0YV9zZXRAQmFzZSAxLjQzCisgZXh0MmZzX2lubGluZV9kYXRhX3NpemVAQmFzZSAxLjQzCisgZXh0MmZzX2lub2RlQEJhc2UgMS40MworIGV4dDJmc19pbm9kZV9hbGxvY19zdGF0czJAQmFzZSAxLjM3CisgZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzQEJhc2UgMS4zNworIGV4dDJmc19pbm9kZV9iaXRtYXBfY2hlY2tzdW1AQmFzZSAxLjQzCisgZXh0MmZzX2lub2RlX2JpdG1hcF9jc3VtX3NldEBCYXNlIDEuNDMKKyBleHQyZnNfaW5vZGVfYml0bWFwX2NzdW1fdmVyaWZ5QEJhc2UgMS40MworIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jQEJhc2UgMS40MgorIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jX3NldEBCYXNlIDEuNDIKKyBleHQyZnNfaW5vZGVfY3N1bV9zZXRAQmFzZSAxLjQzCisgZXh0MmZzX2lub2RlX2NzdW1fdmVyaWZ5QEJhc2UgMS40MworIGV4dDJmc19pbm9kZV9kYXRhX2Jsb2NrczJAQmFzZSAxLjQyCisgZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzQEJhc2UgMS4zNworIGV4dDJmc19pbm9kZV9oYXNfdmFsaWRfYmxvY2tzMkBCYXNlIDEuNDIKKyBleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2Nrc0BCYXNlIDEuMzcKKyBleHQyZnNfaW5vZGVfaV9ibG9ja3NAQmFzZSAxLjQyCisgZXh0MmZzX2lub2RlX2lvX2ludGVybjJAQmFzZSAxLjM3CisgZXh0MmZzX2lub2RlX2lvX2ludGVybkBCYXNlIDEuMzcKKyBleHQyZnNfaW5vZGVfc2Nhbl9mbGFnc0BCYXNlIDEuMzcKKyBleHQyZnNfaW5vZGVfc2Nhbl9nb3RvX2Jsb2NrZ3JvdXBAQmFzZSAxLjM3CisgZXh0MmZzX2lub2RlX3NpemVfc2V0QEJhc2UgMS40Mi4xMgorIGV4dDJmc19pbm9kZV90YWJsZV9sb2NAQmFzZSAxLjQyCisgZXh0MmZzX2lub2RlX3RhYmxlX2xvY19zZXRAQmFzZSAxLjQyCisgZXh0MmZzX2pvdXJuYWxfc2Jfc3RhcnRAQmFzZSAxLjQyLjEyCisgZXh0MmZzX2xpbmtAQmFzZSAxLjM3CisgZXh0MmZzX2xsc2Vla0BCYXNlIDEuMzcKKyBleHQyZnNfbG9va3VwQEJhc2UgMS4zNworIGV4dDJmc19tYWtlX2dlbmVyaWNfYml0bWFwQEJhc2UgMS40MS4wCisgZXh0MmZzX21hcF9jbHVzdGVyX2Jsb2NrQEJhc2UgMS40Mi45CisgZXh0MmZzX21hcmtfYmJfZGlydHlAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMkBCYXNlIDEuNDIKKyBleHQyZnNfbWFya19ibG9ja19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMkBCYXNlIDEuNDIKKyBleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2VAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfY2hhbmdlZEBCYXNlIDEuMzcKKyBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfbWFya19nZW5lcmljX2JtYXBAQmFzZSAxLjQyCisgZXh0MmZzX21hcmtfaWJfZGlydHlAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMkBCYXNlIDEuNDIKKyBleHQyZnNfbWFya19pbm9kZV9iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfc3VwZXJfZGlydHlAQmFzZSAxLjM3CisgZXh0MmZzX21hcmtfdmFsaWRAQmFzZSAxLjM3CisgZXh0MmZzX21heF9leHRlbnRfZGVwdGhAQmFzZSAxLjQzCisgZXh0MmZzX21lbV9pc196ZXJvQEJhc2UgMS40MgorIGV4dDJmc19ta2RpckBCYXNlIDEuMzcKKyBleHQyZnNfbW1wX2NsZWFyQEJhc2UgMS40MgorIGV4dDJmc19tbXBfY3N1bV9zZXRAQmFzZSAxLjQzCisgZXh0MmZzX21tcF9jc3VtX3ZlcmlmeUBCYXNlIDEuNDMKKyBleHQyZnNfbW1wX2luaXRAQmFzZSAxLjQyCisgZXh0MmZzX21tcF9uZXdfc2VxQEJhc2UgMS40MgorIGV4dDJmc19tbXBfcmVhZEBCYXNlIDEuNDIKKyBleHQyZnNfbW1wX3N0YXJ0QEJhc2UgMS40MgorIGV4dDJmc19tbXBfc3RvcEBCYXNlIDEuNDIKKyBleHQyZnNfbW1wX3VwZGF0ZTJAQmFzZSAxLjQzCisgZXh0MmZzX21tcF91cGRhdGVAQmFzZSAxLjQyCisgZXh0MmZzX21tcF93cml0ZUBCYXNlIDEuNDIKKyBleHQyZnNfbmFtZWlAQmFzZSAxLjM3CisgZXh0MmZzX25hbWVpX2ZvbGxvd0BCYXNlIDEuMzcKKyBleHQyZnNfbmF0aXZlX2ZsYWdAQmFzZSAxLjM3CisgZXh0MmZzX25ld19ibG9jazJAQmFzZSAxLjQyCisgZXh0MmZzX25ld19ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfbmV3X2Rpcl9ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfbmV3X2Rpcl9pbmxpbmVfZGF0YUBCYXNlIDEuNDMKKyBleHQyZnNfbmV3X2lub2RlQEJhc2UgMS4zNworIGV4dDJmc19uZXdfcmFuZ2VAQmFzZSAxLjQzCisgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfY2xvc2VAQmFzZSAxLjQyCisgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfaW5pdEBCYXNlIDEuNDIKKyBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19vcHNAQmFzZSAxLjQzCisgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfdXBkYXRlQEJhc2UgMS40MgorIGV4dDJmc19vcGVuMkBCYXNlIDEuMzcKKyBleHQyZnNfb3BlbkBCYXNlIDEuMzcKKyBleHQyZnNfb3Blbl9maWxlQEJhc2UgMS40MgorIGV4dDJmc19vcGVuX2lub2RlX3NjYW5AQmFzZSAxLjM3CisgZXh0MmZzX3BhcnNlX3ZlcnNpb25fc3RyaW5nQEJhc2UgMS4zNworIGV4dDJmc19wcm9jZXNzX2Rpcl9ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfcHVuY2hAQmFzZSAxLjQyCisgZXh0MmZzX3JfYmxvY2tzX2NvdW50QEJhc2UgMS40MgorIGV4dDJmc19yX2Jsb2Nrc19jb3VudF9hZGRAQmFzZSAxLjQyCisgZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldEBCYXNlIDEuNDIKKyBleHQyZnNfcmJfYXVnbWVudF9lcmFzZV9iZWdpbkBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9hdWdtZW50X2VyYXNlX2VuZEBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9hdWdtZW50X2luc2VydEBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9lcmFzZUBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9maXJzdEBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9pbnNlcnRfY29sb3JAQmFzZSAxLjQyLjEKKyBleHQyZnNfcmJfbGFzdEBCYXNlIDEuNDIuMQorIGV4dDJmc19yYl9uZXh0QEJhc2UgMS40Mi4xCisgZXh0MmZzX3JiX3ByZXZAQmFzZSAxLjQyLjEKKyBleHQyZnNfcmJfcmVwbGFjZV9ub2RlQEJhc2UgMS40Mi4xCisgZXh0MmZzX3JlYWRfYmJfRklMRTJAQmFzZSAxLjM3CisgZXh0MmZzX3JlYWRfYmJfRklMRUBCYXNlIDEuMzcKKyBleHQyZnNfcmVhZF9iYl9pbm9kZUBCYXNlIDEuMzcKKyBleHQyZnNfcmVhZF9iaXRtYXBzQEJhc2UgMS4zNworIGV4dDJmc19yZWFkX2Jsb2NrX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfcmVhZF9kaXJfYmxvY2syQEJhc2UgMS4zNworIGV4dDJmc19yZWFkX2Rpcl9ibG9jazNAQmFzZSAxLjQyCisgZXh0MmZzX3JlYWRfZGlyX2Jsb2NrNEBCYXNlIDEuNDMKKyBleHQyZnNfcmVhZF9kaXJfYmxvY2tAQmFzZSAxLjM3CisgZXh0MmZzX3JlYWRfZXh0X2F0dHIyQEJhc2UgMS40MgorIGV4dDJmc19yZWFkX2V4dF9hdHRyM0BCYXNlIDEuNDMKKyBleHQyZnNfcmVhZF9leHRfYXR0ckBCYXNlIDEuMzcKKyBleHQyZnNfcmVhZF9pbmRfYmxvY2tAQmFzZSAxLjM3CisgZXh0MmZzX3JlYWRfaW5vZGVAQmFzZSAxLjM3CisgZXh0MmZzX3JlYWRfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19yZWFkX2lub2RlX2Z1bGxAQmFzZSAxLjM3CisgZXh0MmZzX3JlbW92ZV9leGl0X2ZuQEJhc2UgMS40MworIGV4dDJmc19yZXNlcnZlX3N1cGVyX2FuZF9iZ2RAQmFzZSAxLjM3CisgZXh0MmZzX3Jlc2l6ZV9ibG9ja19iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc19yZXNpemVfYmxvY2tfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19yZXNpemVfZ2VuZXJpY19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX3Jlc2l6ZV9nZW5lcmljX2JtYXBAQmFzZSAxLjQyCisgZXh0MmZzX3Jlc2l6ZV9pbm9kZV9iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc19yZXNpemVfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc19yZXNpemVfbWVtQEJhc2UgMS4zNworIGV4dDJmc19yZXdyaXRlX3RvX2lvQEJhc2UgMS4zNworIGV4dDJmc19zZXRfYWxsb2NfYmxvY2tfY2FsbGJhY2tAQmFzZSAxLjQxLjAKKyBleHQyZnNfc2V0X2JpdDY0QEJhc2UgMS40MgorIGV4dDJmc19zZXRfYml0QEJhc2UgMS4zNworIGV4dDJmc19zZXRfYml0bWFwX3BhZGRpbmdAQmFzZSAxLjM3CisgZXh0MmZzX3NldF9ibG9ja19hbGxvY19zdGF0c19jYWxsYmFja0BCYXNlIDEuNDEuMAorIGV4dDJmc19zZXRfYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2VfY2FsbGJhY2tAQmFzZSAxLjQzCisgZXh0MmZzX3NldF9ibG9ja19iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc19zZXRfYmxvY2tfYml0bWFwX3JhbmdlQEJhc2UgMS40MS4wCisgZXh0MmZzX3NldF9kYXRhX2lvQEJhc2UgMS4zNworIGV4dDJmc19zZXRfZGlyX2Jsb2NrMkBCYXNlIDEuNDIKKyBleHQyZnNfc2V0X2Rpcl9ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfc2V0X2dkdF9jc3VtQEJhc2UgMS40MS4wCisgZXh0MmZzX3NldF9nZW5lcmljX2JpdG1hcF9wYWRkaW5nQEJhc2UgMS40MS4wCisgZXh0MmZzX3NldF9nZW5lcmljX2JpdG1hcF9yYW5nZUBCYXNlIDEuNDEuMAorIGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3BhZGRpbmdAQmFzZSAxLjQyCisgZXh0MmZzX3NldF9nZW5lcmljX2JtYXBfcmFuZ2VAQmFzZSAxLjQyCisgZXh0MmZzX3NldF9pbm9kZV9iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc19zZXRfaW5vZGVfYml0bWFwX3JhbmdlQEJhc2UgMS40MS4wCisgZXh0MmZzX3NldF9pbm9kZV9jYWxsYmFja0BCYXNlIDEuMzcKKyBleHQyZnNfc2V0X25ld19yYW5nZV9jYWxsYmFja0BCYXNlIDEuNDMKKyBleHQyZnNfc2V0X3JlY19sZW5AQmFzZSAxLjQxLjcKKyBleHQyZnNfc2hhNTEyQEJhc2UgMS40MworIGV4dDJmc19zdGF0QEJhc2UgMS40MgorIGV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzJAQmFzZSAxLjQyCisgZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jQEJhc2UgMS4zNworIGV4dDJmc19zdXBlcmJsb2NrX2NzdW1fc2V0QEJhc2UgMS40MworIGV4dDJmc19zdXBlcmJsb2NrX2NzdW1fdmVyaWZ5QEJhc2UgMS40MworIGV4dDJmc19zd2FiMTZAQmFzZSAxLjM3CisgZXh0MmZzX3N3YWIzMkBCYXNlIDEuMzcKKyBleHQyZnNfc3dhYjY0QEJhc2UgMS40MAorIGV4dDJmc19zeW1saW5rQEJhc2UgMS40Mi43CisgZXh0MmZzX3N5bmNfZGV2aWNlQEJhc2UgMS4zNworIGV4dDJmc190ZGJfYXBwZW5kQEJhc2UgMS40MAorIGV4dDJmc190ZGJfY2hhaW5sb2NrQEJhc2UgMS40MAorIGV4dDJmc190ZGJfY2hhaW5sb2NrX21hcmtAQmFzZSAxLjQwLjcKKyBleHQyZnNfdGRiX2NoYWlubG9ja19ub25ibG9ja0BCYXNlIDEuNDAuNworIGV4dDJmc190ZGJfY2hhaW5sb2NrX3JlYWRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9jaGFpbmxvY2tfdW5tYXJrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9jaGFpbnVubG9ja0BCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2NoYWludW5sb2NrX3JlYWRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9jbG9zZUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2RlbGV0ZUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2R1bXBfYWxsQEJhc2UgMS40MAorIGV4dDJmc190ZGJfZW5hYmxlX3NlcW51bUBCYXNlIDEuNDAuNworIGV4dDJmc190ZGJfZXJyb3JAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9lcnJvcnN0ckBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2V4aXN0c0BCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2ZkQEJhc2UgMS40MAorIGV4dDJmc190ZGJfZmV0Y2hAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9maXJzdGtleUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2ZsdXNoQEJhc2UgMS40MworIGV4dDJmc190ZGJfZ2V0X2ZsYWdzQEJhc2UgMS40MAorIGV4dDJmc190ZGJfZ2V0X2xvZ2dpbmdfcHJpdmF0ZUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX2dldF9zZXFudW1AQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9oYXNoX3NpemVAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9pbmNyZW1lbnRfc2VxbnVtX25vbmJsb2NrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9sb2NrX25vbmJsb2NrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9sb2NrYWxsQEJhc2UgMS40MAorIGV4dDJmc190ZGJfbG9ja2FsbF9tYXJrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9sb2NrYWxsX25vbmJsb2NrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9sb2NrYWxsX3JlYWRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9sb2NrYWxsX3JlYWRfbm9uYmxvY2tAQmFzZSAxLjQwLjcKKyBleHQyZnNfdGRiX2xvY2thbGxfdW5tYXJrQEJhc2UgMS40MC43CisgZXh0MmZzX3RkYl9sb2dfZm5AQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9tYXBfc2l6ZUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX25hbWVAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9uZXh0a2V5QEJhc2UgMS40MAorIGV4dDJmc190ZGJfb3BlbkBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX29wZW5fZXhAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9wYXJzZV9yZWNvcmRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl9wcmludGZyZWVsaXN0QEJhc2UgMS40MAorIGV4dDJmc190ZGJfcmVvcGVuQEJhc2UgMS40MAorIGV4dDJmc190ZGJfcmVvcGVuX2FsbEBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX3NldF9sb2dnaW5nX2Z1bmN0aW9uQEJhc2UgMS40MAorIGV4dDJmc190ZGJfc2V0X21heF9kZWFkQEJhc2UgMS40MAorIGV4dDJmc190ZGJfc3RvcmVAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl90cmFuc2FjdGlvbl9jYW5jZWxAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl90cmFuc2FjdGlvbl9jb21taXRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl90cmFuc2FjdGlvbl9yZWNvdmVyQEJhc2UgMS40MAorIGV4dDJmc190ZGJfdHJhbnNhY3Rpb25fc3RhcnRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl90cmF2ZXJzZUBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX3RyYXZlcnNlX3JlYWRAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl91bmxvY2thbGxAQmFzZSAxLjQwCisgZXh0MmZzX3RkYl91bmxvY2thbGxfcmVhZEBCYXNlIDEuNDAKKyBleHQyZnNfdGRiX3ZhbGlkYXRlX2ZyZWVsaXN0QEJhc2UgMS40MAorIGV4dDJmc190ZXN0X2JiX2RpcnR5QEJhc2UgMS4zNworIGV4dDJmc190ZXN0X2JpdDY0QEJhc2UgMS40MgorIGV4dDJmc190ZXN0X2JpdEBCYXNlIDEuMzcKKyBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZUBCYXNlIDEuMzcKKyBleHQyZnNfdGVzdF9jaGFuZ2VkQEJhc2UgMS4zNworIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcEBCYXNlIDEuNDIKKyBleHQyZnNfdGVzdF9pYl9kaXJ0eUBCYXNlIDEuMzcKKyBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcEBCYXNlIDEuMzcKKyBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXBfcmFuZ2VAQmFzZSAxLjQxLjgKKyBleHQyZnNfdGVzdF92YWxpZEBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2NvcHlAQmFzZSAxLjM3CisgZXh0MmZzX3UzMl9saXN0X2FkZEBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfY291bnRAQmFzZSAxLjM3CisgZXh0MmZzX3UzMl9saXN0X2NyZWF0ZUBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfZGVsQEJhc2UgMS4zNworIGV4dDJmc191MzJfbGlzdF9lcXVhbEBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfZmluZEBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfZnJlZUBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZUBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZV9iZWdpbkBCYXNlIDEuMzcKKyBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZV9lbmRAQmFzZSAxLjM3CisgZXh0MmZzX3UzMl9saXN0X3Rlc3RAQmFzZSAxLjM3CisgZXh0MmZzX3VubGlua0BCYXNlIDEuMzcKKyBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDJAQmFzZSAxLjQyCisgZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyQEJhc2UgMS40MgorIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlQEJhc2UgMS4zNworIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX3VubWFya19nZW5lcmljX2JtYXBAQmFzZSAxLjQyCisgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyQEJhc2UgMS40MgorIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc191bm1hcmtfdmFsaWRAQmFzZSAxLjM3CisgZXh0MmZzX3VwZGF0ZV9iYl9pbm9kZUBCYXNlIDEuMzcKKyBleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2QEJhc2UgMS4zNworIGV4dDJmc192ZXJpZnlfY3N1bV90eXBlQEJhc2UgMS40MworIGV4dDJmc193YXJuX2JpdG1hcDJAQmFzZSAxLjM3CisgZXh0MmZzX3dhcm5fYml0bWFwMzJAQmFzZSAxLjQyCisgZXh0MmZzX3dhcm5fYml0bWFwQEJhc2UgMS4zNworIGV4dDJmc193cml0ZV9iYl9GSUxFQEJhc2UgMS4zNworIGV4dDJmc193cml0ZV9iaXRtYXBzQEJhc2UgMS4zNworIGV4dDJmc193cml0ZV9ibG9ja19iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazJAQmFzZSAxLjM3CisgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazNAQmFzZSAxLjQyCisgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazRAQmFzZSAxLjQzCisgZXh0MmZzX3dyaXRlX2Rpcl9ibG9ja0BCYXNlIDEuMzcKKyBleHQyZnNfd3JpdGVfZXh0X2F0dHIyQEJhc2UgMS40MgorIGV4dDJmc193cml0ZV9leHRfYXR0cjNAQmFzZSAxLjQzCisgZXh0MmZzX3dyaXRlX2V4dF9hdHRyQEJhc2UgMS4zNworIGV4dDJmc193cml0ZV9pbmRfYmxvY2tAQmFzZSAxLjM3CisgZXh0MmZzX3dyaXRlX2lub2RlQEJhc2UgMS4zNworIGV4dDJmc193cml0ZV9pbm9kZV9iaXRtYXBAQmFzZSAxLjM3CisgZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGxAQmFzZSAxLjM3CisgZXh0MmZzX3dyaXRlX25ld19pbm9kZUBCYXNlIDEuMzcKKyBleHQyZnNfeGF0dHJfZ2V0QEJhc2UgMS40MworIGV4dDJmc194YXR0cl9pbm9kZV9tYXhfc2l6ZUBCYXNlIDEuNDMKKyBleHQyZnNfeGF0dHJfcmVtb3ZlQEJhc2UgMS40MworIGV4dDJmc194YXR0cl9zZXRAQmFzZSAxLjQzCisgZXh0MmZzX3hhdHRyc19jbG9zZUBCYXNlIDEuNDMKKyBleHQyZnNfeGF0dHJzX2NvdW50QEJhc2UgMS40MworIGV4dDJmc194YXR0cnNfaXRlcmF0ZUBCYXNlIDEuNDMKKyBleHQyZnNfeGF0dHJzX29wZW5AQmFzZSAxLjQzCisgZXh0MmZzX3hhdHRyc19yZWFkQEJhc2UgMS40MworIGV4dDJmc194YXR0cnNfd3JpdGVAQmFzZSAxLjQzCisgZXh0MmZzX3plcm9fYmxvY2tzMkBCYXNlIDEuNDIKKyBleHQyZnNfemVyb19ibG9ja3NAQmFzZSAxLjQxLjAKKyBpbml0aWFsaXplX2V4dDJfZXJyb3JfdGFibGVAQmFzZSAxLjM3CisgaW5pdGlhbGl6ZV9leHQyX2Vycm9yX3RhYmxlX3JAQmFzZSAxLjM3CisgaW5vZGVfaW9fbWFuYWdlckBCYXNlIDEuMzcKKyBpb19jaGFubmVsX2FsbG9jX2J1ZkBCYXNlIDEuNDIuMworIGlvX2NoYW5uZWxfY2FjaGVfcmVhZGFoZWFkQEJhc2UgMS40MworIGlvX2NoYW5uZWxfZGlzY2FyZEBCYXNlIDEuNDIKKyBpb19jaGFubmVsX3JlYWRfYmxrNjRAQmFzZSAxLjQxLjEKKyBpb19jaGFubmVsX3NldF9vcHRpb25zQEJhc2UgMS4zNworIGlvX2NoYW5uZWxfd3JpdGVfYmxrNjRAQmFzZSAxLjQxLjEKKyBpb19jaGFubmVsX3dyaXRlX2J5dGVAQmFzZSAxLjM3CisgaW9fY2hhbm5lbF96ZXJvb3V0QEJhc2UgMS40MworIHFjb3cyX3JlYWRfaGVhZGVyQEJhc2UgMS40MgorIHFjb3cyX3dyaXRlX3Jhd19pbWFnZUBCYXNlIDEuNDIKKyBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXJAQmFzZSAxLjQxLjAKKyBzZXRfdW5kb19pb19iYWNrdXBfZmlsZUBCYXNlIDEuNDEuMAorIHRlc3RfaW9fYmFja2luZ19tYW5hZ2VyQEJhc2UgMS4zNworIHRlc3RfaW9fY2JfcmVhZF9ibGs2NEBCYXNlIDEuNDEuMAorIHRlc3RfaW9fY2JfcmVhZF9ibGtAQmFzZSAxLjM3CisgdGVzdF9pb19jYl9zZXRfYmxrc2l6ZUBCYXNlIDEuMzcKKyB0ZXN0X2lvX2NiX3dyaXRlX2JsazY0QEJhc2UgMS40MS4wCisgdGVzdF9pb19jYl93cml0ZV9ibGtAQmFzZSAxLjM3CisgdGVzdF9pb19jYl93cml0ZV9ieXRlQEJhc2UgMS4zNworIHRlc3RfaW9fbWFuYWdlckBCYXNlIDEuMzcKKyB1bmRvX2lvX21hbmFnZXJAQmFzZSAxLjQxLjAKKyB1bml4X2lvX21hbmFnZXJAQmFzZSAxLjM3CisgdW5peGZkX2lvX21hbmFnZXJAQmFzZSAxLjQzLjIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLXVkZWIuc2hsaWJzLmxvY2FsIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MtdWRlYi5zaGxpYnMubG9jYWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxYjU4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLXVkZWIuc2hsaWJzLmxvY2FsCkBAIC0wLDAgKzEsNiBAQAorbGliYmxraWQgMSBsaWJibGtpZDEtdWRlYgorIyBmb3JjZSB0aGUgZGVwZW5kZW5jeSB0byBsaWJibGtpZDEtdWRlYiwgZXZlbiBpZiBpdCBkb24ndCBpbmNsdWRlIHRoZSBsaWIKK2xpYmNvbV9lcnIgMiBsaWJibGtpZDEtdWRlYgorbGlidXVpZCAxIGxpYnV1aWQxLXVkZWIKK2xpYmV4dDJmcyAyIGxpYmJsa2lkMS11ZGViCitsaWJlMnAgMiBsaWJibGtpZDEtdWRlYgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MuZG9jcyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLmRvY3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FmOTczMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLmRvY3MKQEAgLTAsMCArMSwyIEBACitSRUFETUUKK1JFTEVBU0UtTk9URVMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLmZpbGVzIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MuZmlsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdlNTRkYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLmZpbGVzCkBAIC0wLDAgKzEsNiBAQAorc2JpbgordXNyL2JpbgordXNyL3NiaW4KK3Vzci9zaGFyZS9tYW4KK3Vzci9zaGFyZS9sb2NhbGUKK2V0YwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MucG9zdGluc3QgYi9lMmZzcHJvZ3MvZGViaWFuL2UyZnNwcm9ncy5wb3N0aW5zdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGFjMzYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MucG9zdGluc3QKQEAgLTAsMCArMSwxMyBAQAorIyEvYmluL3NoCisKKyMgQWJvcnQgb24gZXJyb3IuCitzZXQgLWUKKworaWYgWyAteCAvdXNyL3NiaW4vdXBkYXRlLWluaXRyYW1mcyAtYSBcCisJLWUgL2V0Yy9pbml0cmFtZnMtdG9vbHMvaW5pdHJhbWZzLmNvbmYgXTsgdGhlbgorICAgIHVwZGF0ZS1pbml0cmFtZnMgLXUKK2ZpCisKKyNERUJIRUxQRVIjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3MucHJlaW5zdCBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLnByZWluc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZhOWY2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLnByZWluc3QKQEAgLTAsMCArMSwxOSBAQAorIyEvYmluL3NoCisKKyMgQWJvcnQgb24gZXJyb3IuCitzZXQgLWUKKworUEtHPWUyZnNwcm9ncworRE9DTE5LPS91c3Ivc2hhcmUvZG9jLyRQS0cKK2lmIHRlc3QgIiQxIiA9IHVwZ3JhZGUgXAorICAgIC1hIC1MICRET0NMTksKK3RoZW4KKyAgICBybSAkRE9DTE5LCitmaQorCisjIGRoX2luc3RhbGxkZWIgd2lsbCByZXBsYWNlIHRoaXMgd2l0aCBzaGVsbCBjb2RlIGF1dG9tYXRpY2FsbHkKKyMgZ2VuZXJhdGVkIGJ5IG90aGVyIGRlYmhlbHBlciBzY3JpcHRzLgorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLnNobGlicy5sb2NhbC5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vZTJmc3Byb2dzLnNobGlicy5sb2NhbC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjdkYjVkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9lMmZzcHJvZ3Muc2hsaWJzLmxvY2FsLmluCkBAIC0wLDAgKzEsOCBAQAorbGliY29tX2VyciAyIGxpYmNvbWVycjIgKD49IDEuNDJ+V0lQLTIwMTEtMTAtMDUtMSkKK2xpYnNzIDIgbGlic3MyICg+PSAxLjM0LTEpCitpZmRlZihgVVRJTF9MSU5VWF9ORycsLAorYGBsaWJ1dWlkIDEgbGlidXVpZDEgKD49IDEuMzQtMSkKK2xpYmJsa2lkIDEgbGliYmxraWQxICg+PSAxLjM0LTEpCisnJylkbmwKK2xpYmV4dDJmcyAyIGUyZnNsaWJzICg9ICR7YmluYXJ5OlZlcnNpb259KQorbGliZTJwIDIgZTJmc2xpYnMgKD0gJHtiaW5hcnk6VmVyc2lvbn0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2Z1c2UyZnMuZmlsZXMgYi9lMmZzcHJvZ3MvZGViaWFuL2Z1c2UyZnMuZmlsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QzN2E3MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vZnVzZTJmcy5maWxlcwpAQCAtMCwwICsxLDIgQEAKKy91c3Ivc2Jpbi9mdXNlMmZzCisvdXNyL3NoYXJlL21hbi9tYW4xL2Z1c2UyZnMuMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZC1kZXYuZmlsZXMuaW4gYi9lMmZzcHJvZ3MvZGViaWFuL2xpYmJsa2lkLWRldi5maWxlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjNkYTM2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZC1kZXYuZmlsZXMuaW4KQEAgLTAsMCArMSw0IEBACit1c3IvbGliLyovbGliYmxraWQqLnNvLioKK3Vzci9pbmNsdWRlL2Jsa2lkCit1c3Ivc2hhcmUvbWFuL21hbjMvbGliYmxraWQuMwordXNyL2xpYi8qL3BrZ2NvbmZpZy9ibGtpZC5wYwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZC5jb3B5cmlnaHQgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYmJsa2lkLmNvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmU4MThiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZC5jb3B5cmlnaHQKQEAgLTAsMCArMSwxOSBAQAorVGhpcyBwYWNrYWdlIHdhcyBhZGRlZCB0byB0aGUgZTJmc3Byb2dzIGRlYmlhbiBzb3VyY2UgcGFja2FnZSBieQorVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4gb24gU2F0IE1hciAxNSAxNTozMzozNyBFU1QgMjAwMworCitJdCBpcyBwYXJ0IG9mIHRoZSBtYWluIGUyZnNwcm9ncyBkaXN0cmlidXRpb24sIHdoaWNoIGNhbiBiZSBmb3VuZCBhdDoKKworCWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZTJmc3Byb2dzCisKK1Vwc3RyZWFtIEF1dGhvcjogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKworQ29weXJpZ2h0OgorCitDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDEgYnkgQW5kcmllcyBCcm91d2VyCitDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMgYnkgVGhlb2RvcmUgVHMnbworCitZb3UgYXJlIGZyZWUgdG8gZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCitMZXNzZXIgKExpYnJhcnkpIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisKK09uIERlYmlhbiBzeXN0ZW1zLCB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGUgR05VIExlc3NlciAoTGlicmFyeSkKK0dlbmVyYWwgUHVibGljIExpY2Vuc2UgY2FuIGJlIGZvdW5kIGluIC91c3Ivc2hhcmUvY29tbW9uLWxpY2Vuc2VzL0xHUEwtMi4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGliYmxraWQxLmZpbGVzLmluIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZDEuZmlsZXMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlZjg2ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vbGliYmxraWQxLmZpbGVzLmluCkBAIC0wLDAgKzEgQEAKK2xpYi8qL2xpYmJsa2lkKi5zby4qCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYmJsa2lkMS5zeW1ib2xzIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZDEuc3ltYm9scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWI5MWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJibGtpZDEuc3ltYm9scwpAQCAtMCwwICsxLDQxIEBACitsaWJibGtpZC5zby4xIGxpYmJsa2lkMSAjTUlOVkVSIworIGJsa2lkX19zY2FuX2RpckBCYXNlIDEuNDEuMQorIGJsa2lkX2RlYnVnX21hc2tAQmFzZSAxLjMzCisgYmxraWRfZGV2X2Rldm5hbWVAQmFzZSAxLjMzCisgYmxraWRfZGV2X2hhc190YWdAQmFzZSAxLjM4CisgYmxraWRfZGV2X2l0ZXJhdGVfYmVnaW5AQmFzZSAxLjMzCisgYmxraWRfZGV2X2l0ZXJhdGVfZW5kQEJhc2UgMS4zMworIGJsa2lkX2Rldl9uZXh0QEJhc2UgMS4zMworIGJsa2lkX2Rldl9zZXRfc2VhcmNoQEJhc2UgMS4zOAorI01JU1NJTkc6IDEuNDEuMSMgYmxraWRfZGV2ZGlyc0BCYXNlIDEuMzQKKyBibGtpZF9kZXZub190b19kZXZuYW1lQEJhc2UgMS4zMworIGJsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnQEJhc2UgMS4zMworIGJsa2lkX2ZpbmRfdGFnX2RldkBCYXNlIDEuMzMKKyBibGtpZF9mbHVzaF9jYWNoZUBCYXNlIDEuMzMKKyBibGtpZF9mcmVlX2RldkBCYXNlIDEuMzMKKyBibGtpZF9mcmVlX3RhZ0BCYXNlIDEuMzMKKyBibGtpZF9nY19jYWNoZUBCYXNlIDEuNDAKKyBibGtpZF9nZXRfY2FjaGVAQmFzZSAxLjMzCisgYmxraWRfZ2V0X2RldkBCYXNlIDEuMzMKKyBibGtpZF9nZXRfZGV2X3NpemVAQmFzZSAxLjMzCisgYmxraWRfZ2V0X2Rldm5hbWVAQmFzZSAxLjMzCisgYmxraWRfZ2V0X2xpYnJhcnlfdmVyc2lvbkBCYXNlIDEuMzcKKyBibGtpZF9nZXRfdGFnX3ZhbHVlQEJhc2UgMS4zMworIGJsa2lkX2tub3duX2ZzdHlwZUBCYXNlIDEuMzQKKyBibGtpZF9sbHNlZWtAQmFzZSAxLjMzCisgYmxraWRfbmV3X2RldkBCYXNlIDEuMzMKKyBibGtpZF9wYXJzZV90YWdfc3RyaW5nQEJhc2UgMS4zMworIGJsa2lkX3BhcnNlX3ZlcnNpb25fc3RyaW5nQEJhc2UgMS4zNworIGJsa2lkX3Byb2JlX2FsbEBCYXNlIDEuMzMKKyBibGtpZF9wcm9iZV9hbGxfbmV3QEJhc2UgMS4zOAorIGJsa2lkX3B1dF9jYWNoZUBCYXNlIDEuMzMKKyBibGtpZF9yZWFkX2NhY2hlQEJhc2UgMS4zMworIGJsa2lkX3NldF90YWdAQmFzZSAxLjMzCisgYmxraWRfc3RyZHVwQEJhc2UgMS4zMworIGJsa2lkX3N0cm5kdXBAQmFzZSAxLjMzCisgYmxraWRfdGFnX2l0ZXJhdGVfYmVnaW5AQmFzZSAxLjMzCisgYmxraWRfdGFnX2l0ZXJhdGVfZW5kQEJhc2UgMS4zMworIGJsa2lkX3RhZ19uZXh0QEJhc2UgMS4zMworIGJsa2lkX3ZlcmlmeUBCYXNlIDEuMzcKKyNNSVNTSU5HOiAxLjQwLjcjIGNoZWNrX2Zvcl9tb2R1bGVzQEJhc2UgMS40MC42CisjTUlTU0lORzogMS40MC43IyBmc19wcm9jX2NoZWNrQEJhc2UgMS40MC42CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYmNvbWVycjIuY29weXJpZ2h0IGIvZTJmc3Byb2dzL2RlYmlhbi9saWJjb21lcnIyLmNvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg2MjhhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJjb21lcnIyLmNvcHlyaWdodApAQCAtMCwwICsxLDI0IEBACitUaGlzIGlzIHRoZSBEZWJpYW4gR05VL0xpbnV4IHByZXBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIENvbW1vbiBFcnJvcgorRGVzY3JpcHRpb24gbGlicmFyeS4gSXQgaXMgY3VycmVudGx5IGRpc3RyaWJ1dGVkIHRvZ2V0aGVyIHdpdGggdGhlIEVYVDIgZmlsZQorc3lzdGVtIHV0aWxpdGllcywgd2hpY2ggYXJlIG90aGVyd2lzZSBwYWNrYWdlZCBhcyAiZTJmc3Byb2dzIi4KKworVGhpcyBwYWNrYWdlIHdhcyBwdXQgdG9nZXRoZXIgYnkgWWFubiBEaXJzb24gPGRpcnNvbkBkZWJpYW4ub3JnPiwKK2Zyb20gc291cmNlcyBvYnRhaW5lZCBmcm9tIGEgbWlycm9yIG9mOgorIHRzeC0xMS5taXQuZWR1Oi9wdWIvbGludXgvcGFja2FnZXMvZXh0MmZzLworCitGcm9tIHRoZSBvcmlnaW5hbCBkaXN0cmlidXRpb246CisKK0NvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IHRoZSBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKwlvZiB0aGUgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQorCitQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlCithbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcworaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UKK2FwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZAordGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLAorYW5kIHRoYXQgdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUKK3VzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uCitvZiB0aGUgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLgorTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0Cit0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcworcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGliY29tZXJyMi5maWxlcy5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vbGliY29tZXJyMi5maWxlcy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmIwMzllCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJjb21lcnIyLmZpbGVzLmluCkBAIC0wLDAgKzEgQEAKK2xpYi8qL2xpYmNvbV9lcnIqLnNvLioKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGliY29tZXJyMi5zeW1ib2xzIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJjb21lcnIyLnN5bWJvbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2UzYjc0YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vbGliY29tZXJyMi5zeW1ib2xzCkBAIC0wLDAgKzEsMjEgQEAKK2xpYmNvbV9lcnIuc28uMiBsaWJjb21lcnIyICNNSU5WRVIjCisgX2V0X2R5bmFtaWNfbGlzdEBCYXNlIDEuMzgKKyBfZXRfbGlzdEBCYXNlIDEuMDEKKyBhZGRfZXJyb3JfdGFibGVAQmFzZSAxLjM0CisgYWRkX3RvX2Vycm9yX3RhYmxlQEJhc2UgMS4zNAorIGNvbV9lcnJAQmFzZSAxLjAxCisgY29tX2Vycl9ob29rQEJhc2UgMS4wMQorIGNvbV9lcnJfdmFAQmFzZSAxLjAxCisgY29tX3JpZ2h0QEJhc2UgMS4zNAorIGNvbV9yaWdodF9yQEJhc2UgMS40MS4xMQorIGVycm9yX21lc3NhZ2VAQmFzZSAxLjAxCisgZXJyb3JfdGFibGVfbmFtZUBCYXNlIDEuMDEKKyBldF9saXN0X2xvY2tAQmFzZSAxLjQxLjIKKyBldF9saXN0X3VubG9ja0BCYXNlIDEuNDEuMgorIGZyZWVfZXJyb3JfdGFibGVAQmFzZSAxLjM0CisgaW5pdF9lcnJvcl90YWJsZUBCYXNlIDEuMDEKKyBpbml0aWFsaXplX2Vycm9yX3RhYmxlX3JAQmFzZSAxLjM0CisgcmVtb3ZlX2Vycm9yX3RhYmxlQEJhc2UgMS4zNAorIHJlc2V0X2NvbV9lcnJfaG9va0BCYXNlIDEuMDEKKyBzZXRfY29tX2Vycl9nZXR0ZXh0QEJhc2UgMS40MS45OQorIHNldF9jb21fZXJyX2hvb2tAQmFzZSAxLjAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYnNzMi5jb3B5cmlnaHQgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnNzMi5jb3B5cmlnaHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAzOTgzMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vbGlic3MyLmNvcHlyaWdodApAQCAtMCwwICsxLDI1IEBACitUaGlzIGlzIHRoZSBEZWJpYW4gR05VL0xpbnV4IHByZXBhY2thZ2VkIHZlcnNpb24gb2YgdGhlIHNzCitjb21tYW5kLWxpbmUgaW50ZXJmYWNlIHBhcnNpbmcgbGlicmFyeS4gSXQgaXMgY3VycmVudGx5CitkaXN0cmlidXRlZCB0b2dldGhlciB3aXRoIHRoZSBFWFQyIGZpbGUgc3lzdGVtIHV0aWxpdGllcywgd2hpY2ggYXJlCitvdGhlcndpc2UgcGFja2FnZWQgYXMgImUyZnNwcm9ncyIuCisKK1RoaXMgcGFja2FnZSB3YXMgcHV0IHRvZ2V0aGVyIGJ5IFlhbm4gRGlyc29uIDxkaXJzb25AZGViaWFuLm9yZz4sCitmcm9tIHNvdXJjZXMgb2J0YWluZWQgZnJvbSBhIG1pcnJvciBvZjoKKyB0c3gtMTEubWl0LmVkdTovcHViL2xpbnV4L3BhY2thZ2VzL2V4dDJmcy8KKworRnJvbSB0aGUgb3JpZ2luYWwgZGlzdHJpYnV0aW9uOgorCitDb3B5cmlnaHQgMTk4NywgMTk4OCBieSB0aGUgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCisJb2YgdGhlIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKworUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKK2hlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlCithcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQKK3RoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwKK2FuZCB0aGF0IHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlCit1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbgorb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4KK00uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dAordGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMKK3Byb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYnNzMi5maWxlcy5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vbGlic3MyLmZpbGVzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4NmUxODUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnNzMi5maWxlcy5pbgpAQCAtMCwwICsxIEBACitsaWIvKi9saWJzcyouc28uKgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9saWJzczIuc3ltYm9scyBiL2UyZnNwcm9ncy9kZWJpYW4vbGlic3MyLnN5bWJvbHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjZmZTQwYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vbGlic3MyLnN5bWJvbHMKQEAgLTAsMCArMSwzNSBAQAorbGlic3Muc28uMiBsaWJzczIgI01JTlZFUiMKKyBfc3NfcGFnZXJfbmFtZUBCYXNlIDEuMDEKKyBfc3NfdGFibGVAQmFzZSAxLjAxCisgZXRfc3NfZXJyb3JfdGFibGVAQmFzZSAxLjM1CisgaW5pdGlhbGl6ZV9zc19lcnJvcl90YWJsZUBCYXNlIDEuMDEKKyBpbml0aWFsaXplX3NzX2Vycm9yX3RhYmxlX3JAQmFzZSAxLjM0Cisgc3NfYWJvcnRfc3Vic3lzdGVtQEJhc2UgMS4wMQorIHNzX2FkZF9pbmZvX2RpckBCYXNlIDEuMDEKKyBzc19hZGRfcmVxdWVzdF90YWJsZUBCYXNlIDEuMDEKKyBzc19jcmVhdGVfaW52b2NhdGlvbkBCYXNlIDEuMDEKKyBzc19kZWxldGVfaW5mb19kaXJAQmFzZSAxLjAxCisgc3NfZGVsZXRlX2ludm9jYXRpb25AQmFzZSAxLjAxCisgc3NfZGVsZXRlX3JlcXVlc3RfdGFibGVAQmFzZSAxLjAxCisgc3NfZXJyb3JAQmFzZSAxLjAxCisgc3NfZXhlY3V0ZV9jb21tYW5kQEJhc2UgMS4wMQorIHNzX2V4ZWN1dGVfbGluZUBCYXNlIDEuMDEKKyBzc19nZXRfcHJvbXB0QEJhc2UgMS4wMQorIHNzX2dldF9yZWFkbGluZUBCYXNlIDEuMzQKKyBzc19oZWxwQEJhc2UgMS4wMQorIHNzX2xpc3RfcmVxdWVzdHNAQmFzZSAxLjAxCisgc3NfbGlzdGVuQEJhc2UgMS4wMQorIHNzX25hbWVAQmFzZSAxLjAxCisgc3NfcGFnZV9zdGRpbkBCYXNlIDEuMDEKKyBzc19wYWdlcl9jcmVhdGVAQmFzZSAxLjAxCisgc3NfcGFyc2VAQmFzZSAxLjAxCisgc3NfcGVycm9yQEJhc2UgMS4wMQorIHNzX3F1aXRAQmFzZSAxLjAxCisgc3NfcmxfY29tcGxldGlvbkBCYXNlIDEuMzQKKyBzc19zYWZlX2dldGVudkBCYXNlIDEuMzgKKyBzc19zZWxmX2lkZW50aWZ5QEJhc2UgMS4wMQorIHNzX3NldF9wcm9tcHRAQmFzZSAxLjAxCisgc3Nfc3RkX3JlcXVlc3RzQEJhc2UgMS4wMQorIHNzX3N1YnN5c3RlbV9uYW1lQEJhc2UgMS4wMQorIHNzX3N1YnN5c3RlbV92ZXJzaW9uQEJhc2UgMS4wMQorIHNzX3VuaW1wbGVtZW50ZWRAQmFzZSAxLjAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLmNvcHlyaWdodCBiL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEuY29weXJpZ2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNDY3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLmNvcHlyaWdodApAQCAtMCwwICsxLDM4IEBACitUaGlzIHBhY2thZ2Ugd2FzIGFkZGVkIHRvIHRoZSBlMmZzcHJvZ3MgZGViaWFuIHNvdXJjZSBwYWNrYWdlIGJ5CitUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PiBvbiBTYXQgTWFyIDE1IDE1OjMzOjM3IEVTVCAyMDAzCisKK0l0IGlzIHBhcnQgb2YgdGhlIG1haW4gZTJmc3Byb2dzIGRpc3RyaWJ1dGlvbiwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgorCisJaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMmZzcHJvZ3MKKworVXBzdHJlYW0gQXV0aG9yOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitDb3B5cmlnaHQ6CisKK0NvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCBieSBUaGVvZG9yZSBUcydvCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKK09GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEuZmlsZXMuaW4gYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLmZpbGVzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NjFmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLmZpbGVzLmluCkBAIC0wLDAgKzEgQEAKK2xpYi8qL2xpYnV1aWQqLnNvLioKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEucG9zdGluc3QgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLnBvc3RpbnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMzZmY2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLnBvc3RpbnN0CkBAIC0wLDAgKzEsNDAgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKKworQUREVVNFUkNPTkY9Jy9ldGMvYWRkdXNlci5jb25mJworCitpZiB0ZXN0IC1mICRBRERVU0VSQ09ORjsgdGhlbgorICAgIEZJUlNUX1NZU1RFTV9VSUQ9JChzZWQgLW4gInMvXltbOnNwYWNlOl1dKkZJUlNUX1NZU1RFTV9VSURbWzpzcGFjZTpdXSo9W1s6c3BhY2U6XV0qW1wiJ11cP1woW15cIiddKlwpW1wiJ11cPy9cMS9wIiAkQUREVVNFUkNPTkYpCisgICAgTEFTVF9TWVNURU1fVUlEPSQoc2VkIC1uICJzL15bWzpzcGFjZTpdXSpMQVNUX1NZU1RFTV9VSURbWzpzcGFjZTpdXSo9W1s6c3BhY2U6XV0qW1wiJ11cP1woW15cIiddKlwpW1wiJ11cPy9cMS9wIiAkQUREVVNFUkNPTkYpCisgICAgRklSU1RfU1lTVEVNX0dJRD0kKHNlZCAtbiAicy9eW1s6c3BhY2U6XV0qRklSU1RfU1lTVEVNX0dJRFtbOnNwYWNlOl1dKj1bWzpzcGFjZTpdXSpbXCInXVw/XChbXlwiJ10qXClbXCInXVw/L1wxL3AiICRBRERVU0VSQ09ORikKKyAgICBMQVNUX1NZU1RFTV9HSUQ9JChzZWQgLW4gInMvXltbOnNwYWNlOl1dKkxBU1RfU1lTVEVNX0dJRFtbOnNwYWNlOl1dKj1bWzpzcGFjZTpdXSpbXCInXVw/XChbXlwiJ10qXClbXCInXVw/L1wxL3AiICRBRERVU0VSQ09ORikKK2ZpCisKK2lmIHRlc3QgLXogIiRGSVJTVF9TWVNURU1fVUlEIjsgdGhlbgorICAgIEZJUlNUX1NZU1RFTV9VSUQ9MTAwCitmaQoraWYgdGVzdCAteiAiJExBU1RfU1lTVEVNX1VJRCI7IHRoZW4KKyAgICBMQVNUX1NZU1RFTV9VSUQ9OTk5CitmaQoraWYgdGVzdCAteiAiJEZJUlNUX1NZU1RFTV9HSUQiOyB0aGVuCisgICAgRklSU1RfU1lTVEVNX0dJRD0xMDAKK2ZpCitpZiB0ZXN0IC16ICIkTEFTVF9TWVNURU1fR0lEIjsgdGhlbgorICAgIExBU1RfU1lTVEVNX0dJRD05OTkKK2ZpCisKK2lmICEgZ2V0ZW50IGdyb3VwIHwgZ3JlcCAtcSBsaWJ1dWlkOyB0aGVuCisgIGdyb3VwYWRkIC1mIC1LIEdJRF9NSU49JEZJUlNUX1NZU1RFTV9HSUQgLUsgR0lEX01BWD0kTEFTVF9TWVNURU1fR0lEIGxpYnV1aWQKK2ZpCitpZiAhIGdldGVudCBwYXNzd2QgfCBncmVwIC1xIGxpYnV1aWQ7IHRoZW4KKyAgIHVzZXJhZGQgLWQgL3Zhci9saWIvbGlidXVpZCAtSyBVSURfTUlOPSRGSVJTVF9TWVNURU1fVUlEIC1LIFVJRF9NQVg9JExBU1RfU1lTVEVNX1VJRCAtZyBsaWJ1dWlkIGxpYnV1aWQKK2ZpCisKK21rZGlyIC1wIC92YXIvbGliL2xpYnV1aWQKK2Nob3duIGxpYnV1aWQ6bGlidXVpZCAvdmFyL2xpYi9saWJ1dWlkCitjaG1vZCAyNzc1IC92YXIvbGliL2xpYnV1aWQKKworI0RFQkhFTFBFUiMKKworZXhpdCAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLnBvc3RybSBiL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEucG9zdHJtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMjg2ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL2xpYnV1aWQxLnBvc3RybQpAQCAtMCwwICsxLDEwIEBACisjIS9iaW4vc2gKK3NldCAtZQoraWYgWyAiJDEiID0gcHVyZ2UgXQordGhlbgorCXJtIC1yZiAvdmFyL2xpYi9saWJ1dWlkCitmaQorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEuc3ltYm9scyBiL2UyZnNwcm9ncy9kZWJpYW4vbGlidXVpZDEuc3ltYm9scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAwNDMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9saWJ1dWlkMS5zeW1ib2xzCkBAIC0wLDAgKzEsMTkgQEAKK2xpYnV1aWQuc28uMSBsaWJ1dWlkMSAjTUlOVkVSIworIHV1aWRfX2dlbmVyYXRlX3JhbmRvbUBCYXNlIDEuNDAuNAorIHV1aWRfX2dlbmVyYXRlX3RpbWVAQmFzZSAxLjQwLjQKKyB1dWlkX2NsZWFyQEJhc2UgMS4wNQorIHV1aWRfY29tcGFyZUBCYXNlIDEuMDUKKyB1dWlkX2NvcHlAQmFzZSAxLjA1CisgdXVpZF9nZW5lcmF0ZUBCYXNlIDEuMDUKKyB1dWlkX2dlbmVyYXRlX3JhbmRvbUBCYXNlIDEuMTUKKyB1dWlkX2dlbmVyYXRlX3RpbWVAQmFzZSAxLjE1CisgdXVpZF9pc19udWxsQEJhc2UgMS4wNQorIHV1aWRfcGFja0BCYXNlIDEuMDUKKyB1dWlkX3BhcnNlQEJhc2UgMS4wNQorIHV1aWRfdGltZUBCYXNlIDEuMTUKKyB1dWlkX3R5cGVAQmFzZSAxLjE1CisgdXVpZF91bnBhY2tAQmFzZSAxLjA1CisgdXVpZF91bnBhcnNlQEJhc2UgMS4wNQorIHV1aWRfdW5wYXJzZV9sb3dlckBCYXNlIDEuMzYKKyB1dWlkX3VucGFyc2VfdXBwZXJAQmFzZSAxLjM2CisgdXVpZF92YXJpYW50QEJhc2UgMS4xNQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9ydWxlcyBiL2UyZnNwcm9ncy9kZWJpYW4vcnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzRlMGFjZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vcnVsZXMKQEAgLTAsMCArMSw2NjIgQEAKKyMhIC91c3IvYmluL21ha2UgLWYKKyMgLSotIG1ha2VmaWxlIC0qLQorIworIyBJbnZva2UgZWFjaCB0YXJnZXQgd2l0aCBgLi9kZWJpYW4vcnVsZXMgPHRhcmdldD4nLiAgQWxsIHRhcmdldHMgc2hvdWxkIGJlCisjIGludm9rZWQgd2l0aCB0aGUgcGFja2FnZSByb290IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKyMKKyMgVGhlIGBiaW5hcnknIHRhcmdldCBtdXN0IGJlIHJ1biBhcyByb290LCBhcyBpdCBuZWVkcyB0byBpbnN0YWxsIGZpbGVzIHdpdGgKKyMgc3BlY2lmaWMgb3duZXJzaGlwcy4KKworLWluY2x1ZGUgZGViaWFuL3J1bGVzLmN1c3RvbQorCitleHBvcnQgREVCX0JVSUxEX01BSU5UX09QVElPTlMgPz0gaGFyZGVuaW5nPSthbGwKKworIyBiZSBwYXJhbm9pZAorZXhwb3J0IExDX0FMTCA/PSBDCisKKyMgVGhlc2UgYXJlIHVzZWQgZm9yIGNyb3NzLWNvbXBpbGluZyBhbmQgZm9yIHNhdmluZyB0aGUgY29uZmlndXJlIHNjcmlwdAorIyBmcm9tIGhhdmluZyB0byBndWVzcyBvdXIgcGxhdGZvcm0gKHNpbmNlIHdlIGtub3cgaXQgYWxyZWFkeSkKK0RFQl9IT1NUX0FSQ0gJCT89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfSE9TVF9BUkNIKQorREVCX0JVSUxEX0FSQ0gJCT89ICQoc2hlbGwgZHBrZy1hcmNoaXRlY3R1cmUgLXFERUJfQlVJTERfQVJDSCkKK0RFQl9IT1NUX09TCQk/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfT1MpCitERUJfSE9TVF9HTlVfVFlQRQk/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfR05VX1RZUEUpCitERUJfQlVJTERfR05VX1RZUEUJPz0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9CVUlMRF9HTlVfVFlQRSkKK0RFQl9IT1NUX01VTFRJQVJDSAk/PSAkKHNoZWxsIGRwa2ctYXJjaGl0ZWN0dXJlIC1xREVCX0hPU1RfTVVMVElBUkNIIDI+L2Rldi9udWxsKQorCisjIEFsbG93IGRpc3Ryby1zcGVjaWZpYyBiZWhhdmlvdXIKK0RJU1RSTyA6PSQoc2hlbGwgc2VkIC1uZSAnL0RJU1RSSUJfSUQvcy8uKj0vL3AnIC9ldGMvbHNiLXJlbGVhc2UgMj4vZGV2L251bGwgfHwgZWNobyBEZWJpYW4pCitVVElMX0xJTlVYX05HID89IHllcworCitpZmVxICgkKERFQl9CVUlMRF9HTlVfU1lTVEVNKSwgZ251KQorU0tJUF9GVVNFMkZTPXllcworZW5kaWYKKworREhfVkVSU0lPTiA6PSAkKHNoZWxsIGRwa2ctcXVlcnkgLVcgLWYgJyQke1ZlcnNpb259JyBkZWJoZWxwZXIpCisKKyMgVVNFX0RCR1NZTSA6PQorVVNFX0RCR1NZTSA/PSAkKHNoZWxsIGlmIGRwa2cgLS1jb21wYXJlLXZlcnNpb25zICQoREhfVkVSU0lPTikgIj49IiA5LjIwMTYwMTE0IDsgdGhlbiBlY2hvIHllcyA7IGZpKQorCitpZmVxICgkKFVTRV9EQkdTWU0pLHllcykKK2RoX3N0cmlwX2FyZ3MgPSAtcCQoMSkgLS1kYmdzeW0tbWlncmF0aW9uPSckKDEpLWRiZyAoPD0gMS40My0xKScKK2RoX3N0cmlwX2FyZ3MyID0gLXAkKDEpIC0tZGJnc3ltLW1pZ3JhdGlvbj0nJCgyKS1kYmcgKDw9IDEuNDMtMSknCitlbHNlCitkaF9zdHJpcF9hcmdzID0gLXAkKDEpIC0tZGJnLXBhY2thZ2U9JCgxKS1kYmcKK2RoX3N0cmlwX2FyZ3MyID0gLXAkKDEpIC0tZGJnLXBhY2thZ2U9JCgyKS1kYmcKK2VuZGlmCisjIGZpbmQgdGhlIHZlcnNpb24gZm9yIHRoZSBtYWluIHBhY2thZ2UsIGZyb20gY2hhbmdlbG9nIGZpbGUKK01BSU5fVkVSU0lPTiA9ICQoc2hlbGwgaGVhZCAtbiAxIGRlYmlhbi9jaGFuZ2Vsb2cgfCBjdXQgJy1kICcgLWYgMiB8IHNlZCAncy9bKCldLy9nJykKKyMgZmluZCB2ZXJzaW9ucyBmb3IgbGlicmFyaWVzIGdvaW5nIGludG8gdGhlaXIgb3duIHBhY2thZ2VzLCBmcm9tIHRoZWlyIE1ha2VmaWxlLmluJ3MsCisjIGFuZCBzb25hbWVzIGZvciBhbGwgbGlicworQ09NRVJSX1ZFUlNJT04gPz0gJChzaGVsbCBncmVwIEVMRl9WRVJTSU9OIGxpYi9ldC9NYWtlZmlsZS5pbiB8IGN1dCAnLWQgJyAtZjMpCitDT01FUlJfU09WRVJTSU9OID89ICQoc2hlbGwgZ3JlcCBFTEZfU09fVkVSU0lPTiBsaWIvZXQvTWFrZWZpbGUuaW4gfCBjdXQgJy1kICcgLWYzKQorU1NfVkVSU0lPTiA/PSAkKHNoZWxsIGdyZXAgRUxGX1ZFUlNJT04gbGliL3NzL01ha2VmaWxlLmluIHwgY3V0ICctZCAnIC1mMykKK1NTX1NPVkVSU0lPTiA/PSAkKHNoZWxsIGdyZXAgRUxGX1NPX1ZFUlNJT04gbGliL3NzL01ha2VmaWxlLmluIHwgY3V0ICctZCAnIC1mMykKKworaWZuZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorVVVJRF9WRVJTSU9OID89ICQoc2hlbGwgZ3JlcCBFTEZfVkVSU0lPTiBsaWIvdXVpZC9NYWtlZmlsZS5pbiB8IGN1dCAnLWQgJyAtZjMpCitVVUlEX1NPVkVSU0lPTiA/PSAkKHNoZWxsIGdyZXAgRUxGX1NPX1ZFUlNJT04gbGliL3V1aWQvTWFrZWZpbGUuaW4gfCBjdXQgJy1kICcgLWYzKQorCitCTEtJRF9WRVJTSU9OID89ICQoc2hlbGwgZ3JlcCBFTEZfVkVSU0lPTiBsaWIvYmxraWQvTWFrZWZpbGUuaW4gfCBjdXQgJy1kICcgLWYzKQorQkxLSURfU09WRVJTSU9OID89ICQoc2hlbGwgZ3JlcCBFTEZfU09fVkVSU0lPTiBsaWIvYmxraWQvTWFrZWZpbGUuaW4gfCBjdXQgJy1kICcgLWYzKQorZW5kaWYKKworRVhUMkZTX1NPVkVSU0lPTiA/PSAkKHNoZWxsIGdyZXAgRUxGX1NPX1ZFUlNJT04gbGliL2V4dDJmcy9NYWtlZmlsZS5pbiB8IGN1dCAnLWQgJyAtZjMpCitFMlBfU09WRVJTSU9OID89ICQoc2hlbGwgZ3JlcCBFTEZfU09fVkVSU0lPTiBsaWIvZTJwL01ha2VmaWxlLmluIHwgY3V0ICctZCAnIC1mMykKKworcGFja2FnZQkJPz0gZTJmc3Byb2dzCisKK3RvcGRpcgkJPz0gJChzaGVsbCBwd2QpCitkZWJkaXIJCT89ICR7dG9wZGlyfS9kZWJpYW4KK3RtcGRpcgkJPz0gJHtkZWJkaXJ9L3RtcAordWRlYmRpcgkJPz0gJHtkZWJkaXJ9L2UyZnNwcm9ncy11ZGViCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCitibGtpZHVkZWJkaXIJPz0gJHtkZWJkaXJ9L2xpYmJsa2lkMS11ZGViCit1dWlkdWRlYmRpcgk/PSAke2RlYmRpcn0vbGlidXVpZDEtdWRlYgorZW5kaWYKK2xpYmNvbWVycmRpcgk/PSAke2RlYmRpcn0vbGliY29tZXJyJHtDT01FUlJfU09WRVJTSU9OfQorY29tZXJyZGV2ZGlyCT89ICR7ZGViZGlyfS9jb21lcnItZGV2CitsaWJjb21lcnJkYmdkaXIJPz0gJHtkZWJkaXJ9L2xpYmNvbWVycjItZGJnCitsaWJzc2Rpcgk/PSAke2RlYmRpcn0vbGlic3Mke1NTX1NPVkVSU0lPTn0KK3NzZGV2ZGlyCT89ICR7ZGViZGlyfS9zcy1kZXYKK2xpYnNzZGJnZGlyCT89ICR7ZGViZGlyfS9saWJzczItZGJnCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCitsaWJibGtpZGRpcgk/PSAke2RlYmRpcn0vbGliYmxraWQke0JMS0lEX1NPVkVSU0lPTn0KK2xpYmJsa2lkZGV2ZGlyCT89ICR7ZGViZGlyfS9saWJibGtpZC1kZXYKK2xpYmJsa2lkZGJnZGlyCT89ICR7ZGViZGlyfS9saWJibGtpZDEtZGJnCitsaWJ1dWlkZGlyCT89ICR7ZGViZGlyfS9saWJ1dWlkJHtVVUlEX1NPVkVSU0lPTn0KK3V1aWRkZXZkaXIJPz0gJHtkZWJkaXJ9L3V1aWQtZGV2CitsaWJ1dWlkZGJnZGlyCT89ICR7ZGViZGlyfS9saWJ1dWlkMS1kYmcKK3V1aWRydW50aW1lZGlyCT89ICR7ZGViZGlyfS91dWlkLXJ1bnRpbWUKK3V1aWRydW50aW1lZGJnZGlyID89ICR7ZGViZGlyfS91dWlkLXJ1bnRpbWUtZGJnCitlbmRpZgorbGliZXh0MmRpcgk/PSAke2RlYmRpcn0vZTJmc2xpYnMKK2xpYmV4dDJkZXZkaXIJPz0gJHtkZWJkaXJ9L2UyZnNsaWJzLWRldgorbGliZXh0MmRiZ2Rpcgk/PSAke2RlYmRpcn0vZTJmc2xpYnMtZGJnCittYWluZGlyCQk/PSAke2RlYmRpcn0vZTJmc3Byb2dzCitlMmZzY2tzdGF0aWNkaXIJPz0gJHtkZWJkaXJ9L2UyZnNjay1zdGF0aWMKK2RlYnVnZGlyCT89ICR7ZGViZGlyfS9lMmZzcHJvZ3MtZGJnCitzdGRidWlsZGRpcgk/PSAke2RlYmRpcn0vQlVJTEQtU1RECittaXBzYnVpbGRkaXIJPz0gJHtkZWJkaXJ9L0JVSUxELU1JUFMKK21pcHNidWlsZGRpcjY0CT89ICR7ZGViZGlyfS9CVUlMRC1NSVBTLTY0CisjIGRvY2Rpcgk/PSAke21haW5kaXJ9L3Vzci9zaGFyZS9kb2MvJHtwYWNrYWdlfQorTUFORElSCQk/PSAvdXNyL3NoYXJlL21hbgorbWFuZGlyCQk/PSAke3RtcGRpcn0ke01BTkRJUn0KKworVURFQl9OQU1FIAk/PSAkKHBhY2thZ2UpLXVkZWJfJChNQUlOX1ZFUlNJT04pXyQoREVCX0hPU1RfQVJDSCkudWRlYgorVURFQl9QUklPUklUWQk/PSAkKHNoZWxsIGdyZXAgJ15QYWNrYWdlOiBlMmZzcHJvZ3MtdWRlYicgZGViaWFuL2NvbnRyb2wuaW4gLUEgMTAgfCBncmVwIF5Qcmlvcml0eTogfCBjdXQgLWQgJyAnIC1mIDIpCisKK2lmbmVxICgkKFVUSUxfTElOVVhfTkcpLHllcykKK0JMS0lEX1VERUJfTkFNRSA/PSBsaWJibGtpZDEtdWRlYl8kKE1BSU5fVkVSU0lPTilfJChERUJfSE9TVF9BUkNIKS51ZGViCitCTEtJRF9VREVCX1BSSU9SSVRZID89ICQoc2hlbGwgZ3JlcCAnXlBhY2thZ2U6IGxpYmJsa2lkMS11ZGViJyBkZWJpYW4vY29udHJvbC5pbiAtQSAxMCB8IGdyZXAgXlByaW9yaXR5OiB8IGN1dCAtZCAnICcgLWYgMikKKworVVVJRF9VREVCX05BTUUgPz0gbGlidXVpZDEtdWRlYl8kKE1BSU5fVkVSU0lPTilfJChERUJfSE9TVF9BUkNIKS51ZGViCitVVUlEX1VERUJfUFJJT1JJVFkgPz0gJChzaGVsbCBncmVwICdeUGFja2FnZTogbGlidXVpZDEtdWRlYicgZGViaWFuL2NvbnRyb2wuaW4gLUEgMTAgfCBncmVwIF5Qcmlvcml0eTogfCBjdXQgLWQgJyAnIC1mIDIpCitlbmRpZgorCitTVEFNUFNESVIJPz0gZGViaWFuL3N0YW1wZGlyCitDRkdTVERTVEFNUAk/PSAke1NUQU1QU0RJUn0vY29uZmlndXJlLXN0ZC1zdGFtcAorQ0ZHQkZTVEFNUAk/PSAke1NUQU1QU0RJUn0vY29uZmlndXJlLWJmLXN0YW1wCitCVUlMRFNURFNUQU1QCT89ICR7U1RBTVBTRElSfS9idWlsZC1zdGQtc3RhbXAKK0JVSUxEQkZTVEFNUAk/PSAke1NUQU1QU0RJUn0vYnVpbGQtYmYtc3RhbXAKKworSU5TVEFMTCA/PSBpbnN0YWxsCitJTlNUQUxMX1BST0dSQU0gPz0gJChJTlNUQUxMKSAtcCAtbyByb290IC1nIHJvb3QgLW0gMDc1NQorCisjaWZlcSAoLCQoZmluZHN0cmluZyBub3N0cmlwLCQoREVCX0JVSUxEX09QVElPTlMpKSkKKyNJTlNUQUxMX1BST0dSQU0gKz0gLXMKKyNlbmRpZgorCitpZm5lcSAoLCQoZmluZHN0cmluZyB1cGRhdGUtc3ltYm9scywkKERFQl9CVUlMRF9PUFRJT05TKSkpCitTWU1CT0xfTElCUyA6PSBlMmZzbGlicyBsaWJjb21lcnIyIGxpYnNzMgoraWZuZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorU1lNQk9MX0xJQlMgKz0gbGliYmxraWQxIGxpYnV1aWQxCitlbmRpZgorZW5kaWYKKworREVGQVVMVF9DRkxBR1MgPz0gLWcgLU8yCitERUZBVUxUX0xERkxBR1MgPz0gLVdsLC1Cc3ltYm9saWMtZnVuY3Rpb25zCisKK0NGTEFHUyA/PSAkKHNoZWxsIGlmIGRwa2ctYnVpbGRmbGFncyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCisJREVCX0JVSUxEX01BSU5UX09QVElPTlM9JChERUJfQlVJTERfTUFJTlRfT1BUSU9OUykgXAorCWRwa2ctYnVpbGRmbGFncyAtLWdldCBDRkxBR1M7IGVsc2UgZWNobyAkKERFRkFVTFRfQ0ZMQUdTKSA7IGZpKQorTERGTEFHUyA/PSAkKHNoZWxsIGlmIGRwa2ctYnVpbGRmbGFncyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCisJREVCX0JVSUxEX01BSU5UX09QVElPTlM9JChERUJfQlVJTERfTUFJTlRfT1BUSU9OUykgXAorCWRwa2ctYnVpbGRmbGFncyAtLWdldCBMREZMQUdTOyBlbHNlIGVjaG8gJChERUZBVUxUX0xERkxBR1MpIDsgZmkpCitDUFBGTEFHUyA/PSAkKHNoZWxsIGlmIGRwa2ctYnVpbGRmbGFncyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCisJREVCX0JVSUxEX01BSU5UX09QVElPTlM9JChERUJfQlVJTERfTUFJTlRfT1BUSU9OUykgXAorCWRwa2ctYnVpbGRmbGFncyAtLWdldCBDUFBGTEFHUzsgZmkpCisKK2lmZXEgKCR7REVCX0hPU1RfQVJDSH0sYWxwaGEpCitDRkxBR1MgKz0gLURIQVZFX05FVElORVRfSU5fSAorZWxzZQorQ0ZMQUdTICs9IC1EX19OT19TVFJJTkdfSU5MSU5FUworZW5kaWYKKworRTJGU0NLX1NUQVRJQyA9ICR7c3RkYnVpbGRkaXJ9L2UyZnNjay9lMmZzY2suc3RhdGljCisKK0NGTEFHU19TSExJQiA9ICQoQ0ZMQUdTKQorQ0ZMQUdTX1NUTElCID0gJChDRkxBR1MpCitMREZMQUdTX1NITElCID0gJChMREZMQUdTKQorTERGTEFHU19TVEFUSUMgPSAkKGZpbHRlci1vdXQgLWZQSUUgLWZwaWUgLXBpZSwkKExERkxBR1MpKQorCitpZm5lcSAoJChTS0lQX1VERUIpLCkKK1NLSVBfQkYgPz0geWVzCitlbmRpZgorCitpZmVxICgkKFNLSVBfQkYpLHllcykKK0JVSUxEX0JGID0KK2JmYnVpbGRkaXIJPz0gJHtzdGRidWlsZGRpcn0KK2Vsc2UKK0JVSUxEX0JGID0gYnVpbGQtYmYKK2JmYnVpbGRkaXIJPz0gJHtkZWJkaXJ9L0JVSUxELUJGCitlbmRpZgorCitCRl9DRkxBR1MgPSAtT3MgLWZvbWl0LWZyYW1lLXBvaW50ZXIKKworaWZlcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCitVVElMX0NPTkZfRkxBR1MgPz0gLS1kaXNhYmxlLWZzY2sgLS1kaXNhYmxlLWxpYmJsa2lkIFwKKwkJCS0tZGlzYWJsZS1saWJ1dWlkIC0tZGlzYWJsZS11dWlkZAorZWxzZQorVVRJTF9DT05GX0ZMQUdTID89IC0tZW5hYmxlLWZzY2sgLS1lbmFibGUtbGliYmxraWQgXAorCQkJLS1lbmFibGUtbGlidXVpZCAtLWVuYWJsZS11dWlkZAorZW5kaWYKKworaWZuZXEgKCQoU0tJUF9GVVNFMkZTKSwpCitVVElMX0NPTkZfRkxBR1MgKz0gIC0tZGlzYWJsZS1mdXNlMmZzCitlbmRpZgorCitpZm5lcSAoJChzdHJpcCAkKERFQl9IT1NUX01VTFRJQVJDSCkpLCkKK01VTFRJQVJDSF9DT05GID89IC0td2l0aC1tdWx0aWFyY2g9JChERUJfSE9TVF9NVUxUSUFSQ0gpCisjIFRoaXMgZG9lc24ndCB3b3JrIHlldCBiZWNhdXNlIGdkYiBhbmQgbGludGlhbiBkb24ndCBleHBlY3QgYW5kL29yCisjIGRvbid0IHdvcmsgd2l0aCAvdXNyL2xpYi88dHJpcGxldD4vZGVidWcKKyNVU1JMSUIgPSAvdXNyL2xpYi8kKERFQl9IT1NUX01VTFRJQVJDSCkKK1VTUkxJQiA/PSAvdXNyL2xpYgorZWxzZQorVVNSTElCID89IC91c3IvbGliCitlbmRpZgorCitCQUNLVFJBQ0VfQ09ORl9GTEFHUyA/PSAkKHNoZWxsIGlmICR7ZGViZGlyfS9zY3JpcHRzL3Rlc3QtYmFja3RyYWNlIDsgdGhlbiBlY2hvIC0tZGlzYWJsZS1iYWNrdHJhY2UgOyBmaSkKKworQ09NTU9OX0NPTkZfRkxBR1MgPSAtLWRpc2FibGUtZTJpbml0cmQtaGVscGVyIC0tZW5hYmxlLXF1b3RhIFwKKwktLWluZm9kaXI9L3Vzci9zaGFyZS9pbmZvICAtLWVuYWJsZS1zeW1saW5rLWluc3RhbGwgXAorCSQoTVVMVElBUkNIX0NPTkYpICQoQkFDS1RSQUNFX0NPTkZfRkxBR1MpICQoVVRJTF9DT05GX0ZMQUdTKQorCitTVERfQ09ORl9GTEFHUyA/PSAtLWVuYWJsZS1lbGYtc2hsaWJzCisKK0JGX0NPTkZfRkxBR1MgPz0gLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbmxzIC0tZGlzYWJsZS1pbWFnZXIgXAorCS0tZGlzYWJsZS10ZXN0aW8tZGVidWcgLS1kaXNhYmxlLXV1aWRkIC0tZGlzYWJsZS10bHMgXAorCS0tZGlzYWJsZS10ZGIgLS1kaXNhYmxlLWRlYnVnZnMKKworTUlQU19OT1BJQ19DT05GX0ZMQUdTID89IC0tZGlzYWJsZS1ubHMgLS1kaXNhYmxlLWltYWdlciBcCisJLS1kaXNhYmxlLXV1aWRkIC0tZGlzYWJsZS10bHMgXAorICAgICAgICAtLWRpc2FibGUtcmVzaXplciAjIC0tZGlzYWJsZS1kZWJ1Z2ZzCisKKyMgd2UgY2FuJ3QgdXNlIHRob3NlIGZsYWdzIGF0IGNvbmZpZ3VyZSB0aW1lCitNSVBTX0NGTEFHUyA/PSAtRyAwIC1mbm8tcGljIC1tbm8tYWJpY2FsbHMKK01JUFNfQ0ZMQUdTXzY0ID89IC1tYWJpPTY0IC1HIDAgLWZuby1waWMgLW1uby1hYmljYWxscworCitpZmVxICgkKERFQl9CVUlMRF9BUkNIKSwkKERFQl9IT1NUX0FSQ0gpKQoraWZuZXEgKCwkKGZpbmRzdHJpbmcgJChERUJfQlVJTERfQVJDSCksbWlwcyBtaXBzZWwpKQoraXNtaXBzPWlzbWlwcworZW5kaWYKK2VuZGlmCisKK000X0FSR1M9CitEQkdfUEFDS0FHRVM9CisKK2lmZXEgKCQoVVNFX0RCR1NZTSkseWVzKQorTTRfQVJHUys9LURVU0VfREJHU1lNCitlbHNlCitEQkdfUEFDS0FHRVMgKz0gLXBlMmZzcHJvZ3MtZGJnIC1wZTJmc2xpYnMtZGJnIC1wbGliY29tZXJyMi1kYmcgLXBsaWJzczItZGJnCitNNF9BUkdTKz0tVVVTRV9EQkdTWU0KK2VuZGlmCisKK2lmZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorTTRfQVJHUys9LURVVElMX0xJTlVYX05HCitlbHNlCitEQkdfUEFDS0FHRVMgKz0gLXB1dWlkLXJ1bnRpbWUtZGJnIC1wbGlidXVpZDEtZGJnIC1wbGliYmxraWQxLWRiZworTTRfQVJHUys9LVVVVElMX0xJTlVYX05HCitlbmRpZgorCitpZm5lcSAoJChzdHJpcCAkKERFQl9IT1NUX01VTFRJQVJDSCkpLCkKK000X0FSR1MrPS1ERE9fTVVMVElBUkNICitlbHNlCitNNF9BUkdTKz0tVURPX01VTFRJQVJDSAorZW5kaWYKKworaWZuZXEgKCQoQlVJTERfRTJGU0NLX1NUQVRJQyksbm8pCitNNF9BUkdTKz0tREUyRlNDS19TVEFUSUMKK2Vsc2UKK000X0FSR1MrPS1VRTJGU0NLX1NUQVRJQworZW5kaWYKKworaWZlcSAoJChTS0lQX1VERUIpLCkKK0lOU1RBTExfVURFQiA9IGluc3RhbGwtdWRlYgorTTRfQVJHUys9LURVREVCX1BLR1MKK2Vsc2UKK000X0FSR1MrPS1VVURFQl9QS0dTCitlbmRpZgorCitpZmVxICgkKFNLSVBfRlVTRTJGUyksKQorTTRfQVJHUys9LURGVVNFMkZTCitlbHNlCitNNF9BUkdTKz0tVUZVU0UyRlMKK2VuZGlmCisKK0ZJTEVTX0ZJWFVQPSBsaWJjb21lcnIyLmZpbGVzIGNvbWVyci1kZXYuZmlsZXMgbGlic3MyLmZpbGVzIHNzLWRldi5maWxlcyBcCisJbGlidXVpZDEuZmlsZXMgdXVpZC1kZXYuZmlsZXMgbGliYmxraWQxLmZpbGVzIGxpYmJsa2lkLWRldi5maWxlcyBcCisJZTJmc2xpYnMuZmlsZXMgZTJmc2xpYnMtZGV2LmZpbGVzCisKK2RlYmlhbi1maWxlczogZGViaWFuL2NvbnRyb2wgZGViaWFuL2UyZnNwcm9ncy5zaGxpYnMubG9jYWwKK2lmZXEgKCQoc3RyaXAgJChERUJfSE9TVF9NVUxUSUFSQ0gpKSwpCisJZm9yIGkgaW4gJChGSUxFU19GSVhVUCk7IGRvIFwKKwkJc2VkIC1lICdzO2xpYi9cKi87bGliLzsnIGRlYmlhbi8kJGkuaW4gPiBkZWJpYW4vJCRpOyBcCisJZG9uZQorZWxzZQorCWZvciBpIGluICQoRklMRVNfRklYVVApOyBkbyBjcCBkZWJpYW4vJCRpLmluIGRlYmlhbi8kJGk7IGRvbmUKK2VuZGlmCisKK21ycHJvcGVyOiBjbGVhbgorCXJtIGRlYmlhbi9jb250cm9sIGRlYmlhbi9lMmZzcHJvZ3Muc2hsaWJzLmxvY2FsCisKK2RlYmlhbi9jb250cm9sOiBkZWJpYW4vY29udHJvbC5pbiBkZWJpYW4vcnVsZXMKKwltNCAkKE00X0FSR1MpIDwgZGViaWFuL2NvbnRyb2wuaW4gfCBncmVwIC12IF5SRU1PVkVfTUUkJCA+ICRACisKK2RlYmlhbi9lMmZzcHJvZ3Muc2hsaWJzLmxvY2FsOiBkZWJpYW4vZTJmc3Byb2dzLnNobGlicy5sb2NhbC5pbgorCW00ICQoTTRfQVJHUykgPCBkZWJpYW4vZTJmc3Byb2dzLnNobGlicy5sb2NhbC5pbiA+ICRACisKKyR7Q0ZHU1REU1RBTVB9OgorCWRoX3Rlc3RkaXIKKworCSMgTWFrZSBzdXJlIHdlIGRvbid0IHRyeSB0byByZWJ1aWxkIHRoZSBjb25maWd1cmUgc2NyaXB0cworCWZpbmQgLiAtbmFtZSBjb25maWd1cmUgfCB4YXJncyB0b3VjaAorCisJbWtkaXIgLXAgJHtzdGRidWlsZGRpcn0KK2lmZXEgKCQoREVCX0JVSUxEX0FSQ0gpLCQoREVCX0hPU1RfQVJDSCkpCisJY2QgJHtzdGRidWlsZGRpcn0gJiYgQVdLPS91c3IvYmluL2F3ayBcCisJCS4uLy4uL2NvbmZpZ3VyZSAke0NPTU1PTl9DT05GX0ZMQUdTfSAke1NURF9DT05GX0ZMQUdTfSBcCisJCSR7RVhUUkFfQ09ORl9GTEFHU30gQ0ZMQUdTPSIke0NGTEFHU30iIENQUEZMQUdTPSIkKENQUEZMQUdTKSIgXAorCQlMREZMQUdTPSIkKExERkxBR1MpIiBDRkxBR1NfU0hMSUI9IiQoQ0ZMQUdTX1NITElCKSIgXAorCQlDRkxBR1NfU1RMSUI9IiQoQ0ZMQUdTX1NUTElCKSIgXAorCQlMREZMQUdTX1NITElCPSIkKExERkxBR1NfU0hMSUIpIiBcCisJCUxERkxBR1NfU1RBVElDPSIkKExERkxBR1NfU1RBVElDKSIKK2Vsc2UKKwljZCAke3N0ZGJ1aWxkZGlyfSAmJiBBV0s9L3Vzci9iaW4vYXdrIENDPSIke0RFQl9IT1NUX0dOVV9UWVBFfS1nY2MiIFwKKwkJLi4vLi4vY29uZmlndXJlICR7Q09NTU9OX0NPTkZfRkxBR1N9ICR7U1REX0NPTkZfRkxBR1N9IFwKKwkJJHtFWFRSQV9DT05GX0ZMQUdTfSAtLWJ1aWxkPSQoREVCX0JVSUxEX0dOVV9UWVBFKSBcCisJCS0taG9zdD0kKERFQl9IT1NUX0dOVV9UWVBFKSBDRkxBR1M9IiR7Q0ZMQUdTfSIgXAorCQlDUFBGTEFHUz0iJChDUFBGTEFHUykiIENGTEFHU19TSExJQj0iJChDRkxBR1NfU0hMSUIpIiBcCisJCUNGTEFHU19TVExJQj0iJChDRkxBR1NfU1RMSUIpIiBcCisJCUxERkxBR1M9IiQoTERGTEFHUykiIFwKKwkJTERGTEFHU19TSExJQj0iJChMREZMQUdTX1NITElCKSIgXAorCQlMREZMQUdTX1NUQVRJQz0iJChMREZMQUdTX1NUQVRJQykiCitlbmRpZgorCisgICMgc3BlY2lhbGx5LWJ1aWx0IE1JUFMgbGlicworaWZuZXEgKCQoaXNtaXBzKSwpCisJbWtkaXIgLXAgJHttaXBzYnVpbGRkaXJ9ICR7bWlwc2J1aWxkZGlyNjR9CisJY2QgJHttaXBzYnVpbGRkaXJ9ICYmIEFXSz0vdXNyL2Jpbi9hd2sgXAorCQkuLi8uLi9jb25maWd1cmUgJHtDT01NT05fQ09ORl9GTEFHU30gXAorCQkke01JUFNfTk9QSUNfQ09ORl9GTEFHU30gQ0ZMQUdTPSIke0NGTEFHU30iIFwKKwkJQ1BQRkxBR1M9IiQoQ1BQRkxBR1MpIiBMREZMQUdTPSIkKExERkxBR1MpIiBcCisJCUNGTEFHU19TSExJQj0iJChDRkxBR1NfU0hMSUIpIiBcCisJCUNGTEFHU19TVExJQj0iJChDRkxBR1NfU1RMSUIpIiBcCisJCUxERkxBR1NfU0hMSUI9IiQoTERGTEFHU19TSExJQikiIFwKKwkJTERGTEFHU19TVEFUSUM9IiQoTERGTEFHU19TVEFUSUMpIgorCWNkICR7bWlwc2J1aWxkZGlyNjR9ICYmIEFXSz0vdXNyL2Jpbi9hd2sgXAorCQkuLi8uLi9jb25maWd1cmUgJHtDT01NT05fQ09ORl9GTEFHU30gXAorCQkke01JUFNfTk9QSUNfQ09ORl9GTEFHU30gQ0ZMQUdTPSIke0NGTEFHU30iIFwKKwkJQ1BQRkxBR1M9IiQoQ1BQRkxBR1MpIiBMREZMQUdTPSIkKExERkxBR1MpIiBcCisJCUNGTEFHU19TSExJQj0iJChDRkxBR1NfU0hMSUIpIiBcCisJCUNGTEFHU19TVExJQj0iJChDRkxBR1NfU1RMSUIpIiBcCisJCUxERkxBR1NfU0hMSUI9IiQoTERGTEFHU19TSExJQikiIFwKKwkJTERGTEFHU19TVEFUSUM9IiQoTERGTEFHU19TVEFUSUMpIgorZW5kaWYKKworCW1rZGlyIC1wICR7U1RBTVBTRElSfQorCXRvdWNoICR7Q0ZHU1REU1RBTVB9CisKKyR7Q0ZHQkZTVEFNUH06CisJZGhfdGVzdGRpcgorCXJtIC1mIGNvbmZpZy5jYWNoZQorCisJbWtkaXIgLXAgJHtiZmJ1aWxkZGlyfQoraWZlcSAoJChERUJfQlVJTERfQVJDSCksJChERUJfSE9TVF9BUkNIKSkKKwljZCAke2JmYnVpbGRkaXJ9ICYmIEFXSz0vdXNyL2Jpbi9hd2sgXAorCQkuLi8uLi9jb25maWd1cmUgJHtDT01NT05fQ09ORl9GTEFHU30gJHtCRl9DT05GX0ZMQUdTfSBcCisJCSR7RVhUUkFfQ09ORl9GTEFHU30gQ0ZMQUdTPSIke0NGTEFHU30gJHtCRl9DRkxBR1N9IiBcCisJCUNQUEZMQUdTPSIkKENQUEZMQUdTKSIgTERGTEFHUz0iJChMREZMQUdTKSIgXAorCQlDRkxBR1NfU0hMSUI9IiQoQ0ZMQUdTX1NITElCKSIgXAorCQlDRkxBR1NfU1RMSUI9IiQoQ0ZMQUdTX1NUTElCKSIgXAorCQlMREZMQUdTX1NITElCPSIkKExERkxBR1NfU0hMSUIpIiBcCisJCUxERkxBR1NfU1RBVElDPSIkKExERkxBR1NfU1RBVElDKSIKK2Vsc2UKKwljZCAke2JmYnVpbGRkaXJ9ICYmIEFXSz0vdXNyL2Jpbi9hd2sgQ0M9IiR7REVCX0hPU1RfR05VX1RZUEV9LWdjYyIgXAorCQkuLi8uLi9jb25maWd1cmUgJHtDT01NT05fQ09ORl9GTEFHU30gJHtCRl9DT05GX0ZMQUdTfSBcCisJCSR7RVhUUkFfQ09ORl9GTEFHU30gLS1idWlsZD0kKERFQl9CVUlMRF9HTlVfVFlQRSkgXAorCQktLWhvc3Q9JChERUJfSE9TVF9HTlVfVFlQRSkgQ0ZMQUdTPSIke0NGTEFHU30iIFwKKwkJQ1BQRkxBR1M9IiQoQ1BQRkxBR1MpIiBMREZMQUdTPSIkKExERkxBR1MpIiBcCisJCUNGTEFHU19TSExJQj0iJChDRkxBR1NfU0hMSUIpIiBcCisJCUNGTEFHU19TVExJQj0iJChDRkxBR1NfU1RMSUIpIiBcCisJCUxERkxBR1NfU0hMSUI9IiQoTERGTEFHU19TSExJQikiIFwKKwkJTERGTEFHU19TVEFUSUM9IiQoTERGTEFHU19TVEFUSUMpIgorZW5kaWYKKwlta2RpciAtcCAke1NUQU1QU0RJUn0KKwl0b3VjaCAke0NGR0JGU1RBTVB9CisKK2J1aWxkLWFyY2g6IGJ1aWxkCitidWlsZC1pbmRlcDogYnVpbGQKK2J1aWxkOiBidWlsZC1zdGQgJChCVUlMRF9CRikKKworYnVpbGQtc3RkOiAke0JVSUxEU1REU1RBTVB9Ciske0JVSUxEU1REU1RBTVB9OiAke0NGR1NURFNUQU1QfQorCWRoX3Rlc3RkaXIKKwlpZiB3aGljaCBkaF91cGRhdGVfYXV0b3Rvb2xzX2NvbmZpZyA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbiBcCisJCWRoX3VwZGF0ZV9hdXRvdG9vbHNfY29uZmlnIDtcCisJZmkKKwkkKE1BS0UpIC1DICR7c3RkYnVpbGRkaXJ9IFY9MSBhbGwKK2lmbmVxICgkKEJVSUxEX0UyRlNDS19TVEFUSUMpLG5vKQorCSQoTUFLRSkgLUMgJHtzdGRidWlsZGRpcn0vZTJmc2NrIFY9MSBlMmZzY2suc3RhdGljCitlbmRpZgorCWlmICEgdGVzdCAtZCBkZWJpYW4vb3JpZy1nbW8gOyB0aGVuIFwKKwkJbWtkaXIgZGViaWFuL29yaWctZ21vIDsgXAorCQltdiBwby8qLmdtbyBwby8qLnBvIGRlYmlhbi9vcmlnLWdtbyA7IFwKKwkJY3AgZGViaWFuL29yaWctZ21vLyoucG8gcG8gOyBcCisJZmkKKwkkKE1BS0UpIC1DICR7c3RkYnVpbGRkaXJ9L3BvIFY9MSB1cGRhdGUtZ21vCisKKwkoIGNkICR7c3RkYnVpbGRkaXJ9L2RvYyAmJiAkKE1BS0UpIFY9MSBsaWJleHQyZnMuaHRtbCApCisJKCBjZCAke3N0ZGJ1aWxkZGlyfS9saWIvZXQgJiYgJChNQUtFKSBWPTEgY29tX2Vyci5pbmZvIGNvbV9lcnIuaHRtbCApCisKKyAgIyBzcGVjaWFsbHktYnVpbHQgTUlQUyBsaWJzCitpZm5lcSAoJChpc21pcHMpLCkKKwkkKE1BS0UpIC1DICR7bWlwc2J1aWxkZGlyfS91dGlsIFY9MQorCSQoTUFLRSkgLUMgJHttaXBzYnVpbGRkaXJ9IFY9MSBcCisJCUNGTEFHUz0iJHtDRkxBR1N9ICR7TUlQU19DRkxBR1N9IiBcCisJCUxJQl9TVUJESVJTPSJsaWIvZXQgbGliL2V4dDJmcyIgbGlicworCSQoTUFLRSkgLUMgJHttaXBzYnVpbGRkaXI2NH0vdXRpbCBWPTEKKwkkKE1BS0UpIC1DICR7bWlwc2J1aWxkZGlyNjR9IFY9MSBcCisJCUNGTEFHUz0iJHtDRkxBR1N9ICR7TUlQU19DRkxBR1NfNjR9IiBcCisJCUxJQl9TVUJESVJTPSJsaWIvZXQgbGliL2V4dDJmcyIgbGlicworZW5kaWYKKworCXRvdWNoICR7QlVJTERTVERTVEFNUH0KKworYnVpbGQtYmY6ICR7QlVJTERCRlNUQU1QfQorJHtCVUlMREJGU1RBTVB9OiAke0NGR0JGU1RBTVB9CisJZGhfdGVzdGRpcgorCSQoTUFLRSkgLUMgJHtiZmJ1aWxkZGlyfSBWPTEgbGlicworCSQoTUFLRSkgLUMgJHtiZmJ1aWxkZGlyfS9lMmZzY2sgVj0xIGFsbAorCSQoTUFLRSkgLUMgJHtiZmJ1aWxkZGlyfS9taXNjIFY9MSBhbGwKKwkkKE1BS0UpIC1DICR7YmZidWlsZGRpcn0vcmVzaXplIFY9MSBhbGwKKwl0b3VjaCAke0JVSUxEQkZTVEFNUH0KKworY2xlYW46CisJZGhfdGVzdGRpcgorCWlmIHRlc3QgLWQgZGViaWFuL29yaWctZ21vIDsgdGhlbiBcCisJCXJtIC1mIHBvLyouZ21vIHBvLyoucG8gOyBcCisJCW12IGRlYmlhbi9vcmlnLWdtby8qIHBvIDsgXAorCQlybWRpciBkZWJpYW4vb3JpZy1nbW8gOyBcCisJZmkKKwlybSAtcmYgJHtTVEFNUFNESVJ9CisJWyAhIC1mICR7c3RkYnVpbGRkaXJ9L01ha2VmaWxlIF0gfHwgJChNQUtFKSAtQyAke3N0ZGJ1aWxkZGlyfSBWPTEgZGlzdGNsZWFuCisJWyAhIC1mICR7YmZidWlsZGRpcn0vTWFrZWZpbGUgXSB8fCAkKE1BS0UpIC1DICR7YmZidWlsZGRpcn0gVj0xIGRpc3RjbGVhbgorCVsgISAtZiAke3N0YXRpY2J1aWxkZGlyfS9NYWtlZmlsZSBdIHx8ICQoTUFLRSkgLUMgJHtzdGF0aWNidWlsZGRpcn0gVj0xIGRpc3RjbGVhbgorCXJtIC1yZiAke3N0ZGJ1aWxkZGlyfSAke2JmYnVpbGRkaXJ9ICR7c3RhdGljYnVpbGRkaXJ9ICR7bWlwc2J1aWxkZGlyfSAke21pcHNidWlsZGRpcjY0fQorCXJtIC1mIGRlYmlhbi8qLnN1YnN0dmFycworCWRoX2NsZWFuCisKK2luc3RhbGw6IGNsZWFudXAgaW5zdGFsbC1zdGQKKworIyBUaGlzIHJ1bGUgYWxsb3dzIHRvIGZhY3Rvcml6ZSB0aGUgZGhfY2xlYW4gYmV0d2VlbiB0aGUgMiBpbnN0YWxsIHJ1bGVzCisjIFRoaXMgbXVzdCBiZSBsYXVuY2hlZCBiZWZvcmUgaW5zdGFsbC0qIChpZiBsYXVuY2hpbmcgdGhlbSBieSBoYW5kLCBmb3IKKyMgZXhlbXBsZSkgb3IgcmVzdWx0cyBhcmUgdW5wcmVkaWN0YWJsZQorY2xlYW51cDoKKwlkaF90ZXN0ZGlyCisJZGhfdGVzdHJvb3QKKwlkaF9wcmVwCisKK2luc3RhbGwtc3RkOiBESF9PUFRJT05TPQoraW5zdGFsbC1zdGQ6IGJ1aWxkCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisJZGhfaW5zdGFsbGRpcnMKKworCW1rZGlyIC1wICR7dG1wZGlyfS9zYmluCisJJChNQUtFKSAtQyAke3N0ZGJ1aWxkZGlyfSBWPTEgaW5zdGFsbCBERVNURElSPSR7dG1wZGlyfSBcCisJCUlOU1RBTExfUFJPR1JBTT0iJHtJTlNUQUxMX1BST0dSQU19IiBMRENPTkZJRz10cnVlCisgICMgc3RhdGljIGxpYnMgYW5kIC5oIGZpbGVzCisJJChNQUtFKSAtQyAke3N0ZGJ1aWxkZGlyfSBWPTEgaW5zdGFsbC1saWJzIERFU1RESVI9JHt0bXBkaXJ9IExEQ09ORklHPXRydWUKKworaWZuZXEgKCQoQlVJTERfRTJGU0NLX1NUQVRJQyksbm8pCisgICMgc3RhdGljYWxseS1saW5rZWQgZnNjaworCSR7SU5TVEFMTF9QUk9HUkFNfSAkKEUyRlNDS19TVEFUSUMpICR7dG1wZGlyfS9zYmluCisJY3AgJHttYW5kaXJ9L21hbjgvZTJmc2NrLjggJHttYW5kaXJ9L21hbjgvZTJmc2NrLnN0YXRpYy44CitlbmRpZgorCitpZmVxICgkKERFQl9CVUlMRF9HTlVfU1lTVEVNKSwgZ251KSAKKwkke0lOU1RBTEx9IC1tIDA2NDQgbWlzYy9ta2UyZnMtaHVyZC5jb25mICR7dG1wZGlyfS9ldGMvbWtlMmZzLmNvbmYKK2VuZGlmCisKKwlkaF9tb3ZlZmlsZXMKKwl0ZXN0IC16ICJgZmluZCAke3RtcGRpcn0gLXR5cGUgZmAiCisKKyAgIyBzcGVjaWFsbHktYnVpbHQgTUlQUyBsaWJzCitpZm5lcSAoJChpc21pcHMpLCkKKwkkKElOU1RBTEwpIC1wIC1tIDA2NDQgJHttaXBzYnVpbGRkaXJ9L2xpYi9saWJleHQyZnMuYSBcCisJCSR7ZGViZGlyfS9lMmZzbGlicy1kZXYvdXNyL2xpYi9saWJleHQyZnMtbm9waWMuYQorCSQoSU5TVEFMTCkgLXAgLW0gMDY0NCAke21pcHNidWlsZGRpcjY0fS9saWIvbGliZXh0MmZzLmEgXAorCQkke2RlYmRpcn0vZTJmc2xpYnMtZGV2L3Vzci9saWIvbGliNjRleHQyZnMtbm9waWMuYQorZW5kaWYKKworaW5zdGFsbC11ZGViOiBESF9PUFRJT05TPQoraW5zdGFsbC11ZGViOiBidWlsZAorCWRoX3Rlc3RkaXIKKwlkaF90ZXN0cm9vdAorCisJJChNQUtFKSAtQyAke2JmYnVpbGRkaXJ9IFY9MSBpbnN0YWxsLXNobGlicy1saWJzLXJlY3Vyc2l2ZSBERVNURElSPSR7dWRlYmRpcn0gXAorCQlJTlNUQUxMX1BST0dSQU09IiR7SU5TVEFMTF9QUk9HUkFNfSIgTERDT05GSUc9dHJ1ZQorCSQoTUFLRSkgLUMgJHtiZmJ1aWxkZGlyfS9lMmZzY2sgVj0xIGluc3RhbGwgREVTVERJUj0ke3VkZWJkaXJ9IFwKKwkJSU5TVEFMTF9QUk9HUkFNPSIke0lOU1RBTExfUFJPR1JBTX0iIExEQ09ORklHPXRydWUKKwkkKE1BS0UpIC1DICR7YmZidWlsZGRpcn0vbWlzYyBWPTEgaW5zdGFsbCBERVNURElSPSR7dWRlYmRpcn0gXAorCQlJTlNUQUxMX1BST0dSQU09IiR7SU5TVEFMTF9QUk9HUkFNfSIgTERDT05GSUc9dHJ1ZQorCSQoTUFLRSkgLUMgJHtiZmJ1aWxkZGlyfS9yZXNpemUgVj0xIGluc3RhbGwgREVTVERJUj0ke3VkZWJkaXJ9IFwKKwkJSU5TVEFMTF9QUk9HUkFNPSIke0lOU1RBTExfUFJPR1JBTX0iIExEQ09ORklHPXRydWUKKworCXJtIC1yZiAke3VkZWJkaXJ9L3VzcgorCWZpbmQgJHt1ZGViZGlyfS9zYmluIC10eXBlIGYgLWEgISAtbmFtZSBlMmZzY2sgXAorCQktYSAhIC1uYW1lIG1rZTJmcyAtYSAhIC1uYW1lIHR1bmUyZnMgXAorCQktYSAhIC1uYW1lIHJlc2l6ZTJmcyAtYSAhIC1uYW1lIGJhZGJsb2NrcyAtcHJpbnQgfCB4YXJncyBybQorCisJKGNkICR7dWRlYmRpcn0vc2JpbjsgbG4gLXNmIGUyZnNjayBmc2NrLmV4dDIgOyBcCisJCWxuIC1zZiBlMmZzY2sgZnNjay5leHQzIDsgbG4gLXNmIGUyZnNjayBmc2NrLmV4dDQgOyBcCisJCWxuIC1zZiBta2UyZnMgbWtmcy5leHQyIDsgbG4gLXNmIG1rZTJmcyBta2ZzLmV4dDMgOyBcCisJCWxuIC1zZiBta2UyZnMgbWtmcy5leHQ0KQorCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCisJbWtkaXIgLXAgJHtibGtpZHVkZWJkaXJ9L2xpYgorCW12ICR7dWRlYmRpcn0vbGliL2xpYmJsa2lkLiogJHtibGtpZHVkZWJkaXJ9L2xpYgorCisJbWtkaXIgLXAgJHt1dWlkdWRlYmRpcn0vbGliCisJbXYgJHt1ZGViZGlyfS9saWIvbGlidXVpZC4qICR7dXVpZHVkZWJkaXJ9L2xpYgorZW5kaWYKKworYmluYXJ5LWluZGVwOiAKKyAgIyBubyBhcmNoLWluZGVwZW5kYW50IGRlYnMuCisKK2JpbmFyeS1hcmNoOiBESF9PUFRJT05TPSAtYQorYmluYXJ5LWFyY2g6IGluc3RhbGwgJChJTlNUQUxMX1VERUIpCisJZGhfdGVzdGRpcgorCWRoX3Rlc3Ryb290CisKKwlkaF9saW50aWFuCisKKyAgIyBzeW1saW5rcyB0byBwcmVwYXJlIGRoX2luc3RhbGxkb2NzIHJ1bgorCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCisJbWtkaXIgLXAgJHtkZWJkaXJ9L2xpYmJsa2lkJHtCTEtJRF9TT1ZFUlNJT059L3Vzci9zaGFyZS9kb2MvbGliYmxraWQke0JMS0lEX1NPVkVSU0lPTn0KKwlta2RpciAtcCAke2RlYmRpcn0vbGliYmxraWQtZGV2L3Vzci9zaGFyZS9kb2MKKwlsbiAtc2YgbGliYmxraWQke0JMS0lEX1NPVkVSU0lPTn0gJHtkZWJkaXJ9L2xpYmJsa2lkLWRldi91c3Ivc2hhcmUvZG9jL2xpYmJsa2lkLWRldgorZW5kaWYKKworCW1rZGlyIC1wICR7ZGViZGlyfS9saWJzcyR7U1NfU09WRVJTSU9OfS91c3Ivc2hhcmUvZG9jL2xpYnNzJHtTU19TT1ZFUlNJT059CisJbWtkaXIgLXAgJHtkZWJkaXJ9L3NzLWRldi91c3Ivc2hhcmUvZG9jCisJbG4gLXNmIGxpYnNzJHtTU19TT1ZFUlNJT059ICR7ZGViZGlyfS9zcy1kZXYvdXNyL3NoYXJlL2RvYy9zcy1kZXYKKworCW1rZGlyIC1wICR7ZGViZGlyfS9saWJjb21lcnIke0NPTUVSUl9TT1ZFUlNJT059L3Vzci9zaGFyZS9kb2MvbGliY29tZXJyJHtDT01FUlJfU09WRVJTSU9OfQorCW1rZGlyIC1wICR7ZGViZGlyfS9jb21lcnItZGV2L3Vzci9zaGFyZS9kb2MKKwlsbiAtc2YgbGliY29tZXJyJHtDT01FUlJfU09WRVJTSU9OfSAke2RlYmRpcn0vY29tZXJyLWRldi91c3Ivc2hhcmUvZG9jL2NvbWVyci1kZXYKKworaWZuZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorCW1rZGlyIC1wICR7ZGViZGlyfS9saWJ1dWlkJHtVVUlEX1NPVkVSU0lPTn0vdXNyL3NoYXJlL2RvYy9saWJ1dWlkJHtVVUlEX1NPVkVSU0lPTn0KKwlta2RpciAtcCAke2RlYmRpcn0vdXVpZC1kZXYvdXNyL3NoYXJlL2RvYworIwlsbiAtc2YgbGlidXVpZCR7VVVJRF9TT1ZFUlNJT059ICR7ZGViZGlyfS91dWlkLWRldi91c3Ivc2hhcmUvZG9jL3V1aWQtZGV2CitlbmRpZgorCisJbWtkaXIgLXAgJHtkZWJkaXJ9L2UyZnNsaWJzL3Vzci9zaGFyZS9kb2MvZTJmc2xpYnMKKwlta2RpciAtcCAke2RlYmRpcn0vZTJmc2xpYnMtZGV2L3Vzci9zaGFyZS9kb2MKKwlsbiAtc2YgZTJmc2xpYnMgJHtkZWJkaXJ9L2UyZnNsaWJzLWRldi91c3Ivc2hhcmUvZG9jL2UyZnNsaWJzLWRldgorCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCisJJChJTlNUQUxMKSAtcCAtbSAwNjQ0IGRlYmlhbi9saWJibGtpZC5jb3B5cmlnaHQgXAorCQkke2RlYmRpcn0vbGliYmxraWQke0JMS0lEX1NPVkVSU0lPTn0vdXNyL3NoYXJlL2RvYy9saWJibGtpZCR7QkxLSURfU09WRVJTSU9OfS9jb3B5cmlnaHQKK2VuZGlmCisKKwlkaF9pbnN0YWxsZG9jcyAtTmUyZnNwcm9ncy11ZGViIC1ObGliYmxraWQxLXVkZWIgLU5saWJ1dWlkMS11ZGViCisKKyAgIyBIVE1MIGRvY3MKKwkkKElOU1RBTEwpIC1kICR7ZGViZGlyfS9lMmZzbGlicy1kZXYvdXNyL3NoYXJlL2RvYy9lMmZzbGlicy9odG1sLWluZm8vCisJJChJTlNUQUxMKSAtcCAtbSAwNjQ0ICR7c3RkYnVpbGRkaXJ9L2RvYy8qLmh0bWwgXAorCSAgICR7ZGViZGlyfS9lMmZzbGlicy1kZXYvdXNyL3NoYXJlL2RvYy9lMmZzbGlicy9odG1sLWluZm8vCisJJChJTlNUQUxMKSAtZCAke2RlYmRpcn0vY29tZXJyLWRldi91c3Ivc2hhcmUvZG9jL2xpYmNvbWVyciR7Q09NRVJSX1NPVkVSU0lPTn0vaHRtbC1pbmZvLworCSQoSU5TVEFMTCkgLXAgLW0gMDY0NCAke3N0ZGJ1aWxkZGlyfS9saWIvZXQvKi5odG1sIFwKKwkgICAke2RlYmRpcn0vY29tZXJyLWRldi91c3Ivc2hhcmUvZG9jL2xpYmNvbWVyciR7Q09NRVJSX1NPVkVSU0lPTn0vaHRtbC1pbmZvLworCisgICMgdGV4aW5mbyBkb2NzCisJbWtkaXIgLXAgJHtkZWJkaXJ9L2NvbWVyci1kZXYvdXNyL3NoYXJlL2RvYy9saWJjb21lcnIke0NPTUVSUl9TT1ZFUlNJT059CisJJChJTlNUQUxMKSAtcCAtbSAwNjQ0ICR7dG9wZGlyfS9kb2MvbGliZXh0MmZzLnRleGluZm8gXAorCSAgICR7ZGViZGlyfS9lMmZzbGlicy1kZXYvdXNyL3NoYXJlL2RvYy9lMmZzbGlicy9saWJleHQyZnMudGV4aQorCSQoSU5TVEFMTCkgLXAgLW0gMDY0NCAke3RvcGRpcn0vbGliL2V0L2NvbV9lcnIudGV4aW5mbyBcCisJICAgJHtkZWJkaXJ9L2NvbWVyci1kZXYvdXNyL3NoYXJlL2RvYy9saWJjb21lcnIke0NPTUVSUl9TT1ZFUlNJT059L2NvbV9lcnIudGV4aQorCisJJChJTlNUQUxMKSAtZCAke2RlYmRpcn0vY29tZXJyLWRldi91c3Ivc2hhcmUvZG9jL2xpYmNvbWVyciR7Q09NRVJSX1NPVkVSU0lPTn0vZXhhbXBsZXMKKwkkKElOU1RBTEwpIC1wIC1tIDA2NDQgbGliL3NzL3NzX2Vyci5ldCBcCisJCSR7c3RkYnVpbGRkaXJ9L2xpYi9leHQyZnMvZXh0Ml9lcnIuZXQgXAorCQkke2RlYmRpcn0vY29tZXJyLWRldi91c3Ivc2hhcmUvZG9jL2xpYmNvbWVyciR7Q09NRVJSX1NPVkVSU0lPTn0vZXhhbXBsZXMKKwkkKElOU1RBTEwpIC1kICR7ZGViZGlyfS9zcy1kZXYvdXNyL3NoYXJlL2RvYy9saWJzcyR7U1NfU09WRVJTSU9OfS9leGFtcGxlcworCSQoSU5TVEFMTCkgLXAgLW0gMDY0NCBkZWJ1Z2ZzL2RlYnVnX2NtZHMuY3QgXAorCQkke2RlYmRpcn0vc3MtZGV2L3Vzci9zaGFyZS9kb2MvbGlic3Mke1NTX1NPVkVSU0lPTn0vZXhhbXBsZXMKKworCWRoX2luc3RhbGxpbmZvIC1wY29tZXJyLWRldiAke3N0ZGJ1aWxkZGlyfS9saWIvZXQvY29tX2Vyci5pbmZvCisJZGhfaW5zdGFsbGluZm8gLXBlMmZzbGlicy1kZXYgJHtzdGRidWlsZGRpcn0vZG9jL2xpYmV4dDJmcy5pbmZvCisKKwlkaF9pbnN0YWxsY2hhbmdlbG9ncworCWRoX2ZpeHBlcm1zCisJZGhfc3RyaXAgJChjYWxsIGRoX3N0cmlwX2FyZ3MsZTJmc3Byb2dzKQoraWZuZXEgKCQoQlVJTERfRTJGU0NLX1NUQVRJQyksbm8pCisJZGhfc3RyaXAgJChjYWxsIGRoX3N0cmlwX2FyZ3MyLGUyZnNjay1zdGF0aWMsZTJmc3Byb2dzKQorZW5kaWYKK2lmbmVxICgkKGlzbWlwcyksKQorCWRoX3N0cmlwICQoY2FsbCBkaF9zdHJpcF9hcmdzLGUyZnNsaWJzKSAtWGxpYjY0ZXh0MmZzLW5vcGljLmEKK2Vsc2UKKwlkaF9zdHJpcCAkKGNhbGwgZGhfc3RyaXBfYXJncyxlMmZzbGlicykKK2VuZGlmCisJZGhfc3RyaXAgJChjYWxsIGRoX3N0cmlwX2FyZ3MsbGlic3Mke1NTX1NPVkVSU0lPTn0pCisJZGhfc3RyaXAgJChjYWxsIGRoX3N0cmlwX2FyZ3MsbGliY29tZXJyJHtDT01FUlJfU09WRVJTSU9OfSkKK2lmbmVxICgkKFVUSUxfTElOVVhfTkcpLHllcykKKwlkaF9zdHJpcCAkKGNhbGwgZGhfc3RyaXBfYXJncyxsaWJibGtpZCR7QkxLSURfU09WRVJTSU9OfSkKKwlkaF9zdHJpcCAkKGNhbGwgZGhfc3RyaXBfYXJncyxsaWJ1dWlkJHtVVUlEX1NPVkVSU0lPTn0pCitlbmRpZgorCWRoX3N0cmlwCisKKwkjIGRwa2cgc3ltYm9sIGhhbmRsaW5nCisJZm9yIGkgaW4gJChTWU1CT0xfTElCUyk7IFwKKwlkbyBcCisJCWVjaG8gIkdlbmVyYXRpbmcgc3ltYm9scyBmb3IgJCRpLi4uIjsgXAorCQlkcGtnLWdlbnN5bWJvbHMgLXAkJGkgLVBkZWJpYW4vJCRpID4gZGViaWFuLyQkaS50bXAtcGF0Y2g7IFwKKwkJY2F0IGRlYmlhbi8kJGkudG1wLXBhdGNoOyBcCisJCXBhdGNoIGRlYmlhbi8kJGkuc3ltYm9scyA8IGRlYmlhbi8kJGkudG1wLXBhdGNoOyBcCisJCS9iaW4vcm0gZGViaWFuLyQkaS50bXAtcGF0Y2g7IFwKKwlkb25lCisKKwlkaF9jb21wcmVzcworCisJZGhfbWFrZXNobGlicyAtLWFkZC11ZGViPWUyZnNwcm9ncy11ZGViCitpZmVxICgkKFNLSVBfVURFQiksKQoraWZuZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorCWVjaG8gInVkZWI6IGxpYmJsa2lkIDEgbGliYmxraWQxLXVkZWIiID4+IFwKKwkJZGViaWFuL2xpYmJsa2lkMS9ERUJJQU4vc2hsaWJzCisJZWNobyAidWRlYjogbGlidXVpZCAxIGxpYnV1aWQxLXVkZWIiID4+IGRlYmlhbi9saWJ1dWlkMS9ERUJJQU4vc2hsaWJzCitlbmRpZgorZW5kaWYKKworCWRoX2luc3RhbGxkZWIKKwlkaF9zaGxpYmRlcHMgLWwke3N0ZGJ1aWxkZGlyfS9saWIKKwlkaF9zaGxpYmRlcHMgLXBlMmZzcHJvZ3MgLWwke3N0ZGJ1aWxkZGlyfS9saWIgXAorCQktdSItTGRlYmlhbi9lMmZzcHJvZ3Muc2hsaWJzLmxvY2FsIgoraWZlcSAoJChTS0lQX1VERUIpLCkKKwlkaF9zaGxpYmRlcHMgLXBlMmZzcHJvZ3MtdWRlYiAtbCR7c3RkYnVpbGRkaXJ9L2xpYiBcCisJCS11Ii1MZGViaWFuL2UyZnNwcm9ncy11ZGViLnNobGlicy5sb2NhbCIKK2VuZGlmCitpZmVxICgkKFNLSVBfRlVTRTJGUyksKQorCWRoX3NobGliZGVwcyAtcGZ1c2UyZnMgLWwke3N0ZGJ1aWxkZGlyfS9saWIgXAorCQktdSItTGRlYmlhbi9lMmZzcHJvZ3Muc2hsaWJzLmxvY2FsIgorZW5kaWYKKworCWRoX2dlbmNvbnRyb2wgLU5jb21lcnItZGV2IC1Oc3MtZGV2IC1OdXVpZC1kZXYgXAorCQktTmUyZnNwcm9ncy11ZGViIC1ObGliYmxraWQxLXVkZWIgLU5saWJ1dWlkMS11ZGViCisJREhfT1BUSU9OUz0gZGhfZ2VuY29udHJvbCAtcGNvbWVyci1kZXYgXAorCSAgLXUgJy12JHtDT01FUlJfVkVSU0lPTn0tJHtNQUlOX1ZFUlNJT059IC1WbWFpbkJpbmFyeT0ke01BSU5fVkVSU0lPTn0nCisJREhfT1BUSU9OUz0gZGhfZ2VuY29udHJvbCAtcHNzLWRldiBcCisJICAtdSAnLXYke1NTX1ZFUlNJT059LSR7TUFJTl9WRVJTSU9OfSAtVm1haW5CaW5hcnk9JHtNQUlOX1ZFUlNJT059JworaWZuZXEgKCQoVVRJTF9MSU5VWF9ORykseWVzKQorCURIX09QVElPTlM9IGRoX2dlbmNvbnRyb2wgLXB1dWlkLWRldiBcCisJICAtdSAnLXYke1VVSURfVkVSU0lPTn0tJHtNQUlOX1ZFUlNJT059IC1WbWFpbkJpbmFyeT0ke01BSU5fVkVSU0lPTn0nCitlbmRpZgoraWZlcSAoJChTS0lQX1VERUIpLCkKKwlkaF9nZW5jb250cm9sCS1wZTJmc3Byb2dzLXVkZWIgLS0gLWZkZWJpYW4vZmlsZXN+CitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCisJZGhfZ2VuY29udHJvbAktcGxpYmJsa2lkMS11ZGViIC0tIC1mZGViaWFuL2ZpbGVzfgorCWRoX2dlbmNvbnRyb2wJLXBsaWJ1dWlkMS11ZGViIC0tIC1mZGViaWFuL2ZpbGVzfgorZW5kaWYKK2VuZGlmCisKK2lmZXEgKCQoU0tJUF9VREVCKSwpCisJZHBrZy1kaXN0YWRkZmlsZSAkKFVERUJfTkFNRSkgZGViaWFuLWluc3RhbGxlciAkKFVERUJfUFJJT1JJVFkpCitpZm5lcSAoJChVVElMX0xJTlVYX05HKSx5ZXMpCisJZHBrZy1kaXN0YWRkZmlsZSAkKEJMS0lEX1VERUJfTkFNRSkgZGViaWFuLWluc3RhbGxlciAkKEJMS0lEX1VERUJfUFJJT1JJVFkpCisJZHBrZy1kaXN0YWRkZmlsZSAkKFVVSURfVURFQl9OQU1FKSBkZWJpYW4taW5zdGFsbGVyICQoVVVJRF9VREVCX1BSSU9SSVRZKQorZW5kaWYKK2VuZGlmCisJZGhfbWQ1c3VtcworCWRoX2J1aWxkZGViCisKK2JpbmFyeTogYmluYXJ5LWluZGVwIGJpbmFyeS1hcmNoCisKKy5QSE9OWTogYmluYXJ5IGJpbmFyeS1hcmNoIGJpbmFyeS1pbmRlcCBjbGVhbiBjaGVja3Jvb3QgbXJwcm9wZXIgXAorCWRlYnVnX2ZsYWdzIGRlYmlhbi1maWxlcworCitkZWJ1Z19mbGFnczoKKwlAZWNobyBDRkxBR1MgaXMgJChDRkxBR1MpCisJQGVjaG8gTERGTEFHUyBpcyAkKExERkxBR1MpCisJQGVjaG8gQ1BQRkxBR1MgaXMgJChDUFBGTEFHUykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vc2NyaXB0cy90ZXN0LWJhY2t0cmFjZSBiL2UyZnNwcm9ncy9kZWJpYW4vc2NyaXB0cy90ZXN0LWJhY2t0cmFjZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kOTA0ODZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9zY3JpcHRzL3Rlc3QtYmFja3RyYWNlCkBAIC0wLDAgKzEsMzQgQEAKKyMhL2Jpbi9zaAorIworIyBUZXN0IHRvIHNlZSBpZiBiYWNrdHJhY2UgcmVxdWlyZXMgYSBsaWJyYXJ5IGluIC91c3IvbGliCisjIFJldHVybnMgdHJ1ZSBpZiB0aGUgYmFja3RyYWNlIGNvbW1hbmQgd29ya3MgYW5kIHJlcXVpcmVzIGEgbGlicmFyeSBpbiAvdXNyL2xpYgorIyBUaGlzIGlzIGEgbmFzdHkgd29ya2Fyb3VuZCBmb3IgRGViaWFuIGJ1ZyAjNzA4MzA3LCB3aGljaCBpcyByZWFsbHkgYSBnbGliYyBidWcKKyMKKworY2F0ID4gL3RtcC9iYWNrdHJhY2UkJC5jIDw8IEVPRgorCisjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgICAgIHZvaWQgKnN0YWNrX3N5bXNbMzJdOworICAgICAgIGludCBmcmFtZXM7CisKKyAgICAgICBmcmFtZXMgPSBiYWNrdHJhY2Uoc3RhY2tfc3ltcywgMzIpOworICAgICAgIGJhY2t0cmFjZV9zeW1ib2xzX2ZkKHN0YWNrX3N5bXMsIGZyYW1lcywgMCk7Cit9CitFT0YKKworaWYgISBjYyAtbyAvdG1wL2JhY2t0cmFjZSQkIC90bXAvYmFja3RyYWNlJCQuYzsgdGhlbgorICAgZXhpdCAxCitmaQorCitpZiAhIGxkZCAvdG1wL2JhY2t0cmFjZSQkID4gL3RtcC9iYWNrdHJhY2UkJC5sZGQgMj4mMSA7IHRoZW4KKyAgIGV4aXQgMQorZmkKKworZ3JlcCAtcSAvdXNyL2xpYiAvdG1wL2JhY2t0cmFjZSQkLmxkZAorcmV0PSQ/CisKKy9iaW4vcm0gLWYgL3RtcC9iYWNrdHJhY2UkJCoKK2V4aXQgJHJldApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9zaGxpYnMubG9jYWwgYi9lMmZzcHJvZ3MvZGViaWFuL3NobGlicy5sb2NhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjc4ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9zaGxpYnMubG9jYWwKQEAgLTAsMCArMSw2IEBACitsaWJleHQyZnMJMgorbGliZTJwCQkyCitsaWJ1dWlkCQkxCitsaWJjb21fZXJyCTIKK2xpYnNzCQkyCitsaWJibGtpZAkxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL3NvdXJjZS5saW50aWFuLW92ZXJyaWRlcyBiL2UyZnNwcm9ncy9kZWJpYW4vc291cmNlLmxpbnRpYW4tb3ZlcnJpZGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOTg4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL3NvdXJjZS5saW50aWFuLW92ZXJyaWRlcwpAQCAtMCwwICsxLDIgQEAKK2UyZnNwcm9ncyBzb3VyY2U6IHdlYWstbGlicmFyeS1kZXYtZGVwZW5kZW5jeSBzcy1kZXYgb24gbGlic3MyICg9ICR7bWFpbkJpbmFyeX0pCitlMmZzcHJvZ3Mgc291cmNlOiB3ZWFrLWxpYnJhcnktZGV2LWRlcGVuZGVuY3kgY29tZXJyLWRldiBvbiBsaWJjb21lcnIyICg9ICR7bWFpbkJpbmFyeX0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL3NvdXJjZS9mb3JtYXQgYi9lMmZzcHJvZ3MvZGViaWFuL3NvdXJjZS9mb3JtYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzYWFmOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vc291cmNlL2Zvcm1hdApAQCAtMCwwICsxIEBACiszLjAgKHF1aWx0KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi9zcy1kZXYuZXhhbXBsZXMgYi9lMmZzcHJvZ3MvZGViaWFuL3NzLWRldi5leGFtcGxlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzkzMGJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi9zcy1kZXYuZXhhbXBsZXMKQEAgLTAsMCArMSBAQAorZGVidWdmcy9kZWJ1Z19jbWRzLmN0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL3NzLWRldi5maWxlcy5pbiBiL2UyZnNwcm9ncy9kZWJpYW4vc3MtZGV2LmZpbGVzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwYzc4OGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL3NzLWRldi5maWxlcy5pbgpAQCAtMCwwICsxLDcgQEAKK3Vzci9saWIvKi9saWJzcy5zbwordXNyL2xpYi8qL2xpYnNzLmEKK3Vzci9pbmNsdWRlL3NzLyoKK3Vzci9iaW4vbWtfY21kcwordXNyL3NoYXJlL3NzLyoKK3Vzci9zaGFyZS9tYW4vbWFuMS9ta19jbWRzKgordXNyL2xpYi8qL3BrZ2NvbmZpZy9zcy5wYwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYmlhbi91cHN0cmVhbS9zaWduaW5nLWtleS5hc2MgYi9lMmZzcHJvZ3MvZGViaWFuL3Vwc3RyZWFtL3NpZ25pbmcta2V5LmFzYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjI1OTk4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi91cHN0cmVhbS9zaWduaW5nLWtleS5hc2MKQEAgLTAsMCArMSwxNTYgQEAKKy0tLS0tQkVHSU4gUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorVmVyc2lvbjogR251UEcgdjEKKworbVFJTkJFejRGNDhCRUFEcnQ1RE9zcUw4NEZyVkNZbkkzTVBaVjljRXd2UVNabVR5b1N5VTkwVmwxNkVzN1h1RgoreTQ1V2hSNXRRRzZXNmlLVG5RcElFY3hLcFRkTEc4Y3hHd2M1Z09zQ3ptb0VCZ0hHQTIzSXR4N0JWcWtCOHZTQQorYVFETkFzUTRzRlVVRkJoa0hhMGQrTjZSc3JUMEVIcEs5Z1VQMHBhVGl5YnFHbi95SU9aNXR5dytqek41SWFlLworUkxiSUg1VVE4K1hXVjdNQUZXTEJhaFBKSlRWTmNBU0s4aC9aeHZOTGtJUmI1U0ZPMm9xZXcyNlZ1UmkzUjBzVAorUHZ1ZTE0SzBKUDVLc1oySEVROG5OV3lGaFJiTUpSMzJscUZOR056UGd1cEFkV3pYS1FUMlIvVVoxV3NNZVExaQorVE0rSGZOM2lkckordTJTVFhWdjFvVGtLR0ZzeWhxMmdkVWN2NW8vdHBxZ2tROEY5SzhyS1pJL0VIemgzWlUwbworcVlBZ1hFQ1Fzb1MyaFMxcWMzOEVjckUzdEtKc1h6dEdwV3VqZjhnYkppdnMxL3B6N2JFUWlDeHRGLy9aZTJkbgorMTlDU2Y3ci9XS1RlY3hia3grZXVwbWUzVGhxc0tXUjZ2NnFhU0NBMjIza2lVTWI4Yjh6cEo1K05PeGhtZ3NzbAorUFBVNUVISmFCd1pyZnJpdGpnd09pRUFseWpZWlo0SWtBODh0QWltdFlVM25icG4wOTl6U2ZtdmFEOGxRVUsrZQorTnp6VWxzekpGR0VxbmE0LytuR2MwbTJyZ2ZiU3Z5V080TVF6ODVGaDVjU2VVeGlXQ1BOaldUSnBSb1BQWFNJUQorRCtHdGVaMXJsdkEyVm1CS0xTQThGN0JML2x2dVVyZmpORjJPeUxxaE9JM1R0R2UzTis4OVExcXN5d0FSQVFBQgordEIxVWFHVnZaRzl5WlNCVWN5ZHZJRHgwZVhSemIwQnRhWFF1WldSMVBva0NPZ1FUQVFnQUpBSWJBd0llQVFJWAorZ0FJWkFRVUNWUnIzaGdVTENRZ0hBd1VWQ2drSUN3VVdBZ01CQUFBS0NSRFRiM2Fid1JnRThMQXdELzlCL0tVagorMEtwQWUyb29YRWluUzM4MG1raUd6V0RKSW5jRXludWJpTm01Tmw4Wm84aHd0alhmYWdUcXVjVW1ubnU4TkoxTworbHdpZ3c1L3ZKWHBUbzdtYVNleUpJbWFSWmFZeXpvaDhCdjExdDF5bWJUdnI1YWI3WmdTR21hYWszSWpJTThjVwordnYvV3greWYrTFlTMDMrNkdPTWRHTHExbUYyS2dYcEhCZEsyV3BsLzhqbE9tcnkrd2NjZ1hCZWtaUDdaSUYwVgord05GcS9xOGM2elcyeUhzMnc2aS9wa1ZISkptM2t5YUJlKzZVNm5qcTEvSEJDbmxHaW43aVlmcHhaMGQ4Rm9pTAorNENFVUFIZnBGUDJES1RPK0tKSmpwaFpjdHlhMG5DQlJ6UUkzWms4YTAvSVRDV0pyL3B3Nzd5eXNJUmlNTzBzNAorQmpIenpNN2VkbEpBN2RJTHV0WDhYcm5BQWtJT2Rmeld2SHVMdExwRWNEUlArZ293WVlPN1BqTWZiNjF6c1A5TAorZFhTMWJEclhJMnBuMlNkUkZtYW9kU0JhYUFhSm9UajU1WmJqTTJDa3Y0bHBHWUdvenJlYXY5c3VMcllpWkllSQorUVJjcUwxUUlLTTlXWlBVa2ZiTlNNaUxMY2NPbUVwS2NxeWF1aDNRSmlLZFQrbEZwUkJaWTM0VFNJNFI1RUtNbQorZEpxRC94YVo0bkRwZk94YnFvY0VYREdnc3Rtc0NneHpMclljN2xWQisxSVJuVFcyckZsUXRlRkFadWNxOER3YgoreHZrT2RWWTFwSm8xdmY4VWtNUHhvZXhNdDd4U1NMRFF4eFJ6RXRmUVN6S0x3N0l5ZjJlVG00T2dDTjhQb2NGSQorSjdMYXFPdnlxMFl2eENWR3JQRDliU0NVL0g1Q0F1UEphNFd1enJRZ1ZHaGxiMlJ2Y21VZ1ZITW5ieUE4ZEhsMAorYzI5QVpHVmlhV0Z1TG05eVp6NkpBamNFRXdFSUFDRUNHd01DSGdFQ0Y0QUZBbFVhOTVnRkN3a0lCd01GRlFvSgorQ0FzRkZnSURBUUFBQ2drUTAyOTJtOEVZQlBCcVZnLytKclZObCt5b0d5SUozZTg1VHM3S282NVVRK3hNNzFBZAorT2VjRFVVU3gzYmVTZS9UcmM3NkVsdnpHdS96TXRzdHU5dUg4RG5tbmpzY04xQ2ZxcEhLNlJoY2s2OVJRREN5KworYzExNFE4cGEvYnpBdVdQSDR2R0hFNUJ2UFpqSWM2N2NaM1Q1a0hwQWFldzVsdFpHNllocE9CUlRScjU1WmZPMworaEhRQ3hPZFRtcUtXWEIxSFJYUlR1N2hsSTRXbVJwU0JmOXk0c1Z3SWFyYVNndE5SaEtiL0ZmMWlQSEZDVmRvSworK1V0ZldKcmJwSitIcEhBY2JvTnNmQzFQUVo4RTZlSFlpYUcwRVVsU3JwamVDSDY2a0Jna0lrYnQ0UlpmK1IyMworWk5vbkU4SGRkdzZaUjV6TXhPZkliSzVwQmtjRVVnT0ZvZ3d3SEwzYi9sRmRqMHQxZ2dONmVSRFZzazlrWVlnYQora1h5cFI0RFlLU3M0ODRZNE9yb0ZjY3cvTTY5Z0ZqSTNmNUFJYjNIUXpiMWNWOW9jRG5xSnR6UExBUUpUVWlJYgorT0psRlVqc3ZsZzhyb21LVjlsb2R6ZFM3ek8vdDJpUUY0SG0yVGh1UzdSOTNNWkVpNFo3V1JnS3VlSUJFaEhtNworV0JidG5XemxLWkRkc0lMeUlVbjdMNldFMWlUK2QrenZVSHo2cllZL2IxYjdWUXpIMFVYV3R3elBLQ3lMU0x1TQorZzlxN3JtNVBNdWFNbjA1empOMmdWeThyZmJDN05UVG84ZjI1NllUMGttWm1PNUt4OWZwR1lvUElNSnA4YWlEWQorZlVmZzJyd1drTXhPNnV4aUVlM3hDT1Z6Z1FjSzdOUFpTME5iaGRSY3JtcU4zdnlpVkxZOFFpMmEreFFqZXNKRworUkFnZGh5SmtFU0MwSUZSb1pXOWtiM0psSUZSekoyOGdQSFI1ZEhOdlFHZHZiMmRzWlM1amIyMCtpUUkzQkJNQgorQ0FBaEFoc0RBaDRCQWhlQUJRSlZHdmViQlFzSkNBY0RCUlVLQ1FnTEJSWUNBd0VBQUFvSkVOTnZkcHZCR0FUdwora0IwUCt3UWo4ZXhvRFRMOC9tK1d1anUxQ012SHR5MWk0ZUJLcXpNMDRPZGNCUUkzLzB6T0ZtdWIvVm5KVkIyTAorOTJVaEV2cWNsYndXc2lqejdHMVZyN3dzVVBrZnRDb0pJQ1lxalBwWmYzQkt2eUdYa2F0ck1VczByeTF4WjE1UQorQTRmLzlZdWlVT3lrSVFpUk9TK2xVYTdIcVM2ZGtFaisvMnhYaGVaS2NucnYwcHowUGF5eldib251a1JZN0p4ZQorVWNUQVhuWDFwOWZNNytZOXh4NW1rd3dlNGxOMDJ6R2V4dEN3MUM3N0VER2hIOEd0Z25oeWZzRmtETGpXbU5nOAoreGpiR0t2WVlSVTE4dXUwRFlUajdFUnJEaFl5K0FmdDkxRjFaVU45eFBneU14MXVXY3V5V1BWNTdMM2hkd3hVWAoraTY0VFY0Q3pNT3NvbHl0ZFVpa3c1N3BjanlqZG43a1BKbGdnKzFjbHJ0bnJDc213V1FZRE1mYXAzcFRPQ29qNQorOFlWakYrajhuZ09STHcxdE5ZWmR3UFZkZVRtdVdFdjB1Zmd4RGpRdEQwMXlISTJQeUdZdFpCY1RadXJkWXh0aAorMVoxK2FEeWkza3lpNkpOOGR0ZUE0clVyVHhQQ0kvNkdzcFhRS09sWFBLZVNpakJBRzJLZE5OTmdrV1BTVkM3cQoreHdoR3J1WVlxNVFBOThuQThIaGU4OUtUd3ozZmJUQ3FyNTlRZkVtcEthQjlVdm14NnAwQnZqL3pMNytOOVZwTgordkl5eFJjRzljZmJCV2txMThUQzZjWk1lSFVIandoOHR0QzdzcS9HeGRoRVc0UW40WnN2YmV2b3pBaGQyc01RUAorRlVVQUgwSUExenpJTCtVRzFBdnlRNjlrV3BvRzhGcjl0dElaYzVtWVVEd0wybTFLdVFJTkJFejRHSjRCRUFETQorZTVuaGd3R1BIOVRpMlRTQmxBRG5zWjN5Z3JBMVVFYVRVQnhQSG0wSVlkZnFNZmxxYncrWGt4SFFxUlF6WXlhaAorQmMxRUJqMUZkbDkwN296UlBubTRWek1nRXpYWmxOMndqbWdVaHoxZ0habU1jQ0J4bkMvcC9GZFdtRVF3SkxOZworVHNtblMvc2VGUncycHdrRnRpRFlscVhVd1UxcERqVEx6dE9NVmhlUXBCbExPZy9vSEdjWkIrbGxMTlBSekNvaworbWZOdjRTaFR5Z0RwWXRuaVFkVmc1N1F5cml6M3R2Q0RFK3ZhOEhMOTZTdUNOVjF2eStaSmE0MktOaGhNckhxWQorQzV0N2hUTmFKVHlrMjVMbXdkNWFLclNaalM0Z29ISmNQOVJ5M1NpdDQ2N1RSR0VhcU9pM2ZPMHFUaVRuVzJHegorOUNxMHhEQ09kZDNDRWJMYWpNd3hNOStVS2grNjUvbkd6aDViWUM2elNpdFhNQzF0V1V2REVRcGsvdGlHVjhFMworYzJZWWJJUmNDdk9IQm9xcUlacnlpNEhxWEZ5YXRpakVmQTl5WWMzSjhJZ21IRzlWYzdyQmd3ZGVMR1FzOWhmcAorNklBRnRtWkhkdXBZTE9VWmsrSFZOSVRFU2dpVDZ6SUNGb3hOTTBqcmhranFkSzRadGxUQWlPVElpZHIxelZUZAoramUwSHIvU3UzSC9GbHVHNWNYT1pKcXFjd1Fhazk4TGkvUWU0ZFpsMHQ5OVYxczdOYWZEYWRTQXROT3lNVXBsdAord1NIV3p4NlBpQTNvWU1XYlFPOVM1RDcvUUsyc2NORmY3UW5XRldZRWN1aE1sZktBb2Rvd0k4c3dsanJ0Z3NpcgorN1p4Ulo0WWhTbEJ4MWZnczFXMDlsSXhtVzdudWZaQWNlL096UGdRc21RQVJBUUFCaVFJZkJCZ0JDQUFKQlFKTQorK0JpZUFoc01BQW9KRU5OdmRwdkJHQVR3anEwUC8xWmtDTERSdkVSU0h2TFp3MmRZTVNWTlphbFFxNU1PNjg5QgorcGNGRjlNNENCMElSRytmU2Y3RWt2VHJsSG52OWV1aFdBdHVjczZCSVRXUGR0VU9SS2wvalZjVW1lK1FGQk8vbgordXNWS1ZyMEcwSUpyejNEYjBJVkFDN0kwdUZ0dHVBTlgwb2MwWjNDMUo5UnVrR2FwWWJLRFFGOVJpemRpcUZQUAorcS9vNzAwc0RUbkFyb2liMXEzYkRxT1NyZzBld3VKS3BnVXhMU2lRK0dvWk1YLzh6V0tNc2FkeWd1QnZRbDRmaQorUlNzbzA3NS9XcHpqamtIZ1ovVFJ2L2hYNGNCcFhKTEsxMnl2NFA2bUVIbHdwK0ZYbUgvS1Jxc3lRUWFRb3VVWgoraUQ4dFVLMWhBc1BCOHhZcklaTlNiTHFzTkhqTGp0WHNGc0pVKzdqU250VlgyWEIxbnZ5YW9FOFhOS3VkR29XTgoreGJVRGFCbUZvenZLNXVCUkJGb2dOWnV3KzhrQ1ljVmk4aXVJSHJRTWpXd0w0enE3Q3BMeFFDS2ZZbGhYYXNJTQorcCtnZ3dLZXdmT0ExMGc1UXZZQ2NxY0Z0V2tJc0Y5ZHhPU2tmSkZZMzFDTVFreEhLYzVNRjFMc0dUUnY1SElBbQorcmIzWEF6dGxtUTA5MzZacDgraDlERExWNUxGMTdvaUtEWVF5Z0hGY1lEZ0J1ZEg3OGJ3WXc4aFoyTmtyNTJ2NgorNmZIQ01HVU1ma0M4SVlQMGpWb2txUzI3QXc2SUtLbENpc0pxbkd4cFhDN05iLzhMTkRDS0JUTnBJS2VFTkFSSworWHo5bXNkNnMzZ2pDOXVnMkVhM21yUERObVZuVGtkdnJMVHRBMGtsQ3J4WmdXbWwwQk9qb0V5Qjc1QkNlMmZaOQorNFZSbUpIS0R1UUlOQkZMb1pDZ0JFQURHUjRYZ2YxajVPZjdwd0l6cE1nei9IWnh3anhpYlcrRUMrQUx3TWljSgorQm94VG1OcDVHWjQxUmxlN2ZyTkdSZTRSM2ZVYnBkREk5bk9ERlJFZXpOblRGQ1BZTUExQjJVN2h4eGxjeUgxTgorclJZa2tiZVNXQk5WZ0JJWjByQm5YSTFxclpqT05ycFRMc0hYM0dkQVNoenBZdTV6eXQyYTd0U01obWt3emlkdAoram1XWXQzQnFPSDRDL0NZT3FVblpKaHpaNDQrTFhUNjgrQWNMK3JxV28rY1RPU0RsbXJ2czl5SkNGbTRZNzVBKworZmQrcmFVWjhPaGhtdkhBQStJaVJuSEc5TnJxcHJoVnUrSjR4U3VsZmt5Rjh6aVhsM0hNQzZhZUhWUzFGOFVPKworamc3bkFtZ3lEaTZJdUp6blpCMDFLQ3BsVkRFOUUvOG5lWmZGNVdNenRpN0RpVnZrcndmNFlvT2NzbDl0a2RhNworaUgva2EwM1pMZE1ZRUxzcytsbWdMblZEV0RkcnJKV1RBWTRyWEVXeDRVRTJPMDN5UFZLd3AxRHE4ZUphekpydgorRUNEVE4xVTQ2NEZ2U21PMlhyajdnVXBoT1BTVzJJalVZT0JrRkI5bU1sd1JLdDBnRHZyZTNNOUl4MElPS0NvNworRUxxYWxXOTJyU2IzK2VUWlZlbjFXb0NURkJXV3dTUFhqc0RpeHpKanVLT0N1TElpZU1DdDYzRW5nMmQrY0NJagoreW1KNzQ0ZWZLZVJKYU52RjJpWEJDSmZRR0VpeGxHMUg0S1NUakJuS0dEV2kwY2xpanBKUUpmSlJuTUxSTGpQOAorYUE1UlZ6d3NBUlo5MVlRcDZTS3UzekZQK1o4L1h3aGJlZURsc21rYlE4YW9SY1hoZGhzL3BNSjAyQThDNmsyVAorcFFBUkFRQUJpUUlmQkJnQkNBQUpCUUpTNkdRb0Foc2dBQW9KRU5OdmRwdkJHQVR3U3g0UC8wbGJUeXMrajlBTQorVUVmRVlqY0crQzhsc3FycW5LOXUxYmpEQVFCTmxkZzdJemVVSWVRbFpaRjhkMlJEZW10eG5NenMwQjRNTUVQSworQWdBbHRXZmtlemsxMmcxdnJvbzFtMmZLeFNXRURxN3B5VWhSbEJlZ2dGTERXYWd5dXNoSUhyQVhoY052eWY1bgorMDNFWjRuOEVaMDNlanhOKzZJV3hWaVYxNHQwS3V6Y2NLUFlUd0xobGJOUU44WUIxazBZNmV6WmQ4Z3BYNCtlMgorSzNXRDgzbXhwRm1oaE5zR3F2YkxzdUpmWGRQY1dyQVlwRmdCRjA0cXZZbWdTZFBlU2lkNjhrM01lazBlUXlGagorZ0NCQTBSa3RLYUxWV0VzbEFYeXpHMWlWelR5ZGFiaEZRcmZBMS9HTVZKd0RnTjlIamh6WmVjZXJnODhLaVkwMworcEk1ZE51elFabnQwQ3Mwb1BjTDQwOVpZQkNpdjRiNkp3THhNYVBBQWtydXFwNzVFYjNSUnp2TThuZXRldm50MgorbE1TWURSOEt0MVRqUGZQV0g2NHZ1U0xvSjBpaFNFSGQ0RzkyQ041eFlWWU93QnJ3b2tKeTJyai9HYXo5ZlpIbgoreE9hRnRXdGtSOWh5dGxxc3o0cXBaNzFkS2dzWjVMeFhFVHlnUlEwUlNiTVQ1dUtJTWhSYlNiT1ZCM2dFOGd3VQorcmhXT2J3R0wyV1ZhU0RFTTRTeWFKRVd5SHk2KzM4aXI3UWhWVERjSFFSb1UwL04wQWN5MUFzbHRvSlVJaWFxVQorVGRXeGpwbFVZMEdGdDBPUUlOdkVkaFd0RUJlNEFURksvMTdCS0x4S2syMmtWYngwZk1kMG1SOTM5QVlJYndOaQorZFdXeWpsaG1WbDRVcXJlLzdXcWJzUjduVDlTZCtmYkl1UUVOQkZVYStCRUJDQUNySitDUnoxbU5xcTBRY29mYworKzRoOVB6TUJMQXB3R05ReVNRNVFDTXRJdTVJejRyVFQzMDVpRkZRU0JGektRU05Qam03cGtBek1NcytDV2FEOAorMGdhemdpTzh5dm0xRmEwMGhHSldDeHI1ZGJwOS93OHUxaGZYVVNNVmc2bWYrRDA5aUJMTWEyYTRwTkpjYWZ2cAorMS9FZGs3VkFHMHE3V3JoSUJFckhjbFdTaDZUMDVqSWpTODF5ZGVPNm1wOEF0OFZrdzJvRU0xUkduQkdZQ0lxNAorcFBoS2tRc0JEUmN6M2gxQlNydjV1UEd5QnZYVkJKWjRuMzhtM2lFVEc4akhGUFM1T2lIU3pVNGo5UTRuVnV0YgorV2syNmwzM1ZPYmtkNE5ZcnU5NVVzUTJaR0VUQkNXNXRrTHd1Z1c3QThEMm1Ra1RRc1JMdjlLTzBodWRZMEhxWAordWgzcEFCRUJBQUdKQTBRRUdBRUlBQThDR3dJRkFsYzBGWFFGQ1FNR2EyTUJLY0JkSUFRWkFRZ0FCZ1VDVlJyNAorRVFBS0NSRHkrVmxXbFEyQm8xOVVDQUNBVnM5RjA2NUVEcGVaSmNIMWVwNmR6Uy9xZGN0RVMwcURsNkYrQ1ZPagordjlpQ1RzMU9rcFo5WThnT2F6RWZlQ1Q1dFh5bHlyODJSVjI4Q0ltQUtFUjh0SWhBaTlCdnNzOWFiWGlob0twTAordDhlbjk3UVRCSXZlWis0TVh3emJKR2xqSXVaL1l0ZnozM284VDRPamQ0UUxQdUxxNzV1RVNudW0zS2NvRjNMQQorTVVDcnBzb0tzZ2dwMlZRSHRGeGdGc1NkM0dqSUpCeStlZmV4ejVGK3VNOFExQnJrWmgya3dxOU5aM1FkRzJLcQord1RWVE1JNk1JdHk1VVY0cmUxdjI1VnJtYkNySG1XdFd3MmFZOTBIV2lrZk1RdUYwbitQV3lSSTFkaE5hRnZHNworU2VNWENnZE9FdmhZemJRL0hCZVByclYrRzRmamVPRHU3MG1aWlpJZWNEQzlDUkRUYjNhYndSZ0U4RDBDRC8wUworZ3ZrVS8zR0pSMW50cGxybzMvdXpaMGZjWkwvRWE3eWRTRUdwc1pWSnEvbkg2NEJEWFFaU1o3VUpvdFFkQWxRNgorZjcyL1YzcjU3QWl4MnJ0RjkwVnU2b2xVdEJkWUVrYWRhU01UVmtJOGpqSHZXZVJzOGlZOGlPSWRmbGlrekY2YgorOTJuR3hja2pTQVVMNkdZVG54V2l6dzM5czIwSzZjTzR6T0MvMENEaGp6dnRtb0EwT2lua1dVYmpXTVdmOXBMUAorM0tLZkQ3cCtoclV6TzRHclB4N213Tm9qNnVBMUtVVnluUVNHYTBWNk9YVUdqUTNleTd4REwyYTMyZEY5UEk4ZQorVU1BVzRrbHp4WDlLYmNhbStOeGlIdFRBak1CQlEwWHQwajZpckpQbXNteG04cGEvRCs0U2xFRGpzUVUycTZlRQorVXdQdktCdHhkUzFOMUFkWldxTWxRU0huR05PV2tsak1pOW5yaHlIQVhnZUpqYm5JRnJ5SFc0LythQkxjY2RhTAorbW5Nd2V0YURSRGo4RW1QRFpUaU5IUVVEQ0NGWW9aK0tjNzZrR2Q0VWFkeHBXM0xPZzhzam1uM01ZZGlYWFJRcworLzJwK1E2aUZBQ3VWU3huQ3oxMnN1bXluZkhXaVF3VkdBZDFGQnVJZ2I3RnV4WDZGT0xheWJldy9JTWc1Unp1RAoreTlmSTdaM3lIdEhVY01aaGhRYVF2a2llYmJaY1FsWmhrWklYNlVrOGNzQ0JjQ2xGckg5d0c0TlUySnIrMjVvYQorbkhveWoyYytBQmQ1bVo2UDkwVUM4MHhTbGxPb0g1RGtDZVJVQkt1QVpHMGcrZzY0UUtXVGp3U3hmWTZzRmQraAorMjEwTlRYYVE5aVJQTlZOdjhjakhZMEhIUHp3OW1RQmk1Q29qblNneUxya0JEUVJWR3ZpL0FRZ0FyeWFiMDN0VwordWdpTjQwVVlQRUFTbExjUjBlMDFaQXdyRVNNd0NleE5lamViYWNrZTZmazF2NHBFZWJCdm0wZnUvOEdlSVk3OAorbGV5OUNCSW9ET0h6VFRRTVdYVUJNdEc1dnhQelVnUDVVL1IwQ1d2WEY5UGd5ckNPc1dRak9ScWZJZlVjdFEyUQorS2phU0VpM2p0MFU5Z1ZNODREdGovU2x5Zlp5SnZ1VHkxNVEzbU5MRUEyaGlFa0xDWVM3Nyt0VWFYZUNGbDVlbgorcDJtUWdCU3Jmbm16ZkNja3V3YTBuYm1vNHA2VjB5cmVYNjkzOWM5emFrTXh6dldDaC9TbFpVeUxnUmtINUZPaworZ2IzT2Y2bFIwREhrTkc5dUpPTUVyK2Y2WENid1lQRFRVNkVadW15VlEyV1c5OHMwdUlJVTBRbWJjL0VucG5ZYworemxiYmROUzhDOGFxOFFBUkFRQUJpUUlsQkJnQkNBQVBBaHNNQlFKWE5CV0hCUWtEQm1ySUFBb0pFTk52ZHB2QgorR0FUd1RhTVFBSXVtaGs3ZGFUc1owWEZmRHN6SHdpaWcrS3c0NktwV29DbTB6Wm45clB4WWJVK3M4K3FlMkUvVworRzRIeGR3d0tETWpCYWpzRXpIZ2pqL3AwMmV0NUxHWk1LTitUVDJzWlgwb1loVkxTOC9CTHJYVzROaHE5K3FMMQordUdVVE9jY3RSM2Vic3FOVEZwZXZ0cUQ0akQ3Z2FsRnYzOEJJYTBHOE02WWRLaUg1a0Z6V2Z6NzYwTDAzamRObgorSG1ubkcreC9TLzUrdUhqNUNscFJqaHpza1M1Qm4xZ1dBcXZBUmNic3QvamZ3WFY0M281UHBybm8za2ZOa1dFQQorUVlWTGxPWTgraTRKUDB4Qmx4N3NZTitzOUZFMDB2WVpXZEFCS2lzOStPb0Q0cW5oeFZFNkViSGhmb1cwcEZlaQorb3NEcjMvaVdmV1AxQmNydjJFUE8yM1I3ZXRSZjVwN0VSS3QwcDFxWVBBaUFKdUxLenZ1QXJlVmRCc3pZUkpTbworek04S2ErdDJCZTk1SERTQmhvbkkrbjJlYzhKMklTL2RmblVPWHdnK01OTWNYNWpPeXhvMFJNa2hLdTgrNGlOMworRUNCMit6QThPUXN3RGtsVTNPZkdsV3dIS3diZ2NBaWN1ajZ5SFFxcHloZXVSc05IcTF3Q1Ria0RZb0dvSTBtVgorUE5sNVpqSUMxUmhuRXpmZFh3dzZsWi8vUDlLdVptOW95aGFSVktoRXpSUC9YOFB5OFE3OGtjbkZlbkYwTXNFZworMkxCMytOTUlkekZSRzFyakhMWXV4VUQyOGpIVngvaTZMRElWVlZ1TlpYR3VwWkQzbTJha2duQ29UUWRuam1vYgorZjhWalhvcnZhc1hvNXZESldUR2VnUWJxMHZJNlJtSjJmbklWajRXL0g2Ylc4Z1U0R0ZkcnVRRU5CRlViS0xjQgorQ0FDd2hNcWJ3VkFpd1kyTnZZdlN1enlQQW9qdjdEaFRFc3VTdnlFaExvV1VVcytIdmtUYzZ5VjNPRWlrTTQvNQorenRmdjVzOFBGQkJ6aTRpMFdkU2E0RGl2QmUzckN5djRLVU43VEZTWnpUcEFoL2JDWUJDWGFVL2hXQXpSbjFwWAorSnJSQThka3Q0S1hjVHprQ0pWMXl1d2NHT29qTWRtVTY0b3JTZ1pBd3lrZjJkYy9tVWtTTTFwTVBEMlp3QzBVYworMHptMGU2Z2ZuZEp1MnAzTzFwVWdLUmNpSmUrZUtsdmhYVGcwbDgvaEtIOEt2VW5sV3JGZVBUYlEveldRcTRZQworbE5JMXJVbzJHZjZ6SkJDd2hlMUJhdGE4ZHF0SXBhZ2lNQ2VncjgwNjlNdHM5VjJIMlNkTUlQTnlXUDZDUDVPTgorVWZFU1d0K0FZWkhNRUZBc29KSnJLL1lYQUJFQkFBR0pBaVVFR0FFSUFBOENHeUFGQWxjMEZac0ZDUU1HT3VRQQorQ2drUTAyOTJtOEVZQlBDYW5BLy9hQStCeURGUi9KeXpzV25GWHdna2NSNkNZUnFZd3E0Y3hJb0w5N1JHSUFkbgorWkZ5cVdBTXIwVEdvZkZyY3kwVTJ5SEtVUGE2aWEwUUk2NExxK1N6aWJtbVZxU3FxNXUrZC9iNlpmZ3ZCZ042bworRkd3U0Fsd0p3Z1hpMHNLL2pDK1JZenc5b0xXdk9kK0tUdEtHNHNwTm9IWUtrUC9Id2thOWdpZXV1eWcxaGpCKworZ2kxYjNSS0tzWEI3L1EwRTdsa08vVXF4WnF5UDdnQ2E3YllNaGZyQzhZN0hTc0o1UXRHeTlWQmY0YitVNFBFSworRkxZVjRTWkhoN0xZbFFheFNnelhhckgrMHUyUnJkcytLZnd4d3hzMGs3Zmw3Z0NQajdnQmh6RXJFY0ZZcWhtZworTkdnanJ4QTladytIWG12dGRSUldCVThsL0w0RFBOUlc0U2VCa05KVUFhNlNmSjlmTWhmbHpWMGx4K0FsUC9YTgorRnR2MkhKN2pid1VEcTN2QUsvZExLSU5yQU1ZT2dHMTZwUVk3SFJpY1A2My8vQlhxcTdTaDVjYnIvdXZBTithSworWVlvT2FJbzNLak14aGV2Mk1MRU5TOUJ1TjFBQ1VWcVdPOWFYSjFWbVZvcm9peUx4RmpyeE9FRUdOUVk3VndzMQorU2x6aHZiNTA0ZzlVbytjQnk5SHNYWWg1QlhaZWFxcmExcWJNZXJOL1dKUE9DZlFFTkUyZzhqajl4NE1pNG1abworMWdtaXdDWmlEK0t2WGZtd3Rac3ZyTGFWOUZBbldEa0p1OHcvOHlGVVdlTlZ1dlcwdDV4WGNaTnYvTndiMk9OTwordnNGOU5vWjFzMEJaKytqcmFWRkN0Yk8weUVUQmo0WUJQMFQ1YUZLQk0zelVFNkhHejNFM3hneDF3MGRBZzRjPQorPW9STVcKKy0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0tLS0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1kZXYuUkVBRE1FLkRlYmlhbiBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1kZXYuUkVBRE1FLkRlYmlhbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDhjYzg5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLWRldi5SRUFETUUuRGViaWFuCkBAIC0wLDAgKzEsMjMgQEAKKworSW4gb3JkZXIgdG8gc2FudGl6ZSBlMmZzcHJvZ3MgdG8gYmUgREZTRyBmcmVlLCB0aGUgZmlsZQorZHJhZnQtbGVhY2gtdXVpZHMtZ3VpZHMtMDEudHh0IGhhcyBiZWVuIHJlbW92ZWQuICBJdCBjYW4gYmUgb2J0YWluZWQKK2J5IGRvd25sb2FkaW5nIGUyZnNwcm9ncyBmcm9tIHRoZSB1cHN0cmVhbSBzb3VyY2VzLiAgSXQgbWF5IGFsc28gYmUKK2F2YWlsYWJsZSBmcm9tIG90aGVyIHNpdGVzIG9uIHRoZSBuZXR3b3JrLCBpZiB5b3UgZG8gYSBxdWljayB3ZWIKK3NlYXJjaCBmb3IgdGhlIHN0cmluZyAiZHJhZnQtbGVhY2gtdXVpZHMtZ3VpZHMtMDEiLgorCitOb3RlIHRoYXQgZGViaWFuL3J1bGVzIGlzIHNldCB1cCB0byBpbmNsdWRlIHRoZSBmaWxlIG9uIFVidW50dQorc3lzdGVtcywgc28gZm9yIHBlb3BsZSB0cnlpbmcgdG8gYnVpbGQgZTJmc3Byb2dzIG9uIFVidW50dSBzeXN0ZW1zLAordGhleSBzaG91bGQgc3RhcnQgZnJvbSB0aGUgdXBzdHJlYW0gc291cmNlcywgYW5kIG5vdCB0aGUKK0RlYmlhbi1leHB1cmdhdGVkIHNvdXJjZXMgZm91bmQgaW4gdGhlIERlYmlhbiByZXBvc2l0b3J5LiAgKG4uYi4sIGZvcgorV0lQIHJlbGVhc2VzIHRoZSBjb21tYW5kICIuL3V0aWwvZ2VuLXRhcmJhbGwgdWJ1bnR1IiB3aWxsIGhlbHAgY3JlYXRlCit0YXIgZmlsZSB3aGljaCBpcyBhcHByb3ByaWF0ZWx5IG5hbWVkIHRvIG1ha2UgbGlmZSBlYXNpZXIgZm9yCitkcGtnLWJ1aWxkcGFja2FnZS4pICBTaW5jZSBVYnVudHUgZG9lc24ndCBoYXZlIHRoZSBERlNHIHJlc3RyaWN0aW9ucywKK3RoZSBkb2N1bWVudGF0aW9uIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQgZm9yIERlYmlhbidzIERGU0cgbGljZW5zZQorcHVyaXR5IHNob3VsZG4ndCBiZSBkZW5pZWQgdG8gVWJ1bnR1IHVzZXJzLgorCisJCQkJCVRoZW9kb3JlIFRzJ28KKwkJCQkJT2NvdG9iZXIgMywgMjAwNgorCisKKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGViaWFuL3V1aWQtZGV2LmNvcHlyaWdodCBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1kZXYuY29weXJpZ2h0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNDY3MzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL3V1aWQtZGV2LmNvcHlyaWdodApAQCAtMCwwICsxLDM4IEBACitUaGlzIHBhY2thZ2Ugd2FzIGFkZGVkIHRvIHRoZSBlMmZzcHJvZ3MgZGViaWFuIHNvdXJjZSBwYWNrYWdlIGJ5CitUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PiBvbiBTYXQgTWFyIDE1IDE1OjMzOjM3IEVTVCAyMDAzCisKK0l0IGlzIHBhcnQgb2YgdGhlIG1haW4gZTJmc3Byb2dzIGRpc3RyaWJ1dGlvbiwgd2hpY2ggY2FuIGJlIGZvdW5kIGF0OgorCisJaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9lMmZzcHJvZ3MKKworVXBzdHJlYW0gQXV0aG9yOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitDb3B5cmlnaHQ6CisKK0NvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCBieSBUaGVvZG9yZSBUcydvCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKK09GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1kZXYuZmlsZXMuaW4gYi9lMmZzcHJvZ3MvZGViaWFuL3V1aWQtZGV2LmZpbGVzLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNGI5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL3V1aWQtZGV2LmZpbGVzLmluCkBAIC0wLDAgKzEsNSBAQAordXNyL2xpYi8qL2xpYnV1aWQuc28KK3Vzci9saWIvKi9saWJ1dWlkLmEKK3Vzci9pbmNsdWRlL3V1aWQvKgordXNyL3NoYXJlL21hbi9tYW4zL3V1aWQqCit1c3IvbGliLyovcGtnY29uZmlnL3V1aWQucGMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmNvcHlyaWdodCBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmNvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmNkNGM1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUuY29weXJpZ2h0CkBAIC0wLDAgKzEsMzkgQEAKK1RoaXMgcGFja2FnZSB3YXMgYWRkZWQgdG8gdGhlIGUyZnNwcm9ncyBkZWJpYW4gc291cmNlIHBhY2thZ2UgYnkKK1RoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+IG9uIEZyaSBEZWMgMTQgMjI6MjQ6MzUgRVNUIDIwMDcKKworSXQgaXMgcGFydCBvZiB0aGUgbWFpbiBlMmZzcHJvZ3MgZGlzdHJpYnV0aW9uLCB3aGljaCBjYW4gYmUgZm91bmQgYXQ6CisKKwlodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2UyZnNwcm9ncworCitVcHN0cmVhbSBBdXRob3I6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisKK0NvcHlyaWdodDoKKworQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IGJ5CitUaGVvZG9yZSBUcydvCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKK09GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmZpbGVzIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUuZmlsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY4ZDg3YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmZpbGVzCkBAIC0wLDAgKzEsNCBAQAordXNyL2Jpbi91dWlkZ2VuCit1c3Ivc2Jpbi91dWlkZAordXNyL3NoYXJlL21hbi9tYW44L3V1aWRkLioKK3Vzci9zaGFyZS9tYW4vbWFuMS91dWlkZ2VuLioKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmxpbnRpYW4tb3ZlcnJpZGVzIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUubGludGlhbi1vdmVycmlkZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY0MmQzMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLmxpbnRpYW4tb3ZlcnJpZGVzCkBAIC0wLDAgKzEgQEAKK3V1aWQtcnVudGltZTogY29tbWFuZC13aXRoLXBhdGgtaW4tbWFpbnRhaW5lci1zY3JpcHQgcHJlcm06NSAvdXNyL3NiaW4vdXVpZGQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnBvc3RpbnN0IGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUucG9zdGluc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxYWRiNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnBvc3RpbnN0CkBAIC0wLDAgKzEsMTUgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKK2lmICEgZ2V0ZW50IGdyb3VwIHwgZ3JlcCAtcSBsaWJ1dWlkOyB0aGVuCitncm91cGFkZCAtZiAtSyBHSURfTUlOPTEgLUsgR0lEX01BWD05OTkgbGlidXVpZAorZmkKK2lmICEgZ2V0ZW50IHBhc3N3ZCB8IGdyZXAgLXEgbGlidXVpZDsgdGhlbgorICAgdXNlcmFkZCAtZCAvdmFyL2xpYi9saWJ1dWlkIC1LIFVJRF9NSU49MSAtSyBVSURfTUFYPTQ5OSAtZyBsaWJ1dWlkIGxpYnV1aWQKK2ZpCitjaG93biBsaWJ1dWlkOmxpYnV1aWQgL3Vzci9zYmluL3V1aWRkCitjaG1vZCA2NzU1IC91c3Ivc2Jpbi91dWlkZAorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnBvc3RybSBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnBvc3RybQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDc3MDAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUucG9zdHJtCkBAIC0wLDAgKzEsMTAgQEAKKyMhL2Jpbi9zaAorc2V0IC1lCitpZiBbICIkMSIgPSBwdXJnZSBdCit0aGVuCisJcm0gLXJmIC92YXIvcnVuL3V1aWRkCitmaQorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnByZXJtIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUucHJlcm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0ZTE2MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnByZXJtCkBAIC0wLDAgKzEsMTAgQEAKKyMhIC9iaW4vc2gKK3NldCAtZQoraWYgWyAteCAvdXNyL3NiaW4vdXVpZGQgXQordGhlbgorCS91c3Ivc2Jpbi91dWlkZCAtayB8fCB0cnVlCitmaQorCisjREVCSEVMUEVSIworCitleGl0IDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnNobGlicy5sb2NhbCBiL2UyZnNwcm9ncy9kZWJpYW4vdXVpZC1ydW50aW1lLnNobGlicy5sb2NhbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDk3Njc0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYmlhbi91dWlkLXJ1bnRpbWUuc2hsaWJzLmxvY2FsCkBAIC0wLDAgKzEgQEAKK2xpYnV1aWQgMSBsaWJ1dWlkMSAoPiAxLjQwLjMtMSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJpYW4vd2F0Y2ggYi9lMmZzcHJvZ3MvZGViaWFuL3dhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZGYzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGViaWFuL3dhdGNoCkBAIC0wLDAgKzEsNSBAQAordmVyc2lvbj00CitvcHRzPSJwZ3BzaWd1cmxtYW5nbGU9cyUkJS5hc2MlIiBcCisJaHR0cDovL3NmLm5ldC9lMmZzcHJvZ3MvZTJmc3Byb2dzLShbMC05XS4rKVwudGFyXC5negorI2Z0cDovL2Z0cC5rZXJuZWwub3JnL3B1Yi9saW51eC9rZXJuZWwvcGVvcGxlL3R5dHNvL2UyZnNwcm9ncy9lMmZzcHJvZ3MtKFswLTldLispXC50YXJcLmd6CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL0FuZHJvaWQubWsgYi9lMmZzcHJvZ3MvZGVidWdmcy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZGM4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsOTMgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCdWlsZCB0aGUgZGVidWdmcyBiaW5hcnkKKworZGVidWdmc19zcmNfZmlsZXMgOj0gIFwKKwlkZWJ1Z19jbWRzLmMgXAorCWRlYnVnZnMuYyBcCisJdXRpbC5jIFwKKwluY2hlY2suY1wKKwlpY2hlY2suYyBcCisJbHMuYyBcCisJbHNkZWwuYyBcCisJZHVtcC5jIFwKKwlzZXRfZmllbGRzLmMgXAorCWxvZ2R1bXAuYyBcCisJaHRyZWUuYyBcCisJdW51c2VkLmMgXAorCWUyZnJlZWZyYWcuYyBcCisJZmlsZWZyYWcuYyBcCisJZXh0ZW50X2NtZHMuYyBcCisJZXh0ZW50X2lub2RlLmMgXAorCXphcC5jIFwKKwljcmVhdGVfaW5vZGUuYyBcCisJcXVvdGEuYyBcCisJeGF0dHJzLmMgXAorCWpvdXJuYWwuYyBcCisJcmV2b2tlLmMgXAorCXJlY292ZXJ5LmMgXAorCWRvX2pvdXJuYWwuYworCitkZWJ1Z2ZzX3NoYXJlZF9saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJmcyBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml91dWlkIFwKKwlsaWJleHQyX3NzIFwKKwlsaWJleHQyX3F1b3RhIFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfZTJwCisKK2RlYnVnZnNfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitkZWJ1Z2ZzX3N0YXRpY19saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJmcyBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml91dWlkX3N0YXRpYyBcCisJbGliZXh0Ml9zcyBcCisJbGliZXh0Ml9xdW90YSBcCisJbGliZXh0Ml9jb21fZXJyIFwKKwlsaWJleHQyX2UycAorCitkZWJ1Z2ZzX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzIDo9IGxpYmMKKworZGVidWdmc19jX2luY2x1ZGVzIDo9IFwKKwlleHRlcm5hbC9lMmZzcHJvZ3MvZTJmc2NrIFwKKwlleHRlcm5hbC9lMmZzcHJvZ3MvbWlzYyBcCisJZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitkZWJ1Z2ZzX2NmbGFncyA6PSAtTzIgLWcgLVcgLVdhbGwgLWZuby1zdHJpY3QtYWxpYXNpbmcgLURERUJVR0ZTCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChkZWJ1Z2ZzX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChkZWJ1Z2ZzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChkZWJ1Z2ZzX2NmbGFncykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQoZGVidWdmc19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChkZWJ1Z2ZzX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9NT0RVTEUgOj0gZGVidWdmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoZGVidWdmc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoZGVidWdmc19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoZGVidWdmc19jZmxhZ3MpCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9ICQoZGVidWdmc19zdGF0aWNfbGlicmFyaWVzKSAkKGRlYnVnZnNfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMpCitMT0NBTF9GT1JDRV9TVEFUSUNfRVhFQ1VUQUJMRSA6PSB0cnVlCitMT0NBTF9NT0RVTEUgOj0gZGVidWdmc19zdGF0aWMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGRlYnVnZnNfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGRlYnVnZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGRlYnVnZnNfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJChkZWJ1Z2ZzX3NoYXJlZF9saWJyYXJpZXMpKQorTE9DQUxfTU9EVUxFIDo9IGRlYnVnZnNfaG9zdAorTE9DQUxfTU9EVUxFX1NURU0gOj0gZGVidWdmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL01ha2VmaWxlLmluIGIvZTJmc3Byb2dzL2RlYnVnZnMvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmZTEzZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMzkzIEBACisjCisjIFN0YW5kYXJkIGUyZnNwcm9ncyBwcm9sb2d1ZS4uLi4KKyMKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uCitteV9kaXIgPSBkZWJ1Z2ZzCitJTlNUQUxMID0gQElOU1RBTExACisKK0BNQ09ORklHQAorCitQUk9HUz0JCWRlYnVnZnMKK01BTlBBR0VTPQlkZWJ1Z2ZzLjgKKworTUtfQ01EUz0JX1NTX0RJUl9PVkVSUklERT0kKHNyY2RpcikvLi4vbGliL3NzIC4uL2xpYi9zcy9ta19jbWRzCisKK0RFQlVHX09CSlM9IGRlYnVnX2NtZHMubyBkZWJ1Z2ZzLm8gdXRpbC5vIG5jaGVjay5vIGljaGVjay5vIGxzLm8gXAorCWxzZGVsLm8gZHVtcC5vIHNldF9maWVsZHMubyBsb2dkdW1wLm8gaHRyZWUubyB1bnVzZWQubyBlMmZyZWVmcmFnLm8gXAorCWZpbGVmcmFnLm8gZXh0ZW50X2NtZHMubyBleHRlbnRfaW5vZGUubyB6YXAubyBjcmVhdGVfaW5vZGUubyBcCisJcXVvdGEubyB4YXR0cnMubyBqb3VybmFsLm8gcmV2b2tlLm8gcmVjb3ZlcnkubyBkb19qb3VybmFsLm8KKworUk9fREVCVUdfT0JKUz0gcm9fZGVidWdfY21kcy5vIHJvX2RlYnVnZnMubyB1dGlsLm8gbmNoZWNrLm8gaWNoZWNrLm8gbHMubyBcCisJbHNkZWwubyBsb2dkdW1wLm8gaHRyZWUubyBlMmZyZWVmcmFnLm8gZmlsZWZyYWcubyBleHRlbnRfY21kcy5vIFwKKwlleHRlbnRfaW5vZGUubyBxdW90YS5vIHhhdHRycy5vCisKK1NSQ1M9IGRlYnVnX2NtZHMuYyAkKHNyY2RpcikvZGVidWdmcy5jICQoc3JjZGlyKS91dGlsLmMgJChzcmNkaXIpL2xzLmMgXAorCSQoc3JjZGlyKS9uY2hlY2suYyAkKHNyY2RpcikvaWNoZWNrLmMgJChzcmNkaXIpL2xzZGVsLmMgXAorCSQoc3JjZGlyKS9kdW1wLmMgJChzcmNkaXIpL3NldF9maWVsZHMuYyAke3NyY2Rpcn0vbG9nZHVtcC5jIFwKKwkkKHNyY2RpcikvaHRyZWUuYyAkKHNyY2RpcikvdW51c2VkLmMgJHtzcmNkaXJ9Ly4uL21pc2MvZTJmcmVlZnJhZy5jIFwKKwkkKHNyY2RpcikvZmlsZWZyYWcuYyAkKHNyY2RpcikvZXh0ZW50X2lub2RlLmMgJChzcmNkaXIpL3phcC5jIFwKKwkkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuYyAkKHNyY2RpcikveGF0dHJzLmMgJChzcmNkaXIpL3F1b3RhLmMgXAorCSQoc3JjZGlyKS9qb3VybmFsLmMgJChzcmNkaXIpLy4uL2UyZnNjay9yZXZva2UuYyBcCisJJChzcmNkaXIpLy4uL2UyZnNjay9yZWNvdmVyeS5jICQoc3JjZGlyKS9kb19qb3VybmFsLmMKKworTElCUz0gJChMSUJTVVBQT1JUKSAkKExJQkVYVDJGUykgJChMSUJFMlApICQoTElCU1MpICQoTElCQ09NX0VSUikgJChMSUJCTEtJRCkgXAorCSQoTElCVVVJRCkgJChMSUJNQUdJQykgJChTWVNMSUJTKQorREVQTElCUz0gJChERVBMSUJTVVBQT1JUKSAkKExJQkVYVDJGUykgJChMSUJFMlApICQoREVQTElCU1MpICQoREVQTElCQ09NX0VSUikgXAorCSQoREVQTElCQkxLSUQpICQoREVQTElCVVVJRCkKKworU1RBVElDX0xJQlM9ICQoU1RBVElDX0xJQlNVUFBPUlQpICQoU1RBVElDX0xJQkVYVDJGUykgJChTVEFUSUNfTElCU1MpIFwKKwkkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNUQVRJQ19MSUJCTEtJRCkgJChTVEFUSUNfTElCVVVJRCkgXAorCSQoU1RBVElDX0xJQkUyUCkgJChMSUJNQUdJQykgJChTWVNMSUJTKQorU1RBVElDX0RFUExJQlM9ICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBTVEFUSUNfTElCU1MpIFwKKwkJJChERVBTVEFUSUNfTElCQ09NX0VSUikgJChERVBTVEFUSUNfTElCVVVJRCkgXAorCQkkKERFUFNUQVRJQ19MSUJFMlApCisKKyMgVGhpcyBuYXN0eW5lc3MgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgamZzX3VzZXIuaCBoYWNrZXJ5OyB3aGVuIHdlIGZpbmFsbHkKKyMgY2xlYW4gdXAgdGhpcyBtZXNzLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIGl0CitMT0NBTF9DRkxBR1MgPSAtSSQoc3JjZGlyKS8uLi9lMmZzY2sgLURERUJVR0ZTCitERVBFTkRfQ0ZMQUdTID0gLUkkKHNyY2RpcikKKworLmMubzoKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAtYyAkKEFMTF9DRkxBR1MpICQ8IC1vICRACisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CisKK2FsbDo6ICQoUFJPR1MpICQoTUFOUEFHRVMpCisKK2RlYnVnZnM6ICQoREVCVUdfT0JKUykgJChERVBMSUJTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1vIGRlYnVnZnMgJChERUJVR19PQkpTKSAkKExJQlMpCisKK2RlYnVnZnMuc3RhdGljOiAkKERFQlVHX09CSlMpICQoU1RBVElDX0RFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChMREZMQUdTX1NUQVRJQykgLW8gZGVidWdmcy5zdGF0aWMgJChERUJVR19PQkpTKSBcCisJCSQoU1RBVElDX0xJQlMpICQoUkVBRExJTkVfTElCKQorCityZGVidWdmczogJChST19ERUJVR19PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gcmRlYnVnZnMgJChST19ERUJVR19PQkpTKSAkKExJQlMpCisKK2RlYnVnX2NtZHMuYyBkZWJ1Z19jbWRzLmg6IGRlYnVnX2NtZHMuY3QKKwkkKEUpICIJTUtfQ01EUyAkQCIKKwkkKFEpICQoTUtfQ01EUykgJChzcmNkaXIpL2RlYnVnX2NtZHMuY3QKKworZXh0ZW50X2NtZHMuYyBleHRlbnRfY21kcy5oOiBleHRlbnRfY21kcy5jdAorCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgJChNS19DTURTKSAkKHNyY2RpcikvZXh0ZW50X2NtZHMuY3QKKworcm9fZGVidWdfY21kcy5jIHJvX2RlYnVnX2NtZHMuaDogcm9fZGVidWdfY21kcy5jdAorCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgJChNS19DTURTKSAkKHNyY2Rpcikvcm9fZGVidWdfY21kcy5jdAorCityb19kZWJ1Z2ZzLm86IGRlYnVnZnMuYworCSQoRSkgIglDQyAkQCIKKwkkKFEpICQoQ0MpIC1jICQoQUxMX0NGTEFHUykgJDwgLURSRUFEX09OTFkgLW8gJEAKKworZTJmcmVlZnJhZy5vOiAkKHNyY2RpcikvLi4vbWlzYy9lMmZyZWVmcmFnLmMKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAtYyAkKEFMTF9DRkxBR1MpIC1JJChzcmNkaXIpICQ8IC1vICRACisKK3JlY292ZXJ5Lm86ICQoc3JjZGlyKS8uLi9lMmZzY2svcmVjb3ZlcnkuYworCSQoRSkgIglDQyAkQCIKKwkkKFEpICQoQ0MpIC1jICQoQUxMX0NGTEFHUykgLUkkKHNyY2RpcikgXAorCQkkKHNyY2RpcikvLi4vZTJmc2NrL3JlY292ZXJ5LmMgLW8gJEAKKworcmV2b2tlLm86ICQoc3JjZGlyKS8uLi9lMmZzY2svcmV2b2tlLmMKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAtYyAkKEFMTF9DRkxBR1MpIC1JJChzcmNkaXIpIFwKKwkJJChzcmNkaXIpLy4uL2UyZnNjay9yZXZva2UuYyAtbyAkQAorCitjcmVhdGVfaW5vZGUubzogJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmMKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAtYyAkKEFMTF9DRkxBR1MpIC1JJChzcmNkaXIpIFwKKwkJICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5jIC1vICRACisKK2RlYnVnZnMuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2RlYnVnZnMuOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9kZWJ1Z2ZzLjguaW4gZGVidWdmcy44CisKK2luc3RhbGxkaXJzOgorCSQoRSkgIglNS0lOU1RBTExESVJTICQocm9vdF9zYmluZGlyKSAkKG1hbjhkaXIpIgorCSQoUSkgJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChyb290X3NiaW5kaXIpIFwKKwkJJChERVNURElSKSQobWFuOGRpcikKKworaW5zdGFsbDogJChQUk9HUykgJChNQU5QQUdFUykgaW5zdGFsbGRpcnMKKwkkKFEpIGZvciBpIGluICQoUFJPR1MpOyBkbyBcCisJCWVjaG8gIglJTlNUQUxMICQocm9vdF9zYmluZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGkgJChERVNURElSKSQocm9vdF9zYmluZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKE1BTlBBR0VTKTsgZG8gXAorCQlmb3IgaiBpbiAkKENPTVBSRVNTX0VYVCk7IGRvIFwKKwkJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjhkaXIpLyQkaS4kJGo7IFwKKwkJZG9uZTsgXAorCQllY2hvICIJSU5TVEFMTF9EQVRBICQobWFuOGRpcikvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKG1hbjhkaXIpLyQkaTsgXAorCWRvbmUKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCSQoUSkgZm9yIGkgaW4gJChQUk9HUyk7IGRvIFwKKwkJZWNobyAiCVNUUklQICQocm9vdF9zYmluZGlyKS8kJGkiOyBcCisJCSQoU1RSSVApICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCit1bmluc3RhbGw6CisJZm9yIGkgaW4gJChQUk9HUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQocm9vdF9zYmluZGlyKS8kJGk7IFwKKwlkb25lCisJZm9yIGkgaW4gJChNQU5QQUdFUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQobWFuOGRpcikvJCRpOyBcCisJZG9uZQorCitjbGVhbjo6CisJJChSTSkgLWYgJChQUk9HUykgZGVidWdmcy44IFwjKiAqLnMgKi5vICouYSAqfiBkZWJ1Z19jbWRzLmMgXAorCQlleHRlbnRfY21kcy5jIHJvX2RlYnVnX2NtZHMuYyBjb3JlIHJkZWJ1Z2ZzIGRlYnVnZnMuc3RhdGljIFwKKwkJdHN0X3NldF9maWVsZHMKKworbW9zdGx5Y2xlYW46IGNsZWFuCitkaXN0Y2xlYW46IGNsZWFuCisJJChSTSkgLWYgZGVidWdfY21kcy5jIC5kZXBlbmQgTWFrZWZpbGUgJChzcmNkaXIpL1RBR1MgXAorCQkkKHNyY2RpcikvTWFrZWZpbGUuaW4ub2xkICQoc3JjZGlyKS9yZWNvdmVyeS5jIFwKKwkJJChzcmNkaXIpL3Jldm9rZS5jCisKK3RzdF9zZXRfZmllbGRzOiBzZXRfZmllbGRzLmMgdXRpbC5jCisJJChFKSAiICBMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgJChTWVNMSUJTKSAtRFVOSVRURVNUIFwKKwkJLW8gdHN0X3NldF9maWVsZHMgJChzcmNkaXIpL3NldF9maWVsZHMuYyAkKHNyY2RpcikvdXRpbC5jICQoTElCUykKKworY2hlY2s6OiB0c3Rfc2V0X2ZpZWxkcworCSQoVEVTVEVOVikgLi90c3Rfc2V0X2ZpZWxkcworCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK2RlYnVnX2NtZHMubzogZGVidWdfY21kcy5jICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitkZWJ1Z2ZzLm86ICQoc3JjZGlyKS9kZWJ1Z2ZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHRvcF9zcmNkaXIpL3ZlcnNpb24uaCBcCisgJChzcmNkaXIpLy4uL2UyZnNjay9qZnNfdXNlci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcGxhdXNpYmxlLmgKK3V0aWwubzogJChzcmNkaXIpL3V0aWwuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbHMubzogJChzcmNkaXIpL2xzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbmNoZWNrLm86ICQoc3JjZGlyKS9uY2hlY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitpY2hlY2subzogJChzcmNkaXIpL2ljaGVjay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2xzZGVsLm86ICQoc3JjZGlyKS9sc2RlbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2R1bXAubzogJChzcmNkaXIpL2R1bXAuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitzZXRfZmllbGRzLm86ICQoc3JjZGlyKS9zZXRfZmllbGRzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbG9nZHVtcC5vOiAkKHNyY2RpcikvbG9nZHVtcC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpLy4uL2UyZnNjay9qZnNfdXNlci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWpiZC5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtbGlzdC5oCitodHJlZS5vOiAkKHNyY2RpcikvaHRyZWUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCit1bnVzZWQubzogJChzcmNkaXIpL3VudXNlZC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2UyZnJlZWZyYWcubzogJChzcmNkaXIpLy4uL21pc2MvZTJmcmVlZnJhZy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9lMmZyZWVmcmFnLmggJChzcmNkaXIpL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorZmlsZWZyYWcubzogJChzcmNkaXIpL2ZpbGVmcmFnLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorZXh0ZW50X2lub2RlLm86ICQoc3JjZGlyKS9leHRlbnRfaW5vZGUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCit6YXAubzogJChzcmNkaXIpL3phcC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2NyZWF0ZV9pbm9kZS5vOiAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2ZpZW1hcC5oICQoc3JjZGlyKS8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmgKK3hhdHRycy5vOiAkKHNyY2RpcikveGF0dHJzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorcXVvdGEubzogJChzcmNkaXIpL3F1b3RhLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9kZWJ1Z2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAoram91cm5hbC5vOiAkKHNyY2Rpcikvam91cm5hbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvLi4vZTJmc2NrL2pmc191c2VyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmgKK3Jldm9rZS5vOiAkKHNyY2RpcikvLi4vZTJmc2NrL3Jldm9rZS5jICQoc3JjZGlyKS8uLi9lMmZzY2svamZzX3VzZXIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1qYmQuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvamZzX2NvbXBhdC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWxpc3QuaAorcmVjb3ZlcnkubzogJChzcmNkaXIpLy4uL2UyZnNjay9yZWNvdmVyeS5jICQoc3JjZGlyKS8uLi9lMmZzY2svamZzX3VzZXIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1qYmQuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvamZzX2NvbXBhdC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWxpc3QuaAorZG9fam91cm5hbC5vOiAkKHNyY2RpcikvZG9fam91cm5hbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpLy4uL2UyZnNjay9qZnNfdXNlci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWpiZC5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtbGlzdC5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9kZWJ1Z19jbWRzLmN0IGIvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdfY21kcy5jdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmY2YzlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdfY21kcy5jdApAQCAtMCwwICsxLDIzMyBAQAorIworIyBDb3B5cmlnaHQgKEMpIDE5OTMgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyMKK2NvbW1hbmRfdGFibGUgZGVidWdfY21kczsKKworcmVxdWVzdCBkb19zaG93X2RlYnVnZnNfcGFyYW1zLCAiU2hvdyBkZWJ1Z2ZzIHBhcmFtZXRlcnMiLAorCXNob3dfZGVidWdmc19wYXJhbXMsIHBhcmFtczsKKworcmVxdWVzdCBkb19vcGVuX2ZpbGVzeXMsICJPcGVuIGEgZmlsZXN5c3RlbSIsCisJb3Blbl9maWxlc3lzLCBvcGVuOworCityZXF1ZXN0IGRvX2Nsb3NlX2ZpbGVzeXMsICJDbG9zZSB0aGUgZmlsZXN5c3RlbSIsCisJY2xvc2VfZmlsZXN5cywgY2xvc2U7CisKK3JlcXVlc3QgZG9fZnJlZWZyYWcsICJSZXBvcnQgZnJlZSBzcGFjZSBmcmFnbWVudGF0aW9uIiwKKwlmcmVlZnJhZywgZTJmcmVlZnJhZzsKKworcmVxdWVzdCBkb19mZWF0dXJlcywgIlNldC9wcmludCBzdXBlcmJsb2NrIGZlYXR1cmVzIiwKKwlmZWF0dXJlLCBmZWF0dXJlczsKKworcmVxdWVzdCBkb19kaXJ0eV9maWxlc3lzLCAiTWFyayB0aGUgZmlsZXN5c3RlbSBhcyBkaXJ0eSIsCisJZGlydHlfZmlsZXN5cywgZGlydHk7CisKK3JlcXVlc3QgZG9faW5pdF9maWxlc3lzLCAiSW5pdGlhbGl6ZSBhIGZpbGVzeXN0ZW0gKERFU1RST1lTIERBVEEpIiwKKwlpbml0X2ZpbGVzeXM7CisKK3JlcXVlc3QgZG9fc2hvd19zdXBlcl9zdGF0cywgIlNob3cgc3VwZXJibG9jayBzdGF0aXN0aWNzIiwKKwlzaG93X3N1cGVyX3N0YXRzLCBzdGF0czsKKworcmVxdWVzdCBkb19uY2hlY2ssICJEbyBpbm9kZS0+bmFtZSB0cmFuc2xhdGlvbiIsCisJbmNoZWNrOworCityZXF1ZXN0IGRvX2ljaGVjaywgIkRvIGJsb2NrLT5pbm9kZSB0cmFuc2xhdGlvbiIsCisJaWNoZWNrOworCityZXF1ZXN0IGRvX2Nocm9vdCwgIkNoYW5nZSByb290IGRpcmVjdG9yeSIsCisJY2hhbmdlX3Jvb3RfZGlyZWN0b3J5LCBjaHJvb3Q7CisKK3JlcXVlc3QgZG9fY2hhbmdlX3dvcmtpbmdfZGlyLCAiQ2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IiwKKwljaGFuZ2Vfd29ya2luZ19kaXJlY3RvcnksIGNkOworCityZXF1ZXN0IGRvX2xpc3RfZGlyLCAiTGlzdCBkaXJlY3RvcnkiLAorCWxpc3RfZGlyZWN0b3J5LCBsczsKKworcmVxdWVzdCBkb19zdGF0LCAiU2hvdyBpbm9kZSBpbmZvcm1hdGlvbiAiLAorCXNob3dfaW5vZGVfaW5mbywgc3RhdDsKKworcmVxdWVzdCBkb19kdW1wX2V4dGVudHMsICJEdW1wIGV4dGVudHMgaW5mb3JtYXRpb24gIiwKKwlkdW1wX2V4dGVudHMsIGV4dGVudHMsIGV4OworCityZXF1ZXN0IGRvX2Jsb2NrcywgIkR1bXAgYmxvY2tzIHVzZWQgYnkgYW4gaW5vZGUgIiwKKwlibG9ja3M7CisKK3JlcXVlc3QgZG9fZmlsZWZyYWcsICJSZXBvcnQgZnJhZ21lbnRhdGlvbiBpbmZvcm1hdGlvbiBmb3IgYW4gaW5vZGUiLAorCWZpbGVmcmFnOworCityZXF1ZXN0IGRvX2xpbmssICJDcmVhdGUgZGlyZWN0b3J5IGxpbmsiLAorCWxpbmssIGxuOworCityZXF1ZXN0IGRvX3VubGluaywgIkRlbGV0ZSBhIGRpcmVjdG9yeSBsaW5rIiwKKwl1bmxpbms7CisKK3JlcXVlc3QgZG9fbWtkaXIsICJDcmVhdGUgYSBkaXJlY3RvcnkiLAorCW1rZGlyOworCityZXF1ZXN0IGRvX3JtZGlyLCAiUmVtb3ZlIGEgZGlyZWN0b3J5IiwKKwlybWRpcjsKKworcmVxdWVzdCBkb19ybSwgIlJlbW92ZSBhIGZpbGUgKHVubGluayBhbmQga2lsbF9maWxlLCBpZiBhcHByb3ByaWF0ZSkiLAorCXJtOworCityZXF1ZXN0IGRvX2tpbGxfZmlsZSwgIkRlYWxsb2NhdGUgYW4gaW5vZGUgYW5kIGl0cyBibG9ja3MiLAorCWtpbGxfZmlsZTsKKworcmVxdWVzdCBkb19jb3B5X2lub2RlLCAiQ29weSB0aGUgaW5vZGUgc3RydWN0dXJlIiwKKwljb3B5X2lub2RlOworCityZXF1ZXN0IGRvX2NscmksICJDbGVhciBhbiBpbm9kZSdzIGNvbnRlbnRzIiwKKwljbHJpOworCityZXF1ZXN0IGRvX2ZyZWVpLCAiQ2xlYXIgYW4gaW5vZGUncyBpbi11c2UgZmxhZyIsCisJZnJlZWk7CisKK3JlcXVlc3QgZG9fc2V0aSwgIlNldCBhbiBpbm9kZSdzIGluLXVzZSBmbGFnIiwKKwlzZXRpOworCityZXF1ZXN0IGRvX3Rlc3RpLCAiVGVzdCBhbiBpbm9kZSdzIGluLXVzZSBmbGFnIiwKKwl0ZXN0aTsKKworcmVxdWVzdCBkb19mcmVlYiwgIkNsZWFyIGEgYmxvY2sncyBpbi11c2UgZmxhZyIsCisJZnJlZWI7CisKK3JlcXVlc3QgZG9fc2V0YiwgIlNldCBhIGJsb2NrJ3MgaW4tdXNlIGZsYWciLAorCXNldGI7CisKK3JlcXVlc3QgZG9fdGVzdGIsICJUZXN0IGEgYmxvY2sncyBpbi11c2UgZmxhZyIsCisJdGVzdGI7CisKK3JlcXVlc3QgZG9fbW9kaWZ5X2lub2RlLCAiTW9kaWZ5IGFuIGlub2RlIGJ5IHN0cnVjdHVyZSIsCisJbW9kaWZ5X2lub2RlLCBtaTsKKworcmVxdWVzdCBkb19maW5kX2ZyZWVfYmxvY2ssICJGaW5kIGZyZWUgYmxvY2socykiLAorCWZpbmRfZnJlZV9ibG9jaywgZmZiOworCityZXF1ZXN0IGRvX2ZpbmRfZnJlZV9pbm9kZSwgIkZpbmQgZnJlZSBpbm9kZShzKSIsCisJZmluZF9mcmVlX2lub2RlLCBmZmk7CisKK3JlcXVlc3QJZG9fcHJpbnRfd29ya2luZ19kaXJlY3RvcnksICJQcmludCBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IiwKKwlwcmludF93b3JraW5nX2RpcmVjdG9yeSwgcHdkOyAKKworcmVxdWVzdAlkb19leHBhbmRfZGlyLCAiRXhwYW5kIGRpcmVjdG9yeSIsCisJZXhwYW5kX2RpciwgZXhwYW5kOworCityZXF1ZXN0IGRvX21rbm9kLCAiQ3JlYXRlIGEgc3BlY2lhbCBmaWxlIiwKKwlta25vZDsKKworcmVxdWVzdCBkb19sc2RlbCwgIkxpc3QgZGVsZXRlZCBpbm9kZXMiLAorCWxpc3RfZGVsZXRlZF9pbm9kZXMsIGxzZGVsOworCityZXF1ZXN0IGRvX3VuZGVsLCAiVW5kZWxldGUgZmlsZSIsCisJdW5kZWxldGUsIHVuZGVsOworCityZXF1ZXN0IGRvX3dyaXRlLCAiQ29weSBhIGZpbGUgZnJvbSB5b3VyIG5hdGl2ZSBmaWxlc3lzdGVtIiwKKwl3cml0ZTsKKworcmVxdWVzdCBkb19kdW1wLCAiRHVtcCBhbiBpbm9kZSBvdXQgdG8gYSBmaWxlIiwKKwlkdW1wX2lub2RlLCBkdW1wOworCityZXF1ZXN0IGRvX2NhdCwgIkR1bXAgYW4gaW5vZGUgb3V0IHRvIHN0ZG91dCIsCisJY2F0OworCityZXF1ZXN0IGRvX2xjZCwgIkNoYW5nZSB0aGUgY3VycmVudCBkaXJlY3Rvcnkgb24geW91ciBuYXRpdmUgZmlsZXN5c3RlbSIsCisJbGNkOworCityZXF1ZXN0IGRvX3JkdW1wLCAiUmVjdXJzaXZlbHkgZHVtcCBhIGRpcmVjdG9yeSB0byB0aGUgbmF0aXZlIGZpbGVzeXN0ZW0iLAorCXJkdW1wOworCityZXF1ZXN0IGRvX3NldF9zdXBlciwgIlNldCBzdXBlcmJsb2NrIHZhbHVlIiwKKwlzZXRfc3VwZXJfdmFsdWUsIHNzdjsKKworcmVxdWVzdCBkb19zZXRfaW5vZGUsICJTZXQgaW5vZGUgZmllbGQiLAorCXNldF9pbm9kZV9maWVsZCwgc2lmOworCityZXF1ZXN0IGRvX3NldF9ibG9ja19ncm91cF9kZXNjcmlwdG9yLCAiU2V0IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgZmllbGQiLAorCXNldF9ibG9ja19ncm91cCwgc2V0X2JnOworCityZXF1ZXN0IGRvX2xvZ2R1bXAsICJEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgam91cm5hbCIsCisJbG9nZHVtcDsKKworcmVxdWVzdCBkb19odHJlZV9kdW1wLCAiRHVtcCBhIGhhc2gtaW5kZXhlZCBkaXJlY3RvcnkiLAorCWh0cmVlX2R1bXAsIGh0cmVlOworCityZXF1ZXN0IGRvX2R4X2hhc2gsICJDYWxjdWxhdGUgdGhlIGRpcmVjdG9yeSBoYXNoIG9mIGEgZmlsZW5hbWUiLAorCWR4X2hhc2gsIGhhc2g7CisKK3JlcXVlc3QgZG9fZGlyc2VhcmNoLCAiU2VhcmNoIGEgZGlyZWN0b3J5IGZvciBhIHBhcnRpY3VsYXIgZmlsZW5hbWUiLAorCWRpcnNlYXJjaDsKKworcmVxdWVzdCBkb19ibWFwLCAiQ2FsY3VsYXRlIHRoZSBsb2dpY2FsLT5waHlzaWNhbCBibG9jayBtYXBwaW5nIGZvciBhbiBpbm9kZSIsCisJYm1hcDsKKworcmVxdWVzdCBkb19mYWxsb2NhdGUsICJBbGxvY2F0ZSB1bmluaXRpYWxpemVkIGJsb2NrcyB0byBhbiBpbm9kZSIsCisJZmFsbG9jYXRlOworCityZXF1ZXN0IGRvX3B1bmNoLCAiUHVuY2ggKG9yIHRydW5jYXRlKSBibG9ja3MgZnJvbSBhbiBpbm9kZSBieSBkZWFsbG9jYXRpbmcgdGhlbSIsCisJcHVuY2gsIHRydW5jYXRlOworCityZXF1ZXN0IGRvX3N5bWxpbmssICJDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIiwKKwlzeW1saW5rOworCityZXF1ZXN0IGRvX2ltYXAsICJDYWxjdWxhdGUgdGhlIGxvY2F0aW9uIG9mIGFuIGlub2RlIiwKKwlpbWFwOworCityZXF1ZXN0CWRvX2R1bXBfdW51c2VkLCAiRHVtcCB1bnVzZWQgYmxvY2tzIiwKKwlkdW1wX3VudXNlZDsKKworcmVxdWVzdCBkb19zZXRfY3VycmVudF90aW1lLCAiU2V0IGN1cnJlbnQgdGltZSB0byB1c2Ugd2hlbiBzZXR0aW5nIGZpbGVzeXN0ZW0gZmllbGRzIiwKKwlzZXRfY3VycmVudF90aW1lOworCityZXF1ZXN0IGRvX3N1cHBvcnRlZF9mZWF0dXJlcywgIlByaW50IGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgZTJmc3Byb2dzIiwKKwlzdXBwb3J0ZWRfZmVhdHVyZXM7CisKK3JlcXVlc3QgZG9fZHVtcF9tbXAsICJEdW1wIE1NUCBpbmZvcm1hdGlvbiIsCisJZHVtcF9tbXA7CisKK3JlcXVlc3QgZG9fc2V0X21tcF92YWx1ZSwgIlNldCBNTVAgdmFsdWUiLAorCXNldF9tbXBfdmFsdWUsIHNtbXA7CisKK3JlcXVlc3QgZG9fZXh0ZW50X29wZW4sICJPcGVuIGlub2RlIGZvciBleHRlbnQgbWFuaXB1bGF0aW9uIiwKKwlleHRlbnRfb3BlbiwgZW87CisKK3JlcXVlc3QgZG9femFwX2Jsb2NrLCAiWmFwIGJsb2NrOiBmaWxsIHdpdGggMCwgcGF0dGVybiwgZmxpcCBiaXRzIGV0Yy4iLAorCXphcF9ibG9jaywgemFwOworCityZXF1ZXN0IGRvX2Jsb2NrX2R1bXAsICJEdW1wIGNvbnRlbnRzIG9mIGEgYmxvY2siLAorCWJsb2NrX2R1bXAsIGJkdW1wLCBiZDsKKworcmVxdWVzdCBkb19saXN0X3hhdHRyLCAiTGlzdCBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIGFuIGlub2RlIiwKKwllYV9saXN0OworCityZXF1ZXN0IGRvX2dldF94YXR0ciwgIkdldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgb2YgYW4gaW5vZGUiLAorCWVhX2dldDsKKworcmVxdWVzdCBkb19zZXRfeGF0dHIsICJTZXQgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIG9mIGFuIGlub2RlIiwKKwllYV9zZXQ7CisKK3JlcXVlc3QgZG9fcm1feGF0dHIsICJSZW1vdmUgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIG9mIGFuIGlub2RlIiwKKwllYV9ybTsKKworcmVxdWVzdCBkb19saXN0X3F1b3RhLCAiTGlzdCBxdW90YSIsCisJbGlzdF9xdW90YSwgbHE7CisKK3JlcXVlc3QgZG9fZ2V0X3F1b3RhLCAiR2V0IHF1b3RhIiwKKwlnZXRfcXVvdGEsIGdxOworCityZXF1ZXN0IGRvX2lkdW1wLCAiRHVtcCB0aGUgaW5vZGUgc3RydWN0dXJlIGluIGhleCIsCisJaW5vZGVfZHVtcCwgaWR1bXAsIGlkOworCityZXF1ZXN0IGRvX2pvdXJuYWxfb3BlbiwgIk9wZW4gdGhlIGpvdXJuYWwiLAorCWpvdXJuYWxfb3Blbiwgam87CisKK3JlcXVlc3QgZG9fam91cm5hbF9jbG9zZSwgIkNsb3NlIHRoZSBqb3VybmFsIiwKKwlqb3VybmFsX2Nsb3NlLCBqYzsKKworcmVxdWVzdCBkb19qb3VybmFsX3dyaXRlLCAiV3JpdGUgYSB0cmFuc2FjdGlvbiB0byB0aGUgam91cm5hbCIsCisJam91cm5hbF93cml0ZSwganc7CisKK3JlcXVlc3QgZG9fam91cm5hbF9ydW4sICJSZWNvdmVyIHRoZSBqb3VybmFsIiwKKwlqb3VybmFsX3J1biwganI7CisKK2VuZDsKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdmcy44LmluIGIvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdmcy44LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNTFkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9kZWJ1Z2ZzLjguaW4KQEAgLTAsMCArMSw4MjMgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBERUJVR0ZTIDggIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2RlYnVnZnMgXC0gZXh0Mi9leHQzL2V4dDQgZmlsZSBzeXN0ZW0gZGVidWdnZXIKKy5TSCBTWU5PUFNJUworLkIgZGVidWdmcworWworLkIgXC1EVndjaW4KK10KK1sKKy5CIFwtYgorYmxvY2tzaXplCitdCitbCisuQiBcLXMKK3N1cGVyYmxvY2sKK10KK1sKKy5CIFwtZgorY21kX2ZpbGUKK10KK1sKKy5CIFwtUgorcmVxdWVzdAorXQorWworLkIgXC1kCitkYXRhX3NvdXJjZV9kZXZpY2UKK10KK1sKKy5CIFwtegorLkkgdW5kb19maWxlCitdCitbCitkZXZpY2UKK10KKy5TSCBERVNDUklQVElPTgorVGhlCisuQiBkZWJ1Z2ZzCitwcm9ncmFtIGlzIGFuIGludGVyYWN0aXZlIGZpbGUgc3lzdGVtIGRlYnVnZ2VyLiBJdCBjYW4gYmUgdXNlZCB0bworZXhhbWluZSBhbmQgY2hhbmdlIHRoZSBzdGF0ZSBvZiBhbiBleHQyLCBleHQzLCBvciBleHQ0IGZpbGUgc3lzdGVtLgorLlBQCisuSSBkZXZpY2UKK2lzIGEgYmxvY2sgZGV2aWNlIChlLmcuLCAvZGV2L3NkWFgpIG9yIGEgZmlsZSBjb250YWluaW5nIHRoZSBmaWxlIHN5c3RlbS4KKy5TSCBPUFRJT05TCisuVFAKKy5JIFwtdworU3BlY2lmaWVzIHRoYXQgdGhlIGZpbGUgc3lzdGVtIHNob3VsZCBiZSBvcGVuZWQgaW4gcmVhZC13cml0ZSBtb2RlLgorV2l0aG91dCB0aGlzIG9wdGlvbiwgdGhlIGZpbGUgc3lzdGVtIGlzIG9wZW5lZCBpbiByZWFkLW9ubHkgbW9kZS4KKy5UUAorLkkgXC1uCitEaXNhYmxlcyBtZXRhZGF0YSBjaGVja3N1bSB2ZXJpZmljYXRpb24uICBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgaWYKK3lvdSBiZWxpZXZlIHRoZSBtZXRhZGF0YSB0byBiZSBjb3JyZWN0IGRlc3BpdGUgdGhlIGNvbXBsYWludHMgb2YKK2UyZnNwcm9ncy4KKy5UUAorLkkgXC1jCitTcGVjaWZpZXMgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gc2hvdWxkIGJlIG9wZW5lZCBpbiBjYXRhc3Ryb3BoaWMgbW9kZSwgaW4KK3doaWNoIHRoZSBpbm9kZSBhbmQgZ3JvdXAgYml0bWFwcyBhcmUgbm90IHJlYWQgaW5pdGlhbGx5LiAgVGhpcyBjYW4gYmUKK3VzZWZ1bCBmb3IgZmlsZXN5c3RlbXMgd2l0aCBzaWduaWZpY2FudCBjb3JydXB0aW9uLCBidXQgYmVjYXVzZSBvZiB0aGlzLAorY2F0YXN0cm9waGljIG1vZGUgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIHRvIGJlIG9wZW5lZCByZWFkLW9ubHkuCisuVFAKKy5JIFwtaQorU3BlY2lmaWVzIHRoYXQKKy5JIGRldmljZQorcmVwcmVzZW50cyBhbiBleHQyIGltYWdlIGZpbGUgY3JlYXRlZCBieSB0aGUKKy5CIGUyaW1hZ2UKK3Byb2dyYW0uICBTaW5jZSB0aGUgZXh0MiBpbWFnZSBmaWxlIG9ubHkgY29udGFpbnMgdGhlIHN1cGVyYmxvY2ssIGJsb2NrCitncm91cCBkZXNjcmlwdG9yLCBibG9jayBhbmQgaW5vZGUgYWxsb2NhdGlvbiBiaXRtYXBzLCBhbmQKK3RoZSBpbm9kZSB0YWJsZSwgbWFueQorLkIgZGVidWdmcworY29tbWFuZHMgd2lsbCBub3QgZnVuY3Rpb24gcHJvcGVybHkuCisuQiBXYXJuaW5nOgorbm8gc2FmZXR5IGNoZWNrcyBhcmUgaW4gcGxhY2UsIGFuZAorLkIgZGVidWdmcworbWF5IGZhaWwgaW4gaW50ZXJlc3Rpbmcgd2F5cyBpZiBjb21tYW5kcyBzdWNoIGFzCisuSVIgbHMgIiwgIiBkdW1wICIsICIKK2V0Yy4gYXJlIHRyaWVkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUKKy5JIGRhdGFfc291cmNlX2RldmljZQordXNpbmcgdGhlCisuSSBcLWQKK29wdGlvbi4KKy5CIGRlYnVnZnMKK2lzIGEgZGVidWdnaW5nIHRvb2wuICBJdCBoYXMgcm91Z2ggZWRnZXMhCisuVFAKKy5JIC1kIGRhdGFfc291cmNlX2RldmljZQorVXNlZCB3aXRoIHRoZQorLkkgXC1pCitvcHRpb24sIHNwZWNpZmllcyB0aGF0CisuSSBkYXRhX3NvdXJjZV9kZXZpY2UKK3Nob3VsZCBiZSB1c2VkIHdoZW4gcmVhZGluZyBibG9ja3Mgbm90IGZvdW5kIGluIHRoZSBleHQyIGltYWdlIGZpbGUuCitUaGlzIGluY2x1ZGVzIGRhdGEsIGRpcmVjdG9yeSwgYW5kIGluZGlyZWN0IGJsb2Nrcy4KKy5UUAorLkkgLWIgYmxvY2tzaXplCitGb3JjZXMgdGhlIHVzZSBvZiB0aGUgZ2l2ZW4gYmxvY2sgc2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgZmlsZSBzeXN0ZW0sCityYXRoZXIgdGhhbiBkZXRlY3RpbmcgdGhlIGNvcnJlY3QgYmxvY2sgc2l6ZSBhdXRvbWF0aWNhbGx5LiAgKFRoaXMKK29wdGlvbiBpcyByYXJlbHkgbmVlZGVkOyBpdCBpcyB1c2VkIHByaW1hcmlseSB3aGVuIHRoZSBmaWxlIHN5c3RlbSBpcworZXh0cmVtZWx5IGJhZGx5IGRhbWFnZWQvY29ycnVwdGVkLikKKy5UUAorLkkgLXMgc3VwZXJibG9jaworQ2F1c2VzIHRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIHRvIGJlIHJlYWQgZnJvbSB0aGUgZ2l2ZW4gYmxvY2sKK251bWJlciwgaW5zdGVhZCBvZiB1c2luZyB0aGUgcHJpbWFyeSBzdXBlcmJsb2NrIChsb2NhdGVkIGF0IGFuIG9mZnNldCBvZgorMTAyNCBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVzeXN0ZW0pLiAgSWYgeW91IHNwZWNpZnkgdGhlCisuSSAtcworb3B0aW9uLCB5b3UgbXVzdCBhbHNvIHByb3ZpZGUgdGhlIGJsb2Nrc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSB2aWEgdGhlCisuSSAtYgorb3B0aW9uLiAgIChUaGlzCitvcHRpb24gaXMgcmFyZWx5IG5lZWRlZDsgaXQgaXMgdXNlZCBwcmltYXJpbHkgd2hlbiB0aGUgZmlsZSBzeXN0ZW0gaXMKK2V4dHJlbWVseSBiYWRseSBkYW1hZ2VkL2NvcnJ1cHRlZC4pCisuVFAKKy5JIC1mIGNtZF9maWxlCitDYXVzZXMKKy5CIGRlYnVnZnMKK3RvIHJlYWQgaW4gY29tbWFuZHMgZnJvbQorLklSIGNtZF9maWxlICwKK2FuZCBleGVjdXRlIHRoZW0uICBXaGVuCisuQiBkZWJ1Z2ZzCitpcyBmaW5pc2hlZCBleGVjdXRpbmcgdGhvc2UgY29tbWFuZHMsIGl0IHdpbGwgZXhpdC4KKy5UUAorLkkgLUQKK0NhdXNlcworLkIgZGVidWdmcwordG8gb3BlbiB0aGUgZGV2aWNlIHVzaW5nIERpcmVjdCBJL08sIGJ5cGFzc2luZyB0aGUgYnVmZmVyIGNhY2hlLiAgTm90ZQordGhhdCBzb21lIExpbnV4IGRldmljZXMsIG5vdGFibHkgZGV2aWNlIG1hcHBlciBhcyBvZiB0aGlzIHdyaXRpbmcsIGRvCitub3Qgc3VwcG9ydCBEaXJlY3QgSS9PLgorLlRQCisuSSAtUiByZXF1ZXN0CitDYXVzZXMKKy5CIGRlYnVnZnMKK3RvIGV4ZWN1dGUgdGhlIHNpbmdsZSBjb21tYW5kCisuSVIgcmVxdWVzdCAsCithbmQgdGhlbiBleGl0LgorLlRQCisuSSAtVgorcHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mCisuQiBkZWJ1Z2ZzCithbmQgZXhpdC4KKy5UUAorLkJJIFwteiAiIHVuZG9fZmlsZSIKK0JlZm9yZSBvdmVyd3JpdGluZyBhIGZpbGUgc3lzdGVtIGJsb2NrLCB3cml0ZSB0aGUgb2xkIGNvbnRlbnRzIG9mIHRoZSBibG9jayB0bworYW4gdW5kbyBmaWxlLiAgVGhpcyB1bmRvIGZpbGUgY2FuIGJlIHVzZWQgd2l0aCBlMnVuZG8oOCkgdG8gcmVzdG9yZSB0aGUgb2xkCitjb250ZW50cyBvZiB0aGUgZmlsZSBzeXN0ZW0gc2hvdWxkIHNvbWV0aGluZyBnbyB3cm9uZy4gIElmIHRoZSBlbXB0eSBzdHJpbmcgaXMKK3Bhc3NlZCBhcyB0aGUgdW5kb19maWxlIGFyZ3VtZW50LCB0aGUgdW5kbyBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byBhIGZpbGUgbmFtZWQKK3Jlc2l6ZTJmcy1cZklkZXZpY2VcZlIuZTJ1bmRvIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIHZpYSB0aGUKK1xmSUUyRlNQUk9HU19VTkRPX0RJUlxmUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworV0FSTklORzogVGhlIHVuZG8gZmlsZSBjYW5ub3QgYmUgdXNlZCB0byByZWNvdmVyIGZyb20gYSBwb3dlciBvciBzeXN0ZW0gY3Jhc2guCisuU0ggU1BFQ0lGWUlORyBGSUxFUworTWFueQorLkIgZGVidWdmcworY29tbWFuZHMgdGFrZSBhCisuSSBmaWxlc3BlYworYXMgYW4gYXJndW1lbnQgdG8gc3BlY2lmeSBhbiBpbm9kZSAoYXMgb3Bwb3NlZCB0byBhIHBhdGhuYW1lKQoraW4gdGhlIGZpbGVzeXN0ZW0gd2hpY2ggaXMgY3VycmVudGx5IG9wZW5lZCBieQorLkJSIGRlYnVnZnMgLgorVGhlCisuSSBmaWxlc3BlYworYXJndW1lbnQgbWF5IGJlIHNwZWNpZmllZCBpbiB0d28gZm9ybXMuICBUaGUgZmlyc3QgZm9ybSBpcyBhbiBpbm9kZQorbnVtYmVyIHN1cnJvdW5kZWQgYnkgYW5nbGUgYnJhY2tldHMsIGUuZy4sCisuSVIgPDI+IC4KK1RoZSBzZWNvbmQgZm9ybSBpcyBhIHBhdGhuYW1lOyBpZiB0aGUgcGF0aG5hbWUgaXMgcHJlZml4ZWQgYnkgYSBmb3J3YXJkIHNsYXNoCisoJy8nKSwgdGhlbiBpdCBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byB0aGUgcm9vdCBvZiB0aGUgZmlsZXN5c3RlbQord2hpY2ggaXMgY3VycmVudGx5IG9wZW5lZCBieQorLkJSIGRlYnVnZnMgLgorSWYgbm90LCB0aGUgcGF0aG5hbWUgaXMKK2ludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFzIG1haW50YWluZWQgYnkKKy5CUiBkZWJ1Z2ZzIC4KK1RoaXMgbWF5IGJlIG1vZGlmaWVkIGJ5IHVzaW5nIHRoZQorLkIgZGVidWdmcworY29tbWFuZAorLklSIGNkIC4KKy5cIgorLlwiCisuXCIKKy5TSCBDT01NQU5EUworVGhpcyBpcyBhIGxpc3Qgb2YgdGhlIGNvbW1hbmRzIHdoaWNoCisuQiBkZWJ1Z2ZzCitzdXBwb3J0cy4KKy5UUAorLkJJIGJsb2NrcyAiIGZpbGVzcGFjZSIKK1ByaW50IHRoZSBibG9ja3MgdXNlZCBieSB0aGUgaW5vZGUKKy5JIGZpbGVzcGVjCit0byBzdGRvdXQuCisuVFAKKy5CSSBibWFwICIgWyAtYSBdIGZpbGVzcGVjIGxvZ2ljYWxfYmxvY2sgW3BoeXNpY2FsX2Jsb2NrXSIKK1ByaW50IG9yIHNldCB0aGUgcGh5c2ljYWwgYmxvY2sgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvZ2ljYWwgYmxvY2sgbnVtYmVyCisuSSBsb2dpY2FsX2Jsb2NrCitpbiB0aGUgaW5vZGUKKy5JUiBmaWxlc3BlYyAuCitJZiB0aGUKKy5JIC1hCitmbGFnIGlzIHNwZWNpZmllZCwgdHJ5IHRvIGFsbG9jYXRlIGEgYmxvY2sgaWYgbmVjZXNzYXJ5LgorLlRQCisuQkkgYmxvY2tfZHVtcCAiIFstZiBmaWxlc3BlY10gYmxvY2tfbnVtIgorRHVtcCB0aGUgZmlsZXN5c3RlbSBibG9jayBnaXZlbiBieQorLkkgYmxvY2tfbnVtCitpbiBoZXggYW5kIEFTQ0lJIGZvcm1hdCB0byB0aGUgY29uc29sZS4gIElmIHRoZQorLkkgLWYKK29wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZSBibG9jayBudW1iZXIgaXMgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBnaXZlbgorLkJSIGZpbGVzcGVjIC4KKy5UUAorLkJJIGNhdCAiIGZpbGVzcGVjIgorRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGlub2RlCisuSSBmaWxlc3BlYwordG8gc3Rkb3V0LgorLlRQCisuQkkgY2QgIiBmaWxlc3BlYyIKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0bworLklSIGZpbGVzcGVjIC4KKy5UUAorLkJJIGNocm9vdCAiIGZpbGVzcGVjIgorQ2hhbmdlIHRoZSByb290IGRpcmVjdG9yeSB0byBiZSB0aGUgZGlyZWN0b3J5CisuSVIgZmlsZXNwZWMgLgorLlRQCisuQkkgY2xvc2UgIiBbLWFdIgorQ2xvc2UgdGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgc3lzdGVtLiAgSWYgdGhlCisuSSAtYQorb3B0aW9uIGlzIHNwZWNpZmllZCwgd3JpdGUgb3V0IGFueSBjaGFuZ2VzIHRvIHRoZSBzdXBlcmJsb2NrIGFuZCBibG9jaworZ3JvdXAgZGVzY3JpcHRvcnMgdG8gYWxsIG9mIHRoZSBiYWNrdXAgc3VwZXJibG9ja3MsIG5vdCBqdXN0IHRvIHRoZQorbWFzdGVyIHN1cGVyYmxvY2suCisuVFAKKy5CSSBjbHJpICIgZmlsZXNwZWMiCitDbGVhciB0aGUgY29udGVudHMgb2YgdGhlIGlub2RlCisuSVIgZmlsZXNwZWMgLgorLlRQCisuQkkgY29weV9pbm9kZSAiIHNvdXJjZV9pbm9kZSBkZXN0aW5hdGlvbl9pbm9kZSIKK0NvcHkgdGhlIGNvbmVudHMgb2YgdGhlIGlub2RlIHN0cnVjdHVyZSBpbgorLkkgc291cmNlX2lub2RlCithbmQgdXNlIGl0IHRvIG92ZXJ3cml0ZSB0aGUgaW5vZGUgc3RydWN0dXJlIGF0CisuSVIgZGVzdGluYXRpb25faW5vZGUgLgorLlRQCisuQkkgZGlyc2VhcmNoICIgZmlsZXNwZWMgZmlsZW5hbWUiCitTZWFyY2ggdGhlIGRpcmVjdG9yeQorLkkgZmlsZXNwZWMKK2ZvcgorLklSIGZpbGVuYW1lIC4KKy5UUAorLkIgZGlydHkKK01hcmsgdGhlIGZpbGVzeXN0ZW0gYXMgZGlydHksIHNvIHRoYXQgdGhlIHN1cGVyYmxvY2tzIHdpbGwgYmUgd3JpdHRlbiBvbiBleGl0LgorLlRQCisuQkkgZHVtcCAiIFstcF0gZmlsZXNwZWMgb3V0X2ZpbGUiCitEdW1wIHRoZSBjb250ZW50cyBvZiB0aGUgaW5vZGUKKy5JIGZpbGVzcGVjCit0byB0aGUgb3V0cHV0IGZpbGUKKy5JUiBvdXRfZmlsZSAuCitJZiB0aGUKKy5JIC1wCitvcHRpb24gaXMgZ2l2ZW4gc2V0IHRoZSBvd25lciwgZ3JvdXAgYW5kIHBlcm1pc3Npb25zIGluZm9ybWF0aW9uIG9uCisuSSBvdXRfZmlsZQordG8gbWF0Y2gKKy5JUiBmaWxlc3BlYyAuCisuVFAKKy5CSSBkdW1wX21tcCAiIFttbXBfYmxvY2tdIgorRGlzcGxheSB0aGUgbXVsdGlwbGUtbW91bnQgcHJvdGVjdGlvbiAobW1wKSBmaWVsZCB2YWx1ZXMuICBJZgorLkkgbW1wX2Jsb2NrCitpcyBzcGVjaWZpZWQgdGhlbiB2ZXJpZnkgYW5kIGR1bXAgdGhlIE1NUCB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gYmxvY2sKK251bWJlciwgb3RoZXJ3aXNlIHVzZSB0aGUKKy5CIHNfbW1wX2Jsb2NrCitmaWVsZCBpbiB0aGUgc3VwZXJibG9jayB0byBsb2NhdGUgYW5kIHVzZSB0aGUgZXhpc3RpbmcgTU1QIGJsb2NrLgorLlRQCisuQkkgZHhfaGFzaCAiIFstaCBoYXNoX2FsZ10gWy1zIGhhc2hfc2VlZF0gZmlsZW5hbWUiCitDYWxjdWxhdGUgdGhlIGRpcmVjdG9yeSBoYXNoIG9mCisuSVIgZmlsZW5hbWUgLgorVGhlIGhhc2ggYWxnb3JpdGhtIHNwZWNpZmllZCB3aXRoCisuSSAtaAorbWF5IGJlCisuQlIgbGVnYWN5ICwgIiBoYWxmX21kNCIgIiwgb3IgIiB0ZWEgLgorVGhlIGhhc2ggc2VlZCBzcGVjaWZpZWQgd2l0aAorLkkgLXMKK211c3QgYmUgaW4gVVVJRCBmb3JtYXQuCisuVFAKKy5CSSBkdW1wX2V4dGVudHMgIiBbLW5dIFstbF0gZmlsZXNwZWMiCitEdW1wIHRoZSB0aGUgZXh0ZW50IHRyZWUgb2YgdGhlIGlub2RlCisuSVIgZmlsZXNwZWMgLgorVGhlCisuSSAtbgorZmxhZyB3aWxsIGNhdXNlCisuQiBkdW1wX2V4dGVudHMKK3RvIG9ubHkgZGlzcGxheSB0aGUgaW50ZXJpb3Igbm9kZXMgaW4gdGhlIGV4dGVudCB0cmVlLiAgIFRoZQorLkkgLWwKK2ZsYWcgd2lsbCBjYXVzZQorLkIgZHVtcF9leHRlbnRzCit0byBvbmx5IGRpc3BsYXkgdGhlIGxlYWYgbm9kZXMgaW4gdGhlIGV4dGVudCB0cmVlLgorLklQCisoUGxlYXNlIG5vdGUgdGhhdCB0aGUgbGVuZ3RoIGFuZCByYW5nZSBvZiBibG9ja3MgZm9yIHRoZSBsYXN0IGV4dGVudCBpbgorYW4gaW50ZXJpb3Igbm9kZSBpcyBhbiBlc3RpbWF0ZSBieSB0aGUgZXh0ZW50cyBsaWJyYXJ5IGZ1bmN0aW9ucywgYW5kIGlzCitub3Qgc3RvcmVkIGluIGZpbGVzeXN0ZW0gZGF0YSBzdHJ1Y3R1cmVzLiAgIEhlbmNlLCB0aGUgdmFsdWVzIGRpc3BsYXllZAorbWF5IG5vdCBuZWNlc3NhcmlseSBieSBhY2N1cmF0ZSBhbmQgZG9lcyBub3QgaW5kaWNhdGUgYSBwcm9ibGVtIG9yCitjb3JydXB0aW9uIGluIHRoZSBmaWxlIHN5c3RlbS4pCisuVFAKKy5CSSBlYV9nZXQgIiBbLWYgb3V0ZmlsZV0gZmlsZXNwZWMgYXR0cl9uYW1lIgorUmV0cmlldmUgdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUKKy5JIGF0dHJfbmFtZQoraW4gdGhlIGZpbGUKKy5JIGZpbGVzcGVjCithbmQgd3JpdGUgaXQgZWl0aGVyIHRvIHN0ZG91dCBvciB0byBcZklvdXRmaWxlXGZSLgorLlRQCisuQkkgZWFfbGlzdCAiIGZpbGVzcGVjCitMaXN0IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZQorLkkgZmlsZXNwZWMKK3RvIHN0YW5kYXJkIG91dHB1dC4KKy5UUAorLkJJIGVhX3NldCAiIFstZiBpbmZpbGVdIGZpbGVzcGVjIGF0dHJfbmFtZSBhdHRyX3ZhbHVlCitTZXQgdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUKKy5JIGF0dHJfbmFtZQoraW4gdGhlIGZpbGUKKy5JIGZpbGVzcGVjCit0byB0aGUgc3RyaW5nIHZhbHVlCisuSSBhdHRyX3ZhbHVlCitvciByZWFkIGl0IGZyb20gXGZJaW5maWxlXGZSLgorLlRQCisuQkkgZWFfcm0gIiBmaWxlc3BlYyBhdHRyX25hbWVzLi4uCitSZW1vdmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZQorLkkgYXR0cl9uYW1lCitmcm9tIHRoZSBmaWxlIFxmSWZpbGVzcGVjXGZSLgorLlRQCisuQkkgZXhwYW5kX2RpciAiIGZpbGVzcGVjIgorRXhwYW5kIHRoZSBkaXJlY3RvcnkKKy5JUiBmaWxlc3BlYyAuCisuVFAKKy5CSSBmYWxsb2NhdGUgIiBmaWxlc3BlYyBzdGFydF9ibG9jayBbZW5kX2Jsb2NrXQorQWxsb2NhdGUgYW5kIG1hcCB1bmluaXRpYWxpemVkIGJsb2NrcyBpbnRvIFxmSWZpbGVzcGVjXGZSIGJldHdlZW4KK2xvZ2ljYWwgYmxvY2sgXGZJc3RhcnRfYmxvY2tcZlIgYW5kIFxmSWVuZF9ibG9ja1xmUiwgaW5jbHVzaXZlLiAgSWYKK1xmSWVuZF9ibG9ja1xmUiBpcyBub3Qgc3VwcGxpZWQsIHRoaXMgZnVuY3Rpb24gbWFwcyB1bnRpbCBpdCBydW5zIG91dAorb2YgZnJlZSBkaXNrIGJsb2NrcyBvciB0aGUgbWF4aW11bSBmaWxlIHNpemUgaXMgcmVhY2hlZC4gIEV4aXN0aW5nCittYXBwaW5ncyBhcmUgbGVmdCBhbG9uZS4KKy5UUAorLkJJIGZlYXR1cmUgIiBbZnNfZmVhdHVyZV0gWy1mc19mZWF0dXJlXSAuLi4iCitTZXQgb3IgY2xlYXIgdmFyaW91cyBmaWxlc3lzdGVtIGZlYXR1cmVzIGluIHRoZSBzdXBlcmJsb2NrLiAgQWZ0ZXIgc2V0dGluZworb3IgY2xlYXJpbmcgYW55IGZpbGVzeXN0ZW0gZmVhdHVyZXMgdGhhdCB3ZXJlIHJlcXVlc3RlZCwgcHJpbnQgdGhlIGN1cnJlbnQKK3N0YXRlIG9mIHRoZSBmaWxlc3lzdGVtIGZlYXR1cmUgc2V0LgorLlRQCisuQkkgZmlsZWZyYWcgIiBbLWR2cl0gZmlsZXNwZWMiCitQcmludCB0aGUgbnVtYmVyIG9mIGNvbnRpZ3VvdXMgZXh0ZW50cyBpbgorLklSIGZpbGVzcGVjIC4KK0lmCisuSSBmaWxlc3BlYworaXMgYSBkaXJlY3RvcnkgYW5kIHRoZQorLkkgLWQKK29wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAorLkkgZmlsZWZyYWcKK3dpbGwgcHJpbnQgdGhlIG51bWJlciBvZiBjb250aWd1b3VzIGV4dGVudHMgZm9yIGVhY2ggZmlsZSBpbgordGhlIGRpcmVjdG9yeS4gIFRoZQorLkkgLXYKK29wdGlvbiB3aWxsIGNhdXNlCisuSSBmaWxlZnJhZworcHJpbnQgYSB0YWJ1bGFyIGxpc3Rpbmcgb2YgdGhlIGNvbnRpZ3VvdXMgZXh0ZW50cyBpbiB0aGUKK2ZpbGUuICBUaGUKKy5JIC1yCitvcHRpb24gd2lsbCBjYXVzZQorLkkgZmlsZWZyYWcKK3RvIGRvIGEgcmVjdXJzaXZlIGxpc3Rpbmcgb2YgdGhlIGRpcmVjdG9yeS4KKy5UUAorLkJJIGZpbmRfZnJlZV9ibG9jayAiIFtjb3VudCBbZ29hbF1dIgorRmluZCB0aGUgZmlyc3QKKy5JIGNvdW50CitmcmVlIGJsb2Nrcywgc3RhcnRpbmcgZnJvbQorLkkgZ29hbAorYW5kIGFsbG9jYXRlIGl0LiAgQWxzbyBhdmFpbGFibGUgYXMKKy5CUiBmZmIgLgorLlRQCisuQkkgZmluZF9mcmVlX2lub2RlICIgW2RpciBbbW9kZV1dIgorRmluZCBhIGZyZWUgaW5vZGUgYW5kIGFsbG9jYXRlIGl0LiAgSWYgcHJlc2VudCwKKy5JIGRpcgorc3BlY2lmaWVzIHRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGRpcmVjdG9yeQord2hpY2ggdGhlIGlub2RlIGlzIHRvIGJlIGxvY2F0ZWQuICBUaGUgc2Vjb25kCitvcHRpb25hbCBhcmd1bWVudAorLkkgbW9kZQorc3BlY2lmaWVzIHRoZSBwZXJtaXNzaW9ucyBvZiB0aGUgbmV3IGlub2RlLiAgKElmIHRoZSBkaXJlY3RvcnkgYml0IGlzIHNldAorb24gdGhlIG1vZGUsIHRoZSBhbGxvY2F0aW9uIHJvdXRpbmUgd2lsbCBmdW5jdGlvbiBkaWZmZXJlbnRseS4pICBBbHNvCithdmFpbGFibGUgYXMKKy5CUiBmZmkgLgorLlRQCisuQkkgZnJlZWIgIiBibG9jayBbY291bnRdIgorTWFyayB0aGUgYmxvY2sgbnVtYmVyCisuSSBibG9jaworYXMgbm90IGFsbG9jYXRlZC4KK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudAorLkkgY291bnQKK2lzIHByZXNlbnQsIHRoZW4KKy5JIGNvdW50CitibG9ja3Mgc3RhcnRpbmcgYXQgYmxvY2sgbnVtYmVyCisuSSBibG9jaword2lsbCBiZSBtYXJrZWQgYXMgbm90IGFsbG9jYXRlZC4KKy5UUAorLkJJIGZyZWVmcmFnICIgWy1jIGNodW5rX2tiXSIKK1JlcG9ydCBmcmVlIHNwYWNlIGZyYWdtZW50YXRpb24gb24gdGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgc3lzdGVtLgorSWYgdGhlCisuSSBcLWMKK29wdGlvbiBpcyBzcGVjaWZpZWQgdGhlbiB0aGUgZmlsZWZyYWcgY29tbWFuZCB3aWxsIHByaW50IGhvdyBtYW55IGZyZWUKK2NodW5rcyBvZiBzaXplCisuSSBjaHVua19rYgorY2FuIGJlIGZvdW5kIGluIHRoZSBmaWxlIHN5c3RlbS4gIFRoZSBjaHVuayBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28KK2FuZCBiZSBsYXJnZXIgdGhhbiB0aGUgZmlsZSBzeXN0ZW0gYmxvY2sgc2l6ZS4KKy5UUAorLkJJIGZyZWVpICIgZmlsZXNwZWMgW251bV0iCitGcmVlIHRoZSBpbm9kZSBzcGVjaWZpZWQgYnkKKy5JUiBmaWxlc3BlYyAuCitJZgorLkkgbnVtCitpcyBzcGVjaWZpZWQsIGFsc28gY2xlYXIgbnVtLTEgaW5vZGVzIGFmdGVyIHRoZSBzcGVjaWZpZWQgaW5vZGUuCisuVFAKKy5CIGhlbHAKK1ByaW50IGEgbGlzdCBvZiBjb21tYW5kcyB1bmRlcnN0b29kIGJ5CisuQlIgZGVidWdmcyAuCisuVFAKKy5CSSBodHJlZV9kdW1wICIgZmlsZXNwZWMiCitEdW1wIHRoZSBoYXNoLWluZGV4ZWQgZGlyZWN0b3J5CisuSVIgZmlsZXNwZWMgLAorc2hvd2luZyBpdHMgdHJlZSBzdHJ1Y3R1cmUuCisuVFAKKy5CSSBpY2hlY2sgIiBibG9jayAuLi4iCitQcmludCBhIGxpc3Rpbmcgb2YgdGhlIGlub2RlcyB3aGljaCB1c2UgdGhlIG9uZSBvciBtb3JlIGJsb2NrcyBzcGVjaWZpZWQKK29uIHRoZSBjb21tYW5kIGxpbmUuCisuVFAKKy5CSSBpbm9kZV9kdW1wICIgZmlsZXNwZWMiCitQcmludCB0aGUgY29udGVudHMgb2YgdGhlIGlub2RlIGRhdGEgc3RydWN0dXJlIGluIGhleCBhbmQgQVNDSUkgZm9ybWF0LgorLlRQCisuQkkgaW1hcCAiIGZpbGVzcGVjIgorUHJpbnQgdGhlIGxvY2F0aW9uIG9mIHRoZSBpbm9kZSBkYXRhIHN0cnVjdHVyZSAoaW4gdGhlIGlub2RlIHRhYmxlKQorb2YgdGhlIGlub2RlCisuSVIgZmlsZXNwZWMgLgorLlRQCisuQkkgaW5pdF9maWxlc3lzICIgZGV2aWNlIGJsb2Nrc2l6ZSIKK0NyZWF0ZSBhbiBleHQyIGZpbGUgc3lzdGVtIG9uCisuSSBkZXZpY2UKK3dpdGggZGV2aWNlIHNpemUKKy5JUiBibG9ja3NpemUgLgorTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgZnVsbHkgaW5pdGlhbGl6ZSBhbGwgb2YgdGhlIGRhdGEgc3RydWN0dXJlczsKK3RvIGRvIHRoaXMsIHVzZSB0aGUKKy5CUiBta2UyZnMgKDgpCitwcm9ncmFtLiAgVGhpcyBpcyBqdXN0IGEgY2FsbCB0byB0aGUgbG93LWxldmVsIGxpYnJhcnksIHdoaWNoIHNldHMgdXAKK3RoZSBzdXBlcmJsb2NrIGFuZCBibG9jayBkZXNjcmlwdG9ycy4KKy5UUAorLkJJIGpvdXJuYWxfY2xvc2UKK0Nsb3NlIHRoZSBvcGVuIGpvdXJuYWwuCisuVFAKKy5CSSBqb3VybmFsX29wZW4gIiBbLWNdIFstdiB2ZXJdIFstaiBleHRfam5sXQorT3BlbnMgdGhlIGpvdXJuYWwgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuICBKb3VybmFsIGNoZWNrc3VtbWluZyBjYW4KK2JlIGVuYWJsZWQgYnkgc3VwcGx5aW5nIFxmSS1jXGZSOyBjaGVja3N1bSBmb3JtYXRzIDIgYW5kIDMgY2FuIGJlCitzZWxlY3RlZCB3aXRoIHRoZSBcZkktdlxmUiBvcHRpb24uICBBbiBleHRlcm5hbCBqb3VybmFsIGNhbiBiZSBsb2FkZWQKK2Zyb20gXGZJZXh0X2pubFxmUi4KKy5UUAorLkJJIGpvdXJuYWxfcnVuCitSZXBsYXkgYWxsIHRyYW5zYWN0aW9ucyBpbiB0aGUgb3BlbiBqb3VybmFsLgorLlRQCisuQkkgam91cm5hbF93cml0ZSAiIFstYiBibG9ja3NdIFstciByZXZva2VdIFstY10gZmlsZQorV3JpdGUgYSB0cmFuc2FjdGlvbiB0byB0aGUgb3BlbiBqb3VybmFsLiAgVGhlIGxpc3Qgb2YgYmxvY2tzIHRvIHdyaXRlCitzaG91bGQgYmUgc3VwcGxpZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBpbiBcZklibG9ja3NcZlI7IHRoZQorYmxvY2tzIHRoZW1zZWx2ZXMgc2hvdWxkIGJlIHJlYWRhYmxlIGZyb20gXGZJZmlsZVxmUi4gIEEgbGlzdCBvZgorYmxvY2tzIHRvIHJldm9rZSBjYW4gYmUgc3VwcGxpZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBpbgorXGZJcmV2b2tlXGZSLiAgQnkgZGVmYXVsdCwgYSBjb21taXQgcmVjb3JkIGlzIHdyaXR0ZW4gYXQgdGhlIGVuZDsgdGhlCitcZkktY1xmUiBzd2l0Y2ggd3JpdGVzIGFuIHVuY29tbWl0dGVkIHRyYW5zYWN0aW9uLgorLlRQCisuQkkga2lsbF9maWxlICIgZmlsZXNwZWMiCitEZWFsbG9jYXRlIHRoZSBpbm9kZQorLkkgZmlsZXNwZWMKK2FuZCBpdHMgYmxvY2tzLiAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgcmVtb3ZlIGFueSBkaXJlY3RvcnkKK2VudHJpZXMgKGlmIGFueSkgdG8gdGhpcyBpbm9kZS4gIFNlZSB0aGUKKy5CUiBybSAoMSkKK2NvbW1hbmQgaWYgeW91IHdpc2ggdG8gdW5saW5rIGEgZmlsZS4KKy5UUAorLkJJIGxjZCAiIGRpcmVjdG9yeSIKK0NoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvZiB0aGUKKy5CIGRlYnVnZnMKK3Byb2Nlc3MgdG8KKy5JIGRpcmVjdG9yeQorb24gdGhlIG5hdGl2ZSBmaWxlc3lzdGVtLgorLlRQCisuQkkgbG4gIiBmaWxlc3BlYyBkZXN0X2ZpbGUiCitDcmVhdGUgYSBsaW5rIG5hbWVkCisuSSBkZXN0X2ZpbGUKK3doaWNoIGlzIGEgaGFyZCBsaW5rIHRvCisuSVIgZmlsZXNwZWMgLgorTm90ZSB0aGlzIGRvZXMgbm90IGFkanVzdCB0aGUgaW5vZGUgcmVmZXJlbmNlIGNvdW50cy4KKy5UUAorLkJJIGxvZ2R1bXAgIiBbLWFjc09dIFstYiBibG9ja10gWy1pIGZpbGVzcGVjXSBbLWYgam91cm5hbF9maWxlXSBbb3V0cHV0X2ZpbGVdIgorRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGV4dDMgam91cm5hbC4gIEJ5IGRlZmF1bHQsIGR1bXAgdGhlIGpvdXJuYWwgaW5vZGUgYXMKK3NwZWNpZmllZCBpbiB0aGUgc3VwZXJibG9jay4gIEhvd2V2ZXIsIHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUKKy5JIFwtaQorb3B0aW9uLCB3aGljaCBkdW1wcyB0aGUgam91cm5hbCBmcm9tIHRoZSBpbnRlcm5hbCBpbm9kZSBnaXZlbiBieQorLklSIGZpbGVzcGVjIC4KK0EgcmVndWxhciBmaWxlIGNvbnRhaW5pbmcgam91cm5hbCBkYXRhIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCisuSSBcLWYKK29wdGlvbi4gIEZpbmFsbHksIHRoZQorLkkgXC1zCitvcHRpb24gdXRpbGl6ZXMgdGhlIGJhY2t1cCBpbmZvcm1hdGlvbiBpbiB0aGUgc3VwZXJibG9jayB0byBsb2NhdGUgdGhlCitqb3VybmFsLgorLklQCitUaGUKKy5JIFwtYQorb3B0aW9uIGNhdXNlcyB0aGUKKy5CIGxvZ2R1bXAKK3Byb2dyYW0gdG8gcHJpbnQgdGhlIGNvbnRlbnRzIG9mIGFsbCBvZiB0aGUgZGVzY3JpcHRvciBibG9ja3MuCitUaGUKKy5JIFwtYgorb3B0aW9uIGNhdXNlcworLkIgbG9nZHVtcAordG8gcHJpbnQgYWxsIGpvdXJuYWwgcmVjb3JkcyB0aGF0IGFyZSByZWZlciB0byB0aGUgc3BlY2lmaWVkIGJsb2NrLgorVGhlCisuSSBcLWMKK29wdGlvbiB3aWxsIHByaW50IG91dCB0aGUgY29udGVudHMgb2YgYWxsIG9mIHRoZSBkYXRhIGJsb2NrcyBzZWxlY3RlZCBieQordGhlCisuSSBcLWEKK2FuZAorLkkgXC1iCitvcHRpb25zLgorLklQCitUaGUKKy5JIFwtTworb3B0aW9uIGNhdXNlcyBsb2dkdW1wIHRvIGRpc3BsYXkgb2xkIChjaGVja3BvaW50ZWQpIGpvdXJuYWwgZW50cmllcy4KK1RoaXMgY2FuIGJlIHVzZWQgdG8gdHJ5IHRvIHRyYWNrIGRvd24gam91cm5hbCBwcm9ibGVtcyBldmVuIGFmdGVyIHRoZQoram91cm5hbCBoYXMgYmVlbiByZXBsYXllZC4KKy5UUAorLkJJIGxzICIgWy1sXSBbLWNdIFstZF0gWy1wXSBbLXJdIGZpbGVzcGVjIgorUHJpbnQgYSBsaXN0aW5nIG9mIHRoZSBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5CisuSVIgZmlsZXNwZWMgLgorVGhlCisuSSBcLWMKK2ZsYWcgY2F1c2VzIGRpcmVjdG9yeSBibG9jayBjaGVja3N1bXMgKGlmIHByZXNlbnQpIHRvIGJlIGRpc3BsYXllZC4KK1RoZQorLkkgXC1kCitmbGFnIHdpbGwgbGlzdCBkZWxldGVkIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeS4KK1RoZQorLkkgXC1sCitmbGFnIHdpbGwgbGlzdCBmaWxlcyB1c2luZyBhIG1vcmUgdmVyYm9zZSBmb3JtYXQuCitUaGUKKy5JIFwtcAorZmxhZyB3aWxsIGxpc3QgdGhlIGZpbGVzIGluIGEgZm9ybWF0IHdoaWNoIGlzIG1vcmUgZWFzaWx5IHBhcnNhYmxlIGJ5CitzY3JpcHRzLCBhcyB3ZWxsIGFzIG1ha2luZyBpdCBtb3JlIGNsZWFyIHdoZW4gdGhlcmUgYXJlIHNwYWNlcyBvciBvdGhlcgorbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBmaWxlbmFtZXMuCitUaGUKKy5JIFwtcgorZmxhZyB3aWxsIGZvcmNlIHRoZSBwcmludGluZyBvZiB0aGUgZmlsZW5hbWUsIGV2ZW4gaWYgaXQgaXMgZW5jcnlwdGVkLgorLlRQCisuQkkgbGlzdF9kZWxldGVkX2lub2RlcyAiIFtsaW1pdF0iCitMaXN0IGRlbGV0ZWQgaW5vZGVzLCBvcHRpb25hbGx5IGxpbWl0ZWQgdG8gdGhvc2UgZGVsZXRlZCB3aXRoaW4KKy5JIGxpbWl0CitzZWNvbmRzIGFnby4gIEFsc28gYXZhaWxhYmxlIGFzCisuQlIgbHNkZWwgLgorLklQCitUaGlzIGNvbW1hbmQgd2FzIHVzZWZ1bCBmb3IgcmVjb3ZlcmluZyBmcm9tIGFjY2lkZW50YWwgZmlsZSBkZWxldGlvbnMKK2ZvciBleHQyIGZpbGUgc3lzdGVtcy4gIFVuZm9ydHVuYXRlbHksIGl0IGlzIG5vdCB1c2VmdWwgZm9yIHRoaXMgcHVycG9zZQoraWYgdGhlIGZpbGVzIHdlcmUgZGVsZXRlZCB1c2luZyBleHQzIG9yIGV4dDQsIHNpbmNlIHRoZSBpbm9kZSdzCitkYXRhIGJsb2NrcyBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBhZnRlciB0aGUgaW5vZGUgaXMgcmVsZWFzZWQuCisuVFAKKy5CSSBtb2RpZnlfaW5vZGUgIiBmaWxlc3BlYyIKK01vZGlmeSB0aGUgY29udGVudHMgb2YgdGhlIGlub2RlIHN0cnVjdHVyZSBpbiB0aGUgaW5vZGUKKy5JUiBmaWxlc3BlYyAuCitBbHNvIGF2YWlsYWJsZSBhcworLkJSIG1pIC4KKy5UUAorLkJJIG1rZGlyICIgZmlsZXNwZWMiCitNYWtlIGEgZGlyZWN0b3J5LgorLlRQCisuQkkgbWtub2QgIiBmaWxlc3BlYyBbcHxbW2N8Yl0gbWFqb3IgbWlub3JdXSIKK0NyZWF0ZSBhIHNwZWNpYWwgZGV2aWNlIGZpbGUgKGEgbmFtZWQgcGlwZSwgY2hhcmFjdGVyIG9yIGJsb2NrIGRldmljZSkuCitJZiBhIGNoYXJhY3RlciBvciBibG9jayBkZXZpY2UgaXMgdG8gYmUgbWFkZSwgdGhlCisuSSBtYWpvcgorYW5kCisuSSBtaW5vcgorZGV2aWNlIG51bWJlcnMgbXVzdCBiZSBzcGVjaWZpZWQuCisuVFAKKy5CSSBuY2hlY2sgIiBbLWNdIGlub2RlX251bSAuLi4iCitUYWtlIHRoZSByZXF1ZXN0ZWQgbGlzdCBvZiBpbm9kZSBudW1iZXJzLCBhbmQgcHJpbnQgYSBsaXN0aW5nIG9mIHBhdGhuYW1lcwordG8gdGhvc2UgaW5vZGVzLiAgVGhlCisuSSAtYworZmxhZyB3aWxsIGVuYWJsZSBjaGVja2luZyB0aGUgZmlsZSB0eXBlIGluZm9ybWF0aW9uIGluIHRoZSBkaXJlY3RvcnkKK2VudHJ5IHRvIG1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBpbm9kZSdzIHR5cGUuCisuVFAKKy5CSSBvcGVuICIgWy13ZWZpY0RdIFstYiBibG9ja3NpemVdIFstcyBzdXBlcmJsb2NrXSBbLXogdW5kb19maWxlXSBkZXZpY2UiCitPcGVuIGEgZmlsZXN5c3RlbSBmb3IgZWRpdGluZy4gIFRoZQorLkkgLWYKK2ZsYWcgZm9yY2VzIHRoZSBmaWxlc3lzdGVtIHRvIGJlIG9wZW5lZCBldmVuIGlmIHRoZXJlIGFyZSBzb21lIHVua25vd24KK29yIGluY29tcGF0aWJsZSBmaWxlc3lzdGVtIGZlYXR1cmVzIHdoaWNoIHdvdWxkIG5vcm1hbGx5CitwcmV2ZW50IHRoZSBmaWxlc3lzdGVtIGZyb20gYmVpbmcgb3BlbmVkLiAgVGhlCisuSSAtZQorZmxhZyBjYXVzZXMgdGhlIGZpbGVzeXN0ZW0gdG8gYmUgb3BlbmVkIGluIGV4Y2x1c2l2ZSBtb2RlLiAgVGhlCisuSVIgLWIgIiwgIiAtYyAiLCAiIC1pICIsICIgLXMgIiwgIiAtdyAiLCBhbmQgIiAtRAorb3B0aW9ucyBiZWhhdmUgdGhlIHNhbWUgYXMgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHRvCisuQlIgZGVidWdmcyAuCisuVFAKKy5CSSBwdW5jaCAiIGZpbGVzcGVjIHN0YXJ0X2JsayBbZW5kX2Jsa10iCitEZWxldGUgdGhlIGJsb2NrcyBpbiB0aGUgaW5vZGUgcmFuZ2luZyBmcm9tCisuSSBzdGFydF9ibGsKK3RvCisuSVIgZW5kX2JsayAuCitJZgorLkkgZW5kX2JsaworaXMgb21pdHRlZCB0aGVuIHRoaXMgY29tbWFuZCB3aWxsIGZ1bmN0aW9uIGFzIGEgdHJ1bmNhdGUgY29tbWFuZDsgdGhhdAoraXMsIGFsbCBvZiB0aGUgYmxvY2tzIHN0YXJ0aW5nIGF0CisuSSBzdGFydF9ibGsKK3Rocm91Z2ggdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSB3aWxsIGJlIGRlYWxsb2NhdGVkLgorLlRQCisuQkkgc3ltbGluayAiIGZpbGVzcGVjIHRhcmdldCIKK01ha2UgYSBzeW1ib2xpYyBsaW5rLgorLlRQCisuQiBwd2QKK1ByaW50IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorLlRQCisuQiBxdWl0CitRdWl0CisuQiBkZWJ1Z2ZzCisuVFAKKy5CSSByZHVtcCAiIGRpcmVjdG9yeVsuLi5dIGRlc3RpbmF0aW9uIgorUmVjdXJzaXZlbHkgZHVtcAorLklSIGRpcmVjdG9yeSAsCitvciBtdWx0aXBsZQorLklSIGRpcmVjdG9yaWVzICwKK2FuZCBhbGwgaXRzIGNvbnRlbnRzIChpbmNsdWRpbmcgcmVndWxhciBmaWxlcywgc3ltYm9saWMgbGlua3MsIGFuZCBvdGhlcgorZGlyZWN0b3JpZXMpIGludG8gdGhlIG5hbWVkCisuSVIgZGVzdGluYXRpb24gLAord2hpY2ggc2hvdWxkIGJlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeSBvbiB0aGUgbmF0aXZlIGZpbGVzeXN0ZW0uCisuVFAKKy5CSSBybSAiIHBhdGhuYW1lIgorVW5saW5rCisuSVIgcGF0aG5hbWUgLgorSWYgdGhpcyBjYXVzZXMgdGhlIGlub2RlIHBvaW50ZWQgdG8gYnkKKy5JIHBhdGhuYW1lCit0byBoYXZlIG5vIG90aGVyIHJlZmVyZW5jZXMsIGRlYWxsb2NhdGUgdGhlIGZpbGUuICBUaGlzIGNvbW1hbmQgZnVuY3Rpb25zCithcyB0aGUgdW5saW5rKCkgc3lzdGVtIGNhbGwuCisuSQorLlRQCisuQkkgcm1kaXIgIiBmaWxlc3BlYyIKK1JlbW92ZSB0aGUgZGlyZWN0b3J5CisuSVIgZmlsZXNwZWMgLgorLlRQCisuQkkgc2V0YiAiIGJsb2NrIFtjb3VudF0iCitNYXJrIHRoZSBibG9jayBudW1iZXIKKy5JIGJsb2NrCithcyBhbGxvY2F0ZWQuCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQKKy5JIGNvdW50CitpcyBwcmVzZW50LCB0aGVuCisuSSBjb3VudAorYmxvY2tzIHN0YXJ0aW5nIGF0IGJsb2NrIG51bWJlcgorLkkgYmxvY2sKK3dpbGwgYmUgbWFya2VkIGFzIGFsbG9jYXRlZC4KKy5UUAorLkJJIHNldF9ibG9ja19ncm91cCAiIGJnbnVtIGZpZWxkIHZhbHVlIgorTW9kaWZ5IHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIHNwZWNpZmllZCBieQorLkkgYmdudW0KK3NvIHRoYXQgdGhlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgZmllbGQKKy5JIGZpZWxkCitoYXMgdmFsdWUKKy5JUiB2YWx1ZSAuCitBbHNvIGF2YWlsYWJsZSBhcworLkJSIHNldF9iZyAuCisuVFAKKy5CSSBzZXRpICIgZmlsZXNwZWMgW251bV0iCitNYXJrIGlub2RlCisuSSBmaWxlc3BlYworYXMgaW4gdXNlIGluIHRoZSBpbm9kZSBiaXRtYXAuICBJZgorLkkgbnVtCitpcyBzcGVjaWZpZWQsIGFsc28gc2V0IG51bS0xIGlub2RlcyBhZnRlciB0aGUgc3BlY2lmaWVkIGlub2RlLgorLlRQCisuQkkgc2V0X2lub2RlX2ZpZWxkICIgZmlsZXNwZWMgZmllbGQgdmFsdWUiCitNb2RpZnkgdGhlIGlub2RlIHNwZWNpZmllZCBieQorLkkgZmlsZXNwZWMKK3NvIHRoYXQgdGhlIGlub2RlIGZpZWxkCisuSSBmaWVsZAoraGFzIHZhbHVlCisuSSB2YWx1ZS4KK1RoZSBsaXN0IG9mIHZhbGlkIGlub2RlIGZpZWxkcyB3aGljaCBjYW4gYmUgc2V0IHZpYSB0aGlzIGNvbW1hbmQKK2NhbiBiZSBkaXNwbGF5ZWQgYnkgdXNpbmcgdGhlIGNvbW1hbmQ6CisuQiBzZXRfaW5vZGVfZmllbGQgLWwKK0Fsc28gYXZhaWxhYmxlIGFzCisuQlIgc2lmIC4KKy5UUAorLkJJIHNldF9tbXBfdmFsdWUgIiBmaWVsZCB2YWx1ZSIKK01vZGlmeSB0aGUgbXVsdGlwbGUtbW91bnQgcHJvdGVjdGlvbiAoTU1QKSBkYXRhIHNvIHRoYXQgdGhlIE1NUCBmaWVsZAorLkkgZmllbGQKK2hhcyB2YWx1ZQorLkkgdmFsdWUuCitUaGUgbGlzdCBvZiB2YWxpZCBNTVAgZmllbGRzIHdoaWNoIGNhbiBiZSBzZXQgdmlhIHRoaXMgY29tbWFuZAorY2FuIGJlIGRpc3BsYXllZCBieSB1c2luZyB0aGUgY29tbWFuZDoKKy5CIHNldF9tbXBfdmFsdWUgLWwKK0Fsc28gYXZhaWxhYmxlIGFzCisuQlIgc21tcCAuCisuVFAKKy5CSSBzZXRfc3VwZXJfdmFsdWUgIiBmaWVsZCB2YWx1ZSIKK1NldCB0aGUgc3VwZXJibG9jayBmaWVsZAorLkkgZmllbGQKK3RvCisuSSB2YWx1ZS4KK1RoZSBsaXN0IG9mIHZhbGlkIHN1cGVyYmxvY2sgZmllbGRzIHdoaWNoIGNhbiBiZSBzZXQgdmlhIHRoaXMgY29tbWFuZAorY2FuIGJlIGRpc3BsYXllZCBieSB1c2luZyB0aGUgY29tbWFuZDoKKy5CIHNldF9zdXBlcl92YWx1ZSAtbAorQWxzbyBhdmFpbGFibGUgYXMKKy5CUiBzc3YgLgorLlRQCisuQkkgc2hvd19zdXBlcl9zdGF0cyAiIFstaF0iCitMaXN0IHRoZSBjb250ZW50cyBvZiB0aGUgc3VwZXIgYmxvY2sgYW5kIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycy4gIElmIHRoZQorLkkgLWgKK2ZsYWcgaXMgZ2l2ZW4sIG9ubHkgcHJpbnQgb3V0IHRoZSBzdXBlcmJsb2NrIGNvbnRlbnRzLiBBbHNvIGF2YWlsYWJsZSBhcworLkJSIHN0YXRzIC4KKy5UUAorLkJJIHN0YXQgIiBmaWxlc3BlYyIKK0Rpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIHRoZSBpbm9kZSBzdHJ1Y3R1cmUgb2YgdGhlIGlub2RlCisuSVIgZmlsZXNwZWMgLgorLlRQCisuQkkgdGVzdGIgIiBibG9jayBbY291bnRdIgorVGVzdCBpZiB0aGUgYmxvY2sgbnVtYmVyCisuSSBibG9jaworaXMgbWFya2VkIGFzIGFsbG9jYXRlZCBpbiB0aGUgYmxvY2sgYml0bWFwLgorSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50CisuSSBjb3VudAoraXMgcHJlc2VudCwgdGhlbgorLkkgY291bnQKK2Jsb2NrcyBzdGFydGluZyBhdCBibG9jayBudW1iZXIKKy5JIGJsb2NrCit3aWxsIGJlIHRlc3RlZC4KKy5UUAorLkJJIHRlc3RpICIgZmlsZXNwZWMiCitUZXN0IGlmIHRoZSBpbm9kZQorLkkgZmlsZXNwZWMKK2lzIG1hcmtlZCBhcyBhbGxvY2F0ZWQgaW4gdGhlIGlub2RlIGJpdG1hcC4KKy5UUAorLkJJIHVuZGVsICIgPGlub2RlX251bWJlcj4gW3BhdGhuYW1lXSIKK1VuZGVsZXRlIHRoZSBzcGVjaWZpZWQgaW5vZGUgbnVtYmVyICh3aGljaCBtdXN0IGJlIHN1cnJvdW5kZWQgYnkgYW5nbGUKK2JyYWNrZXRzKSBzbyB0aGF0IGl0IGFuZCBpdHMgYmxvY2tzIGFyZSBtYXJrZWQgaW4gdXNlLCBhbmQgb3B0aW9uYWxseQorbGluayB0aGUgcmVjb3ZlcmVkIGlub2RlIHRvIHRoZSBzcGVjaWZpZWQgcGF0aG5hbWUuICBUaGUKKy5CIGUyZnNjaworY29tbWFuZCBzaG91bGQgYWx3YXlzIGJlIHJ1biBhZnRlciB1c2luZyB0aGUKKy5CIHVuZGVsCitjb21tYW5kIHRvIHJlY292ZXIgZGVsZXRlZCBmaWxlcy4KKy5JUAorTm90ZSB0aGF0IGlmIHlvdSBhcmUgcmVjb3ZlcmluZyBhIGxhcmdlIG51bWJlciBvZiBkZWxldGVkIGZpbGVzLCBsaW5raW5nCit0aGUgaW5vZGUgdG8gYSBkaXJlY3RvcnkgbWF5IHJlcXVpcmUgdGhlIGRpcmVjdG9yeSB0byBiZSBleHBhbmRlZCwgd2hpY2gKK2NvdWxkIGFsbG9jYXRlIGEgYmxvY2sgdGhhdCBoYWQgYmVlbiB1c2VkIGJ5IG9uZSBvZiB0aGUKK3lldC10by1iZS11bmRlbGV0ZWQgZmlsZXMuICBTbyBpdCBpcyBzYWZlciB0byB1bmRlbGV0ZSBhbGwgb2YgdGhlCitpbm9kZXMgd2l0aG91dCBzcGVjaWZ5aW5nIGEgZGVzdGluYXRpb24gcGF0aG5hbWUsIGFuZCB0aGVuIGluIGEgc2VwYXJhdGUKK3Bhc3MsIHVzZSB0aGUgZGVidWdmcworLkIgbGluaworY29tbWFuZCB0byBsaW5rIHRoZSBpbm9kZSB0byB0aGUgZGVzdGluYXRpb24gcGF0aG5hbWUsIG9yIHVzZQorLkIgZTJmc2NrCit0byBjaGVjayB0aGUgZmlsZXN5c3RlbSBhbmQgbGluayBhbGwgb2YgdGhlIHJlY292ZXJlZCBpbm9kZXMgdG8gdGhlCitsb3N0K2ZvdW5kIGRpcmVjdG9yeS4KKy5UUAorLkJJIHVubGluayAiIHBhdGhuYW1lIgorUmVtb3ZlIHRoZSBsaW5rIHNwZWNpZmllZCBieQorLkkgcGF0aG5hbWUKK3RvIGFuIGlub2RlLiAgTm90ZSB0aGlzIGRvZXMgbm90IGFkanVzdCB0aGUgaW5vZGUgcmVmZXJlbmNlIGNvdW50cy4KKy5UUAorLkJJIHdyaXRlICIgc291cmNlX2ZpbGUgb3V0X2ZpbGUiCitDb3B5IHRoZSBjb250ZW50cyBvZgorLkkgc291cmNlX2ZpbGUKK2ludG8gYSBuZXdseS1jcmVhdGVkIGZpbGUgaW4gdGhlIGZpbGVzeXN0ZW0gbmFtZWQKKy5JUiBvdXRfZmlsZSAuCisuVFAKKy5CSSB6YXBfYmxvY2sgIiBbLWYgZmlsZXNwZWNdIFstbyBvZmZzZXRdIFstbCBsZW5ndGhdIFstcCBwYXR0ZXJuXSBibG9ja19udW0iCitPdmVyd3JpdGUgdGhlIGJsb2NrIHNwZWNpZmllZCBieQorLkkgYmxvY2tfbnVtCit3aXRoIHplcm8gKE5VTCkgYnl0ZXMsIG9yIGlmCisuSSAtcAoraXMgZ2l2ZW4gdXNlIHRoZSBieXRlIHNwZWNpZmllZCBieQorLklSIHBhdHRlcm4gLgorSWYKKy5JIC1mCitpcyBnaXZlbiB0aGVuCisuSSBibG9ja19udW0KK2lzIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZmlsZSBnaXZlbiBieQorLklSIGZpbGVzcGVjIC4KK1RoZQorLkkgLW8KK2FuZAorLkkgLWwKK29wdGlvbnMgbGltaXQgdGhlIHJhbmdlIG9mIGJ5dGVzIHRvIHphcCB0byB0aGUgc3BlY2lmaWVkCisuSSBvZmZzZXQKK2FuZAorLkkgbGVuZ3RoCityZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGJsb2NrLgorLlRQCisuQkkgemFwX2Jsb2NrICIgWy1mIGZpbGVzcGVjXSBbLWIgYml0XSBibG9ja19udW0iCitCaXQtZmxpcCBwb3J0aW9ucyBvZiB0aGUgcGh5c2ljYWwKKy5JUiBibG9ja19udW0gLgorSWYKKy5JIC1mCitpcyBnaXZlbiwgdGhlbgorLkkgYmxvY2tfbnVtCitpcyBhIGxvZ2ljYWwgYmxvY2sgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mCisuSVIgZmlsZXNwZWMgLgorLlNIIEVOVklST05NRU5UIFZBUklBQkxFUworLlRQCisuQiBERUJVR0ZTX1BBR0VSLCBQQUdFUgorVGhlCisuQiBkZWJ1Z2ZzCitwcm9ncmFtIGFsd2F5cyBwaXBlcyB0aGUgb3V0cHV0IG9mIHRoZSBzb21lIGNvbW1hbmRzIHRocm91Z2ggYQorcGFnZXIgcHJvZ3JhbS4gIFRoZXNlIGNvbW1hbmRzIGluY2x1ZGU6CisuSVIgc2hvd19zdXBlcl9zdGF0cyAiICgiIHN0YXRzICksCisuSVIgbGlzdF9kaXJlY3RvcnkgIiAoIiBscyApLAorLklSIHNob3dfaW5vZGVfaW5mbyAiICgiIHN0YXQgKSwKKy5JUiBsaXN0X2RlbGV0ZWRfaW5vZGVzICIgKCIgbHNkZWwgKSwKK2FuZAorLklSIGh0cmVlX2R1bXAgLgorVGhlIHNwZWNpZmljIHBhZ2VyIGNhbiBleHBsaWNpdGx5IHNwZWNpZmllZCBieSB0aGUKKy5CIERFQlVHRlNfUEFHRVIKK2Vudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgaWYgaXQgaXMgbm90IHNldCwgYnkgdGhlCisuQiBQQUdFUgorZW52aXJvbm1lbnQgdmFyaWFibGUuCisuSVAKK05vdGUgdGhhdCBzaW5jZSBhIHBhZ2VyIGlzIGFsd2F5cyB1c2VkLCB0aGUKKy5CUiBsZXNzICgxKQorcGFnZXIgaXMgbm90IHBhcnRpY3VsYXJseSBhcHByb3ByaWF0ZSwgc2luY2UgaXQgY2xlYXJzIHRoZSBzY3JlZW4gYmVmb3JlCitkaXNwbGF5aW5nIHRoZSBvdXRwdXQgb2YgdGhlIGNvbW1hbmQgYW5kIGNsZWFycyB0aGUgb3V0cHV0IHRoZSBzY3JlZW4KK3doZW4gdGhlIHBhZ2VyIGlzIGV4aXRlZC4gIE1hbnkgdXNlcnMgcHJlZmVyIHRvIHVzZSB0aGUKKy5CUiBsZXNzICgxKQorcGFnZXIgZm9yIG1vc3QgcHVycG9zZXMsIHdoaWNoIGlzIHdoeSB0aGUKKy5CIERFQlVHRlNfUEFHRVIKK2Vudmlyb25tZW50IHZhcmlhYmxlIGlzIGF2YWlsYWJsZSB0byBvdmVycmlkZSB0aGUgbW9yZSBnZW5lcmFsCisuQiBQQUdFUgorZW52aXJvbm1lbnQgdmFyaWFibGUuCisuU0ggQVVUSE9SCisuQiBkZWJ1Z2ZzCit3YXMgd3JpdHRlbiBieSBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1Pi4KKy5TSCBTRUUgQUxTTworLkJSIGR1bXBlMmZzICg4KSwKKy5CUiB0dW5lMmZzICg4KSwKKy5CUiBlMmZzY2sgKDgpLAorLkJSIG1rZTJmcyAoOCksCisuQlIgZXh0NCAoNSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL2RlYnVnZnMuYyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2RlYnVnZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjVmOTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdmcy5jCkBAIC0wLDAgKzEsMjU1MyBAQAorLyoKKyAqIGRlYnVnZnMuYyAtLS0gYSBwcm9ncmFtIHdoaWNoIGFsbG93cyB5b3UgdG8gYXR0YWNoIGFuIGV4dDJmcworICogZmlsZXN5c3RlbSBhbmQgcGxheSB3aXRoIGl0LgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqCisgKiBNb2RpZmljYXRpb25zIGJ5IFJvYmVydCBTYW5kZXJzIDxndDgxMzRiQHByaXNtLmdhdGVjaC5lZHU+CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8bGliZ2VuLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKworI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+CisKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisjaW5jbHVkZSAiamZzX3VzZXIuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3BsYXVzaWJsZS5oIgorCisjaWZuZGVmIEJVRlNJWgorI2RlZmluZSBCVUZTSVogODE5MgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfSkJEX0RFQlVHCQkvKiBFbmFibGVkIGJ5IGNvbmZpZ3VyZSAtLWVuYWJsZS1qYmQtZGVidWcgKi8KK2ludCBqb3VybmFsX2VuYWJsZV9kZWJ1ZyA9IC0xOworI2VuZGlmCisKK3NzX3JlcXVlc3RfdGFibGUgKmV4dHJhX2NtZHM7Citjb25zdCBjaGFyICpkZWJ1Z19wcm9nX25hbWU7CitpbnQgc2NpX2lkeDsKKworZXh0Ml9maWxzeXMJY3VycmVudF9mczsKK3F1b3RhX2N0eF90CWN1cnJlbnRfcWN0eDsKK2V4dDJfaW5vX3QJcm9vdCwgY3dkOworCitzdGF0aWMgaW50IGRlYnVnZnNfc2V0dXBfdGRiKGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCBjaGFyICp1bmRvX2ZpbGUsCisJCQkgICAgIGlvX21hbmFnZXIgKmlvX3B0cikKK3sKKwllcnJjb2RlX3QgcmV0dmFsID0gRU5PTUVNOworCWNoYXIgKnRkYl9kaXIgPSBOVUxMLCAqdGRiX2ZpbGUgPSBOVUxMOworCWNoYXIgKmRldl9uYW1lLCAqdG1wX25hbWU7CisKKwkvKiAocmUpb3BlbiBhIHNwZWNpZmljIHVuZG8gZmlsZSAqLworCWlmICh1bmRvX2ZpbGUgJiYgdW5kb19maWxlWzBdICE9IDApIHsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKCppb19wdHIpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnI7CisJCSppb19wdHIgPSB1bmRvX2lvX21hbmFnZXI7CisJCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKHVuZG9fZmlsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJcHJpbnRmKCJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgIgorCQkJInVzaW5nIHRoZSBjb21tYW5kOlxuIgorCQkJIiAgICBlMnVuZG8gJXMgJXNcblxuIiwKKwkJCXVuZG9fZmlsZSwgZGV2aWNlX25hbWUpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCS8qCisJICogQ29uZmlndXJhdGlvbiB2aWEgYSBjb25mIGZpbGUgd291bGQgYmUKKwkgKiBuaWNlCisJICovCisJdGRiX2RpciA9IHNzX3NhZmVfZ2V0ZW52KCJFMkZTUFJPR1NfVU5ET19ESVIiKTsKKwlpZiAoIXRkYl9kaXIpCisJCXRkYl9kaXIgPSAiL3Zhci9saWIvZTJmc3Byb2dzIjsKKworCWlmICghc3RyY21wKHRkYl9kaXIsICJub25lIikgfHwgKHRkYl9kaXJbMF0gPT0gMCkgfHwKKwkgICAgYWNjZXNzKHRkYl9kaXIsIFdfT0spKQorCQlyZXR1cm4gMDsKKworCXRtcF9uYW1lID0gc3RyZHVwKGRldmljZV9uYW1lKTsKKwlpZiAoIXRtcF9uYW1lKQorCQlnb3RvIGVycm91dDsKKwlkZXZfbmFtZSA9IGJhc2VuYW1lKHRtcF9uYW1lKTsKKwl0ZGJfZmlsZSA9IG1hbGxvYyhzdHJsZW4odGRiX2RpcikgKyA5ICsgc3RybGVuKGRldl9uYW1lKSArIDcgKyAxKTsKKwlpZiAoIXRkYl9maWxlKSB7CisJCWZyZWUodG1wX25hbWUpOworCQlnb3RvIGVycm91dDsKKwl9CisJc3ByaW50Zih0ZGJfZmlsZSwgIiVzL2RlYnVnZnMtJXMuZTJ1bmRvIiwgdGRiX2RpciwgZGV2X25hbWUpOworCWZyZWUodG1wX25hbWUpOworCisJaWYgKCh1bmxpbmsodGRiX2ZpbGUpIDwgMCkgJiYgKGVycm5vICE9IEVOT0VOVCkpIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWNvbV9lcnIoImRlYnVnZnMiLCByZXR2YWwsCisJCQkid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIsIHRkYl9maWxlKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKCppb19wdHIpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCSppb19wdHIgPSB1bmRvX2lvX21hbmFnZXI7CisJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUodGRiX2ZpbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50ZigiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJInVzaW5nIHRoZSBjb21tYW5kOlxuIgorCQkiICAgIGUydW5kbyAlcyAlc1xuXG4iLCB0ZGJfZmlsZSwgZGV2aWNlX25hbWUpOworCisJZnJlZSh0ZGJfZmlsZSk7CisJcmV0dXJuIDA7CitlcnJvdXQ6CisJZnJlZSh0ZGJfZmlsZSk7CitlcnI6CisJY29tX2VycigiZGVidWdmcyIsIHJldHZhbCwgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIG9wZW5fZmlsZXN5c3RlbShjaGFyICpkZXZpY2UsIGludCBvcGVuX2ZsYWdzLCBibGs2NF90IHN1cGVyYmxvY2ssCisJCQkgICAgYmxrNjRfdCBibG9ja3NpemUsIGludCBjYXRhc3Ryb3BoaWMsCisJCQkgICAgY2hhciAqZGF0YV9maWxlbmFtZSwgY2hhciAqdW5kb19maWxlKQoreworCWludAlyZXR2YWw7CisJaW9fY2hhbm5lbCBkYXRhX2lvID0gMDsKKwlpb19tYW5hZ2VyIGlvX3B0ciA9IHVuaXhfaW9fbWFuYWdlcjsKKworCWlmIChzdXBlcmJsb2NrICE9IDAgJiYgYmxvY2tzaXplID09IDApIHsKKwkJY29tX2VycihkZXZpY2UsIDAsICJpZiB5b3Ugc3BlY2lmeSB0aGUgc3VwZXJibG9jaywgeW91IG11c3QgYWxzbyBzcGVjaWZ5IHRoZSBibG9jayBzaXplIik7CisJCWN1cnJlbnRfZnMgPSBOVUxMOworCQlyZXR1cm47CisJfQorCisJaWYgKGRhdGFfZmlsZW5hbWUpIHsKKwkJaWYgKChvcGVuX2ZsYWdzICYgRVhUMl9GTEFHX0lNQUdFX0ZJTEUpID09IDApIHsKKwkJCWNvbV9lcnIoZGV2aWNlLCAwLAorCQkJCSJUaGUgLWQgb3B0aW9uIGlzIG9ubHkgdmFsaWQgd2hlbiByZWFkaW5nIGFuIGUyaW1hZ2UgZmlsZSIpOworCQkJY3VycmVudF9mcyA9IE5VTEw7CisJCQlyZXR1cm47CisJCX0KKwkJcmV0dmFsID0gdW5peF9pb19tYW5hZ2VyLT5vcGVuKGRhdGFfZmlsZW5hbWUsIDAsICZkYXRhX2lvKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycihkYXRhX2ZpbGVuYW1lLCAwLCAid2hpbGUgb3BlbmluZyBkYXRhIHNvdXJjZSIpOworCQkJY3VycmVudF9mcyA9IE5VTEw7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlpZiAoY2F0YXN0cm9waGljICYmIChvcGVuX2ZsYWdzICYgRVhUMl9GTEFHX1JXKSkgeworCQljb21fZXJyKGRldmljZSwgMCwKKwkJCSJvcGVuaW5nIHJlYWQtb25seSBiZWNhdXNlIG9mIGNhdGFzdHJvcGhpYyBtb2RlIik7CisJCW9wZW5fZmxhZ3MgJj0gfkVYVDJfRkxBR19SVzsKKwl9CisJaWYgKGNhdGFzdHJvcGhpYykKKwkJb3Blbl9mbGFncyB8PSBFWFQyX0ZMQUdfU0tJUF9NTVA7CisKKwlpZiAodW5kb19maWxlKSB7CisJCXJldHZhbCA9IGRlYnVnZnNfc2V0dXBfdGRiKGRldmljZSwgdW5kb19maWxlLCAmaW9fcHRyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX29wZW4oZGV2aWNlLCBvcGVuX2ZsYWdzLCBzdXBlcmJsb2NrLCBibG9ja3NpemUsCisJCQkgICAgIGlvX3B0ciwgJmN1cnJlbnRfZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihkZXZpY2UsIHJldHZhbCwgIndoaWxlIG9wZW5pbmcgZmlsZXN5c3RlbSIpOworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfQkFEX01BR0lDKQorCQkJY2hlY2tfcGxhdXNpYmlsaXR5KGRldmljZSwgQ0hFQ0tfRlNfRVhJU1QsIE5VTEwpOworCQljdXJyZW50X2ZzID0gTlVMTDsKKwkJcmV0dXJuOworCX0KKwljdXJyZW50X2ZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gRVhUMkZTX0JNQVA2NF9SQlRSRUU7CisKKwlpZiAoY2F0YXN0cm9waGljKQorCQljb21fZXJyKGRldmljZSwgMCwgImNhdGFzdHJvcGhpYyBtb2RlIC0gbm90IHJlYWRpbmcgaW5vZGUgb3IgZ3JvdXAgYml0bWFwcyIpOworCWVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZV9iaXRtYXAoY3VycmVudF9mcyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoZGV2aWNlLCByZXR2YWwsICJ3aGlsZSByZWFkaW5nIGlub2RlIGJpdG1hcCIpOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGN1cnJlbnRfZnMpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGRldmljZSwgcmV0dmFsLCAid2hpbGUgcmVhZGluZyBibG9jayBiaXRtYXAiKTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJfQorCisJaWYgKGRhdGFfaW8pIHsKKwkJcmV0dmFsID0gZXh0MmZzX3NldF9kYXRhX2lvKGN1cnJlbnRfZnMsIGRhdGFfaW8pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGRldmljZSwgcmV0dmFsLAorCQkJCSJ3aGlsZSBzZXR0aW5nIGRhdGEgc291cmNlIik7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCX0KKworCXJvb3QgPSBjd2QgPSBFWFQyX1JPT1RfSU5POworCXJldHVybjsKKworZXJyb3V0OgorCXJldHZhbCA9IGV4dDJmc19jbG9zZV9mcmVlKCZjdXJyZW50X2ZzKTsKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKGRldmljZSwgcmV0dmFsLCAid2hpbGUgdHJ5aW5nIHRvIGNsb3NlIGZpbGVzeXN0ZW0iKTsKK30KKwordm9pZCBkb19vcGVuX2ZpbGVzeXMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAljLCBlcnI7CisJaW50CWNhdGFzdHJvcGhpYyA9IDA7CisJYmxrNjRfdAlzdXBlcmJsb2NrID0gMDsKKwlibGs2NF90CWJsb2Nrc2l6ZSA9IDA7CisJaW50CW9wZW5fZmxhZ3MgPSBFWFQyX0ZMQUdfU09GVFNVUFBfRkVBVFVSRVMgfCBFWFQyX0ZMQUdfNjRCSVRTOyAKKwljaGFyCSpkYXRhX2ZpbGVuYW1lID0gMDsKKwljaGFyCSp1bmRvX2ZpbGUgPSBOVUxMOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJpd2ZlY2I6czpkOkR6OiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2knOgorCQkJb3Blbl9mbGFncyB8PSBFWFQyX0ZMQUdfSU1BR0VfRklMRTsKKwkJCWJyZWFrOworCQljYXNlICd3JzoKKyNpZmRlZiBSRUFEX09OTFkKKwkJCWdvdG8gcHJpbnRfdXNhZ2U7CisjZWxzZQorCQkJb3Blbl9mbGFncyB8PSBFWFQyX0ZMQUdfUlc7CisjZW5kaWYgLyogUkVBRF9PTkxZICovCisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlvcGVuX2ZsYWdzIHw9IEVYVDJfRkxBR19GT1JDRTsKKwkJCWJyZWFrOworCQljYXNlICdlJzoKKwkJCW9wZW5fZmxhZ3MgfD0gRVhUMl9GTEFHX0VYQ0xVU0lWRTsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKwkJCWNhdGFzdHJvcGhpYyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnZCc6CisJCQlkYXRhX2ZpbGVuYW1lID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ0QnOgorCQkJb3Blbl9mbGFncyB8PSBFWFQyX0ZMQUdfRElSRUNUX0lPOworCQkJYnJlYWs7CisJCWNhc2UgJ2InOgorCQkJYmxvY2tzaXplID0gcGFyc2VfdWxvbmcob3B0YXJnLCBhcmd2WzBdLAorCQkJCQkJImJsb2NrIHNpemUiLCAmZXJyKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0dXJuOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJZXJyID0gc3RydG9ibGsoYXJndlswXSwgb3B0YXJnLAorCQkJCSAgICAgICAic3VwZXJibG9jayBibG9jayBudW1iZXIiLCAmc3VwZXJibG9jayk7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybjsKKwkJCWJyZWFrOworCQljYXNlICd6JzoKKwkJCXVuZG9fZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKwlpZiAob3B0aW5kICE9IGFyZ2MtMSkgeworCQlnb3RvIHByaW50X3VzYWdlOworCX0KKwlpZiAoY2hlY2tfZnNfbm90X29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKwlvcGVuX2ZpbGVzeXN0ZW0oYXJndltvcHRpbmRdLCBvcGVuX2ZsYWdzLAorCQkJc3VwZXJibG9jaywgYmxvY2tzaXplLCBjYXRhc3Ryb3BoaWMsCisJCQlkYXRhX2ZpbGVuYW1lLCB1bmRvX2ZpbGUpOworCXJldHVybjsKKworcHJpbnRfdXNhZ2U6CisJZnByaW50ZihzdGRlcnIsICIlczogVXNhZ2U6IG9wZW4gWy1zIHN1cGVyYmxvY2tdIFstYiBibG9ja3NpemVdICIKKwkJIlstZCBpbWFnZV9maWxlbmFtZV0gWy1jXSBbLWldIFstZl0gWy1lXSBbLURdICIKKyNpZm5kZWYgUkVBRF9PTkxZCisJCSJbLXddICIKKyNlbmRpZgorCQkiPGRldmljZT5cbiIsIGFyZ3ZbMF0pOworfQorCit2b2lkIGRvX2xjZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaWYgKGFyZ2MgIT0gMikgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogJXMgJXMiLCBhcmd2WzBdLCAiPG5hdGl2ZSBkaXI+Iik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY2hkaXIoYXJndlsxXSkgPT0gLTEpIHsKKwkJY29tX2Vycihhcmd2WzBdLCBlcnJubywKKwkJCSJ3aGlsZSB0cnlpbmcgdG8gY2hhbmdlIG5hdGl2ZSBkaXJlY3RvcnkgdG8gJXMiLAorCQkJYXJndlsxXSk7CisJCXJldHVybjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX2ZpbGVzeXN0ZW0oTk9BUkdTKQoreworCWludAlyZXR2YWw7CisKKwlpZiAoY3VycmVudF9mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSUJfRElSVFkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlX2JpdG1hcChjdXJyZW50X2ZzKTsKKwkJaWYgKHJldHZhbCkKKwkJCWNvbV9lcnIoImV4dDJmc193cml0ZV9pbm9kZV9iaXRtYXAiLCByZXR2YWwsIDApOworCX0KKwlpZiAoY3VycmVudF9mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfQkJfRElSVFkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2Jsb2NrX2JpdG1hcChjdXJyZW50X2ZzKTsKKwkJaWYgKHJldHZhbCkKKwkJCWNvbV9lcnIoImV4dDJmc193cml0ZV9ibG9ja19iaXRtYXAiLCByZXR2YWwsIDApOworCX0KKwlpZiAoY3VycmVudF9xY3R4KQorCQlxdW90YV9yZWxlYXNlX2NvbnRleHQoJmN1cnJlbnRfcWN0eCk7CisJcmV0dmFsID0gZXh0MmZzX2Nsb3NlX2ZyZWUoJmN1cnJlbnRfZnMpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoImV4dDJmc19jbG9zZSIsIHJldHZhbCwgMCk7CisJcmV0dXJuOworfQorCit2b2lkIGRvX2Nsb3NlX2ZpbGVzeXMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAljOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImEiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdhJzoKKwkJCWN1cnJlbnRfZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWdvdG8gcHJpbnRfdXNhZ2U7CisJCX0KKwl9CisKKwlpZiAoYXJnYyA+IG9wdGluZCkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKDAsIDAsICJVc2FnZTogY2xvc2VfZmlsZXN5cyBbLWFdIik7CisJCXJldHVybjsKKwl9CisKKwljbG9zZV9maWxlc3lzdGVtKCk7Cit9CisKKyNpZm5kZWYgUkVBRF9PTkxZCit2b2lkIGRvX2luaXRfZmlsZXN5cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgcGFyYW07CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWVycjsKKwlibGs2NF90CQlibG9ja3M7CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAzLCAzLCAiaW5pdGlhbGl6ZSIsCisJCQkJIjxkZXZpY2U+IDxibG9ja3M+IiwgQ0hFQ0tfRlNfTk9UT1BFTikpCisJCXJldHVybjsKKworCW1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jaykpOworCWVyciA9IHN0cnRvYmxrKGFyZ3ZbMF0sIGFyZ3ZbMl0sICJibG9ja3MgY291bnQiLCAmYmxvY2tzKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisJZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXQoJnBhcmFtLCBibG9ja3MpOworCXJldHZhbCA9IGV4dDJmc19pbml0aWFsaXplKGFyZ3ZbMV0sIDAsICZwYXJhbSwKKwkJCQkgICB1bml4X2lvX21hbmFnZXIsICZjdXJyZW50X2ZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlsxXSwgcmV0dmFsLCAid2hpbGUgaW5pdGlhbGl6aW5nIGZpbGVzeXN0ZW0iKTsKKwkJY3VycmVudF9mcyA9IE5VTEw7CisJCXJldHVybjsKKwl9CisJcm9vdCA9IGN3ZCA9IEVYVDJfUk9PVF9JTk87CisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBwcmludF9mZWF0dXJlcyhzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHMsIEZJTEUgKmYpCit7CisJaW50CWksIGosIHByaW50ZWQ9MDsKKwlfX3UzMgkqbWFzayA9ICZzLT5zX2ZlYXR1cmVfY29tcGF0LCBtOworCisJZnB1dHMoIkZpbGVzeXN0ZW0gZmVhdHVyZXM6IiwgZik7CisJZm9yIChpPTA7IGkgPDM7IGkrKyxtYXNrKyspIHsKKwkJZm9yIChqPTAsbT0xOyBqIDwgMzI7IGorKywgbTw8PTEpIHsKKwkJCWlmICgqbWFzayAmIG0pIHsKKwkJCQlmcHJpbnRmKGYsICIgJXMiLCBlMnBfZmVhdHVyZTJzdHJpbmcoaSwgbSkpOworCQkJCXByaW50ZWQrKzsKKwkJCX0KKwkJfQorCX0KKwlpZiAocHJpbnRlZCA9PSAwKQorCQlmcHV0cygiKG5vbmUpIiwgZik7CisJZnB1dHMoIlxuIiwgZik7Cit9CisjZW5kaWYgLyogUkVBRF9PTkxZICovCisKK3N0YXRpYyB2b2lkIHByaW50X2JnX29wdHMoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgaW50IG1hc2ssCisJCQkgIGNvbnN0IGNoYXIgKnN0ciwgaW50ICpmaXJzdCwgRklMRSAqZikKK3sKKwlpZiAoZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGdyb3VwLCBtYXNrKSkgeworCQlpZiAoKmZpcnN0KSB7CisJCQlmcHV0cygiICAgICAgICAgICBbIiwgZik7CisJCQkqZmlyc3QgPSAwOworCQl9IGVsc2UKKwkJCWZwdXRzKCIsICIsIGYpOworCQlmcHV0cyhzdHIsIGYpOworCX0KK30KKwordm9pZCBkb19zaG93X3N1cGVyX3N0YXRzKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJY29uc3QgY2hhciAqdW5pdHMgPSJibG9jayI7CisJZGdycF90CWk7CisJRklMRSAJKm91dDsKKwlpbnQJYywgaGVhZGVyX29ubHkgPSAwOworCWludAludW1kaXJzID0gMCwgZmlyc3QsIGdkdF9jc3VtOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiaCIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2gnOgorCQkJaGVhZGVyX29ubHkrKzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKwlpZiAob3B0aW5kICE9IGFyZ2MpIHsKKwkJZ290byBwcmludF91c2FnZTsKKwl9CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKwlvdXQgPSBvcGVuX3BhZ2VyKCk7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKGN1cnJlbnRfZnMtPnN1cGVyKSkKKwkJdW5pdHMgPSAiY2x1c3RlciI7CisKKwlsaXN0X3N1cGVyMihjdXJyZW50X2ZzLT5zdXBlciwgb3V0KTsKKwlmb3IgKGk9MDsgaSA8IGN1cnJlbnRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykKKwkJbnVtZGlycyArPSBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGN1cnJlbnRfZnMsIGkpOworCWZwcmludGYob3V0LCAiRGlyZWN0b3JpZXM6ICAgICAgICAgICAgICAlZFxuIiwgbnVtZGlycyk7CisKKwlpZiAoaGVhZGVyX29ubHkpIHsKKwkJY2xvc2VfcGFnZXIob3V0KTsKKwkJcmV0dXJuOworCX0KKworCWdkdF9jc3VtID0gZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oY3VycmVudF9mcyk7CisJZm9yIChpID0gMDsgaSA8IGN1cnJlbnRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlmcHJpbnRmKG91dCwgIiBHcm91cCAlMmQ6IGJsb2NrIGJpdG1hcCBhdCAlbGx1LCAiCisJCSAgICAgICAgImlub2RlIGJpdG1hcCBhdCAlbGx1LCAiCisJCSAgICAgICAgImlub2RlIHRhYmxlIGF0ICVsbHVcbiIKKwkJICAgICAgICAiICAgICAgICAgICAldSBmcmVlICVzJXMsICIKKwkJICAgICAgICAiJXUgZnJlZSAlcywgIgorCQkgICAgICAgICIldSB1c2VkICVzJXMiLAorCQkgICAgICAgIGksIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGN1cnJlbnRfZnMsIGkpLAorCQkgICAgICAgIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGN1cnJlbnRfZnMsIGkpLAorCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhjdXJyZW50X2ZzLCBpKSwKKwkJICAgICAgICBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoY3VycmVudF9mcywgaSksIHVuaXRzLAorCQkgICAgICAgIGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudChjdXJyZW50X2ZzLCBpKSAhPSAxID8KKwkJCSJzIiA6ICIiLAorCQkgICAgICAgIGV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudChjdXJyZW50X2ZzLCBpKSwKKwkJICAgICAgICBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoY3VycmVudF9mcywgaSkgIT0gMSA/CisJCQkiaW5vZGVzIiA6ICJpbm9kZSIsCisJCSAgICAgICAgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudChjdXJyZW50X2ZzLCBpKSwKKwkJICAgICAgICBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGN1cnJlbnRfZnMsIGkpICE9IDEgPyAiZGlyZWN0b3JpZXMiCisgCQkJCTogImRpcmVjdG9yeSIsIGdkdF9jc3VtID8gIiwgIiA6ICJcbiIpOworCQlpZiAoZ2R0X2NzdW0pCisJCQlmcHJpbnRmKG91dCwgIiV1IHVudXNlZCAlc1xuIiwKKwkJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZChjdXJyZW50X2ZzLCBpKSwKKwkJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZChjdXJyZW50X2ZzLCBpKSAhPSAxID8KKwkJCQkiaW5vZGVzIiA6ICJpbm9kZSIpOworCQlmaXJzdCA9IDE7CisJCXByaW50X2JnX29wdHMoY3VycmVudF9mcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQsICJJbm9kZSBub3QgaW5pdCIsCisJCQkgICAgICAmZmlyc3QsIG91dCk7CisJCXByaW50X2JnX29wdHMoY3VycmVudF9mcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQsICJCbG9jayBub3QgaW5pdCIsCisJCQkgICAgICAmZmlyc3QsIG91dCk7CisJCWlmIChnZHRfY3N1bSkgeworCQkJZnByaW50ZihvdXQsICIlc0NoZWNrc3VtIDB4JTA0eCIsCisJCQkJZmlyc3QgPyAiICAgICAgICAgICBbIjoiLCAiLCBleHQyZnNfYmdfY2hlY2tzdW0oY3VycmVudF9mcywgaSkpOworCQkJZmlyc3QgPSAwOworCQl9CisJCWlmICghZmlyc3QpCisJCQlmcHV0cygiXVxuIiwgb3V0KTsKKwl9CisJY2xvc2VfcGFnZXIob3V0KTsKKwlyZXR1cm47CitwcmludF91c2FnZToKKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBVc2FnZTogc2hvd19zdXBlciBbLWhdXG4iLCBhcmd2WzBdKTsKK30KKworI2lmbmRlZiBSRUFEX09OTFkKK3ZvaWQgZG9fZGlydHlfZmlsZXN5cyhpbnQgYXJnYyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgIGNoYXIgKiphcmd2IEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChjaGVja19mc19yZWFkX3dyaXRlKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJndlsxXSAmJiAhc3RyY21wKGFyZ3ZbMV0sICItY2xlYW4iKSkKKwkJY3VycmVudF9mcy0+c3VwZXItPnNfc3RhdGUgfD0gRVhUMl9WQUxJRF9GUzsKKwllbHNlCisJCWN1cnJlbnRfZnMtPnN1cGVyLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGN1cnJlbnRfZnMpOworfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCitzdHJ1Y3QgbGlzdF9ibG9ja3Nfc3RydWN0IHsKKwlGSUxFCQkqZjsKKwllMl9ibGtjbnRfdAl0b3RhbDsKKwlibGs2NF90CQlmaXJzdF9ibG9jaywgbGFzdF9ibG9jazsKKwllMl9ibGtjbnRfdAlmaXJzdF9iY250LCBsYXN0X2JjbnQ7CisJZTJfYmxrY250X3QJZmlyc3Q7Cit9OworCitzdGF0aWMgdm9pZCBmaW5pc2hfcmFuZ2Uoc3RydWN0IGxpc3RfYmxvY2tzX3N0cnVjdCAqbGIpCit7CisJaWYgKGxiLT5maXJzdF9ibG9jayA9PSAwKQorCQlyZXR1cm47CisJaWYgKGxiLT5maXJzdCkKKwkJbGItPmZpcnN0ID0gMDsKKwllbHNlCisJCWZwcmludGYobGItPmYsICIsICIpOworCWlmIChsYi0+Zmlyc3RfYmxvY2sgPT0gbGItPmxhc3RfYmxvY2spCisJCWZwcmludGYobGItPmYsICIoJWxsZCk6JWxsdSIsCisJCQkobG9uZyBsb25nKWxiLT5maXJzdF9iY250LCBsYi0+Zmlyc3RfYmxvY2spOworCWVsc2UKKwkJZnByaW50ZihsYi0+ZiwgIiglbGxkLSVsbGQpOiVsbHUtJWxsdSIsCisJCQkobG9uZyBsb25nKWxiLT5maXJzdF9iY250LCAobG9uZyBsb25nKWxiLT5sYXN0X2JjbnQsCisJCQlsYi0+Zmlyc3RfYmxvY2ssIGxiLT5sYXN0X2Jsb2NrKTsKKwlsYi0+Zmlyc3RfYmxvY2sgPSAwOworfQorCitzdGF0aWMgaW50IGxpc3RfYmxvY2tzX3Byb2MoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgIGJsazY0X3QgKmJsb2NrbnIsIGUyX2Jsa2NudF90IGJsb2NrY250LAorCQkJICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgdm9pZCAqcHJpdmF0ZSkKK3sKKwlzdHJ1Y3QgbGlzdF9ibG9ja3Nfc3RydWN0ICpsYiA9IChzdHJ1Y3QgbGlzdF9ibG9ja3Nfc3RydWN0ICopIHByaXZhdGU7CisKKwlsYi0+dG90YWwrKzsKKwlpZiAoYmxvY2tjbnQgPj0gMCkgeworCQkvKgorCQkgKiBTZWUgaWYgd2UgY2FuIGFkZCBvbiB0byB0aGUgZXhpc3RpbmcgcmFuZ2UgKGlmIGl0IGV4aXN0cykKKwkJICovCisJCWlmIChsYi0+Zmlyc3RfYmxvY2sgJiYKKwkJICAgIChsYi0+bGFzdF9ibG9jaysxID09ICpibG9ja25yKSAmJgorCQkgICAgKGxiLT5sYXN0X2JjbnQrMSA9PSBibG9ja2NudCkpIHsKKwkJCWxiLT5sYXN0X2Jsb2NrID0gKmJsb2NrbnI7CisJCQlsYi0+bGFzdF9iY250ID0gYmxvY2tjbnQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQkvKgorCQkgKiBTdGFydCBhIG5ldyByYW5nZS4KKwkJICovCisJCWZpbmlzaF9yYW5nZShsYik7CisJCWxiLT5maXJzdF9ibG9jayA9IGxiLT5sYXN0X2Jsb2NrID0gKmJsb2NrbnI7CisJCWxiLT5maXJzdF9iY250ID0gbGItPmxhc3RfYmNudCA9IGJsb2NrY250OworCQlyZXR1cm4gMDsKKwl9CisJLyoKKwkgKiBOb3QgYSBub3JtYWwgYmxvY2suICBBbHdheXMgZm9yY2UgYSBuZXcgcmFuZ2UuCisJICovCisJZmluaXNoX3JhbmdlKGxiKTsKKwlpZiAobGItPmZpcnN0KQorCQlsYi0+Zmlyc3QgPSAwOworCWVsc2UKKwkJZnByaW50ZihsYi0+ZiwgIiwgIik7CisJaWYgKGJsb2NrY250ID09IC0xKQorCQlmcHJpbnRmKGxiLT5mLCAiKElORCk6JWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpICpibG9ja25yKTsKKwllbHNlIGlmIChibG9ja2NudCA9PSAtMikKKwkJZnByaW50ZihsYi0+ZiwgIihESU5EKTolbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykgKmJsb2NrbnIpOworCWVsc2UgaWYgKGJsb2NrY250ID09IC0zKQorCQlmcHJpbnRmKGxiLT5mLCAiKFRJTkQpOiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKSAqYmxvY2tucik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGludGVybmFsX2R1bXBfaW5vZGVfZXh0cmEoRklMRSAqb3V0LAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKnByZWZpeCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICAgICAgZXh0Ml9pbm9fdCBpbm9kZV9udW0gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgICAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSkKK3sKKwlmcHJpbnRmKG91dCwgIlNpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAldVxuIiwgaW5vZGUtPmlfZXh0cmFfaXNpemUpOworCWlmIChpbm9kZS0+aV9leHRyYV9pc2l6ZSA+IEVYVDJfSU5PREVfU0laRShjdXJyZW50X2ZzLT5zdXBlcikgLQorCQkJRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKSB7CisJCWZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBpbm9kZS0+aV9leHRyYV9pc2l6ZSAoJXUpXG4iLAorCQkJCWlub2RlLT5pX2V4dHJhX2lzaXplKTsKKwkJcmV0dXJuOworCX0KK30KKworc3RhdGljIHZvaWQgZHVtcF9ibG9ja3MoRklMRSAqZiwgY29uc3QgY2hhciAqcHJlZml4LCBleHQyX2lub190IGlub2RlKQoreworCXN0cnVjdCBsaXN0X2Jsb2Nrc19zdHJ1Y3QgbGI7CisKKwlmcHJpbnRmKGYsICIlc0JMT0NLUzpcbiVzIiwgcHJlZml4LCBwcmVmaXgpOworCWxiLnRvdGFsID0gMDsKKwlsYi5maXJzdF9ibG9jayA9IDA7CisJbGIuZiA9IGY7CisJbGIuZmlyc3QgPSAxOworCWV4dDJmc19ibG9ja19pdGVyYXRlMyhjdXJyZW50X2ZzLCBpbm9kZSwgQkxPQ0tfRkxBR19SRUFEX09OTFksIE5VTEwsCisJCQkgICAgICBsaXN0X2Jsb2Nrc19wcm9jLCAodm9pZCAqKSZsYik7CisJZmluaXNoX3JhbmdlKCZsYik7CisJaWYgKGxiLnRvdGFsKQorCQlmcHJpbnRmKGYsICJcbiVzVE9UQUw6ICVsbGRcbiIsIHByZWZpeCwgKGxvbmcgbG9uZylsYi50b3RhbCk7CisJZnByaW50ZihmLCJcbiIpOworfQorCitzdGF0aWMgaW50IGludF9sb2cxMCh1bnNpZ25lZCBsb25nIGxvbmcgYXJnKQoreworCWludCAgICAgbCA9IDA7CisKKwlhcmcgPSBhcmcgLyAxMDsKKwl3aGlsZSAoYXJnKSB7CisJCWwrKzsKKwkJYXJnID0gYXJnIC8gMTA7CisJfQorCXJldHVybiBsOworfQorCisjZGVmaW5lIERVTVBfTEVBRl9FWFRFTlRTCTB4MDEKKyNkZWZpbmUgRFVNUF9OT0RFX0VYVEVOVFMJMHgwMgorI2RlZmluZSBEVU1QX0VYVEVOVF9UQUJMRQkweDA0CisKK3N0YXRpYyB2b2lkIGR1bXBfZXh0ZW50cyhGSUxFICpmLCBjb25zdCBjaGFyICpwcmVmaXgsIGV4dDJfaW5vX3QgaW5vLAorCQkJIGludCBmbGFncywgaW50IGxvZ2ljYWxfd2lkdGgsIGludCBwaHlzaWNhbF93aWR0aCkKK3sKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCXN0cnVjdCBleHQyX2V4dGVudF9pbmZvIGluZm87CisJaW50CQkJb3AgPSBFWFQyX0VYVEVOVF9ST09UOworCXVuc2lnbmVkIGludAkJcHJpbnRlZCA9IDA7CisJZXJyY29kZV90IAkJZXJyY29kZTsKKworCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X29wZW4oY3VycmVudF9mcywgaW5vLCAmaGFuZGxlKTsKKwlpZiAoZXJyY29kZSkKKwkJcmV0dXJuOworCisJaWYgKGZsYWdzICYgRFVNUF9FWFRFTlRfVEFCTEUpCisJCWZwcmludGYoZiwgIkxldmVsIEVudHJpZXMgJSpzICUqcyBMZW5ndGggRmxhZ3NcbiIsCisJCQkobG9naWNhbF93aWR0aCoyKSszLCAiTG9naWNhbCIsCisJCQkocGh5c2ljYWxfd2lkdGgqMikrMywgIlBoeXNpY2FsIik7CisJZWxzZQorCQlmcHJpbnRmKGYsICIlc0VYVEVOVFM6XG4lcyIsIHByZWZpeCwgcHJlZml4KTsKKworCXdoaWxlICgxKSB7CisJCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIG9wLCAmZXh0ZW50KTsKKworCQlpZiAoZXJyY29kZSkKKwkJCWJyZWFrOworCisJCW9wID0gRVhUMl9FWFRFTlRfTkVYVDsKKworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpCisJCQljb250aW51ZTsKKworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19MRUFGKSB7CisJCQlpZiAoKGZsYWdzICYgRFVNUF9MRUFGX0VYVEVOVFMpID09IDApCisJCQkJY29udGludWU7CisJCX0gZWxzZSB7CisJCQlpZiAoKGZsYWdzICYgRFVNUF9OT0RFX0VYVEVOVFMpID09IDApCisJCQkJY29udGludWU7CisJCX0KKworCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXRfaW5mbyhoYW5kbGUsICZpbmZvKTsKKwkJaWYgKGVycmNvZGUpCisJCQljb250aW51ZTsKKworCQlpZiAoIShleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX0xFQUYpKSB7CisJCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpCisJCQkJY29udGludWU7CisKKwkJCWlmIChmbGFncyAmIERVTVBfRVhURU5UX1RBQkxFKSB7CisJCQkJZnByaW50ZihmLCAiJTJkLyUyZCAlM2QvJTNkICUqbGx1IC0gJSpsbHUgIgorCQkJCQkiJSpsbHUlKnMgJTZ1XG4iLAorCQkJCQlpbmZvLmN1cnJfbGV2ZWwsIGluZm8ubWF4X2RlcHRoLAorCQkJCQlpbmZvLmN1cnJfZW50cnksIGluZm8ubnVtX2VudHJpZXMsCisJCQkJCWxvZ2ljYWxfd2lkdGgsCisJCQkJCWV4dGVudC5lX2xibGssCisJCQkJCWxvZ2ljYWxfd2lkdGgsCisJCQkJCWV4dGVudC5lX2xibGsgKyAoZXh0ZW50LmVfbGVuIC0gMSksCisJCQkJCXBoeXNpY2FsX3dpZHRoLAorCQkJCQlleHRlbnQuZV9wYmxrLAorCQkJCQlwaHlzaWNhbF93aWR0aCszLCAiIiwgZXh0ZW50LmVfbGVuKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJZnByaW50ZihmLCAiJXMoRVRCJWQpOiVsbGQiLAorCQkJCXByaW50ZWQgPyAiLCAiIDogIiIsIGluZm8uY3Vycl9sZXZlbCwKKwkJCQlleHRlbnQuZV9wYmxrKTsKKwkJCXByaW50ZWQgPSAxOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoZmxhZ3MgJiBEVU1QX0VYVEVOVF9UQUJMRSkgeworCQkJZnByaW50ZihmLCAiJTJkLyUyZCAlM2QvJTNkICUqbGx1IC0gJSpsbHUgIgorCQkJCSIlKmxsdSAtICUqbGx1ICU2dSAlc1xuIiwKKwkJCQlpbmZvLmN1cnJfbGV2ZWwsIGluZm8ubWF4X2RlcHRoLAorCQkJCWluZm8uY3Vycl9lbnRyeSwgaW5mby5udW1fZW50cmllcywKKwkJCQlsb2dpY2FsX3dpZHRoLAorCQkJCWV4dGVudC5lX2xibGssCisJCQkJbG9naWNhbF93aWR0aCwKKwkJCQlleHRlbnQuZV9sYmxrICsgKGV4dGVudC5lX2xlbiAtIDEpLAorCQkJCXBoeXNpY2FsX3dpZHRoLAorCQkJCWV4dGVudC5lX3BibGssCisJCQkJcGh5c2ljYWxfd2lkdGgsCisJCQkJZXh0ZW50LmVfcGJsayArIChleHRlbnQuZV9sZW4gLSAxKSwKKwkJCQlleHRlbnQuZV9sZW4sCisJCQkJZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQgPworCQkJCQkiVW5pbml0IiA6ICIiKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKGV4dGVudC5lX2xlbiA9PSAwKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKGV4dGVudC5lX2xlbiA9PSAxKQorCQkJZnByaW50ZihmLAorCQkJCSIlcyglbGxkJXMpOiVsbGQiLAorCQkJCXByaW50ZWQgPyAiLCAiIDogIiIsCisJCQkJZXh0ZW50LmVfbGJsaywKKwkJCQlleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCA/CisJCQkJIlt1XSIgOiAiIiwKKwkJCQlleHRlbnQuZV9wYmxrKTsKKwkJZWxzZQorCQkJZnByaW50ZihmLAorCQkJCSIlcyglbGxkLSVsbGQlcyk6JWxsZC0lbGxkIiwKKwkJCQlwcmludGVkID8gIiwgIiA6ICIiLAorCQkJCWV4dGVudC5lX2xibGssCisJCQkJZXh0ZW50LmVfbGJsayArIChleHRlbnQuZV9sZW4gLSAxKSwKKwkJCQlleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCA/CisJCQkJCSJbdV0iIDogIiIsCisJCQkJZXh0ZW50LmVfcGJsaywKKwkJCQlleHRlbnQuZV9wYmxrICsgKGV4dGVudC5lX2xlbiAtIDEpKTsKKwkJcHJpbnRlZCA9IDE7CisJfQorCWlmIChwcmludGVkKQorCQlmcHJpbnRmKGYsICJcbiIpOworCWV4dDJmc19leHRlbnRfZnJlZShoYW5kbGUpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2lubGluZV9kYXRhKEZJTEUgKm91dCwgY29uc3QgY2hhciAqcHJlZml4LCBleHQyX2lub190IGlub2RlX251bSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXNpemVfdCBzaXplOworCisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX3NpemUoY3VycmVudF9mcywgaW5vZGVfbnVtLCAmc2l6ZSk7CisJaWYgKCFyZXR2YWwpCisJCWZwcmludGYob3V0LCAiJXNTaXplIG9mIGlubGluZSBkYXRhOiAlenVcbiIsIHByZWZpeCwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfZmFzdF9saW5rKEZJTEUgKm91dCwgZXh0Ml9pbm9fdCBpbm9kZV9udW0sCisJCQkgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKwljaGFyICpidWY7CisJc2l6ZV90IHNpemU7CisKKwlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSB7CisJCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGN1cnJlbnRfZnMsIGlub2RlX251bSwgJnNpemUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW16ZXJvKHNpemUgKyAxLCAmYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gb3V0OworCisJCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9nZXQoY3VycmVudF9mcywgaW5vZGVfbnVtLAorCQkJCQkJaW5vZGUsIGJ1ZiwgJnNpemUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCWZwcmludGYob3V0LCAiJXNGYXN0IGxpbmsgZGVzdDogXCIlLipzXCJcbiIsIHByZWZpeCwKKwkJCShpbnQpc2l6ZSwgYnVmKTsKKworCQlyZXR2YWwgPSBleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dDsKKwl9IGVsc2UgeworCQlzaXplX3Qgc3ogPSBFWFQyX0lfU0laRShpbm9kZSk7CisKKwkJaWYgKHN6ID4gc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSkKKwkJCXN6ID0gc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKTsKKwkJZnByaW50ZihvdXQsICIlc0Zhc3QgbGluayBkZXN0OiBcIiUuKnNcIlxuIiwgcHJlZml4LCAoaW50KSBzeiwKKwkJCShjaGFyICopaW5vZGUtPmlfYmxvY2spOworCX0KK291dDoKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsICJ3aGlsZSBkdW1waW5nIGxpbmsgZGVzdGluYXRpb24iKTsKK30KKwordm9pZCBpbnRlcm5hbF9kdW1wX2lub2RlKEZJTEUgKm91dCwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJIGV4dDJfaW5vX3QgaW5vZGVfbnVtLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgaW50IGRvX2R1bXBfYmxvY2tzKQoreworCWNvbnN0IGNoYXIgKmlfdHlwZTsKKwljaGFyIGZyYWcsIGZzaXplOworCWludCBvcyA9IGN1cnJlbnRfZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3M7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmxhcmdlX2lub2RlOworCWludCBpc19sYXJnZV9pbm9kZSA9IDA7CisKKwlpZiAoRVhUMl9JTk9ERV9TSVpFKGN1cnJlbnRfZnMtPnN1cGVyKSA+IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkKKwkJaXNfbGFyZ2VfaW5vZGUgPSAxOworCWxhcmdlX2lub2RlID0gKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGlub2RlOworCisJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkpIGlfdHlwZSA9ICJkaXJlY3RvcnkiOworCWVsc2UgaWYgKExJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkpIGlfdHlwZSA9ICJyZWd1bGFyIjsKKwllbHNlIGlmIChMSU5VWF9TX0lTTE5LKGlub2RlLT5pX21vZGUpKSBpX3R5cGUgPSAic3ltbGluayI7CisJZWxzZSBpZiAoTElOVVhfU19JU0JMSyhpbm9kZS0+aV9tb2RlKSkgaV90eXBlID0gImJsb2NrIHNwZWNpYWwiOworCWVsc2UgaWYgKExJTlVYX1NfSVNDSFIoaW5vZGUtPmlfbW9kZSkpIGlfdHlwZSA9ICJjaGFyYWN0ZXIgc3BlY2lhbCI7CisJZWxzZSBpZiAoTElOVVhfU19JU0ZJRk8oaW5vZGUtPmlfbW9kZSkpIGlfdHlwZSA9ICJGSUZPIjsKKwllbHNlIGlmIChMSU5VWF9TX0lTU09DSyhpbm9kZS0+aV9tb2RlKSkgaV90eXBlID0gInNvY2tldCI7CisJZWxzZSBpX3R5cGUgPSAiYmFkIHR5cGUiOworCWZwcmludGYob3V0LCAiJXNJbm9kZTogJXUgICBUeXBlOiAlcyAgICAiLCBwcmVmaXgsIGlub2RlX251bSwgaV90eXBlKTsKKwlmcHJpbnRmKG91dCwgIiVzTW9kZTogICUwNG8gICBGbGFnczogMHgleFxuIiwKKwkJcHJlZml4LCBpbm9kZS0+aV9tb2RlICYgMDc3NywgaW5vZGUtPmlfZmxhZ3MpOworCWlmIChpc19sYXJnZV9pbm9kZSAmJiBsYXJnZV9pbm9kZS0+aV9leHRyYV9pc2l6ZSA+PSAyNCkgeworCQlmcHJpbnRmKG91dCwgIiVzR2VuZXJhdGlvbjogJXUgICAgVmVyc2lvbjogMHglMDh4OiUwOHhcbiIsCisJCQlwcmVmaXgsIGlub2RlLT5pX2dlbmVyYXRpb24sIGxhcmdlX2lub2RlLT5pX3ZlcnNpb25faGksCisJCQlpbm9kZS0+b3NkMS5saW51eDEubF9pX3ZlcnNpb24pOworCX0gZWxzZSB7CisJCWZwcmludGYob3V0LCAiJXNHZW5lcmF0aW9uOiAldSAgICBWZXJzaW9uOiAweCUwOHhcbiIsIHByZWZpeCwKKwkJCWlub2RlLT5pX2dlbmVyYXRpb24sIGlub2RlLT5vc2QxLmxpbnV4MS5sX2lfdmVyc2lvbik7CisJfQorCWZwcmludGYob3V0LCAiJXNVc2VyOiAlNWQgICBHcm91cDogJTVkIiwKKwkJcHJlZml4LCBpbm9kZV91aWQoKmlub2RlKSwgaW5vZGVfZ2lkKCppbm9kZSkpOworCWlmIChpc19sYXJnZV9pbm9kZSAmJiBsYXJnZV9pbm9kZS0+aV9leHRyYV9pc2l6ZSA+PSAzMikKKwkJZnByaW50ZihvdXQsICIgICBQcm9qZWN0OiAlNWQiLCBsYXJnZV9pbm9kZS0+aV9wcm9qaWQpOworCWZwdXRzKCIgICBTaXplOiAiLCBvdXQpOworCWlmIChMSU5VWF9TX0lTUkVHKGlub2RlLT5pX21vZGUpKQorCQlmcHJpbnRmKG91dCwgIiVsbHVcbiIsIEVYVDJfSV9TSVpFKGlub2RlKSk7CisJZWxzZQorCQlmcHJpbnRmKG91dCwgIiVkXG4iLCBpbm9kZS0+aV9zaXplKTsKKwlpZiAob3MgPT0gRVhUMl9PU19IVVJEKQorCQlmcHJpbnRmKG91dCwKKwkJCSIlc0ZpbGUgQUNMOiAlZCAgICBEaXJlY3RvcnkgQUNMOiAlZCBUcmFuc2xhdG9yOiAlZFxuIiwKKwkJCXByZWZpeCwKKwkJCWlub2RlLT5pX2ZpbGVfYWNsLCBMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpID8gaW5vZGUtPmlfZGlyX2FjbCA6IDAsCisJCQlpbm9kZS0+b3NkMS5odXJkMS5oX2lfdHJhbnNsYXRvcik7CisJZWxzZQorCQlmcHJpbnRmKG91dCwgIiVzRmlsZSBBQ0w6ICVsbHUgICAgRGlyZWN0b3J5IEFDTDogJWRcbiIsCisJCQlwcmVmaXgsCisJCQlpbm9kZS0+aV9maWxlX2FjbCB8ICgobG9uZyBsb25nKQorCQkJCShpbm9kZS0+b3NkMi5saW51eDIubF9pX2ZpbGVfYWNsX2hpZ2gpIDw8IDMyKSwKKwkJCUxJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkgPyBpbm9kZS0+aV9kaXJfYWNsIDogMCk7CisJaWYgKG9zICE9IEVYVDJfT1NfSFVSRCkKKwkJZnByaW50ZihvdXQsICIlc0xpbmtzOiAlZCAgIEJsb2NrY291bnQ6ICVsbHVcbiIsCisJCQlwcmVmaXgsIGlub2RlLT5pX2xpbmtzX2NvdW50LAorCQkJKCgodW5zaWduZWQgbG9uZyBsb25nKQorCQkJICBpbm9kZS0+b3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSA8PCAzMikpICsKKwkJCWlub2RlLT5pX2Jsb2Nrcyk7CisJZWxzZQorCQlmcHJpbnRmKG91dCwgIiVzTGlua3M6ICVkICAgQmxvY2tjb3VudDogJXVcbiIsCisJCQlwcmVmaXgsIGlub2RlLT5pX2xpbmtzX2NvdW50LCBpbm9kZS0+aV9ibG9ja3MpOworCXN3aXRjaCAob3MpIHsKKwkgICAgY2FzZSBFWFQyX09TX0hVUkQ6CisJCWZyYWcgPSBpbm9kZS0+b3NkMi5odXJkMi5oX2lfZnJhZzsKKwkJZnNpemUgPSBpbm9kZS0+b3NkMi5odXJkMi5oX2lfZnNpemU7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlmcmFnID0gZnNpemUgPSAwOworCX0KKwlmcHJpbnRmKG91dCwgIiVzRnJhZ21lbnQ6ICBBZGRyZXNzOiAlZCAgICBOdW1iZXI6ICVkICAgIFNpemU6ICVkXG4iLAorCQlwcmVmaXgsIGlub2RlLT5pX2ZhZGRyLCBmcmFnLCBmc2l6ZSk7CisJaWYgKGlzX2xhcmdlX2lub2RlICYmIGxhcmdlX2lub2RlLT5pX2V4dHJhX2lzaXplID49IDI0KSB7CisJCWZwcmludGYob3V0LCAiJXMgY3RpbWU6IDB4JTA4eDolMDh4IC0tICVzIiwgcHJlZml4LAorCQkJaW5vZGUtPmlfY3RpbWUsIGxhcmdlX2lub2RlLT5pX2N0aW1lX2V4dHJhLAorCQkJaW5vZGVfdGltZV90b19zdHJpbmcoaW5vZGUtPmlfY3RpbWUsCisJCQkJCSAgICAgbGFyZ2VfaW5vZGUtPmlfY3RpbWVfZXh0cmEpKTsKKwkJZnByaW50ZihvdXQsICIlcyBhdGltZTogMHglMDh4OiUwOHggLS0gJXMiLCBwcmVmaXgsCisJCQlpbm9kZS0+aV9hdGltZSwgbGFyZ2VfaW5vZGUtPmlfYXRpbWVfZXh0cmEsCisJCQlpbm9kZV90aW1lX3RvX3N0cmluZyhpbm9kZS0+aV9hdGltZSwKKwkJCQkJICAgICBsYXJnZV9pbm9kZS0+aV9hdGltZV9leHRyYSkpOworCQlmcHJpbnRmKG91dCwgIiVzIG10aW1lOiAweCUwOHg6JTA4eCAtLSAlcyIsIHByZWZpeCwKKwkJCWlub2RlLT5pX210aW1lLCBsYXJnZV9pbm9kZS0+aV9tdGltZV9leHRyYSwKKwkJCWlub2RlX3RpbWVfdG9fc3RyaW5nKGlub2RlLT5pX210aW1lLAorCQkJCQkgICAgIGxhcmdlX2lub2RlLT5pX210aW1lX2V4dHJhKSk7CisJCWZwcmludGYob3V0LCAiJXNjcnRpbWU6IDB4JTA4eDolMDh4IC0tICVzIiwgcHJlZml4LAorCQkJbGFyZ2VfaW5vZGUtPmlfY3J0aW1lLCBsYXJnZV9pbm9kZS0+aV9jcnRpbWVfZXh0cmEsCisJCQlpbm9kZV90aW1lX3RvX3N0cmluZyhsYXJnZV9pbm9kZS0+aV9jcnRpbWUsCisJCQkJCSAgICAgbGFyZ2VfaW5vZGUtPmlfY3J0aW1lX2V4dHJhKSk7CisJCWlmIChpbm9kZS0+aV9kdGltZSkKKwkJCWZwcmludGYob3V0LCAiJXMgZHRpbWU6IDB4JTA4eDooJTA4eCkgLS0gJXMiLCBwcmVmaXgsCisJCQkJbGFyZ2VfaW5vZGUtPmlfZHRpbWUsIGxhcmdlX2lub2RlLT5pX2N0aW1lX2V4dHJhLAorCQkJCWlub2RlX3RpbWVfdG9fc3RyaW5nKGlub2RlLT5pX2R0aW1lLAorCQkJCQkJICAgICBsYXJnZV9pbm9kZS0+aV9jdGltZV9leHRyYSkpOworCX0gZWxzZSB7CisJCWZwcmludGYob3V0LCAiJXNjdGltZTogMHglMDh4IC0tICVzIiwgcHJlZml4LCBpbm9kZS0+aV9jdGltZSwKKwkJCXRpbWVfdG9fc3RyaW5nKChfX3MzMikgaW5vZGUtPmlfY3RpbWUpKTsKKwkJZnByaW50ZihvdXQsICIlc2F0aW1lOiAweCUwOHggLS0gJXMiLCBwcmVmaXgsIGlub2RlLT5pX2F0aW1lLAorCQkJdGltZV90b19zdHJpbmcoKF9fczMyKSBpbm9kZS0+aV9hdGltZSkpOworCQlmcHJpbnRmKG91dCwgIiVzbXRpbWU6IDB4JTA4eCAtLSAlcyIsIHByZWZpeCwgaW5vZGUtPmlfbXRpbWUsCisJCQl0aW1lX3RvX3N0cmluZygoX19zMzIpIGlub2RlLT5pX210aW1lKSk7CisJCWlmIChpbm9kZS0+aV9kdGltZSkKKwkJCWZwcmludGYob3V0LCAiJXNkdGltZTogMHglMDh4IC0tICVzIiwgcHJlZml4LAorCQkJCWlub2RlLT5pX2R0aW1lLAorCQkJCXRpbWVfdG9fc3RyaW5nKChfX3MzMikgaW5vZGUtPmlfZHRpbWUpKTsKKwl9CisJaWYgKEVYVDJfSU5PREVfU0laRShjdXJyZW50X2ZzLT5zdXBlcikgPiBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpCisJCWludGVybmFsX2R1bXBfaW5vZGVfZXh0cmEob3V0LCBwcmVmaXgsIGlub2RlX251bSwKKwkJCQkJICAoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKikgaW5vZGUpOworCWR1bXBfaW5vZGVfYXR0cmlidXRlcyhvdXQsIGlub2RlX251bSk7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGN1cnJlbnRfZnMtPnN1cGVyKSkgeworCQlfX3UzMiBjcmMgPSBpbm9kZS0+aV9jaGVja3N1bV9sbzsKKwkJaWYgKGlzX2xhcmdlX2lub2RlICYmCisJCSAgICBsYXJnZV9pbm9kZS0+aV9leHRyYV9pc2l6ZSA+PQorCQkJCShvZmZzZXRvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSwKKwkJCQkJICBpX2NoZWNrc3VtX2hpKSAtCisJCQkJIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkpCisJCQljcmMgfD0gKChfX3UzMilsYXJnZV9pbm9kZS0+aV9jaGVja3N1bV9oaSkgPDwgMTY7CisJCWZwcmludGYob3V0LCAiSW5vZGUgY2hlY2tzdW06IDB4JTA4eFxuIiwgY3JjKTsKKwl9CisKKwlpZiAoTElOVVhfU19JU0xOSyhpbm9kZS0+aV9tb2RlKSAmJgorCSAgICBleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MoY3VycmVudF9mcywgaW5vZGUpID09IDApCisJCWR1bXBfZmFzdF9saW5rKG91dCwgaW5vZGVfbnVtLCBpbm9kZSwgcHJlZml4KTsKKwllbHNlIGlmIChMSU5VWF9TX0lTQkxLKGlub2RlLT5pX21vZGUpIHx8IExJTlVYX1NfSVNDSFIoaW5vZGUtPmlfbW9kZSkpIHsKKwkJaW50IG1ham9yLCBtaW5vcjsKKwkJY29uc3QgY2hhciAqZGV2bm90ZTsKKworCQlpZiAoaW5vZGUtPmlfYmxvY2tbMF0pIHsKKwkJCW1ham9yID0gKGlub2RlLT5pX2Jsb2NrWzBdID4+IDgpICYgMjU1OworCQkJbWlub3IgPSBpbm9kZS0+aV9ibG9ja1swXSAmIDI1NTsKKwkJCWRldm5vdGUgPSAiIjsKKwkJfSBlbHNlIHsKKwkJCW1ham9yID0gKGlub2RlLT5pX2Jsb2NrWzFdICYgMHhmZmYwMCkgPj4gODsKKwkJCW1pbm9yID0gKChpbm9kZS0+aV9ibG9ja1sxXSAmIDB4ZmYpIHwKKwkJCQkgKChpbm9kZS0+aV9ibG9ja1sxXSA+PiAxMikgJiAweGZmZjAwKSk7CisJCQlkZXZub3RlID0gIihOZXctc3R5bGUpICI7CisJCX0KKwkJZnByaW50ZihvdXQsICIlc0RldmljZSBtYWpvci9taW5vciBudW1iZXI6ICUwMmQ6JTAyZCAoaGV4ICUwMng6JTAyeClcbiIsCisJCQlkZXZub3RlLCBtYWpvciwgbWlub3IsIG1ham9yLCBtaW5vcik7CisJfSBlbHNlIGlmIChkb19kdW1wX2Jsb2NrcykgeworCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpCisJCQlkdW1wX2V4dGVudHMob3V0LCBwcmVmaXgsIGlub2RlX251bSwKKwkJCQkgICAgIERVTVBfTEVBRl9FWFRFTlRTfERVTVBfTk9ERV9FWFRFTlRTLCAwLCAwKTsKKwkJZWxzZSBpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQkJZHVtcF9pbmxpbmVfZGF0YShvdXQsIHByZWZpeCwgaW5vZGVfbnVtKTsKKwkJZWxzZQorCQkJZHVtcF9ibG9ja3Mob3V0LCBwcmVmaXgsIGlub2RlX251bSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBkdW1wX2lub2RlKGV4dDJfaW5vX3QgaW5vZGVfbnVtLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpCit7CisJRklMRQkqb3V0OworCisJb3V0ID0gb3Blbl9wYWdlcigpOworCWludGVybmFsX2R1bXBfaW5vZGUob3V0LCAiIiwgaW5vZGVfbnVtLCBpbm9kZSwgMSk7CisJY2xvc2VfcGFnZXIob3V0KTsKK30KKwordm9pZCBkb19zdGF0KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlX2J1ZjsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpbm9kZV9idWYgPSAoc3RydWN0IGV4dDJfaW5vZGUgKikKKwkJCW1hbGxvYyhFWFQyX0lOT0RFX1NJWkUoY3VycmVudF9mcy0+c3VwZXIpKTsKKwlpZiAoIWlub2RlX2J1ZikgeworCQlmcHJpbnRmKHN0ZGVyciwgImRvX3N0YXQ6IGNhbid0IGFsbG9jYXRlIGJ1ZmZlclxuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vZGUsIDApKSB7CisJCWZyZWUoaW5vZGVfYnVmKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGVfZnVsbChpbm9kZSwgaW5vZGVfYnVmLCBhcmd2WzBdLAorCQkJCQlFWFQyX0lOT0RFX1NJWkUoY3VycmVudF9mcy0+c3VwZXIpKSkgeworCQlmcmVlKGlub2RlX2J1Zik7CisJCXJldHVybjsKKwl9CisKKwlkdW1wX2lub2RlKGlub2RlLCBpbm9kZV9idWYpOworCWZyZWUoaW5vZGVfYnVmKTsKKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fZHVtcF9leHRlbnRzKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlleHQyX2lub190CWlubzsKKwlGSUxFCQkqb3V0OworCWludAkJYywgZmxhZ3MgPSAwOworCWludAkJbG9naWNhbF93aWR0aDsKKwlpbnQJCXBoeXNpY2FsX3dpZHRoOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJubCIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ24nOgorCQkJZmxhZ3MgfD0gRFVNUF9OT0RFX0VYVEVOVFM7CisJCQlicmVhazsKKwkJY2FzZSAnbCc6CisJCQlmbGFncyB8PSBEVU1QX0xFQUZfRVhURU5UUzsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKGFyZ2MgIT0gb3B0aW5kICsgMSkgeworCQljb21fZXJyKDAsIDAsICJVc2FnZTogZHVtcF9leHRlbnRzIFstbl0gWy1sXSBmaWxlIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoZmxhZ3MgPT0gMCkKKwkJZmxhZ3MgPSBEVU1QX05PREVfRVhURU5UUyB8IERVTVBfTEVBRl9FWFRFTlRTOworCWZsYWdzIHw9IERVTVBfRVhURU5UX1RBQkxFOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlubyA9IHN0cmluZ190b19pbm9kZShhcmd2W29wdGluZF0pOworCWlmIChpbm8gPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm8sICZpbm9kZSwgYXJndlswXSkpCisJCXJldHVybjsKKworCWlmICgoaW5vZGUuaV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgPT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBkb2VzIG5vdCB1c2VzIGV4dGVudCBibG9jayBtYXBzXG4iLAorCQkJYXJndltvcHRpbmRdKTsKKwkJcmV0dXJuOworCX0KKworCWxvZ2ljYWxfd2lkdGggPSBpbnRfbG9nMTAoKEVYVDJfSV9TSVpFKCZpbm9kZSkrY3VycmVudF9mcy0+YmxvY2tzaXplLTEpLworCQkJCSAgY3VycmVudF9mcy0+YmxvY2tzaXplKSArIDE7CisJaWYgKGxvZ2ljYWxfd2lkdGggPCA1KQorCQlsb2dpY2FsX3dpZHRoID0gNTsKKwlwaHlzaWNhbF93aWR0aCA9IGludF9sb2cxMChleHQyZnNfYmxvY2tzX2NvdW50KGN1cnJlbnRfZnMtPnN1cGVyKSkgKyAxOworCWlmIChwaHlzaWNhbF93aWR0aCA8IDUpCisJCXBoeXNpY2FsX3dpZHRoID0gNTsKKworCW91dCA9IG9wZW5fcGFnZXIoKTsKKwlkdW1wX2V4dGVudHMob3V0LCAiIiwgaW5vLCBmbGFncywgbG9naWNhbF93aWR0aCwgcGh5c2ljYWxfd2lkdGgpOworCWNsb3NlX3BhZ2VyKG91dCk7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW50IHByaW50X2Jsb2Nrc19wcm9jKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgYmxrNjRfdCAqYmxvY2tuciwKKwkJCSAgICAgZTJfYmxrY250X3QgYmxvY2tjbnQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIGludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgdm9pZCAqcHJpdmF0ZSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcHJpbnRmKCIlbGx1ICIsICpibG9ja25yKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkb19ibG9ja3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlleHQyX2lub190CWlub2RlOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChjb21tb25faW5vZGVfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsICZpbm9kZSwgMCkpIHsKKwkJcmV0dXJuOworCX0KKworCWV4dDJmc19ibG9ja19pdGVyYXRlMyhjdXJyZW50X2ZzLCBpbm9kZSwgQkxPQ0tfRkxBR19SRUFEX09OTFksIE5VTEwsCisJCQkgICAgICBwcmludF9ibG9ja3NfcHJvYywgTlVMTCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fY2hyb290KGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdCBpbm9kZTsKKwlpbnQgcmV0dmFsOworCisJaWYgKGNvbW1vbl9pbm9kZV9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgJmlub2RlLCAwKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2RpcmVjdG9yeShjdXJyZW50X2ZzLCBpbm9kZSk7CisJaWYgKHJldHZhbCkgIHsKKwkJY29tX2Vycihhcmd2WzFdLCByZXR2YWwsIDApOworCQlyZXR1cm47CisJfQorCXJvb3QgPSBpbm9kZTsKK30KKworI2lmbmRlZiBSRUFEX09OTFkKK3ZvaWQgZG9fY2xyaShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QgaW5vZGU7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGVfYnVmOworCisJaWYgKGNvbW1vbl9pbm9kZV9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgJmlub2RlLCBDSEVDS19GU19SVykpCisJCXJldHVybjsKKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGUoaW5vZGUsICZpbm9kZV9idWYsIGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJbWVtc2V0KCZpbm9kZV9idWYsIDAsIHNpemVvZihpbm9kZV9idWYpKTsKKwlpZiAoZGVidWdmc193cml0ZV9pbm9kZShpbm9kZSwgJmlub2RlX2J1ZiwgYXJndlswXSkpCisJCXJldHVybjsKK30KKwordm9pZCBkb19mcmVlaShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGludAlsZW4gPSAxOworCWludAkJZXJyID0gMDsKKwlleHQyX2lub190CWlub2RlOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMywgYXJndlswXSwgIjxmaWxlPiBbbnVtXSIsCisJCQkJQ0hFQ0tfRlNfUlcgfCBDSEVDS19GU19CSVRNQVBTKSkKKwkJcmV0dXJuOworCWlmIChjaGVja19mc19yZWFkX3dyaXRlKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpbm9kZSA9IHN0cmluZ190b19pbm9kZShhcmd2WzFdKTsKKwlpZiAoIWlub2RlKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA9PSAzKSB7CisJCWxlbiA9IHBhcnNlX3Vsb25nKGFyZ3ZbMl0sIGFyZ3ZbMF0sICJsZW5ndGgiLCAmZXJyKTsKKwkJaWYgKGVycikKKwkJCXJldHVybjsKKwl9CisKKwlpZiAobGVuID09IDEgJiYKKwkgICAgIWV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3VycmVudF9mcy0+aW5vZGVfbWFwLGlub2RlKSkKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiV2FybmluZzogaW5vZGUgYWxyZWFkeSBjbGVhciIpOworCXdoaWxlIChsZW4tLSA+IDApCisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdXJyZW50X2ZzLT5pbm9kZV9tYXAsIGlub2RlKyspOworCWV4dDJmc19tYXJrX2liX2RpcnR5KGN1cnJlbnRfZnMpOworfQorCit2b2lkIGRvX3NldGkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCBpbnQJbGVuID0gMTsKKwlpbnQJCWVyciA9IDA7CisJZXh0Ml9pbm9fdAlpbm9kZTsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDMsIGFyZ3ZbMF0sICI8ZmlsZT4gW251bV0iLAorCQkJCUNIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaW5vZGUgPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm9kZSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPT0gMykgeworCQlsZW4gPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAibGVuZ3RoIiwgJmVycik7CisJCWlmIChlcnIpCisJCQlyZXR1cm47CisJfQorCisJaWYgKChsZW4gPT0gMSkgJiYKKwkgICAgZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdXJyZW50X2ZzLT5pbm9kZV9tYXAsaW5vZGUpKQorCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJXYXJuaW5nOiBpbm9kZSBhbHJlYWR5IHNldCIpOworCXdoaWxlIChsZW4tLSA+IDApCisJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3VycmVudF9mcy0+aW5vZGVfbWFwLCBpbm9kZSsrKTsKKwlleHQyZnNfbWFya19pYl9kaXJ0eShjdXJyZW50X2ZzKTsKK30KKyNlbmRpZiAvKiBSRUFEX09OTFkgKi8KKwordm9pZCBkb190ZXN0aShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QgaW5vZGU7CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vZGUsIENIRUNLX0ZTX0JJVE1BUFMpKQorCQlyZXR1cm47CisKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdXJyZW50X2ZzLT5pbm9kZV9tYXAsaW5vZGUpKQorCQlwcmludGYoIklub2RlICV1IGlzIG1hcmtlZCBpbiB1c2VcbiIsIGlub2RlKTsKKwllbHNlCisJCXByaW50ZigiSW5vZGUgJXUgaXMgbm90IGluIHVzZVxuIiwgaW5vZGUpOworfQorCisjaWZuZGVmIFJFQURfT05MWQordm9pZCBkb19mcmVlYihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWJsazY0X3QgYmxvY2s7CisJYmxrNjRfdCBjb3VudCA9IDE7CisKKwlpZiAoY29tbW9uX2Jsb2NrX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmYmxvY2ssICZjb3VudCkpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlpZiAoIWV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY3VycmVudF9mcy0+YmxvY2tfbWFwLGJsb2NrKSkKKwkJCWNvbV9lcnIoYXJndlswXSwgMCwgIldhcm5pbmc6IGJsb2NrICVsbHUgYWxyZWFkeSBjbGVhciIsCisJCQkJYmxvY2spOworCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoY3VycmVudF9mcy0+YmxvY2tfbWFwLGJsb2NrKTsKKwkJYmxvY2srKzsKKwl9CisJZXh0MmZzX21hcmtfYmJfZGlydHkoY3VycmVudF9mcyk7Cit9CisKK3ZvaWQgZG9fc2V0YihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWJsazY0X3QgYmxvY2s7CisJYmxrNjRfdCBjb3VudCA9IDE7CisKKwlpZiAoY29tbW9uX2Jsb2NrX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmYmxvY2ssICZjb3VudCkpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdXJyZW50X2ZzLT5ibG9ja19tYXAsYmxvY2spKQorCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiV2FybmluZzogYmxvY2sgJWxsdSBhbHJlYWR5IHNldCIsCisJCQkJYmxvY2spOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN1cnJlbnRfZnMtPmJsb2NrX21hcCxibG9jayk7CisJCWJsb2NrKys7CisJfQorCWV4dDJmc19tYXJrX2JiX2RpcnR5KGN1cnJlbnRfZnMpOworfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCit2b2lkIGRvX3Rlc3RiKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJYmxrNjRfdCBibG9jazsKKwlibGs2NF90IGNvdW50ID0gMTsKKworCWlmIChjb21tb25fYmxvY2tfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsICZibG9jaywgJmNvdW50KSkKKwkJcmV0dXJuOworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdXJyZW50X2ZzLT5ibG9ja19tYXAsYmxvY2spKQorCQkJcHJpbnRmKCJCbG9jayAlbGx1IG1hcmtlZCBpbiB1c2VcbiIsIGJsb2NrKTsKKwkJZWxzZQorCQkJcHJpbnRmKCJCbG9jayAlbGx1IG5vdCBpbiB1c2VcbiIsIGJsb2NrKTsKKwkJYmxvY2srKzsKKwl9Cit9CisKKyNpZm5kZWYgUkVBRF9PTkxZCitzdGF0aWMgdm9pZCBtb2RpZnlfdTgoY2hhciAqY29tLCBjb25zdCBjaGFyICpwcm9tcHQsCisJCSAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgX191OCAqdmFsKQoreworCWNoYXIgYnVmWzIwMF07CisJdW5zaWduZWQgbG9uZyB2OworCWNoYXIgKnRtcDsKKworCXNwcmludGYoYnVmLCBmb3JtYXQsICp2YWwpOworCXByaW50ZigiJTMwcyAgICBbJXNdICIsIHByb21wdCwgYnVmKTsKKwlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSkKKwkJcmV0dXJuOworCWlmIChidWZbc3RybGVuIChidWYpIC0gMV0gPT0gJ1xuJykKKwkJYnVmW3N0cmxlbiAoYnVmKSAtIDFdID0gJ1wwJzsKKwlpZiAoIWJ1ZlswXSkKKwkJcmV0dXJuOworCXYgPSBzdHJ0b3VsKGJ1ZiwgJnRtcCwgMCk7CisJaWYgKCp0bXApCisJCWNvbV9lcnIoY29tLCAwLCAiQmFkIHZhbHVlIC0gJXMiLCBidWYpOworCWVsc2UKKwkJKnZhbCA9IHY7Cit9CisKK3N0YXRpYyB2b2lkIG1vZGlmeV91MTYoY2hhciAqY29tLCBjb25zdCBjaGFyICpwcm9tcHQsCisJCSAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIF9fdTE2ICp2YWwpCit7CisJY2hhciBidWZbMjAwXTsKKwl1bnNpZ25lZCBsb25nIHY7CisJY2hhciAqdG1wOworCisJc3ByaW50ZihidWYsIGZvcm1hdCwgKnZhbCk7CisJcHJpbnRmKCIlMzBzICAgIFslc10gIiwgcHJvbXB0LCBidWYpOworCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pKQorCQlyZXR1cm47CisJaWYgKGJ1ZltzdHJsZW4gKGJ1ZikgLSAxXSA9PSAnXG4nKQorCQlidWZbc3RybGVuIChidWYpIC0gMV0gPSAnXDAnOworCWlmICghYnVmWzBdKQorCQlyZXR1cm47CisJdiA9IHN0cnRvdWwoYnVmLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCkKKwkJY29tX2Vycihjb20sIDAsICJCYWQgdmFsdWUgLSAlcyIsIGJ1Zik7CisJZWxzZQorCQkqdmFsID0gdjsKK30KKworc3RhdGljIHZvaWQgbW9kaWZ5X3UzMihjaGFyICpjb20sIGNvbnN0IGNoYXIgKnByb21wdCwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgX191MzIgKnZhbCkKK3sKKwljaGFyIGJ1ZlsyMDBdOworCXVuc2lnbmVkIGxvbmcgdjsKKwljaGFyICp0bXA7CisKKwlzcHJpbnRmKGJ1ZiwgZm9ybWF0LCAqdmFsKTsKKwlwcmludGYoIiUzMHMgICAgWyVzXSAiLCBwcm9tcHQsIGJ1Zik7CisJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBzdGRpbikpCisJCXJldHVybjsKKwlpZiAoYnVmW3N0cmxlbiAoYnVmKSAtIDFdID09ICdcbicpCisJCWJ1ZltzdHJsZW4gKGJ1ZikgLSAxXSA9ICdcMCc7CisJaWYgKCFidWZbMF0pCisJCXJldHVybjsKKwl2ID0gc3RydG91bChidWYsICZ0bXAsIDApOworCWlmICgqdG1wKQorCQljb21fZXJyKGNvbSwgMCwgIkJhZCB2YWx1ZSAtICVzIiwgYnVmKTsKKwllbHNlCisJCSp2YWwgPSB2OworfQorCisKK3ZvaWQgZG9fbW9kaWZ5X2lub2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJZXh0Ml9pbm9fdAlpbm9kZV9udW07CisJaW50IAkJaTsKKwl1bnNpZ25lZCBjaGFyCSpmcmFnLCAqZnNpemU7CisJY2hhcgkJYnVmWzgwXTsKKwlpbnQgCQlvczsKKwljb25zdCBjaGFyCSpoZXhfZm9ybWF0ID0gIjB4JXgiOworCWNvbnN0IGNoYXIJKm9jdGFsX2Zvcm1hdCA9ICIwJW8iOworCWNvbnN0IGNoYXIJKmRlY2ltYWxfZm9ybWF0ID0gIiVkIjsKKwljb25zdCBjaGFyCSp1bnNpZ25lZGxvbmdfZm9ybWF0ID0gIiVsdSI7CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vZGVfbnVtLCBDSEVDS19GU19SVykpCisJCXJldHVybjsKKworCW9zID0gY3VycmVudF9mcy0+c3VwZXItPnNfY3JlYXRvcl9vczsKKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGUoaW5vZGVfbnVtLCAmaW5vZGUsIGFyZ3ZbMV0pKQorCQlyZXR1cm47CisKKwltb2RpZnlfdTE2KGFyZ3ZbMF0sICJNb2RlIiwgb2N0YWxfZm9ybWF0LCAmaW5vZGUuaV9tb2RlKTsKKwltb2RpZnlfdTE2KGFyZ3ZbMF0sICJVc2VyIElEIiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX3VpZCk7CisJbW9kaWZ5X3UxNihhcmd2WzBdLCAiR3JvdXAgSUQiLCBkZWNpbWFsX2Zvcm1hdCwgJmlub2RlLmlfZ2lkKTsKKwltb2RpZnlfdTMyKGFyZ3ZbMF0sICJTaXplIiwgdW5zaWduZWRsb25nX2Zvcm1hdCwgJmlub2RlLmlfc2l6ZSk7CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiQ3JlYXRpb24gdGltZSIsIGRlY2ltYWxfZm9ybWF0LCAmaW5vZGUuaV9jdGltZSk7CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiTW9kaWZpY2F0aW9uIHRpbWUiLCBkZWNpbWFsX2Zvcm1hdCwgJmlub2RlLmlfbXRpbWUpOworCW1vZGlmeV91MzIoYXJndlswXSwgIkFjY2VzcyB0aW1lIiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2F0aW1lKTsKKwltb2RpZnlfdTMyKGFyZ3ZbMF0sICJEZWxldGlvbiB0aW1lIiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2R0aW1lKTsKKwltb2RpZnlfdTE2KGFyZ3ZbMF0sICJMaW5rIGNvdW50IiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2xpbmtzX2NvdW50KTsKKwlpZiAob3MgPT0gRVhUMl9PU19MSU5VWCkKKwkJbW9kaWZ5X3UxNihhcmd2WzBdLCAiQmxvY2sgY291bnQgaGlnaCIsIHVuc2lnbmVkbG9uZ19mb3JtYXQsCisJCQkgICAmaW5vZGUub3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSk7CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiQmxvY2sgY291bnQiLCB1bnNpZ25lZGxvbmdfZm9ybWF0LCAmaW5vZGUuaV9ibG9ja3MpOworCW1vZGlmeV91MzIoYXJndlswXSwgIkZpbGUgZmxhZ3MiLCBoZXhfZm9ybWF0LCAmaW5vZGUuaV9mbGFncyk7CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiR2VuZXJhdGlvbiIsIGhleF9mb3JtYXQsICZpbm9kZS5pX2dlbmVyYXRpb24pOworI2lmIDAKKwltb2RpZnlfdTMyKGFyZ3ZbMF0sICJSZXNlcnZlZDEiLCBkZWNpbWFsX2Zvcm1hdCwgJmlub2RlLmlfcmVzZXJ2ZWQxKTsKKyNlbmRpZgorCW1vZGlmeV91MzIoYXJndlswXSwgIkZpbGUgYWNsIiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2ZpbGVfYWNsKTsKKwlpZiAoTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKQorCQltb2RpZnlfdTMyKGFyZ3ZbMF0sICJEaXJlY3RvcnkgYWNsIiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2Rpcl9hY2wpOworCWVsc2UKKwkJbW9kaWZ5X3UzMihhcmd2WzBdLCAiSGlnaCAzMmJpdHMgb2Ygc2l6ZSIsIGRlY2ltYWxfZm9ybWF0LCAmaW5vZGUuaV9zaXplX2hpZ2gpOworCisJaWYgKG9zID09IEVYVDJfT1NfSFVSRCkKKwkJbW9kaWZ5X3UzMihhcmd2WzBdLCAiVHJhbnNsYXRvciBCbG9jayIsCisJCQkgICAgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5vc2QxLmh1cmQxLmhfaV90cmFuc2xhdG9yKTsKKworCW1vZGlmeV91MzIoYXJndlswXSwgIkZyYWdtZW50IGFkZHJlc3MiLCBkZWNpbWFsX2Zvcm1hdCwgJmlub2RlLmlfZmFkZHIpOworCXN3aXRjaCAob3MpIHsKKwkgICAgY2FzZSBFWFQyX09TX0hVUkQ6CisJCWZyYWcgPSAmaW5vZGUub3NkMi5odXJkMi5oX2lfZnJhZzsKKwkJZnNpemUgPSAmaW5vZGUub3NkMi5odXJkMi5oX2lfZnNpemU7CisJCWJyZWFrOworCSAgICBkZWZhdWx0OgorCQlmcmFnID0gZnNpemUgPSAwOworCX0KKwlpZiAoZnJhZykKKwkJbW9kaWZ5X3U4KGFyZ3ZbMF0sICJGcmFnbWVudCBudW1iZXIiLCBkZWNpbWFsX2Zvcm1hdCwgZnJhZyk7CisJaWYgKGZzaXplKQorCQltb2RpZnlfdTgoYXJndlswXSwgIkZyYWdtZW50IHNpemUiLCBkZWNpbWFsX2Zvcm1hdCwgZnNpemUpOworCisJZm9yIChpPTA7ICBpIDwgRVhUMl9ORElSX0JMT0NLUzsgaSsrKSB7CisJCXNwcmludGYoYnVmLCAiRGlyZWN0IEJsb2NrICMlZCIsIGkpOworCQltb2RpZnlfdTMyKGFyZ3ZbMF0sIGJ1ZiwgZGVjaW1hbF9mb3JtYXQsICZpbm9kZS5pX2Jsb2NrW2ldKTsKKwl9CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiSW5kaXJlY3QgQmxvY2siLCBkZWNpbWFsX2Zvcm1hdCwKKwkJICAgICZpbm9kZS5pX2Jsb2NrW0VYVDJfSU5EX0JMT0NLXSk7CisJbW9kaWZ5X3UzMihhcmd2WzBdLCAiRG91YmxlIEluZGlyZWN0IEJsb2NrIiwgZGVjaW1hbF9mb3JtYXQsCisJCSAgICAmaW5vZGUuaV9ibG9ja1tFWFQyX0RJTkRfQkxPQ0tdKTsKKwltb2RpZnlfdTMyKGFyZ3ZbMF0sICJUcmlwbGUgSW5kaXJlY3QgQmxvY2siLCBkZWNpbWFsX2Zvcm1hdCwKKwkJICAgICZpbm9kZS5pX2Jsb2NrW0VYVDJfVElORF9CTE9DS10pOworCWlmIChkZWJ1Z2ZzX3dyaXRlX2lub2RlKGlub2RlX251bSwgJmlub2RlLCBhcmd2WzFdKSkKKwkJcmV0dXJuOworfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCit2b2lkIGRvX2NoYW5nZV93b3JraW5nX2RpcihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QJaW5vZGU7CisJaW50CQlyZXR2YWw7CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vZGUsIDApKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfY2hlY2tfZGlyZWN0b3J5KGN1cnJlbnRfZnMsIGlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlsxXSwgcmV0dmFsLCAwKTsKKwkJcmV0dXJuOworCX0KKwljd2QgPSBpbm9kZTsKKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fcHJpbnRfd29ya2luZ19kaXJlY3RvcnkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQJcmV0dmFsOworCWNoYXIJKnBhdGhuYW1lID0gTlVMTDsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDEsIDEsCisJCQkJInByaW50X3dvcmtpbmdfZGlyZWN0b3J5IiwgIiIsIDApKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X3BhdGhuYW1lKGN1cnJlbnRfZnMsIGN3ZCwgMCwgJnBhdGhuYW1lKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLAorCQkJIndoaWxlIHRyeWluZyB0byBnZXQgcGF0aG5hbWUgb2YgY3dkIik7CisJfQorCXByaW50ZigiW3B3ZF0gICBJTk9ERTogJTZ1ICBQQVRIOiAlc1xuIiwKKwkgICAgICAgY3dkLCBwYXRobmFtZSA/IHBhdGhuYW1lIDogIk5VTEwiKTsKKyAgICAgICAgaWYgKHBhdGhuYW1lKSB7CisJCWZyZWUocGF0aG5hbWUpOworCQlwYXRobmFtZSA9IE5VTEw7CisgICAgICAgIH0KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X3BhdGhuYW1lKGN1cnJlbnRfZnMsIHJvb3QsIDAsICZwYXRobmFtZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCSJ3aGlsZSB0cnlpbmcgdG8gZ2V0IHBhdGhuYW1lIG9mIHJvb3QiKTsKKwl9CisJcHJpbnRmKCJbcm9vdF0gIElOT0RFOiAlNnUgIFBBVEg6ICVzXG4iLAorCSAgICAgICByb290LCBwYXRobmFtZSA/IHBhdGhuYW1lIDogIk5VTEwiKTsKKwlpZiAocGF0aG5hbWUpIHsKKwkJZnJlZShwYXRobmFtZSk7CisJCXBhdGhuYW1lID0gTlVMTDsKKwl9CisJcmV0dXJuOworfQorCisjaWZuZGVmIFJFQURfT05MWQorc3RhdGljIHZvaWQgbWFrZV9saW5rKGNoYXIgKnNvdXJjZW5hbWUsIGNoYXIgKmRlc3RuYW1lKQoreworCWV4dDJfaW5vX3QJaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCWludAkJcmV0dmFsOworCWV4dDJfaW5vX3QJZGlyOworCWNoYXIJCSpkZXN0LCAqY3AsICpiYXNlX25hbWU7CisKKwkvKgorCSAqIEdldCB0aGUgc291cmNlIGlub2RlCisJICovCisJaW5vID0gc3RyaW5nX3RvX2lub2RlKHNvdXJjZW5hbWUpOworCWlmICghaW5vKQorCQlyZXR1cm47CisJYmFzZV9uYW1lID0gc3RycmNocihzb3VyY2VuYW1lLCAnLycpOworCWlmIChiYXNlX25hbWUpCisJCWJhc2VfbmFtZSsrOworCWVsc2UKKwkJYmFzZV9uYW1lID0gc291cmNlbmFtZTsKKwkvKgorCSAqIEZpZ3VyZSBvdXQgdGhlIGRlc3RpbmF0aW9uLiAgRmlyc3Qgc2VlIGlmIGl0IGV4aXN0cyBhbmQgaXMKKwkgKiBhIGRpcmVjdG9yeS4KKwkgKi8KKwlpZiAoISAocmV0dmFsPWV4dDJmc19uYW1laShjdXJyZW50X2ZzLCByb290LCBjd2QsIGRlc3RuYW1lLCAmZGlyKSkpCisJCWRlc3QgPSBiYXNlX25hbWU7CisJZWxzZSB7CisJCS8qCisJCSAqIE9LLCBpdCBkb2Vzbid0IGV4aXN0LiAgU2VlIGlmIGl0IGlzCisJCSAqICc8ZGlyPi9iYXNlbmFtZScgb3IgJ2Jhc2VuYW1lJworCQkgKi8KKwkJY3AgPSBzdHJyY2hyKGRlc3RuYW1lLCAnLycpOworCQlpZiAoY3ApIHsKKwkJCSpjcCA9IDA7CisJCQlkaXIgPSBzdHJpbmdfdG9faW5vZGUoZGVzdG5hbWUpOworCQkJaWYgKCFkaXIpCisJCQkJcmV0dXJuOworCQkJZGVzdCA9IGNwKzE7CisJCX0gZWxzZSB7CisJCQlkaXIgPSBjd2Q7CisJCQlkZXN0ID0gZGVzdG5hbWU7CisJCX0KKwl9CisKKwlpZiAoZGVidWdmc19yZWFkX2lub2RlKGlubywgJmlub2RlLCBzb3VyY2VuYW1lKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2xpbmsoY3VycmVudF9mcywgZGlyLCBkZXN0LCBpbm8sCisJCQkgICAgIGV4dDJfZmlsZV90eXBlKGlub2RlLmlfbW9kZSkpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoIm1ha2VfbGluayIsIHJldHZhbCwgMCk7CisJcmV0dXJuOworfQorCisKK3ZvaWQgZG9fbGluayhpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDMsIDMsICJsaW5rIiwKKwkJCQkiPHNvdXJjZSBmaWxlPiA8ZGVzdF9uYW1lPiIsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJbWFrZV9saW5rKGFyZ3ZbMV0sIGFyZ3ZbMl0pOworfQorCitzdGF0aWMgaW50IG1hcmtfYmxvY2tzX3Byb2MoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgKmJsb2NrbnIsCisJCQkgICAgZTJfYmxrY250X3QgYmxvY2tjbnQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgdm9pZCAqcHJpdmF0ZSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJYmxrNjRfdAlibG9jazsKKworCWJsb2NrID0gKmJsb2NrbnI7CisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxvY2ssICsxKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkb191bmRlbChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QJaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMywgInVuZGVsZXRlIiwKKwkJCQkiPGlub2RlX251bT4gW2Rlc3RfbmFtZV0iLAorCQkJCUNIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKworCWlubyA9IHN0cmluZ190b19pbm9kZShhcmd2WzFdKTsKKwlpZiAoIWlubykKKwkJcmV0dXJuOworCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm8sICZpbm9kZSwgYXJndlsxXSkpCisJCXJldHVybjsKKworCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN1cnJlbnRfZnMtPmlub2RlX21hcCwgaW5vKSkgeworCQljb21fZXJyKGFyZ3ZbMV0sIDAsICJJbm9kZSBpcyBub3QgbWFya2VkIGFzIGRlbGV0ZWQiKTsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogWFhYIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYW5kbGUgY2hhbmdpbmcgdGhlIGxpbmtzIGNvdW50IG9uIHRoZQorCSAqIHBhcmVudCBkaXJlY3Rvcnkgd2hlbiB1bmRlbGV0aW5nIGEgZGlyZWN0b3J5LgorCSAqLworCWlub2RlLmlfbGlua3NfY291bnQgPSBMSU5VWF9TX0lTRElSKGlub2RlLmlfbW9kZSkgPyAyIDogMTsKKwlpbm9kZS5pX2R0aW1lID0gMDsKKworCWlmIChkZWJ1Z2ZzX3dyaXRlX2lub2RlKGlubywgJmlub2RlLCBhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGN1cnJlbnRfZnMsIGlubywgQkxPQ0tfRkxBR19SRUFEX09OTFksIE5VTEwsCisJCQkgICAgICBtYXJrX2Jsb2Nrc19wcm9jLCBOVUxMKTsKKworCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoY3VycmVudF9mcywgaW5vLCArMSwgMCk7CisKKwlpZiAoYXJnYyA+IDIpCisJCW1ha2VfbGluayhhcmd2WzFdLCBhcmd2WzJdKTsKK30KKworc3RhdGljIHZvaWQgdW5saW5rX2ZpbGVfYnlfbmFtZShjaGFyICpmaWxlbmFtZSkKK3sKKwlpbnQJCXJldHZhbDsKKwlleHQyX2lub190CWRpcjsKKwljaGFyCQkqYmFzZV9uYW1lOworCisJYmFzZV9uYW1lID0gc3RycmNocihmaWxlbmFtZSwgJy8nKTsKKwlpZiAoYmFzZV9uYW1lKSB7CisJCSpiYXNlX25hbWUrKyA9ICdcMCc7CisJCWRpciA9IHN0cmluZ190b19pbm9kZShmaWxlbmFtZSk7CisJCWlmICghZGlyKQorCQkJcmV0dXJuOworCX0gZWxzZSB7CisJCWRpciA9IGN3ZDsKKwkJYmFzZV9uYW1lID0gZmlsZW5hbWU7CisJfQorCXJldHZhbCA9IGV4dDJmc191bmxpbmsoY3VycmVudF9mcywgZGlyLCBiYXNlX25hbWUsIDAsIDApOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoInVubGlua19maWxlX2J5X25hbWUiLCByZXR2YWwsIDApOworCXJldHVybjsKK30KKwordm9pZCBkb191bmxpbmsoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAyLCAyLCAibGluayIsCisJCQkJIjxwYXRobmFtZT4iLCBDSEVDS19GU19SVykpCisJCXJldHVybjsKKworCXVubGlua19maWxlX2J5X25hbWUoYXJndlsxXSk7Cit9CisKK3ZvaWQgZG9fY29weV9pbm9kZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QJc3JjX2lubywgZGVzdF9pbm87CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJdW5zaWduZWQgY2hhcglidWZbNDA5Nl07CisJaW50CQlyZXR2YWw7CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAzLCAzLCAiY29weV9pbm9kZSIsCisJCQkJIjxzb3VyY2UgZmlsZT4gPGRlc3RfbmFtZT4iLCBDSEVDS19GU19SVykpCisJCXJldHVybjsKKworCXNyY19pbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFzcmNfaW5vKQorCQlyZXR1cm47CisKKwlkZXN0X2lubyA9IHN0cmluZ190b19pbm9kZShhcmd2WzJdKTsKKwlpZiAoIWRlc3RfaW5vKQorCQlyZXR1cm47CisKKwlpZiAoZGVidWdmc19yZWFkX2lub2RlX2Z1bGwoc3JjX2lubywgKHN0cnVjdCBleHQyX2lub2RlICopIGJ1ZiwKKwkJCQkgICAgYXJndlswXSwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm47CisKKwlpZiAoZGVidWdmc193cml0ZV9pbm9kZV9mdWxsKGRlc3RfaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikgYnVmLAorCQkJCSAgICAgYXJndlswXSwgc2l6ZW9mKGJ1ZikpKQorCQlyZXR1cm47Cit9CisKKyNlbmRpZiAvKiBSRUFEX09OTFkgKi8KKwordm9pZCBkb19maW5kX2ZyZWVfYmxvY2soaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlibGs2NF90CWZyZWVfYmxrLCBnb2FsLCBmaXJzdF9mcmVlID0gMDsKKyAJaW50CQljb3VudDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSp0bXA7CisKKwlpZiAoKGFyZ2MgPiAzKSB8fCAoYXJnYz09MiAmJiAqYXJndlsxXSA9PSAnPycpKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiBmaW5kX2ZyZWVfYmxvY2sgW2NvdW50IFtnb2FsXV0iKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPiAxKSB7CisJCWNvdW50ID0gc3RydG9sKGFyZ3ZbMV0sJnRtcCwwKTsKKwkJaWYgKCp0bXApIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgMCwgIkJhZCBjb3VudCAtICVzIiwgYXJndlsxXSk7CisJCQlyZXR1cm47CisJCX0KKyAJfSBlbHNlCisJCWNvdW50ID0gMTsKKworCWlmIChhcmdjID4gMikgeworCQlnb2FsID0gc3RydG9sKGFyZ3ZbMl0sICZ0bXAsIDApOworCQlpZiAoKnRtcCkgeworCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiQmFkIGdvYWwgLSAlcyIsIGFyZ3ZbMV0pOworCQkJcmV0dXJuOworCQl9CisJfQorCWVsc2UKKwkJZ29hbCA9IGN1cnJlbnRfZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisKKwlwcmludGYoIkZyZWUgYmxvY2tzIGZvdW5kOiAiKTsKKwlmcmVlX2JsayA9IGdvYWwgLSAxOworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihjdXJyZW50X2ZzLCBmcmVlX2JsayArIDEsIDAsCisJCQkJCSAgICZmcmVlX2Jsayk7CisJCWlmIChmaXJzdF9mcmVlKSB7CisJCQlpZiAoZmlyc3RfZnJlZSA9PSBmcmVlX2JsaykKKwkJCQlicmVhazsKKwkJfSBlbHNlCisJCQlmaXJzdF9mcmVlID0gZnJlZV9ibGs7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoImV4dDJmc19uZXdfYmxvY2siLCByZXR2YWwsIDApOworCQkJcmV0dXJuOworCQl9IGVsc2UKKwkJCXByaW50ZigiJWxsdSAiLCBmcmVlX2Jsayk7CisJfQorIAlwcmludGYoIlxuIik7Cit9CisKK3ZvaWQgZG9fZmluZF9mcmVlX2lub2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlmcmVlX2lub2RlLCBkaXI7CisJaW50CQltb2RlOworCWludAkJcmV0dmFsOworCWNoYXIJCSp0bXA7CisKKwlpZiAoYXJnYyA+IDMgfHwgKGFyZ2M+MSAmJiAqYXJndlsxXSA9PSAnPycpKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiBmaW5kX2ZyZWVfaW5vZGUgW2Rpcl0gW21vZGVdIik7CisJCXJldHVybjsKKwl9CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjID4gMSkgeworCQlkaXIgPSBzdHJ0b2woYXJndlsxXSwgJnRtcCwgMCk7CisJCWlmICgqdG1wKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJCYWQgZGlyIC0gJXMiLCBhcmd2WzFdKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKwllbHNlCisJCWRpciA9IHJvb3Q7CisJaWYgKGFyZ2MgPiAyKSB7CisJCW1vZGUgPSBzdHJ0b2woYXJndlsyXSwgJnRtcCwgMCk7CisJCWlmICgqdG1wKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJCYWQgbW9kZSAtICVzIiwgYXJndlsyXSk7CisJCQlyZXR1cm47CisJCX0KKwl9IGVsc2UKKwkJbW9kZSA9IDAxMDc1NTsKKworCXJldHZhbCA9IGV4dDJmc19uZXdfaW5vZGUoY3VycmVudF9mcywgZGlyLCBtb2RlLCAwLCAmZnJlZV9pbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJY29tX2VycigiZXh0MmZzX25ld19pbm9kZSIsIHJldHZhbCwgMCk7CisJZWxzZQorCQlwcmludGYoIkZyZWUgaW5vZGUgZm91bmQ6ICV1XG4iLCBmcmVlX2lub2RlKTsKK30KKworI2lmbmRlZiBSRUFEX09OTFkKK3ZvaWQgZG9fd3JpdGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMywgMywgIndyaXRlIiwKKwkJCQkiPG5hdGl2ZSBmaWxlPiA8bmV3IGZpbGU+IiwgQ0hFQ0tfRlNfUlcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBkb193cml0ZV9pbnRlcm5hbChjdXJyZW50X2ZzLCBjd2QsIGFyZ3ZbMV0sIGFyZ3ZbMl0sIHJvb3QpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAwKTsKK30KKwordm9pZCBkb19ta25vZChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGxvbmcJbWFqb3IsIG1pbm9yOworCWVycmNvZGVfdCAJcmV0dmFsOworCWludAkJbnI7CisJc3RydWN0IHN0YXQJc3Q7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChhcmdjIDwgMyB8fCBhcmd2WzJdWzFdKSB7CisJdXNhZ2U6CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiBta25vZCA8bmFtZT4gW3B8IFtjfGJdIDxtYWpvcj4gPG1pbm9yPl0iKTsKKwkJcmV0dXJuOworCX0KKworCW1pbm9yID0gbWFqb3IgPSAwOworCXN3aXRjaCAoYXJndlsyXVswXSkgeworCQljYXNlICdwJzoKKwkJCXN0LnN0X21vZGUgPSBTX0lGSUZPOworCQkJbnIgPSAzOworCQkJYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkJc3Quc3RfbW9kZSA9IFNfSUZDSFI7CisJCQluciA9IDU7CisJCQlicmVhazsKKwkJY2FzZSAnYic6CisJCQlzdC5zdF9tb2RlID0gU19JRkJMSzsKKwkJCW5yID0gNTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJbnIgPSAwOworCX0KKworCWlmIChuciA9PSA1KSB7CisJCW1ham9yID0gc3RydG91bChhcmd2WzNdLCBhcmd2KzMsIDApOworCQltaW5vciA9IHN0cnRvdWwoYXJndls0XSwgYXJndis0LCAwKTsKKwkJaWYgKG1ham9yID4gNjU1MzUgfHwgbWlub3IgPiA2NTUzNSB8fCBhcmd2WzNdWzBdIHx8IGFyZ3ZbNF1bMF0pCisJCQluciA9IDA7CisJfQorCisJaWYgKGFyZ2MgIT0gbnIpCisJCWdvdG8gdXNhZ2U7CisKKwlzdC5zdF9yZGV2ID0gbWFrZWRldihtYWpvciwgbWlub3IpOworCXJldHZhbCA9IGRvX21rbm9kX2ludGVybmFsKGN1cnJlbnRfZnMsIGN3ZCwgYXJndlsxXSwgJnN0KTsKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgMCk7Cit9CisKK3ZvaWQgZG9fbWtkaXIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMiwgIm1rZGlyIiwKKwkJCQkiPGZpbGVuYW1lPiIsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZG9fbWtkaXJfaW50ZXJuYWwoY3VycmVudF9mcywgY3dkLCBhcmd2WzFdLCByb290KTsKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgMCk7CisKK30KKworc3RhdGljIGludCByZWxlYXNlX2Jsb2Nrc19wcm9jKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90ICpibG9ja25yLAorCQkJICAgICAgIGUyX2Jsa2NudF90IGJsb2NrY250IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgICBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIHZvaWQgKnByaXZhdGUgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWJsazY0X3QJYmxvY2s7CisKKwlibG9jayA9ICpibG9ja25yOworCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsb2NrLCAtMSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGtpbGxfZmlsZV9ieV9pbm9kZShleHQyX2lub190IGlub2RlKQoreworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlX2J1ZjsKKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGUoaW5vZGUsICZpbm9kZV9idWYsIDApKQorCQlyZXR1cm47CisJaW5vZGVfYnVmLmlfZHRpbWUgPSBjdXJyZW50X2ZzLT5ub3cgPyBjdXJyZW50X2ZzLT5ub3cgOiB0aW1lKDApOworCWlmIChkZWJ1Z2ZzX3dyaXRlX2lub2RlKGlub2RlLCAmaW5vZGVfYnVmLCAwKSkKKwkJcmV0dXJuOworCWlmIChleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoY3VycmVudF9mcywgJmlub2RlX2J1ZikpIHsKKwkJZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGN1cnJlbnRfZnMsIGlub2RlLCBCTE9DS19GTEFHX1JFQURfT05MWSwKKwkJCQkgICAgICBOVUxMLCByZWxlYXNlX2Jsb2Nrc19wcm9jLCBOVUxMKTsKKwl9CisJcHJpbnRmKCJcbiIpOworCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoY3VycmVudF9mcywgaW5vZGUsIC0xLAorCQkJCSAgTElOVVhfU19JU0RJUihpbm9kZV9idWYuaV9tb2RlKSk7Cit9CisKKwordm9pZCBkb19raWxsX2ZpbGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlleHQyX2lub190IGlub2RlX251bTsKKworCWlmIChjb21tb25faW5vZGVfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsICZpbm9kZV9udW0sIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJa2lsbF9maWxlX2J5X2lub2RlKGlub2RlX251bSk7Cit9CisKK3ZvaWQgZG9fcm0oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgcmV0dmFsOworCWV4dDJfaW5vX3QgaW5vZGVfbnVtOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMiwgInJtIiwKKwkJCQkiPGZpbGVuYW1lPiIsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX25hbWVpKGN1cnJlbnRfZnMsIHJvb3QsIGN3ZCwgYXJndlsxXSwgJmlub2RlX251bSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIHRyeWluZyB0byByZXNvbHZlIGZpbGVuYW1lIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoZGVidWdmc19yZWFkX2lub2RlKGlub2RlX251bSwgJmlub2RlLCBhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJmaWxlIGlzIGEgZGlyZWN0b3J5Iik7CisJCXJldHVybjsKKwl9CisKKwktLWlub2RlLmlfbGlua3NfY291bnQ7CisJaWYgKGRlYnVnZnNfd3JpdGVfaW5vZGUoaW5vZGVfbnVtLCAmaW5vZGUsIGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwl1bmxpbmtfZmlsZV9ieV9uYW1lKGFyZ3ZbMV0pOworCWlmIChpbm9kZS5pX2xpbmtzX2NvdW50ID09IDApCisJCWtpbGxfZmlsZV9ieV9pbm9kZShpbm9kZV9udW0pOworfQorCitzdHJ1Y3QgcmRfc3RydWN0IHsKKwlleHQyX2lub190CXBhcmVudDsKKwlpbnQJCWVtcHR5OworfTsKKworc3RhdGljIGludCBybWRpcl9wcm9jKGV4dDJfaW5vX3QgZGlyIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgaW50CWVudHJ5IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCSAgICAgIGludAlvZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgY2hhcgkqYnVmIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgdm9pZAkqcHJpdmF0ZSkKK3sKKwlzdHJ1Y3QgcmRfc3RydWN0ICpyZHMgPSAoc3RydWN0IHJkX3N0cnVjdCAqKSBwcml2YXRlOworCisJaWYgKGRpcmVudC0+aW5vZGUgPT0gMCkKKwkJcmV0dXJuIDA7CisJaWYgKChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgPT0gMSkgJiYgKGRpcmVudC0+bmFtZVswXSA9PSAnLicpKQorCQlyZXR1cm4gMDsKKwlpZiAoKGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSA9PSAyKSAmJiAoZGlyZW50LT5uYW1lWzBdID09ICcuJykgJiYKKwkgICAgKGRpcmVudC0+bmFtZVsxXSA9PSAnLicpKSB7CisJCXJkcy0+cGFyZW50ID0gZGlyZW50LT5pbm9kZTsKKwkJcmV0dXJuIDA7CisJfQorCXJkcy0+ZW1wdHkgPSAwOworCXJldHVybiAwOworfQorCit2b2lkIGRvX3JtZGlyKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IHJldHZhbDsKKwlleHQyX2lub190IGlub2RlX251bTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlzdHJ1Y3QgcmRfc3RydWN0IHJkczsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDIsICJybWRpciIsCisJCQkJIjxmaWxlbmFtZT4iLCBDSEVDS19GU19SVykpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19uYW1laShjdXJyZW50X2ZzLCByb290LCBjd2QsIGFyZ3ZbMV0sICZpbm9kZV9udW0pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSB0cnlpbmcgdG8gcmVzb2x2ZSBmaWxlbmFtZSIpOworCQlyZXR1cm47CisJfQorCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm9kZV9udW0sICZpbm9kZSwgYXJndlswXSkpCisJCXJldHVybjsKKworCWlmICghTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgImZpbGUgaXMgbm90IGEgZGlyZWN0b3J5Iik7CisJCXJldHVybjsKKwl9CisKKwlyZHMucGFyZW50ID0gMDsKKwlyZHMuZW1wdHkgPSAxOworCisJcmV0dmFsID0gZXh0MmZzX2Rpcl9pdGVyYXRlMihjdXJyZW50X2ZzLCBpbm9kZV9udW0sIDAsCisJCQkJICAgIDAsIHJtZGlyX3Byb2MsICZyZHMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkiKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocmRzLmVtcHR5ID09IDApIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiZGlyZWN0b3J5IG5vdCBlbXB0eSIpOworCQlyZXR1cm47CisJfQorCisJaW5vZGUuaV9saW5rc19jb3VudCA9IDA7CisJaWYgKGRlYnVnZnNfd3JpdGVfaW5vZGUoaW5vZGVfbnVtLCAmaW5vZGUsIGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwl1bmxpbmtfZmlsZV9ieV9uYW1lKGFyZ3ZbMV0pOworCWtpbGxfZmlsZV9ieV9pbm9kZShpbm9kZV9udW0pOworCisJaWYgKHJkcy5wYXJlbnQpIHsKKwkJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShyZHMucGFyZW50LCAmaW5vZGUsIGFyZ3ZbMF0pKQorCQkJcmV0dXJuOworCQlpZiAoaW5vZGUuaV9saW5rc19jb3VudCA+IDEpCisJCQlpbm9kZS5pX2xpbmtzX2NvdW50LS07CisJCWlmIChkZWJ1Z2ZzX3dyaXRlX2lub2RlKHJkcy5wYXJlbnQsICZpbm9kZSwgYXJndlswXSkpCisJCQlyZXR1cm47CisJfQorfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCit2b2lkIGRvX3Nob3dfZGVidWdmc19wYXJhbXMoaW50IGFyZ2MgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgIGNoYXIgKmFyZ3ZbXSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJaWYgKGN1cnJlbnRfZnMpCisJCXByaW50ZigiT3BlbiBtb2RlOiByZWFkLSVzXG4iLAorCQkgICAgICAgY3VycmVudF9mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcgPyAid3JpdGUiIDogIm9ubHkiKTsKKwlwcmludGYoIkZpbGVzeXN0ZW0gaW4gdXNlOiAlc1xuIiwKKwkgICAgICAgY3VycmVudF9mcyA/IGN1cnJlbnRfZnMtPmRldmljZV9uYW1lIDogIi0tbm9uZS0tIik7Cit9CisKKyNpZm5kZWYgUkVBRF9PTkxZCit2b2lkIGRvX2V4cGFuZF9kaXIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlleHQyX2lub190IGlub2RlOworCWludCByZXR2YWw7CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vZGUsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2V4cGFuZF9kaXIoY3VycmVudF9mcywgaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoImV4dDJmc19leHBhbmRfZGlyIiwgcmV0dmFsLCAwKTsKKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fZmVhdHVyZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQJaTsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoKGFyZ2MgIT0gMSkgJiYgY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCWZvciAoaT0xOyBpIDwgYXJnYzsgaSsrKSB7CisJCWlmIChlMnBfZWRpdF9mZWF0dXJlKGFyZ3ZbaV0sCisJCQkJICAgICAmY3VycmVudF9mcy0+c3VwZXItPnNfZmVhdHVyZV9jb21wYXQsIDApKQorCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiVW5rbm93biBmZWF0dXJlOiAlc1xuIiwKKwkJCQlhcmd2W2ldKTsKKwkJZWxzZQorCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoY3VycmVudF9mcyk7CisJfQorCXByaW50X2ZlYXR1cmVzKGN1cnJlbnRfZnMtPnN1cGVyLCBzdGRvdXQpOworfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCit2b2lkIGRvX2JtYXAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlleHQyX2lub190CWlubzsKKwlibGs2NF90CQlibGssIHBibGsgPSAwOworCWludAkJYywgZXJyLCBmbGFncyA9IDAsIHJldF9mbGFncyA9IDA7CisJZXJyY29kZV90CWVycmNvZGU7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiYSIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2EnOgorCQkJZmxhZ3MgfD0gQk1BUF9BTExPQzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKworCWlmIChhcmdjIDw9IG9wdGluZCsxKSB7CisJcHJpbnRfdXNhZ2U6CisJCWNvbV9lcnIoMCwgMCwKKwkJCSJVc2FnZTogYm1hcCBbLWFdIDxmaWxlPiBsb2dpY2FsX2JsayBbcGh5c2ljYWxfYmxrXSIpOworCQlyZXR1cm47CisJfQorCisJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3Zbb3B0aW5kKytdKTsKKwlpZiAoIWlubykKKwkJcmV0dXJuOworCWVyciA9IHN0cnRvYmxrKGFyZ3ZbMF0sIGFyZ3Zbb3B0aW5kKytdLCAibG9naWNhbCBibG9jayIsICZibGspOworCWlmIChlcnIpCisJCXJldHVybjsKKworCWlmIChhcmdjID4gb3B0aW5kKzEpCisJCWdvdG8gcHJpbnRfdXNhZ2U7CisKKwlpZiAoYXJnYyA9PSBvcHRpbmQrMSkgeworCQllcnIgPSBzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2W29wdGluZCsrXSwKKwkJCSAgICAgICAicGh5c2ljYWwgYmxvY2siLCAmcGJsayk7CisJCWlmIChlcnIpCisJCQlyZXR1cm47CisJCWlmIChmbGFncyAmIEJNQVBfQUxMT0MpIHsKKwkJCWNvbV9lcnIoMCwgMCwgIkNhbid0IHNldCBhbmQgYWxsb2NhdGUgYSBibG9jayIpOworCQkJcmV0dXJuOworCQl9CisJCWZsYWdzIHw9IEJNQVBfU0VUOworCX0KKworCWVycmNvZGUgPSBleHQyZnNfYm1hcDIoY3VycmVudF9mcywgaW5vLCAwLCAwLCBmbGFncywgYmxrLAorCQkJICAgICAgICZyZXRfZmxhZ3MsICZwYmxrKTsKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVycmNvZGUsCisJCQkid2hpbGUgbWFwcGluZyBsb2dpY2FsIGJsb2NrICVsbHVcbiIsIGJsayk7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCIlbGx1IiwgcGJsayk7CisJaWYgKHJldF9mbGFncyAmIEJNQVBfUkVUX1VOSU5JVCkKKwkJZnB1dHMoIiAodW5pbml0KSIsIHN0ZG91dCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKK30KKwordm9pZCBkb19pbWFwKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm87CisJdW5zaWduZWQgbG9uZyAJZ3JvdXAsIGJsb2NrLCBibG9ja19uciwgb2Zmc2V0OworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMiwgYXJndlswXSwKKwkJCQkiPGZpbGU+IiwgMCkpCisJCXJldHVybjsKKwlpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKworCWdyb3VwID0gKGlubyAtIDEpIC8gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGN1cnJlbnRfZnMtPnN1cGVyKTsKKwlvZmZzZXQgPSAoKGlubyAtIDEpICUgRVhUMl9JTk9ERVNfUEVSX0dST1VQKGN1cnJlbnRfZnMtPnN1cGVyKSkgKgorCQlFWFQyX0lOT0RFX1NJWkUoY3VycmVudF9mcy0+c3VwZXIpOworCWJsb2NrID0gb2Zmc2V0ID4+IEVYVDJfQkxPQ0tfU0laRV9CSVRTKGN1cnJlbnRfZnMtPnN1cGVyKTsKKwlpZiAoIWV4dDJmc19pbm9kZV90YWJsZV9sb2MoY3VycmVudF9mcywgKHVuc2lnbmVkKWdyb3VwKSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJJbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWx1IGlzIG1pc3NpbmdcbiIsCisJCQlncm91cCk7CisJCXJldHVybjsKKwl9CisJYmxvY2tfbnIgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGN1cnJlbnRfZnMsICh1bnNpZ25lZClncm91cCkgKworCQlibG9jazsKKwlvZmZzZXQgJj0gKEVYVDJfQkxPQ0tfU0laRShjdXJyZW50X2ZzLT5zdXBlcikgLSAxKTsKKworCXByaW50ZigiSW5vZGUgJWQgaXMgcGFydCBvZiBibG9jayBncm91cCAlbHVcbiIKKwkgICAgICAgIlx0bG9jYXRlZCBhdCBibG9jayAlbHUsIG9mZnNldCAweCUwNGx4XG4iLCBpbm8sIGdyb3VwLAorCSAgICAgICBibG9ja19uciwgb2Zmc2V0KTsKKworfQorCit2b2lkIGRvX2lkdW1wKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm87CisJdW5zaWduZWQgY2hhcgkqYnVmOworCWVycmNvZGVfdAllcnI7CisJaW50CQlpc2l6ZTsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDIsIGFyZ3ZbMF0sCisJCQkJIjxmaWxlPiIsIDApKQorCQlyZXR1cm47CisJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3ZbMV0pOworCWlmICghaW5vKQorCQlyZXR1cm47CisKKwlpc2l6ZSA9IEVYVDJfSU5PREVfU0laRShjdXJyZW50X2ZzLT5zdXBlcik7CisJZXJyID0gZXh0MmZzX2dldF9tZW0oaXNpemUsICZidWYpOworCWlmIChlcnIpIHsKKwkJY29tX2Vycihhcmd2WzBdLCBlcnIsICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpOworCQlyZXR1cm47CisJfQorCisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChjdXJyZW50X2ZzLCBpbm8sCisJCQkJICAgICAoc3RydWN0IGV4dDJfaW5vZGUgKilidWYsIGlzaXplKTsKKwlpZiAoZXJyKSB7CisJCWNvbV9lcnIoYXJndlswXSwgZXJyLCAid2hpbGUgcmVhZGluZyBpbm9kZSAlZCIsIGlubyk7CisJCWdvdG8gZXJyOworCX0KKworCWRvX2J5dGVfaGV4ZHVtcChzdGRvdXQsIGJ1ZiwgaXNpemUpOworZXJyOgorCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKK30KKworI2lmbmRlZiBSRUFEX09OTFkKK3ZvaWQgZG9fc2V0X2N1cnJlbnRfdGltZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCV9fczY0IG5vdzsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDIsIGFyZ3ZbMF0sCisJCQkJIjx0aW1lPiIsIDApKQorCQlyZXR1cm47CisKKwlub3cgPSBzdHJpbmdfdG9fdGltZShhcmd2WzFdKTsKKwlpZiAobm93ID09IC0xKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIkNvdWxkbid0IHBhcnNlIGFyZ3VtZW50IGFzIGEgdGltZTogJXNcbiIsCisJCQlhcmd2WzFdKTsKKwkJcmV0dXJuOworCisJfSBlbHNlIHsKKwkJcHJpbnRmKCJTZXR0aW5nIGN1cnJlbnQgdGltZSB0byAlc1xuIiwgdGltZV90b19zdHJpbmcobm93KSk7CisJCWN1cnJlbnRfZnMtPm5vdyA9IG5vdzsKKwl9Cit9CisjZW5kaWYgLyogUkVBRF9PTkxZICovCisKK3N0YXRpYyBpbnQgZmluZF9zdXBwX2ZlYXR1cmUoX191MzIgKnN1cHAsIGludCBmZWF0dXJlX3R5cGUsIGNoYXIgKm5hbWUpCit7CisJaW50IGNvbXBhdCwgYml0LCByZXQ7CisJdW5zaWduZWQgaW50IGZlYXR1cmVfbWFzazsKKworCWlmIChuYW1lKSB7CisJCWlmIChmZWF0dXJlX3R5cGUgPT0gRTJQX0ZTX0ZFQVRVUkUpCisJCQlyZXQgPSBlMnBfc3RyaW5nMmZlYXR1cmUobmFtZSwgJmNvbXBhdCwgJmZlYXR1cmVfbWFzayk7CisJCWVsc2UKKwkJCXJldCA9IGUycF9qcm5sX3N0cmluZzJmZWF0dXJlKG5hbWUsICZjb21wYXQsCisJCQkJCQkgICAgICAmZmVhdHVyZV9tYXNrKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJaWYgKCEoc3VwcFtjb21wYXRdICYgZmVhdHVyZV9tYXNrKSkKKwkJCXJldHVybiAxOworCX0gZWxzZSB7CisJICAgICAgICBmb3IgKGNvbXBhdCA9IDA7IGNvbXBhdCA8IDM7IGNvbXBhdCsrKSB7CisJCSAgICAgICAgZm9yIChiaXQgPSAwLCBmZWF0dXJlX21hc2sgPSAxOyBiaXQgPCAzMjsKKwkJCSAgICAgYml0KyssIGZlYXR1cmVfbWFzayA8PD0gMSkgeworCQkJICAgICAgICBpZiAoc3VwcFtjb21wYXRdICYgZmVhdHVyZV9tYXNrKSB7CisJCQkJCWlmIChmZWF0dXJlX3R5cGUgPT0gRTJQX0ZTX0ZFQVRVUkUpCisJCQkJCQlmcHJpbnRmKHN0ZG91dCwgIiAlcyIsCisJCQkJCQllMnBfZmVhdHVyZTJzdHJpbmcoY29tcGF0LAorCQkJCQkJZmVhdHVyZV9tYXNrKSk7CisJCQkJCWVsc2UKKwkJCQkJCWZwcmludGYoc3Rkb3V0LCAiICVzIiwKKwkJCQkJCWUycF9qcm5sX2ZlYXR1cmUyc3RyaW5nKGNvbXBhdCwKKwkJCQkJCWZlYXR1cmVfbWFzaykpOworCQkJCX0KKwkgICAgICAgIAl9CisJCX0KKwkgICAgICAgIGZwcmludGYoc3Rkb3V0LCAiXG4iKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkb19zdXBwb3J0ZWRfZmVhdHVyZXMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKyAgICAgICAgaW50CXJldDsKKwlfX3UzMglzdXBwWzNdID0geyBFWFQyX0xJQl9GRUFUVVJFX0NPTVBBVF9TVVBQLAorCQkJICAgIEVYVDJfTElCX0ZFQVRVUkVfSU5DT01QQVRfU1VQUCwKKwkJCSAgICBFWFQyX0xJQl9GRUFUVVJFX1JPX0NPTVBBVF9TVVBQIH07CisJX191MzIJanJubF9zdXBwWzNdID0geyBKRlNfS05PV05fQ09NUEFUX0ZFQVRVUkVTLAorCQkJCSBKRlNfS05PV05fSU5DT01QQVRfRkVBVFVSRVMsCisJCQkJIEpGU19LTk9XTl9ST0NPTVBBVF9GRUFUVVJFUyB9OworCisJaWYgKGFyZ2MgPiAxKSB7CisJCXJldCA9IGZpbmRfc3VwcF9mZWF0dXJlKHN1cHAsIEUyUF9GU19GRUFUVVJFLCBhcmd2WzFdKTsKKwkJaWYgKHJldCkgeworCQkJcmV0ID0gZmluZF9zdXBwX2ZlYXR1cmUoanJubF9zdXBwLCBFMlBfSk9VUk5BTF9GRUFUVVJFLAorCQkJCQkJYXJndlsxXSk7CisJCX0KKwkJaWYgKHJldCkKKwkJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVua25vd24gZmVhdHVyZTogJXNcbiIsIGFyZ3ZbMV0pOworCQllbHNlCisJCQlmcHJpbnRmKHN0ZG91dCwgIlN1cHBvcnRlZCBmZWF0dXJlOiAlc1xuIiwgYXJndlsxXSk7CisJfSBlbHNlIHsKKwkJZnByaW50ZihzdGRvdXQsICJTdXBwb3J0ZWQgZmVhdHVyZXM6Iik7CisJCXJldCA9IGZpbmRfc3VwcF9mZWF0dXJlKHN1cHAsIEUyUF9GU19GRUFUVVJFLCBOVUxMKTsKKwkJcmV0ID0gZmluZF9zdXBwX2ZlYXR1cmUoanJubF9zdXBwLCBFMlBfSk9VUk5BTF9GRUFUVVJFLCBOVUxMKTsKKwl9Cit9CisKKyNpZm5kZWYgUkVBRF9PTkxZCit2b2lkIGRvX3B1bmNoKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm87CisJYmxrNjRfdAkJc3RhcnQsIGVuZDsKKwlpbnQJCWVycjsKKwllcnJjb2RlX3QJZXJyY29kZTsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDMsIDQsIGFyZ3ZbMF0sCisJCQkJIjxmaWxlPiBzdGFydF9ibGsgW2VuZF9ibGtdIiwKKwkJCQlDSEVDS19GU19SVyB8IENIRUNLX0ZTX0JJVE1BUFMpKQorCQlyZXR1cm47CisKKwlpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKwllcnIgPSBzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2WzJdLCAibG9naWNhbCBibG9jayIsICZzdGFydCk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCWlmIChhcmdjID09IDQpIHsKKwkJZXJyID0gc3RydG9ibGsoYXJndlswXSwgYXJndlszXSwgImxvZ2ljYWwgYmxvY2siLCAmZW5kKTsKKwkJaWYgKGVycikKKwkJCXJldHVybjsKKwl9IGVsc2UKKwkJZW5kID0gfjA7CisKKwllcnJjb2RlID0gZXh0MmZzX3B1bmNoKGN1cnJlbnRfZnMsIGlubywgMCwgMCwgc3RhcnQsIGVuZCk7CisKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVycmNvZGUsCisJCQkid2hpbGUgdHJ1bmNhdGluZyBpbm9kZSAldSBmcm9tICVsbHUgdG8gJWxsdVxuIiwgaW5vLAorCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhcnQsICh1bnNpZ25lZCBsb25nIGxvbmcpIGVuZCk7CisJCXJldHVybjsKKwl9Cit9CisKK3ZvaWQgZG9fZmFsbG9jYXRlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm87CisJYmxrNjRfdAkJc3RhcnQsIGVuZDsKKwlpbnQJCWVycjsKKwllcnJjb2RlX3QJZXJyY29kZTsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDMsIDQsIGFyZ3ZbMF0sCisJCQkJIjxmaWxlPiBzdGFydF9ibGsgW2VuZF9ibGtdIiwKKwkJCQlDSEVDS19GU19SVyB8IENIRUNLX0ZTX0JJVE1BUFMpKQorCQlyZXR1cm47CisKKwlpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKwllcnIgPSBzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2WzJdLCAibG9naWNhbCBibG9jayIsICZzdGFydCk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCWlmIChhcmdjID09IDQpIHsKKwkJZXJyID0gc3RydG9ibGsoYXJndlswXSwgYXJndlszXSwgImxvZ2ljYWwgYmxvY2siLCAmZW5kKTsKKwkJaWYgKGVycikKKwkJCXJldHVybjsKKwl9IGVsc2UKKwkJZW5kID0gfjA7CisKKwllcnJjb2RlID0gZXh0MmZzX2ZhbGxvY2F0ZShjdXJyZW50X2ZzLCBFWFQyX0ZBTExPQ0FURV9JTklUX0JFWU9ORF9FT0YsCisJCQkJICAgaW5vLCBOVUxMLCB+MFVMTCwgc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7CisKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVycmNvZGUsCisJCQkid2hpbGUgZmFsbG9jYXRpbmcgaW5vZGUgJXUgZnJvbSAlbGx1IHRvICVsbHVcbiIsIGlubywKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0LCAodW5zaWduZWQgbG9uZyBsb25nKSBlbmQpOworCQlyZXR1cm47CisJfQorfQorI2VuZGlmIC8qIFJFQURfT05MWSAqLworCit2b2lkIGRvX3N5bWxpbmsoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMywgMywgInN5bWxpbmsiLAorCQkJCSI8ZmlsZW5hbWU+IDx0YXJnZXQ+IiwgQ0hFQ0tfRlNfUlcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBkb19zeW1saW5rX2ludGVybmFsKGN1cnJlbnRfZnMsIGN3ZCwgYXJndlsxXSwgYXJndlsyXSwgcm9vdCk7CisJaWYgKHJldHZhbCkKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIDApOworCit9CisKKyNpZiBDT05GSUdfTU1QCit2b2lkIGRvX2R1bXBfbW1wKGludCBhcmdjIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgY2hhciAqYXJndltdKQoreworCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfczsKKwl1bnNpZ25lZCBsb25nIGxvbmcgbW1wX2Jsb2NrOworCXRpbWVfdCB0OworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjID4gMSkgeworCQljaGFyICplbmQgPSBOVUxMOworCQltbXBfYmxvY2sgPSBzdHJ0b3VsbChhcmd2WzFdLCAmZW5kLCAwKTsKKwkJaWYgKGVuZCA9PSBhcmd2WzBdIHx8IG1tcF9ibG9jayA9PSAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpbnZhbGlkIE1NUCBibG9jayAnJXMnIGdpdmVuXG4iLAorCQkJCWFyZ3ZbMF0sIGFyZ3ZbMV0pOworCQkJcmV0dXJuOworCQl9CisJfSBlbHNlIHsKKwkJbW1wX2Jsb2NrID0gY3VycmVudF9mcy0+c3VwZXItPnNfbW1wX2Jsb2NrOworCX0KKworCWlmIChtbXBfYmxvY2sgPT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBNTVA6IG5vdCBhY3RpdmUgb24gdGhpcyBmaWxlc3lzdGVtLlxuIiwKKwkJCWFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCisJaWYgKGN1cnJlbnRfZnMtPm1tcF9idWYgPT0gTlVMTCkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShjdXJyZW50X2ZzLT5ibG9ja3NpemUsCisJCQkJCSZjdXJyZW50X2ZzLT5tbXBfYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJhbGxvY2F0aW5nIE1NUCBidWZmZXIuXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCW1tcF9zID0gY3VycmVudF9mcy0+bW1wX2J1ZjsKKworCXJldHZhbCA9IGV4dDJmc19tbXBfcmVhZChjdXJyZW50X2ZzLCBtbXBfYmxvY2ssIGN1cnJlbnRfZnMtPm1tcF9idWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJyZWFkaW5nIE1NUCBibG9jayAlbGx1LlxuIiwKKwkJCW1tcF9ibG9jayk7CisJCXJldHVybjsKKwl9CisKKwl0ID0gbW1wX3MtPm1tcF90aW1lOworCWZwcmludGYoc3Rkb3V0LCAiYmxvY2tfbnVtYmVyOiAlbGx1XG4iLCBjdXJyZW50X2ZzLT5zdXBlci0+c19tbXBfYmxvY2spOworCWZwcmludGYoc3Rkb3V0LCAidXBkYXRlX2ludGVydmFsOiAlZFxuIiwKKwkJY3VycmVudF9mcy0+c3VwZXItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCk7CisJZnByaW50ZihzdGRvdXQsICJjaGVja19pbnRlcnZhbDogJWRcbiIsIG1tcF9zLT5tbXBfY2hlY2tfaW50ZXJ2YWwpOworCWZwcmludGYoc3Rkb3V0LCAic2VxdWVuY2U6ICUwOHhcbiIsIG1tcF9zLT5tbXBfc2VxKTsKKwlmcHJpbnRmKHN0ZG91dCwgInRpbWU6ICVsbGQgLS0gJXMiLCBtbXBfcy0+bW1wX3RpbWUsIGN0aW1lKCZ0KSk7CisJZnByaW50ZihzdGRvdXQsICJub2RlX25hbWU6ICVzXG4iLCBtbXBfcy0+bW1wX25vZGVuYW1lKTsKKwlmcHJpbnRmKHN0ZG91dCwgImRldmljZV9uYW1lOiAlc1xuIiwgbW1wX3MtPm1tcF9iZGV2bmFtZSk7CisJZnByaW50ZihzdGRvdXQsICJtYWdpYzogMHgleFxuIiwgbW1wX3MtPm1tcF9tYWdpYyk7CisJZnByaW50ZihzdGRvdXQsICJjaGVja3N1bTogMHglMDh4XG4iLCBtbXBfcy0+bW1wX2NoZWNrc3VtKTsKKwlmcHJpbnRmKHN0ZG91dCwgIk1NUCBpcyB1bnN1cHBvcnRlZCwgcGxlYXNlIHJlY29tcGlsZSB3aXRoICIKKwkgICAgICAgICAgICAgICAgIi0tZW5hYmxlLW1tcFxuIik7Cit9CisjZWxzZQordm9pZCBkb19kdW1wX21tcChpbnQgYXJnYyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSBjaGFyICphcmd2W10gRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWZwcmludGYoc3Rkb3V0LCAiTU1QIGlzIHVuc3VwcG9ydGVkLCBwbGVhc2UgcmVjb21waWxlIHdpdGggIgorCSAgICAgICAgICAgICAgICAiLS1lbmFibGUtbW1wXG4iKTsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc3NfaWR4KQoreworCUZJTEUJCSpmOworCWNoYXIJCWJ1ZltCVUZTSVpdOworCWNoYXIJCSpjcDsKKwlpbnQJCWV4aXRfc3RhdHVzID0gMDsKKwlpbnQJCXJldHZhbDsKKworCWlmIChzdHJjbXAoY21kX2ZpbGUsICItIikgPT0gMCkKKwkJZiA9IHN0ZGluOworCWVsc2UgeworCQlmID0gZm9wZW4oY21kX2ZpbGUsICJyIik7CisJCWlmICghZikgeworCQkJcGVycm9yKGNtZF9maWxlKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJZmZsdXNoKHN0ZG91dCk7CisJZmZsdXNoKHN0ZGVycik7CisJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CisJc2V0YnVmKHN0ZGVyciwgTlVMTCk7CisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xuJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xyJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCXByaW50ZigiZGVidWdmczogJXNcbiIsIGJ1Zik7CisJCXJldHZhbCA9IHNzX2V4ZWN1dGVfbGluZShzc19pZHgsIGJ1Zik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXNzX3BlcnJvcihzc19pZHgsIHJldHZhbCwgYnVmKTsKKwkJCWV4aXRfc3RhdHVzKys7CisJCX0KKwl9CisJaWYgKGYgIT0gc3RkaW4pCisJCWZjbG9zZShmKTsKKwlyZXR1cm4gZXhpdF9zdGF0dXM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQJCXJldHZhbDsKKwljb25zdCBjaGFyCSp1c2FnZSA9IAorCQkiVXNhZ2U6ICVzIFstYiBibG9ja3NpemVdIFstcyBzdXBlcmJsb2NrXSBbLWYgY21kX2ZpbGVdICIKKwkJIlstUiByZXF1ZXN0XSBbLVZdIFsiCisjaWZuZGVmIFJFQURfT05MWQorCQkiWy13XSBbLXogdW5kb19maWxlXSAiCisjZW5kaWYKKwkJIlstY10gZGV2aWNlXSI7CisJaW50CQljOworCWludAkJb3Blbl9mbGFncyA9IEVYVDJfRkxBR19TT0ZUU1VQUF9GRUFUVVJFUyB8IEVYVDJfRkxBR182NEJJVFM7CisJY2hhcgkJKnJlcXVlc3QgPSAwOworCWludAkJZXhpdF9zdGF0dXMgPSAwOworCWNoYXIJCSpjbWRfZmlsZSA9IDA7CisJYmxrNjRfdAkJc3VwZXJibG9jayA9IDA7CisJYmxrNjRfdAkJYmxvY2tzaXplID0gMDsKKwlpbnQJCWNhdGFzdHJvcGhpYyA9IDA7CisJY2hhcgkJKmRhdGFfZmlsZW5hbWUgPSAwOworI2lmZGVmIFJFQURfT05MWQorCWNvbnN0IGNoYXIJKm9wdF9zdHJpbmcgPSAibmljUjpmOmI6czpWZDpEIjsKKyNlbHNlCisJY29uc3QgY2hhcgkqb3B0X3N0cmluZyA9ICJuaXdjUjpmOmI6czpWZDpEejoiOworCWNoYXIJCSp1bmRvX2ZpbGUgPSBOVUxMOworI2VuZGlmCisjaWZkZWYgQ09ORklHX0pCRF9ERUJVRworCWNoYXIJCSpqYmRfZGVidWc7CisjZW5kaWYKKworCWlmIChkZWJ1Z19wcm9nX25hbWUgPT0gMCkKKyNpZmRlZiBSRUFEX09OTFkKKwkJZGVidWdfcHJvZ19uYW1lID0gInJkZWJ1Z2ZzIjsKKyNlbHNlCisJCWRlYnVnX3Byb2dfbmFtZSA9ICJkZWJ1Z2ZzIjsKKyNlbmRpZgorCWFkZF9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJZnByaW50ZiAoc3RkZXJyLCAiJXMgJXMgKCVzKVxuIiwgZGVidWdfcHJvZ19uYW1lLAorCQkgRTJGU1BST0dTX1ZFUlNJT04sIEUyRlNQUk9HU19EQVRFKTsKKworI2lmZGVmIENPTkZJR19KQkRfREVCVUcKKwlqYmRfZGVidWcgPSBzc19zYWZlX2dldGVudigiREVCVUdGU19KQkRfREVCVUciKTsKKwlpZiAoamJkX2RlYnVnKSB7CisJCWludCByZXMgPSBzc2NhbmYoamJkX2RlYnVnLCAiJWQiLCAmam91cm5hbF9lbmFibGVfZGVidWcpOworCisJCWlmIChyZXMgIT0gMSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJIkRFQlVHRlNfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuXG4iLAorCQkJCWpiZF9kZWJ1Zyk7CisJCQlleGl0KDEpOworCQl9CisJfQorI2VuZGlmCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCBvcHRfc3RyaW5nKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdSJzoKKwkJCXJlcXVlc3QgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQljbWRfZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWRhdGFfZmlsZW5hbWUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlvcGVuX2ZsYWdzIHw9IEVYVDJfRkxBR19JTUFHRV9GSUxFOworCQkJYnJlYWs7CisJCWNhc2UgJ24nOgorCQkJb3Blbl9mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQkJYnJlYWs7CisjaWZuZGVmIFJFQURfT05MWQorCQljYXNlICd3JzoKKwkJCW9wZW5fZmxhZ3MgfD0gRVhUMl9GTEFHX1JXOworCQkJYnJlYWs7CisjZW5kaWYKKwkJY2FzZSAnRCc6CisJCQlvcGVuX2ZsYWdzIHw9IEVYVDJfRkxBR19ESVJFQ1RfSU87CisJCQlicmVhazsKKwkJY2FzZSAnYic6CisJCQlibG9ja3NpemUgPSBwYXJzZV91bG9uZyhvcHRhcmcsIGFyZ3ZbMF0sCisJCQkJCQkiYmxvY2sgc2l6ZSIsIDApOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJcmV0dmFsID0gc3RydG9ibGsoYXJndlswXSwgb3B0YXJnLAorCQkJCQkgICJzdXBlcmJsb2NrIGJsb2NrIG51bWJlciIsCisJCQkJCSAgJnN1cGVyYmxvY2spOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gMTsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKwkJCWNhdGFzdHJvcGhpYyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQkvKiBQcmludCB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCAqLworCQkJZnByaW50ZihzdGRlcnIsICJcdFVzaW5nICVzXG4iLAorCQkJCWVycm9yX21lc3NhZ2UoRVhUMl9FVF9CQVNFKSk7CisJCQlleGl0KDApOworCQljYXNlICd6JzoKKwkJCXVuZG9fZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY29tX2Vycihhcmd2WzBdLCAwLCB1c2FnZSwgZGVidWdfcHJvZ19uYW1lKTsKKwkJCXJldHVybiAxOworCQl9CisJfQorCWlmIChvcHRpbmQgPCBhcmdjKQorCQlvcGVuX2ZpbGVzeXN0ZW0oYXJndltvcHRpbmRdLCBvcGVuX2ZsYWdzLAorCQkJCXN1cGVyYmxvY2ssIGJsb2Nrc2l6ZSwgY2F0YXN0cm9waGljLAorCQkJCWRhdGFfZmlsZW5hbWUsIHVuZG9fZmlsZSk7CisKKwlzY2lfaWR4ID0gc3NfY3JlYXRlX2ludm9jYXRpb24oZGVidWdfcHJvZ19uYW1lLCAiMC4wIiwgKGNoYXIgKikgTlVMTCwKKwkJCQkgICAgICAgJmRlYnVnX2NtZHMsICZyZXR2YWwpOworCWlmIChyZXR2YWwpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgImNyZWF0aW5nIGludm9jYXRpb24iKTsKKwkJZXhpdCgxKTsKKwl9CisJc3NfZ2V0X3JlYWRsaW5lKHNjaV9pZHgpOworCisJKHZvaWQpIHNzX2FkZF9yZXF1ZXN0X3RhYmxlIChzY2lfaWR4LCAmc3Nfc3RkX3JlcXVlc3RzLCAxLCAmcmV0dmFsKTsKKwlpZiAocmV0dmFsKSB7CisJCXNzX3BlcnJvcihzY2lfaWR4LCByZXR2YWwsICJhZGRpbmcgc3RhbmRhcmQgcmVxdWVzdHMiKTsKKwkJZXhpdCAoMSk7CisJfQorCWlmIChleHRyYV9jbWRzKQorCQlzc19hZGRfcmVxdWVzdF90YWJsZSAoc2NpX2lkeCwgZXh0cmFfY21kcywgMSwgJnJldHZhbCk7CisJaWYgKHJldHZhbCkgeworCQlzc19wZXJyb3Ioc2NpX2lkeCwgcmV0dmFsLCAiYWRkaW5nIGV4dHJhIHJlcXVlc3RzIik7CisJCWV4aXQgKDEpOworCX0KKwlpZiAocmVxdWVzdCkgeworCQlyZXR2YWwgPSAwOworCQlyZXR2YWwgPSBzc19leGVjdXRlX2xpbmUoc2NpX2lkeCwgcmVxdWVzdCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCXNzX3BlcnJvcihzY2lfaWR4LCByZXR2YWwsIHJlcXVlc3QpOworCQkJZXhpdF9zdGF0dXMrKzsKKwkJfQorCX0gZWxzZSBpZiAoY21kX2ZpbGUpIHsKKwkJZXhpdF9zdGF0dXMgPSBzb3VyY2VfZmlsZShjbWRfZmlsZSwgc2NpX2lkeCk7CisJfSBlbHNlIHsKKwkJc3NfbGlzdGVuKHNjaV9pZHgpOworCX0KKworCXNzX2RlbGV0ZV9pbnZvY2F0aW9uKHNjaV9pZHgpOworCisJaWYgKGN1cnJlbnRfZnMpCisJCWNsb3NlX2ZpbGVzeXN0ZW0oKTsKKworCXJlbW92ZV9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJcmV0dXJuIGV4aXRfc3RhdHVzOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdmcy5oIGIvZTJmc3Byb2dzL2RlYnVnZnMvZGVidWdmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjU4NTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9kZWJ1Z2ZzLmgKQEAgLTAsMCArMSwyMDUgQEAKKy8qCisgKiBkZWJ1Z2ZzLmggLS0tIGhlYWRlciBmaWxlIGZvciB0aGUgZGVidWdmcyBwcm9ncmFtCisgKi8KKworI2luY2x1ZGUgInNzL3NzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3F1b3RhaW8uaCIKKworI2lmZGVmIF9fU1REQ19fCisjZGVmaW5lIE5PQVJHUyB2b2lkCisjZWxzZQorI2RlZmluZSBOT0FSR1MKKyNkZWZpbmUgY29uc3QKKyNlbmRpZgorCisvKgorICogRmxhZ3MgdXNlZCBieSB0aGUgY29tbW9uIGFyZ3VtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb25zCisgKi8KKyNkZWZpbmUgQ0hFQ0tfRlNfUlcJCTB4MDAwMQorI2RlZmluZSBDSEVDS19GU19CSVRNQVBTCTB4MDAwMgorI2RlZmluZSBDSEVDS19GU19OT1RPUEVOCTB4MDAwNAorCitleHRlcm4gZXh0Ml9maWxzeXMgY3VycmVudF9mczsKK2V4dGVybiBxdW90YV9jdHhfdCBjdXJyZW50X3FjdHg7CitleHRlcm4gZXh0Ml9pbm9fdAlyb290LCBjd2Q7CitleHRlcm4gaW50IHNjaV9pZHg7CitleHRlcm4gc3NfcmVxdWVzdF90YWJsZSBkZWJ1Z19jbWRzLCBleHRlbnRfY21kczsKKworZXh0ZXJuIHZvaWQgcmVzZXRfZ2V0b3B0KHZvaWQpOworZXh0ZXJuIEZJTEUgKm9wZW5fcGFnZXIodm9pZCk7CitleHRlcm4gdm9pZCBjbG9zZV9wYWdlcihGSUxFICpzdHJlYW0pOworZXh0ZXJuIGludCBjaGVja19mc19vcGVuKGNoYXIgKm5hbWUpOworZXh0ZXJuIGludCBjaGVja19mc19ub3Rfb3BlbihjaGFyICpuYW1lKTsKK2V4dGVybiBpbnQgY2hlY2tfZnNfcmVhZF93cml0ZShjaGFyICpuYW1lKTsKK2V4dGVybiBpbnQgY2hlY2tfZnNfYml0bWFwcyhjaGFyICpuYW1lKTsKK2V4dGVybiBleHQyX2lub190IHN0cmluZ190b19pbm9kZShjaGFyICpzdHIpOworZXh0ZXJuIGNoYXIgKmlub2RlX3RpbWVfdG9fc3RyaW5nKF9fdTMyIHh0aW1lLCBfX3UzMiB4dGltZV9leHRyYSk7CitleHRlcm4gY2hhciAqdGltZV90b19zdHJpbmcoX19zNjQpOworZXh0ZXJuIF9fczY0IHN0cmluZ190b190aW1lKGNvbnN0IGNoYXIgKik7CitleHRlcm4gdW5zaWduZWQgbG9uZyBwYXJzZV91bG9uZyhjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmNtZCwKKwkJCQkgY29uc3QgY2hhciAqZGVzY3IsIGludCAqZXJyKTsKK2V4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgcGFyc2VfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqY21kLAorCQkJCQkgIGNvbnN0IGNoYXIgKmRlc2NyLCBpbnQgKmVycik7CitleHRlcm4gaW50IHN0cnRvYmxrKGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICplcnJtc2csCisJCSAgICBibGs2NF90ICpyZXQpOworZXh0ZXJuIGludCBjb21tb25fYXJnc19wcm9jZXNzKGludCBhcmdjLCBjaGFyICphcmd2W10sIGludCBtaW5fYXJnYywKKwkJCSAgICAgICBpbnQgbWF4X2FyZ2MsIGNvbnN0IGNoYXIgKmNtZCwKKwkJCSAgICAgICBjb25zdCBjaGFyICp1c2FnZSwgaW50IGZsYWdzKTsKK2V4dGVybiBpbnQgY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhpbnQgYXJnYywgY2hhciAqYXJndltdLAorCQkJCSAgICAgZXh0Ml9pbm9fdCAqaW5vZGUsIGludCBmbGFncyk7CitleHRlcm4gaW50IGNvbW1vbl9ibG9ja19hcmdzX3Byb2Nlc3MoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwKKwkJCQkgICAgIGJsazY0X3QgKmJsb2NrLCBibGs2NF90ICpjb3VudCk7CitleHRlcm4gaW50IGRlYnVnZnNfcmVhZF9pbm9kZShleHQyX2lub190IGlubywgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmNtZCk7CitleHRlcm4gaW50IGRlYnVnZnNfcmVhZF9pbm9kZV9mdWxsKGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlLAorCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCwgaW50IGJ1ZnNpemUpOworZXh0ZXJuIGludCBkZWJ1Z2ZzX3dyaXRlX2lub2RlKGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKmNtZCk7CitleHRlcm4gaW50IGRlYnVnZnNfd3JpdGVfaW5vZGVfZnVsbChleHQyX2lub190IGlubywgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwKKwkJCQkgICAgY29uc3QgY2hhciAqY21kLCBpbnQgYnVmc2l6ZSk7CitleHRlcm4gaW50IGRlYnVnZnNfd3JpdGVfbmV3X2lub2RlKGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlLAorCQkJCSAgIGNvbnN0IGNoYXIgKmNtZCk7CitleHRlcm4gaW50IGV4dDJfZmlsZV90eXBlKHVuc2lnbmVkIGludCBtb2RlKTsKKworLyogc3MgY29tbWFuZCBmdW5jdGlvbnMgKi8KKworLyogZHVtcC5jICovCitleHRlcm4gdm9pZCBkb19kdW1wKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19jYXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3JkdW1wKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKKy8qIGV4dGVudF9pbm9kZS5jICovCitleHRlcm4gdm9pZCBkb19leHRlbnRfb3BlbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZXh0ZW50X2Nsb3NlKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19jdXJyZW50X25vZGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3Jvb3Rfbm9kZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fbGFzdF9sZWFmKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19maXJzdF9zaWIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2xhc3Rfc2liKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19uZXh0X3NpYihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fcHJldl9zaWIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX25leHRfbGVhZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fcHJldl9sZWFmKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19uZXh0KGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19wcmV2KGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb191cChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZG93bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZGVsZXRlX25vZGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3JlcGxhY2Vfbm9kZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fc3BsaXRfbm9kZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9faW5zZXJ0X25vZGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3NldF9ibWFwKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19wcmludF9hbGwoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2ZpeF9wYXJlbnRzKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19pbmZvKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19nb3RvX2Jsb2NrKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKKy8qIGh0cmVlLmMgKi8KK2V4dGVybiB2b2lkIGRvX2h0cmVlX2R1bXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2R4X2hhc2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2RpcnNlYXJjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworCisvKiBsb2dkdW1wLmMgKi8KK2V4dGVybiB2b2lkIGRvX2xvZ2R1bXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKworLyogbHNkZWwuYyAqLworZXh0ZXJuIHZvaWQgZG9fbHNkZWwoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKworLyogaWNoZWNrLmMgKi8KK2V4dGVybiB2b2lkIGRvX2ljaGVjayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworCisvKiBuY2hlY2suYyAqLworZXh0ZXJuIHZvaWQgZG9fbmNoZWNrKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKKy8qIHNldF9maWVsZHMuYyAqLworZXh0ZXJuIHZvaWQgZG9fc2V0X3N1cGVyKGludCBhcmdjLCBjaGFyICoqKTsKK2V4dGVybiB2b2lkIGRvX3NldF9pbm9kZShpbnQgYXJnYywgY2hhciAqKik7CitleHRlcm4gdm9pZCBkb19zZXRfYmxvY2tfZ3JvdXBfZGVzY3JpcHRvcihpbnQgYXJnYywgY2hhciAqKik7CisKKy8qIHVudXNlZC5jICovCitleHRlcm4gdm9pZCBkb19kdW1wX3VudXNlZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworCisvKiBkZWJ1Z2ZzLmMgKi8KK2V4dGVybiB2b2lkIGludGVybmFsX2R1bXBfaW5vZGUoRklMRSAqLCBjb25zdCBjaGFyICosIGV4dDJfaW5vX3QsCisJCQkJc3RydWN0IGV4dDJfaW5vZGUgKiwgaW50KTsKKworZXh0ZXJuIHZvaWQgZG9fZGlydHlfZmlsZXN5cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fb3Blbl9maWxlc3lzKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19jbG9zZV9maWxlc3lzKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19sY2QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2luaXRfZmlsZXN5cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fc2hvd19zdXBlcl9zdGF0cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fa2lsbF9maWxlKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19ybShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fbGluayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fdW5kZWwoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3VubGluayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZmluZF9mcmVlX2Jsb2NrKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19maW5kX2ZyZWVfaW5vZGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3N0YXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2R1bXBfZXh0ZW50cyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fYmxvY2tzKGludCBhcmdjLCBjaGFyICphcmd2W10pOworCitleHRlcm4gdm9pZCBkb19jaHJvb3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2NscmkoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2ZyZWVpKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19zZXRpKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb190ZXN0aShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZnJlZWIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3NldGIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3Rlc3RiKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19tb2RpZnlfaW5vZGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2xpc3RfZGlyKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19jaGFuZ2Vfd29ya2luZ19kaXIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX3ByaW50X3dvcmtpbmdfZGlyZWN0b3J5KGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb193cml0ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fbWtub2QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX21rZGlyKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19ybWRpcihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fc2hvd19kZWJ1Z2ZzX3BhcmFtcyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZXhwYW5kX2RpcihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZmVhdHVyZXMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2JtYXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2ltYXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2V4dGVybiB2b2lkIGRvX2lkdW1wKGludCBhcmdjLCBjaGFyICphcmd2W10pOworZXh0ZXJuIHZvaWQgZG9fc2V0X2N1cnJlbnRfdGltZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fc3VwcG9ydGVkX2ZlYXR1cmVzKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19wdW5jaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fZmFsbG9jYXRlKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19zeW1saW5rKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKK2V4dGVybiB2b2lkIGRvX2R1bXBfbW1wKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19zZXRfbW1wX3ZhbHVlKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKK2V4dGVybiB2b2lkIGRvX2ZyZWVmcmFnKGludCBhcmdjLCBjaGFyICoqYXJndik7CitleHRlcm4gdm9pZCBkb19maWxlZnJhZyhpbnQgYXJnYywgY2hhciAqYXJndltdKTsKKworLyogZG9fam91cm5hbC5jICovCisKK2V4dGVybiB2b2lkIGRvX2pvdXJuYWxfd3JpdGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CitleHRlcm4gdm9pZCBkb19qb3VybmFsX29wZW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CitleHRlcm4gdm9pZCBkb19qb3VybmFsX2Nsb3NlKGludCBhcmdjLCBjaGFyICphcmd2W10pOworZXh0ZXJuIHZvaWQgZG9fam91cm5hbF9ydW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CisKKy8qIHF1b3RhLmMgKi8KK2V4dGVybiB2b2lkIGRvX2xpc3RfcXVvdGEoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CitleHRlcm4gdm9pZCBkb19nZXRfcXVvdGEoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSk7CisKKy8qIHV0aWwuYyAqLworZXh0ZXJuIF9fczY0IHN0cmluZ190b190aW1lKGNvbnN0IGNoYXIgKmFyZyk7CitlcnJjb2RlX3QgcmVhZF9saXN0KGNoYXIgKnN0ciwgYmxrNjRfdCAqKmxpc3QsIHNpemVfdCAqbGVuKTsKKworLyogeGF0dHJzLmMgKi8KK3ZvaWQgZHVtcF9pbm9kZV9hdHRyaWJ1dGVzKEZJTEUgKm91dCwgZXh0Ml9pbm9fdCBpbm8pOwordm9pZCBkb19nZXRfeGF0dHIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fc2V0X3hhdHRyKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX3JtX3hhdHRyKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2xpc3RfeGF0dHIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKKworLyogemFwLmMgKi8KK2V4dGVybiB2b2lkIGRvX3phcF9ibG9jayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fYmxvY2tfZHVtcChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworZXh0ZXJuIHZvaWQgZG9fYnl0ZV9oZXhkdW1wKEZJTEUgKmZwLCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplKTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL2RvX2pvdXJuYWwuYyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2RvX2pvdXJuYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MGM0NzNjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvZG9fam91cm5hbC5jCkBAIC0wLDAgKzEsOTYxIEBACisvKgorICogZG9fam91cm5hbC5jIC0tLSBTY3JpYmJsZSBvbnRvIHRoZSBqb3VybmFsIQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBPcmFjbGUuICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImRlYnVnZnMuaCIKKyNpbmNsdWRlICJleHQyZnMva2VybmVsLWpiZC5oIgorI2luY2x1ZGUgImpvdXJuYWwuaCIKKworI3VuZGVmIERFQlVHCisKKyNpZmRlZiBERUJVRworIyBkZWZpbmUgZGJnX3ByaW50ZihmLCBhLi4uKSAgZG8ge3ByaW50ZigiSkZTIERFQlVHOiAiIGYsICMjIGEpOyBcCisJZmZsdXNoKHN0ZG91dCk7IFwKK30gd2hpbGUgKDApCisjZWxzZQorIyBkZWZpbmUgZGJnX3ByaW50ZihmLCBhLi4uKQorI2VuZGlmCisKKyNkZWZpbmUgSk9VUk5BTF9DSEVDS19UUkFOU19NQUdJQyh4KQlcCisJZG8geyBcCisJCWlmICgoeCktPm1hZ2ljICE9IEpfVFJBTlNfTUFHSUMpIFwKKwkJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7IFwKKwl9IHdoaWxlICgwKQorCisjZGVmaW5lIEpfVFJBTlNfTUFHSUMJCTB4RDE1RUE1RUQKKyNkZWZpbmUgSl9UUkFOU19PUEVOCQkxCisjZGVmaW5lIEpfVFJBTlNfQ09NTUlUVEVECTIKK3N0cnVjdCBqb3VybmFsX3RyYW5zYWN0aW9uX3MgeworCXVuc2lnbmVkIGludCBtYWdpYzsKKwlleHQyX2ZpbHN5cyBmczsKKwlqb3VybmFsX3QgKmpvdXJuYWw7CisJYmxrNjRfdCBibG9jazsKKwlibGs2NF90IHN0YXJ0LCBlbmQ7CisJdGlkX3QgdGlkOworCWludCBmbGFnczsKK307CisKK3R5cGVkZWYgc3RydWN0IGpvdXJuYWxfdHJhbnNhY3Rpb25fcyBqb3VybmFsX3RyYW5zYWN0aW9uX3Q7CisKK3N0YXRpYyBqb3VybmFsX3QgKmN1cnJlbnRfam91cm5hbCA9IE5VTEw7CisKK3N0YXRpYyB2b2lkIGpvdXJuYWxfZHVtcF90cmFucyhqb3VybmFsX3RyYW5zYWN0aW9uX3QgKnRyYW5zIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgICBjb25zdCBjaGFyICp0YWcgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWRiZ19wcmludGYoIlRSQU5TICVwKCVzKTogdGlkPSVkIHN0YXJ0PSVsbHUgYmxvY2s9JWxsdSBlbmQ9JWxsdSAiCisJCSAgICJmbGFncz0weCV4XG4iLCB0cmFucywgdGFnLCB0cmFucy0+dGlkLCB0cmFucy0+c3RhcnQsCisJCSAgIHRyYW5zLT5ibG9jaywgdHJhbnMtPmVuZCwgdHJhbnMtPmZsYWdzKTsKK30KKworc3RhdGljIGVycmNvZGVfdCBqb3VybmFsX2NvbW1pdF90cmFucyhqb3VybmFsX3RyYW5zYWN0aW9uX3QgKnRyYW5zKQoreworCXN0cnVjdCBidWZmZXJfaGVhZCAqYmgsICpjYmggPSBOVUxMOworCXN0cnVjdCBjb21taXRfaGVhZGVyICpjb21taXQ7CisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisJc3RydWN0IHRpbWV2YWwgdHY7CisjZW5kaWYKKwllcnJjb2RlX3QgZXJyOworCisJSk9VUk5BTF9DSEVDS19UUkFOU19NQUdJQyh0cmFucyk7CisKKwlpZiAoKHRyYW5zLT5mbGFncyAmIEpfVFJBTlNfQ09NTUlUVEVEKSB8fAorCSAgICAhKHRyYW5zLT5mbGFncyAmIEpfVFJBTlNfT1BFTikpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwliaCA9IGdldGJsayh0cmFucy0+am91cm5hbC0+al9kZXYsIDAsIHRyYW5zLT5qb3VybmFsLT5qX2Jsb2Nrc2l6ZSk7CisJaWYgKGJoID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisKKwkvKiB3cml0ZSB0aGUgZGVzY3JpcHRvciBibG9jayBoZWFkZXIgKi8KKwljb21taXQgPSAoc3RydWN0IGNvbW1pdF9oZWFkZXIgKiliaC0+Yl9kYXRhOworCWNvbW1pdC0+aF9tYWdpYyA9IGV4dDJmc19jcHVfdG9fYmUzMihKRlNfTUFHSUNfTlVNQkVSKTsKKwljb21taXQtPmhfYmxvY2t0eXBlID0gZXh0MmZzX2NwdV90b19iZTMyKEpGU19DT01NSVRfQkxPQ0spOworCWNvbW1pdC0+aF9zZXF1ZW5jZSA9IGV4dDJmc19jcHVfdG9fYmUzMih0cmFucy0+dGlkKTsKKwlpZiAoamZzX2hhc19mZWF0dXJlX2NoZWNrc3VtKHRyYW5zLT5qb3VybmFsKSkgeworCQlfX3UzMiBjc3VtX3YxID0gfjA7CisJCWJsazY0X3QgY2JsazsKKworCQljYmggPSBnZXRibGsodHJhbnMtPmpvdXJuYWwtPmpfZGV2LCAwLAorCQkJICAgICB0cmFucy0+am91cm5hbC0+al9ibG9ja3NpemUpOworCQlpZiAoY2JoID09IE5VTEwpIHsKKwkJCWVyciA9IEVOT01FTTsKKwkJCWdvdG8gZXJyb3I7CisJCX0KKworCQlmb3IgKGNibGsgPSB0cmFucy0+c3RhcnQ7IGNibGsgPCB0cmFucy0+YmxvY2s7IGNibGsrKykgeworCQkJZXJyID0gam91cm5hbF9ibWFwKHRyYW5zLT5qb3VybmFsLCBjYmxrLAorCQkJCQkgICAmY2JoLT5iX2Jsb2NrbnIpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIGVycm9yOworCQkJbWFya19idWZmZXJfdXB0b2RhdGUoY2JoLCAwKTsKKwkJCWxsX3J3X2Jsb2NrKFJFQUQsIDEsICZjYmgpOworCQkJZXJyID0gY2JoLT5iX2VycjsKKwkJCWlmIChlcnIpCisJCQkJZ290byBlcnJvcjsKKwkJCWNzdW1fdjEgPSBleHQyZnNfY3JjMzJfYmUoY3N1bV92MSwKKwkJCQkJKHVuc2lnbmVkIGNoYXIgY29uc3QgKiljYmgtPmJfZGF0YSwKKwkJCQkJY2JoLT5iX3NpemUpOworCQl9CisKKwkJY29tbWl0LT5oX2Noa3N1bV90eXBlID0gSkZTX0NSQzMyX0NIS1NVTTsKKwkJY29tbWl0LT5oX2Noa3N1bV9zaXplID0gSkZTX0NSQzMyX0NIS1NVTV9TSVpFOworCQljb21taXQtPmhfY2hrc3VtWzBdID0gZXh0MmZzX2NwdV90b19iZTMyKGNzdW1fdjEpOworCX0gZWxzZSB7CisJCWNvbW1pdC0+aF9jaGtzdW1fdHlwZSA9IDA7CisJCWNvbW1pdC0+aF9jaGtzdW1fc2l6ZSA9IDA7CisJCWNvbW1pdC0+aF9jaGtzdW1bMF0gPSAwOworCX0KKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKwlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKwljb21taXQtPmhfY29tbWl0X3NlYyA9IGV4dDJmc19jcHVfdG9fYmUzMih0di50dl9zZWMpOworCWNvbW1pdC0+aF9jb21taXRfbnNlYyA9IGV4dDJmc19jcHVfdG9fYmUzMih0di50dl91c2VjICogMTAwMCk7CisjZWxzZQorCWNvbW1pdC0+aF9jb21taXRfc2VjID0gMDsKKwljb21taXQtPmhfY29tbWl0X25zZWMgPSAwOworI2VuZGlmCisKKwkvKiBXcml0ZSBibG9jayAqLworCWpiZDJfY29tbWl0X2Jsb2NrX2NzdW1fc2V0KHRyYW5zLT5qb3VybmFsLCBiaCk7CisJZXJyID0gam91cm5hbF9ibWFwKHRyYW5zLT5qb3VybmFsLCB0cmFucy0+YmxvY2ssICZiaC0+Yl9ibG9ja25yKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworCisJZGJnX3ByaW50ZigiV3JpdGluZyBjb21taXQgYmxvY2sgYXQgJWxsdTolbGx1XG4iLCB0cmFucy0+YmxvY2ssCisJCSAgIGJoLT5iX2Jsb2NrbnIpOworCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKKwlsbF9yd19ibG9jayhXUklURSwgMSwgJmJoKTsKKwllcnIgPSBiaC0+Yl9lcnI7CisJaWYgKGVycikKKwkJZ290byBlcnJvcjsKKwl0cmFucy0+ZmxhZ3MgfD0gSl9UUkFOU19DT01NSVRURUQ7CisJdHJhbnMtPmZsYWdzICY9IH5KX1RSQU5TX09QRU47CisJdHJhbnMtPmJsb2NrKys7CisKKwlleHQyZnNfc2V0X2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeSh0cmFucy0+ZnMtPnN1cGVyKTsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eSh0cmFucy0+ZnMpOworZXJyb3I6CisJaWYgKGNiaCkKKwkJYnJlbHNlKGNiaCk7CisJYnJlbHNlKGJoKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgZXJyY29kZV90IGpvdXJuYWxfYWRkX3Jldm9rZV90b190cmFucyhqb3VybmFsX3RyYW5zYWN0aW9uX3QgKnRyYW5zLAorCQkJCQkgICAgIGJsazY0X3QgKnJldm9rZV9saXN0LAorCQkJCQkgICAgIHNpemVfdCByZXZva2VfbGVuKQoreworCWpvdXJuYWxfcmV2b2tlX2hlYWRlcl90ICpqcmI7CisJdm9pZCAqYnVmOworCXNpemVfdCBpLCBvZmZzZXQ7CisJYmxrNjRfdCBjdXJyX2JsazsKKwl1bnNpZ25lZCBpbnQgc3o7CisJdW5zaWduZWQgY3N1bV9zaXplID0gMDsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCWVycmNvZGVfdCBlcnI7CisKKwlKT1VSTkFMX0NIRUNLX1RSQU5TX01BR0lDKHRyYW5zKTsKKworCWlmICgodHJhbnMtPmZsYWdzICYgSl9UUkFOU19DT01NSVRURUQpIHx8CisJICAgICEodHJhbnMtPmZsYWdzICYgSl9UUkFOU19PUEVOKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmIChyZXZva2VfbGVuID09IDApCisJCXJldHVybiAwOworCisJLyogRG8gd2UgbmVlZCB0byBsZWF2ZSBzcGFjZSBhdCB0aGUgZW5kIGZvciBhIGNoZWNrc3VtPyAqLworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKHRyYW5zLT5qb3VybmFsKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsKTsKKworCWN1cnJfYmxrID0gdHJhbnMtPmJsb2NrOworCisJYmggPSBnZXRibGsodHJhbnMtPmpvdXJuYWwtPmpfZGV2LCBjdXJyX2JsaywKKwkJICAgIHRyYW5zLT5qb3VybmFsLT5qX2Jsb2Nrc2l6ZSk7CisJaWYgKGJoID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisJanJiID0gYnVmID0gYmgtPmJfZGF0YTsKKwlqcmItPnJfaGVhZGVyLmhfbWFnaWMgPSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX01BR0lDX05VTUJFUik7CisJanJiLT5yX2hlYWRlci5oX2Jsb2NrdHlwZSA9IGV4dDJmc19jcHVfdG9fYmUzMihKRlNfUkVWT0tFX0JMT0NLKTsKKwlqcmItPnJfaGVhZGVyLmhfc2VxdWVuY2UgPSBleHQyZnNfY3B1X3RvX2JlMzIodHJhbnMtPnRpZCk7CisJb2Zmc2V0ID0gc2l6ZW9mKCpqcmIpOworCisJaWYgKGpmc19oYXNfZmVhdHVyZV82NGJpdCh0cmFucy0+am91cm5hbCkpCisJCXN6ID0gODsKKwllbHNlCisJCXN6ID0gNDsKKworCWZvciAoaSA9IDA7IGkgPCByZXZva2VfbGVuOyBpKyspIHsKKwkJLyogQmxvY2sgZnVsbCwgd3JpdGUgdG8gam91cm5hbCAqLworCQlpZiAob2Zmc2V0ICsgc3ogPiB0cmFucy0+am91cm5hbC0+al9ibG9ja3NpemUgLSBjc3VtX3NpemUpIHsKKwkJCWpyYi0+cl9jb3VudCA9IGV4dDJmc19jcHVfdG9fYmUzMihvZmZzZXQpOworCQkJamJkMl9yZXZva2VfY3N1bV9zZXQodHJhbnMtPmpvdXJuYWwsIGJoKTsKKworCQkJZXJyID0gam91cm5hbF9ibWFwKHRyYW5zLT5qb3VybmFsLCBjdXJyX2JsaywKKwkJCQkJICAgJmJoLT5iX2Jsb2NrbnIpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIGVycm9yOworCQkJZGJnX3ByaW50ZigiV3JpdGluZyByZXZva2UgYmxvY2sgYXQgJWxsdTolbGx1XG4iLAorCQkJCSAgIGN1cnJfYmxrLCBiaC0+Yl9ibG9ja25yKTsKKwkJCW1hcmtfYnVmZmVyX2RpcnR5KGJoKTsKKwkJCWxsX3J3X2Jsb2NrKFdSSVRFLCAxLCAmYmgpOworCQkJZXJyID0gYmgtPmJfZXJyOworCQkJaWYgKGVycikKKwkJCQlnb3RvIGVycm9yOworCisJCQlvZmZzZXQgPSBzaXplb2YoKmpyYik7CisJCQljdXJyX2JsaysrOworCQl9CisKKwkJaWYgKHJldm9rZV9saXN0W2ldID49CisJCSAgICBleHQyZnNfYmxvY2tzX2NvdW50KHRyYW5zLT5qb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKSB7CisJCQllcnIgPSBFWFQyX0VUX0JBRF9CTE9DS19OVU07CisJCQlnb3RvIGVycm9yOworCQl9CisKKwkJaWYgKGpmc19oYXNfZmVhdHVyZV82NGJpdCh0cmFucy0+am91cm5hbCkpCisJCQkqKChfX3U2NCAqKSgmKChjaGFyICopYnVmKVtvZmZzZXRdKSkgPQorCQkJCWV4dDJmc19jcHVfdG9fYmU2NChyZXZva2VfbGlzdFtpXSk7CisJCWVsc2UKKwkJCSooKF9fdTMyICopKCYoKGNoYXIgKilidWYpW29mZnNldF0pKSA9CisJCQkJZXh0MmZzX2NwdV90b19iZTMyKHJldm9rZV9saXN0W2ldKTsKKwkJb2Zmc2V0ICs9IHN6OworCX0KKworCWlmIChvZmZzZXQgPiAwKSB7CisJCWpyYi0+cl9jb3VudCA9IGV4dDJmc19jcHVfdG9fYmUzMihvZmZzZXQpOworCQlqYmQyX3Jldm9rZV9jc3VtX3NldCh0cmFucy0+am91cm5hbCwgYmgpOworCisJCWVyciA9IGpvdXJuYWxfYm1hcCh0cmFucy0+am91cm5hbCwgY3Vycl9ibGssICZiaC0+Yl9ibG9ja25yKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyb3I7CisJCWRiZ19wcmludGYoIldyaXRpbmcgcmV2b2tlIGJsb2NrIGF0ICVsbHU6JWxsdVxuIiwKKwkJCSAgIGN1cnJfYmxrLCBiaC0+Yl9ibG9ja25yKTsKKwkJbWFya19idWZmZXJfZGlydHkoYmgpOworCQlsbF9yd19ibG9jayhXUklURSwgMSwgJmJoKTsKKwkJZXJyID0gYmgtPmJfZXJyOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJvcjsKKwkJY3Vycl9ibGsrKzsKKwl9CisKK2Vycm9yOgorCXRyYW5zLT5ibG9jayA9IGN1cnJfYmxrOworCWJyZWxzZShiaCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGVycmNvZGVfdCBqb3VybmFsX2FkZF9ibG9ja3NfdG9fdHJhbnMoam91cm5hbF90cmFuc2FjdGlvbl90ICp0cmFucywKKwkJCQkgICAgICBibGs2NF90ICpibG9ja19saXN0LCBzaXplX3QgYmxvY2tfbGVuLAorCQkJCSAgICAgIEZJTEUgKmZwKQoreworCWJsazY0X3QgY3Vycl9ibGssIGpkYl9ibGs7CisJc2l6ZV90IGksIGo7CisJaW50IGNzdW1fc2l6ZSA9IDA7CisJam91cm5hbF9oZWFkZXJfdCAqamRiOworCWpvdXJuYWxfYmxvY2tfdGFnX3QgKmpkYnQ7CisJaW50IHRhZ19ieXRlczsKKwl2b2lkICpidWYgPSBOVUxMLCAqamRiX2J1ZiA9IE5VTEw7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCA9IE5VTEwsICpkYXRhX2JoOworCWVycmNvZGVfdCBlcnI7CisKKwlKT1VSTkFMX0NIRUNLX1RSQU5TX01BR0lDKHRyYW5zKTsKKworCWlmICgodHJhbnMtPmZsYWdzICYgSl9UUkFOU19DT01NSVRURUQpIHx8CisJICAgICEodHJhbnMtPmZsYWdzICYgSl9UUkFOU19PUEVOKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmIChibG9ja19sZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKiBEbyB3ZSBuZWVkIHRvIGxlYXZlIHNwYWNlIGF0IHRoZSBlbmQgZm9yIGEgY2hlY2tzdW0/ICovCisJaWYgKGpvdXJuYWxfaGFzX2NzdW1fdjJvcjModHJhbnMtPmpvdXJuYWwpKQorCQljc3VtX3NpemUgPSBzaXplb2Yoc3RydWN0IGpvdXJuYWxfYmxvY2tfdGFpbCk7CisKKwljdXJyX2JsayA9IGpkYl9ibGsgPSB0cmFucy0+YmxvY2s7CisKKwlkYXRhX2JoID0gZ2V0YmxrKHRyYW5zLT5qb3VybmFsLT5qX2RldiwgY3Vycl9ibGssCisJCQkgdHJhbnMtPmpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwlpZiAoZGF0YV9iaCA9PSBOVUxMKQorCQlyZXR1cm4gRU5PTUVNOworCWJ1ZiA9IGRhdGFfYmgtPmJfZGF0YTsKKworCS8qIHdyaXRlIHRoZSBkZXNjcmlwdG9yIGJsb2NrIGhlYWRlciAqLworCWJoID0gZ2V0YmxrKHRyYW5zLT5qb3VybmFsLT5qX2RldiwgY3Vycl9ibGssCisJCSAgICB0cmFucy0+am91cm5hbC0+al9ibG9ja3NpemUpOworCWlmIChiaCA9PSBOVUxMKSB7CisJCWVyciA9IEVOT01FTTsKKwkJZ290byBlcnJvcjsKKwl9CisJamRiID0gamRiX2J1ZiA9IGJoLT5iX2RhdGE7CisJamRiLT5oX21hZ2ljID0gZXh0MmZzX2NwdV90b19iZTMyKEpGU19NQUdJQ19OVU1CRVIpOworCWpkYi0+aF9ibG9ja3R5cGUgPSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX0RFU0NSSVBUT1JfQkxPQ0spOworCWpkYi0+aF9zZXF1ZW5jZSA9IGV4dDJmc19jcHVfdG9fYmUzMih0cmFucy0+dGlkKTsKKwlqZGJ0ID0gKGpvdXJuYWxfYmxvY2tfdGFnX3QgKikoamRiICsgMSk7CisKKwljdXJyX2JsaysrOworCWZvciAoaSA9IDA7IGkgPCBibG9ja19sZW47IGkrKykgeworCQlqID0gZnJlYWQoZGF0YV9iaC0+Yl9kYXRhLCB0cmFucy0+am91cm5hbC0+al9ibG9ja3NpemUsIDEsIGZwKTsKKwkJaWYgKGogIT0gMSkgeworCQkJZXJyID0gZXJybm87CisJCQlnb3RvIGVycm9yOworCQl9CisKKwkJdGFnX2J5dGVzID0gam91cm5hbF90YWdfYnl0ZXModHJhbnMtPmpvdXJuYWwpOworCisJCS8qIE5vIHNwYWNlIGxlZnQgaW4gZGVzY3JpcHRvciBibG9jaywgd3JpdGUgaXQgb3V0ICovCisJCWlmICgoY2hhciAqKWpkYnQgKyB0YWdfYnl0ZXMgPgorCQkgICAgKGNoYXIgKilqZGJfYnVmICsgdHJhbnMtPmpvdXJuYWwtPmpfYmxvY2tzaXplIC0gY3N1bV9zaXplKSB7CisJCQlqYmQyX2Rlc2NyX2Jsb2NrX2NzdW1fc2V0KHRyYW5zLT5qb3VybmFsLCBiaCk7CisJCQllcnIgPSBqb3VybmFsX2JtYXAodHJhbnMtPmpvdXJuYWwsIGpkYl9ibGssCisJCQkJCSAgICZiaC0+Yl9ibG9ja25yKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBlcnJvcjsKKwkJCWRiZ19wcmludGYoIldyaXRpbmcgZGVzY3JpcHRvciBibG9jayBhdCAlbGx1OiVsbHVcbiIsCisJCQkJICAgamRiX2JsaywgYmgtPmJfYmxvY2tucik7CisJCQltYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CisJCQlsbF9yd19ibG9jayhXUklURSwgMSwgJmJoKTsKKwkJCWVyciA9IGJoLT5iX2VycjsKKwkJCWlmIChlcnIpCisJCQkJZ290byBlcnJvcjsKKworCQkJamRidCA9IChqb3VybmFsX2Jsb2NrX3RhZ190ICopKGpkYiArIDEpOworCQkJamRiX2JsayA9IGN1cnJfYmxrOworCQkJY3Vycl9ibGsrKzsKKwkJfQorCisJCWlmIChibG9ja19saXN0W2ldID49CisJCSAgICBleHQyZnNfYmxvY2tzX2NvdW50KHRyYW5zLT5qb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKSB7CisJCQllcnIgPSBFWFQyX0VUX0JBRF9CTE9DS19OVU07CisJCQlnb3RvIGVycm9yOworCQl9CisKKwkJLyogRmlsbCBvdXQgdGhlIGJsb2NrIHRhZyAqLworCQlqZGJ0LT50X2Jsb2NrbnIgPSBleHQyZnNfY3B1X3RvX2JlMzIoYmxvY2tfbGlzdFtpXSAmIDB4RkZGRkZGRkYpOworCQlqZGJ0LT50X2ZsYWdzID0gMDsKKwkJaWYgKGpkYnQgIT0gKGpvdXJuYWxfYmxvY2tfdGFnX3QgKikoamRiICsgMSkpCisJCQlqZGJ0LT50X2ZsYWdzIHw9IGV4dDJmc19jcHVfdG9fYmUxNihKRlNfRkxBR19TQU1FX1VVSUQpOworCQllbHNlIHsKKwkJCW1lbWNweShqZGJ0ICsgdGFnX2J5dGVzLAorCQkJICAgICAgIHRyYW5zLT5qb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfdXVpZCwKKwkJCSAgICAgICBzaXplb2YodHJhbnMtPmpvdXJuYWwtPmpfc3VwZXJibG9jay0+c191dWlkKSk7CisJCQl0YWdfYnl0ZXMgKz0gMTY7CisJCX0KKwkJaWYgKGkgPT0gYmxvY2tfbGVuIC0gMSkKKwkJCWpkYnQtPnRfZmxhZ3MgfD0gZXh0MmZzX2NwdV90b19iZTE2KEpGU19GTEFHX0xBU1RfVEFHKTsKKwkJaWYgKCooKF9fdTMyICopYnVmKSA9PSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX01BR0lDX05VTUJFUikpIHsKKwkJCSooKF9fdTMyICopYnVmKSA9IDA7CisJCQlqZGJ0LT50X2ZsYWdzIHw9IGV4dDJmc19jcHVfdG9fYmUxNihKRlNfRkxBR19FU0NBUEUpOworCQl9CisJCWlmIChqZnNfaGFzX2ZlYXR1cmVfNjRiaXQodHJhbnMtPmpvdXJuYWwpKQorCQkJamRidC0+dF9ibG9ja25yX2hpZ2ggPSBleHQyZnNfY3B1X3RvX2JlMzIoYmxvY2tfbGlzdFtpXSA+PiAzMik7CisJCWpiZDJfYmxvY2tfdGFnX2NzdW1fc2V0KHRyYW5zLT5qb3VybmFsLCBqZGJ0LCBkYXRhX2JoLAorCQkJCQl0cmFucy0+dGlkKTsKKworCQkvKiBXcml0ZSB0aGUgZGF0YSBibG9jayAqLworCQllcnIgPSBqb3VybmFsX2JtYXAodHJhbnMtPmpvdXJuYWwsIGN1cnJfYmxrLAorCQkJCSAgICZkYXRhX2JoLT5iX2Jsb2NrbnIpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJvcjsKKwkJZGJnX3ByaW50ZigiV3JpdGluZyBkYXRhIGJsb2NrICVsbHUgYXQgJWxsdTolbGx1IHRhZyAlZFxuIiwKKwkJCSAgIGJsb2NrX2xpc3RbaV0sIGN1cnJfYmxrLCBkYXRhX2JoLT5iX2Jsb2NrbnIsCisJCQkgICB0YWdfYnl0ZXMpOworCQltYXJrX2J1ZmZlcl9kaXJ0eShkYXRhX2JoKTsKKwkJbGxfcndfYmxvY2soV1JJVEUsIDEsICZkYXRhX2JoKTsKKwkJZXJyID0gZGF0YV9iaC0+Yl9lcnI7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycm9yOworCisJCWN1cnJfYmxrKys7CisJCWpkYnQgPSAoam91cm5hbF9ibG9ja190YWdfdCAqKSgoKGNoYXIgKilqZGJ0KSArIHRhZ19ieXRlcyk7CisJfQorCisJLyogV3JpdGUgb3V0IHRoZSBsYXN0IGRlc2NyaXB0b3IgYmxvY2sgKi8KKwlpZiAoamRidCAhPSAoam91cm5hbF9ibG9ja190YWdfdCAqKShqZGIgKyAxKSkgeworCQlqYmQyX2Rlc2NyX2Jsb2NrX2NzdW1fc2V0KHRyYW5zLT5qb3VybmFsLCBiaCk7CisJCWVyciA9IGpvdXJuYWxfYm1hcCh0cmFucy0+am91cm5hbCwgamRiX2JsaywgJmJoLT5iX2Jsb2NrbnIpOworCQlpZiAoZXJyKQorCQkJZ290byBlcnJvcjsKKwkJZGJnX3ByaW50ZigiV3JpdGluZyBkZXNjcmlwdG9yIGJsb2NrIGF0ICVsbHU6JWxsdVxuIiwKKwkJCSAgIGpkYl9ibGssIGJoLT5iX2Jsb2NrbnIpOworCQltYXJrX2J1ZmZlcl9kaXJ0eShiaCk7CisJCWxsX3J3X2Jsb2NrKFdSSVRFLCAxLCAmYmgpOworCQllcnIgPSBiaC0+Yl9lcnI7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycm9yOworCX0KKworZXJyb3I6CisJdHJhbnMtPmJsb2NrID0gY3Vycl9ibGs7CisJaWYgKGJoKQorCQlicmVsc2UoYmgpOworCWJyZWxzZShkYXRhX2JoKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgYmxrNjRfdCBqb3VybmFsX2d1ZXNzX2Jsb2Nrcyhqb3VybmFsX3QgKmpvdXJuYWwsIGJsazY0X3QgZGF0YV9ibG9ja3MsCisJCQkJICAgIGJsazY0X3QgcmV2b2tlX2Jsb2NrcykKK3sKKwlibGs2NF90IHJldCA9IDE7CisJdW5zaWduZWQgaW50IGJzLCBzejsKKworCS8qIEVzdGltYXRlICMgb2YgcmV2b2tlIGJsb2NrcyAqLworCWJzID0gam91cm5hbC0+al9ibG9ja3NpemU7CisJaWYgKGpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoam91cm5hbCkpCisJCWJzIC09IHNpemVvZihzdHJ1Y3Qgam91cm5hbF9yZXZva2VfdGFpbCk7CisJc3ogPSBqZnNfaGFzX2ZlYXR1cmVfNjRiaXQoam91cm5hbCkgPyBzaXplb2YoX191NjQpIDogc2l6ZW9mKF9fdTMyKTsKKwlyZXQgKz0gcmV2b2tlX2Jsb2NrcyAqIHN6IC8gYnM7CisKKwkvKiBFc3RpbWF0ZSAjIG9mIGRhdGEgYmxvY2tzICovCisJYnMgPSBqb3VybmFsLT5qX2Jsb2Nrc2l6ZSAtIDE2OworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWwpKQorCQlicyAtPSBzaXplb2Yoc3RydWN0IGpvdXJuYWxfYmxvY2tfdGFpbCk7CisJc3ogPSBqb3VybmFsX3RhZ19ieXRlcyhqb3VybmFsKTsKKwlyZXQgKz0gZGF0YV9ibG9ja3MgKiBzeiAvIGJzOworCisJcmV0ICs9IGRhdGFfYmxvY2tzOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGVycmNvZGVfdCBqb3VybmFsX29wZW5fdHJhbnMoam91cm5hbF90ICpqb3VybmFsLAorCQkJCSAgICBqb3VybmFsX3RyYW5zYWN0aW9uX3QgKnRyYW5zLAorCQkJCSAgICBibGs2NF90IGJsb2NrcykKK3sKKwl0cmFucy0+ZnMgPSBqb3VybmFsLT5qX2ZzX2Rldi0+a19mczsKKwl0cmFucy0+am91cm5hbCA9IGpvdXJuYWw7CisJdHJhbnMtPmZsYWdzID0gSl9UUkFOU19PUEVOOworCisJaWYgKGpvdXJuYWwtPmpfdGFpbCA9PSAwKSB7CisJCS8qIENsZWFuIGpvdXJuYWwsIHN0YXJ0IGF0IHRoZSB0YWlsICovCisJCXRyYW5zLT50aWQgPSBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2U7CisJCXRyYW5zLT5zdGFydCA9IGpvdXJuYWwtPmpfZmlyc3Q7CisJfSBlbHNlIHsKKwkJLyogUHV0IG5ldyB0cmFuc2FjdGlvbiBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCAqLworCQl0cmFucy0+dGlkID0gam91cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZTsKKwkJdHJhbnMtPnN0YXJ0ID0gam91cm5hbC0+al9oZWFkOworCX0KKworCXRyYW5zLT5ibG9jayA9IHRyYW5zLT5zdGFydDsKKwlpZiAodHJhbnMtPnN0YXJ0ICsgYmxvY2tzID4gam91cm5hbC0+al9sYXN0KQorCQlyZXR1cm4gRU5PU1BDOworCXRyYW5zLT5lbmQgPSB0cmFucy0+YmxvY2sgKyBibG9ja3M7CisJam91cm5hbF9kdW1wX3RyYW5zKHRyYW5zLCAibmV3IHRyYW5zYWN0aW9uIik7CisKKwl0cmFucy0+bWFnaWMgPSBKX1RSQU5TX01BR0lDOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGpvdXJuYWxfY2xvc2VfdHJhbnMoam91cm5hbF90cmFuc2FjdGlvbl90ICp0cmFucykKK3sKKwlqb3VybmFsX3QgKmpvdXJuYWw7CisKKwlKT1VSTkFMX0NIRUNLX1RSQU5TX01BR0lDKHRyYW5zKTsKKworCWlmICghKHRyYW5zLT5mbGFncyAmIEpfVFJBTlNfQ09NTUlUVEVEKSkKKwkJcmV0dXJuIDA7CisKKwlqb3VybmFsID0gdHJhbnMtPmpvdXJuYWw7CisJaWYgKGpvdXJuYWwtPmpfdGFpbCA9PSAwKSB7CisJCS8qIFVwZGF0ZSB0aGUgdGFpbCAqLworCQlqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UgPSB0cmFucy0+dGlkOworCQlqb3VybmFsLT5qX3RhaWwgPSB0cmFucy0+c3RhcnQ7CisJCWpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19zdGFydCA9IGV4dDJmc19jcHVfdG9fYmUzMih0cmFucy0+c3RhcnQpOworCX0KKworCS8qIFVwZGF0ZSB0aGUgaGVhZCAqLworCWpvdXJuYWwtPmpfaGVhZCA9IHRyYW5zLT5lbmQgKyAxOworCWpvdXJuYWwtPmpfdHJhbnNhY3Rpb25fc2VxdWVuY2UgPSB0cmFucy0+dGlkICsgMTsKKworCXRyYW5zLT5tYWdpYyA9IDA7CisKKwkvKiBNYXJrIG91cnNlbHZlcyBhcyBuZWVkaW5nIHJlY292ZXJ5ICovCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeSh0cmFucy0+ZnMtPnN1cGVyKSkgeworCQlleHQyZnNfc2V0X2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeSh0cmFucy0+ZnMtPnN1cGVyKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkodHJhbnMtPmZzKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBKT1VSTkFMX1dSSVRFX05PX0NPTU1JVAkJMQorc3RhdGljIGVycmNvZGVfdCBqb3VybmFsX3dyaXRlKGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCSAgICAgICBpbnQgZmxhZ3MsIGJsazY0X3QgKmJsb2NrX2xpc3QsCisJCQkgICAgICAgc2l6ZV90IGJsb2NrX2xlbiwgYmxrNjRfdCAqcmV2b2tlX2xpc3QsCisJCQkgICAgICAgc2l6ZV90IHJldm9rZV9sZW4sIEZJTEUgKmZwKQoreworCWJsazY0X3QgYmxvY2tzOworCWpvdXJuYWxfdHJhbnNhY3Rpb25fdCB0cmFuczsKKwllcnJjb2RlX3QgZXJyOworCisJaWYgKHJldm9rZV9sZW4gPiAwKSB7CisJCWpmc19zZXRfZmVhdHVyZV9yZXZva2Uoam91cm5hbCk7CisJCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwl9CisKKwlibG9ja3MgPSBqb3VybmFsX2d1ZXNzX2Jsb2Nrcyhqb3VybmFsLCBibG9ja19sZW4sIHJldm9rZV9sZW4pOworCWVyciA9IGpvdXJuYWxfb3Blbl90cmFucyhqb3VybmFsLCAmdHJhbnMsIGJsb2Nrcyk7CisJaWYgKGVycikKKwkJZ290byBlcnJvcjsKKworCWVyciA9IGpvdXJuYWxfYWRkX2Jsb2Nrc190b190cmFucygmdHJhbnMsIGJsb2NrX2xpc3QsIGJsb2NrX2xlbiwgZnApOworCWlmIChlcnIpCisJCWdvdG8gZXJyb3I7CisKKwllcnIgPSBqb3VybmFsX2FkZF9yZXZva2VfdG9fdHJhbnMoJnRyYW5zLCByZXZva2VfbGlzdCwgcmV2b2tlX2xlbik7CisJaWYgKGVycikKKwkJZ290byBlcnJvcjsKKworCWlmICghKGZsYWdzICYgSk9VUk5BTF9XUklURV9OT19DT01NSVQpKSB7CisJCWVyciA9IGpvdXJuYWxfY29tbWl0X3RyYW5zKCZ0cmFucyk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycm9yOworCX0KKworCWVyciA9IGpvdXJuYWxfY2xvc2VfdHJhbnMoJnRyYW5zKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVycm9yOworZXJyb3I6CisJcmV0dXJuIGVycjsKK30KKwordm9pZCBkb19qb3VybmFsX3dyaXRlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJYmxrNjRfdCAqYmxpc3QgPSBOVUxMLCAqcmxpc3QgPSBOVUxMOworCXNpemVfdCBibiA9IDAsIHJuID0gMDsKKwlGSUxFICpmcCA9IE5VTEw7CisJaW50IG9wdDsKKwlpbnQgZmxhZ3MgPSAwOworCWVycmNvZGVfdCBlcnI7CisKKwlpZiAoY3VycmVudF9qb3VybmFsID09IE5VTEwpIHsKKwkJcHJpbnRmKCJKb3VybmFsIG5vdCBvcGVuLlxuIik7CisJCXJldHVybjsKKwl9CisKKwlyZXNldF9nZXRvcHQoKTsKKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLCBhcmd2LCAiYjpyOmMiKSkgIT0gLTEpIHsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAnYic6CisJCQllcnIgPSByZWFkX2xpc3Qob3B0YXJnLCAmYmxpc3QsICZibik7CisJCQlpZiAoZXJyKQorCQkJCWNvbV9lcnIoYXJndlswXSwgZXJyLAorCQkJCQkid2hpbGUgcmVhZGluZyBibG9jayBsaXN0Iik7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQllcnIgPSByZWFkX2xpc3Qob3B0YXJnLCAmcmxpc3QsICZybik7CisJCQlpZiAoZXJyKQorCQkJCWNvbV9lcnIoYXJndlswXSwgZXJyLAorCQkJCQkid2hpbGUgcmVhZGluZyByZXZva2UgbGlzdCIpOworCQkJYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkJZmxhZ3MgfD0gSk9VUk5BTF9XUklURV9OT19DT01NSVQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ZigiJXMgWy1iIGJsb2Nrc10gWy1yIHJldm9rZV0gWy1jXSBmaWxlXG4iLAorCQkJICAgICAgIGFyZ3ZbMF0pOworCQkJcHJpbnRmKCItYjogV3JpdGUgdGhlc2UgYmxvY2tzIGludG8gdHJhbnNhY3Rpb24uXG4iKTsKKwkJCXByaW50ZigiLWM6IERvIG5vdCBjb21taXQgdHJhbnNhY3Rpb24uXG4iKTsKKwkJCXByaW50ZigiLXI6IFJldm9rZSB0aGVzZSBibG9ja3MgZnJvbSB0cmFuc2FjdGlvbi5cbiIpOworCisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCWlmIChibiA+IDAgJiYgb3B0aW5kICE9IGFyZ2MgLSAxKSB7CisJCXByaW50ZigiTmVlZCBhIGZpbGUgdG8gcmVhZCBibG9ja3MgZnJvbS5cbiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKGJuID4gMCkgeworCQlmcCA9IGZvcGVuKGFyZ3Zbb3B0aW5kXSwgInIiKTsKKwkJaWYgKGZwID09IE5VTEwpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgZXJybm8sCisJCQkJIndoaWxlIG9wZW5pbmcgam91cm5hbCBkYXRhIGZpbGUiKTsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJZXJyID0gam91cm5hbF93cml0ZShjdXJyZW50X2pvdXJuYWwsIGZsYWdzLCBibGlzdCwgYm4sCisJCQkgICAgcmxpc3QsIHJuLCBmcCk7CisJaWYgKGVycikKKwkJY29tX2Vycigiam91cm5hbF93cml0ZSIsIGVyciwgIndoaWxlIHdyaXRpbmcgam91cm5hbCIpOworCisJaWYgKGZwKQorCQlmY2xvc2UoZnApOworb3V0OgorCWlmIChibGlzdCkKKwkJZnJlZShibGlzdCk7CisJaWYgKHJsaXN0KQorCQlmcmVlKHJsaXN0KTsKK30KKworLyogTWFrZSBzdXJlIHdlIHdyYXAgYXJvdW5kIHRoZSBsb2cgY29ycmVjdGx5ISAqLworI2RlZmluZSB3cmFwKGpvdXJuYWwsIHZhcikJCQkJCQlcCitkbyB7CQkJCQkJCQkJXAorCWlmICh2YXIgPj0gKGpvdXJuYWwpLT5qX2xhc3QpCQkJCQlcCisJCXZhciAtPSAoKGpvdXJuYWwpLT5qX2xhc3QgLSAoam91cm5hbCktPmpfZmlyc3QpOwlcCit9IHdoaWxlICgwKQorCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiBpbi11c2UgdGFncyBpbiBhIGpvdXJuYWwgZGVzY3JpcHRvciBibG9jay4KKyAqLworCitzdGF0aWMgaW50IGNvdW50X3RhZ3Moam91cm5hbF90ICpqb3VybmFsLCBjaGFyICpidWYpCit7CisJY2hhcgkJCSp0YWdwOworCWpvdXJuYWxfYmxvY2tfdGFnX3QJKnRhZzsKKwlpbnQJCQluciA9IDAsIHNpemUgPSBqb3VybmFsLT5qX2Jsb2Nrc2l6ZTsKKwlpbnQJCQl0YWdfYnl0ZXMgPSBqb3VybmFsX3RhZ19ieXRlcyhqb3VybmFsKTsKKworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWwpKQorCQlzaXplIC09IHNpemVvZihzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsKTsKKworCXRhZ3AgPSBidWYgKyBzaXplb2Yoam91cm5hbF9oZWFkZXJfdCk7CisKKwl3aGlsZSAoKHRhZ3AgLSBidWYgKyB0YWdfYnl0ZXMpIDw9IHNpemUpIHsKKwkJdGFnID0gKGpvdXJuYWxfYmxvY2tfdGFnX3QgKikgdGFncDsKKworCQlucisrOworCQl0YWdwICs9IHRhZ19ieXRlczsKKwkJaWYgKCEodGFnLT50X2ZsYWdzICYgZXh0MmZzX2NwdV90b19iZTE2KEpGU19GTEFHX1NBTUVfVVVJRCkpKQorCQkJdGFncCArPSAxNjsKKworCQlpZiAodGFnLT50X2ZsYWdzICYgZXh0MmZzX2NwdV90b19iZTE2KEpGU19GTEFHX0xBU1RfVEFHKSkKKwkJCWJyZWFrOworCX0KKworCXJldHVybiBucjsKK30KKworc3RhdGljIGVycmNvZGVfdCBqb3VybmFsX2ZpbmRfaGVhZChqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJdW5zaWduZWQgaW50CQluZXh0X2NvbW1pdF9JRDsKKwlibGs2NF90CQkJbmV4dF9sb2dfYmxvY2ssIGhlYWRfYmxvY2s7CisJaW50CQkJZXJyOworCWpvdXJuYWxfc3VwZXJibG9ja190CSpzYjsKKwlqb3VybmFsX2hlYWRlcl90CSp0bXA7CisJc3RydWN0IGJ1ZmZlcl9oZWFkCSpiaDsKKwl1bnNpZ25lZCBpbnQJCXNlcXVlbmNlOworCWludAkJCWJsb2NrdHlwZTsKKworCS8qCisJICogRmlyc3QgdGhpbmcgaXMgdG8gZXN0YWJsaXNoIHdoYXQgd2UgZXhwZWN0IHRvIGZpbmQgaW4gdGhlIGxvZworCSAqIChpbiB0ZXJtcyBvZiB0cmFuc2FjdGlvbiBJRHMpLCBhbmQgd2hlcmUgKGluIHRlcm1zIG9mIGxvZworCSAqIGJsb2NrIG9mZnNldHMpOiBxdWVyeSB0aGUgc3VwZXJibG9jay4KKwkgKi8KKworCXNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOworCW5leHRfY29tbWl0X0lEID0gZXh0MmZzX2JlMzJfdG9fY3B1KHNiLT5zX3NlcXVlbmNlKTsKKwluZXh0X2xvZ19ibG9jayA9IGV4dDJmc19iZTMyX3RvX2NwdShzYi0+c19zdGFydCk7CisJaGVhZF9ibG9jayA9IG5leHRfbG9nX2Jsb2NrOworCisJaWYgKG5leHRfbG9nX2Jsb2NrID09IDApCisJCXJldHVybiAwOworCisJYmggPSBnZXRibGsoam91cm5hbC0+al9kZXYsIDAsIGpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwlpZiAoYmggPT0gTlVMTCkKKwkJcmV0dXJuIEVOT01FTTsKKworCS8qCisJICogTm93IHdlIHdhbGsgdGhyb3VnaCB0aGUgbG9nLCB0cmFuc2FjdGlvbiBieSB0cmFuc2FjdGlvbiwKKwkgKiBtYWtpbmcgc3VyZSB0aGF0IGVhY2ggdHJhbnNhY3Rpb24gaGFzIGEgY29tbWl0IGJsb2NrIGluIHRoZQorCSAqIGV4cGVjdGVkIHBsYWNlLiAgRWFjaCBjb21wbGV0ZSB0cmFuc2FjdGlvbiBnZXRzIHJlcGxheWVkIGJhY2sKKwkgKiBpbnRvIHRoZSBtYWluIGZpbGVzeXN0ZW0uCisJICovCisJd2hpbGUgKDEpIHsKKwkJZGJnX3ByaW50ZigiU2Nhbm5pbmcgZm9yIHNlcXVlbmNlIElEICV1IGF0ICVsdS8lbHVcbiIsCisJCQkgIG5leHRfY29tbWl0X0lELCAodW5zaWduZWQgbG9uZyluZXh0X2xvZ19ibG9jaywKKwkJCSAgam91cm5hbC0+al9sYXN0KTsKKworCQkvKiBTa2lwIG92ZXIgZWFjaCBjaHVuayBvZiB0aGUgdHJhbnNhY3Rpb24gbG9va2luZworCQkgKiBlaXRoZXIgdGhlIG5leHQgZGVzY3JpcHRvciBibG9jayBvciB0aGUgZmluYWwgY29tbWl0CisJCSAqIHJlY29yZC4gKi8KKwkJZXJyID0gam91cm5hbF9ibWFwKGpvdXJuYWwsIG5leHRfbG9nX2Jsb2NrLCAmYmgtPmJfYmxvY2tucik7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycjsKKwkJbWFya19idWZmZXJfdXB0b2RhdGUoYmgsIDApOworCQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgpOworCQllcnIgPSBiaC0+Yl9lcnI7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycjsKKworCQluZXh0X2xvZ19ibG9jaysrOworCQl3cmFwKGpvdXJuYWwsIG5leHRfbG9nX2Jsb2NrKTsKKworCQkvKiBXaGF0IGtpbmQgb2YgYnVmZmVyIGlzIGl0PworCQkgKgorCQkgKiBJZiBpdCBpcyBhIGRlc2NyaXB0b3IgYmxvY2ssIGNoZWNrIHRoYXQgaXQgaGFzIHRoZQorCQkgKiBleHBlY3RlZCBzZXF1ZW5jZSBudW1iZXIuICBPdGhlcndpc2UsIHdlJ3JlIGFsbCBkb25lCisJCSAqIGhlcmUuICovCisKKwkJdG1wID0gKGpvdXJuYWxfaGVhZGVyX3QgKiliaC0+Yl9kYXRhOworCisJCWlmICh0bXAtPmhfbWFnaWMgIT0gZXh0MmZzX2NwdV90b19iZTMyKEpGU19NQUdJQ19OVU1CRVIpKSB7CisJCQlkYmdfcHJpbnRmKCJKQkQyOiB3cm9uZyBtYWdpYyAweCV4XG4iLCB0bXAtPmhfbWFnaWMpOworCQkJZ290byBlcnI7CisJCX0KKworCQlibG9ja3R5cGUgPSBleHQyZnNfYmUzMl90b19jcHUodG1wLT5oX2Jsb2NrdHlwZSk7CisJCXNlcXVlbmNlID0gZXh0MmZzX2JlMzJfdG9fY3B1KHRtcC0+aF9zZXF1ZW5jZSk7CisJCWRiZ19wcmludGYoIkZvdW5kIG1hZ2ljICVkLCBzZXF1ZW5jZSAlZFxuIiwKKwkJCSAgYmxvY2t0eXBlLCBzZXF1ZW5jZSk7CisKKwkJaWYgKHNlcXVlbmNlICE9IG5leHRfY29tbWl0X0lEKSB7CisJCQlkYmdfcHJpbnRmKCJKQkQyOiBXcm9uZyBzZXF1ZW5jZSAlZCAod2FudGVkICVkKVxuIiwKKwkJCQkgICBzZXF1ZW5jZSwgbmV4dF9jb21taXRfSUQpOworCQkJZ290byBlcnI7CisJCX0KKworCQkvKiBPSywgd2UgaGF2ZSBhIHZhbGlkIGRlc2NyaXB0b3IgYmxvY2sgd2hpY2ggbWF0Y2hlcworCQkgKiBhbGwgb2YgdGhlIHNlcXVlbmNlIG51bWJlciBjaGVja3MuICBXaGF0IGFyZSB3ZSBnb2luZworCQkgKiB0byBkbyB3aXRoIGl0PyAgVGhhdCBkZXBlbmRzIG9uIHRoZSBwYXNzLi4uICovCisKKwkJc3dpdGNoIChibG9ja3R5cGUpIHsKKwkJY2FzZSBKRlNfREVTQ1JJUFRPUl9CTE9DSzoKKwkJCW5leHRfbG9nX2Jsb2NrICs9IGNvdW50X3RhZ3Moam91cm5hbCwgYmgtPmJfZGF0YSk7CisJCQl3cmFwKGpvdXJuYWwsIG5leHRfbG9nX2Jsb2NrKTsKKwkJCWNvbnRpbnVlOworCisJCWNhc2UgSkZTX0NPTU1JVF9CTE9DSzoKKwkJCWhlYWRfYmxvY2sgPSBuZXh0X2xvZ19ibG9jazsKKwkJCW5leHRfY29tbWl0X0lEKys7CisJCQljb250aW51ZTsKKworCQljYXNlIEpGU19SRVZPS0VfQkxPQ0s6CisJCQljb250aW51ZTsKKworCQlkZWZhdWx0OgorCQkJZGJnX3ByaW50ZigiVW5yZWNvZ25pc2VkIG1hZ2ljICVkLCBlbmQgb2Ygc2Nhbi5cbiIsCisJCQkJICBibG9ja3R5cGUpOworCQkJZXJyID0gLUVJTlZBTDsKKwkJCWdvdG8gZXJyOworCQl9CisJfQorCitlcnI6CisJaWYgKGVyciA9PSAwKSB7CisJCWRiZ19wcmludGYoImhlYWQgc2VxPSVkIGJsaz0lbGx1XG4iLCBuZXh0X2NvbW1pdF9JRCwKKwkJCSAgIGhlYWRfYmxvY2spOworCQlqb3VybmFsLT5qX3RyYW5zYWN0aW9uX3NlcXVlbmNlID0gbmV4dF9jb21taXRfSUQ7CisJCWpvdXJuYWwtPmpfaGVhZCA9IGhlYWRfYmxvY2s7CisJfQorCWJyZWxzZShiaCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2pvdXJuYWxfY3N1bShqb3VybmFsX3QgKmpvdXJuYWwsIGludCB2ZXIpCit7CisJam91cm5hbF9zdXBlcmJsb2NrX3QgKmpzYjsKKworCWlmIChqb3VybmFsLT5qX2Zvcm1hdF92ZXJzaW9uIDwgMikKKwkJcmV0dXJuOworCisJaWYgKGpvdXJuYWwtPmpfdGFpbCAhPSAwIHx8CisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KAorCQkJCQlqb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKSB7CisJCXByaW50ZigiSm91cm5hbCBuZWVkcyByZWNvdmVyeSwgd2lsbCBub3QgYWRkIGNzdW1zLlxuIik7CisJCXJldHVybjsKKwl9CisKKwkvKiBtZXRhZGF0YV9jc3VtIGltcGxpZXMgam91cm5hbCBjc3VtIHYzICovCisJanNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShqb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKSB7CisJCXByaW50ZigiU2V0dGluZyBjc3VtIHYlZFxuIiwgdmVyKTsKKwkJc3dpdGNoICh2ZXIpIHsKKwkJY2FzZSAyOgorCQkJamZzX2NsZWFyX2ZlYXR1cmVfY3N1bTMoam91cm5hbCk7CisJCQlqZnNfc2V0X2ZlYXR1cmVfY3N1bTIoam91cm5hbCk7CisJCQlqZnNfY2xlYXJfZmVhdHVyZV9jaGVja3N1bShqb3VybmFsKTsKKwkJCWJyZWFrOworCQljYXNlIDM6CisJCQlqZnNfc2V0X2ZlYXR1cmVfY3N1bTMoam91cm5hbCk7CisJCQlqZnNfY2xlYXJfZmVhdHVyZV9jc3VtMihqb3VybmFsKTsKKwkJCWpmc19jbGVhcl9mZWF0dXJlX2NoZWNrc3VtKGpvdXJuYWwpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGYoIlVua25vd24gY2hlY2tzdW0gdiVkXG4iLCB2ZXIpOworCQkJYnJlYWs7CisJCX0KKwkJam91cm5hbC0+al9zdXBlcmJsb2NrLT5zX2NoZWNrc3VtX3R5cGUgPSBKQkQyX0NSQzMyQ19DSEtTVU07CisJCWpvdXJuYWwtPmpfY3N1bV9zZWVkID0gamJkMl9jaGtzdW0oam91cm5hbCwgfjAsIGpzYi0+c191dWlkLAorCQkJCQkJICAgc2l6ZW9mKGpzYi0+c191dWlkKSk7CisJfSBlbHNlIHsKKwkJamZzX2NsZWFyX2ZlYXR1cmVfY3N1bTMoam91cm5hbCk7CisJCWpmc19jbGVhcl9mZWF0dXJlX2NzdW0yKGpvdXJuYWwpOworCQlqZnNfc2V0X2ZlYXR1cmVfY2hlY2tzdW0oam91cm5hbCk7CisJfQorfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfdXVpZChqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJc2l6ZV90IHo7CisJZXh0Ml9maWxzeXMgZnM7CisKKwlpZiAoam91cm5hbC0+al9mb3JtYXRfdmVyc2lvbiA8IDIpCisJCXJldHVybjsKKworCWZvciAoeiA9IDA7IHogPCBzaXplb2Yoam91cm5hbC0+al9zdXBlcmJsb2NrLT5zX3V1aWQpOyB6KyspCisJCWlmIChqb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfdXVpZFt6XSkKKwkJCWJyZWFrOworCWlmICh6ID09IDApCisJCXJldHVybjsKKworCWZzID0gam91cm5hbC0+al9mc19kZXYtPmtfZnM7CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJcmV0dXJuOworCisJaWYgKGpmc19oYXNfZmVhdHVyZV82NGJpdChqb3VybmFsKSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJcmV0dXJuOworCisJaWYgKGpvdXJuYWwtPmpfdGFpbCAhPSAwIHx8CisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KGZzLT5zdXBlcikpIHsKKwkJcHJpbnRmKCJKb3VybmFsIG5lZWRzIHJlY292ZXJ5LCB3aWxsIG5vdCBzZXQgNjRiaXQuXG4iKTsKKwkJcmV0dXJuOworCX0KKworCW1lbWNweShqb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfdXVpZCwgZnMtPnN1cGVyLT5zX3V1aWQsCisJICAgICAgIHNpemVvZihmcy0+c3VwZXItPnNfdXVpZCkpOworfQorCitzdGF0aWMgdm9pZCB1cGRhdGVfNjRiaXRfZmxhZyhqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJaWYgKGpvdXJuYWwtPmpfZm9ybWF0X3ZlcnNpb24gPCAyKQorCQlyZXR1cm47CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChqb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKQorCQlyZXR1cm47CisKKwlpZiAoamZzX2hhc19mZWF0dXJlXzY0Yml0KGpvdXJuYWwpICYmCisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChqb3VybmFsLT5qX2ZzX2Rldi0+a19mcy0+c3VwZXIpKQorCQlyZXR1cm47CisKKwlpZiAoam91cm5hbC0+al90YWlsICE9IDAgfHwKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoCisJCQkJam91cm5hbC0+al9mc19kZXYtPmtfZnMtPnN1cGVyKSkgeworCQlwcmludGYoIkpvdXJuYWwgbmVlZHMgcmVjb3ZlcnksIHdpbGwgbm90IHNldCA2NGJpdC5cbiIpOworCQlyZXR1cm47CisJfQorCisJamZzX3NldF9mZWF0dXJlXzY0Yml0KGpvdXJuYWwpOworfQorCit2b2lkIGRvX2pvdXJuYWxfb3BlbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBvcHQsIGVuYWJsZV9jc3VtID0gMCwgY3N1bV92ZXIgPSAzOworCWpvdXJuYWxfdCAqam91cm5hbDsKKwllcnJjb2RlX3QgZXJyOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChjaGVja19mc19iaXRtYXBzKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJaWYgKGN1cnJlbnRfam91cm5hbCkgeworCQlwcmludGYoIkpvdXJuYWwgaXMgYWxyZWFkeSBvcGVuLlxuIik7CisJCXJldHVybjsKKwl9CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbChjdXJyZW50X2ZzLT5zdXBlcikpIHsKKwkJcHJpbnRmKCJKb3VybmFsbGluZyBpcyBub3QgZW5hYmxlZCBvbiB0aGlzIGZpbGVzeXN0ZW0uXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjdjpmOiIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKG9wdCkgeworCQljYXNlICdjJzoKKwkJCWVuYWJsZV9jc3VtID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWlmIChjdXJyZW50X2ZzLT5qb3VybmFsX25hbWUpCisJCQkJZnJlZShjdXJyZW50X2ZzLT5qb3VybmFsX25hbWUpOworCQkJY3VycmVudF9mcy0+am91cm5hbF9uYW1lID0gc3RyZHVwKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQljc3VtX3ZlciA9IGF0b2kob3B0YXJnKTsKKwkJCWlmIChjc3VtX3ZlciAhPSAyICYmIGNzdW1fdmVyICE9IDMpIHsKKwkJCQlwcmludGYoIlVua25vd24gam91cm5hbCBjc3VtIHYlZFxuIiwgY3N1bV92ZXIpOworCQkJCWNzdW1fdmVyID0gMzsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcHJpbnRmKCIlczogWy1jXSBbLXYgdmVyXSBbLWYgZXh0X2pubF1cbiIsIGFyZ3ZbMF0pOworCQkJcHJpbnRmKCItYzogRW5hYmxlIGpvdXJuYWwgY2hlY2tzdW1taW5nLlxuIik7CisJCQlwcmludGYoIi12OiBVc2UgdGhpcyB2ZXJzaW9uIGNoZWNrc3VtIGZvcm1hdC5cbiIpOworCQkJcHJpbnRmKCItajogTG9hZCB0aGlzIGV4dGVybmFsIGpvdXJuYWwuXG4iKTsKKwkJfQorCX0KKworCWVyciA9IGV4dDJmc19vcGVuX2pvdXJuYWwoY3VycmVudF9mcywgJmN1cnJlbnRfam91cm5hbCk7CisJaWYgKGVycikgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVyciwgIndoaWxlIG9wZW5pbmcgam91cm5hbCIpOworCQlyZXR1cm47CisJfQorCWpvdXJuYWwgPSBjdXJyZW50X2pvdXJuYWw7CisKKwlkYmdfcHJpbnRmKCJKT1VSTkFMOiBzZXE9JWQgdGFpbHNlcT0lZCBzdGFydD0lbHUgZmlyc3Q9JWx1ICIKKwkJICAgIm1heGxlbj0lbHVcbiIsIGpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSwKKwkJICAgam91cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZSwgam91cm5hbC0+al90YWlsLAorCQkgICBqb3VybmFsLT5qX2ZpcnN0LCBqb3VybmFsLT5qX2xhc3QpOworCisJdXBkYXRlX3V1aWQoam91cm5hbCk7CisJdXBkYXRlXzY0Yml0X2ZsYWcoam91cm5hbCk7CisJaWYgKGVuYWJsZV9jc3VtKQorCQl1cGRhdGVfam91cm5hbF9jc3VtKGpvdXJuYWwsIGNzdW1fdmVyKTsKKworCWVyciA9IGpvdXJuYWxfZmluZF9oZWFkKGpvdXJuYWwpOworCWlmIChlcnIpCisJCWNvbV9lcnIoYXJndlswXSwgZXJyLCAid2hpbGUgZXhhbWluaW5nIGpvdXJuYWwiKTsKK30KKwordm9pZCBkb19qb3VybmFsX2Nsb3NlKGludCBhcmdjIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgY2hhciAqYXJndltdIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlpZiAoY3VycmVudF9qb3VybmFsID09IE5VTEwpIHsKKwkJcHJpbnRmKCJKb3VybmFsIG5vdCBvcGVuLlxuIik7CisJCXJldHVybjsKKwl9CisKKwlleHQyZnNfY2xvc2Vfam91cm5hbChjdXJyZW50X2ZzLCAmY3VycmVudF9qb3VybmFsKTsKK30KKwordm9pZCBkb19qb3VybmFsX3J1bihpbnQgYXJnYyBFWFQyRlNfQVRUUigodW51c2VkKSksIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QgZXJyOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChjaGVja19mc19iaXRtYXBzKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJaWYgKGN1cnJlbnRfam91cm5hbCkgeworCQlwcmludGYoIlBsZWFzZSBjbG9zZSB0aGUgam91cm5hbCBiZWZvcmUgcmVjb3ZlcmluZyBpdC5cbiIpOworCQlyZXR1cm47CisJfQorCisJZXJyID0gZXh0MmZzX3J1bl9leHQzX2pvdXJuYWwoJmN1cnJlbnRfZnMpOworCWlmIChlcnIpCisJCWNvbV9lcnIoImpvdXJuYWxfcnVuIiwgZXJyLCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIik7CisJZWxzZSB7CisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoY3VycmVudF9mcy0+c3VwZXIpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShjdXJyZW50X2ZzKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9kdW1wLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9kdW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzODY1MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2R1bXAuYwpAQCAtMCwwICsxLDM4NCBAQAorLyoKKyAqIGR1bXAuYyAtLS0gZHVtcCB0aGUgY29udGVudHMgb2YgYW4gaW5vZGUgb3V0IHRvIGEgZmlsZQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9HTlVfU09VUkNFCisjZGVmaW5lIF9HTlVfU09VUkNFIC8qIGZvciBPX0xBUkdFRklMRSAqLworI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dXRpbWUuaD4KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGludCBvcHRpbmQ7CitleHRlcm4gY2hhciAqb3B0YXJnOworI2VuZGlmCisKKyNpbmNsdWRlICJkZWJ1Z2ZzLmgiCisKKyNpZm5kZWYgT19MQVJHRUZJTEUKKyNkZWZpbmUgT19MQVJHRUZJTEUgMAorI2VuZGlmCisKKy8qCisgKiBUaGUgbW9kZV94bGF0ZSBmdW5jdGlvbiB0cmFuc2xhdGVzIGEgbGludXggbW9kZSBpbnRvIGEgbmF0aXZlLU9TIG1vZGVfdC4KKyAqLworc3RhdGljIHN0cnVjdCB7CisJX191MTYgbG1hc2s7CisJbW9kZV90IG1hc2s7Cit9IG1vZGVfdGFibGVbXSA9IHsKKwl7IExJTlVYX1NfSVJVU1IsIFNfSVJVU1IgfSwKKwl7IExJTlVYX1NfSVdVU1IsIFNfSVdVU1IgfSwKKwl7IExJTlVYX1NfSVhVU1IsIFNfSVhVU1IgfSwKKwl7IExJTlVYX1NfSVJHUlAsIFNfSVJHUlAgfSwKKwl7IExJTlVYX1NfSVdHUlAsIFNfSVdHUlAgfSwKKwl7IExJTlVYX1NfSVhHUlAsIFNfSVhHUlAgfSwKKwl7IExJTlVYX1NfSVJPVEgsIFNfSVJPVEggfSwKKwl7IExJTlVYX1NfSVdPVEgsIFNfSVdPVEggfSwKKwl7IExJTlVYX1NfSVhPVEgsIFNfSVhPVEggfSwKKwl7IDAsIDAgfQorfTsKKworc3RhdGljIG1vZGVfdCBtb2RlX3hsYXRlKF9fdTE2IGxtb2RlKQoreworCW1vZGVfdAltb2RlID0gMDsKKwlpbnQJaTsKKworCWZvciAoaT0wOyBtb2RlX3RhYmxlW2ldLmxtYXNrOyBpKyspIHsKKwkJaWYgKGxtb2RlICYgbW9kZV90YWJsZVtpXS5sbWFzaykKKwkJCW1vZGUgfD0gbW9kZV90YWJsZVtpXS5tYXNrOworCX0KKwlyZXR1cm4gbW9kZTsKK30KKworc3RhdGljIHZvaWQgZml4X3Blcm1zKGNvbnN0IGNoYXIgKmNtZCwgY29uc3Qgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkgICAgICBpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJc3RydWN0IHV0aW1idWYgdXQ7CisJaW50IGk7CisKKwlpZiAoZmQgIT0gLTEpCisJCWkgPSBmY2htb2QoZmQsIG1vZGVfeGxhdGUoaW5vZGUtPmlfbW9kZSkpOworCWVsc2UKKwkJaSA9IGNobW9kKG5hbWUsIG1vZGVfeGxhdGUoaW5vZGUtPmlfbW9kZSkpOworCWlmIChpID09IC0xKQorCQljb21fZXJyKGNtZCwgZXJybm8sICJ3aGlsZSBzZXR0aW5nIHBlcm1pc3Npb25zIG9mICVzIiwgbmFtZSk7CisKKyNpZm5kZWYgSEFWRV9GQ0hPV04KKwlpID0gY2hvd24obmFtZSwgaW5vZGUtPmlfdWlkLCBpbm9kZS0+aV9naWQpOworI2Vsc2UKKwlpZiAoZmQgIT0gLTEpCisJCWkgPSBmY2hvd24oZmQsIGlub2RlLT5pX3VpZCwgaW5vZGUtPmlfZ2lkKTsKKwllbHNlCisJCWkgPSBjaG93bihuYW1lLCBpbm9kZS0+aV91aWQsIGlub2RlLT5pX2dpZCk7CisjZW5kaWYKKwlpZiAoaSA9PSAtMSkKKwkJY29tX2VycihjbWQsIGVycm5vLCAid2hpbGUgY2hhbmdpbmcgb3duZXJzaGlwIG9mICVzIiwgbmFtZSk7CisKKwl1dC5hY3RpbWUgPSBpbm9kZS0+aV9hdGltZTsKKwl1dC5tb2R0aW1lID0gaW5vZGUtPmlfbXRpbWU7CisJaWYgKHV0aW1lKG5hbWUsICZ1dCkgPT0gLTEpCisJCWNvbV9lcnIoY21kLCBlcnJubywgIndoaWxlIHNldHRpbmcgdGltZXMgb2YgJXMiLCBuYW1lKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9maWxlKGNvbnN0IGNoYXIgKmNtZG5hbWUsIGV4dDJfaW5vX3QgaW5vLCBpbnQgZmQsCisJCSAgICAgIGludCBwcmVzZXJ2ZSwgY2hhciAqb3V0bmFtZSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCWNoYXIJCSpidWYgPSAwOworCWV4dDJfZmlsZV90CWUyX2ZpbGU7CisJaW50CQluYnl0ZXM7CisJdW5zaWduZWQgaW50CWdvdCwgYmxvY2tzaXplID0gY3VycmVudF9mcy0+YmxvY2tzaXplOworCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm8sICZpbm9kZSwgY21kbmFtZSkpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19maWxlX29wZW4oY3VycmVudF9mcywgaW5vLCAwLCAmZTJfZmlsZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGNtZG5hbWUsIHJldHZhbCwgIndoaWxlIG9wZW5pbmcgZXh0MiBmaWxlIik7CisJCXJldHVybjsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oYmxvY2tzaXplLCAmYnVmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY21kbmFtZSwgcmV0dmFsLCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKTsKKwkJcmV0dXJuOworCX0KKwl3aGlsZSAoMSkgeworCQlyZXR2YWwgPSBleHQyZnNfZmlsZV9yZWFkKGUyX2ZpbGUsIGJ1ZiwgYmxvY2tzaXplLCAmZ290KTsKKwkJaWYgKHJldHZhbCkKKwkJCWNvbV9lcnIoY21kbmFtZSwgcmV0dmFsLCAid2hpbGUgcmVhZGluZyBleHQyIGZpbGUiKTsKKwkJaWYgKGdvdCA9PSAwKQorCQkJYnJlYWs7CisJCW5ieXRlcyA9IHdyaXRlKGZkLCBidWYsIGdvdCk7CisJCWlmICgodW5zaWduZWQpIG5ieXRlcyAhPSBnb3QpCisJCQljb21fZXJyKGNtZG5hbWUsIGVycm5vLCAid2hpbGUgd3JpdGluZyBmaWxlIik7CisJfQorCWlmIChidWYpCisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9jbG9zZShlMl9maWxlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY21kbmFtZSwgcmV0dmFsLCAid2hpbGUgY2xvc2luZyBleHQyIGZpbGUiKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChwcmVzZXJ2ZSkKKwkJZml4X3Blcm1zKCJkdW1wX2ZpbGUiLCAmaW5vZGUsIGZkLCBvdXRuYW1lKTsKKworCXJldHVybjsKK30KKwordm9pZCBkb19kdW1wKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlleHQyX2lub190CWlub2RlOworCWludAkJZmQ7CisJaW50CQljOworCWludAkJcHJlc2VydmUgPSAwOworCWNoYXIJCSppbl9mbiwgKm91dF9mbjsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgInAiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdwJzoKKwkJCXByZXNlcnZlKys7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJcHJpbnRfdXNhZ2U6CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogZHVtcF9pbm9kZSBbLXBdICIKKwkJCQkiPGZpbGU+IDxvdXRwdXRfZmlsZT4iKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKwlpZiAob3B0aW5kICE9IGFyZ2MtMikKKwkJZ290byBwcmludF91c2FnZTsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpbl9mbiA9IGFyZ3Zbb3B0aW5kXTsKKwlvdXRfZm4gPSBhcmd2W29wdGluZCsxXTsKKworCWlub2RlID0gc3RyaW5nX3RvX2lub2RlKGluX2ZuKTsKKwlpZiAoIWlub2RlKQorCQlyZXR1cm47CisKKwlmZCA9IG9wZW4ob3V0X2ZuLCBPX0NSRUFUIHwgT19XUk9OTFkgfCBPX1RSVU5DIHwgT19MQVJHRUZJTEUsIDA2NjYpOworCWlmIChmZCA8IDApIHsKKwkJY29tX2Vycihhcmd2WzBdLCBlcnJubywgIndoaWxlIG9wZW5pbmcgJXMgZm9yIGR1bXBfaW5vZGUiLAorCQkJb3V0X2ZuKTsKKwkJcmV0dXJuOworCX0KKworCWR1bXBfZmlsZShhcmd2WzBdLCBpbm9kZSwgZmQsIHByZXNlcnZlLCBvdXRfZm4pOworCWlmIChjbG9zZShmZCkgIT0gMCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVycm5vLCAid2hpbGUgY2xvc2luZyAlcyBmb3IgZHVtcF9pbm9kZSIsCisJCQlvdXRfZm4pOworCQlyZXR1cm47CisJfQorCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCByZHVtcF9zeW1saW5rKGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgIGNvbnN0IGNoYXIgKmZ1bGxuYW1lKQoreworCWV4dDJfZmlsZV90IGUyX2ZpbGU7CisJY2hhciAqYnVmOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlidWYgPSBtYWxsb2MoaW5vZGUtPmlfc2l6ZSArIDEpOworCWlmICghYnVmKSB7CisJCWNvbV9lcnIoInJkdW1wIiwgZXJybm8sICJ3aGlsZSBhbGxvY2F0aW5nIGZvciBzeW1saW5rIik7CisJCWdvdG8gZXJyb3V0OworCX0KKworCS8qIEFwcGFyZW50bHksIHRoaXMgaXMgdGhlIHJpZ2h0IHdheSB0byBkZXRlY3QgYW5kIGhhbmRsZSBmYXN0CisJICogc3ltbGlua3M7IHNlZSBkb19zdGF0KCkgaW4gZGVidWdmcy5jLiAqLworCWlmIChleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MyKGN1cnJlbnRfZnMsIGlub2RlKSA9PSAwKQorCQlzdHJjcHkoYnVmLCAoY2hhciAqKSBpbm9kZS0+aV9ibG9jayk7CisJZWxzZSB7CisJCXVuc2lnbmVkIGJ5dGVzID0gaW5vZGUtPmlfc2l6ZTsKKwkJY2hhciAqcCA9IGJ1ZjsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbGVfb3BlbihjdXJyZW50X2ZzLCBpbm8sIDAsICZlMl9maWxlKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigicmR1bXAiLCByZXR2YWwsICJ3aGlsZSBvcGVuaW5nIHN5bWxpbmsiKTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWZvciAoOzspIHsKKwkJCXVuc2lnbmVkIGludCBnb3Q7CisJCQlyZXR2YWwgPSBleHQyZnNfZmlsZV9yZWFkKGUyX2ZpbGUsIHAsIGJ5dGVzLCAmZ290KTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKCJyZHVtcCIsIHJldHZhbCwgIndoaWxlIHJlYWRpbmcgc3ltbGluayIpOworCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQkJYnl0ZXMgLT0gZ290OworCQkJcCArPSBnb3Q7CisJCQlpZiAoZ290ID09IDAgfHwgYnl0ZXMgPT0gMCkKKwkJCQlicmVhazsKKwkJfQorCQlidWZbaW5vZGUtPmlfc2l6ZV0gPSAwOworCQlyZXR2YWwgPSBleHQyZnNfZmlsZV9jbG9zZShlMl9maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWNvbV9lcnIoInJkdW1wIiwgcmV0dmFsLCAid2hpbGUgY2xvc2luZyBzeW1saW5rIik7CisJfQorCisJaWYgKHN5bWxpbmsoYnVmLCBmdWxsbmFtZSkgPT0gLTEpIHsKKwkJY29tX2VycigicmR1bXAiLCBlcnJubywgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgJXMgLT4gJXMiLCBidWYsIGZ1bGxuYW1lKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCitlcnJvdXQ6CisJZnJlZShidWYpOworfQorCitzdGF0aWMgaW50IHJkdW1wX2RpcmVudChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKiwgaW50LCBpbnQsIGNoYXIgKiwgdm9pZCAqKTsKKworc3RhdGljIHZvaWQgcmR1bXBfaW5vZGUoZXh0Ml9pbm9fdCBpbm8sIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCWNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmR1bXByb290KQoreworCWNoYXIgKmZ1bGxuYW1lOworCisJLyogVGhlcmUgYXJlIG1vcmUgZWZmaWNpZW50IHdheXMgdG8gZG8gdGhpcywgYnV0IHRoaXMgbWV0aG9kCisJICogcmVxdWlyZXMgb25seSBtaW5pbWFsIGRlYnVnZ2luZy4gKi8KKwlmdWxsbmFtZSA9IG1hbGxvYyhzdHJsZW4oZHVtcHJvb3QpICsgc3RybGVuKG5hbWUpICsgMik7CisJaWYgKCFmdWxsbmFtZSkgeworCQljb21fZXJyKCJyZHVtcCIsIGVycm5vLCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKTsKKwkJcmV0dXJuOworCX0KKwlzcHJpbnRmKGZ1bGxuYW1lLCAiJXMvJXMiLCBkdW1wcm9vdCwgbmFtZSk7CisKKwlpZiAoTElOVVhfU19JU0xOSyhpbm9kZS0+aV9tb2RlKSkKKwkJcmR1bXBfc3ltbGluayhpbm8sIGlub2RlLCBmdWxsbmFtZSk7CisJZWxzZSBpZiAoTElOVVhfU19JU1JFRyhpbm9kZS0+aV9tb2RlKSkgeworCQlpbnQgZmQ7CisJCWZkID0gb3BlbihmdWxsbmFtZSwgT19XUk9OTFkgfCBPX0NSRUFUIHwgT19UUlVOQyB8IE9fTEFSR0VGSUxFLCBTX0lSV1hVKTsKKwkJaWYgKGZkID09IC0xKSB7CisJCQljb21fZXJyKCJyZHVtcCIsIGVycm5vLCAid2hpbGUgb3BlbmluZyAlcyIsIGZ1bGxuYW1lKTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWR1bXBfZmlsZSgicmR1bXAiLCBpbm8sIGZkLCAxLCBmdWxsbmFtZSk7CisJCWlmIChjbG9zZShmZCkgIT0gMCkgeworCQkJY29tX2VycigicmR1bXAiLCBlcnJubywgIndoaWxlIGNsb3NpbmcgJXMiLCBmdWxsbmFtZSk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCX0KKwllbHNlIGlmIChMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpICYmIHN0cmNtcChuYW1lLCAiLiIpICYmIHN0cmNtcChuYW1lLCAiLi4iKSkgeworCQllcnJjb2RlX3QgcmV0dmFsOworCisJCS8qIENyZWF0ZSB0aGUgZGlyZWN0b3J5IHdpdGggMDcwMCBwZXJtaXNzaW9ucywgYmVjYXVzZSB3ZQorCQkgKiBleHBlY3QgdG8gaGF2ZSB0byBjcmVhdGUgZW50cmllcyBpdC4gIFRoZW4gZml4IGl0cyBwZXJtcworCQkgKiBvbmNlIHdlJ3ZlIGRvbmUgdGhlIHRyYXZlcnNhbC4gKi8KKwkJaWYgKG5hbWVbMF0gJiYgbWtkaXIoZnVsbG5hbWUsIFNfSVJXWFUpID09IC0xKSB7CisJCQljb21fZXJyKCJyZHVtcCIsIGVycm5vLCAid2hpbGUgbWFraW5nIGRpcmVjdG9yeSAlcyIsIGZ1bGxuYW1lKTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisKKwkJcmV0dmFsID0gZXh0MmZzX2Rpcl9pdGVyYXRlKGN1cnJlbnRfZnMsIGlubywgMCwgMCwKKwkJCQkJICAgIHJkdW1wX2RpcmVudCwgKHZvaWQgKikgZnVsbG5hbWUpOworCQlpZiAocmV0dmFsKQorCQkJY29tX2VycigicmR1bXAiLCByZXR2YWwsICJ3aGlsZSBkdW1waW5nICVzIiwgZnVsbG5hbWUpOworCisJCWZpeF9wZXJtcygicmR1bXAiLCBpbm9kZSwgLTEsIGZ1bGxuYW1lKTsKKwl9CisJLyogZWxzZSBkbyBub3RoaW5nIChkb24ndCBkdW1wIGRldmljZSBmaWxlcywgc29ja2V0cywgZmlmb3MsIGV0Yy4pICovCisKK2Vycm91dDoKKwlmcmVlKGZ1bGxuYW1lKTsKK30KKworc3RhdGljIGludCByZHVtcF9kaXJlbnQoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQlpbnQgb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCWludCBibG9ja3NpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJY2hhciAqYnVmIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgdm9pZCAqcHJpdmF0ZSkKK3sKKwljaGFyIG5hbWVbRVhUMl9OQU1FX0xFTiArIDFdOworCWludCB0aGlzbGVuOworCWNvbnN0IGNoYXIgKmR1bXByb290ID0gcHJpdmF0ZTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKworCXRoaXNsZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCk7CisJc3RybmNweShuYW1lLCBkaXJlbnQtPm5hbWUsIHRoaXNsZW4pOworCW5hbWVbdGhpc2xlbl0gPSAwOworCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShkaXJlbnQtPmlub2RlLCAmaW5vZGUsIG5hbWUpKQorCQlyZXR1cm4gMDsKKworCXJkdW1wX2lub2RlKGRpcmVudC0+aW5vZGUsICZpbm9kZSwgbmFtZSwgZHVtcHJvb3QpOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZG9fcmR1bXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBzdGF0IHN0OworCWNoYXIgKmRlc3RfZGlyOworCWludCBpOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMywgSU5UX01BWCwgInJkdW1wIiwKKwkJCQkiPGRpcmVjdG9yeT4uLi4gPG5hdGl2ZSBkaXJlY3Rvcnk+IiwgMCkpCisJCXJldHVybjsKKworCS8qIFB1bGwgb3V0IGxhc3QgYXJndW1lbnQgKi8KKwlkZXN0X2RpciA9IGFyZ3ZbYXJnYyAtIDFdOworCWFyZ2MtLTsKKworCS8qIEVuc3VyZSBsYXN0IGFyZyBpcyBhIGRpcmVjdG9yeS4gKi8KKwlpZiAoc3RhdChkZXN0X2RpciwgJnN0KSA9PSAtMSkgeworCQljb21fZXJyKCJyZHVtcCIsIGVycm5vLCAid2hpbGUgc3RhdHRpbmcgJXMiLCBkZXN0X2Rpcik7CisJCXJldHVybjsKKwl9CisJaWYgKCFTX0lTRElSKHN0LnN0X21vZGUpKSB7CisJCWNvbV9lcnIoInJkdW1wIiwgMCwgIiVzIGlzIG5vdCBhIGRpcmVjdG9yeSIsIGRlc3RfZGlyKTsKKwkJcmV0dXJuOworCX0KKworCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspIHsKKwkJY2hhciAqYXJnID0gYXJndltpXSwgKmJhc2VuYW1lOworCQlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwkJZXh0Ml9pbm9fdCBpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJnKTsKKwkJaWYgKCFpbm8pCisJCQljb250aW51ZTsKKworCQlpZiAoZGVidWdmc19yZWFkX2lub2RlKGlubywgJmlub2RlLCBhcmcpKQorCQkJY29udGludWU7CisKKwkJYmFzZW5hbWUgPSBzdHJyY2hyKGFyZywgJy8nKTsKKwkJaWYgKGJhc2VuYW1lKQorCQkJYmFzZW5hbWUrKzsKKwkJZWxzZQorCQkJYmFzZW5hbWUgPSBhcmc7CisKKwkJcmR1bXBfaW5vZGUoaW5vLCAmaW5vZGUsIGJhc2VuYW1lLCBkZXN0X2Rpcik7CisJfQorfQorCit2b2lkIGRvX2NhdChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXh0Ml9pbm9fdAlpbm9kZTsKKworCWlmIChjb21tb25faW5vZGVfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsICZpbm9kZSwgMCkpCisJCXJldHVybjsKKworCWZmbHVzaChzdGRvdXQpOworCWZmbHVzaChzdGRlcnIpOworCWR1bXBfZmlsZShhcmd2WzBdLCBpbm9kZSwgMSwgMCwgYXJndlsyXSk7CisKKwlyZXR1cm47Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL2V4dGVudF9jbWRzLmN0IGIvZTJmc3Byb2dzL2RlYnVnZnMvZXh0ZW50X2NtZHMuY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFjNDM5NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2V4dGVudF9jbWRzLmN0CkBAIC0wLDAgKzEsNzcgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTkzIFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisjCitjb21tYW5kX3RhYmxlIGV4dGVudF9jbWRzOworCityZXF1ZXN0IGRvX2N1cnJlbnRfbm9kZSwgIkN1cnJlbnQgZXh0ZW50IG5vZGUiLAorCWN1cnJlbnRfbm9kZSwgY3VycmVudDsKKworcmVxdWVzdCBkb19yb290X25vZGUsICJHb3RvIHJvb3QgZXh0ZW50IiwKKwlyb290X25vZGUsIHJvb3Q7CisKK3JlcXVlc3QgZG9fbGFzdF9sZWFmLCAiR290byBsYXN0IGxlYWYiLAorCWxhc3RfbGVhZjsKKworcmVxdWVzdCBkb19maXJzdF9zaWIsICJHb3RvIGZpcnN0IHNpYmxpbmciLAorCWZpcnN0X3NpYmxpbmcsIGZpcnN0X3NpYjsKKworcmVxdWVzdCBkb19sYXN0X3NpYiwgIkdvdG8gbGFzdCBzaWJsaW5nIiwKKwlsYXN0X3NpYmxpbmcsIGxhc3Rfc2liOworCityZXF1ZXN0IGRvX25leHRfc2liLCAiR290byBuZXh0IHNpYmxpbmciLAorCW5leHRfc2libGluZywgbmV4dF9zaWIsIG5zOworCityZXF1ZXN0IGRvX3ByZXZfc2liLCAiR290byBwcmV2aW91cyBzaWJsaW5nIiwKKwlwcmV2X3NpYmxpbmcsIHByZXZfc2liLCBwczsKKworcmVxdWVzdCBkb19uZXh0X2xlYWYsICJHb3RvIG5leHQgbGVhZiIsCisJbmV4dF9sZWFmLCBubDsKKworcmVxdWVzdCBkb19wcmV2X2xlYWYsICJHb3RvIHByZXZpb3VzIGxlYWYiLAorCXByZXZfbGVhZiwgcGw7CisKK3JlcXVlc3QgZG9fbmV4dCwgIkdvdG8gbmV4dCBub2RlIiwKKwluZXh0LCBuOworCityZXF1ZXN0IGRvX3ByZXYsICJHb3RvIHByZXZpb3VzIG5vZGUiLAorCXByZXZpb3VzLCBwcmV2LCBwOworCityZXF1ZXN0IGRvX3VwLCAiVXAgbm9kZSIsCisJdXBfbm9kZSwgdXAsIHU7CisKK3JlcXVlc3QgZG9fZG93biwgIkRvd24gbm9kZSIsCisJZG93bl9ub2RlLCBkb3duLCBkOworCityZXF1ZXN0IGRvX2RlbGV0ZV9ub2RlLCAiRGVsZXRlIG5vZGUiLAorCWRlbGV0ZV9ub2RlLCBkZWxldGU7CisKK3JlcXVlc3QgZG9faW5zZXJ0X25vZGUsICJJbnNlcnQgbm9kZSIsCisJaW5zZXJ0X25vZGUsIGluc2VydDsKKworcmVxdWVzdCBkb19zcGxpdF9ub2RlLCAiU3BsaXQgbm9kZSIsCisJc3BsaXRfbm9kZSwgc3BsaXQ7CisKK3JlcXVlc3QgZG9fZml4X3BhcmVudHMsICJGaXggcGFyZW50cyIsCisJZml4X3BhcmVudHMsIGZpeHA7CisKK3JlcXVlc3QgZG9fc2V0X2JtYXAsICJTZXQgYmxvY2sgbWFwcGluZyIsCisJc2V0X2JtYXA7CisKK3JlcXVlc3QgZG9fcmVwbGFjZV9ub2RlLCAiSW5zZXJ0IG5vZGUiLAorCXJlcGxhY2Vfbm9kZSwgcmVwbGFjZTsKKworcmVxdWVzdCBkb19wcmludF9hbGwsICJJdGVyYXRlIG92ZXIgYWxsIG5vZGVzIGFuZCBwcmludCB0aGVtIiwKKwlwcmludF9hbGwsIGFsbDsKKworcmVxdWVzdCBkb19nb3RvX2Jsb2NrLCAiR290byBleHRlbnQgY29udGFpbmluZyBzcGVjaWZpZWQgYmxvY2siLAorCWdvdG9fYmxvY2ssIGdvdG87CisKK3JlcXVlc3QgZG9faW5mbywgIlByaW50IGV4dGVudCBpbmZvIiwKKwlpbmZvOworCityZXF1ZXN0IGRvX2V4dGVudF9jbG9zZSwgIkNsb3NlIGV4dGVudCBoYW5kbGUiLAorCWV4dGVudF9jbG9zZSwgZWM7CisKK2VuZDsKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvZXh0ZW50X2lub2RlLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9leHRlbnRfaW5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2E5MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvZXh0ZW50X2lub2RlLmMKQEAgLTAsMCArMSw1NDIgQEAKKy8qCisgKiBleHRlbnRfaW5vZGUuYyAtLS0gZGlyZWN0IGV4dGVudCB0cmVlIG1hbmlwdWxhdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCitzdGF0aWMgZXh0Ml9pbm9fdAljdXJyZW50X2lubzsKK3N0YXRpYyBleHQyX2V4dGVudF9oYW5kbGVfdCBjdXJyZW50X2hhbmRsZTsKKworc3RhdGljIHZvaWQgZGJnX3ByaW50X2V4dGVudChjaGFyICpkZXNjLCBzdHJ1Y3QgZXh0MmZzX2V4dGVudCAqZXh0ZW50KQoreworCWlmIChkZXNjKQorCQlwcmludGYoIiVzOiAiLCBkZXNjKTsKKwlwcmludGYoImV4dGVudDogbGJsayAlbGx1LS0lbGx1LCBsZW4gJXUsIHBibGsgJWxsdSwgZmxhZ3M6ICIsCisJICAgICAgIGV4dGVudC0+ZV9sYmxrLCBleHRlbnQtPmVfbGJsayArIGV4dGVudC0+ZV9sZW4gLSAxLAorCSAgICAgICBleHRlbnQtPmVfbGVuLCBleHRlbnQtPmVfcGJsayk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX0xFQUYpCisJCWZwdXRzKCJMRUFGICIsIHN0ZG91dCk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkKKwkJZnB1dHMoIlVOSU5JVCAiLCBzdGRvdXQpOworCWlmIChleHRlbnQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpCisJCWZwdXRzKCIyTkRfVklTSVQgIiwgc3Rkb3V0KTsKKwlpZiAoIWV4dGVudC0+ZV9mbGFncykKKwkJZnB1dHMoIihub25lKSIsIHN0ZG91dCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKworfQorCitzdGF0aWMgaW50IGNvbW1vbl9leHRlbnRfYXJnc19wcm9jZXNzKGludCBhcmdjLCBjaGFyICphcmd2W10sIGludCBtaW5fYXJnYywKKwkJCQkgICAgICBpbnQgbWF4X2FyZ2MsIGNvbnN0IGNoYXIgKmNtZCwKKwkJCQkgICAgICBjb25zdCBjaGFyICp1c2FnZSwgaW50IGZsYWdzKQoreworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIG1pbl9hcmdjLCBtYXhfYXJnYywgY21kLAorCQkJCXVzYWdlLCBmbGFncykpCisJCXJldHVybiAxOworCisJaWYgKCFjdXJyZW50X2hhbmRsZSkgeworCQljb21fZXJyKGNtZCwgMCwgIkV4dGVudCBoYW5kbGUgbm90IG9wZW4iKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgY2hhciAqb3JpZ19wcm9tcHQsICpleHRlbnRfcHJvbXB0OworCit2b2lkIGRvX2V4dGVudF9vcGVuKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9pbm9fdAlpbm9kZTsKKwlpbnQJCXJldDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpjcDsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA9PSAxKSB7CisJCWlmIChjdXJyZW50X2lubykKKwkJCXByaW50ZigiQ3VycmVudCBpbm9kZSBpcyAlZFxuIiwgY3VycmVudF9pbm8pOworCQllbHNlCisJCQlwcmludGYoIk5vIGN1cnJlbnQgaW5vZGVcbiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKGNvbW1vbl9pbm9kZV9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgJmlub2RlLCAwKSkKKwkJcmV0dXJuOworCisJY3VycmVudF9pbm8gPSAwOworCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9vcGVuKGN1cnJlbnRfZnMsIGlub2RlLCAmY3VycmVudF9oYW5kbGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzFdLCByZXR2YWwsICJ3aGlsZSBvcGVuaW5nIGV4dGVudCBoYW5kbGUiKTsKKwkJcmV0dXJuOworCX0KKworCWN1cnJlbnRfaW5vID0gaW5vZGU7CisKKwlvcmlnX3Byb21wdCA9IHNzX2dldF9wcm9tcHQoc2NpX2lkeCk7CisJZXh0ZW50X3Byb21wdCA9IG1hbGxvYyhzdHJsZW4ob3JpZ19wcm9tcHQpICsgMzIpOworCWlmIChleHRlbnRfcHJvbXB0ID09IE5VTEwpIHsKKwkJY29tX2Vycihhcmd2WzFdLCByZXR2YWwsICJvdXQgb2YgbWVtb3J5Iik7CisJCXJldHVybjsKKwl9CisKKwlzdHJjcHkoZXh0ZW50X3Byb21wdCwgb3JpZ19wcm9tcHQpOworCWNwID0gc3RyY2hyKGV4dGVudF9wcm9tcHQsICc6Jyk7CisJaWYgKGNwKQorCQkqY3AgPSAwOworCXNwcmludGYoZXh0ZW50X3Byb21wdCArIHN0cmxlbihleHRlbnRfcHJvbXB0KSwgIiAoZXh0ZW50IGlubyAlZCk6ICIsCisJCWN1cnJlbnRfaW5vKTsKKwlzc19hZGRfcmVxdWVzdF90YWJsZShzY2lfaWR4LCAmZXh0ZW50X2NtZHMsIDEsICZyZXQpOworCXNzX3NldF9wcm9tcHQoc2NpX2lkeCwgZXh0ZW50X3Byb21wdCk7CisJcmV0dXJuOworfQorCit2b2lkIGRvX2V4dGVudF9jbG9zZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCByZXQ7CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAxLCAxLAorCQkJCSJleHRlbnRfY2xvc2UiLCAiIiwgMCkpCisJCXJldHVybjsKKworCWlmICghY3VycmVudF9oYW5kbGUpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiRXh0ZW50IGhhbmRsZSBub3Qgb3BlbiIpOworCQlyZXR1cm47CisJfQorCisJZXh0MmZzX2V4dGVudF9mcmVlKGN1cnJlbnRfaGFuZGxlKTsKKwljdXJyZW50X2hhbmRsZSA9IE5VTEw7CisJY3VycmVudF9pbm8gPSAwOworCXNzX2RlbGV0ZV9yZXF1ZXN0X3RhYmxlKHNjaV9pZHgsICZleHRlbnRfY21kcywgJnJldCk7CisJc3Nfc2V0X3Byb21wdChzY2lfaWR4LCBvcmlnX3Byb21wdCk7CisJZnJlZShleHRlbnRfcHJvbXB0KTsKKwlleHRlbnRfcHJvbXB0ID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQgZ2VuZXJpY19nb3RvX25vZGUoY29uc3QgY2hhciAqbXlfbmFtZSwgaW50IGFyZ2MsCisJCQkgICAgICBjaGFyICoqYXJndiwgaW50IG9wKQoreworCXN0cnVjdCBleHQyZnNfZXh0ZW50CWV4dGVudDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWlmIChteV9uYW1lICYmIGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMSwgMSwKKwkJCQkJICAgbXlfbmFtZSwgIiIsIDApKQorCQlyZXR1cm47CisKKwlpZiAoIWN1cnJlbnRfaGFuZGxlKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIkV4dGVudCBoYW5kbGUgbm90IG9wZW4iKTsKKwkJcmV0dXJuOworCX0KKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGN1cnJlbnRfaGFuZGxlLCBvcCwgJmV4dGVudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgMCk7CisJCXJldHVybjsKKwl9CisJZGJnX3ByaW50X2V4dGVudCgwLCAmZXh0ZW50KTsKK30KKwordm9pZCBkb19jdXJyZW50X25vZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlnZW5lcmljX2dvdG9fbm9kZSgiY3VycmVudF9ub2RlIiwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfQ1VSUkVOVCk7Cit9CisKK3ZvaWQgZG9fcm9vdF9ub2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZ2VuZXJpY19nb3RvX25vZGUoInJvb3Rfbm9kZSIsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX1JPT1QpOworfQorCit2b2lkIGRvX2xhc3RfbGVhZihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWdlbmVyaWNfZ290b19ub2RlKCJsYXN0X2xlYWYiLCBhcmdjLCBhcmd2LCBFWFQyX0VYVEVOVF9MQVNUX0xFQUYpOworfQorCit2b2lkIGRvX2ZpcnN0X3NpYihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWdlbmVyaWNfZ290b19ub2RlKCJmaXJzdF9zaWIiLCBhcmdjLCBhcmd2LCBFWFQyX0VYVEVOVF9GSVJTVF9TSUIpOworfQorCit2b2lkIGRvX2xhc3Rfc2liKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZ2VuZXJpY19nb3RvX25vZGUoIm5leHRfc2liIiwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfTEFTVF9TSUIpOworfQorCit2b2lkIGRvX25leHRfc2liKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZ2VuZXJpY19nb3RvX25vZGUoIm5leHRfc2liIiwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfTkVYVF9TSUIpOworfQorCit2b2lkIGRvX3ByZXZfc2liKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZ2VuZXJpY19nb3RvX25vZGUoInByZXZfc2liIiwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfUFJFVl9TSUIpOworfQorCit2b2lkIGRvX25leHRfbGVhZihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWdlbmVyaWNfZ290b19ub2RlKCJuZXh0X2xlYWYiLCBhcmdjLCBhcmd2LCBFWFQyX0VYVEVOVF9ORVhUX0xFQUYpOworfQorCit2b2lkIGRvX3ByZXZfbGVhZihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWdlbmVyaWNfZ290b19ub2RlKCJwcmV2X2xlYWYiLCBhcmdjLCBhcmd2LCBFWFQyX0VYVEVOVF9QUkVWX0xFQUYpOworfQorCit2b2lkIGRvX25leHQoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlnZW5lcmljX2dvdG9fbm9kZSgibmV4dCIsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX05FWFQpOworfQorCit2b2lkIGRvX3ByZXYoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlnZW5lcmljX2dvdG9fbm9kZSgicHJldiIsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX1BSRVYpOworfQorCit2b2lkIGRvX3VwKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZ2VuZXJpY19nb3RvX25vZGUoInVwIiwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfVVApOworfQorCit2b2lkIGRvX2Rvd24oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlnZW5lcmljX2dvdG9fbm9kZSgiZG93biIsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX0RPV04pOworfQorCit2b2lkIGRvX2RlbGV0ZV9ub2RlKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0IGV4dDJmc19leHRlbnQgZXh0ZW50OworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAoY29tbW9uX2V4dGVudF9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMSwgMSwgImRlbGV0ZV9ub2RlIiwKKwkJCQkgICAgICAgIiIsIENIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZGVsZXRlKGN1cnJlbnRfaGFuZGxlLCAwKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAwKTsKKwkJcmV0dXJuOworCX0KKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGN1cnJlbnRfaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULAorCQkJCSAgICZleHRlbnQpOworCWlmIChyZXR2YWwpCisJCXJldHVybjsKKwlkYmdfcHJpbnRfZXh0ZW50KDAsICZleHRlbnQpOworfQorCit2b2lkIGRvX3JlcGxhY2Vfbm9kZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gIlstLXVuaW5pdF0gPGxibGs+IDxsZW4+IDxwYmxrPiI7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudCBleHRlbnQ7CisJaW50IGVycjsKKworCWlmIChjb21tb25fZXh0ZW50X2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAzLCA1LCAicmVwbGFjZV9ub2RlIiwKKwkJCQkgICAgICAgdXNhZ2UsIENIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKworCWV4dGVudC5lX2ZsYWdzID0gMDsKKworCWlmICghc3RyY21wKGFyZ3ZbMV0sICItLXVuaW5pdCIpKSB7CisJCWFyZ2MtLTsKKwkJYXJndisrOworCQlleHRlbnQuZV9mbGFncyB8PSBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQ7CisJfQorCisJaWYgKGFyZ2MgIT0gNCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyAlc1xuIiwgYXJndlswXSwgdXNhZ2UpOworCQlyZXR1cm47CisJfQorCisJZXJyID0gc3RydG9ibGsoYXJndlswXSwgYXJndlsxXSwgImxvZ2ljYWwgYmxvY2siLCAmZXh0ZW50LmVfbGJsayk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJZXh0ZW50LmVfbGVuID0gcGFyc2VfdWxvbmcoYXJndlsyXSwgYXJndlswXSwgImxlbmd0aCIsICZlcnIpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCWVyciA9IHN0cnRvYmxrKGFyZ3ZbMF0sIGFyZ3ZbM10sICJwaHlzaWNhbCBibG9jayIsICZleHRlbnQuZV9wYmxrKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoY3VycmVudF9oYW5kbGUsIDAsICZleHRlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIDApOworCQlyZXR1cm47CisJfQorCWdlbmVyaWNfZ290b19ub2RlKE5VTEwsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX0NVUlJFTlQpOworfQorCit2b2lkIGRvX3NwbGl0X25vZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKGNvbW1vbl9leHRlbnRfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDEsIDEsICJzcGxpdF9ub2RlIiwKKwkJCQkgICAgICAgIiIsIENIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfbm9kZV9zcGxpdChjdXJyZW50X2hhbmRsZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgMCk7CisJCXJldHVybjsKKwl9CisJZ2VuZXJpY19nb3RvX25vZGUoTlVMTCwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfQ1VSUkVOVCk7Cit9CisKK3ZvaWQgZG9faW5zZXJ0X25vZGUoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljb25zdCBjaGFyCSp1c2FnZSA9ICJbLS1hZnRlcl0gWy0tdW5pbml0XSA8bGJsaz4gPGxlbj4gPHBibGs+IjsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBleHQyZnNfZXh0ZW50IGV4dGVudDsKKwljaGFyICpjbWQ7CisJaW50IGVycjsKKwlpbnQgZmxhZ3MgPSAwOworCisJaWYgKGNvbW1vbl9leHRlbnRfYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDMsIDYsICJpbnNlcnRfbm9kZSIsCisJCQkJICAgICAgIHVzYWdlLCBDSEVDS19GU19SVyB8IENIRUNLX0ZTX0JJVE1BUFMpKQorCQlyZXR1cm47CisKKwljbWQgPSBhcmd2WzBdOworCisJZXh0ZW50LmVfZmxhZ3MgPSAwOworCisJd2hpbGUgKGFyZ2MgPiAyKSB7CisJCWlmICghc3RyY21wKGFyZ3ZbMV0sICItLWFmdGVyIikpIHsKKwkJCWFyZ2MtLTsKKwkJCWFyZ3YrKzsKKwkJCWZsYWdzIHw9IEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUjsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmICghc3RyY21wKGFyZ3ZbMV0sICItLXVuaW5pdCIpKSB7CisJCQlhcmdjLS07CisJCQlhcmd2Kys7CisJCQlleHRlbnQuZV9mbGFncyB8PSBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQ7CisJCQljb250aW51ZTsKKwkJfQorCQlicmVhazsKKwl9CisKKwlpZiAoYXJnYyAhPSA0KSB7CisJCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6ICVzICVzXG4iLCBjbWQsIHVzYWdlKTsKKwkJcmV0dXJuOworCX0KKworCWVyciA9IHN0cnRvYmxrKGNtZCwgYXJndlsxXSwgImxvZ2ljYWwgYmxvY2siLCAmZXh0ZW50LmVfbGJsayk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJZXh0ZW50LmVfbGVuID0gcGFyc2VfdWxvbmcoYXJndlsyXSwgY21kLCAibGVuZ3RoIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJZXJyID0gc3RydG9ibGsoY21kLCBhcmd2WzNdLCAicGh5c2ljYWwgYmxvY2siLCAmZXh0ZW50LmVfcGJsayk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoY3VycmVudF9oYW5kbGUsIGZsYWdzLCAmZXh0ZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY21kLCByZXR2YWwsIDApOworCQlyZXR1cm47CisJfQorCWdlbmVyaWNfZ290b19ub2RlKE5VTEwsIGFyZ2MsIGFyZ3YsIEVYVDJfRVhURU5UX0NVUlJFTlQpOworfQorCit2b2lkIGRvX3NldF9ibWFwKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyCSp1c2FnZSA9ICJbLS11bmluaXRdIDxsYmxrPiA8cGJsaz4iOworCXN0cnVjdCBleHQyZnNfZXh0ZW50IGV4dGVudDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCWxvZ2ljYWw7CisJYmxrNjRfdAkJcGh5c2ljYWw7CisJY2hhcgkJKmNtZCA9IGFyZ3ZbMF07CisJaW50CQlmbGFncyA9IDA7CisJaW50CQllcnI7CisKKwlpZiAoY29tbW9uX2V4dGVudF9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMywgNSwgInNldF9ibWFwIiwKKwkJCQkgICAgICAgdXNhZ2UsIENIRUNLX0ZTX1JXIHwgQ0hFQ0tfRlNfQklUTUFQUykpCisJCXJldHVybjsKKworCWlmIChhcmdjID4gMiAmJiAhc3RyY21wKGFyZ3ZbMV0sICItLXVuaW5pdCIpKSB7CisJCWFyZ2MtLTsKKwkJYXJndisrOworCQlmbGFncyB8PSBFWFQyX0VYVEVOVF9TRVRfQk1BUF9VTklOSVQ7CisJfQorCisJaWYgKGFyZ2MgIT0gMykgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyAlc1xuIiwgY21kLCB1c2FnZSk7CisJCXJldHVybjsKKwl9CisKKwllcnIgPSBzdHJ0b2JsayhjbWQsIGFyZ3ZbMV0sICJsb2dpY2FsIGJsb2NrIiwgJmxvZ2ljYWwpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCWVyciA9IHN0cnRvYmxrKGNtZCwgYXJndlsyXSwgInBoeXNpY2FsIGJsb2NrIiwgJnBoeXNpY2FsKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKGN1cnJlbnRfaGFuZGxlLCBsb2dpY2FsLAorCQkJCQlwaHlzaWNhbCwgZmxhZ3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihjbWQsIHJldHZhbCwgMCk7CisJCXJldHVybjsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChjdXJyZW50X2hhbmRsZSwgRVhUMl9FWFRFTlRfQ1VSUkVOVCwKKwkJCQkgICAmZXh0ZW50KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm47CisJZGJnX3ByaW50X2V4dGVudCgwLCAmZXh0ZW50KTsKK30KKwordm9pZCBkb19wcmludF9hbGwoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gIlstLWxlYWYtb25seXwtLXJldmVyc2V8LS1yZXZlcnNlLWxlYWZdIjsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJZXJyY29kZV90CQlyZXR2YWw7CisJZXJyY29kZV90CQllbmRfZXJyID0gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVDsKKwlpbnQJCQlvcCA9IEVYVDJfRVhURU5UX05FWFQ7CisJaW50CQkJZmlyc3Rfb3AgPSBFWFQyX0VYVEVOVF9ST09UOworCisKKwlpZiAoY29tbW9uX2V4dGVudF9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMSwgMiwgInByaW50X2FsbCIsCisJCQkJICAgICAgIHVzYWdlLCAwKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPT0gMikgeworCQlpZiAoIXN0cmNtcChhcmd2WzFdLCAiLS1sZWFmLW9ubHkiKSkKKwkJCW9wID0gRVhUMl9FWFRFTlRfTkVYVF9MRUFGOworCQllbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItLXJldmVyc2UiKSkgeworCQkJb3AgPSBFWFQyX0VYVEVOVF9QUkVWOworCQkJZmlyc3Rfb3AgPSBFWFQyX0VYVEVOVF9MQVNUX0xFQUY7CisJCQllbmRfZXJyID0gRVhUMl9FVF9FWFRFTlRfTk9fUFJFVjsKKwkJfSBlbHNlIGlmICghc3RyY21wKGFyZ3ZbMV0sICItLXJldmVyc2UtbGVhZiIpKSB7CisJCQlvcCA9IEVYVDJfRVhURU5UX1BSRVZfTEVBRjsKKwkJCWZpcnN0X29wID0gRVhUMl9FWFRFTlRfTEFTVF9MRUFGOworCQkJZW5kX2VyciA9IEVYVDJfRVRfRVhURU5UX05PX1BSRVY7CisJCX0gZWxzZSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyAlc1xuIiwgYXJndlswXSwgdXNhZ2UpOworCQkJcmV0dXJuOworCQl9CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoY3VycmVudF9oYW5kbGUsIGZpcnN0X29wLCAmZXh0ZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAwKTsKKwkJcmV0dXJuOworCX0KKwlkYmdfcHJpbnRfZXh0ZW50KDAsICZleHRlbnQpOworCisJd2hpbGUgKDEpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoY3VycmVudF9oYW5kbGUsIG9wLCAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCA9PSBlbmRfZXJyKQorCQkJYnJlYWs7CisKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIDApOworCQkJcmV0dXJuOworCQl9CisJCWRiZ19wcmludF9leHRlbnQoMCwgJmV4dGVudCk7CisJfQorfQorCit2b2lkIGRvX2ZpeF9wYXJlbnRzKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWlmIChjb21tb25fZXh0ZW50X2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAxLCAxLCAiZml4X3BhcmVudHMiLCAiIiwKKwkJCQkgICAgICAgQ0hFQ0tfRlNfUlcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGN1cnJlbnRfaGFuZGxlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAwKTsKKwkJcmV0dXJuOworCX0KK30KKwordm9pZCBkb19pbmZvKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJc3RydWN0IGV4dDJfZXh0ZW50X2luZm8JaW5mbzsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWlmIChjb21tb25fZXh0ZW50X2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAxLCAxLCAiaW5mbyIsICIiLCAwKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXRfaW5mbyhjdXJyZW50X2hhbmRsZSwgJmluZm8pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIDApOworCQlyZXR1cm47CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoY3VycmVudF9oYW5kbGUsCisJCQkJICAgRVhUMl9FWFRFTlRfQ1VSUkVOVCwgJmV4dGVudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgMCk7CisJCXJldHVybjsKKwl9CisKKwlkYmdfcHJpbnRfZXh0ZW50KDAsICZleHRlbnQpOworCisJcHJpbnRmKCJDdXJyZW50IGhhbmRsZSBsb2NhdGlvbjogJWQvJWQgKG1heDogJWQsIGJ5dGVzICVkKSwgbGV2ZWwgJWQvJWRcbiIsCisJICAgICAgIGluZm8uY3Vycl9lbnRyeSwgaW5mby5udW1fZW50cmllcywgaW5mby5tYXhfZW50cmllcywKKwkgICAgICAgaW5mby5ieXRlc19hdmFpbCwgaW5mby5jdXJyX2xldmVsLCBpbmZvLm1heF9kZXB0aCk7CisJcHJpbnRmKCJcdG1heCBsYmxrOiAlbGx1LCBtYXggcGJsazogJWxsdVxuIiwgaW5mby5tYXhfbGJsaywKKwkgICAgICAgaW5mby5tYXhfcGJsayk7CisJcHJpbnRmKCJcdG1heF9sZW46ICV1LCBtYXhfdW5pbml0X2xlbjogJXVcbiIsIGluZm8ubWF4X2xlbiwKKwkgICAgICAgaW5mby5tYXhfdW5pbml0X2xlbik7Cit9CisKK3ZvaWQgZG9fZ290b19ibG9jayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJYmxrNjRfdAkJCWJsazsKKwlpbnQJCQlsZXZlbCA9IDAsIGVycjsKKworCWlmIChjb21tb25fZXh0ZW50X2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAyLCAzLCAiZ290b19ibG9jayIsCisJCQkJICAgICAgICJibG9jayBbbGV2ZWxdIiwgMCkpCisJCXJldHVybjsKKworCWlmIChzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2WzFdLCBOVUxMLCAmYmxrKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPT0gMykgeworCQlsZXZlbCA9IHBhcnNlX3Vsb25nKGFyZ3ZbMl0sIGFyZ3ZbMF0sICJsZXZlbCIsICZlcnIpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuOworCX0KKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290bzIoY3VycmVudF9oYW5kbGUsIGxldmVsLCAoYmxrNjRfdCkgYmxrKTsKKworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsCisJCQkid2hpbGUgdHJ5aW5nIHRvIGdvIHRvIGJsb2NrICVsbHUsIGxldmVsICVkIiwKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIGJsaywgbGV2ZWwpOworCQlyZXR1cm47CisJfQorCisJZ2VuZXJpY19nb3RvX25vZGUoTlVMTCwgYXJnYywgYXJndiwgRVhUMl9FWFRFTlRfQ1VSUkVOVCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9maWxlZnJhZy5jIGIvZTJmc3Byb2dzL2RlYnVnZnMvZmlsZWZyYWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjg1OThiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvZmlsZWZyYWcuYwpAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIGZpbGVmcmFnLmMgLS0tIGRpc3BsYXkgdGhlIGZyYWdtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGEgZmlsZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHV0aW1lLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCisjZGVmaW5lIFZFUkJPU0VfT1BUCTB4MDAwMQorI2RlZmluZSBESVJfT1BUCQkweDAwMDIKKyNkZWZpbmUgUkVDVVJTSVZFX09QVAkweDAwMDQKKworc3RydWN0IGRpcl9saXN0IHsKKwljaGFyCQkqbmFtZTsKKwlleHQyX2lub190CWlubzsKKwlzdHJ1Y3QgZGlyX2xpc3QJKm5leHQ7Cit9OworCitzdHJ1Y3QgZmlsZWZyYWdfc3RydWN0IHsKKwlGSUxFCQkqZjsKKwljb25zdCBjaGFyCSpuYW1lOworCWNvbnN0IGNoYXIJKmRpcl9uYW1lOworCWludAkJb3B0aW9uczsKKwlpbnQJCWxvZ2ljYWxfd2lkdGg7CisJaW50CQlwaHlzaWNhbF93aWR0aDsKKwlpbnQJCWV4dDsKKwlpbnQJCWNvbnRfZXh0OworCWUyX2Jsa2NudF90CW51bTsKKwllMl9ibGtjbnRfdAlsb2dpY2FsX3N0YXJ0OworCWJsazY0X3QJCXBoeXNpY2FsX3N0YXJ0OworCWJsazY0X3QJCWV4cGVjdGVkOworCXN0cnVjdCBkaXJfbGlzdCAqZGlyX2xpc3QsICpkaXJfbGFzdDsKK307CisKK3N0YXRpYyBpbnQgaW50X2xvZzEwKHVuc2lnbmVkIGxvbmcgbG9uZyBhcmcpCit7CisJaW50ICAgICBsID0gMDsKKworCWFyZyA9IGFyZyAvIDEwOworCXdoaWxlIChhcmcpIHsKKwkJbCsrOworCQlhcmcgPSBhcmcgLyAxMDsKKwl9CisJcmV0dXJuIGw7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2hlYWRlcihzdHJ1Y3QgZmlsZWZyYWdfc3RydWN0ICpmcykKK3sKKwlpZiAoZnMtPm9wdGlvbnMgJiBWRVJCT1NFX09QVCkgeworCQlmcHJpbnRmKGZzLT5mLCAiJTRzICUqcyAlKnMgJSpzICUqc1xuIiwgImV4dCIsCisJCQlmcy0+bG9naWNhbF93aWR0aCwgImxvZ2ljYWwiLCBmcy0+cGh5c2ljYWxfd2lkdGgsCisJCQkicGh5c2ljYWwiLCBmcy0+cGh5c2ljYWxfd2lkdGgsICJleHBlY3RlZCIsCisJCQlmcy0+bG9naWNhbF93aWR0aCwgImxlbmd0aCIpOworCX0KK30KKworc3RhdGljIHZvaWQgcmVwb3J0X2ZpbGVmcmFnKHN0cnVjdCBmaWxlZnJhZ19zdHJ1Y3QgKmZzKQoreworCWlmIChmcy0+bnVtID09IDApCisJCXJldHVybjsKKwlpZiAoZnMtPm9wdGlvbnMgJiBWRVJCT1NFX09QVCkgeworCQlpZiAoZnMtPmV4cGVjdGVkKQorCQkJZnByaW50Zihmcy0+ZiwgIiU0ZCAlKmx1ICUqbGx1ICUqbGx1ICUqbHVcbiIsIGZzLT5leHQsCisJCQkJZnMtPmxvZ2ljYWxfd2lkdGgsCisJCQkJKHVuc2lnbmVkIGxvbmcpIGZzLT5sb2dpY2FsX3N0YXJ0LAorCQkJCWZzLT5waHlzaWNhbF93aWR0aCwgZnMtPnBoeXNpY2FsX3N0YXJ0LAorCQkJCWZzLT5waHlzaWNhbF93aWR0aCwgZnMtPmV4cGVjdGVkLAorCQkJCWZzLT5sb2dpY2FsX3dpZHRoLCAodW5zaWduZWQgbG9uZykgZnMtPm51bSk7CisJCWVsc2UKKwkJCWZwcmludGYoZnMtPmYsICIlNGQgJSpsdSAlKmxsdSAlKnMgJSpsdVxuIiwgZnMtPmV4dCwKKwkJCQlmcy0+bG9naWNhbF93aWR0aCwKKwkJCQkodW5zaWduZWQgbG9uZykgZnMtPmxvZ2ljYWxfc3RhcnQsCisJCQkJZnMtPnBoeXNpY2FsX3dpZHRoLCBmcy0+cGh5c2ljYWxfc3RhcnQsCisJCQkJZnMtPnBoeXNpY2FsX3dpZHRoLCAiIiwKKwkJCQlmcy0+bG9naWNhbF93aWR0aCwgKHVuc2lnbmVkIGxvbmcpIGZzLT5udW0pOworCX0KKwlmcy0+ZXh0Kys7Cit9CisKK3N0YXRpYyBpbnQgZmlsZWZyYWdfYmxvY2tzX3Byb2MoZXh0Ml9maWxzeXMgZXh0NF9mcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJYmxrNjRfdCAqYmxvY2tuciwgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCWludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQl2b2lkICpwcml2YXRlKQoreworCXN0cnVjdCBmaWxlZnJhZ19zdHJ1Y3QgKmZzID0gcHJpdmF0ZTsKKworCWlmIChibG9ja2NudCA8IDAgfHwgKmJsb2NrbnIgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoKGZzLT5udW0gPT0gMCkgfHwgKGJsb2NrY250ICE9IGZzLT5sb2dpY2FsX3N0YXJ0ICsgZnMtPm51bSkgfHwKKwkgICAgKCpibG9ja25yICE9IGZzLT5waHlzaWNhbF9zdGFydCArIGZzLT5udW0pKSB7CisJCXJlcG9ydF9maWxlZnJhZyhmcyk7CisJCWlmIChibG9ja2NudCA9PSBmcy0+bG9naWNhbF9zdGFydCArIGZzLT5udW0pCisJCQlmcy0+ZXhwZWN0ZWQgPSBmcy0+cGh5c2ljYWxfc3RhcnQgKyBmcy0+bnVtOworCQllbHNlCisJCQlmcy0+ZXhwZWN0ZWQgPSAwOworCQlmcy0+bG9naWNhbF9zdGFydCA9IGJsb2NrY250OworCQlmcy0+cGh5c2ljYWxfc3RhcnQgPSAqYmxvY2tucjsKKwkJZnMtPm51bSA9IDE7CisJCWZzLT5jb250X2V4dCsrOworCX0gZWxzZQorCQlmcy0+bnVtKys7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGZpbGVmcmFnKGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCSAgICAgc3RydWN0IGZpbGVmcmFnX3N0cnVjdCAqZnMpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWJsb2Nrc2l6ZSA9IGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZTsKKworCWZzLT5sb2dpY2FsX3dpZHRoID0gaW50X2xvZzEwKChFWFQyX0lfU0laRShpbm9kZSkgKyBibG9ja3NpemUgLSAxKSAvCisJCQkJICAgICAgYmxvY2tzaXplKSArIDE7CisJaWYgKGZzLT5sb2dpY2FsX3dpZHRoIDwgNykKKwkJZnMtPmxvZ2ljYWxfd2lkdGggPSA3OworCWZzLT5leHQgPSAwOworCWZzLT5jb250X2V4dCA9IDA7CisJZnMtPmxvZ2ljYWxfc3RhcnQgPSAwOworCWZzLT5waHlzaWNhbF9zdGFydCA9IDA7CisJZnMtPm51bSA9IDA7CisKKwlpZiAoZnMtPm9wdGlvbnMgJiBWRVJCT1NFX09QVCkgeworCQlibGs2NF90IG51bV9ibG9ja3MgPSBleHQyZnNfaW5vZGVfaV9ibG9ja3MoY3VycmVudF9mcywgaW5vZGUpOworCisJCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShjdXJyZW50X2ZzLT5zdXBlcikgfHwKKwkJICAgICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0hVR0VfRklMRV9GTCkpCisJCQludW1fYmxvY2tzIC89IGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSAvIDUxMjsKKworCQlmcHJpbnRmKGZzLT5mLCAiXG4lcyBoYXMgJWxsdSBibG9jayhzKSwgaV9zaXplIGlzICVsbHVcbiIsCisJCQlmcy0+bmFtZSwgbnVtX2Jsb2NrcywgRVhUMl9JX1NJWkUoaW5vZGUpKTsKKwl9CisJcHJpbnRfaGVhZGVyKGZzKTsKKwlpZiAoZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGN1cnJlbnRfZnMsIGlub2RlKSkgeworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoY3VycmVudF9mcywgaW5vLAorCQkJCQkgICAgICAgQkxPQ0tfRkxBR19SRUFEX09OTFksIE5VTEwsCisJCQkJCSAgICAgICBmaWxlZnJhZ19ibG9ja3NfcHJvYywgZnMpOworCQlpZiAocmV0dmFsKQorCQkJY29tX2VycigiZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzIiwgcmV0dmFsLCAwKTsKKwl9CisKKwlyZXBvcnRfZmlsZWZyYWcoZnMpOworCWZwcmludGYoZnMtPmYsICIlczogJWQgY29udGlndW91cyBleHRlbnRzJXNcbiIsIGZzLT5uYW1lLCBmcy0+ZXh0LAorCQlMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpID8gIiAoZGlyKSIgOiAiIik7Cit9CisKK3N0YXRpYyBpbnQgZmlsZWZyYWdfZGlyX3Byb2MoZXh0Ml9pbm9fdCBkaXIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICBpbnQJZW50cnksCisJCQkgICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJICAgICBpbnQJb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgaW50CWJsb2Nrc2l6ZSBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIGNoYXIJKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIHZvaWQJKnByaXZhdGUpCit7CisJc3RydWN0IGZpbGVmcmFnX3N0cnVjdCAqZnMgPSBwcml2YXRlOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCWV4dDJfaW5vX3QJCWlubzsKKwljaGFyCQkJbmFtZVtFWFQyX05BTUVfTEVOICsgMV07CisJY2hhcgkJCSpjcDsKKwlpbnQJCQl0aGlzbGVuOworCisJaWYgKGVudHJ5ID09IERJUkVOVF9ERUxFVEVEX0ZJTEUpCisJCXJldHVybiAwOworCisJdGhpc2xlbiA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KTsKKwlzdHJuY3B5KG5hbWUsIGRpcmVudC0+bmFtZSwgdGhpc2xlbik7CisJbmFtZVt0aGlzbGVuXSA9ICdcMCc7CisJaW5vID0gZGlyZW50LT5pbm9kZTsKKworCWlmICghc3RyY21wKG5hbWUsICIuIikgfHwgIXN0cmNtcChuYW1lLCAiLi4iKSkKKwkJcmV0dXJuIDA7CisKKwljcCA9IG1hbGxvYyhzdHJsZW4oZnMtPmRpcl9uYW1lKSArIHN0cmxlbihuYW1lKSArIDIpOworCWlmICghY3ApIHsKKwkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICVzLyVzXG4iLAorCQkJZnMtPmRpcl9uYW1lLCBuYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCisJc3ByaW50ZihjcCwgIiVzLyVzIiwgZnMtPmRpcl9uYW1lLCBuYW1lKTsKKwlmcy0+bmFtZSA9IGNwOworCisJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm8sICZpbm9kZSwgZnMtPm5hbWUpKQorCQlnb3RvIGVycm91dDsKKworCWZpbGVmcmFnKGlubywgJmlub2RlLCBmcyk7CisKKwlpZiAoKGZzLT5vcHRpb25zICYgUkVDVVJTSVZFX09QVCkgJiYgTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKSB7CisJCXN0cnVjdCBkaXJfbGlzdCAqcDsKKworCQlwID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGlyX2xpc3QpKTsKKwkJaWYgKCFwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGFsbG9jYXRlIGRpcl9saXN0IGZvciAlc1xuIiwKKwkJCQlmcy0+bmFtZSk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQltZW1zZXQocCwgMCwgc2l6ZW9mKHN0cnVjdCBkaXJfbGlzdCkpOworCQlwLT5uYW1lID0gY3A7CisJCXAtPmlubyA9IGlubzsKKwkJaWYgKGZzLT5kaXJfbGFzdCkKKwkJCWZzLT5kaXJfbGFzdC0+bmV4dCA9IHA7CisJCWVsc2UKKwkJCWZzLT5kaXJfbGlzdCA9IHA7CisJCWZzLT5kaXJfbGFzdCA9IHA7CisJCXJldHVybiAwOworCX0KK2Vycm91dDoKKwlmcmVlKGNwKTsKKwlmcy0+bmFtZSA9IDA7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIHZvaWQgZGlyX2l0ZXJhdGUoZXh0Ml9pbm9fdCBpbm8sIHN0cnVjdCBmaWxlZnJhZ19zdHJ1Y3QgKmZzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJc3RydWN0IGRpcl9saXN0CSpwID0gTlVMTDsKKworCWZzLT5kaXJfbmFtZSA9IGZzLT5uYW1lOworCisJd2hpbGUgKDEpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2Rpcl9pdGVyYXRlMihjdXJyZW50X2ZzLCBpbm8sIDAsCisJCQkJCSAgICAgMCwgZmlsZWZyYWdfZGlyX3Byb2MsIGZzKTsKKwkJaWYgKHJldHZhbCkKKwkJCWNvbV9lcnIoImV4dDJmc19kaXJfaXRlcmF0ZTIiLCByZXR2YWwsIDApOworCQlpZiAocCkgeworCQkJZnJlZShwLT5uYW1lKTsKKwkJCWZzLT5kaXJfbGlzdCA9IHAtPm5leHQ7CisJCQlpZiAoIWZzLT5kaXJfbGlzdCkKKwkJCQlmcy0+ZGlyX2xhc3QgPSAwOworCQkJZnJlZShwKTsKKwkJfQorCQlwID0gZnMtPmRpcl9saXN0OworCQlpZiAoIXApCisJCQlicmVhazsKKwkJaW5vID0gcC0+aW5vOworCQlmcy0+ZGlyX25hbWUgPSBwLT5uYW1lOworCX0KK30KKwordm9pZCBkb19maWxlZnJhZyhpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXN0cnVjdCBmaWxlZnJhZ19zdHJ1Y3QgZnM7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJZXh0Ml9pbm9fdAlpbm87CisJaW50CQljOworCisJbWVtc2V0KCZmcywgMCwgc2l6ZW9mKGZzKSk7CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiZHZyIikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnZCc6CisJCQlmcy5vcHRpb25zIHw9IERJUl9PUFQ7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQlmcy5vcHRpb25zIHw9IFZFUkJPU0VfT1BUOworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJZnMub3B0aW9ucyB8PSBSRUNVUlNJVkVfT1BUOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlnb3RvIHByaW50X3VzYWdlOworCQl9CisJfQorCisJaWYgKGFyZ2MgPiBvcHRpbmQrMSkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKDAsIDAsICJVc2FnZTogZmlsZWZyYWcgWy1kdnJdIGZpbGUiKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChhcmdjID09IG9wdGluZCkgeworCQlpbm8gPSBjd2Q7CisJCWZzLm5hbWUgPSAiLiI7CisJfSBlbHNlIHsKKwkJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3Zbb3B0aW5kXSk7CisJCWZzLm5hbWUgPSBhcmd2W29wdGluZF07CisJfQorCWlmICghaW5vKQorCQlyZXR1cm47CisKKwlpZiAoZGVidWdmc19yZWFkX2lub2RlKGlubywgJmlub2RlLCBhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJZnMuZiA9IG9wZW5fcGFnZXIoKTsKKwlmcy5waHlzaWNhbF93aWR0aCA9IGludF9sb2cxMChleHQyZnNfYmxvY2tzX2NvdW50KGN1cnJlbnRfZnMtPnN1cGVyKSk7CisJZnMucGh5c2ljYWxfd2lkdGgrKzsKKwlpZiAoZnMucGh5c2ljYWxfd2lkdGggPCA4KQorCQlmcy5waHlzaWNhbF93aWR0aCA9IDg7CisKKwlpZiAoIUxJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSB8fCAoZnMub3B0aW9ucyAmIERJUl9PUFQpKQorCQlmaWxlZnJhZyhpbm8sICZpbm9kZSwgJmZzKTsKKwllbHNlCisJCWRpcl9pdGVyYXRlKGlubywgJmZzKTsKKworCWZwcmludGYoZnMuZiwgIlxuIik7CisJY2xvc2VfcGFnZXIoZnMuZik7CisKKwlyZXR1cm47Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9odHJlZS5jIGIvZTJmc3Byb2dzL2RlYnVnZnMvaHRyZWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGU1NWUyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvaHRyZWUuYwpAQCAtMCwwICsxLDQ0MyBAQAorLyoKKyAqIGh0cmVlLmMgLS0tIGhhc2ggdHJlZSByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKworc3RhdGljIEZJTEUgKnBhZ2VyOworCitzdGF0aWMgdm9pZCBodHJlZV9kdW1wX2xlYWZfbm9kZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICogcm9vdG5vZGUsCisJCQkJIGJsazY0X3QgYmxrLCBjaGFyICpidWYpCit7CisJZXJyY29kZV90CWVycmNvZGU7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQ7CisJaW50CQl0aGlzbGVuLCBjb2wgPSAwOworCXVuc2lnbmVkIGludAlvZmZzZXQgPSAwOworCWNoYXIJCW5hbWVbRVhUMl9OQU1FX0xFTiArIDFdOworCWNoYXIJCXRtcFtFWFQyX05BTUVfTEVOICsgNjRdOworCWJsazY0X3QJCXBibGs7CisJZXh0Ml9kaXJoYXNoX3QgCWhhc2gsIG1pbm9yX2hhc2g7CisJdW5zaWduZWQgaW50CXJlY19sZW47CisJaW50CQloYXNoX2FsZzsKKwlpbnQJCWNzdW1fc2l6ZSA9IDA7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKworCWVycmNvZGUgPSBleHQyZnNfYm1hcDIoZnMsIGlubywgaW5vZGUsIGJ1ZiwgMCwgYmxrLCAwLCAmcGJsayk7CisJaWYgKGVycmNvZGUpIHsKKwkJY29tX2VycigiaHRyZWVfZHVtcF9sZWFmX25vZGUiLCBlcnJjb2RlLAorCQkJIndoaWxlIG1hcHBpbmcgbG9naWNhbCBibG9jayAlbGx1XG4iLCBibGspOworCQlyZXR1cm47CisJfQorCisJZnByaW50ZihwYWdlciwgIlJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrICVsbHUsIHBoeXMgJWxsdVxuIiwgYmxrLCBwYmxrKTsKKwllcnJjb2RlID0gZXh0MmZzX3JlYWRfZGlyX2Jsb2NrNChjdXJyZW50X2ZzLCBwYmxrLCBidWYsIDAsIGlubyk7CisJaWYgKGVycmNvZGUpIHsKKwkJY29tX2VycigiaHRyZWVfZHVtcF9sZWFmX25vZGUiLCBlcnJjb2RlLAorCQkJIndoaWxlIHJlYWRpbmcgYmxvY2sgJWxsdSAoJWxsdSlcbiIsCisJCQlibGssIHBibGspOworCQlyZXR1cm47CisJfQorCWhhc2hfYWxnID0gcm9vdG5vZGUtPmhhc2hfdmVyc2lvbjsKKwlpZiAoKGhhc2hfYWxnIDw9IEVYVDJfSEFTSF9URUEpICYmCisJICAgIChmcy0+c3VwZXItPnNfZmxhZ3MgJiBFWFQyX0ZMQUdTX1VOU0lHTkVEX0hBU0gpKQorCQloYXNoX2FsZyArPSAzOworCisJd2hpbGUgKG9mZnNldCA8IGZzLT5ibG9ja3NpemUpIHsKKwkJZGlyZW50ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAoYnVmICsgb2Zmc2V0KTsKKwkJZXJyY29kZSA9IGV4dDJmc19nZXRfcmVjX2xlbihmcywgZGlyZW50LCAmcmVjX2xlbik7CisJCWlmIChlcnJjb2RlKSB7CisJCQljb21fZXJyKCJodHJlZV9kdW1wX2xlYWZfaW5vZGUiLCBlcnJjb2RlLAorCQkJCSJ3aGlsZSBnZXR0aW5nIHJlY19sZW4gZm9yIGJsb2NrICVsdSIsCisJCQkJKHVuc2lnbmVkIGxvbmcpIGJsayk7CisJCQlyZXR1cm47CisJCX0KKwkJdGhpc2xlbiA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KTsKKwkJaWYgKCgob2Zmc2V0ICsgcmVjX2xlbikgPiBmcy0+YmxvY2tzaXplKSB8fAorCQkgICAgKHJlY19sZW4gPCA4KSB8fAorCQkgICAgKChyZWNfbGVuICUgNCkgIT0gMCkgfHwKKwkJICAgICgodW5zaWduZWQpIHRoaXNsZW4gKyA4ID4gcmVjX2xlbikpIHsKKwkJCWZwcmludGYocGFnZXIsICJDb3JydXB0ZWQgZGlyZWN0b3J5IGJsb2NrICglbGx1KSFcbiIsCisJCQkJYmxrKTsKKwkJCWJyZWFrOworCQl9CisJCXN0cm5jcHkobmFtZSwgZGlyZW50LT5uYW1lLCB0aGlzbGVuKTsKKwkJbmFtZVt0aGlzbGVuXSA9ICdcMCc7CisJCWVycmNvZGUgPSBleHQyZnNfZGlyaGFzaChoYXNoX2FsZywgbmFtZSwKKwkJCQkJIHRoaXNsZW4sIGZzLT5zdXBlci0+c19oYXNoX3NlZWQsCisJCQkJCSAmaGFzaCwgJm1pbm9yX2hhc2gpOworCQlpZiAoZXJyY29kZSkKKwkJCWNvbV9lcnIoImh0cmVlX2R1bXBfbGVhZl9ub2RlIiwgZXJyY29kZSwKKwkJCQkid2hpbGUgY2FsY3VsYXRpbmcgaGFzaCIpOworCQlpZiAoKG9mZnNldCA9PSBmcy0+YmxvY2tzaXplIC0gY3N1bV9zaXplKSAmJgorCQkgICAgKGRpcmVudC0+aW5vZGUgPT0gMCkgJiYKKwkJICAgIChkaXJlbnQtPnJlY19sZW4gPT0gY3N1bV9zaXplKSAmJgorCQkgICAgKGRpcmVudC0+bmFtZV9sZW4gPT0gRVhUMl9ESVJfTkFNRV9MRU5fQ1NVTSkpIHsKKwkJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICp0OworCisJCQl0ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICopIGRpcmVudDsKKworCQkJc25wcmludGYodG1wLCBFWFQyX05BTUVfTEVOICsgNjQsCisJCQkJICJsZWFmIGJsb2NrIGNoZWNrc3VtOiAweCUwOHggICIsCisJCQkJIHQtPmRldF9jaGVja3N1bSk7CisJCX0gZWxzZSB7CisJCQlzbnByaW50Zih0bXAsIEVYVDJfTkFNRV9MRU4gKyA2NCwKKwkJCQkgIiV1IDB4JTA4eC0lMDh4ICglZCkgJXMgICAiLAorCQkJCSBkaXJlbnQtPmlub2RlLCBoYXNoLCBtaW5vcl9oYXNoLAorCQkJCSByZWNfbGVuLCBuYW1lKTsKKwkJfQorCQl0aGlzbGVuID0gc3RybGVuKHRtcCk7CisJCWlmIChjb2wgKyB0aGlzbGVuID4gODApIHsKKwkJCWZwcmludGYocGFnZXIsICJcbiIpOworCQkJY29sID0gMDsKKwkJfQorCQlmcHJpbnRmKHBhZ2VyLCAiJXMiLCB0bXApOworCQljb2wgKz0gdGhpc2xlbjsKKwkJb2Zmc2V0ICs9IHJlY19sZW47CisJfQorCWZwcmludGYocGFnZXIsICJcbiIpOworfQorCisKK3N0YXRpYyB2b2lkIGh0cmVlX2R1bXBfaW50X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSBzdHJ1Y3QgZXh0Ml9keF9yb290X2luZm8gKiByb290bm9kZSwKKwkJCQkgYmxrNjRfdCBibGssIGNoYXIgKmJ1ZiwgaW50IGxldmVsKTsKKworCitzdGF0aWMgdm9pZCBodHJlZV9kdW1wX2ludF9ub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICogcm9vdG5vZGUsCisJCQkJc3RydWN0IGV4dDJfZHhfZW50cnkgKmVudCwKKwkJCQljaGFyICpidWYsIGludCBsZXZlbCkKK3sKKwlzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0CWR4X2NvdW50bGltaXQ7CisJc3RydWN0IGV4dDJfZHhfdGFpbAkJKnRhaWw7CisJaW50CQkJCWhhc2gsIGk7CisJaW50CQkJCWxpbWl0LCBjb3VudDsKKwlpbnQJCQkJcmVtYWluZGVyOworCisJZHhfY291bnRsaW1pdCA9ICooKHN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKikgZW50KTsKKwljb3VudCA9IGV4dDJmc19sZTE2X3RvX2NwdShkeF9jb3VudGxpbWl0LmNvdW50KTsKKwlsaW1pdCA9IGV4dDJmc19sZTE2X3RvX2NwdShkeF9jb3VudGxpbWl0LmxpbWl0KTsKKworCWZwcmludGYocGFnZXIsICJOdW1iZXIgb2YgZW50cmllcyAoY291bnQpOiAlZFxuIiwgY291bnQpOworCWZwcmludGYocGFnZXIsICJOdW1iZXIgb2YgZW50cmllcyAobGltaXQpOiAlZFxuIiwgbGltaXQpOworCisJcmVtYWluZGVyID0gZnMtPmJsb2Nrc2l6ZSAtIChsaW1pdCAqIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSkpOworCWlmIChlbnQgPT0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopKHJvb3Rub2RlICsgMSkpCisJCXJlbWFpbmRlciAtPSBzaXplb2Yoc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvKSArIDI0OworCWVsc2UKKwkJcmVtYWluZGVyIC09IDg7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgJiYKKwkgICAgcmVtYWluZGVyID09IHNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKSkgeworCQl0YWlsID0gKHN0cnVjdCBleHQyX2R4X3RhaWwgKikoZW50ICsgbGltaXQpOworCQlmcHJpbnRmKHBhZ2VyLCAiQ2hlY2tzdW06IDB4JTA4eFxuIiwKKwkJCWV4dDJmc19sZTMyX3RvX2NwdSh0YWlsLT5kdF9jaGVja3N1bSkpOworCX0KKworCWZvciAoaT0wOyBpIDwgY291bnQ7IGkrKykgeworCQloYXNoID0gaSA/IGV4dDJmc19sZTMyX3RvX2NwdShlbnRbaV0uaGFzaCkgOiAwOworCQlmcHJpbnRmKHBhZ2VyLCAiRW50cnkgIyVkOiBIYXNoIDB4JTA4eCVzLCBibG9jayAldVxuIiwgaSwKKwkJCWhhc2gsIChoYXNoICYgMSkgPyAiICgqKikiIDogIiIsCisJCQlleHQyZnNfbGUzMl90b19jcHUoZW50W2ldLmJsb2NrKSk7CisJCX0KKworCWZwcmludGYocGFnZXIsICJcbiIpOworCisJZm9yIChpPTA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXVuc2lnbmVkIGludCBoYXNodmFsLCBibG9jazsKKworCQloYXNodmFsID0gZXh0MmZzX2xlMzJfdG9fY3B1KGVudFtpXS5oYXNoKTsKKwkJYmxvY2sgPSBleHQyZnNfbGUzMl90b19jcHUoZW50W2ldLmJsb2NrKTsKKwkJZnByaW50ZihwYWdlciwgIkVudHJ5ICMlZDogSGFzaCAweCUwOHgsIGJsb2NrICV1XG4iLCBpLAorCQkgICAgICAgaSA/IGhhc2h2YWwgOiAwLCBibG9jayk7CisJCWlmIChsZXZlbCkKKwkJCWh0cmVlX2R1bXBfaW50X2Jsb2NrKGZzLCBpbm8sIGlub2RlLCByb290bm9kZSwKKwkJCQkJICAgICBibG9jaywgYnVmLCBsZXZlbC0xKTsKKwkJZWxzZQorCQkJaHRyZWVfZHVtcF9sZWFmX25vZGUoZnMsIGlubywgaW5vZGUsIHJvb3Rub2RlLAorCQkJCQkgICAgIGJsb2NrLCBidWYpOworCX0KKworCWZwcmludGYocGFnZXIsICItLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworfQorCitzdGF0aWMgdm9pZCBodHJlZV9kdW1wX2ludF9ibG9jayhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICogcm9vdG5vZGUsCisJCQkJIGJsazY0X3QgYmxrLCBjaGFyICpidWYsIGludCBsZXZlbCkKK3sKKwljaGFyCQkqY2J1ZjsKKwllcnJjb2RlX3QJZXJyY29kZTsKKwlibGs2NF90CQlwYmxrOworCisJY2J1ZiA9IG1hbGxvYyhmcy0+YmxvY2tzaXplKTsKKwlpZiAoIWNidWYpIHsKKwkJZnByaW50ZihwYWdlciwgIkNvdWxkbid0IGFsbG9jYXRlIGNoaWxkIGJsb2NrLlxuIik7CisJCXJldHVybjsKKwl9CisKKwllcnJjb2RlID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIGlub2RlLCBidWYsIDAsIGJsaywgMCwgJnBibGspOworCWlmIChlcnJjb2RlKSB7CisJCWNvbV9lcnIoImh0cmVlX2R1bXBfaW50X2Jsb2NrIiwgZXJyY29kZSwKKwkJCSJ3aGlsZSBtYXBwaW5nIGxvZ2ljYWwgYmxvY2sgJWxsdVxuIiwgYmxrKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJZXJyY29kZSA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChjdXJyZW50X2ZzLT5pbywgcGJsaywgMSwgYnVmKTsKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKCJodHJlZV9kdW1wX2ludF9ibG9jayIsIGVycmNvZGUsCisJCQkid2hpbGUgCXJlYWRpbmcgYmxvY2sgJWxsdVxuIiwgYmxrKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJaHRyZWVfZHVtcF9pbnRfbm9kZShmcywgaW5vLCBpbm9kZSwgcm9vdG5vZGUsCisJCQkgICAgKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopIChidWYrOCksCisJCQkgICAgY2J1ZiwgbGV2ZWwpOworZXJyb3V0OgorCWZyZWUoY2J1Zik7Cit9CisKKworCit2b2lkIGRvX2h0cmVlX2R1bXAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlleHQyX2lub190CWlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlibGs2NF90CQlibGs7CisJY2hhcgkJKmJ1ZiA9IE5VTEw7CisJc3RydWN0IAkJZXh0Ml9keF9yb290X2luZm8gICpyb290bm9kZTsKKwlzdHJ1Y3QgCQlleHQyX2R4X2VudHJ5ICplbnQ7CisJZXJyY29kZV90CWVycmNvZGU7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcGFnZXIgPSBvcGVuX3BhZ2VyKCk7CisKKwlpZiAoY29tbW9uX2lub2RlX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAmaW5vLCAwKSkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoZGVidWdmc19yZWFkX2lub2RlKGlubywgJmlub2RlLCBhcmd2WzFdKSkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoIUxJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJOb3QgYSBkaXJlY3RvcnkiKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJaWYgKChpbm9kZS5pX2ZsYWdzICYgRVhUMl9CVFJFRV9GTCkgPT0gMCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJOb3QgYSBoYXNoLWluZGV4ZWQgZGlyZWN0b3J5Iik7CisJCWdvdG8gZXJyb3V0OworCX0KKworCWJ1ZiA9IG1hbGxvYygyKmN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKCFidWYpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiQ291bGRuJ3QgYWxsb2NhdGUgaHRyZWUgYnVmZmVyIik7CisJCWdvdG8gZXJyb3V0OworCX0KKworCWVycmNvZGUgPSBleHQyZnNfYm1hcDIoY3VycmVudF9mcywgaW5vLCAmaW5vZGUsIGJ1ZiwgMCwgMCwgMCwgJmJsayk7CisJaWYgKGVycmNvZGUpIHsKKwkJY29tX2VycigiZG9faHRyZWVfYmxvY2siLCBlcnJjb2RlLAorCQkJIndoaWxlIG1hcHBpbmcgbG9naWNhbCBibG9jayAwXG4iKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJZXJyY29kZSA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChjdXJyZW50X2ZzLT5pbywgYmxrLAorCQkJCQkxLCBidWYpOworCWlmIChlcnJjb2RlKSB7CisJCWNvbV9lcnIoYXJndlswXSwgZXJyY29kZSwgIkVycm9yIHJlYWRpbmcgcm9vdCBub2RlIik7CisJCWdvdG8gZXJyb3V0OworCX0KKworCXJvb3Rub2RlID0gKHN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAqKSAoYnVmICsgMjQpOworCisJZnByaW50ZihwYWdlciwgIlJvb3Qgbm9kZSBkdW1wOlxuIik7CisJZnByaW50ZihwYWdlciwgIlx0IFJlc2VydmVkIHplcm86ICV1XG4iLCByb290bm9kZS0+cmVzZXJ2ZWRfemVybyk7CisJZnByaW50ZihwYWdlciwgIlx0IEhhc2ggVmVyc2lvbjogJWRcbiIsIHJvb3Rub2RlLT5oYXNoX3ZlcnNpb24pOworCWZwcmludGYocGFnZXIsICJcdCBJbmZvIGxlbmd0aDogJWRcbiIsIHJvb3Rub2RlLT5pbmZvX2xlbmd0aCk7CisJZnByaW50ZihwYWdlciwgIlx0IEluZGlyZWN0IGxldmVsczogJWRcbiIsIHJvb3Rub2RlLT5pbmRpcmVjdF9sZXZlbHMpOworCWZwcmludGYocGFnZXIsICJcdCBGbGFnczogJWRcbiIsIHJvb3Rub2RlLT51bnVzZWRfZmxhZ3MpOworCisJZW50ID0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopIChidWYgKyAyNCArIHJvb3Rub2RlLT5pbmZvX2xlbmd0aCk7CisKKwlodHJlZV9kdW1wX2ludF9ub2RlKGN1cnJlbnRfZnMsIGlubywgJmlub2RlLCByb290bm9kZSwgZW50LAorCQkJICAgIGJ1ZiArIGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSwKKwkJCSAgICByb290bm9kZS0+aW5kaXJlY3RfbGV2ZWxzKTsKKworZXJyb3V0OgorCWZyZWUoYnVmKTsKKwljbG9zZV9wYWdlcihwYWdlcik7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHByaW50cyB0aGUgaGFzaCBvZiBhIGdpdmVuIGZpbGUuCisgKi8KK3ZvaWQgZG9fZHhfaGFzaChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfZGlyaGFzaF90IGhhc2gsIG1pbm9yX2hhc2g7CisJZXJyY29kZV90CWVycjsKKwlpbnQJCWM7CisJaW50CQloYXNoX3ZlcnNpb24gPSAwOworCV9fdTMyCQloYXNoX3NlZWRbNF07CisKKwloYXNoX3NlZWRbMF0gPSBoYXNoX3NlZWRbMV0gPSBoYXNoX3NlZWRbMl0gPSBoYXNoX3NlZWRbM10gPSAwOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiaDpzOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2gnOgorCQkJaGFzaF92ZXJzaW9uID0gZTJwX3N0cmluZzJoYXNoKG9wdGFyZyk7CisJCQlpZiAoaGFzaF92ZXJzaW9uIDwgMCkKKwkJCQloYXNoX3ZlcnNpb24gPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlpZiAodXVpZF9wYXJzZShvcHRhcmcsICh1bnNpZ25lZCBjaGFyICopIGhhc2hfc2VlZCkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgVVVJRCBmb3JtYXQ6ICVzXG4iLAorCQkJCQlvcHRhcmcpOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKwlpZiAob3B0aW5kICE9IGFyZ2MtMSkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJ1c2FnZTogZHhfaGFzaCBbLWggaGFzaF9hbGddICIKKwkJCSJbLXMgaGFzaF9zZWVkXSBmaWxlbmFtZSIpOworCQlyZXR1cm47CisJfQorCWVyciA9IGV4dDJmc19kaXJoYXNoKGhhc2hfdmVyc2lvbiwgYXJndltvcHRpbmRdLCBzdHJsZW4oYXJndltvcHRpbmRdKSwKKwkJCSAgICAgaGFzaF9zZWVkLCAmaGFzaCwgJm1pbm9yX2hhc2gpOworCWlmIChlcnIpIHsKKwkJY29tX2Vycihhcmd2WzBdLCBlcnIsICJ3aGlsZSBjYWNsdWxhdGluZyBoYXNoIik7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJIYXNoIG9mICVzIGlzIDB4JTB4IChtaW5vciAweCUweClcbiIsIGFyZ3Zbb3B0aW5kXSwKKwkgICAgICAgaGFzaCwgbWlub3JfaGFzaCk7Cit9CisKKy8qCisgKiBTZWFyY2ggZm9yIHBhcnRpY3VsYXIgZGlyZWN0b3J5IGVudHJ5ICh1c2VmdWwgZm9yIGRlYnVnZ2luZyB2ZXJ5CisgKiBsYXJnZSBoYXNoIHRyZWUgZGlyZWN0b3JpZXMgdGhhdCBoYXZlIGxvc3Qgc29tZSBibG9ja3MgZnJvbSB0aGUKKyAqIGJ0cmVlIGluZGV4KS4KKyAqLworc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHsKKwljaGFyCSpzZWFyY2hfbmFtZTsKKwljaGFyCSpidWY7CisJaW50CWxlbjsKK307CisKK3N0YXRpYyBpbnQgc2VhcmNoX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCAqYmxvY2tuciwKKwkJCSAgICBlMl9ibGtjbnRfdCBibG9ja2NudCwgYmxrNjRfdCByZWZfYmxrLAorCQkJICAgIGludCByZWZfb2Zmc2V0LCB2b2lkICpwcml2X2RhdGEpOworCit2b2lkIGRvX2RpcnNlYXJjaChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWV4dDJfaW5vX3QJaW5vZGU7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHBiOworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjICE9IDMpIHsKKwkJY29tX2VycigwLCAwLCAiVXNhZ2U6IGRpcnNlYXJjaCBkaXIgZmlsZW5hbWUiKTsKKwkJcmV0dXJuOworCX0KKworCWlub2RlID0gc3RyaW5nX3RvX2lub2RlKGFyZ3ZbMV0pOworCWlmICghaW5vZGUpCisJCXJldHVybjsKKworCXBiLmJ1ZiA9IG1hbGxvYyhjdXJyZW50X2ZzLT5ibG9ja3NpemUpOworCWlmICghcGIuYnVmKSB7CisJCWNvbV9lcnIoImRpcnNlYXJjaCIsIDAsICJDb3VsZG4ndCBhbGxvY2F0ZSBidWZmZXIiKTsKKwkJcmV0dXJuOworCX0KKwlwYi5zZWFyY2hfbmFtZSA9IGFyZ3ZbMl07CisJcGIubGVuID0gc3RybGVuKHBiLnNlYXJjaF9uYW1lKTsKKworCWV4dDJmc19ibG9ja19pdGVyYXRlMyhjdXJyZW50X2ZzLCBpbm9kZSwgQkxPQ0tfRkxBR19SRUFEX09OTFksIDAsCisJCQkgICAgICBzZWFyY2hfZGlyX2Jsb2NrLCAmcGIpOworCisJZnJlZShwYi5idWYpOworfQorCisKK3N0YXRpYyBpbnQgc2VhcmNoX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCAqYmxvY2tuciwKKwkJCSAgICBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJCSAgICBibGs2NF90IHJlZl9ibGsgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgIGludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50OworCWVycmNvZGVfdAkgICAgICAgCWVycmNvZGU7CisJdW5zaWduZWQgaW50CQlvZmZzZXQgPSAwOworCXVuc2lnbmVkIGludAkJcmVjX2xlbjsKKworCWlmIChibG9ja2NudCA8IDApCisJCXJldHVybiAwOworCisJcCA9IChzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKikgcHJpdl9kYXRhOworCisJZXJyY29kZSA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChjdXJyZW50X2ZzLT5pbywgKmJsb2NrbnIsIDEsIHAtPmJ1Zik7CisJaWYgKGVycmNvZGUpIHsKKwkJY29tX2Vycigic2VhcmNoX2Rpcl9ibG9jayIsIGVycmNvZGUsCisJCQkid2hpbGUgcmVhZGluZyBibG9jayAlbHUiLCAodW5zaWduZWQgbG9uZykgKmJsb2NrbnIpOworCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJfQorCisJd2hpbGUgKG9mZnNldCA8IGZzLT5ibG9ja3NpemUpIHsKKwkJZGlyZW50ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAocC0+YnVmICsgb2Zmc2V0KTsKKwkJZXJyY29kZSA9IGV4dDJmc19nZXRfcmVjX2xlbihmcywgZGlyZW50LCAmcmVjX2xlbik7CisJCWlmIChlcnJjb2RlKSB7CisJCQljb21fZXJyKCJodHJlZV9kdW1wX2xlYWZfaW5vZGUiLCBlcnJjb2RlLAorCQkJCSJ3aGlsZSBnZXR0aW5nIHJlY19sZW4gZm9yIGJsb2NrICVsdSIsCisJCQkJKHVuc2lnbmVkIGxvbmcpICpibG9ja25yKTsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQlpZiAoZGlyZW50LT5pbm9kZSAmJgorCQkgICAgcC0+bGVuID09IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSAmJgorCQkgICAgc3RybmNtcChwLT5zZWFyY2hfbmFtZSwgZGlyZW50LT5uYW1lLAorCQkJICAgIHAtPmxlbikgPT0gMCkgeworCQkJcHJpbnRmKCJFbnRyeSBmb3VuZCBhdCBsb2dpY2FsIGJsb2NrICVsbGQsICIKKwkJCSAgICAgICAicGh5cyAlbGx1LCBvZmZzZXQgJXVcbiIsIChsb25nIGxvbmcpYmxvY2tjbnQsCisJCQkgICAgICAgKmJsb2NrbnIsIG9mZnNldCk7CisJCQlwcmludGYoIm9mZnNldCAldVxuIiwgb2Zmc2V0KTsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQlvZmZzZXQgKz0gcmVjX2xlbjsKKwl9CisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL2ljaGVjay5jIGIvZTJmc3Byb2dzL2RlYnVnZnMvaWNoZWNrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I5YmQxNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2ljaGVjay5jCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogaWNoZWNrLmMgLS0tIGdpdmVuIGEgbGlzdCBvZiBibG9ja3MsIGdlbmVyYXRlIGEgbGlzdCBvZiBpbm9kZXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCitzdHJ1Y3QgYmxvY2tfaW5mbyB7CisJYmxrNjRfdAkJYmxrOworCWV4dDJfaW5vX3QJaW5vOworfTsKKworc3RydWN0IGJsb2NrX3dhbGtfc3RydWN0IHsKKwlzdHJ1Y3QgYmxvY2tfaW5mbwkqYmFycmF5OworCWUyX2Jsa2NudF90CQlibG9ja3NfbGVmdDsKKwllMl9ibGtjbnRfdAkJbnVtX2Jsb2NrczsKKwlleHQyX2lub190CQlpbm9kZTsKK307CisKK3N0YXRpYyBpbnQgaWNoZWNrX3Byb2MoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICAgYmxrNjRfdAkqYmxvY2tfbnIsCisJCSAgICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICB2b2lkICpwcml2YXRlKQoreworCXN0cnVjdCBibG9ja193YWxrX3N0cnVjdCAqYncgPSAoc3RydWN0IGJsb2NrX3dhbGtfc3RydWN0ICopIHByaXZhdGU7CisJZTJfYmxrY250X3QJaTsKKworCWZvciAoaT0wOyBpIDwgYnctPm51bV9ibG9ja3M7IGkrKykgeworCQlpZiAoIWJ3LT5iYXJyYXlbaV0uaW5vICYmIGJ3LT5iYXJyYXlbaV0uYmxrID09ICpibG9ja19ucikgeworCQkJYnctPmJhcnJheVtpXS5pbm8gPSBidy0+aW5vZGU7CisJCQlidy0+YmxvY2tzX2xlZnQtLTsKKwkJfQorCX0KKwlpZiAoIWJ3LT5ibG9ja3NfbGVmdCkKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZG9faWNoZWNrKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgYmxvY2tfd2Fsa19zdHJ1Y3QgYnc7CisJc3RydWN0IGJsb2NrX2luZm8JKmJpbmZvOworCWludAkJCWk7CisJZXh0Ml9pbm9kZV9zY2FuCQlzY2FuID0gMDsKKwlleHQyX2lub190CQlpbm87CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCSpibG9ja19idWY7CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IGljaGVjayA8YmxvY2sgbnVtYmVyPiAuLi4iKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJYncuYmFycmF5ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgYmxvY2tfaW5mbykgKiBhcmdjKTsKKwlpZiAoIWJ3LmJhcnJheSkgeworCQljb21fZXJyKCJpY2hlY2siLCBFTk9NRU0sCisJCQkid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBpbmZvIGFycmF5Iik7CisJCXJldHVybjsKKwl9CisJbWVtc2V0KGJ3LmJhcnJheSwgMCwgc2l6ZW9mKHN0cnVjdCBibG9ja19pbmZvKSAqIGFyZ2MpOworCisJYmxvY2tfYnVmID0gbWFsbG9jKGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSAqIDMpOworCWlmICghYmxvY2tfYnVmKSB7CisJCWNvbV9lcnIoImljaGVjayIsIEVOT01FTSwgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIik7CisJCWdvdG8gZXJyb3Jfb3V0OworCX0KKworCWZvciAoaT0xOyBpIDwgYXJnYzsgaSsrKSB7CisJCWlmIChzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2W2ldLCBOVUxMLCAmYncuYmFycmF5W2ktMV0uYmxrKSkKKwkJCWdvdG8gZXJyb3Jfb3V0OworCX0KKworCWJ3Lm51bV9ibG9ja3MgPSBidy5ibG9ja3NfbGVmdCA9IGFyZ2MtMTsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oY3VycmVudF9mcywgMCwgJnNjYW4pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiaWNoZWNrIiwgcmV0dmFsLCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIik7CisJCWdvdG8gZXJyb3Jfb3V0OworCX0KKworCWRvIHsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9uZXh0X2lub2RlKHNjYW4sICZpbm8sICZpbm9kZSk7CisJfSB3aGlsZSAocmV0dmFsID09IEVYVDJfRVRfQkFEX0JMT0NLX0lOX0lOT0RFX1RBQkxFKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImljaGVjayIsIHJldHZhbCwgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iKTsKKwkJZ290byBlcnJvcl9vdXQ7CisJfQorCisJd2hpbGUgKGlubykgeworCQlibGs2NF90IGJsazsKKworCQlpZiAoIWlub2RlLmlfbGlua3NfY291bnQpCisJCQlnb3RvIG5leHQ7CisKKwkJYncuaW5vZGUgPSBpbm87CisKKwkJYmxrID0gZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGN1cnJlbnRfZnMsICZpbm9kZSk7CisJCWlmIChibGspIHsKKwkJCWljaGVja19wcm9jKGN1cnJlbnRfZnMsICZibGssIDAsCisJCQkJICAgIDAsIDAsICZidyk7CisJCQlpZiAoYncuYmxvY2tzX2xlZnQgPT0gMCkKKwkJCQlicmVhazsKKwkJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoY3VycmVudF9mcywgJmlub2RlLCBibGspOworCQl9CisKKwkJaWYgKCFleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoY3VycmVudF9mcywgJmlub2RlKSkKKwkJCWdvdG8gbmV4dDsKKwkJLyoKKwkJICogVG8gaGFuZGxlIGZpbGVzeXN0ZW1zIHRvdWNoZWQgYnkgMC4zYyBleHRmczsgY2FuIGJlCisJCSAqIHJlbW92ZWQgbGF0ZXIuCisJCSAqLworCQlpZiAoaW5vZGUuaV9kdGltZSkKKwkJCWdvdG8gbmV4dDsKKworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoY3VycmVudF9mcywgaW5vLAorCQkJCQkgICAgICAgQkxPQ0tfRkxBR19SRUFEX09OTFksIGJsb2NrX2J1ZiwKKwkJCQkJICAgICAgIGljaGVja19wcm9jLCAmYncpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJpY2hlY2siLCByZXR2YWwsCisJCQkJIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUiKTsKKwkJCWdvdG8gbmV4dDsKKwkJfQorCisJCWlmIChidy5ibG9ja3NfbGVmdCA9PSAwKQorCQkJYnJlYWs7CisKKwluZXh0OgorCQlkbyB7CisJCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGUoc2NhbiwgJmlubywgJmlub2RlKTsKKwkJfSB3aGlsZSAocmV0dmFsID09IEVYVDJfRVRfQkFEX0JMT0NLX0lOX0lOT0RFX1RBQkxFKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiaWNoZWNrIiwgcmV0dmFsLAorCQkJCSJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIik7CisJCQlnb3RvIGVycm9yX291dDsKKwkJfQorCX0KKworCXByaW50ZigiQmxvY2tcdElub2RlIG51bWJlclxuIik7CisJZm9yIChpPTAsIGJpbmZvID0gYncuYmFycmF5OyBpIDwgYncubnVtX2Jsb2NrczsgaSsrLCBiaW5mbysrKSB7CisJCWlmIChiaW5mby0+aW5vID09IDApIHsKKwkJCXByaW50ZigiJWxsdVx0PGJsb2NrIG5vdCBmb3VuZD5cbiIsIGJpbmZvLT5ibGspOworCQkJY29udGludWU7CisJCX0KKwkJcHJpbnRmKCIlbGx1XHQldVxuIiwgYmluZm8tPmJsaywgYmluZm8tPmlubyk7CisJfQorCitlcnJvcl9vdXQ6CisJZnJlZShidy5iYXJyYXkpOworCWZyZWUoYmxvY2tfYnVmKTsKKwlpZiAoc2NhbikKKwkJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvam91cm5hbC5jIGIvZTJmc3Byb2dzL2RlYnVnZnMvam91cm5hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZDVkNWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9qb3VybmFsLmMKQEAgLTAsMCArMSw5MzAgQEAKKy8qCisgKiBqb3VybmFsLmMgLS0tIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSAiZXh0MyIgam91cm5hbAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAwIFRoZW9kb3JlIFRzJ28KKyAqCisgKiBQYXJ0cyBvZiB0aGUgY29kZSBhcmUgYmFzZWQgb24gZnMvamZzL2pvdXJuYWwuYyBieSBTdGVwaGVuIEMuIFR3ZWVkaWUKKyAqIENvcHlyaWdodCAoQykgMTk5OSBSZWQgSGF0IFNvZnR3YXJlCisgKgorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBhdCB5b3VyIGRpc2NyZXRpb24KKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZGVmaW5lIE1OVF9GTCAoTVNfTUdDX1ZBTCB8IE1TX1JET05MWSkKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKworI2RlZmluZSBFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MKKyNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKKyNpbmNsdWRlICJqb3VybmFsLmgiCisKKyNpZmRlZiBDT05GSUdfSkJEX0RFQlVHCQkvKiBFbmFibGVkIGJ5IGNvbmZpZ3VyZSAtLWVuYWJsZS1qZnMtZGVidWcgKi8KK3N0YXRpYyBpbnQgYmhfY291bnQgPSAwOworI2VuZGlmCisKKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJibGtpZC5oIgorI2Vsc2UKKyNpbmNsdWRlICJibGtpZC9ibGtpZC5oIgorI2VuZGlmCisKKy8qCisgKiBEZWZpbmUgVVNFX0lOT0RFX0lPIHRvIHVzZSB0aGUgaW5vZGVfaW8uYyAvIGZpbGVpby5jIGNvZGVwYXRocy4KKyAqIFRoaXMgY3JlYXRlcyBhIGxhcmdlciBzdGF0aWMgYmluYXJ5LCBhbmQgYSBzbWFsbGVyIGJpbmFyeSB1c2luZworICogc2hhcmVkIGxpYnJhcmllcy4gIEl0J3MgYWxzbyBwcm9iYWJseSBzbGlnaHRseSBsZXNzIENQVS1lZmZpY2llbnQsCisgKiB3aGljaCBpcyB3aHkgaXQncyBub3Qgb24gYnkgZGVmYXVsdC4gIEJ1dCwgaXQncyBhIGdvb2Qgd2F5IG9mCisgKiB0ZXN0aW5nIHRoZSBmdW5jdGlvbnMgaW4gaW5vZGVfaW8uYyBhbmQgZmlsZWlvLmMuCisgKi8KKyN1bmRlZiBVU0VfSU5PREVfSU8KKworLyogQ2hlY2tzdW1taW5nIGZ1bmN0aW9ucyAqLworc3RhdGljIGludCBleHQyZnNfam91cm5hbF92ZXJpZnlfY3N1bV90eXBlKGpvdXJuYWxfdCAqaiwKKwkJCQkJICAgam91cm5hbF9zdXBlcmJsb2NrX3QgKmpzYikKK3sKKwlpZiAoIWpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoaikpCisJCXJldHVybiAxOworCisJcmV0dXJuIGpzYi0+c19jaGVja3N1bV90eXBlID09IEpCRDJfQ1JDMzJDX0NIS1NVTTsKK30KKworc3RhdGljIF9fdTMyIGV4dDJmc19qb3VybmFsX3NiX2NzdW0oam91cm5hbF9zdXBlcmJsb2NrX3QgKmpzYikKK3sKKwlfX3UzMiBjcmMsIG9sZF9jcmM7CisKKwlvbGRfY3JjID0ganNiLT5zX2NoZWNrc3VtOworCWpzYi0+c19jaGVja3N1bSA9IDA7CisJY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKilqc2IsCisJCQkgICAgICAgc2l6ZW9mKGpvdXJuYWxfc3VwZXJibG9ja190KSk7CisJanNiLT5zX2NoZWNrc3VtID0gb2xkX2NyYzsKKworCXJldHVybiBjcmM7Cit9CisKK3N0YXRpYyBpbnQgZXh0MmZzX2pvdXJuYWxfc2JfY3N1bV92ZXJpZnkoam91cm5hbF90ICpqLAorCQkJCQkgam91cm5hbF9zdXBlcmJsb2NrX3QgKmpzYikKK3sKKwlfX3UzMiBwcm92aWRlZCwgY2FsY3VsYXRlZDsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuIDE7CisKKwlwcm92aWRlZCA9IGV4dDJmc19iZTMyX3RvX2NwdShqc2ItPnNfY2hlY2tzdW0pOworCWNhbGN1bGF0ZWQgPSBleHQyZnNfam91cm5hbF9zYl9jc3VtKGpzYik7CisKKwlyZXR1cm4gcHJvdmlkZWQgPT0gY2FsY3VsYXRlZDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfam91cm5hbF9zYl9jc3VtX3NldChqb3VybmFsX3QgKmosCisJCQkJCSAgICBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiKQoreworCV9fdTMyIGNyYzsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuIDA7CisKKwljcmMgPSBleHQyZnNfam91cm5hbF9zYl9jc3VtKGpzYik7CisJanNiLT5zX2NoZWNrc3VtID0gZXh0MmZzX2NwdV90b19iZTMyKGNyYyk7CisJcmV0dXJuIDA7Cit9CisKKy8qIEtlcm5lbCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgdGhlIGpvdXJuYWwuICBUaGVzZSBhbGxvdyB1cworICogdG8gdXNlIHRoZSByZWNvdmVyeS5jIGZpbGUgdmlydHVhbGx5IHVuY2hhbmdlZCBmcm9tIHRoZSBrZXJuZWwsIHNvIHdlCisgKiBkb24ndCBoYXZlIHRvIGRvIG11Y2ggdG8ga2VlcCBrZXJuZWwgYW5kIHVzZXIgcmVjb3ZlcnkgaW4gc3luYy4KKyAqLworaW50IGpvdXJuYWxfYm1hcChqb3VybmFsX3QgKmpvdXJuYWwsIGJsazY0X3QgYmxvY2ssIHVuc2lnbmVkIGxvbmcgbG9uZyAqcGh5cykKK3sKKyNpZmRlZiBVU0VfSU5PREVfSU8KKwkqcGh5cyA9IGJsb2NrOworCXJldHVybiAwOworI2Vsc2UKKwlzdHJ1Y3QgaW5vZGUJKmlub2RlID0gam91cm5hbC0+al9pbm9kZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCXBibGs7CisKKwlpZiAoIWlub2RlKSB7CisJCSpwaHlzID0gYmxvY2s7CisJCXJldHVybiAwOworCX0KKworCXJldHZhbCA9IGV4dDJmc19ibWFwMihpbm9kZS0+aV9mcywgaW5vZGUtPmlfaW5vLAorCQkJICAgICAgJmlub2RlLT5pX2V4dDIsIE5VTEwsIDAsIGJsb2NrLCAwLCAmcGJsayk7CisJKnBoeXMgPSBwYmxrOworCXJldHVybiAoaW50KSByZXR2YWw7CisjZW5kaWYKK30KKworc3RydWN0IGJ1ZmZlcl9oZWFkICpnZXRibGsoa2Rldl90IGtkZXYsIGJsazY0X3QgYmxvY2tuciwgaW50IGJsb2Nrc2l6ZSkKK3sKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCWludCBidWZzaXplID0gc2l6ZW9mKCpiaCkgKyBrZGV2LT5rX2ZzLT5ibG9ja3NpemUgLQorCQlzaXplb2YoYmgtPmJfZGF0YSk7CisJZXJyY29kZV90IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhidWZzaXplLCAmYmgpOworCWlmIChyZXR2YWwpCisJCXJldHVybiBOVUxMOworCisjaWZkZWYgQ09ORklHX0pCRF9ERUJVRworCWlmIChqb3VybmFsX2VuYWJsZV9kZWJ1ZyA+PSAzKQorCQliaF9jb3VudCsrOworI2VuZGlmCisJamZzX2RlYnVnKDQsICJnZXRibGsgZm9yIGJsb2NrICVsbHUgKCVkIGJ5dGVzKSh0b3RhbCAlZClcbiIsCisJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmxvY2tuciwgYmxvY2tzaXplLCBiaF9jb3VudCk7CisKKwliaC0+Yl9mcyA9IGtkZXYtPmtfZnM7CisJaWYgKGtkZXYtPmtfZGV2ID09IEtfREVWX0ZTKQorCQliaC0+Yl9pbyA9IGtkZXYtPmtfZnMtPmlvOworCWVsc2UKKwkJYmgtPmJfaW8gPSBrZGV2LT5rX2ZzLT5qb3VybmFsX2lvOworCWJoLT5iX3NpemUgPSBibG9ja3NpemU7CisJYmgtPmJfYmxvY2tuciA9IGJsb2NrbnI7CisKKwlyZXR1cm4gYmg7Cit9CisKK2ludCBzeW5jX2Jsb2NrZGV2KGtkZXZfdCBrZGV2KQoreworCWlvX2NoYW5uZWwJaW87CisKKwlpZiAoa2Rldi0+a19kZXYgPT0gS19ERVZfRlMpCisJCWlvID0ga2Rldi0+a19mcy0+aW87CisJZWxzZQorCQlpbyA9IGtkZXYtPmtfZnMtPmpvdXJuYWxfaW87CisKKwlyZXR1cm4gaW9fY2hhbm5lbF9mbHVzaChpbykgPyBFSU8gOiAwOworfQorCit2b2lkIGxsX3J3X2Jsb2NrKGludCBydywgaW50IG5yLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJocFtdKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKKworCWZvciAoOyBuciA+IDA7IC0tbnIpIHsKKwkJYmggPSAqYmhwKys7CisJCWlmIChydyA9PSBSRUFEICYmICFiaC0+Yl91cHRvZGF0ZSkgeworCQkJamZzX2RlYnVnKDMsICJyZWFkaW5nIGJsb2NrICVsbHUvJXBcbiIsCisJCQkJICBiaC0+Yl9ibG9ja25yLCAodm9pZCAqKSBiaCk7CisJCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoYmgtPmJfaW8sCisJCQkJCQkgICAgIGJoLT5iX2Jsb2NrbnIsCisJCQkJCQkgICAgIDEsIGJoLT5iX2RhdGEpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoYmgtPmJfZnMtPmRldmljZV9uYW1lLCByZXR2YWwsCisJCQkJCSJ3aGlsZSByZWFkaW5nIGJsb2NrICVsbHVcbiIsCisJCQkJCWJoLT5iX2Jsb2NrbnIpOworCQkJCWJoLT5iX2VyciA9IChpbnQpIHJldHZhbDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWJoLT5iX3VwdG9kYXRlID0gMTsKKwkJfSBlbHNlIGlmIChydyA9PSBXUklURSAmJiBiaC0+Yl9kaXJ0eSkgeworCQkJamZzX2RlYnVnKDMsICJ3cml0aW5nIGJsb2NrICVsbHUvJXBcbiIsCisJCQkJICBiaC0+Yl9ibG9ja25yLAorCQkJCSAgKHZvaWQgKikgYmgpOworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChiaC0+Yl9pbywKKwkJCQkJCSAgICAgIGJoLT5iX2Jsb2NrbnIsCisJCQkJCQkgICAgICAxLCBiaC0+Yl9kYXRhKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKGJoLT5iX2ZzLT5kZXZpY2VfbmFtZSwgcmV0dmFsLAorCQkJCQkid2hpbGUgd3JpdGluZyBibG9jayAlbGx1XG4iLAorCQkJCQliaC0+Yl9ibG9ja25yKTsKKwkJCQliaC0+Yl9lcnIgPSAoaW50KSByZXR2YWw7CisJCQkJY29udGludWU7CisJCQl9CisJCQliaC0+Yl9kaXJ0eSA9IDA7CisJCQliaC0+Yl91cHRvZGF0ZSA9IDE7CisJCX0gZWxzZSB7CisJCQlqZnNfZGVidWcoMywgIm5vLW9wICVzIGZvciBibG9jayAlbGx1XG4iLAorCQkJCSAgcncgPT0gUkVBRCA/ICJyZWFkIiA6ICJ3cml0ZSIsCisJCQkJICBiaC0+Yl9ibG9ja25yKTsKKwkJfQorCX0KK30KKwordm9pZCBtYXJrX2J1ZmZlcl9kaXJ0eShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQoreworCWJoLT5iX2RpcnR5ID0gMTsKK30KKworc3RhdGljIHZvaWQgbWFya19idWZmZXJfY2xlYW4oc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwliaC0+Yl9kaXJ0eSA9IDA7Cit9CisKK3ZvaWQgYnJlbHNlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCit7CisJaWYgKGJoLT5iX2RpcnR5KQorCQlsbF9yd19ibG9jayhXUklURSwgMSwgJmJoKTsKKwlqZnNfZGVidWcoMywgImZyZWVpbmcgYmxvY2sgJWxsdS8lcCAodG90YWwgJWQpXG4iLAorCQkgIGJoLT5iX2Jsb2NrbnIsICh2b2lkICopIGJoLCAtLWJoX2NvdW50KTsKKwlleHQyZnNfZnJlZV9tZW0oJmJoKTsKK30KKworaW50IGJ1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQoreworCXJldHVybiBiaC0+Yl91cHRvZGF0ZTsKK30KKwordm9pZCBtYXJrX2J1ZmZlcl91cHRvZGF0ZShzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBpbnQgdmFsKQoreworCWJoLT5iX3VwdG9kYXRlID0gdmFsOworfQorCit2b2lkIHdhaXRfb25fYnVmZmVyKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCit7CisJaWYgKCFiaC0+Yl91cHRvZGF0ZSkKKwkJbGxfcndfYmxvY2soUkVBRCwgMSwgJmJoKTsKK30KKworCitzdGF0aWMgdm9pZCBleHQyZnNfY2xlYXJfcmVjb3ZlcihleHQyX2ZpbHN5cyBmcywgaW50IGVycm9yKQoreworCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoZnMtPnN1cGVyKTsKKworCS8qIGlmIHdlIGhhZCBhbiBlcnJvciBkb2luZyBqb3VybmFsIHJlY292ZXJ5LCB3ZSBuZWVkIGEgZnVsbCBmc2NrICovCisJaWYgKGVycm9yKQorCQlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworfQorCisvKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGpvdXJuYWwuCisgKi8KK3N0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCB7CisJZTJfYmxrY250X3QJbGFzdF9ibG9jazsKK307CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19qb3VybmFsX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJCSBibGs2NF90CSpibG9ja19uciwKKwkJCQkgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCWJsazY0X3QJYmxrID0gKmJsb2NrX25yOworCisJcCA9IChzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKikgcHJpdl9kYXRhOworCisJaWYgKCFibGsgfHwgYmxrIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkgICAgYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCisJaWYgKGJsb2NrY250ID49IDApCisJCXAtPmxhc3RfYmxvY2sgPSBibG9ja2NudDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfZ2V0X2pvdXJuYWwoZXh0Ml9maWxzeXMgZnMsIGpvdXJuYWxfdCAqKnJldF9qb3VybmFsKQoreworCXN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCBwYjsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBmcy0+c3VwZXI7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sganN1cGVyOworCXN0cnVjdCBidWZmZXJfaGVhZAkqYmg7CisJc3RydWN0IGlub2RlCQkqal9pbm9kZSA9IE5VTEw7CisJc3RydWN0IGtkZXZfcwkJKmRldl9mcyA9IE5VTEwsICpkZXZfam91cm5hbDsKKwljb25zdCBjaGFyCQkqam91cm5hbF9uYW1lID0gMDsKKwlqb3VybmFsX3QJCSpqb3VybmFsID0gTlVMTDsKKwllcnJjb2RlX3QJCXJldHZhbCA9IDA7CisJaW9fbWFuYWdlcgkJaW9fcHRyID0gMDsKKwl1bnNpZ25lZCBsb25nIGxvbmcJc3RhcnQgPSAwOworCWludAkJCWV4dF9qb3VybmFsID0gMDsKKwlpbnQJCQl0cmllZF9iYWNrdXBfam5sID0gMDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhzaXplb2Yoam91cm5hbF90KSwgJmpvdXJuYWwpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbXplcm8oMiAqIHNpemVvZihzdHJ1Y3Qga2Rldl9zKSwgJmRldl9mcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJZGV2X2pvdXJuYWwgPSBkZXZfZnMrMTsKKworCWRldl9mcy0+a19mcyA9IGRldl9qb3VybmFsLT5rX2ZzID0gZnM7CisJZGV2X2ZzLT5rX2RldiA9IEtfREVWX0ZTOworCWRldl9qb3VybmFsLT5rX2RldiA9IEtfREVWX0pPVVJOQUw7CisKKwlqb3VybmFsLT5qX2RldiA9IGRldl9qb3VybmFsOworCWpvdXJuYWwtPmpfZnNfZGV2ID0gZGV2X2ZzOworCWpvdXJuYWwtPmpfaW5vZGUgPSBOVUxMOworCWpvdXJuYWwtPmpfYmxvY2tzaXplID0gZnMtPmJsb2Nrc2l6ZTsKKworCWlmICh1dWlkX2lzX251bGwoc2ItPnNfam91cm5hbF91dWlkKSkgeworCQlpZiAoIXNiLT5zX2pvdXJuYWxfaW51bSkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9CQURfSU5PREVfTlVNOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW16ZXJvKHNpemVvZigqal9pbm9kZSksICZqX2lub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCisJCWpfaW5vZGUtPmlfZnMgPSBmczsKKwkJal9pbm9kZS0+aV9pbm8gPSBzYi0+c19qb3VybmFsX2ludW07CisKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIHNiLT5zX2pvdXJuYWxfaW51bSwKKwkJCQkJICAgJmpfaW5vZGUtPmlfZXh0Mik7CisJCWlmIChyZXR2YWwpIHsKK3RyeV9iYWNrdXBfam91cm5hbDoKKwkJCWlmIChzYi0+c19qbmxfYmFja3VwX3R5cGUgIT0gRVhUM19KTkxfQkFDS1VQX0JMT0NLUyB8fAorCQkJICAgIHRyaWVkX2JhY2t1cF9qbmwpCisJCQkJZ290byBlcnJvdXQ7CisJCQltZW1zZXQoJmpfaW5vZGUtPmlfZXh0MiwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSk7CisJCQltZW1jcHkoJmpfaW5vZGUtPmlfZXh0Mi5pX2Jsb2NrWzBdLCBzYi0+c19qbmxfYmxvY2tzLAorCQkJICAgICAgIEVYVDJfTl9CTE9DS1MqNCk7CisJCQlqX2lub2RlLT5pX2V4dDIuaV9zaXplX2hpZ2ggPSBzYi0+c19qbmxfYmxvY2tzWzE1XTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX3NpemUgPSBzYi0+c19qbmxfYmxvY2tzWzE2XTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX2xpbmtzX2NvdW50ID0gMTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX21vZGUgPSBMSU5VWF9TX0lGUkVHIHwgMDYwMDsKKwkJCXRyaWVkX2JhY2t1cF9qbmwrKzsKKwkJfQorCQlpZiAoIWpfaW5vZGUtPmlfZXh0Mi5pX2xpbmtzX2NvdW50IHx8CisJCSAgICAhTElOVVhfU19JU1JFRyhqX2lub2RlLT5pX2V4dDIuaV9tb2RlKSkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9OT19KT1VSTkFMOworCQkJZ290byB0cnlfYmFja3VwX2pvdXJuYWw7CisJCX0KKwkJaWYgKEVYVDJfSV9TSVpFKCZqX2lub2RlLT5pX2V4dDIpIC8gam91cm5hbC0+al9ibG9ja3NpemUgPAorCQkgICAgSkZTX01JTl9KT1VSTkFMX0JMT0NLUykgeworCQkJcmV0dmFsID0gRVhUMl9FVF9KT1VSTkFMX1RPT19TTUFMTDsKKwkJCWdvdG8gdHJ5X2JhY2t1cF9qb3VybmFsOworCQl9CisJCXBiLmxhc3RfYmxvY2sgPSAtMTsKKwkJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBqX2lub2RlLT5pX2lubywKKwkJCQkJICAgICAgIEJMT0NLX0ZMQUdfSE9MRSwgMCwKKwkJCQkJICAgICAgIHByb2Nlc3Nfam91cm5hbF9ibG9jaywgJnBiKTsKKwkJaWYgKChwYi5sYXN0X2Jsb2NrICsgMSkgKiBmcy0+YmxvY2tzaXplIDwKKwkJICAgIChpbnQpIEVYVDJfSV9TSVpFKCZqX2lub2RlLT5pX2V4dDIpKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0pPVVJOQUxfVE9PX1NNQUxMOworCQkJZ290byB0cnlfYmFja3VwX2pvdXJuYWw7CisJCX0KKwkJaWYgKHRyaWVkX2JhY2t1cF9qbmwgJiYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykpIHsKKwkJCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgc2ItPnNfam91cm5hbF9pbnVtLAorCQkJCQkJICAgICZqX2lub2RlLT5pX2V4dDIpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCWpvdXJuYWwtPmpfbWF4bGVuID0gRVhUMl9JX1NJWkUoJmpfaW5vZGUtPmlfZXh0MikgLworCQkJam91cm5hbC0+al9ibG9ja3NpemU7CisKKyNpZmRlZiBVU0VfSU5PREVfSU8KKwkJcmV0dmFsID0gZXh0MmZzX2lub2RlX2lvX2ludGVybjIoZnMsIHNiLT5zX2pvdXJuYWxfaW51bSwKKwkJCQkJCSAmal9pbm9kZS0+aV9leHQyLAorCQkJCQkJICZqb3VybmFsX25hbWUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisKKwkJaW9fcHRyID0gaW5vZGVfaW9fbWFuYWdlcjsKKyNlbHNlCisJCWpvdXJuYWwtPmpfaW5vZGUgPSBqX2lub2RlOworCQlmcy0+am91cm5hbF9pbyA9IGZzLT5pbzsKKwkJcmV0dmFsID0gKGVycmNvZGVfdClqb3VybmFsX2JtYXAoam91cm5hbCwgMCwgJnN0YXJ0KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworI2VuZGlmCisJfSBlbHNlIHsKKwkJZXh0X2pvdXJuYWwgPSAxOworCQlpZiAoIWZzLT5qb3VybmFsX25hbWUpIHsKKwkJCWNoYXIgdXVpZFszN107CisJCQlibGtpZF9jYWNoZSBibGtpZDsKKworCQkJYmxraWRfZ2V0X2NhY2hlKCZibGtpZCwgTlVMTCk7CisJCQl1dWlkX3VucGFyc2Uoc2ItPnNfam91cm5hbF91dWlkLCB1dWlkKTsKKwkJCWZzLT5qb3VybmFsX25hbWUgPSBibGtpZF9nZXRfZGV2bmFtZShibGtpZCwKKwkJCQkJCQkgICAgICAiVVVJRCIsIHV1aWQpOworCQkJaWYgKCFmcy0+am91cm5hbF9uYW1lKQorCQkJCWZzLT5qb3VybmFsX25hbWUgPSBibGtpZF9kZXZub190b19kZXZuYW1lKHNiLT5zX2pvdXJuYWxfZGV2KTsKKwkJCWJsa2lkX3B1dF9jYWNoZShibGtpZCk7CisJCX0KKwkJam91cm5hbF9uYW1lID0gZnMtPmpvdXJuYWxfbmFtZTsKKworCQlpZiAoIWpvdXJuYWxfbmFtZSkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9MT0FEX0VYVF9KT1VSTkFMOworCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQlqZnNfZGVidWcoMSwgIlVzaW5nIGpvdXJuYWwgZmlsZSAlc1xuIiwgam91cm5hbF9uYW1lKTsKKwkJaW9fcHRyID0gdW5peF9pb19tYW5hZ2VyOworCX0KKworI2lmIDAKKwl0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlciA9IGlvX3B0cjsKKwlpb19wdHIgPSB0ZXN0X2lvX21hbmFnZXI7CisjZW5kaWYKKyNpZm5kZWYgVVNFX0lOT0RFX0lPCisJaWYgKGV4dF9qb3VybmFsKQorI2VuZGlmCisJeworCQlyZXR2YWwgPSBpb19wdHItPm9wZW4oam91cm5hbF9uYW1lLCBmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcsCisJCQkJICAgICAgJmZzLT5qb3VybmFsX2lvKTsKKwl9CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpb19jaGFubmVsX3NldF9ibGtzaXplKGZzLT5qb3VybmFsX2lvLCBmcy0+YmxvY2tzaXplKTsKKworCWlmIChleHRfam91cm5hbCkgeworCQlibGs2NF90IG1heGxlbjsKKworCQlzdGFydCA9IGV4dDJmc19qb3VybmFsX3NiX3N0YXJ0KGZzLT5ibG9ja3NpemUpIC0gMTsKKwkJYmggPSBnZXRibGsoZGV2X2pvdXJuYWwsIHN0YXJ0LCBmcy0+YmxvY2tzaXplKTsKKwkJaWYgKCFiaCkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9OT19NRU1PUlk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgpOworCQlyZXR2YWwgPSBiaC0+Yl9lcnI7CisJCWlmIChyZXR2YWwpIHsKKwkJCWJyZWxzZShiaCk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQltZW1jcHkoJmpzdXBlciwgc3RhcnQgPyBiaC0+Yl9kYXRhIDoKKwkJCQliaC0+Yl9kYXRhICsgU1VQRVJCTE9DS19PRkZTRVQsCisJCSAgICAgICBzaXplb2YoanN1cGVyKSk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWlmIChqc3VwZXIuc19tYWdpYyA9PSBleHQyZnNfc3dhYjE2KEVYVDJfU1VQRVJfTUFHSUMpKQorCQkJZXh0MmZzX3N3YXBfc3VwZXIoJmpzdXBlcik7CisjZW5kaWYKKwkJaWYgKGpzdXBlci5zX21hZ2ljICE9IEVYVDJfU1VQRVJfTUFHSUMgfHwKKwkJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9kZXYoJmpzdXBlcikpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTE9BRF9FWFRfSk9VUk5BTDsKKwkJCWJyZWxzZShiaCk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQkvKiBNYWtlIHN1cmUgdGhlIGpvdXJuYWwgVVVJRCBpcyBjb3JyZWN0ICovCisJCWlmIChtZW1jbXAoanN1cGVyLnNfdXVpZCwgZnMtPnN1cGVyLT5zX2pvdXJuYWxfdXVpZCwKKwkJCSAgIHNpemVvZihqc3VwZXIuc191dWlkKSkpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTE9BRF9FWFRfSk9VUk5BTDsKKwkJCWJyZWxzZShiaCk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCS8qIENoZWNrIHRoZSBzdXBlcmJsb2NrIGNoZWNrc3VtICovCisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bSgmanN1cGVyKSkgeworCQkJc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cyBmc3g7CisJCQlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jawlzdXBlcng7CisJCQl2b2lkICpwOworCisJCQlwID0gc3RhcnQgPyBiaC0+Yl9kYXRhIDogYmgtPmJfZGF0YSArIFNVUEVSQkxPQ0tfT0ZGU0VUOworCQkJbWVtY3B5KCZmc3gsIGZzLCBzaXplb2YoZnN4KSk7CisJCQltZW1jcHkoJnN1cGVyeCwgZnMtPnN1cGVyLCBzaXplb2Yoc3VwZXJ4KSk7CisJCQlmc3guc3VwZXIgPSAmc3VwZXJ4OworCQkJZXh0MmZzX3NldF9mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnN4LnN1cGVyKTsKKwkJCWlmICghZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV92ZXJpZnkoJmZzeCwgcCkpIHsKKwkJCQlyZXR2YWwgPSBFWFQyX0VUX0xPQURfRVhUX0pPVVJOQUw7CisJCQkJYnJlbHNlKGJoKTsKKwkJCQlnb3RvIGVycm91dDsKKwkJCX0KKwkJfQorCQlicmVsc2UoYmgpOworCisJCW1heGxlbiA9IGV4dDJmc19ibG9ja3NfY291bnQoJmpzdXBlcik7CisJCWpvdXJuYWwtPmpfbWF4bGVuID0gKG1heGxlbiA8IDFVTEwgPDwgMzIpID8gbWF4bGVuIDoKKwkJCQkgICAgKDFVTEwgPDwgMzIpIC0gMTsKKwkJc3RhcnQrKzsKKwl9CisKKwliaCA9IGdldGJsayhkZXZfam91cm5hbCwgc3RhcnQsIGpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwlpZiAoIWJoKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfTk9fTUVNT1JZOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlqb3VybmFsLT5qX3NiX2J1ZmZlciA9IGJoOworCWpvdXJuYWwtPmpfc3VwZXJibG9jayA9IChqb3VybmFsX3N1cGVyYmxvY2tfdCAqKWJoLT5iX2RhdGE7CisKKyNpZmRlZiBVU0VfSU5PREVfSU8KKwlpZiAoal9pbm9kZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZqX2lub2RlKTsKKyNlbmRpZgorCisJKnJldF9qb3VybmFsID0gam91cm5hbDsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWlmIChkZXZfZnMpCisJCWV4dDJmc19mcmVlX21lbSgmZGV2X2ZzKTsKKwlpZiAoal9pbm9kZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZqX2lub2RlKTsKKwlpZiAoam91cm5hbCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZqb3VybmFsKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19qb3VybmFsX2ZpeF9iYWRfaW5vZGUoZXh0Ml9maWxzeXMgZnMpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gZnMtPnN1cGVyOworCWludCByZWNvdmVyID0gZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoZnMtPnN1cGVyKTsKKwlpbnQgaGFzX2pvdXJuYWwgPSBleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbChmcy0+c3VwZXIpOworCisJaWYgKGhhc19qb3VybmFsIHx8IHNiLT5zX2pvdXJuYWxfaW51bSkgeworCQkvKiBUaGUgam91cm5hbCBpbm9kZSBpcyBib2d1cywgcmVtb3ZlIGFuZCBmb3JjZSBmdWxsIGZzY2sgKi8KKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0lOT0RFX05VTTsKKwl9IGVsc2UgaWYgKHJlY292ZXIpIHsKKwkJcmV0dXJuIEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkU7CisJfQorCXJldHVybiAwOworfQorCisjZGVmaW5lIFYxX1NCX1NJWkUJMHgwMDI0CitzdGF0aWMgdm9pZCBjbGVhcl92Ml9qb3VybmFsX2ZpZWxkcyhqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBqb3VybmFsLT5qX2Rldi0+a19mczsKKworCW1lbXNldCgoKGNoYXIgKikgam91cm5hbC0+al9zdXBlcmJsb2NrKSArIFYxX1NCX1NJWkUsIDAsCisJICAgICAgIGZzLT5ibG9ja3NpemUtVjFfU0JfU0laRSk7CisJbWFya19idWZmZXJfZGlydHkoam91cm5hbC0+al9zYl9idWZmZXIpOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2pvdXJuYWxfbG9hZChqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBqb3VybmFsLT5qX2Rldi0+a19mczsKKwlqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiOworCXN0cnVjdCBidWZmZXJfaGVhZCAqamJoID0gam91cm5hbC0+al9zYl9idWZmZXI7CisKKwlsbF9yd19ibG9jayhSRUFELCAxLCAmamJoKTsKKwlpZiAoamJoLT5iX2VycikKKwkJcmV0dXJuIGpiaC0+Yl9lcnI7CisKKwlqc2IgPSBqb3VybmFsLT5qX3N1cGVyYmxvY2s7CisJLyogSWYgd2UgZG9uJ3QgZXZlbiBoYXZlIEpGU19NQUdJQywgd2UgcHJvYmFibHkgaGF2ZSBhIHdyb25nIGlub2RlICovCisJaWYgKGpzYi0+c19oZWFkZXIuaF9tYWdpYyAhPSBodG9ubChKRlNfTUFHSUNfTlVNQkVSKSkKKwkJcmV0dXJuIGV4dDJmc19qb3VybmFsX2ZpeF9iYWRfaW5vZGUoZnMpOworCisJc3dpdGNoIChudG9obChqc2ItPnNfaGVhZGVyLmhfYmxvY2t0eXBlKSkgeworCWNhc2UgSkZTX1NVUEVSQkxPQ0tfVjE6CisJCWpvdXJuYWwtPmpfZm9ybWF0X3ZlcnNpb24gPSAxOworCQlpZiAoanNiLT5zX2ZlYXR1cmVfY29tcGF0IHx8CisJCSAgICBqc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCB8fAorCQkgICAganNiLT5zX2ZlYXR1cmVfcm9fY29tcGF0IHx8CisJCSAgICBqc2ItPnNfbnJfdXNlcnMpCisJCQljbGVhcl92Ml9qb3VybmFsX2ZpZWxkcyhqb3VybmFsKTsKKwkJYnJlYWs7CisKKwljYXNlIEpGU19TVVBFUkJMT0NLX1YyOgorCQlqb3VybmFsLT5qX2Zvcm1hdF92ZXJzaW9uID0gMjsKKwkJaWYgKG50b2hsKGpzYi0+c19ucl91c2VycykgPiAxICYmCisJCSAgICB1dWlkX2lzX251bGwoZnMtPnN1cGVyLT5zX2pvdXJuYWxfdXVpZCkpCisJCQljbGVhcl92Ml9qb3VybmFsX2ZpZWxkcyhqb3VybmFsKTsKKwkJaWYgKG50b2hsKGpzYi0+c19ucl91c2VycykgPiAxKQorCQkJcmV0dXJuIEVYVDJfRVRfSk9VUk5BTF9VTlNVUFBfVkVSU0lPTjsKKwkJYnJlYWs7CisKKwkvKgorCSAqIFRoZXNlIHNob3VsZCBuZXZlciBhcHBlYXIgaW4gYSBqb3VybmFsIHN1cGVyIGJsb2NrLCBzbyBpZgorCSAqIHRoZXkgZG8sIHRoZSBqb3VybmFsIGlzIGJhZGx5IGNvcnJ1cHRlZC4KKwkgKi8KKwljYXNlIEpGU19ERVNDUklQVE9SX0JMT0NLOgorCWNhc2UgSkZTX0NPTU1JVF9CTE9DSzoKKwljYXNlIEpGU19SRVZPS0VfQkxPQ0s6CisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQjsKKworCS8qIElmIHdlIGRvbid0IHVuZGVyc3RhbmQgdGhlIHN1cGVyYmxvY2sgbWFqb3IgdHlwZSwgYnV0IHRoZXJlCisJICogaXMgYSBtYWdpYyBudW1iZXIsIHRoZW4gaXQgaXMgbGlrZWx5IHRvIGJlIGEgbmV3IGZvcm1hdCB3ZQorCSAqIGp1c3QgZG9uJ3QgdW5kZXJzdGFuZCwgc28gbGVhdmUgaXQgYWxvbmUuICovCisJZGVmYXVsdDoKKwkJcmV0dXJuIEVYVDJfRVRfSk9VUk5BTF9VTlNVUFBfVkVSU0lPTjsKKwl9CisKKwlpZiAoSkZTX0hBU19JTkNPTVBBVF9GRUFUVVJFKGpvdXJuYWwsIH5KRlNfS05PV05fSU5DT01QQVRfRkVBVFVSRVMpKQorCQlyZXR1cm4gRVhUMl9FVF9VTlNVUFBfRkVBVFVSRTsKKworCWlmIChKRlNfSEFTX1JPX0NPTVBBVF9GRUFUVVJFKGpvdXJuYWwsIH5KRlNfS05PV05fUk9DT01QQVRfRkVBVFVSRVMpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19VTlNVUFBfRkVBVFVSRTsKKworCS8qIENoZWNrc3VtIHYxLTMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSBmZWF0dXJlcy4gKi8KKwlpZiAoamZzX2hhc19mZWF0dXJlX2NzdW0yKGpvdXJuYWwpICYmIGpmc19oYXNfZmVhdHVyZV9jc3VtMyhqb3VybmFsKSkKKwkJcmV0dXJuIEVYVDJfRVRfQ09SUlVQVF9KT1VSTkFMX1NCOworCisJaWYgKGpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoam91cm5hbCkgJiYKKwkgICAgamZzX2hhc19mZWF0dXJlX2NoZWNrc3VtKGpvdXJuYWwpKQorCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisKKwlpZiAoIWV4dDJmc19qb3VybmFsX3ZlcmlmeV9jc3VtX3R5cGUoam91cm5hbCwganNiKSB8fAorCSAgICAhZXh0MmZzX2pvdXJuYWxfc2JfY3N1bV92ZXJpZnkoam91cm5hbCwganNiKSkKKwkJcmV0dXJuIEVYVDJfRVRfQ09SUlVQVF9KT1VSTkFMX1NCOworCisJaWYgKGpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoam91cm5hbCkpCisJCWpvdXJuYWwtPmpfY3N1bV9zZWVkID0gamJkMl9jaGtzdW0oam91cm5hbCwgfjAsIGpzYi0+c191dWlkLAorCQkJCQkJICAgc2l6ZW9mKGpzYi0+c191dWlkKSk7CisKKwkvKiBXZSBoYXZlIG5vdyBjaGVja2VkIHdoZXRoZXIgd2Uga25vdyBlbm91Z2ggYWJvdXQgdGhlIGpvdXJuYWwKKwkgKiBmb3JtYXQgdG8gYmUgYWJsZSB0byBwcm9jZWVkIHNhZmVseSwgc28gYW55IG90aGVyIGNoZWNrcyB0aGF0CisJICogZmFpbCB3ZSBzaG91bGQgYXR0ZW1wdCB0byByZWNvdmVyIGZyb20uICovCisJaWYgKGpzYi0+c19ibG9ja3NpemUgIT0gaHRvbmwoam91cm5hbC0+al9ibG9ja3NpemUpKQorCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisKKwlpZiAobnRvaGwoanNiLT5zX21heGxlbikgPCBqb3VybmFsLT5qX21heGxlbikKKwkJam91cm5hbC0+al9tYXhsZW4gPSBudG9obChqc2ItPnNfbWF4bGVuKTsKKwllbHNlIGlmIChudG9obChqc2ItPnNfbWF4bGVuKSA+IGpvdXJuYWwtPmpfbWF4bGVuKQorCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisKKwlqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UgPSBudG9obChqc2ItPnNfc2VxdWVuY2UpOworCWpvdXJuYWwtPmpfdHJhbnNhY3Rpb25fc2VxdWVuY2UgPSBqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2U7CisJam91cm5hbC0+al90YWlsID0gbnRvaGwoanNiLT5zX3N0YXJ0KTsKKwlqb3VybmFsLT5qX2ZpcnN0ID0gbnRvaGwoanNiLT5zX2ZpcnN0KTsKKwlqb3VybmFsLT5qX2xhc3QgPSBudG9obChqc2ItPnNfbWF4bGVuKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBleHQyZnNfam91cm5hbF9yZWxlYXNlKGV4dDJfZmlsc3lzIGZzLCBqb3VybmFsX3QgKmpvdXJuYWwsCisJCQkJICAgaW50IHJlc2V0LCBpbnQgZHJvcCkKK3sKKwlqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiOworCisJaWYgKGRyb3ApCisJCW1hcmtfYnVmZmVyX2NsZWFuKGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwllbHNlIGlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpIHsKKwkJanNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOworCQlqc2ItPnNfc2VxdWVuY2UgPSBodG9ubChqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOworCQlpZiAocmVzZXQpCisJCQlqc2ItPnNfc3RhcnQgPSAwOyAvKiB0aGlzIG1hcmtzIHRoZSBqb3VybmFsIGFzIGVtcHR5ICovCisJCWV4dDJmc19qb3VybmFsX3NiX2NzdW1fc2V0KGpvdXJuYWwsIGpzYik7CisJCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwl9CisJYnJlbHNlKGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKworCWlmIChmcyAmJiBmcy0+am91cm5hbF9pbykgeworCQlpZiAoZnMtPmlvICE9IGZzLT5qb3VybmFsX2lvKQorCQkJaW9fY2hhbm5lbF9jbG9zZShmcy0+am91cm5hbF9pbyk7CisJCWZzLT5qb3VybmFsX2lvID0gTlVMTDsKKwl9CisKKyNpZm5kZWYgVVNFX0lOT0RFX0lPCisJaWYgKGpvdXJuYWwtPmpfaW5vZGUpCisJCWV4dDJmc19mcmVlX21lbSgmam91cm5hbC0+al9pbm9kZSk7CisjZW5kaWYKKwlpZiAoam91cm5hbC0+al9mc19kZXYpCisJCWV4dDJmc19mcmVlX21lbSgmam91cm5hbC0+al9mc19kZXYpOworCWV4dDJmc19mcmVlX21lbSgmam91cm5hbCk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhhdCB0aGUgc3VwZXJibG9jayBmaWVsZHMgcmVnYXJkaW5nIHRoZQorICogam91cm5hbCBhcmUgY29uc2lzdGVudC4KKyAqLworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfY2hlY2tfZXh0M19qb3VybmFsKGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGZzLT5zdXBlcjsKKwlqb3VybmFsX3QgKmpvdXJuYWw7CisJaW50IHJlY292ZXIgPSBleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShmcy0+c3VwZXIpOworCWVycmNvZGVfdCByZXR2YWw7CisKKwkvKiBJZiB3ZSBkb24ndCBoYXZlIGFueSBqb3VybmFsIGZlYXR1cmVzLCBkb24ndCBkbyBhbnl0aGluZyBtb3JlICovCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbChzYikgJiYKKwkgICAgIXJlY292ZXIgJiYgc2ItPnNfam91cm5hbF9pbnVtID09IDAgJiYgc2ItPnNfam91cm5hbF9kZXYgPT0gMCAmJgorCSAgICB1dWlkX2lzX251bGwoc2ItPnNfam91cm5hbF91dWlkKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2pvdXJuYWwoZnMsICZqb3VybmFsKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2pvdXJuYWxfbG9hZChqb3VybmFsKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKworCS8qCisJICogV2Ugd2FudCB0byBtYWtlIHRoZSBmbGFncyBjb25zaXN0ZW50IGhlcmUuICBXZSB3aWxsIG5vdCBsZWF2ZSB3aXRoCisJICogbmVlZHNfcmVjb3Zlcnkgc2V0IGJ1dCBoYXNfam91cm5hbCBjbGVhci4gIFdlIGNhbid0IGdldCBpbiBhIGxvb3AKKwkgKiB3aXRoIC15LCAtbiwgb3IgLXAsIG9ubHkgaWYgYSB1c2VyIGlzbid0IG1ha2luZyB1cCB0aGVpciBtaW5kLgorCSAqLworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoc2IpKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfSk9VUk5BTF9GTEFHU19XUk9ORzsKKwkJZ290byBlcnI7CisJfQorCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsKHNiKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3Zlcnkoc2IpICYmCisJICAgIGpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19zdGFydCAhPSAwKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfSk9VUk5BTF9GTEFHU19XUk9ORzsKKwkJZ290byBlcnI7CisJfQorCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBuZWVkIHRvIGRvIHJlcGxheSB0aGUgam91cm5hbCwgY2hlY2sgdG8gc2VlIGlmCisJICogdGhlIGpvdXJuYWwncyBlcnJubyBpcyBzZXQ7IGlmIHNvLCB3ZSBuZWVkIHRvIG1hcmsgdGhlIGZpbGUKKwkgKiBzeXN0ZW0gYXMgYmVpbmcgY29ycnVwdCBhbmQgY2xlYXIgdGhlIGpvdXJuYWwncyBzX2Vycm5vLgorCSAqLworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3Zlcnkoc2IpICYmCisJICAgIGpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19lcnJubykgeworCQlmcy0+c3VwZXItPnNfc3RhdGUgfD0gRVhUMl9FUlJPUl9GUzsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQlqb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfZXJybm8gPSAwOworCQlleHQyZnNfam91cm5hbF9zYl9jc3VtX3NldChqb3VybmFsLCBqb3VybmFsLT5qX3N1cGVyYmxvY2spOworCQltYXJrX2J1ZmZlcl9kaXJ0eShqb3VybmFsLT5qX3NiX2J1ZmZlcik7CisJfQorCitlcnI6CisJZXh0MmZzX2pvdXJuYWxfcmVsZWFzZShmcywgam91cm5hbCwgMCwgcmV0dmFsID8gMSA6IDApOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmVjb3Zlcl9leHQzX2pvdXJuYWwoZXh0Ml9maWxzeXMgZnMpCit7CisJam91cm5hbF90ICpqb3VybmFsOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlqb3VybmFsX2luaXRfcmV2b2tlX2NhY2hlcygpOworCXJldHZhbCA9IGV4dDJmc19nZXRfam91cm5hbChmcywgJmpvdXJuYWwpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfam91cm5hbF9sb2FkKGpvdXJuYWwpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmV0dmFsID0gam91cm5hbF9pbml0X3Jldm9rZShqb3VybmFsLCAxMDI0KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCXJldHZhbCA9IC1qb3VybmFsX3JlY292ZXIoam91cm5hbCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoam91cm5hbC0+al9mYWlsZWRfY29tbWl0KSB7CisJCWpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19lcnJubyA9IC1FSU5WQUw7CisJCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwl9CisKK2Vycm91dDoKKwlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlKGpvdXJuYWwpOworCWpvdXJuYWxfZGVzdHJveV9yZXZva2VfY2FjaGVzKCk7CisJZXh0MmZzX2pvdXJuYWxfcmVsZWFzZShmcywgam91cm5hbCwgMSwgMCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19ydW5fZXh0M19qb3VybmFsKGV4dDJfZmlsc3lzICpmc3ApCit7CisJZXh0Ml9maWxzeXMgZnMgPSAqZnNwOworCWlvX21hbmFnZXIgaW9fcHRyID0gZnMtPmlvLT5tYW5hZ2VyOworCWVycmNvZGVfdAlyZXR2YWwsIHJlY292ZXJfcmV0dmFsOworCWlvX3N0YXRzCXN0YXRzID0gMDsKKwl1bnNpZ25lZCBsb25nIGxvbmcga2J5dGVzX3dyaXR0ZW4gPSAwOworCWNoYXIgKmZzbmFtZTsKKwlpbnQgZnNmbGFnczsKKwlpbnQgZnNibG9ja3NpemU7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9GSUxFX1JPOworCisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19ESVJUWSkKKwkJZXh0MmZzX2ZsdXNoKGZzKTsJLyogRm9yY2Ugb3V0IGFueSBtb2RpZmljYXRpb25zICovCisKKwlyZWNvdmVyX3JldHZhbCA9IHJlY292ZXJfZXh0M19qb3VybmFsKGZzKTsKKworCS8qCisJICogUmVsb2FkIHRoZSBmaWxlc3lzdGVtIGNvbnRleHQgdG8gZ2V0IHVwLXRvLWRhdGUgZGF0YSBmcm9tIGRpc2sKKwkgKiBiZWNhdXNlIGpvdXJuYWwgcmVjb3Zlcnkgd2lsbCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gdW5kZXIgdXMuCisJICovCisJaWYgKGZzLT5zdXBlci0+c19rYnl0ZXNfd3JpdHRlbiAmJgorCSAgICBmcy0+aW8tPm1hbmFnZXItPmdldF9zdGF0cykKKwkJZnMtPmlvLT5tYW5hZ2VyLT5nZXRfc3RhdHMoZnMtPmlvLCAmc3RhdHMpOworCWlmIChzdGF0cyAmJiBzdGF0cy0+Ynl0ZXNfd3JpdHRlbikKKwkJa2J5dGVzX3dyaXR0ZW4gPSBzdGF0cy0+Ynl0ZXNfd3JpdHRlbiA+PiAxMDsKKworCWV4dDJmc19tbXBfc3RvcChmcyk7CisJZnNuYW1lID0gc3RyZHVwKGZzLT5kZXZpY2VfbmFtZSk7CisJZnNmbGFncyA9IGZzLT5mbGFnczsKKwlmc2Jsb2Nrc2l6ZSA9IGZzLT5ibG9ja3NpemU7CisJZXh0MmZzX2ZyZWUoZnMpOworCXJldHZhbCA9IGV4dDJmc19vcGVuKGZzbmFtZSwgZnNmbGFncywKKwkJCSAgICAgMCwgZnNibG9ja3NpemUsIGlvX3B0ciwKKwkJCSAgICAgZnNwKTsKKwlmcmVlKGZzbmFtZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWZzID0gKmZzcDsKKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCWZzLT5zdXBlci0+c19rYnl0ZXNfd3JpdHRlbiArPSBrYnl0ZXNfd3JpdHRlbjsKKworCS8qIFNldCB0aGUgc3VwZXJibG9jayBmbGFncyAqLworCWV4dDJmc19jbGVhcl9yZWNvdmVyKGZzLCByZWNvdmVyX3JldHZhbCAhPSAwKTsKKworCS8qCisJICogRG8gb25lIGxhc3Qgc2FuaXR5IGNoZWNrLCBhbmQgcHJvcGFnYXRlIGpvdXJuYWwtPnNfZXJybm8gdG8KKwkgKiB0aGUgRVhUMl9FUlJPUl9GUyBmbGFnIGluIHRoZSBmcyBzdXBlcmJsb2NrIGlmIG5lZWRlZC4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfY2hlY2tfZXh0M19qb3VybmFsKGZzKTsKKwlyZXR1cm4gcmV0dmFsID8gcmV0dmFsIDogcmVjb3Zlcl9yZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfb3Blbl9qb3VybmFsKGV4dDJfZmlsc3lzIGZzLCBqb3VybmFsX3QgKipqKQoreworCWpvdXJuYWxfdCAqam91cm5hbDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJam91cm5hbF9pbml0X3Jldm9rZV9jYWNoZXMoKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2pvdXJuYWwoZnMsICZqb3VybmFsKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2pvdXJuYWxfbG9hZChqb3VybmFsKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCXJldHZhbCA9IGpvdXJuYWxfaW5pdF9yZXZva2Uoam91cm5hbCwgMTAyNCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoam91cm5hbC0+al9mYWlsZWRfY29tbWl0KSB7CisJCWpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19lcnJubyA9IC1FSU5WQUw7CisJCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwl9CisKKwkqaiA9IGpvdXJuYWw7CisJcmV0dXJuIDA7CisKK2Vycm91dDoKKwlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlKGpvdXJuYWwpOworCWpvdXJuYWxfZGVzdHJveV9yZXZva2VfY2FjaGVzKCk7CisJZXh0MmZzX2pvdXJuYWxfcmVsZWFzZShmcywgam91cm5hbCwgMSwgMCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19jbG9zZV9qb3VybmFsKGV4dDJfZmlsc3lzIGZzLCBqb3VybmFsX3QgKipqKQoreworCWpvdXJuYWxfdCAqam91cm5hbCA9ICpqOworCisJam91cm5hbF9kZXN0cm95X3Jldm9rZShqb3VybmFsKTsKKwlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlX2NhY2hlcygpOworCWV4dDJmc19qb3VybmFsX3JlbGVhc2UoZnMsIGpvdXJuYWwsIDAsIDApOworCSpqID0gTlVMTDsKKworCXJldHVybiAwOworfQorCit2b2lkIGpiZDJfY29tbWl0X2Jsb2NrX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwlzdHJ1Y3QgY29tbWl0X2hlYWRlciAqaDsKKwlfX3UzMiBjc3VtOworCisJaWYgKCFqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGopKQorCQlyZXR1cm47CisKKwloID0gKHN0cnVjdCBjb21taXRfaGVhZGVyICopKGJoLT5iX2RhdGEpOworCWgtPmhfY2hrc3VtX3R5cGUgPSAwOworCWgtPmhfY2hrc3VtX3NpemUgPSAwOworCWgtPmhfY2hrc3VtWzBdID0gMDsKKwljc3VtID0gamJkMl9jaGtzdW0oaiwgai0+al9jc3VtX3NlZWQsIGJoLT5iX2RhdGEsIGotPmpfYmxvY2tzaXplKTsKKwloLT5oX2Noa3N1bVswXSA9IGV4dDJmc19jcHVfdG9fYmUzMihjc3VtKTsKK30KKwordm9pZCBqYmQyX3Jldm9rZV9jc3VtX3NldChqb3VybmFsX3QgKmosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCit7CisJc3RydWN0IGpvdXJuYWxfcmV2b2tlX3RhaWwgKnRhaWw7CisJX191MzIgY3N1bTsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuOworCisJdGFpbCA9IChzdHJ1Y3Qgam91cm5hbF9yZXZva2VfdGFpbCAqKShiaC0+Yl9kYXRhICsgai0+al9ibG9ja3NpemUgLQorCQkJc2l6ZW9mKHN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsKSk7CisJdGFpbC0+cl9jaGVja3N1bSA9IDA7CisJY3N1bSA9IGpiZDJfY2hrc3VtKGosIGotPmpfY3N1bV9zZWVkLCBiaC0+Yl9kYXRhLCBqLT5qX2Jsb2Nrc2l6ZSk7CisJdGFpbC0+cl9jaGVja3N1bSA9IGV4dDJmc19jcHVfdG9fYmUzMihjc3VtKTsKK30KKwordm9pZCBqYmQyX2Rlc2NyX2Jsb2NrX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwlzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsICp0YWlsOworCV9fdTMyIGNzdW07CisKKwlpZiAoIWpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoaikpCisJCXJldHVybjsKKworCXRhaWwgPSAoc3RydWN0IGpvdXJuYWxfYmxvY2tfdGFpbCAqKShiaC0+Yl9kYXRhICsgai0+al9ibG9ja3NpemUgLQorCQkJc2l6ZW9mKHN0cnVjdCBqb3VybmFsX2Jsb2NrX3RhaWwpKTsKKwl0YWlsLT50X2NoZWNrc3VtID0gMDsKKwljc3VtID0gamJkMl9jaGtzdW0oaiwgai0+al9jc3VtX3NlZWQsIGJoLT5iX2RhdGEsIGotPmpfYmxvY2tzaXplKTsKKwl0YWlsLT50X2NoZWNrc3VtID0gZXh0MmZzX2NwdV90b19iZTMyKGNzdW0pOworfQorCit2b2lkIGpiZDJfYmxvY2tfdGFnX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwgam91cm5hbF9ibG9ja190YWdfdCAqdGFnLAorCQkJICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBfX3UzMiBzZXF1ZW5jZSkKK3sKKwlqb3VybmFsX2Jsb2NrX3RhZzNfdCAqdGFnMyA9IChqb3VybmFsX2Jsb2NrX3RhZzNfdCAqKXRhZzsKKwlfX3UzMiBjc3VtMzI7CisJX19iZTMyIHNlcTsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuOworCisJc2VxID0gZXh0MmZzX2NwdV90b19iZTMyKHNlcXVlbmNlKTsKKwljc3VtMzIgPSBqYmQyX2Noa3N1bShqLCBqLT5qX2NzdW1fc2VlZCwgKF9fdTggKikmc2VxLCBzaXplb2Yoc2VxKSk7CisJY3N1bTMyID0gamJkMl9jaGtzdW0oaiwgY3N1bTMyLCBiaC0+Yl9kYXRhLCBiaC0+Yl9zaXplKTsKKworCWlmIChqZnNfaGFzX2ZlYXR1cmVfY3N1bTMoaikpCisJCXRhZzMtPnRfY2hlY2tzdW0gPSBleHQyZnNfY3B1X3RvX2JlMzIoY3N1bTMyKTsKKwllbHNlCisJCXRhZy0+dF9jaGVja3N1bSA9IGV4dDJmc19jcHVfdG9fYmUxNihjc3VtMzIpOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9qb3VybmFsLmggYi9lMmZzcHJvZ3MvZGVidWdmcy9qb3VybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiNjM4ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2pvdXJuYWwuaApAQCAtMCwwICsxLDI1IEBACisvKgorICogam91cm5hbC5oCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIEFuZHJlYXMgRGlsZ2VyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgVGhlb2RvcmUgVHMnbworICoKKyAqIFBhcnRzIG9mIHRoZSBjb2RlIGFyZSBiYXNlZCBvbiBmcy9qZnMvam91cm5hbC5jIGJ5IFN0ZXBoZW4gQy4gVHdlZWRpZQorICogQ29weXJpZ2h0IChDKSAxOTk5IFJlZCBIYXQgU29mdHdhcmUKKyAqCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIG9yIGF0IHlvdXIgZGlzY3JldGlvbgorICogYW55IGxhdGVyIHZlcnNpb24uCisgKi8KKworI2luY2x1ZGUgImpmc191c2VyLmgiCisKKy8qIGpvdXJuYWwuYyAqLworZXJyY29kZV90IGV4dDJmc19vcGVuX2pvdXJuYWwoZXh0Ml9maWxzeXMgZnMsIGpvdXJuYWxfdCAqKmopOworZXJyY29kZV90IGV4dDJmc19jbG9zZV9qb3VybmFsKGV4dDJfZmlsc3lzIGZzLCBqb3VybmFsX3QgKipqKTsKK2VycmNvZGVfdCBleHQyZnNfcnVuX2V4dDNfam91cm5hbChleHQyX2ZpbHN5cyAqZnMpOwordm9pZCBqYmQyX2NvbW1pdF9ibG9ja19jc3VtX3NldChqb3VybmFsX3QgKmosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwordm9pZCBqYmQyX3Jldm9rZV9jc3VtX3NldChqb3VybmFsX3QgKmosIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwordm9pZCBqYmQyX2Rlc2NyX2Jsb2NrX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7Cit2b2lkIGpiZDJfYmxvY2tfdGFnX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwgam91cm5hbF9ibG9ja190YWdfdCAqdGFnLAorCQkJICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoLCBfX3UzMiBzZXF1ZW5jZSk7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9sb2dkdW1wLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9sb2dkdW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzMjAxYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL2xvZ2R1bXAuYwpAQCAtMCwwICsxLDczMiBAQAorLyoKKyAqIGxvZ2R1bXAuYyAtLS0gZHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGpvdXJuYWwgb3V0IHRvIGEgZmlsZQorICoKKyAqIEF1dGhybzogU3RlcGhlbiBDLiBUd2VlZGllLCAyMDAxICA8c2N0QHJlZGhhdC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgUmVkIEhhdCwgSW5jLgorICogQmFzZWQgb24gcG9ydGlvbnMgIENvcHlyaWdodCAoQykgMTk5NCBUaGVvZG9yZSBUcydvLgorICoKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1dGltZS5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKworI2luY2x1ZGUgImRlYnVnZnMuaCIKKyNpbmNsdWRlICJibGtpZC9ibGtpZC5oIgorI2luY2x1ZGUgImpmc191c2VyLmgiCisjaW5jbHVkZSA8dXVpZC91dWlkLmg+CisKK2VudW0gam91cm5hbF9sb2NhdGlvbiB7Sk9VUk5BTF9JU19JTlRFUk5BTCwgSk9VUk5BTF9JU19FWFRFUk5BTH07CisKKyNkZWZpbmUgQU5ZX0JMT0NLICgoYmxrNjRfdCkgLTEpCisKK3N0YXRpYyBpbnQJCWR1bXBfYWxsLCBkdW1wX29sZCwgZHVtcF9jb250ZW50cywgZHVtcF9kZXNjcmlwdG9yczsKK3N0YXRpYyBibGs2NF90CQlibG9ja190b19kdW1wLCBiaXRtYXBfdG9fZHVtcCwgaW5vZGVfYmxvY2tfdG9fZHVtcDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQJZ3JvdXBfdG9fZHVtcCwgaW5vZGVfb2Zmc2V0X3RvX2R1bXA7CitzdGF0aWMgZXh0Ml9pbm9fdAlpbm9kZV90b19kdW1wOworCitzdHJ1Y3Qgam91cm5hbF9zb3VyY2UKK3sKKwllbnVtIGpvdXJuYWxfbG9jYXRpb24gd2hlcmU7CisJaW50IGZkOworCWV4dDJfZmlsZV90IGZpbGU7Cit9OworCitzdGF0aWMgdm9pZCBkdW1wX2pvdXJuYWwoY2hhciAqLCBGSUxFICosIHN0cnVjdCBqb3VybmFsX3NvdXJjZSAqKTsKKworc3RhdGljIHZvaWQgZHVtcF9kZXNjcmlwdG9yX2Jsb2NrKEZJTEUgKiwgc3RydWN0IGpvdXJuYWxfc291cmNlICosCisJCQkJICBjaGFyICosIGpvdXJuYWxfc3VwZXJibG9ja190ICosCisJCQkJICB1bnNpZ25lZCBpbnQgKiwgaW50LCB0aWRfdCk7CisKK3N0YXRpYyB2b2lkIGR1bXBfcmV2b2tlX2Jsb2NrKEZJTEUgKiwgY2hhciAqLCBqb3VybmFsX3N1cGVyYmxvY2tfdCAqLAorCQkJCSAgdW5zaWduZWQgaW50LCBpbnQsIHRpZF90KTsKKworc3RhdGljIHZvaWQgZHVtcF9tZXRhZGF0YV9ibG9jayhGSUxFICosIHN0cnVjdCBqb3VybmFsX3NvdXJjZSAqLAorCQkJCWpvdXJuYWxfc3VwZXJibG9ja190KiwKKwkJCQl1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludCwgdW5zaWduZWQgaW50LAorCQkJCWludCwgdGlkX3QpOworCitzdGF0aWMgdm9pZCBkb19oZXhkdW1wIChGSUxFICosIGNoYXIgKiwgaW50KTsKKworI2RlZmluZSBXUkFQKGpzYiwgYmxvY2tucikJCQkJCVwKKwlpZiAoYmxvY2tuciA+PSBiZTMyX3RvX2NwdSgoanNiKS0+c19tYXhsZW4pKQkJXAorCQlibG9ja25yIC09IChiZTMyX3RvX2NwdSgoanNiKS0+c19tYXhsZW4pIC0JXAorCQkJICAgIGJlMzJfdG9fY3B1KChqc2IpLT5zX2ZpcnN0KSk7CisKK3ZvaWQgZG9fbG9nZHVtcChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CQljOworCWludAkJcmV0dmFsOworCWNoYXIJCSpvdXRfZm47CisJRklMRQkJKm91dF9maWxlOworCisJY2hhcgkJKmlub2RlX3NwZWMgPSBOVUxMOworCWNoYXIJCSpqb3VybmFsX2ZuID0gTlVMTDsKKwlpbnQJCWpvdXJuYWxfZmQgPSAwOworCWludAkJdXNlX3NiID0gMDsKKwlleHQyX2lub190CWpvdXJuYWxfaW51bTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBqb3VybmFsX2lub2RlOworCWV4dDJfZmlsZV90IAlqb3VybmFsX2ZpbGU7CisJY2hhcgkJKnRtcDsKKwlzdHJ1Y3Qgam91cm5hbF9zb3VyY2Ugam91cm5hbF9zb3VyY2U7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKmVzID0gTlVMTDsKKworCWpvdXJuYWxfc291cmNlLndoZXJlID0gSk9VUk5BTF9JU19JTlRFUk5BTDsKKwlqb3VybmFsX3NvdXJjZS5mZCA9IDA7CisJam91cm5hbF9zb3VyY2UuZmlsZSA9IDA7CisJZHVtcF9hbGwgPSAwOworCWR1bXBfb2xkID0gMDsKKwlkdW1wX2NvbnRlbnRzID0gMDsKKwlkdW1wX2Rlc2NyaXB0b3JzID0gMTsKKwlibG9ja190b19kdW1wID0gQU5ZX0JMT0NLOworCWJpdG1hcF90b19kdW1wID0gLTE7CisJaW5vZGVfYmxvY2tfdG9fZHVtcCA9IEFOWV9CTE9DSzsKKwlpbm9kZV90b19kdW1wID0gLTE7CisKKwlyZXNldF9nZXRvcHQoKTsKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJhYjpjaTpmOk9zIikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnYSc6CisJCQlkdW1wX2FsbCsrOworCQkJYnJlYWs7CisJCWNhc2UgJ2InOgorCQkJYmxvY2tfdG9fZHVtcCA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wKSB7CisJCQkJY29tX2Vycihhcmd2WzBdLCAwLAorCQkJCQkiQmFkIGJsb2NrIG51bWJlciAtICVzIiwgb3B0YXJnKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQlkdW1wX2Rlc2NyaXB0b3JzID0gMDsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKwkJCWR1bXBfY29udGVudHMrKzsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWpvdXJuYWxfZm4gPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlpbm9kZV9zcGVjID0gb3B0YXJnOworCQkJZHVtcF9kZXNjcmlwdG9ycyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSAnTyc6CisJCQlkdW1wX29sZCsrOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJdXNlX3NiKys7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWdvdG8gcHJpbnRfdXNhZ2U7CisJCX0KKwl9CisJaWYgKG9wdGluZCAhPSBhcmdjICYmIG9wdGluZCAhPSBhcmdjLTEpIHsKKwkJZ290byBwcmludF91c2FnZTsKKwl9CisKKwlpZiAoY3VycmVudF9mcykKKwkJZXMgPSBjdXJyZW50X2ZzLT5zdXBlcjsKKworCWlmIChpbm9kZV9zcGVjKSB7CisJCWludCBpbm9kZV9ncm91cCwgZ3JvdXBfb2Zmc2V0LCBpbm9kZXNfcGVyX2Jsb2NrOworCisJCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQkJcmV0dXJuOworCisJCWlub2RlX3RvX2R1bXAgPSBzdHJpbmdfdG9faW5vZGUoaW5vZGVfc3BlYyk7CisJCWlmICghaW5vZGVfdG9fZHVtcCkKKwkJCXJldHVybjsKKworCQlpbm9kZV9ncm91cCA9ICgoaW5vZGVfdG9fZHVtcCAtIDEpCisJCQkgICAgICAgLyBlcy0+c19pbm9kZXNfcGVyX2dyb3VwKTsKKwkJZ3JvdXBfb2Zmc2V0ID0gKChpbm9kZV90b19kdW1wIC0gMSkKKwkJCQklIGVzLT5zX2lub2Rlc19wZXJfZ3JvdXApOworCQlpbm9kZXNfcGVyX2Jsb2NrID0gKGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZQorCQkJCSAgICAvIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCisJCWlub2RlX2Jsb2NrX3RvX2R1bXAgPQorCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhjdXJyZW50X2ZzLCBpbm9kZV9ncm91cCkgKworCQkJKGdyb3VwX29mZnNldCAvIGlub2Rlc19wZXJfYmxvY2spOworCQlpbm9kZV9vZmZzZXRfdG9fZHVtcCA9ICgoZ3JvdXBfb2Zmc2V0ICUgaW5vZGVzX3Blcl9ibG9jaykKKwkJCQkJKiBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwkJcHJpbnRmKCJJbm9kZSAldSBpcyBhdCBncm91cCAldSwgYmxvY2sgJWxsdSwgb2Zmc2V0ICV1XG4iLAorCQkgICAgICAgaW5vZGVfdG9fZHVtcCwgaW5vZGVfZ3JvdXAsCisJCSAgICAgICBpbm9kZV9ibG9ja190b19kdW1wLCBpbm9kZV9vZmZzZXRfdG9fZHVtcCk7CisJfQorCisJaWYgKG9wdGluZCA9PSBhcmdjKSB7CisJCW91dF9maWxlID0gc3Rkb3V0OworCX0gZWxzZSB7CisJCW91dF9mbiA9IGFyZ3Zbb3B0aW5kXTsKKwkJb3V0X2ZpbGUgPSBmb3BlbihvdXRfZm4sICJ3Iik7CisJCWlmICghb3V0X2ZpbGUpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgZXJybm8sICJ3aGlsZSBvcGVuaW5nICVzIGZvciBsb2dkdW1wIiwKKwkJCQlvdXRfZm4pOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwl9CisKKwlpZiAoYmxvY2tfdG9fZHVtcCAhPSBBTllfQkxPQ0sgJiYgY3VycmVudF9mcyAhPSBOVUxMKSB7CisJCWdyb3VwX3RvX2R1bXAgPSAoKGJsb2NrX3RvX2R1bXAgLQorCQkJCSAgZXMtPnNfZmlyc3RfZGF0YV9ibG9jaykKKwkJCQkgLyBlcy0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKwkJYml0bWFwX3RvX2R1bXAgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhjdXJyZW50X2ZzLCBncm91cF90b19kdW1wKTsKKwl9CisKKwlpZiAoIWpvdXJuYWxfZm4gJiYgY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoam91cm5hbF9mbikgeworCQkvKiBTZXQgdXAgdG8gcmVhZCBqb3VybmFsIGZyb20gYSByZWd1bGFyIGZpbGUgc29tZXdoZXJlICovCisJCWpvdXJuYWxfZmQgPSBvcGVuKGpvdXJuYWxfZm4sIE9fUkRPTkxZLCAwKTsKKwkJaWYgKGpvdXJuYWxfZmQgPCAwKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIGVycm5vLCAid2hpbGUgb3BlbmluZyAlcyBmb3IgbG9nZHVtcCIsCisJCQkJam91cm5hbF9mbik7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCWpvdXJuYWxfc291cmNlLndoZXJlID0gSk9VUk5BTF9JU19FWFRFUk5BTDsKKwkJam91cm5hbF9zb3VyY2UuZmQgPSBqb3VybmFsX2ZkOworCX0gZWxzZSBpZiAoKGpvdXJuYWxfaW51bSA9IGVzLT5zX2pvdXJuYWxfaW51bSkpIHsKKwkJaWYgKHVzZV9zYikgeworCQkJaWYgKGVzLT5zX2pubF9iYWNrdXBfdHlwZSAhPSBFWFQzX0pOTF9CQUNLVVBfQkxPQ0tTKSB7CisJCQkJY29tX2Vycihhcmd2WzBdLCAwLAorCQkJCQkibm8gam91cm5hbCBiYWNrdXAgaW4gc3VwZXIgYmxvY2tcbiIpOworCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQkJbWVtc2V0KCZqb3VybmFsX2lub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwkJCW1lbWNweSgmam91cm5hbF9pbm9kZS5pX2Jsb2NrWzBdLCBlcy0+c19qbmxfYmxvY2tzLAorCQkJICAgICAgIEVYVDJfTl9CTE9DS1MqNCk7CisJCQlqb3VybmFsX2lub2RlLmlfc2l6ZV9oaWdoID0gZXMtPnNfam5sX2Jsb2Nrc1sxNV07CisJCQlqb3VybmFsX2lub2RlLmlfc2l6ZSA9IGVzLT5zX2pubF9ibG9ja3NbMTZdOworCQkJam91cm5hbF9pbm9kZS5pX2xpbmtzX2NvdW50ID0gMTsKKwkJCWpvdXJuYWxfaW5vZGUuaV9tb2RlID0gTElOVVhfU19JRlJFRyB8IDA2MDA7CisJCX0gZWxzZSB7CisJCQlpZiAoZGVidWdmc19yZWFkX2lub2RlKGpvdXJuYWxfaW51bSwgJmpvdXJuYWxfaW5vZGUsCisJCQkJCSAgICAgICBhcmd2WzBdKSkKKwkJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19maWxlX29wZW4yKGN1cnJlbnRfZnMsIGpvdXJuYWxfaW51bSwKKwkJCQkJICAgJmpvdXJuYWxfaW5vZGUsIDAsICZqb3VybmFsX2ZpbGUpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIG9wZW5pbmcgZXh0MiBmaWxlIik7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlqb3VybmFsX3NvdXJjZS53aGVyZSA9IEpPVVJOQUxfSVNfSU5URVJOQUw7CisJCWpvdXJuYWxfc291cmNlLmZpbGUgPSBqb3VybmFsX2ZpbGU7CisJfSBlbHNlIHsKKwkJY2hhciB1dWlkWzM3XTsKKworCQl1dWlkX3VucGFyc2UoZXMtPnNfam91cm5hbF91dWlkLCB1dWlkKTsKKwkJam91cm5hbF9mbiA9IGJsa2lkX2dldF9kZXZuYW1lKE5VTEwsICJVVUlEIiwgdXVpZCk7CisJCWlmICgham91cm5hbF9mbikKKwkJCQlqb3VybmFsX2ZuID0gYmxraWRfZGV2bm9fdG9fZGV2bmFtZShlcy0+c19qb3VybmFsX2Rldik7CisJCWlmICgham91cm5hbF9mbikgeworCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiZmlsZXN5c3RlbSBoYXMgbm8gam91cm5hbCIpOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJam91cm5hbF9mZCA9IG9wZW4oam91cm5hbF9mbiwgT19SRE9OTFksIDApOworCQlpZiAoam91cm5hbF9mZCA8IDApIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgZXJybm8sICJ3aGlsZSBvcGVuaW5nICVzIGZvciBsb2dkdW1wIiwKKwkJCQlqb3VybmFsX2ZuKTsKKwkJCWZyZWUoam91cm5hbF9mbik7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlmcHJpbnRmKG91dF9maWxlLCAiVXNpbmcgZXh0ZXJuYWwgam91cm5hbCBmb3VuZCBhdCAlc1xuIiwKKwkJCWpvdXJuYWxfZm4pOworCQlmcmVlKGpvdXJuYWxfZm4pOworCQlqb3VybmFsX3NvdXJjZS53aGVyZSA9IEpPVVJOQUxfSVNfRVhURVJOQUw7CisJCWpvdXJuYWxfc291cmNlLmZkID0gam91cm5hbF9mZDsKKwl9CisKKwlkdW1wX2pvdXJuYWwoYXJndlswXSwgb3V0X2ZpbGUsICZqb3VybmFsX3NvdXJjZSk7CisKKwlpZiAoam91cm5hbF9zb3VyY2Uud2hlcmUgPT0gSk9VUk5BTF9JU19JTlRFUk5BTCkKKwkJZXh0MmZzX2ZpbGVfY2xvc2Uoam91cm5hbF9maWxlKTsKKwllbHNlCisJCWNsb3NlKGpvdXJuYWxfZmQpOworCitlcnJvdXQ6CisJaWYgKG91dF9maWxlICYmIChvdXRfZmlsZSAhPSBzdGRvdXQpKQorCQlmY2xvc2Uob3V0X2ZpbGUpOworCisJcmV0dXJuOworCitwcmludF91c2FnZToKKwlmcHJpbnRmKHN0ZGVyciwgIiVzOiBVc2FnZTogbG9nZHVtcCBbLWFjc09dIFstYjxibG9jaz5dIFstaTxmaWxlc3BlYz5dXG5cdCIKKwkJIlstZjxqb3VybmFsX2ZpbGU+XSBbb3V0cHV0X2ZpbGVdXG4iLCBhcmd2WzBdKTsKK30KKworCitzdGF0aWMgaW50IHJlYWRfam91cm5hbF9ibG9jayhjb25zdCBjaGFyICpjbWQsIHN0cnVjdCBqb3VybmFsX3NvdXJjZSAqc291cmNlLAorCQkJICAgICAgZXh0Ml9sb2ZmX3Qgb2Zmc2V0LCBjaGFyICpidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworCWludCByZXR2YWw7CisJdW5zaWduZWQgaW50IGdvdDsKKworCWlmIChzb3VyY2UtPndoZXJlID09IEpPVVJOQUxfSVNfRVhURVJOQUwpIHsKKwkJaWYgKGxzZWVrKHNvdXJjZS0+ZmQsIG9mZnNldCwgU0VFS19TRVQpIDwgMCkgeworCQkJcmV0dmFsID0gZXJybm87CisJCQlnb3RvIHNlZWtfZXJyOworCQl9CisJCXJldHZhbCA9IHJlYWQoc291cmNlLT5mZCwgYnVmLCBzaXplKTsKKwkJaWYgKHJldHZhbCA8IDApIHsKKwkJCXJldHZhbCA9IGVycm5vOworCQkJZ290byByZWFkX2VycjsKKwkJfQorCQlnb3QgPSByZXR2YWw7CisJCXJldHZhbCA9IDA7CisJfSBlbHNlIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbGVfbGxzZWVrKHNvdXJjZS0+ZmlsZSwgb2Zmc2V0LAorCQkJCQkgICAgRVhUMl9TRUVLX1NFVCwgTlVMTCk7CisJCWlmIChyZXR2YWwpIHsKKwkJc2Vla19lcnI6CisJCQljb21fZXJyKGNtZCwgcmV0dmFsLCAid2hpbGUgc2Vla2luZyBpbiByZWFkaW5nIGpvdXJuYWwiKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX2ZpbGVfcmVhZChzb3VyY2UtPmZpbGUsIGJ1Ziwgc2l6ZSwgJmdvdCk7CisJCWlmIChyZXR2YWwpIHsKKwkJcmVhZF9lcnI6CisJCQljb21fZXJyKGNtZCwgcmV0dmFsLCAid2hpbGUgcmVhZGluZyBqb3VybmFsIik7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJfQorCWlmIChnb3QgIT0gc2l6ZSkgeworCQljb21fZXJyKGNtZCwgMCwgInNob3J0IHJlYWQgKHJlYWQgJXUsIGV4cGVjdGVkICV1KSAiCisJCQkid2hpbGUgcmVhZGluZyBqb3VybmFsIiwgZ290LCBzaXplKTsKKwkJcmV0dmFsID0gLTE7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICp0eXBlX3RvX25hbWUoaW50IGJ0eXBlKQoreworCXN3aXRjaCAoYnR5cGUpIHsKKwljYXNlIEpGU19ERVNDUklQVE9SX0JMT0NLOgorCQlyZXR1cm4gImRlc2NyaXB0b3IgYmxvY2siOworCWNhc2UgSkZTX0NPTU1JVF9CTE9DSzoKKwkJcmV0dXJuICJjb21taXQgYmxvY2siOworCWNhc2UgSkZTX1NVUEVSQkxPQ0tfVjE6CisJCXJldHVybiAiVjEgc3VwZXJibG9jayI7CisJY2FzZSBKRlNfU1VQRVJCTE9DS19WMjoKKwkJcmV0dXJuICJWMiBzdXBlcmJsb2NrIjsKKwljYXNlIEpGU19SRVZPS0VfQkxPQ0s6CisJCXJldHVybiAicmV2b2tlIHRhYmxlIjsKKwl9CisJcmV0dXJuICJ1bnJlY29nbmlzZWQgdHlwZSI7Cit9CisKKworc3RhdGljIHZvaWQgZHVtcF9qb3VybmFsKGNoYXIgKmNtZG5hbWUsIEZJTEUgKm91dF9maWxlLAorCQkJIHN0cnVjdCBqb3VybmFsX3NvdXJjZSAqc291cmNlKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYjsKKwljaGFyCQkJanNiX2J1ZmZlclsxMDI0XTsKKwljaGFyCQkJYnVmWzgxOTJdOworCWpvdXJuYWxfc3VwZXJibG9ja190CSpqc2I7CisJdW5zaWduZWQgaW50CQlibG9ja3NpemUgPSAxMDI0OworCWludAkJCXJldHZhbDsKKwlfX3UzMgkJCW1hZ2ljLCBzZXF1ZW5jZSwgYmxvY2t0eXBlOworCWpvdXJuYWxfaGVhZGVyX3QJKmhlYWRlcjsKKwl0aWRfdAkJCXRyYW5zYWN0aW9uOworCXVuc2lnbmVkIGludAkJYmxvY2tuciA9IDA7CisKKwkvKiBGaXJzdCwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlJ3MgYW4gZXh0MiBzdXBlcmJsb2NrIGhlYWRlciAqLworCXJldHZhbCA9IHJlYWRfam91cm5hbF9ibG9jayhjbWRuYW1lLCBzb3VyY2UsIDAsIGJ1ZiwgMjA0OCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuOworCisJanNiID0gKGpvdXJuYWxfc3VwZXJibG9ja190ICopIGJ1ZjsKKwlzYiA9IChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKSAoYnVmKzEwMjQpOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCWlmIChzYi0+c19tYWdpYyA9PSBleHQyZnNfc3dhYjE2KEVYVDJfU1VQRVJfTUFHSUMpKQorCQlleHQyZnNfc3dhcF9zdXBlcihzYik7CisjZW5kaWYKKworCWlmICgoYmUzMl90b19jcHUoanNiLT5zX2hlYWRlci5oX21hZ2ljKSAhPSBKRlNfTUFHSUNfTlVNQkVSKSAmJgorCSAgICAoc2ItPnNfbWFnaWMgPT0gRVhUMl9TVVBFUl9NQUdJQykgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfZGV2KHNiKSkgeworCQlibG9ja3NpemUgPSBFWFQyX0JMT0NLX1NJWkUoc2IpOworCQlibG9ja25yID0gKGJsb2Nrc2l6ZSA9PSAxMDI0KSA/IDIgOiAxOworCQl1dWlkX3VucGFyc2Uoc2ItPnNfdXVpZCwganNiX2J1ZmZlcik7CisJCWZwcmludGYob3V0X2ZpbGUsICJFeHQyIHN1cGVyYmxvY2sgaGVhZGVyIGZvdW5kLlxuIik7CisJCWlmIChkdW1wX2FsbCkgeworCQkJZnByaW50ZihvdXRfZmlsZSwgIlx0dXVpZD0lc1xuIiwganNiX2J1ZmZlcik7CisJCQlmcHJpbnRmKG91dF9maWxlLCAiXHRibG9ja3NpemU9JWRcbiIsIGJsb2Nrc2l6ZSk7CisJCQlmcHJpbnRmKG91dF9maWxlLCAiXHRqb3VybmFsIGRhdGEgc2l6ZSAlbHVcbiIsCisJCQkJKHVuc2lnbmVkIGxvbmcpIGV4dDJmc19ibG9ja3NfY291bnQoc2IpKTsKKwkJfQorCX0KKworCS8qIE5leHQsIHJlYWQgdGhlIGpvdXJuYWwgc3VwZXJibG9jayAqLworCXJldHZhbCA9IHJlYWRfam91cm5hbF9ibG9jayhjbWRuYW1lLCBzb3VyY2UsCisJCQkJICAgICgoZXh0Ml9sb2ZmX3QpIGJsb2NrbnIpICogYmxvY2tzaXplLAorCQkJCSAgICBqc2JfYnVmZmVyLCAxMDI0KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm47CisKKwlqc2IgPSAoam91cm5hbF9zdXBlcmJsb2NrX3QgKikganNiX2J1ZmZlcjsKKwlpZiAoYmUzMl90b19jcHUoanNiLT5zX2hlYWRlci5oX21hZ2ljKSAhPSBKRlNfTUFHSUNfTlVNQkVSKSB7CisJCWZwcmludGYob3V0X2ZpbGUsCisJCQkiSm91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlciBpbnZhbGlkIVxuIik7CisJCXJldHVybjsKKwl9CisJYmxvY2tzaXplID0gYmUzMl90b19jcHUoanNiLT5zX2Jsb2Nrc2l6ZSk7CisJdHJhbnNhY3Rpb24gPSBiZTMyX3RvX2NwdShqc2ItPnNfc2VxdWVuY2UpOworCWJsb2NrbnIgPSBiZTMyX3RvX2NwdShqc2ItPnNfc3RhcnQpOworCisJZnByaW50ZihvdXRfZmlsZSwgIkpvdXJuYWwgc3RhcnRzIGF0IGJsb2NrICV1LCB0cmFuc2FjdGlvbiAldVxuIiwKKwkJYmxvY2tuciwgdHJhbnNhY3Rpb24pOworCisJaWYgKCFibG9ja25yKSB7CisJCS8qIEVtcHR5IGpvdXJuYWwsIG5vdGhpbmcgdG8gZG8uICovCisJCWlmICghZHVtcF9vbGQpCisJCQlyZXR1cm47CisJCWVsc2UKKwkJCWJsb2NrbnIgPSAxOworCX0KKworCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IHJlYWRfam91cm5hbF9ibG9jayhjbWRuYW1lLCBzb3VyY2UsCisJCQkJKChleHQyX2xvZmZfdCkgYmxvY2tucikgKiBibG9ja3NpemUsCisJCQkJYnVmLCBibG9ja3NpemUpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuOworCisJCWhlYWRlciA9IChqb3VybmFsX2hlYWRlcl90ICopIGJ1ZjsKKworCQltYWdpYyA9IGJlMzJfdG9fY3B1KGhlYWRlci0+aF9tYWdpYyk7CisJCXNlcXVlbmNlID0gYmUzMl90b19jcHUoaGVhZGVyLT5oX3NlcXVlbmNlKTsKKwkJYmxvY2t0eXBlID0gYmUzMl90b19jcHUoaGVhZGVyLT5oX2Jsb2NrdHlwZSk7CisKKwkJaWYgKG1hZ2ljICE9IEpGU19NQUdJQ19OVU1CRVIpIHsKKwkJCWZwcmludGYgKG91dF9maWxlLCAiTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrICV1OiAiCisJCQkJICJlbmQgb2Ygam91cm5hbC5cbiIsIGJsb2NrbnIpOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKHNlcXVlbmNlICE9IHRyYW5zYWN0aW9uKSB7CisJCQlmcHJpbnRmIChvdXRfZmlsZSwgIkZvdW5kIHNlcXVlbmNlICV1IChub3QgJXUpIGF0ICIKKwkJCQkgImJsb2NrICV1OiBlbmQgb2Ygam91cm5hbC5cbiIsCisJCQkJIHNlcXVlbmNlLCB0cmFuc2FjdGlvbiwgYmxvY2tucik7CisJCQlpZiAoIWR1bXBfb2xkKQorCQkJCXJldHVybjsKKwkJfQorCisJCWlmIChkdW1wX2Rlc2NyaXB0b3JzKSB7CisJCQlmcHJpbnRmIChvdXRfZmlsZSwgIkZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlICV1LCAiCisJCQkJICJ0eXBlICV1ICglcykgYXQgYmxvY2sgJXVcbiIsCisJCQkJIHNlcXVlbmNlLCBibG9ja3R5cGUsCisJCQkJIHR5cGVfdG9fbmFtZShibG9ja3R5cGUpLCBibG9ja25yKTsKKwkJfQorCisJCXN3aXRjaCAoYmxvY2t0eXBlKSB7CisJCWNhc2UgSkZTX0RFU0NSSVBUT1JfQkxPQ0s6CisJCQlkdW1wX2Rlc2NyaXB0b3JfYmxvY2sob3V0X2ZpbGUsIHNvdXJjZSwgYnVmLCBqc2IsCisJCQkJCSAgICAgICZibG9ja25yLCBibG9ja3NpemUsCisJCQkJCSAgICAgIHRyYW5zYWN0aW9uKTsKKwkJCWNvbnRpbnVlOworCisJCWNhc2UgSkZTX0NPTU1JVF9CTE9DSzoKKwkJCXRyYW5zYWN0aW9uKys7CisJCQlibG9ja25yKys7CisJCQlXUkFQKGpzYiwgYmxvY2tucik7CisJCQljb250aW51ZTsKKworCQljYXNlIEpGU19SRVZPS0VfQkxPQ0s6CisJCQlkdW1wX3Jldm9rZV9ibG9jayhvdXRfZmlsZSwgYnVmLCBqc2IsCisJCQkJCSAgYmxvY2tuciwgYmxvY2tzaXplLAorCQkJCQkgIHRyYW5zYWN0aW9uKTsKKwkJCWJsb2NrbnIrKzsKKwkJCVdSQVAoanNiLCBibG9ja25yKTsKKwkJCWNvbnRpbnVlOworCisJCWRlZmF1bHQ6CisJCQlmcHJpbnRmIChvdXRfZmlsZSwgIlVuZXhwZWN0ZWQgYmxvY2sgdHlwZSAldSBhdCAiCisJCQkJICJibG9jayAldS5cbiIsIGJsb2NrdHlwZSwgYmxvY2tucik7CisJCQlyZXR1cm47CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGpvdXJuYWxfc3VwZXJfdGFnX2J5dGVzKGpvdXJuYWxfc3VwZXJibG9ja190ICpqc2IpCit7CisJc2l6ZV90IHN6OworCisJaWYgKEpTQl9IQVNfSU5DT01QQVRfRkVBVFVSRShqc2IsIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjMpKQorCQlyZXR1cm4gc2l6ZW9mKGpvdXJuYWxfYmxvY2tfdGFnM190KTsKKworCXN6ID0gc2l6ZW9mKGpvdXJuYWxfYmxvY2tfdGFnX3QpOworCisJaWYgKEpTQl9IQVNfSU5DT01QQVRfRkVBVFVSRShqc2IsIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjIpKQorCQlzeiArPSBzaXplb2YoX191MTYpOworCisJaWYgKEpTQl9IQVNfSU5DT01QQVRfRkVBVFVSRShqc2IsIEpGU19GRUFUVVJFX0lOQ09NUEFUXzY0QklUKSkKKwkJcmV0dXJuIHN6OworCisJcmV0dXJuIHN6IC0gc2l6ZW9mKF9fdTMyKTsKK30KKworc3RhdGljIHZvaWQgZHVtcF9kZXNjcmlwdG9yX2Jsb2NrKEZJTEUgKm91dF9maWxlLAorCQkJCSAgc3RydWN0IGpvdXJuYWxfc291cmNlICpzb3VyY2UsCisJCQkJICBjaGFyICpidWYsCisJCQkJICBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiLAorCQkJCSAgdW5zaWduZWQgaW50ICpibG9ja3AsIGludCBibG9ja3NpemUsCisJCQkJICB0aWRfdCB0cmFuc2FjdGlvbikKK3sKKwlpbnQJCQlvZmZzZXQsIHRhZ19zaXplLCBjc3VtX3NpemUgPSAwOworCWNoYXIJCQkqdGFncDsKKwlqb3VybmFsX2Jsb2NrX3RhZ190CSp0YWc7CisJdW5zaWduZWQgaW50CQlibG9ja25yOworCV9fdTMyCQkJdGFnX2Jsb2NrOworCV9fdTMyCQkJdGFnX2ZsYWdzOworCisJdGFnX3NpemUgPSBqb3VybmFsX3N1cGVyX3RhZ19ieXRlcyhqc2IpOworCW9mZnNldCA9IHNpemVvZihqb3VybmFsX2hlYWRlcl90KTsKKwlibG9ja25yID0gKmJsb2NrcDsKKworCWlmIChKU0JfSEFTX0lOQ09NUEFUX0ZFQVRVUkUoanNiLCBKRlNfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1YzKSB8fAorCSAgICBKU0JfSEFTX0lOQ09NUEFUX0ZFQVRVUkUoanNiLCBKRlNfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1YyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBqb3VybmFsX2Jsb2NrX3RhaWwpOworCisJaWYgKGR1bXBfYWxsKQorCQlmcHJpbnRmKG91dF9maWxlLCAiRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSAldSwgYXQgIgorCQkJImJsb2NrICV1OlxuIiwgdHJhbnNhY3Rpb24sIGJsb2NrbnIpOworCisJKytibG9ja25yOworCVdSQVAoanNiLCBibG9ja25yKTsKKworCWRvIHsKKwkJLyogV29yayBvdXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBjdXJyZW50IHRhZywgYW5kIHNraXAgdG8KKwkJICogdGhlIG5leHQgb25lLi4uICovCisJCXRhZ3AgPSAmYnVmW29mZnNldF07CisJCXRhZyA9IChqb3VybmFsX2Jsb2NrX3RhZ190ICopIHRhZ3A7CisJCW9mZnNldCArPSB0YWdfc2l6ZTsKKworCQkvKiAuLi4gYW5kIGlmIHdlIGhhdmUgZ29uZSB0b28gZmFyLCB0aGVuIHdlJ3ZlIHJlYWNoZWQgdGhlCisJCSAgIGVuZCBvZiB0aGlzIGJsb2NrLiAqLworCQlpZiAob2Zmc2V0ID4gYmxvY2tzaXplIC0gY3N1bV9zaXplKQorCQkJYnJlYWs7CisKKwkJdGFnX2Jsb2NrID0gYmUzMl90b19jcHUodGFnLT50X2Jsb2NrbnIpOworCQl0YWdfZmxhZ3MgPSBiZTE2X3RvX2NwdSh0YWctPnRfZmxhZ3MpOworCisJCWlmICghKHRhZ19mbGFncyAmIEpGU19GTEFHX1NBTUVfVVVJRCkpCisJCQlvZmZzZXQgKz0gMTY7CisKKwkJZHVtcF9tZXRhZGF0YV9ibG9jayhvdXRfZmlsZSwgc291cmNlLCBqc2IsCisJCQkJICAgIGJsb2NrbnIsIHRhZ19ibG9jaywgdGFnX2ZsYWdzLCBibG9ja3NpemUsCisJCQkJICAgIHRyYW5zYWN0aW9uKTsKKworCQkrK2Jsb2NrbnI7CisJCVdSQVAoanNiLCBibG9ja25yKTsKKworCX0gd2hpbGUgKCEodGFnX2ZsYWdzICYgSkZTX0ZMQUdfTEFTVF9UQUcpKTsKKworCSpibG9ja3AgPSBibG9ja25yOworfQorCisKK3N0YXRpYyB2b2lkIGR1bXBfcmV2b2tlX2Jsb2NrKEZJTEUgKm91dF9maWxlLCBjaGFyICpidWYsCisJCQkgICAgICBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBibG9ja25yLAorCQkJICAgICAgaW50IGJsb2Nrc2l6ZSBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICB0aWRfdCB0cmFuc2FjdGlvbikKK3sKKwlpbnQJCQlvZmZzZXQsIG1heDsKKwlqb3VybmFsX3Jldm9rZV9oZWFkZXJfdCAqaGVhZGVyOworCXVuc2lnbmVkIGxvbmcgbG9uZwlyYmxvY2s7CisJaW50CQkJdGFnX3NpemUgPSBzaXplb2YoX191MzIpOworCisJaWYgKGR1bXBfYWxsKQorCQlmcHJpbnRmKG91dF9maWxlLCAiRHVtcGluZyByZXZva2UgYmxvY2ssIHNlcXVlbmNlICV1LCBhdCAiCisJCQkiYmxvY2sgJXU6XG4iLCB0cmFuc2FjdGlvbiwgYmxvY2tucik7CisKKwlpZiAoYmUzMl90b19jcHUoanNiLT5zX2ZlYXR1cmVfaW5jb21wYXQpICYgSkZTX0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQpCisJCXRhZ19zaXplID0gc2l6ZW9mKF9fdTY0KTsKKworCWhlYWRlciA9IChqb3VybmFsX3Jldm9rZV9oZWFkZXJfdCAqKSBidWY7CisJb2Zmc2V0ID0gc2l6ZW9mKGpvdXJuYWxfcmV2b2tlX2hlYWRlcl90KTsKKwltYXggPSBiZTMyX3RvX2NwdShoZWFkZXItPnJfY291bnQpOworCisJd2hpbGUgKG9mZnNldCA8IG1heCkgeworCQlpZiAodGFnX3NpemUgPT0gc2l6ZW9mKF9fdTMyKSkgeworCQkJX191MzIgKmVudHJ5ID0gKF9fdTMyICopIChidWYgKyBvZmZzZXQpOworCQkJcmJsb2NrID0gYmUzMl90b19jcHUoKmVudHJ5KTsKKwkJfSBlbHNlIHsKKwkJCV9fdTY0ICplbnRyeSA9IChfX3U2NCAqKSAoYnVmICsgb2Zmc2V0KTsKKwkJCXJibG9jayA9IGV4dDJmc19iZTY0X3RvX2NwdSgqZW50cnkpOworCQl9CisJCWlmIChkdW1wX2FsbCB8fCByYmxvY2sgPT0gYmxvY2tfdG9fZHVtcCkgeworCQkJZnByaW50ZihvdXRfZmlsZSwgIiAgUmV2b2tlIEZTIGJsb2NrICVsbHUiLCByYmxvY2spOworCQkJaWYgKGR1bXBfYWxsKQorCQkJCWZwcmludGYob3V0X2ZpbGUsICJcbiIpOworCQkJZWxzZQorCQkJCWZwcmludGYob3V0X2ZpbGUsIiBhdCBibG9jayAldSwgc2VxdWVuY2UgJXVcbiIsCisJCQkJCWJsb2NrbnIsIHRyYW5zYWN0aW9uKTsKKwkJfQorCQlvZmZzZXQgKz0gdGFnX3NpemU7CisJfQorfQorCisKK3N0YXRpYyB2b2lkIHNob3dfZXh0ZW50KEZJTEUgKm91dF9maWxlLCBpbnQgc3RhcnRfZXh0ZW50LCBpbnQgZW5kX2V4dGVudCwKKwkJCV9fdTMyIGZpcnN0X2Jsb2NrKQoreworCWlmIChzdGFydF9leHRlbnQgPj0gMCAmJiBmaXJzdF9ibG9jayAhPSAwKQorCQlmcHJpbnRmKG91dF9maWxlLCAiKCVkKyV1KTogJXUgIiwKKwkJCXN0YXJ0X2V4dGVudCwgZW5kX2V4dGVudC1zdGFydF9leHRlbnQsIGZpcnN0X2Jsb2NrKTsKK30KKworc3RhdGljIHZvaWQgc2hvd19pbmRpcmVjdChGSUxFICpvdXRfZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgX191MzIgd2hlcmUpCit7CisJaWYgKHdoZXJlKQorCQlmcHJpbnRmKG91dF9maWxlLCAiKCVzKTogJXUgIiwgbmFtZSwgd2hlcmUpOworfQorCisKK3N0YXRpYyB2b2lkIGR1bXBfbWV0YWRhdGFfYmxvY2soRklMRSAqb3V0X2ZpbGUsIHN0cnVjdCBqb3VybmFsX3NvdXJjZSAqc291cmNlLAorCQkJCWpvdXJuYWxfc3VwZXJibG9ja190ICpqc2IgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCXVuc2lnbmVkIGludCBsb2dfYmxvY2tuciwKKwkJCQl1bnNpZ25lZCBpbnQgZnNfYmxvY2tuciwKKwkJCQl1bnNpZ25lZCBpbnQgbG9nX3RhZ19mbGFncywKKwkJCQlpbnQgYmxvY2tzaXplLAorCQkJCXRpZF90IHRyYW5zYWN0aW9uKQoreworCWludAkJcmV0dmFsOworCWNoYXIgCQlidWZbODE5Ml07CisKKwlpZiAoIShkdW1wX2FsbAorCSAgICAgIHx8IChmc19ibG9ja25yID09IGJsb2NrX3RvX2R1bXApCisJICAgICAgfHwgKGZzX2Jsb2NrbnIgPT0gaW5vZGVfYmxvY2tfdG9fZHVtcCkKKwkgICAgICB8fCAoZnNfYmxvY2tuciA9PSBiaXRtYXBfdG9fZHVtcCkpKQorCQlyZXR1cm47CisKKwlmcHJpbnRmKG91dF9maWxlLCAiICBGUyBibG9jayAldSBsb2dnZWQgYXQgIiwgZnNfYmxvY2tucik7CisJaWYgKCFkdW1wX2FsbCkKKwkJZnByaW50ZihvdXRfZmlsZSwgInNlcXVlbmNlICV1LCAiLCB0cmFuc2FjdGlvbik7CisJZnByaW50ZihvdXRfZmlsZSwgImpvdXJuYWwgYmxvY2sgJXUgKGZsYWdzIDB4JXgpXG4iLCBsb2dfYmxvY2tuciwKKwkJbG9nX3RhZ19mbGFncyk7CisKKwkvKiBUaGVyZSBhcmUgdHdvIG1ham9yIHNwZWNpYWwgY2FzZXMgdG8gcGFyc2U6CisJICoKKwkgKiBJZiB0aGlzIGJsb2NrIGlzIGEgYmxvY2sKKwkgKiBiaXRtYXAgYmxvY2ssIHdlIG5lZWQgdG8gZ2l2ZSBpdCBzcGVjaWFsIHRyZWF0bWVudCBzbyB0aGF0IHdlCisJICogY2FuIGxvZyBhbnkgYWxsb2NhdGVzIGFuZCBkZWFsbG9jYXRlcyB3aGljaCBhZmZlY3QgdGhlCisJICogYmxvY2tfdG9fZHVtcCBxdWVyeSBibG9jay4KKwkgKgorCSAqIElmIHRoZSBibG9jayBpcyBhbiBpbm9kZSBibG9jayBmb3IgdGhlIGlub2RlIGJlaW5nIHNlYXJjaGVkCisJICogZm9yLCB0aGVuIHdlIG5lZWQgdG8gZHVtcCB0aGUgY29udGVudHMgb2YgdGhhdCBpbm9kZQorCSAqIHN0cnVjdHVyZSBzeW1ib2xpY2FsbHkuCisJICovCisKKwlpZiAoIShkdW1wX2NvbnRlbnRzICYmIGR1bXBfYWxsKQorCSAgICAmJiBmc19ibG9ja25yICE9IGJsb2NrX3RvX2R1bXAKKwkgICAgJiYgZnNfYmxvY2tuciAhPSBiaXRtYXBfdG9fZHVtcAorCSAgICAmJiBmc19ibG9ja25yICE9IGlub2RlX2Jsb2NrX3RvX2R1bXApCisJCXJldHVybjsKKworCXJldHZhbCA9IHJlYWRfam91cm5hbF9ibG9jaygibG9nZHVtcCIsIHNvdXJjZSwKKwkJCQkgICAgKChleHQyX2xvZmZfdCkgbG9nX2Jsb2NrbnIpICogYmxvY2tzaXplLAorCQkJCSAgICBidWYsIGJsb2Nrc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuOworCisJaWYgKGZzX2Jsb2NrbnIgPT0gYml0bWFwX3RvX2R1bXApIHsKKwkJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyOworCQlpbnQgb2Zmc2V0OworCisJCXN1cGVyID0gY3VycmVudF9mcy0+c3VwZXI7CisJCW9mZnNldCA9ICgoYmxvY2tfdG9fZHVtcCAtIHN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spICUKKwkJCSAgc3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cCk7CisKKwkJZnByaW50ZihvdXRfZmlsZSwgIiAgICAoYmxvY2sgYml0bWFwIGZvciBibG9jayAlbGx1OiAiCisJCQkiYmxvY2sgaXMgJXMpXG4iLAorCQkJYmxvY2tfdG9fZHVtcCwKKwkJCWV4dDJmc190ZXN0X2JpdChvZmZzZXQsIGJ1ZikgPyAiU0VUIiA6ICJDTEVBUiIpOworCX0KKworCWlmIChmc19ibG9ja25yID09IGlub2RlX2Jsb2NrX3RvX2R1bXApIHsKKwkJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlOworCQlpbnQgZmlyc3QsIHByZXYsIHRoaXMsIHN0YXJ0X2V4dGVudCwgaTsKKworCQlmcHJpbnRmKG91dF9maWxlLCAiICAgIChpbm9kZSBibG9jayBmb3IgaW5vZGUgJXUpOlxuIiwKKwkJCWlub2RlX3RvX2R1bXApOworCisJCWlub2RlID0gKHN0cnVjdCBleHQyX2lub2RlICopIChidWYgKyBpbm9kZV9vZmZzZXRfdG9fZHVtcCk7CisJCWludGVybmFsX2R1bXBfaW5vZGUob3V0X2ZpbGUsICIgICAgIiwgaW5vZGVfdG9fZHVtcCwgaW5vZGUsIDApOworCisJCS8qIER1bXAgb3V0IHRoZSBkaXJlY3QvaW5kaXJlY3QgYmxvY2tzIGhlcmU6CisJCSAqIGludGVybmFsX2R1bXBfaW5vZGUgY2FuIG9ubHkgZHVtcCB0aGVtIGZyb20gdGhlIG1haW4KKwkJICogb24tZGlzayBpbm9kZSwgbm90IGZyb20gdGhlIGpvdXJuYWxlZCBjb3B5IG9mIHRoZQorCQkgKiBpbm9kZS4gKi8KKworCQlmcHJpbnRmIChvdXRfZmlsZSwgIiAgICBCbG9ja3M6ICAiKTsKKwkJZmlyc3QgPSBwcmV2ID0gc3RhcnRfZXh0ZW50ID0gLTE7CisKKwkJZm9yIChpPTA7IGk8RVhUMl9ORElSX0JMT0NLUzsgaSsrKSB7CisJCQl0aGlzID0gaW5vZGUtPmlfYmxvY2tbaV07CisJCQlpZiAoc3RhcnRfZXh0ZW50ID49IDAgICYmIHRoaXMgPT0gcHJldisxKSB7CisJCQkJcHJldiA9IHRoaXM7CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgeworCQkJCXNob3dfZXh0ZW50KG91dF9maWxlLCBzdGFydF9leHRlbnQsIGksIGZpcnN0KTsKKwkJCQlzdGFydF9leHRlbnQgPSBpOworCQkJCWZpcnN0ID0gcHJldiA9IHRoaXM7CisJCQl9CisJCX0KKwkJc2hvd19leHRlbnQob3V0X2ZpbGUsIHN0YXJ0X2V4dGVudCwgaSwgZmlyc3QpOworCQlzaG93X2luZGlyZWN0KG91dF9maWxlLCAiSU5EIiwgaW5vZGUtPmlfYmxvY2tbaSsrXSk7CisJCXNob3dfaW5kaXJlY3Qob3V0X2ZpbGUsICJESU5EIiwgaW5vZGUtPmlfYmxvY2tbaSsrXSk7CisJCXNob3dfaW5kaXJlY3Qob3V0X2ZpbGUsICJUSU5EIiwgaW5vZGUtPmlfYmxvY2tbaSsrXSk7CisKKwkJZnByaW50ZihvdXRfZmlsZSwgIlxuIik7CisJfQorCisJaWYgKGR1bXBfY29udGVudHMpCisJCWRvX2hleGR1bXAob3V0X2ZpbGUsIGJ1ZiwgYmxvY2tzaXplKTsKKworfQorCitzdGF0aWMgdm9pZCBkb19oZXhkdW1wIChGSUxFICpvdXRfZmlsZSwgY2hhciAqYnVmLCBpbnQgYmxvY2tzaXplKQoreworCWludCBpLGo7CisJaW50ICppbnRwOworCWNoYXIgKmNoYXJwOworCXVuc2lnbmVkIGNoYXIgYzsKKworCWludHAgPSAoaW50ICopIGJ1ZjsKKwljaGFycCA9IChjaGFyICopIGJ1ZjsKKworCWZvciAoaT0wOyBpPGJsb2Nrc2l6ZTsgaSs9MTYpIHsKKwkJZnByaW50ZihvdXRfZmlsZSwgIiAgICAlMDR4OiAgIiwgaSk7CisJCWZvciAoaj0wOyBqPDE2OyBqKz00KQorCQkJZnByaW50ZihvdXRfZmlsZSwgIiUwOHggIiwgKmludHArKyk7CisJCWZvciAoaj0wOyBqPDE2OyBqKyspIHsKKwkJCWMgPSAqY2hhcnArKzsKKwkJCWlmIChjIDwgJyAnIHx8IGMgPj0gMTI3KQorCQkJCWMgPSAnLic7CisJCQlmcHJpbnRmKG91dF9maWxlLCAiJWMiLCBjKTsKKwkJfQorCQlmcHJpbnRmKG91dF9maWxlLCAiXG4iKTsKKwl9Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL2xzLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9scy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1N2UzZjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9scy5jCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogbHMuYyAtLS0gbGlzdCBkaXJlY3RvcmllcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCisvKgorICogbGlzdCBkaXJlY3RvcnkKKyAqLworCisjZGVmaW5lIExPTkdfT1BUCTB4MDAwMQorI2RlZmluZSBQQVJTRV9PUFQJMHgwMDAyCisjZGVmaW5lIFJBV19PUFQJCTB4MDAwNAorI2RlZmluZSBFTkNSWVBUX09QVAkweDgwMDAKKworc3RydWN0IGxpc3RfZGlyX3N0cnVjdCB7CisJRklMRQkqZjsKKwlpbnQJY29sOworCWludAlvcHRpb25zOworCWludAlzdGF0ZTsKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICptb25zdHJbXSA9IHsgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKKwkJCQkiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMifTsKKworc3RhdGljIGludCBwcmludF9maWxlbmFtZShGSUxFICpmLCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwgaW50IG9wdGlvbnMpCit7CisJdW5zaWduZWQgY2hhcgljaDsKKwljb25zdCBjaGFyICpjcCA9IGRpcmVudC0+bmFtZTsKKwlpbnQgbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpOworCWludCByZXRsZW4gPSAwOworCisJaWYgKChvcHRpb25zICYgRU5DUllQVF9PUFQpICYmICEob3B0aW9ucyAmIFJBV19PUFQpKSB7CisJCWlmIChmKQorCQkJcmV0dXJuIGZwcmludGYoZiwgIjxlbmNyeXB0ZWQgKCVkKT4iLCBsZW4pOworCQllbHNlIHsKKwkJCWNoYXIgdG1wWzFdOworCQkJcmV0dXJuIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksCisJCQkJCSI8ZW5jcnlwdGVkICglZCk+IiwgbGVuKTsKKwkJfQorCX0KKwl3aGlsZSAobGVuLS0pIHsKKwkJY2ggPSAqY3ArKzsKKwkJaWYgKGNoID4gMTI4KSB7CisJCQlpZiAoZikKKwkJCQlmcHV0cygiTS0iLCBmKTsKKwkJCWNoIC09IDEyODsKKwkJCXJldGxlbiArPSAyOworCQl9CisJCWlmICgoY2ggPCAzMikgfHwgKGNoID09IDB4N2YpKSB7CisJCQlpZiAoZikKKwkJCQlmcHV0YygnXicsIGYpOworCQkJY2ggXj0gMHg0MDsgLyogXkAsIF5BLCBeQjsgXj8gZm9yIERFTCAqLworCQkJcmV0bGVuKys7CisJCX0KKwkJaWYgKGYpCisJCQlmcHV0YyhjaCwgZik7CisJCXJldGxlbisrOworCX0KKwlyZXR1cm4gcmV0bGVuOworfQorCitzdGF0aWMgaW50IGxpc3RfZGlyX3Byb2MoZXh0Ml9pbm9fdCBkaXIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJIGludAllbnRyeSwKKwkJCSBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCSBpbnQJb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSBjaGFyCSpidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJIHZvaWQJKnByaXZhdGUpCit7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJZXh0Ml9pbm9fdAkJaW5vOworCXN0cnVjdCB0bQkJKnRtX3A7CisJdGltZV90CQkJbW9kdGltZTsKKwljaGFyCQkJdG1wW0VYVDJfTkFNRV9MRU4gKyAxNl07CisJY2hhcgkJCWRhdGVzdHJbODBdOworCWNoYXIJCQlsYnIsIHJicjsKKwlpbnQJCQl0aGlzbGVuOworCWludAkJCW9wdGlvbnM7CisJc3RydWN0IGxpc3RfZGlyX3N0cnVjdCAqbHMgPSAoc3RydWN0IGxpc3RfZGlyX3N0cnVjdCAqKSBwcml2YXRlOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICp0ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICopIGRpcmVudDsKKworCXRoaXNsZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCk7CisJaW5vID0gZGlyZW50LT5pbm9kZTsKKwlvcHRpb25zID0gbHMtPm9wdGlvbnM7CisJaWYgKGxzLT5zdGF0ZSA8IDIpIHsKKwkJbHMtPnN0YXRlKys7CisJCW9wdGlvbnMgfD0gUkFXX09QVDsKKwl9CisKKwlpZiAoZW50cnkgPT0gRElSRU5UX0RFTEVURURfRklMRSkgeworCQlsYnIgPSAnPCc7CisJCXJiciA9ICc+JzsKKwkJaW5vID0gMDsKKwl9IGVsc2UgeworCQlsYnIgPSByYnIgPSAnICc7CisJfQorCWlmIChvcHRpb25zICYgUEFSU0VfT1BUKSB7CisJCWlmIChpbm8pIHsKKwkJCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGUoaW5vLCAmaW5vZGUsICJscyIpKQorCQkJCXJldHVybiAwOworCQl9IGVsc2UKKwkJCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCQlmcHJpbnRmKGxzLT5mLCIvJXUvJTA2by8lZC8lZC8lKnMvIiwgaW5vLCBpbm9kZS5pX21vZGUsCisJCQlpbm9kZS5pX3VpZCwgaW5vZGUuaV9naWQsIHRoaXNsZW4sIGRpcmVudC0+bmFtZSk7CisJCWlmIChMSU5VWF9TX0lTRElSKGlub2RlLmlfbW9kZSkpCisJCQlmcHJpbnRmKGxzLT5mLCAiLyIpOworCQllbHNlCisJCQlmcHJpbnRmKGxzLT5mLCAiJWxsZC8iLCBFWFQyX0lfU0laRSgmaW5vZGUpKTsKKwkJZnByaW50Zihscy0+ZiwgIlxuIik7CisJfSBlbHNlIGlmIChvcHRpb25zICYgTE9OR19PUFQpIHsKKwkJaWYgKGlubykgeworCQkJaWYgKGRlYnVnZnNfcmVhZF9pbm9kZShpbm8sICZpbm9kZSwgImxzIikpCisJCQkJcmV0dXJuIDA7CisJCQltb2R0aW1lID0gaW5vZGUuaV9tdGltZTsKKwkJCXRtX3AgPSBsb2NhbHRpbWUoJm1vZHRpbWUpOworCQkJc3ByaW50ZihkYXRlc3RyLCAiJTJkLSVzLSU0ZCAlMDJkOiUwMmQiLAorCQkJCXRtX3AtPnRtX21kYXksIG1vbnN0clt0bV9wLT50bV9tb25dLAorCQkJCTE5MDAgKyB0bV9wLT50bV95ZWFyLCB0bV9wLT50bV9ob3VyLAorCQkJCXRtX3AtPnRtX21pbik7CisJCX0gZWxzZSB7CisJCQlzdHJjcHkoZGF0ZXN0ciwgIiAgICAgICAgICAgICAgICAgIik7CisJCQltZW1zZXQoJmlub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwkJfQorCQlmcHJpbnRmKGxzLT5mLCAiJWMlNnUlYyAlNm8gIiwgbGJyLCBpbm8sIHJiciwgaW5vZGUuaV9tb2RlKTsKKwkJaWYgKGVudHJ5ID09IERJUkVOVF9DSEVDS1NVTSkgeworCQkJZnByaW50Zihscy0+ZiwgIihkaXJibG9jayBjaGVja3N1bTogMHglMDh4KVxuIiwKKwkJCQl0LT5kZXRfY2hlY2tzdW0pOworCQkJcmV0dXJuIDA7CisJCX0KKwkJZnByaW50Zihscy0+ZiwgIiglZCkgICU1ZCAgJTVkICAgIiwKKwkJCWV4dDJmc19kaXJlbnRfZmlsZV90eXBlKGRpcmVudCksCisJCQlpbm9kZV91aWQoaW5vZGUpLCBpbm9kZV9naWQoaW5vZGUpKTsKKwkJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSkKKwkJCWZwcmludGYobHMtPmYsICIlNWQiLCBpbm9kZS5pX3NpemUpOworCQllbHNlCisJCQlmcHJpbnRmKGxzLT5mLCAiJTVsbHUiLCBFWFQyX0lfU0laRSgmaW5vZGUpKTsKKwkJZnB1dHMoZGF0ZXN0ciwgbHMtPmYpOworCQlmcHV0YygnICcsIGxzLT5mKTsKKwkJcHJpbnRfZmlsZW5hbWUobHMtPmYsIGRpcmVudCwgb3B0aW9ucyk7CisJCWZwdXRjKCdcbicsIGxzLT5mKTsKKwl9IGVsc2UgeworCQlpZiAoZW50cnkgPT0gRElSRU5UX0NIRUNLU1VNKSB7CisJCQlzcHJpbnRmKHRtcCwgIiVjJXUlYyAoZGlyYmxvY2sgY2hlY2tzdW06IDB4JTA4eCkgICAiLAorCQkJCWxiciwgZGlyZW50LT5pbm9kZSwgcmJyLCB0LT5kZXRfY2hlY2tzdW0pOworCQkJdGhpc2xlbiA9IHN0cmxlbih0bXApOworCQkJaWYgKGxzLT5jb2wgKyB0aGlzbGVuID4gODApIHsKKwkJCQlmcHV0YygnXG4nLCBscy0+Zik7CisJCQkJbHMtPmNvbCA9IDA7CisJCQl9CisJCQlmcHJpbnRmKGxzLT5mLCAiJXMiLCB0bXApOworCQkJbHMtPmNvbCArPSB0aGlzbGVuOworCQkJcmV0dXJuIDA7CisJCX0KKwkJc3ByaW50Zih0bXAsICIlYyV1JWMgKCVkKSAiLCBsYnIsIGRpcmVudC0+aW5vZGUsIHJiciwKKwkJCWRpcmVudC0+cmVjX2xlbik7CisJCXRoaXNsZW4gPSBzdHJsZW4odG1wKSArIDM7CisJCXRoaXNsZW4gKz0gcHJpbnRfZmlsZW5hbWUoTlVMTCwgZGlyZW50LCBvcHRpb25zKTsKKworCQlpZiAobHMtPmNvbCArIHRoaXNsZW4gPiA4MCkgeworCQkJZnB1dGMoJ1xuJywgbHMtPmYpOworCQkJbHMtPmNvbCA9IDA7CisJCX0KKwkJZnByaW50Zihscy0+ZiwgIiVzIiwgdG1wKTsKKwkJcHJpbnRfZmlsZW5hbWUobHMtPmYsIGRpcmVudCwgb3B0aW9ucyk7CisJCWZwdXRzKCIgICAiLCBscy0+Zik7CisJCWxzLT5jb2wgKz0gdGhpc2xlbjsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZG9fbGlzdF9kaXIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlleHQyX2lub190CWlubzsKKwlpbnQJCXJldHZhbDsKKwlpbnQJCWM7CisJaW50CQlmbGFncyA9IERJUkVOVF9GTEFHX0lOQ0xVREVfRU1QVFk7CisJc3RydWN0IGxpc3RfZGlyX3N0cnVjdCBsczsKKworCWxzLm9wdGlvbnMgPSAwOworCWxzLnN0YXRlID0gMDsKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiY2RscHIiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdjJzoKKwkJCWZsYWdzIHw9IERJUkVOVF9GTEFHX0lOQ0xVREVfQ1NVTTsKKwkJCWJyZWFrOworCQljYXNlICdsJzoKKwkJCWxzLm9wdGlvbnMgfD0gTE9OR19PUFQ7CisJCQlicmVhazsKKwkJY2FzZSAnZCc6CisJCQlmbGFncyB8PSBESVJFTlRfRkxBR19JTkNMVURFX1JFTU9WRUQ7CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCQlscy5vcHRpb25zIHw9IFBBUlNFX09QVDsKKwkJCWJyZWFrOworCQljYXNlICdyJzoKKwkJCWxzLm9wdGlvbnMgfD0gUkFXX09QVDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKworCWlmIChhcmdjID4gb3B0aW5kKzEpIHsKKwlwcmludF91c2FnZToKKwkJY29tX2VycigwLCAwLCAiVXNhZ2U6IGxzIFstbF0gWy1kXSBbLXBdIGZpbGUiKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChhcmdjID09IG9wdGluZCkKKwkJaW5vID0gY3dkOworCWVsc2UKKwkJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3Zbb3B0aW5kXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKworCWxzLmYgPSBvcGVuX3BhZ2VyKCk7CisJbHMuY29sID0gMDsKKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGUoaW5vLCAmaW5vZGUsIGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoaW5vZGUuaV9mbGFncyAmIEVYVDRfRU5DUllQVF9GTCkKKwkJbHMub3B0aW9ucyB8PSBFTkNSWVBUX09QVDsKKworCXJldHZhbCA9IGV4dDJmc19kaXJfaXRlcmF0ZTIoY3VycmVudF9mcywgaW5vLCBmbGFncywKKwkJCQkgICAgMCwgbGlzdF9kaXJfcHJvYywgJmxzKTsKKwlmcHJpbnRmKGxzLmYsICJcbiIpOworCWNsb3NlX3BhZ2VyKGxzLmYpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoYXJndlsxXSwgcmV0dmFsLCAwKTsKKworCXJldHVybjsKK30KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9sc2RlbC5jIGIvZTJmc3Byb2dzL2RlYnVnZnMvbHNkZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDZiMjY4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvbHNkZWwuYwpAQCAtMCwwICsxLDIxNiBAQAorLyoKKyAqIGxzZGVsLmMgLS0tIHJvdXRpbmVzIHRvIHRyeSB0byBoZWxwIGEgdXNlciByZWNvdmVyIGEgZGVsZXRlZCBmaWxlLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQorICogVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YKKyAqIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpbmNsdWRlICJkZWJ1Z2ZzLmgiCisKK3N0cnVjdCBkZWxldGVkX2luZm8geworCWV4dDJfaW5vX3QJaW5vOworCXVuc2lnbmVkIHNob3J0CW1vZGU7CisJX191MzIJCXVpZDsKKwlfX3U2NAkJc2l6ZTsKKwl0aW1lX3QJCWR0aW1lOworCWUyX2Jsa2NudF90CW51bV9ibG9ja3M7CisJZTJfYmxrY250X3QJZnJlZV9ibG9ja3M7Cit9OworCitzdHJ1Y3QgbHNkZWxfc3RydWN0IHsKKwlleHQyX2lub190CQlpbm9kZTsKKwllMl9ibGtjbnRfdAkJbnVtX2Jsb2NrczsKKwllMl9ibGtjbnRfdAkJZnJlZV9ibG9ja3M7CisJZTJfYmxrY250X3QJCWJhZF9ibG9ja3M7Cit9OworCitzdGF0aWMgaW50IGRlbGV0ZWRfaW5mb19jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJY29uc3Qgc3RydWN0IGRlbGV0ZWRfaW5mbyAqYXJnMSwgKmFyZzI7CisKKwlhcmcxID0gKGNvbnN0IHN0cnVjdCBkZWxldGVkX2luZm8gKikgYTsKKwlhcmcyID0gKGNvbnN0IHN0cnVjdCBkZWxldGVkX2luZm8gKikgYjsKKworCXJldHVybiBhcmcxLT5kdGltZSAtIGFyZzItPmR0aW1lOworfQorCitzdGF0aWMgaW50IGxzZGVsX3Byb2MoZXh0Ml9maWxzeXMgZnMsCisJCSAgICAgIGJsazY0X3QJKmJsb2NrX25yLAorCQkgICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICB2b2lkICpwcml2YXRlKQoreworCXN0cnVjdCBsc2RlbF9zdHJ1Y3QgKmxzZCA9IChzdHJ1Y3QgbHNkZWxfc3RydWN0ICopIHByaXZhdGU7CisKKwlsc2QtPm51bV9ibG9ja3MrKzsKKworCWlmICgqYmxvY2tfbnIgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayB8fAorCSAgICAqYmxvY2tfbnIgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSB7CisJCWxzZC0+YmFkX2Jsb2NrcysrOworCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJfQorCisJaWYgKCFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsKmJsb2NrX25yKSkKKwkJbHNkLT5mcmVlX2Jsb2NrcysrOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZG9fbHNkZWwoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBsc2RlbF9zdHJ1Y3QgCWxzZDsKKwlzdHJ1Y3QgZGVsZXRlZF9pbmZvCSpkZWxhcnJheTsKKwlpbnQJCQludW1fZGVsYXJyYXksIG1heF9kZWxhcnJheTsKKwlleHQyX2lub2RlX3NjYW4JCXNjYW4gPSAwOworCWV4dDJfaW5vX3QJCWlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwljaGFyCQkJKmJsb2NrX2J1ZjsKKwlpbnQJCQlpOworIAlsb25nCQkJc2VjcyA9IDA7CisgCWNoYXIJCQkqdG1wOworCXRpbWVfdAkJCW5vdzsKKwlGSUxFCQkJKm91dDsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDEsIDIsICJsaXN0X2RlbGV0ZWRfaW5vZGVzIiwKKwkJCQkiW3NlY3NdIiwgMCkpCisJCXJldHVybjsKKworCWlmIChhcmdjID4gMSkgeworCQlzZWNzID0gc3RydG9sKGFyZ3ZbMV0sJnRtcCwwKTsKKwkJaWYgKCp0bXApIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgMCwgIkJhZCB0aW1lIC0gJXMiLGFyZ3ZbMV0pOworCQkJcmV0dXJuOworCQl9CisJfQorCisJbm93ID0gY3VycmVudF9mcy0+bm93ID8gY3VycmVudF9mcy0+bm93IDogdGltZSgwKTsKKwltYXhfZGVsYXJyYXkgPSAxMDA7CisJbnVtX2RlbGFycmF5ID0gMDsKKwlkZWxhcnJheSA9IG1hbGxvYyhtYXhfZGVsYXJyYXkgKiBzaXplb2Yoc3RydWN0IGRlbGV0ZWRfaW5mbykpOworCWlmICghZGVsYXJyYXkpIHsKKwkJY29tX2VycigibHNfZGVsZXRlZF9pbm9kZXMiLCBFTk9NRU0sCisJCQkid2hpbGUgYWxsb2NhdGluZyBkZWxldGVkIGluZm9ybWF0aW9uIHN0b3JhZ2UiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlibG9ja19idWYgPSBtYWxsb2MoY3VycmVudF9mcy0+YmxvY2tzaXplICogMyk7CisJaWYgKCFibG9ja19idWYpIHsKKwkJY29tX2VycigibHNfZGVsZXRlZF9pbm9kZXMiLCBFTk9NRU0sICJ3aGlsZSBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciIpOworCQlnb3RvIGVycm9yX291dDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGN1cnJlbnRfZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImxzX2RlbGV0ZWRfaW5vZGVzIiwgcmV0dmFsLAorCQkJIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIpOworCQlnb3RvIGVycm9yX291dDsKKwl9CisKKwlkbyB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCX0gd2hpbGUgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJsc19kZWxldGVkX2lub2RlcyIsIHJldHZhbCwKKwkJCSJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIik7CisJCWdvdG8gZXJyb3Jfb3V0OworCX0KKworCXdoaWxlIChpbm8pIHsKKwkJaWYgKChpbm9kZS5pX2R0aW1lID09IDApIHx8CisJCSAgICAoc2VjcyAmJiAobGFicyhub3cgLSBzZWNzKSA+IChsb25nKSBpbm9kZS5pX2R0aW1lKSkpCisJCQlnb3RvIG5leHQ7CisKKwkJbHNkLmlub2RlID0gaW5vOworCQlsc2QubnVtX2Jsb2NrcyA9IDA7CisJCWxzZC5mcmVlX2Jsb2NrcyA9IDA7CisJCWxzZC5iYWRfYmxvY2tzID0gMDsKKworCQlpZiAoZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGN1cnJlbnRfZnMsICZpbm9kZSkpIHsKKwkJCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhjdXJyZW50X2ZzLCBpbm8sCisJCQkJCQkgICAgICAgQkxPQ0tfRkxBR19SRUFEX09OTFksCisJCQkJCQkgICAgICAgYmxvY2tfYnVmLAorCQkJCQkJICAgICAgIGxzZGVsX3Byb2MsICZsc2QpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoImxzX2RlbGV0ZWRfaW5vZGVzIiwgcmV0dmFsLAorCQkJCQkid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZTIiKTsKKwkJCQlnb3RvIG5leHQ7CisJCQl9CisJCX0KKwkJaWYgKChsc2QuZnJlZV9ibG9ja3MgJiYgIWxzZC5iYWRfYmxvY2tzKSB8fAorCQkgICAgaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHsKKwkJCWlmIChudW1fZGVsYXJyYXkgPj0gbWF4X2RlbGFycmF5KSB7CisJCQkJbWF4X2RlbGFycmF5ICs9IDUwOworCQkJCWRlbGFycmF5ID0gcmVhbGxvYyhkZWxhcnJheSwKKwkJCSAgIG1heF9kZWxhcnJheSAqIHNpemVvZihzdHJ1Y3QgZGVsZXRlZF9pbmZvKSk7CisJCQkJaWYgKCFkZWxhcnJheSkgeworCQkJCQljb21fZXJyKCJsc19kZWxldGVkX2lub2RlcyIsCisJCQkJCQlFTk9NRU0sCisJCQkJCQkid2hpbGUgcmVhbGxvY2F0aW5nIGFycmF5Iik7CisJCQkJCWV4aXQoMSk7CisJCQkJfQorCQkJfQorCisJCQlkZWxhcnJheVtudW1fZGVsYXJyYXldLmlubyA9IGlubzsKKwkJCWRlbGFycmF5W251bV9kZWxhcnJheV0ubW9kZSA9IGlub2RlLmlfbW9kZTsKKwkJCWRlbGFycmF5W251bV9kZWxhcnJheV0udWlkID0gaW5vZGVfdWlkKGlub2RlKTsKKwkJCWRlbGFycmF5W251bV9kZWxhcnJheV0uc2l6ZSA9IEVYVDJfSV9TSVpFKCZpbm9kZSk7CisJCQlkZWxhcnJheVtudW1fZGVsYXJyYXldLmR0aW1lID0gKF9fczMyKSBpbm9kZS5pX2R0aW1lOworCQkJZGVsYXJyYXlbbnVtX2RlbGFycmF5XS5udW1fYmxvY2tzID0gbHNkLm51bV9ibG9ja3M7CisJCQlkZWxhcnJheVtudW1fZGVsYXJyYXldLmZyZWVfYmxvY2tzID0gbHNkLmZyZWVfYmxvY2tzOworCQkJbnVtX2RlbGFycmF5Kys7CisJCX0KKworCW5leHQ6CisJCWRvIHsKKwkJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCQl9IHdoaWxlIChyZXR2YWwgPT0gRVhUMl9FVF9CQURfQkxPQ0tfSU5fSU5PREVfVEFCTEUpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJsc19kZWxldGVkX2lub2RlcyIsIHJldHZhbCwKKwkJCQkid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIpOworCQkJZ290byBlcnJvcl9vdXQ7CisJCX0KKwl9CisKKwlvdXQgPSBvcGVuX3BhZ2VyKCk7CisKKwlmcHJpbnRmKG91dCwgIiBJbm9kZSAgT3duZXIgIE1vZGUgICAgU2l6ZSAgICAgIEJsb2NrcyAgIFRpbWUgZGVsZXRlZFxuIik7CisKKwlxc29ydChkZWxhcnJheSwgbnVtX2RlbGFycmF5LCBzaXplb2Yoc3RydWN0IGRlbGV0ZWRfaW5mbyksCisJICAgICAgZGVsZXRlZF9pbmZvX2NvbXBhcmUpOworCisJZm9yIChpID0gMDsgaSA8IG51bV9kZWxhcnJheTsgaSsrKSB7CisJCWZwcmludGYob3V0LCAiJTZ1ICU2ZCAlNm8gJTZsbHUgJTZsbGQvJTZsbGQgJXMiLAorCQkJZGVsYXJyYXlbaV0uaW5vLAorCQkJZGVsYXJyYXlbaV0udWlkLCBkZWxhcnJheVtpXS5tb2RlLCBkZWxhcnJheVtpXS5zaXplLAorCQkJZGVsYXJyYXlbaV0uZnJlZV9ibG9ja3MsIGRlbGFycmF5W2ldLm51bV9ibG9ja3MsCisJCQl0aW1lX3RvX3N0cmluZyhkZWxhcnJheVtpXS5kdGltZSkpOworCX0KKwlmcHJpbnRmKG91dCwgIiVkIGRlbGV0ZWQgaW5vZGVzIGZvdW5kLlxuIiwgbnVtX2RlbGFycmF5KTsKKwljbG9zZV9wYWdlcihvdXQpOworCitlcnJvcl9vdXQ6CisJZnJlZShibG9ja19idWYpOworCWZyZWUoZGVsYXJyYXkpOworCWlmIChzY2FuKQorCQlleHQyZnNfY2xvc2VfaW5vZGVfc2NhbihzY2FuKTsKKwlyZXR1cm47Cit9CisKKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9uY2hlY2suYyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL25jaGVjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOWI1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9uY2hlY2suYwpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIG5jaGVjay5jIC0tLSBnaXZlbiBhIGxpc3Qgb2YgaW5vZGVzLCBnZW5lcmF0ZSBhIGxpc3Qgb2YgbmFtZXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKworI2luY2x1ZGUgImRlYnVnZnMuaCIKKworc3RydWN0IGlub2RlX3dhbGtfc3RydWN0IHsKKwlleHQyX2lub190CQlkaXI7CisJZXh0Ml9pbm9fdAkJKmlhcnJheTsKKwlpbnQJCQlpbm9kZXNfbGVmdDsKKwlpbnQJCQludW1faW5vZGVzOworCWludAkJCXBvc2l0aW9uOworCWNoYXIJCQkqcGFyZW50OworCXVuc2lnbmVkIGludAkJZ2V0X3BhdGhuYW1lX2ZhaWxlZDoxOworCXVuc2lnbmVkIGludAkJY2hlY2tfZGlyZW50OjE7Cit9OworCitzdGF0aWMgaW50IG5jaGVja19wcm9jKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkgICAgICAgaW50CW9mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgIGNoYXIJKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICB2b2lkCSpwcml2YXRlKQoreworCXN0cnVjdCBpbm9kZV93YWxrX3N0cnVjdCAqaXcgPSAoc3RydWN0IGlub2RlX3dhbGtfc3RydWN0ICopIHByaXZhdGU7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWZpbGV0eXBlID0gZXh0MmZzX2RpcmVudF9maWxlX3R5cGUoZGlyZW50KTsKKwlpbnQJCWk7CisKKwlpdy0+cG9zaXRpb24rKzsKKwlpZiAoaXctPnBvc2l0aW9uIDw9IDIpCisJCXJldHVybiAwOworCWZvciAoaT0wOyBpIDwgaXctPm51bV9pbm9kZXM7IGkrKykgeworCQlpZiAoaXctPmlhcnJheVtpXSA9PSBkaXJlbnQtPmlub2RlKSB7CisJCQlpZiAoIWl3LT5wYXJlbnQgJiYgIWl3LT5nZXRfcGF0aG5hbWVfZmFpbGVkKSB7CisJCQkJcmV0dmFsID0gZXh0MmZzX2dldF9wYXRobmFtZShjdXJyZW50X2ZzLAorCQkJCQkJCSAgICAgaXctPmRpciwKKwkJCQkJCQkgICAgIDAsICZpdy0+cGFyZW50KTsKKwkJCQlpZiAocmV0dmFsKSB7CisJCQkJCWNvbV9lcnIoIm5jaGVjayIsIHJldHZhbCwKKwkJIndoaWxlIGNhbGxpbmcgZXh0MmZzX2dldF9wYXRobmFtZSBmb3IgaW5vZGUgIyV1IiwgaXctPmRpcik7CisJCQkJCWl3LT5nZXRfcGF0aG5hbWVfZmFpbGVkID0gMTsKKwkJCQl9CisJCQl9CisJCQlpZiAoaXctPnBhcmVudCkKKwkJCQlwcmludGYoIiV1XHQlcy8lLipzIiwgaXctPmlhcnJheVtpXSwKKwkJCQkgICAgICAgaXctPnBhcmVudCwKKwkJCQkgICAgICAgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpLAorCQkJCSAgICAgICBkaXJlbnQtPm5hbWUpOworCQkJZWxzZQorCQkJCXByaW50ZigiJXVcdDwldT4vJS4qcyIsIGl3LT5pYXJyYXlbaV0sCisJCQkJICAgICAgIGl3LT5kaXIsCisJCQkJICAgICAgIGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSwKKwkJCQkgICAgICAgZGlyZW50LT5uYW1lKTsKKwkJCWlmIChpdy0+Y2hlY2tfZGlyZW50ICYmIGZpbGV0eXBlKSB7CisJCQkJaWYgKCFkZWJ1Z2ZzX3JlYWRfaW5vZGUoZGlyZW50LT5pbm9kZSwgJmlub2RlLAorCQkJCQkJCSJuY2hlY2siKSAmJgorCQkJCSAgICBmaWxldHlwZSAhPSBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKSB7CisJCQkJCXByaW50ZigiICA8LS0tIEJBRCBGSUxFVFlQRSIpOworCQkJCX0KKwkJCX0KKwkJCXB1dGMoJ1xuJywgc3Rkb3V0KTsKKwkJfQorCX0KKwlpZiAoIWl3LT5pbm9kZXNfbGVmdCkKKwkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKworCXJldHVybiAwOworfQorCit2b2lkIGRvX25jaGVjayhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc3RydWN0IGlub2RlX3dhbGtfc3RydWN0IGl3OworCWludAkJCWMsIGk7CisJZXh0Ml9pbm9kZV9zY2FuCQlzY2FuID0gMDsKKwlleHQyX2lub190CQlpbm87CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCSp0bXA7CisKKwlpdy5jaGVja19kaXJlbnQgPSAwOworCisJcmVzZXRfZ2V0b3B0KCk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiYyIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2MnOgorCQkJaXcuY2hlY2tfZGlyZW50ID0gMTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKwlhcmdjIC09IG9wdGluZDsKKwlhcmd2ICs9IG9wdGluZDsKKworCWlmIChhcmdjIDwgMSkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogbmNoZWNrIFstY10gPGlub2RlIG51bWJlcj4gLi4uIik7CisJCXJldHVybjsKKwl9CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWl3LmlhcnJheSA9IG1hbGxvYyhzaXplb2YoZXh0Ml9pbm9fdCkgKiBhcmdjKTsKKwlpZiAoIWl3LmlhcnJheSkgeworCQljb21fZXJyKCJuY2hlY2siLCBFTk9NRU0sCisJCQkid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBudW1iZXIgYXJyYXkiKTsKKwkJcmV0dXJuOworCX0KKwltZW1zZXQoaXcuaWFycmF5LCAwLCBzaXplb2YoZXh0Ml9pbm9fdCkgKiBhcmdjKTsKKworCWZvciAoaT0wOyBpIDwgYXJnYzsgaSsrKSB7CisJCWl3LmlhcnJheVtpXSA9IHN0cnRvbChhcmd2W2ldLCAmdG1wLCAwKTsKKwkJaWYgKCp0bXApIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgMCwgIkJhZCBpbm9kZSAtICVzIiwgYXJndltpXSk7CisJCQlnb3RvIGVycm9yX291dDsKKwkJfQorCX0KKworCWl3Lm51bV9pbm9kZXMgPSBpdy5pbm9kZXNfbGVmdCA9IGFyZ2M7CisKKwlyZXR2YWwgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGN1cnJlbnRfZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoIm5jaGVjayIsIHJldHZhbCwgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIpOworCQlnb3RvIGVycm9yX291dDsKKwl9CisKKwlkbyB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCX0gd2hpbGUgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJuY2hlY2siLCByZXR2YWwsICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIik7CisJCWdvdG8gZXJyb3Jfb3V0OworCX0KKworCXByaW50ZigiSW5vZGVcdFBhdGhuYW1lXG4iKTsKKwl3aGlsZSAoaW5vKSB7CisJCWlmICghaW5vZGUuaV9saW5rc19jb3VudCkKKwkJCWdvdG8gbmV4dDsKKwkJLyoKKwkJICogVG8gaGFuZGxlIGZpbGVzeXN0ZW1zIHRvdWNoZWQgYnkgMC4zYyBleHRmczsgY2FuIGJlCisJCSAqIHJlbW92ZWQgbGF0ZXIuCisJCSAqLworCQlpZiAoaW5vZGUuaV9kdGltZSkKKwkJCWdvdG8gbmV4dDsKKwkJLyogSWdub3JlIGFueXRoaW5nIHRoYXQgaXNuJ3QgYSBkaXJlY3RvcnkgKi8KKwkJaWYgKCFMSU5VWF9TX0lTRElSKGlub2RlLmlfbW9kZSkpCisJCQlnb3RvIG5leHQ7CisKKwkJaXcucG9zaXRpb24gPSAwOworCQlpdy5wYXJlbnQgPSAwOworCQlpdy5kaXIgPSBpbm87CisJCWl3LmdldF9wYXRobmFtZV9mYWlsZWQgPSAwOworCisJCXJldHZhbCA9IGV4dDJmc19kaXJfaXRlcmF0ZShjdXJyZW50X2ZzLCBpbm8sIDAsIDAsCisJCQkJCSAgICBuY2hlY2tfcHJvYywgJml3KTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpdy5wYXJlbnQpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJuY2hlY2siLCByZXR2YWwsCisJCQkJIndoaWxlIGNhbGxpbmcgZXh0Ml9kaXJfaXRlcmF0ZSIpOworCQkJZ290byBuZXh0OworCQl9CisKKwkJaWYgKGl3Lmlub2Rlc19sZWZ0ID09IDApCisJCQlicmVhazsKKworCW5leHQ6CisJCWRvIHsKKwkJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCQl9IHdoaWxlIChyZXR2YWwgPT0gRVhUMl9FVF9CQURfQkxPQ0tfSU5fSU5PREVfVEFCTEUpOworCisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoIm5jaGVjayIsIHJldHZhbCwKKwkJCQkid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIpOworCQkJZ290byBlcnJvcl9vdXQ7CisJCX0KKwl9CisKK2Vycm9yX291dDoKKwlmcmVlKGl3LmlhcnJheSk7CisJaWYgKHNjYW4pCisJCWV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKHNjYW4pOworCXJldHVybjsKK30KKworCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL3F1b3RhLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9xdW90YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOGRiYWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy9xdW90YS5jCkBAIC0wLDAgKzEsMTcwIEBACisvKgorICogcXVvdGEuYyAtLS0gZGVidWdmcyBxdW90YSBjb21tYW5kcworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCitjb25zdCBjaGFyICpxdW90YV90eXBlW10gPSB7ICJ1c2VyIiwgImdyb3VwIiwgTlVMTCB9OworCitzdGF0aWMgaW50IGxvYWRfcXVvdGFfY3R4KGNoYXIgKnByb2duYW1lKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihwcm9nbmFtZSkpCisJCXJldHVybiAxOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfcXVvdGEoY3VycmVudF9mcy0+c3VwZXIpKSB7CisJCWNvbV9lcnIocHJvZ25hbWUsIDAsICJxdW90YSBmZWF0dXJlIG5vdCBlbmFibGVkIik7CisJCXJldHVybiAxOworCX0KKworCWlmIChjdXJyZW50X3FjdHgpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gcXVvdGFfaW5pdF9jb250ZXh0KCZjdXJyZW50X3FjdHgsIGN1cnJlbnRfZnMsIFFVT1RBX0FMTF9CSVQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihjdXJyZW50X2ZzLT5kZXZpY2VfbmFtZSwgcmV0dmFsLAorCQkJIndoaWxlIHRyeWluZyB0byBsb2FkIHF1b3RhIGluZm9ybWF0aW9uIik7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwYXJzZV9xdW90YV90eXBlKGNvbnN0IGNoYXIgKmNtZG5hbWUsIGNvbnN0IGNoYXIgKnN0cikKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSp0OworCWludAkJZmxhZ3MgPSAwOworCWludAkJaTsKKworCWZvciAoaSA9IDA7IGkgPCBNQVhRVU9UQVM7IGkrKykgeworCQlpZiAoc3RyY2FzZWNtcChzdHIsIHF1b3RhX3R5cGVbaV0pID09IDApCisJCQlicmVhazsKKwl9CisJaWYgKGkgPj0gTUFYUVVPVEFTKSB7CisJCWkgPSBzdHJ0b2woc3RyLCAmdCwgMCk7CisJCWlmICgqdCkKKwkJCWkgPSAtMTsKKwl9CisJaWYgKGkgPCAwIHx8IGkgPj0gTUFYUVVPVEFTKSB7CisJCWNvbV9lcnIoMCwgMCwgIkludmFsaWQgcXVvdGEgdHlwZTogJXMiLCBzdHIpOworCQlwcmludGYoIlZhbGlkIHF1b3RhIHR5cGVzIGFyZTogIik7CisJCWZvciAoaSA9IDA7IGkgPCBNQVhRVU9UQVM7IGkrKykKKwkJCXByaW50ZigiJXMgIiwgcXVvdGFfdHlwZVtpXSk7CisJCXByaW50ZigiXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChjdXJyZW50X2ZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykKKwkJZmxhZ3MgfD0gRVhUMl9GSUxFX1dSSVRFOworCisJcmV0dmFsID0gcXVvdGFfZmlsZV9vcGVuKGN1cnJlbnRfcWN0eCwgTlVMTCwgMCwgaSwgLTEsIGZsYWdzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY21kbmFtZSwgcmV0dmFsLAorCQkJIndoaWxlIG9wZW5pbmcgcXVvdGEgaW5vZGUgKHR5cGUgJWQpIiwgaSk7CisJCXJldHVybiAtMTsKKwl9CisJcmV0dXJuIGk7Cit9CisKKworc3RhdGljIGludCBsaXN0X3F1b3RhX2NhbGxiYWNrKHN0cnVjdCBkcXVvdCAqZHEsCisJCQkgICAgICAgdm9pZCAqY2JfZGF0YSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcHJpbnRmKCIlOHUgICAlOGxsZCAlOGxsZCAlOGxsZCAgICAlOGxsZCAlOGxsZCAlOGxsZFxuIiwKKwkgICAgICAgZHEtPmRxX2lkLCAobG9uZyBsb25nKWRxLT5kcV9kcWIuZHFiX2N1cnNwYWNlLAorCSAgICAgICAobG9uZyBsb25nKWRxLT5kcV9kcWIuZHFiX2Jzb2Z0bGltaXQsCisJICAgICAgIChsb25nIGxvbmcpZHEtPmRxX2RxYi5kcWJfYmhhcmRsaW1pdCwKKwkgICAgICAgKGxvbmcgbG9uZylkcS0+ZHFfZHFiLmRxYl9jdXJpbm9kZXMsCisJICAgICAgIChsb25nIGxvbmcpZHEtPmRxX2RxYi5kcWJfaXNvZnRsaW1pdCwKKwkgICAgICAgKGxvbmcgbG9uZylkcS0+ZHFfZHFiLmRxYl9paGFyZGxpbWl0KTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBkb19saXN0X3F1b3RhKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCXR5cGU7CisJc3RydWN0IHF1b3RhX2hhbmRsZSAqcWg7CisKKwlpZiAobG9hZF9xdW90YV9jdHgoYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjICE9IDIpIHsKKwkJY29tX2VycigwLCAwLCAiVXNhZ2U6IGxpc3RfcXVvdGEgPHF1b3RhX3R5cGU+XG4iKTsKKwkJcmV0dXJuOworCX0KKworCXR5cGUgPSBwYXJzZV9xdW90YV90eXBlKGFyZ3ZbMF0sIGFyZ3ZbMV0pOworCWlmICh0eXBlIDwgMCkKKwkJcmV0dXJuOworCisJcHJpbnRmKCIlOHMgICAlOHMgJThzICU4cyAgICAlOHMgJThzICU4c1xuIiwKKwkgICAgICAgKHR5cGUgPT0gMCkgPyAidXNlciBpZCIgOiAiZ3JvdXAgaWQiLAorCSAgICAgICAiYmxvY2tzIiwgInF1b3RhIiwgImxpbWl0IiwgImlub2RlcyIsICJxdW90YSIsICJsaW1pdCIpOworCXFoID0gY3VycmVudF9xY3R4LT5xdW90YV9maWxlW3R5cGVdOworCXJldHZhbCA9IHFoLT5xaF9vcHMtPnNjYW5fZHF1b3RzKHFoLCBsaXN0X3F1b3RhX2NhbGxiYWNrLCBOVUxMKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgc2Nhbm5pbmcgZHF1b3RzIik7CisJCXJldHVybjsKKwl9Cit9CisKK3ZvaWQgZG9fZ2V0X3F1b3RhKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50CQllcnIsIHR5cGU7CisJc3RydWN0IHF1b3RhX2hhbmRsZSAqcWg7CisJc3RydWN0IGRxdW90CSpkcTsKKwlxaWRfdAkJaWQ7CisKKwlpZiAobG9hZF9xdW90YV9jdHgoYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjICE9IDMpIHsKKwkJY29tX2VycigwLCAwLCAiVXNhZ2U6IGdldF9xdW90YSA8cXVvdGFfdHlwZT4gPGlkPlxuIik7CisJCXJldHVybjsKKwl9CisKKwl0eXBlID0gcGFyc2VfcXVvdGFfdHlwZShhcmd2WzBdLCBhcmd2WzFdKTsKKwlpZiAodHlwZSA8IDApCisJCXJldHVybjsKKworCWlkID0gcGFyc2VfdWxvbmcoYXJndlsyXSwgYXJndlswXSwgImlkIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJcHJpbnRmKCIlOHMgICAlOHMgJThzICU4cyAgICAlOHMgJThzICU4c1xuIiwKKwkgICAgICAgKHR5cGUgPT0gMCkgPyAidXNlciBpZCIgOiAiZ3JvdXAgaWQiLAorCSAgICAgICAiYmxvY2tzIiwgInF1b3RhIiwgImxpbWl0IiwgImlub2RlcyIsICJxdW90YSIsICJsaW1pdCIpOworCisJcWggPSBjdXJyZW50X3FjdHgtPnF1b3RhX2ZpbGVbdHlwZV07CisKKwlkcSA9IHFoLT5xaF9vcHMtPnJlYWRfZHF1b3QocWgsIGlkKTsKKwlpZiAoZHEpIHsKKwkJbGlzdF9xdW90YV9jYWxsYmFjayhkcSwgTlVMTCk7CisJCWV4dDJmc19mcmVlX21lbSgmZHEpOworCX0gZWxzZSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgImNvdWxkbid0IHJlYWQgcXVvdGEgcmVjb3JkIik7CisJfQorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvcm9fZGVidWdfY21kcy5jdCBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3JvX2RlYnVnX2NtZHMuY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2YWRlNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3JvX2RlYnVnX2NtZHMuY3QKQEAgLTAsMCArMSw5OSBAQAorIworIyBSZXN0cmljdGVkIHNldCBvZiBkZWJ1Z2ZzIGNvbW1hbmRzCisjCisjIENvcHlyaWdodCAoQykgMTk5MyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorIworY29tbWFuZF90YWJsZSBkZWJ1Z19jbWRzOworCityZXF1ZXN0IGRvX3Nob3dfZGVidWdmc19wYXJhbXMsICJTaG93IGRlYnVnZnMgcGFyYW1ldGVycyIsCisJc2hvd19kZWJ1Z2ZzX3BhcmFtcywgcGFyYW1zOworCityZXF1ZXN0IGRvX29wZW5fZmlsZXN5cywgIk9wZW4gYSBmaWxlc3lzdGVtIiwKKwlvcGVuX2ZpbGVzeXMsIG9wZW47CisKK3JlcXVlc3QgZG9fY2xvc2VfZmlsZXN5cywgIkNsb3NlIHRoZSBmaWxlc3lzdGVtIiwKKwljbG9zZV9maWxlc3lzLCBjbG9zZTsKKworcmVxdWVzdCBkb19mcmVlZnJhZywgIlJlcG9ydCBmcmVlIHNwYWNlIGZyYWdtZW50YXRpb24iLAorCWZyZWVmcmFnLCBlMmZyZWVmcmFnOworCityZXF1ZXN0IGRvX3Nob3dfc3VwZXJfc3RhdHMsICJTaG93IHN1cGVyYmxvY2sgc3RhdGlzdGljcyIsCisJc2hvd19zdXBlcl9zdGF0cywgc3RhdHM7CisKK3JlcXVlc3QgZG9fbmNoZWNrLCAiRG8gaW5vZGUtPm5hbWUgdHJhbnNsYXRpb24iLAorCW5jaGVjazsKKworcmVxdWVzdCBkb19pY2hlY2ssICJEbyBibG9jay0+aW5vZGUgdHJhbnNsYXRpb24iLAorCWljaGVjazsKKworcmVxdWVzdCBkb19jaHJvb3QsICJDaGFuZ2Ugcm9vdCBkaXJlY3RvcnkiLAorCWNoYW5nZV9yb290X2RpcmVjdG9yeSwgY2hyb290OworCityZXF1ZXN0IGRvX2NoYW5nZV93b3JraW5nX2RpciwgIkNoYW5nZSB3b3JraW5nIGRpcmVjdG9yeSIsCisJY2hhbmdlX3dvcmtpbmdfZGlyZWN0b3J5LCBjZDsKKworcmVxdWVzdCBkb19saXN0X2RpciwgIkxpc3QgZGlyZWN0b3J5IiwKKwlsaXN0X2RpcmVjdG9yeSwgbHM7CisKK3JlcXVlc3QgZG9fc3RhdCwgIlNob3cgaW5vZGUgaW5mb3JtYXRpb24gIiwKKwlzaG93X2lub2RlX2luZm8sIHN0YXQ7CisKK3JlcXVlc3QgZG9fZHVtcF9leHRlbnRzLCAiRHVtcCBleHRlbnRzIGluZm9ybWF0aW9uICIsCisJZHVtcF9leHRlbnRzLCBleHRlbnRzLCBleDsKKworcmVxdWVzdCBkb19ibG9ja3MsICJEdW1wIGJsb2NrcyB1c2VkIGJ5IGFuIGlub2RlICIsCisJYmxvY2tzOworCityZXF1ZXN0IGRvX2ZpbGVmcmFnLCAiUmVwb3J0IGZyYWdtZW50YXRpb24gaW5mb3JtYXRpb24gZm9yIGFuIGlub2RlIiwKKwlmaWxlZnJhZzsKKworcmVxdWVzdCBkb190ZXN0aSwgIlRlc3QgYW4gaW5vZGUncyBpbi11c2UgZmxhZyIsCisJdGVzdGk7CisKK3JlcXVlc3QgZG9fZmluZF9mcmVlX2Jsb2NrLCAiRmluZCBmcmVlIGJsb2NrKHMpIiwKKwlmaW5kX2ZyZWVfYmxvY2ssIGZmYjsKKworcmVxdWVzdCBkb19maW5kX2ZyZWVfaW5vZGUsICJGaW5kIGZyZWUgaW5vZGUocykiLAorCWZpbmRfZnJlZV9pbm9kZSwgZmZpOworCityZXF1ZXN0CWRvX3ByaW50X3dvcmtpbmdfZGlyZWN0b3J5LCAiUHJpbnQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSIsCisJcHJpbnRfd29ya2luZ19kaXJlY3RvcnksIHB3ZDsgCisKK3JlcXVlc3QgZG9fbHNkZWwsICJMaXN0IGRlbGV0ZWQgaW5vZGVzIiwKKwlsaXN0X2RlbGV0ZWRfaW5vZGVzLCBsc2RlbDsKKworcmVxdWVzdCBkb19sb2dkdW1wLCAiRHVtcCB0aGUgY29udGVudHMgb2YgdGhlIGpvdXJuYWwiLAorCWxvZ2R1bXA7CisKK3JlcXVlc3QgZG9faHRyZWVfZHVtcCwgIkR1bXAgYSBoYXNoLWluZGV4ZWQgZGlyZWN0b3J5IiwKKwlodHJlZV9kdW1wLCBodHJlZTsKKworcmVxdWVzdCBkb19keF9oYXNoLCAiQ2FsY3VsYXRlIHRoZSBkaXJlY3RvcnkgaGFzaCBvZiBhIGZpbGVuYW1lIiwKKwlkeF9oYXNoLCBoYXNoOworCityZXF1ZXN0IGRvX2RpcnNlYXJjaCwgIlNlYXJjaCBhIGRpcmVjdG9yeSBmb3IgYSBwYXJ0aWN1bGFyIGZpbGVuYW1lIiwKKwlkaXJzZWFyY2g7CisKK3JlcXVlc3QgZG9fYm1hcCwgIkNhbGN1bGF0ZSB0aGUgbG9naWNhbC0+cGh5c2ljYWwgYmxvY2sgbWFwcGluZyBmb3IgYW4gaW5vZGUiLAorCWJtYXA7CisKK3JlcXVlc3QgZG9faW1hcCwgIkNhbGN1bGF0ZSB0aGUgbG9jYXRpb24gb2YgYW4gaW5vZGUiLAorCWltYXA7CisKK3JlcXVlc3QgZG9fc3VwcG9ydGVkX2ZlYXR1cmVzLCAiUHJpbnQgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgdmVyc2lvbiBvZiBlMmZzcHJvZ3MiLAorCXN1cHBvcnRlZF9mZWF0dXJlczsKKworcmVxdWVzdCBkb19kdW1wX21tcCwgIkR1bXAgTU1QIGluZm9ybWF0aW9uIiwKKwlkdW1wX21tcDsKKworcmVxdWVzdCBkb19leHRlbnRfb3BlbiwgIk9wZW4gaW5vZGUgZm9yIGV4dGVudCBtYW5pcHVsYXRpb24iLAorCWV4dGVudF9vcGVuLCBlbzsKKworcmVxdWVzdCBkb19saXN0X3F1b3RhLCAiTGlzdCBxdW90YSIsCisJbG9zdF9xdW90YSwgbHE7CisKK3JlcXVlc3QgZG9fZ2V0X3F1b3RhLCAiR2V0IHF1b3RhIiwKKwlnZXRfcXVvdGEsIGdxOworCitlbmQ7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy9zZXRfZmllbGRzLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy9zZXRfZmllbGRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY5YjdiNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3NldF9maWVsZHMuYwpAQCAtMCwwICsxLDkzMSBAQAorLyoKKyAqIHNldF9maWVsZHMuYyAtLS0gc2V0IGEgc3VwZXJibG9jayB2YWx1ZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMCAvKiBmb3IgaW5jbHVzaW9uIG9mIHN0cnB0aW1lKCkgYW5kIHN0cnRvdWxsICovCisKKyNpZmRlZiBIQVZFX1NUUlRPVUxMCisjZGVmaW5lIFNUUlRPVUxMIHN0cnRvdWxsCisjZWxzZQorI2RlZmluZSBTVFJUT1VMTCBzdHJ0b3VsCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2lmIEhBVkVfU1RSSU5HU19ICisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1dGltZS5oPgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3F1b3RhaW8uaCIKKworc3RhdGljIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHNldF9zYjsKK3N0YXRpYyBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBzZXRfaW5vZGU7CitzdGF0aWMgc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyBzZXRfZ2Q7CitzdGF0aWMgc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyBzZXRfZ2Q0Oworc3RhdGljIHN0cnVjdCBtbXBfc3RydWN0IHNldF9tbXA7CitzdGF0aWMgZGdycF90IHNldF9iZzsKK3N0YXRpYyBleHQyX2lub190IHNldF9pbm87CitzdGF0aWMgaW50IGFycmF5X2lkeDsKKworI2RlZmluZSBGTEFHX0FSUkFZCTB4MDAwMQorI2RlZmluZSBGTEFHX0FMSUFTCTB4MDAwMgkvKiBEYXRhIGludGVyc2VjdHMgd2l0aCBvdGhlciBmaWVsZCAqLworCitzdHJ1Y3QgZmllbGRfc2V0X2luZm8geworCWNvbnN0IGNoYXIJKm5hbWU7CisJdm9pZAkqcHRyOworCXZvaWQJKnB0cjI7CisJdW5zaWduZWQgaW50CXNpemU7CisJZXJyY29kZV90ICgqZnVuYykoc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLCBjaGFyICpmaWVsZCwgY2hhciAqYXJnKTsKKwlpbnQgZmxhZ3M7CisJaW50IG1heF9pZHg7Cit9OworCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX3VpbnQoc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLCBjaGFyICpmaWVsZCwgY2hhciAqYXJnKTsKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2VfaW50KHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywgY2hhciAqZmllbGQsIGNoYXIgKmFyZyk7CitzdGF0aWMgZXJyY29kZV90IHBhcnNlX3N0cmluZyhzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sIGNoYXIgKmZpZWxkLCBjaGFyICphcmcpOworc3RhdGljIGVycmNvZGVfdCBwYXJzZV91dWlkKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywgY2hhciAqZmllbGQsIGNoYXIgKmFyZyk7CitzdGF0aWMgZXJyY29kZV90IHBhcnNlX2hhc2hhbGcoc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLCBjaGFyICpmaWVsZCwgY2hhciAqYXJnKTsKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2VfdGltZShzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sIGNoYXIgKmZpZWxkLCBjaGFyICphcmcpOworc3RhdGljIGVycmNvZGVfdCBwYXJzZV9ibWFwKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywgY2hhciAqZmllbGQsIGNoYXIgKmFyZyk7CitzdGF0aWMgZXJyY29kZV90IHBhcnNlX2dkX2NzdW0oc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLCBjaGFyICpmaWVsZCwgY2hhciAqYXJnKTsKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2VfbW1wX2NsZWFyKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywgY2hhciAqZmllbGQsCisJCQkJIGNoYXIgKmFyZyk7CisKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgorCitzdGF0aWMgc3RydWN0IGZpZWxkX3NldF9pbmZvIHN1cGVyX2ZpZWxkc1tdID0geworCXsgImlub2Rlc19jb3VudCIsICZzZXRfc2Iuc19pbm9kZXNfY291bnQsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJibG9ja3NfY291bnQiLCAmc2V0X3NiLnNfYmxvY2tzX2NvdW50LCAmc2V0X3NiLnNfYmxvY2tzX2NvdW50X2hpLAorCQk0LCBwYXJzZV91aW50IH0sCisJeyAicl9ibG9ja3NfY291bnQiLCAmc2V0X3NiLnNfcl9ibG9ja3NfY291bnQsCisJCSZzZXRfc2Iuc19yX2Jsb2Nrc19jb3VudF9oaSwgNCwgcGFyc2VfdWludCB9LAorCXsgImZyZWVfYmxvY2tzX2NvdW50IiwgJnNldF9zYi5zX2ZyZWVfYmxvY2tzX2NvdW50LAorCQkmc2V0X3NiLnNfZnJlZV9ibG9ja3NfaGksIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJmcmVlX2lub2Rlc19jb3VudCIsICZzZXRfc2Iuc19mcmVlX2lub2Rlc19jb3VudCwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImZpcnN0X2RhdGFfYmxvY2siLCAmc2V0X3NiLnNfZmlyc3RfZGF0YV9ibG9jaywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImxvZ19ibG9ja19zaXplIiwgJnNldF9zYi5zX2xvZ19ibG9ja19zaXplLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAibG9nX2NsdXN0ZXJfc2l6ZSIsICZzZXRfc2Iuc19sb2dfY2x1c3Rlcl9zaXplLCBOVUxMLCA0LCBwYXJzZV9pbnQgfSwKKwl7ICJibG9ja3NfcGVyX2dyb3VwIiwgJnNldF9zYi5zX2Jsb2Nrc19wZXJfZ3JvdXAsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJjbHVzdGVyc19wZXJfZ3JvdXAiLCAmc2V0X3NiLnNfY2x1c3RlcnNfcGVyX2dyb3VwLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiaW5vZGVzX3Blcl9ncm91cCIsICZzZXRfc2Iuc19pbm9kZXNfcGVyX2dyb3VwLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAibXRpbWUiLCAmc2V0X3NiLnNfbXRpbWUsIE5VTEwsIDQsIHBhcnNlX3RpbWUgfSwKKwl7ICJ3dGltZSIsICZzZXRfc2Iuc193dGltZSwgTlVMTCwgNCwgcGFyc2VfdGltZSB9LAorCXsgIm1udF9jb3VudCIsICZzZXRfc2Iuc19tbnRfY291bnQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJtYXhfbW50X2NvdW50IiwgJnNldF9zYi5zX21heF9tbnRfY291bnQsIE5VTEwsIDIsIHBhcnNlX2ludCB9LAorCS8qIHNfbWFnaWMgKi8KKwl7ICJzdGF0ZSIsICZzZXRfc2Iuc19zdGF0ZSwgTlVMTCwgMiwgcGFyc2VfdWludCB9LAorCXsgImVycm9ycyIsICZzZXRfc2Iuc19lcnJvcnMsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJtaW5vcl9yZXZfbGV2ZWwiLCAmc2V0X3NiLnNfbWlub3JfcmV2X2xldmVsLCBOVUxMLCAyLCBwYXJzZV91aW50IH0sCisJeyAibGFzdGNoZWNrIiwgJnNldF9zYi5zX2xhc3RjaGVjaywgTlVMTCwgNCwgcGFyc2VfdGltZSB9LAorCXsgImNoZWNraW50ZXJ2YWwiLCAmc2V0X3NiLnNfY2hlY2tpbnRlcnZhbCwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImNyZWF0b3Jfb3MiLCAmc2V0X3NiLnNfY3JlYXRvcl9vcywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgInJldl9sZXZlbCIsICZzZXRfc2Iuc19yZXZfbGV2ZWwsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJkZWZfcmVzdWlkIiwgJnNldF9zYi5zX2RlZl9yZXN1aWQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJkZWZfcmVzZ2lkIiwgJnNldF9zYi5zX2RlZl9yZXNnaWQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJmaXJzdF9pbm8iLCAmc2V0X3NiLnNfZmlyc3RfaW5vLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiaW5vZGVfc2l6ZSIsICZzZXRfc2Iuc19pbm9kZV9zaXplLCBOVUxMLCAyLCBwYXJzZV91aW50IH0sCisJeyAiYmxvY2tfZ3JvdXBfbnIiLCAmc2V0X3NiLnNfYmxvY2tfZ3JvdXBfbnIsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJmZWF0dXJlX2NvbXBhdCIsICZzZXRfc2Iuc19mZWF0dXJlX2NvbXBhdCwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImZlYXR1cmVfaW5jb21wYXQiLCAmc2V0X3NiLnNfZmVhdHVyZV9pbmNvbXBhdCwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImZlYXR1cmVfcm9fY29tcGF0IiwgJnNldF9zYi5zX2ZlYXR1cmVfcm9fY29tcGF0LCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAidXVpZCIsICZzZXRfc2Iuc191dWlkLCBOVUxMLCAxNiwgcGFyc2VfdXVpZCB9LAorCXsgInZvbHVtZV9uYW1lIiwgICZzZXRfc2Iuc192b2x1bWVfbmFtZSwgTlVMTCwgMTYsIHBhcnNlX3N0cmluZyB9LAorCXsgImxhc3RfbW91bnRlZCIsICAmc2V0X3NiLnNfbGFzdF9tb3VudGVkLCBOVUxMLCA2NCwgcGFyc2Vfc3RyaW5nIH0sCisJeyAiYWxnb3JpdGhtX3VzYWdlX2JpdG1hcCIsICZzZXRfc2Iuc19hbGdvcml0aG1fdXNhZ2VfYml0bWFwLCBOVUxMLAorCQkgIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJwcmVhbGxvY19ibG9ja3MiLCAmc2V0X3NiLnNfcHJlYWxsb2NfYmxvY2tzLCBOVUxMLCAxLCBwYXJzZV91aW50IH0sCisJeyAicHJlYWxsb2NfZGlyX2Jsb2NrcyIsICZzZXRfc2Iuc19wcmVhbGxvY19kaXJfYmxvY2tzLCBOVUxMLCAxLAorCQkgIHBhcnNlX3VpbnQgfSwKKwl7ICJyZXNlcnZlZF9nZHRfYmxvY2tzIiwgJnNldF9zYi5zX3Jlc2VydmVkX2dkdF9ibG9ja3MsIE5VTEwsIDIsCisJCSAgcGFyc2VfdWludCB9LAorCXsgImpvdXJuYWxfdXVpZCIsICZzZXRfc2Iuc19qb3VybmFsX3V1aWQsIE5VTEwsIDE2LCBwYXJzZV91dWlkIH0sCisJeyAiam91cm5hbF9pbnVtIiwgJnNldF9zYi5zX2pvdXJuYWxfaW51bSwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImpvdXJuYWxfZGV2IiwgJnNldF9zYi5zX2pvdXJuYWxfZGV2LCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAibGFzdF9vcnBoYW4iLCAmc2V0X3NiLnNfbGFzdF9vcnBoYW4sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJoYXNoX3NlZWQiLCAmc2V0X3NiLnNfaGFzaF9zZWVkLCBOVUxMLCAxNiwgcGFyc2VfdXVpZCB9LAorCXsgImRlZl9oYXNoX3ZlcnNpb24iLCAmc2V0X3NiLnNfZGVmX2hhc2hfdmVyc2lvbiwgTlVMTCwgMSwgcGFyc2VfaGFzaGFsZyB9LAorCXsgImpubF9iYWNrdXBfdHlwZSIsICZzZXRfc2Iuc19qbmxfYmFja3VwX3R5cGUsIE5VTEwsIDEsIHBhcnNlX3VpbnQgfSwKKwl7ICJkZXNjX3NpemUiLCAmc2V0X3NiLnNfZGVzY19zaXplLCBOVUxMLCAyLCBwYXJzZV91aW50IH0sCisJeyAiZGVmYXVsdF9tb3VudF9vcHRzIiwgJnNldF9zYi5zX2RlZmF1bHRfbW91bnRfb3B0cywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImZpcnN0X21ldGFfYmciLCAmc2V0X3NiLnNfZmlyc3RfbWV0YV9iZywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgIm1rZnNfdGltZSIsICZzZXRfc2Iuc19ta2ZzX3RpbWUsIE5VTEwsIDQsIHBhcnNlX3RpbWUgfSwKKwl7ICJqbmxfYmxvY2tzIiwgJnNldF9zYi5zX2pubF9ibG9ja3NbMF0sIE5VTEwsIDQsIHBhcnNlX3VpbnQsIEZMQUdfQVJSQVksCisJICAxNyB9LAorCXsgIm1pbl9leHRyYV9pc2l6ZSIsICZzZXRfc2Iuc19taW5fZXh0cmFfaXNpemUsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJ3YW50X2V4dHJhX2lzaXplIiwgJnNldF9zYi5zX3dhbnRfZXh0cmFfaXNpemUsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJmbGFncyIsICZzZXRfc2Iuc19mbGFncywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgInJhaWRfc3RyaWRlIiwgJnNldF9zYi5zX3JhaWRfc3RyaWRlLCBOVUxMLCAyLCBwYXJzZV91aW50IH0sCisJeyAibW1wX2ludGVydmFsIiwgJnNldF9zYi5zX21tcF91cGRhdGVfaW50ZXJ2YWwsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJtbXBfYmxvY2siLCAmc2V0X3NiLnNfbW1wX2Jsb2NrLCBOVUxMLCA4LCBwYXJzZV91aW50IH0sCisJeyAicmFpZF9zdHJpcGVfd2lkdGgiLCAmc2V0X3NiLnNfcmFpZF9zdHJpcGVfd2lkdGgsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJsb2dfZ3JvdXBzX3Blcl9mbGV4IiwgJnNldF9zYi5zX2xvZ19ncm91cHNfcGVyX2ZsZXgsIE5VTEwsIDEsIHBhcnNlX3VpbnQgfSwKKwl7ICJrYnl0ZXNfd3JpdHRlbiIsICZzZXRfc2Iuc19rYnl0ZXNfd3JpdHRlbiwgTlVMTCwgOCwgcGFyc2VfdWludCB9LAorCXsgInNuYXBzaG90X2ludW0iLCAmc2V0X3NiLnNfc25hcHNob3RfaW51bSwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgInNuYXBzaG90X2lkIiwgJnNldF9zYi5zX3NuYXBzaG90X2lkLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAic25hcHNob3Rfcl9ibG9ja3NfY291bnQiLCAmc2V0X3NiLnNfc25hcHNob3Rfcl9ibG9ja3NfY291bnQsCisJICBOVUxMLCA4LCBwYXJzZV91aW50IH0sCisJeyAic25hcHNob3RfbGlzdCIsICZzZXRfc2Iuc19zbmFwc2hvdF9saXN0LCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAibW91bnRfb3B0cyIsICAmc2V0X3NiLnNfbW91bnRfb3B0cywgTlVMTCwgNjQsIHBhcnNlX3N0cmluZyB9LAorCXsgInVzcl9xdW90YV9pbnVtIiwgJnNldF9zYi5zX3Vzcl9xdW90YV9pbnVtLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiZ3JwX3F1b3RhX2ludW0iLCAmc2V0X3NiLnNfZ3JwX3F1b3RhX2ludW0sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJwcmpfcXVvdGFfaW51bSIsICZzZXRfc2Iuc19wcmpfcXVvdGFfaW51bSwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgIm92ZXJoZWFkX2Jsb2NrcyIsICZzZXRfc2Iuc19vdmVyaGVhZF9ibG9ja3MsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJiYWNrdXBfYmdzIiwgJnNldF9zYi5zX2JhY2t1cF9iZ3NbMF0sIE5VTEwsIDQsIHBhcnNlX3VpbnQsCisJICBGTEFHX0FSUkFZLCAyIH0sCisJeyAiY2hlY2tzdW0iLCAmc2V0X3NiLnNfY2hlY2tzdW0sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJjaGVja3N1bV90eXBlIiwgJnNldF9zYi5zX2NoZWNrc3VtX3R5cGUsIE5VTEwsIDEsIHBhcnNlX3VpbnQgfSwKKwl7ICJlbmNyeXB0aW9uX2xldmVsIiwgJnNldF9zYi5zX2VuY3J5cHRpb25fbGV2ZWwsIE5VTEwsIDEsIHBhcnNlX3VpbnQgfSwKKwl7ICJlcnJvcl9jb3VudCIsICZzZXRfc2Iuc19lcnJvcl9jb3VudCwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImZpcnN0X2Vycm9yX3RpbWUiLCAmc2V0X3NiLnNfZmlyc3RfZXJyb3JfdGltZSwgTlVMTCwgNCwgcGFyc2VfdGltZSB9LAorCXsgImZpcnN0X2Vycm9yX2lubyIsICZzZXRfc2Iuc19maXJzdF9lcnJvcl9pbm8sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJmaXJzdF9lcnJvcl9ibG9jayIsICZzZXRfc2Iuc19maXJzdF9lcnJvcl9ibG9jaywgTlVMTCwgOCwgcGFyc2VfdWludCB9LAorCXsgImZpcnN0X2Vycm9yX2Z1bmMiLCAmc2V0X3NiLnNfZmlyc3RfZXJyb3JfZnVuYywgTlVMTCwgMzIsIHBhcnNlX3N0cmluZyB9LAorCXsgImZpcnN0X2Vycm9yX2xpbmUiLCAmc2V0X3NiLnNfZmlyc3RfZXJyb3JfbGluZSwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImxhc3RfZXJyb3JfdGltZSIsICZzZXRfc2Iuc19sYXN0X2Vycm9yX3RpbWUsIE5VTEwsIDQsIHBhcnNlX3RpbWUgfSwKKwl7ICJsYXN0X2Vycm9yX2lubyIsICZzZXRfc2Iuc19sYXN0X2Vycm9yX2lubywgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImxhc3RfZXJyb3JfYmxvY2siLCAmc2V0X3NiLnNfbGFzdF9lcnJvcl9ibG9jaywgTlVMTCwgOCwgcGFyc2VfdWludCB9LAorCXsgImxhc3RfZXJyb3JfZnVuYyIsICZzZXRfc2Iuc19sYXN0X2Vycm9yX2Z1bmMsIE5VTEwsIDMyLCBwYXJzZV9zdHJpbmcgfSwKKwl7ICJsYXN0X2Vycm9yX2xpbmUiLCAmc2V0X3NiLnNfbGFzdF9lcnJvcl9saW5lLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiZW5jcnlwdF9hbGdvcyIsICZzZXRfc2Iuc19lbmNyeXB0X2FsZ29zLCBOVUxMLCAxLCBwYXJzZV91aW50LAorCSAgRkxBR19BUlJBWSwgNCB9LAorCXsgImVuY3J5cHRfcHdfc2FsdCIsICZzZXRfc2Iuc19lbmNyeXB0X3B3X3NhbHQsIE5VTEwsIDE2LCBwYXJzZV91dWlkIH0sCisJeyAibHBmX2lubyIsICZzZXRfc2Iuc19scGZfaW5vLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiY2hlY2tzdW1fc2VlZCIsICZzZXRfc2Iuc19jaGVja3N1bV9zZWVkLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAwLCAwLCAwLCAwIH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgZmllbGRfc2V0X2luZm8gaW5vZGVfZmllbGRzW10gPSB7CisJeyAibW9kZSIsICZzZXRfaW5vZGUuaV9tb2RlLCBOVUxMLCAyLCBwYXJzZV91aW50IH0sCisJeyAidWlkIiwgJnNldF9pbm9kZS5pX3VpZCwgJnNldF9pbm9kZS5vc2QyLmxpbnV4Mi5sX2lfdWlkX2hpZ2gsCisJCTIsIHBhcnNlX3VpbnQgfSwKKwl7ICJzaXplIiwgJnNldF9pbm9kZS5pX3NpemUsICZzZXRfaW5vZGUuaV9zaXplX2hpZ2gsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJhdGltZSIsICZzZXRfaW5vZGUuaV9hdGltZSwgJnNldF9pbm9kZS5pX2F0aW1lX2V4dHJhLAorCQk0LCBwYXJzZV90aW1lIH0sCisJeyAiY3RpbWUiLCAmc2V0X2lub2RlLmlfY3RpbWUsICZzZXRfaW5vZGUuaV9jdGltZV9leHRyYSwKKwkJNCwgcGFyc2VfdGltZSB9LAorCXsgIm10aW1lIiwgJnNldF9pbm9kZS5pX210aW1lLCAmc2V0X2lub2RlLmlfbXRpbWVfZXh0cmEsCisJCTQsIHBhcnNlX3RpbWUgfSwKKwl7ICJkdGltZSIsICZzZXRfaW5vZGUuaV9kdGltZSwgTlVMTCwKKwkJNCwgcGFyc2VfdGltZSB9LAorCXsgImdpZCIsICZzZXRfaW5vZGUuaV9naWQsICZzZXRfaW5vZGUub3NkMi5saW51eDIubF9pX2dpZF9oaWdoLAorCQkyLCBwYXJzZV91aW50IH0sCisJeyAibGlua3NfY291bnQiLCAmc2V0X2lub2RlLmlfbGlua3NfY291bnQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwkvKiBTcGVjaWFsIGNhc2U6IGlfYmxvY2tzIGlzIDQgYnl0ZXMsIGlfYmxvY2tzX2hpZ2ggaXMgMiBieXRlcyAqLworCXsgImJsb2NrcyIsICZzZXRfaW5vZGUuaV9ibG9ja3MsICZzZXRfaW5vZGUub3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSwKKwkJNiwgcGFyc2VfdWludCB9LAorCXsgImZsYWdzIiwgJnNldF9pbm9kZS5pX2ZsYWdzLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAidmVyc2lvbiIsICZzZXRfaW5vZGUub3NkMS5saW51eDEubF9pX3ZlcnNpb24sCisJCSZzZXRfaW5vZGUuaV92ZXJzaW9uX2hpLCA0LCBwYXJzZV91aW50IH0sCisJeyAidHJhbnNsYXRvciIsICZzZXRfaW5vZGUub3NkMS5odXJkMS5oX2lfdHJhbnNsYXRvciwgTlVMTCwKKwkJNCwgcGFyc2VfdWludCwgRkxBR19BTElBUyB9LAorCXsgImJsb2NrIiwgJnNldF9pbm9kZS5pX2Jsb2NrWzBdLCBOVUxMLCA0LCBwYXJzZV91aW50LCBGTEFHX0FSUkFZLAorCSAgRVhUMl9ORElSX0JMT0NLUyB9LAorCXsgImJsb2NrW0lORF0iLCAmc2V0X2lub2RlLmlfYmxvY2tbRVhUMl9JTkRfQkxPQ0tdLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiYmxvY2tbRElORF0iLCAmc2V0X2lub2RlLmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSwgTlVMTCwgNCwgcGFyc2VfdWludCB9LAorCXsgImJsb2NrW1RJTkRdIiwgJnNldF9pbm9kZS5pX2Jsb2NrW0VYVDJfVElORF9CTE9DS10sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJnZW5lcmF0aW9uIiwgJnNldF9pbm9kZS5pX2dlbmVyYXRpb24sIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwkvKiBTcGVjaWFsIGNhc2U6IGlfZmlsZV9hY2xfaGlnaCBpcyAyIGJ5dGVzICovCisJeyAiZmlsZV9hY2wiLCAmc2V0X2lub2RlLmlfZmlsZV9hY2wsIAorCQkmc2V0X2lub2RlLm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoLCA2LCBwYXJzZV91aW50IH0sCisJeyAiZGlyX2FjbCIsICZzZXRfaW5vZGUuaV9kaXJfYWNsLCBOVUxMLCA0LCBwYXJzZV91aW50LCBGTEFHX0FMSUFTIH0sCisJeyAiZmFkZHIiLCAmc2V0X2lub2RlLmlfZmFkZHIsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJmcmFnIiwgJnNldF9pbm9kZS5vc2QyLmh1cmQyLmhfaV9mcmFnLCBOVUxMLCAxLCBwYXJzZV91aW50LCBGTEFHX0FMSUFTIH0sCisJeyAiZnNpemUiLCAmc2V0X2lub2RlLm9zZDIuaHVyZDIuaF9pX2ZzaXplLCBOVUxMLCAxLCBwYXJzZV91aW50IH0sCisJeyAiY2hlY2tzdW0iLCAmc2V0X2lub2RlLm9zZDIubGludXgyLmxfaV9jaGVja3N1bV9sbywgCisJCSZzZXRfaW5vZGUuaV9jaGVja3N1bV9oaSwgMiwgcGFyc2VfdWludCB9LAorCXsgImF1dGhvciIsICZzZXRfaW5vZGUub3NkMi5odXJkMi5oX2lfYXV0aG9yLCBOVUxMLAorCQk0LCBwYXJzZV91aW50LCBGTEFHX0FMSUFTIH0sCisJeyAiZXh0cmFfaXNpemUiLCAmc2V0X2lub2RlLmlfZXh0cmFfaXNpemUsIE5VTEwsCisJCTIsIHBhcnNlX3VpbnQgfSwKKwl7ICJjdGltZV9leHRyYSIsICZzZXRfaW5vZGUuaV9jdGltZV9leHRyYSwgTlVMTCwKKwkJNCwgcGFyc2VfdWludCwgRkxBR19BTElBUyB9LAorCXsgIm10aW1lX2V4dHJhIiwgJnNldF9pbm9kZS5pX210aW1lX2V4dHJhLCBOVUxMLAorCQk0LCBwYXJzZV91aW50LCBGTEFHX0FMSUFTICB9LAorCXsgImF0aW1lX2V4dHJhIiwgJnNldF9pbm9kZS5pX2F0aW1lX2V4dHJhLCBOVUxMLAorCQk0LCBwYXJzZV91aW50LCBGTEFHX0FMSUFTIH0sCisJeyAiY3J0aW1lIiwgJnNldF9pbm9kZS5pX2NydGltZSwgJnNldF9pbm9kZS5pX2NydGltZV9leHRyYSwKKwkJNCwgcGFyc2VfdGltZSB9LAorCXsgImNydGltZV9leHRyYSIsICZzZXRfaW5vZGUuaV9jcnRpbWVfZXh0cmEsIE5VTEwsCisJCTQsIHBhcnNlX3VpbnQsIEZMQUdfQUxJQVMgfSwKKwl7ICJwcm9qaWQiLCAmc2V0X2lub2RlLmlfcHJvamlkLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiYm1hcCIsIE5VTEwsIE5VTEwsIDQsIHBhcnNlX2JtYXAsIEZMQUdfQVJSQVkgfSwKKwl7IDAsIDAsIDAsIDAgfQorfTsKKworc3RhdGljIHN0cnVjdCBmaWVsZF9zZXRfaW5mbyBleHQyX2JnX2ZpZWxkc1tdID0geworCXsgImJsb2NrX2JpdG1hcCIsICZzZXRfZ2QuYmdfYmxvY2tfYml0bWFwLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAiaW5vZGVfYml0bWFwIiwgJnNldF9nZC5iZ19pbm9kZV9iaXRtYXAsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJpbm9kZV90YWJsZSIsICZzZXRfZ2QuYmdfaW5vZGVfdGFibGUsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJmcmVlX2Jsb2Nrc19jb3VudCIsICZzZXRfZ2QuYmdfZnJlZV9ibG9ja3NfY291bnQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJmcmVlX2lub2Rlc19jb3VudCIsICZzZXRfZ2QuYmdfZnJlZV9pbm9kZXNfY291bnQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJ1c2VkX2RpcnNfY291bnQiLCAmc2V0X2dkLmJnX3VzZWRfZGlyc19jb3VudCwgTlVMTCwgMiwgcGFyc2VfdWludCB9LAorCXsgImZsYWdzIiwgJnNldF9nZC5iZ19mbGFncywgTlVMTCwgMiwgcGFyc2VfdWludCB9LAorCXsgIml0YWJsZV91bnVzZWQiLCAmc2V0X2dkLmJnX2l0YWJsZV91bnVzZWQsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJjaGVja3N1bSIsICZzZXRfZ2QuYmdfY2hlY2tzdW0sIE5VTEwsIDIsIHBhcnNlX2dkX2NzdW0gfSwKKwl7IDAsIDAsIDAsIDAgfQorfTsKKworc3RhdGljIHN0cnVjdCBmaWVsZF9zZXRfaW5mbyBleHQ0X2JnX2ZpZWxkc1tdID0geworCXsgImJsb2NrX2JpdG1hcCIsICZzZXRfZ2Q0LmJnX2Jsb2NrX2JpdG1hcCwKKwkJJnNldF9nZDQuYmdfYmxvY2tfYml0bWFwX2hpLCA0LCBwYXJzZV91aW50IH0sCisJeyAiaW5vZGVfYml0bWFwIiwgJnNldF9nZDQuYmdfaW5vZGVfYml0bWFwLAorCQkmc2V0X2dkNC5iZ19pbm9kZV9iaXRtYXBfaGksIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJpbm9kZV90YWJsZSIsICZzZXRfZ2Q0LmJnX2lub2RlX3RhYmxlLAorCQkmc2V0X2dkNC5iZ19pbm9kZV90YWJsZV9oaSwgNCwgcGFyc2VfdWludCB9LAorCXsgImZyZWVfYmxvY2tzX2NvdW50IiwgJnNldF9nZDQuYmdfZnJlZV9ibG9ja3NfY291bnQsCisJCSZzZXRfZ2Q0LmJnX2ZyZWVfYmxvY2tzX2NvdW50X2hpLCAyLCBwYXJzZV91aW50IH0sCisJeyAiZnJlZV9pbm9kZXNfY291bnQiLCAmc2V0X2dkNC5iZ19mcmVlX2lub2Rlc19jb3VudCwKKwkJJnNldF9nZDQuYmdfZnJlZV9pbm9kZXNfY291bnRfaGksIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJ1c2VkX2RpcnNfY291bnQiLCAmc2V0X2dkNC5iZ191c2VkX2RpcnNfY291bnQsCisJCSZzZXRfZ2Q0LmJnX3VzZWRfZGlyc19jb3VudF9oaSwgMiwgcGFyc2VfdWludCB9LAorCXsgImZsYWdzIiwgJnNldF9nZDQuYmdfZmxhZ3MsIE5VTEwsIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJleGNsdWRlX2JpdG1hcCIsICZzZXRfZ2Q0LmJnX2V4Y2x1ZGVfYml0bWFwX2xvLAorCQkmc2V0X2dkNC5iZ19leGNsdWRlX2JpdG1hcF9oaSwgNCwgcGFyc2VfdWludCB9LAorCXsgImJsb2NrX2JpdG1hcF9jc3VtIiwgJnNldF9nZDQuYmdfYmxvY2tfYml0bWFwX2NzdW1fbG8sCisJCSZzZXRfZ2Q0LmJnX2Jsb2NrX2JpdG1hcF9jc3VtX2hpLCAyLCBwYXJzZV91aW50IH0sCisJeyAiaW5vZGVfYml0bWFwX2NzdW0iLCAmc2V0X2dkNC5iZ19pbm9kZV9iaXRtYXBfY3N1bV9sbywKKwkJJnNldF9nZDQuYmdfaW5vZGVfYml0bWFwX2NzdW1faGksIDIsIHBhcnNlX3VpbnQgfSwKKwl7ICJpdGFibGVfdW51c2VkIiwgJnNldF9nZDQuYmdfaXRhYmxlX3VudXNlZCwKKwkJJnNldF9nZDQuYmdfaXRhYmxlX3VudXNlZF9oaSwgMiwgcGFyc2VfdWludCB9LAorCXsgImNoZWNrc3VtIiwgJnNldF9nZDQuYmdfY2hlY2tzdW0sIE5VTEwsIDIsIHBhcnNlX2dkX2NzdW0gfSwKKwl7IDAsIDAsIDAsIDAgfQorfTsKKworc3RhdGljIHN0cnVjdCBmaWVsZF9zZXRfaW5mbyBtbXBfZmllbGRzW10gPSB7CisJeyAiY2xlYXIiLCAmc2V0X21tcC5tbXBfbWFnaWMsIE5VTEwsIHNpemVvZihzZXRfbW1wKSwKKwkJcGFyc2VfbW1wX2NsZWFyLCBGTEFHX0FMSUFTIH0sCisJeyAibWFnaWMiLCAmc2V0X21tcC5tbXBfbWFnaWMsIE5VTEwsIDQsIHBhcnNlX3VpbnQgfSwKKwl7ICJzZXEiLCAmc2V0X21tcC5tbXBfc2VxLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAidGltZSIsICZzZXRfbW1wLm1tcF90aW1lLCBOVUxMLCA4LCBwYXJzZV91aW50IH0sCisJeyAibm9kZW5hbWUiLCAmc2V0X21tcC5tbXBfbm9kZW5hbWUsIE5VTEwsIHNpemVvZihzZXRfbW1wLm1tcF9ub2RlbmFtZSksCisJCXBhcnNlX3N0cmluZyB9LAorCXsgImJkZXZuYW1lIiwgJnNldF9tbXAubW1wX2JkZXZuYW1lLCBOVUxMLCBzaXplb2Yoc2V0X21tcC5tbXBfYmRldm5hbWUpLAorCQlwYXJzZV9zdHJpbmcgfSwKKwl7ICJjaGVja19pbnRlcnZhbCIsICZzZXRfbW1wLm1tcF9jaGVja19pbnRlcnZhbCwgTlVMTCwgMiwgcGFyc2VfdWludCB9LAorCXsgImNoZWNrc3VtIiwgJnNldF9tbXAubW1wX2NoZWNrc3VtLCBOVUxMLCA0LCBwYXJzZV91aW50IH0sCisJeyAwLCAwLCAwLCAwIH0KK307CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorCisjaWZkZWYgVU5JVFRFU1QKKworCitzdGF0aWMgdm9pZCBkb192ZXJpZnlfZmllbGRfc2V0X2luZm8oc3RydWN0IGZpZWxkX3NldF9pbmZvICpmaWVsZHMsCisJCWNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQoreworCXN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqc3MsICpzczI7CisJY29uc3QgY2hhciAqYmVnaW4gPSAoY2hhciAqKWRhdGE7CisJY29uc3QgY2hhciAqZW5kID0gYmVnaW4gKyBzaXplOworCisJZm9yIChzcyA9IGZpZWxkcyA7IHNzLT5uYW1lIDsgc3MrKykgeworCQljb25zdCBjaGFyICpwdHI7CisKKwkJLyogQ2hlY2sgcG9pbnRlcnMgKi8KKwkJcHRyID0gc3MtPnB0cjsKKwkJYXNzZXJ0KCFwdHIgfHwgKHB0ciA+PSBiZWdpbiAmJiBwdHIgPCBlbmQpKTsKKwkJcHRyID0gc3MtPnB0cjI7CisJCWFzc2VydCghcHRyIHx8IChwdHIgPj0gYmVnaW4gJiYgcHRyIDwgZW5kKSk7CisKKwkJLyogQ2hlY2sgZnVuY3Rpb24gKi8KKwkJYXNzZXJ0KHNzLT5mdW5jKTsKKworCQlmb3IgKHNzMiA9IGZpZWxkcyA7IHNzMiAhPSBzcyA7IHNzMisrKSB7CisJCQkvKiBDaGVjayBkdXBsaWNhdGUgbmFtZXMgKi8KKwkJCWFzc2VydChzdHJjbXAoc3MtPm5hbWUsIHNzMi0+bmFtZSkpOworCisJCQlpZiAoc3MtPmZsYWdzICYgRkxBR19BTElBUyB8fCBzczItPmZsYWdzICYgRkxBR19BTElBUykKKwkJCQljb250aW51ZTsKKwkJCS8qIENoZWNrIGZhbHNlIGFsaWFzZXMsIG1pZ2h0IGJlIGNvcHktbi1wYXN0ZSBlcnJvciAqLworCQkJYXNzZXJ0KCFzcy0+cHRyIHx8IChzcy0+cHRyICE9IHNzMi0+cHRyICYmCisJCQkJCSAgICBzcy0+cHRyICE9IHNzMi0+cHRyMikpOworCQkJYXNzZXJ0KCFzcy0+cHRyMiB8fCAoc3MtPnB0cjIgIT0gc3MyLT5wdHIgJiYKKwkJCQkJICAgICBzcy0+cHRyMiAhPSBzczItPnB0cjIpKTsKKwkJfQorCX0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWRvX3ZlcmlmeV9maWVsZF9zZXRfaW5mbyhzdXBlcl9maWVsZHMsICZzZXRfc2IsIHNpemVvZihzZXRfc2IpKTsKKwlkb192ZXJpZnlfZmllbGRfc2V0X2luZm8oaW5vZGVfZmllbGRzLCAmc2V0X2lub2RlLCBzaXplb2Yoc2V0X2lub2RlKSk7CisJZG9fdmVyaWZ5X2ZpZWxkX3NldF9pbmZvKGV4dDJfYmdfZmllbGRzLCAmc2V0X2dkLCBzaXplb2Yoc2V0X2dkKSk7CisJZG9fdmVyaWZ5X2ZpZWxkX3NldF9pbmZvKGV4dDRfYmdfZmllbGRzLCAmc2V0X2dkNCwgc2l6ZW9mKHNldF9nZDQpKTsKKwlkb192ZXJpZnlfZmllbGRfc2V0X2luZm8obW1wX2ZpZWxkcywgJnNldF9tbXAsIHNpemVvZihzZXRfbW1wKSk7CisJcmV0dXJuIDA7Cit9CisKK2V4dDJfZmlsc3lzIGN1cnJlbnRfZnM7CitleHQyX2lub190IHJvb3QsIGN3ZDsKKworI2VuZGlmIC8qIFVOSVRURVNUICovCisKK3N0YXRpYyBpbnQgY2hlY2tfc3VmZml4KGNvbnN0IGNoYXIgKmZpZWxkKQoreworCWludCBsZW4gPSBzdHJsZW4oZmllbGQpOworCisJaWYgKGxlbiA8PSAzKQorCQlyZXR1cm4gMDsKKwlmaWVsZCArPSBsZW4tMzsKKwlpZiAoIXN0cmNtcChmaWVsZCwgIl9sbyIpKQorCQlyZXR1cm4gMTsKKwlpZiAoIXN0cmNtcChmaWVsZCwgIl9oaSIpKQorCQlyZXR1cm4gMjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqZmluZF9maWVsZChzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmZpZWxkcywKKwkJCQkJIGNoYXIgKmZpZWxkKQoreworCXN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqc3M7CisJY29uc3QgY2hhcgkqcHJlZml4OworCWNoYXIJCSphcmcsICpkZWxpbSwgKmlkeCwgKnRtcDsKKwlpbnQJCXN1ZmZpeCwgcHJlZml4X2xlbjsKKworCWlmIChmaWVsZHMgPT0gc3VwZXJfZmllbGRzKQorCQlwcmVmaXggPSAic18iOworCWVsc2UgaWYgKGZpZWxkcyA9PSBpbm9kZV9maWVsZHMpCisJCXByZWZpeCA9ICJpXyI7CisJZWxzZQorCQlwcmVmaXggPSAiYmdfIjsKKwlwcmVmaXhfbGVuID0gc3RybGVuKHByZWZpeCk7CisJaWYgKHN0cm5jbXAoZmllbGQsIHByZWZpeCwgcHJlZml4X2xlbikgPT0gMCkKKwkJZmllbGQgKz0gcHJlZml4X2xlbjsKKworCWFyZyA9IG1hbGxvYyhzdHJsZW4oZmllbGQpKzEpOworCWlmICghYXJnKQorCQlyZXR1cm4gTlVMTDsKKwlzdHJjcHkoYXJnLCBmaWVsZCk7CisKKwlpZHggPSBzdHJjaHIoYXJnLCAnWycpOworCWlmIChpZHgpIHsKKwkJKmlkeCsrID0gMDsKKwkJZGVsaW0gPSBpZHggKyBzdHJsZW4oaWR4KSAtIDE7CisJCWlmICghKmlkeCB8fCAqZGVsaW0gIT0gJ10nKQorCQkJaWR4ID0gMDsKKwkJZWxzZQorCQkJKmRlbGltID0gMDsKKwl9CisJLyoKKwkgKiBDYW4gd2UgcGFyc2UgdGhlIG51bWJlcj8KKwkgKi8KKwlpZiAoaWR4KSB7CisJCWFycmF5X2lkeCA9IHN0cnRvbChpZHgsICZ0bXAsIDApOworCQlpZiAoKnRtcCkgeworCQkJKigtLWlkeCkgPSAnWyc7CisJCQkqZGVsaW0gPSAnXSc7CisJCQlpZHggPSAwOworCQl9CisJfQorCisJLyoKKwkgKiBJZiB0aGVyZSBpcyBhIHZhbGlkIF9oaSBvciBhIF9sbyBzdWZmaXgsIHN0cmlwIGl0IG9mZgorCSAqLworCXN1ZmZpeCA9IGNoZWNrX3N1ZmZpeChhcmcpOworCWlmIChzdWZmaXggPiAwKQorCQlhcmdbc3RybGVuKGFyZyktM10gPSAwOworCisJZm9yIChzcyA9IGZpZWxkcyA7IHNzLT5uYW1lIDsgc3MrKykgeworCQlpZiAoc3VmZml4ICYmIHNzLT5wdHIyID09IDApCisJCQljb250aW51ZTsKKwkJaWYgKHNzLT5mbGFncyAmIEZMQUdfQVJSQVkpIHsKKwkJCWlmICghaWR4IHx8IChzdHJjbXAoc3MtPm5hbWUsIGFyZykgIT0gMCkpCisJCQkJY29udGludWU7CisJCQlpZiAoc3MtPm1heF9pZHggPiAwICYmIGFycmF5X2lkeCA+PSBzcy0+bWF4X2lkeCkKKwkJCQljb250aW51ZTsKKwkJfSBlbHNlIHsKKwkJCWlmIChzdHJjbXAoc3MtPm5hbWUsIGFyZykgIT0gMCkKKwkJCQljb250aW51ZTsKKwkJfQorCQlmcmVlKGFyZyk7CisJCXJldHVybiBzczsKKwl9CisJZnJlZShhcmcpOworCXJldHVybiBOVUxMOworfQorCisvKgorICogTm90ZTogaW5mby0+c2l6ZSA9PSA2IGlzIHNwZWNpYWw7IHRoaXMgbWVhbnMgYSBiYXNlIHNpemUgNCBieXRlcywKKyAqIGFuZCBzZWNvbmRpb3J5IChoaWdoKSBzaXplIG9mIDIgYnl0ZXMuICBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlCisgKiBzcGVjaWFsIGNhc2Ugb2YgaV9ibG9ja3NfaGlnaCBhbmQgaV9maWxlX2FjbF9oaWdoLgorICovCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX3VpbnQoc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLCBjaGFyICpmaWVsZCwKKwkJCSAgICBjaGFyICphcmcpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIG4sIG51bSwgbWFzaywgbGltaXQ7CisJaW50IHN1ZmZpeCA9IGNoZWNrX3N1ZmZpeChmaWVsZCk7CisJY2hhciAqdG1wOworCXZvaWQgKmZpZWxkMSA9IGluZm8tPnB0ciwgKmZpZWxkMiA9IGluZm8tPnB0cjI7CisJaW50IHNpemUgPSAoaW5mby0+c2l6ZSA9PSA2KSA/IDQgOiBpbmZvLT5zaXplOworCXVuaW9uIHsKKwkJX191NjQJKnB0cjY0OworCQlfX3UzMgkqcHRyMzI7CisJCV9fdTE2CSpwdHIxNjsKKwkJX191OAkqcHRyODsKKwl9IHU7CisKKwlpZiAoc3VmZml4ID09IDEpCisJCWZpZWxkMiA9IDA7CisJaWYgKHN1ZmZpeCA9PSAyKSB7CisJCWZpZWxkMSA9IGZpZWxkMjsKKwkJZmllbGQyID0gMDsKKwl9CisKKwl1LnB0cjggPSAoX191OCAqKSBmaWVsZDE7CisJaWYgKGluZm8tPmZsYWdzICYgRkxBR19BUlJBWSkKKwkJdS5wdHI4ICs9IGFycmF5X2lkeCAqIGluZm8tPnNpemU7CisKKwllcnJubyA9IDA7CisJbnVtID0gU1RSVE9VTEwoYXJnLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCB8fCBlcnJubykgeworCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IHBhcnNlICclcycgZm9yIGZpZWxkICVzLlxuIiwKKwkJCWFyZywgaW5mby0+bmFtZSk7CisJCXJldHVybiBFSU5WQUw7CisJfQorCW1hc2sgPSB+MFVMTCA+PiAoKDggLSBzaXplKSAqIDgpOworCWxpbWl0ID0gfjBVTEwgPj4gKCg4IC0gaW5mby0+c2l6ZSkgKiA4KTsKKwlpZiAoZmllbGQyICYmIGluZm8tPnNpemUgIT0gNikKKwkJbGltaXQgPSB+MFVMTCA+PiAoKDggLSBpbmZvLT5zaXplKjIpICogOCk7CisKKwlpZiAobnVtID4gbGltaXQpIHsKKwkJZnByaW50ZihzdGRlcnIsICJWYWx1ZSAnJXMnIGV4Y2VlZHMgZmllbGQgJXMgbWF4aW11bSAlbGx1LlxuIiwKKwkJCWFyZywgaW5mby0+bmFtZSwgbGltaXQpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKwluID0gbnVtICYgbWFzazsKKwlzd2l0Y2ggKHNpemUpIHsKKwljYXNlIDg6CisJCS8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworCQlmcHJpbnRmKHN0ZGVyciwgIjY0LWJpdCBmaWVsZCAlcyBoYXMgYSBzZWNvbmQgNjQtYml0IGZpZWxkXG4iCisJCQkiZGVmaW5lZDsgQlVHPyE/XG4iLCBpbmZvLT5uYW1lKTsKKwkJKnUucHRyNjQgPSAwOworCQlicmVhazsKKwljYXNlIDQ6CisJCSp1LnB0cjMyID0gbjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQkqdS5wdHIxNiA9IG47CisJCWJyZWFrOworCWNhc2UgMToKKwkJKnUucHRyOCA9IG47CisJCWJyZWFrOworCX0KKwlpZiAoIWZpZWxkMikKKwkJcmV0dXJuIDA7CisJbiA9IG51bSA+PiAoc2l6ZSo4KTsKKwl1LnB0cjggPSAoX191OCAqKSBmaWVsZDI7CisJaWYgKGluZm8tPnNpemUgPT0gNikKKwkJc2l6ZSA9IDI7CisJc3dpdGNoIChzaXplKSB7CisJY2FzZSA4OgorCQkqdS5wdHI2NCA9IG47CisJCWJyZWFrOworCWNhc2UgNDoKKwkJKnUucHRyMzIgPSBuOworCQlicmVhazsKKwljYXNlIDI6CisJCSp1LnB0cjE2ID0gbjsKKwkJYnJlYWs7CisJY2FzZSAxOgorCQkqdS5wdHI4ID0gbjsKKwkJYnJlYWs7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX2ludChzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sCisJCQkgICBjaGFyICpmaWVsZCBFWFQyRlNfQVRUUigodW51c2VkKSksIGNoYXIgKmFyZykKK3sKKwlsb25nCW51bTsKKwljaGFyICp0bXA7CisJX19zMzIJKnB0cjMyOworCV9fczE2CSpwdHIxNjsKKwlfX3M4CSpwdHI4OworCisJbnVtID0gc3RydG9sKGFyZywgJnRtcCwgMCk7CisJaWYgKCp0bXApIHsKKwkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBwYXJzZSAnJXMnIGZvciBmaWVsZCAlcy5cbiIsCisJCQlhcmcsIGluZm8tPm5hbWUpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKwlzd2l0Y2ggKGluZm8tPnNpemUpIHsKKwljYXNlIDQ6CisJCXB0cjMyID0gKF9fczMyICopIGluZm8tPnB0cjsKKwkJKnB0cjMyID0gbnVtOworCQlicmVhazsKKwljYXNlIDI6CisJCXB0cjE2ID0gKF9fczE2ICopIGluZm8tPnB0cjsKKwkJKnB0cjE2ID0gbnVtOworCQlicmVhazsKKwljYXNlIDE6CisJCXB0cjggPSAoX19zOCAqKSBpbmZvLT5wdHI7CisJCSpwdHI4ID0gbnVtOworCQlicmVhazsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2Vfc3RyaW5nKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywKKwkJCSAgICAgIGNoYXIgKmZpZWxkIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgY2hhciAqYXJnKQoreworCWNoYXIJKmNwID0gKGNoYXIgKikgaW5mby0+cHRyOworCisJaWYgKHN0cmxlbihhcmcpID49IGluZm8tPnNpemUpIHsKKwkJZnByaW50ZihzdGRlcnIsICJFcnJvciBtYXhpbXVtIHNpemUgZm9yICVzIGlzICVkLlxuIiwKKwkJCWluZm8tPm5hbWUsIGluZm8tPnNpemUpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKwlzdHJjcHkoY3AsIGFyZyk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2VfdGltZShzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sCisJCQkgICAgY2hhciAqZmllbGQsIGNoYXIgKmFyZykKK3sKKwlfX3M2NAkJdDsKKwlfX3UzMgkJdF9sb3csIHRfaGlnaDsKKwlfX3UzMgkJKnB0cl9sb3csICpwdHJfaGlnaDsKKworCWlmIChjaGVja19zdWZmaXgoZmllbGQpKQorCQlyZXR1cm4gcGFyc2VfdWludChpbmZvLCBmaWVsZCwgYXJnKTsKKworCXB0cl9sb3cgID0gKF9fdTMyICopIGluZm8tPnB0cjsKKwlwdHJfaGlnaCA9IChfX3UzMiAqKSBpbmZvLT5wdHIyOworCisJdCA9IHN0cmluZ190b190aW1lKGFyZyk7CisKKwlpZiAodCA9PSAtMSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IHBhcnNlICclcycgZm9yIGZpZWxkICVzLlxuIiwKKwkJCWFyZywgaW5mby0+bmFtZSk7CisJCXJldHVybiBFSU5WQUw7CisJfQorCXRfbG93ID0gKF9fdTMyKSB0OworCXRfaGlnaCA9ICgodCAtIChfX3MzMil0KSA+PiAzMikgJiBFWFQ0X0VQT0NIX01BU0s7CisJKnB0cl9sb3cgPSB0X2xvdzsKKwlpZiAocHRyX2hpZ2gpCisJCSpwdHJfaGlnaCA9ICgqcHRyX2hpZ2ggJiB+RVhUNF9FUE9DSF9NQVNLKSB8IHRfaGlnaDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBwYXJzZV91dWlkKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywKKwkJCSAgICBjaGFyICpmaWVsZCBFWFQyRlNfQVRUUigodW51c2VkKSksIGNoYXIgKmFyZykKK3sKKwl1bnNpZ25lZCBjaGFyICoJcCA9ICh1bnNpZ25lZCBjaGFyICopIGluZm8tPnB0cjsKKworCWlmICgoc3RyY2FzZWNtcChhcmcsICJudWxsIikgPT0gMCkgfHwKKwkgICAgKHN0cmNhc2VjbXAoYXJnLCAiY2xlYXIiKSA9PSAwKSkgeworCQl1dWlkX2NsZWFyKHApOworCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChhcmcsICJ0aW1lIikgPT0gMCkgeworCQl1dWlkX2dlbmVyYXRlX3RpbWUocCk7CisJfSBlbHNlIGlmIChzdHJjYXNlY21wKGFyZywgInJhbmRvbSIpID09IDApIHsKKwkJdXVpZF9nZW5lcmF0ZShwKTsKKwl9IGVsc2UgaWYgKHV1aWRfcGFyc2UoYXJnLCBwKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgVVVJRCBmb3JtYXQ6ICVzXG4iLCBhcmcpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBwYXJzZV9oYXNoYWxnKHN0cnVjdCBmaWVsZF9zZXRfaW5mbyAqaW5mbywKKwkJCSAgICAgICBjaGFyICpmaWVsZCBFWFQyRlNfQVRUUigodW51c2VkKSksIGNoYXIgKmFyZykKK3sKKwlpbnQJaGFzaHY7CisJdW5zaWduZWQgY2hhcgkqcCA9ICh1bnNpZ25lZCBjaGFyICopIGluZm8tPnB0cjsKKworCWhhc2h2ID0gZTJwX3N0cmluZzJoYXNoKGFyZyk7CisJaWYgKGhhc2h2IDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgaGFzaCBhbGdvcml0aG06ICVzXG4iLCBhcmcpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKwkqcCA9IGhhc2h2OworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX2JtYXAoc3RydWN0IGZpZWxkX3NldF9pbmZvICppbmZvLAorCQkJICAgIGNoYXIgKmZpZWxkIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgY2hhciAqYXJnKQoreworCWJsazY0X3QJCWJsazsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSp0bXA7CisKKwlibGsgPSBzdHJ0b3VsbChhcmcsICZ0bXAsIDApOworCWlmICgqdG1wKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgcGFyc2UgJyVzJyBmb3IgZmllbGQgJXMuXG4iLAorCQkJYXJnLCBpbmZvLT5uYW1lKTsKKwkJcmV0dXJuIEVJTlZBTDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfYm1hcDIoY3VycmVudF9mcywgc2V0X2lubywKKwkJCSAgICAgIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSAmc2V0X2lub2RlLAorCQkJICAgICAgTlVMTCwgQk1BUF9BTExPQyB8IEJNQVBfU0VULCBhcnJheV9pZHgsIE5VTEwsCisJCQkgICAgICAmYmxrKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldF9pbm9kZSIsIHJldHZhbCwgIndoaWxlIHNldHRpbmcgYmxvY2sgbWFwIik7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcGFyc2VfZ2RfY3N1bShzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sIGNoYXIgKmZpZWxkLAorCQkJICAgICAgIGNoYXIgKmFyZykKK3sKKwlfX3UxNiAqY2hlY2tzdW0gPSBpbmZvLT5wdHI7CisKKwlpZiAoc3RyY21wKGFyZywgImNhbGMiKSA9PSAwKSB7CisJCSpjaGVja3N1bSA9IGV4dDJmc19ncm91cF9kZXNjX2NzdW0oY3VycmVudF9mcywgc2V0X2JnKTsKKwkJcHJpbnRmKCJDaGVja3N1bSBzZXQgdG8gMHglMDR4XG4iLCAqY2hlY2tzdW0pOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIHBhcnNlX3VpbnQoaW5mbywgZmllbGQsIGFyZyk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3Bvc3NpYmxlX2ZpZWxkcyhzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmZpZWxkcykKK3sKKwlzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKnNzOworCWNvbnN0IGNoYXIJKnR5cGUsICpjbWQ7CisJRklMRSAqZjsKKwljaGFyIG5hbWVbNDBdLCBpZHhbNDBdOworCisJaWYgKGZpZWxkcyA9PSBzdXBlcl9maWVsZHMpIHsKKwkJdHlwZSA9ICJTdXBlcmJsb2NrIjsKKwkJY21kID0gInNldF9zdXBlcl92YWx1ZSI7CisJfSBlbHNlIGlmIChmaWVsZHMgPT0gaW5vZGVfZmllbGRzKSB7CisJCXR5cGUgPSAiSW5vZGUiOworCQljbWQgPSAic2V0X2lub2RlIjsKKwl9IGVsc2UgaWYgKGZpZWxkcyA9PSBtbXBfZmllbGRzKSB7CisJCXR5cGUgPSAiTU1QIjsKKwkJY21kID0gInNldF9tbXBfdmFsdWUiOworCX0gZWxzZSB7CisJCXR5cGUgPSAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciI7CisJCWNtZCA9ICJzZXRfYmxvY2tfZ3JvdXAiOworCX0KKwlmID0gb3Blbl9wYWdlcigpOworCisJZnByaW50ZihmLCAiJXMgZmllbGRzIHN1cHBvcnRlZCBieSB0aGUgJXMgY29tbWFuZDpcbiIsIHR5cGUsIGNtZCk7CisKKwlmb3IgKHNzID0gZmllbGRzIDsgc3MtPm5hbWUgOyBzcysrKSB7CisJCXR5cGUgPSAidW5rbm93biI7CisJCWlmIChzcy0+ZnVuYyA9PSBwYXJzZV9zdHJpbmcpCisJCQl0eXBlID0gInN0cmluZyI7CisJCWVsc2UgaWYgKHNzLT5mdW5jID09IHBhcnNlX2ludCkKKwkJCXR5cGUgPSAiaW50ZWdlciI7CisJCWVsc2UgaWYgKHNzLT5mdW5jID09IHBhcnNlX3VpbnQpCisJCQl0eXBlID0gInVuc2lnbmVkIGludGVnZXIiOworCQllbHNlIGlmIChzcy0+ZnVuYyA9PSBwYXJzZV91dWlkKQorCQkJdHlwZSA9ICJVVUlEIjsKKwkJZWxzZSBpZiAoc3MtPmZ1bmMgPT0gcGFyc2VfaGFzaGFsZykKKwkJCXR5cGUgPSAiaGFzaCBhbGdvcml0aG0iOworCQllbHNlIGlmIChzcy0+ZnVuYyA9PSBwYXJzZV90aW1lKQorCQkJdHlwZSA9ICJkYXRlL3RpbWUiOworCQllbHNlIGlmIChzcy0+ZnVuYyA9PSBwYXJzZV9ibWFwKQorCQkJdHlwZSA9ICJzZXQgcGh5c2ljYWwtPmxvZ2ljYWwgYmxvY2sgbWFwIjsKKwkJZWxzZSBpZiAoc3MtPmZ1bmMgPT0gcGFyc2VfZ2RfY3N1bSkKKwkJCXR5cGUgPSAidW5zaWduZWQgaW50ZWdlciBPUiBcImNhbGNcIiI7CisJCXN0cmNweShuYW1lLCBzcy0+bmFtZSk7CisJCWlmIChzcy0+ZmxhZ3MgJiBGTEFHX0FSUkFZKSB7CisJCQlpZiAoc3MtPm1heF9pZHggPiAwKQorCQkJCXNwcmludGYoaWR4LCAiWyVkXSIsIHNzLT5tYXhfaWR4KTsKKwkJCWVsc2UKKwkJCQlzdHJjcHkoaWR4LCAiW10iKTsKKwkJCXN0cmNhdChuYW1lLCBpZHgpOworCQl9CisJCWlmIChzcy0+cHRyMikKKwkJCXN0cmNhdChuYW1lLCAiW19oaXxfbG9dIik7CisJCWZwcmludGYoZiwgIlx0JS0yNXNcdCVzXG4iLCBuYW1lLCB0eXBlKTsKKwl9CisJY2xvc2VfcGFnZXIoZik7Cit9CisKKwordm9pZCBkb19zZXRfc3VwZXIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljb25zdCBjaGFyICp1c2FnZSA9ICI8ZmllbGQ+IDx2YWx1ZT5cbiIKKwkJIlx0XCJzZXRfc3VwZXJfdmFsdWUgLWxcIiB3aWxsIGxpc3QgdGhlIG5hbWVzIG9mICIKKwkJInN1cGVyYmxvY2sgZmllbGRzXG5cdHdoaWNoIGNhbiBiZSBzZXQuIjsKKwlzdGF0aWMgc3RydWN0IGZpZWxkX3NldF9pbmZvICpzczsKKworCWlmICgoYXJnYyA9PSAyKSAmJiAhc3RyY21wKGFyZ3ZbMV0sICItbCIpKSB7CisJCXByaW50X3Bvc3NpYmxlX2ZpZWxkcyhzdXBlcl9maWVsZHMpOworCQlyZXR1cm47CisJfQorCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMywgMywgInNldF9zdXBlcl92YWx1ZSIsCisJCQkJdXNhZ2UsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJaWYgKChzcyA9IGZpbmRfZmllbGQoc3VwZXJfZmllbGRzLCBhcmd2WzFdKSkgPT0gMCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJpbnZhbGlkIGZpZWxkIHNwZWNpZmllcjogJXMiLCBhcmd2WzFdKTsKKwkJcmV0dXJuOworCX0KKwlzZXRfc2IgPSAqY3VycmVudF9mcy0+c3VwZXI7CisJaWYgKHNzLT5mdW5jKHNzLCBhcmd2WzFdLCBhcmd2WzJdKSA9PSAwKSB7CisJCSpjdXJyZW50X2ZzLT5zdXBlciA9IHNldF9zYjsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoY3VycmVudF9mcyk7CisJfQorfQorCit2b2lkIGRvX3NldF9pbm9kZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWNvbnN0IGNoYXIgKnVzYWdlID0gIjxpbm9kZT4gPGZpZWxkPiA8dmFsdWU+XG4iCisJCSJcdFwic2V0X2lub2RlX2ZpZWxkIC1sXCIgd2lsbCBsaXN0IHRoZSBuYW1lcyBvZiAiCisJCSJ0aGUgZmllbGRzIGluIGFuIGV4dDIgaW5vZGVcblx0d2hpY2ggY2FuIGJlIHNldC4iOworCXN0YXRpYyBzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKnNzOworCisJaWYgKChhcmdjID09IDIpICYmICFzdHJjbXAoYXJndlsxXSwgIi1sIikpIHsKKwkJcHJpbnRfcG9zc2libGVfZmllbGRzKGlub2RlX2ZpZWxkcyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCA0LCA0LCAic2V0X2lub2RlIiwKKwkJCQl1c2FnZSwgQ0hFQ0tfRlNfUlcpKQorCQlyZXR1cm47CisKKwlpZiAoKHNzID0gZmluZF9maWVsZChpbm9kZV9maWVsZHMsIGFyZ3ZbMl0pKSA9PSAwKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgImludmFsaWQgZmllbGQgc3BlY2lmaWVyOiAlcyIsIGFyZ3ZbMl0pOworCQlyZXR1cm47CisJfQorCisJc2V0X2lubyA9IHN0cmluZ190b19pbm9kZShhcmd2WzFdKTsKKwlpZiAoIXNldF9pbm8pCisJCXJldHVybjsKKworCWlmIChkZWJ1Z2ZzX3JlYWRfaW5vZGVfZnVsbChzZXRfaW5vLAorCQkJKHN0cnVjdCBleHQyX2lub2RlICopICZzZXRfaW5vZGUsIGFyZ3ZbMV0sCisJCQkJICAgIHNpemVvZihzZXRfaW5vZGUpKSkKKwkJcmV0dXJuOworCisJaWYgKHNzLT5mdW5jKHNzLCBhcmd2WzJdLCBhcmd2WzNdKSA9PSAwKSB7CisJCWlmIChkZWJ1Z2ZzX3dyaXRlX2lub2RlX2Z1bGwoc2V0X2lubywgCisJCQkgICAgIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSAmc2V0X2lub2RlLAorCQkJICAgICBhcmd2WzFdLCBzaXplb2Yoc2V0X2lub2RlKSkpCisJCQlyZXR1cm47CisJfQorfQorCit2b2lkIGRvX3NldF9ibG9ja19ncm91cF9kZXNjcmlwdG9yKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJY29uc3QgY2hhciAqdXNhZ2UgPSAiPGJnIG51bWJlcj4gPGZpZWxkPiA8dmFsdWU+XG4iCisJCSJcdFwic2V0X2Jsb2NrX2dyb3VwX2Rlc2NyaXB0b3IgLWxcIiB3aWxsIGxpc3QgdGhlIG5hbWVzIG9mICIKKwkJInRoZSBmaWVsZHMgaW4gYSBibG9jayBncm91cCBkZXNjcmlwdG9yXG5cdHdoaWNoIGNhbiBiZSBzZXQuIjsKKwlzdHJ1Y3QgZmllbGRfc2V0X2luZm8JKnRhYmxlOworCXN0cnVjdCBmaWVsZF9zZXRfaW5mbwkqc3M7CisJY2hhcgkJCSplbmQ7CisJdm9pZAkJCSplZGl0LCAqdGFyZ2V0OworCWludAkJCXNpemU7CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIGFyZSBlZGl0aW5nIGFuIGV4dDIgb3IgZXh0NCBibG9jayBncm91cAorCSAqIGRlc2NyaXB0b3IuICBEZXNjcmlwdG9ycyBsYXJnZXIgdGhhbiBleHQ0X2dyb3VwX2Rlc2MgY2Fubm90CisJICogaGF2ZSB0aGVpciBmaWVsZHMgZWRpdGVkIHlldCwgYmVjYXVzZSB0aGV5IGRvIG5vdCBoYXZlIGFueQorCSAqIG5hbWVzIGFzc2lnbmVkLiAgV2hlbiB0aGF0IGhhcHBlbnMsIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8KKwkgKiBiZSB1cGRhdGVkIGZvciB0aGUgbmV3IGRlc2NyaXB0b3Igc3RydWN0IGFuZCBmaWVsZHMuCisJICovCisJaWYgKGN1cnJlbnRfZnMgJiYKKwkgICAgRVhUMl9ERVNDX1NJWkUoY3VycmVudF9mcy0+c3VwZXIpID49IEVYVDJfTUlOX0RFU0NfU0laRV82NEJJVCkgeworCQl0YWJsZSA9IGV4dDRfYmdfZmllbGRzOworCQllZGl0ID0gJnNldF9nZDQ7CisJCXNpemUgPSBzaXplb2Yoc2V0X2dkNCk7CisJfSBlbHNlIHsKKwkJdGFibGUgPSBleHQyX2JnX2ZpZWxkczsKKwkJZWRpdCA9ICZzZXRfZ2Q7CisJCXNpemUgPSBzaXplb2Yoc2V0X2dkKTsKKwl9CisKKwlpZiAoKGFyZ2MgPT0gMikgJiYgIXN0cmNtcChhcmd2WzFdLCAiLWwiKSkgeworCQlwcmludF9wb3NzaWJsZV9maWVsZHModGFibGUpOworCQlyZXR1cm47CisJfQorCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgNCwgNCwgInNldF9ibG9ja19ncm91cF9kZXNjcmlwdG9yIiwKKwkJCQl1c2FnZSwgQ0hFQ0tfRlNfUlcpKQorCQlyZXR1cm47CisKKwlzZXRfYmcgPSBzdHJ0b3VsKGFyZ3ZbMV0sICZlbmQsIDApOworCWlmICgqZW5kKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgImludmFsaWQgYmxvY2sgZ3JvdXAgbnVtYmVyOiAlcyIsIGFyZ3ZbMV0pOworCQlyZXR1cm47CisJfQorCisJaWYgKHNldF9iZyA+PSBjdXJyZW50X2ZzLT5ncm91cF9kZXNjX2NvdW50KSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgImJsb2NrIGdyb3VwIG51bWJlciB0b28gYmlnOiAlZCIsIHNldF9iZyk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoKHNzID0gZmluZF9maWVsZCh0YWJsZSwgYXJndlsyXSkpID09IDApIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiaW52YWxpZCBmaWVsZCBzcGVjaWZpZXI6ICVzIiwgYXJndlsyXSk7CisJCXJldHVybjsKKwl9CisKKwl0YXJnZXQgPSBleHQyZnNfZ3JvdXBfZGVzYyhjdXJyZW50X2ZzLCBjdXJyZW50X2ZzLT5ncm91cF9kZXNjLCBzZXRfYmcpOworCW1lbWNweShlZGl0LCB0YXJnZXQsIHNpemUpOworCWlmIChzcy0+ZnVuYyhzcywgYXJndlsyXSwgYXJndlszXSkgPT0gMCkgeworCQltZW1jcHkodGFyZ2V0LCBlZGl0LCBzaXplKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoY3VycmVudF9mcyk7CisJfQorfQorCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX21tcF9jbGVhcihzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKmluZm8sCisJCQkJIGNoYXIgKmZpZWxkIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgY2hhciAqYXJnIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX21tcF9jbGVhcihjdXJyZW50X2ZzKTsKKwlpZiAocmV0dmFsICE9IDApCisJCWNvbV9lcnIoInNldF9tbXBfdmFsdWUiLCByZXR2YWwsICJ3aGlsZSBjbGVhcmluZyBNTVAgYmxvY2tcbiIpOworCWVsc2UKKwkJbWVtY3B5KGluZm8tPnB0ciwgY3VycmVudF9mcy0+bW1wX2J1ZiwgaW5mby0+c2l6ZSk7CisKKwlyZXR1cm4gMTsgLyogd2UgZG9uJ3QgbmVlZCB0aGUgTU1QIGJsb2NrIHdyaXR0ZW4gYWdhaW4gKi8KK30KKworI2lmZGVmIENPTkZJR19NTVAKK3ZvaWQgZG9fc2V0X21tcF92YWx1ZShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWNvbnN0IGNoYXIgKnVzYWdlID0gIjxmaWVsZD4gPHZhbHVlPlxuIgorCQkiXHRcInNldF9tbXBfdmFsdWUgLWxcIiB3aWxsIGxpc3QgdGhlIG5hbWVzIG9mICIKKwkJIk1NUCBmaWVsZHNcblx0d2hpY2ggY2FuIGJlIHNldC4iOworCXN0YXRpYyBzdHJ1Y3QgZmllbGRfc2V0X2luZm8gKnNtbXA7CisJc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcF9zOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoYXJnYyA9PSAyICYmIHN0cmNtcChhcmd2WzFdLCAiLWwiKSA9PSAwKSB7CisJCXByaW50X3Bvc3NpYmxlX2ZpZWxkcyhtbXBfZmllbGRzKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoY3VycmVudF9mcy0+c3VwZXItPnNfbW1wX2Jsb2NrID09IDApIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAibm8gTU1QIGJsb2NrIGFsbG9jYXRlZFxuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAyLCAzLCAic2V0X21tcF92YWx1ZSIsCisJCQkJdXNhZ2UsIENIRUNLX0ZTX1JXKSkKKwkJcmV0dXJuOworCisJbW1wX3MgPSBjdXJyZW50X2ZzLT5tbXBfYnVmOworCWlmIChtbXBfcyA9PSBOVUxMKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSwgJm1tcF9zKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJhbGxvY2F0aW5nIE1NUCBidWZmZXJcbiIpOworCQkJcmV0dXJuOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19tbXBfcmVhZChjdXJyZW50X2ZzLAorCQkJCQkgY3VycmVudF9mcy0+c3VwZXItPnNfbW1wX2Jsb2NrLCBtbXBfcyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAicmVhZGluZyBNTVAgYmxvY2sgJWxsdS5cbiIsCisJCQkJKGxvbmcgbG9uZyljdXJyZW50X2ZzLT5zdXBlci0+c19tbXBfYmxvY2spOworCQkJZXh0MmZzX2ZyZWVfbWVtKCZtbXBfcyk7CisJCQlyZXR1cm47CisJCX0KKwkJY3VycmVudF9mcy0+bW1wX2J1ZiA9IG1tcF9zOworCX0KKworCXNtbXAgPSBmaW5kX2ZpZWxkKG1tcF9maWVsZHMsIGFyZ3ZbMV0pOworCWlmIChzbW1wID09IDApIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiaW52YWxpZCBmaWVsZCBzcGVjaWZpZXI6ICVzIiwgYXJndlsxXSk7CisJCXJldHVybjsKKwl9CisKKwlzZXRfbW1wID0gKm1tcF9zOworCWlmIChzbW1wLT5mdW5jKHNtbXAsIGFyZ3ZbMV0sIGFyZ3ZbMl0pID09IDApIHsKKwkJZXh0MmZzX21tcF93cml0ZShjdXJyZW50X2ZzLCBjdXJyZW50X2ZzLT5zdXBlci0+c19tbXBfYmxvY2ssCisJCQkJICZzZXRfbW1wKTsKKwkJKm1tcF9zID0gc2V0X21tcDsKKwl9Cit9CisjZWxzZQordm9pZCBkb19zZXRfbW1wX3ZhbHVlKGludCBhcmdjIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgY2hhciAqYXJndltdIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlmcHJpbnRmKHN0ZG91dCwgIk1NUCBpcyB1bnN1cHBvcnRlZCwgcGxlYXNlIHJlY29tcGlsZSB3aXRoICIKKwkgICAgICAgICAgICAgICAgIi0tZW5hYmxlLW1tcFxuIik7Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RlYnVnZnMvdW51c2VkLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy91bnVzZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2IxMTkxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RlYnVnZnMvdW51c2VkLmMKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIHVudXNlZC5jIC0tLSBxdWljayBhbmQgZGlydHkgdW51c2VkIHNwYWNlIGR1bXBlcgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCit2b2lkIGRvX2R1bXBfdW51c2VkKGludCBhcmdjIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgY2hhciAqKmFyZ3YpCit7CisJYmxrNjRfdAkJYmxrOworCXVuc2lnbmVkIGNoYXIJYnVmW0VYVDJfTUFYX0JMT0NLX1NJWkVdOworCXVuc2lnbmVkIGludAlpOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAoY29tbW9uX2FyZ3NfcHJvY2VzcyhhcmdjLCBhcmd2LCAxLCAxLAorCQkJCSJkdW1wX3VudXNlZCIsICIiLCAwKSkKKwkJcmV0dXJuOworCisJZm9yIChibGs9Y3VycmVudF9mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwkgICAgIGJsayA8IGV4dDJmc19ibG9ja3NfY291bnQoY3VycmVudF9mcy0+c3VwZXIpOyBibGsrKykgeworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdXJyZW50X2ZzLT5ibG9ja19tYXAsYmxrKSkKKwkJCWNvbnRpbnVlOworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoY3VycmVudF9mcy0+aW8sIGJsaywgMSwgYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJXaGlsZSByZWFkaW5nIGJsb2NrXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCQlmb3IgKGk9MDsgaSA8IGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZTsgaSsrKQorCQkJaWYgKGJ1ZltpXSkKKwkJCQlicmVhazsKKwkJaWYgKGkgPj0gY3VycmVudF9mcy0+YmxvY2tzaXplKQorCQkJY29udGludWU7CisJCXByaW50ZigiXG5VbnVzZWQgYmxvY2sgJWxsdSBjb250YWlucyBub24temVybyBkYXRhOlxuXG4iLAorCQkgICAgICAgYmxrKTsKKwkJZm9yIChpPTA7IGkgPCBjdXJyZW50X2ZzLT5ibG9ja3NpemU7IGkrKykKKwkJCWZwdXRjKGJ1ZltpXSwgc3Rkb3V0KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy91dGlsLmMgYi9lMmZzcHJvZ3MvZGVidWdmcy91dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ1ZGU3OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3V0aWwuYwpAQCAtMCwwICsxLDU2MCBAQAorLyoKKyAqIHV0aWwuYyAtLS0gdXRpbGl0aWVzIGZvciB0aGUgZGVidWdmcyBwcm9ncmFtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0IFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlCisgKiByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorICoKKyAqLworCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIC8qIG5lZWRlZCBmb3Igc3RycHRpbWUgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorI2lmZGVmIEhBVkVfT1BUUkVTRVQKK2V4dGVybiBpbnQgb3B0cmVzZXQ7CQkvKiBkZWZpbmVkIGJ5IEJTRCwgYnV0IG5vdCBvdGhlcnMgKi8KKyNlbmRpZgorCisjaW5jbHVkZSAic3Mvc3MuaCIKKyNpbmNsdWRlICJkZWJ1Z2ZzLmgiCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgbGliYyBnZXRvcHQoKSBmdW5jdGlvbiwgd2hpY2gga2VlcHMKKyAqIGludGVybmFsIHN0YXRlLiAgQmFkIGRlc2lnbiEgIFN0dXBpZCBsaWJjIEFQSSBkZXNpZ25lcnMhICBObworICogYmlzY3VpdCEKKyAqCisgKiBCU0QtZGVyaXZlZCBnZXRvcHQoKSBmdW5jdGlvbnMgcmVxdWlyZSB0aGF0IG9wdGluZCBiZSByZXNldCB0byAxIGluCisgKiBvcmRlciB0byByZXNldCBnZXRvcHQoKSBzdGF0ZS4gIFRoaXMgdXNlZCB0byBiZSBnZW5lcmFsbHkgYWNjZXB0ZWQKKyAqIHdheSBvZiByZXNldHRpbmcgZ2V0b3B0KCkuICBIb3dldmVyLCBnbGliYydzIGdldG9wdCgpCisgKiBoYXMgYWRkaXRpb25hbCBnZXRvcHQoKSBzdGF0ZSBiZXlvbmQgb3B0aW5kLCBhbmQgcmVxdWlyZXMgdGhhdAorICogb3B0aW5kIGJlIHNldCB6ZXJvIHRvIHJlc2V0IGl0cyBzdGF0ZS4gIFNvIHRoZSB1bmZvcnR1bmF0ZSBzdGF0ZSBvZgorICogYWZmYWlycyBpcyB0aGF0IEJTRC1kZXJpdmVkIHZlcnNpb25zIG9mIGdldG9wdCgpIG1pc2JlaGF2ZSBpZgorICogb3B0aW5kIGlzIHNldCB0byAwIGluIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLCBhbmQgZ2xpYmMncyBnZXRvcHQoKQorICogd2lsbCBjb3JlIGR1bXAgaWYgb3B0aW5kIGlzIHNldCAxIGluIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLgorICoKKyAqIE1vcmUgbW9kZXJuIHZlcnNpb25zIG9mIEJTRCByZXF1aXJlIHRoYXQgb3B0cmVzZXQgYmUgc2V0IHRvIDEgaW4KKyAqIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLiAgIFNpZ2guICBTdGFuZGFyZHMsIGFueW9uZT8KKyAqCisgKiBXZSBoaWRlIHRoZSBoYWlyIGhlcmUuCisgKi8KK3ZvaWQgcmVzZXRfZ2V0b3B0KHZvaWQpCit7CisjaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19saW51eF9fKQorCW9wdGluZCA9IDA7CisjZWxzZQorCW9wdGluZCA9IDE7CisjZW5kaWYKKyNpZmRlZiBIQVZFX09QVFJFU0VUCisJb3B0cmVzZXQgPSAxOwkJLyogTWFrZXMgQlNEIGdldG9wdCBoYXBweSAqLworI2VuZGlmCit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpwYWdlcl9zZWFyY2hfbGlzdFtdID0geyAicGFnZXIiLCAibW9yZSIsICJsZXNzIiwgMCB9Oworc3RhdGljIGNvbnN0IGNoYXIgKnBhZ2VyX2Rpcl9saXN0W10gPSB7ICIvdXNyL2JpbiIsICIvYmluIiwgMCB9OworCitzdGF0aWMgY29uc3QgY2hhciAqZmluZF9wYWdlcihjaGFyICpidWYpCit7CisJY29uc3QgY2hhciAqKmksICoqajsKKworCWZvciAoaSA9IHBhZ2VyX3NlYXJjaF9saXN0OyAqaTsgaSsrKSB7CisJCWZvciAoaiA9IHBhZ2VyX2Rpcl9saXN0OyAqajsgaisrKSB7CisJCQlzcHJpbnRmKGJ1ZiwgIiVzLyVzIiwgKmosICppKTsKKwkJCWlmIChhY2Nlc3MoYnVmLCBYX09LKSA9PSAwKQorCQkJCXJldHVybihidWYpOworCQl9CisJfQorCXJldHVybiAwOworfQorCitGSUxFICpvcGVuX3BhZ2VyKHZvaWQpCit7CisJRklMRSAqb3V0ZmlsZSA9IDA7CisJY29uc3QgY2hhciAqcGFnZXIgPSBzc19zYWZlX2dldGVudigiREVCVUdGU19QQUdFUiIpOworCWNoYXIgYnVmWzgwXTsKKworCXNpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKKwlpZiAoIWlzYXR0eSgxKSkKKwkJcmV0dXJuIHN0ZG91dDsKKwlpZiAoIXBhZ2VyKQorCQlwYWdlciA9IHNzX3NhZmVfZ2V0ZW52KCJQQUdFUiIpOworCWlmICghcGFnZXIpCisJCXBhZ2VyID0gZmluZF9wYWdlcihidWYpOworCWlmICghcGFnZXIgfHwKKwkgICAgKHN0cmNtcChwYWdlciwgIl9fbm9uZV9fIikgPT0gMCkgfHwKKwkgICAgKChvdXRmaWxlID0gcG9wZW4ocGFnZXIsICJ3IikpID09IDApKQorCQlyZXR1cm4gc3Rkb3V0OworCXJldHVybiBvdXRmaWxlOworfQorCit2b2lkIGNsb3NlX3BhZ2VyKEZJTEUgKnN0cmVhbSkKK3sKKwlpZiAoc3RyZWFtICYmIHN0cmVhbSAhPSBzdGRvdXQpIHBjbG9zZShzdHJlYW0pOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGlzIHVzZWQgd2hlbmV2ZXIgYSBjb21tYW5kIG5lZWRzIHRvIHR1cm4gYSBzdHJpbmcgaW50bworICogYW4gaW5vZGUuCisgKi8KK2V4dDJfaW5vX3Qgc3RyaW5nX3RvX2lub2RlKGNoYXIgKnN0cikKK3sKKwlleHQyX2lub190CWlubzsKKwlpbnQJCWxlbiA9IHN0cmxlbihzdHIpOworCWNoYXIJCSplbmQ7CisJaW50CQlyZXR2YWw7CisKKwkvKgorCSAqIElmIHRoZSBzdHJpbmcgaXMgb2YgdGhlIGZvcm0gPGlubz4sIHRoZW4gdHJlYXQgaXQgYXMgYW4KKwkgKiBpbm9kZSBudW1iZXIuCisJICovCisJaWYgKChsZW4gPiAyKSAmJiAoc3RyWzBdID09ICc8JykgJiYgKHN0cltsZW4tMV0gPT0gJz4nKSkgeworCQlpbm8gPSBzdHJ0b3VsKHN0cisxLCAmZW5kLCAwKTsKKwkJaWYgKCplbmQ9PSc+JykKKwkJCXJldHVybiBpbm87CisJfQorCisJcmV0dmFsID0gZXh0MmZzX25hbWVpKGN1cnJlbnRfZnMsIHJvb3QsIGN3ZCwgc3RyLCAmaW5vKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoc3RyLCByZXR2YWwsIDApOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIGlubzsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSByZXR1cm5zIDEgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IG9wZW4sIGFuZCBwcmludHMgYW4KKyAqIGVycm9yIG1lc3NhZ2UgdG8gdGhhdCBlZmZlY3QuCisgKi8KK2ludCBjaGVja19mc19vcGVuKGNoYXIgKm5hbWUpCit7CisJaWYgKCFjdXJyZW50X2ZzKSB7CisJCWNvbV9lcnIobmFtZSwgMCwgIkZpbGVzeXN0ZW0gbm90IG9wZW4iKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyByb3V0aW5lIHJldHVybnMgMSBpZiBhIGZpbGVzeXN0ZW0gaXMgb3BlbiwgYW5kIHByaW50cyBhbgorICogZXJyb3IgbWVzc2FnZSB0byB0aGF0IGVmZmVjdC4KKyAqLworaW50IGNoZWNrX2ZzX25vdF9vcGVuKGNoYXIgKm5hbWUpCit7CisJaWYgKGN1cnJlbnRfZnMpIHsKKwkJY29tX2VycihuYW1lLCAwLAorCQkJIkZpbGVzeXN0ZW0gJXMgaXMgc3RpbGwgb3Blbi4gIENsb3NlIGl0IGZpcnN0LlxuIiwKKwkJCWN1cnJlbnRfZnMtPmRldmljZV9uYW1lKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyByb3V0aW5lIHJldHVybnMgMSBpZiBhIGZpbGVzeXN0ZW0gaXMgbm90IG9wZW5lZCByZWFkL3dyaXRlLAorICogYW5kIHByaW50cyBhbiBlcnJvciBtZXNzYWdlIHRvIHRoYXQgZWZmZWN0LgorICovCitpbnQgY2hlY2tfZnNfcmVhZF93cml0ZShjaGFyICpuYW1lKQoreworCWlmICghKGN1cnJlbnRfZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkgeworCQljb21fZXJyKG5hbWUsIDAsICJGaWxlc3lzdGVtIG9wZW5lZCByZWFkL29ubHkiKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyByb3V0aW5lIHJldHVybnMgMSBpZiBhIGZpbGVzeXN0ZW0gaXMgZG9lc24ndCBoYXZlIGl0cyBpbm9kZQorICogYW5kIGJsb2NrIGJpdG1hcHMgbG9hZGVkLCBhbmQgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhhdAorICogZWZmZWN0LgorICovCitpbnQgY2hlY2tfZnNfYml0bWFwcyhjaGFyICpuYW1lKQoreworCWlmICghY3VycmVudF9mcy0+YmxvY2tfbWFwIHx8ICFjdXJyZW50X2ZzLT5pbm9kZV9tYXApIHsKKwkJY29tX2VycihuYW1lLCAwLCAiRmlsZXN5c3RlbSBiaXRtYXBzIG5vdCBsb2FkZWQiKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCitjaGFyICppbm9kZV90aW1lX3RvX3N0cmluZyhfX3UzMiB4dGltZSwgX191MzIgeHRpbWVfZXh0cmEpCit7CisJX19zNjQgdCA9IChfX3MzMikgeHRpbWU7CisKKwl0ICs9IChfX3M2NCkgKHh0aW1lX2V4dHJhICYgRVhUNF9FUE9DSF9NQVNLKSA8PCAzMjsKKwlyZXR1cm4gdGltZV90b19zdHJpbmcodCk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgX19zNjQgdGltZSB2YWx1ZSBhbmQgY29udmVydHMgaXQgdG8gYSBzdHJpbmcsCisgKiB1c2luZyBjdGltZQorICovCitjaGFyICp0aW1lX3RvX3N0cmluZyhfX3M2NCBjbCkKK3sKKwlzdGF0aWMgaW50CWRvX2dtdCA9IC0xOworCXRpbWVfdAkJdCA9ICh0aW1lX3QpIGNsOworCWNvbnN0IGNoYXIJKnR6OworCisJaWYgKGRvX2dtdCA9PSAtMSkgeworCQkvKiBUaGUgZGlldCBsaWJjIGRvZXNuJ3QgcmVzcGVjdCB0aGUgVFogZW52aXJvbmVtbnQgdmFyaWFibGUgKi8KKwkJdHogPSBzc19zYWZlX2dldGVudigiVFoiKTsKKwkJaWYgKCF0eikKKwkJCXR6ID0gIiI7CisJCWRvX2dtdCA9ICFzdHJjbXAodHosICJHTVQiKSB8fCAhc3RyY21wKHR6LCAiR01UMCIpOworCX0KKworCXJldHVybiBhc2N0aW1lKChkb19nbXQpID8gZ210aW1lKCZ0KSA6IGxvY2FsdGltZSgmdCkpOworfQorCisvKgorICogUGFyc2UgYSBzdHJpbmcgYXMgYSB0aW1lLiAgUmV0dXJuICgodGltZV90KS0xKSBpZiB0aGUgc3RyaW5nCisgKiBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHNhbmUgdGltZS4KKyAqLworZXh0ZXJuIF9fczY0IHN0cmluZ190b190aW1lKGNvbnN0IGNoYXIgKmFyZykKK3sKKwlzdHJ1Y3QJdG0JdHM7CisJX19zNjQJCXJldDsKKwljaGFyICp0bXA7CisKKwlpZiAoc3RyY21wKGFyZywgIm5vdyIpID09IDApIHsKKwkJcmV0dXJuIHRpbWUoMCk7CisJfQorCWlmIChhcmdbMF0gPT0gJ0AnKSB7CisJCS8qIGludGVycHJldCBpdCBhcyBhbiBpbnRlZ2VyICovCisJCWFyZysrOworCWZhbGxiYWNrOgorCQlyZXQgPSBzdHJ0b2xsKGFyZywgJnRtcCwgMCk7CisJCWlmICgqdG1wKQorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gcmV0OworCX0KKwltZW1zZXQoJnRzLCAwLCBzaXplb2YodHMpKTsKKyNpZmRlZiBIQVZFX1NUUlBUSU1FCisJdG1wID0gc3RycHRpbWUoYXJnLCAiJVklbSVkJUglTSVTIiwgJnRzKTsKKwlpZiAodG1wID09IE5VTEwpCisJCXRtcCA9IHN0cnB0aW1lKGFyZywgIiVZJW0lZCVIJU0iLCAmdHMpOworCWlmICh0bXAgPT0gTlVMTCkKKwkJdG1wID0gc3RycHRpbWUoYXJnLCAiJVklbSVkIiwgJnRzKTsKKwlpZiAodG1wID09IE5VTEwpCisJCWdvdG8gZmFsbGJhY2s7CisjZWxzZQorCXNzY2FuZihhcmcsICIlNGQlMmQlMmQlMmQlMmQlMmQiLCAmdHMudG1feWVhciwgJnRzLnRtX21vbiwKKwkgICAgICAgJnRzLnRtX21kYXksICZ0cy50bV9ob3VyLCAmdHMudG1fbWluLCAmdHMudG1fc2VjKTsKKwl0cy50bV95ZWFyIC09IDE5MDA7CisJdHMudG1fbW9uIC09IDE7CisJaWYgKHRzLnRtX3llYXIgPCAwIHx8IHRzLnRtX21vbiA8IDAgfHwgdHMudG1fbW9uID4gMTEgfHwKKwkgICAgdHMudG1fbWRheSA8PSAwIHx8IHRzLnRtX21kYXkgPiAzMSB8fCB0cy50bV9ob3VyID4gMjMgfHwKKwkgICAgdHMudG1fbWluID4gNTkgfHwgdHMudG1fc2VjID4gNjEpCisJCWdvdG8gZmFsbGJhY2s7CisjZW5kaWYKKwl0cy50bV9pc2RzdCA9IC0xOworCS8qIHN0cnB0aW1lKCkgbWF5IG9ubHkgdXBkYXRlIHRoZSBzcGVjaWZpZWQgZmllbGRzLCB3aGljaCBkb2VzIG5vdAorCSAqIG5lY2Vzc2FyaWx5IGluY2x1ZGUgdHMudG1feWRheSAoJWopLiAgQ2FsY3VsYXRlIHRoaXMgaWYgdW5zZXQ6CisJICoKKwkgKiBKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYworCSAqIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEKKwkgKgorCSAqIFN0YXJ0IHdpdGggMzEgZGF5cyBwZXIgbW9udGguICBFdmVuIG1vbnRocyBoYXZlIG9ubHkgMzAgZGF5cywgYnV0CisJICogcmV2ZXJzZSBpbiBBdWd1c3QsIHN1YnRyYWN0IG9uZSBkYXkgZm9yIHRob3NlIG1vbnRocy4gRmVicnVhcnkgaGFzCisJICogb25seSAyOCBkYXlzLCBub3QgMzAsIHN1YnRyYWN0IHR3byBkYXlzLiBBZGQgZGF5IG9mIG1vbnRoLCBtaW51cworCSAqIG9uZSwgc2luY2UgZGF5IGlzIG5vdCBmaW5pc2hlZCB5ZXQuICBMZWFwIHllYXJzIGhhbmRsZWQgYWZ0ZXJ3YXJkLiAqLworCWlmICh0cy50bV95ZGF5ID09IDApCisJCXRzLnRtX3lkYXkgPSAodHMudG1fbW9uICogMzEpIC0KKwkJCSgodHMudG1fbW9uIC0gKHRzLnRtX21vbiA+IDcpKSAvIDIpIC0KKwkJCTIgKiAodHMudG1fbW9uID4gMSkgKyB0cy50bV9tZGF5IC0gMTsKKwlyZXQgPSB0cy50bV9zZWMgKyB0cy50bV9taW4qNjAgKyB0cy50bV9ob3VyKjM2MDAgKyB0cy50bV95ZGF5Kjg2NDAwICsKKwkJKChfX3M2NCkgdHMudG1feWVhci03MCkqMzE1MzYwMDAgKworCQkoKChfX3M2NCkgdHMudG1feWVhci02OSkvNCkqODY0MDAgLQorCQkoKChfX3M2NCkgdHMudG1feWVhci0xKS8xMDApKjg2NDAwICsKKwkJKCgoX19zNjQpIHRzLnRtX3llYXIrMjk5KS80MDApKjg2NDAwOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHN0cmluZyB0byBhbiB1bnNpZ25lZCBsb25nLCBwcmludGluZworICogYW4gZXJyb3IgbWVzc2FnZSBpZiBpdCBmYWlscywgYW5kIHJldHVybmluZyBzdWNjZXNzIG9yIGZhaWx1cmUgaW4gZXJyLgorICovCit1bnNpZ25lZCBsb25nIHBhcnNlX3Vsb25nKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqY21kLAorCQkJICBjb25zdCBjaGFyICpkZXNjciwgaW50ICplcnIpCit7CisJY2hhcgkJKnRtcDsKKwl1bnNpZ25lZCBsb25nCXJldDsKKworCXJldCA9IHN0cnRvdWwoc3RyLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCA9PSAwKSB7CisJCWlmIChlcnIpCisJCQkqZXJyID0gMDsKKwkJcmV0dXJuIHJldDsKKwl9CisJY29tX2VycihjbWQsIDAsICJCYWQgJXMgLSAlcyIsIGRlc2NyLCBzdHIpOworCWlmIChlcnIpCisJCSplcnIgPSAxOworCWVsc2UKKwkJZXhpdCgxKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBjb252ZXJ0IGEgc3RyaW5nIHRvIGFuIHVuc2lnbmVkIGxvbmcgbG9uZywgcHJpbnRpbmcKKyAqIGFuIGVycm9yIG1lc3NhZ2UgaWYgaXQgZmFpbHMsIGFuZCByZXR1cm5pbmcgc3VjY2VzcyBvciBmYWlsdXJlIGluIGVyci4KKyAqLwordW5zaWduZWQgbG9uZyBsb25nIHBhcnNlX3Vsb25nbG9uZyhjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmNtZCwKKwkJCQkgICBjb25zdCBjaGFyICpkZXNjciwgaW50ICplcnIpCit7CisJY2hhcgkJCSp0bXA7CisJdW5zaWduZWQgbG9uZyBsb25nCXJldDsKKworCXJldCA9IHN0cnRvdWxsKHN0ciwgJnRtcCwgMCk7CisJaWYgKCp0bXAgPT0gMCkgeworCQlpZiAoZXJyKQorCQkJKmVyciA9IDA7CisJCXJldHVybiByZXQ7CisJfQorCWNvbV9lcnIoY21kLCAwLCAiQmFkICVzIC0gJXMiLCBkZXNjciwgc3RyKTsKKwlpZiAoZXJyKQorCQkqZXJyID0gMTsKKwllbHNlCisJCWV4aXQoMSk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHN0cmluZyB0byBhIGJsb2NrIG51bWJlci4gIEl0IHJldHVybnMKKyAqIDAgb24gc3VjY2VzcywgMSBvbiBmYWlsdXJlLiAgT24gZmFpbHVyZSwgaXQgb3V0cHV0cyBlaXRoZXIgYW4gb3B0aW9uYWxseQorICogc3BlY2lmaWVkIGVycm9yIG1lc3NhZ2Ugb3IgYSBkZWZhdWx0LgorICovCitpbnQgc3RydG9ibGsoY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICpzdHIsIGNvbnN0IGNoYXIgKmVycm1zZywKKwkgICAgIGJsazY0X3QgKnJldCkKK3sKKwlibGs2NF90CWJsazsKKwlpbnQJZXJyOworCisJaWYgKGVycm1zZyA9PSBOVUxMKQorCQlibGsgPSBwYXJzZV91bG9uZ2xvbmcoc3RyLCBjbWQsICJibG9jayBudW1iZXIiLCAmZXJyKTsKKwllbHNlCisJCWJsayA9IHBhcnNlX3Vsb25nbG9uZyhzdHIsIGNtZCwgZXJybXNnLCAmZXJyKTsKKwkqcmV0ID0gYmxrOworCXJldHVybiBlcnI7Cit9CisKKy8qCisgKiBUaGlzIGlzIGEgY29tbW9uIGhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBjb21tYW5kIHByb2Nlc3NpbmcKKyAqIHJvdXRpbmVzCisgKi8KK2ludCBjb21tb25fYXJnc19wcm9jZXNzKGludCBhcmdjLCBjaGFyICphcmd2W10sIGludCBtaW5fYXJnYywgaW50IG1heF9hcmdjLAorCQkJY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICp1c2FnZSwgaW50IGZsYWdzKQoreworCWlmIChhcmdjIDwgbWluX2FyZ2MgfHwgYXJnYyA+IG1heF9hcmdjKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiAlcyAlcyIsIGNtZCwgdXNhZ2UpOworCQlyZXR1cm4gMTsKKwl9CisJaWYgKGZsYWdzICYgQ0hFQ0tfRlNfTk9UT1BFTikgeworCQlpZiAoY2hlY2tfZnNfbm90X29wZW4oYXJndlswXSkpCisJCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJCXJldHVybiAxOworCX0KKwlpZiAoKGZsYWdzICYgQ0hFQ0tfRlNfUlcpICYmIGNoZWNrX2ZzX3JlYWRfd3JpdGUoYXJndlswXSkpCisJCXJldHVybiAxOworCWlmICgoZmxhZ3MgJiBDSEVDS19GU19CSVRNQVBTKSAmJiBjaGVja19mc19iaXRtYXBzKGFyZ3ZbMF0pKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBkb19zdGF0LCBkb19mcmVlaSwgZG9fc2V0aSwgYW5kCisgKiBkb190ZXN0aSwgZXRjLiAgQmFzaWNhbGx5LCBhbnkgY29tbWFuZCB3aGljaCB0YWtlcyBhIHNpbmdsZQorICogYXJndW1lbnQgd2hpY2ggaXMgYSBmaWxlL2lub2RlIG51bWJlciBzcGVjaWZpZXIuCisgKi8KK2ludCBjb21tb25faW5vZGVfYXJnc19wcm9jZXNzKGludCBhcmdjLCBjaGFyICphcmd2W10sCisJCQkgICAgICBleHQyX2lub190ICppbm9kZSwgaW50IGZsYWdzKQoreworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDIsIGFyZ3ZbMF0sICI8ZmlsZT4iLCBmbGFncykpCisJCXJldHVybiAxOworCisJKmlub2RlID0gc3RyaW5nX3RvX2lub2RlKGFyZ3ZbMV0pOworCWlmICghKmlub2RlKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBkb19mcmVlYiwgZG9fc2V0YiwgYW5kIGRvX3Rlc3RiCisgKi8KK2ludCBjb21tb25fYmxvY2tfYXJnc19wcm9jZXNzKGludCBhcmdjLCBjaGFyICphcmd2W10sCisJCQkgICAgICBibGs2NF90ICpibG9jaywgYmxrNjRfdCAqY291bnQpCit7CisJaW50CWVycjsKKworCWlmIChjb21tb25fYXJnc19wcm9jZXNzKGFyZ2MsIGFyZ3YsIDIsIDMsIGFyZ3ZbMF0sCisJCQkJIjxibG9jaz4gW2NvdW50XSIsIENIRUNLX0ZTX0JJVE1BUFMpKQorCQlyZXR1cm4gMTsKKworCWlmIChzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2WzFdLCBOVUxMLCBibG9jaykpCisJCXJldHVybiAxOworCWlmICgqYmxvY2sgPT0gMCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJJbnZhbGlkIGJsb2NrIG51bWJlciAwIik7CisJCXJldHVybiAxOworCX0KKworCWlmIChhcmdjID4gMikgeworCQllcnIgPSBzdHJ0b2Jsayhhcmd2WzBdLCBhcmd2WzJdLCAiY291bnQiLCBjb3VudCk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBkZWJ1Z2ZzX3JlYWRfaW5vZGVfZnVsbChleHQyX2lub190IGlubywgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwKKwkJCWNvbnN0IGNoYXIgKmNtZCwgaW50IGJ1ZnNpemUpCit7CisJaW50IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoY3VycmVudF9mcywgaW5vLCBpbm9kZSwgYnVmc2l6ZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGNtZCwgcmV0dmFsLCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIsIGlubyk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IGRlYnVnZnNfcmVhZF9pbm9kZShleHQyX2lub190IGlubywgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwKKwkJCWNvbnN0IGNoYXIgKmNtZCkKK3sKKwlpbnQgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoY3VycmVudF9mcywgaW5vLCBpbm9kZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGNtZCwgcmV0dmFsLCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIsIGlubyk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IGRlYnVnZnNfd3JpdGVfaW5vZGVfZnVsbChleHQyX2lub190IGlubywKKwkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJICAgICBjb25zdCBjaGFyICpjbWQsCisJCQkgICAgIGludCBidWZzaXplKQoreworCWludCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChjdXJyZW50X2ZzLCBpbm8sCisJCQkJCSBpbm9kZSwgYnVmc2l6ZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGNtZCwgcmV0dmFsLCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIsIGlubyk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IGRlYnVnZnNfd3JpdGVfaW5vZGUoZXh0Ml9pbm9fdCBpbm8sIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsCisJCQljb25zdCBjaGFyICpjbWQpCit7CisJaW50IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShjdXJyZW50X2ZzLCBpbm8sIGlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY21kLCByZXR2YWwsICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IiwgaW5vKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCitpbnQgZGVidWdmc193cml0ZV9uZXdfaW5vZGUoZXh0Ml9pbm9fdCBpbm8sIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsCisJCQkgICAgY29uc3QgY2hhciAqY21kKQoreworCWludCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfbmV3X2lub2RlKGN1cnJlbnRfZnMsIGlubywgaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihjbWQsIHJldHZhbCwgIndoaWxlIGNyZWF0aW5nIGlub2RlICV1IiwgaW5vKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogR2l2ZW4gYSBtb2RlLCByZXR1cm4gdGhlIGV4dDIgZmlsZSB0eXBlCisgKi8KK2ludCBleHQyX2ZpbGVfdHlwZSh1bnNpZ25lZCBpbnQgbW9kZSkKK3sKKwlpZiAoTElOVVhfU19JU1JFRyhtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfUkVHX0ZJTEU7CisKKwlpZiAoTElOVVhfU19JU0RJUihtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfRElSOworCisJaWYgKExJTlVYX1NfSVNDSFIobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX0NIUkRFVjsKKworCWlmIChMSU5VWF9TX0lTQkxLKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9CTEtERVY7CisKKwlpZiAoTElOVVhfU19JU0xOSyhtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfU1lNTElOSzsKKworCWlmIChMSU5VWF9TX0lTRklGTyhtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfRklGTzsKKworCWlmIChMSU5VWF9TX0lTU09DSyhtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfU09DSzsKKworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgcmVhZF9saXN0KGNoYXIgKnN0ciwgYmxrNjRfdCAqKmxpc3QsIHNpemVfdCAqbGVuKQoreworCWJsazY0X3QgKmxzdCA9ICpsaXN0OworCXNpemVfdCBsbiA9ICpsZW47CisJY2hhciAqdG9rLCAqcCA9IHN0cjsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJd2hpbGUgKCh0b2sgPSBzdHJ0b2socCwgIiwiKSkpIHsKKwkJYmxrNjRfdCAqbDsKKwkJYmxrNjRfdCB4LCB5OworCQljaGFyICplOworCisJCWVycm5vID0gMDsKKwkJeSA9IHggPSBzdHJ0b3VsbCh0b2ssICZlLCAwKTsKKwkJaWYgKGVycm5vKQorCQkJcmV0dXJuIGVycm5vOworCQlpZiAoKmUgPT0gJy0nKSB7CisJCQl5ID0gc3RydG91bGwoZSArIDEsIE5VTEwsIDApOworCQkJaWYgKGVycm5vKQorCQkJCXJldHVybiBlcnJubzsKKwkJfSBlbHNlIGlmICgqZSAhPSAwKSB7CisJCQlyZXR2YWwgPSBFSU5WQUw7CisJCQlnb3RvIGVycjsKKwkJfQorCQlpZiAoeSA8IHgpIHsKKwkJCXJldHZhbCA9IEVJTlZBTDsKKwkJCWdvdG8gZXJyOworCQl9CisJCWwgPSByZWFsbG9jKGxzdCwgc2l6ZW9mKGJsazY0X3QpICogKGxuICsgeSAtIHggKyAxKSk7CisJCWlmIChsID09IE5VTEwpIHsKKwkJCXJldHZhbCA9IEVOT01FTTsKKwkJCWdvdG8gZXJyOworCQl9CisJCWxzdCA9IGw7CisJCWZvciAoOyB4IDw9IHk7IHgrKykKKwkJCWxzdFtsbisrXSA9IHg7CisJCXAgPSBOVUxMOworCX0KKworCSpsaXN0ID0gbHN0OworCSpsZW4gPSBsbjsKKwlyZXR1cm4gMDsKK2VycjoKKwlmcmVlKGxzdCk7CisJcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZWJ1Z2ZzL3hhdHRycy5jIGIvZTJmc3Byb2dzL2RlYnVnZnMveGF0dHJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkzOGNjMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3hhdHRycy5jCkBAIC0wLDAgKzEsMzAyIEBACisvKgorICogeGF0dHJzLmMgLS0tIE1vZGlmeSBleHRlbmRlZCBhdHRyaWJ1dGVzIHZpYSBkZWJ1Z2ZzLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBPcmFjbGUuICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCisvKiBEdW1wIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKi8KK3N0YXRpYyB2b2lkIGR1bXBfeGF0dHJfc3RyaW5nKEZJTEUgKm91dCwgY29uc3QgY2hhciAqc3RyLCBpbnQgbGVuKQoreworCWludCBwcmludGFibGUgPSAwOworCWludCBpOworCisJLyogY2hlY2s6IGlzIHN0cmluZyAicHJpbnRhYmxlIGVub3VnaD8iICovCisJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorCQlpZiAoaXNwcmludChzdHJbaV0pKQorCQkJcHJpbnRhYmxlKys7CisKKwlpZiAocHJpbnRhYmxlIDw9IGxlbio3LzgpCisJCXByaW50YWJsZSA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisJCWlmIChwcmludGFibGUpCisJCQlmcHJpbnRmKG91dCwgaXNwcmludChzdHJbaV0pID8gIiVjIiA6ICJcXCUwM28iLAorCQkJCSh1bnNpZ25lZCBjaGFyKXN0cltpXSk7CisJCWVsc2UKKwkJCWZwcmludGYob3V0LCAiJTAyeCAiLCAodW5zaWduZWQgY2hhcilzdHJbaV0pOworfQorCitzdGF0aWMgaW50IGR1bXBfYXR0cihjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbiwgdm9pZCAqZGF0YSkKK3sKKwlGSUxFICpvdXQgPSBkYXRhOworCisJZnByaW50ZihvdXQsICIgICIpOworCWR1bXBfeGF0dHJfc3RyaW5nKG91dCwgbmFtZSwgc3RybGVuKG5hbWUpKTsKKwlpZiAoc3RyY21wKG5hbWUsICJzeXN0ZW0uZGF0YSIpICE9IDApIHsKKwkJZnByaW50ZihvdXQsICIgPSBcIiIpOworCQlkdW1wX3hhdHRyX3N0cmluZyhvdXQsIHZhbHVlLCB2YWx1ZV9sZW4pOworCQlmcHJpbnRmKG91dCwgIlwiIik7CisJfQorCWZwcmludGYob3V0LCAiICglenUpXG4iLCB2YWx1ZV9sZW4pOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZHVtcF9pbm9kZV9hdHRyaWJ1dGVzKEZJTEUgKm91dCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoOworCXNpemVfdCBzejsKKwllcnJjb2RlX3QgZXJyOworCisJZXJyID0gZXh0MmZzX3hhdHRyc19vcGVuKGN1cnJlbnRfZnMsIGlubywgJmgpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCWVyciA9IGV4dDJmc194YXR0cnNfcmVhZChoKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWVyciA9IGV4dDJmc194YXR0cnNfY291bnQoaCwgJnN6KTsKKwlpZiAoZXJyIHx8IHN6ID09IDApCisJCWdvdG8gb3V0OworCisJZnByaW50ZihvdXQsICJFeHRlbmRlZCBhdHRyaWJ1dGVzOlxuIik7CisJZXJyID0gZXh0MmZzX3hhdHRyc19pdGVyYXRlKGgsIGR1bXBfYXR0ciwgb3V0KTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworb3V0OgorCWVyciA9IGV4dDJmc194YXR0cnNfY2xvc2UoJmgpOworfQorCit2b2lkIGRvX2xpc3RfeGF0dHIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWV4dDJfaW5vX3QgaW5vOworCisJaWYgKGFyZ2MgIT0gMikgeworCQlwcmludGYoIiVzOiBVc2FnZTogJXMgPGZpbGU+XG4iLCBhcmd2WzBdLAorCQkgICAgICAgYXJndlswXSk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3ZbMV0pOworCWlmICghaW5vKQorCQlyZXR1cm47CisKKwlkdW1wX2lub2RlX2F0dHJpYnV0ZXMoc3Rkb3V0LCBpbm8pOworfQorCit2b2lkIGRvX2dldF94YXR0cihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXh0Ml9pbm9fdCBpbm87CisJc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoOworCUZJTEUgKmZwID0gTlVMTDsKKwljaGFyICpidWYgPSBOVUxMOworCXNpemVfdCBidWZsZW47CisJaW50IGk7CisJZXJyY29kZV90IGVycjsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoaSA9IGdldG9wdChhcmdjLCBhcmd2LCAiZjoiKSkgIT0gLTEpIHsKKwkJc3dpdGNoIChpKSB7CisJCWNhc2UgJ2YnOgorCQkJaWYgKGZwKQorCQkJCWZjbG9zZShmcCk7CisJCQlmcCA9IGZvcGVuKG9wdGFyZywgInciKTsKKwkJCWlmIChmcCA9PSBOVUxMKSB7CisJCQkJcGVycm9yKG9wdGFyZyk7CisJCQkJcmV0dXJuOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludGYoIiVzOiBVc2FnZTogJXMgPGZpbGU+IDxhdHRyPiBbLWYgb3V0ZmlsZV1cbiIsCisJCQkgICAgICAgYXJndlswXSwgYXJndlswXSk7CisJCQlnb3RvIG91dDI7CisJCX0KKwl9CisKKwlpZiAob3B0aW5kICE9IGFyZ2MgLSAyKSB7CisJCXByaW50ZigiJXM6IFVzYWdlOiAlcyA8ZmlsZT4gPGF0dHI+IFstZiBvdXRmaWxlXVxuIiwgYXJndlswXSwKKwkJICAgICAgIGFyZ3ZbMF0pOworCQlnb3RvIG91dDI7CisJfQorCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCWdvdG8gb3V0MjsKKworCWlubyA9IHN0cmluZ190b19pbm9kZShhcmd2W29wdGluZF0pOworCWlmICghaW5vKQorCQlnb3RvIG91dDI7CisKKwllcnIgPSBleHQyZnNfeGF0dHJzX29wZW4oY3VycmVudF9mcywgaW5vLCAmaCk7CisJaWYgKGVycikKKwkJZ290byBvdXQyOworCisJZXJyID0gZXh0MmZzX3hhdHRyc19yZWFkKGgpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJZXJyID0gZXh0MmZzX3hhdHRyX2dldChoLCBhcmd2W29wdGluZCArIDFdLCAodm9pZCAqKikmYnVmLCAmYnVmbGVuKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWlmIChmcCkgeworCQlmd3JpdGUoYnVmLCBidWZsZW4sIDEsIGZwKTsKKwl9IGVsc2UgeworCQlkdW1wX3hhdHRyX3N0cmluZyhzdGRvdXQsIGJ1ZiwgYnVmbGVuKTsKKwkJcHJpbnRmKCJcbiIpOworCX0KKworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKK291dDoKKwlleHQyZnNfeGF0dHJzX2Nsb3NlKCZoKTsKKwlpZiAoZXJyKQorCQljb21fZXJyKGFyZ3ZbMF0sIGVyciwgIndoaWxlIGdldHRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIik7CitvdXQyOgorCWlmIChmcCkKKwkJZmNsb3NlKGZwKTsKK30KKwordm9pZCBkb19zZXRfeGF0dHIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWV4dDJfaW5vX3QgaW5vOworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaDsKKwlGSUxFICpmcCA9IE5VTEw7CisJY2hhciAqYnVmID0gTlVMTDsKKwlzaXplX3QgYnVmbGVuOworCWludCBpOworCWVycmNvZGVfdCBlcnI7CisKKwlyZXNldF9nZXRvcHQoKTsKKwl3aGlsZSAoKGkgPSBnZXRvcHQoYXJnYywgYXJndiwgImY6IikpICE9IC0xKSB7CisJCXN3aXRjaCAoaSkgeworCQljYXNlICdmJzoKKwkJCWlmIChmcCkKKwkJCQlmY2xvc2UoZnApOworCQkJZnAgPSBmb3BlbihvcHRhcmcsICJyIik7CisJCQlpZiAoZnAgPT0gTlVMTCkgeworCQkJCXBlcnJvcihvcHRhcmcpOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBwcmludF91c2FnZTsKKwkJfQorCX0KKworCWlmICghKGZwICYmIG9wdGluZCA9PSBhcmdjIC0gMikgJiYgISghZnAgJiYgb3B0aW5kID09IGFyZ2MgLSAzKSkgeworCXByaW50X3VzYWdlOgorCQlwcmludGYoIlVzYWdlOlx0JXMgPGZpbGU+IDxhdHRyPiA8dmFsdWU+XG4iLCBhcmd2WzBdKTsKKwkJcHJpbnRmKCJcdCVzIC1mIDx2YWx1ZV9maWxlPiA8ZmlsZT4gPGF0dHI+XG4iLCBhcmd2WzBdKTsKKwkJZ290byBvdXQyOworCX0KKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlnb3RvIG91dDI7CisJaWYgKGNoZWNrX2ZzX3JlYWRfd3JpdGUoYXJndlswXSkpCisJCWdvdG8gb3V0MjsKKwlpZiAoY2hlY2tfZnNfYml0bWFwcyhhcmd2WzBdKSkKKwkJZ290byBvdXQyOworCisJaW5vID0gc3RyaW5nX3RvX2lub2RlKGFyZ3Zbb3B0aW5kXSk7CisJaWYgKCFpbm8pCisJCWdvdG8gb3V0MjsKKworCWVyciA9IGV4dDJmc194YXR0cnNfb3BlbihjdXJyZW50X2ZzLCBpbm8sICZoKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDI7CisKKwllcnIgPSBleHQyZnNfeGF0dHJzX3JlYWQoaCk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwlpZiAoZnApIHsKKwkJZXJyID0gZXh0MmZzX2dldF9tZW0oY3VycmVudF9mcy0+YmxvY2tzaXplLCAmYnVmKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCQlidWZsZW4gPSBmcmVhZChidWYsIDEsIGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSwgZnApOworCX0gZWxzZSB7CisJCWJ1ZiA9IGFyZ3Zbb3B0aW5kICsgMl07CisJCWJ1ZmxlbiA9IHN0cmxlbihhcmd2W29wdGluZCArIDJdKTsKKwl9CisKKwllcnIgPSBleHQyZnNfeGF0dHJfc2V0KGgsIGFyZ3Zbb3B0aW5kICsgMV0sIGJ1ZiwgYnVmbGVuKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWVyciA9IGV4dDJmc194YXR0cnNfd3JpdGUoaCk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKK291dDoKKwlleHQyZnNfeGF0dHJzX2Nsb3NlKCZoKTsKKwlpZiAoZXJyKQorCQljb21fZXJyKGFyZ3ZbMF0sIGVyciwgIndoaWxlIHNldHRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIik7CitvdXQyOgorCWlmIChmcCkgeworCQlmY2xvc2UoZnApOworCQlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisJfQorfQorCit2b2lkIGRvX3JtX3hhdHRyKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlleHQyX2lub190IGlubzsKKwlzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmg7CisJaW50IGk7CisJZXJyY29kZV90IGVycjsKKworCWlmIChhcmdjIDwgMykgeworCQlwcmludGYoIiVzOiBVc2FnZTogJXMgPGZpbGU+IDxhdHRycz4uLi5cbiIsIGFyZ3ZbMF0sIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKwlpZiAoY2hlY2tfZnNfcmVhZF93cml0ZShhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChjaGVja19mc19iaXRtYXBzKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKworCWVyciA9IGV4dDJmc194YXR0cnNfb3BlbihjdXJyZW50X2ZzLCBpbm8sICZoKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwllcnIgPSBleHQyZnNfeGF0dHJzX3JlYWQoaCk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwlmb3IgKGkgPSAyOyBpIDwgYXJnYzsgaSsrKSB7CisJCWVyciA9IGV4dDJmc194YXR0cl9yZW1vdmUoaCwgYXJndltpXSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBleHQyZnNfeGF0dHJzX3dyaXRlKGgpOworCWlmIChlcnIpCisJCWdvdG8gb3V0Oworb3V0OgorCWV4dDJmc194YXR0cnNfY2xvc2UoJmgpOworCWlmIChlcnIpCisJCWNvbV9lcnIoYXJndlswXSwgZXJyLCAid2hpbGUgcmVtb3ZpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIik7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZGVidWdmcy96YXAuYyBiL2UyZnNwcm9ncy9kZWJ1Z2ZzL3phcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhMWFlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZGVidWdmcy96YXAuYwpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqIHphcC5jIC0tLSB6YXAgYmxvY2sKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKworI2luY2x1ZGUgImRlYnVnZnMuaCIKKwordm9pZCBkb196YXBfYmxvY2soaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCBsb25nCXBhdHRlcm4gPSAwOworCXVuc2lnbmVkIGNoYXIJKmJ1ZjsKKwlleHQyX2lub190CWlub2RlOworCWVycmNvZGVfdAllcnJjb2RlOworCWJsazY0X3QJCWJsb2NrOworCWNoYXIJCSpmaWxlID0gTlVMTDsKKwlpbnQJCWMsIGVycjsKKwlpbnQJCW9mZnNldCA9IC0xOworCWludAkJbGVuZ3RoID0gLTE7CisJaW50CQliaXQgPSAtMTsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJaWYgKGNoZWNrX2ZzX3JlYWRfd3JpdGUoYXJndlswXSkpCisJCXJldHVybjsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImI6ZjpsOm86cDoiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdmJzoKKwkJCWZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnYic6CisJCQliaXQgPSBwYXJzZV91bG9uZyhvcHRhcmcsIGFyZ3ZbMF0sCisJCQkJCSAgImJpdCIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm47CisJCQlpZiAoYml0ID49IChpbnQpIGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSAqIDgpIHsKKwkJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJUaGUgYml0IHRvIGZsaXAgIgorCQkJCQkibXVzdCBiZSB3aXRoaW4gYSAlZCBibG9ja1xuIiwKKwkJCQkJY3VycmVudF9mcy0+YmxvY2tzaXplKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCQlwYXR0ZXJuID0gcGFyc2VfdWxvbmcob3B0YXJnLCBhcmd2WzBdLAorCQkJCQkgICAgICAicGF0dGVybiIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm47CisJCQlpZiAocGF0dGVybiA+PSAyNTYpIHsKKwkJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJUaGUgZmlsbCBwYXR0ZXJuIG11c3QgIgorCQkJCQkiYmUgYW4gOC1iaXQgdmFsdWVcbiIpOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdvJzoKKwkJCW9mZnNldCA9IHBhcnNlX3Vsb25nKG9wdGFyZywgYXJndlswXSwKKwkJCQkJICAgICAib2Zmc2V0IiwgJmVycik7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybjsKKwkJCWlmIChvZmZzZXQgPj0gKGludCkgY3VycmVudF9mcy0+YmxvY2tzaXplKSB7CisJCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiVGhlIG9mZnNldCBtdXN0IGJlICIKKwkJCQkJIndpdGhpbiBhICVkIGJsb2NrXG4iLAorCQkJCQljdXJyZW50X2ZzLT5ibG9ja3NpemUpOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWJyZWFrOworCisJCQlicmVhazsKKwkJY2FzZSAnbCc6CisJCQlsZW5ndGggPSBwYXJzZV91bG9uZyhvcHRhcmcsIGFyZ3ZbMF0sCisJCQkJCSAgICAgImxlbmd0aCIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm47CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWdvdG8gcHJpbnRfdXNhZ2U7CisJCX0KKwl9CisKKwlpZiAoYml0ID4gMCAmJiBvZmZzZXQgPiAwKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlRoZSAtbyBhbmQgLWIgb3B0aW9ucyBjYW4gbm90IGJlIG1peGVkLiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKG9mZnNldCA8IDApCisJCW9mZnNldCA9IDA7CisJaWYgKGxlbmd0aCA8IDApCisJCWxlbmd0aCA9IGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSAtIG9mZnNldDsKKwlpZiAoKG9mZnNldCArIGxlbmd0aCkgPiAoaW50KSBjdXJyZW50X2ZzLT5ibG9ja3NpemUpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVGhlIHNwZWNpZmllZCBsZW5ndGggaXMgdG9vIGJ1Z1xuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoYXJnYyAhPSBvcHRpbmQrMSkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKDAsIDAsICJVc2FnZTpcdHphcF9ibG9jayBbLWYgZmlsZV0gWy1vIG9mZnNldF0gIgorCQkJIlstbCBsZW5ndGhdIFstcCBwYXR0ZXJuXSBibG9ja19udW0iKTsKKwkJY29tX2VycigwLCAwLCAiXHR6YXBfYmxvY2sgWy1mIGZpbGVdIFstYiBiaXRdICIKKwkJCSJibG9ja19udW0iKTsKKwkJcmV0dXJuOworCX0KKworCWJsb2NrID0gcGFyc2VfdWxvbmdsb25nKGFyZ3Zbb3B0aW5kXSwgYXJndlswXSwgImJsb2NrIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJaWYgKGZpbGUpIHsKKwkJaW5vZGUgPSBzdHJpbmdfdG9faW5vZGUoZmlsZSk7CisJCWlmICghaW5vZGUpCisJCQlyZXR1cm47CisJCWVycmNvZGUgPSBleHQyZnNfYm1hcDIoY3VycmVudF9mcywgaW5vZGUsIDAsIDAsIDAsCisJCQkJICAgICAgIGJsb2NrLCAwLCAmYmxvY2spOworCQlpZiAoZXJyY29kZSkgeworCQkJY29tX2Vycihhcmd2WzBdLCBlcnJjb2RlLAorCQkJCSJ3aGlsZSBtYXBwaW5nIGxvZ2ljYWwgYmxvY2sgJWxsdVxuIiwgYmxvY2spOworCQkJcmV0dXJuOworCQl9CisJfQorCisJYnVmID0gbWFsbG9jKGN1cnJlbnRfZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKCFidWYpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIik7CisJCXJldHVybjsKKwl9CisKKwllcnJjb2RlID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGN1cnJlbnRfZnMtPmlvLCBibG9jaywgMSwgYnVmKTsKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKGFyZ3ZbMF0sIGVycmNvZGUsCisJCQkid2hpbGUgcmVhZGluZyBibG9jayAlbGx1XG4iLCBibG9jayk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCWlmIChiaXQgPj0gMCkKKwkJYnVmW2JpdCA+PiAzXSBePSAxIDw8IChiaXQgJiA3KTsKKwllbHNlCisJCW1lbXNldChidWYrb2Zmc2V0LCBwYXR0ZXJuLCBsZW5ndGgpOworCisJZXJyY29kZSA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoY3VycmVudF9mcy0+aW8sIGJsb2NrLCAxLCBidWYpOworCWlmIChlcnJjb2RlKSB7CisJCWNvbV9lcnIoYXJndlswXSwgZXJyY29kZSwKKwkJCSJ3aGlsZSB3cml0ZSBibG9jayAlbGx1XG4iLCBibG9jayk7CisJCWdvdG8gZXJyb3V0OworCX0KKworZXJyb3V0OgorCWZyZWUoYnVmKTsKKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fYmxvY2tfZHVtcChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGNoYXIJKmJ1ZjsKKwlleHQyX2lub190CWlub2RlOworCWVycmNvZGVfdAllcnJjb2RlOworCWJsazY0X3QJCWJsb2NrOworCWNoYXIJCSpmaWxlID0gTlVMTDsKKwlpbnQJCWMsIGVycjsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlyZXNldF9nZXRvcHQoKTsKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJmOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2YnOgorCQkJZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlnb3RvIHByaW50X3VzYWdlOworCQl9CisJfQorCisJaWYgKGFyZ2MgIT0gb3B0aW5kICsgMSkgeworCXByaW50X3VzYWdlOgorCQljb21fZXJyKDAsIDAsICJVc2FnZTogYmxvY2tfZHVtcCBbLWYgaW5vZGVdIGJsb2NrX251bSIpOworCQlyZXR1cm47CisJfQorCisJYmxvY2sgPSBwYXJzZV91bG9uZ2xvbmcoYXJndltvcHRpbmRdLCBhcmd2WzBdLCAiYmxvY2siLCAmZXJyKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwlpZiAoZmlsZSkgeworCQlpbm9kZSA9IHN0cmluZ190b19pbm9kZShmaWxlKTsKKwkJaWYgKCFpbm9kZSkKKwkJCXJldHVybjsKKwkJZXJyY29kZSA9IGV4dDJmc19ibWFwMihjdXJyZW50X2ZzLCBpbm9kZSwgMCwgMCwgMCwKKwkJCQkgICAgICAgYmxvY2ssIDAsICZibG9jayk7CisJCWlmIChlcnJjb2RlKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIGVycmNvZGUsCisJCQkJIndoaWxlIG1hcHBpbmcgbG9naWNhbCBibG9jayAlbGx1XG4iLCBibG9jayk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwlidWYgPSBtYWxsb2MoY3VycmVudF9mcy0+YmxvY2tzaXplKTsKKwlpZiAoIWJ1ZikgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiKTsKKwkJcmV0dXJuOworCX0KKworCWVycmNvZGUgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoY3VycmVudF9mcy0+aW8sIGJsb2NrLCAxLCBidWYpOworCWlmIChlcnJjb2RlKSB7CisJCWNvbV9lcnIoYXJndlswXSwgZXJyY29kZSwKKwkJCSJ3aGlsZSByZWFkaW5nIGJsb2NrICVsbHVcbiIsIGJsb2NrKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJZG9fYnl0ZV9oZXhkdW1wKHN0ZG91dCwgYnVmLCBjdXJyZW50X2ZzLT5ibG9ja3NpemUpOworZXJyb3V0OgorCWZyZWUoYnVmKTsKK30KKwordm9pZCBkb19ieXRlX2hleGR1bXAoRklMRSAqZnAsIHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCit7CisJc2l6ZV90CQlpLCBqOworCWludAkJc3VwcHJlc3MgPSAtMTsKKworCWZvciAoaSA9IDA7IGkgPCBidWZzaXplOyBpICs9IDE2KSB7CisJCWlmIChzdXBwcmVzcyA8IDApIHsKKwkJCWlmIChpICYmIG1lbWNtcChidWYgKyBpLCBidWYgKyBpIC0gMTYsIDE2KSA9PSAwKSB7CisJCQkJc3VwcHJlc3MgPSBpOworCQkJCWZwcmludGYoZnAsICIqXG4iKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChtZW1jbXAoYnVmICsgaSwgYnVmICsgc3VwcHJlc3MsIDE2KSA9PSAwKQorCQkJCWNvbnRpbnVlOworCQkJc3VwcHJlc3MgPSAtMTsKKwkJfQorCQlmcHJpbnRmKGZwLCAiJTA0byAgIiwgKHVuc2lnbmVkIGludClpKTsKKwkJZm9yIChqID0gMDsgaiA8IDE2OyBqKyspIHsKKwkJCWZwcmludGYoZnAsICIlMDJ4IiwgYnVmW2kral0pOworCQkJaWYgKChqICUgMikgPT0gMSkKKwkJCQlmcHJpbnRmKGZwLCAiICIpOworCQl9CisJCWZwcmludGYoZnAsICIgIik7CisJCWZvciAoaiA9IDA7IGogPCAxNjsgaisrKQorCQkJZnByaW50ZihmcCwgIiVjIiwgaXNwcmludChidWZbaStqXSkgPyBidWZbaStqXSA6ICcuJyk7CisJCWZwcmludGYoZnAsICJcbiIpOworCX0KKwlmcHJpbnRmKGZwLCAiXG4iKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kZXBmaXguc2VkIGIvZTJmc3Byb2dzL2RlcGZpeC5zZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTgyZDc5ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kZXBmaXguc2VkCkBAIC0wLDAgKzEsMzUgQEAKKyMKKyMgSW5zZXJ0IHRoZSBoZWFkZXIuLi4uLgorIworMWlcCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrXAorIyBcCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpblwKKyMgdGhlIE1ha2VmaWxlLmluIGZpbGVcCisjCisKKyMKKyMgUmVtb3ZlIGxpbmUgY29udGludWF0aW9ucy4uLi4KKyMKKzpGSVJTVAoreS8JLyAvCitzL14gKi8vCisvXFwkL3sKK04KK3kvCS8gLworcy9cXFxuICovIC8KK2JGSVJTVAorfQorcy8gICovIC9nCisKK3M7L3Vzci9pbmNsdWRlL1teIF0qICo7O2cKK3M7L3Vzci9saWIvW14gXSogKjs7ZworczsvbWl0L2N5Z251c1teIF0qICo7O2cKK3M7XC5cLi9bXiBdKmxpYi9ibGtpZC9ibGtpZFteIF0qICo7O2cKK3M7XC5cLi9bXiBdKmxpYi91dWlkL3V1aWQuaFteIF0qICo7O2cKKworIworIyBOb3cgaW5zZXJ0IGEgdHJhaWxpbmcgbmV3bGluZS4uLgorIworJGFcCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kb2MvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvZG9jL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYjU4NGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZG9jL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsODQgQEAKKyMKKyMgTWFrZWZpbGUgZm9yIHRoZSBkb2MgZGlyZWN0b3J5CisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLgorbXlfZGlyID0gZG9jCitJTlNUQUxMID0gQElOU1RBTExACisKK0BNQ09ORklHQAorCitEVkk9dGV4aTJkdmkgLS1jbGVhbgorRFZJUFM9ZHZpcHMgLW8gIiRAIgorSU5GTz1ATUFLRUlORk9ACitIVE1MPW1ha2VpbmZvIC0taHRtbCAtLW5vLXNwbGl0CitQUzJQREY9cHMycGRmCisKK2FsbDo6IGxpYmV4dDJmcy5pbmZvIGxpYmV4dDJmcy5kdmkgbGliZXh0MmZzLmh0bWwKKworaW5zdGFsbC1kb2MtbGliczogbGliZXh0MmZzLmluZm8gbGliZXh0MmZzLmR2aQorCSQoUSkgJChSTSkgLXJmICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgorCSQoRSkgIglNS0lOU1RBTExESVJTICQoaW5mb2RpcikiCisJJChRKSAkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKGluZm9kaXIpCisJLSQoUSkgZm9yIGkgaW4gbGliZXh0MmZzLmluZm8qIDsgZG8gXAorCQllY2hvICIJSU5TVEFMTF9EQVRBICQoaW5mb2RpcikvJCRpIiA7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJChpbmZvZGlyKS8kJGkgOyBcCisJZG9uZQorCSQoRSkgIglHWklQICQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qIgorCS0kKFEpIGd6aXAgLTkgJChERVNURElSKSQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qCisKK3VuaW5zdGFsbC1kb2MtbGliczoKKwkkKFJNKSAtcmYgJChERVNURElSKSQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qCisKK2xpYmV4dDJmcy5pbmZvOiAkKHNyY2RpcikvbGliZXh0MmZzLnRleGluZm8KKwkkKEUpICIJTUFLRUlORk8gJEAiCisJLSQoUSkgJChJTkZPKSAkKHNyY2RpcikvbGliZXh0MmZzLnRleGluZm8KKworbGliZXh0MmZzLmR2aTogJChzcmNkaXIpL2xpYmV4dDJmcy50ZXhpbmZvCisJJChFKSAiCVRFWEkyRFZJICRAIgorCS0kKFEpICQoRFZJKSAkKHNyY2RpcikvbGliZXh0MmZzLnRleGluZm8KKworbGliZXh0MmZzLnBzOiBsaWJleHQyZnMuZHZpCisJJChFKSAiCURWSVBTICRAIgorCS0kKFEpICQoRFZJUFMpIGxpYmV4dDJmcy5kdmkKKworbGliZXh0MmZzLnBkZjogbGliZXh0MmZzLnBzCisJJChFKSAiCVBTMlBERiAkQCIKKwktJChRKSAkKFBTMlBERikgbGliZXh0MmZzLnBzCisKK2xpYmV4dDJmcy5odG1sOiAkKHNyY2RpcikvbGliZXh0MmZzLnRleGluZm8KKwkkKEUpICIJVEVYSTJIVE1MICRAIgorCS0kKFEpICQoSFRNTCkgJChzcmNkaXIpL2xpYmV4dDJmcy50ZXhpbmZvCisKKy5QSE9OWTogZGlzdGNsZWFuCitkaXN0Y2xlYW46OiBjbGVhbgorCSQoUk0pIC1mIE1ha2VmaWxlCisKKy5QSE9OWTogY2xlYW4KK2NsZWFuOjogY2xlYW4tYWxsCisKKy5QSE9OWTogY2xlYW4tYWxsCitjbGVhbi1hbGw6OiBjbGVhbi10ZXggY2xlYW4tYmFja3VwIGNsZWFuLWZpbmFsIGNsZWFuLXRhcmZpbGVzIGNsZWFuLWh0bWwKKworLlBIT05ZOiBjbGVhbi1maW5hbAorY2xlYW4tZmluYWw6OgorCSQoUk0pIC1mICoucHMgKi5pbmZvICouaW5mby0/ICouaHRtbCAqLnBkZgorCisuUEhPTlk6IGNsZWFuLXRleAorY2xlYW4tdGV4OjoKKwkkKFJNKSAtZiAqLmF1eCAqLmNwICouZHZpICouZm4gKi5reSAqLmxvZyAqLnBnICoudG9jICoudHAgKi52ciAqLmZucworCisuUEhPTlk6IGNsZWFuLWJhY2t1cAorY2xlYW4tYmFja3VwOjoKKwkkKFJNKSAtZiAqfiAjKgorCisuUEhPTlk6IGNsZWFuLXRhcmZpbGVzCitjbGVhbi10YXJmaWxlczo6CisJJChSTSkgLWYgKi50YXIgKi50YXIuZ3ogKi50Z3oKKworY2xlYW4taHRtbDo6CisJJChSTSkgLWYgKi5odG1sCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9kb2MvbGliYmxraWQudHh0IGIvZTJmc3Byb2dzL2RvYy9saWJibGtpZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFlYTFiNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kb2MvbGliYmxraWQudHh0CkBAIC0wLDAgKzEsNzggQEAKK2xpYmJsa2lkIC0gYSBsaWJyYXJ5IHRvIGhhbmRsZSBkZXZpY2UgaWRlbnRpZmljYXRpb24gYW5kIHRva2VuIGV4dHJhY3Rpb24KKworQmFzaWMgdXNhZ2UgaXMgYXMgZm9sbG93cyAtIHRoZXJlIGFyZSB0d28gbm9ybWFsIHVzYWdlIHBhdHRlcm5zOgorCitGb3IgY2FzZXMgd2hlcmUgYSBwcm9ncmFtIHdhbnRzIGluZm9ybWF0aW9uIGFib3V0IG11bHRpcGxlIGRldmljZXMsIG9yCitleHBlY3RzIHRvIGJlIGRvaW5nIG11bHRpcGxlIHRva2VuIHNlYXJjaGVzLCB0aGUgcHJvZ3JhbSBzaG91bGQKK2RpcmVjdGx5IGluaXRpYWxpemUgY2FjaGUgZmlsZSB2aWEgKHNlY29uZCBwYXJhbWV0ZXIgaXMgY2FjaGUKK2ZpbGVuYW1lLCBOVUxMID0gZGVmYXVsdCk6CisKKwlibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisJaWYgKGJsa2lkX2dldF9jYWNoZSgmY2FjaGUsIE5VTEwpIDwgMCkKKwkJLyogZXJyb3IgcmVhZGluZyB0aGUgY2FjaGUgZmlsZSwgbm90IHJlYWxseSBmYXRhbCAqLworCitOb3RlIHRoYXQgaWYgbm8gY2FjaGUgZmlsZSBleGlzdHMsIGFuIGVtcHR5IGNhY2hlIHN0cnVjdCBpcyBzdGlsbAorYWxsb2NhdGVkLiAgVXNhZ2Ugb2YgbGliYmxraWQgZnVuY3Rpb25zIHdpbGwgdXNlIHRoZSBjYWNoZSB0byBhdm9pZAorbmVlZGxlc3MgZGV2aWNlIHNjYW5zLgorCitUaGUgbW9kZWwgb2YgdGhlIGJsa2lkIGNhY2hlIGlzIHRoYXQgZWFjaCBkZXZpY2UgaGFzIGEgbnVtYmVyIG9mCithdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIGFzc29jaWF0ZWQgd2l0aCBpdC4gIEN1cnJlbnRseSB0aGUgYXR0cmlidXRlcword2hpY2ggYXJlIHN1cHBvcnRlZCAoYW5kIHNldCkgYnkgYmxraWQgYXJlOgorCisJVFlQRQkJZmlsZXN5c3RlbSB0eXBlCisJVVVJRAkJZmlsZXN5c3RlbSB1dWlkCisJTEFCRUwJCWZpbGVzeXN0ZW0gbGFiZWwKKworCitIb3cgdG8gdXNlIGxpYmJsa2lkPyAgTm9ybWFsbHksIHlvdSBlaXRoZXIgd2FudCB0byBmaW5kIGEgZGV2aWNlIHdpdGgKK2Egc3BlY2lmaWMgTkFNRT12YWx1ZSB0b2tlbiwgb3IgeW91IHdhbnQgdG8gb3V0cHV0IHRva2VuKHMpIGZyb20gYQorZGV2aWNlLiAgVG8gZmluZCBhIGRldmljZSB0aGF0IG1hdGNoZXMgYSBmb2xsb3dpbmcgYXR0cmlidXRlLCB5b3UKK3NpbXBseSBjYWxsIHRoZSBibGtpZF9nZXRfZGV2bmFtZSgpIGZ1bmN0aW9uOiAKKworCWlmICgoZGV2bmFtZSA9IGJsa2lkX2dldF9kZXZuYW1lKGNhY2hlLCBhdHRyaWJ1dGVfbmFtZSwgdmFsdWUpKSkgeworCQkvKiBkbyBzb21ldGhpbmcgd2l0aCBkZXZuYW1lICovCisJCXN0cmluZ19mcmVlKGRldm5hbWUpOworCX0KKworVGhlIGNhY2hlIHBhcmFtZXRlciBpcyBvcHRpb25hbDsgaWYgaXQgaXMgTlVMTCwgdGhlbiB0aGUgYmxraWQgbGlicmFyeQord2lsbCBsb2FkIHRoZSBkZWZhdWx0IGJsa2lkLnRhYiBjYWNoZSBmaWxlLCBhbmQgdGhlbiByZWxlYXNlIHRoZSBjYWNoZQorYmVmb3JlIGZ1bmN0aW9uIGNhbGwgcmV0dXJucy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gYWxsb2NhdGVkIHN0cmluZword2hpY2ggaG9sZHMgdGhlIHJlc3VsdGluZyBkZXZpY2UgbmFtZSAoaWYgaXQgaXMgZm91bmQpLiAgSWYgdGhlIHZhbHVlCitpcyBOVUxMLCB0aGVuIGF0dHJpYnV0ZV9uYW1lIGlzIHBhcnNlZCBhcyBpZiBpdCB3ZXJlCisiPGF0dHJpYnV0ZV9uYW1lPj08dmFsdWU+IjsgaWYgaXQgY2Fubm90IGJlIHNvIHBhcnNlZCwgdGhlbiB0aGUKK29yaWdpbmFsIGF0dHJpYnV0ZV9uYW1lIGlzIHJldHVybmVkIGluIGEgY29waWVkIGFsbG9jYXRlZCBzdHJpbmcuCitUaGlzIGlzIGEgY29udmVuaWVuY2UgdG8gYWxsb3cgdXNlciBwcm9ncmFtcyB0byB3YW50IHRvIHRyYW5zbGF0ZSB1c2VyCitpbnB1dCwgd2hldGhlciBpdCBpcyBvZiB0aGUgZm9ybTogIi9kZXYvaGRhMSIsICJMQUJFTD1yb290IiwKKyJVVUlEPTA4MkQtMjZFMyIsIGFuZCBnZXQgYmFjayBhIGRldmljZSBuYW1lIHRoYXQgaXQgY2FuIHVzZS4KKworQWx0ZXJuYXRpdmVseSwgb2YgY291cnNlLCB0aGUgcHJvZ3JhbW1lciBjYW4gcGFzcyBhbiBhdHRyaWJ1dGUgbmFtZSBvZgorIkxBQkVMIiwgYW5kIHZhbHVlIG9mICJyb290IiwgaWYgdGhhdCBpcyBtb3JlIGNvbnZlbmllbnQuCisKK0Fub3RoZXIgY29tbW9uIHVzYWdlIGlzIHRvIHJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIGF0dHJpYnV0ZQorZm9yIGEgcGFydGljdWxhciBkZXZpY2UuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgZmlsZXN5c3RlbQordHlwZSwgb3IgbGFiZWwsIG9yIHV1aWQgZm9yIGEgcGFydGljdWxhciBkZXZpY2U6CisKKwlpZiAoKHZhbHVlID0gYmxraWRfZ2V0X3RhZ192YWx1ZShjYWNoZSwgYXR0cmlidXRlX25hbWUsIGRldm5hbWUpKSkgeworCQkvKiBkbyBzb21ldGhpbmcgd2l0aCB2YWx1ZSAqLworCQlzdHJpbmdfZnJlZSh2YWx1ZSk7CisJfQorCitJZiBhIHByb2dyYW0gbmVlZHMgdG8gY2FsbCBtdWx0aXBsZSBibGtpZCBmdW5jdGlvbnMsIHRoZW4gcGFzc2luZyBpbiBhCitjYWNoZSB2YWx1ZSBvZiBOVUxMIGlzIG5vdCByZWNvbW1lbmRlZCwgc2luY2UgdGhlIC9ldGMvYmxraWQudGFiIGZpbGUKK3dpbGwgYmUgcmVwZWF0ZWRseSBwYXJzZWQgb3ZlciBhbmQgb3ZlciBhZ2Fpbiwgd2l0aCBtZW1vcnkgYWxsb2NhdGVkCithbmQgZGVhbGxvY2F0ZWQuICBUbyBpbml0aWFsaXplIHRoZSBibGtpZCBjYWNoZSwgYmxraWRfZ2V0X2NhY2hlKCkKK2Z1bmN0aW9uIGlzIHVzZWQ6CisKKwlpZiAoYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgTlVMTCkgPCAwKQorCQlnb3RvIGVycm91dDsKKworVGhlIHNlY29uZCBwYXJhbWV0ZXIgb2YgYmxraWRfZ2V0X2NhY2hlIChpZiBub24temVybykgaXMgdGhlIGFsdGVybmF0ZQorZmlsZW5hbWUgb2YgdGhlIGJsa2lkIGNhY2hlIGZpbGUgKHdoZXJlIHRoZSBkZWZhdWx0IGlzCisvZXRjL2Jsa2lkLnRhYikuICBOb3JtYWxseSwgcHJvZ3JhbXMgc2hvdWxkIGp1c3QgcGFzcyBpbiBOVUxMLgorCitJZiB5b3UgaGF2ZSBjYWxsZWQgYmxraWRfZ2V0X2NhY2hlKCksIHlvdSBzaG91bGQgY2FsbCBibGtpZF9wdXRfY2FjaGUoKQord2hlbiB5b3UgYXJlIGRvbmUgdXNpbmcgdGhlIGJsa2lkIGxpYnJhcnkgZnVuY3Rpb25zLiAgVGhpcyB3aWxsIHNhdmUgdGhlCitjYWNoZSB0byB0aGUgYmxraWQudGFiIGZpbGUsIGlmIHlvdSBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgZmlsZS4gIEl0Cit3aWxsIGFsc28gZnJlZSBhbGwgYXNzb2NpYXRlZCBkZXZpY2VzIGFuZCB0YWdzOgorCisJYmxraWRfcHV0X2NhY2hlKGNhY2hlKTsgCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZG9jL2xpYmV4dDJmcy50ZXhpbmZvIGIvZTJmc3Byb2dzL2RvYy9saWJleHQyZnMudGV4aW5mbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDA1ODk2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2RvYy9saWJleHQyZnMudGV4aW5mbwpAQCAtMCwwICsxLDEzNzQgQEAKK1xpbnB1dCB0ZXhpbmZvICAgIEBjIC0qLXRleGluZm8tKi0KK0BjICUqKnN0YXJ0IG9mIGhlYWRlcgorQHNldGZpbGVuYW1lIGxpYmV4dDJmcy5pbmZvCitAc2V0dGl0bGUgVGhlIEVYVDJGUyBMaWJyYXJ5ICh2ZXJzaW9uIDEuNDMuMykKK0BzeW5pbmRleCB0cCBmbgorQGNvbW1lbnQgJSoqZW5kIG9mIGhlYWRlcgorCitAaWZpbmZvCitAZGlyY2F0ZWdvcnkgRGV2ZWxvcG1lbnQKK0BkaXJlbnRyeQorKiBsaWJleHQyZnM6IChsaWJleHQyZnMpLiAgICAgICAgICAgICAgICAgIFRoZSBFWFQyRlMgbGlicmFyeS4KK0BlbmQgZGlyZW50cnkKK0BlbmQgaWZpbmZvCisKK0BjIHNtYWxsYm9vaworCitAaWZ0ZXgKK0BmaW5hbG91dAorQGVuZCBpZnRleAorCitAYyBOb3RlOiB0aGUgZWRpdGlvbiBudW1iZXIgaXMgbGlzdGVkIGluICp0aHJlZSogcGxhY2VzOyBwbGVhc2UgdXBkYXRlCitAYyBhbGwgdGhyZWUuICBBbHNvLCB1cGRhdGUgdGhlIG1vbnRoIGFuZCB5ZWFyIHdoZXJlIGFwcHJvcHJpYXRlLgorCitAYyA9PT4gVXBkYXRlIGVkaXRpb24gbnVtYmVyIGZvciBzZXR0aXRsZSBhbmQgc3VidGl0bGUsIGFuZCBpbiB0aGUKK0BjID09PiBmb2xsb3dpbmcgcGFyYWdyYXBoOyB1cGRhdGUgZGF0ZSwgdG9vLgorCisKK0BpZmluZm8KK1RoaXMgZmlsZSBkb2N1bWVudHMgdGhlIGV4dDJmcyBsaWJyYXJ5LCBhIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyB0aGUKK2V4dDIgZmlsZXN5c3RlbS4KKworQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LAorMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNCBieSBUaGVvZG9yZSBUcydvCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgordGhpcyBtYW51YWwgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UKK2FyZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4KKworQGlnbm9yZQorUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIHByb2Nlc3MgdGhpcyBmaWxlIHRocm91Z2ggVGVYIGFuZCBwcmludCB0aGUKK3Jlc3VsdHMsIHByb3ZpZGVkIHRoZSBwcmludGVkIGRvY3VtZW50IGNhcnJpZXMgY29weWluZyBwZXJtaXNzaW9uCitub3RpY2UgaWRlbnRpY2FsIHRvIHRoaXMgb25lIGV4Y2VwdCBmb3IgdGhlIHJlbW92YWwgb2YgdGhpcyBwYXJhZ3JhcGgKKyh0aGlzIHBhcmFncmFwaCBub3QgYmVpbmcgcmVsZXZhbnQgdG8gdGhlIHByaW50ZWQgbWFudWFsKS4KKworQGVuZCBpZ25vcmUKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMKK21hbnVhbCB1bmRlciB0aGUgY29uZGl0aW9ucyBmb3IgdmVyYmF0aW0gY29weWluZywgcHJvdmlkZWQgdGhhdCB0aGUgZW50aXJlCityZXN1bHRpbmcgZGVyaXZlZCB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIHBlcm1pc3Npb24KK25vdGljZSBpZGVudGljYWwgdG8gdGhpcyBvbmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHRyYW5zbGF0aW9ucyBvZiB0aGlzIG1hbnVhbAoraW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJvdmUgY29uZGl0aW9ucyBmb3IgbW9kaWZpZWQgdmVyc2lvbnMsCitleGNlcHQgdGhhdCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIG1heSBiZSBzdGF0ZWQgaW4gYSB0cmFuc2xhdGlvbiBhcHByb3ZlZAorYnkgdGhlIGF1dGhvci4KK0BlbmQgaWZpbmZvCisKK0BzZXRjaGFwdGVybmV3cGFnZSBvbgorQHRpdGxlcGFnZQorQGMgIHVzZSB0aGUgbmV3IGZvcm1hdCBmb3IgdGl0bGVzCisKK0B0aXRsZSBUaGUgRVhUMkZTIExpYnJhcnkKK0BzdWJ0aXRsZSBUaGUgRVhUMkZTIExpYnJhcnkKK0BzdWJ0aXRsZSBWZXJzaW9uIDEuNDMuMworQHN1YnRpdGxlIFNlcHRlbWJlciAyMDE2CisKK0BhdXRob3IgYnkgVGhlb2RvcmUgVHMnbworCitAYyBJbmNsdWRlIHRoZSBEaXN0cmlidXRpb24gaW5zaWRlIHRoZSB0aXRsZXBhZ2Ugc28KK0BjIHRoYXQgaGVhZGluZ3MgYXJlIHR1cm5lZCBvZmYuCisKK0B0ZXgKK1xnbG9iYWxccGFyaW5kZW50PTBwdAorXGdsb2JhbFxwYXJza2lwPThwdAorXGdsb2JhbFxiYXNlbGluZXNraXA9MTNwdAorQGVuZCB0ZXgKKworQHBhZ2UKK0B2c2tpcCAwcHQgcGx1cyAxZmlsbGwKK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwKKzIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQgVGhlb2RvcmUgVHMnbworCitAc3AgMgorCitQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gbWFrZSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YKK3RoaXMgbWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCithcmUgcHJlc2VydmVkIG9uIGFsbCBjb3BpZXMuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoaXMKK21hbnVhbCB1bmRlciB0aGUgY29uZGl0aW9ucyBmb3IgdmVyYmF0aW0gY29weWluZywgcHJvdmlkZWQgdGhhdCB0aGUgZW50aXJlCityZXN1bHRpbmcgZGVyaXZlZCB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBhIHBlcm1pc3Npb24KK25vdGljZSBpZGVudGljYWwgdG8gdGhpcyBvbmUuCisKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHRyYW5zbGF0aW9ucyBvZiB0aGlzIG1hbnVhbAoraW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJvdmUgY29uZGl0aW9ucyBmb3IgbW9kaWZpZWQgdmVyc2lvbnMsCitleGNlcHQgdGhhdCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIG1heSBiZSBzdGF0ZWQgaW4gYSB0cmFuc2xhdGlvbiBhcHByb3ZlZAorYnkgdGhlIEZvdW5kYXRpb24uCitAZW5kIHRpdGxlcGFnZQorQGhlYWRpbmdzIGRvdWJsZQorCitAbm9kZSBUb3AsIEludHJvZHVjdGlvbiB0byB0aGUgRVhUMkZTIExpYnJhcnksIChkaXIpLCAoZGlyKQorCitAdG9wIFRoZSBFWFQyRlMgTGlicmFyeQorCitUaGlzIG1hbnVhbCBkb2N1bWVudHMgdGhlIEVYVDJGUyBMaWJyYXJ5LCB2ZXJzaW9uIDEuNDMuMy4KKworQG1lbnUKKyogSW50cm9kdWN0aW9uIHRvIHRoZSBFWFQyRlMgTGlicmFyeTo6ICAKKyogRVhUMkZTIExpYnJhcnkgRnVuY3Rpb25zOjogICAgCisqIENvbmNlcHQgSW5kZXg6OiAgICAgICAgICAgICAgIAorKiBGdW5jdGlvbiBJbmRleDo6ICAgICAgICAgICAgICAKK0BlbmQgbWVudQorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIEludHJvZHVjdGlvbiB0byB0aGUgRVhUMkZTIExpYnJhcnksIEVYVDJGUyBMaWJyYXJ5IEZ1bmN0aW9ucywgVG9wLCBUb3AKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQGNoYXB0ZXIgSW50cm9kdWN0aW9uIHRvIHRoZSBFWFQyRlMgTGlicmFyeQorCitUaGUgRVhUMkZTIGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gYWxsb3cgdXNlci1sZXZlbCBwcm9ncmFtcyB0bworbWFuaXB1bGF0ZSBhbiBleHQyIGZpbGVzeXN0ZW0uCisKK0Bub2RlIEVYVDJGUyBMaWJyYXJ5IEZ1bmN0aW9ucywgQ29uY2VwdCBJbmRleCwgSW50cm9kdWN0aW9uIHRvIHRoZSBFWFQyRlMgTGlicmFyeSwgVG9wCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BjaGFwdGVyIEVYVDJGUyBMaWJyYXJ5IEZ1bmN0aW9ucworCitAbWVudQorKiBGaWxlc3lzdGVtLWxldmVsIGZ1bmN0aW9uczo6ICAKKyogRmlsZSBJL08gRnVuY3Rpb25zOjogICAgICAgICAgCisqIElub2RlIEZ1bmN0aW9uczo6ICAgICAgICAgICAgIAorKiBEaXJlY3RvcnkgZnVuY3Rpb25zOjogICAgICAgICAKKyogQml0bWFwIEZ1bmN0aW9uczo6ICAgICAgICAgICAgCisqIEVYVDIgZGF0YSBhYnN0cmFjdGlvbnM6OiAgICAgIAorKiBCeXRlLXN3YXBwaW5nIGZ1bmN0aW9uczo6ICAgICAKKyogT3RoZXIgZnVuY3Rpb25zOjogICAgICAgICAgICAgCitAZW5kIG1lbnUKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBGaWxlc3lzdGVtLWxldmVsIGZ1bmN0aW9ucywgRmlsZSBJL08gRnVuY3Rpb25zLCBFWFQyRlMgTGlicmFyeSBGdW5jdGlvbnMsIEVYVDJGUyBMaWJyYXJ5IEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc2VjdGlvbiBGaWxlc3lzdGVtLWxldmVsIGZ1bmN0aW9ucworCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvcGVyYXRlIG9uIGEgZmlsZXN5c3RlbSBoYW5kbGUuICBNb3N0IEVYVDJGUworTGlicmFyeSBmdW5jdGlvbnMgcmVxdWlyZSBhIGZpbGVzeXN0ZW0gaGFuZGxlIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgorVGhlcmUgYXJlIHR3byBmdW5jdGlvbnMgd2hpY2ggY3JlYXRlIGEgZmlsZXN5c3RlbSBoYW5kbGUsCitAY29kZXtleHQyZnNfb3Blbn0gYW5kIEBjb2Rle2V4dDJmc19pbml0aWFsaXplfS4gIAorCitUaGUgZmlsZXN5c3RlbSBjYW4gYWxzbyBiZSBjbG9zZWQgdXNpbmcgQGNvZGV7ZXh0MmZzX2Nsb3NlfSwgYW5kIGFueQorY2hhbmdlcyB0byB0aGUgc3VwZXJibG9jayBhbmQgZ3JvdXAgZGVzY3JpcHRzIGNhbiBiZSB3cml0dGVuIG91dCB0byBkaXNrCit1c2luZyBAY29kZXtleHQyZnNfZmx1c2h9LgorCitAbWVudQorKiBPcGVuaW5nIGFuIGV4dDIgZmlsZXN5c3RlbTo6ICAKKyogQ2xvc2luZyBhbmQgZmx1c2hpbmcgb3V0IGNoYW5nZXM6OiAgCisqIEluaXRpYWxpemluZyBhIGZpbGVzeXN0ZW06OiAgIAorKiBGaWxlc3lzdGVtIGZsYWcgZnVuY3Rpb25zOjogICAKK0BlbmQgbWVudQorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIE9wZW5pbmcgYW4gZXh0MiBmaWxlc3lzdGVtLCBDbG9zaW5nIGFuZCBmbHVzaGluZyBvdXQgY2hhbmdlcywgRmlsZXN5c3RlbS1sZXZlbCBmdW5jdGlvbnMsIEZpbGVzeXN0ZW0tbGV2ZWwgZnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIE9wZW5pbmcgYW4gZXh0MiBmaWxlc3lzdGVtCisKK01vc3QgbGliZXh0MmZzIGZ1bmN0aW9ucyB0YWtlIGEgZmlsZXN5c3RlbSBoYW5kbGUgb2YgdHlwZQorQGNvZGV7ZXh0Ml9maWxzeXN9LiAgQSBmaWxlc3lzdGVtIGhhbmRsZSBpcyBjcmVhdGVkIGVpdGhlciBieSBvcGVuaW5nCithbiBleGlzdGluZyBmdW5jdGlvbiB1c2luZyBAY29kZXtleHQyZnNfb3Blbn0sIG9yIGJ5IGluaXRpYWxpemluZyBhIG5ldworZmlsZXN5c3RlbSB1c2luZyBAY29kZXtleHQyZnNfaW5pdGlhbGl6ZX0uCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfb3BlbiAoY29uc3QgY2hhciAqQHZhcntuYW1lfSwgaW50IEB2YXJ7ZmxhZ3N9LCBpbnQgQHZhcntzdXBlcmJsb2NrfSwgaW50IEB2YXJ7YmxvY2tfc2l6ZX0sIGlvX21hbmFnZXIgQHZhcnttYW5hZ2VyfSwgZXh0Ml9maWxzeXMgKkB2YXJ7cmV0X2ZzfSkKKworT3BlbnMgYSBmaWxlc3lzdGVtIG5hbWVkIEB2YXJ7bmFtZX0sIHVzaW5nIHRoZSB0aGUgaW9fbWFuYWdlcgorQHZhcnttYW5hZ2VyfSB0byBkZWZpbmUgdGhlIGlucHV0L291dHB1dCByb3V0aW5lcyBuZWVkZWQgdG8gcmVhZCBhbmQKK3dyaXRlIHRoZSBmaWxlc3lzdGVtLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIEBjb2Rle3VuaXhfaW99IGlvX21hbmFnZXIsCitAdmFye25hbWV9IGlzIGludGVycHJldGVkIGFzIHRoZSBVbml4IGZpbGVuYW1lIG9mIHRoZSBmaWxlc3lzdGVtIGltYWdlLgorVGhpcyBpcyBvZnRlbiBhIGRldmljZSBmaWxlLCBzdWNoIGFzIEBmaWxley9kZXYvaGRhMX0uCisKK1RoZSBAdmFye3N1cGVyYmxvY2t9IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGJsb2NrIG51bWJlciBvZiB0aGUKK3N1cGVyYmxvY2sgd2hpY2ggc2hvdWxkIGJlIHVzZWQgd2hlbiBvcGVuaW5nIHRoZSBmaWxlc3lzdGVtLgorSWYgQHZhcntzdXBlcmJsb2NrfSBpcyB6ZXJvLCBAY29kZXtleHQyZnNfb3Blbn0gd2lsbCB1c2UgdGhlIHByaW1hcnkKK3N1cGVyYmxvY2sgbG9jYXRlZCBhdCBvZmZzZXQgMTAyNCBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZXN5c3RlbQoraW1hZ2UuCisKK1RoZSBAdmFye2Jsb2NrX3NpemV9IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGJsb2NrIHNpemUgdXNlZCBieSB0aGUKK2ZpbGVzeXN0ZW0uICBOb3JtYWxseSB0aGlzIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZQorZmlsZXN5c3RlbSB1cGVyYmxvY2suICBJZiBAdmFye2Jsb2NrX3NpemV9IGlzIG5vbi16ZXJvLCBpdCBtdXN0IG1hdGNoCit0aGUgYmxvY2sgc2l6ZSBmb3VuZCBpbiB0aGUgc3VwZXJibG9jaywgb3IgdGhlIGVycm9yCitAY29kZXtFWFQyX0VUX1VORVhQRUNURURfQkxPQ0tfU0laRX0gd2lsbCBiZSByZXR1cm5lZC4gIFRoZQorQHZhcntibG9ja19zaXplfSBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHRvIGhlbHAgZnVuZCB0aGUgc3VwZXJibG9jayB3aGVuCitAdmFye3N1cGVyYmxvY2t9IGlzIG5vbi16ZXJvLgorCitUaGUgQHZhcntmbGFnc30gYXJndW1lbnQgY29udGFpbnMgYSBiaXRtYXNrIG9mIGZsYWdzIHdoaWNoIGNvbnRyb2wgaG93Cit0aGUgZmlsZXN5c3RlbSBvcGVuIHNob3VsZCBiZSBoYW5kbGVkLgorCitAdGFibGUgQGNvZGUKK0BpdGVtIEVYVDJfRkxBR19SVworT3BlbiB0aGUgZmlsZXN5c3RlbSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4gIFdpdGhvdXQgdGhpcyBmbGFnLCB0aGUKK2ZpbGVzeXN0ZW0gaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHkuCisKK0BpdGVtIEVYVDJfRkxBR19GT1JDRQorT3BlbiB0aGUgZmlsZXN5c3RlbSByZWdhcmRsZXNzIG9mIHRoZSBmZWF0dXJlIHNldHMgbGlzdGVkIGluIHRoZQorc3VwZXJibG9jay4KKworQGVuZCB0YWJsZQorQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgQ2xvc2luZyBhbmQgZmx1c2hpbmcgb3V0IGNoYW5nZXMsIEluaXRpYWxpemluZyBhIGZpbGVzeXN0ZW0sIE9wZW5pbmcgYW4gZXh0MiBmaWxlc3lzdGVtLCBGaWxlc3lzdGVtLWxldmVsIGZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBDbG9zaW5nIGFuZCBmbHVzaGluZyBvdXQgY2hhbmdlcworCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ZsdXNoIChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKKworV3JpdGUgYW55IGNoYW5nZXMgdG8gdGhlIGhpZ2gtbGV2ZWwgZmlsZXN5c3RlbSBkYXRhIHN0cnVjdHVyZXMgaW4gdGhlCitAdmFye2ZzfSBmaWxlc3lzdGVtLiAgVGhlIGZvbGxvd2luZyBkYXRhIHN0cnVjdHVyZXMgd2lsbCBiZSB3cml0dGVuIG91dDoKKworQGl0ZW1pemUgQGJ1bGxldAorQGl0ZW0gVGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jaworQGl0ZW0gVGhlIGZpbGVzeXN0ZW0gZ3JvdXAgZGVzY3JpcHRvcnMKK0BpdGVtIFRoZSBmaWxlc3lzdGVtIGJpdG1hcHMsIGlmIHJlYWQgaW4gdmlhIEBjb2Rle2V4dDJmc19yZWFkX2JpdG1hcHN9LgorQGVuZCBpdGVtaXplCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19mcmVlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKKworQ2xvc2UgdGhlIGlvX21hbmFnZXIgYWJzdHJhY3Rpb24gZm9yIEB2YXJ7ZnN9IGFuZCByZWxlYXNlIGFsbCBtZW1vcnkKK2Fzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBoYW5kbGUuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19jbG9zZSAoZXh0Ml9maWxzeXMgQHZhcntmc30pCisKK0ZsdXNoIG91dCBhbnkgY2hhbmdlcyB0byB0aGUgaGlnaC1sZXZlbCBmaWxlc3lzdGVtIGRhdGEgc3RydWN0dXJlcyB1c2luZworQGNvZGV7ZXh0MmZzX2ZsdXNofSBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtYXJrZWQgZGlydHk7IHRoZW4gY2xvc2UgYW5kCitmcmVlIHRoZSBmaWxlc3lzdGVtIHVzaW5nIEBjb2Rle2V4dDJmc19mcmVlfS4KKworQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgSW5pdGlhbGl6aW5nIGEgZmlsZXN5c3RlbSwgRmlsZXN5c3RlbSBmbGFnIGZ1bmN0aW9ucywgQ2xvc2luZyBhbmQgZmx1c2hpbmcgb3V0IGNoYW5nZXMsIEZpbGVzeXN0ZW0tbGV2ZWwgZnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIEluaXRpYWxpemluZyBhIGZpbGVzeXN0ZW0KKworQW4gZXh0MiBmaWxlc3lzdGVtIGlzIGluaXRpYWxpemluZyBieSB0aGUgQGNvZGV7bWtlMmZzfSBwcm9ncmFtLiAgVGhlCit0d28gZnVuY3Rpb25zIGRlc2NyaWJlZCBoZXJlLCBAY29kZXtleHQyZnNfaW5pdGlhbGl6ZX0gYW5kCitAY29kZXtleHQyZnNfYWxsb2NhdGVfdGFibGVzfSBkbyBtdWNoIG9mIHRoZSBpbml0aWFsIHdvcmsgZm9yIHNldHRpbmcgdXAKK2EgZmlsZXN5c3RlbS4gIEhvd2V2ZXIsIHRoZXkgZG9uJ3QgZG8gdGhlIHdob2xlIGpvYi4gIEBjb2Rle21rZTJmc30KK2NhbGxzIEBjb2Rle2V4dDJmc19pbml0aWFsaXplfSB0byBzZXQgdXAgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jaywgYW5kCitjYWxscyBAY29kZXtleHQyZnNfYWxsb2NhdGVfdGFibGVzfSB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGlub2RlCit0YWJsZSwgYW5kIHRoZSBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcy4gIEluIGFkZGl0aW9uLCBAY29kZXtta2UyZnN9IG11c3QKK2Fsc28gaW5pdGlhbGl6ZSB0aGUgaW5vZGUgdGFibGVzIGJ5IGNsZWFyaW5nIHRoZW0gd2l0aCB6ZXJvcywgY3JlYXRlIHRoZQorcm9vdCBhbmQgbG9zdCtmb3VuZCBkaXJlY3RvcmllcywgYW5kIHJlc2VydmUgdGhlIHJlc2VydmVkIGlub2Rlcy4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19pbml0aWFsaXplIChjb25zdCBjaGFyICpAdmFye25hbWV9LCBpbnQgQHZhcntmbGFnc30sIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpAdmFye3BhcmFtfSwgaW9fbWFuYWdlciBAdmFye21hbmFnZXJ9LCBleHQyX2ZpbHN5cyAqQHZhcntyZXRfZnN9KQorCitUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgdGhlIEBjb2Rle21rZTJmc30gcHJvZ3JhbSB0byBpbml0aWFsaXplIGEKK2ZpbGVzeXN0ZW0uICBUaGUgQGNvZGV7ZXh0MmZzX2luaXRpYWxpemV9IGZ1bmN0aW9uIGNyZWF0ZXMgYSBmaWxlc3lzdGVtCitoYW5kbGUgd2hpY2ggaXMgcmV0dXJuZWQgaW4gQHZhcntyZXRfZnN9IHRoYXQgaGFzIGJlZW4gcHJvcGVybHkgc2V0dXAKK2ZvciBhIGZpbGVzeXN0ZW0gdG8gYmUgbG9jYXRlZCBpbiBAdmFye25hbWV9LCB1c2luZyB0aGUgaW9fbWFuYWdlcgorQHZhcnttYW5hZ2VyfS4gIFRoZSBwcm90b3R5cGUgc3VwZXJibG9jayBpbiBAdmFye3BhcmFtfSBpcyB1c2VkIHRvCitzdXBwbHkgcGFyYW1ldGVycyBzdWNoIGFzIHRoZSBudW1iZXIgb2YgYmxvY2tzIGluIHRoZSBmaWxlc3lzdGVtLCB0aGUKK2Jsb2NrIHNpemUsIGV0Yy4gIAorCitUaGUgQGNvZGV7ZXh0MmZzX2luaXRpYWxpemV9IGZ1bmN0aW9uIGRvZXMgbm90IGFjdHVhbGx5IGRvIGFueSBJL087IHRoYXQKK3dpbGwgYmUgZG9uZSB3aGVuIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIGNhbGxzIEBjb2Rle2V4dDJmc19jbG9zZX0gb3IKK0Bjb2Rle2V4dDJmc19mbHVzaH0uICBBbHNvLCB0aGlzIGZ1bmN0aW9uIG9ubHkgaW5pdGlhbGl6ZXMgdGhlCitzdXBlcmJsb2NrIGFuZCBncm91cCBkZXNjcmlwdG9yIHN0cnVjdHVyZXMuICBJdCBkb2VzIG5vdCBjcmVhdGUgdGhlCitpbm9kZSB0YWJsZSBvciB0aGUgcm9vdCBkaXJlY3RvcnkuICBUaGlzIG11c3QgYmUgZG9uZSBieSB0aGUgY2FsbGluZworYXBwbGljYXRpb24sIHN1Y2ggYXMgQGNvZGV7bWtlMmZzfS4KKworVGhlIGZvbGxvd2luZyB2YWx1ZXMgbWF5IGJlIHNldCBpbiB0aGUgQHZhcntwYXJhbX0gcHJvdG90eXBlIHN1cGVyYmxvY2s7CitpZiBhIHZhbHVlIG9mIDAgaXMgZm91bmQgaW4gYSBmaWVsZCwgQGNvZGV7ZXh0MmZzX2luaXRpYWxpemV9IHdpbGwgdXNlIGEKK2RlZmF1bHQgdmFsdWUuICBUaGUgY2FsbGluZyBhcHBsaWNhdGlvbiBzaG91bGQgemVybyBvdXQgdGhlIHByb3RvdHlwZQorZW50aXJlIHN1cGVyYmxvY2ssIGFuZCB0aGVuIGZpbGwgaW4gYW55IGFwcHJvcHJpYXRlIHZhbHVlcy4KKworQHRhYmxlIEBjb2RlCisKK0BpdGVtIHNfYmxvY2tzX2NvdW50CitUaGUgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGUgZmlsZXN5c3RlbS4gIFRoaXMgcGFyYW1ldGVyIGlzIG1hbmRhdG9yeSBhbmQKK211c3QgYmUgc2V0IGJ5IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uLgorCitAaXRlbSBzX2lub2Rlc19jb3VudAorVGhlIG51bWJlciBvZiBpbm9kZXMgaW4gdGhlIGZpbGVzeXN0ZW0uICBUaGUKK2RlZmF1bHQgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSwKK2FuZCBjcmVhdGluZyBvbmUgaW5vZGUgZm9yIGV2ZXJ5IDQwOTYgYnl0ZXMuCisKK0BpdGVtIHNfcl9ibG9ja3NfY291bnQKK1RoZSBudW1iZXIgb2YgYmxvY2tzIHdoaWNoIHNob3VsZCBiZSByZXNlcnZlZCBmb3IgdGhlIHN1cGVydXNlci4gIFRoZQorZGVmYXVsdCB2YWx1ZSBpcyB6ZXJvIGJsb2Nrcy4KKworQGl0ZW0gc19sb2dfYmxvY2tfc2l6ZQorVGhlIGJsb2Nrc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbS4gIFZhbGlkIHZhbHVlcyBhcmUgMCAoMTAyNCBieXRlcyksIDEKKygyMDQ4IGJ5dGVzKSwgb3IgMiAoNDA5NiBieXRlcykuICBUaGUgZGVmYXVsdCBibG9ja3NpemUgaXMgMTAyNCBieXRlcy4KKworQGl0ZW0gc19sb2dfZnJhZ19zaXplCitUaGUgc2l6ZSBvZiBmcmFnbWVudHMuICBUaGUgZXh0MiBmaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnRzCisoYW5kIG1heSBuZXZlciBzdXBwb3J0IGZyYWdtZW50cykuICBDdXJyZW50bHkgdGhpcyBmaWVsZCBtdXN0IGJlIHRoZQorc2FtZSBhcyBAY29kZXtzX2xvZ19ibG9ja19zaXplfS4KKworQGl0ZW0gc19maXJzdF9kYXRhX2Jsb2NrCitUaGUgZmlyc3QgZGF0YSBibG9jayBmb3IgdGhlIGZpbGVzeXN0ZW0uICBGb3IgZmlsZXN5c3RlbSB3aXRoIGEKK2Jsb2Nrc2l6ZSBvZiAxMDI0IGJ5dGVzLCB0aGlzIHZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMSwgc2luY2UgdGhlCitzdXBlcmJsb2NrIGlzIGxvY2F0ZWQgaW4gYmxvY2sgbnVtYmVyIDEuICBGb3IgZmlsZXN5c3RlbXMgd2l0aCBsYXJnZXIKK2Jsb2Nrc2l6ZXMsIHRoZSBzdXBlcmJsb2NrIGlzIHN0aWxsIGxvY2F0ZWQgYXQgYW4gb2Zmc2V0IG9mIDEwMjQgYnl0ZXMsCitzbyB0aGUgc3VwZXJibG9jayBpcyBsb2NhdGVkIGluIGJsb2NrIG51bWJlciAwLiAgQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZQoraXMgc2V0IHRvIDEgZm9yIGZpbGVzeXN0ZW1zIHdpdGggYSBibG9jayBzaXplIG9mIDEwMjQgYnl0ZXMsIG9yIDAgZm9yCitmaWxlc3lzdGVtcyB3aXRoIGxhcmdlciBibG9ja3NpemVzLgorCitAaXRlbSBzX21heF9tbnRfY291bnQKK1RoaXMgZmllbGQgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgdGhlIGZpbGVzeXN0ZW0gY2FuIGJlCittb3VudGVkIGJlZm9yZSBpdCBzaG91bGQgYmUgY2hlY2tlZCB1c2luZyBAY29kZXtlMmZzY2t9LiAgV2hlbgorQGNvZGV7ZTJmc2NrfSBpcyBydW4gd2l0aG91dCB0aGUgQHNhbXB7LWZ9IG9wdGlvbiwgQGNvZGV7ZTJmc2NrfSB3aWxsCitza2lwIHRoZSBmaWxlc3lzdGVtIGNoZWNrIGlmIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgZmlsZXN5c3RlbSBoYXMKK2JlZW4gbW91bnRlZCBpcyBsZXNzIHRoYW4gQGNvZGV7c19tYXhfbW50X2NvdW50fSBhbmQgaWYgdGhlIGludGVydmFsCitiZXR3ZWVuIHRoZSBsYXN0IHRpbWUgYSBmaWxlc3lzdGVtIGNoZWNrIHdhcyBwZXJmb3JtZWQgYW5kIHRoZSBjdXJyZW50Cit0aW1lIGlzIGxlc3MgdGhhbiBAY29kZXtzX2NoZWNraW50ZXJ2YWx9IChzZWUgYmVsb3cpLiAgVGhlIGRlZmF1bHQgdmFsdWUKK29mIEBjb2Rle3NfbWF4X21udF9jb3VudH0gaXMgMjAuCisKK0BpdGVtIHNfY2hlY2tpbnRlcnZhbAorVGhpcyBmaWVsZCBkZWZpbmVzIHRoZSBtaW5pbWFsIGludGVydmFsIGJldHdlZW4gZmlsZXN5c3RlbSBjaGVja3MuICBTZWUKK3RoZSBwcmV2aW91cyBlbnRyeSBmb3IgYSBkaXNjdXNzaW9uIG9mIGhvdyB0aGlzIGZpZWxkIGlzIHVzZWQgYnkKK0Bjb2Rle2UyZnNja30uICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGlzIGZpZWxkIGlzIDE4MCBkYXlzIChzaXgKK21vbnRocykuCisKK0BpdGVtIHNfZXJyb3JzCitUaGlzIGZpZWxkIGRlZmluZXMgdGhlIGJlaGF2aW9yIHdoaWNoIHNob3VsZCBiZSB1c2VkIGJ5IHRoZSBrZXJuZWwgb2YKK2Vycm9ycyBhcmUgZGV0ZWN0ZWQgaW4gdGhlIGZpbGVzeXN0ZW0uICBQb3NzaWJsZSB2YWx1ZXMgaW5jbHVkZToKKworQHRhYmxlIEBzYW1wCitAaXRlbSBFWFQyX0VSUk9SU19DT05USU5VRQorQ29udGludWUgZXhlY3V0aW9uIHdoZW4gZXJyb3JzIGFyZSBkZXRlY3RlZC4KKworQGl0ZW0gRVhUMl9FUlJPUlNfUk8KK1JlbW91bnQgdGhlIGZpbGVzeXN0ZW0gcmVhZC1vbmx5LgorCitAaXRlbSBFWFQyX0VSUk9SU19QQU5JQworUGFuaWMuCisKK0BlbmQgdGFibGUKKworVGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMgQHNhbXB7RVhUMl9FUlJPUlNfQ09OVElOVUV9LgorCitAZW5kIHRhYmxlCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX3RhYmxlcyAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGlub2RlIHRhYmxlIGFuZCB0aGUgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMuICBUaGUKK2lub2RlIHRhYmxlcyBhbmQgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgYXJlbid0IGFjdHVhbGx5IGluaXRpYWxpemVkOwordGhpcyBmdW5jdGlvbiBqdXN0IGFsbG9jYXRlcyB0aGUgc3BhY2UgZm9yIHRoZW0uCitAZW5kIGRlZnR5cGVmdW4KKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBGaWxlc3lzdGVtIGZsYWcgZnVuY3Rpb25zLCAgLCBJbml0aWFsaXppbmcgYSBmaWxlc3lzdGVtLCBGaWxlc3lzdGVtLWxldmVsIGZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBGaWxlc3lzdGVtIGZsYWcgZnVuY3Rpb25zCisKK1RoZSBmaWxlc3lzdGVtIGhhbmRsZSBoYXMgYSBudW1iZXIgb2YgZmxhZ3Mgd2hpY2ggY2FuIGJlIG1hbmlwdWxhdGVkCit1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uLiAgU29tZSBvZiB0aGVzZSBmbGFncyBhZmZlY3QgaG93IHRoZQorbGliZXh0MmZzIGZpbGVzeXN0ZW0gYmVoYXZlczsgb3RoZXJzIGFyZSBwcm92aWRlZCBzb2xlbHkgZm9yIHRoZQorYXBwbGljYXRpb24ncyBjb252ZW5pZW5jZS4KKworQGRlZnR5cGVmdW4gdm9pZCBleHQyZnNfbWFya19jaGFuZ2VkIChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKK0BkZWZ0eXBlZnVueCBpbnQgZXh0MmZzX3Rlc3RfY2hhbmdlZCAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitUaGlzIGZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBmaWxlc3lzdGVtIGhhcyBiZWVuIGNoYW5nZWQuIAorSXQgaXMgbm90IHVzZWQgYnkgdGhlIGV4dDJmcyBsaWJyYXJ5LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX21hcmtfc3VwZXJfZGlydHkgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9KQorTWFyayB0aGUgZmlsZXN5c3RlbSBAdmFye2ZzfSBhcyBiZWluZyBkaXJ0eTsgdGhpcyB3aWxsIGNhdXNlCit0aGUgc3VwZXJibG9jayBpbmZvcm1hdGlvbiB0byBiZSBmbHVzaGVkIG91dCB3aGVuIEBjb2Rle2V4dDJmc19jbG9zZX0gaXMKK2NhbGxlZC4gIEBjb2Rle2V4dDJmc19tYXJrX3N1cGVyX2RpcnR5fSB3aWxsIGFsc28gc2V0IHRoZSBmaWxlc3lzdGVtIAorY2hhbmdlZCBmbGFnLiAgVGhlIGRpcnR5IGZsYWcgaXMgYXV0b21hdGljYWxseSBjbGVhcmVkIGJ5CitAY29kZXtleHQyZnNfZmx1c2h9IHdoZW4gdGhlIHN1cGVyYmxvY2sgaXMgd3JpdHRlbiB0byBkaXNrLgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX21hcmtfdmFsaWQgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9KQorQGRlZnR5cGVmdW54IHZvaWQgZXh0MmZzX3VubWFya192YWxpZCAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZGVmdHlwZWZ1bnggaW50IGV4dDJmc190ZXN0X3ZhbGlkIChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKK1RoaXMgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIGZpbGVzeXN0ZW0gaXMgZnJlZSBvZiBlcnJvcnMuCitJdCBpcyBub3QgdXNlZCBieSBsaWJleHQyZnMsIGFuZCBpcyBzb2xlbHkgZm9yIHRoZSBhcHBsaWNhdGlvbidzIAorY29udmVuaWVuY2UuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gdm9pZCBleHQyZnNfbWFya19pYl9kaXJ0eSAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZGVmdHlwZWZ1bnggdm9pZCBleHQyZnNfbWFya19iYl9kaXJ0eSAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZGVmdHlwZWZ1bnggaW50IGV4dDJmc190ZXN0X2liX2RpcnR5IChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKK0BkZWZ0eXBlZnVueCBpbnQgZXh0MmZzX3Rlc3RfYmJfZGlydHkgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9KQorVGhlc2UgZmxhZ3MgaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhlIGlub2RlIG9yIGJsb2NrIGJpdG1hcHMgaGF2ZSBiZWVuCittb2RpZmllZC4gICBJZiB0aGUgZmxhZyBpcyBzZXQsIGl0IHdpbGwgY2F1c2UgdGhlIGFwcHJvcHJpYXRlIGJpdG1hcAordG8gYmUgd3JpdHRlbiB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGNsb3NlZCBvciBmbHVzaGVkLgorQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgRmlsZSBJL08gRnVuY3Rpb25zLCBJbm9kZSBGdW5jdGlvbnMsIEZpbGVzeXN0ZW0tbGV2ZWwgZnVuY3Rpb25zLCBFWFQyRlMgTGlicmFyeSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gRmlsZSBJL08gRnVuY3Rpb25zCisKK1RoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHByb3ZpZGUgYSBjb252ZW5pZW50IGFic3RyYWN0aW9uIHRvIHJlYWQgb3IKK3dyaXRlIGEgZmlsZSBpbiBhbiBmaWxlc3lzdGVtLiAgVGhlIGludGVyZmFjZSBpcyBzaW1pbGFyIGluIHNwaXJpdCB0bwordGhlIExpbnV4L1BPU0lYIGZpbGUgSS9PIHN5c3RlbSBjYWxscy4KKworQG1lbnUKKyogRmlsZSBoYW5kbGUgbWFuaXB1bGF0aW9uOjogICAgCisqIFJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YTo6ICAgIAorKiBDaGFuZ2luZyB0aGUgZmlsZSBvZmZzZXQgOjogICAKKyogR2V0dGluZyB0aGUgZmlsZSBzaXplOjogICAgICAgCitAZW5kIG1lbnUKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBGaWxlIGhhbmRsZSBtYW5pcHVsYXRpb24sIFJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YSwgRmlsZSBJL08gRnVuY3Rpb25zLCBGaWxlIEkvTyBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gRmlsZSBoYW5kbGUgbWFuaXB1bGF0aW9uCisKK1RoZSBmaWxlIGhhbmRsZSBmdW5jdGlvbnMgbXVjaCBsaWtlIGEgZmlsZSBkZXNjcmlwdG9yIGluIHRoZSBMaW51eC9QT1NJWAorZmlsZSBJL08gc3lzdGVtIGNhbGxzLiAgVW5saWtlIHRoZSBMaW51eC9QT1NJWCBzeXN0ZW0gY2FsbHMsIGZpbGVzIGFyZQorb3BlbmVkIHZpYSBpbm9kZSBudW1iZXJzIGluc3RlYWQgb2YgdmlhIHBhdGhuYW1lcy4gIFRvIHJlc29sdmUgYQorcGF0aG5hbWUgdG8gYW4gaW5vZGUgbnVtYmVyLCB1c2UgdGhlIGZ1bmN0aW9uIEBjb2Rle2V4dDJmc19uYW1laX0gb3IgdG8KK2NyZWF0ZSBhIG5ldyBmaWxlLCB1c2UgQGNvZGV7ZXh0MmZzX25ld19pbm9kZX0gYW5kIEBjb2Rle2V4dDJmc19saW5rfS4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19maWxlX29wZW4yIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIHN0cnVjdCBleHQyX2lub2RlICpAdmFye2lub2RlfSwgaW50IEB2YXJ7ZmxhZ3N9LCBleHQyX2ZpbGVfdCAqQHZhcntyZXR9KQorQGRlZnR5cGVmdW54IGVycmNvZGVfdCBleHQyZnNfZmlsZV9vcGVuIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIGludCBAdmFye2ZsYWdzfSwgZXh0Ml9maWxlX3QgKkB2YXJ7cmV0fSkKKworT3BlbnMgYSBmaWxlIGlkZW50aWZpZWQgYnkgaW5vZGUgbnVtYmVyIEB2YXJ7aW5vfSBpbiBmaWxlc3lzdGVtIEB2YXJ7ZnN9CithbmQgcmV0dXJucyBhIGZpbGUgaGFuZGxlIGluIEB2YXJ7cmV0fS4gIElmIGFuIGlub2RlIHN0cnVjdHVyZSBpcworcHJvdmlkZWQgaW4gQHZhcntpbm9kZX0sIHRoZW4gaXQgaXMgdXNlZCBpbnN0ZWFkIG9mIHJlYWRpbmcgdGhlIGlub2RlCitmcm9tIHRoZSBmaWxlc3lzdGVtLgorCitUaGUgQHZhcntmbGFnc30gYXJndW1lbnQgY29udGFpbnMgYSBiaXRtYXNrIG9mIGZsYWdzIHdoaWNoIGNvbnRyb2wgaG93Cit0aGUgZmlsZSBzaG91bGQgYmUgb3BlbmVkLgorCitAdGFibGUgQGNvZGUKK0BpdGVtIEVYVDJfRklMRV9XUklURQorT3BlbiB0aGUgZmlsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZy4gIFdpdGhvdXQgdGhpcyBmbGFnLCB0aGUgZmlsZSBpcworb3BlbmVkIGZvciB3cml0aW5nIG9ubHkuCisKK0BpdGVtIEVYVDJfRklMRV9DUkVBVEUKK0NyZWF0ZSB0aGUgZmlsZSBpZiBpdCBpcyBub3QgYWxyZWFkeSBwcmVzZW50LgorCitAZW5kIHRhYmxlCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXh0Ml9maWxzeXMgZXh0MmZzX2ZpbGVfZ2V0X2ZzIChleHQyX2ZpbGVfdCBAdmFye2ZpbGV9KQorUmV0dXJuIHRoZSBmaWxlc3lzdGVtIGhhbmRsZSB3aGVyZSB0aGUgb3BlbiBmaWxlIEB2YXJ7ZmlsZX0gd2FzIG9wZW5lZC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfY2xvc2UgKGV4dDJfZmlsZV90IEB2YXJ7ZmlsZX0pCitDbG9zZSB0aGUgZmlsZSBoYW5kbGUgQHZhcntmaWxlfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfZmx1c2ggKGV4dDJfZmlsZV90IEB2YXJ7ZmlsZX0pCitGb3JjZSBhbnkgZGF0YSB3cml0dGVuIHZpYSBAY29kZXtleHQyZnNfZmlsZV93cml0ZX0gdG8gZGlzay4KK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIFJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YSwgQ2hhbmdpbmcgdGhlIGZpbGUgb2Zmc2V0ICwgRmlsZSBoYW5kbGUgbWFuaXB1bGF0aW9uLCBGaWxlIEkvTyBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gUmVhZGluZyBhbmQgd3JpdGluZyBkYXRhCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9yZWFkIChleHQyX2ZpbGVfdCBAdmFye2ZpbGV9LCB2b2lkICpAdmFye2J1Zn0sIHVuc2lnbmVkIGludCBAdmFye3dhbnRlZH0sIHVuc2lnbmVkIGludCAqQHZhcntnb3R9KQorUmVhZCBAdmFye3dhbnRlZH0gYnl0ZXMgb2YgZGF0YSBmcm9tIEB2YXJ7ZmlsZX0gc3RvcmUgaXQgaW4gdGhlIGJ1ZmZlcgorQHZhcntidWZ9LiAgVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdhcyBhY3R1YWxseSByZWFkIGlzIHJldHVybmVkCit2aWEgQHZhcntnb3R9LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZmlsZV93cml0ZSAoZXh0Ml9maWxlX3QgQHZhcntmaWxlfSwgY29uc3Qgdm9pZCAqQHZhcntidWZ9LCB1bnNpZ25lZCBpbnQgQHZhcntuYnl0ZXN9LCB1bnNpZ25lZCBpbnQgKkB2YXJ7d3JpdHRlbn0pCitXcml0ZSBAdmFye3dhbnRlZH0gYnl0ZXMgb2YgZGF0YSBmcm9tIHRoZSBidWZmZXIgQHZhcntidWZ9IHRvIHRoZQorY3VycmVudCBmaWxlIHBvc2l0aW9uIG9mIEB2YXJ7ZmlsZX0uICBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2FzIAorYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZCB2aWEgQHZhcntnb3R9LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgQ2hhbmdpbmcgdGhlIGZpbGUgb2Zmc2V0ICwgR2V0dGluZyB0aGUgZmlsZSBzaXplLCBSZWFkaW5nIGFuZCB3cml0aW5nIGRhdGEsIEZpbGUgSS9PIEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBDaGFuZ2luZyB0aGUgZmlsZSBvZmZzZXQKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19maWxlX2xsc2VlayAoZXh0Ml9maWxlX3QgQHZhcntmaWxlfSwgX191NjQgQHZhcntvZmZzZXR9LCBpbnQgQHZhcnt3aGVuY2V9LCBfX3U2NCAqQHZhcntyZXRfcG9zfSkKK0BkZWZ0eXBlZnVueCBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfbHNlZWsgKGV4dDJfZmlsZV90IEB2YXJ7ZmlsZX0sIGV4dDJfb2ZmX3QgQHZhcntvZmZzZXR9LCBpbnQgQHZhcnt3aGVuY2V9LCBleHQyX29mZl90ICpAdmFye3JldF9wb3N9KQorQ2hhbmdlIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gb2YgQHZhcntmaWxlfSBhY2NvcmRpbmcgdG8gdGhlCitkaXJlY3RpdmUgQHZhcnt3aGVuY2V9IGFzIGZvbGxvd3M6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gRVhUMl9TRUVLX1NFVAorVGhlIGZpbGUgcG9zaXRpb24gaXMgc2V0IHRvIEB2YXJ7b2Zmc2V0fSBieXRlcyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlCitmaWxlLgorCitAaXRlbSBFWFQyX1NFRUtfQ1VSCitUaGUgZmlsZSBwb3NpdGlvbiBzZXQgdG8gaXRzIGN1cnJlbnQgbG9jYXRpb24gcGx1cyBAdmFye29mZnNldH0gYnl0ZXMuCisKK0BpdGVtIEVYVDJfU0VFS19FTkQKK1RoZSBmaWxlIHBvc2l0aW9uIGlzIHNldCB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBwbHVzIEB2YXJ7b2Zmc2V0fQorYnl0ZXMuCitAZW5kIHRhYmxlCisKK1RoZSBjdXJyZW50IG9mZnNldCBpcyByZXR1cm5lZCB2aWEgQHZhcntyZXRfcG9zfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIEdldHRpbmcgdGhlIGZpbGUgc2l6ZSwgICwgQ2hhbmdpbmcgdGhlIGZpbGUgb2Zmc2V0ICwgRmlsZSBJL08gRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIEdldHRpbmcgdGhlIGZpbGUgc2l6ZQorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfZ2V0X2xzaXplIChleHQyX2ZpbGVfdCBAdmFye2ZpbGV9LCBfX3U2NCAqQHZhcntyZXRfc2l6ZX0pCitSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGZpbGUgQHZhcntmaWxlfSBpbiBAdmFye3JldF9zaXplfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBleHQyX29mZl90IGV4dDJmc19maWxlX2dldF9zaXplIChleHQyX2ZpbGVfdCBAdmFye2ZpbGV9KQorUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBmaWxlIEB2YXJ7ZmlsZX0uCitAZW5kIGRlZnR5cGVmdW4KKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBJbm9kZSBGdW5jdGlvbnMsIERpcmVjdG9yeSBmdW5jdGlvbnMsIEZpbGUgSS9PIEZ1bmN0aW9ucywgRVhUMkZTIExpYnJhcnkgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIElub2RlIEZ1bmN0aW9ucworCitAbWVudQorKiBSZWFkaW5nIGFuZCB3cml0aW5nIGlub2Rlczo6ICAKKyogSXRlcmF0aW5nIG92ZXIgaW5vZGVzIGluIGEgZmlsZXN5c3RlbTo6ICAKKyogSXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGFuIGlub2RlOjogIAorKiBJbm9kZSBDb252ZW5pZW5jZSBGdW5jdGlvbnM6OiAgCitAZW5kIG1lbnUKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBSZWFkaW5nIGFuZCB3cml0aW5nIGlub2RlcywgSXRlcmF0aW5nIG92ZXIgaW5vZGVzIGluIGEgZmlsZXN5c3RlbSwgSW5vZGUgRnVuY3Rpb25zLCBJbm9kZSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gUmVhZGluZyBhbmQgd3JpdGluZyBpbm9kZXMKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2lub2RlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIHN0cnVjdCBleHQyX2lub2RlICpAdmFye2lub2RlfSkKK1JlYWQgdGhlIGlub2RlIG51bWJlciBAdmFye2lub30gaW50byBAdmFye2lub2RlfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2lub2RlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIHN0cnVjdCBleHQyX2lub2RlICpAdmFye2lub2RlfSkKK1dyaXRlIEB2YXJ7aW5vZGV9IHRvIGlub2RlIEB2YXJ7aW5vfS4KK0BlbmQgZGVmdHlwZWZ1bgorCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgSXRlcmF0aW5nIG92ZXIgaW5vZGVzIGluIGEgZmlsZXN5c3RlbSwgSXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGFuIGlub2RlLCBSZWFkaW5nIGFuZCB3cml0aW5nIGlub2RlcywgSW5vZGUgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIEl0ZXJhdGluZyBvdmVyIGlub2RlcyBpbiBhIGZpbGVzeXN0ZW0KKworVGhlIGlub2RlX3NjYW4gYWJzdHJhY3Rpb24gaXMgdXNlZnVsIGZvciBpdGVyYXRpbmcgb3ZlciBhbGwgdGhlIGlub2RlcworaW4gYSBmaWxlc3lzdGVtLiAgCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfb3Blbl9pbm9kZV9zY2FuIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgaW50IEB2YXJ7YnVmZmVyX2Jsb2Nrc30sIGV4dDJfaW5vZGVfc2NhbiAqQHZhcntzY2FufSkKK0luaXRpYWxpemUgdGhlIGl0ZXJhdGlvbiB2YXJpYWJsZSBAdmFye3NjYW59LiAgVGhpcyB2YXJpYWJsZSBpcyB1c2VkIGJ5CitAY29kZXtleHQyZnNfZ2V0X25leHRfaW5vZGV9LiAgVGhlIEB2YXJ7YnVmZmVyX2Jsb2Nrc30gcGFyYW1ldGVyCitjb250cm9scyBob3cgbWFueSBibG9ja3Mgb2YgdGhlIGlub2RlIHRhYmxlIGFyZSByZWFkIGluIGF0IGEgdGltZS4gIEEKK2xhcmdlIG51bWJlciBvZiBibG9ja3MgcmVxdWlyZXMgbW9yZSBtZW1vcnksIGJ1dCByZWR1Y2VzIHRoZSBvdmVyaGVhZCBpbgorc2Vla2luZyBhbmQgcmVhZGluZyBmcm9tIHRoZSBkaXNrLiAgSWYgQHZhcntidWZmZXJfYmxvY2tzfSBpcyB6ZXJvLCBhCitzdWl0YWJsZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19jbG9zZV9pbm9kZV9zY2FuIChleHQyX2lub2RlX3NjYW4gQHZhcntzY2FufSkKK1JlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggQHZhcntzY2FufSBhbmQgaW52YWxpZGF0ZSBpdC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2dldF9uZXh0X2lub2RlIChleHQyX2lub2RlX3NjYW4gQHZhcntzY2FufSwgZXh0Ml9pbm9fdCAqQHZhcntpbm99LCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqQHZhcntpbm9kZX0pCisKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgbmV4dCBpbm9kZSBmcm9tIHRoZSBmaWxlc3lzdGVtOyB0aGUgaW5vZGUKK251bWJlciBvZiB0aGUgaW5vZGUgaXMgc3RvcmVkIGluIEB2YXJ7aW5vfSwgYW5kIHRoZSBpbm9kZSBpcyBzdG9yZWQgaW4KK0B2YXJ7aW5vZGV9LiAgCisKK0lmIHRoZSBpbm9kZSBpcyBsb2NhdGVkIGluIGEgYmxvY2sgdGhhdCBoYXMgYmVlbiBtYXJrZWQgYXMgYmFkLAorQGNvZGV7ZXh0MmZzX2dldF9uZXh0X2lub2RlfSB3aWxsIHJldHVybiB0aGUgZXJyb3IKK0Bjb2Rle0VYVDJfRVRfQkFEX0JMT0NLX0lOX0lOT0RFX1RBQkxFfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2lub2RlX3NjYW5fZ290b19ibG9ja2dyb3VwIChleHQyX2lub2RlX3NjYW4gQHZhcntzY2FufSwgaW50IEB2YXJ7Z3JvdXB9KQorU3RhcnQgdGhlIGlub2RlIHNjYW4gYXQgYSBwYXJ0aWN1bGFyIGV4dDIgYmxvY2tncm91cCwgQHZhcntncm91cH0uICAKK1RoaXMgZnVuY3Rpb24gbWF5IGJlIHNhZmVseSBjYWxsZWQgYXQgYW55IHRpbWUgd2hpbGUgQHZhcntzY2FufSBpcyB2YWxpZC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19zZXRfaW5vZGVfY2FsbGJhY2sgKGV4dDJfaW5vZGVfc2NhbiBAdmFye3NjYW59LCBlcnJjb2RlX3QgKCpkb25lX2dyb3VwKShleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9kZV9zY2FuIEB2YXJ7c2Nhbn0sIGRncnBfdCBAdmFye2dyb3VwfSwgdm9pZCAqIEB2YXJ7cHJpdmF0ZX0pLCB2b2lkICpAdmFye2RvbmVfZ3JvdXBfZGF0YX0pCitSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGJ5CitAY29kZXtleHQyX2dldF9uZXh0X2lub2RlfSB3aGVuIGFsbCBvZiB0aGUgaW5vZGVzIGluIGEgYmxvY2sgZ3JvdXAgaGF2ZQorYmVlbiBwcm9jZXNzZWQuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gaW50IGV4dDJmc19pbm9kZV9zY2FuX2ZsYWdzIChleHQyX2lub2RlX3NjYW4gQHZhcntzY2FufSwgaW50IEB2YXJ7c2V0X2ZsYWdzfSwgaW50IEB2YXJ7Y2xlYXJfZmxhZ3N9KQorCitTZXQgdGhlIHNjYW5fZmxhZ3MgQHZhcntzZXRfZmxhZ3N9IGFuZCBjbGVhciB0aGUgc2Nhbl9mbGFncyBAdmFye2NsZWFyX2ZsYWdzfS4KK1RoZSBmb2xsb3dpbmcgZmxhZ3MgY2FuIGJlIHNldCB1c2luZyB0aGlzIGludGVyZmFjZToKKworQHRhYmxlIEBzYW1wCisKK0BpdGVtIEVYVDJfU0ZfU0tJUF9NSVNTSU5HX0lUQUJMRSAKK1doZW4gYSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlLCBza2lwIGl0LiAgSWYgdGhpcyBmbGFnIGlzCitub3Qgc2V0IEBjb2Rle2V4dDJmc19nZXRfbmV4dF9pbm9kZX0gd2lsbCByZXR1cm4gdGhlIGVycm9yCitFWFQyX0VUX01JU1NJTkdfSU5PREVfVEFCTEUuCisKK0BlbmQgdGFibGUKKworQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgSXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGFuIGlub2RlLCBJbm9kZSBDb252ZW5pZW5jZSBGdW5jdGlvbnMsIEl0ZXJhdGluZyBvdmVyIGlub2RlcyBpbiBhIGZpbGVzeXN0ZW0sIElub2RlIEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBJdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gYW4gaW5vZGUKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19ibG9ja19pdGVyYXRlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIGludCBAdmFye2ZsYWdzfSwgY2hhciAqYmxvY2tfYnVmLCBpbnQgKCpmdW5jKShleHQyX2ZpbHN5cyBAdmFye2ZzfSwgYmxrX3QgKkB2YXJ7YmxvY2tucn0sIGludCBAdmFye2Jsb2NrY250fSwgdm9pZCAqQHZhcntwcml2YXRlfSksIHZvaWQgKkB2YXJ7cHJpdmF0ZX0pCisKK0l0ZXJhdGUgb3ZlciBhbGwgb2YgdGhlIGJsb2NrcyBpbiBpbm9kZSBudW1iZXIgQHZhcntpbm99IGluIGZpbGVzeXN0ZW0KK0B2YXJ7ZnN9LCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiBAdmFye2Z1bmN9IGZvciBlYWNoIGJsb2NrIGluIHRoZQoraW5vZGUuICBUaGUgQHZhcntibG9ja19idWZ9IHBhcmFtZXRlciBzaG91bGQgZWl0aGVyIGJlIE5VTEwsIG9yIGlmIHRoZQorQGNvZGV7ZXh0MmZzX2Jsb2NrX2l0ZXJhdGV9IGZ1bmN0aW9uIGlzIGNhbGxlZCByZXBlYXRlZGx5LCB0aGUgb3ZlcmhlYWQKK29mIGFsbG9jYXRpbmcgYW5kIGZyZWVpbmcgc2NyYXRjaCBtZW1vcnkgY2FuIGJlIGF2b2lkZWQgYnkgcGFzc2luZyBhCitwb2ludGVyIHRvIGEgc2NyYXRjaCBidWZmZXIgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCBhcyBiaWcgYXMgdGhyZWUgdGltZXMgdGhlCitmaWxlc3lzdGVtJ3MgYmxvY2tzaXplLiAgCisKK1RoZSBAdmFye2ZsYWdzfSBwYXJhbWV0ZXIgY29udHJvbHMgaG93IHRoZSBpdGVyYXRvciB3aWxsIGZ1bmN0aW9uOgorCitAdGFibGUgQHNhbXAKKworQGl0ZW0gQkxPQ0tfRkxBR19IT0xFCitUaGlzIGZsYWcgaW5kaWNpYXRlcyB0aGF0IHRoZSBpbnRlcmF0b3IgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbgorYmxvY2tzIHdoZXJlIHRoZSBibG9jayBudW1iZXIgaXMgemVybyAoYWxzbyBrbm93biBhcyBgYGhvbGVzJycuKSAgSXQgaXMKK2Fsc28ga25vd24gYXMgQkxPQ0tfRkxBR19BUFBFTkQsIHNpbmNlIGl0IGlzIGFsc28gdXNlZCBieSBmdW5jdGlvbnMKK3N1Y2ggYXMgZXh0MmZzX2V4cGFuZF9kaXIoKSB0byBhZGQgYSBuZXcgYmxvY2sgdG8gYW4gaW5vZGUuCisKK0BpdGVtIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UKK1RoaXMgZmxhZyBpbmRpY2F0ZXMgdGhhdCB0aGUgaXRlcmF0b3IgZnVuY3Rpb24gZm9yIHRoZQoraW5kaXJlY3QsIGRvdWJseSBpbmRpcmVjdCwgZXRjLiBibG9ja3Mgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhbGwKK29mIHRoZSBibG9ja3MgY29udGFpbmluZWQgaW4gdGhlIGluZGlyZWN0IGJsb2NrcyBhcmUgcHJvY2Vzc2VkLgorVGhpcyBpcyB1c2VmdWwgaWYgeW91IGFyZSBnb2luZyB0byBiZSBkZWFsbG9jYXRpbmcgYmxvY2tzIGZyb20gYW4KK2lub2RlLgorCitAaXRlbSBCTE9DS19GTEFHX0RBVEFfT05MWQorVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBpdGVyYXRvciBmdW5jdGlvbiBzaG91bGQgYmUKK2NhbGxlZCBmb3IgZGF0YSBibG9ja3Mgb25seS4KKworQGVuZCB0YWJsZQorCitUaGUgY2FsbGJhY2sgZnVuY3Rpb24gQHZhcntmdW5jfSBpcyBjYWxsZWQgd2l0aCBhIG51bWJlciBvZiBwYXJhbWV0ZXJzOwordGhlIEB2YXJ7ZnN9IGFuZCBAdmFye3ByaXZhdGV9IHBhcmFtZXRlcnMgYXJlIHNlbGYtZXhwbGFuYXRvcnksIGFuZAordGhlaXIgdmFsdWVzIGFyZSB0YWtlbiBmcm9tIHRoZSBwYXJhbWV0ZXJzIHRvCitAY29kZXtleHQyZnNfYmxvY2tfaXRlcmF0ZX0uICAoVGhlIEB2YXJ7cHJpdmF0ZX0gZGF0YSBzdHJ1Y3R1cmUgaXMKK2dlbmVyYWxseSB1c2VkIGJ5IGNhbGxlcnMgdG8gQGNvZGV7ZXh0MmZzX2Jsb2NrX2l0ZXJhdGV9IHNvIHRoYXQgc29tZQorcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSBjYW4gYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4gIFRoZSAKK0B2YXJ7YmxvY2tjbnR9IHBhcmFtZXRlciwgaWYgbm9uLW5lZ2F0aXZlLCBpbmRpY2F0ZXMgdGhlIGxvZ2ljYWwgYmxvY2sKK251bWJlciBvZiBhIGRhdGEgYmxvY2sgaW4gdGhlIGlub2RlLiAgSWYgQHZhcntibG9ja2NudH0gaXMgbGVzcyB0aGFuCit6ZXJvLCB0aGVuIEB2YXJ7ZnVuY30gd2FzIGNhbGxlZCBvbiBhIG1ldGFkYXRhIGJsb2NrLCBhbmQgQHZhcntibG9ja2NudH0KK3dpbGwgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAgQkxPQ0tfQ09VTlRfSU5ELCBCTE9DS19DT1VOVF9ESU5ELAorQkxPQ0tfQ09VTlRfVElORCwgb3IgQkxPQ0tfQ09VTlRfVFJBTlNMQVRPUi4gIFRoZSBAdmFye2Jsb2NrbnJ9IGlzIGEKK3BvaW50ZXIgdG8gdGhlIGlub2RlIG9yIGluZGlyZWN0IGJsb2NrIGVudHJ5IGxpc3RpbmcgcGh5c2ljYWwgYmxvY2sKK251bWJlci4gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgbW9kaWZ5IHRoZSBwaHlzaWNhbCBibG9jayBudW1iZXIsIGlmCitpdCByZXR1cm5zIHRoZSBAdmFye0JMT0NLX0NIQU5HRUR9IGZsYWcuCisKKworVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIEB2YXJ7ZnVuY30gcmV0dXJucyBhIHJlc3VsdCBjb2RlIHdoaWNoIGlzIGNvbXBvc2VkIG9mCit0aGUgbG9naWNhbCBPUiBvZiB0aGUgZm9sbG93aW5nIGZsYWdzOgorCitAdGFibGUgQHNhbXAKKworQGl0ZW0gQkxPQ0tfQ0hBTkdFRAorCitUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgY2FsbGJhY2sgZnVuY3Rpb24gaGFzIG1vZGlmaWVkIHRoZSBwaHlzaWNhbAorYmxvY2sgbnVtYmVyIHBvaW50ZWQgdG8gYnkgQHZhcntibG9ja25yfS4KKworQGl0ZW0gQkxPQ0tfQUJPUlQKKworVGhpcyBmbGFnIHJlcXVlc3RzIHRoYXQgQGNvZGV7ZXh0MmZzX2Jsb2NrX2l0ZXJhdGV9IHRvIHN0b3AgaW1tZWRpYXRlbHkKK2FuZCByZXR1cm4gdG8gdGhlIGNhbGxlci4KKworQGVuZCB0YWJsZQorCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19ibG9ja19pdGVyYXRlMiAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfaW5vX3QgQHZhcntpbm99LCBpbnQgQHZhcntmbGFnc30sIGNoYXIgKkB2YXJ7YmxvY2t9X2J1ZiwgaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgQHZhcntmc30sIGJsa190ICpAdmFye2Jsb2NrbnJ9LCBlMl9ibGtjbnRfdCBAdmFye2Jsb2NrY250fSwgYmxrX3QgQHZhcntyZWZfYmxrfSwgaW50ICBAdmFye3JlZl9vZmZzZXR9LCB2b2lkICpAdmFye3ByaXZhdGV9KSwgdm9pZCAqQHZhcntwcml2YXRlfSkKKworVGhpcyBmdW5jdGlvbiBpcyBtdWNoIGxpa2UgQGNvZGV7ZXh0MmZzX2Jsb2NrX2l0ZXJhdGV9LCBleGNlcHQgdGhhdCB0aGUKK0B2YXJ7YmxvY2tjbnR9IHR5cGUgaXMgYSA2NC1iaXQgc2lnbmVkIHF1YW50aXR5LCB0byBzdXBwb3J0IGxhcmdlcgorZmlsZXMsIGFuZCB0aGUgYWRkaXRpb24gb2YgdGhlIEB2YXJ7cmVmX2Jsa30gYW5kIEB2YXJ7cmVmX29mZnNldH0KK2FyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLCB3aGljaCBpZGVudGlmeSB0aGUgbG9jYXRpb24KK29mIHRoZSBwaHlzaWNhbCBibG9jayBwb2ludGVkIHRvIGJ5IHBvaW50ZXIgQHZhcntibG9ja25yfS4gIElmCitAdmFye3JlZl9ibGt9IGlzIHplcm8sIHRoZW4gQHZhcntyZWZfb2Zmc2V0fSBjb250YWlucyB0aGUgb2Zmc2V0IGludG8KK3RoZSBAY29kZXtpX2Jsb2Nrc30gYXJyYXkuICBJZiBAdmFye3JlZl9ibGt9IGlzIG5vbi16ZXJvLCB0aGVuIHRoZSBwaHlzaWNhbAorYmxvY2sgbG9jYXRpb24gaXMgY29udGFpbmVkIGluc2lkZSBhbiBpbmRpcmVjdCBibG9jayBncm91cCwgYW5kCitAdmFye3JlZl9vZmZzZXR9IGNvbnRhaW5zIHRoZSBvZmZzZXQgaW50byB0aGUgaW5kaXJlY3QgYmxvY2suCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIElub2RlIENvbnZlbmllbmNlIEZ1bmN0aW9ucywgICwgSXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGFuIGlub2RlLCBJbm9kZSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gQ29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBJbm9kZXMKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19nZXRfYmxvY2tzIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIGJsa190ICpAdmFye2Jsb2Nrc30pCisKK1JldHVybnMgYW4gYXJyYXkgb2YgYmxvY2tzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGRpcmVjdCwKK2luZGlyZWN0LCBkb3VibHkgaW5kaXJlY3QsIGFuZCB0cmlwbHkgaW5kaXJlY3QgYmxvY2tzIGFzIHN0b3JlZCBpbiB0aGUKK2lub2RlIHN0cnVjdHVyZS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2NoZWNrX2RpcmVjdG9yeSAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfaW5vX3QgQHZhcntpbm99KQorUmV0dXJucyAwIGlmIEB2YXJ7aW5vfSBpcyBhIGRpcmVjdG9yeSwgYW5kIEBjb2Rle0VOT1RESVJ9IGlmIGl0IGlzIG5vdC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBpbnQgZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MgKHN0cnVjdCBleHQyX2lub2RlICpAdmFye2lub2RlfSkKKworUmV0dXJucyAxIGlmIHRoZSBpbm9kZSdzIGJsb2NrIGVudHJpZXMgYWN0dWFsbHkgdmFsaWQgYmxvY2sgZW50cmllcywgYW5kCiswIGlmIG5vdC4gIElub2RlcyB3aGljaCByZXByZXNlbnQgZGV2aWNlcyBhbmQgZmFzdCBzeW1ib2xpYyBsaW5rcyBkbyBub3QKK2NvbnRhaW4gdmFsaWQgYmxvY2sgZW50cmllcy4KK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIERpcmVjdG9yeSBmdW5jdGlvbnMsIEJpdG1hcCBGdW5jdGlvbnMsIElub2RlIEZ1bmN0aW9ucywgRVhUMkZTIExpYnJhcnkgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIERpcmVjdG9yeSBmdW5jdGlvbnMKKworQG1lbnUKKyogRGlyZWN0b3J5IGJsb2NrIGZ1bmN0aW9uczo6ICAgCisqIEl0ZXJhdGluZyBvdmVyIGEgZGlyZWN0b3J5OjogIAorKiBDcmVhdGluZyBhbmQgZXhwYW5kaW5nIGRpcmVjdG9yaWVzOjogIAorKiBDcmVhdGluZyBhbmQgcmVtb3ZpbmcgZGlyZWN0b3J5IGVudHJpZXM6OiAgCisqIExvb2tpbmcgdXAgZmlsZW5hbWVzOjogICAgICAgIAorKiBUcmFuc2xhdGluZyBpbm9kZSBudW1iZXJzIHRvIGZpbGVuYW1lczo6ICAKK0BlbmQgbWVudQorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIERpcmVjdG9yeSBibG9jayBmdW5jdGlvbnMsIEl0ZXJhdGluZyBvdmVyIGEgZGlyZWN0b3J5LCBEaXJlY3RvcnkgZnVuY3Rpb25zLCBEaXJlY3RvcnkgZnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIERpcmVjdG9yeSBibG9jayBmdW5jdGlvbnMKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2Rpcl9ibG9jayAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGJsa190IEB2YXJ7YmxvY2t9LCB2b2lkICpAdmFye2J1Zn0pCisKK1RoaXMgZnVuY3Rpb24gcmVhZHMgYSBkaXJlY3RvcnkgYmxvY2ssIHBlcmZvcm1pbmcgYW55IG5lY2Vzc2FyeQorYnl0ZSBzd2FwcGluZyBpZiBuZWNlc3NhcnkuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc193cml0ZV9kaXJfYmxvY2sgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBibGtfdCBAdmFye2Jsb2NrfSwgdm9pZCAqQHZhcntidWZ9KQorCitUaGlzIGZ1bmN0aW9uIHdyaXRlcyBhIGRpcmVjdG9yeSBibG9jaywgcGVyZm9ybWluZyBhbnkgbmVjZXNzYXJ5CitieXRlIHN3YXBwaW5nIGlmIG5lY2Vzc2FyeS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX25ld19kaXJfYmxvY2sgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190IEB2YXJ7ZGlyX2lub30sIGV4dDJfaW5vX3QgQHZhcntwYXJlbnRfaW5vfSwgY2hhciAqKkB2YXJ7YmxvY2t9KQorCitUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgZGlyZWN0b3J5IGJsb2NrIGluIEB2YXJ7YmxvY2t9LiAgSWYKK0B2YXJ7ZGlyX2lub30gaXMgbm9uLXplcm8sIHRoZW4gQHZhcntkaXJfaW5mb30gYW5kIEB2YXJ7cGFyZW50X2lub30gaXMgdXNlZAordG8gaW5pdGlhbGl6ZSBkaXJlY3RvcnkgZW50cmllcyBmb3IgQGZpbGV7Ln0gYW5kIEBmaWxley4ufSwgcmVzcGVjdGl2ZWx5LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgSXRlcmF0aW5nIG92ZXIgYSBkaXJlY3RvcnksIENyZWF0aW5nIGFuZCBleHBhbmRpbmcgZGlyZWN0b3JpZXMsIERpcmVjdG9yeSBibG9jayBmdW5jdGlvbnMsIERpcmVjdG9yeSBmdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gSXRlcmF0aW5nIG92ZXIgYSBkaXJlY3RvcnkKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19kaXJfaXRlcmF0ZSAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfaW5vX3QgQHZhcntkaXJ9LCBpbnQgQHZhcntmbGFnc30sIGNoYXIgKkB2YXJ7YmxvY2tfYnVmfSwgaW50ICgqQHZhcntmdW5jfSkoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpAdmFye2RpcmVudH0sIGludCBAdmFye29mZnNldH0sIGludCBAdmFye2Jsb2Nrc2l6ZX0sIGNoYXIgKkB2YXJ7YnVmfSwgdm9pZCAqQHZhcntwcml2YXRlfSksIHZvaWQgKkB2YXJ7cHJpdmF0ZX0pCisKK1RoaXMgZnVuY3Rpb24gaXRlcmF0ZXMgb3ZlciBhbGwgb2YgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZQorZGlyZWN0b3J5IEB2YXJ7ZGlyfSwgY2FsbGluZyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gQHZhcntmdW5jfSBmb3IgZWFjaAorZGlyZWN0b3J5IGVudHJ5IGluIHRoZSBkaXJlY3RvcnkuICBUaGUgQHZhcntibG9ja19idWZ9IHBhcmFtZXRlciBzaG91bGQKK2VpdGhlciBiZSBOVUxMLCBvciBpZiB0aGUgQGNvZGV7ZXh0MmZzX2Rpcl9pdGVyYXRlfSBmdW5jdGlvbiBpcyAKK2NhbGxlZCByZXBlYXRlZGx5LCB0aGUgb3ZlcmhlYWQgb2YgYWxsb2NhdGluZyBhbmQgZnJlZWluZyAKK3NjcmF0Y2ggbWVtb3J5IGNhbiBiZSBhdm9pZGVkIGJ5IHBhc3NpbmcgYSBwb2ludGVyIHRvIGEgc2NyYXRjaCBidWZmZXIKK3doaWNoIG11c3QgYmUgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSBmaWxlc3lzdGVtJ3MgYmxvY2tzaXplLiAgCisKK1RoZSBAdmFye2ZsYWdzfSBwYXJhbWV0ZXIgY29udHJvbHMgaG93IHRoZSBpdGVyYXRvciB3aWxsIGZ1bmN0aW9uOgorCitAdGFibGUgQHNhbXAKKworQGl0ZW0gRElSRU5UX0ZMQUdfSU5DTFVERV9FTVBUWQorCitUaGlzIGZsYWcgaW5kaWNhdGVzIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgZXZlbiAKK2ZvciBkZWxldGVkIG9yIGVtcHR5IGRpcmVjdG9yeSBlbnRyaWVzLgorCitAZW5kIHRhYmxlCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIENyZWF0aW5nIGFuZCBleHBhbmRpbmcgZGlyZWN0b3JpZXMsIENyZWF0aW5nIGFuZCByZW1vdmluZyBkaXJlY3RvcnkgZW50cmllcywgSXRlcmF0aW5nIG92ZXIgYSBkaXJlY3RvcnksIERpcmVjdG9yeSBmdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gQ3JlYXRpbmcgYW5kIGV4cGFuZGluZyBkaXJlY3RvcmllcworCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX21rZGlyIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye3BhcmVudH0sIGV4dDJfaW5vX3QgQHZhcntpbnVtfSwgY29uc3QgY2hhciAqQHZhcntuYW1lfSkKKworVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeS4gIElmIEB2YXJ7aW51bX0gaXMgemVybywgdGhlbiBhCituZXcgaW5vZGUgd2lsbCBiZSBhbGxvY2F0ZWQ7IG90aGVyd2lzZSwgdGhlIGRpcmVjdG9yeSB3aWxsIGJlIGNyZWF0ZWQgaW4KK3RoZSBpbm9kZSBzcGVjaWZpZWQgYnkgQHZhcntpbnVtfS4gIElmIEB2YXJ7bmFtZX0gc3BlY2lmaWVzIHRoZSBuYW1lIG9mCit0aGUgbmV3IGRpcmVjdG9yeTsgaWYgaXQgaXMgbm9uLU5VTEwsIHRoZW4gdGhlIG5ldyBkaXJlY3Rvcnkgd2lsbCBiZQorbGlua2VkIGludG8gdGhlIHBhcmVudCBkaXJlY3RvcnkgQHZhcntwYXJlbnR9LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZXhwYW5kX2RpciAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfaW5vX3QgQHZhcntkaXJ9KQorCitUaGlzIGZ1bmN0aW9uIGFkZHMgYSBuZXcgZW1wdHkgZGlyZWN0b3J5IGJsb2NrIGFuZCBhcHBlbmRzIGl0IHRvIAordGhlIGRpcmVjdG9yeSBAdmFye2Rpcn0uICBUaGlzIGFsbG93cyBmdW5jdGlvbnMgc3VjaCBhcworQGNvZGV7ZXh0MmZzX2xpbmt9IHRvIGFkZCBuZXcgZGlyZWN0b3J5IGVudHJpZXMgdG8gYSBkaXJlY3Rvcnkgd2hpY2ggaXMgZnVsbC4KKworQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgQ3JlYXRpbmcgYW5kIHJlbW92aW5nIGRpcmVjdG9yeSBlbnRyaWVzLCBMb29raW5nIHVwIGZpbGVuYW1lcywgQ3JlYXRpbmcgYW5kIGV4cGFuZGluZyBkaXJlY3RvcmllcywgRGlyZWN0b3J5IGZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBDcmVhdGluZyBhbmQgcmVtb3ZpbmcgZGlyZWN0b3J5IGVudHJpZXMKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19saW5rIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2Rpcn0sIGNvbnN0IGNoYXIgKkB2YXJ7bmFtZX0sIGV4dDJfaW5vX3QgQHZhcntpbm99LCBpbnQgZmxhZ3MpCisKK1RoaXMgZnVuY3Rpb24gYWRkcyBhIG5ldyBkaXJlY3RvcnkgZW50cnkgdG8gdGhlIGRpcmVjdG9yeSBAdmFye2Rpcn0sIAord2l0aCBAdmFye25hbWV9IGFuZCBAdmFye2lub30gc3BlY2lmeWluZyB0aGUgbmFtZSBhbmQgaW5vZGUgbnVtYmVyIGluCit0aGUgZGlyZWN0b3J5IGVudHJ5LCByZXNwZWN0aXZlbHkuICAKKworVGhlIGxvdyAzIGJpdHMgb2YgdGhlIGZsYWdzIGZpZWxkIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZmlsZSB0eXBlIG9mCitpbm9kZTogICAoTm8gb3RoZXIgZmxhZ3MgYXJlIGN1cnJlbnRseSBkZWZpbmVkLikKKworQHRhYmxlIEBzYW1wCisKK0BpdGVtIEVYVDJfRlRfVU5LTk9XTgorCitUaGUgZmlsZSB0eXBlIGlzIHVua25vd24uCisKK0BpdGVtIEVYVDJfRlRfUkVHX0ZJTEUKKworVGhlIGZpbGUgdHlwZSBpcyBhIG5vcm1hbCBmaWxlLgorCitAaXRlbSBFWFQyX0ZUX0RJUgorCitUaGUgZmlsZSB0eXBlIGlzIGEgZGlyZWN0b3J5LgorCitAaXRlbSBFWFQyX0ZUX0NIUkRFVgorCitUaGUgZmlsZSB0eXBlIGlzIGEgY2hhcmFjdGVyIGRldmljZS4KKworQGl0ZW0gRVhUMl9GVF9CTEtERVYKKworVGhlIGZpbGUgdHlwZSBpcyBhIGJsb2NrIGRldmljZS4KKworQGl0ZW0gRVhUMl9GVF9GSUZPCisKK1RoZSBmaWxlIHR5cGUgaXMgYSBuYW1lZCBwaXBlLgorCitAaXRlbSBFWFQyX0ZUX1NPQ0sKKworVGhlIGZpbGUgdHlwZSBpcyBhIHVuaXggZG9tYWluIHNvY2tldC4KKworQGl0ZW0gRVhUMl9GVF9TWU1MSU5LCisKK1RoZSBmaWxlIHR5cGUgaXMgYSBzeW1ib2xpYyBsaW5rLgorQGVuZCB0YWJsZSAKKworQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfdW5saW5rIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2Rpcn0sIGNvbnN0IGNoYXIgKkB2YXJ7bmFtZX0sIGV4dDJfaW5vX3QgQHZhcntpbm99LCBpbnQgQHZhcntmbGFnc30pCisKK1RoaXMgZnVuY3Rpb24gcmVtb3ZlcyBhIGRpcmVjdG9yeSBlbnRyeSBmcm9tIEB2YXJ7ZGlyfS4KK1RoZSBkaXJlY3RvcnkgZW50cnkgdG8gYmUgcmVtb3ZlZCBpcyB0aGUgZmlyc3Qgb25lIHdoaWNoIGlzCittYXRjaGVkIGJ5IEB2YXJ7bmFtZX0gYW5kIEB2YXJ7aW5vfS4gIElmIEB2YXJ7bmFtZX0gaXMgbm9uLU5VTEwsIAordGhlIGRpcmVjdG9yeSBlbnRyeSdzIG5hbWUgbXVzdCBtYXRjaCBAdmFye25hbWV9LiAgSWYgQHZhcntpbm99IGlzCitub24temVybywgdGhlIGRpcmVjdG9yeSBlbnRyeSdzIGlub2RlIG51bWJlciBtdXN0IG1hdGNoIEB2YXJ7aW5vfS4KK05vIGZsYWdzIGFyZSBjdXJyZW50bHkgZGVmaW5lZCBmb3IgQGNvZGV7ZXh0MmZzX3VubGlua307IGNhbGxlcnMgc2hvdWxkCitwYXNzIGluIHplcm8gdG8gdGhpcyBwYXJhbWV0ZXIuCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIExvb2tpbmcgdXAgZmlsZW5hbWVzLCBUcmFuc2xhdGluZyBpbm9kZSBudW1iZXJzIHRvIGZpbGVuYW1lcywgQ3JlYXRpbmcgYW5kIHJlbW92aW5nIGRpcmVjdG9yeSBlbnRyaWVzLCBEaXJlY3RvcnkgZnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIExvb2tpbmcgdXAgZmlsZW5hbWVzCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfbG9va3VwIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2Rpcn0sIGNvbnN0IGNoYXIgKkB2YXJ7bmFtZX0sIGludCBAdmFye25hbWVsZW59LCBjaGFyICpAdmFye2J1Zn0sIGV4dDJfaW5vX3QgKkB2YXJ7aW5vZGV9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfbmFtZWkgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190IEB2YXJ7cm9vdH0sIGV4dDJfaW5vX3QgQHZhcntjd2R9LCBjb25zdCBjaGFyICpAdmFye25hbWV9LCBleHQyX2lub190ICpAdmFye2lub2RlfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX25hbWVpX2ZvbGxvdyAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfaW5vX3QgQHZhcntyb290fSwgZXh0Ml9pbm9fdCBAdmFye2N3ZH0sIGNvbnN0IGNoYXIgKkB2YXJ7bmFtZX0sIGV4dDJfaW5vX3QgKkB2YXJ7aW5vZGV9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZm9sbG93X2xpbmsgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190IEB2YXJ7cm9vdH0sIGV4dDJfaW5vX3QgQHZhcntjd2R9LCBleHQyX2lub190IEB2YXJ7aW5vZGV9LCBleHQyX2lub190ICpAdmFye3Jlc31faW5vZGUpCitAZW5kIGRlZnR5cGVmdW4KKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBUcmFuc2xhdGluZyBpbm9kZSBudW1iZXJzIHRvIGZpbGVuYW1lcywgICwgTG9va2luZyB1cCBmaWxlbmFtZXMsIERpcmVjdG9yeSBmdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gVHJhbnNsYXRpbmcgaW5vZGUgbnVtYmVycyB0byBmaWxlbmFtZXMKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19nZXRfcGF0aG5hbWUgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190IEB2YXJ7ZGlyfSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIGNoYXIgKipAdmFye25hbWV9KQorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBCaXRtYXAgRnVuY3Rpb25zLCBFWFQyIGRhdGEgYWJzdHJhY3Rpb25zLCBEaXJlY3RvcnkgZnVuY3Rpb25zLCBFWFQyRlMgTGlicmFyeSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gQml0bWFwIEZ1bmN0aW9ucworCitAbWVudQorKiBSZWFkaW5nIGFuZCBXcml0aW5nIEJpdG1hcHM6OiAgCisqIEFsbG9jYXRpbmcgQml0bWFwczo6ICAgICAgICAgIAorKiBGcmVlIGJpdG1hcHM6OiAgICAgICAgICAgICAgICAKKyogQml0bWFwIE9wZXJhdGlvbnM6OiAgICAgICAgICAgCisqIENvbXBhcmluZyBiaXRtYXBzOjogICAgICAgICAgIAorKiBNb2RpZnlpbmcgQml0bWFwczo6ICAgICAgICAgICAKKyogUmVzaXppbmcgQml0bWFwczo6ICAgICAgICAgICAgCisqIENsZWFyaW5nIEJpdG1hcHM6OiAgICAgICAgICAgIAorQGVuZCBtZW51CisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgUmVhZGluZyBhbmQgV3JpdGluZyBCaXRtYXBzLCBBbGxvY2F0aW5nIEJpdG1hcHMsIEJpdG1hcCBGdW5jdGlvbnMsIEJpdG1hcCBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gUmVhZGluZyBhbmQgV3JpdGluZyBCaXRtYXBzCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfaW5vZGVfYml0bWFwIChleHQyX2ZpbHN5cyBAdmFye2ZzfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2Jsb2NrX2JpdG1hcCAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2lub2RlX2JpdG1hcCAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2Jsb2NrX2JpdG1hcCAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2JpdG1hcHMgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfYml0bWFwcyAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZW5kIGRlZnR5cGVmdW4KKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBBbGxvY2F0aW5nIEJpdG1hcHMsIEZyZWUgYml0bWFwcywgUmVhZGluZyBhbmQgV3JpdGluZyBCaXRtYXBzLCBCaXRtYXAgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIEFsbG9jYXRpbmcgQml0bWFwcworCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX2dlbmVyaWNfYml0bWFwIChfX3UzMiBAdmFye3N0YXJ0fSwgX191MzIgQHZhcntlbmR9LCBfdTMyIEB2YXJ7cmVhbF9lbmR9LCBjb25zdCBjaGFyICpAdmFye2Rlc2NyfSwgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpAdmFye3JldH0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBjb25zdCBjaGFyICpAdmFye2Rlc2NyfSwgZXh0MmZzX2Jsb2NrX2JpdG1hcCAqQHZhcntyZXR9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgY29uc3QgY2hhciAqQHZhcntkZXNjcn0sIGV4dDJmc19pbm9kZV9iaXRtYXAgKkB2YXJ7cmV0fSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIEZyZWUgYml0bWFwcywgQml0bWFwIE9wZXJhdGlvbnMsIEFsbG9jYXRpbmcgQml0bWFwcywgQml0bWFwIEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBGcmVlaW5nIGJpdG1hcHMKKworCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19mcmVlX2dlbmVyaWNfYml0bWFwIChleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7Yml0bWFwfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gdm9pZCBleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9KQorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBCaXRtYXAgT3BlcmF0aW9ucywgQ29tcGFyaW5nIGJpdG1hcHMsIEZyZWUgYml0bWFwcywgQml0bWFwIEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBCaXRtYXAgT3BlcmF0aW9ucworCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0sIGJsa190IEB2YXJ7YmxvY2t9KQorCitAZGVmdHlwZWZ1bnggdm9pZCBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0sIGJsa190IEB2YXJ7YmxvY2t9KQorCitAZGVmdHlwZWZ1bnggaW50IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0sIGJsa190IEB2YXJ7YmxvY2t9KQorCitUaGVzZSBmdW5jdGlvbnMgc2V0LCBjbGVhciwgYW5kIHRlc3QgYml0cyBpbiBhIGJsb2NrIGJpdG1hcCBAdmFye2JpdG1hcH0uCitAZW5kIGRlZnR5cGVmdW4KKworCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCAoZXh0MmZzX2lub2RlX2JpdG1hcCBAdmFye2JpdG1hcH0sIGV4dDJfaW5vX3QgQHZhcntpbm9kZX0pCisKK0BkZWZ0eXBlZnVueCB2b2lkIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIChleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7Yml0bWFwfSwgZXh0Ml9pbm9fdCBAdmFye2lub2RlfSkKKworQGRlZnR5cGVmdW54IGludCBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9LCBleHQyX2lub190IEB2YXJ7aW5vZGV9KQorCitUaGVzZSBmdW5jdGlvbnMgc2V0LCBjbGVhciwgYW5kIHRlc3QgYml0cyBpbiBhbiBpbm9kZSBiaXRtYXAgQHZhcntiaXRtYXB9LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXAgKGV4dDJmc19ibG9ja19iaXRtYXAgQHZhcntiaXRtYXB9LCBibGtfdCBAdmFye2Jsb2NrfSkKKworQGRlZnR5cGVmdW54IHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0sIGJsa190IEB2YXJ7YmxvY2t9KQorCitAZGVmdHlwZWZ1bnggaW50IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwIChleHQyZnNfYmxvY2tfYml0bWFwIEB2YXJ7Yml0bWFwfSwgYmxrX3QgQHZhcntibG9ja30pCisKK0BkZWZ0eXBlZnVueCB2b2lkIGV4dDJmc19mYXN0X21hcmtfaW5vZGVfYml0bWFwIChleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7Yml0bWFwfSwgZXh0Ml9pbm9fdCBAdmFye2lub2RlfSkKKworQGRlZnR5cGVmdW54IHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2lub2RlX2JpdG1hcCAoZXh0MmZzX2lub2RlX2JpdG1hcCBAdmFye2JpdG1hcH0sIGV4dDJfaW5vX3QgQHZhcntpbm9kZX0pCisKK0BkZWZ0eXBlZnVueCBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9pbm9kZV9iaXRtYXAgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9LCBleHQyX2lub190IEB2YXJ7aW5vZGV9KQorCitUaGVzZSBgYGZhc3QnJyBmdW5jdGlvbnMgYXJlIGxpa2UgdGhlaXIgbm9ybWFsIGNvdW50ZXJwYXJ0czsgaG93ZXZlciwKK3RoZXkgYXJlIGltcGxlbWVudGVkIGFzIGlubGluZSBmdW5jdGlvbnMgYW5kIGRvIG5vdCBwZXJmb3JtIGJvdW5kcworY2hlY2tzIG9uIHRoZSBpbm9kZSBudW1iZXIgb3IgYmxvY2sgbnVtYmVyOyB0aGV5IGFyZSBhc3N1bWVkIHRvIGJlCitjb3JyZWN0LiAgVGhleSBzaG91bGQgb25seSBiZSB1c2VkIGluIHNwZWVkLWNyaXRpY2FsIGFwcGxpY2F0aW9ucywgd2hlcmUKK3RoZSBpbm9kZSBvciBibG9jayBudW1iZXIgaGFzIGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYnkgb3RoZXIgbWVhbnMuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gYmxrX3QgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfc3RhcnQgKGV4dDJmc19ibG9ja19iaXRtYXAgQHZhcntiaXRtYXB9KQorQGRlZnR5cGVmdW54IGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfc3RhcnQgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9KQorUmV0dXJuIHRoZSBmaXJzdCBpbm9kZSBvciBibG9jayB3aGljaCBpcyBzdG9yZWQgaW4gdGhlIGJpdG1hcC4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBibGtfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9lbmQgKGV4dDJmc19ibG9ja19iaXRtYXAgQHZhcntiaXRtYXB9KQorQGRlZnR5cGVmdW54IGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kIChleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7Yml0bWFwfSkKKworUmV0dXJuIHRoZSBsYXN0IGlub2RlIG9yIGJsb2NrIHdoaWNoIGlzIHN0b3JlZCBpbiB0aGUgYml0bWFwLgorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBDb21wYXJpbmcgYml0bWFwcywgTW9kaWZ5aW5nIEJpdG1hcHMsIEJpdG1hcCBPcGVyYXRpb25zLCBCaXRtYXAgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIENvbXBhcmluZyBiaXRtYXBzCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfY29tcGFyZV9ibG9ja19iaXRtYXAgKGV4dDJmc19ibG9ja19iaXRtYXAgQHZhcntibTF9LCBleHQyZnNfYmxvY2tfYml0bWFwIEB2YXJ7Ym0yfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfaW5vZGVfYml0bWFwIChleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7Ym0xfSwgZXh0MmZzX2lub2RlX2JpdG1hcCBAdmFye2JtMn0pCitAZW5kIGRlZnR5cGVmdW4KKworCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIE1vZGlmeWluZyBCaXRtYXBzLCBSZXNpemluZyBCaXRtYXBzLCBDb21wYXJpbmcgYml0bWFwcywgQml0bWFwIEZ1bmN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBNb2RpZnlpbmcgQml0bWFwcworCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2lub2RlX2JpdG1hcF9lbmQgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9LCBleHQyX2lub190IEB2YXJ7ZW5kfSwgZXh0Ml9pbm9fdCAqQHZhcntvZW5kfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2Jsb2NrX2JpdG1hcF9lbmQgKGV4dDJmc19ibG9ja19iaXRtYXAgQHZhcntiaXRtYXB9LCBibGtfdCBAdmFye2VuZH0sIGJsa190ICpAdmFye29lbmR9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgUmVzaXppbmcgQml0bWFwcywgQ2xlYXJpbmcgQml0bWFwcywgTW9kaWZ5aW5nIEJpdG1hcHMsIEJpdG1hcCBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gUmVzaXppbmcgQml0bWFwcworCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9nZW5lcmljX2JpdG1hcCAoX191MzIgQHZhcntuZXdfZW5kfSwgX191MzIgQHZhcntuZXdfcmVhbF9lbmR9LCBleHQyZnNfZ2VuZXJpY19iaXRtYXAgQHZhcntibWFwfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9pbm9kZV9iaXRtYXAgKF9fdTMyIEB2YXJ7bmV3X2VuZH0sIF9fdTMyIEB2YXJ7bmV3X3JlYWxfZW5kfSwgZXh0MmZzX2lub2RlX2JpdG1hcCBAdmFye2JtYXB9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcCAoX191MzIgQHZhcntuZXdfZW5kfSwgX191MzIgQHZhcntuZXdfcmVhbF9lbmR9LCBleHQyZnNfYmxvY2tfYml0bWFwIEB2YXJ7Ym1hcH0pCitAZW5kIGRlZnR5cGVmdW4KKworCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIENsZWFyaW5nIEJpdG1hcHMsICAsIFJlc2l6aW5nIEJpdG1hcHMsIEJpdG1hcCBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHN1YnNlY3Rpb24gQ2xlYXJpbmcgQml0bWFwcworCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19jbGVhcl9pbm9kZV9iaXRtYXAgKGV4dDJmc19pbm9kZV9iaXRtYXAgQHZhcntiaXRtYXB9KQorCitUaGlzIGZ1bmN0aW9uIHNldHMgYWxsIG9mIHRoZSBiaXRzIGluIHRoZSBpbm9kZSBiaXRtYXAgQHZhcntiaXRtYXB9IHRvIAorYmUgemVyby4KKworQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX2NsZWFyX2Jsb2NrX2JpdG1hcCAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye2JpdG1hcH0pCisKK1RoaXMgZnVuY3Rpb24gc2V0cyBhbGwgb2YgdGhlIGJpdHMgaW4gdGhlIGJsb2NrIGJpdG1hcCBAdmFye2JpdG1hcH0gdG8gCitiZSB6ZXJvLgorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBFWFQyIGRhdGEgYWJzdHJhY3Rpb25zLCBCeXRlLXN3YXBwaW5nIGZ1bmN0aW9ucywgQml0bWFwIEZ1bmN0aW9ucywgRVhUMkZTIExpYnJhcnkgRnVuY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzZWN0aW9uIEVYVDIgZGF0YSBhYnN0cmFjdGlvbnMKKworVGhlIGV4dDIgbGlicmFyeSBoYXMgYSBudW1iZXIgb2YgYWJzdHJhY3Rpb25zIHdoaWNoIGFyZSB1c2VmdWwgZm9yIGV4dDIKK3V0aWxpdHkgcHJvZ3JhbXMuICAKKworQG1lbnUKKyogQmFkYmxvY2tzIGxpc3QgbWFuYWdlbWVudDo6ICAgCisqIERpcmVjdG9yeS1ibG9jayBsaXN0IG1hbmFnZW1lbnQ6OiAgCisqIElub2RlIGNvdW50IGZ1bmN0aW9uczo6ICAgICAgIAorQGVuZCBtZW51CisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgQmFkYmxvY2tzIGxpc3QgbWFuYWdlbWVudCwgRGlyZWN0b3J5LWJsb2NrIGxpc3QgbWFuYWdlbWVudCwgRVhUMiBkYXRhIGFic3RyYWN0aW9ucywgRVhUMiBkYXRhIGFic3RyYWN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBCYWRibG9ja3MgbGlzdCBtYW5hZ2VtZW50CisKKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19iYWRibG9ja3NfbGlzdF9jcmVhdGUgKGV4dDJfYmFkYmxvY2tzX2xpc3QgKkB2YXJ7cmV0fSwgaW50IEB2YXJ7c2l6ZX0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gdm9pZCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZSAoZXh0Ml9iYWRibG9ja3NfbGlzdCBAdmFye2JifSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2FkZCAoZXh0Ml9iYWRibG9ja3NfbGlzdCBAdmFye2JifSwgYmxrX3QgQHZhcntibGt9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGludCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfdGVzdCAoZXh0Ml9iYWRibG9ja3NfbGlzdCBAdmFye2JifSwgYmxrX3QgQHZhcntibGt9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbiAoZXh0Ml9iYWRibG9ja3NfbGlzdCBAdmFye2JifSwgZXh0Ml9iYWRibG9ja3NfaXRlcmF0ZSAqQHZhcntyZXR9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGludCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZSAoZXh0Ml9iYWRibG9ja3NfaXRlcmF0ZSBpdGVyLCBibGtfdCAqQHZhcntibGt9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfZW5kIChleHQyX2JhZGJsb2Nrc19pdGVyYXRlIEB2YXJ7aXRlcn0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc191cGRhdGVfYmJfaW5vZGUgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2JhZGJsb2Nrc19saXN0IEB2YXJ7YmJfbGlzdH0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19yZWFkX2JiX2lub2RlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9iYWRibG9ja3NfbGlzdCAqQHZhcntiYl9saXN0fSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfYmJfRklMRSAoZXh0Ml9maWxzeXMgQHZhcntmc30sIEZJTEUgKmYsIGV4dDJfYmFkYmxvY2tzX2xpc3QgKkB2YXJ7YmJfbGlzdH0sIHZvaWQgKCppbnZhbGlkKShleHQyX2ZpbHN5cyBAdmFye2ZzfSwgYmxrX3QgQHZhcntibGt9KSkKK0BlbmQgZGVmdHlwZWZ1bgorCisKK0BjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQG5vZGUgRGlyZWN0b3J5LWJsb2NrIGxpc3QgbWFuYWdlbWVudCwgSW5vZGUgY291bnQgZnVuY3Rpb25zLCBCYWRibG9ja3MgbGlzdCBtYW5hZ2VtZW50LCBFWFQyIGRhdGEgYWJzdHJhY3Rpb25zCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0BzdWJzZWN0aW9uIERpcmVjdG9yeS1ibG9jayBsaXN0IG1hbmFnZW1lbnQKKworVGhlIGRibGlzdCBhYnN0cmFjdGlvbiBzdG9yZXMgYSBsaXN0IG9mIGJsb2NrcyBiZWxvbmdpbmcgdG8KK2RpcmVjdG9yaWVzLiAgVGhpcyBsaXN0IGNhbiBiZSB1c2VmdWwgd2hlbiBhIHByb2dyYW0gbmVlZHMgdG8gaW50ZXJhdGUKK292ZXIgYWxsIGRpcmVjdG9yeSBlbnRyaWVzIGluIGEgZmlsZXN5c3RlbTsgQGNvZGV7ZTJmc2NrfSBkb2VzIHRoaXMgaW4KK3Bhc3MgMiBvZiBpdHMgb3BlcmF0aW9ucywgYW5kIEBjb2Rle2RlYnVnZnN9IG5lZWRzIHRvIGRvIHRoaXMgd2hlbiBpdCBpcwordHJ5aW5nIHRvIHR1cm4gYW4gaW5vZGUgbnVtYmVyIGludG8gYSBwYXRobmFtZS4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19pbml0X2RibGlzdCAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGV4dDJfZGJsaXN0ICpAdmFye3JldF9kYmxpc3R9KQorCitDcmVhdGVzIGEgZGJsaXN0IGRhdGEgc3RydWN0dXJlIGFuZCByZXR1cm4gaXQgaW4gQHZhcntyZXRfZGJsaXN0fS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19mcmVlX2RibGlzdCAoZXh0Ml9kYmxpc3QgQHZhcntkYmxpc3R9KQorCitGcmVlIGEgZGJsaXN0IGRhdGEgc3RydWN0dXJlLgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfYWRkX2Rpcl9ibG9jayAoZXh0Ml9kYmxpc3QgQHZhcntkYmxpc3R9LCBleHQyX2lub190IEB2YXJ7aW5vfSwgYmxrX3QgQHZhcntibGt9LCBpbnQgQHZhcntibG9ja2NudH0pCisKK0FkZCBhbiBlbnRyeSB0byB0aGUgZGJsaXN0IGRhdGEgc3RydWN0dXJlLiAgVGhpcyBjYWxsIHJlY29yZHMgdGhlIGZhY3QKK3RoYXQgYmxvY2sgbnVtYmVyIEB2YXJ7YmxvY2tjbnR9IG9mIGRpcmVjdG9yeSBpbm9kZSBAdmFye2lub30gaXMgc3RvcmVkCitpbiBibG9jayBAdmFye2Jsa30uCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19zZXRfZGlyX2Jsb2NrIChleHQyX2RibGlzdCBAdmFye2RibGlzdH0sIGV4dDJfaW5vX3QgQHZhcntpbm99LCBibGtfdCBAdmFye2Jsa30sIGludCBAdmFye2Jsb2NrY250fSkKKworQ2hhbmdlIGFuIGVudHJ5IGluIHRoZSBkYmxpc3QgZGF0YSBzdHJ1Y3R1cmU7IHRoaXMgY2hhbmdlcyB0aGUgbG9jYXRpb24KK29mIGJsb2NrIG51bWJlciBAdmFye2Jsb2NrY250fSBvZiBkaXJlY3RvcnkgaW5kb2UgQHZhcntpbm99IHRvIGJlIGJsb2NrCitAdmFye2Jsa30uIAorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZGJsaXN0X2l0ZXJhdGUgKGV4dDJfZGJsaXN0IEB2YXJ7ZGJsaXN0fSwgaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgQHZhcntmc30sIHN0cnVjdCBleHQyX2RiX2VudHJ5ICpAdmFye2RiX2luZm99LCB2b2lkICpAdmFye3ByaXZhdGV9KSwgdm9pZCAqQHZhcntwcml2YXRlfSkKKworVGhpcyBpdGVyYXRvciBjYWxscyBAdmFye2Z1bmN9IGZvciBldmVyeSBlbnRyeSBpbiB0aGUgZGJsaXN0IGRhdGEgc3RydWN0dXJlLgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZGJsaXN0X2Rpcl9pdGVyYXRlIChleHQyX2RibGlzdCBAdmFye2RibGlzdH0sIGludCBmbGFncywgY2hhciAqQHZhcntibG9ja19idWZ9LCBpbnQgKCpmdW5jKShleHQyX2lub190IEB2YXJ7ZGlyfSwgaW50ICBAdmFye2VudHJ5fSwgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpAdmFye2RpcmVudH0sIGludCBAdmFye29mZnNldH0sIGludCBAdmFye2Jsb2Nrc2l6ZX0sIGNoYXIgKkB2YXJ7YnVmfSwgdm9pZCAqQHZhcntwcml2YXRlfSksIHZvaWQgKkB2YXJ7cHJpdmF0ZX0pCisKK1RoaXMgaXRlcmF0b3IgdGFrZXMgcmVhZHMgaW4gdGhlIGRpcmVjdG9yeSBibG9jayBpbmRpY2F0ZWQgaW4gZWFjaAorZGJsaXN0IGVudHJ5LCBhbmQgY2FsbHMgQHZhcntmdW5jfSBmb3IgZWFjaCBkaXJlY3RvcnkgZW50cnkgaW4gZWFjaAorZGlyZWN0b3J5IGJsb2NrLiAgSWYgQHZhcntkYmxpc3R9IGNvbnRhaW5zIGFsbCB0aGUgZGlyZWN0b3J5IGJsb2NrcyBpbiBhCitmaWxlc3lzdGVtLCB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gaXRlcmF0ZSBvdmVyIGFsbAorZGlyZWN0b3J5IGVudHJpZXMgZm9yIHRoYXQgZmlsZXN5c3RlbS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0Bub2RlIElub2RlIGNvdW50IGZ1bmN0aW9ucywgICwgRGlyZWN0b3J5LWJsb2NrIGxpc3QgbWFuYWdlbWVudCwgRVhUMiBkYXRhIGFic3RyYWN0aW9ucworQGNvbW1lbnQgIG5vZGUtbmFtZSwgIG5leHQsICBwcmV2aW91cywgIHVwCitAc3Vic2VjdGlvbiBJbm9kZSBjb3VudCBmdW5jdGlvbnMKKworVGhlIGljb3VudCBhYnN0cmFjdGlvbiBpcyBhIHNwZWNpYWxpemVkIGRhdGEgdHlwZSB1c2VkIGJ5IEBjb2Rle2UyZnNja30KK3RvIHN0b3JlIGhvdyBtYW55IHRpbWVzIGEgcGFydGljdWxhciBpbm9kZSBpcyByZWZlcmVuY2VkIGJ5IHRoZQorZmlsZXN5c3RlbS4gIFRoaXMgaXMgdXNlZCB0d2ljZTsgb25jZSB0byBzdG9yZSB0aGUgYWN0dWFsIG51bWJlciBvZiB0aW1lcwordGhhdCB0aGUgaW5vZGUgaXMgcmVmZXJlbmNlOyBhbmQgb25jZSB0byBzdG9yZSB0aGUgY2xhaW1lZCBudW1iZXIgb2YgdGltZXMKK3RoZSBpbm9kZSBpcyByZWZlcmVuY2VkIGFjY29yZGluZyB0byB0aGUgaW5vZGUgc3RydWN0dXJlLgorCitUaGlzIGFic3RyYWN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGV4dHJlbWVseSBlZmZpY2llbnQgZm9yIHN0b3JpbmcgdGhpcworc29ydCBvZiBpbmZvcm1hdGlvbiwgYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgb2YKK2lub2RlIGNvdW50cywgbmFtZWx5ICgxKSBpbm9kZSBjb3VudHMgYXJlIHZlcnkgb2Z0ZW4gemVybyAoYmVjYXVzZQordGhlIGlub2RlIGlzIGN1cnJyZW50bHkgbm90IGluIHVzZSksIGFuZCAoMikgbWFueSBmaWxlcyBoYXZlIGEgaW5vZGUKK2NvdW50IG9mIDEgKGJlY2F1c2UgdGhleSBhcmUgYSBmaWxlIHdoaWNoIGhhcyBubyBhZGRpdGlvbmFsIGhhcmQgbGlua3MpLgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9pY291bnQyIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgaW50IEB2YXJ7ZmxhZ3N9LCBpbnQgQHZhcntzaXplfSwgZXh0Ml9pY291bnRfdCBAdmFye2hpbnR9LCBleHQyX2ljb3VudF90ICpAdmFye3JldH0pCisKK0NyZWF0ZXMgYW4gaWNvdW50IHN0dWN0dXJlIGZvciBhIGZpbGVzeXN0ZW0gQHZhcntmc30sIHdpdGggaW5pdGlhbCBzcGFjZQorZm9yIEB2YXJ7c2l6ZX0gaW5vZGVzIHdob3NlIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAxLiAgVGhlIEB2YXJ7ZmxhZ3N9CitwYXJhbWV0ZXIgaXMgZWl0aGVyIDAgb3IgQGNvZGV7RVhUMl9JQ09VTlRfT1BUX0lOQ1JFTUVOVH0sIHdoaWNoCitpbmRpY2F0ZXMgdGhhdCBpY291bnQgc3RydWN0dXJlIHNob3VsZCBiZSBhYmxlIHRvIGluY3JlbWVudCBpbm9kZSBjb3VudHMKK3F1aWNrbHkuICBUaGUgaWNvdW50IHN0cnVjdHVyZSBpcyByZXR1cm5lZCBpbiBAdmFye3JldH0uICBUaGUgcmV0dXJuZWQKK2ljb3VudCBzdHJ1Y3R1cmUgaW5pdGlhbGx5IGhhcyBhIGNvdW50IG9mIHplcm8gZm9yIGFsbCBpbm9kZXMuCisKK1RoZSBAdmFye2hpbnR9IHBhcmFtZXRlciBhbGxvd3MgdGhlIGNhbGxlciB0byBvcHRpb25hbGx5IHBhc3MgaW4gYW5vdGhlcgoraWNvdW50IHN0cnVjdHVyZSB3aGljaCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGFycmF5IG9mIGlub2RlcyB3aG9zZQorY291bnQgaXMgZ3JlYXRlciB0aGFuIDEuICBJdCBpcyB1c2VkIHB1cmVseSBhcyBhIHNwZWVkIG9wdGltaXphdGlvbiBzbwordGhhdCB0aGUgaWNvdW50IHN0cnVjdHVyZSBjYW4gZGV0ZXJtaW5lIGluIGFkdmFuY2Ugd2hpY2ggaW5vZGVzIGFyZQorbGlrZWx5IHRvIGNvbnRhaW4gYSBjb3VudCBncmF0ZXIgdGhhbiAxLgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIHZvaWQgZXh0MmZzX2ZyZWVfaWNvdW50IChleHQyX2ljb3VudF90IEB2YXJ7aWNvdW50fSkKKworRnJlZXMgYW4gaWNvdW50IHN0cnVjdHVyZS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF9mZXRjaCAoZXh0Ml9pY291bnRfdCBAdmFye2ljb3VudH0sIGV4dDJfaW5vX3QgQHZhcntpbm99LCBfX3UxNiAqQHZhcntyZXR9KQorCitSZXR1cm5zIGluIEB2YXJ7cmV0fSBmZXRjaGVzIHRoZSBjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGlub2RlIEB2YXJ7aW5vfS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF9pbmNyZW1lbnQgKGV4dDJfaWNvdW50X3QgQHZhcntpY291bnR9LCBleHQyX2lub190IEB2YXJ7aW5vfSwgX191MTYgKkB2YXJ7cmV0fSkKKworSW5jcmVtZW50cyB0aGUgcmVmIGNvdW50IGZvciBpbm9kZSBAdmFye2lub30uCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19pY291bnRfZGVjcmVtZW50IChleHQyX2ljb3VudF90IEB2YXJ7aWNvdW50fSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIF9fdTE2ICpAdmFye3JldH0pCisKK0RlY3JlbWVudHMgdGhlIHJlZiBjb3VudCBmb3IgaW5vZGUgQHZhcntpbm99LgorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfaWNvdW50X3N0b3JlIChleHQyX2ljb3VudF90IEB2YXJ7aWNvdW50fSwgZXh0Ml9pbm9fdCBAdmFye2lub30sIF9fdTE2IEB2YXJ7Y291bnR9KQorCitTZXRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yIGlub2RlIEB2YXJ7aW5vfSB0byBiZSBAdmFye2NvdW50fS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBleHQyX2lub190IGV4dDJmc19nZXRfaWNvdW50X3NpemUgKGV4dDJfaWNvdW50X3QgQHZhcntpY291bnR9KQorCitSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiBpbm9kZXMgaW4gQHZhcntpY291bnR9IHdoaWNoIGhhcyBhIGNvdW50CitncmVhdGVyIHRoYW4gMS4KK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF92YWxpZGF0ZSAoZXh0Ml9pY291bnRfdCBAdmFye2ljb3VudH0sIEZJTEUgKkB2YXJ7Zn0pCisKK1ZhbGlkYXRlcyB0aGUgaW50ZXJuYWwgcmVwIGludmFyaWFudCBvZiBAdmFye2ljb3VudH07IGlmIHRoZXJlIGFyZSBhbnkKK3Byb2JsZW1zLCBwcmludCBvdXQgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRvIEB2YXJ7Zn0uICBUaGlzIGZ1bmN0aW9uIGlzCitpbnRlbmRlZCBmb3IgZGVidWdnaW5nIGFuZCB0ZXN0aW5nIHVzZSBvbmx5LgorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBCeXRlLXN3YXBwaW5nIGZ1bmN0aW9ucywgT3RoZXIgZnVuY3Rpb25zLCBFWFQyIGRhdGEgYWJzdHJhY3Rpb25zLCBFWFQyRlMgTGlicmFyeSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gQnl0ZS1zd2FwcGluZyBmdW5jdGlvbnMKKworQGRlZnR5cGVmdW4gdm9pZCBleHQyZnNfc3dhcF9zdXBlciAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBAdmFye3N1cGVyfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19zd2FwX2dyb3VwX2Rlc2MgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgKkB2YXJ7Z2RwfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGV4dDJmc19zd2FwX2lub2RlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgc3RydWN0IGV4dDJfaW5vZGUgKkB2YXJ7dG99LCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqQHZhcntmcm9tfSwgaW50IEB2YXJ7aG9zdG9yZGVyfSkKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biBpbnQgZXh0MmZzX25hdGl2ZV9mbGFnICh2b2lkKQorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBPdGhlciBmdW5jdGlvbnMsICAsIEJ5dGUtc3dhcHBpbmcgZnVuY3Rpb25zLCBFWFQyRlMgTGlicmFyeSBGdW5jdGlvbnMKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHNlY3Rpb24gT3RoZXIgZnVuY3Rpb25zCisKKy8qIGFsbG9jLmMgKi8KK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfbmV3X2lub2RlIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgZXh0Ml9pbm9fdCBAdmFye2Rpcn0sIGludCBAdmFye21vZGV9LCBleHQyZnNfaW5vZGVfYml0bWFwIEB2YXJ7bWFwfSwgZXh0Ml9pbm9fdCAqQHZhcntyZXR9KQorQGVuZCBkZWZ0eXBlZnVuCisKK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfbmV3X2Jsb2NrIChleHQyX2ZpbHN5cyBAdmFye2ZzfSwgYmxrX3QgQHZhcntnb2FsfSwgZXh0MmZzX2Jsb2NrX2JpdG1hcCBAdmFye21hcH0sIGJsa190ICpAdmFye3JldH0pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19nZXRfZnJlZV9ibG9ja3MgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBibGtfdCBAdmFye3N0YXJ0fSwgYmxrX3QgQHZhcntmaW5pc2h9LCBpbnQgQHZhcntudW19LCBleHQyZnNfYmxvY2tfYml0bWFwIEB2YXJ7bWFwfSwgYmxrX3QgKkB2YXJ7cmV0fSkKK0BlbmQgZGVmdHlwZWZ1bgorCisvKiBjaGVja19kZXNjLmMgKi8KK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfY2hlY2tfZGVzYyAoZXh0Ml9maWxzeXMgQHZhcntmc30pCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gZXJyY29kZV90IGV4dDJmc19nZXRfbnVtX2RpcnMgKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190ICpAdmFye3JldF9udW1fZGlyc30pCitAZW5kIGRlZnR5cGVmdW4KKworCisvKiBnZXRzaXplLmMgKi8KK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2RldmljZV9zaXplIChjb25zdCBjaGFyICpAdmFye2ZpbGV9LCBpbnQgQHZhcntibG9ja3NpemV9LCBibGtfdCAqQHZhcntyZXRibG9ja3N9KQorQGVuZCBkZWZ0eXBlZnVuCisKKworLyogaXNtb3VudGVkLmMgKi8KK0BkZWZ0eXBlZnVuIGVycmNvZGVfdCBleHQyZnNfY2hlY2tfaWZfbW91bnRlZCAoY29uc3QgY2hhciAqQHZhcntmaWxlfSwgaW50ICpAdmFye21vdW50X2ZsYWdzfSkKK0BlbmQgZGVmdHlwZWZ1bgorCisvKiB2ZXJzaW9uLmMgKi8KKworQGRlZnR5cGVmdW4gaW50IGV4dDJmc19nZXRfbGlicmFyeV92ZXJzaW9uIChjb25zdCBjaGFyICoqQHZhcnt2ZXJfc3RyaW5nfSwgY29uc3QgY2hhciAqKkB2YXJ7ZGF0ZV9zdHJpbmd9KQorCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgZXh0MiBsaWJyYXJ5LiAgVGhlCityZXR1cm4gdmFsdWUgY29udGFpbnMgYW4gaW50ZWdlciB2ZXJzaW9uIGNvZGUsIHdoaWNoIGNvbnNpc3RzIG9mIHRoZQorbWFqb3IgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGxpYnJhcnkgbXVsdGlwbGllZCBieSAxMDAsIHBsdXMgdGhlIG1pbm9yCit2ZXJzaW9uIG51bWJlciBvZiB0aGUgbGlicmFyeS4gIEhlbmNlLCBpZiB0aGUgbGlicmFyeSB2ZXJzaW9uIGlzIDEuMDgsCit0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSAxMDguCisKK0lmIEB2YXJ7dmVyX3N0cmluZ30gYW5kL29yIEB2YXJ7ZGF0ZV9zdHJpbmd9IGFyZSBub24tTlVMTCwgdGhleSB3aWxsIGJlCitzZXQgdG8gcG9pbnQgYXQgYSBjb25zdGFudCBzdHJpbmcgY29udGFpbmluZyB0aGUgbGlicmFyeSB2ZXJzaW9uIGFuZC9vcgorcmVsZWFzZSBkYXRlLCByZXNwZWN0aXZlbHkuCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gaW50IGV4dDJmc19wYXJzZV92ZXJzaW9uX3N0cmluZyAoY29uc3QgY2hhciAqQHZhcnt2ZXJfc3RyaW5nfSkKKworVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHZlcnNpb24gc3RyaW5nIHdoaWNoIG1heSBpbmNsdWRlZCBpbiBhbgorYXBwbGljYXRpb24gYW5kIHJldHVybnMgYSB2ZXJzaW9uIGNvZGUgdXNpbmcgdGhlIHNhbWUgYWxnb3JpdGhtIHVzZWQgYnkKK0Bjb2Rle2V4dDJmc19nZXRfbGlicmFyeV92ZXJzaW9ufS4gIEl0IGNhbiBiZSB1c2VkIGJ5IHByb2dyYW1zIGluY2x1ZGVkCitpbiB0aGUgQGNvZGV7ZTJmc3Byb2dzfSBkaXN0cmlidXRpb24gdG8gYXNzdXJlIHRoYXQgdGhleSBhcmUgdXNpbmcgYW4KK3VwLXRvLWRhdGUgZXh0MiBzaGFyZWQgbGlicmFyeS4KK0BlbmQgZGVmdHlwZWZ1bgorCisvKiBpbmxpbmUgZnVuY3Rpb25zICovCitAZGVmdHlwZWZ1biBpbnQgZXh0MmZzX2dyb3VwX29mX2JsayAoZXh0Ml9maWxzeXMgQHZhcntmc30sIGJsa190IEB2YXJ7YmxrfSkKKworVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBibG9jayBncm91cCB3aGljaCBjb250YWlucyB0aGUgYmxvY2sgQHZhcntibGt9LgorCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gaW50IGV4dDJmc19ncm91cF9vZl9pbm8gKGV4dDJfZmlsc3lzIEB2YXJ7ZnN9LCBleHQyX2lub190IEB2YXJ7aW5vfSkKKworVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBibG9jayBncm91cCB3aGljaCBjb250YWlucyB0aGUgaW5vZGUgQHZhcntpbm99LgorQGVuZCBkZWZ0eXBlZnVuCisKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBDb25jZXB0IEluZGV4LCBGdW5jdGlvbiBJbmRleCwgRVhUMkZTIExpYnJhcnkgRnVuY3Rpb25zLCBUb3AKK0Bjb21tZW50ICBub2RlLW5hbWUsICBuZXh0LCAgcHJldmlvdXMsICB1cAorQHVubnVtYmVyZWQgQ29uY2VwdCBJbmRleAorQHByaW50aW5kZXggY3AKKworQGMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAbm9kZSBGdW5jdGlvbiBJbmRleCwgICwgQ29uY2VwdCBJbmRleCwgVG9wCitAY29tbWVudCAgbm9kZS1uYW1lLCAgbmV4dCwgIHByZXZpb3VzLCAgdXAKK0B1bm51bWJlcmVkIEZ1bmN0aW9uIGFuZCBUeXBlIEluZGV4CitAcHJpbnRpbmRleCBmbgorCisKK0Bjb250ZW50cworQGJ5ZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2RvYy90ZXhpbmZvLnRleCBiL2UyZnNwcm9ncy9kb2MvdGV4aW5mby50ZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRkZDAxNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9kb2MvdGV4aW5mby50ZXgKQEAgLTAsMCArMSw3MjI2IEBACislIHRleGluZm8udGV4IC0tIFRlWCBtYWNyb3MgdG8gaGFuZGxlIFRleGluZm8gZmlsZXMuCislCislIExvYWQgcGxhaW4gaWYgbmVjZXNzYXJ5LCBpLmUuLCBpZiBydW5uaW5nIHVuZGVyIGluaXRleC4KK1xleHBhbmRhZnRlclxpZnhcY3NuYW1lIGZtdG5hbWVcZW5kY3NuYW1lXHJlbGF4XGlucHV0IHBsYWluXGZpCislCitcZGVmXHRleGluZm92ZXJzaW9uezIwMDYtMDItMTMuMTZ9CislCislIENvcHlyaWdodCAoQykgMTk4NSwgMTk4NiwgMTk4OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwKKyUgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlCislIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyUKKyUgVGhpcyB0ZXhpbmZvLnRleCBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorJSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworJSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0CislIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyUKKyUgVGhpcyB0ZXhpbmZvLnRleCBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorJSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CislIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCislIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyUKKyUgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyUgYWxvbmcgd2l0aCB0aGlzIHRleGluZm8udGV4IGZpbGU7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZQorJSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorJSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyUKKyUgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgcmVhZCBieSBUZVggd2hlbiBwcm9jZXNzaW5nCislIGEgVGV4aW5mbyBzb3VyY2UgZG9jdW1lbnQsIHlvdSBtYXkgdXNlIHRoZSByZXN1bHQgd2l0aG91dAorJSByZXN0cmljdGlvbi4gIChUaGlzIGhhcyBiZWVuIG91ciBpbnRlbnQgc2luY2UgVGV4aW5mbyB3YXMgaW52ZW50ZWQuKQorJQorJSBQbGVhc2UgdHJ5IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0ZXhpbmZvLnRleCBiZWZvcmUgc3VibWl0dGluZyBidWcKKyUgcmVwb3J0czsgeW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb206CislICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vICh0aGUgVGV4aW5mbyBob21lIHBhZ2UpLCBvcgorJSAgIGZ0cDovL3R1Zy5vcmcvdGV4L3RleGluZm8udGV4CislICAgICAoYW5kIGFsbCBDVEFOIG1pcnJvcnMsIHNlZSBodHRwOi8vd3d3LmN0YW4ub3JnKS4KKyUgVGhlIHRleGluZm8udGV4IGluIGFueSBnaXZlbiBkaXN0cmlidXRpb24gY291bGQgd2VsbCBiZSBvdXQKKyUgb2YgZGF0ZSwgc28gaWYgdGhhdCdzIHdoYXQgeW91J3JlIHVzaW5nLCBwbGVhc2UgY2hlY2suCislCislIFNlbmQgYnVnIHJlcG9ydHMgdG8gYnVnLXRleGluZm9AZ251Lm9yZy4gIFBsZWFzZSBpbmNsdWRlIGluY2x1ZGluZyBhCislIGNvbXBsZXRlIGRvY3VtZW50IGluIGVhY2ggYnVnIHJlcG9ydCB3aXRoIHdoaWNoIHdlIGNhbiByZXByb2R1Y2UgdGhlCislIHByb2JsZW0uICBQYXRjaGVzIGFyZSwgb2YgY291cnNlLCBncmVhdGx5IGFwcHJlY2lhdGVkLgorJQorJSBUbyBwcm9jZXNzIGEgVGV4aW5mbyBtYW51YWwgd2l0aCBUZVgsIGl0J3MgbW9zdCByZWxpYWJsZSB0byB1c2UgdGhlCislIHRleGkyZHZpIHNoZWxsIHNjcmlwdCB0aGF0IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gIEZvciBhIHNpbXBsZQorJSBtYW51YWwgZm9vLnRleGksIGhvd2V2ZXIsIHlvdSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzOgorJSAgIHRleCBmb28udGV4aQorJSAgIHRleGluZGV4IGZvby4/PworJSAgIHRleCBmb28udGV4aQorJSAgIHRleCBmb28udGV4aQorJSAgIGR2aXBzIGZvby5kdmkgLW8gICMgb3Igd2hhdGV2ZXI7IHRoaXMgbWFrZXMgZm9vLnBzLgorJSBUaGUgZXh0cmEgVGVYIHJ1bnMgZ2V0IHRoZSBjcm9zcy1yZWZlcmVuY2UgaW5mb3JtYXRpb24gY29ycmVjdC4KKyUgU29tZXRpbWVzIG9uZSBydW4gYWZ0ZXIgdGV4aW5kZXggc3VmZmljZXMsIGFuZCBzb21ldGltZXMgeW91IG5lZWQgbW9yZQorJSB0aGFuIHR3bzsgdGV4aTJkdmkgZG9lcyBpdCBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeS4KKyUKKyUgSXQgaXMgcG9zc2libGUgdG8gYWRhcHQgdGV4aW5mby50ZXggZm9yIG90aGVyIGxhbmd1YWdlcywgdG8gc29tZQorJSBleHRlbnQuICBZb3UgY2FuIGdldCB0aGUgZXhpc3RpbmcgbGFuZ3VhZ2Utc3BlY2lmaWMgZmlsZXMgZnJvbSB0aGUKKyUgZnVsbCBUZXhpbmZvIGRpc3RyaWJ1dGlvbi4KKyUKKyUgVGhlIEdOVSBUZXhpbmZvIGhvbWUgcGFnZSBpcyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby4KKworCitcbWVzc2FnZXtMb2FkaW5nIHRleGluZm8gW3ZlcnNpb24gXHRleGluZm92ZXJzaW9uXTp9CisKKyUgSWYgaW4gYSAuZm10IGZpbGUsIHByaW50IHRoZSB2ZXJzaW9uIG51bWJlcgorJSBhbmQgdHVybiBvbiBhY3RpdmUgY2hhcmFjdGVycyB0aGF0IHdlIGNvdWxkbid0IGRvIGVhcmxpZXIgYmVjYXVzZQorJSB0aGV5IG1pZ2h0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIGlucHV0IGZpbGUgbmFtZS4KK1xldmVyeWpvYntcbWVzc2FnZXtbVGV4aW5mbyB2ZXJzaW9uIFx0ZXhpbmZvdmVyc2lvbl19JQorICBcY2F0Y29kZWArPVxhY3RpdmUgXGNhdGNvZGVgXF89XGFjdGl2ZX0KKworXG1lc3NhZ2V7QmFzaWNzLH0KK1xjaGFyZGVmXG90aGVyPTEyCisKKyUgV2UgbmV2ZXIgd2FudCBwbGFpbidzIFxvdXRlciBkZWZpbml0aW9uIG9mIFwrIGluIFRleGluZm8uCislIEZvciBAdGV4LCB3ZSBjYW4gdXNlIFx0YWJhbGlnbi4KK1xsZXRcKyA9IFxyZWxheAorCislIFNhdmUgc29tZSBwbGFpbiB0ZXggbWFjcm9zIHdob3NlIG5hbWVzIHdlIHdpbGwgcmVkZWZpbmUuCitcbGV0XHB0ZXhiPVxiCitcbGV0XHB0ZXhidWxsZXQ9XGJ1bGxldAorXGxldFxwdGV4Yz1cYworXGxldFxwdGV4Y29tbWE9XCwKK1xsZXRccHRleGRvdD1cLgorXGxldFxwdGV4ZG90cz1cZG90cworXGxldFxwdGV4ZW5kPVxlbmQKK1xsZXRccHRleGVxdWl2PVxlcXVpdgorXGxldFxwdGV4ZXhjbGFtPVwhCitcbGV0XHB0ZXhmb290bm90ZT1cZm9vdG5vdGUKK1xsZXRccHRleGd0cj0+CitcbGV0XHB0ZXhoYXQ9XgorXGxldFxwdGV4aT1caQorXGxldFxwdGV4aW5kZW50PVxpbmRlbnQKK1xsZXRccHRleGluc2VydD1caW5zZXJ0CitcbGV0XHB0ZXhsYnJhY2U9XHsKK1xsZXRccHRleGxlc3M9PAorXGxldFxwdGV4bmV3d3JpdGVcbmV3d3JpdGUKK1xsZXRccHRleG5vaW5kZW50PVxub2luZGVudAorXGxldFxwdGV4cGx1cz0rCitcbGV0XHB0ZXhyYnJhY2U9XH0KK1xsZXRccHRleHNsYXNoPVwvCitcbGV0XHB0ZXhzdGFyPVwqCitcbGV0XHB0ZXh0PVx0CisKKyUgSWYgdGhpcyBjaGFyYWN0ZXIgYXBwZWFycyBpbiBhbiBlcnJvciBtZXNzYWdlIG9yIGhlbHAgc3RyaW5nLCBpdAorJSBzdGFydHMgYSBuZXcgbGluZSBpbiB0aGUgb3V0cHV0LgorXG5ld2xpbmVjaGFyID0gYF5eSgorCislIFVzZSBUZVggMy4wJ3MgXGlucHV0bGluZW5vIHRvIGdldCB0aGUgbGluZSBudW1iZXIsIGZvciBiZXR0ZXIgZXJyb3IKKyUgbWVzc2FnZXMsIGJ1dCBpZiB3ZSdyZSB1c2luZyBhbiBvbGQgdmVyc2lvbiBvZiBUZVgsIGRvbid0IGRvIGFueXRoaW5nLgorJQorXGlmeFxpbnB1dGxpbmVub1x0aGlzaXN1bmRlZmluZWQKKyAgXGxldFxsaW5lbnVtYmVyID0gXGVtcHR5ICUgUHJlLTMuMC4KK1xlbHNlCisgIFxkZWZcbGluZW51bWJlcntsLlx0aGVcaW5wdXRsaW5lbm86XHNwYWNlfQorXGZpCisKKyUgU2V0IHVwIGZpeGVkIHdvcmRzIGZvciBFbmdsaXNoIGlmIG5vdCBhbHJlYWR5IHNldC4KK1xpZnhccHV0d29yZEFwcGVuZGl4XHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZEFwcGVuZGl4e0FwcGVuZGl4fVxmaQorXGlmeFxwdXR3b3JkQ2hhcHRlclx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkQ2hhcHRlcntDaGFwdGVyfVxmaQorXGlmeFxwdXR3b3JkZmlsZVx1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkZmlsZXtmaWxlfVxmaQorXGlmeFxwdXR3b3JkaW5cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3JkaW57aW59XGZpCitcaWZ4XHB1dHdvcmRJbmRleElzRW1wdHlcdW5kZWZpbmVkICAgICBcZ2RlZlxwdXR3b3JkSW5kZXhJc0VtcHR5eyhJbmRleCBpcyBlbXB0eSl9XGZpCitcaWZ4XHB1dHdvcmRJbmRleE5vbmV4aXN0ZW50XHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5kZXhOb25leGlzdGVudHsoSW5kZXggaXMgbm9uZXhpc3RlbnQpfVxmaQorXGlmeFxwdXR3b3JkSW5mb1x1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkSW5mb3tJbmZvfVxmaQorXGlmeFxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9me0luc3RhbmNlIFZhcmlhYmxlIG9mfVxmaQorXGlmeFxwdXR3b3JkTWV0aG9kb25cdW5kZWZpbmVkICBcZ2RlZlxwdXR3b3JkTWV0aG9kb257TWV0aG9kIG9ufVxmaQorXGlmeFxwdXR3b3JkTm9UaXRsZVx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkTm9UaXRsZXtObyBUaXRsZX1cZmkKK1xpZnhccHV0d29yZG9mXHVuZGVmaW5lZCAgICAgICAgXGdkZWZccHV0d29yZG9me29mfVxmaQorXGlmeFxwdXR3b3Jkb25cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3Jkb257b259XGZpCitcaWZ4XHB1dHdvcmRwYWdlXHVuZGVmaW5lZCAgICAgIFxnZGVmXHB1dHdvcmRwYWdle3BhZ2V9XGZpCitcaWZ4XHB1dHdvcmRzZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRzZWN0aW9ue3NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRTZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRTZWN0aW9ue1NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRzZWVcdW5kZWZpbmVkICAgICAgIFxnZGVmXHB1dHdvcmRzZWV7c2VlfVxmaQorXGlmeFxwdXR3b3JkU2VlXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkU2Vle1NlZX1cZmkKK1xpZnhccHV0d29yZFNob3J0VE9DXHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZFNob3J0VE9De1Nob3J0IENvbnRlbnRzfVxmaQorXGlmeFxwdXR3b3JkVE9DXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkVE9De1RhYmxlIG9mIENvbnRlbnRzfVxmaQorJQorXGlmeFxwdXR3b3JkTUphblx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1KYW57SmFudWFyeX1cZmkKK1xpZnhccHV0d29yZE1GZWJcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNRmVie0ZlYnJ1YXJ5fVxmaQorXGlmeFxwdXR3b3JkTU1hclx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1NYXJ7TWFyY2h9XGZpCitcaWZ4XHB1dHdvcmRNQXByXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUFwcntBcHJpbH1cZmkKK1xpZnhccHV0d29yZE1NYXlcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTWF5e01heX1cZmkKK1xpZnhccHV0d29yZE1KdW5cdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNSnVue0p1bmV9XGZpCitcaWZ4XHB1dHdvcmRNSnVsXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUp1bHtKdWx5fVxmaQorXGlmeFxwdXR3b3JkTUF1Z1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1BdWd7QXVndXN0fVxmaQorXGlmeFxwdXR3b3JkTVNlcFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1TZXB7U2VwdGVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTU9jdFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1PY3R7T2N0b2Jlcn1cZmkKK1xpZnhccHV0d29yZE1Ob3ZcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTm92e05vdmVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTURlY1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1EZWN7RGVjZW1iZXJ9XGZpCislCitcaWZ4XHB1dHdvcmREZWZtYWNcdW5kZWZpbmVkICAgIFxnZGVmXHB1dHdvcmREZWZtYWN7TWFjcm99XGZpCitcaWZ4XHB1dHdvcmREZWZzcGVjXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmREZWZzcGVje1NwZWNpYWwgRm9ybX1cZmkKK1xpZnhccHV0d29yZERlZnZhclx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZnZhcntWYXJpYWJsZX1cZmkKK1xpZnhccHV0d29yZERlZm9wdFx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZm9wdHtVc2VyIE9wdGlvbn1cZmkKK1xpZnhccHV0d29yZERlZmZ1bmNcdW5kZWZpbmVkICAgXGdkZWZccHV0d29yZERlZmZ1bmN7RnVuY3Rpb259XGZpCisKKyUgU2luY2UgdGhlIGNhdGVnb3J5IG9mIHNwYWNlIGlzIG5vdCBrbm93biwgd2UgaGF2ZSB0byBiZSBjYXJlZnVsLgorXGNoYXJkZWZcc3BhY2VjYXQgPSAxMAorXGRlZlxzcGFjZWlzc3BhY2V7XGNhdGNvZGVgXCA9XHNwYWNlY2F0fQorCislIElnbm9yZSBhIHRva2VuLgorJQorXGRlZlxnb2JibGUjMXt9CisKKyUgVGhlIGZvbGxvd2luZyBpcyB1c2VkIGluc2lkZSBzZXZlcmFsIFxlZGVmJ3MuCitcZGVmXG1ha2Vjc25hbWUjMXtcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lIzFcZW5kY3NuYW1lfQorCislIEh5cGhlbmF0aW9uIGZpeGVzLgorXGh5cGhlbmF0aW9ueworICBGbG9yLWktZGEgR2hvc3Qtc2NyaXB0IEdob3N0LXZpZXcgTWFjLU9TIFBvc3QtU2NyaXB0CisgIGFwLXBlbi1kaXggYml0LW1hcCBiaXQtbWFwcworICBkYXRhLWJhc2UgZGF0YS1iYXNlcyBlc2hlbGwgZmFsbC1pbmcgaGFsZi13YXkgbG9uZy1lc3QgbWFuLXUtc2NyaXB0CisgIG1hbi11LXNjcmlwdHMgbWluaS1idWYtZmVyIG1pbmktYnVmLWZlcnMgb3Zlci12aWV3IHBhci1hLWRpZ20KKyAgcGFyLWEtZGlnbXMgcmF0aC1lciByZWMtdGFuLWd1LWxhciByby1ib3QtaWNzIHNlLXZlcmUtbHkgc2V0LXVwIHNwYS1jZXMKKyAgc3BlbGwtaW5nIHNwZWxsLWluZ3MKKyAgc3RhbmQtYWxvbmUgc3Ryb25nLWVzdCB0aW1lLXN0YW1wIHRpbWUtc3RhbXBzIHdoaWNoLWV2ZXIgd2hpdGUtc3BhY2UKKyAgd2lkZS1zcHJlYWQgd3JhcC1hcm91bmQKK30KKworJSBNYXJnaW4gdG8gYWRkIHRvIHJpZ2h0IG9mIGV2ZW4gcGFnZXMsIHRvIGxlZnQgb2Ygb2RkIHBhZ2VzLgorXG5ld2RpbWVuXGJpbmRpbmdvZmZzZXQKK1xuZXdkaW1lblxub3JtYWxvZmZzZXQKK1xuZXdkaW1lblxwYWdld2lkdGggXG5ld2RpbWVuXHBhZ2VoZWlnaHQKKworJSBGb3IgYSBmaW5hbCBjb3B5LCB0YWtlIG91dCB0aGUgcmVjdGFuZ2xlcworJSB0aGF0IG1hcmsgb3ZlcmZ1bGwgYm94ZXMgKGluIGNhc2UgeW91IGhhdmUgZGVjaWRlZAorJSB0aGF0IHRoZSB0ZXh0IGxvb2tzIG9rIGV2ZW4gdGhvdWdoIGl0IHBhc3NlcyB0aGUgbWFyZ2luKS4KKyUKK1xkZWZcZmluYWxvdXR7XG92ZXJmdWxscnVsZT0wcHR9CisKKyUgQHwgaW5zZXJ0cyBhIGNoYW5nZWJhciB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBsaW5lLiAgSXQgc2hvdWxkCislIHN1cnJvdW5kIGFueSBjaGFuZ2VkIHRleHQuICBUaGlzIGFwcHJvYWNoIGRvZXMgKm5vdCogd29yayBpZiB0aGUKKyUgY2hhbmdlIHNwYW5zIG1vcmUgdGhhbiB0d28gbGluZXMgb2Ygb3V0cHV0LiAgVG8gaGFuZGxlIHRoYXQsIHdlIHdvdWxkCislIGhhdmUgYWRvcHQgYSBtdWNoIG1vcmUgZGlmZmljdWx0IGFwcHJvYWNoIChwdXR0aW5nIG1hcmtzIGludG8gdGhlIG1haW4KKyUgdmVydGljYWwgbGlzdCBmb3IgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggY2hhbmdlKS4KKyUKK1xkZWZcfHslCisgICUgXHZhZGp1c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBob3Jpem9udGFsIG1vZGUuCisgIFxsZWF2ZXZtb2RlCisgICUKKyAgJSBBcHBlbmQgdGhpcyB2ZXJ0aWNhbCBtb2RlIG1hdGVyaWFsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHZhZGp1c3R7JQorICAgICUgV2Ugd2FudCB0byBpbnNlcnQgYSBydWxlIHdpdGggdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIGN1cnJlbnQKKyAgICAlIGxlYWRpbmc7IHRoYXQgaXMgZXhhY3RseSB3aGF0IFxzdHJ1dGJveCBpcyBzdXBwb3NlZCB0byByZWNvcmQuCisgICAgXHZza2lwLVxiYXNlbGluZXNraXAKKyAgICAlCisgICAgJSBcdmFkanVzdC1pdGVtcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgdHlwZS4gIFNvCisgICAgJSB0aGUgXGxsYXAgaGVyZSBtb3ZlcyBvdXQgaW50byB0aGUgbGVmdC1oYW5kIG1hcmdpbi4KKyAgICBcbGxhcHslCisgICAgICAlCisgICAgICAlIEZvciBhIHRoaWNrZXIgb3IgdGhpbm5lciBiYXIsIGNoYW5nZSB0aGUgYDFwdCcuCisgICAgICBcdnJ1bGUgaGVpZ2h0XGJhc2VsaW5lc2tpcCB3aWR0aDFwdAorICAgICAgJQorICAgICAgJSBUaGlzIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBiYXIgYW5kIHRoZSB0ZXh0LgorICAgICAgXGhza2lwIDEycHQKKyAgICB9JQorICB9JQorfQorCislIFNvbWV0aW1lcyBpdCBpcyBjb252ZW5pZW50IHRvIGhhdmUgZXZlcnl0aGluZyBpbiB0aGUgdHJhbnNjcmlwdCBmaWxlCislIGFuZCBub3RoaW5nIG9uIHRoZSB0ZXJtaW5hbC4gIFdlIGRvbid0IGp1c3QgY2FsbCBcdHJhY2luZ2FsbCBoZXJlLAorJSBzaW5jZSB0aGF0IHByb2R1Y2VzIHNvbWUgdXNlbGVzcyBvdXRwdXQgb24gdGhlIHRlcm1pbmFsLiAgV2UgYWxzbyBtYWtlCislIHNvbWUgZWZmb3J0IHRvIG9yZGVyIHRoZSB0cmFjaW5nIGNvbW1hbmRzIHRvIHJlZHVjZSBvdXRwdXQgaW4gdGhlIGxvZworJSBmaWxlOyBjZi4gdHJhY2Uuc3R5IGluIExhVGVYLgorJQorXGRlZlxnbG9nZ2luZ2FsbHtcYmVnaW5ncm91cCBcZ2xvYmFsZGVmcyA9IDEgXGxvZ2dpbmdhbGwgXGVuZGdyb3VwfSUKK1xkZWZcbG9nZ2luZ2FsbHslCisgIFx0cmFjaW5nc3RhdHMyCisgIFx0cmFjaW5ncGFnZXMxCisgIFx0cmFjaW5nbG9zdGNoYXJzMiAgJSAyIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcdHJhY2luZ3BhcmFncmFwaHMxCisgIFx0cmFjaW5nb3V0cHV0MQorICBcdHJhY2luZ21hY3JvczIKKyAgXHRyYWNpbmdyZXN0b3JlczEKKyAgXHNob3dib3hicmVhZHRoXG1heGRpbWVuIFxzaG93Ym94ZGVwdGhcbWF4ZGltZW4KKyAgXGlmeFxlVGVYdmVyc2lvblx1bmRlZmluZWRcZWxzZSAlIGV0ZXggZ2l2ZXMgdXMgbW9yZSBsb2dnaW5nCisgICAgXHRyYWNpbmdzY2FudG9rZW5zMQorICAgIFx0cmFjaW5naWZzMQorICAgIFx0cmFjaW5nZ3JvdXBzMQorICAgIFx0cmFjaW5nbmVzdGluZzIKKyAgICBcdHJhY2luZ2Fzc2lnbnMxCisgIFxmaQorICBcdHJhY2luZ2NvbW1hbmRzMyAgJSAzIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcZXJyb3Jjb250ZXh0bGluZXMxNgorfSUKKworJSBhZGQgY2hlY2sgZm9yIFxsYXN0cGVuYWx0eSB0byBwbGFpbidzIGRlZmluaXRpb25zLiAgSWYgdGhlIGxhc3QgdGhpbmcKKyUgd2UgZGlkIHdhcyBhIFxub2JyZWFrLCB3ZSBkb24ndCB3YW50IHRvIGluc2VydCBtb3JlIHNwYWNlLgorJQorXGRlZlxzbWFsbGJyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XHNtYWxsc2tpcGFtb3VudAorICBccmVtb3ZlbGFzdHNraXBccGVuYWx0eS01MFxzbWFsbHNraXBcZmlcZml9CitcZGVmXG1lZGJyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XG1lZHNraXBhbW91bnQKKyAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktMTAwXG1lZHNraXBcZmlcZml9CitcZGVmXGJpZ2JyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XGJpZ3NraXBhbW91bnQKKyAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktMjAwXGJpZ3NraXBcZmlcZml9CisKKyUgRm9yIEBjcm9wbWFya3MgY29tbWFuZC4KKyUgRG8gQGNyb3BtYXJrcyB0byBnZXQgY3JvcCBtYXJrcy4KKyUKK1xuZXdpZlxpZmNyb3BtYXJrcworXGxldFxjcm9wbWFya3MgPSBcY3JvcG1hcmtzdHJ1ZQorJQorJSBEaW1lbnNpb25zIHRvIGFkZCBjcm9wbWFya3MgYXQgY29ybmVycy4KKyUgQWRkZWQgYnkgUC4gQS4gTWFjS2F5LCAxMiBOb3YuIDE5ODYKKyUKK1xuZXdkaW1lblxvdXRlcmhzaXplIFxuZXdkaW1lblxvdXRlcnZzaXplICUgc2V0IGJ5IHRoZSBwYXBlciBzaXplIHJvdXRpbmVzCitcbmV3ZGltZW5cY29ybmVybG9uZyAgXGNvcm5lcmxvbmc9MXBjCitcbmV3ZGltZW5cY29ybmVydGhpY2sgXGNvcm5lcnRoaWNrPS4zcHQKK1xuZXdkaW1lblx0b3BhbmRib3R0b21tYXJnaW4gXHRvcGFuZGJvdHRvbW1hcmdpbj0uNzVpbgorCislIE1haW4gb3V0cHV0IHJvdXRpbmUuCitcY2hhcmRlZlxQQUdFID0gMjU1Citcb3V0cHV0ID0ge1xvbmVwYWdlb3V0e1xwYWdlY29udGVudHNcUEFHRX19CisKK1xuZXdib3hcaGVhZGxpbmVib3gKK1xuZXdib3hcZm9vdGxpbmVib3gKKworJSBcb25lcGFnZW91dCB0YWtlcyBhIHZib3ggYXMgYW4gYXJndW1lbnQuICBOb3RlIHRoYXQgXHBhZ2Vjb250ZW50cworJSBkb2VzIGluc2VydGlvbnMsIGJ1dCB5b3UgaGF2ZSB0byBjYWxsIGl0IHlvdXJzZWxmLgorXGRlZlxvbmVwYWdlb3V0IzF7JQorICBcaWZjcm9wbWFya3MgXGhvZmZzZXQ9MHB0IFxlbHNlIFxob2Zmc2V0PVxub3JtYWxvZmZzZXQgXGZpCisgICUKKyAgXGlmb2RkXHBhZ2VubyAgXGFkdmFuY2VcaG9mZnNldCBieSBcYmluZGluZ29mZnNldAorICBcZWxzZSBcYWR2YW5jZVxob2Zmc2V0IGJ5IC1cYmluZGluZ29mZnNldFxmaQorICAlCisgICUgRG8gdGhpcyBvdXRzaWRlIG9mIHRoZSBcc2hpcG91dCBzbyBAY29kZSBldGMuIHdpbGwgYmUgZXhwYW5kZWQgaW4KKyAgJSB0aGUgaGVhZGxpbmUgYXMgdGhleSBzaG91bGQgYmUsIG5vdCB0YWtlbiBsaXRlcmFsbHkgKG91dHB1dHRpbmcgJydjb2RlKS4KKyAgXHNldGJveFxoZWFkbGluZWJveCA9IFx2Ym94e1xsZXRcaHNpemU9XHBhZ2V3aWR0aCBcbWFrZWhlYWRsaW5lfSUKKyAgXHNldGJveFxmb290bGluZWJveCA9IFx2Ym94e1xsZXRcaHNpemU9XHBhZ2V3aWR0aCBcbWFrZWZvb3RsaW5lfSUKKyAgJQorICB7JQorICAgICUgSGF2ZSB0byBkbyB0aGlzIHN0dWZmIG91dHNpZGUgdGhlIFxzaGlwb3V0IGJlY2F1c2Ugd2Ugd2FudCBpdCB0bworICAgICUgdGFrZSBlZmZlY3QgaW4gXHdyaXRlJ3MsIHlldCB0aGUgZ3JvdXAgZGVmaW5lZCBieSB0aGUgXHZib3ggZW5kcworICAgICUgYmVmb3JlIHRoZSBcc2hpcG91dCBydW5zLgorICAgICUKKyAgICBcaW5kZXhkdW1taWVzICAgICAgICAgJSBkb24ndCBleHBhbmQgY29tbWFuZHMgaW4gdGhlIG91dHB1dC4KKyAgICBcbm9ybWFsdHVybm9mZmFjdGl2ZSAgJSBcIGluIGluZGV4IGVudHJpZXMgbXVzdCBub3Qgc3RheSBcLCBlLmcuLCBpZgorICAgICAgICAgICAgICAgJSB0aGUgcGFnZSBicmVhayBoYXBwZW5zIHRvIGJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICUgV2UgZG9uJ3Qgd2FudCAudnIgKG9yIHdoYXRldmVyKSBlbnRyaWVzIGxpa2UgdGhpczoKKyAgICAgICAgICAgICAgICUgXGVudHJ5e3tcdHQgXGluZGV4YmFja3NsYXNoIH1hY3JvbnltfXszMn17XGNvZGUge1xhY3JvbnltfX0KKyAgICAgICAgICAgICAgICUgIlxhY3JvbnltIiB3b24ndCB3b3JrIHdoZW4gaXQncyByZWFkIGJhY2sgaW47CisgICAgICAgICAgICAgICAlIGl0IG5lZWRzIHRvIGJlIAorICAgICAgICAgICAgICAgJSB7XGNvZGUge3tcdHQgXGJhY2tzbGFzaGN1cmZvbnQgfWFjcm9ueW19CisgICAgXHNoaXBvdXRcdmJveHslCisgICAgICAlIERvIHRoaXMgZWFybHkgc28gcGRmIHJlZmVyZW5jZXMgZ28gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFnZS4KKyAgICAgIFxpZnBkZm1ha2VwYWdlZGVzdCBccGRmZGVzdCBuYW1le1x0aGVccGFnZW5vfSB4eXpcZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcyBcdmJveCB0byBcb3V0ZXJ2c2l6ZVxiZ3JvdXAKKyAgICAgICAgXGhzaXplID0gXG91dGVyaHNpemUKKyAgICAgICAgXHZza2lwLVx0b3BhbmRib3R0b21tYXJnaW4KKyAgICAgICAgXHZ0b3AgdG8wcHR7JQorICAgICAgICAgIFxsaW5le1xld3RvcFxoZmlsXGV3dG9wfSUKKyAgICAgICAgICBcbm9pbnRlcmxpbmVza2lwCisgICAgICAgICAgXGxpbmV7JQorICAgICAgICAgICAgXHZib3h7XG1vdmVsZWZ0XGNvcm5lcnRoaWNrXG5zdG9wfSUKKyAgICAgICAgICAgIFxoZmlsbAorICAgICAgICAgICAgXHZib3h7XG1vdmVyaWdodFxjb3JuZXJ0aGlja1xuc3RvcH0lCisgICAgICAgICAgfSUKKyAgICAgICAgICBcdnNzfSUKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbgorICAgICAgICBcbGluZVxiZ3JvdXAKKyAgICAgICAgICBcaGZpbCAlIGNlbnRlciB0aGUgcGFnZSB3aXRoaW4gdGhlIG91dGVyIChwYWdlKSBoc2l6ZS4KKyAgICAgICAgICBcaWZvZGRccGFnZW5vXGhza2lwXGJpbmRpbmdvZmZzZXRcZmkKKyAgICAgICAgICBcdmJveFxiZ3JvdXAKKyAgICAgIFxmaQorICAgICAgJQorICAgICAgXHVudmJveFxoZWFkbGluZWJveAorICAgICAgXHBhZ2Vib2R5eyMxfSUKKyAgICAgIFxpZmRpbVxodFxmb290bGluZWJveCA+IDBwdAorICAgICAgICAlIE9ubHkgbGVhdmUgdGhpcyBzcGFjZSBpZiB0aGUgZm9vdGxpbmUgaXMgbm9uZW1wdHkuCisgICAgICAgICUgKFdlIGxlc3NlbmVkIFx2c2l6ZSBmb3IgaXQgaW4gXG9kZGZvb3Rpbmd4eHguKQorICAgICAgICAlIFRoZSBcYmFzZWxpbmVza2lwPTI0cHQgaW4gcGxhaW4ncyBcbWFrZWZvb3RsaW5lIGhhcyBubyBlZmZlY3QuCisgICAgICAgIFx2c2tpcCAyXGJhc2VsaW5lc2tpcAorICAgICAgICBcdW52Ym94XGZvb3RsaW5lYm94CisgICAgICBcZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcworICAgICAgICAgIFxlZ3JvdXAgJSBlbmQgb2YgXHZib3hcYmdyb3VwCisgICAgICAgIFxoZmlsXGVncm91cCAlIGVuZCBvZiAoY2VudGVyaW5nKSBcbGluZVxiZ3JvdXAKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbiBwbHVzMWZpbGwgbWludXMxZmlsbAorICAgICAgICBcYm94bWF4ZGVwdGggPSBcY29ybmVydGhpY2sKKyAgICAgICAgXHZib3ggdG8wcHR7XHZzcworICAgICAgICAgIFxsaW5leyUKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlbGVmdFxjb3JuZXJ0aGlja1xuc2JvdH0lCisgICAgICAgICAgICBcaGZpbGwKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlcmlnaHRcY29ybmVydGhpY2tcbnNib3R9JQorICAgICAgICAgIH0lCisgICAgICAgICAgXG5vaW50ZXJsaW5lc2tpcAorICAgICAgICAgIFxsaW5le1xld2JvdFxoZmlsXGV3Ym90fSUKKyAgICAgICAgfSUKKyAgICAgIFxlZ3JvdXAgJSBcdmJveCBmcm9tIGZpcnN0IGNyb3BtYXJrcyBjbGF1c2UKKyAgICAgIFxmaQorICAgIH0lIGVuZCBvZiBcc2hpcG91dFx2Ym94CisgIH0lIGVuZCBvZiBncm91cCB3aXRoIFxpbmRleGR1bW1pZXMKKyAgXGFkdmFuY2VwYWdlbm8KKyAgXGlmbnVtXG91dHB1dHBlbmFsdHk+LTIwMDAwIFxlbHNlXGRvc3VwZXJlamVjdFxmaQorfQorCitcbmV3aW5zZXJ0XG1hcmdpbiBcZGltZW5cbWFyZ2luPVxtYXhkaW1lbgorCitcZGVmXHBhZ2Vib2R5IzF7XHZib3ggdG9ccGFnZWhlaWdodHtcYm94bWF4ZGVwdGg9XG1heGRlcHRoICMxfX0KK3tcY2F0Y29kZWBcQCA9MTEKK1xnZGVmXHBhZ2Vjb250ZW50cyMxe1xpZnZvaWRcdG9waW5zXGVsc2VcdW52Ym94XHRvcGluc1xmaQorJSBtYXJnaW5hbCBoYWNrcywganVoYUB2aWlzYS51dWNwIChKdWhhIFRha2FsYSkKK1xpZnZvaWRcbWFyZ2luXGVsc2UgJSBtYXJnaW5hbCBpbmZvIGlzIHByZXNlbnQKKyAgXHJsYXB7XGtlcm5caHNpemVcdmJveCB0b1x6QHtca2VybjFwdFxib3hcbWFyZ2luIFx2c3N9fVxmaQorXGRpbWVuQD1cZHAjMSBcdW52Ym94IzEKK1xpZnZvaWRcZm9vdGluc1xlbHNlXHZza2lwXHNraXBcZm9vdGluc1xmb290bm90ZXJ1bGUgXHVudmJveFxmb290aW5zXGZpCitcaWZyQGdnZWRib3R0b20gXGtlcm4tXGRpbWVuQCBcdmZpbCBcZml9Cit9CisKKyUgSGVyZSBhcmUgdGhlIHJ1bGVzIGZvciB0aGUgY3JvcG1hcmtzLiAgTm90ZSB0aGF0IHRoZXkgYXJlCislIG9mZnNldCBzbyB0aGF0IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZW0gaXMgdHJ1bHkgXG91dGVyaHNpemUgb3IgXG91dGVydnNpemUKKyUgKFAuIEEuIE1hY0theSwgMTIgTm92ZW1iZXIsIDE5ODYpCislCitcZGVmXGV3dG9we1x2cnVsZSBoZWlnaHRcY29ybmVydGhpY2sgZGVwdGgwcHQgd2lkdGhcY29ybmVybG9uZ30KK1xkZWZcbnN0b3B7XHZib3gKKyAge1xocnVsZSBoZWlnaHRcY29ybmVydGhpY2sgZGVwdGhcY29ybmVybG9uZyB3aWR0aFxjb3JuZXJ0aGlja319CitcZGVmXGV3Ym90e1x2cnVsZSBoZWlnaHQwcHQgZGVwdGhcY29ybmVydGhpY2sgd2lkdGhcY29ybmVybG9uZ30KK1xkZWZcbnNib3R7XHZib3gKKyAge1xocnVsZSBoZWlnaHRcY29ybmVybG9uZyBkZXB0aFxjb3JuZXJ0aGljayB3aWR0aFxjb3JuZXJ0aGlja319CisKKyUgUGFyc2UgYW4gYXJndW1lbnQsIHRoZW4gcGFzcyBpdCB0byAjMS4gIFRoZSBhcmd1bWVudCBpcyB0aGUgcmVzdCBvZgorJSB0aGUgaW5wdXQgbGluZSAoZXhjZXB0IHdlIHJlbW92ZSBhIHRyYWlsaW5nIGNvbW1lbnQpLiAgIzEgc2hvdWxkIGJlIGEKKyUgbWFjcm8gd2hpY2ggZXhwZWN0cyBhbiBvcmRpbmFyeSB1bmRlbGltaXRlZCBUZVggYXJndW1lbnQuCislCitcZGVmXHBhcnNlYXJne1xwYXJzZWFyZ3VzaW5ne319CitcZGVmXHBhcnNlYXJndXNpbmcjMSMyeyUKKyAgXGRlZlxuZXh0eyMyfSUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcb2JleWxpbmVzCisgICAgXHNwYWNlaXNzcGFjZQorICAgICMxJQorICAgIFxwYXJzZWFyZ2xpbmVcZW1wdHklIEluc2VydCB0aGUgXGVtcHR5IHRva2VuLCBzZWUgXGZpbmlzaHBhcnNlYXJnIGJlbG93LgorfQorCit7XG9iZXlsaW5lcyAlCisgIFxnZGVmXHBhcnNlYXJnbGluZSMxXl5NeyUKKyAgICBcZW5kZ3JvdXAgJSBFbmQgb2YgdGhlIGdyb3VwIHN0YXJ0ZWQgaW4gXHBhcnNlYXJnLgorICAgIFxhcmdyZW1vdmVjb21tZW50ICMxXGNvbW1lbnRcQXJnVGVybSUKKyAgfSUKK30KKworJSBGaXJzdCByZW1vdmUgYW55IEBjb21tZW50LCB0aGVuIGFueSBAYyBjb21tZW50LgorXGRlZlxhcmdyZW1vdmVjb21tZW50IzFcY29tbWVudCMyXEFyZ1Rlcm17XGFyZ3JlbW92ZWMgIzFcY1xBcmdUZXJtfQorXGRlZlxhcmdyZW1vdmVjIzFcYyMyXEFyZ1Rlcm17XGFyZ2NoZWNrc3BhY2VzIzFcXl5NXEFyZ1Rlcm19CisKKyUgRWFjaCBvY2N1cmVuY2Ugb2YgYFxeXk0nIG9yIGA8c3BhY2U+XF5eTScgaXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgc3BhY2UuCislCislIFxhcmdyZW1vdmVjIG1pZ2h0IGxlYXZlIHVzIHdpdGggdHJhaWxpbmcgc3BhY2UsIGUuZy4sCislICAgIEBlbmQgaXRlbWl6ZSAgQGMgZm9vCislIFRoaXMgc3BhY2UgdG9rZW4gdW5kZXJnb2VzIHRoZSBzYW1lIHByb2NlZHVyZSBhbmQgaXMgZXZlbnR1YWxseSByZW1vdmVkCislIGJ5IFxmaW5pc2hwYXJzZWFyZy4KKyUKK1xkZWZcYXJnY2hlY2tzcGFjZXMjMVxeXk17XGFyZ2NoZWNrc3BhY2VzWCMxXF5eTSBcXl5NfQorXGRlZlxhcmdjaGVja3NwYWNlc1gjMSBcXl5Ne1xhcmdjaGVja3NwYWNlc1kjMVxeXk19CitcZGVmXGFyZ2NoZWNrc3BhY2VzWSMxXF5eTSMyXF5eTSMzXEFyZ1Rlcm17JQorICBcZGVmXHRlbXB7IzN9JQorICBcaWZ4XHRlbXBcZW1wdHkKKyAgICAlIFdlIGNhbm5vdCB1c2UgXG5leHQgaGVyZSwgYXMgaXQgaG9sZHMgdGhlIG1hY3JvIHRvIHJ1bjsKKyAgICAlIHRodXMgd2UgcmV1c2UgXHRlbXAuCisgICAgXGxldFx0ZW1wXGZpbmlzaHBhcnNlYXJnCisgIFxlbHNlCisgICAgXGxldFx0ZW1wXGFyZ2NoZWNrc3BhY2VzCisgIFxmaQorICAlIFB1dCB0aGUgc3BhY2UgdG9rZW4gaW46CisgIFx0ZW1wIzEgIzNcQXJnVGVybQorfQorCislIElmIGEgX2RlbGltaXRlZF8gYXJndW1lbnQgaXMgZW5jbG9zZWQgaW4gYnJhY2VzLCB0aGV5IGdldCBzdHJpcHBlZDsgc28KKyUgdG8gZ2V0IF9leGFjdGx5XyB0aGUgcmVzdCBvZiB0aGUgbGluZSwgd2UgaGFkIHRvIHByZXZlbnQgc3VjaCBzaXR1YXRpb24uCislIFdlIHByZXBlbmRlZCBhbiBcZW1wdHkgdG9rZW4gYXQgdGhlIHZlcnkgYmVnaW5uaW5nIGFuZCB3ZSBleHBhbmQgaXQgbm93LAorJSBqdXN0IGJlZm9yZSBwYXNzaW5nIHRoZSBjb250cm9sIHRvIFxuZXh0LgorJSAoU2ltaWxhcmlseSwgd2UgaGF2ZSB0byB0aGluayBhYm91dCAjMyBvZiBcYXJnY2hlY2tzcGFjZXNZIGFib3ZlOiBpdCBpcworJSBlaXRoZXIgdGhlIG51bGwgc3RyaW5nLCBvciBpdCBlbmRzIHdpdGggXF5eTS0tLXRodXMgdGhlcmUgaXMgbm8gZGFuZ2VyCislIHRoYXQgYSBwYWlyIG9mIGJyYWNlcyB3b3VsZCBiZSBzdHJpcHBlZC4KKyUKKyUgQnV0IGZpcnN0LCB3ZSBoYXZlIHRvIHJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2UgdG9rZW4uCislCitcZGVmXGZpbmlzaHBhcnNlYXJnIzEgXEFyZ1Rlcm17XGV4cGFuZGFmdGVyXG5leHRcZXhwYW5kYWZ0ZXJ7IzF9fQorCislIFxwYXJzZWFyZ2RlZlxmb297Li4ufQorJQlpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8KKyUgXGRlZlxmb297XHBhcnNlYXJnXFhmb299CislIFxkZWZcWGZvbyMxey4uLn0KKyUKKyUgQWN0dWFsbHksIEkgdXNlIFxjc25hbWVcc3RyaW5nXGZvb1xlbmRjc25hbWUsIGllLiBcXGZvbywgYXMgaXQgaXMgbXkKKyUgZmF2b3VyaXRlIFRlWCB0cmljay4gIC0ta2FzYWwsIDE2bm92MDMKKworXGRlZlxwYXJzZWFyZ2RlZiMxeyUKKyAgXGV4cGFuZGFmdGVyIFxkb3BhcnNlYXJnZGVmIFxjc25hbWVcc3RyaW5nIzFcZW5kY3NuYW1lICMxJQorfQorXGRlZlxkb3BhcnNlYXJnZGVmIzEjMnslCisgIFxkZWYjMntccGFyc2VhcmcjMX0lCisgIFxkZWYjMSMjMSUKK30KKworJSBTZXZlcmFsIHV0aWxpdHkgZGVmaW5pdGlvbnMgd2l0aCBhY3RpdmUgc3BhY2U6Cit7CisgIFxvYmV5c3BhY2VzCisgIFxnZGVmXG9iZXllZHNwYWNleyB9CisKKyAgJSBNYWtlIGVhY2ggc3BhY2UgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBwcm9kdWNlIGEgbm9ybWFsIGludGVyd29yZAorICAlIHNwYWNlIGluIHRoZSBvdXRwdXQuICBEb24ndCBhbGxvdyBhIGxpbmUgYnJlYWsgYXQgdGhpcyBzcGFjZSwgYXMgdGhpcworICAlIGlzIHVzZWQgb25seSBpbiBlbnZpcm9ubWVudHMgbGlrZSBAZXhhbXBsZSwgd2hlcmUgZWFjaCBsaW5lIG9mIGlucHV0CisgICUgc2hvdWxkIHByb2R1Y2UgYSBsaW5lIG9mIG91dHB1dCBhbnl3YXkuCisgICUKKyAgXGdkZWZcc2Vwc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XHRpZX0KKworICAlIElmIGFuIGluZGV4IGNvbW1hbmQgaXMgdXNlZCBpbiBhbiBAZXhhbXBsZSBlbnZpcm9ubWVudCwgYW55IHNwYWNlcworICAlIHRoZXJlaW4gc2hvdWxkIGJlY29tZSByZWd1bGFyIHNwYWNlcyBpbiB0aGUgcmF3IGluZGV4IGZpbGUsIG5vdCB0aGUKKyAgJSBleHBhbnNpb24gb2YgXHRpZSAoXGxlYXZldm1vZGUgXHBlbmFsdHkgXEBNIFwgKS4KKyAgXGdkZWZcdW5zZXBzcGFjZXN7XGxldCA9XHNwYWNlfQorfQorCisKK1xkZWZcZmx1c2hjcntcaWZ4XHBhclxsaXNwcGFyIFxkZWZcbmV4dCMjMXt9XGVsc2UgXGxldFxuZXh0PVxyZWxheCBcZmkgXG5leHR9CisKKyUgRGVmaW5lIHRoZSBmcmFtZXdvcmsgZm9yIGVudmlyb25tZW50cyBpbiB0ZXhpbmZvLnRleC4gIEl0J3MgdXNlZCBsaWtlIHRoaXM6CislCislICAgXGVudmRlZlxmb297Li4ufQorJSAgIFxkZWZcRWZvb3suLi59CislCislIEl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIFxlbnZkZWYgdG8gaW5zZXJ0IFxiZWdpbmdyb3VwIGJlZm9yZSB0aGUKKyUgYWN0dWFsIGJvZHk7IEBlbmQgY2xvc2VzIHRoZSBncm91cCBhZnRlciBjYWxsaW5nIFxFZm9vLiAgXGVudmRlZiBhbHNvCislIGRlZmluZXMgXHRoaXNlbnYsIHNvIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGtub3duOyBAZW5kIGNoZWNrcworJSB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCBuYW1lIG1hdGNoZXMuICBUaGUgXGNoZWNrZW52IG1hY3JvIGNhbiBhbHNvIGJlCislIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyB0aGUgb25lIGV4cGVjdGVkLgorJQorJSBOb24tZmFsc2UgY29uZGl0aW9uYWxzIChAaWZ0ZXgsIEBpZnNldCkgZG9uJ3QgZml0IGludG8gdGhpcywgc28gdGhleQorJSBhcmUgbm90IHRyZWF0ZWQgYXMgZW52aXJvbWVudHM7IHRoZXkgZG9uJ3Qgb3BlbiBhIGdyb3VwLiAgKFRoZQorJSBpbXBsZW1lbnRhdGlvbiBvZiBAZW5kIHRha2VzIGNhcmUgbm90IHRvIGNhbGwgXGVuZGdyb3VwIGluIHRoaXMKKyUgc3BlY2lhbCBjYXNlLikKKworCislIEF0IHJ1bnRpbWUsIGVudmlyb25tZW50cyBzdGFydCB3aXRoIHRoaXM6CitcZGVmXHN0YXJ0ZW52aXJvbm1lbnQjMXtcYmVnaW5ncm91cFxkZWZcdGhpc2VudnsjMX19CislIGluaXRpYWxpemUKK1xsZXRcdGhpc2VudlxlbXB0eQorCislIC4uLiBidXQgdGhleSBnZXQgZGVmaW5lZCB2aWEgYGBcZW52ZGVmXGZvb3suLi59Jyc6CitcbG9uZ1xkZWZcZW52ZGVmIzEjMntcZGVmIzF7XHN0YXJ0ZW52aXJvbm1lbnQjMSMyfX0KK1xkZWZcZW52cGFyc2VhcmdkZWYjMSMye1xwYXJzZWFyZ2RlZiMxe1xzdGFydGVudmlyb25tZW50IzEjMn19CisKKyUgQ2hlY2sgd2hldGhlciB3ZSdyZSBpbiB0aGUgcmlnaHQgZW52aXJvbm1lbnQ6CitcZGVmXGNoZWNrZW52IzF7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRoaXNlbnZcdGVtcAorICBcZWxzZQorICAgIFxiYWRlbnZlcnIKKyAgXGZpCit9CisKKyUgRXZpcm9ubWVudCBtaXNtYXRjaCwgIzEgZXhwZWN0ZWQ6CitcZGVmXGJhZGVudmVycnslCisgIFxlcnJoZWxwID0gXEVNc2ltcGxlCisgIFxlcnJtZXNzYWdle1RoaXMgY29tbWFuZCBjYW4gYXBwZWFyIG9ubHkgXGluZW52aXJvbm1lbnRcdGVtcCwKKyAgICBub3QgXGluZW52aXJvbm1lbnRcdGhpc2Vudn0lCit9CitcZGVmXGluZW52aXJvbm1lbnQjMXslCisgIFxpZngjMVxlbXB0eQorICAgIG91dCBvZiBhbnkgZW52aXJvbm1lbnQlCisgIFxlbHNlCisgICAgaW4gZW52aXJvbm1lbnQgXGV4cGFuZGFmdGVyXHN0cmluZyMxJQorICBcZmkKK30KKworJSBAZW5kIGZvbyBleGVjdXRlcyB0aGUgZGVmaW5pdGlvbiBvZiBcRWZvby4KKyUgQnV0IGZpcnN0LCBpdCBleGVjdXRlcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgXGNoZWNrZW52CislCitccGFyc2VhcmdkZWZcZW5keyUKKyAgXGlmIDFcY3NuYW1lIGlzY29uZC4jMVxlbmRjc25hbWUKKyAgXGVsc2UKKyAgICAlIFRoZSBnZW5lcmFsIHdvcmRpbmcgb2YgXGJhZGVudmVyciBtYXkgbm90IGJlIGlkZWFsLCBidXQuLi4gLS1rYXNhbCwgMDZub3YwMworICAgIFxleHBhbmRhZnRlclxjaGVja2Vudlxjc25hbWUjMVxlbmRjc25hbWUKKyAgICBcY3NuYW1lIEUjMVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCit9CisKK1xuZXdoZWxwXEVNc2ltcGxle1ByZXNzIFJFVFVSTiB0byBjb250aW51ZS59CisKKworJSUgU2ltcGxlIHNpbmdsZS1jaGFyYWN0ZXIgQCBjb21tYW5kcworCislIEBAIHByaW50cyBhbiBACislIEtsdWRnZSB0aGlzIHVudGlsIHRoZSBmb250cyBhcmUgcmlnaHQgKGdycikuCitcZGVmXEB7e1x0dFxjaGFyNjR9fQorCislIFRoaXMgaXMgdHVybmVkIG9mZiBiZWNhdXNlIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkCislIGFuZCB5b3UgY2FuIHVzZSBAd3suLi59IGFyb3VuZCBhIHF1b3RlIHRvIHN1cHByZXNzIGxpZ2F0dXJlcy4KKyUlIERlZmluZSBAYCBhbmQgQCcgdG8gYmUgdGhlIHNhbWUgYXMgYCBhbmQgJworJSUgYnV0IHN1cHByZXNzaW5nIGxpZ2F0dXJlcy4KKyVcZGVmXGB7e2B9fQorJVxkZWZcJ3t7J319CisKKyUgVXNlZCB0byBnZW5lcmF0ZSBxdW90ZWQgYnJhY2VzLgorXGRlZlxteWxicmFjZSB7e1x0dFxjaGFyMTIzfX0KK1xkZWZcbXlyYnJhY2Uge3tcdHRcY2hhcjEyNX19CitcbGV0XHs9XG15bGJyYWNlCitcbGV0XH09XG15cmJyYWNlCitcYmVnaW5ncm91cAorICAlIERlZmluaXRpb25zIHRvIHByb2R1Y2UgXHsgYW5kIFx9IGNvbW1hbmRzIGZvciBpbmRpY2VzLAorICAlIGFuZCBAeyBhbmQgQH0gZm9yIHRoZSBhdXgvdG9jIGZpbGVzLgorICBcY2F0Y29kZWBceyA9IFxvdGhlciBcY2F0Y29kZWBcfSA9IFxvdGhlcgorICBcY2F0Y29kZWBcWyA9IDEgXGNhdGNvZGVgXF0gPSAyCisgIFxjYXRjb2RlYFwhID0gMCBcY2F0Y29kZWBcXCA9IFxvdGhlcgorICAhZ2RlZiFsYnJhY2VjbWRbXHtdJQorICAhZ2RlZiFyYnJhY2VjbWRbXH1dJQorICAhZ2RlZiFsYnJhY2VhdGNtZFtAe10lCisgICFnZGVmIXJicmFjZWF0Y21kW0B9XSUKKyFlbmRncm91cAorCislIEBjb21tYXt9IHRvIGF2b2lkICwgcGFyc2luZyBwcm9ibGVtcy4KK1xsZXRcY29tbWEgPSAsCisKKyUgQWNjZW50czogQCwgQGRvdGFjY2VudCBAcmluZ2FjY2VudCBAdWJhcmFjY2VudCBAdWRvdGFjY2VudAorJSBPdGhlcnMgYXJlIGRlZmluZWQgYnkgcGxhaW4gVGVYOiBAYCBAJyBAIiBAXiBAfiBAPSBAdSBAdiBASC4KK1xsZXRcLCA9IFxjCitcbGV0XGRvdGFjY2VudCA9IFwuCitcZGVmXHJpbmdhY2NlbnQjMXt7XGFjY2VudDIzICMxfX0KK1xsZXRcdGllYWNjZW50ID0gXHQKK1xsZXRcdWJhcmFjY2VudCA9IFxiCitcbGV0XHVkb3RhY2NlbnQgPSBcZAorCislIE90aGVyIHNwZWNpYWwgY2hhcmFjdGVyczogQHF1ZXN0aW9uZG93biBAZXhjbGFtZG93biBAb3JkZiBAb3JkbQorJSBQbGFpbiBUZVggZGVmaW5lczogQEFBIEBBRSBATyBAT0UgQEwgKHBsdXMgbG93ZXJjYXNlIHZlcnNpb25zKSBAc3MuCitcZGVmXHF1ZXN0aW9uZG93bns/YH0KK1xkZWZcZXhjbGFtZG93bnshYH0KK1xkZWZcb3JkZntcbGVhdmV2bW9kZVxyYWlzZTFleFxoYm94e1xzZWxlY3Rmb250c1xsbGxzaXplIFx1bmRlcmJhcnthfX19CitcZGVmXG9yZG17XGxlYXZldm1vZGVccmFpc2UxZXhcaGJveHtcc2VsZWN0Zm9udHNcbGxsc2l6ZSBcdW5kZXJiYXJ7b319fQorCislIERvdGxlc3MgaSBhbmQgZG90bGVzcyBqLCB1c2VkIGZvciBhY2NlbnRzLgorXGRlZlxpbWFjcm97aX0KK1xkZWZcam1hY3Jve2p9CitcZGVmXGRvdGxlc3MjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxpbWFjcm8gXHB0ZXhpCisgIFxlbHNlXGlmeFx0ZW1wXGptYWNybyBcagorICBcZWxzZSBcZXJybWVzc2FnZXtAZG90bGVzcyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggaSBvciBqfSUKKyAgXGZpXGZpCit9CisKKyUgVGhlIFxUZVh7fSBsb2dvLCBhcyBpbiBwbGFpbiwgYnV0IHJlc2V0dGluZyB0aGUgc3BhY2luZyBzbyB0aGF0IGEKKyUgcGVyaW9kIGZvbGxvd2luZyBjb3VudHMgYXMgZW5kaW5nIGEgc2VudGVuY2UuICAoSWRlYSBmb3VuZCBpbiBsYXRleC4pCislCitcZWRlZlxUZVh7XFRlWCBcc3BhY2VmYWN0b3I9MTAwMCB9CisKKyUgQExhVGVYe30gbG9nby4gIE5vdCBxdWl0ZSB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBkZWZpbml0aW9uIGluCislIGxhdGV4Lmx0eCwgc2luY2Ugd2UgdXNlIGEgZGlmZmVyZW50IGZvbnQgZm9yIHRoZSByYWlzZWQgQTsgaXQncyBtb3N0CislIGNvbnZlbmllbnQgZm9yIHVzIHRvIHVzZSBhbiBleHBsaWNpdGx5IHNtYWxsZXIgZm9udCwgcmF0aGVyIHRoYW4gdXNpbmcKKyUgdGhlIFxzY3JpcHRzdHlsZSBmb250IChzaW5jZSB3ZSBkb24ndCByZXNldCBcc2NyaXB0c3R5bGUgYW5kCislIFxzY3JpcHRzY3JpcHRzdHlsZSkuCislCitcZGVmXExhVGVYeyUKKyAgTFxrZXJuLS4zNmVtCisgIHtcc2V0Ym94MD1caGJveHtUfSUKKyAgIFx2Ym94IHRvIFxodDB7XGhib3h7XHNlbGVjdGZvbnRzXGxsbHNpemUgQX1cdnNzfX0lCisgIFxrZXJuLS4xNWVtCisgIFxUZVgKK30KKworJSBCZSBzdXJlIHdlJ3JlIGluIGhvcml6b250YWwgbW9kZSB3aGVuIGRvaW5nIGEgdGllLCBzaW5jZSB3ZSBtYWtlIHNwYWNlCislIGVxdWl2YWxlbnQgdG8gdGhpcyBpbiBAZXhhbXBsZS1saWtlIGVudmlyb25tZW50cy4gT3RoZXJ3aXNlLCBhIHNwYWNlCislIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIHdpbGwgc3RhcnQgd2l0aCBccGVuYWx0eSAtLSBhbmQKKyUgc2luY2UgXHBlbmFsdHkgaXMgdmFsaWQgaW4gdmVydGljYWwgbW9kZSwgd2UnZCBlbmQgdXAgcHV0dGluZyB0aGUKKyUgcGVuYWx0eSBvbiB0aGUgdmVydGljYWwgbGlzdCBpbnN0ZWFkIG9mIGluIHRoZSBuZXcgcGFyYWdyYXBoLgore1xjYXRjb2RlYEAgPSAxMQorICUgQXZvaWQgdXNpbmcgXEBNIGRpcmVjdGx5LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHRyb3VibGUKKyAlIGlmIHRoZSBkZWZpbml0aW9uIGlzIHdyaXR0ZW4gaW50byBhbiBpbmRleCBmaWxlLgorIFxnbG9iYWxcbGV0XHRpZXBlbmFsdHkgPSBcQE0KKyBcZ2RlZlx0aWV7XGxlYXZldm1vZGVccGVuYWx0eVx0aWVwZW5hbHR5XCB9Cit9CisKKyUgQDogZm9yY2VzIG5vcm1hbCBzaXplIHdoaXRlc3BhY2UgZm9sbG93aW5nLgorXGRlZlw6e1xzcGFjZWZhY3Rvcj0xMDAwIH0KKworJSBAKiBmb3JjZXMgYSBsaW5lIGJyZWFrLgorXGRlZlwqe1xoZmlsXGJyZWFrXGhib3h7fVxpZ25vcmVzcGFjZXN9CisKKyUgQC8gYWxsb3dzIGEgbGluZSBicmVhay4KK1xsZXRcLz1cYWxsb3dicmVhaworCislIEAuIGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBwZXJpb2QuCitcZGVmXC57LlxzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yXHNwYWNlfQorCislIEAhIGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBiYW5nLgorXGRlZlwheyFcc3BhY2VmYWN0b3I9XGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvclxzcGFjZX0KKworJSBAPyBpcyBhbiBlbmQtb2Ytc2VudGVuY2UgcXVlcnkuCitcZGVmXD97P1xzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yXHNwYWNlfQorCislIEBmcmVuY2hzcGFjaW5nIG9ufG9mZiAgc2F5cyB3aGV0aGVyIHRvIHB1dCBleHRyYSBzcGFjZSBhZnRlciBwdW5jdHVhdGlvbi4KKyUgCitcZGVmXG9ud29yZHtvbn0KK1xkZWZcb2Zmd29yZHtvZmZ9CislCitccGFyc2VhcmdkZWZcZnJlbmNoc3BhY2luZ3slCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxvbndvcmQgXHBsYWluZnJlbmNoc3BhY2luZworICBcZWxzZVxpZnhcdGVtcFxvZmZ3b3JkIFxwbGFpbm5vbmZyZW5jaHNwYWNpbmcKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGZyZW5jaHNwYWNpbmcgb3B0aW9uIGBcdGVtcCcsIG11c3QgYmUgb24vb2ZmfSUKKyAgXGZpXGZpCit9CisKKyUgQHcgcHJldmVudHMgYSB3b3JkIGJyZWFrLiAgV2l0aG91dCB0aGUgXGxlYXZldm1vZGUsIEB3IGF0IHRoZQorJSBiZWdpbm5pbmcgb2YgYSBwYXJhZ3JhcGgsIHdoZW4gVGVYIGlzIHN0aWxsIGluIHZlcnRpY2FsIG1vZGUsIHdvdWxkCislIHByb2R1Y2UgYSB3aG9sZSBsaW5lIG9mIG91dHB1dCBpbnN0ZWFkIG9mIHN0YXJ0aW5nIHRoZSBwYXJhZ3JhcGguCitcZGVmXHcjMXtcbGVhdmV2bW9kZVxoYm94eyMxfX0KKworJSBAZ3JvdXAgLi4uIEBlbmQgZ3JvdXAgZm9yY2VzIC4uLiB0byBiZSBhbGwgb24gb25lIHBhZ2UsIGJ5IGVuY2xvc2luZworJSBpdCBpbiBhIFRlWCB2Ym94LiAgV2UgdXNlIFx2dG9wIGluc3RlYWQgb2YgXHZib3ggdG8gY29uc3RydWN0IHRoZSBib3gKKyUgdG8ga2VlcCBpdHMgaGVpZ2h0IHRoYXQgb2YgYSBub3JtYWwgbGluZS4gIEFjY29yZGluZyB0byB0aGUgcnVsZXMgZm9yCislIFx0b3Bza2lwIChwLjExNCBvZiB0aGUgVGVYYm9vayksIHRoZSBnbHVlIGluc2VydGVkIGlzCislIG1heCAoXHRvcHNraXAgLSBcaHQgKGZpcnN0IGl0ZW0pLCAwKS4gIElmIHRoYXQgaGVpZ2h0IGlzIGxhcmdlLAorJSB0aGVyZWZvcmUsIG5vIGdsdWUgaXMgaW5zZXJ0ZWQsIGFuZCB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgaGVhZGxpbmUgYW5kCislIHRoZSB0ZXh0IGlzIHNtYWxsLCB3aGljaCBsb29rcyBiYWQuCislCislIEFub3RoZXIgY29tcGxpY2F0aW9uIGlzIHRoYXQgdGhlIGdyb3VwIG1pZ2h0IGJlIHZlcnkgbGFyZ2UuICBUaGlzIGNhbgorJSBjYXVzZSB0aGUgZ2x1ZSBvbiB0aGUgcHJldmlvdXMgcGFnZSB0byBiZSB1bmR1bHkgc3RyZXRjaGVkLCBiZWNhdXNlIGl0CislIGRvZXMgbm90IGhhdmUgbXVjaCBtYXRlcmlhbC4gIEluIHRoaXMgY2FzZSwgaXQncyBiZXR0ZXIgdG8gYWRkIGFuCislIGV4cGxpY2l0IFx2ZmlsbCBzbyB0aGF0IHRoZSBleHRyYSBzcGFjZSBpcyBhdCB0aGUgYm90dG9tLiAgVGhlCislIHRocmVzaG9sZCBmb3IgZG9pbmcgdGhpcyBpcyBpZiB0aGUgZ3JvdXAgaXMgbW9yZSB0aGFuIFx2ZmlsbGxpbWl0CislIHBlcmNlbnQgb2YgYSBwYWdlIChcdmZpbGxsaW1pdCBjYW4gYmUgY2hhbmdlZCBpbnNpZGUgb2YgQHRleCkuCislCitcbmV3Ym94XGdyb3VwYm94CitcZGVmXHZmaWxsbGltaXR7MC43fQorJQorXGVudmRlZlxncm91cHslCisgIFxpZm51bVxjYXRjb2RlYFxeXk09XGFjdGl2ZSBcZWxzZQorICAgIFxlcnJoZWxwID0gXGdyb3VwaW52YWxpZGhlbHAKKyAgICBcZXJybWVzc2FnZXtAZ3JvdXAgaW52YWxpZCBpbiBjb250ZXh0IHdoZXJlIGZpbGxpbmcgaXMgZW5hYmxlZH0lCisgIFxmaQorICBcc3RhcnRzYXZpbmdpbnNlcnRzCisgICUKKyAgXHNldGJveFxncm91cGJveCA9IFx2dG9wXGJncm91cAorICAgICUgRG8gQGNvbW1lbnQgc2luY2Ugd2UgYXJlIGNhbGxlZCBpbnNpZGUgYW4gZW52aXJvbm1lbnQgc3VjaCBhcworICAgICUgQGV4YW1wbGUsIHdoZXJlIGVhY2ggZW5kLW9mLWxpbmUgaW4gdGhlIGlucHV0IGNhdXNlcyBhbgorICAgICUgZW5kLW9mLWxpbmUgaW4gdGhlIG91dHB1dC4gIFdlIGRvbid0IHdhbnQgdGhlIGVuZC1vZi1saW5lIGFmdGVyCisgICAgJSB0aGUgYEBncm91cCcgdG8gcHV0IGV4dHJhIHNwYWNlIGluIHRoZSBvdXRwdXQuICBTaW5jZSBAZ3JvdXAKKyAgICAlIHNob3VsZCBhcHBlYXIgb24gYSBsaW5lIGJ5IGl0c2VsZiAoYWNjb3JkaW5nIHRvIHRoZSBUZXhpbmZvCisgICAgJSBtYW51YWwpLCB3ZSBkb24ndCB3b3JyeSBhYm91dCBlYXRpbmcgYW55IHVzZXIgdGV4dC4KKyAgICBcY29tbWVudAorfQorJQorJSBUaGUgXHZ0b3AgcHJvZHVjZXMgYSBib3ggd2l0aCBub3JtYWwgaGVpZ2h0IGFuZCBsYXJnZSBkZXB0aDsgdGh1cywgVGVYIHB1dHMKKyUgXGJhc2VsaW5lc2tpcCBnbHVlIGJlZm9yZSBpdCwgYW5kICh3aGVuIHRoZSBuZXh0IGxpbmUgb2YgdGV4dCBpcyBkb25lKQorJSBcbGluZXNraXAgZ2x1ZSBhZnRlciBpdC4gIFRodXMsIHNwYWNlIGJlbG93IGlzIG5vdCBxdWl0ZSBlcXVhbCB0byBzcGFjZQorJSBhYm92ZS4gIEJ1dCBpdCdzIHByZXR0eSBjbG9zZS4KK1xkZWZcRWdyb3VweyUKKyAgICAlIFRvIGdldCBjb3JyZWN0IGludGVybGluZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGdyb3VwCisgICAgJSBhbmQgdGhlIGZpcnN0IGxpbmUgYWZ0ZXJ3YXJkcywgd2UgaGF2ZSB0byBwcm9wYWdhdGUgXHByZXZkZXB0aC4KKyAgICBcZW5kZ3JhZiAlIE5vdCBccGFyLCBhcyBpdCBtYXkgaGF2ZSBiZWVuIHNldCB0byBcbGlzcHBhci4KKyAgICBcZ2xvYmFsXGRpbWVuMSA9IFxwcmV2ZGVwdGgKKyAgXGVncm91cCAgICAgICAgICAgJSBFbmQgdGhlIFx2dG9wLgorICAlIFxkaW1lbjAgaXMgdGhlIHZlcnRpY2FsIHNpemUgb2YgdGhlIGdyb3VwJ3MgYm94LgorICBcZGltZW4wID0gXGh0XGdyb3VwYm94ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGRwXGdyb3VwYm94CisgICUgXGRpbWVuMiBpcyBob3cgbXVjaCBzcGFjZSBpcyBsZWZ0IG9uIHRoZSBwYWdlIChtb3JlIG9yIGxlc3MpLgorICBcZGltZW4yID0gXHBhZ2VoZWlnaHQgICBcYWR2YW5jZVxkaW1lbjIgYnkgLVxwYWdldG90YWwKKyAgJSBpZiB0aGUgZ3JvdXAgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZSwgYW5kIGl0J3MgYSBiaWcgYmlnCisgICUgZ3JvdXAsIGZvcmNlIGEgcGFnZSBicmVhay4KKyAgXGlmZGltIFxkaW1lbjAgPiBcZGltZW4yCisgICAgXGlmZGltIFxwYWdldG90YWwgPCBcdmZpbGxsaW1pdFxwYWdlaGVpZ2h0CisgICAgICBccGFnZQorICAgIFxmaQorICBcZmkKKyAgXGJveFxncm91cGJveAorICBccHJldmRlcHRoID0gXGRpbWVuMQorICBcY2hlY2tpbnNlcnRzCit9CislCislIFRlWCBwdXRzIGluIGFuIFxlc2NhcGVjaGFyIChpLmUuLCBgQCcpIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlbHAKKyUgbWVzc2FnZSwgc28gdGhpcyBlbmRzIHVwIHByaW50aW5nIGBAZ3JvdXAgY2FuIG9ubHkgLi4uJy4KKyUKK1xuZXdoZWxwXGdyb3VwaW52YWxpZGhlbHB7JQorZ3JvdXAgY2FuIG9ubHkgYmUgdXNlZCBpbiBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZXhhbXBsZSxeXkolCit3aGVyZSBlYWNoIGxpbmUgb2YgaW5wdXQgcHJvZHVjZXMgYSBsaW5lIG9mIG91dHB1dC59CisKKyUgQG5lZWQgc3BhY2UtaW4tbWlscworJSBmb3JjZXMgYSBwYWdlIGJyZWFrIGlmIHRoZXJlIGlzIG5vdCBzcGFjZS1pbi1taWxzIHJlbWFpbmluZy4KKworXG5ld2RpbWVuXG1pbCAgXG1pbD0wLjAwMWluCisKKyUgT2xkIGRlZmluaXRpb24tLWRpZG4ndCB3b3JrLgorJVxwYXJzZWFyZ2RlZlxuZWVke1xwYXIgJQorJSUgVGhpcyBtZXRob2QgdHJpZXMgdG8gbWFrZSBUZVggYnJlYWsgdGhlIHBhZ2UgbmF0dXJhbGx5CislJSBpZiB0aGUgZGVwdGggb2YgdGhlIGJveCBkb2VzIG5vdCBmaXQuCisle1xiYXNlbGluZXNraXA9MHB0JQorJVx2dG9wIHRvICMxXG1pbHtcdmZpbH1ca2VybiAtIzFcbWlsXG5vYnJlYWsKKyVccHJldmRlcHRoPS0xMDAwcHQKKyV9fQorCitccGFyc2VhcmdkZWZcbmVlZHslCisgICUgRW5zdXJlIHZlcnRpY2FsIG1vZGUsIHNvIHdlIGRvbid0IG1ha2UgYSBiaWcgYm94IGluIHRoZSBtaWRkbGUgb2YgYQorICAlIHBhcmFncmFwaC4KKyAgXHBhcgorICAlCisgICUgSWYgdGhlIEBuZWVkIHZhbHVlIGlzIGxlc3MgdGhhbiBvbmUgbGluZSBzcGFjZSwgaXQncyB1c2VsZXNzLgorICBcZGltZW4wID0gIzFcbWlsCisgIFxkaW1lbjIgPSBcaHRcc3RydXRib3gKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IFxkcFxzdHJ1dGJveAorICBcaWZkaW1cZGltZW4wID4gXGRpbWVuMgorICAgICUKKyAgICAlIERvIGEgXHN0cnV0IGp1c3QgdG8gbWFrZSB0aGUgaGVpZ2h0IG9mIHRoaXMgYm94IGJlIG5vcm1hbCwgc28gdGhlCisgICAgJSBub3JtYWwgbGVhZGluZyBpcyBpbnNlcnRlZCByZWxhdGl2ZSB0byB0aGUgcHJlY2VkaW5nIGxpbmUuCisgICAgJSBBbmQgYSBwYWdlIGJyZWFrIGhlcmUgaXMgZmluZS4KKyAgICBcdnRvcCB0byAjMVxtaWx7XHN0cnV0XHZmaWx9JQorICAgICUKKyAgICAlIFRlWCBkb2VzIG5vdCBldmVuIGNvbnNpZGVyIHBhZ2UgYnJlYWtzIGlmIGEgcGVuYWx0eSBhZGRlZCB0byB0aGUKKyAgICAlIG1haW4gdmVydGljYWwgbGlzdCBpcyAxMDAwMCBvciBtb3JlLiAgQnV0IGluIG9yZGVyIHRvIHNlZSBpZiB0aGUKKyAgICAlIGVtcHR5IGJveCB3ZSBqdXN0IGFkZGVkIGZpdHMgb24gdGhlIHBhZ2UsIHdlIG11c3QgbWFrZSBpdCBjb25zaWRlcgorICAgICUgcGFnZSBicmVha3MuICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgZG9uJ3Qgd2FudCB0byBhY3R1YWxseSBicmVhayB0aGUKKyAgICAlIHBhZ2UgYWZ0ZXIgdGhlIGVtcHR5IGJveC4gIFNvIHdlIHVzZSBhIHBlbmFsdHkgb2YgOTk5OS4KKyAgICAlCisgICAgJSBUaGVyZSBpcyBhbiBleHRyZW1lbHkgc21hbGwgY2hhbmNlIHRoYXQgVGVYIHdpbGwgYWN0dWFsbHkgYnJlYWsgdGhlCisgICAgJSBwYWdlIGF0IHRoaXMgXHBlbmFsdHksIGlmIHRoZXJlIGFyZSBubyBvdGhlciBmZWFzaWJsZSBicmVha3BvaW50cyBpbgorICAgICUgc2lnaHQuICAoSWYgdGhlIHVzZXIgaXMgdXNpbmcgbG90cyBvZiBiaWcgQGdyb3VwIGNvbW1hbmRzLCB3aGljaAorICAgICUgYWxtb3N0LWJ1dC1ub3QtcXVpdGUgZmlsbCB1cCBhIHBhZ2UsIFRlWCB3aWxsIGhhdmUgYSBoYXJkIHRpbWUgZG9pbmcKKyAgICAlIGdvb2QgcGFnZSBicmVha2luZywgZm9yIGV4YW1wbGUuKSAgSG93ZXZlciwgSSBjb3VsZCBub3QgY29uc3RydWN0IGFuCisgICAgJSBleGFtcGxlIHdoZXJlIGEgcGFnZSBicm9rZSBhdCB0aGlzIFxwZW5hbHR5OyBpZiBpdCBoYXBwZW5zIGluIGEgcmVhbAorICAgICUgZG9jdW1lbnQsIHRoZW4gd2UgY2FuIHJlY29uc2lkZXIgb3VyIHN0cmF0ZWd5LgorICAgIFxwZW5hbHR5OTk5OQorICAgICUKKyAgICAlIEJhY2sgdXAgYnkgdGhlIHNpemUgb2YgdGhlIGJveCwgd2hldGhlciB3ZSBkaWQgYSBwYWdlIGJyZWFrIG9yIG5vdC4KKyAgICBca2VybiAtIzFcbWlsCisgICAgJQorICAgICUgRG8gbm90IGFsbG93IGEgcGFnZSBicmVhayByaWdodCBhZnRlciB0aGlzIGtlcm4uCisgICAgXG5vYnJlYWsKKyAgXGZpCit9CisKKyUgQGJyICAgZm9yY2VzIHBhcmFncmFwaCBicmVhayAoYW5kIGlzIHVuZG9jdW1lbnRlZCkuCisKK1xsZXRcYnIgPSBccGFyCisKKyUgQHBhZ2UgZm9yY2VzIHRoZSBzdGFydCBvZiBhIG5ldyBwYWdlLgorJQorXGRlZlxwYWdle1xwYXJcdmZpbGxcc3VwZXJlamVjdH0KKworJSBAZXhkZW50IHRleHQuLi4uCislIG91dHB1dHMgdGV4dCBvbiBzZXBhcmF0ZSBsaW5lIGluIHJvbWFuIGZvbnQsIHN0YXJ0aW5nIGF0IHN0YW5kYXJkIHBhZ2UgbWFyZ2luCisKKyUgVGhpcyByZWNvcmRzIHRoZSBhbW91bnQgb2YgaW5kZW50IGluIHRoZSBpbm5lcm1vc3QgZW52aXJvbm1lbnQuCislIFRoYXQncyBob3cgbXVjaCBcZXhkZW50IHNob3VsZCB0YWtlIG91dC4KK1xuZXdza2lwXGV4ZGVudGFtb3VudAorCislIFRoaXMgZGVmbiBpcyB1c2VkIGluc2lkZSBmaWxsIGVudmlyb25tZW50cyBzdWNoIGFzIEBkZWZ1bi4KK1xwYXJzZWFyZ2RlZlxleGRlbnR7XGhmaWxcYnJlYWtcaGJveHtca2VybiAtXGV4ZGVudGFtb3VudHtccm0jMX19XGhmaWxcYnJlYWt9CisKKyUgVGhpcyBkZWZuIGlzIHVzZWQgaW5zaWRlIG5vZmlsbCBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZXhhbXBsZS4KK1xwYXJzZWFyZ2RlZlxub2ZpbGxleGRlbnR7e1xhZHZhbmNlIFxsZWZ0c2tpcCBieSAtXGV4ZGVudGFtb3VudAorICBcbGVmdGxpbmV7XGhza2lwXGxlZnRza2lwe1xybSMxfX19fQorCislIEBpbm1hcmdpbntXSElDSH17VEVYVH0gcHV0cyBURVhUIGluIHRoZSBXSElDSCBtYXJnaW4gbmV4dCB0byB0aGUgY3VycmVudAorJSBwYXJhZ3JhcGguICBGb3IgbW9yZSBnZW5lcmFsIHB1cnBvc2VzLCB1c2UgdGhlIFxtYXJnaW4gaW5zZXJ0aW9uCislIGNsYXNzLiAgV0hJQ0ggaXMgYGwnIG9yIGByJy4KKyUKK1xuZXdza2lwXGlubWFyZ2luc3BhY2luZyBcaW5tYXJnaW5zcGFjaW5nPTFjbQorXGRlZlxzdHJ1dGRlcHRoe1xkcFxzdHJ1dGJveH0KKyUKK1xkZWZcZG9pbm1hcmdpbiMxIzJ7XHN0cnV0XHZhZGp1c3R7JQorICBcbm9icmVhaworICBca2Vybi1cc3RydXRkZXB0aAorICBcdnRvcCB0byBcc3RydXRkZXB0aHslCisgICAgXGJhc2VsaW5lc2tpcD1cc3RydXRkZXB0aAorICAgIFx2c3MKKyAgICAlIGlmIHlvdSBoYXZlIG11bHRpcGxlIGxpbmVzIG9mIHN0dWZmIHRvIHB1dCBoZXJlLCB5b3UnbGwgbmVlZCB0bworICAgICUgbWFrZSB0aGUgdmJveCB5b3Vyc2VsZiBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZS4KKyAgICBcaWZ4IzFsJQorICAgICAgXGxsYXB7XGlnbm9yZXNwYWNlcyAjMlxoc2tpcFxpbm1hcmdpbnNwYWNpbmd9JQorICAgIFxlbHNlCisgICAgICBccmxhcHtcaHNraXBcaHNpemUgXGhza2lwXGlubWFyZ2luc3BhY2luZyBcaWdub3Jlc3BhY2VzICMyfSUKKyAgICBcZmkKKyAgICBcbnVsbAorICB9JQorfX0KK1xkZWZcaW5sZWZ0bWFyZ2lue1xkb2lubWFyZ2luIGx9CitcZGVmXGlucmlnaHRtYXJnaW57XGRvaW5tYXJnaW4gcn0KKyUKKyUgQGlubWFyZ2lue1RFWFQgWywgUklHSFQtVEVYVF19CislIChpZiBSSUdIVC1URVhUIGlzIGdpdmVuLCB1c2UgVEVYVCBmb3IgbGVmdCBwYWdlLCBSSUdIVC1URVhUIGZvciByaWdodDsKKyUgZWxzZSB1c2UgVEVYVCBmb3IgYm90aCkuCislCitcZGVmXGlubWFyZ2luIzF7XHBhcnNlaW5tYXJnaW4gIzEsLFxmaW5pc2h9CitcZGVmXHBhcnNlaW5tYXJnaW4jMSwjMiwjM1xmaW5pc2h7JSBub3QgcGVyZmVjdCwgYnV0IGJldHRlciB0aGFuIG5vdGhpbmcuCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCisgIFxpZmRpbVx3ZDAgPiAwcHQKKyAgICBcZGVmXGxlZnR0ZXh0eyMxfSUgIGhhdmUgYm90aCB0ZXh0cworICAgIFxkZWZccmlnaHR0ZXh0eyMyfSUKKyAgXGVsc2UKKyAgICBcZGVmXGxlZnR0ZXh0eyMxfSUgIGhhdmUgb25seSBvbmUgdGV4dAorICAgIFxkZWZccmlnaHR0ZXh0eyMxfSUKKyAgXGZpCisgICUKKyAgXGlmb2RkXHBhZ2VubworICAgIFxkZWZcdGVtcHtcaW5yaWdodG1hcmdpblxyaWdodHRleHR9JSBvZGQgcGFnZSAtPiBvdXRzaWRlIGlzIHJpZ2h0IG1hcmdpbgorICBcZWxzZQorICAgIFxkZWZcdGVtcHtcaW5sZWZ0bWFyZ2luXGxlZnR0ZXh0fSUKKyAgXGZpCisgIFx0ZW1wCit9CisKKyUgQGluY2x1ZGUgZmlsZSAgICBpbnNlcnQgdGV4dCBvZiB0aGF0IGZpbGUgYXMgaW5wdXQuCislCitcZGVmXGluY2x1ZGV7XHBhcnNlYXJndXNpbmdcZmlsZW5hbWVjYXRjb2Rlc1xpbmNsdWRlenp6fQorXGRlZlxpbmNsdWRlenp6IzF7JQorICBccHVzaHRoaXNmaWxlc3RhY2sKKyAgXGRlZlx0aGlzZmlsZXsjMX0lCisgIHslCisgICAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKKyAgICBcZGVmXHRlbXB7XGlucHV0ICMxIH0lCisgICAgXGV4cGFuZGFmdGVyCisgIH1cdGVtcAorICBccG9wdGhpc2ZpbGVzdGFjaworfQorXGRlZlxmaWxlbmFtZWNhdGNvZGVzeyUKKyAgXGNhdGNvZGVgXFw9XG90aGVyCisgIFxjYXRjb2RlYH49XG90aGVyCisgIFxjYXRjb2RlYF49XG90aGVyCisgIFxjYXRjb2RlYF89XG90aGVyCisgIFxjYXRjb2RlYHw9XG90aGVyCisgIFxjYXRjb2RlYDw9XG90aGVyCisgIFxjYXRjb2RlYD49XG90aGVyCisgIFxjYXRjb2RlYCs9XG90aGVyCisgIFxjYXRjb2RlYC09XG90aGVyCit9CisKK1xkZWZccHVzaHRoaXNmaWxlc3RhY2t7JQorICBcZXhwYW5kYWZ0ZXJccHVzaHRoaXNmaWxlc3RhY2tYXHBvcHRoaXNmaWxlc3RhY2tcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWHslCisgIFxleHBhbmRhZnRlclxwdXNodGhpc2ZpbGVzdGFja1lcdGhpc2ZpbGVcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWSAjMVxTdGFja1Rlcm0gIzJcU3RhY2tUZXJtIHslCisgIFxnZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGdkZWZcdGhpc2ZpbGV7IzF9XGdkZWZccG9wdGhpc2ZpbGVzdGFja3sjMn19JQorfQorCitcZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGVycnRoaXNmaWxlc3RhY2tlbXB0eX0KK1xkZWZcZXJydGhpc2ZpbGVzdGFja2VtcHR5e1xlcnJtZXNzYWdle0ludGVybmFsIGVycm9yOgorICB0aGUgc3RhY2sgb2YgZmlsZW5hbWVzIGlzIGVtcHR5Ln19CisKK1xkZWZcdGhpc2ZpbGV7fQorCislIEBjZW50ZXIgbGluZQorJSBvdXRwdXRzIHRoYXQgbGluZSwgY2VudGVyZWQuCislCitccGFyc2VhcmdkZWZcY2VudGVyeyUKKyAgXGlmaG1vZGUKKyAgICBcbGV0XG5leHRcY2VudGVySAorICBcZWxzZQorICAgIFxsZXRcbmV4dFxjZW50ZXJWCisgIFxmaQorICBcbmV4dHtcaGZpbCBcaWdub3Jlc3BhY2VzIzFcdW5za2lwIFxoZmlsfSUKK30KK1xkZWZcY2VudGVySCMxeyUKKyAgeyUKKyAgICBcaGZpbFxicmVhaworICAgIFxhZHZhbmNlXGhzaXplIGJ5IC1cbGVmdHNraXAKKyAgICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAorICAgIFxsaW5leyMxfSUKKyAgICBcYnJlYWsKKyAgfSUKK30KK1xkZWZcY2VudGVyViMxe1xsaW5le1xrZXJuXGxlZnRza2lwICMxXGtlcm5ccmlnaHRza2lwfX0KKworJSBAc3AgbiAgIG91dHB1dHMgbiBsaW5lcyBvZiB2ZXJ0aWNhbCBzcGFjZQorCitccGFyc2VhcmdkZWZcc3B7XHZza2lwICMxXGJhc2VsaW5lc2tpcH0KKworJSBAY29tbWVudCAuLi5saW5lIHdoaWNoIGlzIGlnbm9yZWQuLi4KKyUgQGMgaXMgdGhlIHNhbWUgYXMgQGNvbW1lbnQKKyUgQGlnbm9yZSAuLi4gQGVuZCBpZ25vcmUgIGlzIGFub3RoZXIgd2F5IHRvIHdyaXRlIGEgY29tbWVudAorCitcZGVmXGNvbW1lbnR7XGJlZ2luZ3JvdXAgXGNhdGNvZGVgXF5eTT1cb3RoZXIlCitcY2F0Y29kZWBcQD1cb3RoZXIgXGNhdGNvZGVgXHs9XG90aGVyIFxjYXRjb2RlYFx9PVxvdGhlciUKK1xjb21tZW50eHh4fQore1xjYXRjb2RlYFxeXk09XG90aGVyIFxnZGVmXGNvbW1lbnR4eHgjMV5eTXtcZW5kZ3JvdXB9fQorCitcbGV0XGM9XGNvbW1lbnQKKworJSBAcGFyYWdyYXBoaW5kZW50IE5DSEFSUworJSBXZSdsbCB1c2UgZW1zIGZvciBOQ0hBUlMsIGNsb3NlIGVub3VnaC4KKyUgTkNIQVJTIGNhbiBhbHNvIGJlIHRoZSB3b3JkIGBhc2lzJyBvciBgbm9uZScuCislIFdlIGNhbm5vdCBmZWFzaWJseSBpbXBsZW1lbnQgQHBhcmFncmFwaGluZGVudCBhc2lzLCB0aG91Z2guCislCitcZGVmXGFzaXN3b3Jke2FzaXN9ICUgbm8gdHJhbnNsYXRpb24sIHRoZXNlIGFyZSBrZXl3b3JkcworXGRlZlxub25ld29yZHtub25lfQorJQorXHBhcnNlYXJnZGVmXHBhcmFncmFwaGluZGVudHslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxhc2lzd29yZAorICBcZWxzZQorICAgIFxpZnhcdGVtcFxub25ld29yZAorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAwcHQKKyAgICBcZWxzZQorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAjMWVtCisgICAgXGZpCisgIFxmaQorICBccGFyaW5kZW50ID0gXGRlZmF1bHRwYXJpbmRlbnQKK30KKworJSBAZXhhbXBsZWluZGVudCBOQ0hBUlMKKyUgV2UnbGwgdXNlIGVtcyBmb3IgTkNIQVJTIGxpa2UgQHBhcmFncmFwaGluZGVudC4KKyUgSXQgc2VlbXMgQGV4YW1wbGVpbmRlbnQgYXNpcyBpc24ndCBuZWNlc3NhcnksIGJ1dAorJSBJIHByZXNlcnZlIGl0IHRvIG1ha2UgaXQgc2ltaWxhciB0byBAcGFyYWdyYXBoaW5kZW50LgorXHBhcnNlYXJnZGVmXGV4YW1wbGVpbmRlbnR7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcYXNpc3dvcmQKKyAgXGVsc2UKKyAgICBcaWZ4XHRlbXBcbm9uZXdvcmQKKyAgICAgIFxsaXNwbmFycm93aW5nID0gMHB0CisgICAgXGVsc2UKKyAgICAgIFxsaXNwbmFycm93aW5nID0gIzFlbQorICAgIFxmaQorICBcZmkKK30KKworJSBAZmlyc3RwYXJhZ3JhcGhpbmRlbnQgV09SRAorJSBJZiBXT1JEIGlzIGBub25lJywgdGhlbiBzdXBwcmVzcyBpbmRlbnRhdGlvbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoCislIGFmdGVyIGEgc2VjdGlvbiBoZWFkaW5nLiAgSWYgV09SRCBpcyBgaW5zZXJ0JywgdGhlbiBkbyBpbmRlbnQgYXQgc3VjaAorJSBwYXJhZ3JhcGhzLgorJQorJSBUaGUgcGFyYWdyYXBoIGluZGVudGF0aW9uIGlzIHN1cHByZXNzZWQgb3Igbm90IGJ5IGNhbGxpbmcKKyUgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQsIHdoaWNoIHRoZSBzZWN0aW9uaW5nIGNvbW1hbmRzIGRvLgorJSBXZSBzd2l0Y2ggdGhlIGRlZmluaXRpb24gb2YgdGhpcyBiYWNrIGFuZCBmb3J0aCBhY2NvcmRpbmcgdG8gV09SRC4KKyUgQnkgZGVmYXVsdCwgd2Ugc3VwcHJlc3MgaW5kZW50YXRpb24uCislCitcZGVmXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7XGRvc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xkZWZcaW5zZXJ0d29yZHtpbnNlcnR9CislCitccGFyc2VhcmdkZWZcZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcbm9uZXdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBcZG9zdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50CisgIFxlbHNlXGlmeFx0ZW1wXGluc2VydHdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGZpcnN0cGFyYWdyYXBoaW5kZW50IG9wdGlvbiBgXHRlbXAnfSUKKyAgXGZpXGZpCit9CisKKyUgSGVyZSBpcyBob3cgd2UgYWN0dWFsbHkgc3VwcHJlc3MgaW5kZW50YXRpb24uICBSZWRlZmluZSBcZXZlcnlwYXIgdG8KKyUgXGtlcm4gYmFja3dhcmRzIGJ5IFxwYXJpbmRlbnQsIGFuZCB0aGVuIHJlc2V0IGl0c2VsZiB0byBlbXB0eS4KKyUKKyUgV2UgYWxzbyBtYWtlIFxpbmRlbnQgaXRzZWxmIG5vdCBhY3R1YWxseSBkbyBhbnl0aGluZyB1bnRpbCB0aGUgbmV4dAorJSBwYXJhZ3JhcGguCislCitcZ2RlZlxkb3N1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2RlZlxpbmRlbnR7JQorICAgIFxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnQKKyAgICBcaW5kZW50CisgIH0lCisgIFxnZGVmXG5vaW5kZW50eyUKKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50CisgICAgXG5vaW5kZW50CisgIH0lCisgIFxnbG9iYWxcZXZlcnlwYXIgPSB7JQorICAgIFxrZXJuIC1ccGFyaW5kZW50CisgICAgXHJlc3RvcmVmaXJzdHBhcmFncmFwaGluZGVudAorICB9JQorfQorCitcZ2RlZlxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2xvYmFsIFxsZXQgXGluZGVudCA9IFxwdGV4aW5kZW50CisgIFxnbG9iYWwgXGxldCBcbm9pbmRlbnQgPSBccHRleG5vaW5kZW50CisgIFxnbG9iYWwgXGV2ZXJ5cGFyID0ge30lCit9CisKKworJSBAYXNpcyBqdXN0IHlpZWxkcyBpdHMgYXJndW1lbnQuICBVc2VkIHdpdGggQHRhYmxlLCBmb3IgZXhhbXBsZS4KKyUKK1xkZWZcYXNpcyMxeyMxfQorCislIEBtYXRoIG91dHB1dHMgaXRzIGFyZ3VtZW50IGluIG1hdGggbW9kZS4KKyUKKyUgT25lIGNvbXBsaWNhdGlvbjogXyB1c3VhbGx5IG1lYW5zIHN1YnNjcmlwdHMsIGJ1dCBpdCBjb3VsZCBhbHNvIG1lYW4KKyUgYW4gYWN0dWFsIF8gY2hhcmFjdGVyLCBhcyBpbiBAbWF0aHtAdmFye3NvbWVfdmFyaWFibGV9ICsgMX0uICBTbyBtYWtlCislIF8gYWN0aXZlLCBhbmQgZGlzdGluZ3Vpc2ggYnkgc2VlaW5nIGlmIHRoZSBjdXJyZW50IGZhbWlseSBpcyBcc2xmYW0sCislIHdoaWNoIGlzIHdoYXQgQHZhciB1c2VzLgoreworICBcY2F0Y29kZWBcXyA9IFxhY3RpdmUKKyAgXGdkZWZcbWF0aHVuZGVyc2NvcmV7JQorICAgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgICBcZGVmX3tcaWZudW1cZmFtPVxzbGZhbSBcX1xlbHNlXHNiXGZpfSUKKyAgfQorfQorJSBBbm90aGVyIGNvbXBsaWNhdGlvbjogd2Ugd2FudCBcXCAoYW5kIEBcKSB0byBvdXRwdXQgYSBcIGNoYXJhY3Rlci4KKyUgRllJLCBwbGFpbi50ZXggdXNlcyBcXCBhcyBhIHRlbXBvcmFyeSBjb250cm9sIHNlcXVlbmNlICh3aHk/KSwgYnV0CislIHRoaXMgaXMgbm90IGFkdmVydGlzZWQgYW5kIHdlIGRvbid0IGNhcmUuICBUZXhpbmZvIGRvZXMgbm90CislIG90aGVyd2lzZSBkZWZpbmUgQFwuCislCislIFRoZSBcbWF0aGNoYXIgaXMgY2xhc3M9MD1vcmRpbmFyeSwgZmFtaWx5PTc9dHRmYW0sIHBvc2l0aW9uPTVDPVwuCitcZGVmXG1hdGhiYWNrc2xhc2h7XGlmbnVtXGZhbT1cdHRmYW0gXG1hdGhjaGFyIjA3NUMgXGVsc2VcYmFja3NsYXNoIFxmaX0KKyUKK1xkZWZcbWF0aHslCisgIFx0ZXgKKyAgXG1hdGh1bmRlcnNjb3JlCisgIFxsZXRcXCA9IFxtYXRoYmFja3NsYXNoCisgIFxtYXRoYWN0aXZlCisgICRcZmluaXNobWF0aAorfQorXGRlZlxmaW5pc2htYXRoIzF7IzEkXGVuZGdyb3VwfSAgJSBDbG9zZSB0aGUgZ3JvdXAgb3BlbmVkIGJ5IFx0ZXguCisKKyUgU29tZSBhY3RpdmUgY2hhcmFjdGVycyAoc3VjaCBhcyA8KSBhcmUgc3BhY2VkIGRpZmZlcmVudGx5IGluIG1hdGguCislIFdlIGhhdmUgdG8gcmVzZXQgdGhlaXIgZGVmaW5pdGlvbnMgaW4gY2FzZSB0aGUgQG1hdGggd2FzIGFuIGFyZ3VtZW50CislIHRvIGEgY29tbWFuZCB3aGljaCBzZXRzIHRoZSBjYXRjb2RlcyAoc3VjaCBhcyBAaXRlbSBvciBAc2VjdGlvbikuCislCit7CisgIFxjYXRjb2RlYF4gPSBcYWN0aXZlCisgIFxjYXRjb2RlYDwgPSBcYWN0aXZlCisgIFxjYXRjb2RlYD4gPSBcYWN0aXZlCisgIFxjYXRjb2RlYCsgPSBcYWN0aXZlCisgIFxnZGVmXG1hdGhhY3RpdmV7JQorICAgIFxsZXReID0gXHB0ZXhoYXQKKyAgICBcbGV0PCA9IFxwdGV4bGVzcworICAgIFxsZXQ+ID0gXHB0ZXhndHIKKyAgICBcbGV0KyA9IFxwdGV4cGx1cworICB9Cit9CisKKyUgQGJ1bGxldCBhbmQgQG1pbnVzIG5lZWQgdGhlIHNhbWUgdHJlYXRtZW50IGFzIEBtYXRoLCBqdXN0IGFib3ZlLgorXGRlZlxidWxsZXR7JFxwdGV4YnVsbGV0JH0KK1xkZWZcbWludXN7JC0kfQorCislIEBkb3Rze30gb3V0cHV0cyBhbiBlbGxpcHNpcyB1c2luZyB0aGUgY3VycmVudCBmb250LgorJSBXZSBkbyAuNWVtIHBlciBwZXJpb2Qgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3BhY2luZyBpbiBhIHR5cGV3cml0ZXIKKyUgZm9udCBhcyB0aHJlZSBhY3R1YWwgcGVyaW9kIGNoYXJhY3RlcnMuCislCitcZGVmXGRvdHN7JQorICBcbGVhdmV2bW9kZQorICBcaGJveCB0byAxLjVlbXslCisgICAgXGhza2lwIDBwdCBwbHVzIDAuMjVmaWwKKyAgICAuXGhmaWwuXGhmaWwuJQorICAgIFxoc2tpcCAwcHQgcGx1cyAwLjVmaWwKKyAgfSUKK30KKworJSBAZW5kZG90c3t9IGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBlbGxpcHNpcy4KKyUKK1xkZWZcZW5kZG90c3slCisgIFxkb3RzCisgIFxzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yCit9CisKKyUgQGNvbW1he30gaXMgc28gY29tbWFzIGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRleHQgd2l0aG91dCBtZXNzaW5nIHVwCislIFRleGluZm8ncyBwYXJzaW5nLgorJQorXGxldFxjb21tYSA9ICwKKworJSBAcmVmaWxsIGlzIGEgbm8tb3AuCitcbGV0XHJlZmlsbD1ccmVsYXgKKworJSBJZiB3b3JraW5nIG9uIGEgbGFyZ2UgZG9jdW1lbnQgaW4gY2hhcHRlcnMsIGl0IGlzIGNvbnZlbmllbnQgdG8KKyUgYmUgYWJsZSB0byBkaXNhYmxlIGluZGV4aW5nLCBjcm9zcy1yZWZlcmVuY2luZywgYW5kIGNvbnRlbnRzLCBmb3IgdGVzdCBydW5zLgorJSBUaGlzIGlzIGRvbmUgd2l0aCBAbm92YWxpZGF0ZSAoYmVmb3JlIEBzZXRmaWxlbmFtZSkuCislCitcbmV3aWZcaWZsaW5rcyBcbGlua3N0cnVlICUgYnkgZGVmYXVsdCB3ZSB3YW50IHRoZSBhdXggZmlsZXMuCitcbGV0XG5vdmFsaWRhdGUgPSBcbGlua3NmYWxzZQorCislIEBzZXRmaWxlbmFtZSBpcyBkb25lIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgdGV4aW5mbyBmaWxlLgorJSBTbyBvcGVuIGhlcmUgdGhlIGZpbGVzIHdlIG5lZWQgdG8gaGF2ZSBvcGVuIHdoaWxlIHJlYWRpbmcgdGhlIGlucHV0LgorJSBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1ha2UgYSAuZm10IGZpbGUgZm9yIHRleGluZm8uCitcZGVmXHNldGZpbGVuYW1leyUKKyAgIFxmaXhiYWNrc2xhc2ggICUgVHVybiBvZmYgaGFjayB0byBzd2FsbG93IGBcaW5wdXQgdGV4aW5mbycuCisgICBcaWZsaW5rcworICAgICBcdHJ5YXV4ZmlsZQorICAgICAlIE9wZW4gdGhlIG5ldyBhdXggZmlsZS4gIFRlWCB3aWxsIGNsb3NlIGl0IGF1dG9tYXRpY2FsbHkgYXQgZXhpdC4KKyAgICAgXGltbWVkaWF0ZVxvcGVub3V0XGF1eGZpbGU9XGpvYm5hbWUuYXV4CisgICBcZmkgJSBcb3BlbmluZGljZXMgbmVlZHMgdG8gZG8gc29tZSB3b3JrIGluIGFueSBjYXNlLgorICAgXG9wZW5pbmRpY2VzCisgICBcbGV0XHNldGZpbGVuYW1lPVxjb21tZW50ICUgSWdub3JlIGV4dHJhIEBzZXRmaWxlbmFtZSBjbWRzLgorICAgJQorICAgJSBJZiB0ZXhpbmZvLmNuZiBpcyBwcmVzZW50IG9uIHRoZSBzeXN0ZW0sIHJlYWQgaXQuCisgICAlIFVzZWZ1bCBmb3Igc2l0ZS13aWRlIEBhZm91cnBhcGVyLCBldGMuCisgICBcb3BlbmluIDEgdGV4aW5mby5jbmYKKyAgIFxpZmVvZiAxIFxlbHNlIFxpbnB1dCB0ZXhpbmZvLmNuZiBcZmkKKyAgIFxjbG9zZWluIDEKKyAgICUKKyAgIFxjb21tZW50ICUgSWdub3JlIHRoZSBhY3R1YWwgZmlsZW5hbWUuCit9CisKKyUgQ2FsbGVkIGZyb20gXHNldGZpbGVuYW1lLgorJQorXGRlZlxvcGVuaW5kaWNlc3slCisgIFxuZXdpbmRleHtjcH0lCisgIFxuZXdjb2RlaW5kZXh7Zm59JQorICBcbmV3Y29kZWluZGV4e3ZyfSUKKyAgXG5ld2NvZGVpbmRleHt0cH0lCisgIFxuZXdjb2RlaW5kZXh7a3l9JQorICBcbmV3Y29kZWluZGV4e3BnfSUKK30KKworJSBAYnllLgorXG91dGVyXGRlZlxieWV7XHBhZ2VhbGlnbm1hY3JvXHRyYWNpbmdzdGF0cz0xXHB0ZXhlbmR9CisKKworXG1lc3NhZ2V7cGRmLH0KKyUgYWRvYmUgYHBvcnRhYmxlJyBkb2N1bWVudCBmb3JtYXQKK1xuZXdjb3VudFx0ZW1wbnVtCitcbmV3Y291bnRcbG5rY291bnQKK1xuZXd0b2tzXGZpbGVuYW1lCitcbmV3Y291bnRcZmlsZW5hbWVsZW5ndGgKK1xuZXdjb3VudFxwZ24KK1xuZXd0b2tzXHRva3NBCitcbmV3dG9rc1x0b2tzQgorXG5ld3Rva3NcdG9rc0MKK1xuZXd0b2tzXHRva3NECitcbmV3Ym94XGJveEEKK1xuZXdjb3VudFxjb3VudEEKK1xuZXdpZlxpZnBkZgorXG5ld2lmXGlmcGRmbWFrZXBhZ2VkZXN0CisKKyUgd2hlbiBwZGZ0ZXggaXMgcnVuIGluIGR2aSBtb2RlLCBccGRmb3V0cHV0IGlzIGRlZmluZWQgKHNvIFxwZGZvdXRwdXQ9MQorJSBjYW4gYmUgc2V0KS4gIFNvIHdlIHRlc3QgZm9yIFxyZWxheCBhbmQgMCBhcyB3ZWxsIGFzIFx1bmRlZmluZWQsCislIGJvcnJvd2VkIGZyb20gaWZwZGYuc3R5LgorXGlmeFxwZGZvdXRwdXRcdW5kZWZpbmVkCitcZWxzZQorICBcaWZ4XHBkZm91dHB1dFxyZWxheAorICBcZWxzZQorICAgIFxpZmNhc2VccGRmb3V0cHV0CisgICAgXGVsc2UKKyAgICAgIFxwZGZ0cnVlCisgICAgXGZpCisgIFxmaQorXGZpCisKKyUgUERGIHVzZXMgUG9zdFNjcmlwdCBzdHJpbmcgY29uc3RhbnRzIGZvciB0aGUgbmFtZXMgb2YgeHJlZiB0YXJnZXRzLAorJSBmb3IgZGlzcGxheSBpbiB0aGUgb3V0bGluZXMsIGFuZCBpbiBvdGhlciBwbGFjZXMuICBUaHVzLCB3ZSBoYXZlIHRvCislIGRvdWJsZSBhbnkgYmFja3NsYXNoZXMuICBPdGhlcndpc2UsIGEgbmFtZSBsaWtlICJcbm9kZSIgd2lsbCBiZQorJSBpbnRlcnByZXRlZCBhcyBhIG5ld2xpbmUgKFxuKSwgZm9sbG93ZWQgYnkgbywgZCwgZS4gIE5vdCBnb29kLgorJSBodHRwOi8vd3d3Lm50Zy5ubC9waXBlcm1haWwvbnRnLXBkZnRleC8yMDA0LUp1bHkvMDAwNjU0Lmh0bWwKKyUgKGFuZCByZWxhdGVkIG1lc3NhZ2VzLCB0aGUgZmluYWwgb3V0Y29tZSBpcyB0aGF0IGl0IGlzIHVwIHRvIHRoZSBUZVgKKyUgdXNlciB0byBkb3VibGUgdGhlIGJhY2tzbGFzaGVzIGFuZCBvdGhlcndpc2UgbWFrZSB0aGUgc3RyaW5nIHZhbGlkLCBzbworJSB0aGF0J3Mgd2hhdCB3ZSBkbykuCisKKyUgZG91YmxlIGFjdGl2ZSBiYWNrc2xhc2hlcy4KKyUgCit7XGNhdGNvZGVgXEA9MCBcY2F0Y29kZWBcXD1cYWN0aXZlCisgQGdkZWZAYWN0aXZlYmFja3NsYXNoZG91YmxleyUKKyAgIEBjYXRjb2RlYEBcPUBhY3RpdmUKKyAgIEBsZXRcPUBkb3VibGViYWNrc2xhc2h9Cit9CisKKyUgVG8gaGFuZGxlIHBhcmVucywgd2UgbXVzdCBhZG9wdCBhIGRpZmZlcmVudCBhcHByb2FjaCwgc2luY2UgcGFyZW5zIGFyZQorJSBub3QgYWN0aXZlIGNoYXJhY3RlcnMuICBoeXBlcnJlZi5kdHggKHdoaWNoIGhhcyB0aGUgc2FtZSBwcm9ibGVtIGFzCislIHVzKSBoYW5kbGVzIGl0IHdpdGggdGhpcyBhbWF6aW5nIG1hY3JvIHRvIHJlcGxhY2UgdG9rZW5zLiAgSSd2ZQorJSB0aW5rZXJlZCB3aXRoIGl0IGEgbGl0dGxlIGZvciB0ZXhpbmZvLCBidXQgaXQncyBkZWZpbml0ZWx5IGZyb20gdGhlcmUuCislIAorJSAjMSBpcyB0aGUgdG9rZW5zIHRvIHJlcGxhY2UuCislICMyIGlzIHRoZSByZXBsYWNlbWVudC4KKyUgIzMgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2Ugd2l0aCB0aGUgc3RyaW5nLgorJSAKK1xkZWZcSHlQc2RTdWJzdCMxIzIjM3slCisgIFxkZWZcSHlQc2RSZXBsYWNlIyMxIzEjIzJcRU5EeyUKKyAgICAjIzElCisgICAgXGlmeFxcIyMyXFwlCisgICAgXGVsc2UKKyAgICAgICMyJQorICAgICAgXEh5UmV0dXJuQWZ0ZXJGaXslCisgICAgICAgIFxIeVBzZFJlcGxhY2UjIzJcRU5ECisgICAgICB9JQorICAgIFxmaQorICB9JQorICBceGRlZiMze1xleHBhbmRhZnRlclxIeVBzZFJlcGxhY2UjMyMxXEVORH0lCit9CitcbG9uZ1xkZWZcSHlSZXR1cm5BZnRlckZpIzFcZml7XGZpIzF9CisKKyUgIzEgaXMgYSBjb250cm9sIHNlcXVlbmNlIGluIHdoaWNoIHRvIGRvIHRoZSByZXBsYWNlbWVudHMuCitcZGVmXGJhY2tzbGFzaHBhcmVucyMxeyUKKyAgXHhkZWYjMXsjMX0lIHJlZGVmaW5lIGl0IGFzIGl0cyBleHBhbnNpb247IHRoZSBkZWZpbml0aW9uIGlzIHNpbXBseQorICAgICAgICAgICAgICUgXGxhc3Rub2RlIHdoZW4gY2FsbGVkIGZyb20gXHNldHJlZiAtPiBccGRmbWtkZXN0LgorICBcSHlQc2RTdWJzdHsofXtccmVhbGJhY2tzbGFzaCh9eyMxfSUKKyAgXEh5UHNkU3Vic3R7KX17XHJlYWxiYWNrc2xhc2gpfXsjMX0lCit9CisKK1xpZnBkZgorICBcaW5wdXQgcGRmY29sb3IKKyAgXHBkZmNhdGFsb2d7L1BhZ2VNb2RlIC9Vc2VPdXRsaW5lc30lCisgIFxkZWZcZG9wZGZpbWFnZSMxIzIjM3slCisgICAgXGRlZlxpbWFnZXdpZHRoeyMyfSUKKyAgICBcZGVmXGltYWdlaGVpZ2h0eyMzfSUKKyAgICAlIHdpdGhvdXQgXGltbWVkaWF0ZSwgcGRmdGV4IHNlZyBmYXVsdHMgd2hlbiB0aGUgc2FtZSBpbWFnZSBpcworICAgICUgaW5jbHVkZWQgdHdpY2UuICAoVmVyc2lvbiAzLjE0MTU5LXByZS0xLjAtdW5vZmZpY2lhbC0yMDAxMDcwNC4pCisgICAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNAorICAgICAgXGltbWVkaWF0ZVxwZGZpbWFnZQorICAgIFxlbHNlCisgICAgICBcaW1tZWRpYXRlXHBkZnhpbWFnZQorICAgIFxmaQorICAgICAgXGlmeFxlbXB0eVxpbWFnZXdpZHRoXGVsc2Ugd2lkdGggXGltYWdld2lkdGggXGZpCisgICAgICBcaWZ4XGVtcHR5XGltYWdlaGVpZ2h0XGVsc2UgaGVpZ2h0IFxpbWFnZWhlaWdodCBcZmkKKyAgICAgIFxpZm51bVxwZGZ0ZXh2ZXJzaW9uPDEzCisgICAgICAgICAjMS5wZGYlCisgICAgICAgXGVsc2UKKyAgICAgICAgIHsjMS5wZGZ9JQorICAgICAgIFxmaQorICAgIFxpZm51bVxwZGZ0ZXh2ZXJzaW9uIDwgMTQgXGVsc2UKKyAgICAgIFxwZGZyZWZ4aW1hZ2UgXHBkZmxhc3R4aW1hZ2UKKyAgICBcZml9CisgIFxkZWZccGRmbWtkZXN0IzF7eyUKKyAgICAlIFdlIGhhdmUgdG8gc2V0IGR1bW1pZXMgc28gY29tbWFuZHMgc3VjaCBhcyBAY29kZSwgYW5kIGNoYXJhY3RlcnMKKyAgICAlIHN1Y2ggYXMgXCwgYXJlbid0IGV4cGFuZGVkIHdoZW4gcHJlc2VudCBpbiBhIHNlY3Rpb24gdGl0bGUuCisgICAgXGF0ZHVtbWllcworICAgIFxhY3RpdmViYWNrc2xhc2hkb3VibGUKKyAgICBcZGVmXHBkZmRlc3RuYW1leyMxfSUKKyAgICBcYmFja3NsYXNocGFyZW5zXHBkZmRlc3RuYW1lCisgICAgXHBkZmRlc3QgbmFtZXtccGRmZGVzdG5hbWV9IHh5eiUKKyAgfX0lCisgICUKKyAgJSB1c2VkIHRvIG1hcmsgdGFyZ2V0IG5hbWVzOyBtdXN0IGJlIGV4cGFuZGFibGUuCisgIFxkZWZccGRmbWtwZ24jMXsjMX0lCisgICUKKyAgXGxldFxsaW5rY29sb3IgPSBcQmx1ZSAgJSB3YXMgQ3lhbiwgYnV0IHRoYXQgc2VlbXMgbGlnaHQ/CisgIFxkZWZcZW5kbGlua3tcQmxhY2tccGRmZW5kbGlua30KKyAgJSBBZGRpbmcgb3V0bGluZXMgdG8gUERGOyBtYWNyb3MgZm9yIGNhbGN1bGF0aW5nIHN0cnVjdHVyZSBvZiBvdXRsaW5lcworICAlIGNvbWUgZnJvbSBQZXRyIE9sc2FrCisgIFxkZWZcZXhwbnVtYmVyIzF7XGV4cGFuZGFmdGVyXGlmeFxjc25hbWUjMVxlbmRjc25hbWVccmVsYXggMCUKKyAgICBcZWxzZSBcY3NuYW1lIzFcZW5kY3NuYW1lIFxmaX0KKyAgXGRlZlxhZHZhbmNlbnVtYmVyIzF7XHRlbXBudW09XGV4cG51bWJlcnsjMX1ccmVsYXgKKyAgICBcYWR2YW5jZVx0ZW1wbnVtIGJ5IDEKKyAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMVxlbmRjc25hbWV7XHRoZVx0ZW1wbnVtfX0KKyAgJQorICAlICMxIGlzIHRoZSBzZWN0aW9uIHRleHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlCisgICUgb3V0bGluZSBieSB0aGUgcGRmIHZpZXdlci4gICMyIGlzIHRoZSBwZGYgZXhwcmVzc2lvbiBmb3IgdGhlIG51bWJlcgorICAlIG9mIHN1YmVudHJpZXMgKG9yIGVtcHR5LCBmb3Igc3Vic3Vic2VjdGlvbnMpLiAgIzMgaXMgdGhlIG5vZGUgdGV4dCwKKyAgJSB3aGljaCBtaWdodCBiZSBlbXB0eSBpZiB0aGlzIHRvYyBlbnRyeSBoYWQgbm8gY29ycmVzcG9uZGluZyBub2RlLgorICAlICM0IGlzIHRoZSBwYWdlIG51bWJlcgorICAlCisgIFxkZWZcZG9wZGZvdXRsaW5lIzEjMiMzIzR7JQorICAgICUgR2VuZXJhdGUgYSBsaW5rIHRvIHRoZSBub2RlIHRleHQgaWYgdGhhdCBleGlzdHM7IGVsc2UsIHVzZSB0aGUKKyAgICAlIHBhZ2UgbnVtYmVyLiAgV2UgY291bGQgZ2VuZXJhdGUgYSBkZXN0aW5hdGlvbiBmb3IgdGhlIHNlY3Rpb24KKyAgICAlIHRleHQgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzZWN0aW9uIGhhcyBubyBub2RlLCBidXQgaXQgZG9lc24ndAorICAgICUgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSwgc2luY2UgbW9zdCBkb2N1bWVudHMgYXJlIG5vcm1hbGx5IHN0cnVjdHVyZWQuCisgICAgXGRlZlxwZGZvdXRsaW5lZGVzdHsjM30lCisgICAgXGlmeFxwZGZvdXRsaW5lZGVzdFxlbXB0eQorICAgICAgXGRlZlxwZGZvdXRsaW5lZGVzdHsjNH0lCisgICAgXGVsc2UKKyAgICAgICUgRG91YmxlZCBiYWNrc2xhc2hlcyBpbiB0aGUgbmFtZS4KKyAgICAgIHtcYWN0aXZlYmFja3NsYXNoZG91YmxlIFx4ZGVmXHBkZm91dGxpbmVkZXN0eyMzfSUKKyAgICAgICBcYmFja3NsYXNocGFyZW5zXHBkZm91dGxpbmVkZXN0fSUKKyAgICBcZmkKKyAgICAlCisgICAgJSBBbHNvIGRvdWJsZSB0aGUgYmFja3NsYXNoZXMgaW4gdGhlIGRpc3BsYXkgc3RyaW5nLgorICAgIHtcYWN0aXZlYmFja3NsYXNoZG91YmxlIFx4ZGVmXHBkZm91dGxpbmV0ZXh0eyMxfSUKKyAgICAgXGJhY2tzbGFzaHBhcmVuc1xwZGZvdXRsaW5ldGV4dH0lCisgICAgJQorICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257XHBkZm91dGxpbmVkZXN0fX0jMntccGRmb3V0bGluZXRleHR9JQorICB9CisgICUKKyAgXGRlZlxwZGZtYWtlb3V0bGluZXN7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICAlIFRoYW5oJ3MgaGFjayAvIHByb3BlciBicmFjZXMgaW4gYm9va21hcmtzCisgICAgICBcZWRlZlxteWxicmFjZXtcaWZ0cnVlIFxzdHJpbmd7XGVsc2V9XGZpfVxsZXRcez1cbXlsYnJhY2UKKyAgICAgIFxlZGVmXG15cmJyYWNle1xpZmZhbHNle1xlbHNlXHN0cmluZ31cZml9XGxldFx9PVxteXJicmFjZQorICAgICAgJQorICAgICAgJSBSZWFkIHRvYyBzaWxlbnRseSwgdG8gZ2V0IGNvdW50cyBvZiBzdWJlbnRyaWVzIGZvciBccGRmb3V0bGluZS4KKyAgICAgIFxkZWZcbnVtY2hhcGVudHJ5IyMxIyMyIyMzIyM0eyUKKwlcZGVmXHRoaXNjaGFwbnVteyMjMn0lCisJXGRlZlx0aGlzc2VjbnVtezB9JQorCVxkZWZcdGhpc3N1YnNlY251bXswfSUKKyAgICAgIH0lCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKwlcYWR2YW5jZW51bWJlcntjaGFwXHRoaXNjaGFwbnVtfSUKKwlcZGVmXHRoaXNzZWNudW17IyMyfSUKKwlcZGVmXHRoaXNzdWJzZWNudW17MH0lCisgICAgICB9JQorICAgICAgXGRlZlxudW1zdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslCisJXGFkdmFuY2VudW1iZXJ7c2VjXHRoaXNzZWNudW19JQorCVxkZWZcdGhpc3N1YnNlY251bXsjIzJ9JQorICAgICAgfSUKKyAgICAgIFxkZWZcbnVtc3Vic3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorCVxhZHZhbmNlbnVtYmVye3N1YnNlY1x0aGlzc3Vic2VjbnVtfSUKKyAgICAgIH0lCisgICAgICBcZGVmXHRoaXNjaGFwbnVtezB9JQorICAgICAgXGRlZlx0aGlzc2VjbnVtezB9JQorICAgICAgXGRlZlx0aGlzc3Vic2VjbnVtezB9JQorICAgICAgJQorICAgICAgJSB1c2UgXGRlZiByYXRoZXIgdGhhbiBcbGV0IGhlcmUgYmVjYXVzZSB3ZSByZWRlZmluZSBcY2hhcGVudHJ5IGV0CisgICAgICAlIGFsLiBhIHNlY29uZCB0aW1lLCBiZWxvdy4KKyAgICAgIFxkZWZcYXBwZW50cnl7XG51bWNoYXBlbnRyeX0lCisgICAgICBcZGVmXGFwcHNlY2VudHJ5e1xudW1zZWNlbnRyeX0lCisgICAgICBcZGVmXGFwcHN1YnNlY2VudHJ5e1xudW1zdWJzZWNlbnRyeX0lCisgICAgICBcZGVmXGFwcHN1YnN1YnNlY2VudHJ5e1xudW1zdWJzdWJzZWNlbnRyeX0lCisgICAgICBcZGVmXHVubmNoYXBlbnRyeXtcbnVtY2hhcGVudHJ5fSUKKyAgICAgIFxkZWZcdW5uc2VjZW50cnl7XG51bXNlY2VudHJ5fSUKKyAgICAgIFxkZWZcdW5uc3Vic2VjZW50cnl7XG51bXN1YnNlY2VudHJ5fSUKKyAgICAgIFxkZWZcdW5uc3Vic3Vic2VjZW50cnl7XG51bXN1YnN1YnNlY2VudHJ5fSUKKyAgICAgIFxyZWFkZGF0YWZpbGV7dG9jfSUKKyAgICAgICUKKyAgICAgICUgUmVhZCB0b2Mgc2Vjb25kIHRpbWUsIHRoaXMgdGltZSBhY3R1YWxseSBwcm9kdWNpbmcgdGhlIG91dGxpbmVzLgorICAgICAgJSBUaGUgYC0nIG1lYW5zIHRha2UgdGhlIFxleHBudW1iZXIgYXMgdGhlIGFic29sdXRlIG51bWJlciBvZgorICAgICAgJSBzdWJlbnRyaWVzLCB3aGljaCB3ZSBjYWxjdWxhdGVkIG9uIG91ciBmaXJzdCByZWFkIG9mIHRoZSAudG9jIGFib3ZlLgorICAgICAgJQorICAgICAgJSBXZSB1c2UgdGhlIG5vZGUgbmFtZXMgYXMgdGhlIGRlc3RpbmF0aW9ucy4KKyAgICAgIFxkZWZcbnVtY2hhcGVudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7Y2hhcCMjMn19eyMjM317IyM0fX0lCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7c2VjIyMyfX17IyMzfXsjIzR9fSUKKyAgICAgIFxkZWZcbnVtc3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorICAgICAgICBcZG9wZGZvdXRsaW5leyMjMX17Y291bnQtXGV4cG51bWJlcntzdWJzZWMjIzJ9fXsjIzN9eyMjNH19JQorICAgICAgXGRlZlxudW1zdWJzdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslIGNvdW50IGlzIGFsd2F5cyB6ZXJvCisgICAgICAgIFxkb3BkZm91dGxpbmV7IyMxfXt9eyMjM317IyM0fX0lCisgICAgICAlCisgICAgICAlIFBERiBvdXRsaW5lcyBhcmUgZGlzcGxheWVkIHVzaW5nIHN5c3RlbSBmb250cywgaW5zdGVhZCBvZgorICAgICAgJSBkb2N1bWVudCBmb250cy4gIFRoZXJlZm9yZSB3ZSBjYW5ub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAgICUgc2luY2UgdGhlIGVuY29kaW5nIGlzIHVua25vd24uICBGb3IgZXhhbXBsZSwgdGhlIGVvZ29uZWsgZnJvbQorICAgICAgJSBMYXRpbiAyICgweGVhKSBnZXRzIHRyYW5zbGF0ZWQgdG8gYSB8IGNoYXJhY3Rlci4gIEluZm8gZnJvbQorICAgICAgJSBTdGFzemVrIFdhd3J5a2lld2ljeiwgMTkgSmFuIDIwMDQgMDQ6MDk6MjQgKzAxMDAuCisgICAgICAlCisgICAgICAlIHh4IHRvIGRvIHRoaXMgcmlnaHQsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIDgtYml0IGNoYXJhY3RlcnMgdG8KKyAgICAgICUgdGhlaXIgImJlc3QiIGVxdWl2YWxlbnQsIGJhc2VkIG9uIHRoZSBAZG9jdW1lbnRlbmNvZGluZy4gIFJpZ2h0CisgICAgICAlIG5vdywgSSBndWVzcyB3ZSdsbCBqdXN0IGxldCB0aGUgcGRmIHJlYWRlciBoYXZlIGl0cyB3YXkuCisgICAgICBcaW5kZXhub2ZvbnRzCisgICAgICBcc2V0dXBkYXRhZmlsZQorICAgICAgXGNhdGNvZGVgXFw9XGFjdGl2ZSBcb3RoZXJiYWNrc2xhc2gKKyAgICAgIFxpbnB1dCBcam9ibmFtZS50b2MKKyAgICBcZW5kZ3JvdXAKKyAgfQorICAlCisgIFxkZWZcc2tpcHNwYWNlcyMxe1xkZWZcUFB7IzF9XGRlZlxEe3x9JQorICAgIFxpZnhcUFBcRFxsZXRcbmV4dHNwXHJlbGF4CisgICAgXGVsc2VcbGV0XG5leHRzcFxza2lwc3BhY2VzCisgICAgICBcaWZ4XHBcc3BhY2VcZWxzZVxhZGR0b2tlbnN7XGZpbGVuYW1lfXtcUFB9JQorICAgICAgICBcYWR2YW5jZVxmaWxlbmFtZWxlbmd0aCBieSAxCisgICAgICBcZmkKKyAgICBcZmkKKyAgICBcbmV4dHNwfQorICBcZGVmXGdldGZpbGVuYW1lIzF7XGZpbGVuYW1lbGVuZ3RoPTBcZXhwYW5kYWZ0ZXJcc2tpcHNwYWNlcyMxfFxyZWxheH0KKyAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNAorICAgIFxsZXQgXHN0YXJ0bGluayBccGRmYW5ub3RsaW5rCisgIFxlbHNlCisgICAgXGxldCBcc3RhcnRsaW5rIFxwZGZzdGFydGxpbmsKKyAgXGZpCisgICUgbWFrZSBhIGxpdmUgdXJsIGluIHBkZiBvdXRwdXQuCisgIFxkZWZccGRmdXJsIzF7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICAlIGl0IHNlZW1zIHdlIHJlYWxseSBuZWVkIHlldCBhbm90aGVyIHNldCBvZiBkdW1taWVzOyBoYXZlIG5vdAorICAgICAgJSB0cmllZCB0byBmaWd1cmUgb3V0IHdoYXQgZWFjaCBjb21tYW5kIHNob3VsZCBkbyBpbiB0aGUgY29udGV4dAorICAgICAgJSBvZiBAdXJsLiAgZm9yIG5vdywganVzdCBtYWtlIEAvIGEgbm8tb3AsIHRoYXQncyB0aGUgb25seSBvbmUKKyAgICAgICUgcGVvcGxlIGhhdmUgYWN0dWFsbHkgcmVwb3J0ZWQgYSBwcm9ibGVtIHdpdGguCisgICAgICAlIAorICAgICAgXG5vcm1hbHR1cm5vZmZhY3RpdmUKKyAgICAgIFxkZWZcQHtAfSUKKyAgICAgIFxsZXRcLz1cZW1wdHkKKyAgICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgICBcbGVhdmV2bW9kZVxSZWQKKyAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19JQorICAgICAgICB1c2Vyey9TdWJ0eXBlIC9MaW5rIC9BIDw8IC9TIC9VUkkgL1VSSSAoIzEpID4+fSUKKyAgICBcZW5kZ3JvdXB9CisgIFxkZWZccGRmZ2V0dG9rcyMxLntcc2V0Ym94XGJveEE9XGhib3h7XHRva3NBPXsjMS59XHRva3NCPXt9XG1ha2V0b2tzfX0KKyAgXGRlZlxhZGR0b2tlbnMjMSMye1xlZGVmXGFkZHRva3N7XG5vZXhwYW5kIzE9e1x0aGUjMSMyfX1cYWRkdG9rc30KKyAgXGRlZlxhZG4jMXtcYWRkdG9rZW5ze1x0b2tzQ317IzF9XGdsb2JhbFxjb3VudEE9MVxsZXRcbmV4dD1cbWFrZXRva3N9CisgIFxkZWZccG9wdG9rcyMxIzJ8RU5EVE9LU3x7XGxldFxmaXJzdD0jMVx0b2tzRD17IzF9XHRva3NBPXsjMn19CisgIFxkZWZcbWFrZXRva3N7JQorICAgIFxleHBhbmRhZnRlclxwb3B0b2tzXHRoZVx0b2tzQXxFTkRUT0tTfFxyZWxheAorICAgIFxpZnhcZmlyc3QwXGFkbjAKKyAgICBcZWxzZVxpZnhcZmlyc3QxXGFkbjEgXGVsc2VcaWZ4XGZpcnN0MlxhZG4yIFxlbHNlXGlmeFxmaXJzdDNcYWRuMworICAgIFxlbHNlXGlmeFxmaXJzdDRcYWRuNCBcZWxzZVxpZnhcZmlyc3Q1XGFkbjUgXGVsc2VcaWZ4XGZpcnN0NlxhZG42CisgICAgXGVsc2VcaWZ4XGZpcnN0N1xhZG43IFxlbHNlXGlmeFxmaXJzdDhcYWRuOCBcZWxzZVxpZnhcZmlyc3Q5XGFkbjkKKyAgICBcZWxzZQorICAgICAgXGlmbnVtMD1cY291bnRBXGVsc2VcbWFrZWxpbmtcZmkKKyAgICAgIFxpZnhcZmlyc3QuXGxldFxuZXh0PVxkb25lXGVsc2UKKyAgICAgICAgXGxldFxuZXh0PVxtYWtldG9rcworICAgICAgICBcYWRkdG9rZW5ze1x0b2tzQn17XHRoZVx0b2tzRH0KKyAgICAgICAgXGlmeFxmaXJzdCxcYWRkdG9rZW5ze1x0b2tzQn17XHNwYWNlfVxmaQorICAgICAgXGZpCisgICAgXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpCisgICAgXG5leHR9CisgIFxkZWZcbWFrZWxpbmt7XGFkZHRva2Vuc3tcdG9rc0J9JQorICAgIHtcbm9leHBhbmRccGRmbGlua3tcdGhlXHRva3NDfX1cdG9rc0M9e31cZ2xvYmFsXGNvdW50QT0wfQorICBcZGVmXHBkZmxpbmsjMXslCisgICAgXHN0YXJ0bGluayBhdHRyey9Cb3JkZXIgWzAgMCAwXX0gZ290byBuYW1le1xwZGZta3BnbnsjMX19CisgICAgXGxpbmtjb2xvciAjMVxlbmRsaW5rfQorICBcZGVmXGRvbmV7XGVkZWZcc3R7XGdsb2JhbFxub2V4cGFuZFx0b2tzQT17XHRoZVx0b2tzQn19XHN0fQorXGVsc2UKKyAgXGxldFxwZGZta2Rlc3QgPSBcZ29iYmxlCisgIFxsZXRccGRmdXJsID0gXGdvYmJsZQorICBcbGV0XGVuZGxpbmsgPSBccmVsYXgKKyAgXGxldFxsaW5rY29sb3IgPSBccmVsYXgKKyAgXGxldFxwZGZtYWtlb3V0bGluZXMgPSBccmVsYXgKK1xmaSAgJSBcaWZ4XHBkZm91dHB1dAorCisKK1xtZXNzYWdle2ZvbnRzLH0KKworJSBDaGFuZ2UgdGhlIGN1cnJlbnQgZm9udCBzdHlsZSB0byAjMSwgcmVtZW1iZXJpbmcgaXQgaW4gXGN1cmZvbnRzdHlsZS4KKyUgRm9yIG5vdywgd2UgZG8gbm90IGFjY3VtdWxhdGUgZm9udCBzdHlsZXM6IEBie0Bpe2Zvb319IHByaW50cyBmb28gaW4KKyUgaXRhbGljcywgbm90IGJvbGQgaXRhbGljcy4KKyUKK1xkZWZcc2V0Zm9udHN0eWxlIzF7JQorICBcZGVmXGN1cmZvbnRzdHlsZXsjMX0lIG5vdCBhcyBhIGNvbnRyb2wgc2VxdWVuY2UsIGJlY2F1c2Ugd2UgYXJlIFxlZGVmJ2QuCisgIFxjc25hbWUgdGVuIzFcZW5kY3NuYW1lICAlIGNoYW5nZSB0aGUgY3VycmVudCBmb250Cit9CisKKyUgU2VsZWN0ICMxIGZvbnRzIHdpdGggdGhlIGN1cnJlbnQgc3R5bGUuCislCitcZGVmXHNlbGVjdGZvbnRzIzF7XGNzbmFtZSAjMWZvbnRzXGVuZGNzbmFtZSBcY3NuYW1lXGN1cmZvbnRzdHlsZVxlbmRjc25hbWV9CisKK1xkZWZccm17XGZhbT0wIFxzZXRmb250c3R5bGV7cm19fQorXGRlZlxpdHtcZmFtPVxpdGZhbSBcc2V0Zm9udHN0eWxle2l0fX0KK1xkZWZcc2x7XGZhbT1cc2xmYW0gXHNldGZvbnRzdHlsZXtzbH19CitcZGVmXGJme1xmYW09XGJmZmFtIFxzZXRmb250c3R5bGV7YmZ9fVxkZWZcYmZzdHlsZW5hbWV7YmZ9CitcZGVmXHR0e1xmYW09XHR0ZmFtIFxzZXRmb250c3R5bGV7dHR9fQorCislIFRleGluZm8gc29ydCBvZiBzdXBwb3J0cyB0aGUgc2FucyBzZXJpZiBmb250IHN0eWxlLCB3aGljaCBwbGFpbiBUZVggZG9lcyBub3QuCislIFNvIHdlIHNldCB1cCBhIFxzZi4KK1xuZXdmYW1cc2ZmYW0KK1xkZWZcc2Z7XGZhbT1cc2ZmYW0gXHNldGZvbnRzdHlsZXtzZn19CitcbGV0XGxpID0gXHNmICUgU29tZXRpbWVzIHdlIGNhbGwgaXQgXGxpLCBub3QgXHNmLgorCislIFdlIGRvbid0IG5lZWQgbWF0aCBmb3IgdGhpcyBmb250IHN0eWxlLgorXGRlZlx0dHNse1xzZXRmb250c3R5bGV7dHRzbH19CisKKyUgRGVmYXVsdCBsZWFkaW5nLgorXG5ld2RpbWVuXHRleHRsZWFkaW5nICBcdGV4dGxlYWRpbmcgPSAxMy4ycHQKKworJSBTZXQgdGhlIGJhc2VsaW5lc2tpcCB0byAjMSwgYW5kIHRoZSBsaW5lc2tpcCBhbmQgc3RydXQgc2l6ZQorJSBjb3JyZXNwb25kaW5nbHkuICBUaGVyZSBpcyBubyBkZWVwIG1lYW5pbmcgYmVoaW5kIHRoZXNlIG1hZ2ljIG51bWJlcnMKKyUgdXNlZCBhcyBmYWN0b3JzOyB0aGV5IGp1c3QgbWF0Y2ggKGNsb3NlbHkgZW5vdWdoKSB3aGF0IEtudXRoIGRlZmluZWQuCislCitcZGVmXGxpbmVza2lwZmFjdG9yey4wODMzM30KK1xkZWZcc3RydXRoZWlnaHRwZXJjZW50ey43MDgzM30KK1xkZWZcc3RydXRkZXB0aHBlcmNlbnQgey4yOTE2N30KKyUKK1xkZWZcc2V0bGVhZGluZyMxeyUKKyAgXG5vcm1hbGJhc2VsaW5lc2tpcCA9ICMxXHJlbGF4CisgIFxub3JtYWxsaW5lc2tpcCA9IFxsaW5lc2tpcGZhY3Rvclxub3JtYWxiYXNlbGluZXNraXAKKyAgXG5vcm1hbGJhc2VsaW5lcworICBcc2V0Ym94XHN0cnV0Ym94ID1caGJveHslCisgICAgXHZydWxlIHdpZHRoMHB0IGhlaWdodFxzdHJ1dGhlaWdodHBlcmNlbnRcYmFzZWxpbmVza2lwCisgICAgICAgICAgICAgICAgICAgIGRlcHRoIFxzdHJ1dGRlcHRocGVyY2VudCBcYmFzZWxpbmVza2lwCisgIH0lCit9CisKKyUgU2V0IHRoZSBmb250IG1hY3JvICMxIHRvIHRoZSBmb250IG5hbWVkICMyLCBhZGRpbmcgb24gdGhlCislIHNwZWNpZmllZCBmb250IHByZWZpeCAobm9ybWFsbHkgYGNtJykuCislICMzIGlzIHRoZSBmb250J3MgZGVzaWduIHNpemUsICM0IGlzIGEgc2NhbGUgZmFjdG9yCitcZGVmXHNldGZvbnQjMSMyIzMjNHtcZm9udCMxPVxmb250cHJlZml4IzIjMyBzY2FsZWQgIzR9CisKKyUgVXNlIGNtIGFzIHRoZSBkZWZhdWx0IGZvbnQgcHJlZml4LgorJSBUbyBzcGVjaWZ5IHRoZSBmb250IHByZWZpeCwgeW91IG11c3QgZGVmaW5lIFxmb250cHJlZml4CislIGJlZm9yZSB5b3UgcmVhZCBpbiB0ZXhpbmZvLnRleC4KK1xpZnhcZm9udHByZWZpeFx1bmRlZmluZWQKK1xkZWZcZm9udHByZWZpeHtjbX0KK1xmaQorJSBTdXBwb3J0IGZvbnQgZmFtaWxpZXMgdGhhdCBkb24ndCB1c2UgdGhlIHNhbWUgbmFtaW5nIHNjaGVtZSBhcyBDTS4KK1xkZWZccm1zaGFwZXtyfQorXGRlZlxybWJzaGFwZXtieH0gICAgICAgICAgICAgICAld2hlcmUgdGhlIG5vcm1hbCBmYWNlIGlzIGJvbGQKK1xkZWZcYmZzaGFwZXtifQorXGRlZlxieHNoYXBle2J4fQorXGRlZlx0dHNoYXBle3R0fQorXGRlZlx0dGJzaGFwZXt0dH0KK1xkZWZcdHRzbHNoYXBle3NsdHR9CitcZGVmXGl0c2hhcGV7dGl9CitcZGVmXGl0YnNoYXBle2J4dGl9CitcZGVmXHNsc2hhcGV7c2x9CitcZGVmXHNsYnNoYXBle2J4c2x9CitcZGVmXHNmc2hhcGV7c3N9CitcZGVmXHNmYnNoYXBle3NzfQorXGRlZlxzY3NoYXBle2NzY30KK1xkZWZcc2Nic2hhcGV7Y3NjfQorCislIFRleHQgZm9udHMgKDExLjJwdCwgbWFnc3RlcDEpLgorXGRlZlx0ZXh0bm9taW5hbHNpemV7MTFwdH0KK1xlZGVmXG1haW5tYWdzdGVwe1xtYWdzdGVwaGFsZn0KK1xzZXRmb250XHRleHRybVxybXNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0dHRcdHRzaGFwZXsxMH17XG1haW5tYWdzdGVwfQorXHNldGZvbnRcdGV4dGJmXGJmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRpdFxpdHNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0c2xcc2xzaGFwZXsxMH17XG1haW5tYWdzdGVwfQorXHNldGZvbnRcdGV4dHNmXHNmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRzY1xzY3NoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0dHRzbFx0dHNsc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xmb250XHRleHRpPWNtbWkxMCBzY2FsZWQgXG1haW5tYWdzdGVwCitcZm9udFx0ZXh0c3k9Y21zeTEwIHNjYWxlZCBcbWFpbm1hZ3N0ZXAKKworJSBBIGZldyBmb250cyBmb3IgQGRlZnVuIG5hbWVzIGFuZCBhcmdzLgorXHNldGZvbnRcZGVmYmZcYmZzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXHNldGZvbnRcZGVmdHRcdHRzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXHNldGZvbnRcZGVmdHRzbFx0dHNsc2hhcGV7MTB9e1xtYWdzdGVwMX0KK1xkZWZcZGZ7XGxldFx0ZW50dD1cZGVmdHQgXGxldFx0ZW5iZiA9IFxkZWZiZiBcbGV0XHRlbnR0c2w9XGRlZnR0c2wgXGJmfQorCislIEZvbnRzIGZvciBpbmRpY2VzLCBmb290bm90ZXMsIHNtYWxsIGV4YW1wbGVzICg5cHQpLgorXGRlZlxzbWFsbG5vbWluYWxzaXplezlwdH0KK1xzZXRmb250XHNtYWxscm1ccm1zaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGx0dFx0dHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGJmXGJmc2hhcGV7MTB9ezkwMH0KK1xzZXRmb250XHNtYWxsaXRcaXRzaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGxzbFxzbHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbHNmXHNmc2hhcGV7OX17MTAwMH0KK1xzZXRmb250XHNtYWxsc2Ncc2NzaGFwZXsxMH17OTAwfQorXHNldGZvbnRcc21hbGx0dHNsXHR0c2xzaGFwZXsxMH17OTAwfQorXGZvbnRcc21hbGxpPWNtbWk5CitcZm9udFxzbWFsbHN5PWNtc3k5CisKKyUgRm9udHMgZm9yIHNtYWxsIGV4YW1wbGVzICg4cHQpLgorXGRlZlxzbWFsbGVybm9taW5hbHNpemV7OHB0fQorXHNldGZvbnRcc21hbGxlcnJtXHJtc2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJ0dFx0dHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyYmZcYmZzaGFwZXsxMH17ODAwfQorXHNldGZvbnRcc21hbGxlcml0XGl0c2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJzbFxzbHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyc2Zcc2ZzaGFwZXs4fXsxMDAwfQorXHNldGZvbnRcc21hbGxlcnNjXHNjc2hhcGV7MTB9ezgwMH0KK1xzZXRmb250XHNtYWxsZXJ0dHNsXHR0c2xzaGFwZXsxMH17ODAwfQorXGZvbnRcc21hbGxlcmk9Y21taTgKK1xmb250XHNtYWxsZXJzeT1jbXN5OAorCislIEZvbnRzIGZvciB0aXRsZSBwYWdlICgyMC40cHQpOgorXGRlZlx0aXRsZW5vbWluYWxzaXplezIwcHR9Citcc2V0Zm9udFx0aXRsZXJtXHJtYnNoYXBlezEyfXtcbWFnc3RlcDN9Citcc2V0Zm9udFx0aXRsZWl0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXNsXHNsYnNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXR0XHR0YnNoYXBlezEyfXtcbWFnc3RlcDN9Citcc2V0Zm9udFx0aXRsZXR0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXNmXHNmYnNoYXBlezE3fXtcbWFnc3RlcDF9CitcbGV0XHRpdGxlYmY9XHRpdGxlcm0KK1xzZXRmb250XHRpdGxlc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwNH0KK1xmb250XHRpdGxlaT1jbW1pMTIgc2NhbGVkIFxtYWdzdGVwMworXGZvbnRcdGl0bGVzeT1jbXN5MTAgc2NhbGVkIFxtYWdzdGVwNAorXGRlZlxhdXRob3JybXtcc2Vjcm19CitcZGVmXGF1dGhvcnR0e1xzZWN0dH0KKworJSBDaGFwdGVyIChhbmQgdW5udW1iZXJlZCkgZm9udHMgKDE3LjI4cHQpLgorXGRlZlxjaGFwbm9taW5hbHNpemV7MTdwdH0KK1xzZXRmb250XGNoYXBybVxybWJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcGl0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2xcc2xic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xzZXRmb250XGNoYXB0dFx0dGJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcHR0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2Zcc2Zic2hhcGV7MTd9ezEwMDB9CitcbGV0XGNoYXBiZj1cY2hhcHJtCitcc2V0Zm9udFxjaGFwc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xmb250XGNoYXBpPWNtbWkxMiBzY2FsZWQgXG1hZ3N0ZXAyCitcZm9udFxjaGFwc3k9Y21zeTEwIHNjYWxlZCBcbWFnc3RlcDMKKworJSBTZWN0aW9uIGZvbnRzICgxNC40cHQpLgorXGRlZlxzZWNub21pbmFsc2l6ZXsxNHB0fQorXHNldGZvbnRcc2Vjcm1ccm1ic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY2l0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzbFxzbGJzaGFwZXsxMH17XG1hZ3N0ZXAyfQorXHNldGZvbnRcc2VjdHRcdHRic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY3R0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXAxfQorXGxldFxzZWNiZlxzZWNybQorXHNldGZvbnRcc2Vjc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwMn0KK1xmb250XHNlY2k9Y21taTEyIHNjYWxlZCBcbWFnc3RlcDEKK1xmb250XHNlY3N5PWNtc3kxMCBzY2FsZWQgXG1hZ3N0ZXAyCisKKyUgU3Vic2VjdGlvbiBmb250cyAoMTMuMTVwdCkuCitcZGVmXHNzZWNub21pbmFsc2l6ZXsxM3B0fQorXHNldGZvbnRcc3NlY3JtXHJtYnNoYXBlezEyfXtcbWFnc3RlcGhhbGZ9Citcc2V0Zm9udFxzc2VjaXRcaXRic2hhcGV7MTB9ezEzMTV9Citcc2V0Zm9udFxzc2Vjc2xcc2xic2hhcGV7MTB9ezEzMTV9Citcc2V0Zm9udFxzc2VjdHRcdHRic2hhcGV7MTJ9e1xtYWdzdGVwaGFsZn0KK1xzZXRmb250XHNzZWN0dHNsXHR0c2xzaGFwZXsxMH17MTMxNX0KK1xzZXRmb250XHNzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXBoYWxmfQorXGxldFxzc2VjYmZcc3NlY3JtCitcc2V0Zm9udFxzc2Vjc2Ncc2Nic2hhcGV7MTB9ezEzMTV9CitcZm9udFxzc2VjaT1jbW1pMTIgc2NhbGVkIFxtYWdzdGVwaGFsZgorXGZvbnRcc3NlY3N5PWNtc3kxMCBzY2FsZWQgMTMxNQorCislIFJlZHVjZWQgZm9udHMgZm9yIEBhY3JvIGluIHRleHQgKDEwcHQpLgorXGRlZlxyZWR1Y2Vkbm9taW5hbHNpemV7MTBwdH0KK1xzZXRmb250XHJlZHVjZWRybVxybXNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHR0XHR0c2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2VkYmZcYmZzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRpdFxpdHNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHNsXHNsc2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2Vkc2Zcc2ZzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRzY1xzY3NoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHR0c2xcdHRzbHNoYXBlezEwfXsxMDAwfQorXGZvbnRccmVkdWNlZGk9Y21taTEwCitcZm9udFxyZWR1Y2Vkc3k9Y21zeTEwCisKKyUgSW4gb3JkZXIgZm9yIHRoZSBmb250IGNoYW5nZXMgdG8gYWZmZWN0IG1vc3QgbWF0aCBzeW1ib2xzIGFuZCBsZXR0ZXJzLAorJSB3ZSBoYXZlIHRvIGRlZmluZSB0aGUgXHRleHRmb250IG9mIHRoZSBzdGFuZGFyZCBmYW1pbGllcy4gIFNpbmNlCislIHRleGluZm8gZG9lc24ndCBhbGxvdyBmb3IgcHJvZHVjaW5nIHN1YnNjcmlwdHMgYW5kIHN1cGVyc2NyaXB0cyBleGNlcHQKKyUgaW4gdGhlIG1haW4gdGV4dCwgd2UgZG9uJ3QgYm90aGVyIHRvIHJlc2V0IFxzY3JpcHRmb250IGFuZAorJSBcc2NyaXB0c2NyaXB0Zm9udCAod2hpY2ggd291bGQgYWxzbyByZXF1aXJlIGxvYWRpbmcgYSBsb3QgbW9yZSBmb250cykuCislCitcZGVmXHJlc2V0bWF0aGZvbnRzeyUKKyAgXHRleHRmb250MD1cdGVucm0gXHRleHRmb250MT1cdGVuaSBcdGV4dGZvbnQyPVx0ZW5zeQorICBcdGV4dGZvbnRcaXRmYW09XHRlbml0IFx0ZXh0Zm9udFxzbGZhbT1cdGVuc2wgXHRleHRmb250XGJmZmFtPVx0ZW5iZgorICBcdGV4dGZvbnRcdHRmYW09XHRlbnR0IFx0ZXh0Zm9udFxzZmZhbT1cdGVuc2YKK30KKworJSBUaGUgZm9udC1jaGFuZ2luZyBjb21tYW5kcyByZWRlZmluZSB0aGUgbWVhbmluZ3Mgb2YgXHRlblNUWUxFLCBpbnN0ZWFkCislIG9mIGp1c3QgXFNUWUxFLiAgV2UgZG8gdGhpcyBiZWNhdXNlIFxTVFlMRSBuZWVkcyB0byBhbHNvIHNldCB0aGUKKyUgY3VycmVudCBcZmFtIGZvciBtYXRoIG1vZGUuICBPdXIgXFNUWUxFIChlLmcuLCBccm0pIGNvbW1hbmRzIGhhcmR3aXJlCislIFx0ZW5TVFlMRSB0byBzZXQgdGhlIGN1cnJlbnQgZm9udC4KKyUKKyUgRWFjaCBmb250LWNoYW5naW5nIGNvbW1hbmQgYWxzbyBzZXRzIHRoZSBuYW1lcyBcbHNpemUgKG9uZSBzaXplIGxvd2VyKQorJSBhbmQgXGxsbHNpemUgKHRocmVlIHNpemVzIGxvd2VyKS4gIFRoZXNlIHJlbGF0aXZlIGNvbW1hbmRzIGFyZSB1c2VkIGluCislIHRoZSBMYVRlWCBsb2dvIGFuZCBhY3Jvbnltcy4KKyUKKyUgVGhpcyBhbGwgbmVlZHMgZ2VuZXJhbGl6aW5nLCBiYWRseS4KKyUKK1xkZWZcdGV4dGZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGV4dHJtIFxsZXRcdGVuaXQ9XHRleHRpdCBcbGV0XHRlbnNsPVx0ZXh0c2wKKyAgXGxldFx0ZW5iZj1cdGV4dGJmIFxsZXRcdGVudHQ9XHRleHR0dCBcbGV0XHNtYWxsY2Fwcz1cdGV4dHNjCisgIFxsZXRcdGVuc2Y9XHRleHRzZiBcbGV0XHRlbmk9XHRleHRpIFxsZXRcdGVuc3k9XHRleHRzeQorICBcbGV0XHRlbnR0c2w9XHRleHR0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7dGV4dH0lCisgIFxkZWZcbHNpemV7cmVkdWNlZH1cZGVmXGxsbHNpemV7c21hbGxlcn0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3tcdGV4dGxlYWRpbmd9fQorXGRlZlx0aXRsZWZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGl0bGVybSBcbGV0XHRlbml0PVx0aXRsZWl0IFxsZXRcdGVuc2w9XHRpdGxlc2wKKyAgXGxldFx0ZW5iZj1cdGl0bGViZiBcbGV0XHRlbnR0PVx0aXRsZXR0IFxsZXRcc21hbGxjYXBzPVx0aXRsZXNjCisgIFxsZXRcdGVuc2Y9XHRpdGxlc2YgXGxldFx0ZW5pPVx0aXRsZWkgXGxldFx0ZW5zeT1cdGl0bGVzeQorICBcbGV0XHRlbnR0c2w9XHRpdGxldHRzbAorICBcZGVmXGN1cmZvbnRzaXple3RpdGxlfSUKKyAgXGRlZlxsc2l6ZXtjaGFwfVxkZWZcbGxsc2l6ZXtzdWJzZWN9JQorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MjVwdH19CitcZGVmXHRpdGxlZm9udCMxe3tcdGl0bGVmb250c1xybSAjMX19CitcZGVmXGNoYXBmb250c3slCisgIFxsZXRcdGVucm09XGNoYXBybSBcbGV0XHRlbml0PVxjaGFwaXQgXGxldFx0ZW5zbD1cY2hhcHNsCisgIFxsZXRcdGVuYmY9XGNoYXBiZiBcbGV0XHRlbnR0PVxjaGFwdHQgXGxldFxzbWFsbGNhcHM9XGNoYXBzYworICBcbGV0XHRlbnNmPVxjaGFwc2YgXGxldFx0ZW5pPVxjaGFwaSBcbGV0XHRlbnN5PVxjaGFwc3kKKyAgXGxldFx0ZW50dHNsPVxjaGFwdHRzbAorICBcZGVmXGN1cmZvbnRzaXple2NoYXB9JQorICBcZGVmXGxzaXple3NlY31cZGVmXGxsbHNpemV7dGV4dH0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxOXB0fX0KK1xkZWZcc2VjZm9udHN7JQorICBcbGV0XHRlbnJtPVxzZWNybSBcbGV0XHRlbml0PVxzZWNpdCBcbGV0XHRlbnNsPVxzZWNzbAorICBcbGV0XHRlbmJmPVxzZWNiZiBcbGV0XHRlbnR0PVxzZWN0dCBcbGV0XHNtYWxsY2Fwcz1cc2Vjc2MKKyAgXGxldFx0ZW5zZj1cc2Vjc2YgXGxldFx0ZW5pPVxzZWNpIFxsZXRcdGVuc3k9XHNlY3N5CisgIFxsZXRcdGVudHRzbD1cc2VjdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3NlY30lCisgIFxkZWZcbHNpemV7c3Vic2VjfVxkZWZcbGxsc2l6ZXtyZWR1Y2VkfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezE2cHR9fQorXGRlZlxzdWJzZWNmb250c3slCisgIFxsZXRcdGVucm09XHNzZWNybSBcbGV0XHRlbml0PVxzc2VjaXQgXGxldFx0ZW5zbD1cc3NlY3NsCisgIFxsZXRcdGVuYmY9XHNzZWNiZiBcbGV0XHRlbnR0PVxzc2VjdHQgXGxldFxzbWFsbGNhcHM9XHNzZWNzYworICBcbGV0XHRlbnNmPVxzc2Vjc2YgXGxldFx0ZW5pPVxzc2VjaSBcbGV0XHRlbnN5PVxzc2Vjc3kKKyAgXGxldFx0ZW50dHNsPVxzc2VjdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3NzZWN9JQorICBcZGVmXGxzaXple3RleHR9XGRlZlxsbGxzaXple3NtYWxsfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezE1cHR9fQorXGxldFxzdWJzdWJzZWNmb250cyA9IFxzdWJzZWNmb250cworXGRlZlxyZWR1Y2VkZm9udHN7JQorICBcbGV0XHRlbnJtPVxyZWR1Y2Vkcm0gXGxldFx0ZW5pdD1ccmVkdWNlZGl0IFxsZXRcdGVuc2w9XHJlZHVjZWRzbAorICBcbGV0XHRlbmJmPVxyZWR1Y2VkYmYgXGxldFx0ZW50dD1ccmVkdWNlZHR0IFxsZXRccmVkdWNlZGNhcHM9XHJlZHVjZWRzYworICBcbGV0XHRlbnNmPVxyZWR1Y2Vkc2YgXGxldFx0ZW5pPVxyZWR1Y2VkaSBcbGV0XHRlbnN5PVxyZWR1Y2Vkc3kKKyAgXGxldFx0ZW50dHNsPVxyZWR1Y2VkdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3JlZHVjZWR9JQorICBcZGVmXGxzaXple3NtYWxsfVxkZWZcbGxsc2l6ZXtzbWFsbGVyfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezEwLjVwdH19CitcZGVmXHNtYWxsZm9udHN7JQorICBcbGV0XHRlbnJtPVxzbWFsbHJtIFxsZXRcdGVuaXQ9XHNtYWxsaXQgXGxldFx0ZW5zbD1cc21hbGxzbAorICBcbGV0XHRlbmJmPVxzbWFsbGJmIFxsZXRcdGVudHQ9XHNtYWxsdHQgXGxldFxzbWFsbGNhcHM9XHNtYWxsc2MKKyAgXGxldFx0ZW5zZj1cc21hbGxzZiBcbGV0XHRlbmk9XHNtYWxsaSBcbGV0XHRlbnN5PVxzbWFsbHN5CisgIFxsZXRcdGVudHRzbD1cc21hbGx0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7c21hbGx9JQorICBcZGVmXGxzaXple3NtYWxsZXJ9XGRlZlxsbGxzaXple3NtYWxsZXJ9JQorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTAuNXB0fX0KK1xkZWZcc21hbGxlcmZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cc21hbGxlcnJtIFxsZXRcdGVuaXQ9XHNtYWxsZXJpdCBcbGV0XHRlbnNsPVxzbWFsbGVyc2wKKyAgXGxldFx0ZW5iZj1cc21hbGxlcmJmIFxsZXRcdGVudHQ9XHNtYWxsZXJ0dCBcbGV0XHNtYWxsY2Fwcz1cc21hbGxlcnNjCisgIFxsZXRcdGVuc2Y9XHNtYWxsZXJzZiBcbGV0XHRlbmk9XHNtYWxsZXJpIFxsZXRcdGVuc3k9XHNtYWxsZXJzeQorICBcbGV0XHRlbnR0c2w9XHNtYWxsZXJ0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7c21hbGxlcn0lCisgIFxkZWZcbHNpemV7c21hbGxlcn1cZGVmXGxsbHNpemV7c21hbGxlcn0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3s5LjVwdH19CisKKyUgU2V0IHRoZSBmb250cyB0byB1c2Ugd2l0aCB0aGUgQHNtYWxsLi4uIGVudmlyb25tZW50cy4KK1xsZXRcc21hbGxleGFtcGxlZm9udHMgPSBcc21hbGxmb250cworCislIEFib3V0IFxzbWFsbGV4YW1wbGVmb250cy4gIElmIHdlIHVzZSBcc21hbGxmb250cyAoOXB0KSwgQHNtYWxsZXhhbXBsZQorJSBjYW4gZml0IHRoaXMgbWFueSBjaGFyYWN0ZXJzOgorJSAgIDguNXgxMT04NiAgIHNtYWxsYm9vaz03MiAgYTQ9OTAgIGE1PTY5CislIElmIHdlIHVzZSBcc2NyaXB0Zm9udHMgKDhwdCksIHRoZW4gd2UgY2FuIGZpdCB0aGlzIG1hbnkgY2hhcmFjdGVyczoKKyUgICA4LjV4MTE9OTArICBzbWFsbGJvb2s9ODAgIGE0PTkwKyAgYTU9NzcKKyUgRm9yIG1lLCBzdWJqZWN0aXZlbHksIHRoZSBmZXcgZXh0cmEgY2hhcmFjdGVycyB0aGF0IGZpdCBhcmVuJ3Qgd29ydGgKKyUgdGhlIGFkZGl0aW9uYWwgc21hbGxuZXNzIG9mIDhwdC4gIFNvIEknbSBtYWtpbmcgdGhlIGRlZmF1bHQgOXB0LgorJQorJSBCeSB0aGUgd2F5LCBmb3IgY29tcGFyaXNvbiwgaGVyZSdzIHdoYXQgZml0cyB3aXRoIEBleGFtcGxlICgxMHB0KToKKyUgICA4LjV4MTE9NzEgIHNtYWxsYm9vaz02MCAgYTQ9NzUgIGE1PTU4CislCislIEkgd2lzaCB0aGUgVVNBIHVzZWQgQTQgcGFwZXIuCislIC0ta2FybCwgMjRqYW4wMy4KKworCislIFNldCB1cCB0aGUgZGVmYXVsdCBmb250cywgc28gd2UgY2FuIHVzZSB0aGVtIGZvciBjcmVhdGluZyBib3hlcy4KKyUKK1x0ZXh0Zm9udHMgXHJtCisKKyUgRGVmaW5lIHRoZXNlIHNvIHRoZXkgY2FuIGJlIGVhc2lseSBjaGFuZ2VkIGZvciBvdGhlciBmb250cy4KK1xkZWZcYW5nbGVsZWZ0eyRcbGFuZ2xlJH0KK1xkZWZcYW5nbGVyaWdodHskXHJhbmdsZSR9CisKKyUgQ291bnQgZGVwdGggaW4gZm9udC1jaGFuZ2VzLCBmb3IgZXJyb3IgY2hlY2tzCitcbmV3Y291bnRcZm9udGRlcHRoIFxmb250ZGVwdGg9MAorCislIEZvbnRzIGZvciBzaG9ydCB0YWJsZSBvZiBjb250ZW50cy4KK1xzZXRmb250XHNob3J0Y29udHJtXHJtc2hhcGV7MTJ9ezEwMDB9Citcc2V0Zm9udFxzaG9ydGNvbnRiZlxiZnNoYXBlezEwfXtcbWFnc3RlcDF9ICAlIG5vIGNtYjEyCitcc2V0Zm9udFxzaG9ydGNvbnRzbFxzbHNoYXBlezEyfXsxMDAwfQorXHNldGZvbnRcc2hvcnRjb250dHRcdHRzaGFwZXsxMn17MTAwMH0KKworJSUgQWRkIHNjcmliZS1saWtlIGZvbnQgZW52aXJvbm1lbnRzLCBwbHVzIEBsIGZvciBpbmxpbmUgbGlzcCAodXN1YWxseSBzYW5zCislJSBzZXJpZikgYW5kIEBpaSBmb3IgVGVYIGl0YWxpYworCislIFxzbWFydGl0YWxpY3tBUkd9IG91dHB1dHMgYXJnIGluIGl0YWxpY3MsIGZvbGxvd2VkIGJ5IGFuIGl0YWxpYyBjb3JyZWN0aW9uCislIHVubGVzcyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBzdWNoIGFzIG5vdCB0byBuZWVkIG9uZS4KK1xkZWZcc21hcnRpdGFsaWN4e1xpZnhcbmV4dCxcZWxzZVxpZnhcbmV4dC1cZWxzZVxpZnhcbmV4dC5cZWxzZQorICAgICAgICAgICAgICAgICAgICBccHRleHNsYXNoXGZpXGZpXGZpfQorXGRlZlxzbWFydHNsYW50ZWQjMXt7XGlmdXNpbmd0dFx0dHNsXHNsICMxfVxmdXR1cmVsZXRcbmV4dFxzbWFydGl0YWxpY3h9CitcZGVmXHNtYXJ0aXRhbGljIzF7e1xpZnVzaW5ndHRcdHRzbFxpdCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCislIGxpa2UgXHNtYXJ0c2xhbnRlZCBleGNlcHQgdW5jb25kaXRpb25hbGx5IHVzZXMgXHR0c2wuCislIEB2YXIgaXMgc2V0IHRvIHRoaXMgZm9yIGRlZnVuIGFyZ3VtZW50cy4KK1xkZWZcdHRzbGFudGVkIzF7e1x0dHNsICMxfVxmdXR1cmVsZXRcbmV4dFxzbWFydGl0YWxpY3h9CisKKyUgbGlrZSBcc21hcnRzbGFudGVkIGV4Y2VwdCB1bmNvbmRpdGlvbmFsbHkgdXNlIFxzbC4gIFdlIG5ldmVyIHdhbnQKKyUgdHRzbCBmb3IgYm9vayB0aXRsZXMsIGRvIHdlPworXGRlZlxjaXRlIzF7e1xzbCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCitcbGV0XGk9XHNtYXJ0aXRhbGljCitcbGV0XHNsYW50ZWQ9XHNtYXJ0c2xhbnRlZAorXGxldFx2YXI9XHNtYXJ0c2xhbnRlZAorXGxldFxkZm49XHNtYXJ0c2xhbnRlZAorXGxldFxlbXBoPVxzbWFydGl0YWxpYworCislIEBiLCBleHBsaWNpdCBib2xkLgorXGRlZlxiIzF7e1xiZiAjMX19CitcbGV0XHN0cm9uZz1cYgorCislIEBzYW5zc2VyaWYsIGV4cGxpY2l0IHNhbnMuCitcZGVmXHNhbnNzZXJpZiMxe3tcc2YgIzF9fQorCislIFdlIGNhbid0IGp1c3QgdXNlIFxleGh5cGhlbnBlbmFsdHksIGJlY2F1c2UgdGhhdCBvbmx5IGhhcyBlZmZlY3QgYXQKKyUgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4gIFJlc3RvcmUgbm9ybWFsIGh5cGhlbmF0aW9uIGF0IHRoZSBlbmQgb2YgdGhlCislIGdyb3VwIHdpdGhpbiB3aGljaCBcbm9oeXBoZW5hdGlvbiBpcyBwcmVzdW1hYmx5IGNhbGxlZC4KKyUKK1xkZWZcbm9oeXBoZW5hdGlvbntcaHlwaGVuY2hhclxmb250ID0gLTEgIFxhZnRlcmdyb3VwXHJlc3RvcmVoeXBoZW5hdGlvbn0KK1xkZWZccmVzdG9yZWh5cGhlbmF0aW9ue1xoeXBoZW5jaGFyXGZvbnQgPSBgLSB9CisKKyUgU2V0IHNmY29kZSB0byBub3JtYWwgZm9yIHRoZSBjaGFycyB0aGF0IHVzdWFsbHkgaGF2ZSBhbm90aGVyIHZhbHVlLgorJSBDYW4ndCB1c2UgcGxhaW4ncyBcZnJlbmNoc3BhY2luZyBiZWNhdXNlIGl0IHVzZXMgdGhlIGBceCBub3RhdGlvbiwgYW5kCislIHNvbWV0aW1lcyBceCBoYXMgYW4gYWN0aXZlIGRlZmluaXRpb24gdGhhdCBtZXNzZXMgdGhpbmdzIHVwLgorJQorXGNoYXJkZWZcY29sb25DaGFyID0gYFw6CitcY2hhcmRlZlxjb21tYUNoYXIgPSBgXCwKK1xjaGFyZGVmXGRvdENoYXIgICA9IGBcLgorXGNoYXJkZWZcZXhjbGFtQ2hhcj0gYFwhCitcY2hhcmRlZlxxdWVzdENoYXIgPSBgXD8KK1xjaGFyZGVmXHNlbWlDaGFyICA9IGBcOworJQorXGNhdGNvZGVgQD0xMQorICBcZGVmXHBsYWluZnJlbmNoc3BhY2luZ3slCisgICAgXHNmY29kZVxkb3RDaGFyICA9XEBtIFxzZmNvZGVccXVlc3RDaGFyPVxAbSBcc2Zjb2RlXGV4Y2xhbUNoYXI9XEBtCisgICAgXHNmY29kZVxjb2xvbkNoYXI9XEBtIFxzZmNvZGVcc2VtaUNoYXIgPVxAbSBcc2Zjb2RlXGNvbW1hQ2hhciA9XEBtCisgICAgXGRlZlxlbmRvZnNlbnRlbmNlc3BhY2VmYWN0b3J7MTAwMH0lIGZvciBALiBhbmQgZnJpZW5kcworICB9CisgIFxkZWZccGxhaW5ub25mcmVuY2hzcGFjaW5neyUKKyAgICBcc2Zjb2RlYFwuMzAwMFxzZmNvZGVgXD8zMDAwXHNmY29kZWBcITMwMDAKKyAgICBcc2Zjb2RlYFw6MjAwMFxzZmNvZGVgXDsxNTAwXHNmY29kZWBcLDEyNTAKKyAgICBcZGVmXGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvcnszMDAwfSUgZm9yIEAuIGFuZCBmcmllbmRzCisgIH0KK1xjYXRjb2RlYEA9XG90aGVyCitcZGVmXGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvcnszMDAwfSUgZGVmYXVsdAorCitcZGVmXHQjMXslCisgIHtcdHQgXHJhd2JhY2tzbGFzaCBccGxhaW5mcmVuY2hzcGFjaW5nICMxfSUKKyAgXG51bGwKK30KK1xkZWZcc2FtcCMxe2BcdGNsb3NleyMxfSdcbnVsbH0KK1xzZXRmb250XGtleXJtXHJtc2hhcGV7OH17MTAwMH0KK1xmb250XGtleXN5PWNtc3k5CitcZGVmXGtleSMxe3tca2V5cm1cdGV4dGZvbnQyPVxrZXlzeSBcbGVhdmV2bW9kZVxoYm94eyUKKyAgXHJhaXNlMC40cHRcaGJveHtcYW5nbGVsZWZ0fVxrZXJuLS4wOGVtXHZ0b3B7JQorICAgIFx2Ym94e1xocnVsZVxrZXJuLTAuNHB0CisgICAgIFxoYm94e1xyYWlzZTAuNHB0XGhib3h7XHZwaGFudG9te1xhbmdsZWxlZnR9fSMxfX0lCisgICAgXGtlcm4tMC40cHRcaHJ1bGV9JQorICBca2Vybi0uMDZlbVxyYWlzZTAuNHB0XGhib3h7XGFuZ2xlcmlnaHR9fX19CislIFRoZSBvbGQgZGVmaW5pdGlvbiwgd2l0aCBubyBsb3plbmdlOgorJVxkZWZca2V5ICMxe3tcdHRzbCBcbm9oeXBoZW5hdGlvbiBcdXBwZXJjYXNleyMxfX1cbnVsbH0KK1xkZWZcY3RybCAjMXt7XHR0IFxyYXdiYWNrc2xhc2ggXGhhdH0jMX0KKworJSBAZmlsZSwgQG9wdGlvbiBhcmUgdGhlIHNhbWUgYXMgQHNhbXAuCitcbGV0XGZpbGU9XHNhbXAKK1xsZXRcb3B0aW9uPVxzYW1wCisKKyUgQGNvZGUgaXMgYSBtb2RpZmljYXRpb24gb2YgQHQsCislIHdoaWNoIG1ha2VzIHNwYWNlcyB0aGUgc2FtZSBzaXplIGFzIG5vcm1hbCBpbiB0aGUgc3Vycm91bmRpbmcgdGV4dC4KK1xkZWZcdGNsb3NlIzF7JQorICB7JQorICAgICUgQ2hhbmdlIG5vcm1hbCBpbnRlcndvcmQgc3BhY2UgdG8gYmUgc2FtZSBhcyBmb3IgdGhlIGN1cnJlbnQgZm9udC4KKyAgICBcc3BhY2Vza2lwID0gXGZvbnRkaW1lbjJcZm9udAorICAgICUKKyAgICAlIFN3aXRjaCB0byB0eXBld3JpdGVyLgorICAgIFx0dAorICAgICUKKyAgICAlIEJ1dCBgXCAnIHByb2R1Y2VzIHRoZSBsYXJnZSB0eXBld3JpdGVyIGludGVyd29yZCBzcGFjZS4KKyAgICBcZGVmXCB7e1xzcGFjZXNraXAgPSAwcHR7fSB9fSUKKyAgICAlCisgICAgJSBUdXJuIG9mZiBoeXBoZW5hdGlvbi4KKyAgICBcbm9oeXBoZW5hdGlvbgorICAgICUKKyAgICBccmF3YmFja3NsYXNoCisgICAgXHBsYWluZnJlbmNoc3BhY2luZworICAgICMxJQorICB9JQorICBcbnVsbAorfQorCislIFdlICptdXN0KiB0dXJuIG9uIGh5cGhlbmF0aW9uIGF0IGAtJyBhbmQgYF8nIGluIEBjb2RlLgorJSBPdGhlcndpc2UsIGl0IGlzIHRvbyBoYXJkIHRvIGF2b2lkIG92ZXJmdWxsIGhib3hlcworJSBpbiB0aGUgRW1hY3MgbWFudWFsLCB0aGUgTGlicmFyeSBtYW51YWwsIGV0Yy4KKworJSBVbmZvcnR1bmF0ZWx5LCBUZVggdXNlcyBvbmUgcGFyYW1ldGVyIChcaHlwaGVuY2hhcikgdG8gY29udHJvbAorJSBib3RoIGh5cGhlbmF0aW9uIGF0IC0gYW5kIGh5cGhlbmF0aW9uIHdpdGhpbiB3b3Jkcy4KKyUgV2UgbXVzdCB0aGVyZWZvcmUgdHVybiB0aGVtIGJvdGggb2ZmIChcdGNsb3NlIGRvZXMgdGhhdCkKKyUgYW5kIGFycmFuZ2UgZXhwbGljaXRseSB0byBoeXBoZW5hdGUgYXQgYSBkYXNoLgorJSAgLS0gcm1zLgoreworICBcY2F0Y29kZWBcLT1cYWN0aXZlCisgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgJQorICBcZ2xvYmFsXGRlZlxjb2Rle1xiZWdpbmdyb3VwCisgICAgXGNhdGNvZGVgXC09XGFjdGl2ZSAgXGNhdGNvZGVgXF89XGFjdGl2ZQorICAgIFxpZmFsbG93Y29kZWJyZWFrcworICAgICBcbGV0LVxjb2RlZGFzaAorICAgICBcbGV0X1xjb2RldW5kZXIKKyAgICBcZWxzZQorICAgICBcbGV0LVxyZWFsZGFzaAorICAgICBcbGV0X1xyZWFsdW5kZXIKKyAgICBcZmkKKyAgICBcY29kZXgKKyAgfQorfQorCitcZGVmXHJlYWxkYXNoey19CitcZGVmXGNvZGVkYXNoey1cZGlzY3JldGlvbmFyeXt9e317fX0KK1xkZWZcY29kZXVuZGVyeyUKKyAgJSB0aGlzIGlzIGFsbCBzbyBAbWF0aHtAY29kZXt2YXJfbmFtZX0rMX0gY2FuIHdvcmsuICBJbiBtYXRoIG1vZGUsIF8KKyAgJSBpcyAiYWN0aXZlIiAobWF0aGNvZGUiODAwMCkgYW5kIFxub3JtYWx1bmRlcnNjb3JlIChvciBcY2hhcjk1LCBldGMuKQorICAlIHdpbGwgdGhlcmVmb3JlIGV4cGFuZCB0aGUgYWN0aXZlIGRlZmluaXRpb24gb2YgXywgd2hpY2ggaXMgdXMKKyAgJSAoaW5zaWRlIEBjb2RlIHRoYXQgaXMpLCB0aGVyZWZvcmUgYW4gZW5kbGVzcyBsb29wLgorICBcaWZ1c2luZ3R0e1xpZm1tb2RlCisgICAgICAgICAgICAgICBcbWF0aGNoYXIiMDc1RiAlIGNsYXNzIDA9b3JkaW5hcnksIGZhbWlseSA3PXR0ZmFtLCBwb3MgMHg1Rj1fLgorICAgICAgICAgICAgIFxlbHNlXG5vcm1hbHVuZGVyc2NvcmUgXGZpCisgICAgICAgICAgICAgXGRpc2NyZXRpb25hcnl7fXt9e319JQorICAgICAgICAgICAge1xffSUKK30KK1xkZWZcY29kZXggIzF7XHRjbG9zZXsjMX1cZW5kZ3JvdXB9CisKKyUgQW4gYWRkaXRpb25hbCBjb21wbGljYXRpb246IHRoZSBhYm92ZSB3aWxsIGFsbG93IGJyZWFrcyBhZnRlciwgZS5nLiwKKyUgZWFjaCBvZiB0aGUgZm91ciB1bmRlcnNjb3JlcyBpbiBfX3R5cGVvZl9fLiAgVGhpcyBpcyB1bmRlc2lyYWJsZSBpbgorJSBzb21lIG1hbnVhbHMsIGVzcGVjaWFsbHkgaWYgdGhleSBkb24ndCBoYXZlIGxvbmcgaWRlbnRpZmllcnMgaW4KKyUgZ2VuZXJhbC4gIEBhbGxvd2NvZGVicmVha3MgcHJvdmlkZXMgYSB3YXkgdG8gY29udHJvbCB0aGlzLgorJSAKK1xuZXdpZlxpZmFsbG93Y29kZWJyZWFrcyAgXGFsbG93Y29kZWJyZWFrc3RydWUKKworXGRlZlxrZXl3b3JkdHJ1ZXt0cnVlfQorXGRlZlxrZXl3b3JkZmFsc2V7ZmFsc2V9CisKK1xwYXJzZWFyZ2RlZlxhbGxvd2NvZGVicmVha3N7JQorICBcZGVmXHR4aWFyZ3sjMX0lCisgIFxpZnhcdHhpYXJnXGtleXdvcmR0cnVlCisgICAgXGFsbG93Y29kZWJyZWFrc3RydWUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1xrZXl3b3JkZmFsc2UKKyAgICBcYWxsb3djb2RlYnJlYWtzZmFsc2UKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGFsbG93Y29kZWJyZWFrcyBvcHRpb24gYFx0eGlhcmcnfSUKKyAgXGZpXGZpCit9CisKKyUgQGtiZCBpcyBsaWtlIEBjb2RlLCBleGNlcHQgdGhhdCBpZiB0aGUgYXJndW1lbnQgaXMganVzdCBvbmUgQGtleSBjb21tYW5kLAorJSB0aGVuIEBrYmQgaGFzIG5vIGVmZmVjdC4KKworJSBAa2JkaW5wdXRzdHlsZSAtLSBhcmcgaXMgYGRpc3RpbmN0JyAoQGtiZCB1c2VzIHNsYW50ZWQgdHR5IGZvbnQgYWx3YXlzKSwKKyUgICBgZXhhbXBsZScgKEBrYmQgdXNlcyB0dHNsIG9ubHkgaW5zaWRlIG9mIEBleGFtcGxlIGFuZCBmcmllbmRzKSwKKyUgICBvciBgY29kZScgKEBrYmQgdXNlcyBub3JtYWwgdHR5IGZvbnQgYWx3YXlzKS4KK1xwYXJzZWFyZ2RlZlxrYmRpbnB1dHN0eWxleyUKKyAgXGRlZlx0eGlhcmd7IzF9JQorICBcaWZ4XHR4aWFyZ1x3b3JkZGlzdGluY3QKKyAgICBcZ2RlZlxrYmRleGFtcGxlZm9udHtcdHRzbH1cZ2RlZlxrYmRmb250e1x0dHNsfSUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1x3b3JkZXhhbXBsZQorICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dHNsfVxnZGVmXGtiZGZvbnR7XHR0fSUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1x3b3JkY29kZQorICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dH1cZ2RlZlxrYmRmb250e1x0dH0lCisgIFxlbHNlCisgICAgXGVycmhlbHAgPSBcRU1zaW1wbGUKKyAgICBcZXJybWVzc2FnZXtVbmtub3duIEBrYmRpbnB1dHN0eWxlIG9wdGlvbiBgXHR4aWFyZyd9JQorICBcZmlcZmlcZmkKK30KK1xkZWZcd29yZGRpc3RpbmN0e2Rpc3RpbmN0fQorXGRlZlx3b3JkZXhhbXBsZXtleGFtcGxlfQorXGRlZlx3b3JkY29kZXtjb2RlfQorCislIERlZmF1bHQgaXMgYGRpc3RpbmN0LicKK1xrYmRpbnB1dHN0eWxlIGRpc3RpbmN0CisKK1xkZWZceGtleXtca2V5fQorXGRlZlxrYmRmb28jMSMyIzNccGFye1xkZWZcb25leyMxfVxkZWZcdGhyZWV7IzN9XGRlZlx0aHJlZXh7Pz99JQorXGlmeFxvbmVceGtleVxpZnhcdGhyZWV4XHRocmVlIFxrZXl7IzJ9JQorXGVsc2V7XHRjbG9zZXtca2JkZm9udFxsb29rfX1cZmkKK1xlbHNle1x0Y2xvc2V7XGtiZGZvbnRcbG9va319XGZpfQorCislIEZvciBAaW5kaWNhdGV1cmwsIEBlbnYsIEBjb21tYW5kIHF1b3RlcyBzZWVtIHVubmVjZXNzYXJ5LCBzbyB1c2UgXGNvZGUuCitcbGV0XGluZGljYXRldXJsPVxjb2RlCitcbGV0XGVudj1cY29kZQorXGxldFxjb21tYW5kPVxjb2RlCisKKyUgQHVyZWYgKGFiYnJldmlhdGlvbiBmb3IgYHVybHJlZicpIHRha2VzIGFuIG9wdGlvbmFsIChjb21tYS1zZXBhcmF0ZWQpCislIHNlY29uZCBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZSB0ZXh0IHRvIGRpc3BsYXkgYW5kIGFuIG9wdGlvbmFsIHRoaXJkCislIGFyZyBhcyB0ZXh0IHRvIGRpc3BsYXkgaW5zdGVhZCBvZiAocmF0aGVyIHRoYW4gaW4gYWRkaXRpb24gdG8pIHRoZSB1cmwKKyUgaXRzZWxmLiAgRmlyc3QgKG1hbmRhdG9yeSkgYXJnIGlzIHRoZSB1cmwuICBQZXJoYXBzIGV2ZW50dWFsbHkgcHV0IGluCislIGEgaHlwZXJ0ZXggXHNwZWNpYWwgaGVyZS4KKyUKK1xkZWZcdXJlZiMxe1xkb3VyZWYgIzEsLCxcZmluaXNofQorXGRlZlxkb3VyZWYjMSwjMiwjMywjNFxmaW5pc2h7XGJlZ2luZ3JvdXAKKyAgXHVuc2Vwc3BhY2VzCisgIFxwZGZ1cmx7IzF9JQorICBcc2V0Ym94MCA9IFxoYm94e1xpZ25vcmVzcGFjZXMgIzN9JQorICBcaWZkaW1cd2QwID4gMHB0CisgICAgXHVuaGJveDAgJSB0aGlyZCBhcmcgZ2l2ZW4sIHNob3cgb25seSB0aGF0CisgIFxlbHNlCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMyfSUKKyAgICBcaWZkaW1cd2QwID4gMHB0CisgICAgICBcaWZwZGYKKyAgICAgICAgXHVuaGJveDAgICAgICAgICAgICAgJSBQREY6IDJuZCBhcmcgZ2l2ZW4sIHNob3cgb25seSBpdAorICAgICAgXGVsc2UKKyAgICAgICAgXHVuaGJveDBcIChcY29kZXsjMX0pJSBEVkk6IDJuZCBhcmcgZ2l2ZW4sIHNob3cgYm90aCBpdCBhbmQgdXJsCisgICAgICBcZmkKKyAgICBcZWxzZQorICAgICAgXGNvZGV7IzF9JSBvbmx5IHVybCBnaXZlbiwgc28gc2hvdyBpdAorICAgIFxmaQorICBcZmkKKyAgXGVuZGxpbmsKK1xlbmRncm91cH0KKworJSBAdXJsIHN5bm9ueW0gZm9yIEB1cmVmLCBzaW5jZSB0aGF0J3MgaG93IGV2ZXJ5b25lIHVzZXMgaXQuCislCitcbGV0XHVybD1cdXJlZgorCislIHJtcyBkb2VzIG5vdCBsaWtlIGFuZ2xlIGJyYWNrZXRzIC0ta2FybCwgMTdtYXk5Ny4KKyUgU28gbm93IEBlbWFpbCBpcyBqdXN0IGxpa2UgQHVyZWYsIHVubGVzcyB3ZSBhcmUgcGRmLgorJQorJVxkZWZcZW1haWwjMXtcYW5nbGVsZWZ0e1x0dCAjMX1cYW5nbGVyaWdodH0KK1xpZnBkZgorICBcZGVmXGVtYWlsIzF7XGRvZW1haWwjMSwsXGZpbmlzaH0KKyAgXGRlZlxkb2VtYWlsIzEsIzIsIzNcZmluaXNoe1xiZWdpbmdyb3VwCisgICAgXHVuc2Vwc3BhY2VzCisgICAgXHBkZnVybHttYWlsdG86IzF9JQorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCisgICAgXGlmZGltXHdkMD4wcHRcdW5oYm94MFxlbHNlXGNvZGV7IzF9XGZpCisgICAgXGVuZGxpbmsKKyAgXGVuZGdyb3VwfQorXGVsc2UKKyAgXGxldFxlbWFpbD1cdXJlZgorXGZpCisKKyUgQ2hlY2sgaWYgd2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIHR5cGV3cml0ZXIgZm9udC4gIFNpbmNlIGFsbCB0aGUKKyUgQ29tcHV0ZXIgTW9kZXJuIHR5cGV3cml0ZXIgZm9udHMgaGF2ZSB6ZXJvIGludGVyd29yZCBzdHJldGNoIChhbmQKKyUgc2hyaW5rKSwgYW5kIGl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0IGFsbCB0eXBld3JpdGVyIGZvbnRzIHRvIGhhdmUKKyUgdGhpcyBwcm9wZXJ0eSwgd2UgY2FuIGNoZWNrIHRoYXQgZm9udCBwYXJhbWV0ZXIuCislCitcZGVmXGlmbW9ub3NwYWNle1xpZmRpbVxmb250ZGltZW4zXGZvbnQ9MHB0IH0KKworJSBUeXBlc2V0IGEgZGltZW5zaW9uLCBlLmcuLCBgaW4nIG9yIGBwdCcuICBUaGUgb25seSByZWFzb24gZm9yIHRoZQorJSBhcmd1bWVudCBpcyB0byBtYWtlIHRoZSBpbnB1dCBsb29rIHJpZ2h0OiBAZG1ue3B0fSBpbnN0ZWFkIG9mIEBkbW57fXB0LgorJQorXGRlZlxkbW4jMXtcdGhpbnNwYWNlICMxfQorCitcZGVmXGtiZCMxe1xkZWZcbG9va3sjMX1cZXhwYW5kYWZ0ZXJca2JkZm9vXGxvb2s/P1xwYXJ9CisKKyUgQGwgd2FzIG5ldmVyIGRvY3VtZW50ZWQgdG8gbWVhbiBgYHN3aXRjaCB0byB0aGUgTGlzcCBmb250JycsCislIGFuZCBpdCBpcyBub3QgdXNlZCBhcyBzdWNoIGluIGFueSBtYW51YWwgSSBjYW4gZmluZC4gIFdlIG5lZWQgaXQgZm9yCislIFBvbGlzaCBzdXBwcmVzc2VkLWwuICAtLWthcmwsIDIyc2VwOTYuCislXGRlZlxsIzF7e1xsaSAjMX1cbnVsbH0KKworJSBFeHBsaWNpdCBmb250IGNoYW5nZXM6IEByLCBAc2MsIHVuZG9jdW1lbnRlZCBAaWkuCitcZGVmXHIjMXt7XHJtICMxfX0gICAgICAgICAgICAgICUgcm9tYW4gZm9udAorXGRlZlxzYyMxe3tcc21hbGxjYXBzIzF9fSAgICAgICAlIHNtYWxsY2FwcyBmb250CitcZGVmXGlpIzF7e1xpdCAjMX19ICAgICAgICAgICAgICUgaXRhbGljIGZvbnQKKworJSBAYWNyb255bSBmb3IgIkZCSSIsICJOQVRPIiwgYW5kIHRoZSBsaWtlLgorJSBXZSBwcmludCB0aGlzIG9uZSBwb2ludCBzaXplIHNtYWxsZXIsIHNpbmNlIGl0J3MgaW50ZW5kZWQgZm9yCislIGFsbC11cHBlcmNhc2UuCislIAorXGRlZlxhY3JvbnltIzF7XGRvYWNyb255bSAjMSwsXGZpbmlzaH0KK1xkZWZcZG9hY3JvbnltIzEsIzIsIzNcZmluaXNoeyUKKyAge1xzZWxlY3Rmb250c1xsc2l6ZSAjMX0lCisgIFxkZWZcdGVtcHsjMn0lCisgIFxpZnhcdGVtcFxlbXB0eSBcZWxzZQorICAgIFxzcGFjZSAoe1x1bnNlcHNwYWNlcyBcaWdub3Jlc3BhY2VzIFx0ZW1wIFx1bnNraXB9KSUKKyAgXGZpCit9CisKKyUgQGFiYnIgZm9yICJDb21wdXQuIEouIiBhbmQgdGhlIGxpa2UuCislIE5vIGZvbnQgY2hhbmdlLCBidXQgZG9uJ3QgZG8gZW5kLW9mLXNlbnRlbmNlIHNwYWNpbmcuCislIAorXGRlZlxhYmJyIzF7XGRvYWJiciAjMSwsXGZpbmlzaH0KK1xkZWZcZG9hYmJyIzEsIzIsIzNcZmluaXNoeyUKKyAge1xwbGFpbmZyZW5jaHNwYWNpbmcgIzF9JQorICBcZGVmXHRlbXB7IzJ9JQorICBcaWZ4XHRlbXBcZW1wdHkgXGVsc2UKKyAgICBcc3BhY2UgKHtcdW5zZXBzcGFjZXMgXGlnbm9yZXNwYWNlcyBcdGVtcCBcdW5za2lwfSklCisgIFxmaQorfQorCislIEBwb3VuZHN7fSBpcyBhIHN0ZXJsaW5nIHNpZ24sIHdoaWNoIEtudXRoIHB1dCBpbiB0aGUgQ00gaXRhbGljIGZvbnQuCislCitcZGVmXHBvdW5kc3t7XGl0XCR9fQorCislIEBldXJve30gY29tZXMgZnJvbSBhIHNlcGFyYXRlIGZvbnQsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBzdHlsZS4KKyUgV2UgdXNlIHRoZSBmcmVlIGZleW0qIGZvbnRzIGZyb20gdGhlIGV1cm9zeW0gcGFja2FnZSBieSBIZW5yaWsKKyUgVGhlaWxpbmcsIHdoaWNoIHN1cHBvcnQgcmVndWxhciwgc2xhbnRlZCwgYm9sZCBhbmQgYm9sZCBzbGFudGVkIChhbmQKKyUgIm91dGxpbmVkIiAoYmxhY2tib2FyZCBib2FyZCwgc29ydCBvZikgdmVyc2lvbnMsIHdoaWNoIHdlIGRvbid0IG5lZWQpLgorJSBJdCBpcyBhdmFpbGFibGUgZnJvbSBodHRwOi8vd3d3LmN0YW4ub3JnL3RleC1hcmNoaXZlL2ZvbnRzL2V1cm9zeW0uCislIAorJSBBbHRob3VnaCBvbmx5IHJlZ3VsYXIgaXMgdGhlIHRydWx5IG9mZmljaWFsIEV1cm8gc3ltYm9sLCB3ZSBpZ25vcmUKKyUgdGhhdC4gIFRoZSBFdXJvIGlzIGRlc2lnbmVkIHRvIGJlIHNsaWdodGx5IHRhbGxlciB0aGFuIHRoZSByZWd1bGFyCislIGZvbnQgaGVpZ2h0LgorJSAKKyUgZmV5bXIgLSByZWd1bGFyCislIGZleW1vIC0gc2xhbnRlZAorJSBmZXliciAtIGJvbGQKKyUgZmV5Ym8gLSBib2xkIHNsYW50ZWQKKyUgCislIFRoZXJlIGlzIG5vIGdvb2QgKGZyZWUpIHR5cGV3cml0ZXIgdmVyc2lvbiwgdG8gbXkga25vd2xlZGdlLgorJSBBIGZleW1yMTAgZXVybyBpcyB+Ny4zcHQgd2lkZSwgd2hpbGUgYSBub3JtYWwgY210dDEwIGNoYXIgaXMgfjUuMjVwdCB3aWRlLgorJSBIbW0uCislIAorJSBBbHNvIGRvZXNuJ3Qgd29yayBpbiBtYXRoLiAgRG8gd2UgbmVlZCB0byBkbyBtYXRoIHdpdGggZXVybyBzeW1ib2xzPworJSBIb3BlIG5vdC4KKyUgCislIAorXGRlZlxldXJve3tcZXVyb2ZvbnQgZX19CitcZGVmXGV1cm9mb250eyUKKyAgJSBXZSBzZXQgdGhlIGZvbnQgYXQgZWFjaCBjb21tYW5kLCByYXRoZXIgdGhhbiBwcmVkZWZpbmluZyBpdCBpbgorICAlIFx0ZXh0Zm9udHMgYW5kIHRoZSBvdGhlciBmb250LXN3aXRjaGluZyBjb21tYW5kcywgc28gdGhhdAorICAlIGluc3RhbGxhdGlvbnMgd2hpY2ggbmV2ZXIgbmVlZCB0aGUgc3ltYm9sIGRvbid0IGhhdmUgdG8gaGF2ZSB0aGUKKyAgJSBmb250IGluc3RhbGxlZC4KKyAgJSAKKyAgJSBUaGVyZSBpcyBvbmx5IG9uZSBkZXNpZ25lZCBzaXplIChub21pbmFsIDEwcHQpLCBzbyB3ZSBhbHdheXMgc2NhbGUKKyAgJSB0aGF0IHRvIHRoZSBjdXJyZW50IG5vbWluYWwgc2l6ZS4KKyAgJSAKKyAgJSBCeSB0aGUgd2F5LCBzaW1wbHkgdXNpbmcgImF0IDFlbSIgd29ya3MgZm9yIGNtcjEwIGFuZCB0aGUgbGlrZSwgYnV0CisgICUgZG9lcyBub3Qgd29yayBmb3IgY21ieDEwIGFuZCBvdGhlciBleHRlbmRlZC9zaHJ1bmtlbiBmb250cy4KKyAgJSAKKyAgXGRlZlxldXJvc2l6ZXtcY3NuYW1lXGN1cmZvbnRzaXplIG5vbWluYWxzaXplXGVuZGNzbmFtZX0lCisgICUKKyAgXGlmeFxjdXJmb250c3R5bGVcYmZzdHlsZW5hbWUgCisgICAgJSBib2xkOgorICAgIFxmb250XHRoaXNldXJvZm9udCA9IFxpZnVzaW5naXR7ZmV5Ym8xMH17ZmV5YnIxMH0gYXQgXGV1cm9zaXplCisgIFxlbHNlIAorICAgICUgcmVndWxhcjoKKyAgICBcZm9udFx0aGlzZXVyb2ZvbnQgPSBcaWZ1c2luZ2l0e2ZleW1vMTB9e2ZleW1yMTB9IGF0IFxldXJvc2l6ZQorICBcZmkKKyAgXHRoaXNldXJvZm9udAorfQorCislIEByZWdpc3RlcmVkc3ltYm9sIC0gUiBpbiBhIGNpcmNsZS4gIFRoZSBmb250IGZvciB0aGUgUiBzaG91bGQgcmVhbGx5CislIGJlIHNtYWxsZXIgeWV0LCBidXQgbGxsc2l6ZSBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8gZm9yIG5vdy4KKyUgQWRhcHRlZCBmcm9tIHRoZSBwbGFpbi50ZXggZGVmaW5pdGlvbiBvZiBcY29weXJpZ2h0LgorJQorXGRlZlxyZWdpc3RlcmVkc3ltYm9seyUKKyAgJF57e1xvb2FsaWdue1xoZmlsXHJhaXNlLjA3ZXhcaGJveHtcc2VsZWN0Zm9udHNcbGxsc2l6ZSBSfSUKKyAgICAgICAgICAgICAgIFxoZmlsXGNyY3JcT3JifX0lCisgICAgfSQlCit9CisKKyUgTGF1cmVudCBTaWViZW5tYW5uIHJlcG9ydHMgXE9yYiB1bmRlZmluZWQgd2l0aDoKKyUgIFRleHR1cmVzIDEuNy43IChwcmVsb2FkZWQgZm9ybWF0PXBsYWluIDkzLjEwLjE0KSAgKDY4SykgIDE2IEFQUiAyMDA0IDAyOjM4CislIHNvIHdlJ2xsIGRlZmluZSBpdCBpZiBuZWNlc3NhcnkuCislIAorXGlmeFxPcmJcdW5kZWZpbmVkCitcZGVmXE9yYntcbWF0aGhleGJveDIwRH0KK1xmaQorCisKK1xtZXNzYWdle3BhZ2UgaGVhZGluZ3MsfQorCitcbmV3c2tpcFx0aXRsZXBhZ2V0b3BnbHVlIFx0aXRsZXBhZ2V0b3BnbHVlID0gMS41aW4KK1xuZXdza2lwXHRpdGxlcGFnZWJvdHRvbWdsdWUgXHRpdGxlcGFnZWJvdHRvbWdsdWUgPSAycGMKKworJSBGaXJzdCB0aGUgdGl0bGUgcGFnZS4gIE11c3QgZG8gQHNldHRpdGxlIGJlZm9yZSBAdGl0bGVwYWdlLgorXG5ld2lmXGlmc2VlbmF1dGhvcgorXG5ld2lmXGlmZmluaXNoZWR0aXRsZXBhZ2UKKworJSBEbyBhbiBpbXBsaWNpdCBAY29udGVudHMgb3IgQHNob3J0Y29udGVudHMgYWZ0ZXIgQGVuZCB0aXRsZXBhZ2UgaWYgdGhlCislIHVzZXIgc2F5cyBAc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZSBvciBAc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlLgorJQorXG5ld2lmXGlmc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZQorIFxsZXRcc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZSA9IFxzZXRjb250ZW50c2FmdGVydGl0bGVwYWdldHJ1ZQorXG5ld2lmXGlmc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgXGxldFxzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UgPSBcc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdldHJ1ZQorCitccGFyc2VhcmdkZWZcc2hvcnR0aXRsZXBhZ2V7XGJlZ2luZ3JvdXBcaGJveHt9XHZza2lwIDEuNWluIFxjaGFwcm0gXGNlbnRlcmxpbmV7IzF9JQorICAgICAgICBcZW5kZ3JvdXBccGFnZVxoYm94e31ccGFnZX0KKworXGVudmRlZlx0aXRsZXBhZ2V7JQorICAlIE9wZW4gb25lIGV4dHJhIGdyb3VwLCBhcyB3ZSB3YW50IHRvIGNsb3NlIGl0IGluIHRoZSBtaWRkbGUgb2YgXEV0aXRsZXBhZ2UuCisgIFxiZWdpbmdyb3VwCisgICAgXHBhcmluZGVudD0wcHQgXHRleHRmb250cworICAgICUgTGVhdmUgc29tZSBzcGFjZSBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHBhZ2UuCisgICAgXHZnbHVlXHRpdGxlcGFnZXRvcGdsdWUKKyAgICAlIE5vIHJ1bGUgYXQgcGFnZSBib3R0b20gdW5sZXNzIHdlIHByaW50IG9uZSBhdCB0aGUgdG9wIHdpdGggQHRpdGxlLgorICAgIFxmaW5pc2hlZHRpdGxlcGFnZXRydWUKKyAgICAlCisgICAgJSBNb3N0IHRpdGxlIGBgcGFnZXMnJyBhcmUgYWN0dWFsbHkgdHdvIHBhZ2VzIGxvbmcsIHdpdGggc3BhY2UKKyAgICAlIGF0IHRoZSB0b3Agb2YgdGhlIHNlY29uZC4gIFdlIGRvbid0IHdhbnQgdGhlIHJhZ2dlZCBsZWZ0IG9uIHRoZSBzZWNvbmQuCisgICAgXGxldFxvbGRwYWdlID0gXHBhZ2UKKyAgICBcZGVmXHBhZ2V7JQorICAgICAgXGlmZmluaXNoZWR0aXRsZXBhZ2VcZWxzZQorCSBcZmluaXNodGl0bGVwYWdlCisgICAgICBcZmkKKyAgICAgIFxsZXRccGFnZSA9IFxvbGRwYWdlCisgICAgICBccGFnZQorICAgICAgXG51bGwKKyAgICB9JQorfQorCitcZGVmXEV0aXRsZXBhZ2V7JQorICAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKKwlcZmluaXNodGl0bGVwYWdlCisgICAgXGZpCisgICAgJSBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhlIHBhZ2UgYnJlYWsgYmVmb3JlIGVuZGluZyB0aGUgZ3JvdXAsCisgICAgJSBiZWNhdXNlIHRoZSBoZWFkbGluZSBhbmQgZm9vdGxpbmUgYXJlIG9ubHkgZW1wdHkgaW5zaWRlIHRoZSBncm91cC4KKyAgICAlIElmIHdlIHVzZSB0aGUgbmV3IGRlZmluaXRpb24gb2YgXHBhZ2UsIHdlIGFsd2F5cyBnZXQgYSBibGFuayBwYWdlCisgICAgJSBhZnRlciB0aGUgdGl0bGUgcGFnZSwgd2hpY2ggd2UgY2VydGFpbmx5IGRvbid0IHdhbnQuCisgICAgXG9sZHBhZ2UKKyAgXGVuZGdyb3VwCisgICUKKyAgJSBOZWVkIHRoaXMgYmVmb3JlIHRoZSBcLi4uYWZ0ZXJ0aXRsZXBhZ2UgY2hlY2tzIHNvIHRoYXQgaWYgdGhleSBhcmUKKyAgJSBpbiBlZmZlY3QgdGhlIHRvYyBwYWdlcyB3aWxsIGNvbWUgb3V0IHdpdGggcGFnZSBudW1iZXJzLgorICBcSEVBRElOR1NvbgorICAlCisgICUgSWYgdGhleSB3YW50IHNob3J0LCB0aGV5IGNlcnRhaW5seSB3YW50IGxvbmcgdG9vLgorICBcaWZzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKKyAgICBcc2hvcnRjb250ZW50cworICAgIFxjb250ZW50cworICAgIFxnbG9iYWxcbGV0XHNob3J0Y29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxjb250ZW50cyA9IFxyZWxheAorICBcZmkKKyAgJQorICBcaWZzZXRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgICAgXGNvbnRlbnRzCisgICAgXGdsb2JhbFxsZXRcY29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxzaG9ydGNvbnRlbnRzID0gXHJlbGF4CisgIFxmaQorfQorCitcZGVmXGZpbmlzaHRpdGxlcGFnZXslCisgIFx2c2tpcDRwdCBcaHJ1bGUgaGVpZ2h0IDJwdCB3aWR0aCBcaHNpemUKKyAgXHZza2lwXHRpdGxlcGFnZWJvdHRvbWdsdWUKKyAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQorfQorCislJSUgTWFjcm9zIHRvIGJlIHVzZWQgd2l0aGluIEB0aXRsZXBhZ2U6CisKK1xsZXRcc3VidGl0bGVybT1cdGVucm0KK1xkZWZcc3VidGl0bGVmb250e1xzdWJ0aXRsZXJtIFxub3JtYWxiYXNlbGluZXNraXAgPSAxM3B0IFxub3JtYWxiYXNlbGluZXN9CisKK1xkZWZcYXV0aG9yZm9udHtcYXV0aG9ycm0gXG5vcm1hbGJhc2VsaW5lc2tpcCA9IDE2cHQgXG5vcm1hbGJhc2VsaW5lcworCQlcbGV0XHR0PVxhdXRob3J0dH0KKworXHBhcnNlYXJnZGVmXHRpdGxleyUKKyAgXGNoZWNrZW52XHRpdGxlcGFnZQorICBcbGVmdGxpbmV7XHRpdGxlZm9udHNccm0gIzF9CisgICUgcHJpbnQgYSBydWxlIGF0IHRoZSBwYWdlIGJvdHRvbSBhbHNvLgorICBcZmluaXNoZWR0aXRsZXBhZ2VmYWxzZQorICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCA0cHQgd2lkdGggXGhzaXplIFx2c2tpcDRwdAorfQorCitccGFyc2VhcmdkZWZcc3VidGl0bGV7JQorICBcY2hlY2tlbnZcdGl0bGVwYWdlCisgIHtcc3VidGl0bGVmb250IFxyaWdodGxpbmV7IzF9fSUKK30KKworJSBAYXV0aG9yIHNob3VsZCBjb21lIGxhc3QsIGJ1dCBtYXkgY29tZSBtYW55IHRpbWVzLgorJSBJdCBjYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBAcXVvdGF0aW9uLgorJQorXHBhcnNlYXJnZGVmXGF1dGhvcnslCisgIFxkZWZcdGVtcHtccXVvdGF0aW9ufSUKKyAgXGlmeFx0aGlzZW52XHRlbXAKKyAgICBcZGVmXHF1b3RhdGlvbmF1dGhvcnsjMX0lIHByaW50ZWQgaW4gXEVxdW90YXRpb24uCisgIFxlbHNlCisgICAgXGNoZWNrZW52XHRpdGxlcGFnZQorICAgIFxpZnNlZW5hdXRob3JcZWxzZSBcdnNraXAgMHB0IHBsdXMgMWZpbGxsIFxzZWVuYXV0aG9ydHJ1ZSBcZmkKKyAgICB7XGF1dGhvcmZvbnQgXGxlZnRsaW5leyMxfX0lCisgIFxmaQorfQorCisKKyUlJSBTZXQgdXAgcGFnZSBoZWFkaW5ncyBhbmQgZm9vdGluZ3MuCisKK1xsZXRcdGhpc3BhZ2U9XGZvbGlvCisKK1xuZXd0b2tzXGV2ZW5oZWFkbGluZSAgICAlIGhlYWRsaW5lIG9uIGV2ZW4gcGFnZXMKK1xuZXd0b2tzXG9kZGhlYWRsaW5lICAgICAlIGhlYWRsaW5lIG9uIG9kZCBwYWdlcworXG5ld3Rva3NcZXZlbmZvb3RsaW5lICAgICUgZm9vdGxpbmUgb24gZXZlbiBwYWdlcworXG5ld3Rva3Ncb2RkZm9vdGxpbmUgICAgICUgZm9vdGxpbmUgb24gb2RkIHBhZ2VzCisKKyUgTm93IG1ha2UgVGVYIHVzZSB0aG9zZSB2YXJpYWJsZXMKK1xoZWFkbGluZT17e1x0ZXh0Zm9udHNccm0gXGlmb2RkXHBhZ2VubyBcdGhlXG9kZGhlYWRsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVsc2UgXHRoZVxldmVuaGVhZGxpbmUgXGZpfX0KK1xmb290bGluZT17e1x0ZXh0Zm9udHNccm0gXGlmb2RkXHBhZ2VubyBcdGhlXG9kZGZvb3RsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVsc2UgXHRoZVxldmVuZm9vdGxpbmUgXGZpfVxIRUFESU5HU2hvb2t9CitcbGV0XEhFQURJTkdTaG9vaz1ccmVsYXgKKworJSBDb21tYW5kcyB0byBzZXQgdGhvc2UgdmFyaWFibGVzLgorJSBGb3IgZXhhbXBsZSwgdGhpcyBpcyB3aGF0ICBAaGVhZGluZ3Mgb24gIGRvZXMKKyUgQGV2ZW5oZWFkaW5nIEB0aGlzdGl0bGV8QHRoaXNwYWdlfEB0aGlzY2hhcHRlcgorJSBAb2RkaGVhZGluZyBAdGhpc2NoYXB0ZXJ8QHRoaXNwYWdlfEB0aGlzdGl0bGUKKyUgQGV2ZW5mb290aW5nIEB0aGlzZmlsZXx8CislIEBvZGRmb290aW5nIHx8QHRoaXNmaWxlCisKKworXGRlZlxldmVuaGVhZGluZ3tccGFyc2VhcmdcZXZlbmhlYWRpbmd4eHh9CitcZGVmXGV2ZW5oZWFkaW5neHh4ICMxe1xldmVuaGVhZGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcZXZlbmhlYWRpbmd5eXkgIzFcfCMyXHwjM1x8IzRcZmluaXNoeyUKK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtccmxhcHtcY2VudGVybGluZXsjMn19XGxpbmV7IzFcaGZpbCMzfX19CisKK1xkZWZcb2RkaGVhZGluZ3tccGFyc2Vhcmdcb2RkaGVhZGluZ3h4eH0KK1xkZWZcb2RkaGVhZGluZ3h4eCAjMXtcb2RkaGVhZGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcb2RkaGVhZGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQorXGdsb2JhbFxvZGRoZWFkbGluZT17XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319fQorCitccGFyc2VhcmdkZWZcZXZlcnloZWFkaW5ne1xvZGRoZWFkaW5neHh4eyMxfVxldmVuaGVhZGluZ3h4eHsjMX19JQorCitcZGVmXGV2ZW5mb290aW5ne1xwYXJzZWFyZ1xldmVuZm9vdGluZ3h4eH0KK1xkZWZcZXZlbmZvb3Rpbmd4eHggIzF7XGV2ZW5mb290aW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxldmVuZm9vdGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQorXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KKworXGRlZlxvZGRmb290aW5ne1xwYXJzZWFyZ1xvZGRmb290aW5neHh4fQorXGRlZlxvZGRmb290aW5neHh4ICMxe1xvZGRmb290aW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxvZGRmb290aW5neXl5ICMxXHwjMlx8IzNcfCM0XGZpbmlzaHslCisgIFxnbG9iYWxcb2RkZm9vdGxpbmUgPSB7XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319JQorICAlCisgICUgTGVhdmUgc29tZSBzcGFjZSBmb3IgdGhlIGZvb3RsaW5lLiAgSG9wZWZ1bGx5IG9rIHRvIGFzc3VtZQorICAlIEBldmVuZm9vdGluZyB3aWxsIG5vdCBiZSB1c2VkIGJ5IGl0c2VsZi4KKyAgXGdsb2JhbFxhZHZhbmNlXHBhZ2VoZWlnaHQgYnkgLVxiYXNlbGluZXNraXAKKyAgXGdsb2JhbFxhZHZhbmNlXHZzaXplIGJ5IC1cYmFzZWxpbmVza2lwCit9CisKK1xwYXJzZWFyZ2RlZlxldmVyeWZvb3Rpbmd7XG9kZGZvb3Rpbmd4eHh7IzF9XGV2ZW5mb290aW5neHh4eyMxfX0KKworCislIEBoZWFkaW5ncyBkb3VibGUgICAgICB0dXJucyBoZWFkaW5ncyBvbiBmb3IgZG91YmxlLXNpZGVkIHByaW50aW5nLgorJSBAaGVhZGluZ3Mgc2luZ2xlICAgICAgdHVybnMgaGVhZGluZ3Mgb24gZm9yIHNpbmdsZS1zaWRlZCBwcmludGluZy4KKyUgQGhlYWRpbmdzIG9mZiAgICAgICAgIHR1cm5zIHRoZW0gb2ZmLgorJSBAaGVhZGluZ3Mgb24gICAgICAgICAgc2FtZSBhcyBAaGVhZGluZ3MgZG91YmxlLCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4KKyUgQGhlYWRpbmdzIGFmdGVyICAgICAgIHR1cm5zIG9uIGRvdWJsZS1zaWRlZCBoZWFkaW5ncyBhZnRlciB0aGlzIHBhZ2UuCislIEBoZWFkaW5ncyBkb3VibGVhZnRlciB0dXJucyBvbiBkb3VibGUtc2lkZWQgaGVhZGluZ3MgYWZ0ZXIgdGhpcyBwYWdlLgorJSBAaGVhZGluZ3Mgc2luZ2xlYWZ0ZXIgdHVybnMgb24gc2luZ2xlLXNpZGVkIGhlYWRpbmdzIGFmdGVyIHRoaXMgcGFnZS4KKyUgQnkgZGVmYXVsdCwgdGhleSBhcmUgb2ZmIGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50LAorJSBhbmQgdHVybmVkIGBvbicgYWZ0ZXIgQGVuZCB0aXRsZXBhZ2UuCisKK1xkZWZcaGVhZGluZ3MgIzEge1xjc25hbWUgSEVBRElOR1MjMVxlbmRjc25hbWV9CisKK1xkZWZcSEVBRElOR1NvZmZ7JQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xoZmlsfSBcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcaGZpbH0gXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9fQorXEhFQURJTkdTb2ZmCislIFdoZW4gd2UgdHVybiBoZWFkaW5ncyBvbiwgc2V0IHRoZSBwYWdlIG51bWJlciB0byAxLgorJSBGb3IgZG91YmxlLXNpZGVkIHByaW50aW5nLCBwdXQgY3VycmVudCBmaWxlIG5hbWUgaW4gbG93ZXIgbGVmdCBjb3JuZXIsCislIGNoYXB0ZXIgbmFtZSBvbiBpbnNpZGUgdG9wIG9mIHJpZ2h0IGhhbmQgcGFnZXMsIGRvY3VtZW50CislIHRpdGxlIG9uIGluc2lkZSB0b3Agb2YgbGVmdCBoYW5kIHBhZ2VzLCBhbmQgcGFnZSBudW1iZXJzIG9uIG91dHNpZGUgdG9wCislIGVkZ2Ugb2YgYWxsIHBhZ2VzLgorXGRlZlxIRUFESU5HU2RvdWJsZXslCitcZ2xvYmFsXHBhZ2Vubz0xCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcZm9saW9caGZpbFx0aGlzdGl0bGV9fQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBvZGRwYWdlCit9CitcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwcGFnZXIKKworJSBGb3Igc2luZ2xlLXNpZGVkIHByaW50aW5nLCBjaGFwdGVyIHRpdGxlIGdvZXMgYWNyb3NzIHRvcCBsZWZ0IG9mIHBhZ2UsCislIHBhZ2UgbnVtYmVyIG9uIHRvcCByaWdodC4KK1xkZWZcSEVBRElOR1NzaW5nbGV7JQorXGdsb2JhbFxwYWdlbm89MQorXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9CitcZ2xvYmFsXGV2ZW5oZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBwYWdlcgorfQorXGRlZlxIRUFESU5HU29ue1xIRUFESU5HU2RvdWJsZX0KKworXGRlZlxIRUFESU5HU2FmdGVye1xsZXRcSEVBRElOR1Nob29rPVxIRUFESU5HU2RvdWJsZXh9CitcbGV0XEhFQURJTkdTZG91YmxlYWZ0ZXI9XEhFQURJTkdTYWZ0ZXIKK1xkZWZcSEVBRElOR1Nkb3VibGV4eyUKK1xnbG9iYWxcZXZlbmZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcb2RkZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xsaW5le1xmb2xpb1xoZmlsXHRoaXN0aXRsZX19CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcG9kZHBhZ2UKK30KKworXGRlZlxIRUFESU5HU3NpbmdsZWFmdGVye1xsZXRcSEVBRElOR1Nob29rPVxIRUFESU5HU3NpbmdsZXh9CitcZGVmXEhFQURJTkdTc2luZ2xleHslCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCit9CisKKyUgU3Vicm91dGluZXMgdXNlZCBpbiBnZW5lcmF0aW5nIGhlYWRpbmdzCislIFRoaXMgcHJvZHVjZXMgRGF5IE1vbnRoIFllYXIgc3R5bGUgb2Ygb3V0cHV0LgorJSBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLCBpbiBjYXNlIGEgdHhpLT8/LnRleCBmaWxlIGhhcyBzZXQKKyUgdXAgYSBkaWZmZXJlbnQgZm9ybWF0IChlLmcuLCB0eGktY3MudGV4IGRvZXMgdGhpcykuCitcaWZ4XHRvZGF5XHVuZGVmaW5lZAorXGRlZlx0b2RheXslCisgIFxudW1iZXJcZGF5XHNwYWNlCisgIFxpZmNhc2VcbW9udGgKKyAgXG9yXHB1dHdvcmRNSmFuXG9yXHB1dHdvcmRNRmViXG9yXHB1dHdvcmRNTWFyXG9yXHB1dHdvcmRNQXByCisgIFxvclxwdXR3b3JkTU1heVxvclxwdXR3b3JkTUp1blxvclxwdXR3b3JkTUp1bFxvclxwdXR3b3JkTUF1ZworICBcb3JccHV0d29yZE1TZXBcb3JccHV0d29yZE1PY3Rcb3JccHV0d29yZE1Ob3Zcb3JccHV0d29yZE1EZWMKKyAgXGZpCisgIFxzcGFjZVxudW1iZXJceWVhcn0KK1xmaQorCislIEBzZXR0aXRsZSBsaW5lLi4uICBzcGVjaWZpZXMgdGhlIHRpdGxlIG9mIHRoZSBkb2N1bWVudCwgZm9yIGhlYWRpbmdzLgorJSBJdCBnZW5lcmF0ZXMgbm8gb3V0cHV0IG9mIGl0cyBvd24uCitcZGVmXHRoaXN0aXRsZXtccHV0d29yZE5vVGl0bGV9CitcZGVmXHNldHRpdGxle1xwYXJzZWFyZ3tcZ2RlZlx0aGlzdGl0bGV9fQorCisKK1xtZXNzYWdle3RhYmxlcyx9CislIFRhYmxlcyAtLSBAdGFibGUsIEBmdGFibGUsIEB2dGFibGUsIEBpdGVtKHgpLgorCislIGRlZmF1bHQgaW5kZW50YXRpb24gb2YgdGFibGUgdGV4dAorXG5ld2RpbWVuXHRhYmxlaW5kZW50IFx0YWJsZWluZGVudD0uOGluCislIGRlZmF1bHQgaW5kZW50YXRpb24gb2YgQGl0ZW1pemUgYW5kIEBlbnVtZXJhdGUgdGV4dAorXG5ld2RpbWVuXGl0ZW1pbmRlbnQgIFxpdGVtaW5kZW50PS4zaW4KKyUgbWFyZ2luIGJldHdlZW4gZW5kIG9mIHRhYmxlIGl0ZW0gYW5kIHN0YXJ0IG9mIHRhYmxlIHRleHQuCitcbmV3ZGltZW5caXRlbW1hcmdpbiAgXGl0ZW1tYXJnaW49LjFpbgorCislIHVzZWQgaW50ZXJuYWxseSBmb3IgXGl0ZW1pbmRlbnQgbWludXMgXGl0ZW1tYXJnaW4KK1xuZXdkaW1lblxpdGVtbWF4CisKKyUgTm90ZSBAdGFibGUsIEBmdGFibGUsIGFuZCBAdnRhYmxlIGRlZmluZSBAaXRlbSwgQGl0ZW14LCBldGMuLCB3aXRoCislIHRoZXNlIGRlZnMuCislIFRoZXkgYWxzbyBkZWZpbmUgXGl0ZW1pbmRleAorJSB0byBpbmRleCB0aGUgaXRlbSBuYW1lIGluIHdoYXRldmVyIG1hbm5lciBpcyBkZXNpcmVkIChwZXJoYXBzIG5vbmUpLgorCitcbmV3aWZcaWZpdGVteG5lZWRzbmVnYXRpdmV2c2tpcAorCitcZGVmXGl0ZW14cGFye1xwYXJcaWZpdGVteG5lZWRzbmVnYXRpdmV2c2tpcFxub2JyZWFrXHZza2lwLVxwYXJza2lwXG5vYnJlYWtcZml9CisKK1xkZWZcaW50ZXJuYWxCaXRlbXtcc21hbGxicmVhayBccGFyc2VhcmdcaXRlbXp6en0KK1xkZWZcaW50ZXJuYWxCaXRlbXh7XGl0ZW14cGFyIFxwYXJzZWFyZ1xpdGVtenp6fQorCitcZGVmXGl0ZW16enogIzF7XGJlZ2luZ3JvdXAgJQorICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAorICBcYWR2YW5jZVxoc2l6ZSBieSAtXHRhYmxlaW5kZW50CisgIFxzZXRib3gwPVxoYm94e1xpdGVtaW5kaWNhdGV7IzF9fSUKKyAgXGl0ZW1pbmRleHsjMX0lCisgIFxub2JyZWFrICUgVGhpcyBwcmV2ZW50cyBhIGJyZWFrIGJlZm9yZSBAaXRlbXguCisgICUKKyAgJSBJZiB0aGUgaXRlbSB0ZXh0IGRvZXMgbm90IGZpdCBpbiB0aGUgc3BhY2Ugd2UgaGF2ZSwgcHV0IGl0IG9uIGEgbGluZQorICAlIGJ5IGl0c2VsZiwgYW5kIGRvIG5vdCBhbGxvdyBhIHBhZ2UgYnJlYWsgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGF0CisgICUgbGluZS4gIFdlIGRvIG5vdCBzdGFydCBhIHBhcmFncmFwaCBoZXJlIGJlY2F1c2UgdGhlbiBpZiB0aGUgbmV4dAorICAlIGNvbW1hbmQgaXMsIGUuZy4sIEBraW5kZXgsIHRoZSB3aGF0c2l0IHdvdWxkIGdldCBwdXQgaW50byB0aGUKKyAgJSBob3Jpem9udGFsIGxpc3Qgb24gYSBsaW5lIGJ5IGl0c2VsZiwgcmVzdWx0aW5nIGluIGV4dHJhIGJsYW5rIHNwYWNlLgorICBcaWZkaW0gXHdkMD5caXRlbW1heAorICAgICUKKyAgICAlIE1ha2UgdGhpcyBhIHBhcmFncmFwaCBzbyB3ZSBnZXQgdGhlIFxwYXJza2lwIGdsdWUgYW5kIHdyYXBwaW5nLAorICAgICUgYnV0IGxlYXZlIGl0IHJhZ2dlZC1yaWdodC4KKyAgICBcYmVnaW5ncm91cAorICAgICAgXGFkdmFuY2VcbGVmdHNraXAgYnktXHRhYmxlaW5kZW50CisgICAgICBcYWR2YW5jZVxoc2l6ZSBieVx0YWJsZWluZGVudAorICAgICAgXGFkdmFuY2VccmlnaHRza2lwIGJ5MHB0IHBsdXMxZmlsCisgICAgICBcbGVhdmV2bW9kZVx1bmhib3gwXHBhcgorICAgIFxlbmRncm91cAorICAgICUKKyAgICAlIFdlJ3JlIGdvaW5nIHRvIGJlIHN0YXJ0aW5nIGEgcGFyYWdyYXBoLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGUKKyAgICAlIFxwYXJza2lwIGdsdWUgLS0gbG9naWNhbGx5IGl0J3MgcGFydCBvZiB0aGUgQGl0ZW0gd2UganVzdCBzdGFydGVkLgorICAgIFxub2JyZWFrIFx2c2tpcC1ccGFyc2tpcAorICAgICUKKyAgICAlIFN0b3AgYSBwYWdlIGJyZWFrIGF0IHRoZSBccGFyc2tpcCBnbHVlIGNvbWluZyB1cC4gIEhvd2V2ZXIsIGlmCisgICAgJSB3aGF0IGZvbGxvd3MgaXMgYW4gZW52aXJvbm1lbnQgc3VjaCBhcyBAZXhhbXBsZSwgdGhlcmUgd2lsbCBiZSBubworICAgICUgXHBhcnNraXAgZ2x1ZTsgdGhlbiB0aGUgbmVnYXRpdmUgdnNraXAgd2UganVzdCBpbnNlcnRlZCB3b3VsZAorICAgICUgY2F1c2UgdGhlIGV4YW1wbGUgYW5kIHRoZSBpdGVtIHRvIGNyYXNoIHRvZ2V0aGVyLiAgU28gd2UgdXNlIHRoaXMKKyAgICAlIGJpemFycmUgdmFsdWUgb2YgMTAwMDEgYXMgYSBzaWduYWwgdG8gXGFib3ZlZW52YnJlYWsgdG8gaW5zZXJ0CisgICAgJSBccGFyc2tpcCBnbHVlIGFmdGVyIGFsbC4gIFNlY3Rpb24gdGl0bGVzIGFyZSBoYW5kbGVkIHRoaXMgd2F5IGFsc28uCisgICAgJSAKKyAgICBccGVuYWx0eSAxMDAwMQorICAgIFxlbmRncm91cAorICAgIFxpdGVteG5lZWRzbmVnYXRpdmV2c2tpcGZhbHNlCisgIFxlbHNlCisgICAgJSBUaGUgaXRlbSB0ZXh0IGZpdHMgaW50byB0aGUgc3BhY2UuICBTdGFydCBhIHBhcmFncmFwaCwgc28gdGhhdCB0aGUKKyAgICAlIGZvbGxvd2luZyB0ZXh0IChpZiBhbnkpIHdpbGwgZW5kIHVwIG9uIHRoZSBzYW1lIGxpbmUuCisgICAgXG5vaW5kZW50CisgICAgJSBEbyB0aGlzIHdpdGgga2VybnMgYW5kIFx1bmhib3ggc28gdGhhdCBpZiB0aGVyZSBpcyBhIGZvb3Rub3RlIGluCisgICAgJSB0aGUgaXRlbSB0ZXh0LCBpdCBjYW4gbWlncmF0ZSB0byB0aGUgbWFpbiB2ZXJ0aWNhbCBsaXN0IGFuZAorICAgICUgZXZlbnR1YWxseSBiZSBwcmludGVkLgorICAgIFxub2JyZWFrXGtlcm4tXHRhYmxlaW5kZW50CisgICAgXGRpbWVuMCA9IFxpdGVtbWF4ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGl0ZW1tYXJnaW4gXGFkdmFuY2VcZGltZW4wIGJ5IC1cd2QwCisgICAgXHVuaGJveDAKKyAgICBcbm9icmVha1xrZXJuXGRpbWVuMAorICAgIFxlbmRncm91cAorICAgIFxpdGVteG5lZWRzbmVnYXRpdmV2c2tpcHRydWUKKyAgXGZpCit9CisKK1xkZWZcaXRlbXtcZXJybWVzc2FnZXtAaXRlbSB3aGlsZSBub3QgaW4gYSBsaXN0IGVudmlyb25tZW50fX0KK1xkZWZcaXRlbXh7XGVycm1lc3NhZ2V7QGl0ZW14IHdoaWxlIG5vdCBpbiBhIGxpc3QgZW52aXJvbm1lbnR9fQorCislIEB0YWJsZSwgQGZ0YWJsZSwgQHZ0YWJsZS4KK1xlbnZkZWZcdGFibGV7JQorICBcbGV0XGl0ZW1pbmRleFxnb2JibGUKKyAgXHRhYmxlY2hlY2t7dGFibGV9JQorfQorXGVudmRlZlxmdGFibGV7JQorICBcZGVmXGl0ZW1pbmRleCAjIzF7XGRvaW5kIHtmbn17XGNvZGV7IyMxfX19JQorICBcdGFibGVjaGVja3tmdGFibGV9JQorfQorXGVudmRlZlx2dGFibGV7JQorICBcZGVmXGl0ZW1pbmRleCAjIzF7XGRvaW5kIHt2cn17XGNvZGV7IyMxfX19JQorICBcdGFibGVjaGVja3t2dGFibGV9JQorfQorXGRlZlx0YWJsZWNoZWNrIzF7JQorICBcaWZudW0gXHRoZVxjYXRjb2RlYFxeXk09XGFjdGl2ZQorICAgIFxlbmRncm91cAorICAgIFxlcnJtZXNzYWdle1RoaXMgY29tbWFuZCB3b24ndCB3b3JrIGluIHRoaXMgY29udGV4dDsgcGVyaGFwcyB0aGUgcHJvYmxlbSBpcworICAgICAgdGhhdCB3ZSBhcmUgXGluZW52aXJvbm1lbnRcdGhpc2Vudn0lCisgICAgXGRlZlxuZXh0e1xkb2lnbm9yZXsjMX19JQorICBcZWxzZQorICAgIFxsZXRcbmV4dFx0YWJsZXgKKyAgXGZpCisgIFxuZXh0Cit9CitcZGVmXHRhYmxleCMxeyUKKyAgXGRlZlxpdGVtaW5kaWNhdGV7IzF9JQorICBccGFyc2VhcmdcdGFibGV5Cit9CitcZGVmXHRhYmxleSMxeyUKKyAgeyUKKyAgICBcbWFrZXZhbHVlZXhwYW5kYWJsZQorICAgIFxlZGVmXHRlbXB7XG5vZXhwYW5kXHRhYmxleiAjMVxzcGFjZVxzcGFjZVxzcGFjZX0lCisgICAgXGV4cGFuZGFmdGVyCisgIH1cdGVtcCBcZW5kdGFibGV6Cit9CitcZGVmXHRhYmxleiAjMSAjMiAjMyAjNFxlbmR0YWJsZXp7JQorICBcYWJvdmVlbnZicmVhaworICBcaWZudW0gMCMxPjAgXGFkdmFuY2UgXGxlZnRza2lwIGJ5ICMxXG1pbCBcZmkKKyAgXGlmbnVtIDAjMj4wIFx0YWJsZWluZGVudD0jMlxtaWwgXGZpCisgIFxpZm51bSAwIzM+MCBcYWR2YW5jZSBccmlnaHRza2lwIGJ5ICMzXG1pbCBcZmkKKyAgXGl0ZW1tYXg9XHRhYmxlaW5kZW50CisgIFxhZHZhbmNlIFxpdGVtbWF4IGJ5IC1caXRlbW1hcmdpbgorICBcYWR2YW5jZSBcbGVmdHNraXAgYnkgXHRhYmxlaW5kZW50CisgIFxleGRlbnRhbW91bnQ9XHRhYmxlaW5kZW50CisgIFxwYXJpbmRlbnQgPSAwcHQKKyAgXHBhcnNraXAgPSBcc21hbGxza2lwYW1vdW50CisgIFxpZmRpbSBccGFyc2tpcD0wcHQgXHBhcnNraXA9MnB0IFxmaQorICBcbGV0XGl0ZW0gPSBcaW50ZXJuYWxCaXRlbQorICBcbGV0XGl0ZW14ID0gXGludGVybmFsQml0ZW14Cit9CitcZGVmXEV0YWJsZXtcZW5kZ3JhZlxhZnRlcmVudmJyZWFrfQorXGxldFxFZnRhYmxlXEV0YWJsZQorXGxldFxFdnRhYmxlXEV0YWJsZQorXGxldFxFaXRlbWl6ZVxFdGFibGUKK1xsZXRcRWVudW1lcmF0ZVxFdGFibGUKKworJSBUaGlzIGlzIHRoZSBjb3VudGVyIHVzZWQgYnkgQGVudW1lcmF0ZSwgd2hpY2ggaXMgcmVhbGx5IEBpdGVtaXplCisKK1xuZXdjb3VudCBcaXRlbW5vCisKK1xlbnZkZWZcaXRlbWl6ZXtccGFyc2VhcmdcZG9pdGVtaXplfQorCitcZGVmXGRvaXRlbWl6ZSMxeyUKKyAgXGFib3ZlZW52YnJlYWsKKyAgXGl0ZW1tYXg9XGl0ZW1pbmRlbnQKKyAgXGFkdmFuY2VcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4KKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGl0ZW1pbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1caXRlbWluZGVudAorICBccGFyaW5kZW50PTBwdAorICBccGFyc2tpcD1cc21hbGxza2lwYW1vdW50CisgIFxpZmRpbVxwYXJza2lwPTBwdCBccGFyc2tpcD0ycHQgXGZpCisgIFxkZWZcaXRlbWNvbnRlbnRzeyMxfSUKKyAgJSBAaXRlbWl6ZSB3aXRoIG5vIGFyZyBpcyBlcXVpdmFsZW50IHRvIEBpdGVtaXplIEBidWxsZXQuCisgIFxpZnhcaXRlbWNvbnRlbnRzXGVtcHR5XGRlZlxpdGVtY29udGVudHN7XGJ1bGxldH1cZmkKKyAgXGxldFxpdGVtPVxpdGVtaXplaXRlbQorfQorCislIERlZmluaXRpb24gb2YgQGl0ZW0gd2hpbGUgaW5zaWRlIEBpdGVtaXplIGFuZCBAZW51bWVyYXRlLgorJQorXGRlZlxpdGVtaXplaXRlbXslCisgIFxhZHZhbmNlXGl0ZW1ubyBieSAxICAlIGZvciBlbnVtZXJhdGlvbnMKKyAge1xsZXRccGFyPVxlbmRncmFmIFxzbWFsbGJyZWFrfSUgcmVhc29uYWJsZSBwbGFjZSB0byBicmVhaworICB7JQorICAgJSBJZiB0aGUgZG9jdW1lbnQgaGFzIGFuIEBpdGVtaXplIGRpcmVjdGx5IGFmdGVyIGEgc2VjdGlvbiB0aXRsZSwgYQorICAgJSBcbm9icmVhayB3aWxsIGJlIGxhc3Qgb24gdGhlIGxpc3QsIGFuZCBcc2VjdGlvbmhlYWRpbmcgd2lsbCBoYXZlCisgICAlIGRvbmUgYSBcdnNraXAtXHBhcnNraXAuICBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gemVybworICAgJSBwYXJza2lwLCBvciB0aGUgaXRlbSB0ZXh0IHdpbGwgY3Jhc2ggd2l0aCB0aGUgaGVhZGluZy4gIE9uIHRoZQorICAgJSBvdGhlciBoYW5kLCB3aGVuIHRoZXJlIGlzIG5vcm1hbCB0ZXh0IHByZWNlZGluZyB0aGUgaXRlbSAoYXMgdGhlcmUKKyAgICUgdXN1YWxseSBpcyksIHdlIGRvIHdhbnQgdG8gemVybyBwYXJza2lwLCBvciB0aGVyZSB3b3VsZCBiZSB0b28gbXVjaAorICAgJSBzcGFjZS4gIEluIHRoYXQgY2FzZSwgd2Ugd29uJ3QgaGF2ZSBhIFxub2JyZWFrIGJlZm9yZS4gIEF0IGxlYXN0CisgICAlIHRoYXQncyB0aGUgdGhlb3J5LgorICAgXGlmbnVtXGxhc3RwZW5hbHR5PDEwMDAwIFxwYXJza2lwPTBpbiBcZmkKKyAgIFxub2luZGVudAorICAgXGhib3ggdG8gMHB0e1xoc3MgXGl0ZW1jb250ZW50cyBca2VyblxpdGVtbWFyZ2lufSUKKyAgIFx2YWRqdXN0e1xwZW5hbHR5IDEyMDB9fSUgbm90IGdvb2QgdG8gYnJlYWsgYWZ0ZXIgZmlyc3QgbGluZSBvZiBpdGVtLgorICBcZmx1c2hjcgorfQorCislIFxzcGxpdG9mZiBUT0tFTlNcZW5kbWFyayBkZWZpbmVzIFxmaXJzdCB0byBiZSB0aGUgZmlyc3QgdG9rZW4gaW4KKyUgVE9LRU5TLCBhbmQgXHJlc3QgdG8gYmUgdGhlIHJlbWFpbmRlci4KKyUKK1xkZWZcc3BsaXRvZmYjMSMyXGVuZG1hcmt7XGRlZlxmaXJzdHsjMX1cZGVmXHJlc3R7IzJ9fSUKKworJSBBbGxvdyBhbiBvcHRpb25hbCBhcmd1bWVudCBvZiBhbiB1cHBlcmNhc2UgbGV0dGVyLCBsb3dlcmNhc2UgbGV0dGVyLAorJSBvciBudW1iZXIsIHRvIHNwZWNpZnkgdGhlIGZpcnN0IGxhYmVsIGluIHRoZSBlbnVtZXJhdGVkIGxpc3QuICBObworJSBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyBgMScuCislCitcZW52cGFyc2VhcmdkZWZcZW51bWVyYXRle1xlbnVtZXJhdGV5ICMxICBcZW5kZW51bWVyYXRleX0KK1xkZWZcZW51bWVyYXRleSAjMSAjMlxlbmRlbnVtZXJhdGV5eyUKKyAgJSBJZiB3ZSB3ZXJlIGdpdmVuIG5vIGFyZ3VtZW50LCBwcmV0ZW5kIHdlIHdlcmUgZ2l2ZW4gYDEnLgorICBcZGVmXHRoZWFyZ3sjMX0lCisgIFxpZnhcdGhlYXJnXGVtcHR5IFxkZWZcdGhlYXJnezF9XGZpCisgICUKKyAgJSBEZXRlY3QgaWYgdGhlIGFyZ3VtZW50IGlzIGEgc2luZ2xlIHRva2VuLiAgSWYgc28sIGl0IG1pZ2h0IGJlIGEKKyAgJSBsZXR0ZXIuICBPdGhlcndpc2UsIHRoZSBvbmx5IHZhbGlkIHRoaW5nIGl0IGNhbiBiZSBpcyBhIG51bWJlci4KKyAgJSAoV2Ugd2lsbCBhbHdheXMgaGF2ZSBvbmUgdG9rZW4sIGJlY2F1c2Ugb2YgdGhlIHRlc3Qgd2UganVzdCBtYWRlLgorICAlIFRoaXMgaXMgYSBnb29kIHRoaW5nLCBzaW5jZSBcc3BsaXRvZmYgZG9lc24ndCB3b3JrIGdpdmVuIG5vdGhpbmcgYXQKKyAgJSBhbGwgLS0gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmRlbGltaXRlZC4pCisgIFxleHBhbmRhZnRlclxzcGxpdG9mZlx0aGVhcmdcZW5kbWFyaworICBcaWZ4XHJlc3RcZW1wdHkKKyAgICAlIE9ubHkgb25lIHRva2VuIGluIHRoZSBhcmd1bWVudC4gIEl0IGNvdWxkIHN0aWxsIGJlIGFueXRoaW5nLgorICAgICUgQSBgYGxvd2VyY2FzZSBsZXR0ZXInJyBpcyBvbmUgd2hvc2UgXGxjY29kZSBpcyBub256ZXJvLgorICAgICUgQW4gYGB1cHBlcmNhc2UgbGV0dGVyJycgaXMgb25lIHdob3NlIFxsY2NvZGUgaXMgYm90aCBub256ZXJvLCBhbmQKKyAgICAlICAgbm90IGVxdWFsIHRvIGl0c2VsZi4KKyAgICAlIE90aGVyd2lzZSwgd2UgYXNzdW1lIGl0J3MgYSBudW1iZXIuCisgICAgJQorICAgICUgV2UgbmVlZCB0aGUgXHJlbGF4IGF0IHRoZSBlbmQgb2YgdGhlIFxpZm51bSBsaW5lcyB0byBzdG9wIFRlWCBmcm9tCisgICAgJSBjb250aW51aW5nIHRvIGxvb2sgZm9yIGEgPG51bWJlcj4uCisgICAgJQorICAgIFxpZm51bVxsY2NvZGVcZXhwYW5kYWZ0ZXJgXHRoZWFyZz0wXHJlbGF4CisgICAgICBcbnVtZXJpY2VudW1lcmF0ZSAlIGEgbnVtYmVyICh3ZSBob3BlKQorICAgIFxlbHNlCisgICAgICAlIEl0J3MgYSBsZXR0ZXIuCisgICAgICBcaWZudW1cbGNjb2RlXGV4cGFuZGFmdGVyYFx0aGVhcmc9XGV4cGFuZGFmdGVyYFx0aGVhcmdccmVsYXgKKyAgICAgICAgXGxvd2VyY2FzZWVudW1lcmF0ZSAlIGxvd2VyY2FzZSBsZXR0ZXIKKyAgICAgIFxlbHNlCisgICAgICAgIFx1cHBlcmNhc2VlbnVtZXJhdGUgJSB1cHBlcmNhc2UgbGV0dGVyCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGVsc2UKKyAgICAlIE11bHRpcGxlIHRva2VucyBpbiB0aGUgYXJndW1lbnQuICBXZSBob3BlIGl0J3MgYSBudW1iZXIuCisgICAgXG51bWVyaWNlbnVtZXJhdGUKKyAgXGZpCit9CisKKyUgQW4gQGVudW1lcmF0ZSB3aG9zZSBsYWJlbHMgYXJlIGludGVnZXJzLiAgVGhlIHN0YXJ0aW5nIGludGVnZXIgaXMKKyUgZ2l2ZW4gaW4gXHRoZWFyZy4KKyUKK1xkZWZcbnVtZXJpY2VudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcdGhlYXJnCisgIFxzdGFydGVudW1lcmF0aW9ue1x0aGVcaXRlbW5vfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKGxvd2VyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXGxvd2VyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIGxvd2VyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9JQorICAgIFxmaQorICAgIFxjaGFyXGxjY29kZVxpdGVtbm8KKyAgfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKHVwcGVyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXHVwcGVyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIHVwcGVyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9CisgICAgXGZpCisgICAgXGNoYXJcdWNjb2RlXGl0ZW1ubworICB9JQorfQorCislIENhbGwgXGRvaXRlbWl6ZSwgYWRkaW5nIGEgcGVyaW9kIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgc3VwcGx5aW5nIHRoZQorJSBjb21tb24gbGFzdCB0d28gYXJndW1lbnRzLiAgQWxzbyBzdWJ0cmFjdCBvbmUgZnJvbSB0aGUgaW5pdGlhbCB2YWx1ZSBpbgorJSBcaXRlbW5vLCBzaW5jZSBAaXRlbSBpbmNyZW1lbnRzIFxpdGVtbm8uCislCitcZGVmXHN0YXJ0ZW51bWVyYXRpb24jMXslCisgIFxhZHZhbmNlXGl0ZW1ubyBieSAtMQorICBcZG9pdGVtaXpleyMxLn1cZmx1c2hjcgorfQorCislIEBhbHBoYWVudW1lcmF0ZSBhbmQgQGNhcHNlbnVtZXJhdGUgYXJlIGFiYnJldmlhdGlvbnMgZm9yIGdpdmluZyBhbiBhcmcKKyUgdG8gQGVudW1lcmF0ZS4KKyUKK1xkZWZcYWxwaGFlbnVtZXJhdGV7XGVudW1lcmF0ZXthfX0KK1xkZWZcY2Fwc2VudW1lcmF0ZXtcZW51bWVyYXRle0F9fQorXGRlZlxFYWxwaGFlbnVtZXJhdGV7XEVlbnVtZXJhdGV9CitcZGVmXEVjYXBzZW51bWVyYXRle1xFZW51bWVyYXRlfQorCisKKyUgQG11bHRpdGFibGUgbWFjcm9zCislIEFteSBIZW5kcmlja3NvbiwgOC8xOC85NCwgMy82Lzk2CislCislIEBtdWx0aXRhYmxlIC4uLiBAZW5kIG11bHRpdGFibGUgd2lsbCBtYWtlIGFzIG1hbnkgY29sdW1ucyBhcyBkZXNpcmVkLgorJSBDb250ZW50cyBvZiBlYWNoIGNvbHVtbiB3aWxsIHdyYXAgYXQgd2lkdGggZ2l2ZW4gaW4gcHJlYW1ibGUuICBXaWR0aAorJSBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciB3aXRoIHNhbXBsZSB0ZXh0IGdpdmVuIGluIGEgdGVtcGxhdGUgbGluZSwKKyUgb3IgaW4gcGVyY2VudCBvZiBcaHNpemUsIHRoZSBjdXJyZW50IHdpZHRoIG9mIHRleHQgb24gcGFnZS4KKworJSBUYWJsZSBjYW4gY29udGludWUgb3ZlciBwYWdlcyBidXQgd2lsbCBvbmx5IGJyZWFrIGJldHdlZW4gbGluZXMuCisKKyUgVG8gbWFrZSBwcmVhbWJsZToKKyUKKyUgRWl0aGVyIGRlZmluZSB3aWR0aHMgb2YgY29sdW1ucyBpbiB0ZXJtcyBvZiBwZXJjZW50IG9mIFxoc2l6ZToKKyUgICBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yNSAuMyAuNDUKKyUgICBAaXRlbSAuLi4KKyUKKyUgICBOdW1iZXJzIGZvbGxvd2luZyBAY29sdW1uZnJhY3Rpb25zIGFyZSB0aGUgcGVyY2VudCBvZiB0aGUgdG90YWwKKyUgICBjdXJyZW50IGhzaXplIHRvIGJlIHVzZWQgZm9yIGVhY2ggY29sdW1uLiBZb3UgbWF5IHVzZSBhcyBtYW55CislICAgY29sdW1ucyBhcyBkZXNpcmVkLgorCisKKyUgT3IgdXNlIGEgdGVtcGxhdGU6CislICAgQG11bHRpdGFibGUge0NvbHVtbiAxIHRlbXBsYXRlfSB7Q29sdW1uIDIgdGVtcGxhdGV9IHtDb2x1bW4gMyB0ZW1wbGF0ZX0KKyUgICBAaXRlbSAuLi4KKyUgICB1c2luZyB0aGUgd2lkZXN0IHRlcm0gZGVzaXJlZCBpbiBlYWNoIGNvbHVtbi4KKworJSBFYWNoIG5ldyB0YWJsZSBsaW5lIHN0YXJ0cyB3aXRoIEBpdGVtLCBlYWNoIHN1YnNlcXVlbnQgbmV3IGNvbHVtbgorJSBzdGFydHMgd2l0aCBAdGFiLiBFbXB0eSBjb2x1bW5zIG1heSBiZSBwcm9kdWNlZCBieSBzdXBwbHlpbmcgQHRhYidzCislIHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZW0gZm9yIGFzIG1hbnkgdGltZXMgYXMgZW1wdHkgY29sdW1ucyBhcmUgbmVlZGVkLAorJSBpZSwgQHRhYkB0YWJAdGFiIHdpbGwgcHJvZHVjZSB0d28gZW1wdHkgY29sdW1ucy4KKworJSBAaXRlbSwgQHRhYiBkbyBub3QgbmVlZCB0byBiZSBvbiB0aGVpciBvd24gbGluZXMsIGJ1dCBpdCB3aWxsIG5vdCBodXJ0CislIGlmIHRoZXkgYXJlLgorCislIFNhbXBsZSBtdWx0aXRhYmxlOgorCislICAgQG11bHRpdGFibGUge0NvbHVtbiAxIHRlbXBsYXRlfSB7Q29sdW1uIDIgdGVtcGxhdGV9IHtDb2x1bW4gMyB0ZW1wbGF0ZX0KKyUgICBAaXRlbSBmaXJzdCBjb2wgc3R1ZmYgQHRhYiBzZWNvbmQgY29sIHN0dWZmIEB0YWIgdGhpcmQgY29sCislICAgQGl0ZW0KKyUgICBmaXJzdCBjb2wgc3R1ZmYKKyUgICBAdGFiCislICAgc2Vjb25kIGNvbCBzdHVmZgorJSAgIEB0YWIKKyUgICB0aGlyZCBjb2wKKyUgICBAaXRlbSBmaXJzdCBjb2wgc3R1ZmYgQHRhYiBzZWNvbmQgY29sIHN0dWZmCislICAgQHRhYiBNYW55IHBhcmFncmFwaHMgb2YgdGV4dCBtYXkgYmUgdXNlZCBpbiBhbnkgY29sdW1uLgorJQorJSAgICAgICAgIFRoZXkgd2lsbCB3cmFwIGF0IHRoZSB3aWR0aCBkZXRlcm1pbmVkIGJ5IHRoZSB0ZW1wbGF0ZS4KKyUgICBAaXRlbUB0YWJAdGFiIFRoaXMgd2lsbCBiZSBpbiB0aGlyZCBjb2x1bW4uCislICAgQGVuZCBtdWx0aXRhYmxlCisKKyUgRGVmYXVsdCBkaW1lbnNpb25zIG1heSBiZSByZXNldCBieSB1c2VyLgorJSBAbXVsdGl0YWJsZXBhcnNraXAgaXMgdmVydGljYWwgc3BhY2UgYmV0d2VlbiBwYXJhZ3JhcGhzIGluIHRhYmxlLgorJSBAbXVsdGl0YWJsZXBhcmluZGVudCBpcyBwYXJhZ3JhcGggaW5kZW50IGluIHRhYmxlLgorJSBAbXVsdGl0YWJsZWNvbG1hcmdpbiBpcyBob3Jpem9udGFsIHNwYWNlIHRvIGJlIGxlZnQgYmV0d2VlbiBjb2x1bW5zLgorJSBAbXVsdGl0YWJsZWxpbmVzcGFjZSBpcyBzcGFjZSB0byBsZWF2ZSBiZXR3ZWVuIHRhYmxlIGl0ZW1zLCBiYXNlbGluZQorJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJhc2VsaW5lLgorJSAgIDBwdCBtZWFucyBpdCBkZXBlbmRzIG9uIGN1cnJlbnQgbm9ybWFsIGxpbmUgc3BhY2luZy4KKyUKK1xuZXdza2lwXG11bHRpdGFibGVwYXJza2lwCitcbmV3c2tpcFxtdWx0aXRhYmxlcGFyaW5kZW50CitcbmV3ZGltZW5cbXVsdGl0YWJsZWNvbHNwYWNlCitcbmV3c2tpcFxtdWx0aXRhYmxlbGluZXNwYWNlCitcbXVsdGl0YWJsZXBhcnNraXA9MHB0CitcbXVsdGl0YWJsZXBhcmluZGVudD02cHQKK1xtdWx0aXRhYmxlY29sc3BhY2U9MTJwdAorXG11bHRpdGFibGVsaW5lc3BhY2U9MHB0CisKKyUgTWFjcm9zIHVzZWQgdG8gc2V0IHVwIGhhbGlnbiBwcmVhbWJsZToKKyUKK1xsZXRcZW5kc2V0dXB0YWJsZVxyZWxheAorXGRlZlx4ZW5kc2V0dXB0YWJsZXtcZW5kc2V0dXB0YWJsZX0KK1xsZXRcY29sdW1uZnJhY3Rpb25zXHJlbGF4CitcZGVmXHhjb2x1bW5mcmFjdGlvbnN7XGNvbHVtbmZyYWN0aW9uc30KK1xuZXdpZlxpZnNldHBlcmNlbnQKKworJSAjMSBpcyB0aGUgQGNvbHVtbmZyYWN0aW9uLCB1c3VhbGx5IGEgZGVjaW1hbCBudW1iZXIgbGlrZSAuNSwgYnV0IG1pZ2h0CislIGJlIGp1c3QgMS4gIFdlIGp1c3QgdXNlIGl0LCB3aGF0ZXZlciBpdCBpcy4KKyUKK1xkZWZccGlja3Vwd2hvbGVmcmFjdGlvbiMxIHslCisgIFxnbG9iYWxcYWR2YW5jZVxjb2xjb3VudCBieSAxCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBjb2xcdGhlXGNvbGNvdW50XGVuZGNzbmFtZXsjMVxoc2l6ZX0lCisgIFxzZXR1cHRhYmxlCit9CisKK1xuZXdjb3VudFxjb2xjb3VudAorXGRlZlxzZXR1cHRhYmxlIzF7JQorICBcZGVmXGZpcnN0YXJneyMxfSUKKyAgXGlmeFxmaXJzdGFyZ1x4ZW5kc2V0dXB0YWJsZQorICAgIFxsZXRcZ28gPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcaWZ4XGZpcnN0YXJnXHhjb2x1bW5mcmFjdGlvbnMKKyAgICAgIFxnbG9iYWxcc2V0cGVyY2VudHRydWUKKyAgICBcZWxzZQorICAgICAgXGlmc2V0cGVyY2VudAorICAgICAgICAgXGxldFxnb1xwaWNrdXB3aG9sZWZyYWN0aW9uCisgICAgICBcZWxzZQorICAgICAgICAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKKyAgICAgICAgIFxzZXRib3gwPVxoYm94eyMxXHVuc2tpcFxzcGFjZX0lIEFkZCBhIG5vcm1hbCB3b3JkIHNwYWNlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAlIHNlcGFyYXRvcjsgdHlwaWNhbGx5IHRoYXQgaXMgYWx3YXlzIGluIHRoZSBpbnB1dCwgYW55d2F5LgorICAgICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1le1x0aGVcd2QwfSUKKyAgICAgIFxmaQorICAgIFxmaQorICAgIFxpZnhcZ29ccGlja3Vwd2hvbGVmcmFjdGlvbgorICAgICAgJSBQdXQgdGhlIGFyZ3VtZW50IGJhY2sgZm9yIHRoZSBccGlja3Vwd2hvbGVmcmFjdGlvbiBjYWxsLCBzbworICAgICAgJSB3ZSdsbCBhbHdheXMgaGF2ZSBhIHBlcmlvZCB0aGVyZSB0byBiZSBwYXJzZWQuCisgICAgICBcZGVmXGdve1xwaWNrdXB3aG9sZWZyYWN0aW9uIzF9JQorICAgIFxlbHNlCisgICAgICBcbGV0XGdvID0gXHNldHVwdGFibGUKKyAgICBcZmklCisgIFxmaQorICBcZ28KK30KKworJSBtdWx0aXRhYmxlLW9ubHkgY29tbWFuZHMuCislCislIEBoZWFkaXRlbSBzdGFydHMgYSBoZWFkaW5nIHJvdywgd2hpY2ggd2UgdHlwZXNldCBpbiBib2xkLgorJSBBc3NpZ25tZW50cyBoYXZlIHRvIGJlIGdsb2JhbCBzaW5jZSB3ZSBhcmUgaW5zaWRlIHRoZSBpbXBsaWNpdCBncm91cAorJSBvZiBhbiBhbGlnbm1lbnQgZW50cnkuICBOb3RlIHRoYXQgXGV2ZXJ5Y3IgcmVzZXRzIFxldmVyeXRhYi4KK1xkZWZcaGVhZGl0ZW17XGNoZWNrZW52XG11bHRpdGFibGUgXGNyY3IgXGdsb2JhbFxldmVyeXRhYj17XGJmfVx0aGVcZXZlcnl0YWJ9JQorJQorJSBBIFx0YWIgdXNlZCB0byBpbmNsdWRlIFxoc2tpcDFzcC4gIEJ1dCB0aGVuIHRoZSBzcGFjZSBpbiBhIHRlbXBsYXRlCislIGxpbmUgaXMgbm90IGVub3VnaC4gIFRoYXQgaXMgYmFkLiAgU28gbGV0J3MgZ28gYmFjayB0byBqdXN0IGAmJyB1bnRpbAorJSB3ZSBlbmNvdW50ZXIgdGhlIHByb2JsZW0gaXQgd2FzIGludGVuZGVkIHRvIHNvbHZlIGFnYWluLgorJQkJCQkJLS1rYXJsLCBuYXRoYW5AYWNtLm9yZywgMjBhcHI5OS4KK1xkZWZcdGFie1xjaGVja2VudlxtdWx0aXRhYmxlICZcdGhlXGV2ZXJ5dGFifSUKKworJSBAbXVsdGl0YWJsZSAuLi4gQGVuZCBtdWx0aXRhYmxlIGRlZmluaXRpb25zOgorJQorXG5ld3Rva3NcZXZlcnl0YWIgICUgaW5zZXJ0IGFmdGVyIGV2ZXJ5IHRhYi4KKyUKK1xlbnZkZWZcbXVsdGl0YWJsZXslCisgIFx2c2tpcFxwYXJza2lwCisgIFxzdGFydHNhdmluZ2luc2VydHMKKyAgJQorICAlIEBpdGVtIHdpdGhpbiBhIG11bHRpdGFibGUgc3RhcnRzIGEgbm9ybWFsIHJvdy4KKyAgJSBXZSB1c2UgXGRlZiBpbnN0ZWFkIG9mIFxsZXQgc28gdGhhdCBpZiBvbmUgb2YgdGhlIG11bHRpdGFibGUgZW50cmllcworICAlIGNvbnRhaW5zIGFuIEBpdGVtaXplLCB3ZSBkb24ndCBjaG9rZSBvbiB0aGUgXGl0ZW0gKHNlZW4gYXMgXGNyY3IgYWthCisgICUgXGVuZHRlbXBsYXRlKSBleHBhbmRpbmcgXGRvaXRlbWl6ZS4KKyAgXGRlZlxpdGVte1xjcmNyfSUKKyAgJQorICBcdG9sZXJhbmNlPTk1MDAKKyAgXGhiYWRuZXNzPTk1MDAKKyAgXHNldG11bHRpdGFibGVzcGFjaW5nCisgIFxwYXJza2lwPVxtdWx0aXRhYmxlcGFyc2tpcAorICBccGFyaW5kZW50PVxtdWx0aXRhYmxlcGFyaW5kZW50CisgIFxvdmVyZnVsbHJ1bGU9MHB0CisgIFxnbG9iYWxcY29sY291bnQ9MAorICAlCisgIFxldmVyeWNyID0geyUKKyAgICBcbm9hbGlnbnslCisgICAgICBcZ2xvYmFsXGV2ZXJ5dGFiPXt9JQorICAgICAgXGdsb2JhbFxjb2xjb3VudD0wICUgUmVzZXQgdGhlIGNvbHVtbiBjb3VudGVyLgorICAgICAgJSBDaGVjayBmb3Igc2F2ZWQgZm9vdG5vdGVzLCBldGMuCisgICAgICBcY2hlY2tpbnNlcnRzCisgICAgICAlIEtlZXBzIHVuZGVyZnVsbCBib3ggbWVzc2FnZXMgb2ZmIHdoZW4gdGFibGUgYnJlYWtzIG92ZXIgcGFnZXMuCisgICAgICAlXGZpbGJyZWFrCisJJSBNYXliZSBzbywgYnV0IGl0IGFsc28gY3JlYXRlcyByZWFsbHkgd2VpcmQgcGFnZSBicmVha3Mgd2hlbiB0aGUKKwklIHRhYmxlIGJyZWFrcyBvdmVyIHBhZ2VzLiBXb3VsZG4ndCBcdmZpbCBiZSBiZXR0ZXI/ICBXYWl0IHVudGlsIHRoZQorCSUgcHJvYmxlbSBtYW5pZmVzdHMgaXRzZWxmLCBzbyBpdCBjYW4gYmUgZml4ZWQgZm9yIHJlYWwgLS1rYXJsLgorICAgIH0lCisgIH0lCisgICUKKyAgXHBhcnNlYXJnXGRvbXVsdGl0YWJsZQorfQorXGRlZlxkb211bHRpdGFibGUjMXslCisgICUgVG8gcGFyc2UgZXZlcnl0aGluZyBiZXR3ZWVuIEBtdWx0aXRhYmxlIGFuZCBAaXRlbToKKyAgXHNldHVwdGFibGUjMSBcZW5kc2V0dXB0YWJsZQorICAlCisgICUgVGhpcyBwcmVhbWJsZSBzZXRzIHVwIGEgZ2VuZXJpYyBjb2x1bW4gZGVmaW5pdGlvbiwgd2hpY2ggd2lsbAorICAlIGJlIHVzZWQgYXMgbWFueSB0aW1lcyBhcyB1c2VyIGNhbGxzIGZvciBjb2x1bW5zLgorICAlIFx2dG9wIHdpbGwgc2V0IGEgc2luZ2xlIGxpbmUgYW5kIHdpbGwgYWxzbyBsZXQgdGV4dCB3cmFwIGFuZAorICAlIGNvbnRpbnVlIGZvciBtYW55IHBhcmFncmFwaHMgaWYgZGVzaXJlZC4KKyAgXGhhbGlnblxiZ3JvdXAgJiUKKyAgICBcZ2xvYmFsXGFkdmFuY2VcY29sY291bnQgYnkgMQorICAgIFxtdWx0aXN0cnV0CisgICAgXHZ0b3B7JQorICAgICAgJSBVc2UgdGhlIGN1cnJlbnQgXGNvbGNvdW50IHRvIGZpbmQgdGhlIGNvcnJlY3QgY29sdW1uIHdpZHRoOgorICAgICAgXGhzaXplPVxleHBhbmRhZnRlclxjc25hbWUgY29sXHRoZVxjb2xjb3VudFxlbmRjc25hbWUKKyAgICAgICUKKyAgICAgICUgSW4gb3JkZXIgdG8ga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIKKyAgICAgICUgd2Ugd2lsbCBhZGQgYSBcbGVmdHNraXAgb2YgXG11bHRpdGFibGVjb2xzcGFjZSB0byBhbGwgY29sdW1ucyBhZnRlcgorICAgICAgJSB0aGUgZmlyc3Qgb25lLgorICAgICAgJQorICAgICAgJSBJZiBhIHRlbXBsYXRlIGhhcyBiZWVuIHVzZWQsIHdlIHdpbGwgYWRkIFxtdWx0aXRhYmxlY29sc3BhY2UKKyAgICAgICUgdG8gdGhlIHdpZHRoIG9mIGVhY2ggdGVtcGxhdGUgZW50cnkuCisgICAgICAlCisgICAgICAlIElmIHRoZSB1c2VyIGhhcyBzZXQgcHJlYW1ibGUgaW4gdGVybXMgb2YgcGVyY2VudCBvZiBcaHNpemUgd2Ugd2lsbAorICAgICAgJSB1c2UgdGhhdCBkaW1lbnNpb24gYXMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgXGxlZnRza2lwCisgICAgICAlIHdpbGwga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIuICBUYWJsZSB3aWxsIHN0YXJ0IGF0CisgICAgICAlIGxlZnQgbWFyZ2luIGFuZCBmaW5hbCBjb2x1bW4gd2lsbCBqdXN0aWZ5IGF0IHJpZ2h0IG1hcmdpbi4KKyAgICAgICUKKyAgICAgICUgTWFrZSBzdXJlIHdlIGRvbid0IGluaGVyaXQgXHJpZ2h0c2tpcCBmcm9tIHRoZSBvdXRlciBlbnZpcm9ubWVudC4KKyAgICAgIFxyaWdodHNraXA9MHB0CisgICAgICBcaWZudW1cY29sY291bnQ9MQorCSUgVGhlIGZpcnN0IGNvbHVtbiB3aWxsIGJlIGluZGVudGVkIHdpdGggdGhlIHN1cnJvdW5kaW5nIHRleHQuCisJXGFkdmFuY2VcaHNpemUgYnlcbGVmdHNraXAKKyAgICAgIFxlbHNlCisJXGlmc2V0cGVyY2VudCBcZWxzZQorCSAgJSBJZiB1c2VyIGhhcyBub3Qgc2V0IHByZWFtYmxlIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplCisJICAlIHdlIHdpbGwgYWR2YW5jZSBcaHNpemUgYnkgXG11bHRpdGFibGVjb2xzcGFjZS4KKwkgIFxhZHZhbmNlXGhzaXplIGJ5IFxtdWx0aXRhYmxlY29sc3BhY2UKKwlcZmkKKyAgICAgICAlIEluIGVpdGhlciBjYXNlIHdlIHdpbGwgbWFrZSBcbGVmdHNraXA9XG11bHRpdGFibGVjb2xzcGFjZToKKyAgICAgIFxsZWZ0c2tpcD1cbXVsdGl0YWJsZWNvbHNwYWNlCisgICAgICBcZmkKKyAgICAgICUgSWdub3Jpbmcgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIGF2b2lkcyBhbiBvY2Nhc2lvbmFsIHNwdXJpb3VzCisgICAgICAlIGJsYW5rIGxpbmUsIHdoZW4gVGVYIGRlY2lkZXMgdG8gYnJlYWsgdGhlIGxpbmUgYXQgdGhlIHNwYWNlIGJlZm9yZSB0aGUKKyAgICAgICUgYm94IGZyb20gdGhlIG11bHRpc3RydXQsIHNvIHRoZSBzdHJ1dCBlbmRzIHVwIG9uIGEgbGluZSBieSBpdHNlbGYuCisgICAgICAlIEZvciBleGFtcGxlOgorICAgICAgJSBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4xMSAuODkKKyAgICAgICUgQGl0ZW0gQGNvZGV7I30KKyAgICAgICUgQHRhYiBMZWdhbCBob2xpZGF5IHdoaWNoIGlzIHZhbGlkIGluIG1ham9yIHBhcnRzIG9mIHRoZSB3aG9sZSBjb3VudHJ5LgorICAgICAgJSBJcyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHdpdGggaGlnaGxpZ2h0aW5nIHNlcXVlbmNlcyByZXNwZWN0aXZlbHkKKyAgICAgICUgbWFya2luZyBjaGFyYWN0ZXJzLgorICAgICAgXG5vaW5kZW50XGlnbm9yZXNwYWNlcyMjXHVuc2tpcFxtdWx0aXN0cnV0CisgICAgfVxjcgorfQorXGRlZlxFbXVsdGl0YWJsZXslCisgIFxjcmNyCisgIFxlZ3JvdXAgJSBlbmQgdGhlIFxoYWxpZ24KKyAgXGdsb2JhbFxzZXRwZXJjZW50ZmFsc2UKK30KKworXGRlZlxzZXRtdWx0aXRhYmxlc3BhY2luZ3slCisgIFxkZWZcbXVsdGlzdHJ1dHtcc3RydXR9JSBqdXN0IHVzZSB0aGUgc3RhbmRhcmQgbGluZSBzcGFjaW5nCisgICUKKyAgJSBDb21wdXRlIFxtdWx0aXRhYmxlbGluZXNwYWNlIChpZiBub3QgZGVmaW5lZCBieSB1c2VyKSBmb3IgdXNlIGluCisgICUgXG11bHRpdGFibGVwYXJza2lwIGNhbGN1bGF0aW9uLiAgV2UgdXNlZCBkZWZpbmUgXG11bHRpc3RydXQgYmFzZWQgb24KKyAgJSB0aGlzLCBidXQgKGlyb25pY2FsbHkpIHRoYXQgY2F1c2VkIHRoZSBzcGFjaW5nIHRvIGJlIG9mZi4KKyAgJSBTZWUgYnVnLXRleGluZm8gcmVwb3J0IGZyb20gV2VybmVyIExlbWJlcmcsIDMxIE9jdCAyMDA0IDEyOjUyOjIwICswMTAwLgorXGlmZGltXG11bHRpdGFibGVsaW5lc3BhY2U9MHB0Citcc2V0Ym94MD1cdmJveHtYfVxnbG9iYWxcbXVsdGl0YWJsZWxpbmVzcGFjZT1cdGhlXGJhc2VsaW5lc2tpcAorXGdsb2JhbFxhZHZhbmNlXG11bHRpdGFibGVsaW5lc3BhY2UgYnktXGh0MAorXGZpCislJSBUZXN0IHRvIHNlZSBpZiBwYXJza2lwIGlzIGxhcmdlciB0aGFuIHNwYWNlIGJldHdlZW4gbGluZXMgb2YKKyUlIHRhYmxlLiBJZiBub3QsIGRvIG5vdGhpbmcuCislJSAgICAgICAgSWYgc28sIHNldCB0byBzYW1lIGRpbWVuc2lvbiBhcyBtdWx0aXRhYmxlbGluZXNwYWNlLgorXGlmZGltXG11bHRpdGFibGVwYXJza2lwPlxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXG11bHRpdGFibGVwYXJza2lwPVxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXGFkdmFuY2VcbXVsdGl0YWJsZXBhcnNraXAtN3B0ICUlIHRvIGtlZXAgcGFyc2tpcCBzb21ld2hhdCBzbWFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUlIHRoYW4gc2tpcCBiZXR3ZWVuIGxpbmVzIGluIHRoZSB0YWJsZS4KK1xmaSUKK1xpZmRpbVxtdWx0aXRhYmxlcGFyc2tpcD0wcHQKK1xnbG9iYWxcbXVsdGl0YWJsZXBhcnNraXA9XG11bHRpdGFibGVsaW5lc3BhY2UKK1xnbG9iYWxcYWR2YW5jZVxtdWx0aXRhYmxlcGFyc2tpcC03cHQgJSUgdG8ga2VlcCBwYXJza2lwIHNvbWV3aGF0IHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSUgdGhhbiBza2lwIGJldHdlZW4gbGluZXMgaW4gdGhlIHRhYmxlLgorXGZpfQorCisKK1xtZXNzYWdle2NvbmRpdGlvbmFscyx9CisKKyUgQGlmdGV4LCBAaWZub3Rkb2Nib29rLCBAaWZub3RodG1sLCBAaWZub3RpbmZvLCBAaWZub3RwbGFpbnRleHQsCislIEBpZm5vdHhtbCBhbHdheXMgc3VjY2VlZC4gIFRoZXkgY3VycmVudGx5IGRvIG5vdGhpbmc7IHdlIGRvbid0CislIGF0dGVtcHQgdG8gY2hlY2sgd2hldGhlciB0aGUgY29uZGl0aW9uYWxzIGFyZSBwcm9wZXJseSBuZXN0ZWQuICBCdXQgd2UKKyUgaGF2ZSB0byByZW1lbWJlciB0aGF0IHRoZXkgYXJlIGNvbmRpdGlvbmFscywgc28gdGhhdCBAZW5kIGRvZXNuJ3QKKyUgYXR0ZW1wdCB0byBjbG9zZSBhbiBlbnZpcm9ubWVudCBncm91cC4KKyUKK1xkZWZcbWFrZWNvbmQjMXslCisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lICMxXGVuZGNzbmFtZSA9IFxyZWxheAorICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBpc2NvbmQuIzFcZW5kY3NuYW1lID0gMQorfQorXG1ha2Vjb25ke2lmdGV4fQorXG1ha2Vjb25ke2lmbm90ZG9jYm9va30KK1xtYWtlY29uZHtpZm5vdGh0bWx9CitcbWFrZWNvbmR7aWZub3RpbmZvfQorXG1ha2Vjb25ke2lmbm90cGxhaW50ZXh0fQorXG1ha2Vjb25ke2lmbm90eG1sfQorCislIElnbm9yZSBAaWdub3JlLCBAaWZodG1sLCBAaWZpbmZvLCBhbmQgdGhlIGxpa2UuCislCitcZGVmXGRpcmVudHJ5e1xkb2lnbm9yZXtkaXJlbnRyeX19CitcZGVmXGRvY3VtZW50ZGVzY3JpcHRpb257XGRvaWdub3Jle2RvY3VtZW50ZGVzY3JpcHRpb259fQorXGRlZlxkb2Nib29re1xkb2lnbm9yZXtkb2Nib29rfX0KK1xkZWZcaHRtbHtcZG9pZ25vcmV7aHRtbH19CitcZGVmXGlmZG9jYm9va3tcZG9pZ25vcmV7aWZkb2Nib29rfX0KK1xkZWZcaWZodG1se1xkb2lnbm9yZXtpZmh0bWx9fQorXGRlZlxpZmluZm97XGRvaWdub3Jle2lmaW5mb319CitcZGVmXGlmbm90dGV4e1xkb2lnbm9yZXtpZm5vdHRleH19CitcZGVmXGlmcGxhaW50ZXh0e1xkb2lnbm9yZXtpZnBsYWludGV4dH19CitcZGVmXGlmeG1se1xkb2lnbm9yZXtpZnhtbH19CitcZGVmXGlnbm9yZXtcZG9pZ25vcmV7aWdub3JlfX0KK1xkZWZcbWVudXtcZG9pZ25vcmV7bWVudX19CitcZGVmXHhtbHtcZG9pZ25vcmV7eG1sfX0KKworJSBJZ25vcmUgdGV4dCB1bnRpbCBhIGxpbmUgYEBlbmQgIzEnLCBrZWVwaW5nIHRyYWNrIG9mIG5lc3RlZCBjb25kaXRpb25hbHMuCislCislIEEgY291bnQgdG8gcmVtZW1iZXIgdGhlIGRlcHRoIG9mIG5lc3RpbmcuCitcbmV3Y291bnRcZG9pZ25vcmVjb3VudAorCitcZGVmXGRvaWdub3JlIzF7XGJlZ2luZ3JvdXAKKyAgJSBTY2FuIGluIGBgdmVyYmF0aW0nJyBtb2RlOgorICBcb2JleWxpbmVzCisgIFxjYXRjb2RlYFxAID0gXG90aGVyCisgIFxjYXRjb2RlYFx7ID0gXG90aGVyCisgIFxjYXRjb2RlYFx9ID0gXG90aGVyCisgICUKKyAgJSBNYWtlIHN1cmUgdGhhdCBzcGFjZXMgdHVybiBpbnRvIHRva2VucyB0aGF0IG1hdGNoIHdoYXQgXGRvaWdub3JldGV4dCB3YW50cy4KKyAgXHNwYWNlaXNzcGFjZQorICAlCisgICUgQ291bnQgbnVtYmVyIG9mICMxJ3MgdGhhdCB3ZSd2ZSBzZWVuLgorICBcZG9pZ25vcmVjb3VudCA9IDAKKyAgJQorICAlIFN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCB0aGUgbWF0Y2hpbmcgYEBlbmQgIzEnLgorICBcZG9kb2lnbm9yZXsjMX0lCit9CisKK3sgXGNhdGNvZGVgXz0xMSAlIFdlIHdhbnQgdG8gdXNlIFxfU1RPUF8gd2hpY2ggY2Fubm90IGFwcGVhciBpbiB0ZXhpbmZvIHNvdXJjZS4KKyAgXG9iZXlsaW5lcyAlCisgICUKKyAgXGdkZWZcZG9kb2lnbm9yZSMxeyUKKyAgICAlICMxIGNvbnRhaW5zIHRoZSBjb21tYW5kIG5hbWUgYXMgYSBzdHJpbmcsIGUuZy4sIGBpZmluZm8nLgorICAgICUKKyAgICAlIERlZmluZSBhIGNvbW1hbmQgdG8gZmluZCB0aGUgbmV4dCBgQGVuZCAjMScuCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dCMjMV5eTUBlbmQgIzF7JQorICAgICAgXGRvaWdub3JldGV4dHl5eSMjMV5eTUAjMVxfU1RPUF99JQorICAgICUKKyAgICAlIEFuZCB0aGlzIGNvbW1hbmQgdG8gZmluZCBhbm90aGVyICMxIGNvbW1hbmQsIGF0IHRoZSBiZWdpbm5pbmcgb2YgYQorICAgICUgbGluZS4gIChPdGhlcndpc2UsIHdlIHdvdWxkIGNvbnNpZGVyIGEgbGluZSBgQGMgQGlmc2V0JywgZm9yCisgICAgJSBleGFtcGxlLCB0byBjb3VudCBhcyBhbiBAaWZzZXQgZm9yIG5lc3RpbmcuKQorICAgIFxsb25nXGRlZlxkb2lnbm9yZXRleHR5eXkjIzFeXk1AIzEjIzJcX1NUT1Bfe1xkb2lnbm9yZXl5eXsjIzJ9XF9TVE9QX30lCisgICAgJQorICAgICUgQW5kIG5vdyBleHBhbmQgdGhhdCBjb21tYW5kLgorICAgIFxkb2lnbm9yZXRleHQgXl5NJQorICB9JQorfQorCitcZGVmXGRvaWdub3JleXl5IzF7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcZW1wdHkJCQklIE5vdGhpbmcgZm91bmQuCisgICAgXGxldFxuZXh0XGRvaWdub3JldGV4dHp6egorICBcZWxzZQkJCQkJJSBGb3VuZCBhIG5lc3RlZCBjb25kaXRpb24sIC4uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgMQorICAgIFxsZXRcbmV4dFxkb2lnbm9yZXRleHR5eXkJCSUgLi4uLCBsb29rIGZvciBhbm90aGVyLgorICAgICUgSWYgd2UncmUgaGVyZSwgIzEgZW5kcyB3aXRoIF5eTVxpZmluZm8gKGZvciBleGFtcGxlKS4KKyAgXGZpCisgIFxuZXh0ICMxJSB0aGUgdG9rZW4gXF9TVE9QXyBpcyBwcmVzZW50IGp1c3QgYWZ0ZXIgdGhpcyBtYWNyby4KK30KKworJSBXZSBoYXZlIHRvIHN3YWxsb3cgdGhlIHJlbWFpbmluZyAiXF9TVE9QXyIuCislCitcZGVmXGRvaWdub3JldGV4dHp6eiMxeyUKKyAgXGlmbnVtXGRvaWdub3JlY291bnQgPSAwCSUgV2UgaGF2ZSBqdXN0IGZvdW5kIHRoZSBvdXRlcm1vc3QgQGVuZC4KKyAgICBcbGV0XG5leHRcZW5kZG9pZ25vcmUKKyAgXGVsc2UJCQkJJSBTdGlsbCBpbnNpZGUgYSBuZXN0ZWQgY29uZGl0aW9uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgLTEKKyAgICBcbGV0XG5leHRcZG9pZ25vcmV0ZXh0ICAgICAgJSBMb29rIGZvciB0aGUgbmV4dCBAZW5kLgorICBcZmkKKyAgXG5leHQKK30KKworJSBGaW5pc2ggb2ZmIGlnbm9yZWQgdGV4dC4KK3sgXG9iZXlsaW5lcyUKKyAgJSBJZ25vcmUgYW55dGhpbmcgYWZ0ZXIgdGhlIGxhc3QgYEBlbmQgIzEnOyB0aGlzIG1hdHRlcnMgaW4gdmVyYmF0aW0KKyAgJSBlbnZpcm9ubWVudHMsIHdoZXJlIG90aGVyd2lzZSB0aGUgbmV3bGluZSBhZnRlciBhbiBpZ25vcmVkIGNvbmRpdGlvbmFsCisgICUgd291bGQgcmVzdWx0IGluIGEgYmxhbmsgbGluZSBpbiB0aGUgb3V0cHV0LgorICBcZ2RlZlxlbmRkb2lnbm9yZSMxXl5Ne1xlbmRncm91cFxpZ25vcmVzcGFjZXN9JQorfQorCisKKyUgQHNldCBWQVIgc2V0cyB0aGUgdmFyaWFibGUgVkFSIHRvIGFuIGVtcHR5IHZhbHVlLgorJSBAc2V0IFZBUiBSRVNULU9GLUxJTkUgc2V0cyBWQVIgdG8gdGhlIHZhbHVlIFJFU1QtT0YtTElORS4KKyUKKyUgU2luY2Ugd2Ugd2FudCB0byBzZXBhcmF0ZSBWQVIgZnJvbSBSRVNULU9GLUxJTkUgKHdoaWNoIG1pZ2h0IGJlCislIGVtcHR5KSwgd2UgY2FuJ3QganVzdCB1c2UgXHBhcnNlYXJnOyB3ZSBoYXZlIHRvIGluc2VydCBhIHNwYWNlIG9mIG91cgorJSBvd24gdG8gZGVsaW1pdCB0aGUgcmVzdCBvZiB0aGUgbGluZSwgYW5kIHRoZW4gdGFrZSBpdCBvdXQgYWdhaW4gaWYgd2UKKyUgZGlkbid0IG5lZWQgaXQuCislIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBccGFyc2Vhcmcgc2V0cyBcY2F0Y29kZWBcID0xMC4KKyUKK1xwYXJzZWFyZ2RlZlxzZXR7XHNldHl5eSMxIFxlbmRzZXR5eXl9CitcZGVmXHNldHl5eSMxICMyXGVuZHNldHl5eXslCisgIHslCisgICAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKKyAgICBcZGVmXHRlbXB7IzJ9JQorICAgIFxlZGVmXG5leHR7XGdkZWZcbWFrZWNzbmFtZXtTRVQjMX19JQorICAgIFxpZnhcdGVtcFxlbXB0eQorICAgICAgXG5leHR7fSUKKyAgICBcZWxzZQorICAgICAgXHNldHp6eiMyXGVuZHNldHp6egorICAgIFxmaQorICB9JQorfQorJSBSZW1vdmUgdGhlIHRyYWlsaW5nIHNwYWNlIFxzZXR4eHggaW5zZXJ0ZWQuCitcZGVmXHNldHp6eiMxIFxlbmRzZXR6enp7XG5leHR7IzF9fQorCislIEBjbGVhciBWQVIgY2xlYXJzIChpLmUuLCB1bnNldHMpIHRoZSB2YXJpYWJsZSBWQVIuCislCitccGFyc2VhcmdkZWZcY2xlYXJ7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZT1ccmVsYXgKKyAgfSUKK30KKworJSBAdmFsdWV7Zm9vfSBnZXRzIHRoZSB0ZXh0IHNhdmVkIGluIHZhcmlhYmxlIGZvby4KK1xkZWZcdmFsdWV7XGJlZ2luZ3JvdXBcbWFrZXZhbHVlZXhwYW5kYWJsZVx2YWx1ZXh4eH0KK1xkZWZcdmFsdWV4eHgjMXtcZXhwYW5kYWJsZXZhbHVleyMxfVxlbmRncm91cH0KK3sKKyAgXGNhdGNvZGVgXC0gPSBcYWN0aXZlIFxjYXRjb2RlYFxfID0gXGFjdGl2ZQorICAlCisgIFxnZGVmXG1ha2V2YWx1ZWV4cGFuZGFibGV7JQorICAgIFxsZXRcdmFsdWUgPSBcZXhwYW5kYWJsZXZhbHVlCisgICAgJSBXZSBkb24ndCB3YW50IHRoZXNlIGNoYXJhY3RlcnMgYWN0aXZlLCAuLi4KKyAgICBcY2F0Y29kZWBcLT1cb3RoZXIgXGNhdGNvZGVgXF89XG90aGVyCisgICAgJSAuLi4sIGJ1dCB3ZSBtaWdodCBlbmQgdXAgd2l0aCBhY3RpdmUgb25lcyBpbiB0aGUgYXJndW1lbnQgaWYKKyAgICAlIHdlJ3JlIGNhbGxlZCBmcm9tIEBjb2RlLCBhcyBAY29kZXtAdmFsdWV7Zm9vLWJhcl99fSwgdGhvdWdoLgorICAgICUgU28gXGxldCB0aGVtIHRvIHRoZWlyIG5vcm1hbCBlcXVpdmFsZW50cy4KKyAgICBcbGV0LVxyZWFsZGFzaCBcbGV0X1xub3JtYWx1bmRlcnNjb3JlCisgIH0KK30KKworJSBXZSBoYXZlIHRoaXMgc3Vicm91dGluZSBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgYXQgbGVhc3Qgc29tZSBAdmFsdWUncworJSBwcm9wZXJseSBpbiBpbmRleGVzICh3ZSBjYWxsIFxtYWtldmFsdWVleHBhbmRhYmxlIGluIFxpbmRleGR1bW1pZXMpLgorJSBUaGUgY29tbWFuZCBoYXMgdG8gYmUgZnVsbHkgZXhwYW5kYWJsZSAoaWYgdGhlIHZhcmlhYmxlIGlzIHNldCksIHNpbmNlCislIHRoZSByZXN1bHQgd2luZHMgdXAgaW4gdGhlIGluZGV4IGZpbGUuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlCislIHZhcmlhYmxlJ3MgdmFsdWUgY29udGFpbnMgb3RoZXIgVGV4aW5mbyBjb21tYW5kcywgaXQncyBhbG1vc3QgY2VydGFpbgorJSBpdCB3aWxsIGZhaWwgKGFsdGhvdWdoIHBlcmhhcHMgd2UgY291bGQgZml4IHRoYXQgd2l0aCBzdWZmaWNpZW50IHdvcmsKKyUgdG8gZG8gYSBvbmUtbGV2ZWwgZXhwYW5zaW9uIG9uIHRoZSByZXN1bHQsIGluc3RlYWQgb2YgY29tcGxldGUpLgorJQorXGRlZlxleHBhbmRhYmxldmFsdWUjMXslCisgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZVxyZWxheAorICAgIHtbTm8gdmFsdWUgZm9yIGBgIzEnJ119JQorICAgIFxtZXNzYWdle1ZhcmlhYmxlIGAjMScsIHVzZWQgaW4gQHZhbHVlLCBpcyBub3Qgc2V0Ln0lCisgIFxlbHNlCisgICAgXGNzbmFtZSBTRVQjMVxlbmRjc25hbWUKKyAgXGZpCit9CisKKyUgQGlmc2V0IFZBUiAuLi4gQGVuZCBpZnNldCByZWFkcyB0aGUgYC4uLicgaWZmIFZBUiBoYXMgYmVlbiBkZWZpbmVkCislIHdpdGggQHNldC4KKyUKKyUgVG8gZ2V0IHNwZWNpYWwgdHJlYXRtZW50IG9mIGBAZW5kIGlmc2V0LCcgY2FsbCBcbWFrZW9uZCBhbmQgdGhlIHJlZGVmaW5lLgorJQorXG1ha2Vjb25ke2lmc2V0fQorXGRlZlxpZnNldHtccGFyc2Vhcmd7XGRvaWZzZXR7XGxldFxuZXh0PVxpZnNldGZhaWx9fX0KK1xkZWZcZG9pZnNldCMxIzJ7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGxldFxuZXh0PVxlbXB0eQorICAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMyXGVuZGNzbmFtZVxyZWxheAorICAgICAgIzElIElmIG5vdCBzZXQsIHJlZGVmaW5lIFxuZXh0LgorICAgIFxmaQorICAgIFxleHBhbmRhZnRlcgorICB9XG5leHQKK30KK1xkZWZcaWZzZXRmYWlse1xkb2lnbm9yZXtpZnNldH19CisKKyUgQGlmY2xlYXIgVkFSIC4uLiBAZW5kIGlmY2xlYXIgcmVhZHMgdGhlIGAuLi4nIGlmZiBWQVIgaGFzIG5ldmVyIGJlZW4KKyUgZGVmaW5lZCB3aXRoIEBzZXQsIG9yIGhhcyBiZWVuIHVuZGVmaW5lZCB3aXRoIEBjbGVhci4KKyUKKyUgVGhlIGBcZWxzZScgaW5zaWRlIHRoZSBgXGRvaWZzZXQnIHBhcmFtZXRlciBpcyBhIHRyaWNrIHRvIHJldXNlIHRoZQorJSBhYm92ZSBjb2RlOiBpZiB0aGUgdmFyaWFibGUgaXMgbm90IHNldCwgZG8gbm90aGluZywgaWYgaXQgaXMgc2V0LAorJSB0aGVuIHJlZGVmaW5lIFxuZXh0IHRvIFxpZmNsZWFyZmFpbC4KKyUKK1xtYWtlY29uZHtpZmNsZWFyfQorXGRlZlxpZmNsZWFye1xwYXJzZWFyZ3tcZG9pZnNldHtcZWxzZSBcbGV0XG5leHQ9XGlmY2xlYXJmYWlsfX19CitcZGVmXGlmY2xlYXJmYWlse1xkb2lnbm9yZXtpZmNsZWFyfX0KKworJSBAZGlyY2F0ZWdvcnkgQ0FURUdPUlkgIC0tIHNwZWNpZnkgYSBjYXRlZ29yeSBvZiB0aGUgZGlyIGZpbGUKKyUgd2hpY2ggdGhpcyBmaWxlIHNob3VsZCBiZWxvbmcgdG8uICBJZ25vcmUgdGhpcyBpbiBUZVguCitcbGV0XGRpcmNhdGVnb3J5PVxjb21tZW50CisKKyUgQGRlZmluaW5mb2VuY2xvc2UuCitcbGV0XGRlZmluZm9lbmNsb3NlPVxjb21tZW50CisKKworXG1lc3NhZ2V7aW5kZXhpbmcsfQorJSBJbmRleCBnZW5lcmF0aW9uIGZhY2lsaXRpZXMKKworJSBEZWZpbmUgXG5ld3dyaXRlIHRvIGJlIGlkZW50aWNhbCB0byBwbGFpbiB0ZXgncyBcbmV3d3JpdGUKKyUgZXhjZXB0IG5vdCBcb3V0ZXIsIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGhpbiBtYWNyb3MgYW5kIFxpZidzLgorXGVkZWZcbmV3d3JpdGV7XG1ha2Vjc25hbWV7cHRleG5ld3dyaXRlfX0KKworJSBcbmV3aW5kZXgge2Zvb30gZGVmaW5lcyBhbiBpbmRleCBuYW1lZCBmb28uCislIEl0IGF1dG9tYXRpY2FsbHkgZGVmaW5lcyBcZm9vaW5kZXggc3VjaCB0aGF0CislIFxmb29pbmRleCAuLi5yZXN0IG9mIGxpbmUuLi4gcHV0cyBhbiBlbnRyeSBpbiB0aGUgaW5kZXggZm9vLgorJSBJdCBhbHNvIGRlZmluZXMgXGZvb2luZGZpbGUgdG8gYmUgdGhlIG51bWJlciBvZiB0aGUgb3V0cHV0IGNoYW5uZWwgZm9yCislIHRoZSBmaWxlIHRoYXQgYWNjdW11bGF0ZXMgdGhpcyBpbmRleC4gIFRoZSBmaWxlJ3MgZXh0ZW5zaW9uIGlzIGZvby4KKyUgVGhlIG5hbWUgb2YgYW4gaW5kZXggc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAyIGNoYXJhY3RlcnMgbG9uZworJSBmb3IgdGhlIHNha2Ugb2Ygdm1zLgorJQorXGRlZlxuZXdpbmRleCMxeyUKKyAgXGlmbGlua3MKKyAgICBcZXhwYW5kYWZ0ZXJcbmV3d3JpdGUgXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWUKKyAgICBcb3Blbm91dCBcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZSBcam9ibmFtZS4jMSAlIE9wZW4gdGhlIGZpbGUKKyAgXGZpCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxaW5kZXhcZW5kY3NuYW1leyUgICAgICUgRGVmaW5lIEAjMWluZGV4CisgICAgXG5vZXhwYW5kXGRvaW5kZXh7IzF9fQorfQorCislIEBkZWZpbmRleCBmb28gID09ICBcbmV3aW5kZXh7Zm9vfQorJQorXGRlZlxkZWZpbmRleHtccGFyc2VhcmdcbmV3aW5kZXh9CisKKyUgRGVmaW5lIEBkZWZjb2RlaW5kZXgsIGxpa2UgQGRlZmluZGV4IGV4Y2VwdCBwdXQgYWxsIGVudHJpZXMgaW4gQGNvZGUuCislCitcZGVmXGRlZmNvZGVpbmRleHtccGFyc2VhcmdcbmV3Y29kZWluZGV4fQorJQorXGRlZlxuZXdjb2RlaW5kZXgjMXslCisgIFxpZmxpbmtzCisgICAgXGV4cGFuZGFmdGVyXG5ld3dyaXRlIFxjc25hbWUjMWluZGZpbGVcZW5kY3NuYW1lCisgICAgXG9wZW5vdXQgXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWUgXGpvYm5hbWUuIzEKKyAgXGZpCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxaW5kZXhcZW5kY3NuYW1leyUKKyAgICBcbm9leHBhbmRcZG9jb2RlaW5kZXh7IzF9fSUKK30KKworCislIEBzeW5pbmRleCBmb28gYmFyICAgIG1ha2VzIGluZGV4IGZvbyBmZWVkIGludG8gaW5kZXggYmFyLgorJSBEbyB0aGlzIGluc3RlYWQgb2YgQGRlZmluZGV4IGZvbyBpZiB5b3UgZG9uJ3Qgd2FudCBpdCBhcyBhIHNlcGFyYXRlIGluZGV4LgorJQorJSBAc3luY29kZWluZGV4IGZvbyBiYXIgICBzaW1pbGFyLCBidXQgcHV0IGFsbCBlbnRyaWVzIG1hZGUgZm9yIGluZGV4IGZvbworJSBpbnNpZGUgQGNvZGUuCislCitcZGVmXHN5bmluZGV4IzEgIzIge1xkb3N5bmluZGV4XGRvaW5kZXh7IzF9eyMyfX0KK1xkZWZcc3luY29kZWluZGV4IzEgIzIge1xkb3N5bmluZGV4XGRvY29kZWluZGV4eyMxfXsjMn19CisKKyUgIzEgaXMgXGRvaW5kZXggb3IgXGRvY29kZWluZGV4LCAjMiB0aGUgaW5kZXggZ2V0dGluZyByZWRlZmluZWQgKGZvbyksCislICMzIHRoZSB0YXJnZXQgaW5kZXggKGJhcikuCitcZGVmXGRvc3luaW5kZXgjMSMyIzN7JQorICAlIE9ubHkgZG8gXGNsb3Nlb3V0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBkb25lIGl0LCBlbHNlIHdlJ2xsIGVuZCB1cAorICAlIGNsb3NpbmcgdGhlIHRhcmdldCBpbmRleC4KKyAgXGV4cGFuZGFmdGVyIFxpZnhcY3NuYW1lIGRvbmVzeW5pbmRleCMyXGVuZGNzbmFtZSBcdW5kZWZpbmVkCisgICAgJSBUaGUgXGNsb3Nlb3V0IGhlbHBzIHJlZHVjZSB1bm5lY2Vzc2FyeSBvcGVuIGZpbGVzOyB0aGUgbGltaXQgb24gdGhlCisgICAgJSBBY29ybiBSSVNDIE9TIGlzIGEgbWVyZSAxNiBmaWxlcy4KKyAgICBcZXhwYW5kYWZ0ZXJcY2xvc2VvdXRcY3NuYW1lIzJpbmRmaWxlXGVuZGNzbmFtZQorICAgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lXGRvbmVzeW5pbmRleCMyXGVuZGNzbmFtZSA9IDEKKyAgXGZpCisgICUgcmVkZWZpbmUgXGZvb2luZGZpbGU6CisgIFxleHBhbmRhZnRlclxsZXRcZXhwYW5kYWZ0ZXJcdGVtcFxleHBhbmRhZnRlcj1cY3NuYW1lIzNpbmRmaWxlXGVuZGNzbmFtZQorICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSMyaW5kZmlsZVxlbmRjc25hbWU9XHRlbXAKKyAgJSByZWRlZmluZSBcZm9vaW5kZXg6CisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMyaW5kZXhcZW5kY3NuYW1le1xub2V4cGFuZCMxeyMzfX0lCit9CisKKyUgRGVmaW5lIFxkb2luZGV4LCB0aGUgZHJpdmVyIGZvciBhbGwgXGZvb2luZGV4IG1hY3Jvcy4KKyUgQXJndW1lbnQgIzEgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjYWxsaW5nIFxmb29pbmRleCBtYWNybywKKyUgIGFuZCBpdCBpcyAiZm9vIiwgdGhlIG5hbWUgb2YgdGhlIGluZGV4LgorCislIFxkb2luZGV4IGp1c3QgdXNlcyBccGFyc2Vhcmc7IGl0IGNhbGxzIFxkb2luZCBmb3IgdGhlIGFjdHVhbCB3b3JrLgorJSBUaGlzIGlzIGJlY2F1c2UgXGRvaW5kIGlzIG1vcmUgdXNlZnVsIHRvIGNhbGwgZnJvbSBvdGhlciBtYWNyb3MuCisKKyUgVGhlcmUgaXMgYWxzbyBcZG9zdWJpbmQge2luZGV4fXt0b3BpY317c3VidG9waWN9CislIHdoaWNoIG1ha2VzIGFuIGVudHJ5IGluIGEgdHdvLWxldmVsIGluZGV4IHN1Y2ggYXMgdGhlIG9wZXJhdGlvbiBpbmRleC4KKworXGRlZlxkb2luZGV4IzF7XGVkZWZcaW5kZXhuYW1leyMxfVxwYXJzZWFyZ1xzaW5nbGVpbmRleGVyfQorXGRlZlxzaW5nbGVpbmRleGVyICMxe1xkb2luZHtcaW5kZXhuYW1lfXsjMX19CisKKyUgbGlrZSB0aGUgcHJldmlvdXMgdHdvLCBidXQgdGhleSBwdXQgQGNvZGUgYXJvdW5kIHRoZSBhcmd1bWVudC4KK1xkZWZcZG9jb2RlaW5kZXgjMXtcZWRlZlxpbmRleG5hbWV7IzF9XHBhcnNlYXJnXHNpbmdsZWNvZGVpbmRleGVyfQorXGRlZlxzaW5nbGVjb2RlaW5kZXhlciAjMXtcZG9pbmR7XGluZGV4bmFtZX17XGNvZGV7IzF9fX0KKworJSBUYWtlIGNhcmUgb2YgVGV4aW5mbyBjb21tYW5kcyB0aGF0IGNhbiBhcHBlYXIgaW4gYW4gaW5kZXggZW50cnkuCislIFNpbmNlIHRoZXJlIGFyZSBzb21lIGNvbW1hbmRzIHdlIHdhbnQgdG8gZXhwYW5kLCBhbmQgb3RoZXJzIHdlIGRvbid0LAorJSB3ZSBoYXZlIHRvIGxhYm9yaW91c2x5IHByZXZlbnQgZXhwYW5zaW9uIGZvciB0aG9zZSB0aGF0IHdlIGRvbid0LgorJQorXGRlZlxpbmRleGR1bW1pZXN7JQorICBcZXNjYXBlY2hhciA9IGBcXCAgICAgJSB1c2UgYmFja3NsYXNoIGluIG91dHB1dCBmaWxlcy4KKyAgXGRlZlxAe0B9JSBjaGFuZ2UgdG8gQEAgd2hlbiB3ZSBzd2l0Y2ggdG8gQCBhcyBlc2NhcGUgY2hhciBpbiBpbmRleCBmaWxlcy4KKyAgXGRlZlwge1xyZWFsYmFja3NsYXNoXHNwYWNlIH0lCisgICUgTmVlZCB0aGVzZSBpbiBjYXNlIFx0ZXggaXMgaW4gZWZmZWN0IGFuZCBceyBpcyBhIFxkZWxpbWl0ZXIgYWdhaW4uCisgICUgQnV0IGNhbid0IHVzZSBcbGJyYWNlY21kIGFuZCBccmJyYWNlY21kIGJlY2F1c2UgdGV4aW5kZXggYXNzdW1lcworICAlIGJyYWNlcyBhbmQgYmFja3NsYXNoZXMgYXJlIHVzZWQgb25seSBhcyBkZWxpbWl0ZXJzLgorICBcbGV0XHsgPSBcbXlsYnJhY2UKKyAgXGxldFx9ID0gXG15cmJyYWNlCisgICUKKyAgJSBEbyB0aGUgcmVkZWZpbml0aW9ucy4KKyAgXGNvbW1vbmR1bW1pZXMKK30KKworJSBGb3IgdGhlIGF1eCBhbmQgdG9jIGZpbGVzLCBAIGlzIHRoZSBlc2NhcGUgY2hhcmFjdGVyLiAgU28gd2Ugd2FudCB0bworJSByZWRlZmluZSBldmVyeXRoaW5nIHVzaW5nIEAgYXMgdGhlIGVzY2FwZSBjaGFyYWN0ZXIgKGluc3RlYWQgb2YKKyUgXHJlYWxiYWNrc2xhc2gsIHN0aWxsIHVzZWQgZm9yIGluZGV4IGZpbGVzKS4gIFdoZW4gZXZlcnl0aGluZyB1c2VzIEAsCislIHRoaXMgd2lsbCBiZSBzaW1wbGVyLgorJQorXGRlZlxhdGR1bW1pZXN7JQorICBcZGVmXEB7QEB9JQorICBcZGVmXCB7QCB9JQorICBcbGV0XHsgPSBcbGJyYWNlYXRjbWQKKyAgXGxldFx9ID0gXHJicmFjZWF0Y21kCisgICUKKyAgJSBEbyB0aGUgcmVkZWZpbml0aW9ucy4KKyAgXGNvbW1vbmR1bW1pZXMKKyAgXG90aGVyYmFja3NsYXNoCit9CisKKyUgQ2FsbGVkIGZyb20gXGluZGV4ZHVtbWllcyBhbmQgXGF0ZHVtbWllcy4KKyUKK1xkZWZcY29tbW9uZHVtbWllc3slCisgICUKKyAgJSBcZGVmaW5lZHVtbXl3b3JkIGRlZmluZXMgXCMxIGFzIFxzdHJpbmdcIzFcc3BhY2UsIHRodXMgZWZmZWN0aXZlbHkKKyAgJSBwcmV2ZW50aW5nIGl0cyBleHBhbnNpb24uICBUaGlzIGlzIHVzZWQgb25seSBmb3IgY29udHJvbCUgd29yZHMsCisgICUgbm90IGNvbnRyb2wgbGV0dGVycywgYmVjYXVzZSB0aGUgXHNwYWNlIHdvdWxkIGJlIGluY29ycmVjdCBmb3IKKyAgJSBjb250cm9sIGNoYXJhY3RlcnMsIGJ1dCBpcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlIGNvbnRyb2wgd29yZAorICAlIGZyb20gd2hhdGV2ZXIgZm9sbG93cy4KKyAgJQorICAlIEZvciBjb250cm9sIGxldHRlcnMsIHdlIGhhdmUgXGRlZmluZWR1bW15bGV0dGVyLCB3aGljaCBvbWl0cyB0aGUKKyAgJSBzcGFjZS4KKyAgJQorICAlIFRoZXNlIGNhbiBiZSB1c2VkIGJvdGggZm9yIGNvbnRyb2wgd29yZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IGFuZAorICAlIHRob3NlIHRoYXQgZG8gbm90LiAgSWYgaXQgaXMgZm9sbG93ZWQgYnkge2FyZ30gaW4gdGhlIGlucHV0LCB0aGVuCisgICUgdGhhdCB3aWxsIGR1dGlmdWxseSBnZXQgd3JpdHRlbiB0byB0aGUgaW5kZXggKG9yIHdoZXJldmVyKS4KKyAgJQorICBcZGVmXGRlZmluZWR1bW15d29yZCAgIyMxe1xkZWYjIzF7XHN0cmluZyMjMVxzcGFjZX19JQorICBcZGVmXGRlZmluZWR1bW15bGV0dGVyIyMxe1xkZWYjIzF7XHN0cmluZyMjMX19JQorICBcbGV0XGRlZmluZWR1bW15YWNjZW50XGRlZmluZWR1bW15bGV0dGVyCisgICUKKyAgXGNvbW1vbmR1bW1pZXNub2ZvbnRzCisgICUKKyAgXGRlZmluZWR1bW15bGV0dGVyXF8lCisgICUKKyAgJSBOb24tRW5nbGlzaCBsZXR0ZXJzLgorICBcZGVmaW5lZHVtbXl3b3JkXEFBCisgIFxkZWZpbmVkdW1teXdvcmRcQUUKKyAgXGRlZmluZWR1bW15d29yZFxMCisgIFxkZWZpbmVkdW1teXdvcmRcT0UKKyAgXGRlZmluZWR1bW15d29yZFxPCisgIFxkZWZpbmVkdW1teXdvcmRcYWEKKyAgXGRlZmluZWR1bW15d29yZFxhZQorICBcZGVmaW5lZHVtbXl3b3JkXGwKKyAgXGRlZmluZWR1bW15d29yZFxvZQorICBcZGVmaW5lZHVtbXl3b3JkXG8KKyAgXGRlZmluZWR1bW15d29yZFxzcworICBcZGVmaW5lZHVtbXl3b3JkXGV4Y2xhbWRvd24KKyAgXGRlZmluZWR1bW15d29yZFxxdWVzdGlvbmRvd24KKyAgXGRlZmluZWR1bW15d29yZFxvcmRmCisgIFxkZWZpbmVkdW1teXdvcmRcb3JkbQorICAlCisgICUgQWx0aG91Z2ggdGhlc2UgaW50ZXJuYWwgY29tbWFuZHMgc2hvdWxkbid0IHNob3cgdXAsIHNvbWV0aW1lcyB0aGV5IGRvLgorICBcZGVmaW5lZHVtbXl3b3JkXGJmCisgIFxkZWZpbmVkdW1teXdvcmRcZ3RyCisgIFxkZWZpbmVkdW1teXdvcmRcaGF0CisgIFxkZWZpbmVkdW1teXdvcmRcbGVzcworICBcZGVmaW5lZHVtbXl3b3JkXHNmCisgIFxkZWZpbmVkdW1teXdvcmRcc2wKKyAgXGRlZmluZWR1bW15d29yZFx0Y2xvc2UKKyAgXGRlZmluZWR1bW15d29yZFx0dAorICAlCisgIFxkZWZpbmVkdW1teXdvcmRcTGFUZVgKKyAgXGRlZmluZWR1bW15d29yZFxUZVgKKyAgJQorICAlIEFzc29ydGVkIHNwZWNpYWwgY2hhcmFjdGVycy4KKyAgXGRlZmluZWR1bW15d29yZFxidWxsZXQKKyAgXGRlZmluZWR1bW15d29yZFxjb21tYQorICBcZGVmaW5lZHVtbXl3b3JkXGNvcHlyaWdodAorICBcZGVmaW5lZHVtbXl3b3JkXHJlZ2lzdGVyZWRzeW1ib2wKKyAgXGRlZmluZWR1bW15d29yZFxkb3RzCisgIFxkZWZpbmVkdW1teXdvcmRcZW5kZG90cworICBcZGVmaW5lZHVtbXl3b3JkXGVxdWl2CisgIFxkZWZpbmVkdW1teXdvcmRcZXJyb3IKKyAgXGRlZmluZWR1bW15d29yZFxldXJvCisgIFxkZWZpbmVkdW1teXdvcmRcZXhwYW5zaW9uCisgIFxkZWZpbmVkdW1teXdvcmRcbWludXMKKyAgXGRlZmluZWR1bW15d29yZFxwb3VuZHMKKyAgXGRlZmluZWR1bW15d29yZFxwb2ludAorICBcZGVmaW5lZHVtbXl3b3JkXHByaW50CisgIFxkZWZpbmVkdW1teXdvcmRccmVzdWx0CisgICUKKyAgJSBXZSB3YW50IHRvIGRpc2FibGUgYWxsIG1hY3JvcyBzbyB0aGF0IHRoZXkgYXJlIG5vdCBleHBhbmRlZCBieSBcd3JpdGUuCisgIFxtYWNyb2xpc3QKKyAgJQorICBcbm9ybWFsdHVybm9mZmFjdGl2ZQorICAlCisgICUgSGFuZGxlIHNvbWUgY2FzZXMgb2YgQHZhbHVlIC0tIHdoZXJlIGl0IGRvZXMgbm90IGNvbnRhaW4gYW55CisgICUgKG5vbi1mdWxseS1leHBhbmRhYmxlKSBjb21tYW5kcy4KKyAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKK30KKworJSBcY29tbW9uZHVtbWllc25vZm9udHM6IGNvbW1vbiB0byBcY29tbW9uZHVtbWllcyBhbmQgXGluZGV4bm9mb250cy4KKyUKK1xkZWZcY29tbW9uZHVtbWllc25vZm9udHN7JQorICAlIENvbnRyb2wgbGV0dGVycyBhbmQgYWNjZW50cy4KKyAgXGRlZmluZWR1bW15bGV0dGVyXCElCisgIFxkZWZpbmVkdW1teWFjY2VudFwiJQorICBcZGVmaW5lZHVtbXlhY2NlbnRcJyUKKyAgXGRlZmluZWR1bW15bGV0dGVyXColCisgIFxkZWZpbmVkdW1teWFjY2VudFwsJQorICBcZGVmaW5lZHVtbXlsZXR0ZXJcLiUKKyAgXGRlZmluZWR1bW15bGV0dGVyXC8lCisgIFxkZWZpbmVkdW1teWxldHRlclw6JQorICBcZGVmaW5lZHVtbXlhY2NlbnRcPSUKKyAgXGRlZmluZWR1bW15bGV0dGVyXD8lCisgIFxkZWZpbmVkdW1teWFjY2VudFxeJQorICBcZGVmaW5lZHVtbXlhY2NlbnRcYCUKKyAgXGRlZmluZWR1bW15YWNjZW50XH4lCisgIFxkZWZpbmVkdW1teXdvcmRcdQorICBcZGVmaW5lZHVtbXl3b3JkXHYKKyAgXGRlZmluZWR1bW15d29yZFxICisgIFxkZWZpbmVkdW1teXdvcmRcZG90YWNjZW50CisgIFxkZWZpbmVkdW1teXdvcmRccmluZ2FjY2VudAorICBcZGVmaW5lZHVtbXl3b3JkXHRpZWFjY2VudAorICBcZGVmaW5lZHVtbXl3b3JkXHViYXJhY2NlbnQKKyAgXGRlZmluZWR1bW15d29yZFx1ZG90YWNjZW50CisgIFxkZWZpbmVkdW1teXdvcmRcZG90bGVzcworICAlCisgICUgVGV4aW5mbyBmb250IGNvbW1hbmRzLgorICBcZGVmaW5lZHVtbXl3b3JkXGIKKyAgXGRlZmluZWR1bW15d29yZFxpCisgIFxkZWZpbmVkdW1teXdvcmRccgorICBcZGVmaW5lZHVtbXl3b3JkXHNjCisgIFxkZWZpbmVkdW1teXdvcmRcdAorICAlCisgICUgQ29tbWFuZHMgdGhhdCB0YWtlIGFyZ3VtZW50cy4KKyAgXGRlZmluZWR1bW15d29yZFxhY3JvbnltCisgIFxkZWZpbmVkdW1teXdvcmRcY2l0ZQorICBcZGVmaW5lZHVtbXl3b3JkXGNvZGUKKyAgXGRlZmluZWR1bW15d29yZFxjb21tYW5kCisgIFxkZWZpbmVkdW1teXdvcmRcZGZuCisgIFxkZWZpbmVkdW1teXdvcmRcZW1waAorICBcZGVmaW5lZHVtbXl3b3JkXGVudgorICBcZGVmaW5lZHVtbXl3b3JkXGZpbGUKKyAgXGRlZmluZWR1bW15d29yZFxrYmQKKyAgXGRlZmluZWR1bW15d29yZFxrZXkKKyAgXGRlZmluZWR1bW15d29yZFxtYXRoCisgIFxkZWZpbmVkdW1teXdvcmRcb3B0aW9uCisgIFxkZWZpbmVkdW1teXdvcmRccHhyZWYKKyAgXGRlZmluZWR1bW15d29yZFxyZWYKKyAgXGRlZmluZWR1bW15d29yZFxzYW1wCisgIFxkZWZpbmVkdW1teXdvcmRcc3Ryb25nCisgIFxkZWZpbmVkdW1teXdvcmRcdGllCisgIFxkZWZpbmVkdW1teXdvcmRcdXJlZgorICBcZGVmaW5lZHVtbXl3b3JkXHVybAorICBcZGVmaW5lZHVtbXl3b3JkXHZhcgorICBcZGVmaW5lZHVtbXl3b3JkXHZlcmIKKyAgXGRlZmluZWR1bW15d29yZFx3CisgIFxkZWZpbmVkdW1teXdvcmRceHJlZgorfQorCislIFxpbmRleG5vZm9udHMgaXMgdXNlZCB3aGVuIG91dHB1dHRpbmcgdGhlIHN0cmluZ3MgdG8gc29ydCB0aGUgaW5kZXgKKyUgYnksIGFuZCB3aGVuIGNvbnN0cnVjdGluZyBjb250cm9sIHNlcXVlbmNlIG5hbWVzLiAgSXQgZWxpbWluYXRlcyBhbGwKKyUgY29udHJvbCBzZXF1ZW5jZXMgYW5kIGp1c3Qgd3JpdGVzIHdoYXRldmVyIHRoZSBiZXN0IEFTQ0lJIHNvcnQgc3RyaW5nCislIHdvdWxkIGJlIGZvciBhIGdpdmVuIGNvbW1hbmQgKHVzdWFsbHkgaXRzIGFyZ3VtZW50KS4KKyUKK1xkZWZcaW5kZXhub2ZvbnRzeyUKKyAgJSBBY2NlbnQgY29tbWFuZHMgc2hvdWxkIGJlY29tZSBAYXNpcy4KKyAgXGRlZlxkZWZpbmVkdW1teWFjY2VudCMjMXtcbGV0IyMxXGFzaXN9JQorICAlIFdlIGNhbiBqdXN0IGlnbm9yZSBvdGhlciBjb250cm9sIGxldHRlcnMuCisgIFxkZWZcZGVmaW5lZHVtbXlsZXR0ZXIjIzF7XGxldCMjMVxlbXB0eX0lCisgICUgSG9wZWZ1bGx5LCBhbGwgY29udHJvbCB3b3JkcyBjYW4gYmVjb21lIEBhc2lzLgorICBcbGV0XGRlZmluZWR1bW15d29yZFxkZWZpbmVkdW1teWFjY2VudAorICAlCisgIFxjb21tb25kdW1taWVzbm9mb250cworICAlCisgICUgRG9uJ3Qgbm8tb3AgXHR0LCBzaW5jZSBpdCBpc24ndCBhIHVzZXItbGV2ZWwgY29tbWFuZAorICAlIGFuZCBpcyB1c2VkIGluIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgYWN0aXZlIGNoYXJzIGxpa2UgPCwgPiwgfCwgZXRjLgorICAlIExpa2V3aXNlIHdpdGggdGhlIG90aGVyIHBsYWluIHRleCBmb250IGNvbW1hbmRzLgorICAlXGxldFx0dD1cYXNpcworICAlCisgIFxkZWZcIHsgfSUKKyAgXGRlZlxAe0B9JQorICAlIGhvdyB0byBoYW5kbGUgYnJhY2VzPworICBcZGVmXF97XG5vcm1hbHVuZGVyc2NvcmV9JQorICAlCisgICUgTm9uLUVuZ2xpc2ggbGV0dGVycy4KKyAgXGRlZlxBQXtBQX0lCisgIFxkZWZcQUV7QUV9JQorICBcZGVmXEx7TH0lCisgIFxkZWZcT0V7T0V9JQorICBcZGVmXE97T30lCisgIFxkZWZcYWF7YWF9JQorICBcZGVmXGFle2FlfSUKKyAgXGRlZlxse2x9JQorICBcZGVmXG9le29lfSUKKyAgXGRlZlxve299JQorICBcZGVmXHNze3NzfSUKKyAgXGRlZlxleGNsYW1kb3dueyF9JQorICBcZGVmXHF1ZXN0aW9uZG93bns/fSUKKyAgXGRlZlxvcmRme2F9JQorICBcZGVmXG9yZG17b30lCisgICUKKyAgXGRlZlxMYVRlWHtMYVRlWH0lCisgIFxkZWZcVGVYe1RlWH0lCisgICUKKyAgJSBBc3NvcnRlZCBzcGVjaWFsIGNoYXJhY3RlcnMuCisgICUgKFRoZSBmb2xsb3dpbmcge30gd2lsbCBlbmQgdXAgaW4gdGhlIHNvcnQgc3RyaW5nLCBidXQgdGhhdCdzIG9rLikKKyAgXGRlZlxidWxsZXR7YnVsbGV0fSUKKyAgXGRlZlxjb21tYXssfSUKKyAgXGRlZlxjb3B5cmlnaHR7Y29weXJpZ2h0fSUKKyAgXGRlZlxyZWdpc3RlcmVkc3ltYm9se1J9JQorICBcZGVmXGRvdHN7Li4ufSUKKyAgXGRlZlxlbmRkb3Rzey4uLn0lCisgIFxkZWZcZXF1aXZ7PT19JQorICBcZGVmXGVycm9ye2Vycm9yfSUKKyAgXGRlZlxldXJve2V1cm99JQorICBcZGVmXGV4cGFuc2lvbns9PT59JQorICBcZGVmXG1pbnVzey19JQorICBcZGVmXHBvdW5kc3twb3VuZHN9JQorICBcZGVmXHBvaW50ey59JQorICBcZGVmXHByaW50ey18fSUKKyAgXGRlZlxyZXN1bHR7PT59JQorICAlCisgICUgV2UgbmVlZCB0byBnZXQgcmlkIG9mIGFsbCBtYWNyb3MsIGxlYXZpbmcgb25seSB0aGUgYXJndW1lbnRzIChpZiBwcmVzZW50KS4KKyAgJSBPZiBjb3Vyc2UgdGhpcyBpcyBub3QgbmVhcmx5IGNvcnJlY3QsIGJ1dCBpdCBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8gZm9yIG5vdy4KKyAgJSBtYWtlaW5mbyBkb2VzIG5vdCBleHBhbmQgbWFjcm9zIGluIHRoZSBhcmd1bWVudCB0byBAZGVmZm4sIHdoaWNoIGVuZHMgdXAKKyAgJSB3cml0aW5nIGFuIGluZGV4IGVudHJ5LCBhbmQgdGV4aW5kZXggaXNuJ3QgcHJlcGFyZWQgZm9yIGFuIGluZGV4IHNvcnQgZW50cnkKKyAgJSB0aGF0IHN0YXJ0cyB3aXRoIFwuCisgICUgCisgICUgU2luY2UgbWFjcm8gaW52b2NhdGlvbnMgYXJlIGZvbGxvd2VkIGJ5IGJyYWNlcywgd2UgY2FuIGp1c3QgcmVkZWZpbmUgdGhlbQorICAlIHRvIHRha2UgYSBzaW5nbGUgVGVYIGFyZ3VtZW50LiAgVGhlIGNhc2Ugb2YgYSBtYWNybyBpbnZvY2F0aW9uIHRoYXQKKyAgJSBnb2VzIHRvIGVuZC1vZi1saW5lIGlzIG5vdCBoYW5kbGVkLgorICAlIAorICBcbWFjcm9saXN0Cit9CisKK1xsZXRcaW5kZXhiYWNrc2xhc2g9MCAgJW92ZXJyaWRkZW4gZHVyaW5nIFxwcmludGluZGV4LgorXGxldFxTRVRtYXJnaW5pbmRleD1ccmVsYXggJSBwdXQgaW5kZXggZW50cmllcyBpbiBtYXJnaW4gKHVuZG9jdW1lbnRlZCk/CisKKyUgTW9zdCBpbmRleCBlbnRyaWVzIGdvIHRocm91Z2ggaGVyZSwgYnV0IFxkb3N1YmluZCBpcyB0aGUgZ2VuZXJhbCBjYXNlLgorJSAjMSBpcyB0aGUgaW5kZXggbmFtZSwgIzIgaXMgdGhlIGVudHJ5IHRleHQuCitcZGVmXGRvaW5kIzEjMntcZG9zdWJpbmR7IzF9eyMyfXt9fQorCislIFdvcmtob3JzZSBmb3IgYWxsIFxmb29pbmRleGVzLgorJSAjMSBpcyBuYW1lIG9mIGluZGV4LCAjMiBpcyBzdHVmZiB0byBwdXQgdGhlcmUsICMzIGlzIHN1YmVudHJ5IC0tCislIGVtcHR5IGlmIGNhbGxlZCBmcm9tIFxkb2luZCwgYXMgd2UgdXN1YWxseSBhcmUgKHRoZSBtYWluIGV4Y2VwdGlvbgorJSBpcyB3aXRoIG1vc3QgZGVmdW5zLCB3aGljaCBjYWxsIHVzIGRpcmVjdGx5KS4KKyUKK1xkZWZcZG9zdWJpbmQjMSMyIzN7JQorICBcaWZsaW5rcworICB7JQorICAgICUgU3RvcmUgdGhlIG1haW4gaW5kZXggZW50cnkgdGV4dCAoaW5jbHVkaW5nIHRoZSB0aGlyZCBhcmcpLgorICAgIFx0b2tzMCA9IHsjMn0lCisgICAgJSBJZiB0aGlyZCBhcmcgaXMgcHJlc2VudCwgcHJlY2VkZSBpdCB3aXRoIGEgc3BhY2UuCisgICAgXGRlZlx0aGlyZGFyZ3sjM30lCisgICAgXGlmeFx0aGlyZGFyZ1xlbXB0eSBcZWxzZQorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1x0aGVcdG9rczAgXHNwYWNlICMzfSUKKyAgICBcZmkKKyAgICAlCisgICAgXGVkZWZcd3JpdGV0b3tcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZX0lCisgICAgJQorICAgIFxpZnZtb2RlCisgICAgICBcZG9zdWJpbmRzYW5pdGl6ZQorICAgIFxlbHNlCisgICAgICBcZG9zdWJpbmR3cml0ZQorICAgIFxmaQorICB9JQorICBcZmkKK30KKworJSBXcml0ZSB0aGUgZW50cnkgaW4gXHRva3MwIHRvIHRoZSBpbmRleCBmaWxlOgorJQorXGRlZlxkb3N1YmluZHdyaXRleyUKKyAgJSBQdXQgdGhlIGluZGV4IGVudHJ5IGluIHRoZSBtYXJnaW4gaWYgZGVzaXJlZC4KKyAgXGlmeFxTRVRtYXJnaW5pbmRleFxyZWxheFxlbHNlCisgICAgXGluc2VydFxtYXJnaW57XGhib3h7XHZydWxlIGhlaWdodDhwdCBkZXB0aDNwdCB3aWR0aDBwdCBcdGhlXHRva3MwfX0lCisgIFxmaQorICAlCisgICUgUmVtZW1iZXIsIHdlIGFyZSB3aXRoaW4gYSBncm91cC4KKyAgXGluZGV4ZHVtbWllcyAlIE11c3QgZG8gdGhpcyBoZXJlLCBzaW5jZSBcYmYsIGV0YyBleHBhbmQgYXQgdGhpcyBzdGFnZQorICBcZGVmXGJhY2tzbGFzaGN1cmZvbnR7XGluZGV4YmFja3NsYXNofSUgXGluZGV4YmFja3NsYXNoIGlzbid0IGRlZmluZWQgbm93CisgICAgICAlIHNvIGl0IHdpbGwgYmUgb3V0cHV0IGFzIGlzOyBhbmQgaXQgd2lsbCBwcmludCBhcyBiYWNrc2xhc2guCisgICUKKyAgJSBQcm9jZXNzIHRoZSBpbmRleCBlbnRyeSB3aXRoIGFsbCBmb250IGNvbW1hbmRzIHR1cm5lZCBvZmYsIHRvCisgICUgZ2V0IHRoZSBzdHJpbmcgdG8gc29ydCBieS4KKyAge1xpbmRleG5vZm9udHMKKyAgIFxlZGVmXHRlbXB7XHRoZVx0b2tzMH0lIG5lZWQgZnVsbCBleHBhbnNpb24KKyAgIFx4ZGVmXGluZGV4c29ydHRtcHtcdGVtcH0lCisgIH0lCisgICUKKyAgJSBTZXQgdXAgdGhlIGNvbXBsZXRlIGluZGV4IGVudHJ5LCB3aXRoIGJvdGggdGhlIHNvcnQga2V5IGFuZAorICAlIHRoZSBvcmlnaW5hbCB0ZXh0LCBpbmNsdWRpbmcgYW55IGZvbnQgY29tbWFuZHMuICBXZSB3cml0ZQorICAlIHRocmVlIGFyZ3VtZW50cyB0byBcZW50cnkgdG8gdGhlIC4/PyBmaWxlIChmb3VyIGluIHRoZQorICAlIHN1YmVudHJ5IGNhc2UpLCB0ZXhpbmRleCByZWR1Y2VzIHRvIHR3byB3aGVuIHdyaXRpbmcgdGhlIC4/P3MKKyAgJSBzb3J0ZWQgcmVzdWx0LgorICBcZWRlZlx0ZW1weyUKKyAgICBcd3JpdGVcd3JpdGV0b3slCisgICAgICBcc3RyaW5nXGVudHJ5e1xpbmRleHNvcnR0bXB9e1xub2V4cGFuZFxmb2xpb317XHRoZVx0b2tzMH19JQorICB9JQorICBcdGVtcAorfQorCislIFRha2UgY2FyZSBvZiB1bndhbnRlZCBwYWdlIGJyZWFrczoKKyUKKyUgSWYgYSBza2lwIGlzIHRoZSBsYXN0IHRoaW5nIG9uIHRoZSBsaXN0IG5vdywgcHJlc2VydmUgaXQKKyUgYnkgYmFja2luZyB1cCBieSBcbGFzdHNraXAsIGRvaW5nIHRoZSBcd3JpdGUsIHRoZW4gaW5zZXJ0aW5nCislIHRoZSBza2lwIGFnYWluLiAgT3RoZXJ3aXNlLCB0aGUgd2hhdHNpdCBnZW5lcmF0ZWQgYnkgdGhlCislIFx3cml0ZSB3aWxsIG1ha2UgXGxhc3Rza2lwIHplcm8uICBUaGUgcmVzdWx0IGlzIHRoYXQgc2VxdWVuY2VzCislIGxpa2UgdGhpczoKKyUgQGVuZCBkZWZ1bgorJSBAdGluZGV4IHdoYXRldmVyCislIEBkZWZ1biAuLi4KKyUgd2lsbCBoYXZlIGV4dHJhIHNwYWNlIGluc2VydGVkLCBiZWNhdXNlIHRoZSBcbWVkYnJlYWsgaW4gdGhlCislIHN0YXJ0IG9mIHRoZSBAZGVmdW4gd29uJ3Qgc2VlIHRoZSBza2lwIGluc2VydGVkIGJ5IHRoZSBAZW5kIG9mCislIHRoZSBwcmV2aW91cyBkZWZ1bi4KKyUKKyUgQnV0IGRvbid0IGRvIGFueSBvZiB0aGlzIGlmIHdlJ3JlIG5vdCBpbiB2ZXJ0aWNhbCBtb2RlLiAgV2UKKyUgZG9uJ3Qgd2FudCB0byBkbyBhIFx2c2tpcCBhbmQgcHJlbWF0dXJlbHkgZW5kIGEgcGFyYWdyYXBoLgorJQorJSBBdm9pZCBwYWdlIGJyZWFrcyBkdWUgdG8gdGhlc2UgZXh0cmEgc2tpcHMsIHRvby4KKyUKKyUgQnV0IHdhaXQsIHRoZXJlIGlzIGEgY2F0Y2ggdGhlcmU6CislIFdlJ2xsIGhhdmUgdG8gY2hlY2sgd2hldGhlciBcbGFzdHNraXAgaXMgemVybyBza2lwLiAgXGlmZGltIGlzIG5vdAorJSBzdWZmaWNpZW50IGZvciB0aGlzIHB1cnBvc2UsIGFzIGl0IGlnbm9yZXMgc3RyZXRjaCBhbmQgc2hyaW5rIHBhcnRzCislIG9mIHRoZSBza2lwLiAgVGhlIG9ubHkgd2F5IHNlZW1zIHRvIGJlIHRvIGNoZWNrIHRoZSB0ZXh0dWFsCislIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBza2lwLgorJQorJSBUaGUgZm9sbG93aW5nIGlzIGFsbW9zdCBsaWtlIFxkZWZcemVyb3NraXBtYWNyb3swLjBwdH0gZXhjZXB0IHRoYXQKKyUgdGhlIGBgcCcnIGFuZCBgYHQnJyBjaGFyYWN0ZXJzIGhhdmUgY2F0Y29kZSBcb3RoZXIsIG5vdCAxMSAobGV0dGVyKS4KKyUKK1xlZGVmXHplcm9za2lwbWFjcm97XGV4cGFuZGFmdGVyXHRoZVxjc25hbWUgekBza2lwXGVuZGNzbmFtZX0KKyUKKyUgLi4uLCByZWFkeSwgR086CislCitcZGVmXGRvc3ViaW5kc2FuaXRpemV7JQorICAlIFxsYXN0c2tpcCBhbmQgXGxhc3RwZW5hbHR5IGNhbm5vdCBib3RoIGJlIG5vbnplcm8gc2ltdWx0YW5lb3VzbHkuCisgIFxza2lwMCA9IFxsYXN0c2tpcAorICBcZWRlZlxsYXN0c2tpcG1hY3Jve1x0aGVcbGFzdHNraXB9JQorICBcY291bnQyNTUgPSBcbGFzdHBlbmFsdHkKKyAgJQorICAlIElmIFxsYXN0c2tpcCBpcyBub256ZXJvLCB0aGF0IG1lYW5zIHRoZSBsYXN0IGl0ZW0gd2FzIGEKKyAgJSBza2lwLiAgQW5kIHNpbmNlIGEgc2tpcCBpcyBkaXNjYXJkYWJsZSwgdGhhdCBtZWFucyB0aGlzCisgICUgLVxza2lwMCBnbHVlIHdlJ3JlIGluc2VydGluZyBpcyBwcmVjZWRlZCBieSBhCisgICUgbm9uLWRpc2NhcmRhYmxlIGl0ZW0sIHRoZXJlZm9yZSBpdCBpcyBub3QgYSBwb3RlbnRpYWwKKyAgJSBicmVha3BvaW50LCB0aGVyZWZvcmUgbm8gXG5vYnJlYWsgbmVlZGVkLgorICBcaWZ4XGxhc3Rza2lwbWFjcm9cemVyb3NraXBtYWNybworICBcZWxzZQorICAgIFx2c2tpcC1cc2tpcDAKKyAgXGZpCisgICUKKyAgXGRvc3ViaW5kd3JpdGUKKyAgJQorICBcaWZ4XGxhc3Rza2lwbWFjcm9cemVyb3NraXBtYWNybworICAgICUgSWYgXGxhc3Rza2lwIHdhcyB6ZXJvLCBwZXJoYXBzIHRoZSBsYXN0IGl0ZW0gd2FzIGEgcGVuYWx0eSwgYW5kCisgICAgJSBwZXJoYXBzIGl0IHdhcyA+PTEwMDAwLCBlLmcuLCBhIFxub2JyZWFrLiAgSW4gdGhhdCBjYXNlLCB3ZSB3YW50CisgICAgJSB0byByZS1pbnNlcnQgdGhlIHNhbWUgcGVuYWx0eSAodmFsdWVzID4xMDAwMCBhcmUgdXNlZCBmb3IgdmFyaW91cworICAgICUgc2lnbmFscyk7IHNpbmNlIHdlIGp1c3QgaW5zZXJ0ZWQgYSBub24tZGlzY2FyZGFibGUgaXRlbSwgYW55CisgICAgJSBmb2xsb3dpbmcgZ2x1ZSAoc3VjaCBhcyBhIFxwYXJza2lwKSB3b3VsZCBiZSBhIGJyZWFrcG9pbnQuICBGb3IgZXhhbXBsZToKKyAgICAlIAorICAgICUgICBAZGVmZm4gZGVmZm4td2hhdGV2ZXIKKyAgICAlICAgQHZpbmRleCBpbmRleC13aGF0ZXZlcgorICAgICUgICBEZXNjcmlwdGlvbi4KKyAgICAlIHdvdWxkIGFsbG93IGEgYnJlYWsgYmV0d2VlbiB0aGUgaW5kZXgtd2hhdGV2ZXIgd2hhdHNpdAorICAgICUgYW5kIHRoZSAiRGVzY3JpcHRpb24uIiBwYXJhZ3JhcGguCisgICAgXGlmbnVtXGNvdW50MjU1Pjk5OTkgXHBlbmFsdHlcY291bnQyNTUgXGZpCisgIFxlbHNlCisgICAgJSBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgd2UgaGFkIGEgbm9uemVybyBcbGFzdHNraXAsCisgICAgJSB0aGlzIG1ha2UtdXAgZ2x1ZSB3b3VsZCBiZSBwcmVjZWRlZCBieSBhIG5vbi1kaXNjYXJkYWJsZSBpdGVtCisgICAgJSAodGhlIHdoYXRzaXQgZnJvbSB0aGUgXHdyaXRlKSwgc28gd2UgbXVzdCBpbnNlcnQgYSBcbm9icmVhay4KKyAgICBcbm9icmVha1x2c2tpcFxza2lwMAorICBcZmkKK30KKworJSBUaGUgaW5kZXggZW50cnkgd3JpdHRlbiBpbiB0aGUgZmlsZSBhY3R1YWxseSBsb29rcyBsaWtlCislICBcZW50cnkge3NvcnRzdHJpbmd9e3BhZ2V9e3RvcGljfQorJSBvcgorJSAgXGVudHJ5IHtzb3J0c3RyaW5nfXtwYWdlfXt0b3BpY317c3VidG9waWN9CislIFRoZSB0ZXhpbmRleCBwcm9ncmFtIHJlYWRzIGluIHRoZXNlIGZpbGVzIGFuZCB3cml0ZXMgZmlsZXMKKyUgY29udGFpbmluZyB0aGVzZSBraW5kcyBvZiBsaW5lczoKKyUgIFxpbml0aWFsIHtjfQorJSAgICAgYmVmb3JlIHRoZSBmaXJzdCB0b3BpYyB3aG9zZSBpbml0aWFsIGlzIGMKKyUgIFxlbnRyeSB7dG9waWN9e3BhZ2VsaXN0fQorJSAgICAgZm9yIGEgdG9waWMgdGhhdCBpcyB1c2VkIHdpdGhvdXQgc3VidG9waWNzCislICBccHJpbWFyeSB7dG9waWN9CislICAgICBmb3IgdGhlIGJlZ2lubmluZyBvZiBhIHRvcGljIHRoYXQgaXMgdXNlZCB3aXRoIHN1YnRvcGljcworJSAgXHNlY29uZGFyeSB7c3VidG9waWN9e3BhZ2VsaXN0fQorJSAgICAgZm9yIGVhY2ggc3VidG9waWMuCisKKyUgRGVmaW5lIHRoZSB1c2VyLWFjY2Vzc2libGUgaW5kZXhpbmcgY29tbWFuZHMKKyUgQGZpbmRleCwgQHZpbmRleCwgQGtpbmRleCwgQGNpbmRleC4KKworXGRlZlxmaW5kZXgge1xmbmluZGV4fQorXGRlZlxraW5kZXgge1xreWluZGV4fQorXGRlZlxjaW5kZXgge1xjcGluZGV4fQorXGRlZlx2aW5kZXgge1x2cmluZGV4fQorXGRlZlx0aW5kZXgge1x0cGluZGV4fQorXGRlZlxwaW5kZXgge1xwZ2luZGV4fQorCitcZGVmXGNpbmRleHN1YiB7XGJlZ2luZ3JvdXBcb2JleWxpbmVzXGNpbmRleHN1Yn0KK3tcb2JleWxpbmVzICUKK1xnZGVmXGNpbmRleHN1YiAiIzEiICMyXl5Ne1xlbmRncm91cCAlCitcZG9zdWJpbmR7Y3B9eyMyfXsjMX19fQorCislIERlZmluZSB0aGUgbWFjcm9zIHVzZWQgaW4gZm9ybWF0dGluZyBvdXRwdXQgb2YgdGhlIHNvcnRlZCBpbmRleCBtYXRlcmlhbC4KKworJSBAcHJpbnRpbmRleCBjYXVzZXMgYSBwYXJ0aWN1bGFyIGluZGV4ICh0aGUgPz9zIGZpbGUpIHRvIGdldCBwcmludGVkLgorJSBJdCBkb2VzIG5vdCBwcmludCBhbnkgY2hhcHRlciBoZWFkaW5nICh1c3VhbGx5IGFuIEB1bm51bWJlcmVkKS4KKyUKK1xwYXJzZWFyZ2RlZlxwcmludGluZGV4e1xiZWdpbmdyb3VwCisgIFxkb2JyZWFrIFxjaGFwaGVhZGluZ3NraXB7MTAwMDB9JQorICAlCisgIFxzbWFsbGZvbnRzIFxybQorICBcdG9sZXJhbmNlID0gOTUwMAorICBcZXZlcnlwYXIgPSB7fSUgZG9uJ3Qgd2FudCB0aGUgXGtlcm5cLXBhcmluZGVudCBmcm9tIGluZGVudGF0aW9uIHN1cHByZXNzaW9uLgorICAlCisgICUgU2VlIGlmIHRoZSBpbmRleCBmaWxlIGV4aXN0cyBhbmQgaXMgbm9uZW1wdHkuCisgICUgQ2hhbmdlIGNhdGNvZGUgb2YgQCBoZXJlIHNvIHRoYXQgaWYgdGhlIGluZGV4IGZpbGUgY29udGFpbnMKKyAgJSBcaW5pdGlhbCB7QH0KKyAgJSBhcyBpdHMgZmlyc3QgbGluZSwgVGVYIGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgbWlzbWF0Y2hlZCBicmFjZXMKKyAgJSAoYmVjYXVzZSBpdCB0aGlua3MgQH0gaXMgYSBjb250cm9sIHNlcXVlbmNlKS4KKyAgXGNhdGNvZGVgXEAgPSAxMQorICBcb3BlbmluIDEgXGpvYm5hbWUuIzFzCisgIFxpZmVvZiAxCisgICAgJSBcZW5kZG91YmxlY29sdW1ucyBnZXRzIGNvbmZ1c2VkIGlmIHRoZXJlIGlzIG5vIHRleHQgaW4gdGhlIGluZGV4LAorICAgICUgYW5kIGl0IGxvc2VzIHRoZSBjaGFwdGVyIHRpdGxlIGFuZCB0aGUgYXV4IGZpbGUgZW50cmllcyBmb3IgdGhlCisgICAgJSBpbmRleC4gIFRoZSBlYXNpZXN0IHdheSB0byBwcmV2ZW50IHRoaXMgcHJvYmxlbSBpcyB0byBtYWtlIHN1cmUKKyAgICAlIHRoZXJlIGlzIHNvbWUgdGV4dC4KKyAgICBccHV0d29yZEluZGV4Tm9uZXhpc3RlbnQKKyAgXGVsc2UKKyAgICAlCisgICAgJSBJZiB0aGUgaW5kZXggZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5LCB0aGVuIFxvcGVuaW4gbGVhdmVzIFxpZmVvZgorICAgICUgZmFsc2UuICBXZSBoYXZlIHRvIG1ha2UgVGVYIHRyeSB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBmaWxlLCBzbworICAgICUgaXQgY2FuIGRpc2NvdmVyIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIGl0LgorICAgIFxyZWFkIDEgdG8gXHRlbXAKKyAgICBcaWZlb2YgMQorICAgICAgXHB1dHdvcmRJbmRleElzRW1wdHkKKyAgICBcZWxzZQorICAgICAgJSBJbmRleCBmaWxlcyBhcmUgYWxtb3N0IFRleGluZm8gc291cmNlLCBidXQgd2UgdXNlIFwgYXMgdGhlIGVzY2FwZQorICAgICAgJSBjaGFyYWN0ZXIuICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdXNlIEAsIGJ1dCB0aGF0J3MgdG9vIGJpZyBhIGNoYW5nZQorICAgICAgJSB0byBtYWtlIHJpZ2h0IG5vdy4KKyAgICAgIFxkZWZcaW5kZXhiYWNrc2xhc2h7XGJhY2tzbGFzaGN1cmZvbnR9JQorICAgICAgXGNhdGNvZGVgXFwgPSAwCisgICAgICBcZXNjYXBlY2hhciA9IGBcXAorICAgICAgXGJlZ2luZG91YmxlY29sdW1ucworICAgICAgXGlucHV0IFxqb2JuYW1lLiMxcworICAgICAgXGVuZGRvdWJsZWNvbHVtbnMKKyAgICBcZmkKKyAgXGZpCisgIFxjbG9zZWluIDEKK1xlbmRncm91cH0KKworJSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYnkgdGhlIHNvcnRlZCBpbmRleCBmaWxlIGl0c2VsZi4KKyUgQ2hhbmdlIHRoZW0gdG8gY29udHJvbCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5kZXguCisKK1xkZWZcaW5pdGlhbCMxe3slCisgICUgU29tZSBtaW5vciBmb250IGNoYW5nZXMgZm9yIHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMuCisgIFxsZXRcdGVudHQ9XHNlY3R0IFxsZXRcdHQ9XHNlY3R0IFxsZXRcc2Y9XHNlY3R0CisgICUKKyAgJSBSZW1vdmUgYW55IGdsdWUgd2UgbWF5IGhhdmUsIHdlJ2xsIGJlIGluc2VydGluZyBvdXIgb3duLgorICBccmVtb3ZlbGFzdHNraXAKKyAgJQorICAlIFdlIGxpa2UgYnJlYWtzIGJlZm9yZSB0aGUgaW5kZXggaW5pdGlhbHMsIHNvIGluc2VydCBhIGJvbnVzLgorICBcbm9icmVhaworICBcdnNraXAgMHB0IHBsdXMgM1xiYXNlbGluZXNraXAKKyAgXHBlbmFsdHkgMAorICBcdnNraXAgMHB0IHBsdXMgLTNcYmFzZWxpbmVza2lwCisgICUKKyAgJSBUeXBlc2V0IHRoZSBpbml0aWFsLiAgTWFraW5nIHRoaXMgYWRkIHVwIHRvIGEgd2hvbGUgbnVtYmVyIG9mCisgICUgYmFzZWxpbmVza2lwcyBpbmNyZWFzZXMgdGhlIGNoYW5jZSBvZiB0aGUgZG90cyBsaW5pbmcgdXAgZnJvbSBjb2x1bW4KKyAgJSB0byBjb2x1bW4uICBJdCBzdGlsbCB3b24ndCBvZnRlbiBiZSBwZXJmZWN0LCBiZWNhdXNlIG9mIHRoZSBzdHJldGNoCisgICUgd2UgbmVlZCBiZWZvcmUgZWFjaCBlbnRyeSwgYnV0IGl0J3MgYmV0dGVyLgorICAlCisgICUgTm8gc2hyaW5rIGJlY2F1c2UgaXQgY29uZnVzZXMgXGJhbGFuY2Vjb2x1bW5zLgorICBcdnNraXAgMS42N1xiYXNlbGluZXNraXAgcGx1cyAuNVxiYXNlbGluZXNraXAKKyAgXGxlZnRsaW5le1xzZWNiZiAjMX0lCisgICUgRG8gb3VyIGJlc3Qgbm90IHRvIGJyZWFrIGFmdGVyIHRoZSBpbml0aWFsLgorICBcbm9icmVhaworICBcdnNraXAgLjMzXGJhc2VsaW5lc2tpcCBwbHVzIC4xXGJhc2VsaW5lc2tpcAorfX0KKworJSBcZW50cnkgdHlwZXNldHMgYSBwYXJhZ3JhcGggY29uc2lzdGluZyBvZiB0aGUgdGV4dCAoIzEpLCBkb3QgbGVhZGVycywgYW5kCislIHRoZW4gcGFnZSBudW1iZXIgKCMyKSBmbHVzaGVkIHRvIHRoZSByaWdodCBtYXJnaW4uICBJdCBpcyB1c2VkIGZvciBpbmRleAorJSBhbmQgdGFibGUgb2YgY29udGVudHMgZW50cmllcy4gIFRoZSBwYXJhZ3JhcGggaXMgaW5kZW50ZWQgYnkgXGxlZnRza2lwLgorJQorJSBBIHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBzdGFydCBsaWtlIHRoaXM6CislCVxkZWZcZW50cnkjMSMyey4uLgorJSBCdXQgdGhpcyBmcm96ZXMgdGhlIGNhdGNvZGVzIGluIHRoZSBhcmd1bWVudCwgYW5kIGNhbiBjYXVzZSBwcm9ibGVtcyB0bworJSBAY29kZSwgd2hpY2ggc2V0cyAtIGFjdGl2ZS4gIFRoaXMgcHJvYmxlbSB3YXMgZml4ZWQgYnkgYSBrbHVkZ2UtLS0KKyUgYGAtJycgd2FzIGFjdGl2ZSB0aHJvdWdob3V0IHdob2xlIGluZGV4LCBidXQgdGhpcyBpc24ndCByZWFsbHkgcmlnaHQuCislCislIFRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBwcmV2ZW50IFxlbnRyeSBmcm9tIHN3YWxsb3dpbmcgdGhlIHdob2xlIHRleHQuCislICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1rYXNhbCwgMjFub3YwMworXGRlZlxlbnRyeXslCisgIFxiZWdpbmdyb3VwCisgICAgJQorICAgICUgU3RhcnQgYSBuZXcgcGFyYWdyYXBoIGlmIG5lY2Vzc2FyeSwgc28gb3VyIGFzc2lnbm1lbnRzIGJlbG93IGNhbid0CisgICAgJSBhZmZlY3QgcHJldmlvdXMgdGV4dC4KKyAgICBccGFyCisgICAgJQorICAgICUgRG8gbm90IGZpbGwgb3V0IHRoZSBsYXN0IGxpbmUgd2l0aCB3aGl0ZSBzcGFjZS4KKyAgICBccGFyZmlsbHNraXAgPSAwaW4KKyAgICAlCisgICAgJSBObyBleHRyYSBzcGFjZSBhYm92ZSB0aGlzIHBhcmFncmFwaC4KKyAgICBccGFyc2tpcCA9IDBpbgorICAgICUKKyAgICAlIERvIG5vdCBwcmVmZXIgYSBzZXBhcmF0ZSBsaW5lIGVuZGluZyB3aXRoIGEgaHlwaGVuIHRvIGZld2VyIGxpbmVzLgorICAgIFxmaW5hbGh5cGhlbmRlbWVyaXRzID0gMAorICAgICUKKyAgICAlIFxoYW5naW5kZW50IGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgZW50cnkgdGV4dCBhbmQgcGFnZSBudW1iZXIKKyAgICAlIGRvbid0IGJvdGggZml0IG9uIG9uZSBsaW5lLiAgSW4gdGhhdCBjYXNlLCBib2Igc3VnZ2VzdHMgc3RhcnRpbmcgdGhlCisgICAgJSBkb3RzIHByZXR0eSBmYXIgb3ZlciBvbiB0aGUgbGluZS4gIFVuZm9ydHVuYXRlbHksIGEgbGFyZ2UKKyAgICAlIGluZGVudGF0aW9uIGxvb2tzIHdyb25nIHdoZW4gdGhlIGVudHJ5IHRleHQgaXRzZWxmIGlzIGJyb2tlbiBhY3Jvc3MKKyAgICAlIGxpbmVzLiAgU28gd2UgdXNlIGEgc21hbGwgaW5kZW50YXRpb24gYW5kIHB1dCB1cCB3aXRoIGxvbmcgbGVhZGVycy4KKyAgICAlCisgICAgJSBcaGFuZ2FmdGVyIGlzIHJlc2V0IHRvIDEgKHdoaWNoIGlzIHRoZSB2YWx1ZSB3ZSB3YW50KSBhdCB0aGUgc3RhcnQKKyAgICAlIG9mIGVhY2ggcGFyYWdyYXBoLCBzbyB3ZSBuZWVkIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoYXQuCisgICAgXGhhbmdpbmRlbnQgPSAyZW0KKyAgICAlCisgICAgJSBXaGVuIHRoZSBlbnRyeSB0ZXh0IG5lZWRzIHRvIGJlIGJyb2tlbiwganVzdCBmaWxsIG91dCB0aGUgZmlyc3QgbGluZQorICAgICUgd2l0aCBibGFuayBzcGFjZS4KKyAgICBccmlnaHRza2lwID0gMHB0IHBsdXMxZmlsCisgICAgJQorICAgICUgQSBiaXQgb2Ygc3RyZXRjaCBiZWZvcmUgZWFjaCBlbnRyeSBmb3IgdGhlIGJlbmVmaXQgb2YgYmFsYW5jaW5nCisgICAgJSBjb2x1bW5zLgorICAgIFx2c2tpcCAwcHQgcGx1czFwdAorICAgICUKKyAgICAlIFN3YWxsb3cgdGhlIGxlZnQgYnJhY2Ugb2YgdGhlIHRleHQgKGZpcnN0IHBhcmFtZXRlcik6CisgICAgXGFmdGVyYXNzaWdubWVudFxkb2VudHJ5CisgICAgXGxldFx0ZW1wID0KK30KK1xkZWZcZG9lbnRyeXslCisgICAgXGJncm91cCAlIEluc3RlYWQgb2YgdGhlIHN3YWxsb3dlZCBicmFjZS4KKyAgICAgIFxub2luZGVudAorICAgICAgXGFmdGVyZ3JvdXBcZmluaXNoZW50cnkKKyAgICAgICUgQW5kIG5vdyBjb21lcyB0aGUgdGV4dCBvZiB0aGUgZW50cnkuCit9CitcZGVmXGZpbmlzaGVudHJ5IzF7JQorICAgICUgIzEgaXMgdGhlIHBhZ2UgbnVtYmVyLgorICAgICUKKyAgICAlIFRoZSBmb2xsb3dpbmcgaXMga2x1ZGdlZCB0byBub3Qgb3V0cHV0IGEgbGluZSBvZiBkb3RzIGluIHRoZSBpbmRleCBpZgorICAgICUgdGhlcmUgYXJlIG5vIHBhZ2UgbnVtYmVycy4gIFRoZSBuZXh0IHBlcnNvbiB3aG8gYnJlYWtzIHRoaXMgd2lsbCBiZQorICAgICUgY3Vyc2VkIGJ5IGEgVW5peCBkYWVtb24uCisgICAgXGRlZlx0ZW1wYXt7XHJtIH19JQorICAgIFxkZWZcdGVtcGJ7IzF9JQorICAgIFxlZGVmXHRlbXBje1x0ZW1wYX0lCisgICAgXGVkZWZcdGVtcGR7XHRlbXBifSUKKyAgICBcaWZ4XHRlbXBjXHRlbXBkCisgICAgICBcICUKKyAgICBcZWxzZQorICAgICAgJQorICAgICAgJSBJZiB3ZSBtdXN0LCBwdXQgdGhlIHBhZ2UgbnVtYmVyIG9uIGEgbGluZSBvZiBpdHMgb3duLCBhbmQgZmlsbCBvdXQKKyAgICAgICUgdGhpcyBsaW5lIHdpdGggYmxhbmsgc3BhY2UuICAoVGhlIFxoZmlsIGlzIG92ZXJ3aGVsbWVkIHdpdGggdGhlCisgICAgICAlIGZpbGwgbGVhZGVycyBnbHVlIGluIFxpbmRleGRvdGZpbGwgaWYgdGhlIHBhZ2UgbnVtYmVyIGRvZXMgZml0LikKKyAgICAgIFxoZmlsXHBlbmFsdHk1MAorICAgICAgXG51bGxcbm9icmVha1xpbmRleGRvdGZpbGwgJSBIYXZlIGxlYWRlcnMgYmVmb3JlIHRoZSBwYWdlIG51bWJlci4KKyAgICAgICUKKyAgICAgICUgVGhlIGBcICcgaGVyZSBpcyByZW1vdmVkIGJ5IHRoZSBpbXBsaWNpdCBcdW5za2lwIHRoYXQgVGVYIGRvZXMgYXMKKyAgICAgICUgcGFydCBvZiAodGhlIHByaW1pdGl2ZSkgXHBhci4gIFdpdGhvdXQgaXQsIGEgc3B1cmlvdXMgdW5kZXJmdWxsCisgICAgICAlIFxoYm94IGVuc3Vlcy4KKyAgICAgIFxpZnBkZgorCVxwZGZnZXR0b2tzIzEuJQorCVwgXHRoZVx0b2tzQQorICAgICAgXGVsc2UKKwlcICMxJQorICAgICAgXGZpCisgICAgXGZpCisgICAgXHBhcgorICBcZW5kZ3JvdXAKK30KKworJSBMaWtlIFxkb3RmaWxsIGV4Y2VwdCB0YWtlcyBhdCBsZWFzdCAxIGVtLgorXGRlZlxpbmRleGRvdGZpbGx7XGNsZWFkZXJzCisgIFxoYm94eyRcbWF0aHN1cnJvdW5kPTBwdCBcbWtlcm4xLjVtdSAke1xpdCAufSQgXG1rZXJuMS41bXUkfVxoc2tpcCAxZW0gcGx1cyAxZmlsbH0KKworXGRlZlxwcmltYXJ5ICMxe1xsaW5leyMxXGhmaWx9fQorCitcbmV3c2tpcFxzZWNvbmRhcnlpbmRlbnQgXHNlY29uZGFyeWluZGVudD0wLjVjbQorXGRlZlxzZWNvbmRhcnkjMSMye3slCisgIFxwYXJmaWxsc2tpcD0waW4KKyAgXHBhcnNraXA9MGluCisgIFxoYW5naW5kZW50PTFpbgorICBcaGFuZ2FmdGVyPTEKKyAgXG5vaW5kZW50XGhza2lwXHNlY29uZGFyeWluZGVudFxoYm94eyMxfVxpbmRleGRvdGZpbGwKKyAgXGlmcGRmCisgICAgXHBkZmdldHRva3MjMi5cIFx0aGVcdG9rc0EgJSBUaGUgcGFnZSBudW1iZXIgZW5kcyB0aGUgcGFyYWdyYXBoLgorICBcZWxzZQorICAgICMyCisgIFxmaQorICBccGFyCit9fQorCislIERlZmluZSB0d28tY29sdW1uIG1vZGUsIHdoaWNoIHdlIHVzZSB0byB0eXBlc2V0IGluZGV4ZXMuCislIEFkYXB0ZWQgZnJvbSB0aGUgVGVYYm9vaywgcGFnZSA0MTYsIHdoaWNoIGlzIHRvIHNheSwKKyUgdGhlIG1hbm1hYy50ZXggZm9ybWF0IHVzZWQgdG8gcHJpbnQgdGhlIFRlWGJvb2sgaXRzZWxmLgorXGNhdGNvZGVgXEA9MTEKKworXG5ld2JveFxwYXJ0aWFscGFnZQorXG5ld2RpbWVuXGRvdWJsZWNvbHVtbmhzaXplCisKK1xkZWZcYmVnaW5kb3VibGVjb2x1bW5ze1xiZWdpbmdyb3VwICUgZW5kZWQgYnkgXGVuZGRvdWJsZWNvbHVtbnMKKyAgJSBHcmFiIGFueSBzaW5nbGUtY29sdW1uIG1hdGVyaWFsIGFib3ZlIHVzLgorICBcb3V0cHV0ID0geyUKKyAgICAlCisgICAgJSBIZXJlIGlzIGEgcG9zc2liaWxpdHkgbm90IGZvcmVzZWVuIGluIG1hbm1hYzogaWYgd2UgYWNjdW11bGF0ZSBhCisgICAgJSB3aG9sZSBsb3Qgb2YgbWF0ZXJpYWwsIHdlIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIHRoaXMgXG91dHB1dAorICAgICUgcm91dGluZSB0d2ljZSBpbiBhIHJvdyAoc2VlIHRoZSBkb3VibGVjb2wtbG9zZSB0ZXN0LCB3aGljaCBpcworICAgICUgZXNzZW50aWFsbHkgYSBjb3VwbGUgb2YgaW5kZXhlcyB3aXRoIEBzZXRjaGFwdGVybmV3cGFnZSBvZmYpLiAgSW4KKyAgICAlIHRoYXQgY2FzZSB3ZSBqdXN0IHNoaXAgb3V0IHdoYXQgaXMgaW4gXHBhcnRpYWxwYWdlIHdpdGggdGhlIG5vcm1hbAorICAgICUgb3V0cHV0IHJvdXRpbmUuICBHZW5lcmFsbHksIFxwYXJ0aWFscGFnZSB3aWxsIGJlIGVtcHR5IHdoZW4gdGhpcworICAgICUgcnVucyBhbmQgdGhpcyB3aWxsIGJlIGEgbm8tb3AuICBTZWUgdGhlIGluZGV4c3ByZWFkLnRleCB0ZXN0IGNhc2UuCisgICAgXGlmdm9pZFxwYXJ0aWFscGFnZSBcZWxzZQorICAgICAgXG9uZXBhZ2VvdXR7XHBhZ2Vjb250ZW50c1xwYXJ0aWFscGFnZX0lCisgICAgXGZpCisgICAgJQorICAgIFxnbG9iYWxcc2V0Ym94XHBhcnRpYWxwYWdlID0gXHZib3h7JQorICAgICAgJSBVbnZib3ggdGhlIG1haW4gb3V0cHV0IHBhZ2UuCisgICAgICBcdW52Ym94XFBBR0UKKyAgICAgIFxrZXJuLVx0b3Bza2lwIFxrZXJuXGJhc2VsaW5lc2tpcAorICAgIH0lCisgIH0lCisgIFxlamVjdCAlIHJ1biB0aGF0IG91dHB1dCByb3V0aW5lIHRvIHNldCBccGFydGlhbHBhZ2UKKyAgJQorICAlIFVzZSB0aGUgZG91YmxlLWNvbHVtbiBvdXRwdXQgcm91dGluZSBmb3Igc3Vic2VxdWVudCBwYWdlcy4KKyAgXG91dHB1dCA9IHtcZG91YmxlY29sdW1ub3V0fSUKKyAgJQorICAlIENoYW5nZSB0aGUgcGFnZSBzaXplIHBhcmFtZXRlcnMuICBXZSBjb3VsZCBkbyB0aGlzIG9uY2Ugb3V0c2lkZSB0aGlzCisgICUgcm91dGluZSwgaW4gZWFjaCBvZiBAc21hbGxib29rLCBAYWZvdXJwYXBlciwgYW5kIHRoZSBkZWZhdWx0IDguNXgxMQorICAlIGZvcm1hdCwgYnV0IHRoZW4gd2UgcmVwZWF0IHRoZSBzYW1lIGNvbXB1dGF0aW9uLiAgUmVwZWF0aW5nIGEgY291cGxlCisgICUgb2YgYXNzaWdubWVudHMgb25jZSBwZXIgaW5kZXggaXMgY2xlYXJseSBtZWFuaW5nbGVzcyBmb3IgdGhlCisgICUgZXhlY3V0aW9uIHRpbWUsIHNvIHdlIG1heSBhcyB3ZWxsIGRvIGl0IGluIG9uZSBwbGFjZS4KKyAgJQorICAlIEZpcnN0IHdlIGhhbHZlIHRoZSBsaW5lIGxlbmd0aCwgbGVzcyBhIGxpdHRsZSBmb3IgdGhlIGd1dHRlciBiZXR3ZWVuCisgICUgdGhlIGNvbHVtbnMuICBXZSBjb21wdXRlIHRoZSBndXR0ZXIgYmFzZWQgb24gdGhlIGxpbmUgbGVuZ3RoLCBzbyBpdAorICAlIGNoYW5nZXMgYXV0b21hdGljYWxseSB3aXRoIHRoZSBwYXBlciBmb3JtYXQuICBUaGUgbWFnaWMgY29uc3RhbnQKKyAgJSBiZWxvdyBpcyBjaG9zZW4gc28gdGhhdCB0aGUgZ3V0dGVyIGhhcyB0aGUgc2FtZSB2YWx1ZSAod2VsbCwgKy08MXB0KQorICAlIGFzIGl0IGRpZCB3aGVuIHdlIGhhcmQtY29kZWQgaXQuCisgICUKKyAgJSBXZSBwdXQgdGhlIHJlc3VsdCBpbiBhIHNlcGFyYXRlIHJlZ2lzdGVyLCBcZG91YmxlY29sdW1oc2l6ZSwgc28gd2UKKyAgJSBjYW4gcmVzdG9yZSBpdCBpbiBccGFnZXNvZmFyLCBhZnRlciBcaHNpemUgaXRzZWxmIGhhcyAocG90ZW50aWFsbHkpCisgICUgYmVlbiBjbG9iYmVyZWQuCisgICUKKyAgXGRvdWJsZWNvbHVtbmhzaXplID0gXGhzaXplCisgICAgXGFkdmFuY2VcZG91YmxlY29sdW1uaHNpemUgYnkgLS4wNDE1NFxoc2l6ZQorICAgIFxkaXZpZGVcZG91YmxlY29sdW1uaHNpemUgYnkgMgorICBcaHNpemUgPSBcZG91YmxlY29sdW1uaHNpemUKKyAgJQorICAlIERvdWJsZSB0aGUgXHZzaXplIGFzIHdlbGwuICAoV2UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJlZ2lzdGVyIGhlcmUsCisgICUgc2luY2Ugbm9ib2R5IGNsb2JiZXJzIFx2c2l6ZS4pCisgIFx2c2l6ZSA9IDJcdnNpemUKK30KKworJSBUaGUgZG91YmxlLWNvbHVtbiBvdXRwdXQgcm91dGluZSBmb3IgYWxsIGRvdWJsZS1jb2x1bW4gcGFnZXMgZXhjZXB0CislIHRoZSBsYXN0LgorJQorXGRlZlxkb3VibGVjb2x1bW5vdXR7JQorICBcc3BsaXR0b3Bza2lwPVx0b3Bza2lwIFxzcGxpdG1heGRlcHRoPVxtYXhkZXB0aAorICAlIEdldCB0aGUgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUgZG91YmxlIGNvbHVtbnMgLS0gdGhlIG5vcm1hbAorICAlICh1bmRvdWJsZWQpIHBhZ2UgaGVpZ2h0IG1pbnVzIGFueSBtYXRlcmlhbCBsZWZ0IG92ZXIgZnJvbSB0aGUKKyAgJSBwcmV2aW91cyBwYWdlLgorICBcZGltZW5AID0gXHZzaXplCisgIFxkaXZpZGVcZGltZW5AIGJ5IDIKKyAgXGFkdmFuY2VcZGltZW5AIGJ5IC1caHRccGFydGlhbHBhZ2UKKyAgJQorICAlIGJveDAgd2lsbCBiZSB0aGUgbGVmdC1oYW5kIGNvbHVtbiwgYm94MiB0aGUgcmlnaHQuCisgIFxzZXRib3gwPVx2c3BsaXQyNTUgdG9cZGltZW5AIFxzZXRib3gyPVx2c3BsaXQyNTUgdG9cZGltZW5ACisgIFxvbmVwYWdlb3V0XHBhZ2Vzb2ZhcgorICBcdW52Ym94MjU1CisgIFxwZW5hbHR5XG91dHB1dHBlbmFsdHkKK30KKyUKKyUgUmUtb3V0cHV0IHRoZSBjb250ZW50cyBvZiB0aGUgb3V0cHV0IHBhZ2UgLS0gYW55IHByZXZpb3VzIG1hdGVyaWFsLAorJSBmb2xsb3dlZCBieSB0aGUgdHdvIGJveGVzIHdlIGp1c3Qgc3BsaXQsIGluIGJveDAgYW5kIGJveDIuCitcZGVmXHBhZ2Vzb2ZhcnslCisgIFx1bnZib3hccGFydGlhbHBhZ2UKKyAgJQorICBcaHNpemUgPSBcZG91YmxlY29sdW1uaHNpemUKKyAgXHdkMD1caHNpemUgXHdkMj1caHNpemUKKyAgXGhib3ggdG9ccGFnZXdpZHRoe1xib3gwXGhmaWxcYm94Mn0lCit9CislCislIEFsbCBkb25lIHdpdGggZG91YmxlIGNvbHVtbnMuCitcZGVmXGVuZGRvdWJsZWNvbHVtbnN7JQorICBcb3V0cHV0ID0geyUKKyAgICAlIFNwbGl0IHRoZSBsYXN0IG9mIHRoZSBkb3VibGUtY29sdW1uIG1hdGVyaWFsLiAgTGVhdmUgaXQgb24gdGhlCisgICAgJSBjdXJyZW50IHBhZ2UsIG5vIGF1dG9tYXRpYyBwYWdlIGJyZWFrLgorICAgIFxiYWxhbmNlY29sdW1ucworICAgICUKKyAgICAlIElmIHdlIGVuZCB1cCBzcGxpdHRpbmcgdG9vIG11Y2ggbWF0ZXJpYWwgZm9yIHRoZSBjdXJyZW50IHBhZ2UsCisgICAgJSB0aG91Z2gsIHRoZXJlIHdpbGwgYmUgYW5vdGhlciBwYWdlIGJyZWFrIHJpZ2h0IGFmdGVyIHRoaXMgXG91dHB1dAorICAgICUgaW52b2NhdGlvbiBlbmRzLiAgSGF2aW5nIGNhbGxlZCBcYmFsYW5jZWNvbHVtbnMgb25jZSwgd2UgZG8gbm90CisgICAgJSB3YW50IHRvIGNhbGwgaXQgYWdhaW4uICBUaGVyZWZvcmUsIHJlc2V0IFxvdXRwdXQgdG8gaXRzIG5vcm1hbAorICAgICUgZGVmaW5pdGlvbiByaWdodCBhd2F5LiAgKFdlIGhvcGUgXGJhbGFuY2Vjb2x1bW5zIHdpbGwgbmV2ZXIgYmUKKyAgICAlIGNhbGxlZCBvbiB0byBiYWxhbmNlIHRvbyBtdWNoIG1hdGVyaWFsLCBidXQgaWYgaXQgaXMsIHRoaXMgbWFrZXMKKyAgICAlIHRoZSBvdXRwdXQgc29tZXdoYXQgbW9yZSBwYWxhdGFibGUuKQorICAgIFxnbG9iYWxcb3V0cHV0ID0ge1xvbmVwYWdlb3V0e1xwYWdlY29udGVudHNcUEFHRX19JQorICB9JQorICBcZWplY3QKKyAgXGVuZGdyb3VwICUgc3RhcnRlZCBpbiBcYmVnaW5kb3VibGVjb2x1bW5zCisgICUKKyAgJSBccGFnZWdvYWwgd2FzIHNldCB0byB0aGUgZG91YmxlZCBcdnNpemUgYWJvdmUsIHNpbmNlIHdlIHJlc3RhcnRlZAorICAlIHRoZSBjdXJyZW50IHBhZ2UuICBXZSdyZSBub3cgYmFjayB0byBub3JtYWwgc2luZ2xlLWNvbHVtbgorICAlIHR5cGVzZXR0aW5nLCBzbyByZXNldCBccGFnZWdvYWwgdG8gdGhlIG5vcm1hbCBcdnNpemUgKGFmdGVyIHRoZQorICAlIFxlbmRncm91cCB3aGVyZSBcdnNpemUgZ290IHJlc3RvcmVkKS4KKyAgXHBhZ2Vnb2FsID0gXHZzaXplCit9CislCislIENhbGxlZCBhdCB0aGUgZW5kIG9mIHRoZSBkb3VibGUgY29sdW1uIG1hdGVyaWFsLgorXGRlZlxiYWxhbmNlY29sdW1uc3slCisgIFxzZXRib3gwID0gXHZib3h7XHVudmJveDI1NX0lIGxpa2UgXGJveDI1NSBidXQgbW9yZSBlZmZpY2llbnQsIHNlZSBwLjEyMC4KKyAgXGRpbWVuQCA9IFxodDAKKyAgXGFkdmFuY2VcZGltZW5AIGJ5IFx0b3Bza2lwCisgIFxhZHZhbmNlXGRpbWVuQCBieS1cYmFzZWxpbmVza2lwCisgIFxkaXZpZGVcZGltZW5AIGJ5IDIgJSB0YXJnZXQgdG8gc3BsaXQgdG8KKyAgJWRlYnVnXG1lc3NhZ2V7ZmluYWwgMi1jb2x1bW4gbWF0ZXJpYWwgaGVpZ2h0PVx0aGVcaHQwLCB0YXJnZXQ9XHRoZVxkaW1lbkAufSUKKyAgXHNwbGl0dG9wc2tpcCA9IFx0b3Bza2lwCisgICUgTG9vcCB1bnRpbCB3ZSBnZXQgYSBkZWNlbnQgYnJlYWtwb2ludC4KKyAgeyUKKyAgICBcdmJhZG5lc3MgPSAxMDAwMAorICAgIFxsb29wCisgICAgICBcZ2xvYmFsXHNldGJveDMgPSBcY29weTAKKyAgICAgIFxnbG9iYWxcc2V0Ym94MSA9IFx2c3BsaXQzIHRvIFxkaW1lbkAKKyAgICBcaWZkaW1caHQzPlxkaW1lbkAKKyAgICAgIFxnbG9iYWxcYWR2YW5jZVxkaW1lbkAgYnkgMXB0CisgICAgXHJlcGVhdAorICB9JQorICAlZGVidWdcbWVzc2FnZXtzcGxpdCB0byBcdGhlXGRpbWVuQCwgY29sdW1uIGhlaWdodHM6IFx0aGVcaHQxLCBcdGhlXGh0My59JQorICBcc2V0Ym94MD1cdmJveCB0b1xkaW1lbkB7XHVudmJveDF9JQorICBcc2V0Ym94Mj1cdmJveCB0b1xkaW1lbkB7XHVudmJveDN9JQorICAlCisgIFxwYWdlc29mYXIKK30KK1xjYXRjb2RlYFxAID0gXG90aGVyCisKKworXG1lc3NhZ2V7c2VjdGlvbmluZyx9CislIENoYXB0ZXJzLCBzZWN0aW9ucywgZXRjLgorCislIFx1bm51bWJlcmVkbm8gaXMgYW4gb3h5bW9yb24sIG9mIGNvdXJzZS4gIEJ1dCB3ZSBjb3VudCB0aGUgdW5udW1iZXJlZAorJSBzZWN0aW9ucyBzbyB0aGF0IHdlIGNhbiByZWZlciB0byB0aGVtIHVuYW1iaWd1b3VzbHkgaW4gdGhlIHBkZgorJSBvdXRsaW5lcyBieSB0aGVpciAic2VjdGlvbiBudW1iZXIiLiAgV2UgYXZvaWQgY29sbGlzaW9ucyB3aXRoIGNoYXB0ZXIKKyUgbnVtYmVycyBieSBzdGFydGluZyB0aGVtIGF0IDEwMDAwLiAgKElmIGEgZG9jdW1lbnQgZXZlciBoYXMgMTAwMDAKKyUgY2hhcHRlcnMsIHdlJ3JlIGluIHRyb3VibGUgYW55d2F5LCBJJ20gc3VyZS4pCitcbmV3Y291bnRcdW5udW1iZXJlZG5vIFx1bm51bWJlcmVkbm8gPSAxMDAwMAorXG5ld2NvdW50XGNoYXBubworXG5ld2NvdW50XHNlY25vICAgICAgICBcc2Vjbm89MAorXG5ld2NvdW50XHN1YnNlY25vICAgICBcc3Vic2Vjbm89MAorXG5ld2NvdW50XHN1YnN1YnNlY25vICBcc3Vic3Vic2Vjbm89MAorCislIFRoaXMgY291bnRlciBpcyBmdW5ueSBzaW5jZSBpdCBjb3VudHMgdGhyb3VnaCBjaGFyY29kZXMgb2YgbGV0dGVycyBBLCBCLCAuLi4KK1xuZXdjb3VudFxhcHBlbmRpeG5vICBcYXBwZW5kaXhubyA9IGBcQAorJQorJSBcZGVmXGFwcGVuZGl4bGV0dGVye1xjaGFyXHRoZVxhcHBlbmRpeG5vfQorJSBXZSBkbyB0aGUgZm9sbG93aW5nIHVnbHkgY29uZGl0aW9uYWwgaW5zdGVhZCBvZiB0aGUgYWJvdmUgc2ltcGxlCislIGNvbnN0cnVjdCBmb3IgdGhlIHNha2Ugb2YgcGRmdGV4LCB3aGljaCBuZWVkcyB0aGUgYWN0dWFsCislIGxldHRlciBpbiB0aGUgZXhwYW5zaW9uLCBub3QganVzdCB0eXBlc2V0LgorJQorXGRlZlxhcHBlbmRpeGxldHRlcnslCisgIFxpZm51bVxhcHBlbmRpeG5vPWBBIEElCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEIgQiUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gQyBDJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBEIEQlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEUgRSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gRiBGJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBHIEclCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEggSCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gSSBJJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBKIEolCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEsgSyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gTCBMJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBNIE0lCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YE4gTiUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gTyBPJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBQIFAlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFEgUSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gUiBSJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBTIFMlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFQgVCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gVSBVJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBWIFYlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFcgVyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gWCBYJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBZIFklCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFogWiUKKyAgJSBUaGUgXHRoZSBpcyBuZWNlc3NhcnksIGRlc3BpdGUgYXBwZWFyYW5jZXMsIGJlY2F1c2UgXGFwcGVuZGl4bGV0dGVyIGlzCisgICUgZXhwYW5kZWQgd2hpbGUgd3JpdGluZyB0aGUgLnRvYyBmaWxlLiAgXGNoYXJcYXBwZW5kaXhubyBpcyBub3QKKyAgJSBleHBhbmRhYmxlLCB0aHVzIGl0IGlzIHdyaXR0ZW4gbGl0ZXJhbGx5LCB0aHVzIGFsbCBhcHBlbmRpeGVzIGNvbWUgb3V0CisgICUgd2l0aCB0aGUgc2FtZSBsZXR0ZXIgKG9yIEApIGluIHRoZSB0b2Mgd2l0aG91dCBpdC4KKyAgXGVsc2VcY2hhclx0aGVcYXBwZW5kaXhubworICBcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmkKKyAgXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpfQorCislIEVhY2ggQGNoYXB0ZXIgZGVmaW5lcyB0aGlzIGFzIHRoZSBuYW1lIG9mIHRoZSBjaGFwdGVyLgorJSBwYWdlIGhlYWRpbmdzIGFuZCBmb290aW5ncyBjYW4gdXNlIGl0LiAgQHNlY3Rpb24gZG9lcyBsaWtld2lzZS4KKyUgSG93ZXZlciwgdGhleSBhcmUgbm90IHJlbGlhYmxlLCBiZWNhdXNlIHdlIGRvbid0IHVzZSBtYXJrcy4KK1xkZWZcdGhpc2NoYXB0ZXJ7fQorXGRlZlx0aGlzc2VjdGlvbnt9CisKK1xuZXdjb3VudFxhYnNzZWNsZXZlbCAlIHVzZWQgdG8gY2FsY3VsYXRlIHByb3BlciBoZWFkaW5nIGxldmVsCitcbmV3Y291bnRcc2VjYmFzZVxzZWNiYXNlPTAgJSBAcmFpc2VzZWN0aW9ucy9AbG93ZXJzZWN0aW9ucyBtb2RpZnkgdGhpcyBjb3VudAorCislIEByYWlzZXNlY3Rpb25zOiB0cmVhdCBAc2VjdGlvbiBhcyBjaGFwdGVyLCBAc3Vic2VjdGlvbiBhcyBzZWN0aW9uLCBldGMuCitcZGVmXHJhaXNlc2VjdGlvbnN7XGdsb2JhbFxhZHZhbmNlXHNlY2Jhc2UgYnkgLTF9CitcbGV0XHVwPVxyYWlzZXNlY3Rpb25zICUgb3JpZ2luYWwgQkZveCBuYW1lCisKKyUgQGxvd2Vyc2VjdGlvbnM6IHRyZWF0IEBjaGFwdGVyIGFzIHNlY3Rpb24sIEBzZWN0aW9uIGFzIHN1YnNlY3Rpb24sIGV0Yy4KK1xkZWZcbG93ZXJzZWN0aW9uc3tcZ2xvYmFsXGFkdmFuY2Vcc2VjYmFzZSBieSAxfQorXGxldFxkb3duPVxsb3dlcnNlY3Rpb25zICUgb3JpZ2luYWwgQkZveCBuYW1lCisKKyUgd2Ugb25seSBoYXZlIHN1YnN1Yi4KK1xjaGFyZGVmXG1heHNlY2xldmVsID0gMworJQorJSBBIG51bWJlcmVkIHNlY3Rpb24gd2l0aGluIGFuIHVubnVtYmVyZWQgY2hhbmdlcyB0byB1bm51bWJlcmVkIHRvby4KKyUgVG8gYWNoaXZlIHRoaXMsIHJlbWVtYmVyIHRoZSAiYmlnZ2VzdCIgdW5udW0uIHNlYy4gd2UgYXJlIGN1cnJlbnRseSBpbjoKK1xjaGFyZGVmXHVubWxldmVsID0gXG1heHNlY2xldmVsCislCislIFRyYWNlIHdoZXRoZXIgdGhlIGN1cnJlbnQgY2hhcHRlciBpcyBhbiBhcHBlbmRpeCBvciBub3Q6CislIFxjaGFwaGVhZHR5cGUgaXMgIk4iIG9yICJBIiwgdW5udW1iZXJlZCBjaGFwdGVycyBhcmUgaWdub3JlZC4KK1xkZWZcY2hhcGhlYWR0eXBle059CisKKyUgQ2hvb3NlIGEgaGVhZGluZyBtYWNybworJSAjMSBpcyBoZWFkaW5nIHR5cGUKKyUgIzIgaXMgaGVhZGluZyBsZXZlbAorJSAjMyBpcyB0ZXh0IGZvciBoZWFkaW5nCitcZGVmXGdlbmhlYWQjMSMyIzN7JQorICAlIENvbXB1dGUgdGhlIGFicy4gc2VjLiBsZXZlbDoKKyAgXGFic3NlY2xldmVsPSMyCisgIFxhZHZhbmNlXGFic3NlY2xldmVsIGJ5IFxzZWNiYXNlCisgICUgTWFrZSBzdXJlIFxhYnNzZWNsZXZlbCBkb2Vzbid0IGZhbGwgb3V0c2lkZSB0aGUgcmFuZ2U6CisgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPCAwCisgICAgXGFic3NlY2xldmVsID0gMAorICBcZWxzZQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPiAzCisgICAgICBcYWJzc2VjbGV2ZWwgPSAzCisgICAgXGZpCisgIFxmaQorICAlIFRoZSBoZWFkaW5nIHR5cGU6CisgIFxkZWZcaGVhZHR5cGV7IzF9JQorICBcaWYgXGhlYWR0eXBlIFUlCisgICAgXGlmbnVtIFxhYnNzZWNsZXZlbCA8IFx1bm1sZXZlbAorICAgICAgXGNoYXJkZWZcdW5tbGV2ZWwgPSBcYWJzc2VjbGV2ZWwKKyAgICBcZmkKKyAgXGVsc2UKKyAgICAlIENoZWNrIGZvciBhcHBlbmRpeCBzZWN0aW9uczoKKyAgICBcaWZudW0gXGFic3NlY2xldmVsID0gMAorICAgICAgXGVkZWZcY2hhcGhlYWR0eXBle1xoZWFkdHlwZX0lCisgICAgXGVsc2UKKyAgICAgIFxpZiBcaGVhZHR5cGUgQVxpZiBcY2hhcGhlYWR0eXBlIE4lCisJXGVycm1lc3NhZ2V7QGFwcGVuZGl4Li4uIHdpdGhpbiBhIG5vbi1hcHBlbmRpeCBjaGFwdGVyfSUKKyAgICAgIFxmaVxmaQorICAgIFxmaQorICAgICUgQ2hlY2sgZm9yIG51bWJlcmVkIHdpdGhpbiB1bm51bWJlcmVkOgorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPiBcdW5tbGV2ZWwKKyAgICAgIFxkZWZcaGVhZHR5cGV7VX0lCisgICAgXGVsc2UKKyAgICAgIFxjaGFyZGVmXHVubWxldmVsID0gMworICAgIFxmaQorICBcZmkKKyAgJSBOb3cgcHJpbnQgdGhlIGhlYWRpbmc6CisgIFxpZiBcaGVhZHR5cGUgVSUKKyAgICBcaWZjYXNlXGFic3NlY2xldmVsCisJXHVubnVtYmVyZWR6enp7IzN9JQorICAgIFxvciBcdW5udW1iZXJlZHNlY3p6ensjM30lCisgICAgXG9yIFx1bm51bWJlcmVkc3Vic2Vjenp6eyMzfSUKKyAgICBcb3IgXHVubnVtYmVyZWRzdWJzdWJzZWN6enp7IzN9JQorICAgIFxmaQorICBcZWxzZQorICAgIFxpZiBcaGVhZHR5cGUgQSUKKyAgICAgIFxpZmNhc2VcYWJzc2VjbGV2ZWwKKwkgIFxhcHBlbmRpeHp6ensjM30lCisgICAgICBcb3IgXGFwcGVuZGl4c2VjdGlvbnp6ensjM30lCisgICAgICBcb3IgXGFwcGVuZGl4c3Vic2Vjenp6eyMzfSUKKyAgICAgIFxvciBcYXBwZW5kaXhzdWJzdWJzZWN6enp7IzN9JQorICAgICAgXGZpCisgICAgXGVsc2UKKyAgICAgIFxpZmNhc2VcYWJzc2VjbGV2ZWwKKwkgIFxjaGFwdGVyenp6eyMzfSUKKyAgICAgIFxvciBcc2Vjenp6eyMzfSUKKyAgICAgIFxvciBcbnVtYmVyZWRzdWJzZWN6enp7IzN9JQorICAgICAgXG9yIFxudW1iZXJlZHN1YnN1YnNlY3p6ensjM30lCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGZpCisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgYW4gaW50ZXJmYWNlOgorXGRlZlxudW1oZWFke1xnZW5oZWFkIE59CitcZGVmXGFwcGhlYWR7XGdlbmhlYWQgQX0KK1xkZWZcdW5ubWhlYWR7XGdlbmhlYWQgVX0KKworJSBAY2hhcHRlciwgQGFwcGVuZGl4LCBAdW5udW1iZXJlZC4gIEluY3JlbWVudCB0b3AtbGV2ZWwgY291bnRlciwgcmVzZXQKKyUgYWxsIGxvd2VyLWxldmVsIHNlY3Rpb25pbmcgY291bnRlcnMgdG8gemVyby4KKyUKKyUgQWxzbyBzZXQgXGNoYXBsZXZlbHByZWZpeCwgd2hpY2ggd2UgcHJlcGVuZCB0byBAZmxvYXQgc2VxdWVuY2UgbnVtYmVycworJSAoZS5nLiwgZmlndXJlcyksIHEudi4gIEJ5IGRlZmF1bHQgKGJlZm9yZSBhbnkgY2hhcHRlciksIHRoYXQgaXMgZW1wdHkuCitcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorJQorXG91dGVyXHBhcnNlYXJnZGVmXGNoYXB0ZXJ7XG51bWhlYWQweyMxfX0gJSBub3JtYWxseSBudW1oZWFkMCBjYWxscyBjaGFwdGVyenp6CitcZGVmXGNoYXB0ZXJ6enojMXslCisgICUgc2VjdGlvbiByZXNldHRpbmcgaXMgXGdsb2JhbCBpbiBjYXNlIHRoZSBjaGFwdGVyIGlzIGluIGEgZ3JvdXAsIHN1Y2gKKyAgJSBhcyBhbiBAaW5jbHVkZSBmaWxlLgorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVxjaGFwbm8gYnkgMQorICAlCisgICUgVXNlZCBmb3IgXGZsb2F0LgorICBcZ2RlZlxjaGFwbGV2ZWxwcmVmaXh7XHRoZVxjaGFwbm8ufSUKKyAgXHJlc2V0YWxsZmxvYXRub3MKKyAgJQorICBcbWVzc2FnZXtccHV0d29yZENoYXB0ZXJcc3BhY2UgXHRoZVxjaGFwbm99JQorICAlCisgICUgV3JpdGUgdGhlIGFjdHVhbCBoZWFkaW5nLgorICBcY2hhcG1hY3JveyMxfXtZbnVtYmVyZWR9e1x0aGVcY2hhcG5vfSUKKyAgJQorICAlIFNvIEBzZWN0aW9uIGFuZCB0aGUgbGlrZSBhcmUgbnVtYmVyZWQgdW5kZXJuZWF0aCB0aGlzIGNoYXB0ZXIuCisgIFxnbG9iYWxcbGV0XHNlY3Rpb24gPSBcbnVtYmVyZWRzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnNlYworICBcZ2xvYmFsXGxldFxzdWJzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic3Vic2VjCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlxhcHBlbmRpeHtcYXBwaGVhZDB7IzF9fSAlIG5vcm1hbGx5IGFwcGhlYWQwIGNhbGxzIGFwcGVuZGl4enp6CitcZGVmXGFwcGVuZGl4enp6IzF7JQorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVxhcHBlbmRpeG5vIGJ5IDEKKyAgXGdkZWZcY2hhcGxldmVscHJlZml4e1xhcHBlbmRpeGxldHRlci59JQorICBccmVzZXRhbGxmbG9hdG5vcworICAlCisgIFxkZWZcYXBwZW5kaXhudW17XHB1dHdvcmRBcHBlbmRpeFxzcGFjZSBcYXBwZW5kaXhsZXR0ZXJ9JQorICBcbWVzc2FnZXtcYXBwZW5kaXhudW19JQorICAlCisgIFxjaGFwbWFjcm97IzF9e1lhcHBlbmRpeH17XGFwcGVuZGl4bGV0dGVyfSUKKyAgJQorICBcZ2xvYmFsXGxldFxzZWN0aW9uID0gXGFwcGVuZGl4c2VjCisgIFxnbG9iYWxcbGV0XHN1YnNlY3Rpb24gPSBcYXBwZW5kaXhzdWJzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFxhcHBlbmRpeHN1YnN1YnNlYworfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHtcdW5ubWhlYWQweyMxfX0gJSBub3JtYWxseSB1bm5taGVhZDAgY2FsbHMgdW5udW1iZXJlZHp6egorXGRlZlx1bm51bWJlcmVkenp6IzF7JQorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVx1bm51bWJlcmVkbm8gYnkgMQorICAlCisgICUgU2luY2UgYW4gdW5udW1iZXJlZCBoYXMgbm8gbnVtYmVyLCBubyBwcmVmaXggZm9yIGZpZ3VyZXMuCisgIFxnbG9iYWxcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorICBccmVzZXRhbGxmbG9hdG5vcworICAlCisgICUgVGhpcyB1c2VkIHRvIGJlIHNpbXBseSBcbWVzc2FnZXsjMX0sIGJ1dCBUZVggZnVsbHkgZXhwYW5kcyB0aGUKKyAgJSBhcmd1bWVudCB0byBcbWVzc2FnZS4gIFRoZXJlZm9yZSwgaWYgIzEgY29udGFpbmVkIEAtY29tbWFuZHMsIFRlWAorICAlIGV4cGFuZGVkIHRoZW0uICBGb3IgZXhhbXBsZSwgaW4gYEB1bm51bWJlcmVkIFRoZSBAY2l0ZXtCb29rfScsIFRlWAorICAlIGV4cGFuZGVkIEBjaXRlICh3aGljaCB0dXJucyBvdXQgdG8gY2F1c2UgZXJyb3JzIGJlY2F1c2UgXGNpdGUgaXMgbWVhbnQKKyAgJSB0byBiZSBleGVjdXRlZCwgbm90IGV4cGFuZGVkKS4KKyAgJQorICAlIEFueXdheSwgd2UgZG9uJ3Qgd2FudCB0aGUgZnVsbHktZXhwYW5kZWQgZGVmaW5pdGlvbiBvZiBAY2l0ZSB0byBhcHBlYXIKKyAgJSBhcyBhIHJlc3VsdCBvZiB0aGUgXG1lc3NhZ2UsIHdlIGp1c3Qgd2FudCBgQGNpdGUnIGl0c2VsZi4gIFdlIHVzZQorICAlIFx0aGU8dG9rcyByZWdpc3Rlcj4gdG8gYWNoaWV2ZSB0aGlzOiBUZVggZXhwYW5kcyBcdGhlPHRva3M+IG9ubHkgb25jZSwKKyAgJSBzaW1wbHkgeWllbGRpbmcgdGhlIGNvbnRlbnRzIG9mIDx0b2tzIHJlZ2lzdGVyPi4gIChXZSBhbHNvIGRvIHRoaXMgZm9yCisgICUgdGhlIHRvYyBlbnRyaWVzLikKKyAgXHRva3MwID0geyMxfSUKKyAgXG1lc3NhZ2V7KFx0aGVcdG9rczApfSUKKyAgJQorICBcY2hhcG1hY3JveyMxfXtZbm90aGluZ317XHRoZVx1bm51bWJlcmVkbm99JQorICAlCisgIFxnbG9iYWxcbGV0XHNlY3Rpb24gPSBcdW5udW1iZXJlZHNlYworICBcZ2xvYmFsXGxldFxzdWJzZWN0aW9uID0gXHVubnVtYmVyZWRzdWJzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFx1bm51bWJlcmVkc3Vic3Vic2VjCit9CisKKyUgQGNlbnRlcmNoYXAgaXMgbGlrZSBAdW5udW1iZXJlZCwgYnV0IHRoZSBoZWFkaW5nIGlzIGNlbnRlcmVkLgorXG91dGVyXHBhcnNlYXJnZGVmXGNlbnRlcmNoYXB7JQorICAlIFdlbGwsIHdlIGNvdWxkIGRvIHRoZSBmb2xsb3dpbmcgaW4gYSBncm91cCwgYnV0IHRoYXQgd291bGQgYnJlYWsKKyAgJSBhbiBhc3N1bXB0aW9uIHRoYXQgXGNoYXBtYWNybyBpcyBjYWxsZWQgYXQgdGhlIG91dGVybW9zdCBsZXZlbC4KKyAgJSBUaHVzIHdlIGFyZSBzYWZlciB0aGlzIHdheToJCS0ta2FzYWwsIDI0ZmViMDQKKyAgXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBcY2VudGVycGFyYW1ldGVycworICBcdW5ubWhlYWQweyMxfSUKKyAgXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBccmVsYXgKK30KKworJSBAdG9wIGlzIGxpa2UgQHVubnVtYmVyZWQuCitcbGV0XHRvcFx1bm51bWJlcmVkCisKKyUgU2VjdGlvbnMuCitcb3V0ZXJccGFyc2VhcmdkZWZcbnVtYmVyZWRzZWN7XG51bWhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBzZWN6enoKK1xkZWZcc2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnNlY25vPTAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW51bWJlcmVkfXtcdGhlXGNoYXBuby5cdGhlXHNlY25vfSUKK30KKworXG91dGVyXHBhcnNlYXJnZGVmXGFwcGVuZGl4c2VjdGlvbntcYXBwaGVhZDF7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIGFwcGVuZGl4c2VjdGlvbnp6egorXGRlZlxhcHBlbmRpeHNlY3Rpb256enojMXslCisgIFxnbG9iYWxcc3Vic2Vjbm89MCBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c2VjfXtZYXBwZW5kaXh9e1xhcHBlbmRpeGxldHRlci5cdGhlXHNlY25vfSUKK30KK1xsZXRcYXBwZW5kaXhzZWNcYXBwZW5kaXhzZWN0aW9uCisKK1xvdXRlclxwYXJzZWFyZ2RlZlx1bm51bWJlcmVkc2Vje1x1bm5taGVhZDF7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIHVubnVtYmVyZWRzZWN6enoKK1xkZWZcdW5udW1iZXJlZHNlY3p6eiMxeyUKKyAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MCAgXGdsb2JhbFxhZHZhbmNlXHNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzZWN9e1lub3RoaW5nfXtcdGhlXHVubnVtYmVyZWRuby5cdGhlXHNlY25vfSUKK30KKworJSBTdWJzZWN0aW9ucy4KK1xvdXRlclxwYXJzZWFyZ2RlZlxudW1iZXJlZHN1YnNlY3tcbnVtaGVhZDJ7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIG51bWJlcmVkc3Vic2Vjenp6CitcZGVmXG51bWJlcmVkc3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZbnVtYmVyZWR9e1x0aGVcY2hhcG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlxhcHBlbmRpeHN1YnNlY3tcYXBwaGVhZDJ7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIGFwcGVuZGl4c3Vic2Vjenp6CitcZGVmXGFwcGVuZGl4c3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZYXBwZW5kaXh9JQorICAgICAgICAgICAgICAgICB7XGFwcGVuZGl4bGV0dGVyLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlx1bm51bWJlcmVkc3Vic2Vje1x1bm5taGVhZDJ7IzF9fSAlbm9ybWFsbHkgY2FsbHMgdW5udW1iZXJlZHN1YnNlY3p6egorXGRlZlx1bm51bWJlcmVkc3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZbm90aGluZ30lCisgICAgICAgICAgICAgICAgIHtcdGhlXHVubnVtYmVyZWRuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm99JQorfQorCislIFN1YnN1YnNlY3Rpb25zLgorXG91dGVyXHBhcnNlYXJnZGVmXG51bWJlcmVkc3Vic3Vic2Vje1xudW1oZWFkM3sjMX19ICUgbm9ybWFsbHkgbnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcbnVtYmVyZWRzdWJzdWJzZWN6enojMXslCisgIFxnbG9iYWxcYWR2YW5jZVxzdWJzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic3Vic2VjfXtZbnVtYmVyZWR9JQorICAgICAgICAgICAgICAgICB7XHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcYXBwZW5kaXhzdWJzdWJzZWN7XGFwcGhlYWQzeyMxfX0gJSBub3JtYWxseSBhcHBlbmRpeHN1YnN1YnNlY3p6egorXGRlZlxhcHBlbmRpeHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lhcHBlbmRpeH0lCisgICAgICAgICAgICAgICAgIHtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3tcdW5ubWhlYWQzeyMxfX0gJW5vcm1hbGx5IHVubnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lub3RoaW5nfSUKKyAgICAgICAgICAgICAgICAge1x0aGVcdW5udW1iZXJlZG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNuby5cdGhlXHN1YnN1YnNlY25vfSUKK30KKworJSBUaGVzZSBtYWNyb3MgY29udHJvbCB3aGF0IHRoZSBzZWN0aW9uIGNvbW1hbmRzIGRvLCBhY2NvcmRpbmcKKyUgdG8gd2hhdCBraW5kIG9mIGNoYXB0ZXIgd2UgYXJlIGluIChvcmRpbmFyeSwgYXBwZW5kaXgsIG9yIHVubnVtYmVyZWQpLgorJSBEZWZpbmUgdGhlbSBieSBkZWZhdWx0IGZvciBhIG51bWJlcmVkIGNoYXB0ZXIuCitcbGV0XHNlY3Rpb24gPSBcbnVtYmVyZWRzZWMKK1xsZXRcc3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnNlYworXGxldFxzdWJzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic3Vic2VjCisKKyUgRGVmaW5lIEBtYWpvcmhlYWRpbmcsIEBoZWFkaW5nIGFuZCBAc3ViaGVhZGluZworCislIE5PVEUgb24gdXNlIG9mIFx2Ym94IGZvciBjaGFwdGVyIGhlYWRpbmdzLCBzZWN0aW9uIGhlYWRpbmdzLCBhbmQgc3VjaDoKKyUgICAgICAgMSkgV2UgdXNlIFx2Ym94IHJhdGhlciB0aGFuIHRoZSBlYXJsaWVyIFxsaW5lIHRvIHBlcm1pdAorJSAgICAgICAgICBvdmVybG9uZyBoZWFkaW5ncyB0byBmb2xkLgorJSAgICAgICAyKSBcaHlwaGVucGVuYWx0eSBpcyBzZXQgdG8gMTAwMDAgYmVjYXVzZSBoeXBoZW5hdGlvbiBpbiBhCislICAgICAgICAgIGhlYWRpbmcgaXMgb2Jub3hpb3VzOyB0aGlzIGZvcmJpZHMgaXQuCislICAgICAgIDMpIExpa2V3aXNlLCBoZWFkaW5ncyBsb29rIGJlc3QgaWYgbm8gXHBhcmluZGVudCBpcyB1c2VkLCBhbmQKKyUgICAgICAgICAgaWYganVzdGlmaWNhdGlvbiBpcyBub3QgYXR0ZW1wdGVkLiAgSGVuY2UgXHJhZ2dlZHJpZ2h0LgorCisKK1xkZWZcbWFqb3JoZWFkaW5neyUKKyAge1xhZHZhbmNlXGNoYXBoZWFkaW5nc2tpcCBieSAxMHB0IFxjaGFwYnJlYWsgfSUKKyAgXHBhcnNlYXJnXGNoYXBoZWFkaW5nenp6Cit9CisKK1xkZWZcY2hhcGhlYWRpbmd7XGNoYXBicmVhayBccGFyc2VhcmdcY2hhcGhlYWRpbmd6enp9CitcZGVmXGNoYXBoZWFkaW5nenp6IzF7JQorICB7XGNoYXBmb250cyBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMFx0b2xlcmFuY2U9NTAwMAorICAgICAgICAgICAgICAgICAgICBccGFyaW5kZW50PTBwdFxyYWdnZWRyaWdodAorICAgICAgICAgICAgICAgICAgICBccm0gIzFcaGZpbGx9fSUKKyAgXGJpZ3NraXAgXHBhclxwZW5hbHR5IDIwMFxyZWxheAorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudAorfQorCislIEBoZWFkaW5nLCBAc3ViaGVhZGluZywgQHN1YnN1YmhlYWRpbmcuCitccGFyc2VhcmdkZWZcaGVhZGluZ3tcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW9taXRmcm9tdG9jfXt9CisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50fQorXHBhcnNlYXJnZGVmXHN1YmhlYWRpbmd7XHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xwYXJzZWFyZ2RlZlxzdWJzdWJoZWFkaW5ne1xzZWN0aW9uaGVhZGluZ3sjMX17c3Vic3Vic2VjfXtZb21pdGZyb210b2N9e30KKyAgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR9CisKKyUgVGhlc2UgbWFjcm9zIGdlbmVyYXRlIGEgY2hhcHRlciwgc2VjdGlvbiwgZXRjLiBoZWFkaW5nIG9ubHkKKyUgKGluY2x1ZGluZyB3aGl0ZXNwYWNlLCBsaW5lYnJlYWtpbmcsIGV0Yy4gYXJvdW5kIGl0KSwKKyUgZ2l2ZW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiBjb252ZW5pZW50LCBwYXJzZWQgZm9ybS4KKworJSUlIEFyZ3MgYXJlIHRoZSBza2lwIGFuZCBwZW5hbHR5ICh1c3VhbGx5IG5lZ2F0aXZlKQorXGRlZlxkb2JyZWFrIzEjMntccGFyXGlmZGltXGxhc3Rza2lwPCMxXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHkjMlx2c2tpcCMxXGZpfQorCislJSUgRGVmaW5lIHBsYWluIGNoYXB0ZXIgc3RhcnRzLCBhbmQgcGFnZSBvbi9vZmYgc3dpdGNoaW5nIGZvciBpdAorJSBQYXJhbWV0ZXIgY29udHJvbGxpbmcgc2tpcCBiZWZvcmUgY2hhcHRlciBoZWFkaW5ncyAoaWYgbmVlZGVkKQorCitcbmV3c2tpcFxjaGFwaGVhZGluZ3NraXAKKworXGRlZlxjaGFwYnJlYWt7XGRvYnJlYWsgXGNoYXBoZWFkaW5nc2tpcCB7LTQwMDB9fQorXGRlZlxjaGFwcGFnZXJ7XHBhclx2ZmlsbFxzdXBlcmVqZWN0fQorXGRlZlxjaGFwb2RkcGFnZXtcY2hhcHBhZ2VyIFxpZm9kZFxwYWdlbm8gXGVsc2UgXGhib3ggdG8gMHB0e30gXGNoYXBwYWdlclxmaX0KKworXGRlZlxzZXRjaGFwdGVybmV3cGFnZSAjMSB7XGNzbmFtZSBDSEFQUEFHIzFcZW5kY3NuYW1lfQorCitcZGVmXENIQVBQQUdvZmZ7JQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBwYWdlcgorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcGJyZWFrCitcZ2xvYmFsXGxldFxwYWdlYWxpZ25tYWNybz1cY2hhcHBhZ2VyfQorCitcZGVmXENIQVBQQUdvbnslCitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCitcZ2xvYmFsXGxldFxwY2hhcHNlcG1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcZGVmXEhFQURJTkdTb257XEhFQURJTkdTc2luZ2xlfX0KKworXGRlZlxDSEFQUEFHb2RkeyUKK1xnbG9iYWxcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwb2RkcGFnZQorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcG9kZHBhZ2UKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwb2RkcGFnZQorXGdsb2JhbFxkZWZcSEVBRElOR1NvbntcSEVBRElOR1Nkb3VibGV9fQorCitcQ0hBUFBBR29uCisKKyUgQ2hhcHRlciBvcGVuaW5nLgorJQorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gdHlwZSAoWW51bWJlcmVkLCBZbm90aGluZywKKyUgWWFwcGVuZGl4LCBZb21pdGZyb210b2MpLCAjMyB0aGUgY2hhcHRlciBudW1iZXIuCislCislIFRvIHRlc3QgYWdhaW5zdCBvdXIgYXJndW1lbnQuCitcZGVmXFlub3RoaW5na2V5d29yZHtZbm90aGluZ30KK1xkZWZcWW9taXRmcm9tdG9ja2V5d29yZHtZb21pdGZyb210b2N9CitcZGVmXFlhcHBlbmRpeGtleXdvcmR7WWFwcGVuZGl4fQorJQorXGRlZlxjaGFwbWFjcm8jMSMyIzN7JQorICBccGNoYXBzZXBtYWNybworICB7JQorICAgIFxjaGFwZm9udHMgXHJtCisgICAgJQorICAgICUgSGF2ZSB0byBkZWZpbmUgXHRoaXNzZWN0aW9uIGJlZm9yZSBjYWxsaW5nIFxkb25vZGVyZWYsIGJlY2F1c2UgdGhlCisgICAgJSB4cmVmIGNvZGUgZXZlbnR1YWxseSB1c2VzIGl0LiAgT24gdGhlIG90aGVyIGhhbmQsIGl0IGhhcyB0byBiZSBjYWxsZWQKKyAgICAlIGFmdGVyIFxwY2hhcHNlcG1hY3JvLCBvciB0aGUgaGVhZGxpbmUgd2lsbCBjaGFuZ2UgdG9vIHNvb24uCisgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxnZGVmXHRoaXNjaGFwdGVybmFtZXsjMX0lCisgICAgJQorICAgICUgT25seSBpbnNlcnQgdGhlIHNlcGFyYXRpbmcgc3BhY2UgaWYgd2UgaGF2ZSBhIGNoYXB0ZXIvYXBwZW5kaXgKKyAgICAlIG51bWJlciwgYW5kIGRvbid0IHByaW50IHRoZSB1bm51bWJlcmVkIGBgbnVtYmVyJycuCisgICAgXGRlZlx0ZW1wdHlwZXsjMn0lCisgICAgXGlmeFx0ZW1wdHlwZVxZbm90aGluZ2tleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXt1bm5jaGFwfSUKKyAgICAgIFxnZGVmXHRoaXNjaGFwdGVyeyMxfSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWW9taXRmcm9tdG9ja2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHt9JSBjb250ZW50cyBsaWtlIHVubnVtYmVyZWQsIGJ1dCBubyB0b2MgZW50cnkKKyAgICAgIFxkZWZcdG9jdHlwZXtvbWl0fSUKKyAgICAgIFxnZGVmXHRoaXNjaGFwdGVye30lCisgICAgXGVsc2VcaWZ4XHRlbXB0eXBlXFlhcHBlbmRpeGtleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7XHB1dHdvcmRBcHBlbmRpeHt9ICMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle2FwcH0lCisgICAgICAlIFdlIGRvbid0IHN1YnN0aXR1dGUgdGhlIGFjdHVhbCBjaGFwdGVyIG5hbWUgaW50byBcdGhpc2NoYXB0ZXIKKyAgICAgICUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGl0cyBtYWNyb3MgZXZhbHVhdGVkIG5vdy4gIEFuZCB3ZSBkb24ndAorICAgICAgJSB1c2UgXHRoaXNzZWN0aW9uIGJlY2F1c2UgdGhhdCBjaGFuZ2VzIHdpdGggZWFjaCBzZWN0aW9uLgorICAgICAgJQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRBcHBlbmRpeHt9IFxhcHBlbmRpeGxldHRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFxub2V4cGFuZFx0aGlzY2hhcHRlcm5hbWV9JQorICAgIFxlbHNlCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle251bWNoYXB9JQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRDaGFwdGVye30gXHRoZVxjaGFwbm86CisgICAgICAgICAgICAgICAgICAgICAgICBcbm9leHBhbmRcdGhpc2NoYXB0ZXJuYW1lfSUKKyAgICBcZmlcZmlcZmkKKyAgICAlCisgICAgJSBXcml0ZSB0aGUgdG9jIGVudHJ5IGZvciB0aGlzIGNoYXB0ZXIuICBNdXN0IGNvbWUgYmVmb3JlIHRoZQorICAgICUgXGRvbm9kZXJlZiwgYmVjYXVzZSB3ZSBpbmNsdWRlIHRoZSBjdXJyZW50IG5vZGUgbmFtZSBpbiB0aGUgdG9jCisgICAgJSBlbnRyeSwgYW5kIFxkb25vZGVyZWYgcmVzZXRzIGl0IHRvIGVtcHR5LgorICAgIFx3cml0ZXRvY2VudHJ5e1x0b2N0eXBlfXsjMX17IzN9JQorICAgICUKKyAgICAlIEZvciBwZGZ0ZXgsIHdlIGhhdmUgdG8gd3JpdGUgb3V0IHRoZSBub2RlIGRlZmluaXRpb24gKGFrYSwgbWFrZQorICAgICUgdGhlIHBkZmRlc3QpIGFmdGVyIGFueSBwYWdlIGJyZWFrLCBidXQgYmVmb3JlIHRoZSBhY3R1YWwgdGV4dCBoYXMKKyAgICAlIGJlZW4gdHlwZXNldC4gIElmIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIHBkZiBvdXRsaW5lIGlzIGFmdGVyIHRoZQorICAgICUgdGV4dCwgdGhlbiBqdW1waW5nIGZyb20gdGhlIG91dGxpbmUgbWF5IHdpbmQgdXAgd2l0aCB0aGUgdGV4dCBub3QKKyAgICAlIGJlaW5nIHZpc2libGUsIGZvciBpbnN0YW5jZSB1bmRlciBoaWdoIG1hZ25pZmljYXRpb24uCisgICAgXGRvbm9kZXJlZnsjMn0lCisgICAgJQorICAgICUgVHlwZXNldCB0aGUgYWN0dWFsIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgXGNlbnRlcnBhcmFtZXRlcnNtYXliZQorICAgICAgICAgIFx1bmhib3gwICMxXHBhcn0lCisgIH0lCisgIFxub2JyZWFrXGJpZ3NraXAgJSBubyBwYWdlIGJyZWFrIGFmdGVyIGEgY2hhcHRlciB0aXRsZQorICBcbm9icmVhaworfQorCislIEBjZW50ZXJjaGFwIC0tIGNlbnRlcmVkIGFuZCB1bm51bWJlcmVkLgorXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBccmVsYXgKK1xkZWZcY2VudGVycGFyYW1ldGVyc3slCisgIFxhZHZhbmNlXHJpZ2h0c2tpcCBieSAzXHJpZ2h0c2tpcAorICBcbGVmdHNraXAgPSBccmlnaHRza2lwCisgIFxwYXJmaWxsc2tpcCA9IDBwdAorfQorCisKKyUgSSBkb24ndCB0aGluayB0aGlzIGNoYXB0ZXIgc3R5bGUgaXMgc3VwcG9ydGVkIGFueSBtb3JlLCBzbyBJJ20gbm90CislIHVwZGF0aW5nIGl0IHdpdGggdGhlIG5ldyBub2RlcmVmIHN0dWZmLiAgV2UnbGwgc2VlLiAgLS1rYXJsLCAxMWF1ZzAzLgorJQorXGRlZlxzZXRjaGFwdGVyc3R5bGUgIzEge1xjc25hbWUgQ0hBUEYjMVxlbmRjc25hbWV9CislCitcZGVmXHVubmNoZm9wZW4gIzF7JQorXGNoYXBvZGRwYWdlIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0XHJhZ2dlZHJpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgIFxybSAjMVxoZmlsbH19XGJpZ3NraXAgXHBhclxub2JyZWFrCit9CitcZGVmXGNoZm9wZW4gIzEjMntcY2hhcG9kZHBhZ2Uge1xjaGFwZm9udHMKK1x2Ym94IHRvIDNpbntcdmZpbCBcaGJveCB0b1xoc2l6ZXtcaGZpbCAjMn0gXGhib3ggdG9caHNpemV7XGhmaWwgIzF9IFx2ZmlsfX0lCitccGFyXHBlbmFsdHkgNTAwMCAlCit9CitcZGVmXGNlbnRlcmNoZm9wZW4gIzF7JQorXGNoYXBvZGRwYWdlIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0CisgICAgICAgICAgICAgICAgICAgICAgIFxoZmlsbCB7XHJtICMxfVxoZmlsbH19XGJpZ3NraXAgXHBhclxub2JyZWFrCit9CitcZGVmXENIQVBGb3BlbnslCisgIFxnbG9iYWxcbGV0XGNoYXBtYWNybz1cY2hmb3BlbgorICBcZ2xvYmFsXGxldFxjZW50ZXJjaGFwbWFjcm89XGNlbnRlcmNoZm9wZW59CisKKworJSBTZWN0aW9uIHRpdGxlcy4gIFRoZXNlIG1hY3JvcyBjb21iaW5lIHRoZSBzZWN0aW9uIG51bWJlciBwYXJ0cyBhbmQKKyUgY2FsbCB0aGUgZ2VuZXJpYyBcc2VjdGlvbmhlYWRpbmcgdG8gZG8gdGhlIHByaW50aW5nLgorJQorXG5ld3NraXBcc2VjaGVhZGluZ3NraXAKK1xkZWZcc2VjaGVhZGluZ2JyZWFre1xkb2JyZWFrIFxzZWNoZWFkaW5nc2tpcHstMTAwMH19CisKKyUgU3Vic2VjdGlvbiB0aXRsZXMuCitcbmV3c2tpcFxzdWJzZWNoZWFkaW5nc2tpcAorXGRlZlxzdWJzZWNoZWFkaW5nYnJlYWt7XGRvYnJlYWsgXHN1YnNlY2hlYWRpbmdza2lwey01MDB9fQorCislIFN1YnN1YnNlY3Rpb24gdGl0bGVzLgorXGRlZlxzdWJzdWJzZWNoZWFkaW5nc2tpcHtcc3Vic2VjaGVhZGluZ3NraXB9CitcZGVmXHN1YnN1YnNlY2hlYWRpbmdicmVha3tcc3Vic2VjaGVhZGluZ2JyZWFrfQorCisKKyUgUHJpbnQgYW55IHNpemUsIGFueSB0eXBlLCBzZWN0aW9uIHRpdGxlLgorJQorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gbGV2ZWwgKHNlYy9zdWJzZWMvc3Vic3Vic2VjKSwgIzMgaXMKKyUgdGhlIHNlY3Rpb24gdHlwZSBmb3IgeHJlZnMgKFludW1iZXJlZCwgWW5vdGhpbmcsIFlhcHBlbmRpeCksICM0IGlzIHRoZQorJSBzZWN0aW9uIG51bWJlci4KKyUKK1xkZWZcc2VjdGlvbmhlYWRpbmcjMSMyIzMjNHslCisgIHslCisgICAgJSBTd2l0Y2ggdG8gdGhlIHJpZ2h0IHNldCBvZiBmb250cy4KKyAgICBcY3NuYW1lICMyZm9udHNcZW5kY3NuYW1lIFxybQorICAgICUKKyAgICAlIEluc2VydCBzcGFjZSBhYm92ZSB0aGUgaGVhZGluZy4KKyAgICBcY3NuYW1lICMyaGVhZGluZ2JyZWFrXGVuZGNzbmFtZQorICAgICUKKyAgICAlIE9ubHkgaW5zZXJ0IHRoZSBzcGFjZSBhZnRlciB0aGUgbnVtYmVyIGlmIHdlIGhhdmUgYSBzZWN0aW9uIG51bWJlci4KKyAgICBcZGVmXHNlY3Rpb25sZXZlbHsjMn0lCisgICAgXGRlZlx0ZW1wdHlwZXsjM30lCisgICAgJQorICAgIFxpZnhcdGVtcHR5cGVcWW5vdGhpbmdrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94e30lCisgICAgICBcZGVmXHRvY3R5cGV7dW5ufSUKKyAgICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWW9taXRmcm9tdG9ja2V5d29yZAorICAgICAgJSBmb3IgQGhlYWRpbmdzIC0tIG5vIHNlY3Rpb24gbnVtYmVyLCBkb24ndCBpbmNsdWRlIGluIHRvYywKKyAgICAgICUgYW5kIGRvbid0IHJlZGVmaW5lIFx0aGlzc2VjdGlvbi4KKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXtvbWl0fSUKKyAgICAgIFxsZXRcc2VjdGlvbmxldmVsPVxlbXB0eQorICAgIFxlbHNlXGlmeFx0ZW1wdHlwZVxZYXBwZW5kaXhrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyM0XGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle2FwcH0lCisgICAgICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCisgICAgXGVsc2UKKyAgICAgIFxzZXRib3gwID0gXGhib3h7IzRcZW5zcGFjZX0lCisgICAgICBcZGVmXHRvY3R5cGV7bnVtfSUKKyAgICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZmlcZmlcZmkKKyAgICAlCisgICAgJSBXcml0ZSB0aGUgdG9jIGVudHJ5IChiZWZvcmUgXGRvbm9kZXJlZikuICBTZWUgY29tbWVudHMgaW4gXGNoYXBtYWNyby4KKyAgICBcd3JpdGV0b2NlbnRyeXtcdG9jdHlwZVxzZWN0aW9ubGV2ZWx9eyMxfXsjNH0lCisgICAgJQorICAgICUgV3JpdGUgdGhlIG5vZGUgcmVmZXJlbmNlICg9IHBkZiBkZXN0aW5hdGlvbiBmb3IgcGRmdGV4KS4KKyAgICAlIEFnYWluLCBzZWUgY29tbWVudHMgaW4gXGNoYXBtYWNyby4KKyAgICBcZG9ub2RlcmVmeyMzfSUKKyAgICAlCisgICAgJSBJbnRlcmxpbmUgZ2x1ZSB3aWxsIGJlIGluc2VydGVkIHdoZW4gdGhlIHZib3ggaXMgY29tcGxldGVkLgorICAgICUgVGhhdCBnbHVlIHdpbGwgYmUgYSB2YWxpZCBicmVha3BvaW50IGZvciB0aGUgcGFnZSwgc2luY2UgaXQnbGwgYmUKKyAgICAlIHByZWNlZGVkIGJ5IGEgd2hhdHNpdCAodXN1YWxseSBmcm9tIHRoZSBcZG9ub2RlcmVmLCBvciBmcm9tIHRoZQorICAgICUgXHdyaXRldG9jZW50cnkgaWYgdGhlcmUgd2FzIG5vIG5vZGUpLiAgV2UgZG9uJ3Qgd2FudCB0byBhbGxvdyB0aGF0CisgICAgJSBicmVhaywgc2luY2UgdGhlbiB0aGUgd2hhdHNpdHMgY291bGQgZW5kIHVwIG9uIHBhZ2UgbiB3aGlsZSB0aGUKKyAgICAlIHNlY3Rpb24gaXMgb24gcGFnZSBuKzEsIHRodXMgdG9jL2V0Yy4gYXJlIHdyb25nLiAgRGViaWFuIGJ1ZyAyNzYwMDAuCisgICAgXG5vYnJlYWsKKyAgICAlCisgICAgJSBPdXRwdXQgdGhlIGFjdHVhbCBzZWN0aW9uIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgICUgemVybyBpZiBubyBzZWN0aW9uIG51bWJlcgorICAgICAgICAgIFx1bmhib3gwICMxfSUKKyAgfSUKKyAgJSBBZGQgZXh0cmEgc3BhY2UgYWZ0ZXIgdGhlIGhlYWRpbmcgLS0gaGFsZiBvZiB3aGF0ZXZlciBjYW1lIGFib3ZlIGl0LgorICAlIERvbid0IGFsbG93IHN0cmV0Y2gsIHRob3VnaC4KKyAgXGtlcm4gLjUgXGNzbmFtZSAjMmhlYWRpbmdza2lwXGVuZGNzbmFtZQorICAlCisgICUgRG8gbm90IGxldCB0aGUga2VybiBiZSBhIHBvdGVudGlhbCBicmVha3BvaW50LCBhcyBpdCB3b3VsZCBiZSBpZiBpdAorICAlIHdhcyBmb2xsb3dlZCBieSBnbHVlLgorICBcbm9icmVhaworICAlCisgICUgV2UnbGwgYWxtb3N0IGNlcnRhaW5seSBzdGFydCBhIHBhcmFncmFwaCBuZXh0LCBzbyBkb24ndCBsZXQgdGhhdAorICAlIGdsdWUgYWNjdW11bGF0ZS4gIChOb3QgYSBicmVha3BvaW50IGJlY2F1c2UgaXQncyBwcmVjZWRlZCBieSBhCisgICUgZGlzY2FyZGFibGUgaXRlbS4pCisgIFx2c2tpcC1ccGFyc2tpcAorICAlIAorICAlIFRoaXMgaXMgcHVyZWx5IHNvIHRoZSBsYXN0IGl0ZW0gb24gdGhlIGxpc3QgaXMgYSBrbm93biBccGVuYWx0eSA+CisgICUgMTAwMDAuICBUaGlzIGlzIHNvIFxzdGFydGRlZnVuIGNhbiBhdm9pZCBhbGxvd2luZyBicmVha3BvaW50cyBhZnRlcgorICAlIHNlY3Rpb24gaGVhZGluZ3MuICBPdGhlcndpc2UsIGl0IHdvdWxkIGluc2VydCBhIHZhbGlkIGJyZWFrcG9pbnQgYmV0d2VlbjoKKyAgJSAKKyAgJSAgIEBzZWN0aW9uIHNlYy13aGF0ZXZlcgorICAlICAgQGRlZmZuIGRlZi13aGF0ZXZlcgorICBccGVuYWx0eSAxMDAwMQorfQorCisKK1xtZXNzYWdle3RvYyx9CislIFRhYmxlIG9mIGNvbnRlbnRzLgorXG5ld3dyaXRlXHRvY2ZpbGUKKworJSBXcml0ZSBhbiBlbnRyeSB0byB0aGUgdG9jIGZpbGUsIG9wZW5pbmcgaXQgaWYgbmVjZXNzYXJ5LgorJSBDYWxsZWQgZnJvbSBAY2hhcHRlciwgZXRjLgorJQorJSBFeGFtcGxlIHVzYWdlOiBcd3JpdGV0b2NlbnRyeXtzZWN9e1NlY3Rpb24gTmFtZX17XHRoZVxjaGFwbm8uXHRoZVxzZWNub30KKyUgV2UgYXBwZW5kIHRoZSBjdXJyZW50IG5vZGUgbmFtZSAoaWYgYW55KSBhbmQgcGFnZSBudW1iZXIgYXMgYWRkaXRpb25hbAorJSBhcmd1bWVudHMgZm9yIHRoZSBce2NoYXAsc2VjLC4uLn1lbnRyeSBtYWNyb3Mgd2hpY2ggd2lsbCBldmVudHVhbGx5CislIHJlYWQgdGhpcy4gIFRoZSBub2RlIG5hbWUgaXMgdXNlZCBpbiB0aGUgcGRmIG91dGxpbmVzIGFzIHRoZQorJSBkZXN0aW5hdGlvbiB0byBqdW1wIHRvLgorJQorJSBXZSBvcGVuIHRoZSAudG9jIGZpbGUgZm9yIHdyaXRpbmcgaGVyZSBpbnN0ZWFkIG9mIGF0IEBzZXRmaWxlbmFtZSAob3IKKyUgYW55IG90aGVyIGZpeGVkIHRpbWUpIHNvIHRoYXQgQGNvbnRlbnRzIGNhbiBiZSBhbnl3aGVyZSBpbiB0aGUgZG9jdW1lbnQuCislIEJ1dCBpZiAjMSBpcyBgb21pdCcsIHRoZW4gd2UgZG9uJ3QgZG8gYW55dGhpbmcuICBUaGlzIGlzIHVzZWQgZm9yIHRoZQorJSB0YWJsZSBvZiBjb250ZW50cyBjaGFwdGVyIG9wZW5pbmdzIHRoZW1zZWx2ZXMuCislCitcbmV3aWZcaWZ0b2NmaWxlb3BlbmVkCitcZGVmXG9taXRrZXl3b3Jke29taXR9JQorJQorXGRlZlx3cml0ZXRvY2VudHJ5IzEjMiMzeyUKKyAgXGVkZWZcd3JpdGV0b2N0eXBleyMxfSUKKyAgXGlmeFx3cml0ZXRvY3R5cGVcb21pdGtleXdvcmQgXGVsc2UKKyAgICBcaWZ0b2NmaWxlb3BlbmVkXGVsc2UKKyAgICAgIFxpbW1lZGlhdGVcb3Blbm91dFx0b2NmaWxlID0gXGpvYm5hbWUudG9jCisgICAgICBcZ2xvYmFsXHRvY2ZpbGVvcGVuZWR0cnVlCisgICAgXGZpCisgICAgJQorICAgIFxpZmxpbmtzCisgICAgICB7XGF0ZHVtbWllcworICAgICAgIFxlZGVmXHRlbXB7JQorICAgICAgICAgXHdyaXRlXHRvY2ZpbGV7QCMxZW50cnl7IzJ9eyMzfXtcbGFzdG5vZGV9e1xub2V4cGFuZFxmb2xpb319fSUKKyAgICAgICBcdGVtcAorICAgICAgfSUKKyAgICBcZmkKKyAgXGZpCisgICUKKyAgJSBUZWxsIFxzaGlwb3V0IHRvIGNyZWF0ZSBhIHBkZiBkZXN0aW5hdGlvbiBvbiBlYWNoIHBhZ2UsIGlmIHdlJ3JlCisgICUgd3JpdGluZyBwZGYuICBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuICBXZSBjYW4ndAorICAlIGp1c3Qgd3JpdGUgb25lIG9uIGV2ZXJ5IHBhZ2UgYmVjYXVzZSB0aGUgdGl0bGUgcGFnZXMgYXJlIG51bWJlcmVkCisgICUgMSBhbmQgMiAodGhlIHBhZ2UgbnVtYmVycyBhcmVuJ3QgcHJpbnRlZCksIGFuZCBzbyBhcmUgdGhlIGZpcnN0CisgICUgdHdvIHBhZ2VzIG9mIHRoZSBkb2N1bWVudC4gIFRodXMsIHdlJ2QgaGF2ZSB0d28gZGVzdGluYXRpb25zIG5hbWVkCisgICUgYDEnLCBhbmQgdHdvIG5hbWVkIGAyJy4KKyAgXGlmcGRmIFxnbG9iYWxccGRmbWFrZXBhZ2VkZXN0dHJ1ZSBcZmkKK30KKworCislIFRoZXNlIGNoYXJhY3RlcnMgZG8gbm90IHByaW50IHByb3Blcmx5IGluIHRoZSBDb21wdXRlciBNb2Rlcm4gcm9tYW4KKyUgZm9udHMsIHNvIHdlIG11c3QgdGFrZSBzcGVjaWFsIGNhcmUuICBUaGlzIGlzIG1vcmUgb3IgbGVzcyByZWR1bmRhbnQKKyUgd2l0aCB0aGUgVGV4aW5mbyBpbnB1dCBmb3JtYXQgc2V0dXAgYXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCislIAorXGRlZlxhY3RpdmVjYXRjb2Rlc3slCisgIFxjYXRjb2RlYFwiPVxhY3RpdmUKKyAgXGNhdGNvZGVgXCQ9XGFjdGl2ZQorICBcY2F0Y29kZWBcPD1cYWN0aXZlCisgIFxjYXRjb2RlYFw+PVxhY3RpdmUKKyAgXGNhdGNvZGVgXFw9XGFjdGl2ZQorICBcY2F0Y29kZWBcXj1cYWN0aXZlCisgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgXGNhdGNvZGVgXHw9XGFjdGl2ZQorICBcY2F0Y29kZWBcfj1cYWN0aXZlCit9CisKKworJSBSZWFkIHRoZSB0b2MgZmlsZSwgd2hpY2ggaXMgZXNzZW50aWFsbHkgVGV4aW5mbyBpbnB1dC4KK1xkZWZccmVhZHRvY2ZpbGV7JQorICBcc2V0dXBkYXRhZmlsZQorICBcYWN0aXZlY2F0Y29kZXMKKyAgXGlucHV0IFxqb2JuYW1lLnRvYworfQorCitcbmV3c2tpcFxjb250ZW50c3JpZ2h0bWFyZ2luIFxjb250ZW50c3JpZ2h0bWFyZ2luPTFpbgorXG5ld2NvdW50XHNhdmVwYWdlbm8KK1xuZXdjb3VudFxsYXN0bmVnYXRpdmVwYWdlbm8gXGxhc3RuZWdhdGl2ZXBhZ2VubyA9IC0xCisKKyUgUHJlcGFyZSB0byByZWFkIHdoYXQgd2UndmUgd3JpdHRlbiB0byBcdG9jZmlsZS4KKyUKK1xkZWZcc3RhcnRjb250ZW50cyMxeyUKKyAgJSBJZiBAc2V0Y2hhcHRlcm5ld3BhZ2Ugb24sIGFuZCBAaGVhZGluZ3MgZG91YmxlLCB0aGUgY29udGVudHMgc2hvdWxkCisgICUgc3RhcnQgb24gYW4gb2RkIHBhZ2UsIHVubGlrZSBjaGFwdGVycy4gIFRodXMsIHdlIG1haW50YWluCisgICUgXGNvbnRlbnRzYWxpZ25tYWNybyBpbiBwYXJhbGxlbCB3aXRoIFxwYWdlYWxpZ25tYWNyby4KKyAgJSBGcm9tOiBUb3Jiam9ybiBHcmFubHVuZCA8dGVnZUBtYXRlbWF0aWsuc3Uuc2U+CisgIFxjb250ZW50c2FsaWdubWFjcm8KKyAgXGltbWVkaWF0ZVxjbG9zZW91dFx0b2NmaWxlCisgICUKKyAgJSBEb24ndCBuZWVkIHRvIHB1dCBgQ29udGVudHMnIG9yIGBTaG9ydCBDb250ZW50cycgaW4gdGhlIGhlYWRsaW5lLgorICAlIEl0IGlzIGFidW5kYW50bHkgY2xlYXIgd2hhdCB0aGV5IGFyZS4KKyAgXGRlZlx0aGlzY2hhcHRlcnt9JQorICBcY2hhcG1hY3JveyMxfXtZb21pdGZyb210b2N9e30lCisgICUKKyAgXHNhdmVwYWdlbm8gPSBccGFnZW5vCisgIFxiZWdpbmdyb3VwICAgICAgICAgICAgICAgICAgJSBTZXQgdXAgdG8gaGFuZGxlIGNvbnRlbnRzIGZpbGVzIHByb3Blcmx5LgorICAgIFxyYWdnZWRib3R0b20gICAgICAgICAgICAgICUgV29ycnkgbW9yZSBhYm91dCBicmVha3BvaW50cyB0aGFuIHRoZSBib3R0b20uCisgICAgXGFkdmFuY2VcaHNpemUgYnkgLVxjb250ZW50c3JpZ2h0bWFyZ2luICUgRG9uJ3QgdXNlIHRoZSBmdWxsIGxpbmUgbGVuZ3RoLgorICAgICUKKyAgICAlIFJvbWFuIG51bWVyYWxzIGZvciBwYWdlIG51bWJlcnMuCisgICAgXGlmbnVtIFxwYWdlbm8+MCBcZ2xvYmFsXHBhZ2VubyA9IFxsYXN0bmVnYXRpdmVwYWdlbm8gXGZpCit9CisKKworJSBOb3JtYWwgKGxvbmcpIHRvYy4KK1xkZWZcY29udGVudHN7JQorICBcc3RhcnRjb250ZW50c3tccHV0d29yZFRPQ30lCisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICBccmVhZHRvY2ZpbGUKKyAgICBcZmkKKyAgICBcdmZpbGwgXGVqZWN0CisgICAgXGNvbnRlbnRzYWxpZ25tYWNybyAlIGluIGNhc2UgQHNldGNoYXB0ZXJuZXdwYWdlIG9kZCBpcyBpbiBlZmZlY3QKKyAgICBcaWZlb2YgMSBcZWxzZQorICAgICAgXHBkZm1ha2VvdXRsaW5lcworICAgIFxmaQorICAgIFxjbG9zZWluIDEKKyAgXGVuZGdyb3VwCisgIFxsYXN0bmVnYXRpdmVwYWdlbm8gPSBccGFnZW5vCisgIFxnbG9iYWxccGFnZW5vID0gXHNhdmVwYWdlbm8KK30KKworJSBBbmQganVzdCB0aGUgY2hhcHRlcnMuCitcZGVmXHN1bW1hcnljb250ZW50c3slCisgIFxzdGFydGNvbnRlbnRze1xwdXR3b3JkU2hvcnRUT0N9JQorICAgICUKKyAgICBcbGV0XG51bWNoYXBlbnRyeSA9IFxzaG9ydGNoYXBlbnRyeQorICAgIFxsZXRcYXBwZW50cnkgPSBcc2hvcnRjaGFwZW50cnkKKyAgICBcbGV0XHVubmNoYXBlbnRyeSA9IFxzaG9ydHVubmNoYXBlbnRyeQorICAgICUgV2Ugd2FudCBhIHRydWUgcm9tYW4gaGVyZSBmb3IgdGhlIHBhZ2UgbnVtYmVycy4KKyAgICBcc2VjZm9udHMKKyAgICBcbGV0XHJtPVxzaG9ydGNvbnRybSBcbGV0XGJmPVxzaG9ydGNvbnRiZgorICAgIFxsZXRcc2w9XHNob3J0Y29udHNsIFxsZXRcdHQ9XHNob3J0Y29udHR0CisgICAgXHJtCisgICAgXGh5cGhlbnBlbmFsdHkgPSAxMDAwMAorICAgIFxhZHZhbmNlXGJhc2VsaW5lc2tpcCBieSAxcHQgJSBPcGVuIGl0IHVwIGEgbGl0dGxlLgorICAgIFxkZWZcbnVtc2VjZW50cnkjIzEjIzIjIzMjIzR7fQorICAgIFxsZXRcYXBwc2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFxudW1zdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcYXBwc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFxudW1zdWJzdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcYXBwc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnN1YnN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICBccmVhZHRvY2ZpbGUKKyAgICBcZmkKKyAgICBcY2xvc2VpbiAxCisgICAgXHZmaWxsIFxlamVjdAorICAgIFxjb250ZW50c2FsaWdubWFjcm8gJSBpbiBjYXNlIEBzZXRjaGFwdGVybmV3cGFnZSBvZGQgaXMgaW4gZWZmZWN0CisgIFxlbmRncm91cAorICBcbGFzdG5lZ2F0aXZlcGFnZW5vID0gXHBhZ2VubworICBcZ2xvYmFsXHBhZ2VubyA9IFxzYXZlcGFnZW5vCit9CitcbGV0XHNob3J0Y29udGVudHMgPSBcc3VtbWFyeWNvbnRlbnRzCisKKyUgVHlwZXNldCB0aGUgbGFiZWwgZm9yIGEgY2hhcHRlciBvciBhcHBlbmRpeCBmb3IgdGhlIHNob3J0IGNvbnRlbnRzLgorJSBUaGUgYXJnIGlzLCBlLmcuLCBgQScgZm9yIGFuIGFwcGVuZGl4LCBvciBgMycgZm9yIGEgY2hhcHRlci4KKyUKK1xkZWZcc2hvcnRjaGFwbGFiZWwjMXslCisgICUgVGhpcyBzcGFjZSBzaG91bGQgYmUgZW5vdWdoLCBzaW5jZSBhIHNpbmdsZSBudW1iZXIgaXMgLjVlbSwgYW5kIHRoZQorICAlIHdpZGVzdCBsZXR0ZXIgKE0pIGlzIDFlbSwgYXQgbGVhc3QgaW4gdGhlIENvbXB1dGVyIE1vZGVybiBmb250cy4KKyAgJSBCdXQgdXNlIFxoc3MganVzdCBpbiBjYXNlLgorICAlIChUaGlzIHNwYWNlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZXh0cmEgc3BhY2UgdGhhdCBnZXRzIGFkZGVkIGFmdGVyCisgICUgdGhlIGxhYmVsOyB0aGF0IGdldHMgcHV0IGluIGJ5IFxzaG9ydGNoYXBlbnRyeSBhYm92ZS4pCisgICUKKyAgJSBXZSdkIGxpa2UgdG8gcmlnaHQtanVzdGlmeSBjaGFwdGVyIG51bWJlcnMsIGJ1dCB0aGF0IGxvb2tzIHN0cmFuZ2UKKyAgJSB3aXRoIGFwcGVuZGl4IGxldHRlcnMuICBBbmQgcmlnaHQtanVzdGlmeWluZyBudW1iZXJzIGFuZAorICAlIGxlZnQtanVzdGlmeWluZyBsZXR0ZXJzIGxvb2tzIHN0cmFuZ2Ugd2hlbiB0aGVyZSBpcyBsZXNzIHRoYW4gMTAKKyAgJSBjaGFwdGVycy4gIEhhdmUgdG8gcmVhZCB0aGUgd2hvbGUgdG9jIG9uY2UgdG8ga25vdyBob3cgbWFueSBjaGFwdGVycworICAlIHRoZXJlIGFyZSBiZWZvcmUgZGVjaWRpbmcgLi4uCisgIFxoYm94IHRvIDFlbXsjMVxoc3N9JQorfQorCislIFRoZXNlIG1hY3JvcyBnZW5lcmF0ZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlIHRhYmxlIG9mIGNvbnRlbnRzLgorJSBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNoYXB0ZXIgb3Igc2VjdGlvbiBuYW1lLgorJSBUaGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgcGFnZSBudW1iZXIuCislIFRoZSBhcmd1bWVudHMgaW4gYmV0d2VlbiBhcmUgdGhlIGNoYXB0ZXIgbnVtYmVyLCBzZWN0aW9uIG51bWJlciwgLi4uCisKKyUgQ2hhcHRlcnMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorXGRlZlxudW1jaGFwZW50cnkjMSMyIzMjNHtcZG9jaGFwZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CislCislIENoYXB0ZXJzLCBpbiB0aGUgc2hvcnQgdG9jLgorJSBTZWUgY29tbWVudHMgaW4gXGRvY2hhcGVudHJ5IHJlIHZib3ggYW5kIHJlbGF0ZWQgc2V0dGluZ3MuCitcZGVmXHNob3J0Y2hhcGVudHJ5IzEjMiMzIzR7JQorICBcdG9jZW50cnl7XHNob3J0Y2hhcGxhYmVseyMyfVxsYWJlbHNwYWNlICMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9JQorfQorCislIEFwcGVuZGljZXMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorJSBOZWVkIHRoZSB3b3JkIEFwcGVuZGl4LCBhbmQgYSBmaXhlZC1zaXplIGJveC4KKyUKK1xkZWZcYXBwZW5kaXhib3gjMXslCisgICUgV2UgdXNlIE0gc2luY2UgaXQncyBwcm9iYWJseSB0aGUgd2lkZXN0IGxldHRlci4KKyAgXHNldGJveDAgPSBcaGJveHtccHV0d29yZEFwcGVuZGl4e30gTX0lCisgIFxoYm94IHRvIFx3ZDB7XHB1dHdvcmRBcHBlbmRpeHt9ICMxXGhzc319CislCitcZGVmXGFwcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5e1xhcHBlbmRpeGJveHsjMn1cbGFiZWxzcGFjZSMxfXsjNH19CisKKyUgVW5udW1iZXJlZCBjaGFwdGVycy4KK1xkZWZcdW5uY2hhcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5eyMxfXsjNH19CitcZGVmXHNob3J0dW5uY2hhcGVudHJ5IzEjMiMzIzR7XHRvY2VudHJ5eyMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9fQorCislIFNlY3Rpb25zLgorXGRlZlxudW1zZWNlbnRyeSMxIzIjMyM0e1xkb3NlY2VudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorXGxldFxhcHBzZWNlbnRyeT1cbnVtc2VjZW50cnkKK1xkZWZcdW5uc2VjZW50cnkjMSMyIzMjNHtcZG9zZWNlbnRyeXsjMX17IzR9fQorCislIFN1YnNlY3Rpb25zLgorXGRlZlxudW1zdWJzZWNlbnRyeSMxIzIjMyM0e1xkb3N1YnNlY2VudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorXGxldFxhcHBzdWJzZWNlbnRyeT1cbnVtc3Vic2VjZW50cnkKK1xkZWZcdW5uc3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzZWNlbnRyeXsjMX17IzR9fQorCislIEFuZCBzdWJzdWJzZWN0aW9ucy4KK1xkZWZcbnVtc3Vic3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzdWJzZWNlbnRyeXsjMlxsYWJlbHNwYWNlIzF9eyM0fX0KK1xsZXRcYXBwc3Vic3Vic2VjZW50cnk9XG51bXN1YnN1YnNlY2VudHJ5CitcZGVmXHVubnN1YnN1YnNlY2VudHJ5IzEjMiMzIzR7XGRvc3Vic3Vic2VjZW50cnl7IzF9eyM0fX0KKworJSBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIHZhcmlvdXMgbGV2ZWxzLgorJSBTYW1lIGFzIFxkZWZhdWx0cGFyaW5kZW50LgorXG5ld2RpbWVuXHRvY2luZGVudCBcdG9jaW5kZW50ID0gMTVwdAorCislIE5vdyBmb3IgdGhlIGFjdHVhbCB0eXBlc2V0dGluZy4gSW4gYWxsIHRoZXNlLCAjMSBpcyB0aGUgdGV4dCBhbmQgIzIgaXMgdGhlCislIHBhZ2UgbnVtYmVyLgorJQorJSBJZiB0aGUgdG9jIGhhcyB0byBiZSBicm9rZW4gb3ZlciBwYWdlcywgd2Ugd2FudCBpdCB0byBiZSBhdCBjaGFwdGVycworJSBpZiBhdCBhbGwgcG9zc2libGU7IGhlbmNlIHRoZSBccGVuYWx0eS4KK1xkZWZcZG9jaGFwZW50cnkjMSMyeyUKKyAgIFxwZW5hbHR5LTMwMCBcdnNraXAxXGJhc2VsaW5lc2tpcCBwbHVzLjMzXGJhc2VsaW5lc2tpcCBtaW51cy4yNVxiYXNlbGluZXNraXAKKyAgIFxiZWdpbmdyb3VwCisgICAgIFxjaGFwZW50cnlmb250cworICAgICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorICAgXGVuZGdyb3VwCisgICBcbm9icmVha1x2c2tpcCAuMjVcYmFzZWxpbmVza2lwIHBsdXMuMVxiYXNlbGluZXNraXAKK30KKworXGRlZlxkb3NlY2VudHJ5IzEjMntcYmVnaW5ncm91cAorICBcc2VjZW50cnlmb250cyBcbGVmdHNraXA9XHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0yXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0zXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCislIFdlIHVzZSB0aGUgc2FtZSBcZW50cnkgbWFjcm8gYXMgZm9yIHRoZSBpbmRleCBlbnRyaWVzLgorXGxldFx0b2NlbnRyeSA9IFxlbnRyeQorCislIFNwYWNlIGJldHdlZW4gY2hhcHRlciAob3Igd2hhdGV2ZXIpIG51bWJlciBhbmQgdGhlIHRpdGxlLgorXGRlZlxsYWJlbHNwYWNle1xoc2tpcDFlbSBccmVsYXh9CisKK1xkZWZcZG9wYWdlbm8jMXt7XHJtICMxfX0KK1xkZWZcZG9zaG9ydHBhZ2VubyMxe3tccm0gIzF9fQorCitcZGVmXGNoYXBlbnRyeWZvbnRze1xzZWNmb250cyBccm19CitcZGVmXHNlY2VudHJ5Zm9udHN7XHRleHRmb250c30KK1xkZWZcc3Vic2VjZW50cnlmb250c3tcdGV4dGZvbnRzfQorXGRlZlxzdWJzdWJzZWNlbnRyeWZvbnRze1x0ZXh0Zm9udHN9CisKKworXG1lc3NhZ2V7ZW52aXJvbm1lbnRzLH0KKyUgQGZvbyAuLi4gQGVuZCBmb28uCisKKyUgQHBvaW50e30sIEByZXN1bHR7fSwgQGV4cGFuc2lvbnt9LCBAcHJpbnR7fSwgQGVxdWl2e30uCislCislIFNpbmNlIHRoZXNlIGNoYXJhY3RlcnMgYXJlIHVzZWQgaW4gZXhhbXBsZXMsIGl0IHNob3VsZCBiZSBhbiBldmVuIG51bWJlciBvZgorJSBcdHQgd2lkdGhzLiBFYWNoIFx0dCBjaGFyYWN0ZXIgaXMgMWVuLCBzbyB0d28gbWFrZXMgaXQgMWVtLgorJQorXGRlZlxwb2ludHskXHN0YXIkfQorXGRlZlxyZXN1bHR7XGxlYXZldm1vZGVccmFpc2UuMTVleFxoYm94IHRvIDFlbXtcaGZpbCRcUmlnaHRhcnJvdyRcaGZpbH19CitcZGVmXGV4cGFuc2lvbntcbGVhdmV2bW9kZVxyYWlzZS4xZXhcaGJveCB0byAxZW17XGhmaWwkXG1hcHN0byRcaGZpbH19CitcZGVmXHByaW50e1xsZWF2ZXZtb2RlXGxvd2VyLjFleFxoYm94IHRvIDFlbXtcaGZpbCRcZGFzaHYkXGhmaWx9fQorXGRlZlxlcXVpdntcbGVhdmV2bW9kZVxsb3dlci4xZXhcaGJveCB0byAxZW17XGhmaWwkXHB0ZXhlcXVpdiRcaGZpbH19CisKKyUgVGhlIEBlcnJvcnt9IGNvbW1hbmQuCislIEFkYXB0ZWQgZnJvbSB0aGUgVGVYYm9vaydzIFxib3hpdC4KKyUKK1xuZXdib3hcZXJyb3Jib3gKKyUKK3tcdGVudHQgXGdsb2JhbFxkaW1lbjAgPSAzZW19JSBXaWR0aCBvZiB0aGUgYm94LgorXGRpbWVuMiA9IC41NXB0ICUgVGhpY2tuZXNzIG9mIHJ1bGVzCislIFRoZSB0ZXh0LiAoYHInIGlzIG9wZW4gb24gdGhlIHJpZ2h0LCBgZScgc29tZXdoYXQgbGVzcyBzbyBvbiB0aGUgbGVmdC4pCitcc2V0Ym94MCA9IFxoYm94e1xrZXJuLS43NXB0IFx0ZW5zZiBlcnJvclxrZXJuLTEuNXB0fQorJQorXHNldGJveFxlcnJvcmJveD1caGJveCB0byBcZGltZW4we1xoZmlsCisgICBcaHNpemUgPSBcZGltZW4wIFxhZHZhbmNlXGhzaXplIGJ5IC01LjhwdCAlIFNwYWNlIHRvIGxlZnQrcmlnaHQuCisgICBcYWR2YW5jZVxoc2l6ZSBieSAtMlxkaW1lbjIgJSBSdWxlcy4KKyAgIFx2Ym94eyUKKyAgICAgIFxocnVsZSBoZWlnaHRcZGltZW4yCisgICAgICBcaGJveHtcdnJ1bGUgd2lkdGhcZGltZW4yIFxrZXJuM3B0ICAgICAgICAgICUgU3BhY2UgdG8gbGVmdCBvZiB0ZXh0LgorICAgICAgICAgXHZ0b3B7XGtlcm4yLjRwdCBcYm94MCBca2VybjIuNHB0fSUgU3BhY2UgYWJvdmUvYmVsb3cuCisgICAgICAgICBca2VybjNwdFx2cnVsZSB3aWR0aFxkaW1lbjJ9JSBTcGFjZSB0byByaWdodC4KKyAgICAgIFxocnVsZSBoZWlnaHRcZGltZW4yfQorICAgIFxoZmlsfQorJQorXGRlZlxlcnJvcntcbGVhdmV2bW9kZVxsb3dlci43ZXhcY29weVxlcnJvcmJveH0KKworJSBAdGV4IC4uLiBAZW5kIHRleCAgICBlc2NhcGVzIGludG8gcmF3IFRleCB0ZW1wb3JhcmlseS4KKyUgT25lIGV4Y2VwdGlvbjogQCBpcyBzdGlsbCBhbiBlc2NhcGUgY2hhcmFjdGVyLCBzbyB0aGF0IEBlbmQgdGV4IHdvcmtzLgorJSBCdXQgXEAgb3IgQEAgd2lsbCBnZXQgYSBwbGFpbiB0ZXggQCBjaGFyYWN0ZXIuCisKK1xlbnZkZWZcdGV4eyUKKyAgXGNhdGNvZGUgYFxcPTAgXGNhdGNvZGUgYFx7PTEgXGNhdGNvZGUgYFx9PTIKKyAgXGNhdGNvZGUgYFwkPTMgXGNhdGNvZGUgYFwmPTQgXGNhdGNvZGUgYFwjPTYKKyAgXGNhdGNvZGUgYFxePTcgXGNhdGNvZGUgYFxfPTggXGNhdGNvZGUgYFx+PVxhY3RpdmUgXGxldH49XHRpZQorICBcY2F0Y29kZSBgXCU9MTQKKyAgXGNhdGNvZGUgYFwrPVxvdGhlcgorICBcY2F0Y29kZSBgXCI9XG90aGVyCisgIFxjYXRjb2RlIGBcfD1cb3RoZXIKKyAgXGNhdGNvZGUgYFw8PVxvdGhlcgorICBcY2F0Y29kZSBgXD49XG90aGVyCisgIFxlc2NhcGVjaGFyPWBcXAorICAlCisgIFxsZXRcYj1ccHRleGIKKyAgXGxldFxidWxsZXQ9XHB0ZXhidWxsZXQKKyAgXGxldFxjPVxwdGV4YworICBcbGV0XCw9XHB0ZXhjb21tYQorICBcbGV0XC49XHB0ZXhkb3QKKyAgXGxldFxkb3RzPVxwdGV4ZG90cworICBcbGV0XGVxdWl2PVxwdGV4ZXF1aXYKKyAgXGxldFwhPVxwdGV4ZXhjbGFtCisgIFxsZXRcaT1ccHRleGkKKyAgXGxldFxpbmRlbnQ9XHB0ZXhpbmRlbnQKKyAgXGxldFxub2luZGVudD1ccHRleG5vaW5kZW50CisgIFxsZXRcez1ccHRleGxicmFjZQorICBcbGV0XCs9XHRhYmFsaWduCisgIFxsZXRcfT1ccHRleHJicmFjZQorICBcbGV0XC89XHB0ZXhzbGFzaAorICBcbGV0XCo9XHB0ZXhzdGFyCisgIFxsZXRcdD1ccHRleHQKKyAgXGxldFxmcmVuY2hzcGFjaW5nPVxwbGFpbmZyZW5jaHNwYWNpbmcKKyAgJQorICBcZGVmXGVuZGxkb3Rze1xtYXRoaW5uZXJ7XGxkb3RzXGxkb3RzXGxkb3RzXGxkb3RzfX0lCisgIFxkZWZcZW5kZG90c3tccmVsYXhcaWZtbW9kZVxlbmRsZG90c1xlbHNlJFxtYXRoc3Vycm91bmQ9MHB0IFxlbmRsZG90c1wsJFxmaX0lCisgIFxkZWZcQHtAfSUKK30KKyUgVGhlcmUgaXMgbm8gbmVlZCB0byBkZWZpbmUgXEV0ZXguCisKKyUgRGVmaW5lIEBsaXNwIC4uLiBAZW5kIGxpc3AuCislIEBsaXNwIGVudmlyb25tZW50IGZvcm1zIGEgZ3JvdXAgc28gaXQgY2FuIHJlYmluZCB0aGluZ3MsCislIGluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiBAZW5kIGxpc3AgKHdoaWNoIG5vcm1hbGx5IGlzIGVycm9uZW91cykuCisKKyUgQW1vdW50IHRvIG5hcnJvdyB0aGUgbWFyZ2lucyBieSBmb3IgQGxpc3AuCitcbmV3c2tpcFxsaXNwbmFycm93aW5nIFxsaXNwbmFycm93aW5nPTAuNGluCisKKyUgVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiB0aGF0IF5eTSBnZXRzIGluc2lkZSBAbGlzcCwgQGV4YW1wbGUsIGFuZCBvdGhlcgorJSBzdWNoIGVudmlyb25tZW50cy4gIFxudWxsIGlzIGJldHRlciB0aGFuIGEgc3BhY2UsIHNpbmNlIGl0IGRvZXNuJ3QKKyUgaGF2ZSBhbnkgd2lkdGguCitcZGVmXGxpc3BwYXJ7XG51bGxcZW5kZ3JhZn0KKworJSBUaGlzIHNwYWNlIGlzIGFsd2F5cyBwcmVzZW50IGFib3ZlIGFuZCBiZWxvdyBlbnZpcm9ubWVudHMuCitcbmV3c2tpcFxlbnZza2lwYW1vdW50IFxlbnZza2lwYW1vdW50ID0gMHB0CisKKyUgTWFrZSBzcGFjaW5nIGFuZCBiZWxvdyBlbnZpcm9ubWVudCBzeW1tZXRyaWNhbC4gIFdlIHVzZSBccGFyc2tpcCBoZXJlCislIHRvIGhlbHAgaW4gZG9pbmcgdGhhdCwgc2luY2UgaW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudHMgXHBhcnNraXAKKyUgaXMgcmVzZXQgdG8gemVybzsgdGh1cyB0aGUgXGFmdGVyZW52YnJlYWsgaW5zZXJ0cyBubyBzcGFjZSAtLSBidXQgdGhlCislIHN0YXJ0IG9mIHRoZSBuZXh0IHBhcmFncmFwaCB3aWxsIGluc2VydCBccGFyc2tpcC4KKyUKK1xkZWZcYWJvdmVlbnZicmVha3t7JQorICAlID0xMDAwMCBpbnN0ZWFkIG9mIDwxMDAwMCBiZWNhdXNlIG9mIGEgc3BlY2lhbCBjYXNlIGluIFxpdGVtenp6IGFuZAorICAlIFxzZWN0aW9uaGVhZGluZywgcS52LgorICBcaWZudW0gXGxhc3RwZW5hbHR5PTEwMDAwIFxlbHNlCisgICAgXGFkdmFuY2VcZW52c2tpcGFtb3VudCBieSBccGFyc2tpcAorICAgIFxlbmRncmFmCisgICAgXGlmZGltXGxhc3Rza2lwPFxlbnZza2lwYW1vdW50CisgICAgICBccmVtb3ZlbGFzdHNraXAKKyAgICAgICUgaXQncyBub3QgYSBnb29kIHBsYWNlIHRvIGJyZWFrIGlmIHRoZSBsYXN0IHBlbmFsdHkgd2FzIFxub2JyZWFrCisgICAgICAlIG9yIGJldHRlciAuLi4KKyAgICAgIFxpZm51bVxsYXN0cGVuYWx0eTwxMDAwMCBccGVuYWx0eS01MCBcZmkKKyAgICAgIFx2c2tpcFxlbnZza2lwYW1vdW50CisgICAgXGZpCisgIFxmaQorfX0KKworXGxldFxhZnRlcmVudmJyZWFrID0gXGFib3ZlZW52YnJlYWsKKworJSBcbm9uYXJyb3dpbmcgaXMgYSBmbGFnLiAgSWYgInNldCIsIEBsaXNwIGV0YyBkb24ndCBuYXJyb3cgbWFyZ2luczsgaXQgd2lsbAorJSBhbHNvIGNsZWFyIGl0LCBzbyB0aGF0IGl0cyBlbWJlZGRlZCBlbnZpcm9ubWVudHMgZG8gdGhlIG5hcnJvd2luZyBhZ2Fpbi4KK1xsZXRcbm9uYXJyb3dpbmc9XHJlbGF4CisKKyUgQGNhcnRvdWNoZSAuLi4gQGVuZCBjYXJ0b3VjaGU6IGRyYXcgcmVjdGFuZ2xlIHcvcm91bmRlZCBjb3JuZXJzIGFyb3VuZAorJSBlbnZpcm9ubWVudCBjb250ZW50cy4KK1xmb250XGNpcmNsZT1sY2lyY2xlMTAKK1xuZXdkaW1lblxjaXJjdGhpY2sKK1xuZXdkaW1lblxjYXJ0b3V0ZXJcbmV3ZGltZW5cY2FydGlubmVyCitcbmV3c2tpcFxub3JtYnNraXBcbmV3c2tpcFxub3JtcHNraXBcbmV3c2tpcFxub3JtbHNraXAKK1xjaXJjdGhpY2s9XGZvbnRkaW1lbjhcY2lyY2xlCislCitcZGVmXGN0bHt7XGNpcmNsZVxjaGFyJzAxM1xoc2tpcCAtNnB0fX0lIDZwdCBmcm9tIHBsIGZpbGU6IDEvMmNoYXJ3aWR0aAorXGRlZlxjdHJ7e1xoc2tpcCA2cHRcY2lyY2xlXGNoYXInMDEwfX0KK1xkZWZcY2Jse3tcY2lyY2xlXGNoYXInMDEyXGhza2lwIC02cHR9fQorXGRlZlxjYnJ7e1xoc2tpcCA2cHRcY2lyY2xlXGNoYXInMDExfX0KK1xkZWZcY2FydHRvcHtcaGJveCB0byBcY2FydG91dGVye1xoc2tpcFxsc2tpcAorICAgICAgICBcY3RsXGxlYWRlcnNcaHJ1bGUgaGVpZ2h0XGNpcmN0aGlja1xoZmlsXGN0cgorICAgICAgICBcaHNraXBccnNraXB9fQorXGRlZlxjYXJ0Ym90e1xoYm94IHRvIFxjYXJ0b3V0ZXJ7XGhza2lwXGxza2lwCisgICAgICAgIFxjYmxcbGVhZGVyc1xocnVsZSBoZWlnaHRcY2lyY3RoaWNrXGhmaWxcY2JyCisgICAgICAgIFxoc2tpcFxyc2tpcH19CislCitcbmV3c2tpcFxsc2tpcFxuZXdza2lwXHJza2lwCisKK1xlbnZkZWZcY2FydG91Y2hleyUKKyAgXGlmaG1vZGVccGFyXGZpICAlIGNhbid0IGJlIGluIHRoZSBtaWRzdCBvZiBhIHBhcmFncmFwaC4KKyAgXHN0YXJ0c2F2aW5naW5zZXJ0cworICBcbHNraXA9XGxlZnRza2lwIFxyc2tpcD1ccmlnaHRza2lwCisgIFxsZWZ0c2tpcD0wcHRccmlnaHRza2lwPTBwdCAlIHdlIHdhbnQgdGhlc2UgKm91dHNpZGUqLgorICBcY2FydGlubmVyPVxoc2l6ZSBcYWR2YW5jZVxjYXJ0aW5uZXIgYnktXGxza2lwCisgIFxhZHZhbmNlXGNhcnRpbm5lciBieS1ccnNraXAKKyAgXGNhcnRvdXRlcj1caHNpemUKKyAgXGFkdmFuY2VcY2FydG91dGVyIGJ5IDE4LjRwdAklIGFsbG93IGZvciAzcHQga2VybnMgb24gZWl0aGVyCisJCQkJJSBzaWRlLCBhbmQgZm9yIDZwdCB3YXN0ZSBmcm9tCisJCQkJJSBlYWNoIGNvcm5lciBjaGFyLCBhbmQgcnVsZSB0aGlja25lc3MKKyAgXG5vcm1ic2tpcD1cYmFzZWxpbmVza2lwIFxub3JtcHNraXA9XHBhcnNraXAgXG5vcm1sc2tpcD1cbGluZXNraXAKKyAgJSBGbGFnIHRvIHRlbGwgQGxpc3AsIGV0Yy4sIG5vdCB0byBuYXJyb3cgbWFyZ2luLgorICBcbGV0XG5vbmFycm93aW5nID0gdCUKKyAgXHZib3hcYmdyb3VwCisgICAgICBcYmFzZWxpbmVza2lwPTBwdFxwYXJza2lwPTBwdFxsaW5lc2tpcD0wcHQKKyAgICAgIFxjYXJ0dG9wCisgICAgICBcaGJveFxiZ3JvdXAKKwkgIFxoc2tpcFxsc2tpcAorCSAgXHZydWxlXGtlcm4zcHQKKwkgIFx2Ym94XGJncm91cAorCSAgICAgIFxrZXJuM3B0CisJICAgICAgXGhzaXplPVxjYXJ0aW5uZXIKKwkgICAgICBcYmFzZWxpbmVza2lwPVxub3JtYnNraXAKKwkgICAgICBcbGluZXNraXA9XG5vcm1sc2tpcAorCSAgICAgIFxwYXJza2lwPVxub3JtcHNraXAKKwkgICAgICBcdnNraXAgLVxwYXJza2lwCisJICAgICAgXGNvbW1lbnQgJSBGb3IgZXhwbGFuYXRpb24sIHNlZSB0aGUgZW5kIG9mIFxkZWZcZ3JvdXAuCit9CitcZGVmXEVjYXJ0b3VjaGV7JQorICAgICAgICAgICAgICBcaWZobW9kZVxwYXJcZmkKKwkgICAgICBca2VybjNwdAorCSAgXGVncm91cAorCSAgXGtlcm4zcHRcdnJ1bGUKKwkgIFxoc2tpcFxyc2tpcAorICAgICAgXGVncm91cAorICAgICAgXGNhcnRib3QKKyAgXGVncm91cAorICBcY2hlY2tpbnNlcnRzCit9CisKKworJSBUaGlzIG1hY3JvIGlzIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFsbCB0aGUgQGV4YW1wbGUgdmFyaWFudHMsCislIGluc2lkZSBhIGdyb3VwLgorXGRlZlxub25maWxsc3RhcnR7JQorICBcYWJvdmVlbnZicmVhaworICBcaGZ1enogPSAxMnB0ICUgRG9uJ3QgYmUgZnVzc3kKKyAgXHNlcHNwYWNlcyAlIE1ha2Ugc3BhY2VzIGJlIHdvcmQtc2VwYXJhdG9ycyByYXRoZXIgdGhhbiBzcGFjZSB0b2tlbnMuCisgIFxsZXRccGFyID0gXGxpc3BwYXIgJSBkb24ndCBpZ25vcmUgYmxhbmsgbGluZXMKKyAgXG9iZXlsaW5lcyAlIGVhY2ggbGluZSBvZiBpbnB1dCBpcyBhIGxpbmUgb2Ygb3V0cHV0CisgIFxwYXJza2lwID0gMHB0CisgIFxwYXJpbmRlbnQgPSAwcHQKKyAgXGVtZXJnZW5jeXN0cmV0Y2ggPSAwcHQgJSBkb24ndCB0cnkgdG8gYXZvaWQgb3ZlcmZ1bGwgYm94ZXMKKyAgXGlmeFxub25hcnJvd2luZ1xyZWxheAorICAgIFxhZHZhbmNlIFxsZWZ0c2tpcCBieSBcbGlzcG5hcnJvd2luZworICAgIFxleGRlbnRhbW91bnQ9XGxpc3BuYXJyb3dpbmcKKyAgXGVsc2UKKyAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CisgIFxmaQorICBcbGV0XGV4ZGVudD1cbm9maWxsZXhkZW50Cit9CisKKyUgSWYgeW91IHdhbnQgYWxsIGV4YW1wbGVzIGV0Yy4gc21hbGw6IEBzZXQgZGlzcGVudnNpemUgc21hbGwuCislIElmIHlvdSB3YW50IGV2ZW4gc21hbGwgZXhhbXBsZXMgdGhlIGZ1bGwgc2l6ZTogQHNldCBkaXNwZW52c2l6ZSBub3NtYWxsLgorJSBUaGlzIGFmZmVjdHMgdGhlIGZvbGxvd2luZyBkaXNwbGF5ZWQgZW52aXJvbm1lbnRzOgorJSAgICBAZXhhbXBsZSwgQGRpc3BsYXksIEBmb3JtYXQsIEBsaXNwCislCitcZGVmXHNtYWxsd29yZHtzbWFsbH0KK1xkZWZcbm9zbWFsbHdvcmR7bm9zbWFsbH0KK1xsZXRcU0VUZGlzcGVudnNpemVccmVsYXgKK1xkZWZcc2V0bm9ybWFsZGlzcGVudnslCisgIFxpZnhcU0VUZGlzcGVudnNpemVcc21hbGx3b3JkCisgICAgXHNtYWxsZXhhbXBsZWZvbnRzIFxybQorICBcZmkKK30KK1xkZWZcc2V0c21hbGxkaXNwZW52eyUKKyAgXGlmeFxTRVRkaXNwZW52c2l6ZVxub3NtYWxsd29yZAorICBcZWxzZQorICAgIFxzbWFsbGV4YW1wbGVmb250cyBccm0KKyAgXGZpCit9CisKKyUgV2Ugb2Z0ZW4gZGVmaW5lIHR3byBlbnZpcm9ubWVudHMsIEBmb28gYW5kIEBzbWFsbGZvby4KKyUgTGV0J3MgZG8gaXQgYnkgb25lIGNvbW1hbmQ6CitcZGVmXG1ha2VkaXNwZW52ICMxIzJ7CisgIFxleHBhbmRhZnRlclxlbnZkZWZcY3NuYW1lIzFcZW5kY3NuYW1lIHtcc2V0bm9ybWFsZGlzcGVudiAjMn0KKyAgXGV4cGFuZGFmdGVyXGVudmRlZlxjc25hbWUgc21hbGwjMVxlbmRjc25hbWUge1xzZXRzbWFsbGRpc3BlbnYgIzJ9CisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIEUjMVxlbmRjc25hbWUgXGFmdGVyZW52YnJlYWsKKyAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgRXNtYWxsIzFcZW5kY3NuYW1lIFxhZnRlcmVudmJyZWFrCit9CisKKyUgRGVmaW5lIHR3byBzeW5vbnltczoKK1xkZWZcbWFrZXR3b2Rpc3BlbnZzICMxIzIjM3sKKyAgXG1ha2VkaXNwZW52eyMxfXsjM30KKyAgXG1ha2VkaXNwZW52eyMyfXsjM30KK30KKworJSBAbGlzcDogaW5kZW50ZWQsIG5hcnJvd2VkLCB0eXBld3JpdGVyIGZvbnQ7IEBleGFtcGxlOiBzYW1lIGFzIEBsaXNwLgorJQorJSBAc21hbGxleGFtcGxlIGFuZCBAc21hbGxsaXNwOiB1c2Ugc21hbGxlciBmb250cy4KKyUgT3JpZ2luYWxseSBjb250cmlidXRlZCBieSBQYXZlbEB4ZXJveC4KKyUKK1xtYWtldHdvZGlzcGVudnMge2xpc3B9e2V4YW1wbGV9eyUKKyAgXG5vbmZpbGxzdGFydAorICBcdHQKKyAgXGxldFxrYmRmb250ID0gXGtiZGV4YW1wbGVmb250ICUgQWxsb3cgQGtiZCB0byBkbyBzb21ldGhpbmcgc3BlY2lhbC4KKyAgXGdvYmJsZSAgICAgICAlIGVhdCByZXR1cm4KK30KKworJSBAZGlzcGxheS9Ac21hbGxkaXNwbGF5OiBzYW1lIGFzIEBsaXNwIGV4Y2VwdCBrZWVwIGN1cnJlbnQgZm9udC4KKyUKK1xtYWtlZGlzcGVudiB7ZGlzcGxheX17JQorICBcbm9uZmlsbHN0YXJ0CisgIFxnb2JibGUKK30KKworJSBAZm9ybWF0L0BzbWFsbGZvcm1hdDogc2FtZSBhcyBAZGlzcGxheSBleGNlcHQgZG9uJ3QgbmFycm93IG1hcmdpbnMuCislCitcbWFrZWRpc3BlbnZ7Zm9ybWF0fXslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQorICBcbm9uZmlsbHN0YXJ0CisgIFxnb2JibGUKK30KKworJSBAZmx1c2hsZWZ0OiBzYW1lIGFzIEBmb3JtYXQsIGJ1dCBkb2Vzbid0IG9iZXkgXFNFVGRpc3BlbnZzaXplLgorXGVudmRlZlxmbHVzaGxlZnR7JQorICBcbGV0XG5vbmFycm93aW5nID0gdCUKKyAgXG5vbmZpbGxzdGFydAorICBcZ29iYmxlCit9CitcbGV0XEVmbHVzaGxlZnQgPSBcYWZ0ZXJlbnZicmVhaworCislIEBmbHVzaHJpZ2h0LgorJQorXGVudmRlZlxmbHVzaHJpZ2h0eyUKKyAgXGxldFxub25hcnJvd2luZyA9IHQlCisgIFxub25maWxsc3RhcnQKKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgMHB0IHBsdXMgMWZpbGwKKyAgXGdvYmJsZQorfQorXGxldFxFZmx1c2hyaWdodCA9IFxhZnRlcmVudmJyZWFrCisKKworJSBAcXVvdGF0aW9uIGRvZXMgbm9ybWFsIGxpbmVicmVha2luZyAoaGVuY2Ugd2UgY2FuJ3QgdXNlIFxub25maWxsc3RhcnQpCislIGFuZCBuYXJyb3dzIHRoZSBtYXJnaW5zLiAgV2Uga2VlcCBccGFyc2tpcCBub256ZXJvIGluIGdlbmVyYWwsIHNpbmNlCislIHdlJ3JlIGRvaW5nIG5vcm1hbCBmaWxsaW5nLiAgU28sIHdoZW4gdXNpbmcgXGFib3ZlZW52YnJlYWsgYW5kCislIFxhZnRlcmVudmJyZWFrLCB0ZW1wb3JhcmlseSBtYWtlIFxwYXJza2lwIDAuCislCitcZW52ZGVmXHF1b3RhdGlvbnslCisgIHtccGFyc2tpcD0wcHQgXGFib3ZlZW52YnJlYWt9JSBiZWNhdXNlIFxhYm92ZWVudmJyZWFrIGluc2VydHMgXHBhcnNraXAKKyAgXHBhcmluZGVudD0wcHQKKyAgJQorICAlIEBjYXJ0b3VjaGUgZGVmaW5lcyBcbm9uYXJyb3dpbmcgdG8gaW5oaWJpdCBuYXJyb3dpbmcgYXQgbmV4dCBsZXZlbCBkb3duLgorICBcaWZ4XG5vbmFycm93aW5nXHJlbGF4CisgICAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcYWR2YW5jZVxyaWdodHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcZXhkZW50YW1vdW50ID0gXGxpc3BuYXJyb3dpbmcKKyAgXGVsc2UKKyAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CisgIFxmaQorICBccGFyc2VhcmdccXVvdGF0aW9ubGFiZWwKK30KKworJSBXZSBoYXZlIHJldGFpbmVkIGEgbm9uemVybyBwYXJza2lwIGZvciB0aGUgZW52aXJvbm1lbnQsIHNpbmNlIHdlJ3JlCislIGRvaW5nIG5vcm1hbCBmaWxsaW5nLgorJQorXGRlZlxFcXVvdGF0aW9ueyUKKyAgXHBhcgorICBcaWZ4XHF1b3RhdGlvbmF1dGhvclx1bmRlZmluZWRcZWxzZQorICAgICUgaW5kZW50IGEgYml0LgorICAgIFxsZWZ0bGluZXtca2VybiAyXGxlZnRza2lwIFxzbCAtLS1ccXVvdGF0aW9uYXV0aG9yfSUKKyAgXGZpCisgIHtccGFyc2tpcD0wcHQgXGFmdGVyZW52YnJlYWt9JQorfQorCislIElmIHdlJ3JlIGdpdmVuIGFuIGFyZ3VtZW50LCB0eXBlc2V0IGl0IGluIGJvbGQgd2l0aCBhIGNvbG9uIGFmdGVyLgorXGRlZlxxdW90YXRpb25sYWJlbCMxeyUKKyAgXGRlZlx0ZW1weyMxfSUKKyAgXGlmeFx0ZW1wXGVtcHR5IFxlbHNlCisgICAge1xiZiAjMTogfSUKKyAgXGZpCit9CisKKworJSBMYVRlWC1saWtlIEB2ZXJiYXRpbS4uLkBlbmQgdmVyYmF0aW0gYW5kIEB2ZXJiezxjaGFyPi4uLjxjaGFyPn0KKyUgSWYgd2Ugd2FudCB0byBhbGxvdyBhbnkgPGNoYXI+IGFzIGRlbGltaXRlciwKKyUgd2UgbmVlZCB0aGUgY3VybHkgYnJhY2VzIHNvIHRoYXQgbWFrZWluZm8gc2VlcyB0aGUgQHZlcmIgY29tbWFuZCwgZWc6CislIGBAdmVyYnguLi54JyB3b3VsZCBsb29rIGxpa2UgdGhlICdAdmVyYngnIGNvbW1hbmQuICAtLWphbm5la2VAZ251Lm9yZworJQorJSBbS251dGhdOiBEb25hbGQgRXJ2aW4gS251dGgsIDE5OTYuICBUaGUgVGVYYm9vay4KKyUKKyUgW0tudXRoXSBwLjM0NDsgb25seSB3ZSBuZWVkIHRvIGRvIHRoZSBvdGhlciBjaGFyYWN0ZXJzIFRleGluZm8gc2V0cworJSBhY3RpdmUgdG9vLiAgT3RoZXJ3aXNlLCB0aGV5IGdldCBsb3N0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb24gYQorJSB2ZXJiYXRpbSBsaW5lLgorXGRlZlxkb3NwZWNpYWxzeyUKKyAgXGRvXCBcZG9cXFxkb1x7XGRvXH1cZG9cJFxkb1wmJQorICBcZG9cI1xkb1xeXGRvXF5eS1xkb1xfXGRvXF5eQVxkb1wlXGRvXH4lCisgIFxkb1w8XGRvXD5cZG9cfFxkb1xAXGRvK1xkb1wiJQorfQorJQorJSBbS251dGhdIHAuIDM4MAorXGRlZlx1bmNhdGNvZGVzcGVjaWFsc3slCisgIFxkZWZcZG8jIzF7XGNhdGNvZGVgIyMxPVxvdGhlcn1cZG9zcGVjaWFsc30KKyUKKyUgW0tudXRoXSBwcC4gMzgwLDM4MSwzOTEKKyUgRGlzYWJsZSBTcGFuaXNoIGxpZ2F0dXJlcyA/YCBhbmQgIWAgb2YgXHR0IGZvbnQKK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxgPVxhY3RpdmVcZ2RlZmB7XHJlbGF4XGxxfQorXGVuZGdyb3VwCislCislIFNldHVwIGZvciB0aGUgQHZlcmIgY29tbWFuZC4KKyUKKyUgRWlnaHQgc3BhY2VzIGZvciBhIHRhYgorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgXF5eST1cYWN0aXZlCisgIFxnZGVmXHRhYmVpZ2h0c3BhY2Vze1xjYXRjb2RlYFxeXkk9XGFjdGl2ZVxkZWZeXkl7XCBcIFwgXCBcIFwgXCBcIH19CitcZW5kZ3JvdXAKKyUKK1xkZWZcc2V0dXB2ZXJieyUKKyAgXHR0ICAlIGVhc2llc3QgKGFuZCBjb252ZW50aW9uYWxseSB1c2VkKSBmb250IGZvciB2ZXJiYXRpbQorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZWlnaHRzcGFjZXMKKyAgJSBSZXNwZWN0IGxpbmUgYnJlYWtzLAorICAlIHByaW50IHNwZWNpYWwgc3ltYm9scyBhcyB0aGVtc2VsdmVzLCBhbmQKKyAgJSBtYWtlIGVhY2ggc3BhY2UgY291bnQKKyAgJSBtdXN0IGRvIGluIHRoaXMgb3JkZXI6CisgIFxvYmV5bGluZXMgXHVuY2F0Y29kZXNwZWNpYWxzIFxzZXBzcGFjZXMKK30KKworJSBTZXR1cCBmb3IgdGhlIEB2ZXJiYXRpbSBlbnZpcm9ubWVudAorJQorJSBSZWFsIHRhYiBleHBhbnNpb24KK1xuZXdkaW1lblx0YWJ3IFxzZXRib3gwPVxoYm94e1x0dFxzcGFjZX0gXHRhYnc9OFx3ZDAgJSB0YWIgYW1vdW50CislCitcZGVmXHN0YXJ0dGFiYm94e1xzZXRib3gwPVxoYm94XGJncm91cH0KK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICBcZ2RlZlx0YWJleHBhbmR7JQorICAgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICAgIFxkZWZeXkl7XGxlYXZldm1vZGVcZWdyb3VwCisgICAgICBcZGltZW4wPVx3ZDAgJSB0aGUgd2lkdGggc28gZmFyLCBvciBzaW5jZSB0aGUgcHJldmlvdXMgdGFiCisgICAgICBcZGl2aWRlXGRpbWVuMCBieVx0YWJ3CisgICAgICBcbXVsdGlwbHlcZGltZW4wIGJ5XHRhYncgJSBjb21wdXRlIHByZXZpb3VzIG11bHRpcGxlIG9mIFx0YWJ3CisgICAgICBcYWR2YW5jZVxkaW1lbjAgYnlcdGFidyAgJSBhZHZhbmNlIHRvIG5leHQgbXVsdGlwbGUgb2YgXHRhYncKKyAgICAgIFx3ZDA9XGRpbWVuMCBcYm94MCBcc3RhcnR0YWJib3gKKyAgICB9JQorICB9CitcZW5kZ3JvdXAKK1xkZWZcc2V0dXB2ZXJiYXRpbXslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQorICBcbm9uZmlsbHN0YXJ0CisgICUgRWFzaWVzdCAoYW5kIGNvbnZlbnRpb25hbGx5IHVzZWQpIGZvbnQgZm9yIHZlcmJhdGltCisgIFx0dAorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlZ3JvdXBcYm94MFxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZXhwYW5kCisgICUgUmVzcGVjdCBsaW5lIGJyZWFrcywKKyAgJSBwcmludCBzcGVjaWFsIHN5bWJvbHMgYXMgdGhlbXNlbHZlcywgYW5kCisgICUgbWFrZSBlYWNoIHNwYWNlIGNvdW50CisgICUgbXVzdCBkbyBpbiB0aGlzIG9yZGVyOgorICBcb2JleWxpbmVzIFx1bmNhdGNvZGVzcGVjaWFscyBcc2Vwc3BhY2VzCisgIFxldmVyeXBhcntcc3RhcnR0YWJib3h9JQorfQorCislIERvIHRoZSBAdmVyYiBtYWdpYzogdmVyYmF0aW0gdGV4dCBpcyBxdW90ZWQgYnkgdW5pcXVlCislIGRlbGltaXRlciBjaGFyYWN0ZXJzLiAgQmVmb3JlIGZpcnN0IGRlbGltaXRlciBleHBlY3QgYQorJSByaWdodCBicmFjZSwgYWZ0ZXIgbGFzdCBkZWxpbWl0ZXIgZXhwZWN0IGNsb3NpbmcgYnJhY2U6CislCislICAgIFxkZWZcZG92ZXJiJ3snPGNoYXI+IzE8Y2hhcj4nfSd7IzF9CislCislIFtLbnV0aF0gcC4gMzgyOyBvbmx5IGVhdCBvdXRlciB7fQorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgWz0xXGNhdGNvZGVgXT0yXGNhdGNvZGVgXHs9XG90aGVyXGNhdGNvZGVgXH09XG90aGVyCisgIFxnZGVmXGRvdmVyYnsjMVtcZGVmXG5leHQjIzEjMX1bIyMxXGVuZGdyb3VwXVxuZXh0XQorXGVuZGdyb3VwCislCitcZGVmXHZlcmJ7XGJlZ2luZ3JvdXBcc2V0dXB2ZXJiXGRvdmVyYn0KKyUKKyUKKyUgRG8gdGhlIEB2ZXJiYXRpbSBtYWdpYzogZGVmaW5lIHRoZSBtYWNybyBcZG92ZXJiYXRpbSBzbyB0aGF0CislIHRoZSAoZmlyc3QpIGFyZ3VtZW50IGVuZHMgd2hlbiAnQGVuZCB2ZXJiYXRpbScgaXMgcmVhY2hlZCwgaWU6CislCislICAgICBcZGVmXGRvdmVyYmF0aW0jMUBlbmQgdmVyYmF0aW17IzF9CislCislIEZvciBUZXhpbmZvIGl0J3MgYSBsb3QgZWFzaWVyIHRoYW4gZm9yIExhVGVYLAorJSBiZWNhdXNlIHRleGluZm8ncyBcdmVyYmF0aW0gZG9lc24ndCBzdG9wIGF0ICdcZW5ke3ZlcmJhdGltfSc6CislIHdlIG5lZWQgbm90IHJlZGVmaW5lICdcJywgJ3snIGFuZCAnfScuCislCislIEluc3BpcmVkIGJ5IExhVGVYJ3MgdmVyYmF0aW0gY29tbWFuZCBzZXQgW2xhdGV4Lmx0eF0KKyUKK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFwgPVxhY3RpdmUKKyAgXG9iZXlsaW5lcyAlCisgICUgaWdub3JlIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGZpcnN0IF5eTSwgdGhhdCdzIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQKKyAgJSBvZiB0aGUgQHZlcmJhdGltIGlucHV0IGxpbmUgaXRzZWxmLiAgT3RoZXJ3aXNlIHdlIGdldCBhbiBleHRyYSBibGFuaworICAlIGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHhkZWZcZG92ZXJiYXRpbSMxXl5NIzJAZW5kIHZlcmJhdGlteyMyXG5vZXhwYW5kXGVuZFxnb2JibGUgdmVyYmF0aW19JQorICAlIFdlIHJlYWxseSB3YW50IHsuLi5cZW5kIHZlcmJhdGltfSBpbiB0aGUgYm9keSBvZiB0aGUgbWFjcm8sIGJ1dAorICAlIHdpdGhvdXQgdGhlIGFjdGl2ZSBzcGFjZTsgdGh1cyB3ZSBoYXZlIHRvIHVzZSBceGRlZiBhbmQgXGdvYmJsZS4KK1xlbmRncm91cAorJQorXGVudmRlZlx2ZXJiYXRpbXslCisgICAgXHNldHVwdmVyYmF0aW1cZG92ZXJiYXRpbQorfQorXGxldFxFdmVyYmF0aW0gPSBcYWZ0ZXJlbnZicmVhaworCisKKyUgQHZlcmJhdGltaW5jbHVkZSBGSUxFIC0gaW5zZXJ0IHRleHQgb2YgZmlsZSBpbiB2ZXJiYXRpbSBlbnZpcm9ubWVudC4KKyUKK1xkZWZcdmVyYmF0aW1pbmNsdWRle1xwYXJzZWFyZ3VzaW5nXGZpbGVuYW1lY2F0Y29kZXNcZG92ZXJiYXRpbWluY2x1ZGV9CislCitcZGVmXGRvdmVyYmF0aW1pbmNsdWRlIzF7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXHNldHVwdmVyYmF0aW0KKyAgICBcaW5wdXQgIzEKKyAgICBcYWZ0ZXJlbnZicmVhaworICB9JQorfQorCislIEBjb3B5aW5nIC4uLiBAZW5kIGNvcHlpbmcuCislIFNhdmUgdGhlIHRleHQgYXdheSBmb3IgQGluc2VydGNvcHlpbmcgbGF0ZXIuCislCislIFdlIHNhdmUgdGhlIHVuaW50ZXJwcmV0ZWQgdG9rZW5zLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIGJveC4KKyUgU2F2aW5nIHRoZSB0ZXh0IGluIGEgYm94IHdvdWxkIGJlIG11Y2ggZWFzaWVyLCBidXQgdGhlbiBhbGwgdGhlCislIHR5cGVzZXR0aW5nIGNvbW1hbmRzIChAc21hbGxib29rLCBmb250IGNoYW5nZXMsIGV0Yy4pIGhhdmUgdG8gYmUgZG9uZQorJSBiZWZvcmVoYW5kIC0tIGFuZCBhKSB3ZSB3YW50IEBjb3B5aW5nIHRvIGJlIGRvbmUgZmlyc3QgaW4gdGhlIHNvdXJjZQorJSBmaWxlOyBiKSBsZXR0aW5nIHVzZXJzIGRlZmluZSB0aGUgZnJvbnRtYXR0ZXIgaW4gYXMgZmxleGlibGUgb3JkZXIgYXMKKyUgcG9zc2libGUgaXMgdmVyeSBkZXNpcmFibGUuCislCitcZGVmXGNvcHlpbmd7XGNoZWNrZW52e31cYmVnaW5ncm91cFxzY2FuYXJnY3R4dFxkb2NvcHlpbmd9CitcZGVmXGRvY29weWluZyMxQGVuZCBjb3B5aW5ne1xlbmRncm91cFxkZWZcY29weWluZ3RleHR7IzF9fQorJQorXGRlZlxpbnNlcnRjb3B5aW5neyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBccGFyaW5kZW50ID0gMHB0ICAlIHBhcmFncmFwaCBpbmRlbnRhdGlvbiBsb29rcyB3cm9uZyBvbiB0aXRsZSBwYWdlCisgICAgXHNjYW5leHBcY29weWluZ3RleHQKKyAgXGVuZGdyb3VwCit9CisKK1xtZXNzYWdle2RlZnVucyx9CislIEBkZWZ1biBldGMuCisKK1xuZXdza2lwXGRlZmJvZHlpbmRlbnQgXGRlZmJvZHlpbmRlbnQ9LjRpbgorXG5ld3NraXBcZGVmYXJnc2luZGVudCBcZGVmYXJnc2luZGVudD01MHB0CitcbmV3c2tpcFxkZWZsYXN0YXJnbWFyZ2luIFxkZWZsYXN0YXJnbWFyZ2luPTE4cHQKKworJSBTdGFydCB0aGUgcHJvY2Vzc2luZyBvZiBAZGVmZm46CitcZGVmXHN0YXJ0ZGVmdW57JQorICBcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDAKKyAgICBcbWVkYnJlYWsKKyAgXGVsc2UKKyAgICAlIElmIHRoZXJlIGFyZSB0d28gQGRlZiBjb21tYW5kcyBpbiBhIHJvdywgd2UnbGwgaGF2ZSBhIFxub2JyZWFrLAorICAgICUgd2hpY2ggaXMgdGhlcmUgdG8ga2VlcCB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gdG9nZXRoZXIgd2l0aCBpdHMKKyAgICAlIGhlYWRlci4gIEJ1dCBpZiB0aGVyZSdzIG5vdGhpbmcgYnV0IGhlYWRlcnMsIHdlIG5lZWQgdG8gYWxsb3cgYQorICAgICUgYnJlYWsgc29tZXdoZXJlLiAgQ2hlY2sgc3BlY2lmaWNhbGx5IGZvciBwZW5hbHR5IDEwMDAyLCBpbnNlcnRlZAorICAgICUgYnkgXGRlZmFyZ3Njb21tb25lbmRpbmcsIGluc3RlYWQgb2YgMTAwMDAsIHNpbmNlIHRoZSBzZWN0aW9uaW5nCisgICAgJSBjb21tYW5kcyBhbHNvIGluc2VydCBhIG5vYnJlYWsgcGVuYWx0eSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cKKyAgICAlIGEgYnJlYWsgYmV0d2VlbiBhIHNlY3Rpb24gaGVhZGluZyBhbmQgYSBkZWZ1bi4KKyAgICAlIAorICAgIFxpZm51bVxsYXN0cGVuYWx0eT0xMDAwMiBccGVuYWx0eTIwMDAgXGZpCisgICAgJQorICAgICUgU2ltaWxhcmx5LCBhZnRlciBhIHNlY3Rpb24gaGVhZGluZywgZG8gbm90IGFsbG93IGEgYnJlYWsuCisgICAgJSBCdXQgZG8gaW5zZXJ0IHRoZSBnbHVlLgorICAgIFxtZWRza2lwICAlIHByZWNlZGVkIGJ5IGRpc2NhcmRhYmxlIHBlbmFsdHksIHNvIG5vdCBhIGJyZWFrcG9pbnQKKyAgXGZpCisgICUKKyAgXHBhcmluZGVudD0waW4KKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGRlZmJvZHlpbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorfQorCitcZGVmXGRvZGVmdW54IzF7JQorICAlIEZpcnN0LCBjaGVjayB3aGV0aGVyIHdlIGFyZSBpbiB0aGUgcmlnaHQgZW52aXJvbm1lbnQ6CisgIFxjaGVja2VudiMxJQorICAlCisgICUgQXMgYWJvdmUsIGFsbG93IGxpbmUgYnJlYWsgaWYgd2UgaGF2ZSBtdWx0aXBsZSB4IGhlYWRlcnMgaW4gYSByb3cuCisgICUgSXQncyBub3QgYSBncmVhdCBwbGFjZSwgdGhvdWdoLgorICBcaWZudW1cbGFzdHBlbmFsdHk9MTAwMDIgXHBlbmFsdHkzMDAwIFxmaQorICAlCisgICUgQW5kIG5vdywgaXQncyB0aW1lIHRvIHJldXNlIHRoZSBib2R5IG9mIHRoZSBvcmlnaW5hbCBkZWZ1bjoKKyAgXGV4cGFuZGFmdGVyXGdvYmJsZWRlZnVuIzElCit9CitcZGVmXGdvYmJsZWRlZnVuIzFcc3RhcnRkZWZ1bnt9CisKKyUgXHByaW50ZGVmdW5saW5lIFxkZWZmbmhlYWRlcnt0ZXh0fQorJQorXGRlZlxwcmludGRlZnVubGluZSMxIzJ7JQorICBcYmVnaW5ncm91cAorICAgICUgY2FsbCBcZGVmZm5oZWFkZXI6CisgICAgIzEjMiBcZW5kaGVhZGVyCisgICAgJSBjb21tb24gZW5kaW5nOgorICAgIFxpbnRlcmxpbmVwZW5hbHR5ID0gMTAwMDAKKyAgICBcYWR2YW5jZVxyaWdodHNraXAgYnkgMHB0IHBsdXMgMWZpbAorICAgIFxlbmRncmFmCisgICAgXG5vYnJlYWtcdnNraXAgLVxwYXJza2lwCisgICAgXHBlbmFsdHkgMTAwMDIgICUgc2lnbmFsIHRvIFxzdGFydGRlZnVuIGFuZCBcZG9kZWZ1bngKKyAgICAlIFNvbWUgb2YgdGhlIEBkZWZ1bi10eXBlIHRhZ3MgZG8gbm90IGVuYWJsZSBtYWdpYyBwYXJlbnRoZXNlcywKKyAgICAlIHJlbmRlcmluZyB0aGUgZm9sbG93aW5nIGNoZWNrIHJlZHVuZGFudC4gIEJ1dCB3ZSBkb24ndCBvcHRpbWl6ZS4KKyAgICBcY2hlY2twYXJlbmNvdW50cworICBcZW5kZ3JvdXAKK30KKworXGRlZlxFZGVmdW57XGVuZGdyYWZcbWVkYnJlYWt9CisKKyUgXG1ha2VkZWZ1bntkZWZmbn0gY3JlYXRlcyBcZGVmZm4sIFxkZWZmbnggYW5kIFxFZGVmZm47CislIHRoZSBvbmx5IHRoaW5nIHJlbWFpbm5pZyBpcyB0byBkZWZpbmUgXGRlZmZuaGVhZGVyLgorJQorXGRlZlxtYWtlZGVmdW4jMXslCisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIEUjMVxlbmRjc25hbWUgPSBcRWRlZnVuCisgIFxlZGVmXHRlbXB7XG5vZXhwYW5kXGRvbWFrZWRlZnVuCisgICAgXG1ha2Vjc25hbWV7IzF9XG1ha2Vjc25hbWV7IzF4fVxtYWtlY3NuYW1leyMxaGVhZGVyfX0lCisgIFx0ZW1wCit9CisKKyUgXGRvbWFrZWRlZnVuIFxkZWZmbiBcZGVmZm54IFxkZWZmbmhlYWRlcgorJQorJSBEZWZpbmUgXGRlZmZuIGFuZCBcZGVmZm54LCB3aXRob3V0IHBhcmFtZXRlcnMuCislIFxkZWZmbmhlYWRlciBoYXMgdG8gYmUgZGVmaW5lZCBleHBsaWNpdGx5LgorJQorXGRlZlxkb21ha2VkZWZ1biMxIzIjM3slCisgIFxlbnZkZWYjMXslCisgICAgXHN0YXJ0ZGVmdW4KKyAgICBccGFyc2Vhcmd1c2luZ1xhY3RpdmVwYXJlbnN7XHByaW50ZGVmdW5saW5lIzN9JQorICB9JQorICBcZGVmIzJ7XGRvZGVmdW54IzF9JQorICBcZGVmIzMlCit9CisKKyUlJSBVbnR5cGVkIGZ1bmN0aW9uczoKKworJSBAZGVmZm4gY2F0ZWdvcnkgbmFtZSBhcmdzCitcbWFrZWRlZnVue2RlZmZufXtcZGVmZm5nZW5lcmFse319CisKKyUgQGRlZmZuIGNhdGVnb3J5IGNsYXNzIG5hbWUgYXJncworXG1ha2VkZWZ1bntkZWZvcH0jMSB7XGRlZm9wb257IzFcIFxwdXR3b3Jkb259fQorCislIFxkZWZvcG9uIHtjYXRlZ29yeSBvbn1jbGFzcyBuYW1lIGFyZ3MKK1xkZWZcZGVmb3BvbiMxIzIge1xkZWZmbmdlbmVyYWx7XHB1dHdvcmRvblwgXGNvZGV7IzJ9fXsjMVwgXGNvZGV7IzJ9fSB9CisKKyUgXGRlZmZuZ2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IG5hbWUgYXJncworJQorXGRlZlxkZWZmbmdlbmVyYWwjMSMyICMzICM0XGVuZGhlYWRlcnslCisgICUgUmVtZW1iZXIgdGhhdCBcZG9zdWJpbmR7Zm59e2Zvb317fSBpcyBlcXVpdmFsZW50IHRvIFxkb2luZHtmbn17Zm9vfS4KKyAgXGRvc3ViaW5ke2ZufXtcY29kZXsjM319eyMxfSUKKyAgXGRlZm5hbWV7IzJ9e317IzN9XG1hZ2ljYW1wXGRlZnVuYXJnc3sjNFx1bnNraXB9JQorfQorCislJSUgVHlwZWQgZnVuY3Rpb25zOgorCislIEBkZWZ0eXBlZm4gY2F0ZWdvcnkgdHlwZSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHlwZWZufXtcZGVmdHlwZWZuZ2VuZXJhbHt9fQorCislIEBkZWZ0eXBlb3AgY2F0ZWdvcnkgY2xhc3MgdHlwZSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHlwZW9wfSMxIHtcZGVmdHlwZW9wb257IzFcIFxwdXR3b3Jkb259fQorCislIFxkZWZ0eXBlb3BvbiB7Y2F0ZWdvcnkgb259Y2xhc3MgdHlwZSBuYW1lIGFyZ3MKK1xkZWZcZGVmdHlwZW9wb24jMSMyIHtcZGVmdHlwZWZuZ2VuZXJhbHtccHV0d29yZG9uXCBcY29kZXsjMn19eyMxXCBcY29kZXsjMn19IH0KKworJSBcZGVmdHlwZWZuZ2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IHR5cGUgbmFtZSBhcmdzCislCitcZGVmXGRlZnR5cGVmbmdlbmVyYWwjMSMyICMzICM0ICM1XGVuZGhlYWRlcnslCisgIFxkb3N1YmluZHtmbn17XGNvZGV7IzR9fXsjMX0lCisgIFxkZWZuYW1leyMyfXsjM317IzR9XGRlZnVuYXJnc3sjNVx1bnNraXB9JQorfQorCislJSUgVHlwZWQgdmFyaWFibGVzOgorCislIEBkZWZ0eXBldnIgY2F0ZWdvcnkgdHlwZSB2YXIgYXJncworXG1ha2VkZWZ1bntkZWZ0eXBldnJ9e1xkZWZ0eXBlY3ZnZW5lcmFse319CisKKyUgQGRlZnR5cGVjdiBjYXRlZ29yeSBjbGFzcyB0eXBlIHZhciBhcmdzCitcbWFrZWRlZnVue2RlZnR5cGVjdn0jMSB7XGRlZnR5cGVjdm9meyMxXCBccHV0d29yZG9mfX0KKworJSBcZGVmdHlwZWN2b2Yge2NhdGVnb3J5IG9mfWNsYXNzIHR5cGUgdmFyIGFyZ3MKK1xkZWZcZGVmdHlwZWN2b2YjMSMyIHtcZGVmdHlwZWN2Z2VuZXJhbHtccHV0d29yZG9mXCBcY29kZXsjMn19eyMxXCBcY29kZXsjMn19IH0KKworJSBcZGVmdHlwZWN2Z2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IHR5cGUgdmFyIGFyZ3MKKyUKK1xkZWZcZGVmdHlwZWN2Z2VuZXJhbCMxIzIgIzMgIzQgIzVcZW5kaGVhZGVyeyUKKyAgXGRvc3ViaW5ke3ZyfXtcY29kZXsjNH19eyMxfSUKKyAgXGRlZm5hbWV7IzJ9eyMzfXsjNH1cZGVmdW5hcmdzeyM1XHVuc2tpcH0lCit9CisKKyUlJSBVbnR5cGVkIHZhcmlhYmxlczoKKworJSBAZGVmdnIgY2F0ZWdvcnkgdmFyIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdnJ9IzEge1xkZWZ0eXBldnJoZWFkZXJ7IzF9IHt9IH0KKworJSBAZGVmY3YgY2F0ZWdvcnkgY2xhc3MgdmFyIGFyZ3MKK1xtYWtlZGVmdW57ZGVmY3Z9IzEge1xkZWZjdm9meyMxXCBccHV0d29yZG9mfX0KKworJSBcZGVmY3ZvZiB7Y2F0ZWdvcnkgb2Z9Y2xhc3MgdmFyIGFyZ3MKK1xkZWZcZGVmY3ZvZiMxIzIge1xkZWZ0eXBlY3ZvZnsjMX0jMiB7fSB9CisKKyUlJSBUeXBlOgorJSBAZGVmdHAgY2F0ZWdvcnkgbmFtZSBhcmdzCitcbWFrZWRlZnVue2RlZnRwfSMxICMyICMzXGVuZGhlYWRlcnslCisgIFxkb2luZHt0cH17XGNvZGV7IzJ9fSUKKyAgXGRlZm5hbWV7IzF9e317IzJ9XGRlZnVuYXJnc3sjM1x1bnNraXB9JQorfQorCislIFJlbWFpbmluZyBAZGVmdW4tbGlrZSBzaG9ydGN1dHM6CitcbWFrZWRlZnVue2RlZnVufXtcZGVmZm5oZWFkZXJ7XHB1dHdvcmREZWZmdW5jfSB9CitcbWFrZWRlZnVue2RlZm1hY317XGRlZmZuaGVhZGVye1xwdXR3b3JkRGVmbWFjfSB9CitcbWFrZWRlZnVue2RlZnNwZWN9e1xkZWZmbmhlYWRlcntccHV0d29yZERlZnNwZWN9IH0KK1xtYWtlZGVmdW57ZGVmdHlwZWZ1bn17XGRlZnR5cGVmbmhlYWRlcntccHV0d29yZERlZmZ1bmN9IH0KK1xtYWtlZGVmdW57ZGVmdmFyfXtcZGVmdnJoZWFkZXJ7XHB1dHdvcmREZWZ2YXJ9IH0KK1xtYWtlZGVmdW57ZGVmb3B0fXtcZGVmdnJoZWFkZXJ7XHB1dHdvcmREZWZvcHR9IH0KK1xtYWtlZGVmdW57ZGVmdHlwZXZhcn17XGRlZnR5cGV2cmhlYWRlcntccHV0d29yZERlZnZhcn0gfQorXG1ha2VkZWZ1bntkZWZtZXRob2R9e1xkZWZvcG9uXHB1dHdvcmRNZXRob2Rvbn0KK1xtYWtlZGVmdW57ZGVmdHlwZW1ldGhvZH17XGRlZnR5cGVvcG9uXHB1dHdvcmRNZXRob2Rvbn0KK1xtYWtlZGVmdW57ZGVmaXZhcn17XGRlZmN2b2ZccHV0d29yZEluc3RhbmNlVmFyaWFibGVvZn0KK1xtYWtlZGVmdW57ZGVmdHlwZWl2YXJ9e1xkZWZ0eXBlY3ZvZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mfQorCislIFxkZWZuYW1lLCB3aGljaCBmb3JtYXRzIHRoZSBuYW1lIG9mIHRoZSBAZGVmIChub3QgdGhlIGFyZ3MpLgorJSAjMSBpcyB0aGUgY2F0ZWdvcnksIHN1Y2ggYXMgIkZ1bmN0aW9uIi4KKyUgIzIgaXMgdGhlIHJldHVybiB0eXBlLCBpZiBhbnkuCislICMzIGlzIHRoZSBmdW5jdGlvbiBuYW1lLgorJQorJSBXZSBhcmUgZm9sbG93ZWQgYnkgKGJ1dCBub3QgcGFzc2VkKSB0aGUgYXJndW1lbnRzLCBpZiBhbnkuCislCitcZGVmXGRlZm5hbWUjMSMyIzN7JQorICAlIEdldCB0aGUgdmFsdWVzIG9mIFxsZWZ0c2tpcCBhbmQgXHJpZ2h0c2tpcCBhcyB0aGV5IHdlcmUgb3V0c2lkZSB0aGUgQGRlZi4uLgorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAtXGRlZmJvZHlpbmRlbnQKKyAgJQorICAlIEhvdyB3ZSdsbCBmb3JtYXQgdGhlIHR5cGUgbmFtZS4gIFB1dHRpbmcgaXQgaW4gYnJhY2tldHMgaGVscHMKKyAgJSBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBib2R5IHRleHQgdGhhdCBtYXkgZW5kIHVwIG9uIHRoZSBuZXh0IGxpbmUKKyAgJSBqdXN0IGJlbG93IGl0LgorICBcZGVmXHRlbXB7IzF9JQorICBcc2V0Ym94MD1caGJveHtca2VyblxkZWZsYXN0YXJnbWFyZ2luIFxpZnhcdGVtcFxlbXB0eVxlbHNlIFtccm1cdGVtcF1cZml9CisgICUKKyAgJSBGaWd1cmUgb3V0IGxpbmUgc2l6ZXMgZm9yIHRoZSBwYXJhZ3JhcGggc2hhcGUuCisgICUgVGhlIGZpcnN0IGxpbmUgbmVlZHMgc3BhY2UgZm9yIFxib3gwOyBidXQgaWYgXHJpZ2h0c2tpcCBpcyBub256ZXJvLAorICAlIHdlIG5lZWQgb25seSBzcGFjZSBmb3IgdGhlIHBhcnQgb2YgXGJveDAgd2hpY2ggZXhjZWVkcyBpdDoKKyAgXGRpbWVuMD1caHNpemUgIFxhZHZhbmNlXGRpbWVuMCBieSAtXHdkMCAgXGFkdmFuY2VcZGltZW4wIGJ5IFxyaWdodHNraXAKKyAgJSBUaGUgY29udGludWF0aW9uczoKKyAgXGRpbWVuMj1caHNpemUgIFxhZHZhbmNlXGRpbWVuMiBieSAtXGRlZmFyZ3NpbmRlbnQKKyAgJSAocGxhaW4udGV4IHNheXMgdGhhdCBcZGltZW4xIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgZ2xvYmFsLikKKyAgXHBhcnNoYXBlIDIgMGluIFxkaW1lbjAgXGRlZmFyZ3NpbmRlbnQgXGRpbWVuMgorICAlCisgICUgUHV0IHRoZSB0eXBlIG5hbWUgdG8gdGhlIHJpZ2h0IG1hcmdpbi4KKyAgXG5vaW5kZW50CisgIFxoYm94IHRvIDBwdHslCisgICAgXGhmaWxcYm94MCBca2Vybi1caHNpemUKKyAgICAlIFxoc2l6ZSBoYXMgdG8gYmUgc2hvcnRlbmVkIHRoaXMgd2F5OgorICAgIFxrZXJuXGxlZnRza2lwCisgICAgJSBJbnRlbnRpb25hbGx5IGRvIG5vdCByZXNwZWN0IFxyaWdodHNraXAsIHNpbmNlIHdlIG5lZWQgdGhlIHNwYWNlLgorICB9JQorICAlCisgICUgQWxsb3cgYWxsIGxpbmVzIHRvIGJlIHVuZGVyZnVsbCB3aXRob3V0IGNvbXBsYWludDoKKyAgXHRvbGVyYW5jZT0xMDAwMCBcaGJhZG5lc3M9MTAwMDAKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorICB7JQorICAgICUgZGVmdW4gZm9udHMuIFdlIHVzZSB0eXBld3JpdGVyIGJ5IGRlZmF1bHQgKHVzZWQgdG8gYmUgYm9sZCkgYmVjYXVzZToKKyAgICAlIC4gd2UncmUgcHJpbnRpbmcgaWRlbnRpZmllcnMsIHRoZXkgc2hvdWxkIGJlIGluIHR0IGluIHByaW5jaXBsZS4KKyAgICAlIC4gaW4gbGFuZ3VhZ2VzIHdpdGggbWFueSBhY2NlbnRzLCBzdWNoIGFzIEN6ZWNoIG9yIEZyZW5jaCwgaXQncworICAgICUgICBjb21tb24gdG8gbGVhdmUgYWNjZW50cyBvZmYgaWRlbnRpZmllcnMuICBUaGUgcmVzdWx0IGxvb2tzIG9rIGluCisgICAgJSAgIHR0LCBidXQgZXhjZWVkaW5nbHkgc3RyYW5nZSBpbiBybS4KKyAgICAlIC4gd2UgZG9uJ3Qgd2FudCAtLSBhbmQgLS0tIHRvIGJlIHRyZWF0ZWQgYXMgbGlnYXR1cmVzLgorICAgICUgLiB0aGlzIHN0aWxsIGRvZXMgbm90IGZpeCB0aGUgP2AgYW5kICFgIGxpZ2F0dXJlcywgYnV0IHNvIGZhciBubworICAgICUgICBvbmUgaGFzIG1hZGUgaWRlbnRpZmllcnMgdXNpbmcgdGhlbSA6KS4KKyAgICBcZGYgXHR0CisgICAgXGRlZlx0ZW1weyMyfSUgcmV0dXJuIHZhbHVlIHR5cGUKKyAgICBcaWZ4XHRlbXBcZW1wdHlcZWxzZSBcdGNsb3Nle1x0ZW1wfSBcZmkKKyAgICAjMyUgb3V0cHV0IGZ1bmN0aW9uIG5hbWUKKyAgfSUKKyAge1xybVxlbnNraXB9JSBoc2tpcCAwLjUgZW0gb2YgXHRlbnJtCisgICUKKyAgXGJvbGRicmF4CisgICUgYXJndW1lbnRzIHdpbGwgYmUgb3V0cHV0IG5leHQsIGlmIGFueS4KK30KKworJSBQcmludCBhcmd1bWVudHMgaW4gc2xhbnRlZCByb21hbiAobm90IHR0c2wpLCBpbmNvbnNpc3RlbnRseSB3aXRoIHVzaW5nCislIHR0IGZvciB0aGUgbmFtZS4gIFRoaXMgaXMgYmVjYXVzZSBsaXRlcmFsIHRleHQgaXMgc29tZXRpbWVzIG5lZWRlZCBpbgorJSB0aGUgYXJndW1lbnQgbGlzdCAoZ3JvZmYgbWFudWFsKSwgYW5kIHR0c2wgYW5kIHR0IGFyZSBub3QgdmVyeQorJSBkaXN0aW5ndWlzaGFibGUuICBQcmV2ZW50IGh5cGhlbmF0aW9uIGF0IGAtJyBjaGFycy4KKyUKK1xkZWZcZGVmdW5hcmdzIzF7JQorICAlIHVzZSBzbCBieSBkZWZhdWx0IChub3QgdHRzbCksCisgICUgdHQgZm9yIHRoZSBuYW1lcy4KKyAgXGRmIFxzbCBcaHlwaGVuY2hhclxmb250PTAKKyAgJQorICAlIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBhbiBhcmd1bWVudCBoYXMgdHdvIGRhc2hlcyAoZm9yIGluc3RhbmNlKSwgd2UKKyAgJSB3YW50IGEgd2F5IHRvIGdldCB0dHNsLiAgTGV0J3MgdHJ5IEB2YXIgZm9yIHRoYXQuCisgIFxsZXRcdmFyPVx0dHNsYW50ZWQKKyAgIzElCisgIFxzbFxoeXBoZW5jaGFyXGZvbnQ9NDUKK30KKworJSBXZSB3YW50ICgpJltdIHRvIHByaW50IHNwZWNpYWxseSBvbiB0aGUgZGVmdW4gbGluZS4KKyUKK1xkZWZcYWN0aXZlcGFyZW5zeyUKKyAgXGNhdGNvZGVgXCg9XGFjdGl2ZSBcY2F0Y29kZWBcKT1cYWN0aXZlCisgIFxjYXRjb2RlYFxbPVxhY3RpdmUgXGNhdGNvZGVgXF09XGFjdGl2ZQorICBcY2F0Y29kZWBcJj1cYWN0aXZlCit9CisKKyUgTWFrZSBjb250cm9sIHNlcXVlbmNlcyB3aGljaCBhY3QgbGlrZSBub3JtYWwgcGFyZW50aGVzaXMgY2hhcnMuCitcbGV0XGxwYXJlbiA9ICggXGxldFxycGFyZW4gPSApCisKKyUgQmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgZGVmaW5pdGlvbiBmb3IgYCgnLCBldGMuICBGb3IgZXhhbXBsZSwKKyUgaWYgdGhlIGZuIG5hbWUgaGFzIHBhcmVucyBpbiBpdCwgXGJvbGRicmF4IHdpbGwgbm90IGJlIGluIGVmZmVjdCB5ZXQsCislIHNvIFRlWCB3b3VsZCBvdGhlcndpc2UgY29tcGxhaW4gYWJvdXQgdW5kZWZpbmVkIGNvbnRyb2wgc2VxdWVuY2UuCit7CisgIFxhY3RpdmVwYXJlbnMKKyAgXGdsb2JhbFxsZXQoPVxscGFyZW4gXGdsb2JhbFxsZXQpPVxycGFyZW4KKyAgXGdsb2JhbFxsZXRbPVxsYnJhY2sgXGdsb2JhbFxsZXRdPVxyYnJhY2sKKyAgXGdsb2JhbFxsZXQmID0gXCYKKworICBcZ2RlZlxib2xkYnJheHtcbGV0KD1cb3BuclxsZXQpPVxjbG5yXGxldFs9XGxicmJcbGV0XT1ccmJyYn0KKyAgXGdkZWZcbWFnaWNhbXB7XGxldCY9XGFtcHJtfQorfQorCitcbmV3Y291bnRccGFyZW5jb3VudAorCislIElmIHdlIGVuY291bnRlciAmZm9vLCB0aGVuIHR1cm4gb24gKCktaGFja2luZyBhZnRlcndhcmRzCitcbmV3aWZcaWZhbXBzZWVuCitcZGVmXGFtcHJtIzEge1xhbXBzZWVudHJ1ZXtcYmZcJiMxIH19CisKK1xkZWZccGFyZW5mb250eyUKKyAgXGlmYW1wc2VlbgorICAgICUgQXQgdGhlIGZpcnN0IGxldmVsLCBwcmludCBwYXJlbnMgaW4gcm9tYW4sCisgICAgJSBvdGhlcndpc2UgdXNlIHRoZSBkZWZhdWx0IGZvbnQuCisgICAgXGlmbnVtIFxwYXJlbmNvdW50PTEgXHJtIFxmaQorICBcZWxzZQorICAgICUgVGhlIFxzZiBwYXJlbnMgKGluIFxib2xkYnJheCkgYWN0dWFsbHkgYXJlIGEgbGl0dGxlIGJvbGRlciB0aGFuCisgICAgJSB0aGUgY29udGFpbmVkIHRleHQuICBUaGlzIGlzIGVzcGVjaWFsbHkgbmVlZGVkIGZvciBbIGFuZCBdIC4KKyAgICBcc2YKKyAgXGZpCit9CitcZGVmXGluZmlyc3RsZXZlbCMxeyUKKyAgXGlmYW1wc2VlbgorICAgIFxpZm51bVxwYXJlbmNvdW50PTEKKyAgICAgICMxJQorICAgIFxmaQorICBcZmkKK30KK1xkZWZcYmZhZnRlcndvcmQjMSB7IzEgXGJmfQorCitcZGVmXG9wbnJ7JQorICBcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAxCisgIHtccGFyZW5mb250KH0lCisgIFxpbmZpcnN0bGV2ZWwgXGJmYWZ0ZXJ3b3JkCit9CitcZGVmXGNsbnJ7JQorICB7XHBhcmVuZm9udCl9JQorICBcaW5maXJzdGxldmVsIFxzbAorICBcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAtMQorfQorCitcbmV3Y291bnRcYnJhY2tjb3VudAorXGRlZlxsYnJieyUKKyAgXGdsb2JhbFxhZHZhbmNlXGJyYWNrY291bnQgYnkgMQorICB7XGJmW30lCit9CitcZGVmXHJicmJ7JQorICB7XGJmXX0lCisgIFxnbG9iYWxcYWR2YW5jZVxicmFja2NvdW50IGJ5IC0xCit9CisKK1xkZWZcY2hlY2twYXJlbmNvdW50c3slCisgIFxpZm51bVxwYXJlbmNvdW50PTAgXGVsc2UgXGJhZHBhcmVuY291bnQgXGZpCisgIFxpZm51bVxicmFja2NvdW50PTAgXGVsc2UgXGJhZGJyYWNrY291bnQgXGZpCit9CitcZGVmXGJhZHBhcmVuY291bnR7JQorICBcZXJybWVzc2FnZXtVbmJhbGFuY2VkIHBhcmVudGhlc2VzIGluIEBkZWZ9JQorICBcZ2xvYmFsXHBhcmVuY291bnQ9MAorfQorXGRlZlxiYWRicmFja2NvdW50eyUKKyAgXGVycm1lc3NhZ2V7VW5iYWxhbmNlZCBzcXVhcmUgYnJhY2VzIGluIEBkZWZ9JQorICBcZ2xvYmFsXGJyYWNrY291bnQ9MAorfQorCisKK1xtZXNzYWdle21hY3Jvcyx9CislIEBtYWNyby4KKworJSBUbyBkbyB0aGlzIHJpZ2h0IHdlIG5lZWQgYSBmZWF0dXJlIG9mIGUtVGVYLCBcc2NhbnRva2VucywKKyUgd2hpY2ggd2UgYXJyYW5nZSB0byBlbXVsYXRlIHdpdGggYSB0ZW1wb3JhcnkgZmlsZSBpbiBvcmRpbmFyeSBUZVguCitcaWZ4XGVUZVh2ZXJzaW9uXHVuZGVmaW5lZAorICBcbmV3d3JpdGVcbWFjc2NyaWJibGUKKyAgXGRlZlxzY2FudG9rZW5zIzF7JQorICAgIFx0b2tzMD17IzF9JQorICAgIFxpbW1lZGlhdGVcb3Blbm91dFxtYWNzY3JpYmJsZT1cam9ibmFtZS50bXAKKyAgICBcaW1tZWRpYXRlXHdyaXRlXG1hY3NjcmliYmxle1x0aGVcdG9rczB9JQorICAgIFxpbW1lZGlhdGVcY2xvc2VvdXRcbWFjc2NyaWJibGUKKyAgICBcaW5wdXQgXGpvYm5hbWUudG1wCisgIH0KK1xmaQorCitcZGVmXHNjYW5tYWNybyMxeyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcbmV3bGluZWNoYXJgXF5eTQorICAgIFxsZXRceGVhdHNwYWNlc1xlYXRzcGFjZXMKKyAgICAlIFVuZG8gY2F0Y29kZSBjaGFuZ2VzIG9mIFxzdGFydGNvbnRlbnRzIGFuZCBcZG9wcmludGluZGV4CisgICAgJSBXaGVuIGNhbGxlZCBmcm9tIEBpbnNlcnRjb3B5aW5nIG9yIChzaG9ydCljYXB0aW9uLCB3ZSBuZWVkIGFjdGl2ZQorICAgICUgYmFja3NsYXNoIHRvIGdldCBpdCBwcmludGVkIGNvcnJlY3RseS4gIFByZXZpb3VzbHksIHdlIGhhZAorICAgICUgXGNhdGNvZGVgXFw9XG90aGVyIGluc3RlYWQuICBXZSdsbCBzZWUgd2hldGhlciBhIHByb2JsZW0gYXBwZWFycworICAgICUgd2l0aCBtYWNybyBleHBhbnNpb24uCQkJCS0ta2FzYWwsIDE5YXVnMDQKKyAgICBcY2F0Y29kZWBcQD0wIFxjYXRjb2RlYFxcPVxhY3RpdmUgXGVzY2FwZWNoYXI9YFxACisgICAgJSAuLi4gYW5kIFxleGFtcGxlCisgICAgXHNwYWNlaXNzcGFjZQorICAgICUKKyAgICAlIEFwcGVuZCBcZW5kaW5wdXQgdG8gbWFrZSBzdXJlIHRoYXQgVGVYIGRvZXMgbm90IHNlZSB0aGUgZW5kaW5nIG5ld2xpbmUuCisgICAgJQorICAgICUgSSd2ZSB2ZXJpZmllZCB0aGF0IGl0IGlzIG5lY2Vzc2FyeSBib3RoIGZvciBlLVRlWCBhbmQgZm9yIG9yZGluYXJ5IFRlWAorICAgICUJCQkJCQkJLS1rYXNhbCwgMjlub3YwMworICAgIFxzY2FudG9rZW5zeyMxXGVuZGlucHV0fSUKKyAgXGVuZGdyb3VwCit9CisKK1xkZWZcc2NhbmV4cCMxeyUKKyAgXGVkZWZcdGVtcHtcbm9leHBhbmRcc2Nhbm1hY3JveyMxfX0lCisgIFx0ZW1wCit9CisKK1xuZXdjb3VudFxwYXJhbW5vICAgJSBDb3VudCBvZiBwYXJhbWV0ZXJzCitcbmV3dG9rc1xtYWNuYW1lICAgICUgTWFjcm8gbmFtZQorXG5ld2lmXGlmcmVjdXJzaXZlICAlIElzIGl0IHJlY3Vyc2l2ZT8KKworJSBMaXN0IG9mIGFsbCBkZWZpbmVkIG1hY3JvcyBpbiB0aGUgZm9ybQorJSAgICBcZGVmaW5lZHVtbXl3b3JkXG1hY3JvMVxkZWZpbmVkdW1teXdvcmRcbWFjcm8yLi4uCislIEN1cnJlbnRseSBpcyBhbHNvIGNvbnRhaW5zIGFsbCBAYWxpYXNlczsgdGhlIGxpc3QgY2FuIGJlIHNwbGl0CislIGlmIHRoZXJlIGlzIGEgbmVlZC4KK1xkZWZcbWFjcm9saXN0e30KKworJSBBZGQgdGhlIG1hY3JvIHRvIFxtYWNyb2xpc3QKK1xkZWZcYWRkdG9tYWNyb2xpc3QjMXtcZXhwYW5kYWZ0ZXIgXGFkZHRvbWFjcm9saXN0eHh4IFxjc25hbWUjMVxlbmRjc25hbWV9CitcZGVmXGFkZHRvbWFjcm9saXN0eHh4IzF7JQorICAgICBcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XG1hY3JvbGlzdFxkZWZpbmVkdW1teXdvcmQjMX0lCisgICAgIFx4ZGVmXG1hY3JvbGlzdHtcdGhlXHRva3MwfSUKK30KKworJSBVdGlsaXR5IHJvdXRpbmVzLgorJSBUaGlzIGRvZXMgXGxldCAjMSA9ICMyLCB3aXRoIFxjc25hbWVzOyB0aGF0IGlzLAorJSAgIFxsZXQgXGNzbmFtZSMxXGVuZGNzbmFtZSA9IFxjc25hbWUjMlxlbmRjc25hbWUKKyUgKGV4Y2VwdCBvZiBjb3Vyc2Ugd2UgaGF2ZSB0byBwbGF5IGV4cGFuc2lvbiBnYW1lcykuCislIAorXGRlZlxjc2xldCMxIzJ7JQorICBcZXhwYW5kYWZ0ZXJcbGV0CisgIFxjc25hbWUjMVxleHBhbmRhZnRlclxlbmRjc25hbWUKKyAgXGNzbmFtZSMyXGVuZGNzbmFtZQorfQorCislIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIG9mZiBhIHN0cmluZy4KKyUgQ29uY2VwdHMgZnJvbSBhcm8tYmVuZCBwcm9ibGVtIDE1IChzZWUgQ1RBTikuCit7XGNhdGNvZGVgXEA9MTEKK1xnZGVmXGVhdHNwYWNlcyAjMXtcZXhwYW5kYWZ0ZXJcdHJpbUBcZXhwYW5kYWZ0ZXJ7IzEgfX0KK1xnZGVmXHRyaW1AICMxe1x0cmltQEAgQCMxIEAgIzEgQCBAQH0KK1xnZGVmXHRyaW1AQCAjMUAgIzJAICMzQEB7XHRyaW1AQEBcZW1wdHkgIzIgQH0KK1xkZWZcdW5icmFjZSMxeyMxfQorXHVuYnJhY2V7XGdkZWZcdHJpbUBAQCAjMSB9ICMyQHsjMX0KK30KKworJSBUcmltIGEgc2luZ2xlIHRyYWlsaW5nIF5eTSBvZmYgYSBzdHJpbmcuCit7XGNhdGNvZGVgXF5eTT1cb3RoZXIgXGNhdGNvZGVgXFE9MyUKK1xnZGVmXGVhdGNyICMxe1xlYXRjcmEgIzFRXl5NUX0lCitcZ2RlZlxlYXRjcmEjMV5eTVF7XGVhdGNyYiMxUX0lCitcZ2RlZlxlYXRjcmIjMVEjMlF7IzF9JQorfQorCislIE1hY3JvIGJvZGllcyBhcmUgYWJzb3JiZWQgYXMgYW4gYXJndW1lbnQgaW4gYSBjb250ZXh0IHdoZXJlCislIGFsbCBjaGFyYWN0ZXJzIGFyZSBjYXRjb2RlIDEwLCAxMSBvciAxMiwgZXhjZXB0IFwgd2hpY2ggaXMgYWN0aXZlCislIChhcyBpbiBub3JtYWwgdGV4aW5mbykuIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGFuZ2UgdGhlIGRlZmluaXRpb24gb2YgXC4KKworJSBJdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGhhcmQgQ1JzIHdoZW4gdGhlIG1hY3JvIGlzIGV4ZWN1dGVkLiBUaGlzIGlzCislIGRvbmUgYnkgIG1ha2luZyBeXk0gKFxlbmRsaW5lY2hhcikgY2F0Y29kZSAxMiB3aGVuIHJlYWRpbmcgdGhlIG1hY3JvCislIGJvZHksIGFuZCB0aGVuIG1ha2luZyBpdCB0aGUgXG5ld2xpbmVjaGFyIGluIFxzY2FubWFjcm8uCisKK1xkZWZcc2NhbmN0eHR7JQorICBcY2F0Y29kZWBcIj1cb3RoZXIKKyAgXGNhdGNvZGVgXCs9XG90aGVyCisgIFxjYXRjb2RlYFw8PVxvdGhlcgorICBcY2F0Y29kZWBcPj1cb3RoZXIKKyAgXGNhdGNvZGVgXEA9XG90aGVyCisgIFxjYXRjb2RlYFxePVxvdGhlcgorICBcY2F0Y29kZWBcXz1cb3RoZXIKKyAgXGNhdGNvZGVgXHw9XG90aGVyCisgIFxjYXRjb2RlYFx+PVxvdGhlcgorfQorCitcZGVmXHNjYW5hcmdjdHh0eyUKKyAgXHNjYW5jdHh0CisgIFxjYXRjb2RlYFxcPVxvdGhlcgorICBcY2F0Y29kZWBcXl5NPVxvdGhlcgorfQorCitcZGVmXG1hY3JvYm9keWN0eHR7JQorICBcc2NhbmN0eHQKKyAgXGNhdGNvZGVgXHs9XG90aGVyCisgIFxjYXRjb2RlYFx9PVxvdGhlcgorICBcY2F0Y29kZWBcXl5NPVxvdGhlcgorICBcdXNlbWJvZHliYWNrc2xhc2gKK30KKworXGRlZlxtYWNyb2FyZ2N0eHR7JQorICBcc2NhbmN0eHQKKyAgXGNhdGNvZGVgXFw9XG90aGVyCit9CisKKyUgXG1ib2R5YmFja3NsYXNoIGlzIHRoZSBkZWZpbml0aW9uIG9mIFwgaW4gQG1hY3JvIGJvZGllcy4KKyUgSXQgbWFwcyBcZm9vXCA9PiBcY3NuYW1lIG1hY2FyZy5mb29cZW5kY3NuYW1lID0+ICNOCislIHdoZXJlIE4gaXMgdGhlIG1hY3JvIHBhcmFtZXRlciBudW1iZXIuCislIFdlIGRlZmluZSBcY3NuYW1lIG1hY2FyZy5cZW5kY3NuYW1lIHRvIGJlIFxyZWFsYmFja3NsYXNoLCBzbworJSBcXCBpbiBtYWNybyByZXBsYWNlbWVudCB0ZXh0IGdldHMgeW91IGEgYmFja3NsYXNoLgorCit7XGNhdGNvZGVgQD0wIEBjYXRjb2RlYEBcPUBhY3RpdmUKKyBAZ2RlZkB1c2VtYm9keWJhY2tzbGFzaHtAbGV0XD1AbWJvZHliYWNrc2xhc2h9CisgQGdkZWZAbWJvZHliYWNrc2xhc2gjMVx7QGNzbmFtZSBtYWNhcmcuIzFAZW5kY3NuYW1lfQorfQorXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgbWFjYXJnLlxlbmRjc25hbWV7XHJlYWxiYWNrc2xhc2h9CisKK1xkZWZcbWFjcm97XHJlY3Vyc2l2ZWZhbHNlXHBhcnNlYXJnXG1hY3JveHh4fQorXGRlZlxybWFjcm97XHJlY3Vyc2l2ZXRydWVccGFyc2VhcmdcbWFjcm94eHh9CisKK1xkZWZcbWFjcm94eHgjMXslCisgIFxnZXRhcmdzeyMxfSUgICAgICAgICAgIG5vdyBcbWFjbmFtZSBpcyB0aGUgbWFjbmFtZSBhbmQgXGFyZ2wgdGhlIGFyZ2xpc3QKKyAgXGlmeFxhcmdsXGVtcHR5ICAgICAgICUgbm8gYXJndW1lbnRzCisgICAgIFxwYXJhbW5vPTAlCisgIFxlbHNlCisgICAgIFxleHBhbmRhZnRlclxwYXJzZW1hcmdkZWYgXGFyZ2w7JQorICBcZmkKKyAgXGlmMVxjc25hbWUgaXNtYWNyby5cdGhlXG1hY25hbWVcZW5kY3NuYW1lCisgICAgIFxtZXNzYWdle1dhcm5pbmc6IHJlZGVmaW5pbmcgXHRoZVxtYWNuYW1lfSUKKyAgXGVsc2UKKyAgICAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgXHRoZVxtYWNuYW1lXGVuZGNzbmFtZSBccmVsYXgKKyAgICAgXGVsc2UgXGVycm1lc3NhZ2V7TWFjcm8gbmFtZSBcdGhlXG1hY25hbWVcc3BhY2UgYWxyZWFkeSBkZWZpbmVkfVxmaQorICAgICBcZ2xvYmFsXGNzbGV0e21hY3NhdmUuXHRoZVxtYWNuYW1lfXtcdGhlXG1hY25hbWV9JQorICAgICBcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgaXNtYWNyby5cdGhlXG1hY25hbWVcZW5kY3NuYW1lPTElCisgICAgIFxhZGR0b21hY3JvbGlzdHtcdGhlXG1hY25hbWV9JQorICBcZmkKKyAgXGJlZ2luZ3JvdXAgXG1hY3JvYm9keWN0eHQKKyAgXGlmcmVjdXJzaXZlIFxleHBhbmRhZnRlclxwYXJzZXJtYWNib2R5CisgIFxlbHNlIFxleHBhbmRhZnRlclxwYXJzZW1hY2JvZHkKKyAgXGZpfQorCitccGFyc2VhcmdkZWZcdW5tYWNyb3slCisgIFxpZjFcY3NuYW1lIGlzbWFjcm8uIzFcZW5kY3NuYW1lCisgICAgXGdsb2JhbFxjc2xldHsjMX17bWFjc2F2ZS4jMX0lCisgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXQgXGNzbmFtZSBpc21hY3JvLiMxXGVuZGNzbmFtZT0wJQorICAgICUgUmVtb3ZlIHRoZSBtYWNybyBuYW1lIGZyb20gXG1hY3JvbGlzdDoKKyAgICBcYmVnaW5ncm91cAorICAgICAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUjMVxlbmRjc25hbWUgXHJlbGF4CisgICAgICBcbGV0XGRlZmluZWR1bW15d29yZFx1bm1hY3JvZG8KKyAgICAgIFx4ZGVmXG1hY3JvbGlzdHtcbWFjcm9saXN0fSUKKyAgICBcZW5kZ3JvdXAKKyAgXGVsc2UKKyAgICBcZXJybWVzc2FnZXtNYWNybyAjMSBub3QgZGVmaW5lZH0lCisgIFxmaQorfQorCislIENhbGxlZCBieSBcZG8gZnJvbSBcZG91bm1hY3JvIG9uIGVhY2ggbWFjcm8uICBUaGUgaWRlYSBpcyB0byBvbWl0IGFueQorJSBtYWNybyBkZWZpbml0aW9ucyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkIHRvIFxyZWxheC4KKyUKK1xkZWZcdW5tYWNyb2RvIzF7JQorICBcaWZ4ICMxXHJlbGF4CisgICAgJSByZW1vdmUgdGhpcworICBcZWxzZQorICAgIFxub2V4cGFuZFxkZWZpbmVkdW1teXdvcmQgXG5vZXhwYW5kIzElCisgIFxmaQorfQorCislIFRoaXMgbWFrZXMgdXNlIG9mIHRoZSBvYnNjdXJlIGZlYXR1cmUgdGhhdCBpZiB0aGUgbGFzdCB0b2tlbiBvZiBhCislIDxwYXJhbWV0ZXIgbGlzdD4gaXMgIywgdGhlbiB0aGUgcHJlY2VkaW5nIGFyZ3VtZW50IGlzIGRlbGltaXRlZCBieQorJSBhbiBvcGVuaW5nIGJyYWNlLCBhbmQgdGhhdCBvcGVuaW5nIGJyYWNlIGlzIG5vdCBjb25zdW1lZC4KK1xkZWZcZ2V0YXJncyMxe1xnZXRhcmdzeHh4IzF7fX0KK1xkZWZcZ2V0YXJnc3h4eCMxI3tcZ2V0bWFjbmFtZSAjMSBccmVsYXhcZ2V0bWFjYXJnc30KK1xkZWZcZ2V0bWFjbmFtZSAjMSAjMlxyZWxheHtcbWFjbmFtZT17IzF9fQorXGRlZlxnZXRtYWNhcmdzIzF7XGRlZlxhcmdseyMxfX0KKworJSBQYXJzZSB0aGUgb3B0aW9uYWwge3BhcmFtc30gbGlzdC4gIFNldCB1cCBccGFyYW1ubyBhbmQgXHBhcmFtbGlzdAorJSBzbyBcZGVmbWFjcm8ga25vd3Mgd2hhdCB0byBkby4gIERlZmluZSBcbWFjYXJnLmJsYWggZm9yIGVhY2ggYmxhaAorJSBpbiB0aGUgcGFyYW1zIGxpc3QsIHRvIGJlICMjTiB3aGVyZSBOIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGF0IGxpc3QuCislIFRoYXQgZ2V0cyB1c2VkIGJ5IFxtYm9keWJhY2tzbGFzaCAoYWJvdmUpLgorCislIFdlIG5lZWQgdG8gZ2V0IGBtYWNybyBwYXJhbWV0ZXIgY2hhciAjJyBpbnRvIHNldmVyYWwgZGVmaW5pdGlvbnMuCislIFRoZSB0ZWNobmlxdWUgdXNlZCBpcyBzdG9sZW4gZnJvbSBMYVRlWDogIGxldCBcaGFzaCBiZSBzb21ldGhpbmcKKyUgdW5leHBhbmRhYmxlLCBpbnNlcnQgdGhhdCB3aGVyZXZlciB5b3UgbmVlZCBhICMsIGFuZCB0aGVuIHJlZGVmaW5lCislIGl0IHRvICMganVzdCBiZWZvcmUgdXNpbmcgdGhlIHRva2VuIGxpc3QgcHJvZHVjZWQuCislCislIFRoZSBzYW1lIHRlY2huaXF1ZSBpcyB1c2VkIHRvIHByb3RlY3QgXGVhdHNwYWNlcyB0aWxsIGp1c3QgYmVmb3JlCislIHRoZSBtYWNybyBpcyB1c2VkLgorCitcZGVmXHBhcnNlbWFyZ2RlZiMxO3tccGFyYW1ubz0wXGRlZlxwYXJhbWxpc3R7fSUKKyAgICAgICAgXGxldFxoYXNoXHJlbGF4XGxldFx4ZWF0c3BhY2VzXHJlbGF4XHBhcnNlbWFyZ2RlZnh4eCMxLDssfQorXGRlZlxwYXJzZW1hcmdkZWZ4eHgjMSx7JQorICBcaWYjMTtcbGV0XG5leHQ9XHJlbGF4CisgIFxlbHNlIFxsZXRcbmV4dD1ccGFyc2VtYXJnZGVmeHh4CisgICAgXGFkdmFuY2VccGFyYW1ubyBieSAxJQorICAgIFxleHBhbmRhZnRlclxlZGVmXGNzbmFtZSBtYWNhcmcuXGVhdHNwYWNlc3sjMX1cZW5kY3NuYW1lCisgICAgICAgIHtceGVhdHNwYWNlc3tcaGFzaFx0aGVccGFyYW1ub319JQorICAgIFxlZGVmXHBhcmFtbGlzdHtccGFyYW1saXN0XGhhc2hcdGhlXHBhcmFtbm8sfSUKKyAgXGZpXG5leHR9CisKKyUgVGhlc2UgdHdvIGNvbW1hbmRzIHJlYWQgcmVjdXJzaXZlIGFuZCBub25yZWN1cnNpdmUgbWFjcm8gYm9kaWVzLgorJSAoVGhleSdyZSBkaWZmZXJlbnQgc2luY2UgcmVjIGFuZCBub25yZWMgbWFjcm9zIGVuZCBkaWZmZXJlbnRseS4pCisKK1xsb25nXGRlZlxwYXJzZW1hY2JvZHkjMUBlbmQgbWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCitcbG9uZ1xkZWZccGFyc2VybWFjYm9keSMxQGVuZCBybWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCisKKyUgVGhpcyBkZWZpbmVzIHRoZSBtYWNybyBpdHNlbGYuIFRoZXJlIGFyZSBzaXggY2FzZXM6IHJlY3Vyc2l2ZSBhbmQKKyUgbm9ucmVjdXJzaXZlIG1hY3JvcyBvZiB6ZXJvLCBvbmUsIGFuZCBtYW55IGFyZ3VtZW50cy4KKyUgTXVjaCBtYWdpYyB3aXRoIFxleHBhbmRhZnRlciBoZXJlLgorJSBceGRlZiBpcyB1c2VkIHNvIHRoYXQgbWFjcm8gZGVmaW5pdGlvbnMgd2lsbCBzdXJ2aXZlIHRoZSBmaWxlCislIHRoZXkncmUgZGVmaW5lZCBpbjsgQGluY2x1ZGUgcmVhZHMgdGhlIGZpbGUgaW5zaWRlIGEgZ3JvdXAuCitcZGVmXGRlZm1hY3JveyUKKyAgXGxldFxoYXNoPSMjJSBjb252ZXJ0IHBsYWNlaG9sZGVycyB0byBtYWNybyBwYXJhbWV0ZXIgY2hhcnMKKyAgXGlmcmVjdXJzaXZlCisgICAgXGlmY2FzZVxwYXJhbW5vCisgICAgJSAwCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxvciAlIDEKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZVxlbmRjc25hbWV7JQorICAgICAgICAgXGJncm91cFxub2V4cGFuZFxtYWNyb2FyZ2N0eHQKKyAgICAgICAgIFxub2V4cGFuZFxicmFjZW9ybGluZQorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lfSUKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgIFxlZ3JvdXBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfX0lCisgICAgXGVsc2UgJSBtYW55CisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUgIyMxLH0lCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgICAgXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lCisgICAgICAgICAgXHBhcmFtbGlzdHtcZWdyb3VwXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxmaQorICBcZWxzZQorICAgIFxpZmNhc2VccGFyYW1ubworICAgICUgMAorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgIFxub2V4cGFuZFxub3JlY3Vyc2V7XHRoZVxtYWNuYW1lfSUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcb3IgJSAxCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcYnJhY2VvcmxpbmUKKyAgICAgICAgIFxleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgXG5vZXhwYW5kXG5vcmVjdXJzZXtcdGhlXG1hY25hbWV9JQorICAgICAgICBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfVxlZ3JvdXB9JQorICAgIFxlbHNlICUgbWFueQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgICBcYmdyb3VwXG5vZXhwYW5kXG1hY3JvYXJnY3R4dAorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eFxlbmRjc25hbWV9JQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lICMjMSx9JQorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZgorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUKKyAgICAgIFxwYXJhbWxpc3R7JQorICAgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgICBcbm9leHBhbmRcbm9yZWN1cnNle1x0aGVcbWFjbmFtZX0lCisgICAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcZmkKKyAgXGZpfQorCitcZGVmXG5vcmVjdXJzZSMxe1xiZ3JvdXBcY3NsZXR7IzF9e21hY3NhdmUuIzF9fQorCislIFxicmFjZW9ybGluZSBkZWNpZGVzIHdoZXRoZXIgdGhlIG5leHQgbm9ud2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgYQorJSB7LiAgSWYgc28gaXQgcmVhZHMgdXAgdG8gdGhlIGNsb3NpbmcgfSwgaWYgbm90LCBpdCByZWFkcyB0aGUgd2hvbGUKKyUgbGluZS4gIFdoYXRldmVyIHdhcyByZWFkIGlzIHRoZW4gZmVkIHRvIHRoZSBuZXh0IGNvbnRyb2wgc2VxdWVuY2UKKyUgYXMgYW4gYXJndW1lbnQgKGJ5IFxwYXJzZWJyYWNlIG9yIFxwYXJzZWFyZykKK1xkZWZcYnJhY2VvcmxpbmUjMXtcbGV0XG5leHQ9IzFcZnV0dXJlbGV0XG5jaGFyXGJyYWNlb3JsaW5leHh4fQorXGRlZlxicmFjZW9ybGluZXh4eHslCisgIFxpZnhcbmNoYXJcYmdyb3VwXGVsc2UKKyAgICBcZXhwYW5kYWZ0ZXJccGFyc2VhcmcKKyAgXGZpIFxuZXh0fQorCisKKyUgQGFsaWFzLgorJSBXZSBuZWVkIHNvbWUgdHJpY2tlcnkgdG8gcmVtb3ZlIHRoZSBvcHRpb25hbCBzcGFjZXMgYXJvdW5kIHRoZSBlcXVhbAorJSBzaWduLiAgSnVzdCBtYWtlIHRoZW0gYWN0aXZlIGFuZCB0aGVuIGV4cGFuZCB0aGVtIGFsbCB0byBub3RoaW5nLgorXGRlZlxhbGlhc3tccGFyc2Vhcmd1c2luZ1xvYmV5c3BhY2VzXGFsaWFzeHh4fQorXGRlZlxhbGlhc3h4eCAjMXtcYWxpYXN5eXkjMVxyZWxheH0KK1xkZWZcYWxpYXN5eXkgIzE9IzJccmVsYXh7JQorICB7JQorICAgIFxleHBhbmRhZnRlclxsZXRcb2JleWVkc3BhY2U9XGVtcHR5CisgICAgXGFkZHRvbWFjcm9saXN0eyMxfSUKKyAgICBceGRlZlxuZXh0e1xnbG9iYWxcbGV0XG1ha2Vjc25hbWV7IzF9PVxtYWtlY3NuYW1leyMyfX0lCisgIH0lCisgIFxuZXh0Cit9CisKKworXG1lc3NhZ2V7Y3Jvc3MgcmVmZXJlbmNlcyx9CisKK1xuZXd3cml0ZVxhdXhmaWxlCisKK1xuZXdpZlxpZmhhdmV4cmVmcyAgICAlIFRydWUgaWYgeHJlZiB2YWx1ZXMgYXJlIGtub3duLgorXG5ld2lmXGlmd2FybmVkeHJlZnMgICUgVHJ1ZSBpZiB3ZSB3YXJuZWQgb25jZSB0aGF0IHRoZXkgYXJlbid0IGtub3duLgorCislIEBpbmZvcmVmIGlzIHJlbGF0aXZlbHkgc2ltcGxlLgorXGRlZlxpbmZvcmVmICMxe1xpbmZvcmVmenp6ICMxLCwsLCoqfQorXGRlZlxpbmZvcmVmenp6ICMxLCMyLCMzLCM0Kip7XHB1dHdvcmRTZWV7fSBccHV0d29yZEluZm97fSBccHV0d29yZGZpbGV7fSBcZmlsZXtcaWdub3Jlc3BhY2VzICMze319LAorICBub2RlIFxzYW1we1xpZ25vcmVzcGFjZXMjMXt9fX0KKworJSBAbm9kZSdzIG9ubHkgam9iIGluIFRlWCBpcyB0byBkZWZpbmUgXGxhc3Rub2RlLCB3aGljaCBpcyB1c2VkIGluCislIGNyb3NzLXJlZmVyZW5jZXMuICBUaGUgQG5vZGUgbGluZSBtaWdodCBvciBtaWdodCBub3QgaGF2ZSBjb21tYXMsIGFuZAorJSBtaWdodCBvciBtaWdodCBub3QgaGF2ZSBzcGFjZXMgYmVmb3JlIHRoZSBmaXJzdCBjb21tYSwgbGlrZToKKyUgQG5vZGUgZm9vICwgYmFyICwgLi4uCislIFdlIGRvbid0IHdhbnQgc3VjaCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlIG5vZGUgbmFtZS4KKyUKK1xwYXJzZWFyZ2RlZlxub2Rle1xjaGVja2Vudnt9XGRvbm9kZSAjMSAsXGZpbmlzaG5vZGVwYXJzZX0KKyUKKyUgYWxzbyByZW1vdmUgYSB0cmFpbGluZyBjb21tYSwgaW4gY2FzZSBvZiBzb21ldGhpbmcgbGlrZSB0aGlzOgorJSBAbm9kZSBIZWxwLUNyb3NzLCAgLCAgLCBDcm9zcy1yZWZzCitcZGVmXGRvbm9kZSMxICwjMlxmaW5pc2hub2RlcGFyc2V7XGRvZG9ub2RlICMxLFxmaW5pc2hub2RlcGFyc2V9CitcZGVmXGRvZG9ub2RlIzEsIzJcZmluaXNobm9kZXBhcnNle1xnZGVmXGxhc3Rub2RleyMxfX0KKworXGxldFxud25vZGU9XG5vZGUKK1xsZXRcbGFzdG5vZGU9XGVtcHR5CisKKyUgV3JpdGUgYSBjcm9zcy1yZWZlcmVuY2UgZGVmaW5pdGlvbiBmb3IgdGhlIGN1cnJlbnQgbm9kZS4gICMxIGlzIHRoZQorJSB0eXBlIChZbnVtYmVyZWQsIFlhcHBlbmRpeCwgWW5vdGhpbmcpLgorJQorXGRlZlxkb25vZGVyZWYjMXslCisgIFxpZnhcbGFzdG5vZGVcZW1wdHlcZWxzZQorICAgIFxzZXRyZWZ7XGxhc3Rub2RlfXsjMX0lCisgICAgXGdsb2JhbFxsZXRcbGFzdG5vZGU9XGVtcHR5CisgIFxmaQorfQorCislIEBhbmNob3J7TkFNRX0gLS0gZGVmaW5lIHhyZWYgdGFyZ2V0IGF0IGFyYml0cmFyeSBwb2ludC4KKyUKK1xuZXdjb3VudFxzYXZlc2ZyZWdpc3RlcgorJQorXGRlZlxzYXZlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzYXZlc2ZyZWdpc3Rlcj1cc3BhY2VmYWN0b3IgXGZpfQorXGRlZlxyZXN0b3Jlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzcGFjZWZhY3Rvcj1cc2F2ZXNmcmVnaXN0ZXIgXGZpfQorXGRlZlxhbmNob3IjMXtcc2F2ZXNmIFxzZXRyZWZ7IzF9e1lub3RoaW5nfVxyZXN0b3Jlc2YgXGlnbm9yZXNwYWNlc30KKworJSBcc2V0cmVme05BTUV9e1NOVH0gZGVmaW5lcyBhIGNyb3NzLXJlZmVyZW5jZSBwb2ludCBOQU1FIChhIG5vZGUgb3IgYW4KKyUgYW5jaG9yKSwgd2hpY2ggY29uc2lzdHMgb2YgdGhyZWUgcGFydHM6CislIDEpIE5BTUUtdGl0bGUgLSB0aGUgY3VycmVudCBzZWN0aW9uaW5nIG5hbWUgdGFrZW4gZnJvbSBcdGhpc3NlY3Rpb24sCislICAgICAgICAgICAgICAgICBvciB0aGUgYW5jaG9yIG5hbWUuCislIDIpIE5BTUUtc250ICAgLSBzZWN0aW9uIG51bWJlciBhbmQgdHlwZSwgcGFzc2VkIGFzIHRoZSBTTlQgYXJnLCBvcgorJSAgICAgICAgICAgICAgICAgZW1wdHkgZm9yIGFuY2hvcnMuCislIDMpIE5BTUUtcGcgICAgLSB0aGUgcGFnZSBudW1iZXIuCislCislIFRoaXMgaXMgY2FsbGVkIGZyb20gXGRvbm9kZXJlZiwgXGFuY2hvciwgYW5kIFxkb2Zsb2F0LiAgSW4gdGhlIGNhc2Ugb2YKKyUgZmxvYXRzLCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBhcnQsIHdoaWNoIGlzIG5vdCB3cml0dGVuIGhlcmU6CislIDQpIE5BTUUtbG9mICAgLSB0aGUgdGV4dCBhcyBpdCBzaG91bGQgYXBwZWFyIGluIGEgQGxpc3RvZmZsb2F0cy4KKyUKK1xkZWZcc2V0cmVmIzEjMnslCisgIFxwZGZta2Rlc3R7IzF9JQorICBcaWZsaW5rcworICAgIHslCisgICAgICBcYXRkdW1taWVzICAlIHByZXNlcnZlIGNvbW1hbmRzLCBidXQgZG9uJ3QgZXhwYW5kIHRoZW0KKyAgICAgIFxlZGVmXHdyaXRleHJkZWYjIzEjIzJ7JQorCVx3cml0ZVxhdXhmaWxle0B4cmRlZnsjMS0lICMxIG9mIFxzZXRyZWYsIGV4cGFuZGVkIGJ5IHRoZSBcZWRlZgorCSAgIyMxfXsjIzJ9fSUgdGhlc2UgYXJlIHBhcmFtZXRlcnMgb2YgXHdyaXRleHJkZWYKKyAgICAgIH0lCisgICAgICBcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XHRoaXNzZWN0aW9ufSUKKyAgICAgIFxpbW1lZGlhdGUgXHdyaXRleHJkZWZ7dGl0bGV9e1x0aGVcdG9rczAgfSUKKyAgICAgIFxpbW1lZGlhdGUgXHdyaXRleHJkZWZ7c250fXtcY3NuYW1lICMyXGVuZGNzbmFtZX0lIFxZbnVtYmVyZWQgZXRjLgorICAgICAgXHdyaXRleHJkZWZ7cGd9e1xmb2xpb30lIHdpbGwgYmUgd3JpdHRlbiBsYXRlciwgZHVyaW5nIFxzaGlwb3V0CisgICAgfSUKKyAgXGZpCit9CisKKyUgQHhyZWYsIEBweHJlZiwgYW5kIEByZWYgZ2VuZXJhdGUgY3Jvc3MtcmVmZXJlbmNlcy4gIEZvciBceHJlZlgsICMxIGlzCislIHRoZSBub2RlIG5hbWUsICMyIHRoZSBuYW1lIG9mIHRoZSBJbmZvIGNyb3NzLXJlZmVyZW5jZSwgIzMgdGhlIHByaW50ZWQKKyUgbm9kZSBuYW1lLCAjNCB0aGUgbmFtZSBvZiB0aGUgSW5mbyBmaWxlLCAjNSB0aGUgbmFtZSBvZiB0aGUgcHJpbnRlZAorJSBtYW51YWwuICBBbGwgYnV0IHRoZSBub2RlIG5hbWUgY2FuIGJlIG9taXR0ZWQuCislCitcZGVmXHB4cmVmIzF7XHB1dHdvcmRzZWV7fSBceHJlZlhbIzEsLCwsLCwsXX0KK1xkZWZceHJlZiMxe1xwdXR3b3JkU2Vle30gXHhyZWZYWyMxLCwsLCwsLF19CitcZGVmXHJlZiMxe1x4cmVmWFsjMSwsLCwsLCxdfQorXGRlZlx4cmVmWFsjMSwjMiwjMywjNCwjNSwjNl17XGJlZ2luZ3JvdXAKKyAgXHVuc2Vwc3BhY2VzCisgIFxkZWZccHJpbnRlZG1hbnVhbHtcaWdub3Jlc3BhY2VzICM1fSUKKyAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMzfSUKKyAgXHNldGJveDE9XGhib3h7XHByaW50ZWRtYW51YWxcdW5za2lwfSUKKyAgXHNldGJveDA9XGhib3h7XHByaW50ZWRyZWZuYW1lXHVuc2tpcH0lCisgIFxpZmRpbSBcd2QwID0gMHB0CisgICAgJSBObyBwcmludGVkIG5vZGUgbmFtZSB3YXMgZXhwbGljaXRseSBnaXZlbi4KKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSBTRVR4cmVmLWF1dG9tYXRpYy1zZWN0aW9uLXRpdGxlXGVuZGNzbmFtZVxyZWxheAorICAgICAgJSBVc2UgdGhlIG5vZGUgbmFtZSBpbnNpZGUgdGhlIHNxdWFyZSBicmFja2V0cy4KKyAgICAgIFxkZWZccHJpbnRlZHJlZm5hbWV7XGlnbm9yZXNwYWNlcyAjMX0lCisgICAgXGVsc2UKKyAgICAgICUgVXNlIHRoZSBhY3R1YWwgY2hhcHRlci9zZWN0aW9uIHRpdGxlIGFwcGVhciBpbnNpZGUKKyAgICAgICUgdGhlIHNxdWFyZSBicmFja2V0cy4gIFVzZSB0aGUgcmVhbCBzZWN0aW9uIHRpdGxlIGlmIHdlIGhhdmUgaXQuCisgICAgICBcaWZkaW0gXHdkMSA+IDBwdAorICAgICAgICAlIEl0IGlzIGluIGFub3RoZXIgbWFudWFsLCBzbyB3ZSBkb24ndCBoYXZlIGl0LgorICAgICAgICBcZGVmXHByaW50ZWRyZWZuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgICAgJSBXZSBrbm93IHRoZSByZWFsIHRpdGxlIGlmIHdlIGhhdmUgdGhlIHhyZWYgdmFsdWVzLgorICAgICAgICAgIFxkZWZccHJpbnRlZHJlZm5hbWV7XHJlZnh7IzEtdGl0bGV9e319JQorICAgICAgICBcZWxzZQorICAgICAgICAgICUgT3RoZXJ3aXNlIGp1c3QgY29weSB0aGUgSW5mbyBub2RlIG5hbWUuCisgICAgICAgICAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMxfSUKKyAgICAgICAgXGZpJQorICAgICAgXGZpCisgICAgXGZpCisgIFxmaQorICAlCisgICUgTWFrZSBsaW5rIGluIHBkZiBvdXRwdXQuCisgIFxpZnBkZgorICAgIFxsZWF2ZXZtb2RlCisgICAgXGdldGZpbGVuYW1leyM0fSUKKyAgICB7XHR1cm5vZmZhY3RpdmUKKyAgICAgJSBTZWUgY29tbWVudHMgYXQgXGFjdGl2ZWJhY2tzbGFzaGRvdWJsZS4KKyAgICAge1xhY3RpdmViYWNrc2xhc2hkb3VibGUgXHhkZWZccGRmeHJlZmRlc3R7IzF9JQorICAgICAgXGJhY2tzbGFzaHBhcmVuc1xwZGZ4cmVmZGVzdH0lCisgICAgICUKKyAgICAgXGlmbnVtXGZpbGVuYW1lbGVuZ3RoPjAKKyAgICAgICBcc3RhcnRsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSUKKyAgICAgICAgIGdvdG8gZmlsZXtcdGhlXGZpbGVuYW1lLnBkZn0gbmFtZXtccGRmeHJlZmRlc3R9JQorICAgICBcZWxzZQorICAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19JQorICAgICAgICAgZ290byBuYW1le1xwZGZta3BnbntccGRmeHJlZmRlc3R9fSUKKyAgICAgXGZpCisgICAgfSUKKyAgICBcbGlua2NvbG9yCisgIFxmaQorICAlCisgICUgRmxvYXQgcmVmZXJlbmNlcyBhcmUgcHJpbnRlZCBjb21wbGV0ZWx5IGRpZmZlcmVudGx5OiAiRmlndXJlIDEuMiIKKyAgJSBpbnN0ZWFkIG9mICJbc29tZW5vZGVdLCBwLjMiLiAgV2UgZGlzdGluZ3Vpc2ggdGhlbSBieSB0aGUKKyAgJSBMQUJFTC10aXRsZSBiZWluZyBzZXQgdG8gYSBtYWdpYyBzdHJpbmcuCisgIHslCisgICAgJSBIYXZlIHRvIG90aGVyaWZ5IGV2ZXJ5dGhpbmcgc3BlY2lhbCB0byBhbGxvdyB0aGUgXGNzbmFtZSB0bworICAgICUgaW5jbHVkZSBhbiBfIGluIHRoZSB4cmVmIG5hbWUsIGV0Yy4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBcZXhwYW5kYWZ0ZXJcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxleHBhbmRhZnRlclxYdGhpc3JlZnRpdGxlCisgICAgICBcY3NuYW1lIFhSIzEtdGl0bGVcZW5kY3NuYW1lCisgIH0lCisgIFxpZmZsb2F0XFh0aGlzcmVmdGl0bGUKKyAgICAlIElmIHRoZSB1c2VyIHNwZWNpZmllZCB0aGUgcHJpbnQgbmFtZSAodGhpcmQgYXJnKSB0byB0aGUgcmVmLAorICAgICUgcHJpbnQgaXQgaW5zdGVhZCBvZiBvdXIgdXN1YWwgIkZpZ3VyZSAxLjIiLgorICAgIFxpZmRpbVx3ZDAgPSAwcHQKKyAgICAgIFxyZWZ4eyMxLXNudH17fSUKKyAgICBcZWxzZQorICAgICAgXHByaW50ZWRyZWZuYW1lCisgICAgXGZpCisgICAgJQorICAgICUgaWYgdGhlIHVzZXIgYWxzbyBnYXZlIHRoZSBwcmludGVkIG1hbnVhbCBuYW1lIChmaWZ0aCBhcmcpLCBhcHBlbmQKKyAgICAlICJpbiBNQU5VQUxOQU1FIi4KKyAgICBcaWZkaW0gXHdkMSA+IDBwdAorICAgICAgXHNwYWNlIFxwdXR3b3JkaW57fSBcY2l0ZXtccHJpbnRlZG1hbnVhbH0lCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBub2RlL2FuY2hvciAobm9uLWZsb2F0KSByZWZlcmVuY2VzLgorICAgICUKKyAgICAlIElmIHdlIHVzZSBcdW5oYm94MCBhbmQgXHVuaGJveDEgdG8gcHJpbnQgdGhlIG5vZGUgbmFtZXMsIFRlWCBkb2VzIG5vdAorICAgICUgaW5zZXJ0IGVtcHR5IGRpc2NyZXRpb25hcmllcyBhZnRlciBoeXBoZW5zLCB3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwKKyAgICAlIG5vdCBmaW5kIGEgbGluZSBicmVhayBhdCBhIGh5cGhlbiBpbiBhIG5vZGUgbmFtZXMuICBTaW5jZSBzb21lIG1hbnVhbHMKKyAgICAlIGFyZSBiZXN0IHdyaXR0ZW4gd2l0aCBmYWlybHkgbG9uZyBub2RlIG5hbWVzLCBjb250YWluaW5nIGh5cGhlbnMsIHRoaXMKKyAgICAlIGlzIGEgbG9zcy4gIFRoZXJlZm9yZSwgd2UgZ2l2ZSB0aGUgdGV4dCBvZiB0aGUgbm9kZSBuYW1lIGFnYWluLCBzbyBpdAorICAgICUgaXMgYXMgaWYgVGVYIGlzIHNlZWluZyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAgXGlmZGltIFx3ZDEgPiAwcHQKKyAgICAgIFxwdXR3b3Jkc2VjdGlvbnt9IGBgXHByaW50ZWRyZWZuYW1lJycgXHB1dHdvcmRpbnt9IFxjaXRle1xwcmludGVkbWFudWFsfSUKKyAgICBcZWxzZQorICAgICAgJSBfIChmb3IgZXhhbXBsZSkgaGFzIHRvIGJlIHRoZSBjaGFyYWN0ZXIgXyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoZQorICAgICAgJSBjb250cm9sIHNlcXVlbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5vZGUsIGJ1dCBpdCBoYXMgdG8gZXhwYW5kCisgICAgICAlIGludG8gdGhlIHVzdWFsIFxsZWF2ZXZtb2RlLi4uXHZydWxlIHN0dWZmIGZvciBwdXJwb3NlcyBvZgorICAgICAgJSBwcmludGluZy4gU28gd2UgXHR1cm5vZmZhY3RpdmUgZm9yIHRoZSBccmVmeC1zbnQsIGJhY2sgb24gZm9yIHRoZQorICAgICAgJSBwcmludGluZywgYmFjayBvZmYgZm9yIHRoZSBccmVmeC1wZy4KKyAgICAgIHtcdHVybm9mZmFjdGl2ZQorICAgICAgICUgT25seSBvdXRwdXQgYSBmb2xsb3dpbmcgc3BhY2UgaWYgdGhlIC1zbnQgcmVmIGlzIG5vbmVtcHR5OyBmb3IKKyAgICAgICAlIEB1bm51bWJlcmVkIGFuZCBAYW5jaG9yLCBpdCB3b24ndCBiZS4KKyAgICAgICBcc2V0Ym94MiA9IFxoYm94e1xpZ25vcmVzcGFjZXMgXHJlZnh7IzEtc250fXt9fSUKKyAgICAgICBcaWZkaW0gXHdkMiA+IDBwdCBccmVmeHsjMS1zbnR9XHNwYWNlXGZpCisgICAgICB9JQorICAgICAgJSBvdXRwdXQgdGhlIGBbbXlub2RlXScgdmlhIGEgbWFjcm8gc28gaXQgY2FuIGJlIG92ZXJyaWRkZW4uCisgICAgICBceHJlZnByaW50bm9kZW5hbWVccHJpbnRlZHJlZm5hbWUKKyAgICAgICUKKyAgICAgICUgQnV0IHdlIGFsd2F5cyB3YW50IGEgY29tbWEgYW5kIGEgc3BhY2U6CisgICAgICAsXHNwYWNlCisgICAgICAlCisgICAgICAlIG91dHB1dCB0aGUgYHBhZ2UgMycuCisgICAgICBcdHVybm9mZmFjdGl2ZSBccHV0d29yZHBhZ2VcdGllXHJlZnh7IzEtcGd9e30lCisgICAgXGZpCisgIFxmaQorICBcZW5kbGluaworXGVuZGdyb3VwfQorCislIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyb20gXHhyZWZYIGZvciB0aGUgYFtub2RlbmFtZV0nIHBhcnQgb2YgeHJlZgorJSBvdXRwdXQuICBJdCdzIGEgc2VwYXJhdGUgbWFjcm8gb25seSBzbyBpdCBjYW4gYmUgY2hhbmdlZCBtb3JlIGVhc2lseSwKKyUgc2luY2Ugc3F1YXJlIGJyYWNrZXRzIGRvbid0IHdvcmsgd2VsbCBpbiBzb21lIGRvY3VtZW50cy4gIFBhcnRpY3VsYXJseQorJSBvbmUgdGhhdCBCb2IgaXMgd29ya2luZyBvbiA6KS4KKyUKK1xkZWZceHJlZnByaW50bm9kZW5hbWUjMXtbIzFdfQorCislIFRoaW5ncyByZWZlcnJlZCB0byBieSBcc2V0cmVmLgorJQorXGRlZlxZbm90aGluZ3t9CitcZGVmXFlvbWl0ZnJvbXRvY3t9CitcZGVmXFludW1iZXJlZHslCisgIFxpZm51bVxzZWNubz0wCisgICAgXHB1dHdvcmRDaGFwdGVyQHRpZSBcdGhlXGNoYXBubworICBcZWxzZSBcaWZudW1cc3Vic2Vjbm89MAorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgXHRoZVxjaGFwbm8uXHRoZVxzZWNubworICBcZWxzZSBcaWZudW1cc3Vic3Vic2Vjbm89MAorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgXHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vCisgIFxlbHNlCisgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBcdGhlXGNoYXBuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNubworICBcZmlcZmlcZmkKK30KK1xkZWZcWWFwcGVuZGl4eyUKKyAgXGlmbnVtXHNlY25vPTAKKyAgICAgXHB1dHdvcmRBcHBlbmRpeEB0aWUgQGNoYXJcdGhlXGFwcGVuZGl4bm97fSUKKyAgXGVsc2UgXGlmbnVtXHN1YnNlY25vPTAKKyAgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vCisgIFxlbHNlIFxpZm51bVxzdWJzdWJzZWNubz0wCisgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8KKyAgXGVsc2UKKyAgICBccHV0d29yZFNlY3Rpb25AdGllCisgICAgICBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNubworICBcZmlcZmlcZmkKK30KKworJSBEZWZpbmUgXHJlZnh7TkFNRX17U1VGRklYfSB0byByZWZlcmVuY2UgYSBjcm9zcy1yZWZlcmVuY2Ugc3RyaW5nIG5hbWVkIE5BTUUuCislIElmIGl0cyB2YWx1ZSBpcyBub25lbXB0eSwgU1VGRklYIGlzIG91dHB1dCBhZnRlcndhcmQuCislCitcZGVmXHJlZngjMSMyeyUKKyAgeyUKKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXG90aGVyYmFja3NsYXNoCisgICAgXGV4cGFuZGFmdGVyXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcZXhwYW5kYWZ0ZXJcdGhpc3JlZlgKKyAgICAgIFxjc25hbWUgWFIjMVxlbmRjc25hbWUKKyAgfSUKKyAgXGlmeFx0aGlzcmVmWFxyZWxheAorICAgICUgSWYgbm90IGRlZmluZWQsIHNheSBzb21ldGhpbmcgYXQgbGVhc3QuCisgICAgXGFuZ2xlbGVmdCB1blwtZGVcLWZpbmVkXGFuZ2xlcmlnaHQKKyAgICBcaWZsaW5rcworICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgIFxtZXNzYWdle1xsaW5lbnVtYmVyIFVuZGVmaW5lZCBjcm9zcyByZWZlcmVuY2UgYCMxJy59JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmd2FybmVkeHJlZnNcZWxzZQorICAgICAgICAgIFxnbG9iYWxcd2FybmVkeHJlZnN0cnVlCisgICAgICAgICAgXG1lc3NhZ2V7Q3Jvc3MgcmVmZXJlbmNlIHZhbHVlcyB1bmtub3duOyB5b3UgbXVzdCBydW4gVGVYIGFnYWluLn0lCisgICAgICAgIFxmaQorICAgICAgXGZpCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBJdCdzIGRlZmluZWQsIHNvIGp1c3QgdXNlIGl0LgorICAgIFx0aGlzcmVmWAorICBcZmkKKyAgIzIlIE91dHB1dCB0aGUgc3VmZml4IGluIGFueSBjYXNlLgorfQorCislIFRoaXMgaXMgdGhlIG1hY3JvIGludm9rZWQgYnkgZW50cmllcyBpbiB0aGUgYXV4IGZpbGUuICBVc3VhbGx5IGl0J3MKKyUganVzdCBhIFxkZWYgKHdlIHByZXBlbmQgWFIgdG8gdGhlIGNvbnRyb2wgc2VxdWVuY2UgbmFtZSB0byBhdm9pZAorJSBjb2xsaXNpb25zKS4gIEJ1dCBpZiB0aGlzIGlzIGEgZmxvYXQgdHlwZSwgd2UgaGF2ZSBtb3JlIHdvcmsgdG8gZG8uCislCitcZGVmXHhyZGVmIzEjMnslCisgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBYUiMxXGVuZGNzbmFtZXsjMn0lIHJlbWVtYmVyIHRoaXMgeHJlZiB2YWx1ZS4KKyAgJQorICAlIFdhcyB0aGF0IHhyZWYgY29udHJvbCBzZXF1ZW5jZSB0aGF0IHdlIGp1c3QgZGVmaW5lZCBmb3IgYSBmbG9hdD8KKyAgXGV4cGFuZGFmdGVyXGlmZmxvYXRcY3NuYW1lIFhSIzFcZW5kY3NuYW1lCisgICAgJSBpdCB3YXMgYSBmbG9hdCwgYW5kIHdlIGhhdmUgdGhlIChzYWZlKSBmbG9hdCB0eXBlIGluIFxpZmZsb2F0dHlwZS4KKyAgICBcZXhwYW5kYWZ0ZXJcbGV0XGV4cGFuZGFmdGVyXGZsb2F0bGlzdAorICAgICAgXGNzbmFtZSBmbG9hdGxpc3RcaWZmbG9hdHR5cGVcZW5kY3NuYW1lCisgICAgJQorICAgICUgSXMgdGhpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIHRoaXMgZmxvYXQgdHlwZT8KKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGZsb2F0bGlzdFxyZWxheAorICAgICAgXHRva3MwID0ge1xkb30lIHllcywgc28ganVzdCBcZG8KKyAgICBcZWxzZQorICAgICAgJSBoYWQgaXQgYmVmb3JlLCBzbyBwcmVzZXJ2ZSBwcmV2aW91cyBlbGVtZW50cyBpbiBsaXN0LgorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1xmbG9hdGxpc3RcZG99JQorICAgIFxmaQorICAgICUKKyAgICAlIFJlbWVtYmVyIHRoaXMgeHJlZiBpbiB0aGUgY29udHJvbCBzZXF1ZW5jZSBcZmxvYXRsaXN0RkxPQVRUWVBFLAorICAgICUgZm9yIGxhdGVyIHVzZSBpbiBcbGlzdG9mZmxvYXRzLgorICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBmbG9hdGxpc3RcaWZmbG9hdHR5cGVcZW5kY3NuYW1le1x0aGVcdG9rczB7IzF9fSUKKyAgXGZpCit9CisKKyUgUmVhZCB0aGUgbGFzdCBleGlzdGluZyBhdXggZmlsZSwgaWYgYW55LiAgTm8gZXJyb3IgaWYgbm9uZSBleGlzdHMuCislCitcZGVmXHRyeWF1eGZpbGV7JQorICBcb3BlbmluIDEgXGpvYm5hbWUuYXV4CisgIFxpZmVvZiAxIFxlbHNlCisgICAgXHJlYWRkYXRhZmlsZXthdXh9JQorICAgIFxnbG9iYWxcaGF2ZXhyZWZzdHJ1ZQorICBcZmkKKyAgXGNsb3NlaW4gMQorfQorCitcZGVmXHNldHVwZGF0YWZpbGV7JQorICBcY2F0Y29kZWBcXl5APVxvdGhlcgorICBcY2F0Y29kZWBcXl5BPVxvdGhlcgorICBcY2F0Y29kZWBcXl5CPVxvdGhlcgorICBcY2F0Y29kZWBcXl5DPVxvdGhlcgorICBcY2F0Y29kZWBcXl5EPVxvdGhlcgorICBcY2F0Y29kZWBcXl5FPVxvdGhlcgorICBcY2F0Y29kZWBcXl5GPVxvdGhlcgorICBcY2F0Y29kZWBcXl5HPVxvdGhlcgorICBcY2F0Y29kZWBcXl5IPVxvdGhlcgorICBcY2F0Y29kZWBcXl5LPVxvdGhlcgorICBcY2F0Y29kZWBcXl5MPVxvdGhlcgorICBcY2F0Y29kZWBcXl5OPVxvdGhlcgorICBcY2F0Y29kZWBcXl5QPVxvdGhlcgorICBcY2F0Y29kZWBcXl5RPVxvdGhlcgorICBcY2F0Y29kZWBcXl5SPVxvdGhlcgorICBcY2F0Y29kZWBcXl5TPVxvdGhlcgorICBcY2F0Y29kZWBcXl5UPVxvdGhlcgorICBcY2F0Y29kZWBcXl5VPVxvdGhlcgorICBcY2F0Y29kZWBcXl5WPVxvdGhlcgorICBcY2F0Y29kZWBcXl5XPVxvdGhlcgorICBcY2F0Y29kZWBcXl5YPVxvdGhlcgorICBcY2F0Y29kZWBcXl5aPVxvdGhlcgorICBcY2F0Y29kZWBcXl5bPVxvdGhlcgorICBcY2F0Y29kZWBcXl5cPVxvdGhlcgorICBcY2F0Y29kZWBcXl5dPVxvdGhlcgorICBcY2F0Y29kZWBcXl5ePVxvdGhlcgorICBcY2F0Y29kZWBcXl5fPVxvdGhlcgorICAlIEl0IHdhcyBzdWdnZXN0ZWQgdG8gc2V0IHRoZSBjYXRjb2RlIG9mIF4gdG8gNywgd2hpY2ggd291bGQgYWxsb3cgXl5lNCBldGMuCisgICUgaW4geHJlZiB0YWdzLCBpLmUuLCBub2RlIG5hbWVzLiAgQnV0IHNpbmNlIF5eZTQgbm90YXRpb24gaXNuJ3QKKyAgJSBzdXBwb3J0ZWQgaW4gdGhlIG1haW4gdGV4dCwgaXQgZG9lc24ndCBzZWVtIGRlc2lyYWJsZS4gIEZ1cnRoZXJtb3JlLAorICAlIHRoYXQgaXMgbm90IGVub3VnaDogZm9yIG5vZGUgbmFtZXMgdGhhdCBhY3R1YWxseSBjb250YWluIGEgXgorICAlIGNoYXJhY3Rlciwgd2Ugd291bGQgZW5kIHVwIHdyaXRpbmcgYSBsaW5lIGxpa2UgdGhpczogJ3hyZGVmIHsnaGF0CisgICUgYi10aXRsZX17J2hhdCBifSBhbmQgXHhyZGVmIGRvZXMgYSBcY3NuYW1lLi4uXGVuZGNzbmFtZSBvbiB0aGUgZmlyc3QKKyAgJSBhcmd1bWVudCwgYW5kIFxoYXQgaXMgbm90IGFuIGV4cGFuZGFibGUgY29udHJvbCBzZXF1ZW5jZS4gIEl0IGNvdWxkCisgICUgYWxsIGJlIHdvcmtlZCBvdXQsIGJ1dCB3aHk/ICBFaXRoZXIgd2Ugc3VwcG9ydCBeXiBvciB3ZSBkb24ndC4KKyAgJQorICAlIFRoZSBvdGhlciBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGlzIHdhcyB0byBkZWZpbmUgXGF1eGhhdDoKKyAgJSBcZGVmXGF1eGhhdHtcZGVmXnsnaGF0IH19JSBleHRyYSBzcGFjZSBzbyBvayBpZiBmb2xsb3dlZCBieSBsZXR0ZXIKKyAgJSBhbmQgdGhlbiB0byBjYWxsIFxhdXhoYXQgaW4gXHNldHEuCisgICUKKyAgXGNhdGNvZGVgXF49XG90aGVyCisgICUKKyAgJSBTcGVjaWFsIGNoYXJhY3RlcnMuICBTaG91bGQgYmUgdHVybmVkIG9mZiBhbnl3YXksIGJ1dC4uLgorICBcY2F0Y29kZWBcfj1cb3RoZXIKKyAgXGNhdGNvZGVgXFs9XG90aGVyCisgIFxjYXRjb2RlYFxdPVxvdGhlcgorICBcY2F0Y29kZWBcIj1cb3RoZXIKKyAgXGNhdGNvZGVgXF89XG90aGVyCisgIFxjYXRjb2RlYFx8PVxvdGhlcgorICBcY2F0Y29kZWBcPD1cb3RoZXIKKyAgXGNhdGNvZGVgXD49XG90aGVyCisgIFxjYXRjb2RlYFwkPVxvdGhlcgorICBcY2F0Y29kZWBcIz1cb3RoZXIKKyAgXGNhdGNvZGVgXCY9XG90aGVyCisgIFxjYXRjb2RlYFwlPVxvdGhlcgorICBcY2F0Y29kZWArPVxvdGhlciAlIGF2b2lkIFwrIGZvciBwYXJhbm9pYSBldmVuIHRob3VnaCB3ZSd2ZSB0dXJuZWQgaXQgb2ZmCisgICUKKyAgJSBUaGlzIGlzIHRvIHN1cHBvcnQgXCBpbiBub2RlIG5hbWVzIGFuZCB0aXRsZXMsIHNpbmNlIHRoZSBcCisgICUgY2hhcmFjdGVycyBlbmQgdXAgaW4gYSBcY3NuYW1lLiAgSXQncyBlYXNpZXIgdGhhbgorICAlIGxlYXZpbmcgaXQgYWN0aXZlIGFuZCBtYWtpbmcgaXRzIGFjdGl2ZSBkZWZpbml0aW9uIGFuIGFjdHVhbCBcCisgICUgY2hhcmFjdGVyLiAgV2hhdCBJIGRvbid0IHVuZGVyc3RhbmQgaXMgd2h5IGl0IHdvcmtzIGluIHRoZSAqdmFsdWUqCisgICUgb2YgdGhlIHhyZGVmLiAgU2VlbXMgbGlrZSBpdCBzaG91bGQgYmUgYSBjYXRjb2RlMTIgXCwgYW5kIHRoYXQKKyAgJSBzaG91bGQgbm90IHR5cGVzZXQgcHJvcGVybHkuICBCdXQgaXQgd29ya3MsIHNvIEknbSBtb3Zpbmcgb24gZm9yCisgICUgbm93LiAgLS1rYXJsLCAxNWphbjA0LgorICBcY2F0Y29kZWBcXD1cb3RoZXIKKyAgJQorICAlIE1ha2UgdGhlIGNoYXJhY3RlcnMgMTI4LTI1NSBiZSBwcmludGluZyBjaGFyYWN0ZXJzLgorICB7JQorICAgIFxjb3VudDE9MTI4CisgICAgXGRlZlxsb29weyUKKyAgICAgIFxjYXRjb2RlXGNvdW50MT1cb3RoZXIKKyAgICAgIFxhZHZhbmNlXGNvdW50MSBieSAxCisgICAgICBcaWZudW0gXGNvdW50MTwyNTYgXGxvb3AgXGZpCisgICAgfSUKKyAgfSUKKyAgJQorICAlIEAgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIgaW4gLmF1eCBmaWxlcywgYW5kIHdlIG5lZWQgYnJhY2VzLgorICBcY2F0Y29kZWBcez0xCisgIFxjYXRjb2RlYFx9PTIKKyAgXGNhdGNvZGVgXEA9MAorfQorCitcZGVmXHJlYWRkYXRhZmlsZSMxeyUKK1xiZWdpbmdyb3VwCisgIFxzZXR1cGRhdGFmaWxlCisgIFxpbnB1dFxqb2JuYW1lLiMxCitcZW5kZ3JvdXB9CisKK1xtZXNzYWdle2luc2VydGlvbnMsfQorJSBpbmNsdWRpbmcgZm9vdG5vdGVzLgorCitcbmV3Y291bnQgXGZvb3Rub3Rlbm8KKworJSBUaGUgdHJhaWxpbmcgc3BhY2UgaW4gdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uIGZvciBzdXBlcmVqZWN0IGlzCislIHZpdGFsIGZvciBwcm9wZXIgZmlsbGluZzsgcGFnZXMgY29tZSBvdXQgdW5hbGlnbmVkIHdoZW4geW91IGRvIGEKKyUgcGFnZWFsaWdubWFjcm8gY2FsbCBpZiB0aGF0IHNwYWNlIGJlZm9yZSB0aGUgY2xvc2luZyBicmFjZSBpcworJSByZW1vdmVkLiAoR2VuZXJhbGx5LCBudW1lcmljIGNvbnN0YW50cyBzaG91bGQgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IGEKKyUgc3BhY2UgdG8gcHJldmVudCBzdHJhbmdlIGV4cGFuc2lvbiBlcnJvcnMuKQorXGRlZlxzdXBlcmVqZWN0e1xwYXJccGVuYWx0eSAtMjAwMDBcZm9vdG5vdGVubyA9MCB9CisKKyUgQGZvb3Rub3Rlc3R5bGUgaXMgbWVhbmluZ2Z1bCBmb3IgaW5mbyBvdXRwdXQgb25seS4KK1xsZXRcZm9vdG5vdGVzdHlsZT1cY29tbWVudAorCit7XGNhdGNvZGUgYFxAPTExCislCislIEF1dG8tbnVtYmVyIGZvb3Rub3Rlcy4gIE90aGVyd2lzZSBsaWtlIHBsYWluLgorXGdkZWZcZm9vdG5vdGV7JQorICBcbGV0XGluZGVudD1ccHRleGluZGVudAorICBcbGV0XG5vaW5kZW50PVxwdGV4bm9pbmRlbnQKKyAgXGdsb2JhbFxhZHZhbmNlXGZvb3Rub3Rlbm8gYnkgXEBuZQorICBcZWRlZlx0aGlzZm9vdG5veyRee1x0aGVcZm9vdG5vdGVub30kfSUKKyAgJQorICAlIEluIGNhc2UgdGhlIGZvb3Rub3RlIGNvbWVzIGF0IHRoZSBlbmQgb2YgYSBzZW50ZW5jZSwgcHJlc2VydmUgdGhlCisgICUgZXh0cmEgc3BhY2luZyBhZnRlciB3ZSBkbyB0aGUgZm9vdG5vdGUgbnVtYmVyLgorICBcbGV0XEBzZlxlbXB0eQorICBcaWZobW9kZVxlZGVmXEBzZntcc3BhY2VmYWN0b3JcdGhlXHNwYWNlZmFjdG9yfVxwdGV4c2xhc2hcZmkKKyAgJQorICAlIFJlbW92ZSBpbmFkdmVydGVudCBibGFuayBzcGFjZSBiZWZvcmUgdHlwZXNldHRpbmcgdGhlIGZvb3Rub3RlIG51bWJlci4KKyAgXHVuc2tpcAorICBcdGhpc2Zvb3Rub1xAc2YKKyAgXGRvZm9vdG5vdGUKK30lCisKKyUgRG9uJ3QgYm90aGVyIHdpdGggdGhlIHRyaWNrZXJ5IGluIHBsYWluLnRleCB0byBub3QgcmVxdWlyZSB0aGUKKyUgZm9vdG5vdGUgdGV4dCBhcyBhIHBhcmFtZXRlci4gIE91ciBmb290bm90ZXMgZG9uJ3QgbmVlZCB0byBiZSBzbyBnZW5lcmFsLgorJQorJSBPaCB5ZXMsIHRoZXkgZG87IG90aGVyd2lzZSwgQGlmc2V0IChhbmQgYW55dGhpbmcgZWxzZSB0aGF0IHVzZXMKKyUgXHBhcnNlYXJnbGluZSkgZmFpbHMgaW5zaWRlIGZvb3Rub3RlcyBiZWNhdXNlIHRoZSB0b2tlbnMgYXJlIGZpeGVkIHdoZW4KKyUgdGhlIGZvb3Rub3RlIGlzIHJlYWQuICAtLWthcmwsIDE2bm92OTYuCislCitcZ2RlZlxkb2Zvb3Rub3RleyUKKyAgXGluc2VydFxmb290aW5zXGJncm91cAorICAlIFdlIHdhbnQgdG8gdHlwZXNldCB0aGlzIHRleHQgYXMgYSBub3JtYWwgcGFyYWdyYXBoLCBldmVuIGlmIHRoZQorICAlIGZvb3Rub3RlIHJlZmVyZW5jZSBvY2N1cnMgaW4gKGZvciBleGFtcGxlKSBhIGRpc3BsYXkgZW52aXJvbm1lbnQuCisgICUgU28gcmVzZXQgc29tZSBwYXJhbWV0ZXJzLgorICBcaHNpemU9XHBhZ2V3aWR0aAorICBcaW50ZXJsaW5lcGVuYWx0eVxpbnRlcmZvb3Rub3RlbGluZXBlbmFsdHkKKyAgXHNwbGl0dG9wc2tpcFxodFxzdHJ1dGJveCAlIHRvcCBiYXNlbGluZSBmb3IgYnJva2VuIGZvb3Rub3RlcworICBcc3BsaXRtYXhkZXB0aFxkcFxzdHJ1dGJveAorICBcZmxvYXRpbmdwZW5hbHR5XEBNTQorICBcbGVmdHNraXBcekBza2lwCisgIFxyaWdodHNraXBcekBza2lwCisgIFxzcGFjZXNraXBcekBza2lwCisgIFx4c3BhY2Vza2lwXHpAc2tpcAorICBccGFyaW5kZW50XGRlZmF1bHRwYXJpbmRlbnQKKyAgJQorICBcc21hbGxmb250cyBccm0KKyAgJQorICAlIEJlY2F1c2Ugd2UgdXNlIGhhbmdpbmcgaW5kZW50YXRpb24gaW4gZm9vdG5vdGVzLCBhIEBub2luZGVudCBhcHBlYXJzCisgICUgdG8gZXhkZW50IHRoaXMgdGV4dCwgc28gbWFrZSBpdCBiZSBhIG5vLW9wLiAgbWFrZWluZm8gZG9lcyBub3QgdXNlCisgICUgaGFuZ2luZyBpbmRlbnRhdGlvbiBzbyBAbm9pbmRlbnQgY2FuIHN0aWxsIGJlIG5lZWRlZCB3aXRoaW4gZm9vdG5vdGUKKyAgJSB0ZXh0IGFmdGVyIGFuIEBleGFtcGxlIG9yIHRoZSBsaWtlIChub3QgdGhhdCB0aGlzIGlzIGdvb2Qgc3R5bGUpLgorICBcbGV0XG5vaW5kZW50ID0gXHJlbGF4CisgICUKKyAgJSBIYW5nIHRoZSBmb290bm90ZSB0ZXh0IG9mZiB0aGUgbnVtYmVyLiAgVXNlIFxldmVyeXBhciBpbiBjYXNlIHRoZQorICAlIGZvb3Rub3RlIGV4dGVuZHMgZm9yIG1vcmUgdGhhbiBvbmUgcGFyYWdyYXBoLgorICBcZXZlcnlwYXIgPSB7XGhhbmd9JQorICBcdGV4dGluZGVudHtcdGhpc2Zvb3Rub30lCisgICUKKyAgJSBEb24ndCBjcmFzaCBpbnRvIHRoZSBsaW5lIGFib3ZlIHRoZSBmb290bm90ZSB0ZXh0LiAgU2luY2UgdGhpcworICAlIGV4cGFuZHMgaW50byBhIGJveCwgaXQgbXVzdCBjb21lIHdpdGhpbiB0aGUgcGFyYWdyYXBoLCBsZXN0IGl0CisgICUgcHJvdmlkZSBhIHBsYWNlIHdoZXJlIFRlWCBjYW4gc3BsaXQgdGhlIGZvb3Rub3RlLgorICBcZm9vdHN0cnV0CisgIFxmdXR1cmVsZXRcbmV4dFxmb0B0Cit9Cit9JWVuZCBcY2F0Y29kZSBgXEA9MTEKKworJSBJbiBjYXNlIGEgQGZvb3Rub3RlIGFwcGVhcnMgaW4gYSB2Ym94LCBzYXZlIHRoZSBmb290bm90ZSB0ZXh0IGFuZCBjcmVhdGUKKyUgdGhlIHJlYWwgXGluc2VydCBqdXN0IGFmdGVyIHRoZSB2Ym94IGZpbmlzaGVkLiAgT3RoZXJ3aXNlLCB0aGUgaW5zZXJ0aW9uCislIHdvdWxkIGJlIGxvc3QuCislIFNpbWlsYXJpbHksIGlmIGEgQGZvb3Rub3RlIGFwcGVhcnMgaW5zaWRlIGFuIGFsaWdubWVudCwgc2F2ZSB0aGUgZm9vdG5vdGUKKyUgdGV4dCB0byBhIGJveCBhbmQgbWFrZSB0aGUgXGluc2VydCB3aGVuIGEgcm93IG9mIHRoZSB0YWJsZSBpcyBmaW5pc2hlZC4KKyUgQW5kIHRoZSBzYW1lIGNhbiBiZSBkb25lIGZvciBvdGhlciBpbnNlcnQgY2xhc3Nlcy4gIC0ta2FzYWwsIDE2bm92MDMuCisKKyUgUmVwbGFjZSB0aGUgXGluc2VydCBwcmltaXRpdmUgYnkgYSBjaGVhdGluZyBtYWNyby4KKyUgRGVlcGVyIGluc2lkZSwganVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgc2F2ZWQgaW5zZXJ0aW9ucyBhcmUgbm90IHNwaWxsZWQKKyUgb3V0IHByZW1hdHVyZWx5LgorJQorXGRlZlxzdGFydHNhdmluZ2luc2VydHN7JQorICBcaWZ4IFxpbnNlcnRccHRleGluc2VydAorICAgIFxsZXRcaW5zZXJ0XHNhdmVpbnNlcnQKKyAgXGVsc2UKKyAgICBcbGV0XGNoZWNraW5zZXJ0c1xyZWxheAorICBcZmkKK30KKworJSBUaGlzIFxpbnNlcnQgcmVwbGFjZW1lbnQgd29ya3MgZm9yIGJvdGggXGluc2VydFxmb290aW5ze2Zvb30gYW5kCislIFxpbnNlcnRcZm9vdGluc1xiZ3JvdXAgZm9vXGVncm91cCwgYnV0IGl0IGRvZXNuJ3Qgd29yayBmb3IgXGluc2VydDI3e2Zvb30uCislCitcZGVmXHNhdmVpbnNlcnQjMXslCisgIFxlZGVmXG5leHR7XG5vZXhwYW5kXHNhdmV0b2JveCBcbWFrZVNBVkVuYW1lIzF9JQorICBcYWZ0ZXJhc3NpZ25tZW50XG5leHQKKyAgJSBzd2FsbG93IHRoZSBsZWZ0IGJyYWNlCisgIFxsZXRcdGVtcCA9Cit9CitcZGVmXG1ha2VTQVZFbmFtZSMxe1xtYWtlY3NuYW1le1NBVkVcZXhwYW5kYWZ0ZXJcZ29iYmxlXHN0cmluZyMxfX0KK1xkZWZcc2F2ZXRvYm94IzF7XGdsb2JhbFxzZXRib3gjMSA9IFx2Ym94XGJncm91cCBcdW52Ym94IzF9CisKK1xkZWZcY2hlY2tzYXZlaW5zIzF7XGlmdm9pZCMxXGVsc2UgXHBsYWNlc2F2ZWlucyMxXGZpfQorCitcZGVmXHBsYWNlc2F2ZWlucyMxeyUKKyAgXHB0ZXhpbnNlcnQgXGNzbmFtZVxleHBhbmRhZnRlclxnb2JibGVzYXZlXHN0cmluZyMxXGVuZGNzbmFtZQorICAgIHtcYm94IzF9JQorfQorCislIGVhdCBAU0FWRSAtLSBiZXdhcmUsIGFsbCBvZiB0aGVtIGhhdmUgY2F0Y29kZSBcb3RoZXI6Cit7CisgIFxkZWZcZG9zcGVjaWFsc3tcZG8gU1xkbyBBXGRvIFZcZG8gRX0gXHVuY2F0Y29kZXNwZWNpYWxzICAlICA7LSkKKyAgXGdkZWZcZ29iYmxlc2F2ZSBAU0FWRXt9Cit9CisKKyUgaW5pdGlhbGl6YXRpb246CitcZGVmXG5ld3NhdmVpbnMgIzF7JQorICBcZWRlZlxuZXh0e1xub2V4cGFuZFxuZXdzYXZlaW5zWCBcbWFrZVNBVkVuYW1lIzF9JQorICBcbmV4dAorfQorXGRlZlxuZXdzYXZlaW5zWCAjMXslCisgIFxjc25hbWUgbmV3Ym94XGVuZGNzbmFtZSAjMSUKKyAgXGV4cGFuZGFmdGVyXGRlZlxleHBhbmRhZnRlclxjaGVja2luc2VydHNcZXhwYW5kYWZ0ZXJ7XGNoZWNraW5zZXJ0cworICAgIFxjaGVja3NhdmVpbnMgIzF9JQorfQorCislIGluaXRpYWxpemU6CitcbGV0XGNoZWNraW5zZXJ0c1xlbXB0eQorXG5ld3NhdmVpbnNcZm9vdGlucworXG5ld3NhdmVpbnNcbWFyZ2luCisKKworJSBAaW1hZ2UuICBXZSB1c2UgdGhlIG1hY3JvcyBmcm9tIGVwc2YudGV4IHRvIHN1cHBvcnQgdGhpcy4KKyUgSWYgZXBzZi50ZXggaXMgbm90IGluc3RhbGxlZCBhbmQgQGltYWdlIGlzIHVzZWQsIHdlIGNvbXBsYWluLgorJQorJSBDaGVjayBmb3IgYW5kIHJlYWQgZXBzZi50ZXggdXAgZnJvbnQuICBJZiB3ZSByZWFkIGl0IG9ubHkgYXQgQGltYWdlCislIHRpbWUsIHdlIG1pZ2h0IGJlIGluc2lkZSBhIGdyb3VwLCBhbmQgdGhlbiBpdHMgZGVmaW5pdGlvbnMgd291bGQgZ2V0CislIHVuZG9uZSBhbmQgdGhlIG5leHQgaW1hZ2Ugd291bGQgZmFpbC4KK1xvcGVuaW4gMSA9IGVwc2YudGV4CitcaWZlb2YgMSBcZWxzZQorICAlIERvIG5vdCBib3RoZXIgc2hvd2luZyBiYW5uZXIgd2l0aCBlcHNmLnRleCB2Mi43ayAoYXZhaWxhYmxlIGluCisgICUgZG9jL2Vwc2YudGV4IGFuZCBvbiBjdGFuKS4KKyAgXGRlZlxlcHNmYW5ub3VuY2V7XHRva3MwID0gfSUKKyAgXGlucHV0IGVwc2YudGV4CitcZmkKK1xjbG9zZWluIDEKKyUKKyUgV2Ugd2lsbCBvbmx5IGNvbXBsYWluIG9uY2UgYWJvdXQgbGFjayBvZiBlcHNmLnRleC4KK1xuZXdpZlxpZndhcm5lZG5vZXBzZgorXG5ld2hlbHBcbm9lcHNmaGVscHtlcHNmLnRleCBtdXN0IGJlIGluc3RhbGxlZCBmb3IgaW1hZ2VzIHRvCisgIHdvcmsuICBJdCBpcyBhbHNvIGluY2x1ZGVkIGluIHRoZSBUZXhpbmZvIGRpc3RyaWJ1dGlvbiwgb3IgeW91IGNhbiBnZXQKKyAgaXQgZnJvbSBmdHA6Ly90dWcub3JnL3RleC9lcHNmLnRleC59CislCitcZGVmXGltYWdlIzF7JQorICBcaWZ4XGVwc2Zib3hcdW5kZWZpbmVkCisgICAgXGlmd2FybmVkbm9lcHNmIFxlbHNlCisgICAgICBcZXJyaGVscCA9IFxub2Vwc2ZoZWxwCisgICAgICBcZXJybWVzc2FnZXtlcHNmLnRleCBub3QgZm91bmQsIGltYWdlcyB3aWxsIGJlIGlnbm9yZWR9JQorICAgICAgXGdsb2JhbFx3YXJuZWRub2Vwc2Z0cnVlCisgICAgXGZpCisgIFxlbHNlCisgICAgXGltYWdleHh4ICMxLCwsLCxcZmluaXNoCisgIFxmaQorfQorJQorJSBBcmd1bWVudHMgdG8gQGltYWdlOgorJSAjMSBpcyAobWFuZGF0b3J5KSBpbWFnZSBmaWxlbmFtZTsgd2UgdGFjayBvbiAuZXBzIGV4dGVuc2lvbi4KKyUgIzIgaXMgKG9wdGlvbmFsKSB3aWR0aCwgIzMgaXMgKG9wdGlvbmFsKSBoZWlnaHQuCislICM0IGlzIChpZ25vcmVkIG9wdGlvbmFsKSBodG1sIGFsdCB0ZXh0LgorJSAjNSBpcyAoaWdub3JlZCBvcHRpb25hbCkgZXh0ZW5zaW9uLgorJSAjNiBpcyBqdXN0IHRoZSB1c3VhbCBleHRyYSBpZ25vcmVkIGFyZyBmb3IgcGFyc2luZyB0aGlzIHN0dWZmLgorXG5ld2lmXGlmaW1hZ2V2bW9kZQorXGRlZlxpbWFnZXh4eCMxLCMyLCMzLCM0LCM1LCM2XGZpbmlzaHtcYmVnaW5ncm91cAorICBcY2F0Y29kZWBcXl5NID0gNSAgICAgJSBpbiBjYXNlIHdlJ3JlIGluc2lkZSBhbiBleGFtcGxlCisgIFxub3JtYWx0dXJub2ZmYWN0aXZlICAlIGFsbG93IF8gZXQgYWwuIGluIG5hbWVzCisgICUgSWYgdGhlIGltYWdlIGlzIGJ5IGl0c2VsZiwgY2VudGVyIGl0LgorICBcaWZ2bW9kZQorICAgIFxpbWFnZXZtb2RldHJ1ZQorICAgIFxub2JyZWFrXGJpZ3NraXAKKyAgICAlIFVzdWFsbHkgd2UnbGwgaGF2ZSB0ZXh0IGFmdGVyIHRoZSBpbWFnZSB3aGljaCB3aWxsIGluc2VydAorICAgICUgXHBhcnNraXAgZ2x1ZSwgc28gaW5zZXJ0IGl0IGhlcmUgdG9vIHRvIGVxdWFsaXplIHRoZSBzcGFjZQorICAgICUgYWJvdmUgYW5kIGJlbG93LgorICAgIFxub2JyZWFrXHZza2lwXHBhcnNraXAKKyAgICBcbm9icmVhaworICAgIFxsaW5lXGJncm91cAorICBcZmkKKyAgJQorICAlIE91dHB1dCB0aGUgaW1hZ2UuCisgIFxpZnBkZgorICAgIFxkb3BkZmltYWdleyMxfXsjMn17IzN9JQorICBcZWxzZQorICAgICUgXGVwc2Zib3ggaXRzZWxmIHJlc2V0cyBcZXBzZj9zaXplIGF0IGVhY2ggZmlndXJlLgorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxlcHNmeHNpemU9IzJccmVsYXggXGZpCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMzfVxpZmRpbVx3ZDAgPiAwcHQgXGVwc2Z5c2l6ZT0jM1xyZWxheCBcZmkKKyAgICBcZXBzZmJveHsjMS5lcHN9JQorICBcZmkKKyAgJQorICBcaWZpbWFnZXZtb2RlIFxlZ3JvdXAgXGJpZ2JyZWFrIFxmaSAgJSBzcGFjZSBhZnRlciB0aGUgaW1hZ2UKK1xlbmRncm91cH0KKworCislIEBmbG9hdCBGTE9BVFRZUEUsTEFCRUwsTE9DIC4uLiBAZW5kIGZsb2F0IGZvciBkaXNwbGF5ZWQgZmlndXJlcywgdGFibGVzLAorJSBldGMuICBXZSBkb24ndCBhY3R1YWxseSBpbXBsZW1lbnQgZmxvYXRpbmcgeWV0LCB3ZSBhbHdheXMgaW5jbHVkZSB0aGUKKyUgZmxvYXQgImhlcmUiLiAgQnV0IGl0IHNlZW1lZCB0aGUgYmVzdCBuYW1lIGZvciB0aGUgZnV0dXJlLgorJQorXGVudnBhcnNlYXJnZGVmXGZsb2F0e1xlYXRjb21tYXNwYWNlXGVhdGNvbW1hc3BhY2VcZG9mbG9hdCMxLCAsICxcZmluaXNofQorCislIFRoZXJlIG1heSBiZSBhIHNwYWNlIGJlZm9yZSBzZWNvbmQgYW5kL29yIHRoaXJkIHBhcmFtZXRlcjsgZGVsZXRlIGl0LgorXGRlZlxlYXRjb21tYXNwYWNlIzEsIHsjMSx9CisKKyUgIzEgaXMgdGhlIG9wdGlvbmFsIEZMT0FUVFlQRSwgdGhlIHRleHQgbGFiZWwgZm9yIHRoaXMgZmxvYXQsIHR5cGljYWxseQorJSAiRmlndXJlIiwgIlRhYmxlIiwgIkV4YW1wbGUiLCBldGMuICBDYW4ndCBjb250YWluIGNvbW1hcy4gIElmIG9taXR0ZWQsCislIHRoaXMgZmxvYXQgd2lsbCBub3QgYmUgbnVtYmVyZWQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0by4KKyUKKyUgIzIgaXMgdGhlIG9wdGlvbmFsIHhyZWYgbGFiZWwuICBBbHNvIG11c3QgYmUgcHJlc2VudCBmb3IgdGhlIGZsb2F0IHRvCislIGJlIHJlZmVyYWJsZS4KKyUKKyUgIzMgaXMgdGhlIG9wdGlvbmFsIHBvc2l0aW9uaW5nIGFyZ3VtZW50OyBmb3Igbm93LCBpdCBpcyBpZ25vcmVkLiAgSXQKKyUgd2lsbCBzb21laG93IHNwZWNpZnkgdGhlIHBvc2l0aW9ucyBhbGxvd2VkIHRvIGZsb2F0IHRvIChoZXJlLCB0b3AsIGJvdHRvbSkuCislCislIFdlIGtlZXAgYSBzZXBhcmF0ZSBjb3VudGVyIGZvciBlYWNoIEZMT0FUVFlQRSwgd2hpY2ggd2UgcmVzZXQgYXQgZWFjaAorJSBjaGFwdGVyLWxldmVsIGNvbW1hbmQuCitcbGV0XHJlc2V0YWxsZmxvYXRub3M9XGVtcHR5CislCitcZGVmXGRvZmxvYXQjMSwjMiwjMywjNFxmaW5pc2h7JQorICBcbGV0XHRoaXNjYXB0aW9uPVxlbXB0eQorICBcbGV0XHRoaXNzaG9ydGNhcHRpb249XGVtcHR5CisgICUKKyAgJSBkb24ndCBsb3NlIGZvb3Rub3RlcyBpbnNpZGUgQGZsb2F0LgorICAlCisgICUgQkVXQVJFOiB3aGVuIHRoZSBmbG9hdHMgc3RhcnQgZmxvYXQsIHdlIGhhdmUgdG8gaXNzdWUgd2FybmluZyB3aGVuZXZlciBhbgorICAlIGluc2VydCBhcHBlYXJzIGluc2lkZSBhIGZsb2F0IHdoaWNoIGNvdWxkIHBvc3NpYmx5IGZsb2F0LiAtLWthc2FsLCAyNm1heTA0CisgICUKKyAgXHN0YXJ0c2F2aW5naW5zZXJ0cworICAlCisgICUgV2UgY2FuJ3QgYmUgdXNlZCBpbnNpZGUgYSBwYXJhZ3JhcGguCisgIFxwYXIKKyAgJQorICBcdnRvcFxiZ3JvdXAKKyAgICBcZGVmXGZsb2F0dHlwZXsjMX0lCisgICAgXGRlZlxmbG9hdGxhYmVseyMyfSUKKyAgICBcZGVmXGZsb2F0bG9jeyMzfSUgd2UgZG8gbm90aGluZyB3aXRoIHRoaXMgeWV0LgorICAgICUKKyAgICBcaWZ4XGZsb2F0dHlwZVxlbXB0eQorICAgICAgXGxldFxzYWZlZmxvYXR0eXBlPVxlbXB0eQorICAgIFxlbHNlCisgICAgICB7JQorICAgICAgICAlIHRoZSBmbG9hdHR5cGUgbWlnaHQgaGF2ZSBhY2NlbnRzIG9yIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAgICAgJSBidXQgd2UgbmVlZCB0byB1c2UgaXQgaW4gYSBjb250cm9sIHNlcXVlbmNlIG5hbWUuCisgICAgICAgIFxpbmRleG5vZm9udHMKKyAgICAgICAgXHR1cm5vZmZhY3RpdmUKKyAgICAgICAgXHhkZWZcc2FmZWZsb2F0dHlwZXtcZmxvYXR0eXBlfSUKKyAgICAgIH0lCisgICAgXGZpCisgICAgJQorICAgICUgSWYgbGFiZWwgaXMgZ2l2ZW4gYnV0IG5vIHR5cGUsIHdlIGhhbmRsZSB0aGF0IGFzIHRoZSBlbXB0eSB0eXBlLgorICAgIFxpZnhcZmxvYXRsYWJlbFxlbXB0eSBcZWxzZQorICAgICAgJSBXZSB3YW50IGVhY2ggRkxPQVRUWVBFIHRvIGJlIG51bWJlcmVkIHNlcGFyYXRlbHkgKEZpZ3VyZSAxLAorICAgICAgJSBUYWJsZSAxLCBGaWd1cmUgMiwgLi4uKS4gIChBbmQgaWYgbm8gbGFiZWwsIG5vIG51bWJlci4pCisgICAgICAlCisgICAgICBcZXhwYW5kYWZ0ZXJcZ2V0ZmxvYXRub1xjc25hbWVcc2FmZWZsb2F0dHlwZSBmbG9hdG5vXGVuZGNzbmFtZQorICAgICAgXGdsb2JhbFxhZHZhbmNlXGZsb2F0bm8gYnkgMQorICAgICAgJQorICAgICAgeyUKKyAgICAgICAgJSBUaGlzIG1hZ2ljIHZhbHVlIGZvciBcdGhpc3NlY3Rpb24gaXMgb3V0cHV0IGJ5IFxzZXRyZWYgYXMgdGhlCisgICAgICAgICUgWFJFRkxBQkVMLXRpdGxlIHZhbHVlLiAgXHhyZWZYIHVzZXMgaXQgdG8gZGlzdGluZ3Vpc2ggZmxvYXQKKyAgICAgICAgJSBsYWJlbHMgKHdoaWNoIGhhdmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZm9ybWF0KSBmcm9tCisgICAgICAgICUgbm9kZSBhbmQgYW5jaG9yIGxhYmVscy4gIEFuZCBceHJkZWYgdXNlcyBpdCB0byBjb25zdHJ1Y3QgdGhlCisgICAgICAgICUgbGlzdHMgb2YgZmxvYXRzLgorICAgICAgICAlCisgICAgICAgIFxlZGVmXHRoaXNzZWN0aW9ue1xmbG9hdG1hZ2ljPVxzYWZlZmxvYXR0eXBlfSUKKyAgICAgICAgXHNldHJlZntcZmxvYXRsYWJlbH17WWZsb2F0fSUKKyAgICAgIH0lCisgICAgXGZpCisgICAgJQorICAgICUgc3RhcnQgd2l0aCBccGFyc2tpcCBnbHVlLCBJIGd1ZXNzLgorICAgIFx2c2tpcFxwYXJza2lwCisgICAgJQorICAgICUgRG9uJ3Qgc3VwcHJlc3MgaW5kZW50YXRpb24gaWYgYSBmbG9hdCBoYXBwZW5zIHRvIHN0YXJ0IGEgc2VjdGlvbi4KKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgd2UgaGF2ZSB0aGVzZSBwb3NzaWJpbGl0aWVzOgorJSBAZmxvYXQgRm9vLGxibCAmIEBjYXB0aW9ue0NhcH06IEZvbyAxLjE6IENhcAorJSBAZmxvYXQgRm9vLGxibCAmIG5vIGNhcHRpb246ICAgIEZvbyAxLjEKKyUgQGZsb2F0IEZvbyAmIEBjYXB0aW9ue0NhcH06ICAgICBGb286IENhcAorJSBAZmxvYXQgRm9vICYgbm8gY2FwdGlvbjogICAgICAgIEZvbworJSBAZmxvYXQgLGxibCAmIENhcHRpb257Q2FwfTogICAgIDEuMTogQ2FwCislIEBmbG9hdCAsbGJsICYgbm8gY2FwdGlvbjogICAgICAgMS4xCislIEBmbG9hdCAmIEBjYXB0aW9ue0NhcH06ICAgICAgICAgQ2FwCislIEBmbG9hdCAmIG5vIGNhcHRpb246CislCitcZGVmXEVmbG9hdHslCisgICAgXGxldFxmbG9hdGlkZW50ID0gXGVtcHR5CisgICAgJQorICAgICUgSW4gYWxsIGNhc2VzLCBpZiB3ZSBoYXZlIGEgZmxvYXQgdHlwZSwgaXQgY29tZXMgZmlyc3QuCisgICAgXGlmeFxmbG9hdHR5cGVcZW1wdHkgXGVsc2UgXGRlZlxmbG9hdGlkZW50e1xmbG9hdHR5cGV9XGZpCisgICAgJQorICAgICUgSWYgd2UgaGF2ZSBhbiB4cmVmIGxhYmVsLCB0aGUgbnVtYmVyIGNvbWVzIG5leHQuCisgICAgXGlmeFxmbG9hdGxhYmVsXGVtcHR5IFxlbHNlCisgICAgICBcaWZ4XGZsb2F0dHlwZVxlbXB0eSBcZWxzZSAlIGlmIGFsc28gaGFkIGZsb2F0IHR5cGUsIG5lZWQgdGllIGZpcnN0LgorICAgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1x0aWV9JQorICAgICAgXGZpCisgICAgICAlIHRoZSBudW1iZXIuCisgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1xjaGFwbGV2ZWxwcmVmaXhcdGhlXGZsb2F0bm99JQorICAgIFxmaQorICAgICUKKyAgICAlIFN0YXJ0IHRoZSBwcmludGVkIGNhcHRpb24gd2l0aCB3aGF0IHdlJ3ZlIGNvbnN0cnVjdGVkIGluCisgICAgJSBcZmxvYXRpZGVudCwgYnV0IGtlZXAgaXQgc2VwYXJhdGU7IHdlIG5lZWQgXGZsb2F0aWRlbnQgYWdhaW4uCisgICAgXGxldFxjYXB0aW9ubGluZSA9IFxmbG9hdGlkZW50CisgICAgJQorICAgIFxpZnhcdGhpc2NhcHRpb25cZW1wdHkgXGVsc2UKKyAgICAgIFxpZnhcZmxvYXRpZGVudFxlbXB0eSBcZWxzZQorCVxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5lezogfSUgaGFkIGlkZW50LCBzbyBuZWVkIGEgY29sb24gYmV0d2VlbgorICAgICAgXGZpCisgICAgICAlCisgICAgICAlIGNhcHRpb24gdGV4dC4KKyAgICAgIFxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5le1xzY2FuZXhwXHRoaXNjYXB0aW9ufSUKKyAgICBcZmkKKyAgICAlCisgICAgJSBJZiB3ZSBoYXZlIGFueXRoaW5nIHRvIHByaW50LCBwcmludCBpdCwgd2l0aCBzcGFjZSBiZWZvcmUuCisgICAgJSBFdmVudHVhbGx5IHRoaXMgbmVlZHMgdG8gYmVjb21lIGFuIFxpbnNlcnQuCisgICAgXGlmeFxjYXB0aW9ubGluZVxlbXB0eSBcZWxzZQorICAgICAgXHZza2lwLjVccGFyc2tpcAorICAgICAgXGNhcHRpb25saW5lCisgICAgICAlCisgICAgICAlIFNwYWNlIGJlbG93IGNhcHRpb24uCisgICAgICBcdnNraXBccGFyc2tpcAorICAgIFxmaQorICAgICUKKyAgICAlIElmIGhhdmUgYW4geHJlZiBsYWJlbCwgd3JpdGUgdGhlIGxpc3Qgb2YgZmxvYXRzIGluZm8uICBEbyB0aGlzCisgICAgJSBhZnRlciB0aGUgY2FwdGlvbiwgdG8gYXZvaWQgY2hhbmNlIG9mIGl0IGJlaW5nIGEgYnJlYWtwb2ludC4KKyAgICBcaWZ4XGZsb2F0bGFiZWxcZW1wdHkgXGVsc2UKKyAgICAgICUgV3JpdGUgdGhlIHRleHQgdGhhdCBnb2VzIGluIHRoZSBsb2YgdG8gdGhlIGF1eCBmaWxlIGFzCisgICAgICAlIFxmbG9hdGxhYmVsLWxvZi4gIEJlc2lkZXMgXGZsb2F0aWRlbnQsIHdlIGluY2x1ZGUgdGhlIHNob3J0CisgICAgICAlIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIHRoZSBmdWxsIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIG5vdGhpbmcuCisgICAgICB7JQorICAgICAgICBcYXRkdW1taWVzCisgICAgICAgICUKKyAgICAgICAgJSBzaW5jZSB3ZSByZWFkIHRoZSBjYXB0aW9uIHRleHQgaW4gdGhlIG1hY3JvIHdvcmxkLCB3aGVyZSBeXk0KKyAgICAgICAgJSBpcyB0dXJuZWQgaW50byBhIG5vcm1hbCBjaGFyYWN0ZXIsIHdlIGhhdmUgdG8gc2NhbiBpdCBiYWNrLCBzbworICAgICAgICAlIHdlIGRvbid0IHdyaXRlIHRoZSBsaXRlcmFsIHRocmVlIGNoYXJhY3RlcnMgIl5eTSIgaW50byB0aGUgYXV4IGZpbGUuCisJXHNjYW5leHB7JQorCSAgXHhkZWZcbm9leHBhbmRcZ3RlbXB7JQorCSAgICBcaWZ4XHRoaXNzaG9ydGNhcHRpb25cZW1wdHkKKwkgICAgICBcdGhpc2NhcHRpb24KKwkgICAgXGVsc2UKKwkgICAgICBcdGhpc3Nob3J0Y2FwdGlvbgorCSAgICBcZmkKKwkgIH0lCisJfSUKKyAgICAgICAgXGltbWVkaWF0ZVx3cml0ZVxhdXhmaWxle0B4cmRlZntcZmxvYXRsYWJlbC1sb2Z9e1xmbG9hdGlkZW50CisJICBcaWZ4XGd0ZW1wXGVtcHR5IFxlbHNlIDogXGd0ZW1wIFxmaX19JQorICAgICAgfSUKKyAgICBcZmkKKyAgXGVncm91cCAgJSBlbmQgb2YgXHZ0b3AKKyAgJQorICAlIHBsYWNlIHRoZSBjYXB0dXJlZCBpbnNlcnRzCisgICUKKyAgJSBCRVdBUkU6IHdoZW4gdGhlIGZsb2F0cyBzdGFydCBmbG9hdGluZywgd2UgaGF2ZSB0byBpc3N1ZSB3YXJuaW5nCisgICUgd2hlbmV2ZXIgYW4gaW5zZXJ0IGFwcGVhcnMgaW5zaWRlIGEgZmxvYXQgd2hpY2ggY291bGQgcG9zc2libHkKKyAgJSBmbG9hdC4gLS1rYXNhbCwgMjZtYXkwNAorICAlCisgIFxjaGVja2luc2VydHMKK30KKworJSBBcHBlbmQgdGhlIHRva2VucyAjMiB0byB0aGUgZGVmaW5pdGlvbiBvZiBtYWNybyAjMSwgbm90IGV4cGFuZGluZyBlaXRoZXIuCislCitcZGVmXGFwcGVuZHRvbWFjcm8jMSMyeyUKKyAgXGV4cGFuZGFmdGVyXGRlZlxleHBhbmRhZnRlciMxXGV4cGFuZGFmdGVyeyMxIzJ9JQorfQorCislIEBjYXB0aW9uLCBAc2hvcnRjYXB0aW9uCislCitcZGVmXGNhcHRpb257XGRvY2FwdGlvblx0aGlzY2FwdGlvbn0KK1xkZWZcc2hvcnRjYXB0aW9ue1xkb2NhcHRpb25cdGhpc3Nob3J0Y2FwdGlvbn0KK1xkZWZcZG9jYXB0aW9ue1xjaGVja2VudlxmbG9hdCBcYmdyb3VwXHNjYW5hcmdjdHh0XGRlZmNhcHRpb259CitcZGVmXGRlZmNhcHRpb24jMSMye1xlZ3JvdXAgXGRlZiMxeyMyfX0KKworJSBUaGUgcGFyYW1ldGVyIGlzIHRoZSBjb250cm9sIHNlcXVlbmNlIGlkZW50aWZ5aW5nIHRoZSBjb3VudGVyIHdlIGFyZQorJSBnb2luZyB0byB1c2UuICBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQgYXNzaWduIGl0IHRvIFxmbG9hdG5vLgorXGRlZlxnZXRmbG9hdG5vIzF7JQorICBcaWZ4IzFccmVsYXgKKyAgICAgICUgSGF2ZW4ndCBzZWVuIHRoaXMgZmlndXJlIHR5cGUgYmVmb3JlLgorICAgICAgXGNzbmFtZSBuZXdjb3VudFxlbmRjc25hbWUgIzElCisgICAgICAlCisgICAgICAlIFJlbWVtYmVyIHRvIHJlc2V0IHRoaXMgZmxvYXRubyBhdCB0aGUgbmV4dCBjaGFwLgorICAgICAgXGV4cGFuZGFmdGVyXGdkZWZcZXhwYW5kYWZ0ZXJccmVzZXRhbGxmbG9hdG5vcworICAgICAgICBcZXhwYW5kYWZ0ZXJ7XHJlc2V0YWxsZmxvYXRub3MgIzE9MCB9JQorICBcZmkKKyAgXGxldFxmbG9hdG5vIzElCit9CisKKyUgXHNldHJlZiBjYWxscyB0aGlzIHRvIGdldCB0aGUgWFJFRkxBQkVMLXNudCB2YWx1ZS4gIFdlIHdhbnQgYW4gQHhyZWYKKyUgdG8gdGhlIEZMT0FUTEFCRUwgdG8gZXhwYW5kIHRvICJGaWd1cmUgMy4xIi4gIFdlIGNhbGwgXHNldHJlZiB3aGVuIHdlCislIGZpcnN0IHJlYWQgdGhlIEBmbG9hdCBjb21tYW5kLgorJQorXGRlZlxZZmxvYXR7XGZsb2F0dHlwZUB0aWUgXGNoYXBsZXZlbHByZWZpeFx0aGVcZmxvYXRub30lCisKKyUgTWFnaWMgc3RyaW5nIHVzZWQgZm9yIHRoZSBYUkVGTEFCRUwtdGl0bGUgdmFsdWUsIHNvIFx4cmVmWCBjYW4KKyUgZGlzdGluZ3Vpc2ggZmxvYXRzIGZyb20gb3RoZXIgeHJlZiB0eXBlcy4KK1xkZWZcZmxvYXRtYWdpY3shIWZsb2F0ISF9CisKKyUgIzEgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2Ugd2UgYXJlIHBhc3NlZDsgd2UgZXhwYW5kIGludG8gYSBjb25kaXRpb25hbAorJSB3aGljaCBpcyB0cnVlIGlmICMxIHJlcHJlc2VudHMgYSBmbG9hdCByZWYuICBUaGF0IGlzLCB0aGUgbWFnaWMKKyUgXHRoaXNzZWN0aW9uIHZhbHVlIHdoaWNoIHdlIFxzZXRyZWYgYWJvdmUuCislCitcZGVmXGlmZmxvYXQjMXtcZXhwYW5kYWZ0ZXJcZG9pZmZsb2F0IzE9PVxmaW5pc2h9CislCislICMxIGlzIChtYXliZSkgdGhlIFxmbG9hdG1hZ2ljIHN0cmluZy4gIElmIHNvLCAjMiB3aWxsIGJlIHRoZQorJSAoc2FmZSkgZmxvYXQgdHlwZSBmb3IgdGhpcyBmbG9hdC4gIFdlIHNldCBcaWZmbG9hdHR5cGUgdG8gIzIuCislCitcZGVmXGRvaWZmbG9hdCMxPSMyPSMzXGZpbmlzaHslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxkZWZcaWZmbG9hdHR5cGV7IzJ9JQorICBcaWZ4XHRlbXBcZmxvYXRtYWdpYworfQorCislIEBsaXN0b2ZmbG9hdHMgRkxPQVRUWVBFIC0gcHJpbnQgYSBsaXN0IG9mIGZsb2F0cyBsaWtlIGEgdGFibGUgb2YgY29udGVudHMuCislCitccGFyc2VhcmdkZWZcbGlzdG9mZmxvYXRzeyUKKyAgXGRlZlxmbG9hdHR5cGV7IzF9JSBmbG9hdHR5cGUKKyAgeyUKKyAgICAlIHRoZSBmbG9hdHR5cGUgbWlnaHQgaGF2ZSBhY2NlbnRzIG9yIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAlIGJ1dCB3ZSBuZWVkIHRvIHVzZSBpdCBpbiBhIGNvbnRyb2wgc2VxdWVuY2UgbmFtZS4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBceGRlZlxzYWZlZmxvYXR0eXBle1xmbG9hdHR5cGV9JQorICB9JQorICAlCisgICUgXHhyZGVmIHNhdmVzIHRoZSBmbG9hdHMgYXMgYSBcZG8tbGlzdCBpbiBcZmxvYXRsaXN0U0FGRUZMT0FUVFlQRS4KKyAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgZmxvYXRsaXN0XHNhZmVmbG9hdHR5cGVcZW5kY3NuYW1lIFxyZWxheAorICAgIFxpZmhhdmV4cmVmcworICAgICAgJSBpZiB0aGUgdXNlciBzYWlkIEBsaXN0b2ZmbG9hdHMgZm9vIGJ1dCBuZXZlciBAZmxvYXQgZm9vLgorICAgICAgXG1lc3NhZ2V7XGxpbmVudW1iZXIgTm8gYFxzYWZlZmxvYXR0eXBlJyBmbG9hdHMgdG8gbGlzdC59JQorICAgIFxmaQorICBcZWxzZQorICAgIFxiZWdpbmdyb3VwCisgICAgICBcbGVmdHNraXA9XHRvY2luZGVudCAgJSBpbmRlbnQgdGhlc2UgZW50cmllcyBsaWtlIGEgdG9jCisgICAgICBcbGV0XGRvPVxsaXN0b2ZmbG9hdHNkbworICAgICAgXGNzbmFtZSBmbG9hdGxpc3Rcc2FmZWZsb2F0dHlwZVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCit9CisKKyUgVGhpcyBpcyBjYWxsZWQgb24gZWFjaCBlbnRyeSBpbiBhIGxpc3Qgb2YgZmxvYXRzLiAgV2UncmUgcGFzc2VkIHRoZQorJSB4cmVmIGxhYmVsLCBpbiB0aGUgZm9ybSBMQUJFTC10aXRsZSwgd2hpY2ggaXMgaG93IHdlIHNhdmUgaXQgaW4gdGhlCislIGF1eCBmaWxlLiAgV2Ugc3RyaXAgb2ZmIHRoZSAtdGl0bGUgYW5kIGxvb2sgdXAgXFhSTEFCRUwtbG9mLCB3aGljaAorJSBoYXMgdGhlIHRleHQgd2UncmUgc3VwcG9zZWQgdG8gdHlwZXNldCBoZXJlLgorJQorJSBGaWd1cmVzIHdpdGhvdXQgeHJlZiBsYWJlbHMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGxpc3QgKHNpbmNlCislIHRoZXkgd29uJ3QgYXBwZWFyIGluIHRoZSBhdXggZmlsZSkuCislCitcZGVmXGxpc3RvZmZsb2F0c2RvIzF7XGxpc3RvZmZsb2F0c2RvZW50cnkjMVxmaW5pc2h9CitcZGVmXGxpc3RvZmZsb2F0c2RvZW50cnkjMS10aXRsZVxmaW5pc2h7eyUKKyAgJSBDYW4ndCBmdWxseSBleHBhbmQgWFIjMS1sb2YgYmVjYXVzZSBpdCBjYW4gY29udGFpbiBhbnl0aGluZy4gIEp1c3QKKyAgJSBwYXNzIHRoZSBjb250cm9sIHNlcXVlbmNlLiAgT24gdGhlIG90aGVyIGhhbmQsIFhSIzEtcGcgaXMganVzdCB0aGUKKyAgJSBwYWdlIG51bWJlciwgYW5kIHdlIHdhbnQgdG8gZnVsbHkgZXhwYW5kIHRoYXQgc28gd2UgY2FuIGdldCBhIGxpbmsKKyAgJSBpbiBwZGYgb3V0cHV0LgorICBcdG9rc0EgPSBcZXhwYW5kYWZ0ZXJ7XGNzbmFtZSBYUiMxLWxvZlxlbmRjc25hbWV9JQorICAlCisgICUgdXNlIHRoZSBzYW1lIFxlbnRyeSBtYWNybyB3ZSB1c2UgdG8gZ2VuZXJhdGUgdGhlIFRPQyBhbmQgaW5kZXguCisgIFxlZGVmXHdyaXRlZW50cnl7XG5vZXhwYW5kXGVudHJ5e1x0aGVcdG9rc0F9e1xjc25hbWUgWFIjMS1wZ1xlbmRjc25hbWV9fSUKKyAgXHdyaXRlZW50cnkKK319CisKK1xtZXNzYWdle2xvY2FsaXphdGlvbix9CislIGFuZCBpMThuLgorCislIEBkb2N1bWVudGxhbmd1YWdlIGlzIHVzdWFsbHkgZ2l2ZW4gdmVyeSBlYXJseSwganVzdCBhZnRlcgorJSBAc2V0ZmlsZW5hbWUuICBJZiBkb25lIHRvbyBsYXRlLCBpdCBtYXkgbm90IG92ZXJyaWRlIGV2ZXJ5dGhpbmcKKyUgcHJvcGVybHkuICBTaW5nbGUgYXJndW1lbnQgaXMgdGhlIGxhbmd1YWdlIGFiYnJldmlhdGlvbi4KKyUgSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBzZXQgdXAgYSBoeXBoZW5hdGlvbiBmaWxlIGhlcmUuCislCitccGFyc2VhcmdkZWZcZG9jdW1lbnRsYW5ndWFnZXslCisgIFx0ZXggJSByZWFkIHR4aS0/Py50ZXggZmlsZSBpbiBwbGFpbiBUZVguCisgICAgJSBSZWFkIHRoZSBmaWxlIGlmIGl0IGV4aXN0cy4KKyAgICBcb3BlbmluIDEgdHhpLSMxLnRleAorICAgIFxpZmVvZiAxCisgICAgICBcZXJyaGVscCA9IFxub2xhbmdoZWxwCisgICAgICBcZXJybWVzc2FnZXtDYW5ub3QgcmVhZCBsYW5ndWFnZSBmaWxlIHR4aS0jMS50ZXh9JQorICAgIFxlbHNlCisgICAgICBcaW5wdXQgdHhpLSMxLnRleAorICAgIFxmaQorICAgIFxjbG9zZWluIDEKKyAgXGVuZGdyb3VwCit9CitcbmV3aGVscFxub2xhbmdoZWxwe1RoZSBnaXZlbiBsYW5ndWFnZSBkZWZpbml0aW9uIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yCitpcyBlbXB0eS4gIE1heWJlIHlvdSBuZWVkIHRvIGluc3RhbGwgaXQ/ICBJbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKK3Nob3VsZCB3b3JrIGlmIG5vd2hlcmUgZWxzZSBkb2VzLn0KKworCislIEBkb2N1bWVudGVuY29kaW5nIHNob3VsZCBjaGFuZ2Ugc29tZXRoaW5nIGluIFRlWCBldmVudHVhbGx5LCBtb3N0CislIGxpa2VseSwgYnV0IGZvciBub3cganVzdCByZWNvZ25pemUgaXQuCitcbGV0XGRvY3VtZW50ZW5jb2RpbmcgPSBcY29tbWVudAorCisKKyUgUGFnZSBzaXplIHBhcmFtZXRlcnMuCislCitcbmV3ZGltZW5cZGVmYXVsdHBhcmluZGVudCBcZGVmYXVsdHBhcmluZGVudCA9IDE1cHQKKworXGNoYXBoZWFkaW5nc2tpcCA9IDE1cHQgcGx1cyA0cHQgbWludXMgMnB0Citcc2VjaGVhZGluZ3NraXAgPSAxMnB0IHBsdXMgM3B0IG1pbnVzIDJwdAorXHN1YnNlY2hlYWRpbmdza2lwID0gOXB0IHBsdXMgMnB0IG1pbnVzIDJwdAorCislIFByZXZlbnQgdW5kZXJmdWxsIHZib3ggZXJyb3IgbWVzc2FnZXMuCitcdmJhZG5lc3MgPSAxMDAwMAorCislIERvbid0IGJlIHNvIGZpbmlja3kgYWJvdXQgdW5kZXJmdWxsIGhib3hlcywgZWl0aGVyLgorXGhiYWRuZXNzID0gMjAwMAorCislIEZvbGxvd2luZyBHZW9yZ2UgQnVzaCwganVzdCBnZXQgcmlkIG9mIHdpZG93cyBhbmQgb3JwaGFucy4KK1x3aWRvd3BlbmFsdHk9MTAwMDAKK1xjbHVicGVuYWx0eT0xMDAwMAorCislIFVzZSBUZVggMy4wJ3MgXGVtZXJnZW5jeXN0cmV0Y2ggdG8gaGVscCBsaW5lIGJyZWFraW5nLCBidXQgaWYgd2UncmUKKyUgdXNpbmcgYW4gb2xkIHZlcnNpb24gb2YgVGVYLCBkb24ndCBkbyBhbnl0aGluZy4gIFdlIHdhbnQgdGhlIGFtb3VudCBvZgorJSBzdHJldGNoIGFkZGVkIHRvIGRlcGVuZCBvbiB0aGUgbGluZSBsZW5ndGgsIGhlbmNlIHRoZSBkZXBlbmRlbmNlIG9uCislIFxoc2l6ZS4gIFdlIGNhbGwgdGhpcyB3aGVuZXZlciB0aGUgcGFwZXIgc2l6ZSBpcyBzZXQuCislCitcZGVmXHNldGVtZXJnZW5jeXN0cmV0Y2h7JQorICBcaWZ4XGVtZXJnZW5jeXN0cmV0Y2hcdGhpc2lzdW5kZWZpbmVkCisgICAgJSBBbGxvdyB1cyB0byBhc3NpZ24gdG8gXGVtZXJnZW5jeXN0cmV0Y2ggYW55d2F5LgorICAgIFxkZWZcZW1lcmdlbmN5c3RyZXRjaHtcZGltZW4wfSUKKyAgXGVsc2UKKyAgICBcZW1lcmdlbmN5c3RyZXRjaCA9IC4xNVxoc2l6ZQorICBcZmkKK30KKworJSBQYXJhbWV0ZXJzIGluIG9yZGVyOiAxKSB0ZXh0aGVpZ2h0OyAyKSB0ZXh0d2lkdGg7CislIDMpIHZvZmZzZXQ7IDQpIGhvZmZzZXQ7IDUpIGJpbmRpbmcgb2Zmc2V0OyA2KSB0b3Bza2lwOworJSA3KSBwaHlzaWNhbCBwYWdlIGhlaWdodDsgOCkgcGh5c2ljYWwgcGFnZSB3aWR0aC4KKyUKKyUgV2UgYWxzbyBjYWxsIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30sIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGRlZmluZQorJSBcdGV4dGxlYWRpbmcuICBUaGUgY2FsbGVyIHNob3VsZCBhbHNvIHNldCBccGFyc2tpcC4KKyUKK1xkZWZcaW50ZXJuYWxwYWdlc2l6ZXMjMSMyIzMjNCM1IzYjNyM4eyUKKyAgXHZvZmZzZXQgPSAjM1xyZWxheAorICBcdG9wc2tpcCA9ICM2XHJlbGF4CisgIFxzcGxpdHRvcHNraXAgPSBcdG9wc2tpcAorICAlCisgIFx2c2l6ZSA9ICMxXHJlbGF4CisgIFxhZHZhbmNlXHZzaXplIGJ5IFx0b3Bza2lwCisgIFxvdXRlcnZzaXplID0gXHZzaXplCisgIFxhZHZhbmNlXG91dGVydnNpemUgYnkgMlx0b3BhbmRib3R0b21tYXJnaW4KKyAgXHBhZ2VoZWlnaHQgPSBcdnNpemUKKyAgJQorICBcaHNpemUgPSAjMlxyZWxheAorICBcb3V0ZXJoc2l6ZSA9IFxoc2l6ZQorICBcYWR2YW5jZVxvdXRlcmhzaXplIGJ5IDAuNWluCisgIFxwYWdld2lkdGggPSBcaHNpemUKKyAgJQorICBcbm9ybWFsb2Zmc2V0ID0gIzRccmVsYXgKKyAgXGJpbmRpbmdvZmZzZXQgPSAjNVxyZWxheAorICAlCisgIFxpZnBkZgorICAgIFxwZGZwYWdlaGVpZ2h0ICM3XHJlbGF4CisgICAgXHBkZnBhZ2V3aWR0aCAjOFxyZWxheAorICBcZmkKKyAgJQorICBcc2V0bGVhZGluZ3tcdGV4dGxlYWRpbmd9CisgICUKKyAgXHBhcmluZGVudCA9IFxkZWZhdWx0cGFyaW5kZW50CisgIFxzZXRlbWVyZ2VuY3lzdHJldGNoCit9CisKKyUgQGxldHRlcnBhcGVyICh0aGUgZGVmYXVsdCkuCitcZGVmXGxldHRlcnBhcGVye3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFx0ZXh0bGVhZGluZyA9IDEzLjJwdAorICAlCisgICUgSWYgcGFnZSBpcyBub3RoaW5nIGJ1dCB0ZXh0LCBtYWtlIGl0IGNvbWUgb3V0IGV2ZW4uCisgIFxpbnRlcm5hbHBhZ2VzaXplc3s0NlxiYXNlbGluZXNraXB9ezZpbn0lCisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17LjI1aW59JQorICAgICAgICAgICAgICAgICAgICB7XGJpbmRpbmdvZmZzZXR9ezM2cHR9JQorICAgICAgICAgICAgICAgICAgICB7MTFpbn17OC41aW59JQorfX0KKworJSBVc2UgQHNtYWxsYm9vayB0byByZXNldCBwYXJhbWV0ZXJzIGZvciA3eDkuMjUgdHJpbSBzaXplLgorXGRlZlxzbWFsbGJvb2t7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDJwdCBwbHVzIDFwdAorICBcdGV4dGxlYWRpbmcgPSAxMnB0CisgICUKKyAgXGludGVybmFscGFnZXNpemVzezcuNWlufXs1aW59JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9ey4yNWlufSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXsxNnB0fSUKKyAgICAgICAgICAgICAgICAgICAgezkuMjVpbn17N2lufSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuM2luCisgIFx0b2xlcmFuY2UgPSA3MDAKKyAgXGhmdXp6ID0gMXB0CisgIFxjb250ZW50c3JpZ2h0bWFyZ2luID0gMHB0CisgIFxkZWZib2R5aW5kZW50ID0gLjVjbQorfX0KKworJSBVc2UgQHNtYWxsZXJib29rIHRvIHJlc2V0IHBhcmFtZXRlcnMgZm9yIDZ4OSB0cmltIHNpemUuCislIChKdXN0IHRlc3RpbmcsIHBhcmFtZXRlcnMgc3RpbGwgaW4gZmx1eC4pCitcZGVmXHNtYWxsZXJib29re3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAxLjVwdCBwbHVzIDFwdAorICBcdGV4dGxlYWRpbmcgPSAxMnB0CisgICUKKyAgXGludGVybmFscGFnZXNpemVzezcuNGlufXs0Ljhpbn0lCisgICAgICAgICAgICAgICAgICAgIHstLjJpbn17LS40aW59JQorICAgICAgICAgICAgICAgICAgICB7MHB0fXsxNHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezlpbn17NmlufSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuMjVpbgorICBcdG9sZXJhbmNlID0gNzAwCisgIFxoZnV6eiA9IDFwdAorICBcY29udGVudHNyaWdodG1hcmdpbiA9IDBwdAorICBcZGVmYm9keWluZGVudCA9IC40Y20KK319CisKKyUgVXNlIEBhZm91cnBhcGVyIHRvIHByaW50IG9uIEV1cm9wZWFuIEE0IHBhcGVyLgorXGRlZlxhZm91cnBhcGVye3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFx0ZXh0bGVhZGluZyA9IDEzLjJwdAorICAlCisgICUgRG91YmxlLXNpZGUgcHJpbnRpbmcgdmlhIHBvc3RzY3JpcHQgb24gTGFzZXJqZXQgNDA1MAorICAlIHByaW50cyBkb3VibGUtc2lkZWQgbmljZWx5IHdoZW4gXGJpbmRpbmdvZmZzZXQ9MTBtbSBhbmQgXGhvZmZzZXQ9LTZtbS4KKyAgJSBUbyBjaGFuZ2UgdGhlIHNldHRpbmdzIGZvciBhIGRpZmZlcmVudCBwcmludGVyIG9yIHNpdHVhdGlvbiwgYWRqdXN0CisgICUgXG5vcm1hbG9mZnNldCB1bnRpbCB0aGUgZnJvbnQtc2lkZSBhbmQgYmFjay1zaWRlIHRleHRzIGFsaWduLiAgVGhlbgorICAlIGRvIHRoZSBzYW1lIGZvciBcYmluZGluZ29mZnNldC4gIFlvdSBjYW4gc2V0IHRoZXNlIGZvciB0ZXN0aW5nIGluCisgICUgeW91ciB0ZXhpbmZvIHNvdXJjZSBmaWxlIGxpa2UgdGhpczoKKyAgJSBAdGV4CisgICUgXGdsb2JhbFxub3JtYWxvZmZzZXQgPSAtNm1tCisgICUgXGdsb2JhbFxiaW5kaW5nb2Zmc2V0ID0gMTBtbQorICAlIEBlbmQgdGV4CisgIFxpbnRlcm5hbHBhZ2VzaXplc3s1MVxiYXNlbGluZXNraXB9ezE2MG1tfQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9e1xob2Zmc2V0fSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs0NHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezI5N21tfXsyMTBtbX0lCisgICUKKyAgXHRvbGVyYW5jZSA9IDcwMAorICBcaGZ1enogPSAxcHQKKyAgXGNvbnRlbnRzcmlnaHRtYXJnaW4gPSAwcHQKKyAgXGRlZmJvZHlpbmRlbnQgPSA1bW0KK319CisKKyUgVXNlIEBhZml2ZXBhcGVyIHRvIHByaW50IG9uIEV1cm9wZWFuIEE1IHBhcGVyLgorJSBGcm9tIHJvbWlsZG9AdXJhbm8uaWNlYi51Zm9wLmJyLCAyIEp1bHkgMjAwMC4KKyUgSGUgYWxzbyByZWNvbW1lbmRzIG1ha2luZyBAZXhhbXBsZSBhbmQgQGxpc3AgYmUgc21hbGwuCitcZGVmXGFmaXZlcGFwZXJ7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDJwdCBwbHVzIDFwdCBtaW51cyAwLjFwdAorICBcdGV4dGxlYWRpbmcgPSAxMi41cHQKKyAgJQorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MTYwbW19ezEyMG1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXtcaG9mZnNldH0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17OHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezIxMG1tfXsxNDhtbX0lCisgICUKKyAgXGxpc3BuYXJyb3dpbmcgPSAwLjJpbgorICBcdG9sZXJhbmNlID0gODAwCisgIFxoZnV6eiA9IDEuMnB0CisgIFxjb250ZW50c3JpZ2h0bWFyZ2luID0gMHB0CisgIFxkZWZib2R5aW5kZW50ID0gMm1tCisgIFx0YWJsZWluZGVudCA9IDEybW0KK319CisKKyUgQSBzcGVjaWZpYyB0ZXh0IGxheW91dCwgMjR4MTVjbSBvdmVyYWxsLCBpbnRlbmRlZCBmb3IgQTQgcGFwZXIuCitcZGVmXGFmb3VybGF0ZXh7e1xnbG9iYWxkZWZzID0gMQorICBcYWZvdXJwYXBlcgorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MjM3bW19ezE1MG1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXs0LjZtbX0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17N21tfSUKKyAgICAgICAgICAgICAgICAgICAgezI5N21tfXsyMTBtbX0lCisgICUKKyAgJSBNdXN0IGV4cGxpY2l0bHkgcmVzZXQgdG8gMCBiZWNhdXNlIHdlIGNhbGwgXGFmb3VycGFwZXIuCisgIFxnbG9iYWxkZWZzID0gMAorfX0KKworJSBVc2UgQGFmb3Vyd2lkZSB0byBwcmludCBvbiBBNCBwYXBlciBpbiBsYW5kc2NhcGUgZm9ybWF0LgorXGRlZlxhZm91cndpZGV7e1xnbG9iYWxkZWZzID0gMQorICBcYWZvdXJwYXBlcgorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MjQxbW19ezE2NW1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXstMi45NW1tfSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs3bW19JQorICAgICAgICAgICAgICAgICAgICB7Mjk3bW19ezIxMG1tfSUKKyAgXGdsb2JhbGRlZnMgPSAwCit9fQorCislIEBwYWdlc2l6ZXMgVEVYVEhFSUdIVFssVEVYVFdJRFRIXQorJSBQZXJoYXBzIHdlIHNob3VsZCBhbGxvdyBzZXR0aW5nIHRoZSBtYXJnaW5zLCBcdG9wc2tpcCwgXHBhcnNraXAsCislIGFuZC9vciBsZWFkaW5nLCBhbHNvLiBPciBwZXJoYXBzIHdlIHNob3VsZCBjb21wdXRlIHRoZW0gc29tZWhvdy4KKyUKK1xwYXJzZWFyZ2RlZlxwYWdlc2l6ZXN7XHBhZ2VzaXplc3l5eSAjMSwsXGZpbmlzaH0KK1xkZWZccGFnZXNpemVzeXl5IzEsIzIsIzNcZmluaXNoe3slCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxoc2l6ZT0jMlxyZWxheCBcZmkKKyAgXGdsb2JhbGRlZnMgPSAxCisgICUKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30lCisgICUKKyAgXGRpbWVuMCA9ICMxCisgIFxhZHZhbmNlXGRpbWVuMCBieSBcdm9mZnNldAorICAlCisgIFxkaW1lbjIgPSBcaHNpemUKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IFxub3JtYWxvZmZzZXQKKyAgJQorICBcaW50ZXJuYWxwYWdlc2l6ZXN7IzF9e1xoc2l6ZX0lCisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17XG5vcm1hbG9mZnNldH0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17NDRwdH0lCisgICAgICAgICAgICAgICAgICAgIHtcZGltZW4wfXtcZGltZW4yfSUKK319CisKKyUgU2V0IGRlZmF1bHQgdG8gbGV0dGVyLgorJQorXGxldHRlcnBhcGVyCisKKworXG1lc3NhZ2V7YW5kIHR1cm5pbmcgb24gdGV4aW5mbyBpbnB1dCBmb3JtYXQufQorCislIERlZmluZSBtYWNyb3MgdG8gb3V0cHV0IHZhcmlvdXMgY2hhcmFjdGVycyB3aXRoIGNhdGNvZGUgZm9yIG5vcm1hbCB0ZXh0LgorXGNhdGNvZGVgXCI9XG90aGVyCitcY2F0Y29kZWBcfj1cb3RoZXIKK1xjYXRjb2RlYFxePVxvdGhlcgorXGNhdGNvZGVgXF89XG90aGVyCitcY2F0Y29kZWBcfD1cb3RoZXIKK1xjYXRjb2RlYFw8PVxvdGhlcgorXGNhdGNvZGVgXD49XG90aGVyCitcY2F0Y29kZWBcKz1cb3RoZXIKK1xjYXRjb2RlYFwkPVxvdGhlcgorXGRlZlxub3JtYWxkb3VibGVxdW90ZXsifQorXGRlZlxub3JtYWx0aWxkZXt+fQorXGRlZlxub3JtYWxjYXJldHtefQorXGRlZlxub3JtYWx1bmRlcnNjb3Jle199CitcZGVmXG5vcm1hbHZlcnRpY2FsYmFye3x9CitcZGVmXG5vcm1hbGxlc3N7PH0KK1xkZWZcbm9ybWFsZ3JlYXRlcns+fQorXGRlZlxub3JtYWxwbHVzeyt9CitcZGVmXG5vcm1hbGRvbGxhcnskfSUkIGZvbnQtbG9jayBmaXgKKworJSBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gbWFrZSBhIGNoYXJhY3RlciBwcmludCBvbmUgd2F5IGluIFx0dAorJSAod2hlcmUgaXQgY2FuIHByb2JhYmx5IGJlIG91dHB1dCBhcy1pcyksIGFuZCBhbm90aGVyIHdheSBpbiBvdGhlciBmb250cywKKyUgd2hlcmUgc29tZXRoaW5nIGhhaXJpZXIgcHJvYmFibHkgbmVlZHMgdG8gYmUgZG9uZS4KKyUKKyUgIzEgaXMgd2hhdCB0byBwcmludCBpZiB3ZSBhcmUgaW5kZWVkIHVzaW5nIFx0dDsgIzIgaXMgd2hhdCB0byBwcmludAorJSBvdGhlcndpc2UuICBTaW5jZSBhbGwgdGhlIENvbXB1dGVyIE1vZGVybiB0eXBld3JpdGVyIGZvbnRzIGhhdmUgemVybworJSBpbnRlcndvcmQgc3RyZXRjaCAoYW5kIHNocmluayksIGFuZCBpdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdCBhbGwKKyUgdHlwZXdyaXRlciBmb250cyB0byBoYXZlIHRoaXMsIHdlIGNhbiBjaGVjayB0aGF0IGZvbnQgcGFyYW1ldGVyLgorJQorXGRlZlxpZnVzaW5ndHQjMSMye1xpZmRpbSBcZm9udGRpbWVuM1xmb250PTBwdCAjMVxlbHNlICMyXGZpfQorCislIFNhbWUgYXMgYWJvdmUsIGJ1dCBjaGVjayBmb3IgaXRhbGljIGZvbnQuICBBY3R1YWxseSB0aGlzIGFsc28gY2F0Y2hlcworJSBub24taXRhbGljIHNsYW50ZWQgZm9udHMgc2luY2UgaXQgaXMgaW1wb3NzaWJsZSB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20KKyUgaXRhbGljIGZvbnRzLiAgQnV0IHNpbmNlIHRoaXMgaXMgb25seSB1c2VkIGJ5ICQgYW5kIGl0IHVzZXMgXHNsIGFueXdheQorJSB0aGlzIGlzIG5vdCBhIHByb2JsZW0uCitcZGVmXGlmdXNpbmdpdCMxIzJ7XGlmZGltIFxmb250ZGltZW4xXGZvbnQ+MHB0ICMxXGVsc2UgIzJcZml9CisKKyUgVHVybiBvZmYgYWxsIHNwZWNpYWwgY2hhcmFjdGVycyBleGNlcHQgQAorJSAoYW5kIHRob3NlIHdoaWNoIHRoZSB1c2VyIGNhbiB1c2UgYXMgaWYgdGhleSB3ZXJlIG9yZGluYXJ5KS4KKyUgTW9zdCBvZiB0aGVzZSB3ZSBzaW1wbHkgcHJpbnQgZnJvbSB0aGUgXHR0IGZvbnQsIGJ1dCBmb3Igc29tZSwgd2UgY2FuCislIHVzZSBtYXRoIG9yIG90aGVyIHZhcmlhbnRzIHRoYXQgbG9vayBiZXR0ZXIgaW4gbm9ybWFsIHRleHQuCisKK1xjYXRjb2RlYFwiPVxhY3RpdmUKK1xkZWZcYWN0aXZlZG91YmxlcXVvdGV7e1x0dFxjaGFyMzR9fQorXGxldCI9XGFjdGl2ZWRvdWJsZXF1b3RlCitcY2F0Y29kZWBcfj1cYWN0aXZlCitcZGVmfnt7XHR0XGNoYXIxMjZ9fQorXGNoYXJkZWZcaGF0PWBcXgorXGNhdGNvZGVgXF49XGFjdGl2ZQorXGRlZl57e1x0dCBcaGF0fX0KKworXGNhdGNvZGVgXF89XGFjdGl2ZQorXGRlZl97XGlmdXNpbmd0dFxub3JtYWx1bmRlcnNjb3JlXF99CitcbGV0XHJlYWx1bmRlcj1fCislIFN1YnJvdXRpbmUgZm9yIHRoZSBwcmV2aW91cyBtYWNyby4KK1xkZWZcX3tcbGVhdmV2bW9kZSBca2Vybi4wN2VtIFx2Ym94e1xocnVsZSB3aWR0aC4zZW0gaGVpZ2h0LjFleH1ca2VybiAuMDdlbSB9CisKK1xjYXRjb2RlYFx8PVxhY3RpdmUKK1xkZWZ8e3tcdHRcY2hhcjEyNH19CitcY2hhcmRlZiBcbGVzcz1gXDwKK1xjYXRjb2RlYFw8PVxhY3RpdmUKK1xkZWY8e3tcdHQgXGxlc3N9fQorXGNoYXJkZWYgXGd0cj1gXD4KK1xjYXRjb2RlYFw+PVxhY3RpdmUKK1xkZWY+e3tcdHQgXGd0cn19CitcY2F0Y29kZWBcKz1cYWN0aXZlCitcZGVmK3t7XHR0IFxjaGFyIDQzfX0KK1xjYXRjb2RlYFwkPVxhY3RpdmUKK1xkZWYke1xpZnVzaW5naXR7e1xzbFwkfX1cbm9ybWFsZG9sbGFyfSUkIGZvbnQtbG9jayBmaXgKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIGEgZmlsZQorJSBuYW1lIGNhbm5vdCBiZSBhY3RpdmUgdW50aWwgd2UgaGF2ZSBwYXJzZWQgdGhlIGNvbW1hbmQgbGluZS4KKyUgU28gdHVybiB0aGVtIG9mZiBhZ2FpbiwgYW5kIGhhdmUgXGV2ZXJ5am9iIChvciBAc2V0ZmlsZW5hbWUpIHR1cm4gdGhlbSBvbi4KKyUgXG90aGVyaWZ5YWN0aXZlIGlzIGNhbGxlZCBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorXGRlZlxvdGhlcmlmeWFjdGl2ZXtcY2F0Y29kZWArPVxvdGhlciBcY2F0Y29kZWBcXz1cb3RoZXJ9CisKKyUgVXNlZCBzb21ldGltZXMgdG8gdHVybiBvZmYgKGVmZmVjdGl2ZWx5KSB0aGUgYWN0aXZlIGNoYXJhY3RlcnMgZXZlbiBhZnRlcgorJSBwYXJzaW5nIHRoZW0uCitcZGVmXHR1cm5vZmZhY3RpdmV7JQorICBcbm9ybWFsdHVybm9mZmFjdGl2ZQorICBcb3RoZXJiYWNrc2xhc2gKK30KKworXGNhdGNvZGVgXEA9MAorCislIFxiYWNrc2xhc2hjdXJmb250IG91dHB1dHMgb25lIGJhY2tzbGFzaCBjaGFyYWN0ZXIgaW4gY3VycmVudCBmb250LAorJSBhcyBpbiBcY2hhcmBcXC4KK1xnbG9iYWxcY2hhcmRlZlxiYWNrc2xhc2hjdXJmb250PWBcXAorXGdsb2JhbFxsZXRccmF3YmFja3NsYXNoeHg9XGJhY2tzbGFzaGN1cmZvbnQgICUgbGV0IGV4aXN0aW5nIC4/P3MgZmlsZXMgd29yaworCislIFxyZWFsYmFja3NsYXNoIGlzIGFuIGFjdHVhbCBjaGFyYWN0ZXIgYFwnIHdpdGggY2F0Y29kZSBvdGhlciwgYW5kCislIFxkb3VibGViYWNrc2xhc2ggaXMgdHdvIG9mIHRoZW0gKGZvciB0aGUgcGRmIG91dGxpbmVzKS4KK3tcY2F0Y29kZWBcXD1cb3RoZXIgQGdkZWZAcmVhbGJhY2tzbGFzaHtcfSBAZ2RlZkBkb3VibGViYWNrc2xhc2h7XFx9fQorCislIEluIHRleGluZm8sIGJhY2tzbGFzaCBpcyBhbiBhY3RpdmUgY2hhcmFjdGVyOyBpdCBwcmludHMgdGhlIGJhY2tzbGFzaAorJSBpbiBmaXhlZCB3aWR0aCBmb250LgorXGNhdGNvZGVgXFw9XGFjdGl2ZQorQGRlZkBub3JtYWxiYWNrc2xhc2h7e0B0dEBiYWNrc2xhc2hjdXJmb250fX0KKyUgT24gc3RhcnR1cCwgQGZpeGJhY2tzbGFzaCBhc3NpZ25zOgorJSAgQGxldCBcID0gQG5vcm1hbGJhY2tzbGFzaAorCislIFxyYXdiYWNrc2xhc2ggZGVmaW5lcyBhbiBhY3RpdmUgXCB0byBkbyBcYmFja3NsYXNoY3VyZm9udC4KKyUgXG90aGVyYmFja3NsYXNoIGRlZmluZXMgYW4gYWN0aXZlIFwgdG8gYmUgYSBsaXRlcmFsIGBcJyBjaGFyYWN0ZXIgd2l0aAorJSBjYXRjb2RlIG90aGVyLgorQGdkZWZAcmF3YmFja3NsYXNoe0BsZXRcPUBiYWNrc2xhc2hjdXJmb250fQorQGdkZWZAb3RoZXJiYWNrc2xhc2h7QGxldFw9QHJlYWxiYWNrc2xhc2h9CisKKyUgU2FtZSBhcyBAdHVybm9mZmFjdGl2ZSBleGNlcHQgb3V0cHV0cyBcIGFzIHtcdHRcY2hhcmBcXH0gaW5zdGVhZCBvZgorJSB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIgYFwnLgorJSAKK0BkZWZAbm9ybWFsdHVybm9mZmFjdGl2ZXslCisgIEBsZXRcPUBub3JtYWxiYWNrc2xhc2gKKyAgQGxldCI9QG5vcm1hbGRvdWJsZXF1b3RlCisgIEBsZXR+PUBub3JtYWx0aWxkZQorICBAbGV0Xj1Abm9ybWFsY2FyZXQKKyAgQGxldF89QG5vcm1hbHVuZGVyc2NvcmUKKyAgQGxldHw9QG5vcm1hbHZlcnRpY2FsYmFyCisgIEBsZXQ8PUBub3JtYWxsZXNzCisgIEBsZXQ+PUBub3JtYWxncmVhdGVyCisgIEBsZXQrPUBub3JtYWxwbHVzCisgIEBsZXQkPUBub3JtYWxkb2xsYXIgJSQgZm9udC1sb2NrIGZpeAorICBAdW5zZXBzcGFjZXMKK30KKworJSBNYWtlIF8gYW5kICsgXG90aGVyIGNoYXJhY3RlcnMsIHRlbXBvcmFyaWx5LgorJSBUaGlzIGlzIGNhbmNlbGVkIGJ5IEBmaXhiYWNrc2xhc2guCitAb3RoZXJpZnlhY3RpdmUKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCB3ZSBkb24ndCB3YW50IHRoZSBgXGlucHV0IHRleGluZm8nIHRvIHNob3cgdXAuCislIFRoYXQgaXMgd2hhdCBcZWF0aW5wdXQgaXMgZm9yOyBhZnRlciB0aGF0LCB0aGUgYFwnIHNob3VsZCByZXZlcnQgdG8gcHJpbnRpbmcKKyUgYSBiYWNrc2xhc2guCislCitAZ2RlZkBlYXRpbnB1dCBpbnB1dCB0ZXhpbmZve0BmaXhiYWNrc2xhc2h9CitAZ2xvYmFsQGxldFwgPSBAZWF0aW5wdXQKKworJSBPbiB0aGUgb3RoZXIgaGFuZCwgcGVyaGFwcyB0aGUgZmlsZSBkaWQgbm90IGhhdmUgYSBgXGlucHV0IHRleGluZm8nLiBUaGVuCislIHRoZSBmaXJzdCBgXCcgaW4gdGhlIGZpbGUgd291bGQgY2F1c2UgYW4gZXJyb3IuIFRoaXMgbWFjcm8gdHJpZXMgdG8gZml4CislIHRoYXQsIGFzc3VtaW5nIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IGBcJyBjb3VsZCBwbGF1c2libHkgb2NjdXIuCislIEFsc28gdHVybiBiYWNrIG9uIGFjdGl2ZSBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIHRoZSBpbnB1dAorJSBmaWxlIG5hbWUsIGluIGNhc2Ugbm90IHVzaW5nIGEgcHJlLWR1bXBlZCBmb3JtYXQuCislCitAZ2RlZkBmaXhiYWNrc2xhc2h7JQorICBAaWZ4XEBlYXRpbnB1dCBAbGV0XCA9IEBub3JtYWxiYWNrc2xhc2ggQGZpCisgIEBjYXRjb2RlYCs9QGFjdGl2ZQorICBAY2F0Y29kZWBAXz1AYWN0aXZlCit9CisKKyUgU2F5IEBmb28sIG5vdCBcZm9vLCBpbiBlcnJvciBtZXNzYWdlcy4KK0Blc2NhcGVjaGFyID0gYEBACisKKyUgVGhlc2UgbG9vayBvayBpbiBhbGwgZm9udHMsIHNvIGp1c3QgbWFrZSB0aGVtIG5vdCBzcGVjaWFsLgorQGNhdGNvZGVgQCYgPSBAb3RoZXIKK0BjYXRjb2RlYEAjID0gQG90aGVyCitAY2F0Y29kZWBAJSA9IEBvdGhlcgorCisKK0BjIExvY2FsIHZhcmlhYmxlczoKK0BjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKK0BjIHBhZ2UtZGVsaW1pdGVyOiAiXlxcXFxtZXNzYWdlIgorQGMgdGltZS1zdGFtcC1zdGFydDogImRlZlxcXFx0ZXhpbmZvdmVyc2lvbnsiCitAYyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKK0BjIHRpbWUtc3RhbXAtZW5kOiAifSIKK0BjIEVuZDoKKworQGMgdmltOnN3PTI6CisKK0BpZ25vcmUKKyAgIGFyY2gtdGFnOiBlMWIzNmUzMi1jOTZlLTQxMzUtYTQxYS0wYjJlZmEyZWExMTUKK0BlbmQgaWdub3JlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL0FuZHJvaWQubWsgYi9lMmZzcHJvZ3MvZTJmc2NrL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA0ZWFhMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svQW5kcm9pZC5tawpAQCAtMCwwICsxLDkyIEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgdGhlIGUyZnNjayBiaW5hcnkKKworZTJmc2NrX3NyY19maWxlcyA6PSAgXAorCWUyZnNjay5jIFwKKwlzdXBlci5jIFwKKwlwYXNzMS5jIFwKKwlwYXNzMWIuYyBcCisJcGFzczIuYyBcCisJcGFzczMuYyBcCisJcGFzczQuYyBcCisJcGFzczUuYyBcCisJbG9nZmlsZS5jIFwKKwlqb3VybmFsLmMgXAorCXJlY292ZXJ5LmMgXAorCXJldm9rZS5jIFwKKwliYWRibG9ja3MuYyBcCisJdXRpbC5jIFwKKwl1bml4LmMgXAorCWRpcmluZm8uYyBcCisJZHhfZGlyaW5mby5jIFwKKwllaGFuZGxlci5jIFwKKwlwcm9ibGVtLmMgXAorCW1lc3NhZ2UuYyBcCisJZWFfcmVmY291bnQuYyBcCisJcXVvdGEuYyBcCisJcmVoYXNoLmMgXAorCXJlZ2lvbi5jIFwKKwlzaWdjYXRjaGVyLmMgXAorCXJlYWRhaGVhZC5jIFwKKwlleHRlbnRzLmMKKworZTJmc2NrX3NoYXJlZF9saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJmcyBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml91dWlkIFwKKwlsaWJleHQyX3F1b3RhIFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfZTJwCisKK2UyZnNja19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2UyZnNja19zdGF0aWNfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyZnMgXAorCWxpYmV4dDJfYmxraWQgXAorCWxpYmV4dDJfdXVpZF9zdGF0aWMgXAorCWxpYmV4dDJfcXVvdGEgXAorCWxpYmV4dDJfY29tX2VyciBcCisJbGliZXh0Ml9lMnAKKworZTJmc2NrX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzIDo9IGxpYmMKKworZTJmc2NrX2NfaW5jbHVkZXMgOj0KKworZTJmc2NrX2NmbGFncyA6PSAtTzIgLWcgLVcgLVdhbGwgLWZuby1zdHJpY3QtYWxpYXNpbmcKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGUyZnNja19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoZTJmc2NrX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChlMmZzY2tfY2ZsYWdzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChlMmZzY2tfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoZTJmc2NrX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9NT0RVTEUgOj0gZTJmc2NrCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAoraW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChlMmZzY2tfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGUyZnNja19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoZTJmc2NrX2NmbGFncykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChlMmZzY2tfc3RhdGljX2xpYnJhcmllcykgJChlMmZzY2tfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMpCitMT0NBTF9GT1JDRV9TVEFUSUNfRVhFQ1VUQUJMRSA6PSB0cnVlCitMT0NBTF9NT0RVTEUgOj0gZTJmc2NrX3N0YXRpYworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChlMmZzY2tfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGUyZnNja19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoZTJmc2NrX2NmbGFncykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChhZGRzdWZmaXggLWhvc3QsICQoZTJmc2NrX3NoYXJlZF9saWJyYXJpZXMpKQorTE9DQUxfTU9EVUxFIDo9IGUyZnNja19ob3N0CitMT0NBTF9NT0RVTEVfU1RFTSA6PSBlMmZzY2sKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL0NIQU5HRVMgYi9lMmZzcHJvZ3MvZTJmc2NrL0NIQU5HRVMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmExMzViNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svQ0hBTkdFUwpAQCAtMCwwICsxLDUzIEBACitbdHl0c286MTk5NDAxMDEuMTIwMEVTVF0KKworQWRkIG5ldyBvcHRpb25zIC1sIGFuZCAtTCwgdG8gYXBwZW5kIHRvIGFuZCBtb2RpZnkgdGhlIGJhZC1ibG9ja3MgbGlzdC4KKworRml4IGJ1Z3MgaW4gYmFkLWJsb2NrIGNsb25pbmcuCisKK1t0eXRzbzoxOTkzMTIzMC4xODMyRVNUXQorCitDbGVhbiB1cCBlMmZzY2sgYW5kIGxpYnJhcnkgdG8gYmUgY2xlYW4gZXZlbiB3aGVuIGNvbXBpbGluZyB3aXRoIGZ1bGwKK3dhcm5pbmdzIGVuYWJsZWQuCisKK01ha2UgZTJmc2NrIGRlYWwgd2l0aCB6ZXJvLWxlbmd0aCBkaXJlY3RvcmllcyBjb3JyZWN0bHkuCisKK0RlbGV0ZWQgaW5vZGVzIGZyb20gb2xkIGV4dDJmcyBjb2RlIChpbm9kZXMgd2l0aCBkdGltZSBzZXQgYnV0Citub24temVybyBsaW5rIGNvdW50KSBhcmUgZGV0ZWN0ZWQsIGFuZCB0aGUgdXNlciBpcyBnaXZlbiB0aGUKK29wcG9ydHVuaXR5IHRvIGNsZWFyIHRoZW0uCisKK1RoZSBsYXN0IGJpdCBpbiB0aGUgbGFzdCBncm91cCBvZiB0aGUgYmxvY2sgYml0bWFwIGJhZGRpbmcgd2FzIG5vdAorYmVpbmcgY2hlY2tlZDsgbm93IGZpeGVkLgorCitUaGUgZnJlZV9ibG9ja3MgYW5kIGZyZWVfaW5vZGVzIGNvdW50IGluIHRoZSBsYXN0IGdyb3VwIHdlcmVuJ3QgYmVpbmcKK2NoZWNrZWQuICBOb3cgZml4ZWQuCisKK1t0eXRzbzoxOTkzMTEwMS4wMDA3RVNUXQorCitGaXhlZCBidWdzIHdpdGggcm9vdCByZWFsbG9jYXRpb247IHByZXZpb3VzbHkgdGhlIHBhcmVudCBwb2ludGVycyBpbgordGhlIGRpcmluZm8gc3RydWN0dXJlIHdvdWxkIGdldCBjb3JydXB0ZWQsIGNhdXNpbmcgbWFueSBkaWZmZXJlbnQgJy4uJworbGlua3MgdG8gYmUgd3JvbmcuICBBbHNvLCB0aGUgaW5vZGUgbGluayBjb3VudCBmb3IgdGhlIHJvb3QgZGlyZWN0b3J5Cit3YXNuJ3QgYWx3YXlzIGJlaW5nIHNldCBjb3JyZWN0bHkuICAoQWxsIG9mIHRoaXMgd291bGQgYmUgZml4ZWQgb24KK3RoZSBzZWNvbmQgZTJmc2NrLCBob3dldmVyKS4KKworRml4ZWQgdG8gcmVjb2duaXplIGZpbGVzeXN0ZW0gY29ycnVwdGlvbiBjYXVzZWQgYnkgbWtlMmZzIDAuMmIgKHdoZXJlCisvIGFuZCAvbG9zdCtmb3VuZCBoYWQgbm9uLXplcm8gZHRpbWUgZW50cmllcykuICBPZmZlcnMgdG8gZml4IC8ncworZHRpbWUgZW50cnkuCisKK2UyZnNjayB3aWxsIG5vdyBleHBhbmQgdGhlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSBpZiBpdCBydW5zIG91dCBvZiByb29tLgorCitGaXhlZCBkZXBlbmRlbmN5IG9uIEJMT0NLX1NJWkUgaW4gcGFzczIuICBlMmZzY2sgd2lsbCBub3cgaGFuZGxlIDRrCitmaWxlc3lzdGVtcyB3L28gcHJvYmxlbXMuCisKK2UyZnNjayB3aWxsIG5vdyBtb3ZlIGJhZCBibG9ja3MgZm91bmQgaW4gdGhlIGlub2RlIGJpdG1hcHMsIGJsb2NrCitiaXRtYXBzLCBhbmQgaW4gdGhlIGlub2RlIHRhYmxlcy4gIChDYW4ndCBoYW5kbGUgYmFkIGJsb2NrcyBmb3VuZCBpbgordGhlIHN1cGVyYmxvY2sgYW5kIHRoZSBncm91cCBkZXNjcmlwdG9ycy4pICAoRG9lc24ndCB1cGRhdGUgYWx0ZXJuYXRlCitzdXBlcmJsb2NrcywgZ3JvdXAgZGVzY3JpcHRvcnMuKQorCitlMmZzY2sgbm93IHN1cHBvcnRzIHRoZSAtYiBvcHRpb24sIHRvIGFsbG93IGEgdXNlciB0byBzcGVjaWZ5IGFuCithbHRlcm5hdGUgc3VwZXJibG9jay4KKworVGhlIC1CIG9wdGlvbiBub3cgc3BlY2lmaWVzIHRoZSBibG9ja3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0uICAoSWYgbm90CitzcGVjaWZpZWQsIGFuZCB0aGUgLWIgb3B0aW9uIGlzIHNwZWNpZmllZCwgZTJmc2NrIHdpbGwgYXR0ZW1wdCB0bworc2VhcmNoIHRocm91Z2ggdmFyaW91cyBibG9ja3NpemVzIHRvIGZpbmQgdGhlIGNvcnJlY3Qgb25lLikKKworQWRkZWQgbWFudWFsIHBhZ2UuCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL01ha2VmaWxlLmluIGIvZTJmc3Byb2dzL2UyZnNjay9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjYyNmY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDU0NCBAQAorIworIyBNYWtlZmlsZSBmb3IgZTJmc2NrCisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLgorbXlfZGlyID0gZTJmc2NrCitJTlNUQUxMID0gQElOU1RBTExACisKK0BNQ09ORklHQAorCitQUk9HUz0JCWUyZnNjaworTUFOUEFHRVM9CWUyZnNjay44CitGTUFOUEFHRVM9CWUyZnNjay5jb25mLjUKKworTElCUz0gJChMSUJTVVBQT1JUKSAkKExJQkVYVDJGUykgJChMSUJDT01fRVJSKSAkKExJQkJMS0lEKSAkKExJQlVVSUQpIFwKKwkkKExJQklOVEwpICQoTElCRTJQKSAkKExJQk1BR0lDKSAkKFNZU0xJQlMpCitERVBMSUJTPSAkKERFUExJQlNVUFBPUlQpICQoTElCRVhUMkZTKSAkKERFUExJQkNPTV9FUlIpICQoREVQTElCQkxLSUQpIFwKKwkgJChERVBMSUJVVUlEKSAkKERFUExJQkUyUCkKKworU1RBVElDX0xJQlM9ICQoU1RBVElDX0xJQlNVUFBPUlQpICQoU1RBVElDX0xJQkVYVDJGUykgJChTVEFUSUNfTElCQ09NX0VSUikgXAorCSAgICAgJChTVEFUSUNfTElCQkxLSUQpICQoU1RBVElDX0xJQlVVSUQpICQoTElCSU5UTCkgJChTVEFUSUNfTElCRTJQKSBcCisJICAgICAkKExJQk1BR0lDKSAkKFNZU0xJQlMpCitTVEFUSUNfREVQTElCUz0gJChERVBTVEFUSUNfTElCU1VQUE9SVCkgJChTVEFUSUNfTElCRVhUMkZTKSBcCisJCSQoREVQU1RBVElDX0xJQkNPTV9FUlIpICQoREVQU1RBVElDX0xJQkJMS0lEKSBcCisJCSQoREVQU1RBVElDX0xJQlVVSUQpICQoREVQU1RBVElDX0xJQkUyUCkKKworUFJPRklMRURfTElCUz0gJChQUk9GSUxFRF9MSUJTVVBQT1JUKSAkKFBST0ZJTEVEX0xJQkVYVDJGUykgXAorCSAgICAgICAkKFBST0ZJTEVEX0xJQkNPTV9FUlIpICQoUFJPRklMRURfTElCQkxLSUQpICQoUFJPRklMRURfTElCVVVJRCkgXAorCSAgICAgICAkKFBST0ZJTEVEX0xJQkUyUCkgJChMSUJJTlRMKSAkKExJQk1BR0lDKSAkKFNZU0xJQlMpCitQUk9GSUxFRF9ERVBMSUJTPSAkKERFUFBST0ZJTEVEX0xJQlNVUFBPUlQpICQoUFJPRklMRURfTElCRVhUMkZTKSBcCisJCSAgJChERVBQUk9GSUxFRF9MSUJDT01fRVJSKSAkKERFUFBST0ZJTEVEX0xJQkJMS0lEKSBcCisJCSAgJChERVBQUk9GSUxFRF9MSUJVVUlEKSAkKERFUFBST0ZJTEVEX0xJQkUyUCkKKworQ09NUElMRV9FVD0JX0VUX0RJUl9PVkVSUklERT0kKHNyY2RpcikvLi4vbGliL2V0L2V0IC4uL2xpYi9ldC9jb21waWxlX2V0CisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgLWMgJChBTExfQ0ZMQUdTKSAkPCAtbyAkQAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorQFBST0ZJTEVfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHUykgLWcgLXBnIC1vIHByb2ZpbGVkLyQqLm8gLWMgJDwKKworIworIyBGbGFncyBmb3IgZG9pbmcgbXRyYWNlIC0tLSB1bmNvbW1lbnQgdG8gcHJvZHVjZSBtdHJhY2luZyBlMmZzY2sKKyMgCU5vdGU6ICBUaGUgb3B0aW1pemF0aW9uIGZsYWdzIG11c3QgaW5jbHVkZSAtZworIworI01UUkFDRT0JLURNVFJBQ0UKKyNNVFJBQ0VfT0JKPSBtdHJhY2UubworI01UUkFDRV9TUkM9ICQoc3JjZGlyKS9tdHJhY2UuYworI09QVD0gLWcKKworIworIyBGbGFncyBmb3IgZG9pbmcgbWNoZWNrIC0tLSB1bmNvbW1lbnQgdG8gcHJvZHVjZSBtY2hlY2tpbmcgZTJmc2NrCisjIAlOb3RlOiAgVGhlIG9wdGltaXphdGlvbiBmbGFncyBtdXN0IGluY2x1ZGUgLWcKKyMKKyNNQ0hFQ0s9IC1ETUNIRUNLCisKK09CSlM9IHVuaXgubyBlMmZzY2subyBzdXBlci5vIHBhc3MxLm8gcGFzczFiLm8gcGFzczIubyBcCisJcGFzczMubyBwYXNzNC5vIHBhc3M1Lm8gam91cm5hbC5vIGJhZGJsb2Nrcy5vIHV0aWwubyBkaXJpbmZvLm8gXAorCWR4X2RpcmluZm8ubyBlaGFuZGxlci5vIHByb2JsZW0ubyBtZXNzYWdlLm8gcXVvdGEubyByZWNvdmVyeS5vIFwKKwlyZWdpb24ubyByZXZva2UubyBlYV9yZWZjb3VudC5vIHJlaGFzaC5vIFwKKwlsb2dmaWxlLm8gc2lnY2F0Y2hlci5vICQoTVRSQUNFX09CSikgcmVhZGFoZWFkLm8gXAorCWV4dGVudHMubworCitQUk9GSUxFRF9PQkpTPSBwcm9maWxlZC91bml4Lm8gcHJvZmlsZWQvZTJmc2NrLm8gXAorCXByb2ZpbGVkL3N1cGVyLm8gcHJvZmlsZWQvcGFzczEubyBwcm9maWxlZC9wYXNzMWIubyBcCisJcHJvZmlsZWQvcGFzczIubyBwcm9maWxlZC9wYXNzMy5vIHByb2ZpbGVkL3Bhc3M0Lm8gcHJvZmlsZWQvcGFzczUubyBcCisJcHJvZmlsZWQvam91cm5hbC5vIHByb2ZpbGVkL2JhZGJsb2Nrcy5vIHByb2ZpbGVkL3V0aWwubyBcCisJcHJvZmlsZWQvZGlyaW5mby5vIHByb2ZpbGVkL2R4X2RpcmluZm8ubyBwcm9maWxlZC9laGFuZGxlci5vIFwKKwlwcm9maWxlZC9tZXNzYWdlLm8gcHJvZmlsZWQvcHJvYmxlbS5vIHByb2ZpbGVkL3F1b3RhLm8gXAorCXByb2ZpbGVkL3JlY292ZXJ5Lm8gcHJvZmlsZWQvcmVnaW9uLm8gcHJvZmlsZWQvcmV2b2tlLm8gXAorCXByb2ZpbGVkL2VhX3JlZmNvdW50Lm8gcHJvZmlsZWQvcmVoYXNoLm8gXAorCXByb2ZpbGVkL2xvZ2ZpbGUubyBwcm9maWxlZC9zaWdjYXRjaGVyLm8gXAorCXByb2ZpbGVkL3JlYWRhaGVhZC5vIHByb2ZpbGVkL2V4dGVudHMubworCitTUkNTPSAkKHNyY2RpcikvZTJmc2NrLmMgXAorCSQoc3JjZGlyKS9zdXBlci5jIFwKKwkkKHNyY2RpcikvcGFzczEuYyBcCisJJChzcmNkaXIpL3Bhc3MxYi5jIFwKKwkkKHNyY2RpcikvcGFzczIuYyBcCisJJChzcmNkaXIpL3Bhc3MzLmMgXAorCSQoc3JjZGlyKS9wYXNzNC5jIFwKKwkkKHNyY2RpcikvcGFzczUuYyBcCisJJChzcmNkaXIpL2pvdXJuYWwuYyBcCisJJChzcmNkaXIpL3JlY292ZXJ5LmMgXAorCSQoc3JjZGlyKS9yZXZva2UuYyBcCisJJChzcmNkaXIpL2JhZGJsb2Nrcy5jIFwKKwkkKHNyY2RpcikvdXRpbC5jIFwKKwkkKHNyY2RpcikvdW5peC5jIFwKKwkkKHNyY2RpcikvZGlyaW5mby5jIFwKKwkkKHNyY2RpcikvZHhfZGlyaW5mby5jIFwKKwkkKHNyY2RpcikvZWhhbmRsZXIuYyBcCisJJChzcmNkaXIpL3Byb2JsZW0uYyBcCisJJChzcmNkaXIpL21lc3NhZ2UuYyBcCisJJChzcmNkaXIpL2VhX3JlZmNvdW50LmMgXAorCSQoc3JjZGlyKS9yZWhhc2guYyBcCisJJChzcmNkaXIpL3JlYWRhaGVhZC5jIFwKKwkkKHNyY2RpcikvcmVnaW9uLmMgXAorCSQoc3JjZGlyKS9zaWdjYXRjaGVyLmMgXAorCSQoc3JjZGlyKS9sb2dmaWxlLmMgXAorCSQoc3JjZGlyKS9xdW90YS5jIFwKKwkkKHNyY2RpcikvZXh0ZW50cy5jIFwKKwkkKE1UUkFDRV9TUkMpCisKK2FsbDo6IHByb2ZpbGVkICQoUFJPR1MpIGUyZnNjayAkKE1BTlBBR0VTKSAkKEZNQU5QQUdFUykKKworQFBST0ZJTEVfQ01UQGFsbDo6IGUyZnNjay5wcm9maWxlZAorCitlMmZzY2s6ICQoT0JKUykgICQoREVQTElCUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKExEKSAkKEFMTF9MREZMQUdTKSAkKFJEWU5BTUlDKSAtbyBlMmZzY2sgJChPQkpTKSAkKExJQlMpIAorCitlMmZzY2suc3RhdGljOiAkKE9CSlMpICQoU1RBVElDX0RFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChMRCkgJChMREZMQUdTX1NUQVRJQykgLW8gZTJmc2NrLnN0YXRpYyAkKE9CSlMpICQoU1RBVElDX0xJQlMpIAorCitlMmZzY2sucHJvZmlsZWQ6ICQoT0JKUykgICQoUFJPRklMRURfREVQTElCUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKExEKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gZTJmc2NrLnByb2ZpbGVkICQoUFJPRklMRURfT0JKUykgXAorCQkkKFBST0ZJTEVEX0xJQlMpIAorCit0c3Rfc2lnY2F0Y2hlcjogJChzcmNkaXIpL3NpZ2NhdGNoZXIuYyBzaWdjYXRjaGVyLm8KKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpICQoQUxMX0xERkxBR1MpICQoUkRZTkFNSUMpIFwKKwkJJChzcmNkaXIpL3NpZ2NhdGNoZXIuYyAtRERFQlVHIC1vIHRzdF9zaWdjYXRjaGVyCisKK3RzdF9wcm9ibGVtOiAkKHNyY2RpcikvcHJvYmxlbS5jICQoc3JjZGlyKS9wcm9ibGVtLmggJChMSUJFWFQyRlMpIFwKKwkkKERFUExJQkNPTV9FUlIpCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIHRzdF9wcm9ibGVtIFwKKwkJJChzcmNkaXIpL3Byb2JsZW0uYyAtRFVOSVRURVNUICQoTElCRVhUMkZTKSAkKExJQkNPTV9FUlIpIFwKKwkJJChMSUJJTlRMKSAkKFNZU0xJQlMpCisKK3RzdF9yZWZjb3VudDogZWFfcmVmY291bnQuYyAkKERFUExJQkNPTV9FUlIpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X3JlZmNvdW50ICQoc3JjZGlyKS9lYV9yZWZjb3VudC5jIFwKKwkJJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSAtRFRFU1RfUFJPR1JBTSBcCisJCSQoTElCQ09NX0VSUikgJChMSUJFWFQyRlMpICQoU1lTTElCUykKKwordHN0X2xvZ2ZpbGU6ICQoc3JjZGlyKS9sb2dmaWxlLmMKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfbG9nZmlsZSAkKHNyY2RpcikvbG9nZmlsZS5jIFwKKwkJJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSAtRFRFU1RfUFJPR1JBTSAkKFNZU0xJQlMpCisKK3RzdF9yZWdpb246IHJlZ2lvbi5jICQoREVQTElCQ09NX0VSUikKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfcmVnaW9uICQoc3JjZGlyKS9yZWdpb24uYyBcCisJCSQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgLURURVNUX1BST0dSQU0gXAorCQkkKExJQkNPTV9FUlIpICQoU1lTTElCUykKKworY2hlY2s6OiB0c3RfcmVmY291bnQgdHN0X3JlZ2lvbiB0c3RfcHJvYmxlbQorCSQoVEVTVEVOVikgLi90c3RfcmVmY291bnQKKwkkKFRFU1RFTlYpIC4vdHN0X3JlZ2lvbgorCSQoVEVTVEVOVikgLi90c3RfcHJvYmxlbQorCitleHRlbmQ6IGV4dGVuZC5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChMRCkgJChBTExfTERGTEFHUykgLW8gZXh0ZW5kIGV4dGVuZC5vICQoQ0hFQ0tMSUIpCisKK2ZsdXNoYjogZmx1c2hiLm8KKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKExEKSAkKEFMTF9MREZMQUdTKSAtbyBmbHVzaGIgZmx1c2hiLm8gJChDSEVDS0xJQikKKworaXNjYW46IGlzY2FuLm8gdXRpbC5vIGVoYW5kbGVyLm8gJChERVBMSUJTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoTEQpICQoQUxMX0xERkxBR1MpIC1vIGlzY2FuIGlzY2FuLm8gdXRpbC5vIGVoYW5kbGVyLm8gJChMSUJTKQorCit0ZXN0X3Byb2ZpbGU6ICQoc3JjZGlyKS9wcm9maWxlLmMgcHJvZmlsZV9oZWxwZXJzLm8gYXJndl9wYXJzZS5vIFwKKwkJcHJvZl9lcnIubyBwcm9maWxlLmggJChERVBTVEFUSUNfTElCQ09NX0VSUikKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0ZXN0X3Byb2ZpbGUgLURERUJVR19QUk9HUkFNICQoc3JjZGlyKS9wcm9maWxlLmMgcHJvZl9lcnIubyBcCisJCXByb2ZpbGVfaGVscGVycy5vIGFyZ3ZfcGFyc2UubyAkKFNUQVRJQ19MSUJDT01fRVJSKSBcCisJCSQoQUxMX0NGTEFHUykKKworcHJvZmlsZWQ6CitAUFJPRklMRV9DTVRACSQoRSkgIglNS0RJUiAkQCIKK0BQUk9GSUxFX0NNVEAJJChRKSBta2RpciBwcm9maWxlZAorCitlMmZzY2suODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2UyZnNjay44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2UyZnNjay44LmluIGUyZnNjay44CisKK2UyZnNjay5jb25mLjU6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9lMmZzY2suY29uZi41LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2UyZnNjay5jb25mLjUuaW4gZTJmc2NrLmNvbmYuNQorCitpbnN0YWxsZGlyczoKKwkkKEUpICIJTUtJTlNUQUxMRElSUyAkKHJvb3Rfc2JpbmRpcikgJChtYW44ZGlyKSIKKwkkKFEpICQoTUtJTlNUQUxMRElSUykgJChERVNURElSKSQocm9vdF9zYmluZGlyKSBcCisJCSQoREVTVERJUikkKG1hbjhkaXIpICQoREVTVERJUikkKG1hbjVkaXIpCisKK2luc3RhbGw6ICQoUFJPR1MpICQoTUFOUEFHRVMpICQoRk1BTlBBR0VTKSBpbnN0YWxsZGlycworCSQoUSkgZm9yIGkgaW4gJChQUk9HUyk7IGRvIFwKKwkJJChFUykgIglJTlNUQUxMICQocm9vdF9zYmluZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGkgJChERVNURElSKSQocm9vdF9zYmluZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiBleHQyIGV4dDMgZXh0NCBleHQ0ZGV2OyBkbyBcCisJCSQoRVMpICIJTElOSyAkKHJvb3Rfc2JpbmRpcikvZnNjay4kJGkiOyBcCisJCShjZCAkKERFU1RESVIpJChyb290X3NiaW5kaXIpOyBcCisJCQkkKExOKSAkKExJTktfSU5TVEFMTF9GTEFHUykgZTJmc2NrIGZzY2suJCRpKTsgXAorCWRvbmUKKwkkKFEpIGZvciBpIGluICQoTUFOUEFHRVMpOyBkbyBcCisJCWZvciBqIGluICQoQ09NUFJFU1NfRVhUKTsgZG8gXAorCQkJJChSTSkgLWYgJChERVNURElSKSQobWFuOGRpcikvJCRpLiQkajsgXAorCQlkb25lOyBcCisJCSQoRVMpICIJSU5TVEFMTF9EQVRBICQobWFuOGRpcikvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKG1hbjhkaXIpLyQkaTsgXAorCWRvbmUKKwkkKFEpIGZvciBpIGluICQoRk1BTlBBR0VTKTsgZG8gXAorCQlmb3IgaiBpbiAkKENPTVBSRVNTX0VYVCk7IGRvIFwKKwkJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjVkaXIpLyQkaS4kJGo7IFwKKwkJZG9uZTsgXAorCQkkKEVTKSAiCUlOU1RBTExfREFUQSAkKG1hbjVkaXIpLyQkaSI7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJChtYW41ZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiBleHQyIGV4dDMgZXh0NCBleHQ0ZGV2OyBkbyBcCisJCSQoRVMpICIJTElOSyAkKG1hbjhkaXIpL2ZzY2suJCRpLjgiOyBcCisJCShjZCAkKERFU1RESVIpJChtYW44ZGlyKTsgXAorCQkJJChMTikgJChMSU5LX0lOU1RBTExfRkxBR1MpIGUyZnNjay44IGZzY2suJCRpLjgpOyBcCisJZG9uZQorCitpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisJJChRKSBmb3IgaSBpbiAkKFBST0dTKTsgZG8gXAorCQkkKEVTKSAiCVNUUklQICQocm9vdF9zYmluZGlyKS8kJGkiOyBcCisJCSQoU1RSSVApICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCit1bmluc3RhbGw6CisJZm9yIGkgaW4gJChQUk9HUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQocm9vdF9zYmluZGlyKS8kJGk7IFwKKwlkb25lCisJJChSTSkgLWYgJChERVNURElSKSQocm9vdF9zYmluZGlyKS9mc2NrLmV4dDIgXAorCQkkKERFU1RESVIpJChyb290X3NiaW5kaXIpL2ZzY2suZXh0MyBcCisJCSQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvZnNjay5leHQ0IFwKKwkJJChERVNURElSKSQocm9vdF9zYmluZGlyKS9mc2NrLmV4dDRkZXYKKwlmb3IgaSBpbiAkKE1BTlBBR0VTKTsgZG8gXAorCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW44ZGlyKS8kJGk7IFwKKwlkb25lCisJZm9yIGkgaW4gJChGTUFOUEFHRVMpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjVkaXIpLyQkaTsgXAorCWRvbmUKKwkkKFJNKSAtZiAkKERFU1RESVIpJChyb290X3NiaW5kaXIpL2ZzY2suZXh0MiBcCisJCQkkKERFU1RESVIpJChyb290X3NiaW5kaXIpL2ZzY2suZXh0MyBcCisJCQkkKERFU1RESVIpJChyb290X3NiaW5kaXIpL2ZzY2suZXh0NCBcCisJCQkkKERFU1RESVIpJChyb290X3NiaW5kaXIpL2ZzY2suZXh0NGRldgorCitjbGVhbjo6CisJJChSTSkgLWYgJChQUk9HUykgXCMqICpcIyAqLnMgKi5vICouYSAqfiBjb3JlIGUyZnNjay5zdGF0aWMgXAorCQllMmZzY2suc2hhcmVkIGUyZnNjay5wcm9maWxlZCBmbHVzaGIgZTJmc2NrLjggXAorCQl0c3RfcHJvYmxlbSB0c3RfcmVnaW9uIHRzdF9yZWZjb3VudCB0c3RfY3JjMzIgXAorCQlnZW5fY3JjMzJ0YWJsZSBlMmZzY2suY29uZi41IFwKKwkJcHJvZl9lcnIuYyBwcm9mX2Vyci5oIHRlc3RfcHJvZmlsZQorCSQoUk0pIC1yZiBwcm9maWxlZAorCittb3N0bHljbGVhbjogY2xlYW4KK2Rpc3RjbGVhbjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlICQoc3JjZGlyKS9UQUdTICQoc3JjZGlyKS9NYWtlZmlsZS5pbi5vbGQKKworIyArKysgRGVwZW5kZW5jeSBsaW5lIGVhdGVyICsrKworIyAKKyMgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZvbGxvdy4gIFRoaXMgbXVzdCBiZSB0aGUgbGFzdCBzZWN0aW9uIGluCisjIHRoZSBNYWtlZmlsZS5pbiBmaWxlCisjCitlMmZzY2subzogJChzcmNkaXIpL2UyZnNjay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3Byb2JsZW0uaAorc3VwZXIubzogJChzcmNkaXIpL3N1cGVyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvcHJvYmxlbS5oCitwYXNzMS5vOiAkKHNyY2RpcikvcGFzczEuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS9wcm9ibGVtLmgKK3Bhc3MxYi5vOiAkKHNyY2RpcikvcGFzczFiLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2UyZnNjay5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvcHJvYmxlbS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RpY3QuaAorcGFzczIubzogJChzcmNkaXIpL3Bhc3MyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvcHJvYmxlbS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RpY3QuaAorcGFzczMubzogJChzcmNkaXIpL3Bhc3MzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvcHJvYmxlbS5oCitwYXNzNC5vOiAkKHNyY2RpcikvcGFzczQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS9wcm9ibGVtLmgKK3Bhc3M1Lm86ICQoc3JjZGlyKS9wYXNzNS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3Byb2JsZW0uaAoram91cm5hbC5vOiAkKHNyY2Rpcikvam91cm5hbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvamZzX3VzZXIuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmggJChzcmNkaXIpL3Byb2JsZW0uaAorcmVjb3ZlcnkubzogJChzcmNkaXIpL3JlY292ZXJ5LmMgJChzcmNkaXIpL2pmc191c2VyLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWpiZC5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtbGlzdC5oCityZXZva2UubzogJChzcmNkaXIpL3Jldm9rZS5jICQoc3JjZGlyKS9qZnNfdXNlci5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1qYmQuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvamZzX2NvbXBhdC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWxpc3QuaAorYmFkYmxvY2tzLm86ICQoc3JjZGlyKS9iYWRibG9ja3MuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZTJmc2NrLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCit1dGlsLm86ICQoc3JjZGlyKS91dGlsLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAordW5peC5vOiAkKHNyY2RpcikvdW5peC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wbGF1c2libGUuaCBcCisgJChzcmNkaXIpL2UyZnNjay5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS9wcm9ibGVtLmggXAorICQodG9wX3NyY2RpcikvdmVyc2lvbi5oCitkaXJpbmZvLm86ICQoc3JjZGlyKS9kaXJpbmZvLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvdGRiLmgKK2R4X2RpcmluZm8ubzogJChzcmNkaXIpL2R4X2RpcmluZm8uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitlaGFuZGxlci5vOiAkKHNyY2RpcikvZWhhbmRsZXIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitwcm9ibGVtLm86ICQoc3JjZGlyKS9wcm9ibGVtLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvcHJvYmxlbS5oIFwKKyAkKHNyY2RpcikvcHJvYmxlbVAuaAorbWVzc2FnZS5vOiAkKHNyY2RpcikvbWVzc2FnZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3Byb2JsZW0uaAorZWFfcmVmY291bnQubzogJChzcmNkaXIpL2VhX3JlZmNvdW50LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorcmVoYXNoLm86ICQoc3JjZGlyKS9yZWhhc2guYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS9wcm9ibGVtLmgKK3JlYWRhaGVhZC5vOiAkKHNyY2RpcikvcmVhZGFoZWFkLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorcmVnaW9uLm86ICQoc3JjZGlyKS9yZWdpb24uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UyZnNjay5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitzaWdjYXRjaGVyLm86ICQoc3JjZGlyKS9zaWdjYXRjaGVyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMmZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbG9nZmlsZS5vOiAkKHNyY2RpcikvbG9nZmlsZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK3F1b3RhLm86ICQoc3JjZGlyKS9xdW90YS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3Byb2JsZW0uaAorZXh0ZW50cy5vOiAkKHNyY2RpcikvZXh0ZW50cy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJmc2NrLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3Byb2JsZW0uaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9NYWtlZmlsZS5wcSBiL2UyZnNwcm9ncy9lMmZzY2svTWFrZWZpbGUucHEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThhM2NkMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svTWFrZWZpbGUucHEKQEAgLTAsMCArMSw5IEBACitUT1BTUkM9Li4KK0xJQk5BTUU9RTJGU0NLLkxJQgorT0JKRklMRT1FMkZTQ0suTFNUCisKK09CSlM9IGUyZnNjay5vYmogc3VwZXIub2JqIHBhc3MxLm9iaiBwYXNzMi5vYmogcGFzczMub2JqIFwKKwlwYXNzNC5vYmogcGFzczUub2JqIGRpcmluZm8ub2JqCisKKyFpbmNsdWRlICQoVE9QU1JDKVxwb3dlcnF1ZXN0XE1DT05GSUcKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9iYWRibG9ja3MuYyBiL2UyZnNwcm9ncy9lMmZzY2svYmFkYmxvY2tzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzNjQxYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svYmFkYmxvY2tzLmMKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBiYWRibG9ja3MuYyAtLS0gcmVwbGFjZS9hcHBlbmQgYmFkIGJsb2NrcyB0byB0aGUgYmFkIGJsb2NrIGlub2RlCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0IFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlCisgKiByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorI2luY2x1ZGUgImUyZnNjay5oIgorCitzdGF0aWMgaW50IGNoZWNrX2JiX2lub2RlX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgKmJsb2NrX25yLCBpbnQgYmxvY2tjbnQsCisJCQkJIHZvaWQgKnByaXZfZGF0YSk7CisKKworc3RhdGljIHZvaWQgaW52YWxpZF9ibG9jayhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksIGJsa190IGJsaykKK3sKKwlwcmludGYoXygiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIpLCBibGspOworCXJldHVybjsKK30KKwordm9pZCByZWFkX2JhZF9ibG9ja3NfZmlsZShlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKmJhZF9ibG9ja3NfZmlsZSwKKwkJCSAgaW50IHJlcGxhY2VfYmFkX2Jsb2NrcykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwliYWRibG9ja3NfbGlzdAliYl9saXN0ID0gMDsKKwlGSUxFCQkqZjsKKwljaGFyCQlidWZbMTAyNF07CisKKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgYmFkIGJsb2NrIGlub2RlIGlzIHNhbmUuICBJZiB0aGVyZSBhcmUgYW55CisJICogaWxsZWdhbCBibG9ja3MsIGNsZWFyIHRoZW0uCisJICovCisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUoZnMsIEVYVDJfQkFEX0lOTywgMCwgMCwKKwkJCQkgICAgICBjaGVja19iYl9pbm9kZV9ibG9ja3MsIDApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX2Jsb2NrX2l0ZXJhdGUiLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiKSk7CisJCWdvdG8gZmF0YWw7CisJfQorCisJLyoKKwkgKiBJZiB3ZSdyZSBhcHBlbmRpbmcgdG8gdGhlIGJhZCBibG9ja3MgaW5vZGUsIHJlYWQgaW4gdGhlCisJICogY3VycmVudCBiYWQgYmxvY2tzLgorCSAqLworCWlmICghcmVwbGFjZV9iYWRfYmxvY2tzKSB7CisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2JiX2lub2RlKGZzLCAmYmJfbGlzdCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoImV4dDJmc19yZWFkX2JiX2lub2RlIiwgcmV0dmFsLCAiJXMiLAorCQkJCV8oIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiKSk7CisJCQlnb3RvIGZhdGFsOworCQl9CisJfQorCisJLyoKKwkgKiBOb3cgcmVhZCBpbiB0aGUgYmFkIGJsb2NrcyBmcm9tIHRoZSBmaWxlOyBpZgorCSAqIGJhZF9ibG9ja3NfZmlsZSBpcyBudWxsLCB0aGVuIHRyeSB0byBydW4gdGhlIGJhZGJsb2NrcworCSAqIGNvbW1hbmQuCisJICovCisJaWYgKGJhZF9ibG9ja3NfZmlsZSkgeworCQlmID0gZm9wZW4oYmFkX2Jsb2Nrc19maWxlLCAiciIpOworCQlpZiAoIWYpIHsKKwkJCWNvbV9lcnIoInJlYWRfYmFkX2Jsb2Nrc19maWxlIiwgZXJybm8sCisJCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwgYmFkX2Jsb2Nrc19maWxlKTsKKwkJCWdvdG8gZmF0YWw7CisJCX0KKwl9IGVsc2UgeworCQlzcHJpbnRmKGJ1ZiwgImJhZGJsb2NrcyAtYiAlZCAtWCAlcyVzJXMgJWxsdSIsIGZzLT5ibG9ja3NpemUsCisJCQkoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikgPyAiIiA6ICItcyAiLAorCQkJKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfV1JJVEVDSEVDSykgPyAiLW4gIiA6ICIiLAorCQkJZnMtPmRldmljZV9uYW1lLCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciktMSk7CisJCWYgPSBwb3BlbihidWYsICJyIik7CisJCWlmICghZikgeworCQkJY29tX2VycigicmVhZF9iYWRfYmxvY2tzX2ZpbGUiLCBlcnJubywKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIpLCBidWYpOworCQkJZ290byBmYXRhbDsKKwkJfQorCX0KKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iYl9GSUxFKGZzLCBmLCAmYmJfbGlzdCwgaW52YWxpZF9ibG9jayk7CisJaWYgKGJhZF9ibG9ja3NfZmlsZSkKKwkJZmNsb3NlKGYpOworCWVsc2UKKwkJcGNsb3NlKGYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfYmJfRklMRSIsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIpKTsKKwkJZ290byBmYXRhbDsKKwl9CisKKwkvKgorCSAqIEZpbmFsbHksIHVwZGF0ZSB0aGUgYmFkIGJsb2NrcyBmcm9tIHRoZSBiYWRfYmxvY2tfbWFwCisJICovCisJcHJpbnRmKCIlczogVXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlLlxuIiwgY3R4LT5kZXZpY2VfbmFtZSk7CisJcmV0dmFsID0gZXh0MmZzX3VwZGF0ZV9iYl9pbm9kZShmcywgYmJfbGlzdCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJleHQyZnNfdXBkYXRlX2JiX2lub2RlIiwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgdXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlIikpOworCQlnb3RvIGZhdGFsOworCX0KKworCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGJiX2xpc3QpOworCXJldHVybjsKKworZmF0YWw6CisJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwlpZiAoYmJfbGlzdCkKKwkJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2ZyZWUoYmJfbGlzdCk7CisJcmV0dXJuOworCit9CisKK3N0YXRpYyBpbnQgY2hlY2tfYmJfaW5vZGVfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLAorCQkJCSBibGtfdCAqYmxvY2tfbnIsCisJCQkJIGludCBibG9ja2NudCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJIHZvaWQgKnByaXZfZGF0YSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJaWYgKCEqYmxvY2tfbnIpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBJZiB0aGUgYmxvY2sgbnVtYmVyIGlzIG91dHJhZ2VvdXMsIGNsZWFyIGl0IGFuZCBpZ25vcmUgaXQuCisJICovCisJaWYgKCpibG9ja19uciA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgfHwKKwkgICAgKmJsb2NrX25yIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHsKKwkJcHJpbnRmKF8oIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgIgorCQkJICJDbGVhcmVkLlxuIiksICpibG9ja19ucik7CisJCSpibG9ja19uciA9IDA7CisJCXJldHVybiBCTE9DS19DSEFOR0VEOworCX0KKworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL2RpcmluZm8uYyBiL2UyZnNwcm9ncy9lMmZzY2svZGlyaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyOWY3ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2RpcmluZm8uYwpAQCAtMCwwICsxLDQ4NiBAQAorLyoKKyAqIGRpcmluZm8uYyAtLS0gbWFpbnRhaW5zIHRoZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24gdGFibGUgZm9yIGUyZnNjay4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZAorICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisgKi8KKworI3VuZGVmIERJUklORk9fREVCVUcKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKKworI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlIDxleHQyZnMvdGRiLmg+CisKK3N0cnVjdCBkaXJfaW5mb19kYiB7CisJaW50CQljb3VudDsKKwlpbnQJCXNpemU7CisJc3RydWN0IGRpcl9pbmZvICphcnJheTsKKwlzdHJ1Y3QgZGlyX2luZm8gKmxhc3RfbG9va3VwOworI2lmZGVmIENPTkZJR19UREIKKwljaGFyCQkqdGRiX2ZuOworCVREQl9DT05URVhUCSp0ZGI7CisjZW5kaWYKK307CisKK3N0cnVjdCBkaXJfaW5mb19pdGVyIHsKKwlpbnQJaTsKKyNpZmRlZiBDT05GSUdfVERCCisJVERCX0RBVEEJdGRiX2l0ZXI7CisjZW5kaWYKK307CisKK3N0cnVjdCBkaXJfaW5mb19lbnQgeworCWV4dDJfaW5vX3QJCWRvdGRvdDsJLyogUGFyZW50IGFjY29yZGluZyB0byAnLi4nICovCisJZXh0Ml9pbm9fdAkJcGFyZW50OyAvKiBQYXJlbnQgYWNjb3JkaW5nIHRvIHRyZWV3YWxrICovCit9OworCisKK3N0YXRpYyB2b2lkIGUyZnNja19wdXRfZGlyX2luZm8oZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgZGlyX2luZm8gKmRpcik7CisKKyNpZmRlZiBDT05GSUdfVERCCitzdGF0aWMgdm9pZCBzZXR1cF90ZGIoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IG51bV9kaXJzKQoreworCXN0cnVjdCBkaXJfaW5mb19kYgkqZGIgPSBjdHgtPmRpcl9pbmZvOworCXVuc2lnbmVkIGludAkJdGhyZXNob2xkOworCWVycmNvZGVfdAkJcmV0dmFsOworCW1vZGVfdAkJCXNhdmVfdW1hc2s7CisJY2hhcgkJCSp0ZGJfZGlyLCB1dWlkWzQwXTsKKwlpbnQJCQlmZCwgZW5hYmxlOworCisJcHJvZmlsZV9nZXRfc3RyaW5nKGN0eC0+cHJvZmlsZSwgInNjcmF0Y2hfZmlsZXMiLCAiZGlyZWN0b3J5IiwgMCwgMCwKKwkJCSAgICZ0ZGJfZGlyKTsKKwlwcm9maWxlX2dldF91aW50KGN0eC0+cHJvZmlsZSwgInNjcmF0Y2hfZmlsZXMiLAorCQkJICJudW1kaXJzX3RocmVzaG9sZCIsIDAsIDAsICZ0aHJlc2hvbGQpOworCXByb2ZpbGVfZ2V0X2Jvb2xlYW4oY3R4LT5wcm9maWxlLCAic2NyYXRjaF9maWxlcyIsCisJCQkgICAgImRpcmluZm8iLCAwLCAxLCAmZW5hYmxlKTsKKworCWlmICghZW5hYmxlIHx8ICF0ZGJfZGlyIHx8IGFjY2Vzcyh0ZGJfZGlyLCBXX09LKSB8fAorCSAgICAodGhyZXNob2xkICYmIG51bV9kaXJzIDw9IHRocmVzaG9sZCkpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHN0cmxlbih0ZGJfZGlyKSArIDY0LCAmZGItPnRkYl9mbik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuOworCisJdXVpZF91bnBhcnNlKGN0eC0+ZnMtPnN1cGVyLT5zX3V1aWQsIHV1aWQpOworCXNwcmludGYoZGItPnRkYl9mbiwgIiVzLyVzLWRpcmluZm8tWFhYWFhYIiwgdGRiX2RpciwgdXVpZCk7CisJc2F2ZV91bWFzayA9IHVtYXNrKDA3Nyk7CisJZmQgPSBta3N0ZW1wKGRiLT50ZGJfZm4pOworCXVtYXNrKHNhdmVfdW1hc2spOworCWlmIChmZCA8IDApIHsKKwkJZGItPnRkYiA9IE5VTEw7CisJCXJldHVybjsKKwl9CisKKwlpZiAobnVtX2RpcnMgPCA5OTk5MSkKKwkJbnVtX2RpcnMgPSA5OTk5MTsgLyogbGFyZ2VzdCA1IGRpZ2l0IHByaW1lICovCisKKwlkYi0+dGRiID0gdGRiX29wZW4oZGItPnRkYl9mbiwgbnVtX2RpcnMsIFREQl9OT0xPQ0sgfCBUREJfTk9TWU5DLAorCQkJICAgT19SRFdSIHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2MDApOworCWNsb3NlKGZkKTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBzZXR1cF9kYihlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IGRpcl9pbmZvX2RiCSpkYjsKKwlleHQyX2lub190CQludW1fZGlyczsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWRiID0gKHN0cnVjdCBkaXJfaW5mb19kYiAqKQorCQllMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgc2l6ZW9mKHN0cnVjdCBkaXJfaW5mb19kYiksCisJCQkJICAgICAgICJkaXJlY3RvcnkgbWFwIGRiIik7CisJZGItPmNvdW50ID0gZGItPnNpemUgPSAwOworCWRiLT5hcnJheSA9IDA7CisKKwljdHgtPmRpcl9pbmZvID0gZGI7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X251bV9kaXJzKGN0eC0+ZnMsICZudW1fZGlycyk7CisJaWYgKHJldHZhbCkKKwkJbnVtX2RpcnMgPSAxMDI0OwkvKiBHdWVzcyAqLworCisjaWZkZWYgQ09ORklHX1REQgorCXNldHVwX3RkYihjdHgsIG51bV9kaXJzKTsKKworCWlmIChkYi0+dGRiKSB7CisjaWZkZWYgRElSSU5GT19ERUJVRworCQlwcmludGYoIk5vdGU6IHVzaW5nIHRkYiFcbiIpOworI2VuZGlmCisJCXJldHVybjsKKwl9CisjZW5kaWYKKworCWRiLT5zaXplID0gbnVtX2RpcnMgKyAxMDsKKwlkYi0+YXJyYXkgID0gKHN0cnVjdCBkaXJfaW5mbyAqKQorCQllMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgZGItPnNpemUKKwkJCQkgICAgICAgKiBzaXplb2YgKHN0cnVjdCBkaXJfaW5mbyksCisJCQkJICAgICAgICJkaXJlY3RvcnkgbWFwIik7Cit9CisKKy8qCisgKiBUaGlzIHN1YnJvdXRpbmUgaXMgY2FsbGVkIGR1cmluZyBwYXNzMSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgaW5mbworICogZW50cnkuICBEdXJpbmcgcGFzczEsIHRoZSBwYXNzZWQtaW4gcGFyZW50IGlzIDA7IGl0IHdpbGwgZ2V0IGZpbGxlZAorICogaW4gZHVyaW5nIHBhc3MyLgorICovCit2b2lkIGUyZnNja19hZGRfZGlyX2luZm8oZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywgZXh0Ml9pbm9fdCBwYXJlbnQpCit7CisJc3RydWN0IGRpcl9pbmZvCQkqZGlyLCAqb2xkX2FycmF5OworCWludAkJCWksIGo7CisJZXJyY29kZV90CQlyZXR2YWw7CisJdW5zaWduZWQgbG9uZwkJb2xkX3NpemU7CisKKyNpZmRlZiBESVJJTkZPX0RFQlVHCisJcHJpbnRmKCJhZGRfZGlyX2luZm8gZm9yIGlub2RlICglbHUsICVsdSkuLi5cbiIsIGlubywgcGFyZW50KTsKKyNlbmRpZgorCWlmICghY3R4LT5kaXJfaW5mbykKKwkJc2V0dXBfZGIoY3R4KTsKKworCWlmIChjdHgtPmRpcl9pbmZvLT5jb3VudCA+PSBjdHgtPmRpcl9pbmZvLT5zaXplKSB7CisJCW9sZF9zaXplID0gY3R4LT5kaXJfaW5mby0+c2l6ZSAqIHNpemVvZihzdHJ1Y3QgZGlyX2luZm8pOworCQljdHgtPmRpcl9pbmZvLT5zaXplICs9IDEwOworCQlvbGRfYXJyYXkgPSBjdHgtPmRpcl9pbmZvLT5hcnJheTsKKwkJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9tZW0ob2xkX3NpemUsIGN0eC0+ZGlyX2luZm8tPnNpemUgKgorCQkJCQkgICBzaXplb2Yoc3RydWN0IGRpcl9pbmZvKSwKKwkJCQkJICAgJmN0eC0+ZGlyX2luZm8tPmFycmF5KTsKKwkJaWYgKHJldHZhbCkgeworCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCByZWFsbG9jYXRlIGRpcl9pbmZvICIKKwkJCQkic3RydWN0dXJlIHRvICVkIGVudHJpZXNcbiIsCisJCQkJY3R4LT5kaXJfaW5mby0+c2l6ZSk7CisJCQlmYXRhbF9lcnJvcihjdHgsIDApOworCQkJY3R4LT5kaXJfaW5mby0+c2l6ZSAtPSAxMDsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAob2xkX2FycmF5ICE9IGN0eC0+ZGlyX2luZm8tPmFycmF5KQorCQkJY3R4LT5kaXJfaW5mby0+bGFzdF9sb29rdXAgPSBOVUxMOworCX0KKworI2lmZGVmIENPTkZJR19UREIKKwlpZiAoY3R4LT5kaXJfaW5mby0+dGRiKSB7CisJCXN0cnVjdCBkaXJfaW5mbyBlbnQ7CisKKwkJZW50LmlubyA9IGlubzsKKwkJZW50LnBhcmVudCA9IHBhcmVudDsKKwkJZW50LmRvdGRvdCA9IHBhcmVudDsKKwkJZTJmc2NrX3B1dF9kaXJfaW5mbyhjdHgsICZlbnQpOworCQlyZXR1cm47CisJfQorI2VuZGlmCisKKwkvKgorCSAqIE5vcm1hbGx5LCBhZGRfZGlyX2luZm8gaXMgY2FsbGVkIHdpdGggZWFjaCBpbm9kZSBpbgorCSAqIHNlcXVlbnRpYWwgb3JkZXI7IGJ1dCBvbmNlIGluIGEgd2hpbGUgKGxpa2Ugd2hlbiBwYXNzIDMKKwkgKiBuZWVkcyB0byByZWNyZWF0ZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb3IgbG9zdCtmb3VuZAorCSAqIGRpcmVjdG9yeSkgaXQgaXMgY2FsbGVkIG91dCBvZiBvcmRlci4gIEluIHRob3NlIGNhc2VzLCB3ZQorCSAqIG5lZWQgdG8gbW92ZSB0aGUgZGlyX2luZm8gZW50cmllcyBkb3duIHRvIG1ha2Ugcm9vbSwgc2luY2UKKwkgKiB0aGUgZGlyX2luZm8gYXJyYXkgbmVlZHMgdG8gYmUgc29ydGVkIGJ5IGlub2RlIG51bWJlciBmb3IKKwkgKiBnZXRfZGlyX2luZm8oKSdzIHNha2UuCisJICovCisJaWYgKGN0eC0+ZGlyX2luZm8tPmNvdW50ICYmCisJICAgIGN0eC0+ZGlyX2luZm8tPmFycmF5W2N0eC0+ZGlyX2luZm8tPmNvdW50LTFdLmlubyA+PSBpbm8pIHsKKwkJZm9yIChpID0gY3R4LT5kaXJfaW5mby0+Y291bnQtMTsgaSA+IDA7IGktLSkKKwkJCWlmIChjdHgtPmRpcl9pbmZvLT5hcnJheVtpLTFdLmlubyA8IGlubykKKwkJCQlicmVhazsKKwkJZGlyID0gJmN0eC0+ZGlyX2luZm8tPmFycmF5W2ldOworCQlpZiAoZGlyLT5pbm8gIT0gaW5vKQorCQkJZm9yIChqID0gY3R4LT5kaXJfaW5mby0+Y291bnQrKzsgaiA+IGk7IGotLSkKKwkJCQljdHgtPmRpcl9pbmZvLT5hcnJheVtqXSA9IGN0eC0+ZGlyX2luZm8tPmFycmF5W2otMV07CisJfSBlbHNlCisJCWRpciA9ICZjdHgtPmRpcl9pbmZvLT5hcnJheVtjdHgtPmRpcl9pbmZvLT5jb3VudCsrXTsKKworCWRpci0+aW5vID0gaW5vOworCWRpci0+ZG90ZG90ID0gcGFyZW50OworCWRpci0+cGFyZW50ID0gcGFyZW50OworfQorCisvKgorICogZ2V0X2Rpcl9pbmZvKCkgLS0tIGdpdmVuIGFuIGlub2RlIG51bWJlciwgdHJ5IHRvIGZpbmQgdGhlIGRpcmVjdG9yeQorICogaW5mb3JtYXRpb24gZW50cnkgZm9yIGl0LgorICovCitzdGF0aWMgc3RydWN0IGRpcl9pbmZvICplMmZzY2tfZ2V0X2Rpcl9pbmZvKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJc3RydWN0IGRpcl9pbmZvX2RiCSpkYiA9IGN0eC0+ZGlyX2luZm87CisJaW50CQkJbG93LCBoaWdoLCBtaWQ7CisKKwlpZiAoIWRiKQorCQlyZXR1cm4gMDsKKworI2lmZGVmIERJUklORk9fREVCVUcKKwlwcmludGYoImUyZnNja19nZXRfZGlyX2luZm8gJWQuLi4iLCBpbm8pOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfVERCCisJaWYgKGRiLT50ZGIpIHsKKwkJc3RhdGljIHN0cnVjdCBkaXJfaW5mbwlyZXRfZGlyX2luZm87CisJCVREQl9EQVRBIGtleSwgZGF0YTsKKwkJc3RydWN0IGRpcl9pbmZvX2VudAkqYnVmOworCisJCWtleS5kcHRyID0gKHVuc2lnbmVkIGNoYXIgKikgJmlubzsKKwkJa2V5LmRzaXplID0gc2l6ZW9mKGV4dDJfaW5vX3QpOworCisJCWRhdGEgPSB0ZGJfZmV0Y2goZGItPnRkYiwga2V5KTsKKwkJaWYgKCFkYXRhLmRwdHIpIHsKKwkJCWlmICh0ZGJfZXJyb3IoZGItPnRkYikgIT0gVERCX0VSUl9OT0VYSVNUKQorCQkJCXByaW50ZigiZmV0Y2ggZmFpbGVkOiAlc1xuIiwKKwkJCQkgICAgICAgdGRiX2Vycm9yc3RyKGRiLT50ZGIpKTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJYnVmID0gKHN0cnVjdCBkaXJfaW5mb19lbnQgKikgZGF0YS5kcHRyOworCQlyZXRfZGlyX2luZm8uaW5vID0gaW5vOworCQlyZXRfZGlyX2luZm8uZG90ZG90ID0gYnVmLT5kb3Rkb3Q7CisJCXJldF9kaXJfaW5mby5wYXJlbnQgPSBidWYtPnBhcmVudDsKKyNpZmRlZiBESVJJTkZPX0RFQlVHCisJCXByaW50ZigiKCVkLCVkLCVkKVxuIiwgaW5vLCBidWYtPmRvdGRvdCwgYnVmLT5wYXJlbnQpOworI2VuZGlmCisJCWZyZWUoZGF0YS5kcHRyKTsKKwkJcmV0dXJuICZyZXRfZGlyX2luZm87CisJfQorI2VuZGlmCisKKwlpZiAoZGItPmxhc3RfbG9va3VwICYmIGRiLT5sYXN0X2xvb2t1cC0+aW5vID09IGlubykKKwkJcmV0dXJuIGRiLT5sYXN0X2xvb2t1cDsKKworCWxvdyA9IDA7CisJaGlnaCA9IGN0eC0+ZGlyX2luZm8tPmNvdW50LTE7CisJaWYgKGlubyA9PSBjdHgtPmRpcl9pbmZvLT5hcnJheVtsb3ddLmlubykgeworI2lmZGVmIERJUklORk9fREVCVUcKKwkJcHJpbnRmKCIoJWQsJWQsJWQpXG4iLCBpbm8sCisJCSAgICAgICBjdHgtPmRpcl9pbmZvLT5hcnJheVtsb3ddLmRvdGRvdCwKKwkJICAgICAgIGN0eC0+ZGlyX2luZm8tPmFycmF5W2xvd10ucGFyZW50KTsKKyNlbmRpZgorCQlyZXR1cm4gJmN0eC0+ZGlyX2luZm8tPmFycmF5W2xvd107CisJfQorCWlmIChpbm8gPT0gY3R4LT5kaXJfaW5mby0+YXJyYXlbaGlnaF0uaW5vKSB7CisjaWZkZWYgRElSSU5GT19ERUJVRworCQlwcmludGYoIiglZCwlZCwlZClcbiIsIGlubywKKwkJICAgICAgIGN0eC0+ZGlyX2luZm8tPmFycmF5W2hpZ2hdLmRvdGRvdCwKKwkJICAgICAgIGN0eC0+ZGlyX2luZm8tPmFycmF5W2hpZ2hdLnBhcmVudCk7CisjZW5kaWYKKwkJcmV0dXJuICZjdHgtPmRpcl9pbmZvLT5hcnJheVtoaWdoXTsKKwl9CisKKwl3aGlsZSAobG93IDwgaGlnaCkgeworCQltaWQgPSAobG93K2hpZ2gpLzI7CisJCWlmIChtaWQgPT0gbG93IHx8IG1pZCA9PSBoaWdoKQorCQkJYnJlYWs7CisJCWlmIChpbm8gPT0gY3R4LT5kaXJfaW5mby0+YXJyYXlbbWlkXS5pbm8pIHsKKyNpZmRlZiBESVJJTkZPX0RFQlVHCisJCQlwcmludGYoIiglZCwlZCwlZClcbiIsIGlubywKKwkJCSAgICAgICBjdHgtPmRpcl9pbmZvLT5hcnJheVttaWRdLmRvdGRvdCwKKwkJCSAgICAgICBjdHgtPmRpcl9pbmZvLT5hcnJheVttaWRdLnBhcmVudCk7CisjZW5kaWYKKwkJCXJldHVybiAmY3R4LT5kaXJfaW5mby0+YXJyYXlbbWlkXTsKKwkJfQorCQlpZiAoaW5vIDwgY3R4LT5kaXJfaW5mby0+YXJyYXlbbWlkXS5pbm8pCisJCQloaWdoID0gbWlkOworCQllbHNlCisJCQlsb3cgPSBtaWQ7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBlMmZzY2tfcHV0X2Rpcl9pbmZvKGUyZnNja190IGN0eCBFWFQyRlNfTk9fVERCX1VOVVNFRCwKKwkJCQlzdHJ1Y3QgZGlyX2luZm8gKmRpciBFWFQyRlNfTk9fVERCX1VOVVNFRCkKK3sKKyNpZmRlZiBDT05GSUdfVERCCisJc3RydWN0IGRpcl9pbmZvX2RiCSpkYiA9IGN0eC0+ZGlyX2luZm87CisJc3RydWN0IGRpcl9pbmZvX2VudAlidWY7CisJVERCX0RBVEEJCWtleSwgZGF0YTsKKyNlbmRpZgorCisjaWZkZWYgRElSSU5GT19ERUJVRworCXByaW50ZigiZTJmc2NrX3B1dF9kaXJfaW5mbyAoJWQsICVkLCAlZCkuLi4iLCBkaXItPmlubywgZGlyLT5kb3Rkb3QsCisJICAgICAgIGRpci0+cGFyZW50KTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1REQgorCWlmICghZGItPnRkYikKKwkJcmV0dXJuOworCisJYnVmLnBhcmVudCA9IGRpci0+cGFyZW50OworCWJ1Zi5kb3Rkb3QgPSBkaXItPmRvdGRvdDsKKworCWtleS5kcHRyID0gKHVuc2lnbmVkIGNoYXIgKikgJmRpci0+aW5vOworCWtleS5kc2l6ZSA9IHNpemVvZihleHQyX2lub190KTsKKwlkYXRhLmRwdHIgPSAodW5zaWduZWQgY2hhciAqKSAmYnVmOworCWRhdGEuZHNpemUgPSBzaXplb2YoYnVmKTsKKworCWlmICh0ZGJfc3RvcmUoZGItPnRkYiwga2V5LCBkYXRhLCBUREJfUkVQTEFDRSkgPT0gLTEpIHsKKwkJcHJpbnRmKCJzdG9yZSBmYWlsZWQ6ICVzXG4iLCB0ZGJfZXJyb3JzdHIoZGItPnRkYikpOworCX0KKyNlbmRpZgorfQorCisvKgorICogRnJlZSB0aGUgZGlyX2luZm8gc3RydWN0dXJlIHdoZW4gaXQgaXNuJ3QgbmVlZGVkIGFueSBtb3JlLgorICovCit2b2lkIGUyZnNja19mcmVlX2Rpcl9pbmZvKGUyZnNja190IGN0eCkKK3sKKwlpZiAoY3R4LT5kaXJfaW5mbykgeworI2lmZGVmIENPTkZJR19UREIKKwkJaWYgKGN0eC0+ZGlyX2luZm8tPnRkYikKKwkJCXRkYl9jbG9zZShjdHgtPmRpcl9pbmZvLT50ZGIpOworCQlpZiAoY3R4LT5kaXJfaW5mby0+dGRiX2ZuKSB7CisJCQl1bmxpbmsoY3R4LT5kaXJfaW5mby0+dGRiX2ZuKTsKKwkJCWZyZWUoY3R4LT5kaXJfaW5mby0+dGRiX2ZuKTsKKwkJfQorI2VuZGlmCisJCWlmIChjdHgtPmRpcl9pbmZvLT5hcnJheSkKKwkJCWV4dDJmc19mcmVlX21lbSgmY3R4LT5kaXJfaW5mby0+YXJyYXkpOworCQljdHgtPmRpcl9pbmZvLT5hcnJheSA9IDA7CisJCWN0eC0+ZGlyX2luZm8tPnNpemUgPSAwOworCQljdHgtPmRpcl9pbmZvLT5jb3VudCA9IDA7CisJCWV4dDJmc19mcmVlX21lbSgmY3R4LT5kaXJfaW5mbyk7CisJCWN0eC0+ZGlyX2luZm8gPSAwOworCX0KK30KKworLyoKKyAqIFJldHVybiB0aGUgY291bnQgb2YgbnVtYmVyIG9mIGRpcmVjdG9yaWVzIGluIHRoZSBkaXJfaW5mbyBzdHJ1Y3R1cmUKKyAqLworaW50IGUyZnNja19nZXRfbnVtX2RpcmluZm8oZTJmc2NrX3QgY3R4KQoreworCXJldHVybiBjdHgtPmRpcl9pbmZvID8gY3R4LT5kaXJfaW5mby0+Y291bnQgOiAwOworfQorCitzdHJ1Y3QgZGlyX2luZm9faXRlciAqZTJmc2NrX2Rpcl9pbmZvX2l0ZXJfYmVnaW4oZTJmc2NrX3QgY3R4KQoreworCXN0cnVjdCBkaXJfaW5mb19pdGVyICppdGVyOworCisJaXRlciA9IGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBzaXplb2Yoc3RydWN0IGRpcl9pbmZvX2l0ZXIpLAorCQkJCSAgICAgICJkaXJfaW5mbyBpdGVyYXRvciIpOworCisjaWZkZWYgQ09ORklHX1REQgorCWlmIChjdHgtPmRpcl9pbmZvLT50ZGIpCisJCWl0ZXItPnRkYl9pdGVyID0gdGRiX2ZpcnN0a2V5KGN0eC0+ZGlyX2luZm8tPnRkYik7CisjZW5kaWYKKworCXJldHVybiBpdGVyOworfQorCit2b2lkIGUyZnNja19kaXJfaW5mb19pdGVyX2VuZChlMmZzY2tfdCBjdHggRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgc3RydWN0IGRpcl9pbmZvX2l0ZXIgKml0ZXIpCit7CisjaWZkZWYgQ09ORklHX1REQgorCWZyZWUoaXRlci0+dGRiX2l0ZXIuZHB0cik7CisjZW5kaWYKKwlleHQyZnNfZnJlZV9tZW0oJml0ZXIpOworfQorCisvKgorICogQSBzaW1wbGUgaW50ZXJhdG9yIGZ1bmN0aW9uCisgKi8KK3N0cnVjdCBkaXJfaW5mbyAqZTJmc2NrX2Rpcl9pbmZvX2l0ZXIoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgZGlyX2luZm9faXRlciAqaXRlcikKK3sKKwlpZiAoIWN0eC0+ZGlyX2luZm8gfHwgIWl0ZXIpCisJCXJldHVybiAwOworCisjaWZkZWYgQ09ORklHX1REQgorCWlmIChjdHgtPmRpcl9pbmZvLT50ZGIpIHsKKwkJc3RhdGljIHN0cnVjdCBkaXJfaW5mbyByZXRfZGlyX2luZm87CisJCXN0cnVjdCBkaXJfaW5mb19lbnQgKmJ1ZjsKKwkJVERCX0RBVEEgZGF0YSwga2V5OworCisJCWlmIChpdGVyLT50ZGJfaXRlci5kcHRyID09IDApCisJCQlyZXR1cm4gMDsKKwkJa2V5ID0gaXRlci0+dGRiX2l0ZXI7CisJCWRhdGEgPSB0ZGJfZmV0Y2goY3R4LT5kaXJfaW5mby0+dGRiLCBrZXkpOworCQlpZiAoIWRhdGEuZHB0cikgeworCQkJcHJpbnRmKCJpdGVyIGZldGNoIGZhaWxlZDogJXNcbiIsCisJCQkgICAgICAgdGRiX2Vycm9yc3RyKGN0eC0+ZGlyX2luZm8tPnRkYikpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJYnVmID0gKHN0cnVjdCBkaXJfaW5mb19lbnQgKikgZGF0YS5kcHRyOworCQlyZXRfZGlyX2luZm8uaW5vID0gKigoZXh0Ml9pbm9fdCAqKSBpdGVyLT50ZGJfaXRlci5kcHRyKTsKKwkJcmV0X2Rpcl9pbmZvLmRvdGRvdCA9IGJ1Zi0+ZG90ZG90OworCQlyZXRfZGlyX2luZm8ucGFyZW50ID0gYnVmLT5wYXJlbnQ7CisJCWl0ZXItPnRkYl9pdGVyID0gdGRiX25leHRrZXkoY3R4LT5kaXJfaW5mby0+dGRiLCBrZXkpOworCQlmcmVlKGtleS5kcHRyKTsKKwkJZnJlZShkYXRhLmRwdHIpOworCQlyZXR1cm4gJnJldF9kaXJfaW5mbzsKKwl9CisjZW5kaWYKKworCWlmIChpdGVyLT5pID49IGN0eC0+ZGlyX2luZm8tPmNvdW50KQorCQlyZXR1cm4gMDsKKworI2lmZGVmIERJUklORk9fREVCVUcKKwlwcmludGYoIml0ZXIoJWQsICVkLCAlZCkuLi4iLCBjdHgtPmRpcl9pbmZvLT5hcnJheVtpdGVyLT5pXS5pbm8sCisJICAgICAgIGN0eC0+ZGlyX2luZm8tPmFycmF5W2l0ZXItPmldLmRvdGRvdCwKKwkgICAgICAgY3R4LT5kaXJfaW5mby0+YXJyYXlbaXRlci0+aV0ucGFyZW50KTsKKyNlbmRpZgorCWN0eC0+ZGlyX2luZm8tPmxhc3RfbG9va3VwID0gY3R4LT5kaXJfaW5mby0+YXJyYXkgKyBpdGVyLT5pKys7CisJcmV0dXJuKGN0eC0+ZGlyX2luZm8tPmxhc3RfbG9va3VwKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gb25seSBzZXRzIHRoZSBwYXJlbnQgcG9pbnRlciwgYW5kIHJlcXVpcmVzIHRoYXQKKyAqIGRpcmluZm8gc3RydWN0dXJlIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4KKyAqLworaW50IGUyZnNja19kaXJfaW5mb19zZXRfcGFyZW50KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICAgZXh0Ml9pbm9fdCBwYXJlbnQpCit7CisJc3RydWN0IGRpcl9pbmZvICpwOworCisJcCA9IGUyZnNja19nZXRfZGlyX2luZm8oY3R4LCBpbm8pOworCWlmICghcCkKKwkJcmV0dXJuIDE7CisJcC0+cGFyZW50ID0gcGFyZW50OworCWUyZnNja19wdXRfZGlyX2luZm8oY3R4LCBwKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gb25seSBzZXRzIHRoZSBkb3QgZG90IHBvaW50ZXIsIGFuZCByZXF1aXJlcyB0aGF0CisgKiBkaXJpbmZvIHN0cnVjdHVyZSBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuCisgKi8KK2ludCBlMmZzY2tfZGlyX2luZm9fc2V0X2RvdGRvdChlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICAgIGV4dDJfaW5vX3QgZG90ZG90KQoreworCXN0cnVjdCBkaXJfaW5mbyAqcDsKKworCXAgPSBlMmZzY2tfZ2V0X2Rpcl9pbmZvKGN0eCwgaW5vKTsKKwlpZiAoIXApCisJCXJldHVybiAxOworCXAtPmRvdGRvdCA9IGRvdGRvdDsKKwllMmZzY2tfcHV0X2Rpcl9pbmZvKGN0eCwgcCk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc2V0cyB0aGUgcGFyZW50IHBvaW50ZXIsIGFuZCByZXF1aXJlcyB0aGF0CisgKiBkaXJpbmZvIHN0cnVjdHVyZSBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuCisgKi8KK2ludCBlMmZzY2tfZGlyX2luZm9fZ2V0X3BhcmVudChlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICAgIGV4dDJfaW5vX3QgKnBhcmVudCkKK3sKKwlzdHJ1Y3QgZGlyX2luZm8gKnA7CisKKwlwID0gZTJmc2NrX2dldF9kaXJfaW5mbyhjdHgsIGlubyk7CisJaWYgKCFwKQorCQlyZXR1cm4gMTsKKwkqcGFyZW50ID0gcC0+cGFyZW50OworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBvbmx5IHNldHMgdGhlIGRvdCBkb3QgcG9pbnRlciwgYW5kIHJlcXVpcmVzIHRoYXQKKyAqIGRpcmluZm8gc3RydWN0dXJlIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4KKyAqLworaW50IGUyZnNja19kaXJfaW5mb19nZXRfZG90ZG90KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICAgZXh0Ml9pbm9fdCAqZG90ZG90KQoreworCXN0cnVjdCBkaXJfaW5mbyAqcDsKKworCXAgPSBlMmZzY2tfZ2V0X2Rpcl9pbmZvKGN0eCwgaW5vKTsKKwlpZiAoIXApCisJCXJldHVybiAxOworCSpkb3Rkb3QgPSBwLT5kb3Rkb3Q7CisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZHhfZGlyaW5mby5jIGIvZTJmc3Byb2dzL2UyZnNjay9keF9kaXJpbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdiNjA1NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svZHhfZGlyaW5mby5jCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogZGlyaW5mby5jIC0tLSBtYWludGFpbnMgdGhlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiB0YWJsZSBmb3IgZTJmc2NrLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZTJmc2NrLmgiCisKKy8qCisgKiBUaGlzIHN1YnJvdXRpbmUgaXMgY2FsbGVkIGR1cmluZyBwYXNzMSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgaW5mbworICogZW50cnkuICBEdXJpbmcgcGFzczEsIHRoZSBwYXNzZWQtaW4gcGFyZW50IGlzIDA7IGl0IHdpbGwgZ2V0IGZpbGxlZAorICogaW4gZHVyaW5nIHBhc3MyLgorICovCit2b2lkIGUyZnNja19hZGRfZHhfZGlyKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGludCBudW1fYmxvY2tzKQoreworCXN0cnVjdCBkeF9kaXJfaW5mbyAqZGlyOworCWludAkJaSwgajsKKwllcnJjb2RlX3QJcmV0dmFsOworCXVuc2lnbmVkIGxvbmcJb2xkX3NpemU7CisKKyNpZiAwCisJcHJpbnRmKCJhZGRfZHhfZGlyX2luZm8gZm9yIGlub2RlICVsdS4uLlxuIiwgaW5vKTsKKyNlbmRpZgorCWlmICghY3R4LT5keF9kaXJfaW5mbykgeworCQljdHgtPmR4X2Rpcl9pbmZvX2NvdW50ID0gMDsKKwkJY3R4LT5keF9kaXJfaW5mb19zaXplID0gMTAwOyAvKiBHdWVzcyAqLworCQljdHgtPmR4X2Rpcl9pbmZvICA9IChzdHJ1Y3QgZHhfZGlyX2luZm8gKikKKwkJCWUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBjdHgtPmR4X2Rpcl9pbmZvX3NpemUKKwkJCQkJICAgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHhfZGlyX2luZm8pLAorCQkJCQkgICAgICAgImRpcmVjdG9yeSBtYXAiKTsKKwl9CisKKwlpZiAoY3R4LT5keF9kaXJfaW5mb19jb3VudCA+PSBjdHgtPmR4X2Rpcl9pbmZvX3NpemUpIHsKKwkJb2xkX3NpemUgPSBjdHgtPmR4X2Rpcl9pbmZvX3NpemUgKiBzaXplb2Yoc3RydWN0IGR4X2Rpcl9pbmZvKTsKKwkJY3R4LT5keF9kaXJfaW5mb19zaXplICs9IDEwOworCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX21lbShvbGRfc2l6ZSwgY3R4LT5keF9kaXJfaW5mb19zaXplICoKKwkJCQkJICAgc2l6ZW9mKHN0cnVjdCBkeF9kaXJfaW5mbyksCisJCQkJCSAgICZjdHgtPmR4X2Rpcl9pbmZvKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCByZWFsbG9jYXRlIGR4X2Rpcl9pbmZvICIKKwkJCQkic3RydWN0dXJlIHRvICVkIGVudHJpZXNcbiIsCisJCQkJY3R4LT5keF9kaXJfaW5mb19zaXplKTsKKwkJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJCQljdHgtPmR4X2Rpcl9pbmZvX3NpemUgLT0gMTA7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwkvKgorCSAqIE5vcm1hbGx5LCBhZGRfZHhfZGlyX2luZm8gaXMgY2FsbGVkIHdpdGggZWFjaCBpbm9kZSBpbgorCSAqIHNlcXVlbnRpYWwgb3JkZXI7IGJ1dCBvbmNlIGluIGEgd2hpbGUgKGxpa2Ugd2hlbiBwYXNzIDMKKwkgKiBuZWVkcyB0byByZWNyZWF0ZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb3IgbG9zdCtmb3VuZAorCSAqIGRpcmVjdG9yeSkgaXQgaXMgY2FsbGVkIG91dCBvZiBvcmRlci4gIEluIHRob3NlIGNhc2VzLCB3ZQorCSAqIG5lZWQgdG8gbW92ZSB0aGUgZHhfZGlyX2luZm8gZW50cmllcyBkb3duIHRvIG1ha2Ugcm9vbSwgc2luY2UKKwkgKiB0aGUgZHhfZGlyX2luZm8gYXJyYXkgbmVlZHMgdG8gYmUgc29ydGVkIGJ5IGlub2RlIG51bWJlciBmb3IKKwkgKiBnZXRfZHhfZGlyX2luZm8oKSdzIHNha2UuCisJICovCisJaWYgKGN0eC0+ZHhfZGlyX2luZm9fY291bnQgJiYKKwkgICAgY3R4LT5keF9kaXJfaW5mb1tjdHgtPmR4X2Rpcl9pbmZvX2NvdW50LTFdLmlubyA+PSBpbm8pIHsKKwkJZm9yIChpID0gY3R4LT5keF9kaXJfaW5mb19jb3VudC0xOyBpID4gMDsgaS0tKQorCQkJaWYgKGN0eC0+ZHhfZGlyX2luZm9baS0xXS5pbm8gPCBpbm8pCisJCQkJYnJlYWs7CisJCWRpciA9ICZjdHgtPmR4X2Rpcl9pbmZvW2ldOworCQlpZiAoZGlyLT5pbm8gIT0gaW5vKQorCQkJZm9yIChqID0gY3R4LT5keF9kaXJfaW5mb19jb3VudCsrOyBqID4gaTsgai0tKQorCQkJCWN0eC0+ZHhfZGlyX2luZm9bal0gPSBjdHgtPmR4X2Rpcl9pbmZvW2otMV07CisJfSBlbHNlCisJCWRpciA9ICZjdHgtPmR4X2Rpcl9pbmZvW2N0eC0+ZHhfZGlyX2luZm9fY291bnQrK107CisKKwlkaXItPmlubyA9IGlubzsKKwlkaXItPm51bWJsb2NrcyA9IG51bV9ibG9ja3M7CisJZGlyLT5oYXNodmVyc2lvbiA9IDA7CisJZGlyLT5keF9ibG9jayA9IGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBudW1fYmxvY2tzCisJCQkJICAgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHhfZGlyYmxvY2tfaW5mbyksCisJCQkJICAgICAgICJkeF9ibG9jayBpbmZvIGFycmF5Iik7CisKK30KKworLyoKKyAqIGdldF9keF9kaXJfaW5mbygpIC0tLSBnaXZlbiBhbiBpbm9kZSBudW1iZXIsIHRyeSB0byBmaW5kIHRoZSBkaXJlY3RvcnkKKyAqIGluZm9ybWF0aW9uIGVudHJ5IGZvciBpdC4KKyAqLworc3RydWN0IGR4X2Rpcl9pbmZvICplMmZzY2tfZ2V0X2R4X2Rpcl9pbmZvKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJaW50CWxvdywgaGlnaCwgbWlkOworCisJbG93ID0gMDsKKwloaWdoID0gY3R4LT5keF9kaXJfaW5mb19jb3VudC0xOworCWlmICghY3R4LT5keF9kaXJfaW5mbykKKwkJcmV0dXJuIDA7CisJaWYgKGlubyA9PSBjdHgtPmR4X2Rpcl9pbmZvW2xvd10uaW5vKQorCQlyZXR1cm4gJmN0eC0+ZHhfZGlyX2luZm9bbG93XTsKKwlpZiAgKGlubyA9PSBjdHgtPmR4X2Rpcl9pbmZvW2hpZ2hdLmlubykKKwkJcmV0dXJuICZjdHgtPmR4X2Rpcl9pbmZvW2hpZ2hdOworCisJd2hpbGUgKGxvdyA8IGhpZ2gpIHsKKwkJbWlkID0gKGxvdytoaWdoKS8yOworCQlpZiAobWlkID09IGxvdyB8fCBtaWQgPT0gaGlnaCkKKwkJCWJyZWFrOworCQlpZiAoaW5vID09IGN0eC0+ZHhfZGlyX2luZm9bbWlkXS5pbm8pCisJCQlyZXR1cm4gJmN0eC0+ZHhfZGlyX2luZm9bbWlkXTsKKwkJaWYgKGlubyA8IGN0eC0+ZHhfZGlyX2luZm9bbWlkXS5pbm8pCisJCQloaWdoID0gbWlkOworCQllbHNlCisJCQlsb3cgPSBtaWQ7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogRnJlZSB0aGUgZHhfZGlyX2luZm8gc3RydWN0dXJlIHdoZW4gaXQgaXNuJ3QgbmVlZGVkIGFueSBtb3JlLgorICovCit2b2lkIGUyZnNja19mcmVlX2R4X2Rpcl9pbmZvKGUyZnNja190IGN0eCkKK3sKKwlpbnQJaTsKKwlzdHJ1Y3QgZHhfZGlyX2luZm8gKmRpcjsKKworCWlmIChjdHgtPmR4X2Rpcl9pbmZvKSB7CisJCWRpciA9IGN0eC0+ZHhfZGlyX2luZm87CisJCWZvciAoaT0wOyBpIDwgY3R4LT5keF9kaXJfaW5mb19jb3VudDsgaSsrLGRpcisrKSB7CisJCQlpZiAoZGlyLT5keF9ibG9jaykgeworCQkJCWV4dDJmc19mcmVlX21lbSgmZGlyLT5keF9ibG9jayk7CisJCQkJZGlyLT5keF9ibG9jayA9IDA7CisJCQl9CisJCX0KKwkJZXh0MmZzX2ZyZWVfbWVtKCZjdHgtPmR4X2Rpcl9pbmZvKTsKKwkJY3R4LT5keF9kaXJfaW5mbyA9IDA7CisJfQorCWN0eC0+ZHhfZGlyX2luZm9fc2l6ZSA9IDA7CisJY3R4LT5keF9kaXJfaW5mb19jb3VudCA9IDA7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGNvdW50IG9mIG51bWJlciBvZiBkaXJlY3RvcmllcyBpbiB0aGUgZHhfZGlyX2luZm8gc3RydWN0dXJlCisgKi8KK2ludCBlMmZzY2tfZ2V0X251bV9keF9kaXJpbmZvKGUyZnNja190IGN0eCkKK3sKKwlyZXR1cm4gY3R4LT5keF9kaXJfaW5mb19jb3VudDsKK30KKworLyoKKyAqIEEgc2ltcGxlIGludGVyYXRvciBmdW5jdGlvbgorICovCitzdHJ1Y3QgZHhfZGlyX2luZm8gKmUyZnNja19keF9kaXJfaW5mb19pdGVyKGUyZnNja190IGN0eCwgaW50ICpjb250cm9sKQoreworCWlmICgqY29udHJvbCA+PSBjdHgtPmR4X2Rpcl9pbmZvX2NvdW50KQorCQlyZXR1cm4gMDsKKworCXJldHVybihjdHgtPmR4X2Rpcl9pbmZvICsgKCpjb250cm9sKSsrKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZTJmc2NrLjguaW4gYi9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay44LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxNTI3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay44LmluCkBAIC0wLDAgKzEsNDYwIEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlwiIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1IGJ5IFRoZW9kb3JlIFRzJ28uICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlRIIEUyRlNDSyA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitlMmZzY2sgXC0gY2hlY2sgYSBMaW51eCBleHQyL2V4dDMvZXh0NCBmaWxlIHN5c3RlbQorLlNIIFNZTk9QU0lTCisuQiBlMmZzY2sKK1sKKy5CIFwtcGFjbnlyZGZrdnRERlYKK10KK1sKKy5CIFwtYgorLkkgc3VwZXJibG9jaworXQorWworLkIgXC1CCisuSSBibG9ja3NpemUKK10KK1sKKy5CUiBcLWwgfCBcLUwKKy5JIGJhZF9ibG9ja3NfZmlsZQorXQorWworLkIgXC1DCisuSSBmZAorXQorQEpERVZAWworQEpERVZALkIgXC1qCitASkRFVkAuSSBleHRlcm5hbC1qb3VybmFsCitASkRFVkBdCitbCisuQiBcLUUKKy5JIGV4dGVuZGVkX29wdGlvbnMKK10KK1sKKy5CIFwtegorLkkgdW5kb19maWxlCitdCisuSSBkZXZpY2UKKy5TSCBERVNDUklQVElPTgorLkIgZTJmc2NrCitpcyB1c2VkIHRvIGNoZWNrIHRoZSBleHQyL2V4dDMvZXh0NCBmYW1pbHkgb2YgZmlsZSBzeXN0ZW1zLiAgIAorRm9yIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbXMgdGhhdCB1c2UgYSBqb3VybmFsLCBpZiB0aGUgc3lzdGVtIGhhcyBiZWVuCitzaHV0IGRvd24gdW5jbGVhbmx5IHdpdGhvdXQgYW55IGVycm9ycywgbm9ybWFsbHksIGFmdGVyIHJlcGxheWluZyB0aGUKK2NvbW1pdHRlZCB0cmFuc2FjdGlvbnMgIGluIHRoZSBqb3VybmFsLCB0aGUgZmlsZSBzeXN0ZW0gc2hvdWxkIGJlCittYXJrZWQgYXMgY2xlYW4uICAgSGVuY2UsIGZvciBmaWxlc3lzdGVtcyB0aGF0IHVzZSBqb3VybmFsbGluZywKKy5CIGUyZnNjaword2lsbCBub3JtYWxseSByZXBsYXkgdGhlIGpvdXJuYWwgYW5kIGV4aXQsIHVubGVzcyBpdHMgc3VwZXJibG9jaworaW5kaWNhdGVzIHRoYXQgZnVydGhlciBjaGVja2luZyBpcyByZXF1aXJlZC4KKy5QUAorLkkgZGV2aWNlCitpcyBhIGJsb2NrIGRldmljZSAoZS5nLiwgCisuSVIgL2Rldi9zZGMxICkKK29yIGZpbGUgY29udGFpbmluZyB0aGUgZmlsZSBzeXN0ZW0uCisuUFAKK05vdGUgdGhhdCBpbiBnZW5lcmFsIGl0IGlzIG5vdCBzYWZlIHRvIHJ1bgorLkIgZTJmc2NrCitvbiBtb3VudGVkIGZpbGVzeXN0ZW1zLiAgVGhlIG9ubHkgZXhjZXB0aW9uIGlzIGlmIHRoZQorLkIgXC1uCitvcHRpb24gaXMgc3BlY2lmaWVkLCBhbmQgCisuQlIgXC1jICwgCisuQlIgXC1sICwKK29yCisuQiAtTAorb3B0aW9ucyBhcmUgCisuSSBub3QKK3NwZWNpZmllZC4gICBIb3dldmVyLCBldmVuIGlmIGl0IGlzIHNhZmUgdG8gZG8gc28sIHRoZSByZXN1bHRzIHByaW50ZWQgYnkKKy5CIGUyZnNjaworYXJlIG5vdCB2YWxpZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIAorLkIgZTJmc2NrCithc2tzIHdoZXRoZXIgb3Igbm90IHlvdSBzaG91bGQgY2hlY2sgYSBmaWxlc3lzdGVtIHdoaWNoIGlzIG1vdW50ZWQsIAordGhlIG9ubHkgY29ycmVjdCBhbnN3ZXIgaXMgYGBubycnLiAgT25seSBleHBlcnRzIHdobyByZWFsbHkga25vdyB3aGF0Cit0aGV5IGFyZSBkb2luZyBzaG91bGQgY29uc2lkZXIgYW5zd2VyaW5nIHRoaXMgcXVlc3Rpb24gaW4gYW55IG90aGVyIHdheS4KKy5QUAorSWYKKy5CIGUyZnNjaworaXMgcnVuIGluIGludGVyYWN0aXZlIG1vZGUgKG1lYW5pbmcgdGhhdCBub25lIG9mCisuQlIgXC15ICwKKy5CUiBcLW4gLAorb3IKKy5CUiBcLXAKK2FyZSBzcGVjaWZpZWQpLCB0aGUgcHJvZ3JhbSB3aWxsIGFzayB0aGUgdXNlciB0byBmaXggZWFjaCBwcm9ibGVtIGZvdW5kIGluIHRoZQorZmlsZXN5c3RlbS4gIEEgcmVzcG9uc2Ugb2YgJ3knIHdpbGwgZml4IHRoZSBlcnJvcjsgJ24nIHdpbGwgbGVhdmUgdGhlIGVycm9yCit1bmZpeGVkOyBhbmQgJ2EnIHdpbGwgZml4IHRoZSBwcm9ibGVtIGFuZCBhbGwgc3Vic2VxdWVudCBwcm9ibGVtczsgcHJlc3NpbmcKK0VudGVyIHdpbGwgcHJvY2VlZCB3aXRoIHRoZSBkZWZhdWx0IHJlc3BvbnNlLCB3aGljaCBpcyBwcmludGVkIGJlZm9yZSB0aGUKK3F1ZXN0aW9uIG1hcmsuICBQcmVzc2luZyBDb250cm9sLUMgdGVybWluYXRlcyBlMmZzY2sgaW1tZWRpYXRlbHkuCisuU0ggT1BUSU9OUworLlRQCisuQiBcLWEgCitUaGlzIG9wdGlvbiBkb2VzIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSAKKy5CIFwtcAorb3B0aW9uLiAgSXQgaXMgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHk7IGl0IGlzCitzdWdnZXN0ZWQgdGhhdCBwZW9wbGUgdXNlIAorLkIgXC1wIAorb3B0aW9uIHdoZW5ldmVyIHBvc3NpYmxlLgorLlRQCisuQkkgXC1iICIgc3VwZXJibG9jayIKK0luc3RlYWQgb2YgdXNpbmcgdGhlIG5vcm1hbCBzdXBlcmJsb2NrLCB1c2UgYW4gYWx0ZXJuYXRpdmUgc3VwZXJibG9jaworc3BlY2lmaWVkIGJ5IAorLklSIHN1cGVyYmxvY2sgLgorVGhpcyBvcHRpb24gaXMgbm9ybWFsbHkgdXNlZCB3aGVuIHRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgaGFzIGJlZW4KK2NvcnJ1cHRlZC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgYmFja3VwIHN1cGVyYmxvY2sgaXMgZGVwZW5kZW50IG9uIHRoZQorZmlsZXN5c3RlbSdzIGJsb2Nrc2l6ZS4gIEZvciBmaWxlc3lzdGVtcyB3aXRoIDFrIGJsb2Nrc2l6ZXMsIGEgYmFja3VwCitzdXBlcmJsb2NrIGNhbiBiZSBmb3VuZCBhdCBibG9jayA4MTkzOyBmb3IgZmlsZXN5c3RlbXMgd2l0aCAyaworYmxvY2tzaXplcywgYXQgYmxvY2sgMTYzODQ7IGFuZCBmb3IgNGsgYmxvY2tzaXplcywgYXQgYmxvY2sgMzI3NjguICAKKy5JUAorQWRkaXRpb25hbCBiYWNrdXAgc3VwZXJibG9ja3MgY2FuIGJlIGRldGVybWluZWQgYnkgdXNpbmcgdGhlIAorLkIgbWtlMmZzIAorcHJvZ3JhbSB1c2luZyB0aGUgCisuQiBcLW4KK29wdGlvbiB0byBwcmludCBvdXQgd2hlcmUgdGhlIHN1cGVyYmxvY2tzIHdlcmUgY3JlYXRlZC4gICBUaGUgCisuQiBcLWIgCitvcHRpb24gdG8gCisuQlIgbWtlMmZzICwKK3doaWNoIHNwZWNpZmllcyBibG9ja3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0gbXVzdCBiZSBzcGVjaWZpZWQgaW4gb3JkZXIKK2ZvciB0aGUgc3VwZXJibG9jayBsb2NhdGlvbnMgdGhhdCBhcmUgcHJpbnRlZCBvdXQgdG8gYmUgYWNjdXJhdGUuCisuSVAKK0lmIGFuIGFsdGVybmF0aXZlIHN1cGVyYmxvY2sgaXMgc3BlY2lmaWVkIGFuZCAgCit0aGUgZmlsZXN5c3RlbSBpcyBub3Qgb3BlbmVkIHJlYWQtb25seSwgZTJmc2NrIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlCitwcmltYXJ5IHN1cGVyYmxvY2sgaXMgdXBkYXRlZCBhcHByb3ByaWF0ZWx5IHVwb24gY29tcGxldGlvbiBvZiB0aGUgCitmaWxlc3lzdGVtIGNoZWNrLgorLlRQCisuQkkgXC1CICIgYmxvY2tzaXplIgorTm9ybWFsbHksIAorLkIgZTJmc2NrCit3aWxsIHNlYXJjaCBmb3IgdGhlIHN1cGVyYmxvY2sgYXQgdmFyaW91cyBkaWZmZXJlbnQKK2Jsb2NrIHNpemVzIGluIGFuIGF0dGVtcHQgdG8gZmluZCB0aGUgYXBwcm9wcmlhdGUgYmxvY2sgc2l6ZS4KK1RoaXMgc2VhcmNoIGNhbiBiZSBmb29sZWQgaW4gc29tZSBjYXNlcy4gIFRoaXMgb3B0aW9uIGZvcmNlcyAKKy5CIGUyZnNjawordG8gb25seSB0cnkgbG9jYXRpbmcgdGhlIHN1cGVyYmxvY2sgYXQgYSBwYXJ0aWN1bGFyIGJsb2Nrc2l6ZS4KK0lmIHRoZSBzdXBlcmJsb2NrIGlzIG5vdCBmb3VuZCwgCisuQiBlMmZzY2sgCit3aWxsIHRlcm1pbmF0ZSB3aXRoIGEgZmF0YWwgZXJyb3IuCisuVFAKKy5CIFwtYworVGhpcyBvcHRpb24gY2F1c2VzIAorLkIgZTJmc2NrIAordG8gdXNlIAorLkJSIGJhZGJsb2NrcyAoOCkKK3Byb2dyYW0gdG8gZG8gYSByZWFkLW9ubHkgc2NhbiBvZiB0aGUgZGV2aWNlIGluIG9yZGVyIHRvIGZpbmQgYW55IGJhZAorYmxvY2tzLiAgSWYgYW55IGJhZCBibG9ja3MgYXJlIGZvdW5kLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgYmFkIGJsb2NrCitpbm9kZSB0byBwcmV2ZW50IHRoZW0gZnJvbSBiZWluZyBhbGxvY2F0ZWQgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeS4gIElmCit0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQgdHdpY2UsIHRoZW4gdGhlIGJhZCBibG9jayBzY2FuIHdpbGwgYmUgZG9uZQordXNpbmcgYSBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0LgorLlRQCisuQkkgXC1DICIgZmQiCitUaGlzIG9wdGlvbiBjYXVzZXMKKy5CIGUyZnNjawordG8gd3JpdGUgY29tcGxldGlvbiBpbmZvcm1hdGlvbiB0byB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvciAKK3NvIHRoYXQgdGhlIHByb2dyZXNzIG9mIHRoZSBmaWxlc3lzdGVtIAorY2hlY2sgY2FuIGJlIG1vbml0b3JlZC4gIFRoaXMgb3B0aW9uIGlzIHR5cGljYWxseSB1c2VkIGJ5IHByb2dyYW1zIAord2hpY2ggYXJlIHJ1bm5pbmcKKy5CUiBlMmZzY2sgLgorSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBudW1iZXIgaXMgbmVnYXRpdmUsIHRoZW4gYWJzb2x1dGUgdmFsdWUgb2YKK3RoZSBmaWxlIGRlc2NyaXB0b3Igd2lsbCBiZSB1c2VkLCBhbmQgdGhlIHByb2dyZXNzIGluZm9ybWF0aW9uIHdpbGwgYmUKK3N1cHByZXNzZWQgaW5pdGlhbGx5LiAgSXQgY2FuIGxhdGVyIGJlIGVuYWJsZWQgYnkgc2VuZGluZyB0aGUKKy5CIGUyZnNjaworcHJvY2VzcyBhIFNJR1VTUjEgc2lnbmFsLgorSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBzcGVjaWZpZWQgaXMgMCwgCisuQiBlMmZzY2sKK3dpbGwgcHJpbnQgYSBjb21wbGV0aW9uIGJhciBhcyBpdCBnb2VzIGFib3V0IGl0cyBidXNpbmVzcy4gIFRoaXMgcmVxdWlyZXMKK3RoYXQgZTJmc2NrIGlzIHJ1bm5pbmcgb24gYSB2aWRlbyBjb25zb2xlIG9yIHRlcm1pbmFsLgorLlRQCisuQiBcLWQKK1ByaW50IGRlYnVnZ2luZyBvdXRwdXQgKHVzZWxlc3MgdW5sZXNzIHlvdSBhcmUgZGVidWdnaW5nCisuQlIgZTJmc2NrICkuCisuVFAKKy5CIFwtRAorT3B0aW1pemUgZGlyZWN0b3JpZXMgaW4gZmlsZXN5c3RlbS4gIFRoaXMgb3B0aW9uIGNhdXNlcyBlMmZzY2sgdG8KK3RyeSB0byBvcHRpbWl6ZSBhbGwgZGlyZWN0b3JpZXMsIGVpdGhlciBieSByZWluZGV4aW5nIHRoZW0gaWYgdGhlCitmaWxlc3lzdGVtIHN1cHBvcnRzIGRpcmVjdG9yeSBpbmRleGluZywgIG9yIGJ5IHNvcnRpbmcgYW5kIGNvbXByZXNzaW5nCitkaXJlY3RvcmllcyBmb3Igc21hbGxlciBkaXJlY3Rvcmllcywgb3IgZm9yIGZpbGVzeXN0ZW1zIHVzaW5nCit0cmFkaXRpb25hbCBsaW5lYXIgZGlyZWN0b3JpZXMuCisuSVAKK0V2ZW4gd2l0aG91dCB0aGUKKy5CIFwtRAorb3B0aW9uLAorLkIgZTJmc2NrCittYXkgc29tZXRpbWVzIG9wdGltaXplIGEgZmV3IGRpcmVjdG9yaWVzIC0tLSBmb3IgZXhhbXBsZSwgaWYKK2RpcmVjdG9yeSBpbmRleGluZyBpcyBlbmFibGVkIGFuZCBhIGRpcmVjdG9yeSBpcyBub3QgaW5kZXhlZCBhbmQgd291bGQKK2JlbmVmaXQgZnJvbSBiZWluZyBpbmRleGVkLCBvciBpZiB0aGUgaW5kZXggc3RydWN0dXJlcyBhcmUgY29ycnVwdGVkCithbmQgbmVlZCB0byBiZSByZWJ1aWx0LiAgVGhlCisuQiBcLUQKK29wdGlvbiBmb3JjZXMgYWxsIGRpcmVjdG9yaWVzIGluIHRoZSBmaWxlc3lzdGVtIHRvIGJlIG9wdGltaXplZC4gIFRoaXMgY2FuCitzb21ldGltZXMgbWFrZSB0aGVtIGEgbGl0dGxlIHNtYWxsZXIgYW5kIHNsaWdodGx5IGZhc3RlciB0byBzZWFyY2gsIGJ1dAoraW4gcHJhY3RpY2UsIHlvdSBzaG91bGQgcmFyZWx5IG5lZWQgdG8gdXNlIHRoaXMgb3B0aW9uLgorLklQCitUaGUKKy5CIFwtRAorb3B0aW9uIHdpbGwgZGV0ZWN0IGRpcmVjdG9yeSBlbnRyaWVzIHdpdGggZHVwbGljYXRlIG5hbWVzIGluIGEgc2luZ2xlCitkaXJlY3RvcnksIHdoaWNoIGUyZnNjayBub3JtYWxseSBkb2VzIG5vdCBlbmZvcmNlIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorLlRQCisuQkkgXC1FICIgZXh0ZW5kZWRfb3B0aW9ucyIKK1NldCBlMmZzY2sgZXh0ZW5kZWQgb3B0aW9ucy4gIEV4dGVuZGVkIG9wdGlvbnMgYXJlIGNvbW1hCitzZXBhcmF0ZWQsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB1c2luZyB0aGUgZXF1YWxzICgnPScpIHNpZ24uICBUaGUgCitmb2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorLlJTIDEuMmkKKy5UUAorLkJJIGVhX3Zlcj0gZXh0ZW5kZWRfYXR0cmlidXRlX3ZlcnNpb24KK1NldCB0aGUgdmVyc2lvbiBvZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrcyB3aGljaAorLkIgZTJmc2NrCit3aWxsIHJlcXVpcmUgd2hpbGUgY2hlY2tpbmcgdGhlIGZpbGVzeXN0ZW0uICBUaGUgdmVyc2lvbiBudW1iZXIgbWF5IAorYmUgMSBvciAyLiAgVGhlIGRlZmF1bHQgZXh0ZW5kZWQgYXR0cmlidXRlIHZlcnNpb24gZm9ybWF0IGlzIDIuCisuVFAKKy5CSSBqb3VybmFsX29ubHkKK09ubHkgcmVwbGF5IHRoZSBqb3VybmFsIGlmIHJlcXVpcmVkLCBidXQgZG8gbm90IHBlcmZvcm0gYW55IGZ1cnRoZXIgY2hlY2tzCitvciByZXBhaXJzLgorLlRQCisuQkkgZnJhZ2NoZWNrCitEdXJpbmcgcGFzcyAxLCBwcmludCBhIGRldGFpbGVkIHJlcG9ydCBvZiBhbnkgZGlzY29udGlndW91cyBibG9ja3MgZm9yCitmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbS4KKy5UUAorLkJJIGRpc2NhcmQKK0F0dGVtcHQgdG8gZGlzY2FyZCBmcmVlIGJsb2NrcyBhbmQgdW51c2VkIGlub2RlIGJsb2NrcyBhZnRlciB0aGUgZnVsbAorZmlsZXN5c3RlbSBjaGVjayAoZGlzY2FyZGluZyBibG9ja3MgaXMgdXNlZnVsIG9uIHNvbGlkIHN0YXRlIGRldmljZXMgYW5kIHNwYXJzZQorLyB0aGluLXByb3Zpc2lvbmVkIHN0b3JhZ2UpLiBOb3RlIHRoYXQgZGlzY2FyZCBpcyBkb25lIGluIHBhc3MgNSBBRlRFUiB0aGUKK2ZpbGVzeXN0ZW0gaGFzIGJlZW4gZnVsbHkgY2hlY2tlZCBhbmQgb25seSBpZiBpdCBkb2VzIG5vdCBjb250YWluIHJlY29nbml6YWJsZQorZXJyb3JzLiBIb3dldmVyIHRoZXJlIG1pZ2h0IGJlIGNhc2VzIHdoZXJlCisuQiBlMmZzY2sKK2RvZXMgbm90IGZ1bGx5IHJlY29nbml6ZSBhIHByb2JsZW0gYW5kIGhlbmNlIGluIHRoaXMgY2FzZSB0aGlzCitvcHRpb24gbWF5IHByZXZlbnQgeW91IGZyb20gZnVydGhlciBtYW51YWwgZGF0YSByZWNvdmVyeS4KKy5UUAorLkJJIG5vZGlzY2FyZAorRG8gbm90IGF0dGVtcHQgdG8gZGlzY2FyZCBmcmVlIGJsb2NrcyBhbmQgdW51c2VkIGlub2RlIGJsb2Nrcy4gVGhpcyBvcHRpb24gaXMKK2V4YWN0bHkgdGhlIG9wcG9zaXRlIG9mIGRpc2NhcmQgb3B0aW9uLiBUaGlzIGlzIHNldCBhcyBkZWZhdWx0LgorLlRQCisuQkkgcmVhZGFoZWFkX2tiCitVc2UgdGhpcyBtYW55IEtpQiBvZiBtZW1vcnkgdG8gcHJlLWZldGNoIG1ldGFkYXRhIGluIHRoZSBob3BlcyBvZiByZWR1Y2luZworZTJmc2NrIHJ1bnRpbWUuICBCeSBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byB0aGUgc2l6ZSBvZiB0d28gYmxvY2sgZ3JvdXBzJyBpbm9kZQordGFibGVzICh0eXBpY2FsbHkgNE1pQiBvbiBhIHJlZ3VsYXIgZXh0NCBmaWxlc3lzdGVtKTsgaWYgdGhpcyBhbW91bnQgaXMgbW9yZQordGhhbiAxLzUwdGggb2YgdG90YWwgcGh5c2ljYWwgbWVtb3J5LCByZWFkYWhlYWQgaXMgZGlzYWJsZWQuICBTZXQgdGhpcyB0byB6ZXJvCit0byBkaXNhYmxlIHJlYWRhaGVhZCBlbnRpcmVseS4KKy5UUAorLkJJIGJtYXAyZXh0ZW50CitDb252ZXJ0IGJsb2NrLW1hcHBlZCBmaWxlcyB0byBleHRlbnQtbWFwcGVkIGZpbGVzLgorLlRQCisuQkkgZml4ZXNfb25seQorT25seSBmaXggZGFtYWdlZCBtZXRhZGF0YTsgZG8gbm90IG9wdGltaXplIGh0cmVlIGRpcmVjdG9yaWVzIG9yIGNvbXByZXNzCitleHRlbnQgdHJlZXMuICBUaGlzIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgLUQgYW5kIC1FIGJtYXAyZXh0ZW50CitvcHRpb25zLgorLlJFCisuVFAKKy5CIFwtZgorRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiB0aGUgZmlsZSBzeXN0ZW0gc2VlbXMgY2xlYW4uCisuVFAKKy5CIFwtRgorRmx1c2ggdGhlIGZpbGVzeXN0ZW0gZGV2aWNlJ3MgYnVmZmVyIGNhY2hlcyBiZWZvcmUgYmVnaW5uaW5nLiAgT25seQorcmVhbGx5IHVzZWZ1bCBmb3IgZG9pbmcgCisuQiBlMmZzY2sgCit0aW1lIHRyaWFscy4KK0BKREVWQC5UUAorQEpERVZALkJJIFwtaiAiIGV4dGVybmFsLWpvdXJuYWwiCitASkRFVkBTZXQgdGhlIHBhdGhuYW1lIHdoZXJlIHRoZSBleHRlcm5hbC1qb3VybmFsIGZvciB0aGlzIGZpbGVzeXN0ZW0gY2FuIGJlCitASkRFVkBmb3VuZC4KKy5UUAorLkJJIFwtaworV2hlbiBjb21iaW5lZCB3aXRoIHRoZSAKKy5CIFwtYworb3B0aW9uLCBhbnkgZXhpc3RpbmcgYmFkIGJsb2NrcyBpbiB0aGUgYmFkIGJsb2NrcyBsaXN0IGFyZSBwcmVzZXJ2ZWQsCithbmQgYW55IG5ldyBiYWQgYmxvY2tzIGZvdW5kIGJ5IHJ1bm5pbmcKKy5CUiBiYWRibG9ja3MgKDgpIAord2lsbCBiZSBhZGRlZCB0byB0aGUgZXhpc3RpbmcgYmFkIGJsb2NrcyBsaXN0LgorLlRQCisuQkkgXC1sICIgZmlsZW5hbWUiCitBZGQgdGhlIGJsb2NrIG51bWJlcnMgbGlzdGVkIGluIHRoZSBmaWxlIHNwZWNpZmllZCBieSAKKy5JIGZpbGVuYW1lCit0byB0aGUgbGlzdCBvZiBiYWQgYmxvY2tzLiAgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgdGhlIHNhbWUgYXMgdGhlCitvbmUgZ2VuZXJhdGVkIGJ5IHRoZSAKKy5CUiBiYWRibG9ja3MgKDgpCitwcm9ncmFtLiAgTm90ZSB0aGF0IHRoZSBibG9jayBudW1iZXJzIGFyZSBiYXNlZCBvbiB0aGUgYmxvY2tzaXplCitvZiB0aGUgZmlsZXN5c3RlbS4gIEhlbmNlLCAKKy5CUiBiYWRibG9ja3MgKDgpCittdXN0IGJlIGdpdmVuIHRoZSBibG9ja3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0gaW4gb3JkZXIgdG8gb2J0YWluIGNvcnJlY3QKK3Jlc3VsdHMuICBBcyBhIHJlc3VsdCwgaXQgaXMgbXVjaCBzaW1wbGVyIGFuZCBzYWZlciB0byB1c2UgdGhlIAorLkIgLWMKK29wdGlvbiB0byAKKy5CUiBlMmZzY2sgLAorc2luY2UgaXQgd2lsbCBhc3N1cmUgdGhhdCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzIGFyZSBwYXNzZWQgdG8gdGhlCisuQiBiYWRibG9ja3MKK3Byb2dyYW0uCisuVFAKKy5CSSBcLUwgIiBmaWxlbmFtZSIKK1NldCB0aGUgYmFkIGJsb2NrcyBsaXN0IHRvIGJlIHRoZSBsaXN0IG9mIGJsb2NrcyBzcGVjaWZpZWQgYnkgCisuSVIgZmlsZW5hbWUgLgorKFRoaXMgb3B0aW9uIGlzIHRoZSBzYW1lIGFzIHRoZSAKKy5CIFwtbAorb3B0aW9uLCBleGNlcHQgdGhlIGJhZCBibG9ja3MgbGlzdCBpcyBjbGVhcmVkIGJlZm9yZSB0aGUgYmxvY2tzIGxpc3RlZAoraW4gdGhlIGZpbGUgYXJlIGFkZGVkIHRvIHRoZSBiYWQgYmxvY2tzIGxpc3QuKQorLlRQCisuQiBcLW4KK09wZW4gdGhlIGZpbGVzeXN0ZW0gcmVhZC1vbmx5LCBhbmQgYXNzdW1lIGFuIGFuc3dlciBvZiBgbm8nIHRvIGFsbAorcXVlc3Rpb25zLiAgQWxsb3dzCisuQiBlMmZzY2sKK3RvIGJlIHVzZWQgbm9uLWludGVyYWN0aXZlbHkuICBUaGlzIG9wdGlvbgorbWF5IG5vdCBiZSBzcGVjaWZpZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgCisuQiBcLXAKK29yCisuQiBcLXkKK29wdGlvbnMuCisuVFAKKy5CIFwtcAorQXV0b21hdGljYWxseSByZXBhaXIgKCJwcmVlbiIpIHRoZSBmaWxlIHN5c3RlbS4gIFRoaXMgb3B0aW9uIHdpbGwgY2F1c2UKKy5CIGUyZnNjawordG8gYXV0b21hdGljYWxseQorZml4IGFueSBmaWxlc3lzdGVtIHByb2JsZW1zIHRoYXQgY2FuIGJlIHNhZmVseSBmaXhlZCB3aXRob3V0IGh1bWFuCitpbnRlcnZlbnRpb24uICBJZiAKKy5CIGUyZnNjaworZGlzY292ZXJzIGEgcHJvYmxlbSB3aGljaCBtYXkgcmVxdWlyZSB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IKK3RvIHRha2UgYWRkaXRpb25hbCBjb3JyZWN0aXZlIGFjdGlvbiwgCisuQiBlMmZzY2sKK3dpbGwgcHJpbnQgYSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbSBhbmQgdGhlbiBleGl0IHdpdGggdGhlIHZhbHVlIDQKK2xvZ2ljYWxseSBvcidlZCBpbnRvIHRoZSBleGl0IGNvZGUuICAoU2VlIHRoZSBcZkJFWElUIENPREVcZlIgc2VjdGlvbi4pCitUaGlzIG9wdGlvbiBpcyBub3JtYWxseSB1c2VkIGJ5IHRoZSBzeXN0ZW0ncyBib290IHNjcmlwdHMuICBJdCBtYXkgbm90IAorYmUgc3BlY2lmaWVkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlCisuQiBcLW4KK29yCisuQiBcLXkKK29wdGlvbnMuCisuVFAKKy5CIFwtcgorVGhpcyBvcHRpb24gZG9lcyBub3RoaW5nIGF0IGFsbDsgaXQgaXMgcHJvdmlkZWQgb25seSBmb3IgYmFja3dhcmRzCitjb21wYXRpYmlsaXR5LgorLlRQCisuQiBcLXQKK1ByaW50IHRpbWluZyBzdGF0aXN0aWNzIGZvcgorLkJSIGUyZnNjayAuCitJZiB0aGlzIG9wdGlvbiBpcyB1c2VkIHR3aWNlLCBhZGRpdGlvbmFsIHRpbWluZyBzdGF0aXN0aWNzIGFyZSBwcmludGVkCitvbiBhIHBhc3MgYnkgcGFzcyBiYXNpcy4KKy5UUAorLkIgXC12CitWZXJib3NlIG1vZGUuCisuVFAKKy5CIFwtVgorUHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdC4KKy5UUAorLkIgXC15CitBc3N1bWUgYW4gYW5zd2VyIG9mIGB5ZXMnIHRvIGFsbCBxdWVzdGlvbnM7IGFsbG93cyAKKy5CIGUyZnNjawordG8gYmUgdXNlZCBub24taW50ZXJhY3RpdmVseS4gIFRoaXMgb3B0aW9uCittYXkgbm90IGJlIHNwZWNpZmllZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAKKy5CIFwtbgorb3IKKy5CIFwtcAorb3B0aW9ucy4KKy5UUAorLkJJIFwteiAiIHVuZG9fZmlsZSIKK0JlZm9yZSBvdmVyd3JpdGluZyBhIGZpbGUgc3lzdGVtIGJsb2NrLCB3cml0ZSB0aGUgb2xkIGNvbnRlbnRzIG9mIHRoZSBibG9jayB0bworYW4gdW5kbyBmaWxlLiAgVGhpcyB1bmRvIGZpbGUgY2FuIGJlIHVzZWQgd2l0aCBlMnVuZG8oOCkgdG8gcmVzdG9yZSB0aGUgb2xkCitjb250ZW50cyBvZiB0aGUgZmlsZSBzeXN0ZW0gc2hvdWxkIHNvbWV0aGluZyBnbyB3cm9uZy4gIElmIHRoZSBlbXB0eSBzdHJpbmcgaXMKK3Bhc3NlZCBhcyB0aGUgdW5kb19maWxlIGFyZ3VtZW50LCB0aGUgdW5kbyBmaWxlIHdpbGwgYmUgd3JpdHRlbiB0byBhIGZpbGUgbmFtZWQKK2UyZnNjay1cZklkZXZpY2VcZlIuZTJ1bmRvIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIHZpYSB0aGUKK1xmSUUyRlNQUk9HU19VTkRPX0RJUlxmUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworV0FSTklORzogVGhlIHVuZG8gZmlsZSBjYW5ub3QgYmUgdXNlZCB0byByZWNvdmVyIGZyb20gYSBwb3dlciBvciBzeXN0ZW0gY3Jhc2guCisuU0ggRVhJVCBDT0RFCitUaGUgZXhpdCBjb2RlIHJldHVybmVkIGJ5CisuQiBlMmZzY2sKK2lzIHRoZSBzdW0gb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorLmJyCitcCTBcCVwtXCBObyBlcnJvcnMKKy5icgorXAkxXAlcLVwgRmlsZSBzeXN0ZW0gZXJyb3JzIGNvcnJlY3RlZAorLmJyCitcCTJcCVwtXCBGaWxlIHN5c3RlbSBlcnJvcnMgY29ycmVjdGVkLCBzeXN0ZW0gc2hvdWxkCisuYnIKK1wJXAlcIFwgYmUgcmVib290ZWQKKy5icgorXAk0XAlcLVwgRmlsZSBzeXN0ZW0gZXJyb3JzIGxlZnQgdW5jb3JyZWN0ZWQKKy5icgorXAk4XAlcLVwgT3BlcmF0aW9uYWwgZXJyb3IKKy5icgorXAkxNlwJXC1cIFVzYWdlIG9yIHN5bnRheCBlcnJvcgorLmJyCitcCTMyXAlcLVwgRTJmc2NrIGNhbmNlbGVkIGJ5IHVzZXIgcmVxdWVzdAorLmJyCitcCTEyOFwJXC1cIFNoYXJlZCBsaWJyYXJ5IGVycm9yCisuYnIKKy5TSCBTSUdOQUxTCitUaGUgZm9sbG93aW5nIHNpZ25hbHMgaGF2ZSB0aGUgZm9sbG93aW5nIGVmZmVjdCB3aGVuIHNlbnQgdG8gCisuQlIgZTJmc2NrIC4KKy5UUAorLkIgU0lHVVNSMQorVGhpcyBzaWduYWwgY2F1c2VzCisuQiBlMmZzY2sKK3RvIHN0YXJ0IGRpc3BsYXlpbmcgYSBjb21wbGV0aW9uIGJhciBvciBlbWl0dGluZyBwcm9ncmVzcyBpbmZvcm1hdGlvbi4gIAorKFNlZSBkaXNjdXNzaW9uIG9mIHRoZSAKKy5CIFwtQworb3B0aW9uLikKKy5UUAorLkIgU0lHVVNSMgorVGhpcyBzaWduYWwgY2F1c2VzCisuQiBlMmZzY2sgCit0byBzdG9wIGRpc3BsYXlpbmcgYSBjb21wbGV0aW9uIGJhciBvciBlbWl0dGluZyBwcm9ncmVzcyBpbmZvcm1hdGlvbi4KKy5TSCBSRVBPUlRJTkcgQlVHUworQWxtb3N0IGFueSBwaWVjZSBvZiBzb2Z0d2FyZSB3aWxsIGhhdmUgYnVncy4gIElmIHlvdSBtYW5hZ2UgdG8gZmluZCBhCitmaWxlc3lzdGVtIHdoaWNoIGNhdXNlcyAKKy5CIGUyZnNjawordG8gY3Jhc2gsIG9yIHdoaWNoIAorLkIgZTJmc2NrCitpcyB1bmFibGUgdG8gcmVwYWlyLCBwbGVhc2UgcmVwb3J0IGl0IHRvIHRoZSBhdXRob3IuCisuUFAKK1BsZWFzZSBpbmNsdWRlIGFzIG11Y2ggaW5mb3JtYXRpb24gYXMgcG9zc2libGUgaW4geW91ciBidWcgcmVwb3J0LgorSWRlYWxseSwgaW5jbHVkZSBhIGNvbXBsZXRlIHRyYW5zY3JpcHQgb2YgdGhlCisuQiBlMmZzY2sKK3J1biwgc28gSSBjYW4gc2VlIGV4YWN0bHkgd2hhdCBlcnJvciBtZXNzYWdlcyBhcmUgZGlzcGxheWVkLiAgKE1ha2Ugc3VyZQordGhlIG1lc3NhZ2VzIHByaW50ZWQgYnkgCisuQiBlMmZzY2sgCithcmUgaW4gRW5nbGlzaDsgaWYgeW91ciBzeXN0ZW0gaGFzIGJlZW4KK2NvbmZpZ3VyZWQgc28gdGhhdCAKKy5CUiBlMmZzY2sgJ3MKK21lc3NhZ2VzIGhhdmUgYmVlbiB0cmFuc2xhdGVkIGludG8gYW5vdGhlciBsYW5ndWFnZSwgcGxlYXNlIHNldCB0aGUgdGhlCisuQiBMQ19BTEwKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvCisuQiBDCitzbyB0aGF0IHRoZSB0cmFuc2NyaXB0IG9mIGUyZnNjaydzIG91dHB1dCB3aWxsIGJlIHVzZWZ1bCB0byBtZS4pCitJZiB5b3UKK2hhdmUgYSB3cml0YWJsZSBmaWxlc3lzdGVtIHdoZXJlIHRoZSB0cmFuc2NyaXB0IGNhbiBiZSBzdG9yZWQsIHRoZSAKKy5CUiBzY3JpcHQgKDEpCitwcm9ncmFtIGlzIGEgaGFuZHkgd2F5IHRvIHNhdmUgdGhlIG91dHB1dCBvZgorLkIgZTJmc2NrCit0byBhIGZpbGUuCisuUFAKK0l0IGlzIGFsc28gdXNlZnVsIHRvIHNlbmQgdGhlIG91dHB1dCBvZiAKKy5CUiBkdW1wZTJmcyAoOCkuCitJZiBhIHNwZWNpZmljIGlub2RlIG9yIGlub2RlcyBzZWVtcyB0byBiZSBnaXZpbmcgCisuQiBlMmZzY2sgCit0cm91YmxlLCB0cnkgcnVubmluZyB0aGUKKy5CUiBkZWJ1Z2ZzICg4KQorY29tbWFuZCBhbmQgc2VuZCB0aGUgb3V0cHV0IG9mIHRoZSAKKy5CUiBzdGF0ICgxdSkKK2NvbW1hbmQgcnVuIG9uIHRoZSByZWxldmFudCBpbm9kZShzKS4gIElmIHRoZSBpbm9kZSBpcyBhIGRpcmVjdG9yeSwgdGhlIAorLkIgZGVidWdmcworLkkgZHVtcAorY29tbWFuZCB3aWxsIGFsbG93IHlvdSB0byBleHRyYWN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IGlub2RlLAord2hpY2ggY2FuIHNlbnQgdG8gbWUgYWZ0ZXIgYmVpbmcgZmlyc3QgcnVuIHRocm91Z2gKKy5CUiB1dWVuY29kZSAoMSkuICAKK1RoZSBtb3N0IHVzZWZ1bCBkYXRhIHlvdSBjYW4gc2VuZCB0byBoZWxwIHJlcHJvZHVjZQordGhlIGJ1ZyBpcyBhIGNvbXByZXNzZWQgcmF3IGltYWdlIGR1bXAgb2YgdGhlIGZpbGVzeXN0ZW0sIGdlbmVyYXRlZCB1c2luZworLkJSIGUyaW1hZ2UgKDgpLgorU2VlIHRoZSAKKy5CUiBlMmltYWdlICg4KQorbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KKy5QUAorQWx3YXlzIGluY2x1ZGUgdGhlIGZ1bGwgdmVyc2lvbiBzdHJpbmcgd2hpY2ggCisuQiBlMmZzY2sKK2Rpc3BsYXlzIHdoZW4gaXQgaXMgcnVuLCBzbyBJIGtub3cgd2hpY2ggdmVyc2lvbiB5b3UgYXJlIHJ1bm5pbmcuCisuU0ggQVVUSE9SCitUaGlzIHZlcnNpb24gb2YgCisuQiBlMmZzY2sKK3dhcyB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+LgorLlNIIFNFRSBBTFNPCisuQlIgZTJmc2NrLmNvbmYgKDUpLAorLkJSIGJhZGJsb2NrcyAoOCksCisuQlIgZHVtcGUyZnMgKDgpLAorLkJSIGRlYnVnZnMgKDgpLAorLkJSIGUyaW1hZ2UgKDgpLAorLkJSIG1rZTJmcyAoOCksCisuQlIgdHVuZTJmcyAoOCkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZTJmc2NrLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYjJmNDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay5jCkBAIC0wLDAgKzEsMjM5IEBACisvKgorICogZTJmc2NrLmMgLSBhIGNvbnNpc3RlbmN5IGNoZWNrZXIgZm9yIHRoZSBuZXcgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgInByb2JsZW0uaCIKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gYWxsb2NhdGVzIGFuIGUyZnNjayBjb250ZXh0CisgKi8KK2VycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfY29udGV4dChlMmZzY2tfdCAqcmV0KQoreworCWUyZnNja190CWNvbnRleHQ7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyCQkqdGltZV9lbnY7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGUyZnNja19zdHJ1Y3QpLCAmY29udGV4dCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldChjb250ZXh0LCAwLCBzaXplb2Yoc3RydWN0IGUyZnNja19zdHJ1Y3QpKTsKKworCWNvbnRleHQtPnByb2Nlc3NfaW5vZGVfc2l6ZSA9IDI1NjsKKwljb250ZXh0LT5leHRfYXR0cl92ZXIgPSAyOworCWNvbnRleHQtPmJsb2Nrc19wZXJfcGFnZSA9IDE7CisJY29udGV4dC0+aHRyZWVfc2xhY2tfcGVyY2VudGFnZSA9IDI1NTsKKworCXRpbWVfZW52ID0gZ2V0ZW52KCJFMkZTQ0tfVElNRSIpOworCWlmICh0aW1lX2VudikKKwkJY29udGV4dC0+bm93ID0gc3RydG91bCh0aW1lX2VudiwgTlVMTCwgMCk7CisJZWxzZSB7CisJCWNvbnRleHQtPm5vdyA9IHRpbWUoMCk7CisJCWlmIChjb250ZXh0LT5ub3cgPCAxMjYyMzIyMDAwKSAvKiBKYW51YXJ5IDEgMjAxMCAqLworCQkJY29udGV4dC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfVElNRV9JTlNBTkU7CisJfQorCisJKnJldCA9IGNvbnRleHQ7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyBhbiBlMmZzY2sgY29udGV4dDsgaXQgaXMgY2FsbGVkIHdoZW4gZTJmc2NrCisgKiBuZWVkcyB0byBiZSByZXN0YXJ0ZWQuCisgKi8KK2VycmNvZGVfdCBlMmZzY2tfcmVzZXRfY29udGV4dChlMmZzY2tfdCBjdHgpCit7CisJaW50CWk7CisKKwljdHgtPmZsYWdzICY9IEUyRl9SRVNFVF9GTEFHUzsKKwljdHgtPmxvc3RfYW5kX2ZvdW5kID0gMDsKKwljdHgtPmJhZF9sb3N0X2FuZF9mb3VuZCA9IDA7CisJaWYgKGN0eC0+aW5vZGVfdXNlZF9tYXApIHsKKwkJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGN0eC0+aW5vZGVfdXNlZF9tYXApOworCQljdHgtPmlub2RlX3VzZWRfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfZGlyX21hcCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9kaXJfbWFwKTsKKwkJY3R4LT5pbm9kZV9kaXJfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfcmVnX21hcCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9yZWdfbWFwKTsKKwkJY3R4LT5pbm9kZV9yZWdfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+YmxvY2tfZm91bmRfbWFwKSB7CisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChjdHgtPmJsb2NrX2ZvdW5kX21hcCk7CisJCWN0eC0+YmxvY2tfZm91bmRfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfbGlua19pbmZvKSB7CisJCWV4dDJmc19mcmVlX2ljb3VudChjdHgtPmlub2RlX2xpbmtfaW5mbyk7CisJCWN0eC0+aW5vZGVfbGlua19pbmZvID0gMDsKKwl9CisJaWYgKGN0eC0+am91cm5hbF9pbykgeworCQlpZiAoY3R4LT5mcyAmJiBjdHgtPmZzLT5pbyAhPSBjdHgtPmpvdXJuYWxfaW8pCisJCQlpb19jaGFubmVsX2Nsb3NlKGN0eC0+am91cm5hbF9pbyk7CisJCWN0eC0+am91cm5hbF9pbyA9IDA7CisJfQorCWlmIChjdHgtPmZzICYmIGN0eC0+ZnMtPmRibGlzdCkgeworCQlleHQyZnNfZnJlZV9kYmxpc3QoY3R4LT5mcy0+ZGJsaXN0KTsKKwkJY3R4LT5mcy0+ZGJsaXN0ID0gMDsKKwl9CisJZTJmc2NrX2ZyZWVfZGlyX2luZm8oY3R4KTsKKwllMmZzY2tfZnJlZV9keF9kaXJfaW5mbyhjdHgpOworCWlmIChjdHgtPnJlZmNvdW50KSB7CisJCWVhX3JlZmNvdW50X2ZyZWUoY3R4LT5yZWZjb3VudCk7CisJCWN0eC0+cmVmY291bnQgPSAwOworCX0KKwlpZiAoY3R4LT5yZWZjb3VudF9leHRyYSkgeworCQllYV9yZWZjb3VudF9mcmVlKGN0eC0+cmVmY291bnRfZXh0cmEpOworCQljdHgtPnJlZmNvdW50X2V4dHJhID0gMDsKKwl9CisJaWYgKGN0eC0+YmxvY2tfZHVwX21hcCkgeworCQlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAoY3R4LT5ibG9ja19kdXBfbWFwKTsKKwkJY3R4LT5ibG9ja19kdXBfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+YmxvY2tfZWFfbWFwKSB7CisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChjdHgtPmJsb2NrX2VhX21hcCk7CisJCWN0eC0+YmxvY2tfZWFfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwKSB7CisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChjdHgtPmJsb2NrX21ldGFkYXRhX21hcCk7CisJCWN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfYmJfbWFwKSB7CisJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChjdHgtPmlub2RlX2JiX21hcCk7CisJCWN0eC0+aW5vZGVfYmJfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfYmFkX21hcCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9iYWRfbWFwKTsKKwkJY3R4LT5pbm9kZV9iYWRfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+aW5vZGVfaW1hZ2ljX21hcCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9pbWFnaWNfbWFwKTsKKwkJY3R4LT5pbm9kZV9pbWFnaWNfbWFwID0gMDsKKwl9CisJaWYgKGN0eC0+ZGlyc190b19oYXNoKSB7CisJCWV4dDJmc191MzJfbGlzdF9mcmVlKGN0eC0+ZGlyc190b19oYXNoKTsKKwkJY3R4LT5kaXJzX3RvX2hhc2ggPSAwOworCX0KKworCS8qCisJICogQ2xlYXIgdGhlIGFycmF5IG9mIGludmFsaWQgbWV0YS1kYXRhIGZsYWdzCisJICovCisJaWYgKGN0eC0+aW52YWxpZF9pbm9kZV9iaXRtYXBfZmxhZykgeworCQlleHQyZnNfZnJlZV9tZW0oJmN0eC0+aW52YWxpZF9pbm9kZV9iaXRtYXBfZmxhZyk7CisJCWN0eC0+aW52YWxpZF9pbm9kZV9iaXRtYXBfZmxhZyA9IDA7CisJfQorCWlmIChjdHgtPmludmFsaWRfYmxvY2tfYml0bWFwX2ZsYWcpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjdHgtPmludmFsaWRfYmxvY2tfYml0bWFwX2ZsYWcpOworCQljdHgtPmludmFsaWRfYmxvY2tfYml0bWFwX2ZsYWcgPSAwOworCX0KKwlpZiAoY3R4LT5pbnZhbGlkX2lub2RlX3RhYmxlX2ZsYWcpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjdHgtPmludmFsaWRfaW5vZGVfdGFibGVfZmxhZyk7CisJCWN0eC0+aW52YWxpZF9pbm9kZV90YWJsZV9mbGFnID0gMDsKKwl9CisJaWYgKGN0eC0+ZW5jcnlwdGVkX2RpcnMpIHsKKwkJZXh0MmZzX3UzMl9saXN0X2ZyZWUoY3R4LT5lbmNyeXB0ZWRfZGlycyk7CisJCWN0eC0+ZW5jcnlwdGVkX2RpcnMgPSAwOworCX0KKworCS8qIENsZWFyIHN0YXRpc3RpYyBjb3VudGVycyAqLworCWN0eC0+ZnNfZGlyZWN0b3J5X2NvdW50ID0gMDsKKwljdHgtPmZzX3JlZ3VsYXJfY291bnQgPSAwOworCWN0eC0+ZnNfYmxvY2tkZXZfY291bnQgPSAwOworCWN0eC0+ZnNfY2hhcmRldl9jb3VudCA9IDA7CisJY3R4LT5mc19saW5rc19jb3VudCA9IDA7CisJY3R4LT5mc19zeW1saW5rc19jb3VudCA9IDA7CisJY3R4LT5mc19mYXN0X3N5bWxpbmtzX2NvdW50ID0gMDsKKwljdHgtPmZzX2ZpZm9fY291bnQgPSAwOworCWN0eC0+ZnNfdG90YWxfY291bnQgPSAwOworCWN0eC0+ZnNfYmFkYmxvY2tzX2NvdW50ID0gMDsKKwljdHgtPmZzX3NvY2tldHNfY291bnQgPSAwOworCWN0eC0+ZnNfaW5kX2NvdW50ID0gMDsKKwljdHgtPmZzX2RpbmRfY291bnQgPSAwOworCWN0eC0+ZnNfdGluZF9jb3VudCA9IDA7CisJY3R4LT5mc19mcmFnbWVudGVkID0gMDsKKwljdHgtPmZzX2ZyYWdtZW50ZWRfZGlyID0gMDsKKwljdHgtPmxhcmdlX2ZpbGVzID0gMDsKKworCWZvciAoaT0wOyBpIDwgTUFYX0VYVEVOVF9ERVBUSF9DT1VOVDsgaSsrKQorCQljdHgtPmV4dGVudF9kZXB0aF9jb3VudFtpXSA9IDA7CisKKwkvKiBSZXNldCB0aGUgc3VwZXJibG9jayB0byB0aGUgdXNlcidzIHJlcXVlc3RlZCB2YWx1ZSAqLworCWN0eC0+c3VwZXJibG9jayA9IGN0eC0+dXNlX3N1cGVyYmxvY2s7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBlMmZzY2tfZnJlZV9jb250ZXh0KGUyZnNja190IGN0eCkKK3sKKwlpZiAoIWN0eCkKKwkJcmV0dXJuOworCisJZTJmc2NrX3Jlc2V0X2NvbnRleHQoY3R4KTsKKwlpZiAoY3R4LT5ibGtpZCkKKwkJYmxraWRfcHV0X2NhY2hlKGN0eC0+YmxraWQpOworCisJaWYgKGN0eC0+cHJvZmlsZSkKKwkJcHJvZmlsZV9yZWxlYXNlKGN0eC0+cHJvZmlsZSk7CisKKwlpZiAoY3R4LT5maWxlc3lzdGVtX25hbWUpCisJCWV4dDJmc19mcmVlX21lbSgmY3R4LT5maWxlc3lzdGVtX25hbWUpOworCisJaWYgKGN0eC0+ZGV2aWNlX25hbWUpCisJCWV4dDJmc19mcmVlX21lbSgmY3R4LT5kZXZpY2VfbmFtZSk7CisKKwlpZiAoY3R4LT5sb2dfZm4pCisJCWZyZWUoY3R4LT5sb2dfZm4pOworCisJZXh0MmZzX2ZyZWVfbWVtKCZjdHgpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBydW5zIHRocm91Z2ggdGhlIGUyZnNjayBwYXNzZXMgYW5kIGNhbGxzIHRoZW0gYWxsLAorICogcmV0dXJuaW5nIHJlc3RhcnQsIGFib3J0LCBvciBjYW5jZWwgYXMgbmVjZXNzYXJ5Li4uCisgKi8KK3R5cGVkZWYgdm9pZCAoKnBhc3NfdCkoZTJmc2NrX3QgY3R4KTsKKworc3RhdGljIHBhc3NfdCBlMmZzY2tfcGFzc2VzW10gPSB7CisJZTJmc2NrX3Bhc3MxLCBlMmZzY2tfcGFzczFlLCBlMmZzY2tfcGFzczIsIGUyZnNja19wYXNzMywKKwllMmZzY2tfcGFzczQsIGUyZnNja19wYXNzNSwgMCB9OworCitpbnQgZTJmc2NrX3J1bihlMmZzY2tfdCBjdHgpCit7CisJaW50CWk7CisJcGFzc190CWUyZnNja19wYXNzOworCisjaWZkZWYgSEFWRV9TRVRKTVBfSAorCWlmIChzZXRqbXAoY3R4LT5hYm9ydF9sb2MpKSB7CisJCWN0eC0+ZmxhZ3MgJj0gfkUyRl9GTEFHX1NFVEpNUF9PSzsKKwkJcmV0dXJuIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUlVOX1JFVFVSTik7CisJfQorCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfU0VUSk1QX09LOworI2VuZGlmCisKKwlmb3IgKGk9MDsgKGUyZnNja19wYXNzID0gZTJmc2NrX3Bhc3Nlc1tpXSk7IGkrKykgeworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1JVTl9SRVRVUk4pCisJCQlicmVhazsKKwkJaWYgKGUyZnNja19tbXBfdXBkYXRlKGN0eC0+ZnMpKQorCQkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwkJZTJmc2NrX3Bhc3MoY3R4KTsKKwkJaWYgKGN0eC0+cHJvZ3Jlc3MpCisJCQkodm9pZCkgKGN0eC0+cHJvZ3Jlc3MpKGN0eCwgMCwgMCwgMCk7CisJfQorCWN0eC0+ZmxhZ3MgJj0gfkUyRl9GTEFHX1NFVEpNUF9PSzsKKworCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUlVOX1JFVFVSTikKKwkJcmV0dXJuIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUlVOX1JFVFVSTik7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay5jb25mLjUuaW4gYi9lMmZzcHJvZ3MvZTJmc2NrL2UyZnNjay5jb25mLjUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg0OGJkYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svZTJmc2NrLmNvbmYuNS5pbgpAQCAtMCwwICsxLDQ1MCBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBDb3B5cmlnaHQgMjAwNiBieSBUaGVvZG9yZSBUcydvLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy5cIiBUaGlzIGZpbGUgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKy5cIiAKKy5USCBlMmZzY2suY29uZiA1ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitlMmZzY2suY29uZiBcLSBDb25maWd1cmF0aW9uIGZpbGUgZm9yIGUyZnNjaworLlNIIERFU0NSSVBUSU9OCisuSSBlMmZzY2suY29uZgoraXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgCisuQlIgZTJmc2NrICg4KS4gIAorSXQgY29udHJvbHMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgCisuQlIgZTJmc2NrICg4KQord2hpbGUgaXQgaXMgY2hlY2tpbmcgZXh0MiwgZXh0Mywgb3IgZXh0NCBmaWxlc3lzdGVtcy4KKy5QUAorVGhlCisuSSBlMmZzY2suY29uZgorZmlsZSB1c2VzIGFuIElOSS1zdHlsZSBmb3JtYXQuICBTdGFuemFzLCBvciB0b3AtbGV2ZWwgc2VjdGlvbnMsIGFyZSAKK2RlbGltaXRlZCBieSBzcXVhcmUgYnJhY2VzOiBbIF0uICBXaXRoaW4gZWFjaCBzZWN0aW9uLCBlYWNoIGxpbmUgCitkZWZpbmVzIGEgcmVsYXRpb24sIHdoaWNoIGFzc2lnbnMgdGFncyB0byB2YWx1ZXMsIG9yIHRvIGEgc3Vic2VjdGlvbiwKK3doaWNoIGNvbnRhaW5zIGZ1cnRoZXIgcmVsYXRpb25zIG9yIHN1YnNlY3Rpb25zLiAgIAorLlwiIFRhZ3MgY2FuIGJlIGFzc2lnbmVkIG11bHRpcGxlIHZhbHVlcworQW4gZXhhbXBsZSBvZiB0aGUgSU5JLXN0eWxlIGZvcm1hdCB1c2VkIGJ5IHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIAorZm9sbG93cyBiZWxvdzoKKy5QCisJW3NlY3Rpb24xXQorLmJyCisJCXRhZzEgPSB2YWx1ZV9hCisuYnIKKwkJdGFnMSA9IHZhbHVlX2IKKy5icgorCQl0YWcyID0gdmFsdWVfYworLlAKKwlbc2VjdGlvbiAyXQorLmJyCisJCXRhZzMgPSB7CisuYnIKKwkJCXN1YnRhZzEgPSBzdWJ0YWdfdmFsdWVfYQorLmJyCisJCQlzdWJ0YWcxID0gc3VidGFnX3ZhbHVlX2IKKy5icgorCQkJc3VidGFnMiA9IHN1YnRhZ192YWx1ZV9jCisuYnIKKwkJfQorLmJyCisJCXRhZzEgPSB2YWx1ZV9kCisuYnIKKwkJdGFnMiA9IHZhbHVlX2UKKy5icgorCX0KKy5QCitDb21tZW50cyBhcmUgZGVsaW1pdGVkIGJ5IGEgc2VtaWNvbG9uICgnOycpIG9yIGEgaGFzaCAoJyMnKSBjaGFyYWN0ZXIgCithdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21tZW50LCBhbmQgYXJlIHRlcm1pbmF0ZWQgYnkgdGhlIGVuZCBvZiAKK2xpbmUgY2hhcmFjdGVyLgorLlAKK1RhZ3MgYW5kIHZhbHVlcyBtdXN0IGJlIHF1b3RlZCB1c2luZyBkb3VibGUgcXVvdGVzIGlmIHRoZXkgY29udGFpbgorc3BhY2VzLiAgV2l0aGluIGEgcXVvdGVkIHN0cmluZywgdGhlIHN0YW5kYXJkIGJhY2tzbGFzaCBpbnRlcnByZXRhdGlvbnMgCithcHBseTogIlxlbiIgKGZvciB0aGUgbmV3bGluZSBjaGFyYWN0ZXIpLCAKKyJcZXQiIChmb3IgdGhlIHRhYiBjaGFyYWN0ZXIpLCAiXGViIiAoZm9yIHRoZSBiYWNrc3BhY2UgY2hhcmFjdGVyKSwgCithbmQgIlxlXGUiIChmb3IgdGhlIGJhY2tzbGFzaCBjaGFyYWN0ZXIpLgorLlAKK1RoZSBmb2xsb3dpbmcgc3RhbnphcyBhcmUgdXNlZCBpbiB0aGUgCisuSSBlMmZzY2suY29uZgorZmlsZS4gIFRoZXkgd2lsbCBiZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gZnV0dXJlIHNlY3Rpb25zIG9mIHRoaXMKK2RvY3VtZW50LgorLlRQIAorLkkgW29wdGlvbnNdCitUaGlzIHN0YW56YSBjb250YWlucyBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBmb3IgCisuQlIgZTJmc2NrICdzCitiZWhhdmlvci4KKy5UUAorLkkgW3Byb2JsZW1zXQorVGhpcyBzdGFuemEgYWxsb3dzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHJlY29uZmlndXJlIGhvdyBlMmZzY2sgaGFuZGxlcwordmFyaW91cyBmaWxlc3lzdGVtIGluY29uc2lzdGVuY2llcy4KK0BUREJfTUFOX0NPTU1FTlRALlRQCitAVERCX01BTl9DT01NRU5UQC5JIFtzY3JhdGNoX2ZpbGVzXQorQFREQl9NQU5fQ09NTUVOVEBUaGlzIHN0YW56YSBjb250cm9scyB3aGVuIGUyZnNjayB3aWxsIGF0dGVtcHQgdG8gdXNlCitAVERCX01BTl9DT01NRU5UQHNjcmF0Y2ggZmlsZXMgdG8gcmVkdWNlIHRoZSBuZWVkIGZvciBtZW1vcnkuCisuU0ggVEhFIFtvcHRpb25zXSBTVEFOWkEKK1RoZSBmb2xsb3dpbmcgcmVsYXRpb25zIGFyZSBkZWZpbmVkIGluIHRoZSAKKy5JIFtvcHRpb25zXQorc3RhbnphLgorLlRQCisuSSBhbGxvd19jYW5jZWxsYXRpb24KK0lmIHRoaXMgcmVsYXRpb24gaXMgc2V0IHRvIGEgYm9vbGVhbiB2YWx1ZSBvZiB0cnVlLCB0aGVuIGlmIHRoZSB1c2VyIAoraW50ZXJydXB0cyBlMmZzY2sgdXNpbmcgXkMsIGFuZCB0aGUgZmlsZXN5c3RlbSBpcyBub3QgZXhwbGljaXRseSBmbGFnZ2VkCithcyBjb250YWluaW5nIGVycm9ycywgZTJmc2NrIHdpbGwgZXhpdCB3aXRoIGFuIGV4aXQgc3RhdHVzIG9mIDAgaW5zdGVhZAorb2YgMzIuICBUaGlzIHNldHRpbmcgZGVmYXVsdHMgdG8gZmFsc2UuCisuVFAKKy5JIGFjY2VwdF90aW1lX2Z1ZGdlCitVbmZvcnR1bmF0ZWx5LCBkdWUgdG8gV2luZG93cycgdW5mb3J0dW5hdGUgZGVzaWduIGRlY2lzaW9uCit0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGNsb2NrIHRvIHRpY2sgbG9jYWx0aW1lLCBpbnN0ZWFkCitvZiB0aGUgbW9yZSBwcm9wZXIgYW5kIGxlc3MgZXJyb3ItcHJvbmUgVVRDIHRpbWUsIG1hbnkKK3VzZXJzIGVuZCB1cCBpbiB0aGUgc2l0dWF0aW9uIHdoZXJlIHRoZSBzeXN0ZW0gY2xvY2sgaXMKK2luY29ycmVjdGx5IHNldCBhdCB0aGUgdGltZSB3aGVuIGUyZnNjayBpcyBydW4uCisuSVAKK0hpc3RvcmljYWxseSB0aGlzIHdhcyB1c3VhbGx5IGR1ZSB0byBzb21lIGRpc3RyaWJ1dGlvbnMKK2hhdmluZyBidWdneSBpbml0IHNjcmlwdHMgYW5kL29yIGluc3RhbGxlcnMgdGhhdCBkaWRuJ3QKK2NvcnJlY3RseSBkZXRlY3QgdGhpcyBjYXNlIGFuZCB0YWtlIGFwcHJvcHJpYXRlCitjb3VudGVybWVhc3VyZXMuICBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIG9jY2FzaW9uYWxseQordHJ1ZSBldmVuIHRvZGF5LCB1c3VhbGx5IGR1ZSB0byBhCitidWdneSBvciBtaXNjb25maWd1cmVkIHZpcnR1YWxpemF0aW9uIG1hbmFnZXIgb3IgdGhlCitpbnN0YWxsZXIgbm90IGhhdmluZyBhY2Nlc3MgdG8gYSBuZXR3b3JrIHRpbWUgc2VydmVyCitkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzLiAgU28gYnkgZGVmYXVsdCwgd2UgYWxsb3cKK3RoZSBzdXBlcmJsb2NrIHRpbWVzIHRvIGJlIGZ1ZGdlZCBieSB1cCB0byAyNCBob3Vycy4KK1RoaXMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcKKy5JIGFjY2VwdF90aW1lX2Z1ZGdlCit0byB0aGUKK2Jvb2xlYW4gdmFsdWUgb2YgZmFsc2UuICBUaGlzIHNldHRpbmcgZGVmYXVsdHMgdG8gdHJ1ZS4KKy5UUAorLkkgYnJva2VuX3N5c3RlbV9jbG9jaworVGhlCisuQlIgZTJmc2NrICg4KQorcHJvZ3JhbSBoYXMgc29tZSBoZXVyaXN0aWNzIHRoYXQgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSBjbG9jayBpcworY29ycmVjdC4gIEluIGFkZGl0aW9uLCBtYW55IHN5c3RlbSBwcm9ncmFtcyBtYWtlIHNpbWlsYXIgYXNzdW1wdGlvbnMuCitGb3IgZXhhbXBsZSwgdGhlIFVVSUQgbGlicmFyeSBkZXBlbmRzIG9uIHRpbWUgbm90IGdvaW5nIGJhY2t3YXJkcyBpbgorb3JkZXIgZm9yIGl0IHRvIGJlIGFibGUgdG8gbWFrZSBpdHMgZ3VhcmFudGVlcyBhYm91dCBpc3N1aW5nIHVuaXZlcnNhbGx5Cit1bmlxdWUgSUQncy4gIFN5c3RlbXMgd2l0aCBicm9rZW4gc3lzdGVtIGNsb2NrcywgYXJlIHdlbGwsIGJyb2tlbi4KK0hvd2V2ZXIsIGJyb2tlbiBzeXN0ZW0gY2xvY2tzLCBwYXJ0aWN1bGFybHkgaW4gZW1iZWRkZWQgc3lzdGVtcywgZG8KK2V4aXN0LiAgRTJmc2NrIHdpbGwgYXR0ZW1wdCB0byB1c2UgaGV1cmlzdGljcyB0byBkZXRlcm1pbmUgaWYgdGhlIHRpbWUKK2NhbiBub3QgYmUgdHJ1c3RlZDsgYW5kIHRvIHNraXAgdGltZS1iYXNlZCBjaGVja3MgaWYgdGhpcyBpcyB0cnVlLiAgSWYKK3RoaXMgYm9vbGVhbiBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiBlMmZzY2sgd2lsbCBhbHdheXMgYXNzdW1lIHRoYXQgdGhlCitzeXN0ZW0gY2xvY2sgY2FuIG5vdCBiZSB0cnVzdGVkLgorLlRQCisuSSBidWdneV9pbml0X3NjcmlwdHMKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBpcyBhbiBhbGlhcyBmb3IKKy5JIGFjY2VwdF90aW1lX2Z1ZGdlCitmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk7IGl0IHVzZWQgdG8KK2JlIHRoYXQgdGhlIGJlaGF2aW9yIGRlZmluZWQgYnkKKy5JIGFjY2VwdF90aW1lX2Z1ZGdlCithYm92ZSBkZWZhdWx0ZWQgdG8gZmFsc2UsIGFuZAorLkkgYnVnZ3lfaW5pdF9zY3JpcHRzCit3b3VsZCBlbmFibGUgc3VwZXJibG9jayB0aW1lIGZpZWxkIHRvIGJlIHdyb25nIGJ5IHVwIHRvIDI0IGhvdXJzLiAgV2hlbgord2UgY2hhbmdlZCB0aGUgZGVmYXVsdCwgd2UgYWxzbyByZW5hbWVkIHRoaXMgYm9vbGVhbiByZWxhdGlvbiB0bworLklSIGFjY2VwdF90aW1lX2Z1ZGdlLgorLlRQCisuSSBjbGVhcl90ZXN0X2ZzX2ZsYWcKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBjb250cm9scyB3aGV0aGVyIG9yIG5vdCAKKy5CUiBlMmZzY2sgKDgpCit3aWxsIG9mZmVyIHRvIGNsZWFyCit0aGUgdGVzdF9mcyBmbGFnIGlmIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaXMgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uICBJdAorZGVmYXVsdHMgdG8gdHJ1ZS4KKy5UUCAKKy5JIGRlZmVyX2NoZWNrX29uX2JhdHRlcnkKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgaW50ZXJ2YWwgYmV0d2VlbiAKK2ZpbGVzeXN0ZW0gY2hlY2tzIChlaXRoZXIgYmFzZWQgb24gdGltZSBvciBudW1iZXIgb2YgbW91bnRzKSBzaG91bGQgCitiZSBkb3VibGVkIGlmIHRoZSBzeXN0ZW0gaXMgcnVubmluZyBvbiBiYXR0ZXJ5LiAgVGhpcyBzZXR0aW5nIGRlZmF1bHRzIHRvIAordHJ1ZS4KKy5UUAorLkkgaW5kZXhlZF9kaXJfc2xhY2tfcGVyY2VudGFnZQorV2hlbgorLkJSIGUyZnNjayAoOCkKK3JlcGFja3MgYSBpbmRleGVkIGRpcmVjdG9yeSwgcmVzZXJ2ZSB0aGUgc3BlY2lmaWVkIHBlcmNlbnRhZ2Ugb2YKK2VtcHR5IHNwYWNlIGluIGVhY2ggbGVhZiBub2RlcyBzbyB0aGF0IGEgZmV3IG5ldyBlbnRyaWVzIGNhbgorYmUgYWRkZWQgdG8gdGhlIGRpcmVjdG9yeSB3aXRob3V0IHNwbGl0dGluZyBsZWFmIG5vZGVzLCBzbyB0aGF0Cit0aGUgYXZlcmFnZSBmaWxsIHJhdGlvIG9mIGRpcmVjdG9yaWVzIGNhbiBiZSBtYWludGFpbmVkIGF0IGEKK2hpZ2hlciwgbW9yZSBlZmZpY2llbnQgbGV2ZWwuICBUaGlzIHJlbGF0aW9uIGRlZmF1bHRzIHRvIDIwCitwZXJjZW50LgorLlRQCisuSSBsb2dfZGlyCitJZiB0aGUKKy5JIGxvZ19maWxlbmFtZQorcmVsYXRpb24gY29udGFpbnMgYSByZWxhdGl2ZSBwYXRobmFtZSwgdGhlbiB0aGUgbG9nIGZpbGUgd2lsbCBiZSBwbGFjZWQKK2luIHRoZSBkaXJlY3RvcnkgbmFtZWQgYnkgdGhlCisuSSBsb2dfZGlyCityZWxhdGlvbi4KKy5UUAorLkkgbG9nX2Rpcl9mYWxsYmFjaworVGhpcyByZWxhdGlvbiBjb250YWlucyBhbiBhbHRlcm5hdGUgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSB1c2VkIGlmIHRoZQorZGlyZWN0b3J5IHNwZWNpZmllZCBieQorLkkgbG9nX2RpcgoraXMgbm90IGF2YWlsYWJsZSBvciBpcyBub3Qgd3JpdGVhYmxlLgorLlRQCisuSSBsb2dfZGlyX3dhaXQKK0lmIHRoaXMgYm9vbGVhbiByZWxhdGlvbiBpcyB0cnVlLCB0aGVtIGlmIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkKKy5JIGxvZ19kaXIKK29yCisuSSBsb2dfZGlyX2ZhbGxiYWNrCithcmUgbm90IGF2YWlsYWJsZSBvciBhcmUgbm90IHlldCB3cml0ZWFibGUsIGUyZnNjayB3aWxsIHNhdmUgdGhlIG91dHB1dAoraW4gYSBtZW1vcnkgYnVmZmVyLCBhbmQgYSBjaGlsZCBwcm9jZXNzIHdpbGwgcGVyaW9kaWNhbGx5IHRlc3QgdG8gc2VlIGlmCit0aGUgbG9nIGRpcmVjdG9yeSBoYXMgYmVjb21lIGF2YWlsYWJsZSBhZnRlciB0aGUgYm9vdCBzZXF1ZW5jZSBoYXMKK21vdW50ZWQgdGhlIHJlcXVpc3RlIGZpbGUgc3lzdGVtIGZvciByZWFkaW5nL3dyaXRpbmcuICBUaGlzIGltcGxlbWVudHMgdGhlCitmdW5jdGlvbmFsaXR5IHByb3ZpZGVkIGJ5CisuQlIgbG9nc2F2ZSAoOCkKK2ZvciBlMmZzY2sgbG9nIGZpbGVzLgorLlRQCisuSSBsb2dfZmlsZW5hbWUKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBmaWxlIG5hbWUgd2hlcmUgYSBjb3B5IG9mIGUyZnNjaydzIG91dHB1dAord2lsbCBiZSB3cml0dGVuLiAgIElmIGNlcnRhaW4gcHJvYmxlbSByZXBvcnRzIGFyZSBzdXBwcmVzc2VkIHVzaW5nIHRoZQorLkkgbWF4X2NvdW50X3Byb2JsZW1zCityZWxhdGlvbiwgKG9yIG9uIGEgcGVyLXByb2JsZW0gYmFzaXMgdXNpbmcgdGhlCisuSSBtYXhfY291bnQKK3JlbGF0aW9uKSwgdGhlIGZ1bGwgc2V0IG9mIHByb2JsZW0gcmVwb3J0cyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGxvZworZmlsZS4gIFRoZSBmaWxlbmFtZSBtYXkgY29udGFpbiB2YXJpb3VzIHBlcmNlbnQtZXhwcmVzc2lvbnMgKCVELCAlVCwgJU4sCitldGMuKSB3aGljaCB3aWxsIGJlIGV4cGFuZGVkIHNvIHRoYXQgdGhlIGZpbGUgbmFtZSBmb3IgdGhlIGxvZyBmaWxlIGNhbgoraW5jbHVkZSB0aGluZ3MgbGlrZSBkYXRlLCB0aW1lLCBkZXZpY2UgbmFtZSwgYW5kIG90aGVyIHJ1bi10aW1lCitwYXJhbWV0ZXJzLiAgU2VlIHRoZQorLkIgTE9HR0lORworc2VjdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorLlRQCisuSSBtYXhfY291bnRfcHJvYmxlbXMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwcm9ibGVtIHJlcG9ydHMgb2YgYQorcGFydGljdWxhciB0eXBlIHdpbGwgYmUgcHJpbnRlZCB0byBzdGRvdXQgYmVmb3JlIGZ1cnRoZXIgcHJvYmxlbSByZXBvcnRzCitvZiB0aGF0IHR5cGUgYXJlIHNxdWVsY2hlZC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgY29uc29sZSBpcyBzbG93CisoaS5lLiwgY29ubmVjdGVkIHRvIGEgc2VyaWFsIHBvcnQpIGFuZCBzbyBhIGxhcmdlIGFtb3VudCBvZiBvdXRwdXQgY291bGQKK2VuZCB1cCBkZWxheWluZyB0aGUgYm9vdCBwcm9jZXNzIGZvciBhIGxvbmcgdGltZSAocG90ZW50aWFsbHkgaG91cnMpLgorLlRQCisuSSByZWFkYWhlYWRfbWVtX3BjdAorVXNlIHRoaXMgcGVyY2VudGFnZSBvZiBtZW1vcnkgdG8gdHJ5IHRvIHJlYWQgaW4gbWV0YWRhdGEgYmxvY2tzIGFoZWFkIG9mIHRoZQorbWFpbiBlMmZzY2sgdGhyZWFkLiAgVGhpcyBzaG91bGQgcmVkdWNlIHJ1biB0aW1lcywgZGVwZW5kaW5nIG9uIHRoZSBzcGVlZCBvZgordGhlIHVuZGVybHlpbmcgc3RvcmFnZSBhbmQgdGhlIGFtb3VudCBvZiBmcmVlIG1lbW9yeS4gIFRoZXJlIGlzIG5vIGRlZmF1bHQsIGJ1dAorc2VlCisuQiByZWFkYWhlYWRfa2IKK2ZvciBtb3JlIGRldGFpbHMuCisuVFAKKy5JIHJlYWRhaGVhZF9rYgorVXNlIHRoaXMgYW1vdW50IG9mIG1lbW9yeSB0byByZWFkIGluIG1ldGFkYXRhIGJsb2NrcyBhaGVhZCBvZiB0aGUgbWFpbiBjaGVja2luZwordGhyZWFkLiAgU2V0dGluZyB0aGlzIHZhbHVlIHRvIHplcm8gZGlzYWJsZXMgcmVhZGFoZWFkIGVudGlyZWx5LiAgQnkgZGVmYXVsdCwKK3RoaXMgaXMgc2V0IHRoZSBzaXplIG9mIHR3byBibG9jayBncm91cHMnIGlub2RlIHRhYmxlcyAodHlwaWNhbGx5IDRNaUIgb24gYQorcmVndWxhciBleHQ0IGZpbGVzeXN0ZW0pOyBpZiB0aGlzIGFtb3VudCBpcyBtb3JlIHRoYW4gMS81MHRoIG9mIHRvdGFsIHBoeXNpY2FsCittZW1vcnksIHJlYWRhaGVhZCBpcyBkaXNhYmxlZC4KKy5UUAorLkkgcmVwb3J0X2ZlYXR1cmVzCitJZiB0aGlzIGJvb2xlYW4gcmVsYXRpb24gaXMgdHJ1ZSwgZTJmc2NrIHdpbGwgcHJpbnQgdGhlIGZpbGUgc3lzdGVtCitmZWF0dXJlcyBhcyBwYXJ0IG9mIGl0cyB2ZXJib3NlIHJlcG9ydGluZyAoaS5lLiwgaWYgdGhlCisuQiAtdgorb3B0aW9uIGlzIHNwZWNpZmllZCkKKy5UUAorLkkgcmVwb3J0X3RpbWUKK0lmIHRoaXMgYm9vbGVhbiByZWxhdGlvbiBpcyB0cnVlLCBlMmZzY2sgd2lsbCBydW4gYXMgaWYgdGhlIG9wdGlvbnMKKy5CIC10dAorYXJlIGFsd2F5cyBzcGVjaWZpZWQuICBUaGlzIHdpbGwgY2F1c2UgZTJmc2NrIHRvIHByaW50IHRpbWluZyBzdGF0aXN0aWNzCitvbiBhIHBhc3MgYnkgcGFzcyBiYXNpcyBmb3IgZnVsbCBmaWxlIHN5c3RlbSBjaGVja3MuCisuVFAKKy5JIHJlcG9ydF92ZXJib3NlCitJZiB0aGlzIGJvb2xlYW4gcmVsYXRpb24gaXMgdHJ1ZSwgZTJmc2NrIHdpbGwgcnVuIGFzIGlmIHRoZSBvcHRpb24KKy5CIC12CitpcyBhbHdheXMgc3BlY2lmaWVkLiAgVGhpcyB3aWxsIGNhdXNlIGUyZnNjayB0byBwcmludCBzb21lIGFkZGl0aW9uYWwKK2luZm9ybWF0aW9uIGF0IHRoZSBlbmQgb2YgZWFjaCBmdWxsIGZpbGUgc3lzdGVtIGNoZWNrLgorLlNIIFRIRSBbcHJvYmxlbXNdIFNUQU5aQQorRWFjaCB0YWcgaW4gdGhlCisuSSBbcHJvYmxlbXNdIAorc3RhbnphIG5hbWVzIGEgcHJvYmxlbSBjb2RlIHNwZWNpZmllZCB3aXRoIGEgbGVhZGluZyAiMHgiIGZvbGxvd2VkIGJ5CitzaXggaGV4IGRpZ2l0cy4gICAKK1RoZSB2YWx1ZSBvZiB0aGUgdGFnIGlzIGEgc3Vic2VjdGlvbiB3aGVyZSB0aGUgcmVsYXRpb25zIGluIHRoYXQKK3N1YnNlY3Rpb24gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgdHJlYXRtZW50IG9mIHRoYXQgcGFydGljdWxhciBwcm9ibGVtIAorY29kZS4KKy5QCitOb3RlIHRoYXQgaW5hcHByb3ByaWF0ZSBzZXR0aW5ncyBpbiB0aGlzIHN0YW56YSBtYXkgY2F1c2UgCisuQiBlMmZzY2sKK3RvIGJlaGF2ZSBpbmNvcnJlY3RseSwgb3IgZXZlbiBjcmFzaC4gIE1vc3Qgc3lzdGVtIGFkbWluaXN0cmF0b3JzIHNob3VsZAorbm90IGJlIG1ha2luZyBjaGFuZ2VzIHRvIHRoaXMgc2VjdGlvbiB3aXRob3V0IHJlZmVycmluZyB0byBzb3VyY2UgY29kZS4KKy5QCitXaXRoaW4gZWFjaCBwcm9ibGVtIGNvZGUncyBzdWJzZWN0aW9uLCB0aGUgZm9sbG93aW5nIHRhZ3MgbWF5IGJlIHVzZWQ6CisuVFAKKy5JIGRlc2NyaXB0aW9uCitUaGlzIHJlbGF0aW9uIGFsbG93cyB0aGUgbWVzc2FnZSB3aGljaCBpcyBwcmludGVkIHdoZW4gdGhpcyBmaWxlc3lzdGVtCitpbmNvbnNpc3RlbmN5IGlzIGRldGVjdGVkIHRvIGJlIG92ZXJyaWRkZW4uCisuVFAKKy5JIHByZWVuX29rCitUaGlzIGJvb2xlYW4gcmVsYXRpb24gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGNvbnRyb2xsaW5nIAord2hldGhlciB0aGlzIGZpbGVzeXN0ZW0gcHJvYmxlbSBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaXhlZCB3aGVuCisuQiBlMmZzY2sKK2lzIHJ1bm5pbmcgaW4gcHJlZW4gbW9kZS4KKy5UUAorLkkgbWF4X2NvdW50CitUaGlzIGludGVnZXIgcmVsYXRpb24gb3ZlcnJpZGVzIHRoZSAKKy5JIG1heF9jb3VudF9wcm9ibGVtcworcGFyYW1ldGVyIChzZXQgaW4gdGhlIG9wdGlvbnMgc2VjdGlvbikgZm9yIHRoaXMgcGFydGljdWxhciBwcm9ibGVtLgorLlRQCisuSSBub19vaworVGhpcyBib29sZWFuIHJlbGF0aW9uIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBiZWhhdmlvciBkZXRlcm1pbmluZword2hldGhlciBvciBub3QgdGhlIGZpbGVzeXN0ZW0gd2lsbCBiZSBtYXJrZWQgYXMgaW5jb25zaXN0ZW50IGlmIHRoZSB1c2VyCitkZWNsaW5lcyB0byBmaXggdGhlIHJlcG9ydGVkIHByb2JsZW0uCisuVFAKKy5JIG5vX2RlZmF1bHQKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBvdmVycmlkZXMgd2hldGhlciB0aGUgZGVmYXVsdCBhbnN3ZXIgZm9yIHRoaXMgCitwcm9ibGVtIChvciBxdWVzdGlvbikgc2hvdWxkIGJlICJubyIuCisuVFAgCisuSSBwcmVlbl9ub21lc3NhZ2UKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBvdmVycmlkZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29udHJvbGxpbmcgCit3aGV0aGVyIG9yIG5vdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZmlsZXN5c3RlbSBwcm9ibGVtIHNob3VsZAorYmUgc3VwcHJlc3NlZCB3aGVuCisuQiBlMmZzY2sKK2lzIHJ1bm5pbmcgaW4gcHJlZW4gbW9kZS4KKy5UUAorLkkgbm9fbm9tc2cKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBvdmVycmlkZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29udHJvbGxpbmcgCit3aGV0aGVyIG9yIG5vdCB0aGUgZGVzY3JpcHRpb24gZm9yIHRoaXMgZmlsZXN5c3RlbSBwcm9ibGVtIHNob3VsZAorYmUgc3VwcHJlc3NlZCB3aGVuIGEgcHJvYmxlbSBmb3JjZWQgbm90IHRvIGJlIGZpeGVkLCBlaXRoZXIgYmVjYXVzZQorLkIgZTJmc2NrCitpcyBydW4gd2l0aCB0aGUKKy5CIC1uCitvcHRpb24gb3IgYmVjYXVzZSB0aGUKKy5JIGZvcmNlX25vCitmbGFnIGhhcyBiZWVuIHNldCBmb3IgdGhlIHByb2JsZW0uCisuVFAKKy5JIGZvcmNlX25vCitUaGlzIGJvb2xlYW4gb3B0aW9uLCBpZiBzZXQgdG8gdHJ1ZSwgZm9yY2VzIGEgcHJvYmxlbSB0byBuZXZlciBiZSBmaXhlZC4KK1RoYXQgaXMsIGl0IHdpbGwgYmUgYXMgaWYgdGhlIHVzZXIgcHJvYmxlbSByZXNwb25kcyAnbm8nIHRvIHRoZSBxdWVzdGlvbgorb2YgJ3Nob3VsZCB0aGlzIHByb2JsZW0gYmUgZml4ZWQ/Jy4gIFRoZQorLkkgZm9yY2Vfbm8KK29wdGlvbiBldmVuIG92ZXJyaWRlcyB0aGUKKy5CIC15CitvcHRpb24gZ2l2ZW4gb24gdGhlIGNvbW1hbmQtbGluZSAoanVzdCBmb3IgdGhlIHNwZWNpZmljIHByb2JsZW0sIG9mIGNvdXJzZSkuCitAVERCX01BTl9DT01NRU5UQC5TSCBUSEUgW3NjcmF0Y2hfZmlsZXNdIFNUQU5aQQorQFREQl9NQU5fQ09NTUVOVEBUaGUgZm9sbG93aW5nIHJlbGF0aW9ucyBhcmUgZGVmaW5lZCBpbiB0aGUKK0BUREJfTUFOX0NPTU1FTlRALkkgW3NjcmF0Y2hfZmlsZXNdCitAVERCX01BTl9DT01NRU5UQHN0YW56YS4KK0BUREJfTUFOX0NPTU1FTlRALlRQCitAVERCX01BTl9DT01NRU5UQC5JIGRpcmVjdG9yeQorQFREQl9NQU5fQ09NTUVOVEBJZiB0aGUgZGlyZWN0b3J5IG5hbWVkIGJ5IHRoaXMgcmVsYXRpb24gZXhpc3RzIGFuZCBpcworQFREQl9NQU5fQ09NTUVOVEB3cml0ZWFibGUsIHRoZW4gZTJmc2NrIHdpbGwgYXR0ZW1wdCB0byB1c2UgdGhpcworQFREQl9NQU5fQ09NTUVOVEBkaXJlY3RvcnkgdG8gc3RvcmUgc2NyYXRjaCBmaWxlcyBpbnN0ZWFkIG9mIHVzaW5nCitAVERCX01BTl9DT01NRU5UQGluLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMuCitAVERCX01BTl9DT01NRU5UQC5UUAorQFREQl9NQU5fQ09NTUVOVEAuSSBudW1kaXJzX3RocmVzaG9sZAorQFREQl9NQU5fQ09NTUVOVEBJZiB0aGlzIHJlbGF0aW9uIGlzIHNldCwgdGhlbiBpbi1tZW1vcnkgZGF0YSBzdHJ1Y3R1cmVzCitAVERCX01BTl9DT01NRU5UQGJlIHVzZWQgaWYgdGhlIG51bWJlciBvZiBkaXJlY3RvcmllcyBpbiB0aGUgZmlsZXN5c3RlbQorQFREQl9NQU5fQ09NTUVOVEBhcmUgZmV3ZXIgdGhhbiBhbW91bnQgc3BlY2lmaWVkLgorQFREQl9NQU5fQ09NTUVOVEAuVFAKK0BUREJfTUFOX0NPTU1FTlRALkkgZGlyaW5mbworQFREQl9NQU5fQ09NTUVOVEBUaGlzIHJlbGF0aW9uIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JhdGNoIGZpbGUKK0BUREJfTUFOX0NPTU1FTlRAZGlyZWN0b3J5IGlzIHVzZWQgaW5zdGVhZCBvZiBhbiBpbi1tZW1vcnkgZGF0YQorQFREQl9NQU5fQ09NTUVOVEBzdHJ1Y3R1cmUgZm9yIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4gIEl0IGRlZmF1bHRzIHRvCitAVERCX01BTl9DT01NRU5UQHRydWUuCitAVERCX01BTl9DT01NRU5UQC5UUAorQFREQl9NQU5fQ09NTUVOVEAuSSBpY291bnQKK0BUREJfTUFOX0NPTU1FTlRAVGhpcyByZWxhdGlvbiBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgc2NyYXRjaCBmaWxlCitAVERCX01BTl9DT01NRU5UQGRpcmVjdG9yeSBpcyB1c2VkIGluc3RlYWQgb2YgYW4gaW4tbWVtb3J5IGRhdGEKK0BUREJfTUFOX0NPTU1FTlRAc3RydWN0dXJlIHdoZW4gdHJhY2tpbmcgaW5vZGUgY291bnRzLiAgSXQgZGVmYXVsdHMgdG8KK0BUREJfTUFOX0NPTU1FTlRAdHJ1ZS4KKy5TSCBMT0dHSU5HCitFMmZzY2sgaGFzIHRoZSBmYWNpbGl0eSB0byBzYXZlIHRoZSBpbmZvcm1hdGlvbiBmcm9tIGFuIGUyZnNjayBydW4gaW4gYQorZGlyZWN0b3J5IHNvIHRoYXQgYSBzeXN0ZW0gYWRtaW5pc3RyYXRvciBjYW4gcmV2aWV3IGl0cyBvdXRwdXQgYXQgdGhlaXIKK2xlaXN1cmUuICBUaGlzIGFsbG93cyBpbmZvcm1hdGlvbiBjYXB0dXJlZCBkdXJpbmcgdGhlIGF1dG9tYXRpYyBlMmZzY2sKK3ByZWVuIHJ1biwgYXMgd2VsbCBhcyBhIG1hbnVhbGx5IHN0YXJ0ZWQgZTJmc2NrIHJ1biwgdG8gYmUgc2F2ZWQgZm9yCitwb3N0ZXJpdHkuICBUaGlzIGZhY2lsaXR5IGlzIGNvbnRyb2xsZWQgYnkgdGhlCisuSVIgbG9nX2ZpbGVuYW1lICwKKy5JUiBsb2dfZGlyICwKKy5JUiBsb2dfZGlyX2ZhbGxiYWNrICwKK2FuZAorLkkgbG9nX2Rpcl93YWl0CityZWxhdGlvbnMgaW4gdGhlCisuSSBbb3B0aW9uc10KK3N0YW56YS4KKy5QUAorVGhlIGZpbGVuYW1lIGluCisuSSBsb2dfZmlsZW5hbWUKK21heSBjb250YWluIHRoZSBmb2xsb3dpbmcgcGVyY2VudC1leHByZXNzaW9ucyB0aGF0IHdpbGwgYmUgZXhwYW5kZWQgYXMKK2ZvbGxvd3MuCisuVFAKKy5CICVkCitUaGUgY3VycmVudCBkYXkgb2YgdGhlIG1vbnRoCisuVFAKKy5CICVECitUaGUgY3VycmVudCBkYXRlOyB0aGlzIGlzIGEgZXF1aXZhbGVudCBvZgorLkIgJVklbSVkCisuVFAKKy5CICVoCitUaGUgaG9zdG5hbWUgb2YgdGhlIHN5c3RlbS4KKy5UUAorLkIgJUgKK1RoZSBjdXJyZW50IGhvdXIgaW4gMjQtaG91ciBmb3JtYXQgKDAwLi4yMykKKy5UUAorLkIgJW0KK1RoZSBjdXJyZW50IG1vbnRoIGFzIGEgdHdvLWRpZ2l0IG51bWJlciAoMDEuLjEyKQorLlRQCisuQiAlTQorVGhlIGN1cnJlbnQgbWludXRlICgwMC4uNTkpCisuVFAKKy5CICVOCitUaGUgbmFtZSBvZiB0aGUgYmxvY2sgZGV2aWNlIGNvbnRhaW5pbmcgdGhlIGZpbGUgc3lzdGVtLCB3aXRoIGFueQorZGlyZWN0b3J5IHBhdGhuYW1lIHN0cmlwcGVkIG9mZi4KKy5UUAorLkIgJXAKK1RoZSBwaWQgb2YgdGhlIGUyZnNjayBwcm9jZXNzCisuVFAKKy5CICVzCitUaGUgY3VycmVudCB0aW1lIGV4cHJlc3NlZCBhcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgc2luY2UgMTk3MC0wMS0wMQorMDA6MDA6MDAgVVRDCisuVFAKKy5CICVTCitUaGUgY3VycmVudCBzZWNvbmQgKDAwLi41OSkKKy5UUAorLkIgJVQKK1RoZSBjdXJyZW50IHRpbWU7IHRoaXMgaXMgZXF1aXZhbGVudCBvZgorLkIgJUglTSVTCisuVFAKKy5CICV1CitUaGUgbmFtZSBvZiB0aGUgdXNlciBydW5uaW5nIGUyZnNjay4KKy5UUAorLkIgJVUKK1RoaXMgcGVyY2VudCBleHByZXNzaW9uIGRvZXMgbm90IGV4cGFuZCB0byBhbnl0aGluZywgYnV0IGl0IHNpZ25hbHMgdGhhdAorYW55IGZvbGxvd2luZyBkYXRlIG9yIHRpbWUgZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGV4cHJlc3NlZCBpbiBVVEMgdGltZQoraW5zdGVhZCBvZiB0aGUgbG9jYWwgdGltemVvbmUuCisuVFAKKy5CICV5CitUaGUgbGFzdCB0d28gZGlnaXRzIG9mIHRoZSBjdXJyZW50IHllYXIgKDAwLi45OSkKKy5UUAorLkIgJVkKK1RoZSBjdXJyZW50IHllYXIgKGkuZS4sIDIwMTIpLgorLlNIIEVYQU1QTEVTCitUaGUgZm9sbG93aW5nIHJlY2lwZSB3aWxsIHByZXZlbnQgZTJmc2NrIGZyb20gYWJvcnRpbmcgZHVyaW5nIHRoZSBib290Citwcm9jZXNzIHdoZW4gYSBmaWxlc3lzdGVtIGNvbnRhaW5zIG9ycGhhbmVkIGZpbGVzLiAgKE9mIGNvdXJzZSwgdGhpcyBpcworbm90IGFsd2F5cyBhIGdvb2QgaWRlYSwgc2luY2UgY3JpdGljYWwgZmlsZXMgdGhhdCBhcmUgbmVlZGVkIGZvciB0aGUKK3NlY3VyaXR5IG9mIHRoZSBzeXN0ZW0gY291bGQgcG90ZW50aWFsbHkgZW5kIHVwIGluIGxvc3QrZm91bmQsIGFuZAorc3RhcnRpbmcgdGhlIHN5c3RlbSB3aXRob3V0IGZpcnN0IGhhdmluZyBhIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGNoZWNrCit0aGluZ3Mgb3V0IG1heSBiZSBkYW5nZXJvdXMuKQorLlAKKy5icgorCVtwcm9ibGVtc10KKy5icgorCQkweDA0MDAwMiA9IHsKKy5icgorCQkJcHJlZW5fb2sgPSB0cnVlCisuYnIKKwkJCWRlc2NyaXB0aW9uID0gIkB1IEBpICVpLiAgIgorLmJyCisJCX0KKy5QCitUaGUgZm9sbG93aW5nIHJlY2lwZSB3aWxsIGNhdXNlIGFuIGUyZnNjayBsb2dmaWxlIHRvIGJlIHdyaXR0ZW4gdG8gdGhlCitkaXJlY3RvcnkgL3Zhci9sb2cvZTJmc2NrLCB3aXRoIGEgZmlsZW5hbWUgdGhhdCBjb250YWlucyB0aGUgZGV2aWNlCituYW1lLCB0aGUgaG9zdG5hbWUgb2YgdGhlIHN5c3RlbSwgdGhlIGRhdGUsIGFuZCB0aW1lOiBlLmcuLAorImUyZnNjay1zZGEzLnNlcnZlci5JTkZPLjIwMTIwMzE0LTExMjE0MiIuICBJZiB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcKKy92YXIvbG9nIGlzIGxvY2F0ZWQgb24gdGhlIHJvb3QgZmlsZSBzeXN0ZW0KK3doaWNoIGlzIGluaXRpYWxseSBtb3VudGVkIHJlYWQtb25seSwgdGhlbiB0aGUgb3V0cHV0IHdpbGwgYmUgc2F2ZWQgaW4KK21lbW9yeSBhbmQgd3JpdHRlbiBvdXQgb25jZSB0aGUgcm9vdCBmaWxlIHN5c3RlbSBoYXMgYmVlbiByZW1vdW50ZWQKK3JlYWQvd3JpdGUuICAgVG8gYXZvaWQgdG9vIG11Y2ggZGV0YWlsIGZyb20gYmVpbmcgd3JpdHRlbiB0byB0aGUgc2VyaWFsCitjb25zb2xlICh3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBzbG93IGRvd24gdGhlIGJvb3Qgc2VxdWVuY2UpLCBvbmx5IHByaW50CitubyBtb3JlIHRoYW4gMTYgaW5zdGFuY2VzIG9mIGVhY2ggdHlwZSBvZiBmaWxlIHN5c3RlbSBjb3JydXB0aW9uLgorLlAKKy5icgorCVtvcHRpb25zXQorLmJyCisJCW1heF9jb3VudF9wcm9ibGVtcyA9IDE2CisuYnIKKwkJbG9nX2RpciA9IC92YXIvbG9nL2UyZnNjaworLmJyCisJCWxvZ19maWxlbmFtZSA9IGUyZnNjay0lTi4laC5JTkZPLiVELSVUCisuYnIKKwkJbG9nX2Rpcl93YWl0ID0gdHJ1ZQorLlAKKy5TSCBGSUxFUworLlRQCisuSSAvZXRjL2UyZnNjay5jb25mCitUaGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciAKKy5CUiBlMmZzY2sgKDgpLgorLlNIIFNFRSBBTFNPCisuQlIgZTJmc2NrICg4KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9lMmZzY2suaCBiL2UyZnNwcm9ncy9lMmZzY2svZTJmc2NrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1NjgxMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svZTJmc2NrLmgKQEAgLTAsMCArMSw2NDkgQEAKKy8qCisgKiBlMmZzY2suaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZQorICogcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqCisgKi8KKworI2lmbmRlZiBfRTJGU0NLX0gKKyNkZWZpbmUgX0UyRlNDS19ICisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TRVRKTVBfSAorI2luY2x1ZGUgPHNldGptcC5oPgorI2VuZGlmCisKKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiYmxraWQuaCIKKyNlbHNlCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiYmxraWQvYmxraWQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAic3VwcG9ydC9wcm9maWxlLmgiCisjaW5jbHVkZSAic3VwcG9ydC9wcm9mX2Vyci5oIgorCisjaWZkZWYgRU5BQkxFX05MUworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyNkZWZpbmUgXyhhKSAoZ2V0dGV4dCAoYSkpCisjaWZkZWYgZ2V0dGV4dF9ub29wCisjZGVmaW5lIE5fKGEpIGdldHRleHRfbm9vcCAoYSkKKyNlbHNlCisjZGVmaW5lIE5fKGEpIChhKQorI2VuZGlmCisjZGVmaW5lIFBfKHNpbmd1bGFyLCBwbHVyYWwsIG4pIChuZ2V0dGV4dCAoc2luZ3VsYXIsIHBsdXJhbCwgbikpCisjaWZuZGVmIE5MU19DQVRfTkFNRQorI2RlZmluZSBOTFNfQ0FUX05BTUUgImUyZnNwcm9ncyIKKyNlbmRpZgorI2lmbmRlZiBMT0NBTEVESVIKKyNkZWZpbmUgTE9DQUxFRElSICIvdXNyL3NoYXJlL2xvY2FsZSIKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgXyhhKSAoYSkKKyNkZWZpbmUgTl8oYSkgYQorI2RlZmluZSBQXyhzaW5ndWxhciwgcGx1cmFsLCBuKSAoKG4pID09IDEgPyAoc2luZ3VsYXIpIDogKHBsdXJhbCkpCisjZW5kaWYKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIEUyRlNDS19BVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIEUyRlNDS19BVFRSKHgpCisjZW5kaWYKKworI2luY2x1ZGUgInN1cHBvcnQvcXVvdGFpby5oIgorCisvKgorICogRXhpdCBjb2RlcyB1c2VkIGJ5IGZzY2stdHlwZSBwcm9ncmFtcworICovCisjZGVmaW5lIEZTQ0tfT0sgICAgICAgICAgMAkvKiBObyBlcnJvcnMgKi8KKyNkZWZpbmUgRlNDS19OT05ERVNUUlVDVCAxCS8qIEZpbGUgc3lzdGVtIGVycm9ycyBjb3JyZWN0ZWQgKi8KKyNkZWZpbmUgRlNDS19SRUJPT1QgICAgICAyCS8qIFN5c3RlbSBzaG91bGQgYmUgcmVib290ZWQgKi8KKyNkZWZpbmUgRlNDS19VTkNPUlJFQ1RFRCA0CS8qIEZpbGUgc3lzdGVtIGVycm9ycyBsZWZ0IHVuY29ycmVjdGVkICovCisjZGVmaW5lIEZTQ0tfRVJST1IgICAgICAgOAkvKiBPcGVyYXRpb25hbCBlcnJvciAqLworI2RlZmluZSBGU0NLX1VTQUdFICAgICAgIDE2CS8qIFVzYWdlIG9yIHN5bnRheCBlcnJvciAqLworI2RlZmluZSBGU0NLX0NBTkNFTEVECSAzMgkvKiBBYm9ydGVkIHdpdGggYSBzaWduYWwgb3IgXkMgKi8KKyNkZWZpbmUgRlNDS19MSUJSQVJZICAgICAxMjgJLyogU2hhcmVkIGxpYnJhcnkgZXJyb3IgKi8KKworLyoKKyAqIFRoZSBsYXN0IGV4dDJmcyByZXZpc2lvbiBsZXZlbCB0aGF0IHRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgaXMgYWJsZSB0bworICogc3VwcG9ydAorICovCisjZGVmaW5lIEUyRlNDS19DVVJSRU5UX1JFVgkxCisKKy8qCisgKiBUaGUgZGlyZWN0b3J5IGluZm9ybWF0aW9uIHN0cnVjdHVyZTsgc3RvcmVzIGRpcmVjdG9yeSBpbmZvcm1hdGlvbgorICogY29sbGVjdGVkIGluIGVhcmxpZXIgcGFzc2VzLCB0byBhdm9pZCBkaXNrIGkvbyBpbiBmZXRjaGluZyB0aGUKKyAqIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KKyAqLworc3RydWN0IGRpcl9pbmZvIHsKKwlleHQyX2lub190CQlpbm87CS8qIElub2RlIG51bWJlciAqLworCWV4dDJfaW5vX3QJCWRvdGRvdDsJLyogUGFyZW50IGFjY29yZGluZyB0byAnLi4nICovCisJZXh0Ml9pbm9fdAkJcGFyZW50OyAvKiBQYXJlbnQgYWNjb3JkaW5nIHRvIHRyZWV3YWxrICovCit9OworCisKKy8qCisgKiBUaGUgaW5kZXhlZCBkaXJlY3RvcnkgaW5mb3JtYXRpb24gc3RydWN0dXJlOyBzdG9yZXMgaW5mb3JtYXRpb24gZm9yCisgKiBkaXJlY3RvcmllcyB3aGljaCBjb250YWluIGEgaGFzaCB0cmVlIGluZGV4LgorICovCitzdHJ1Y3QgZHhfZGlyX2luZm8geworCWV4dDJfaW5vX3QJCWlubzsgCQkvKiBJbm9kZSBudW1iZXIgKi8KKwlpbnQJCQludW1ibG9ja3M7CS8qIG51bWJlciBvZiBibG9ja3MgKi8KKwlpbnQJCQloYXNodmVyc2lvbjsKKwlzaG9ydAkJCWRlcHRoOwkJLyogZGVwdGggb2YgdHJlZSAqLworCXN0cnVjdCBkeF9kaXJibG9ja19pbmZvCSpkeF9ibG9jazsgCS8qIEFycmF5IG9mIHNpemUgbnVtYmxvY2tzICovCit9OworCisjZGVmaW5lIERYX0RJUkJMT0NLX1JPT1QJMQorI2RlZmluZSBEWF9ESVJCTE9DS19MRUFGCTIKKyNkZWZpbmUgRFhfRElSQkxPQ0tfTk9ERQkzCisjZGVmaW5lIERYX0RJUkJMT0NLX0NPUlJVUFQJNAorI2RlZmluZSBEWF9ESVJCTE9DS19DTEVBUkVECTgKKworc3RydWN0IGR4X2RpcmJsb2NrX2luZm8geworCWludAkJdHlwZTsKKwlibGs2NF90CQlwaHlzOworCWludAkJZmxhZ3M7CisJYmxrNjRfdAkJcGFyZW50OworCWV4dDJfZGlyaGFzaF90CW1pbl9oYXNoOworCWV4dDJfZGlyaGFzaF90CW1heF9oYXNoOworCWV4dDJfZGlyaGFzaF90CW5vZGVfbWluX2hhc2g7CisJZXh0Ml9kaXJoYXNoX3QJbm9kZV9tYXhfaGFzaDsKK307CisKKyNkZWZpbmUgRFhfRkxBR19SRUZFUkVOQ0VECTEKKyNkZWZpbmUgRFhfRkxBR19EVVBfUkVGCQkyCisjZGVmaW5lIERYX0ZMQUdfRklSU1QJCTQKKyNkZWZpbmUgRFhfRkxBR19MQVNUCQk4CisKKyNkZWZpbmUgUkVTT1VSQ0VfVFJBQ0sKKworI2lmZGVmIFJFU09VUkNFX1RSQUNLCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiBob3cgbXVjaCByZXNvdXJjZXMgaGF2ZQorICogYmVlbiB1c2VkIGZvciBhIHBhcnRpY3VsYXIgcGFzcyBvZiBlMmZzY2suCisgKi8KK3N0cnVjdCByZXNvdXJjZV90cmFjayB7CisJc3RydWN0IHRpbWV2YWwgdGltZV9zdGFydDsKKwlzdHJ1Y3QgdGltZXZhbCB1c2VyX3N0YXJ0OworCXN0cnVjdCB0aW1ldmFsIHN5c3RlbV9zdGFydDsKKwl2b2lkCSpicmtfc3RhcnQ7CisJdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzX3JlYWQ7CisJdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzX3dyaXR0ZW47Cit9OworI2VuZGlmCisKKy8qCisgKiBFMmZzY2sgb3B0aW9ucworICovCisjZGVmaW5lIEUyRl9PUFRfUkVBRE9OTFkJMHgwMDAxCisjZGVmaW5lIEUyRl9PUFRfUFJFRU4JCTB4MDAwMgorI2RlZmluZSBFMkZfT1BUX1lFUwkJMHgwMDA0CisjZGVmaW5lIEUyRl9PUFRfTk8JCTB4MDAwOAorI2RlZmluZSBFMkZfT1BUX1RJTUUJCTB4MDAxMAorI2RlZmluZSBFMkZfT1BUX1RJTUUyCQkweDAwMjAKKyNkZWZpbmUgRTJGX09QVF9DSEVDS0JMT0NLUwkweDAwNDAKKyNkZWZpbmUgRTJGX09QVF9ERUJVRwkJMHgwMDgwCisjZGVmaW5lIEUyRl9PUFRfRk9SQ0UJCTB4MDEwMAorI2RlZmluZSBFMkZfT1BUX1dSSVRFQ0hFQ0sJMHgwMjAwCisjZGVmaW5lIEUyRl9PUFRfQ09NUFJFU1NfRElSUwkweDA0MDAKKyNkZWZpbmUgRTJGX09QVF9GUkFHQ0hFQ0sJMHgwODAwCisjZGVmaW5lIEUyRl9PUFRfSk9VUk5BTF9PTkxZCTB4MTAwMCAvKiBvbmx5IHJlcGxheSB0aGUgam91cm5hbCAqLworI2RlZmluZSBFMkZfT1BUX0RJU0NBUkQJCTB4MjAwMAorI2RlZmluZSBFMkZfT1BUX0NPTlZFUlRfQk1BUAkweDQwMDAgLyogY29udmVydCBibG9ja21hcCB0byBleHRlbnQgKi8KKyNkZWZpbmUgRTJGX09QVF9GSVhFU19PTkxZCTB4ODAwMCAvKiBza2lwIGFsbCBvcHRpbWl6YXRpb25zICovCisKKy8qCisgKiBFMmZzY2sgZmxhZ3MKKyAqLworI2RlZmluZSBFMkZfRkxBR19BQk9SVAkJMHgwMDAxIC8qIEFib3J0IHNpZ25hbGVkICovCisjZGVmaW5lIEUyRl9GTEFHX0NBTkNFTAkJMHgwMDAyIC8qIENhbmNlbCBzaWduYWxlZCAqLworI2RlZmluZSBFMkZfRkxBR19TSUdOQUxfTUFTSwkoRTJGX0ZMQUdfQUJPUlQgfCBFMkZfRkxBR19DQU5DRUwpCisjZGVmaW5lIEUyRl9GTEFHX1JFU1RBUlQJMHgwMDA0IC8qIFJlc3RhcnQgc2lnbmFsZWQgKi8KKyNkZWZpbmUgRTJGX0ZMQUdfUlVOX1JFVFVSTgkoRTJGX0ZMQUdfU0lHTkFMX01BU0sgfCBFMkZfRkxBR19SRVNUQVJUKQorI2RlZmluZSBFMkZfRkxBR19SRVNUQVJUX0xBVEVSCTB4MDAwOCAvKiBSZXN0YXJ0IGFmdGVyIGFsbCBpdGVyYXRpb25zIGRvbmUgKi8KKyNkZWZpbmUgRTJGX0ZMQUdfU0VUSk1QX09LCTB4MDAxMCAvKiBTZXRqbXAgdmFsaWQgZm9yIGFib3J0ICovCisKKyNkZWZpbmUgRTJGX0ZMQUdfUFJPR19CQVIJMHgwMDIwIC8qIFByb2dyZXNzIGJhciBvbiBzY3JlZW4gKi8KKyNkZWZpbmUgRTJGX0ZMQUdfUFJPR19TVVBQUkVTUwkweDAwNDAgLyogUHJvZ3Jlc3Mgc3VzcGVuZGVkICovCisjZGVmaW5lIEUyRl9GTEFHX0pPVVJOQUxfSU5PREUJMHgwMDgwIC8qIENyZWF0ZSBhIG5ldyBleHQzIGpvdXJuYWwgaW5vZGUgKi8KKyNkZWZpbmUgRTJGX0ZMQUdfU0JfU1BFQ0lGSUVECTB4MDEwMCAvKiBUaGUgc3VwZXJibG9jayB3YXMgZXhwbGljaXRseQorCQkJCQkqIHNwZWNpZmllZCBieSB0aGUgdXNlciAqLworI2RlZmluZSBFMkZfRkxBR19SRVNUQVJURUQJMHgwMjAwIC8qIEUyZnNjayBoYXMgYmVlbiByZXN0YXJ0ZWQgKi8KKyNkZWZpbmUgRTJGX0ZMQUdfUkVTSVpFX0lOT0RFCTB4MDQwMCAvKiBSZXF1ZXN0IHRvIHJlY3JlYXRlIHJlc2l6ZSBpbm9kZSAqLworI2RlZmluZSBFMkZfRkxBR19HT1RfREVWU0laRQkweDA4MDAgLyogRGV2aWNlIHNpemUgaGFzIGJlZW4gZmV0Y2hlZCAqLworI2RlZmluZSBFMkZfRkxBR19FWElUSU5HCTB4MTAwMCAvKiBFMmZzY2sgZXhpdGluZyBkdWUgdG8gZXJyb3JzICovCisjZGVmaW5lIEUyRl9GTEFHX1RJTUVfSU5TQU5FCTB4MjAwMCAvKiBUaW1lIGlzIGluc2FuZSAqLworI2RlZmluZSBFMkZfRkxBR19QUk9CTEVNU19GSVhFRAkweDQwMDAgLyogQXQgbGVhc3Qgb25lIHByb2JsZW0gd2FzIGZpeGVkICovCisjZGVmaW5lIEUyRl9GTEFHX0FMTE9DX09LCTB4ODAwMCAvKiBDYW4gd2UgYWxsb2NhdGUgYmxvY2tzPyAqLworCisjZGVmaW5lIEUyRl9SRVNFVF9GTEFHUyAoRTJGX0ZMQUdfVElNRV9JTlNBTkUgfCBFMkZfRkxBR19QUk9CTEVNU19GSVhFRCkKKworLyoKKyAqIERlZmluZXMgZm9yIGluZGljYXRpbmcgdGhlIGUyZnNjayBwYXNzIG51bWJlcgorICovCisjZGVmaW5lIEUyRl9QQVNTXzEJMQorI2RlZmluZSBFMkZfUEFTU18yCTIKKyNkZWZpbmUgRTJGX1BBU1NfMwkzCisjZGVmaW5lIEUyRl9QQVNTXzQJNAorI2RlZmluZSBFMkZfUEFTU181CTUKKyNkZWZpbmUgRTJGX1BBU1NfMUIJNgorCisvKgorICogRGVmaW5lIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgcmVmY291bnQgc3RydWN0dXJlCisgKi8KK3R5cGVkZWYgc3RydWN0IGVhX3JlZmNvdW50ICpleHQyX3JlZmNvdW50X3Q7CisKKy8qCisgKiBUaGlzIGlzIHRoZSBnbG9iYWwgZTJmc2NrIHN0cnVjdHVyZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgZTJmc2NrX3N0cnVjdCAqZTJmc2NrX3Q7CisKKyNkZWZpbmUgTUFYX0VYVEVOVF9ERVBUSF9DT1VOVCA1CisKK3N0cnVjdCBlMmZzY2tfc3RydWN0IHsKKwlleHQyX2ZpbHN5cyBmczsKKwljb25zdCBjaGFyICpwcm9ncmFtX25hbWU7CisJY2hhciAqZmlsZXN5c3RlbV9uYW1lOworCWNoYXIgKmRldmljZV9uYW1lOworCWNoYXIgKmlvX29wdGlvbnM7CisJRklMRQkqbG9nZjsKKwljaGFyCSpsb2dfZm47CisJaW50CWZsYWdzOwkJLyogRTJmc2NrIGludGVybmFsIGZsYWdzICovCisJaW50CW9wdGlvbnM7CisJaW50CWJsb2Nrc2l6ZTsJLyogYmxvY2tzaXplICovCisJYmxrNjRfdAl1c2Vfc3VwZXJibG9jazsJLyogc2IgcmVxdWVzdGVkIGJ5IHVzZXIgKi8KKwlibGs2NF90CXN1cGVyYmxvY2s7CS8qIHNiIHVzZWQgdG8gb3BlbiBmcyAqLworCWJsazY0X3QJbnVtX2Jsb2NrczsJLyogVG90YWwgbnVtYmVyIG9mIGJsb2NrcyAqLworCWJsazY0X3QgZnJlZV9ibG9ja3M7CisJaW5vX3QJZnJlZV9pbm9kZXM7CisJaW50CW1vdW50X2ZsYWdzOworCWludAlvcGVuZnNfZmxhZ3M7CisJYmxraWRfY2FjaGUgYmxraWQ7CS8qIGJsa2lkIGNhY2hlICovCisKKyNpZmRlZiBIQVZFX1NFVEpNUF9ICisJam1wX2J1ZglhYm9ydF9sb2M7CisjZW5kaWYKKwl1bnNpZ25lZCBsb25nIGFib3J0X2NvZGU7CisKKwlpbnQgKCpwcm9ncmVzcykoZTJmc2NrX3QgY3R4LCBpbnQgcGFzcywgdW5zaWduZWQgbG9uZyBjdXIsCisJCQl1bnNpZ25lZCBsb25nIG1heCk7CisKKwlleHQyZnNfaW5vZGVfYml0bWFwIGlub2RlX3VzZWRfbWFwOyAvKiBJbm9kZXMgd2hpY2ggYXJlIGluIHVzZSAqLworCWV4dDJmc19pbm9kZV9iaXRtYXAgaW5vZGVfYmFkX21hcDsgLyogSW5vZGVzIHdoaWNoIGFyZSBiYWQgc29tZWhvdyAqLworCWV4dDJmc19pbm9kZV9iaXRtYXAgaW5vZGVfZGlyX21hcDsgLyogSW5vZGVzIHdoaWNoIGFyZSBkaXJlY3RvcmllcyAqLworCWV4dDJmc19pbm9kZV9iaXRtYXAgaW5vZGVfYmJfbWFwOyAvKiBJbm9kZXMgd2hpY2ggYXJlIGluIGJhZCBibG9ja3MgKi8KKwlleHQyZnNfaW5vZGVfYml0bWFwIGlub2RlX2ltYWdpY19tYXA7IC8qIEFGUyBpbm9kZXMgKi8KKwlleHQyZnNfaW5vZGVfYml0bWFwIGlub2RlX3JlZ19tYXA7IC8qIElub2RlcyB3aGljaCBhcmUgcmVndWxhciBmaWxlcyovCisKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJsb2NrX2ZvdW5kX21hcDsgLyogQmxvY2tzIHdoaWNoIGFyZSBpbiB1c2UgKi8KKwlleHQyZnNfYmxvY2tfYml0bWFwIGJsb2NrX2R1cF9tYXA7IC8qIEJsa3MgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSAqLworCWV4dDJmc19ibG9ja19iaXRtYXAgYmxvY2tfZWFfbWFwOyAvKiBCbG9ja3Mgd2hpY2ggYXJlIHVzZWQgYnkgRUEncyAqLworCisJLyoKKwkgKiBJbm9kZSBjb3VudCBhcnJheXMKKwkgKi8KKwlleHQyX2ljb3VudF90CWlub2RlX2NvdW50OworCWV4dDJfaWNvdW50X3QgaW5vZGVfbGlua19pbmZvOworCisJZXh0Ml9yZWZjb3VudF90CXJlZmNvdW50OworCWV4dDJfcmVmY291bnRfdCByZWZjb3VudF9leHRyYTsKKworCS8qCisJICogQXJyYXkgb2YgZmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIGFuIGlub2RlIGJpdG1hcCwgYmxvY2sKKwkgKiBiaXRtYXAsIG9yIGlub2RlIHRhYmxlIGlzIGludmFsaWQKKwkgKi8KKwlpbnQgKmludmFsaWRfaW5vZGVfYml0bWFwX2ZsYWc7CisJaW50ICppbnZhbGlkX2Jsb2NrX2JpdG1hcF9mbGFnOworCWludCAqaW52YWxpZF9pbm9kZV90YWJsZV9mbGFnOworCWludCBpbnZhbGlkX2JpdG1hcHM7CS8qIFRoZXJlIGFyZSBpbnZhbGlkIGJpdG1hcHMvaXRhYmxlICovCisKKwkvKgorCSAqIEJsb2NrIGJ1ZmZlcgorCSAqLworCWNoYXIgKmJsb2NrX2J1ZjsKKworCS8qCisJICogRm9yIHBhc3MxX2NoZWNrX2RpcmVjdG9yeSBhbmQgcGFzczFfZ2V0X2Jsb2NrcworCSAqLworCWV4dDJfaW5vX3Qgc3Rhc2hlZF9pbm87CisJc3RydWN0IGV4dDJfaW5vZGUgKnN0YXNoZWRfaW5vZGU7CisKKwkvKgorCSAqIExvY2F0aW9uIG9mIHRoZSBsb3N0IGFuZCBmb3VuZCBkaXJlY3RvcnkKKwkgKi8KKwlleHQyX2lub190IGxvc3RfYW5kX2ZvdW5kOworCWludCBiYWRfbG9zdF9hbmRfZm91bmQ7CisKKwkvKgorCSAqIERpcmVjdG9yeSBpbmZvcm1hdGlvbgorCSAqLworCXN0cnVjdCBkaXJfaW5mb19kYgkqZGlyX2luZm87CisKKwkvKgorCSAqIEluZGV4ZWQgZGlyZWN0b3J5IGluZm9ybWF0aW9uCisJICovCisJaW50CQlkeF9kaXJfaW5mb19jb3VudDsKKwlpbnQJCWR4X2Rpcl9pbmZvX3NpemU7CisJc3RydWN0IGR4X2Rpcl9pbmZvICpkeF9kaXJfaW5mbzsKKworCS8qCisJICogRGlyZWN0b3JpZXMgdG8gaGFzaAorCSAqLworCWV4dDJfdTMyX2xpc3QJZGlyc190b19oYXNoOworCisJLyoKKwkgKiBUdW5pbmcgcGFyYW1ldGVycworCSAqLworCWludCBwcm9jZXNzX2lub2RlX3NpemU7CisJaW50IGlub2RlX2J1ZmZlcl9ibG9ja3M7CisJdW5zaWduZWQgaW50IGh0cmVlX3NsYWNrX3BlcmNlbnRhZ2U7CisKKwkvKgorCSAqIGV4dDMgam91cm5hbCBzdXBwb3J0CisJICovCisJaW9fY2hhbm5lbAlqb3VybmFsX2lvOworCWNoYXIJKmpvdXJuYWxfbmFtZTsKKworCS8qCisJICogRXh0NCBxdW90YSBzdXBwb3J0CisJICovCisJcXVvdGFfY3R4X3QgcWN0eDsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCS8qCisJICogRm9yIHRpbWluZyBwdXJwb3NlcworCSAqLworCXN0cnVjdCByZXNvdXJjZV90cmFjawlnbG9iYWxfcnRyYWNrOworI2VuZGlmCisKKwkvKgorCSAqIEhvdyB3ZSBkaXNwbGF5IHRoZSBwcm9ncmVzcyB1cGRhdGUgKGZvciB1bml4KQorCSAqLworCWludCBwcm9ncmVzc19mZDsKKwlpbnQgcHJvZ3Jlc3NfcG9zOworCWludCBwcm9ncmVzc19sYXN0X3BlcmNlbnQ7CisJdW5zaWduZWQgaW50IHByb2dyZXNzX2xhc3RfdGltZTsKKwlpbnQgaW50ZXJhY3RpdmU7CS8qIEFyZSB3ZSBjb25uZWN0ZWQgZGlyZWN0bHkgdG8gYSB0dHk/ICovCisJY2hhciBzdGFydF9tZXRhWzJdLCBzdG9wX21ldGFbMl07CisKKwkvKiBGaWxlIGNvdW50cyAqLworCV9fdTMyIGZzX2RpcmVjdG9yeV9jb3VudDsKKwlfX3UzMiBmc19yZWd1bGFyX2NvdW50OworCV9fdTMyIGZzX2Jsb2NrZGV2X2NvdW50OworCV9fdTMyIGZzX2NoYXJkZXZfY291bnQ7CisJX191MzIgZnNfbGlua3NfY291bnQ7CisJX191MzIgZnNfc3ltbGlua3NfY291bnQ7CisJX191MzIgZnNfZmFzdF9zeW1saW5rc19jb3VudDsKKwlfX3UzMiBmc19maWZvX2NvdW50OworCV9fdTMyIGZzX3RvdGFsX2NvdW50OworCV9fdTMyIGZzX2JhZGJsb2Nrc19jb3VudDsKKwlfX3UzMiBmc19zb2NrZXRzX2NvdW50OworCV9fdTMyIGZzX2luZF9jb3VudDsKKwlfX3UzMiBmc19kaW5kX2NvdW50OworCV9fdTMyIGZzX3RpbmRfY291bnQ7CisJX191MzIgZnNfZnJhZ21lbnRlZDsKKwlfX3UzMiBmc19mcmFnbWVudGVkX2RpcjsKKwlfX3UzMiBsYXJnZV9maWxlczsKKwlfX3UzMiBmc19leHRfYXR0cl9pbm9kZXM7CisJX191MzIgZnNfZXh0X2F0dHJfYmxvY2tzOworCV9fdTMyIGV4dGVudF9kZXB0aF9jb3VudFtNQVhfRVhURU5UX0RFUFRIX0NPVU5UXTsKKworCS8qIG1pc2MgZmllbGRzICovCisJdGltZV90IG5vdzsKKwl0aW1lX3QgdGltZV9mdWRnZTsJLyogRm9yIHdvcmtpbmcgYXJvdW5kIGJ1Z2d5IGluaXQgc2NyaXB0cyAqLworCWludCBleHRfYXR0cl92ZXI7CisJcHJvZmlsZV90CXByb2ZpbGU7CisJaW50IGJsb2Nrc19wZXJfcGFnZTsKKwlleHQyX3UzMl9saXN0IGVuY3J5cHRlZF9kaXJzOworCisJLyogUmVzZXJ2ZSBibG9ja3MgZm9yIHJvb3QgYW5kIGwrZiByZS1jcmVhdGlvbiAqLworCWJsazY0X3Qgcm9vdF9yZXBhaXJfYmxvY2ssIGxuZl9yZXBhaXJfYmxvY2s7CisKKwkvKgorCSAqIEZvciB0aGUgdXNlIG9mIGNhbGxlcnMgb2YgdGhlIGUyZnNjayBmdW5jdGlvbnM7IG5vdCB1c2VkIGJ5CisJICogZTJmc2NrIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLgorCSAqLworCXZvaWQgKnByaXZfZGF0YTsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJsb2NrX21ldGFkYXRhX21hcDsgLyogTWV0YWRhdGEgYmxvY2tzICovCisKKwkvKiBIb3cgbXVjaCBhcmUgd2UgYWxsb3dlZCB0byByZWFkYWhlYWQ/ICovCisJdW5zaWduZWQgbG9uZyBsb25nIHJlYWRhaGVhZF9rYjsKKworCS8qCisJICogSW5vZGVzIHRvIHJlYnVpbGQgZXh0ZW50IHRyZWVzCisJICovCisJZXh0MmZzX2lub2RlX2JpdG1hcCBpbm9kZXNfdG9fcmVidWlsZDsKKworCS8qIFVuZG8gZmlsZSAqLworCWNoYXIgKnVuZG9fZmlsZTsKK307CisKKy8qIERhdGEgc3RydWN0dXJlcyB0byBldmFsdWF0ZSB3aGV0aGVyIGFuIGV4dGVudCB0cmVlIG5lZWRzIHJlYnVpbGRpbmcuICovCitzdHJ1Y3QgZXh0ZW50X3RyZWVfbGV2ZWwgeworCXVuc2lnbmVkIGludAludW1fZXh0ZW50czsKKwl1bnNpZ25lZCBpbnQJbWF4X2V4dGVudHM7Cit9OworCitzdHJ1Y3QgZXh0ZW50X3RyZWVfaW5mbyB7CisJZXh0Ml9pbm9fdCBpbm87CisJaW50IGZvcmNlX3JlYnVpbGQ7CisJc3RydWN0IGV4dGVudF90cmVlX2xldmVsCWV4dF9pbmZvW01BWF9FWFRFTlRfREVQVEhfQ09VTlRdOworfTsKKworLyogVXNlZCBieSB0aGUgcmVnaW9uIGFsbG9jYXRpb24gY29kZSAqLwordHlwZWRlZiBfX3U2NCByZWdpb25fYWRkcl90OwordHlwZWRlZiBzdHJ1Y3QgcmVnaW9uX3N0cnVjdCAqcmVnaW9uX3Q7CisKKyNpZm5kZWYgSEFWRV9TVFJOTEVOCisjZGVmaW5lIHN0cm5sZW4oc3RyLCB4KSBlMmZzY2tfc3Rybmxlbigoc3RyKSwoeCkpCitleHRlcm4gaW50IGUyZnNja19zdHJubGVuKGNvbnN0IGNoYXIgKiBzLCBpbnQgY291bnQpOworI2VuZGlmCisKKy8qCisgKiBQcm9jZWR1cmUgZGVjbGFyYXRpb25zCisgKi8KKworZXh0ZXJuIHZvaWQgZTJmc2NrX3Bhc3MxKGUyZnNja190IGN0eCk7CitleHRlcm4gdm9pZCBlMmZzY2tfcGFzczFfZHVwYmxvY2tzKGUyZnNja190IGN0eCwgY2hhciAqYmxvY2tfYnVmKTsKK2V4dGVybiB2b2lkIGUyZnNja19wYXNzMihlMmZzY2tfdCBjdHgpOworZXh0ZXJuIHZvaWQgZTJmc2NrX3Bhc3MzKGUyZnNja190IGN0eCk7CitleHRlcm4gdm9pZCBlMmZzY2tfcGFzczQoZTJmc2NrX3QgY3R4KTsKK2V4dGVybiB2b2lkIGUyZnNja19wYXNzNShlMmZzY2tfdCBjdHgpOworCisvKiBlMmZzY2suYyAqLworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfY29udGV4dChlMmZzY2tfdCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZTJmc2NrX3Jlc2V0X2NvbnRleHQoZTJmc2NrX3QgY3R4KTsKK2V4dGVybiB2b2lkIGUyZnNja19mcmVlX2NvbnRleHQoZTJmc2NrX3QgY3R4KTsKK2V4dGVybiBpbnQgZTJmc2NrX3J1bihlMmZzY2tfdCBjdHgpOworCisKKy8qIGJhZGJsb2NrLmMgKi8KK2V4dGVybiB2b2lkIHJlYWRfYmFkX2Jsb2Nrc19maWxlKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqYmFkX2Jsb2Nrc19maWxlLAorCQkJCSBpbnQgcmVwbGFjZV9iYWRfYmxvY2tzKTsKKworLyogZGlyaW5mby5jICovCitleHRlcm4gdm9pZCBlMmZzY2tfYWRkX2Rpcl9pbmZvKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGV4dDJfaW5vX3QgcGFyZW50KTsKK2V4dGVybiB2b2lkIGUyZnNja19mcmVlX2Rpcl9pbmZvKGUyZnNja190IGN0eCk7CitleHRlcm4gaW50IGUyZnNja19nZXRfbnVtX2RpcmluZm8oZTJmc2NrX3QgY3R4KTsKK2V4dGVybiBzdHJ1Y3QgZGlyX2luZm9faXRlciAqZTJmc2NrX2Rpcl9pbmZvX2l0ZXJfYmVnaW4oZTJmc2NrX3QgY3R4KTsKK2V4dGVybiBzdHJ1Y3QgZGlyX2luZm8gKmUyZnNja19kaXJfaW5mb19pdGVyKGUyZnNja190IGN0eCwKKwkJCQkJICAgICBzdHJ1Y3QgZGlyX2luZm9faXRlciAqKTsKK2V4dGVybiB2b2lkIGUyZnNja19kaXJfaW5mb19pdGVyX2VuZChlMmZzY2tfdCBjdHgsIHN0cnVjdCBkaXJfaW5mb19pdGVyICopOworZXh0ZXJuIGludCBlMmZzY2tfZGlyX2luZm9fc2V0X3BhcmVudChlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICAgIGV4dDJfaW5vX3QgcGFyZW50KTsKK2V4dGVybiBpbnQgZTJmc2NrX2Rpcl9pbmZvX3NldF9kb3Rkb3QoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCQkgICAgICBleHQyX2lub190IGRvdGRvdCk7CitleHRlcm4gaW50IGUyZnNja19kaXJfaW5mb19nZXRfcGFyZW50KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgZXh0Ml9pbm9fdCAqcGFyZW50KTsKK2V4dGVybiBpbnQgZTJmc2NrX2Rpcl9pbmZvX2dldF9kb3Rkb3QoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCQkgICAgICBleHQyX2lub190ICpkb3Rkb3QpOworCisvKiBkeF9kaXJpbmZvLmMgKi8KK2V4dGVybiB2b2lkIGUyZnNja19hZGRfZHhfZGlyKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGludCBudW1fYmxvY2tzKTsKK2V4dGVybiBzdHJ1Y3QgZHhfZGlyX2luZm8gKmUyZnNja19nZXRfZHhfZGlyX2luZm8oZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubyk7CitleHRlcm4gdm9pZCBlMmZzY2tfZnJlZV9keF9kaXJfaW5mbyhlMmZzY2tfdCBjdHgpOworZXh0ZXJuIGludCBlMmZzY2tfZ2V0X251bV9keF9kaXJpbmZvKGUyZnNja190IGN0eCk7CitleHRlcm4gc3RydWN0IGR4X2Rpcl9pbmZvICplMmZzY2tfZHhfZGlyX2luZm9faXRlcihlMmZzY2tfdCBjdHgsIGludCAqY29udHJvbCk7CisKKy8qIGVhX3JlZmNvdW50LmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZWFfcmVmY291bnRfY3JlYXRlKGludCBzaXplLCBleHQyX3JlZmNvdW50X3QgKnJldCk7CitleHRlcm4gdm9pZCBlYV9yZWZjb3VudF9mcmVlKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCk7CitleHRlcm4gZXJyY29kZV90IGVhX3JlZmNvdW50X2ZldGNoKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgYmxrNjRfdCBibGssIGludCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZWFfcmVmY291bnRfaW5jcmVtZW50KGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwKKwkJCQkgICAgICAgYmxrNjRfdCBibGssIGludCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZWFfcmVmY291bnRfZGVjcmVtZW50KGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwKKwkJCQkgICAgICAgYmxrNjRfdCBibGssIGludCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZWFfcmVmY291bnRfc3RvcmUoZXh0Ml9yZWZjb3VudF90IHJlZmNvdW50LAorCQkJCSAgIGJsazY0X3QgYmxrLCBpbnQgY291bnQpOworZXh0ZXJuIGJsa190IGV4dDJmc19nZXRfcmVmY291bnRfc2l6ZShleHQyX3JlZmNvdW50X3QgcmVmY291bnQpOworZXh0ZXJuIHZvaWQgZWFfcmVmY291bnRfaW50cl9iZWdpbihleHQyX3JlZmNvdW50X3QgcmVmY291bnQpOworZXh0ZXJuIGJsazY0X3QgZWFfcmVmY291bnRfaW50cl9uZXh0KGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgaW50ICpyZXQpOworCisvKiBlaGFuZGxlci5jICovCitleHRlcm4gY29uc3QgY2hhciAqZWhhbmRsZXJfb3BlcmF0aW9uKGNvbnN0IGNoYXIgKm9wKTsKK2V4dGVybiB2b2lkIGVoYW5kbGVyX2luaXQoaW9fY2hhbm5lbCBjaGFubmVsKTsKKworLyogZXh0ZW50cy5jICovCitzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0OworZXJyY29kZV90IGUyZnNja19yZWJ1aWxkX2V4dGVudHNfbGF0ZXIoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubyk7CitpbnQgZTJmc2NrX2lub193aWxsX2JlX3JlYnVpbHQoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubyk7Cit2b2lkIGUyZnNja19wYXNzMWUoZTJmc2NrX3QgY3R4KTsKK2VycmNvZGVfdCBlMmZzY2tfY2hlY2tfcmVidWlsZF9leHRlbnRzKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgICAgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCk7CitlcnJjb2RlX3QgZTJmc2NrX3Nob3VsZF9yZWJ1aWxkX2V4dGVudHMoZTJmc2NrX3QgY3R4LAorCQkJCQlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4LAorCQkJCQlzdHJ1Y3QgZXh0ZW50X3RyZWVfaW5mbyAqZXRpLAorCQkJCQlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbyAqaW5mbyk7CisKKy8qIGpvdXJuYWwuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfY2hlY2tfZXh0M19qb3VybmFsKGUyZnNja190IGN0eCk7CitleHRlcm4gZXJyY29kZV90IGUyZnNja19ydW5fZXh0M19qb3VybmFsKGUyZnNja190IGN0eCk7CitleHRlcm4gdm9pZCBlMmZzY2tfbW92ZV9leHQzX2pvdXJuYWwoZTJmc2NrX3QgY3R4KTsKK2V4dGVybiBpbnQgZTJmc2NrX2ZpeF9leHQzX2pvdXJuYWxfaGludChlMmZzY2tfdCBjdHgpOworCisvKiBsb2dmaWxlLmMgKi8KK2V4dGVybiB2b2lkIHNldF91cF9sb2dnaW5nKGUyZnNja190IGN0eCk7CisKKy8qIHF1b3RhLmMgKi8KK2V4dGVybiB2b2lkIGUyZnNja19oaWRlX3F1b3RhKGUyZnNja190IGN0eCk7CisKKy8qIHBhc3MxLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZTJmc2NrX3NldHVwX2ljb3VudChlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKmljb3VudF9uYW1lLAorCQkJCSAgICAgaW50IGZsYWdzLCBleHQyX2ljb3VudF90IGhpbnQsCisJCQkJICAgICBleHQyX2ljb3VudF90ICpyZXQpOworZXh0ZXJuIHZvaWQgZTJmc2NrX3VzZV9pbm9kZV9zaG9ydGN1dHMoZTJmc2NrX3QgY3R4LCBpbnQgdXNlX3Nob3J0Y3V0cyk7CitleHRlcm4gaW50IGUyZnNja19wYXNzMV9jaGVja19kZXZpY2VfaW5vZGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSk7CitleHRlcm4gaW50IGUyZnNja19wYXNzMV9jaGVja19zeW1saW5rKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGNoYXIgKmJ1Zik7CitleHRlcm4gdm9pZCBlMmZzY2tfY2xlYXJfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGludCByZXN0YXJ0X2ZsYWcsCisJCQkgICAgICAgY29uc3QgY2hhciAqc291cmNlKTsKK2V4dGVybiB2b2lkIGUyZnNja19pbnRlcmNlcHRfYmxvY2tfYWxsb2NhdGlvbnMoZTJmc2NrX3QgY3R4KTsKKworLyogcGFzczIuYyAqLworZXh0ZXJuIGludCBlMmZzY2tfcHJvY2Vzc19iYWRfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGRpciwKKwkJCQkgICAgZXh0Ml9pbm9fdCBpbm8sIGNoYXIgKmJ1Zik7CitleHRlcm4gaW50IGdldF9maWxlbmFtZV9oYXNoKGV4dDJfZmlsc3lzIGZzLCBpbnQgZW5jcnlwdGVkLCBpbnQgdmVyc2lvbiwKKwkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKKwkJCSAgICAgZXh0Ml9kaXJoYXNoX3QgKnJldF9oYXNoLAorCQkJICAgICBleHQyX2Rpcmhhc2hfdCAqcmV0X21pbm9yX2hhc2gpOworCisvKiBwYXNzMy5jICovCitleHRlcm4gaW50IGUyZnNja19yZWNvbm5lY3RfZmlsZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vZGUpOworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfZXhwYW5kX2RpcmVjdG9yeShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgZGlyLAorCQkJCQkgaW50IG51bSwgaW50IGdhdXJhbnRlZWRfc2l6ZSk7CitleHRlcm4gZXh0Ml9pbm9fdCBlMmZzY2tfZ2V0X2xvc3RfYW5kX2ZvdW5kKGUyZnNja190IGN0eCwgaW50IGZpeCk7CitleHRlcm4gZXJyY29kZV90IGUyZnNja19hZGp1c3RfaW5vZGVfY291bnQoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCQkJICAgaW50IGFkaik7CisKKy8qIHJlYWRhaGVhZC5jICovCisjZGVmaW5lIEUyRlNDS19SRUFEQV9TVVBFUgkoMHgwMSkKKyNkZWZpbmUgRTJGU0NLX1JFQURBX0dEVAkoMHgwMikKKyNkZWZpbmUgRTJGU0NLX1JFQURBX0JCSVRNQVAJKDB4MDQpCisjZGVmaW5lIEUyRlNDS19SRUFEQV9JQklUTUFQCSgweDA4KQorI2RlZmluZSBFMkZTQ0tfUkVBREFfSVRBQkxFCSgweDEwKQorI2RlZmluZSBFMkZTQ0tfUkVBREFfQUxMX0ZMQUdTCSgweDFGKQorZXJyY29kZV90IGUyZnNja19yZWFkYWhlYWQoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgZGdycF90IHN0YXJ0LAorCQkJICAgZGdycF90IG5ncm91cHMpOworI2RlZmluZSBFMkZTQ0tfUkFfREJMSVNUX0lHTk9SRV9CTE9DS0NOVAkoMHgwMSkKKyNkZWZpbmUgRTJGU0NLX1JBX0RCTElTVF9BTExfRkxBR1MJCSgweDAxKQorZXJyY29kZV90IGUyZnNja19yZWFkYWhlYWRfZGJsaXN0KGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MsCisJCQkJICBleHQyX2RibGlzdCBkYmxpc3QsCisJCQkJICB1bnNpZ25lZCBsb25nIGxvbmcgc3RhcnQsCisJCQkJICB1bnNpZ25lZCBsb25nIGxvbmcgY291bnQpOworaW50IGUyZnNja19jYW5fcmVhZGFoZWFkKGV4dDJfZmlsc3lzIGZzKTsKK3Vuc2lnbmVkIGxvbmcgbG9uZyBlMmZzY2tfZ3Vlc3NfcmVhZGFoZWFkKGV4dDJfZmlsc3lzIGZzKTsKKworLyogcmVnaW9uLmMgKi8KK2V4dGVybiByZWdpb25fdCByZWdpb25fY3JlYXRlKHJlZ2lvbl9hZGRyX3QgbWluLCByZWdpb25fYWRkcl90IG1heCk7CitleHRlcm4gdm9pZCByZWdpb25fZnJlZShyZWdpb25fdCByZWdpb24pOworZXh0ZXJuIGludCByZWdpb25fYWxsb2NhdGUocmVnaW9uX3QgcmVnaW9uLCByZWdpb25fYWRkcl90IHN0YXJ0LCBpbnQgbik7CisKKy8qIHJlaGFzaC5jICovCit2b2lkIGUyZnNja19yZWhhc2hfZGlyX2xhdGVyKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8pOworaW50IGUyZnNja19kaXJfd2lsbF9iZV9yZWhhc2hlZChlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vKTsKK2VycmNvZGVfdCBlMmZzY2tfcmVoYXNoX2RpcihlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpOwordm9pZCBlMmZzY2tfcmVoYXNoX2RpcmVjdG9yaWVzKGUyZnNja190IGN0eCk7CisKKy8qIHNpZ2NhdGNoZXIuYyAqLwordm9pZCBzaWdjYXRjaGVyX3NldHVwKHZvaWQpOworCisvKiBzdXBlci5jICovCit2b2lkIGNoZWNrX3N1cGVyX2Jsb2NrKGUyZnNja190IGN0eCk7CitpbnQgY2hlY2tfYmFja3VwX3N1cGVyX2Jsb2NrKGUyZnNja190IGN0eCk7Cit2b2lkIGNoZWNrX3Jlc2l6ZV9pbm9kZShlMmZzY2tfdCBjdHgpOworCisvKiB1dGlsLmMgKi8KK2V4dGVybiB2b2lkICplMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGUyZnNja190IGN0eCwgdW5zaWduZWQgaW50IHNpemUsCisJCQkJICAgIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uKTsKK2V4dGVybiBpbnQgYXNrKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqIHN0cmluZywgaW50IGRlZik7CitleHRlcm4gaW50IGFza195bihlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKiBzdHJpbmcsIGludCBkZWYpOworZXh0ZXJuIHZvaWQgZmF0YWxfZXJyb3IoZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICogZm10X3N0cmluZyk7CitleHRlcm4gdm9pZCBsb2dfb3V0KGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJRTJGU0NLX0FUVFIoKGZvcm1hdChwcmludGYsIDIsIDMpKSk7CitleHRlcm4gdm9pZCBsb2dfZXJyKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisJRTJGU0NLX0FUVFIoKGZvcm1hdChwcmludGYsIDIsIDMpKSk7CitleHRlcm4gdm9pZCBlMmZzY2tfcmVhZF9iaXRtYXBzKGUyZnNja190IGN0eCk7CitleHRlcm4gdm9pZCBlMmZzY2tfd3JpdGVfYml0bWFwcyhlMmZzY2tfdCBjdHgpOworZXh0ZXJuIHZvaWQgcHJlZW5oYWx0KGUyZnNja190IGN0eCk7CitleHRlcm4gY2hhciAqc3RyaW5nX2NvcHkoZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pOworZXh0ZXJuIGludCBmc19wcm9jX2NoZWNrKGNvbnN0IGNoYXIgKmZzX25hbWUpOworZXh0ZXJuIGludCBjaGVja19mb3JfbW9kdWxlcyhjb25zdCBjaGFyICpmc19uYW1lKTsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworZXh0ZXJuIHZvaWQgcHJpbnRfcmVzb3VyY2VfdHJhY2soZTJmc2NrX3QgY3R4LAorCQkJCSBjb25zdCBjaGFyICpkZXNjLAorCQkJCSBzdHJ1Y3QgcmVzb3VyY2VfdHJhY2sgKnRyYWNrLAorCQkJCSBpb19jaGFubmVsIGNoYW5uZWwpOworZXh0ZXJuIHZvaWQgaW5pdF9yZXNvdXJjZV90cmFjayhzdHJ1Y3QgcmVzb3VyY2VfdHJhY2sgKnRyYWNrLAorCQkJCWlvX2NoYW5uZWwgY2hhbm5lbCk7CisjZWxzZQorI2RlZmluZSBwcmludF9yZXNvdXJjZV90cmFjayhjdHgsIGRlc2MsIHRyYWNrLCBjaGFubmVsKSBkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIGluaXRfcmVzb3VyY2VfdHJhY2sodHJhY2ssIGNoYW5uZWwpIGRvIHsgfSB3aGlsZSAoMCkKKyNlbmRpZgorZXh0ZXJuIGludCBpbm9kZV9oYXNfdmFsaWRfYmxvY2tzKHN0cnVjdCBleHQyX2lub2RlICppbm9kZSk7CitleHRlcm4gdm9pZCBlMmZzY2tfcmVhZF9pbm9kZShlMmZzY2tfdCBjdHgsIHVuc2lnbmVkIGxvbmcgaW5vLAorCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwgY29uc3QgY2hhciAqIHByb2MpOworZXh0ZXJuIHZvaWQgZTJmc2NrX3JlYWRfaW5vZGVfZnVsbChlMmZzY2tfdCBjdHgsIHVuc2lnbmVkIGxvbmcgaW5vLAorCQkJCSAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgICBjb25zdCBpbnQgYnVmc2l6ZSwgY29uc3QgY2hhciAqcHJvYyk7CitleHRlcm4gdm9pZCBlMmZzY2tfd3JpdGVfaW5vZGUoZTJmc2NrX3QgY3R4LCB1bnNpZ25lZCBsb25nIGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlLCBjb25zdCBjaGFyICogcHJvYyk7CitleHRlcm4gdm9pZCBlMmZzY2tfd3JpdGVfaW5vZGVfZnVsbChlMmZzY2tfdCBjdHgsIHVuc2lnbmVkIGxvbmcgaW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsIGludCBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByb2MpOworI2lmZGVmIE1UUkFDRQorZXh0ZXJuIHZvaWQgbXRyYWNlX3ByaW50KGNoYXIgKm1lc2cpOworI2VuZGlmCitleHRlcm4gYmxrNjRfdCBnZXRfYmFja3VwX3NiKGUyZnNja190IGN0eCwgZXh0Ml9maWxzeXMgZnMsCisJCQkgICBjb25zdCBjaGFyICpuYW1lLCBpb19tYW5hZ2VyIG1hbmFnZXIpOworZXh0ZXJuIGludCBleHQyX2ZpbGVfdHlwZSh1bnNpZ25lZCBpbnQgbW9kZSk7CitleHRlcm4gaW50IHdyaXRlX2FsbChpbnQgZmQsIGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KTsKK3ZvaWQgZHVtcF9tbXBfbXNnKHN0cnVjdCBtbXBfc3RydWN0ICptbXAsIGNvbnN0IGNoYXIgKm1zZyk7CitlcnJjb2RlX3QgZTJmc2NrX21tcF91cGRhdGUoZXh0Ml9maWxzeXMgZnMpOworCitleHRlcm4gdm9pZCBlMmZzY2tfc2V0X2JpdG1hcF90eXBlKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgIHVuc2lnbmVkIGludCBkZWZhdWx0X3R5cGUsCisJCQkJICAgY29uc3QgY2hhciAqcHJvZmlsZV9uYW1lLAorCQkJCSAgIHVuc2lnbmVkIGludCAqb2xkX3R5cGUpOworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkJICAgICAgaW50IGRlZmF1bHRfdHlwZSwKKwkJCQkJICAgICAgY29uc3QgY2hhciAqcHJvZmlsZV9uYW1lLAorCQkJCQkgICAgICBleHQyZnNfaW5vZGVfYml0bWFwICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkJICAgICAgaW50IGRlZmF1bHRfdHlwZSwKKwkJCQkJICAgICAgY29uc3QgY2hhciAqcHJvZmlsZV9uYW1lLAorCQkJCQkgICAgICBleHQyZnNfYmxvY2tfYml0bWFwICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfc3ViY2x1c3Rlcl9iaXRtYXAoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkJCSAgIGludCBkZWZhdWx0X3R5cGUsCisJCQkJCQkgICBjb25zdCBjaGFyICpwcm9maWxlX25hbWUsCisJCQkJCQkgICBleHQyZnNfYmxvY2tfYml0bWFwICpyZXQpOwordW5zaWduZWQgbG9uZyBsb25nIGdldF9tZW1vcnlfc2l6ZSh2b2lkKTsKKworLyogdW5peC5jICovCitleHRlcm4gdm9pZCBlMmZzY2tfY2xlYXJfcHJvZ2JhcihlMmZzY2tfdCBjdHgpOworZXh0ZXJuIGludCBlMmZzY2tfc2ltcGxlX3Byb2dyZXNzKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqbGFiZWwsCisJCQkJICBmbG9hdCBwZXJjZW50LCB1bnNpZ25lZCBpbnQgZHB5bnVtKTsKKyNlbmRpZiAvKiBfRTJGU0NLX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZWFfcmVmY291bnQuYyBiL2UyZnNwcm9ncy9lMmZzY2svZWFfcmVmY291bnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ZhZjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9lYV9yZWZjb3VudC5jCkBAIC0wLDAgKzEsNDYxIEBACisvKgorICogZWFfcmVmY291bnQuYworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZQorICogcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2lmZGVmIFRFU1RfUFJPR1JBTQorI3VuZGVmIEVOQUJMRV9OTFMKKyNlbmRpZgorI2luY2x1ZGUgImUyZnNjay5oIgorCisvKgorICogVGhlIHN0cmF0ZWd5IHdlIHVzZSBmb3Iga2VlcGluZyB0cmFjayBvZiBFQSByZWZjb3VudHMgaXMgYXMKKyAqIGZvbGxvd3MuICBXZSBrZWVwIGEgc29ydGVkIGFycmF5IG9mIGZpcnN0IEVBIGJsb2NrcyBhbmQgaXRzCisgKiByZWZlcmVuY2UgY291bnRzLiAgT25jZSB0aGUgcmVmY291bnQgaGFzIGRyb3BwZWQgdG8gemVybywgaXQgaXMKKyAqIHJlbW92ZWQgZnJvbSB0aGUgYXJyYXkgdG8gc2F2ZSBtZW1vcnkgc3BhY2UuICBPbmNlIHRoZSBFQSBibG9jayBpcworICogY2hlY2tlZCwgaXRzIGJpdCBpcyBzZXQgaW4gdGhlIGJsb2NrX2VhX21hcCBiaXRtYXAuCisgKi8KK3N0cnVjdCBlYV9yZWZjb3VudF9lbCB7CisJYmxrNjRfdAllYV9ibGs7CisJaW50CWVhX2NvdW50OworfTsKKworc3RydWN0IGVhX3JlZmNvdW50IHsKKwlibGtfdAkJY291bnQ7CisJYmxrX3QJCXNpemU7CisJYmxrX3QJCWN1cnNvcjsKKwlzdHJ1Y3QgZWFfcmVmY291bnRfZWwJKmxpc3Q7Cit9OworCit2b2lkIGVhX3JlZmNvdW50X2ZyZWUoZXh0Ml9yZWZjb3VudF90IHJlZmNvdW50KQoreworCWlmICghcmVmY291bnQpCisJCXJldHVybjsKKworCWlmIChyZWZjb3VudC0+bGlzdCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZyZWZjb3VudC0+bGlzdCk7CisJZXh0MmZzX2ZyZWVfbWVtKCZyZWZjb3VudCk7Cit9CisKK2VycmNvZGVfdCBlYV9yZWZjb3VudF9jcmVhdGUoaW50IHNpemUsIGV4dDJfcmVmY291bnRfdCAqcmV0KQoreworCWV4dDJfcmVmY291bnRfdAlyZWZjb3VudDsKKwllcnJjb2RlX3QJcmV0dmFsOworCXNpemVfdAkJYnl0ZXM7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGVhX3JlZmNvdW50KSwgJnJlZmNvdW50KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCW1lbXNldChyZWZjb3VudCwgMCwgc2l6ZW9mKHN0cnVjdCBlYV9yZWZjb3VudCkpOworCisJaWYgKCFzaXplKQorCQlzaXplID0gNTAwOworCXJlZmNvdW50LT5zaXplID0gc2l6ZTsKKwlieXRlcyA9IChzaXplX3QpIChzaXplICogc2l6ZW9mKHN0cnVjdCBlYV9yZWZjb3VudF9lbCkpOworI2lmZGVmIERFQlVHCisJcHJpbnRmKCJSZWZjb3VudCBhbGxvY2F0ZWQgJWQgZW50cmllcywgJWQgYnl0ZXMuXG4iLAorCSAgICAgICByZWZjb3VudC0+c2l6ZSwgYnl0ZXMpOworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oYnl0ZXMsICZyZWZjb3VudC0+bGlzdCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KHJlZmNvdW50LT5saXN0LCAwLCBieXRlcyk7CisKKwlyZWZjb3VudC0+Y291bnQgPSAwOworCXJlZmNvdW50LT5jdXJzb3IgPSAwOworCisJKnJldCA9IHJlZmNvdW50OworCXJldHVybiAwOworCitlcnJvdXQ6CisJZWFfcmVmY291bnRfZnJlZShyZWZjb3VudCk7CisJcmV0dXJuKHJldHZhbCk7Cit9CisKKy8qCisgKiBjb2xsYXBzZV9yZWZjb3VudCgpIC0tLSBnbyB0aHJvdWdoIHRoZSByZWZjb3VudCBhcnJheSwgYW5kIGdldCByaWQKKyAqIG9mIGFueSBjb3VudCA9PSB6ZXJvIGVudHJpZXMKKyAqLworc3RhdGljIHZvaWQgcmVmY291bnRfY29sbGFwc2UoZXh0Ml9yZWZjb3VudF90IHJlZmNvdW50KQoreworCXVuc2lnbmVkIGludAlpLCBqOworCXN0cnVjdCBlYV9yZWZjb3VudF9lbAkqbGlzdDsKKworCWxpc3QgPSByZWZjb3VudC0+bGlzdDsKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHJlZmNvdW50LT5jb3VudDsgaSsrKSB7CisJCWlmIChsaXN0W2ldLmVhX2NvdW50KSB7CisJCQlpZiAoaSAhPSBqKQorCQkJCWxpc3Rbal0gPSBsaXN0W2ldOworCQkJaisrOworCQl9CisJfQorI2lmIGRlZmluZWQoREVCVUcpIHx8IGRlZmluZWQoVEVTVF9QUk9HUkFNKQorCXByaW50ZigiUmVmY291bnRfY29sbGFwc2U6IHNpemUgd2FzICVkLCBub3cgJWRcbiIsCisJICAgICAgIHJlZmNvdW50LT5jb3VudCwgaik7CisjZW5kaWYKKwlyZWZjb3VudC0+Y291bnQgPSBqOworfQorCisKKy8qCisgKiBpbnNlcnRfcmVmY291bnRfZWwoKSAtLS0gSW5zZXJ0IGEgbmV3IGVudHJ5IGludG8gdGhlIHNvcnRlZCBsaXN0IGF0IGEKKyAqIAlzcGVjaWZpZWQgcG9zaXRpb24uCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZWFfcmVmY291bnRfZWwgKmluc2VydF9yZWZjb3VudF9lbChleHQyX3JlZmNvdW50X3QgcmVmY291bnQsCisJCQkJCQkgYmxrNjRfdCBibGssIGludCBwb3MpCit7CisJc3RydWN0IGVhX3JlZmNvdW50X2VsIAkqZWw7CisJZXJyY29kZV90CQlyZXR2YWw7CisJYmxrX3QJCQluZXdfc2l6ZSA9IDA7CisJaW50CQkJbnVtOworCisJaWYgKHJlZmNvdW50LT5jb3VudCA+PSByZWZjb3VudC0+c2l6ZSkgeworCQluZXdfc2l6ZSA9IHJlZmNvdW50LT5zaXplICsgMTAwOworI2lmZGVmIERFQlVHCisJCXByaW50ZigiUmVhbGxvY2F0aW5nIHJlZmNvdW50ICVkIGVudHJpZXMuLi5cbiIsIG5ld19zaXplKTsKKyNlbmRpZgorCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX21lbSgoc2l6ZV90KSByZWZjb3VudC0+c2l6ZSAqCisJCQkJCSAgIHNpemVvZihzdHJ1Y3QgZWFfcmVmY291bnRfZWwpLAorCQkJCQkgICAoc2l6ZV90KSBuZXdfc2l6ZSAqCisJCQkJCSAgIHNpemVvZihzdHJ1Y3QgZWFfcmVmY291bnRfZWwpLAorCQkJCQkgICAmcmVmY291bnQtPmxpc3QpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIDA7CisJCXJlZmNvdW50LT5zaXplID0gbmV3X3NpemU7CisJfQorCW51bSA9IChpbnQpIHJlZmNvdW50LT5jb3VudCAtIHBvczsKKwlpZiAobnVtIDwgMCkKKwkJcmV0dXJuIDA7CS8qIHNob3VsZCBuZXZlciBoYXBwZW4gKi8KKwlpZiAobnVtKSB7CisJCW1lbW1vdmUoJnJlZmNvdW50LT5saXN0W3BvcysxXSwgJnJlZmNvdW50LT5saXN0W3Bvc10sCisJCQlzaXplb2Yoc3RydWN0IGVhX3JlZmNvdW50X2VsKSAqIG51bSk7CisJfQorCXJlZmNvdW50LT5jb3VudCsrOworCWVsID0gJnJlZmNvdW50LT5saXN0W3Bvc107CisJZWwtPmVhX2NvdW50ID0gMDsKKwllbC0+ZWFfYmxrID0gYmxrOworCXJldHVybiBlbDsKK30KKworCisvKgorICogZ2V0X3JlZmNvdW50X2VsKCkgLS0tIGdpdmVuIGFuIGJsb2NrIG51bWJlciwgdHJ5IHRvIGZpbmQgcmVmY291bnQKKyAqIAlpbmZvcm1hdGlvbiBpbiB0aGUgc29ydGVkIGxpc3QuICBJZiB0aGUgY3JlYXRlIGZsYWcgaXMgc2V0LAorICogCWFuZCB3ZSBjYW4ndCBmaW5kIGFuIGVudHJ5LCBjcmVhdGUgb25lIGluIHRoZSBzb3J0ZWQgbGlzdC4KKyAqLworc3RhdGljIHN0cnVjdCBlYV9yZWZjb3VudF9lbCAqZ2V0X3JlZmNvdW50X2VsKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwKKwkJCQkJICAgICAgYmxrNjRfdCBibGssIGludCBjcmVhdGUpCit7CisJaW50CWxvdywgaGlnaCwgbWlkOworCisJaWYgKCFyZWZjb3VudCB8fCAhcmVmY291bnQtPmxpc3QpCisJCXJldHVybiAwOworcmV0cnk6CisJbG93ID0gMDsKKwloaWdoID0gKGludCkgcmVmY291bnQtPmNvdW50LTE7CisJaWYgKGNyZWF0ZSAmJiAoKHJlZmNvdW50LT5jb3VudCA9PSAwKSB8fAorCQkgICAgICAgKGJsayA+IHJlZmNvdW50LT5saXN0W2hpZ2hdLmVhX2JsaykpKSB7CisJCWlmIChyZWZjb3VudC0+Y291bnQgPj0gcmVmY291bnQtPnNpemUpCisJCQlyZWZjb3VudF9jb2xsYXBzZShyZWZjb3VudCk7CisKKwkJcmV0dXJuIGluc2VydF9yZWZjb3VudF9lbChyZWZjb3VudCwgYmxrLAorCQkJCQkgICh1bnNpZ25lZCkgcmVmY291bnQtPmNvdW50KTsKKwl9CisJaWYgKHJlZmNvdW50LT5jb3VudCA9PSAwKQorCQlyZXR1cm4gMDsKKworCWlmIChyZWZjb3VudC0+Y3Vyc29yID49IHJlZmNvdW50LT5jb3VudCkKKwkJcmVmY291bnQtPmN1cnNvciA9IDA7CisJaWYgKGJsayA9PSByZWZjb3VudC0+bGlzdFtyZWZjb3VudC0+Y3Vyc29yXS5lYV9ibGspCisJCXJldHVybiAmcmVmY291bnQtPmxpc3RbcmVmY291bnQtPmN1cnNvcisrXTsKKyNpZmRlZiBERUJVRworCXByaW50ZigiTm9uLWN1cnNvciBnZXRfcmVmY291bnRfZWw6ICV1XG4iLCBibGspOworI2VuZGlmCisJd2hpbGUgKGxvdyA8PSBoaWdoKSB7CisJCW1pZCA9IChsb3craGlnaCkvMjsKKwkJaWYgKGJsayA9PSByZWZjb3VudC0+bGlzdFttaWRdLmVhX2JsaykgeworCQkJcmVmY291bnQtPmN1cnNvciA9IG1pZCsxOworCQkJcmV0dXJuICZyZWZjb3VudC0+bGlzdFttaWRdOworCQl9CisJCWlmIChibGsgPCByZWZjb3VudC0+bGlzdFttaWRdLmVhX2JsaykKKwkJCWhpZ2ggPSBtaWQtMTsKKwkJZWxzZQorCQkJbG93ID0gbWlkKzE7CisJfQorCS8qCisJICogSWYgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW50cnksIGl0IHNob3VsZCBiZSByaWdodCBhdAorCSAqIGxvdyAod2hlcmUgaGlnaCB3aWxsIGJlIGxlZnQgYXQgbG93LTEpLgorCSAqLworCWlmIChjcmVhdGUpIHsKKwkJaWYgKHJlZmNvdW50LT5jb3VudCA+PSByZWZjb3VudC0+c2l6ZSkgeworCQkJcmVmY291bnRfY29sbGFwc2UocmVmY291bnQpOworCQkJaWYgKHJlZmNvdW50LT5jb3VudCA8IHJlZmNvdW50LT5zaXplKQorCQkJCWdvdG8gcmV0cnk7CisJCX0KKwkJcmV0dXJuIGluc2VydF9yZWZjb3VudF9lbChyZWZjb3VudCwgYmxrLCBsb3cpOworCX0KKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGVhX3JlZmNvdW50X2ZldGNoKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgYmxrNjRfdCBibGssCisJCQkJaW50ICpyZXQpCit7CisJc3RydWN0IGVhX3JlZmNvdW50X2VsCSplbDsKKworCWVsID0gZ2V0X3JlZmNvdW50X2VsKHJlZmNvdW50LCBibGssIDApOworCWlmICghZWwpIHsKKwkJKnJldCA9IDA7CisJCXJldHVybiAwOworCX0KKwkqcmV0ID0gZWwtPmVhX2NvdW50OworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZWFfcmVmY291bnRfaW5jcmVtZW50KGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgYmxrNjRfdCBibGssIGludCAqcmV0KQoreworCXN0cnVjdCBlYV9yZWZjb3VudF9lbAkqZWw7CisKKwllbCA9IGdldF9yZWZjb3VudF9lbChyZWZjb3VudCwgYmxrLCAxKTsKKwlpZiAoIWVsKQorCQlyZXR1cm4gRVhUMl9FVF9OT19NRU1PUlk7CisJZWwtPmVhX2NvdW50Kys7CisKKwlpZiAocmV0KQorCQkqcmV0ID0gZWwtPmVhX2NvdW50OworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZWFfcmVmY291bnRfZGVjcmVtZW50KGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgYmxrNjRfdCBibGssIGludCAqcmV0KQoreworCXN0cnVjdCBlYV9yZWZjb3VudF9lbAkqZWw7CisKKwllbCA9IGdldF9yZWZjb3VudF9lbChyZWZjb3VudCwgYmxrLCAwKTsKKwlpZiAoIWVsIHx8IGVsLT5lYV9jb3VudCA9PSAwKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJZWwtPmVhX2NvdW50LS07CisKKwlpZiAocmV0KQorCQkqcmV0ID0gZWwtPmVhX2NvdW50OworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZWFfcmVmY291bnRfc3RvcmUoZXh0Ml9yZWZjb3VudF90IHJlZmNvdW50LCBibGs2NF90IGJsaywgaW50IGNvdW50KQoreworCXN0cnVjdCBlYV9yZWZjb3VudF9lbAkqZWw7CisKKwkvKgorCSAqIEdldCB0aGUgcmVmY291bnQgZWxlbWVudAorCSAqLworCWVsID0gZ2V0X3JlZmNvdW50X2VsKHJlZmNvdW50LCBibGssIGNvdW50ID8gMSA6IDApOworCWlmICghZWwpCisJCXJldHVybiBjb3VudCA/IEVYVDJfRVRfTk9fTUVNT1JZIDogMDsKKwllbC0+ZWFfY291bnQgPSBjb3VudDsKKwlyZXR1cm4gMDsKK30KKworYmxrX3QgZXh0MmZzX2dldF9yZWZjb3VudF9zaXplKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCkKK3sKKwlpZiAoIXJlZmNvdW50KQorCQlyZXR1cm4gMDsKKworCXJldHVybiByZWZjb3VudC0+c2l6ZTsKK30KKwordm9pZCBlYV9yZWZjb3VudF9pbnRyX2JlZ2luKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCkKK3sKKwlyZWZjb3VudC0+Y3Vyc29yID0gMDsKK30KKworCitibGs2NF90IGVhX3JlZmNvdW50X2ludHJfbmV4dChleHQyX3JlZmNvdW50X3QgcmVmY291bnQsCisJCQkJaW50ICpyZXQpCit7CisJc3RydWN0IGVhX3JlZmNvdW50X2VsCSpsaXN0OworCisJd2hpbGUgKDEpIHsKKwkJaWYgKHJlZmNvdW50LT5jdXJzb3IgPj0gcmVmY291bnQtPmNvdW50KQorCQkJcmV0dXJuIDA7CisJCWxpc3QgPSByZWZjb3VudC0+bGlzdDsKKwkJaWYgKGxpc3RbcmVmY291bnQtPmN1cnNvcl0uZWFfY291bnQpIHsKKwkJCWlmIChyZXQpCisJCQkJKnJldCA9IGxpc3RbcmVmY291bnQtPmN1cnNvcl0uZWFfY291bnQ7CisJCQlyZXR1cm4gbGlzdFtyZWZjb3VudC0+Y3Vyc29yKytdLmVhX2JsazsKKwkJfQorCQlyZWZjb3VudC0+Y3Vyc29yKys7CisJfQorfQorCisKKyNpZmRlZiBURVNUX1BST0dSQU0KKworZXJyY29kZV90IGVhX3JlZmNvdW50X3ZhbGlkYXRlKGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwgRklMRSAqb3V0KQoreworCWVycmNvZGVfdAlyZXQgPSAwOworCWludAkJaTsKKwljb25zdCBjaGFyICpiYWQgPSAiYmFkIHJlZmNvdW50IjsKKworCWlmIChyZWZjb3VudC0+Y291bnQgPiByZWZjb3VudC0+c2l6ZSkgeworCQlmcHJpbnRmKG91dCwgIiVzOiBjb3VudCA+IHNpemVcbiIsIGJhZCk7CisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJfQorCWZvciAoaT0xOyBpIDwgcmVmY291bnQtPmNvdW50OyBpKyspIHsKKwkJaWYgKHJlZmNvdW50LT5saXN0W2ktMV0uZWFfYmxrID49IHJlZmNvdW50LT5saXN0W2ldLmVhX2JsaykgeworCQkJZnByaW50ZihvdXQsCisJCQkJIiVzOiBsaXN0WyVkXS5ibGs9JWxsdSwgbGlzdFslZF0uYmxrPSVsbHVcbiIsCisJCQkJYmFkLCBpLTEsIHJlZmNvdW50LT5saXN0W2ktMV0uZWFfYmxrLAorCQkJCWksIHJlZmNvdW50LT5saXN0W2ldLmVhX2Jsayk7CisJCQlyZXQgPSBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJCX0KKwl9CisJcmV0dXJuIHJldDsKK30KKworI2RlZmluZSBCQ09ERV9FTkQJMAorI2RlZmluZSBCQ09ERV9DUkVBVEUJMQorI2RlZmluZSBCQ09ERV9GUkVFCTIKKyNkZWZpbmUgQkNPREVfU1RPUkUJMworI2RlZmluZSBCQ09ERV9JTkNSCTQKKyNkZWZpbmUgQkNPREVfREVDUgk1CisjZGVmaW5lIEJDT0RFX0ZFVENICTYKKyNkZWZpbmUgQkNPREVfVkFMSURBVEUJNworI2RlZmluZSBCQ09ERV9MSVNUCTgKKyNkZWZpbmUgQkNPREVfQ09MTEFQU0UgOQorCitpbnQgYmNvZGVfcHJvZ3JhbVtdID0geworCUJDT0RFX0NSRUFURSwgNSwKKwlCQ09ERV9TVE9SRSwgMywgMywKKwlCQ09ERV9TVE9SRSwgNCwgNCwKKwlCQ09ERV9TVE9SRSwgMSwgMSwKKwlCQ09ERV9TVE9SRSwgOCwgOCwKKwlCQ09ERV9TVE9SRSwgMiwgMiwKKwlCQ09ERV9TVE9SRSwgNCwgMCwKKwlCQ09ERV9TVE9SRSwgMiwgMCwKKwlCQ09ERV9TVE9SRSwgNiwgNiwKKwlCQ09ERV9WQUxJREFURSwKKwlCQ09ERV9TVE9SRSwgNCwgNCwKKwlCQ09ERV9TVE9SRSwgMiwgMiwKKwlCQ09ERV9GRVRDSCwgMSwKKwlCQ09ERV9GRVRDSCwgMiwKKwlCQ09ERV9JTkNSLCAzLAorCUJDT0RFX0lOQ1IsIDMsCisJQkNPREVfREVDUiwgNCwKKwlCQ09ERV9TVE9SRSwgNCwgNCwKKwlCQ09ERV9WQUxJREFURSwKKwlCQ09ERV9TVE9SRSwgMjAsIDIwLAorCUJDT0RFX1NUT1JFLCA0MCwgNDAsCisJQkNPREVfU1RPUkUsIDMwLCAzMCwKKwlCQ09ERV9TVE9SRSwgMTAsIDEwLAorCUJDT0RFX0RFQ1IsIDMwLAorCUJDT0RFX0ZFVENILCAzMCwKKwlCQ09ERV9ERUNSLCAyLAorCUJDT0RFX0RFQ1IsIDIsCisJQkNPREVfQ09MTEFQU0UsCisJQkNPREVfTElTVCwKKwlCQ09ERV9WQUxJREFURSwKKwlCQ09ERV9GUkVFLAorCUJDT0RFX0VORAorfTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAlpID0gMDsKKwlleHQyX3JlZmNvdW50X3QgcmVmY291bnQ7CisJaW50CQlzaXplLCBhcmc7CisJYmxrNjRfdAkJYmxrOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwl3aGlsZSAoMSkgeworCQlzd2l0Y2ggKGJjb2RlX3Byb2dyYW1baSsrXSkgeworCQljYXNlIEJDT0RFX0VORDoKKwkJCWV4aXQoMCk7CisJCWNhc2UgQkNPREVfQ1JFQVRFOgorCQkJc2l6ZSA9IGJjb2RlX3Byb2dyYW1baSsrXTsKKwkJCXJldHZhbCA9IGVhX3JlZmNvdW50X2NyZWF0ZShzaXplLCAmcmVmY291bnQpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoImVhX3JlZmNvdW50X2NyZWF0ZSIsIHJldHZhbCwKKwkJCQkJIndoaWxlIGNyZWF0aW5nIHNpemUgJWQiLCBzaXplKTsKKwkJCQlleGl0KDEpOworCQkJfSBlbHNlCisJCQkJcHJpbnRmKCJDcmVhdGluZyByZWZjb3VudCB3aXRoIHNpemUgJWRcbiIsCisJCQkJICAgICAgIHNpemUpOworCQkJYnJlYWs7CisJCWNhc2UgQkNPREVfRlJFRToKKwkJCWVhX3JlZmNvdW50X2ZyZWUocmVmY291bnQpOworCQkJcmVmY291bnQgPSAwOworCQkJcHJpbnRmKCJGcmVlaW5nIHJlZmNvdW50XG4iKTsKKwkJCWJyZWFrOworCQljYXNlIEJDT0RFX1NUT1JFOgorCQkJYmxrID0gKGJsa190KSBiY29kZV9wcm9ncmFtW2krK107CisJCQlhcmcgPSBiY29kZV9wcm9ncmFtW2krK107CisJCQlwcmludGYoIlN0b3JpbmcgYmxrICVsbHUgd2l0aCB2YWx1ZSAlZFxuIiwgYmxrLCBhcmcpOworCQkJcmV0dmFsID0gZWFfcmVmY291bnRfc3RvcmUocmVmY291bnQsIGJsaywgYXJnKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJY29tX2VycigiZWFfcmVmY291bnRfc3RvcmUiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSBzdG9yaW5nIGJsayAlbGx1IiwgYmxrKTsKKwkJCWJyZWFrOworCQljYXNlIEJDT0RFX0ZFVENIOgorCQkJYmxrID0gKGJsa190KSBiY29kZV9wcm9ncmFtW2krK107CisJCQlyZXR2YWwgPSBlYV9yZWZjb3VudF9mZXRjaChyZWZjb3VudCwgYmxrLCAmYXJnKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJY29tX2VycigiZWFfcmVmY291bnRfZmV0Y2giLCByZXR2YWwsCisJCQkJCSJ3aGlsZSBmZXRjaGluZyBibGsgJWxsdSIsIGJsayk7CisJCQllbHNlCisJCQkJcHJpbnRmKCJiY29kZV9mZXRjaCglbGx1KSByZXR1cm5zICVkXG4iLAorCQkJCSAgICAgICBibGssIGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSBCQ09ERV9JTkNSOgorCQkJYmxrID0gKGJsa190KSBiY29kZV9wcm9ncmFtW2krK107CisJCQlyZXR2YWwgPSBlYV9yZWZjb3VudF9pbmNyZW1lbnQocmVmY291bnQsIGJsaywgJmFyZyk7CisJCQlpZiAocmV0dmFsKQorCQkJCWNvbV9lcnIoImVhX3JlZmNvdW50X2luY3JlbWVudCIsIHJldHZhbCwKKwkJCQkJIndoaWxlIGluY3JlbWVudGluZyBibGsgJWxsdSIsIGJsayk7CisJCQllbHNlCisJCQkJcHJpbnRmKCJiY29kZV9pbmNyZW1lbnQoJWxsdSkgcmV0dXJucyAlZFxuIiwKKwkJCQkgICAgICAgYmxrLCBhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgQkNPREVfREVDUjoKKwkJCWJsayA9IChibGtfdCkgYmNvZGVfcHJvZ3JhbVtpKytdOworCQkJcmV0dmFsID0gZWFfcmVmY291bnRfZGVjcmVtZW50KHJlZmNvdW50LCBibGssICZhcmcpOworCQkJaWYgKHJldHZhbCkKKwkJCQljb21fZXJyKCJlYV9yZWZjb3VudF9kZWNyZW1lbnQiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSBkZWNyZW1lbnRpbmcgYmxrICVsbHUiLCBibGspOworCQkJZWxzZQorCQkJCXByaW50ZigiYmNvZGVfZGVjcmVtZW50KCVsbHUpIHJldHVybnMgJWRcbiIsCisJCQkJICAgICAgIGJsaywgYXJnKTsKKwkJCWJyZWFrOworCQljYXNlIEJDT0RFX1ZBTElEQVRFOgorCQkJcmV0dmFsID0gZWFfcmVmY291bnRfdmFsaWRhdGUocmVmY291bnQsIHN0ZGVycik7CisJCQlpZiAocmV0dmFsKQorCQkJCWNvbV9lcnIoImVhX3JlZmNvdW50X3ZhbGlkYXRlIiwgcmV0dmFsLAorCQkJCQkid2hpbGUgdmFsaWRhdGluZyIpOworCQkJZWxzZQorCQkJCXByaW50ZigiUmVmY291bnQgdmFsaWRhdGlvbiBPSy5cbiIpOworCQkJYnJlYWs7CisJCWNhc2UgQkNPREVfTElTVDoKKwkJCWVhX3JlZmNvdW50X2ludHJfYmVnaW4ocmVmY291bnQpOworCQkJd2hpbGUgKDEpIHsKKwkJCQlibGsgPSBlYV9yZWZjb3VudF9pbnRyX25leHQocmVmY291bnQsICZhcmcpOworCQkJCWlmICghYmxrKQorCQkJCQlicmVhazsKKwkJCQlwcmludGYoIlx0YmxrPSVsbHUsIGNvdW50PSVkXG4iLCBibGssIGFyZyk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBCQ09ERV9DT0xMQVBTRToKKwkJCXJlZmNvdW50X2NvbGxhcHNlKHJlZmNvdW50KTsKKwkJCWJyZWFrOworCQl9CisKKwl9Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9laGFuZGxlci5jIGIvZTJmc3Byb2dzL2UyZnNjay9laGFuZGxlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxY2EzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2VoYW5kbGVyLmMKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBlaGFuZGxlci5jIC0tLSBoYW5kbGUgYmFkIGJsb2NrIGVycm9ycyB3aGljaCBjb21lIHVwIGR1cmluZyB0aGUKKyAqIAljb3Vyc2Ugb2YgYW4gZTJmc2NrIHNlc3Npb24uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk0IFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKworI2luY2x1ZGUgImUyZnNjay5oIgorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgKm9wZXJhdGlvbjsKKworc3RhdGljIGVycmNvZGVfdCBlMmZzY2tfaGFuZGxlX3JlYWRfZXJyb3IoaW9fY2hhbm5lbCBjaGFubmVsLAorCQkJCQkgIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisJCQkJCSAgaW50IGNvdW50LAorCQkJCQkgIHZvaWQgKmRhdGEsCisJCQkJCSAgc2l6ZV90IHNpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCQkgIGludCBhY3R1YWwgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCQkgIGVycmNvZGVfdCBlcnJvcikKK3sKKwlpbnQJaTsKKwljaGFyCSpwOworCWV4dDJfZmlsc3lzIGZzID0gKGV4dDJfZmlsc3lzKSBjaGFubmVsLT5hcHBfZGF0YTsKKwllMmZzY2tfdCBjdHg7CisKKwljdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19FWElUSU5HKQorCQlyZXR1cm4gMDsKKwkvKgorCSAqIElmIG1vcmUgdGhhbiBvbmUgYmxvY2sgd2FzIHJlYWQsIHRyeSByZWFkaW5nIGVhY2ggYmxvY2sKKwkgKiBzZXBhcmF0ZWx5LiAgV2UgY291bGQgdXNlIHRoZSBhY3R1YWwgYnl0ZXMgcmVhZCB0byBmaWd1cmUKKwkgKiBvdXQgd2hlcmUgdG8gc3RhcnQsIGJ1dCB3ZSBkb24ndCBib3RoZXIuCisJICovCisJaWYgKGNvdW50ID4gMSkgeworCQlwID0gKGNoYXIgKikgZGF0YTsKKwkJZm9yIChpPTA7IGkgPCBjb3VudDsgaSsrLCBwICs9IGNoYW5uZWwtPmJsb2NrX3NpemUsIGJsb2NrKyspIHsKKwkJCWVycm9yID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGNoYW5uZWwsIGJsb2NrLAorCQkJCQkJICAgIDEsIHApOworCQkJaWYgKGVycm9yKQorCQkJCXJldHVybiBlcnJvcjsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisJaWYgKG9wZXJhdGlvbikKKwkJcHJpbnRmKF8oIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiKSwgYmxvY2ssCisJCSAgICAgICBlcnJvcl9tZXNzYWdlKGVycm9yKSwgb3BlcmF0aW9uKTsKKwllbHNlCisJCXByaW50ZihfKCJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIiksIGJsb2NrLAorCQkgICAgICAgZXJyb3JfbWVzc2FnZShlcnJvcikpOworCXByZWVuaGFsdChjdHgpOworCisJLyogRG9uJ3QgcmV3cml0ZSBhIGJsb2NrIHBhc3QgdGhlIGVuZCBvZiB0aGUgRlMuICovCisJaWYgKGJsb2NrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoYXNrKGN0eCwgXygiSWdub3JlIGVycm9yIiksIDEpKSB7CisJCWlmIChhc2soY3R4LCBfKCJGb3JjZSByZXdyaXRlIiksIDEpKQorCQkJaW9fY2hhbm5lbF93cml0ZV9ibGs2NChjaGFubmVsLCBibG9jaywgY291bnQsIGRhdGEpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gZXJyb3I7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2hhbmRsZV93cml0ZV9lcnJvcihpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJCQkgICAgaW50IGNvdW50LAorCQkJCQkgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCQkJICAgIHNpemVfdCBzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkJICAgIGludCBhY3R1YWwgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCQkgICAgZXJyY29kZV90IGVycm9yKQoreworCWludAkJaTsKKwljb25zdCBjaGFyCSpwOworCWV4dDJfZmlsc3lzIGZzID0gKGV4dDJfZmlsc3lzKSBjaGFubmVsLT5hcHBfZGF0YTsKKwllMmZzY2tfdCBjdHg7CisKKwljdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19FWElUSU5HKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSWYgbW9yZSB0aGFuIG9uZSBibG9jayB3YXMgd3JpdHRlbiwgdHJ5IHdyaXRpbmcgZWFjaCBibG9jaworCSAqIHNlcGFyYXRlbHkuICBXZSBjb3VsZCB1c2UgdGhlIGFjdHVhbCBieXRlcyByZWFkIHRvIGZpZ3VyZQorCSAqIG91dCB3aGVyZSB0byBzdGFydCwgYnV0IHdlIGRvbid0IGJvdGhlci4KKwkgKi8KKwlpZiAoY291bnQgPiAxKSB7CisJCXAgPSAoY29uc3QgY2hhciAqKSBkYXRhOworCQlmb3IgKGk9MDsgaSA8IGNvdW50OyBpKyssIHAgKz0gY2hhbm5lbC0+YmxvY2tfc2l6ZSwgYmxvY2srKykgeworCQkJZXJyb3IgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGNoYW5uZWwsIGJsb2NrLAorCQkJCQkJICAgICAxLCBwKTsKKwkJCWlmIChlcnJvcikKKwkJCQlyZXR1cm4gZXJyb3I7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKG9wZXJhdGlvbikKKwkJcHJpbnRmKF8oIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiKSwgYmxvY2ssCisJCSAgICAgICBlcnJvcl9tZXNzYWdlKGVycm9yKSwgb3BlcmF0aW9uKTsKKwllbHNlCisJCXByaW50ZihfKCJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIiksIGJsb2NrLAorCQkgICAgICAgZXJyb3JfbWVzc2FnZShlcnJvcikpOworCXByZWVuaGFsdChjdHgpOworCWlmIChhc2soY3R4LCBfKCJJZ25vcmUgZXJyb3IiKSwgMSkpCisJCXJldHVybiAwOworCisJcmV0dXJuIGVycm9yOworfQorCitjb25zdCBjaGFyICplaGFuZGxlcl9vcGVyYXRpb24oY29uc3QgY2hhciAqb3ApCit7CisJY29uc3QgY2hhciAqcmV0ID0gb3BlcmF0aW9uOworCisJb3BlcmF0aW9uID0gb3A7CisJcmV0dXJuIHJldDsKK30KKwordm9pZCBlaGFuZGxlcl9pbml0KGlvX2NoYW5uZWwgY2hhbm5lbCkKK3sKKwljaGFubmVsLT5yZWFkX2Vycm9yID0gZTJmc2NrX2hhbmRsZV9yZWFkX2Vycm9yOworCWNoYW5uZWwtPndyaXRlX2Vycm9yID0gZTJmc2NrX2hhbmRsZV93cml0ZV9lcnJvcjsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZW1wdHlkaXIuYyBiL2UyZnNwcm9ncy9lMmZzY2svZW1wdHlkaXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2JmZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9lbXB0eWRpci5jCkBAIC0wLDAgKzEsMTk0IEBACisvKgorICogZW1wdHlkaXIuYyAtLS0gY2xlYXIgZW1wdHkgZGlyZWN0b3J5IGJsb2NrcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5OCBUaGVvZG9yZSBUcydvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqCisgKiBUaGlzIGZpbGUgaGFzIHRoZSBuZWNlc3Nhcnkgcm91dGluZXMgdG8gc2VhcmNoIGZvciBlbXB0eSBkaXJlY3RvcnkKKyAqIGJsb2NrcyBhbmQgZ2V0IHJpZCBvZiB0aGVtLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJlMmZzY2suaCIKKyNpbmNsdWRlICJwcm9ibGVtLmgiCisKKy8qCisgKiBGb3IgZTJmc2NrLmgKKyAqLworc3RydWN0IGVtcHR5X2Rpcl9pbmZvX3N0cnVjdCB7CisJZXh0Ml9kYmxpc3QgZW1wdHlfZGJsaXN0OworCWV4dDJmc19ibG9ja19iaXRtYXAgZW1wdHlfZGlyX2Jsb2NrczsKKwlleHQyZnNfaW5vZGVfYml0bWFwIGRpcl9tYXA7CisJY2hhciAqYmxvY2tfYnVmOworCWV4dDJfaW5vX3QgaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCWJsazY0X3QJbG9nYmxrOworCWJsazY0X3QJZnJlZWRfYmxvY2tzOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgZW1wdHlfZGlyX2luZm9fc3RydWN0ICplbXB0eV9kaXJfaW5mbzsKKworZXh0ZXJuIGVtcHR5X2Rpcl9pbmZvIGluaXRfZW1wdHlfZGlyKGUyZnNja190IGN0eCk7CitleHRlcm4gdm9pZCBmcmVlX2VtcHR5X2RpcmJsb2NrKGVtcHR5X2Rpcl9pbmZvIGVkaSk7CitleHRlcm4gdm9pZCBhZGRfZW1wdHlfZGlyYmxvY2soZW1wdHlfZGlyX2luZm8gZWRpLAorCQkJICAgICAgIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGIpOworZXh0ZXJuIHZvaWQgcHJvY2Vzc19lbXB0eV9kaXJibG9jayhlMmZzY2tfdCBjdHgsIGVtcHR5X2Rpcl9pbmZvIGVkaSk7CisKKworZW1wdHlfZGlyX2luZm8gaW5pdF9lbXB0eV9kaXIoZTJmc2NrX3QgY3R4KQoreworCWVtcHR5X2Rpcl9pbmZvCWVkaTsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJZWRpID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZW1wdHlfZGlyX2luZm9fc3RydWN0KSk7CisJaWYgKCFlZGkpCisJCXJldHVybiBOVUxMOworCisJbWVtc2V0KGVkaSwgMCwgc2l6ZW9mKHN0cnVjdCBlbXB0eV9kaXJfaW5mb19zdHJ1Y3QpKTsKKworCXJldHZhbCA9IGV4dDJmc19pbml0X2RibGlzdChjdHgtPmZzLCAmZWRpLT5lbXB0eV9kYmxpc3QpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChjdHgtPmZzLCBfKCJlbXB0eSBkaXJibG9ja3MiKSwKKwkJCQkJICAgICAgJmVkaS0+ZW1wdHlfZGlyX2Jsb2Nrcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGN0eC0+ZnMsIF8oImVtcHR5IGRpciBtYXAiKSwKKwkJCQkJICAgICAgJmVkaS0+ZGlyX21hcCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXR1cm4gKGVkaSk7CisKK2Vycm91dDoKKwlmcmVlX2VtcHR5X2RpcmJsb2NrKGVkaSk7CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgZnJlZV9lbXB0eV9kaXJibG9jayhlbXB0eV9kaXJfaW5mbyBlZGkpCit7CisJaWYgKCFlZGkpCisJCXJldHVybjsKKwlpZiAoZWRpLT5lbXB0eV9kYmxpc3QpCisJCWV4dDJmc19mcmVlX2RibGlzdChlZGktPmVtcHR5X2RibGlzdCk7CisJaWYgKGVkaS0+ZW1wdHlfZGlyX2Jsb2NrcykKKwkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGVkaS0+ZW1wdHlfZGlyX2Jsb2Nrcyk7CisJaWYgKGVkaS0+ZGlyX21hcCkKKwkJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGVkaS0+ZGlyX21hcCk7CisKKwltZW1zZXQoZWRpLCAwLCBzaXplb2Yoc3RydWN0IGVtcHR5X2Rpcl9pbmZvX3N0cnVjdCkpOworCWZyZWUoZWRpKTsKK30KKwordm9pZCBhZGRfZW1wdHlfZGlyYmxvY2soZW1wdHlfZGlyX2luZm8gZWRpLAorCQkJc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYikKK3sKKwlpZiAoIWVkaSB8fCAhZGIpCisJCXJldHVybjsKKworCWlmIChkYi0+aW5vID09IDExKQorCQlyZXR1cm47CQkvKiBJbm9kZSBudW1iZXIgMTEgaXMgdXN1YWxseSBsb3N0K2ZvdW5kICovCisKKwlwcmludGYoXygiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iKSwKKwkgICAgICAgZGItPmJsaywgZGItPmJsb2NrY250LCBkYi0+aW5vKTsKKworCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZWRpLT5lbXB0eV9kaXJfYmxvY2tzLCBkYi0+YmxrKTsKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwKGVkaS0+ZGlyX21hcCwgZGItPmlubykpCisJCXJldHVybjsKKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAoZWRpLT5kaXJfbWFwLCBkYi0+aW5vKTsKKworCWV4dDJmc19hZGRfZGlyX2Jsb2NrMihlZGktPmVtcHR5X2RibGlzdCwgZGItPmlubywKKwkJCSAgICAgIGRiLT5ibGssIGRiLT5ibG9ja2NudCk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaXhfZGlyZWN0b3J5LgorICoKKyAqIFhYWCBuZWVkIHRvIGZpbmlzaCB0aGlzLiAgR2VuZXJhbCBhcHByb2FjaCBpcyB0byB1c2UgYm1hcCB0bworICogaXRlcmF0ZSBvdmVyIGFsbCBvZiB0aGUgbG9naWNhbCBibG9ja3MgdXNpbmcgdGhlIGJtYXAgZnVuY3Rpb24sIGFuZAorICogY29weSB0aGUgYmxvY2sgcmVmZXJlbmNlIGFzIG5lY2Vzc2FyeS4gIEJpZyBxdWVzdGlvbiAtLS0gd2hhdCBkbworICogYWJvdXQgZXJyb3IgcmVjb3Zlcnk/CisgKgorICogQWxzbyBxdWVzdGlvbiAtLS0gaG93IHRvIGZyZWUgdGhlIGluZGlyZWN0IGJsb2Nrcy4KKyAqLworaW50IGVtcHR5X3Bhc3MxKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90ICpibG9ja19uciwgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCWJsazY0X3QgcmVmX2Jsb2NrLCBpbnQgcmVmX29mZnNldCwgdm9pZCAqcHJpdl9kYXRhKQoreworCWVtcHR5X2Rpcl9pbmZvIGVkaSA9IChlbXB0eV9kaXJfaW5mbykgcHJpdl9kYXRhOworCWJsazY0X3QJYmxvY2ssIG5ld19ibG9jazsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKGJsb2NrY250IDwgMCkKKwkJcmV0dXJuIDA7CisJYmxvY2sgPSAqYmxvY2tfbnI7CisJZG8geworCQlyZXR2YWwgPSBleHQyZnNfYm1hcDIoZnMsIGVkaS0+aW5vLCAmZWRpLT5pbm9kZSwKKwkJCQkgICAgICBlZGktPmJsb2NrX2J1ZiwgMCwgZWRpLT5sb2dibGssIDAsCisJCQkJICAgICAgJm5ld19ibG9jayk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gRElSRU5UX0FCT1JUOyAgIC8qIFhYWCB3aGF0IHRvIGRvPyAqLworCQlpZiAobmV3X2Jsb2NrID09IDApCisJCQlicmVhazsKKwkJZWRpLT5sb2dibGsrKzsKKwl9IHdoaWxlIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGVkaS0+ZW1wdHlfZGlyX2Jsb2NrcywgbmV3X2Jsb2NrKSk7CisKKwlpZiAobmV3X2Jsb2NrID09IGJsb2NrKQorCQlyZXR1cm4gMDsKKwlpZiAobmV3X2Jsb2NrID09IDApCisJCWVkaS0+ZnJlZWRfYmxvY2tzKys7CisJKmJsb2NrX25yID0gbmV3X2Jsb2NrOworCXJldHVybiBCTE9DS19DSEFOR0VEOworfQorCitzdGF0aWMgaW50IGZpeF9kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsCisJCQkgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYiwKKwkJCSB2b2lkICpwcml2X2RhdGEpCit7CisJZXJyY29kZV90CXJldHZhbDsKKworCWVtcHR5X2Rpcl9pbmZvIGVkaSA9IChlbXB0eV9kaXJfaW5mbykgcHJpdl9kYXRhOworCisJZWRpLT5sb2dibGsgPSAwOworCWVkaS0+ZnJlZWRfYmxvY2tzID0gMDsKKwllZGktPmlubyA9IGRiLT5pbm87CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgZGItPmlubywgJmVkaS0+aW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBkYi0+aW5vLCAwLCBlZGktPmJsb2NrX2J1ZiwKKwkJCQkgICAgICAgZW1wdHlfcGFzczEsIGVkaSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZWRpLT5mcmVlZF9ibG9ja3MpIHsKKwkJZWRpLT5pbm9kZS5pX3NpemUgLT0gZWRpLT5mcmVlZF9ibG9ja3MgKiBmcy0+YmxvY2tzaXplOworCQlleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCAmZWRpLT5pbm9kZSwgZWRpLT5mcmVlZF9ibG9ja3MpOworCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGRiLT5pbm8sICZlZGktPmlub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMDsKK30KKwordm9pZCBwcm9jZXNzX2VtcHR5X2RpcmJsb2NrKGUyZnNja190IGN0eCwgZW1wdHlfZGlyX2luZm8gZWRpKQoreworCWlmICghZWRpKQorCQlyZXR1cm47CisKKwllZGktPmJsb2NrX2J1ZiA9IG1hbGxvYyhjdHgtPmZzLT5ibG9ja3NpemUgKiAzKTsKKworCWlmIChlZGktPmJsb2NrX2J1ZikgeworCQkodm9pZCkgZXh0MmZzX2RibGlzdF9pdGVyYXRlMihlZGktPmVtcHR5X2RibGlzdCwKKwkJCQkJICAgICAgZml4X2RpcmVjdG9yeSwgJmVkaSk7CisJfQorCWZyZWUoZWRpLT5ibG9ja19idWYpOworCWZyZWVfZW1wdHlfZGlyYmxvY2soZWRpKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9leHRlbmQuYyBiL2UyZnNwcm9ncy9lMmZzY2svZXh0ZW5kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiNjJjMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svZXh0ZW5kLmMKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIGV4dGVuZC5jIC0tLSBleHRlbmQgYSBmaWxlIHNvIHRoYXQgaXQgaGFzIGF0IGxlYXN0IGEgc3BlY2lmaWVkCisgKiAJbnVtYmVyIG9mIGJsb2Nrcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUgVGhlb2RvcmUgVHMnby4KKyAqCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSAiLi4vbWlzYy9ubHMtZW5hYmxlLmgiCisKK3N0YXRpYyB2b2lkIHVzYWdlKGNoYXIgKnByb2duYW1lKQoreworCWZwcmludGYoc3RkZXJyLCBfKCIlczogJXMgZmlsZW5hbWUgbmJsb2NrcyBibG9ja3NpemVcbiIpLAorCQlwcm9nbmFtZSwgcHJvZ25hbWUpOworCWV4aXQoMSk7Cit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIJKmZpbGVuYW1lOworCWludAluYmxvY2tzLCBibG9ja3NpemU7CisJaW50CWZkOworCWNoYXIJKmJsb2NrOworCWludAlyZXQ7CisKKwlpZiAoYXJnYyAhPSA0KQorCQl1c2FnZShhcmd2WzBdKTsKKworCWZpbGVuYW1lID0gYXJndlsxXTsKKwluYmxvY2tzID0gc3RydG91bChhcmd2WzJdLCAwLCAwKSAtIDE7CisJYmxvY2tzaXplID0gc3RydG91bChhcmd2WzNdLCAwLCAwKTsKKworCWlmIChuYmxvY2tzIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIikpOworCQlleGl0KDEpOworCX0KKworCWJsb2NrID0gbWFsbG9jKGJsb2Nrc2l6ZSk7CisJaWYgKGJsb2NrID09IDApIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIkNvdWxkbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciAoc2l6ZT0lZClcbiIpLAorCQkJYmxvY2tzaXplKTsKKwkJZXhpdCgxKTsKKwl9CisJbWVtc2V0KGJsb2NrLCAwLCBibG9ja3NpemUpOworCisJZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKGZpbGVuYW1lKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0ID0gbHNlZWsoZmQsIG5ibG9ja3MqYmxvY2tzaXplLCBTRUVLX1NFVCk7CisJaWYgKHJldCA8IDApIHsKKwkJcGVycm9yKCJsc2VlayIpOworCQlleGl0KDEpOworCX0KKwlyZXQgPSByZWFkKGZkLCBibG9jaywgYmxvY2tzaXplKTsKKwlpZiAocmV0IDwgMCkgeworCQlwZXJyb3IoInJlYWQiKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0ID0gbHNlZWsoZmQsIG5ibG9ja3MqYmxvY2tzaXplLCBTRUVLX1NFVCk7CisJaWYgKHJldCA8IDApIHsKKwkJcGVycm9yKCJsc2VlayAjMiIpOworCQlleGl0KDEpOworCX0KKwlyZXQgPSB3cml0ZShmZCwgYmxvY2ssIGJsb2Nrc2l6ZSk7CisJaWYgKHJldCA8IDApIHsKKwkJcGVycm9yKCJyZWFkIik7CisJCWV4aXQoMSk7CisJfQorCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL2V4dGVudHMuYyBiL2UyZnNwcm9ncy9lMmZzY2svZXh0ZW50cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MTY3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2V4dGVudHMuYwpAQCAtMCwwICsxLDU0MCBAQAorLyoKKyAqIGV4dGVudHMuYyAtLS0gcmVidWlsZCBleHRlbnQgdHJlZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBPcmFjbGUuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSAicHJvYmxlbS5oIgorCisjdW5kZWYgREVCVUcKKyN1bmRlZiBERUJVR19TVU1NQVJZCisjdW5kZWYgREVCVUdfRlJFRQorCisjZGVmaW5lIE5VTV9FWFRFTlRTCTM0MQkvKiBhYm91dCBvbmUgRVRCJyB3b3J0aCBvZiBleHRlbnRzICovCisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX3JlYnVpbGRfZXh0ZW50cyhlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vKTsKKworLyogU2NoZWR1bGUgYW4gaW5vZGUgdG8gaGF2ZSBpdHMgZXh0ZW50IHRyZWUgcmVidWlsdCBkdXJpbmcgcGFzcyAxRS4gKi8KK2VycmNvZGVfdCBlMmZzY2tfcmVidWlsZF9leHRlbnRzX2xhdGVyKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGN0eC0+ZnMtPnN1cGVyKSB8fAorCSAgICAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgfHwKKwkgICAgKGlubyAhPSBFWFQyX1JPT1RfSU5PICYmIGlubyA8IGN0eC0+ZnMtPnN1cGVyLT5zX2ZpcnN0X2lubykpCisJCXJldHVybiAwOworCisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19BTExPQ19PSykKKwkJcmV0dXJuIGUyZnNja19yZWJ1aWxkX2V4dGVudHMoY3R4LCBpbm8pOworCisJaWYgKCFjdHgtPmlub2Rlc190b19yZWJ1aWxkKQorCQlyZXR2YWwgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGN0eC0+ZnMsCisJCQkJCSAgICAgXygiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIiksCisJCQkJCSAgICAgRVhUMkZTX0JNQVA2NF9SQlRSRUUsCisJCQkJCSAgICAgImlub2Rlc190b19yZWJ1aWxkIiwKKwkJCQkJICAgICAmY3R4LT5pbm9kZXNfdG9fcmVidWlsZCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZXNfdG9fcmVidWlsZCwgaW5vKTsKKwlyZXR1cm4gMDsKK30KKworLyogQXNrIGlmIGFuIGlub2RlIHdpbGwgaGF2ZSBpdHMgZXh0ZW50cyByZWJ1aWx0IGR1cmluZyBwYXNzIDFFLiAqLworaW50IGUyZnNja19pbm9fd2lsbF9iZV9yZWJ1aWx0KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJaWYgKCFjdHgtPmlub2Rlc190b19yZWJ1aWxkKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2Rlc190b19yZWJ1aWxkLCBpbm8pOworfQorCitzdHJ1Y3QgZXh0ZW50X2xpc3QgeworCWJsazY0X3QgYmxvY2tzX2ZyZWVkOworCXN0cnVjdCBleHQyZnNfZXh0ZW50ICpleHRlbnRzOworCXVuc2lnbmVkIGludCBjb3VudDsKKwl1bnNpZ25lZCBpbnQgc2l6ZTsKKwl1bnNpZ25lZCBpbnQgZXh0X3JlYWQ7CisJZXJyY29kZV90IHJldHZhbDsKKwlleHQyX2lub190IGlubzsKK307CisKK3N0YXRpYyBlcnJjb2RlX3QgbG9hZF9leHRlbnRzKGUyZnNja190IGN0eCwgc3RydWN0IGV4dGVudF9saXN0ICpsaXN0KQoreworCWV4dDJfZmlsc3lzCQlmcyA9IGN0eC0+ZnM7CisJZXh0Ml9leHRlbnRfaGFuZGxlX3QJaGFuZGxlOworCXN0cnVjdCBleHQyZnNfZXh0ZW50CWV4dGVudDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbihmcywgbGlzdC0+aW5vLCAmaGFuZGxlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ST09ULCAmZXh0ZW50KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKworCWRvIHsKKwkJaWYgKGV4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfU0VDT05EX1ZJU0lUKQorCQkJZ290byBuZXh0OworCisJCS8qIEludGVybmFsIG5vZGU7IGZyZWUgaXQgYW5kIHdlJ2xsIHJlLWFsbG9jYXRlIGl0IGxhdGVyICovCisJCWlmICghKGV4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfTEVBRikpIHsKKyNpZiBkZWZpbmVkKERFQlVHKSB8fCBkZWZpbmVkKERFQlVHX0ZSRUUpCisJCQlwcmludGYoImlubz0lZCBmcmVlPSVsbHUgYmY9JWxsdVxuIiwgbGlzdC0+aW5vLAorCQkJCQlleHRlbnQuZV9wYmxrLCBsaXN0LT5ibG9ja3NfZnJlZWQgKyAxKTsKKyNlbmRpZgorCQkJbGlzdC0+YmxvY2tzX2ZyZWVkKys7CisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBleHRlbnQuZV9wYmxrLCAtMSk7CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlsaXN0LT5leHRfcmVhZCsrOworCQkvKiBDYW4gd2UgYXR0YWNoIGl0IHRvIHRoZSBwcmV2aW91cyBleHRlbnQ/ICovCisJCWlmIChsaXN0LT5jb3VudCkgeworCQkJc3RydWN0IGV4dDJmc19leHRlbnQgKmxhc3QgPSBsaXN0LT5leHRlbnRzICsKKwkJCQkJCSAgICAgbGlzdC0+Y291bnQgLSAxOworCQkJYmxrNjRfdCBlbmQgPSBsYXN0LT5lX2xlbiArIGV4dGVudC5lX2xlbjsKKworCQkJaWYgKGxhc3QtPmVfcGJsayArIGxhc3QtPmVfbGVuID09IGV4dGVudC5lX3BibGsgJiYKKwkJCSAgICBsYXN0LT5lX2xibGsgKyBsYXN0LT5lX2xlbiA9PSBleHRlbnQuZV9sYmxrICYmCisJCQkgICAgKGxhc3QtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpID09CisJCQkgICAgKGV4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSAmJgorCQkJICAgIGVuZCA8ICgxVUxMIDw8IDMyKSkgeworCQkJCWxhc3QtPmVfbGVuICs9IGV4dGVudC5lX2xlbjsKKyNpZmRlZiBERUJVRworCQkJCXByaW50ZigiUjogaW5vPSVkIGxlbj0ldVxuIiwgbGlzdC0+aW5vLAorCQkJCQkJbGFzdC0+ZV9sZW4pOworI2VuZGlmCisJCQkJZ290byBuZXh0OworCQkJfQorCQl9CisKKwkJLyogRG8gd2UgbmVlZCB0byBleHBhbmQ/ICovCisJCWlmIChsaXN0LT5jb3VudCA9PSBsaXN0LT5zaXplKSB7CisJCQl1bnNpZ25lZCBpbnQgbmV3X3NpemUgPSAobGlzdC0+c2l6ZSArIE5VTV9FWFRFTlRTKSAqCisJCQkJCQlzaXplb2Yoc3RydWN0IGV4dDJmc19leHRlbnQpOworCQkJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9tZW0oMCwgbmV3X3NpemUsICZsaXN0LT5leHRlbnRzKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBvdXQ7CisJCQlsaXN0LT5zaXplICs9IE5VTV9FWFRFTlRTOworCQl9CisKKwkJLyogQWRkIGEgbmV3IGV4dGVudCAqLworCQltZW1jcHkobGlzdC0+ZXh0ZW50cyArIGxpc3QtPmNvdW50LCAmZXh0ZW50LCBzaXplb2YoZXh0ZW50KSk7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJSOiBpbm89JWQgcGJsaz0lbGx1IGxibGs9JWxsdSBsZW49JXVcbiIsIGxpc3QtPmlubywKKwkJCQlleHRlbnQuZV9wYmxrLCBleHRlbnQuZV9sYmxrLCBleHRlbnQuZV9sZW4pOworI2VuZGlmCisJCWxpc3QtPmNvdW50Kys7CituZXh0OgorCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX05FWFQsICZleHRlbnQpOworCX0gd2hpbGUgKHJldHZhbCA9PSAwKTsKKworb3V0OgorCS8qIE9rIGlmIHdlIHJ1biBvZmYgdGhlIGVuZCAqLworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVCkKKwkJcmV0dmFsID0gMDsKKwlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IGZpbmRfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90ICpibG9ja25yLCBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJICAgICAgIGJsazY0X3QgcmVmX2JsayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgZXh0ZW50X2xpc3QgKmxpc3QgPSBwcml2X2RhdGE7CisKKwkvKiBJbnRlcm5hbCBub2RlPyAqLworCWlmIChibG9ja2NudCA8IDApIHsKKyNpZiBkZWZpbmVkKERFQlVHKSB8fCBkZWZpbmVkKERFQlVHX0ZSRUUpCisJCXByaW50ZigiaW5vPSVkIGZyZWU9JWxsdSBiZj0lbGx1XG4iLCBsaXN0LT5pbm8sICpibG9ja25yLAorCQkJCWxpc3QtPmJsb2Nrc19mcmVlZCArIDEpOworI2VuZGlmCisJCWxpc3QtPmJsb2Nrc19mcmVlZCsrOworCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCAqYmxvY2tuciwgLTEpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBDYW4gd2UgYXR0YWNoIGl0IHRvIHRoZSBwcmV2aW91cyBleHRlbnQ/ICovCisJaWYgKGxpc3QtPmNvdW50KSB7CisJCXN0cnVjdCBleHQyZnNfZXh0ZW50ICpsYXN0ID0gbGlzdC0+ZXh0ZW50cyArCisJCQkJCSAgICAgbGlzdC0+Y291bnQgLSAxOworCQlibGs2NF90IGVuZCA9IGxhc3QtPmVfbGVuICsgMTsKKworCQlpZiAobGFzdC0+ZV9wYmxrICsgbGFzdC0+ZV9sZW4gPT0gKmJsb2NrbnIgJiYKKwkJICAgIGVuZCA8ICgxVUxMIDw8IDMyKSkgeworCQkJbGFzdC0+ZV9sZW4rKzsKKyNpZmRlZiBERUJVRworCQkJcHJpbnRmKCJSOiBpbm89JWQgbGVuPSV1XG4iLCBsaXN0LT5pbm8sIGxhc3QtPmVfbGVuKTsKKyNlbmRpZgorCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKiBEbyB3ZSBuZWVkIHRvIGV4cGFuZD8gKi8KKwlpZiAobGlzdC0+Y291bnQgPT0gbGlzdC0+c2l6ZSkgeworCQl1bnNpZ25lZCBpbnQgbmV3X3NpemUgPSAobGlzdC0+c2l6ZSArIE5VTV9FWFRFTlRTKSAqCisJCQkJCXNpemVvZihzdHJ1Y3QgZXh0MmZzX2V4dGVudCk7CisJCWxpc3QtPnJldHZhbCA9IGV4dDJmc19yZXNpemVfbWVtKDAsIG5ld19zaXplLCAmbGlzdC0+ZXh0ZW50cyk7CisJCWlmIChsaXN0LT5yZXR2YWwpCisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCWxpc3QtPnNpemUgKz0gTlVNX0VYVEVOVFM7CisJfQorCisJLyogQWRkIGEgbmV3IGV4dGVudCAqLworCWxpc3QtPmV4dGVudHNbbGlzdC0+Y291bnRdLmVfcGJsayA9ICpibG9ja25yOworCWxpc3QtPmV4dGVudHNbbGlzdC0+Y291bnRdLmVfbGJsayA9IGJsb2NrY250OworCWxpc3QtPmV4dGVudHNbbGlzdC0+Y291bnRdLmVfbGVuID0gMTsKKwlsaXN0LT5leHRlbnRzW2xpc3QtPmNvdW50XS5lX2ZsYWdzID0gMDsKKyNpZmRlZiBERUJVRworCXByaW50ZigiUjogaW5vPSVkIHBibGs9JWxsdSBsYmxrPSVsbHUgbGVuPSV1XG4iLCBsaXN0LT5pbm8sICpibG9ja25yLAorCQkJYmxvY2tjbnQsIDEpOworI2VuZGlmCisJbGlzdC0+Y291bnQrKzsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHJlYnVpbGRfZXh0ZW50X3RyZWUoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgZXh0ZW50X2xpc3QgKmxpc3QsCisJCQkJICAgICBleHQyX2lub190IGlubykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJdW5zaWduZWQgaW50CQlpLCBleHRfd3JpdHRlbjsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAkqZXgsIGV4dGVudDsKKworCWxpc3QtPmNvdW50ID0gMDsKKwlsaXN0LT5ibG9ja3NfZnJlZWQgPSAwOworCWxpc3QtPmlubyA9IGlubzsKKwlsaXN0LT5leHRfcmVhZCA9IDA7CisJZTJmc2NrX3JlYWRfaW5vZGUoY3R4LCBpbm8sICZpbm9kZSwgInJlYnVpbGRfZXh0ZW50cyIpOworCisJLyogU2tpcCBkZWxldGVkIGlub2RlcyBhbmQgaW5saW5lIGRhdGEgZmlsZXMgKi8KKwlpZiAoaW5vZGUuaV9saW5rc19jb3VudCA9PSAwIHx8CisJICAgIGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQlyZXR1cm4gMDsKKworCS8qIENvbGxlY3QgbGJsay0+cGJsayBtYXBwaW5ncyAqLworCWlmIChpbm9kZS5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSB7CisJCXJldHZhbCA9IGxvYWRfZXh0ZW50cyhjdHgsIGxpc3QpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnI7CisJCWdvdG8gZXh0ZW50c19sb2FkZWQ7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGN0eC0+ZnMsIGlubywgQkxPQ0tfRkxBR19SRUFEX09OTFksIDAsCisJCQkJICAgICAgIGZpbmRfYmxvY2tzLCBsaXN0KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKwlpZiAobGlzdC0+cmV0dmFsKSB7CisJCXJldHZhbCA9IGxpc3QtPnJldHZhbDsKKwkJZ290byBlcnI7CisJfQorCitleHRlbnRzX2xvYWRlZDoKKwkvKiBSZXNldCBleHRlbnQgdHJlZSAqLworCWlub2RlLmlfZmxhZ3MgJj0gfkVYVDRfRVhURU5UU19GTDsKKwltZW1zZXQoaW5vZGUuaV9ibG9jaywgMCwgc2l6ZW9mKGlub2RlLmlfYmxvY2spKTsKKworCS8qIE1ha2UgYSBub3RlIG9mIGZyZWVkIGJsb2NrcyAqLworCXJldHZhbCA9IGV4dDJmc19pYmxrX3N1Yl9ibG9ja3MoY3R4LT5mcywgJmlub2RlLCBsaXN0LT5ibG9ja3NfZnJlZWQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCisJLyogTm93IHN0dWZmIGV4dGVudHMgaW50byB0aGUgZmlsZSAqLworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbjIoY3R4LT5mcywgaW5vLCAmaW5vZGUsICZoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCisJZXh0X3dyaXR0ZW4gPSAwOworCWZvciAoaSA9IDAsIGV4ID0gbGlzdC0+ZXh0ZW50czsgaSA8IGxpc3QtPmNvdW50OyBpKyssIGV4KyspIHsKKwkJbWVtY3B5KCZleHRlbnQsIGV4LCBzaXplb2Yoc3RydWN0IGV4dDJmc19leHRlbnQpKTsKKwkJZXh0ZW50LmVfZmxhZ3MgJj0gRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUOworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpIHsKKwkJCWlmIChleHRlbnQuZV9sZW4gPiBFWFRfVU5JTklUX01BWF9MRU4pIHsKKwkJCQlleHRlbnQuZV9sZW4gPSBFWFRfVU5JTklUX01BWF9MRU47CisJCQkJZXgtPmVfcGJsayArPSBFWFRfVU5JTklUX01BWF9MRU47CisJCQkJZXgtPmVfbGJsayArPSBFWFRfVU5JTklUX01BWF9MRU47CisJCQkJZXgtPmVfbGVuIC09IEVYVF9VTklOSVRfTUFYX0xFTjsKKwkJCQlleC0tOworCQkJCWktLTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChleHRlbnQuZV9sZW4gPiBFWFRfSU5JVF9NQVhfTEVOKSB7CisJCQkJZXh0ZW50LmVfbGVuID0gRVhUX0lOSVRfTUFYX0xFTjsKKwkJCQlleC0+ZV9wYmxrICs9IEVYVF9JTklUX01BWF9MRU47CisJCQkJZXgtPmVfbGJsayArPSBFWFRfSU5JVF9NQVhfTEVOOworCQkJCWV4LT5lX2xlbiAtPSBFWFRfSU5JVF9NQVhfTEVOOworCQkJCWV4LS07CisJCQkJaS0tOworCQkJfQorCQl9CisKKyNpZmRlZiBERUJVRworCQlwcmludGYoIlc6IGlubz0lZCBwYmxrPSVsbHUgbGJsaz0lbGx1IGxlbj0ldVxuIiwgaW5vLAorCQkJCWV4dGVudC5lX3BibGssIGV4dGVudC5lX2xibGssIGV4dGVudC5lX2xlbik7CisjZW5kaWYKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLCBFWFQyX0VYVEVOVF9JTlNFUlRfQUZURVIsCisJCQkJCSAgICAgICZleHRlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnIyOworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjI7CisJCWV4dF93cml0dGVuKys7CisJfQorCisjaWYgZGVmaW5lZChERUJVRykgfHwgZGVmaW5lZChERUJVR19TVU1NQVJZKQorCXByaW50ZigicmVidWlsZDogaW5vPSVkIGV4dGVudHM9JWQtPiVkXG4iLCBpbm8sIGxpc3QtPmV4dF9yZWFkLAorCSAgICAgICBleHRfd3JpdHRlbik7CisjZW5kaWYKKwllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBpbm8sICZpbm9kZSwgInJlYnVpbGRfZXh0ZW50cyIpOworCitlcnIyOgorCWV4dDJmc19leHRlbnRfZnJlZShoYW5kbGUpOworZXJyOgorCXJldHVybiByZXR2YWw7Cit9CisKKy8qIFJlYnVpbGQgdGhlIGV4dGVudHMgaW1tZWRpYXRlbHkgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX3JlYnVpbGRfZXh0ZW50cyhlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vKQoreworCXN0cnVjdCBleHRlbnRfbGlzdAlsaXN0OworCWVycmNvZGVfdCBlcnI7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGN0eC0+ZnMtPnN1cGVyKSB8fAorCSAgICAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgfHwKKwkgICAgKGlubyAhPSBFWFQyX1JPT1RfSU5PICYmIGlubyA8IGN0eC0+ZnMtPnN1cGVyLT5zX2ZpcnN0X2lubykpCisJCXJldHVybiAwOworCisJZTJmc2NrX3JlYWRfYml0bWFwcyhjdHgpOworCW1lbXNldCgmbGlzdCwgMCwgc2l6ZW9mKGxpc3QpKTsKKwllcnIgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGV4dDJmc19leHRlbnQpICogTlVNX0VYVEVOVFMsCisJCQkJJmxpc3QuZXh0ZW50cyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwlsaXN0LnNpemUgPSBOVU1fRVhURU5UUzsKKwllcnIgPSByZWJ1aWxkX2V4dGVudF90cmVlKGN0eCwgJmxpc3QsIGlubyk7CisJZXh0MmZzX2ZyZWVfbWVtKCZsaXN0LmV4dGVudHMpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgcmVidWlsZF9leHRlbnRzKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqcGFzc19uYW1lLCBpbnQgcHJfaGVhZGVyKQoreworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2s7CisjZW5kaWYKKwlzdHJ1Y3QgZXh0ZW50X2xpc3QJbGlzdDsKKwlpbnQJCQlmaXJzdCA9IDE7CisJZXh0Ml9pbm9fdAkJaW5vID0gMDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoY3R4LT5mcy0+c3VwZXIpIHx8CisJICAgICFleHQyZnNfdGVzdF92YWxpZChjdHgtPmZzKSB8fAorCSAgICBjdHgtPmludmFsaWRfYml0bWFwcykgeworCQlpZiAoY3R4LT5pbm9kZXNfdG9fcmVidWlsZCkKKwkJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChjdHgtPmlub2Rlc190b19yZWJ1aWxkKTsKKwkJY3R4LT5pbm9kZXNfdG9fcmVidWlsZCA9IE5VTEw7CisJfQorCisJaWYgKGN0eC0+aW5vZGVzX3RvX3JlYnVpbGQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwltZW1zZXQoJmxpc3QsIDAsIHNpemVvZihsaXN0KSk7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyZnNfZXh0ZW50KSAqIE5VTV9FWFRFTlRTLAorCQkJCSZsaXN0LmV4dGVudHMpOworCWxpc3Quc2l6ZSA9IE5VTV9FWFRFTlRTOworCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IGV4dDJmc19maW5kX2ZpcnN0X3NldF9pbm9kZV9iaXRtYXAyKAorCQkJCWN0eC0+aW5vZGVzX3RvX3JlYnVpbGQsIGlubyArIDEsCisJCQkJY3R4LT5mcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50LCAmaW5vKTsKKwkJaWYgKHJldHZhbCkKKwkJCWJyZWFrOworCQlwY3R4LmlubyA9IGlubzsKKwkJaWYgKGZpcnN0KSB7CisJCQlmaXhfcHJvYmxlbShjdHgsIHByX2hlYWRlciwgJnBjdHgpOworCQkJZmlyc3QgPSAwOworCQl9CisJCXBjdHguZXJyY29kZSA9IHJlYnVpbGRfZXh0ZW50X3RyZWUoY3R4LCAmbGlzdCwgaW5vKTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9PUFRJTUlaRV9FWFQpOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRV9PUFRJTUlaRV9FWFRfRVJSLCAmcGN0eCk7CisJCX0KKwkJaWYgKGN0eC0+cHJvZ3Jlc3MgJiYgIWN0eC0+cHJvZ3Jlc3NfZmQpCisJCQllMmZzY2tfc2ltcGxlX3Byb2dyZXNzKGN0eCwgIlJlYnVpbGRpbmcgZXh0ZW50cyIsCisJCQkJCTEwMC4wICogKGZsb2F0KSBpbm8gLworCQkJCQkoZmxvYXQpIGN0eC0+ZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCwKKwkJCQkJaW5vKTsKKwl9CisJZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9PUFRJTUlaRV9FWFQpOworCisJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGN0eC0+aW5vZGVzX3RvX3JlYnVpbGQpOworCWN0eC0+aW5vZGVzX3RvX3JlYnVpbGQgPSBOVUxMOworCWV4dDJmc19mcmVlX21lbSgmbGlzdC5leHRlbnRzKTsKKworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgcGFzc19uYW1lLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7Cit9CisKKy8qIFNjYW4gYSBmaWxlIHRvIHNlZSBpZiB3ZSBzaG91bGQgcmVidWlsZCBpdHMgZXh0ZW50IHRyZWUgKi8KK2VycmNvZGVfdCBlMmZzY2tfY2hlY2tfcmVidWlsZF9leHRlbnRzKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCXN0cnVjdCBleHRlbnRfdHJlZV9pbmZvCWV0aTsKKwlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbwlpbmZvLCB0b3BfaW5mbzsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJZXh0Ml9leHRlbnRfaGFuZGxlX3QJZWhhbmRsZTsKKwlleHQyX2ZpbHN5cwkJZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJLyogYmxvY2sgbWFwIGZpbGUgYW5kIHdlIHdhbnQgZXh0ZW50IGNvbnZlcnNpb24gKi8KKwlpZiAoIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgJiYKKwkgICAgIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpICYmCisJICAgIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0NPTlZFUlRfQk1BUCkpIHsKKwkJcmV0dXJuIGUyZnNja19yZWJ1aWxkX2V4dGVudHNfbGF0ZXIoY3R4LCBpbm8pOworCX0KKworCWlmICghKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSkKKwkJcmV0dXJuIDA7CisJbWVtc2V0KCZldGksIDAsIHNpemVvZihldGkpKTsKKwlldGkuaW5vID0gaW5vOworCisJLyogT3RoZXJ3aXNlLCBnbyBzY2FuIHRoZSBleHRlbnQgdHJlZS4uLiAqLworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGlubywgaW5vZGUsICZlaGFuZGxlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oZWhhbmRsZSwgJnRvcF9pbmZvKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKworCS8qIENoZWNrIG1heGltdW0gZXh0ZW50IGRlcHRoICovCisJcGN0eC0+aW5vID0gaW5vOworCXBjdHgtPmJsayA9IHRvcF9pbmZvLm1heF9kZXB0aDsKKwlwY3R4LT5ibGsyID0gZXh0MmZzX21heF9leHRlbnRfZGVwdGgoZWhhbmRsZSk7CisJaWYgKHBjdHgtPmJsazIgPCBwY3R4LT5ibGsgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VYVEVOVF9CQURfTUFYX0RFUFRILCBwY3R4KSkKKwkJZXRpLmZvcmNlX3JlYnVpbGQgPSAxOworCisJLyogQ2FuIHdlIGNvbGxlY3QgZXh0ZW50IHRyZWUgbGV2ZWwgc3RhdHM/ICovCisJcGN0eC0+YmxrID0gTUFYX0VYVEVOVF9ERVBUSF9DT1VOVDsKKwlpZiAocGN0eC0+YmxrMiA+IHBjdHgtPmJsaykKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRV9NQVhfRVhURU5UX1RSRUVfREVQVEgsIHBjdHgpOworCisJLyogV2UgbmVlZCB0byBmaXggdHJlZSBkZXB0aCBwcm9ibGVtcywgYnV0IHRoZSBzY2FuIGlzbid0IGEgZml4LiAqLworCWlmIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0ZJWEVTX09OTFkpCisJCWdvdG8gb3V0OworCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoZWhhbmRsZSwgRVhUMl9FWFRFTlRfUk9PVCwgJmV4dGVudCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQ7CisKKwlkbyB7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oZWhhbmRsZSwgJmluZm8pOworCQlpZiAocmV0dmFsKQorCQkJYnJlYWs7CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgZXh0ZW50IGluIGFuIGV4dGVudCBibG9jayB0aGF0IHdlCisJCSAqIGhhdmVuJ3QgdmlzaXRlZCwgY29sbGVjdCBzdGF0cyBvbiB0aGUgYmxvY2suCisJCSAqLworCQlpZiAoaW5mby5jdXJyX2VudHJ5ID09IDEgJiYKKwkJICAgICEoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpICYmCisJCSAgICAhZXRpLmZvcmNlX3JlYnVpbGQpIHsKKwkJCXN0cnVjdCBleHRlbnRfdHJlZV9sZXZlbCAqZXRsOworCisJCQlldGwgPSBldGkuZXh0X2luZm8gKyBpbmZvLmN1cnJfbGV2ZWw7CisJCQlldGwtPm51bV9leHRlbnRzICs9IGluZm8ubnVtX2VudHJpZXM7CisJCQlldGwtPm1heF9leHRlbnRzICs9IGluZm8ubWF4X2VudHJpZXM7CisJCQkvKgorCQkJICogSW1wbGVtZW50YXRpb24gd2FydDogU3BsaXR0aW5nIGV4dGVudCBibG9ja3Mgd2hlbgorCQkJICogYXBwZW5kaW5nIHdpbGwgbGVhdmUgdGhlIG9sZCBibG9jayB3aXRoIG9uZSBmcmVlCisJCQkgKiBlbnRyeS4gIFRoZXJlZm9yZSB1bmxlc3MgdGhlIG5vZGUgaXMgdG90YWxseSBmdWxsLAorCQkJICogcHJldGVuZCB0aGF0IGEgbm9uLXJvb3QgZXh0ZW50IGJsb2NrIGNhbiBob2xkIG9uZQorCQkJICogZmV3ZXIgZW50cnkgdGhhbiBpdCBhY3R1YWxseSBkb2VzLCBzbyB0aGF0IHdlIGRvbid0CisJCQkgKiByZXBlYXRlZGx5IHJlYnVpbGQgdGhlIGV4dGVudCB0cmVlLgorCQkJICovCisJCQlpZiAoaW5mby5jdXJyX2xldmVsICYmCisJCQkgICAgaW5mby5udW1fZW50cmllcyA8IGluZm8ubWF4X2VudHJpZXMpCisJCQkJZXRsLT5tYXhfZXh0ZW50cy0tOworCQl9CisKKwkJLyogU2tpcCB0byB0aGUgZW5kIG9mIGEgYmxvY2sgb2YgbGVhZiBub2RlcyAqLworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19MRUFGKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChlaGFuZGxlLAorCQkJCQkJICAgIEVYVDJfRVhURU5UX0xBU1RfU0lCLAorCQkJCQkJICAgICZleHRlbnQpOworCQkJaWYgKHJldHZhbCkKKwkJCQlicmVhazsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGVoYW5kbGUsIEVYVDJfRVhURU5UX05FWFQsICZleHRlbnQpOworCX0gd2hpbGUgKHJldHZhbCA9PSAwKTsKK291dDoKKwlleHQyZnNfZXh0ZW50X2ZyZWUoZWhhbmRsZSk7CisJcmV0dXJuIGUyZnNja19zaG91bGRfcmVidWlsZF9leHRlbnRzKGN0eCwgcGN0eCwgJmV0aSwgJnRvcF9pbmZvKTsKK30KKworLyogSGF2aW5nIHNjYW5uZWQgYSBmaWxlJ3MgZXh0ZW50IHRyZWUsIGRlY2lkZSBpZiB3ZSBzaG91bGQgcmVidWlsZCBpdCAqLworZXJyY29kZV90IGUyZnNja19zaG91bGRfcmVidWlsZF9leHRlbnRzKGUyZnNja190IGN0eCwKKwkJCQkgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4LAorCQkJCSAgIHN0cnVjdCBleHRlbnRfdHJlZV9pbmZvICpldGksCisJCQkJICAgc3RydWN0IGV4dDJfZXh0ZW50X2luZm8gKmluZm8pCit7CisJc3RydWN0IGV4dGVudF90cmVlX2xldmVsICplaTsKKwlpbnQgaSwgaiwgb3A7CisJdW5zaWduZWQgaW50IGV4dGVudHNfcGVyX2Jsb2NrOworCisJaWYgKGV0aS0+Zm9yY2VfcmVidWlsZCkKKwkJZ290byByZWJ1aWxkOworCisJZXh0ZW50c19wZXJfYmxvY2sgPSAoY3R4LT5mcy0+YmxvY2tzaXplIC0KKwkJCSAgICAgc2l6ZW9mKHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIpKSAvCisJCQkgICAgc2l6ZW9mKHN0cnVjdCBleHQzX2V4dGVudCk7CisJLyoKKwkgKiBJZiB3ZSBjYW4gY29uc29saWRhdGUgYSBsZXZlbCBvciBzaG9ydGVuIHRoZSB0cmVlLCBzY2hlZHVsZSB0aGUKKwkgKiBleHRlbnQgdHJlZSB0byBiZSByZWJ1aWx0LgorCSAqLworCWZvciAoaSA9IDAsIGVpID0gZXRpLT5leHRfaW5mbzsgaSA8IGluZm8tPm1heF9kZXB0aCArIDE7IGkrKywgZWkrKykgeworCQlpZiAoZWktPm1heF9leHRlbnRzIC0gZWktPm51bV9leHRlbnRzID4gZXh0ZW50c19wZXJfYmxvY2spIHsKKwkJCXBjdHgtPmJsayA9IGk7CisJCQlvcCA9IFBSXzFFX0NBTl9OQVJST1dfRVhURU5UX1RSRUU7CisJCQlnb3RvIHJlYnVpbGQ7CisJCX0KKwkJZm9yIChqID0gMDsgaiA8IGk7IGorKykgeworCQkJaWYgKGVpLT5udW1fZXh0ZW50cyA8IGV0aS0+ZXh0X2luZm9bal0ubWF4X2V4dGVudHMpIHsKKwkJCQlwY3R4LT5ibGsgPSBpOworCQkJCW9wID0gUFJfMUVfQ0FOX0NPTExBUFNFX0VYVEVOVF9UUkVFOworCQkJCWdvdG8gcmVidWlsZDsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gMDsKKworcmVidWlsZDoKKwlpZiAoZXRpLT5mb3JjZV9yZWJ1aWxkIHx8IGZpeF9wcm9ibGVtKGN0eCwgb3AsIHBjdHgpKQorCQlyZXR1cm4gZTJmc2NrX3JlYnVpbGRfZXh0ZW50c19sYXRlcihjdHgsIGV0aS0+aW5vKTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBlMmZzY2tfcGFzczFlKGUyZnNja190IGN0eCkKK3sKKwlyZWJ1aWxkX2V4dGVudHMoY3R4LCAiUGFzcyAxRSIsIFBSXzFFX1BBU1NfSEVBREVSKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svZmx1c2hiLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL2ZsdXNoYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDBmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2ZsdXNoYi5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBmbHVzaGIuYyAtLS0gVGhpcyByb3V0aW5lIGZsdXNoZXMgdGhlIGRpc2sgYnVmZmVycyBmb3IgYSBkaXNrCisgKgorICogQ29weXJpZ2h0IDE5OTcsIDIwMDAsIGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogV0FSTklORzogdXNlIG9mIGZsdXNoYiBvbiBzb21lIG9sZGVyIDIuMiBrZXJuZWxzIG9uIGEgaGVhdmlseSBsb2FkZWQKKyAqIHN5c3RlbSB3aWxsIGNvcnJ1cHQgZmlsZXN5c3RlbXMuICBUaGlzIHByb2dyYW0gaXMgbm90IHJlYWxseSB1c2VmdWwKKyAqIGJleW9uZCBmb3IgYmVuY2htYXJraW5nIHNjcmlwdHMuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2luY2x1ZGUgIi4uL21pc2MvbmxzLWVuYWJsZS5oIgorCisvKiBGb3IgTGludXgsIGRlZmluZSBCTEtGTFNCVUYgaWYgbmVjZXNzYXJ5ICovCisjaWYgKCFkZWZpbmVkKEJMS0ZMU0JVRikgJiYgZGVmaW5lZChfX2xpbnV4X18pKQorI2RlZmluZSBCTEtGTFNCVUYJX0lPKDB4MTIsOTcpCS8qIGZsdXNoIGJ1ZmZlciBjYWNoZSAqLworI2VuZGlmCisKK2NvbnN0IGNoYXIgKnByb2duYW1lOworCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLCBfKCJVc2FnZTogJXMgZGlza1xuIiksIHByb2duYW1lKTsKKwlleGl0KDEpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CWZkOworCisJcHJvZ25hbWUgPSBhcmd2WzBdOworCWlmIChhcmdjICE9IDIpCisJCXVzYWdlKCk7CisKKwlmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFksIDApOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKCJvcGVuIik7CisJCWV4aXQoMSk7CisJfQorCS8qCisJICogTm90ZTogdG8gcmVyZWFkIHRoZSBwYXJ0aXRpb24gdGFibGUsIHVzZSB0aGUgaW9jdGwKKwkgKiBCTEtSUlBBUlQgaW5zdGVhZCBvZiBCTEtGU0xCVUYuCisJICovCisjaWZkZWYgQkxLRkxTQlVGCisJaWYgKGlvY3RsKGZkLCBCTEtGTFNCVUYsIDApIDwgMCkgeworCQlwZXJyb3IoImlvY3RsIEJMS0ZMU0JVRiIpOworCQlleGl0KDEpOworCX0KKwlyZXR1cm4gMDsKKyNlbHNlCisJZnByaW50ZihzdGRlcnIsCisJCV8oIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIpKTsKKwlyZXR1cm4gMTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9pc2Nhbi5jIGIvZTJmc3Byb2dzL2UyZnNjay9pc2Nhbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyY2FkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2lzY2FuLmMKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBUZXN0IHRvIHNlZSBob3cgcXVpY2tseSB3ZSBjYW4gc2NhbiB0aGUgaW5vZGUgdGFibGUgKG5vdCBkb2luZworICogYW55dGhpbmcgZWxzZSkKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2lmZGVmIEhBVkVfTUFMTE9DX0gKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKworZXh0ZXJuIGludCBpc2F0dHkoaW50KTsKKworY29uc3QgY2hhciAqIHByb2dyYW1fbmFtZSA9ICJpc2NhbiI7Citjb25zdCBjaGFyICogZGV2aWNlX25hbWUgPSBOVUxMOworCitpbnQgeWZsYWcgPSAwOworaW50IG5mbGFnID0gMDsKK2ludCBwcmVlbiA9IDA7CitpbnQgaW5vZGVfYnVmZmVyX2Jsb2NrcyA9IDA7CitpbnQgaW52YWxpZF9iaXRtYXBzID0gMDsKKworc3RydWN0IHJlc291cmNlX3RyYWNrCWdsb2JhbF9ydHJhY2s7CisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIpLAorCQlwcm9ncmFtX25hbWUpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyB2b2lkIFBSUyhpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludAkJZmx1c2ggPSAwOworCWludAkJYzsKKyNpZmRlZiBNVFJBQ0UKKwlleHRlcm4gdm9pZAkqbWFsbHdhdGNoOworI2VuZGlmCisJZXJyY29kZV90CXJldHZhbDsKKworCXNldGJ1ZihzdGRvdXQsIE5VTEwpOworCXNldGJ1ZihzdGRlcnIsIE5VTEwpOworCWluaXRpYWxpemVfZXh0Ml9lcnJvcl90YWJsZSgpOworCisJaWYgKGFyZ2MgJiYgKmFyZ3YpCisJCXByb2dyYW1fbmFtZSA9ICphcmd2OworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgIkZJIikpICE9IEVPRikKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ0YnOgorCQkJZmx1c2ggPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ0knOgorCQkJaW5vZGVfYnVmZmVyX2Jsb2NrcyA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UgKCk7CisJCX0KKwlkZXZpY2VfbmFtZSA9IGFyZ3Zbb3B0aW5kXTsKKwlpZiAoZmx1c2gpIHsKKwkJaW50CWZkID0gb3BlbihkZXZpY2VfbmFtZSwgT19SRE9OTFksIDApOworCisJCWlmIChmZCA8IDApIHsKKwkJCWNvbV9lcnIoIm9wZW4iLCBlcnJubywKKwkJCSAgICBfKCJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIpLCBkZXZpY2VfbmFtZSk7CisJCQlleGl0KEZTQ0tfRVJST1IpOworCQl9CisJCWlmICgocmV0dmFsID0gZXh0MmZzX3N5bmNfZGV2aWNlKGZkLCAxKSkpIHsKKwkJCWNvbV9lcnIoImV4dDJmc19zeW5jX2RldmljZSIsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiKSwgZGV2aWNlX25hbWUpOworCQkJZXhpdChGU0NLX0VSUk9SKTsKKwkJfQorCQljbG9zZShmZCk7CisJfQorfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwlpbnQJCWV4aXRfdmFsdWUgPSBGU0NLX09LOworCWV4dDJfZmlsc3lzCWZzOworCWV4dDJfaW5vX3QJaW5vOworCV9fdTMyCW51bV9pbm9kZXMgPSAwOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCWV4dDJfaW5vZGVfc2NhbglzY2FuOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmZ2xvYmFsX3J0cmFjayk7CisKKwlQUlMoYXJnYywgYXJndik7CisKKwlyZXR2YWwgPSBleHQyZnNfb3BlbihkZXZpY2VfbmFtZSwgMCwKKwkJCSAgICAgMCwgMCwgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIpLAorCQkJZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCWVoYW5kbGVyX2luaXQoZnMtPmlvKTsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIGlub2RlX2J1ZmZlcl9ibG9ja3MsICZzY2FuKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsIF8oIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwl3aGlsZSAoMSkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGUoc2NhbiwgJmlubywgJmlub2RlKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChpbm8gPT0gMCkKKwkJCWJyZWFrOworCQludW1faW5vZGVzKys7CisJfQorCisJcHJpbnRfcmVzb3VyY2VfdHJhY2soTlVMTCwgJmdsb2JhbF9ydHJhY2spOworCXByaW50ZihfKCIldSBpbm9kZXMgc2Nhbm5lZC5cbiIpLCBudW1faW5vZGVzKTsKKworCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL2pmc191c2VyLmggYi9lMmZzcHJvZ3MvZTJmc2NrL2pmc191c2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU4NzdmMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svamZzX3VzZXIuaApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvbXBhdGliaWxpdHkgaGVhZGVyIGZpbGUgZm9yIGUyZnNjayB3aGljaCBzaG91bGQgYmUgaW5jbHVkZWQKKyAqIGluc3RlYWQgb2YgbGludXgvamZzLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgU3RlcGhlbiBDLiBUd2VlZGllCisgKgorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBhdCB5b3VyIGRpc2NyZXRpb24KKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisjaWZuZGVmIF9KRlNfVVNFUl9ICisjZGVmaW5lIF9KRlNfVVNFUl9ICisKKyNpZmRlZiBERUJVR0ZTCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiYmxraWQuaCIKKyNlbHNlCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiYmxraWQvYmxraWQuaCIKKyNlbmRpZgorI2Vsc2UKKy8qCisgKiBQdWxsIGluIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBlMmZzY2sgY29udGV4dCBzdHJ1Y3R1cmUKKyAqLworI2luY2x1ZGUgImUyZnNjay5oIgorI2VuZGlmCisKK3N0cnVjdCBidWZmZXJfaGVhZCB7CisjaWZkZWYgREVCVUdGUworCWV4dDJfZmlsc3lzCWJfZnM7CisjZWxzZQorCWUyZnNja190CWJfY3R4OworI2VuZGlmCisJaW9fY2hhbm5lbAliX2lvOworCWludAkJYl9zaXplOworCWludAkJYl9lcnI7CisJdW5zaWduZWQgaW50CWJfZGlydHk6MTsKKwl1bnNpZ25lZCBpbnQJYl91cHRvZGF0ZToxOworCXVuc2lnbmVkIGxvbmcgbG9uZyBiX2Jsb2NrbnI7CisJY2hhcgkJYl9kYXRhWzEwMjRdOworfTsKKworc3RydWN0IGlub2RlIHsKKyNpZmRlZiBERUJVR0ZTCisJZXh0Ml9maWxzeXMJaV9mczsKKyNlbHNlCisJZTJmc2NrX3QJaV9jdHg7CisjZW5kaWYKKwlleHQyX2lub190CWlfaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlfZXh0MjsKK307CisKK3N0cnVjdCBrZGV2X3MgeworI2lmZGVmIERFQlVHRlMKKwlleHQyX2ZpbHN5cwlrX2ZzOworI2Vsc2UKKwllMmZzY2tfdAlrX2N0eDsKKyNlbmRpZgorCWludAkJa19kZXY7Cit9OworCisjZGVmaW5lIEtfREVWX0ZTCTEKKyNkZWZpbmUgS19ERVZfSk9VUk5BTAkyCisKKyNkZWZpbmUgbG9ja19idWZmZXIoYmgpIGRvIHt9IHdoaWxlICgwKQorI2RlZmluZSB1bmxvY2tfYnVmZmVyKGJoKSBkbyB7fSB3aGlsZSAoMCkKKyNkZWZpbmUgYnVmZmVyX3JlcShiaCkgMQorI2RlZmluZSBkb19yZWFkYWhlYWQoam91cm5hbCwgc3RhcnQpIGRvIHt9IHdoaWxlICgwKQorCit0eXBlZGVmIHN0cnVjdCB7CisJaW50CW9iamVjdF9sZW5ndGg7Cit9IGxrbWVtX2NhY2hlX3Q7CisKKyNkZWZpbmUga21lbV9jYWNoZV9hbGxvYyhjYWNoZSwgZmxhZ3MpIG1hbGxvYygoY2FjaGUpLT5vYmplY3RfbGVuZ3RoKQorI2RlZmluZSBrbWVtX2NhY2hlX2ZyZWUoY2FjaGUsIG9iaikgZnJlZShvYmopCisjZGVmaW5lIGttZW1fY2FjaGVfY3JlYXRlKG5hbWUsIGxlbiwgYSwgYiwgYykgZG9fY2FjaGVfY3JlYXRlKGxlbikKKyNkZWZpbmUga21lbV9jYWNoZV9kZXN0cm95KGNhY2hlKSBkb19jYWNoZV9kZXN0cm95KGNhY2hlKQorI2RlZmluZSBrbWFsbG9jKGxlbiwgZmxhZ3MpIG1hbGxvYyhsZW4pCisjZGVmaW5lIGtmcmVlKHApIGZyZWUocCkKKworI2RlZmluZSBjb25kX3Jlc2NoZWQoKQlkbyB7IH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX19pbml0CisKKy8qCisgKiBOb3cgcHVsbCBpbiB0aGUgcmVhbCBsaW51eC9qZnMuaCBkZWZpbml0aW9ucy4KKyAqLworI2luY2x1ZGUgPGV4dDJmcy9rZXJuZWwtamJkLmg+CisKKy8qCisgKiBXZSB1c2UgdGhlIHN0YW5kYXJkIGxpYmV4dDJmcyBwb3J0YWJpbGl0eSB0cmlja3MgZm9yIGlubGluZQorICogZnVuY3Rpb25zLgorICovCisjaWZkZWYgTk9fSU5MSU5FX0ZVTkNTCitleHRlcm4gbGttZW1fY2FjaGVfdCAqZG9fY2FjaGVfY3JlYXRlKGludCBsZW4pOworZXh0ZXJuIHZvaWQgZG9fY2FjaGVfZGVzdHJveShsa21lbV9jYWNoZV90ICpjYWNoZSk7CitleHRlcm4gc2l6ZV90IGpvdXJuYWxfdGFnX2J5dGVzKGpvdXJuYWxfdCAqam91cm5hbCk7CisjZW5kaWYKKworI2lmIChkZWZpbmVkKEUyRlNDS19JTkNMVURFX0lOTElORV9GVU5DUykgfHwgIWRlZmluZWQoTk9fSU5MSU5FX0ZVTkNTKSkKKyNpZmRlZiBFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MKKyNpZiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMKQorI2RlZmluZSBfSU5MSU5FXyBleHRlcm4gaW5saW5lCisjZWxzZQorI2RlZmluZSBfSU5MSU5FXyBpbmxpbmUKKyNlbmRpZgorI2Vsc2UgLyogIUUyRlNDS19JTkNMVURFX0lOTElORSBGVU5DUyAqLworI2lmIChfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwpCisjZGVmaW5lIF9JTkxJTkVfIGlubGluZQorI2Vsc2UgLyogbm90IEM5OSAqLworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIF9JTkxJTkVfIGV4dGVybiBfX2lubGluZV9fCisjZWxzZQkJCQkvKiBGb3IgV2F0Y29tIEMgKi8KKyNkZWZpbmUgX0lOTElORV8gZXh0ZXJuIGlubGluZQorI2VuZGlmIC8qIF9fR05VQ19fICovCisjZW5kaWYgLyogX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMICovCisjZW5kaWYgLyogRTJGU0NLX0lOQ0xVREVfSU5MSU5FX0ZVTkNTICovCisKKworX0lOTElORV8gbGttZW1fY2FjaGVfdCAqZG9fY2FjaGVfY3JlYXRlKGludCBsZW4pCit7CisJbGttZW1fY2FjaGVfdCAqbmV3X2NhY2hlOworCisJbmV3X2NhY2hlID0gbWFsbG9jKHNpemVvZigqbmV3X2NhY2hlKSk7CisJaWYgKG5ld19jYWNoZSkKKwkJbmV3X2NhY2hlLT5vYmplY3RfbGVuZ3RoID0gbGVuOworCXJldHVybiBuZXdfY2FjaGU7Cit9CisKK19JTkxJTkVfIHZvaWQgZG9fY2FjaGVfZGVzdHJveShsa21lbV9jYWNoZV90ICpjYWNoZSkKK3sKKwlmcmVlKGNhY2hlKTsKK30KKworI3VuZGVmIF9JTkxJTkVfCisjZW5kaWYKKworLyoKKyAqIEtlcm5lbCBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucyBhcmUgZGVmaW5lZCBpbiBqb3VybmFsLmMKKyAqLworaW50IGpvdXJuYWxfYm1hcChqb3VybmFsX3QgKmpvdXJuYWwsIGJsazY0X3QgYmxvY2ssIHVuc2lnbmVkIGxvbmcgbG9uZyAqcGh5cyk7CitzdHJ1Y3QgYnVmZmVyX2hlYWQgKmdldGJsayhrZGV2X3QgY3R4LCBibGs2NF90IGJsb2NrbnIsIGludCBibG9ja3NpemUpOworaW50IHN5bmNfYmxvY2tkZXYoa2Rldl90IGtkZXYpOwordm9pZCBsbF9yd19ibG9jayhpbnQgcncsIGludCBkdW1teSwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaFtdKTsKK3ZvaWQgbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7Cit2b2lkIG1hcmtfYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB2YWwpOwordm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCk7CitpbnQgYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpOwordm9pZCB3YWl0X29uX2J1ZmZlcihzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKTsKKworLyoKKyAqIERlZmluZSBuZXdlciAyLjUgaW50ZXJmYWNlcworICovCisjZGVmaW5lIF9fZ2V0YmxrKGRldiwgYmxvY2tuciwgYmxvY2tzaXplKSBnZXRibGsoZGV2LCBibG9ja25yLCBibG9ja3NpemUpCisjZGVmaW5lIHNldF9idWZmZXJfdXB0b2RhdGUoYmgpIG1hcmtfYnVmZmVyX3VwdG9kYXRlKGJoLCAxKQorCisjaWZkZWYgREVCVUdGUworI2luY2x1ZGUgPGFzc2VydC5oPgorI3VuZGVmIEpfQVNTRVJUCisjZGVmaW5lIEpfQVNTRVJUKHgpCWFzc2VydCh4KQorCisjZGVmaW5lIEpTQl9IQVNfSU5DT01QQVRfRkVBVFVSRShqc2IsIG1hc2spCQkJCVwKKwkoKGpzYiktPnNfaGVhZGVyLmhfYmxvY2t0eXBlID09IGV4dDJmc19jcHVfdG9fYmUzMihKRlNfU1VQRVJCTE9DS19WMikgJiYJXAorCSAoKGpzYiktPnNfZmVhdHVyZV9pbmNvbXBhdCAmIGV4dDJmc19jcHVfdG9fYmUzMigobWFzaykpKSkKKyNlbHNlICAvKiAhREVCVUdGUyAqLworCitleHRlcm4gZTJmc2NrX3QgZTJmc2NrX2dsb2JhbF9jdHg7ICAvKiBUcnkgeW91ciB2ZXJ5IGJlc3Qgbm90IHRvIHVzZSB0aGlzISAqLworCisjZGVmaW5lIEpfQVNTRVJUKGFzc2VydCkJCQkJCQlcCisJZG8geyBpZiAoIShhc3NlcnQpKSB7CQkJCQkJXAorCQlwcmludGYgKCJBc3NlcnRpb24gZmFpbHVyZSBpbiAlcygpIGF0ICVzIGxpbmUgJWQ6ICIJXAorCQkJIlwiJXNcIlxuIiwJCQkJCVwKKwkJCV9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fLCAjIGFzc2VydCk7CVwKKwkJZmF0YWxfZXJyb3IoZTJmc2NrX2dsb2JhbF9jdHgsIDApOwkJCVwKKwl9IH0gd2hpbGUgKDApCisKKyNlbmRpZiAvKiBERUJVR0ZTICovCisKKyNpZm5kZWYgRUZTQkFEQ1JDCisjZGVmaW5lIEVGU0JBRENSQwlFWFQyX0VUX0JBRF9DUkMKKyNlbmRpZgorI2lmbmRlZiBFRlNDT1JSVVBURUQKKyNkZWZpbmUgRUZTQ09SUlVQVEVECUVYVDJfRVRfRklMRVNZU1RFTV9DT1JSVVBURUQKKyNlbmRpZgorCisvKiByZWNvdmVyeS5jICovCitleHRlcm4gaW50CWpvdXJuYWxfcmVjb3ZlciAgICAoam91cm5hbF90ICpqb3VybmFsKTsKK2V4dGVybiBpbnQJam91cm5hbF9za2lwX3JlY292ZXJ5IChqb3VybmFsX3QgKik7CisKKy8qIHJldm9rZS5jICovCitleHRlcm4gaW50CWpvdXJuYWxfaW5pdF9yZXZva2Uoam91cm5hbF90ICosIGludCk7CitleHRlcm4gdm9pZAlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlKGpvdXJuYWxfdCAqKTsKK2V4dGVybiB2b2lkCWpvdXJuYWxfZGVzdHJveV9yZXZva2VfY2FjaGVzKHZvaWQpOworZXh0ZXJuIGludAlqb3VybmFsX2luaXRfcmV2b2tlX2NhY2hlcyh2b2lkKTsKKworZXh0ZXJuIGludAlqb3VybmFsX3NldF9yZXZva2Uoam91cm5hbF90ICosIHVuc2lnbmVkIGxvbmcgbG9uZywgdGlkX3QpOworZXh0ZXJuIGludAlqb3VybmFsX3Rlc3RfcmV2b2tlKGpvdXJuYWxfdCAqLCB1bnNpZ25lZCBsb25nIGxvbmcsIHRpZF90KTsKK2V4dGVybiB2b2lkCWpvdXJuYWxfY2xlYXJfcmV2b2tlKGpvdXJuYWxfdCAqKTsKKworI2VuZGlmIC8qIF9KRlNfVVNFUl9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL2pvdXJuYWwuYyBiL2UyZnNwcm9ncy9lMmZzY2svam91cm5hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZmU3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL2pvdXJuYWwuYwpAQCAtMCwwICsxLDExODEgQEAKKy8qCisgKiBqb3VybmFsLmMgLS0tIGNvZGUgZm9yIGhhbmRsaW5nIHRoZSAiZXh0MyIgam91cm5hbAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAwIFRoZW9kb3JlIFRzJ28KKyAqCisgKiBQYXJ0cyBvZiB0aGUgY29kZSBhcmUgYmFzZWQgb24gZnMvamZzL2pvdXJuYWwuYyBieSBTdGVwaGVuIEMuIFR3ZWVkaWUKKyAqIENvcHlyaWdodCAoQykgMTk5OSBSZWQgSGF0IFNvZnR3YXJlCisgKgorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvciBhdCB5b3VyIGRpc2NyZXRpb24KKyAqIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZGVmaW5lIE1OVF9GTCAoTVNfTUdDX1ZBTCB8IE1TX1JET05MWSkKKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKworI2RlZmluZSBFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MKKyNpbmNsdWRlICJqZnNfdXNlci5oIgorI2luY2x1ZGUgInByb2JsZW0uaCIKKyNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKKworI2lmZGVmIENPTkZJR19KQkRfREVCVUcJCS8qIEVuYWJsZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLWpmcy1kZWJ1ZyAqLworc3RhdGljIGludCBiaF9jb3VudCA9IDA7CisjZW5kaWYKKworLyoKKyAqIERlZmluZSBVU0VfSU5PREVfSU8gdG8gdXNlIHRoZSBpbm9kZV9pby5jIC8gZmlsZWlvLmMgY29kZXBhdGhzLgorICogVGhpcyBjcmVhdGVzIGEgbGFyZ2VyIHN0YXRpYyBiaW5hcnksIGFuZCBhIHNtYWxsZXIgYmluYXJ5IHVzaW5nCisgKiBzaGFyZWQgbGlicmFyaWVzLiAgSXQncyBhbHNvIHByb2JhYmx5IHNsaWdodGx5IGxlc3MgQ1BVLWVmZmljaWVudCwKKyAqIHdoaWNoIGlzIHdoeSBpdCdzIG5vdCBvbiBieSBkZWZhdWx0LiAgQnV0LCBpdCdzIGEgZ29vZCB3YXkgb2YKKyAqIHRlc3RpbmcgdGhlIGZ1bmN0aW9ucyBpbiBpbm9kZV9pby5jIGFuZCBmaWxlaW8uYy4KKyAqLworI3VuZGVmIFVTRV9JTk9ERV9JTworCisvKiBDaGVja3N1bW1pbmcgZnVuY3Rpb25zICovCitzdGF0aWMgaW50IGUyZnNja19qb3VybmFsX3ZlcmlmeV9jc3VtX3R5cGUoam91cm5hbF90ICpqLAorCQkJCQkgICBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiKQoreworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4ganNiLT5zX2NoZWNrc3VtX3R5cGUgPT0gSkJEMl9DUkMzMkNfQ0hLU1VNOworfQorCitzdGF0aWMgX191MzIgZTJmc2NrX2pvdXJuYWxfc2JfY3N1bShqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiKQoreworCV9fdTMyIGNyYywgb2xkX2NyYzsKKworCW9sZF9jcmMgPSBqc2ItPnNfY2hlY2tzdW07CisJanNiLT5zX2NoZWNrc3VtID0gMDsKKwljcmMgPSBleHQyZnNfY3JjMzJjX2xlKH4wLCAodW5zaWduZWQgY2hhciAqKWpzYiwKKwkJCSAgICAgICBzaXplb2Yoam91cm5hbF9zdXBlcmJsb2NrX3QpKTsKKwlqc2ItPnNfY2hlY2tzdW0gPSBvbGRfY3JjOworCisJcmV0dXJuIGNyYzsKK30KKworc3RhdGljIGludCBlMmZzY2tfam91cm5hbF9zYl9jc3VtX3ZlcmlmeShqb3VybmFsX3QgKmosCisJCQkJCSBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiKQoreworCV9fdTMyIHByb3ZpZGVkLCBjYWxjdWxhdGVkOworCisJaWYgKCFqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGopKQorCQlyZXR1cm4gMTsKKworCXByb3ZpZGVkID0gZXh0MmZzX2JlMzJfdG9fY3B1KGpzYi0+c19jaGVja3N1bSk7CisJY2FsY3VsYXRlZCA9IGUyZnNja19qb3VybmFsX3NiX2NzdW0oanNiKTsKKworCXJldHVybiBwcm92aWRlZCA9PSBjYWxjdWxhdGVkOworfQorCitzdGF0aWMgZXJyY29kZV90IGUyZnNja19qb3VybmFsX3NiX2NzdW1fc2V0KGpvdXJuYWxfdCAqaiwKKwkJCQkJICAgIGpvdXJuYWxfc3VwZXJibG9ja190ICpqc2IpCit7CisJX191MzIgY3JjOworCisJaWYgKCFqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGopKQorCQlyZXR1cm4gMDsKKworCWNyYyA9IGUyZnNja19qb3VybmFsX3NiX2NzdW0oanNiKTsKKwlqc2ItPnNfY2hlY2tzdW0gPSBleHQyZnNfY3B1X3RvX2JlMzIoY3JjKTsKKwlyZXR1cm4gMDsKK30KKworLyogS2VybmVsIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zIGZvciBoYW5kbGluZyB0aGUgam91cm5hbC4gIFRoZXNlIGFsbG93IHVzCisgKiB0byB1c2UgdGhlIHJlY292ZXJ5LmMgZmlsZSB2aXJ0dWFsbHkgdW5jaGFuZ2VkIGZyb20gdGhlIGtlcm5lbCwgc28gd2UKKyAqIGRvbid0IGhhdmUgdG8gZG8gbXVjaCB0byBrZWVwIGtlcm5lbCBhbmQgdXNlciByZWNvdmVyeSBpbiBzeW5jLgorICovCitpbnQgam91cm5hbF9ibWFwKGpvdXJuYWxfdCAqam91cm5hbCwgYmxrNjRfdCBibG9jaywgdW5zaWduZWQgbG9uZyBsb25nICpwaHlzKQoreworI2lmZGVmIFVTRV9JTk9ERV9JTworCSpwaHlzID0gYmxvY2s7CisJcmV0dXJuIDA7CisjZWxzZQorCXN0cnVjdCBpbm9kZSAJKmlub2RlID0gam91cm5hbC0+al9pbm9kZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCXBibGs7CisKKwlpZiAoIWlub2RlKSB7CisJCSpwaHlzID0gYmxvY2s7CisJCXJldHVybiAwOworCX0KKworCXJldHZhbD0gZXh0MmZzX2JtYXAyKGlub2RlLT5pX2N0eC0+ZnMsIGlub2RlLT5pX2lubywKKwkJCSAgICAgJmlub2RlLT5pX2V4dDIsIE5VTEwsIDAsIGJsb2NrLCAwLCAmcGJsayk7CisJKnBoeXMgPSBwYmxrOworCXJldHVybiAoaW50KSByZXR2YWw7CisjZW5kaWYKK30KKworc3RydWN0IGJ1ZmZlcl9oZWFkICpnZXRibGsoa2Rldl90IGtkZXYsIGJsazY0X3QgYmxvY2tuciwgaW50IGJsb2Nrc2l6ZSkKK3sKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCWludCBidWZzaXplID0gc2l6ZW9mKCpiaCkgKyBrZGV2LT5rX2N0eC0+ZnMtPmJsb2Nrc2l6ZSAtCisJCXNpemVvZihiaC0+Yl9kYXRhKTsKKworCWJoID0gZTJmc2NrX2FsbG9jYXRlX21lbW9yeShrZGV2LT5rX2N0eCwgYnVmc2l6ZSwgImJsb2NrIGJ1ZmZlciIpOworCWlmICghYmgpCisJCXJldHVybiBOVUxMOworCisjaWZkZWYgQ09ORklHX0pCRF9ERUJVRworCWlmIChqb3VybmFsX2VuYWJsZV9kZWJ1ZyA+PSAzKQorCQliaF9jb3VudCsrOworI2VuZGlmCisJamZzX2RlYnVnKDQsICJnZXRibGsgZm9yIGJsb2NrICVsbHUgKCVkIGJ5dGVzKSh0b3RhbCAlZClcbiIsCisJCSAgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmxvY2tuciwgYmxvY2tzaXplLCBiaF9jb3VudCk7CisKKwliaC0+Yl9jdHggPSBrZGV2LT5rX2N0eDsKKwlpZiAoa2Rldi0+a19kZXYgPT0gS19ERVZfRlMpCisJCWJoLT5iX2lvID0ga2Rldi0+a19jdHgtPmZzLT5pbzsKKwllbHNlCisJCWJoLT5iX2lvID0ga2Rldi0+a19jdHgtPmpvdXJuYWxfaW87CisJYmgtPmJfc2l6ZSA9IGJsb2Nrc2l6ZTsKKwliaC0+Yl9ibG9ja25yID0gYmxvY2tucjsKKworCXJldHVybiBiaDsKK30KKworaW50IHN5bmNfYmxvY2tkZXYoa2Rldl90IGtkZXYpCit7CisJaW9fY2hhbm5lbAlpbzsKKworCWlmIChrZGV2LT5rX2RldiA9PSBLX0RFVl9GUykKKwkJaW8gPSBrZGV2LT5rX2N0eC0+ZnMtPmlvOworCWVsc2UKKwkJaW8gPSBrZGV2LT5rX2N0eC0+am91cm5hbF9pbzsKKworCXJldHVybiBpb19jaGFubmVsX2ZsdXNoKGlvKSA/IEVJTyA6IDA7Cit9CisKK3ZvaWQgbGxfcndfYmxvY2soaW50IHJ3LCBpbnQgbnIsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmhwW10pCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoOworCisJZm9yICg7IG5yID4gMDsgLS1ucikgeworCQliaCA9ICpiaHArKzsKKwkJaWYgKHJ3ID09IFJFQUQgJiYgIWJoLT5iX3VwdG9kYXRlKSB7CisJCQlqZnNfZGVidWcoMywgInJlYWRpbmcgYmxvY2sgJWxsdS8lcFxuIiwKKwkJCQkgIGJoLT5iX2Jsb2NrbnIsICh2b2lkICopIGJoKTsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChiaC0+Yl9pbywKKwkJCQkJCSAgICAgYmgtPmJfYmxvY2tuciwKKwkJCQkJCSAgICAgMSwgYmgtPmJfZGF0YSk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycihiaC0+Yl9jdHgtPmRldmljZV9uYW1lLCByZXR2YWwsCisJCQkJCSJ3aGlsZSByZWFkaW5nIGJsb2NrICVsbHVcbiIsCisJCQkJCWJoLT5iX2Jsb2NrbnIpOworCQkJCWJoLT5iX2VyciA9IChpbnQpIHJldHZhbDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWJoLT5iX3VwdG9kYXRlID0gMTsKKwkJfSBlbHNlIGlmIChydyA9PSBXUklURSAmJiBiaC0+Yl9kaXJ0eSkgeworCQkJamZzX2RlYnVnKDMsICJ3cml0aW5nIGJsb2NrICVsbHUvJXBcbiIsCisJCQkJICBiaC0+Yl9ibG9ja25yLAorCQkJCSAgKHZvaWQgKikgYmgpOworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChiaC0+Yl9pbywKKwkJCQkJCSAgICAgIGJoLT5iX2Jsb2NrbnIsCisJCQkJCQkgICAgICAxLCBiaC0+Yl9kYXRhKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKGJoLT5iX2N0eC0+ZGV2aWNlX25hbWUsIHJldHZhbCwKKwkJCQkJIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdVxuIiwKKwkJCQkJYmgtPmJfYmxvY2tucik7CisJCQkJYmgtPmJfZXJyID0gKGludCkgcmV0dmFsOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJYmgtPmJfZGlydHkgPSAwOworCQkJYmgtPmJfdXB0b2RhdGUgPSAxOworCQl9IGVsc2UgeworCQkJamZzX2RlYnVnKDMsICJuby1vcCAlcyBmb3IgYmxvY2sgJWxsdVxuIiwKKwkJCQkgIHJ3ID09IFJFQUQgPyAicmVhZCIgOiAid3JpdGUiLAorCQkJCSAgYmgtPmJfYmxvY2tucik7CisJCX0KKwl9Cit9CisKK3ZvaWQgbWFya19idWZmZXJfZGlydHkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwliaC0+Yl9kaXJ0eSA9IDE7Cit9CisKK3N0YXRpYyB2b2lkIG1hcmtfYnVmZmVyX2NsZWFuKHN0cnVjdCBidWZmZXJfaGVhZCAqIGJoKQoreworCWJoLT5iX2RpcnR5ID0gMDsKK30KKwordm9pZCBicmVsc2Uoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwlpZiAoYmgtPmJfZGlydHkpCisJCWxsX3J3X2Jsb2NrKFdSSVRFLCAxLCAmYmgpOworCWpmc19kZWJ1ZygzLCAiZnJlZWluZyBibG9jayAlbGx1LyVwICh0b3RhbCAlZClcbiIsCisJCSAgYmgtPmJfYmxvY2tuciwgKHZvaWQgKikgYmgsIC0tYmhfY291bnQpOworCWV4dDJmc19mcmVlX21lbSgmYmgpOworfQorCitpbnQgYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgpCit7CisJcmV0dXJuIGJoLT5iX3VwdG9kYXRlOworfQorCit2b2lkIG1hcmtfYnVmZmVyX3VwdG9kYXRlKHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsIGludCB2YWwpCit7CisJYmgtPmJfdXB0b2RhdGUgPSB2YWw7Cit9CisKK3ZvaWQgd2FpdF9vbl9idWZmZXIoc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCkKK3sKKwlpZiAoIWJoLT5iX3VwdG9kYXRlKQorCQlsbF9yd19ibG9jayhSRUFELCAxLCAmYmgpOworfQorCisKK3N0YXRpYyB2b2lkIGUyZnNja19jbGVhcl9yZWNvdmVyKGUyZnNja190IGN0eCwgaW50IGVycm9yKQoreworCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoY3R4LT5mcy0+c3VwZXIpOworCisJLyogaWYgd2UgaGFkIGFuIGVycm9yIGRvaW5nIGpvdXJuYWwgcmVjb3ZlcnksIHdlIG5lZWQgYSBmdWxsIGZzY2sgKi8KKwlpZiAoZXJyb3IpCisJCWN0eC0+ZnMtPnN1cGVyLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGN0eC0+ZnMpOworfQorCisvKgorICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGpvdXJuYWwuCisgKi8KK3N0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCB7CisJZTJfYmxrY250X3QJbGFzdF9ibG9jazsKK307CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19qb3VybmFsX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJCSBibGs2NF90CSpibG9ja19uciwKKwkJCQkgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCWJsazY0X3QJYmxrID0gKmJsb2NrX25yOworCisJcCA9IChzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKikgcHJpdl9kYXRhOworCisJaWYgKCFibGsgfHwgYmxrIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkgICAgYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCisJaWYgKGJsb2NrY250ID49IDApCisJCXAtPmxhc3RfYmxvY2sgPSBibG9ja2NudDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBlMmZzY2tfZ2V0X2pvdXJuYWwoZTJmc2NrX3QgY3R4LCBqb3VybmFsX3QgKipyZXRfam91cm5hbCkKK3sKKwlzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgcGI7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sganN1cGVyOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgCSpiaDsKKwlzdHJ1Y3QgaW5vZGUJCSpqX2lub2RlID0gTlVMTDsKKwlzdHJ1Y3Qga2Rldl9zCQkqZGV2X2ZzID0gTlVMTCwgKmRldl9qb3VybmFsOworCWNvbnN0IGNoYXIJCSpqb3VybmFsX25hbWUgPSAwOworCWpvdXJuYWxfdAkJKmpvdXJuYWwgPSBOVUxMOworCWVycmNvZGVfdAkJcmV0dmFsID0gMDsKKwlpb19tYW5hZ2VyCQlpb19wdHIgPSAwOworCXVuc2lnbmVkIGxvbmcgbG9uZwlzdGFydCA9IDA7CisJaW50CQkJZXh0X2pvdXJuYWwgPSAwOworCWludAkJCXRyaWVkX2JhY2t1cF9qbmwgPSAwOworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCWpvdXJuYWwgPSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgc2l6ZW9mKGpvdXJuYWxfdCksICJqb3VybmFsIik7CisJaWYgKCFqb3VybmFsKSB7CisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwl9CisKKwlkZXZfZnMgPSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgMipzaXplb2Yoc3RydWN0IGtkZXZfcyksICJrZGV2Iik7CisJaWYgKCFkZXZfZnMpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9OT19NRU1PUlk7CisJCWdvdG8gZXJyb3V0OworCX0KKwlkZXZfam91cm5hbCA9IGRldl9mcysxOworCisJZGV2X2ZzLT5rX2N0eCA9IGRldl9qb3VybmFsLT5rX2N0eCA9IGN0eDsKKwlkZXZfZnMtPmtfZGV2ID0gS19ERVZfRlM7CisJZGV2X2pvdXJuYWwtPmtfZGV2ID0gS19ERVZfSk9VUk5BTDsKKworCWpvdXJuYWwtPmpfZGV2ID0gZGV2X2pvdXJuYWw7CisJam91cm5hbC0+al9mc19kZXYgPSBkZXZfZnM7CisJam91cm5hbC0+al9pbm9kZSA9IE5VTEw7CisJam91cm5hbC0+al9ibG9ja3NpemUgPSBjdHgtPmZzLT5ibG9ja3NpemU7CisKKwlpZiAodXVpZF9pc19udWxsKHNiLT5zX2pvdXJuYWxfdXVpZCkpIHsKKwkJaWYgKCFzYi0+c19qb3VybmFsX2ludW0pIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfQkFEX0lOT0RFX05VTTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWpfaW5vZGUgPSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgc2l6ZW9mKCpqX2lub2RlKSwKKwkJCQkJCSAiam91cm5hbCBpbm9kZSIpOworCQlpZiAoIWpfaW5vZGUpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTk9fTUVNT1JZOworCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQlqX2lub2RlLT5pX2N0eCA9IGN0eDsKKwkJal9pbm9kZS0+aV9pbm8gPSBzYi0+c19qb3VybmFsX2ludW07CisKKwkJaWYgKChyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShjdHgtPmZzLAorCQkJCQkJc2ItPnNfam91cm5hbF9pbnVtLAorCQkJCQkJJmpfaW5vZGUtPmlfZXh0MikpKSB7CisJCXRyeV9iYWNrdXBfam91cm5hbDoKKwkJCWlmIChzYi0+c19qbmxfYmFja3VwX3R5cGUgIT0gRVhUM19KTkxfQkFDS1VQX0JMT0NLUyB8fAorCQkJICAgIHRyaWVkX2JhY2t1cF9qbmwpCisJCQkJZ290byBlcnJvdXQ7CisJCQltZW1zZXQoJmpfaW5vZGUtPmlfZXh0MiwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSk7CisJCQltZW1jcHkoJmpfaW5vZGUtPmlfZXh0Mi5pX2Jsb2NrWzBdLCBzYi0+c19qbmxfYmxvY2tzLAorCQkJICAgICAgIEVYVDJfTl9CTE9DS1MqNCk7CisJCQlqX2lub2RlLT5pX2V4dDIuaV9zaXplX2hpZ2ggPSBzYi0+c19qbmxfYmxvY2tzWzE1XTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX3NpemUgPSBzYi0+c19qbmxfYmxvY2tzWzE2XTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX2xpbmtzX2NvdW50ID0gMTsKKwkJCWpfaW5vZGUtPmlfZXh0Mi5pX21vZGUgPSBMSU5VWF9TX0lGUkVHIHwgMDYwMDsKKwkJCWUyZnNja191c2VfaW5vZGVfc2hvcnRjdXRzKGN0eCwgMSk7CisJCQljdHgtPnN0YXNoZWRfaW5vID0gal9pbm9kZS0+aV9pbm87CisJCQljdHgtPnN0YXNoZWRfaW5vZGUgPSAmal9pbm9kZS0+aV9leHQyOworCQkJdHJpZWRfYmFja3VwX2pubCsrOworCQl9CisJCWlmICghal9pbm9kZS0+aV9leHQyLmlfbGlua3NfY291bnQgfHwKKwkJICAgICFMSU5VWF9TX0lTUkVHKGpfaW5vZGUtPmlfZXh0Mi5pX21vZGUpKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX05PX0pPVVJOQUw7CisJCQlnb3RvIHRyeV9iYWNrdXBfam91cm5hbDsKKwkJfQorCQlpZiAoRVhUMl9JX1NJWkUoJmpfaW5vZGUtPmlfZXh0MikgLyBqb3VybmFsLT5qX2Jsb2Nrc2l6ZSA8CisJCSAgICBKRlNfTUlOX0pPVVJOQUxfQkxPQ0tTKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0pPVVJOQUxfVE9PX1NNQUxMOworCQkJZ290byB0cnlfYmFja3VwX2pvdXJuYWw7CisJCX0KKwkJcGIubGFzdF9ibG9jayA9IC0xOworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoY3R4LT5mcywgal9pbm9kZS0+aV9pbm8sCisJCQkJCSAgICAgICBCTE9DS19GTEFHX0hPTEUsIDAsCisJCQkJCSAgICAgICBwcm9jZXNzX2pvdXJuYWxfYmxvY2ssICZwYik7CisJCWlmICgocGIubGFzdF9ibG9jayArIDEpICogY3R4LT5mcy0+YmxvY2tzaXplIDwKKwkJICAgIChpbnQpIEVYVDJfSV9TSVpFKCZqX2lub2RlLT5pX2V4dDIpKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0pPVVJOQUxfVE9PX1NNQUxMOworCQkJZ290byB0cnlfYmFja3VwX2pvdXJuYWw7CisJCX0KKwkJaWYgKHRyaWVkX2JhY2t1cF9qbmwgJiYgIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSkgeworCQkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGN0eC0+ZnMsIHNiLT5zX2pvdXJuYWxfaW51bSwKKwkJCQkJCSAgICAmal9pbm9kZS0+aV9leHQyKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQlqb3VybmFsLT5qX21heGxlbiA9IEVYVDJfSV9TSVpFKCZqX2lub2RlLT5pX2V4dDIpIC8KKwkJCWpvdXJuYWwtPmpfYmxvY2tzaXplOworCisjaWZkZWYgVVNFX0lOT0RFX0lPCisJCXJldHZhbCA9IGV4dDJmc19pbm9kZV9pb19pbnRlcm4yKGN0eC0+ZnMsIHNiLT5zX2pvdXJuYWxfaW51bSwKKwkJCQkJCSAmal9pbm9kZS0+aV9leHQyLAorCQkJCQkJICZqb3VybmFsX25hbWUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisKKwkJaW9fcHRyID0gaW5vZGVfaW9fbWFuYWdlcjsKKyNlbHNlCisJCWpvdXJuYWwtPmpfaW5vZGUgPSBqX2lub2RlOworCQljdHgtPmpvdXJuYWxfaW8gPSBjdHgtPmZzLT5pbzsKKwkJaWYgKChyZXR2YWwgPSAoZXJyY29kZV90KSBqb3VybmFsX2JtYXAoam91cm5hbCwgMCwgJnN0YXJ0KSkgIT0gMCkKKwkJCWdvdG8gZXJyb3V0OworI2VuZGlmCisJfSBlbHNlIHsKKwkJZXh0X2pvdXJuYWwgPSAxOworCQlpZiAoIWN0eC0+am91cm5hbF9uYW1lKSB7CisJCQljaGFyIHV1aWRbMzddOworCisJCQl1dWlkX3VucGFyc2Uoc2ItPnNfam91cm5hbF91dWlkLCB1dWlkKTsKKwkJCWN0eC0+am91cm5hbF9uYW1lID0gYmxraWRfZ2V0X2Rldm5hbWUoY3R4LT5ibGtpZCwKKwkJCQkJCQkgICAgICAiVVVJRCIsIHV1aWQpOworCQkJaWYgKCFjdHgtPmpvdXJuYWxfbmFtZSkKKwkJCQljdHgtPmpvdXJuYWxfbmFtZSA9IGJsa2lkX2Rldm5vX3RvX2Rldm5hbWUoc2ItPnNfam91cm5hbF9kZXYpOworCQl9CisJCWpvdXJuYWxfbmFtZSA9IGN0eC0+am91cm5hbF9uYW1lOworCisJCWlmICgham91cm5hbF9uYW1lKSB7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfQ0FOVF9GSU5EX0pPVVJOQUwsICZwY3R4KTsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTE9BRF9FWFRfSk9VUk5BTDsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisKKwkJamZzX2RlYnVnKDEsICJVc2luZyBqb3VybmFsIGZpbGUgJXNcbiIsIGpvdXJuYWxfbmFtZSk7CisJCWlvX3B0ciA9IHVuaXhfaW9fbWFuYWdlcjsKKwl9CisKKyNpZiAwCisJdGVzdF9pb19iYWNraW5nX21hbmFnZXIgPSBpb19wdHI7CisJaW9fcHRyID0gdGVzdF9pb19tYW5hZ2VyOworI2VuZGlmCisjaWZuZGVmIFVTRV9JTk9ERV9JTworCWlmIChleHRfam91cm5hbCkKKyNlbmRpZgorCXsKKwkJaW50IGZsYWdzID0gSU9fRkxBR19SVzsKKwkJaWYgKCEoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfSVNST09UICYmCisJCSAgICAgIGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX1JFQURPTkxZKSkKKwkJCWZsYWdzIHw9IElPX0ZMQUdfRVhDTFVTSVZFOworCQlpZiAoKGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX1JFQURPTkxZKSAmJgorCQkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRk9SQ0UpKQorCQkJZmxhZ3MgJj0gfklPX0ZMQUdfRVhDTFVTSVZFOworCisKKwkJcmV0dmFsID0gaW9fcHRyLT5vcGVuKGpvdXJuYWxfbmFtZSwgZmxhZ3MsCisJCQkJICAgICAgJmN0eC0+am91cm5hbF9pbyk7CisJfQorCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShjdHgtPmpvdXJuYWxfaW8sIGN0eC0+ZnMtPmJsb2Nrc2l6ZSk7CisKKwlpZiAoZXh0X2pvdXJuYWwpIHsKKwkJYmxrNjRfdCBtYXhsZW47CisKKwkJc3RhcnQgPSBleHQyZnNfam91cm5hbF9zYl9zdGFydChjdHgtPmZzLT5ibG9ja3NpemUpIC0gMTsKKwkJYmggPSBnZXRibGsoZGV2X2pvdXJuYWwsIHN0YXJ0LCBjdHgtPmZzLT5ibG9ja3NpemUpOworCQlpZiAoIWJoKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX05PX01FTU9SWTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWxsX3J3X2Jsb2NrKFJFQUQsIDEsICZiaCk7CisJCWlmICgocmV0dmFsID0gYmgtPmJfZXJyKSAhPSAwKSB7CisJCQlicmVsc2UoYmgpOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJbWVtY3B5KCZqc3VwZXIsIHN0YXJ0ID8gYmgtPmJfZGF0YSA6ICBiaC0+Yl9kYXRhICsgU1VQRVJCTE9DS19PRkZTRVQsCisJCSAgICAgICBzaXplb2YoanN1cGVyKSk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWlmIChqc3VwZXIuc19tYWdpYyA9PSBleHQyZnNfc3dhYjE2KEVYVDJfU1VQRVJfTUFHSUMpKQorCQkJZXh0MmZzX3N3YXBfc3VwZXIoJmpzdXBlcik7CisjZW5kaWYKKwkJaWYgKGpzdXBlci5zX21hZ2ljICE9IEVYVDJfU1VQRVJfTUFHSUMgfHwKKwkJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9kZXYoJmpzdXBlcikpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9FWFRfSk9VUk5BTF9CQURfU1VQRVIsICZwY3R4KTsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTE9BRF9FWFRfSk9VUk5BTDsKKwkJCWJyZWxzZShiaCk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQkvKiBNYWtlIHN1cmUgdGhlIGpvdXJuYWwgVVVJRCBpcyBjb3JyZWN0ICovCisJCWlmIChtZW1jbXAoanN1cGVyLnNfdXVpZCwgY3R4LT5mcy0+c3VwZXItPnNfam91cm5hbF91dWlkLAorCQkJICAgc2l6ZW9mKGpzdXBlci5zX3V1aWQpKSkgeworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8wX0pPVVJOQUxfQkFEX1VVSUQsICZwY3R4KTsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTE9BRF9FWFRfSk9VUk5BTDsKKwkJCWJyZWxzZShiaCk7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCS8qIENoZWNrIHRoZSBzdXBlcmJsb2NrIGNoZWNrc3VtICovCisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bSgmanN1cGVyKSkgeworCQkJc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cyBmc3g7CisJCQlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jawlzdXBlcng7CisJCQl2b2lkICpwOworCisJCQlwID0gc3RhcnQgPyBiaC0+Yl9kYXRhIDogYmgtPmJfZGF0YSArIFNVUEVSQkxPQ0tfT0ZGU0VUOworCQkJbWVtY3B5KCZmc3gsIGN0eC0+ZnMsIHNpemVvZihmc3gpKTsKKwkJCW1lbWNweSgmc3VwZXJ4LCBjdHgtPmZzLT5zdXBlciwgc2l6ZW9mKHN1cGVyeCkpOworCQkJZnN4LnN1cGVyID0gJnN1cGVyeDsKKwkJCWV4dDJmc19zZXRfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzeC5zdXBlcik7CisJCQlpZiAoIWV4dDJmc19zdXBlcmJsb2NrX2NzdW1fdmVyaWZ5KCZmc3gsIHApICYmCisJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX0VYVF9KT1VSTkFMX1NVUEVSX0NTVU1fSU5WQUxJRCwKKwkJCQkJJnBjdHgpKSB7CisJCQkJZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV9zZXQoJmZzeCwgcCk7CisJCQkJbWFya19idWZmZXJfZGlydHkoYmgpOworCQkJfQorCQl9CisJCWJyZWxzZShiaCk7CisKKwkJbWF4bGVuID0gZXh0MmZzX2Jsb2Nrc19jb3VudCgmanN1cGVyKTsKKwkJam91cm5hbC0+al9tYXhsZW4gPSAobWF4bGVuIDwgMVVMTCA8PCAzMikgPyBtYXhsZW4gOiAoMVVMTCA8PCAzMikgLSAxOworCQlzdGFydCsrOworCX0KKworCWlmICghKGJoID0gZ2V0YmxrKGRldl9qb3VybmFsLCBzdGFydCwgam91cm5hbC0+al9ibG9ja3NpemUpKSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX05PX01FTU9SWTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJam91cm5hbC0+al9zYl9idWZmZXIgPSBiaDsKKwlqb3VybmFsLT5qX3N1cGVyYmxvY2sgPSAoam91cm5hbF9zdXBlcmJsb2NrX3QgKiliaC0+Yl9kYXRhOworCisjaWZkZWYgVVNFX0lOT0RFX0lPCisJaWYgKGpfaW5vZGUpCisJCWV4dDJmc19mcmVlX21lbSgmal9pbm9kZSk7CisjZW5kaWYKKworCSpyZXRfam91cm5hbCA9IGpvdXJuYWw7CisJZTJmc2NrX3VzZV9pbm9kZV9zaG9ydGN1dHMoY3R4LCAwKTsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWUyZnNja191c2VfaW5vZGVfc2hvcnRjdXRzKGN0eCwgMCk7CisJaWYgKGRldl9mcykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZkZXZfZnMpOworCWlmIChqX2lub2RlKQorCQlleHQyZnNfZnJlZV9tZW0oJmpfaW5vZGUpOworCWlmIChqb3VybmFsKQorCQlleHQyZnNfZnJlZV9tZW0oJmpvdXJuYWwpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2pvdXJuYWxfZml4X2JhZF9pbm9kZShlMmZzY2tfdCBjdHgsCisJCQkJCSAgICAgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJaW50IHJlY292ZXIgPSBleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShjdHgtPmZzLT5zdXBlcik7CisJaW50IGhhc19qb3VybmFsID0gZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoY3R4LT5mcy0+c3VwZXIpOworCisJaWYgKGhhc19qb3VybmFsIHx8IHNiLT5zX2pvdXJuYWxfaW51bSkgeworCQkvKiBUaGUgam91cm5hbCBpbm9kZSBpcyBib2d1cywgcmVtb3ZlIGFuZCBmb3JjZSBmdWxsIGZzY2sgKi8KKwkJcGN0eC0+aW5vID0gc2ItPnNfam91cm5hbF9pbnVtOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0pPVVJOQUxfQkFEX0lOT0RFLCBwY3R4KSkgeworCQkJaWYgKGhhc19qb3VybmFsICYmIHNiLT5zX2pvdXJuYWxfaW51bSkKKwkJCQlwcmludGYoIioqKiBqb3VybmFsIGhhcyBiZWVuIGRlbGV0ZWQgKioqXG5cbiIpOworCQkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfam91cm5hbChzYik7CisJCQlzYi0+c19qb3VybmFsX2ludW0gPSAwOworCQkJbWVtc2V0KHNiLT5zX2pubF9ibG9ja3MsIDAsIHNpemVvZihzYi0+c19qbmxfYmxvY2tzKSk7CisJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0pPVVJOQUxfSU5PREU7CisJCQljdHgtPmZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCQkJZTJmc2NrX2NsZWFyX3JlY292ZXIoY3R4LCAxKTsKKwkJCXJldHVybiAwOworCQl9CisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQjsKKwl9IGVsc2UgaWYgKHJlY292ZXIpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9KT1VSTkFMX1JFQ09WRVJfU0VULCBwY3R4KSkgeworCQkJZTJmc2NrX2NsZWFyX3JlY292ZXIoY3R4LCAxKTsKKwkJCXJldHVybiAwOworCQl9CisJCXJldHVybiBFWFQyX0VUX1VOU1VQUF9GRUFUVVJFOworCX0KKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBWMV9TQl9TSVpFCTB4MDAyNAorc3RhdGljIHZvaWQgY2xlYXJfdjJfam91cm5hbF9maWVsZHMoam91cm5hbF90ICpqb3VybmFsKQoreworCWUyZnNja190IGN0eCA9IGpvdXJuYWwtPmpfZGV2LT5rX2N0eDsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0IHBjdHg7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzBfQ0xFQVJfVjJfSk9VUk5BTCwgJnBjdHgpKQorCQlyZXR1cm47CisKKwltZW1zZXQoKChjaGFyICopIGpvdXJuYWwtPmpfc3VwZXJibG9jaykgKyBWMV9TQl9TSVpFLCAwLAorCSAgICAgICBjdHgtPmZzLT5ibG9ja3NpemUtVjFfU0JfU0laRSk7CisJbWFya19idWZmZXJfZGlydHkoam91cm5hbC0+al9zYl9idWZmZXIpOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2pvdXJuYWxfbG9hZChqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJZTJmc2NrX3QgY3R4ID0gam91cm5hbC0+al9kZXYtPmtfY3R4OworCWpvdXJuYWxfc3VwZXJibG9ja190ICpqc2I7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpqYmggPSBqb3VybmFsLT5qX3NiX2J1ZmZlcjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0IHBjdHg7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJbGxfcndfYmxvY2soUkVBRCwgMSwgJmpiaCk7CisJaWYgKGpiaC0+Yl9lcnIpIHsKKwkJY29tX2VycihjdHgtPmRldmljZV9uYW1lLCBqYmgtPmJfZXJyLCAiJXMiLAorCQkJXygicmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2tcbiIpKTsKKwkJcmV0dXJuIGpiaC0+Yl9lcnI7CisJfQorCisJanNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOworCS8qIElmIHdlIGRvbid0IGV2ZW4gaGF2ZSBKRlNfTUFHSUMsIHdlIHByb2JhYmx5IGhhdmUgYSB3cm9uZyBpbm9kZSAqLworCWlmIChqc2ItPnNfaGVhZGVyLmhfbWFnaWMgIT0gaHRvbmwoSkZTX01BR0lDX05VTUJFUikpCisJCXJldHVybiBlMmZzY2tfam91cm5hbF9maXhfYmFkX2lub2RlKGN0eCwgJnBjdHgpOworCisJc3dpdGNoIChudG9obChqc2ItPnNfaGVhZGVyLmhfYmxvY2t0eXBlKSkgeworCWNhc2UgSkZTX1NVUEVSQkxPQ0tfVjE6CisJCWpvdXJuYWwtPmpfZm9ybWF0X3ZlcnNpb24gPSAxOworCQlpZiAoanNiLT5zX2ZlYXR1cmVfY29tcGF0IHx8CisJCSAgICBqc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCB8fAorCQkgICAganNiLT5zX2ZlYXR1cmVfcm9fY29tcGF0IHx8CisJCSAgICBqc2ItPnNfbnJfdXNlcnMpCisJCQljbGVhcl92Ml9qb3VybmFsX2ZpZWxkcyhqb3VybmFsKTsKKwkJYnJlYWs7CisKKwljYXNlIEpGU19TVVBFUkJMT0NLX1YyOgorCQlqb3VybmFsLT5qX2Zvcm1hdF92ZXJzaW9uID0gMjsKKwkJaWYgKG50b2hsKGpzYi0+c19ucl91c2VycykgPiAxICYmCisJCSAgICB1dWlkX2lzX251bGwoY3R4LT5mcy0+c3VwZXItPnNfam91cm5hbF91dWlkKSkKKwkJCWNsZWFyX3YyX2pvdXJuYWxfZmllbGRzKGpvdXJuYWwpOworCQlpZiAobnRvaGwoanNiLT5zX25yX3VzZXJzKSA+IDEpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9KT1VSTkFMX1VOU1VQUF9NVUxUSUZTLCAmcGN0eCk7CisJCQlyZXR1cm4gRVhUMl9FVF9KT1VSTkFMX1VOU1VQUF9WRVJTSU9OOworCQl9CisJCWJyZWFrOworCisJLyoKKwkgKiBUaGVzZSBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGEgam91cm5hbCBzdXBlciBibG9jaywgc28gaWYKKwkgKiB0aGV5IGRvLCB0aGUgam91cm5hbCBpcyBiYWRseSBjb3JydXB0ZWQuCisJICovCisJY2FzZSBKRlNfREVTQ1JJUFRPUl9CTE9DSzoKKwljYXNlIEpGU19DT01NSVRfQkxPQ0s6CisJY2FzZSBKRlNfUkVWT0tFX0JMT0NLOgorCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisKKwkvKiBJZiB3ZSBkb24ndCB1bmRlcnN0YW5kIHRoZSBzdXBlcmJsb2NrIG1ham9yIHR5cGUsIGJ1dCB0aGVyZQorCSAqIGlzIGEgbWFnaWMgbnVtYmVyLCB0aGVuIGl0IGlzIGxpa2VseSB0byBiZSBhIG5ldyBmb3JtYXQgd2UKKwkgKiBqdXN0IGRvbid0IHVuZGVyc3RhbmQsIHNvIGxlYXZlIGl0IGFsb25lLiAqLworCWRlZmF1bHQ6CisJCXJldHVybiBFWFQyX0VUX0pPVVJOQUxfVU5TVVBQX1ZFUlNJT047CisJfQorCisJaWYgKEpGU19IQVNfSU5DT01QQVRfRkVBVFVSRShqb3VybmFsLCB+SkZTX0tOT1dOX0lOQ09NUEFUX0ZFQVRVUkVTKSkKKwkJcmV0dXJuIEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkU7CisKKwlpZiAoSkZTX0hBU19ST19DT01QQVRfRkVBVFVSRShqb3VybmFsLCB+SkZTX0tOT1dOX1JPQ09NUEFUX0ZFQVRVUkVTKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fVU5TVVBQX0ZFQVRVUkU7CisKKwkvKiBDaGVja3N1bSB2MS0zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgZmVhdHVyZXMuICovCisJaWYgKGpmc19oYXNfZmVhdHVyZV9jc3VtMihqb3VybmFsKSAmJiBqZnNfaGFzX2ZlYXR1cmVfY3N1bTMoam91cm5hbCkpCisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQjsKKworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWwpICYmCisJICAgIGpmc19oYXNfZmVhdHVyZV9jaGVja3N1bShqb3VybmFsKSkKKwkJcmV0dXJuIEVYVDJfRVRfQ09SUlVQVF9KT1VSTkFMX1NCOworCisJaWYgKCFlMmZzY2tfam91cm5hbF92ZXJpZnlfY3N1bV90eXBlKGpvdXJuYWwsIGpzYikgfHwKKwkgICAgIWUyZnNja19qb3VybmFsX3NiX2NzdW1fdmVyaWZ5KGpvdXJuYWwsIGpzYikpCisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQjsKKworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWwpKQorCQlqb3VybmFsLT5qX2NzdW1fc2VlZCA9IGpiZDJfY2hrc3VtKGpvdXJuYWwsIH4wLCBqc2ItPnNfdXVpZCwKKwkJCQkJCSAgIHNpemVvZihqc2ItPnNfdXVpZCkpOworCisJLyogV2UgaGF2ZSBub3cgY2hlY2tlZCB3aGV0aGVyIHdlIGtub3cgZW5vdWdoIGFib3V0IHRoZSBqb3VybmFsCisJICogZm9ybWF0IHRvIGJlIGFibGUgdG8gcHJvY2VlZCBzYWZlbHksIHNvIGFueSBvdGhlciBjaGVja3MgdGhhdAorCSAqIGZhaWwgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gcmVjb3ZlciBmcm9tLiAqLworCWlmIChqc2ItPnNfYmxvY2tzaXplICE9IGh0b25sKGpvdXJuYWwtPmpfYmxvY2tzaXplKSkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQiwKKwkJCV8oIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIpLAorCQkJY3R4LT5kZXZpY2VfbmFtZSk7CisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQjsKKwl9CisKKwlpZiAobnRvaGwoanNiLT5zX21heGxlbikgPCBqb3VybmFsLT5qX21heGxlbikKKwkJam91cm5hbC0+al9tYXhsZW4gPSBudG9obChqc2ItPnNfbWF4bGVuKTsKKwllbHNlIGlmIChudG9obChqc2ItPnNfbWF4bGVuKSA+IGpvdXJuYWwtPmpfbWF4bGVuKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIEVYVDJfRVRfQ09SUlVQVF9KT1VSTkFMX1NCLAorCQkJXygiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iKSwKKwkJCWN0eC0+ZGV2aWNlX25hbWUpOworCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisJfQorCisJam91cm5hbC0+al90YWlsX3NlcXVlbmNlID0gbnRvaGwoanNiLT5zX3NlcXVlbmNlKTsKKwlqb3VybmFsLT5qX3RyYW5zYWN0aW9uX3NlcXVlbmNlID0gam91cm5hbC0+al90YWlsX3NlcXVlbmNlOworCWpvdXJuYWwtPmpfdGFpbCA9IG50b2hsKGpzYi0+c19zdGFydCk7CisJam91cm5hbC0+al9maXJzdCA9IG50b2hsKGpzYi0+c19maXJzdCk7CisJam91cm5hbC0+al9sYXN0ID0gbnRvaGwoanNiLT5zX21heGxlbik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZTJmc2NrX2pvdXJuYWxfcmVzZXRfc3VwZXIoZTJmc2NrX3QgY3R4LCBqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiLAorCQkJCSAgICAgICBqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJY2hhciAqcDsKKwl1bmlvbiB7CisJCXV1aWRfdCB1dWlkOworCQlfX3UzMiB2YWxbNF07CisJfSB1OworCV9fdTMyIG5ld19zZXEgPSAwOworCWludCBpOworCisJLyogTGVhdmUgYSB2YWxpZCBleGlzdGluZyBWMSBzdXBlcmJsb2NrIHNpZ25hdHVyZSBhbG9uZS4KKwkgKiBBbnl0aGluZyB1bnJlY29nbmlzYWJsZSB3ZSBvdmVyd3JpdGUgd2l0aCBhIG5ldyBWMgorCSAqIHNpZ25hdHVyZS4gKi8KKworCWlmIChqc2ItPnNfaGVhZGVyLmhfbWFnaWMgIT0gaHRvbmwoSkZTX01BR0lDX05VTUJFUikgfHwKKwkgICAganNiLT5zX2hlYWRlci5oX2Jsb2NrdHlwZSAhPSBodG9ubChKRlNfU1VQRVJCTE9DS19WMSkpIHsKKwkJanNiLT5zX2hlYWRlci5oX21hZ2ljID0gaHRvbmwoSkZTX01BR0lDX05VTUJFUik7CisJCWpzYi0+c19oZWFkZXIuaF9ibG9ja3R5cGUgPSBodG9ubChKRlNfU1VQRVJCTE9DS19WMik7CisJfQorCisJLyogWmVybyBvdXQgZXZlcnl0aGluZyBlbHNlIGJleW9uZCB0aGUgc3VwZXJibG9jayBoZWFkZXIgKi8KKworCXAgPSAoKGNoYXIgKikganNiKSArIHNpemVvZihqb3VybmFsX2hlYWRlcl90KTsKKwltZW1zZXQgKHAsIDAsIGN0eC0+ZnMtPmJsb2Nrc2l6ZS1zaXplb2Yoam91cm5hbF9oZWFkZXJfdCkpOworCisJanNiLT5zX2Jsb2Nrc2l6ZSA9IGh0b25sKGN0eC0+ZnMtPmJsb2Nrc2l6ZSk7CisJanNiLT5zX21heGxlbiA9IGh0b25sKGpvdXJuYWwtPmpfbWF4bGVuKTsKKwlqc2ItPnNfZmlyc3QgPSBodG9ubCgxKTsKKworCS8qIEluaXRpYWxpemUgdGhlIGpvdXJuYWwgc2VxdWVuY2UgbnVtYmVyIHNvIHRoYXQgdGhlcmUgaXMgIm5vIgorCSAqIGNoYW5jZSB3ZSB3aWxsIGZpbmQgb2xkICJ2YWxpZCIgdHJhbnNhY3Rpb25zIGluIHRoZSBqb3VybmFsLgorCSAqIFRoaXMgYXZvaWRzIHRoZSBuZWVkIHRvIHplcm8gdGhlIHdob2xlIGpvdXJuYWwgKHNsb3cgdG8gZG8sCisJICogYW5kIHJpc2t5IHdoZW4gd2UgYXJlIGp1c3QgcmVjb3ZlcmluZyB0aGUgZmlsZXN5c3RlbSkuCisJICovCisJdXVpZF9nZW5lcmF0ZSh1LnV1aWQpOworCWZvciAoaSA9IDA7IGkgPCA0OyBpICsrKQorCQluZXdfc2VxIF49IHUudmFsW2ldOworCWpzYi0+c19zZXF1ZW5jZSA9IGh0b25sKG5ld19zZXEpOworCWUyZnNja19qb3VybmFsX3NiX2NzdW1fc2V0KGpvdXJuYWwsIGpzYik7CisKKwltYXJrX2J1ZmZlcl9kaXJ0eShqb3VybmFsLT5qX3NiX2J1ZmZlcik7CisJbGxfcndfYmxvY2soV1JJVEUsIDEsICZqb3VybmFsLT5qX3NiX2J1ZmZlcik7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2pvdXJuYWxfZml4X2NvcnJ1cHRfc3VwZXIoZTJmc2NrX3QgY3R4LAorCQkJCQkJICBqb3VybmFsX3QgKmpvdXJuYWwsCisJCQkJCQkgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJaW50IHJlY292ZXIgPSBleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShjdHgtPmZzLT5zdXBlcik7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoc2IpKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfSk9VUk5BTF9CQURfU1VQRVIsIHBjdHgpKSB7CisJCQllMmZzY2tfam91cm5hbF9yZXNldF9zdXBlcihjdHgsIGpvdXJuYWwtPmpfc3VwZXJibG9jaywKKwkJCQkJCSAgIGpvdXJuYWwpOworCQkJam91cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZSA9IDE7CisJCQllMmZzY2tfY2xlYXJfcmVjb3ZlcihjdHgsIHJlY292ZXIpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcmV0dXJuIEVYVDJfRVRfQ09SUlVQVF9KT1VSTkFMX1NCOworCX0gZWxzZSBpZiAoZTJmc2NrX2pvdXJuYWxfZml4X2JhZF9pbm9kZShjdHgsIHBjdHgpKQorCQlyZXR1cm4gRVhUMl9FVF9DT1JSVVBUX0pPVVJOQUxfU0I7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZTJmc2NrX2pvdXJuYWxfcmVsZWFzZShlMmZzY2tfdCBjdHgsIGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCQkgICBpbnQgcmVzZXQsIGludCBkcm9wKQoreworCWpvdXJuYWxfc3VwZXJibG9ja190ICpqc2I7CisKKwlpZiAoZHJvcCkKKwkJbWFya19idWZmZXJfY2xlYW4oam91cm5hbC0+al9zYl9idWZmZXIpOworCWVsc2UgaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkpIHsKKwkJanNiID0gam91cm5hbC0+al9zdXBlcmJsb2NrOworCQlqc2ItPnNfc2VxdWVuY2UgPSBodG9ubChqb3VybmFsLT5qX3RhaWxfc2VxdWVuY2UpOworCQlpZiAocmVzZXQpCisJCQlqc2ItPnNfc3RhcnQgPSAwOyAvKiB0aGlzIG1hcmtzIHRoZSBqb3VybmFsIGFzIGVtcHR5ICovCisJCWUyZnNja19qb3VybmFsX3NiX2NzdW1fc2V0KGpvdXJuYWwsIGpzYik7CisJCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKwl9CisJYnJlbHNlKGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKKworCWlmIChjdHgtPmpvdXJuYWxfaW8pIHsKKwkJaWYgKGN0eC0+ZnMgJiYgY3R4LT5mcy0+aW8gIT0gY3R4LT5qb3VybmFsX2lvKQorCQkJaW9fY2hhbm5lbF9jbG9zZShjdHgtPmpvdXJuYWxfaW8pOworCQljdHgtPmpvdXJuYWxfaW8gPSAwOworCX0KKworI2lmbmRlZiBVU0VfSU5PREVfSU8KKwlpZiAoam91cm5hbC0+al9pbm9kZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZqb3VybmFsLT5qX2lub2RlKTsKKyNlbmRpZgorCWlmIChqb3VybmFsLT5qX2ZzX2RldikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZqb3VybmFsLT5qX2ZzX2Rldik7CisJZXh0MmZzX2ZyZWVfbWVtKCZqb3VybmFsKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGF0IHRoZSBzdXBlcmJsb2NrIGZpZWxkcyByZWdhcmRpbmcgdGhlCisgKiBqb3VybmFsIGFyZSBjb25zaXN0ZW50LgorICovCitlcnJjb2RlX3QgZTJmc2NrX2NoZWNrX2V4dDNfam91cm5hbChlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJam91cm5hbF90ICpqb3VybmFsOworCWludCByZWNvdmVyID0gZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoY3R4LT5mcy0+c3VwZXIpOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwlwcm9ibGVtX3QgcHJvYmxlbTsKKwlpbnQgcmVzZXQgPSAwLCBmb3JjZV9mc2NrID0gMDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJLyogSWYgd2UgZG9uJ3QgaGF2ZSBhbnkgam91cm5hbCBmZWF0dXJlcywgZG9uJ3QgZG8gYW55dGhpbmcgbW9yZSAqLworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoc2IpICYmCisJICAgICFyZWNvdmVyICYmIHNiLT5zX2pvdXJuYWxfaW51bSA9PSAwICYmIHNiLT5zX2pvdXJuYWxfZGV2ID09IDAgJiYKKwkgICAgdXVpZF9pc19udWxsKHNiLT5zX2pvdXJuYWxfdXVpZCkpCisgCQlyZXR1cm4gMDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJcGN0eC5udW0gPSBzYi0+c19qb3VybmFsX2ludW07CisKKwlyZXR2YWwgPSBlMmZzY2tfZ2V0X2pvdXJuYWwoY3R4LCAmam91cm5hbCk7CisJaWYgKHJldHZhbCkgeworCQlpZiAoKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9JTk9ERV9OVU0pIHx8CisJCSAgICAocmV0dmFsID09IEVYVDJfRVRfQkFEX0JMT0NLX05VTSkgfHwKKwkJICAgIChyZXR2YWwgPT0gRVhUMl9FVF9KT1VSTkFMX1RPT19TTUFMTCkgfHwKKwkJICAgIChyZXR2YWwgPT0gRVhUMl9FVF9OT19KT1VSTkFMKSkKKwkJCXJldHVybiBlMmZzY2tfam91cm5hbF9maXhfYmFkX2lub2RlKGN0eCwgJnBjdHgpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHZhbCA9IGUyZnNja19qb3VybmFsX2xvYWQoam91cm5hbCk7CisJaWYgKHJldHZhbCkgeworCQlpZiAoKHJldHZhbCA9PSBFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQikgfHwKKwkJICAgICgocmV0dmFsID09IEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkUpICYmCisJCSAgICAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9KT1VSTkFMX1VOU1VQUF9JTkNPTVBBVCwKKwkJCQkgICZwY3R4KSkpIHx8CisJCSAgICAoKHJldHZhbCA9PSBFWFQyX0VUX1JPX1VOU1VQUF9GRUFUVVJFKSAmJgorCQkgICAgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzBfSk9VUk5BTF9VTlNVUFBfUk9DT01QQVQsCisJCQkJICAmcGN0eCkpKSB8fAorCQkgICAgKChyZXR2YWwgPT0gRVhUMl9FVF9KT1VSTkFMX1VOU1VQUF9WRVJTSU9OKSAmJgorCQkgICAgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzBfSk9VUk5BTF9VTlNVUFBfVkVSU0lPTiwgJnBjdHgpKSkpCisJCQlyZXR2YWwgPSBlMmZzY2tfam91cm5hbF9maXhfY29ycnVwdF9zdXBlcihjdHgsIGpvdXJuYWwsCisJCQkJCQkJCSAgJnBjdHgpOworCQllMmZzY2tfam91cm5hbF9yZWxlYXNlKGN0eCwgam91cm5hbCwgMCwgMSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyoKKwkgKiBXZSB3YW50IHRvIG1ha2UgdGhlIGZsYWdzIGNvbnNpc3RlbnQgaGVyZS4gIFdlIHdpbGwgbm90IGxlYXZlIHdpdGgKKwkgKiBuZWVkc19yZWNvdmVyeSBzZXQgYnV0IGhhc19qb3VybmFsIGNsZWFyLiAgV2UgY2FuJ3QgZ2V0IGluIGEgbG9vcAorCSAqIHdpdGggLXksIC1uLCBvciAtcCwgb25seSBpZiBhIHVzZXIgaXNuJ3QgbWFraW5nIHVwIHRoZWlyIG1pbmQuCisJICovCitub19oYXNfam91cm5hbDoKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsKHNiKSkgeworCQlyZWNvdmVyID0gZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3Zlcnkoc2IpOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0pPVVJOQUxfSEFTX0pPVVJOQUwsICZwY3R4KSkgeworCQkJaWYgKHJlY292ZXIgJiYKKwkJCSAgICAhZml4X3Byb2JsZW0oY3R4LCBQUl8wX0pPVVJOQUxfUkVDT1ZFUl9TRVQsICZwY3R4KSkKKwkJCQlnb3RvIG5vX2hhc19qb3VybmFsOworCQkJLyoKKwkJCSAqIE5lZWQgYSBmdWxsIGZzY2sgaWYgd2UgYXJlIHJlbGVhc2luZyBhCisJCQkgKiBqb3VybmFsIHN0b3JlZCBvbiBhIHJlc2VydmVkIGlub2RlLgorCQkJICovCisJCQlmb3JjZV9mc2NrID0gcmVjb3ZlciB8fAorCQkJCShzYi0+c19qb3VybmFsX2ludW0gPCBFWFQyX0ZJUlNUX0lOT0RFKHNiKSk7CisJCQkvKiBDbGVhciBhbGwgb2YgdGhlIGpvdXJuYWwgZmllbGRzICovCisJCQlzYi0+c19qb3VybmFsX2ludW0gPSAwOworCQkJc2ItPnNfam91cm5hbF9kZXYgPSAwOworCQkJbWVtc2V0KHNiLT5zX2pvdXJuYWxfdXVpZCwgMCwKKwkJCSAgICAgICBzaXplb2Yoc2ItPnNfam91cm5hbF91dWlkKSk7CisJCQllMmZzY2tfY2xlYXJfcmVjb3ZlcihjdHgsIGZvcmNlX2ZzY2spOworCQl9IGVsc2UgaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkpIHsKKwkJCWV4dDJmc19zZXRfZmVhdHVyZV9qb3VybmFsKHNiKTsKKwkJCWN0eC0+ZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFk7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShjdHgtPmZzKTsKKwkJfQorCX0KKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbChzYikgJiYKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KHNiKSAmJgorCSAgICBqb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfc3RhcnQgIT0gMCkgeworCQkvKiBQcmludCBzdGF0dXMgaW5mb3JtYXRpb24gKi8KKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8wX0pPVVJOQUxfUkVDT1ZFUllfQ0xFQVIsICZwY3R4KTsKKwkJaWYgKGN0eC0+c3VwZXJibG9jaykKKwkJCXByb2JsZW0gPSBQUl8wX0pPVVJOQUxfUlVOX0RFRkFVTFQ7CisJCWVsc2UKKwkJCXByb2JsZW0gPSBQUl8wX0pPVVJOQUxfUlVOOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBwcm9ibGVtLCAmcGN0eCkpIHsKKwkJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX0ZPUkNFOworCQkJZXh0MmZzX3NldF9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3Zlcnkoc2IpOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoY3R4LT5mcyk7CisJCX0gZWxzZSBpZiAoZml4X3Byb2JsZW0oY3R4LAorCQkJCSAgICAgICBQUl8wX0pPVVJOQUxfUkVTRVRfSk9VUk5BTCwgJnBjdHgpKSB7CisJCQlyZXNldCA9IDE7CisJCQlzYi0+c19zdGF0ZSAmPSB+RVhUMl9WQUxJRF9GUzsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGN0eC0+ZnMpOworCQl9CisJCS8qCisJCSAqIElmIHRoZSB1c2VyIGFuc3dlcnMgbm8gdG8gdGhlIGFib3ZlIHF1ZXN0aW9uLCB3ZQorCQkgKiBpZ25vcmUgdGhlIGZhY3QgdGhhdCBqb3VybmFsIGFwcGFyZW50bHkgaGFzIGRhdGE7CisJCSAqIGFjY2lkZW50YWxseSByZXBsYXlpbmcgb3ZlciB2YWxpZCBkYXRhIHdvdWxkIGJlIGZhcgorCQkgKiB3b3JzZSB0aGFuIHNraXBwaW5nIGEgcXVlc3Rpb25hYmxlIHJlY292ZXJ5LgorCQkgKgorCQkgKiBYWFggc2hvdWxkIHdlIGFib3J0IHdpdGggYSBmYXRhbCBlcnJvciBoZXJlPyAgV2hhdAorCQkgKiB3aWxsIHRoZSBleHQzIGtlcm5lbCBjb2RlIGRvIGlmIGEgZmlsZXN5c3RlbSB3aXRoCisJCSAqICFORUVEU19SRUNPVkVSWSBidXQgd2l0aCBhIG5vbi16ZXJvCisJCSAqIGpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19zdGFydCBpcyBtb3VudGVkPworCQkgKi8KKwl9CisKKwkvKgorCSAqIElmIHdlIGRvbid0IG5lZWQgdG8gZG8gcmVwbGF5IHRoZSBqb3VybmFsLCBjaGVjayB0byBzZWUgaWYKKwkgKiB0aGUgam91cm5hbCdzIGVycm5vIGlzIHNldDsgaWYgc28sIHdlIG5lZWQgdG8gbWFyayB0aGUgZmlsZQorCSAqIHN5c3RlbSBhcyBiZWluZyBjb3JydXB0IGFuZCBjbGVhciB0aGUgam91cm5hbCdzIHNfZXJybm8uCisJICovCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9uZWVkc19yZWNvdmVyeShzYikgJiYKKwkgICAgam91cm5hbC0+al9zdXBlcmJsb2NrLT5zX2Vycm5vKSB7CisJCWN0eC0+ZnMtPnN1cGVyLT5zX3N0YXRlIHw9IEVYVDJfRVJST1JfRlM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGN0eC0+ZnMpOworCQlqb3VybmFsLT5qX3N1cGVyYmxvY2stPnNfZXJybm8gPSAwOworCQllMmZzY2tfam91cm5hbF9zYl9jc3VtX3NldChqb3VybmFsLCBqb3VybmFsLT5qX3N1cGVyYmxvY2spOworCQltYXJrX2J1ZmZlcl9kaXJ0eShqb3VybmFsLT5qX3NiX2J1ZmZlcik7CisJfQorCisJZTJmc2NrX2pvdXJuYWxfcmVsZWFzZShjdHgsIGpvdXJuYWwsIHJlc2V0LCAwKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHJlY292ZXJfZXh0M19qb3VybmFsKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJam91cm5hbF90ICpqb3VybmFsOworCWVycmNvZGVfdCByZXR2YWw7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJam91cm5hbF9pbml0X3Jldm9rZV9jYWNoZXMoKTsKKwlyZXR2YWwgPSBlMmZzY2tfZ2V0X2pvdXJuYWwoY3R4LCAmam91cm5hbCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGUyZnNja19qb3VybmFsX2xvYWQoam91cm5hbCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXR2YWwgPSBqb3VybmFsX2luaXRfcmV2b2tlKGpvdXJuYWwsIDEwMjQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmV0dmFsID0gLWpvdXJuYWxfcmVjb3Zlcihqb3VybmFsKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCWlmIChqb3VybmFsLT5qX2ZhaWxlZF9jb21taXQpIHsKKwkJcGN0eC5pbm8gPSBqb3VybmFsLT5qX2ZhaWxlZF9jb21taXQ7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9KTkxfVFhOX0NPUlJVUFQsICZwY3R4KTsKKwkJam91cm5hbC0+al9zdXBlcmJsb2NrLT5zX2Vycm5vID0gLUVJTlZBTDsKKwkJbWFya19idWZmZXJfZGlydHkoam91cm5hbC0+al9zYl9idWZmZXIpOworCX0KKworCWpvdXJuYWwtPmpfdGFpbF9zZXF1ZW5jZSA9IGpvdXJuYWwtPmpfdHJhbnNhY3Rpb25fc2VxdWVuY2U7CisKK2Vycm91dDoKKwlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlKGpvdXJuYWwpOworCWpvdXJuYWxfZGVzdHJveV9yZXZva2VfY2FjaGVzKCk7CisJZTJmc2NrX2pvdXJuYWxfcmVsZWFzZShjdHgsIGpvdXJuYWwsIDEsIDApOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBlMmZzY2tfcnVuX2V4dDNfam91cm5hbChlMmZzY2tfdCBjdHgpCit7CisJaW9fbWFuYWdlciBpb19wdHIgPSBjdHgtPmZzLT5pby0+bWFuYWdlcjsKKwlpbnQgYmxvY2tzaXplID0gY3R4LT5mcy0+YmxvY2tzaXplOworCWVycmNvZGVfdAlyZXR2YWwsIHJlY292ZXJfcmV0dmFsOworCWlvX3N0YXRzCXN0YXRzID0gMDsKKwl1bnNpZ25lZCBsb25nIGxvbmcga2J5dGVzX3dyaXR0ZW4gPSAwOworCisJcHJpbnRmKF8oIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIpLCBjdHgtPmRldmljZV9uYW1lKTsKKwlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgeworCQlwcmludGYoXygiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iKSwKKwkJICAgICAgIGN0eC0+ZGV2aWNlX25hbWUpOworCQlyZXR1cm4gRVhUMl9FVF9GSUxFX1JPOworCX0KKworCWlmIChjdHgtPmZzLT5mbGFncyAmIEVYVDJfRkxBR19ESVJUWSkKKwkJZXh0MmZzX2ZsdXNoKGN0eC0+ZnMpOwkvKiBGb3JjZSBvdXQgYW55IG1vZGlmaWNhdGlvbnMgKi8KKworCXJlY292ZXJfcmV0dmFsID0gcmVjb3Zlcl9leHQzX2pvdXJuYWwoY3R4KTsKKworCS8qCisJICogUmVsb2FkIHRoZSBmaWxlc3lzdGVtIGNvbnRleHQgdG8gZ2V0IHVwLXRvLWRhdGUgZGF0YSBmcm9tIGRpc2sKKwkgKiBiZWNhdXNlIGpvdXJuYWwgcmVjb3Zlcnkgd2lsbCBjaGFuZ2UgdGhlIGZpbGVzeXN0ZW0gdW5kZXIgdXMuCisJICovCisJaWYgKGN0eC0+ZnMtPnN1cGVyLT5zX2tieXRlc193cml0dGVuICYmCisJICAgIGN0eC0+ZnMtPmlvLT5tYW5hZ2VyLT5nZXRfc3RhdHMpCisJCWN0eC0+ZnMtPmlvLT5tYW5hZ2VyLT5nZXRfc3RhdHMoY3R4LT5mcy0+aW8sICZzdGF0cyk7CisJaWYgKHN0YXRzICYmIHN0YXRzLT5ieXRlc193cml0dGVuKQorCQlrYnl0ZXNfd3JpdHRlbiA9IHN0YXRzLT5ieXRlc193cml0dGVuID4+IDEwOworCisJZXh0MmZzX21tcF9zdG9wKGN0eC0+ZnMpOworCWV4dDJmc19mcmVlKGN0eC0+ZnMpOworCXJldHZhbCA9IGV4dDJmc19vcGVuKGN0eC0+ZmlsZXN5c3RlbV9uYW1lLCBjdHgtPm9wZW5mc19mbGFncywKKwkJCSAgICAgY3R4LT5zdXBlcmJsb2NrLCBibG9ja3NpemUsIGlvX3B0ciwKKwkJCSAgICAgJmN0eC0+ZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiKSwKKwkJCWN0eC0+ZGV2aWNlX25hbWUpOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KKwljdHgtPmZzLT5wcml2X2RhdGEgPSBjdHg7CisJY3R4LT5mcy0+bm93ID0gY3R4LT5ub3c7CisJY3R4LT5mcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCWN0eC0+ZnMtPnN1cGVyLT5zX2tieXRlc193cml0dGVuICs9IGtieXRlc193cml0dGVuOworCisJLyogU2V0IHRoZSBzdXBlcmJsb2NrIGZsYWdzICovCisJZTJmc2NrX2NsZWFyX3JlY292ZXIoY3R4LCByZWNvdmVyX3JldHZhbCAhPSAwKTsKKworCS8qCisJICogRG8gb25lIGxhc3Qgc2FuaXR5IGNoZWNrLCBhbmQgcHJvcGFnYXRlIGpvdXJuYWwtPnNfZXJybm8gdG8KKwkgKiB0aGUgRVhUMl9FUlJPUl9GUyBmbGFnIGluIHRoZSBmcyBzdXBlcmJsb2NrIGlmIG5lZWRlZC4KKwkgKi8KKwlyZXR2YWwgPSBlMmZzY2tfY2hlY2tfZXh0M19qb3VybmFsKGN0eCk7CisJcmV0dXJuIHJldHZhbCA/IHJldHZhbCA6IHJlY292ZXJfcmV0dmFsOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIG1vdmUgdGhlIGpvdXJuYWwgaW5vZGUgZnJvbSBhIHZpc2libGUgZmlsZSBpbgorICogdGhlIGZpbGVzeXN0ZW0gZGlyZWN0b3J5IGhpZXJhcmNoeSB0byB0aGUgcmVzZXJ2ZWQgaW5vZGUgaWYgbmVjZXNzYXJ5LgorICovCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGpvdXJuYWxfbmFtZXNbXSA9IHsKKwkiLmpvdXJuYWwiLCAiam91cm5hbCIsICIuam91cm5hbC5kYXQiLCAiam91cm5hbC5kYXQiLCAwIH07CisKK3ZvaWQgZTJmc2NrX21vdmVfZXh0M19qb3VybmFsKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBjdHgtPmZzLT5zdXBlcjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJc3RydWN0IGV4dDJfaW5vZGUgCWlub2RlOworCWV4dDJfZmlsc3lzCQlmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAkJaW5vOworCWVycmNvZGVfdAkJcmV0dmFsOworCWNvbnN0IGNoYXIgKiBjb25zdCAqCWNwcDsKKwlkZ3JwX3QJCQlncm91cDsKKwlpbnQJCQltb3VudF9mbGFnczsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwkvKgorCSAqIElmIHRoZSBmaWxlc3lzdGVtIGlzIG9wZW5lZCByZWFkLW9ubHksIG9yIHRoZXJlIGlzIG5vCisJICogam91cm5hbCwgdGhlbiBkbyBub3RoaW5nLgorCSAqLworCWlmICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgfHwKKwkgICAgKHNiLT5zX2pvdXJuYWxfaW51bSA9PSAwKSB8fAorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoc2IpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFJlYWQgaW4gdGhlIGpvdXJuYWwgaW5vZGUKKwkgKi8KKwlpZiAoZXh0MmZzX3JlYWRfaW5vZGUoZnMsIHNiLT5zX2pvdXJuYWxfaW51bSwgJmlub2RlKSAhPSAwKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIGl0J3MgbmVjZXNzYXJ5IHRvIGJhY2t1cCB0aGUgam91cm5hbCBpbm9kZSwgZG8gc28uCisJICovCisJaWYgKChzYi0+c19qbmxfYmFja3VwX3R5cGUgPT0gMCkgfHwKKwkgICAgKChzYi0+c19qbmxfYmFja3VwX3R5cGUgPT0gRVhUM19KTkxfQkFDS1VQX0JMT0NLUykgJiYKKwkgICAgIG1lbWNtcChpbm9kZS5pX2Jsb2NrLCBzYi0+c19qbmxfYmxvY2tzLCBFWFQyX05fQkxPQ0tTKjQpKSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0JBQ0tVUF9KTkwsICZwY3R4KSkgeworCQkJbWVtY3B5KHNiLT5zX2pubF9ibG9ja3MsIGlub2RlLmlfYmxvY2ssCisJCQkgICAgICAgRVhUMl9OX0JMT0NLUyo0KTsKKwkJCXNiLT5zX2pubF9ibG9ja3NbMTVdID0gaW5vZGUuaV9zaXplX2hpZ2g7CisJCQlzYi0+c19qbmxfYmxvY2tzWzE2XSA9IGlub2RlLmlfc2l6ZTsKKwkJCXNiLT5zX2pubF9iYWNrdXBfdHlwZSA9IEVYVDNfSk5MX0JBQ0tVUF9CTE9DS1M7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwkJfQorCX0KKworCS8qCisJICogSWYgdGhlIGpvdXJuYWwgaXMgYWxyZWFkeSB0aGUgaGlkZGVuIGlub2RlLCB0aGVuIGRvIG5vdGhpbmcKKwkgKi8KKwlpZiAoc2ItPnNfam91cm5hbF9pbnVtID09IEVYVDJfSk9VUk5BTF9JTk8pCisJCXJldHVybjsKKworCS8qCisJICogVGhlIGpvdXJuYWwgaW5vZGUgaGFkIGJldHRlciBoYXZlIG9ubHkgb25lIGxpbmsgYW5kIG5vdCBiZSByZWFkYWJsZS4KKwkgKi8KKwlpZiAoaW5vZGUuaV9saW5rc19jb3VudCAhPSAxKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQsIG9yIHdlIGNhbid0IHRlbGwgd2hldGhlcgorCSAqIG9yIG5vdCBpdCdzIG1vdW50ZWQsIGRvIG5vdGhpbmcuCisJICovCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2lmX21vdW50ZWQoY3R4LT5maWxlc3lzdGVtX25hbWUsICZtb3VudF9mbGFncyk7CisJaWYgKHJldHZhbCB8fCAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIHdlIGNhbid0IGZpbmQgdGhlIG5hbWUgb2YgdGhlIGpvdXJuYWwgaW5vZGUsIHRoZW4gZG8KKwkgKiBub3RoaW5nLgorCSAqLworCWZvciAoY3BwID0gam91cm5hbF9uYW1lczsgKmNwcDsgY3BwKyspIHsKKwkJcmV0dmFsID0gZXh0MmZzX2xvb2t1cChmcywgRVhUMl9ST09UX0lOTywgKmNwcCwKKwkJCQkgICAgICAgc3RybGVuKCpjcHApLCAwLCAmaW5vKTsKKwkJaWYgKChyZXR2YWwgPT0gMCkgJiYgKGlubyA9PSBzYi0+c19qb3VybmFsX2ludW0pKQorCQkJYnJlYWs7CisJfQorCWlmICgqY3BwID09IDApCisJCXJldHVybjsKKworCS8qIFdlIG5lZWQgdGhlIGlub2RlIGJpdG1hcCB0byBiZSBsb2FkZWQgKi8KKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iaXRtYXBzKGZzKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm47CisKKwlwY3R4LnN0ciA9ICpjcHA7CisJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzBfTU9WRV9KT1VSTkFMLCAmcGN0eCkpCisJCXJldHVybjsKKworCS8qCisJICogT0ssIHdlJ3ZlIGRvbmUgYWxsIHRoZSBjaGVja3MsIGxldCdzIGFjdHVhbGx5IG1vdmUgdGhlCisJICogam91cm5hbCBpbm9kZS4gIEVycm9ycyBhdCB0aGlzIHBvaW50IG1lYW4gd2UgbmVlZCB0byBmb3JjZQorCSAqIGFuIGV4dDIgZmlsZXN5c3RlbSBjaGVjay4KKwkgKi8KKwlpZiAoKHJldHZhbCA9IGV4dDJmc191bmxpbmsoZnMsIEVYVDJfUk9PVF9JTk8sICpjcHAsIGlubywgMCkpICE9IDApCisJCWdvdG8gZXJyX291dDsKKwlpZiAoKHJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgRVhUMl9KT1VSTkFMX0lOTywgJmlub2RlKSkgIT0gMCkKKwkJZ290byBlcnJfb3V0OworCXNiLT5zX2pvdXJuYWxfaW51bSA9IEVYVDJfSk9VUk5BTF9JTk87CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCWlub2RlLmlfbGlua3NfY291bnQgPSAwOworCWlub2RlLmlfZHRpbWUgPSBjdHgtPm5vdzsKKwlpZiAoKHJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpKSAhPSAwKQorCQlnb3RvIGVycl9vdXQ7CisKKwlncm91cCA9IGV4dDJmc19ncm91cF9vZl9pbm8oZnMsIGlubyk7CisJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGZzLT5pbm9kZV9tYXAsIGlubyk7CisJZXh0MmZzX21hcmtfaWJfZGlydHkoZnMpOworCWV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXQoZnMsIGdyb3VwLCBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGdyb3VwKSArIDEpOworCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncm91cCk7CisJZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50Kys7CisJcmV0dXJuOworCitlcnJfb3V0OgorCXBjdHguZXJyY29kZSA9IHJldHZhbDsKKwlmaXhfcHJvYmxlbShjdHgsIFBSXzBfRVJSX01PVkVfSk9VUk5BTCwgJnBjdHgpOworCWZzLT5zdXBlci0+c19zdGF0ZSAmPSB+RVhUMl9WQUxJRF9GUzsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJcmV0dXJuOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoZSBzdXBlcmJsb2NrIGhpbnQgZm9yIHRoZSBleHRlcm5hbAorICogam91cm5hbCBpcyBjb3JyZWN0LgorICovCitpbnQgZTJmc2NrX2ZpeF9leHQzX2pvdXJuYWxfaGludChlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4OworCWNoYXIgdXVpZFszN10sICpqb3VybmFsX25hbWU7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsKHNiKSB8fAorCSAgICB1dWlkX2lzX251bGwoc2ItPnNfam91cm5hbF91dWlkKSkKKyAJCXJldHVybiAwOworCisJdXVpZF91bnBhcnNlKHNiLT5zX2pvdXJuYWxfdXVpZCwgdXVpZCk7CisJam91cm5hbF9uYW1lID0gYmxraWRfZ2V0X2Rldm5hbWUoY3R4LT5ibGtpZCwgIlVVSUQiLCB1dWlkKTsKKwlpZiAoIWpvdXJuYWxfbmFtZSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoc3RhdChqb3VybmFsX25hbWUsICZzdCkgPCAwKSB7CisJCWZyZWUoam91cm5hbF9uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHN0LnN0X3JkZXYgIT0gc2ItPnNfam91cm5hbF9kZXYpIHsKKwkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJcGN0eC5udW0gPSBzdC5zdF9yZGV2OworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0VYVEVSTkFMX0pPVVJOQUxfSElOVCwgJnBjdHgpKSB7CisJCQlzYi0+c19qb3VybmFsX2RldiA9IHN0LnN0X3JkZXY7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShjdHgtPmZzKTsKKwkJfQorCX0KKworCWZyZWUoam91cm5hbF9uYW1lKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svbG9nZmlsZS5jIGIvZTJmc3Byb2dzL2UyZnNjay9sb2dmaWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwNGYzMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svbG9nZmlsZS5jCkBAIC0wLDAgKzEsNDAwIEBACisvKgorICogbG9nZmlsZS5jIC0tLSBzZXQgdXAgZTJmc2NrIGxvZyBmaWxlcworICoKKyAqIENvcHlyaWdodCAxOTk2LCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSA8cHdkLmg+CisKK2V4dGVybiBlMmZzY2tfdCBlMmZzY2tfZ2xvYmFsX2N0eDsgICAvKiBUcnkgeW91ciB2ZXJ5IGJlc3Qgbm90IHRvIHVzZSB0aGlzISAqLworCitzdHJ1Y3Qgc3RyaW5nIHsKKwljaGFyCSpzOworCWludAlsZW47CisJaW50CWVuZDsKK307CisKK3N0YXRpYyB2b2lkIGFsbG9jX3N0cmluZyhzdHJ1Y3Qgc3RyaW5nICpzLCBpbnQgbGVuKQoreworCXMtPnMgPSBtYWxsb2MobGVuKTsKKy8qIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBsZW4sICJsb2dmaWxlIG5hbWUiKTsgKi8KKwlzLT5sZW4gPSBsZW47CisJcy0+ZW5kID0gMDsKK30KKworc3RhdGljIHZvaWQgYXBwZW5kX3N0cmluZyhzdHJ1Y3Qgc3RyaW5nICpzLCBjb25zdCBjaGFyICphLCBpbnQgbGVuKQoreworCWludCBuZWVkbGVuOworCisJaWYgKCFsZW4pCisJCWxlbiA9IHN0cmxlbihhKTsKKworCW5lZWRsZW4gPSBzLT5lbmQgKyBsZW4gKyAxOworCWlmIChuZWVkbGVuID4gcy0+bGVuKSB7CisJCWNoYXIgKm47CisKKwkJaWYgKHMtPmxlbiAqIDIgPiBuZWVkbGVuKQorCQkJbmVlZGxlbiA9IHMtPmxlbiAqIDI7CisJICAgICAgICBuID0gcmVhbGxvYyhzLT5zLCBuZWVkbGVuKTsKKworCQlpZiAobikgeworCQkJcy0+cyA9IG47CisJCQlzLT5sZW4gPSBuZWVkbGVuOworCQl9IGVsc2UgeworCQkJLyogRG9uJ3QgYXBwZW5kIGlmIHdlIHJhbiBvdXQgb2YgbWVtb3J5ICovCisJCQlyZXR1cm47CisJCX0KKwl9CisJbWVtY3B5KHMtPnMgKyBzLT5lbmQsIGEsIGxlbik7CisJcy0+ZW5kICs9IGxlbjsKKwlzLT5zW3MtPmVuZF0gPSAwOworfQorCisjZGVmaW5lIEZMQUdfVVRDCTB4MDAwMQorCitzdGF0aWMgdm9pZCBleHBhbmRfcGVyY2VudF9leHByZXNzaW9uKGUyZnNja190IGN0eCwgY2hhciBjaCwKKwkJCQkgICAgICBzdHJ1Y3Qgc3RyaW5nICpzLCBpbnQgKmZsYWdzKQoreworCXN0cnVjdCB0bQkqdG0gPSBOVUxMLCB0bV9zdHJ1Y3Q7CisJc3RydWN0IHBhc3N3ZAkqcHcgPSBOVUxMLCBwd19zdHJ1Y3Q7CisJY2hhcgkJKmNwOworCWNoYXIJCWJ1ZlsyNTZdOworCisJaWYgKChjaCA9PSAnRCcpIHx8IChjaCA9PSAnZCcpIHx8IChjaCA9PSAnbScpIHx8IChjaCA9PSAneScpIHx8CisJICAgIChjaCA9PSAnWScpIHx8CisJICAgIChjaCA9PSAnVCcpIHx8IChjaCA9PSAnSCcpIHx8IChjaCA9PSAnTScpIHx8IChjaCA9PSAnUycpKSB7CisJCXR6c2V0KCk7CisJCXRtID0gKCpmbGFncyAmIEZMQUdfVVRDKSA/IGdtdGltZV9yKCZjdHgtPm5vdywgJnRtX3N0cnVjdCkgOgorCQkJbG9jYWx0aW1lX3IoJmN0eC0+bm93LCAmdG1fc3RydWN0KTsKKwl9CisKKwlzd2l0Y2ggKGNoKSB7CisJY2FzZSAnJSc6CisJCWFwcGVuZF9zdHJpbmcocywgIiUiLCAxKTsKKwkJcmV0dXJuOworCWNhc2UgJ2QnOgorCQlzcHJpbnRmKGJ1ZiwgIiUwMmQiLCB0bS0+dG1fbWRheSk7CisJCWJyZWFrOworCWNhc2UgJ0QnOgorCQlzcHJpbnRmKGJ1ZiwgIiVkJTAyZCUwMmQiLCB0bS0+dG1feWVhciArIDE5MDAsIHRtLT50bV9tb24gKyAxLAorCQkJdG0tPnRtX21kYXkpOworCQlicmVhazsKKwljYXNlICdoJzoKKyNpZmRlZiBURVNUX1BST0dSQU0KKwkJc3RyY3B5KGJ1ZiwgInNlcnZlciIpOworI2Vsc2UKKwkJYnVmWzBdID0gMDsKKwkJZ2V0aG9zdG5hbWUoYnVmLCBzaXplb2YoYnVmKSk7CisJCWJ1ZltzaXplb2YoYnVmKS0xXSA9IDA7CisjZW5kaWYKKwkJYnJlYWs7CisJY2FzZSAnSCc6CisJCXNwcmludGYoYnVmLCAiJTAyZCIsIHRtLT50bV9ob3VyKTsKKwkJYnJlYWs7CisJY2FzZSAnbSc6CisJCXNwcmludGYoYnVmLCAiJTAyZCIsIHRtLT50bV9tb24gKyAxKTsKKwkJYnJlYWs7CisJY2FzZSAnTSc6CisJCXNwcmludGYoYnVmLCAiJTAyZCIsIHRtLT50bV9taW4pOworCQlicmVhazsKKwljYXNlICdOJzoJCS8qIGJsb2NrIGRldmljZSBuYW1lICovCisJCWNwID0gc3RycmNocihjdHgtPmZpbGVzeXN0ZW1fbmFtZSwgJy8nKTsKKwkJaWYgKGNwKQorCQkJY3ArKzsKKwkJZWxzZQorCQkJY3AgPSBjdHgtPmZpbGVzeXN0ZW1fbmFtZTsKKwkJYXBwZW5kX3N0cmluZyhzLCBjcCwgMCk7CisJCXJldHVybjsKKwljYXNlICdwJzoKKwkJc3ByaW50ZihidWYsICIlbHUiLCAodW5zaWduZWQgbG9uZykgZ2V0cGlkKCkpOworCQlicmVhazsKKwljYXNlICdzJzoKKwkJc3ByaW50ZihidWYsICIlbHUiLCAodW5zaWduZWQgbG9uZykgY3R4LT5ub3cpOworCQlicmVhazsKKwljYXNlICdTJzoKKwkJc3ByaW50ZihidWYsICIlMDJkIiwgdG0tPnRtX3NlYyk7CisJCWJyZWFrOworCWNhc2UgJ1QnOgorCQlzcHJpbnRmKGJ1ZiwgIiUwMmQlMDJkJTAyZCIsIHRtLT50bV9ob3VyLCB0bS0+dG1fbWluLAorCQkJdG0tPnRtX3NlYyk7CisJCWJyZWFrOworCWNhc2UgJ3UnOgorI2lmZGVmIFRFU1RfUFJPR1JBTQorCQlzdHJjcHkoYnVmLCAidHl0c28iKTsKKwkJYnJlYWs7CisjZWxzZQorI2lmZGVmIEhBVkVfR0VUUFdVSURfUgorCQlnZXRwd3VpZF9yKGdldHVpZCgpLCAmcHdfc3RydWN0LCBidWYsIHNpemVvZihidWYpLCAmcHcpOworI2Vsc2UKKwkJcHcgPSBnZXRwd3VpZChnZXR1aWQoKSk7CisjZW5kaWYKKwkJaWYgKHB3KQorCQkJYXBwZW5kX3N0cmluZyhzLCBwdy0+cHdfbmFtZSwgMCk7CisJCXJldHVybjsKKyNlbmRpZgorCWNhc2UgJ1UnOgorCQkqZmxhZ3MgfD0gRkxBR19VVEM7CisJCXJldHVybjsKKwljYXNlICd5JzoKKwkJc3ByaW50ZihidWYsICIlMDJkIiwgdG0tPnRtX3llYXIgJSAxMDApOworCQlicmVhazsKKwljYXNlICdZJzoKKwkJc3ByaW50ZihidWYsICIlZCIsIHRtLT50bV95ZWFyICsgMTkwMCk7CisJCWJyZWFrOworCX0KKwlhcHBlbmRfc3RyaW5nKHMsIGJ1ZiwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4cGFuZF9sb2dmbihlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKmxvZ19mbiwgc3RydWN0IHN0cmluZyAqcykKK3sKKwljb25zdCBjaGFyCSpjcDsKKwlpbnQJCWk7CisJaW50CQlmbGFncyA9IDA7CisKKwlhbGxvY19zdHJpbmcocywgMTAwKTsKKwlmb3IgKGNwID0gbG9nX2ZuOyAqY3A7IGNwKyspIHsKKwkJaWYgKGNwWzBdID09ICclJykgeworCQkJY3ArKzsKKwkJCWV4cGFuZF9wZXJjZW50X2V4cHJlc3Npb24oY3R4LCAqY3AsIHMsICZmbGFncyk7CisJCQljb250aW51ZTsKKwkJfQorCQlmb3IgKGkgPSAwOyBjcFtpXTsgaSsrKQorCQkJaWYgKGNwW2ldID09ICclJykKKwkJCQlicmVhazsKKwkJYXBwZW5kX3N0cmluZyhzLCBjcCwgaSk7CisJCWNwICs9IGktMTsKKwl9Cit9CisKK3N0YXRpYyBpbnQJb3V0YnVmc2l6ZTsKK3N0YXRpYyB2b2lkCSpvdXRidWY7CisKK3N0YXRpYyBpbnQgZG9fcmVhZChpbnQgZmQpCit7CisJaW50CWM7CisJY2hhcgkJKm47CisJY2hhcglidWZmZXJbNDA5Nl07CisKKwljID0gcmVhZChmZCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKS0xKTsKKwlpZiAoYyA8PSAwKQorCQlyZXR1cm4gYzsKKworCW4gPSByZWFsbG9jKG91dGJ1Ziwgb3V0YnVmc2l6ZSArIGMpOworCWlmIChuKSB7CisJCW91dGJ1ZiA9IG47CisJCW1lbWNweSgoKGNoYXIgKilvdXRidWYpK291dGJ1ZnNpemUsIGJ1ZmZlciwgYyk7CisJCW91dGJ1ZnNpemUgKz0gYzsKKwl9CisJcmV0dXJuIGM7Cit9CisKKy8qCisgKiBGb3JrIGEgY2hpbGQgcHJvY2VzcyB0byBzYXZlIHRoZSBvdXRwdXQgb2YgdGhlIGxvZ2ZpbGUgdW50aWwgdGhlCisgKiBhcHByb3ByaWF0ZSBmaWxlIHN5c3RlbSBpcyBtb3VudGVkIHJlYWQvd3JpdGUuCisgKi8KK3N0YXRpYyBGSUxFICpzYXZlX291dHB1dChjb25zdCBjaGFyICpzMCwgY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKQoreworCWludCBjLCBmZCwgZmRzWzJdOworCWNoYXIgKmNwOworCXBpZF90IHBpZDsKKwlGSUxFICpyZXQ7CisKKwlpZiAoczAgJiYgKnMwID09IDApCisJCXMwID0gMDsKKwlpZiAoczEgJiYgKnMxID09IDApCisJCXMxID0gMDsKKwlpZiAoczIgJiYgKnMyID09IDApCisJCXMyID0gMDsKKworCS8qIEF0IGxlYXN0IG9uZSBwb3RlbnRpYWwgb3V0cHV0IGZpbGUgbmFtZSBpcyB2YWxpZCAqLworCWlmICghczAgJiYgIXMxICYmICFzMikKKwkJcmV0dXJuIE5VTEw7CisJaWYgKHBpcGUoZmRzKSA8IDApIHsKKwkJcGVycm9yKCJwaXBlIik7CisJCWV4aXQoMSk7CisJfQorCisJcGlkID0gZm9yaygpOworCWlmIChwaWQgPCAwKSB7CisJCXBlcnJvcigiZm9yayIpOworCQlleGl0KDEpOworCX0KKworCWlmIChwaWQgPT0gMCkgeworCQlpZiAoZTJmc2NrX2dsb2JhbF9jdHggJiYgZTJmc2NrX2dsb2JhbF9jdHgtPnByb2dyZXNzX2ZkKQorCQkJY2xvc2UoZTJmc2NrX2dsb2JhbF9jdHgtPnByb2dyZXNzX2ZkKTsKKwkJaWYgKGRhZW1vbigwLCAwKSA8IDApIHsKKwkJCXBlcnJvcigiZGFlbW9uIik7CisJCQlleGl0KDEpOworCQl9CisJCS8qCisJCSAqIEdyYWIgdGhlIG91dHB1dCBmcm9tIG91ciBwYXJlbnQKKwkJICovCisJCWNsb3NlKGZkc1sxXSk7CisJCXdoaWxlIChkb19yZWFkKGZkc1swXSkgPiAwKQorCQkJOworCQljbG9zZShmZHNbMF0pOworCisJCS8qIE9LLCBub3cgbGV0J3MgdHJ5IHRvIG9wZW4gdGhlIG91dHB1dCBmaWxlICovCisJCWZkID0gLTE7CisJCXdoaWxlICgxKSB7CisJCQlpZiAoZmQgPCAwICYmIHMwKQorCQkJCWZkID0gb3BlbihzMCwgT19XUk9OTFl8T19DUkVBVHxPX1RSVU5DLCAwNjQ0KTsKKwkJCWlmIChmZCA8IDAgJiYgczEpCisJCQkJZmQgPSBvcGVuKHMxLCBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkMsIDA2NDQpOworCQkJaWYgKGZkIDwgMCAmJiBzMikKKwkJCQlmZCA9IG9wZW4oczIsIE9fV1JPTkxZfE9fQ1JFQVR8T19UUlVOQywgMDY0NCk7CisJCQlpZiAoZmQgPj0gMCkKKwkJCQlicmVhazsKKwkJCXNsZWVwKDEpOworCQl9CisKKwkJY3AgPSBvdXRidWY7CisJCXdoaWxlIChvdXRidWZzaXplID4gMCkgeworCQkJYyA9IHdyaXRlKGZkLCBjcCwgb3V0YnVmc2l6ZSk7CisJCQlpZiAoYyA8IDApIHsKKwkJCQlpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVJTlRSKSkKKwkJCQkJY29udGludWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlvdXRidWZzaXplIC09IGM7CisJCQljcCArPSBjOworCQl9CisJCWV4aXQoMCk7CisJfQorCisJY2xvc2UoZmRzWzBdKTsKKwlyZXQgPSBmZG9wZW4oZmRzWzFdLCAidyIpOworCWlmICghcmV0KQorCQljbG9zZShmZHNbMV0pOworCXJldHVybiByZXQ7Cit9CisKKyNpZm5kZWYgVEVTVF9QUk9HUkFNCit2b2lkIHNldF91cF9sb2dnaW5nKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3Qgc3RyaW5nIHMsIHMxLCBzMjsKKwljaGFyICpzMCA9IDAsICpsb2dfZGlyID0gMCwgKmxvZ19mbiA9IDA7CisJaW50IGxvZ19kaXJfd2FpdCA9IDA7CisKKwlzLnMgPSBzMS5zID0gczIucyA9IDA7CisKKwlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAibG9nX2Rpcl93YWl0IiwgMCwgMCwKKwkJCSAgICAmbG9nX2Rpcl93YWl0KTsKKwlpZiAoY3R4LT5sb2dfZm4pCisJCWxvZ19mbiA9IHN0cmluZ19jb3B5KGN0eCwgY3R4LT5sb2dfZm4sIDApOworCWVsc2UKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAibG9nX2ZpbGVuYW1lIiwKKwkJCQkgICAwLCAwLCAmbG9nX2ZuKTsKKwlwcm9maWxlX2dldF9zdHJpbmcoY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsICJsb2dfZGlyIiwgMCwgMCwgJmxvZ19kaXIpOworCisJaWYgKCFsb2dfZm4gfHwgIWxvZ19mblswXSkKKwkJZ290byBvdXQ7CisKKwlleHBhbmRfbG9nZm4oY3R4LCBsb2dfZm4sICZzKTsKKwlpZiAoKGxvZ19mblswXSA9PSAnLycpIHx8ICFsb2dfZGlyIHx8ICFsb2dfZGlyWzBdKQorCQlzMCA9IHMuczsKKworCWlmIChsb2dfZGlyICYmIGxvZ19kaXJbMF0pIHsKKwkJYWxsb2Nfc3RyaW5nKCZzMSwgc3RybGVuKGxvZ19kaXIpICsgc3RybGVuKHMucykgKyAyKTsKKwkJYXBwZW5kX3N0cmluZygmczEsIGxvZ19kaXIsIDApOworCQlhcHBlbmRfc3RyaW5nKCZzMSwgIi8iLCAxKTsKKwkJYXBwZW5kX3N0cmluZygmczEsIHMucywgMCk7CisJfQorCisJZnJlZShsb2dfZGlyKTsKKwlwcm9maWxlX2dldF9zdHJpbmcoY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsICJsb2dfZGlyX2ZhbGxiYWNrIiwgMCwgMCwKKwkJCSAgICZsb2dfZGlyKTsKKwlpZiAobG9nX2RpciAmJiBsb2dfZGlyWzBdKSB7CisJCWFsbG9jX3N0cmluZygmczIsIHN0cmxlbihsb2dfZGlyKSArIHN0cmxlbihzLnMpICsgMik7CisJCWFwcGVuZF9zdHJpbmcoJnMyLCBsb2dfZGlyLCAwKTsKKwkJYXBwZW5kX3N0cmluZygmczIsICIvIiwgMSk7CisJCWFwcGVuZF9zdHJpbmcoJnMyLCBzLnMsIDApOworCQlwcmludGYoIiVzXG4iLCBzMi5zKTsKKwl9CisKKwlpZiAoczApCisJCWN0eC0+bG9nZiA9IGZvcGVuKHMwLCAidyIpOworCWlmICghY3R4LT5sb2dmICYmIHMxLnMpCisJCWN0eC0+bG9nZiA9IGZvcGVuKHMxLnMsICJ3Iik7CisJaWYgKCFjdHgtPmxvZ2YgJiYgczIucykKKwkJY3R4LT5sb2dmID0gZm9wZW4oczIucywgInciKTsKKwlpZiAoIWN0eC0+bG9nZiAmJiBsb2dfZGlyX3dhaXQpCisJCWN0eC0+bG9nZiA9IHNhdmVfb3V0cHV0KHMwLCBzMS5zLCBzMi5zKTsKKworb3V0OgorCWZyZWUocy5zKTsKKwlmcmVlKHMxLnMpOworCWZyZWUoczIucyk7CisJZnJlZShsb2dfZm4pOworCWZyZWUobG9nX2Rpcik7CisJcmV0dXJuOworfQorI2Vsc2UKK3ZvaWQgKmUyZnNja19hbGxvY2F0ZV9tZW1vcnkoZTJmc2NrX3QgY3R4LCB1bnNpZ25lZCBpbnQgc2l6ZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pCit7CisJdm9pZCAqcmV0OworCWNoYXIgYnVmWzI1Nl07CisKKwlyZXQgPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCFyZXQpIHsKKwkJc3ByaW50ZihidWYsICJDYW4ndCBhbGxvY2F0ZSAlc1xuIiwgZGVzY3JpcHRpb24pOworCQlleGl0KDEpOworCX0KKwltZW1zZXQocmV0LCAwLCBzaXplKTsKKwlyZXR1cm4gcmV0OworfQorCitlcnJjb2RlX3QgZTJmc2NrX2FsbG9jYXRlX2NvbnRleHQoZTJmc2NrX3QgKnJldCkKK3sKKwllMmZzY2tfdAljb250ZXh0OworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJKnRpbWVfZW52OworCisJY29udGV4dCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGUyZnNja19zdHJ1Y3QpKTsKKwlpZiAoIWNvbnRleHQpCisJCXJldHVybiBFTk9NRU07CisKKwltZW1zZXQoY29udGV4dCwgMCwgc2l6ZW9mKHN0cnVjdCBlMmZzY2tfc3RydWN0KSk7CisKKwljb250ZXh0LT5ub3cgPSAxMzMyMDA2NDc0OworCisJY29udGV4dC0+ZmlsZXN5c3RlbV9uYW1lID0gIi9kZXYvc2RhMyI7CisJY29udGV4dC0+ZGV2aWNlX25hbWUgPSAiZnNsYWJlbCI7CisKKwkqcmV0ID0gY29udGV4dDsKKwlyZXR1cm4gMDsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWUyZnNja190CWN0eDsKKwlzdHJ1Y3Qgc3RyaW5nCXM7CisKKwlwdXRlbnYoIlRaPUVTVCs1OjAwIik7CisJZTJmc2NrX2FsbG9jYXRlX2NvbnRleHQoJmN0eCk7CisJZXhwYW5kX2xvZ2ZuKGN0eCwgImUyZnNjay0lTi4laC4ldS4lRC0lVCIsICZzKTsKKwlwcmludGYoIiVzXG4iLCBzLnMpOworCWZyZWUocy5zKTsKKwlleHBhbmRfbG9nZm4oY3R4LCAiZTJmc2NrLSVOLiVoLiV1LiVZJW0lZC0lSCVNJVMiLCAmcyk7CisJcHJpbnRmKCIlc1xuIiwgcy5zKTsKKwlmcmVlKHMucyk7CisKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9tZXNzYWdlLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL21lc3NhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzNmY2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9tZXNzYWdlLmMKQEAgLTAsMCArMSw1NjMgQEAKKy8qCisgKiBtZXNzYWdlLmMgLS0tIHByaW50IGUyZnNjayBtZXNzYWdlcyAod2l0aCBjb21wcmVzc2lvbikKKyAqCisgKiBDb3B5cmlnaHQgMTk5NiwgMTk5NyBieSBUaGVvZG9yZSBUcydvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqCisgKiBwcmludF9lMmZzY2tfbWVzc2FnZSgpIHByaW50cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIsIHVzaW5nCisgKiBjb21wcmVzc2lvbiB0ZWNobmlxdWVzIGFuZCBleHBhbnNpb25zIG9mIGFiYnJldmlhdGlvbnMuCisgKgorICogVGhlIGZvbGxvd2luZyAlIGV4cGFuc2lvbnMgYXJlIHN1cHBvcnRlZDoKKyAqCisgKiAJJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyAqIAklQgk8YmxrY291bnQ+CQlpbnRlcnByZXQgYmxrY291bnQgYXMgYmxrY291bnQKKyAqIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyAqIAklRGkJPGRpcmVudD4tPmlubwkJaW5vZGUgbnVtYmVyCisgKiAJJURuCTxkaXJlbnQ+LT5uYW1lCQlzdHJpbmcKKyAqIAklRHIJPGRpcmVudD4tPnJlY19sZW4KKyAqIAklRGwJPGRpcmVudD4tPm5hbWVfbGVuCisgKiAJJUR0CTxkaXJlbnQ+LT5maWxldHlwZQorICogCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorICogCSVnCTxncm91cD4JCQlpbnRlZ2VyCisgKiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyAqIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyAqIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisgKiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyAqIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisgKiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisgKiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorICogCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyAqIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisgKiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisgKiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyAqIAklSWcJPGlub2RlPiAtPiBpX2dpZAorICoJJUl0CTxpbm9kZSB0eXBlPgorICogCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorICogCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisgKiAJJU4JPG51bT4KKyAqCSVwCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisgKiAJJVAJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisgKiAJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuICAoSWYgZGlyZW50IGlzIE5VTEwKKyAqIAkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorICogCSVxCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisgKiAJJVEJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4gd2l0aCA8ZGlyPiBhcworICogCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorICogCSVyCTxibGtjb3VudD4JCWludGVycHJldCBibGtjb3VudCBhcyByZWZjb3VudAorICogCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyAqIAklUwliYWNrdXAgc3VwZXJibG9jaworICogCSVYCTxudW0+IGhleGFkZWNpbWFsIGZvcm1hdAorICoKKyAqIFRoZSBmb2xsb3dpbmcgJ0AnIGV4cGFuc2lvbnMgYXJlIHN1cHBvcnRlZDoKKyAqCisgKiAJQGEJZXh0ZW5kZWQgYXR0cmlidXRlCisgKiAJQEEJZXJyb3IgYWxsb2NhdGluZworICogCUBiCWJsb2NrCisgKiAJQEIJYml0bWFwCisgKiAJQGMJY29tcHJlc3MKKyAqIAlAQwljb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrCisgKiAJQEQJZGVsZXRlZAorICogCUBkCWRpcmVjdG9yeQorICogCUBlCWVudHJ5CisgKiAJQEUJRW50cnkgJyVEbicgaW4gJXAgKCVpKQorICogCUBmCWZpbGVzeXN0ZW0KKyAqIAlARglmb3IgQGkgJWkgKCVRKSBpcworICogCUBnCWdyb3VwCisgKiAJQGgJSFRSRUUgZGlyZWN0b3J5IGlub2RlCisgKiAJQGkJaW5vZGUKKyAqIAlASQlpbGxlZ2FsCisgKiAJQGoJam91cm5hbAorICogCUBsCWxvc3QrZm91bmQKKyAqIAlATAlpcyBhIGxpbmsKKyAqCUBtCW11bHRpcGx5LWNsYWltZWQKKyAqCUBuCWludmFsaWQKKyAqIAlAbwlvcnBoYW5lZAorICogCUBwCXByb2JsZW0gaW4KKyAqCUBxCXF1b3RhCisgKiAJQHIJcm9vdCBpbm9kZQorICogCUBzCXNob3VsZCBiZQorICogCUBTCXN1cGVyYmxvY2sKKyAqIAlAdQl1bmF0dGFjaGVkCisgKiAJQHYJZGV2aWNlCisgKglAeAlleHRlbnQKKyAqIAlAegl6ZXJvLWxlbmd0aAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKworI2luY2x1ZGUgImUyZnNjay5oIgorCisjaW5jbHVkZSAicHJvYmxlbS5oIgorCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgX0lOTElORV8gX19pbmxpbmVfXworI2Vsc2UKKyNkZWZpbmUgX0lOTElORV8KKyNlbmRpZgorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgZGVmaW5lcyB0aGUgYWJicmV2aWF0aW9ucyB1c2VkIGJ5IHRoZSB0ZXh0IHN0cmluZ3MKKyAqIGJlbG93LiAgVGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzIHRoZSBpbmRleCBsZXR0ZXIuICBBbgorICogYWJicmV2aWF0aW9uIG9mIHRoZSBmb3JtICdAPGk+JyBpcyBleHBhbmRlZCBieSBsb29raW5nIHVwIHRoZSBpbmRleAorICogbGV0dGVyIDxpPiBpbiB0aGUgdGFibGUgYmVsb3cuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICphYmJyZXZzW10gPSB7CisJTl8oImFleHRlbmRlZCBhdHRyaWJ1dGUiKSwKKwlOXygiQWVycm9yIGFsbG9jYXRpbmciKSwKKwlOXygiYmJsb2NrIiksCisJTl8oIkJiaXRtYXAiKSwKKwlOXygiY2NvbXByZXNzIiksCisJTl8oIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIiksCisJTl8oImRkaXJlY3RvcnkiKSwKKwlOXygiRGRlbGV0ZWQiKSwKKwlOXygiZWVudHJ5IiksCisJTl8oIkVAZSAnJURuJyBpbiAlcCAoJWkpIiksCisJTl8oImZmaWxlc3lzdGVtIiksCisJTl8oIkZmb3IgQGkgJWkgKCVRKSBpcyIpLAorCU5fKCJnZ3JvdXAiKSwKKwlOXygiaEhUUkVFIEBkIEBpIiksCisJTl8oImlpbm9kZSIpLAorCU5fKCJJaWxsZWdhbCIpLAorCU5fKCJqam91cm5hbCIpLAorCU5fKCJsbG9zdCtmb3VuZCIpLAorCU5fKCJMaXMgYSBsaW5rIiksCisJTl8oIm1tdWx0aXBseS1jbGFpbWVkIiksCisJTl8oIm5pbnZhbGlkIiksCisJTl8oIm9vcnBoYW5lZCIpLAorCU5fKCJwcHJvYmxlbSBpbiIpLAorCU5fKCJxcXVvdGEiKSwKKwlOXygicnJvb3QgQGkiKSwKKwlOXygic3Nob3VsZCBiZSIpLAorCU5fKCJTc3VwZXJAYiIpLAorCU5fKCJ1dW5hdHRhY2hlZCIpLAorCU5fKCJ2ZGV2aWNlIiksCisJTl8oInhleHRlbnQiKSwKKwlOXygienplcm8tbGVuZ3RoIiksCisJIkBAIiwKKwkwCisJfTsKKworLyoKKyAqIEdpdmUgbW9yZSB1c2VyIGZyaWVuZGx5IG5hbWVzIHRvIHRoZSAic3BlY2lhbCIgaW5vZGVzLgorICovCisjZGVmaW5lIG51bV9zcGVjaWFsX2lub2RlcwkxMQorc3RhdGljIGNvbnN0IGNoYXIgKnNwZWNpYWxfaW5vZGVfbmFtZVtdID0KK3sKKwlOXygiPFRoZSBOVUxMIGlub2RlPiIpLAkJCS8qIDAgKi8KKwlOXygiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIpLAkJLyogMSAqLworCSIvIiwJCQkJCS8qIDIgKi8KKwlOXygiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIpLAkJLyogMyAqLworCU5fKCI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIpLAkJLyogNCAqLworCU5fKCI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIpLAkJLyogNSAqLworCU5fKCI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iKSwJLyogNiAqLworCU5fKCI8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IiksCS8qIDcgKi8KKwlOXygiPFRoZSBqb3VybmFsIGlub2RlPiIpLAkJLyogOCAqLworCU5fKCI8UmVzZXJ2ZWQgaW5vZGUgOT4iKSwJCS8qIDkgKi8KKwlOXygiPFJlc2VydmVkIGlub2RlIDEwPiIpLAkJLyogMTAgKi8KK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgInNhZmUiIHByaW50aW5nLiAgSXQgd2lsbCBjb252ZXJ0IG5vbi1wcmludGFibGUKKyAqIEFTQ0lJIGNoYXJhY3RlcnMgdXNpbmcgJ14nIGFuZCBNLSBub3RhdGlvbi4KKyAqLworc3RhdGljIHZvaWQgc2FmZV9wcmludChGSUxFICpmLCBjb25zdCBjaGFyICpjcCwgaW50IGxlbikKK3sKKwl1bnNpZ25lZCBjaGFyCWNoOworCisJaWYgKGxlbiA8IDApCisJCWxlbiA9IHN0cmxlbihjcCk7CisKKwl3aGlsZSAobGVuLS0pIHsKKwkJY2ggPSAqY3ArKzsKKwkJaWYgKGNoID4gMTI4KSB7CisJCQlmcHV0cygiTS0iLCBmKTsKKwkJCWNoIC09IDEyODsKKwkJfQorCQlpZiAoKGNoIDwgMzIpIHx8IChjaCA9PSAweDdmKSkgeworCQkJZnB1dGMoJ14nLCBmKTsKKwkJCWNoIF49IDB4NDA7IC8qIF5ALCBeQSwgXkI7IF4/IGZvciBERUwgKi8KKwkJfQorCQlmcHV0YyhjaCwgZik7CisJfQorfQorCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHByaW50cyBhIHBhdGhuYW1lLCB1c2luZyB0aGUgZXh0MmZzX2dldF9wYXRobmFtZQorICogZnVuY3Rpb24KKyAqLworc3RhdGljIHZvaWQgcHJpbnRfcGF0aG5hbWUoRklMRSAqZiwgZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLAorCQkJICAgZXh0Ml9pbm9fdCBpbm8pCit7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJY2hhcgkJKnBhdGg7CisKKwlpZiAoIWRpciAmJiAoaW5vIDwgbnVtX3NwZWNpYWxfaW5vZGVzKSkgeworCQlmcHV0cyhfKHNwZWNpYWxfaW5vZGVfbmFtZVtpbm9dKSwgZik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoZnMpCisJCXJldHZhbCA9IGV4dDJmc19nZXRfcGF0aG5hbWUoZnMsIGRpciwgaW5vLCAmcGF0aCk7CisJaWYgKCFmcyB8fCByZXR2YWwpCisJCWZwdXRzKCI/Pz8iLCBmKTsKKwllbHNlIHsKKwkJc2FmZV9wcmludChmLCBwYXRoLCAtMSk7CisJCWV4dDJmc19mcmVlX21lbSgmcGF0aCk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwcmludF90aW1lKEZJTEUgKmYsIHRpbWVfdCB0KQoreworCWNvbnN0IGNoYXIgKgkJdGltZV9zdHI7CisJc3RhdGljIGludAkJZG9fZ210ID0gLTE7CisKKyNpZmRlZiBfX2RpZXRsaWJjX18KKwkJLyogVGhlIGRpZXQgbGliYyBkb2Vzbid0IHJlc3BlY3QgdGhlIFRaIGVudmlyb25lbW50IHZhcmlhYmxlICovCisJCWlmIChkb19nbXQgPT0gLTEpIHsKKwkJCXRpbWVfc3RyID0gZ2V0ZW52KCJUWiIpOworCQkJaWYgKCF0aW1lX3N0cikKKwkJCQl0aW1lX3N0ciA9ICIiOworCQkJZG9fZ210ID0gIXN0cmNtcCh0aW1lX3N0ciwgIkdNVCIpIHx8CisJCQkJIXN0cmNtcCh0aW1lX3N0ciwgIkdNVDAiKTsKKwkJfQorI2VuZGlmCisJCXRpbWVfc3RyID0gYXNjdGltZSgoZG9fZ210ID4gMCkgPyBnbXRpbWUoJnQpIDogbG9jYWx0aW1lKCZ0KSk7CisJCWZwcmludGYoZiwgIiUuMjRzIiwgdGltZV9zdHIpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSAnQCcgZXhwYW5zaW9uLiAgV2UgYWxsb3cgcmVjdXJzaXZlCisgKiBleHBhbnNpb247IGFuIEAgZXhwcmVzc2lvbiBjYW4gY29udGFpbiBmdXJ0aGVyICdAJyBhbmQgJyUnCisgKiBleHByZXNzaW9ucy4KKyAqLworc3RhdGljIF9JTkxJTkVfIHZvaWQgZXhwYW5kX2F0X2V4cHJlc3Npb24oRklMRSAqZiwgZTJmc2NrX3QgY3R4LCBjaGFyIGNoLAorCQkJCQkgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsCisJCQkJCSAgaW50ICpmaXJzdCwgaW50IHJlY3Vyc2UpCit7CisJY29uc3QgY2hhciAqKmNwcCwgKnN0cjsKKworCS8qIFNlYXJjaCBmb3IgdGhlIGFiYnJldmlhdGlvbiAqLworCWZvciAoY3BwID0gYWJicmV2czsgKmNwcDsgY3BwKyspIHsKKwkJaWYgKGNoID09ICpjcHBbMF0pCisJCQlicmVhazsKKwl9CisJaWYgKCpjcHAgJiYgcmVjdXJzZSA8IDEwKSB7CisJCXN0ciA9IF8oKmNwcCkgKyAxOworCQlpZiAoKmZpcnN0ICYmIGlzbG93ZXIoKnN0cikpIHsKKwkJCSpmaXJzdCA9IDA7CisJCQlmcHV0Yyh0b3VwcGVyKCpzdHIrKyksIGYpOworCQl9CisJCXByaW50X2UyZnNja19tZXNzYWdlKGYsIGN0eCwgc3RyLCBwY3R4LCAqZmlyc3QsIHJlY3Vyc2UrMSk7CisJfSBlbHNlCisJCWZwcmludGYoZiwgIkAlYyIsIGNoKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gZXhwYW5kcyAnJUlYJyBleHByZXNzaW9ucworICovCitzdGF0aWMgX0lOTElORV8gdm9pZCBleHBhbmRfaW5vZGVfZXhwcmVzc2lvbihGSUxFICpmLCBleHQyX2ZpbHN5cyBmcywgY2hhciBjaCwKKwkJCQkJICAgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IGV4dDJfaW5vZGUJKmlub2RlOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlCSpsYXJnZV9pbm9kZTsKKworCWlmICghY3R4IHx8ICFjdHgtPmlub2RlKQorCQlnb3RvIG5vX2lub2RlOworCisJaW5vZGUgPSBjdHgtPmlub2RlOworCWxhcmdlX2lub2RlID0gKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGlub2RlOworCisJc3dpdGNoIChjaCkgeworCWNhc2UgJ3MnOgorCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSkKKwkJCWZwcmludGYoZiwgIiV1IiwgaW5vZGUtPmlfc2l6ZSk7CisJCWVsc2UgeworI2lmZGVmIEVYVDJfTk9fNjRfVFlQRQorCQkJaWYgKGlub2RlLT5pX3NpemVfaGlnaCkKKwkJCQlmcHJpbnRmKGYsICIweCV4JTA4eCIsIGlub2RlLT5pX3NpemVfaGlnaCwKKwkJCQkJaW5vZGUtPmlfc2l6ZSk7CisJCQllbHNlCisJCQkJZnByaW50ZihmLCAiJXUiLCBpbm9kZS0+aV9zaXplKTsKKyNlbHNlCisJCQlmcHJpbnRmKGYsICIlbGx1IiwgRVhUMl9JX1NJWkUoaW5vZGUpKTsKKyNlbmRpZgorCQl9CisJCWJyZWFrOworCWNhc2UgJ1MnOgorCQlmcHJpbnRmKGYsICIldSIsIGxhcmdlX2lub2RlLT5pX2V4dHJhX2lzaXplKTsKKwkJYnJlYWs7CisJY2FzZSAnYic6CisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikpCisJCQlmcHJpbnRmKGYsICIlbGx1IiwgaW5vZGUtPmlfYmxvY2tzICsKKwkJCQkoKChsb25nIGxvbmcpIGlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpKQorCQkJCSA8PCAzMikpOworCQllbHNlCisJCQlmcHJpbnRmKGYsICIldSIsIGlub2RlLT5pX2Jsb2Nrcyk7CisJCWJyZWFrOworCWNhc2UgJ2wnOgorCQlmcHJpbnRmKGYsICIlZCIsIGlub2RlLT5pX2xpbmtzX2NvdW50KTsKKwkJYnJlYWs7CisJY2FzZSAnbSc6CisJCWZwcmludGYoZiwgIjAlbyIsIGlub2RlLT5pX21vZGUpOworCQlicmVhazsKKwljYXNlICdNJzoKKwkJcHJpbnRfdGltZShmLCBpbm9kZS0+aV9tdGltZSk7CisJCWJyZWFrOworCWNhc2UgJ0YnOgorCQlmcHJpbnRmKGYsICIldSIsIGlub2RlLT5pX2ZhZGRyKTsKKwkJYnJlYWs7CisJY2FzZSAnZic6CisJCWZwcmludGYoZiwgIiVsbHUiLCBleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIGlub2RlKSk7CisJCWJyZWFrOworCWNhc2UgJ2QnOgorCQlmcHJpbnRmKGYsICIldSIsIChMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpID8KKwkJCQkgIGlub2RlLT5pX2Rpcl9hY2wgOiAwKSk7CisJCWJyZWFrOworCWNhc2UgJ3UnOgorCQlmcHJpbnRmKGYsICIlZCIsIGlub2RlX3VpZCgqaW5vZGUpKTsKKwkJYnJlYWs7CisJY2FzZSAnZyc6CisJCWZwcmludGYoZiwgIiVkIiwgaW5vZGVfZ2lkKCppbm9kZSkpOworCQlicmVhazsKKwljYXNlICd0JzoKKwkJaWYgKExJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkpCisJCQlmcHV0cyhfKCJyZWd1bGFyIGZpbGUiKSwgZik7CisJCWVsc2UgaWYgKExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkpCisJCQlmcHV0cyhfKCJkaXJlY3RvcnkiKSwgZik7CisJCWVsc2UgaWYgKExJTlVYX1NfSVNDSFIoaW5vZGUtPmlfbW9kZSkpCisJCQlmcHV0cyhfKCJjaGFyYWN0ZXIgZGV2aWNlIiksIGYpOworCQllbHNlIGlmIChMSU5VWF9TX0lTQkxLKGlub2RlLT5pX21vZGUpKQorCQkJZnB1dHMoXygiYmxvY2sgZGV2aWNlIiksIGYpOworCQllbHNlIGlmIChMSU5VWF9TX0lTRklGTyhpbm9kZS0+aV9tb2RlKSkKKwkJCWZwdXRzKF8oIm5hbWVkIHBpcGUiKSwgZik7CisJCWVsc2UgaWYgKExJTlVYX1NfSVNMTksoaW5vZGUtPmlfbW9kZSkpCisJCQlmcHV0cyhfKCJzeW1ib2xpYyBsaW5rIiksIGYpOworCQllbHNlIGlmIChMSU5VWF9TX0lTU09DSyhpbm9kZS0+aV9tb2RlKSkKKwkJCWZwdXRzKF8oInNvY2tldCIpLCBmKTsKKwkJZWxzZQorCQkJZnByaW50ZihmLCBfKCJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIiksCisJCQkJaW5vZGUtPmlfbW9kZSk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJbm9faW5vZGU6CisJCWZwcmludGYoZiwgIiUlSSVjIiwgY2gpOworCQlicmVhazsKKwl9Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGV4cGFuZHMgJyVkWCcgZXhwcmVzc2lvbnMKKyAqLworc3RhdGljIF9JTkxJTkVfIHZvaWQgZXhwYW5kX2RpcmVudF9leHByZXNzaW9uKEZJTEUgKmYsIGV4dDJfZmlsc3lzIGZzLCBjaGFyIGNoLAorCQkJCQkgICAgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5CSpkaXJlbnQ7CisJdW5zaWduZWQgaW50IHJlY19sZW4sIGxlbjsKKworCWlmICghY3R4IHx8ICFjdHgtPmRpcmVudCkKKwkJZ290byBub19kaXJlbnQ7CisKKwlkaXJlbnQgPSBjdHgtPmRpcmVudDsKKworCXN3aXRjaCAoY2gpIHsKKwljYXNlICdpJzoKKwkJZnByaW50ZihmLCAiJXUiLCBkaXJlbnQtPmlub2RlKTsKKwkJYnJlYWs7CisJY2FzZSAnbic6CisJCWxlbiA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KTsKKwkJaWYgKChleHQyZnNfZ2V0X3JlY19sZW4oZnMsIGRpcmVudCwgJnJlY19sZW4pID09IDApICYmCisJCSAgICAobGVuID4gcmVjX2xlbikpCisJCQlsZW4gPSByZWNfbGVuOworCQlzYWZlX3ByaW50KGYsIGRpcmVudC0+bmFtZSwgbGVuKTsKKwkJYnJlYWs7CisJY2FzZSAncic6CisJCSh2b2lkKSBleHQyZnNfZ2V0X3JlY19sZW4oZnMsIGRpcmVudCwgJnJlY19sZW4pOworCQlmcHJpbnRmKGYsICIldSIsIHJlY19sZW4pOworCQlicmVhazsKKwljYXNlICdsJzoKKwkJZnByaW50ZihmLCAiJXUiLCBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkpOworCQlicmVhazsKKwljYXNlICd0JzoKKwkJZnByaW50ZihmLCAiJXUiLCBleHQyZnNfZGlyZW50X2ZpbGVfdHlwZShkaXJlbnQpKTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwlub19kaXJlbnQ6CisJCWZwcmludGYoZiwgIiUlRCVjIiwgY2gpOworCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyBfSU5MSU5FXyB2b2lkIGV4cGFuZF9wZXJjZW50X2V4cHJlc3Npb24oRklMRSAqZiwgZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICAgICBjaGFyIGNoLCBpbnQgd2lkdGgsIGludCAqZmlyc3QsCisJCQkJCSAgICAgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpjdHgpCit7CisJZTJmc2NrX3QgZTJmc2NrX2N0eCA9IGZzID8gKGUyZnNja190KSBmcy0+cHJpdl9kYXRhIDogTlVMTDsKKwljb25zdCBjaGFyICptOworCisJaWYgKCFjdHgpCisJCWdvdG8gbm9fY29udGV4dDsKKworCXN3aXRjaCAoY2gpIHsKKwljYXNlICclJzoKKwkJZnB1dGMoJyUnLCBmKTsKKwkJYnJlYWs7CisJY2FzZSAnYic6CisjaWZkZWYgRVhUMl9OT182NF9UWVBFCisJCWZwcmludGYoZiwgIiUqdSIsIHdpZHRoLCAodW5zaWduZWQgbG9uZykgY3R4LT5ibGspOworI2Vsc2UKKwkJZnByaW50ZihmLCAiJSpsbHUiLCB3aWR0aCwgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3R4LT5ibGspOworI2VuZGlmCisJCWJyZWFrOworCWNhc2UgJ0InOgorCQlpZiAoY3R4LT5ibGtjb3VudCA9PSBCTE9DS19DT1VOVF9JTkQpCisJCQltID0gXygiaW5kaXJlY3QgYmxvY2siKTsKKwkJZWxzZSBpZiAoY3R4LT5ibGtjb3VudCA9PSBCTE9DS19DT1VOVF9ESU5EKQorCQkJbSA9IF8oImRvdWJsZSBpbmRpcmVjdCBibG9jayIpOworCQllbHNlIGlmIChjdHgtPmJsa2NvdW50ID09IEJMT0NLX0NPVU5UX1RJTkQpCisJCQltID0gXygidHJpcGxlIGluZGlyZWN0IGJsb2NrIik7CisJCWVsc2UgaWYgKGN0eC0+YmxrY291bnQgPT0gQkxPQ0tfQ09VTlRfVFJBTlNMQVRPUikKKwkJCW0gPSBfKCJ0cmFuc2xhdG9yIGJsb2NrIik7CisJCWVsc2UKKwkJCW0gPSBfKCJibG9jayAjIik7CisJCWlmICgqZmlyc3QgJiYgaXNsb3dlcihtWzBdKSkKKwkJCWZwdXRjKHRvdXBwZXIoKm0rKyksIGYpOworCQlmcHV0cyhtLCBmKTsKKwkJaWYgKGN0eC0+YmxrY291bnQgPj0gMCkgeworI2lmZGVmIEVYVDJfTk9fNjRfVFlQRQorCQkJZnByaW50ZihmLCAiJWQiLCBjdHgtPmJsa2NvdW50KTsKKyNlbHNlCisJCQlmcHJpbnRmKGYsICIlbGxkIiwgKGxvbmcgbG9uZykgY3R4LT5ibGtjb3VudCk7CisjZW5kaWYKKwkJfQorCQlicmVhazsKKwljYXNlICdjJzoKKyNpZmRlZiBFWFQyX05PXzY0X1RZUEUKKwkJZnByaW50ZihmLCAiJSp1Iiwgd2lkdGgsICh1bnNpZ25lZCBsb25nKSBjdHgtPmJsazIpOworI2Vsc2UKKwkJZnByaW50ZihmLCAiJSpsbHUiLCB3aWR0aCwgKHVuc2lnbmVkIGxvbmcgbG9uZykgY3R4LT5ibGsyKTsKKyNlbmRpZgorCQlicmVhazsKKwljYXNlICdkJzoKKwkJZnByaW50ZihmLCAiJSp1Iiwgd2lkdGgsIGN0eC0+ZGlyKTsKKwkJYnJlYWs7CisJY2FzZSAnZyc6CisJCWZwcmludGYoZiwgIiUqdSIsIHdpZHRoLCBjdHgtPmdyb3VwKTsKKwkJYnJlYWs7CisJY2FzZSAnaSc6CisJCWZwcmludGYoZiwgIiUqdSIsIHdpZHRoLCBjdHgtPmlubyk7CisJCWJyZWFrOworCWNhc2UgJ2onOgorCQlmcHJpbnRmKGYsICIlKnUiLCB3aWR0aCwgY3R4LT5pbm8yKTsKKwkJYnJlYWs7CisJY2FzZSAnbSc6CisJCWZwcmludGYoZiwgIiUqcyIsIHdpZHRoLCBlcnJvcl9tZXNzYWdlKGN0eC0+ZXJyY29kZSkpOworCQlicmVhazsKKwljYXNlICdOJzoKKyNpZmRlZiBFWFQyX05PXzY0X1RZUEUKKwkJZnByaW50ZihmLCAiJSp1Iiwgd2lkdGgsIGN0eC0+bnVtKTsKKyNlbHNlCisJCWZwcmludGYoZiwgIiUqbGx1Iiwgd2lkdGgsIChsb25nIGxvbmcpY3R4LT5udW0pOworI2VuZGlmCisJCWJyZWFrOworCWNhc2UgJ3AnOgorCQlwcmludF9wYXRobmFtZShmLCBmcywgY3R4LT5pbm8sIDApOworCQlicmVhazsKKwljYXNlICdQJzoKKwkJcHJpbnRfcGF0aG5hbWUoZiwgZnMsIGN0eC0+aW5vMiwKKwkJCSAgICAgICBjdHgtPmRpcmVudCA/IGN0eC0+ZGlyZW50LT5pbm9kZSA6IDApOworCQlicmVhazsKKwljYXNlICdxJzoKKwkJcHJpbnRfcGF0aG5hbWUoZiwgZnMsIGN0eC0+ZGlyLCAwKTsKKwkJYnJlYWs7CisJY2FzZSAnUSc6CisJCXByaW50X3BhdGhuYW1lKGYsIGZzLCBjdHgtPmRpciwgY3R4LT5pbm8pOworCQlicmVhazsKKwljYXNlICdyJzoKKyNpZmRlZiBFWFQyX05PXzY0X1RZUEUKKwkJZnByaW50ZihmLCAiJSpkIiwgd2lkdGgsIGN0eC0+YmxrY291bnQpOworI2Vsc2UKKwkJZnByaW50ZihmLCAiJSpsbGQiLCB3aWR0aCwgKGxvbmcgbG9uZykgY3R4LT5ibGtjb3VudCk7CisjZW5kaWYKKwkJYnJlYWs7CisJY2FzZSAnUyc6CisJCWZwcmludGYoZiwgIiVsbHUiLCBnZXRfYmFja3VwX3NiKE5VTEwsIGZzLCBOVUxMLCBOVUxMKSk7CisJCWJyZWFrOworCWNhc2UgJ3MnOgorCQlmcHJpbnRmKGYsICIlKnMiLCB3aWR0aCwgY3R4LT5zdHIgPyBjdHgtPnN0ciA6ICJOVUxMIik7CisJCWJyZWFrOworCWNhc2UgJ3QnOgorCQlwcmludF90aW1lKGYsICh0aW1lX3QpIGN0eC0+bnVtKTsKKwkJYnJlYWs7CisJY2FzZSAnVCc6CisJCXByaW50X3RpbWUoZiwgZTJmc2NrX2N0eCA/IGUyZnNja19jdHgtPm5vdyA6IHRpbWUoMCkpOworCQlicmVhazsKKwljYXNlICd4JzoKKwkJZnByaW50ZihmLCAiMHglMCp4Iiwgd2lkdGgsIGN0eC0+Y3N1bTEpOworCQlicmVhazsKKwljYXNlICdYJzoKKyNpZmRlZiBFWFQyX05PXzY0X1RZUEUKKwkJZnByaW50ZihmLCAiMHglMCp4Iiwgd2lkdGgsIGN0eC0+bnVtKTsKKyNlbHNlCisJCWZwcmludGYoZiwgIjB4JTAqbGx4Iiwgd2lkdGgsIChsb25nIGxvbmcpY3R4LT5udW0pOworI2VuZGlmCisJCWJyZWFrOworCWNhc2UgJ3knOgorCQlmcHJpbnRmKGYsICIweCUwKngiLCB3aWR0aCwgY3R4LT5jc3VtMik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJbm9fY29udGV4dDoKKwkJZnByaW50ZihmLCAiJSUlYyIsIGNoKTsKKwkJYnJlYWs7CisJfQorfQorCit2b2lkIHByaW50X2UyZnNja19tZXNzYWdlKEZJTEUgKmYsIGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqbXNnLAorCQkJICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4LCBpbnQgZmlyc3QsCisJCQkgIGludCByZWN1cnNlKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwljb25zdCBjaGFyICoJY3A7CisJaW50CQlpLCB3aWR0aDsKKworCWUyZnNja19jbGVhcl9wcm9nYmFyKGN0eCk7CisJZm9yIChjcCA9IG1zZzsgKmNwOyBjcCsrKSB7CisJCWlmIChjcFswXSA9PSAnQCcpIHsKKwkJCWNwKys7CisJCQlleHBhbmRfYXRfZXhwcmVzc2lvbihmLCBjdHgsICpjcCwgcGN0eCwgJmZpcnN0LAorCQkJCQkgICAgIHJlY3Vyc2UpOworCQl9IGVsc2UgaWYgKGNwWzBdID09ICclJykgeworCQkJY3ArKzsKKwkJCXdpZHRoID0gMDsKKwkJCXdoaWxlIChpc2RpZ2l0KGNwWzBdKSkgeworCQkJCXdpZHRoID0gKHdpZHRoICogMTApICsgY3BbMF0gLSAnMCc7CisJCQkJY3ArKzsKKwkJCX0KKwkJCWlmIChjcFswXSA9PSAnSScpIHsKKwkJCQljcCsrOworCQkJCWV4cGFuZF9pbm9kZV9leHByZXNzaW9uKGYsIGZzLCAqY3AsIHBjdHgpOworCQkJfSBlbHNlIGlmIChjcFswXSA9PSAnRCcpIHsKKwkJCQljcCsrOworCQkJCWV4cGFuZF9kaXJlbnRfZXhwcmVzc2lvbihmLCBmcywgKmNwLCBwY3R4KTsKKwkJCX0gZWxzZSB7CisJCQkJZXhwYW5kX3BlcmNlbnRfZXhwcmVzc2lvbihmLCBmcywgKmNwLCB3aWR0aCwKKwkJCQkJCQkgICZmaXJzdCwgcGN0eCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlmb3IgKGk9MDsgY3BbaV07IGkrKykKKwkJCQlpZiAoKGNwW2ldID09ICdAJykgfHwgY3BbaV0gPT0gJyUnKQorCQkJCQlicmVhazsKKwkJCWZwcmludGYoZiwgIiUuKnMiLCBpLCBjcCk7CisJCQljcCArPSBpLTE7CisJCX0KKwkJZmlyc3QgPSAwOworCX0KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svbXRyYWNlLmF3ayBiL2UyZnNwcm9ncy9lMmZzY2svbXRyYWNlLmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTk2YjhhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9tdHJhY2UuYXdrCkBAIC0wLDAgKzEsMzcgQEAKKyMhL3Vzci9iaW4vYXdrIC1mCisjCisjICBBd2sgcHJvZ3JhbSB0byBhbmFseXplIG10cmFjZS5jIG91dHB1dC4KKyMKKyQxID09ICIrIgl7IGlmIChhbGxvY2F0ZWRbJDJdICE9ICIiKQorCQkgICAgcHJpbnQgIisiLCAkMiwgIkFsbG9jIiwgTlIsICJkdXBsaWNhdGU6IiwgYWxsb2NhdGVkWyQyXTsKKwkJICBlbHNlCisJCSAgICBhbGxvY2F0ZWRbJDJdID0gJDM7CisJCX0KKyQxID09ICItIgl7IGlmIChhbGxvY2F0ZWRbJDJdICE9ICIiKSB7CisJCSAgICBhbGxvY2F0ZWRbJDJdID0gIiI7CisJCSAgICBpZiAoYWxsb2NhdGVkWyQyXSAhPSAiIikKKwkJCXByaW50ICJERUxFVEUgRkFJTEVEIiwgJDIsIGFsbG9jYXRlZFskMl07CisJCSAgfSBlbHNlCisJCSAgICBwcmludCAiLSIsICQyLCAiRnJlZSIsIE5SLCAid2FzIG5ldmVyIGFsbG9jJ2QiOworCQl9CiskMSA9PSAiPCIJeyBpZiAoYWxsb2NhdGVkWyQyXSAhPSAiIikKKwkJICAgIGFsbG9jYXRlZFskMl0gPSAiIjsKKwkJICBlbHNlCisJCSAgICBwcmludCAiLSIsICQyLCAiUmVhbGxvYyIsIE5SLCAid2FzIG5ldmVyIGFsbG9jJ2QiOworCQl9CiskMSA9PSAiPiIJeyBpZiAoYWxsb2NhdGVkWyQyXSAhPSAiIikKKwkJICAgIHByaW50ICIrIiwgJDIsICJSZWFsbG9jIiwgTlIsICJkdXBsaWNhdGU6IiwgYWxsb2NhdGVkWyQyXTsKKwkJICBlbHNlCisJCSAgICBhbGxvY2F0ZWRbJDJdID0gJDM7CisJCX0KKworIyBJZ25vcmUgIj0gU3RhcnQiCiskMSA9PSAiPSIJeyB9CisjIElnbm9yZSBmYWlsZWQgcmVhbGxvYyBhdHRlbXB0cyBmb3Igbm93CiskMSA9PSAiISIJeyB9CisKKworRU5ECQl7IGZvciAoeCBpbiBhbGxvY2F0ZWQpIAorCQkgICAgaWYgKGFsbG9jYXRlZFt4XSAhPSAiIikKKwkJICAgICAgcHJpbnQgIisiLCB4LCBhbGxvY2F0ZWRbeF07CisJCX0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svbXRyYWNlLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL210cmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiN2IzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL210cmFjZS5jCkBAIC0wLDAgKzEsMTYwIEBACisvKiBNb3JlIGRlYnVnZ2luZyBob29rcyBmb3IgYG1hbGxvYycuCisgICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisJCSBXcml0dGVuIEFwcmlsIDIsIDE5OTEgYnkgSm9obiBHaWxtb3JlIG9mIEN5Z251cyBTdXBwb3J0LgorCQkgQmFzZWQgb24gbWNoZWNrLmMgYnkgTWlrZSBIYWVydGVsLgorCitUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCittb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCitwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKK0xpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCitMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmCitub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwKK0NhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworICAgVGhlIGF1dGhvciBtYXkgYmUgcmVhY2hlZCAoRW1haWwpIGF0IHRoZSBhZGRyZXNzIG1pa2VAYWkubWl0LmVkdSwKKyAgIG9yIChVUyBtYWlsKSBhcyBNaWtlIEhhZXJ0ZWwgYy9vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmbmRlZglfTUFMTE9DX0lOVEVSTkFMCisjZGVmaW5lCV9NQUxMT0NfSU5URVJOQUwKKyNpbmNsdWRlICIuL210cmFjZS5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZuZGVmCV9fR05VX0xJQlJBUllfXworZXh0ZXJuIGNoYXIgKmdldGVudiAoKTsKKyNlbHNlCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworc3RhdGljIEZJTEUgKm1hbGxzdHJlYW07CitzdGF0aWMgY2hhciBtYWxsZW52W109ICJNQUxMT0NfVFJBQ0UiOworc3RhdGljIGNoYXIgbWFsbGJ1ZltCVUZTSVpdOwkvKiBCdWZmZXIgZm9yIHRoZSBvdXRwdXQuICAqLworCisvKiBBZGRyZXNzIHRvIGJyZWFrcG9pbnQgb24gYWNjZXNzZXMgdG8uLi4gKi8KK19fcHRyX3QgbWFsbHdhdGNoOworCisvKiBPbGQgaG9vayB2YWx1ZXMuICAqLworc3RhdGljIHZvaWQgKCp0cl9vbGRfZnJlZV9ob29rKSBfX1AgKChfX3B0cl90IHB0cikpOworc3RhdGljIF9fcHRyX3QgKCp0cl9vbGRfbWFsbG9jX2hvb2spIF9fUCAoKHNpemVfdCBzaXplKSk7CitzdGF0aWMgX19wdHJfdCAoKnRyX29sZF9yZWFsbG9jX2hvb2spIF9fUCAoKF9fcHRyX3QgcHRyLCBzaXplX3Qgc2l6ZSkpOworCisvKgorICogQWRkZWQgYnkgVFlULCAxMC8xMC85MyAtLS0gc28gdGhhdCB3ZSBjYW4gcHJpbnQKKyAqLworRklMRSAqbWFsbG9jX2dldF9tYWxsc3RyZWFtKCkKK3sKKwlyZXR1cm4gbWFsbHN0cmVhbTsKK30KKworLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgYmxvY2sgYmVpbmcgYWxsb2MnZCwgcmVhbGxvYydkLCBvcgorICAgZnJlZWQgaGFzIGFuIGFkZHJlc3MgbWF0Y2hpbmcgdGhlIHZhcmlhYmxlICJtYWxsd2F0Y2giLiAgSW4gYSBkZWJ1Z2dlciwKKyAgIHNldCAibWFsbHdhdGNoIiB0byB0aGUgYWRkcmVzcyBvZiBpbnRlcmVzdCwgdGhlbiBwdXQgYSBicmVha3BvaW50IG9uCisgICB0cl9icmVhay4gICovCisKK3ZvaWQgdHJfYnJlYWsgX19QICgodm9pZCkpOwordm9pZAordHJfYnJlYWsgKCkKK3sKK30KKworc3RhdGljIHZvaWQgdHJfZnJlZWhvb2sgX19QICgoX19wdHJfdCkpOworc3RhdGljIHZvaWQKK3RyX2ZyZWVob29rIChwdHIpCisgICAgIF9fcHRyX3QgcHRyOworeworICBmcHJpbnRmIChtYWxsc3RyZWFtLCAiLSAlcFxuIiwgcHRyKTsJLyogQmUgc3VyZSB0byBwcmludCBpdCBmaXJzdC4gICovCisgIGlmIChwdHIgPT0gbWFsbHdhdGNoKQorICAgIHRyX2JyZWFrICgpOworICBfX2ZyZWVfaG9vayA9IHRyX29sZF9mcmVlX2hvb2s7CisgIGZyZWUgKHB0cik7CisgIF9fZnJlZV9ob29rID0gdHJfZnJlZWhvb2s7Cit9CisKK3N0YXRpYyBfX3B0cl90IHRyX21hbGxvY2hvb2sgX19QICgoc2l6ZV90KSk7CitzdGF0aWMgX19wdHJfdAordHJfbWFsbG9jaG9vayAoc2l6ZSkKKyAgICAgc2l6ZV90IHNpemU7Cit7CisgIF9fcHRyX3QgaGRyOworCisgIF9fbWFsbG9jX2hvb2sgPSB0cl9vbGRfbWFsbG9jX2hvb2s7CisgIGhkciA9IChfX3B0cl90KSBtYWxsb2MgKHNpemUpOworICBfX21hbGxvY19ob29rID0gdHJfbWFsbG9jaG9vazsKKworICAvKiBXZSBjb3VsZCBiZSBwcmludGluZyBhIE5VTEwgaGVyZTsgdGhhdCdzIE9LLiAgKi8KKyAgZnByaW50ZiAobWFsbHN0cmVhbSwgIisgJXAgJWRcbiIsIGhkciwgc2l6ZSk7CisKKyAgaWYgKGhkciA9PSBtYWxsd2F0Y2gpCisgICAgdHJfYnJlYWsgKCk7CisKKyAgcmV0dXJuIGhkcjsKK30KKworc3RhdGljIF9fcHRyX3QgdHJfcmVhbGxvY2hvb2sgX19QICgoX19wdHJfdCwgc2l6ZV90KSk7CitzdGF0aWMgX19wdHJfdAordHJfcmVhbGxvY2hvb2sgKHB0ciwgc2l6ZSkKKyAgICAgX19wdHJfdCBwdHI7CisgICAgIHNpemVfdCBzaXplOworeworICBfX3B0cl90IGhkcjsKKworICBpZiAocHRyID09IG1hbGx3YXRjaCkKKyAgICB0cl9icmVhayAoKTsKKworICBfX2ZyZWVfaG9vayA9IHRyX29sZF9mcmVlX2hvb2s7CisgIF9fbWFsbG9jX2hvb2sgPSB0cl9vbGRfbWFsbG9jX2hvb2s7CisgIF9fcmVhbGxvY19ob29rID0gdHJfb2xkX3JlYWxsb2NfaG9vazsKKyAgaGRyID0gKF9fcHRyX3QpIHJlYWxsb2MgKHB0ciwgc2l6ZSk7CisgIF9fZnJlZV9ob29rID0gdHJfZnJlZWhvb2s7CisgIF9fbWFsbG9jX2hvb2sgPSB0cl9tYWxsb2Nob29rOworICBfX3JlYWxsb2NfaG9vayA9IHRyX3JlYWxsb2Nob29rOworICBpZiAoaGRyID09IE5VTEwpCisgICAgLyogRmFpbGVkIHJlYWxsb2MuICAqLworICAgIGZwcmludGYgKG1hbGxzdHJlYW0sICIhICVwICVkXG4iLCBwdHIsIHNpemUpOworICBlbHNlCisgICAgZnByaW50ZiAobWFsbHN0cmVhbSwgIjwgJXBcbj4gJXAgJWRcbiIsIHB0ciwgaGRyLCBzaXplKTsKKworICBpZiAoaGRyID09IG1hbGx3YXRjaCkKKyAgICB0cl9icmVhayAoKTsKKworICByZXR1cm4gaGRyOworfQorCisvKiBXZSBlbmFibGUgdHJhY2luZyBpZiBlaXRoZXIgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1BTExPQ19UUkFDRQorICAgaXMgc2V0LCBvciBpZiB0aGUgdmFyaWFibGUgbWFsbHdhdGNoIGhhcyBiZWVuIHBhdGNoZWQgdG8gYW4gYWRkcmVzcworICAgdGhhdCB0aGUgZGVidWdnaW5nIHVzZXIgd2FudHMgdXMgdG8gc3RvcCBvbi4gIFdoZW4gcGF0Y2hpbmcgbWFsbHdhdGNoLAorICAgZG9uJ3QgZm9yZ2V0IHRvIHNldCBhIGJyZWFrcG9pbnQgb24gdHJfYnJlYWshICAqLworCit2b2lkCittdHJhY2UgKCkKK3sKKyAgY2hhciAqbWFsbGZpbGU7CisKKyAgbWFsbGZpbGUgPSBnZXRlbnYgKG1hbGxlbnYpOworICBpZiAobWFsbGZpbGUgIT0gTlVMTCB8fCBtYWxsd2F0Y2ggIT0gTlVMTCkKKyAgICB7CisgICAgICBtYWxsc3RyZWFtID0gZm9wZW4gKG1hbGxmaWxlICE9IE5VTEwgPyBtYWxsZmlsZSA6ICIvZGV2L251bGwiLCAidyIpOworICAgICAgaWYgKG1hbGxzdHJlYW0gIT0gTlVMTCkKKwl7CisJICAvKiBCZSBzdXJlIGl0IGRvZXNuJ3QgbWFsbG9jIGl0cyBidWZmZXIhICAqLworCSAgc2V0YnVmIChtYWxsc3RyZWFtLCBtYWxsYnVmKTsKKwkgIGZwcmludGYgKG1hbGxzdHJlYW0sICI9IFN0YXJ0XG4iKTsKKwkgIHRyX29sZF9mcmVlX2hvb2sgPSBfX2ZyZWVfaG9vazsKKwkgIF9fZnJlZV9ob29rID0gdHJfZnJlZWhvb2s7CisJICB0cl9vbGRfbWFsbG9jX2hvb2sgPSBfX21hbGxvY19ob29rOworCSAgX19tYWxsb2NfaG9vayA9IHRyX21hbGxvY2hvb2s7CisJICB0cl9vbGRfcmVhbGxvY19ob29rID0gX19yZWFsbG9jX2hvb2s7CisJICBfX3JlYWxsb2NfaG9vayA9IHRyX3JlYWxsb2Nob29rOworCX0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL210cmFjZS5oIGIvZTJmc3Byb2dzL2UyZnNjay9tdHJhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWQyMGViCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9tdHJhY2UuaApAQCAtMCwwICsxLDIzMSBAQAorLyogRGVjbGFyYXRpb25zIGZvciBgbWFsbG9jJyBhbmQgZnJpZW5kcy4KKyAgIENvcHlyaWdodCAxOTkwLCAxOTkxLCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCQkgIFdyaXR0ZW4gTWF5IDE5ODkgYnkgTWlrZSBIYWVydGVsLgorCitUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCittb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCitwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUKK0xpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK1RoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCitMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmCitub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwKK0NhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworICAgVGhlIGF1dGhvciBtYXkgYmUgcmVhY2hlZCAoRW1haWwpIGF0IHRoZSBhZGRyZXNzIG1pa2VAYWkubWl0LmVkdSwKKyAgIG9yIChVUyBtYWlsKSBhcyBNaWtlIEhhZXJ0ZWwgYy9vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICovCisKKyNpZm5kZWYgX01UUkFDRV9ICisKKyNkZWZpbmUgX01UUkFDRV9ICTEKKworI2lmZGVmCV9fY3BsdXNwbHVzCitleHRlcm4gIkMiCit7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9fY3BsdXNwbHVzKSB8fCAoZGVmaW5lZCAoX19TVERDX18pICYmIF9fU1REQ19fKQorI3VuZGVmCV9fUAorI2RlZmluZQlfX1AoYXJncykJYXJncworI3VuZGVmCV9fcHRyX3QKKyNkZWZpbmUJX19wdHJfdAkJdm9pZCAqCisjZWxzZSAvKiBOb3QgQysrIG9yIEFOU0kgQy4gICovCisjdW5kZWYJX19QCisjZGVmaW5lCV9fUChhcmdzKQkoKQorI3VuZGVmCWNvbnN0CisjZGVmaW5lCWNvbnN0CisjdW5kZWYJX19wdHJfdAorI2RlZmluZQlfX3B0cl90CQljaGFyICoKKyNlbmRpZiAvKiBDKysgb3IgQU5TSSBDLiAgKi8KKworI2lmbmRlZglOVUxMCisjZGVmaW5lCU5VTEwJMAorI2VuZGlmCisKKyNpZmRlZglfX1NURENfXworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyN1bmRlZglzaXplX3QKKyNkZWZpbmUJc2l6ZV90CQl1bnNpZ25lZCBpbnQKKyN1bmRlZglwdHJkaWZmX3QKKyNkZWZpbmUJcHRyZGlmZl90CWludAorI2VuZGlmCisKKworLyogQWxsb2NhdGUgU0laRSBieXRlcyBvZiBtZW1vcnkuICAqLworZXh0ZXJuIF9fcHRyX3QgbWFsbG9jIF9fUCAoKHNpemVfdCBfX3NpemUpKTsKKy8qIFJlLWFsbG9jYXRlIHRoZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBibG9jaworICAgaW4gX19wdHJfdCwgbWFraW5nIHRoZSBuZXcgYmxvY2sgU0laRSBieXRlcyBsb25nLiAgKi8KK2V4dGVybiBfX3B0cl90IHJlYWxsb2MgX19QICgoX19wdHJfdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkpOworLyogQWxsb2NhdGUgTk1FTUIgZWxlbWVudHMgb2YgU0laRSBieXRlcyBlYWNoLCBhbGwgaW5pdGlhbGl6ZWQgdG8gMC4gICovCitleHRlcm4gX19wdHJfdCBjYWxsb2MgX19QICgoc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpKTsKKy8qIEZyZWUgYSBibG9jayBhbGxvY2F0ZWQgYnkgYG1hbGxvYycsIGByZWFsbG9jJyBvciBgY2FsbG9jJy4gICovCitleHRlcm4gdm9pZCBmcmVlIF9fUCAoKF9fcHRyX3QgX19wdHIpKTsKKworLyogQWxsb2NhdGUgU0laRSBieXRlcyBhbGxvY2F0ZWQgdG8gQUxJR05NRU5UIGJ5dGVzLiAgKi8KK2V4dGVybiBfX3B0cl90IG1lbWFsaWduIF9fUCAoKHNpemVfdCBfX2FsaWdubWVudCwgc2l6ZV90IF9fc2l6ZSkpOworCisvKiBBbGxvY2F0ZSBTSVpFIGJ5dGVzIG9uIGEgcGFnZSBib3VuZGFyeS4gICovCitleHRlcm4gX19wdHJfdCB2YWxsb2MgX19QICgoc2l6ZV90IF9fc2l6ZSkpOworCisKKyNpZmRlZiBfTUFMTE9DX0lOVEVSTkFMCisKKyNpbmNsdWRlIDxzdGRpby5oPgkJLyogSGFybWxlc3MsIGdldHMgX19HTlVfTElCUkFSWV9fIGRlZmluZWQuICAqLworCisjaWYJZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pIHx8IGRlZmluZWQoU1REQ19IRUFERVJTKSB8fCBkZWZpbmVkKFVTRykKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaWZuZGVmIG1lbXNldAorI2RlZmluZQltZW1zZXQocywgemVybywgbikJYnplcm8gKChzKSwgKG4pKQorI2VuZGlmCisjaWZuZGVmIG1lbWNweQorI2RlZmluZQltZW1jcHkoZCwgcywgbikJCWJjb3B5ICgocyksIChkKSwgKG4pKQorI2VuZGlmCisjZW5kaWYKKworCisjaWYJZGVmaW5lZChfX0dOVV9MSUJSQVJZX18pIHx8IGRlZmluZWQoX19TVERDX18pCisjaW5jbHVkZSA8bGltaXRzLmg+CisjZWxzZQorI2RlZmluZQlDSEFSX0JJVAk4CisjZW5kaWYKKworLyogVGhlIGFsbG9jYXRvciBkaXZpZGVzIHRoZSBoZWFwIGludG8gYmxvY2tzIG9mIGZpeGVkIHNpemU7IGxhcmdlCisgICByZXF1ZXN0cyByZWNlaXZlIG9uZSBvciBtb3JlIHdob2xlIGJsb2NrcywgYW5kIHNtYWxsIHJlcXVlc3RzCisgICByZWNlaXZlIGEgZnJhZ21lbnQgb2YgYSBibG9jay4gIEZyYWdtZW50IHNpemVzIGFyZSBwb3dlcnMgb2YgdHdvLAorICAgYW5kIGFsbCBmcmFnbWVudHMgb2YgYSBibG9jayBhcmUgdGhlIHNhbWUgc2l6ZS4gIFdoZW4gYWxsIHRoZQorICAgZnJhZ21lbnRzIGluIGEgYmxvY2sgaGF2ZSBiZWVuIGZyZWVkLCB0aGUgYmxvY2sgaXRzZWxmIGlzIGZyZWVkLiAgKi8KKyNkZWZpbmUgSU5UX0JJVAkJKENIQVJfQklUICogc2l6ZW9mKGludCkpCisjZGVmaW5lIEJMT0NLTE9HCShJTlRfQklUID4gMTYgPyAxMiA6IDkpCisjZGVmaW5lIEJMT0NLU0laRQkoMSA8PCBCTE9DS0xPRykKKyNkZWZpbmUgQkxPQ0tJRlkoU0laRSkJKCgoU0laRSkgKyBCTE9DS1NJWkUgLSAxKSAvIEJMT0NLU0laRSkKKworLyogRGV0ZXJtaW5lIHRoZSBhbW91bnQgb2YgbWVtb3J5IHNwYW5uZWQgYnkgdGhlIGluaXRpYWwgaGVhcCB0YWJsZQorICAgKG5vdCBhbiBhYnNvbHV0ZSBsaW1pdCkuICAqLworI2RlZmluZSBIRUFQCQkoSU5UX0JJVCA+IDE2ID8gNDE5NDMwNCA6IDY1NTM2KQorCisvKiBOdW1iZXIgb2YgY29udGlndW91cyBmcmVlIGJsb2NrcyBhbGxvd2VkIHRvIGJ1aWxkIHVwIGF0IHRoZSBlbmQgb2YKKyAgIG1lbW9yeSBiZWZvcmUgdGhleSB3aWxsIGJlIHJldHVybmVkIHRvIHRoZSBzeXN0ZW0uICAqLworI2RlZmluZSBGSU5BTF9GUkVFX0JMT0NLUwk4CisKKy8qIERhdGEgc3RydWN0dXJlIGdpdmluZyBwZXItYmxvY2sgaW5mb3JtYXRpb24uICAqLwordHlwZWRlZiB1bmlvbgorICB7CisgICAgLyogSGVhcCBpbmZvcm1hdGlvbiBmb3IgYSBidXN5IGJsb2NrLiAgKi8KKyAgICBzdHJ1Y3QKKyAgICAgIHsKKwkvKiBaZXJvIGZvciBhIGxhcmdlIGJsb2NrLCBvciBwb3NpdGl2ZSBnaXZpbmcgdGhlCisJICAgbG9nYXJpdGhtIHRvIHRoZSBiYXNlIHR3byBvZiB0aGUgZnJhZ21lbnQgc2l6ZS4gICovCisJaW50IHR5cGU7CisJdW5pb24KKwkgIHsKKwkgICAgc3RydWN0CisJICAgICAgeworCQlzaXplX3QgbmZyZWU7CS8qIEZyZWUgZnJhZ21lbnRzIGluIGEgZnJhZ21lbnRlZCBibG9jay4gICovCisJCXNpemVfdCBmaXJzdDsJLyogRmlyc3QgZnJlZSBmcmFnbWVudCBvZiB0aGUgYmxvY2suICAqLworCSAgICAgIH0gZnJhZzsKKwkgICAgLyogU2l6ZSAoaW4gYmxvY2tzKSBvZiBhIGxhcmdlIGNsdXN0ZXIuICAqLworCSAgICBzaXplX3Qgc2l6ZTsKKwkgIH0gaW5mbzsKKyAgICAgIH0gYnVzeTsKKyAgICAvKiBIZWFwIGluZm9ybWF0aW9uIGZvciBhIGZyZWUgYmxvY2sKKyAgICAgICAodGhhdCBtYXkgYmUgdGhlIGZpcnN0IG9mIGEgZnJlZSBjbHVzdGVyKS4gICovCisgICAgc3RydWN0CisgICAgICB7CisJc2l6ZV90IHNpemU7CQkvKiBTaXplIChpbiBibG9ja3MpIG9mIGEgZnJlZSBjbHVzdGVyLiAgKi8KKwlzaXplX3QgbmV4dDsJCS8qIEluZGV4IG9mIG5leHQgZnJlZSBjbHVzdGVyLiAgKi8KKwlzaXplX3QgcHJldjsJCS8qIEluZGV4IG9mIHByZXZpb3VzIGZyZWUgY2x1c3Rlci4gICovCisgICAgICB9IGZyZWU7CisgIH0gbWFsbG9jX2luZm87CisKKy8qIFBvaW50ZXIgdG8gZmlyc3QgYmxvY2sgb2YgdGhlIGhlYXAuICAqLworZXh0ZXJuIGNoYXIgKl9oZWFwYmFzZTsKKworLyogVGFibGUgaW5kZXhlZCBieSBibG9jayBudW1iZXIgZ2l2aW5nIHBlci1ibG9jayBpbmZvcm1hdGlvbi4gICovCitleHRlcm4gbWFsbG9jX2luZm8gKl9oZWFwaW5mbzsKKworLyogQWRkcmVzcyB0byBibG9jayBudW1iZXIgYW5kIHZpY2UgdmVyc2EuICAqLworI2RlZmluZSBCTE9DSyhBKQkoKChjaGFyICopIChBKSAtIF9oZWFwYmFzZSkgLyBCTE9DS1NJWkUgKyAxKQorI2RlZmluZSBBRERSRVNTKEIpCSgoX19wdHJfdCkgKCgoQikgLSAxKSAqIEJMT0NLU0laRSArIF9oZWFwYmFzZSkpCisKKy8qIEN1cnJlbnQgc2VhcmNoIGluZGV4IGZvciB0aGUgaGVhcCB0YWJsZS4gICovCitleHRlcm4gc2l6ZV90IF9oZWFwaW5kZXg7CisKKy8qIExpbWl0IG9mIHZhbGlkIGluZm8gdGFibGUgaW5kaWNlcy4gICovCitleHRlcm4gc2l6ZV90IF9oZWFwbGltaXQ7CisKKy8qIERvdWJseSBsaW5rZWQgbGlzdHMgb2YgZnJlZSBmcmFnbWVudHMuICAqLworc3RydWN0IGxpc3QKKyAgeworICAgIHN0cnVjdCBsaXN0ICpuZXh0OworICAgIHN0cnVjdCBsaXN0ICpwcmV2OworICB9OworCisvKiBGcmVlIGxpc3QgaGVhZGVycyBmb3IgZWFjaCBmcmFnbWVudCBzaXplLiAgKi8KK2V4dGVybiBzdHJ1Y3QgbGlzdCBfZnJhZ2hlYWRbXTsKKworLyogTGlzdCBvZiBibG9ja3MgYWxsb2NhdGVkIHdpdGggYG1lbWFsaWduJyAob3IgYHZhbGxvYycpLiAgKi8KK3N0cnVjdCBhbGlnbmxpc3QKKyAgeworICAgIHN0cnVjdCBhbGlnbmxpc3QgKm5leHQ7CisgICAgX19wdHJfdCBhbGlnbmVkOwkJLyogVGhlIGFkZHJlc3MgdGhhdCBtZW1hbGlnbmVkIHJldHVybmVkLiAgKi8KKyAgICBfX3B0cl90IGV4YWN0OwkJLyogVGhlIGFkZHJlc3MgdGhhdCBtYWxsb2MgcmV0dXJuZWQuICAqLworICB9OworZXh0ZXJuIHN0cnVjdCBhbGlnbmxpc3QgKl9hbGlnbmVkX2Jsb2NrczsKKworLyogSW5zdHJ1bWVudGF0aW9uLiAgKi8KK2V4dGVybiBzaXplX3QgX2NodW5rc191c2VkOworZXh0ZXJuIHNpemVfdCBfYnl0ZXNfdXNlZDsKK2V4dGVybiBzaXplX3QgX2NodW5rc19mcmVlOworZXh0ZXJuIHNpemVfdCBfYnl0ZXNfZnJlZTsKKworLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBgZnJlZScgdXNlZCBpbiBgbW9yZWNvcmUnIChtYWxsb2MuYykuICovCitleHRlcm4gdm9pZCBfZnJlZV9pbnRlcm5hbCBfX1AgKChfX3B0cl90IF9fcHRyKSk7CisKKyNlbmRpZiAvKiBfTUFMTE9DX0lOVEVSTkFMLiAgKi8KKworLyogVW5kZXJseWluZyBhbGxvY2F0aW9uIGZ1bmN0aW9uOyBzdWNjZXNzaXZlIGNhbGxzIHNob3VsZAorICAgcmV0dXJuIGNvbnRpZ3VvdXMgcGllY2VzIG9mIG1lbW9yeS4gICovCitleHRlcm4gX19wdHJfdCAoKl9fbW9yZWNvcmUpIF9fUCAoKHB0cmRpZmZfdCBfX3NpemUpKTsKKworLyogRGVmYXVsdCB2YWx1ZSBvZiBgX19tb3JlY29yZScuICAqLworZXh0ZXJuIF9fcHRyX3QgX19kZWZhdWx0X21vcmVjb3JlIF9fUCAoKHB0cmRpZmZfdCBfX3NpemUpKTsKKworLyogTm9uemVybyBpZiBgbWFsbG9jJyBoYXMgYmVlbiBjYWxsZWQgYW5kIGRvbmUgaXRzIGluaXRpYWxpemF0aW9uLiAgKi8KK2V4dGVybiBpbnQgX19tYWxsb2NfaW5pdGlhbGl6ZWQ7CisKKy8qIEhvb2tzIGZvciBkZWJ1Z2dpbmcgdmVyc2lvbnMuICAqLworZXh0ZXJuIHZvaWQgKCpfX2ZyZWVfaG9vaykgX19QICgoX19wdHJfdCBfX3B0cikpOworZXh0ZXJuIF9fcHRyX3QgKCpfX21hbGxvY19ob29rKSBfX1AgKChzaXplX3QgX19zaXplKSk7CitleHRlcm4gX19wdHJfdCAoKl9fcmVhbGxvY19ob29rKSBfX1AgKChfX3B0cl90IF9fcHRyLCBzaXplX3QgX19zaXplKSk7CisKKy8qIEFjdGl2YXRlIGEgc3RhbmRhcmQgY29sbGVjdGlvbiBvZiBkZWJ1Z2dpbmcgaG9va3MuICAqLworZXh0ZXJuIHZvaWQgbWNoZWNrIF9fUCAoKHZvaWQgKCpfX2Z1bmMpIF9fUCAoKHZvaWQpKSkpOworCisvKiBBY3RpdmF0ZSBhIHN0YW5kYXJkIGNvbGxlY3Rpb24gb2YgdHJhY2luZyBob29rcy4gICovCitleHRlcm4gdm9pZCBtdHJhY2UgX19QICgodm9pZCkpOworCisvKiBTdGF0aXN0aWNzIGF2YWlsYWJsZSB0byB0aGUgdXNlci4gICovCitzdHJ1Y3QgbXN0YXRzCisgIHsKKyAgICBzaXplX3QgYnl0ZXNfdG90YWw7CQkvKiBUb3RhbCBzaXplIG9mIHRoZSBoZWFwLiAqLworICAgIHNpemVfdCBjaHVua3NfdXNlZDsJCS8qIENodW5rcyBhbGxvY2F0ZWQgYnkgdGhlIHVzZXIuICovCisgICAgc2l6ZV90IGJ5dGVzX3VzZWQ7CQkvKiBCeXRlIHRvdGFsIG9mIHVzZXItYWxsb2NhdGVkIGNodW5rcy4gKi8KKyAgICBzaXplX3QgY2h1bmtzX2ZyZWU7CQkvKiBDaHVua3MgaW4gdGhlIGZyZWUgbGlzdC4gKi8KKyAgICBzaXplX3QgYnl0ZXNfZnJlZTsJCS8qIEJ5dGUgdG90YWwgb2YgY2h1bmtzIGluIHRoZSBmcmVlIGxpc3QuICovCisgIH07CisKKy8qIFBpY2sgdXAgdGhlIGN1cnJlbnQgc3RhdGlzdGljcy4gKi8KK2V4dGVybiBzdHJ1Y3QgbXN0YXRzIG1zdGF0cyBfX1AgKCh2b2lkKSk7CisKKyNpZmRlZglfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBtdHJhY2UuaCAgKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcGFzczEuYyBiL2UyZnNwcm9ncy9lMmZzY2svcGFzczEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzRkNTU0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9wYXNzMS5jCkBAIC0wLDAgKzEsNDEwNiBAQAorLyoKKyAqIHBhc3MxLmMgLS0gcGFzcyAjMSBvZiBlMmZzY2s6IHNlcXVlbnRpYWwgc2NhbiBvZiB0aGUgaW5vZGUgdGFibGUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICoKKyAqIFBhc3MgMSBvZiBlMmZzY2sgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIGlub2RlcyBpbiB0aGUgZmlsZXN5c3RlbXMsCisgKiBhbmQgYXBwbGllcyB0aGUgZm9sbG93aW5nIHRlc3RzIHRvIGVhY2ggaW5vZGU6CisgKgorICogCS0gVGhlIG1vZGUgZmllbGQgb2YgdGhlIGlub2RlIG11c3QgYmUgbGVnYWwuCisgKiAJLSBUaGUgc2l6ZSBhbmQgYmxvY2sgY291bnQgZmllbGRzIG9mIHRoZSBpbm9kZSBhcmUgY29ycmVjdC4KKyAqIAktIEEgZGF0YSBibG9jayBtdXN0IG5vdCBiZSB1c2VkIGJ5IGFub3RoZXIgaW5vZGUKKyAqCisgKiBQYXNzIDEgYWxzbyBnYXRoZXJzIHRoZSBjb2xsZWN0cyB0aGUgZm9sbG93aW5nIGluZm9ybWF0aW9uOgorICoKKyAqIAktIEEgYml0bWFwIG9mIHdoaWNoIGlub2RlcyBhcmUgaW4gdXNlLgkJKGlub2RlX3VzZWRfbWFwKQorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggaW5vZGVzIGFyZSBkaXJlY3Rvcmllcy4JKGlub2RlX2Rpcl9tYXApCisgKiAJLSBBIGJpdG1hcCBvZiB3aGljaCBpbm9kZXMgYXJlIHJlZ3VsYXIgZmlsZXMuCShpbm9kZV9yZWdfbWFwKQorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggaW5vZGVzIGhhdmUgYmFkIGZpZWxkcy4JKGlub2RlX2JhZF9tYXApCisgKiAJLSBBIGJpdG1hcCBvZiB3aGljaCBpbm9kZXMgYXJlIGluIGJhZCBibG9ja3MuCShpbm9kZV9iYl9tYXApCisgKiAJLSBBIGJpdG1hcCBvZiB3aGljaCBpbm9kZXMgYXJlIGltYWdpYyBpbm9kZXMuCShpbm9kZV9pbWFnaWNfbWFwKQorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggYmxvY2tzIGFyZSBpbiB1c2UuCQkoYmxvY2tfZm91bmRfbWFwKQorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggYmxvY2tzIGFyZSBpbiB1c2UgYnkgdHdvIGlub2RlcwkoYmxvY2tfZHVwX21hcCkKKyAqIAktIFRoZSBkYXRhIGJsb2NrcyBvZiB0aGUgZGlyZWN0b3J5IGlub2Rlcy4JKGRpcl9tYXApCisgKgorICogUGFzcyAxIGlzIGRlc2lnbmVkIHRvIHN0YXNoIGF3YXkgZW5vdWdoIGluZm9ybWF0aW9uIHNvIHRoYXQgdGhlCisgKiBvdGhlciBwYXNzZXMgc2hvdWxkIG5vdCBuZWVkIHRvIHJlYWQgaW4gdGhlIGlub2RlIGluZm9ybWF0aW9uCisgKiBkdXJpbmcgdGhlIG5vcm1hbCBjb3Vyc2Ugb2YgYSBmaWxlc3lzdGVtIGNoZWNrLiAgKEFsdGhvZ2ggaWYgYW4KKyAqIGluY29uc2lzdGVuY3kgaXMgZGV0ZWN0ZWQsIG90aGVyIHBhc3NlcyBtYXkgbmVlZCB0byByZWFkIGluIGFuCisgKiBpbm9kZSB0byBmaXggaXQuKQorICoKKyAqIE5vdGUgdGhhdCBwYXNzIDFCIHdpbGwgYmUgaW52b2tlZCBpZiB0aGVyZSBhcmUgYW55IGR1cGxpY2F0ZSBibG9ja3MKKyAqIGZvdW5kLgorICovCisKKyNkZWZpbmUgX0dOVV9TT1VSQ0UgMSAvKiBnZXQgc3RybmxlbigpICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+CisKKyNpbmNsdWRlICJwcm9ibGVtLmgiCisKKyNpZmRlZiBOT19JTkxJTkVfRlVOQ1MKKyNkZWZpbmUgX0lOTElORV8KKyNlbHNlCisjZGVmaW5lIF9JTkxJTkVfIGlubGluZQorI2VuZGlmCisKKyN1bmRlZiBERUJVRworCitzdGF0aWMgaW50IHByb2Nlc3NfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QJKmJsb2NrbnIsCisJCQkgZTJfYmxrY250X3QgYmxvY2tjbnQsIGJsazY0X3QgcmVmX2JsaywKKwkJCSBpbnQgcmVmX29mZnNldCwgdm9pZCAqcHJpdl9kYXRhKTsKK3N0YXRpYyBpbnQgcHJvY2Vzc19iYWRfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgKmJsb2NrX25yLAorCQkJICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCwgYmxrNjRfdCByZWZfYmxrLAorCQkJICAgICBpbnQgcmVmX29mZnNldCwgdm9pZCAqcHJpdl9kYXRhKTsKK3N0YXRpYyB2b2lkIGNoZWNrX2Jsb2NrcyhlMmZzY2tfdCBjdHgsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsCisJCQkgY2hhciAqYmxvY2tfYnVmKTsKK3N0YXRpYyB2b2lkIG1hcmtfdGFibGVfYmxvY2tzKGUyZnNja190IGN0eCk7CitzdGF0aWMgdm9pZCBhbGxvY19iYl9tYXAoZTJmc2NrX3QgY3R4KTsKK3N0YXRpYyB2b2lkIGFsbG9jX2ltYWdpY19tYXAoZTJmc2NrX3QgY3R4KTsKK3N0YXRpYyB2b2lkIG1hcmtfaW5vZGVfYmFkKGUyZnNja190IGN0eCwgaW5vX3QgaW5vKTsKK3N0YXRpYyB2b2lkIGFkZF9lbmNyeXB0ZWRfZGlyKGUyZnNja190IGN0eCwgaW5vX3QgaW5vKTsKK3N0YXRpYyB2b2lkIGhhbmRsZV9mc19iYWRfYmxvY2tzKGUyZnNja190IGN0eCk7CitzdGF0aWMgdm9pZCBwcm9jZXNzX2lub2RlcyhlMmZzY2tfdCBjdHgsIGNoYXIgKmJsb2NrX2J1Zik7CitzdGF0aWMgRVhUMl9RU09SVF9UWVBFIHByb2Nlc3NfaW5vZGVfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOworc3RhdGljIGVycmNvZGVfdCBzY2FuX2NhbGxiYWNrKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub2RlX3NjYW4gc2NhbiwKKwkJCQkgIGRncnBfdCBncm91cCwgdm9pZCAqIHByaXZfZGF0YSk7CitzdGF0aWMgdm9pZCBhZGp1c3RfZXh0YXR0cl9yZWZjb3VudChlMmZzY2tfdCBjdHgsIGV4dDJfcmVmY291bnRfdCByZWZjb3VudCwKKwkJCQkgICAgY2hhciAqYmxvY2tfYnVmLCBpbnQgYWRqdXN0X3NpZ24pOworLyogc3RhdGljIGNoYXIgKmRlc2NyaWJlX2lsbGVnYWxfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxvY2spOyAqLworCitzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgeworCWV4dDJfaW5vX3QJaW5vOworCXVuc2lnbmVkCWlzX2RpcjoxLCBpc19yZWc6MSwgY2xlYXI6MSwgc3VwcHJlc3M6MSwKKwkJCQlmcmFnbWVudGVkOjEsIGNvbXByZXNzZWQ6MSwgYmJjaGVjazoxLAorCQkJCWlub2RlX21vZGlmaWVkOjE7CisJYmxrNjRfdAkJbnVtX2Jsb2NrczsKKwlibGs2NF90CQltYXhfYmxvY2tzOworCWJsazY0X3QJCWxhc3RfYmxvY2s7CisJZTJfYmxrY250X3QJbGFzdF9pbml0X2xibG9jazsKKwllMl9ibGtjbnRfdAlsYXN0X2RiX2Jsb2NrOworCWludAkJbnVtX2lsbGVnYWxfYmxvY2tzOworCWJsazY0X3QJCXByZXZpb3VzX2Jsb2NrOworCXN0cnVjdCBleHQyX2lub2RlICppbm9kZTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4OworCWV4dDJmc19ibG9ja19iaXRtYXAgZnNfbWV0YV9ibG9ja3M7CisJZTJmc2NrX3QJY3R4OworCXJlZ2lvbl90CXJlZ2lvbjsKKwlzdHJ1Y3QgZXh0ZW50X3RyZWVfaW5mbwlldGk7Cit9OworCitzdHJ1Y3QgcHJvY2Vzc19pbm9kZV9ibG9jayB7CisJZXh0Ml9pbm9fdCBpbm87CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7Cit9OworCitzdHJ1Y3Qgc2Nhbl9jYWxsYmFja19zdHJ1Y3QgeworCWUyZnNja190CWN0eDsKKwljaGFyCQkqYmxvY2tfYnVmOworfTsKKworLyoKKyAqIEZvciB0aGUgaW5vZGVzIHRvIHByb2Nlc3MgbGlzdC4KKyAqLworc3RhdGljIHN0cnVjdCBwcm9jZXNzX2lub2RlX2Jsb2NrICppbm9kZXNfdG9fcHJvY2VzczsKK3N0YXRpYyBpbnQgcHJvY2Vzc19pbm9kZV9jb3VudDsKKworc3RhdGljIF9fdTY0IGV4dDJfbWF4X3NpemVzW0VYVDJfTUFYX0JMT0NLX0xPR19TSVpFIC0KKwkJCSAgICBFWFQyX01JTl9CTE9DS19MT0dfU0laRSArIDFdOworCisvKgorICogRnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSBwYXNzMSBpbiBwcmVwYXJhdGlvbiBmb3IgcmVzdGFydGluZworICogdGhpbmdzLgorICovCitzdGF0aWMgdm9pZCB1bndpbmRfcGFzczEoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWV4dDJmc19mcmVlX21lbSgmaW5vZGVzX3RvX3Byb2Nlc3MpOworCWlub2Rlc190b19wcm9jZXNzID0gMDsKK30KKworLyoKKyAqIENoZWNrIHRvIG1ha2Ugc3VyZSBhIGRldmljZSBpbm9kZSBpcyByZWFsLiAgUmV0dXJucyAxIGlmIHRoZSBkZXZpY2UKKyAqIGNoZWNrcyBvdXQsIDAgaWYgbm90LgorICoKKyAqIE5vdGU6IHRoaXMgcm91dGluZSBpcyBub3cgYWxzbyB1c2VkIHRvIGNoZWNrIEZJRk8ncyBhbmQgU29ja2V0cywKKyAqIHNpbmNlIHRoZXkgaGF2ZSB0aGUgc2FtZSByZXF1aXJlbWVudDsgdGhlIGlfYmxvY2sgZmllbGRzIHNob3VsZCBiZQorICogemVyby4KKyAqLworaW50IGUyZnNja19wYXNzMV9jaGVja19kZXZpY2VfaW5vZGUoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpCit7CisJaW50CWk7CisKKwkvKgorCSAqIElmIHRoZSBpbmRleCBmbGFnIGlzIHNldCwgdGhlbiB0aGlzIGlzIGEgYm9ndXMKKwkgKiBkZXZpY2UvZmlmby9zb2NrZXQKKwkgKi8KKwlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQyX0lOREVYX0ZMKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gdGhlIHRlc3QgYmVsb3cgYWxsIHRoZSB0aW1lLCBidXQKKwkgKiBiZWNhdXNlIHRoZSBrZXJuZWwgZG9lc24ndCBmb3JjaWJseSBjbGVhciB0aGUgZGV2aWNlCisJICogaW5vZGUncyBhZGRpdGlvbmFsIGlfYmxvY2sgZmllbGRzLCB0aGVyZSBhcmUgc29tZSByYXJlCisJICogb2NjYXNpb25zIHdoZW4gYSBsZWdpdGltYXRlIGRldmljZSBpbm9kZSB3aWxsIGhhdmUgbm9uLXplcm8KKwkgKiBhZGRpdGlvbmFsIGlfYmxvY2sgZmllbGRzLiAgU28gZm9yIG5vdywgd2Ugb25seSBjb21wbGFpbgorCSAqIHdoZW4gdGhlIGltbXV0YWJsZSBmbGFnIGlzIHNldCwgd2hpY2ggc2hvdWxkIG5ldmVyIGhhcHBlbgorCSAqIGZvciBkZXZpY2VzLiAgKEFuZCB0aGF0J3Mgd2hlbiB0aGUgcHJvYmxlbSBpcyBjYXVzZWQsIHNpbmNlCisJICogeW91IGNhbid0IHNldCBvciBjbGVhciBpbW11dGFibGUgZmxhZ3MgZm9yIGRldmljZXMuKSAgT25jZQorCSAqIHRoZSBrZXJuZWwgaGFzIGJlZW4gZml4ZWQgd2UgY2FuIGNoYW5nZSB0aGlzLi4uCisJICovCisJaWYgKGlub2RlLT5pX2ZsYWdzICYgKEVYVDJfSU1NVVRBQkxFX0ZMIHwgRVhUMl9BUFBFTkRfRkwpKSB7CisJCWZvciAoaT00OyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKQorCQkJaWYgKGlub2RlLT5pX2Jsb2NrW2ldKQorCQkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIENoZWNrIHRvIG1ha2Ugc3VyZSBhIHN5bWxpbmsgaW5vZGUgaXMgcmVhbC4gIFJldHVybnMgMSBpZiB0aGUgc3ltbGluaworICogY2hlY2tzIG91dCwgMCBpZiBub3QuCisgKi8KK2ludCBlMmZzY2tfcGFzczFfY2hlY2tfc3ltbGluayhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBjaGFyICpidWYpCit7CisJdW5zaWduZWQgaW50IGxlbjsKKwlpbnQgaTsKKwlibGs2NF90CWJsb2NrczsKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJc3RydWN0IGV4dDJfZXh0ZW50X2luZm8JaW5mbzsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisKKwlpZiAoKGlub2RlLT5pX3NpemVfaGlnaCB8fCBpbm9kZS0+aV9zaXplID09IDApIHx8CisJICAgIChpbm9kZS0+aV9mbGFncyAmIEVYVDJfSU5ERVhfRkwpKQorCQlyZXR1cm4gMDsKKworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgeworCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQkJcmV0dXJuIDA7CisJCWlmIChpbm9kZS0+aV9zaXplID4gZnMtPmJsb2Nrc2l6ZSkKKwkJCXJldHVybiAwOworCQlpZiAoZXh0MmZzX2V4dGVudF9vcGVuMihmcywgaW5vLCBpbm9kZSwgJmhhbmRsZSkpCisJCQlyZXR1cm4gMDsKKwkJaSA9IDA7CisJCWlmIChleHQyZnNfZXh0ZW50X2dldF9pbmZvKGhhbmRsZSwgJmluZm8pIHx8CisJCSAgICAoaW5mby5udW1fZW50cmllcyAhPSAxKSB8fAorCQkgICAgKGluZm8ubWF4X2RlcHRoICE9IDApKQorCQkJZ290byBleGl0X2V4dGVudDsKKwkJaWYgKGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfUk9PVCwgJmV4dGVudCkgfHwKKwkJICAgIChleHRlbnQuZV9sYmxrICE9IDApIHx8CisJCSAgICAoZXh0ZW50LmVfbGVuICE9IDEpIHx8CisJCSAgICAoZXh0ZW50LmVfcGJsayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCQkgICAgKGV4dGVudC5lX3BibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSkKKwkJCWdvdG8gZXhpdF9leHRlbnQ7CisJCWkgPSAxOworCWV4aXRfZXh0ZW50OgorCQlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwkJcmV0dXJuIGk7CisJfQorCisJaWYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkgeworCQlzaXplX3QgaW5saW5lX3NpemU7CisKKwkJaWYgKGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGZzLCBpbm8sICZpbmxpbmVfc2l6ZSkpCisJCQlyZXR1cm4gMDsKKwkJaWYgKGlub2RlLT5pX3NpemUgIT0gaW5saW5lX3NpemUpCisJCQlyZXR1cm4gMDsKKworCQlyZXR1cm4gMTsKKwl9CisKKwlibG9ja3MgPSBleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MyKGZzLCBpbm9kZSk7CisJaWYgKGJsb2NrcykgeworCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQkJcmV0dXJuIDA7CisJCWlmICgoaW5vZGUtPmlfc2l6ZSA+PSBmcy0+YmxvY2tzaXplKSB8fAorCQkgICAgKGJsb2NrcyAhPSBmcy0+YmxvY2tzaXplID4+IDkpIHx8CisJCSAgICAoaW5vZGUtPmlfYmxvY2tbMF0gPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgfHwKKwkJICAgIChpbm9kZS0+aV9ibG9ja1swXSA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKQorCQkJcmV0dXJuIDA7CisKKwkJZm9yIChpID0gMTsgaSA8IEVYVDJfTl9CTE9DS1M7IGkrKykKKwkJCWlmIChpbm9kZS0+aV9ibG9ja1tpXSkKKwkJCQlyZXR1cm4gMDsKKworCQlpZiAoaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgaW5vZGUtPmlfYmxvY2tbMF0sIDEsIGJ1ZikpCisJCQlyZXR1cm4gMDsKKworCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VOQ1JZUFRfRkwpIHsKKwkJCWxlbiA9IGV4dDJmc19sZTMyX3RvX2NwdSgqKChfX3UzMiAqKWJ1ZikpICsgNDsKKwkJfSBlbHNlIHsKKwkJCWxlbiA9IHN0cm5sZW4oYnVmLCBmcy0+YmxvY2tzaXplKTsKKwkJfQorCQlpZiAobGVuID09IGZzLT5ibG9ja3NpemUpCisJCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkgeworCQljaGFyICppbmxpbmVfYnVmID0gTlVMTDsKKwkJc2l6ZV90IGlubGluZV9zeiA9IDA7CisKKwkJaWYgKGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGZzLCBpbm8sICZpbmxpbmVfc3opKQorCQkJcmV0dXJuIDA7CisJCWlmIChpbm9kZS0+aV9zaXplICE9IGlubGluZV9zeikKKwkJCXJldHVybiAwOworCQlpZiAoZXh0MmZzX2dldF9tZW0oaW5saW5lX3N6ICsgMSwgJmlubGluZV9idWYpKQorCQkJcmV0dXJuIDA7CisJCWkgPSAwOworCQlpZiAoZXh0MmZzX2lubGluZV9kYXRhX2dldChmcywgaW5vLCBpbm9kZSwgaW5saW5lX2J1ZiwgTlVMTCkpCisJCQlnb3RvIGV4aXRfaW5saW5lOworCQlpbmxpbmVfYnVmW2lubGluZV9zel0gPSAwOworCQlsZW4gPSBzdHJubGVuKGlubGluZV9idWYsIGlubGluZV9zeik7CisJCWlmIChsZW4gIT0gaW5saW5lX3N6KQorCQkJZ290byBleGl0X2lubGluZTsKKwkJaSA9IDE7CitleGl0X2lubGluZToKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpbmxpbmVfYnVmKTsKKwkJcmV0dXJuIGk7CisJfSBlbHNlIHsKKwkJaWYgKGlub2RlLT5pX3NpemUgPj0gc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSkKKwkJCXJldHVybiAwOworCisJCWxlbiA9IHN0cm5sZW4oKGNoYXIgKilpbm9kZS0+aV9ibG9jaywgc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSk7CisJCWlmIChsZW4gPT0gc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSkKKwkJCXJldHVybiAwOworCX0KKwlpZiAobGVuICE9IGlub2RlLT5pX3NpemUpCisJCWlmICgoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VOQ1JZUFRfRkwpID09IDApCisJCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIElmIHRoZSBleHRlbnRzIG9yIGlubGluZWRhdGEgZmxhZ3MgYXJlIHNldCBvbiB0aGUgaW5vZGUsIG9mZmVyIHRvIGNsZWFyICdlbS4KKyAqLworI2RlZmluZSBCQURfU1BFQ0lBTF9GTEFHUyAoRVhUNF9FWFRFTlRTX0ZMIHwgRVhUNF9JTkxJTkVfREFUQV9GTCkKK3N0YXRpYyB2b2lkIGNoZWNrX2V4dGVudHNfaW5saW5lZGF0YShlMmZzY2tfdCBjdHgsCisJCQkJICAgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCWlmICghKHBjdHgtPmlub2RlLT5pX2ZsYWdzICYgQkFEX1NQRUNJQUxfRkxBR1MpKQorCQlyZXR1cm47CisKKwlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9TUEVDSUFMX0VYVEVOVFNfSURBVEEsIHBjdHgpKQorCQlyZXR1cm47CisKKwlwY3R4LT5pbm9kZS0+aV9mbGFncyAmPSB+QkFEX1NQRUNJQUxfRkxBR1M7CisJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgcGN0eC0+aW5vLCBwY3R4LT5pbm9kZSwgInBhc3MxIik7Cit9CisjdW5kZWYgQkFEX1NQRUNJQUxfRkxBR1MKKworLyoKKyAqIElmIHRoZSBpbW11dGFibGUgKG9yIGFwcGVuZC1vbmx5KSBmbGFnIGlzIHNldCBvbiB0aGUgaW5vZGUsIG9mZmVyCisgKiB0byBjbGVhciBpdC4KKyAqLworI2RlZmluZSBCQURfU1BFQ0lBTF9GTEFHUyAoRVhUMl9JTU1VVEFCTEVfRkwgfCBFWFQyX0FQUEVORF9GTCkKK3N0YXRpYyB2b2lkIGNoZWNrX2ltbXV0YWJsZShlMmZzY2tfdCBjdHgsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCit7CisJaWYgKCEocGN0eC0+aW5vZGUtPmlfZmxhZ3MgJiBCQURfU1BFQ0lBTF9GTEFHUykpCisJCXJldHVybjsKKworCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8xX1NFVF9JTU1VVEFCTEUsIHBjdHgpKQorCQlyZXR1cm47CisKKwlwY3R4LT5pbm9kZS0+aV9mbGFncyAmPSB+QkFEX1NQRUNJQUxfRkxBR1M7CisJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgcGN0eC0+aW5vLCBwY3R4LT5pbm9kZSwgInBhc3MxIik7Cit9CisKKy8qCisgKiBJZiBkZXZpY2UsIGZpZm8gb3Igc29ja2V0LCBjaGVjayBzaXplIGlzIHplcm8gLS0gaWYgbm90IG9mZmVyIHRvCisgKiBjbGVhciBpdAorICovCitzdGF0aWMgdm9pZCBjaGVja19zaXplKGUyZnNja190IGN0eCwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUgPSBwY3R4LT5pbm9kZTsKKworCWlmIChFWFQyX0lfU0laRShpbm9kZSkgPT0gMCkKKwkJcmV0dXJuOworCisJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzFfU0VUX05PTlpTSVpFLCBwY3R4KSkKKwkJcmV0dXJuOworCisJZXh0MmZzX2lub2RlX3NpemVfc2V0KGN0eC0+ZnMsIGlub2RlLCAwKTsKKwllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBwY3R4LT5pbm8sIHBjdHgtPmlub2RlLCAicGFzczEiKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tfZWFfaW5faW5vZGUoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGN0eC0+ZnMtPnN1cGVyOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSAqZW50cnk7CisJY2hhciAqc3RhcnQsICpoZWFkZXI7CisJdW5zaWduZWQgaW50IHN0b3JhZ2Vfc2l6ZSwgcmVtYWluOworCXByb2JsZW1fdCBwcm9ibGVtID0gMDsKKwlyZWdpb25fdCByZWdpb24gPSAwOworCisJaW5vZGUgPSAoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKikgcGN0eC0+aW5vZGU7CisJc3RvcmFnZV9zaXplID0gRVhUMl9JTk9ERV9TSVpFKGN0eC0+ZnMtPnN1cGVyKSAtIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSAtCisJCWlub2RlLT5pX2V4dHJhX2lzaXplOworCWhlYWRlciA9ICgoY2hhciAqKSBpbm9kZSkgKyBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCQkgaW5vZGUtPmlfZXh0cmFfaXNpemU7CisJc3RhcnQgPSBoZWFkZXIgKyBzaXplb2YoX191MzIpOworCWVudHJ5ID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopIHN0YXJ0OworCisJLyogc2NhbiBhbGwgZW50cnkncyBoZWFkZXJzIGZpcnN0ICovCisKKwkvKiB0YWtlIGZpbmlzaCBlbnRyeSAwVUwgaW50byBhY2NvdW50ICovCisJcmVtYWluID0gc3RvcmFnZV9zaXplIC0gc2l6ZW9mKF9fdTMyKTsKKworCXJlZ2lvbiA9IHJlZ2lvbl9jcmVhdGUoMCwgc3RvcmFnZV9zaXplKTsKKwlpZiAoIXJlZ2lvbikgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfRUFfQUxMT0NfUkVHSU9OX0FCT1JULCBwY3R4KTsKKwkJcHJvYmxlbSA9IDA7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisJaWYgKHJlZ2lvbl9hbGxvY2F0ZShyZWdpb24sIDAsIHNpemVvZihfX3UzMikpKSB7CisJCXByb2JsZW0gPSBQUl8xX0lOT0RFX0VBX0FMTE9DX0NPTExJU0lPTjsKKwkJZ290byBmaXg7CisJfQorCisJd2hpbGUgKHJlbWFpbiA+PSBzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkpICYmCisJICAgICAgICFFWFQyX0VYVF9JU19MQVNUX0VOVFJZKGVudHJ5KSkgeworCQlfX3UzMiBoYXNoOworCisJCWlmIChyZWdpb25fYWxsb2NhdGUocmVnaW9uLCAoY2hhciAqKWVudHJ5IC0gKGNoYXIgKiloZWFkZXIsCisJCQkJICAgIEVYVDJfRVhUX0FUVFJfTEVOKGVudHJ5LT5lX25hbWVfbGVuKSkpIHsKKwkJCXByb2JsZW0gPSBQUl8xX0lOT0RFX0VBX0FMTE9DX0NPTExJU0lPTjsKKwkJCWdvdG8gZml4OworCQl9CisKKwkJLyogaGVhZGVyIGVhdHMgdGhpcyBzcGFjZSAqLworCQlyZW1haW4gLT0gc2l6ZW9mKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5KTsKKworCQkvKiBpcyBhdHRyaWJ1dGUgbmFtZSB2YWxpZD8gKi8KKwkJaWYgKEVYVDJfRVhUX0FUVFJfU0laRShlbnRyeS0+ZV9uYW1lX2xlbikgPiByZW1haW4pIHsKKwkJCXBjdHgtPm51bSA9IGVudHJ5LT5lX25hbWVfbGVuOworCQkJcHJvYmxlbSA9IFBSXzFfQVRUUl9OQU1FX0xFTjsKKwkJCWdvdG8gZml4OworCQl9CisKKwkJLyogYXR0cmlidXRlIGxlbiBlYXRzIHRoaXMgc3BhY2UgKi8KKwkJcmVtYWluIC09IEVYVDJfRVhUX0FUVFJfU0laRShlbnRyeS0+ZV9uYW1lX2xlbik7CisKKwkJLyogY2hlY2sgdmFsdWUgc2l6ZSAqLworCQlpZiAoZW50cnktPmVfdmFsdWVfc2l6ZSA+IHJlbWFpbikgeworCQkJcGN0eC0+bnVtID0gZW50cnktPmVfdmFsdWVfc2l6ZTsKKwkJCXByb2JsZW0gPSBQUl8xX0FUVFJfVkFMVUVfU0laRTsKKwkJCWdvdG8gZml4OworCQl9CisKKwkJLyogZV92YWx1ZV9ibG9jayBtdXN0IGJlIDAgaW4gaW5vZGUncyBlYSAqLworCQlpZiAoZW50cnktPmVfdmFsdWVfYmxvY2sgIT0gMCkgeworCQkJcGN0eC0+bnVtID0gZW50cnktPmVfdmFsdWVfYmxvY2s7CisJCQlwcm9ibGVtID0gUFJfMV9BVFRSX1ZBTFVFX0JMT0NLOworCQkJZ290byBmaXg7CisJCX0KKworCQlpZiAoZW50cnktPmVfdmFsdWVfc2l6ZSAmJgorCQkgICAgcmVnaW9uX2FsbG9jYXRlKHJlZ2lvbiwgc2l6ZW9mKF9fdTMyKSArIGVudHJ5LT5lX3ZhbHVlX29mZnMsCisJCQkJICAgIEVYVDJfRVhUX0FUVFJfU0laRShlbnRyeS0+ZV92YWx1ZV9zaXplKSkpIHsKKwkJCXByb2JsZW0gPSBQUl8xX0lOT0RFX0VBX0FMTE9DX0NPTExJU0lPTjsKKwkJCWdvdG8gZml4OworCQl9CisKKwkJaGFzaCA9IGV4dDJmc19leHRfYXR0cl9oYXNoX2VudHJ5KGVudHJ5LAorCQkJCQkJICBzdGFydCArIGVudHJ5LT5lX3ZhbHVlX29mZnMpOworCisJCS8qIGVfaGFzaCBtYXkgYmUgMCBpbiBvbGRlciBpbm9kZSdzIGVhICovCisJCWlmIChlbnRyeS0+ZV9oYXNoICE9IDAgJiYgZW50cnktPmVfaGFzaCAhPSBoYXNoKSB7CisJCQlwY3R4LT5udW0gPSBlbnRyeS0+ZV9oYXNoOworCQkJcHJvYmxlbSA9IFBSXzFfQVRUUl9IQVNIOworCQkJZ290byBmaXg7CisJCX0KKworCQlyZW1haW4gLT0gZW50cnktPmVfdmFsdWVfc2l6ZTsKKworCQllbnRyeSA9IEVYVDJfRVhUX0FUVFJfTkVYVChlbnRyeSk7CisJfQorCisJaWYgKHJlZ2lvbl9hbGxvY2F0ZShyZWdpb24sIChjaGFyICopZW50cnkgLSAoY2hhciAqKWhlYWRlciwKKwkJCSAgICBzaXplb2YoX191MzIpKSkgeworCQlwcm9ibGVtID0gUFJfMV9JTk9ERV9FQV9BTExPQ19DT0xMSVNJT047CisJCWdvdG8gZml4OworCX0KK2ZpeDoKKwlpZiAocmVnaW9uKQorCQlyZWdpb25fZnJlZShyZWdpb24pOworCS8qCisJICogaXQgc2VlbXMgbGlrZSBhIGNvcnJ1cHRpb24uIGl0J3MgdmVyeSB1bmxpa2VseSB3ZSBjb3VsZCByZXBhaXIKKwkgKiBFQShzKSBpbiBhdXRvbWF0aWMgZmFzaGlvbiAtYnp6egorCSAqLworCWlmIChwcm9ibGVtID09IDAgfHwgIWZpeF9wcm9ibGVtKGN0eCwgcHJvYmxlbSwgcGN0eCkpCisJCXJldHVybjsKKworCS8qIHNpbXBseSByZW1vdmUgYWxsIHBvc3NpYmxlIEVBKHMpICovCisJKigoX191MzIgKiloZWFkZXIpID0gMFVMOworCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgcGN0eC0+aW5vLCBwY3R4LT5pbm9kZSwKKwkJCQlFWFQyX0lOT0RFX1NJWkUoc2IpLCAicGFzczEiKTsKK30KKworc3RhdGljIGludCBjaGVja19pbm9kZV9leHRyYV9uZWdhdGl2ZV9lcG9jaChfX3UzMiB4dGltZSwgX191MzIgZXh0cmEpIHsKKwlyZXR1cm4gKHh0aW1lICYgKDEgPDwgMzEpKSAhPSAwICYmCisJCShleHRyYSAmIEVYVDRfRVBPQ0hfTUFTSykgPT0gRVhUNF9FUE9DSF9NQVNLOworfQorCisjZGVmaW5lIENIRUNLX0lOT0RFX0VYVFJBX05FR0FUSVZFX0VQT0NIKGlub2RlLCB4dGltZSkgXAorCWNoZWNrX2lub2RlX2V4dHJhX25lZ2F0aXZlX2Vwb2NoKGlub2RlLT5pXyMjeHRpbWUsIFwKKwkJCQkJIGlub2RlLT5pXyMjeHRpbWUjI19leHRyYSkKKworLyogV2hlbiB0b2RheSdzIGRhdGUgaXMgZWFybGllciB0aGFuIDIyNDIsIHdlIGFzc3VtZSB0aGF0IGF0aW1lcywKKyAqIGN0aW1lcywgY3J0aW1lcywgYW5kIG10aW1lcyB3aXRoIHllYXJzIGluIHRoZSByYW5nZSAyMzEwLi4yMzc4IGFyZQorICogYWN0dWFsbHkgcHJlLTE5NzAgZGF0ZXMgbWlzLWVuY29kZWQuCisgKi8KKyNkZWZpbmUgRVhUNF9FWFRSQV9ORUdBVElWRV9EQVRFX0NVVE9GRiAyICogKDFMTCA8PCAzMikKKworc3RhdGljIHZvaWQgY2hlY2tfaW5vZGVfZXh0cmFfc3BhY2UoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGN0eC0+ZnMtPnN1cGVyOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZTsKKwlfX3UzMiAqZWFtYWdpYzsKKwlpbnQgbWluLCBtYXg7CisKKwlpbm9kZSA9IChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBwY3R4LT5pbm9kZTsKKwlpZiAoRVhUMl9JTk9ERV9TSVpFKHNiKSA9PSBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpIHsKKwkJLyogdGhpcyBpc24ndCBsYXJnZSBpbm9kZS4gc28sIG5vdGhpbmcgdG8gY2hlY2sgKi8KKwkJcmV0dXJuOworCX0KKworI2lmIDAKKwlwcmludGYoImlub2RlICMldSwgaV9leHRyYV9zaXplICVkXG4iLCBwY3R4LT5pbm8sCisJCQlpbm9kZS0+aV9leHRyYV9pc2l6ZSk7CisjZW5kaWYKKwkvKiBpX2V4dHJhX2lzaXplIG11c3QgY292ZXIgaV9leHRyYV9pc2l6ZSArIGlfY2hlY2tzdW1faGkgYXQgbGVhc3QgKi8KKwltaW4gPSBzaXplb2YoaW5vZGUtPmlfZXh0cmFfaXNpemUpICsgc2l6ZW9mKGlub2RlLT5pX2NoZWNrc3VtX2hpKTsKKwltYXggPSBFWFQyX0lOT0RFX1NJWkUoc2IpIC0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFOworCS8qCisJICogRm9yIG5vdyB3ZSB3aWxsIGFsbG93IGlfZXh0cmFfaXNpemUgdG8gYmUgMCwgYnV0IHJlYWxseQorCSAqIGltcGxlbWVudGF0aW9ucyBzaG91bGQgbmV2ZXIgYWxsb3cgaV9leHRyYV9pc2l6ZSB0byBiZSAwCisJICovCisJaWYgKGlub2RlLT5pX2V4dHJhX2lzaXplICYmCisJICAgIChpbm9kZS0+aV9leHRyYV9pc2l6ZSA8IG1pbiB8fCBpbm9kZS0+aV9leHRyYV9pc2l6ZSA+IG1heCB8fAorCSAgICAgaW5vZGUtPmlfZXh0cmFfaXNpemUgJiAzKSkgeworCQlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FWFRSQV9JU0laRSwgcGN0eCkpCisJCQlyZXR1cm47CisJCWlmIChpbm9kZS0+aV9leHRyYV9pc2l6ZSA8IG1pbiB8fCBpbm9kZS0+aV9leHRyYV9pc2l6ZSA+IG1heCkKKwkJCWlub2RlLT5pX2V4dHJhX2lzaXplID0gc2ItPnNfd2FudF9leHRyYV9pc2l6ZTsKKwkJZWxzZQorCQkJaW5vZGUtPmlfZXh0cmFfaXNpemUgPSAoaW5vZGUtPmlfZXh0cmFfaXNpemUgKyAzKSAmIH4zOworCQllMmZzY2tfd3JpdGVfaW5vZGVfZnVsbChjdHgsIHBjdHgtPmlubywgcGN0eC0+aW5vZGUsCisJCQkJCUVYVDJfSU5PREVfU0laRShzYiksICJwYXNzMSIpOworCQlyZXR1cm47CisJfQorCisJLyogY2hlY2sgaWYgdGhlcmUgaXMgbm8gcGxhY2UgZm9yIGFuIEVBIGhlYWRlciAqLworCWlmIChpbm9kZS0+aV9leHRyYV9pc2l6ZSA+PSBtYXggLSBzaXplb2YoX191MzIpKQorCQlyZXR1cm47CisKKwllYW1hZ2ljID0gKF9fdTMyICopICgoKGNoYXIgKikgaW5vZGUpICsgRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsKKwkJCWlub2RlLT5pX2V4dHJhX2lzaXplKTsKKwlpZiAoKmVhbWFnaWMgPT0gRVhUMl9FWFRfQVRUUl9NQUdJQykgeworCQkvKiBpdCBzZWVtcyBpbm9kZSBoYXMgYW4gZXh0ZW5kZWQgYXR0cmlidXRlKHMpIGluIGJvZHkgKi8KKwkJY2hlY2tfZWFfaW5faW5vZGUoY3R4LCBwY3R4KTsKKwl9CisKKwkvKgorCSAqIElmIHRoZSBpbm9kZSdzIGV4dGVuZGVkIGF0aW1lIChjdGltZSwgY3J0aW1lLCBtdGltZSkgaXMgc3RvcmVkIGluCisJICogdGhlIG9sZCwgaW52YWxpZCBmb3JtYXQsIHJlcGFpciBpdC4KKwkgKi8KKwlpZiAoKChzaXplb2YodGltZV90KSA8PSA0KSB8fAorCSAgICAgKCgoc2l6ZW9mKHRpbWVfdCkgPiA0KSAmJgorCSAgICAgICBjdHgtPm5vdyA8IEVYVDRfRVhUUkFfTkVHQVRJVkVfREFURV9DVVRPRkYpKSkgJiYKKwkgICAgKENIRUNLX0lOT0RFX0VYVFJBX05FR0FUSVZFX0VQT0NIKGlub2RlLCBhdGltZSkgfHwKKwkgICAgIENIRUNLX0lOT0RFX0VYVFJBX05FR0FUSVZFX0VQT0NIKGlub2RlLCBjdGltZSkgfHwKKwkgICAgIENIRUNLX0lOT0RFX0VYVFJBX05FR0FUSVZFX0VQT0NIKGlub2RlLCBjcnRpbWUpIHx8CisJICAgICBDSEVDS19JTk9ERV9FWFRSQV9ORUdBVElWRV9FUE9DSChpbm9kZSwgbXRpbWUpKSkgeworCisJCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX1RJTUVfT1VUX09GX1JBTkdFLCBwY3R4KSkKKwkJCXJldHVybjsKKworCQlpZiAoQ0hFQ0tfSU5PREVfRVhUUkFfTkVHQVRJVkVfRVBPQ0goaW5vZGUsIGF0aW1lKSkKKwkJCWlub2RlLT5pX2F0aW1lX2V4dHJhICY9IH5FWFQ0X0VQT0NIX01BU0s7CisJCWlmIChDSEVDS19JTk9ERV9FWFRSQV9ORUdBVElWRV9FUE9DSChpbm9kZSwgY3RpbWUpKQorCQkJaW5vZGUtPmlfY3RpbWVfZXh0cmEgJj0gfkVYVDRfRVBPQ0hfTUFTSzsKKwkJaWYgKENIRUNLX0lOT0RFX0VYVFJBX05FR0FUSVZFX0VQT0NIKGlub2RlLCBjcnRpbWUpKQorCQkJaW5vZGUtPmlfY3J0aW1lX2V4dHJhICY9IH5FWFQ0X0VQT0NIX01BU0s7CisJCWlmIChDSEVDS19JTk9ERV9FWFRSQV9ORUdBVElWRV9FUE9DSChpbm9kZSwgbXRpbWUpKQorCQkJaW5vZGUtPmlfbXRpbWVfZXh0cmEgJj0gfkVYVDRfRVBPQ0hfTUFTSzsKKwkJZTJmc2NrX3dyaXRlX2lub2RlX2Z1bGwoY3R4LCBwY3R4LT5pbm8sIHBjdHgtPmlub2RlLAorCQkJCQlFWFQyX0lOT0RFX1NJWkUoc2IpLCAicGFzczEiKTsKKwl9CisKK30KKworLyoKKyAqIENoZWNrIHRvIHNlZSBpZiB0aGUgaW5vZGUgbWlnaHQgcmVhbGx5IGJlIGEgZGlyZWN0b3J5LCBkZXNwaXRlIGlfbW9kZQorICoKKyAqIFRoaXMgaXMgYSBsb3Qgb2YgY29tcGxleGl0eSBmb3Igc29tZXRoaW5nIGZvciB3aGljaCBJJ20gbm90IHJlYWxseQorICogY29udmluY2VkIGhhcHBlbnMgZnJlcXVlbnRseSBpbiB0aGUgd2lsZC4gIElmIGZvciBhbnkgcmVhc29uIHRoaXMKKyAqIGNhdXNlcyBhbnkgcHJvYmxlbXMsIHRha2UgdGhpcyBjb2RlIG91dC4KKyAqIFt0eXRzbzoyMDA3MDMzMS4wODI3RURUXQorICovCitzdGF0aWMgdm9pZCBjaGVja19pc19yZWFsbHlfZGlyKGUyZnNja190IGN0eCwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCwKKwkJCQljaGFyICpidWYpCit7CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlID0gcGN0eC0+aW5vZGU7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5IAkqZGlyZW50OworCWVycmNvZGVfdAkJcmV0dmFsOworCWJsazY0X3QJCQlibGs7CisJdW5zaWduZWQgaW50CQlpLCByZWNfbGVuLCBub3RfZGV2aWNlID0gMDsKKwlpbnQJCQlleHRlbnRfZnM7CisJaW50CQkJaW5saW5lZGF0YV9mczsKKworCS8qCisJICogSWYgdGhlIG1vZGUgbG9va3MgT0ssIHdlIGJlbGlldmUgaXQuICBJZiB0aGUgZmlyc3QgYmxvY2sgaW4KKwkgKiB0aGUgaV9ibG9jayBhcnJheSBpcyAwLCB0aGlzIGNhbm5vdCBiZSBhIGRpcmVjdG9yeS4gSWYgdGhlCisJICogaW5vZGUgaXMgZXh0ZW50LW1hcHBlZCwgaXQgaXMgc3RpbGwgdGhlIGNhc2UgdGhhdCB0aGUgbGF0dGVyCisJICogY2Fubm90IGJlIDAgLSB0aGUgbWFnaWMgbnVtYmVyIGluIHRoZSBleHRlbnQgaGVhZGVyIHdvdWxkIG1ha2UKKwkgKiBpdCBub256ZXJvLgorCSAqLworCWlmIChMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpIHx8IExJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgfHwKKwkgICAgTElOVVhfU19JU0xOSyhpbm9kZS0+aV9tb2RlKSB8fCBpbm9kZS0+aV9ibG9ja1swXSA9PSAwKQorCQlyZXR1cm47CisKKwkvKiAKKwkgKiBDaGVjayB0aGUgYmxvY2sgbnVtYmVycyBpbiB0aGUgaV9ibG9jayBhcnJheSBmb3IgdmFsaWRpdHk6CisJICogemVybyBibG9ja3MgYXJlIHNraXBwZWQgKGJ1dCB0aGUgZmlyc3Qgb25lIGNhbm5vdCBiZSB6ZXJvIC0KKwkgKiBzZWUgYWJvdmUpLCBvdGhlciBibG9ja3MgYXJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgZmlyc3QgYW5kCisJICogbWF4IGRhdGEgYmxvY2tzIChmcm9tIHRoZSB0aGUgc3VwZXJibG9jaykgYW5kIGFnYWluc3QgdGhlCisJICogYmxvY2sgYml0bWFwLiBBbnkgaW52YWxpZCBibG9jayBmb3VuZCBtZWFucyB0aGlzIGNhbm5vdCBiZQorCSAqIGEgZGlyZWN0b3J5LgorCSAqIAorCSAqIElmIHRoZXJlIGFyZSBub24temVybyBibG9ja3MgcGFzdCB0aGUgZm91cnRoIGVudHJ5LCB0aGVuCisJICogdGhpcyBjYW5ub3QgYmUgYSBkZXZpY2UgZmlsZTogd2UgcmVtZW1iZXIgdGhhdCBmb3IgdGhlIG5leHQKKwkgKiBjaGVjay4KKwkgKgorCSAqIEZvciBleHRlbnQgbWFwcGVkIGZpbGVzLCB3ZSBkb24ndCBkbyBhbnkgc2FuaXR5IGNoZWNraW5nOgorCSAqIGp1c3QgdHJ5IHRvIGdldCB0aGUgcGh5cyBibG9jayBvZiBsb2dpY2FsIGJsb2NrIDAgYW5kIHJ1bgorCSAqIHdpdGggaXQuCisJICoKKwkgKiBGb3IgaW5saW5lIGRhdGEgZmlsZXMsIHdlIGp1c3QgdHJ5IHRvIGdldCB0aGUgc2l6ZSBvZiBpbmxpbmUKKwkgKiBkYXRhLiAgSWYgaXQncyB0cnVlLCB3ZSB3aWxsIHRyZWF0IGl0IGFzIGEgZGlyZWN0b3J5LgorCSAqLworCisJZXh0ZW50X2ZzID0gZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoY3R4LT5mcy0+c3VwZXIpOworCWlubGluZWRhdGFfZnMgPSBleHQyZnNfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoY3R4LT5mcy0+c3VwZXIpOworCWlmIChpbmxpbmVkYXRhX2ZzICYmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKSB7CisJCXNpemVfdCBzaXplOworCQlfX3UzMiBkb3Rkb3Q7CisJCXVuc2lnbmVkIGludCByZWNfbGVuMjsKKwkJc3RydWN0IGV4dDJfZGlyX2VudHJ5IGRlOworCisJCWlmIChleHQyZnNfaW5saW5lX2RhdGFfc2l6ZShjdHgtPmZzLCBwY3R4LT5pbm8sICZzaXplKSkKKwkJCXJldHVybjsKKwkJLyoKKwkJICogSWYgdGhlIHNpemUgaXNuJ3QgYSBtdWx0aXBsZSBvZiA0LCBpdCdzIHByb2JhYmx5IG5vdCBhCisJCSAqIGRpcmVjdG9yeT8/CisJCSAqLworCQlpZiAoc2l6ZSAmIDMpCisJCQlyZXR1cm47CisJCS8qCisJCSAqIElmIHRoZSBmaXJzdCAxMCBieXRlcyBkb24ndCBsb29rIGxpa2UgYSBkaXJlY3RvcnkgZW50cnksCisJCSAqIGl0J3MgcHJvYmFibHkgbm90IGEgZGlyZWN0b3J5LgorCQkgKi8KKwkJbWVtY3B5KCZkb3Rkb3QsIGlub2RlLT5pX2Jsb2NrLCBzaXplb2YoZG90ZG90KSk7CisJCW1lbWNweSgmZGUsICgoY2hhciAqKWlub2RlLT5pX2Jsb2NrKSArIEVYVDRfSU5MSU5FX0RBVEFfRE9URE9UX1NJWkUsCisJCSAgICAgICBFWFQyX0RJUl9SRUNfTEVOKDApKTsKKwkJZG90ZG90ID0gZXh0MmZzX2xlMzJfdG9fY3B1KGRvdGRvdCk7CisJCWRlLmlub2RlID0gZXh0MmZzX2xlMzJfdG9fY3B1KGRlLmlub2RlKTsKKwkJZGUucmVjX2xlbiA9IGV4dDJmc19sZTE2X3RvX2NwdShkZS5yZWNfbGVuKTsKKwkJZXh0MmZzX2dldF9yZWNfbGVuKGN0eC0+ZnMsICZkZSwgJnJlY19sZW4yKTsKKwkJaWYgKGRvdGRvdCA+PSBjdHgtPmZzLT5zdXBlci0+c19pbm9kZXNfY291bnQgfHwKKwkJICAgIChkb3Rkb3QgPCBFWFQyX0ZJUlNUX0lOTyhjdHgtPmZzLT5zdXBlcikgJiYKKwkJICAgICBkb3Rkb3QgIT0gRVhUMl9ST09UX0lOTykgfHwKKwkJICAgIGRlLmlub2RlID49IGN0eC0+ZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCB8fAorCQkgICAgKGRlLmlub2RlIDwgRVhUMl9GSVJTVF9JTk8oY3R4LT5mcy0+c3VwZXIpICYmCisJCSAgICAgZGUuaW5vZGUgIT0gMCkgfHwKKwkJICAgIHJlY19sZW4yID4gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSAtCisJCQkgICAgICBFWFQ0X0lOTElORV9EQVRBX0RPVERPVF9TSVpFKQorCQkJcmV0dXJuOworCQkvKiBkZXZpY2UgZmlsZXMgbmV2ZXIgaGF2ZSBhICJzeXN0ZW0uZGF0YSIgZW50cnkgKi8KKwkJZ290byBpc2RpcjsKKwl9IGVsc2UgaWYgKGV4dGVudF9mcyAmJiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKSB7CisJCS8qIGV4dGVudCBtYXBwZWQgKi8KKwkJaWYgIChleHQyZnNfYm1hcDIoY3R4LT5mcywgcGN0eC0+aW5vLCBpbm9kZSwgMCwgMCwgMCwgMCwKKwkJCQkgJmJsaykpCisJCQlyZXR1cm47CisJCS8qIGRldmljZSBmaWxlcyBhcmUgbmV2ZXIgZXh0ZW50IG1hcHBlZCAqLworCQlub3RfZGV2aWNlKys7CisJfSBlbHNlIHsKKwkJZm9yIChpPTA7IGkgPCBFWFQyX05fQkxPQ0tTOyBpKyspIHsKKwkJCWJsayA9IGlub2RlLT5pX2Jsb2NrW2ldOworCQkJaWYgKCFibGspCisJCQkJY29udGludWU7CisJCQlpZiAoaSA+PSA0KQorCQkJCW5vdF9kZXZpY2UrKzsKKworCQkJaWYgKGJsayA8IGN0eC0+ZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkJCSAgICBibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChjdHgtPmZzLT5zdXBlcikgfHwKKwkJCSAgICBleHQyZnNfZmFzdF90ZXN0X2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCQkJICAgYmxrKSkKKwkJCQlyZXR1cm47CS8qIEludmFsaWQgYmxvY2ssIGNhbid0IGJlIGRpciAqLworCQl9CisJCWJsayA9IGlub2RlLT5pX2Jsb2NrWzBdOworCX0KKworCS8qCisJICogSWYgdGhlIG1vZGUgc2F5cyB0aGlzIGlzIGEgZGV2aWNlIGZpbGUgYW5kIHRoZSBpX2xpbmtzX2NvdW50IGZpZWxkCisJICogaXMgc2FuZSBhbmQgd2UgaGF2ZSBub3QgcnVsZWQgaXQgb3V0IGFzIGEgZGV2aWNlIGZpbGUgcHJldmlvdXNseSwKKwkgKiB3ZSBkZWNsYXJlIGl0IGEgZGV2aWNlIGZpbGUsIG5vdCBhIGRpcmVjdG9yeS4KKwkgKi8KKwlpZiAoKExJTlVYX1NfSVNDSFIoaW5vZGUtPmlfbW9kZSkgfHwgTElOVVhfU19JU0JMSyhpbm9kZS0+aV9tb2RlKSkgJiYKKwkgICAgKGlub2RlLT5pX2xpbmtzX2NvdW50ID09IDEpICYmICFub3RfZGV2aWNlKQorCQlyZXR1cm47CisKKwkvKiByZWFkIHRoZSBmaXJzdCBibG9jayAqLworCWVoYW5kbGVyX29wZXJhdGlvbihfKCJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIpKTsKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9kaXJfYmxvY2s0KGN0eC0+ZnMsIGJsaywgYnVmLCAwLCBwY3R4LT5pbm8pOworCWVoYW5kbGVyX29wZXJhdGlvbigwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm47CisKKwlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIGJ1ZjsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X3JlY19sZW4oY3R4LT5mcywgZGlyZW50LCAmcmVjX2xlbik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuOworCWlmICgoZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpICE9IDEpIHx8CisJICAgIChkaXJlbnQtPm5hbWVbMF0gIT0gJy4nKSB8fAorCSAgICAoZGlyZW50LT5pbm9kZSAhPSBwY3R4LT5pbm8pIHx8CisJICAgIChyZWNfbGVuIDwgMTIpIHx8CisJICAgIChyZWNfbGVuICUgNCkgfHwKKwkgICAgKHJlY19sZW4gPj0gY3R4LT5mcy0+YmxvY2tzaXplIC0gMTIpKQorCQlyZXR1cm47CisKKwlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIChidWYgKyByZWNfbGVuKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X3JlY19sZW4oY3R4LT5mcywgZGlyZW50LCAmcmVjX2xlbik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuOworCWlmICgoZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpICE9IDIpIHx8CisJICAgIChkaXJlbnQtPm5hbWVbMF0gIT0gJy4nKSB8fAorCSAgICAoZGlyZW50LT5uYW1lWzFdICE9ICcuJykgfHwKKwkgICAgKHJlY19sZW4gPCAxMikgfHwKKwkgICAgKHJlY19sZW4gJSA0KSkKKwkJcmV0dXJuOworCitpc2RpcjoKKwlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX1RSRUFUX0FTX0RJUkVDVE9SWSwgcGN0eCkpIHsKKwkJaW5vZGUtPmlfbW9kZSA9IChpbm9kZS0+aV9tb2RlICYgMDc3NzcpIHwgTElOVVhfU19JRkRJUjsKKwkJZTJmc2NrX3dyaXRlX2lub2RlX2Z1bGwoY3R4LCBwY3R4LT5pbm8sIGlub2RlLAorCQkJCQlFWFQyX0lOT0RFX1NJWkUoY3R4LT5mcy0+c3VwZXIpLAorCQkJCQkiY2hlY2tfaXNfcmVhbGx5X2RpciIpOworCX0KK30KKworZXh0ZXJuIGVycmNvZGVfdCBlMmZzY2tfc2V0dXBfaWNvdW50KGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqaWNvdW50X25hbWUsCisJCQkJICAgICBpbnQgZmxhZ3MsIGV4dDJfaWNvdW50X3QgaGludCwKKwkJCQkgICAgIGV4dDJfaWNvdW50X3QgKnJldCkKK3sKKwl1bnNpZ25lZCBpbnQJCXRocmVzaG9sZDsKKwl1bnNpZ25lZCBpbnQJCXNhdmVfdHlwZTsKKwlleHQyX2lub190CQludW1fZGlyczsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwljaGFyCQkJKnRkYl9kaXI7CisJaW50CQkJZW5hYmxlOworCisJKnJldCA9IDA7CisKKwlwcm9maWxlX2dldF9zdHJpbmcoY3R4LT5wcm9maWxlLCAic2NyYXRjaF9maWxlcyIsICJkaXJlY3RvcnkiLCAwLCAwLAorCQkJICAgJnRkYl9kaXIpOworCXByb2ZpbGVfZ2V0X3VpbnQoY3R4LT5wcm9maWxlLCAic2NyYXRjaF9maWxlcyIsCisJCQkgIm51bWRpcnNfdGhyZXNob2xkIiwgMCwgMCwgJnRocmVzaG9sZCk7CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJzY3JhdGNoX2ZpbGVzIiwKKwkJCSAgICAiaWNvdW50IiwgMCwgMSwgJmVuYWJsZSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X251bV9kaXJzKGN0eC0+ZnMsICZudW1fZGlycyk7CisJaWYgKHJldHZhbCkKKwkJbnVtX2RpcnMgPSAxMDI0OwkvKiBHdWVzcyAqLworCisJaWYgKGVuYWJsZSAmJiB0ZGJfZGlyICYmICFhY2Nlc3ModGRiX2RpciwgV19PSykgJiYKKwkgICAgKCF0aHJlc2hvbGQgfHwgbnVtX2RpcnMgPiB0aHJlc2hvbGQpKSB7CisJCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfaWNvdW50X3RkYihjdHgtPmZzLCB0ZGJfZGlyLAorCQkJCQkJICBmbGFncywgcmV0KTsKKwkJaWYgKHJldHZhbCA9PSAwKQorCQkJcmV0dXJuIDA7CisJfQorCWUyZnNja19zZXRfYml0bWFwX3R5cGUoY3R4LT5mcywgRVhUMkZTX0JNQVA2NF9SQlRSRUUsIGljb3VudF9uYW1lLAorCQkJICAgICAgICZzYXZlX3R5cGUpOworCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfaWNvdW50MihjdHgtPmZzLCBmbGFncywgMCwgaGludCwgcmV0KTsKKwljdHgtPmZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gc2F2ZV90eXBlOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmVjaGVja19iYWRfaW5vZGVfY2hlY2tzdW0oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCQkgICAgZTJmc2NrX3QgY3R4LAorCQkJCQkgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCisJLyoKKwkgKiBSZXJlYWQgaW5vZGUuICBJZiB3ZSBkb24ndCBzZWUgY2hlY2tzdW0gZXJyb3IsIHRoZW4gdGhpcyBpbm9kZQorCSAqIGhhcyBiZWVuIGZpeGVkIGVsc2V3aGVyZS4KKwkgKi8KKwljdHgtPnN0YXNoZWRfaW5vID0gMDsKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkJc2l6ZW9mKGlub2RlKSk7CisJaWYgKHJldHZhbCAmJiByZXR2YWwgIT0gRVhUMl9FVF9JTk9ERV9DU1VNX0lOVkFMSUQpCisJCXJldHVybiByZXR2YWw7CisJaWYgKCFyZXR2YWwpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBDaGVja3N1bSBzdGlsbCBkb2Vzbid0IG1hdGNoLiAgVGhhdCBpbXBsaWVzIHRoYXQgdGhlIGlub2RlIHBhc3NlcworCSAqIGFsbCB0aGUgc2FuaXR5IGNoZWNrcywgc28gbWF5YmUgdGhlIGNoZWNrc3VtIGlzIHNpbXBseSBjb3JydXB0LgorCSAqIFNlZSBpZiB0aGUgdXNlciB3aWxsIGdvIGZvciBmaXhpbmcgdGhhdC4KKwkgKi8KKwlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9JTk9ERV9PTkxZX0NTVU1fSU5WQUxJRCwgcGN0eCkpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCQkgc2l6ZW9mKGlub2RlKSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHZvaWQgcmVzZXJ2ZV9ibG9ja19mb3Jfcm9vdF9yZXBhaXIoZTJmc2NrX3QgY3R4KQoreworCWJsazY0X3QJCWJsayA9IDA7CisJZXJyY29kZV90CWVycjsKKwlleHQyX2ZpbHN5cwlmcyA9IGN0eC0+ZnM7CisKKwljdHgtPnJvb3RfcmVwYWlyX2Jsb2NrID0gMDsKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3VzZWRfbWFwLCBFWFQyX1JPT1RfSU5PKSkKKwkJcmV0dXJuOworCisJZXJyID0gZXh0MmZzX25ld19ibG9jazIoZnMsIDAsIGN0eC0+YmxvY2tfZm91bmRfbWFwLCAmYmxrKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgYmxrKTsKKwljdHgtPnJvb3RfcmVwYWlyX2Jsb2NrID0gYmxrOworfQorCitzdGF0aWMgdm9pZCByZXNlcnZlX2Jsb2NrX2Zvcl9sbmZfcmVwYWlyKGUyZnNja190IGN0eCkKK3sKKwlibGs2NF90CQlibGsgPSAwOworCWVycmNvZGVfdAllcnI7CisJZXh0Ml9maWxzeXMJZnMgPSBjdHgtPmZzOworCXN0YXRpYyBjb25zdCBjaGFyIG5hbWVbXSA9ICJsb3N0K2ZvdW5kIjsKKwlleHQyX2lub190CWlubzsKKworCWN0eC0+bG5mX3JlcGFpcl9ibG9jayA9IDA7CisJaWYgKCFleHQyZnNfbG9va3VwKGZzLCBFWFQyX1JPT1RfSU5PLCBuYW1lLCBzaXplb2YobmFtZSktMSwgMCwgJmlubykpCisJCXJldHVybjsKKworCWVyciA9IGV4dDJmc19uZXdfYmxvY2syKGZzLCAwLCBjdHgtPmJsb2NrX2ZvdW5kX21hcCwgJmJsayk7CisJaWYgKGVycikKKwkJcmV0dXJuOworCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsIGJsayk7CisJY3R4LT5sbmZfcmVwYWlyX2Jsb2NrID0gYmxrOworfQorCitzdGF0aWMgZXJyY29kZV90IGdldF9pbmxpbmVfZGF0YV9lYV9zaXplKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkJIHNpemVfdCAqc3opCit7CisJdm9pZCAqcDsKKwlzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmhhbmRsZTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3hhdHRyc19vcGVuKGZzLCBpbm8sICZoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfeGF0dHJzX3JlYWQoaGFuZGxlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKworCXJldHZhbCA9IGV4dDJmc194YXR0cl9nZXQoaGFuZGxlLCAic3lzdGVtLmRhdGEiLCAmcCwgc3opOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCWV4dDJmc19mcmVlX21lbSgmcCk7CitlcnI6CisJKHZvaWQpIGV4dDJmc194YXR0cnNfY2xvc2UoJmhhbmRsZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHZvaWQgZmluaXNoX3Byb2Nlc3NpbmdfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCQkgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCwKKwkJCQkgICAgaW50IGZhaWxlZF9jc3VtKQoreworCWlmICghZmFpbGVkX2NzdW0pCisJCXJldHVybjsKKworCS8qCisJICogSWYgdGhlIGlub2RlIGZhaWxlZCB0aGUgY2hlY2tzdW0gYW5kIHRoZSB1c2VyIGRpZG4ndAorCSAqIGNsZWFyIHRoZSBpbm9kZSwgdGVzdCB0aGUgY2hlY2tzdW0gYWdhaW4gLS0gaWYgaXQgc3RpbGwKKwkgKiBmYWlscywgYXNrIHRoZSB1c2VyIGlmIHRoZSBjaGVja3N1bSBzaG91bGQgYmUgY29ycmVjdGVkLgorCSAqLworCXBjdHgtPmVycmNvZGUgPSByZWNoZWNrX2JhZF9pbm9kZV9jaGVja3N1bShjdHgtPmZzLCBpbm8sIGN0eCwgcGN0eCk7CisJaWYgKHBjdHgtPmVycmNvZGUpCisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7Cit9CisjZGVmaW5lIEZJTklTSF9JTk9ERV9MT09QKGN0eCwgaW5vLCBwY3R4LCBmYWlsZWRfY3N1bSkgXAorCWRvIHsgXAorCQlmaW5pc2hfcHJvY2Vzc2luZ19pbm9kZSgoY3R4KSwgKGlubyksIChwY3R4KSwgKGZhaWxlZF9jc3VtKSk7IFwKKwkJaWYgKChjdHgpLT5mbGFncyAmIEUyRl9GTEFHX0FCT1JUKSBcCisJCQlyZXR1cm47IFwKKwl9IHdoaWxlICgwKQorCitzdGF0aWMgaW50IGNvdWxkX2JlX2Jsb2NrX21hcChleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCV9fdTMyIHg7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKSB7CisJCXggPSBpbm9kZS0+aV9ibG9ja1tpXTsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJeCA9IGV4dDJmc19zd2FiMzIoeCk7CisjZW5kaWYKKwkJaWYgKHggPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBhbiBpbm9kZSB0aGF0IGhhcyBib3RoIGV4dGVudHMgYW5kIGlubGluZSBkYXRhCisgKiBpbm9kZSBmbGFncyBzZXQuICBSZXR1cm5zIC0xIGlmIHdlIGRlY2lkZSB0byBlcmFzZSB0aGUgaW5vZGUsIDAgb3RoZXJ3aXNlLgorICovCitzdGF0aWMgaW50IGZpeF9pbmxpbmVfZGF0YV9leHRlbnRzX2ZpbGUoZTJmc2NrX3QgY3R4LAorCQkJCQlleHQyX2lub190IGlubywKKwkJCQkJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCQlpbnQgaW5vZGVfc2l6ZSwKKwkJCQkJc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlzaXplX3QgbWF4X2lubGluZV9lYV9zaXplOworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlpbnQgZGlydHkgPSAwOworCisJLyogQm90aCBmZWF0dXJlIGZsYWdzIG5vdCBzZXQ/ICBKdXN0IHJ1biB0aGUgcmVndWxhciBjaGVja3MgKi8KKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikgJiYKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCS8qIENsZWFyIGJvdGggZmxhZ3MgaWYgaXQncyBhIHNwZWNpYWwgZmlsZSAqLworCWlmIChMSU5VWF9TX0lTQ0hSKGlub2RlLT5pX21vZGUpIHx8CisJICAgIExJTlVYX1NfSVNCTEsoaW5vZGUtPmlfbW9kZSkgfHwKKwkgICAgTElOVVhfU19JU0ZJRk8oaW5vZGUtPmlfbW9kZSkgfHwKKwkgICAgTElOVVhfU19JU1NPQ0soaW5vZGUtPmlfbW9kZSkpIHsKKwkJY2hlY2tfZXh0ZW50c19pbmxpbmVkYXRhKGN0eCwgcGN0eCk7CisJCXJldHVybiAwOworCX0KKworCS8qIElmIGl0IGxvb2tzIGxpa2UgYW4gZXh0ZW50IHRyZWUsIHRyeSB0byBjbGVhciBpbmxpbmVkYXRhICovCisJaWYgKGV4dDJmc19leHRlbnRfaGVhZGVyX3ZlcmlmeShpbm9kZS0+aV9ibG9jaywKKwkJCQkgc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSkgPT0gMCAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfQ0xFQVJfSU5MSU5FX0RBVEFfRk9SX0VYVEVOVCwgcGN0eCkpIHsKKwkJaW5vZGUtPmlfZmxhZ3MgJj0gfkVYVDRfSU5MSU5FX0RBVEFfRkw7CisJCWRpcnR5ID0gMTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogSWYgaXQgbG9va3Mgc2hvcnQgZW5vdWdoIHRvIGJlIGlubGluZSBkYXRhLCB0cnkgdG8gY2xlYXIgZXh0ZW50cyAqLworCWlmIChpbm9kZV9zaXplID4gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKQorCQltYXhfaW5saW5lX2VhX3NpemUgPSBpbm9kZV9zaXplIC0KKwkJCQkgICAgIChFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCQkJCSAgICAgICgoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKilpbm9kZSktPmlfZXh0cmFfaXNpemUpOworCWVsc2UKKwkJbWF4X2lubGluZV9lYV9zaXplID0gMDsKKwlpZiAoRVhUMl9JX1NJWkUoaW5vZGUpIDwKKwkgICAgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSArIG1heF9pbmxpbmVfZWFfc2l6ZSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfQ0xFQVJfRVhURU5UX0ZPUl9JTkxJTkVfREFUQSwgcGN0eCkpIHsKKwkJaW5vZGUtPmlfZmxhZ3MgJj0gfkVYVDRfRVhURU5UU19GTDsKKwkJZGlydHkgPSAxOworCQlnb3RvIG91dDsKKwl9CisKKwkvKgorCSAqIFRvbyBiaWcgZm9yIGlubGluZSBkYXRhLCBidXQgbm8gZXZpZGVuY2Ugb2YgZXh0ZW50IHRyZWUgLQorCSAqIG1heWJlIGl0J3MgYSBibG9jayBtYXAgZmlsZT8gIElmIHRoZSBtYXBwaW5ncyBhbGwgbG9vayB2YWxpZD8KKwkgKi8KKwlpZiAoY291bGRfYmVfYmxvY2tfbWFwKGZzLCBpbm9kZSkgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0NMRUFSX0VYVEVOVF9JTkxJTkVfREFUQV9GTEFHUywgcGN0eCkpIHsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJaW50IGk7CisKKwkJZm9yIChpID0gMDsgaSA8IEVYVDJfTl9CTE9DS1M7IGkrKykKKwkJCWlub2RlLT5pX2Jsb2NrW2ldID0gZXh0MmZzX3N3YWIzMihpbm9kZS0+aV9ibG9ja1tpXSk7CisjZW5kaWYKKworCQlpbm9kZS0+aV9mbGFncyAmPSB+KEVYVDRfRVhURU5UU19GTCB8IEVYVDRfSU5MSU5FX0RBVEFfRkwpOworCQlkaXJ0eSA9IDE7CisJCWdvdG8gb3V0OworCX0KKworCS8qIE9oIHdlbGwsIGp1c3QgY2xlYXIgdGhlIGJ1c3RlZCBpbm9kZS4gKi8KKwlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0NMRUFSX0VYVEVOVF9JTkxJTkVfREFUQV9JTk9ERSwgcGN0eCkpIHsKKwkJZTJmc2NrX2NsZWFyX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgMCwgInBhc3MxIik7CisJCXJldHVybiAtMTsKKwl9CisKK291dDoKKwlpZiAoZGlydHkpCisJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsICJwYXNzMSIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHBhc3MxX3JlYWRhaGVhZChlMmZzY2tfdCBjdHgsIGRncnBfdCAqZ3JvdXAsIGV4dDJfaW5vX3QgKm5leHRfaW5vKQoreworCWV4dDJfaW5vX3QgaW5vZGVzX2luX2dyb3VwID0gMCwgaW5vZGVzX3Blcl9ibG9jaywgaW5vZGVzX3Blcl9idWZmZXI7CisJZGdycF90IHN0YXJ0ID0gKmdyb3VwLCBncnA7CisJYmxrNjRfdCBibG9ja3NfdG9fcmVhZCA9IDA7CisJZXJyY29kZV90IGVyciA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmIChjdHgtPnJlYWRhaGVhZF9rYiA9PSAwKQorCQlnb3RvIG91dDsKKworCS8qIEtlZXAgaXRlcmF0aW5nIGdyb3VwcyB1bnRpbCB3ZSBoYXZlIGVub3VnaCB0byByZWFkYWhlYWQgKi8KKwlpbm9kZXNfcGVyX2Jsb2NrID0gRVhUMl9JTk9ERVNfUEVSX0JMT0NLKGN0eC0+ZnMtPnN1cGVyKTsKKwlmb3IgKGdycCA9IHN0YXJ0OyBncnAgPCBjdHgtPmZzLT5ncm91cF9kZXNjX2NvdW50OyBncnArKykgeworCQlpZiAoZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoY3R4LT5mcywgZ3JwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCkpCisJCQljb250aW51ZTsKKwkJaW5vZGVzX2luX2dyb3VwID0gY3R4LT5mcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAtCisJCQkJCWV4dDJmc19iZ19pdGFibGVfdW51c2VkKGN0eC0+ZnMsIGdycCk7CisJCWJsb2Nrc190b19yZWFkICs9IChpbm9kZXNfaW5fZ3JvdXAgKyBpbm9kZXNfcGVyX2Jsb2NrIC0gMSkgLworCQkJCQlpbm9kZXNfcGVyX2Jsb2NrOworCQlpZiAoYmxvY2tzX3RvX3JlYWQgKiBjdHgtPmZzLT5ibG9ja3NpemUgPgorCQkgICAgY3R4LT5yZWFkYWhlYWRfa2IgKiAxMDI0KQorCQkJYnJlYWs7CisJfQorCisJZXJyID0gZTJmc2NrX3JlYWRhaGVhZChjdHgtPmZzLCBFMkZTQ0tfUkVBREFfSVRBQkxFLCBzdGFydCwKKwkJCSAgICAgICBncnAgLSBzdGFydCArIDEpOworCWlmIChlcnIgPT0gRUFHQUlOKSB7CisJCWN0eC0+cmVhZGFoZWFkX2tiIC89IDI7CisJCWVyciA9IDA7CisJfQorCitvdXQ6CisJaWYgKGVycikgeworCQkvKiBFcnJvcjsgZGlzYWJsZSBpdGFibGUgcmVhZGFoZWFkICovCisJCSpncm91cCA9IGN0eC0+ZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJCSpuZXh0X2lubyA9IGN0eC0+ZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudDsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBEb24ndCBkbyBtb3JlIHJlYWRhaGVhZCB1bnRpbCB3ZSd2ZSByZWFjaGVkIHRoZSBmaXJzdCBpbm9kZQorCQkgKiBvZiB0aGUgbGFzdCBpbm9kZSBzY2FuIGJ1ZmZlciBibG9jayBmb3IgdGhlIGxhc3QgZ3JvdXAuCisJCSAqLworCQkqZ3JvdXAgPSBncnAgKyAxOworCQlpbm9kZXNfcGVyX2J1ZmZlciA9IChjdHgtPmlub2RlX2J1ZmZlcl9ibG9ja3MgPworCQkJCSAgICAgY3R4LT5pbm9kZV9idWZmZXJfYmxvY2tzIDoKKwkJCQkgICAgIEVYVDJfSU5PREVfU0NBTl9ERUZBVUxUX0JVRkZFUl9CTE9DS1MpICoKKwkJCQkgICAgY3R4LT5mcy0+YmxvY2tzaXplIC8KKwkJCQkgICAgRVhUMl9JTk9ERV9TSVpFKGN0eC0+ZnMtPnN1cGVyKTsKKwkJaW5vZGVzX2luX2dyb3VwLS07CisJCSpuZXh0X2lubyA9IGlub2Rlc19pbl9ncm91cCAtCisJCQkgICAgKGlub2Rlc19pbl9ncm91cCAlIGlub2Rlc19wZXJfYnVmZmVyKSArIDEgKworCQkJICAgIChncnAgKiBjdHgtPmZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwKTsKKwl9Cit9CisKKy8qCisgKiBDaGVjayBpZiB0aGUgcGFzc2VkIGlubyBpcyBvbmUgb2YgdGhlIHVzZWQgc3VwZXJibG9jayBxdW90YSBpbm9kZXMuCisgKgorICogQmVmb3JlIHRoZSBxdW90YSBpbm9kZXMgd2VyZSBqb3VybmFsZWQsIG9sZGVyIHN1cGVyYmxvY2sgcXVvdGEgaW5vZGVzCisgKiB3ZXJlIGp1c3QgcmVndWxhciBmaWxlcyBpbiB0aGUgZmlsZXN5c3RlbSBhbmQgbm90IHJlc2VydmVkIGlub2Rlcy4gIFRoaXMKKyAqIGNoZWNrcyBpZiB0aGUgcGFzc2VkIGlubyBpcyBvbmUgb2YgdGhlIHNfKl9xdW90YV9pbnVtIHN1cGVyYmxvY2sgZmllbGRzLAorICogd2hpY2ggbWF5IG5vdCBhbHdheXMgYmUgdGhlIHNhbWUgYXMgdGhlIEVYVDRfKl9RVU9UQV9JTk8gZmllbGRzLgorICovCitzdGF0aWMgaW50IHF1b3RhX2ludW1faXNfc3VwZXIoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiLCBleHQyX2lub190IGlubykKK3sKKwllbnVtIHF1b3RhX3R5cGUgcXR5cGU7CisKKwlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspCisJCWlmICgqcXVvdGFfc2JfaW51bXAoc2IsIHF0eXBlKSA9PSBpbm8pCisJCQlyZXR1cm4gMTsKKworCXJldHVybiAwOworfQorCisvKgorICogQ2hlY2sgaWYgdGhlIHBhc3NlZCBpbm8gaXMgb25lIG9mIHRoZSByZXNlcnZlZCBxdW90YSBpbm9kZXMuCisgKiBUaGlzIGNoZWNrcyBpZiB0aGUgaW5vZGUgbnVtYmVyIGlzIG9uZSBvZiB0aGUgcmVzZXJ2ZWQgRVhUNF8qX1FVT1RBX0lOTworICogaW5vZGVzLiAgVGhlc2UgaW5vZGVzIG1heSBvciBtYXkgbm90IGJlIGluIHVzZSBieSB0aGUgcXVvdGEgZmVhdHVyZS4KKyAqLworc3RhdGljIGludCBxdW90YV9pbnVtX2lzX3Jlc2VydmVkKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubykKK3sKKwllbnVtIHF1b3RhX3R5cGUgcXR5cGU7CisKKwlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspCisJCWlmIChxdW90YV90eXBlMmludW0ocXR5cGUsIGZzLT5zdXBlcikgPT0gaW5vKQorCQkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBlMmZzY2tfcGFzczEoZTJmc2NrX3QgY3R4KQoreworCWludAlpOworCV9fdTY0CW1heF9zaXplczsKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAlpbm8gPSAwOworCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSA9IE5VTEw7CisJZXh0Ml9pbm9kZV9zY2FuCXNjYW4gPSBOVUxMOworCWNoYXIJCSpibG9ja19idWYgPSBOVUxMOworI2lmZGVmIFJFU09VUkNFX1RSQUNLCisJc3RydWN0IHJlc291cmNlX3RyYWNrCXJ0cmFjazsKKyNlbmRpZgorCXVuc2lnbmVkIGNoYXIJZnJhZywgZnNpemU7CisJc3RydWN0CQlwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwlzdHJ1Y3QJCXNjYW5fY2FsbGJhY2tfc3RydWN0IHNjYW5fc3RydWN0OworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGN0eC0+ZnMtPnN1cGVyOworCWNvbnN0IGNoYXIJKm9sZF9vcDsKKwlpbnQJCWltYWdpY19mcywgZXh0ZW50X2ZzLCBpbmxpbmVkYXRhX2ZzOworCWludAkJbG93X2R0aW1lX2NoZWNrID0gMTsKKwlpbnQJCWlub2RlX3NpemUgPSBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKwlpbnQJCWZhaWxlZF9jc3VtID0gMDsKKwlleHQyX2lub190CWlub190aHJlc2hvbGQgPSAwOworCWRncnBfdAkJcmFfZ3JvdXAgPSAwOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCS8qIElmIHdlIGNhbiBkbyByZWFkYWhlYWQsIGZpZ3VyZSBvdXQgaG93IG1hbnkgZ3JvdXBzIHRvIHB1bGwgaW4uICovCisJaWYgKCFlMmZzY2tfY2FuX3JlYWRhaGVhZChjdHgtPmZzKSkKKwkJY3R4LT5yZWFkYWhlYWRfa2IgPSAwOworCWVsc2UgaWYgKGN0eC0+cmVhZGFoZWFkX2tiID09IH4wVUxMKQorCQljdHgtPnJlYWRhaGVhZF9rYiA9IGUyZnNja19ndWVzc19yZWFkYWhlYWQoY3R4LT5mcyk7CisJcGFzczFfcmVhZGFoZWFkKGN0eCwgJnJhX2dyb3VwLCAmaW5vX3RocmVzaG9sZCk7CisKKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX1BBU1NfSEVBREVSLCAmcGN0eCk7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2Rpcl9pbmRleChmcy0+c3VwZXIpICYmCisJICAgICEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykpIHsKKwkJaWYgKGV4dDJmc191MzJfbGlzdF9jcmVhdGUoJmN0eC0+ZGlyc190b19oYXNoLCA1MCkpCisJCQljdHgtPmRpcnNfdG9faGFzaCA9IDA7CisJfQorCisjaWZkZWYgTVRSQUNFCisJbXRyYWNlX3ByaW50KCJQYXNzIDEiKTsKKyNlbmRpZgorCisjZGVmaW5lIEVYVDJfQlBQKGJpdHMpICgxVUxMIDw8ICgoYml0cykgLSAyKSkKKworCWZvciAoaSA9IEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFOyBpIDw9IEVYVDJfTUFYX0JMT0NLX0xPR19TSVpFOyBpKyspIHsKKwkJbWF4X3NpemVzID0gRVhUMl9ORElSX0JMT0NLUyArIEVYVDJfQlBQKGkpOworCQltYXhfc2l6ZXMgPSBtYXhfc2l6ZXMgKyBFWFQyX0JQUChpKSAqIEVYVDJfQlBQKGkpOworCQltYXhfc2l6ZXMgPSBtYXhfc2l6ZXMgKyBFWFQyX0JQUChpKSAqIEVYVDJfQlBQKGkpICogRVhUMl9CUFAoaSk7CisJCW1heF9zaXplcyA9IChtYXhfc2l6ZXMgKiAoMVVMIDw8IGkpKTsKKwkJZXh0Ml9tYXhfc2l6ZXNbaSAtIEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFXSA9IG1heF9zaXplczsKKwl9CisjdW5kZWYgRVhUMl9CUFAKKworCWltYWdpY19mcyA9IGV4dDJmc19oYXNfZmVhdHVyZV9pbWFnaWNfaW5vZGVzKHNiKTsKKwlleHRlbnRfZnMgPSBleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhzYik7CisJaW5saW5lZGF0YV9mcyA9IGV4dDJmc19oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShzYik7CisKKwkvKgorCSAqIEFsbG9jYXRlIGJpdG1hcHMgc3RydWN0dXJlcworCSAqLworCXBjdHguZXJyY29kZSA9IGUyZnNja19hbGxvY2F0ZV9pbm9kZV9iaXRtYXAoZnMsIF8oImluLXVzZSBpbm9kZSBtYXAiKSwKKwkJCQkJCSAgICBFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkJCQkJCSAgICAiaW5vZGVfdXNlZF9tYXAiLAorCQkJCQkJICAgICZjdHgtPmlub2RlX3VzZWRfbWFwKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gMTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLAorCQkJXygiZGlyZWN0b3J5IGlub2RlIG1hcCIpLAorCQkJRVhUMkZTX0JNQVA2NF9BVVRPRElSLAorCQkJImlub2RlX2Rpcl9tYXAiLCAmY3R4LT5pbm9kZV9kaXJfbWFwKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gMjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLAorCQkJXygicmVndWxhciBmaWxlIGlub2RlIG1hcCIpLCBFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkJCSJpbm9kZV9yZWdfbWFwIiwgJmN0eC0+aW5vZGVfcmVnX21hcCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4Lm51bSA9IDY7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9BTExPQ0FURV9JQklUTUFQX0VSUk9SLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisJcGN0eC5lcnJjb2RlID0gZTJmc2NrX2FsbG9jYXRlX3N1YmNsdXN0ZXJfYml0bWFwKGZzLAorCQkJXygiaW4tdXNlIGJsb2NrIG1hcCIpLCBFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkJCSJibG9ja19mb3VuZF9tYXAiLCAmY3R4LT5ibG9ja19mb3VuZF9tYXApOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5udW0gPSAxOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfQkJJVE1BUF9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCXBjdHguZXJyY29kZSA9IGUyZnNja19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoZnMsCisJCQlfKCJtZXRhZGF0YSBibG9jayBtYXAiKSwgRVhUMkZTX0JNQVA2NF9SQlRSRUUsCisJCQkiYmxvY2tfbWV0YWRhdGFfbWFwIiwgJmN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gMTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0JCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfc2V0dXBfaWNvdW50KGN0eCwgImlub2RlX2xpbmtfaW5mbyIsIDAsIE5VTEwsCisJCQkJCSAgICZjdHgtPmlub2RlX2xpbmtfaW5mbyk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfSUNPVU5ULCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisJaW5vZGUgPSAoc3RydWN0IGV4dDJfaW5vZGUgKikKKwkJZTJmc2NrX2FsbG9jYXRlX21lbW9yeShjdHgsIGlub2RlX3NpemUsICJzY3JhdGNoIGlub2RlIik7CisKKwlpbm9kZXNfdG9fcHJvY2VzcyA9IChzdHJ1Y3QgcHJvY2Vzc19pbm9kZV9ibG9jayAqKQorCQllMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkJCQkgICAgICAgKGN0eC0+cHJvY2Vzc19pbm9kZV9zaXplICoKKwkJCQkJc2l6ZW9mKHN0cnVjdCBwcm9jZXNzX2lub2RlX2Jsb2NrKSksCisJCQkJICAgICAgICJhcnJheSBvZiBpbm9kZXMgdG8gcHJvY2VzcyIpOworCXByb2Nlc3NfaW5vZGVfY291bnQgPSAwOworCisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2luaXRfZGJsaXN0KGZzLCAwKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9BTExPQ0FURV9EQkNPVU5ULCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCWdvdG8gZW5kaXQ7CisJfQorCisJLyoKKwkgKiBJZiB0aGUgbGFzdCBvcnBoYW4gZmllbGQgaXMgc2V0LCBjbGVhciBpdCwgc2luY2UgdGhlIHBhc3MxCisJICogcHJvY2Vzc2luZyB3aWxsIGF1dG9tYXRpY2FsbHkgZmluZCBhbmQgY2xlYXIgdGhlIG9ycGhhbnMuCisJICogSW4gdGhlIGZ1dHVyZSwgd2UgbWF5IHdhbnQgdG8gdHJ5IHVzaW5nIHRoZSBsYXN0X29ycGhhbgorCSAqIGxpbmtlZCBsaXN0IG91cnNlbHZlcywgYnV0IGZvciBub3csIHdlIGNsZWFyIGl0IHNvIHRoYXQgdGhlCisJICogZXh0MyBtb3VudCBjb2RlIHdvbid0IGdldCBjb25mdXNlZC4KKwkgKi8KKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSkgeworCQlpZiAoZnMtPnN1cGVyLT5zX2xhc3Rfb3JwaGFuKSB7CisJCQlmcy0+c3VwZXItPnNfbGFzdF9vcnBoYW4gPSAwOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQl9CisJfQorCisJbWFya190YWJsZV9ibG9ja3MoY3R4KTsKKwlwY3R4LmVycmNvZGUgPSBleHQyZnNfY29udmVydF9zdWJjbHVzdGVyX2JpdG1hcChmcywKKwkJCQkJCSZjdHgtPmJsb2NrX2ZvdW5kX21hcCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQ09OVkVSVF9TVUJDTFVTVEVSLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCWdvdG8gZW5kaXQ7CisJfQorCWJsb2NrX2J1ZiA9IChjaGFyICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBmcy0+YmxvY2tzaXplICogMywKKwkJCQkJCSAgICAiYmxvY2sgaW50ZXJhdGUgYnVmZmVyIik7CisJaWYgKEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpID09IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkKKwkJZTJmc2NrX3VzZV9pbm9kZV9zaG9ydGN1dHMoY3R4LCAxKTsKKwllMmZzY2tfaW50ZXJjZXB0X2Jsb2NrX2FsbG9jYXRpb25zKGN0eCk7CisJb2xkX29wID0gZWhhbmRsZXJfb3BlcmF0aW9uKF8oIm9wZW5pbmcgaW5vZGUgc2NhbiIpKTsKKwlwY3R4LmVycmNvZGUgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGZzLCBjdHgtPmlub2RlX2J1ZmZlcl9ibG9ja3MsCisJCQkJCSAgICAgICZzY2FuKTsKKwllaGFuZGxlcl9vcGVyYXRpb24ob2xkX29wKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9JU0NBTl9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlnb3RvIGVuZGl0OworCX0KKwlleHQyZnNfaW5vZGVfc2Nhbl9mbGFncyhzY2FuLCBFWFQyX1NGX1NLSVBfTUlTU0lOR19JVEFCTEUgfAorCQkJCSAgICAgIEVYVDJfU0ZfV0FSTl9HQVJCQUdFX0lOT0RFUywgMCk7CisJY3R4LT5zdGFzaGVkX2lub2RlID0gaW5vZGU7CisJc2Nhbl9zdHJ1Y3QuY3R4ID0gY3R4OworCXNjYW5fc3RydWN0LmJsb2NrX2J1ZiA9IGJsb2NrX2J1ZjsKKwlleHQyZnNfc2V0X2lub2RlX2NhbGxiYWNrKHNjYW4sIHNjYW5fY2FsbGJhY2ssICZzY2FuX3N0cnVjdCk7CisJaWYgKGN0eC0+cHJvZ3Jlc3MgJiYgKChjdHgtPnByb2dyZXNzKShjdHgsIDEsIDAsCisJCQkJCSAgICAgIGN0eC0+ZnMtPmdyb3VwX2Rlc2NfY291bnQpKSkKKwkJZ290byBlbmRpdDsKKwlpZiAoKGZzLT5zdXBlci0+c193dGltZSA8IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpIHx8CisJICAgIChmcy0+c3VwZXItPnNfbXRpbWUgPCBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KSB8fAorCSAgICAoZnMtPnN1cGVyLT5zX21rZnNfdGltZSAmJgorCSAgICAgZnMtPnN1cGVyLT5zX21rZnNfdGltZSA8IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKQorCQlsb3dfZHRpbWVfY2hlY2sgPSAwOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tbXAoZnMtPnN1cGVyKSAmJgorCSAgICBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrID4gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgJiYKKwkgICAgZnMtPnN1cGVyLT5zX21tcF9ibG9jayA8IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQkJICBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrKTsKKworCS8qIFNldCB1cCBjdHgtPmxvc3RfYW5kX2ZvdW5kIGlmIHBvc3NpYmxlICovCisJKHZvaWQpIGUyZnNja19nZXRfbG9zdF9hbmRfZm91bmQoY3R4LCAwKTsKKworCXdoaWxlICgxKSB7CisJCWlmIChpbm8gJSAoZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgKiA0KSA9PSAxKSB7CisJCQlpZiAoZTJmc2NrX21tcF91cGRhdGUoZnMpKQorCQkJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJCX0KKwkJb2xkX29wID0gZWhhbmRsZXJfb3BlcmF0aW9uKF8oImdldHRpbmcgbmV4dCBpbm9kZSBmcm9tIHNjYW4iKSk7CisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKHNjYW4sICZpbm8sCisJCQkJCQkJICBpbm9kZSwgaW5vZGVfc2l6ZSk7CisJCWlmIChpbm8gPiBpbm9fdGhyZXNob2xkKQorCQkJcGFzczFfcmVhZGFoZWFkKGN0eCwgJnJhX2dyb3VwLCAmaW5vX3RocmVzaG9sZCk7CisJCWVoYW5kbGVyX29wZXJhdGlvbihvbGRfb3ApOworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQkJZ290byBlbmRpdDsKKwkJaWYgKHBjdHguZXJyY29kZSA9PSBFWFQyX0VUX0JBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSkgeworCQkJLyoKKwkJCSAqIElmIGJhZGJsb2NrcyBzYXlzIGJhZGJsb2NrcyBpcyBiYWQsIG9mZmVyIHRvIGNsZWFyCisJCQkgKiB0aGUgbGlzdCwgdXBkYXRlIHRoZSBpbi1jb3JlIGJiIGxpc3QsIGFuZCByZXN0YXJ0CisJCQkgKiB0aGUgaW5vZGUgc2Nhbi4KKwkJCSAqLworCQkJaWYgKGlubyA9PSBFWFQyX0JBRF9JTk8gJiYKKwkJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfQkFEQkxPQ0tTX0lOX0JBREJMT0NLUywKKwkJCQkJJnBjdHgpKSB7CisJCQkJZXJyY29kZV90IGVycjsKKworCQkJCWUyZnNja19jbGVhcl9pbm9kZShjdHgsIGlubywgaW5vZGUsIDAsICJwYXNzMSIpOworCQkJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGN0eC0+ZnMtPmJhZGJsb2Nrcyk7CisJCQkJY3R4LT5mcy0+YmFkYmxvY2tzID0gTlVMTDsKKwkJCQllcnIgPSBleHQyZnNfcmVhZF9iYl9pbm9kZShjdHgtPmZzLAorCQkJCQkJCSZjdHgtPmZzLT5iYWRibG9ja3MpOworCQkJCWlmIChlcnIpIHsKKwkJCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0lTQ0FOX0VSUk9SLAorCQkJCQkJICAgICZwY3R4KTsKKwkJCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCQkJZ290byBlbmRpdDsKKwkJCQl9CisJCQkJZXJyID0gZXh0MmZzX2lub2RlX3NjYW5fZ290b19ibG9ja2dyb3VwKHNjYW4sCisJCQkJCQkJCQkwKTsKKwkJCQlpZiAoZXJyKSB7CisJCQkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9JU0NBTl9FUlJPUiwKKwkJCQkJCSAgICAmcGN0eCk7CisJCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJCWdvdG8gZW5kaXQ7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKCFjdHgtPmlub2RlX2JiX21hcCkKKwkJCQlhbGxvY19iYl9tYXAoY3R4KTsKKwkJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9iYl9tYXAsIGlubyk7CisJCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGlubyk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAocGN0eC5lcnJjb2RlICYmCisJCSAgICBwY3R4LmVycmNvZGUgIT0gRVhUMl9FVF9JTk9ERV9DU1VNX0lOVkFMSUQgJiYKKwkJICAgIHBjdHguZXJyY29kZSAhPSBFWFQyX0VUX0lOT0RFX0lTX0dBUkJBR0UpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9JU0NBTl9FUlJPUiwgJnBjdHgpOworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCWdvdG8gZW5kaXQ7CisJCX0KKwkJaWYgKCFpbm8pCisJCQlicmVhazsKKwkJcGN0eC5pbm8gPSBpbm87CisJCXBjdHguaW5vZGUgPSBpbm9kZTsKKwkJY3R4LT5zdGFzaGVkX2lubyA9IGlubzsKKworCQkvKiBDbGVhciB0cmFzaGVkIGlub2RlPyAqLworCQlpZiAocGN0eC5lcnJjb2RlID09IEVYVDJfRVRfSU5PREVfSVNfR0FSQkFHRSAmJgorCQkgICAgaW5vZGUtPmlfbGlua3NfY291bnQgPiAwICYmCisJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfSU5PREVfSVNfR0FSQkFHRSwgJnBjdHgpKSB7CisJCQlwY3R4LmVycmNvZGUgPSAwOworCQkJZTJmc2NrX2NsZWFyX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgMCwgInBhc3MxIik7CisJCX0KKwkJZmFpbGVkX2NzdW0gPSBwY3R4LmVycmNvZGUgIT0gMDsKKworCQlpZiAoaW5vZGUtPmlfbGlua3NfY291bnQpIHsKKwkJCXBjdHguZXJyY29kZSA9IGV4dDJmc19pY291bnRfc3RvcmUoY3R4LT5pbm9kZV9saW5rX2luZm8sCisJCQkJCSAgIGlubywgaW5vZGUtPmlfbGlua3NfY291bnQpOworCQkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJCXBjdHgubnVtID0gaW5vZGUtPmlfbGlua3NfY291bnQ7CisJCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0lDT1VOVF9TVE9SRSwgJnBjdHgpOworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJZ290byBlbmRpdDsKKwkJCX0KKwkJfQorCisJCS8qIENvbmZsaWN0aW5nIGlubGluZWRhdGEvZXh0ZW50cyBpbm9kZSBmbGFncz8gKi8KKwkJaWYgKChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpICYmCisJCSAgICAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKSB7CisJCQlpbnQgcmVzID0gZml4X2lubGluZV9kYXRhX2V4dGVudHNfZmlsZShjdHgsIGlubywgaW5vZGUsCisJCQkJCQkJICAgICAgIGlub2RlX3NpemUsCisJCQkJCQkJICAgICAgICZwY3R4KTsKKwkJCWlmIChyZXMgPCAwKSB7CisJCQkJLyogc2tpcCBGSU5JU0hfSU5PREVfTE9PUCAqLworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKKwkJLyogVGVzdCBmb3IgaW5jb3JyZWN0IGlubGluZV9kYXRhIGZsYWdzIHNldHRpbmdzLiAqLworCQlpZiAoKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkgJiYgIWlubGluZWRhdGFfZnMgJiYKKwkJICAgIChpbm8gPj0gRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpKSkgeworCQkJc2l6ZV90IHNpemUgPSAwOworCisJCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfaW5saW5lX2RhdGFfc2l6ZShmcywgaW5vLCAmc2l6ZSk7CisJCQlpZiAoIXBjdHguZXJyY29kZSAmJiBzaXplICYmCisJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0lOTElORV9EQVRBX0ZFQVRVUkUsICZwY3R4KSkgeworCQkJCWV4dDJmc19zZXRfZmVhdHVyZV9pbmxpbmVfZGF0YShzYik7CisJCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJCWlubGluZWRhdGFfZnMgPSAxOworCQkJfSBlbHNlIGlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfSU5MSU5FX0RBVEFfU0VULCAmcGN0eCkpIHsKKwkJCQllMmZzY2tfY2xlYXJfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCAwLCAicGFzczEiKTsKKwkJCQkvKiBza2lwIEZJTklTSF9JTk9ERV9MT09QICovCisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQkvKiBUZXN0IGZvciBpbmxpbmUgZGF0YSBmbGFnIGJ1dCBubyBhdHRyICovCisJCWlmICgoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSAmJiBpbmxpbmVkYXRhX2ZzICYmCisJCSAgICBFWFQyX0lfU0laRShpbm9kZSkgPiBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFICYmCisJCSAgICAoaW5vID49IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSkpIHsKKwkJCXNpemVfdCBzaXplID0gMDsKKwkJCWVycmNvZGVfdCBlcnI7CisJCQlpbnQgZmxhZ3M7CisKKwkJCWZsYWdzID0gZnMtPmZsYWdzOworCQkJaWYgKGZhaWxlZF9jc3VtKQorCQkJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQkJZXJyID0gZ2V0X2lubGluZV9kYXRhX2VhX3NpemUoZnMsIGlubywgJnNpemUpOworCQkJZnMtPmZsYWdzID0gKGZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgfAorCQkJCSAgICAoZnMtPmZsYWdzICYgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCisJCQlzd2l0Y2ggKGVycikgeworCQkJY2FzZSAwOgorCQkJCS8qIEV2ZXJ5dGhpbmcgaXMgYXdlc29tZS4uLiAqLworCQkJCWJyZWFrOworCQkJY2FzZSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU06CisJCQljYXNlIEVYVDJfRVRfQkFEX0VBX0hBU0g6CisJCQljYXNlIEVYVDJfRVRfQkFEX0VBX0hFQURFUjoKKwkJCWNhc2UgRVhUMl9FVF9FQV9CQURfTkFNRV9MRU46CisJCQljYXNlIEVYVDJfRVRfRUFfQkFEX1ZBTFVFX1NJWkU6CisJCQljYXNlIEVYVDJfRVRfRUFfS0VZX05PVF9GT1VORDoKKwkJCWNhc2UgRVhUMl9FVF9FQV9OT19TUEFDRToKKwkJCWNhc2UgRVhUMl9FVF9NSVNTSU5HX0VBX0ZFQVRVUkU6CisJCQljYXNlIEVYVDJfRVRfSU5MSU5FX0RBVEFfQ0FOVF9JVEVSQVRFOgorCQkJY2FzZSBFWFQyX0VUX0lOTElORV9EQVRBX05PX0JMT0NLOgorCQkJY2FzZSBFWFQyX0VUX0lOTElORV9EQVRBX05PX1NQQUNFOgorCQkJY2FzZSBFWFQyX0VUX05PX0lOTElORV9EQVRBOgorCQkJY2FzZSBFWFQyX0VUX0VYVF9BVFRSX0NTVU1fSU5WQUxJRDoKKwkJCWNhc2UgRVhUMl9FVF9FQV9CQURfVkFMVUVfT0ZGU0VUOgorCQkJCS8qIGJyb2tlbiBFQSBvciBubyBzeXN0ZW0uZGF0YSBFQTsgdHJ1bmNhdGUgKi8KKwkJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0lOTElORV9EQVRBX05PX0FUVFIsCisJCQkJCQkmcGN0eCkpIHsKKwkJCQkJZXJyID0gZXh0MmZzX2lub2RlX3NpemVfc2V0KGZzLCBpbm9kZSwKKwkJCQkJCQlzaXplb2YoaW5vZGUtPmlfYmxvY2spKTsKKwkJCQkJaWYgKGVycikgeworCQkJCQkJcGN0eC5lcnJjb2RlID0gZXJyOworCQkJCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCQkJCWdvdG8gZW5kaXQ7CisJCQkJCX0KKwkJCQkJaWYgKExJTlVYX1NfSVNMTksoaW5vZGUtPmlfbW9kZSkpCisJCQkJCQlpbm9kZS0+aV9mbGFncyAmPSB+RVhUNF9JTkxJTkVfREFUQV9GTDsKKwkJCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCQkgICAicGFzczEiKTsKKwkJCQkJZmFpbGVkX2NzdW0gPSAwOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJLyogU29tZSBvdGhlciBraW5kIG9mIG5vbi14YXR0ciBlcnJvcj8gKi8KKwkJCQlwY3R4LmVycmNvZGUgPSBlcnI7CisJCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCQlnb3RvIGVuZGl0OworCQkJfQorCQl9CisKKwkJLyoKKwkJICogVGVzdCBmb3IgaW5jb3JyZWN0IGV4dGVudCBmbGFnIHNldHRpbmdzLgorCQkgKgorCQkgKiBPbiBiaWctZW5kaWFuIG1hY2hpbmVzIHdlIG11c3QgYmUgY2FyZWZ1bDoKKwkJICogV2hlbiB0aGUgaW5vZGUgaXMgcmVhZCwgdGhlIGlfYmxvY2sgYXJyYXkgaXMgbm90IHN3YXBwZWQKKwkJICogaWYgdGhlIGV4dGVudCBmbGFnIGlzIHNldC4gIFRoZXJlZm9yZSBpZiB3ZSBhcmUgdGVzdGluZworCQkgKiBmb3Igb3IgZml4aW5nIGEgd3JvbmdseS1zZXQgZmxhZywgd2UgbXVzdCBwb3RlbnRpYWxseQorCQkgKiAodW4pc3dhcCBiZWZvcmUgdGVzdGluZywgb3IgYWZ0ZXIgZml4aW5nLgorCQkgKi8KKworCQkvKgorCQkgKiBJbiB0aGlzIGNhc2UgdGhlIGV4dGVudHMgZmxhZyB3YXMgc2V0IHdoZW4gcmVhZCwgc28KKwkJICogZXh0ZW50X2hlYWRlcl92ZXJpZnkgaXMgb2suICBJZiB0aGUgaW5vZGUgaXMgY2xlYXJlZCwKKwkJICogbm8gbmVlZCB0byBzd2FwLi4uIHNvIG5vIGV4dHJhIHN3YXBwaW5nIGhlcmUuCisJCSAqLworCQlpZiAoKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSAmJiAhZXh0ZW50X2ZzICYmCisJCSAgICAoaW5vZGUtPmlfbGlua3NfY291bnQgfHwgKGlubyA9PSBFWFQyX0JBRF9JTk8pIHx8CisJCSAgICAgKGlubyA9PSBFWFQyX1JPT1RfSU5PKSB8fCAoaW5vID09IEVYVDJfSk9VUk5BTF9JTk8pKSkgeworCQkJaWYgKChleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoaW5vZGUtPmlfYmxvY2ssCisJCQkJCQkgc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSkgPT0gMCkgJiYKKwkJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfRVhURU5UX0ZFQVRVUkUsICZwY3R4KSkgeworCQkJCWV4dDJmc19zZXRfZmVhdHVyZV9leHRlbnRzKHNiKTsKKwkJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCQkJZXh0ZW50X2ZzID0gMTsKKwkJCX0gZWxzZSBpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VYVEVOVFNfU0VULCAmcGN0eCkpIHsKKwkJCWNsZWFyX2lub2RlOgorCQkJCWUyZnNja19jbGVhcl9pbm9kZShjdHgsIGlubywgaW5vZGUsIDAsICJwYXNzMSIpOworCQkJCWlmIChpbm8gPT0gRVhUMl9CQURfSU5PKQorCQkJCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsCisJCQkJCQkJCSBpbm8pOworCQkJCS8qIHNraXAgRklOSVNIX0lOT0RFX0xPT1AgKi8KKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIEZvciBiaWctZW5kaWFuIG1hY2hpbmVzOgorCQkgKiBJZiB0aGUgaW5vZGUgZGlkbid0IGhhdmUgdGhlIGV4dGVudHMgZmxhZyBzZXQgd2hlbiBpdAorCQkgKiB3YXMgcmVhZCwgdGhlbiB0aGUgaV9ibG9ja3MgYXJyYXkgd2FzIHN3YXBwZWQuICBUbyB0ZXN0CisJCSAqIGFzIGFuIGV4dGVudHMgaGVhZGVyLCB3ZSBtdXN0IHN3YXAgaXQgYmFjayBmaXJzdC4KKwkJICogSUYgd2UgdGhlbiBzZXQgdGhlIGV4dGVudHMgZmxhZywgdGhlIGVudGlyZSBpX2Jsb2NrCisJCSAqIGFycmF5IG11c3QgYmUgdW4vcmUtc3dhcHBlZCB0byBtYWtlIGl0IHByb3BlciBleHRlbnRzIGRhdGEuCisJCSAqLworCQlpZiAoZXh0ZW50X2ZzICYmICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpICYmCisJCSAgICAoaW5vZGUtPmlfbGlua3NfY291bnQgfHwgKGlubyA9PSBFWFQyX0JBRF9JTk8pIHx8CisJCSAgICAgKGlubyA9PSBFWFQyX1JPT1RfSU5PKSB8fCAoaW5vID09IEVYVDJfSk9VUk5BTF9JTk8pKSAmJgorCQkgICAgKExJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgfHwKKwkJICAgICBMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpKSkgeworCQkJdm9pZCAqZWhwOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQkJX191MzIgdG1wX2Jsb2NrW0VYVDJfTl9CTE9DS1NdOworCisJCQlmb3IgKGkgPSAwOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKQorCQkJCXRtcF9ibG9ja1tpXSA9IGV4dDJmc19zd2FiMzIoaW5vZGUtPmlfYmxvY2tbaV0pOworCQkJZWhwID0gdG1wX2Jsb2NrOworI2Vsc2UKKwkJCWVocCA9IGlub2RlLT5pX2Jsb2NrOworI2VuZGlmCisJCQlpZiAoKGV4dDJmc19leHRlbnRfaGVhZGVyX3ZlcmlmeShlaHAsCisJCQkJCSBzaXplb2YoaW5vZGUtPmlfYmxvY2spKSA9PSAwKSAmJgorCQkJICAgIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfVU5TRVRfRVhURU5UX0ZMLCAmcGN0eCkpKSB7CisJCQkJaW5vZGUtPmlfZmxhZ3MgfD0gRVhUNF9FWFRFTlRTX0ZMOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQkJCW1lbWNweShpbm9kZS0+aV9ibG9jaywgdG1wX2Jsb2NrLAorCQkJCSAgICAgICBzaXplb2YoaW5vZGUtPmlfYmxvY2spKTsKKyNlbmRpZgorCQkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsICJwYXNzMSIpOworCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCX0KKwkJfQorCisJCWlmIChpbm8gPT0gRVhUMl9CQURfSU5PKSB7CisJCQlzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgcGI7CisKKwkJCWlmICgoZmFpbGVkX2NzdW0gfHwgaW5vZGUtPmlfbW9kZSB8fCBpbm9kZS0+aV91aWQgfHwKKwkJCSAgICAgaW5vZGUtPmlfZ2lkIHx8IGlub2RlLT5pX2xpbmtzX2NvdW50IHx8CisJCQkgICAgIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHx8CisJCQkgICAgIGlub2RlLT5pX2ZpbGVfYWNsKSAmJgorCQkJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9JTlZBTElEX0JBRF9JTk9ERSwgJnBjdHgpKSB7CisJCQkJbWVtc2V0KGlub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwkJCQllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBpbm8sIGlub2RlLAorCQkJCQkJICAgImNsZWFyIGJhZCBpbm9kZSIpOworCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCX0KKworCQkJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2NvcHlfYml0bWFwKGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCQkJCSAgJnBiLmZzX21ldGFfYmxvY2tzKTsKKwkJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCQlwY3R4Lm51bSA9IDQ7CisJCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0JCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQkJCWdvdG8gZW5kaXQ7CisJCQl9CisJCQlwYi5pbm8gPSBFWFQyX0JBRF9JTk87CisJCQlwYi5udW1fYmxvY2tzID0gcGIubGFzdF9ibG9jayA9IDA7CisJCQlwYi5sYXN0X2RiX2Jsb2NrID0gLTE7CisJCQlwYi5udW1faWxsZWdhbF9ibG9ja3MgPSAwOworCQkJcGIuc3VwcHJlc3MgPSAwOyBwYi5jbGVhciA9IDA7IHBiLmlzX2RpciA9IDA7CisJCQlwYi5pc19yZWcgPSAwOyBwYi5mcmFnbWVudGVkID0gMDsgcGIuYmJjaGVjayA9IDA7CisJCQlwYi5pbm9kZSA9IGlub2RlOworCQkJcGIucGN0eCA9ICZwY3R4OworCQkJcGIuY3R4ID0gY3R4OworCQkJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBpbm8sIDAsCisJCQkJICAgICBibG9ja19idWYsIHByb2Nlc3NfYmFkX2Jsb2NrLCAmcGIpOworCQkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKHBiLmZzX21ldGFfYmxvY2tzKTsKKwkJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQkxPQ0tfSVRFUkFURSwgJnBjdHgpOworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJZ290byBlbmRpdDsKKwkJCX0KKwkJCWlmIChwYi5iYmNoZWNrKQorCQkJCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JCSU5PREVfQkFEX01FVEFCTE9DS19QUk9NUFQsICZwY3R4KSkgeworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJZ290byBlbmRpdDsKKwkJCX0KKwkJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKwkJCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJCQlGSU5JU0hfSU5PREVfTE9PUChjdHgsIGlubywgJnBjdHgsIGZhaWxlZF9jc3VtKTsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKGlubyA9PSBFWFQyX1JPT1RfSU5PKSB7CisJCQkvKgorCQkJICogTWFrZSBzdXJlIHRoZSByb290IGlub2RlIGlzIGEgZGlyZWN0b3J5OyBpZgorCQkJICogbm90LCBvZmZlciB0byBjbGVhciBpdC4gIEl0IHdpbGwgYmUKKwkJCSAqIHJlZ25lcmF0ZWQgaW4gcGFzcyAjMy4KKwkJCSAqLworCQkJaWYgKCFMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpKSB7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9ST09UX05PX0RJUiwgJnBjdHgpKQorCQkJCQlnb3RvIGNsZWFyX2lub2RlOworCQkJfQorCQkJLyoKKwkJCSAqIElmIGR0aW1lIGlzIHNldCwgb2ZmZXIgdG8gY2xlYXIgaXQuICBta2UyZnMKKwkJCSAqIHZlcnNpb24gMC4yYiBjcmVhdGVkIGZpbGVzeXN0ZW1zIHdpdGggdGhlCisJCQkgKiBkdGltZSBmaWVsZCBzZXQgZm9yIHRoZSByb290IGFuZCBsb3N0K2ZvdW5kCisJCQkgKiBkaXJlY3Rvcmllcy4gIFdlIHdvbid0IHdvcnJ5IGFib3V0CisJCQkgKiAvbG9zdCtmb3VuZCwgc2luY2UgdGhhdCBjYW4gYmUgcmVnZW5lcmF0ZWQKKwkJCSAqIGVhc2lseS4gIEJ1dCB3ZSB3aWxsIGZpeCB0aGUgcm9vdCBkaXJlY3RvcnkKKwkJCSAqIGFzIGEgc3BlY2lhbCBjYXNlLgorCQkJICovCisJCQlpZiAoaW5vZGUtPmlfZHRpbWUgJiYgaW5vZGUtPmlfbGlua3NfY291bnQpIHsKKwkJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX1JPT1RfRFRJTUUsICZwY3R4KSkgeworCQkJCQlpbm9kZS0+aV9kdGltZSA9IDA7CisJCQkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsCisJCQkJCQkJICAgInBhc3MxIik7CisJCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCQl9CisJCQl9CisJCX0gZWxzZSBpZiAoaW5vID09IEVYVDJfSk9VUk5BTF9JTk8pIHsKKwkJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKwkJCWlmIChmcy0+c3VwZXItPnNfam91cm5hbF9pbnVtID09IEVYVDJfSk9VUk5BTF9JTk8pIHsKKwkJCQlpZiAoIUxJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgJiYKKwkJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0pPVVJOQUxfQkFEX01PREUsCisJCQkJCQkmcGN0eCkpIHsKKwkJCQkJaW5vZGUtPmlfbW9kZSA9IExJTlVYX1NfSUZSRUc7CisJCQkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsCisJCQkJCQkJICAgInBhc3MxIik7CisJCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCQl9CisJCQkJY2hlY2tfYmxvY2tzKGN0eCwgJnBjdHgsIGJsb2NrX2J1Zik7CisJCQkJRklOSVNIX0lOT0RFX0xPT1AoY3R4LCBpbm8sICZwY3R4LCBmYWlsZWRfY3N1bSk7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAoKGlub2RlLT5pX2xpbmtzX2NvdW50IHx8CisJCQkgICAgIGlub2RlLT5pX2Jsb2NrcyB8fCBpbm9kZS0+aV9ibG9ja1swXSkgJiYKKwkJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfSk9VUk5BTF9JTk9ERV9OT1RfQ0xFQVIsCisJCQkJCSZwY3R4KSkgeworCQkJCW1lbXNldChpbm9kZSwgMCwgaW5vZGVfc2l6ZSk7CisJCQkJZXh0MmZzX2ljb3VudF9zdG9yZShjdHgtPmlub2RlX2xpbmtfaW5mbywKKwkJCQkJCSAgICBpbm8sIDApOworCQkJCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCQlpbm9kZV9zaXplLCAicGFzczEiKTsKKwkJCQlmYWlsZWRfY3N1bSA9IDA7CisJCQl9CisJCX0gZWxzZSBpZiAocXVvdGFfaW51bV9pc19yZXNlcnZlZChmcywgaW5vKSkgeworCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3VzZWRfbWFwLCBpbm8pOworCQkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9xdW90YShmcy0+c3VwZXIpICYmCisJCQkgICAgcXVvdGFfaW51bV9pc19zdXBlcihmcy0+c3VwZXIsIGlubykpIHsKKwkJCQlpZiAoIUxJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgJiYKKwkJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX1FVT1RBX0JBRF9NT0RFLAorCQkJCQkJCSZwY3R4KSkgeworCQkJCQlpbm9kZS0+aV9tb2RlID0gTElOVVhfU19JRlJFRzsKKwkJCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCQkicGFzczEiKTsKKwkJCQkJZmFpbGVkX2NzdW0gPSAwOworCQkJCX0KKwkJCQljaGVja19ibG9ja3MoY3R4LCAmcGN0eCwgYmxvY2tfYnVmKTsKKwkJCQlGSU5JU0hfSU5PREVfTE9PUChjdHgsIGlubywgJnBjdHgsIGZhaWxlZF9jc3VtKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmICgoaW5vZGUtPmlfbGlua3NfY291bnQgfHwKKwkJCSAgICAgaW5vZGUtPmlfYmxvY2tzIHx8IGlub2RlLT5pX2Jsb2NrWzBdKSAmJgorCQkJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9RVU9UQV9JTk9ERV9OT1RfQ0xFQVIsCisJCQkJCSZwY3R4KSkgeworCQkJCW1lbXNldChpbm9kZSwgMCwgaW5vZGVfc2l6ZSk7CisJCQkJZXh0MmZzX2ljb3VudF9zdG9yZShjdHgtPmlub2RlX2xpbmtfaW5mbywKKwkJCQkJCSAgICBpbm8sIDApOworCQkJCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCQlpbm9kZV9zaXplLCAicGFzczEiKTsKKwkJCQlmYWlsZWRfY3N1bSA9IDA7CisJCQl9CisJCX0gZWxzZSBpZiAoaW5vIDwgRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpKSB7CisJCQlwcm9ibGVtX3QgcHJvYmxlbSA9IDA7CisKKwkJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKwkJCWlmIChpbm8gPT0gRVhUMl9CT09UX0xPQURFUl9JTk8pIHsKKwkJCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSkKKwkJCQkJcHJvYmxlbSA9IFBSXzFfUkVTRVJWRURfQkFEX01PREU7CisJCQl9IGVsc2UgaWYgKGlubyA9PSBFWFQyX1JFU0laRV9JTk8pIHsKKwkJCQlpZiAoaW5vZGUtPmlfbW9kZSAmJgorCQkJCSAgICAhTElOVVhfU19JU1JFRyhpbm9kZS0+aV9tb2RlKSkKKwkJCQkJcHJvYmxlbSA9IFBSXzFfUkVTRVJWRURfQkFEX01PREU7CisJCQl9IGVsc2UgeworCQkJCWlmIChpbm9kZS0+aV9tb2RlICE9IDApCisJCQkJCXByb2JsZW0gPSBQUl8xX1JFU0VSVkVEX0JBRF9NT0RFOworCQkJfQorCQkJaWYgKHByb2JsZW0pIHsKKwkJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBwcm9ibGVtLCAmcGN0eCkpIHsKKwkJCQkJaW5vZGUtPmlfbW9kZSA9IDA7CisJCQkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsCisJCQkJCQkJICAgInBhc3MxIik7CisJCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCQl9CisJCQl9CisJCQljaGVja19ibG9ja3MoY3R4LCAmcGN0eCwgYmxvY2tfYnVmKTsKKwkJCUZJTklTSF9JTk9ERV9MT09QKGN0eCwgaW5vLCAmcGN0eCwgZmFpbGVkX2NzdW0pOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBDaGVjayBmb3IgaW5vZGVzIHdobyBtaWdodCBoYXZlIGJlZW4gcGFydCBvZiB0aGUKKwkJICogb3JwaGFuZWQgbGlzdCBsaW5rZWQgbGlzdC4gIFRoZXkgc2hvdWxkIGhhdmUgZ290dGVuCisJCSAqIGRlYWx0IHdpdGggYnkgbm93LCB1bmxlc3MgdGhlIGxpc3QgaGFkIHNvbWVob3cgYmVlbgorCQkgKiBjb3JydXB0ZWQuCisJCSAqCisJCSAqIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCBpbm9kZXMgd2hpY2ggYXJlIHN0aWxsIGluIHVzZQorCQkgKiAoYW5kIHdoaWNoIGFyZSB0aGVyZWZvcmUpIHBlbmRpbmcgdHJ1bmNhdGlvbiBzaG91bGQKKwkJICogYmUgaGFuZGxlZCBzcGVjaWFsbHkuICBSaWdodCBub3cgd2UganVzdCBjbGVhciB0aGUKKwkJICogZHRpbWUgZmllbGQsIGFuZCB0aGUgbm9ybWFsIGUyZnNjayBoYW5kbGluZyBvZgorCQkgKiBpbm9kZXMgd2hlcmUgaV9zaXplIGFuZCB0aGUgaW5vZGUgYmxvY2tzIGFyZQorCQkgKiBpbmNvbnNpc3RlbnQgaXMgdG8gZml4IGlfc2l6ZSwgaW5zdGVhZCBvZiByZWxlYXNpbmcKKwkJICogdGhlIGV4dHJhIGJsb2Nrcy4gIFRoaXMgd29uJ3QgY2F0Y2ggdGhlIGlub2RlcyB0aGF0CisJCSAqIHdhcyBhdCB0aGUgZW5kIG9mIHRoZSBvcnBoYW4gbGlzdCwgYnV0IGl0J3MgYmV0dGVyCisJCSAqIHRoYW4gbm90aGluZy4gIFRoZSByaWdodCBhbnN3ZXIgaXMgdGhhdCB0aGVyZQorCQkgKiBzaG91bGRuJ3QgYmUgYW55IGJ1Z3MgaW4gdGhlIG9ycGhhbiBsaXN0IGhhbmRsaW5nLiAgOi0pCisJCSAqLworCQlpZiAoaW5vZGUtPmlfZHRpbWUgJiYgbG93X2R0aW1lX2NoZWNrICYmCisJCSAgICBpbm9kZS0+aV9kdGltZSA8IGN0eC0+ZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9MT1dfRFRJTUUsICZwY3R4KSkgeworCQkJCWlub2RlLT5pX2R0aW1lID0gaW5vZGUtPmlfbGlua3NfY291bnQgPworCQkJCQkwIDogY3R4LT5ub3c7CisJCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCSAgICJwYXNzMSIpOworCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgZGVsZXRlZCBpbm9kZXMgaGF2ZQorCQkgKiBpX2xpbmtzX2NvdW50IHNldCB0byAwLgorCQkgKi8KKwkJaWYgKCFpbm9kZS0+aV9saW5rc19jb3VudCkgeworCQkJaWYgKCFpbm9kZS0+aV9kdGltZSAmJiBpbm9kZS0+aV9tb2RlKSB7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwKKwkJCQkJICAgIFBSXzFfWkVST19EVElNRSwgJnBjdHgpKSB7CisJCQkJCWlub2RlLT5pX2R0aW1lID0gY3R4LT5ub3c7CisJCQkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgaW5vZGUsCisJCQkJCQkJICAgInBhc3MxIik7CisJCQkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCQl9CisJCQl9CisJCQlGSU5JU0hfSU5PREVfTE9PUChjdHgsIGlubywgJnBjdHgsIGZhaWxlZF9jc3VtKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCS8qCisJCSAqIG4uYi4gIDAuM2MgZXh0MmZzIGNvZGUgZGlkbid0IGNsZWFyIGlfbGlua3NfY291bnQgZm9yCisJCSAqIGRlbGV0ZWQgZmlsZXMuICBPb3BzLgorCQkgKgorCQkgKiBTaW5jZSBhbGwgbmV3IGV4dDIgaW1wbGVtZW50YXRpb25zIGdldCB0aGlzIHJpZ2h0LAorCQkgKiB3ZSBub3cgYXNzdW1lIHRoYXQgdGhlIGNhc2Ugb2Ygbm9uLXplcm8KKwkJICogaV9saW5rc19jb3VudCBhbmQgbm9uLXplcm8gZHRpbWUgbWVhbnMgdGhhdCB3ZQorCQkgKiBzaG91bGQga2VlcCB0aGUgZmlsZSwgbm90IGRlbGV0ZSBpdC4KKwkJICoKKwkJICovCisJCWlmIChpbm9kZS0+aV9kdGltZSkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9TRVRfRFRJTUUsICZwY3R4KSkgeworCQkJCWlub2RlLT5pX2R0aW1lID0gMDsKKwkJCQllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCAicGFzczEiKTsKKwkJCQlmYWlsZWRfY3N1bSA9IDA7CisJCQl9CisJCX0KKworCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGlubyk7CisJCXN3aXRjaCAoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MpIHsKKwkJICAgIGNhc2UgRVhUMl9PU19IVVJEOgorCQkJZnJhZyA9IGlub2RlLT5vc2QyLmh1cmQyLmhfaV9mcmFnOworCQkJZnNpemUgPSBpbm9kZS0+b3NkMi5odXJkMi5oX2lfZnNpemU7CisJCQlicmVhazsKKwkJICAgIGRlZmF1bHQ6CisJCQlmcmFnID0gZnNpemUgPSAwOworCQl9CisKKwkJaWYgKGlub2RlLT5pX2ZhZGRyIHx8IGZyYWcgfHwgZnNpemUgfHwKKwkJICAgIChMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpICYmIGlub2RlLT5pX2Rpcl9hY2wpKQorCQkJbWFya19pbm9kZV9iYWQoY3R4LCBpbm8pOworCQlpZiAoKGZzLT5zdXBlci0+c19jcmVhdG9yX29zICE9IEVYVDJfT1NfSFVSRCkgJiYKKwkJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSAmJgorCQkgICAgaW5vZGUtPm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoICE9IDApCisJCQltYXJrX2lub2RlX2JhZChjdHgsIGlubyk7CisJCWlmICgoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MgIT0gRVhUMl9PU19IVVJEKSAmJgorCQkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9odWdlX2ZpbGUoZnMtPnN1cGVyKSAmJgorCQkgICAgKGlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpICE9IDApKQorCQkJbWFya19pbm9kZV9iYWQoY3R4LCBpbm8pOworCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQyX0lNQUdJQ19GTCkgeworCQkJaWYgKGltYWdpY19mcykgeworCQkJCWlmICghY3R4LT5pbm9kZV9pbWFnaWNfbWFwKQorCQkJCQlhbGxvY19pbWFnaWNfbWFwKGN0eCk7CisJCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2ltYWdpY19tYXAsCisJCQkJCQkJIGlubyk7CisJCQl9IGVsc2UgeworCQkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfU0VUX0lNQUdJQywgJnBjdHgpKSB7CisJCQkJCWlub2RlLT5pX2ZsYWdzICY9IH5FWFQyX0lNQUdJQ19GTDsKKwkJCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLAorCQkJCQkJCSAgIGlub2RlLCAicGFzczEiKTsKKwkJCQkJZmFpbGVkX2NzdW0gPSAwOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWNoZWNrX2lub2RlX2V4dHJhX3NwYWNlKGN0eCwgJnBjdHgpOworCQljaGVja19pc19yZWFsbHlfZGlyKGN0eCwgJnBjdHgsIGJsb2NrX2J1Zik7CisKKwkJLyoKKwkJICogZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyIGRvZXMgbm90IGFjdHVhbGx5IGxvb2sKKwkJICogYXQgaV9ibG9ja1tdIHZhbHVlcywgc28gbm90IGVuZGlhbi1zZW5zaXRpdmUgaGVyZS4KKwkJICovCisJCWlmIChleHRlbnRfZnMgJiYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSAmJgorCQkgICAgTElOVVhfU19JU0xOSyhpbm9kZS0+aV9tb2RlKSAmJgorCQkgICAgIWV4dDJmc19pbm9kZV9oYXNfdmFsaWRfYmxvY2tzMihmcywgaW5vZGUpICYmCisJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfRkFTVF9TWU1MSU5LX0VYVEVOVF9GTCwgJnBjdHgpKSB7CisJCQlpbm9kZS0+aV9mbGFncyAmPSB+RVhUNF9FWFRFTlRTX0ZMOworCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgInBhc3MxIik7CisJCQlmYWlsZWRfY3N1bSA9IDA7CisJCX0KKworCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSkgeworCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubyk7CisJCQllMmZzY2tfYWRkX2Rpcl9pbmZvKGN0eCwgaW5vLCAwKTsKKwkJCWN0eC0+ZnNfZGlyZWN0b3J5X2NvdW50Kys7CisJCQlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VOQ1JZUFRfRkwpCisJCQkJYWRkX2VuY3J5cHRlZF9kaXIoY3R4LCBpbm8pOworCQl9IGVsc2UgaWYgKExJTlVYX1NfSVNSRUcgKGlub2RlLT5pX21vZGUpKSB7CisJCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfcmVnX21hcCwgaW5vKTsKKwkJCWN0eC0+ZnNfcmVndWxhcl9jb3VudCsrOworCQl9IGVsc2UgaWYgKExJTlVYX1NfSVNDSFIgKGlub2RlLT5pX21vZGUpICYmCisJCQkgICBlMmZzY2tfcGFzczFfY2hlY2tfZGV2aWNlX2lub2RlKGZzLCBpbm9kZSkpIHsKKwkJCWNoZWNrX2V4dGVudHNfaW5saW5lZGF0YShjdHgsICZwY3R4KTsKKwkJCWNoZWNrX2ltbXV0YWJsZShjdHgsICZwY3R4KTsKKwkJCWNoZWNrX3NpemUoY3R4LCAmcGN0eCk7CisJCQljdHgtPmZzX2NoYXJkZXZfY291bnQrKzsKKwkJfSBlbHNlIGlmIChMSU5VWF9TX0lTQkxLIChpbm9kZS0+aV9tb2RlKSAmJgorCQkJICAgZTJmc2NrX3Bhc3MxX2NoZWNrX2RldmljZV9pbm9kZShmcywgaW5vZGUpKSB7CisJCQljaGVja19leHRlbnRzX2lubGluZWRhdGEoY3R4LCAmcGN0eCk7CisJCQljaGVja19pbW11dGFibGUoY3R4LCAmcGN0eCk7CisJCQljaGVja19zaXplKGN0eCwgJnBjdHgpOworCQkJY3R4LT5mc19ibG9ja2Rldl9jb3VudCsrOworCQl9IGVsc2UgaWYgKExJTlVYX1NfSVNMTksgKGlub2RlLT5pX21vZGUpICYmCisJCQkgICBlMmZzY2tfcGFzczFfY2hlY2tfc3ltbGluayhmcywgaW5vLCBpbm9kZSwKKwkJCQkJCSAgICAgIGJsb2NrX2J1ZikpIHsKKwkJCWNoZWNrX2ltbXV0YWJsZShjdHgsICZwY3R4KTsKKwkJCWN0eC0+ZnNfc3ltbGlua3NfY291bnQrKzsKKwkJCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHsKKwkJCQlGSU5JU0hfSU5PREVfTE9PUChjdHgsIGlubywgJnBjdHgsIGZhaWxlZF9jc3VtKTsKKwkJCQljb250aW51ZTsKKwkJCX0gZWxzZSBpZiAoZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzKGZzLCBpbm9kZSkgPT0gMCkgeworCQkJCWN0eC0+ZnNfZmFzdF9zeW1saW5rc19jb3VudCsrOworCQkJCWNoZWNrX2Jsb2NrcyhjdHgsICZwY3R4LCBibG9ja19idWYpOworCQkJCUZJTklTSF9JTk9ERV9MT09QKGN0eCwgaW5vLCAmcGN0eCwgZmFpbGVkX2NzdW0pOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisJCWVsc2UgaWYgKExJTlVYX1NfSVNGSUZPIChpbm9kZS0+aV9tb2RlKSAmJgorCQkJIGUyZnNja19wYXNzMV9jaGVja19kZXZpY2VfaW5vZGUoZnMsIGlub2RlKSkgeworCQkJY2hlY2tfZXh0ZW50c19pbmxpbmVkYXRhKGN0eCwgJnBjdHgpOworCQkJY2hlY2tfaW1tdXRhYmxlKGN0eCwgJnBjdHgpOworCQkJY2hlY2tfc2l6ZShjdHgsICZwY3R4KTsKKwkJCWN0eC0+ZnNfZmlmb19jb3VudCsrOworCQl9IGVsc2UgaWYgKChMSU5VWF9TX0lTU09DSyAoaW5vZGUtPmlfbW9kZSkpICYmCisJCQkgICBlMmZzY2tfcGFzczFfY2hlY2tfZGV2aWNlX2lub2RlKGZzLCBpbm9kZSkpIHsKKwkJCWNoZWNrX2V4dGVudHNfaW5saW5lZGF0YShjdHgsICZwY3R4KTsKKwkJCWNoZWNrX2ltbXV0YWJsZShjdHgsICZwY3R4KTsKKwkJCWNoZWNrX3NpemUoY3R4LCAmcGN0eCk7CisJCQljdHgtPmZzX3NvY2tldHNfY291bnQrKzsKKwkJfSBlbHNlCisJCQltYXJrX2lub2RlX2JhZChjdHgsIGlubyk7CisJCWlmICghKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSAmJgorCQkgICAgIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKSB7CisJCQlpZiAoaW5vZGUtPmlfYmxvY2tbRVhUMl9JTkRfQkxPQ0tdKQorCQkJCWN0eC0+ZnNfaW5kX2NvdW50Kys7CisJCQlpZiAoaW5vZGUtPmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSkKKwkJCQljdHgtPmZzX2RpbmRfY291bnQrKzsKKwkJCWlmIChpbm9kZS0+aV9ibG9ja1tFWFQyX1RJTkRfQkxPQ0tdKQorCQkJCWN0eC0+ZnNfdGluZF9jb3VudCsrOworCQl9CisJCWlmICghKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSAmJgorCQkgICAgIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpICYmCisJCSAgICAoaW5vZGUtPmlfYmxvY2tbRVhUMl9JTkRfQkxPQ0tdIHx8CisJCSAgICAgaW5vZGUtPmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSB8fAorCQkgICAgIGlub2RlLT5pX2Jsb2NrW0VYVDJfVElORF9CTE9DS10gfHwKKwkJICAgICBleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIGlub2RlKSkpIHsKKwkJCWlub2Rlc190b19wcm9jZXNzW3Byb2Nlc3NfaW5vZGVfY291bnRdLmlubyA9IGlubzsKKwkJCWlub2Rlc190b19wcm9jZXNzW3Byb2Nlc3NfaW5vZGVfY291bnRdLmlub2RlID0KKwkJCQkgICAgICAgKihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKWlub2RlOworCQkJcHJvY2Vzc19pbm9kZV9jb3VudCsrOworCQl9IGVsc2UKKwkJCWNoZWNrX2Jsb2NrcyhjdHgsICZwY3R4LCBibG9ja19idWYpOworCisJCUZJTklTSF9JTk9ERV9MT09QKGN0eCwgaW5vLCAmcGN0eCwgZmFpbGVkX2NzdW0pOworCisJCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCQlnb3RvIGVuZGl0OworCisJCWlmIChwcm9jZXNzX2lub2RlX2NvdW50ID49IGN0eC0+cHJvY2Vzc19pbm9kZV9zaXplKSB7CisJCQlwcm9jZXNzX2lub2RlcyhjdHgsIGJsb2NrX2J1Zik7CisKKwkJCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCQkJZ290byBlbmRpdDsKKwkJfQorCX0KKwlwcm9jZXNzX2lub2RlcyhjdHgsIGJsb2NrX2J1Zik7CisJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJc2NhbiA9IE5VTEw7CisKKwlyZXNlcnZlX2Jsb2NrX2Zvcl9yb290X3JlcGFpcihjdHgpOworCXJlc2VydmVfYmxvY2tfZm9yX2xuZl9yZXBhaXIoY3R4KTsKKworCS8qCisJICogSWYgYW55IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9ja3MnIHJlZmVyZW5jZSBjb3VudHMgbmVlZCB0bworCSAqIGJlIGFkanVzdGVkLCBlaXRoZXIgdXAgKGN0eC0+cmVmY291bnRfZXh0cmEpLCBvciBkb3duCisJICogKGN0eC0+cmVmY291bnQpLCB0aGVuIGZpeCB0aGVtLgorCSAqLworCWlmIChjdHgtPnJlZmNvdW50KSB7CisJCWFkanVzdF9leHRhdHRyX3JlZmNvdW50KGN0eCwgY3R4LT5yZWZjb3VudCwgYmxvY2tfYnVmLCAtMSk7CisJCWVhX3JlZmNvdW50X2ZyZWUoY3R4LT5yZWZjb3VudCk7CisJCWN0eC0+cmVmY291bnQgPSAwOworCX0KKwlpZiAoY3R4LT5yZWZjb3VudF9leHRyYSkgeworCQlhZGp1c3RfZXh0YXR0cl9yZWZjb3VudChjdHgsIGN0eC0+cmVmY291bnRfZXh0cmEsCisJCQkJCWJsb2NrX2J1ZiwgKzEpOworCQllYV9yZWZjb3VudF9mcmVlKGN0eC0+cmVmY291bnRfZXh0cmEpOworCQljdHgtPnJlZmNvdW50X2V4dHJhID0gMDsKKwl9CisKKwlpZiAoY3R4LT5pbnZhbGlkX2JpdG1hcHMpCisJCWhhbmRsZV9mc19iYWRfYmxvY2tzKGN0eCk7CisKKwkvKiBXZSBkb24ndCBuZWVkIHRoZSBibG9ja19lYV9tYXAgYW55IG1vcmUgKi8KKwlpZiAoY3R4LT5ibG9ja19lYV9tYXApIHsKKwkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGN0eC0+YmxvY2tfZWFfbWFwKTsKKwkJY3R4LT5ibG9ja19lYV9tYXAgPSAwOworCX0KKworCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUkVTSVpFX0lOT0RFKSB7CisJCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19jcmVhdGVfcmVzaXplX2lub2RlKGZzKTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzFfUkVTSVpFX0lOT0RFX0NSRUFURSwKKwkJCQkJICZwY3R4KSkgeworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJZ290byBlbmRpdDsKKwkJCX0KKwkJCXBjdHguZXJyY29kZSA9IDA7CisJCX0KKwkJaWYgKCFwY3R4LmVycmNvZGUpIHsKKwkJCWUyZnNja19yZWFkX2lub2RlKGN0eCwgRVhUMl9SRVNJWkVfSU5PLCBpbm9kZSwKKwkJCQkJICAicmVjcmVhdGUgaW5vZGUiKTsKKwkJCWlub2RlLT5pX210aW1lID0gY3R4LT5ub3c7CisJCQllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBFWFQyX1JFU0laRV9JTk8sIGlub2RlLAorCQkJCQkgICAicmVjcmVhdGUgaW5vZGUiKTsKKwkJfQorCQljdHgtPmZsYWdzICY9IH5FMkZfRkxBR19SRVNJWkVfSU5PREU7CisJfQorCisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19SRVNUQVJUKSB7CisJCS8qCisJCSAqIE9ubHkgdGhlIG1hc3RlciBjb3B5IG9mIHRoZSBzdXBlcmJsb2NrIGFuZCBibG9jaworCQkgKiBncm91cCBkZXNjcmlwdG9ycyBhcmUgZ29pbmcgdG8gYmUgd3JpdHRlbiBkdXJpbmcgYQorCQkgKiByZXN0YXJ0LCBzbyBzZXQgdGhlIHN1cGVyYmxvY2sgdG8gYmUgdXNlZCB0byBiZSB0aGUKKwkJICogbWFzdGVyIHN1cGVyYmxvY2suCisJCSAqLworCQljdHgtPnVzZV9zdXBlcmJsb2NrID0gMDsKKwkJdW53aW5kX3Bhc3MxKGZzKTsKKwkJZ290byBlbmRpdDsKKwl9CisKKwlpZiAoY3R4LT5ibG9ja19kdXBfbWFwKSB7CisJCWlmIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSB7CisJCQljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0RVUF9CTE9DS1NfUFJFRU5TVE9QLCAmcGN0eCk7CisJCX0KKwkJZTJmc2NrX3Bhc3MxX2R1cGJsb2NrcyhjdHgsIGJsb2NrX2J1Zik7CisJfQorCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUxMT0NfT0s7CisJZXh0MmZzX2ZyZWVfbWVtKCZpbm9kZXNfdG9fcHJvY2Vzcyk7CitlbmRpdDoKKwllMmZzY2tfdXNlX2lub2RlX3Nob3J0Y3V0cyhjdHgsIDApOworCisJaWYgKHNjYW4pCisJCWV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKHNjYW4pOworCWlmIChibG9ja19idWYpCisJCWV4dDJmc19mcmVlX21lbSgmYmxvY2tfYnVmKTsKKwlpZiAoaW5vZGUpCisJCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworCisJLyoKKwkgKiBUaGUgbCtmIGlub2RlIG1heSBoYXZlIGJlZW4gY2xlYXJlZCwgc28gemFwIGl0IG5vdyBhbmQKKwkgKiBsYXRlciBwYXNzZXMgd2lsbCByZWNhbGN1bGF0ZSBpdCBpZiBuZWNlc3NhcnkKKwkgKi8KKwljdHgtPmxvc3RfYW5kX2ZvdW5kID0gMDsKKworCWlmICgoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKSA9PSAwKQorCQlwcmludF9yZXNvdXJjZV90cmFjayhjdHgsIF8oIlBhc3MgMSIpLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisJZWxzZQorCQljdHgtPmludmFsaWRfYml0bWFwcysrOworfQorI3VuZGVmIEZJTklTSF9JTk9ERV9MT09QCisKKy8qCisgKiBXaGVuIHRoZSBpbm9kZV9zY2FuIHJvdXRpbmVzIGNhbGwgdGhpcyBjYWxsYmFjayBhdCB0aGUgZW5kIG9mIHRoZQorICogZ2xvY2sgZ3JvdXAsIGNhbGwgcHJvY2Vzc19pbm9kZXMuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3Qgc2Nhbl9jYWxsYmFjayhleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgICBleHQyX2lub2RlX3NjYW4gc2NhbiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICAgZGdycF90IGdyb3VwLCB2b2lkICogcHJpdl9kYXRhKQoreworCXN0cnVjdCBzY2FuX2NhbGxiYWNrX3N0cnVjdCAqc2Nhbl9zdHJ1Y3Q7CisJZTJmc2NrX3QgY3R4OworCisJc2Nhbl9zdHJ1Y3QgPSAoc3RydWN0IHNjYW5fY2FsbGJhY2tfc3RydWN0ICopIHByaXZfZGF0YTsKKwljdHggPSBzY2FuX3N0cnVjdC0+Y3R4OworCisJcHJvY2Vzc19pbm9kZXMoKGUyZnNja190KSBmcy0+cHJpdl9kYXRhLCBzY2FuX3N0cnVjdC0+YmxvY2tfYnVmKTsKKworCWlmIChjdHgtPnByb2dyZXNzKQorCQlpZiAoKGN0eC0+cHJvZ3Jlc3MpKGN0eCwgMSwgZ3JvdXArMSwKKwkJCQkgICAgY3R4LT5mcy0+Z3JvdXBfZGVzY19jb3VudCkpCisJCQlyZXR1cm4gRVhUMl9FVF9DQU5DRUxfUkVRVUVTVEVEOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBQcm9jZXNzIHRoZSBpbm9kZXMgaW4gdGhlICJpbm9kZXMgdG8gcHJvY2VzcyIgbGlzdC4KKyAqLworc3RhdGljIHZvaWQgcHJvY2Vzc19pbm9kZXMoZTJmc2NrX3QgY3R4LCBjaGFyICpibG9ja19idWYpCit7CisJaW50CQkJaTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQkqb2xkX3N0YXNoZWRfaW5vZGU7CisJZXh0Ml9pbm9fdAkJb2xkX3N0YXNoZWRfaW5vOworCWNvbnN0IGNoYXIJCSpvbGRfb3BlcmF0aW9uOworCWNoYXIJCQlidWZbODBdOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKworI2lmIDAKKwlwcmludGYoImJlZ2luIHByb2Nlc3NfaW5vZGVzOiAiKTsKKyNlbmRpZgorCWlmIChwcm9jZXNzX2lub2RlX2NvdW50ID09IDApCisJCXJldHVybjsKKwlvbGRfb3BlcmF0aW9uID0gZWhhbmRsZXJfb3BlcmF0aW9uKDApOworCW9sZF9zdGFzaGVkX2lub2RlID0gY3R4LT5zdGFzaGVkX2lub2RlOworCW9sZF9zdGFzaGVkX2lubyA9IGN0eC0+c3Rhc2hlZF9pbm87CisJcXNvcnQoaW5vZGVzX3RvX3Byb2Nlc3MsIHByb2Nlc3NfaW5vZGVfY291bnQsCisJCSAgICAgIHNpemVvZihzdHJ1Y3QgcHJvY2Vzc19pbm9kZV9ibG9jayksIHByb2Nlc3NfaW5vZGVfY21wKTsKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCWZvciAoaT0wOyBpIDwgcHJvY2Vzc19pbm9kZV9jb3VudDsgaSsrKSB7CisJCXBjdHguaW5vZGUgPSBjdHgtPnN0YXNoZWRfaW5vZGUgPQorCQkJKHN0cnVjdCBleHQyX2lub2RlICopICZpbm9kZXNfdG9fcHJvY2Vzc1tpXS5pbm9kZTsKKwkJcGN0eC5pbm8gPSBjdHgtPnN0YXNoZWRfaW5vID0gaW5vZGVzX3RvX3Byb2Nlc3NbaV0uaW5vOworCisjaWYgMAorCQlwcmludGYoIiV1ICIsIHBjdHguaW5vKTsKKyNlbmRpZgorCQlzcHJpbnRmKGJ1ZiwgXygicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiKSwKKwkJCXBjdHguaW5vKTsKKwkJZWhhbmRsZXJfb3BlcmF0aW9uKGJ1Zik7CisJCWNoZWNrX2Jsb2NrcyhjdHgsICZwY3R4LCBibG9ja19idWYpOworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQkJYnJlYWs7CisJfQorCWN0eC0+c3Rhc2hlZF9pbm9kZSA9IG9sZF9zdGFzaGVkX2lub2RlOworCWN0eC0+c3Rhc2hlZF9pbm8gPSBvbGRfc3Rhc2hlZF9pbm87CisJcHJvY2Vzc19pbm9kZV9jb3VudCA9IDA7CisjaWYgMAorCXByaW50ZigiZW5kIHByb2Nlc3MgaW5vZGVzXG4iKTsKKyNlbmRpZgorCWVoYW5kbGVyX29wZXJhdGlvbihvbGRfb3BlcmF0aW9uKTsKK30KKworc3RhdGljIEVYVDJfUVNPUlRfVFlQRSBwcm9jZXNzX2lub2RlX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCBwcm9jZXNzX2lub2RlX2Jsb2NrICppYl9hID0KKwkJKGNvbnN0IHN0cnVjdCBwcm9jZXNzX2lub2RlX2Jsb2NrICopIGE7CisJY29uc3Qgc3RydWN0IHByb2Nlc3NfaW5vZGVfYmxvY2sgKmliX2IgPQorCQkoY29uc3Qgc3RydWN0IHByb2Nlc3NfaW5vZGVfYmxvY2sgKikgYjsKKwlpbnQJcmV0OworCisJcmV0ID0gKGliX2EtPmlub2RlLmlfYmxvY2tbRVhUMl9JTkRfQkxPQ0tdIC0KKwkgICAgICAgaWJfYi0+aW5vZGUuaV9ibG9ja1tFWFQyX0lORF9CTE9DS10pOworCWlmIChyZXQgPT0gMCkKKwkJLyoKKwkJICogV2Ugb25seSBjYWxsIHByb2Nlc3NfaW5vZGVzKCkgZm9yIG5vbi1leHRlbnQKKwkJICogaW5vZGVzLCBzbyBpdCdzIE9LIHRvIHBhc3MgTlVMTCB0bworCQkgKiBleHQyZnNfZmlsZV9hY2xfYmxvY2soKSBoZXJlLgorCQkgKi8KKwkJcmV0ID0gZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKDAsIGV4dDJmc19jb25zdF9pbm9kZSgmaWJfYS0+aW5vZGUpKSAtCisJCQlleHQyZnNfZmlsZV9hY2xfYmxvY2soMCwgZXh0MmZzX2NvbnN0X2lub2RlKCZpYl9iLT5pbm9kZSkpOworCWlmIChyZXQgPT0gMCkKKwkJcmV0ID0gaWJfYS0+aW5vIC0gaWJfYi0+aW5vOworCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBNYXJrIGFuIGlub2RlIGFzIGJlaW5nIGJhZCBpbiBzb21lIHdoYXQKKyAqLworc3RhdGljIHZvaWQgbWFya19pbm9kZV9iYWQoZTJmc2NrX3QgY3R4LCBpbm9fdCBpbm8pCit7CisJc3RydWN0CQlwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWlmICghY3R4LT5pbm9kZV9iYWRfbWFwKSB7CisJCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwkJcGN0eC5lcnJjb2RlID0gZTJmc2NrX2FsbG9jYXRlX2lub2RlX2JpdG1hcChjdHgtPmZzLAorCQkJCV8oImJhZCBpbm9kZSBtYXAiKSwgRVhUMkZTX0JNQVA2NF9SQlRSRUUsCisJCQkJImlub2RlX2JhZF9tYXAiLCAmY3R4LT5pbm9kZV9iYWRfbWFwKTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJcGN0eC5udW0gPSAzOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJCS8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCXJldHVybjsKKwkJfQorCX0KKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfYmFkX21hcCwgaW5vKTsKK30KKworc3RhdGljIHZvaWQgYWRkX2VuY3J5cHRlZF9kaXIoZTJmc2NrX3QgY3R4LCBpbm9fdCBpbm8pCit7CisJc3RydWN0CQlwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWlmICghY3R4LT5lbmNyeXB0ZWRfZGlycykgeworCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfdTMyX2xpc3RfY3JlYXRlKCZjdHgtPmVuY3J5cHRlZF9kaXJzLCAwKTsKKwkJaWYgKHBjdHguZXJyY29kZSkKKwkJCWdvdG8gZXJyb3I7CisJfQorCXBjdHguZXJyY29kZSA9IGV4dDJmc191MzJfbGlzdF9hZGQoY3R4LT5lbmNyeXB0ZWRfZGlycywgaW5vKTsKKwlpZiAocGN0eC5lcnJjb2RlID09IDApCisJCXJldHVybjsKK2Vycm9yOgorCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9BTExPQ0FURV9FTkNSWVBURURfRElSTElTVCwgJnBjdHgpOworCS8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7Cit9CisKKy8qCisgKiBUaGlzIHByb2NlZHVyZSB3aWxsIGFsbG9jYXRlIHRoZSBpbm9kZSAiYmIiIChiYWRibG9jaykgbWFwIHRhYmxlCisgKi8KK3N0YXRpYyB2b2lkIGFsbG9jX2JiX21hcChlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0CQlwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJcGN0eC5lcnJjb2RlID0gZTJmc2NrX2FsbG9jYXRlX2lub2RlX2JpdG1hcChjdHgtPmZzLAorCQkJXygiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIpLCBFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkJCSJpbm9kZV9iYl9tYXAiLCAmY3R4LT5pbm9kZV9iYl9tYXApOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5udW0gPSA0OworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfSUJJVE1BUF9FUlJPUiwgJnBjdHgpOworCQkvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KK30KKworLyoKKyAqIFRoaXMgcHJvY2VkdXJlIHdpbGwgYWxsb2NhdGUgdGhlIGlub2RlIGltYWdpYyB0YWJsZQorICovCitzdGF0aWMgdm9pZCBhbGxvY19pbWFnaWNfbWFwKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QJCXByb2JsZW1fY29udGV4dCBwY3R4OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGN0eC0+ZnMsCisJCQlfKCJpbWFnaWMgaW5vZGUgbWFwIiksIEVYVDJGU19CTUFQNjRfUkJUUkVFLAorCQkJImlub2RlX2ltYWdpY19tYXAiLCAmY3R4LT5pbm9kZV9pbWFnaWNfbWFwKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gNTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9Cit9CisKKy8qCisgKiBNYXJrcyBhIGJsb2NrIGFzIGluIHVzZSwgc2V0dGluZyB0aGUgZHVwX21hcCBpZiBpdCdzIGJlZW4gc2V0CisgKiBhbHJlYWR5LiAgQ2FsbGVkIGJ5IHByb2Nlc3NfYmxvY2sgYW5kIHByb2Nlc3NfYmFkX2Jsb2NrLgorICoKKyAqIFdBUk5JTkc6IEFzc3VtZXMgY2hlY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgdG8gbWFrZSBzdXJlIGJsb2NrCisgKiBpcyB2YWxpZC4gIFRoaXMgaXMgdHJ1ZSBpbiBib3RoIHByb2Nlc3NfYmxvY2sgYW5kIHByb2Nlc3NfYmFkX2Jsb2NrLgorICovCitzdGF0aWMgX0lOTElORV8gdm9pZCBtYXJrX2Jsb2NrX3VzZWQoZTJmc2NrX3QgY3R4LCBibGs2NF90IGJsb2NrKQoreworCXN0cnVjdAkJcHJvYmxlbV9jb250ZXh0IHBjdHg7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJaWYgKGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgYmxvY2spKSB7CisJCWlmICghY3R4LT5ibG9ja19kdXBfbWFwKSB7CisJCQlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGN0eC0+ZnMsCisJCQkJCV8oIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIiksCisJCQkJCUVYVDJGU19CTUFQNjRfUkJUUkVFLCAiYmxvY2tfZHVwX21hcCIsCisJCQkJCSZjdHgtPmJsb2NrX2R1cF9tYXApOworCQkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJCXBjdHgubnVtID0gMzsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfQkJJVE1BUF9FUlJPUiwKKwkJCQkJICAgICZwY3R4KTsKKwkJCQkvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKwkJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCQlleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19kdXBfbWFwLCBibG9jayk7CisJfSBlbHNlIHsKKwkJZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCBibG9jayk7CisJfQorfQorCitzdGF0aWMgX0lOTElORV8gdm9pZCBtYXJrX2Jsb2Nrc191c2VkKGUyZnNja190IGN0eCwgYmxrNjRfdCBibG9jaywKKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgbnVtKQoreworCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCBibG9jaywgbnVtKSkKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgYmxvY2ssIG51bSk7CisJZWxzZQorCQl3aGlsZSAobnVtLS0pCisJCQltYXJrX2Jsb2NrX3VzZWQoY3R4LCBibG9jaysrKTsKK30KKworLyoKKyAqIEFkanVzdCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrJ3MgcmVmZXJlbmNlIGNvdW50cyBhdCB0aGUgZW5kCisgKiBvZiBwYXNzIDEsIGVpdGhlciBieSBzdWJ0cmFjdGluZyBvdXQgcmVmZXJlbmNlcyBmb3IgRUEgYmxvY2tzIHRoYXQKKyAqIGFyZSBzdGlsbCByZWZlcmVuY2VkIGluIGN0eC0+cmVmY291bnQsIG9yIGJ5IGFkZGluZyByZWZlcmVuY2VzIGZvcgorICogRUEgYmxvY2tzIHRoYXQgaGFkIGV4dHJhIHJlZmVyZW5jZXMgYXMgYWNjb3VudGVkIGZvciBpbgorICogY3R4LT5yZWZjb3VudF9leHRyYS4KKyAqLworc3RhdGljIHZvaWQgYWRqdXN0X2V4dGF0dHJfcmVmY291bnQoZTJmc2NrX3QgY3R4LCBleHQyX3JlZmNvdW50X3QgcmVmY291bnQsCisJCQkJICAgIGNoYXIgKmJsb2NrX2J1ZiwgaW50IGFkanVzdF9zaWduKQoreworCXN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAJKmhlYWRlcjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CQlwY3R4OworCWV4dDJfZmlsc3lzCQkJZnMgPSBjdHgtPmZzOworCWJsazY0X3QJCQkJYmxrOworCV9fdTMyCQkJCXNob3VsZF9iZTsKKwlpbnQJCQkJY291bnQ7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJZWFfcmVmY291bnRfaW50cl9iZWdpbihyZWZjb3VudCk7CisJd2hpbGUgKDEpIHsKKwkJaWYgKChibGsgPSBlYV9yZWZjb3VudF9pbnRyX25leHQocmVmY291bnQsICZjb3VudCkpID09IDApCisJCQlicmVhazsKKwkJcGN0eC5ibGsgPSBibGs7CisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19yZWFkX2V4dF9hdHRyMyhmcywgYmxrLCBibG9ja19idWYsCisJCQkJCQkgICAgIHBjdHguaW5vKTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VYVEFUVFJfUkVBRF9BQk9SVCwgJnBjdHgpOworCQkJcmV0dXJuOworCQl9CisJCWhlYWRlciA9IChzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKikgYmxvY2tfYnVmOworCQlwY3R4LmJsa2NvdW50ID0gaGVhZGVyLT5oX3JlZmNvdW50OworCQlzaG91bGRfYmUgPSBoZWFkZXItPmhfcmVmY291bnQgKyBhZGp1c3Rfc2lnbiAqIGNvdW50OworCQlwY3R4Lm51bSA9IHNob3VsZF9iZTsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FWFRBVFRSX1JFRkNPVU5ULCAmcGN0eCkpIHsKKwkJCWhlYWRlci0+aF9yZWZjb3VudCA9IHNob3VsZF9iZTsKKwkJCXBjdHguZXJyY29kZSA9IGV4dDJmc193cml0ZV9leHRfYXR0cjMoZnMsIGJsaywKKwkJCQkJCQkgICAgIGJsb2NrX2J1ZiwKKwkJCQkJCQkgICAgIHBjdHguaW5vKTsKKwkJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfRVhUQVRUUl9XUklURV9BQk9SVCwKKwkJCQkJICAgICZwY3R4KTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIEhhbmRsZSBwcm9jZXNzaW5nIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2tzCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfZXh0X2F0dHIoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4LAorCQkJICAgY2hhciAqYmxvY2tfYnVmKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlleHQyX2lub190CWlubyA9IHBjdHgtPmlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUgPSBwY3R4LT5pbm9kZTsKKwlibGs2NF90CQlibGs7CisJY2hhciAqCQllbmQ7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXI7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKmVudHJ5OworCWludAkJY291bnQ7CisJcmVnaW9uX3QJcmVnaW9uID0gMDsKKwlpbnQJCWZhaWxlZF9jc3VtID0gMDsKKworCWJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgaW5vZGUpOworCWlmIChibGsgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIElmIHRoZSBFeHRlbmRlZCBhdHRyaWJ1dGUgZmxhZyBpc24ndCBzZXQsIHRoZW4gYSBub24temVybworCSAqIGZpbGUgYWNsIG1lYW5zIHRoYXQgdGhlIGlub2RlIGlzIGNvcnJ1cHRlZC4KKwkgKgorCSAqIE9yIGlmIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaXMgYW4gaW52YWxpZCBibG9jaywKKwkgKiB0aGVuIHRoZSBpbm9kZSBpcyBhbHNvIGNvcnJ1cHRlZC4KKwkgKi8KKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV94YXR0cihmcy0+c3VwZXIpIHx8CisJICAgIChibGsgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgfHwKKwkgICAgKGJsayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKSB7CisJCW1hcmtfaW5vZGVfYmFkKGN0eCwgaW5vKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogSWYgZWEgYml0bWFwIGhhc24ndCBiZWVuIGFsbG9jYXRlZCwgY3JlYXRlIGl0ICovCisJaWYgKCFjdHgtPmJsb2NrX2VhX21hcCkgeworCQlwY3R4LT5lcnJjb2RlID0gZTJmc2NrX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChmcywKKwkJCQkJXygiZXh0IGF0dHIgYmxvY2sgbWFwIiksCisJCQkJCUVYVDJGU19CTUFQNjRfUkJUUkVFLCAiYmxvY2tfZWFfbWFwIiwKKwkJCQkJJmN0eC0+YmxvY2tfZWFfbWFwKTsKKwkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCXBjdHgtPm51bSA9IDI7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfQkJJVE1BUF9FUlJPUiwgcGN0eCk7CisJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKiBDcmVhdGUgdGhlIEVBIHJlZmNvdW50IHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKi8KKwlpZiAoIWN0eC0+cmVmY291bnQpIHsKKwkJcGN0eC0+ZXJyY29kZSA9IGVhX3JlZmNvdW50X2NyZWF0ZSgwLCAmY3R4LT5yZWZjb3VudCk7CisJCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCQlwY3R4LT5udW0gPSAxOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FMTE9DQVRFX1JFRkNPVU5ULCBwY3R4KTsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworI2lmIDAKKwkvKiBEZWJ1Z2dpbmcgdGV4dCAqLworCXByaW50ZigiSW5vZGUgJXUgaGFzIEVBIGJsb2NrICV1XG4iLCBpbm8sIGJsayk7CisjZW5kaWYKKworCS8qIEhhdmUgd2Ugc2VlbiB0aGlzIEVBIGJsb2NrIGJlZm9yZT8gKi8KKwlpZiAoZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZWFfbWFwLCBibGspKSB7CisJCWlmIChlYV9yZWZjb3VudF9kZWNyZW1lbnQoY3R4LT5yZWZjb3VudCwgYmxrLCAwKSA9PSAwKQorCQkJcmV0dXJuIDE7CisJCS8qIE9vb3BzLCB0aGlzIEVBIHdhcyByZWZlcmVuY2VkIG1vcmUgdGhhbiBpdCBzdGF0ZWQgKi8KKwkJaWYgKCFjdHgtPnJlZmNvdW50X2V4dHJhKSB7CisJCQlwY3R4LT5lcnJjb2RlID0gZWFfcmVmY291bnRfY3JlYXRlKDAsCisJCQkJCSAgICZjdHgtPnJlZmNvdW50X2V4dHJhKTsKKwkJCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCQkJcGN0eC0+bnVtID0gMjsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUxMT0NBVEVfUkVGQ09VTlQsIHBjdHgpOworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCX0KKwkJZWFfcmVmY291bnRfaW5jcmVtZW50KGN0eC0+cmVmY291bnRfZXh0cmEsIGJsaywgMCk7CisJCXJldHVybiAxOworCX0KKworCS8qCisJICogT0ssIHdlIGhhdmVuJ3Qgc2VlbiB0aGlzIEVBIGJsb2NrIHlldC4gIFNvIHdlIG5lZWQgdG8KKwkgKiB2YWxpZGF0ZSBpdAorCSAqLworCXBjdHgtPmJsayA9IGJsazsKKwlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX3JlYWRfZXh0X2F0dHIzKGZzLCBibGssIGJsb2NrX2J1ZiwgcGN0eC0+aW5vKTsKKwlpZiAocGN0eC0+ZXJyY29kZSA9PSBFWFQyX0VUX0VYVF9BVFRSX0NTVU1fSU5WQUxJRCkgeworCQlwY3R4LT5lcnJjb2RlID0gMDsKKwkJZmFpbGVkX2NzdW0gPSAxOworCX0gZWxzZSBpZiAocGN0eC0+ZXJyY29kZSA9PSBFWFQyX0VUX0JBRF9FQV9IRUFERVIpCisJCXBjdHgtPmVycmNvZGUgPSAwOworCisJaWYgKHBjdHgtPmVycmNvZGUgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX1JFQURfRUFfQkxPQ0ssIHBjdHgpKSB7CisJCXBjdHgtPmVycmNvZGUgPSAwOworCQlnb3RvIGNsZWFyX2V4dGF0dHI7CisJfQorCWhlYWRlciA9IChzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKikgYmxvY2tfYnVmOworCXBjdHgtPmJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgaW5vZGUpOworCWlmICgoKGN0eC0+ZXh0X2F0dHJfdmVyID09IDEpICYmCisJICAgICAoaGVhZGVyLT5oX21hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUNfdjEpKSB8fAorCSAgICAoKGN0eC0+ZXh0X2F0dHJfdmVyID09IDIpICYmCisJICAgICAoaGVhZGVyLT5oX21hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUMpKSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JBRF9FQV9CTE9DSywgcGN0eCkpCisJCQlnb3RvIGNsZWFyX2V4dGF0dHI7CisJfQorCisJaWYgKGhlYWRlci0+aF9ibG9ja3MgIT0gMSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX01VTFRJX0JMT0NLLCBwY3R4KSkKKwkJCWdvdG8gY2xlYXJfZXh0YXR0cjsKKwl9CisKKwlpZiAocGN0eC0+ZXJyY29kZSAmJiBmaXhfcHJvYmxlbShjdHgsIFBSXzFfUkVBRF9FQV9CTE9DSywgcGN0eCkpCisJCWdvdG8gY2xlYXJfZXh0YXR0cjsKKworCXJlZ2lvbiA9IHJlZ2lvbl9jcmVhdGUoMCwgZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKCFyZWdpb24pIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX0FMTE9DX1JFR0lPTl9BQk9SVCwgcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybiAwOworCX0KKwlpZiAocmVnaW9uX2FsbG9jYXRlKHJlZ2lvbiwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlcikpKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfRUFfQUxMT0NfQ09MTElTSU9OLCBwY3R4KSkKKwkJCWdvdG8gY2xlYXJfZXh0YXR0cjsKKwl9CisKKwllbnRyeSA9IChzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSAqKShoZWFkZXIrMSk7CisJZW5kID0gYmxvY2tfYnVmICsgZnMtPmJsb2Nrc2l6ZTsKKwl3aGlsZSAoKGNoYXIgKillbnRyeSA8IGVuZCAmJiAqKF9fdTMyICopZW50cnkpIHsKKwkJX191MzIgaGFzaDsKKworCQlpZiAocmVnaW9uX2FsbG9jYXRlKHJlZ2lvbiwgKGNoYXIgKillbnRyeSAtIChjaGFyICopaGVhZGVyLAorCQkJICAgICAgICAgICBFWFQyX0VYVF9BVFRSX0xFTihlbnRyeS0+ZV9uYW1lX2xlbikpKSB7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX0FMTE9DX0NPTExJU0lPTiwgcGN0eCkpCisJCQkJZ290byBjbGVhcl9leHRhdHRyOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKChjdHgtPmV4dF9hdHRyX3ZlciA9PSAxICYmCisJCSAgICAgKGVudHJ5LT5lX25hbWVfbGVuID09IDAgfHwgZW50cnktPmVfbmFtZV9pbmRleCAhPSAwKSkgfHwKKwkJICAgIChjdHgtPmV4dF9hdHRyX3ZlciA9PSAyICYmCisJCSAgICAgZW50cnktPmVfbmFtZV9pbmRleCA9PSAwKSkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FQV9CQURfTkFNRSwgcGN0eCkpCisJCQkJZ290byBjbGVhcl9leHRhdHRyOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKGVudHJ5LT5lX3ZhbHVlX2Jsb2NrICE9IDApIHsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfRUFfQkFEX1ZBTFVFLCBwY3R4KSkKKwkJCQlnb3RvIGNsZWFyX2V4dGF0dHI7CisJCX0KKwkJaWYgKGVudHJ5LT5lX3ZhbHVlX29mZnMgKyBlbnRyeS0+ZV92YWx1ZV9zaXplID4gZnMtPmJsb2Nrc2l6ZSkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FQV9CQURfVkFMVUUsIHBjdHgpKQorCQkJCWdvdG8gY2xlYXJfZXh0YXR0cjsKKwkJCWJyZWFrOworCQl9CisJCWlmIChlbnRyeS0+ZV92YWx1ZV9zaXplICYmCisJCSAgICByZWdpb25fYWxsb2NhdGUocmVnaW9uLCBlbnRyeS0+ZV92YWx1ZV9vZmZzLAorCQkJCSAgICBFWFQyX0VYVF9BVFRSX1NJWkUoZW50cnktPmVfdmFsdWVfc2l6ZSkpKSB7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX0FMTE9DX0NPTExJU0lPTiwgcGN0eCkpCisJCQkJZ290byBjbGVhcl9leHRhdHRyOworCQl9CisKKwkJaGFzaCA9IGV4dDJmc19leHRfYXR0cl9oYXNoX2VudHJ5KGVudHJ5LCBibG9ja19idWYgKworCQkJCQkJCSBlbnRyeS0+ZV92YWx1ZV9vZmZzKTsKKworCQlpZiAoZW50cnktPmVfaGFzaCAhPSBoYXNoKSB7CisJCQlwY3R4LT5udW0gPSBlbnRyeS0+ZV9oYXNoOworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9BVFRSX0hBU0gsIHBjdHgpKQorCQkJCWdvdG8gY2xlYXJfZXh0YXR0cjsKKwkJCWVudHJ5LT5lX2hhc2ggPSBoYXNoOworCQl9CisKKwkJZW50cnkgPSBFWFQyX0VYVF9BVFRSX05FWFQoZW50cnkpOworCX0KKwlpZiAocmVnaW9uX2FsbG9jYXRlKHJlZ2lvbiwgKGNoYXIgKillbnRyeSAtIChjaGFyICopaGVhZGVyLCA0KSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VBX0FMTE9DX0NPTExJU0lPTiwgcGN0eCkpCisJCQlnb3RvIGNsZWFyX2V4dGF0dHI7CisJfQorCXJlZ2lvbl9mcmVlKHJlZ2lvbik7CisKKwkvKgorCSAqIFdlIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgd2FzIG5vIG90aGVyIGVycm9ycyB0aGF0IHdlcmUgZml4ZWQuCisJICogSWYgdGhlcmUgd2FzIGEgY2hlY2tzdW0gZmFpbCwgYXNrIHRvIGNvcnJlY3QgaXQuCisJICovCisJaWYgKGZhaWxlZF9jc3VtICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FQV9CTE9DS19PTkxZX0NTVU1fSU5WQUxJRCwgcGN0eCkpIHsKKwkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc193cml0ZV9leHRfYXR0cjMoZnMsIGJsaywgYmxvY2tfYnVmLAorCQkJCQkJICAgICAgIHBjdHgtPmlubyk7CisJCWlmIChwY3R4LT5lcnJjb2RlKQorCQkJcmV0dXJuIDA7CisJfQorCisJY291bnQgPSBoZWFkZXItPmhfcmVmY291bnQgLSAxOworCWlmIChjb3VudCkKKwkJZWFfcmVmY291bnRfc3RvcmUoY3R4LT5yZWZjb3VudCwgYmxrLCBjb3VudCk7CisJbWFya19ibG9ja191c2VkKGN0eCwgYmxrKTsKKwlleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19lYV9tYXAsIGJsayk7CisJcmV0dXJuIDE7CisKK2NsZWFyX2V4dGF0dHI6CisJaWYgKHJlZ2lvbikKKwkJcmVnaW9uX2ZyZWUocmVnaW9uKTsKKwlleHQyZnNfZmlsZV9hY2xfYmxvY2tfc2V0KGZzLCBpbm9kZSwgMCk7CisJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgImNoZWNrX2V4dF9hdHRyIik7CisJcmV0dXJuIDA7Cit9CisKKy8qIFJldHVybnMgMSBpZiBiYWQgaHRyZWUsIDAgaWYgT0sgKi8KK3N0YXRpYyBpbnQgaGFuZGxlX2h0cmVlKGUyZnNja190IGN0eCwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCwKKwkJCWV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQljaGFyICpibG9ja19idWYpCit7CisJc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvCSpyb290OworCWV4dDJfZmlsc3lzCQkJZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAkJCXJldHZhbDsKKwlibGs2NF90CQkJCWJsazsKKworCWlmICgoIUxJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkgJiYKKwkgICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9IVFJFRV9OT0RJUiwgcGN0eCkpIHx8CisJICAgICghZXh0MmZzX2hhc19mZWF0dXJlX2Rpcl9pbmRleChmcy0+c3VwZXIpICYmCisJICAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfSFRSRUVfU0VULCBwY3R4KSkpCisJCXJldHVybiAxOworCisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19ibWFwMihmcywgaW5vLCBpbm9kZSwgMCwgMCwgMCwgMCwgJmJsayk7CisKKwlpZiAoKHBjdHgtPmVycmNvZGUpIHx8CisJICAgIChibGsgPT0gMCkgfHwKKwkgICAgKGJsayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCSAgICAoYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9IVFJFRV9CQURST09ULCBwY3R4KSkKKwkJCXJldHVybiAxOworCQllbHNlCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCBibGssIDEsIGJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCAmJiBmaXhfcHJvYmxlbShjdHgsIFBSXzFfSFRSRUVfQkFEUk9PVCwgcGN0eCkpCisJCXJldHVybiAxOworCisJLyogWFhYIHNob3VsZCBjaGVjayB0aGF0IGJlZ2lubmluZyBtYXRjaGVzIGEgZGlyZWN0b3J5ICovCisJcm9vdCA9IChzdHJ1Y3QgZXh0Ml9keF9yb290X2luZm8gKikgKGJsb2NrX2J1ZiArIDI0KTsKKworCWlmICgocm9vdC0+cmVzZXJ2ZWRfemVybyB8fCByb290LT5pbmZvX2xlbmd0aCA8IDgpICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9IVFJFRV9CQURST09ULCBwY3R4KSkKKwkJcmV0dXJuIDE7CisKKwlwY3R4LT5udW0gPSByb290LT5oYXNoX3ZlcnNpb247CisJaWYgKChyb290LT5oYXNoX3ZlcnNpb24gIT0gRVhUMl9IQVNIX0xFR0FDWSkgJiYKKwkgICAgKHJvb3QtPmhhc2hfdmVyc2lvbiAhPSBFWFQyX0hBU0hfSEFMRl9NRDQpICYmCisJICAgIChyb290LT5oYXNoX3ZlcnNpb24gIT0gRVhUMl9IQVNIX1RFQSkgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0hUUkVFX0hBU0hWLCBwY3R4KSkKKwkJcmV0dXJuIDE7CisKKwlpZiAoKHJvb3QtPnVudXNlZF9mbGFncyAmIEVYVDJfSEFTSF9GTEFHX0lOQ09NUEFUKSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfSFRSRUVfSU5DT01QQVQsIHBjdHgpKQorCQlyZXR1cm4gMTsKKworCXBjdHgtPm51bSA9IHJvb3QtPmluZGlyZWN0X2xldmVsczsKKwlpZiAoKHJvb3QtPmluZGlyZWN0X2xldmVscyA+IDEpICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9IVFJFRV9ERVBUSCwgcGN0eCkpCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZTJmc2NrX2NsZWFyX2lub2RlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGludCByZXN0YXJ0X2ZsYWcsCisJCQljb25zdCBjaGFyICpzb3VyY2UpCit7CisJaW5vZGUtPmlfZmxhZ3MgPSAwOworCWlub2RlLT5pX2xpbmtzX2NvdW50ID0gMDsKKwlleHQyZnNfaWNvdW50X3N0b3JlKGN0eC0+aW5vZGVfbGlua19pbmZvLCBpbm8sIDApOworCWlub2RlLT5pX2R0aW1lID0gY3R4LT5ub3c7CisKKwkvKgorCSAqIElmIGEgc3BlY2lhbCBpbm9kZSBoYXMgc3VjaCByb3R0ZW4gYmxvY2sgbWFwcGluZ3MgdGhhdCB3ZQorCSAqIHdhbnQgdG8gY2xlYXIgdGhlIHdob2xlIGlub2RlLCBiZSBzdXJlIHRvIGFjdHVhbGx5IHphcAorCSAqIHRoZSBibG9jayBtYXBzIGJlY2F1c2UgaV9saW5rc19jb3VudCBpc24ndCBjaGVja2VkIGZvcgorCSAqIHNwZWNpYWwgaW5vZGVzLCBhbmQgd2UnbGwgZW5kIHVwIHJpZ2h0IGJhY2sgaGVyZSB0aGUgbmV4dAorCSAqIHRpbWUgd2UgcnVuIGZzY2suCisJICovCisJaWYgKGlubyA8IEVYVDJfRklSU1RfSU5PREUoY3R4LT5mcy0+c3VwZXIpKQorCQltZW1zZXQoaW5vZGUtPmlfYmxvY2ssIDAsIHNpemVvZihpbm9kZS0+aV9ibG9jaykpOworCisJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwgaW5vKTsKKwlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKTsKKwlpZiAoY3R4LT5pbm9kZV9yZWdfbWFwKQorCQlleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9yZWdfbWFwLCBpbm8pOworCWlmIChjdHgtPmlub2RlX2JhZF9tYXApCisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JhZF9tYXAsIGlubyk7CisKKwkvKgorCSAqIElmIHRoZSBpbm9kZSB3YXMgcGFydGlhbGx5IGFjY291bnRlZCBmb3IgYmVmb3JlIHByb2Nlc3NpbmcKKwkgKiB3YXMgYWJvcnRlZCwgd2UgbmVlZCB0byByZXN0YXJ0IHRoZSBwYXNzIDEgc2Nhbi4KKwkgKi8KKwljdHgtPmZsYWdzIHw9IHJlc3RhcnRfZmxhZzsKKworCWlmIChpbm8gPT0gRVhUMl9CQURfSU5PKQorCQltZW1zZXQoaW5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCisJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgc291cmNlKTsKK30KKworLyoKKyAqIFVzZSB0aGUgbXVsdGlwbGUtYmxvY2tzIHJlY2xhbWF0aW9uIGNvZGUgdG8gZml4IGFsaWdubWVudCBwcm9ibGVtcyBpbgorICogYSBiaWdhbGxvYyBmaWxlc3lzdGVtLiAgV2Ugd2FudCBhIGxvZ2ljYWwgY2x1c3RlciB0byBtYXAgdG8gKm9ubHkqIG9uZQorICogcGh5c2ljYWwgY2x1c3RlciwgYW5kIHdlIHdhbnQgdGhlIGJsb2NrIG9mZnNldHMgd2l0aGluIHRoYXQgY2x1c3RlciB0bworICogbGluZSB1cC4KKyAqLworc3RhdGljIGludCBoYXNfdW5hbGlnbmVkX2NsdXN0ZXJfbWFwKGUyZnNja190IGN0eCwKKwkJCQkgICAgIGJsazY0X3QgbGFzdF9wYmxrLCBibGs2NF90IGxhc3RfbGJsaywKKwkJCQkgICAgIGJsazY0X3QgcGJsaywgYmxrNjRfdCBsYmxrKQoreworCWJsazY0X3QgY2x1c3Rlcl9tYXNrOworCisJaWYgKCFjdHgtPmZzLT5jbHVzdGVyX3JhdGlvX2JpdHMpCisJCXJldHVybiAwOworCWNsdXN0ZXJfbWFzayA9IEVYVDJGU19DTFVTVEVSX01BU0soY3R4LT5mcyk7CisKKwkvKgorCSAqIElmIHRoZSBibG9jayBpbiB0aGUgbG9naWNhbCBjbHVzdGVyIGRvZXNuJ3QgYWxpZ24gd2l0aCB0aGUgYmxvY2sgaW4KKwkgKiB0aGUgcGh5c2ljYWwgY2x1c3Rlci4uLgorCSAqLworCWlmICgobGJsayAmIGNsdXN0ZXJfbWFzaykgIT0gKHBibGsgJiBjbHVzdGVyX21hc2spKQorCQlyZXR1cm4gMTsKKworCS8qCisJICogSWYgd2UgY3Jvc3MgYSBwaHlzaWNhbCBjbHVzdGVyIGJvdW5kYXJ5IHdpdGhpbiBhIGxvZ2ljYWwgY2x1c3Rlci4uLgorCSAqLworCWlmIChsYXN0X3BibGsgJiYgKGxibGsgJiBjbHVzdGVyX21hc2spICE9IDAgJiYKKwkgICAgRVhUMkZTX0IyQyhjdHgtPmZzLCBsYmxrKSA9PSBFWFQyRlNfQjJDKGN0eC0+ZnMsIGxhc3RfbGJsaykgJiYKKwkgICAgRVhUMkZTX0IyQyhjdHgtPmZzLCBwYmxrKSAhPSBFWFQyRlNfQjJDKGN0eC0+ZnMsIGxhc3RfcGJsaykpCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHNjYW5fZXh0ZW50X25vZGUoZTJmc2NrX3QgY3R4LCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4LAorCQkJICAgICBzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKnBiLAorCQkJICAgICBibGs2NF90IHN0YXJ0X2Jsb2NrLCBibGs2NF90IGVuZF9ibG9jaywKKwkJCSAgICAgYmxrNjRfdCBlb2ZfYmxvY2ssCisJCQkgICAgIGV4dDJfZXh0ZW50X2hhbmRsZV90IGVoYW5kbGUsCisJCQkgICAgIGludCB0cnlfcmVwYWlycykKK3sKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJYmxrNjRfdAkJCWJsaywgbGFzdF9sYmxrOworCWUyX2Jsa2NudF90CQlibG9ja2NudDsKKwl1bnNpZ25lZCBpbnQJCWk7CisJaW50CQkJaXNfZGlyLCBpc19sZWFmOworCXByb2JsZW1fdAkJcHJvYmxlbTsKKwlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbwlpbmZvOworCWludAkJCWZhaWxlZF9jc3VtID0gMDsKKworCWlmIChwY3R4LT5lcnJjb2RlID09IEVYVDJfRVRfRVhURU5UX0NTVU1fSU5WQUxJRCkKKwkJZmFpbGVkX2NzdW0gPSAxOworCisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oZWhhbmRsZSwgJmluZm8pOworCWlmIChwY3R4LT5lcnJjb2RlKQorCQlyZXR1cm47CisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9GSVhFU19PTkxZKSAmJgorCSAgICAhcGItPmV0aS5mb3JjZV9yZWJ1aWxkKSB7CisJCXN0cnVjdCBleHRlbnRfdHJlZV9sZXZlbCAqZXRsOworCisJCWV0bCA9IHBiLT5ldGkuZXh0X2luZm8gKyBpbmZvLmN1cnJfbGV2ZWw7CisJCWV0bC0+bnVtX2V4dGVudHMgKz0gaW5mby5udW1fZW50cmllczsKKwkJZXRsLT5tYXhfZXh0ZW50cyArPSBpbmZvLm1heF9lbnRyaWVzOworCQkvKgorCQkgKiBJbXBsZW1lbnRhdGlvbiB3YXJ0OiBTcGxpdHRpbmcgZXh0ZW50IGJsb2NrcyB3aGVuIGFwcGVuZGluZworCQkgKiB3aWxsIGxlYXZlIHRoZSBvbGQgYmxvY2sgd2l0aCBvbmUgZnJlZSBlbnRyeS4gIFRoZXJlZm9yZQorCQkgKiB1bmxlc3MgdGhlIG5vZGUgaXMgdG90YWxseSBmdWxsLCBwcmV0ZW5kIHRoYXQgYSBub24tcm9vdAorCQkgKiBleHRlbnQgYmxvY2sgY2FuIGhvbGQgb25lIGZld2VyIGVudHJ5IHRoYW4gaXQgYWN0dWFsbHkgZG9lcywKKwkJICogc28gdGhhdCB3ZSBkb24ndCByZXBlYXRlZGx5IHJlYnVpbGQgdGhlIGV4dGVudCB0cmVlLgorCQkgKi8KKwkJaWYgKGluZm8uY3Vycl9sZXZlbCAmJiBpbmZvLm51bV9lbnRyaWVzIDwgaW5mby5tYXhfZW50cmllcykKKwkJCWV0bC0+bWF4X2V4dGVudHMtLTsKKwl9CisKKwlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoZWhhbmRsZSwgRVhUMl9FWFRFTlRfRklSU1RfU0lCLAorCQkJCQkgICZleHRlbnQpOworCXdoaWxlICgocGN0eC0+ZXJyY29kZSA9PSAwIHx8CisJCXBjdHgtPmVycmNvZGUgPT0gRVhUMl9FVF9FWFRFTlRfQ1NVTV9JTlZBTElEKSAmJgorCSAgICAgICBpbmZvLm51bV9lbnRyaWVzLS0gPiAwKSB7CisJCWlzX2xlYWYgPSBleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX0xFQUY7CisJCWlzX2RpciA9IExJTlVYX1NfSVNESVIocGN0eC0+aW5vZGUtPmlfbW9kZSk7CisJCWxhc3RfbGJsayA9IGV4dGVudC5lX2xibGsgKyBleHRlbnQuZV9sZW4gLSAxOworCisJCXByb2JsZW0gPSAwOworCQlwY3R4LT5ibGsgPSBleHRlbnQuZV9wYmxrOworCQlwY3R4LT5ibGsyID0gZXh0ZW50LmVfbGJsazsKKwkJcGN0eC0+bnVtID0gZXh0ZW50LmVfbGVuOworCQlwY3R4LT5ibGtjb3VudCA9IGV4dGVudC5lX2xibGsgKyBleHRlbnQuZV9sZW47CisKKwkJaWYgKGV4dGVudC5lX3BibGsgPT0gMCB8fAorCQkgICAgZXh0ZW50LmVfcGJsayA8IGN0eC0+ZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkJICAgIGV4dGVudC5lX3BibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChjdHgtPmZzLT5zdXBlcikpCisJCQlwcm9ibGVtID0gUFJfMV9FWFRFTlRfQkFEX1NUQVJUX0JMSzsKKwkJZWxzZSBpZiAoZXh0ZW50LmVfbGJsayA8IHN0YXJ0X2Jsb2NrKQorCQkJcHJvYmxlbSA9IFBSXzFfT1VUX09GX09SREVSX0VYVEVOVFM7CisJCWVsc2UgaWYgKChlbmRfYmxvY2sgJiYgbGFzdF9sYmxrID4gZW5kX2Jsb2NrKSAmJgorCQkJICghKGV4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUICYmCisJCQkJbGFzdF9sYmxrID4gZW9mX2Jsb2NrKSkpCisJCQlwcm9ibGVtID0gUFJfMV9FWFRFTlRfRU5EX09VVF9PRl9CT1VORFM7CisJCWVsc2UgaWYgKGlzX2xlYWYgJiYgZXh0ZW50LmVfbGVuID09IDApCisJCQlwcm9ibGVtID0gUFJfMV9FWFRFTlRfTEVOR1RIX1pFUk87CisJCWVsc2UgaWYgKGlzX2xlYWYgJiYKKwkJCSAoZXh0ZW50LmVfcGJsayArIGV4dGVudC5lX2xlbikgPgorCQkJIGV4dDJmc19ibG9ja3NfY291bnQoY3R4LT5mcy0+c3VwZXIpKQorCQkJcHJvYmxlbSA9IFBSXzFfRVhURU5UX0VORFNfQkVZT05EOworCQllbHNlIGlmIChpc19sZWFmICYmIGlzX2RpciAmJgorCQkJICgoZXh0ZW50LmVfbGJsayArIGV4dGVudC5lX2xlbikgPgorCQkJICAoMVUgPDwgKDIxIC0gY3R4LT5mcy0+c3VwZXItPnNfbG9nX2Jsb2NrX3NpemUpKSkpCisJCQlwcm9ibGVtID0gUFJfMV9UT09CSUdfRElSOworCisJCWlmIChpc19sZWFmICYmIHByb2JsZW0gPT0gMCAmJiBleHRlbnQuZV9sZW4gPiAwICYmCisJCSAgICByZWdpb25fYWxsb2NhdGUocGItPnJlZ2lvbiwgZXh0ZW50LmVfbGJsaywgZXh0ZW50LmVfbGVuKSkKKwkJCXByb2JsZW0gPSBQUl8xX0VYVEVOVF9DT0xMSVNJT047CisKKwkJLyoKKwkJICogVW5pbml0aWFsaXplZCBibG9ja3MgaW4gYSBkaXJlY3Rvcnk/ICBDbGVhciB0aGUgZmxhZyBhbmQKKwkJICogd2UnbGwgaW50ZXJwcmV0IHRoZSBibG9ja3MgbGF0ZXIuCisJCSAqLworCQlpZiAodHJ5X3JlcGFpcnMgJiYgaXNfZGlyICYmIHByb2JsZW0gPT0gMCAmJgorCQkgICAgKGV4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX1VOSU5JVF9EQkxPQ0ssIHBjdHgpKSB7CisJCQlleHRlbnQuZV9mbGFncyAmPSB+RVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUOworCQkJcGItPmlub2RlX21vZGlmaWVkID0gMTsKKwkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoZWhhbmRsZSwgMCwKKwkJCQkJCQkgICAgICAmZXh0ZW50KTsKKwkJCWlmIChwY3R4LT5lcnJjb2RlKQorCQkJCXJldHVybjsKKwkJCWZhaWxlZF9jc3VtID0gMDsKKwkJfQorCisJCWlmICh0cnlfcmVwYWlycyAmJiBwcm9ibGVtKSB7CityZXBvcnRfcHJvYmxlbToKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sIHBjdHgpKSB7CisJCQkJaWYgKGN0eC0+aW52YWxpZF9iaXRtYXBzKSB7CisJCQkJCS8qCisJCQkJCSAqIElmIGZzY2sga25vd3MgdGhlIGJpdG1hcHMgYXJlIGJhZCwKKwkJCQkJICogc2tpcCB0byB0aGUgbmV4dCBleHRlbnQgYW5kCisJCQkJCSAqIHRyeSB0byBjbGVhciB0aGlzIGV4dGVudCBhZ2FpbgorCQkJCQkgKiBhZnRlciBmaXhpbmcgdGhlIGJpdG1hcHMsIGJ5CisJCQkJCSAqIHJlc3RhcnRpbmcgZnNjay4KKwkJCQkJICovCisJCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldCgKKwkJCQkJCQkgIGVoYW5kbGUsCisJCQkJCQkJICBFWFQyX0VYVEVOVF9ORVhUX1NJQiwKKwkJCQkJCQkgICZleHRlbnQpOworCQkJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1JFU1RBUlRfTEFURVI7CisJCQkJCWlmIChwY3R4LT5lcnJjb2RlID09CisJCQkJCQkgICAgRVhUMl9FVF9OT19DVVJSRU5UX05PREUpIHsKKwkJCQkJCXBjdHgtPmVycmNvZGUgPSAwOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJY29udGludWU7CisJCQkJfQorCQkJCWUyZnNja19yZWFkX2JpdG1hcHMoY3R4KTsKKwkJCQlwYi0+aW5vZGVfbW9kaWZpZWQgPSAxOworCQkJCXBjdHgtPmVycmNvZGUgPQorCQkJCQlleHQyZnNfZXh0ZW50X2RlbGV0ZShlaGFuZGxlLCAwKTsKKwkJCQlpZiAocGN0eC0+ZXJyY29kZSkgeworCQkJCQlwY3R4LT5zdHIgPSAiZXh0MmZzX2V4dGVudF9kZWxldGUiOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGVoYW5kbGUpOworCQkJCWlmIChwY3R4LT5lcnJjb2RlICYmCisJCQkJICAgIHBjdHgtPmVycmNvZGUgIT0gRVhUMl9FVF9OT19DVVJSRU5UX05PREUpIHsKKwkJCQkJcGN0eC0+c3RyID0gImV4dDJmc19leHRlbnRfZml4X3BhcmVudHMiOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldChlaGFuZGxlLAorCQkJCQkJCQkgIEVYVDJfRVhURU5UX0NVUlJFTlQsCisJCQkJCQkJCSAgJmV4dGVudCk7CisJCQkJaWYgKHBjdHgtPmVycmNvZGUgPT0gRVhUMl9FVF9OT19DVVJSRU5UX05PREUpIHsKKwkJCQkJcGN0eC0+ZXJyY29kZSA9IDA7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCQlmYWlsZWRfY3N1bSA9IDA7CisJCQkJY29udGludWU7CisJCQl9CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlpZiAoIWlzX2xlYWYpIHsKKwkJCWJsazY0X3QgbGJsayA9IGV4dGVudC5lX2xibGs7CisJCQlpbnQgbmV4dF90cnlfcmVwYWlycyA9IDE7CisKKwkJCWJsayA9IGV4dGVudC5lX3BibGs7CisKKwkJCS8qCisJCQkgKiBJZiB0aGlzIGxvd2VyIGV4dGVudCBibG9jayBjb2xsaWRlcyB3aXRoIGNyaXRpY2FsCisJCQkgKiBtZXRhZGF0YSwgZG9uJ3QgdHJ5IHRvIHJlcGFpciB0aGUgZGFtYWdlLiAgUGFzcyAxYgorCQkJICogd2lsbCByZWFsbG9jYXRlIHRoZSBibG9jazsgdGhlbiB3ZSBjYW4gdHJ5IGFnYWluLgorCQkJICovCisJCQlpZiAocGItPmlubyAhPSBFWFQyX1JFU0laRV9JTk8gJiYKKwkJCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwLAorCQkJCQkJICAgICAgZXh0ZW50LmVfcGJsaykpIHsKKwkJCQluZXh0X3RyeV9yZXBhaXJzID0gMDsKKwkJCQlwY3R4LT5ibGsgPSBibGs7CisJCQkJZml4X3Byb2JsZW0oY3R4LAorCQkJCQkgICAgUFJfMV9DUklUSUNBTF9NRVRBREFUQV9DT0xMSVNJT04sCisJCQkJCSAgICBwY3R4KTsKKwkJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1JFU1RBUlRfTEFURVI7CisJCQl9CisJCQlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoZWhhbmRsZSwKKwkJCQkJCSAgRVhUMl9FWFRFTlRfRE9XTiwgJmV4dGVudCk7CisJCQlpZiAocGN0eC0+ZXJyY29kZSAmJgorCQkJICAgIHBjdHgtPmVycmNvZGUgIT0gRVhUMl9FVF9FWFRFTlRfQ1NVTV9JTlZBTElEKSB7CisJCQkJcGN0eC0+c3RyID0gIkVYVDJfRVhURU5UX0RPV04iOworCQkJCXByb2JsZW0gPSBQUl8xX0VYVEVOVF9IRUFERVJfSU5WQUxJRDsKKwkJCQlpZiAoIW5leHRfdHJ5X3JlcGFpcnMpCisJCQkJCXJldHVybjsKKwkJCQlpZiAocGN0eC0+ZXJyY29kZSA9PSBFWFQyX0VUX0VYVEVOVF9IRUFERVJfQkFEKQorCQkJCQlnb3RvIHJlcG9ydF9wcm9ibGVtOworCQkJCXJldHVybjsKKwkJCX0KKwkJCS8qIFRoZSBuZXh0IGV4dGVudCBzaG91bGQgbWF0Y2ggdGhpcyBpbmRleCdzIGxvZ2ljYWwgc3RhcnQgKi8KKwkJCWlmIChleHRlbnQuZV9sYmxrICE9IGxibGspIHsKKwkJCQlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbyBlX2luZm87CisKKwkJCQlleHQyZnNfZXh0ZW50X2dldF9pbmZvKGVoYW5kbGUsICZlX2luZm8pOworCQkJCXBjdHgtPmJsayA9IGxibGs7CisJCQkJcGN0eC0+YmxrMiA9IGV4dGVudC5lX2xibGs7CisJCQkJcGN0eC0+bnVtID0gZV9pbmZvLmN1cnJfbGV2ZWwgLSAxOworCQkJCXByb2JsZW0gPSBQUl8xX0VYVEVOVF9JTkRFWF9TVEFSVF9JTlZBTElEOworCQkJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sIHBjdHgpKSB7CisJCQkJCXBiLT5pbm9kZV9tb2RpZmllZCA9IDE7CisJCQkJCXBjdHgtPmVycmNvZGUgPQorCQkJCQkJZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhlaGFuZGxlKTsKKwkJCQkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCQkJCXBjdHgtPnN0ciA9ICJleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzIjsKKwkJCQkJCXJldHVybjsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCXNjYW5fZXh0ZW50X25vZGUoY3R4LCBwY3R4LCBwYiwgZXh0ZW50LmVfbGJsaywKKwkJCQkJIGxhc3RfbGJsaywgZW9mX2Jsb2NrLCBlaGFuZGxlLAorCQkJCQkgbmV4dF90cnlfcmVwYWlycyk7CisJCQlpZiAocGN0eC0+ZXJyY29kZSkKKwkJCQlyZXR1cm47CisJCQlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoZWhhbmRsZSwKKwkJCQkJCSAgRVhUMl9FWFRFTlRfVVAsICZleHRlbnQpOworCQkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCQlwY3R4LT5zdHIgPSAiRVhUMl9FWFRFTlRfVVAiOworCQkJCXJldHVybjsKKwkJCX0KKwkJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJCQlwYi0+bnVtX2Jsb2NrcysrOworCQkJZ290byBuZXh0OworCQl9CisKKwkJaWYgKChwYi0+cHJldmlvdXNfYmxvY2sgIT0gMCkgJiYKKwkJICAgIChwYi0+cHJldmlvdXNfYmxvY2srMSAhPSBleHRlbnQuZV9wYmxrKSkgeworCQkJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRlJBR0NIRUNLKSB7CisJCQkJY2hhciB0eXBlID0gJz8nOworCisJCQkJaWYgKHBiLT5pc19kaXIpCisJCQkJCXR5cGUgPSAnZCc7CisJCQkJZWxzZSBpZiAocGItPmlzX3JlZykKKwkJCQkJdHlwZSA9ICdmJzsKKworCQkJCXByaW50ZigoIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSAiCisJCQkJCSJhY3R1YWwgZXh0ZW50ICIKKwkJCQkJInBoeXMgJTZsdSBsb2cgJWx1IGxlbiAlbHVcbiIpLAorCQkJCSAgICAgICAodW5zaWduZWQgbG9uZykgcGN0eC0+aW5vLCB0eXBlLAorCQkJCSAgICAgICAodW5zaWduZWQgbG9uZykgcGItPnByZXZpb3VzX2Jsb2NrKzEsCisJCQkJICAgICAgICh1bnNpZ25lZCBsb25nKSBleHRlbnQuZV9wYmxrLAorCQkJCSAgICAgICAodW5zaWduZWQgbG9uZykgZXh0ZW50LmVfbGJsaywKKwkJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpIGV4dGVudC5lX2xlbik7CisJCQl9CisJCQlwYi0+ZnJhZ21lbnRlZCA9IDE7CisJCX0KKwkJLyoKKwkJICogSWYgd2Ugbm90aWNlIGEgZ2FwIGluIHRoZSBsb2dpY2FsIGJsb2NrIG1hcHBpbmdzIG9mIGFuCisJCSAqIGV4dGVudC1tYXBwZWQgZGlyZWN0b3J5LCBvZmZlciB0byBjbG9zZSB0aGUgaG9sZSBieQorCQkgKiBtb3ZpbmcgdGhlIGxvZ2ljYWwgYmxvY2sgZG93biwgb3RoZXJ3aXNlIHdlJ2xsIGdvIG1hZCBpbgorCQkgKiBwYXNzIDMgYWxsb2NhdGluZyBlbXB0eSBkaXJlY3RvcnkgYmxvY2tzIHRvIGZpbGwgdGhlIGhvbGUuCisJCSAqLworCQlpZiAodHJ5X3JlcGFpcnMgJiYgaXNfZGlyICYmCisJCSAgICBwYi0+bGFzdF9ibG9jayArIDEgPCBleHRlbnQuZV9sYmxrKSB7CisJCQlibGs2NF90IG5ld19sYmxrOworCisJCQluZXdfbGJsayA9IHBiLT5sYXN0X2Jsb2NrICsgMTsKKwkJCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhjdHgtPmZzKSA+IDEpCisJCQkJbmV3X2xibGsgPSAoKG5ld19sYmxrICsKKwkJCQkJICAgICBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhjdHgtPmZzKSAtIDEpICYKKwkJCQkJICAgIH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGN0eC0+ZnMpKSB8CisJCQkJCSAgIChleHRlbnQuZV9wYmxrICYKKwkJCQkJICAgIEVYVDJGU19DTFVTVEVSX01BU0soY3R4LT5mcykpOworCQkJcGN0eC0+YmxrID0gZXh0ZW50LmVfbGJsazsKKwkJCXBjdHgtPmJsazIgPSBuZXdfbGJsazsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfQ09MTEFQU0VfREJMT0NLLCBwY3R4KSkgeworCQkJCWV4dGVudC5lX2xibGsgPSBuZXdfbGJsazsKKwkJCQlwYi0+aW5vZGVfbW9kaWZpZWQgPSAxOworCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoZWhhbmRsZSwKKwkJCQkJCQkJMCwgJmV4dGVudCk7CisJCQkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCQkJcGN0eC0+ZXJyY29kZSA9IDA7CisJCQkJCWdvdG8gYWxsb2NfbGF0ZXI7CisJCQkJfQorCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGVoYW5kbGUpOworCQkJCWlmIChwY3R4LT5lcnJjb2RlKQorCQkJCQlnb3RvIGZhaWxlZF9hZGRfZGlyX2Jsb2NrOworCQkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dvdG8oZWhhbmRsZSwKKwkJCQkJCQkJZXh0ZW50LmVfbGJsayk7CisJCQkJaWYgKHBjdHgtPmVycmNvZGUpCisJCQkJCWdvdG8gZmFpbGVkX2FkZF9kaXJfYmxvY2s7CisJCQkJbGFzdF9sYmxrID0gZXh0ZW50LmVfbGJsayArIGV4dGVudC5lX2xlbiAtIDE7CisJCQkJZmFpbGVkX2NzdW0gPSAwOworCQkJfQorCQl9CithbGxvY19sYXRlcjoKKwkJd2hpbGUgKGlzX2RpciAmJiAoKytwYi0+bGFzdF9kYl9ibG9jayA8CisJCQkJICAoZTJfYmxrY250X3QpIGV4dGVudC5lX2xibGspKSB7CisJCQlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2FkZF9kaXJfYmxvY2syKGN0eC0+ZnMtPmRibGlzdCwKKwkJCQkJCQkgICAgICBwYi0+aW5vLCAwLAorCQkJCQkJCSAgICAgIHBiLT5sYXN0X2RiX2Jsb2NrKTsKKwkJCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCQkJcGN0eC0+YmxrID0gMDsKKwkJCQlwY3R4LT5udW0gPSBwYi0+bGFzdF9kYl9ibG9jazsKKwkJCQlnb3RvIGZhaWxlZF9hZGRfZGlyX2Jsb2NrOworCQkJfQorCQl9CisJCWlmICghY3R4LT5mcy0+Y2x1c3Rlcl9yYXRpb19iaXRzKSB7CisJCQltYXJrX2Jsb2Nrc191c2VkKGN0eCwgZXh0ZW50LmVfcGJsaywgZXh0ZW50LmVfbGVuKTsKKwkJCXBiLT5udW1fYmxvY2tzICs9IGV4dGVudC5lX2xlbjsKKwkJfQorCQlmb3IgKGJsayA9IGV4dGVudC5lX3BibGssIGJsb2NrY250ID0gZXh0ZW50LmVfbGJsaywgaSA9IDA7CisJCSAgICAgaSA8IGV4dGVudC5lX2xlbjsKKwkJICAgICBibGsrKywgYmxvY2tjbnQrKywgaSsrKSB7CisJCQlpZiAoY3R4LT5mcy0+Y2x1c3Rlcl9yYXRpb19iaXRzICYmCisJCQkgICAgIShwYi0+cHJldmlvdXNfYmxvY2sgJiYKKwkJCSAgICAgIChFWFQyRlNfQjJDKGN0eC0+ZnMsIGJsaykgPT0KKwkJCSAgICAgICBFWFQyRlNfQjJDKGN0eC0+ZnMsIHBiLT5wcmV2aW91c19ibG9jaykpICYmCisJCQkgICAgICAoYmxrICYgRVhUMkZTX0NMVVNURVJfTUFTSyhjdHgtPmZzKSkgPT0KKwkJCSAgICAgICgodW5zaWduZWQpIGJsb2NrY250ICYgRVhUMkZTX0NMVVNURVJfTUFTSyhjdHgtPmZzKSkpKSB7CisJCQkJbWFya19ibG9ja191c2VkKGN0eCwgYmxrKTsKKwkJCQlwYi0+bnVtX2Jsb2NrcysrOworCQkJfQorCQkJaWYgKGhhc191bmFsaWduZWRfY2x1c3Rlcl9tYXAoY3R4LCBwYi0+cHJldmlvdXNfYmxvY2ssCisJCQkJCQkgICAgICBwYi0+bGFzdF9ibG9jaywgYmxrLAorCQkJCQkJICAgICAgYmxvY2tjbnQpKSB7CisJCQkJcGN0eC0+YmxrID0gYmxvY2tjbnQ7CisJCQkJcGN0eC0+YmxrMiA9IGJsazsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfTUlTQUxJR05FRF9DTFVTVEVSLCBwY3R4KTsKKwkJCQltYXJrX2Jsb2NrX3VzZWQoY3R4LCBibGspOworCQkJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJCQl9CisJCQlwYi0+bGFzdF9ibG9jayA9IGJsb2NrY250OworCQkJcGItPnByZXZpb3VzX2Jsb2NrID0gYmxrOworCisJCQlpZiAoaXNfZGlyKSB7CisJCQkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19hZGRfZGlyX2Jsb2NrMihjdHgtPmZzLT5kYmxpc3QsIHBjdHgtPmlubywgYmxrLCBibG9ja2NudCk7CisJCQkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCQkJcGN0eC0+YmxrID0gYmxrOworCQkJCQlwY3R4LT5udW0gPSBibG9ja2NudDsKKwkJCQlmYWlsZWRfYWRkX2Rpcl9ibG9jazoKKwkJCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FERF9EQkxPQ0ssIHBjdHgpOworCQkJCQkvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKwkJCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCX0KKwkJfQorCQlpZiAoaXNfZGlyICYmIGV4dGVudC5lX2xlbiA+IDApCisJCQlwYi0+bGFzdF9kYl9ibG9jayA9IGJsb2NrY250IC0gMTsKKwkJcGItPnByZXZpb3VzX2Jsb2NrID0gZXh0ZW50LmVfcGJsayArIGV4dGVudC5lX2xlbiAtIDE7CisJCXN0YXJ0X2Jsb2NrID0gcGItPmxhc3RfYmxvY2sgPSBsYXN0X2xibGs7CisJCWlmIChpc19sZWFmICYmICFpc19kaXIgJiYKKwkJICAgICEoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpKQorCQkJcGItPmxhc3RfaW5pdF9sYmxvY2sgPSBsYXN0X2xibGs7CisJbmV4dDoKKwkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19leHRlbnRfZ2V0KGVoYW5kbGUsCisJCQkJCQkgIEVYVDJfRVhURU5UX05FWFRfU0lCLAorCQkJCQkJICAmZXh0ZW50KTsKKwl9CisKKwkvKiBGYWlsZWQgY3N1bSBidXQgcGFzc2VzIGNoZWNrcz8gIEFzayB0byBmaXggY2hlY2tzdW0uICovCisJaWYgKGZhaWxlZF9jc3VtICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9FWFRFTlRfT05MWV9DU1VNX0lOVkFMSUQsIHBjdHgpKSB7CisJCXBiLT5pbm9kZV9tb2RpZmllZCA9IDE7CisJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoZWhhbmRsZSwgMCwgJmV4dGVudCk7CisJCWlmIChwY3R4LT5lcnJjb2RlKQorCQkJcmV0dXJuOworCX0KKworCWlmIChwY3R4LT5lcnJjb2RlID09IEVYVDJfRVRfRVhURU5UX05PX05FWFQpCisJCXBjdHgtPmVycmNvZGUgPSAwOworfQorCitzdGF0aWMgdm9pZCBjaGVja19ibG9ja3NfZXh0ZW50cyhlMmZzY2tfdCBjdHgsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsCisJCQkJIHN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqcGIpCit7CisJc3RydWN0IGV4dDJfZXh0ZW50X2luZm8gaW5mbzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQkqaW5vZGUgPSBwY3R4LT5pbm9kZTsKKwlleHQyX2V4dGVudF9oYW5kbGVfdAllaGFuZGxlOworCWV4dDJfZmlsc3lzCQlmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAkJaW5vID0gcGN0eC0+aW5vOworCWVycmNvZGVfdAkJcmV0dmFsOworCWJsazY0X3QgICAgICAgICAgICAgICAgIGVvZl9sYmxrOworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIJKmVoOworCisJLyogQ2hlY2sgZm9yIGEgcHJvcGVyIGV4dGVudCBoZWFkZXIuLi4gKi8KKwllaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopICZpbm9kZS0+aV9ibG9ja1swXTsKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoZWgsIHNpemVvZihpbm9kZS0+aV9ibG9jaykpOworCWlmIChyZXR2YWwpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9NSVNTSU5HX0VYVEVOVF9IRUFERVIsIHBjdHgpKQorCQkJZTJmc2NrX2NsZWFyX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgMCwKKwkJCQkJICAgImNoZWNrX2Jsb2Nrc19leHRlbnRzIik7CisJCXBjdHgtPmVycmNvZGUgPSAwOworCQlyZXR1cm47CisJfQorCisJLyogLi4uc2luY2UgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGZhaWwgaWYgaV9ibG9jayBpcyB6ZXJvZWQuICovCisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGlubywgaW5vZGUsICZlaGFuZGxlKTsKKwlpZiAocGN0eC0+ZXJyY29kZSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX1JFQURfRVhURU5ULCBwY3R4KSkKKwkJCWUyZnNja19jbGVhcl9pbm9kZShjdHgsIGlubywgaW5vZGUsIDAsCisJCQkJCSAgICJjaGVja19ibG9ja3NfZXh0ZW50cyIpOworCQlwY3R4LT5lcnJjb2RlID0gMDsKKwkJcmV0dXJuOworCX0KKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oZWhhbmRsZSwgJmluZm8pOworCWlmIChyZXR2YWwgPT0gMCkgeworCQlpbnQgbWF4X2RlcHRoID0gaW5mby5tYXhfZGVwdGg7CisKKwkJaWYgKG1heF9kZXB0aCA+PSBNQVhfRVhURU5UX0RFUFRIX0NPVU5UKQorCQkJbWF4X2RlcHRoID0gTUFYX0VYVEVOVF9ERVBUSF9DT1VOVC0xOworCQljdHgtPmV4dGVudF9kZXB0aF9jb3VudFttYXhfZGVwdGhdKys7CisJfQorCisJLyogQ2hlY2sgbWF4aW11bSBleHRlbnQgZGVwdGggKi8KKwlwY3R4LT5ibGsgPSBpbmZvLm1heF9kZXB0aDsKKwlwY3R4LT5ibGsyID0gZXh0MmZzX21heF9leHRlbnRfZGVwdGgoZWhhbmRsZSk7CisJaWYgKHBjdHgtPmJsazIgPCBwY3R4LT5ibGsgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0VYVEVOVF9CQURfTUFYX0RFUFRILCBwY3R4KSkKKwkJcGItPmV0aS5mb3JjZV9yZWJ1aWxkID0gMTsKKworCS8qIENhbiB3ZSBjb2xsZWN0IGV4dGVudCB0cmVlIGxldmVsIHN0YXRzPyAqLworCXBjdHgtPmJsayA9IE1BWF9FWFRFTlRfREVQVEhfQ09VTlQ7CisJaWYgKHBjdHgtPmJsazIgPiBwY3R4LT5ibGspCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMUVfTUFYX0VYVEVOVF9UUkVFX0RFUFRILCBwY3R4KTsKKwltZW1zZXQocGItPmV0aS5leHRfaW5mbywgMCwgc2l6ZW9mKHBiLT5ldGkuZXh0X2luZm8pKTsKKwlwYi0+ZXRpLmlubyA9IHBiLT5pbm87CisKKwlwYi0+cmVnaW9uID0gcmVnaW9uX2NyZWF0ZSgwLCBpbmZvLm1heF9sYmxrKTsKKwlpZiAoIXBiLT5yZWdpb24pIHsKKwkJZXh0MmZzX2V4dGVudF9mcmVlKGVoYW5kbGUpOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfRVhURU5UX0FMTE9DX1JFR0lPTl9BQk9SVCwgcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisKKwllb2ZfbGJsayA9ICgoRVhUMl9JX1NJWkUoaW5vZGUpICsgZnMtPmJsb2Nrc2l6ZSAtIDEpID4+CisJCUVYVDJfQkxPQ0tfU0laRV9CSVRTKGZzLT5zdXBlcikpIC0gMTsKKwlzY2FuX2V4dGVudF9ub2RlKGN0eCwgcGN0eCwgcGIsIDAsIDAsIGVvZl9sYmxrLCBlaGFuZGxlLCAxKTsKKwlpZiAocGN0eC0+ZXJyY29kZSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzFfRVhURU5UX0lURVJBVEVfRkFJTFVSRSwgcGN0eCkpIHsKKwkJcGItPm51bV9ibG9ja3MgPSAwOworCQlpbm9kZS0+aV9ibG9ja3MgPSAwOworCQllMmZzY2tfY2xlYXJfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCBFMkZfRkxBR19SRVNUQVJULAorCQkJCSAgICJjaGVja19ibG9ja3NfZXh0ZW50cyIpOworCQlwY3R4LT5lcnJjb2RlID0gMDsKKwl9CisJcmVnaW9uX2ZyZWUocGItPnJlZ2lvbik7CisJcGItPnJlZ2lvbiA9IE5VTEw7CisJZXh0MmZzX2V4dGVudF9mcmVlKGVoYW5kbGUpOworCisJLyogUmVidWlsZCB1bmxlc3MgaXQncyBhIGRpciBhbmQgd2UncmUgcmVoYXNoaW5nIGl0ICovCisJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkgJiYKKwkgICAgZTJmc2NrX2Rpcl93aWxsX2JlX3JlaGFzaGVkKGN0eCwgaW5vKSkKKwkJcmV0dXJuOworCisJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfQ09OVkVSVF9CTUFQKQorCQllMmZzY2tfcmVidWlsZF9leHRlbnRzX2xhdGVyKGN0eCwgaW5vKTsKKwllbHNlCisJCWUyZnNja19zaG91bGRfcmVidWlsZF9leHRlbnRzKGN0eCwgcGN0eCwgJnBiLT5ldGksICZpbmZvKTsKK30KKworLyoKKyAqIEluIGZhY3Qgd2UgZG9uJ3QgbmVlZCB0byBjaGVjayBibG9ja3MgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEKKyAqIGJlY2F1c2UgdGhpcyBpbm9kZSBkb2Vzbid0IGhhdmUgYW55IGJsb2Nrcy4gIEluIHRoaXMgZnVuY3Rpb24gYWxsCisgKiB3ZSBuZWVkIHRvIGRvIGlzIGFkZCB0aGlzIGlub2RlIGludG8gZGJsaXN0IHdoZW4gaXQgaXMgYSBkaXJlY3RvcnkuCisgKi8KK3N0YXRpYyB2b2lkIGNoZWNrX2Jsb2Nrc19pbmxpbmVfZGF0YShlMmZzY2tfdCBjdHgsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsCisJCQkJICAgICBzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKnBiKQoreworCWludAlmbGFnczsKKwlzaXplX3QJaW5saW5lX2RhdGFfc2l6ZSA9IDA7CisKKwlpZiAoIXBiLT5pc19kaXIpIHsKKwkJcGN0eC0+ZXJyY29kZSA9IDA7CisJCXJldHVybjsKKwl9CisKKwkvKiBQcm9jZXNzIHRoZSBkaXJlbnRzIGluIGlfYmxvY2tbXSBhcyB0aGUgImZpcnN0IiBibG9jay4gKi8KKwlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2FkZF9kaXJfYmxvY2syKGN0eC0+ZnMtPmRibGlzdCwgcGItPmlubywgMCwgMCk7CisJaWYgKHBjdHgtPmVycmNvZGUpCisJCWdvdG8gZXJyOworCisJLyogUHJvY2VzcyB0aGUgZGlyZW50cyBpbiB0aGUgRUEgYXMgYSAic2Vjb25kIiBibG9jay4gKi8KKwlmbGFncyA9IGN0eC0+ZnMtPmZsYWdzOworCWN0eC0+ZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGN0eC0+ZnMsIHBiLT5pbm8sCisJCQkJCQkmaW5saW5lX2RhdGFfc2l6ZSk7CisJY3R4LT5mcy0+ZmxhZ3MgPSAoZmxhZ3MgJiBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSB8CisJCQkgKGN0eC0+ZnMtPmZsYWdzICYgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCXBjdHgtPmVycmNvZGUgPSAwOworCQlyZXR1cm47CisJfQorCisJaWYgKGlubGluZV9kYXRhX3NpemUgPD0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSkKKwkJcmV0dXJuOworCisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19hZGRfZGlyX2Jsb2NrMihjdHgtPmZzLT5kYmxpc3QsIHBiLT5pbm8sIDAsIDEpOworCWlmIChwY3R4LT5lcnJjb2RlKQorCQlnb3RvIGVycjsKKworCXJldHVybjsKK2VycjoKKwlwY3R4LT5ibGsgPSAwOworCXBjdHgtPm51bSA9IDA7CisJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0FERF9EQkxPQ0ssIHBjdHgpOworCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7Cit9CisKKy8qCisgKiBUaGlzIHN1YnJvdXRpbmUgaXMgY2FsbGVkIG9uIGVhY2ggaW5vZGUgdG8gYWNjb3VudCBmb3IgYWxsIG9mIHRoZQorICogYmxvY2tzIHVzZWQgYnkgdGhhdCBpbm9kZS4KKyAqLworc3RhdGljIHZvaWQgY2hlY2tfYmxvY2tzKGUyZnNja190IGN0eCwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCwKKwkJCSBjaGFyICpibG9ja19idWYpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCXN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCBwYjsKKwlleHQyX2lub190CWlubyA9IHBjdHgtPmlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUgPSBwY3R4LT5pbm9kZTsKKwl1bnNpZ25lZAliYWRfc2l6ZSA9IDA7CisJaW50CQlkaXJ0eV9pbm9kZSA9IDA7CisJaW50CQlleHRlbnRfZnM7CisJaW50CQlpbmxpbmVkYXRhX2ZzOworCV9fdTY0CQlzaXplOworCisJcGIuaW5vID0gaW5vOworCXBiLm51bV9ibG9ja3MgPSAwOworCXBiLmxhc3RfYmxvY2sgPSB+MDsKKwlwYi5sYXN0X2luaXRfbGJsb2NrID0gLTE7CisJcGIubGFzdF9kYl9ibG9jayA9IC0xOworCXBiLm51bV9pbGxlZ2FsX2Jsb2NrcyA9IDA7CisJcGIuc3VwcHJlc3MgPSAwOyBwYi5jbGVhciA9IDA7CisJcGIuZnJhZ21lbnRlZCA9IDA7CisJcGIuY29tcHJlc3NlZCA9IDA7CisJcGIucHJldmlvdXNfYmxvY2sgPSAwOworCXBiLmlzX2RpciA9IExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSk7CisJcGIuaXNfcmVnID0gTElOVVhfU19JU1JFRyhpbm9kZS0+aV9tb2RlKTsKKwlwYi5tYXhfYmxvY2tzID0gMSA8PCAoMzEgLSBmcy0+c3VwZXItPnNfbG9nX2Jsb2NrX3NpemUpOworCXBiLmlub2RlID0gaW5vZGU7CisJcGIucGN0eCA9IHBjdHg7CisJcGIuY3R4ID0gY3R4OworCXBiLmlub2RlX21vZGlmaWVkID0gMDsKKwlwYi5ldGkuZm9yY2VfcmVidWlsZCA9IDA7CisJcGN0eC0+aW5vID0gaW5vOworCXBjdHgtPmVycmNvZGUgPSAwOworCisJZXh0ZW50X2ZzID0gZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoY3R4LT5mcy0+c3VwZXIpOworCWlubGluZWRhdGFfZnMgPSBleHQyZnNfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoY3R4LT5mcy0+c3VwZXIpOworCisJaWYgKGNoZWNrX2V4dF9hdHRyKGN0eCwgcGN0eCwgYmxvY2tfYnVmKSkgeworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQkJZ290byBvdXQ7CisJCXBiLm51bV9ibG9ja3MrKzsKKwl9CisKKwlpZiAoaW5saW5lZGF0YV9mcyAmJiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSkKKwkJY2hlY2tfYmxvY2tzX2lubGluZV9kYXRhKGN0eCwgcGN0eCwgJnBiKTsKKwllbHNlIGlmIChleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsIGlub2RlKSkgeworCQlpZiAoZXh0ZW50X2ZzICYmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkpCisJCQljaGVja19ibG9ja3NfZXh0ZW50cyhjdHgsIHBjdHgsICZwYik7CisJCWVsc2UgeworCQkJaW50IGZsYWdzOworCQkJLyoKKwkJCSAqIElmIHdlJ3ZlIG1vZGlmaWVkIHRoZSBpbm9kZSwgd3JpdGUgaXQgb3V0IGJlZm9yZQorCQkJICogaXRlcmF0ZSgpIHRyaWVzIHRvIHVzZSBpdC4KKwkJCSAqLworCQkJaWYgKGRpcnR5X2lub2RlKSB7CisJCQkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCSAgICJjaGVja19ibG9ja3MiKTsKKwkJCQlkaXJ0eV9pbm9kZSA9IDA7CisJCQl9CisJCQlmbGFncyA9IGZzLT5mbGFnczsKKwkJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLAorCQkJCQkJcGIuaXNfZGlyID8gQkxPQ0tfRkxBR19IT0xFIDogMCwKKwkJCQkJCWJsb2NrX2J1ZiwgcHJvY2Vzc19ibG9jaywgJnBiKTsKKwkJCS8qCisJCQkgKiBXZSBkbyBub3QgaGF2ZSB1bmluaXRpYWxpemVkIGV4dGVudHMgaW4gbm9uIGV4dGVudAorCQkJICogZmlsZXMuCisJCQkgKi8KKwkJCXBiLmxhc3RfaW5pdF9sYmxvY2sgPSBwYi5sYXN0X2Jsb2NrOworCQkJLyoKKwkJCSAqIElmIGl0ZXJhdGUoKSBjaGFuZ2VkIGEgYmxvY2sgbWFwcGluZywgd2UgaGF2ZSB0bworCQkJICogcmUtcmVhZCB0aGUgaW5vZGUuICBJZiB3ZSBkZWNpZGUgdG8gY2xlYXIgdGhlCisJCQkgKiBpbm9kZSBhZnRlciBjbGVhcmluZyBzb21lIHN0dWZmLCB3ZSdsbCByZS13cml0ZSB0aGUKKwkJCSAqIGJhZCBtYXBwaW5ncyBpbnRvIHRoZSBpbm9kZSEKKwkJCSAqLworCQkJaWYgKHBiLmlub2RlX21vZGlmaWVkKQorCQkJCWUyZnNja19yZWFkX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwKKwkJCQkJCSAgImNoZWNrX2Jsb2NrcyIpOworCQkJZnMtPmZsYWdzID0gKGZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgfAorCQkJCSAgICAoZnMtPmZsYWdzICYgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCisJCQlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9DT05WRVJUX0JNQVApIHsKKyNpZmRlZiBERUJVRworCQkJCXByaW50ZigiYm1hcCByZWJ1aWxkIGlubz0lZFxuIiwgaW5vKTsKKyNlbmRpZgorCQkJCWlmICghTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSB8fAorCQkJCSAgICAhZTJmc2NrX2Rpcl93aWxsX2JlX3JlaGFzaGVkKGN0eCwgaW5vKSkKKwkJCQkJZTJmc2NrX3JlYnVpbGRfZXh0ZW50c19sYXRlcihjdHgsIGlubyk7CisJCQl9CisJCX0KKwl9CisJZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9CTE9DSyk7CisJZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9UT09CSUcpOworCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCWdvdG8gb3V0OworCWlmIChwY3R4LT5lcnJjb2RlKQorCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQkxPQ0tfSVRFUkFURSwgcGN0eCk7CisKKwlpZiAocGIuZnJhZ21lbnRlZCAmJiBwYi5udW1fYmxvY2tzIDwgZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXApIHsKKwkJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkpCisJCQljdHgtPmZzX2ZyYWdtZW50ZWRfZGlyKys7CisJCWVsc2UKKwkJCWN0eC0+ZnNfZnJhZ21lbnRlZCsrOworCX0KKworCWlmIChwYi5jbGVhcikgeworCQllMmZzY2tfY2xlYXJfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCBFMkZfRkxBR19SRVNUQVJULAorCQkJCSAgICJjaGVja19ibG9ja3MiKTsKKwkJcmV0dXJuOworCX0KKworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDJfSU5ERVhfRkwpIHsKKwkJaWYgKGhhbmRsZV9odHJlZShjdHgsIHBjdHgsIGlubywgaW5vZGUsIGJsb2NrX2J1ZikpIHsKKwkJCWlub2RlLT5pX2ZsYWdzICY9IH5FWFQyX0lOREVYX0ZMOworCQkJZGlydHlfaW5vZGUrKzsKKwkJfSBlbHNlIHsKKwkJCWUyZnNja19hZGRfZHhfZGlyKGN0eCwgaW5vLCBwYi5sYXN0X2Jsb2NrKzEpOworCQl9CisJfQorCisJaWYgKCFwYi5udW1fYmxvY2tzICYmIHBiLmlzX2RpciAmJgorCSAgICAhKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9aRVJPX0xFTkdUSF9ESVIsIHBjdHgpKSB7CisJCQllMmZzY2tfY2xlYXJfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCAwLCAiY2hlY2tfYmxvY2tzIik7CisJCQljdHgtPmZzX2RpcmVjdG9yeV9jb3VudC0tOworCQkJcmV0dXJuOworCQl9CisJfQorCisJaWYgKGlubyAhPSBxdW90YV90eXBlMmludW0oUFJKUVVPVEEsIGZzLT5zdXBlcikgJiYKKwkgICAgKGlubyA9PSBFWFQyX1JPT1RfSU5PIHx8IGlubyA+PSBFWFQyX0ZJUlNUX0lOT0RFKGN0eC0+ZnMtPnN1cGVyKSkpIHsKKwkJcXVvdGFfZGF0YV9hZGQoY3R4LT5xY3R4LCAoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKikgaW5vZGUsCisJCQkgICAgICAgaW5vLCBwYi5udW1fYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSk7CisJCXF1b3RhX2RhdGFfaW5vZGVzKGN0eC0+cWN0eCwgKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGlub2RlLAorCQkJCSAgaW5vLCArMSk7CisJfQorCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgfHwKKwkgICAgIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfSFVHRV9GSUxFX0ZMKSkKKwkJcGIubnVtX2Jsb2NrcyAqPSAoZnMtPmJsb2Nrc2l6ZSAvIDUxMik7CisJcGIubnVtX2Jsb2NrcyAqPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisjaWYgMAorCXByaW50ZigiaW5vZGUgJXUsIGlfc2l6ZSA9ICV1LCBsYXN0X2Jsb2NrID0gJWxsdSwgaV9ibG9ja3M9JWxsdSwgbnVtX2Jsb2NrcyA9ICVsbHVcbiIsCisJICAgICAgIGlubywgaW5vZGUtPmlfc2l6ZSwgcGIubGFzdF9ibG9jaywgZXh0MmZzX2lub2RlX2lfYmxvY2tzKGZzLCBpbm9kZSksCisJICAgICAgIHBiLm51bV9ibG9ja3MpOworI2VuZGlmCisJaWYgKHBiLmlzX2RpcikgeworCQl1bnNpZ25lZCBuYmxvY2sgPSBpbm9kZS0+aV9zaXplID4+IEVYVDJfQkxPQ0tfU0laRV9CSVRTKGZzLT5zdXBlcik7CisJCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHsKKwkJCWludCBmbGFnczsKKwkJCXNpemVfdCBzeiA9IDA7CisJCQllcnJjb2RlX3QgZXJyOworCisJCQlmbGFncyA9IGN0eC0+ZnMtPmZsYWdzOworCQkJY3R4LT5mcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJCWVyciA9IGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGN0eC0+ZnMsIHBjdHgtPmlubywKKwkJCQkJCSAgICAgICZzeik7CisJCQljdHgtPmZzLT5mbGFncyA9IChmbGFncyAmCisJCQkJCSAgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgfAorCQkJCQkgKGN0eC0+ZnMtPmZsYWdzICYKKwkJCQkJICB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUyk7CisJCQlpZiAoZXJyIHx8IHN6ICE9IGlub2RlLT5pX3NpemUpIHsKKwkJCQliYWRfc2l6ZSA9IDc7CisJCQkJcGN0eC0+bnVtID0gc3o7CisJCQl9CisJCX0gZWxzZSBpZiAoaW5vZGUtPmlfc2l6ZSAmIChmcy0+YmxvY2tzaXplIC0gMSkpCisJCQliYWRfc2l6ZSA9IDU7CisJCWVsc2UgaWYgKG5ibG9jayA+IChwYi5sYXN0X2Jsb2NrICsgMSkpCisJCQliYWRfc2l6ZSA9IDE7CisJCWVsc2UgaWYgKG5ibG9jayA8IChwYi5sYXN0X2Jsb2NrICsgMSkpIHsKKwkJCWlmICgoKHBiLmxhc3RfYmxvY2sgKyAxKSAtIG5ibG9jaykgPgorCQkJICAgIGZzLT5zdXBlci0+c19wcmVhbGxvY19kaXJfYmxvY2tzKQorCQkJCWJhZF9zaXplID0gMjsKKwkJfQorCX0gZWxzZSB7CisJCWUyX2Jsa2NudF90IGJsa3BnID0gY3R4LT5ibG9ja3NfcGVyX3BhZ2U7CisKKwkJc2l6ZSA9IEVYVDJfSV9TSVpFKGlub2RlKTsKKwkJaWYgKChwYi5sYXN0X2luaXRfbGJsb2NrID49IDApICYmCisJCSAgICAvKiBhbGxvdyBhbGxvY2F0ZWQgYmxvY2tzIHRvIGVuZCBvZiBQQUdFX1NJWkUgKi8KKwkJICAgIChzaXplIDwgKF9fdTY0KXBiLmxhc3RfaW5pdF9sYmxvY2sgKiBmcy0+YmxvY2tzaXplKSAmJgorCQkgICAgKHBiLmxhc3RfaW5pdF9sYmxvY2sgLyBibGtwZyAqIGJsa3BnICE9IHBiLmxhc3RfaW5pdF9sYmxvY2sgfHwKKwkJICAgICBzaXplIDwgKF9fdTY0KShwYi5sYXN0X2luaXRfbGJsb2NrICYgfihibGtwZy0xKSkgKgorCQkgICAgIGZzLT5ibG9ja3NpemUpKQorCQkJYmFkX3NpemUgPSAzOworCQllbHNlIGlmICghKGV4dGVudF9mcyAmJiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKSAmJgorCQkJIHNpemUgPiBleHQyX21heF9zaXplc1tmcy0+c3VwZXItPnNfbG9nX2Jsb2NrX3NpemVdKQorCQkJLyogdG9vIGJpZyBmb3IgYSBkaXJlY3QvaW5kaXJlY3QtbWFwcGVkIGZpbGUgKi8KKwkJCWJhZF9zaXplID0gNDsKKwkJZWxzZSBpZiAoKGV4dGVudF9mcyAmJiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKSAmJgorCQkJIHNpemUgPgorCQkJICgoMVVMTCA8PCAoMzIgKyBFWFQyX0JMT0NLX1NJWkVfQklUUyhmcy0+c3VwZXIpKSkgLSAxKSkKKwkJCS8qIHRvbyBiaWcgZm9yIGFuIGV4dGVudC1iYXNlZCBmaWxlIC0gMzJiaXQgZWVfYmxvY2sgKi8KKwkJCWJhZF9zaXplID0gNjsKKwl9CisJLyogaV9zaXplIGZvciBzeW1saW5rcyBpcyBjaGVja2VkIGVsc2V3aGVyZSAqLworCWlmIChiYWRfc2l6ZSAmJiAhTElOVVhfU19JU0xOSyhpbm9kZS0+aV9tb2RlKSkgeworCQkvKiBEaWQgaW5saW5lX2RhdGEgc2V0IHBjdHgtPm51bSBlYXJsaWVyPyAqLworCQlpZiAoYmFkX3NpemUgIT0gNykKKwkJCXBjdHgtPm51bSA9IChwYi5sYXN0X2Jsb2NrICsgMSkgKiBmcy0+YmxvY2tzaXplOworCQlwY3R4LT5ncm91cCA9IGJhZF9zaXplOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JBRF9JX1NJWkUsIHBjdHgpKSB7CisJCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSkKKwkJCQlwY3R4LT5udW0gJj0gMHhGRkZGRkZGRlVMTDsKKwkJCWV4dDJmc19pbm9kZV9zaXplX3NldChmcywgaW5vZGUsIHBjdHgtPm51bSk7CisJCQlpZiAoRVhUMl9JX1NJWkUoaW5vZGUpID09IDAgJiYKKwkJCSAgICAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSkgeworCQkJCW1lbXNldChpbm9kZS0+aV9ibG9jaywgMCwKKwkJCQkgICAgICAgc2l6ZW9mKGlub2RlLT5pX2Jsb2NrKSk7CisJCQkJaW5vZGUtPmlfZmxhZ3MgJj0gfkVYVDRfSU5MSU5FX0RBVEFfRkw7CisJCQl9CisJCQlkaXJ0eV9pbm9kZSsrOworCQl9CisJCXBjdHgtPm51bSA9IDA7CisJfQorCWlmIChMSU5VWF9TX0lTUkVHKGlub2RlLT5pX21vZGUpICYmCisJICAgIGV4dDJmc19uZWVkc19sYXJnZV9maWxlX2ZlYXR1cmUoRVhUMl9JX1NJWkUoaW5vZGUpKSkKKwkJY3R4LT5sYXJnZV9maWxlcysrOworCWlmICgoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MgIT0gRVhUMl9PU19IVVJEKSAmJgorCSAgICAoKHBiLm51bV9ibG9ja3MgIT0gZXh0MmZzX2lub2RlX2lfYmxvY2tzKGZzLCBpbm9kZSkpIHx8CisJICAgICAoZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShmcy0+c3VwZXIpICYmCisJICAgICAgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9IVUdFX0ZJTEVfRkwpICYmCisJICAgICAgKGlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpICE9IDApKSkpIHsKKwkJcGN0eC0+bnVtID0gcGIubnVtX2Jsb2NrczsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9CQURfSV9CTE9DS1MsIHBjdHgpKSB7CisJCQlpbm9kZS0+aV9ibG9ja3MgPSBwYi5udW1fYmxvY2tzOworCQkJaW5vZGUtPm9zZDIubGludXgyLmxfaV9ibG9ja3NfaGkgPSBwYi5udW1fYmxvY2tzID4+IDMyOworCQkJZGlydHlfaW5vZGUrKzsKKwkJfQorCQlwY3R4LT5udW0gPSAwOworCX0KKworCS8qCisJICogVGhlIGtlcm5lbCBnZXRzIG1hZCBpZiB3ZSBhc2sgaXQgdG8gYWxsb2NhdGUgYmlnYWxsb2MgY2x1c3RlcnMgdG8KKwkgKiBhIGJsb2NrIG1hcHBlZCBmaWxlLCBzbyByZWJ1aWxkIGl0IGFzIGFuIGV4dGVudCBmaWxlLiAgV2UgY2FuIHNraXAKKwkgKiBzeW1saW5rcyBiZWNhdXNlIHRoZXkncmUgbmV2ZXIgcmV3cml0dGVuLgorCSAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSAmJgorCSAgICAoTElOVVhfU19JU1JFRyhpbm9kZS0+aV9tb2RlKSB8fCBMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpKSAmJgorCSAgICBleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MyKGZzLCBpbm9kZSkgPiAwICYmCisJICAgIChpbm8gPT0gRVhUMl9ST09UX0lOTyB8fCBpbm8gPj0gRVhUMl9GSVJTVF9JTk8oZnMtPnN1cGVyKSkgJiYKKwkgICAgIShpbm9kZS0+aV9mbGFncyAmIChFWFQ0X0VYVEVOVFNfRkwgfCBFWFQ0X0lOTElORV9EQVRBX0ZMKSkgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX05PX0JJR0FMTE9DX0JMT0NLTUFQX0ZJTEVTLCBwY3R4KSkgeworCQlwY3R4LT5lcnJjb2RlID0gZTJmc2NrX3JlYnVpbGRfZXh0ZW50c19sYXRlcihjdHgsIGlubyk7CisJCWlmIChwY3R4LT5lcnJjb2RlKQorCQkJZ290byBvdXQ7CisJfQorCisJaWYgKGN0eC0+ZGlyc190b19oYXNoICYmIHBiLmlzX2RpciAmJgorCSAgICAhKGN0eC0+bG9zdF9hbmRfZm91bmQgJiYgY3R4LT5sb3N0X2FuZF9mb3VuZCA9PSBpbm8pICYmCisJICAgICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQyX0lOREVYX0ZMKSAmJgorCSAgICAoKGlub2RlLT5pX3NpemUgLyBmcy0+YmxvY2tzaXplKSA+PSAzKSkKKwkJZTJmc2NrX3JlaGFzaF9kaXJfbGF0ZXIoY3R4LCBpbm8pOworCitvdXQ6CisJaWYgKGRpcnR5X2lub2RlKQorCQllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBpbm8sIGlub2RlLCAiY2hlY2tfYmxvY2tzIik7Cit9CisKKyNpZiAwCisvKgorICogSGVscGVyIGZ1bmN0aW9uIGNhbGxlZCBieSBwcm9jZXNzIGJsb2NrIHdoZW4gYW4gaWxsZWdhbCBibG9jayBpcworICogZm91bmQuICBJdCByZXR1cm5zIGEgZGVzY3JpcHRpb24gYWJvdXQgd2h5IHRoZSBibG9jayBpcyBpbGxlZ2FsCisgKi8KK3N0YXRpYyBjaGFyICpkZXNjcmliZV9pbGxlZ2FsX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrKQoreworCWJsazY0X3QJc3VwZXI7CisJaW50CWk7CisJc3RhdGljIGNoYXIJcHJvYmxlbVs4MF07CisKKwlzdXBlciA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCXN0cmNweShwcm9ibGVtLCAiUFJPR1JBTU1JTkcgRVJST1I6IFVua25vd24gcmVhc29uIGZvciBpbGxlZ2FsIGJsb2NrIik7CisJaWYgKGJsb2NrIDwgc3VwZXIpIHsKKwkJc3ByaW50Zihwcm9ibGVtLCAiPCBGSVJTVEJMT0NLICgldSkiLCBzdXBlcik7CisJCXJldHVybihwcm9ibGVtKTsKKwl9IGVsc2UgaWYgKGJsb2NrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkgeworCQlzcHJpbnRmKHByb2JsZW0sICI+IEJMT0NLUyAoJXUpIiwgZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKTsKKwkJcmV0dXJuKHByb2JsZW0pOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlpZiAoYmxvY2sgPT0gc3VwZXIpIHsKKwkJCXNwcmludGYocHJvYmxlbSwgImlzIHRoZSBzdXBlcmJsb2NrIGluIGdyb3VwICVkIiwgaSk7CisJCQlicmVhazsKKwkJfQorCQlpZiAoYmxvY2sgPiBzdXBlciAmJgorCQkgICAgYmxvY2sgPD0gKHN1cGVyICsgZnMtPmRlc2NfYmxvY2tzKSkgeworCQkJc3ByaW50Zihwcm9ibGVtLCAiaXMgaW4gdGhlIGdyb3VwIGRlc2NyaXB0b3JzICIKKwkJCQkib2YgZ3JvdXAgJWQiLCBpKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChibG9jayA9PSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpIHsKKwkJCXNwcmludGYocHJvYmxlbSwgImlzIHRoZSBibG9jayBiaXRtYXAgb2YgZ3JvdXAgJWQiLCBpKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChibG9jayA9PSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSkpIHsKKwkJCXNwcmludGYocHJvYmxlbSwgImlzIHRoZSBpbm9kZSBiaXRtYXAgb2YgZ3JvdXAgJWQiLCBpKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChibG9jayA+PSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSAmJgorCQkgICAgKGJsb2NrIDwgZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkKKwkJICAgICArIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwKSkgeworCQkJc3ByaW50Zihwcm9ibGVtLCAiaXMgaW4gdGhlIGlub2RlIHRhYmxlIG9mIGdyb3VwICVkIiwKKwkJCQlpKTsKKwkJCWJyZWFrOworCQl9CisJCXN1cGVyICs9IGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCX0KKwlyZXR1cm4ocHJvYmxlbSk7Cit9CisjZW5kaWYKKworLyoKKyAqIFRoaXMgaXMgYSBoZWxwZXIgZnVuY3Rpb24gZm9yIGNoZWNrX2Jsb2NrcygpLgorICovCitzdGF0aWMgaW50IHByb2Nlc3NfYmxvY2soZXh0Ml9maWxzeXMgZnMsCisJCSAgYmxrNjRfdAkqYmxvY2tfbnIsCisJCSAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCSAgYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgIGludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHg7CisJYmxrNjRfdAlibGsgPSAqYmxvY2tfbnI7CisJaW50CXJldF9jb2RlID0gMDsKKwlwcm9ibGVtX3QJcHJvYmxlbSA9IDA7CisJZTJmc2NrX3QJY3R4OworCisJcCA9IChzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKikgcHJpdl9kYXRhOworCXBjdHggPSBwLT5wY3R4OworCWN0eCA9IHAtPmN0eDsKKworCS8qCisJICogRm9yIGEgZGlyZWN0b3J5LCBhZGQgbG9naWNhbCBibG9jayB6ZXJvIGZvciBwcm9jZXNzaW5nIGV2ZW4gaWYgaXQncworCSAqIG5vdCBtYXBwZWQgb3Igd2UnbGwgYmUgcGVyZW5uaWFsbHkgc3R1Y2sgd2l0aCBicm9rZW4gIi4iIGFuZCAiLi4iCisJICogZW50cmllcy4KKwkgKi8KKwlpZiAocC0+aXNfZGlyICYmIGJsb2NrY250ID09IDAgJiYgYmxrID09IDApIHsKKwkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19hZGRfZGlyX2Jsb2NrMihmcy0+ZGJsaXN0LCBwLT5pbm8sIDAsIDApOworCQlpZiAocGN0eC0+ZXJyY29kZSkgeworCQkJcGN0eC0+YmxrID0gYmxrOworCQkJcGN0eC0+bnVtID0gYmxvY2tjbnQ7CisJCQlnb3RvIGZhaWxlZF9hZGRfZGlyX2Jsb2NrOworCQl9CisJCXAtPmxhc3RfZGJfYmxvY2srKzsKKwl9CisKKwlpZiAoYmxrID09IDApCisJCXJldHVybiAwOworCisjaWYgMAorCXByaW50ZigiUHJvY2Vzc19ibG9jaywgaW5vZGUgJWx1LCBibG9jayAldSwgIyVkXG4iLCBwLT5pbm8sIGJsaywKKwkgICAgICAgYmxvY2tjbnQpOworI2VuZGlmCisKKwkvKgorCSAqIFNpbXBsaXN0aWMgZnJhZ21lbnRhdGlvbiBjaGVjay4gIFdlIG1lcmVseSByZXF1aXJlIHRoYXQgdGhlCisJICogZmlsZSBiZSBjb250aWd1b3VzLiAgKFdoaWNoIGNhbiBuZXZlciBiZSB0cnVlIGZvciByZWFsbHkKKwkgKiBiaWcgZmlsZXMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIGEgYmxvY2sgZ3JvdXAuKQorCSAqLworCWlmIChwLT5wcmV2aW91c19ibG9jayAmJiBwLT5pbm8gIT0gRVhUMl9SRVNJWkVfSU5PKSB7CisJCWlmIChwLT5wcmV2aW91c19ibG9jaysxICE9IGJsaykgeworCQkJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRlJBR0NIRUNLKSB7CisJCQkJY2hhciB0eXBlID0gJz8nOworCisJCQkJaWYgKHAtPmlzX2RpcikKKwkJCQkJdHlwZSA9ICdkJzsKKwkJCQllbHNlIGlmIChwLT5pc19yZWcpCisJCQkJCXR5cGUgPSAnZic7CisKKwkJCQlwcmludGYoXygiJTZsdSglYyk6IGV4cGVjdGluZyAlNmx1ICIKKwkJCQkJICJnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIpLAorCQkJCSAgICAgICAodW5zaWduZWQgbG9uZykgcGN0eC0+aW5vLCB0eXBlLAorCQkJCSAgICAgICAodW5zaWduZWQgbG9uZykgcC0+cHJldmlvdXNfYmxvY2srMSwKKwkJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcpIGJsaywKKwkJCQkgICAgICAgYmxvY2tjbnQpOworCQkJfQorCQkJcC0+ZnJhZ21lbnRlZCA9IDE7CisJCX0KKwl9CisKKwlpZiAocC0+aXNfZGlyICYmIGJsb2NrY250ID4gKDEgPDwgKDIxIC0gZnMtPnN1cGVyLT5zX2xvZ19ibG9ja19zaXplKSkpCisJCXByb2JsZW0gPSBQUl8xX1RPT0JJR19ESVI7CisJaWYgKHAtPmlzX3JlZyAmJiBwLT5udW1fYmxvY2tzKzEgPj0gcC0+bWF4X2Jsb2NrcykKKwkJcHJvYmxlbSA9IFBSXzFfVE9PQklHX1JFRzsKKwlpZiAoIXAtPmlzX2RpciAmJiAhcC0+aXNfcmVnICYmIGJsb2NrY250ID4gMCkKKwkJcHJvYmxlbSA9IFBSXzFfVE9PQklHX1NZTUxJTks7CisKKwlpZiAoYmxrIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkgICAgYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJcHJvYmxlbSA9IFBSXzFfSUxMRUdBTF9CTE9DS19OVU07CisKKwkvKgorCSAqIElmIHRoaXMgSU5EL0RJTkQvVElORCBibG9jayBpcyBzcXVhdHRpbmcgYXRvcCBzb21lIGNyaXRpY2FsIG1ldGFkYXRhCisJICogKGdyb3VwIGRlc2NyaXB0b3JzLCBzdXBlcmJsb2NrLCBiaXRtYXAsIGlub2RlIHRhYmxlKSwgYW55IHdyaXRlIHRvCisJICogImZpeCIgbWFwcGluZyBwcm9ibGVtcyB3aWxsIGRlc3Ryb3kgdGhlIG1ldGFkYXRhLiAgV2UnbGwgbGV0IHBhc3MgMWIKKwkgKiBmaXggdGhhdCBhbmQgcmVzdGFydCBmc2NrLgorCSAqLworCWlmIChibG9ja2NudCA8IDAgJiYKKwkgICAgcC0+aW5vICE9IEVYVDJfUkVTSVpFX0lOTyAmJgorCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwLCBibGspKSB7CisJCXBjdHgtPmJsayA9IGJsazsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0NSSVRJQ0FMX01FVEFEQVRBX0NPTExJU0lPTiwgcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUkVTVEFSVF9MQVRFUjsKKwl9CisKKwlpZiAocHJvYmxlbSkgeworCQlwLT5udW1faWxsZWdhbF9ibG9ja3MrKzsKKwkJLyoKKwkJICogQSBiaXQgb2Ygc3VidGVyZnVnZSBoZXJlIC0tIHdlJ3JlIHRyeWluZyB0byBmaXggYSBibG9jaworCQkgKiBtYXBwaW5nLCBidXQgdGhlIElORC9ESU5EL1RJTkQgYmxvY2sgY291bGQgaGF2ZSBjb2xsaWRlZAorCQkgKiB3aXRoIHNvbWUgY3JpdGljYWwgbWV0YWRhdGEuICBTbywgZml4IHRoZSBpbi1jb3JlIG1hcHBpbmcgc28KKwkJICogaXRlcmF0ZSB3b24ndCBnbyBpbnNhbmUsIGJ1dCByZXR1cm4gMCBpbnN0ZWFkIG9mCisJCSAqIEJMT0NLX0NIQU5HRUQgc28gdGhhdCBpdCB3b24ndCB3cml0ZSB0aGUgcmVtYXBwaW5nIG91dCB0bworCQkgKiBvdXIgbXVsdGlwbHkgbGlua2VkIGJsb2NrLgorCQkgKgorCQkgKiBFdmVuIGlmIHdlIHByZXZpb3VzbHkgZGV0ZXJtaW5lZCB0aGF0IGFuICpJTkQgYmxvY2sKKwkJICogY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHdlIG11c3Qgc3RpbGwgdHJ5IHRvCisJCSAqIGl0ZXJhdGUgdGhlICpJTkQgYmxvY2sgYXMgaWYgaXQgaXMgYW4gKklORCBibG9jayB0byBmaW5kIGFuZAorCQkgKiBtYXJrIHRoZSBibG9ja3MgaXQgcG9pbnRzIHRvLiAgQmV0dGVyIHRvIGJlIG92ZXJseSBjYXV0aW91cworCQkgKiB3aXRoIHRoZSB1c2VkX2Jsb2NrcyBtYXAgc28gdGhhdCB3ZSBkb24ndCBtb3ZlIHRoZSAqSU5ECisJCSAqIGJsb2NrIHRvIGEgYmxvY2sgdGhhdCdzIHJlYWxseSBpbiB1c2UhCisJCSAqLworCQlpZiAocC0+aW5vICE9IEVYVDJfUkVTSVpFX0lOTyAmJgorCQkgICAgcmVmX2Jsb2NrICE9IDAgJiYKKwkJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19tZXRhZGF0YV9tYXAsCisJCQkJCSAgICAgIHJlZl9ibG9jaykpIHsKKwkJCSpibG9ja19uciA9IDA7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoIXAtPnN1cHByZXNzICYmIChwLT5udW1faWxsZWdhbF9ibG9ja3MgJSAxMikgPT0gMCkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9UT09fTUFOWV9CQURfQkxPQ0tTLCBwY3R4KSkgeworCQkJCXAtPmNsZWFyID0gMTsKKwkJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCQl9CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX1NVUFBSRVNTX01FU1NBR0VTLCBwY3R4KSkgeworCQkJCXAtPnN1cHByZXNzID0gMTsKKwkJCQlzZXRfbGF0Y2hfZmxhZ3MoUFJfTEFUQ0hfQkxPQ0ssCisJCQkJCQlQUkxfU1VQUFJFU1MsIDApOworCQkJfQorCQl9CisJCXBjdHgtPmJsayA9IGJsazsKKwkJcGN0eC0+YmxrY291bnQgPSBibG9ja2NudDsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgcHJvYmxlbSwgcGN0eCkpIHsKKwkJCWJsayA9ICpibG9ja19uciA9IDA7CisJCQlyZXRfY29kZSA9IEJMT0NLX0NIQU5HRUQ7CisJCQlwLT5pbm9kZV9tb2RpZmllZCA9IDE7CisJCQkvKgorCQkJICogSWYgdGhlIGRpcmVjdG9yeSBibG9jayBpcyB0b28gYmlnIGFuZCBpcyBiZXlvbmQgdGhlCisJCQkgKiBlbmQgb2YgdGhlIEZTLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGFkZCBpdCBmb3IKKwkJCSAqIHByb2Nlc3NpbmcgLS0gdGhlIGtlcm5lbCB3b3VsZCBuZXZlciBoYXZlIGNyZWF0ZWQgYQorCQkJICogZGlyZWN0b3J5IHRoaXMgbGFyZ2UsIGFuZCB3ZSByaXNrIGFuIEVOT01FTSBhYm9ydC4KKwkJCSAqIEluIGFueSBjYXNlLCB0aGUgdG9vYmlnIGhhbmRsZXIgZm9yIGV4dGVudC1iYXNlZAorCQkJICogZGlyZWN0b3JpZXMgYWxzbyBkb2Vzbid0IGZlZWQgdG9vYmlnIGJsb2NrcyB0bworCQkJICogcGFzcyAyLgorCQkJICovCisJCQlpZiAocHJvYmxlbSA9PSBQUl8xX1RPT0JJR19ESVIpCisJCQkJcmV0dXJuIHJldF9jb2RlOworCQkJZ290byBtYXJrX2RpcjsKKwkJfSBlbHNlCisJCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAocC0+aW5vID09IEVYVDJfUkVTSVpFX0lOTykgeworCQkvKgorCQkgKiBUaGUgcmVzaXplIGlub2RlIGhhcyBhbHJlYWR5IGJlIHNhbml0eSBjaGVja2VkCisJCSAqIGR1cmluZyBwYXNzICMwICh0aGUgc3VwZXJibG9jayBjaGVja3MpLiAgQWxsIHdlCisJCSAqIGhhdmUgdG8gZG8gaXMgbWFyayB0aGUgZG91YmxlIGluZGlyZWN0IGJsb2NrIGFzCisJCSAqIGJlaW5nIGluIHVzZTsgYWxsIG9mIHRoZSBvdGhlciBibG9ja3MgYXJlIGhhbmRsZWQKKwkJICogYnkgbWFya190YWJsZV9ibG9ja3MoKSkuCisJCSAqLworCQlpZiAoYmxvY2tjbnQgPT0gQkxPQ0tfQ09VTlRfRElORCkKKwkJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJCXAtPm51bV9ibG9ja3MrKzsKKwl9IGVsc2UgaWYgKCEoY3R4LT5mcy0+Y2x1c3Rlcl9yYXRpb19iaXRzICYmCisJCSAgICAgcC0+cHJldmlvdXNfYmxvY2sgJiYKKwkJICAgICAoRVhUMkZTX0IyQyhjdHgtPmZzLCBibGspID09CisJCSAgICAgIEVYVDJGU19CMkMoY3R4LT5mcywgcC0+cHJldmlvdXNfYmxvY2spKSAmJgorCQkgICAgIChibGsgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGN0eC0+ZnMpKSA9PQorCQkgICAgICgodW5zaWduZWQpIGJsb2NrY250ICYgRVhUMkZTX0NMVVNURVJfTUFTSyhjdHgtPmZzKSkpKSB7CisJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJCXAtPm51bV9ibG9ja3MrKzsKKwl9IGVsc2UgaWYgKGhhc191bmFsaWduZWRfY2x1c3Rlcl9tYXAoY3R4LCBwLT5wcmV2aW91c19ibG9jaywKKwkJCQkJICAgICBwLT5sYXN0X2Jsb2NrLCBibGssIGJsb2NrY250KSkgeworCQlwY3R4LT5ibGsgPSBibG9ja2NudDsKKwkJcGN0eC0+YmxrMiA9IGJsazsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX01JU0FMSUdORURfQ0xVU1RFUiwgcGN0eCk7CisJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJCW1hcmtfYmxvY2tfdXNlZChjdHgsIGJsayk7CisJfQorCWlmIChibG9ja2NudCA+PSAwKQorCQlwLT5sYXN0X2Jsb2NrID0gYmxvY2tjbnQ7CisJcC0+cHJldmlvdXNfYmxvY2sgPSBibGs7CittYXJrX2RpcjoKKwlpZiAocC0+aXNfZGlyICYmIChibG9ja2NudCA+PSAwKSkgeworCQl3aGlsZSAoKytwLT5sYXN0X2RiX2Jsb2NrIDwgYmxvY2tjbnQpIHsKKwkJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfYWRkX2Rpcl9ibG9jazIoZnMtPmRibGlzdCwKKwkJCQkJCQkgICAgICBwLT5pbm8sIDAsCisJCQkJCQkJICAgICAgcC0+bGFzdF9kYl9ibG9jayk7CisJCQlpZiAocGN0eC0+ZXJyY29kZSkgeworCQkJCXBjdHgtPmJsayA9IDA7CisJCQkJcGN0eC0+bnVtID0gcC0+bGFzdF9kYl9ibG9jazsKKwkJCQlnb3RvIGZhaWxlZF9hZGRfZGlyX2Jsb2NrOworCQkJfQorCQl9CisJCXBjdHgtPmVycmNvZGUgPSBleHQyZnNfYWRkX2Rpcl9ibG9jazIoZnMtPmRibGlzdCwgcC0+aW5vLAorCQkJCQkJICAgICAgYmxrLCBibG9ja2NudCk7CisJCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCQlwY3R4LT5ibGsgPSBibGs7CisJCQlwY3R4LT5udW0gPSBibG9ja2NudDsKKwkJZmFpbGVkX2FkZF9kaXJfYmxvY2s6CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfQUREX0RCTE9DSywgcGN0eCk7CisJCQkvKiBTaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCX0KKwl9CisJcmV0dXJuIHJldF9jb2RlOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfYmFkX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkgICAgICBibGs2NF90ICpibG9ja19uciwKKwkJICAgICAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCSAgICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCWJsazY0X3QJCWJsayA9ICpibG9ja19ucjsKKwlibGs2NF90CQlmaXJzdF9ibG9jazsKKwlkZ3JwX3QJCWk7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eDsKKwllMmZzY2tfdAljdHg7CisKKwlpZiAoIWJsaykKKwkJcmV0dXJuIDA7CisKKwlwID0gKHN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJY3R4ID0gcC0+Y3R4OworCXBjdHggPSBwLT5wY3R4OworCisJcGN0eC0+aW5vID0gRVhUMl9CQURfSU5POworCXBjdHgtPmJsayA9IGJsazsKKwlwY3R4LT5ibGtjb3VudCA9IGJsb2NrY250OworCisJaWYgKChibGsgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgfHwKKwkgICAgKGJsayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfQkJfSUxMRUdBTF9CTE9DS19OVU0sIHBjdHgpKSB7CisJCQkqYmxvY2tfbnIgPSAwOworCQkJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7CisJCX0gZWxzZQorCQkJcmV0dXJuIDA7CisJfQorCisJaWYgKGJsb2NrY250IDwgMCkgeworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihwLT5mc19tZXRhX2Jsb2NrcywgYmxrKSkgeworCQkJcC0+YmJjaGVjayA9IDE7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JCX0ZTX0JMT0NLLCBwY3R4KSkgeworCQkJCSpibG9ja19uciA9IDA7CisJCQkJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7CisJCQl9CisJCX0gZWxzZSBpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQkJCSAgICBibGspKSB7CisJCQlwLT5iYmNoZWNrID0gMTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfQkJJTk9ERV9CQURfTUVUQUJMT0NLLAorCQkJCQlwY3R4KSkgeworCQkJCSpibG9ja19uciA9IDA7CisJCQkJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7CisJCQl9CisJCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfSBlbHNlCisJCQltYXJrX2Jsb2NrX3VzZWQoY3R4LCBibGspOworCQlyZXR1cm4gMDsKKwl9CisjaWYgMAorCXByaW50ZiAoIkRFQlVHOiBNYXJraW5nICV1IGFzIGJhZC5cbiIsIGJsayk7CisjZW5kaWYKKwljdHgtPmZzX2JhZGJsb2Nrc19jb3VudCsrOworCS8qCisJICogSWYgdGhlIGJsb2NrIGlzIG5vdCB1c2VkLCB0aGVuIG1hcmsgaXQgYXMgdXNlZCBhbmQgcmV0dXJuLgorCSAqIElmIGl0IGlzIGFscmVhZHkgbWFya2VkIGFzIGZvdW5kLCB0aGlzIG11c3QgbWVhbiB0aGF0CisJICogdGhlcmUncyBhbiBvdmVybGFwIGJldHdlZW4gdGhlIGZpbGVzeXN0ZW0gdGFibGUgYmxvY2tzCisJICogKGJpdG1hcHMgYW5kIGlub2RlIHRhYmxlKSBhbmQgdGhlIGJhZCBibG9jayBsaXN0LgorCSAqLworCWlmICghZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgYmxrKSkgeworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCBibGspOworCQlyZXR1cm4gMDsKKwl9CisJLyoKKwkgKiBUcnkgdG8gZmluZCB0aGUgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gYmxvY2sgd2FzIHVzZWQuLi4KKwkgKi8KKwlmaXJzdF9ibG9jayA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKysgKSB7CisJCXBjdHgtPmdyb3VwID0gaTsKKwkJcGN0eC0+YmxrID0gYmxrOworCQlpZiAoIWV4dDJmc19iZ19oYXNfc3VwZXIoZnMsIGkpKQorCQkJZ290byBza2lwX3N1cGVyOworCQlpZiAoYmxrID09IGZpcnN0X2Jsb2NrKSB7CisJCQlpZiAoaSA9PSAwKSB7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwKKwkJCQkJCVBSXzFfQkFEX1BSSU1BUllfU1VQRVJCTE9DSywKKwkJCQkJCXBjdHgpKSB7CisJCQkJCSpibG9ja19uciA9IDA7CisJCQkJCXJldHVybiBCTE9DS19DSEFOR0VEOworCQkJCX0KKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9CQURfU1VQRVJCTE9DSywgcGN0eCk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoKGJsayA+IGZpcnN0X2Jsb2NrKSAmJgorCQkgICAgKGJsayA8PSBmaXJzdF9ibG9jayArIGZzLT5kZXNjX2Jsb2NrcykpIHsKKwkJCWlmIChpID09IDApIHsKKwkJCQlwY3R4LT5ibGsgPSAqYmxvY2tfbnI7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwKKwkJCVBSXzFfQkFEX1BSSU1BUllfR1JPVVBfREVTQ1JJUFRPUiwgcGN0eCkpIHsKKwkJCQkJKmJsb2NrX25yID0gMDsKKwkJCQkJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7CisJCQkJfQorCQkJCXJldHVybiAwOworCQkJfQorCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JBRF9HUk9VUF9ERVNDUklQVE9SUywgcGN0eCk7CisJCQlyZXR1cm4gMDsKKwkJfQorCXNraXBfc3VwZXI6CisJCWlmIChibGsgPT0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpKSB7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0JCX0JBRF9CTE9DSywgcGN0eCkpIHsKKwkJCQljdHgtPmludmFsaWRfYmxvY2tfYml0bWFwX2ZsYWdbaV0rKzsKKwkJCQljdHgtPmludmFsaWRfYml0bWFwcysrOworCQkJfQorCQkJcmV0dXJuIDA7CisJCX0KKwkJaWYgKGJsayA9PSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSkpIHsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzFfSUJfQkFEX0JMT0NLLCBwY3R4KSkgeworCQkJCWN0eC0+aW52YWxpZF9pbm9kZV9iaXRtYXBfZmxhZ1tpXSsrOworCQkJCWN0eC0+aW52YWxpZF9iaXRtYXBzKys7CisJCQl9CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoKGJsayA+PSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSkgJiYKKwkJICAgIChibGsgPCAoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkgKworCQkJICAgIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwKSkpIHsKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBhcmUgYmFkIGJsb2NrcyBpbiB0aGUgaW5vZGUgdGFibGUsCisJCQkgKiB0aGUgaW5vZGUgc2NhbiBjb2RlIHdpbGwgdHJ5IHRvIGRvCisJCQkgKiBzb21ldGhpbmcgcmVhc29uYWJsZSBhdXRvbWF0aWNhbGx5LgorCQkJICovCisJCQlyZXR1cm4gMDsKKwkJfQorCQlmaXJzdF9ibG9jayArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisJLyoKKwkgKiBJZiB3ZSd2ZSBnb3R0ZW4gdG8gdGhpcyBwb2ludCwgdGhlbiB0aGUgb25seQorCSAqIHBvc3NpYmlsaXR5IGlzIHRoYXQgdGhlIGJhZCBibG9jayBpbm9kZSBtZXRhIGRhdGEKKwkgKiBpcyB1c2luZyBhIGJhZCBibG9jay4KKwkgKi8KKwlpZiAoKGJsayA9PSBwLT5pbm9kZS0+aV9ibG9ja1tFWFQyX0lORF9CTE9DS10pIHx8CisJICAgIChibGsgPT0gcC0+aW5vZGUtPmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSkgfHwKKwkgICAgKGJsayA9PSBwLT5pbm9kZS0+aV9ibG9ja1tFWFQyX1RJTkRfQkxPQ0tdKSkgeworCQlwLT5iYmNoZWNrID0gMTsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9CQklOT0RFX0JBRF9NRVRBQkxPQ0ssIHBjdHgpKSB7CisJCQkqYmxvY2tfbnIgPSAwOworCQkJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7CisJCX0KKwkJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TSUdOQUxfTUFTSykKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJcmV0dXJuIDA7CisJfQorCisJcGN0eC0+Z3JvdXAgPSAtMTsKKworCS8qIFdhcm4gdXNlciB0aGF0IHRoZSBibG9jayB3YXNuJ3QgY2xhaW1lZCAqLworCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9QUk9HRVJSX0NMQUlNRURfQkxPQ0ssIHBjdHgpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG5ld190YWJsZV9ibG9jayhlMmZzY2tfdCBjdHgsIGJsazY0X3QgZmlyc3RfYmxvY2ssIGRncnBfdCBncm91cCwKKwkJCSAgICBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnVtLCBibGs2NF90ICpuZXdfYmxvY2spCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWRncnBfdAkJbGFzdF9ncnA7CisJYmxrNjRfdAkJb2xkX2Jsb2NrID0gKm5ld19ibG9jazsKKwlibGs2NF90CQlsYXN0X2Jsb2NrOworCWRncnBfdAkJZmxleGJnOworCXVuc2lnbmVkCWZsZXhiZ19zaXplOworCWludAkJaSwgaXNfZmxleGJnOworCWNoYXIJCSpidWY7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCXBjdHguZ3JvdXAgPSBncm91cDsKKwlwY3R4LmJsayA9IG9sZF9ibG9jazsKKwlwY3R4LnN0ciA9IG5hbWU7CisKKwkvKgorCSAqIEZvciBmbGV4X2JnIGZpbGVzeXN0ZW1zLCBmaXJzdCB0cnkgdG8gYWxsb2NhdGUgdGhlIG1ldGFkYXRhCisJICogd2l0aGluIHRoZSBmbGV4X2JnLCBhbmQgaWYgdGhhdCBmYWlscyB0aGVuIHRyeSBmaW5kaW5nIHRoZQorCSAqIHNwYWNlIGFueXdoZXJlIGluIHRoZSBmaWxlc3lzdGVtLgorCSAqLworCWlzX2ZsZXhiZyA9IGV4dDJmc19oYXNfZmVhdHVyZV9mbGV4X2JnKGZzLT5zdXBlcik7CisJaWYgKGlzX2ZsZXhiZykgeworCQlmbGV4Ymdfc2l6ZSA9IDEgPDwgZnMtPnN1cGVyLT5zX2xvZ19ncm91cHNfcGVyX2ZsZXg7CisJCWZsZXhiZyA9IGdyb3VwIC8gZmxleGJnX3NpemU7CisJCWZpcnN0X2Jsb2NrID0gZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywKKwkJCQkJCQlmbGV4Ymdfc2l6ZSAqIGZsZXhiZyk7CisJCWxhc3RfZ3JwID0gZ3JvdXAgfCAoZmxleGJnX3NpemUgLSAxKTsKKwkJaWYgKGxhc3RfZ3JwID49IGZzLT5ncm91cF9kZXNjX2NvdW50KQorCQkJbGFzdF9ncnAgPSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIDE7CisJCWxhc3RfYmxvY2sgPSBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jazIoZnMsIGxhc3RfZ3JwKTsKKwl9IGVsc2UKKwkJbGFzdF9ibG9jayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgZ3JvdXApOworCXBjdHguZXJyY29kZSA9IGV4dDJmc19nZXRfZnJlZV9ibG9ja3MyKGZzLCBmaXJzdF9ibG9jaywgbGFzdF9ibG9jaywKKwkJCQkJICAgICAgIG51bSwgY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCSAgICAgICBuZXdfYmxvY2spOworCWlmIChpc19mbGV4YmcgJiYgKHBjdHguZXJyY29kZSA9PSBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUwpKQorCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzMihmcywKKwkJCQlmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaywKKwkJCQlleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciksCisJCQkJbnVtLCBjdHgtPmJsb2NrX2ZvdW5kX21hcCwgbmV3X2Jsb2NrKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gbnVtOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfUkVMT0NfQkxPQ0tfQUxMT0NBVEUsICZwY3R4KTsKKwkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFfUkVMT0NfTUVNT1JZX0FMTE9DQVRFLCAmcGN0eCk7CisJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwlwY3R4LmJsazIgPSAqbmV3X2Jsb2NrOworCWZpeF9wcm9ibGVtKGN0eCwgKG9sZF9ibG9jayA/IFBSXzFfUkVMT0NfRlJPTV9UTyA6CisJCQkgIFBSXzFfUkVMT0NfVE8pLCAmcGN0eCk7CisJcGN0eC5ibGsyID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKKwkJcGN0eC5ibGsgPSBpOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCAoKm5ld19ibG9jaykraSk7CisJCWlmIChvbGRfYmxvY2spIHsKKwkJCXBjdHguZXJyY29kZSA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sCisJCQkJICAgb2xkX2Jsb2NrICsgaSwgMSwgYnVmKTsKKwkJCWlmIChwY3R4LmVycmNvZGUpCisJCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xX1JFTE9DX1JFQURfRVJSLCAmcGN0eCk7CisJCQlwY3R4LmJsayA9ICgqbmV3X2Jsb2NrKSArIGk7CisJCQlwY3R4LmVycmNvZGUgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgcGN0eC5ibGssCisJCQkJCQkJICAgICAgMSwgYnVmKTsKKwkJfSBlbHNlIHsKKwkJCXBjdHguYmxrID0gKCpuZXdfYmxvY2spICsgaTsKKwkJCXBjdHguZXJyY29kZSA9IGV4dDJmc196ZXJvX2Jsb2NrczIoZnMsIHBjdHguYmxrLCAxLAorCQkJCQkJCSAgIE5VTEwsIE5VTEwpOworCQl9CisKKwkJaWYgKHBjdHguZXJyY29kZSkKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMV9SRUxPQ19XUklURV9FUlIsICZwY3R4KTsKKwl9CisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGdldHMgY2FsbGVkIGF0IHRoZSBlbmQgb2YgcGFzcyAxIGlmIGJhZCBibG9ja3MgYXJlCisgKiBkZXRlY3RlZCBpbiB0aGUgc3VwZXJibG9jaywgZ3JvdXAgZGVzY3JpcHRvcnMsIGlub2RlX2JpdG1hcHMsIG9yCisgKiBibG9jayBiaXRtYXBzLiAgQXQgdGhpcyBwb2ludCwgYWxsIG9mIHRoZSBibG9ja3MgaGF2ZSBiZWVuIG1hcHBlZAorICogb3V0LCBzbyB3ZSBjYW4gdHJ5IHRvIGFsbG9jYXRlIG5ldyBibG9jayhzKSB0byByZXBsYWNlIHRoZSBiYWQKKyAqIGJsb2Nrcy4KKyAqLworc3RhdGljIHZvaWQgaGFuZGxlX2ZzX2JhZF9ibG9ja3MoZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlkZ3JwX3QJCWk7CisJYmxrNjRfdAkJZmlyc3RfYmxvY2s7CisJYmxrNjRfdAkJbmV3X2JsazsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWZpcnN0X2Jsb2NrID0gZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywgaSk7CisKKwkJaWYgKGN0eC0+aW52YWxpZF9ibG9ja19iaXRtYXBfZmxhZ1tpXSkgeworCQkJbmV3X2JsayA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKTsKKwkJCW5ld190YWJsZV9ibG9jayhjdHgsIGZpcnN0X2Jsb2NrLCBpLCBfKCJibG9jayBiaXRtYXAiKSwKKwkJCQkJMSwgJm5ld19ibGspOworCQkJZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Nfc2V0KGZzLCBpLCBuZXdfYmxrKTsKKwkJfQorCQlpZiAoY3R4LT5pbnZhbGlkX2lub2RlX2JpdG1hcF9mbGFnW2ldKSB7CisJCQluZXdfYmxrID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpOworCQkJbmV3X3RhYmxlX2Jsb2NrKGN0eCwgZmlyc3RfYmxvY2ssIGksIF8oImlub2RlIGJpdG1hcCIpLAorCQkJCQkxLCAmbmV3X2Jsayk7CisJCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGksIG5ld19ibGspOworCQl9CisJCWlmIChjdHgtPmludmFsaWRfaW5vZGVfdGFibGVfZmxhZ1tpXSkgeworCQkJbmV3X2JsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQkJbmV3X3RhYmxlX2Jsb2NrKGN0eCwgZmlyc3RfYmxvY2ssIGksIF8oImlub2RlIHRhYmxlIiksCisJCQkJCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwLAorCQkJCQkmbmV3X2Jsayk7CisJCQlleHQyZnNfaW5vZGVfdGFibGVfbG9jX3NldChmcywgaSwgbmV3X2Jsayk7CisJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1JFU1RBUlQ7CisJCX0KKwl9CisJY3R4LT5pbnZhbGlkX2JpdG1hcHMgPSAwOworfQorCisvKgorICogVGhpcyByb3V0aW5lIG1hcmtzIGFsbCBibG9ja3Mgd2hpY2ggYXJlIHVzZWQgYnkgdGhlIHN1cGVyYmxvY2ssCisgKiBncm91cCBkZXNjcmlwdG9ycywgaW5vZGUgYml0bWFwcywgYW5kIGJsb2NrIGJpdG1hcHMuCisgKi8KK3N0YXRpYyB2b2lkIG1hcmtfdGFibGVfYmxvY2tzKGUyZnNja190IGN0eCkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJYmxrNjRfdAliOworCWRncnBfdAlpOworCXVuc2lnbmVkIGludAlqOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlwY3R4Lmdyb3VwID0gaTsKKworCQlleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGZzLCBpLCBjdHgtPmJsb2NrX2ZvdW5kX21hcCk7CisJCWV4dDJmc19yZXNlcnZlX3N1cGVyX2FuZF9iZ2QoZnMsIGksIGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwKTsKKworCQkvKgorCQkgKiBNYXJrIHRoZSBibG9ja3MgdXNlZCBmb3IgdGhlIGlub2RlIHRhYmxlCisJCSAqLworCQlpZiAoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkpIHsKKwkJCWZvciAoaiA9IDAsIGIgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKTsKKwkJCSAgICAgaiA8IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCQkJICAgICBqKyssIGIrKykgeworCQkJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCQkJCSAgICAgYikpIHsKKwkJCQkJcGN0eC5ibGsgPSBiOworCQkJCQlpZiAoIWN0eC0+aW52YWxpZF9pbm9kZV90YWJsZV9mbGFnW2ldICYmCisJCQkJCSAgICBmaXhfcHJvYmxlbShjdHgsCisJCQkJCQlQUl8xX0lUQUJMRV9DT05GTElDVCwgJnBjdHgpKSB7CisJCQkJCQljdHgtPmludmFsaWRfaW5vZGVfdGFibGVfZmxhZ1tpXSsrOworCQkJCQkJY3R4LT5pbnZhbGlkX2JpdG1hcHMrKzsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJICAgIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoCisJCQkJCQljdHgtPmJsb2NrX2ZvdW5kX21hcCwgYik7CisJCQkJICAgIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoCisJCQkJCQljdHgtPmJsb2NrX21ldGFkYXRhX21hcCwgYik7CisJCQkgICAgCX0KKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIE1hcmsgYmxvY2sgdXNlZCBmb3IgdGhlIGJsb2NrIGJpdG1hcAorCQkgKi8KKwkJaWYgKGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSkgeworCQkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJICAgICBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpKSB7CisJCQkJcGN0eC5ibGsgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSk7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMV9CQl9DT05GTElDVCwgJnBjdHgpKSB7CisJCQkJCWN0eC0+aW52YWxpZF9ibG9ja19iaXRtYXBfZmxhZ1tpXSsrOworCQkJCQljdHgtPmludmFsaWRfYml0bWFwcysrOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkgICAgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQkgICAgIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSk7CisJCQkgICAgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX21ldGFkYXRhX21hcCwKKwkJCQkgICAgIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSk7CisJCQl9CisJCX0KKwkJLyoKKwkJICogTWFyayBibG9jayB1c2VkIGZvciB0aGUgaW5vZGUgYml0bWFwCisJCSAqLworCQlpZiAoZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpKSB7CisJCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQkgICAgIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSkpIHsKKwkJCQlwY3R4LmJsayA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKTsKKwkJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xX0lCX0NPTkZMSUNULCAmcGN0eCkpIHsKKwkJCQkJY3R4LT5pbnZhbGlkX2lub2RlX2JpdG1hcF9mbGFnW2ldKys7CisJCQkJCWN0eC0+aW52YWxpZF9iaXRtYXBzKys7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCSAgICBleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwLAorCQkJCSAgICAgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpKTsKKwkJCSAgICBleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCSAgICAgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpKTsKKwkJCX0KKwkJfQorCX0KK30KKworLyoKKyAqIFRoZXMgc3Vicm91dGluZXMgc2hvcnQgY2lyY3VpdHMgZXh0MmZzX2dldF9ibG9ja3MgYW5kCisgKiBleHQyZnNfY2hlY2tfZGlyZWN0b3J5OyB3ZSB1c2UgdGhlbSBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIGlub2RlCisgKiBzdHJ1Y3R1cmUsIHNvIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gbGV0dGluZyB0aGUgZXh0MmZzIGxpYnJhcnkgcmVhZAorICogdGhlIGlub2RlIGFnYWluLgorICovCitzdGF0aWMgZXJyY29kZV90IHBhc3MxX2dldF9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgYmxrX3QgKmJsb2NrcykKK3sKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisJaW50CWk7CisKKwlpZiAoKGlubyAhPSBjdHgtPnN0YXNoZWRfaW5vKSB8fCAhY3R4LT5zdGFzaGVkX2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9DQUxMQkFDS19OT1RIQU5ETEVEOworCisJZm9yIChpPTA7IGkgPCBFWFQyX05fQkxPQ0tTOyBpKyspCisJCWJsb2Nrc1tpXSA9IGN0eC0+c3Rhc2hlZF9pbm9kZS0+aV9ibG9ja1tpXTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBwYXNzMV9yZWFkX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisKKwlpZiAoKGlubyAhPSBjdHgtPnN0YXNoZWRfaW5vKSB8fCAhY3R4LT5zdGFzaGVkX2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9DQUxMQkFDS19OT1RIQU5ETEVEOworCSppbm9kZSA9ICpjdHgtPnN0YXNoZWRfaW5vZGU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcGFzczFfd3JpdGVfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisKKwlpZiAoKGlubyA9PSBjdHgtPnN0YXNoZWRfaW5vKSAmJiBjdHgtPnN0YXNoZWRfaW5vZGUgJiYKKwkJKGlub2RlICE9IGN0eC0+c3Rhc2hlZF9pbm9kZSkpCisJCSpjdHgtPnN0YXNoZWRfaW5vZGUgPSAqaW5vZGU7CisJcmV0dXJuIEVYVDJfRVRfQ0FMTEJBQ0tfTk9USEFORExFRDsKK30KKworc3RhdGljIGVycmNvZGVfdCBwYXNzMV9jaGVja19kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKQoreworCWUyZnNja190IGN0eCA9IChlMmZzY2tfdCkgZnMtPnByaXZfZGF0YTsKKworCWlmICgoaW5vICE9IGN0eC0+c3Rhc2hlZF9pbm8pIHx8ICFjdHgtPnN0YXNoZWRfaW5vZGUpCisJCXJldHVybiBFWFQyX0VUX0NBTExCQUNLX05PVEhBTkRMRUQ7CisKKwlpZiAoIUxJTlVYX1NfSVNESVIoY3R4LT5zdGFzaGVkX2lub2RlLT5pX21vZGUpKQorCQlyZXR1cm4gRVhUMl9FVF9OT19ESVJFQ1RPUlk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2dldF9hbGxvY19ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLAorCQkJCQlibGs2NF90ICpyZXQpCit7CisJZTJmc2NrX3QgY3R4ID0gKGUyZnNja190KSBmcy0+cHJpdl9kYXRhOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJbmV3X2Jsb2NrOworCisJaWYgKGN0eC0+YmxvY2tfZm91bmRfbWFwKSB7CisJCXJldHZhbCA9IGV4dDJmc19uZXdfYmxvY2syKGZzLCBnb2FsLCBjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQkJICAgJm5ld19ibG9jayk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlpZiAoZnMtPmJsb2NrX21hcCkgeworCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBuZXdfYmxvY2spOworCQkJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCFmcy0+YmxvY2tfbWFwKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9ibG9ja19iaXRtYXAoZnMpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisKKwkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGdvYWwsIGZzLT5ibG9ja19tYXAsICZuZXdfYmxvY2spOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwkqcmV0ID0gbmV3X2Jsb2NrOworCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX25ld19yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkJICBibGs2NF90IGxlbiwgYmxrNjRfdCAqcGJsaywgYmxrNjRfdCAqcGxlbikKK3sKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmIChjdHgtPmJsb2NrX2ZvdW5kX21hcCkKKwkJcmV0dXJuIGV4dDJmc19uZXdfcmFuZ2UoZnMsIGZsYWdzLCBnb2FsLCBsZW4sCisJCQkJCWN0eC0+YmxvY2tfZm91bmRfbWFwLCBwYmxrLCBwbGVuKTsKKworCWlmICghZnMtPmJsb2NrX21hcCkgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9ibG9ja19iaXRtYXAoZnMpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR1cm4gZXh0MmZzX25ld19yYW5nZShmcywgZmxhZ3MsIGdvYWwsIGxlbiwgZnMtPmJsb2NrX21hcCwKKwkJCQlwYmxrLCBwbGVuKTsKK30KKworc3RhdGljIHZvaWQgZTJmc2NrX2Jsb2NrX2FsbG9jX3N0YXRzKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywgaW50IGludXNlKQoreworCWUyZnNja190IGN0eCA9IChlMmZzY2tfdCkgZnMtPnByaXZfZGF0YTsKKworCS8qIE5ldmVyIGZyZWUgYSBjcml0aWNhbCBtZXRhZGF0YSBibG9jayAqLworCWlmIChjdHgtPmJsb2NrX2ZvdW5kX21hcCAmJgorCSAgICBjdHgtPmJsb2NrX21ldGFkYXRhX21hcCAmJgorCSAgICBpbnVzZSA8IDAgJiYKKwkgICAgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX21ldGFkYXRhX21hcCwgYmxrKSkKKwkJcmV0dXJuOworCisJaWYgKGN0eC0+YmxvY2tfZm91bmRfbWFwKSB7CisJCWlmIChpbnVzZSA+IDApCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCBibGspOworCQllbHNlCisJCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsIGJsayk7CisJfQorfQorCitzdGF0aWMgdm9pZCBlMmZzY2tfYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2UoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLAorCQkJCQkgICBibGtfdCBudW0sIGludCBpbnVzZSkKK3sKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisKKwkvKiBOZXZlciBmcmVlIGEgY3JpdGljYWwgbWV0YWRhdGEgYmxvY2sgKi8KKwlpZiAoY3R4LT5ibG9ja19mb3VuZF9tYXAgJiYKKwkgICAgY3R4LT5ibG9ja19tZXRhZGF0YV9tYXAgJiYKKwkgICAgaW51c2UgPCAwICYmCisJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoY3R4LT5ibG9ja19tZXRhZGF0YV9tYXAsIGJsaywgbnVtKSkKKwkJcmV0dXJuOworCisJaWYgKGN0eC0+YmxvY2tfZm91bmRfbWFwKSB7CisJCWlmIChpbnVzZSA+IDApCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCQkJCWJsaywgbnVtKTsKKwkJZWxzZQorCQkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCQkJCWJsaywgbnVtKTsKKwl9Cit9CisKK3ZvaWQgZTJmc2NrX3VzZV9pbm9kZV9zaG9ydGN1dHMoZTJmc2NrX3QgY3R4LCBpbnQgdXNlX3Nob3J0Y3V0cykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisKKwlpZiAodXNlX3Nob3J0Y3V0cykgeworCQlmcy0+Z2V0X2Jsb2NrcyA9IHBhc3MxX2dldF9ibG9ja3M7CisJCWZzLT5jaGVja19kaXJlY3RvcnkgPSBwYXNzMV9jaGVja19kaXJlY3Rvcnk7CisJCWZzLT5yZWFkX2lub2RlID0gcGFzczFfcmVhZF9pbm9kZTsKKwkJZnMtPndyaXRlX2lub2RlID0gcGFzczFfd3JpdGVfaW5vZGU7CisJCWN0eC0+c3Rhc2hlZF9pbm8gPSAwOworCX0gZWxzZSB7CisJCWZzLT5nZXRfYmxvY2tzID0gMDsKKwkJZnMtPmNoZWNrX2RpcmVjdG9yeSA9IDA7CisJCWZzLT5yZWFkX2lub2RlID0gMDsKKwkJZnMtPndyaXRlX2lub2RlID0gMDsKKwl9Cit9CisKK3ZvaWQgZTJmc2NrX2ludGVyY2VwdF9ibG9ja19hbGxvY2F0aW9ucyhlMmZzY2tfdCBjdHgpCit7CisJZXh0MmZzX3NldF9hbGxvY19ibG9ja19jYWxsYmFjayhjdHgtPmZzLCBlMmZzY2tfZ2V0X2FsbG9jX2Jsb2NrLCAwKTsKKwlleHQyZnNfc2V0X2Jsb2NrX2FsbG9jX3N0YXRzX2NhbGxiYWNrKGN0eC0+ZnMsCisJCQkJCQllMmZzY2tfYmxvY2tfYWxsb2Nfc3RhdHMsIDApOworCWV4dDJmc19zZXRfbmV3X3JhbmdlX2NhbGxiYWNrKGN0eC0+ZnMsIGUyZnNja19uZXdfcmFuZ2UsIE5VTEwpOworCWV4dDJmc19zZXRfYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2VfY2FsbGJhY2soY3R4LT5mcywKKwkJCQkJZTJmc2NrX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlLCBOVUxMKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcGFzczFiLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL3Bhc3MxYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MGYwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3Bhc3MxYi5jCkBAIC0wLDAgKzEsMTA0MSBAQAorLyoKKyAqIHBhc3MxYi5jIC0tLSBQYXNzICMxYiBvZiBlMmZzY2sKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcGFzczFCLCBwYXNzMUMsIGFuZCBwYXNzMUQgb2YgZTJmc2NrLiAgVGhleSBhcmUKKyAqIG9ubHkgaW52b2tlZCBpZiBwYXNzIDEgZGlzY292ZXJlZCBibG9ja3Mgd2hpY2ggYXJlIGluIHVzZSBieSBtb3JlCisgKiB0aGFuIG9uZSBpbm9kZS4KKyAqCisgKiBQYXNzMUIgc2NhbnMgdGhlIGRhdGEgYmxvY2tzIG9mIGFsbCB0aGUgaW5vZGVzIGFnYWluLCBnZW5lcmF0aW5nIGEKKyAqIGNvbXBsZXRlIGxpc3Qgb2YgZHVwbGljYXRlIGJsb2NrcyBhbmQgd2hpY2ggaW5vZGVzIGhhdmUgY2xhaW1lZAorICogdGhlbS4KKyAqCisgKiBQYXNzMUMgZG9lcyBhIHRyZWUtdHJhdmVyc2FsIG9mIHRoZSBmaWxlc3lzdGVtLCB0byBkZXRlcm1pbmUgdGhlCisgKiBwYXJlbnQgZGlyZWN0b3JpZXMgb2YgdGhlc2UgaW5vZGVzLiAgVGhpcyBzdGVwIGlzIG5lY2Vzc2FyeSBzbyB0aGF0CisgKiBlMmZzY2sgY2FuIHByaW50IG91dCB0aGUgcGF0aG5hbWVzIG9mIGFmZmVjdGVkIGlub2Rlcy4KKyAqCisgKiBQYXNzMUQgaXMgYSByZWNvbmNpbGlhdGlvbiBwYXNzLiAgRm9yIGVhY2ggaW5vZGUgd2l0aCBkdXBsaWNhdGUKKyAqIGJsb2NrcywgdGhlIHVzZXIgaXMgcHJvbXB0ZWQgaWYgcy9oZSB3b3VsZCBsaWtlIHRvIGNsb25lIHRoZSBmaWxlCisgKiAoc28gdGhhdCB0aGUgZmlsZSBnZXRzIGEgZnJlc2ggY29weSBvZiB0aGUgZHVwbGljYXRlZCBibG9ja3MpIG9yCisgKiBzaW1wbHkgdG8gZGVsZXRlIHRoZSBmaWxlLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9JTlRUWVBFU19ICisjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfSU5UUFRSX1QKK3R5cGVkZWYgbG9uZyBpbnRwdHJfdDsKKyNlbmRpZgorCisvKiBOZWVkZWQgZm9yIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mKGludCkgIT0gc2l6ZW9mKHZvaWQgKikgKi8KKyNkZWZpbmUgSU5UX1RPX1ZPSURQVFIodmFsKSAgKCh2b2lkICopKGludHB0cl90KSh2YWwpKQorI2RlZmluZSBWT0lEUFRSX1RPX0lOVChwdHIpICAoKGludCkoaW50cHRyX3QpKHB0cikpCisKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisjaW5jbHVkZSAiZTJmc2NrLmgiCisKKyNpbmNsdWRlICJwcm9ibGVtLmgiCisjaW5jbHVkZSAic3VwcG9ydC9kaWN0LmgiCisKKy8qIERlZmluZSBhbiBleHRlbnNpb24gdG8gdGhlIGV4dDIgbGlicmFyeSdzIGJsb2NrIGNvdW50IGluZm9ybWF0aW9uICovCisjZGVmaW5lIEJMT0NLX0NPVU5UX0VYVEFUVFIJKC01KQorCitzdHJ1Y3QgY2x1c3Rlcl9lbCB7CisJYmxrNjRfdAljbHVzdGVyOworCXN0cnVjdCBjbHVzdGVyX2VsICpuZXh0OworfTsKKworc3RydWN0IGlub2RlX2VsIHsKKwlleHQyX2lub190CWlub2RlOworCXN0cnVjdCBpbm9kZV9lbCAqbmV4dDsKK307CisKK3N0cnVjdCBkdXBfY2x1c3RlciB7CisJaW50CQludW1fYmFkOworCXN0cnVjdCBpbm9kZV9lbCAqaW5vZGVfbGlzdDsKK307CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIGlub2RlIHdoaWNoCisgKiBpcyBzaGFyaW5nIGJsb2NrcyB3aXRoIG90aGVyIGlub2Rlcy4gIFRoaXMgaW5mb3JtYXRpb24gaXMgY29sbGVjdGVkCisgKiB0byBkaXNwbGF5IHRvIHRoZSB1c2VyLCBzbyB0aGF0IHRoZSB1c2VyIGtub3dzIHdoYXQgZmlsZXMgaGUgb3Igc2hlCisgKiBpcyBkZWFsaW5nIHdpdGgsIHdoZW4gdHJ5aW5nIHRvIGRlY2lkZSBob3cgdG8gcmVzb2x2ZSB0aGUgY29uZmxpY3QKKyAqIG9mIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLgorICovCitzdHJ1Y3QgZHVwX2lub2RlIHsKKwlleHQyX2lub190CQlkaXI7CisJaW50CQkJbnVtX2R1cGJsb2NrczsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZQlpbm9kZTsKKwlzdHJ1Y3QgY2x1c3Rlcl9lbAkqY2x1c3Rlcl9saXN0OworfTsKKworc3RhdGljIGludCBwcm9jZXNzX3Bhc3MxYl9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdAkqYmxvY2tuciwKKwkJCQllMl9ibGtjbnRfdCBibG9ja2NudCwgYmxrNjRfdCByZWZfYmxrLAorCQkJCWludCByZWZfb2Zmc2V0LCB2b2lkICpwcml2X2RhdGEpOworc3RhdGljIHZvaWQgZGVsZXRlX2ZpbGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCXN0cnVjdCBkdXBfaW5vZGUgKmRwLCBjaGFyICpibG9ja19idWYpOworc3RhdGljIGVycmNvZGVfdCBjbG9uZV9maWxlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgc3RydWN0IGR1cF9pbm9kZSAqZHAsIGNoYXIqIGJsb2NrX2J1Zik7CitzdGF0aWMgaW50IGNoZWNrX2lmX2ZzX2Jsb2NrKGUyZnNja190IGN0eCwgYmxrNjRfdCB0ZXN0X2Jsb2NrKTsKK3N0YXRpYyBpbnQgY2hlY2tfaWZfZnNfY2x1c3RlcihlMmZzY2tfdCBjdHgsIGJsazY0X3QgY2x1c3Rlcik7CisKK3N0YXRpYyB2b2lkIHBhc3MxYihlMmZzY2tfdCBjdHgsIGNoYXIgKmJsb2NrX2J1Zik7CitzdGF0aWMgdm9pZCBwYXNzMWMoZTJmc2NrX3QgY3R4LCBjaGFyICpibG9ja19idWYpOworc3RhdGljIHZvaWQgcGFzczFkKGUyZnNja190IGN0eCwgY2hhciAqYmxvY2tfYnVmKTsKKworc3RhdGljIGludCBkdXBfaW5vZGVfY291bnQgPSAwOworc3RhdGljIGludCBkdXBfaW5vZGVfZm91bmRkaXIgPSAwOworCitzdGF0aWMgZGljdF90IGNsc3RyX2RpY3QsIGlub19kaWN0OworCitzdGF0aWMgZXh0MmZzX2lub2RlX2JpdG1hcCBpbm9kZV9kdXBfbWFwOworCitzdGF0aWMgaW50IGRpY3RfaW50X2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWludHB0cl90CWlhLCBpYjsKKworCWlhID0gKGludHB0cl90KWE7CisJaWIgPSAoaW50cHRyX3QpYjsKKworCXJldHVybiAoaWEtaWIpOworfQorCisvKgorICogQWRkIGEgZHVwbGljYXRlIGJsb2NrIHJlY29yZAorICovCitzdGF0aWMgdm9pZCBhZGRfZHVwZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLCBibGs2NF90IGNsdXN0ZXIsCisJCSAgICAgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlKQoreworCWRub2RlX3QJKm47CisJc3RydWN0IGR1cF9jbHVzdGVyCSpkYjsKKwlzdHJ1Y3QgZHVwX2lub2RlCSpkaTsKKwlzdHJ1Y3QgY2x1c3Rlcl9lbAkqY2x1c3Rlcl9lbDsKKwlzdHJ1Y3QgaW5vZGVfZWwgCSppbm9fZWw7CisKKwluID0gZGljdF9sb29rdXAoJmNsc3RyX2RpY3QsIElOVF9UT19WT0lEUFRSKGNsdXN0ZXIpKTsKKwlpZiAobikKKwkJZGIgPSAoc3RydWN0IGR1cF9jbHVzdGVyICopIGRub2RlX2dldChuKTsKKwllbHNlIHsKKwkJZGIgPSAoc3RydWN0IGR1cF9jbHVzdGVyICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LAorCQkJc2l6ZW9mKHN0cnVjdCBkdXBfY2x1c3RlciksICJkdXBsaWNhdGUgY2x1c3RlciBoZWFkZXIiKTsKKwkJZGItPm51bV9iYWQgPSAwOworCQlkYi0+aW5vZGVfbGlzdCA9IDA7CisJCWRpY3RfYWxsb2NfaW5zZXJ0KCZjbHN0cl9kaWN0LCBJTlRfVE9fVk9JRFBUUihjbHVzdGVyKSwgZGIpOworCX0KKwlpbm9fZWwgPSAoc3RydWN0IGlub2RlX2VsICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LAorCQkJIHNpemVvZihzdHJ1Y3QgaW5vZGVfZWwpLCAiaW5vZGUgZWxlbWVudCIpOworCWlub19lbC0+aW5vZGUgPSBpbm87CisJaW5vX2VsLT5uZXh0ID0gZGItPmlub2RlX2xpc3Q7CisJZGItPmlub2RlX2xpc3QgPSBpbm9fZWw7CisJZGItPm51bV9iYWQrKzsKKworCW4gPSBkaWN0X2xvb2t1cCgmaW5vX2RpY3QsIElOVF9UT19WT0lEUFRSKGlubykpOworCWlmIChuKQorCQlkaSA9IChzdHJ1Y3QgZHVwX2lub2RlICopIGRub2RlX2dldChuKTsKKwllbHNlIHsKKwkJZGkgPSAoc3RydWN0IGR1cF9pbm9kZSAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkJCSBzaXplb2Yoc3RydWN0IGR1cF9pbm9kZSksICJkdXBsaWNhdGUgaW5vZGUgaGVhZGVyIik7CisJCWlmIChpbm8gPT0gRVhUMl9ST09UX0lOTykgeworCQkJZGktPmRpciA9IEVYVDJfUk9PVF9JTk87CisJCQlkdXBfaW5vZGVfZm91bmRkaXIrKzsKKwkJfSBlbHNlCisJCQlkaS0+ZGlyID0gMDsKKworCQlkaS0+bnVtX2R1cGJsb2NrcyA9IDA7CisJCWRpLT5jbHVzdGVyX2xpc3QgPSAwOworCQlkaS0+aW5vZGUgPSAqaW5vZGU7CisJCWRpY3RfYWxsb2NfaW5zZXJ0KCZpbm9fZGljdCwgSU5UX1RPX1ZPSURQVFIoaW5vKSwgZGkpOworCX0KKwljbHVzdGVyX2VsID0gKHN0cnVjdCBjbHVzdGVyX2VsICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LAorCQkJIHNpemVvZihzdHJ1Y3QgY2x1c3Rlcl9lbCksICJjbHVzdGVyIGVsZW1lbnQiKTsKKwljbHVzdGVyX2VsLT5jbHVzdGVyID0gY2x1c3RlcjsKKwljbHVzdGVyX2VsLT5uZXh0ID0gZGktPmNsdXN0ZXJfbGlzdDsKKwlkaS0+Y2x1c3Rlcl9saXN0ID0gY2x1c3Rlcl9lbDsKKwlkaS0+bnVtX2R1cGJsb2NrcysrOworfQorCisvKgorICogRnJlZSBhIGR1cGxpY2F0ZSBpbm9kZSByZWNvcmQKKyAqLworc3RhdGljIHZvaWQgaW5vZGVfZG5vZGVfZnJlZShkbm9kZV90ICpub2RlLAorCQkJICAgICB2b2lkICpjb250ZXh0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlzdHJ1Y3QgZHVwX2lub2RlCSpkaTsKKwlzdHJ1Y3QgY2x1c3Rlcl9lbAkJKnAsICpuZXh0OworCisJZGkgPSAoc3RydWN0IGR1cF9pbm9kZSAqKSBkbm9kZV9nZXQobm9kZSk7CisJZm9yIChwID0gZGktPmNsdXN0ZXJfbGlzdDsgcDsgcCA9IG5leHQpIHsKKwkJbmV4dCA9IHAtPm5leHQ7CisJCWZyZWUocCk7CisJfQorCWZyZWUoZGkpOworCWZyZWUobm9kZSk7Cit9CisKKy8qCisgKiBGcmVlIGEgZHVwbGljYXRlIGNsdXN0ZXIgcmVjb3JkCisgKi8KK3N0YXRpYyB2b2lkIGNsdXN0ZXJfZG5vZGVfZnJlZShkbm9kZV90ICpub2RlLAorCQkJICAgICAgIHZvaWQgKmNvbnRleHQgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCXN0cnVjdCBkdXBfY2x1c3RlcgkqZGM7CisJc3RydWN0IGlub2RlX2VsCQkqcCwgKm5leHQ7CisKKwlkYyA9IChzdHJ1Y3QgZHVwX2NsdXN0ZXIgKikgZG5vZGVfZ2V0KG5vZGUpOworCWZvciAocCA9IGRjLT5pbm9kZV9saXN0OyBwOyBwID0gbmV4dCkgeworCQluZXh0ID0gcC0+bmV4dDsKKwkJZnJlZShwKTsKKwl9CisJZnJlZShkYyk7CisJZnJlZShub2RlKTsKK30KKworCisvKgorICogTWFpbiBwcm9jZWR1cmUgZm9yIGhhbmRsaW5nIGR1cGxpY2F0ZSBibG9ja3MKKyAqLwordm9pZCBlMmZzY2tfcGFzczFfZHVwYmxvY2tzKGUyZnNja190IGN0eCwgY2hhciAqYmxvY2tfYnVmKQoreworCWV4dDJfZmlsc3lzIAkJZnMgPSBjdHgtPmZzOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2s7CisjZW5kaWYKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLAorCQkJXygibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiKSwKKwkJCUVYVDJGU19CTUFQNjRfUkJUUkVFLCAiaW5vZGVfZHVwX21hcCIsCisJCQkmaW5vZGVfZHVwX21hcCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFCX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKworCWRpY3RfaW5pdCgmaW5vX2RpY3QsIERJQ1RDT1VOVF9UX01BWCwgZGljdF9pbnRfY21wKTsKKwlkaWN0X2luaXQoJmNsc3RyX2RpY3QsIERJQ1RDT1VOVF9UX01BWCwgZGljdF9pbnRfY21wKTsKKwlkaWN0X3NldF9hbGxvY2F0b3IoJmlub19kaWN0LCBOVUxMLCBpbm9kZV9kbm9kZV9mcmVlLCBOVUxMKTsKKwlkaWN0X3NldF9hbGxvY2F0b3IoJmNsc3RyX2RpY3QsIE5VTEwsIGNsdXN0ZXJfZG5vZGVfZnJlZSwgTlVMTCk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssIGN0eC0+ZnMtPmlvKTsKKwlwYXNzMWIoY3R4LCBibG9ja19idWYpOworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgIlBhc3MgMWIiLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssIGN0eC0+ZnMtPmlvKTsKKwlwYXNzMWMoY3R4LCBibG9ja19idWYpOworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgIlBhc3MgMWMiLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssIGN0eC0+ZnMtPmlvKTsKKwlwYXNzMWQoY3R4LCBibG9ja19idWYpOworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgIlBhc3MgMWQiLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisKKwkvKgorCSAqIFRpbWUgdG8gZnJlZSBhbGwgb2YgdGhlIGFjY3VtdWxhdGVkIGRhdGEgc3RydWN0dXJlcyB0aGF0IHdlCisJICogZG9uJ3QgbmVlZCBhbnltb3JlLgorCSAqLworCWRpY3RfZnJlZV9ub2RlcygmaW5vX2RpY3QpOworCWRpY3RfZnJlZV9ub2RlcygmY2xzdHJfZGljdCk7CisJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGlub2RlX2R1cF9tYXApOworfQorCisvKgorICogU2NhbiB0aGUgaW5vZGVzIGxvb2tpbmcgZm9yIGlub2RlcyB0aGF0IGNvbnRhaW4gZHVwbGljYXRlIGJsb2Nrcy4KKyAqLworc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHsKKwllMmZzY2tfdAljdHg7CisJZXh0Ml9pbm9fdAlpbm87CisJaW50CQlkdXBfYmxvY2tzOworCWJsazY0X3QJCWN1cl9jbHVzdGVyLCBwaHlzX2NsdXN0ZXI7CisJYmxrNjRfdAkJbGFzdF9ibGs7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHg7Cit9OworCitzdGF0aWMgdm9pZCBwYXNzMWIoZTJmc2NrX3QgY3R4LCBjaGFyICpibG9ja19idWYpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWV4dDJfaW5vX3QgaW5vID0gMDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZTsKKwlleHQyX2lub2RlX3NjYW4Jc2NhbjsKKwlzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgcGI7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4OworCXByb2JsZW1fdCBvcDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xQl9QQVNTX0hFQURFUiwgJnBjdHgpOworCXBjdHguZXJyY29kZSA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIGN0eC0+aW5vZGVfYnVmZmVyX2Jsb2NrcywKKwkJCQkJICAgICAgJnNjYW4pOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xQl9JU0NBTl9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCWN0eC0+c3Rhc2hlZF9pbm9kZSA9IEVYVDJfSU5PREUoJmlub2RlKTsKKwlwYi5jdHggPSBjdHg7CisJcGIucGN0eCA9ICZwY3R4OworCXBjdHguc3RyID0gInBhc3MxYiI7CisJd2hpbGUgKDEpIHsKKwkJaWYgKGlubyAlIChmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAqIDQpID09IDEpIHsKKwkJCWlmIChlMmZzY2tfbW1wX3VwZGF0ZShmcykpCisJCQkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwkJfQorCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbChzY2FuLCAmaW5vLAorCQkJCUVYVDJfSU5PREUoJmlub2RlKSwgc2l6ZW9mKGlub2RlKSk7CisJCWlmIChwY3R4LmVycmNvZGUgPT0gRVhUMl9FVF9CQURfQkxPQ0tfSU5fSU5PREVfVEFCTEUpCisJCQljb250aW51ZTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJcGN0eC5pbm8gPSBpbm87CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFCX0lTQ0FOX0VSUk9SLCAmcGN0eCk7CisJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQkJcmV0dXJuOworCQl9CisJCWlmICghaW5vKQorCQkJYnJlYWs7CisJCXBjdHguaW5vID0gY3R4LT5zdGFzaGVkX2lubyA9IGlubzsKKwkJaWYgKChpbm8gIT0gRVhUMl9CQURfSU5PKSAmJgorCQkgICAgIWV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV91c2VkX21hcCwgaW5vKSkKKwkJCWNvbnRpbnVlOworCisJCXBiLmlubyA9IGlubzsKKwkJcGIuZHVwX2Jsb2NrcyA9IDA7CisJCXBiLmlub2RlID0gJmlub2RlOworCQlwYi5jdXJfY2x1c3RlciA9IH4wOworCQlwYi5waHlzX2NsdXN0ZXIgPSB+MDsKKwkJcGIubGFzdF9ibGsgPSAwOworCQlwYi5wY3R4LT5ibGsgPSBwYi5wY3R4LT5ibGsyID0gMDsKKworCQlpZiAoZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGZzLCBFWFQyX0lOT0RFKCZpbm9kZSkpIHx8CisJCSAgICAoaW5vID09IEVYVDJfQkFEX0lOTykpCisJCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywKKwkJCQkJICAgICBCTE9DS19GTEFHX1JFQURfT05MWSwgYmxvY2tfYnVmLAorCQkJCQkgICAgIHByb2Nlc3NfcGFzczFiX2Jsb2NrLCAmcGIpOworCQkvKiBJZiB0aGUgZmVhdHVyZSBpcyBub3Qgc2V0LCBhdHRycyB3aWxsIGJlIGNsZWFyZWQgbGF0ZXIgYW55d2F5ICovCisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfeGF0dHIoZnMtPnN1cGVyKSAmJgorCQkgICAgZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCBFWFQyX0lOT0RFKCZpbm9kZSkpKSB7CisJCQlibGs2NF90IGJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgRVhUMl9JTk9ERSgmaW5vZGUpKTsKKwkJCXByb2Nlc3NfcGFzczFiX2Jsb2NrKGZzLCAmYmxrLAorCQkJCQkgICAgIEJMT0NLX0NPVU5UX0VYVEFUVFIsIDAsIDAsICZwYik7CisJCQlleHQyZnNfZmlsZV9hY2xfYmxvY2tfc2V0KGZzLCBFWFQyX0lOT0RFKCZpbm9kZSksIGJsayk7CisJCX0KKwkJaWYgKHBiLmR1cF9ibG9ja3MpIHsKKwkJCWlmIChpbm8gIT0gRVhUMl9CQURfSU5PKSB7CisJCQkJb3AgPSBwY3R4LmJsayA9PSBwY3R4LmJsazIgPworCQkJCQlQUl8xQl9EVVBfQkxPQ0sgOiBQUl8xQl9EVVBfUkFOR0U7CisJCQkJZml4X3Byb2JsZW0oY3R4LCBvcCwgcGIucGN0eCk7CisJCQl9CisJCQllbmRfcHJvYmxlbV9sYXRjaChjdHgsIFBSX0xBVENIX0RCTE9DSyk7CisJCQlpZiAoaW5vID49IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSB8fAorCQkJICAgIGlubyA9PSBFWFQyX1JPT1RfSU5PKQorCQkJCWR1cF9pbm9kZV9jb3VudCsrOworCQl9CisJCWlmIChwY3R4LmVycmNvZGUpCisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFCX0JMT0NLX0lURVJBVEUsICZwY3R4KTsKKwl9CisJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJZTJmc2NrX3VzZV9pbm9kZV9zaG9ydGN1dHMoY3R4LCAwKTsKK30KKworc3RhdGljIGludCBwcm9jZXNzX3Bhc3MxYl9ibG9jayhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJYmxrNjRfdAkqYmxvY2tfbnIsCisJCQkJZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJYmxrNjRfdCByZWZfYmxrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQlpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqcDsKKwllMmZzY2tfdCBjdHg7CisJYmxrNjRfdAlsYywgcGM7CisJcHJvYmxlbV90IG9wOworCisJaWYgKCpibG9ja19uciA9PSAwKQorCQlyZXR1cm4gMDsKKwlwID0gKHN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJY3R4ID0gcC0+Y3R4OworCWxjID0gRVhUMkZTX0IyQyhmcywgYmxvY2tjbnQpOworCXBjID0gRVhUMkZTX0IyQyhmcywgKmJsb2NrX25yKTsKKworCWlmICghZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2R1cF9tYXAsICpibG9ja19ucikpCisJCWdvdG8gZmluaXNoOworCisJLyogT0ssIHRoaXMgaXMgYSBkdXBsaWNhdGUgYmxvY2sgKi8KKwlpZiAocC0+aW5vICE9IEVYVDJfQkFEX0lOTykgeworCQlpZiAocC0+bGFzdF9ibGsgKyAxICE9ICpibG9ja19ucikgeworCQkJaWYgKHAtPmxhc3RfYmxrKSB7CisJCQkJb3AgPSBwLT5wY3R4LT5ibGsgPT0gcC0+cGN0eC0+YmxrMiA/CisJCQkJCQlQUl8xQl9EVVBfQkxPQ0sgOgorCQkJCQkJUFJfMUJfRFVQX1JBTkdFOworCQkJCWZpeF9wcm9ibGVtKGN0eCwgb3AsIHAtPnBjdHgpOworCQkJfQorCQkJcC0+cGN0eC0+YmxrID0gKmJsb2NrX25yOworCQl9CisJCXAtPnBjdHgtPmJsazIgPSAqYmxvY2tfbnI7CisJCXAtPmxhc3RfYmxrID0gKmJsb2NrX25yOworCX0KKwlwLT5kdXBfYmxvY2tzKys7CisJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpbm9kZV9kdXBfbWFwLCBwLT5pbm8pOworCisJLyoKKwkgKiBRdWFsaWZpY2F0aW9ucyBmb3Igc3VibWl0dGluZyBhIGJsb2NrIGZvciBkdXBsaWNhdGUgcHJvY2Vzc2luZzoKKwkgKiBJdCdzIGFuIGV4dGVudC9pbmRpcmVjdCBibG9jayAoYW5kIGhhcyBhIG5lZ2F0aXZlIGxvZ2ljYWwgb2Zmc2V0KTsKKwkgKiB3ZSd2ZSBjcm9zc2VkIGEgbG9naWNhbCBjbHVzdGVyIGJvdW5kYXJ5OyBvciB0aGUgcGh5c2ljYWwgY2x1c3RlcgorCSAqIHN1ZGRlbmx5IGNoYW5nZWQsIHdoaWNoIGluZGljYXRlcyB0aGF0IGJsb2NrcyBpbiBhIGxvZ2ljYWwgY2x1c3RlcgorCSAqIGFyZSBtYXBwZWQgdG8gbXVsdGlwbGUgcGh5c2ljYWwgY2x1c3RlcnMuCisJICovCisJaWYgKGJsb2NrY250IDwgMCB8fCBsYyAhPSBwLT5jdXJfY2x1c3RlciB8fCBwYyAhPSBwLT5waHlzX2NsdXN0ZXIpCisJCWFkZF9kdXBlKGN0eCwgcC0+aW5vLCBFWFQyRlNfQjJDKGZzLCAqYmxvY2tfbnIpLCBwLT5pbm9kZSk7CisKK2ZpbmlzaDoKKwlwLT5jdXJfY2x1c3RlciA9IGxjOworCXAtPnBoeXNfY2x1c3RlciA9IHBjOworCXJldHVybiAwOworfQorCisvKgorICogUGFzcyAxYzogU2NhbiBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggZHVwbGljYXRlIGJsb2Nrcy4gIFRoaXMKKyAqIGlzIHVzZWQgc28gdGhhdCB3ZSBjYW4gcHJpbnQgcGF0aG5hbWVzIHdoZW4gcHJvbXB0aW5nIHRoZSB1c2VyIGZvcgorICogd2hhdCB0byBkby4KKyAqLworc3RydWN0IHNlYXJjaF9kaXJfc3RydWN0IHsKKwlpbnQJCWNvdW50OworCWV4dDJfaW5vX3QJZmlyc3RfaW5vZGU7CisJZXh0Ml9pbm9fdAltYXhfaW5vZGU7Cit9OworCitzdGF0aWMgaW50IHNlYXJjaF9kaXJlbnRfcHJvYyhleHQyX2lub190IGRpciwgaW50IGVudHJ5LAorCQkJICAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkgICAgICBpbnQgb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgIGludCBibG9ja3NpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgY2hhciAqYnVmIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3Qgc2VhcmNoX2Rpcl9zdHJ1Y3QgKnNkOworCXN0cnVjdCBkdXBfaW5vZGUJKnA7CisJZG5vZGVfdAkJCSpuOworCisJc2QgPSAoc3RydWN0IHNlYXJjaF9kaXJfc3RydWN0ICopIHByaXZfZGF0YTsKKworCWlmIChkaXJlbnQtPmlub2RlID4gc2QtPm1heF9pbm9kZSkKKwkJLyogU2hvdWxkIGFib3J0IHRoaXMgaW5vZGUsIGJ1dCBub3QgZXZlcnl0aGluZyAqLworCQlyZXR1cm4gMDsKKworCWlmICgoZGlyZW50LT5pbm9kZSA8IHNkLT5maXJzdF9pbm9kZSkgfHwgKGVudHJ5IDwgRElSRU5UX09USEVSX0ZJTEUpIHx8CisJICAgICFleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGlub2RlX2R1cF9tYXAsIGRpcmVudC0+aW5vZGUpKQorCQlyZXR1cm4gMDsKKworCW4gPSBkaWN0X2xvb2t1cCgmaW5vX2RpY3QsIElOVF9UT19WT0lEUFRSKGRpcmVudC0+aW5vZGUpKTsKKwlpZiAoIW4pCisJCXJldHVybiAwOworCXAgPSAoc3RydWN0IGR1cF9pbm9kZSAqKSBkbm9kZV9nZXQobik7CisJaWYgKCFwLT5kaXIpIHsKKwkJcC0+ZGlyID0gZGlyOworCQlzZC0+Y291bnQtLTsKKwl9CisKKwlyZXR1cm4oc2QtPmNvdW50ID8gMCA6IERJUkVOVF9BQk9SVCk7Cit9CisKKworc3RhdGljIHZvaWQgcGFzczFjKGUyZnNja190IGN0eCwgY2hhciAqYmxvY2tfYnVmKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlzdHJ1Y3Qgc2VhcmNoX2Rpcl9zdHJ1Y3Qgc2Q7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pKQorCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFDX1BBU1NfSEVBREVSLCAmcGN0eCk7CisKKwkvKgorCSAqIFNlYXJjaCB0aHJvdWdoIGFsbCBkaXJlY3RvcmllcyB0byB0cmFuc2xhdGUgaW5vZGVzIHRvIG5hbWVzCisJICogKGJ5IHNlYXJjaGluZyBmb3IgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGZvciB0aGF0IGlub2RlLikKKwkgKi8KKwlzZC5jb3VudCA9IGR1cF9pbm9kZV9jb3VudCAtIGR1cF9pbm9kZV9mb3VuZGRpcjsKKwlzZC5maXJzdF9pbm9kZSA9IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKTsKKwlzZC5tYXhfaW5vZGUgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCWV4dDJmc19kYmxpc3RfZGlyX2l0ZXJhdGUoZnMtPmRibGlzdCwgMCwgYmxvY2tfYnVmLAorCQkJCSAgc2VhcmNoX2RpcmVudF9wcm9jLCAmc2QpOworfQorCitzdGF0aWMgdm9pZCBwYXNzMWQoZTJmc2NrX3QgY3R4LCBjaGFyICpibG9ja19idWYpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCXN0cnVjdCBkdXBfaW5vZGUJKnAsICp0OworCXN0cnVjdCBkdXBfY2x1c3RlcgkqcTsKKwlleHQyX2lub190CQkqc2hhcmVkLCBpbm87CisJaW50CXNoYXJlZF9sZW47CisJaW50CWk7CisJaW50CWZpbGVfb2s7CisJaW50CW1ldGFfZGF0YSA9IDA7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4OworCWRub2RlX3QJKm4sICptOworCXN0cnVjdCBjbHVzdGVyX2VsCSpzOworCXN0cnVjdCBpbm9kZV9lbCAqcjsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9QQVNTX0hFQURFUiwgJnBjdHgpOworCWUyZnNja19yZWFkX2JpdG1hcHMoY3R4KTsKKworCXBjdHgubnVtID0gZHVwX2lub2RlX2NvdW50OyAvKiBkaWN0X2NvdW50KCZpbm9fZGljdCk7ICovCisJZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9OVU1fRFVQX0lOT0RFUywgJnBjdHgpOworCXNoYXJlZCA9IChleHQyX2lub190ICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LAorCQkJCXNpemVvZihleHQyX2lub190KSAqIGRpY3RfY291bnQoJmlub19kaWN0KSwKKwkJCQkiU2hhcmVkIGlub2RlIGxpc3QiKTsKKwlmb3IgKG4gPSBkaWN0X2ZpcnN0KCZpbm9fZGljdCk7IG47IG4gPSBkaWN0X25leHQoJmlub19kaWN0LCBuKSkgeworCQlwID0gKHN0cnVjdCBkdXBfaW5vZGUgKikgZG5vZGVfZ2V0KG4pOworCQlzaGFyZWRfbGVuID0gMDsKKwkJZmlsZV9vayA9IDE7CisJCWlubyA9IChleHQyX2lub190KVZPSURQVFJfVE9fSU5UKGRub2RlX2dldGtleShuKSk7CisJCWlmIChpbm8gPT0gRVhUMl9CQURfSU5PIHx8IGlubyA9PSBFWFQyX1JFU0laRV9JTk8pCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBGaW5kIGFsbCBvZiB0aGUgaW5vZGVzIHdoaWNoIHNoYXJlIGJsb2NrcyB3aXRoIHRoaXMKKwkJICogb25lLiAgRmlyc3Qgd2UgZmluZCBhbGwgb2YgdGhlIGR1cGxpY2F0ZSBibG9ja3MKKwkJICogYmVsb25naW5nIHRvIHRoaXMgaW5vZGUsIGFuZCB0aGVuIHNlYXJjaCBlYWNoIGJsb2NrCisJCSAqIGdldCB0aGUgbGlzdCBvZiBpbm9kZXMsIGFuZCBtZXJnZSB0aGVtIHRvZ2V0aGVyLgorCQkgKi8KKwkJZm9yIChzID0gcC0+Y2x1c3Rlcl9saXN0OyBzOyBzID0gcy0+bmV4dCkgeworCQkJbSA9IGRpY3RfbG9va3VwKCZjbHN0cl9kaWN0LAorCQkJCQlJTlRfVE9fVk9JRFBUUihzLT5jbHVzdGVyKSk7CisJCQlpZiAoIW0pCisJCQkJY29udGludWU7IC8qIFNob3VsZCBuZXZlciBoYXBwZW4uLi4gKi8KKwkJCXEgPSAoc3RydWN0IGR1cF9jbHVzdGVyICopIGRub2RlX2dldChtKTsKKwkJCWlmIChxLT5udW1fYmFkID4gMSkKKwkJCQlmaWxlX29rID0gMDsKKwkJCWlmIChjaGVja19pZl9mc19jbHVzdGVyKGN0eCwgcy0+Y2x1c3RlcikpIHsKKwkJCQlmaWxlX29rID0gMDsKKwkJCQltZXRhX2RhdGEgPSAxOworCQkJfQorCisJCQkvKgorCQkJICogQWRkIGFsbCBpbm9kZXMgdXNlZCBieSB0aGlzIGJsb2NrIHRvIHRoZQorCQkJICogc2hhcmVkW10gLS0tIHdoaWNoIGlzIGEgdW5pcXVlIGxpc3QsIHNvCisJCQkgKiBpZiBhbiBpbm9kZSBpcyBhbHJlYWR5IGluIHNoYXJlZFtdLCBkb24ndAorCQkJICogYWRkIGl0IGFnYWluLgorCQkJICovCisJCQlmb3IgKHIgPSBxLT5pbm9kZV9saXN0OyByOyByID0gci0+bmV4dCkgeworCQkJCWlmIChyLT5pbm9kZSA9PSBpbm8pCisJCQkJCWNvbnRpbnVlOworCQkJCWZvciAoaSA9IDA7IGkgPCBzaGFyZWRfbGVuOyBpKyspCisJCQkJCWlmIChzaGFyZWRbaV0gPT0gci0+aW5vZGUpCisJCQkJCQlicmVhazsKKwkJCQlpZiAoaSA9PSBzaGFyZWRfbGVuKSB7CisJCQkJCXNoYXJlZFtzaGFyZWRfbGVuKytdID0gci0+aW5vZGU7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyoKKwkJICogUmVwb3J0IHRoZSBpbm9kZSB0aGF0IHdlIGFyZSB3b3JraW5nIG9uCisJCSAqLworCQlwY3R4Lmlub2RlID0gRVhUMl9JTk9ERSgmcC0+aW5vZGUpOworCQlwY3R4LmlubyA9IGlubzsKKwkJcGN0eC5kaXIgPSBwLT5kaXI7CisJCXBjdHguYmxrY291bnQgPSBwLT5udW1fZHVwYmxvY2tzOworCQlwY3R4Lm51bSA9IG1ldGFfZGF0YSA/IHNoYXJlZF9sZW4rMSA6IHNoYXJlZF9sZW47CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMURfRFVQX0ZJTEUsICZwY3R4KTsKKwkJcGN0eC5ibGtjb3VudCA9IDA7CisJCXBjdHgubnVtID0gMDsKKworCQlpZiAobWV0YV9kYXRhKQorCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9TSEFSRV9NRVRBREFUQSwgJnBjdHgpOworCisJCWZvciAoaSA9IDA7IGkgPCBzaGFyZWRfbGVuOyBpKyspIHsKKwkJCW0gPSBkaWN0X2xvb2t1cCgmaW5vX2RpY3QsIElOVF9UT19WT0lEUFRSKHNoYXJlZFtpXSkpOworCQkJaWYgKCFtKQorCQkJCWNvbnRpbnVlOyAvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCisJCQl0ID0gKHN0cnVjdCBkdXBfaW5vZGUgKikgZG5vZGVfZ2V0KG0pOworCQkJLyoKKwkJCSAqIFJlcG9ydCB0aGUgaW5vZGUgdGhhdCB3ZSBhcmUgc2hhcmluZyB3aXRoCisJCQkgKi8KKwkJCXBjdHguaW5vZGUgPSBFWFQyX0lOT0RFKCZ0LT5pbm9kZSk7CisJCQlwY3R4LmlubyA9IHNoYXJlZFtpXTsKKwkJCXBjdHguZGlyID0gdC0+ZGlyOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9EVVBfRklMRV9MSVNULCAmcGN0eCk7CisJCX0KKwkJLyoKKwkJICogRXZlbiBpZiB0aGUgZmlsZSBzaGFyZXMgYmxvY2tzIHdpdGggaXRzZWxmLCB3ZSBzdGlsbCBuZWVkIHRvCisJCSAqIGNsb25lIHRoZSBibG9ja3MuCisJCSAqLworCQlpZiAoZmlsZV9vayAmJiAobWV0YV9kYXRhID8gc2hhcmVkX2xlbisxIDogc2hhcmVkX2xlbikgIT0gMCkgeworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9EVVBfQkxPQ0tTX0RFQUxULCAmcGN0eCk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8xRF9DTE9ORV9RVUVTVElPTiwgJnBjdHgpKSB7CisJCQlwY3R4LmVycmNvZGUgPSBjbG9uZV9maWxlKGN0eCwgaW5vLCBwLCBibG9ja19idWYpOworCQkJaWYgKHBjdHguZXJyY29kZSkKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzFEX0NMT05FX0VSUk9SLCAmcGN0eCk7CisJCQllbHNlCisJCQkJY29udGludWU7CisJCX0KKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMURfREVMRVRFX1FVRVNUSU9OLCAmcGN0eCkpCisJCQlkZWxldGVfZmlsZShjdHgsIGlubywgcCwgYmxvY2tfYnVmKTsKKwkJZWxzZQorCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJfQorCWV4dDJmc19mcmVlX21lbSgmc2hhcmVkKTsKK30KKworLyoKKyAqIERyb3AgdGhlIHJlZmNvdW50IG9uIHRoZSBkdXBfYmxvY2sgc3RydWN0dXJlLCBhbmQgY2xlYXIgdGhlIGVudHJ5CisgKiBpbiB0aGUgYmxvY2tfZHVwX21hcCBpZiBhcHByb3ByaWF0ZS4KKyAqLworc3RhdGljIHZvaWQgZGVjcmVtZW50X2JhZGNvdW50KGUyZnNja190IGN0eCwgYmxrNjRfdCBibG9jaywKKwkJCSAgICAgICBzdHJ1Y3QgZHVwX2NsdXN0ZXIgKnApCit7CisJcC0+bnVtX2JhZC0tOworCWlmIChwLT5udW1fYmFkIDw9IDAgfHwKKwkgICAgKHAtPm51bV9iYWQgPT0gMSAmJiAhY2hlY2tfaWZfZnNfYmxvY2soY3R4LCBibG9jaykpKSB7CisJCWlmIChjaGVja19pZl9mc19jbHVzdGVyKGN0eCwgRVhUMkZTX0IyQyhjdHgtPmZzLCBibG9jaykpKQorCQkJcmV0dXJuOworCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19kdXBfbWFwLCBibG9jayk7CisJfQorfQorCitzdGF0aWMgaW50IGRlbGV0ZV9maWxlX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICBibGs2NF90CSpibG9ja19uciwKKwkJCSAgICAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkgICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwYjsKKwlzdHJ1Y3QgZHVwX2NsdXN0ZXIgKnA7CisJZG5vZGVfdAkqbjsKKwllMmZzY2tfdCBjdHg7CisJYmxrNjRfdCBjLCBsYzsKKworCXBiID0gKHN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJY3R4ID0gcGItPmN0eDsKKworCWlmICgqYmxvY2tfbnIgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwljID0gRVhUMkZTX0IyQyhmcywgKmJsb2NrX25yKTsKKwlsYyA9IEVYVDJGU19CMkMoZnMsIGJsb2NrY250KTsKKwlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2R1cF9tYXAsICpibG9ja19ucikpIHsKKwkJbiA9IGRpY3RfbG9va3VwKCZjbHN0cl9kaWN0LCBJTlRfVE9fVk9JRFBUUihjKSk7CisJCWlmIChuKSB7CisJCQlwID0gKHN0cnVjdCBkdXBfY2x1c3RlciAqKSBkbm9kZV9nZXQobik7CisJCQlpZiAobGMgIT0gcGItPmN1cl9jbHVzdGVyKQorCQkJCWRlY3JlbWVudF9iYWRjb3VudChjdHgsICpibG9ja19uciwgcCk7CisJCX0gZWxzZQorCQkJY29tX2VycigiZGVsZXRlX2ZpbGVfYmxvY2siLCAwLAorCQkJICAgIF8oImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIpLAorCQkJCSpibG9ja19ucik7CisJfSBlbHNlIHsKKwkJaWYgKCgqYmxvY2tfbnIgJSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhjdHgtPmZzKSkgPT0gMCkKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsICpibG9ja19uciwgLTEpOworCQlwYi0+ZHVwX2Jsb2NrcysrOworCX0KKwlwYi0+Y3VyX2NsdXN0ZXIgPSBsYzsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBkZWxldGVfZmlsZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJc3RydWN0IGR1cF9pbm9kZSAqZHAsIGNoYXIqIGJsb2NrX2J1ZikKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHBiOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwl1bnNpZ25lZCBpbnQJCWNvdW50OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlwY3R4LmlubyA9IHBiLmlubyA9IGlubzsKKwlwYi5kdXBfYmxvY2tzID0gMDsKKwlwYi5jdHggPSBjdHg7CisJcGN0eC5zdHIgPSAiZGVsZXRlX2ZpbGUiOworCXBiLmN1cl9jbHVzdGVyID0gfjA7CisKKwlpZiAoZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGZzLCBFWFQyX0lOT0RFKCZkcC0+aW5vZGUpKSkKKwkJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBpbm8sCisJCQkJCQkgICAgIEJMT0NLX0ZMQUdfUkVBRF9PTkxZLAorCQkJCQkJICAgICBibG9ja19idWYsCisJCQkJCQkgICAgIGRlbGV0ZV9maWxlX2Jsb2NrLCAmcGIpOworCWlmIChwY3R4LmVycmNvZGUpCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMUJfQkxPQ0tfSVRFUkFURSwgJnBjdHgpOworCWlmIChjdHgtPmlub2RlX2JhZF9tYXApCisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JhZF9tYXAsIGlubyk7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCAtMSwgTElOVVhfU19JU0RJUihkcC0+aW5vZGUuaV9tb2RlKSk7CisJcXVvdGFfZGF0YV9zdWIoY3R4LT5xY3R4LCAmZHAtPmlub2RlLCBpbm8sCisJCSAgICAgICBwYi5kdXBfYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSk7CisJcXVvdGFfZGF0YV9pbm9kZXMoY3R4LT5xY3R4LCAmZHAtPmlub2RlLCBpbm8sIC0xKTsKKworCS8qIElub2RlIG1heSBoYXZlIGNoYW5nZWQgYnkgYmxvY2tfaXRlcmF0ZSwgc28gcmVyZWFkIGl0ICovCisJZTJmc2NrX3JlYWRfaW5vZGVfZnVsbChjdHgsIGlubywgRVhUMl9JTk9ERSgmZHAtPmlub2RlKSwKKwkJCSAgICAgICBzaXplb2YoZHAtPmlub2RlKSwgImRlbGV0ZV9maWxlIik7CisJZTJmc2NrX2NsZWFyX2lub2RlKGN0eCwgaW5vLCBFWFQyX0lOT0RFKCZkcC0+aW5vZGUpLCAwLCAiZGVsZXRlX2ZpbGUiKTsKKwlpZiAoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCBFWFQyX0lOT0RFKCZkcC0+aW5vZGUpKSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfeGF0dHIoZnMtPnN1cGVyKSkgeworCQlibGs2NF90IGZpbGVfYWNsX2Jsb2NrID0gZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLAorCQkJCQkJRVhUMl9JTk9ERSgmZHAtPmlub2RlKSk7CisKKwkJY291bnQgPSAxOworCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MyhmcywgZmlsZV9hY2xfYmxvY2ssCisJCQkJCWJsb2NrX2J1ZiwgLTEsICZjb3VudCwgaW5vKTsKKwkJaWYgKHBjdHguZXJyY29kZSA9PSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU0pIHsKKwkJCXBjdHguZXJyY29kZSA9IDA7CisJCQljb3VudCA9IDE7CisJCX0KKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJcGN0eC5ibGsgPSBmaWxlX2FjbF9ibG9jazsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMUJfQURKX0VBX1JFRkNPVU5ULCAmcGN0eCk7CisJCX0KKwkJLyoKKwkJICogSWYgdGhlIGNvdW50IGlzIHplcm8sIHRoZW4gYXJyYW5nZSB0byBoYXZlIHRoZQorCQkgKiBibG9jayBkZWxldGVkLiAgSWYgdGhlIGJsb2NrIGlzIGluIHRoZSBibG9ja19kdXBfbWFwLAorCQkgKiBhbHNvIGNhbGwgZGVsZXRlX2ZpbGVfYmxvY2sgc2luY2UgaXQgd2lsbCB0YWtlIGNhcmUKKwkJICogb2Yga2VlcGluZyB0aGUgYWNjb3VudGluZyBzdHJhaWdodC4KKwkJICovCisJCWlmICgoY291bnQgPT0gMCkgfHwKKwkJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19kdXBfbWFwLAorCQkJCQkgICAgICBmaWxlX2FjbF9ibG9jaykpIHsKKwkJCWRlbGV0ZV9maWxlX2Jsb2NrKGZzLCAmZmlsZV9hY2xfYmxvY2ssCisJCQkJCSAgQkxPQ0tfQ09VTlRfRVhUQVRUUiwgMCwgMCwgJnBiKTsKKwkJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsIEVYVDJfSU5PREUoJmRwLT5pbm9kZSksCisJCQkJCQkgIGZpbGVfYWNsX2Jsb2NrKTsKKwkJCXF1b3RhX2RhdGFfc3ViKGN0eC0+cWN0eCwgJmRwLT5pbm9kZSwgaW5vLAorCQkJCSAgICAgICBmcy0+YmxvY2tzaXplKTsKKwkJfQorCX0KK30KKworc3RydWN0IGNsb25lX3N0cnVjdCB7CisJZXJyY29kZV90CWVycmNvZGU7CisJYmxrNjRfdAkJZHVwX2NsdXN0ZXI7CisJYmxrNjRfdAkJYWxsb2NfYmxvY2s7CisJZXh0Ml9pbm9fdAlkaXIsIGlubzsKKwljaGFyCSpidWY7CisJZTJmc2NrX3QgY3R4OworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlCSppbm9kZTsKKworCXN0cnVjdCBkdXBfY2x1c3RlciAqc2F2ZV9kdXBfY2x1c3RlcjsKKwlibGs2NF90IHNhdmVfYmxvY2tucjsKK307CisKKy8qCisgKiBEZWNyZW1lbnQgdGhlIGJhZCBjb3VudCAqYWZ0ZXIqIHdlJ3ZlIHNob3duIHRoYXQgKGEpIHdlIGNhbiBhbGxvY2F0ZSBhCisgKiByZXBsYWNlbWVudCBibG9jayBhbmQgKGIpIHJlbWFwIHRoZSBmaWxlIGJsb2Nrcy4gIFVuZm9ydHVuYXRlbHksIHRoZXJlJ3Mgbm8KKyAqIHdheSB0byBmaW5kIG91dCBpZiB0aGUgcmVtYXAgc3VjY2VlZGVkIHVudGlsIGVpdGhlciB0aGUgbmV4dAorICogY2xvbmVfZmlsZV9ibG9jaygpIGNhbGwgKGFuIGVycm9yIHdoZW4gcmVtYXBwaW5nIHRoZSBibG9jayBhZnRlciByZXR1cm5pbmcKKyAqIEJMT0NLX0NIQU5HRUQgd2lsbCBoYWx0IHRoZSBpdGVyYXRpb24pIG9yIGFmdGVyIGJsb2NrX2l0ZXJhdGUoKSByZXR1cm5zLgorICogT3RoZXJ3aXNlLCBpdCdzIHBvc3NpYmxlIHRoYXQgd2UgZGVjcmVhc2UgdGhlIGJhZGNvdW50IG9uY2UgaW4gcHJlcGFyYXRpb24KKyAqIHRvIHJlbWFwLCB0aGVuIHRoZSByZW1hcCBmYWlscyAoZWl0aGVyIHdlIGNhbid0IGZpbmQgYSByZXBsYWNlbWVudCBibG9jayBvcgorICogd2UgaGF2ZSB0byBzcGxpdCB0aGUgZXh0ZW50IHRyZWUgYW5kIGNhbid0IGZpbmQgYSBuZXcgZXh0ZW50IGJsb2NrKSwgc28gd2UKKyAqIGRlbGV0ZSB0aGUgZmlsZSwgd2hpY2ggZGVjcmVhc2VzIHRoZSBiYWRjb3VudCBhZ2Fpbi4KKyAqLworc3RhdGljIHZvaWQgZGVmZXJyZWRfZGVjX2JhZGNvdW50KHN0cnVjdCBjbG9uZV9zdHJ1Y3QgKmNzKQoreworCWlmICghY3MtPnNhdmVfZHVwX2NsdXN0ZXIpCisJCXJldHVybjsKKwlkZWNyZW1lbnRfYmFkY291bnQoY3MtPmN0eCwgY3MtPnNhdmVfYmxvY2tuciwgY3MtPnNhdmVfZHVwX2NsdXN0ZXIpOworCWNzLT5zYXZlX2R1cF9jbHVzdGVyID0gTlVMTDsKK30KKworc3RhdGljIGludCBjbG9uZV9maWxlX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgIGJsazY0X3QJKmJsb2NrX25yLAorCQkJICAgIGUyX2Jsa2NudF90IGJsb2NrY250LAorCQkJICAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBkdXBfY2x1c3RlciAqcCA9IE5VTEw7CisJYmxrNjRfdAluZXdfYmxvY2s7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgY2xvbmVfc3RydWN0ICpjcyA9IChzdHJ1Y3QgY2xvbmVfc3RydWN0ICopIHByaXZfZGF0YTsKKwlkbm9kZV90ICpuOworCWUyZnNja190IGN0eDsKKwlibGs2NF90IGM7CisJaW50IGlzX21ldGEgPSAwOworCisJY3R4ID0gY3MtPmN0eDsKKwlkZWZlcnJlZF9kZWNfYmFkY291bnQoY3MpOworCisJaWYgKCpibG9ja19uciA9PSAwKQorCQlyZXR1cm4gMDsKKworCWMgPSBFWFQyRlNfQjJDKGZzLCBibG9ja2NudCk7CisJaWYgKGNoZWNrX2lmX2ZzX2NsdXN0ZXIoY3R4LCBFWFQyRlNfQjJDKGZzLCAqYmxvY2tfbnIpKSkKKwkJaXNfbWV0YSA9IDE7CisKKwlpZiAoYyA9PSBjcy0+ZHVwX2NsdXN0ZXIgJiYgY3MtPmFsbG9jX2Jsb2NrKSB7CisJCW5ld19ibG9jayA9IGNzLT5hbGxvY19ibG9jazsKKwkJZ290byBnb3RfYmxvY2s7CisJfQorCisJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19kdXBfbWFwLCAqYmxvY2tfbnIpKSB7CisJCW4gPSBkaWN0X2xvb2t1cCgmY2xzdHJfZGljdCwKKwkJCQlJTlRfVE9fVk9JRFBUUihFWFQyRlNfQjJDKGZzLCAqYmxvY2tfbnIpKSk7CisJCWlmICghbikgeworCQkJY29tX2VycigiY2xvbmVfZmlsZV9ibG9jayIsIDAsCisJCQkgICAgXygiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIiksCisJCQkJKmJsb2NrX25yKTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJcCA9IChzdHJ1Y3QgZHVwX2NsdXN0ZXIgKikgZG5vZGVfZ2V0KG4pOworCisJCWNzLT5kdXBfY2x1c3RlciA9IGM7CisJCS8qCisJCSAqIExldCdzIHRyeSBhbiBpbXBsaWVkIGNsdXN0ZXIgYWxsb2NhdGlvbi4gIElmIHdlIGdldCB0aGUgc2FtZQorCQkgKiBjbHVzdGVyIGJhY2ssIHRoZW4gd2UgbmVlZCB0byBmaW5kIGEgbmV3IGJsb2NrOyBvdGhlcndpc2UsCisJCSAqIHdlJ3JlIG1lcmVseSBmaXhpbmcgdGhlIHByb2JsZW0gb2Ygb25lIGxvZ2ljYWwgY2x1c3RlciBiZWluZworCQkgKiBtYXBwZWQgdG8gbXVsdGlwbGUgcGh5c2ljYWwgY2x1c3RlcnMuCisJCSAqLworCQluZXdfYmxvY2sgPSAwOworCQlyZXR2YWwgPSBleHQyZnNfbWFwX2NsdXN0ZXJfYmxvY2soZnMsIGNzLT5pbm8sCisJCQkJCQkgIEVYVDJfSU5PREUoY3MtPmlub2RlKSwKKwkJCQkJCSAgYmxvY2tjbnQsICZuZXdfYmxvY2spOworCQlpZiAocmV0dmFsID09IDAgJiYgbmV3X2Jsb2NrICE9IDAgJiYKKwkJICAgIEVYVDJGU19CMkMoY3R4LT5mcywgbmV3X2Jsb2NrKSAhPQorCQkgICAgRVhUMkZTX0IyQyhjdHgtPmZzLCAqYmxvY2tfbnIpKQorCQkJZ290byBjbHVzdGVyX2FsbG9jX29rOworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgMCwgY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCSAgICZuZXdfYmxvY2spOworCQlpZiAocmV0dmFsKSB7CisJCQljcy0+ZXJyY29kZSA9IHJldHZhbDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorY2x1c3Rlcl9hbGxvY19vazoKKwkJY3MtPmFsbG9jX2Jsb2NrID0gbmV3X2Jsb2NrOworCisJZ290X2Jsb2NrOgorCQluZXdfYmxvY2sgJj0gfkVYVDJGU19DTFVTVEVSX01BU0soZnMpOworCQluZXdfYmxvY2sgKz0gRVhUMkZTX0NMVVNURVJfTUFTSyhmcykgJiBibG9ja2NudDsKKwkJaWYgKGNzLT5kaXIgJiYgKGJsb2NrY250ID49IDApKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfc2V0X2Rpcl9ibG9jazIoZnMtPmRibGlzdCwKKwkJCQkJY3MtPmRpciwgbmV3X2Jsb2NrLCBibG9ja2NudCk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY3MtPmVycmNvZGUgPSByZXR2YWw7CisJCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQkJfQorCQl9CisjaWYgMAorIAkJcHJpbnRmKCJDbG9uaW5nIGJsb2NrICMlbGxkIGZyb20gJWxsdSB0byAlbGx1XG4iLAorCQkgICAgICAgYmxvY2tjbnQsICpibG9ja19uciwgbmV3X2Jsb2NrKTsKKyNlbmRpZgorCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCAqYmxvY2tfbnIsIDEsIGNzLT5idWYpOworCQlpZiAocmV0dmFsKSB7CisJCQljcy0+ZXJyY29kZSA9IHJldHZhbDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgbmV3X2Jsb2NrLCAxLCBjcy0+YnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY3MtPmVycmNvZGUgPSByZXR2YWw7CisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCX0KKwkJY3MtPnNhdmVfZHVwX2NsdXN0ZXIgPSAoaXNfbWV0YSA/IE5VTEwgOiBwKTsKKwkJY3MtPnNhdmVfYmxvY2tuciA9ICpibG9ja19ucjsKKwkJKmJsb2NrX25yID0gbmV3X2Jsb2NrOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGN0eC0+YmxvY2tfZm91bmRfbWFwLCBuZXdfYmxvY2spOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIG5ld19ibG9jayk7CisJCXJldHVybiBCTE9DS19DSEFOR0VEOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBjbG9uZV9maWxlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgc3RydWN0IGR1cF9pbm9kZSAqZHAsIGNoYXIqIGJsb2NrX2J1ZikKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgY2xvbmVfc3RydWN0IGNzOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwlibGs2NF90CQlibGssIG5ld19ibGs7CisJZG5vZGVfdAkJKm47CisJc3RydWN0IGlub2RlX2VsCSppbm9fZWw7CisJc3RydWN0IGR1cF9jbHVzdGVyCSpkYzsKKwlzdHJ1Y3QgZHVwX2lub2RlCSpkaTsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJY3MuZXJyY29kZSA9IDA7CisJY3MuZGlyID0gMDsKKwljcy5kdXBfY2x1c3RlciA9IH4wOworCWNzLmFsbG9jX2Jsb2NrID0gMDsKKwljcy5jdHggPSBjdHg7CisJY3MuaW5vID0gaW5vOworCWNzLmlub2RlID0gJmRwLT5pbm9kZTsKKwljcy5zYXZlX2R1cF9jbHVzdGVyID0gTlVMTDsKKwljcy5zYXZlX2Jsb2NrbnIgPSAwOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZjcy5idWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubykpCisJCWNzLmRpciA9IGlubzsKKworCXBjdHguaW5vID0gaW5vOworCXBjdHguc3RyID0gImNsb25lX2ZpbGUiOworCWlmIChleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsIEVYVDJfSU5PREUoJmRwLT5pbm9kZSkpKQorCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywgMCwgYmxvY2tfYnVmLAorCQkJCQkJICAgICBjbG9uZV9maWxlX2Jsb2NrLCAmY3MpOworCWRlZmVycmVkX2RlY19iYWRjb3VudCgmY3MpOworCWV4dDJmc19tYXJrX2JiX2RpcnR5KGZzKTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMUJfQkxPQ0tfSVRFUkFURSwgJnBjdHgpOworCQlyZXR2YWwgPSBwY3R4LmVycmNvZGU7CisJCWdvdG8gZXJyb3V0OworCX0KKwlpZiAoY3MuZXJyY29kZSkgeworCQljb21fZXJyKCJjbG9uZV9maWxlIiwgY3MuZXJyY29kZSwgIiVzIiwKKwkJCV8oInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIpKTsKKwkJcmV0dmFsID0gY3MuZXJyY29kZTsKKwkJZ290byBlcnJvdXQ7CisJfQorCS8qIFRoZSBpbm9kZSBtYXkgaGF2ZSBjaGFuZ2VkIG9uIGRpc2ssIHNvIHdlIGhhdmUgdG8gcmUtcmVhZCBpdCAqLworCWUyZnNja19yZWFkX2lub2RlX2Z1bGwoY3R4LCBpbm8sIEVYVDJfSU5PREUoJmRwLT5pbm9kZSksCisJCQkgICAgICAgc2l6ZW9mKGRwLT5pbm9kZSksICJjbG9uZSBmaWxlIEVBIik7CisJYmxrID0gZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCBFWFQyX0lOT0RFKCZkcC0+aW5vZGUpKTsKKwluZXdfYmxrID0gYmxrOworCWlmIChibGsgJiYgKGNsb25lX2ZpbGVfYmxvY2soZnMsICZuZXdfYmxrLAorCQkJCSAgICAgQkxPQ0tfQ09VTlRfRVhUQVRUUiwgMCwgMCwgJmNzKSA9PQorCQkgICAgQkxPQ0tfQ0hBTkdFRCkpIHsKKwkJZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrX3NldChmcywgRVhUMl9JTk9ERSgmZHAtPmlub2RlKSwgbmV3X2Jsayk7CisJCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgaW5vLCBFWFQyX0lOT0RFKCZkcC0+aW5vZGUpLAorCQkJCQlzaXplb2YoZHAtPmlub2RlKSwgImNsb25lIGZpbGUgRUEiKTsKKwkJLyoKKwkJICogSWYgd2UgY2xvbmVkIHRoZSBFQSBibG9jaywgZmluZCBhbGwgb3RoZXIgaW5vZGVzCisJCSAqIHdoaWNoIHJlZmVyZWQgdG8gdGhhdCBFQSBibG9jaywgYW5kIG1vZGlmeQorCQkgKiB0aGVtIHRvIHBvaW50IHRvIHRoZSBuZXcgRUEgYmxvY2suCisJCSAqLworCQluID0gZGljdF9sb29rdXAoJmNsc3RyX2RpY3QsCisJCQkJSU5UX1RPX1ZPSURQVFIoRVhUMkZTX0IyQyhmcywgYmxrKSkpOworCQlpZiAoIW4pIHsKKwkJCWNvbV9lcnIoImNsb25lX2ZpbGUiLCAwLAorCQkJCV8oImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgIgorCQkJCSAgImJsb2NrIHJlY29yZCBmb3IgJWxsdSIpLCBibGspOworCQkJcmV0dmFsID0gMDsgLyogT0sgdG8gc3R1bWJsZSBvbi4uLiAqLworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJZGMgPSAoc3RydWN0IGR1cF9jbHVzdGVyICopIGRub2RlX2dldChuKTsKKwkJZm9yIChpbm9fZWwgPSBkYy0+aW5vZGVfbGlzdDsgaW5vX2VsOyBpbm9fZWwgPSBpbm9fZWwtPm5leHQpIHsKKwkJCWlmIChpbm9fZWwtPmlub2RlID09IGlubykKKwkJCQljb250aW51ZTsKKwkJCW4gPSBkaWN0X2xvb2t1cCgmaW5vX2RpY3QsIElOVF9UT19WT0lEUFRSKGlub19lbC0+aW5vZGUpKTsKKwkJCWlmICghbikgeworCQkJCWNvbV9lcnIoImNsb25lX2ZpbGUiLCAwLAorCQkJCQlfKCJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBICIKKwkJCQkJICAiaW5vZGUgcmVjb3JkIGZvciAldSIpLAorCQkJCQlpbm9fZWwtPmlub2RlKTsKKwkJCQlyZXR2YWwgPSAwOyAvKiBPSyB0byBzdHVtYmxlIG9uLi4uICovCisJCQkJZ290byBlcnJvdXQ7CisJCQl9CisJCQlkaSA9IChzdHJ1Y3QgZHVwX2lub2RlICopIGRub2RlX2dldChuKTsKKwkJCWlmIChleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsCisJCQkJCUVYVDJfSU5PREUoJmRpLT5pbm9kZSkpID09IGJsaykgeworCQkJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsCisJCQkJCUVYVDJfSU5PREUoJmRpLT5pbm9kZSksCisJCQkJCWV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgRVhUMl9JTk9ERSgmZHAtPmlub2RlKSkpOworCQkJCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgaW5vX2VsLT5pbm9kZSwKKwkJCQkJRVhUMl9JTk9ERSgmZGktPmlub2RlKSwKKwkJCQkJc2l6ZW9mKGRpLT5pbm9kZSksICJjbG9uZSBmaWxlIEVBIik7CisJCQkJZGVjcmVtZW50X2JhZGNvdW50KGN0eCwgYmxrLCBkYyk7CisJCQl9CisJCX0KKwl9CisJcmV0dmFsID0gMDsKK2Vycm91dDoKKwlleHQyZnNfZnJlZV9tZW0oJmNzLmJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSByZXR1cm5zIDEgaWYgYSBibG9jayBvdmVybGFwcyB3aXRoIG9uZSBvZiB0aGUgc3VwZXJibG9ja3MsCisgKiBncm91cCBkZXNjcmlwdG9ycywgaW5vZGUgYml0bWFwcywgb3IgYmxvY2sgYml0bWFwcy4KKyAqLworc3RhdGljIGludCBjaGVja19pZl9mc19ibG9jayhlMmZzY2tfdCBjdHgsIGJsazY0X3QgdGVzdF9ibG9jaykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJYmxrNjRfdAlmaXJzdF9ibG9jazsKKwlkZ3JwX3QJaTsKKworCWZpcnN0X2Jsb2NrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKworCQkvKiBDaGVjayBzdXBlcmJsb2Nrcy9ibG9jayBncm91cCBkZXNjcmlwdG9ycyAqLworCQlpZiAoZXh0MmZzX2JnX2hhc19zdXBlcihmcywgaSkpIHsKKwkJCWlmICh0ZXN0X2Jsb2NrID49IGZpcnN0X2Jsb2NrICYmCisJCQkgICAgKHRlc3RfYmxvY2sgPD0gZmlyc3RfYmxvY2sgKyBmcy0+ZGVzY19ibG9ja3MpKQorCQkJCXJldHVybiAxOworCQl9CisKKwkJLyogQ2hlY2sgdGhlIGlub2RlIHRhYmxlICovCisJCWlmICgoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkpICYmCisJCSAgICAodGVzdF9ibG9jayA+PSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSkgJiYKKwkJICAgICh0ZXN0X2Jsb2NrIDwgKGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpICsKKwkJCQkgICBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCkpKQorCQkJcmV0dXJuIDE7CisKKwkJLyogQ2hlY2sgdGhlIGJpdG1hcCBibG9ja3MgKi8KKwkJaWYgKCh0ZXN0X2Jsb2NrID09IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSkgfHwKKwkJICAgICh0ZXN0X2Jsb2NrID09IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSkpCisJCQlyZXR1cm4gMTsKKworCQlmaXJzdF9ibG9jayArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgcmV0dXJucyAxIGlmIGEgY2x1c3RlciBvdmVybGFwcyB3aXRoIG9uZSBvZiB0aGUgc3VwZXJibG9ja3MsCisgKiBncm91cCBkZXNjcmlwdG9ycywgaW5vZGUgYml0bWFwcywgb3IgYmxvY2sgYml0bWFwcy4KKyAqLworc3RhdGljIGludCBjaGVja19pZl9mc19jbHVzdGVyKGUyZnNja190IGN0eCwgYmxrNjRfdCBjbHVzdGVyKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlibGs2NF90CWZpcnN0X2Jsb2NrOworCWRncnBfdAlpOworCisJZmlyc3RfYmxvY2sgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCisJCS8qIENoZWNrIHN1cGVyYmxvY2tzL2Jsb2NrIGdyb3VwIGRlc2NyaXB0b3JzICovCisJCWlmIChleHQyZnNfYmdfaGFzX3N1cGVyKGZzLCBpKSkgeworCQkJaWYgKGNsdXN0ZXIgPj0gRVhUMkZTX0IyQyhmcywgZmlyc3RfYmxvY2spICYmCisJCQkgICAgKGNsdXN0ZXIgPD0gRVhUMkZTX0IyQyhmcywgZmlyc3RfYmxvY2sgKworCQkJCQkJICAgZnMtPmRlc2NfYmxvY2tzKSkpCisJCQkJcmV0dXJuIDE7CisJCX0KKworCQkvKiBDaGVjayB0aGUgaW5vZGUgdGFibGUgKi8KKwkJaWYgKChleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSkgJiYKKwkJICAgIChjbHVzdGVyID49IEVYVDJGU19CMkMoZnMsCisJCQkJCSAgIGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpKSkgJiYKKwkJICAgIChjbHVzdGVyIDw9IEVYVDJGU19CMkMoZnMsCisJCQkJCSAgIGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpICsKKwkJCQkJICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgLSAxKSkpCisJCQlyZXR1cm4gMTsKKworCQkvKiBDaGVjayB0aGUgYml0bWFwIGJsb2NrcyAqLworCQlpZiAoKGNsdXN0ZXIgPT0gRVhUMkZTX0IyQyhmcywKKwkJCQkJICAgZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpKSkgfHwKKwkJICAgIChjbHVzdGVyID09IEVYVDJGU19CMkMoZnMsCisJCQkJCSAgIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSkpKQorCQkJcmV0dXJuIDE7CisKKwkJZmlyc3RfYmxvY2sgKz0gZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJfQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9wYXNzMi5jIGIvZTJmc3Byb2dzL2UyZnNjay9wYXNzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMjBhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3Bhc3MyLmMKQEAgLTAsMCArMSwxOTI0IEBACisvKgorICogcGFzczIuYyAtLS0gY2hlY2sgZGlyZWN0b3J5IHN0cnVjdHVyZQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqCisgKiBQYXNzIDIgb2YgZTJmc2NrIGl0ZXJhdGVzIHRocm91Z2ggYWxsIGFjdGl2ZSBkaXJlY3RvcnkgaW5vZGVzLCBhbmQKKyAqIGFwcGxpZXMgdG8gZm9sbG93aW5nIHRlc3RzIHRvIGVhY2ggZGlyZWN0b3J5IGVudHJ5IGluIHRoZSBkaXJlY3RvcnkKKyAqIGJsb2NrcyBpbiB0aGUgaW5vZGVzOgorICoKKyAqCS0gVGhlIGxlbmd0aCBvZiB0aGUgZGlyZWN0b3J5IGVudHJ5IChyZWNfbGVuKSBzaG91bGQgYmUgYXQKKyAqIAkJbGVhc3QgOCBieXRlcywgYW5kIG5vIG1vcmUgdGhhbiB0aGUgcmVtYWluaW5nIHNwYWNlCisgKiAJCWxlZnQgaW4gdGhlIGRpcmVjdG9yeSBibG9jay4KKyAqIAktIFRoZSBsZW5ndGggb2YgdGhlIG5hbWUgaW4gdGhlIGRpcmVjdG9yeSBlbnRyeSAobmFtZV9sZW4pCisgKiAJCXNob3VsZCBiZSBsZXNzIHRoYW4gKHJlY19sZW4gLSA4KS4KKyAqCS0gVGhlIGlub2RlIG51bWJlciBpbiB0aGUgZGlyZWN0b3J5IGVudHJ5IHNob3VsZCBiZSB3aXRoaW4KKyAqIAkJbGVnYWwgYm91bmRzLgorICogCS0gVGhlIGlub2RlIG51bWJlciBzaG91bGQgcmVmZXIgdG8gYSBpbi11c2UgaW5vZGUuCisgKgktIFRoZSBmaXJzdCBlbnRyeSBzaG91bGQgYmUgJy4nLCBhbmQgaXRzIGlub2RlIHNob3VsZCBiZQorICogCQl0aGUgaW5vZGUgb2YgdGhlIGRpcmVjdG9yeS4KKyAqIAktIFRoZSBzZWNvbmQgZW50cnkgc2hvdWxkIGJlICcuLicuCisgKgorICogVG8gbWluaW1pemUgZGlzayBzZWVrIHRpbWUsIHRoZSBkaXJlY3RvcnkgYmxvY2tzIGFyZSBwcm9jZXNzZWQgaW4KKyAqIHNvcnRlZCBvcmRlciBvZiBibG9jayBudW1iZXJzLgorICoKKyAqIFBhc3MgMiBhbHNvIGNvbGxlY3RzIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisgKiAJLSBUaGUgaW5vZGUgbnVtYmVycyBvZiB0aGUgc3ViZGlyZWN0b3JpZXMgZm9yIGVhY2ggZGlyZWN0b3J5LgorICoKKyAqIFBhc3MgMiByZWxpZXMgb24gdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbiBmcm9tIHByZXZpb3VzIHBhc3NlczoKKyAqIAktIFRoZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24gY29sbGVjdGVkIGluIHBhc3MgMS4KKyAqIAktIFRoZSBpbm9kZV91c2VkX21hcCBiaXRtYXAKKyAqIAktIFRoZSBpbm9kZV9iYWRfbWFwIGJpdG1hcAorICogCS0gVGhlIGlub2RlX2Rpcl9tYXAgYml0bWFwCisgKgorICogUGFzcyAyIGZyZWVzIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzCisgKiAJLSBUaGUgaW5vZGVfYmFkX21hcCBiaXRtYXAKKyAqIAktIFRoZSBpbm9kZV9yZWdfbWFwIGJpdG1hcAorICovCisKKyNkZWZpbmUgX0dOVV9TT1VSQ0UgMSAvKiBnZXQgc3RybmxlbigpICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJlMmZzY2suaCIKKyNpbmNsdWRlICJwcm9ibGVtLmgiCisjaW5jbHVkZSAic3VwcG9ydC9kaWN0LmgiCisKKyNpZmRlZiBOT19JTkxJTkVfRlVOQ1MKKyNkZWZpbmUgX0lOTElORV8KKyNlbHNlCisjZGVmaW5lIF9JTkxJTkVfIGlubGluZQorI2VuZGlmCisKKy8qICNkZWZpbmUgRFhfREVCVUcgKi8KKworLyoKKyAqIEtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IHRpbWVzIGFuIGlub2RlIGlzIHJlZmVyZW5jZWQuCisgKi8KK3N0YXRpYyB2b2lkIGRlYWxsb2NhdGVfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywgY2hhciogYmxvY2tfYnVmKTsKK3N0YXRpYyBpbnQgY2hlY2tfZGlyX2Jsb2NrMihleHQyX2ZpbHN5cyBmcywKKwkJCSAgIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGlyX2Jsb2Nrc19pbmZvLAorCQkJICAgdm9pZCAqcHJpdl9kYXRhKTsKK3N0YXRpYyBpbnQgY2hlY2tfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkaXJfYmxvY2tzX2luZm8sCisJCQkgICB2b2lkICpwcml2X2RhdGEpOworc3RhdGljIGludCBhbGxvY2F0ZV9kaXJfYmxvY2soZTJmc2NrX3QgY3R4LAorCQkJICAgICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkaXJfYmxvY2tzX2luZm8sCisJCQkgICAgICBjaGFyICpidWYsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpOworc3RhdGljIHZvaWQgY2xlYXJfaHRyZWUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubyk7CitzdGF0aWMgaW50IGh0cmVlX2RlcHRoKHN0cnVjdCBkeF9kaXJfaW5mbyAqZHhfZGlyLAorCQkgICAgICAgc3RydWN0IGR4X2RpcmJsb2NrX2luZm8gKmR4X2RiKTsKK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgc3BlY2lhbF9kaXJfYmxvY2tfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOworCitzdHJ1Y3QgY2hlY2tfZGlyX3N0cnVjdCB7CisJY2hhciAqYnVmOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwlpbnQJY291bnQsIG1heDsKKwllMmZzY2tfdCBjdHg7CisJdW5zaWduZWQgbG9uZyBsb25nIGxpc3Rfb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgbG9uZyByYV9lbnRyaWVzOworCXVuc2lnbmVkIGxvbmcgbG9uZyBuZXh0X3JhX29mZjsKK307CisKK3ZvaWQgZTJmc2NrX3Bhc3MyKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBjdHgtPmZzLT5zdXBlcjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJZXh0Ml9maWxzeXMgCQlmcyA9IGN0eC0+ZnM7CisJY2hhcgkJCSpidWY7CisjaWZkZWYgUkVTT1VSQ0VfVFJBQ0sKKwlzdHJ1Y3QgcmVzb3VyY2VfdHJhY2sJcnRyYWNrOworI2VuZGlmCisJc3RydWN0IGNoZWNrX2Rpcl9zdHJ1Y3QgY2Q7CisJc3RydWN0IGR4X2Rpcl9pbmZvCSpkeF9kaXI7CisJc3RydWN0IGR4X2RpcmJsb2NrX2luZm8JKmR4X2RiLCAqZHhfcGFyZW50OworCWludAkJCWI7CisJaW50CQkJaSwgZGVwdGg7CisJcHJvYmxlbV90CQljb2RlOworCWludAkJCWJhZF9kaXI7CisJaW50ICgqY2hlY2tfZGlyX2Z1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkaXJfYmxvY2tzX2luZm8sCisJCQkgICAgICB2b2lkICpwcml2X2RhdGEpOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZjZC5wY3R4KTsKKworI2lmZGVmIE1UUkFDRQorCW10cmFjZV9wcmludCgiUGFzcyAyIik7CisjZW5kaWYKKworCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pKQorCQlmaXhfcHJvYmxlbShjdHgsIFBSXzJfUEFTU19IRUFERVIsICZjZC5wY3R4KTsKKworCWNkLnBjdHguZXJyY29kZSA9IGUyZnNja19zZXR1cF9pY291bnQoY3R4LCAiaW5vZGVfY291bnQiLAorCQkJCUVYVDJfSUNPVU5UX09QVF9JTkNSRU1FTlQsCisJCQkJY3R4LT5pbm9kZV9saW5rX2luZm8sICZjdHgtPmlub2RlX2NvdW50KTsKKwlpZiAoY2QucGN0eC5lcnJjb2RlKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMl9BTExPQ0FURV9JQ09VTlQsICZjZC5wY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKwlidWYgPSAoY2hhciAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgMipmcy0+YmxvY2tzaXplLAorCQkJCQkgICAgICAiZGlyZWN0b3J5IHNjYW4gYnVmZmVyIik7CisKKwkvKgorCSAqIFNldCB1cCB0aGUgcGFyZW50IHBvaW50ZXIgZm9yIHRoZSByb290IGRpcmVjdG9yeSwgaWYKKwkgKiBwcmVzZW50LiAgKElmIHRoZSByb290IGRpcmVjdG9yeSBpcyBub3QgcHJlc2VudCwgd2Ugd2lsbAorCSAqIGNyZWF0ZSBpdCBpbiBwYXNzIDMuKQorCSAqLworCSh2b2lkKSBlMmZzY2tfZGlyX2luZm9fc2V0X3BhcmVudChjdHgsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8pOworCisJY2QuYnVmID0gYnVmOworCWNkLmN0eCA9IGN0eDsKKwljZC5jb3VudCA9IDE7CisJY2QubWF4ID0gZXh0MmZzX2RibGlzdF9jb3VudDIoZnMtPmRibGlzdCk7CisJY2QubGlzdF9vZmZzZXQgPSAwOworCWNkLnJhX2VudHJpZXMgPSBjdHgtPnJlYWRhaGVhZF9rYiAqIDEwMjQgLyBjdHgtPmZzLT5ibG9ja3NpemU7CisJY2QubmV4dF9yYV9vZmYgPSAwOworCisJaWYgKGN0eC0+cHJvZ3Jlc3MpCisJCSh2b2lkKSAoY3R4LT5wcm9ncmVzcykoY3R4LCAyLCAwLCBjZC5tYXgpOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9kaXJfaW5kZXgoZnMtPnN1cGVyKSkKKwkJZXh0MmZzX2RibGlzdF9zb3J0Mihmcy0+ZGJsaXN0LCBzcGVjaWFsX2Rpcl9ibG9ja19jbXApOworCisJY2hlY2tfZGlyX2Z1bmMgPSBjZC5yYV9lbnRyaWVzID8gY2hlY2tfZGlyX2Jsb2NrMiA6IGNoZWNrX2Rpcl9ibG9jazsKKwljZC5wY3R4LmVycmNvZGUgPSBleHQyZnNfZGJsaXN0X2l0ZXJhdGUyKGZzLT5kYmxpc3QsIGNoZWNrX2Rpcl9mdW5jLAorCQkJCQkJICZjZCk7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19SRVNUQVJUX0xBVEVSKSB7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUkVTVEFSVDsKKwkJY3R4LT5mbGFncyAmPSB+RTJGX0ZMQUdfUkVTVEFSVF9MQVRFUjsKKwl9CisKKwlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1JVTl9SRVRVUk4pCisJCXJldHVybjsKKworCWlmIChjZC5wY3R4LmVycmNvZGUpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0RCTElTVF9JVEVSQVRFLCAmY2QucGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGk9MDsgKGR4X2RpciA9IGUyZnNja19keF9kaXJfaW5mb19pdGVyKGN0eCwgJmkpKSAhPSAwOykgeworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQkJcmV0dXJuOworCQlpZiAoZTJmc2NrX2Rpcl93aWxsX2JlX3JlaGFzaGVkKGN0eCwgZHhfZGlyLT5pbm8pIHx8CisJCSAgICBkeF9kaXItPm51bWJsb2NrcyA9PSAwKQorCQkJY29udGludWU7CisJCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJCWJhZF9kaXIgPSAwOworCQlwY3R4LmRpciA9IGR4X2Rpci0+aW5vOworCQlkeF9kYiA9IGR4X2Rpci0+ZHhfYmxvY2s7CisJCWlmIChkeF9kYi0+ZmxhZ3MgJiBEWF9GTEFHX1JFRkVSRU5DRUQpCisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19EVVBfUkVGOworCQllbHNlCisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19SRUZFUkVOQ0VEOworCQkvKgorCQkgKiBGaW5kIGFsbCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgbGVhZiBibG9ja3MsIGFuZAorCQkgKiB1cGRhdGUgdGhlaXIgcGFyZW50J3MgbWluIGFuZCBtYXggaGFzaCB2YWx1ZXMKKwkJICovCisJCWZvciAoYj0wLCBkeF9kYiA9IGR4X2Rpci0+ZHhfYmxvY2s7CisJCSAgICAgYiA8IGR4X2Rpci0+bnVtYmxvY2tzOworCQkgICAgIGIrKywgZHhfZGIrKykgeworCQkJaWYgKChkeF9kYi0+dHlwZSAhPSBEWF9ESVJCTE9DS19MRUFGKSB8fAorCQkJICAgICEoZHhfZGItPmZsYWdzICYgKERYX0ZMQUdfRklSU1QgfCBEWF9GTEFHX0xBU1QpKSkKKwkJCQljb250aW51ZTsKKwkJCWR4X3BhcmVudCA9ICZkeF9kaXItPmR4X2Jsb2NrW2R4X2RiLT5wYXJlbnRdOworCQkJLyoKKwkJCSAqIFhYWCBNYWtlIHN1cmUgZHhfcGFyZW50LT5taW5faGFzaCA+IGR4X2RiLT5taW5faGFzaAorCQkJICovCisJCQlpZiAoZHhfZGItPmZsYWdzICYgRFhfRkxBR19GSVJTVCkKKwkJCQlkeF9wYXJlbnQtPm1pbl9oYXNoID0gZHhfZGItPm1pbl9oYXNoOworCQkJLyoKKwkJCSAqIFhYWCBNYWtlIHN1cmUgZHhfcGFyZW50LT5tYXhfaGFzaCA8IGR4X2RiLT5tYXhfaGFzaAorCQkJICovCisJCQlpZiAoZHhfZGItPmZsYWdzICYgRFhfRkxBR19MQVNUKQorCQkJCWR4X3BhcmVudC0+bWF4X2hhc2ggPSBkeF9kYi0+bWF4X2hhc2g7CisJCX0KKworCQlmb3IgKGI9MCwgZHhfZGIgPSBkeF9kaXItPmR4X2Jsb2NrOworCQkgICAgIGIgPCBkeF9kaXItPm51bWJsb2NrczsKKwkJICAgICBiKyssIGR4X2RiKyspIHsKKwkJCXBjdHguYmxrY291bnQgPSBiOworCQkJcGN0eC5ncm91cCA9IGR4X2RiLT5wYXJlbnQ7CisJCQljb2RlID0gMDsKKwkJCWlmICghKGR4X2RiLT5mbGFncyAmIERYX0ZMQUdfRklSU1QpICYmCisJCQkgICAgKGR4X2RiLT5taW5faGFzaCA8IGR4X2RiLT5ub2RlX21pbl9oYXNoKSkgeworCQkJCXBjdHguYmxrID0gZHhfZGItPm1pbl9oYXNoOworCQkJCXBjdHguYmxrMiA9IGR4X2RiLT5ub2RlX21pbl9oYXNoOworCQkJCWNvZGUgPSBQUl8yX0hUUkVFX01JTl9IQVNIOworCQkJCWZpeF9wcm9ibGVtKGN0eCwgY29kZSwgJnBjdHgpOworCQkJCWJhZF9kaXIrKzsKKwkJCX0KKwkJCWlmIChkeF9kYi0+dHlwZSA9PSBEWF9ESVJCTE9DS19MRUFGKSB7CisJCQkJZGVwdGggPSBodHJlZV9kZXB0aChkeF9kaXIsIGR4X2RiKTsKKwkJCQlpZiAoZGVwdGggIT0gZHhfZGlyLT5kZXB0aCkgeworCQkJCQlwY3R4Lm51bSA9IGR4X2Rpci0+ZGVwdGg7CisJCQkJCWNvZGUgPSBQUl8yX0hUUkVFX0JBRF9ERVBUSDsKKwkJCQkJZml4X3Byb2JsZW0oY3R4LCBjb2RlLCAmcGN0eCk7CisJCQkJCWJhZF9kaXIrKzsKKwkJCQl9CisJCQl9CisJCQkvKgorCQkJICogVGhpcyB0ZXN0IGRvZXNuJ3QgYXBwbHkgZm9yIHRoZSByb290IGJsb2NrCisJCQkgKiBhdCBibG9jayAjMAorCQkJICovCisJCQlpZiAoYiAmJgorCQkJICAgIChkeF9kYi0+bWF4X2hhc2ggPiBkeF9kYi0+bm9kZV9tYXhfaGFzaCkpIHsKKwkJCQlwY3R4LmJsayA9IGR4X2RiLT5tYXhfaGFzaDsKKwkJCQlwY3R4LmJsazIgPSBkeF9kYi0+bm9kZV9tYXhfaGFzaDsKKwkJCQljb2RlID0gUFJfMl9IVFJFRV9NQVhfSEFTSDsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIGNvZGUsICZwY3R4KTsKKwkJCQliYWRfZGlyKys7CisJCQl9CisJCQlpZiAoIShkeF9kYi0+ZmxhZ3MgJiBEWF9GTEFHX1JFRkVSRU5DRUQpKSB7CisJCQkJY29kZSA9IFBSXzJfSFRSRUVfTk9UUkVGOworCQkJCWZpeF9wcm9ibGVtKGN0eCwgY29kZSwgJnBjdHgpOworCQkJCWJhZF9kaXIrKzsKKwkJCX0gZWxzZSBpZiAoZHhfZGItPmZsYWdzICYgRFhfRkxBR19EVVBfUkVGKSB7CisJCQkJY29kZSA9IFBSXzJfSFRSRUVfRFVQUkVGOworCQkJCWZpeF9wcm9ibGVtKGN0eCwgY29kZSwgJnBjdHgpOworCQkJCWJhZF9kaXIrKzsKKwkJCX0KKwkJfQorCQlpZiAoYmFkX2RpciAmJiBmaXhfcHJvYmxlbShjdHgsIFBSXzJfSFRSRUVfQ0xFQVIsICZwY3R4KSkgeworCQkJY2xlYXJfaHRyZWUoY3R4LCBkeF9kaXItPmlubyk7CisJCQlkeF9kaXItPm51bWJsb2NrcyA9IDA7CisJCX0KKwl9CisJZTJmc2NrX2ZyZWVfZHhfZGlyX2luZm8oY3R4KTsKKworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlleHQyZnNfZnJlZV9kYmxpc3QoZnMtPmRibGlzdCk7CisKKwlpZiAoY3R4LT5pbm9kZV9iYWRfbWFwKSB7CisJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChjdHgtPmlub2RlX2JhZF9tYXApOworCQljdHgtPmlub2RlX2JhZF9tYXAgPSAwOworCX0KKwlpZiAoY3R4LT5pbm9kZV9yZWdfbWFwKSB7CisJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChjdHgtPmlub2RlX3JlZ19tYXApOworCQljdHgtPmlub2RlX3JlZ19tYXAgPSAwOworCX0KKwlpZiAoY3R4LT5lbmNyeXB0ZWRfZGlycykgeworCQlleHQyZnNfdTMyX2xpc3RfZnJlZShjdHgtPmVuY3J5cHRlZF9kaXJzKTsKKwkJY3R4LT5lbmNyeXB0ZWRfZGlycyA9IDA7CisJfQorCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlpZiAoY3R4LT5sYXJnZV9maWxlcykgeworCQlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9sYXJnZV9maWxlKHNiKSAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8yX0ZFQVRVUkVfTEFSR0VfRklMRVMsICZwY3R4KSkgeworCQkJZXh0MmZzX3NldF9mZWF0dXJlX2xhcmdlX2ZpbGUoc2IpOworCQkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFk7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCX0KKwkJaWYgKHNiLT5zX3Jldl9sZXZlbCA9PSBFWFQyX0dPT0RfT0xEX1JFViAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8xX0ZTX1JFVl9MRVZFTCwgJnBjdHgpKSB7CisJCQlleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2KGZzKTsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCX0KKworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgXygiUGFzcyAyIiksICZydHJhY2ssIGZzLT5pbyk7Cit9CisKKyNkZWZpbmUgTUFYX0RFUFRIIDMyMDAwCitzdGF0aWMgaW50IGh0cmVlX2RlcHRoKHN0cnVjdCBkeF9kaXJfaW5mbyAqZHhfZGlyLAorCQkgICAgICAgc3RydWN0IGR4X2RpcmJsb2NrX2luZm8gKmR4X2RiKQoreworCWludAlkZXB0aCA9IDA7CisKKwl3aGlsZSAoZHhfZGItPnR5cGUgIT0gRFhfRElSQkxPQ0tfUk9PVCAmJiBkZXB0aCA8IE1BWF9ERVBUSCkgeworCQlkeF9kYiA9ICZkeF9kaXItPmR4X2Jsb2NrW2R4X2RiLT5wYXJlbnRdOworCQlkZXB0aCsrOworCX0KKwlyZXR1cm4gZGVwdGg7Cit9CisKK3N0YXRpYyBpbnQgZGljdF9kZV9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRlX2EsICpkZV9iOworCWludAlhX2xlbiwgYl9sZW47CisKKwlkZV9hID0gKGNvbnN0IHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBhOworCWFfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkZV9hKTsKKwlkZV9iID0gKGNvbnN0IHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBiOworCWJfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkZV9iKTsKKworCWlmIChhX2xlbiAhPSBiX2xlbikKKwkJcmV0dXJuIChhX2xlbiAtIGJfbGVuKTsKKworCXJldHVybiBtZW1jbXAoZGVfYS0+bmFtZSwgZGVfYi0+bmFtZSwgYV9sZW4pOworfQorCisvKgorICogVGhpcyBpcyBzcGVjaWFsIHNvcnQgZnVuY3Rpb24gdGhhdCBtYWtlcyBzdXJlIHRoYXQgZGlyZWN0b3J5IGJsb2NrcworICogd2l0aCBhIGRpcmJsb2NrIG9mIHplcm8gYXJlIHNvcnRlZCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0LgorICogVGhpcyBndWFyYW50ZWVzIHRoYXQgdGhlIHJvb3Qgbm9kZSBvZiB0aGUgaHRyZWUgZGlyZWN0b3JpZXMgYXJlCisgKiBwcm9jZXNzZWQgZmlyc3QsIHNvIHdlIGtub3cgd2hhdCBoYXNoIHZlcnNpb24gdG8gdXNlLgorICovCitzdGF0aWMgRVhUMl9RU09SVF9UWVBFIHNwZWNpYWxfZGlyX2Jsb2NrX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfYSA9CisJCShjb25zdCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKikgYTsKKwljb25zdCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmRiX2IgPQorCQkoY29uc3Qgc3RydWN0IGV4dDJfZGJfZW50cnkyICopIGI7CisKKwlpZiAoZGJfYS0+YmxvY2tjbnQgJiYgIWRiX2ItPmJsb2NrY250KQorCQlyZXR1cm4gMTsKKworCWlmICghZGJfYS0+YmxvY2tjbnQgJiYgZGJfYi0+YmxvY2tjbnQpCisJCXJldHVybiAtMTsKKworCWlmIChkYl9hLT5ibGsgIT0gZGJfYi0+YmxrKQorCQlyZXR1cm4gKGludCkgKGRiX2EtPmJsayAtIGRiX2ItPmJsayk7CisKKwlpZiAoZGJfYS0+aW5vICE9IGRiX2ItPmlubykKKwkJcmV0dXJuIChpbnQpIChkYl9hLT5pbm8gLSBkYl9iLT5pbm8pOworCisJcmV0dXJuIChpbnQpIChkYl9hLT5ibG9ja2NudCAtIGRiX2ItPmJsb2NrY250KTsKK30KKworCisvKgorICogTWFrZSBzdXJlIHRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgZGlyZWN0b3J5IGlzICcuJywgYW5kIHRoYXQgdGhlCisgKiBkaXJlY3RvcnkgZW50cnkgaXMgc2FuZS4KKyAqLworc3RhdGljIGludCBjaGVja19kb3QoZTJmc2NrX3QgY3R4LAorCQkgICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkgICAgIGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqbmV4dGRpcjsKKwl1bnNpZ25lZCBpbnQJcmVjX2xlbiwgbmV3X2xlbjsKKwlpbnQJCXN0YXR1cyA9IDA7CisJaW50CQljcmVhdGVkID0gMDsKKwlwcm9ibGVtX3QJcHJvYmxlbSA9IDA7CisKKwlpZiAoIWRpcmVudC0+aW5vZGUpCisJCXByb2JsZW0gPSBQUl8yX01JU1NJTkdfRE9UOworCWVsc2UgaWYgKChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgIT0gMSkgfHwKKwkJIChkaXJlbnQtPm5hbWVbMF0gIT0gJy4nKSkKKwkJcHJvYmxlbSA9IFBSXzJfMVNUX05PVF9ET1Q7CisJZWxzZSBpZiAoZGlyZW50LT5uYW1lWzFdICE9ICdcMCcpCisJCXByb2JsZW0gPSBQUl8yX0RPVF9OVUxMX1RFUk07CisKKwkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGN0eC0+ZnMsIGRpcmVudCwgJnJlY19sZW4pOworCWlmIChwcm9ibGVtKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sIHBjdHgpKSB7CisJCQlpZiAocmVjX2xlbiA8IDEyKQorCQkJCXJlY19sZW4gPSBkaXJlbnQtPnJlY19sZW4gPSAxMjsKKwkJCWRpcmVudC0+aW5vZGUgPSBpbm87CisJCQlleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbihkaXJlbnQsIDEpOworCQkJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpcmVudCwgRVhUMl9GVF9VTktOT1dOKTsKKwkJCWRpcmVudC0+bmFtZVswXSA9ICcuJzsKKwkJCWRpcmVudC0+bmFtZVsxXSA9ICdcMCc7CisJCQlzdGF0dXMgPSAxOworCQkJY3JlYXRlZCA9IDE7CisJCX0KKwl9CisJaWYgKGRpcmVudC0+aW5vZGUgIT0gaW5vKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfQkFEX0lOT0RFX0RPVCwgcGN0eCkpIHsKKwkJCWRpcmVudC0+aW5vZGUgPSBpbm87CisJCQlzdGF0dXMgPSAxOworCQl9CisJfQorCWlmIChyZWNfbGVuID4gMTIpIHsKKwkJbmV3X2xlbiA9IHJlY19sZW4gLSAxMjsKKwkJaWYgKG5ld19sZW4gPiAxMikgeworCQkJaWYgKGNyZWF0ZWQgfHwKKwkJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzJfU1BMSVRfRE9ULCBwY3R4KSkgeworCQkJCW5leHRkaXIgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopCisJCQkJCSgoY2hhciAqKSBkaXJlbnQgKyAxMik7CisJCQkJZGlyZW50LT5yZWNfbGVuID0gMTI7CisJCQkJKHZvaWQpIGV4dDJmc19zZXRfcmVjX2xlbihjdHgtPmZzLCBuZXdfbGVuLAorCQkJCQkJCSAgbmV4dGRpcik7CisJCQkJbmV4dGRpci0+aW5vZGUgPSAwOworCQkJCWV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuKG5leHRkaXIsIDApOworCQkJCWV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShuZXh0ZGlyLAorCQkJCQkJCSAgICBFWFQyX0ZUX1VOS05PV04pOworCQkJCXN0YXR1cyA9IDE7CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIHN0YXR1czsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgc2Vjb25kIGVudHJ5IGluIHRoZSBkaXJlY3RvcnkgaXMgJy4uJywgYW5kIHRoYXQgdGhlCisgKiBkaXJlY3RvcnkgZW50cnkgaXMgc2FuZS4gIFdlIGRvIG5vdCBjaGVjayB0aGUgaW5vZGUgbnVtYmVyIG9mICcuLicKKyAqIGhlcmU7IHRoaXMgZ2V0cyBkb25lIGluIHBhc3MgMy4KKyAqLworc3RhdGljIGludCBjaGVja19kb3Rkb3QoZTJmc2NrX3QgY3R4LAorCQkJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQlleHQyX2lub190IGlubywgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlwcm9ibGVtX3QJcHJvYmxlbSA9IDA7CisJdW5zaWduZWQgaW50CXJlY19sZW47CisKKwlpZiAoIWRpcmVudC0+aW5vZGUpCisJCXByb2JsZW0gPSBQUl8yX01JU1NJTkdfRE9UX0RPVDsKKwllbHNlIGlmICgoZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpICE9IDIpIHx8CisJCSAoZGlyZW50LT5uYW1lWzBdICE9ICcuJykgfHwKKwkJIChkaXJlbnQtPm5hbWVbMV0gIT0gJy4nKSkKKwkJcHJvYmxlbSA9IFBSXzJfMk5EX05PVF9ET1RfRE9UOworCWVsc2UgaWYgKGRpcmVudC0+bmFtZVsyXSAhPSAnXDAnKQorCQlwcm9ibGVtID0gUFJfMl9ET1RfRE9UX05VTExfVEVSTTsKKworCSh2b2lkKSBleHQyZnNfZ2V0X3JlY19sZW4oY3R4LT5mcywgZGlyZW50LCAmcmVjX2xlbik7CisJaWYgKHByb2JsZW0pIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgcHJvYmxlbSwgcGN0eCkpIHsKKwkJCWlmIChyZWNfbGVuIDwgMTIpCisJCQkJZGlyZW50LT5yZWNfbGVuID0gMTI7CisJCQkvKgorCQkJICogTm90ZTogd2UgZG9uJ3QgaGF2ZSB0aGUgcGFyZW50IGlub2RlIGp1c3QKKwkJCSAqIHlldCwgc28gd2Ugd2lsbCBmaWxsIGl0IGluIHdpdGggdGhlIHJvb3QKKwkJCSAqIGlub2RlLiAgVGhpcyB3aWxsIGdldCBmaXhlZCBpbiBwYXNzIDMuCisJCQkgKi8KKwkJCWRpcmVudC0+aW5vZGUgPSBFWFQyX1JPT1RfSU5POworCQkJZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oZGlyZW50LCAyKTsKKwkJCWV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShkaXJlbnQsIEVYVDJfRlRfVU5LTk9XTik7CisJCQlkaXJlbnQtPm5hbWVbMF0gPSAnLic7CisJCQlkaXJlbnQtPm5hbWVbMV0gPSAnLic7CisJCQlkaXJlbnQtPm5hbWVbMl0gPSAnXDAnOworCQkJcmV0dXJuIDE7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCWlmIChlMmZzY2tfZGlyX2luZm9fc2V0X2RvdGRvdChjdHgsIGlubywgZGlyZW50LT5pbm9kZSkpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX05PX0RJUklORk8sIHBjdHgpOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogQ2hlY2sgdG8gbWFrZSBzdXJlIGEgZGlyZWN0b3J5IGVudHJ5IGRvZXNuJ3QgY29udGFpbiBhbnkgaWxsZWdhbAorICogY2hhcmFjdGVycy4KKyAqLworc3RhdGljIGludCBjaGVja19uYW1lKGUyZnNja190IGN0eCwKKwkJICAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCSAgICAgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCit7CisJaW50CWk7CisJaW50CWZpeHVwID0gLTE7CisJaW50CXJldCA9IDA7CisKKwlmb3IgKCBpID0gMDsgaSA8IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KTsgaSsrKSB7CisJCWlmIChkaXJlbnQtPm5hbWVbaV0gIT0gJy8nICYmIGRpcmVudC0+bmFtZVtpXSAhPSAnXDAnKQorCQkJY29udGludWU7CisJCWlmIChmaXh1cCA8IDApCisJCQlmaXh1cCA9IGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9CQURfTkFNRSwgcGN0eCk7CisJCWlmIChmaXh1cCA9PSAwKQorCQkJcmV0dXJuIDA7CisJCWRpcmVudC0+bmFtZVtpXSA9ICcuJzsKKwkJcmV0ID0gMTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBlbmNyeXB0ZWRfY2hlY2tfbmFtZShlMmZzY2tfdCBjdHgsCisJCQkJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlpZiAoZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpIDwgRVhUNF9DUllQVE9fQkxPQ0tfU0laRSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8yX0JBRF9FTkNSWVBURURfTkFNRSwgcGN0eCkpIHsKKwkJCWRpcmVudC0+aW5vZGUgPSAwOworCQkJcmV0dXJuIDE7CisJCX0KKwkJZXh0MmZzX3VubWFya192YWxpZChjdHgtPmZzKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDaGVjayB0aGUgZGlyZWN0b3J5IGZpbGV0eXBlIChpZiBwcmVzZW50KQorICovCitzdGF0aWMgX0lOTElORV8gaW50IGNoZWNrX2ZpbGV0eXBlKGUyZnNja190IGN0eCwKKwkJCQkgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCQkgICBleHQyX2lub190IGRpcl9pbm8gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCit7CisJaW50CWZpbGV0eXBlID0gZXh0MmZzX2RpcmVudF9maWxlX3R5cGUoZGlyZW50KTsKKwlpbnQJc2hvdWxkX2JlID0gRVhUMl9GVF9VTktOT1dOOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZmlsZXR5cGUoY3R4LT5mcy0+c3VwZXIpKSB7CisJCWlmIChmaWxldHlwZSA9PSAwIHx8CisJCSAgICAhZml4X3Byb2JsZW0oY3R4LCBQUl8yX0NMRUFSX0ZJTEVUWVBFLCBwY3R4KSkKKwkJCXJldHVybiAwOworCQlleHQyZnNfZGlyZW50X3NldF9maWxlX3R5cGUoZGlyZW50LCBFWFQyX0ZUX1VOS05PV04pOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGRpcmVudC0+aW5vZGUpKSB7CisJCXNob3VsZF9iZSA9IEVYVDJfRlRfRElSOworCX0gZWxzZSBpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3JlZ19tYXAsCisJCQkJCSAgICBkaXJlbnQtPmlub2RlKSkgeworCQlzaG91bGRfYmUgPSBFWFQyX0ZUX1JFR19GSUxFOworCX0gZWxzZSBpZiAoY3R4LT5pbm9kZV9iYWRfbWFwICYmCisJCSAgIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9iYWRfbWFwLAorCQkJCQkgICAgZGlyZW50LT5pbm9kZSkpCisJCXNob3VsZF9iZSA9IDA7CisJZWxzZSB7CisJCWUyZnNja19yZWFkX2lub2RlKGN0eCwgZGlyZW50LT5pbm9kZSwgJmlub2RlLAorCQkJCSAgImNoZWNrX2ZpbGV0eXBlIik7CisJCXNob3VsZF9iZSA9IGV4dDJfZmlsZV90eXBlKGlub2RlLmlfbW9kZSk7CisJfQorCWlmIChmaWxldHlwZSA9PSBzaG91bGRfYmUpCisJCXJldHVybiAwOworCXBjdHgtPm51bSA9IHNob3VsZF9iZTsKKworCWlmIChmaXhfcHJvYmxlbShjdHgsIGZpbGV0eXBlID8gUFJfMl9CQURfRklMRVRZUEUgOiBQUl8yX1NFVF9GSUxFVFlQRSwKKwkJCXBjdHgpID09IDApCisJCXJldHVybiAwOworCisJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpcmVudCwgc2hvdWxkX2JlKTsKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQgcGFyc2VfaW50X25vZGUoZXh0Ml9maWxzeXMgZnMsCisJCQkgICBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmRiLAorCQkJICAgc3RydWN0IGNoZWNrX2Rpcl9zdHJ1Y3QgKmNkLAorCQkJICAgc3RydWN0IGR4X2Rpcl9pbmZvCSpkeF9kaXIsCisJCQkgICBjaGFyICpibG9ja19idWYsIGludCBmYWlsZWRfY3N1bSkKK3sKKwlzdHJ1Y3QgCQlleHQyX2R4X3Jvb3RfaW5mbyAgKnJvb3Q7CisJc3RydWN0IAkJZXh0Ml9keF9lbnRyeSAqZW50OworCXN0cnVjdAkJZXh0Ml9keF9jb3VudGxpbWl0ICpsaW1pdDsKKwlzdHJ1Y3QgZHhfZGlyYmxvY2tfaW5mbwkqZHhfZGI7CisJaW50CQlpLCBleHBlY3RfbGltaXQsIGNvdW50OworCWJsa190CQlibGs7CisJZXh0Ml9kaXJoYXNoX3QJbWluX2hhc2ggPSAweGZmZmZmZmZmOworCWV4dDJfZGlyaGFzaF90CW1heF9oYXNoID0gMDsKKwlleHQyX2Rpcmhhc2hfdAloYXNoID0gMCwgcHJldl9oYXNoOworCWludAkJY3N1bV9zaXplID0gMDsKKworCWlmIChkYi0+YmxvY2tjbnQgPT0gMCkgeworCQlyb290ID0gKHN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAqKSAoYmxvY2tfYnVmICsgMjQpOworCisjaWZkZWYgRFhfREVCVUcKKwkJcHJpbnRmKCJSb290IG5vZGUgZHVtcDpcbiIpOworCQlwcmludGYoIlx0IFJlc2VydmVkIHplcm86ICV1XG4iLCByb290LT5yZXNlcnZlZF96ZXJvKTsKKwkJcHJpbnRmKCJcdCBIYXNoIFZlcnNpb246ICVkXG4iLCByb290LT5oYXNoX3ZlcnNpb24pOworCQlwcmludGYoIlx0IEluZm8gbGVuZ3RoOiAlZFxuIiwgcm9vdC0+aW5mb19sZW5ndGgpOworCQlwcmludGYoIlx0IEluZGlyZWN0IGxldmVsczogJWRcbiIsIHJvb3QtPmluZGlyZWN0X2xldmVscyk7CisJCXByaW50ZigiXHQgRmxhZ3M6ICVkXG4iLCByb290LT51bnVzZWRfZmxhZ3MpOworI2VuZGlmCisKKwkJZW50ID0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopIChibG9ja19idWYgKyAyNCArIHJvb3QtPmluZm9fbGVuZ3RoKTsKKworCQlpZiAoZmFpbGVkX2NzdW0gJiYKKwkJICAgIChlMmZzY2tfZGlyX3dpbGxfYmVfcmVoYXNoZWQoY2QtPmN0eCwgY2QtPnBjdHguaW5vKSB8fAorCQkgICAgIGZpeF9wcm9ibGVtKGNkLT5jdHgsIFBSXzJfSFRSRUVfUk9PVF9DU1VNX0lOVkFMSUQsCisJCQkJJmNkLT5wY3R4KSkpCisJCQlnb3RvIGNsZWFyX2FuZF9leGl0OworCX0gZWxzZSB7CisJCWVudCA9IChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKSAoYmxvY2tfYnVmKzgpOworCisJCWlmIChmYWlsZWRfY3N1bSAmJgorCQkgICAgKGUyZnNja19kaXJfd2lsbF9iZV9yZWhhc2hlZChjZC0+Y3R4LCBjZC0+cGN0eC5pbm8pIHx8CisJCSAgICAgZml4X3Byb2JsZW0oY2QtPmN0eCwgUFJfMl9IVFJFRV9OT0RFX0NTVU1fSU5WQUxJRCwKKwkJCQkmY2QtPnBjdHgpKSkKKwkJCWdvdG8gY2xlYXJfYW5kX2V4aXQ7CisJfQorCisJbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSBlbnQ7CisKKyNpZmRlZiBEWF9ERUJVRworCXByaW50ZigiTnVtYmVyIG9mIGVudHJpZXMgKGNvdW50KTogJWRcbiIsCisJICAgICAgIGV4dDJmc19sZTE2X3RvX2NwdShsaW1pdC0+Y291bnQpKTsKKwlwcmludGYoIk51bWJlciBvZiBlbnRyaWVzIChsaW1pdCk6ICVkXG4iLAorCSAgICAgICBleHQyZnNfbGUxNl90b19jcHUobGltaXQtPmxpbWl0KSk7CisjZW5kaWYKKworCWNvdW50ID0gZXh0MmZzX2xlMTZfdG9fY3B1KGxpbWl0LT5jb3VudCk7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCWNzdW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKTsKKwlleHBlY3RfbGltaXQgPSAoZnMtPmJsb2Nrc2l6ZSAtCisJCQkoY3N1bV9zaXplICsgKChjaGFyICopIGVudCAtIGJsb2NrX2J1ZikpKSAvCisJCSAgICAgICBzaXplb2Yoc3RydWN0IGV4dDJfZHhfZW50cnkpOworCWlmIChleHQyZnNfbGUxNl90b19jcHUobGltaXQtPmxpbWl0KSAhPSBleHBlY3RfbGltaXQpIHsKKwkJY2QtPnBjdHgubnVtID0gZXh0MmZzX2xlMTZfdG9fY3B1KGxpbWl0LT5saW1pdCk7CisJCWlmIChmaXhfcHJvYmxlbShjZC0+Y3R4LCBQUl8yX0hUUkVFX0JBRF9MSU1JVCwgJmNkLT5wY3R4KSkKKwkJCWdvdG8gY2xlYXJfYW5kX2V4aXQ7CisJfQorCWlmIChjb3VudCA+IGV4cGVjdF9saW1pdCkgeworCQljZC0+cGN0eC5udW0gPSBjb3VudDsKKwkJaWYgKGZpeF9wcm9ibGVtKGNkLT5jdHgsIFBSXzJfSFRSRUVfQkFEX0NPVU5ULCAmY2QtPnBjdHgpKQorCQkJZ290byBjbGVhcl9hbmRfZXhpdDsKKwkJY291bnQgPSBleHBlY3RfbGltaXQ7CisJfQorCisJZm9yIChpPTA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXByZXZfaGFzaCA9IGhhc2g7CisJCWhhc2ggPSBpID8gKGV4dDJmc19sZTMyX3RvX2NwdShlbnRbaV0uaGFzaCkgJiB+MSkgOiAwOworI2lmZGVmIERYX0RFQlVHCisJCXByaW50ZigiRW50cnkgIyVkOiBIYXNoIDB4JTA4eCwgYmxvY2sgJXVcbiIsIGksCisJCSAgICAgICBoYXNoLCBleHQyZnNfbGUzMl90b19jcHUoZW50W2ldLmJsb2NrKSk7CisjZW5kaWYKKwkJYmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KGVudFtpXS5ibG9jaykgJiAweDBmZmZmZmY7CisJCS8qIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgYmxvY2sgaXMgdmFsaWQgKi8KKwkJaWYgKGJsayA+PSAoYmxrX3QpIGR4X2Rpci0+bnVtYmxvY2tzKSB7CisJCQljZC0+cGN0eC5ibGsgPSBibGs7CisJCQlpZiAoZml4X3Byb2JsZW0oY2QtPmN0eCwgUFJfMl9IVFJFRV9CQURCTEssCisJCQkJCSZjZC0+cGN0eCkpCisJCQkJZ290byBjbGVhcl9hbmRfZXhpdDsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChoYXNoIDwgcHJldl9oYXNoICYmCisJCSAgICBmaXhfcHJvYmxlbShjZC0+Y3R4LCBQUl8yX0hUUkVFX0hBU0hfT1JERVIsICZjZC0+cGN0eCkpCisJCQlnb3RvIGNsZWFyX2FuZF9leGl0OworCQlkeF9kYiA9ICZkeF9kaXItPmR4X2Jsb2NrW2Jsa107CisJCWlmIChkeF9kYi0+ZmxhZ3MgJiBEWF9GTEFHX1JFRkVSRU5DRUQpIHsKKwkJCWR4X2RiLT5mbGFncyB8PSBEWF9GTEFHX0RVUF9SRUY7CisJCX0gZWxzZSB7CisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19SRUZFUkVOQ0VEOworCQkJZHhfZGItPnBhcmVudCA9IGRiLT5ibG9ja2NudDsKKwkJfQorCQlpZiAoaGFzaCA8IG1pbl9oYXNoKQorCQkJbWluX2hhc2ggPSBoYXNoOworCQlpZiAoaGFzaCA+IG1heF9oYXNoKQorCQkJbWF4X2hhc2ggPSBoYXNoOworCQlkeF9kYi0+bm9kZV9taW5faGFzaCA9IGhhc2g7CisJCWlmICgoaSsxKSA8IGNvdW50KQorCQkJZHhfZGItPm5vZGVfbWF4X2hhc2ggPQorCQkJICBleHQyZnNfbGUzMl90b19jcHUoZW50W2krMV0uaGFzaCkgJiB+MTsKKwkJZWxzZSB7CisJCQlkeF9kYi0+bm9kZV9tYXhfaGFzaCA9IDB4ZmZmZmZmZmU7CisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19MQVNUOworCQl9CisJCWlmIChpID09IDApCisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19GSVJTVDsKKwl9CisjaWZkZWYgRFhfREVCVUcKKwlwcmludGYoIkJsb2NrY250ID0gJWQsIG1pbiBoYXNoIDB4JTA4eCwgbWF4IGhhc2ggMHglMDh4XG4iLAorCSAgICAgICBkYi0+YmxvY2tjbnQsIG1pbl9oYXNoLCBtYXhfaGFzaCk7CisjZW5kaWYKKwlkeF9kYiA9ICZkeF9kaXItPmR4X2Jsb2NrW2RiLT5ibG9ja2NudF07CisJZHhfZGItPm1pbl9oYXNoID0gbWluX2hhc2g7CisJZHhfZGItPm1heF9oYXNoID0gbWF4X2hhc2g7CisJcmV0dXJuOworCitjbGVhcl9hbmRfZXhpdDoKKwljbGVhcl9odHJlZShjZC0+Y3R4LCBjZC0+cGN0eC5pbm8pOworCWR4X2Rpci0+bnVtYmxvY2tzID0gMDsKKwllMmZzY2tfcmVoYXNoX2Rpcl9sYXRlcihjZC0+Y3R4LCBjZC0+cGN0eC5pbm8pOworfQorCisvKgorICogR2l2ZW4gYSBidXN0ZWQgZGlyZWN0b3J5LCB0cnkgdG8gc2FsdmFnZSBpdCBzb21laG93LgorICoKKyAqLworc3RhdGljIHZvaWQgc2FsdmFnZV9kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsCisJCQkgICAgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCSAgICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqcHJldiwKKwkJCSAgICAgIHVuc2lnbmVkIGludCAqb2Zmc2V0LAorCQkJICAgICAgdW5zaWduZWQgaW50IGJsb2NrX2xlbikKK3sKKwljaGFyCSpjcCA9IChjaGFyICopIGRpcmVudDsKKwlpbnQgbGVmdDsKKwl1bnNpZ25lZCBpbnQgcmVjX2xlbiwgcHJldl9yZWNfbGVuOworCXVuc2lnbmVkIGludCBuYW1lX2xlbjsKKworCS8qCisJICogSWYgdGhlIHNwYWNlIGxlZnQgZm9yIHRoZSBlbnRyeSBpcyB0b28gc21hbGwgdG8gYmUgYW4gZW50cnksCisJICogd2UgY2FuJ3QgYWNjZXNzIGRpcmVudCdzIGZpZWxkcywgc28gcGx1bWIgaW4gdGhlIHZhbHVlcyBuZWVkZWQKKwkgKiBzbyB0aGF0IHRoZSBwcmV2aW91cyBlbnRyeSBhYnNvcmJzIHRoaXMgb25lLgorCSAqLworCWlmIChibG9ja19sZW4gLSAqb2Zmc2V0IDwgRVhUMl9ESVJfRU5UUllfSEVBREVSX0xFTikgeworCQluYW1lX2xlbiA9IDA7CisJCXJlY19sZW4gPSBibG9ja19sZW4gLSAqb2Zmc2V0OworCX0gZWxzZSB7CisJCW5hbWVfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpOworCQkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXJlbnQsICZyZWNfbGVuKTsKKwl9CisJbGVmdCA9IGJsb2NrX2xlbiAtICpvZmZzZXQgLSByZWNfbGVuOworCisJLyoKKwkgKiBTcGVjaWFsIGNhc2Ugb2YgZGlyZWN0b3J5IGVudHJ5IG9mIHNpemUgODogY29weSB3aGF0J3MgbGVmdAorCSAqIG9mIHRoZSBkaXJlY3RvcnkgYmxvY2sgdXAgdG8gY292ZXIgdXAgdGhlIGludmFsaWQgaG9sZS4KKwkgKi8KKwlpZiAoKGxlZnQgPj0gMTIpICYmIChyZWNfbGVuID09IEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4pKSB7CisJCW1lbW1vdmUoY3AsIGNwK0VYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4sIGxlZnQpOworCQltZW1zZXQoY3AgKyBsZWZ0LCAwLCBFWFQyX0RJUl9FTlRSWV9IRUFERVJfTEVOKTsKKwkJcmV0dXJuOworCX0KKwkvKgorCSAqIElmIHRoZSBkaXJlY3RvcnkgZW50cnkgb3ZlcnJ1bnMgdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5CisJICogYmxvY2ssIGFuZCB0aGUgbmFtZSBpcyBzbWFsbCBlbm91Z2ggdG8gZml0LCB0aGVuIGFkanVzdCB0aGUKKwkgKiByZWNvcmQgbGVuZ3RoLgorCSAqLworCWlmICgobGVmdCA8IDApICYmCisJICAgICgoaW50KSByZWNfbGVuICsgbGVmdCA+IEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4pICYmCisJICAgICgoaW50KSBuYW1lX2xlbiArIEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4gPD0gKGludCkgcmVjX2xlbiArIGxlZnQpICYmCisJICAgIGRpcmVudC0+aW5vZGUgPD0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAmJgorCSAgICBzdHJubGVuKGRpcmVudC0+bmFtZSwgbmFtZV9sZW4pID09IG5hbWVfbGVuKSB7CisJCSh2b2lkKSBleHQyZnNfc2V0X3JlY19sZW4oZnMsIChpbnQpIHJlY19sZW4gKyBsZWZ0LCBkaXJlbnQpOworCQlyZXR1cm47CisJfQorCS8qCisJICogSWYgdGhlIHJlY29yZCBsZW5ndGggb2YgdGhlIGRpcmVjdG9yeSBlbnRyeSBpcyBhIG11bHRpcGxlCisJICogb2YgZm91ciwgYW5kIG5vdCB0b28gYmlnLCBzdWNoIHRoYXQgaXQgaXMgdmFsaWQsIGxldCB0aGUKKwkgKiBwcmV2aW91cyBkaXJlY3RvcnkgZW50cnkgYWJzb3JiIHRoZSBpbnZhbGlkIG9uZS4KKwkgKi8KKwlpZiAocHJldiAmJiByZWNfbGVuICYmIChyZWNfbGVuICUgNCkgPT0gMCAmJgorCSAgICAoKm9mZnNldCArIHJlY19sZW4gPD0gYmxvY2tfbGVuKSkgeworCQkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBwcmV2LCAmcHJldl9yZWNfbGVuKTsKKwkJcHJldl9yZWNfbGVuICs9IHJlY19sZW47CisJCSh2b2lkKSBleHQyZnNfc2V0X3JlY19sZW4oZnMsIHByZXZfcmVjX2xlbiwgcHJldik7CisJCSpvZmZzZXQgKz0gcmVjX2xlbjsKKwkJcmV0dXJuOworCX0KKwkvKgorCSAqIERlZmF1bHQgc2FsdmFnZSBtZXRob2QgLS0tIGtpbGwgYWxsIG9mIHRoZSBkaXJlY3RvcnkKKwkgKiBlbnRyaWVzIGZvciB0aGUgcmVzdCBvZiB0aGUgYmxvY2suICBXZSB3aWxsIGVpdGhlciB0cnkgdG8KKwkgKiBhYnNvcmIgaXQgaW50byB0aGUgcHJldmlvdXMgZGlyZWN0b3J5IGVudHJ5LCBvciBjcmVhdGUgYQorCSAqIG5ldyBlbXB0eSBkaXJlY3RvcnkgZW50cnkgdGhlIHJlc3Qgb2YgdGhlIGRpcmVjdG9yeSBibG9jay4KKwkgKi8KKwlpZiAocHJldikgeworCQkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBwcmV2LCAmcHJldl9yZWNfbGVuKTsKKwkJcHJldl9yZWNfbGVuICs9IGJsb2NrX2xlbiAtICpvZmZzZXQ7CisJCSh2b2lkKSBleHQyZnNfc2V0X3JlY19sZW4oZnMsIHByZXZfcmVjX2xlbiwgcHJldik7CisJCSpvZmZzZXQgPSBmcy0+YmxvY2tzaXplOworCX0gZWxzZSB7CisJCXJlY19sZW4gPSBibG9ja19sZW4gLSAqb2Zmc2V0OworCQkodm9pZCkgZXh0MmZzX3NldF9yZWNfbGVuKGZzLCByZWNfbGVuLCBkaXJlbnQpOworCQlleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbihkaXJlbnQsIDApOworCQlleHQyZnNfZGlyZW50X3NldF9maWxlX3R5cGUoZGlyZW50LCBFWFQyX0ZUX1VOS05PV04pOworCQlkaXJlbnQtPmlub2RlID0gMDsKKwl9Cit9CisKKyNkZWZpbmUgTkVYVF9ESVJFTlQoZCkJKCh2b2lkICopKChjaGFyICopKGQpICsgKGQpLT5yZWNfbGVuKSkKK3N0YXRpYyBlcnJjb2RlX3QgaW5zZXJ0X2RpcmVudF90YWlsKGV4dDJfZmlsc3lzIGZzLCB2b2lkICpkaXJidWYpCit7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkOworCXZvaWQgKnRvcDsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCAqdDsKKworCWQgPSBkaXJidWY7CisJdG9wID0gRVhUMl9ESVJFTlRfVEFJTChkaXJidWYsIGZzLT5ibG9ja3NpemUpOworCisJd2hpbGUgKGQtPnJlY19sZW4gJiYgIShkLT5yZWNfbGVuICYgMHgzKSAmJiBORVhUX0RJUkVOVChkKSA8PSB0b3ApCisJCWQgPSBORVhUX0RJUkVOVChkKTsKKworCWlmIChkICE9IHRvcCkgeworCQl1bnNpZ25lZCBpbnQgbWluX3NpemUgPSBFWFQyX0RJUl9SRUNfTEVOKAorCQkJCWV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyYnVmKSk7CisJCWlmIChtaW5fc2l6ZSA+IChjaGFyICopdG9wIC0gKGNoYXIgKilkKQorCQkJcmV0dXJuIEVYVDJfRVRfRElSX05PX1NQQUNFX0ZPUl9DU1VNOworCQlkLT5yZWNfbGVuID0gKGNoYXIgKil0b3AgLSAoY2hhciAqKWQ7CisJfQorCisJdCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCAqKXRvcDsKKwlpZiAodC0+ZGV0X3Jlc2VydmVkX3plcm8xIHx8CisJICAgIHQtPmRldF9yZWNfbGVuICE9IHNpemVvZihzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCkgfHwKKwkgICAgdC0+ZGV0X3Jlc2VydmVkX25hbWVfbGVuICE9IEVYVDJfRElSX05BTUVfTEVOX0NTVU0pCisJCWV4dDJmc19pbml0aWFsaXplX2RpcmVudF90YWlsKGZzLCB0KTsKKworCXJldHVybiAwOworfQorI3VuZGVmIE5FWFRfRElSRU5UCisKK3N0YXRpYyBlcnJjb2RlX3QgZml4X2lubGluZV9kaXJfc2l6ZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICAgc2l6ZV90ICppbmxpbmVfZGF0YV9zaXplLAorCQkJCSAgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCwKKwkJCQkgICAgIGNoYXIgKmJ1ZikKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJc2l6ZV90IG5ld19zaXplLCBvbGRfc2l6ZTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJb2xkX3NpemUgPSAqaW5saW5lX2RhdGFfc2l6ZTsKKwkvKgorCSAqIElmIHRoZXJlJ3Mgbm90IGVub3VnaCBieXRlcyB0byBzdGFydCB0aGUgInNlY29uZCIgZGlyIGJsb2NrCisJICogKGluIHRoZSBFQSBzcGFjZSkgdGhlbiB0cnVuY2F0ZSBldmVyeXRoaW5nIHRvIHRoZSBmaXJzdCBibG9jay4KKwkgKi8KKwlpZiAob2xkX3NpemUgPiBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFICYmCisJICAgIG9sZF9zaXplIDwgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSArCisJCSAgICAgICBFWFQyX0RJUl9SRUNfTEVOKDEpKSB7CisJCW9sZF9zaXplID0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRTsKKwkJbmV3X3NpemUgPSBvbGRfc2l6ZTsKKwl9IGVsc2UKKwkJLyogSW5jcmVhc2UgdG8gdGhlIG5leHQgZm91ci1ieXRlIGJvdW5kYXJ5IGZvciBzYWx2YWdpbmcgKi8KKwkJbmV3X3NpemUgPSBvbGRfc2l6ZSArICg0IC0gKG9sZF9zaXplICYgMykpOworCW1lbXNldChidWYgKyBvbGRfc2l6ZSwgMCwgbmV3X3NpemUgLSBvbGRfc2l6ZSk7CisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX3NldChmcywgaW5vLCAwLCBidWYsIG5ld19zaXplKTsKKwlpZiAocmV0dmFsID09IEVYVDJfRVRfSU5MSU5FX0RBVEFfTk9fU1BBQ0UpIHsKKwkJLyogT3Igd2UgY2FuJ3QsIHNvIHRydW5jYXRlLiAqLworCQluZXdfc2l6ZSAtPSA0OworCQlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfc2V0KGZzLCBpbm8sIDAsIGJ1ZiwgbmV3X3NpemUpOworCQlpZiAocmV0dmFsKSB7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8yX0ZJWF9JTkxJTkVfRElSX0ZBSUxFRCwKKwkJCQkJcGN0eCkpIHsKKwkJCQluZXdfc2l6ZSA9IDA7CisJCQkJZ290byB3cml0ZV9pbm9kZTsKKwkJCX0KKwkJCWdvdG8gZXJyOworCQl9CisJfSBlbHNlIGlmIChyZXR2YWwpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GSVhfSU5MSU5FX0RJUl9GQUlMRUQsCisJCQkJcGN0eCkpIHsKKwkJCW5ld19zaXplID0gMDsKKwkJCWdvdG8gd3JpdGVfaW5vZGU7CisJCX0KKwkJZ290byBlcnI7CisJfQorCit3cml0ZV9pbm9kZToKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCisJcmV0dmFsID0gZXh0MmZzX2lub2RlX3NpemVfc2V0KGZzLCAmaW5vZGUsIG5ld19zaXplKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKwlpZiAobmV3X3NpemUgPT0gMCkKKwkJaW5vZGUuaV9mbGFncyAmPSB+RVhUNF9JTkxJTkVfREFUQV9GTDsKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKwkqaW5saW5lX2RhdGFfc2l6ZSA9IG5ld19zaXplOworCitlcnI6CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBjaGVja19kaXJfYmxvY2syKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYiwKKwkJCSAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlpbnQgZXJyOworCXN0cnVjdCBjaGVja19kaXJfc3RydWN0ICpjZCA9IHByaXZfZGF0YTsKKworCWlmIChjZC0+cmFfZW50cmllcyAmJiBjZC0+bGlzdF9vZmZzZXQgPj0gY2QtPm5leHRfcmFfb2ZmKSB7CisJCWVyciA9IGUyZnNja19yZWFkYWhlYWRfZGJsaXN0KGZzLAorCQkJCQlFMkZTQ0tfUkFfREJMSVNUX0lHTk9SRV9CTE9DS0NOVCwKKwkJCQkJZnMtPmRibGlzdCwKKwkJCQkJY2QtPmxpc3Rfb2Zmc2V0ICsgY2QtPnJhX2VudHJpZXMgLyA4LAorCQkJCQljZC0+cmFfZW50cmllcyk7CisJCWlmIChlcnIpCisJCQljZC0+cmFfZW50cmllcyA9IDA7CisJCWNkLT5uZXh0X3JhX29mZiA9IGNkLT5saXN0X29mZnNldCArIChjZC0+cmFfZW50cmllcyAqIDcgLyA4KTsKKwl9CisKKwllcnIgPSBjaGVja19kaXJfYmxvY2soZnMsIGRiLCBwcml2X2RhdGEpOworCWNkLT5saXN0X29mZnNldCsrOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYiwKKwkJCSAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKyAJc3RydWN0IGR4X2Rpcl9pbmZvCSpkeF9kaXI7CisJc3RydWN0IGR4X2RpcmJsb2NrX2luZm8JKmR4X2RiID0gMDsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgCSpkaXJlbnQsICpwcmV2LCBkb3QsIGRvdGRvdDsKKwlleHQyX2Rpcmhhc2hfdAkJaGFzaDsKKwl1bnNpZ25lZCBpbnQJCW9mZnNldCA9IDA7CisJaW50CQkJZGlyX21vZGlmaWVkID0gMDsKKwlpbnQJCQlkb3Rfc3RhdGU7CisJdW5zaWduZWQgaW50CQlyZWNfbGVuOworCWJsazY0X3QJCQlibG9ja19uciA9IGRiLT5ibGs7CisJZXh0Ml9pbm9fdCAJCWlubyA9IGRiLT5pbm87CisJZXh0Ml9pbm9fdCAJCXN1YmRpcl9wYXJlbnQ7CisJX191MTYJCQlsaW5rczsKKwlzdHJ1Y3QgY2hlY2tfZGlyX3N0cnVjdAkqY2Q7CisJY2hhcgkJCSpidWYsICppYnVmOworCWUyZnNja190CQljdHg7CisJcHJvYmxlbV90CQlwcm9ibGVtOworCXN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAqcm9vdDsKKwlzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICpsaW1pdDsKKwlzdGF0aWMgZGljdF90IGRlX2RpY3Q7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCWludAlkdXBzX2ZvdW5kID0gMDsKKwlpbnQJcmV0OworCWludAlkeF9jc3VtX3NpemUgPSAwLCBkZV9jc3VtX3NpemUgPSAwOworCWludAlmYWlsZWRfY3N1bSA9IDA7CisJaW50CWlzX2xlYWYgPSAxOworCXNpemVfdAlpbmxpbmVfZGF0YV9zaXplID0gMDsKKwlpbnQJZmlsZXR5cGUgPSAwOworCWludAllbmNyeXB0ZWQgPSAwOworCXNpemVfdAltYXhfYmxvY2tfc2l6ZTsKKworCWNkID0gKHN0cnVjdCBjaGVja19kaXJfc3RydWN0ICopIHByaXZfZGF0YTsKKwlpYnVmID0gYnVmID0gY2QtPmJ1ZjsKKwljdHggPSBjZC0+Y3R4OworCisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19SVU5fUkVUVVJOKQorCQlyZXR1cm4gRElSRU5UX0FCT1JUOworCisJaWYgKGN0eC0+cHJvZ3Jlc3MgJiYgKGN0eC0+cHJvZ3Jlc3MpKGN0eCwgMiwgY2QtPmNvdW50KyssIGNkLT5tYXgpKQorCQlyZXR1cm4gRElSRU5UX0FCT1JUOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpIHsKKwkJZHhfY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2R4X3RhaWwpOworCQlkZV9jc3VtX3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwpOworCX0KKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZmlsZXR5cGUoZnMtPnN1cGVyKSkKKwkJZmlsZXR5cGUgPSBFWFQyX0ZUX0RJUiA8PCA4OworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGlub2RlIGlzIHN0aWxsIGluIHVzZSAoY291bGQgaGF2ZSBiZWVuCisJICogZGVsZXRlZCBpbiB0aGUgZHVwbGljYXRlL2JhZCBibG9ja3MgcGFzcy4KKwkgKi8KKwlpZiAoIShleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGlubykpKQorCQlyZXR1cm4gMDsKKworCWNkLT5wY3R4LmlubyA9IGlubzsKKwljZC0+cGN0eC5ibGsgPSBibG9ja19ucjsKKwljZC0+cGN0eC5ibGtjb3VudCA9IGRiLT5ibG9ja2NudDsKKwljZC0+cGN0eC5pbm8yID0gMDsKKwljZC0+cGN0eC5kaXJlbnQgPSAwOworCWNkLT5wY3R4Lm51bSA9IDA7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2lubGluZV9kYXRhKGZzLT5zdXBlcikpIHsKKwkJZXJyY29kZV90IGVjOworCisJCWVjID0gZXh0MmZzX2lubGluZV9kYXRhX3NpemUoZnMsIGlubywgJmlubGluZV9kYXRhX3NpemUpOworCQlpZiAoZWMgJiYgZWMgIT0gRVhUMl9FVF9OT19JTkxJTkVfREFUQSkKKwkJCXJldHVybiBESVJFTlRfQUJPUlQ7CisJfQorCisJaWYgKGRiLT5ibGsgPT0gMCAmJiAhaW5saW5lX2RhdGFfc2l6ZSkgeworCQlpZiAoYWxsb2NhdGVfZGlyX2Jsb2NrKGN0eCwgZGIsIGJ1ZiwgJmNkLT5wY3R4KSkKKwkJCXJldHVybiAwOworCQlibG9ja19uciA9IGRiLT5ibGs7CisJfQorCisJaWYgKGRiLT5ibG9ja2NudCkKKwkJZG90X3N0YXRlID0gMjsKKwllbHNlCisJCWRvdF9zdGF0ZSA9IDA7CisKKwlpZiAoY3R4LT5kaXJzX3RvX2hhc2ggJiYKKwkgICAgZXh0MmZzX3UzMl9saXN0X3Rlc3QoY3R4LT5kaXJzX3RvX2hhc2gsIGlubykpCisJCWR1cHNfZm91bmQrKzsKKworI2lmIDAKKwlwcmludGYoIkluIHByb2Nlc3NfZGlyX2Jsb2NrIGJsb2NrICVsdSwgIyVkLCBpbm9kZSAlbHVcbiIsIGJsb2NrX25yLAorCSAgICAgICBkYi0+YmxvY2tjbnQsIGlubyk7CisjZW5kaWYKKworCWVoYW5kbGVyX29wZXJhdGlvbihfKCJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIpKTsKKwlpZiAoaW5saW5lX2RhdGFfc2l6ZSkgeworCQltZW1zZXQoYnVmLCAwLCBmcy0+YmxvY2tzaXplIC0gaW5saW5lX2RhdGFfc2l6ZSk7CisJCWNkLT5wY3R4LmVycmNvZGUgPSBleHQyZnNfaW5saW5lX2RhdGFfZ2V0KGZzLCBpbm8sIDAsIGJ1ZiwgMCk7CisJCWlmIChjZC0+cGN0eC5lcnJjb2RlKQorCQkJZ290byBpbmxpbmVfcmVhZF9mYWlsOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQlpZiAoZGItPmJsb2NrY250KQorCQkJZ290byBza2lwX2ZpcnN0X3JlYWRfc3dhYjsKKwkJKigoX191MzIgKilidWYpID0gZXh0MmZzX2xlMzJfdG9fY3B1KCooKF9fdTMyICopYnVmKSk7CisJCWNkLT5wY3R4LmVycmNvZGUgPSBleHQyZnNfZGlyZW50X3N3YWJfaW4yKGZzLAorCQkJCWJ1ZiArIEVYVDRfSU5MSU5FX0RBVEFfRE9URE9UX1NJWkUsCisJCQkJRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSAtIEVYVDRfSU5MSU5FX0RBVEFfRE9URE9UX1NJWkUsCisJCQkJMCk7CisJCWlmIChjZC0+cGN0eC5lcnJjb2RlKQorCQkJZ290byBpbmxpbmVfcmVhZF9mYWlsOworc2tpcF9maXJzdF9yZWFkX3N3YWI6CisJCWlmIChpbmxpbmVfZGF0YV9zaXplIDw9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgfHwKKwkJICAgICFkYi0+YmxvY2tjbnQpCisJCQlnb3RvIGlubGluZV9yZWFkX2ZhaWw7CisJCWNkLT5wY3R4LmVycmNvZGUgPSBleHQyZnNfZGlyZW50X3N3YWJfaW4yKGZzLAorCQkJCWJ1ZiArIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUsCisJCQkJaW5saW5lX2RhdGFfc2l6ZSAtIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUsCisJCQkJMCk7CisjZW5kaWYKKwl9IGVsc2UKKwkJY2QtPnBjdHguZXJyY29kZSA9IGV4dDJmc19yZWFkX2Rpcl9ibG9jazQoZnMsIGJsb2NrX25yLAorCQkJCQkJCSAgYnVmLCAwLCBpbm8pOworaW5saW5lX3JlYWRfZmFpbDoKKwlwY3R4LmlubyA9IGlubzsKKwlwY3R4Lm51bSA9IGlubGluZV9kYXRhX3NpemU7CisJaWYgKCgoaW5saW5lX2RhdGFfc2l6ZSAmIDMpIHx8CisJICAgICAoaW5saW5lX2RhdGFfc2l6ZSA+IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgJiYKKwkgICAgICBpbmxpbmVfZGF0YV9zaXplIDwgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSArCisJCQkJIEVYVDJfRElSX1JFQ19MRU4oMSkpKSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzJfQkFEX0lOTElORV9ESVJfU0laRSwgJnBjdHgpKSB7CisJCWVycmNvZGVfdCBlcnIgPSBmaXhfaW5saW5lX2Rpcl9zaXplKGN0eCwgaW5vLAorCQkJCQkJICAgICZpbmxpbmVfZGF0YV9zaXplLCAmcGN0eCwKKwkJCQkJCSAgICBidWYpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKworCX0KKwllaGFuZGxlcl9vcGVyYXRpb24oMCk7CisJaWYgKGNkLT5wY3R4LmVycmNvZGUgPT0gRVhUMl9FVF9ESVJfQ09SUlVQVEVEKQorCQljZC0+cGN0eC5lcnJjb2RlID0gMDsgLyogV2UnbGwgaGFuZGxlIHRoaXMgb3Vyc2VsdmVzICovCisJZWxzZSBpZiAoY2QtPnBjdHguZXJyY29kZSA9PSBFWFQyX0VUX0RJUl9DU1VNX0lOVkFMSUQpIHsKKwkJY2QtPnBjdHguZXJyY29kZSA9IDA7IC8qIFdlJ2xsIGhhbmRsZSB0aGlzIG91cnNlbHZlcyAqLworCQlmYWlsZWRfY3N1bSA9IDE7CisJfQorCWlmIChjZC0+cGN0eC5lcnJjb2RlKSB7CisJCWNoYXIgKmJ1ZjI7CisJCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8yX1JFQURfRElSQkxPQ0ssICZjZC0+cGN0eCkpIHsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQlyZXR1cm4gRElSRU5UX0FCT1JUOworCQl9CisJCWV4dDJmc19uZXdfZGlyX2Jsb2NrKGZzLCBkYi0+YmxvY2tjbnQgPT0gMCA/IGlubyA6IDAsCisJCQkJICAgICBFWFQyX1JPT1RfSU5PLCAmYnVmMik7CisJCW1lbWNweShidWYsIGJ1ZjIsIGZzLT5ibG9ja3NpemUpOworCQlleHQyZnNfZnJlZV9tZW0oJmJ1ZjIpOworCX0KKwlkeF9kaXIgPSBlMmZzY2tfZ2V0X2R4X2Rpcl9pbmZvKGN0eCwgaW5vKTsKKwlpZiAoZHhfZGlyICYmIGR4X2Rpci0+bnVtYmxvY2tzKSB7CisJCWlmIChkYi0+YmxvY2tjbnQgPj0gZHhfZGlyLT5udW1ibG9ja3MpIHsKKwkJCXBjdHguZGlyID0gaW5vOworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9VTkVYUEVDVEVEX0hUUkVFX0JMT0NLLAorCQkJCQkmcGN0eCkpIHsKKwkJCQljbGVhcl9odHJlZShjdHgsIGlubyk7CisJCQkJZHhfZGlyLT5udW1ibG9ja3MgPSAwOworCQkJCWR4X2RiID0gMDsKKwkJCQlnb3RvIG91dF9odHJlZTsKKwkJCX0KKwkJCWZhdGFsX2Vycm9yKGN0eCwgXygiQ2FuIG5vdCBjb250aW51ZS4iKSk7CisJCX0KKwkJZHhfZGIgPSAmZHhfZGlyLT5keF9ibG9ja1tkYi0+YmxvY2tjbnRdOworCQlkeF9kYi0+dHlwZSA9IERYX0RJUkJMT0NLX0xFQUY7CisJCWR4X2RiLT5waHlzID0gYmxvY2tfbnI7CisJCWR4X2RiLT5taW5faGFzaCA9IH4wOworCQlkeF9kYi0+bWF4X2hhc2ggPSAwOworCisJCWRpcmVudCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikgYnVmOworCQkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXJlbnQsICZyZWNfbGVuKTsKKwkJbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSAoYnVmKzgpOworCQlpZiAoZGItPmJsb2NrY250ID09IDApIHsKKwkJCXJvb3QgPSAoc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICopIChidWYgKyAyNCk7CisJCQlkeF9kYi0+dHlwZSA9IERYX0RJUkJMT0NLX1JPT1Q7CisJCQlkeF9kYi0+ZmxhZ3MgfD0gRFhfRkxBR19GSVJTVCB8IERYX0ZMQUdfTEFTVDsKKwkJCWlmICgocm9vdC0+cmVzZXJ2ZWRfemVybyB8fAorCQkJICAgICByb290LT5pbmZvX2xlbmd0aCA8IDggfHwKKwkJCSAgICAgcm9vdC0+aW5kaXJlY3RfbGV2ZWxzID4gMSkgJiYKKwkJCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzJfSFRSRUVfQkFEX1JPT1QsICZjZC0+cGN0eCkpIHsKKwkJCQljbGVhcl9odHJlZShjdHgsIGlubyk7CisJCQkJZHhfZGlyLT5udW1ibG9ja3MgPSAwOworCQkJCWR4X2RiID0gMDsKKwkJCX0KKwkJCWR4X2Rpci0+aGFzaHZlcnNpb24gPSByb290LT5oYXNoX3ZlcnNpb247CisJCQlpZiAoKGR4X2Rpci0+aGFzaHZlcnNpb24gPD0gRVhUMl9IQVNIX1RFQSkgJiYKKwkJCSAgICAoZnMtPnN1cGVyLT5zX2ZsYWdzICYgRVhUMl9GTEFHU19VTlNJR05FRF9IQVNIKSkKKwkJCQlkeF9kaXItPmhhc2h2ZXJzaW9uICs9IDM7CisJCQlkeF9kaXItPmRlcHRoID0gcm9vdC0+aW5kaXJlY3RfbGV2ZWxzICsgMTsKKwkJfSBlbHNlIGlmICgoZGlyZW50LT5pbm9kZSA9PSAwKSAmJgorCQkJICAgKHJlY19sZW4gPT0gZnMtPmJsb2Nrc2l6ZSkgJiYKKwkJCSAgIChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgPT0gMCkgJiYKKwkJCSAgIChleHQyZnNfbGUxNl90b19jcHUobGltaXQtPmxpbWl0KSA9PQorCQkJICAgICgoZnMtPmJsb2Nrc2l6ZSAtICg4ICsgZHhfY3N1bV9zaXplKSkgLworCQkJICAgICBzaXplb2Yoc3RydWN0IGV4dDJfZHhfZW50cnkpKSkpCisJCQlkeF9kYi0+dHlwZSA9IERYX0RJUkJMT0NLX05PREU7CisJCWlzX2xlYWYgPSAoZHhfZGItPnR5cGUgPT0gRFhfRElSQkxPQ0tfTEVBRik7CisJfQorb3V0X2h0cmVlOgorCisJLyogTGVhZiBub2RlIHdpdGggbm8gc3BhY2UgZm9yIGNzdW0/ICBSZWJ1aWxkIGRpcnMgaW4gcGFzcyAzQS4gKi8KKwlpZiAoaXNfbGVhZiAmJiAhaW5saW5lX2RhdGFfc2l6ZSAmJiBmYWlsZWRfY3N1bSAmJgorCSAgICAhZXh0MmZzX2RpcmVudF9oYXNfdGFpbChmcywgKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKWJ1ZikpIHsKKwkJZGVfY3N1bV9zaXplID0gMDsKKwkJaWYgKGUyZnNja19kaXJfd2lsbF9iZV9yZWhhc2hlZChjdHgsIGlubykpIHsKKwkJCWZhaWxlZF9jc3VtID0gMDsKKwkJCWdvdG8gc2tpcF9jaGVja3N1bTsKKwkJfQorCQlpZiAoIWZpeF9wcm9ibGVtKGNkLT5jdHgsIFBSXzJfTEVBRl9OT0RFX01JU1NJTkdfQ1NVTSwKKwkJCQkgJmNkLT5wY3R4KSkKKwkJCWdvdG8gc2tpcF9jaGVja3N1bTsKKwkJZTJmc2NrX3JlaGFzaF9kaXJfbGF0ZXIoY3R4LCBpbm8pOworCQlmYWlsZWRfY3N1bSA9IDA7CisJCWdvdG8gc2tpcF9jaGVja3N1bTsKKwl9CisJLyogaHRyZWUgbm9kZXMgZG9uJ3QgdXNlIGZha2UgZGlyZW50cyB0byBzdG9yZSBjaGVja3N1bXMgKi8KKwlpZiAoIWlzX2xlYWYpCisJCWRlX2NzdW1fc2l6ZSA9IDA7CisKK3NraXBfY2hlY2tzdW06CisJaWYgKGlubGluZV9kYXRhX3NpemUpIHsKKwkJaWYgKGRiLT5ibG9ja2NudCkgeworCQkJYnVmICs9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkU7CisJCQltYXhfYmxvY2tfc2l6ZSA9IGlubGluZV9kYXRhX3NpemUgLSBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFOworCQkJLyogWmVyby1sZW5ndGggc2Vjb25kIGJsb2NrLCBqdXN0IGV4aXQgKi8KKwkJCWlmIChtYXhfYmxvY2tfc2l6ZSA9PSAwKQorCQkJCXJldHVybiAwOworCQl9IGVsc2UgeworCQkJbWF4X2Jsb2NrX3NpemUgPSBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFOworCQl9CisJfSBlbHNlCisJCW1heF9ibG9ja19zaXplID0gZnMtPmJsb2Nrc2l6ZSAtIGRlX2NzdW1fc2l6ZTsKKworCWlmIChjdHgtPmVuY3J5cHRlZF9kaXJzKQorCQllbmNyeXB0ZWQgPSBleHQyZnNfdTMyX2xpc3RfdGVzdChjdHgtPmVuY3J5cHRlZF9kaXJzLCBpbm8pOworCisJZGljdF9pbml0KCZkZV9kaWN0LCBESUNUQ09VTlRfVF9NQVgsIGRpY3RfZGVfY21wKTsKKwlwcmV2ID0gMDsKKwlkbyB7CisJCWRncnBfdCBncm91cDsKKwkJZXh0Ml9pbm9fdCBmaXJzdF91bnVzZWRfaW5vZGU7CisJCXVuc2lnbmVkIGludCBuYW1lX2xlbjsKKworCQlwcm9ibGVtID0gMDsKKwkJaWYgKCFpbmxpbmVfZGF0YV9zaXplIHx8IGRvdF9zdGF0ZSA+IDEpIHsKKwkJCWRpcmVudCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikgKGJ1ZiArIG9mZnNldCk7CisJCQkvKgorCQkJICogSWYgdGhlcmUncyBub3QgZXZlbiBzcGFjZSBmb3IgdGhlIGVudHJ5IGhlYWRlciwKKwkJCSAqIGZvcmNlIHNhbHZhZ2luZyB0aGlzIGRpci4KKwkJCSAqLworCQkJaWYgKG1heF9ibG9ja19zaXplIC0gb2Zmc2V0IDwgRVhUMl9ESVJfRU5UUllfSEVBREVSX0xFTikKKwkJCQlyZWNfbGVuID0gRVhUMl9ESVJfUkVDX0xFTigxKTsKKwkJCWVsc2UKKwkJCQkodm9pZCkgZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXJlbnQsICZyZWNfbGVuKTsKKwkJCWNkLT5wY3R4LmRpcmVudCA9IGRpcmVudDsKKwkJCWNkLT5wY3R4Lm51bSA9IG9mZnNldDsKKwkJCWlmICgob2Zmc2V0ICsgcmVjX2xlbiA+IG1heF9ibG9ja19zaXplKSB8fAorCQkJICAgIChyZWNfbGVuIDwgMTIpIHx8CisJCQkgICAgKChyZWNfbGVuICUgNCkgIT0gMCkgfHwKKwkJCSAgICAoKCh1bnNpZ25lZCkgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpICsgRVhUMl9ESVJfRU5UUllfSEVBREVSX0xFTikgPiByZWNfbGVuKSkgeworCQkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfRElSX0NPUlJVUFRFRCwKKwkJCQkJCSZjZC0+cGN0eCkpIHsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJCQkJLyoKKwkJCQkJICogT24gYmlnLWVuZGlhbiBzeXN0ZW1zLCBpZiB0aGUgZGlyZW50CisJCQkJCSAqIHN3YXAgcm91dGluZSBmaW5kcyBhIHJlY19sZW4gdGhhdCBpdAorCQkJCQkgKiBkb2Vzbid0IGxpa2UsIGl0IGNvbnRpbnVlcworCQkJCQkgKiBwcm9jZXNzaW5nIHRoZSBibG9jayBhcyBpZiByZWNfbGVuCisJCQkJCSAqID09IEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4uICBUaGlzIG1lYW5zIHRoYXQgdGhlIG5hbWUKKwkJCQkJICogZmllbGQgZ2V0cyBieXRlIHN3YXBwZWQsIHdoaWNoIG1lYW5zCisJCQkJCSAqIHRoYXQgc2FsdmFnZSB3aWxsIG5vdCBkZXRlY3QgdGhlCisJCQkJCSAqIGNvcnJlY3QgbmFtZSBsZW5ndGggKHVubGVzcyB0aGUgbmFtZQorCQkJCQkgKiBoYXMgYSBsZW5ndGggdGhhdCdzIGFuIGV4YWN0CisJCQkJCSAqIG11bHRpcGxlIG9mIGZvdXIgYnl0ZXMpLCBhbmQgaXQnbGwKKwkJCQkJICogZGlzY2FyZCB0aGUgZW50cnkgKHVubmVjZXNzYXJpbHkpCisJCQkJCSAqIGFuZCB0aGUgcmVzdCBvZiB0aGUgZGlyZW50IGJsb2NrLgorCQkJCQkgKiBUaGVyZWZvcmUsIHN3YXAgdGhlIHJlc3Qgb2YgdGhlCisJCQkJCSAqIGJsb2NrIGJhY2sgdG8gZGlzayBvcmRlciwgcnVuCisJCQkJCSAqIHNhbHZhZ2UsIGFuZCByZS1zd2FwIGFueXRoaW5nIGFmdGVyCisJCQkJCSAqIHRoZSBzYWx2YWdlZCBkaXJlbnQuCisJCQkJCSAqLworCQkJCQlpbnQgbmVlZF9yZXN3YWIgPSAwOworCQkJCQlpZiAocmVjX2xlbiA8IEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4gfHwgcmVjX2xlbiAlIDQpIHsKKwkJCQkJCW5lZWRfcmVzd2FiID0gMTsKKwkJCQkJCWV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZnMsCisJCQkJCQkJKChjaGFyICopZGlyZW50KSArIEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4sCisJCQkJCQkJbWF4X2Jsb2NrX3NpemUgLSBvZmZzZXQgLSBFWFQyX0RJUl9FTlRSWV9IRUFERVJfTEVOLAorCQkJCQkJCTApOworCQkJCQl9CisjZW5kaWYKKwkJCQkJc2FsdmFnZV9kaXJlY3RvcnkoZnMsIGRpcmVudCwgcHJldiwKKwkJCQkJCQkgICZvZmZzZXQsCisJCQkJCQkJICBtYXhfYmxvY2tfc2l6ZSk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCQkJCWlmIChuZWVkX3Jlc3dhYikgeworCQkJCQkJKHZvaWQpIGV4dDJmc19nZXRfcmVjX2xlbihmcywKKwkJCQkJCQlkaXJlbnQsICZyZWNfbGVuKTsKKwkJCQkJCWV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZnMsCisJCQkJCQkJKChjaGFyICopZGlyZW50KSArIG9mZnNldCArIHJlY19sZW4sCisJCQkJCQkJbWF4X2Jsb2NrX3NpemUgLSBvZmZzZXQgLSByZWNfbGVuLAorCQkJCQkJCTApOworCQkJCQl9CisjZW5kaWYKKwkJCQkJZGlyX21vZGlmaWVkKys7CisJCQkJCWNvbnRpbnVlOworCQkJCX0gZWxzZQorCQkJCQlnb3RvIGFib3J0X2ZyZWVfZGljdDsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChkb3Rfc3RhdGUgPT0gMCkgeworCQkJCW1lbXNldCgmZG90LCAwLCBzaXplb2YoZG90KSk7CisJCQkJZGlyZW50ID0gJmRvdDsKKwkJCQlkaXJlbnQtPmlub2RlID0gaW5vOworCQkJCWRpcmVudC0+cmVjX2xlbiA9IEVYVDJfRElSX1JFQ19MRU4oMSk7CisJCQkJZGlyZW50LT5uYW1lX2xlbiA9IDEgfCBmaWxldHlwZTsKKwkJCQlkaXJlbnQtPm5hbWVbMF0gPSAnLic7CisJCQl9IGVsc2UgaWYgKGRvdF9zdGF0ZSA9PSAxKSB7CisJCQkJbWVtc2V0KCZkb3Rkb3QsIDAsIHNpemVvZihkb3Rkb3QpKTsKKwkJCQlkaXJlbnQgPSAmZG90ZG90OworCQkJCWRpcmVudC0+aW5vZGUgPQorCQkJCQkoKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKWJ1ZiktPmlub2RlOworCQkJCWRpcmVudC0+cmVjX2xlbiA9IEVYVDJfRElSX1JFQ19MRU4oMik7CisJCQkJZGlyZW50LT5uYW1lX2xlbiA9IDIgfCBmaWxldHlwZTsKKwkJCQlkaXJlbnQtPm5hbWVbMF0gPSAnLic7CisJCQkJZGlyZW50LT5uYW1lWzFdID0gJy4nOworCQkJfSBlbHNlIHsKKwkJCQlmYXRhbF9lcnJvcihjdHgsIF8oIkNhbiBub3QgY29udGludWUuIikpOworCQkJfQorCQkJY2QtPnBjdHguZGlyZW50ID0gZGlyZW50OworCQkJY2QtPnBjdHgubnVtID0gb2Zmc2V0OworCQl9CisKKwkJaWYgKGRvdF9zdGF0ZSA9PSAwKSB7CisJCQlpZiAoY2hlY2tfZG90KGN0eCwgZGlyZW50LCBpbm8sICZjZC0+cGN0eCkpCisJCQkJZGlyX21vZGlmaWVkKys7CisJCX0gZWxzZSBpZiAoZG90X3N0YXRlID09IDEpIHsKKwkJCXJldCA9IGNoZWNrX2RvdGRvdChjdHgsIGRpcmVudCwgaW5vLCAmY2QtPnBjdHgpOworCQkJaWYgKHJldCA8IDApCisJCQkJZ290byBhYm9ydF9mcmVlX2RpY3Q7CisJCQlpZiAocmV0KQorCQkJCWRpcl9tb2RpZmllZCsrOworCQl9IGVsc2UgaWYgKGRpcmVudC0+aW5vZGUgPT0gaW5vKSB7CisJCQlwcm9ibGVtID0gUFJfMl9MSU5LX0RPVDsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfTElOS19ET1QsICZjZC0+cGN0eCkpIHsKKwkJCQlkaXJlbnQtPmlub2RlID0gMDsKKwkJCQlkaXJfbW9kaWZpZWQrKzsKKwkJCQlnb3RvIG5leHQ7CisJCQl9CisJCX0KKwkJaWYgKCFkaXJlbnQtPmlub2RlKQorCQkJZ290byBuZXh0OworCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgaW5vZGUgbGlzdGVkIGlzIGEgbGVnYWwgb25lLgorCQkgKi8KKwkJbmFtZV9sZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCk7CisJCWlmICgoKGRpcmVudC0+aW5vZGUgIT0gRVhUMl9ST09UX0lOTykgJiYKKwkJICAgICAoZGlyZW50LT5pbm9kZSA8IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSkpIHx8CisJCSAgICAoZGlyZW50LT5pbm9kZSA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKSB7CisJCQlwcm9ibGVtID0gUFJfMl9CQURfSU5POworCQl9IGVsc2UgaWYgKGN0eC0+aW5vZGVfYmJfbWFwICYmCisJCQkgICAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JiX21hcCwKKwkJCQkJCSAgICAgZGlyZW50LT5pbm9kZSkpKSB7CisJCQkvKgorCQkJICogSWYgdGhlIGlub2RlIGlzIGluIGEgYmFkIGJsb2NrLCBvZmZlciB0bworCQkJICogY2xlYXIgaXQuCisJCQkgKi8KKwkJCXByb2JsZW0gPSBQUl8yX0JCX0lOT0RFOworCQl9IGVsc2UgaWYgKChkb3Rfc3RhdGUgPiAxKSAmJiAobmFtZV9sZW4gPT0gMSkgJiYKKwkJCSAgIChkaXJlbnQtPm5hbWVbMF0gPT0gJy4nKSkgeworCQkJLyoKKwkJCSAqIElmIHRoZXJlJ3MgYSAnLicgZW50cnkgaW4gYW55dGhpbmcgb3RoZXIKKwkJCSAqIHRoYW4gdGhlIGZpcnN0IGRpcmVjdG9yeSBlbnRyeSwgaXQncyBhCisJCQkgKiBkdXBsaWNhdGUgZW50cnkgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZC4KKwkJCSAqLworCQkJcHJvYmxlbSA9IFBSXzJfRFVQX0RPVDsKKwkJfSBlbHNlIGlmICgoZG90X3N0YXRlID4gMSkgJiYgKG5hbWVfbGVuID09IDIpICYmCisJCQkgICAoZGlyZW50LT5uYW1lWzBdID09ICcuJykgJiYKKwkJCSAgIChkaXJlbnQtPm5hbWVbMV0gPT0gJy4nKSkgeworCQkJLyoKKwkJCSAqIElmIHRoZXJlJ3MgYSAnLi4nIGVudHJ5IGluIGFueXRoaW5nIG90aGVyCisJCQkgKiB0aGFuIHRoZSBzZWNvbmQgZGlyZWN0b3J5IGVudHJ5LCBpdCdzIGEKKwkJCSAqIGR1cGxpY2F0ZSBlbnRyeSB0aGF0IHNob3VsZCBiZSByZW1vdmVkLgorCQkJICovCisJCQlwcm9ibGVtID0gUFJfMl9EVVBfRE9UX0RPVDsKKwkJfSBlbHNlIGlmICgoZG90X3N0YXRlID4gMSkgJiYKKwkJCSAgIChkaXJlbnQtPmlub2RlID09IEVYVDJfUk9PVF9JTk8pKSB7CisJCQkvKgorCQkJICogRG9uJ3QgYWxsb3cgbGlua3MgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LgorCQkJICogV2UgY2hlY2sgdGhpcyBzcGVjaWFsbHkgdG8gbWFrZSBzdXJlIHdlCisJCQkgKiBjYXRjaCB0aGlzIGVycm9yIGNhc2UgZXZlbiBpZiB0aGUgcm9vdAorCQkJICogZGlyZWN0b3J5IGhhc24ndCBiZWVuIGNyZWF0ZWQgeWV0LgorCQkJICovCisJCQlwcm9ibGVtID0gUFJfMl9MSU5LX1JPT1Q7CisJCX0gZWxzZSBpZiAoKGRvdF9zdGF0ZSA+IDEpICYmIChuYW1lX2xlbiA9PSAwKSkgeworCQkJLyoKKwkJCSAqIERvbid0IGFsbG93IHplcm8tbGVuZ3RoIGRpcmVjdG9yeSBuYW1lcy4KKwkJCSAqLworCQkJcHJvYmxlbSA9IFBSXzJfTlVMTF9OQU1FOworCQl9CisKKwkJaWYgKHByb2JsZW0pIHsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sICZjZC0+cGN0eCkpIHsKKwkJCQlkaXJlbnQtPmlub2RlID0gMDsKKwkJCQlkaXJfbW9kaWZpZWQrKzsKKwkJCQlnb3RvIG5leHQ7CisJCQl9IGVsc2UgeworCQkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQkJCWlmIChwcm9ibGVtID09IFBSXzJfQkFEX0lOTykKKwkJCQkJZ290byBuZXh0OworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGlub2RlIHdhcyBtYXJrZWQgYXMgaGF2aW5nIGJhZCBmaWVsZHMgaW4KKwkJICogcGFzczEsIHByb2Nlc3MgaXQgYW5kIG9mZmVyIHRvIGZpeC9jbGVhciBpdC4KKwkJICogKFdlIHdhaXQgdW50aWwgbm93IHNvIHRoYXQgd2UgY2FuIGRpc3BsYXkgdGhlCisJCSAqIHBhdGhuYW1lIHRvIHRoZSB1c2VyLikKKwkJICovCisJCWlmIChjdHgtPmlub2RlX2JhZF9tYXAgJiYKKwkJICAgIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9iYWRfbWFwLAorCQkJCQkgICAgIGRpcmVudC0+aW5vZGUpKSB7CisJCQlpZiAoZTJmc2NrX3Byb2Nlc3NfYmFkX2lub2RlKGN0eCwgaW5vLAorCQkJCQkJICAgICBkaXJlbnQtPmlub2RlLAorCQkJCQkJICAgICBidWYgKyBmcy0+YmxvY2tzaXplKSkgeworCQkJCWRpcmVudC0+aW5vZGUgPSAwOworCQkJCWRpcl9tb2RpZmllZCsrOworCQkJCWdvdG8gbmV4dDsKKwkJCX0KKwkJCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwkJfQorCisJCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2lubyhmcywgZGlyZW50LT5pbm9kZSk7CisJCWZpcnN0X3VudXNlZF9pbm9kZSA9IGdyb3VwICogZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgKworCQkJCQkxICsgZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgLQorCQkJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgZ3JvdXApOworCQljZC0+cGN0eC5ncm91cCA9IGdyb3VwOworCisJCS8qCisJCSAqIENoZWNrIGlmIHRoZSBpbm9kZSB3YXMgbWlzc2VkIG91dCBiZWNhdXNlCisJCSAqIF9JTk9ERV9VTklOSVQgZmxhZyB3YXMgc2V0IG9yIGJnX2l0YWJsZV91bnVzZWQgd2FzCisJCSAqIGluY29ycmVjdC4gIElmIHNvLCBjbGVhciB0aGUgX0lOT0RFX1VOSU5JVCBmbGFnIGFuZAorCQkgKiByZXN0YXJ0IGUyZnNjay4gIEluIHRoZSBmdXR1cmUgaXQgd291bGQgYmUgbmljZSBpZgorCQkgKiB3ZSBjb3VsZCBjYWxsIGEgZnVuY3Rpb24gaW4gcGFzczEuYyB0aGF0IGNoZWNrcyB0aGUKKwkJICogbmV3bHkgdmlzaWJsZSBpbm9kZXMuCisJCSAqLworCQlpZiAoZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGdyb3VwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCkpIHsKKwkJCXBjdHgubnVtID0gZGlyZW50LT5pbm9kZTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfSU5PUkVGX0JHX0lOT19VTklOSVQsCisJCQkJCSZjZC0+cGN0eCkpeworCQkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3JvdXAsCisJCQkJCQkgICAgICBFWFQyX0JHX0lOT0RFX1VOSU5JVCk7CisJCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUkVTVEFSVF9MQVRFUjsKKwkJCX0gZWxzZSB7CisJCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCQkJaWYgKHByb2JsZW0gPT0gUFJfMl9CQURfSU5PKQorCQkJCQlnb3RvIG5leHQ7CisJCQl9CisJCX0gZWxzZSBpZiAoZGlyZW50LT5pbm9kZSA+PSBmaXJzdF91bnVzZWRfaW5vZGUpIHsKKwkJCXBjdHgubnVtID0gZGlyZW50LT5pbm9kZTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfSU5PUkVGX0lOX1VOVVNFRCwgJmNkLT5wY3R4KSl7CisJCQkJZXh0MmZzX2JnX2l0YWJsZV91bnVzZWRfc2V0KGZzLCBncm91cCwgMCk7CisJCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUkVTVEFSVF9MQVRFUjsKKwkJCX0gZWxzZSB7CisJCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCQkJaWYgKHByb2JsZW0gPT0gUFJfMl9CQURfSU5PKQorCQkJCQlnb3RvIG5leHQ7CisJCQl9CisJCX0KKworCQkvKiAKKwkJICogT2ZmZXIgdG8gY2xlYXIgdW51c2VkIGlub2RlczsgaWYgd2UgYXJlIGdvaW5nIHRvIGJlCisJCSAqIHJlc3RhcnRpbmcgdGhlIHNjYW4gZHVlIHRvIGJnX2l0YWJsZV91bnVzZWQgYmVpbmcKKwkJICogd3JvbmcsIHRoZW4gZG9uJ3QgY2xlYXIgYW55IGlub2RlcyB0byBhdm9pZCB6YXBwaW5nCisJCSAqIGlub2RlcyB0aGF0IHdlcmUgc2tpcHBlZCBkdXJpbmcgcGFzczEgZHVlIHRvIGFuCisJCSAqIGluY29ycmVjdCBiZ19pdGFibGVfdW51c2VkOyB3ZSdsbCBnZXQgYW55IHJlYWwKKwkJICogcHJvYmxlbXMgYWZ0ZXIgd2UgcmVzdGFydC4KKwkJICovCisJCWlmICghKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19SRVNUQVJUX0xBVEVSKSAmJgorCQkgICAgIShleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsCisJCQkJCQlkaXJlbnQtPmlub2RlKSkpCisJCQlwcm9ibGVtID0gUFJfMl9VTlVTRURfSU5PREU7CisKKwkJaWYgKHByb2JsZW0pIHsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sICZjZC0+cGN0eCkpIHsKKwkJCQlkaXJlbnQtPmlub2RlID0gMDsKKwkJCQlkaXJfbW9kaWZpZWQrKzsKKwkJCQlnb3RvIG5leHQ7CisJCQl9IGVsc2UgeworCQkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQkJCWlmIChwcm9ibGVtID09IFBSXzJfQkFEX0lOTykKKwkJCQkJZ290byBuZXh0OworCQkJfQorCQl9CisKKwkJaWYgKCFlbmNyeXB0ZWQgJiYgY2hlY2tfbmFtZShjdHgsIGRpcmVudCwgJmNkLT5wY3R4KSkKKwkJCWRpcl9tb2RpZmllZCsrOworCisJCWlmIChlbmNyeXB0ZWQgJiYgKGRvdF9zdGF0ZSkgPiAxICYmCisJCSAgICBlbmNyeXB0ZWRfY2hlY2tfbmFtZShjdHgsIGRpcmVudCwgJmNkLT5wY3R4KSkgeworCQkJZGlyX21vZGlmaWVkKys7CisJCQlnb3RvIG5leHQ7CisJCX0KKworCQlpZiAoY2hlY2tfZmlsZXR5cGUoY3R4LCBkaXJlbnQsIGlubywgJmNkLT5wY3R4KSkKKwkJCWRpcl9tb2RpZmllZCsrOworCisJCWlmIChkeF9kYikgeworCQkJZXh0MmZzX2Rpcmhhc2goZHhfZGlyLT5oYXNodmVyc2lvbiwgZGlyZW50LT5uYW1lLAorCQkJCSAgICAgICBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCksCisJCQkJICAgICAgIGZzLT5zdXBlci0+c19oYXNoX3NlZWQsICZoYXNoLCAwKTsKKwkJCWlmIChoYXNoIDwgZHhfZGItPm1pbl9oYXNoKQorCQkJCWR4X2RiLT5taW5faGFzaCA9IGhhc2g7CisJCQlpZiAoaGFzaCA+IGR4X2RiLT5tYXhfaGFzaCkKKwkJCQlkeF9kYi0+bWF4X2hhc2ggPSBoYXNoOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgdGhlbiBtYXJrIGl0cyBwYXJlbnQgaW4gaXRzCisJCSAqIGRpcl9pbmZvIHN0cnVjdHVyZS4gIElmIHRoZSBwYXJlbnQgZmllbGQgaXMgYWxyZWFkeQorCQkgKiBmaWxsZWQgaW4sIHRoZW4gdGhpcyBkaXJlY3RvcnkgaGFzIG1vcmUgdGhhbiBvbmUKKwkJICogaGFyZCBsaW5rLiAgV2UgYXNzdW1lIHRoZSBmaXJzdCBsaW5rIGlzIGNvcnJlY3QsCisJCSAqIGFuZCBhc2sgdGhlIHVzZXIgaWYgaGUvc2hlIHdhbnRzIHRvIGNsZWFyIHRoaXMgb25lLgorCQkgKi8KKwkJaWYgKChkb3Rfc3RhdGUgPiAxKSAmJgorCQkgICAgKGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9kaXJfbWFwLAorCQkJCQkgICAgICBkaXJlbnQtPmlub2RlKSkpIHsKKwkJCWlmIChlMmZzY2tfZGlyX2luZm9fZ2V0X3BhcmVudChjdHgsIGRpcmVudC0+aW5vZGUsCisJCQkJCQkgICAgICAgJnN1YmRpcl9wYXJlbnQpKSB7CisJCQkJY2QtPnBjdHguaW5vID0gZGlyZW50LT5pbm9kZTsKKwkJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzJfTk9fRElSSU5GTywgJmNkLT5wY3R4KTsKKwkJCQlnb3RvIGFib3J0X2ZyZWVfZGljdDsKKwkJCX0KKwkJCWlmIChzdWJkaXJfcGFyZW50KSB7CisJCQkJY2QtPnBjdHguaW5vMiA9IHN1YmRpcl9wYXJlbnQ7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9MSU5LX0RJUiwKKwkJCQkJCSZjZC0+cGN0eCkpIHsKKwkJCQkJZGlyZW50LT5pbm9kZSA9IDA7CisJCQkJCWRpcl9tb2RpZmllZCsrOworCQkJCQlnb3RvIG5leHQ7CisJCQkJfQorCQkJCWNkLT5wY3R4LmlubzIgPSAwOworCQkJfSBlbHNlIHsKKwkJCQkodm9pZCkgZTJmc2NrX2Rpcl9pbmZvX3NldF9wYXJlbnQoY3R4LAorCQkJCQkJICBkaXJlbnQtPmlub2RlLCBpbm8pOworCQkJfQorCQl9CisKKwkJaWYgKGR1cHNfZm91bmQpIHsKKwkJCTsKKwkJfSBlbHNlIGlmIChkaWN0X2xvb2t1cCgmZGVfZGljdCwgZGlyZW50KSkgeworCQkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJCXBjdHguaW5vID0gaW5vOworCQkJcGN0eC5kaXJlbnQgPSBkaXJlbnQ7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzJfUkVQT1JUX0RVUF9ESVJFTlQsICZwY3R4KTsKKwkJCWUyZnNja19yZWhhc2hfZGlyX2xhdGVyKGN0eCwgaW5vKTsKKwkJCWR1cHNfZm91bmQrKzsKKwkJfSBlbHNlCisJCQlkaWN0X2FsbG9jX2luc2VydCgmZGVfZGljdCwgZGlyZW50LCBkaXJlbnQpOworCisJCWV4dDJmc19pY291bnRfaW5jcmVtZW50KGN0eC0+aW5vZGVfY291bnQsIGRpcmVudC0+aW5vZGUsCisJCQkJCSZsaW5rcyk7CisJCWlmIChsaW5rcyA+IDEpCisJCQljdHgtPmZzX2xpbmtzX2NvdW50Kys7CisJCWN0eC0+ZnNfdG90YWxfY291bnQrKzsKKwluZXh0OgorCQlwcmV2ID0gZGlyZW50OworCQlpZiAoZGlyX21vZGlmaWVkKQorCQkJKHZvaWQpIGV4dDJmc19nZXRfcmVjX2xlbihmcywgZGlyZW50LCAmcmVjX2xlbik7CisJCWlmICghaW5saW5lX2RhdGFfc2l6ZSB8fCBkb3Rfc3RhdGUgPiAxKSB7CisJCQlvZmZzZXQgKz0gcmVjX2xlbjsKKwkJfSBlbHNlIHsKKwkJCWlmIChkb3Rfc3RhdGUgPT0gMSkgeworCQkJCW9mZnNldCA9IDQ7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBnZXQgaGVyZSwgd2UncmUgY2hlY2tpbmcgYW4gaW5saW5lCisJCQkJICogZGlyZWN0b3J5IGFuZCB3ZSd2ZSBqdXN0IGNoZWNrZWQgYSAoZmFrZSkKKwkJCQkgKiBkb3Rkb3QgZW50cnkgdGhhdCB3ZSBjcmVhdGVkIG9uIHRoZSBzdGFjay4KKwkJCQkgKiBUaGVyZWZvcmUgc2V0ICdwcmV2JyB0byBOVUxMIHNvIHRoYXQgaWYgd2UKKwkJCQkgKiBjYWxsIHNhbHZhZ2VfZGlyZWN0b3J5IG9uIHRoZSBuZXh0IGVudHJ5LAorCQkJCSAqIGl0IHdvbid0IHRyeSB0byBhYnNvcmIgdGhlIG5leHQgZW50cnkgaW50bworCQkJCSAqIHRoZSBvbi1zdGFjayBkb3Rkb3QgZW50cnkuCisJCQkJICovCisJCQkJcHJldiA9IE5VTEw7CisJCQl9CisJCX0KKwkJZG90X3N0YXRlKys7CisJfSB3aGlsZSAob2Zmc2V0IDwgbWF4X2Jsb2NrX3NpemUpOworI2lmIDAKKwlwcmludGYoIlxuIik7CisjZW5kaWYKKwlpZiAoZHhfZGIpIHsKKyNpZmRlZiBEWF9ERUJVRworCQlwcmludGYoImRiX2Jsb2NrICVkLCB0eXBlICVkLCBtaW5faGFzaCAweCUweCwgbWF4X2hhc2ggMHglMHhcbiIsCisJCSAgICAgICBkYi0+YmxvY2tjbnQsIGR4X2RiLT50eXBlLAorCQkgICAgICAgZHhfZGItPm1pbl9oYXNoLCBkeF9kYi0+bWF4X2hhc2gpOworI2VuZGlmCisJCWNkLT5wY3R4LmRpciA9IGNkLT5wY3R4LmlubzsKKwkJaWYgKChkeF9kYi0+dHlwZSA9PSBEWF9ESVJCTE9DS19ST09UKSB8fAorCQkgICAgKGR4X2RiLT50eXBlID09IERYX0RJUkJMT0NLX05PREUpKQorCQkJcGFyc2VfaW50X25vZGUoZnMsIGRiLCBjZCwgZHhfZGlyLCBidWYsIGZhaWxlZF9jc3VtKTsKKwl9CisKKwlpZiAob2Zmc2V0ICE9IG1heF9ibG9ja19zaXplKSB7CisJCWNkLT5wY3R4Lm51bSA9IHJlY19sZW4gKyBvZmZzZXQgLSBtYXhfYmxvY2tfc2l6ZTsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GSU5BTF9SRUNMRU4sICZjZC0+cGN0eCkpIHsKKwkJCWRpcmVudC0+cmVjX2xlbiA9IGNkLT5wY3R4Lm51bTsKKwkJCWRpcl9tb2RpZmllZCsrOworCQl9CisJfQorCWlmIChkaXJfbW9kaWZpZWQpIHsKKwkJaW50CWZsYWdzLCB3aWxsX3JlaGFzaDsKKwkJLyogbGVhZiBibG9jayB3aXRoIG5vIHRhaWw/ICBSZWhhc2ggZGlycyBsYXRlci4gKi8KKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgJiYKKwkJICAgIGlzX2xlYWYgJiYKKwkJICAgICFpbmxpbmVfZGF0YV9zaXplICYmCisJCSAgICAhZXh0MmZzX2RpcmVudF9oYXNfdGFpbChmcywgKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKWJ1ZikpIHsKKwkJCWlmIChpbnNlcnRfZGlyZW50X3RhaWwoZnMsIGJ1ZikgPT0gMCkKKwkJCQlnb3RvIHdyaXRlX2FuZF9maXg7CisJCQllMmZzY2tfcmVoYXNoX2Rpcl9sYXRlcihjdHgsIGlubyk7CisJCX0KKword3JpdGVfYW5kX2ZpeDoKKwkJd2lsbF9yZWhhc2ggPSBlMmZzY2tfZGlyX3dpbGxfYmVfcmVoYXNoZWQoY3R4LCBpbm8pOworCQlpZiAod2lsbF9yZWhhc2gpIHsKKwkJCWZsYWdzID0gY3R4LT5mcy0+ZmxhZ3M7CisJCQljdHgtPmZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQl9CisJCWlmIChpbmxpbmVfZGF0YV9zaXplKSB7CisJCQlidWYgPSBpYnVmOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQkJaWYgKGRiLT5ibG9ja2NudCkKKwkJCQlnb3RvIHNraXBfZmlyc3Rfd3JpdGVfc3dhYjsKKwkJCSooKF9fdTMyICopYnVmKSA9IGV4dDJmc19sZTMyX3RvX2NwdSgqKChfX3UzMiAqKWJ1ZikpOworCQkJY2QtPnBjdHguZXJyY29kZSA9IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQyKGZzLAorCQkJCQlidWYgKyBFWFQ0X0lOTElORV9EQVRBX0RPVERPVF9TSVpFLAorCQkJCQlFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFIC0KKwkJCQkJRVhUNF9JTkxJTkVfREFUQV9ET1RET1RfU0laRSwKKwkJCQkJMCk7CisJCQlpZiAoY2QtPnBjdHguZXJyY29kZSkKKwkJCQlnb3RvIHNraXBfc2Vjb25kX3dyaXRlX3N3YWI7Citza2lwX2ZpcnN0X3dyaXRlX3N3YWI6CisJCQlpZiAoaW5saW5lX2RhdGFfc2l6ZSA8PSBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFIHx8CisJCQkgICAgIWRiLT5ibG9ja2NudCkKKwkJCQlnb3RvIHNraXBfc2Vjb25kX3dyaXRlX3N3YWI7CisJCQljZC0+cGN0eC5lcnJjb2RlID0gZXh0MmZzX2RpcmVudF9zd2FiX291dDIoZnMsCisJCQkJCWJ1ZiArIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUsCisJCQkJCWlubGluZV9kYXRhX3NpemUgLQorCQkJCQlFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFLAorCQkJCQkwKTsKK3NraXBfc2Vjb25kX3dyaXRlX3N3YWI6CisJCQlpZiAoY2QtPnBjdHguZXJyY29kZSAmJgorCQkJICAgICFmaXhfcHJvYmxlbShjdHgsIFBSXzJfV1JJVEVfRElSQkxPQ0ssICZjZC0+cGN0eCkpCisJCQkJZ290byBhYm9ydF9mcmVlX2RpY3Q7CisjZW5kaWYKKwkJCWNkLT5wY3R4LmVycmNvZGUgPQorCQkJCWV4dDJmc19pbmxpbmVfZGF0YV9zZXQoZnMsIGlubywgMCwgYnVmLAorCQkJCQkJICAgICAgIGlubGluZV9kYXRhX3NpemUpOworCQl9IGVsc2UKKwkJCWNkLT5wY3R4LmVycmNvZGUgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgYmxvY2tfbnIsCisJCQkJCQkJCSAgIGJ1ZiwgMCwgaW5vKTsKKwkJaWYgKHdpbGxfcmVoYXNoKQorCQkJY3R4LT5mcy0+ZmxhZ3MgPSAoZmxhZ3MgJgorCQkJCQkgIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpIHwKKwkJCQkJIChjdHgtPmZzLT5mbGFncyAmCisJCQkJCSAgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCQlpZiAoY2QtPnBjdHguZXJyY29kZSkgeworCQkJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzJfV1JJVEVfRElSQkxPQ0ssCisJCQkJCSAmY2QtPnBjdHgpKQorCQkJCWdvdG8gYWJvcnRfZnJlZV9kaWN0OworCQl9CisJCWV4dDJmc19tYXJrX2NoYW5nZWQoZnMpOworCX0gZWxzZSBpZiAoaXNfbGVhZiAmJiBmYWlsZWRfY3N1bSAmJiAhZGlyX21vZGlmaWVkKSB7CisJCS8qCisJCSAqIElmIGEgbGVhZiBub2RlIHRoYXQgZmFpbHMgY3N1bSBtYWtlcyBpdCB0aGlzIGZhciB3aXRob3V0CisJCSAqIGFsdGVyYXRpb24sIGFzayB0aGUgdXNlciBpZiB0aGUgY2hlY2tzdW0gc2hvdWxkIGJlIGZpeGVkLgorCQkgKi8KKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9MRUFGX05PREVfT05MWV9DU1VNX0lOVkFMSUQsCisJCQkJJmNkLT5wY3R4KSkKKwkJCWdvdG8gd3JpdGVfYW5kX2ZpeDsKKwl9CisJZGljdF9mcmVlX25vZGVzKCZkZV9kaWN0KTsKKwlyZXR1cm4gMDsKK2Fib3J0X2ZyZWVfZGljdDoKKwljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCWRpY3RfZnJlZV9ub2RlcygmZGVfZGljdCk7CisJcmV0dXJuIERJUkVOVF9BQk9SVDsKK30KKworc3RydWN0IGRlbF9ibG9jayB7CisJZTJmc2NrX3QJY3R4OworCWUyX2Jsa2NudF90CW51bTsKK307CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBkZWFsbG9jYXRlIGEgYmxvY2ssIGFuZCBpcyBhbiBpbnRlcmF0b3IKKyAqIGZ1bmN0aW9uZWQgY2FsbGVkIGJ5IGRlYWxsb2NhdGUgaW5vZGUgdmlhIGV4dDJmc19pdGVyYXRlX2Jsb2NrKCkuCisgKi8KK3N0YXRpYyBpbnQgZGVhbGxvY2F0ZV9pbm9kZV9ibG9jayhleHQyX2ZpbHN5cyBmcywKKwkJCQkgIGJsazY0X3QJKmJsb2NrX25yLAorCQkJCSAgZTJfYmxrY250X3QgYmxvY2tjbnQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBkZWxfYmxvY2sgKnAgPSBwcml2X2RhdGE7CisKKwlpZiAoKmJsb2NrX25yID09IDApCisJCXJldHVybiAwOworCWlmICgoKmJsb2NrX25yIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHx8CisJICAgICgqYmxvY2tfbnIgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSkKKwkJcmV0dXJuIDA7CisJaWYgKCgqYmxvY2tfbnIgJSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykpID09IDApCisJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsICpibG9ja19uciwgLTEpOworCXAtPm51bSsrOworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdWN0aW9uIGRlYWxsb2NhdGVzIGFuIGlub2RlCisgKi8KK3N0YXRpYyB2b2lkIGRlYWxsb2NhdGVfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywgY2hhciogYmxvY2tfYnVmKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJX191MzIJCQljb3VudDsKKwlzdHJ1Y3QgZGVsX2Jsb2NrCWRlbF9ibG9jazsKKworCWUyZnNja19yZWFkX2lub2RlKGN0eCwgaW5vLCAmaW5vZGUsICJkZWFsbG9jYXRlX2lub2RlIik7CisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlwY3R4LmlubyA9IGlubzsKKworCS8qCisJICogRml4IHVwIHRoZSBiaXRtYXBzLi4uCisJICovCisJZTJmc2NrX3JlYWRfYml0bWFwcyhjdHgpOworCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIGlubywgLTEsIExJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSk7CisKKwlpZiAoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpICYmCisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV94YXR0cihmcy0+c3VwZXIpKSB7CisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQzKGZzLAorCQkJCWV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgJmlub2RlKSwKKwkJCQlibG9ja19idWYsIC0xLCAmY291bnQsIGlubyk7CisJCWlmIChwY3R4LmVycmNvZGUgPT0gRVhUMl9FVF9CQURfRUFfQkxPQ0tfTlVNKSB7CisJCQlwY3R4LmVycmNvZGUgPSAwOworCQkJY291bnQgPSAxOworCQl9CisJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCXBjdHguYmxrID0gZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FESl9FQV9SRUZDT1VOVCwgJnBjdHgpOworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAoY291bnQgPT0gMCkgeworCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywKKwkJCQkgIGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgJmlub2RlKSwgLTEpOworCQl9CisJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsICZpbm9kZSwgMCk7CisJfQorCisJaWYgKCFleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsICZpbm9kZSkpCisJCWdvdG8gY2xlYXJfaW5vZGU7CisKKwkvKiBJbmxpbmUgZGF0YSBpbm9kZXMgZG9uJ3QgaGF2ZSBibG9ja3MgdG8gaXRlcmF0ZSAqLworCWlmIChpbm9kZS5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkKKwkJZ290byBjbGVhcl9pbm9kZTsKKworCWlmIChMSU5VWF9TX0lTUkVHKGlub2RlLmlfbW9kZSkgJiYKKwkgICAgZXh0MmZzX25lZWRzX2xhcmdlX2ZpbGVfZmVhdHVyZShFWFQyX0lfU0laRSgmaW5vZGUpKSkKKwkJY3R4LT5sYXJnZV9maWxlcy0tOworCisJZGVsX2Jsb2NrLmN0eCA9IGN0eDsKKwlkZWxfYmxvY2subnVtID0gMDsKKwlwY3R4LmVycmNvZGUgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywgMCwgYmxvY2tfYnVmLAorCQkJCQkgICAgIGRlYWxsb2NhdGVfaW5vZGVfYmxvY2ssCisJCQkJCSAgICAgJmRlbF9ibG9jayk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzJfREVBTExPQ19JTk9ERSwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorY2xlYXJfaW5vZGU6CisJLyogSW5vZGUgbWF5IGhhdmUgY2hhbmdlZCBieSBibG9ja19pdGVyYXRlLCBzbyByZXJlYWQgaXQgKi8KKwllMmZzY2tfcmVhZF9pbm9kZShjdHgsIGlubywgJmlub2RlLCAiZGVhbGxvY2F0ZV9pbm9kZSIpOworCWUyZnNja19jbGVhcl9pbm9kZShjdHgsIGlubywgJmlub2RlLCAwLCAiZGVhbGxvY2F0ZV9pbm9kZSIpOworfQorCisvKgorICogVGhpcyBmdWN0aW9uIGNsZWFycyB0aGUgaHRyZWUgZmxhZyBvbiBhbiBpbm9kZQorICovCitzdGF0aWMgdm9pZCBjbGVhcl9odHJlZShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vKQoreworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCisJZTJmc2NrX3JlYWRfaW5vZGUoY3R4LCBpbm8sICZpbm9kZSwgImNsZWFyX2h0cmVlIik7CisJaW5vZGUuaV9mbGFncyA9IGlub2RlLmlfZmxhZ3MgJiB+RVhUMl9JTkRFWF9GTDsKKwllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBpbm8sICZpbm9kZSwgImNsZWFyX2h0cmVlIik7CisJaWYgKGN0eC0+ZGlyc190b19oYXNoKQorCQlleHQyZnNfdTMyX2xpc3RfYWRkKGN0eC0+ZGlyc190b19oYXNoLCBpbm8pOworfQorCisKK2ludCBlMmZzY2tfcHJvY2Vzc19iYWRfaW5vZGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGRpciwKKwkJCSAgICAgZXh0Ml9pbm9fdCBpbm8sIGNoYXIgKmJ1ZikKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJaW50CQkJaW5vZGVfbW9kaWZpZWQgPSAwOworCWludAkJCW5vdF9maXhlZCA9IDA7CisJdW5zaWduZWQgY2hhcgkJKmZyYWcsICpmc2l6ZTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJcHJvYmxlbV90CQlwcm9ibGVtID0gMDsKKworCWUyZnNja19yZWFkX2lub2RlKGN0eCwgaW5vLCAmaW5vZGUsICJwcm9jZXNzX2JhZF9pbm9kZSIpOworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlwY3R4LmlubyA9IGlubzsKKwlwY3R4LmRpciA9IGRpcjsKKwlwY3R4Lmlub2RlID0gJmlub2RlOworCisJaWYgKGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgJmlub2RlKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX3hhdHRyKGZzLT5zdXBlcikpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GSUxFX0FDTF9aRVJPLCAmcGN0eCkpIHsKKwkJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsICZpbm9kZSwgMCk7CisJCQlpbm9kZV9tb2RpZmllZCsrOworCQl9IGVsc2UKKwkJCW5vdF9maXhlZCsrOworCX0KKworCWlmICghTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpICYmICFMSU5VWF9TX0lTUkVHKGlub2RlLmlfbW9kZSkgJiYKKwkgICAgIUxJTlVYX1NfSVNDSFIoaW5vZGUuaV9tb2RlKSAmJiAhTElOVVhfU19JU0JMSyhpbm9kZS5pX21vZGUpICYmCisJICAgICFMSU5VWF9TX0lTTE5LKGlub2RlLmlfbW9kZSkgJiYgIUxJTlVYX1NfSVNGSUZPKGlub2RlLmlfbW9kZSkgJiYKKwkgICAgIShMSU5VWF9TX0lTU09DSyhpbm9kZS5pX21vZGUpKSkKKwkJcHJvYmxlbSA9IFBSXzJfQkFEX01PREU7CisJZWxzZSBpZiAoTElOVVhfU19JU0NIUihpbm9kZS5pX21vZGUpCisJCSAmJiAhZTJmc2NrX3Bhc3MxX2NoZWNrX2RldmljZV9pbm9kZShmcywgJmlub2RlKSkKKwkJcHJvYmxlbSA9IFBSXzJfQkFEX0NIQVJfREVWOworCWVsc2UgaWYgKExJTlVYX1NfSVNCTEsoaW5vZGUuaV9tb2RlKQorCQkgJiYgIWUyZnNja19wYXNzMV9jaGVja19kZXZpY2VfaW5vZGUoZnMsICZpbm9kZSkpCisJCXByb2JsZW0gPSBQUl8yX0JBRF9CTE9DS19ERVY7CisJZWxzZSBpZiAoTElOVVhfU19JU0ZJRk8oaW5vZGUuaV9tb2RlKQorCQkgJiYgIWUyZnNja19wYXNzMV9jaGVja19kZXZpY2VfaW5vZGUoZnMsICZpbm9kZSkpCisJCXByb2JsZW0gPSBQUl8yX0JBRF9GSUZPOworCWVsc2UgaWYgKExJTlVYX1NfSVNTT0NLKGlub2RlLmlfbW9kZSkKKwkJICYmICFlMmZzY2tfcGFzczFfY2hlY2tfZGV2aWNlX2lub2RlKGZzLCAmaW5vZGUpKQorCQlwcm9ibGVtID0gUFJfMl9CQURfU09DS0VUOworCWVsc2UgaWYgKExJTlVYX1NfSVNMTksoaW5vZGUuaV9tb2RlKQorCQkgJiYgIWUyZnNja19wYXNzMV9jaGVja19zeW1saW5rKGZzLCBpbm8sICZpbm9kZSwgYnVmKSkgeworCQlwcm9ibGVtID0gUFJfMl9JTlZBTElEX1NZTUxJTks7CisJfQorCisJaWYgKHByb2JsZW0pIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgcHJvYmxlbSwgJnBjdHgpKSB7CisJCQlkZWFsbG9jYXRlX2lub2RlKGN0eCwgaW5vLCAwKTsKKwkJCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCQkJcmV0dXJuIDA7CisJCQlyZXR1cm4gMTsKKwkJfSBlbHNlCisJCQlub3RfZml4ZWQrKzsKKwkJcHJvYmxlbSA9IDA7CisJfQorCisJaWYgKGlub2RlLmlfZmFkZHIpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GQUREUl9aRVJPLCAmcGN0eCkpIHsKKwkJCWlub2RlLmlfZmFkZHIgPSAwOworCQkJaW5vZGVfbW9kaWZpZWQrKzsKKwkJfSBlbHNlCisJCQlub3RfZml4ZWQrKzsKKwl9CisKKwlzd2l0Y2ggKGZzLT5zdXBlci0+c19jcmVhdG9yX29zKSB7CisJICAgIGNhc2UgRVhUMl9PU19IVVJEOgorCQlmcmFnID0gJmlub2RlLm9zZDIuaHVyZDIuaF9pX2ZyYWc7CisJCWZzaXplID0gJmlub2RlLm9zZDIuaHVyZDIuaF9pX2ZzaXplOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJZnJhZyA9IGZzaXplID0gMDsKKwl9CisJaWYgKGZyYWcgJiYgKmZyYWcpIHsKKwkJcGN0eC5udW0gPSAqZnJhZzsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9GUkFHX1pFUk8sICZwY3R4KSkgeworCQkJKmZyYWcgPSAwOworCQkJaW5vZGVfbW9kaWZpZWQrKzsKKwkJfSBlbHNlCisJCQlub3RfZml4ZWQrKzsKKwkJcGN0eC5udW0gPSAwOworCX0KKwlpZiAoZnNpemUgJiYgKmZzaXplKSB7CisJCXBjdHgubnVtID0gKmZzaXplOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8yX0ZTSVpFX1pFUk8sICZwY3R4KSkgeworCQkJKmZzaXplID0gMDsKKwkJCWlub2RlX21vZGlmaWVkKys7CisJCX0gZWxzZQorCQkJbm90X2ZpeGVkKys7CisJCXBjdHgubnVtID0gMDsKKwl9CisKKwlpZiAoKGZzLT5zdXBlci0+c19jcmVhdG9yX29zID09IEVYVDJfT1NfTElOVVgpICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgJiYKKwkgICAgKGlub2RlLm9zZDIubGludXgyLmxfaV9ibG9ja3NfaGkgIT0gMCkpIHsKKwkJcGN0eC5udW0gPSBpbm9kZS5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8yX0JMT0NLU19ISV9aRVJPLCAmcGN0eCkpIHsKKwkJCWlub2RlLm9zZDIubGludXgyLmxfaV9ibG9ja3NfaGkgPSAwOworCQkJaW5vZGVfbW9kaWZpZWQrKzsKKwkJfQorCX0KKworCWlmICgoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MgPT0gRVhUMl9PU19MSU5VWCkgJiYKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpICYmCisJICAgIGlub2RlLm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoICE9IDApIHsKKwkJcGN0eC5udW0gPSBpbm9kZS5vc2QyLmxpbnV4Mi5sX2lfZmlsZV9hY2xfaGlnaDsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9JX0ZJTEVfQUNMX0hJX1pFUk8sICZwY3R4KSkgeworCQkJaW5vZGUub3NkMi5saW51eDIubF9pX2ZpbGVfYWNsX2hpZ2ggPSAwOworCQkJaW5vZGVfbW9kaWZpZWQrKzsKKwkJfSBlbHNlCisJCQlub3RfZml4ZWQrKzsKKwl9CisKKwlpZiAoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpICYmCisJICAgICgoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHx8CisJICAgICAoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfRklMRV9BQ0xfQkFELCAmcGN0eCkpIHsKKwkJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsICZpbm9kZSwgMCk7CisJCQlpbm9kZV9tb2RpZmllZCsrOworCQl9IGVsc2UKKwkJCW5vdF9maXhlZCsrOworCX0KKwlpZiAoaW5vZGUuaV9kaXJfYWNsICYmCisJICAgIExJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8yX0RJUl9BQ0xfWkVSTywgJnBjdHgpKSB7CisJCQlpbm9kZS5pX2Rpcl9hY2wgPSAwOworCQkJaW5vZGVfbW9kaWZpZWQrKzsKKwkJfSBlbHNlCisJCQlub3RfZml4ZWQrKzsKKwl9CisKKwlpZiAoaW5vZGVfbW9kaWZpZWQpCisJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIGlubywgJmlub2RlLCAicHJvY2Vzc19iYWRfaW5vZGUiKTsKKwlpZiAoIW5vdF9maXhlZCAmJiBjdHgtPmlub2RlX2JhZF9tYXApCisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2JhZF9tYXAsIGlubyk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBhbGxvY2F0ZV9kaXJfYmxvY2sgLS0tIHRoaXMgZnVuY3Rpb24gYWxsb2NhdGVzIGEgbmV3IGRpcmVjdG9yeQorICogCWJsb2NrIGZvciBhIHBhcnRpY3VsYXIgaW5vZGU7IHRoaXMgaXMgZG9uZSBpZiBhIGRpcmVjdG9yeSBoYXMKKyAqIAlhICJob2xlIiBpbiBpdCwgb3IgaWYgYSBkaXJlY3RvcnkgaGFzIGEgaWxsZWdhbCBibG9jayBudW1iZXIKKyAqIAl0aGF0IHdhcyB6ZXJvZWQgb3V0IGFuZCBub3cgbmVlZHMgdG8gYmUgcmVwbGFjZWQuCisgKi8KK3N0YXRpYyBpbnQgYWxsb2NhdGVfZGlyX2Jsb2NrKGUyZnNja190IGN0eCwKKwkJCSAgICAgIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGIsCisJCQkgICAgICBjaGFyICpidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJYmxrNjRfdAkJCWJsayA9IDA7CisJY2hhcgkJCSpibG9jazsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKworCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfRElSRUNUT1JZX0hPTEUsIHBjdHgpID09IDApCisJCXJldHVybiAxOworCisJLyoKKwkgKiBSZWFkIHRoZSBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyBpbjsgd2UnbGwgYmUgbWVzc2luZyB3aXRoCisJICogdGhlbS4KKwkgKi8KKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwkvKgorCSAqIEZpcnN0LCBmaW5kIGEgZnJlZSBibG9jaworCSAqLworCWUyZnNja19yZWFkX2lub2RlKGN0eCwgZGItPmlubywgJmlub2RlLCAiYWxsb2NhdGVfZGlyX2Jsb2NrIik7CisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19tYXBfY2x1c3Rlcl9ibG9jayhmcywgZGItPmlubywgJmlub2RlLAorCQkJCQkJIGRiLT5ibG9ja2NudCwgJmJsayk7CisJaWYgKHBjdHgtPmVycmNvZGUgfHwgYmxrID09IDApIHsKKwkJYmxrID0gZXh0MmZzX2ZpbmRfaW5vZGVfZ29hbChmcywgZGItPmlubywgJmlub2RlLCBkYi0+YmxvY2tjbnQpOworCQlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGJsaywKKwkJCQkJCSAgY3R4LT5ibG9ja19mb3VuZF9tYXAsICZibGspOworCQlpZiAocGN0eC0+ZXJyY29kZSkgeworCQkJcGN0eC0+c3RyID0gImV4dDJmc19uZXdfYmxvY2siOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FMTE9DX0RJUkJPQ0ssIHBjdHgpOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgYmxrKTsKKwlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGJsayk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCisJLyoKKwkgKiBOb3cgbGV0J3MgY3JlYXRlIHRoZSBhY3R1YWwgZGF0YSBibG9jayBmb3IgdGhlIGlub2RlCisJICovCisJaWYgKGRiLT5ibG9ja2NudCkKKwkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGZzLCAwLCAwLCAmYmxvY2spOworCWVsc2UKKwkJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGZzLCBkYi0+aW5vLAorCQkJCQkJICAgICBFWFQyX1JPT1RfSU5PLCAmYmxvY2spOworCisJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJcGN0eC0+c3RyID0gImV4dDJmc19uZXdfZGlyX2Jsb2NrIjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FMTE9DX0RJUkJPQ0ssIHBjdHgpOworCQlyZXR1cm4gMTsKKwl9CisKKwlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazQoZnMsIGJsaywgYmxvY2ssIDAsIGRiLT5pbm8pOworCWV4dDJmc19mcmVlX21lbSgmYmxvY2spOworCWlmIChwY3R4LT5lcnJjb2RlKSB7CisJCXBjdHgtPnN0ciA9ICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrIjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FMTE9DX0RJUkJPQ0ssIHBjdHgpOworCQlyZXR1cm4gMTsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgaW5vZGUgYmxvY2sgY291bnQKKwkgKi8KKwlleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCAmaW5vZGUsIDEpOworCWlmIChFWFQyX0lfU0laRSgmaW5vZGUpIDwgKChfX3U2NCkgZGItPmJsb2NrY250KzEpICogZnMtPmJsb2Nrc2l6ZSkgeworCQlwY3R4LT5lcnJjb2RlID0gZXh0MmZzX2lub2RlX3NpemVfc2V0KGZzLCAmaW5vZGUsCisJCQkJCShkYi0+YmxvY2tjbnQrMSkgKiBmcy0+YmxvY2tzaXplKTsKKwkJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJCXBjdHgtPnN0ciA9ICJleHQyZnNfaW5vZGVfc2l6ZV9zZXQiOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FMTE9DX0RJUkJPQ0ssIHBjdHgpOworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgZGItPmlubywgJmlub2RlLCAiYWxsb2NhdGVfZGlyX2Jsb2NrIik7CisKKwkvKgorCSAqIEZpbmFsbHksIHVwZGF0ZSB0aGUgYmxvY2sgcG9pbnRlcnMgZm9yIHRoZSBpbm9kZQorCSAqLworCWRiLT5ibGsgPSBibGs7CisJcGN0eC0+ZXJyY29kZSA9IGV4dDJmc19ibWFwMihmcywgZGItPmlubywgJmlub2RlLCAwLCBCTUFQX1NFVCwKKwkJCQkgICAgIGRiLT5ibG9ja2NudCwgMCwgJmJsayk7CisJaWYgKHBjdHgtPmVycmNvZGUpIHsKKwkJcGN0eC0+c3RyID0gImV4dDJmc19ibG9ja19pdGVyYXRlIjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8yX0FMTE9DX0RJUkJPQ0ssIHBjdHgpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcGFzczMuYyBiL2UyZnNwcm9ncy9lMmZzY2svcGFzczMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDIwM2NhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9wYXNzMy5jCkBAIC0wLDAgKzEsOTA5IEBACisvKgorICogcGFzczMuYyAtLSBwYXNzICMzIG9mIGUyZnNjazogQ2hlY2sgZm9yIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICoKKyAqIFBhc3MgIzMgYXNzdXJlcyB0aGF0IGFsbCBkaXJlY3RvcmllcyBhcmUgY29ubmVjdGVkIHRvIHRoZQorICogZmlsZXN5c3RlbSB0cmVlLCB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToKKyAqCisgKiBGaXJzdCwgdGhlIHJvb3QgZGlyZWN0b3J5IGlzIGNoZWNrZWQgdG8gbWFrZSBzdXJlIGl0IGV4aXN0czsgaWYKKyAqIG5vdCwgZTJmc2NrIHdpbGwgb2ZmZXIgdG8gY3JlYXRlIGEgbmV3IG9uZS4gIEl0IGlzIHRoZW4gbWFya2VkIGFzCisgKiAiZG9uZSIuCisgKgorICogVGhlbiwgcGFzczMgaW50ZXJhdGVzIG92ZXIgYWxsIGRpcmVjdG9yeSBpbm9kZXM7IGZvciBlYWNoIGRpcmVjdG9yeQorICogaXQgYXR0ZW1wdHMgdG8gdHJhY2UgdXAgdGhlIGZpbGVzeXN0ZW0gdHJlZSwgdXNpbmcgZGlyaW5mby5wYXJlbnQKKyAqIHVudGlsIGl0IHJlYWNoZXMgYSBkaXJlY3Rvcnkgd2hpY2ggaGFzIGJlZW4gbWFya2VkICJkb25lIi4gIElmIGl0CisgKiBjYW4gbm90IGRvIHNvLCB0aGVuIHRoZSBkaXJlY3RvcnkgbXVzdCBiZSBkaXNjb25uZWN0ZWQsIGFuZCBlMmZzY2sKKyAqIHdpbGwgb2ZmZXIgdG8gcmVjb25uZWN0IGl0IHRvIC9sb3N0K2ZvdW5kLiAgV2hpbGUgaXQgaXMgY2hhc2luZworICogcGFyZW50IHBvaW50ZXJzIHVwIHRoZSBmaWxlc3lzdGVtIHRyZWUsIGlmIHBhc3MzIHNlZXMgYSBkaXJlY3RvcnkKKyAqIHR3aWNlLCB0aGVuIGl0IGhhcyBkZXRlY3RlZCBhIGZpbGVzeXN0ZW0gbG9vcCwgYW5kIGl0IHdpbGwgYWdhaW4KKyAqIG9mZmVyIHRvIHJlY29ubmVjdCB0aGUgZGlyZWN0b3J5IHRvIC9sb3N0K2ZvdW5kIGluIHRvIGJyZWFrIHRoZQorICogZmlsZXN5c3RlbSBsb29wLgorICoKKyAqIFBhc3MgMyBhbHNvIGNvbnRhaW5zIHRoZSBzdWJyb3V0aW5lLCBlMmZzY2tfcmVjb25uZWN0X2ZpbGUoKSB0bworICogcmVjb25uZWN0IGlub2RlcyB0byAvbG9zdCtmb3VuZDsgdGhpcyBzdWJyb3V0aW5lIGlzIGFsc28gdXNlZCBieQorICogcGFzcyA0LiAgZTJmc2NrX3JlY29ubmVjdF9maWxlKCkgY2FsbHMgZ2V0X2xvc3RfYW5kX2ZvdW5kKCksIHdoaWNoCisgKiBpcyByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisgKgorICogUGFzcyAzIGZyZWVzIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzOgorICogICAgIAktIFRoZSBkaXJpbmZvIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBjYWNoZS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSAicHJvYmxlbS5oIgorCitzdGF0aWMgdm9pZCBjaGVja19yb290KGUyZnNja190IGN0eCk7CitzdGF0aWMgaW50IGNoZWNrX2RpcmVjdG9yeShlMmZzY2tfdCBjdHgsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCk7CitzdGF0aWMgdm9pZCBmaXhfZG90ZG90KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGV4dDJfaW5vX3QgcGFyZW50KTsKKworc3RhdGljIGV4dDJmc19pbm9kZV9iaXRtYXAgaW5vZGVfbG9vcF9kZXRlY3QgPSAwOworc3RhdGljIGV4dDJmc19pbm9kZV9iaXRtYXAgaW5vZGVfZG9uZV9tYXAgPSAwOworCit2b2lkIGUyZnNja19wYXNzMyhlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCXN0cnVjdCBkaXJfaW5mb19pdGVyICppdGVyID0gTlVMTDsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2s7CisjZW5kaWYKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJc3RydWN0IGRpcl9pbmZvCSpkaXI7CisJdW5zaWduZWQgbG9uZyBtYXhkaXJzLCBjb3VudDsKKworCWluaXRfcmVzb3VyY2VfdHJhY2soJnJ0cmFjaywgY3R4LT5mcy0+aW8pOworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKyNpZmRlZiBNVFJBQ0UKKwltdHJhY2VfcHJpbnQoIlBhc3MgMyIpOworI2VuZGlmCisKKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX1BBU1NfSEVBREVSLCAmcGN0eCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHNvbWUgYml0bWFwcyB0byBkbyBsb29wIGRldGVjdGlvbi4KKwkgKi8KKwlwY3R4LmVycmNvZGUgPSBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLCBfKCJpbm9kZSBkb25lIGJpdG1hcCIpLAorCQkJCQlFWFQyRlNfQk1BUDY0X0FVVE9ESVIsCisJCQkJCSJpbm9kZV9kb25lX21hcCIsICZpbm9kZV9kb25lX21hcCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4Lm51bSA9IDI7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19BTExPQ0FURV9JQklUTUFQX0VSUk9SLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCWdvdG8gYWJvcnRfZXhpdDsKKwl9CisJcHJpbnRfcmVzb3VyY2VfdHJhY2soY3R4LCBfKCJQZWFrIG1lbW9yeSIpLCAmY3R4LT5nbG9iYWxfcnRyYWNrLCBOVUxMKTsKKworCWNoZWNrX3Jvb3QoY3R4KTsKKwlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQlnb3RvIGFib3J0X2V4aXQ7CisKKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGlub2RlX2RvbmVfbWFwLCBFWFQyX1JPT1RfSU5PKTsKKworCW1heGRpcnMgPSBlMmZzY2tfZ2V0X251bV9kaXJpbmZvKGN0eCk7CisJY291bnQgPSAxOworCisJaWYgKGN0eC0+cHJvZ3Jlc3MpCisJCWlmICgoY3R4LT5wcm9ncmVzcykoY3R4LCAzLCAwLCBtYXhkaXJzKSkKKwkJCWdvdG8gYWJvcnRfZXhpdDsKKworCWl0ZXIgPSBlMmZzY2tfZGlyX2luZm9faXRlcl9iZWdpbihjdHgpOworCXdoaWxlICgoZGlyID0gZTJmc2NrX2Rpcl9pbmZvX2l0ZXIoY3R4LCBpdGVyKSkgIT0gMCkgeworCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLIHx8CisJCSAgICBjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUkVTVEFSVCkKKwkJCWdvdG8gYWJvcnRfZXhpdDsKKwkJaWYgKGN0eC0+cHJvZ3Jlc3MgJiYgKGN0eC0+cHJvZ3Jlc3MpKGN0eCwgMywgY291bnQrKywgbWF4ZGlycykpCisJCQlnb3RvIGFib3J0X2V4aXQ7CisJCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwgZGlyLT5pbm8pKQorCQkJaWYgKGNoZWNrX2RpcmVjdG9yeShjdHgsIGRpci0+aW5vLCAmcGN0eCkpCisJCQkJZ290byBhYm9ydF9leGl0OworCX0KKworCS8qCisJICogRm9yY2UgdGhlIGNyZWF0aW9uIG9mIC9sb3N0K2ZvdW5kIGlmIG5vdCBwcmVzZW50CisJICovCisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSA9PSAwKQorCQllMmZzY2tfZ2V0X2xvc3RfYW5kX2ZvdW5kKGN0eCwgMSk7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgZGlyZWN0b3JpZXMgdGhhdCBuZWVkIHRvIGJlIGluZGV4ZWQgb3IKKwkgKiBvcHRpbWl6ZWQsIGRvIGl0IGhlcmUuCisJICovCisJZTJmc2NrX3JlaGFzaF9kaXJlY3RvcmllcyhjdHgpOworCithYm9ydF9leGl0OgorCWlmIChpdGVyKQorCQllMmZzY2tfZGlyX2luZm9faXRlcl9lbmQoY3R4LCBpdGVyKTsKKwllMmZzY2tfZnJlZV9kaXJfaW5mbyhjdHgpOworCWlmIChpbm9kZV9sb29wX2RldGVjdCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoaW5vZGVfbG9vcF9kZXRlY3QpOworCQlpbm9kZV9sb29wX2RldGVjdCA9IDA7CisJfQorCWlmIChpbm9kZV9kb25lX21hcCkgeworCQlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoaW5vZGVfZG9uZV9tYXApOworCQlpbm9kZV9kb25lX21hcCA9IDA7CisJfQorCisJaWYgKGN0eC0+bG5mX3JlcGFpcl9ibG9jaykgeworCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCSAgICBjdHgtPmxuZl9yZXBhaXJfYmxvY2spOworCQljdHgtPmxuZl9yZXBhaXJfYmxvY2sgPSAwOworCX0KKwlpZiAoY3R4LT5yb290X3JlcGFpcl9ibG9jaykgeworCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCSAgICBjdHgtPnJvb3RfcmVwYWlyX2Jsb2NrKTsKKwkJY3R4LT5yb290X3JlcGFpcl9ibG9jayA9IDA7CisJfQorCisJcHJpbnRfcmVzb3VyY2VfdHJhY2soY3R4LCBfKCJQYXNzIDMiKSwgJnJ0cmFjaywgY3R4LT5mcy0+aW8pOworfQorCisvKgorICogVGhpcyBtYWtlcyBzdXJlIHRoZSByb290IGlub2RlIGlzIHByZXNlbnQ7IGlmIG5vdCwgd2UgYXNrIGlmIHRoZQorICogdXNlciB3YW50cyB1cyB0byBjcmVhdGUgaXQuICBOb3QgY3JlYXRpbmcgaXQgaXMgYSBmYXRhbCBlcnJvci4KKyAqLworc3RhdGljIHZvaWQgY2hlY2tfcm9vdChlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWJsazY0X3QJCQlibGs7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJY2hhciAqCQkJYmxvY2s7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIEVYVDJfUk9PVF9JTk8pKSB7CisJCS8qCisJCSAqIElmIHRoZSByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSwgZGllIGhlcmUuICBUaGUKKwkJICogdXNlciBtdXN0IGhhdmUgYW5zd2VyZWQgJ25vJyBpbiBwYXNzMSB3aGVuIHdlCisJCSAqIG9mZmVyZWQgdG8gY2xlYXIgaXQuCisJCSAqLworCQlpZiAoIShleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwKKwkJCQkJICAgICAgIEVYVDJfUk9PVF9JTk8pKSkgeworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX1JPT1RfTk9UX0RJUl9BQk9SVCwgJnBjdHgpOworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJfQorCQlyZXR1cm47CisJfQorCisJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzNfTk9fUk9PVF9JTk9ERSwgJnBjdHgpKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19OT19ST09UX0lOT0RFX0FCT1JULCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCXJldHVybjsKKwl9CisKKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwkvKgorCSAqIEZpcnN0LCBmaW5kIGEgZnJlZSBibG9jaworCSAqLworCWlmIChjdHgtPnJvb3RfcmVwYWlyX2Jsb2NrKSB7CisJCWJsayA9IGN0eC0+cm9vdF9yZXBhaXJfYmxvY2s7CisJCWN0eC0+cm9vdF9yZXBhaXJfYmxvY2sgPSAwOworCQlnb3RvIHNraXBfbmV3X2Jsb2NrOworCX0KKwlwY3R4LmVycmNvZGUgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgMCwgY3R4LT5ibG9ja19mb3VuZF9tYXAsICZibGspOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5zdHIgPSAiZXh0MmZzX25ld19ibG9jayI7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19DUkVBVEVfUk9PVF9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsIGJsayk7Citza2lwX25ld19ibG9jazoKKwlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGJsayk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCisJLyoKKwkgKiBTZXQgdXAgdGhlIGlub2RlIHN0cnVjdHVyZQorCSAqLworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWlub2RlLmlfbW9kZSA9IDA0MDc1NTsKKwlpbm9kZS5pX3NpemUgPSBmcy0+YmxvY2tzaXplOworCWlub2RlLmlfYXRpbWUgPSBpbm9kZS5pX2N0aW1lID0gaW5vZGUuaV9tdGltZSA9IGN0eC0+bm93OworCWlub2RlLmlfbGlua3NfY291bnQgPSAyOworCWV4dDJmc19pYmxrX3NldChmcywgJmlub2RlLCAxKTsKKwlpbm9kZS5pX2Jsb2NrWzBdID0gYmxrOworCisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIGlub2RlLgorCSAqLworCXBjdHguZXJyY29kZSA9IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZnMsIEVYVDJfUk9PVF9JTk8sICZpbm9kZSk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4LnN0ciA9ICJleHQyZnNfd3JpdGVfaW5vZGUiOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfQ1JFQVRFX1JPT1RfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogTm93IGxldCdzIGNyZWF0ZSB0aGUgYWN0dWFsIGRhdGEgYmxvY2sgZm9yIHRoZSBpbm9kZS4KKwkgKiBEdWUgdG8gbWV0YWRhdGFfY3N1bSwgd2UgbXVzdCB3cml0ZSB0aGUgZGlyIGJsb2NrcyBBRlRFUgorCSAqIHRoZSBpbm9kZSBoYXMgYmVlbiB3cml0dGVuIHRvIGRpc2shCisJICovCisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX25ld19kaXJfYmxvY2soZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sCisJCQkJCSAgICAmYmxvY2spOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5zdHIgPSAiZXh0MmZzX25ld19kaXJfYmxvY2siOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfQ1JFQVRFX1JPT1RfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJcmV0dXJuOworCX0KKworCXBjdHguZXJyY29kZSA9IGV4dDJmc193cml0ZV9kaXJfYmxvY2s0KGZzLCBibGssIGJsb2NrLCAwLAorCQkJCQkgICAgICAgRVhUMl9ST09UX0lOTyk7CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9jayk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4LnN0ciA9ICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNCI7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19DUkVBVEVfUk9PVF9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBNaXNjZWxsYW5lb3VzIGJvb2trZWVwaW5nLi4uCisJICovCisJZTJmc2NrX2FkZF9kaXJfaW5mbyhjdHgsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8pOworCWV4dDJmc19pY291bnRfc3RvcmUoY3R4LT5pbm9kZV9jb3VudCwgRVhUMl9ST09UX0lOTywgMik7CisJZXh0MmZzX2ljb3VudF9zdG9yZShjdHgtPmlub2RlX2xpbmtfaW5mbywgRVhUMl9ST09UX0lOTywgMik7CisKKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIEVYVDJfUk9PVF9JTk8pOworCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoY3R4LT5pbm9kZV9kaXJfbWFwLCBFWFQyX1JPT1RfSU5PKTsKKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGZzLT5pbm9kZV9tYXAsIEVYVDJfUk9PVF9JTk8pOworCWV4dDJmc19tYXJrX2liX2RpcnR5KGZzKTsKK30KKworLyoKKyAqIFRoaXMgc3Vicm91dGluZSBpcyByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1cmUgdGhhdCBhIHBhcnRpY3VsYXIKKyAqIGRpcmVjdG9yeSBpcyBjb25uZWN0ZWQgdG8gdGhlIHJvb3Q7IGlmIGl0IGlzbid0IHdlIHRyYWNlIGl0IHVwIGFzCisgKiBmYXIgYXMgd2UgY2FuIGdvLCBhbmQgdGhlbiBvZmZlciB0byBjb25uZWN0IHRoZSByZXN1bHRpbmcgcGFyZW50IHRvCisgKiB0aGUgbG9zdCtmb3VuZC4gIFdlIGhhdmUgdG8gZG8gbG9vcCBkZXRlY3Rpb247IGlmIHdlIGV2ZXIgZGlzY292ZXIKKyAqIGEgbG9vcCwgd2UgdHJlYXQgdGhhdCBhcyBhIGRpc2Nvbm5lY3RlZCBkaXJlY3RvcnkgYW5kIG9mZmVyIHRvCisgKiByZXBhcmVudCBpdCB0byBsb3N0K2ZvdW5kLgorICoKKyAqIEhvd2V2ZXIsIGxvb3AgZGV0ZWN0aW9uIGlzIGV4cGVuc2l2ZSwgYmVjYXVzZSBmb3IgdmVyeSBsYXJnZQorICogZmlsZXN5c3RlbXMsIHRoZSBpbm9kZV9sb29wX2RldGVjdCBiaXRtYXAgaXMgaHVnZSwgYW5kIGNsZWFyaW5nIGl0CisgKiBpcyBub24tdHJpdmlhbC4gIExvb3BzIGluIGZpbGVzeXN0ZW1zIGFyZSBhbHNvIGEgcmFyZSBlcnJvciBjYXNlLAorICogYW5kIHdlIHNob3VsZG4ndCBvcHRpbWl6ZSBmb3IgZXJyb3IgY2FzZXMuICBTbyB3ZSB0cnkgdHdvIHBhc3NlcyBvZgorICogdGhlIGFsZ29yaXRobS4gIFRoZSBmaXJzdCB0aW1lLCB3ZSBpZ25vcmUgbG9vcCBkZXRlY3Rpb24gYW5kIG1lcmVseQorICogaW5jcmVtZW50IGEgY291bnRlcjsgaWYgdGhlIGNvdW50ZXIgZXhjZWVkcyBzb21lIGV4dHJlbWUgdGhyZXNob2xkLAorICogdGhlbiB3ZSB0cnkgYWdhaW4gd2l0aCB0aGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIGVuYWJsZWQuCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfZGlyZWN0b3J5KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBkaXIsCisJCQkgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCWV4dDJfZmlsc3lzIAlmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAlpbm8gPSBkaXIsIHBhcmVudDsKKwlpbnQJCWxvb3BfcGFzcyA9IDAsIHBhcmVudF9jb3VudCA9IDA7CisKKwl3aGlsZSAoMSkgeworCQkvKgorCQkgKiBNYXJrIHRoaXMgaW5vZGUgYXMgYmVpbmcgImRvbmUiOyBieSB0aGUgdGltZSB3ZQorCQkgKiByZXR1cm4gZnJvbSB0aGlzIGZ1bmN0aW9uLCB0aGUgaW5vZGUgd2UgZWl0aGVyIGJlCisJCSAqIHZlcmlmaWVkIGFzIGJlaW5nIGNvbm5lY3RlZCB0byB0aGUgZGlyZWN0b3J5IHRyZWUsCisJCSAqIG9yIHdlIHdpbGwgaGF2ZSBvZmZlcmVkIHRvIHJlY29ubmVjdCB0aGlzIHRvCisJCSAqIGxvc3QrZm91bmQuCisJCSAqCisJCSAqIElmIGl0IHdhcyBtYXJrZWQgZG9uZSBhbHJlYWR5LCB0aGVuIHdlJ3ZlIHJlYWNoZWQgYQorCQkgKiBwYXJlbnQgd2UndmUgYWxyZWFkeSBjaGVja2VkLgorCQkgKi8KKwkgIAlpZiAoZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpbm9kZV9kb25lX21hcCwgaW5vKSkKKwkJCWJyZWFrOworCisJCWlmIChlMmZzY2tfZGlyX2luZm9fZ2V0X3BhcmVudChjdHgsIGlubywgJnBhcmVudCkpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19OT19ESVJJTkZPLCBwY3R4KTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhpcyBkaXJlY3RvcnkgZG9lc24ndCBoYXZlIGEgcGFyZW50LCBvciB3ZSd2ZQorCQkgKiBzZWVuIHRoZSBwYXJlbnQgb25jZSBhbHJlYWR5LCB0aGVuIG9mZmVyIHRvCisJCSAqIHJlcGFyZW50IGl0IHRvIGxvc3QrZm91bmQKKwkJICovCisJCWlmICghcGFyZW50IHx8CisJCSAgICAobG9vcF9wYXNzICYmCisJCSAgICAgKGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoaW5vZGVfbG9vcF9kZXRlY3QsCisJCQkJCSAgICAgICBwYXJlbnQpKSkpIHsKKwkJCXBjdHgtPmlubyA9IGlubzsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzNfVU5DT05ORUNURURfRElSLCBwY3R4KSkgeworCQkJCWlmIChlMmZzY2tfcmVjb25uZWN0X2ZpbGUoY3R4LCBwY3R4LT5pbm8pKQorCQkJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwkJCQllbHNlIHsKKwkJCQkJZml4X2RvdGRvdChjdHgsIHBjdHgtPmlubywKKwkJCQkJCSAgIGN0eC0+bG9zdF9hbmRfZm91bmQpOworCQkJCQlwYXJlbnQgPSBjdHgtPmxvc3RfYW5kX2ZvdW5kOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCQl9CisJCWlubyA9IHBhcmVudDsKKwkJaWYgKGxvb3BfcGFzcykgeworCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpbm9kZV9sb29wX2RldGVjdCwgaW5vKTsKKwkJfSBlbHNlIGlmIChwYXJlbnRfY291bnQrKyA+IDIwNDgpIHsKKwkJCS8qCisJCQkgKiBJZiB3ZSd2ZSBydW4gaW50byBhIHBhdGggZGVwdGggdGhhdCdzCisJCQkgKiBncmVhdGVyIHRoYW4gMjA0OCwgdHJ5IGFnYWluIHdpdGggdGhlIGlub2RlCisJCQkgKiBsb29wIGJpdG1hcCB0dXJuZWQgb24gYW5kIHN0YXJ0IGZyb20gdGhlCisJCQkgKiB0b3AuCisJCQkgKi8KKwkJCWxvb3BfcGFzcyA9IDE7CisJCQlpZiAoaW5vZGVfbG9vcF9kZXRlY3QpCisJCQkJZXh0MmZzX2NsZWFyX2lub2RlX2JpdG1hcChpbm9kZV9sb29wX2RldGVjdCk7CisJCQllbHNlIHsKKwkJCQlwY3R4LT5lcnJjb2RlID0gZTJmc2NrX2FsbG9jYXRlX2lub2RlX2JpdG1hcChmcywgXygiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIiksIEVYVDJGU19CTUFQNjRfQVVUT0RJUiwgImlub2RlX2xvb3BfZGV0ZWN0IiwgJmlub2RlX2xvb3BfZGV0ZWN0KTsKKwkJCQlpZiAocGN0eC0+ZXJyY29kZSkgeworCQkJCQlwY3R4LT5udW0gPSAxOworCQkJCQlmaXhfcHJvYmxlbShjdHgsCisJCQkJICAgIFBSXzNfQUxMT0NBVEVfSUJJVE1BUF9FUlJPUiwgcGN0eCk7CisJCQkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQkJCXJldHVybiAtMTsKKwkJCQl9CisJCQl9CisJCQlpbm8gPSBkaXI7CisJCX0KKwl9CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGF0IC4uIGFuZCB0aGUgcGFyZW50IGRpcmVjdG9yeSBhcmUgdGhlIHNhbWU7CisJICogb2ZmZXIgdG8gZml4IGl0IGlmIG5vdC4KKwkgKi8KKwlwY3R4LT5pbm8gPSBkaXI7CisJaWYgKGUyZnNja19kaXJfaW5mb19nZXRfZG90ZG90KGN0eCwgZGlyLCAmcGN0eC0+aW5vMikgfHwKKwkgICAgZTJmc2NrX2Rpcl9pbmZvX2dldF9wYXJlbnQoY3R4LCBkaXIsICZwY3R4LT5kaXIpKSB7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19OT19ESVJJTkZPLCBwY3R4KTsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChwY3R4LT5pbm8yICE9IHBjdHgtPmRpcikgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8zX0JBRF9ET1RfRE9ULCBwY3R4KSkKKwkJCWZpeF9kb3Rkb3QoY3R4LCBkaXIsIHBjdHgtPmRpcik7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGdldHMgdGhlIGxvc3RfYW5kX2ZvdW5kIGlub2RlLCBtYWtpbmcgaXQgYSBkaXJlY3RvcnkKKyAqIGlmIG5lY2Vzc2FyeQorICovCitleHQyX2lub190IGUyZnNja19nZXRfbG9zdF9hbmRfZm91bmQoZTJmc2NrX3QgY3R4LCBpbnQgZml4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlleHQyX2lub190CQkJaW5vOworCWJsazY0X3QJCQlibGs7CisJZXJyY29kZV90CQlyZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UJaW5vZGU7CisJY2hhciAqCQkJYmxvY2s7CisJc3RhdGljIGNvbnN0IGNoYXIJbmFtZVtdID0gImxvc3QrZm91bmQiOworCXN0cnVjdCAJcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJaW50CQkJd2lsbF9yZWhhc2gsIGZsYWdzOworCisJaWYgKGN0eC0+bG9zdF9hbmRfZm91bmQpCisJCXJldHVybiBjdHgtPmxvc3RfYW5kX2ZvdW5kOworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCXdpbGxfcmVoYXNoID0gZTJmc2NrX2Rpcl93aWxsX2JlX3JlaGFzaGVkKGN0eCwgRVhUMl9ST09UX0lOTyk7CisJaWYgKHdpbGxfcmVoYXNoKSB7CisJCWZsYWdzID0gY3R4LT5mcy0+ZmxhZ3M7CisJCWN0eC0+ZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJfQorCXJldHZhbCA9IGV4dDJmc19sb29rdXAoZnMsIEVYVDJfUk9PVF9JTk8sIG5hbWUsCisJCQkgICAgICAgc2l6ZW9mKG5hbWUpLTEsIDAsICZpbm8pOworCWlmICh3aWxsX3JlaGFzaCkKKwkJY3R4LT5mcy0+ZmxhZ3MgPSAoZmxhZ3MgJiBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSB8CisJCQkoY3R4LT5mcy0+ZmxhZ3MgJiB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUyk7CisJaWYgKHJldHZhbCAmJiAhZml4KQorCQlyZXR1cm4gMDsKKwlpZiAoIXJldHZhbCkgeworCQkvKiBMb3N0K2ZvdW5kIHNob3VsZG4ndCBoYXZlIGlubGluZSBkYXRhICovCisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgRVhUMl9JTk9ERSgmaW5vZGUpLAorCQkJCQkJc2l6ZW9mKGlub2RlKSk7CisJCWlmIChmaXggJiYgcmV0dmFsKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKGZpeCAmJiAoaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKSB7CisJCQlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfM19MUEZfSU5MSU5FX0RBVEEsICZwY3R4KSkKKwkJCQlyZXR1cm4gMDsKKwkJCWdvdG8gdW5saW5rOworCQl9CisKKwkJaWYgKGZpeCAmJiAoaW5vZGUuaV9mbGFncyAmIEVYVDRfRU5DUllQVF9GTCkpIHsKKwkJCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8zX0xQRl9FTkNSWVBURUQsICZwY3R4KSkKKwkJCQlyZXR1cm4gMDsKKwkJCWdvdG8gdW5saW5rOworCQl9CisKKwkJaWYgKGV4dDJmc19jaGVja19kaXJlY3RvcnkoZnMsIGlubykgPT0gMCkgeworCQkJY3R4LT5sb3N0X2FuZF9mb3VuZCA9IGlubzsKKwkJCXJldHVybiBpbm87CisJCX0KKworCQkvKiBMb3N0K2ZvdW5kIGlzbid0IGEgZGlyZWN0b3J5ISAqLworCQlpZiAoIWZpeCkKKwkJCXJldHVybiAwOworCQlwY3R4LmlubyA9IGlubzsKKwkJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzNfTFBGX05PVERJUiwgJnBjdHgpKQorCQkJcmV0dXJuIDA7CisKK3VubGluazoKKwkJLyogT0ssIHVubGluayB0aGUgb2xkIC9sb3N0K2ZvdW5kIGZpbGUuICovCisJCXBjdHguZXJyY29kZSA9IGV4dDJmc191bmxpbmsoZnMsIEVYVDJfUk9PVF9JTk8sIG5hbWUsIGlubywgMCk7CisJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCXBjdHguc3RyID0gImV4dDJmc191bmxpbmsiOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0NSRUFURV9MUEZfRVJST1IsICZwY3R4KTsKKwkJCXJldHVybiAwOworCQl9CisJCSh2b2lkKSBlMmZzY2tfZGlyX2luZm9fc2V0X3BhcmVudChjdHgsIGlubywgMCk7CisJCWUyZnNja19hZGp1c3RfaW5vZGVfY291bnQoY3R4LCBpbm8sIC0xKTsKKwkJLyoKKwkJICogSWYgdGhlIG9sZCBsb3N0K2ZvdW5kIHdhcyBhIGRpcmVjdG9yeSwgd2UndmUganVzdAorCQkgKiBkaXNjb25uZWN0ZWQgaXQgZnJvbSB0aGUgZGlyZWN0b3J5IHRyZWUsIHdoaWNoCisJCSAqIG1lYW5zIHdlIG5lZWQgdG8gcmVzdGFydCB0aGUgZGlyZWN0b3J5IHRyZWUgc2Nhbi4KKwkJICogVGhlIHNpbXBsZXN0IHdheSB0byBkbyB0aGlzIGlzIHJlc3RhcnQgdGhlIHdob2xlCisJCSAqIGUyZnNjayBvcGVyYXRpb24uCisJCSAqLworCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKQorCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19SRVNUQVJUOworCX0gZWxzZSBpZiAocmV0dmFsICE9IEVYVDJfRVRfRklMRV9OT1RfRk9VTkQpIHsKKwkJcGN0eC5lcnJjb2RlID0gcmV0dmFsOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfRVJSX0ZJTkRfTFBGLCAmcGN0eCk7CisJfQorCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl8zX05PX0xGX0RJUiwgMCkpCisJCXJldHVybiAwOworCisJLyoKKwkgKiBSZWFkIHRoZSBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyBpbjsgd2UnbGwgYmUgbWVzc2luZyB3aXRoCisJICogdGhlbS4KKwkgKi8KKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwkvKgorCSAqIEZpcnN0LCBmaW5kIGEgZnJlZSBibG9jaworCSAqLworCWlmIChjdHgtPmxuZl9yZXBhaXJfYmxvY2spIHsKKwkJYmxrID0gY3R4LT5sbmZfcmVwYWlyX2Jsb2NrOworCQljdHgtPmxuZl9yZXBhaXJfYmxvY2sgPSAwOworCQlnb3RvIHNraXBfbmV3X2Jsb2NrOworCX0KKwlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgMCwgY3R4LT5ibG9ja19mb3VuZF9tYXAsICZibGspOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfM19MUEZfTk9fU1BBQ0UsICZwY3R4KSkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfTk9fU1BBQ0VfVE9fUkVDT1ZFUiwgJnBjdHgpOworCQljdHgtPmxvc3RfYW5kX2ZvdW5kID0gRVhUMl9ST09UX0lOTzsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChyZXR2YWwpIHsKKwkJcGN0eC5lcnJjb2RlID0gcmV0dmFsOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfRVJSX0xQRl9ORVdfQkxPQ0ssICZwY3R4KTsKKwkJcmV0dXJuIDA7CisJfQorCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoY3R4LT5ibG9ja19mb3VuZF9tYXAsIGJsayk7Citza2lwX25ld19ibG9jazoKKwlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBibGssICsxKTsKKworCS8qCisJICogTmV4dCBmaW5kIGEgZnJlZSBpbm9kZS4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfbmV3X2lub2RlKGZzLCBFWFQyX1JPT1RfSU5PLCAwNDA3MDAsCisJCQkJICBjdHgtPmlub2RlX3VzZWRfbWFwLCAmaW5vKTsKKwlpZiAocmV0dmFsID09IEVYVDJfRVRfSU5PREVfQUxMT0NfRkFJTCAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzNfTFBGX05PX1NQQUNFLCAmcGN0eCkpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX05PX1NQQUNFX1RPX1JFQ09WRVIsICZwY3R4KTsKKwkJY3R4LT5sb3N0X2FuZF9mb3VuZCA9IEVYVDJfUk9PVF9JTk87CisJCXJldHVybiAwOworCX0KKwlpZiAocmV0dmFsKSB7CisJCXBjdHguZXJyY29kZSA9IHJldHZhbDsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0VSUl9MUEZfTkVXX0lOT0RFLCAmcGN0eCk7CisJCXJldHVybiAwOworCX0KKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGlubyk7CisJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubyk7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCArMSwgMSk7CisKKwkvKgorCSAqIFNldCB1cCB0aGUgaW5vZGUgc3RydWN0dXJlCisJICovCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJaW5vZGUuaV9tb2RlID0gMDQwNzAwOworCWlub2RlLmlfc2l6ZSA9IGZzLT5ibG9ja3NpemU7CisJaW5vZGUuaV9hdGltZSA9IGlub2RlLmlfY3RpbWUgPSBpbm9kZS5pX210aW1lID0gY3R4LT5ub3c7CisJaW5vZGUuaV9saW5rc19jb3VudCA9IDI7CisJZXh0MmZzX2libGtfc2V0KGZzLCBFWFQyX0lOT0RFKCZpbm9kZSksIDEpOworCWlub2RlLmlfYmxvY2tbMF0gPSBibGs7CisKKwkvKgorCSAqIE5leHQsIHdyaXRlIG91dCB0aGUgaW5vZGUuCisJICovCisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgaW5vLCBFWFQyX0lOT0RFKCZpbm9kZSkpOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5zdHIgPSAiZXh0MmZzX3dyaXRlX2lub2RlIjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0NSRUFURV9MUEZfRVJST1IsICZwY3R4KTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBOb3cgbGV0J3MgY3JlYXRlIHRoZSBhY3R1YWwgZGF0YSBibG9jayBmb3IgdGhlIGlub2RlLgorCSAqIER1ZSB0byBtZXRhZGF0YV9jc3VtLCB0aGUgZGlyZWN0b3J5IGJsb2NrIE1VU1QgYmUgd3JpdHRlbgorCSAqIGFmdGVyIHRoZSBpbm9kZSBpcyB3cml0dGVuIHRvIGRpc2shCisJICovCisJcmV0dmFsID0gZXh0MmZzX25ld19kaXJfYmxvY2soZnMsIGlubywgRVhUMl9ST09UX0lOTywgJmJsb2NrKTsKKwlpZiAocmV0dmFsKSB7CisJCXBjdHguZXJyY29kZSA9IHJldHZhbDsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0VSUl9MUEZfTkVXX0RJUl9CTE9DSywgJnBjdHgpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgYmxrLCBibG9jaywgMCwgaW5vKTsKKwlleHQyZnNfZnJlZV9tZW0oJmJsb2NrKTsKKwlpZiAocmV0dmFsKSB7CisJCXBjdHguZXJyY29kZSA9IHJldHZhbDsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0VSUl9MUEZfV1JJVEVfQkxPQ0ssICZwY3R4KTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBGaW5hbGx5LCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBsaW5rCisJICovCisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2xpbmsoZnMsIEVYVDJfUk9PVF9JTk8sIG5hbWUsIGlubywgRVhUMl9GVF9ESVIpOworCWlmIChwY3R4LmVycmNvZGUgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIEVYVDJfUk9PVF9JTk8pOworCQlpZiAocGN0eC5lcnJjb2RlKQorCQkJZ290byBsaW5rX2Vycm9yOworCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfbGluayhmcywgRVhUMl9ST09UX0lOTywgbmFtZSwgaW5vLAorCQkJCQkgICBFWFQyX0ZUX0RJUik7CisJfQorCWlmIChwY3R4LmVycmNvZGUpIHsKK2xpbmtfZXJyb3I6CisJCXBjdHguc3RyID0gImV4dDJmc19saW5rIjsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0NSRUFURV9MUEZfRVJST1IsICZwY3R4KTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBNaXNjZWxsYW5lb3VzIGJvb2trZWVwaW5nIHRoYXQgbmVlZHMgdG8gYmUga2VwdCBzdHJhaWdodC4KKwkgKi8KKwllMmZzY2tfYWRkX2Rpcl9pbmZvKGN0eCwgaW5vLCBFWFQyX1JPT1RfSU5PKTsKKwllMmZzY2tfYWRqdXN0X2lub2RlX2NvdW50KGN0eCwgRVhUMl9ST09UX0lOTywgMSk7CisJZXh0MmZzX2ljb3VudF9zdG9yZShjdHgtPmlub2RlX2NvdW50LCBpbm8sIDIpOworCWV4dDJmc19pY291bnRfc3RvcmUoY3R4LT5pbm9kZV9saW5rX2luZm8sIGlubywgMik7CisJY3R4LT5sb3N0X2FuZF9mb3VuZCA9IGlubzsKKwlxdW90YV9kYXRhX2FkZChjdHgtPnFjdHgsICZpbm9kZSwgaW5vLCBmcy0+YmxvY2tzaXplKTsKKwlxdW90YV9kYXRhX2lub2RlcyhjdHgtPnFjdHgsICZpbm9kZSwgaW5vLCArMSk7CisjaWYgMAorCXByaW50ZigiL2xvc3QrZm91bmQgY3JlYXRlZDsgaW5vZGUgIyVsdVxuIiwgaW5vKTsKKyNlbmRpZgorCXJldHVybiBpbm87Cit9CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgd2lsbCBjb25uZWN0IGEgZmlsZSB0byBsb3N0K2ZvdW5kCisgKi8KK2ludCBlMmZzY2tfcmVjb25uZWN0X2ZpbGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyCQluYW1lWzgwXTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJc3RydWN0IGV4dDJfaW5vZGUgCWlub2RlOworCWludAkJZmlsZV90eXBlID0gMDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJcGN0eC5pbm8gPSBpbm87CisKKwlpZiAoIWN0eC0+YmFkX2xvc3RfYW5kX2ZvdW5kICYmICFjdHgtPmxvc3RfYW5kX2ZvdW5kKSB7CisJCWlmIChlMmZzY2tfZ2V0X2xvc3RfYW5kX2ZvdW5kKGN0eCwgMSkgPT0gMCkKKwkJCWN0eC0+YmFkX2xvc3RfYW5kX2ZvdW5kKys7CisJfQorCWlmIChjdHgtPmJhZF9sb3N0X2FuZF9mb3VuZCkgeworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfTk9fTFBGLCAmcGN0eCk7CisJCXJldHVybiAxOworCX0KKworCXNwcmludGYobmFtZSwgIiMldSIsIGlubyk7CisJaWYgKGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSkgPT0gMCkKKwkJZmlsZV90eXBlID0gZXh0Ml9maWxlX3R5cGUoaW5vZGUuaV9tb2RlKTsKKwlyZXR2YWwgPSBleHQyZnNfbGluayhmcywgY3R4LT5sb3N0X2FuZF9mb3VuZCwgbmFtZSwgaW5vLCBmaWxlX3R5cGUpOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzNfRVhQQU5EX0xGX0RJUiwgJnBjdHgpKQorCQkJcmV0dXJuIDE7CisJCXJldHZhbCA9IGUyZnNja19leHBhbmRfZGlyZWN0b3J5KGN0eCwgY3R4LT5sb3N0X2FuZF9mb3VuZCwKKwkJCQkJCSAxLCAwKTsKKwkJaWYgKHJldHZhbCkgeworCQkJcGN0eC5lcnJjb2RlID0gcmV0dmFsOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8zX0NBTlRfRVhQQU5EX0xQRiwgJnBjdHgpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX2xpbmsoZnMsIGN0eC0+bG9zdF9hbmRfZm91bmQsIG5hbWUsCisJCQkJICAgICBpbm8sIGZpbGVfdHlwZSk7CisJfQorCWlmIChyZXR2YWwpIHsKKwkJcGN0eC5lcnJjb2RlID0gcmV0dmFsOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNfQ0FOVF9SRUNPTk5FQ1QsICZwY3R4KTsKKwkJcmV0dXJuIDE7CisJfQorCWUyZnNja19hZGp1c3RfaW5vZGVfY291bnQoY3R4LCBpbm8sIDEpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBVdGlsaXR5IHJvdXRpbmUgdG8gYWRqdXN0IHRoZSBpbm9kZSBjb3VudHMgb24gYW4gaW5vZGUuCisgKi8KK2VycmNvZGVfdCBlMmZzY2tfYWRqdXN0X2lub2RlX2NvdW50KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGludCBhZGopCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAkJcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlIAlpbm9kZTsKKworCWlmICghaW5vKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworI2lmIDAKKwlwcmludGYoIkFkanVzdGluZyBsaW5rIGNvdW50IGZvciBpbm9kZSAlbHUgYnkgJWQgKGZyb20gJWQpXG4iLCBpbm8sIGFkaiwKKwkgICAgICAgaW5vZGUuaV9saW5rc19jb3VudCk7CisjZW5kaWYKKworCWlmIChhZGogPT0gMSkgeworCQlleHQyZnNfaWNvdW50X2luY3JlbWVudChjdHgtPmlub2RlX2NvdW50LCBpbm8sIDApOworCQlpZiAoaW5vZGUuaV9saW5rc19jb3VudCA9PSAoX191MTYpIH4wKQorCQkJcmV0dXJuIDA7CisJCWV4dDJmc19pY291bnRfaW5jcmVtZW50KGN0eC0+aW5vZGVfbGlua19pbmZvLCBpbm8sIDApOworCQlpbm9kZS5pX2xpbmtzX2NvdW50Kys7CisJfSBlbHNlIGlmIChhZGogPT0gLTEpIHsKKwkJZXh0MmZzX2ljb3VudF9kZWNyZW1lbnQoY3R4LT5pbm9kZV9jb3VudCwgaW5vLCAwKTsKKwkJaWYgKGlub2RlLmlfbGlua3NfY291bnQgPT0gMCkKKwkJCXJldHVybiAwOworCQlleHQyZnNfaWNvdW50X2RlY3JlbWVudChjdHgtPmlub2RlX2xpbmtfaW5mbywgaW5vLCAwKTsKKwkJaW5vZGUuaV9saW5rc19jb3VudC0tOworCX0KKworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZpeCBwYXJlbnQgLS0tIHRoaXMgcm91dGluZSBmaXhlcyB1cCB0aGUgcGFyZW50IG9mIGEgZGlyZWN0b3J5LgorICovCitzdHJ1Y3QgZml4X2RvdGRvdF9zdHJ1Y3QgeworCWV4dDJfZmlsc3lzCWZzOworCWV4dDJfaW5vX3QJcGFyZW50OworCWludAkJZG9uZTsKKwllMmZzY2tfdAljdHg7Cit9OworCitzdGF0aWMgaW50IGZpeF9kb3Rkb3RfcHJvYyhzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCSAgIGludAlvZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgaW50CWJsb2Nrc2l6ZSBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICBjaGFyCSpidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgdm9pZAkqcHJpdl9kYXRhKQoreworCXN0cnVjdCBmaXhfZG90ZG90X3N0cnVjdCAqZnAgPSAoc3RydWN0IGZpeF9kb3Rkb3Rfc3RydWN0ICopIHByaXZfZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWlmIChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgIT0gMikKKwkJcmV0dXJuIDA7CisJaWYgKHN0cm5jbXAoZGlyZW50LT5uYW1lLCAiLi4iLCAyKSkKKwkJcmV0dXJuIDA7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJcmV0dmFsID0gZTJmc2NrX2FkanVzdF9pbm9kZV9jb3VudChmcC0+Y3R4LCBkaXJlbnQtPmlub2RlLCAtMSk7CisJaWYgKHJldHZhbCkgeworCQlwY3R4LmVycmNvZGUgPSByZXR2YWw7CisJCWZpeF9wcm9ibGVtKGZwLT5jdHgsIFBSXzNfQURKVVNUX0lOT0RFLCAmcGN0eCk7CisJfQorCXJldHZhbCA9IGUyZnNja19hZGp1c3RfaW5vZGVfY291bnQoZnAtPmN0eCwgZnAtPnBhcmVudCwgMSk7CisJaWYgKHJldHZhbCkgeworCQlwY3R4LmVycmNvZGUgPSByZXR2YWw7CisJCWZpeF9wcm9ibGVtKGZwLT5jdHgsIFBSXzNfQURKVVNUX0lOT0RFLCAmcGN0eCk7CisJfQorCWRpcmVudC0+aW5vZGUgPSBmcC0+cGFyZW50OworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZmlsZXR5cGUoZnAtPmN0eC0+ZnMtPnN1cGVyKSkKKwkJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpcmVudCwgRVhUMl9GVF9ESVIpOworCWVsc2UKKwkJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpcmVudCwgRVhUMl9GVF9VTktOT1dOKTsKKworCWZwLT5kb25lKys7CisJcmV0dXJuIERJUkVOVF9BQk9SVCB8IERJUkVOVF9DSEFOR0VEOworfQorCitzdGF0aWMgdm9pZCBmaXhfZG90ZG90KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sIGV4dDJfaW5vX3QgcGFyZW50KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBmaXhfZG90ZG90X3N0cnVjdCBmcDsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0IHBjdHg7CisJaW50CQlmbGFncywgd2lsbF9yZWhhc2g7CisKKwlmcC5mcyA9IGZzOworCWZwLnBhcmVudCA9IHBhcmVudDsKKwlmcC5kb25lID0gMDsKKwlmcC5jdHggPSBjdHg7CisKKyNpZiAwCisJcHJpbnRmKCJGaXhpbmcgJy4uJyBvZiBpbm9kZSAlbHUgdG8gYmUgJWx1Li4uXG4iLCBpbm8sIHBhcmVudCk7CisjZW5kaWYKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJcGN0eC5pbm8gPSBpbm87CisJd2lsbF9yZWhhc2ggPSBlMmZzY2tfZGlyX3dpbGxfYmVfcmVoYXNoZWQoY3R4LCBpbm8pOworCWlmICh3aWxsX3JlaGFzaCkgeworCQlmbGFncyA9IGN0eC0+ZnMtPmZsYWdzOworCQljdHgtPmZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCX0KKwlyZXR2YWwgPSBleHQyZnNfZGlyX2l0ZXJhdGUoZnMsIGlubywgRElSRU5UX0ZMQUdfSU5DTFVERV9FTVBUWSwKKwkJCQkgICAgMCwgZml4X2RvdGRvdF9wcm9jLCAmZnApOworCWlmICh3aWxsX3JlaGFzaCkKKwkJY3R4LT5mcy0+ZmxhZ3MgPSAoZmxhZ3MgJiBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSB8CisJCQkoY3R4LT5mcy0+ZmxhZ3MgJiB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUyk7CisJaWYgKHJldHZhbCB8fCAhZnAuZG9uZSkgeworCQlwY3R4LmVycmNvZGUgPSByZXR2YWw7CisJCWZpeF9wcm9ibGVtKGN0eCwgcmV0dmFsID8gUFJfM19GSVhfUEFSRU5UX0VSUiA6CisJCQkgICAgUFJfM19GSVhfUEFSRU5UX05PRklORCwgJnBjdHgpOworCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwl9CisJKHZvaWQpIGUyZnNja19kaXJfaW5mb19zZXRfZG90ZG90KGN0eCwgaW5vLCBwYXJlbnQpOworCWlmIChlMmZzY2tfZGlyX2luZm9fc2V0X3BhcmVudChjdHgsIGlubywgY3R4LT5sb3N0X2FuZF9mb3VuZCkpCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM19OT19ESVJJTkZPLCAmcGN0eCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBUaGVzZSByb3V0aW5lcyBhcmUgcmVzcG9uc2libGUgZm9yIGV4cGFuZGluZyBhIC9sb3N0K2ZvdW5kIGlmIGl0IGlzCisgKiB0b28gc21hbGwuCisgKi8KKworc3RydWN0IGV4cGFuZF9kaXJfc3RydWN0IHsKKwlibGs2NF90CQkJbnVtOworCWUyX2Jsa2NudF90CQlndWFyYW50ZWVkX3NpemU7CisJYmxrNjRfdAkJCW5ld2Jsb2NrczsKKwlibGs2NF90CQkJbGFzdF9ibG9jazsKKwllcnJjb2RlX3QJCWVycjsKKwllMmZzY2tfdAkJY3R4OworCWV4dDJfaW5vX3QJCWRpcjsKK307CisKK3N0YXRpYyBpbnQgZXhwYW5kX2Rpcl9wcm9jKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgYmxrNjRfdAkqYmxvY2tuciwKKwkJCSAgIGUyX2Jsa2NudF90CWJsb2NrY250LAorCQkJICAgYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgdm9pZAkqcHJpdl9kYXRhKQoreworCXN0cnVjdCBleHBhbmRfZGlyX3N0cnVjdCAqZXMgPSAoc3RydWN0IGV4cGFuZF9kaXJfc3RydWN0ICopIHByaXZfZGF0YTsKKwlibGs2NF90CW5ld19ibGs7CisJc3RhdGljIGJsazY0X3QJbGFzdF9ibGsgPSAwOworCWNoYXIJCSpibG9jazsKKwllcnJjb2RlX3QJcmV0dmFsOworCWUyZnNja190CWN0eDsKKworCWN0eCA9IGVzLT5jdHg7CisKKwlpZiAoZXMtPmd1YXJhbnRlZWRfc2l6ZSAmJiBibG9ja2NudCA+PSBlcy0+Z3VhcmFudGVlZF9zaXplKQorCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisKKwlpZiAoYmxvY2tjbnQgPiAwKQorCQllcy0+bGFzdF9ibG9jayA9IGJsb2NrY250OworCWlmICgqYmxvY2tucikgeworCQlsYXN0X2JsayA9ICpibG9ja25yOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoYmxvY2tjbnQgJiYKKwkgICAgKEVYVDJGU19CMkMoZnMsIGxhc3RfYmxrKSA9PSBFWFQyRlNfQjJDKGZzLCBsYXN0X2JsayArIDEpKSkKKwkJbmV3X2JsayA9IGxhc3RfYmxrICsgMTsKKwllbHNlIHsKKwkJbGFzdF9ibGsgJj0gfkVYVDJGU19DTFVTVEVSX01BU0soZnMpOworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgbGFzdF9ibGssIGN0eC0+YmxvY2tfZm91bmRfbWFwLAorCQkJCQkgICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXMtPmVyciA9IHJldHZhbDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQllcy0+bmV3YmxvY2tzKys7CisJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIG5ld19ibGssICsxKTsKKwl9CisJbGFzdF9ibGsgPSBuZXdfYmxrOworCisJaWYgKGJsb2NrY250ID4gMCkgeworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Rpcl9ibG9jayhmcywgMCwgMCwgJmJsb2NrKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXMtPmVyciA9IHJldHZhbDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQllcy0+bnVtLS07CisJCXJldHZhbCA9IGV4dDJmc193cml0ZV9kaXJfYmxvY2s0KGZzLCBuZXdfYmxrLCBibG9jaywgMCwKKwkJCQkJCSBlcy0+ZGlyKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZibG9jayk7CisJfSBlbHNlCisJCXJldHZhbCA9IGV4dDJmc196ZXJvX2Jsb2NrczIoZnMsIG5ld19ibGssIDEsIE5VTEwsIE5VTEwpOworCWlmIChyZXR2YWwpIHsKKwkJZXMtPmVyciA9IHJldHZhbDsKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCX0KKwkqYmxvY2tuciA9IG5ld19ibGs7CisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgbmV3X2Jsayk7CisKKwlpZiAoZXMtPm51bSA9PSAwKQorCQlyZXR1cm4gKEJMT0NLX0NIQU5HRUQgfCBCTE9DS19BQk9SVCk7CisJZWxzZQorCQlyZXR1cm4gQkxPQ0tfQ0hBTkdFRDsKK30KKworZXJyY29kZV90IGUyZnNja19leHBhbmRfZGlyZWN0b3J5KGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBkaXIsCisJCQkJICBpbnQgbnVtLCBpbnQgZ3VhcmFudGVlZF9zaXplKQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBleHBhbmRfZGlyX3N0cnVjdCBlczsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZQlpbm9kZTsKKwlibGs2NF90CQlzejsKKworCWlmICghKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykpCisJCXJldHVybiBFWFQyX0VUX1JPX0ZJTFNZUzsKKworCS8qCisJICogUmVhZCB0aGUgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMgaW47IHdlJ2xsIGJlIG1lc3Npbmcgd2l0aAorCSAqIHRoZW0uCisJICovCisJZTJmc2NrX3JlYWRfYml0bWFwcyhjdHgpOworCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2RpcmVjdG9yeShmcywgZGlyKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZXMubnVtID0gbnVtOworCWVzLmd1YXJhbnRlZWRfc2l6ZSA9IGd1YXJhbnRlZWRfc2l6ZTsKKwllcy5sYXN0X2Jsb2NrID0gMDsKKwllcy5lcnIgPSAwOworCWVzLm5ld2Jsb2NrcyA9IDA7CisJZXMuY3R4ID0gY3R4OworCWVzLmRpciA9IGRpcjsKKworCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgZGlyLCBCTE9DS19GTEFHX0FQUEVORCwKKwkJCQkgICAgICAgMCwgZXhwYW5kX2Rpcl9wcm9jLCAmZXMpOworCisJaWYgKGVzLmVycikKKwkJcmV0dXJuIGVzLmVycjsKKworCS8qCisJICogVXBkYXRlIHRoZSBzaXplIGFuZCBibG9jayBjb3VudCBmaWVsZHMgaW4gdGhlIGlub2RlLgorCSAqLworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGRpciwKKwkJCQkJRVhUMl9JTk9ERSgmaW5vZGUpLCBzaXplb2YoaW5vZGUpKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJc3ogPSAoZXMubGFzdF9ibG9jayArIDEpICogZnMtPmJsb2Nrc2l6ZTsKKwlyZXR2YWwgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsIEVYVDJfSU5PREUoJmlub2RlKSwgc3opOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJZXh0MmZzX2libGtfYWRkX2Jsb2NrcyhmcywgRVhUMl9JTk9ERSgmaW5vZGUpLCBlcy5uZXdibG9ja3MpOworCXF1b3RhX2RhdGFfYWRkKGN0eC0+cWN0eCwgJmlub2RlLCBkaXIsIGVzLm5ld2Jsb2NrcyAqIGZzLT5ibG9ja3NpemUpOworCisJZTJmc2NrX3dyaXRlX2lub2RlX2Z1bGwoY3R4LCBkaXIsIEVYVDJfSU5PREUoJmlub2RlKSwKKwkJCQlzaXplb2YoaW5vZGUpLCAiZXhwYW5kX2RpcmVjdG9yeSIpOworCisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcGFzczQuYyBiL2UyZnNwcm9ncy9lMmZzY2svcGFzczQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzEwMWZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9wYXNzNC5jCkBAIC0wLDAgKzEsMjA5IEBACisvKgorICogcGFzczQuYyAtLSBwYXNzICM0IG9mIGUyZnNjazogQ2hlY2sgcmVmZXJlbmNlIGNvdW50cworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKgorICogUGFzcyA0IGZyZWVzIHRoZSBmb2xsb3dpbmcgZGF0YSBzdHJ1Y3R1cmVzOgorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggaW5vZGVzIGFyZSBpbiBiYWQgYmxvY2tzLgkoaW5vZGVfYmJfbWFwKQorICogCS0gQSBiaXRtYXAgb2Ygd2hpY2ggaW5vZGVzIGFyZSBpbWFnaWMgaW5vZGVzLgkoaW5vZGVfaW1hZ2ljX21hcCkKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSAicHJvYmxlbS5oIgorI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIHdoZW4gYW4gaW5vZGUgaXMgbm90IGNvbm5lY3RlZCB0byB0aGUKKyAqIGRpcmVjdG9yeSB0cmVlLgorICoKKyAqIFRoaXMgc3Vicm91dGluZSByZXR1cm5zIDEgdGhlbiB0aGUgY2FsbGVyIHNob3VsZG4ndCBib3RoZXIgd2l0aCB0aGUKKyAqIHJlc3Qgb2YgdGhlIHBhc3MgNCB0ZXN0cy4KKyAqLworc3RhdGljIGludCBkaXNjb25uZWN0X2lub2RlKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpLAorCQkJICAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCV9fdTMyIGVhbWFnaWMgPSAwOworCWludCBleHRyYV9zaXplID0gMDsKKworCWUyZnNja19yZWFkX2lub2RlX2Z1bGwoY3R4LCBpLCBFWFQyX0lOT0RFKGlub2RlKSwKKwkJCSAgICAgICBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSwKKwkJCSAgICAgICAicGFzczQ6IGRpc2Nvbm5lY3RfaW5vZGUiKTsKKwlpZiAoRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcikgPiBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpCisJCWV4dHJhX3NpemUgPSBpbm9kZS0+aV9leHRyYV9pc2l6ZTsKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCXBjdHguaW5vID0gaTsKKwlwY3R4Lmlub2RlID0gRVhUMl9JTk9ERShpbm9kZSk7CisKKwlpZiAoRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcikgLUVYVDJfR09PRF9PTERfSU5PREVfU0laRSAtZXh0cmFfc2l6ZSA+MCkKKwkJZWFtYWdpYyA9ICooX191MzIgKikoKChjaGFyICopaW5vZGUpICtFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCQkJCSAgICAgZXh0cmFfc2l6ZSk7CisJLyoKKwkgKiBPZmZlciB0byBkZWxldGUgYW55IHplcm8tbGVuZ3RoIGZpbGVzIHRoYXQgZG9lcyBub3QgaGF2ZQorCSAqIGJsb2Nrcy4gIElmIHRoZXJlIGlzIGFuIEVBIGJsb2NrLCBpdCBtaWdodCBoYXZlIHVzZWZ1bAorCSAqIGluZm9ybWF0aW9uLCBzbyB3ZSB3b24ndCBwcm9tcHQgdG8gZGVsZXRlIGl0LCBidXQgbGV0IGl0IGJlCisJICogcmVjb25uZWN0ZWQgdG8gbG9zdCtmb3VuZC4KKwkgKi8KKwlpZiAoIWlub2RlLT5pX2Jsb2NrcyAmJiBlYW1hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUMgJiYKKwkgICAgKExJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgfHwgTElOVVhfU19JU0RJUihpbm9kZS0+aV9tb2RlKSkpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfNF9aRVJPX0xFTl9JTk9ERSwgJnBjdHgpKSB7CisJCQllMmZzY2tfY2xlYXJfaW5vZGUoY3R4LCBpLCBFWFQyX0lOT0RFKGlub2RlKSwgMCwKKwkJCQkJICAgImRpc2Nvbm5lY3RfaW5vZGUiKTsKKwkJCS8qCisJCQkgKiBGaXggdXAgdGhlIGJpdG1hcHMuLi4KKwkJCSAqLworCQkJZTJmc2NrX3JlYWRfYml0bWFwcyhjdHgpOworCQkJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaSwgLTEsCisJCQkJCQkgIExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkpOworCQkJcXVvdGFfZGF0YV9pbm9kZXMoY3R4LT5xY3R4LCBpbm9kZSwgaSwgLTEpOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKgorCSAqIFByb21wdCB0byByZWNvbm5lY3QuCisJICovCisJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfNF9VTkFUVEFDSEVEX0lOT0RFLCAmcGN0eCkpIHsKKwkJaWYgKGUyZnNja19yZWNvbm5lY3RfZmlsZShjdHgsIGkpKQorCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWYgd2UgZG9uJ3QgYXR0YWNoIHRoZSBpbm9kZSwgdGhlbiBza2lwIHRoZQorCQkgKiBpX2xpbmtzX3Rlc3Qgc2luY2UgdGhlcmUncyBubyBwb2ludCBpbiB0cnlpbmcgdG8KKwkJICogZm9yY2UgaV9saW5rc19jb3VudCB0byB6ZXJvLgorCQkgKi8KKwkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworCit2b2lkIGUyZnNja19wYXNzNChlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWV4dDJfaW5vX3QJaTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZQkqaW5vZGU7CisJaW50IGlub2RlX3NpemUgPSBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2s7CisjZW5kaWYKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJX191MTYJbGlua19jb3VudCwgbGlua19jb3VudGVkOworCWNoYXIJKmJ1ZiA9IDA7CisJZGdycF90CWdyb3VwLCBtYXhncm91cDsKKworCWluaXRfcmVzb3VyY2VfdHJhY2soJnJ0cmFjaywgY3R4LT5mcy0+aW8pOworCisjaWZkZWYgTVRSQUNFCisJbXRyYWNlX3ByaW50KCJQYXNzIDQiKTsKKyNlbmRpZgorCS8qCisJICogU2luY2UgcGFzczQgaXMgbW9zdGx5IENQVSBib3VuZCwgc3RhcnQgcmVhZGFoZWFkIG9mIGJpdG1hcHMKKwkgKiBhaGVhZCBvZiBwYXNzIDUgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5IGxvYWRlZCB0aGVtLgorCSAqLworCWlmIChjdHgtPnJlYWRhaGVhZF9rYiAmJgorCSAgICAoZnMtPmJsb2NrX21hcCA9PSBOVUxMIHx8IGZzLT5pbm9kZV9tYXAgPT0gTlVMTCkpCisJCWUyZnNja19yZWFkYWhlYWQoZnMsIEUyRlNDS19SRUFEQV9CQklUTUFQIHwKKwkJCQkgICAgIEUyRlNDS19SRUFEQV9JQklUTUFQLAorCQkJCSAwLCBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNF9QQVNTX0hFQURFUiwgJnBjdHgpOworCisJZ3JvdXAgPSAwOworCW1heGdyb3VwID0gZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJaWYgKGN0eC0+cHJvZ3Jlc3MpCisJCWlmICgoY3R4LT5wcm9ncmVzcykoY3R4LCA0LCAwLCBtYXhncm91cCkpCisJCQlyZXR1cm47CisKKwlpbm9kZSA9IGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBpbm9kZV9zaXplLCAic2NyYXRjaCBpbm9kZSIpOworCisJLyogUHJvdGVjdCBsb29wIGZyb20gd3JhcC1hcm91bmQgaWYgc19pbm9kZXNfY291bnQgbWF4ZWQgKi8KKwlmb3IgKGk9MTsgaSA8PSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50ICYmIGkgPiAwOyBpKyspIHsKKwkJaW50IGlzZGlyOworCisJCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCQlnb3RvIGVycm91dDsKKwkJaWYgKChpICUgZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXApID09IDApIHsKKwkJCWdyb3VwKys7CisJCQlpZiAoY3R4LT5wcm9ncmVzcykKKwkJCQlpZiAoKGN0eC0+cHJvZ3Jlc3MpKGN0eCwgNCwgZ3JvdXAsIG1heGdyb3VwKSkKKwkJCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJaWYgKGkgPT0gcXVvdGFfdHlwZTJpbnVtKFBSSlFVT1RBLCBjdHgtPmZzLT5zdXBlcikgfHwKKwkJICAgIGkgPT0gRVhUMl9CQURfSU5PIHx8CisJCSAgICAoaSA+IEVYVDJfUk9PVF9JTk8gJiYgaSA8IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSkpCisJCQljb250aW51ZTsKKwkJaWYgKCEoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3VzZWRfbWFwLCBpKSkgfHwKKwkJICAgIChjdHgtPmlub2RlX2ltYWdpY19tYXAgJiYKKwkJICAgICBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfaW1hZ2ljX21hcCwgaSkpIHx8CisJCSAgICAoY3R4LT5pbm9kZV9iYl9tYXAgJiYKKwkJICAgICBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfYmJfbWFwLCBpKSkpCisJCQljb250aW51ZTsKKwkJZXh0MmZzX2ljb3VudF9mZXRjaChjdHgtPmlub2RlX2xpbmtfaW5mbywgaSwgJmxpbmtfY291bnQpOworCQlleHQyZnNfaWNvdW50X2ZldGNoKGN0eC0+aW5vZGVfY291bnQsIGksICZsaW5rX2NvdW50ZWQpOworCQlpZiAobGlua19jb3VudGVkID09IDApIHsKKwkJCWlmICghYnVmKQorCQkJCWJ1ZiA9IGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LAorCQkJCSAgICAgZnMtPmJsb2Nrc2l6ZSwgImJhZF9pbm9kZSBidWZmZXIiKTsKKwkJCWlmIChlMmZzY2tfcHJvY2Vzc19iYWRfaW5vZGUoY3R4LCAwLCBpLCBidWYpKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGRpc2Nvbm5lY3RfaW5vZGUoY3R4LCBpLCBpbm9kZSkpCisJCQkJY29udGludWU7CisJCQlleHQyZnNfaWNvdW50X2ZldGNoKGN0eC0+aW5vZGVfbGlua19pbmZvLCBpLAorCQkJCQkgICAgJmxpbmtfY291bnQpOworCQkJZXh0MmZzX2ljb3VudF9mZXRjaChjdHgtPmlub2RlX2NvdW50LCBpLAorCQkJCQkgICAgJmxpbmtfY291bnRlZCk7CisJCX0KKwkJaXNkaXIgPSBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwgaSk7CisJCWlmIChpc2RpciAmJiAobGlua19jb3VudGVkID4gRVhUMl9MSU5LX01BWCkpCisJCQlsaW5rX2NvdW50ZWQgPSAxOworCQlpZiAobGlua19jb3VudGVkICE9IGxpbmtfY291bnQpIHsKKwkJCWUyZnNja19yZWFkX2lub2RlX2Z1bGwoY3R4LCBpLCBFWFQyX0lOT0RFKGlub2RlKSwKKwkJCQkJICAgICAgIGlub2RlX3NpemUsICJwYXNzNCIpOworCQkJcGN0eC5pbm8gPSBpOworCQkJcGN0eC5pbm9kZSA9IEVYVDJfSU5PREUoaW5vZGUpOworCQkJaWYgKChsaW5rX2NvdW50ICE9IGlub2RlLT5pX2xpbmtzX2NvdW50KSAmJiAhaXNkaXIgJiYKKwkJCSAgICAoaW5vZGUtPmlfbGlua3NfY291bnQgPD0gRVhUMl9MSU5LX01BWCkpIHsKKwkJCQlwY3R4Lm51bSA9IGxpbmtfY291bnQ7CisJCQkJZml4X3Byb2JsZW0oY3R4LAorCQkJCQkgICAgUFJfNF9JTkNPTlNJU1RFTlRfQ09VTlQsICZwY3R4KTsKKwkJCX0KKwkJCXBjdHgubnVtID0gbGlua19jb3VudGVkOworCQkJLyogaV9saW5rX2NvdW50IHdhcyBwcmV2aW91c2x5IGV4Y2VlZGVkLCBidXQgbm8gbG9uZ2VyCisJCQkgKiBpcywgZml4IHRoaXMgYnV0IGRvbid0IGNvbnNpZGVyIGl0IGFuIGVycm9yICovCisJCQlpZiAoKGlzZGlyICYmIGxpbmtfY291bnRlZCA+IDEgJiYKKwkJCSAgICAgKGlub2RlLT5pX2ZsYWdzICYgRVhUMl9JTkRFWF9GTCkgJiYKKwkJCSAgICAgbGlua19jb3VudCA9PSAxICYmICEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykpIHx8CisJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl80X0JBRF9SRUZfQ09VTlQsICZwY3R4KSkgeworCQkJCWlub2RlLT5pX2xpbmtzX2NvdW50ID0gbGlua19jb3VudGVkOworCQkJCWUyZnNja193cml0ZV9pbm9kZV9mdWxsKGN0eCwgaSwKKwkJCQkJCQlFWFQyX0lOT0RFKGlub2RlKSwKKwkJCQkJCQlpbm9kZV9zaXplLCAicGFzczQiKTsKKwkJCX0KKwkJfQorCX0KKwlleHQyZnNfZnJlZV9pY291bnQoY3R4LT5pbm9kZV9saW5rX2luZm8pOyBjdHgtPmlub2RlX2xpbmtfaW5mbyA9IDA7CisJZXh0MmZzX2ZyZWVfaWNvdW50KGN0eC0+aW5vZGVfY291bnQpOyBjdHgtPmlub2RlX2NvdW50ID0gMDsKKwlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9iYl9tYXApOworCWN0eC0+aW5vZGVfYmJfbWFwID0gMDsKKwlleHQyZnNfZnJlZV9pbm9kZV9iaXRtYXAoY3R4LT5pbm9kZV9pbWFnaWNfbWFwKTsKKwljdHgtPmlub2RlX2ltYWdpY19tYXAgPSAwOworZXJyb3V0OgorCWlmIChidWYpCisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKworCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgXygiUGFzcyA0IiksICZydHJhY2ssIGN0eC0+ZnMtPmlvKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9wYXNzNS5jIGIvZTJmc3Byb2dzL2UyZnNjay9wYXNzNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNTViN2UKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3Bhc3M1LmMKQEAgLTAsMCArMSw5MjkgQEAKKy8qCisgKiBwYXNzNS5jIC0tLSBjaGVjayBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBhZ2FpbnN0IG9uLWRpc2sgYml0bWFwcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgInByb2JsZW0uaCIKKworI2RlZmluZSBESVZfUk9VTkRfVVAobixkKSAoKChuKSArIChkKSAtIDEpIC8gKGQpKQorCitzdGF0aWMgdm9pZCBjaGVja19ibG9ja19iaXRtYXBzKGUyZnNja190IGN0eCk7CitzdGF0aWMgdm9pZCBjaGVja19pbm9kZV9iaXRtYXBzKGUyZnNja190IGN0eCk7CitzdGF0aWMgdm9pZCBjaGVja19pbm9kZV9lbmQoZTJmc2NrX3QgY3R4KTsKK3N0YXRpYyB2b2lkIGNoZWNrX2Jsb2NrX2VuZChlMmZzY2tfdCBjdHgpOworc3RhdGljIHZvaWQgY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtKGUyZnNja190IGN0eCk7CitzdGF0aWMgdm9pZCBjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW0oZTJmc2NrX3QgY3R4KTsKKwordm9pZCBlMmZzY2tfcGFzczUoZTJmc2NrX3QgY3R4KQoreworI2lmZGVmIFJFU09VUkNFX1RSQUNLCisJc3RydWN0IHJlc291cmNlX3RyYWNrCXJ0cmFjazsKKyNlbmRpZgorCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKworI2lmZGVmIE1UUkFDRQorCW10cmFjZV9wcmludCgiUGFzcyA1Iik7CisjZW5kaWYKKworCWluaXRfcmVzb3VyY2VfdHJhY2soJnJ0cmFjaywgY3R4LT5mcy0+aW8pOworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl81X1BBU1NfSEVBREVSLCAmcGN0eCk7CisKKwlpZiAoY3R4LT5wcm9ncmVzcykKKwkJaWYgKChjdHgtPnByb2dyZXNzKShjdHgsIDUsIDAsIGN0eC0+ZnMtPmdyb3VwX2Rlc2NfY291bnQqMikpCisJCQlyZXR1cm47CisKKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwljaGVja19ibG9ja19iaXRtYXBzKGN0eCk7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TSUdOQUxfTUFTSykKKwkJcmV0dXJuOworCWNoZWNrX2lub2RlX2JpdG1hcHMoY3R4KTsKKwlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQlyZXR1cm47CisJY2hlY2tfaW5vZGVfZW5kKGN0eCk7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TSUdOQUxfTUFTSykKKwkJcmV0dXJuOworCWNoZWNrX2Jsb2NrX2VuZChjdHgpOworCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfU0lHTkFMX01BU0spCisJCXJldHVybjsKKworCWNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bShjdHgpOworCWNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bShjdHgpOworCisJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGN0eC0+aW5vZGVfdXNlZF9tYXApOworCWN0eC0+aW5vZGVfdXNlZF9tYXAgPSAwOworCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChjdHgtPmlub2RlX2Rpcl9tYXApOworCWN0eC0+aW5vZGVfZGlyX21hcCA9IDA7CisJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGN0eC0+YmxvY2tfZm91bmRfbWFwKTsKKwljdHgtPmJsb2NrX2ZvdW5kX21hcCA9IDA7CisJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGN0eC0+YmxvY2tfbWV0YWRhdGFfbWFwKTsKKwljdHgtPmJsb2NrX21ldGFkYXRhX21hcCA9IDA7CisKKwlwcmludF9yZXNvdXJjZV90cmFjayhjdHgsIF8oIlBhc3MgNSIpLCAmcnRyYWNrLCBjdHgtPmZzLT5pbyk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bShlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCWNoYXIJCSpidWYgPSBOVUxMOworCWRncnBfdAkJaTsKKwlpbnQJCW5ieXRlczsKKwlleHQyX2lub190CWlub19pdHI7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oY3R4LT5mcy0+c3VwZXIpKQorCQlyZXR1cm47CisKKwkvKiBJZiBiaXRtYXAgaXMgZGlydHkgZnJvbSBiZWluZyBmaXhlZCwgY2hlY2tzdW0gd2lsbCBiZSBjb3JyZWN0ZWQgKi8KKwlpZiAoZXh0MmZzX3Rlc3RfaWJfZGlydHkoY3R4LT5mcykpCisJCXJldHVybjsKKworCW5ieXRlcyA9IChzaXplX3QpKEVYVDJfSU5PREVTX1BFUl9HUk9VUChjdHgtPmZzLT5zdXBlcikgLyA4KTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShjdHgtPmZzLT5ibG9ja3NpemUsICZidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJICAgIF8oImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiKSk7CisJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJfQorCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlmb3IgKGkgPSAwOyBpIDwgY3R4LT5mcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWlmIChleHQyZnNfYmdfZmxhZ3NfdGVzdChjdHgtPmZzLCBpLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCkpCisJCQljb250aW51ZTsKKworCQlpbm9faXRyID0gMSArIChpICogKG5ieXRlcyA8PCAzKSk7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3JhbmdlMihjdHgtPmZzLT5pbm9kZV9tYXAsCisJCQkJCQkJaW5vX2l0ciwgbmJ5dGVzIDw8IDMsCisJCQkJCQkJYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWJyZWFrOworCisJCWlmIChleHQyZnNfaW5vZGVfYml0bWFwX2NzdW1fdmVyaWZ5KGN0eC0+ZnMsIGksIGJ1ZiwgbmJ5dGVzKSkKKwkJCWNvbnRpbnVlOworCQlwY3R4Lmdyb3VwID0gaTsKKwkJaWYgKCFmaXhfcHJvYmxlbShjdHgsIFBSXzVfSU5PREVfQklUTUFQX0NTVU1fSU5WQUxJRCwgJnBjdHgpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogRml4aW5nIG9uZSBjaGVja3N1bSB3aWxsIHJld3JpdGUgYWxsIG9mIHRoZW0uICBUaGUgYml0bWFwCisJCSAqIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBvbmUgd2UgbWFkZSBkdXJpbmcgcGFzczEgZm9yCisJCSAqIGRpc2NyZXBhbmNpZXMsIGFuZCBmaXhlZCBpZiBuZWVkIGJlLgorCQkgKi8KKwkJZXh0MmZzX21hcmtfaWJfZGlydHkoY3R4LT5mcyk7CisJCWJyZWFrOworCX0KKworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tfYmxvY2tfYml0bWFwX2NoZWNrc3VtKGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJY2hhcgkJKmJ1ZiA9IE5VTEw7CisJZGdycF90CQlpOworCWludAkJbmJ5dGVzOworCWJsazY0X3QJCWJsa19pdHI7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oY3R4LT5mcy0+c3VwZXIpKQorCQlyZXR1cm47CisKKwkvKiBJZiBiaXRtYXAgaXMgZGlydHkgZnJvbSBiZWluZyBmaXhlZCwgY2hlY2tzdW0gd2lsbCBiZSBjb3JyZWN0ZWQgKi8KKwlpZiAoZXh0MmZzX3Rlc3RfYmJfZGlydHkoY3R4LT5mcykpCisJCXJldHVybjsKKworCW5ieXRlcyA9IChzaXplX3QpKEVYVDJfQ0xVU1RFUlNfUEVSX0dST1VQKGN0eC0+ZnMtPnN1cGVyKSAvIDgpOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGN0eC0+ZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkgICAgXygiY2hlY2tfYmxvY2tfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIpKTsKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCWZvciAoaSA9IDA7IGkgPCBjdHgtPmZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJaWYgKGV4dDJmc19iZ19mbGFnc190ZXN0KGN0eC0+ZnMsIGksIEVYVDJfQkdfQkxPQ0tfVU5JTklUKSkKKwkJCWNvbnRpbnVlOworCisJCWJsa19pdHIgPSBFWFQyRlNfQjJDKGN0eC0+ZnMsCisJCQkJICAgICBjdHgtPmZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSArCisJCQkgICgoYmxrNjRfdCkgaSAqIChuYnl0ZXMgPDwgMykpOworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoY3R4LT5mcy0+YmxvY2tfbWFwLAorCQkJCQkJCWJsa19pdHIsIG5ieXRlcyA8PCAzLAorCQkJCQkJCWJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlicmVhazsKKworCQlpZiAoZXh0MmZzX2Jsb2NrX2JpdG1hcF9jc3VtX3ZlcmlmeShjdHgtPmZzLCBpLCBidWYsIG5ieXRlcykpCisJCQljb250aW51ZTsKKwkJcGN0eC5ncm91cCA9IGk7CisJCWlmICghZml4X3Byb2JsZW0oY3R4LCBQUl81X0JMT0NLX0JJVE1BUF9DU1VNX0lOVkFMSUQsICZwY3R4KSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEZpeGluZyBvbmUgY2hlY2tzdW0gd2lsbCByZXdyaXRlIGFsbCBvZiB0aGVtLiAgVGhlIGJpdG1hcAorCQkgKiB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgb25lIHdlIG1hZGUgZHVyaW5nIHBhc3MxIGZvcgorCQkgKiBkaXNjcmVwYW5jaWVzLCBhbmQgZml4ZWQgaWYgbmVlZCBiZS4KKwkJICovCisJCWV4dDJmc19tYXJrX2JiX2RpcnR5KGN0eC0+ZnMpOworCQlicmVhazsKKwl9CisKKwlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkIGUyZnNja19kaXNjYXJkX2Jsb2NrcyhlMmZzY2tfdCBjdHgsIGJsazY0X3Qgc3RhcnQsCisJCQkJICBibGs2NF90IGNvdW50KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKworCS8qCisJICogSWYgdGhlIGZpbGVzeXN0ZW0gaGFzIGNoYW5nZWQgaXQgbWVhbnMgdGhhdCB0aGVyZSB3YXMgYW4gY29ycnVwdGlvbgorCSAqIHdoaWNoIHNob3VsZCBiZSByZXBhaXJlZCwgYnV0IGluIHNvbWUgY2FzZXMganVzdCBvbmUgZTJmc2NrIHJ1biBpcworCSAqIG5vdCBlbm91Z2ggdG8gZml4IHRoZSBwcm9ibGVtLCBoZW5jZSBpdCBpcyBub3Qgc2FmZSB0byBydW4gZGlzY2FyZAorCSAqIGluIHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoZXh0MmZzX3Rlc3RfY2hhbmdlZChmcykpCisJCWN0eC0+b3B0aW9ucyAmPSB+RTJGX09QVF9ESVNDQVJEOworCisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0RJU0NBUkQpICYmCisJICAgIChpb19jaGFubmVsX2Rpc2NhcmQoZnMtPmlvLCBzdGFydCwgY291bnQpKSkKKwkJY3R4LT5vcHRpb25zICY9IH5FMkZfT1BUX0RJU0NBUkQ7Cit9CisKKy8qCisgKiBUaGlzIHdpbGwgdHJ5IHRvIGRpc2NhcmQgbnVtYmVyICdjb3VudCcgaW5vZGVzIHN0YXJ0aW5nIGF0CisgKiBpbm9kZSBudW1iZXIgJ3N0YXJ0JyB3aXRoaW4gdGhlICdncm91cCcuIE5vdGUgdGhhdCAnc3RhcnQnCisgKiBpcyAxLWJhc2VkLCBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gYWRqdXN0IGl0IGJ5IC0xIGluIHRoaXMKKyAqIGZ1bmN0aW9uIHRvIGNvbXB1dGUgcmlnaHQgb2Zmc2V0IGluIHRoZSBwYXJ0aWN1bGFyIGlub2RlIHRhYmxlLgorICovCitzdGF0aWMgdm9pZCBlMmZzY2tfZGlzY2FyZF9pbm9kZXMoZTJmc2NrX3QgY3R4LCBkZ3JwX3QgZ3JvdXAsCisJCQkJICBleHQyX2lub190IHN0YXJ0LCBpbnQgY291bnQpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWJsazY0X3QgYmxrLCBudW07CisKKwkvKgorCSAqIFNhbml0eSBjaGVjayBmb3IgJ3N0YXJ0JworCSAqLworCWlmICgoc3RhcnQgPCAxKSB8fCAoc3RhcnQgPiBFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSkpIHsKKwkJcHJpbnRmKCJQUk9HUkFNTUlORyBFUlJPUjogR290IHN0YXJ0ICVkIG91dHNpZGUgb2YgZ3JvdXAgJWQhIgorCQkgICAgICAgIiBEaXNhYmxpbmcgZGlzY2FyZFxuIiwKKwkJCXN0YXJ0LCBncm91cCk7CisJCWN0eC0+b3B0aW9ucyAmPSB+RTJGX09QVF9ESVNDQVJEOworCX0KKworCS8qCisJICogRG8gbm90IGF0dGVtcHQgdG8gZGlzY2FyZCBpZiBFMkZfT1BUX0RJU0NBUkQgaXMgbm90IHNldC4gQW5kIGFsc28KKwkgKiBza2lwIHRoZSBkaXNjYXJkIG9uIHRoaXMgZ3JvdXAgaWYgZGlzY2FyZCBkb2VzIG5vdCB6ZXJvIGRhdGEuCisJICogVGhlIHJlYXNvbiBpcyB0aGF0IGlmIHRoZSBpbm9kZSB0YWJsZSBpcyBub3QgemVyb2VkIGRpc2NhcmQgd291bGQKKwkgKiBubyBoZWxwIHVzIHNpbmNlIHdlIG5lZWQgdG8gemVybyBpdCBhbnl3YXksIG9yIGlmIHRoZSBpbm9kZSB0YWJsZQorCSAqIGlzIHplcm9lZCB0aGVuIHRoZSByZWFkIGFmdGVyIGRpc2NhcmQgd291bGQgbm90IGJlIGRldGVybWluaXN0aWMKKwkgKiBhbnl3YXkgYW5kIHdlIHdvdWxkIG5vdCBiZSBhYmxlIHRvIGFzc3VtZSB0aGF0IHRoaXMgaW5vZGUgdGFibGUKKwkgKiB3YXMgemVyb2VkIGFueW1vcmUgc28gd2Ugd291bGQgaGF2ZSB0byB6ZXJvIGl0IGFnYWluLCB3aGljaCBkb2VzCisJICogbm90IHJlYWxseSBtYWtlIHNlbnNlLgorCSAqLworCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRElTQ0FSRCkgfHwKKwkgICAgIWlvX2NoYW5uZWxfZGlzY2FyZF96ZXJvZXNfZGF0YShmcy0+aW8pKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFN0YXJ0IGlzIGlub2RlIG51bWJlciB3aXRoaW4gdGhlIGdyb3VwIHdoaWNoIHN0YXJ0cworCSAqIGNvdW50aW5nIGZyb20gMSwgc28gd2UgbmVlZCB0byBhZGp1c3QgaXQuCisJICovCisJc3RhcnQgLT0gMTsKKworCS8qCisJICogV2UgY2FuIGRpc2NhcmQgb25seSBibG9ja3MgY29udGFpbmluZyBvbmx5IHVudXNlZAorCSAqIGlub2RlcyBpbiB0aGUgdGFibGUuCisJICovCisJYmxrID0gRElWX1JPVU5EX1VQKHN0YXJ0LAorCQlFWFQyX0lOT0RFU19QRVJfQkxPQ0soZnMtPnN1cGVyKSk7CisJY291bnQgLT0gKGJsayAqIEVYVDJfSU5PREVTX1BFUl9CTE9DSyhmcy0+c3VwZXIpIC0gc3RhcnQpOworCWJsayArPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBncm91cCk7CisJbnVtID0gY291bnQgLyBFWFQyX0lOT0RFU19QRVJfQkxPQ0soZnMtPnN1cGVyKTsKKworCWlmIChudW0gPiAwKQorCQllMmZzY2tfZGlzY2FyZF9ibG9ja3MoY3R4LCBibGssIG51bSk7Cit9CisKKyNkZWZpbmUgTk9fQkxLICgoYmxrNjRfdCkgLTEpCisKK3N0YXRpYyB2b2lkIHByaW50X2JpdG1hcF9wcm9ibGVtKGUyZnNja190IGN0eCwgcHJvYmxlbV90IHByb2JsZW0sCisJCQkgICAgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlzd2l0Y2ggKHByb2JsZW0pIHsKKwljYXNlIFBSXzVfQkxPQ0tfVU5VU0VEOgorCQlpZiAocGN0eC0+YmxrID09IHBjdHgtPmJsazIpCisJCQlwY3R4LT5ibGsyID0gMDsKKwkJZWxzZQorCQkJcHJvYmxlbSA9IFBSXzVfQkxPQ0tfUkFOR0VfVU5VU0VEOworCQlicmVhazsKKwljYXNlIFBSXzVfQkxPQ0tfVVNFRDoKKwkJaWYgKHBjdHgtPmJsayA9PSBwY3R4LT5ibGsyKQorCQkJcGN0eC0+YmxrMiA9IDA7CisJCWVsc2UKKwkJCXByb2JsZW0gPSBQUl81X0JMT0NLX1JBTkdFX1VTRUQ7CisJCWJyZWFrOworCWNhc2UgUFJfNV9JTk9ERV9VTlVTRUQ6CisJCWlmIChwY3R4LT5pbm8gPT0gcGN0eC0+aW5vMikKKwkJCXBjdHgtPmlubzIgPSAwOworCQllbHNlCisJCQlwcm9ibGVtID0gUFJfNV9JTk9ERV9SQU5HRV9VTlVTRUQ7CisJCWJyZWFrOworCWNhc2UgUFJfNV9JTk9ERV9VU0VEOgorCQlpZiAocGN0eC0+aW5vID09IHBjdHgtPmlubzIpCisJCQlwY3R4LT5pbm8yID0gMDsKKwkJZWxzZQorCQkJcHJvYmxlbSA9IFBSXzVfSU5PREVfUkFOR0VfVVNFRDsKKwkJYnJlYWs7CisJfQorCWZpeF9wcm9ibGVtKGN0eCwgcHJvYmxlbSwgcGN0eCk7CisJcGN0eC0+YmxrID0gcGN0eC0+YmxrMiA9IE5PX0JMSzsKKwlwY3R4LT5pbm8gPSBwY3R4LT5pbm8yID0gMDsKK30KKworLyogSnVzdCB0byBiZSBtb3JlIHN1Y2NpbnQgKi8KKyNkZWZpbmUgQjJDKHgpCUVYVDJGU19CMkMoZnMsICh4KSkKKyNkZWZpbmUgRVFfQ0xTVFIoeCwgeSkgKEIyQyh4KSA9PSBCMkMoeSkpCisjZGVmaW5lIExFX0NMU1RSKHgsIHkpIChCMkMoeCkgPD0gQjJDKHkpKQorI2RlZmluZSBHRV9DTFNUUih4LCB5KSAoQjJDKHgpID49IEIyQyh5KSkKKworc3RhdGljIHZvaWQgY2hlY2tfYmxvY2tfYml0bWFwcyhlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWJsazY0X3QJaTsKKwl1bnNpZ25lZCBpbnQJKmZyZWVfYXJyYXk7CisJZGdycF90CQlnLCBncm91cCA9IDA7CisJdW5zaWduZWQgaW50CWJsb2NrcyA9IDA7CisJYmxrNjRfdAlmcmVlX2Jsb2NrcyA9IDA7CisJYmxrNjRfdCBmaXJzdF9mcmVlID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCXVuc2lnbmVkIGludAlncm91cF9mcmVlID0gMDsKKwlpbnQJYWN0dWFsLCBiaXRtYXA7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCXByb2JsZW1fdAlwcm9ibGVtLCBzYXZlX3Byb2JsZW07CisJaW50CQlmaXhpdCwgaGFkX3Byb2JsZW07CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJcmVkb19mbGFnID0gMDsKKwljaGFyICphY3R1YWxfYnVmLCAqYml0bWFwX2J1ZjsKKworCWFjdHVhbF9idWYgPSAoY2hhciAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJCSAgICAgImFjdHVhbCBiaXRtYXAgYnVmZmVyIik7CisJYml0bWFwX2J1ZiA9IChjaGFyICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBmcy0+YmxvY2tzaXplLAorCQkJCQkJICAgICAiYml0bWFwIGJsb2NrIGJ1ZmZlciIpOworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlmcmVlX2FycmF5ID0gKHVuc2lnbmVkIGludCAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkgICAgZnMtPmdyb3VwX2Rlc2NfY291bnQgKiBzaXplb2YodW5zaWduZWQgaW50KSwgImZyZWUgYmxvY2sgY291bnQgYXJyYXkiKTsKKworCWlmICgoQjJDKGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSA8CisJICAgICBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9zdGFydDIoY3R4LT5ibG9ja19mb3VuZF9tYXApKSB8fAorCSAgICAoQjJDKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKS0xKSA+CisJICAgICBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9lbmQyKGN0eC0+YmxvY2tfZm91bmRfbWFwKSkpIHsKKwkJcGN0eC5udW0gPSAxOworCQlwY3R4LmJsayA9IEIyQyhmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJCXBjdHguYmxrMiA9IEIyQyhleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSAxKTsKKwkJcGN0eC5pbm8gPSBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9zdGFydDIoY3R4LT5ibG9ja19mb3VuZF9tYXApOworCQlwY3R4LmlubzIgPSBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9lbmQyKGN0eC0+YmxvY2tfZm91bmRfbWFwKTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl81X0JNQVBfRU5EUE9JTlRTLCAmcGN0eCk7CisKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsgLyogZmF0YWwgKi8KKwkJZ290byBlcnJvdXQ7CisJfQorCisJaWYgKChCMkMoZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIDwKKwkgICAgIGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3N0YXJ0Mihmcy0+YmxvY2tfbWFwKSkgfHwKKwkgICAgKEIyQyhleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciktMSkgPgorCSAgICAgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfZW5kMihmcy0+YmxvY2tfbWFwKSkpIHsKKwkJcGN0eC5udW0gPSAyOworCQlwY3R4LmJsayA9IEIyQyhmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJCXBjdHguYmxrMiA9IEIyQyhleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSAxKTsKKwkJcGN0eC5pbm8gPSBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9zdGFydDIoZnMtPmJsb2NrX21hcCk7CisJCXBjdHguaW5vMiA9IGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX2VuZDIoZnMtPmJsb2NrX21hcCk7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9CTUFQX0VORFBPSU5UUywgJnBjdHgpOworCisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7IC8qIGZhdGFsICovCisJCWdvdG8gZXJyb3V0OworCX0KKworcmVkb19jb3VudHM6CisJaGFkX3Byb2JsZW0gPSAwOworCXNhdmVfcHJvYmxlbSA9IDA7CisJcGN0eC5ibGsgPSBwY3R4LmJsazIgPSBOT19CTEs7CisJZm9yIChpID0gQjJDKGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKTsKKwkgICAgIGkgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJICAgICBpICs9IEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSkgeworCQlpbnQgZmlyc3RfYmxvY2tfaW5fYmcgPSAoQjJDKGkpIC0KKwkJCQkJIEIyQyhmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykpICUKKwkJCWZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgPT0gMDsKKwkJaW50IG4sIG5ieXRlcyA9IGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgLyA4OworCisJCWFjdHVhbCA9IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwgaSk7CisKKwkJLyoKKwkJICogVHJ5IHRvIG9wdGltaXplIHBhc3M1IGJ5IGV4dHJhY3RpbmcgYSBiaXRtYXAgYmxvY2sKKwkJICogYXMgZXhwZWN0ZWQgZnJvbSB3aGF0IHdlIGhhdmUgb24gZGlzaywgYW5kIHRoZW4KKwkJICogY29tcGFyaW5nIHRoZSB0d28uICBJZiB0aGV5IGFyZSBpZGVudGljYWwsIHRoZW4KKwkJICogdXBkYXRlIHRoZSBmcmVlIGJsb2NrIGNvdW50cyBhbmQgZ28gb24gdG8gdGhlIG5leHQKKwkJICogYmxvY2sgZ3JvdXAuICBUaGlzIGlzIG11Y2ggZmFzdGVyIHRoYW4gZG9pbmcgdGhlCisJCSAqIGluZGl2aWR1YWwgYml0LWJ5LWJpdCBjb21wYXJpc29uLiAgVGhlIG9uZSBkb3duc2lkZQorCQkgKiBpcyB0aGF0IHRoaXMgZG9lc24ndCB3b3JrIGlmIHdlIGFyZSBhc2tpbmcgZTJmc2NrCisJCSAqIHRvIGRvIGEgZGlzY2FyZCBvcGVyYXRpb24uCisJCSAqLworCQlpZiAoIWZpcnN0X2Jsb2NrX2luX2JnIHx8CisJCSAgICAoZ3JvdXAgPT0gZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKSB8fAorCQkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRElTQ0FSRCkpCisJCQlnb3RvIG5vX29wdGltaXplOworCisJCXJldHZhbCA9IGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3JhbmdlMihjdHgtPmJsb2NrX2ZvdW5kX21hcCwKKwkJCQlCMkMoaSksIGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAsCisJCQkJYWN0dWFsX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG5vX29wdGltaXplOworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoZnMtPmJsb2NrX21hcCwKKwkJCQlCMkMoaSksIGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAsCisJCQkJYml0bWFwX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG5vX29wdGltaXplOworCQlpZiAobWVtY21wKGFjdHVhbF9idWYsIGJpdG1hcF9idWYsIG5ieXRlcykgIT0gMCkKKwkJCWdvdG8gbm9fb3B0aW1pemU7CisJCW4gPSBleHQyZnNfYml0Y291bnQoYWN0dWFsX2J1ZiwgbmJ5dGVzKTsKKwkJZ3JvdXBfZnJlZSA9IGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgLSBuOworCQlmcmVlX2Jsb2NrcyArPSBncm91cF9mcmVlOworCQlpICs9IEVYVDJGU19DMkIoZnMsIGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgLSAxKTsKKwkJZ290byBuZXh0X2dyb3VwOworCW5vX29wdGltaXplOgorCisJCWlmIChyZWRvX2ZsYWcpCisJCQliaXRtYXAgPSBhY3R1YWw7CisJCWVsc2UKKwkJCWJpdG1hcCA9IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBpKTsKKworCQlpZiAoIWFjdHVhbCA9PSAhYml0bWFwKQorCQkJZ290byBkb19jb3VudHM7CisKKwkJaWYgKCFhY3R1YWwgJiYgYml0bWFwKSB7CisJCQkvKgorCQkJICogQmxvY2sgbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gdXNlIGluIHRoZSBiaXRtYXAuCisJCQkgKi8KKwkJCXByb2JsZW0gPSBQUl81X0JMT0NLX1VOVVNFRDsKKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiBCbG9jayB1c2VkLCBidXQgbm90IG1hcmtlZCBpbiB1c2UgaW4gdGhlIGJpdG1hcC4KKwkJCSAqLworCQkJcHJvYmxlbSA9IFBSXzVfQkxPQ0tfVVNFRDsKKworCQkJaWYgKGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwKKwkJCQkJCSBFWFQyX0JHX0JMT0NLX1VOSU5JVCkpIHsKKwkJCQlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0IHBjdHgyOworCQkJCXBjdHgyLmJsayA9IGk7CisJCQkJcGN0eDIuZ3JvdXAgPSBncm91cDsKKwkJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl81X0JMT0NLX1VOSU5JVCwKKwkJCQkJCSZwY3R4MikpCisJCQkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3JvdXAsCisJCQkJCQkJRVhUMl9CR19CTE9DS19VTklOSVQpOworCQkJfQorCQl9CisJCWlmIChwY3R4LmJsayA9PSBOT19CTEspIHsKKwkJCXBjdHguYmxrID0gcGN0eC5ibGsyID0gaTsKKwkJCXNhdmVfcHJvYmxlbSA9IHByb2JsZW07CisJCX0gZWxzZSB7CisJCQlpZiAoKHByb2JsZW0gPT0gc2F2ZV9wcm9ibGVtKSAmJgorCQkJICAgIChwY3R4LmJsazIgPT0gaSAtIEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSkpCisJCQkJcGN0eC5ibGsyICs9IEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKTsKKwkJCWVsc2UgeworCQkJCXByaW50X2JpdG1hcF9wcm9ibGVtKGN0eCwgc2F2ZV9wcm9ibGVtLCAmcGN0eCk7CisJCQkJcGN0eC5ibGsgPSBwY3R4LmJsazIgPSBpOworCQkJCXNhdmVfcHJvYmxlbSA9IHByb2JsZW07CisJCQl9CisJCX0KKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19QUk9HX1NVUFBSRVNTOworCQloYWRfcHJvYmxlbSsrOworCisJCS8qCisJCSAqIElmIHRoZXJlIGEgcHJvYmxlbSB3ZSBzaG91bGQgdHVybiBvZmYgdGhlIGRpc2NhcmQgc28gd2UKKwkJICogZG8gbm90IGNvbXByb21pc2UgdGhlIGZpbGVzeXN0ZW0uCisJCSAqLworCQljdHgtPm9wdGlvbnMgJj0gfkUyRl9PUFRfRElTQ0FSRDsKKworCWRvX2NvdW50czoKKwkJaWYgKCFiaXRtYXApIHsKKwkJCWdyb3VwX2ZyZWUrKzsKKwkJCWZyZWVfYmxvY2tzKys7CisJCQlpZiAoZmlyc3RfZnJlZSA+IGkpCisJCQkJZmlyc3RfZnJlZSA9IGk7CisJCX0gZWxzZSBpZiAoaSA+IGZpcnN0X2ZyZWUpIHsKKwkJCWUyZnNja19kaXNjYXJkX2Jsb2NrcyhjdHgsIGZpcnN0X2ZyZWUsCisJCQkJCSAgICAgIChpIC0gZmlyc3RfZnJlZSkpOworCQkJZmlyc3RfZnJlZSA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwkJfQorCQlibG9ja3MgKys7CisJCWlmICgoYmxvY2tzID09IGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXApIHx8CisJCSAgICAoRVhUMkZTX0IyQyhmcywgaSkgPT0KKwkJICAgICBFWFQyRlNfQjJDKGZzLCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciktMSkpKSB7CisJCQkvKgorCQkJICogSWYgdGhlIGxhc3QgYmxvY2sgb2YgdGhpcyBncm91cCBpcyBmcmVlLCB0aGVuIHdlIGNhbgorCQkJICogZGlzY2FyZCBpdCBhcyB3ZWxsLgorCQkJICovCisJCQlpZiAoIWJpdG1hcCAmJiBpID49IGZpcnN0X2ZyZWUpCisJCQkJZTJmc2NrX2Rpc2NhcmRfYmxvY2tzKGN0eCwgZmlyc3RfZnJlZSwKKwkJCQkJCSAgICAgIChpIC0gZmlyc3RfZnJlZSkgKyAxKTsKKwkJbmV4dF9ncm91cDoKKwkJCWZpcnN0X2ZyZWUgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisKKwkJCWZyZWVfYXJyYXlbZ3JvdXBdID0gZ3JvdXBfZnJlZTsKKwkJCWdyb3VwICsrOworCQkJYmxvY2tzID0gMDsKKwkJCWdyb3VwX2ZyZWUgPSAwOworCQkJaWYgKGN0eC0+cHJvZ3Jlc3MpCisJCQkJaWYgKChjdHgtPnByb2dyZXNzKShjdHgsIDUsIGdyb3VwLAorCQkJCQkJICAgIGZzLT5ncm91cF9kZXNjX2NvdW50KjIpKQorCQkJCQlnb3RvIGVycm91dDsKKwkJfQorCX0KKwlpZiAocGN0eC5ibGsgIT0gTk9fQkxLKQorCQlwcmludF9iaXRtYXBfcHJvYmxlbShjdHgsIHNhdmVfcHJvYmxlbSwgJnBjdHgpOworCWlmIChoYWRfcHJvYmxlbSkKKwkJZml4aXQgPSBlbmRfcHJvYmxlbV9sYXRjaChjdHgsIFBSX0xBVENIX0JCSVRNQVApOworCWVsc2UKKwkJZml4aXQgPSAtMTsKKwljdHgtPmZsYWdzICY9IH5FMkZfRkxBR19QUk9HX1NVUFBSRVNTOworCisJaWYgKGZpeGl0ID09IDEpIHsKKwkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGZzLT5ibG9ja19tYXApOworCQlyZXR2YWwgPSBleHQyZnNfY29weV9iaXRtYXAoY3R4LT5ibG9ja19mb3VuZF9tYXAsCisJCQkJCQkgICZmcy0+YmxvY2tfbWFwKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9DT1BZX0JCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlleHQyZnNfc2V0X2JpdG1hcF9wYWRkaW5nKGZzLT5ibG9ja19tYXApOworCQlleHQyZnNfbWFya19iYl9kaXJ0eShmcyk7CisKKwkJLyogUmVkbyB0aGUgY291bnRzICovCisJCWJsb2NrcyA9IDA7IGZyZWVfYmxvY2tzID0gMDsgZ3JvdXBfZnJlZSA9IDA7IGdyb3VwID0gMDsKKwkJbWVtc2V0KGZyZWVfYXJyYXksIDAsIGZzLT5ncm91cF9kZXNjX2NvdW50ICogc2l6ZW9mKGludCkpOworCQlyZWRvX2ZsYWcrKzsKKwkJZ290byByZWRvX2NvdW50czsKKwl9IGVsc2UgaWYgKGZpeGl0ID09IDApCisJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCisJZm9yIChnID0gMDsgZyA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBnKyspIHsKKwkJaWYgKGZyZWVfYXJyYXlbZ10gIT0gZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBnKSkgeworCQkJcGN0eC5ncm91cCA9IGc7CisJCQlwY3R4LmJsayA9IGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudChmcywgZyk7CisJCQlwY3R4LmJsazIgPSBmcmVlX2FycmF5W2ddOworCisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl81X0ZSRUVfQkxPQ0tfQ09VTlRfR1JPVVAsCisJCQkJCSZwY3R4KSkgeworCQkJCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIGcsIGZyZWVfYXJyYXlbZ10pOworCQkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJCX0gZWxzZQorCQkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQl9CisJfQorCWZyZWVfYmxvY2tzID0gRVhUMkZTX0MyQihmcywgZnJlZV9ibG9ja3MpOworCWlmIChmcmVlX2Jsb2NrcyAhPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkgeworCQlwY3R4Lmdyb3VwID0gMDsKKwkJcGN0eC5ibGsgPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwkJcGN0eC5ibGsyID0gZnJlZV9ibG9ja3M7CisKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfNV9GUkVFX0JMT0NLX0NPVU5ULCAmcGN0eCkpIHsKKwkJCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMtPnN1cGVyLCBmcmVlX2Jsb2Nrcyk7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCX0KKwl9CitlcnJvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZmcmVlX2FycmF5KTsKKwlleHQyZnNfZnJlZV9tZW0oJmFjdHVhbF9idWYpOworCWV4dDJmc19mcmVlX21lbSgmYml0bWFwX2J1Zik7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2lub2RlX2JpdG1hcHMoZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlleHQyX2lub190CWk7CisJdW5zaWduZWQgaW50CWZyZWVfaW5vZGVzID0gMDsKKwlpbnQJCWdyb3VwX2ZyZWUgPSAwOworCWludAkJZGlyc19jb3VudCA9IDA7CisJZGdycF90CQlncm91cCA9IDA7CisJdW5zaWduZWQgaW50CWlub2RlcyA9IDA7CisJZXh0Ml9pbm9fdAkqZnJlZV9hcnJheTsKKwlleHQyX2lub190CSpkaXJfYXJyYXk7CisJaW50CQlhY3R1YWwsIGJpdG1hcDsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwlwcm9ibGVtX3QJcHJvYmxlbSwgc2F2ZV9wcm9ibGVtOworCWludAkJZml4aXQsIGhhZF9wcm9ibGVtOworCWludAkJY3N1bV9mbGFnOworCWludAkJc2tpcF9ncm91cCA9IDA7CisJaW50CQlyZWRvX2ZsYWcgPSAwOworCWV4dDJfaW5vX3QJCWZpcnN0X2ZyZWUgPSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCArIDE7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCWZyZWVfYXJyYXkgPSAoZXh0Ml9pbm9fdCAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkgICAgZnMtPmdyb3VwX2Rlc2NfY291bnQgKiBzaXplb2YoZXh0Ml9pbm9fdCksICJmcmVlIGlub2RlIGNvdW50IGFycmF5Iik7CisKKwlkaXJfYXJyYXkgPSAoZXh0Ml9pbm9fdCAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkgICBmcy0+Z3JvdXBfZGVzY19jb3VudCAqIHNpemVvZihleHQyX2lub190KSwgImRpcmVjdG9yeSBjb3VudCBhcnJheSIpOworCisJaWYgKCgxIDwgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfc3RhcnQyKGN0eC0+aW5vZGVfdXNlZF9tYXApKSB8fAorCSAgICAoZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCA+CisJICAgICBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9lbmQyKGN0eC0+aW5vZGVfdXNlZF9tYXApKSkgeworCQlwY3R4Lm51bSA9IDM7CisJCXBjdHguYmxrID0gMTsKKwkJcGN0eC5ibGsyID0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudDsKKwkJcGN0eC5pbm8gPSBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9zdGFydDIoY3R4LT5pbm9kZV91c2VkX21hcCk7CisJCXBjdHguaW5vMiA9IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX2VuZDIoY3R4LT5pbm9kZV91c2VkX21hcCk7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9CTUFQX0VORFBPSU5UUywgJnBjdHgpOworCisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7IC8qIGZhdGFsICovCisJCWdvdG8gZXJyb3V0OworCX0KKwlpZiAoKDEgPCBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9zdGFydDIoZnMtPmlub2RlX21hcCkpIHx8CisJICAgIChmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50ID4KKwkgICAgIGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX2VuZDIoZnMtPmlub2RlX21hcCkpKSB7CisJCXBjdHgubnVtID0gNDsKKwkJcGN0eC5ibGsgPSAxOworCQlwY3R4LmJsazIgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCQlwY3R4LmlubyA9IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3N0YXJ0Mihmcy0+aW5vZGVfbWFwKTsKKwkJcGN0eC5pbm8yID0gZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kMihmcy0+aW5vZGVfbWFwKTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl81X0JNQVBfRU5EUE9JTlRTLCAmcGN0eCk7CisKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsgLyogZmF0YWwgKi8KKwkJZ290byBlcnJvdXQ7CisJfQorCisJY3N1bV9mbGFnID0gZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpOworcmVkb19jb3VudHM6CisJaGFkX3Byb2JsZW0gPSAwOworCXNhdmVfcHJvYmxlbSA9IDA7CisJcGN0eC5pbm8gPSBwY3R4LmlubzIgPSAwOworCWlmIChjc3VtX2ZsYWcgJiYKKwkgICAgKGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwgRVhUMl9CR19JTk9ERV9VTklOSVQpKSkKKwkJc2tpcF9ncm91cCsrOworCisJLyogUHJvdGVjdCBsb29wIGZyb20gd3JhcC1hcm91bmQgaWYgaW5vZGVzX2NvdW50IGlzIG1heGVkICovCisJZm9yIChpID0gMTsgaSA8PSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50ICYmIGkgPiAwOyBpKyspIHsKKwkJYml0bWFwID0gMDsKKwkJaWYgKHNraXBfZ3JvdXAgJiYKKwkJICAgIGkgJSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCA9PSAxKSB7CisJCQkvKgorCQkJICogQ3VycmVudCBpbm9kZSBpcyB0aGUgZmlyc3QgaW5vZGUKKwkJCSAqIGluIHRoZSBjdXJyZW50IGJsb2NrIGdyb3VwLgorCQkJICovCisJCQlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwX3JhbmdlKAorCQkJCSAgICBjdHgtPmlub2RlX3VzZWRfbWFwLCBpLAorCQkJCSAgICBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCkpIHsKKwkJCQkvKgorCQkJCSAqIFdoZW4gdGhlIGNvbXBhcmVkIGlub2RlcyBpbiBpbm9kZXMgYml0bWFwCisJCQkJICogYXJlIDAsIGNvdW50IHRoZSBmcmVlIGlub2RlLAorCQkJCSAqIHNraXAgdGhlIGN1cnJlbnQgYmxvY2sgZ3JvdXAuCisJCQkJICovCisJCQkJZmlyc3RfZnJlZSA9IDE7CisJCQkJaW5vZGVzID0gZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgLSAxOworCQkJCWdyb3VwX2ZyZWUgPSBpbm9kZXM7CisJCQkJZnJlZV9pbm9kZXMgKz0gaW5vZGVzOworCQkJCWkgKz0gaW5vZGVzOworCQkJCXNraXBfZ3JvdXAgPSAwOworCQkJCWdvdG8gZG9fY291bnRzOworCQkJfQorCQl9CisKKwkJYWN0dWFsID0gZXh0MmZzX2Zhc3RfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfdXNlZF9tYXAsIGkpOworCQlpZiAocmVkb19mbGFnKQorCQkJYml0bWFwID0gYWN0dWFsOworCQllbHNlIGlmICghc2tpcF9ncm91cCkKKwkJCWJpdG1hcCA9IGV4dDJmc19mYXN0X3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpKTsKKwkJaWYgKCFhY3R1YWwgPT0gIWJpdG1hcCkKKwkJCWdvdG8gZG9fY291bnRzOworCisJCWlmICghYWN0dWFsICYmIGJpdG1hcCkgeworCQkJLyoKKwkJCSAqIElub2RlIHdhc24ndCB1c2VkLCBidXQgbWFya2VkIGluIGJpdG1hcAorCQkJICovCisJCQlwcm9ibGVtID0gUFJfNV9JTk9ERV9VTlVTRUQ7CisJCX0gZWxzZSAvKiBpZiAoYWN0dWFsICYmICFiaXRtYXApICovIHsKKwkJCS8qCisJCQkgKiBJbm9kZSB1c2VkLCBidXQgbm90IGluIGJpdG1hcAorCQkJICovCisJCQlwcm9ibGVtID0gUFJfNV9JTk9ERV9VU0VEOworCisJCQkvKiBXZSBzaG91bGQgbmV2ZXIgaGl0IHRoaXMsIGJlY2F1c2UgaXQgbWVhbnMgdGhhdAorCQkJICogaW5vZGVzIHdlcmUgbWFya2VkIGluIHVzZSB0aGF0IHdlcmVuJ3Qgbm90aWNlZAorCQkJICogaW4gcGFzczEgb3IgcGFzcyAyLiBJdCBpcyBlYXNpZXIgdG8gZml4IHRoZSBwcm9ibGVtCisJCQkgKiB0aGFuIHRvIGtpbGwgZTJmc2NrIGFuZCBsZWF2ZSB0aGUgdXNlciBzdHVjay4gKi8KKwkJCWlmIChza2lwX2dyb3VwKSB7CisJCQkJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4MjsKKwkJCQlwY3R4Mi5ibGsgPSBpOworCQkJCXBjdHgyLmdyb3VwID0gZ3JvdXA7CisJCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfNV9JTk9ERV9VTklOSVQsJnBjdHgyKSl7CisJCQkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3JvdXAsIEVYVDJfQkdfSU5PREVfVU5JTklUKTsKKwkJCQkJc2tpcF9ncm91cCA9IDA7CisJCQkJfQorCQkJfQorCQl9CisJCWlmIChwY3R4LmlubyA9PSAwKSB7CisJCQlwY3R4LmlubyA9IHBjdHguaW5vMiA9IGk7CisJCQlzYXZlX3Byb2JsZW0gPSBwcm9ibGVtOworCQl9IGVsc2UgeworCQkJaWYgKChwcm9ibGVtID09IHNhdmVfcHJvYmxlbSkgJiYKKwkJCSAgICAocGN0eC5pbm8yID09IGktMSkpCisJCQkJcGN0eC5pbm8yKys7CisJCQllbHNlIHsKKwkJCQlwcmludF9iaXRtYXBfcHJvYmxlbShjdHgsIHNhdmVfcHJvYmxlbSwgJnBjdHgpOworCQkJCXBjdHguaW5vID0gcGN0eC5pbm8yID0gaTsKKwkJCQlzYXZlX3Byb2JsZW0gPSBwcm9ibGVtOworCQkJfQorCQl9CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUFJPR19TVVBQUkVTUzsKKwkJaGFkX3Byb2JsZW0rKzsKKwkJLyoKKwkJICogSWYgdGhlcmUgYSBwcm9ibGVtIHdlIHNob3VsZCB0dXJuIG9mZiB0aGUgZGlzY2FyZCBzbyB3ZQorCQkgKiBkbyBub3QgY29tcHJvbWlzZSB0aGUgZmlsZXN5c3RlbS4KKwkJICovCisJCWN0eC0+b3B0aW9ucyAmPSB+RTJGX09QVF9ESVNDQVJEOworCitkb19jb3VudHM6CisJCWlub2RlcysrOworCQlpZiAoYml0bWFwKSB7CisJCQlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGkpKQorCQkJCWRpcnNfY291bnQrKzsKKwkJCWlmIChpbm9kZXMgPiBmaXJzdF9mcmVlKSB7CisJCQkJZTJmc2NrX2Rpc2NhcmRfaW5vZGVzKGN0eCwgZ3JvdXAsIGZpcnN0X2ZyZWUsCisJCQkJCQkgICAgICBpbm9kZXMgLSBmaXJzdF9mcmVlKTsKKwkJCQlmaXJzdF9mcmVlID0gZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgKyAxOworCQkJfQorCQl9IGVsc2UgeworCQkJZ3JvdXBfZnJlZSsrOworCQkJZnJlZV9pbm9kZXMrKzsKKwkJCWlmIChmaXJzdF9mcmVlID4gaW5vZGVzKQorCQkJCWZpcnN0X2ZyZWUgPSBpbm9kZXM7CisJCX0KKworCQlpZiAoKGlub2RlcyA9PSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCkgfHwKKwkJICAgIChpID09IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKSB7CisJCQkvKgorCQkJICogSWYgdGhlIGxhc3QgaW5vZGUgaXMgZnJlZSwgd2UgY2FuIGRpc2NhcmQgaXQgYXMgd2VsbC4KKwkJCSAqLworCQkJaWYgKCFiaXRtYXAgJiYgaW5vZGVzID49IGZpcnN0X2ZyZWUpCisJCQkJZTJmc2NrX2Rpc2NhcmRfaW5vZGVzKGN0eCwgZ3JvdXAsIGZpcnN0X2ZyZWUsCisJCQkJCQkgICAgICBpbm9kZXMgLSBmaXJzdF9mcmVlICsgMSk7CisJCQkvKgorCQkJICogSWYgZGlzY2FyZCB6ZXJvZXMgZGF0YSBhbmQgdGhlIGdyb3VwIGlub2RlIHRhYmxlCisJCQkgKiB3YXMgbm90IHplcm9lZCB5ZXQsIHNldCBpdGFibGUgYXMgemVyb2VkCisJCQkgKi8KKwkJCWlmICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9ESVNDQVJEKSAmJgorCQkJICAgIGlvX2NoYW5uZWxfZGlzY2FyZF96ZXJvZXNfZGF0YShmcy0+aW8pICYmCisJCQkgICAgIShleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgZ3JvdXAsCisJCQkJCQkgICBFWFQyX0JHX0lOT0RFX1pFUk9FRCkpKSB7CisJCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgZ3JvdXAsCisJCQkJCQkgICAgRVhUMl9CR19JTk9ERV9aRVJPRUQpOworCQkJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncm91cCk7CisJCQl9CisKKwkJCWZpcnN0X2ZyZWUgPSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCArIDE7CisJCQlmcmVlX2FycmF5W2dyb3VwXSA9IGdyb3VwX2ZyZWU7CisJCQlkaXJfYXJyYXlbZ3JvdXBdID0gZGlyc19jb3VudDsKKwkJCWdyb3VwICsrOworCQkJaW5vZGVzID0gMDsKKwkJCXNraXBfZ3JvdXAgPSAwOworCQkJZ3JvdXBfZnJlZSA9IDA7CisJCQlkaXJzX2NvdW50ID0gMDsKKwkJCWlmIChjdHgtPnByb2dyZXNzKQorCQkJCWlmICgoY3R4LT5wcm9ncmVzcykoY3R4LCA1LAorCQkJCQkgICAgZ3JvdXAgKyBmcy0+Z3JvdXBfZGVzY19jb3VudCwKKwkJCQkJICAgIGZzLT5ncm91cF9kZXNjX2NvdW50KjIpKQorCQkJCQlnb3RvIGVycm91dDsKKwkJCWlmIChjc3VtX2ZsYWcgJiYKKwkJCSAgICAoaSAhPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KSAmJgorCQkJICAgIChleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgZ3JvdXAsIEVYVDJfQkdfSU5PREVfVU5JTklUKQorCQkJICAgICApKQorCQkJCXNraXBfZ3JvdXArKzsKKwkJfQorCX0KKwlpZiAocGN0eC5pbm8pCisJCXByaW50X2JpdG1hcF9wcm9ibGVtKGN0eCwgc2F2ZV9wcm9ibGVtLCAmcGN0eCk7CisKKwlpZiAoaGFkX3Byb2JsZW0pCisJCWZpeGl0ID0gZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9JQklUTUFQKTsKKwllbHNlCisJCWZpeGl0ID0gLTE7CisJY3R4LT5mbGFncyAmPSB+RTJGX0ZMQUdfUFJPR19TVVBQUkVTUzsKKworCWlmIChmaXhpdCA9PSAxKSB7CisJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChmcy0+aW5vZGVfbWFwKTsKKwkJcmV0dmFsID0gZXh0MmZzX2NvcHlfYml0bWFwKGN0eC0+aW5vZGVfdXNlZF9tYXAsCisJCQkJCQkgICZmcy0+aW5vZGVfbWFwKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9DT1BZX0lCSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlleHQyZnNfc2V0X2JpdG1hcF9wYWRkaW5nKGZzLT5pbm9kZV9tYXApOworCQlleHQyZnNfbWFya19pYl9kaXJ0eShmcyk7CisKKwkJLyogcmVkbyBjb3VudHMgKi8KKwkJaW5vZGVzID0gMDsgZnJlZV9pbm9kZXMgPSAwOyBncm91cF9mcmVlID0gMDsKKwkJZGlyc19jb3VudCA9IDA7IGdyb3VwID0gMDsKKwkJbWVtc2V0KGZyZWVfYXJyYXksIDAsIGZzLT5ncm91cF9kZXNjX2NvdW50ICogc2l6ZW9mKGludCkpOworCQltZW1zZXQoZGlyX2FycmF5LCAwLCBmcy0+Z3JvdXBfZGVzY19jb3VudCAqIHNpemVvZihpbnQpKTsKKwkJcmVkb19mbGFnKys7CisJCWdvdG8gcmVkb19jb3VudHM7CisJfSBlbHNlIGlmIChmaXhpdCA9PSAwKQorCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWlmIChmcmVlX2FycmF5W2ldICE9IGV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudChmcywgaSkpIHsKKwkJCXBjdHguZ3JvdXAgPSBpOworCQkJcGN0eC5pbm8gPSBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGkpOworCQkJcGN0eC5pbm8yID0gZnJlZV9hcnJheVtpXTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzVfRlJFRV9JTk9ERV9DT1VOVF9HUk9VUCwKKwkJCQkJJnBjdHgpKSB7CisJCQkJZXh0MmZzX2JnX2ZyZWVfaW5vZGVzX2NvdW50X3NldChmcywgaSwgZnJlZV9hcnJheVtpXSk7CisJCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJfSBlbHNlCisJCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCX0KKwkJaWYgKGRpcl9hcnJheVtpXSAhPSBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGZzLCBpKSkgeworCQkJcGN0eC5ncm91cCA9IGk7CisJCQlwY3R4LmlubyA9IGV4dDJmc19iZ191c2VkX2RpcnNfY291bnQoZnMsIGkpOworCQkJcGN0eC5pbm8yID0gZGlyX2FycmF5W2ldOworCisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl81X0ZSRUVfRElSX0NPVU5UX0dST1VQLAorCQkJCQkmcGN0eCkpIHsKKwkJCQlleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50X3NldChmcywgaSwgZGlyX2FycmF5W2ldKTsKKwkJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCQl9IGVsc2UKKwkJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwkJfQorCX0KKwlpZiAoZnJlZV9pbm9kZXMgIT0gZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50KSB7CisJCXBjdHguZ3JvdXAgPSAtMTsKKwkJcGN0eC5pbm8gPSBmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQ7CisJCXBjdHguaW5vMiA9IGZyZWVfaW5vZGVzOworCisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzVfRlJFRV9JTk9ERV9DT1VOVCwgJnBjdHgpKSB7CisJCQlmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQgPSBmcmVlX2lub2RlczsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCX0KK2Vycm91dDoKKwlleHQyZnNfZnJlZV9tZW0oJmZyZWVfYXJyYXkpOworCWV4dDJmc19mcmVlX21lbSgmZGlyX2FycmF5KTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tfaW5vZGVfZW5kKGUyZnNja190IGN0eCkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAllbmQsIHNhdmVfaW5vZGVzX2NvdW50LCBpOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwllbmQgPSBFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAqIGZzLT5ncm91cF9kZXNjX2NvdW50OworCXBjdHguZXJyY29kZSA9IGV4dDJmc19mdWRnZV9pbm9kZV9iaXRtYXBfZW5kKGZzLT5pbm9kZV9tYXAsIGVuZCwKKwkJCQkJCSAgICAgJnNhdmVfaW5vZGVzX2NvdW50KTsKKwlpZiAocGN0eC5lcnJjb2RlKSB7CisJCXBjdHgubnVtID0gMTsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl81X0ZVREdFX0JJVE1BUF9FUlJPUiwgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOyAvKiBmYXRhbCAqLworCQlyZXR1cm47CisJfQorCWlmIChzYXZlX2lub2Rlc19jb3VudCA9PSBlbmQpCisJCXJldHVybjsKKworCS8qIHByb3RlY3QgbG9vcCBmcm9tIHdyYXAtYXJvdW5kIGlmIGVuZCBpcyBtYXhlZCAqLworCWZvciAoaSA9IHNhdmVfaW5vZGVzX2NvdW50ICsgMTsgaSA8PSBlbmQgJiYgaSA+IHNhdmVfaW5vZGVzX2NvdW50OyBpKyspIHsKKwkJaWYgKCFleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAoZnMtPmlub2RlX21hcCwgaSkpIHsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzVfSU5PREVfQk1BUF9QQURESU5HLCAmcGN0eCkpIHsKKwkJCQlmb3IgKDsgaSA8PSBlbmQ7IGkrKykKKwkJCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwKGZzLT5pbm9kZV9tYXAsCisJCQkJCQkJCSBpKTsKKwkJCQlleHQyZnNfbWFya19pYl9kaXJ0eShmcyk7CisJCQl9IGVsc2UKKwkJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJcGN0eC5lcnJjb2RlID0gZXh0MmZzX2Z1ZGdlX2lub2RlX2JpdG1hcF9lbmQoZnMtPmlub2RlX21hcCwKKwkJCQkJCSAgICAgc2F2ZV9pbm9kZXNfY291bnQsIDApOworCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJcGN0eC5udW0gPSAyOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzVfRlVER0VfQklUTUFQX0VSUk9SLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7IC8qIGZhdGFsICovCisJCXJldHVybjsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX2Jsb2NrX2VuZChlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWJsazY0X3QJZW5kLCBzYXZlX2Jsb2Nrc19jb3VudCwgaTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJZW5kID0gZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfc3RhcnQyKGZzLT5ibG9ja19tYXApICsKKwkJRVhUMl9HUk9VUFNfVE9fQ0xVU1RFUlMoZnMtPnN1cGVyLCBmcy0+Z3JvdXBfZGVzY19jb3VudCkgLSAxOworCXBjdHguZXJyY29kZSA9IGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kMihmcy0+YmxvY2tfbWFwLCBlbmQsCisJCQkJCQkgICAgICZzYXZlX2Jsb2Nrc19jb3VudCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4Lm51bSA9IDM7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9GVURHRV9CSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsgLyogZmF0YWwgKi8KKwkJcmV0dXJuOworCX0KKwlpZiAoc2F2ZV9ibG9ja3NfY291bnQgPT0gZW5kKQorCQlyZXR1cm47CisKKwkvKiBQcm90ZWN0IGxvb3AgZnJvbSB3cmFwLWFyb3VuZCBpZiBlbmQgaXMgbWF4ZWQgKi8KKwlmb3IgKGkgPSBzYXZlX2Jsb2Nrc19jb3VudCArIDE7IGkgPD0gZW5kICYmIGkgPiBzYXZlX2Jsb2Nrc19jb3VudDsgaSsrKSB7CisJCWlmICghZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLAorCQkJCQkgICAgICAgRVhUMkZTX0MyQihmcywgaSkpKSB7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl81X0JMT0NLX0JNQVBfUEFERElORywgJnBjdHgpKSB7CisJCQkJZm9yICg7IGkgPD0gZW5kOyBpKyspCisJCQkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwKKwkJCQkJCQlFWFQyRlNfQzJCKGZzLCBpKSk7CisJCQkJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCQkJfSBlbHNlCisJCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXBjdHguZXJyY29kZSA9IGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kMihmcy0+YmxvY2tfbWFwLAorCQkJCQkJICAgICBzYXZlX2Jsb2Nrc19jb3VudCwgMCk7CisJaWYgKHBjdHguZXJyY29kZSkgeworCQlwY3R4Lm51bSA9IDQ7CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNV9GVURHRV9CSVRNQVBfRVJST1IsICZwY3R4KTsKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsgLyogZmF0YWwgKi8KKwkJcmV0dXJuOworCX0KK30KKworCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcHJvYmxlbS5jIGIvZTJmc3Byb2dzL2UyZnNjay9wcm9ibGVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRhNjcxZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svcHJvYmxlbS5jCkBAIC0wLDAgKzEsMjM4NCBAQAorLyoKKyAqIHByb2JsZW0uYyAtLS0gcmVwb3J0IGZpbGVzeXN0ZW0gcHJvYmxlbXMgdG8gdGhlIHVzZXIKKyAqCisgKiBDb3B5cmlnaHQgMTk5NiwgMTk5NyBieSBUaGVvZG9yZSBUcydvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisKKyNpbmNsdWRlICJlMmZzY2suaCIKKworI2luY2x1ZGUgInByb2JsZW0uaCIKKyNpbmNsdWRlICJwcm9ibGVtUC5oIgorCisjZGVmaW5lIFBST01QVF9OT05FCTAKKyNkZWZpbmUgUFJPTVBUX0ZJWAkxCisjZGVmaW5lIFBST01QVF9DTEVBUgkyCisjZGVmaW5lIFBST01QVF9SRUxPQ0FURQkzCisjZGVmaW5lIFBST01QVF9BTExPQ0FURSA0CisjZGVmaW5lIFBST01QVF9FWFBBTkQJNQorI2RlZmluZSBQUk9NUFRfQ09OTkVDVAk2CisjZGVmaW5lIFBST01QVF9DUkVBVEUJNworI2RlZmluZSBQUk9NUFRfU0FMVkFHRQk4CisjZGVmaW5lIFBST01QVF9UUlVOQ0FURQk5CisjZGVmaW5lIFBST01QVF9DTEVBUl9JTk9ERSAxMAorI2RlZmluZSBQUk9NUFRfQUJPUlQJMTEKKyNkZWZpbmUgUFJPTVBUX1NQTElUCTEyCisjZGVmaW5lIFBST01QVF9DT05USU5VRQkxMworI2RlZmluZSBQUk9NUFRfQ0xPTkUJMTQKKyNkZWZpbmUgUFJPTVBUX0RFTEVURQkxNQorI2RlZmluZSBQUk9NUFRfU1VQUFJFU1MgMTYKKyNkZWZpbmUgUFJPTVBUX1VOTElOSwkxNworI2RlZmluZSBQUk9NUFRfQ0xFQVJfSFRSRUUgMTgKKyNkZWZpbmUgUFJPTVBUX1JFQ1JFQVRFIDE5CisjZGVmaW5lIFBST01QVF9OVUxMCTIwCisKKy8qCisgKiBUaGVzZSBhcmUgdGhlIHByb21wdHMgd2hpY2ggYXJlIHVzZWQgdG8gYXNrIHRoZSB1c2VyIGlmIHRoZXkgd2FudAorICogdG8gZml4IGEgcHJvYmxlbS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKnByb21wdFtdID0geworCU5fKCIobm8gcHJvbXB0KSIpLAkvKiAwICovCisJTl8oIkZpeCIpLAkJLyogMSAqLworCU5fKCJDbGVhciIpLAkJLyogMiAqLworCU5fKCJSZWxvY2F0ZSIpLAkJLyogMyAqLworCU5fKCJBbGxvY2F0ZSIpLAkJLyogNCAqLworCU5fKCJFeHBhbmQiKSwJCS8qIDUgKi8KKwlOXygiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIpLCAvKiA2ICovCisJTl8oIkNyZWF0ZSIpLAkJLyogNyAqLworCU5fKCJTYWx2YWdlIiksCQkvKiA4ICovCisJTl8oIlRydW5jYXRlIiksCQkvKiA5ICovCisJTl8oIkNsZWFyIGlub2RlIiksCS8qIDEwICovCisJTl8oIkFib3J0IiksCQkvKiAxMSAqLworCU5fKCJTcGxpdCIpLAkJLyogMTIgKi8KKwlOXygiQ29udGludWUiKSwJCS8qIDEzICovCisJTl8oIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIiksIC8qIDE0ICovCisJTl8oIkRlbGV0ZSBmaWxlIiksCS8qIDE1ICovCisJTl8oIlN1cHByZXNzIG1lc3NhZ2VzIiksLyogMTYgKi8KKwlOXygiVW5saW5rIiksCQkvKiAxNyAqLworCU5fKCJDbGVhciBIVHJlZSBpbmRleCIpLC8qIDE4ICovCisJTl8oIlJlY3JlYXRlIiksCQkvKiAxOSAqLworCSIiLAkJCS8qIDIwICovCit9OworCisvKgorICogVGhlc2UgbWVzc2FnZXMgYXJlIHByaW50ZWQgd2hlbiB3ZSBhcmUgcHJlZW4gbW9kZSBhbmQgd2Ugd2lsbCBiZQorICogYXV0b21hdGljYWxseSBmaXhpbmcgdGhlIHByb2JsZW0uCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpwcmVlbl9tc2dbXSA9IHsKKwlOXygiKE5PTkUpIiksCQkvKiAwICovCisJTl8oIkZJWEVEIiksCQkvKiAxICovCisJTl8oIkNMRUFSRUQiKSwJCS8qIDIgKi8KKwlOXygiUkVMT0NBVEVEIiksCS8qIDMgKi8KKwlOXygiQUxMT0NBVEVEIiksCS8qIDQgKi8KKwlOXygiRVhQQU5ERUQiKSwJCS8qIDUgKi8KKwlOXygiUkVDT05ORUNURUQiKSwJLyogNiAqLworCU5fKCJDUkVBVEVEIiksCQkvKiA3ICovCisJTl8oIlNBTFZBR0VEIiksCQkvKiA4ICovCisJTl8oIlRSVU5DQVRFRCIpLAkvKiA5ICovCisJTl8oIklOT0RFIENMRUFSRUQiKSwJLyogMTAgKi8KKwlOXygiQUJPUlRFRCIpLAkJLyogMTEgKi8KKwlOXygiU1BMSVQiKSwJCS8qIDEyICovCisJTl8oIkNPTlRJTlVJTkciKSwJLyogMTMgKi8KKwlOXygiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIiksIC8qIDE0ICovCisJTl8oIkZJTEUgREVMRVRFRCIpLAkvKiAxNSAqLworCU5fKCJTVVBQUkVTU0VEIiksCS8qIDE2ICovCisJTl8oIlVOTElOS0VEIiksCQkvKiAxNyAqLworCU5fKCJIVFJFRSBJTkRFWCBDTEVBUkVEIiksLyogMTggKi8KKwlOXygiV0lMTCBSRUNSRUFURSIpLAkvKiAxOSAqLworCSIiLAkJCS8qIDIwICovCit9OworCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyIKKworc3RhdGljIHN0cnVjdCBlMmZzY2tfcHJvYmxlbSBwcm9ibGVtX3RhYmxlW10gPSB7CisKKwkvKiBQcmUtUGFzcyAxIGVycm9ycyAqLworCisJLyogQmxvY2sgYml0bWFwIG5vdCBpbiBncm91cCAqLworCXsgUFJfMF9CQl9OT1RfR1JPVVAsIE5fKCJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIiksCisJICBQUk9NUFRfUkVMT0NBVEUsIFBSX0xBVENIX1JFTE9DIH0sCisKKwkvKiBJbm9kZSBiaXRtYXAgbm90IGluIGdyb3VwICovCisJeyBQUl8wX0lCX05PVF9HUk9VUCwgTl8oIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iKSwKKwkgIFBST01QVF9SRUxPQ0FURSwgUFJfTEFUQ0hfUkVMT0MgfSwKKworCS8qIElub2RlIHRhYmxlIG5vdCBpbiBncm91cCAqLworCXsgUFJfMF9JVEFCTEVfTk9UX0dST1VQLAorCSAgTl8oIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisJICAiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIpLAorCSAgUFJPTVBUX1JFTE9DQVRFLCBQUl9MQVRDSF9SRUxPQyB9LAorCisJLyogU3VwZXJibG9jayBjb3JydXB0ICovCisJeyBQUl8wX1NCX0NPUlJVUFQsCisJICBOXygiXG5UaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorCSAgIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKwkgICJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisJICAiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisJICAiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKwkgICIgb3JcbiIKKwkgICIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRmlsZXN5c3RlbSBzaXplIGlzIHdyb25nICovCisJeyBQUl8wX0ZTX1NJWkVfV1JPTkcsCisJICBOXygiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorCSAgIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKwkgICJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iKSwKKwkgIFBST01QVF9BQk9SVCwgMCB9LAorCisJLyogRnJhZ21lbnRzIG5vdCBzdXBwb3J0ZWQgKi8KKwl7IFBSXzBfTk9fRlJBR01FTlRTLAorCSAgTl8oIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKwkgICJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisJICAiZnJvbSB0aGUgQGIgc2l6ZS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkgIC8qIEJhZCBibG9ja3NfcGVyX2dyb3VwICovCisJeyBQUl8wX0JMT0NLU19QRVJfR1JPVVAsCisJICBOXygiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9BRlRFUl9DT0RFLCBQUl8wX1NCX0NPUlJVUFQgfSwKKworCS8qIEJhZCBmaXJzdF9kYXRhX2Jsb2NrICovCisJeyBQUl8wX0ZJUlNUX0RBVEFfQkxPQ0ssCisJICBOXygiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9BRlRFUl9DT0RFLCBQUl8wX1NCX0NPUlJVUFQgfSwKKworCS8qIEFkZGluZyBVVUlEIHRvIGZpbGVzeXN0ZW0gKi8KKwl7IFBSXzBfQUREX1VVSUQsCisJICBOXygiQGYgZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIFJlbG9jYXRlIGhpbnQgKi8KKwl7IFBSXzBfUkVMT0NBVEVfSElOVCwKKwkgIE5fKCJOb3RlOiBpZiBzZXZlcmFsIGlub2RlIG9yIGJsb2NrIGJpdG1hcCBibG9ja3Mgb3IgcGFydFxuIgorCSAgIm9mIHRoZSBpbm9kZSB0YWJsZSByZXF1aXJlIHJlbG9jYXRpb24sIHlvdSBtYXkgd2lzaCB0byB0cnlcbiIKKwkgICJydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgJVMnIG9wdGlvbiBmaXJzdC4gIFRoZSBwcm9ibGVtXG4iCisJICAibWF5IGxpZSBvbmx5IHdpdGggdGhlIHByaW1hcnkgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMsIGFuZFxuIgorCSAgInRoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLlxuXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9QUkVFTl9PSyB8IFBSX05PQ09MTEFURSB9LAorCisJLyogTWlzY2VsbGFuZW91cyBzdXBlcmJsb2NrIGNvcnJ1cHRpb24gKi8KKwl7IFBSXzBfTUlTQ19DT1JSVVBUX1NVUEVSLAorCSAgTl8oIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9BRlRFUl9DT0RFLCBQUl8wX1NCX0NPUlJVUFQgfSwKKworCS8qIEVycm9yIGRldGVybWluZyBwaHlzaWNhbCBkZXZpY2Ugc2l6ZSBvZiBmaWxlc3lzdGVtICovCisJeyBQUl8wX0dFVFNJWkVfRVJST1IsCisJICBOXygiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogSW5vZGUgY291bnQgaW4gc3VwZXJibG9jayBpcyBpbmNvcnJlY3QgKi8KKwl7IFBSXzBfSU5PREVfQ09VTlRfV1JPTkcsCisJICBOXygiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwl7IFBSXzBfSFVSRF9DTEVBUl9GSUxFVFlQRSwKKwkgIE5fKCJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIEpvdXJuYWwgaW5vZGUgaXMgaW52YWxpZCAqLworCXsgUFJfMF9KT1VSTkFMX0JBRF9JTk9ERSwKKwkgIE5fKCJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogVGhlIGV4dGVybmFsIGpvdXJuYWwgaGFzICh1bnN1cHBvcnRlZCkgbXVsdGlwbGUgZmlsZXN5c3RlbXMgKi8KKwl7IFBSXzBfSk9VUk5BTF9VTlNVUFBfTVVMVElGUywKKwkgIE5fKCJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWwgKi8KKwl7IFBSXzBfQ0FOVF9GSU5EX0pPVVJOQUwsCisJICBOXygiQ2FuJ3QgZmluZCBleHRlcm5hbCBAalxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrICovCisJeyBQUl8wX0VYVF9KT1VSTkFMX0JBRF9TVVBFUiwKKwkgIE5fKCJFeHRlcm5hbCBAaiBoYXMgYmFkIEBTXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogU3VwZXJibG9jayBoYXMgYSBiYWQgam91cm5hbCBVVUlEICovCisJeyBQUl8wX0pPVVJOQUxfQkFEX1VVSUQsCisJICBOXygiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogSm91cm5hbCBoYXMgYW4gdW5rbm93biBzdXBlcmJsb2NrIHR5cGUgKi8KKwl7IFBSXzBfSk9VUk5BTF9VTlNVUFBfU1VQRVIsCisJICBOXygiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisJICAgICAiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3QgIgorCSAgICAgInN1cHBvcnQgdGhpcyBAaiBmb3JtYXQuXG4iCisJICAgICAiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIpLAorCSAgUFJPTVBUX0FCT1JULCBQUl9OT19PSyB8IFBSX0FGVEVSX0NPREUsIFBSXzBfSk9VUk5BTF9CQURfU1VQRVIgfSwKKworCS8qIEpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0ICovCisJeyBQUl8wX0pPVVJOQUxfQkFEX1NVUEVSLAorCSAgTl8oIkBqIEBTIGlzIGNvcnJ1cHQuXG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBTdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIgYnV0IGhhcyBhIGpvdXJuYWwgKi8KKwl7IFBSXzBfSk9VUk5BTF9IQVNfSk9VUk5BTCwKKwkgIE5fKCJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogU3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCBidXQgbm90IGpvdXJuYWwgaXMgcHJlc2VudCAqLworCXsgUFJfMF9KT1VSTkFMX1JFQ09WRVJfU0VULAorCSAgTl8oIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogU3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IGpvdXJuYWwgaGFzIGRhdGEgKi8KKwl7IFBSXzBfSk9VUk5BTF9SRUNPVkVSWV9DTEVBUiwKKwkgIE5fKCJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBBc2sgaWYgd2Ugc2hvdWxkIGNsZWFyIHRoZSBqb3VybmFsICovCisJeyBQUl8wX0pPVVJOQUxfUkVTRVRfSk9VUk5BTCwKKwkgIE5fKCJDbGVhciBAaiIpLAorCSAgUFJPTVBUX05VTEwsIFBSX1BSRUVOX05PTVNHIH0sCisKKwkvKiBGaWxlc3lzdGVtIHJldmlzaW9uIGlzIDAsIGJ1dCBmZWF0dXJlIGZsYWdzIGFyZSBzZXQgKi8KKwl7IFBSXzBfRlNfUkVWX0xFVkVMLAorCSAgTl8oIkBmIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIEBmLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIH0sCisKKwkvKiBDbGVhcmluZyBvcnBoYW4gaW5vZGUgKi8KKwl7IFBSXzBfT1JQSEFOX0NMRUFSX0lOT0RFLAorCSAgTl8oIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBJbGxlZ2FsIGJsb2NrIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICovCisJeyBQUl8wX09SUEhBTl9JTExFR0FMX0JMT0NLX05VTSwKKwkgICBOXygiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEFscmVhZHkgY2xlYXJlZCBibG9jayBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAqLworCXsgUFJfMF9PUlBIQU5fQUxSRUFEWV9DTEVBUkVEX0JMT0NLLAorCSAgIE5fKCJBbHJlYWR5IGNsZWFyZWQgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIElsbGVnYWwgb3JwaGFuIGlub2RlIGluIHN1cGVyYmxvY2sgKi8KKwl7IFBSXzBfT1JQSEFOX0lMTEVHQUxfSEVBRF9JTk9ERSwKKwkgIE5fKCJASSBAbyBAaSAlaSBpbiBAUy5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIElsbGVnYWwgaW5vZGUgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdCAqLworCXsgUFJfMF9PUlBIQU5fSUxMRUdBTF9JTk9ERSwKKwkgIE5fKCJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogSm91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0ICovCisJeyBQUl8wX0pPVVJOQUxfVU5TVVBQX1JPQ09NUEFULAorCSAgTl8oIkBqIEBTIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuIiksCisJICBQUk9NUFRfQUJPUlQsIDAgfSwKKworCS8qIEpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldCAqLworCXsgUFJfMF9KT1VSTkFMX1VOU1VQUF9JTkNPTVBBVCwKKwkgIE5fKCJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIpLAorCSAgUFJPTVBUX0FCT1JULCAwIH0sCisKKwkvKiBKb3VybmFsIGhhcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG51bWJlciAqLworCXsgUFJfMF9KT1VSTkFMX1VOU1VQUF9WRVJTSU9OLAorCSAgTl8oIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIpLAorCSAgUFJPTVBUX0FCT1JULCAwIH0sCisKKwkvKiBNb3Zpbmcgam91cm5hbCB0byBoaWRkZW4gZmlsZSAqLworCXsgUFJfMF9NT1ZFX0pPVVJOQUwsCisJICBOXygiTW92aW5nIEBqIGZyb20gLyVzIHRvIGhpZGRlbiBAaS5cblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRXJyb3IgbW92aW5nIGpvdXJuYWwgdG8gaGlkZGVuIGZpbGUgKi8KKwl7IFBSXzBfRVJSX01PVkVfSk9VUk5BTCwKKwkgIE5fKCJFcnJvciBtb3ZpbmcgQGo6ICVtXG5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIENsZWFyaW5nIFYyIGpvdXJuYWwgc3VwZXJibG9jayAqLworCXsgUFJfMF9DTEVBUl9WMl9KT1VSTkFMLAorCSAgTl8oIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisJICAgICAiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogQXNrIGlmIHdlIHNob3VsZCBydW4gdGhlIGpvdXJuYWwgYW55d2F5ICovCisJeyBQUl8wX0pPVVJOQUxfUlVOLAorCSAgTl8oIlJ1biBAaiBhbnl3YXkiKSwKKwkgIFBST01QVF9OVUxMLCAwIH0sCisKKwkvKiBSdW4gdGhlIGpvdXJuYWwgYnkgZGVmYXVsdCAqLworCXsgUFJfMF9KT1VSTkFMX1JVTl9ERUZBVUxULAorCSAgTl8oIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogQmFja3VwIGpvdXJuYWwgaW5vZGUgYmxvY2tzICovCisJeyBQUl8wX0JBQ0tVUF9KTkwsCisJICBOXygiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogUmVzZXJ2ZWQgYmxvY2tzIHcvbyByZXNpemVfaW5vZGUgKi8KKwl7IFBSXzBfTk9OWkVST19SRVNFUlZFRF9HRFRfQkxPQ0tTLAorCSAgTl8oIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKwkgICAgICJpcyAlTjsgQHMgemVyby4gICIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvICovCisJeyBQUl8wX0NMRUFSX1JFU0laRV9JTk9ERSwKKwkgIE5fKCJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIFJlc2l6ZSBpbm9kZSBpbnZhbGlkICovCisJeyBQUl8wX1JFU0laRV9JTk9ERV9JTlZBTElELAorCSAgTl8oIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiKSwKKwkgIFBST01QVF9SRUNSRUFURSwgMCB9LAorCisJLyogTGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUgKi8KKwl7IFBSXzBfRlVUVVJFX1NCX0xBU1RfTU9VTlQsCisJICBOXygiQFMgbGFzdCBtb3VudCB0aW1lICgldCxcblx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfTk9fT0sgfSwKKworCS8qIExhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlICovCisJeyBQUl8wX0ZVVFVSRV9TQl9MQVNUX1dSSVRFLAorCSAgTl8oIkBTIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG5cdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIH0sCisKKwl7IFBSXzBfRVhURVJOQUxfSk9VUk5BTF9ISU5ULAorCSAgTl8oIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiKSwKKwkgICAgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBBZGRpbmcgZGlyaGFzaCBoaW50ICovCisJeyBQUl8wX0RJUkhBU0hfSElOVCwKKwkgIE5fKCJBZGRpbmcgZGlyaGFzaCBoaW50IHRvIEBmLlxuXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBncm91cCBkZXNjcmlwdG9yIE4gY2hlY2tzdW0gaXMgaW52YWxpZC4gKi8KKwl7IFBSXzBfR0RUX0NTVU0sCisJICBOXygiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIpLAorCSAgICAgUFJPTVBUX0ZJWCwgUFJfTEFUQ0hfQkdfQ0hFQ0tTVU0gfSwKKworCS8qIGdyb3VwIGRlc2NyaXB0b3IgTiBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LiAqLworCXsgUFJfMF9HRFRfVU5JTklULAorCSAgTl8oIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIpLAorCSAgICAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEdyb3VwIGRlc2NyaXB0b3IgTiBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50LiAqLworCXsgUFJfMF9HRFRfSVRBQkxFX1VOVVNFRCwKKwkgIE5fKCJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiKSwKKwkgICAgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBMYXN0IGdyb3VwIGJsb2NrIGJpdG1hcCB1bmluaXRpYWxpemVkLiAqLworCXsgUFJfMF9CQl9VTklOSVRfTEFTVCwKKwkgIE5fKCJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiKSwKKwkgICAgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBKb3VybmFsIHRyYW5zYWN0aW9uIGZvdW5kIGNvcnJ1cHQgKi8KKwl7IFBSXzBfSk5MX1RYTl9DT1JSVVBULAorCSAgTl8oIkpvdXJuYWwgdHJhbnNhY3Rpb24gJWkgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCXsgUFJfMF9DTEVBUl9URVNURlNfRkxBRywKKwkgIE5fKCJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogTGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUgKGZ1ZGdlZCkgKi8KKwl7IFBSXzBfRlVUVVJFX1NCX0xBU1RfTU9VTlRfRlVER0VELAorCSAgTl8oIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCAiCisJICAgICAicHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSBzZXQpXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIH0sCisKKwkvKiBMYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZSAoZnVkZ2VkKSAqLworCXsgUFJfMF9GVVRVUkVfU0JfTEFTVF9XUklURV9GVURHRUQsCisJICBOXygiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG5cdChieSBsZXNzIHRoYW4gYSBkYXksICIKKwkgICAgICJwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IHNldClcbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIHwgUFJfTk9fT0sgfSwKKworCS8qIEJsb2NrIGdyb3VwIGNoZWNrc3VtIChsYXRjaCBxdWVzdGlvbikgaXMgaW52YWxpZC4gKi8KKwl7IFBSXzBfR0RUX0NTVU1fTEFUQ0gsCisJICBOXygiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiKSwKKwkgICAgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAqLworCXsgUFJfMF9GUkVFX0lOT0RFX0NPVU5ULAorCSAgTl8oIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX05PTVNHIH0sCisKKwkvKiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAqLworCXsgUFJfMF9GUkVFX0JMT0NLX0NPVU5ULAorCSAgTl8oIlNldHRpbmcgZnJlZSBAYnMgY291bnQgdG8gJWMgKHdhcyAlYilcbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX05PTVNHIH0sCisKKwkvKiBNYWtpbmcgcXVvdGEgZmlsZSBoaWRkZW4gKi8KKwl7IFBSXzBfSElERV9RVU9UQSwKKwkgIE5fKCJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9QUkVFTl9PSyB9LAorCisJLyogU3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICovCisJeyBQUl8wX01NUF9JTlZBTElEX0JMSywKKwkgIE5fKCJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAqLworCXsgUFJfMF9NTVBfSU5WQUxJRF9NQUdJQywKKwkgIE5fKCJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfTk9fT0t9LAorCisJLyogT3BlbmluZyBmaWxlIHN5c3RlbSBmYWlsZWQgKi8KKwl7IFBSXzBfT1BFTl9GQUlMRUQsCisJICBOXygiZXh0MmZzX29wZW4yOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogQ2hlY2tpbmcgZ3JvdXAgZGVzY3JpcHRvciBmYWlsZWQgKi8KKwl7IFBSXzBfQ0hFQ0tfREVTQ19GQUlMRUQsCisJICBOXygiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKgorCSAqIG1ldGFkYXRhX2NzdW0gaW1wbGllcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdAorCSAqIGJlIHNldCBzaW11bHRhbmVvdXNseS4KKwkgKi8KKwl7IFBSXzBfTUVUQV9BTkRfR0RUX0NTVU1fU0VULAorCSAgTl8oIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSAiCisJICAgICAiYml0cyBjYW5ub3QgYmUgc2V0IHNpbXVsdGFuZW91c2x5LiIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfCBQUl9OT19PS30sCisKKwkvKiBTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBjaGVja3N1bS4gKi8KKwl7IFBSXzBfTU1QX0NTVU1fSU5WQUxJRCwKKwkgIE5fKCJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LfSwKKworCS8qIDY0Yml0IGlzIHNldCBidXQgZXh0ZW50cyBpcyB1bnNldC4gKi8KKwl7IFBSXzBfNjRCSVRfV0lUSE9VVF9FWFRFTlRTLAorCSAgTl8oIkBTIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LfSwKKworCS8qIFRoZSBmaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcgKi8KKwl7IFBSXzBfRklSU1RfTUVUQV9CR19UT09fQklHLAorCSAgTl8oIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBFeHRlcm5hbCBqb3VybmFsIGhhcyBjb3JydXB0IHN1cGVyYmxvY2sgKi8KKwl7IFBSXzBfRVhUX0pPVVJOQUxfU1VQRVJfQ1NVTV9JTlZBTElELAorCSAgTl8oIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogbWV0YWRhdGFfY3N1bV9zZWVkIG1lYW5zIG5vdGhpbmcgd2l0aG91dCBtZXRhZGF0YV9jc3VtICovCisJeyBQUl8wX0NTVU1fU0VFRF9XSVRIT1VUX01FVEFfQ1NVTSwKKwkgIE5fKCJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LfSwKKworCS8qIEVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0ICovCisJeyBQUl8wX1FVT1RBX0lOSVRfQ1RYLAorCSAgTl8oIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIpLAorCSAgUFJPTVBUX05VTEwsIFBSX0ZBVEFMIH0sCisKKwkvKiBCYWQgc19taW5fZXh0cmFfaXNpemUgaW4gc3VwZXJibG9jayAqLworCXsgUFJfMF9CQURfTUlOX0VYVFJBX0lTSVpFLAorCSAgTl8oIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBCYWQgc19taW5fZXh0cmFfaXNpemUgaW4gc3VwZXJibG9jayAqLworCXsgUFJfMF9CQURfV0FOVF9FWFRSQV9JU0laRSwKKwkgIE5fKCJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBQYXNzIDEgZXJyb3JzICovCisKKwkvKiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMgKi8KKwl7IFBSXzFfUEFTU19IRUFERVIsCisJICBOXygiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBSb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSAqLworCXsgUFJfMV9ST09UX05PX0RJUiwgTl8oIkByIGlzIG5vdCBhIEBkLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIFJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAqLworCXsgUFJfMV9ST09UX0RUSU1FLAorCSAgTl8oIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFJlc2VydmVkIGlub2RlIGhhcyBiYWQgbW9kZSAqLworCXsgUFJfMV9SRVNFUlZFRF9CQURfTU9ERSwKKwkgIE5fKCJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBEZWxldGVkIGlub2RlIGhhcyB6ZXJvIGR0aW1lICovCisJeyBQUl8xX1pFUk9fRFRJTUUsCisJICBOXygiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBJbm9kZSBpbiB1c2UsIGJ1dCBkdGltZSBzZXQgKi8KKwl7IFBSXzFfU0VUX0RUSU1FLAorCSAgTl8oIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBaZXJvLWxlbmd0aCBkaXJlY3RvcnkgKi8KKwl7IFBSXzFfWkVST19MRU5HVEhfRElSLAorCSAgTl8oIkBpICVpIGlzIGEgQHogQGQuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEJsb2NrIGJpdG1hcCBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrICovCisJeyBQUl8xX0JCX0NPTkZMSUNULAorCSAgTl8oIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iKSwKKwkgIFBST01QVF9SRUxPQ0FURSwgMCB9LAorCisJLyogSW5vZGUgYml0bWFwIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2sgKi8KKwl7IFBSXzFfSUJfQ09ORkxJQ1QsCisJICBOXygiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIpLAorCSAgUFJPTVBUX1JFTE9DQVRFLCAwIH0sCisKKwkvKiBJbm9kZSB0YWJsZSBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrICovCisJeyBQUl8xX0lUQUJMRV9DT05GTElDVCwKKwkgIE5fKCJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIiksCisJICBQUk9NUFRfUkVMT0NBVEUsIDAgfSwKKworCS8qIEJsb2NrIGJpdG1hcCBpcyBvbiBhIGJhZCBibG9jayAqLworCXsgUFJfMV9CQl9CQURfQkxPQ0ssCisJICBOXygiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIpLAorCSAgUFJPTVBUX1JFTE9DQVRFLCAwIH0sCisKKwkvKiBJbm9kZSBiaXRtYXAgaXMgb24gYSBiYWQgYmxvY2sgKi8KKwl7IFBSXzFfSUJfQkFEX0JMT0NLLAorCSAgTl8oIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiKSwKKwkgIFBST01QVF9SRUxPQ0FURSwgMCB9LAorCisJLyogSW5vZGUgaGFzIGluY29ycmVjdCBpX3NpemUgKi8KKwl7IFBSXzFfQkFEX0lfU0laRSwKKwkgIE5fKCJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBJbm9kZSBoYXMgaW5jb3JyZWN0IGlfYmxvY2tzICovCisJeyBQUl8xX0JBRF9JX0JMT0NLUywKKwkgIE5fKCJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIElsbGVnYWwgYmxvY2tudW1iZXIgaW4gaW5vZGUgKi8KKwl7IFBSXzFfSUxMRUdBTF9CTE9DS19OVU0sCisJICBOXygiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9MQVRDSF9CTE9DSyB9LAorCisJLyogQmxvY2sgbnVtYmVyIG92ZXJsYXBzIGZzIG1ldGFkYXRhICovCisJeyBQUl8xX0JMT0NLX09WRVJMQVBTX01FVEFEQVRBLAorCSAgTl8oIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfTEFUQ0hfQkxPQ0sgfSwKKworCS8qIElub2RlIGhhcyBpbGxlZ2FsIGJsb2NrcyAobGF0Y2ggcXVlc3Rpb24pICovCisJeyBQUl8xX0lOT0RFX0JMT0NLX0xBVENILAorCSAgTl8oIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIFRvbyBtYW55IGJhZCBibG9ja3MgaW4gaW5vZGUgKi8KKwl7IFBSXzFfVE9PX01BTllfQkFEX0JMT0NLUywKKwkgIE5fKCJUb28gbWFueSBpbGxlZ2FsIEBicyBpbiBAaSAlaS5cbiIpLAorCSAgUFJPTVBUX0NMRUFSX0lOT0RFLCBQUl9OT19PSyB9LAorCisJLyogSWxsZWdhbCBibG9jayBudW1iZXIgaW4gYmFkIGJsb2NrIGlub2RlICovCisJeyBQUl8xX0JCX0lMTEVHQUxfQkxPQ0tfTlVNLAorCSAgTl8oIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX0xBVENIX0JCTE9DSyB9LAorCisJLyogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrcyAobGF0Y2ggcXVlc3Rpb24pICovCisJeyBQUl8xX0lOT0RFX0JCTE9DS19MQVRDSCwKKwkgIE5fKCJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogRHVwbGljYXRlIG9yIGJhZCBibG9ja3MgaW4gdXNlISAqLworCXsgUFJfMV9EVVBfQkxPQ0tTX1BSRUVOU1RPUCwKKwkgIE5fKCJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEJhZCBibG9jayB1c2VkIGFzIGJhZCBibG9jayBpbmRpcmVjdCBibG9jayAqLworCXsgUFJfMV9CQklOT0RFX0JBRF9NRVRBQkxPQ0ssCisJICBOXygiQmFkIEBiICViIHVzZWQgYXMgYmFkIEBiIEBpIGluZGlyZWN0IEBiLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX0xBVENIX0JCTE9DSyB9LAorCisJLyogSW5jb25zaXN0ZW5jeSBjYW4ndCBiZSBmaXhlZCBwcm9tcHQgKi8KKwl7IFBSXzFfQkJJTk9ERV9CQURfTUVUQUJMT0NLX1BST01QVCwKKwkgIE5fKCJcblRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisJICAgICAic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gIiJlMmZzY2sgLWMiIiB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisJICAgICAiaW4gdGhlIEBmLlxuIiksCisJICBQUk9NUFRfQ09OVElOVUUsIFBSX1BSRUVOX05PTVNHIH0sCisKKwkvKiBCYWQgcHJpbWFyeSBibG9jayAqLworCXsgUFJfMV9CQURfUFJJTUFSWV9CTE9DSywKKwkgIE5fKCJcbklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0FGVEVSX0NPREUsIFBSXzFfQkFEX1BSSU1BUllfQkxPQ0tfUFJPTVBUIH0sCisKKwkvKiBCYWQgcHJpbWFyeSBibG9jayBwcm9tcHQgKi8KKwl7IFBSXzFfQkFEX1BSSU1BUllfQkxPQ0tfUFJPTVBULAorCSAgTl8oIllvdSBjYW4gcmVtb3ZlIHRoaXMgQGIgZnJvbSB0aGUgYmFkIEBiIGxpc3QgYW5kIGhvcGVcbiIKKwkgICAgICJ0aGF0IHRoZSBAYiBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogQmFkIHByaW1hcnkgc3VwZXJibG9jayAqLworCXsgUFJfMV9CQURfUFJJTUFSWV9TVVBFUkJMT0NLLAorCSAgTl8oIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfQUZURVJfQ09ERSwgUFJfMV9CQURfUFJJTUFSWV9CTE9DSyB9LAorCisJLyogQmFkIHByaW1hcnkgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgKi8KKwl7IFBSXzFfQkFEX1BSSU1BUllfR1JPVVBfREVTQ1JJUFRPUiwKKwkgIE5fKCJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyAiCisJICAiaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9BRlRFUl9DT0RFLCBQUl8xX0JBRF9QUklNQVJZX0JMT0NLIH0sCisKKwkvKiBCYWQgc3VwZXJibG9jayBpbiBncm91cCAqLworCXsgUFJfMV9CQURfU1VQRVJCTE9DSywKKwkgIE5fKCJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogQmFkIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIGluIGdyb3VwICovCisJeyBQUl8xX0JBRF9HUk9VUF9ERVNDUklQVE9SUywKKwkgIE5fKCJXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIEBnIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCAiCisJICAiQGIgKCViKS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIHwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIEJsb2NrIGNsYWltZWQgZm9yIG5vIHJlYXNvbiAqLworCXsgUFJfMV9QUk9HRVJSX0NMQUlNRURfQkxPQ0ssCisJICBOXygiUHJvZ3JhbW1pbmcgZXJyb3I/ICBAYiAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluICIKKwkgICJwcm9jZXNzX2JhZF9AYi5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBFcnJvciBhbGxvY2F0aW5nIGJsb2NrcyBmb3IgcmVsb2NhdGluZyBtZXRhZGF0YSAqLworCXsgUFJfMV9SRUxPQ19CTE9DS19BTExPQ0FURSwKKwkgIE5fKCJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBFcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBkdXJpbmcgcmVsb2NhdGlvbiBwcm9jZXNzICovCisJeyBQUl8xX1JFTE9DX01FTU9SWV9BTExPQ0FURSwKKwkgIE5fKCJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBSZWxvY2F0aW5nIG1ldGFkYXRhIGdyb3VwIGluZm9ybWF0aW9uIGZyb20gWCB0byBZICovCisJeyBQUl8xX1JFTE9DX0ZST01fVE8sCisJICBOXygiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBSZWxvY2F0aW5nIG1ldGF0ZGF0YSBncm91cCBpbmZvcm1hdGlvbiB0byBYICovCisJeyBQUl8xX1JFTE9DX1RPLAorCSAgTl8oIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIiksIC8qIHhnZXR0ZXh0Om5vLWMtZm9ybWF0ICovCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEJsb2NrIHJlYWQgZXJyb3IgZHVyaW5nIHJlbG9jYXRpb24gcHJvY2VzcyAqLworCXsgUFJfMV9SRUxPQ19SRUFEX0VSUiwKKwkgIE5fKCJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBCbG9jayB3cml0ZSBlcnJvciBkdXJpbmcgcmVsb2NhdGlvbiBwcm9jZXNzICovCisJeyBQUl8xX1JFTE9DX1dSSVRFX0VSUiwKKwkgIE5fKCJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICovCisJeyBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsCisJICBOXygiQEEgQGkgQEIgKCVOKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBFcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAqLworCXsgUFJfMV9BTExPQ0FURV9CQklUTUFQX0VSUk9SLAorCSAgTl8oIkBBIEBiIEBCICglTik6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbiAqLworCXsgUFJfMV9BTExPQ0FURV9JQ09VTlQsCisJICBOXygiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXkgKi8KKwl7IFBSXzFfQUxMT0NBVEVfREJDT1VOVCwKKwkgIE5fKCJAQSBAZCBAYiBhcnJheTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKi8KKwl7IFBSXzFfSVNDQU5fRVJST1IsCisJICBOXygiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgQGlzICglaSk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzICovCisJeyBQUl8xX0JMT0NLX0lURVJBVEUsCisJICBOXygiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEVycm9yIHdoaWxlIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKi8KKwl7IFBSXzFfSUNPVU5UX1NUT1JFLAorCSAgTl8oIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3Igd2hpbGUgc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKi8KKwl7IFBSXzFfQUREX0RCTE9DSywKKwkgIE5fKCJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uICIKKwkgICIoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEVycm9yIHdoaWxlIHJlYWRpbmcgaW5vZGUgKGZvciBjbGVhcmluZykgKi8KKwl7IFBSXzFfUkVBRF9JTk9ERSwKKwkgIE5fKCJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIFN1cHByZXNzIG1lc3NhZ2VzIHByb21wdCAqLworCXsgUFJfMV9TVVBQUkVTU19NRVNTQUdFUywgIiIsIFBST01QVF9TVVBQUkVTUywgUFJfTk9fT0sgfSwKKworCS8qIEltYWdpYyBmbGFnIHNldCBvbiBhbiBpbm9kZSB3aGVuIGZpbGVzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IGl0ICovCisJeyBQUl8xX1NFVF9JTUFHSUMsCisJICBOXygiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBJbW11dGFibGUgZmxhZyBzZXQgb24gYSBkZXZpY2Ugb3Igc29ja2V0IGlub2RlICovCisJeyBQUl8xX1NFVF9JTU1VVEFCTEUsCisJICBOXygiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKwkgICAgICJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB8IFBSX1BSRUVOX05PIHwgUFJfTk9fT0sgfSwKKworCS8qIE5vbi16ZXJvIHNpemUgZm9yIGRldmljZSwgZmlmbyBvciBzb2NrZXQgaW5vZGUgKi8KKwl7IFBSXzFfU0VUX05PTlpTSVpFLAorCSAgTl8oIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgMCwgYnV0IGZlYXR1cmUgZmxhZ3MgYXJlIHNldCAqLworCXsgUFJfMV9GU19SRVZfTEVWRUwsCisJICBOXygiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfTk9fT0sgfSwKKworCS8qIEpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEgKi8KKwl7IFBSXzFfSk9VUk5BTF9JTk9ERV9OT1RfQ0xFQVIsCisJICBOXygiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEpvdXJuYWwgaGFzIGJhZCBtb2RlICovCisJeyBQUl8xX0pPVVJOQUxfQkFEX01PREUsCisJICBOXygiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIERlYWwgd2l0aCBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2Ygb3JwaGFuIGxpbmtlZCBsaXN0ICovCisJeyBQUl8xX0xPV19EVElNRSwKKwkgIE5fKCJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfTEFUQ0hfTE9XX0RUSU1FLCAwIH0sCisKKwkvKiBEZWFsIHdpdGggaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkCisJICAgbGlzdCAobGF0Y2ggcXVlc3Rpb24pICovCisJeyBQUl8xX09SUEhBTl9MSVNUX1JFRlVHRUVTLAorCSAgTl8oIkBpcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAiKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICovCisJeyBQUl8xX0FMTE9DQVRFX1JFRkNPVU5ULAorCSAgTl8oIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICovCisJeyBQUl8xX1JFQURfRUFfQkxPQ0ssCisJICBOXygiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogSW52YWxpZCBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgKi8KKwl7IFBSXzFfQkFEX0VBX0JMT0NLLAorCSAgTl8oIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBFcnJvciByZWFkaW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSBibG9jayB3aGlsZSBmaXhpbmcgcmVmY291bnQgKi8KKwl7IFBSXzFfRVhUQVRUUl9SRUFEX0FCT1JULAorCSAgTl8oIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBFeHRlbmRlZCBhdHRyaWJ1dGUgcmVmZXJlbmNlIGNvdW50IGluY29ycmVjdCAqLworCXsgUFJfMV9FWFRBVFRSX1JFRkNPVU5ULAorCSAgTl8oIkBhIEBiICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIEBzICVOLiAgIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBFcnJvciB3cml0aW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSBibG9jayB3aGlsZSBmaXhpbmcgcmVmY291bnQgKi8KKwl7IFBSXzFfRVhUQVRUUl9XUklURV9BQk9SVCwKKwkgIE5fKCJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogTXVsdGlwbGUgRUEgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgKi8KKwl7IFBSXzFfRUFfTVVMVElfQkxPQ0ssCisJICBOXygiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgRUEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlICovCisJeyBQUl8xX0VBX0FMTE9DX1JFR0lPTl9BQk9SVCwKKwkgIE5fKCJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTH0sCisKKwkvKiBFcnJvciBFQSBhbGxvY2F0aW9uIGNvbGxpc2lvbiAqLworCXsgUFJfMV9FQV9BTExPQ19DT0xMSVNJT04sCisJICBOXygiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDB9LAorCisJLyogQmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lICovCisJeyBQUl8xX0VBX0JBRF9OQU1FLAorCSAgTl8oIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDB9LAorCisJLyogQmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZSAqLworCXsgUFJfMV9FQV9CQURfVkFMVUUsCisJICBOXygiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDB9LAorCisJLyogSW5vZGUgdG9vIGJpZyAobGF0Y2ggcXVlc3Rpb24pICovCisJeyBQUl8xX0lOT0RFX1RPT0JJRywKKwkgIE5fKCJAaSAlaSBpcyB0b28gYmlnLiAgIiksIFBST01QVF9UUlVOQ0FURSwgMCB9LAorCisJLyogRGlyZWN0b3J5IHRvbyBiaWcgKi8KKwl7IFBSXzFfVE9PQklHX0RJUiwKKwkgIE5fKCIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX0xBVENIX1RPT0JJRyB9LAorCisJLyogUmVndWxhciBmaWxlIHRvbyBiaWcgKi8KKwl7IFBSXzFfVE9PQklHX1JFRywKKwkgIE5fKCIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfTEFUQ0hfVE9PQklHIH0sCisKKwkvKiBTeW1saW5rIHRvbyBiaWcgKi8KKwl7IFBSXzFfVE9PQklHX1NZTUxJTkssCisJICBOXygiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX0xBVENIX1RPT0JJRyB9LAorCisJLyogSU5ERVhfRkwgZmxhZyBzZXQgb24gYSBub24tSFRSRUUgZmlsZXN5c3RlbSAqLworCXsgUFJfMV9IVFJFRV9TRVQsCisJICBOXygiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogSU5ERVhfRkwgZmxhZyBzZXQgb24gYSBub24tZGlyZWN0b3J5ICovCisJeyBQUl8xX0hUUkVFX05PRElSLAorCSAgTl8oIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEludmFsaWQgcm9vdCBub2RlIGluIEhUUkVFIGRpcmVjdG9yeSAqLworCXsgUFJfMV9IVFJFRV9CQURST09ULAorCSAgTl8oIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiBpbiBIVFJFRSBkaXJlY3RvcnkgKi8KKwl7IFBSXzFfSFRSRUVfSEFTSFYsCisJICBOXygiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEluY29tcGF0aWJsZSBmbGFnIGluIEhUUkVFIHJvb3Qgbm9kZSAqLworCXsgUFJfMV9IVFJFRV9JTkNPTVBBVCwKKwkgIE5fKCJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogSFRSRUUgdG9vIGRlZXAgKi8KKwl7IFBSXzFfSFRSRUVfREVQVEgsCisJICBOXygiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogQmFkIGJsb2NrIGhhcyBpbmRpcmVjdCBibG9jayB0aGF0IGNvbmZsaWN0cyB3aXRoIGZpbGVzeXN0ZW0gYmxvY2sgKi8KKwl7IFBSXzFfQkJfRlNfQkxPQ0ssCisJICBOXygiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKwkgICAgICJAZiBtZXRhZGF0YS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9MQVRDSF9CQkxPQ0sgfSwKKworCS8qIFJlc2l6ZSBpbm9kZSBmYWlsZWQgKi8KKwl7IFBSXzFfUkVTSVpFX0lOT0RFX0NSRUFURSwKKwkgIE5fKCJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIiksCisJICBQUk9NUFRfQ09OVElOVUUsIDAgfSwKKworCS8qIGludmFsaWQgaW5vZGUtPmlfZXh0cmFfaXNpemUgKi8KKwl7IFBSXzFfRVhUUkFfSVNJWkUsCisJICBOXygiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW52YWxpZCBlYSBlbnRyeS0+ZV9uYW1lX2xlbiAqLworCXsgUFJfMV9BVFRSX05BTUVfTEVOLAorCSAgTl8oIkBhIGluIEBpICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBAblxuIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBpbnZhbGlkIGVhIGVudHJ5LT5lX3ZhbHVlX29mZnMgKi8KKwl7IFBSXzFfQVRUUl9WQUxVRV9PRkZTRVQsCisJICBOXygiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW52YWxpZCBlYSBlbnRyeS0+ZV92YWx1ZV9ibG9jayAqLworCXsgUFJfMV9BVFRSX1ZBTFVFX0JMT0NLLAorCSAgTl8oIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW52YWxpZCBlYSBlbnRyeS0+ZV92YWx1ZV9zaXplICovCisJeyBQUl8xX0FUVFJfVkFMVUVfU0laRSwKKwkgIE5fKCJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW52YWxpZCBlYSBlbnRyeS0+ZV9oYXNoICovCisJeyBQUl8xX0FUVFJfSEFTSCwKKwkgIE5fKCJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW5vZGUgYXBwZWFycyB0byBiZSBhIGRpcmVjdG9yeSAqLworCXsgUFJfMV9UUkVBVF9BU19ESVJFQ1RPUlksCisJICBOXygiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBFcnJvciB3aGlsZSByZWFkaW5nIGV4dGVudCB0cmVlICovCisJeyBQUl8xX1JFQURfRVhURU5ULAorCSAgTl8oIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIiksCisJICBQUk9NUFRfQ0xFQVJfSU5PREUsIDAgfSwKKworCS8qIEZhaWx1cmUgdG8gaXRlcmF0ZSBleHRlbnRzICovCisJeyBQUl8xX0VYVEVOVF9JVEVSQVRFX0ZBSUxVUkUsCisJICBOXygiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorCSAgICAgIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIiksCisJICBQUk9NUFRfQ0xFQVJfSU5PREUsIDAgfSwKKworCS8qIEJhZCBzdGFydGluZyBibG9jayBpbiBleHRlbnQgKi8KKwl7IFBSXzFfRVhURU5UX0JBRF9TVEFSVF9CTEssCisJICBOXygiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBFeHRlbnQgZW5kcyBiZXlvbmQgZmlsZXN5c3RlbSAqLworCXsgUFJfMV9FWFRFTlRfRU5EU19CRVlPTkQsCisJICBOXygiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGEgbm9uLWV4dGVudHMgZmlsZXN5c3RlbSAqLworCXsgUFJfMV9FWFRFTlRTX1NFVCwKKwkgIE5fKCJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBpbm9kZSBoYXMgZXh0ZW50cywgc3VwZXJibG9jayBtaXNzaW5nIElOQ09NUEFUX0VYVEVOVFMgZmVhdHVyZSAqLworCXsgUFJfMV9FWFRFTlRfRkVBVFVSRSwKKwkgIE5fKCJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogaW5vZGUgbWlzc2luZyBFWFRFTlRTX0ZMLCBidXQgaXMgYW4gZXh0ZW50IGlub2RlICovCisJeyBQUl8xX1VOU0VUX0VYVEVOVF9GTCwKKwkgIE5fKCJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBGYXN0IHN5bWxpbmsgaGFzIEVYVEVOVFNfRkwgc2V0ICovCisJeyBQUl8xX0ZBU1RfU1lNTElOS19FWFRFTlRfRkwsCisJICBOXygiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIEV4dGVudHMgYXJlIG91dCBvZiBvcmRlciAqLworCXsgUFJfMV9PVVRfT0ZfT1JERVJfRVhURU5UUywKKwkgIE5fKCJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcblx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJeyBQUl8xX0VYVEVOVF9IRUFERVJfSU5WQUxJRCwKKwkgIE5fKCJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIEZhaWxlZCB0byBjb252ZXJ0IHN1YmNsdXN0ZXIgYml0bWFwICovCisJeyBQUl8xX0NPTlZFUlRfU1VCQ0xVU1RFUiwKKwkgIE5fKCJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogUXVvdGEgaW5vZGUgaGFzIGJhZCBtb2RlICovCisJeyBQUl8xX1FVT1RBX0JBRF9NT0RFLAorCSAgTl8oIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhICovCisJeyBQUl8xX1FVT1RBX0lOT0RFX05PVF9DTEVBUiwKKwkgIE5fKCJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogUXVvdGEgaW5vZGUgaXMgdXNlciB2aXNpYmxlICovCisJeyBQUl8xX1FVT1RBX0lOT0RFX05PVF9ISURERU4sCisJICBOXygiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogSW52YWxpZCBiYWQgaW5vZGUgKi8KKwl7IFBSXzFfSU5WQUxJRF9CQURfSU5PREUsCisJICBOXygiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBFeHRlbnQgaGFzIHplcm8gbGVuZ3RoICovCisJeyBQUl8xX0VYVEVOVF9MRU5HVEhfWkVSTywKKwkgIE5fKCJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG5cdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBpbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UgKi8KKwl7IFBSXzFfSU5PREVfSVNfR0FSQkFHRSwKKwkgIE5fKCJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogaW5vZGUgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlICovCisJeyBQUl8xX0lOT0RFX09OTFlfQ1NVTV9JTlZBTElELAorCSAgTl8oIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIElub2RlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikgKi8KKwl7IFBSXzFfSU5PREVfRUFfQUxMT0NfQ09MTElTSU9OLAorCSAgTl8oIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwfSwKKworCS8qCisJICogSW5vZGUgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaAorCSAqIGV4dGVudAorCSAqLworCXsgUFJfMV9FWFRFTlRfT05MWV9DU1VNX0lOVkFMSUQsCisJICBOXygiQGkgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCAiCisJICAgICAiZXh0ZW50XG5cdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKgorCSAqIElub2RlIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QKKwkgKiBtYXRjaCBibG9jay4KKwkgKi8KKwl7IFBSXzFfRUFfQkxPQ0tfT05MWV9DU1VNX0lOVkFMSUQsCisJICBOXygiQGkgJWkgQGEgQGIgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBiLiAgIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKgorCSAqIEludGVyaW9yIGV4dGVudCBub2RlIGxvZ2ljYWwgb2Zmc2V0IGRvZXNuJ3QgbWF0Y2ggZmlyc3Qgbm9kZSBiZWxvdyBpdAorCSAqLworCXsgUFJfMV9FWFRFTlRfSU5ERVhfU1RBUlRfSU5WQUxJRCwKKwkgIE5fKCJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorCSAgICAgIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBFeHRlbnQgZW5kIGlzIG91dCBvZiBib3VuZHMgZm9yIHRoZSB0cmVlICovCisJeyBQUl8xX0VYVEVOVF9FTkRfT1VUX09GX0JPVU5EUywKKwkgIE5fKCJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcblx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogSW5vZGUgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmUuICovCisJeyBQUl8xX0lOTElORV9EQVRBX0ZFQVRVUkUsCisJICBOXygiQGkgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgQFMgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIElOTElORV9EQVRBIGZlYXR1cmUgaXMgc2V0IGluIGEgbm9uLWlubGluZS1kYXRhIGZpbGVzeXN0ZW0gKi8KKwl7IFBSXzFfSU5MSU5FX0RBVEFfU0VULAorCSAgTl8oIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKgorCSAqIElub2RlIGJsb2NrIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZworCSAqIGJsb2NrIGNoZWNrcworCSAqLworCXsgUFJfMV9DUklUSUNBTF9NRVRBREFUQV9DT0xMSVNJT04sCisJICBOXygiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIERpcmVjdG9yeSBpbm9kZSBibG9jayA8YmxvY2s+IHNob3VsZCBiZSBhdCBibG9jayA8b3RoZXJibG9jaz4gKi8KKwl7IFBSXzFfQ09MTEFQU0VfREJMT0NLLAorCSAgTl8oIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogRXh0ZW50cy9pbmxpbmVkYXRhIGZsYWcgc2V0IG9uIGEgZGV2aWNlIG9yIHNvY2tldCBpbm9kZSAqLworCXsgUFJfMV9VTklOSVRfREJMT0NLLAorCSAgTl8oIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfSwKKworCS8qIElub2RlIGxvZ2ljYWwgYmxvY2sgKHBoeXNpY2FsIGJsb2NrICkgaXMgbWlzYWxpZ25lZC4gKi8KKwl7IFBSXzFfTUlTQUxJR05FRF9DTFVTVEVSLAorCSAgTl8oIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG5XaWxsIGZpeCBpbiBwYXNzIDFCLlxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogSW5vZGUgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQgKi8KKwl7IFBSXzFfSU5MSU5FX0RBVEFfTk9fQVRUUiwKKwkgIE5fKCJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIiksCisJICBQUk9NUFRfVFJVTkNBVEUsIDAgfSwKKworCS8qIEV4dGVudHMvaW5saW5lZGF0YSBmbGFnIHNldCBvbiBhIGRldmljZSBvciBzb2NrZXQgaW5vZGUgKi8KKwl7IFBSXzFfU1BFQ0lBTF9FWFRFTlRTX0lEQVRBLAorCSAgTl8oIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKwkgICAgICJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB8IFBSX1BSRUVOX05PIHwgUFJfTk9fT0sgfSwKKworCS8qIElub2RlIGhhcyBleHRlbnQgaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldCAqLworCXsgUFJfMV9DTEVBUl9JTkxJTkVfREFUQV9GT1JfRVhURU5ULAorCSAgTl8oIkBpICVpIGhhcyBAeCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBJbm9kZSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQgKi8KKwl7IFBSXzFfQ0xFQVJfRVhURU5UX0ZPUl9JTkxJTkVfREFUQSwKKwkgIE5fKCJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogSW5vZGUgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0ICovCisJeyBQUl8xX0NMRUFSX0VYVEVOVF9JTkxJTkVfREFUQV9GTEFHUywKKwkgIE5fKCJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogSW5vZGUgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3MgYnV0IGlfYmxvY2sgY29udGFpbnMganVuayAqLworCXsgUFJfMV9DTEVBUl9FWFRFTlRfSU5MSU5FX0RBVEFfSU5PREUsCisJICBOXygiQGkgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbiIpLAorCSAgUFJPTVBUX0NMRUFSX0lOT0RFLCAwIH0sCisKKwkvKiBCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBpbm9kZSBpcyBiYWQgKi8KKwl7IFBSXzFfQkFEQkxPQ0tTX0lOX0JBREJMT0NLUywKKwkgIE5fKCJCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBAaSBpcyBiYWQuICAiKSwKKwkgIFBST01QVF9DTEVBUl9JTk9ERSwgMCB9LAorCisJLyogRXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlICovCisJeyBQUl8xX0VYVEVOVF9BTExPQ19SRUdJT05fQUJPUlQsCisJICBOXygiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUx9LAorCisJLyogSW5vZGUgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nICovCisJeyBQUl8xX0VYVEVOVF9DT0xMSVNJT04sCisJICBOXygiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcblx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogRXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdCAqLworCXsgUFJfMV9BTExPQ0FURV9FTkNSWVBURURfRElSTElTVCwKKwkgIE5fKCJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogSW5vZGUgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICovCisJeyBQUl8xX0VYVEVOVF9CQURfTUFYX0RFUFRILAorCSAgTl8oIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAorCisJLyogSW5vZGUgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICovCisJeyBQUl8xX05PX0JJR0FMTE9DX0JMT0NLTUFQX0ZJTEVTLAorCSAgTl8oIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qIElub2RlIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIgKi8KKwl7IFBSXzFfTUlTU0lOR19FWFRFTlRfSEVBREVSLAorCSAgTl8oIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIpLAorCSAgUFJPTVBUX0NMRUFSX0lOT0RFLCAwIH0sCisKKwkvKiBUaW1lc3RhbXAocykgb24gaW5vZGUgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC4gKi8KKwl7IFBSXzFfRUFfVElNRV9PVVRfT0ZfUkFOR0UsCisJICBOXygiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfTk9fT0sgfSwKKworCS8qIFBhc3MgMWIgZXJyb3JzICovCisKKwkvKiBQYXNzIDFCOiBSZXNjYW4gZm9yIGR1cGxpY2F0ZS9iYWQgYmxvY2tzICovCisJeyBQUl8xQl9QQVNTX0hFQURFUiwKKwkgIE5fKCJcblJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisJICAiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBEdXBsaWNhdGUvYmFkIGJsb2NrKHMpIGhlYWRlciAqLworCXsgUFJfMUJfRFVQX0JMT0NLX0hFQURFUiwKKwkgIE5fKCJAbSBAYihzKSBpbiBAaSAlaToiKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBEdXBsaWNhdGUvYmFkIGJsb2NrKHMpIGluIGlub2RlICovCisJeyBQUl8xQl9EVVBfQkxPQ0ssCisJICAiICViIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9EQkxPQ0sgfCBQUl9QUkVFTl9OT0hEUiB9LAorCisJLyogRHVwbGljYXRlL2JhZCBibG9jayhzKSBlbmQgKi8KKwl7IFBSXzFCX0RVUF9CTE9DS19FTkQsCisJICAiXG4iLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX05PSERSIH0sCisKKwkvKiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKi8KKwl7IFBSXzFCX0lTQ0FOX0VSUk9SLAorCSAgTl8oIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICovCisJeyBQUl8xQl9BTExPQ0FURV9JQklUTUFQX0VSUk9SLAorCSAgTl8oIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgKi8KKwl7IFBSXzFCX0JMT0NLX0lURVJBVEUsCisJICBOXygiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBFcnJvciBhZGp1c3RpbmcgRUEgcmVmY291bnQgKi8KKwl7IFBSXzFCX0FESl9FQV9SRUZDT1VOVCwKKwkgIE5fKCJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBEdXBsaWNhdGUvYmFkIGJsb2NrIHJhbmdlIGluIGlub2RlICovCisJeyBQUl8xQl9EVVBfUkFOR0UsCisJICAiICViLS0lYyIsCisJICBQUk9NUFRfTk9ORSwgUFJfTEFUQ0hfREJMT0NLIHwgUFJfUFJFRU5fTk9IRFIgfSwKKworCS8qIFBhc3MgMUM6IFNjYW4gZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLiAqLworCXsgUFJfMUNfUEFTU19IRUFERVIsCisJICBOXygiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisKKwkvKiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyAqLworCXsgUFJfMURfUEFTU19IRUFERVIsCisJICBOXygiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBGaWxlIGhhcyBkdXBsaWNhdGUgYmxvY2tzICovCisJeyBQUl8xRF9EVVBfRklMRSwKKwkgIE5fKCJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisJICAiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBMaXN0IG9mIGZpbGVzIHNoYXJpbmcgZHVwbGljYXRlIGJsb2NrcyAqLworCXsgUFJfMURfRFVQX0ZJTEVfTElTVCwKKwkgIE5fKCJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEZpbGUgc2hhcmluZyBibG9ja3Mgd2l0aCBmaWxlc3lzdGVtIG1ldGFkYXRhICAqLworCXsgUFJfMURfU0hBUkVfTUVUQURBVEEsCisJICBOXygiXHQ8QGYgbWV0YWRhdGE+XG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBSZXBvcnQgb2YgaG93IG1hbnkgZHVwbGljYXRlL2JhZCBpbm9kZXMgKi8KKwl7IFBSXzFEX05VTV9EVVBfSU5PREVTLAorCSAgTl8oIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRHVwbGljYXRlZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4gKi8KKwl7IFBSXzFEX0RVUF9CTE9DS1NfREVBTFQsCisJICBOXygiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIENsb25lIGR1cGxpY2F0ZS9iYWQgYmxvY2tzPyAqLworCXsgUFJfMURfQ0xPTkVfUVVFU1RJT04sCisJICAiIiwgUFJPTVBUX0NMT05FLCBQUl9OT19PSyB9LAorCisJLyogRGVsZXRlIGZpbGU/ICovCisJeyBQUl8xRF9ERUxFVEVfUVVFU1RJT04sCisJICAiIiwgUFJPTVBUX0RFTEVURSwgMCB9LAorCisJLyogQ291bGRuJ3QgY2xvbmUgZmlsZSAoZXJyb3IpICovCisJeyBQUl8xRF9DTE9ORV9FUlJPUiwKKwkgIE5fKCJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIiksIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBQYXNzIDFFIEV4dGVudCB0cmVlIG9wdGltaXphdGlvbgkqLworCisJLyogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMgKi8KKwl7IFBSXzFFX1BBU1NfSEVBREVSLAorCSAgTl8oIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX05PTVNHIH0sCisKKwkvKiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgKi8KKwl7IFBSXzFFX09QVElNSVpFX0VYVF9FUlIsCisJICBOXygiRmFpbGVkIHRvIG9wdGltaXplIEB4IHRyZWUgJXAgKCVpKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIE9wdGltaXppbmcgZXh0ZW50IHRyZWVzICovCisJeyBQUl8xRV9PUFRJTUlaRV9FWFRfSEVBREVSLAorCSAgTl8oIk9wdGltaXppbmcgQHggdHJlZXM6ICIpLAorCSAgUFJPTVBUX05PTkUsIFBSX01TR19PTkxZIH0sCisKKwkvKiBSZWJ1aWxkaW5nIGV4dGVudCB0cmVlICVkICovCisJeyBQUl8xRV9PUFRJTUlaRV9FWFQsCisJICAiICVpIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9PUFRJTUlaRV9FWFQgfCBQUl9QUkVFTl9OT0hEUn0sCisKKwkvKiBSZWJ1aWxkaW5nIGV4dGVudCB0cmVlIGVuZCAqLworCXsgUFJfMUVfT1BUSU1JWkVfRVhUX0VORCwKKwkgICJcbiIsCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fTk9IRFIgfSwKKworCS8qIEludGVybmFsIGVycm9yOiBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKi8KKwl7IFBSXzFFX01BWF9FWFRFTlRfVFJFRV9ERVBUSCwKKwkgIE5fKCJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBzaG9ydGVyICovCisJeyBQUl8xRV9DQU5fQ09MTEFQU0VfRVhURU5UX1RSRUUsCisJICBOXygiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAiKSwKKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAorCisJLyogSW5vZGUgZXh0ZW50IHRyZWUgY291bGQgYmUgbmFycm93ZXIgKi8KKwl7IFBSXzFFX0NBTl9OQVJST1dfRVhURU5UX1RSRUUsCisJICBOXygiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9OT19PSyB8IFBSX1BSRUVOX05PIHwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFBhc3MgMiBlcnJvcnMgKi8KKworCS8qIFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZSAqLworCXsgUFJfMl9QQVNTX0hFQURFUiwKKwkgIE5fKCJQYXNzIDI6IENoZWNraW5nIEBkIHN0cnVjdHVyZVxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogQmFkIGlub2RlIG51bWJlciBmb3IgJy4nICovCisJeyBQUl8yX0JBRF9JTk9ERV9ET1QsCisJICBOXygiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qIEVudHJ5ICd4eHh4JyBpbiAvYS9iL2MgaGFzIGJhZCBpbm9kZSBudW1iZXIuKi8KKwl7IFBSXzJfQkFEX0lOTywKKwkgIE5fKCJARSBoYXMgQG4gQGkgIzogJURpLlxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIEVudHJ5ICd4eHh4JyBpbiAvYS9iL2MgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIG5ubm5uLiovCisJeyBQUl8yX1VOVVNFRF9JTk9ERSwKKwkgIE5fKCJARSBoYXMgQEQvdW51c2VkIEBpICVEaS4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogRGlyZWN0cnkgZW50cnkgaXMgbGluayB0byAnLicgKi8KKwl7IFBSXzJfTElOS19ET1QsCisJICBOXygiQEUgQEwgdG8gJy4nICAiKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogRGlyZWN0b3J5IGVudHJ5IHBvaW50cyB0byBpbm9kZSBub3cgbG9jYXRlZCBpbiBhIGJhZCBibG9jayAqLworCXsgUFJfMl9CQl9JTk9ERSwKKwkgIE5fKCJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBEaXJlY3RvcnkgZW50cnkgY29udGFpbnMgYSBsaW5rIHRvIGEgZGlyZWN0b3J5ICovCisJeyBQUl8yX0xJTktfRElSLAorCSAgTl8oIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIERpcmVjdG9yeSBlbnRyeSBjb250YWlucyBhIGxpbmsgdG8gdGhlIHJvb3QgZGlyZWN0cnkgKi8KKwl7IFBSXzJfTElOS19ST09ULAorCSAgTl8oIkBFIEBMIHRvIHRoZSBAci5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBEaXJlY3RvcnkgZW50cnkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZSAqLworCXsgUFJfMl9CQURfTkFNRSwKKwkgIE5fKCJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgKi8KKwl7IFBSXzJfTUlTU0lOR19ET1QsCisJICBOXygiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qIE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgKi8KKwl7IFBSXzJfTUlTU0lOR19ET1RfRE9ULAorCSAgTl8oIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogRmlyc3QgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlIGRvZXNuJ3QgY29udGFpbiAnLicgKi8KKwl7IFBSXzJfMVNUX05PVF9ET1QsCisJICBOXygiRmlyc3QgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgKCVwKSBAcyAnLidcbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogU2Vjb25kIGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSBkb2Vzbid0IGNvbnRhaW4gJy4uJyAqLworCXsgUFJfMl8yTkRfTk9UX0RPVF9ET1QsCisJICBOXygiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogaV9mYWRkciBzaG91bGQgYmUgemVybyAqLworCXsgUFJfMl9GQUREUl9aRVJPLAorCSAgTl8oImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIGlfZmlsZV9hY2wgc2hvdWxkIGJlIHplcm8gKi8KKwl7IFBSXzJfRklMRV9BQ0xfWkVSTywKKwkgIE5fKCJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBpX2Rpcl9hY2wgc2hvdWxkIGJlIHplcm8gKi8KKwl7IFBSXzJfRElSX0FDTF9aRVJPLAorCSAgTl8oImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogaV9mcmFnIHNob3VsZCBiZSB6ZXJvICovCisJeyBQUl8yX0ZSQUdfWkVSTywKKwkgIE5fKCJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogaV9mc2l6ZSBzaG91bGQgYmUgemVybyAqLworCXsgUFJfMl9GU0laRV9aRVJPLAorCSAgTl8oImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogaW5vZGUgaGFzIGJhZCBtb2RlICovCisJeyBQUl8yX0JBRF9NT0RFLAorCSAgTl8oIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogZGlyZWN0b3J5IGNvcnJ1cHRlZCAqLworCXsgUFJfMl9ESVJfQ09SUlVQVEVELAorCSAgTl8oIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIpLAorCSAgUFJPTVBUX1NBTFZBR0UsIDAgfSwKKworCS8qIGZpbGVuYW1lIHRvbyBsb25nICovCisJeyBQUl8yX0ZJTEVOQU1FX0xPTkcsCisJICBOXygiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iKSwKKwkgIFBST01QVF9UUlVOQ0FURSwgMCB9LAorCisJLyogRGlyZWN0b3J5IGlub2RlIGhhcyBhIG1pc3NpbmcgYmxvY2sgKGhvbGUpICovCisJeyBQUl8yX0RJUkVDVE9SWV9IT0xFLAorCSAgTl8oIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIpLAorCSAgUFJPTVBUX0FMTE9DQVRFLCAwIH0sCisKKwkvKiAnLicgaXMgbm90IE5VTEwgdGVybWluYXRlZCAqLworCXsgUFJfMl9ET1RfTlVMTF9URVJNLAorCSAgTl8oIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qICcuLicgaXMgbm90IE5VTEwgdGVybWluYXRlZCAqLworCXsgUFJfMl9ET1RfRE9UX05VTExfVEVSTSwKKwkgIE5fKCInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogSWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlIGlub2RlICovCisJeyBQUl8yX0JBRF9DSEFSX0RFViwKKwkgIE5fKCJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBJbGxlZ2FsIGJsb2NrIGRldmljZSBpbm9kZSAqLworCXsgUFJfMl9CQURfQkxPQ0tfREVWLAorCSAgTl8oIkBpICVpICglUSkgaXMgYW4gQEkgQGIgQHYuXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogRHVwbGljYXRlICcuJyBlbnRyeSAqLworCXsgUFJfMl9EVVBfRE9ULAorCSAgTl8oIkBFIGlzIGR1cGxpY2F0ZSAnLicgQGUuXG4iKSwKKwkgIFBST01QVF9GSVgsIDAgfSwKKworCS8qIER1cGxpY2F0ZSAnLi4nIGVudHJ5ICovCisJeyBQUl8yX0RVUF9ET1RfRE9ULAorCSAgTl8oIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyAqLworCXsgUFJfMl9OT19ESVJJTkZPLAorCSAgTl8oIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBGaW5hbCByZWNfbGVuIGlzIHdyb25nICovCisJeyBQUl8yX0ZJTkFMX1JFQ0xFTiwKKwkgIE5fKCJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBFcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmUgKi8KKwl7IFBSXzJfQUxMT0NBVEVfSUNPVU5ULAorCSAgTl8oIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrcyAqLworCXsgUFJfMl9EQkxJU1RfSVRFUkFURSwKKwkgIE5fKCJFcnJvciBpdGVyYXRpbmcgb3ZlciBAZCBAYnM6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgKi8KKwl7IFBSXzJfUkVBRF9ESVJCTE9DSywKKwkgIE5fKCJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iKSwKKwkgIFBST01QVF9DT05USU5VRSwgMCB9LAorCisJLyogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgKi8KKwl7IFBSXzJfV1JJVEVfRElSQkxPQ0ssCisJICBOXygiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIiksCisJICBQUk9NUFRfQ09OVElOVUUsIDAgfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayAqLworCXsgUFJfMl9BTExPQ19ESVJCT0NLLAorCSAgTl8oIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAqLworCXsgUFJfMl9ERUFMTE9DX0lOT0RFLAorCSAgTl8oIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBEaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpcyBiaWcuICBTcGxpdD8gKi8KKwl7IFBSXzJfU1BMSVRfRE9ULAorCSAgTl8oIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iKSwKKwkgIFBST01QVF9TUExJVCwgUFJfTk9fT0sgfSwKKworCS8qIElsbGVnYWwgRklGTyBpbm9kZSAqLworCXsgUFJfMl9CQURfRklGTywKKwkgIE5fKCJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogSWxsZWdhbCBzb2NrZXQgaW5vZGUgKi8KKwl7IFBSXzJfQkFEX1NPQ0tFVCwKKwkgIE5fKCJAaSAlaSAoJVEpIGlzIGFuIEBJIHNvY2tldC5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBEaXJlY3RvcnkgZmlsZXR5cGUgbm90IHNldCAqLworCXsgUFJfMl9TRVRfRklMRVRZUEUsCisJICBOXygiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIHwgUFJfTk9fTk9NU0cgfSwKKworCS8qIERpcmVjdG9yeSBmaWxldHlwZSBpbmNvcnJlY3QgKi8KKwl7IFBSXzJfQkFEX0ZJTEVUWVBFLAorCSAgTl8oIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogRGlyZWN0b3J5IGZpbGV0eXBlIHNldCBvbiBmaWxlc3lzdGVtICovCisJeyBQUl8yX0NMRUFSX0ZJTEVUWVBFLAorCSAgTl8oIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgUFJfUFJFRU5fT0sgfSwKKworCS8qIERpcmVjdG9yeSBmaWxlbmFtZSBpcyBudWxsICovCisJeyBQUl8yX05VTExfTkFNRSwKKwkgIE5fKCJARSBoYXMgYSBAeiBuYW1lLlxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIEludmFsaWQgc3ltbGluayAqLworCXsgUFJfMl9JTlZBTElEX1NZTUxJTkssCisJICBOXygiU3ltbGluayAlUSAoQGkgIyVpKSBpcyBAbi5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBpX2ZpbGVfYWNsIChleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2spIGlzIGJhZCAqLworCXsgUFJfMl9GSUxFX0FDTF9CQUQsCisJICBOXygiQGEgQGIgQEYgQG4gKCVJZikuXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogRmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGhhcyBubyBzdWNoIGZsYWcgaW4gc2IgKi8KKwl7IFBSXzJfRkVBVFVSRV9MQVJHRV9GSUxFUywKKwkgIE5fKCJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogTm9kZSBpbiBIVFJFRSBkaXJlY3Rvcnkgbm90IHJlZmVyZW5jZWQgKi8KKwl7IFBSXzJfSFRSRUVfTk9UUkVGLAorCSAgTl8oIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogTm9kZSBpbiBIVFJFRSBkaXJlY3RvcnkgcmVmZXJlbmNlZCB0d2ljZSAqLworCXsgUFJfMl9IVFJFRV9EVVBSRUYsCisJICBOXygiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIE5vZGUgaW4gSFRSRUUgZGlyZWN0b3J5IGhhcyBiYWQgbWluIGhhc2ggKi8KKwl7IFBSXzJfSFRSRUVfTUlOX0hBU0gsCisJICBOXygiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIE5vZGUgaW4gSFRSRUUgZGlyZWN0b3J5IGhhcyBiYWQgbWF4IGhhc2ggKi8KKwl7IFBSXzJfSFRSRUVfTUFYX0hBU0gsCisJICBOXygiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIENsZWFyIGludmFsaWQgSFRSRUUgZGlyZWN0b3J5ICovCisJeyBQUl8yX0hUUkVFX0NMRUFSLAorCSAgTl8oIkBuIEBoICVkICglcSkuICAiKSwgUFJPTVBUX0NMRUFSX0hUUkVFLCAwIH0sCisKKwkvKiBCYWQgYmxvY2sgaW4gaHRyZWUgaW50ZXJpb3Igbm9kZSAqLworCXsgUFJfMl9IVFJFRV9CQURCTEssCisJICBOXygiQHAgQGggJWQgKCVxKTogYmFkIEBiIG51bWJlciAlYi5cbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCAwIH0sCisKKwkvKiBFcnJvciBhZGp1c3RpbmcgRUEgcmVmY291bnQgKi8KKwl7IFBSXzJfQURKX0VBX1JFRkNPVU5ULAorCSAgTl8oIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBJbnZhbGlkIEhUUkVFIHJvb3Qgbm9kZSAqLworCXsgUFJfMl9IVFJFRV9CQURfUk9PVCwKKwkgIE5fKCJAcCBAaCAlZDogcm9vdCBub2RlIGlzIEBuXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIEludmFsaWQgSFRSRUUgbGltaXQgKi8KKwl7IFBSXzJfSFRSRUVfQkFEX0xJTUlULAorCSAgTl8oIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIiksCisJICBQUk9NUFRfQ0xFQVJfSFRSRUUsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBJbnZhbGlkIEhUUkVFIGNvdW50ICovCisJeyBQUl8yX0hUUkVFX0JBRF9DT1VOVCwKKwkgIE5fKCJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogSFRSRUUgaW50ZXJpb3Igbm9kZSBoYXMgb3V0LW9mLW9yZGVyIGhhc2hlcyBpbiB0YWJsZSAqLworCXsgUFJfMl9IVFJFRV9IQVNIX09SREVSLAorCSAgTl8oIkBwIEBoICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbiIpLAorCSAgUFJPTVBUX0NMRUFSX0hUUkVFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogTm9kZSBpbiBIVFJFRSBkaXJlY3RvcnkgaGFzIGludmFsaWQgZGVwdGggKi8KKwl7IFBSXzJfSFRSRUVfQkFEX0RFUFRILAorCSAgTl8oIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRHVwbGljYXRlIGRpcmVjdG9yeSBlbnRyeSBmb3VuZCAqLworCXsgUFJfMl9EVVBMSUNBVEVfRElSRU5ULAorCSAgTl8oIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIpLAorCSAgUFJPTVBUX0NMRUFSLCAwIH0sCisKKwkvKiBOb24tdW5pcXVlIGZpbGVuYW1lIGZvdW5kICovCisJeyBQUl8yX05PTl9VTklRVUVfRklMRSwgLyogeGdldHRleHQ6IG5vLWMtZm9ybWF0ICovCisJICBOXygiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cblJlbmFtZSB0byAlcyIpLAorCSAgUFJPTVBUX05VTEwsIDAgfSwKKworCS8qIER1cGxpY2F0ZSBkaXJlY3RvcnkgZW50cnkgZm91bmQgKi8KKwl7IFBSXzJfUkVQT1JUX0RVUF9ESVJFTlQsCisJICBOXygiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cblxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogaV9ibG9ja3NfaGkgc2hvdWxkIGJlIHplcm8gKi8KKwl7IFBSXzJfQkxPQ0tTX0hJX1pFUk8sCisJICBOXygiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogVW5leHBlY3RlZCBIVFJFRSBibG9jayAqLworCXsgUFJfMl9VTkVYUEVDVEVEX0hUUkVFX0JMT0NLLAorCSAgTl8oIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIpLCBQUk9NUFRfQ0xFQVJfSFRSRUUsIDAgfSwKKworCS8qIElub2RlIGZvdW5kIGluIGdyb3VwIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0ICovCisJeyBQUl8yX0lOT1JFRl9CR19JTk9fVU5JTklULAorCSAgTl8oIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogSW5vZGUgZm91bmQgaW4gZ3JvdXAgdW51c2VkIGlub2RlcyBhcmVhICovCisJeyBQUl8yX0lOT1JFRl9JTl9VTlVTRUQsCisJICBOXygiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBpX2Jsb2Nrc19oaSBzaG91bGQgYmUgemVybyAqLworCXsgUFJfMl9JX0ZJTEVfQUNMX0hJX1pFUk8sCisJICBOXygiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIpLAorCSAgUFJPTVBUX0NMRUFSLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaHRyZWUgcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtICovCisJeyBQUl8yX0hUUkVFX1JPT1RfQ1NVTV9JTlZBTElELAorCSAgTl8oIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIGh0cmVlIGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0gKi8KKwl7IFBSXzJfSFRSRUVfTk9ERV9DU1VNX0lOVkFMSUQsCisJICBOXygiQHAgQGggJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iKSwKKwkgIFBST01QVF9DTEVBUl9IVFJFRSwgUFJfUFJFRU5fT0sgfSwKKworCS8qIGxlYWYgbm9kZSBoYXMgbm8gY2hlY2tzdW0gKi8KKwl7IFBSXzJfTEVBRl9OT0RFX01JU1NJTkdfQ1NVTSwKKwkgIE5fKCJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgaGFzIG5vIGNoZWNrc3VtLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogbGVhZiBub2RlIHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtICovCisJeyBQUl8yX0xFQUZfTk9ERV9PTkxZX0NTVU1fSU5WQUxJRCwKKwkgIE5fKCJAZCBAaSAlaSwgJUI6IEBkIHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogaW5saW5lIGRpcmVjdG9yeSBpbm9kZSBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0ICovCisJeyBQUl8yX0JBRF9JTkxJTkVfRElSX1NJWkUsCisJICBOXygiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgMCB9LAorCisJLyogZml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSBmYWlsZWQgKi8KKwl7IFBSXzJfRklYX0lOTElORV9ESVJfRkFJTEVELAorCSAgTl8oIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iKSwKKwkgIFBST01QVF9UUlVOQ0FURSwgMCB9LAorCisJLyogRW5jcnlwdGVkIGRpcmVjdG9yeSBlbnRyeSBpcyB0b28gc2hvcnQgKi8KKwl7IFBSXzJfQkFEX0VOQ1JZUFRFRF9OQU1FLAorCSAgTl8oIkVuY3J5cHRlZCBARSBpcyB0b28gc2hvcnQuXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogUGFzcyAzIGVycm9ycyAqLworCisJLyogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5ICovCisJeyBQUl8zX1BBU1NfSEVBREVSLAorCSAgTl8oIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBSb290IGlub2RlIG5vdCBhbGxvY2F0ZWQgKi8KKwl7IFBSXzNfTk9fUk9PVF9JTk9ERSwKKwkgIE5fKCJAciBub3QgYWxsb2NhdGVkLiAgIiksCisJICBQUk9NUFRfQUxMT0NBVEUsIDAgfSwKKworCS8qIE5vIHJvb20gaW4gbG9zdCtmb3VuZCAqLworCXsgUFJfM19FWFBBTkRfTEZfRElSLAorCSAgTl8oIk5vIHJvb20gaW4gQGwgQGQuICAiKSwKKwkgIFBST01QVF9FWFBBTkQsIDAgfSwKKworCS8qIFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAqLworCXsgUFJfM19VTkNPTk5FQ1RFRF9ESVIsCisJICBOXygiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIiksCisJICBQUk9NUFRfQ09OTkVDVCwgMCB9LAorCisJLyogL2xvc3QrZm91bmQgbm90IGZvdW5kICovCisJeyBQUl8zX05PX0xGX0RJUiwKKwkgIE5fKCIvQGwgbm90IGZvdW5kLiAgIiksCisJICBQUk9NUFRfQ1JFQVRFLCBQUl9QUkVFTl9PSyB9LAorCisJLyogLi4gZW50cnkgaXMgaW5jb3JyZWN0ICovCisJeyBQUl8zX0JBRF9ET1RfRE9ULAorCSAgTl8oIicuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIiksCisJICBQUk9NUFRfRklYLCAwIH0sCisKKwkvKiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdCAqLworCXsgUFJfM19OT19MUEYsCisJICBOXygiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZCAqLworCXsgUFJfM19DQU5UX0VYUEFORF9MUEYsCisJICBOXygiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBDb3VsZCBub3QgcmVjb25uZWN0IGlub2RlICovCisJeyBQUl8zX0NBTlRfUkVDT05ORUNULAorCSAgTl8oIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZCAqLworCXsgUFJfM19FUlJfRklORF9MUEYsCisJICBOXygiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRXJyb3IgaW4gZXh0MmZzX25ld19ibG9jayB3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCAqLworCXsgUFJfM19FUlJfTFBGX05FV19CTE9DSywKKwkgIE5fKCJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRXJyb3IgaW4gZXh0MmZzX25ld19pbm9kZSB3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCAqLworCXsgUFJfM19FUlJfTFBGX05FV19JTk9ERSwKKwkgIE5fKCJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRXJyb3IgaW4gZXh0MmZzX25ld19kaXJfYmxvY2sgd2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQgKi8KKwl7IFBSXzNfRVJSX0xQRl9ORVdfRElSX0JMT0NLLAorCSAgTl8oImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEVycm9yIHdoaWxlIHdyaXRpbmcgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZCAqLworCXsgUFJfM19FUlJfTFBGX1dSSVRFX0JMT0NLLAorCSAgTl8oImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCAqLworCXsgUFJfM19BREpVU1RfSU5PREUsCisJICBOXygiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBDb3VsZG4ndCBmaXggcGFyZW50IGRpcmVjdG9yeSAtLSBlcnJvciAqLworCXsgUFJfM19GSVhfUEFSRU5UX0VSUiwKKwkgIE5fKCJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBDb3VsZG4ndCBmaXggcGFyZW50IGRpcmVjdG9yeSAtLSBjb3VsZG4ndCBmaW5kIGl0ICovCisJeyBQUl8zX0ZJWF9QQVJFTlRfTk9GSU5ELAorCSAgTl8oIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIEVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICovCisJeyBQUl8zX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IsCisJICBOXygiQEEgQGkgQEIgKCVOKTogJW1cbiIpLAorCSAgUFJPTVBUX05PTkUsIFBSX0ZBVEFMIH0sCisKKwkvKiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAqLworCXsgUFJfM19DUkVBVEVfUk9PVF9FUlJPUiwKKwkgIE5fKCJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgY3JlYXRpbmcgbG9zdCBhbmQgZm91bmQgZGlyZWN0b3J5ICovCisJeyBQUl8zX0NSRUFURV9MUEZfRVJST1IsCisJICBOXygiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBSb290IGlub2RlIGlzIG5vdCBkaXJlY3Rvcnk7IGFib3J0aW5nICovCisJeyBQUl8zX1JPT1RfTk9UX0RJUl9BQk9SVCwKKwkgIE5fKCJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIHJvb3QgaW5vZGUuICovCisJeyBQUl8zX05PX1JPT1RfSU5PREVfQUJPUlQsCisJICBOXygiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIEludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvICovCisJeyBQUl8zX05PX0RJUklORk8sCisJICBOXygiSW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGZpbmQgZGlyX2luZm8gZm9yICVpLlxuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfRkFUQUwgfSwKKworCS8qIExvc3QrZm91bmQgbm90IGEgZGlyZWN0b3J5ICovCisJeyBQUl8zX0xQRl9OT1RESVIsCisJICBOXygiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iKSwKKwkgIFBST01QVF9VTkxJTkssIDAgfSwKKworCS8qIExvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhICovCisJeyBQUl8zX0xQRl9JTkxJTkVfREFUQSwKKwkgIE5fKCIvQGwgaGFzIGlubGluZSBkYXRhXG4iKSwKKwkgIFBST01QVF9DTEVBUiwgMCB9LAorCisJLyogQ2Fubm90IGFsbG9jYXRlIC9sb3N0K2ZvdW5kLiAqLworCXsgUFJfM19MUEZfTk9fU1BBQ0UsCisJICBOXygiQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvQGwuXG5QbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiKSwKKwkgIFBST01QVF9OVUxMLCAwIH0sCisKKwkvKiBEZWxldGUgc29tZSBmaWxlcyBhbmQgcmUtcnVuIGUyZnNjay4gKi8KKwl7IFBSXzNfTk9fU1BBQ0VfVE9fUkVDT1ZFUiwKKwkgIE5fKCJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG5cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIExvc3QrZm91bmQgaXMgZW5jcnlwdGVkICovCisJeyBQUl8zX0xQRl9FTkNSWVBURUQsCisJICBOXygiL0BsIGlzIGVuY3J5cHRlZFxuIiksCisJICBQUk9NUFRfQ0xFQVIsIDAgfSwKKworCS8qIFBhc3MgM0EgRGlyZWN0b3J5IE9wdGltaXphdGlvbgkqLworCisJLyogUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcyAqLworCXsgUFJfM0FfUEFTU19IRUFERVIsCisJICBOXygiUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3Rvcmllc1xuIiksCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIEVycm9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yaWVzICovCisJeyBQUl8zQV9PUFRJTUlaRV9JVEVSLAorCSAgTl8oIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIiksCisJICBQUk9NUFRfTk9ORSwgMCB9LAorCisJLyogRXJyb3IgcmVoYXNoIGRpcmVjdG9yeSAqLworCXsgUFJfM0FfT1BUSU1JWkVfRElSX0VSUiwKKwkgIE5fKCJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBSZWhhc2hpbmcgZGlyIGhlYWRlciAqLworCXsgUFJfM0FfT1BUSU1JWkVfRElSX0hFQURFUiwKKwkgIE5fKCJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiKSwKKwkgIFBST01QVF9OT05FLCBQUl9NU0dfT05MWSB9LAorCisJLyogUmVoYXNoaW5nIGRpcmVjdG9yeSAlZCAqLworCXsgUFJfM0FfT1BUSU1JWkVfRElSLAorCSAgIiAlZCIsCisJICBQUk9NUFRfTk9ORSwgUFJfTEFUQ0hfT1BUSU1JWkVfRElSIHwgUFJfUFJFRU5fTk9IRFJ9LAorCisJLyogUmVoYXNoaW5nIGRpciBlbmQgKi8KKwl7IFBSXzNBX09QVElNSVpFX0RJUl9FTkQsCisJICAiXG4iLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX05PSERSIH0sCisKKwkvKiBQYXNzIDQgZXJyb3JzICovCisKKwkvKiBQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMgKi8KKwl7IFBSXzRfUEFTU19IRUFERVIsCisJICBOXygiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iKSwKKwkgIFBST01QVF9OT05FLCAwIH0sCisKKwkvKiBVbmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICovCisJeyBQUl80X1pFUk9fTEVOX0lOT0RFLAorCSAgTl8oIkB1IEB6IEBpICVpLiAgIiksCisJICBQUk9NUFRfQ0xFQVIsIFBSX1BSRUVOX09LfFBSX05PX09LIH0sCisKKwkvKiBVbmF0dGFjaGVkIGlub2RlICovCisJeyBQUl80X1VOQVRUQUNIRURfSU5PREUsCisJICBOXygiQHUgQGkgJWlcbiIpLAorCSAgUFJPTVBUX0NPTk5FQ1QsIDAgfSwKKworCS8qIElub2RlIHJlZiBjb3VudCB3cm9uZyAqLworCXsgUFJfNF9CQURfUkVGX0NPVU5ULAorCSAgTl8oIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJeyBQUl80X0lOQ09OU0lTVEVOVF9DT1VOVCwKKwkgIE5fKCJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorCSAgIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisJICAiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICAiCisJICAiVGhleSBAcyB0aGUgc2FtZSFcbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIFBhc3MgNSBlcnJvcnMgKi8KKworCS8qIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbiAqLworCXsgUFJfNV9QQVNTX0hFQURFUiwKKwkgIE5fKCJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIpLAorCSAgUFJPTVBUX05PTkUsIDAgfSwKKworCS8qIFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAqLworCXsgUFJfNV9JTk9ERV9CTUFQX1BBRERJTkcsCisJICBOXygiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuICovCisJeyBQUl81X0JMT0NLX0JNQVBfUEFERElORywKKwkgIE5fKCJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiKSwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIH0sCisKKwkvKiBCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXMgaGVhZGVyICovCisJeyBQUl81X0JMT0NLX0JJVE1BUF9IRUFERVIsCisJICBOXygiQGIgQEIgZGlmZmVyZW5jZXM6ICIpLAorCSAgUFJPTVBUX05PTkUsIFBSX1BSRUVOX09LIHwgUFJfUFJFRU5fTk9NU0d9LAorCisJLyogQmxvY2sgbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gYml0bWFwICovCisJeyBQUl81X0JMT0NLX1VOVVNFRCwKKwkgICIgLSViIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9CQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogQmxvY2sgdXNlZCwgYnV0IG5vdCBtYXJrZWQgdXNlZCBpbiBiaXRtYXAgKi8KKwl7IFBSXzVfQkxPQ0tfVVNFRCwKKwkgICIgKyViIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9CQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzIGVuZCAqLworCXsgUFJfNV9CTE9DS19CSVRNQVBfRU5ELAorCSAgIlxuIiwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIElub2RlIGJpdG1hcCBkaWZmZXJlbmNlcyBoZWFkZXIgKi8KKwl7IFBSXzVfSU5PREVfQklUTUFQX0hFQURFUiwKKwkgIE5fKCJAaSBAQiBkaWZmZXJlbmNlczogIiksCisJICBQUk9NUFRfTk9ORSwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogSW5vZGUgbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gYml0bWFwICovCisJeyBQUl81X0lOT0RFX1VOVVNFRCwKKwkgICIgLSVpIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9JQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogSW5vZGUgdXNlZCwgYnV0IG5vdCBtYXJrZWQgdXNlZCBpbiBiaXRtYXAgKi8KKwl7IFBSXzVfSU5PREVfVVNFRCwKKwkgICIgKyVpIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9JQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzIGVuZCAqLworCXsgUFJfNV9JTk9ERV9CSVRNQVBfRU5ELAorCSAgIlxuIiwKKwkgIFBST01QVF9GSVgsIFBSX1BSRUVOX09LIHwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIEZyZWUgaW5vZGVzIGNvdW50IGZvciBncm91cCB3cm9uZyAqLworCXsgUFJfNV9GUkVFX0lOT0RFX0NPVU5UX0dST1VQLAorCSAgTl8oIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogRGlyZWN0b3JpZXMgY291bnQgZm9yIGdyb3VwIHdyb25nICovCisJeyBQUl81X0ZSRUVfRElSX0NPVU5UX0dST1VQLAorCSAgTl8oIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKi8KKwl7IFBSXzVfRlJFRV9JTk9ERV9DT1VOVCwKKwkgIE5fKCJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIHwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIEZyZWUgYmxvY2tzIGNvdW50IGZvciBncm91cCB3cm9uZyAqLworCXsgUFJfNV9GUkVFX0JMT0NLX0NPVU5UX0dST1VQLAorCSAgTl8oIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKi8KKwl7IFBSXzVfRlJFRV9CTE9DS19DT1VOVCwKKwkgIE5fKCJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIHwgUFJfUFJFRU5fTk9NU0cgfSwKKworCS8qIFByb2dyYW1taW5nIGVycm9yOiBiaXRtYXAgZW5kcG9pbnRzIGRvbid0IG1hdGNoICovCisJeyBQUl81X0JNQVBfRU5EUE9JTlRTLAorCSAgTl8oIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgIgorCSAgIm1hdGNoIGNhbGN1bGF0ZWQgQEIgZW5kcG9pbnRzICglaSwgJWopXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAqLworCXsgUFJfNV9GVURHRV9CSVRNQVBfRVJST1IsCisJICBOXygiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXAgKi8KKwl7IFBSXzVfQ09QWV9JQklUTUFQX0VSUk9SLAorCSAgTl8oIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGkgQEI6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXAgKi8KKwl7IFBSXzVfQ09QWV9CQklUTUFQX0VSUk9SLAorCSAgTl8oIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iKSwKKwkgIFBST01QVF9OT05FLCBQUl9GQVRBTCB9LAorCisJLyogQmxvY2sgcmFuZ2Ugbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gYml0bWFwICovCisJeyBQUl81X0JMT0NLX1JBTkdFX1VOVVNFRCwKKwkgICIgLSglYi0tJWMpIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9CQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogQmxvY2sgcmFuZ2UgdXNlZCwgYnV0IG5vdCBtYXJrZWQgdXNlZCBpbiBiaXRtYXAgKi8KKwl7IFBSXzVfQkxPQ0tfUkFOR0VfVVNFRCwKKwkgICIgKyglYi0tJWMpIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9CQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogSW5vZGUgcmFuZ2Ugbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gYml0bWFwICovCisJeyBQUl81X0lOT0RFX1JBTkdFX1VOVVNFRCwKKwkgICIgLSglaS0tJWopIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9JQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogSW5vZGUgcmFuZ2UgdXNlZCwgYnV0IG5vdCBtYXJrZWQgdXNlZCBpbiBiaXRtYXAgKi8KKwl7IFBSXzVfSU5PREVfUkFOR0VfVVNFRCwKKwkgICIgKyglaS0tJWopIiwKKwkgIFBST01QVF9OT05FLCBQUl9MQVRDSF9JQklUTUFQIHwgUFJfUFJFRU5fT0sgfCBQUl9QUkVFTl9OT01TRyB9LAorCisJLyogR3JvdXAgTiBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVQgKi8KKwl7IFBSXzVfQkxPQ0tfVU5JTklULAorCSAgTl8oIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogR3JvdXAgTiBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVQgKi8KKwl7IFBSXzVfSU5PREVfVU5JTklULAorCSAgTl8oIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIiksCisJICBQUk9NUFRfRklYLCBQUl9QUkVFTl9PSyB9LAorCisJLyogR3JvdXAgTiBpbm9kZSBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0gKi8KKwl7IFBSXzVfSU5PREVfQklUTUFQX0NTVU1fSU5WQUxJRCwKKwkgIE5fKCJAZyAlZyBAaSBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIpLAorCSAgUFJPTVBUX0ZJWCwgUFJfTEFUQ0hfSUJJVE1BUCB8IFBSX1BSRUVOX09LIH0sCisKKwkvKiBHcm91cCBOIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bSAqLworCXsgUFJfNV9CTE9DS19CSVRNQVBfQ1NVTV9JTlZBTElELAorCSAgTl8oIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIiksCisJICBQUk9NUFRfRklYLCBQUl9MQVRDSF9CQklUTUFQIHwgUFJfUFJFRU5fT0sgfSwKKworCS8qIFBvc3QtUGFzcyA1IGVycm9ycyAqLworCisJLyogUmVjcmVhdGUgam91cm5hbCBpZiBFMkZfRkxBR19KT1VSTkFMX0lOT0RFIGZsYWcgaXMgc2V0ICovCisJeyBQUl82X1JFQ1JFQVRFX0pPVVJOQUwsCisJICBOXygiUmVjcmVhdGUgQGoiKSwKKwkgIFBST01QVF9OVUxMLCBQUl9QUkVFTl9PSyB8IFBSX05PX09LIH0sCisKKwkvKiBVcGRhdGUgcXVvdGEgaW5mb3JtYXRpb24gaWYgaXQgaXMgaW5jb25zaXN0ZW50ICovCisJeyBQUl82X1VQREFURV9RVU9UQVMsCisJICBOXygiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iKSwKKwkgIFBST01QVF9OVUxMLCBQUl9QUkVFTl9PSyB9LAorCisJLyogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvICovCisJeyBQUl82X1NFVF9CR19DSEVDS1NVTSwKKwkgIE5fKCJFcnJvciBzZXR0aW5nIEBiIEBnIGNoZWNrc3VtIGluZm86ICVtXG4iKSwKKwkgIFBST01QVF9OVUxMLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvICovCisJeyBQUl82X0ZMVVNIX0ZJTEVTWVNURU0sCisJICBOXygiRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvOiAlbVxuIiksCisJICBQUk9NUFRfTlVMTCwgUFJfRkFUQUwgfSwKKworCS8qIEVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZSAqLworCXsgUFJfNl9JT19GTFVTSCwKKwkgIE5fKCJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iKSwKKwkgIFBST01QVF9OVUxMLCBQUl9GQVRBTCB9LAorCisJLyogRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvcm1hdGlvbiAqLworCXsgUFJfNl9XUklURV9RVU9UQVMsCisJICBOXygiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIiksCisJICBQUk9NUFRfTlVMTCwgMCB9LAorCisJeyAwIH0KK307CisKKy8qCisgKiBUaGlzIGlzIHRoZSBsYXRjaCBmbGFncyByZWdpc3Rlci4gIEl0IGFsbG93cyBzZXZlcmFsIHByb2JsZW1zIHRvIGJlCisgKiAibGF0Y2hlZCIgdG9nZXRoZXIuICBUaGlzIG1lYW5zIHRoYXQgdGhlIHVzZXIgaGFzIHRvIGFuc3dlciBidXQgb25lCisgKiBxdWVzdGlvbiBmb3IgdGhlIHNldCBvZiBwcm9ibGVtcywgYW5kIGFsbCBvZiB0aGUgYXNzb2NpYXRlZAorICogcHJvYmxlbXMgd2lsbCBiZSBlaXRoZXIgZml4ZWQgb3Igbm90IGZpeGVkLgorICovCitzdGF0aWMgc3RydWN0IGxhdGNoX2Rlc2NyIHByX2xhdGNoX2luZm9bXSA9IHsKKwl7IFBSX0xBVENIX0JMT0NLLCBQUl8xX0lOT0RFX0JMT0NLX0xBVENILCAwIH0sCisJeyBQUl9MQVRDSF9CQkxPQ0ssIFBSXzFfSU5PREVfQkJMT0NLX0xBVENILCAwIH0sCisJeyBQUl9MQVRDSF9JQklUTUFQLCBQUl81X0lOT0RFX0JJVE1BUF9IRUFERVIsIFBSXzVfSU5PREVfQklUTUFQX0VORCB9LAorCXsgUFJfTEFUQ0hfQkJJVE1BUCwgUFJfNV9CTE9DS19CSVRNQVBfSEVBREVSLCBQUl81X0JMT0NLX0JJVE1BUF9FTkQgfSwKKwl7IFBSX0xBVENIX1JFTE9DLCBQUl8wX1JFTE9DQVRFX0hJTlQsIDAgfSwKKwl7IFBSX0xBVENIX0RCTE9DSywgUFJfMUJfRFVQX0JMT0NLX0hFQURFUiwgUFJfMUJfRFVQX0JMT0NLX0VORCB9LAorCXsgUFJfTEFUQ0hfTE9XX0RUSU1FLCBQUl8xX09SUEhBTl9MSVNUX1JFRlVHRUVTLCAwIH0sCisJeyBQUl9MQVRDSF9UT09CSUcsIFBSXzFfSU5PREVfVE9PQklHLCAwIH0sCisJeyBQUl9MQVRDSF9PUFRJTUlaRV9ESVIsIFBSXzNBX09QVElNSVpFX0RJUl9IRUFERVIsIFBSXzNBX09QVElNSVpFX0RJUl9FTkQgfSwKKwl7IFBSX0xBVENIX0JHX0NIRUNLU1VNLCBQUl8wX0dEVF9DU1VNX0xBVENILCAwIH0sCisJeyBQUl9MQVRDSF9PUFRJTUlaRV9FWFQsIFBSXzFFX09QVElNSVpFX0VYVF9IRUFERVIsIFBSXzFFX09QVElNSVpFX0VYVF9FTkQgfSwKKwl7IC0xLCAwLCAwIH0sCit9OworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKworc3RhdGljIHN0cnVjdCBlMmZzY2tfcHJvYmxlbSAqZmluZF9wcm9ibGVtKHByb2JsZW1fdCBjb2RlKQoreworCWludAlpOworCisJZm9yIChpPTA7IHByb2JsZW1fdGFibGVbaV0uZTJwX2NvZGU7IGkrKykgeworCQlpZiAocHJvYmxlbV90YWJsZVtpXS5lMnBfY29kZSA9PSBjb2RlKQorCQkJcmV0dXJuICZwcm9ibGVtX3RhYmxlW2ldOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0cnVjdCBsYXRjaF9kZXNjciAqZmluZF9sYXRjaChpbnQgY29kZSkKK3sKKwlpbnQJaTsKKworCWZvciAoaT0wOyBwcl9sYXRjaF9pbmZvW2ldLmxhdGNoX2NvZGUgPj0gMDsgaSsrKSB7CisJCWlmIChwcl9sYXRjaF9pbmZvW2ldLmxhdGNoX2NvZGUgPT0gY29kZSkKKwkJCXJldHVybiAmcHJfbGF0Y2hfaW5mb1tpXTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBlbmRfcHJvYmxlbV9sYXRjaChlMmZzY2tfdCBjdHgsIGludCBtYXNrKQoreworCXN0cnVjdCBsYXRjaF9kZXNjciAqbGRlc2M7CisJc3RydWN0IHByb2JsZW1fY29udGV4dCBwY3R4OworCWludCBhbnN3ZXIgPSAtMTsKKworCWxkZXNjID0gZmluZF9sYXRjaChtYXNrKTsKKwlpZiAobGRlc2MtPmVuZF9tZXNzYWdlICYmIChsZGVzYy0+ZmxhZ3MgJiBQUkxfTEFUQ0hFRCkpIHsKKwkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJYW5zd2VyID0gZml4X3Byb2JsZW0oY3R4LCBsZGVzYy0+ZW5kX21lc3NhZ2UsICZwY3R4KTsKKwl9CisJbGRlc2MtPmZsYWdzICY9IH4oUFJMX1ZBUklBQkxFKTsKKwlyZXR1cm4gYW5zd2VyOworfQorCitpbnQgc2V0X2xhdGNoX2ZsYWdzKGludCBtYXNrLCBpbnQgc2V0ZmxhZ3MsIGludCBjbGVhcmZsYWdzKQoreworCXN0cnVjdCBsYXRjaF9kZXNjciAqbGRlc2M7CisKKwlsZGVzYyA9IGZpbmRfbGF0Y2gobWFzayk7CisJaWYgKCFsZGVzYykKKwkJcmV0dXJuIC0xOworCWxkZXNjLT5mbGFncyB8PSBzZXRmbGFnczsKKwlsZGVzYy0+ZmxhZ3MgJj0gfmNsZWFyZmxhZ3M7CisJcmV0dXJuIDA7Cit9CisKK2ludCBnZXRfbGF0Y2hfZmxhZ3MoaW50IG1hc2ssIGludCAqdmFsdWUpCit7CisJc3RydWN0IGxhdGNoX2Rlc2NyICpsZGVzYzsKKworCWxkZXNjID0gZmluZF9sYXRjaChtYXNrKTsKKwlpZiAoIWxkZXNjKQorCQlyZXR1cm4gLTE7CisJKnZhbHVlID0gbGRlc2MtPmZsYWdzOworCXJldHVybiAwOworfQorCit2b2lkIGNsZWFyX3Byb2JsZW1fY29udGV4dChzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpjdHgpCit7CisJbWVtc2V0KGN0eCwgMCwgc2l6ZW9mKHN0cnVjdCBwcm9ibGVtX2NvbnRleHQpKTsKKwljdHgtPmJsa2NvdW50ID0gLTE7CisJY3R4LT5ncm91cCA9IC0xOworfQorCitzdGF0aWMgdm9pZCByZWNvbmZpZ3VyZV9ib29sKGUyZnNja190IGN0eCwgc3RydWN0IGUyZnNja19wcm9ibGVtICpwdHIsCisJCQkgICAgIGNvbnN0IGNoYXIgKmtleSwgaW50IG1hc2ssIGNvbnN0IGNoYXIgKm5hbWUpCit7CisJaW50CXZhbDsKKworCXZhbCA9IChwdHItPmZsYWdzICYgbWFzayk7CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJwcm9ibGVtcyIsIGtleSwgbmFtZSwgdmFsLCAmdmFsKTsKKwlpZiAodmFsKQorCQlwdHItPmZsYWdzIHw9IG1hc2s7CisJZWxzZQorCQlwdHItPmZsYWdzICY9IH5tYXNrOworfQorCisKK2ludCBmaXhfcHJvYmxlbShlMmZzY2tfdCBjdHgsIHByb2JsZW1fdCBjb2RlLCBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlzdHJ1Y3QgZTJmc2NrX3Byb2JsZW0gKnB0cjsKKwlzdHJ1Y3QgbGF0Y2hfZGVzY3IgKmxkZXNjID0gMDsKKwljb25zdCBjaGFyICptZXNzYWdlOworCWludAkJZGVmX3luLCBhbnN3ZXIsIGFuczsKKwlpbnQJCXByaW50X2Fuc3dlciA9IDA7CisJaW50CQlzdXBwcmVzcyA9IDA7CisKKwlwdHIgPSBmaW5kX3Byb2JsZW0oY29kZSk7CisJaWYgKCFwdHIpIHsKKwkJcHJpbnRmKF8oIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIpLCBjb2RlKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghKHB0ci0+ZmxhZ3MgJiBQUl9DT05GSUcpKSB7CisJCWNoYXIJa2V5WzldLCAqbmV3X2Rlc2MgPSBOVUxMOworCisJCXNwcmludGYoa2V5LCAiMHglMDZ4IiwgY29kZSk7CisKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKGN0eC0+cHJvZmlsZSwgInByb2JsZW1zIiwga2V5LAorCQkJCSAgICJkZXNjcmlwdGlvbiIsIDAsICZuZXdfZGVzYyk7CisJCWlmIChuZXdfZGVzYykKKwkJCXB0ci0+ZTJwX2Rlc2NyaXB0aW9uID0gbmV3X2Rlc2M7CisKKwkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9QUkVFTl9PSywgInByZWVuX29rIik7CisJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfTk9fT0ssICJub19vayIpOworCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PX0RFRkFVTFQsICJub19kZWZhdWx0Iik7CisJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfTVNHX09OTFksICJwcmludF9tZXNzYWdlX29ubHkiKTsKKwkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9QUkVFTl9OT01TRywgInByZWVuX25vbWVzc2FnZSIpOworCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PQ09MTEFURSwgIm5vX2NvbGxhdGUiKTsKKwkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9OT19OT01TRywgIm5vX25vbXNnIik7CisJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfUFJFRU5fTk9IRFIsICJwcmVlbl9ub2hlYWRlciIpOworCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX0ZPUkNFX05PLCAiZm9yY2Vfbm8iKTsKKwkJcHJvZmlsZV9nZXRfaW50ZWdlcihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKKwkJCQkgICAgIm1heF9jb3VudF9wcm9ibGVtcyIsIDAsIDAsCisJCQkJICAgICZwdHItPm1heF9jb3VudCk7CisJCXByb2ZpbGVfZ2V0X2ludGVnZXIoY3R4LT5wcm9maWxlLCAicHJvYmxlbXMiLCBrZXksICJtYXhfY291bnQiLAorCQkJCSAgICBwdHItPm1heF9jb3VudCwgJnB0ci0+bWF4X2NvdW50KTsKKworCQlwdHItPmZsYWdzIHw9IFBSX0NPTkZJRzsKKwl9CisJZGVmX3luID0gMTsKKwlwdHItPmNvdW50Kys7CisJaWYgKChwdHItPmZsYWdzICYgUFJfTk9fREVGQVVMVCkgfHwKKwkgICAgKChwdHItPmZsYWdzICYgUFJfUFJFRU5fTk8pICYmIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSkgfHwKKwkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfTk8pKQorCQlkZWZfeW49IDA7CisKKwkvKgorCSAqIERvIHNwZWNpYWwgbGF0Y2ggcHJvY2Vzc2luZy4gIFRoaXMgaXMgd2hlcmUgd2UgYXNrIHRoZQorCSAqIGxhdGNoIHF1ZXN0aW9uLCBpZiBpdCBleGlzdHMKKwkgKi8KKwlpZiAocHRyLT5mbGFncyAmIFBSX0xBVENIX01BU0spIHsKKwkJbGRlc2MgPSBmaW5kX2xhdGNoKHB0ci0+ZmxhZ3MgJiBQUl9MQVRDSF9NQVNLKTsKKwkJaWYgKGxkZXNjLT5xdWVzdGlvbiAmJiAhKGxkZXNjLT5mbGFncyAmIFBSTF9MQVRDSEVEKSkgeworCQkJYW5zID0gZml4X3Byb2JsZW0oY3R4LCBsZGVzYy0+cXVlc3Rpb24sIHBjdHgpOworCQkJaWYgKGFucyA9PSAxKQorCQkJCWxkZXNjLT5mbGFncyB8PSBQUkxfWUVTOworCQkJaWYgKGFucyA9PSAwKQorCQkJCWxkZXNjLT5mbGFncyB8PSBQUkxfTk87CisJCQlsZGVzYy0+ZmxhZ3MgfD0gUFJMX0xBVENIRUQ7CisJCX0KKwkJaWYgKGxkZXNjLT5mbGFncyAmIFBSTF9TVVBQUkVTUykKKwkJCXN1cHByZXNzKys7CisJfQorCWlmICgocHRyLT5mbGFncyAmIFBSX1BSRUVOX05PTVNHKSAmJgorCSAgICAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpCisJCXN1cHByZXNzKys7CisJaWYgKChwdHItPmZsYWdzICYgUFJfTk9fTk9NU0cpICYmCisJICAgICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgfHwgKHB0ci0+ZmxhZ3MgJiBQUl9GT1JDRV9OTykpKQorCQlzdXBwcmVzcysrOworCWlmIChwdHItPm1heF9jb3VudCAmJiAocHRyLT5jb3VudCA+IHB0ci0+bWF4X2NvdW50KSkgeworCQlpZiAoY3R4LT5vcHRpb25zICYgKEUyRl9PUFRfTk8gfCBFMkZfT1BUX1lFUykpCisJCQlzdXBwcmVzcysrOworCQlpZiAoKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pICYmCisJCSAgICAocHRyLT5mbGFncyAmIFBSX1BSRUVOX09LKSkKKwkJCXN1cHByZXNzKys7CisJCWlmICgocHRyLT5mbGFncyAmIFBSX0xBVENIX01BU0spICYmCisJCSAgICAobGRlc2MtPmZsYWdzICYgKFBSTF9ZRVMgfCBQUkxfTk8pKSkKKwkJCXN1cHByZXNzKys7CisJCWlmIChwdHItPmNvdW50ID09IHB0ci0+bWF4X2NvdW50ICsgMSkgeworCQkJcHJpbnRmKCIuLi5wcm9ibGVtIDB4JTA2eCBzdXBwcmVzc2VkXG4iLAorCQkJICAgICAgIHB0ci0+ZTJwX2NvZGUpOworCQkJZmZsdXNoKHN0ZG91dCk7CisJCX0KKwl9CisJbWVzc2FnZSA9IHB0ci0+ZTJwX2Rlc2NyaXB0aW9uOworCWlmICgqbWVzc2FnZSkKKwkJbWVzc2FnZSA9IF8obWVzc2FnZSk7CisJaWYgKCFzdXBwcmVzcykgeworCQlpZiAoKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pICYmCisJCSAgICAhKHB0ci0+ZmxhZ3MgJiBQUl9QUkVFTl9OT0hEUikpIHsKKwkJCXByaW50ZigiJXM6ICIsIGN0eC0+ZGV2aWNlX25hbWUgPworCQkJICAgICAgIGN0eC0+ZGV2aWNlX25hbWUgOiBjdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJCX0KKwkJaWYgKCptZXNzYWdlKQorCQkJcHJpbnRfZTJmc2NrX21lc3NhZ2Uoc3Rkb3V0LCBjdHgsIG1lc3NhZ2UsIHBjdHgsIDEsIDApOworCX0KKwlpZiAoY3R4LT5sb2dmICYmIG1lc3NhZ2UpCisJCXByaW50X2UyZnNja19tZXNzYWdlKGN0eC0+bG9nZiwgY3R4LCBtZXNzYWdlLCBwY3R4LCAxLCAwKTsKKwlpZiAoIShwdHItPmZsYWdzICYgUFJfUFJFRU5fT0spICYmIChwdHItPnByb21wdCAhPSBQUk9NUFRfTk9ORSkpCisJCXByZWVuaGFsdChjdHgpOworCisJaWYgKHB0ci0+ZmxhZ3MgJiBQUl9GQVRBTCkKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKworCWlmIChwdHItPnByb21wdCA9PSBQUk9NUFRfTk9ORSkgeworCQlpZiAocHRyLT5mbGFncyAmIFBSX05PQ09MTEFURSkKKwkJCWFuc3dlciA9IC0xOworCQllbHNlCisJCQlhbnN3ZXIgPSBkZWZfeW47CisJfSBlbHNlIHsKKwkJaWYgKHB0ci0+ZmxhZ3MgJiBQUl9GT1JDRV9OTykgeworCQkJYW5zd2VyID0gMDsKKwkJCXByaW50X2Fuc3dlciA9IDE7CisJCX0gZWxzZSBpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikgeworCQkJYW5zd2VyID0gZGVmX3luOworCQkJaWYgKCEocHRyLT5mbGFncyAmIFBSX1BSRUVOX05PTVNHKSkKKwkJCQlwcmludF9hbnN3ZXIgPSAxOworCQl9IGVsc2UgaWYgKChwdHItPmZsYWdzICYgUFJfTEFUQ0hfTUFTSykgJiYKKwkJCSAgIChsZGVzYy0+ZmxhZ3MgJiAoUFJMX1lFUyB8IFBSTF9OTykpKSB7CisJCQlwcmludF9hbnN3ZXIgPSAxOworCQkJaWYgKGxkZXNjLT5mbGFncyAmIFBSTF9ZRVMpCisJCQkJYW5zd2VyID0gMTsKKwkJCWVsc2UKKwkJCQlhbnN3ZXIgPSAwOworCQl9IGVsc2UKKwkJCWFuc3dlciA9IGFzayhjdHgsIChwdHItPnByb21wdCA9PSBQUk9NUFRfTlVMTCkgPyAiIiA6CisJCQkJICAgICBfKHByb21wdFsoaW50KSBwdHItPnByb21wdF0pLCBkZWZfeW4pOworCQlpZiAoIWFuc3dlciAmJiAhKHB0ci0+ZmxhZ3MgJiBQUl9OT19PSykpCisJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKworCQlpZiAocHJpbnRfYW5zd2VyKSB7CisJCQlpZiAoIXN1cHByZXNzKQorCQkJCXByaW50ZigiJXMuXG4iLCBhbnN3ZXIgPworCQkJCSAgICAgICBfKHByZWVuX21zZ1soaW50KSBwdHItPnByb21wdF0pIDoKKwkJCQkgICAgICAgXygiSUdOT1JFRCIpKTsKKwkJCWlmIChjdHgtPmxvZ2YpCisJCQkJZnByaW50ZihjdHgtPmxvZ2YsICIlcy5cbiIsIGFuc3dlciA/CisJCQkJCV8ocHJlZW5fbXNnWyhpbnQpIHB0ci0+cHJvbXB0XSkgOgorCQkJCQlfKCJJR05PUkVEIikpOworCQl9CisJfQorCisJaWYgKChwdHItPnByb21wdCA9PSBQUk9NUFRfQUJPUlQpICYmIGFuc3dlcikKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKworCWlmIChwdHItPmZsYWdzICYgUFJfQUZURVJfQ09ERSkKKwkJYW5zd2VyID0gZml4X3Byb2JsZW0oY3R4LCBwdHItPnNlY29uZF9jb2RlLCBwY3R4KTsKKworCWlmIChhbnN3ZXIgJiYgKHB0ci0+cHJvbXB0ICE9IFBST01QVF9OT05FKSkKKwkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19QUk9CTEVNU19GSVhFRDsKKworCXJldHVybiBhbnN3ZXI7Cit9CisKKyNpZmRlZiBVTklUVEVTVAorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworZXJyY29kZV90Citwcm9maWxlX2dldF9ib29sZWFuKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkgICAgY29uc3QgY2hhciAqc3Vic3VibmFtZSwgaW50IGRlZl92YWwsIGludCAqcmV0X2Jvb2xlYW4pCit7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdAorcHJvZmlsZV9nZXRfaW50ZWdlcihwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJICAgIGNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIGludCBkZWZfdmFsLCBpbnQgKnJldF9pbnQpCit7CisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgcHJpbnRfZTJmc2NrX21lc3NhZ2UoRklMRSAqZiwgZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICptc2csCisJCQkgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsIGludCBmaXJzdCwKKwkJCSAgaW50IHJlY3Vyc2UpCit7CisJcmV0dXJuOworfQorCit2b2lkIGZhdGFsX2Vycm9yKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqbXNnKQoreworCXJldHVybjsKK30KKwordm9pZCBwcmVlbmhhbHQoZTJmc2NrX3QgY3R4KQoreworCXJldHVybjsKK30KKworZXJyY29kZV90Citwcm9maWxlX2dldF9zdHJpbmcocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCSAgIGNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIGNvbnN0IGNoYXIgKmRlZl92YWwsCisJCSAgIGNoYXIgKipyZXRfc3RyaW5nKQoreworCXJldHVybiAwOworfQorCitpbnQgYXNrIChlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKiBzdHJpbmcsIGludCBkZWYpCit7CisJcmV0dXJuIDA7Cit9CisKK2ludCB2ZXJpZnlfcHJvYmxlbV90YWJsZShlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IGUyZnNja19wcm9ibGVtICpjdXJyLCAqcHJldiA9IE5VTEw7CisJaW50IHJjID0gMDsKKworCWZvciAocHJldiA9IE5VTEwsIGN1cnIgPSBwcm9ibGVtX3RhYmxlOyBjdXJyLT5lMnBfY29kZTsgcHJldiA9IGN1cnIrKykgeworCQlpZiAocHJldiA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJaWYgKGN1cnItPmUycF9jb2RlID4gcHJldi0+ZTJwX2NvZGUpCisJCQljb250aW51ZTsKKworCQlpZiAoY3Vyci0+ZTJwX2NvZGUgPT0gcHJldi0+ZTJwX2NvZGUpCisJCQlmcHJpbnRmKHN0ZGVyciwgIioqKiBEdXBsaWNhdGUgaW4gcHJvYmxlbSB0YWJsZTpcbiIpOworCQllbHNlCisJCQlmcHJpbnRmKHN0ZGVyciwgIioqKiBVbm9yZGVyZWQgcHJvYmxlbSB0YWJsZTpcbiIpOworCisJCWZwcmludGYoc3RkZXJyLCAiY3VyciBjb2RlID0gMHglMDh4OiAlc1xuIiwKKwkJCWN1cnItPmUycF9jb2RlLCBjdXJyLT5lMnBfZGVzY3JpcHRpb24pOworCQlmcHJpbnRmKHN0ZGVyciwgIioqKiBwcmV2IGNvZGUgPSAweCUwOHg6ICVzXG4iLAorCQkJcHJldi0+ZTJwX2NvZGUsIHByZXYtPmUycF9kZXNjcmlwdGlvbik7CisKKwkJZnByaW50ZihzdGRlcnIsICIqKiogVGhpcyBpcyBhICVzcHJvZ3JhbW1pbmcgZXJyb3IgaW4gZTJmc2NrXG4iLAorCQkJKGN1cnItPmUycF9jb2RlID09IHByZXYtPmUycF9jb2RlKSA/ICJmYXRhbCAiIDogIiIpOworCisJCXJjID0gMTsKKwl9CisKKwlyZXR1cm4gcmM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZTJmc2NrX3QgY3R4OworCWludCByYzsKKworCW1lbXNldCgmY3R4LCAwLCBzaXplb2YoY3R4KSk7IC8qIGp1c3QgdG8gcXVpZXQgY29tcGlsZXIgKi8KKwlyYyA9IHZlcmlmeV9wcm9ibGVtX3RhYmxlKGN0eCk7CisJaWYgKHJjID09IDApCisJCXByaW50ZigiZTJmc2NrIHByb2JsZW0gdGFibGUgdmVyaWZpZWRcbiIpOworCisJcmV0dXJuIHJjOworfQorI2VuZGlmIC8qIFVOSVRURVNUICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL3Byb2JsZW0uaCBiL2UyZnNwcm9ncy9lMmZzY2svcHJvYmxlbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Y2I2MTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3Byb2JsZW0uaApAQCAtMCwwICsxLDEyNDIgQEAKKy8qCisgKiBwcm9ibGVtLmggLS0tIGUyZnNjayBwcm9ibGVtIGVycm9yIGNvZGVzCisgKgorICogQ29weXJpZ2h0IDE5OTYgYnkgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKwordHlwZWRlZiBfX3UzMiBwcm9ibGVtX3Q7CisKK3N0cnVjdCBwcm9ibGVtX2NvbnRleHQgeworCWVycmNvZGVfdAllcnJjb2RlOworCWV4dDJfaW5vX3QgaW5vLCBpbm8yLCBkaXI7CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50OworCWJsazY0X3QJYmxrLCBibGsyOworCWUyX2Jsa2NudF90CWJsa2NvdW50OworCWRncnBfdAkJZ3JvdXA7CisJX191MzIJCWNzdW0xLCBjc3VtMjsKKwlfX3U2NAludW07CisJY29uc3QgY2hhciAqc3RyOworfTsKKworLyoKKyAqIFdlIGRlZmluZSBhIHNldCBvZiAibGF0Y2ggZ3JvdXBzIjsgdGhlc2UgYXJlIHByb2JsZW1zIHdoaWNoIGFyZQorICogaGFuZGxlZCBhcyBhIHNldC4gIFRoZSB1c2VyIGFuc3dlcnMgb25jZSBmb3IgYSBwYXJ0aWN1bGFyIGxhdGNoCisgKiBncm91cC4KKyAqLworI2RlZmluZSBQUl9MQVRDSF9NQVNLCTB4MGZmMCAgLyogTGF0Y2ggbWFzayAqLworI2RlZmluZSBQUl9MQVRDSF9CTE9DSwkweDAwMTAJLyogTGF0Y2ggZm9yIGlsbGVnYWwgYmxvY2tzIChwYXNzIDEpICovCisjZGVmaW5lIFBSX0xBVENIX0JCTE9DSwkweDAwMjAJLyogTGF0Y2ggZm9yIGJhZCBibG9jayBpbm9kZSBibG9ja3MgKHBhc3MgMSkgKi8KKyNkZWZpbmUgUFJfTEFUQ0hfSUJJVE1BUCAweDAwMzAgLyogTGF0Y2ggZm9yIHBhc3MgNSBpbm9kZSBiaXRtYXAgcHJvYy4gKi8KKyNkZWZpbmUgUFJfTEFUQ0hfQkJJVE1BUCAweDAwNDAgLyogTGF0Y2ggZm9yIHBhc3MgNSBpbm9kZSBiaXRtYXAgcHJvYy4gKi8KKyNkZWZpbmUgUFJfTEFUQ0hfUkVMT0MJMHgwMDUwICAvKiBMYXRjaCBmb3Igc3VwZXJibG9jayByZWxvY2F0ZSBoaW50ICovCisjZGVmaW5lIFBSX0xBVENIX0RCTE9DSwkweDAwNjAJLyogTGF0Y2ggZm9yIHBhc3MgMWIgZHVwIGJsb2NrIGhlYWRlcnMgKi8KKyNkZWZpbmUgUFJfTEFUQ0hfTE9XX0RUSU1FIDB4MDA3MCAvKiBMYXRjaCBmb3IgcGFzczEgb3JwaGFuZWQgbGlzdCByZWZ1Z2VlcyAqLworI2RlZmluZSBQUl9MQVRDSF9UT09CSUcJMHgwMDgwCS8qIExhdGNoIGZvciBmaWxlIHRvIGJpZyBlcnJvcnMgKi8KKyNkZWZpbmUgUFJfTEFUQ0hfT1BUSU1JWkVfRElSIDB4MDA5MCAvKiBMYXRjaCBmb3Igb3B0aW1pemUgZGlyZWN0b3JpZXMgKi8KKyNkZWZpbmUgUFJfTEFUQ0hfQkdfQ0hFQ0tTVU0gMHgwMEEwICAvKiBMYXRjaCBmb3IgYmxvY2sgZ3JvdXAgY2hlY2tzdW1zICovCisjZGVmaW5lIFBSX0xBVENIX09QVElNSVpFX0VYVCAweDAwQjAgIC8qIExhdGNoIGZvciByZWJ1aWxkIGV4dGVudHMgKi8KKworI2RlZmluZSBQUl9MQVRDSCh4KQkoKCgoeCkgJiBQUl9MQVRDSF9NQVNLKSA+PiA0KSAtIDEpCisKKy8qCisgKiBMYXRjaCBncm91cCBkZXNjcmlwdG9yIGZsYWdzCisgKi8KKyNkZWZpbmUgUFJMX1lFUwkJMHgwMDAxCS8qIEFuc3dlciB5ZXMgKi8KKyNkZWZpbmUgUFJMX05PCQkweDAwMDIJLyogQW5zd2VyIG5vICovCisjZGVmaW5lIFBSTF9MQVRDSEVECTB4MDAwNAkvKiBUaGUgbGF0Y2ggZ3JvdXAgaXMgbGF0Y2hlZCAqLworI2RlZmluZSBQUkxfU1VQUFJFU1MJMHgwMDA4CS8qIFN1cHByZXNzIGFsbCBsYXRjaCBncm91cCBxdWVzdGlvbnMgKi8KKworI2RlZmluZSBQUkxfVkFSSUFCTEUJMHgwMDBmCS8qIEFsbCB0aGUgZmxhZ3MgdGhhdCBuZWVkIHRvIGJlIHJlc2V0ICovCisKKy8qCisgKiBQcmUtUGFzcyAxIGVycm9ycworICovCisKKy8qIEJsb2NrIGJpdG1hcCBub3QgaW4gZ3JvdXAgKi8KKyNkZWZpbmUgUFJfMF9CQl9OT1RfR1JPVVAJMHgwMDAwMDEKKworLyogSW5vZGUgYml0bWFwIG5vdCBpbiBncm91cCAqLworI2RlZmluZSBQUl8wX0lCX05PVF9HUk9VUAkweDAwMDAwMgorCisvKiBJbm9kZSB0YWJsZSBub3QgaW4gZ3JvdXAgKi8KKyNkZWZpbmUgUFJfMF9JVEFCTEVfTk9UX0dST1VQCTB4MDAwMDAzCisKKy8qIFN1cGVyYmxvY2sgY29ycnVwdCAqLworI2RlZmluZSBQUl8wX1NCX0NPUlJVUFQJCTB4MDAwMDA0CisKKy8qIEZpbGVzeXN0ZW0gc2l6ZSBpcyB3cm9uZyAqLworI2RlZmluZSBQUl8wX0ZTX1NJWkVfV1JPTkcJMHgwMDAwMDUKKworLyogRnJhZ21lbnRzIG5vdCBzdXBwb3J0ZWQgKi8KKyNkZWZpbmUgUFJfMF9OT19GUkFHTUVOVFMJMHgwMDAwMDYKKworLyogQmFkIGJsb2Nrc19wZXJfZ3JvdXAgKi8KKyNkZWZpbmUgUFJfMF9CTE9DS1NfUEVSX0dST1VQCTB4MDAwMDA3CisKKy8qIEJhZCBmaXJzdF9kYXRhX2Jsb2NrICovCisjZGVmaW5lIFBSXzBfRklSU1RfREFUQV9CTE9DSwkweDAwMDAwOAorCisvKiBBZGRpbmcgVVVJRCB0byBmaWxlc3lzdGVtICovCisjZGVmaW5lIFBSXzBfQUREX1VVSUQJCTB4MDAwMDA5CisKKy8qIFJlbG9jYXRlIGhpbnQgKi8KKyNkZWZpbmUgUFJfMF9SRUxPQ0FURV9ISU5UCTB4MDAwMDBBCisKKy8qIE1pc2NlbGxhbmVvdXMgc3VwZXJibG9jayBjb3JydXB0aW9uICovCisjZGVmaW5lIFBSXzBfTUlTQ19DT1JSVVBUX1NVUEVSCTB4MDAwMDBCCisKKy8qIEVycm9yIGRldGVybWluZyBwaHlzaWNhbCBkZXZpY2Ugc2l6ZSBvZiBmaWxlc3lzdGVtICovCisjZGVmaW5lIFBSXzBfR0VUU0laRV9FUlJPUgkweDAwMDAwQworCisvKiBJbm9kZSBjb3VudCBpbiB0aGUgc3VwZXJibG9jayBpbmNvcnJlY3QgKi8KKyNkZWZpbmUgUFJfMF9JTk9ERV9DT1VOVF9XUk9ORwkweDAwMDAwRAorCisvKiBUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlICovCisjZGVmaW5lIFBSXzBfSFVSRF9DTEVBUl9GSUxFVFlQRSAweDAwMDAwRQorCisvKiBKb3VybmFsIGlub2RlIGlzIGludmFsaWQgKi8KKyNkZWZpbmUgUFJfMF9KT1VSTkFMX0JBRF9JTk9ERQkweDAwMDAwRgorCisvKiBUaGUgZXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbXMgKHdoaWNoIHdlIGNhbid0IGhhbmRsZSB5ZXQpICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9VTlNVUFBfTVVMVElGUyAweDAwMDAxMAorCisvKiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWwgKi8KKyNkZWZpbmUgUFJfMF9DQU5UX0ZJTkRfSk9VUk5BTAkweDAwMDAxMQorCisvKiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9jayAqLworI2RlZmluZSBQUl8wX0VYVF9KT1VSTkFMX0JBRF9TVVBFUiAweDAwMDAxMgorCisvKiBTdXBlcmJsb2NrIGhhcyBhIGJhZCBqb3VybmFsIFVVSUQgKi8KKyNkZWZpbmUgUFJfMF9KT1VSTkFMX0JBRF9VVUlECTB4MDAwMDEzCisKKy8qIEpvdXJuYWwgaGFzIGFuIHVua25vd24gc3VwZXJibG9jayB0eXBlICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9VTlNVUFBfU1VQRVIgMHgwMDAwMTQKKworLyogSm91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQgKi8KKyNkZWZpbmUgUFJfMF9KT1VSTkFMX0JBRF9TVVBFUgkweDAwMDAxNQorCisvKiBKb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCAqLworI2RlZmluZSBQUl8wX0pPVVJOQUxfSEFTX0pPVVJOQUwgMHgwMDAwMTYKKworLyogU3VwZXJibG9jayBoYXMgcmVjb3ZlcnkgZmxhZyBzZXQgYnV0IG5vIGpvdXJuYWwgKi8KKyNkZWZpbmUgUFJfMF9KT1VSTkFMX1JFQ09WRVJfU0VUIDB4MDAwMDE3CisKKy8qIEpvdXJuYWwgaGFzIGRhdGEsIGJ1dCByZWNvdmVyeSBmbGFnIGlzIGNsZWFyICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9SRUNPVkVSWV9DTEVBUiAweDAwMDAxOAorCisvKiBBc2sgaWYgd2Ugc2hvdWxkIGNsZWFyIHRoZSBqb3VybmFsICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9SRVNFVF9KT1VSTkFMIDB4MDAwMDE5CisKKy8qIEZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgMCwgYnV0IGZlYXR1cmUgZmxhZ3MgYXJlIHNldCAqLworI2RlZmluZSBQUl8wX0ZTX1JFVl9MRVZFTAkweDAwMDAxQQorCisvKiBDbGVhcmluZyBvcnBoYW4gaW5vZGUgKi8KKyNkZWZpbmUgUFJfMF9PUlBIQU5fQ0xFQVJfSU5PREUJCQkweDAwMDAyMAorCisvKiBJbGxlZ2FsIGJsb2NrIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICovCisjZGVmaW5lIFBSXzBfT1JQSEFOX0lMTEVHQUxfQkxPQ0tfTlVNCQkweDAwMDAyMQorCisvKiBBbHJlYWR5IGNsZWFyZWQgYmxvY2sgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMF9PUlBIQU5fQUxSRUFEWV9DTEVBUkVEX0JMT0NLCTB4MDAwMDIyCisKKy8qIElsbGVnYWwgb3JwaGFuIGlub2RlIGluIHN1cGVyYmxvY2sgKi8KKyNkZWZpbmUgUFJfMF9PUlBIQU5fSUxMRUdBTF9IRUFEX0lOT0RFCQkweDAwMDAyMworCisvKiBJbGxlZ2FsIGlub2RlIGluIG9ycGhhbmVkIGlub2RlIGxpc3QgKi8KKyNkZWZpbmUgUFJfMF9PUlBIQU5fSUxMRUdBTF9JTk9ERQkJMHgwMDAwMjQKKworLyogSm91cm5hbCBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUgLSBhYm9ydCAqLworI2RlZmluZSBQUl8wX0pPVVJOQUxfVU5TVVBQX1JPQ09NUEFUCQkweDAwMDAyNQorCisvKiBKb3VybmFsIGhhcyB1bnN1cHBvcnRlZCBpbmNvbXBhdGlibGUgZmVhdHVyZSAtIGFib3J0ICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9VTlNVUFBfSU5DT01QQVQJCTB4MDAwMDI2CisKKy8qIEpvdXJuYWwgaGFzIHVuc3VwcG9ydGVkIHZlcnNpb24gbnVtYmVyICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9VTlNVUFBfVkVSU0lPTgkJMHgwMDAwMjcKKworLyogTW92aW5nIGpvdXJuYWwgdG8gaGlkZGVuIGZpbGUgKi8KKyNkZWZpbmUJUFJfMF9NT1ZFX0pPVVJOQUwJCQkweDAwMDAyOAorCisvKiBFcnJvciBtb3Zpbmcgam91cm5hbCAqLworI2RlZmluZQlQUl8wX0VSUl9NT1ZFX0pPVVJOQUwJCQkweDAwMDAyOQorCisvKiBDbGVhcmluZyBWMiBqb3VybmFsIHN1cGVyYmxvY2sgKi8KKyNkZWZpbmUgUFJfMF9DTEVBUl9WMl9KT1VSTkFMCQkJMHgwMDAwMkEKKworLyogUnVuIGpvdXJuYWwgYW55d2F5ICovCisjZGVmaW5lIFBSXzBfSk9VUk5BTF9SVU4JCQkweDAwMDAyQgorCisvKiBSdW4gam91cm5hbCBhbnl3YXkgYnkgZGVmYXVsdCAqLworI2RlZmluZSBQUl8wX0pPVVJOQUxfUlVOX0RFRkFVTFQJCTB4MDAwMDJDCisKKy8qIEJhY2t1cCBqb3VybmFsIGlub2RlIGJsb2NrcyAqLworI2RlZmluZSBQUl8wX0JBQ0tVUF9KTkwJCQkJMHgwMDAwMkQKKworLyogUmVzZXJ2ZWQgYmxvY2tzIHcvbyByZXNpemVfaW5vZGUgKi8KKyNkZWZpbmUgUFJfMF9OT05aRVJPX1JFU0VSVkVEX0dEVF9CTE9DS1MJMHgwMDAwMkUKKworLyogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvICovCisjZGVmaW5lIFBSXzBfQ0xFQVJfUkVTSVpFX0lOT0RFCQkJMHgwMDAwMkYKKworLyogUmVzaXplIGlub2RlIGludmFsaWQgKi8KKyNkZWZpbmUgUFJfMF9SRVNJWkVfSU5PREVfSU5WQUxJRAkJMHgwMDAwMzAKKworLyogTGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUgKi8KKyNkZWZpbmUgUFJfMF9GVVRVUkVfU0JfTEFTVF9NT1VOVAkJMHgwMDAwMzEKKworLyogTGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUgKi8KKyNkZWZpbmUgUFJfMF9GVVRVUkVfU0JfTEFTVF9XUklURQkJMHgwMDAwMzIKKworLyogU3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBqb3VybmFsIGluY29ycmVjdCAqLworI2RlZmluZSBQUl8wX0VYVEVSTkFMX0pPVVJOQUxfSElOVAkJMHgwMDAwMzMKKworLyogU3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBqb3VybmFsIGluY29ycmVjdCAqLworI2RlZmluZSBQUl8wX0RJUkhBU0hfSElOVAkJCTB4MDAwMDM0CisKKy8qIEdyb3VwIGRlc2NyaXB0b3IgTiBjaGVja3N1bSBpcyBpbnZhbGlkICovCisjZGVmaW5lIFBSXzBfR0RUX0NTVU0JCQkJMHgwMDAwMzUKKworLyogR3JvdXAgZGVzY3JpcHRvciBOIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuICovCisjZGVmaW5lIFBSXzBfR0RUX1VOSU5JVAkJCQkweDAwMDAzNgorCisvKiBCbG9jayBiaXRtYXAgaXMgbm90IGluaXRpYWxpc2VkIGFuZCBJbm9kZSBiaXRtYXAgaXMgLS0gTk8gTE9OR0VSIFVTRUQgKi8KKy8qICNkZWZpbmUgUFJfMF9CQl9VTklOSVRfSUJfSU5JVAkJCTB4MDAwMDM3ICovCisKKy8qIEdyb3VwIGRlc2NyaXB0b3IgTiBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50LiAqLworI2RlZmluZSBQUl8wX0dEVF9JVEFCTEVfVU5VU0VECQkJMHgwMDAwMzgKKworLyogTGFzdCBncm91cCBibG9jayBiaXRtYXAgaXMgdW5pbml0aWFsaXplZC4gKi8KKyNkZWZpbmUgUFJfMF9CQl9VTklOSVRfTEFTVAkJCTB4MDAwMDM5CisKKy8qIEpvdXJuYWwgdHJhbnNhY3Rpb24gZm91bmQgY29ycnVwdCAqLworI2RlZmluZSBQUl8wX0pOTF9UWE5fQ09SUlVQVAkJCTB4MDAwMDNBCisKKy8qIFRoZSB0ZXN0X2ZzIGZpbGVzeXN0ZW0gZmxhZyBpcyBzZXQgYW5kIGV4dDQgaXMgYXZhaWxhYmxlICovCisjZGVmaW5lIFBSXzBfQ0xFQVJfVEVTVEZTX0ZMQUcJCQkweDAwMDAzQgorCisvKiBMYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZSAoZnVkZ2VkKSAqLworI2RlZmluZSBQUl8wX0ZVVFVSRV9TQl9MQVNUX01PVU5UX0ZVREdFRAkweDAwMDAzQworCisvKiBMYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZSAoZnVkZ2VkKSAqLworI2RlZmluZSBQUl8wX0ZVVFVSRV9TQl9MQVNUX1dSSVRFX0ZVREdFRAkweDAwMDAzRAorCisvKiBCbG9jayBncm91cCBjaGVja3N1bSAobGF0Y2ggcXVlc3Rpb24pICovCisjZGVmaW5lIFBSXzBfR0RUX0NTVU1fTEFUQ0gJCQkweDAwMDAzRQorCisvKiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAqLworI2RlZmluZSBQUl8wX0ZSRUVfSU5PREVfQ09VTlQJCQkweDAwMDAzRgorCisvKiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAqLworI2RlZmluZSBQUl8wX0ZSRUVfQkxPQ0tfQ09VTlQJCQkweDAwMDA0MAorCisvKiBNYWtlIHF1b3RhIGZpbGUgaGlkZGVuICovCisjZGVmaW5lCVBSXzBfSElERV9RVU9UQQkJCQkweDAwMDA0MQorCisvKiBTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gKi8KKyNkZWZpbmUgUFJfMF9NTVBfSU5WQUxJRF9CTEsJCQkweDAwMDA0MgorCisvKiBTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gKi8KKyNkZWZpbmUgUFJfMF9NTVBfSU5WQUxJRF9NQUdJQwkJCTB4MDAwMDQzCisKKy8qIE9wZW5pbmcgZmlsZSBzeXN0ZW0gZmFpbGVkICovCisjZGVmaW5lIFBSXzBfT1BFTl9GQUlMRUQJCQkweDAwMDA0NAorCisvKiBDaGVja2luZyBncm91cCBkZXNjcmlwdG9yIGZhaWxlZCAqLworI2RlZmluZSBQUl8wX0NIRUNLX0RFU0NfRkFJTEVECQkJMHgwMDAwNDUKKworLyoKKyAqIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQKKyAqIHNpbXVsdGFuZW91c2x5LgorICovCisjZGVmaW5lIFBSXzBfTUVUQV9BTkRfR0RUX0NTVU1fU0VUCQkweDAwMDA0NgorCisvKiBTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBjaGVja3N1bS4gKi8KKyNkZWZpbmUgUFJfMF9NTVBfQ1NVTV9JTlZBTElECQkJMHgwMDAwNDcKKworLyogNjRiaXQgaXMgc2V0IGJ1dCBleHRlbnRzIGFyZSBub3Qgc2V0LiAqLworI2RlZmluZSBQUl8wXzY0QklUX1dJVEhPVVRfRVhURU5UUwkJMHgwMDAwNDgKKworLyogVGhlIGZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZyAqLworI2RlZmluZSBQUl8wX0ZJUlNUX01FVEFfQkdfVE9PX0JJRwkJMHgwMDAwNDkKKworLyogRXh0ZXJuYWwgam91cm5hbCBoYXMgY29ycnVwdCBzdXBlcmJsb2NrICovCisjZGVmaW5lIFBSXzBfRVhUX0pPVVJOQUxfU1VQRVJfQ1NVTV9JTlZBTElECTB4MDAwMDRBCisKKy8qIG1ldGFkYXRhX2NzdW1fc2VlZCBtZWFucyBub3RoaW5nIHdpdGhvdXQgbWV0YWRhdGFfY3N1bSAqLworI2RlZmluZSBQUl8wX0NTVU1fU0VFRF9XSVRIT1VUX01FVEFfQ1NVTQkweDAwMDA0QgorCisvKiBFcnJvciBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCAqLworI2RlZmluZSBQUl8wX1FVT1RBX0lOSVRfQ1RYCQkJMHgwMDAwNEMKKworLyogQmFkIHNfbWluX2V4dHJhX2lzaXplIGluIHN1cGVyYmxvY2sgKi8KKyNkZWZpbmUgUFJfMF9CQURfTUlOX0VYVFJBX0lTSVpFCQkweDAwMDA0RAorCisvKiBCYWQgc193YW50X2V4dHJhX2lzaXplIGluIHN1cGVyYmxvY2sgKi8KKyNkZWZpbmUgUFJfMF9CQURfV0FOVF9FWFRSQV9JU0laRQkJMHgwMDAwNEUKKworCisvKgorICogUGFzcyAxIGVycm9ycworICovCisKKy8qIFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcyAqLworI2RlZmluZSBQUl8xX1BBU1NfSEVBREVSCQkweDAxMDAwMAorCisvKiBSb290IGRpcmVjdG9yeSBpcyBub3QgYW4gaW5vZGUgKi8KKyNkZWZpbmUgUFJfMV9ST09UX05PX0RJUgkJMHgwMTAwMDEKKworLyogUm9vdCBkaXJlY3RvcnkgaGFzIGR0aW1lIHNldCAqLworI2RlZmluZSBQUl8xX1JPT1RfRFRJTUUJCQkweDAxMDAwMgorCisvKiBSZXNlcnZlZCBpbm9kZSBoYXMgYmFkIG1vZGUgKi8KKyNkZWZpbmUgUFJfMV9SRVNFUlZFRF9CQURfTU9ERQkJMHgwMTAwMDMKKworLyogRGVsZXRlZCBpbm9kZSBoYXMgemVybyBkdGltZSAqLworI2RlZmluZSBQUl8xX1pFUk9fRFRJTUUJCQkweDAxMDAwNAorCisvKiBJbm9kZSBpbiB1c2UsIGJ1dCBkdGltZSBzZXQgKi8KKyNkZWZpbmUgUFJfMV9TRVRfRFRJTUUJCQkweDAxMDAwNQorCisvKiBaZXJvLWxlbmd0aCBkaXJlY3RvcnkgKi8KKyNkZWZpbmUgUFJfMV9aRVJPX0xFTkdUSF9ESVIJCTB4MDEwMDA2CisKKy8qIEJsb2NrIGJpdG1hcCBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrICovCisjZGVmaW5lIFBSXzFfQkJfQ09ORkxJQ1QJCTB4MDEwMDA3CisKKy8qIElub2RlIGJpdG1hcCBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrICovCisjZGVmaW5lIFBSXzFfSUJfQ09ORkxJQ1QJCTB4MDEwMDA4CisKKy8qIElub2RlIHRhYmxlIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2sgKi8KKyNkZWZpbmUgUFJfMV9JVEFCTEVfQ09ORkxJQ1QJCTB4MDEwMDA5CisKKy8qIEJsb2NrIGJpdG1hcCBpcyBvbiBhIGJhZCBibG9jayAqLworI2RlZmluZSBQUl8xX0JCX0JBRF9CTE9DSwkJMHgwMTAwMEEKKworLyogSW5vZGUgYml0bWFwIGlzIG9uIGEgYmFkIGJsb2NrICovCisjZGVmaW5lIFBSXzFfSUJfQkFEX0JMT0NLCQkweDAxMDAwQgorCisvKiBJbm9kZSBoYXMgaW5jb3JyZWN0IGlfc2l6ZSAqLworI2RlZmluZSBQUl8xX0JBRF9JX1NJWkUJCQkweDAxMDAwQworCisvKiBJbm9kZSBoYXMgaW5jb3JyZWN0IGlfYmxvY2tzICovCisjZGVmaW5lIFBSXzFfQkFEX0lfQkxPQ0tTCQkweDAxMDAwRAorCisvKiBJbGxlZ2FsIGJsb2NrIG51bWJlciBpbiBpbm9kZSAqLworI2RlZmluZSBQUl8xX0lMTEVHQUxfQkxPQ0tfTlVNCQkweDAxMDAwRQorCisvKiBCbG9jayBudW1iZXIgb3ZlcmxhcHMgZnMgbWV0YWRhdGEgKi8KKyNkZWZpbmUgUFJfMV9CTE9DS19PVkVSTEFQU19NRVRBREFUQQkweDAxMDAwRgorCisvKiBJbm9kZSBoYXMgaWxsZWdhbCBibG9ja3MgKGxhdGNoIHF1ZXN0aW9uKSAqLworI2RlZmluZSBQUl8xX0lOT0RFX0JMT0NLX0xBVENICQkweDAxMDAxMAorCisvKiBUb28gbWFueSBiYWQgYmxvY2tzIGluIGlub2RlICovCisjZGVmaW5lCVBSXzFfVE9PX01BTllfQkFEX0JMT0NLUwkweDAxMDAxMQorCisvKiBJbGxlZ2FsIGJsb2NrIG51bWJlciBpbiBiYWQgYmxvY2sgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMV9CQl9JTExFR0FMX0JMT0NLX05VTQkweDAxMDAxMgorCisvKiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2tzIChsYXRjaCBxdWVzdGlvbikgKi8KKyNkZWZpbmUgUFJfMV9JTk9ERV9CQkxPQ0tfTEFUQ0gJCTB4MDEwMDEzCisKKy8qIER1cGxpY2F0ZSBvciBiYWQgYmxvY2tzIGluIHVzZSEgKi8KKyNkZWZpbmUgUFJfMV9EVVBfQkxPQ0tTX1BSRUVOU1RPUAkweDAxMDAxNAorCisvKiBCYWQgYmxvY2sgdXNlZCBhcyBiYWQgYmxvY2sgaW5kaXJlY3QgYmxvY2sgKi8KKyNkZWZpbmUgUFJfMV9CQklOT0RFX0JBRF9NRVRBQkxPQ0sJMHgwMTAwMTUKKworLyogSW5jb25zaXN0ZW5jeSBjYW4ndCBiZSBmaXhlZCBwcm9tcHQgKi8KKyNkZWZpbmUgUFJfMV9CQklOT0RFX0JBRF9NRVRBQkxPQ0tfUFJPTVBUIDB4MDEwMDE2CisKKy8qIEJhZCBwcmltYXJ5IGJsb2NrICovCisjZGVmaW5lIFBSXzFfQkFEX1BSSU1BUllfQkxPQ0sJCTB4MDEwMDE3CisKKy8qIEJhZCBwcmltYXJ5IGJsb2NrIHByb21wdCAqLworI2RlZmluZSBQUl8xX0JBRF9QUklNQVJZX0JMT0NLX1BST01QVAkweDAxMDAxOAorCisvKiBCYWQgcHJpbWFyeSBzdXBlcmJsb2NrICovCisjZGVmaW5lIFBSXzFfQkFEX1BSSU1BUllfU1VQRVJCTE9DSwkweDAxMDAxOQorCisvKiBCYWQgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycyAqLworI2RlZmluZSBQUl8xX0JBRF9QUklNQVJZX0dST1VQX0RFU0NSSVBUT1IgMHgwMTAwMUEKKworLyogQmFkIHN1cGVyYmxvY2sgaW4gZ3JvdXAgKi8KKyNkZWZpbmUgUFJfMV9CQURfU1VQRVJCTE9DSwkJMHgwMTAwMUIKKworLyogQmFkIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIGluIGdyb3VwICovCisjZGVmaW5lIFBSXzFfQkFEX0dST1VQX0RFU0NSSVBUT1JTCTB4MDEwMDFDCisKKy8qIEJsb2NrIGNsYWltZWQgZm9yIG5vIHJlYXNvbiAqLworI2RlZmluZSBQUl8xX1BST0dFUlJfQ0xBSU1FRF9CTE9DSwkweDAxMDAxRAorCisvKiBFcnJvciBhbGxvY2F0aW5nIGJsb2NrcyBmb3IgcmVsb2NhdGluZyBtZXRhZGF0YSAqLworI2RlZmluZSBQUl8xX1JFTE9DX0JMT0NLX0FMTE9DQVRFCTB4MDEwMDFFCisKKy8qIEVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGR1cmluZyByZWxvY2F0aW9uIHByb2Nlc3MgKi8KKyNkZWZpbmUgUFJfMV9SRUxPQ19NRU1PUllfQUxMT0NBVEUJMHgwMTAwMUYKKworLyogUmVsb2NhdGluZyBtZXRhZGF0YSBncm91cCBpbmZvcm1hdGlvbiBmcm9tIFggdG8gWSAqLworI2RlZmluZSBQUl8xX1JFTE9DX0ZST01fVE8JCTB4MDEwMDIwCisKKy8qIFJlbG9jYXRpbmcgbWV0YXRkYXRhIGdyb3VwIGluZm9ybWF0aW9uIHRvIFggKi8KKyNkZWZpbmUgUFJfMV9SRUxPQ19UTwkJCTB4MDEwMDIxCisKKy8qIEJsb2NrIHJlYWQgZXJyb3IgZHVyaW5nIHJlbG9jYXRpb24gcHJvY2VzcyAqLworI2RlZmluZSBQUl8xX1JFTE9DX1JFQURfRVJSCQkweDAxMDAyMgorCisvKiBCbG9jayB3cml0ZSBlcnJvciBkdXJpbmcgcmVsb2NhdGlvbiBwcm9jZXNzICovCisjZGVmaW5lIFBSXzFfUkVMT0NfV1JJVEVfRVJSCQkweDAxMDAyMworCisvKiBFcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAqLworI2RlZmluZSBQUl8xX0FMTE9DQVRFX0lCSVRNQVBfRVJST1IJMHgwMTAwMjQKKworLyogRXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKi8KKyNkZWZpbmUgUFJfMV9BTExPQ0FURV9CQklUTUFQX0VSUk9SCTB4MDEwMDI1CisKKy8qIEVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZSAqLworI2RlZmluZSBQUl8xX0FMTE9DQVRFX0lDT1VOVAkJMHgwMTAwMjYKKworLyogRXJyb3IgYWxsb2NhdGluZyBkYmNvdW50ICovCisjZGVmaW5lIFBSXzFfQUxMT0NBVEVfREJDT1VOVAkJMHgwMTAwMjcKKworLyogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICovCisjZGVmaW5lIFBSXzFfSVNDQU5fRVJST1IJCTB4MDEwMDI4CisKKy8qIEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyAqLworI2RlZmluZSBQUl8xX0JMT0NLX0lURVJBVEUJCTB4MDEwMDI5CisKKy8qIEVycm9yIHdoaWxlIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKi8KKyNkZWZpbmUgUFJfMV9JQ09VTlRfU1RPUkUJCTB4MDEwMDJBCisKKy8qIEVycm9yIHdoaWxlIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uICovCisjZGVmaW5lIFBSXzFfQUREX0RCTE9DSwkJCTB4MDEwMDJCCisKKy8qIEVycm9yIHdoaWxlIHJlYWRpbmcgaW5vZGUgKGZvciBjbGVhcmluZykgKi8KKyNkZWZpbmUgUFJfMV9SRUFEX0lOT0RFCQkJMHgwMTAwMkMKKworLyogU3VwcHJlc3MgbWVzc2FnZXMgcHJvbXB0ICovCisjZGVmaW5lIFBSXzFfU1VQUFJFU1NfTUVTU0FHRVMJCTB4MDEwMDJECisKKy8qIEltYWdpYyBmbGFnIHNldCBvbiBhbiBpbm9kZSB3aGVuIGZpbGVzeXN0ZW0gZG9lc24ndCBzdXBwb3J0IGl0ICovCisjZGVmaW5lIFBSXzFfU0VUX0lNQUdJQwkJCTB4MDEwMDJGCisKKy8qIEltbXV0YWJsZSBmbGFnIHNldCBvbiBhIGRldmljZSBvciBzb2NrZXQgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMV9TRVRfSU1NVVRBQkxFCQkweDAxMDAzMAorCisvKiBDb21wcmVzc2lvbiBmbGFnIHNldCBvbiBhIG5vbi1jb21wcmVzc2VkIGZpbGVzeXN0ZW0gLS0gbm8gbG9uZ2VyIHVzZWQqLworLyogI2RlZmluZSBQUl8xX0NPTVBSX1NFVAkJCTB4MDEwMDMxICovCisKKy8qIE5vbi16ZXJvIHNpemUgb24gb24gZGV2aWNlLCBmaWZvIG9yIHNvY2tldCBpbm9kZSAqLworI2RlZmluZSBQUl8xX1NFVF9OT05aU0laRQkJMHgwMTAwMzIKKworLyogRmlsZXN5c3RlbSByZXZpc2lvbiBpcyAwLCBidXQgZmVhdHVyZSBmbGFncyBhcmUgc2V0ICovCisjZGVmaW5lIFBSXzFfRlNfUkVWX0xFVkVMCQkweDAxMDAzMworCisvKiBKb3VybmFsIGlub2RlIG5vdCBpbiB1c2UsIG5lZWRzIGNsZWFyaW5nICovCisjZGVmaW5lIFBSXzFfSk9VUk5BTF9JTk9ERV9OT1RfQ0xFQVIJMHgwMTAwMzQKKworLyogSm91cm5hbCBpbm9kZSBoYXMgd3JvbmcgbW9kZSAqLworI2RlZmluZSBQUl8xX0pPVVJOQUxfQkFEX01PREUJCTB4MDEwMDM1CisKKy8qIElub2RlIHRoYXQgd2FzIHBhcnQgb2Ygb3JwaGFuIGxpbmtlZCBsaXN0ICovCisjZGVmaW5lIFBSXzFfTE9XX0RUSU1FCQkJMHgwMTAwMzYKKworLyogTGF0Y2ggcXVlc3Rpb24gd2hpY2ggYXNrcyBob3cgdG8gZGVhbCB3aXRoIGxvdyBkdGltZSBpbm9kZXMgKi8KKyNkZWZpbmUgUFJfMV9PUlBIQU5fTElTVF9SRUZVR0VFUwkweDAxMDAzNworCisvKiBFcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAqLworI2RlZmluZSBQUl8xX0FMTE9DQVRFX1JFRkNPVU5UCQkweDAxMDAzOAorCisvKiBFcnJvciByZWFkaW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSBibG9jayAqLworI2RlZmluZSBQUl8xX1JFQURfRUFfQkxPQ0sJCTB4MDEwMDM5CisKKy8qIEludmFsaWQgRXh0ZW5kZWQgQXR0cmlidXRlIGJsb2NrICovCisjZGVmaW5lIFBSXzFfQkFEX0VBX0JMT0NLCQkweDAxMDAzQQorCisvKiBFcnJvciByZWFkaW5nIEV4dGVuZGVkIEF0dHJpYnV0ZSBibG9jayB3aGlsZSBmaXhpbmcgcmVmY291bnQgLS0gYWJvcnQgKi8KKyNkZWZpbmUgUFJfMV9FWFRBVFRSX1JFQURfQUJPUlQJCTB4MDEwMDNCCisKKy8qIEV4dGVuZGVkIGF0dHJpYnV0ZSByZWZlcmVuY2UgY291bnQgaW5jb3JyZWN0ICovCisjZGVmaW5lIFBSXzFfRVhUQVRUUl9SRUZDT1VOVAkJMHgwMTAwM0MKKworLyogRXJyb3Igd3JpdGluZyBFeHRlbmRlZCBBdHRyaWJ1dGUgYmxvY2sgd2hpbGUgZml4aW5nIHJlZmNvdW50ICovCisjZGVmaW5lIFBSXzFfRVhUQVRUUl9XUklURV9BQk9SVAkweDAxMDAzRAorCisvKiBNdWx0aXBsZSBFQSBibG9ja3Mgbm90IHN1cHBvcnRlZCAqLworI2RlZmluZSBQUl8xX0VBX01VTFRJX0JMT0NLCQkweDAxMDAzRQorCisvKiBFcnJvciBhbGxvY2F0aW5nIEVBIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZSAqLworI2RlZmluZSBQUl8xX0VBX0FMTE9DX1JFR0lPTl9BQk9SVAkweDAxMDAzRgorCisvKiBFcnJvciBFQSBhbGxvY2F0aW9uIGNvbGxpc2lvbiAqLworI2RlZmluZSBQUl8xX0VBX0FMTE9DX0NPTExJU0lPTgkJMHgwMTAwNDAKKworLyogQmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lICovCisjZGVmaW5lIFBSXzFfRUFfQkFEX05BTUUJCTB4MDEwMDQxCisKKy8qIEJhZCBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUgKi8KKyNkZWZpbmUgUFJfMV9FQV9CQURfVkFMVUUJCTB4MDEwMDQyCisKKy8qIElub2RlIHRvbyBiaWcgKGxhdGNoIHF1ZXN0aW9uKSAqLworI2RlZmluZSBQUl8xX0lOT0RFX1RPT0JJRwkJMHgwMTAwNDMKKworLyogRGlyZWN0b3J5IHRvbyBiaWcgKi8KKyNkZWZpbmUgUFJfMV9UT09CSUdfRElSCQkJMHgwMTAwNDQKKworLyogUmVndWxhciBmaWxlIHRvbyBiaWcgKi8KKyNkZWZpbmUgUFJfMV9UT09CSUdfUkVHCQkJMHgwMTAwNDUKKworLyogU3ltbGluayB0b28gYmlnICovCisjZGVmaW5lIFBSXzFfVE9PQklHX1NZTUxJTksJCTB4MDEwMDQ2CisKKy8qIElOREVYX0ZMIGZsYWcgc2V0IG9uIGEgbm9uLUhUUkVFIGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUgUFJfMV9IVFJFRV9TRVQJCQkweDAxMDA0NworCisvKiBJTkRFWF9GTCBmbGFnIHNldCBvbiBhIG5vbi1kaXJlY3RvcnkgKi8KKyNkZWZpbmUgUFJfMV9IVFJFRV9OT0RJUgkJMHgwMTAwNDgKKworLyogSW52YWxpZCByb290IG5vZGUgaW4gSFRSRUUgZGlyZWN0b3J5ICovCisjZGVmaW5lIFBSXzFfSFRSRUVfQkFEUk9PVAkJMHgwMTAwNDkKKworLyogVW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uIGluIEhUUkVFIGRpcmVjdG9yeSAqLworI2RlZmluZSBQUl8xX0hUUkVFX0hBU0hWCQkweDAxMDA0QQorCisvKiBJbmNvbXBhdGlibGUgZmxhZyBpbiBIVFJFRSByb290IG5vZGUgKi8KKyNkZWZpbmUgUFJfMV9IVFJFRV9JTkNPTVBBVAkJMHgwMTAwNEIKKworLyogSFRSRUUgdG9vIGRlZXAgKi8KKyNkZWZpbmUgUFJfMV9IVFJFRV9ERVBUSAkJMHgwMTAwNEMKKworLyogQmFkIGJsb2NrIGhhcyBpbmRpcmVjdCBibG9jayB0aGF0IGNvbmZsaWN0cyB3aXRoIGZpbGVzeXN0ZW0gYmxvY2sgKi8KKyNkZWZpbmUgUFJfMV9CQl9GU19CTE9DSwkJMHgwMTAwNEQKKworLyogUmVzaXplIGlub2RlIGZhaWxlZCAqLworI2RlZmluZSBQUl8xX1JFU0laRV9JTk9ERV9DUkVBVEUJMHgwMTAwNEUKKworLyogaW5vZGUtPmlfc2l6ZSBpcyB0b28gbG9uZyAqLworI2RlZmluZSBQUl8xX0VYVFJBX0lTSVpFCQkweDAxMDA0RgorCisvKiBhdHRyaWJ1dGUgbmFtZSBpcyB0b28gbG9uZyAqLworI2RlZmluZSBQUl8xX0FUVFJfTkFNRV9MRU4JCTB4MDEwMDUwCisKKy8qIHdyb25nIEVBIHZhbHVlIG9mZnNldCAqLworI2RlZmluZSBQUl8xX0FUVFJfVkFMVUVfT0ZGU0VUCQkweDAxMDA1MQorCisvKiB3cm9uZyBFQSBibG9ja251bWJlciAqLworI2RlZmluZSBQUl8xX0FUVFJfVkFMVUVfQkxPQ0sJCTB4MDEwMDUyCisKKy8qIHdyb25nIEVBIHZhbHVlIHNpemUgKi8KKyNkZWZpbmUgUFJfMV9BVFRSX1ZBTFVFX1NJWkUJCTB4MDEwMDUzCisKKy8qIHdyb25nIEVBIGhhc2ggdmFsdWUgKi8KKyNkZWZpbmUgUFJfMV9BVFRSX0hBU0gJCQkweDAxMDA1NAorCisvKiBpbm9kZSBhcHBlYXJzIHRvIGJlIGEgZGlyZWN0b3J5ICovCisjZGVmaW5lIFBSXzFfVFJFQVRfQVNfRElSRUNUT1JZCQkweDAxMDA1NQorCisvKiBFcnJvciB3aGlsZSByZWFkaW5nIGV4dGVudCB0cmVlICovCisjZGVmaW5lIFBSXzFfUkVBRF9FWFRFTlQJCTB4MDEwMDU2CisKKy8qIEZhaWx1cmUgdG8gaXRlcmF0ZSBleHRlbnRzICovCisjZGVmaW5lIFBSXzFfRVhURU5UX0lURVJBVEVfRkFJTFVSRQkweDAxMDA1NworCisvKiBCYWQgc3RhcnRpbmcgYmxvY2sgaW4gZXh0ZW50ICovCisjZGVmaW5lIFBSXzFfRVhURU5UX0JBRF9TVEFSVF9CTEsJMHgwMTAwNTgKKworLyogRXh0ZW50IGVuZHMgYmV5b25kIGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUgUFJfMV9FWFRFTlRfRU5EU19CRVlPTkQJCTB4MDEwMDU5CisKKy8qIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gYSBub24tZXh0ZW50cyBjYXBhYmxlIGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUgUFJfMV9FWFRFTlRTX1NFVAkJMHgwMTAwNUEKKworLyogaW5vZGUgaGFzIGV4dGVudHMsIHN1cGVyYmxvY2sgbWlzc2luZyBJTkNPTVBBVF9FWFRFTlRTIGZlYXR1cmUgKi8KKyNkZWZpbmUgUFJfMV9FWFRFTlRfRkVBVFVSRQkJMHgwMTAwNUIKKworLyogaW5vZGUgbWlzc2luZyBFWFRFTlRTX0ZMLCBidXQgaXMgYW4gZXh0ZW50IGlub2RlICovCisjZGVmaW5lIFBSXzFfVU5TRVRfRVhURU5UX0ZMCQkweDAxMDA1QworCisvKiBGYXN0IHN5bWxpbmsgaGFzIEVYVEVOVFNfRkwgc2V0ICovCisjZGVmaW5lIFBSXzFfRkFTVF9TWU1MSU5LX0VYVEVOVF9GTAkweDAxMDA1RAorCisvKiBFeHRlbnRzIGFyZSBvdXQgb2Ygb3JkZXIgKi8KKyNkZWZpbmUgUFJfMV9PVVRfT0ZfT1JERVJfRVhURU5UUwkweDAxMDA1RQorCisvKiBFeHRlbnQgbm9kZSBoZWFkZXIgaW52YWxpZCAqLworI2RlZmluZSBQUl8xX0VYVEVOVF9IRUFERVJfSU5WQUxJRAkweDAxMDA1RgorCisvKiBQUl8xX0VPRkJMT0NLU19GTF9TRVQgMHgwMTAwNjAgd2FzIGhlcmUgKi8KKworLyogRmFpbGVkIHRvIGNvbnZlcnQgc3ViY2x1c3RlciBiaXRtYXAgKi8KKyNkZWZpbmUgUFJfMV9DT05WRVJUX1NVQkNMVVNURVIJCTB4MDEwMDYxCisKKy8qIFF1b3RhIGlub2RlIGhhcyB3cm9uZyBtb2RlICovCisjZGVmaW5lIFBSXzFfUVVPVEFfQkFEX01PREUJCTB4MDEwMDYyCisKKy8qIFF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhICovCisjZGVmaW5lIFBSXzFfUVVPVEFfSU5PREVfTk9UX0NMRUFSCTB4MDEwMDYzCisKKy8qIFF1b3RhIGlub2RlIGlzIHVzZXIgdmlzaWJsZSAqLworI2RlZmluZSBQUl8xX1FVT1RBX0lOT0RFX05PVF9ISURERU4JMHgwMTAwNjQKKworLyogSW52YWxpZCBiYWQgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMV9JTlZBTElEX0JBRF9JTk9ERQkJMHgwMTAwNjUKKworLyogRXh0ZW50IGhhcyB6ZXJvIGxlbmd0aCAqLworI2RlZmluZSBQUl8xX0VYVEVOVF9MRU5HVEhfWkVSTwkJMHgwMTAwNjYKKworLyogaW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlICovCisjZGVmaW5lIFBSXzFfSU5PREVfSVNfR0FSQkFHRQkJMHgwMTAwNjcKKworLyogaW5vZGUgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlICovCisjZGVmaW5lIFBSXzFfSU5PREVfT05MWV9DU1VNX0lOVkFMSUQgICAweDAxMDA2OAorCisvKiBJbm9kZSBFQSBhbGxvY2F0aW9uIGNvbGxpc2lvbiAqLworI2RlZmluZSBQUl8xX0lOT0RFX0VBX0FMTE9DX0NPTExJU0lPTgkweDAxMDA2OQorCisvKiBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayAqLworI2RlZmluZSBQUl8xX0VYVEVOVF9PTkxZX0NTVU1fSU5WQUxJRCAgMHgwMTAwNkEKKworLyogZWEgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGludmFsaWQgKi8KKyNkZWZpbmUgUFJfMV9FQV9CTE9DS19PTkxZX0NTVU1fSU5WQUxJRCAgICAgICAgMHgwMTAwNkMKKworLyogSW5kZXggc3RhcnQgZG9lc24ndCBtYXRjaCBzdGFydCBvZiBuZXh0IGV4dGVudCBkb3duICovCisjZGVmaW5lIFBSXzFfRVhURU5UX0lOREVYX1NUQVJUX0lOVkFMSUQJMHgwMTAwNkQKKworI2RlZmluZSBQUl8xX0VYVEVOVF9FTkRfT1VUX09GX0JPVU5EUwkweDAxMDA2RQorCisvKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZS4gKi8KKyNkZWZpbmUgUFJfMV9JTkxJTkVfREFUQV9GRUFUVVJFICAgICAgIDB4MDEwMDZGCisKKy8qIElOTElORV9EQVRBIGZlYXR1cmUgaXMgc2V0IGluIGEgbm9uLWlubGluZS1kYXRhIGZpbGVzeXN0ZW0gKi8KKyNkZWZpbmUgUFJfMV9JTkxJTkVfREFUQV9TRVQJICAgICAgIDB4MDEwMDcwCisKKy8qIGZpbGUgbWV0YWRhdGEgY29sbGlkZXMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSAqLworI2RlZmluZSBQUl8xX0NSSVRJQ0FMX01FVEFEQVRBX0NPTExJU0lPTgkweDAxMDA3MQorCisvKiBEaXJlY3RvcnkgaW5vZGUgaGFzIGEgbWlzc2luZyBibG9jayAoaG9sZSkgKi8KKyNkZWZpbmUgUFJfMV9DT0xMQVBTRV9EQkxPQ0sJCTB4MDEwMDcyCisKKy8qIHVuaW5pdCBkaXJlY3RvcnkgYmxvY2sgKi8KKyNkZWZpbmUgUFJfMV9VTklOSVRfREJMT0NLCQkweDAxMDA3MworCisvKiBJbm9kZSBsb2dpY2FsIGJsb2NrIGlzIG1pc2FsaWduZWQgKi8KKyNkZWZpbmUgUFJfMV9NSVNBTElHTkVEX0NMVVNURVIJCTB4MDEwMDc0CisKKy8qIElub2RlIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kICovCisjZGVmaW5lIFBSXzFfSU5MSU5FX0RBVEFfTk9fQVRUUgkweDAxMDA3NQorCisvKiBleHRlbnRzL2lubGluZWRhdGEgc2V0IG9uIGZpZm8vc29ja2V0L2RldmljZSAqLworI2RlZmluZSBQUl8xX1NQRUNJQUxfRVhURU5UU19JREFUQQkweDAxMDA3NgorCisvKiBpZGF0YS9leHRlbnQgZmxhZyBzZXQgYW5kIGV4dGVudCBoZWFkZXIgZm91bmQsIGNsZWFyIGlkYXRhIGZsYWcgKi8KKyNkZWZpbmUgUFJfMV9DTEVBUl9JTkxJTkVfREFUQV9GT1JfRVhURU5UCTB4MDEwMDc3CisKKy8qIGlubGluZWRhdGEvZXh0ZW50IHNldCBhbmQgbm8gZXh0ZW50IGhlYWRlciBmb3VuZCwgY2xlYXIgZXh0ZW50IGZsYWcgKi8KKyNkZWZpbmUgUFJfMV9DTEVBUl9FWFRFTlRfRk9SX0lOTElORV9EQVRBCTB4MDEwMDc4CisKKy8qIGlubGluZWRhdGEvZXh0ZW50IHNldCwgY2xlYXIgYm90aCBmbGFncyAqLworI2RlZmluZSBQUl8xX0NMRUFSX0VYVEVOVF9JTkxJTkVfREFUQV9GTEFHUwkweDAxMDA3OQorCisvKiBpbmxpbmVkYXRhL2V4dGVudCBzZXQsIGNsZWFyIGlub2RlICovCisjZGVmaW5lIFBSXzFfQ0xFQVJfRVhURU5UX0lOTElORV9EQVRBX0lOT0RFCTB4MDEwMDdBCisKKy8qIGJhZGJsb2NrcyBpcyBpbiBiYWRibG9ja3MgKi8KKyNkZWZpbmUgUFJfMV9CQURCTE9DS1NfSU5fQkFEQkxPQ0tTCQkweDAxMDA3QgorCisvKiBjYW4ndCBhbGxvY2F0ZSBleHRlbnQgcmVnaW9uICovCisjZGVmaW5lIFBSXzFfRVhURU5UX0FMTE9DX1JFR0lPTl9BQk9SVAkJMHgwMTAwN0MKKworLyogbGVhZiBleHRlbnQgY29sbGlzaW9uICovCisjZGVmaW5lIFBSXzFfRVhURU5UX0NPTExJU0lPTgkJCTB4MDEwMDdECisKKy8qIEVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3QgKi8KKyNkZWZpbmUgUFJfMV9BTExPQ0FURV9FTkNSWVBURURfRElSTElTVAkJMHgwMTAwN0UKKworLyogZXh0ZW50IHRyZWUgbWF4IGRlcHRoIHRvbyBiaWcgKi8KKyNkZWZpbmUgUFJfMV9FWFRFTlRfQkFEX01BWF9ERVBUSAkJMHgwMTAwN0YKKworLyogYmlnYWxsb2MgZnMgY2Fubm90IGhhdmUgYmxvY2ttYXAgZmlsZXMgKi8KKyNkZWZpbmUgUFJfMV9OT19CSUdBTExPQ19CTE9DS01BUF9GSUxFUwkJMHgwMTAwODAKKworLyogTWlzc2luZyBleHRlbnQgaGVhZGVyICovCisjZGVmaW5lIFBSXzFfTUlTU0lOR19FWFRFTlRfSEVBREVSCQkweDAxMDA4MQorCisvKiBUaW1lc3RhbXAocykgb24gaW5vZGUgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC4gKi8KKyNkZWZpbmUgUFJfMV9FQV9USU1FX09VVF9PRl9SQU5HRQkJMHgwMTAwODIKKworLyoKKyAqIFBhc3MgMWIgZXJyb3JzCisgKi8KKworLyogUGFzcyAxQjogUmVzY2FuIGZvciBkdXBsaWNhdGUvYmFkIGJsb2NrcyAqLworI2RlZmluZSBQUl8xQl9QQVNTX0hFQURFUgkweDAxMTAwMAorCisvKiBEdXBsaWNhdGUvYmFkIGJsb2NrKHMpIGhlYWRlciAqLworI2RlZmluZSBQUl8xQl9EVVBfQkxPQ0tfSEVBREVSCTB4MDExMDAxCisKKy8qIER1cGxpY2F0ZS9iYWQgYmxvY2socykgaW4gaW5vZGUgKi8KKyNkZWZpbmUgUFJfMUJfRFVQX0JMT0NLCQkweDAxMTAwMgorCisvKiBEdXBsaWNhdGUvYmFkIGJsb2NrKHMpIGVuZCAqLworI2RlZmluZSBQUl8xQl9EVVBfQkxPQ0tfRU5ECTB4MDExMDAzCisKKy8qIEVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAqLworI2RlZmluZSBQUl8xQl9JU0NBTl9FUlJPUgkweDAxMTAwNAorCisvKiBFcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAqLworI2RlZmluZSBQUl8xQl9BTExPQ0FURV9JQklUTUFQX0VSUk9SIDB4MDExMDA1CisKKy8qIEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyAqLworI2RlZmluZSBQUl8xQl9CTE9DS19JVEVSQVRFCTB4MDExMDA2CisKKy8qIEVycm9yIGFkanVzdGluZyBFQSByZWZjb3VudCAqLworI2RlZmluZSBQUl8xQl9BREpfRUFfUkVGQ09VTlQJMHgwMTEwMDcKKworLyogRHVwbGljYXRlL2JhZCBibG9jayByYW5nZSBpbiBpbm9kZSAqLworI2RlZmluZSBQUl8xQl9EVVBfUkFOR0UJCTB4MDExMDA4CisKKy8qIFBhc3MgMUM6IFNjYW4gZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIGR1cCBibG9ja3MuICovCisjZGVmaW5lIFBSXzFDX1BBU1NfSEVBREVSCTB4MDEyMDAwCisKKworLyogUGFzcyAxRDogUmVjb25jaWxpbmcgZHVwbGljYXRlIGJsb2NrcyAqLworI2RlZmluZSBQUl8xRF9QQVNTX0hFQURFUgkweDAxMzAwMAorCisvKiBGaWxlIGhhcyBkdXBsaWNhdGUgYmxvY2tzICovCisjZGVmaW5lIFBSXzFEX0RVUF9GSUxFCQkweDAxMzAwMQorCisvKiBMaXN0IG9mIGZpbGVzIHNoYXJpbmcgZHVwbGljYXRlIGJsb2NrcyAqLworI2RlZmluZSBQUl8xRF9EVVBfRklMRV9MSVNUCTB4MDEzMDAyCisKKy8qIEZpbGUgc2hhcmluZyBibG9ja3Mgd2l0aCBmaWxlc3lzdGVtIG1ldGFkYXRhICAqLworI2RlZmluZSBQUl8xRF9TSEFSRV9NRVRBREFUQQkweDAxMzAwMworCisvKiBSZXBvcnQgb2YgaG93IG1hbnkgZHVwbGljYXRlL2JhZCBpbm9kZXMgKi8KKyNkZWZpbmUgUFJfMURfTlVNX0RVUF9JTk9ERVMJMHgwMTMwMDQKKworLyogRHVwbGljYXRlZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4gKi8KKyNkZWZpbmUgUFJfMURfRFVQX0JMT0NLU19ERUFMVAkweDAxMzAwNQorCisvKiBDbG9uZSBkdXBsaWNhdGUvYmFkIGJsb2Nrcz8gKi8KKyNkZWZpbmUgUFJfMURfQ0xPTkVfUVVFU1RJT04JMHgwMTMwMDYKKworLyogRGVsZXRlIGZpbGU/ICovCisjZGVmaW5lIFBSXzFEX0RFTEVURV9RVUVTVElPTgkweDAxMzAwNworCisvKiBDb3VsZG4ndCBjbG9uZSBmaWxlIChlcnJvcikgKi8KKyNkZWZpbmUgUFJfMURfQ0xPTkVfRVJST1IJMHgwMTMwMDgKKworLyoKKyAqIFBhc3MgMWUgLS0tIHJlYnVpbGRpbmcgZXh0ZW50IHRyZWVzCisgKi8KKy8qIFBhc3MgMWU6IFJlYnVpbGRpbmcgZXh0ZW50IHRyZWVzICovCisjZGVmaW5lIFBSXzFFX1BBU1NfSEVBREVSCQkweDAxNDAwMAorCisvKiBFcnJvciByZWhhc2ggZGlyZWN0b3J5ICovCisjZGVmaW5lIFBSXzFFX09QVElNSVpFX0VYVF9FUlIJCTB4MDE0MDAxCisKKy8qIFJlYnVpbGRpbmcgZXh0ZW50IHRyZWVzICovCisjZGVmaW5lIFBSXzFFX09QVElNSVpFX0VYVF9IRUFERVIJMHgwMTQwMDIKKworLyogUmVidWlsZGluZyBleHRlbnQgJWQgKi8KKyNkZWZpbmUgUFJfMUVfT1BUSU1JWkVfRVhUCQkweDAxNDAwMworCisvKiBSZWJ1aWxkaW5nIGV4dGVudCB0cmVlIGVuZCAqLworI2RlZmluZSBQUl8xRV9PUFRJTUlaRV9FWFRfRU5ECQkweDAxNDAwNAorCisvKiBJbnRlcm5hbCBlcnJvcjogZXh0ZW50IHRyZWUgZGVwdGggdG9vIGxhcmdlICovCisjZGVmaW5lIFBSXzFFX01BWF9FWFRFTlRfVFJFRV9ERVBUSAkweDAxNDAwNQorCisvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBzaG9ydGVyICovCisjZGVmaW5lIFBSXzFFX0NBTl9DT0xMQVBTRV9FWFRFTlRfVFJFRQkweDAxNDAwNgorCisvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBuYXJyb3dlciAqLworI2RlZmluZSBQUl8xRV9DQU5fTkFSUk9XX0VYVEVOVF9UUkVFCTB4MDE0MDA3CisKKy8qCisgKiBQYXNzIDIgZXJyb3JzCisgKi8KKworLyogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlICovCisjZGVmaW5lIFBSXzJfUEFTU19IRUFERVIJMHgwMjAwMDAKKworLyogQmFkIGlub2RlIG51bWJlciBmb3IgJy4nICovCisjZGVmaW5lIFBSXzJfQkFEX0lOT0RFX0RPVAkweDAyMDAwMQorCisvKiBEaXJlY3RvcnkgZW50cnkgaGFzIGJhZCBpbm9kZSBudW1iZXIgKi8KKyNkZWZpbmUgUFJfMl9CQURfSU5PCQkweDAyMDAwMgorCisvKiBEaXJlY3RvcnkgZW50cnkgaGFzIGRlbGV0ZWQgb3IgdW51c2VkIGlub2RlICovCisjZGVmaW5lIFBSXzJfVU5VU0VEX0lOT0RFCTB4MDIwMDAzCisKKy8qIERpcmVjdHJ5IGVudHJ5IGlzIGxpbmsgdG8gJy4nICovCisjZGVmaW5lIFBSXzJfTElOS19ET1QJCTB4MDIwMDA0CisKKy8qIERpcmVjdG9yeSBlbnRyeSBwb2ludHMgdG8gaW5vZGUgbm93IGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2sgKi8KKyNkZWZpbmUgUFJfMl9CQl9JTk9ERQkJMHgwMjAwMDUKKworLyogRGlyZWN0b3J5IGVudHJ5IGNvbnRhaW5zIGEgbGluayB0byBhIGRpcmVjdG9yeSAqLworI2RlZmluZSBQUl8yX0xJTktfRElSCQkweDAyMDAwNgorCisvKiBEaXJlY3RvcnkgZW50cnkgY29udGFpbnMgYSBsaW5rIHRvIHRoZSByb290IGRpcmVjdHJ5ICovCisjZGVmaW5lIFBSXzJfTElOS19ST09UCQkweDAyMDAwNworCisvKiBEaXJlY3RvcnkgZW50cnkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZSAqLworI2RlZmluZSBQUl8yX0JBRF9OQU1FCQkweDAyMDAwOAorCisvKiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMl9NSVNTSU5HX0RPVAkweDAyMDAwOQorCisvKiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICovCisjZGVmaW5lIFBSXzJfTUlTU0lOR19ET1RfRE9UCTB4MDIwMDBBCisKKy8qIEZpcnN0IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSBkb2Vzbid0IGNvbnRhaW4gJy4nICovCisjZGVmaW5lIFBSXzJfMVNUX05PVF9ET1QJMHgwMjAwMEIKKworLyogU2Vjb25kIGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSBkb2Vzbid0IGNvbnRhaW4gJy4uJyAqLworI2RlZmluZSBQUl8yXzJORF9OT1RfRE9UX0RPVAkweDAyMDAwQworCisvKiBpX2ZhZGRyIHNob3VsZCBiZSB6ZXJvICovCisjZGVmaW5lIFBSXzJfRkFERFJfWkVSTwkJMHgwMjAwMEQKKworLyogaV9maWxlX2FjbCBzaG91bGQgYmUgemVybyAqLworI2RlZmluZSBQUl8yX0ZJTEVfQUNMX1pFUk8JMHgwMjAwMEUKKworLyogaV9kaXJfYWNsIHNob3VsZCBiZSB6ZXJvICovCisjZGVmaW5lIFBSXzJfRElSX0FDTF9aRVJPCTB4MDIwMDBGCisKKy8qIGlfZnJhZyBzaG91bGQgYmUgemVybyAqLworI2RlZmluZSBQUl8yX0ZSQUdfWkVSTwkJMHgwMjAwMTAKKworLyogaV9mc2l6ZSBzaG91bGQgYmUgemVybyAqLworI2RlZmluZSBQUl8yX0ZTSVpFX1pFUk8JCTB4MDIwMDExCisKKy8qIGlub2RlIGhhcyBiYWQgbW9kZSAqLworI2RlZmluZSBQUl8yX0JBRF9NT0RFCQkweDAyMDAxMgorCisvKiBkaXJlY3RvcnkgY29ycnVwdGVkICovCisjZGVmaW5lIFBSXzJfRElSX0NPUlJVUFRFRAkweDAyMDAxMworCisvKiBmaWxlbmFtZSB0b28gbG9uZyAqLworI2RlZmluZSBQUl8yX0ZJTEVOQU1FX0xPTkcJMHgwMjAwMTQKKworLyogRGlyZWN0b3J5IGlub2RlIGhhcyBhIG1pc3NpbmcgYmxvY2sgKGhvbGUpICovCisjZGVmaW5lIFBSXzJfRElSRUNUT1JZX0hPTEUJMHgwMjAwMTUKKworLyogJy4nIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWQgKi8KKyNkZWZpbmUgUFJfMl9ET1RfTlVMTF9URVJNCTB4MDIwMDE2CisKKy8qICcuLicgaXMgbm90IE5VTEwgdGVybWluYXRlZCAqLworI2RlZmluZSBQUl8yX0RPVF9ET1RfTlVMTF9URVJNCTB4MDIwMDE3CisKKy8qIElsbGVnYWwgY2hhcmFjdGVyIGRldmljZSBpbiBpbm9kZSAqLworI2RlZmluZSBQUl8yX0JBRF9DSEFSX0RFVgkweDAyMDAxOAorCisvKiBJbGxlZ2FsIGJsb2NrIGRldmljZSBpbiBpbm9kZSAqLworI2RlZmluZSBQUl8yX0JBRF9CTE9DS19ERVYJMHgwMjAwMTkKKworLyogRHVwbGljYXRlICcuJyBlbnRyeSAqLworI2RlZmluZSBQUl8yX0RVUF9ET1QJCTB4MDIwMDFBCisKKy8qIER1cGxpY2F0ZSAnLi4nIGVudHJ5ICovCisjZGVmaW5lIFBSXzJfRFVQX0RPVF9ET1QJMHgwMjAwMUIKKworLyogSW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGZpbmQgZGlyX2luZm8gKi8KKyNkZWZpbmUgUFJfMl9OT19ESVJJTkZPCQkweDAyMDAxQworCisvKiBGaW5hbCByZWNfbGVuIGlzIHdyb25nICovCisjZGVmaW5lIFBSXzJfRklOQUxfUkVDTEVOCTB4MDIwMDFECisKKy8qIEVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZSAqLworI2RlZmluZSBQUl8yX0FMTE9DQVRFX0lDT1VOVAkweDAyMDAxRQorCisvKiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzICovCisjZGVmaW5lIFBSXzJfREJMSVNUX0lURVJBVEUJMHgwMjAwMUYKKworLyogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgKi8KKyNkZWZpbmUgUFJfMl9SRUFEX0RJUkJMT0NLCTB4MDIwMDIwCisKKy8qIEVycm9yIHdyaXRpbmcgZGlyZWN0b3J5IGJsb2NrICovCisjZGVmaW5lIFBSXzJfV1JJVEVfRElSQkxPQ0sJMHgwMjAwMjEKKworLyogRXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrICovCisjZGVmaW5lIFBSXzJfQUxMT0NfRElSQk9DSwkweDAyMDAyMgorCisvKiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgKi8KKyNkZWZpbmUgUFJfMl9ERUFMTE9DX0lOT0RFCTB4MDIwMDIzCisKKy8qIERpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGlzIGJpZy4gIFNwbGl0PyAqLworI2RlZmluZSBQUl8yX1NQTElUX0RPVAkJMHgwMjAwMjQKKworLyogSWxsZWdhbCBGSUZPICovCisjZGVmaW5lIFBSXzJfQkFEX0ZJRk8JCTB4MDIwMDI1CisKKy8qIElsbGVnYWwgc29ja2V0ICovCisjZGVmaW5lIFBSXzJfQkFEX1NPQ0tFVAkJMHgwMjAwMjYKKworLyogRGlyZWN0b3J5IGZpbGV0eXBlIG5vdCBzZXQgKi8KKyNkZWZpbmUgUFJfMl9TRVRfRklMRVRZUEUJMHgwMjAwMjcKKworLyogRGlyZWN0b3J5IGZpbGV0eXBlIGluY29ycmVjdCAqLworI2RlZmluZSBQUl8yX0JBRF9GSUxFVFlQRQkweDAyMDAyOAorCisvKiBEaXJlY3RvcnkgZmlsZXR5cGUgc2V0IHdoZW4gaXQgc2hvdWxkbid0IGJlICovCisjZGVmaW5lIFBSXzJfQ0xFQVJfRklMRVRZUEUJMHgwMjAwMjkKKworLyogRGlyZWN0b3J5IGZpbGVuYW1lIGNhbid0IGJlIHplcm8tbGVuZ3RoICAqLworI2RlZmluZSBQUl8yX05VTExfTkFNRQkJMHgwMjAwMzAKKworLyogSW52YWxpZCBzeW1saW5rICovCisjZGVmaW5lIFBSXzJfSU5WQUxJRF9TWU1MSU5LCTB4MDIwMDMxCisKKy8qIGlfZmlsZV9hY2wgKGV4dGVuZGVkIGF0dHJpYnV0ZSkgaXMgYmFkICovCisjZGVmaW5lIFBSXzJfRklMRV9BQ0xfQkFECTB4MDIwMDMyCisKKy8qIEZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBoYXMgbm8gc3VjaCBmbGFnIGluIHNiICovCisjZGVmaW5lIFBSXzJfRkVBVFVSRV9MQVJHRV9GSUxFUyAweDAyMDAzMworCisvKiBOb2RlIGluIEhUUkVFIGRpcmVjdG9yeSBub3QgcmVmZXJlbmNlZCAqLworI2RlZmluZSBQUl8yX0hUUkVFX05PVFJFRgkweDAyMDAzNAorCisvKiBOb2RlIGluIEhUUkVFIGRpcmVjdG9yeSByZWZlcmVuY2VkIHR3aWNlICovCisjZGVmaW5lIFBSXzJfSFRSRUVfRFVQUkVGCTB4MDIwMDM1CisKKy8qIE5vZGUgaW4gSFRSRUUgZGlyZWN0b3J5IGhhcyBiYWQgbWluIGhhc2ggKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9NSU5fSEFTSAkweDAyMDAzNgorCisvKiBOb2RlIGluIEhUUkVFIGRpcmVjdG9yeSBoYXMgYmFkIG1heCBoYXNoICovCisjZGVmaW5lIFBSXzJfSFRSRUVfTUFYX0hBU0gJMHgwMjAwMzcKKworLyogQ2xlYXIgaW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9DTEVBUgkweDAyMDAzOAorCisvKiBDbGVhciB0aGUgaHRyZWUgZmxhZyBmb3JjaWJseSAqLworLyogI2RlZmluZSBQUl8yX0hUUkVFX0ZDTFIJMHgwMjAwMzkgKi8KKworLyogQmFkIGJsb2NrIGluIGh0cmVlIGludGVyaW9yIG5vZGUgKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9CQURCTEsJMHgwMjAwM0EKKworLyogRXJyb3IgYWRqdXN0aW5nIEVBIHJlZmNvdW50ICovCisjZGVmaW5lIFBSXzJfQURKX0VBX1JFRkNPVU5UCTB4MDIwMDNCCisKKy8qIEludmFsaWQgSFRSRUUgcm9vdCBub2RlICovCisjZGVmaW5lIFBSXzJfSFRSRUVfQkFEX1JPT1QJMHgwMjAwM0MKKworLyogSW52YWxpZCBIVFJFRSBsaW1pdCAqLworI2RlZmluZSBQUl8yX0hUUkVFX0JBRF9MSU1JVAkweDAyMDAzRAorCisvKiBJbnZhbGlkIEhUUkVFIGNvdW50ICovCisjZGVmaW5lIFBSXzJfSFRSRUVfQkFEX0NPVU5UCTB4MDIwMDNFCisKKy8qIEhUUkVFIGludGVyaW9yIG5vZGUgaGFzIG91dC1vZi1vcmRlciBoYXNoZXMgaW4gdGFibGUgKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9IQVNIX09SREVSCTB4MDIwMDNGCisKKy8qIE5vZGUgaW4gSFRSRUUgZGlyZWN0b3J5IGhhcyBiYWQgZGVwdGggKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9CQURfREVQVEgJMHgwMjAwNDAKKworLyogRHVwbGljYXRlIGRpcmVjdG9yeSBlbnRyeSBmb3VuZCAqLworI2RlZmluZSBQUl8yX0RVUExJQ0FURV9ESVJFTlQJMHgwMjAwNDEKKworLyogTm9uLXVuaXF1ZSBmaWxlbmFtZSBmb3VuZCAqLworI2RlZmluZSBQUl8yX05PTl9VTklRVUVfRklMRQkweDAyMDA0MgorCisvKiBEdXBsaWNhdGUgZGlyZWN0b3J5IGVudHJ5IGZvdW5kICovCisjZGVmaW5lIFBSXzJfUkVQT1JUX0RVUF9ESVJFTlQJMHgwMjAwNDMKKworLyogaV9ibG9ja3NfaGkgc2hvdWxkIGJlIHplcm8gKi8KKyNkZWZpbmUgUFJfMl9CTE9DS1NfSElfWkVSTwkweDAyMDA0NAorCisvKiBVbmV4cGVjdGVkIEhUUkVFIGJsb2NrICovCisjZGVmaW5lIFBSXzJfVU5FWFBFQ1RFRF9IVFJFRV9CTE9DSwkweDAyMDA0NQorCisvKiBJbm9kZSBmb3VuZCBpbiBncm91cCB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldCAqLworI2RlZmluZSBQUl8yX0lOT1JFRl9CR19JTk9fVU5JTklUCTB4MDIwMDQ2CisKKy8qIElub2RlIGZvdW5kIGluIGdyb3VwIHVudXNlZCBpbm9kZXMgYXJlYSAqLworI2RlZmluZSBQUl8yX0lOT1JFRl9JTl9VTlVTRUQJCTB4MDIwMDQ3CisKKy8qIGlfZmlsZV9hY2xfaGkgc2hvdWxkIGJlIHplcm8gKi8KKyNkZWZpbmUgUFJfMl9JX0ZJTEVfQUNMX0hJX1pFUk8JCTB4MDIwMDQ4CisKKy8qIGh0cmVlIHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bSAqLworI2RlZmluZSBQUl8yX0hUUkVFX1JPT1RfQ1NVTV9JTlZBTElECTB4MDIwMDQ5CisKKy8qIGh0cmVlIG5vZGUgZmFpbHMgY2hlY2tzdW0gKi8KKyNkZWZpbmUgUFJfMl9IVFJFRV9OT0RFX0NTVU1fSU5WQUxJRAkweDAyMDA0QQorCisvKiBubyBzcGFjZSBpbiBsZWFmIGZvciBjaGVja3N1bSAqLworI2RlZmluZSBQUl8yX0xFQUZfTk9ERV9NSVNTSU5HX0NTVU0JMHgwMjAwNEMKKworLyogZGlyIGxlYWYgbm9kZSBwYXNzZXMgY2hlY2tzLCBidXQgZmFpbHMgY2hlY2tzdW0gKi8KKyNkZWZpbmUgUFJfMl9MRUFGX05PREVfT05MWV9DU1VNX0lOVkFMSUQJMHgwMjAwNEQKKworLyogYmFkIGlubGluZSBkaXJlY3Rvcnkgc2l6ZSAqLworI2RlZmluZSBQUl8yX0JBRF9JTkxJTkVfRElSX1NJWkUJMHgwMjAwNEUKKworLyogZml4aW5nIGlubGluZSBkaXIgc2l6ZSBmYWlsZWQgKi8KKyNkZWZpbmUgUFJfMl9GSVhfSU5MSU5FX0RJUl9GQUlMRUQJMHgwMjAwNEYKKworLyogRW5jcnlwdGVkIGRpcmVjdG9yeSBlbnRyeSBpcyB0b28gc2hvcnQgKi8KKyNkZWZpbmUgUFJfMl9CQURfRU5DUllQVEVEX05BTUUJCTB4MDIwMDUwCisKKy8qCisgKiBQYXNzIDMgZXJyb3JzCisgKi8KKworLyogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5ICovCisjZGVmaW5lIFBSXzNfUEFTU19IRUFERVIJCTB4MDMwMDAwCisKKy8qIFJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZCAqLworI2RlZmluZSBQUl8zX05PX1JPT1RfSU5PREUJCTB4MDMwMDAxCisKKy8qIE5vIHJvb20gaW4gbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0VYUEFORF9MRl9ESVIJCTB4MDMwMDAyCisKKy8qIFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAqLworI2RlZmluZSBQUl8zX1VOQ09OTkVDVEVEX0RJUgkJMHgwMzAwMDMKKworLyogL2xvc3QrZm91bmQgbm90IGZvdW5kICovCisjZGVmaW5lIFBSXzNfTk9fTEZfRElSCQkJMHgwMzAwMDQKKworLyogLi4gZW50cnkgaXMgaW5jb3JyZWN0ICovCisjZGVmaW5lIFBSXzNfQkFEX0RPVF9ET1QJCTB4MDMwMDA1CisKKy8qIEJhZCBvciBub24tZXhpc3RlbnQgL2xvc3QrZm91bmQuICBDYW5ub3QgcmVjb25uZWN0ICovCisjZGVmaW5lIFBSXzNfTk9fTFBGCQkJMHgwMzAwMDYKKworLyogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0NBTlRfRVhQQU5EX0xQRgkJMHgwMzAwMDcKKworLyogQ291bGQgbm90IHJlY29ubmVjdCBpbm9kZSAqLworI2RlZmluZSBQUl8zX0NBTlRfUkVDT05ORUNUCQkweDAzMDAwOAorCisvKiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0VSUl9GSU5EX0xQRgkJMHgwMzAwMDkKKworLyogRXJyb3IgaW4gZXh0MmZzX25ld19ibG9jayB3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0VSUl9MUEZfTkVXX0JMT0NLCQkweDAzMDAwQQorCisvKiBFcnJvciBpbiBleHQyZnNfbmV3X2lub2RlIHdoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kICovCisjZGVmaW5lIFBSXzNfRVJSX0xQRl9ORVdfSU5PREUJCTB4MDMwMDBCCisKKy8qIEVycm9yIGluIGV4dDJmc19uZXdfZGlyX2Jsb2NrIHdoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kICovCisjZGVmaW5lIFBSXzNfRVJSX0xQRl9ORVdfRElSX0JMT0NLCTB4MDMwMDBDCisKKy8qIEVycm9yIHdoaWxlIHdyaXRpbmcgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0VSUl9MUEZfV1JJVEVfQkxPQ0sJMHgwMzAwMEQKKworLyogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50ICovCisjZGVmaW5lIFBSXzNfQURKVVNUX0lOT0RFCQkweDAzMDAwRQorCisvKiBDb3VsZG4ndCBmaXggcGFyZW50IGRpcmVjdG9yeSAtLSBlcnJvciAqLworI2RlZmluZSBQUl8zX0ZJWF9QQVJFTlRfRVJSCQkweDAzMDAwRgorCisvKiBDb3VsZG4ndCBmaXggcGFyZW50IGRpcmVjdG9yeSAtLSBjb3VsZG4ndCBmaW5kIGl0ICovCisjZGVmaW5lIFBSXzNfRklYX1BBUkVOVF9OT0ZJTkQJCTB4MDMwMDEwCisKKy8qIEVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICovCisjZGVmaW5lIFBSXzNfQUxMT0NBVEVfSUJJVE1BUF9FUlJPUgkweDAzMDAxMQorCisvKiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAqLworI2RlZmluZSBQUl8zX0NSRUFURV9ST09UX0VSUk9SCQkweDAzMDAxMgorCisvKiBFcnJvciBjcmVhdGluZyBsb3N0IGFuZCBmb3VuZCBkaXJlY3RvcnkgKi8KKyNkZWZpbmUgUFJfM19DUkVBVEVfTFBGX0VSUk9SCQkweDAzMDAxMworCisvKiBSb290IGlub2RlIGlzIG5vdCBkaXJlY3Rvcnk7IGFib3J0aW5nICovCisjZGVmaW5lIFBSXzNfUk9PVF9OT1RfRElSX0FCT1JUCQkweDAzMDAxNAorCisvKiBDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgcm9vdCBpbm9kZS4gKi8KKyNkZWZpbmUgUFJfM19OT19ST09UX0lOT0RFX0FCT1JUCTB4MDMwMDE1CisKKy8qIEludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvICovCisjZGVmaW5lIFBSXzNfTk9fRElSSU5GTwkJCTB4MDMwMDE2CisKKy8qIExvc3QrZm91bmQgaXMgbm90IGEgZGlyZWN0b3J5ICovCisjZGVmaW5lIFBSXzNfTFBGX05PVERJUgkJCTB4MDMwMDE3CisKKy8qIExvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhICovCisjZGVmaW5lIFBSXzNfTFBGX0lOTElORV9EQVRBCQkweDAzMDAxOAorCisvKiBDYW5ub3QgYWxsb2NhdGUgbG9zdCtmb3VuZCAqLworI2RlZmluZSBQUl8zX0xQRl9OT19TUEFDRQkJMHgwMzAwMTkKKworLyogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyAqLworI2RlZmluZSBQUl8zX05PX1NQQUNFX1RPX1JFQ09WRVIJMHgwMzAwMUEKKworLyogTG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWQgKi8KKyNkZWZpbmUgUFJfM19MUEZfRU5DUllQVEVECQkweDAzMDAxQgorCisvKgorICogUGFzcyAzYSAtLS0gcmVoYXNoaW5nIGRpcmV0b3JpZXMKKyAqLworLyogUGFzcyAzYTogUmVpbmRleGluZyBkaXJlY3RvcmllcyAqLworI2RlZmluZSBQUl8zQV9QQVNTX0hFQURFUgkJMHgwMzEwMDAKKworLyogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3JpZXMgKi8KKyNkZWZpbmUgUFJfM0FfT1BUSU1JWkVfSVRFUgkJMHgwMzEwMDEKKworLyogRXJyb3IgcmVoYXNoIGRpcmVjdG9yeSAqLworI2RlZmluZSBQUl8zQV9PUFRJTUlaRV9ESVJfRVJSCQkweDAzMTAwMgorCisvKiBSZWhhc2hpbmcgZGlyIGhlYWRlciAqLworI2RlZmluZSBQUl8zQV9PUFRJTUlaRV9ESVJfSEVBREVSCTB4MDMxMDAzCisKKy8qIFJlaGFzaGluZyBkaXJlY3RvcnkgJWQgKi8KKyNkZWZpbmUgUFJfM0FfT1BUSU1JWkVfRElSCQkweDAzMTAwNAorCisvKiBSZWhhc2hpbmcgZGlyIGVuZCAqLworI2RlZmluZSBQUl8zQV9PUFRJTUlaRV9ESVJfRU5ECQkweDAzMTAwNQorCisvKiBQYXNzIDNCIGlzIHJlYWxseSBqdXN0IDFFICovCisKKy8qCisgKiBQYXNzIDQgZXJyb3JzCisgKi8KKworLyogUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzICovCisjZGVmaW5lIFBSXzRfUEFTU19IRUFERVIJCTB4MDQwMDAwCisKKy8qIFVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgKi8KKyNkZWZpbmUgUFJfNF9aRVJPX0xFTl9JTk9ERQkJMHgwNDAwMDEKKworLyogVW5hdHRhY2hlZCBpbm9kZSAqLworI2RlZmluZSBQUl80X1VOQVRUQUNIRURfSU5PREUJCTB4MDQwMDAyCisKKy8qIElub2RlIHJlZiBjb3VudCB3cm9uZyAqLworI2RlZmluZSBQUl80X0JBRF9SRUZfQ09VTlQJCTB4MDQwMDAzCisKKy8qIEluY29uc2lzdGVudCBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiBjYWNoZWQgKi8KKyNkZWZpbmUgUFJfNF9JTkNPTlNJU1RFTlRfQ09VTlQJCTB4MDQwMDA0CisKKy8qCisgKiBQYXNzIDUgZXJyb3JzCisgKi8KKworLyogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uICovCisjZGVmaW5lIFBSXzVfUEFTU19IRUFERVIJCTB4MDUwMDAwCisKKy8qIFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAqLworI2RlZmluZSBQUl81X0lOT0RFX0JNQVBfUEFERElORwkJMHgwNTAwMDEKKworLyogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuICovCisjZGVmaW5lIFBSXzVfQkxPQ0tfQk1BUF9QQURESU5HCQkweDA1MDAwMgorCisvKiBCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXMgaGVhZGVyICovCisjZGVmaW5lIFBSXzVfQkxPQ0tfQklUTUFQX0hFQURFUgkweDA1MDAwMworCisvKiBCbG9jayBub3QgdXNlZCwgYnV0IG1hcmtlZCBpbiBiaXRtYXAgKi8KKyNkZWZpbmUgUFJfNV9CTE9DS19VTlVTRUQJCTB4MDUwMDA0CisKKy8qIEJsb2NrIHVzZWQsIGJ1dCBub3QgbWFya2VkIHVzZWQgaW4gYml0bWFwICovCisjZGVmaW5lIFBSXzVfQkxPQ0tfVVNFRAkJCTB4MDUwMDA1CisKKy8qIEJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlcyBlbmQgKi8KKyNkZWZpbmUgUFJfNV9CTE9DS19CSVRNQVBfRU5ECQkweDA1MDAwNgorCisvKiBJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXMgaGVhZGVyICovCisjZGVmaW5lIFBSXzVfSU5PREVfQklUTUFQX0hFQURFUgkweDA1MDAwNworCisvKiBJbm9kZSBub3QgdXNlZCwgYnV0IG1hcmtlZCBpbiBiaXRtYXAgKi8KKyNkZWZpbmUgUFJfNV9JTk9ERV9VTlVTRUQJCTB4MDUwMDA4CisKKy8qIElub2RlIHVzZWQsIGJ1dCBub3QgbWFya2VkIHVzZWQgaW4gYml0bWFwICovCisjZGVmaW5lIFBSXzVfSU5PREVfVVNFRAkJCTB4MDUwMDA5CisKKy8qIElub2RlIGJpdG1hcCBkaWZmZXJlbmNlcyBlbmQgKi8KKyNkZWZpbmUgUFJfNV9JTk9ERV9CSVRNQVBfRU5ECQkweDA1MDAwQQorCisvKiBGcmVlIGlub2RlcyBjb3VudCBmb3IgZ3JvdXAgd3JvbmcgKi8KKyNkZWZpbmUgUFJfNV9GUkVFX0lOT0RFX0NPVU5UX0dST1VQCTB4MDUwMDBCCisKKy8qIERpcmVjdG9yaWVzIGNvdW50IGZvciBncm91cCB3cm9uZyAqLworI2RlZmluZSBQUl81X0ZSRUVfRElSX0NPVU5UX0dST1VQCTB4MDUwMDBDCisKKy8qIEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICovCisjZGVmaW5lIFBSXzVfRlJFRV9JTk9ERV9DT1VOVAkJMHgwNTAwMEQKKworLyogRnJlZSBibG9ja3MgY291bnQgZm9yIGdyb3VwIHdyb25nICovCisjZGVmaW5lIFBSXzVfRlJFRV9CTE9DS19DT1VOVF9HUk9VUAkweDA1MDAwRQorCisvKiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAqLworI2RlZmluZSBQUl81X0ZSRUVfQkxPQ0tfQ09VTlQJCTB4MDUwMDBGCisKKy8qIFByb2dyYW1taW5nIGVycm9yOiBiaXRtYXAgZW5kcG9pbnRzIGRvbid0IG1hdGNoICovCisjZGVmaW5lIFBSXzVfQk1BUF9FTkRQT0lOVFMJCTB4MDUwMDEwCisKKy8qIEludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKi8KKyNkZWZpbmUgUFJfNV9GVURHRV9CSVRNQVBfRVJST1IJCTB4MDUwMDExCisKKy8qIEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwICovCisjZGVmaW5lIFBSXzVfQ09QWV9JQklUTUFQX0VSUk9SCQkweDA1MDAxMgorCisvKiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcCAqLworI2RlZmluZSBQUl81X0NPUFlfQkJJVE1BUF9FUlJPUgkJMHgwNTAwMTMKKworLyogQmxvY2sgcmFuZ2Ugbm90IHVzZWQsIGJ1dCBtYXJrZWQgaW4gYml0bWFwICovCisjZGVmaW5lIFBSXzVfQkxPQ0tfUkFOR0VfVU5VU0VECQkweDA1MDAxNAorCisvKiBCbG9jayByYW5nZSB1c2VkLCBidXQgbm90IG1hcmtlZCB1c2VkIGluIGJpdG1hcCAqLworI2RlZmluZSBQUl81X0JMT0NLX1JBTkdFX1VTRUQJCTB4MDUwMDE1CisKKy8qIElub2RlIHJhbmdlIG5vdCB1c2VkLCBidXQgbWFya2VkIGluIGJpdG1hcCAqLworI2RlZmluZSBQUl81X0lOT0RFX1JBTkdFX1VOVVNFRAkJMHgwNTAwMTYKKworLyogSW5vZGUgcmFuZ2V1c2VkLCBidXQgbm90IG1hcmtlZCB1c2VkIGluIGJpdG1hcCAqLworI2RlZmluZSBQUl81X0lOT0RFX1JBTkdFX1VTRUQJCTB4MDUwMDE3CisKKy8qIEJsb2NrIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVCAqLworI2RlZmluZSBQUl81X0JMT0NLX1VOSU5JVAkJMHgwNTAwMTgKKworLyogSW5vZGUgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgSU5PREVfVU5JTklUICovCisjZGVmaW5lIFBSXzVfSU5PREVfVU5JTklUCQkweDA1MDAxOQorCisvKiBJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggKi8KKyNkZWZpbmUgUFJfNV9JTk9ERV9CSVRNQVBfQ1NVTV9JTlZBTElECTB4MDUwMDFBCisKKy8qIEJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCAqLworI2RlZmluZSBQUl81X0JMT0NLX0JJVE1BUF9DU1VNX0lOVkFMSUQJMHgwNTAwMUIKKworLyoKKyAqIFBvc3QtUGFzcyA1IGVycm9ycworICovCisKKy8qIFJlY3JlYXRlIHRoZSBqb3VybmFsIGlmIEUyRl9GTEFHX0pPVVJOQUxfSU5PREUgZmxhZyBpcyBzZXQgKi8KKyNkZWZpbmUgUFJfNl9SRUNSRUFURV9KT1VSTkFMCQkweDA2MDAwMQorCisvKiBVcGRhdGUgcXVvdGEgaW5mb3JtYXRpb24gaWYgaXQgaXMgaW5jb25zaXN0ZW50ICovCisjZGVmaW5lIFBSXzZfVVBEQVRFX1FVT1RBUwkJMHgwNjAwMDIKKworLyogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvICovCisjZGVmaW5lIFBSXzZfU0VUX0JHX0NIRUNLU1VNCQkweDA2MDAwMworCisvKiBFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm8gKi8KKyNkZWZpbmUgUFJfNl9GTFVTSF9GSUxFU1lTVEVNCQkweDA2MDAwNAorCisvKiBFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2UgKi8KKyNkZWZpbmUgUFJfNl9JT19GTFVTSAkJCTB4MDYwMDA1CisKKy8qIEVycm9yIHVwZGF0aW5nIHF1b3RhIGluZm9ybWF0aW9uICovCisjZGVmaW5lIFBSXzZfV1JJVEVfUVVPVEFTCQkweDA2MDAwNgorCisKKy8qCisgKiBGdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAqLworaW50IGZpeF9wcm9ibGVtKGUyZnNja190IGN0eCwgcHJvYmxlbV90IGNvZGUsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpOworaW50IGVuZF9wcm9ibGVtX2xhdGNoKGUyZnNja190IGN0eCwgaW50IG1hc2spOworaW50IHNldF9sYXRjaF9mbGFncyhpbnQgbWFzaywgaW50IHNldGZsYWdzLCBpbnQgY2xlYXJmbGFncyk7CitpbnQgZ2V0X2xhdGNoX2ZsYWdzKGludCBtYXNrLCBpbnQgKnZhbHVlKTsKK3ZvaWQgY2xlYXJfcHJvYmxlbV9jb250ZXh0KHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpOworCisvKiBtZXNzYWdlLmMgKi8KK3ZvaWQgcHJpbnRfZTJmc2NrX21lc3NhZ2UoRklMRSAqZiwgZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICptc2csCisJCQkgIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgsIGludCBmaXJzdCwKKwkJCSAgaW50IHJlY3Vyc2UpOworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL3Byb2JsZW1QLmggYi9lMmZzcHJvZ3MvZTJmc2NrL3Byb2JsZW1QLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk0NGNkNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svcHJvYmxlbVAuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogcHJvYmxlbVAuaCAtLS0gUHJpdmF0ZSBoZWFkZXIgZmlsZSBmb3IgZml4X3Byb2JsZW0oKQorICoKKyAqIENvcHlyaWdodCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKK3N0cnVjdCBlMmZzY2tfcHJvYmxlbSB7CisJcHJvYmxlbV90CWUycF9jb2RlOworCWNvbnN0IGNoYXIgKgllMnBfZGVzY3JpcHRpb247CisJY2hhcgkJcHJvbXB0OworCWludAkJZmxhZ3M7CisJcHJvYmxlbV90CXNlY29uZF9jb2RlOworCWludAkJY291bnQ7CisJaW50CQltYXhfY291bnQ7Cit9OworCitzdHJ1Y3QgbGF0Y2hfZGVzY3IgeworCWludAkJbGF0Y2hfY29kZTsKKwlwcm9ibGVtX3QJcXVlc3Rpb247CisJcHJvYmxlbV90CWVuZF9tZXNzYWdlOworCWludAkJZmxhZ3M7Cit9OworCisjZGVmaW5lIFBSX1BSRUVOX09LCTB4MDAwMDAxIC8qIERvbid0IG5lZWQgdG8gZG8gcHJlZW5oYWx0ICovCisjZGVmaW5lIFBSX05PX09LCTB4MDAwMDAyIC8qIElmIHVzZXIgYW5zd2VycyBubywgZG9uJ3QgbWFrZSBmcyBpbnZhbGlkICovCisjZGVmaW5lIFBSX05PX0RFRkFVTFQJMHgwMDAwMDQgLyogRGVmYXVsdCB0byBubyAqLworI2RlZmluZSBQUl9NU0dfT05MWQkweDAwMDAwOCAvKiBQcmludCBtZXNzYWdlIG9ubHkgKi8KKworLyogQml0IHBvc2l0aW9ucyAweDAwMGZmMCBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBQUl9MQVRDSCBmbGFncyAqLworCisjZGVmaW5lIFBSX0ZBVEFMCTB4MDAxMDAwIC8qIEZhdGFsIGVycm9yICovCisjZGVmaW5lIFBSX0FGVEVSX0NPREUJMHgwMDIwMDAgLyogQWZ0ZXIgYXNraW5nIHRoZSBmaXJzdCBxdWVzdGlvbiwgKi8KKwkJCQkgLyogYXNrIGFub3RoZXIgKi8KKyNkZWZpbmUgUFJfUFJFRU5fTk9NU0cJMHgwMDQwMDAgLyogRG9uJ3QgcHJpbnQgYSBtZXNzYWdlIGlmIHdlJ3JlIHByZWVuaW5nICovCisjZGVmaW5lIFBSX05PQ09MTEFURQkweDAwODAwMCAvKiBEb24ndCBjb2xsYXRlIGFuc3dlcnMgZm9yIHRoaXMgbGF0Y2ggKi8KKyNkZWZpbmUgUFJfTk9fTk9NU0cJMHgwMTAwMDAgLyogRG9uJ3QgcHJpbnQgYSBtZXNzYWdlIGlmIGUyZnNjayAtbiAqLworI2RlZmluZSBQUl9QUkVFTl9OTwkweDAyMDAwMCAvKiBVc2UgTm8gYXMgYW4gYW5zd2VyIGlmIHByZWVuaW5nICovCisjZGVmaW5lIFBSX1BSRUVOX05PSERSCTB4MDQwMDAwIC8qIERvbid0IHByaW50IHRoZSBwcmVlbiBoZWFkZXIgKi8KKyNkZWZpbmUgUFJfQ09ORklHCTB4MDgwMDAwIC8qIFRoaXMgcHJvYmxlbSBoYXMgYmVlbiBjdXN0b21pemVkCisJCQkJICAgIGZyb20gdGhlIGNvbmZpZyBmaWxlICovCisjZGVmaW5lIFBSX0ZPUkNFX05PCTB4MTAwMDAwIC8qIEZvcmNlIHRoZSBhbnN3ZXIgdG8gYmUgbm8gKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcXVvdGEuYyBiL2UyZnNwcm9ncy9lMmZzY2svcXVvdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTgwNTNiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9xdW90YS5jCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBxdW90YS5jIC0tLSBjb2RlIGZvciBoYW5kbGluZyBleHQ0IHF1b3RhIGlub2RlcworICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2RlZmluZSBNTlRfRkwgKE1TX01HQ19WQUwgfCBNU19SRE9OTFkpCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJlMmZzY2suaCIKKyNpbmNsdWRlICJwcm9ibGVtLmgiCisKK3N0YXRpYyB2b2lkIG1vdmVfcXVvdGFfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZnJvbV9pbm8sCisJCQkgICAgIGV4dDJfaW5vX3QgdG9faW5vLCBlbnVtIHF1b3RhX3R5cGUgcXR5cGUpCit7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCXFmX25hbWVbUVVPVEFfTkFNRV9MRU5dOworCisJLyogV2UgbmVlZCB0aGUgaW5vZGUgYml0bWFwIHRvIGJlIGxvYWRlZCAqLworCWlmIChleHQyZnNfcmVhZF9iaXRtYXBzKGZzKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGZyb21faW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfaW5vZGUiLCByZXR2YWwsICIlcyIsCisJCQlfKCJpbiBtb3ZlX3F1b3RhX2lub2RlIikpOworCQlyZXR1cm47CisJfQorCisJaW5vZGUuaV9saW5rc19jb3VudCA9IDE7CisJaW5vZGUuaV9tb2RlID0gTElOVVhfU19JRlJFRyB8IDA2MDA7CisJaW5vZGUuaV9mbGFncyA9IEVYVDJfSU1NVVRBQkxFX0ZMOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKQorCQlpbm9kZS5pX2ZsYWdzIHw9IEVYVDRfRVhURU5UU19GTDsKKworCXJldHZhbCA9IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZnMsIHRvX2lubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImV4dDJmc193cml0ZV9uZXdfaW5vZGUiLCByZXR2YWwsICIlcyIsCisJCQlfKCJpbiBtb3ZlX3F1b3RhX2lub2RlIikpOworCQlyZXR1cm47CisJfQorCisJLyogdW5saW5rIHRoZSBvbGQgaW5vZGUgKi8KKwlxdW90YV9nZXRfcWZfbmFtZShxdHlwZSwgUUZNVF9WRlNfVjEsIHFmX25hbWUpOworCWV4dDJmc191bmxpbmsoZnMsIEVYVDJfUk9PVF9JTk8sIHFmX25hbWUsIGZyb21faW5vLCAwKTsKKwlleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMoZnMsIGZyb21faW5vLCAtMSk7CisJLyogQ2xlYXIgb3V0IHRoZSBvcmlnaW5hbCBpbm9kZSBpbiB0aGUgaW5vZGUtdGFibGUgYmxvY2suICovCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSk7CisJZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBmcm9tX2lubywgJmlub2RlKTsKK30KKwordm9pZCBlMmZzY2tfaGlkZV9xdW90YShlMmZzY2tfdCBjdHgpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gY3R4LT5mcy0+c3VwZXI7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCWV4dDJfZmlsc3lzCQlmcyA9IGN0eC0+ZnM7CisJZW51bSBxdW90YV90eXBlIHF0eXBlOworCWV4dDJfaW5vX3QgcXVvdGFfaW5vOworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworCWlmICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgfHwKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9xdW90YShzYikpCisJCXJldHVybjsKKworCWZvciAocXR5cGUgPSAwOyBxdHlwZSA8IE1BWFFVT1RBUzsgcXR5cGUrKykgeworCQlwY3R4LmlubyA9ICpxdW90YV9zYl9pbnVtcChzYiwgcXR5cGUpOworCQlxdW90YV9pbm8gPSBxdW90YV90eXBlMmludW0ocXR5cGUsIGZzLT5zdXBlcik7CisJCWlmIChwY3R4LmlubyAmJiAocGN0eC5pbm8gIT0gcXVvdGFfaW5vKSAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX0hJREVfUVVPVEEsICZwY3R4KSkgeworCQkJbW92ZV9xdW90YV9pbm9kZShmcywgcGN0eC5pbm8sIHF1b3RhX2lubywgcXR5cGUpOworCQkJKnF1b3RhX3NiX2ludW1wKHNiLCBxdHlwZSkgPSBxdW90YV9pbm87CisJCX0KKwl9CisKKwlyZXR1cm47Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL3JlYWRhaGVhZC5jIGIvZTJmc3Byb2dzL2UyZnNjay9yZWFkYWhlYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODYwZjJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay9yZWFkYWhlYWQuYwpAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIHJlYWRhaGVhZC5jIC0tIFByZWZldGNoIGZpbGVzeXN0ZW0gbWV0YWRhdGEgdG8gc3BlZWQgdXAgZnNjay4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgT3JhY2xlLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZTJmc2NrLmgiCisKKyN1bmRlZiBERUJVRworCisjaWZkZWYgREVCVUcKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikgIGRvIHtwcmludGYoZiwgIyMgYSk7IGZmbHVzaChzdGRvdXQpOyB9IHdoaWxlICgwKQorI2Vsc2UKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikKKyNlbmRpZgorCitzdHJ1Y3QgcmVhZF9kYmxpc3QgeworCWVycmNvZGVfdCBlcnI7CisJYmxrNjRfdCBydW5fc3RhcnQ7CisJYmxrNjRfdCBydW5fbGVuOworCWludCBmbGFnczsKK307CisKK3N0YXRpYyBpbnQgcmVhZGFoZWFkX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYiwKKwkJCSAgICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHJlYWRfZGJsaXN0ICpwciA9IHByaXZfZGF0YTsKKwllMl9ibGtjbnRfdCBjb3VudCA9IChwci0+ZmxhZ3MgJiBFMkZTQ0tfUkFfREJMSVNUX0lHTk9SRV9CTE9DS0NOVCA/CisJCQkgICAgIDEgOiBkYi0+YmxvY2tjbnQpOworCisJaWYgKCFwci0+cnVuX2xlbiB8fCBkYi0+YmxrICE9IHByLT5ydW5fc3RhcnQgKyBwci0+cnVuX2xlbikgeworCQlpZiAocHItPnJ1bl9sZW4pIHsKKwkJCXByLT5lcnIgPSBpb19jaGFubmVsX2NhY2hlX3JlYWRhaGVhZChmcy0+aW8sCisJCQkJCQkJICAgICBwci0+cnVuX3N0YXJ0LAorCQkJCQkJCSAgICAgcHItPnJ1bl9sZW4pOworCQkJZGJnX3ByaW50ZigicmVhZGFoZWFkIHN0YXJ0PSVsbHUgbGVuPSVsbHUgZXJyPSVkXG4iLAorCQkJCSAgIHByLT5ydW5fc3RhcnQsIHByLT5ydW5fbGVuLAorCQkJCSAgIChpbnQpcHItPmVycik7CisJCX0KKwkJcHItPnJ1bl9zdGFydCA9IGRiLT5ibGs7CisJCXByLT5ydW5fbGVuID0gMDsKKwl9CisJcHItPnJ1bl9sZW4gKz0gY291bnQ7CisKKwlyZXR1cm4gcHItPmVyciA/IERCTElTVF9BQk9SVCA6IDA7Cit9CisKK2VycmNvZGVfdCBlMmZzY2tfcmVhZGFoZWFkX2RibGlzdChleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLAorCQkJCSAgZXh0Ml9kYmxpc3QgZGJsaXN0LAorCQkJCSAgdW5zaWduZWQgbG9uZyBsb25nIHN0YXJ0LAorCQkJCSAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IHJlYWRfZGJsaXN0IHByOworCisJZGJnX3ByaW50ZigiJXM6IGZsYWdzPTB4JXhcbiIsIF9fZnVuY19fLCBmbGFncyk7CisJaWYgKGZsYWdzICYgfkUyRlNDS19SQV9EQkxJU1RfQUxMX0ZMQUdTKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJbWVtc2V0KCZwciwgMCwgc2l6ZW9mKHByKSk7CisJcHIuZmxhZ3MgPSBmbGFnczsKKwllcnIgPSBleHQyZnNfZGJsaXN0X2l0ZXJhdGUzKGRibGlzdCwgcmVhZGFoZWFkX2Rpcl9ibG9jaywgc3RhcnQsCisJCQkJICAgICBjb3VudCwgJnByKTsKKwlpZiAocHIuZXJyKQorCQlyZXR1cm4gcHIuZXJyOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlpZiAocHIucnVuX2xlbikKKwkJZXJyID0gaW9fY2hhbm5lbF9jYWNoZV9yZWFkYWhlYWQoZnMtPmlvLCBwci5ydW5fc3RhcnQsCisJCQkJCQkgcHIucnVuX2xlbik7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgZXJyY29kZV90IGUyZnNja19yZWFkYWhlYWRfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgZXh0MmZzX2Jsb2NrX2JpdG1hcCByYV9tYXApCit7CisJYmxrNjRfdCBzdGFydCwgZW5kLCBvdXQ7CisJZXJyY29kZV90IGVycjsKKworCXN0YXJ0ID0gMTsKKwllbmQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSAxOworCisJZXJyID0gZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIocmFfbWFwLCBzdGFydCwgZW5kLCAmb3V0KTsKKwl3aGlsZSAoZXJyID09IDApIHsKKwkJc3RhcnQgPSBvdXQ7CisJCWVyciA9IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fYmxvY2tfYml0bWFwMihyYV9tYXAsIHN0YXJ0LCBlbmQsCisJCQkJCQkJICAgJm91dCk7CisJCWlmIChlcnIgPT0gRU5PRU5UKSB7CisJCQlvdXQgPSBlbmQ7CisJCQllcnIgPSAwOworCQl9IGVsc2UgaWYgKGVycikKKwkJCWJyZWFrOworCisJCWVyciA9IGlvX2NoYW5uZWxfY2FjaGVfcmVhZGFoZWFkKGZzLT5pbywgc3RhcnQsIG91dCAtIHN0YXJ0KTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCQlzdGFydCA9IG91dDsKKwkJZXJyID0gZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIocmFfbWFwLCBzdGFydCwgZW5kLAorCQkJCQkJCSAgJm91dCk7CisJfQorCisJaWYgKGVyciA9PSBFTk9FTlQpCisJCWVyciA9IDA7CisKKwlyZXR1cm4gZXJyOworfQorCisvKiBUcnkgbm90IHRvIHNwZXcgYml0bWFwIHJhbmdlIGVycm9ycyBmb3IgcmVhZGFoZWFkICovCitzdGF0aWMgZXJyY29kZV90IG1hcmtfYm1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIG1hcCwKKwkJCQkgYmxrNjRfdCBibGssIHVuc2lnbmVkIGludCBudW0pCit7CisJaWYgKGJsayA+PSBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9zdGFydChtYXApICYmCisJICAgIGJsayArIG51bSA8PSBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9lbmQobWFwKSkKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihtYXAsIGJsaywgbnVtKTsKKwllbHNlCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgbWFya19ibWFwKGV4dDJmc19ibG9ja19iaXRtYXAgbWFwLCBibGs2NF90IGJsaykKK3sKKwlpZiAoYmxrID49IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3N0YXJ0KG1hcCkgJiYKKwkgICAgYmxrIDw9IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX2VuZChtYXApKQorCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKG1hcCwgYmxrKTsKKwllbHNlCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBlMmZzY2tfcmVhZGFoZWFkKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MsIGRncnBfdCBzdGFydCwKKwkJCSAgIGRncnBfdCBuZ3JvdXBzKQoreworCWJsazY0X3QJCXN1cGVyLCBvbGRfZ2R0LCBuZXdfZ2R0OworCWJsa190CQlibG9ja3M7CisJZGdycF90CQlpOworCWV4dDJmc19ibG9ja19iaXRtYXAJCXJhX21hcCA9IE5VTEw7CisJZGdycF90CQllbmQgPSBzdGFydCArIG5ncm91cHM7CisJZXJyY29kZV90CWVyciA9IDA7CisKKwlkYmdfcHJpbnRmKCIlczogZmxhZ3M9MHgleCBzdGFydD0lZCBncm91cHM9JWRcbiIsIF9fZnVuY19fLCBmbGFncywKKwkJICAgc3RhcnQsIG5ncm91cHMpOworCWlmIChmbGFncyAmIH5FMkZTQ0tfUkVBREFfQUxMX0ZMQUdTKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJaWYgKGVuZCA+IGZzLT5ncm91cF9kZXNjX2NvdW50KQorCQllbmQgPSBmcy0+Z3JvdXBfZGVzY19jb3VudDsKKworCWlmIChmbGFncyA9PSAwKQorCQlyZXR1cm4gMDsKKworCWVyciA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoZnMsICJyZWFkYWhlYWQgYml0bWFwIiwKKwkJCQkJICAgJnJhX21hcCk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKwkJZXJyID0gZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihmcywgaSwgJnN1cGVyLCAmb2xkX2dkdCwKKwkJCQkJCSZuZXdfZ2R0LCAmYmxvY2tzKTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWlmIChmbGFncyAmIEUyRlNDS19SRUFEQV9TVVBFUikgeworCQkJZXJyID0gbWFya19ibWFwKHJhX21hcCwgc3VwZXIpOworCQkJaWYgKGVycikKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChmbGFncyAmIEUyRlNDS19SRUFEQV9HRFQpIHsKKwkJCWVyciA9IG1hcmtfYm1hcF9yYW5nZShyYV9tYXAsCisJCQkJCSAgICAgIG9sZF9nZHQgPyBvbGRfZ2R0IDogbmV3X2dkdCwKKwkJCQkJICAgICAgYmxvY2tzKTsKKwkJCWlmIChlcnIpCisJCQkJYnJlYWs7CisJCX0KKworCQlpZiAoKGZsYWdzICYgRTJGU0NLX1JFQURBX0JCSVRNQVApICYmCisJCSAgICAhZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGksIEVYVDJfQkdfQkxPQ0tfVU5JTklUKSAmJgorCQkgICAgZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBpKSA8CisJCQkJZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXApIHsKKwkJCXN1cGVyID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpOworCQkJZXJyID0gbWFya19ibWFwKHJhX21hcCwgc3VwZXIpOworCQkJaWYgKGVycikKKwkJCQlicmVhazsKKwkJfQorCisJCWlmICgoZmxhZ3MgJiBFMkZTQ0tfUkVBREFfSUJJVE1BUCkgJiYKKwkJICAgICFleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpICYmCisJCSAgICBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGkpIDwKKwkJCQlmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCkgeworCQkJc3VwZXIgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCQllcnIgPSBtYXJrX2JtYXAocmFfbWFwLCBzdXBlcik7CisJCQlpZiAoZXJyKQorCQkJCWJyZWFrOworCQl9CisKKwkJaWYgKChmbGFncyAmIEUyRlNDS19SRUFEQV9JVEFCTEUpICYmCisJCSAgICBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGkpIDwKKwkJCQlmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCkgeworCQkJc3VwZXIgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKTsKKwkJCWJsb2NrcyA9IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwIC0KKwkJCQkgKGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKSAqCisJCQkJICBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSAvIGZzLT5ibG9ja3NpemUpOworCQkJZXJyID0gbWFya19ibWFwX3JhbmdlKHJhX21hcCwgc3VwZXIsIGJsb2Nrcyk7CisJCQlpZiAoZXJyKQorCQkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKCFlcnIpCisJCWVyciA9IGUyZnNja19yZWFkYWhlYWRfYml0bWFwKGZzLCByYV9tYXApOworCisJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKHJhX21hcCk7CisJcmV0dXJuIGVycjsKK30KKworaW50IGUyZnNja19jYW5fcmVhZGFoZWFkKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdCBlcnI7CisKKwllcnIgPSBpb19jaGFubmVsX2NhY2hlX3JlYWRhaGVhZChmcy0+aW8sIDAsIDEpOworCWRiZ19wcmludGYoIiVzOiBzdXBwPSVkXG4iLCBfX2Z1bmNfXywgZXJyICE9IEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRCk7CisJcmV0dXJuIGVyciAhPSBFWFQyX0VUX09QX05PVF9TVVBQT1JURUQ7Cit9CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBlMmZzY2tfZ3Vlc3NfcmVhZGFoZWFkKGV4dDJfZmlsc3lzIGZzKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyBndWVzczsKKworCS8qCisJICogVGhlIG9wdGltYWwgcmVhZGFoZWFkIHNpemVzIHdlcmUgZXhwZXJpbWVudGFsbHkgZGV0ZXJtaW5lZCBieQorCSAqIGRqd29uZyBpbiBBdWd1c3QgMjAxNC4gIFNldHRpbmcgdGhlIFJBIHNpemUgdG8gdHdvIGJsb2NrIGdyb3VwcycKKwkgKiB3b3J0aCBvZiBpbm9kZSB0YWJsZSBibG9ja3Mgc2VlbXMgdG8geWllbGQgdGhlIGxhcmdlc3QgcmVkdWN0aW9ucworCSAqIGluIGUyZnNjayBydW50aW1lLgorCSAqLworCWd1ZXNzID0gMlVMTCAqIGZzLT5ibG9ja3NpemUgKiBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCS8qIERpc2FibGUgUkEgaWYgaXQnZCB1c2UgbW9yZSAxLzUwdGggb2YgUkFNLiAqLworCWlmIChnZXRfbWVtb3J5X3NpemUoKSA+IChndWVzcyAqIDUwKSkKKwkJcmV0dXJuIGd1ZXNzIC8gMTAyNDsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9yZWNvdmVyeS5jIGIvZTJmc3Byb2dzL2UyZnNjay9yZWNvdmVyeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjEyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3JlY292ZXJ5LmMKQEAgLTAsMCArMSw4ODYgQEAKKy8qCisgKiBsaW51eC9mcy9qYmQyL3JlY292ZXJ5LmMKKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXBoZW4gQy4gVHdlZWRpZSA8c2N0QHJlZGhhdC5jb20+LCAxOTk5CisgKgorICogQ29weXJpZ2h0IDE5OTktMjAwMCBSZWQgSGF0IFNvZnR3YXJlIC0tLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIExpbnV4IGtlcm5lbCBhbmQgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIKKyAqIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMiwgb3IgYXQgeW91cgorICogb3B0aW9uLCBhbnkgbGF0ZXIgdmVyc2lvbiwgaW5jb3Jwb3JhdGVkIGhlcmVpbiBieSByZWZlcmVuY2UuCisgKgorICogSm91cm5hbCByZWNvdmVyeSByb3V0aW5lcyBmb3IgdGhlIGdlbmVyaWMgZmlsZXN5c3RlbSBqb3VybmFsaW5nIGNvZGU7CisgKiBwYXJ0IG9mIHRoZSBleHQyZnMgam91cm5hbGluZyBzeXN0ZW0uCisgKi8KKworI2lmbmRlZiBfX0tFUk5FTF9fCisjaW5jbHVkZSAiamZzX3VzZXIuaCIKKyNlbHNlCisjaW5jbHVkZSA8bGludXgvdGltZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGludXgvamJkMi5oPgorI2luY2x1ZGUgPGxpbnV4L2Vycm5vLmg+CisjaW5jbHVkZSA8bGludXgvY3JjMzIuaD4KKyNpbmNsdWRlIDxsaW51eC9ibGtkZXYuaD4KKyNlbmRpZgorCisvKgorICogTWFpbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2dyZXNzIG9mIHRoZSByZWNvdmVyeSBqb2IsIHNvIHRoYXQKKyAqIHRoZSBkaWZmZXJlbnQgcGFzc2VzIGNhbiBjYXJyeSBpbmZvcm1hdGlvbiBiZXR3ZWVuIHRoZW0uCisgKi8KK3N0cnVjdCByZWNvdmVyeV9pbmZvCit7CisJdGlkX3QJCXN0YXJ0X3RyYW5zYWN0aW9uOworCXRpZF90CQllbmRfdHJhbnNhY3Rpb247CisKKwlpbnQJCW5yX3JlcGxheXM7CisJaW50CQlucl9yZXZva2VzOworCWludAkJbnJfcmV2b2tlX2hpdHM7Cit9OworCitlbnVtIHBhc3N0eXBlIHtQQVNTX1NDQU4sIFBBU1NfUkVWT0tFLCBQQVNTX1JFUExBWX07CitzdGF0aWMgaW50IGRvX29uZV9wYXNzKGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCQlzdHJ1Y3QgcmVjb3ZlcnlfaW5mbyAqaW5mbywgZW51bSBwYXNzdHlwZSBwYXNzKTsKK3N0YXRpYyBpbnQgc2Nhbl9yZXZva2VfcmVjb3Jkcyhqb3VybmFsX3QgKiwgc3RydWN0IGJ1ZmZlcl9oZWFkICosCisJCQkJdGlkX3QsIHN0cnVjdCByZWNvdmVyeV9pbmZvICopOworCisjaWZkZWYgX19LRVJORUxfXworCisvKiBSZWxlYXNlIHJlYWRhaGVhZCBidWZmZXJzIGFmdGVyIHVzZSAqLworc3RhdGljIHZvaWQgam91cm5hbF9icmVsc2VfYXJyYXkoc3RydWN0IGJ1ZmZlcl9oZWFkICpiW10sIGludCBuKQoreworCXdoaWxlICgtLW4gPj0gMCkKKwkJYnJlbHNlIChiW25dKTsKK30KKworCisvKgorICogV2hlbiByZWFkaW5nIGZyb20gdGhlIGpvdXJuYWwsIHdlIGFyZSBnb2luZyB0aHJvdWdoIHRoZSBibG9jayBkZXZpY2UKKyAqIGxheWVyIGRpcmVjdGx5IGFuZCBzbyB0aGVyZSBpcyBubyByZWFkYWhlYWQgYmVpbmcgZG9uZSBmb3IgdXMuICBXZQorICogbmVlZCB0byBpbXBsZW1lbnQgYW55IHJlYWRhaGVhZCBvdXJzZWx2ZXMgaWYgd2Ugd2FudCBpdCB0byBoYXBwZW4gYXQKKyAqIGFsbC4gIFJlY292ZXJ5IGlzIGJhc2ljYWxseSBvbmUgbG9uZyBzZXF1ZW50aWFsIHJlYWQsIHNvIG1ha2Ugc3VyZSB3ZQorICogZG8gdGhlIElPIGluIHJlYXNvbmFibHkgbGFyZ2UgY2h1bmtzLgorICoKKyAqIFRoaXMgaXMgbm90IHNvIGNyaXRpY2FsIHRoYXQgd2UgbmVlZCB0byBiZSBlbm9ybW91c2x5IGNsZXZlciBhYm91dAorICogdGhlIHJlYWRhaGVhZCBzaXplLCB0aG91Z2guICAxMjhLIGlzIGEgcHVyZWx5IGFyYml0cmFyeSwgZ29vZC1lbm91Z2gKKyAqIGZpeGVkIHZhbHVlLgorICovCisKKyNkZWZpbmUgTUFYQlVGIDgKK3N0YXRpYyBpbnQgZG9fcmVhZGFoZWFkKGpvdXJuYWxfdCAqam91cm5hbCwgdW5zaWduZWQgaW50IHN0YXJ0KQoreworCWludCBlcnI7CisJdW5zaWduZWQgaW50IG1heCwgbmJ1ZnMsIG5leHQ7CisJdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrbnI7CisJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDsKKworCXN0cnVjdCBidWZmZXJfaGVhZCAqIGJ1ZnNbTUFYQlVGXTsKKworCS8qIERvIHVwIHRvIDEyOEsgb2YgcmVhZGFoZWFkICovCisJbWF4ID0gc3RhcnQgKyAoMTI4ICogMTAyNCAvIGpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwlpZiAobWF4ID4gam91cm5hbC0+al9tYXhsZW4pCisJCW1heCA9IGpvdXJuYWwtPmpfbWF4bGVuOworCisJLyogRG8gdGhlIHJlYWRhaGVhZCBpdHNlbGYuICBXZSdsbCBzdWJtaXQgTUFYQlVGIGJ1ZmZlcl9oZWFkcyBhdAorCSAqIGEgdGltZSB0byB0aGUgYmxvY2sgZGV2aWNlIElPIGxheWVyLiAqLworCisJbmJ1ZnMgPSAwOworCisJZm9yIChuZXh0ID0gc3RhcnQ7IG5leHQgPCBtYXg7IG5leHQrKykgeworCQllcnIgPSBqb3VybmFsX2JtYXAoam91cm5hbCwgbmV4dCwgJmJsb2NrbnIpOworCisJCWlmIChlcnIpIHsKKwkJCXByaW50ayhLRVJOX0VSUiAiSkJEMjogYmFkIGJsb2NrIGF0IG9mZnNldCAldVxuIiwKKwkJCQluZXh0KTsKKwkJCWdvdG8gZmFpbGVkOworCQl9CisKKwkJYmggPSBfX2dldGJsayhqb3VybmFsLT5qX2RldiwgYmxvY2tuciwgam91cm5hbC0+al9ibG9ja3NpemUpOworCQlpZiAoIWJoKSB7CisJCQllcnIgPSAtRU5PTUVNOworCQkJZ290byBmYWlsZWQ7CisJCX0KKworCQlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkgJiYgIWJ1ZmZlcl9sb2NrZWQoYmgpKSB7CisJCQlidWZzW25idWZzKytdID0gYmg7CisJCQlpZiAobmJ1ZnMgPT0gTUFYQlVGKSB7CisJCQkJbGxfcndfYmxvY2soUkVBRCwgbmJ1ZnMsIGJ1ZnMpOworCQkJCWpvdXJuYWxfYnJlbHNlX2FycmF5KGJ1ZnMsIG5idWZzKTsKKwkJCQluYnVmcyA9IDA7CisJCQl9CisJCX0gZWxzZQorCQkJYnJlbHNlKGJoKTsKKwl9CisKKwlpZiAobmJ1ZnMpCisJCWxsX3J3X2Jsb2NrKFJFQUQsIG5idWZzLCBidWZzKTsKKwllcnIgPSAwOworCitmYWlsZWQ6CisJaWYgKG5idWZzKQorCQlqb3VybmFsX2JyZWxzZV9hcnJheShidWZzLCBuYnVmcyk7CisJcmV0dXJuIGVycjsKK30KKworI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KKworCisvKgorICogUmVhZCBhIGJsb2NrIGZyb20gdGhlIGpvdXJuYWwKKyAqLworCitzdGF0aWMgaW50IGpyZWFkKHN0cnVjdCBidWZmZXJfaGVhZCAqKmJocCwgam91cm5hbF90ICpqb3VybmFsLAorCQkgdW5zaWduZWQgaW50IG9mZnNldCkKK3sKKwlpbnQgZXJyOworCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9ja25yOworCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CisKKwkqYmhwID0gTlVMTDsKKworCWlmIChvZmZzZXQgPj0gam91cm5hbC0+al9tYXhsZW4pIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJKQkQyOiBjb3JydXB0ZWQgam91cm5hbCBzdXBlcmJsb2NrXG4iKTsKKwkJcmV0dXJuIC1FRlNDT1JSVVBURUQ7CisJfQorCisJZXJyID0gam91cm5hbF9ibWFwKGpvdXJuYWwsIG9mZnNldCwgJmJsb2NrbnIpOworCisJaWYgKGVycikgeworCQlwcmludGsoS0VSTl9FUlIgIkpCRDI6IGJhZCBibG9jayBhdCBvZmZzZXQgJXVcbiIsCisJCQlvZmZzZXQpOworCQlyZXR1cm4gZXJyOworCX0KKworCWJoID0gX19nZXRibGsoam91cm5hbC0+al9kZXYsIGJsb2NrbnIsIGpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwlpZiAoIWJoKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmICghYnVmZmVyX3VwdG9kYXRlKGJoKSkgeworCQkvKiBJZiB0aGlzIGlzIGEgYnJhbmQgbmV3IGJ1ZmZlciwgc3RhcnQgcmVhZGFoZWFkLgorICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgd2UgYXNzdW1lIHdlIGFyZSBhbHJlYWR5IHJlYWRpbmcgaXQuICAqLworCQlpZiAoIWJ1ZmZlcl9yZXEoYmgpKQorCQkJZG9fcmVhZGFoZWFkKGpvdXJuYWwsIG9mZnNldCk7CisJCXdhaXRfb25fYnVmZmVyKGJoKTsKKwl9CisKKwlpZiAoIWJ1ZmZlcl91cHRvZGF0ZShiaCkpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJKQkQyOiBGYWlsZWQgdG8gcmVhZCBibG9jayBhdCBvZmZzZXQgJXVcbiIsCisJCQlvZmZzZXQpOworCQlicmVsc2UoYmgpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwkqYmhwID0gYmg7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgamJkMl9kZXNjcl9ibG9ja19jc3VtX3ZlcmlmeShqb3VybmFsX3QgKmosCisJCQkJCXZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsICp0YWlsOworCV9fdTMyIHByb3ZpZGVkOworCV9fdTMyIGNhbGN1bGF0ZWQ7CisKKwlpZiAoIWpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoaikpCisJCXJldHVybiAxOworCisJdGFpbCA9IChzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsICopKChjaGFyICopYnVmICsgai0+al9ibG9ja3NpemUgLQorCQkJc2l6ZW9mKHN0cnVjdCBqb3VybmFsX2Jsb2NrX3RhaWwpKTsKKwlwcm92aWRlZCA9IHRhaWwtPnRfY2hlY2tzdW07CisJdGFpbC0+dF9jaGVja3N1bSA9IDA7CisJY2FsY3VsYXRlZCA9IGpiZDJfY2hrc3VtKGosIGotPmpfY3N1bV9zZWVkLCBidWYsIGotPmpfYmxvY2tzaXplKTsKKwl0YWlsLT50X2NoZWNrc3VtID0gcHJvdmlkZWQ7CisKKwlyZXR1cm4gcHJvdmlkZWQgPT0gZXh0MmZzX2NwdV90b19iZTMyKGNhbGN1bGF0ZWQpOworfQorCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiBpbi11c2UgdGFncyBpbiBhIGpvdXJuYWwgZGVzY3JpcHRvciBibG9jay4KKyAqLworCitzdGF0aWMgaW50IGNvdW50X3RhZ3Moam91cm5hbF90ICpqb3VybmFsLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQoreworCWNoYXIgKgkJCXRhZ3A7CisJam91cm5hbF9ibG9ja190YWdfdCAqCXRhZzsKKwlpbnQJCQluciA9IDAsIHNpemUgPSBqb3VybmFsLT5qX2Jsb2Nrc2l6ZTsKKwlpbnQJCQl0YWdfYnl0ZXMgPSBqb3VybmFsX3RhZ19ieXRlcyhqb3VybmFsKTsKKworCWlmIChqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWwpKQorCQlzaXplIC09IHNpemVvZihzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsKTsKKworCXRhZ3AgPSAmYmgtPmJfZGF0YVtzaXplb2Yoam91cm5hbF9oZWFkZXJfdCldOworCisJd2hpbGUgKCh0YWdwIC0gYmgtPmJfZGF0YSArIHRhZ19ieXRlcykgPD0gc2l6ZSkgeworCQl0YWcgPSAoam91cm5hbF9ibG9ja190YWdfdCAqKSB0YWdwOworCisJCW5yKys7CisJCXRhZ3AgKz0gdGFnX2J5dGVzOworCQlpZiAoISh0YWctPnRfZmxhZ3MgJiBleHQyZnNfY3B1X3RvX2JlMTYoSkZTX0ZMQUdfU0FNRV9VVUlEKSkpCisJCQl0YWdwICs9IDE2OworCisJCWlmICh0YWctPnRfZmxhZ3MgJiBleHQyZnNfY3B1X3RvX2JlMTYoSkZTX0ZMQUdfTEFTVF9UQUcpKQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIG5yOworfQorCisKKy8qIE1ha2Ugc3VyZSB3ZSB3cmFwIGFyb3VuZCB0aGUgbG9nIGNvcnJlY3RseSEgKi8KKyNkZWZpbmUgd3JhcChqb3VybmFsLCB2YXIpCQkJCQkJXAorZG8gewkJCQkJCQkJCVwKKwlpZiAodmFyID49IChqb3VybmFsKS0+al9sYXN0KQkJCQkJXAorCQl2YXIgLT0gKChqb3VybmFsKS0+al9sYXN0IC0gKGpvdXJuYWwpLT5qX2ZpcnN0KTsJXAorfSB3aGlsZSAoMCkKKworLyoqCisgKiBqb3VybmFsX3JlY292ZXIgLSByZWNvdmVycyBhIG9uLWRpc2sgam91cm5hbAorICogQGpvdXJuYWw6IHRoZSBqb3VybmFsIHRvIHJlY292ZXIKKyAqCisgKiBUaGUgcHJpbWFyeSBmdW5jdGlvbiBmb3IgcmVjb3ZlcmluZyB0aGUgbG9nIGNvbnRlbnRzIHdoZW4gbW91bnRpbmcgYQorICogam91cm5hbGVkIGRldmljZS4KKyAqCisgKiBSZWNvdmVyeSBpcyBkb25lIGluIHRocmVlIHBhc3Nlcy4gIEluIHRoZSBmaXJzdCBwYXNzLCB3ZSBsb29rIGZvciB0aGUKKyAqIGVuZCBvZiB0aGUgbG9nLiAgSW4gdGhlIHNlY29uZCwgd2UgYXNzZW1ibGUgdGhlIGxpc3Qgb2YgcmV2b2tlCisgKiBibG9ja3MuICBJbiB0aGUgdGhpcmQgYW5kIGZpbmFsIHBhc3MsIHdlIHJlcGxheSBhbnkgdW4tcmV2b2tlZCBibG9ja3MKKyAqIGluIHRoZSBsb2cuCisgKi8KK2ludCBqb3VybmFsX3JlY292ZXIoam91cm5hbF90ICpqb3VybmFsKQoreworCWludAkJCWVyciwgZXJyMjsKKwlqb3VybmFsX3N1cGVyYmxvY2tfdCAqCXNiOworCisJc3RydWN0IHJlY292ZXJ5X2luZm8JaW5mbzsKKworCW1lbXNldCgmaW5mbywgMCwgc2l6ZW9mKGluZm8pKTsKKwlzYiA9IGpvdXJuYWwtPmpfc3VwZXJibG9jazsKKworCS8qCisJICogVGhlIGpvdXJuYWwgc3VwZXJibG9jaydzIHNfc3RhcnQgZmllbGQgKHRoZSBjdXJyZW50IGxvZyBoZWFkKQorCSAqIGlzIGFsd2F5cyB6ZXJvIGlmLCBhbmQgb25seSBpZiwgdGhlIGpvdXJuYWwgd2FzIGNsZWFubHkKKwkgKiB1bm1vdW50ZWQuCisJICovCisKKwlpZiAoIXNiLT5zX3N0YXJ0KSB7CisJCWpiZF9kZWJ1ZygxLCAiTm8gcmVjb3ZlcnkgcmVxdWlyZWQsIGxhc3QgdHJhbnNhY3Rpb24gJWRcbiIsCisJCQkgIGV4dDJmc19iZTMyX3RvX2NwdShzYi0+c19zZXF1ZW5jZSkpOworCQlqb3VybmFsLT5qX3RyYW5zYWN0aW9uX3NlcXVlbmNlID0gZXh0MmZzX2JlMzJfdG9fY3B1KHNiLT5zX3NlcXVlbmNlKSArIDE7CisJCXJldHVybiAwOworCX0KKworCWVyciA9IGRvX29uZV9wYXNzKGpvdXJuYWwsICZpbmZvLCBQQVNTX1NDQU4pOworCWlmICghZXJyKQorCQllcnIgPSBkb19vbmVfcGFzcyhqb3VybmFsLCAmaW5mbywgUEFTU19SRVZPS0UpOworCWlmICghZXJyKQorCQllcnIgPSBkb19vbmVfcGFzcyhqb3VybmFsLCAmaW5mbywgUEFTU19SRVBMQVkpOworCisJamJkX2RlYnVnKDEsICJKQkQyOiByZWNvdmVyeSwgZXhpdCBzdGF0dXMgJWQsICIKKwkJICAicmVjb3ZlcmVkIHRyYW5zYWN0aW9ucyAldSB0byAldVxuIiwKKwkJICBlcnIsIGluZm8uc3RhcnRfdHJhbnNhY3Rpb24sIGluZm8uZW5kX3RyYW5zYWN0aW9uKTsKKwlqYmRfZGVidWcoMSwgIkpCRDI6IFJlcGxheWVkICVkIGFuZCByZXZva2VkICVkLyVkIGJsb2Nrc1xuIiwKKwkJICBpbmZvLm5yX3JlcGxheXMsIGluZm8ubnJfcmV2b2tlX2hpdHMsIGluZm8ubnJfcmV2b2tlcyk7CisKKwkvKiBSZXN0YXJ0IHRoZSBsb2cgYXQgdGhlIG5leHQgdHJhbnNhY3Rpb24gSUQsIHRodXMgaW52YWxpZGF0aW5nCisJICogYW55IGV4aXN0aW5nIGNvbW1pdCByZWNvcmRzIGluIHRoZSBsb2cuICovCisJam91cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZSA9ICsraW5mby5lbmRfdHJhbnNhY3Rpb247CisKKwlqb3VybmFsX2NsZWFyX3Jldm9rZShqb3VybmFsKTsKKwllcnIyID0gc3luY19ibG9ja2Rldihqb3VybmFsLT5qX2ZzX2Rldik7CisJaWYgKCFlcnIpCisJCWVyciA9IGVycjI7CisJLyogTWFrZSBzdXJlIGFsbCByZXBsYXllZCBkYXRhIGlzIG9uIHBlcm1hbmVudCBzdG9yYWdlICovCisJaWYgKGpvdXJuYWwtPmpfZmxhZ3MgJiBKRlNfQkFSUklFUikgeworCQllcnIyID0gYmxrZGV2X2lzc3VlX2ZsdXNoKGpvdXJuYWwtPmpfZnNfZGV2LCBHRlBfS0VSTkVMLCBOVUxMKTsKKwkJaWYgKCFlcnIpCisJCQllcnIgPSBlcnIyOworCX0KKwlyZXR1cm4gZXJyOworfQorCisvKioKKyAqIGpvdXJuYWxfc2tpcF9yZWNvdmVyeSAtIFN0YXJ0IGpvdXJuYWwgYW5kIHdpcGUgZXhpdGluZyByZWNvcmRzCisgKiBAam91cm5hbDogam91cm5hbCB0byBzdGFydHVwCisgKgorICogTG9jYXRlIGFueSB2YWxpZCByZWNvdmVyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBqb3VybmFsIGFuZCBzZXQgdXAgdGhlCisgKiBqb3VybmFsIHN0cnVjdHVyZXMgaW4gbWVtb3J5IHRvIGlnbm9yZSBpdCAocHJlc3VtYWJseSBiZWNhdXNlIHRoZQorICogY2FsbGVyIGhhcyBldmlkZW5jZSB0aGF0IGl0IGlzIG91dCBvZiBkYXRlKS4KKyAqIFRoaXMgZnVuY3Rpb24gZG9lcydudCBhcHBlYXIgdG8gYmUgZXhvcnRlZC4uCisgKgorICogV2UgcGVyZm9ybSBvbmUgcGFzcyBvdmVyIHRoZSBqb3VybmFsIHRvIGFsbG93IHVzIHRvIHRlbGwgdGhlIHVzZXIgaG93CisgKiBtdWNoIHJlY292ZXJ5IGluZm9ybWF0aW9uIGlzIGJlaW5nIGVyYXNlZCwgYW5kIHRvIGxldCB1cyBpbml0aWFsaXNlCisgKiB0aGUgam91cm5hbCB0cmFuc2FjdGlvbiBzZXF1ZW5jZSBudW1iZXJzIHRvIHRoZSBuZXh0IHVudXNlZCBJRC4KKyAqLworaW50IGpvdXJuYWxfc2tpcF9yZWNvdmVyeShqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJaW50CQkJZXJyOworCisJc3RydWN0IHJlY292ZXJ5X2luZm8JaW5mbzsKKworCW1lbXNldCAoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisKKwllcnIgPSBkb19vbmVfcGFzcyhqb3VybmFsLCAmaW5mbywgUEFTU19TQ0FOKTsKKworCWlmIChlcnIpIHsKKwkJcHJpbnRrKEtFUk5fRVJSICJKQkQyOiBlcnJvciAlZCBzY2FubmluZyBqb3VybmFsXG4iLCBlcnIpOworCQkrK2pvdXJuYWwtPmpfdHJhbnNhY3Rpb25fc2VxdWVuY2U7CisJfSBlbHNlIHsKKyNpZmRlZiBDT05GSUdfSkZTX0RFQlVHCisJCWludCBkcm9wcGVkID0gaW5mby5lbmRfdHJhbnNhY3Rpb24gLQorCQkJZXh0MmZzX2JlMzJfdG9fY3B1KGpvdXJuYWwtPmpfc3VwZXJibG9jay0+c19zZXF1ZW5jZSk7CisJCWpiZF9kZWJ1ZygxLAorCQkJICAiSkJEMjogaWdub3JpbmcgJWQgdHJhbnNhY3Rpb24lcyBmcm9tIHRoZSBqb3VybmFsLlxuIiwKKwkJCSAgZHJvcHBlZCwgKGRyb3BwZWQgPT0gMSkgPyAiIiA6ICJzIik7CisjZW5kaWYKKwkJam91cm5hbC0+al90cmFuc2FjdGlvbl9zZXF1ZW5jZSA9ICsraW5mby5lbmRfdHJhbnNhY3Rpb247CisJfQorCisJam91cm5hbC0+al90YWlsID0gMDsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW5saW5lIF9fdTMyIGdldF9iZTMyKF9fYmUzMiAqcCkKK3sKKwl1bnNpZ25lZCBjaGFyICpjcCA9ICh1bnNpZ25lZCBjaGFyICopIHA7CisJX191MzIgcmV0OworCisJcmV0ID0gKmNwKys7CisJcmV0ID0gKHJldCA8PCA4KSArICpjcCsrOworCXJldCA9IChyZXQgPDwgOCkgKyAqY3ArKzsKKwlyZXQgPSAocmV0IDw8IDgpICsgKmNwKys7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGxvbmcgcmVhZF90YWdfYmxvY2soam91cm5hbF90ICpqb3VybmFsLAorCQkJCQkJam91cm5hbF9ibG9ja190YWdfdCAqdGFnKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9jayA9IGdldF9iZTMyKCZ0YWctPnRfYmxvY2tucik7CisJaWYgKGpmc19oYXNfZmVhdHVyZV82NGJpdChqb3VybmFsKSkKKwkJYmxvY2sgfD0gKHU2NClnZXRfYmUzMigmdGFnLT50X2Jsb2NrbnJfaGlnaCkgPDwgMzI7CisJcmV0dXJuIGJsb2NrOworfQorCisvKgorICogY2FsY19jaGtzdW1zIGNhbGN1bGF0ZXMgdGhlIGNoZWNrc3VtcyBmb3IgdGhlIGJsb2NrcyBkZXNjcmliZWQgaW4gdGhlCisgKiBkZXNjcmlwdG9yIGJsb2NrLgorICovCitzdGF0aWMgaW50IGNhbGNfY2hrc3Vtcyhqb3VybmFsX3QgKmpvdXJuYWwsIHN0cnVjdCBidWZmZXJfaGVhZCAqYmgsCisJCQl1bnNpZ25lZCBsb25nICpuZXh0X2xvZ19ibG9jaywgX191MzIgKmNyYzMyX3N1bSkKK3sKKwlpbnQgaSwgbnVtX2Jsa3MsIGVycjsKKwl1bnNpZ25lZCBsb25nIGlvX2Jsb2NrOworCXN0cnVjdCBidWZmZXJfaGVhZCAqb2JoOworCisJbnVtX2Jsa3MgPSBjb3VudF90YWdzKGpvdXJuYWwsIGJoKTsKKwkvKiBDYWxjdWxhdGUgY2hlY2tzdW0gb2YgdGhlIGRlc2NyaXB0b3IgYmxvY2suICovCisJKmNyYzMyX3N1bSA9IGNyYzMyX2JlKCpjcmMzMl9zdW0sICh2b2lkICopYmgtPmJfZGF0YSwgYmgtPmJfc2l6ZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2Jsa3M7IGkrKykgeworCQlpb19ibG9jayA9ICgqbmV4dF9sb2dfYmxvY2spKys7CisJCXdyYXAoam91cm5hbCwgKm5leHRfbG9nX2Jsb2NrKTsKKwkJZXJyID0ganJlYWQoJm9iaCwgam91cm5hbCwgaW9fYmxvY2spOworCQlpZiAoZXJyKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIkpCRDI6IElPIGVycm9yICVkIHJlY292ZXJpbmcgYmxvY2sgIgorCQkJCSIlbHUgaW4gbG9nXG4iLCBlcnIsIGlvX2Jsb2NrKTsKKwkJCXJldHVybiAxOworCQl9IGVsc2UgeworCQkJKmNyYzMyX3N1bSA9IGNyYzMyX2JlKCpjcmMzMl9zdW0sICh2b2lkICopb2JoLT5iX2RhdGEsCisJCQkJICAgICBvYmgtPmJfc2l6ZSk7CisJCX0KKwkJcHV0X2JoKG9iaCk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGpiZDJfY29tbWl0X2Jsb2NrX2NzdW1fdmVyaWZ5KGpvdXJuYWxfdCAqaiwgdm9pZCAqYnVmKQoreworCXN0cnVjdCBjb21taXRfaGVhZGVyICpoOworCV9fdTMyIHByb3ZpZGVkOworCV9fdTMyIGNhbGN1bGF0ZWQ7CisKKwlpZiAoIWpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoaikpCisJCXJldHVybiAxOworCisJaCA9IGJ1ZjsKKwlwcm92aWRlZCA9IGgtPmhfY2hrc3VtWzBdOworCWgtPmhfY2hrc3VtWzBdID0gMDsKKwljYWxjdWxhdGVkID0gamJkMl9jaGtzdW0oaiwgai0+al9jc3VtX3NlZWQsIGJ1Ziwgai0+al9ibG9ja3NpemUpOworCWgtPmhfY2hrc3VtWzBdID0gcHJvdmlkZWQ7CisKKwlyZXR1cm4gcHJvdmlkZWQgPT0gZXh0MmZzX2NwdV90b19iZTMyKGNhbGN1bGF0ZWQpOworfQorCitzdGF0aWMgaW50IGpiZDJfYmxvY2tfdGFnX2NzdW1fdmVyaWZ5KGpvdXJuYWxfdCAqaiwgam91cm5hbF9ibG9ja190YWdfdCAqdGFnLAorCQkJCSAgICAgIHZvaWQgKmJ1ZiwgX191MzIgc2VxdWVuY2UpCit7CisJam91cm5hbF9ibG9ja190YWczX3QgKnRhZzMgPSAoam91cm5hbF9ibG9ja190YWczX3QgKil0YWc7CisJX191MzIgY3N1bTMyOworCV9fdTMyIHNlcTsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuIDE7CisKKwlzZXEgPSBleHQyZnNfY3B1X3RvX2JlMzIoc2VxdWVuY2UpOworCWNzdW0zMiA9IGpiZDJfY2hrc3VtKGosIGotPmpfY3N1bV9zZWVkLCAoX191OCAqKSZzZXEsIHNpemVvZihzZXEpKTsKKwljc3VtMzIgPSBqYmQyX2Noa3N1bShqLCBjc3VtMzIsIGJ1Ziwgai0+al9ibG9ja3NpemUpOworCisJaWYgKGpmc19oYXNfZmVhdHVyZV9jc3VtMyhqKSkKKwkJcmV0dXJuIHRhZzMtPnRfY2hlY2tzdW0gPT0gZXh0MmZzX2NwdV90b19iZTMyKGNzdW0zMik7CisKKwlyZXR1cm4gdGFnLT50X2NoZWNrc3VtID09IGV4dDJmc19jcHVfdG9fYmUxNihjc3VtMzIpOworfQorCitzdGF0aWMgaW50IGRvX29uZV9wYXNzKGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCXN0cnVjdCByZWNvdmVyeV9pbmZvICppbmZvLCBlbnVtIHBhc3N0eXBlIHBhc3MpCit7CisJdW5zaWduZWQgaW50CQlmaXJzdF9jb21taXRfSUQsIG5leHRfY29tbWl0X0lEOworCXVuc2lnbmVkIGxvbmcJCW5leHRfbG9nX2Jsb2NrOworCWludAkJCWVyciwgc3VjY2VzcyA9IDA7CisJam91cm5hbF9zdXBlcmJsb2NrX3QgKglzYjsKKwlqb3VybmFsX2hlYWRlcl90ICoJdG1wOworCXN0cnVjdCBidWZmZXJfaGVhZCAqCWJoOworCXVuc2lnbmVkIGludAkJc2VxdWVuY2U7CisJaW50CQkJYmxvY2t0eXBlOworCWludAkJCXRhZ19ieXRlcyA9IGpvdXJuYWxfdGFnX2J5dGVzKGpvdXJuYWwpOworCV9fdTMyCQkJY3JjMzJfc3VtID0gfjA7IC8qIFRyYW5zYWN0aW9uYWwgQ2hlY2tzdW1zICovCisJaW50CQkJZGVzY3JfY3N1bV9zaXplID0gMDsKKwlpbnQJCQlibG9ja19lcnJvciA9IDA7CisKKwkvKgorCSAqIEZpcnN0IHRoaW5nIGlzIHRvIGVzdGFibGlzaCB3aGF0IHdlIGV4cGVjdCB0byBmaW5kIGluIHRoZSBsb2cKKwkgKiAoaW4gdGVybXMgb2YgdHJhbnNhY3Rpb24gSURzKSwgYW5kIHdoZXJlIChpbiB0ZXJtcyBvZiBsb2cKKwkgKiBibG9jayBvZmZzZXRzKTogcXVlcnkgdGhlIHN1cGVyYmxvY2suCisJICovCisKKwlzYiA9IGpvdXJuYWwtPmpfc3VwZXJibG9jazsKKwluZXh0X2NvbW1pdF9JRCA9IGV4dDJmc19iZTMyX3RvX2NwdShzYi0+c19zZXF1ZW5jZSk7CisJbmV4dF9sb2dfYmxvY2sgPSBleHQyZnNfYmUzMl90b19jcHUoc2ItPnNfc3RhcnQpOworCisJZmlyc3RfY29tbWl0X0lEID0gbmV4dF9jb21taXRfSUQ7CisJaWYgKHBhc3MgPT0gUEFTU19TQ0FOKQorCQlpbmZvLT5zdGFydF90cmFuc2FjdGlvbiA9IGZpcnN0X2NvbW1pdF9JRDsKKworCWpiZF9kZWJ1ZygxLCAiU3RhcnRpbmcgcmVjb3ZlcnkgcGFzcyAlZFxuIiwgcGFzcyk7CisKKwkvKgorCSAqIE5vdyB3ZSB3YWxrIHRocm91Z2ggdGhlIGxvZywgdHJhbnNhY3Rpb24gYnkgdHJhbnNhY3Rpb24sCisJICogbWFraW5nIHN1cmUgdGhhdCBlYWNoIHRyYW5zYWN0aW9uIGhhcyBhIGNvbW1pdCBibG9jayBpbiB0aGUKKwkgKiBleHBlY3RlZCBwbGFjZS4gIEVhY2ggY29tcGxldGUgdHJhbnNhY3Rpb24gZ2V0cyByZXBsYXllZCBiYWNrCisJICogaW50byB0aGUgbWFpbiBmaWxlc3lzdGVtLgorCSAqLworCisJd2hpbGUgKDEpIHsKKwkJaW50CQkJZmxhZ3M7CisJCWNoYXIgKgkJCXRhZ3A7CisJCWpvdXJuYWxfYmxvY2tfdGFnX3QgKgl0YWc7CisJCXN0cnVjdCBidWZmZXJfaGVhZCAqCW9iaDsKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICoJbmJoOworCisJCWNvbmRfcmVzY2hlZCgpOworCisJCS8qIElmIHdlIGFscmVhZHkga25vdyB3aGVyZSB0byBzdG9wIHRoZSBsb2cgdHJhdmVyc2FsLAorCQkgKiBjaGVjayByaWdodCBub3cgdGhhdCB3ZSBoYXZlbid0IGdvbmUgcGFzdCB0aGUgZW5kIG9mCisJCSAqIHRoZSBsb2cuICovCisKKwkJaWYgKHBhc3MgIT0gUEFTU19TQ0FOKQorCQkJaWYgKHRpZF9nZXEobmV4dF9jb21taXRfSUQsIGluZm8tPmVuZF90cmFuc2FjdGlvbikpCisJCQkJYnJlYWs7CisKKwkJamJkX2RlYnVnKDIsICJTY2FubmluZyBmb3Igc2VxdWVuY2UgSUQgJXUgYXQgJWx1LyVsdVxuIiwKKwkJCSAgbmV4dF9jb21taXRfSUQsIG5leHRfbG9nX2Jsb2NrLCBqb3VybmFsLT5qX2xhc3QpOworCisJCS8qIFNraXAgb3ZlciBlYWNoIGNodW5rIG9mIHRoZSB0cmFuc2FjdGlvbiBsb29raW5nCisJCSAqIGVpdGhlciB0aGUgbmV4dCBkZXNjcmlwdG9yIGJsb2NrIG9yIHRoZSBmaW5hbCBjb21taXQKKwkJICogcmVjb3JkLiAqLworCisJCWpiZF9kZWJ1ZygzLCAiSkJEMjogY2hlY2tpbmcgYmxvY2sgJWxkXG4iLCBuZXh0X2xvZ19ibG9jayk7CisJCWVyciA9IGpyZWFkKCZiaCwgam91cm5hbCwgbmV4dF9sb2dfYmxvY2spOworCQlpZiAoZXJyKQorCQkJZ290byBmYWlsZWQ7CisKKwkJbmV4dF9sb2dfYmxvY2srKzsKKwkJd3JhcChqb3VybmFsLCBuZXh0X2xvZ19ibG9jayk7CisKKwkJLyogV2hhdCBraW5kIG9mIGJ1ZmZlciBpcyBpdD8KKwkJICoKKwkJICogSWYgaXQgaXMgYSBkZXNjcmlwdG9yIGJsb2NrLCBjaGVjayB0aGF0IGl0IGhhcyB0aGUKKwkJICogZXhwZWN0ZWQgc2VxdWVuY2UgbnVtYmVyLiAgT3RoZXJ3aXNlLCB3ZSdyZSBhbGwgZG9uZQorCQkgKiBoZXJlLiAqLworCisJCXRtcCA9IChqb3VybmFsX2hlYWRlcl90ICopYmgtPmJfZGF0YTsKKworCQlpZiAodG1wLT5oX21hZ2ljICE9IGV4dDJmc19jcHVfdG9fYmUzMihKRlNfTUFHSUNfTlVNQkVSKSkgeworCQkJYnJlbHNlKGJoKTsKKwkJCWJyZWFrOworCQl9CisKKwkJYmxvY2t0eXBlID0gZXh0MmZzX2JlMzJfdG9fY3B1KHRtcC0+aF9ibG9ja3R5cGUpOworCQlzZXF1ZW5jZSA9IGV4dDJmc19iZTMyX3RvX2NwdSh0bXAtPmhfc2VxdWVuY2UpOworCQlqYmRfZGVidWcoMywgIkZvdW5kIG1hZ2ljICVkLCBzZXF1ZW5jZSAlZFxuIiwKKwkJCSAgYmxvY2t0eXBlLCBzZXF1ZW5jZSk7CisKKwkJaWYgKHNlcXVlbmNlICE9IG5leHRfY29tbWl0X0lEKSB7CisJCQlicmVsc2UoYmgpOworCQkJYnJlYWs7CisJCX0KKworCQkvKiBPSywgd2UgaGF2ZSBhIHZhbGlkIGRlc2NyaXB0b3IgYmxvY2sgd2hpY2ggbWF0Y2hlcworCQkgKiBhbGwgb2YgdGhlIHNlcXVlbmNlIG51bWJlciBjaGVja3MuICBXaGF0IGFyZSB3ZSBnb2luZworCQkgKiB0byBkbyB3aXRoIGl0PyAgVGhhdCBkZXBlbmRzIG9uIHRoZSBwYXNzLi4uICovCisKKwkJc3dpdGNoKGJsb2NrdHlwZSkgeworCQljYXNlIEpGU19ERVNDUklQVE9SX0JMT0NLOgorCQkJLyogVmVyaWZ5IGNoZWNrc3VtIGZpcnN0ICovCisJCQlpZiAoam91cm5hbF9oYXNfY3N1bV92Mm9yMyhqb3VybmFsKSkKKwkJCQlkZXNjcl9jc3VtX3NpemUgPQorCQkJCQlzaXplb2Yoc3RydWN0IGpvdXJuYWxfYmxvY2tfdGFpbCk7CisJCQlpZiAoZGVzY3JfY3N1bV9zaXplID4gMCAmJgorCQkJICAgICFqYmQyX2Rlc2NyX2Jsb2NrX2NzdW1fdmVyaWZ5KGpvdXJuYWwsCisJCQkJCQkJICBiaC0+Yl9kYXRhKSkgeworCQkJCWVyciA9IC1FRlNCQURDUkM7CisJCQkJYnJlbHNlKGJoKTsKKwkJCQlnb3RvIGZhaWxlZDsKKwkJCX0KKworCQkJLyogSWYgaXQgaXMgYSB2YWxpZCBkZXNjcmlwdG9yIGJsb2NrLCByZXBsYXkgaXQKKwkJCSAqIGluIHBhc3MgUkVQTEFZOyBpZiBqb3VybmFsX2NoZWNrc3VtcyBlbmFibGVkLCB0aGVuCisJCQkgKiBjYWxjdWxhdGUgY2hlY2tzdW1zIGluIFBBU1NfU0NBTiwgb3RoZXJ3aXNlLAorCQkJICoganVzdCBza2lwIG92ZXIgdGhlIGJsb2NrcyBpdCBkZXNjcmliZXMuICovCisJCQlpZiAocGFzcyAhPSBQQVNTX1JFUExBWSkgeworCQkJCWlmIChwYXNzID09IFBBU1NfU0NBTiAmJgorCQkJCSAgICBqZnNfaGFzX2ZlYXR1cmVfY2hlY2tzdW0oam91cm5hbCkgJiYKKwkJCQkgICAgIWluZm8tPmVuZF90cmFuc2FjdGlvbikgeworCQkJCQlpZiAoY2FsY19jaGtzdW1zKGpvdXJuYWwsIGJoLAorCQkJCQkJCSZuZXh0X2xvZ19ibG9jaywKKwkJCQkJCQkmY3JjMzJfc3VtKSkgeworCQkJCQkJcHV0X2JoKGJoKTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJCXB1dF9iaChiaCk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQluZXh0X2xvZ19ibG9jayArPSBjb3VudF90YWdzKGpvdXJuYWwsIGJoKTsKKwkJCQl3cmFwKGpvdXJuYWwsIG5leHRfbG9nX2Jsb2NrKTsKKwkJCQlwdXRfYmgoYmgpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKiBBIGRlc2NyaXB0b3IgYmxvY2s6IHdlIGNhbiBub3cgd3JpdGUgYWxsIG9mCisJCQkgKiB0aGUgZGF0YSBibG9ja3MuICBZYXksIHVzZWZ1bCB3b3JrIGlzIGZpbmFsbHkKKwkJCSAqIGdldHRpbmcgZG9uZSBoZXJlISAqLworCisJCQl0YWdwID0gJmJoLT5iX2RhdGFbc2l6ZW9mKGpvdXJuYWxfaGVhZGVyX3QpXTsKKwkJCXdoaWxlICgodGFncCAtIGJoLT5iX2RhdGEgKyB0YWdfYnl0ZXMpCisJCQkgICAgICAgPD0gam91cm5hbC0+al9ibG9ja3NpemUgLSBkZXNjcl9jc3VtX3NpemUpIHsKKwkJCQl1bnNpZ25lZCBsb25nIGlvX2Jsb2NrOworCisJCQkJdGFnID0gKGpvdXJuYWxfYmxvY2tfdGFnX3QgKikgdGFncDsKKwkJCQlmbGFncyA9IGV4dDJmc19iZTE2X3RvX2NwdSh0YWctPnRfZmxhZ3MpOworCisJCQkJaW9fYmxvY2sgPSBuZXh0X2xvZ19ibG9jaysrOworCQkJCXdyYXAoam91cm5hbCwgbmV4dF9sb2dfYmxvY2spOworCQkJCWVyciA9IGpyZWFkKCZvYmgsIGpvdXJuYWwsIGlvX2Jsb2NrKTsKKwkJCQlpZiAoZXJyKSB7CisJCQkJCS8qIFJlY292ZXIgd2hhdCB3ZSBjYW4sIGJ1dAorCQkJCQkgKiByZXBvcnQgZmFpbHVyZSBhdCB0aGUgZW5kLiAqLworCQkJCQlzdWNjZXNzID0gZXJyOworCQkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkJCSJKQkQyOiBJTyBlcnJvciAlZCByZWNvdmVyaW5nICIKKwkJCQkJCSJibG9jayAlbGQgaW4gbG9nXG4iLAorCQkJCQkJZXJyLCBpb19ibG9jayk7CisJCQkJfSBlbHNlIHsKKwkJCQkJdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrbnI7CisKKwkJCQkJSl9BU1NFUlQob2JoICE9IE5VTEwpOworCQkJCQlibG9ja25yID0gcmVhZF90YWdfYmxvY2soam91cm5hbCwKKwkJCQkJCQkJIHRhZyk7CisKKwkJCQkJLyogSWYgdGhlIGJsb2NrIGhhcyBiZWVuCisJCQkJCSAqIHJldm9rZWQsIHRoZW4gd2UncmUgYWxsIGRvbmUKKwkJCQkJICogaGVyZS4gKi8KKwkJCQkJaWYgKGpvdXJuYWxfdGVzdF9yZXZva2UKKwkJCQkJICAgIChqb3VybmFsLCBibG9ja25yLAorCQkJCQkgICAgIG5leHRfY29tbWl0X0lEKSkgeworCQkJCQkJYnJlbHNlKG9iaCk7CisJCQkJCQkrK2luZm8tPm5yX3Jldm9rZV9oaXRzOworCQkJCQkJZ290byBza2lwX3dyaXRlOworCQkJCQl9CisKKwkJCQkJLyogTG9vayBmb3IgYmxvY2sgY29ycnVwdGlvbiAqLworCQkJCQlpZiAoIWpiZDJfYmxvY2tfdGFnX2NzdW1fdmVyaWZ5KAorCQkJCQkJam91cm5hbCwgdGFnLCBvYmgtPmJfZGF0YSwKKwkJCQkJCWV4dDJmc19iZTMyX3RvX2NwdSh0bXAtPmhfc2VxdWVuY2UpKSkgeworCQkJCQkJYnJlbHNlKG9iaCk7CisJCQkJCQlzdWNjZXNzID0gLUVGU0JBRENSQzsKKwkJCQkJCXByaW50ayhLRVJOX0VSUiAiSkJEMjogSW52YWxpZCAiCisJCQkJCQkgICAgICAgImNoZWNrc3VtIHJlY292ZXJpbmcgIgorCQkJCQkJICAgICAgICJibG9jayAlbGx1IGluIGxvZ1xuIiwKKwkJCQkJCSAgICAgICBibG9ja25yKTsKKwkJCQkJCWJsb2NrX2Vycm9yID0gMTsKKwkJCQkJCWdvdG8gc2tpcF93cml0ZTsKKwkJCQkJfQorCisJCQkJCS8qIEZpbmQgYSBidWZmZXIgZm9yIHRoZSBuZXcKKwkJCQkJICogZGF0YSBiZWluZyByZXN0b3JlZCAqLworCQkJCQluYmggPSBfX2dldGJsayhqb3VybmFsLT5qX2ZzX2RldiwKKwkJCQkJCQlibG9ja25yLAorCQkJCQkJCWpvdXJuYWwtPmpfYmxvY2tzaXplKTsKKwkJCQkJaWYgKG5iaCA9PSBOVUxMKSB7CisJCQkJCQlwcmludGsoS0VSTl9FUlIKKwkJCQkJCSAgICAgICAiSkJEMjogT3V0IG9mIG1lbW9yeSAiCisJCQkJCQkgICAgICAgImR1cmluZyByZWNvdmVyeS5cbiIpOworCQkJCQkJZXJyID0gLUVOT01FTTsKKwkJCQkJCWJyZWxzZShiaCk7CisJCQkJCQlicmVsc2Uob2JoKTsKKwkJCQkJCWdvdG8gZmFpbGVkOworCQkJCQl9CisKKwkJCQkJbG9ja19idWZmZXIobmJoKTsKKwkJCQkJbWVtY3B5KG5iaC0+Yl9kYXRhLCBvYmgtPmJfZGF0YSwKKwkJCQkJCQlqb3VybmFsLT5qX2Jsb2Nrc2l6ZSk7CisJCQkJCWlmIChmbGFncyAmIEpGU19GTEFHX0VTQ0FQRSkgeworCQkJCQkJX191MzIgbWFnaWMgPSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX01BR0lDX05VTUJFUik7CisJCQkJCQltZW1jcHkobmJoLT5iX2RhdGEsICZtYWdpYywKKwkJCQkJCSAgICAgICBzaXplb2YobWFnaWMpKTsKKwkJCQkJfQorCisJCQkJCUJVRkZFUl9UUkFDRShuYmgsICJtYXJraW5nIGRpcnR5Iik7CisJCQkJCXNldF9idWZmZXJfdXB0b2RhdGUobmJoKTsKKwkJCQkJbWFya19idWZmZXJfZGlydHkobmJoKTsKKwkJCQkJQlVGRkVSX1RSQUNFKG5iaCwgIm1hcmtpbmcgdXB0b2RhdGUiKTsKKwkJCQkJKytpbmZvLT5ucl9yZXBsYXlzOworCQkJCQkvKiBsbF9yd19ibG9jayhXUklURSwgMSwgJm5iaCk7ICovCisJCQkJCXVubG9ja19idWZmZXIobmJoKTsKKwkJCQkJYnJlbHNlKG9iaCk7CisJCQkJCWJyZWxzZShuYmgpOworCQkJCX0KKworCQkJc2tpcF93cml0ZToKKwkJCQl0YWdwICs9IHRhZ19ieXRlczsKKwkJCQlpZiAoIShmbGFncyAmIEpGU19GTEFHX1NBTUVfVVVJRCkpCisJCQkJCXRhZ3AgKz0gMTY7CisKKwkJCQlpZiAoZmxhZ3MgJiBKRlNfRkxBR19MQVNUX1RBRykKKwkJCQkJYnJlYWs7CisJCQl9CisKKwkJCWJyZWxzZShiaCk7CisJCQljb250aW51ZTsKKworCQljYXNlIEpGU19DT01NSVRfQkxPQ0s6CisJCQkvKiAgICAgSG93IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBpbnRlcnJ1cHRlZCBjb21taXQKKwkJCSAqICAgICAgICAgICAgICAgYW5kIGpvdXJuYWwgY29ycnVwdGlvbiA/CisJCQkgKgorCQkJICoge250aCB0cmFuc2FjdGlvbn0KKwkJCSAqICAgICAgICBDaGVja3N1bSBWZXJpZmljYXRpb24gRmFpbGVkCisJCQkgKgkJCSB8CisJCQkgKgkJIF9fX19fX19fX19fX19fX19fX19fCisJCQkgKgkJfAkJICAgICB8CisJCQkgKiAJYXN5bmNfY29tbWl0ICAgICAgICAgICAgIHN5bmNfY29tbWl0CisJCQkgKiAgICAgCQl8ICAgICAgICAgICAgICAgICAgICB8CisJCQkgKgkJfCBHTyBUTyBORVhUICAgICJKb3VybmFsIENvcnJ1cHRpb24iCisJCQkgKgkJfCBUUkFOU0FDVElPTgorCQkJICoJCXwKKwkJCSAqIHsobisxKXRoIHRyYW5zYW5jdGlvbn0KKwkJCSAqCQl8CisJCQkgKiAJIF9fX19fX198X19fX19fX19fX19fX18KKwkJCSAqIAl8CSAJICAgICAgfAorCQkJICogQ29tbWl0IGJsb2NrIGZvdW5kCUNvbW1pdCBibG9jayBub3QgZm91bmQKKwkJCSAqICAgICAgfAkJICAgICAgfAorCQkJICogIkpvdXJuYWwgQ29ycnVwdGlvbiIgICAgICAgfAorCQkJICoJCSBfX19fX19fX19fX19ffF9fX19fX19fXworCQkJICogICAgIAkJfAkgICAgICAgICAgIAl8CisJCQkgKgludGggdHJhbnMgY29ycnVwdAlPUiAgIG50aCB0cmFucworCQkJICoJYW5kIChuKzEpdGggaW50ZXJydXB0ZWQgICAgIGludGVycnVwdGVkCisJCQkgKgliZWZvcmUgY29tbWl0IGJsb2NrCisJCQkgKiAgICAgIGNvdWxkIHJlYWNoIHRoZSBkaXNrLgorCQkJICoJKENhbm5vdCBmaW5kIHRoZSBkaWZmZXJlbmNlIGluIGFib3ZlCisJCQkgKgkgbWVudGlvbmVkIGNvbmRpdGlvbnMuIEhlbmNlIGFzc3VtZQorCQkJICoJICJJbnRlcnJ1cHRlZCBDb21taXQiLikKKwkJCSAqLworCisJCQkvKiBGb3VuZCBhbiBleHBlY3RlZCBjb21taXQgYmxvY2s6IGlmIGNoZWNrc3VtcworCQkJICogYXJlIHByZXNlbnQgdmVyaWZ5IHRoZW0gaW4gUEFTU19TQ0FOOyBlbHNlIG5vdAorCQkJICogbXVjaCB0byBkbyBvdGhlciB0aGFuIG1vdmUgb24gdG8gdGhlIG5leHQgc2VxdWVuY2UKKwkJCSAqIG51bWJlci4gKi8KKwkJCWlmIChwYXNzID09IFBBU1NfU0NBTiAmJgorCQkJICAgIGpmc19oYXNfZmVhdHVyZV9jaGVja3N1bShqb3VybmFsKSkgeworCQkJCWludCBjaGtzdW1fZXJyLCBjaGtzdW1fc2VlbjsKKwkJCQlzdHJ1Y3QgY29tbWl0X2hlYWRlciAqY2JoID0KKwkJCQkJKHN0cnVjdCBjb21taXRfaGVhZGVyICopYmgtPmJfZGF0YTsKKwkJCQl1bnNpZ25lZCBmb3VuZF9jaGtzdW0gPQorCQkJCQlleHQyZnNfYmUzMl90b19jcHUoY2JoLT5oX2Noa3N1bVswXSk7CisKKwkJCQljaGtzdW1fZXJyID0gY2hrc3VtX3NlZW4gPSAwOworCisJCQkJaWYgKGluZm8tPmVuZF90cmFuc2FjdGlvbikgeworCQkJCQlqb3VybmFsLT5qX2ZhaWxlZF9jb21taXQgPQorCQkJCQkJaW5mby0+ZW5kX3RyYW5zYWN0aW9uOworCQkJCQlicmVsc2UoYmgpOworCQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlpZiAoY3JjMzJfc3VtID09IGZvdW5kX2Noa3N1bSAmJgorCQkJCSAgICBjYmgtPmhfY2hrc3VtX3R5cGUgPT0gSkZTX0NSQzMyX0NIS1NVTSAmJgorCQkJCSAgICBjYmgtPmhfY2hrc3VtX3NpemUgPT0KKwkJCQkJCUpGU19DUkMzMl9DSEtTVU1fU0laRSkKKwkJCQkgICAgICAgY2hrc3VtX3NlZW4gPSAxOworCQkJCWVsc2UgaWYgKCEoY2JoLT5oX2Noa3N1bV90eXBlID09IDAgJiYKKwkJCQkJICAgICBjYmgtPmhfY2hrc3VtX3NpemUgPT0gMCAmJgorCQkJCQkgICAgIGZvdW5kX2Noa3N1bSA9PSAwICYmCisJCQkJCSAgICAgIWNoa3N1bV9zZWVuKSkKKwkJCQkvKgorCQkJCSAqIElmIGZzIGlzIG1vdW50ZWQgdXNpbmcgYW4gb2xkIGtlcm5lbCBhbmQgdGhlbgorCQkJCSAqIGtlcm5lbCB3aXRoIGpvdXJuYWxfY2hrc3VtIGlzIHVzZWQgdGhlbiB3ZQorCQkJCSAqIGdldCBhIHNpdHVhdGlvbiB3aGVyZSB0aGUgam91cm5hbCBmbGFnIGhhcworCQkJCSAqIGNoZWNrc3VtIGZsYWcgc2V0IGJ1dCBjaGVja3N1bXMgYXJlIG5vdAorCQkJCSAqIHByZXNlbnQgaS5lIGNoa3N1bSA9IDAsIGluIHRoZSBpbmRpdmlkdWFsCisJCQkJICogY29tbWl0IGJsb2Nrcy4KKwkJCQkgKiBIZW5jZSB0byBhdm9pZCBjaGVja3N1bSBmYWlsdXJlcywgaW4gdGhpcworCQkJCSAqIHNpdHVhdGlvbiwgdGhpcyBleHRyYSBjaGVjayBpcyBhZGRlZC4KKwkJCQkgKi8KKwkJCQkJCWNoa3N1bV9lcnIgPSAxOworCisJCQkJaWYgKGNoa3N1bV9lcnIpIHsKKwkJCQkJaW5mby0+ZW5kX3RyYW5zYWN0aW9uID0gbmV4dF9jb21taXRfSUQ7CisKKwkJCQkJaWYgKCFqZnNfaGFzX2ZlYXR1cmVfYXN5bmNfY29tbWl0KGpvdXJuYWwpKXsKKwkJCQkJCWpvdXJuYWwtPmpfZmFpbGVkX2NvbW1pdCA9CisJCQkJCQkJbmV4dF9jb21taXRfSUQ7CisJCQkJCQlicmVsc2UoYmgpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJY3JjMzJfc3VtID0gfjA7CisJCQl9CisJCQlpZiAocGFzcyA9PSBQQVNTX1NDQU4gJiYKKwkJCSAgICAhamJkMl9jb21taXRfYmxvY2tfY3N1bV92ZXJpZnkoam91cm5hbCwKKwkJCQkJCQkgICBiaC0+Yl9kYXRhKSkgeworCQkJCWluZm8tPmVuZF90cmFuc2FjdGlvbiA9IG5leHRfY29tbWl0X0lEOworCisJCQkJaWYgKCFqZnNfaGFzX2ZlYXR1cmVfYXN5bmNfY29tbWl0KGpvdXJuYWwpKSB7CisJCQkJCWpvdXJuYWwtPmpfZmFpbGVkX2NvbW1pdCA9CisJCQkJCQluZXh0X2NvbW1pdF9JRDsKKwkJCQkJYnJlbHNlKGJoKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJYnJlbHNlKGJoKTsKKwkJCW5leHRfY29tbWl0X0lEKys7CisJCQljb250aW51ZTsKKworCQljYXNlIEpGU19SRVZPS0VfQkxPQ0s6CisJCQkvKiBJZiB3ZSBhcmVuJ3QgaW4gdGhlIFJFVk9LRSBwYXNzLCB0aGVuIHdlIGNhbgorCQkJICoganVzdCBza2lwIG92ZXIgdGhpcyBibG9jay4gKi8KKwkJCWlmIChwYXNzICE9IFBBU1NfUkVWT0tFKSB7CisJCQkJYnJlbHNlKGJoKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJZXJyID0gc2Nhbl9yZXZva2VfcmVjb3Jkcyhqb3VybmFsLCBiaCwKKwkJCQkJCSAgbmV4dF9jb21taXRfSUQsIGluZm8pOworCQkJYnJlbHNlKGJoKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBmYWlsZWQ7CisJCQljb250aW51ZTsKKworCQlkZWZhdWx0OgorCQkJamJkX2RlYnVnKDMsICJVbnJlY29nbmlzZWQgbWFnaWMgJWQsIGVuZCBvZiBzY2FuLlxuIiwKKwkJCQkgIGJsb2NrdHlwZSk7CisJCQlicmVsc2UoYmgpOworCQkJZ290byBkb25lOworCQl9CisJfQorCisgZG9uZToKKwkvKgorCSAqIFdlIGJyb2tlIG91dCBvZiB0aGUgbG9nIHNjYW4gbG9vcDogZWl0aGVyIHdlIGNhbWUgdG8gdGhlCisJICoga25vd24gZW5kIG9mIHRoZSBsb2cgb3Igd2UgZm91bmQgYW4gdW5leHBlY3RlZCBibG9jayBpbiB0aGUKKwkgKiBsb2cuICBJZiB0aGUgbGF0dGVyIGhhcHBlbmVkLCB0aGVuIHdlIGtub3cgdGhhdCB0aGUgImN1cnJlbnQiCisJICogdHJhbnNhY3Rpb24gbWFya3MgdGhlIGVuZCBvZiB0aGUgdmFsaWQgbG9nLgorCSAqLworCisJaWYgKHBhc3MgPT0gUEFTU19TQ0FOKSB7CisJCWlmICghaW5mby0+ZW5kX3RyYW5zYWN0aW9uKQorCQkJaW5mby0+ZW5kX3RyYW5zYWN0aW9uID0gbmV4dF9jb21taXRfSUQ7CisJfSBlbHNlIHsKKwkJLyogSXQncyByZWFsbHkgYmFkIG5ld3MgaWYgZGlmZmVyZW50IHBhc3NlcyBlbmQgdXAgYXQKKwkJICogZGlmZmVyZW50IHBsYWNlcyAoYnV0IHBvc3NpYmxlIGR1ZSB0byBJTyBlcnJvcnMpLiAqLworCQlpZiAoaW5mby0+ZW5kX3RyYW5zYWN0aW9uICE9IG5leHRfY29tbWl0X0lEKSB7CisJCQlwcmludGsoS0VSTl9FUlIgIkpCRDI6IHJlY292ZXJ5IHBhc3MgJWQgZW5kZWQgYXQgIgorCQkJCSJ0cmFuc2FjdGlvbiAldSwgZXhwZWN0ZWQgJXVcbiIsCisJCQkJcGFzcywgbmV4dF9jb21taXRfSUQsIGluZm8tPmVuZF90cmFuc2FjdGlvbik7CisJCQlpZiAoIXN1Y2Nlc3MpCisJCQkJc3VjY2VzcyA9IC1FSU87CisJCX0KKwl9CisJaWYgKGJsb2NrX2Vycm9yICYmIHN1Y2Nlc3MgPT0gMCkKKwkJc3VjY2VzcyA9IC1FSU87CisJcmV0dXJuIHN1Y2Nlc3M7CisKKyBmYWlsZWQ6CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCBqYmQyX3Jldm9rZV9ibG9ja19jc3VtX3ZlcmlmeShqb3VybmFsX3QgKmosCisJCQkJCSB2b2lkICpidWYpCit7CisJc3RydWN0IGpvdXJuYWxfcmV2b2tlX3RhaWwgKnRhaWw7CisJX191MzIgcHJvdmlkZWQ7CisJX191MzIgY2FsY3VsYXRlZDsKKworCWlmICgham91cm5hbF9oYXNfY3N1bV92Mm9yMyhqKSkKKwkJcmV0dXJuIDE7CisKKwl0YWlsID0gKHN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsICopKChjaGFyICopYnVmICsgai0+al9ibG9ja3NpemUgLQorCQkJc2l6ZW9mKHN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsKSk7CisJcHJvdmlkZWQgPSB0YWlsLT5yX2NoZWNrc3VtOworCXRhaWwtPnJfY2hlY2tzdW0gPSAwOworCWNhbGN1bGF0ZWQgPSBqYmQyX2Noa3N1bShqLCBqLT5qX2NzdW1fc2VlZCwgYnVmLCBqLT5qX2Jsb2Nrc2l6ZSk7CisJdGFpbC0+cl9jaGVja3N1bSA9IHByb3ZpZGVkOworCisJcmV0dXJuIHByb3ZpZGVkID09IGV4dDJmc19jcHVfdG9fYmUzMihjYWxjdWxhdGVkKTsKK30KKworLyogU2NhbiBhIHJldm9rZSByZWNvcmQsIG1hcmtpbmcgYWxsIGJsb2NrcyBtZW50aW9uZWQgYXMgcmV2b2tlZC4gKi8KKworc3RhdGljIGludCBzY2FuX3Jldm9rZV9yZWNvcmRzKGpvdXJuYWxfdCAqam91cm5hbCwgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaCwKKwkJCSAgICAgICB0aWRfdCBzZXF1ZW5jZSwgc3RydWN0IHJlY292ZXJ5X2luZm8gKmluZm8pCit7CisJam91cm5hbF9yZXZva2VfaGVhZGVyX3QgKmhlYWRlcjsKKwlpbnQgb2Zmc2V0LCBtYXg7CisJdW5zaWduZWQgY3N1bV9zaXplID0gMDsKKwlfX3UzMiByY291bnQ7CisJaW50IHJlY29yZF9sZW4gPSA0OworCisJaGVhZGVyID0gKGpvdXJuYWxfcmV2b2tlX2hlYWRlcl90ICopIGJoLT5iX2RhdGE7CisJb2Zmc2V0ID0gc2l6ZW9mKGpvdXJuYWxfcmV2b2tlX2hlYWRlcl90KTsKKwlyY291bnQgPSBleHQyZnNfYmUzMl90b19jcHUoaGVhZGVyLT5yX2NvdW50KTsKKworCWlmICghamJkMl9yZXZva2VfYmxvY2tfY3N1bV92ZXJpZnkoam91cm5hbCwgaGVhZGVyKSkKKwkJcmV0dXJuIC1FRlNCQURDUkM7CisKKwlpZiAoam91cm5hbF9oYXNfY3N1bV92Mm9yMyhqb3VybmFsKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsKTsKKwlpZiAocmNvdW50ID4gam91cm5hbC0+al9ibG9ja3NpemUgLSBjc3VtX3NpemUpCisJCXJldHVybiAtRUlOVkFMOworCW1heCA9IHJjb3VudDsKKworCWlmIChqZnNfaGFzX2ZlYXR1cmVfNjRiaXQoam91cm5hbCkpCisJCXJlY29yZF9sZW4gPSA4OworCisJd2hpbGUgKG9mZnNldCArIHJlY29yZF9sZW4gPD0gbWF4KSB7CisJCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9ja25yOworCQlpbnQgZXJyOworCisJCWlmIChyZWNvcmRfbGVuID09IDQpCisJCQlibG9ja25yID0gZXh0MmZzX2JlMzJfdG9fY3B1KCogKChfX3UzMiAqKSAoYmgtPmJfZGF0YStvZmZzZXQpKSk7CisJCWVsc2UKKwkJCWJsb2NrbnIgPSBleHQyZnNfYmU2NF90b19jcHUoKiAoKF9fdTY0ICopIChiaC0+Yl9kYXRhK29mZnNldCkpKTsKKwkJb2Zmc2V0ICs9IHJlY29yZF9sZW47CisJCWVyciA9IGpvdXJuYWxfc2V0X3Jldm9rZShqb3VybmFsLCBibG9ja25yLCBzZXF1ZW5jZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQkrK2luZm8tPm5yX3Jldm9rZXM7CisJfQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9yZWdpb24uYyBiL2UyZnNwcm9ncy9lMmZzY2svcmVnaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMyZjg5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svcmVnaW9uLmMKQEAgLTAsMCArMSwyMTAgQEAKKy8qCisgKiByZWdpb24uYyAtLS0gY29kZSB3aGljaCBtYW5hZ2VzIGFsbG9jYXRpb25zIHdpdGhpbiBhIHJlZ2lvbi4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmZGVmIFRFU1RfUFJPR1JBTQorI3VuZGVmIEVOQUJMRV9OTFMKKyNlbmRpZgorI2luY2x1ZGUgImUyZnNjay5oIgorCitzdHJ1Y3QgcmVnaW9uX2VsIHsKKwlyZWdpb25fYWRkcl90CXN0YXJ0OworCXJlZ2lvbl9hZGRyX3QJZW5kOworCXN0cnVjdCByZWdpb25fZWwgKm5leHQ7Cit9OworCitzdHJ1Y3QgcmVnaW9uX3N0cnVjdCB7CisJcmVnaW9uX2FkZHJfdAltaW47CisJcmVnaW9uX2FkZHJfdAltYXg7CisJc3RydWN0IHJlZ2lvbl9lbCAqYWxsb2NhdGVkOworfTsKKworcmVnaW9uX3QgcmVnaW9uX2NyZWF0ZShyZWdpb25fYWRkcl90IG1pbiwgcmVnaW9uX2FkZHJfdCBtYXgpCit7CisJcmVnaW9uX3QJcmVnaW9uOworCisJcmVnaW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmVnaW9uX3N0cnVjdCkpOworCWlmICghcmVnaW9uKQorCQlyZXR1cm4gTlVMTDsKKwltZW1zZXQocmVnaW9uLCAwLCBzaXplb2Yoc3RydWN0IHJlZ2lvbl9zdHJ1Y3QpKTsKKwlyZWdpb24tPm1pbiA9IG1pbjsKKwlyZWdpb24tPm1heCA9IG1heDsKKwlyZXR1cm4gcmVnaW9uOworfQorCit2b2lkIHJlZ2lvbl9mcmVlKHJlZ2lvbl90IHJlZ2lvbikKK3sKKwlzdHJ1Y3QgcmVnaW9uX2VsCSpyLCAqbmV4dDsKKworCWZvciAociA9IHJlZ2lvbi0+YWxsb2NhdGVkOyByOyByID0gbmV4dCkgeworCQluZXh0ID0gci0+bmV4dDsKKwkJZnJlZShyKTsKKwl9CisJbWVtc2V0KHJlZ2lvbiwgMCwgc2l6ZW9mKHN0cnVjdCByZWdpb25fc3RydWN0KSk7CisJZnJlZShyZWdpb24pOworfQorCitpbnQgcmVnaW9uX2FsbG9jYXRlKHJlZ2lvbl90IHJlZ2lvbiwgcmVnaW9uX2FkZHJfdCBzdGFydCwgaW50IG4pCit7CisJc3RydWN0IHJlZ2lvbl9lbAkqciwgKm5ld19yZWdpb24sICpwcmV2LCAqbmV4dDsKKwlyZWdpb25fYWRkcl90IGVuZDsKKworCWVuZCA9IHN0YXJ0K247CisJaWYgKChzdGFydCA8IHJlZ2lvbi0+bWluKSB8fCAoZW5kID4gcmVnaW9uLT5tYXgpKQorCQlyZXR1cm4gLTE7CisJaWYgKG4gPT0gMCkKKwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIFNlYXJjaCB0aHJvdWdoIHRoZSBsaW5rZWQgbGlzdC4gIElmIHdlIGZpbmQgdGhhdCBpdAorCSAqIGNvbmZsaWN0cyB3aXRpaCBzb21ldGhpbmcgdGhhdCdzIGFscmVhZHkgYWxsb2NhdGVkLCByZXR1cm4KKwkgKiAxOyBpZiB3ZSBjYW4gZmluZCBhbiBleGlzdGluZyByZWdpb24gd2hpY2ggd2UgY2FuIGdyb3csIGRvCisJICogc28uICBPdGhlcndpc2UsIHN0b3Agd2hlbiB3ZSBmaW5kIHRoZSBhcHByb3ByaWF0ZSBwbGFjZQorCSAqIGluc2VydCBhIG5ldyByZWdpb24gZWxlbWVudCBpbnRvIHRoZSBsaW5rZWQgbGlzdC4KKwkgKi8KKwlmb3IgKHIgPSByZWdpb24tPmFsbG9jYXRlZCwgcHJldj1OVUxMOyByOyBwcmV2ID0gciwgciA9IHItPm5leHQpIHsKKwkJaWYgKCgoc3RhcnQgPj0gci0+c3RhcnQpICYmIChzdGFydCA8IHItPmVuZCkpIHx8CisJCSAgICAoKGVuZCA+IHItPnN0YXJ0KSAmJiAoZW5kIDw9IHItPmVuZCkpIHx8CisJCSAgICAoKHN0YXJ0IDw9IHItPnN0YXJ0KSAmJiAoZW5kID49IHItPmVuZCkpKQorCQkJcmV0dXJuIDE7CisJCWlmIChlbmQgPT0gci0+c3RhcnQpIHsKKwkJCXItPnN0YXJ0ID0gc3RhcnQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoc3RhcnQgPT0gci0+ZW5kKSB7CisJCQlpZiAoKG5leHQgPSByLT5uZXh0KSkgeworCQkJCWlmIChlbmQgPiBuZXh0LT5zdGFydCkKKwkJCQkJcmV0dXJuIDE7CisJCQkJaWYgKGVuZCA9PSBuZXh0LT5zdGFydCkgeworCQkJCQlyLT5lbmQgPSBuZXh0LT5lbmQ7CisJCQkJCXItPm5leHQgPSBuZXh0LT5uZXh0OworCQkJCQlmcmVlKG5leHQpOworCQkJCQlyZXR1cm4gMDsKKwkJCQl9CisJCQl9CisJCQlyLT5lbmQgPSBlbmQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoc3RhcnQgPCByLT5zdGFydCkKKwkJCWJyZWFrOworCX0KKwkvKgorCSAqIEluc2VydCBhIG5ldyByZWdpb24gZWxlbWVudCBzdHJ1Y3R1cmUgaW50byB0aGUgbGlua2VkIGxpc3QKKwkgKi8KKwluZXdfcmVnaW9uID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgcmVnaW9uX2VsKSk7CisJaWYgKCFuZXdfcmVnaW9uKQorCQlyZXR1cm4gLTE7CisJbmV3X3JlZ2lvbi0+c3RhcnQgPSBzdGFydDsKKwluZXdfcmVnaW9uLT5lbmQgPSBzdGFydCArIG47CisJbmV3X3JlZ2lvbi0+bmV4dCA9IHI7CisJaWYgKHByZXYpCisJCXByZXYtPm5leHQgPSBuZXdfcmVnaW9uOworCWVsc2UKKwkJcmVnaW9uLT5hbGxvY2F0ZWQgPSBuZXdfcmVnaW9uOworCXJldHVybiAwOworfQorCisjaWZkZWYgVEVTVF9QUk9HUkFNCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2RlZmluZSBCQ09ERV9FTkQJMAorI2RlZmluZSBCQ09ERV9DUkVBVEUJMQorI2RlZmluZSBCQ09ERV9GUkVFCTIKKyNkZWZpbmUgQkNPREVfQUxMT0NBVEUJMworI2RlZmluZSBCQ09ERV9QUklOVAk0CisKK2ludCBiY29kZV9wcm9ncmFtW10gPSB7CisJQkNPREVfQ1JFQVRFLCAxLCAxMDAxLAorCUJDT0RFX1BSSU5ULAorCUJDT0RFX0FMTE9DQVRFLCAxMCwgMTAsCisJQkNPREVfQUxMT0NBVEUsIDMwLCAxMCwKKwlCQ09ERV9QUklOVCwKKwlCQ09ERV9BTExPQ0FURSwgMSwgMTUsCisJQkNPREVfQUxMT0NBVEUsIDE1LCA4LAorCUJDT0RFX0FMTE9DQVRFLCAxLCAyMCwKKwlCQ09ERV9BTExPQ0FURSwgMSwgOCwKKwlCQ09ERV9QUklOVCwKKwlCQ09ERV9BTExPQ0FURSwgNDAsIDEwLAorCUJDT0RFX1BSSU5ULAorCUJDT0RFX0FMTE9DQVRFLCAyMiwgNSwKKwlCQ09ERV9QUklOVCwKKwlCQ09ERV9BTExPQ0FURSwgMjcsIDMsCisJQkNPREVfUFJJTlQsCisJQkNPREVfQUxMT0NBVEUsIDIwLCAyLAorCUJDT0RFX1BSSU5ULAorCUJDT0RFX0FMTE9DQVRFLCA0OSwgMSwKKwlCQ09ERV9BTExPQ0FURSwgNTAsIDUsCisJQkNPREVfQUxMT0NBVEUsIDksIDIsCisJQkNPREVfQUxMT0NBVEUsIDksIDEsCisJQkNPREVfUFJJTlQsCisJQkNPREVfRlJFRSwKKwlCQ09ERV9FTkQKK307CisKK3ZvaWQgcmVnaW9uX3ByaW50KHJlZ2lvbl90IHJlZ2lvbiwgRklMRSAqZikKK3sKKwlzdHJ1Y3QgcmVnaW9uX2VsCSpyOworCWludAlpID0gMDsKKworCWZwcmludGYoZiwgIlByaW50aW5nIHJlZ2lvbiAobWluPSVsbHUuIG1heD0lbGx1KVxuXHQiLCByZWdpb24tPm1pbiwKKwkJcmVnaW9uLT5tYXgpOworCWZvciAociA9IHJlZ2lvbi0+YWxsb2NhdGVkOyByOyByID0gci0+bmV4dCkgeworCQlmcHJpbnRmKGYsICIoJWxsdSwgJWxsdSkgICIsIHItPnN0YXJ0LCByLT5lbmQpOworCQlpZiAoKytpID49IDgpCisJCQlmcHJpbnRmKGYsICJcblx0Iik7CisJfQorCWZwcmludGYoZiwgIlxuIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlyZWdpb25fdAlyID0gTlVMTDsKKwlpbnQJCXBjID0gMCwgcmV0OworCXJlZ2lvbl9hZGRyX3QJc3RhcnQsIGVuZDsKKworCisJd2hpbGUgKDEpIHsKKwkJc3dpdGNoIChiY29kZV9wcm9ncmFtW3BjKytdKSB7CisJCWNhc2UgQkNPREVfRU5EOgorCQkJZXhpdCgwKTsKKwkJY2FzZSBCQ09ERV9DUkVBVEU6CisJCQlzdGFydCA9IGJjb2RlX3Byb2dyYW1bcGMrK107CisJCQllbmQgPSBiY29kZV9wcm9ncmFtW3BjKytdOworCQkJcHJpbnRmKCJDcmVhdGluZyByZWdpb24gd2l0aCBhcmdzKCVsbHUsICVsbHUpXG4iLAorCQkJICAgICAgIHN0YXJ0LCBlbmQpOworCQkJciA9IHJlZ2lvbl9jcmVhdGUoc3RhcnQsIGVuZCk7CisJCQlpZiAoIXIpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGNyZWF0ZSByZWdpb24uXG4iKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgQkNPREVfQUxMT0NBVEU6CisJCQlzdGFydCA9IGJjb2RlX3Byb2dyYW1bcGMrK107CisJCQllbmQgPSBiY29kZV9wcm9ncmFtW3BjKytdOworCQkJcmV0ID0gcmVnaW9uX2FsbG9jYXRlKHIsIHN0YXJ0LCBlbmQpOworCQkJcHJpbnRmKCJSZWdpb25fYWxsb2NhdGUoJWxsdSwgJWxsdSkgcmV0dXJucyAlZFxuIiwKKwkJCSAgICAgICBzdGFydCwgZW5kLCByZXQpOworCQkJYnJlYWs7CisJCWNhc2UgQkNPREVfUFJJTlQ6CisJCQlyZWdpb25fcHJpbnQociwgc3Rkb3V0KTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChyKQorCQlyZWdpb25fZnJlZShyKTsKK30KKworI2VuZGlmIC8qIFRFU1RfUFJPR1JBTSAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9yZWhhc2guYyBiL2UyZnNwcm9ncy9lMmZzY2svcmVoYXNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhNThmMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svcmVoYXNoLmMKQEAgLTAsMCArMSw5ODMgQEAKKy8qCisgKiByZWhhc2guYyAtLS0gcmVidWlsZCBoYXNoIHRyZWUgZGlyZWN0b3JpZXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKgorICogVGhpcyBhbGdvcml0aG0gaXMgZGVzaWduZWQgZm9yIHNpbXBsaWNpdHkgb2YgaW1wbGVtZW50YXRpb24gYW5kIHRvCisgKiBwYWNrIHRoZSBkaXJlY3RvcnkgYXMgbXVjaCBhcyBwb3NzaWJsZS4gIEl0IGhvd2V2ZXIgcmVxdWlyZXMgdHdpY2UKKyAqIGFzIG11Y2ggbWVtb3J5IGFzIHRoZSBzaXplIG9mIHRoZSBkaXJlY3RvcnkuICBUaGUgbWF4aW11bSBzaXplCisgKiBkaXJlY3Rvcnkgc3VwcG9ydGVkIHVzaW5nIGEgNGsgYmxvY2tzaXplIGlzIHJvdWdobHkgYSBnaWdhYnl0ZSwgYW5kCisgKiBzbyB0aGVyZSBtYXkgdmVyeSB3ZWxsIGJlIHByb2JsZW1zIHdpdGggbWFjaGluZXMgdGhhdCBkb24ndCBoYXZlCisgKiB2aXJ0dWFsIG1lbW9yeSwgYW5kIG9ic2NlbmVseSBsYXJnZSBkaXJlY3Rvcmllcy4KKyAqCisgKiBBbiBhbHRlcm5hdGUgYWxnb3JpdGhtIHdoaWNoIGlzIG11Y2ggbW9yZSBkaXNrIGludGVuc2l2ZSBjb3VsZCBiZQorICogd3JpdHRlbiwgYW5kIHByb2JhYmx5IHdpbGwgbmVlZCB0byBiZSB3cml0dGVuIGluIHRoZSBmdXR1cmUuICBUaGUKKyAqIGRlc2lnbiBnb2FscyBvZiBzdWNoIGFuIGFsZ29yaXRobSBhcmU6IChhKSB1c2UgKHJvdWdobHkpIGNvbnN0YW50CisgKiBhbW91bnRzIG9mIG1lbW9yeSwgbm8gbWF0dGVyIGhvdyBsYXJnZSB0aGUgZGlyZWN0b3J5LCAoYikgdGhlCisgKiBkaXJlY3RvcnkgbXVzdCBiZSBzYWZlIGF0IGFsbCB0aW1lcywgZXZlbiBpZiBlMmZzY2sgaXMgaW50ZXJydXB0ZWQKKyAqIGluIHRoZSBtaWRkbGUsIChjKSB3ZSBtdXN0IHVzZSBtaW5pbWFsIGFtb3VudHMgb2YgZXh0cmEgZGlzaworICogYmxvY2tzLiAgVGhpcyBwcmV0dHkgbXVjaCByZXF1aXJlcyBhbiBpbmNyZW1lbnRhbCBhcHByb2FjaCwgd2hlcmUKKyAqIHdlIGFyZSByZWFkaW5nIGZyb20gb25lIHBhcnQgb2YgdGhlIGRpcmVjdG9yeSwgYW5kIGluc2VydGluZyBpbnRvCisgKiB0aGUgZnJvbnQgaGFsZi4gIFNvIHRoZSBhbGdvcml0aG0gd2lsbCBoYXZlIHRvIGtlZXAgdHJhY2sgb2YgYQorICogbW92aW5nIGJsb2NrIGJvdW5kYXJ5IGJldHdlZW4gdGhlIG5ldyB0cmVlIGFuZCB0aGUgb2xkIHRyZWUsIGFuZAorICogZmlsZXMgd2lsbCBuZWVkIHRvIGJlIG1vdmVkIGZyb20gdGhlIG9sZCBkaXJlY3RvcnkgYW5kIGluc2VydGVkCisgKiBpbnRvIHRoZSBuZXcgdHJlZS4gIElmIHRoZSBuZXcgZGlyZWN0b3J5IHJlcXVpcmVzIHNwYWNlIHdoaWNoIGlzbid0CisgKiB5ZXQgYXZhaWxhYmxlLCBibG9ja3MgZnJvbSB0aGUgYmVnaW5uaW5nIHBhcnQgb2YgdGhlIG9sZCBkaXJlY3RvcnkKKyAqIG1heSBuZWVkIHRvIGJlIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeSB0byBtYWtlIHJvb20gZm9yCisgKiB0aGUgbmV3IHRyZWU6CisgKgorICogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqICAgIHwgIG5ldyB0cmVlICAgfCAgICAgICAgfCBvbGQgdHJlZSAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogICAgICAgICAgICAgICAgICBeIHB0ciAgICBecHRyCisgKiAgICAgICAgICAgICAgICB0YWlsIG5ldyAgIGhlYWQgb2xkCisgKgorICogVGhpcyBpcyBnb2luZyB0byBiZSBhIHBhaW4gaW4gdGhlIHR1Y2t1cyB0byBpbXBsZW1lbnQsIGFuZCB3aWxsCisgKiByZXF1aXJlIGEgbG90IG1vcmUgZGlzayBhY2Nlc3Nlcy4gIFNvIEknbSBnb2luZyB0byBza2lwIGl0IGZvciBub3c7CisgKiBpdCdzIG9ubHkgcmVhbGx5IGdvaW5nIHRvIGJlIGFuIGlzc3VlIGZvciByZWFsbHksIHJlYWxseSBiaWcKKyAqIGZpbGVzeXN0ZW1zICh3aGVuIHdlIHJlYWNoIHRoZSBsZXZlbCBvZiB0ZW5zIG9mIG1pbGxpb25zIG9mIGZpbGVzCisgKiBpbiBhIHNpbmdsZSBkaXJlY3RvcnkpLiAgSXQgd2lsbCBwcm9iYWJseSBiZSBlYXNpZXIgdG8gc2ltcGx5CisgKiByZXF1aXJlIHRoYXQgZTJmc2NrIHVzZSBWTSBmaXJzdC4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgImUyZnNjay5oIgorI2luY2x1ZGUgInByb2JsZW0uaCIKKworLyogU2NoZWR1bGUgYSBkaXIgdG8gYmUgcmVidWlsdCBkdXJpbmcgcGFzcyAzQS4gKi8KK3ZvaWQgZTJmc2NrX3JlaGFzaF9kaXJfbGF0ZXIoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubykKK3sKKwlpZiAoIWN0eC0+ZGlyc190b19oYXNoKQorCQlleHQyZnNfdTMyX2xpc3RfY3JlYXRlKCZjdHgtPmRpcnNfdG9faGFzaCwgNTApOworCWlmIChjdHgtPmRpcnNfdG9faGFzaCkKKwkJZXh0MmZzX3UzMl9saXN0X2FkZChjdHgtPmRpcnNfdG9faGFzaCwgaW5vKTsKK30KKworLyogQXNrIGlmIGEgZGlyIHdpbGwgYmUgcmVidWlsdCBkdXJpbmcgcGFzcyAzQS4gKi8KK2ludCBlMmZzY2tfZGlyX3dpbGxfYmVfcmVoYXNoZWQoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubykKK3sKKwlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9DT01QUkVTU19ESVJTKQorCQlyZXR1cm4gMTsKKwlpZiAoIWN0eC0+ZGlyc190b19oYXNoKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gZXh0MmZzX3UzMl9saXN0X3Rlc3QoY3R4LT5kaXJzX3RvX2hhc2gsIGlubyk7Cit9CisKKyN1bmRlZiBSRUhBU0hfREVCVUcKKworc3RydWN0IGZpbGxfZGlyX3N0cnVjdCB7CisJY2hhciAqYnVmOworCXN0cnVjdCBleHQyX2lub2RlICppbm9kZTsKKwlleHQyX2lub190IGlubzsKKwllcnJjb2RlX3QgZXJyOworCWUyZnNja190IGN0eDsKKwlzdHJ1Y3QgaGFzaF9lbnRyeSAqaGFycmF5OworCWludCBtYXhfYXJyYXksIG51bV9hcnJheTsKKwl1bnNpZ25lZCBpbnQgZGlyX3NpemU7CisJaW50IGNvbXByZXNzOworCWlub190IHBhcmVudDsKKwlleHQyX2lub190IGRpcjsKK307CisKK3N0cnVjdCBoYXNoX2VudHJ5IHsKKwlleHQyX2Rpcmhhc2hfdAloYXNoOworCWV4dDJfZGlyaGFzaF90CW1pbm9yX2hhc2g7CisJaW5vX3QJCWlubzsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkJKmRpcjsKK307CisKK3N0cnVjdCBvdXRfZGlyIHsKKwlpbnQJCW51bTsKKwlpbnQJCW1heDsKKwljaGFyCQkqYnVmOworCWV4dDJfZGlyaGFzaF90CSpoYXNoZXM7Cit9OworCitzdGF0aWMgaW50IGZpbGxfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICBibGs2NF90ICpibG9ja19uciwKKwkJCSAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IGZpbGxfZGlyX3N0cnVjdAkqZmQgPSAoc3RydWN0IGZpbGxfZGlyX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJc3RydWN0IGhhc2hfZW50cnkgCSpuZXdfYXJyYXksICplbnQ7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5IAkqZGlyZW50OworCWNoYXIJCQkqZGlyOworCXVuc2lnbmVkIGludAkJb2Zmc2V0LCBkaXJfb2Zmc2V0LCByZWNfbGVuLCBuYW1lX2xlbjsKKwlpbnQJCQloYXNoX2FsZzsKKworCWlmIChibG9ja2NudCA8IDApCisJCXJldHVybiAwOworCisJb2Zmc2V0ID0gYmxvY2tjbnQgKiBmcy0+YmxvY2tzaXplOworCWlmIChvZmZzZXQgKyBmcy0+YmxvY2tzaXplID4gZmQtPmlub2RlLT5pX3NpemUpIHsKKwkJZmQtPmVyciA9IEVYVDJfRVRfRElSX0NPUlJVUFRFRDsKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCX0KKworCWRpciA9IChmZC0+YnVmK29mZnNldCk7CisJaWYgKCpibG9ja19uciA9PSAwKSB7CisJCW1lbXNldChkaXIsIDAsIGZzLT5ibG9ja3NpemUpOworCQlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIGRpcjsKKwkJKHZvaWQpIGV4dDJmc19zZXRfcmVjX2xlbihmcywgZnMtPmJsb2Nrc2l6ZSwgZGlyZW50KTsKKwl9IGVsc2UgeworCQlpbnQgZmxhZ3MgPSBmcy0+ZmxhZ3M7CisJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQlmZC0+ZXJyID0gZXh0MmZzX3JlYWRfZGlyX2Jsb2NrNChmcywgKmJsb2NrX25yLCBkaXIsIDAsCisJCQkJCQkgZmQtPmRpcik7CisJCWZzLT5mbGFncyA9IChmbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpIHwKKwkJCSAgICAoZnMtPmZsYWdzICYgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCQlpZiAoZmQtPmVycikKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwl9CisJaGFzaF9hbGcgPSBmcy0+c3VwZXItPnNfZGVmX2hhc2hfdmVyc2lvbjsKKwlpZiAoKGhhc2hfYWxnIDw9IEVYVDJfSEFTSF9URUEpICYmCisJICAgIChmcy0+c3VwZXItPnNfZmxhZ3MgJiBFWFQyX0ZMQUdTX1VOU0lHTkVEX0hBU0gpKQorCQloYXNoX2FsZyArPSAzOworCS8qIFdoaWxlIHRoZSBkaXJlY3RvcnkgYmxvY2sgaXMgImhvdCIsIGluZGV4IGl0LiAqLworCWRpcl9vZmZzZXQgPSAwOworCXdoaWxlIChkaXJfb2Zmc2V0IDwgZnMtPmJsb2Nrc2l6ZSkgeworCQlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIChkaXIgKyBkaXJfb2Zmc2V0KTsKKwkJKHZvaWQpIGV4dDJmc19nZXRfcmVjX2xlbihmcywgZGlyZW50LCAmcmVjX2xlbik7CisJCW5hbWVfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpOworCQlpZiAoKChkaXJfb2Zmc2V0ICsgcmVjX2xlbikgPiBmcy0+YmxvY2tzaXplKSB8fAorCQkgICAgKHJlY19sZW4gPCA4KSB8fAorCQkgICAgKChyZWNfbGVuICUgNCkgIT0gMCkgfHwKKwkJICAgIChuYW1lX2xlbiArIDggPiByZWNfbGVuKSkgeworCQkJZmQtPmVyciA9IEVYVDJfRVRfRElSX0NPUlJVUFRFRDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQlkaXJfb2Zmc2V0ICs9IHJlY19sZW47CisJCWlmIChkaXJlbnQtPmlub2RlID09IDApCisJCQljb250aW51ZTsKKwkJaWYgKCFmZC0+Y29tcHJlc3MgJiYgKG5hbWVfbGVuID09IDEpICYmCisJCSAgICAoZGlyZW50LT5uYW1lWzBdID09ICcuJykpCisJCQljb250aW51ZTsKKwkJaWYgKCFmZC0+Y29tcHJlc3MgJiYgKG5hbWVfbGVuID09IDIpICYmCisJCSAgICAoZGlyZW50LT5uYW1lWzBdID09ICcuJykgJiYgKGRpcmVudC0+bmFtZVsxXSA9PSAnLicpKSB7CisJCQlmZC0+cGFyZW50ID0gZGlyZW50LT5pbm9kZTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChmZC0+bnVtX2FycmF5ID49IGZkLT5tYXhfYXJyYXkpIHsKKwkJCW5ld19hcnJheSA9IHJlYWxsb2MoZmQtPmhhcnJheSwKKwkJCSAgICBzaXplb2Yoc3RydWN0IGhhc2hfZW50cnkpICogKGZkLT5tYXhfYXJyYXkrNTAwKSk7CisJCQlpZiAoIW5ld19hcnJheSkgeworCQkJCWZkLT5lcnIgPSBFTk9NRU07CisJCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQkJfQorCQkJZmQtPmhhcnJheSA9IG5ld19hcnJheTsKKwkJCWZkLT5tYXhfYXJyYXkgKz0gNTAwOworCQl9CisJCWVudCA9IGZkLT5oYXJyYXkgKyBmZC0+bnVtX2FycmF5Kys7CisJCWVudC0+ZGlyID0gZGlyZW50OworCQlmZC0+ZGlyX3NpemUgKz0gRVhUMl9ESVJfUkVDX0xFTihuYW1lX2xlbik7CisJCWVudC0+aW5vID0gZGlyZW50LT5pbm9kZTsKKwkJaWYgKGZkLT5jb21wcmVzcykKKwkJCWVudC0+aGFzaCA9IGVudC0+bWlub3JfaGFzaCA9IDA7CisJCWVsc2UgeworCQkJZmQtPmVyciA9IGV4dDJmc19kaXJoYXNoKGhhc2hfYWxnLCBkaXJlbnQtPm5hbWUsCisJCQkJCQkgbmFtZV9sZW4sCisJCQkJCQkgZnMtPnN1cGVyLT5zX2hhc2hfc2VlZCwKKwkJCQkJCSAmZW50LT5oYXNoLCAmZW50LT5taW5vcl9oYXNoKTsKKwkJCWlmIChmZC0+ZXJyKQorCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCisvKiBVc2VkIGZvciBzb3J0aW5nIHRoZSBoYXNoIGVudHJ5ICovCitzdGF0aWMgRVhUMl9RU09SVF9UWVBFIGlub19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqaGVfYSA9IChjb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqKSBhOworCWNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICpoZV9iID0gKGNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICopIGI7CisKKwlyZXR1cm4gKGhlX2EtPmlubyAtIGhlX2ItPmlubyk7Cit9CisKKy8qIFVzZWQgZm9yIHNvcnRpbmcgdGhlIGhhc2ggZW50cnkgKi8KK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgbmFtZV9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqaGVfYSA9IChjb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqKSBhOworCWNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICpoZV9iID0gKGNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICopIGI7CisJdW5zaWduZWQgaW50IGhlX2FfbGVuLCBoZV9iX2xlbiwgbWluX2xlbjsKKwlpbnQJcmV0OworCisJaGVfYV9sZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGhlX2EtPmRpcik7CisJaGVfYl9sZW4gPSBleHQyZnNfZGlyZW50X25hbWVfbGVuKGhlX2ItPmRpcik7CisJbWluX2xlbiA9IGhlX2FfbGVuOworCWlmIChtaW5fbGVuID4gaGVfYl9sZW4pCisJCW1pbl9sZW4gPSBoZV9iX2xlbjsKKworCXJldCA9IHN0cm5jbXAoaGVfYS0+ZGlyLT5uYW1lLCBoZV9iLT5kaXItPm5hbWUsIG1pbl9sZW4pOworCWlmIChyZXQgPT0gMCkgeworCQlpZiAoaGVfYV9sZW4gPiBoZV9iX2xlbikKKwkJCXJldCA9IDE7CisJCWVsc2UgaWYgKGhlX2FfbGVuIDwgaGVfYl9sZW4pCisJCQlyZXQgPSAtMTsKKwkJZWxzZQorCQkJcmV0ID0gaGVfYi0+ZGlyLT5pbm9kZSAtIGhlX2EtPmRpci0+aW5vZGU7CisJfQorCXJldHVybiByZXQ7Cit9CisKKy8qIFVzZWQgZm9yIHNvcnRpbmcgdGhlIGhhc2ggZW50cnkgKi8KK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgaGFzaF9jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqaGVfYSA9IChjb25zdCBzdHJ1Y3QgaGFzaF9lbnRyeSAqKSBhOworCWNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICpoZV9iID0gKGNvbnN0IHN0cnVjdCBoYXNoX2VudHJ5ICopIGI7CisJaW50CXJldDsKKworCWlmIChoZV9hLT5oYXNoID4gaGVfYi0+aGFzaCkKKwkJcmV0ID0gMTsKKwllbHNlIGlmIChoZV9hLT5oYXNoIDwgaGVfYi0+aGFzaCkKKwkJcmV0ID0gLTE7CisJZWxzZSB7CisJCWlmIChoZV9hLT5taW5vcl9oYXNoID4gaGVfYi0+bWlub3JfaGFzaCkKKwkJCXJldCA9IDE7CisJCWVsc2UgaWYgKGhlX2EtPm1pbm9yX2hhc2ggPCBoZV9iLT5taW5vcl9oYXNoKQorCQkJcmV0ID0gLTE7CisJCWVsc2UKKwkJCXJldCA9IG5hbWVfY21wKGEsIGIpOworCX0KKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgZXJyY29kZV90IGFsbG9jX3NpemVfZGlyKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3Qgb3V0X2RpciAqb3V0ZGlyLAorCQkJCWludCBibG9ja3MpCit7CisJdm9pZAkJCSpuZXdfbWVtOworCisJaWYgKG91dGRpci0+bWF4KSB7CisJCW5ld19tZW0gPSByZWFsbG9jKG91dGRpci0+YnVmLCBibG9ja3MgKiBmcy0+YmxvY2tzaXplKTsKKwkJaWYgKCFuZXdfbWVtKQorCQkJcmV0dXJuIEVOT01FTTsKKwkJb3V0ZGlyLT5idWYgPSBuZXdfbWVtOworCQluZXdfbWVtID0gcmVhbGxvYyhvdXRkaXItPmhhc2hlcywKKwkJCQkgIGJsb2NrcyAqIHNpemVvZihleHQyX2Rpcmhhc2hfdCkpOworCQlpZiAoIW5ld19tZW0pCisJCQlyZXR1cm4gRU5PTUVNOworCQlvdXRkaXItPmhhc2hlcyA9IG5ld19tZW07CisJfSBlbHNlIHsKKwkJb3V0ZGlyLT5idWYgPSBtYWxsb2MoYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSk7CisJCW91dGRpci0+aGFzaGVzID0gbWFsbG9jKGJsb2NrcyAqIHNpemVvZihleHQyX2Rpcmhhc2hfdCkpOworCQlvdXRkaXItPm51bSA9IDA7CisJfQorCW91dGRpci0+bWF4ID0gYmxvY2tzOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmcmVlX291dF9kaXIoc3RydWN0IG91dF9kaXIgKm91dGRpcikKK3sKKwlmcmVlKG91dGRpci0+YnVmKTsKKwlmcmVlKG91dGRpci0+aGFzaGVzKTsKKwlvdXRkaXItPm1heCA9IDA7CisJb3V0ZGlyLT5udW0gPTA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZ2V0X25leHRfYmxvY2soZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBvdXRfZGlyICpvdXRkaXIsCisJCQkgY2hhciAqKiByZXQpCit7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmIChvdXRkaXItPm51bSA+PSBvdXRkaXItPm1heCkgeworCQlyZXR2YWwgPSBhbGxvY19zaXplX2Rpcihmcywgb3V0ZGlyLCBvdXRkaXItPm1heCArIDUwKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCSpyZXQgPSBvdXRkaXItPmJ1ZiArIChvdXRkaXItPm51bSsrICogZnMtPmJsb2Nrc2l6ZSk7CisJbWVtc2V0KCpyZXQsIDAsIGZzLT5ibG9ja3NpemUpOworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIG1ha2UgYSB1bmlxdWUgZmlsZW5hbWUuICBXZSBkbyB0aGlzIGJ5CisgKiBhcHBlbmRpbmcgfjAsIGFuZCB0aGVuIGluY3JlbWVudGluZyB0aGUgbnVtYmVyLiAgSG93ZXZlciwgd2UgY2Fubm90CisgKiBleHBhbmQgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZW5hbWUgYmV5b25kIHRoZSBwYWRkaW5nIGF2YWlsYWJsZSBpbgorICogdGhlIGRpcmVjdG9yeSBlbnRyeS4KKyAqLworc3RhdGljIHZvaWQgbXV0YXRlX25hbWUoY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgKmxlbikKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgbCA9ICpsZW47CisKKwkvKgorCSAqIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiBpdCBsb29rcyB0aGUgbmFtZSBoYXMgYmVlbiBtdXRhdGVkCisJICogYWxyZWFkeQorCSAqLworCWZvciAoaSA9IGwtMTsgaSA+IDA7IGktLSkgeworCQlpZiAoIWlzZGlnaXQoc3RyW2ldKSkKKwkJCWJyZWFrOworCX0KKwlpZiAoKGkgPT0gKGludClsIC0gMSkgfHwgKHN0cltpXSAhPSAnficpKSB7CisJCWlmICgoKGwtMSkgJiAzKSA8IDIpCisJCQlsICs9IDI7CisJCWVsc2UKKwkJCWwgPSAobCszKSAmIH4zOworCQlzdHJbbC0yXSA9ICd+JzsKKwkJc3RyW2wtMV0gPSAnMCc7CisJCSpsZW4gPSBsOworCQlyZXR1cm47CisJfQorCWZvciAoaSA9IGwtMTsgaSA+PSAwOyBpLS0pIHsKKwkJaWYgKGlzZGlnaXQoc3RyW2ldKSkgeworCQkJaWYgKHN0cltpXSA9PSAnOScpCisJCQkJc3RyW2ldID0gJzAnOworCQkJZWxzZSB7CisJCQkJc3RyW2ldKys7CisJCQkJcmV0dXJuOworCQkJfQorCQkJY29udGludWU7CisJCX0KKwkJaWYgKGkgPT0gMSkgeworCQkJaWYgKHN0clswXSA9PSAneicpCisJCQkJc3RyWzBdID0gJ0EnOworCQkJZWxzZSBpZiAoc3RyWzBdID09ICdaJykgeworCQkJCXN0clswXSA9ICd+JzsKKwkJCQlzdHJbMV0gPSAnMCc7CisJCQl9IGVsc2UKKwkJCQlzdHJbMF0rKzsKKwkJfSBlbHNlIGlmIChpID4gMCkgeworCQkJc3RyW2ldID0gJzEnOworCQkJc3RyW2ktMV0gPSAnfic7CisJCX0gZWxzZSB7CisJCQlpZiAoc3RyWzBdID09ICd+JykKKwkJCQlzdHJbMF0gPSAnYSc7CisJCQllbHNlCisJCQkJc3RyWzBdKys7CisJCX0KKwkJYnJlYWs7CisJfQorfQorCitzdGF0aWMgaW50IGR1cGxpY2F0ZV9zZWFyY2hfYW5kX2ZpeChlMmZzY2tfdCBjdHgsIGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgICBleHQyX2lub190IGlubywKKwkJCQkgICAgc3RydWN0IGZpbGxfZGlyX3N0cnVjdCAqZmQpCit7CisJc3RydWN0IHByb2JsZW1fY29udGV4dAlwY3R4OworCXN0cnVjdCBoYXNoX2VudHJ5IAkqZW50LCAqcHJldjsKKwlpbnQJCQlpLCBqOworCWludAkJCWZpeGVkID0gMDsKKwljaGFyCQkJbmV3X25hbWVbMjU2XTsKKwl1bnNpZ25lZCBpbnQJCW5ld19sZW47CisJaW50CQkJaGFzaF9hbGc7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCXBjdHguaW5vID0gaW5vOworCisJaGFzaF9hbGcgPSBmcy0+c3VwZXItPnNfZGVmX2hhc2hfdmVyc2lvbjsKKwlpZiAoKGhhc2hfYWxnIDw9IEVYVDJfSEFTSF9URUEpICYmCisJICAgIChmcy0+c3VwZXItPnNfZmxhZ3MgJiBFWFQyX0ZMQUdTX1VOU0lHTkVEX0hBU0gpKQorCQloYXNoX2FsZyArPSAzOworCisJZm9yIChpPTE7IGkgPCBmZC0+bnVtX2FycmF5OyBpKyspIHsKKwkJZW50ID0gZmQtPmhhcnJheSArIGk7CisJCXByZXYgPSBlbnQgLSAxOworCQlpZiAoIWVudC0+ZGlyLT5pbm9kZSB8fAorCQkgICAgKGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZW50LT5kaXIpICE9CisJCSAgICAgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihwcmV2LT5kaXIpKSB8fAorCQkgICAgc3RybmNtcChlbnQtPmRpci0+bmFtZSwgcHJldi0+ZGlyLT5uYW1lLAorCQkJICAgICBleHQyZnNfZGlyZW50X25hbWVfbGVuKGVudC0+ZGlyKSkpCisJCQljb250aW51ZTsKKwkJcGN0eC5kaXJlbnQgPSBlbnQtPmRpcjsKKwkJaWYgKChlbnQtPmRpci0+aW5vZGUgPT0gcHJldi0+ZGlyLT5pbm9kZSkgJiYKKwkJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMl9EVVBMSUNBVEVfRElSRU5ULCAmcGN0eCkpIHsKKwkJCWUyZnNja19hZGp1c3RfaW5vZGVfY291bnQoY3R4LCBlbnQtPmRpci0+aW5vZGUsIC0xKTsKKwkJCWVudC0+ZGlyLT5pbm9kZSA9IDA7CisJCQlmaXhlZCsrOworCQkJY29udGludWU7CisJCX0KKwkJbmV3X2xlbiA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZW50LT5kaXIpOworCQltZW1jcHkobmV3X25hbWUsIGVudC0+ZGlyLT5uYW1lLCBuZXdfbGVuKTsKKwkJbXV0YXRlX25hbWUobmV3X25hbWUsICZuZXdfbGVuKTsKKwkJZm9yIChqPTA7IGogPCBmZC0+bnVtX2FycmF5OyBqKyspIHsKKwkJCWlmICgoaT09aikgfHwKKwkJCSAgICAobmV3X2xlbiAhPQorCQkJICAgICAodW5zaWduZWQpIGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZmQtPmhhcnJheVtqXS5kaXIpKSB8fAorCQkJICAgIHN0cm5jbXAobmV3X25hbWUsIGZkLT5oYXJyYXlbal0uZGlyLT5uYW1lLCBuZXdfbGVuKSkKKwkJCQljb250aW51ZTsKKwkJCW11dGF0ZV9uYW1lKG5ld19uYW1lLCAmbmV3X2xlbik7CisKKwkJCWogPSAtMTsKKwkJfQorCQluZXdfbmFtZVtuZXdfbGVuXSA9IDA7CisJCXBjdHguc3RyID0gbmV3X25hbWU7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzJfTk9OX1VOSVFVRV9GSUxFLCAmcGN0eCkpIHsKKwkJCW1lbWNweShlbnQtPmRpci0+bmFtZSwgbmV3X25hbWUsIG5ld19sZW4pOworCQkJZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oZW50LT5kaXIsIG5ld19sZW4pOworCQkJZXh0MmZzX2Rpcmhhc2goaGFzaF9hbGcsIG5ld19uYW1lLCBuZXdfbGVuLAorCQkJCSAgICAgICBmcy0+c3VwZXItPnNfaGFzaF9zZWVkLAorCQkJCSAgICAgICAmZW50LT5oYXNoLCAmZW50LT5taW5vcl9oYXNoKTsKKwkJCWZpeGVkKys7CisJCX0KKwl9CisJcmV0dXJuIGZpeGVkOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QgY29weV9kaXJfZW50cmllcyhlMmZzY2tfdCBjdHgsCisJCQkJICBzdHJ1Y3QgZmlsbF9kaXJfc3RydWN0ICpmZCwKKwkJCQkgIHN0cnVjdCBvdXRfZGlyICpvdXRkaXIpCit7CisJZXh0Ml9maWxzeXMgCQlmcyA9IGN0eC0+ZnM7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCSpibG9ja19zdGFydDsKKwlzdHJ1Y3QgaGFzaF9lbnRyeSAJKmVudDsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkJKmRpcmVudDsKKwl1bnNpZ25lZCBpbnQJCXJlY19sZW4sIHByZXZfcmVjX2xlbiwgbGVmdCwgc2xhY2ssIG9mZnNldDsKKwlpbnQJCQlpOworCWV4dDJfZGlyaGFzaF90CQlwcmV2X2hhc2g7CisJaW50CQkJY3N1bV9zaXplID0gMDsKKwlzdHJ1Y3QJCQlleHQyX2Rpcl9lbnRyeV90YWlsICp0OworCisJaWYgKGN0eC0+aHRyZWVfc2xhY2tfcGVyY2VudGFnZSA9PSAyNTUpIHsKKwkJcHJvZmlsZV9nZXRfdWludChjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKKwkJCQkgImluZGV4ZWRfZGlyX3NsYWNrX3BlcmNlbnRhZ2UiLAorCQkJCSAwLCAyMCwKKwkJCQkgJmN0eC0+aHRyZWVfc2xhY2tfcGVyY2VudGFnZSk7CisJCWlmIChjdHgtPmh0cmVlX3NsYWNrX3BlcmNlbnRhZ2UgPiAxMDApCisJCQljdHgtPmh0cmVlX3NsYWNrX3BlcmNlbnRhZ2UgPSAyMDsKKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKworCW91dGRpci0+bWF4ID0gMDsKKwlyZXR2YWwgPSBhbGxvY19zaXplX2Rpcihmcywgb3V0ZGlyLAorCQkJCShmZC0+ZGlyX3NpemUgLyBmcy0+YmxvY2tzaXplKSArIDIpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJb3V0ZGlyLT5udW0gPSBmZC0+Y29tcHJlc3MgPyAwIDogMTsKKwlvZmZzZXQgPSAwOworCW91dGRpci0+aGFzaGVzWzBdID0gMDsKKwlwcmV2X2hhc2ggPSAxOworCWlmICgocmV0dmFsID0gZ2V0X25leHRfYmxvY2soZnMsIG91dGRpciwgJmJsb2NrX3N0YXJ0KSkpCisJCXJldHVybiByZXR2YWw7CisJZGlyZW50ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBibG9ja19zdGFydDsKKwlwcmV2X3JlY19sZW4gPSAwOworCXJlY19sZW4gPSAwOworCWxlZnQgPSBmcy0+YmxvY2tzaXplIC0gY3N1bV9zaXplOworCXNsYWNrID0gZmQtPmNvbXByZXNzID8gMTIgOgorCQkoKGZzLT5ibG9ja3NpemUgLSBjc3VtX3NpemUpICogY3R4LT5odHJlZV9zbGFja19wZXJjZW50YWdlKS8xMDA7CisJaWYgKHNsYWNrIDwgMTIpCisJCXNsYWNrID0gMTI7CisJZm9yIChpID0gMDsgaSA8IGZkLT5udW1fYXJyYXk7IGkrKykgeworCQllbnQgPSBmZC0+aGFycmF5ICsgaTsKKwkJaWYgKGVudC0+ZGlyLT5pbm9kZSA9PSAwKQorCQkJY29udGludWU7CisJCXJlY19sZW4gPSBFWFQyX0RJUl9SRUNfTEVOKGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZW50LT5kaXIpKTsKKwkJaWYgKHJlY19sZW4gPiBsZWZ0KSB7CisJCQlpZiAobGVmdCkgeworCQkJCWxlZnQgKz0gcHJldl9yZWNfbGVuOworCQkJCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgbGVmdCwgZGlyZW50KTsKKwkJCQlpZiAocmV0dmFsKQorCQkJCQlyZXR1cm4gcmV0dmFsOworCQkJfQorCQkJaWYgKGNzdW1fc2l6ZSkgeworCQkJCXQgPSBFWFQyX0RJUkVOVF9UQUlMKGJsb2NrX3N0YXJ0LAorCQkJCQkJICAgICBmcy0+YmxvY2tzaXplKTsKKwkJCQlleHQyZnNfaW5pdGlhbGl6ZV9kaXJlbnRfdGFpbChmcywgdCk7CisJCQl9CisJCQlpZiAoKHJldHZhbCA9IGdldF9uZXh0X2Jsb2NrKGZzLCBvdXRkaXIsCisJCQkJCQkgICAgICAmYmxvY2tfc3RhcnQpKSkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQkJb2Zmc2V0ID0gMDsKKwkJfQorCQlsZWZ0ID0gKGZzLT5ibG9ja3NpemUgLSBjc3VtX3NpemUpIC0gb2Zmc2V0OworCQlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIChibG9ja19zdGFydCArIG9mZnNldCk7CisJCWlmIChvZmZzZXQgPT0gMCkgeworCQkJaWYgKGVudC0+aGFzaCA9PSBwcmV2X2hhc2gpCisJCQkJb3V0ZGlyLT5oYXNoZXNbb3V0ZGlyLT5udW0tMV0gPSBlbnQtPmhhc2ggfCAxOworCQkJZWxzZQorCQkJCW91dGRpci0+aGFzaGVzW291dGRpci0+bnVtLTFdID0gZW50LT5oYXNoOworCQl9CisJCWRpcmVudC0+aW5vZGUgPSBlbnQtPmRpci0+aW5vZGU7CisJCWV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuKGRpcmVudCwKKwkJCQkJICAgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihlbnQtPmRpcikpOworCQlleHQyZnNfZGlyZW50X3NldF9maWxlX3R5cGUoZGlyZW50LAorCQkJCQkgICAgZXh0MmZzX2RpcmVudF9maWxlX3R5cGUoZW50LT5kaXIpKTsKKwkJcmV0dmFsID0gZXh0MmZzX3NldF9yZWNfbGVuKGZzLCByZWNfbGVuLCBkaXJlbnQpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJcHJldl9yZWNfbGVuID0gcmVjX2xlbjsKKwkJbWVtY3B5KGRpcmVudC0+bmFtZSwgZW50LT5kaXItPm5hbWUsCisJCSAgICAgICBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkpOworCQlvZmZzZXQgKz0gcmVjX2xlbjsKKwkJbGVmdCAtPSByZWNfbGVuOworCQlpZiAobGVmdCA8IHNsYWNrKSB7CisJCQlwcmV2X3JlY19sZW4gKz0gbGVmdDsKKwkJCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgcHJldl9yZWNfbGVuLCBkaXJlbnQpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQkJb2Zmc2V0ICs9IGxlZnQ7CisJCQlsZWZ0ID0gMDsKKwkJfQorCQlwcmV2X2hhc2ggPSBlbnQtPmhhc2g7CisJfQorCWlmIChsZWZ0KQorCQlyZXR2YWwgPSBleHQyZnNfc2V0X3JlY19sZW4oZnMsIHJlY19sZW4gKyBsZWZ0LCBkaXJlbnQpOworCWlmIChjc3VtX3NpemUpIHsKKwkJdCA9IEVYVDJfRElSRU5UX1RBSUwoYmxvY2tfc3RhcnQsIGZzLT5ibG9ja3NpemUpOworCQlleHQyZnNfaW5pdGlhbGl6ZV9kaXJlbnRfdGFpbChmcywgdCk7CisJfQorCisJcmV0dXJuIHJldHZhbDsKK30KKworCitzdGF0aWMgc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICpzZXRfcm9vdF9ub2RlKGV4dDJfZmlsc3lzIGZzLCBjaGFyICpidWYsCisJCQkJICAgIGV4dDJfaW5vX3QgaW5vLCBleHQyX2lub190IHBhcmVudCkKK3sKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgCQkqZGlyOworCXN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAgCSpyb290OworCXN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQJKmxpbWl0czsKKwlpbnQJCQkJZmlsZXR5cGUgPSAwOworCWludAkJCQljc3VtX3NpemUgPSAwOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9maWxldHlwZShmcy0+c3VwZXIpKQorCQlmaWxldHlwZSA9IEVYVDJfRlRfRElSOworCisJbWVtc2V0KGJ1ZiwgMCwgZnMtPmJsb2Nrc2l6ZSk7CisJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBidWY7CisJZGlyLT5pbm9kZSA9IGlubzsKKwlkaXItPm5hbWVbMF0gPSAnLic7CisJZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oZGlyLCAxKTsKKwlleHQyZnNfZGlyZW50X3NldF9maWxlX3R5cGUoZGlyLCBmaWxldHlwZSk7CisJZGlyLT5yZWNfbGVuID0gMTI7CisJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAoYnVmICsgMTIpOworCWRpci0+aW5vZGUgPSBwYXJlbnQ7CisJZGlyLT5uYW1lWzBdID0gJy4nOworCWRpci0+bmFtZVsxXSA9ICcuJzsKKwlleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbihkaXIsIDIpOworCWV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShkaXIsIGZpbGV0eXBlKTsKKwlkaXItPnJlY19sZW4gPSBmcy0+YmxvY2tzaXplIC0gMTI7CisKKwlyb290ID0gKHN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAqKSAoYnVmKzI0KTsKKwlyb290LT5yZXNlcnZlZF96ZXJvID0gMDsKKwlyb290LT5oYXNoX3ZlcnNpb24gPSBmcy0+c3VwZXItPnNfZGVmX2hhc2hfdmVyc2lvbjsKKwlyb290LT5pbmZvX2xlbmd0aCA9IDg7CisJcm9vdC0+aW5kaXJlY3RfbGV2ZWxzID0gMDsKKwlyb290LT51bnVzZWRfZmxhZ3MgPSAwOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCWNzdW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKTsKKworCWxpbWl0cyA9IChzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICopIChidWYrMzIpOworCWxpbWl0cy0+bGltaXQgPSAoZnMtPmJsb2Nrc2l6ZSAtICgzMiArIGNzdW1fc2l6ZSkpIC8KKwkJCXNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSk7CisJbGltaXRzLT5jb3VudCA9IDA7CisKKwlyZXR1cm4gcm9vdDsKK30KKworCitzdGF0aWMgc3RydWN0IGV4dDJfZHhfZW50cnkgKnNldF9pbnRfbm9kZShleHQyX2ZpbHN5cyBmcywgY2hhciAqYnVmKQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAJCSpkaXI7CisJc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdAkqbGltaXRzOworCWludAkJCQljc3VtX3NpemUgPSAwOworCisJbWVtc2V0KGJ1ZiwgMCwgZnMtPmJsb2Nrc2l6ZSk7CisJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBidWY7CisJZGlyLT5pbm9kZSA9IDA7CisJKHZvaWQpIGV4dDJmc19zZXRfcmVjX2xlbihmcywgZnMtPmJsb2Nrc2l6ZSwgZGlyKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQljc3VtX3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfZHhfdGFpbCk7CisKKwlsaW1pdHMgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSAoYnVmKzgpOworCWxpbWl0cy0+bGltaXQgPSAoZnMtPmJsb2Nrc2l6ZSAtICg4ICsgY3N1bV9zaXplKSkgLworCQkJc2l6ZW9mKHN0cnVjdCBleHQyX2R4X2VudHJ5KTsKKwlsaW1pdHMtPmNvdW50ID0gMDsKKworCXJldHVybiAoc3RydWN0IGV4dDJfZHhfZW50cnkgKikgbGltaXRzOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgbGVhZiBub2RlcyB3aGljaCBoYXZlIGJlZW4gd3JpdHRlbiBpbgorICogb3V0ZGlyLCBhbmQgcG9wdWxhdGVzIHRoZSByb290IG5vZGUgYW5kIGFueSBuZWNlc3NhcnkgaW50ZXJpb3Igbm9kZXMuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgY2FsY3VsYXRlX3RyZWUoZXh0Ml9maWxzeXMgZnMsCisJCQkJc3RydWN0IG91dF9kaXIgKm91dGRpciwKKwkJCQlleHQyX2lub190IGlubywKKwkJCQlleHQyX2lub190IHBhcmVudCkKK3sKKwlzdHJ1Y3QgZXh0Ml9keF9yb290X2luZm8gIAkqcm9vdF9pbmZvOworCXN0cnVjdCBleHQyX2R4X2VudHJ5IAkJKnJvb3QsICpkeF9lbnQgPSAwOworCXN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQJKnJvb3RfbGltaXQsICpsaW1pdDsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisJY2hhcgkJCQkqIGJsb2NrX3N0YXJ0OworCWludAkJCQlpLCBjMSwgYzIsIG5ibGtzOworCWludAkJCQlsaW1pdF9vZmZzZXQsIHJvb3Rfb2Zmc2V0OworCisJcm9vdF9pbmZvID0gc2V0X3Jvb3Rfbm9kZShmcywgb3V0ZGlyLT5idWYsIGlubywgcGFyZW50KTsKKwlyb290X29mZnNldCA9IGxpbWl0X29mZnNldCA9ICgoY2hhciAqKSByb290X2luZm8gLSBvdXRkaXItPmJ1ZikgKworCQlyb290X2luZm8tPmluZm9fbGVuZ3RoOworCXJvb3RfbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSAob3V0ZGlyLT5idWYgKyBsaW1pdF9vZmZzZXQpOworCWMxID0gcm9vdF9saW1pdC0+bGltaXQ7CisJbmJsa3MgPSBvdXRkaXItPm51bTsKKworCS8qIFdyaXRlIG91dCB0aGUgcG9pbnRlciBibG9ja3MgKi8KKwlpZiAobmJsa3MtMSA8PSBjMSkgeworCQkvKiBKdXN0IHdyaXRlIG91dCB0aGUgcm9vdCBibG9jaywgYW5kIHdlJ3JlIGRvbmUgKi8KKwkJcm9vdCA9IChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKSAob3V0ZGlyLT5idWYgKyByb290X29mZnNldCk7CisJCWZvciAoaT0xOyBpIDwgbmJsa3M7IGkrKykgeworCQkJcm9vdC0+YmxvY2sgPSBleHQyZnNfY3B1X3RvX2xlMzIoaSk7CisJCQlpZiAoaSAhPSAxKQorCQkJCXJvb3QtPmhhc2ggPQorCQkJCQlleHQyZnNfY3B1X3RvX2xlMzIob3V0ZGlyLT5oYXNoZXNbaV0pOworCQkJcm9vdCsrOworCQkJYzEtLTsKKwkJfQorCX0gZWxzZSB7CisJCWMyID0gMDsKKwkJbGltaXQgPSAwOworCQlyb290X2luZm8tPmluZGlyZWN0X2xldmVscyA9IDE7CisJCWZvciAoaT0xOyBpIDwgbmJsa3M7IGkrKykgeworCQkJaWYgKGMxID09IDApCisJCQkJcmV0dXJuIEVOT1NQQzsKKwkJCWlmIChjMiA9PSAwKSB7CisJCQkJaWYgKGxpbWl0KQorCQkJCQlsaW1pdC0+bGltaXQgPSBsaW1pdC0+Y291bnQgPQorCQlleHQyZnNfY3B1X3RvX2xlMTYobGltaXQtPmxpbWl0KTsKKwkJCQlyb290ID0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopCisJCQkJCShvdXRkaXItPmJ1ZiArIHJvb3Rfb2Zmc2V0KTsKKwkJCQlyb290LT5ibG9jayA9IGV4dDJmc19jcHVfdG9fbGUzMihvdXRkaXItPm51bSk7CisJCQkJaWYgKGkgIT0gMSkKKwkJCQkJcm9vdC0+aGFzaCA9CisJCQlleHQyZnNfY3B1X3RvX2xlMzIob3V0ZGlyLT5oYXNoZXNbaV0pOworCQkJCWlmICgocmV0dmFsID0gIGdldF9uZXh0X2Jsb2NrKGZzLCBvdXRkaXIsCisJCQkJCQkJICAgICAgJmJsb2NrX3N0YXJ0KSkpCisJCQkJCXJldHVybiByZXR2YWw7CisJCQkJZHhfZW50ID0gc2V0X2ludF9ub2RlKGZzLCBibG9ja19zdGFydCk7CisJCQkJbGltaXQgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSBkeF9lbnQ7CisJCQkJYzIgPSBsaW1pdC0+bGltaXQ7CisJCQkJcm9vdF9vZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCBleHQyX2R4X2VudHJ5KTsKKwkJCQljMS0tOworCQkJfQorCQkJZHhfZW50LT5ibG9jayA9IGV4dDJmc19jcHVfdG9fbGUzMihpKTsKKwkJCWlmIChjMiAhPSBsaW1pdC0+bGltaXQpCisJCQkJZHhfZW50LT5oYXNoID0KKwkJCQkJZXh0MmZzX2NwdV90b19sZTMyKG91dGRpci0+aGFzaGVzW2ldKTsKKwkJCWR4X2VudCsrOworCQkJYzItLTsKKwkJfQorCQlsaW1pdC0+Y291bnQgPSBleHQyZnNfY3B1X3RvX2xlMTYobGltaXQtPmxpbWl0IC0gYzIpOworCQlsaW1pdC0+bGltaXQgPSBleHQyZnNfY3B1X3RvX2xlMTYobGltaXQtPmxpbWl0KTsKKwl9CisJcm9vdF9saW1pdCA9IChzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICopIChvdXRkaXItPmJ1ZiArIGxpbWl0X29mZnNldCk7CisJcm9vdF9saW1pdC0+Y291bnQgPSBleHQyZnNfY3B1X3RvX2xlMTYocm9vdF9saW1pdC0+bGltaXQgLSBjMSk7CisJcm9vdF9saW1pdC0+bGltaXQgPSBleHQyZnNfY3B1X3RvX2xlMTYocm9vdF9saW1pdC0+bGltaXQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCB3cml0ZV9kaXJfc3RydWN0IHsKKwlzdHJ1Y3Qgb3V0X2RpciAqb3V0ZGlyOworCWVycmNvZGVfdAllcnI7CisJZXh0Ml9pbm9fdAlpbm87CisJZTJmc2NrX3QJY3R4OworCWV4dDJfaW5vX3QJZGlyOworfTsKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCB3cml0ZXMgb3V0IGEgZGlyZWN0b3J5IGJsb2NrLgorICovCitzdGF0aWMgaW50IHdyaXRlX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywKKwkJCSAgIGJsazY0X3QgKmJsb2NrX25yLAorCQkJICAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkgICBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHdyaXRlX2Rpcl9zdHJ1Y3QJKndkID0gKHN0cnVjdCB3cml0ZV9kaXJfc3RydWN0ICopIHByaXZfZGF0YTsKKwljaGFyCSpkaXIsICpidWYgPSAwOworCisjaWZkZWYgUkVIQVNIX0RFQlVHCisJcHJpbnRmKCIldTogd3JpdGVfZGlyX2Jsb2NrICVsbGQ6JWxsZCIsIHdkLT5pbm8sIGJsb2NrY250LCAqYmxvY2tfbnIpOworI2VuZGlmCisJaWYgKCgqYmxvY2tfbnIgPT0gMCkgfHwgKGJsb2NrY250IDwgMCkpIHsKKyNpZmRlZiBSRUhBU0hfREVCVUcKKwkJcHJpbnRmKCIgLSBza2lwXG4iKTsKKyNlbmRpZgorCQlyZXR1cm4gMDsKKwl9CisJaWYgKGJsb2NrY250IDwgd2QtPm91dGRpci0+bnVtKQorCQlkaXIgPSB3ZC0+b3V0ZGlyLT5idWYgKyAoYmxvY2tjbnQgKiBmcy0+YmxvY2tzaXplKTsKKwllbHNlIGlmICh3ZC0+Y3R4LT5sb3N0X2FuZF9mb3VuZCA9PSB3ZC0+ZGlyKSB7CisJCS8qIERvbid0IHJlbGVhc2UgYW55IGV4dHJhIGRpcmVjdG9yeSBibG9ja3MgZm9yIGxvc3QrZm91bmQgKi8KKwkJd2QtPmVyciA9IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGZzLCAwLCAwLCAmYnVmKTsKKwkJaWYgKHdkLT5lcnIpCisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCWRpciA9IGJ1ZjsKKwkJd2QtPm91dGRpci0+bnVtKys7CisJfSBlbHNlIHsKKwkJLyogRG9uJ3QgZnJlZSBibG9ja3MgYXQgdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5LCB0aGV5CisJCSAqIHdpbGwgYmUgdHJ1bmNhdGVkIGJ5IHRoZSBjYWxsZXIuICovCisjaWZkZWYgUkVIQVNIX0RFQlVHCisJCXByaW50ZigiIC0gbm90IGZyZWVkXG4iKTsKKyNlbmRpZgorCQlyZXR1cm4gMDsKKwl9CisJd2QtPmVyciA9IGV4dDJmc193cml0ZV9kaXJfYmxvY2s0KGZzLCAqYmxvY2tfbnIsIGRpciwgMCwgd2QtPmRpcik7CisJaWYgKGJ1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCisjaWZkZWYgUkVIQVNIX0RFQlVHCisJcHJpbnRmKCIgLSB3cml0ZSAoJWQpXG4iLCB3ZC0+ZXJyKTsKKyNlbmRpZgorCWlmICh3ZC0+ZXJyKQorCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3Qgd3JpdGVfZGlyZWN0b3J5KGUyZnNja190IGN0eCwgZXh0Ml9maWxzeXMgZnMsCisJCQkJIHN0cnVjdCBvdXRfZGlyICpvdXRkaXIsCisJCQkJIGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJIGludCBjb21wcmVzcykKK3sKKwlzdHJ1Y3Qgd3JpdGVfZGlyX3N0cnVjdCB3ZDsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJcmV0dmFsID0gZTJmc2NrX2V4cGFuZF9kaXJlY3RvcnkoY3R4LCBpbm8sIC0xLCBvdXRkaXItPm51bSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXdkLm91dGRpciA9IG91dGRpcjsKKwl3ZC5lcnIgPSAwOworCXdkLmlubyA9IGlubzsKKwl3ZC5jdHggPSBjdHg7CisJd2QuZGlyID0gaW5vOworCisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBpbm8sIDAsIE5VTEwsCisJCQkJICAgICAgIHdyaXRlX2Rpcl9ibG9jaywgJndkKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWlmICh3ZC5lcnIpCisJCXJldHVybiB3ZC5lcnI7CisKKwllMmZzY2tfcmVhZF9pbm9kZShjdHgsIGlubywgaW5vZGUsICJyZWhhc2hfZGlyIik7CisJaWYgKGNvbXByZXNzKQorCQlpbm9kZS0+aV9mbGFncyAmPSB+RVhUMl9JTkRFWF9GTDsKKwllbHNlCisJCWlub2RlLT5pX2ZsYWdzIHw9IEVYVDJfSU5ERVhfRkw7CisjaWZkZWYgUkVIQVNIX0RFQlVHCisJcHJpbnRmKCIldTogc2V0IGlub2RlIHNpemUgdG8gJXUgYmxvY2tzID0gJXUgYnl0ZXNcbiIsCisJICAgICAgIGlubywgb3V0ZGlyLT5udW0sIG91dGRpci0+bnVtICogZnMtPmJsb2Nrc2l6ZSk7CisjZW5kaWYKKwlyZXR2YWwgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsIGlub2RlLCAoZXh0Ml9vZmY2NF90KW91dGRpci0+bnVtICoKKwkJCQkJCSAgIGZzLT5ibG9ja3NpemUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwkvKiBleHQyZnNfcHVuY2goKSBjYWxscyBleHQyZnNfd3JpdGVfaW5vZGUoKSB3aGljaCB3cml0ZXMgdGhlIHNpemUgKi8KKwlyZXR1cm4gZXh0MmZzX3B1bmNoKGZzLCBpbm8sIGlub2RlLCBOVUxMLCBvdXRkaXItPm51bSwgfjBVTEwpOworfQorCitlcnJjb2RlX3QgZTJmc2NrX3JlaGFzaF9kaXIoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKwkJCSAgICBzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4KQoreworCWV4dDJfZmlsc3lzIAkJZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAkJcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlIAlpbm9kZTsKKwljaGFyCQkJKmRpcl9idWYgPSAwOworCXN0cnVjdCBmaWxsX2Rpcl9zdHJ1Y3QJZmQgPSB7IE5VTEwsIE5VTEwsIDAsIDAsIDAsIE5VTEwsCisJCQkJICAgICAgIDAsIDAsIDAsIDAsIDAsIDAgfTsKKwlzdHJ1Y3Qgb3V0X2RpcgkJb3V0ZGlyID0geyAwLCAwLCAwLCAwIH07CisKKwllMmZzY2tfcmVhZF9pbm9kZShjdHgsIGlubywgJmlub2RlLCAicmVoYXNoX2RpciIpOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShmcy0+c3VwZXIpICYmCisJICAgKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR2YWwgPSBFTk9NRU07CisJZGlyX2J1ZiA9IG1hbGxvYyhpbm9kZS5pX3NpemUpOworCWlmICghZGlyX2J1ZikKKwkJZ290byBlcnJvdXQ7CisKKwlmZC5tYXhfYXJyYXkgPSBpbm9kZS5pX3NpemUgLyAzMjsKKwlmZC5oYXJyYXkgPSBtYWxsb2MoZmQubWF4X2FycmF5ICogc2l6ZW9mKHN0cnVjdCBoYXNoX2VudHJ5KSk7CisJaWYgKCFmZC5oYXJyYXkpCisJCWdvdG8gZXJyb3V0OworCisJZmQuaW5vID0gaW5vOworCWZkLmN0eCA9IGN0eDsKKwlmZC5idWYgPSBkaXJfYnVmOworCWZkLmlub2RlID0gJmlub2RlOworCWZkLmRpciA9IGlubzsKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9kaXJfaW5kZXgoZnMtPnN1cGVyKSB8fAorCSAgICAoaW5vZGUuaV9zaXplIC8gZnMtPmJsb2Nrc2l6ZSkgPCAyKQorCQlmZC5jb21wcmVzcyA9IDE7CisJZmQucGFyZW50ID0gMDsKKworcmV0cnlfbm9oYXNoOgorCS8qIFJlYWQgaW4gdGhlIGVudGlyZSBkaXJlY3RvcnkgaW50byBtZW1vcnkgKi8KKwlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywgMCwgMCwKKwkJCQkgICAgICAgZmlsbF9kaXJfYmxvY2ssICZmZCk7CisJaWYgKGZkLmVycikgeworCQlyZXR2YWwgPSBmZC5lcnI7CisJCWdvdG8gZXJyb3V0OworCX0KKworCS8qIAorCSAqIElmIHRoZSBlbnRyaWVzIHJlYWQgYXJlIGxlc3MgdGhhbiBhIGJsb2NrLCB0aGVuIGRvbid0IGluZGV4CisJICogdGhlIGRpcmVjdG9yeQorCSAqLworCWlmICghZmQuY29tcHJlc3MgJiYgKGZkLmRpcl9zaXplIDwgKGZzLT5ibG9ja3NpemUgLSAyNCkpKSB7CisJCWZkLmNvbXByZXNzID0gMTsKKwkJZmQuZGlyX3NpemUgPSAwOworCQlmZC5udW1fYXJyYXkgPSAwOworCQlnb3RvIHJldHJ5X25vaGFzaDsKKwl9CisKKyNpZiAwCisJcHJpbnRmKCIlZCBlbnRyaWVzICglZCBieXRlcykgZm91bmQgaW4gaW5vZGUgJWRcbiIsCisJICAgICAgIGZkLm51bV9hcnJheSwgZmQuZGlyX3NpemUsIGlubyk7CisjZW5kaWYKKworCS8qIFNvcnQgdGhlIGxpc3QgKi8KK3Jlc29ydDoKKwlpZiAoZmQuY29tcHJlc3MgJiYgZmQubnVtX2FycmF5ID4gMSkKKwkJcXNvcnQoZmQuaGFycmF5KzIsIGZkLm51bV9hcnJheS0yLCBzaXplb2Yoc3RydWN0IGhhc2hfZW50cnkpLAorCQkgICAgICBoYXNoX2NtcCk7CisJZWxzZQorCQlxc29ydChmZC5oYXJyYXksIGZkLm51bV9hcnJheSwgc2l6ZW9mKHN0cnVjdCBoYXNoX2VudHJ5KSwKKwkJICAgICAgaGFzaF9jbXApOworCisJLyoKKwkgKiBMb29rIGZvciBkdXBsaWNhdGVzCisJICovCisJaWYgKGR1cGxpY2F0ZV9zZWFyY2hfYW5kX2ZpeChjdHgsIGZzLCBpbm8sICZmZCkpCisJCWdvdG8gcmVzb3J0OworCisJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfTk8pIHsKKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyogU29ydCBub24taGFzaGVkIGRpcmVjdG9yaWVzIGJ5IGlub2RlIG51bWJlciAqLworCWlmIChmZC5jb21wcmVzcyAmJiBmZC5udW1fYXJyYXkgPiAxKQorCQlxc29ydChmZC5oYXJyYXkrMiwgZmQubnVtX2FycmF5LTIsCisJCSAgICAgIHNpemVvZihzdHJ1Y3QgaGFzaF9lbnRyeSksIGlub19jbXApOworCisJLyoKKwkgKiBDb3B5IHRoZSBkaXJlY3RvcnkgZW50cmllcy4gIEluIGEgaHRyZWUgZGlyZWN0b3J5IHRoZXNlCisJICogd2lsbCBiZWNvbWUgdGhlIGxlYWYgbm9kZXMuCisJICovCisJcmV0dmFsID0gY29weV9kaXJfZW50cmllcyhjdHgsICZmZCwgJm91dGRpcik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlmcmVlKGRpcl9idWYpOyBkaXJfYnVmID0gMDsKKworCWlmICghZmQuY29tcHJlc3MpIHsKKwkJLyogQ2FsY3VsYXRlIHRoZSBpbnRlcmlvciBub2RlcyAqLworCQlyZXR2YWwgPSBjYWxjdWxhdGVfdHJlZShmcywgJm91dGRpciwgaW5vLCBmZC5wYXJlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCisJcmV0dmFsID0gd3JpdGVfZGlyZWN0b3J5KGN0eCwgZnMsICZvdXRkaXIsIGlubywgJmlub2RlLCBmZC5jb21wcmVzcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9DT05WRVJUX0JNQVApCisJCXJldHZhbCA9IGUyZnNja19yZWJ1aWxkX2V4dGVudHNfbGF0ZXIoY3R4LCBpbm8pOworCWVsc2UKKwkJcmV0dmFsID0gZTJmc2NrX2NoZWNrX3JlYnVpbGRfZXh0ZW50cyhjdHgsIGlubywgJmlub2RlLCBwY3R4KTsKK2Vycm91dDoKKwlmcmVlKGRpcl9idWYpOworCWZyZWUoZmQuaGFycmF5KTsKKworCWZyZWVfb3V0X2Rpcigmb3V0ZGlyKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCit2b2lkIGUyZnNja19yZWhhc2hfZGlyZWN0b3JpZXMoZTJmc2NrX3QgY3R4KQoreworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2s7CisjZW5kaWYKKwlzdHJ1Y3QgZGlyX2luZm8JCSpkaXI7CisJZXh0Ml91MzJfaXRlcmF0ZSAJaXRlcjsKKwlzdHJ1Y3QgZGlyX2luZm9faXRlciAqCWRpcmluZm9faXRlciA9IDA7CisJZXh0Ml9pbm9fdAkJaW5vOworCWVycmNvZGVfdAkJcmV0dmFsOworCWludAkJCWN1ciwgbWF4LCBhbGxfZGlycywgZmlyc3QgPSAxOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCBjdHgtPmZzLT5pbyk7CisJYWxsX2RpcnMgPSBjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0NPTVBSRVNTX0RJUlM7CisKKwlpZiAoIWN0eC0+ZGlyc190b19oYXNoICYmICFhbGxfZGlycykKKwkJcmV0dXJuOworCisJKHZvaWQpIGUyZnNja19nZXRfbG9zdF9hbmRfZm91bmQoY3R4LCAwKTsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisKKwljdXIgPSAwOworCWlmIChhbGxfZGlycykgeworCQlkaXJpbmZvX2l0ZXIgPSBlMmZzY2tfZGlyX2luZm9faXRlcl9iZWdpbihjdHgpOworCQltYXggPSBlMmZzY2tfZ2V0X251bV9kaXJpbmZvKGN0eCk7CisJfSBlbHNlIHsKKwkJcmV0dmFsID0gZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGVfYmVnaW4oY3R4LT5kaXJzX3RvX2hhc2gsCisJCQkJCQkgICAgICAgJml0ZXIpOworCQlpZiAocmV0dmFsKSB7CisJCQlwY3R4LmVycmNvZGUgPSByZXR2YWw7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNBX09QVElNSVpFX0lURVIsICZwY3R4KTsKKwkJCXJldHVybjsKKwkJfQorCQltYXggPSBleHQyZnNfdTMyX2xpc3RfY291bnQoY3R4LT5kaXJzX3RvX2hhc2gpOworCX0KKwl3aGlsZSAoMSkgeworCQlpZiAoYWxsX2RpcnMpIHsKKwkJCWlmICgoZGlyID0gZTJmc2NrX2Rpcl9pbmZvX2l0ZXIoY3R4LAorCQkJCQkJCWRpcmluZm9faXRlcikpID09IDApCisJCQkJYnJlYWs7CisJCQlpbm8gPSBkaXItPmlubzsKKwkJfSBlbHNlIHsKKwkJCWlmICghZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGUoaXRlciwgJmlubykpCisJCQkJYnJlYWs7CisJCX0KKworCQlwY3R4LmRpciA9IGlubzsKKwkJaWYgKGZpcnN0KSB7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzNBX1BBU1NfSEVBREVSLCAmcGN0eCk7CisJCQlmaXJzdCA9IDA7CisJCX0KKyNpZiAwCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfM0FfT1BUSU1JWkVfRElSLCAmcGN0eCk7CisjZW5kaWYKKwkJcGN0eC5lcnJjb2RlID0gZTJmc2NrX3JlaGFzaF9kaXIoY3R4LCBpbm8sICZwY3R4KTsKKwkJaWYgKHBjdHguZXJyY29kZSkgeworCQkJZW5kX3Byb2JsZW1fbGF0Y2goY3R4LCBQUl9MQVRDSF9PUFRJTUlaRV9ESVIpOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8zQV9PUFRJTUlaRV9ESVJfRVJSLCAmcGN0eCk7CisJCX0KKwkJaWYgKGN0eC0+cHJvZ3Jlc3MgJiYgIWN0eC0+cHJvZ3Jlc3NfZmQpCisJCQllMmZzY2tfc2ltcGxlX3Byb2dyZXNzKGN0eCwgIlJlYnVpbGRpbmcgZGlyZWN0b3J5IiwKKwkJCSAgICAgICAxMDAuMCAqIChmbG9hdCkgKCsrY3VyKSAvIChmbG9hdCkgbWF4LCBpbm8pOworCX0KKwllbmRfcHJvYmxlbV9sYXRjaChjdHgsIFBSX0xBVENIX09QVElNSVpFX0RJUik7CisJaWYgKGFsbF9kaXJzKQorCQllMmZzY2tfZGlyX2luZm9faXRlcl9lbmQoY3R4LCBkaXJpbmZvX2l0ZXIpOworCWVsc2UKKwkJZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGVfZW5kKGl0ZXIpOworCisJaWYgKGN0eC0+ZGlyc190b19oYXNoKQorCQlleHQyZnNfdTMyX2xpc3RfZnJlZShjdHgtPmRpcnNfdG9faGFzaCk7CisJY3R4LT5kaXJzX3RvX2hhc2ggPSAwOworCisJcHJpbnRfcmVzb3VyY2VfdHJhY2soY3R4LCAiUGFzcyAzQSIsICZydHJhY2ssIGN0eC0+ZnMtPmlvKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svcmV2b2tlLmMgYi9lMmZzcHJvZ3MvZTJmc2NrL3Jldm9rZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NDMwOTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3Jldm9rZS5jCkBAIC0wLDAgKzEsNzcwIEBACisvKgorICogbGludXgvZnMvamJkMi9yZXZva2UuYworICoKKyAqIFdyaXR0ZW4gYnkgU3RlcGhlbiBDLiBUd2VlZGllIDxzY3RAcmVkaGF0LmNvbT4sIDIwMDAKKyAqCisgKiBDb3B5cmlnaHQgMjAwMCBSZWQgSGF0IGNvcnAgLS0tIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGludXgga2VybmVsIGFuZCBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlcgorICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBvciBhdCB5b3VyCisgKiBvcHRpb24sIGFueSBsYXRlciB2ZXJzaW9uLCBpbmNvcnBvcmF0ZWQgaGVyZWluIGJ5IHJlZmVyZW5jZS4KKyAqCisgKiBKb3VybmFsIHJldm9rZSByb3V0aW5lcyBmb3IgdGhlIGdlbmVyaWMgZmlsZXN5c3RlbSBqb3VybmFsaW5nIGNvZGU7CisgKiBwYXJ0IG9mIHRoZSBleHQyZnMgam91cm5hbGluZyBzeXN0ZW0uCisgKgorICogUmV2b2tlIGlzIHRoZSBtZWNoYW5pc20gdXNlZCB0byBwcmV2ZW50IG9sZCBsb2cgcmVjb3JkcyBmb3IgZGVsZXRlZAorICogbWV0YWRhdGEgZnJvbSBiZWluZyByZXBsYXllZCBvbiB0b3Agb2YgbmV3ZXIgZGF0YSB1c2luZyB0aGUgc2FtZQorICogYmxvY2tzLiAgVGhlIHJldm9rZSBtZWNoYW5pc20gaXMgdXNlZCBpbiB0d28gc2VwYXJhdGUgcGxhY2VzOgorICoKKyAqICsgQ29tbWl0OiBkdXJpbmcgY29tbWl0IHdlIHdyaXRlIHRoZSBlbnRpcmUgbGlzdCBvZiB0aGUgY3VycmVudAorICogICB0cmFuc2FjdGlvbidzIHJldm9rZWQgYmxvY2tzIHRvIHRoZSBqb3VybmFsCisgKgorICogKyBSZWNvdmVyeTogZHVyaW5nIHJlY292ZXJ5IHdlIHJlY29yZCB0aGUgdHJhbnNhY3Rpb24gSUQgb2YgYWxsCisgKiAgIHJldm9rZWQgYmxvY2tzLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIHJldm9rZSByZWNvcmRzIGluIHRoZSBsb2cKKyAqICAgZm9yIGEgc2luZ2xlIGJsb2NrLCBvbmx5IHRoZSBsYXN0IG9uZSBjb3VudHMsIGFuZCBpZiB0aGVyZSBpcyBhIGxvZworICogICBlbnRyeSBmb3IgYSBibG9jayBiZXlvbmQgdGhlIGxhc3QgcmV2b2tlLCB0aGVuIHRoYXQgbG9nIGVudHJ5IHN0aWxsCisgKiAgIGdldHMgcmVwbGF5ZWQuCisgKgorICogV2UgY2FuIGdldCBpbnRlcmFjdGlvbnMgYmV0d2VlbiByZXZva2VzIGFuZCBuZXcgbG9nIGRhdGEgd2l0aGluIGEKKyAqIHNpbmdsZSB0cmFuc2FjdGlvbjoKKyAqCisgKiBCbG9jayBpcyByZXZva2VkIGFuZCB0aGVuIGpvdXJuYWxlZDoKKyAqICAgVGhlIGRlc2lyZWQgZW5kIHJlc3VsdCBpcyB0aGUgam91cm5hbGluZyBvZiB0aGUgbmV3IGJsb2NrLCBzbyB3ZQorICogICBjYW5jZWwgdGhlIHJldm9rZSBiZWZvcmUgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdHMuCisgKgorICogQmxvY2sgaXMgam91cm5hbGVkIGFuZCB0aGVuIHJldm9rZWQ6CisgKiAgIFRoZSByZXZva2UgbXVzdCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB0aGUgd3JpdGUgb2YgdGhlIGJsb2NrLCBzbyB3ZQorICogICBuZWVkIGVpdGhlciB0byBjYW5jZWwgdGhlIGpvdXJuYWwgZW50cnkgb3IgdG8gd3JpdGUgdGhlIHJldm9rZQorICogICBsYXRlciBpbiB0aGUgbG9nIHRoYW4gdGhlIGxvZyBibG9jay4gIEluIHRoaXMgY2FzZSwgd2UgY2hvb3NlIHRoZQorICogICBsYXR0ZXI6IGpvdXJuYWxpbmcgYSBibG9jayBjYW5jZWxzIGFueSByZXZva2UgcmVjb3JkIGZvciB0aGF0IGJsb2NrCisgKiAgIGluIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLCBzbyBhbnkgcmV2b2tlIGZvciB0aGF0IGJsb2NrIGluIHRoZQorICogICB0cmFuc2FjdGlvbiBtdXN0IGhhdmUgaGFwcGVuZWQgYWZ0ZXIgdGhlIGJsb2NrIHdhcyBqb3VybmFsZWQgYW5kIHNvCisgKiAgIHRoZSByZXZva2UgbXVzdCB0YWtlIHByZWNlZGVuY2UuCisgKgorICogQmxvY2sgaXMgcmV2b2tlZCBhbmQgdGhlbiB3cml0dGVuIGFzIGRhdGE6CisgKiAgIFRoZSBkYXRhIHdyaXRlIGlzIGFsbG93ZWQgdG8gc3VjY2VlZCwgYnV0IHRoZSByZXZva2UgaXMgX25vdF8KKyAqICAgY2FuY2VsbGVkLiAgV2Ugc3RpbGwgbmVlZCB0byBwcmV2ZW50IG9sZCBsb2cgcmVjb3JkcyBmcm9tCisgKiAgIG92ZXJ3cml0aW5nIHRoZSBuZXcgZGF0YS4gIFdlIGRvbid0IGV2ZW4gbmVlZCB0byBjbGVhciB0aGUgcmV2b2tlCisgKiAgIGJpdCBoZXJlLgorICoKKyAqIFdlIGNhY2hlIHJldm9rZSBzdGF0dXMgb2YgYSBidWZmZXIgaW4gdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gaW4gYl9zdGF0ZXMKKyAqIGJpdHMuICBBcyB0aGUgbmFtZSBzYXlzLCByZXZva2V2YWxpZCBmbGFnIGluZGljYXRlcyB0aGF0IHRoZSBjYWNoZWQgcmV2b2tlCisgKiBzdGF0dXMgb2YgYSBidWZmZXIgaXMgdmFsaWQgYW5kIHdlIGNhbiByZWx5IG9uIHRoZSBjYWNoZWQgc3RhdHVzLgorICoKKyAqIFJldm9rZSBpbmZvcm1hdGlvbiBvbiBidWZmZXJzIGlzIGEgdHJpLXN0YXRlIHZhbHVlOgorICoKKyAqIFJldm9rZVZhbGlkIGNsZWFyOglubyBjYWNoZWQgcmV2b2tlIHN0YXR1cywgbmVlZCB0byBsb29rIGl0IHVwCisgKiBSZXZva2VWYWxpZCBzZXQsIFJldm9rZWQgY2xlYXI6CisgKgkJCWJ1ZmZlciBoYXMgbm90IGJlZW4gcmV2b2tlZCwgYW5kIGNhbmNlbF9yZXZva2UKKyAqCQkJbmVlZCBkbyBub3RoaW5nLgorICogUmV2b2tlVmFsaWQgc2V0LCBSZXZva2VkIHNldDoKKyAqCQkJYnVmZmVyIGhhcyBiZWVuIHJldm9rZWQuCisgKgorICogTG9ja2luZyBydWxlczoKKyAqIFdlIGtlZXAgdHdvIGhhc2ggdGFibGVzIG9mIHJldm9rZSByZWNvcmRzLiBPbmUgaGFzaHRhYmxlIGJlbG9uZ3MgdG8gdGhlCisgKiBydW5uaW5nIHRyYW5zYWN0aW9uIChpcyBwb2ludGVkIHRvIGJ5IGpvdXJuYWwtPmpfcmV2b2tlKSwgdGhlIG90aGVyIG9uZQorICogYmVsb25ncyB0byB0aGUgY29tbWl0dGluZyB0cmFuc2FjdGlvbi4gQWNjZXNzZXMgdG8gdGhlIHNlY29uZCBoYXNoIHRhYmxlCisgKiBoYXBwZW4gb25seSBmcm9tIHRoZSBram91cm5hbGQgYW5kIG5vIG90aGVyIHRocmVhZCB0b3VjaGVzIHRoaXMgdGFibGUuICBBbHNvCisgKiBqb3VybmFsX3N3aXRjaF9yZXZva2VfdGFibGUoKSB3aGljaCBzd2l0Y2hlcyB3aGljaCBoYXNodGFibGUgYmVsb25ncyB0byB0aGUKKyAqIHJ1bm5pbmcgYW5kIHdoaWNoIHRvIHRoZSBjb21taXR0aW5nIHRyYW5zYWN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20KKyAqIGtqb3VybmFsZC4gVGhlcmVmb3JlIHdlIG5lZWQgbm8gbG9ja3Mgd2hlbiBhY2Nlc3NpbmcgdGhlIGhhc2h0YWJsZSBiZWxvbmdpbmcKKyAqIHRvIHRoZSBjb21taXR0aW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIEFsbCB1c2VycyBvcGVyYXRpbmcgb24gdGhlIGhhc2ggdGFibGUgYmVsb25naW5nIHRvIHRoZSBydW5uaW5nIHRyYW5zYWN0aW9uCisgKiBoYXZlIGEgaGFuZGxlIHRvIHRoZSB0cmFuc2FjdGlvbi4gVGhlcmVmb3JlIHRoZXkgYXJlIHNhZmUgZnJvbSBram91cm5hbGQKKyAqIHN3aXRjaGluZyBoYXNoIHRhYmxlcyB1bmRlciB0aGVtLiBGb3Igb3BlcmF0aW9ucyBvbiB0aGUgbGlzdHMgb2YgZW50cmllcyBpbgorICogdGhlIGhhc2ggdGFibGUgal9yZXZva2VfbG9jayBpcyB1c2VkLgorICoKKyAqIEZpbmFsbHksIGFsc28gcmVwbGF5IGNvZGUgdXNlcyB0aGUgaGFzaCB0YWJsZXMgYnV0IGF0IHRoaXMgbW9tZW50IG5vIG9uZSBlbHNlCisgKiBjYW4gdG91Y2ggdGhlbSAoZmlsZXN5c3RlbSBpc24ndCBtb3VudGVkIHlldCkgYW5kIGhlbmNlIG5vIGxvY2tpbmcgaXMKKyAqIG5lZWRlZC4KKyAqLworCisjaWZuZGVmIF9fS0VSTkVMX18KKyNpbmNsdWRlICJqZnNfdXNlci5oIgorI2Vsc2UKKyNpbmNsdWRlIDxsaW51eC90aW1lLmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9qYmQyLmg+CisjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvbGlzdC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KKyNpbmNsdWRlIDxsaW51eC9iaW8uaD4KKyNpbmNsdWRlIDxsaW51eC9sb2cyLmg+CisjZW5kaWYKKworc3RhdGljIGxrbWVtX2NhY2hlX3QgKmpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZTsKK3N0YXRpYyBsa21lbV9jYWNoZV90ICpqYmQyX3Jldm9rZV90YWJsZV9jYWNoZTsKKworLyogRWFjaCByZXZva2UgcmVjb3JkIHJlcHJlc2VudHMgb25lIHNpbmdsZSByZXZva2VkIGJsb2NrLiAgRHVyaW5nCisgICBqb3VybmFsIHJlcGxheSwgdGhpcyBpbnZvbHZlcyByZWNvcmRpbmcgdGhlIHRyYW5zYWN0aW9uIElEIG9mIHRoZQorICAgbGFzdCB0cmFuc2FjdGlvbiB0byByZXZva2UgdGhpcyBibG9jay4gKi8KKworc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zCit7CisJc3RydWN0IGxpc3RfaGVhZCAgaGFzaDsKKwl0aWRfdAkJICBzZXF1ZW5jZTsJLyogVXNlZCBmb3IgcmVjb3Zlcnkgb25seSAqLworCXVuc2lnbmVkIGxvbmcgbG9uZwkgIGJsb2NrbnI7Cit9OworCisKKy8qIFRoZSByZXZva2UgdGFibGUgaXMganVzdCBhIHNpbXBsZSBoYXNoIHRhYmxlIG9mIHJldm9rZSByZWNvcmRzLiAqLworc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MKK3sKKwkvKiBJdCBpcyBjb25jZWl2YWJsZSB0aGF0IHdlIG1pZ2h0IHdhbnQgYSBsYXJnZXIgaGFzaCB0YWJsZQorCSAqIGZvciByZWNvdmVyeS4gIE11c3QgYmUgYSBwb3dlciBvZiB0d28uICovCisJaW50CQkgIGhhc2hfc2l6ZTsKKwlpbnQJCSAgaGFzaF9zaGlmdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoX3RhYmxlOworfTsKKworCisjaWZkZWYgX19LRVJORUxfXworc3RhdGljIHZvaWQgd3JpdGVfb25lX3Jldm9rZV9yZWNvcmQoam91cm5hbF90ICosIHRyYW5zYWN0aW9uX3QgKiwKKwkJCQkgICAgc3RydWN0IGxpc3RfaGVhZCAqLAorCQkJCSAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKiosIGludCAqLAorCQkJCSAgICBzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKiwgaW50KTsKK3N0YXRpYyB2b2lkIGZsdXNoX2Rlc2NyaXB0b3Ioam91cm5hbF90ICosIHN0cnVjdCBidWZmZXJfaGVhZCAqLCBpbnQsIGludCk7CisjZW5kaWYKKworLyogVXRpbGl0eSBmdW5jdGlvbnMgdG8gbWFpbnRhaW4gdGhlIHJldm9rZSB0YWJsZSAqLworCisvKiBCb3Jyb3dlZCBmcm9tIGJ1ZmZlci5jOiB0aGlzIGlzIGEgdHJpZWQgYW5kIHRlc3RlZCBibG9jayBoYXNoIGZ1bmN0aW9uICovCitzdGF0aWMgaW5saW5lIGludCBoYXNoKGpvdXJuYWxfdCAqam91cm5hbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrKQoreworCXN0cnVjdCBqYmQyX3Jldm9rZV90YWJsZV9zICp0YWJsZSA9IGpvdXJuYWwtPmpfcmV2b2tlOworCWludCBoYXNoX3NoaWZ0ID0gdGFibGUtPmhhc2hfc2hpZnQ7CisJaW50IGhhc2ggPSAoaW50KWJsb2NrIF4gKGludCkoKGJsb2NrID4+IDMxKSA+PiAxKTsKKworCXJldHVybiAoKGhhc2ggPDwgKGhhc2hfc2hpZnQgLSA2KSkgXgorCQkoaGFzaCA+PiAxMykgXgorCQkoaGFzaCA8PCAoaGFzaF9zaGlmdCAtIDEyKSkpICYgKHRhYmxlLT5oYXNoX3NpemUgLSAxKTsKK30KKworc3RhdGljIGludCBpbnNlcnRfcmV2b2tlX2hhc2goam91cm5hbF90ICpqb3VybmFsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2tuciwKKwkJCSAgICAgIHRpZF90IHNlcSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoX2xpc3Q7CisJc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zICpyZWNvcmQ7CisKK3JlcGVhdDoKKwlyZWNvcmQgPSBrbWVtX2NhY2hlX2FsbG9jKGpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSwgR0ZQX05PRlMpOworCWlmICghcmVjb3JkKQorCQlnb3RvIG9vbTsKKworCXJlY29yZC0+c2VxdWVuY2UgPSBzZXE7CisJcmVjb3JkLT5ibG9ja25yID0gYmxvY2tucjsKKwloYXNoX2xpc3QgPSAmam91cm5hbC0+al9yZXZva2UtPmhhc2hfdGFibGVbaGFzaChqb3VybmFsLCBibG9ja25yKV07CisJc3Bpbl9sb2NrKCZqb3VybmFsLT5qX3Jldm9rZV9sb2NrKTsKKwlsaXN0X2FkZCgmcmVjb3JkLT5oYXNoLCBoYXNoX2xpc3QpOworCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX3Jldm9rZV9sb2NrKTsKKwlyZXR1cm4gMDsKKworb29tOgorCWlmICgham91cm5hbF9vb21fcmV0cnkpCisJCXJldHVybiAtRU5PTUVNOworCWpiZF9kZWJ1ZygxLCAiRU5PTUVNIGluICVzLCByZXRyeWluZ1xuIiwgX19mdW5jX18pOworCXlpZWxkKCk7CisJZ290byByZXBlYXQ7Cit9CisKKy8qIEZpbmQgYSByZXZva2UgcmVjb3JkIGluIHRoZSBqb3VybmFsJ3MgaGFzaCB0YWJsZS4gKi8KKworc3RhdGljIHN0cnVjdCBqYmQyX3Jldm9rZV9yZWNvcmRfcyAqZmluZF9yZXZva2VfcmVjb3JkKGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9ja25yKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmhhc2hfbGlzdDsKKwlzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKnJlY29yZDsKKworCWhhc2hfbGlzdCA9ICZqb3VybmFsLT5qX3Jldm9rZS0+aGFzaF90YWJsZVtoYXNoKGpvdXJuYWwsIGJsb2NrbnIpXTsKKworCXNwaW5fbG9jaygmam91cm5hbC0+al9yZXZva2VfbG9jayk7CisJcmVjb3JkID0gKHN0cnVjdCBqYmQyX3Jldm9rZV9yZWNvcmRfcyAqKSBoYXNoX2xpc3QtPm5leHQ7CisJd2hpbGUgKCYocmVjb3JkLT5oYXNoKSAhPSBoYXNoX2xpc3QpIHsKKwkJaWYgKHJlY29yZC0+YmxvY2tuciA9PSBibG9ja25yKSB7CisJCQlzcGluX3VubG9jaygmam91cm5hbC0+al9yZXZva2VfbG9jayk7CisJCQlyZXR1cm4gcmVjb3JkOworCQl9CisJCXJlY29yZCA9IChzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKikgcmVjb3JkLT5oYXNoLm5leHQ7CisJfQorCXNwaW5fdW5sb2NrKCZqb3VybmFsLT5qX3Jldm9rZV9sb2NrKTsKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlX2NhY2hlcyh2b2lkKQoreworCWlmIChqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUpIHsKKwkJa21lbV9jYWNoZV9kZXN0cm95KGpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSk7CisJCWpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSA9IE5VTEw7CisJfQorCWlmIChqYmQyX3Jldm9rZV90YWJsZV9jYWNoZSkgeworCQlrbWVtX2NhY2hlX2Rlc3Ryb3koamJkMl9yZXZva2VfdGFibGVfY2FjaGUpOworCQlqYmQyX3Jldm9rZV90YWJsZV9jYWNoZSA9IE5VTEw7CisJfQorfQorCitpbnQgX19pbml0IGpvdXJuYWxfaW5pdF9yZXZva2VfY2FjaGVzKHZvaWQpCit7CisJSl9BU1NFUlQoIWpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSk7CisJSl9BU1NFUlQoIWpiZDJfcmV2b2tlX3RhYmxlX2NhY2hlKTsKKworCWpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSA9IEtNRU1fQ0FDSEUoamJkMl9yZXZva2VfcmVjb3JkX3MsCisJCQkJCVNMQUJfSFdDQUNIRV9BTElHTnxTTEFCX1RFTVBPUkFSWSk7CisJaWYgKCFqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUpCisJCWdvdG8gcmVjb3JkX2NhY2hlX2ZhaWx1cmU7CisKKwlqYmQyX3Jldm9rZV90YWJsZV9jYWNoZSA9IEtNRU1fQ0FDSEUoamJkMl9yZXZva2VfdGFibGVfcywKKwkJCQkJICAgICBTTEFCX1RFTVBPUkFSWSk7CisJaWYgKCFqYmQyX3Jldm9rZV90YWJsZV9jYWNoZSkKKwkJZ290byB0YWJsZV9jYWNoZV9mYWlsdXJlOworCXJldHVybiAwOwordGFibGVfY2FjaGVfZmFpbHVyZToKKwlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlX2NhY2hlcygpOworcmVjb3JkX2NhY2hlX2ZhaWx1cmU6CisJCXJldHVybiAtRU5PTUVNOworfQorCitzdGF0aWMgc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MgKmpvdXJuYWxfaW5pdF9yZXZva2VfdGFibGUoaW50IGhhc2hfc2l6ZSkKK3sKKwlpbnQgc2hpZnQgPSAwOworCWludCB0bXAgPSBoYXNoX3NpemU7CisJc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MgKnRhYmxlOworCisJdGFibGUgPSBrbWVtX2NhY2hlX2FsbG9jKGpiZDJfcmV2b2tlX3RhYmxlX2NhY2hlLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXRhYmxlKQorCQlnb3RvIG91dDsKKworCXdoaWxlKCh0bXAgPj49IDFVTCkgIT0gMFVMKQorCQlzaGlmdCsrOworCisJdGFibGUtPmhhc2hfc2l6ZSA9IGhhc2hfc2l6ZTsKKwl0YWJsZS0+aGFzaF9zaGlmdCA9IHNoaWZ0OworCXRhYmxlLT5oYXNoX3RhYmxlID0KKwkJa21hbGxvYyhoYXNoX3NpemUgKiBzaXplb2Yoc3RydWN0IGxpc3RfaGVhZCksIEdGUF9LRVJORUwpOworCWlmICghdGFibGUtPmhhc2hfdGFibGUpIHsKKwkJa21lbV9jYWNoZV9mcmVlKGpiZDJfcmV2b2tlX3RhYmxlX2NhY2hlLCB0YWJsZSk7CisJCXRhYmxlID0gTlVMTDsKKwkJZ290byBvdXQ7CisJfQorCisJZm9yICh0bXAgPSAwOyB0bXAgPCBoYXNoX3NpemU7IHRtcCsrKQorCQlJTklUX0xJU1RfSEVBRCgmdGFibGUtPmhhc2hfdGFibGVbdG1wXSk7CisKK291dDoKKwlyZXR1cm4gdGFibGU7Cit9CisKK3N0YXRpYyB2b2lkIGpvdXJuYWxfZGVzdHJveV9yZXZva2VfdGFibGUoc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MgKnRhYmxlKQoreworCWludCBpOworCXN0cnVjdCBsaXN0X2hlYWQgKmhhc2hfbGlzdDsKKworCWZvciAoaSA9IDA7IGkgPCB0YWJsZS0+aGFzaF9zaXplOyBpKyspIHsKKwkJaGFzaF9saXN0ID0gJnRhYmxlLT5oYXNoX3RhYmxlW2ldOworCQlKX0FTU0VSVChsaXN0X2VtcHR5KGhhc2hfbGlzdCkpOworCX0KKworCWtmcmVlKHRhYmxlLT5oYXNoX3RhYmxlKTsKKwlrbWVtX2NhY2hlX2ZyZWUoamJkMl9yZXZva2VfdGFibGVfY2FjaGUsIHRhYmxlKTsKK30KKworLyogSW5pdGlhbGlzZSB0aGUgcmV2b2tlIHRhYmxlIGZvciBhIGdpdmVuIGpvdXJuYWwgdG8gYSBnaXZlbiBzaXplLiAqLworaW50IGpvdXJuYWxfaW5pdF9yZXZva2Uoam91cm5hbF90ICpqb3VybmFsLCBpbnQgaGFzaF9zaXplKQoreworCUpfQVNTRVJUKGpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzBdID09IE5VTEwpOworCUpfQVNTRVJUKGlzX3Bvd2VyX29mXzIoaGFzaF9zaXplKSk7CisKKwlqb3VybmFsLT5qX3Jldm9rZV90YWJsZVswXSA9IGpvdXJuYWxfaW5pdF9yZXZva2VfdGFibGUoaGFzaF9zaXplKTsKKwlpZiAoIWpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzBdKQorCQlnb3RvIGZhaWwwOworCisJam91cm5hbC0+al9yZXZva2VfdGFibGVbMV0gPSBqb3VybmFsX2luaXRfcmV2b2tlX3RhYmxlKGhhc2hfc2l6ZSk7CisJaWYgKCFqb3VybmFsLT5qX3Jldm9rZV90YWJsZVsxXSkKKwkJZ290byBmYWlsMTsKKworCWpvdXJuYWwtPmpfcmV2b2tlID0gam91cm5hbC0+al9yZXZva2VfdGFibGVbMV07CisKKwlzcGluX2xvY2tfaW5pdCgmam91cm5hbC0+al9yZXZva2VfbG9jayk7CisKKwlyZXR1cm4gMDsKKworZmFpbDE6CisJam91cm5hbF9kZXN0cm95X3Jldm9rZV90YWJsZShqb3VybmFsLT5qX3Jldm9rZV90YWJsZVswXSk7CitmYWlsMDoKKwlyZXR1cm4gLUVOT01FTTsKK30KKworLyogRGVzdHJveSBhIGpvdXJuYWwncyByZXZva2UgdGFibGUuICBUaGUgdGFibGUgbXVzdCBhbHJlYWR5IGJlIGVtcHR5ISAqLwordm9pZCBqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlKGpvdXJuYWxfdCAqam91cm5hbCkKK3sKKwlqb3VybmFsLT5qX3Jldm9rZSA9IE5VTEw7CisJaWYgKGpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzBdKQorCQlqb3VybmFsX2Rlc3Ryb3lfcmV2b2tlX3RhYmxlKGpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzBdKTsKKwlpZiAoam91cm5hbC0+al9yZXZva2VfdGFibGVbMV0pCisJCWpvdXJuYWxfZGVzdHJveV9yZXZva2VfdGFibGUoam91cm5hbC0+al9yZXZva2VfdGFibGVbMV0pOworfQorCisKKyNpZmRlZiBfX0tFUk5FTF9fCisKKy8qCisgKiBqb3VybmFsX3Jldm9rZTogcmV2b2tlIGEgZ2l2ZW4gYnVmZmVyX2hlYWQgZnJvbSB0aGUgam91cm5hbC4gIFRoaXMKKyAqIHByZXZlbnRzIHRoZSBibG9jayBmcm9tIGJlaW5nIHJlcGxheWVkIGR1cmluZyByZWNvdmVyeSBpZiB3ZSB0YWtlIGEKKyAqIGNyYXNoIGFmdGVyIHRoaXMgY3VycmVudCB0cmFuc2FjdGlvbiBjb21taXRzLiAgQW55IHN1YnNlcXVlbnQKKyAqIG1ldGFkYXRhIHdyaXRlcyBvZiB0aGUgYnVmZmVyIGluIHRoaXMgdHJhbnNhY3Rpb24gY2FuY2VsIHRoZQorICogcmV2b2tlLgorICoKKyAqIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJsb2NrIC0tLSBpdCBpcyB1cCB0byB0aGUgY2FsbGVyIHRvIG1ha2UKKyAqIHN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gZnVydGhlciBjYWxscyB0byBqb3VybmFsX3dyaXRlX21ldGFkYXRhCisgKiBiZWZvcmUgdGhlIHJldm9rZSBpcyBjb21wbGV0ZS4gIEluIGV4dDMsIHRoaXMgaW1wbGllcyBjYWxsaW5nIHRoZQorICogcmV2b2tlIGJlZm9yZSBjbGVhcmluZyB0aGUgYmxvY2sgYml0bWFwIHdoZW4gd2UgYXJlIGRlbGV0aW5nCisgKiBtZXRhZGF0YS4KKyAqCisgKiBSZXZva2UgcGVyZm9ybXMgYSBqb3VybmFsX2ZvcmdldCBvbiBhbnkgYnVmZmVyX2hlYWQgcGFzc2VkIGluIGFzIGEKKyAqIHBhcmFtZXRlciwgYnV0IGRvZXMgX25vdF8gZm9yZ2V0IHRoZSBidWZmZXJfaGVhZCBpZiB0aGUgYmggd2FzIG9ubHkKKyAqIGZvdW5kIGltcGxpY2l0bHkuCisgKgorICogYmhfaW4gbWF5IG5vdCBiZSBhIGpvdXJuYWxsZWQgYnVmZmVyIC0gaXQgbWF5IGhhdmUgY29tZSBvZmYKKyAqIHRoZSBoYXNoIHRhYmxlcyB3aXRob3V0IGFuIGF0dGFjaGVkIGpvdXJuYWxfaGVhZC4KKyAqCisgKiBJZiBiaF9pbiBpcyBub24temVybywgam91cm5hbF9yZXZva2UoKSB3aWxsIGRlY3JlbWVudCBpdHMgYl9jb3VudAorICogYnkgb25lLgorICovCisKK2ludCBqb3VybmFsX3Jldm9rZShoYW5kbGVfdCAqaGFuZGxlLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2tuciwKKwkJICAgc3RydWN0IGJ1ZmZlcl9oZWFkICpiaF9pbikKK3sKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoID0gTlVMTDsKKwlqb3VybmFsX3QgKmpvdXJuYWw7CisJc3RydWN0IGJsb2NrX2RldmljZSAqYmRldjsKKwlpbnQgZXJyOworCisJbWlnaHRfc2xlZXAoKTsKKwlpZiAoYmhfaW4pCisJCUJVRkZFUl9UUkFDRShiaF9pbiwgImVudGVyIik7CisKKwlqb3VybmFsID0gaGFuZGxlLT5oX3RyYW5zYWN0aW9uLT50X2pvdXJuYWw7CisJaWYgKCFqb3VybmFsX3NldF9mZWF0dXJlcyhqb3VybmFsLCAwLCAwLCBKRlNfRkVBVFVSRV9JTkNPTVBBVF9SRVZPS0UpKXsKKwkJSl9BU1NFUlQgKCEiQ2Fubm90IHNldCByZXZva2UgZmVhdHVyZSEiKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJYmRldiA9IGpvdXJuYWwtPmpfZnNfZGV2OworCWJoID0gYmhfaW47CisKKwlpZiAoIWJoKSB7CisJCWJoID0gX19maW5kX2dldF9ibG9jayhiZGV2LCBibG9ja25yLCBqb3VybmFsLT5qX2Jsb2Nrc2l6ZSk7CisJCWlmIChiaCkKKwkJCUJVRkZFUl9UUkFDRShiaCwgImZvdW5kIG9uIGhhc2giKTsKKwl9CisjaWZkZWYgSkZTX0VYUEVOU0lWRV9DSEVDS0lORworCWVsc2UgeworCQlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoMjsKKworCQkvKiBJZiB0aGVyZSBpcyBhIGRpZmZlcmVudCBidWZmZXJfaGVhZCBseWluZyBhcm91bmQgaW4KKwkJICogbWVtb3J5IGFueXdoZXJlLi4uICovCisJCWJoMiA9IF9fZmluZF9nZXRfYmxvY2soYmRldiwgYmxvY2tuciwgam91cm5hbC0+al9ibG9ja3NpemUpOworCQlpZiAoYmgyKSB7CisJCQkvKiAuLi4gYW5kIGl0IGhhcyBSZXZva2VWYWxpZCBzdGF0dXMuLi4gKi8KKwkJCWlmIChiaDIgIT0gYmggJiYgYnVmZmVyX3Jldm9rZXZhbGlkKGJoMikpCisJCQkJLyogLi4udGhlbiBpdCBiZXR0ZXIgYmUgcmV2b2tlZCB0b28sCisJCQkJICogc2luY2UgaXQncyBpbGxlZ2FsIHRvIGNyZWF0ZSBhIHJldm9rZQorCQkJCSAqIHJlY29yZCBhZ2FpbnN0IGEgYnVmZmVyX2hlYWQgd2hpY2ggaXMKKwkJCQkgKiBub3QgbWFya2VkIHJldm9rZWQgLS0tIHRoYXQgd291bGQKKwkJCQkgKiByaXNrIG1pc3NpbmcgYSBzdWJzZXF1ZW50IHJldm9rZQorCQkJCSAqIGNhbmNlbC4gKi8KKwkJCQlKX0FTU0VSVF9CSChiaDIsIGJ1ZmZlcl9yZXZva2VkKGJoMikpOworCQkJcHV0X2JoKGJoMik7CisJCX0KKwl9CisjZW5kaWYKKworCS8qIFdlIHJlYWxseSBvdWdodCBub3QgZXZlciB0byByZXZva2UgdHdpY2UgaW4gYSByb3cgd2l0aG91dAorICAgICAgICAgICBmaXJzdCBoYXZpbmcgdGhlIHJldm9rZSBjYW5jZWxsZWQ6IGl0J3MgaWxsZWdhbCB0byBmcmVlIGEKKyAgICAgICAgICAgYmxvY2sgdHdpY2Ugd2l0aG91dCBhbGxvY2F0aW5nIGl0IGluIGJldHdlZW4hICovCisJaWYgKGJoKSB7CisJCWlmICghSl9FWFBFQ1RfQkgoYmgsICFidWZmZXJfcmV2b2tlZChiaCksCisJCQkJICJpbmNvbnNpc3RlbnQgZGF0YSBvbiBkaXNrIikpIHsKKwkJCWlmICghYmhfaW4pCisJCQkJYnJlbHNlKGJoKTsKKwkJCXJldHVybiAtRUlPOworCQl9CisJCXNldF9idWZmZXJfcmV2b2tlZChiaCk7CisJCXNldF9idWZmZXJfcmV2b2tldmFsaWQoYmgpOworCQlpZiAoYmhfaW4pIHsKKwkJCUJVRkZFUl9UUkFDRShiaF9pbiwgImNhbGwgam91cm5hbF9mb3JnZXQiKTsKKwkJCWpvdXJuYWxfZm9yZ2V0KGhhbmRsZSwgYmhfaW4pOworCQl9IGVsc2UgeworCQkJQlVGRkVSX1RSQUNFKGJoLCAiY2FsbCBicmVsc2UiKTsKKwkJCV9fYnJlbHNlKGJoKTsKKwkJfQorCX0KKworCWpiZF9kZWJ1ZygyLCAiaW5zZXJ0IHJldm9rZSBmb3IgYmxvY2sgJWxsdSwgYmhfaW49JXBcbiIsYmxvY2tuciwgYmhfaW4pOworCWVyciA9IGluc2VydF9yZXZva2VfaGFzaChqb3VybmFsLCBibG9ja25yLAorCQkJCWhhbmRsZS0+aF90cmFuc2FjdGlvbi0+dF90aWQpOworCUJVRkZFUl9UUkFDRShiaF9pbiwgImV4aXQiKTsKKwlyZXR1cm4gZXJyOworfQorCisvKgorICogQ2FuY2VsIGFuIG91dHN0YW5kaW5nIHJldm9rZS4gIEZvciB1c2Ugb25seSBpbnRlcm5hbGx5IGJ5IHRoZQorICogam91cm5hbGluZyBjb2RlIChjYWxsZWQgZnJvbSBqb3VybmFsX2dldF93cml0ZV9hY2Nlc3MpLgorICoKKyAqIFdlIHRydXN0IGJ1ZmZlcl9yZXZva2VkKCkgb24gdGhlIGJ1ZmZlciBpZiB0aGUgYnVmZmVyIGlzIGFscmVhZHkKKyAqIGJlaW5nIGpvdXJuYWxlZDogaWYgdGhlcmUgaXMgbm8gcmV2b2tlIHBlbmRpbmcgb24gdGhlIGJ1ZmZlciwgdGhlbiB3ZQorICogZG9uJ3QgZG8gYW55dGhpbmcgaGVyZS4KKyAqCisgKiBUaGlzIHdvdWxkIGJyZWFrIGlmIGl0IHdlcmUgcG9zc2libGUgZm9yIGEgYnVmZmVyIHRvIGJlIHJldm9rZWQgYW5kCisgKiBkaXNjYXJkZWQsIGFuZCB0aGVuIHJlYWxsb2NhdGVkIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4gIEluIHN1Y2gKKyAqIGEgY2FzZSB3ZSB3b3VsZCBoYXZlIGxvc3QgdGhlIHJldm9rZWQgYml0LCBidXQgd2hlbiB3ZSBhcnJpdmVkIGhlcmUKKyAqIHRoZSBzZWNvbmQgdGltZSB3ZSB3b3VsZCBzdGlsbCBoYXZlIGEgcGVuZGluZyByZXZva2UgdG8gY2FuY2VsLiAgU28sCisgKiBkbyBub3QgdHJ1c3QgdGhlIFJldm9rZWQgYml0IG9uIGJ1ZmZlcnMgdW5sZXNzIFJldm9rZVZhbGlkIGlzIGFsc28KKyAqIHNldC4KKyAqLworaW50IGpvdXJuYWxfY2FuY2VsX3Jldm9rZShoYW5kbGVfdCAqaGFuZGxlLCBzdHJ1Y3Qgam91cm5hbF9oZWFkICpqaCkKK3sKKwlzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKnJlY29yZDsKKwlqb3VybmFsX3QgKmpvdXJuYWwgPSBoYW5kbGUtPmhfdHJhbnNhY3Rpb24tPnRfam91cm5hbDsKKwlpbnQgbmVlZF9jYW5jZWw7CisJaW50IGRpZF9yZXZva2UgPSAwOwkvKiBha3BtOiBkZWJ1ZyAqLworCXN0cnVjdCBidWZmZXJfaGVhZCAqYmggPSBqaDJiaChqaCk7CisKKwlqYmRfZGVidWcoNCwgImpvdXJuYWxfaGVhZCAlcCwgY2FuY2VsbGluZyByZXZva2VcbiIsIGpoKTsKKworCS8qIElzIHRoZSBleGlzdGluZyBSZXZva2UgYml0IHZhbGlkPyAgSWYgc28sIHdlIHRydXN0IGl0LCBhbmQKKwkgKiBvbmx5IHBlcmZvcm0gdGhlIGZ1bGwgY2FuY2VsIGlmIHRoZSByZXZva2UgYml0IGlzIHNldC4gIElmCisJICogbm90LCB3ZSBjYW4ndCB0cnVzdCB0aGUgcmV2b2tlIGJpdCwgYW5kIHdlIG5lZWQgdG8gZG8gdGhlCisJICogZnVsbCBzZWFyY2ggZm9yIGEgcmV2b2tlIHJlY29yZC4gKi8KKwlpZiAodGVzdF9zZXRfYnVmZmVyX3Jldm9rZXZhbGlkKGJoKSkgeworCQluZWVkX2NhbmNlbCA9IHRlc3RfY2xlYXJfYnVmZmVyX3Jldm9rZWQoYmgpOworCX0gZWxzZSB7CisJCW5lZWRfY2FuY2VsID0gMTsKKwkJY2xlYXJfYnVmZmVyX3Jldm9rZWQoYmgpOworCX0KKworCWlmIChuZWVkX2NhbmNlbCkgeworCQlyZWNvcmQgPSBmaW5kX3Jldm9rZV9yZWNvcmQoam91cm5hbCwgYmgtPmJfYmxvY2tucik7CisJCWlmIChyZWNvcmQpIHsKKwkJCWpiZF9kZWJ1Zyg0LCAiY2FuY2VsbGVkIGV4aXN0aW5nIHJldm9rZSBvbiAiCisJCQkJICAiYmxvY2tuciAlbGx1XG4iLCAodW5zaWduZWQgbG9uZyBsb25nKWJoLT5iX2Jsb2NrbnIpOworCQkJc3Bpbl9sb2NrKCZqb3VybmFsLT5qX3Jldm9rZV9sb2NrKTsKKwkJCWxpc3RfZGVsKCZyZWNvcmQtPmhhc2gpOworCQkJc3Bpbl91bmxvY2soJmpvdXJuYWwtPmpfcmV2b2tlX2xvY2spOworCQkJa21lbV9jYWNoZV9mcmVlKGpiZDJfcmV2b2tlX3JlY29yZF9jYWNoZSwgcmVjb3JkKTsKKwkJCWRpZF9yZXZva2UgPSAxOworCQl9CisJfQorCisjaWZkZWYgSkZTX0VYUEVOU0lWRV9DSEVDS0lORworCS8qIFRoZXJlIGJldHRlciBub3QgYmUgb25lIGxlZnQgYmVoaW5kIGJ5IG5vdyEgKi8KKwlyZWNvcmQgPSBmaW5kX3Jldm9rZV9yZWNvcmQoam91cm5hbCwgYmgtPmJfYmxvY2tucik7CisJSl9BU1NFUlRfSkgoamgsIHJlY29yZCA9PSBOVUxMKTsKKyNlbmRpZgorCisJLyogRmluYWxseSwgaGF2ZSB3ZSBqdXN0IGNsZWFyZWQgcmV2b2tlIG9uIGFuIHVuaGFzaGVkCisJICogYnVmZmVyX2hlYWQ/ICBJZiBzbywgd2UnZCBiZXR0ZXIgbWFrZSBzdXJlIHdlIGNsZWFyIHRoZQorCSAqIHJldm9rZWQgc3RhdHVzIG9uIGFueSBoYXNoZWQgYWxpYXMgdG9vLCBvdGhlcndpc2UgdGhlIHJldm9rZQorCSAqIHN0YXRlIG1hY2hpbmUgd2lsbCBnZXQgdmVyeSB1cHNldCBsYXRlciBvbi4gKi8KKwlpZiAobmVlZF9jYW5jZWwpIHsKKwkJc3RydWN0IGJ1ZmZlcl9oZWFkICpiaDI7CisJCWJoMiA9IF9fZmluZF9nZXRfYmxvY2soYmgtPmJfYmRldiwgYmgtPmJfYmxvY2tuciwgYmgtPmJfc2l6ZSk7CisJCWlmIChiaDIpIHsKKwkJCWlmIChiaDIgIT0gYmgpCisJCQkJY2xlYXJfYnVmZmVyX3Jldm9rZWQoYmgyKTsKKwkJCV9fYnJlbHNlKGJoMik7CisJCX0KKwl9CisJcmV0dXJuIGRpZF9yZXZva2U7Cit9CisKKy8qCisgKiBqb3VybmFsX2NsZWFyX3Jldm9rZWRfZmxhZyBjbGVhcnMgcmV2b2tlZCBmbGFnIG9mIGJ1ZmZlcnMgaW4KKyAqIHJldm9rZSB0YWJsZSB0byByZWZsZWN0IHRoZXJlIGlzIG5vIHJldm9rZWQgYnVmZmVycyBpbiB0aGUgbmV4dAorICogdHJhbnNhY3Rpb24gd2hpY2ggaXMgZ29pbmcgdG8gYmUgc3RhcnRlZC4KKyAqLwordm9pZCBqYmQyX2NsZWFyX2J1ZmZlcl9yZXZva2VkX2ZsYWdzKGpvdXJuYWxfdCAqam91cm5hbCkKK3sKKwlzdHJ1Y3QgamJkMl9yZXZva2VfdGFibGVfcyAqcmV2b2tlID0gam91cm5hbC0+al9yZXZva2U7CisJaW50IGkgPSAwOworCisJZm9yIChpID0gMDsgaSA8IHJldm9rZS0+aGFzaF9zaXplOyBpKyspIHsKKwkJc3RydWN0IGxpc3RfaGVhZCAqaGFzaF9saXN0OworCQlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0X2VudHJ5OworCQloYXNoX2xpc3QgPSAmcmV2b2tlLT5oYXNoX3RhYmxlW2ldOworCisJCWxpc3RfZm9yX2VhY2gobGlzdF9lbnRyeSwgaGFzaF9saXN0KSB7CisJCQlzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKnJlY29yZDsKKwkJCXN0cnVjdCBidWZmZXJfaGVhZCAqYmg7CisJCQlyZWNvcmQgPSAoc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zICopbGlzdF9lbnRyeTsKKwkJCWJoID0gX19maW5kX2dldF9ibG9jayhqb3VybmFsLT5qX2ZzX2RldiwKKwkJCQkJICAgICAgcmVjb3JkLT5ibG9ja25yLAorCQkJCQkgICAgICBqb3VybmFsLT5qX2Jsb2Nrc2l6ZSk7CisJCQlpZiAoYmgpIHsKKwkJCQljbGVhcl9idWZmZXJfcmV2b2tlZChiaCk7CisJCQkJX19icmVsc2UoYmgpOworCQkJfQorCQl9CisJfQorfQorCisvKiBqb3VybmFsX3N3aXRjaF9yZXZva2UgdGFibGUgc2VsZWN0IGpfcmV2b2tlIGZvciBuZXh0IHRyYW5zYWN0aW9uCisgKiB3ZSBkbyBub3Qgd2FudCB0byBzdXNwZW5kIGFueSBwcm9jZXNzaW5nIHVudGlsIGFsbCByZXZva2VzIGFyZQorICogd3JpdHRlbiAtYnp6egorICovCit2b2lkIGpvdXJuYWxfc3dpdGNoX3Jldm9rZV90YWJsZShqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJaW50IGk7CisKKwlpZiAoam91cm5hbC0+al9yZXZva2UgPT0gam91cm5hbC0+al9yZXZva2VfdGFibGVbMF0pCisJCWpvdXJuYWwtPmpfcmV2b2tlID0gam91cm5hbC0+al9yZXZva2VfdGFibGVbMV07CisJZWxzZQorCQlqb3VybmFsLT5qX3Jldm9rZSA9IGpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzBdOworCisJZm9yIChpID0gMDsgaSA8IGpvdXJuYWwtPmpfcmV2b2tlLT5oYXNoX3NpemU7IGkrKykKKwkJSU5JVF9MSVNUX0hFQUQoJmpvdXJuYWwtPmpfcmV2b2tlLT5oYXNoX3RhYmxlW2ldKTsKK30KKworLyoKKyAqIFdyaXRlIHJldm9rZSByZWNvcmRzIHRvIHRoZSBqb3VybmFsIGZvciBhbGwgZW50cmllcyBpbiB0aGUgY3VycmVudAorICogcmV2b2tlIGhhc2gsIGRlbGV0aW5nIHRoZSBlbnRyaWVzIGFzIHdlIGdvLgorICovCit2b2lkIGpvdXJuYWxfd3JpdGVfcmV2b2tlX3JlY29yZHMoam91cm5hbF90ICpqb3VybmFsLAorCQkJCSAgICAgICB0cmFuc2FjdGlvbl90ICp0cmFuc2FjdGlvbiwKKwkJCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqbG9nX2J1ZnMsCisJCQkJICAgICAgIGludCB3cml0ZV9vcCkKK3sKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKmRlc2NyaXB0b3I7CisJc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zICpyZWNvcmQ7CisJc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MgKnJldm9rZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpoYXNoX2xpc3Q7CisJaW50IGksIG9mZnNldCwgY291bnQ7CisKKwlkZXNjcmlwdG9yID0gTlVMTDsKKwlvZmZzZXQgPSAwOworCWNvdW50ID0gMDsKKworCS8qIHNlbGVjdCByZXZva2UgdGFibGUgZm9yIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gKi8KKwlyZXZva2UgPSBqb3VybmFsLT5qX3Jldm9rZSA9PSBqb3VybmFsLT5qX3Jldm9rZV90YWJsZVswXSA/CisJCWpvdXJuYWwtPmpfcmV2b2tlX3RhYmxlWzFdIDogam91cm5hbC0+al9yZXZva2VfdGFibGVbMF07CisKKwlmb3IgKGkgPSAwOyBpIDwgcmV2b2tlLT5oYXNoX3NpemU7IGkrKykgeworCQloYXNoX2xpc3QgPSAmcmV2b2tlLT5oYXNoX3RhYmxlW2ldOworCisJCXdoaWxlICghbGlzdF9lbXB0eShoYXNoX2xpc3QpKSB7CisJCQlyZWNvcmQgPSAoc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zICopCisJCQkJaGFzaF9saXN0LT5uZXh0OworCQkJd3JpdGVfb25lX3Jldm9rZV9yZWNvcmQoam91cm5hbCwgdHJhbnNhY3Rpb24sIGxvZ19idWZzLAorCQkJCQkJJmRlc2NyaXB0b3IsICZvZmZzZXQsCisJCQkJCQlyZWNvcmQsIHdyaXRlX29wKTsKKwkJCWNvdW50Kys7CisJCQlsaXN0X2RlbCgmcmVjb3JkLT5oYXNoKTsKKwkJCWttZW1fY2FjaGVfZnJlZShqYmQyX3Jldm9rZV9yZWNvcmRfY2FjaGUsIHJlY29yZCk7CisJCX0KKwl9CisJaWYgKGRlc2NyaXB0b3IpCisJCWZsdXNoX2Rlc2NyaXB0b3Ioam91cm5hbCwgZGVzY3JpcHRvciwgb2Zmc2V0LCB3cml0ZV9vcCk7CisJamJkX2RlYnVnKDEsICJXcm90ZSAlZCByZXZva2UgcmVjb3Jkc1xuIiwgY291bnQpOworfQorCisvKgorICogV3JpdGUgb3V0IG9uZSByZXZva2UgcmVjb3JkLiAgV2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgZGVzY3JpcHRvcgorICogYmxvY2sgaWYgdGhlIG9sZCBvbmUgaXMgZnVsbCBvciBpZiB3ZSBoYXZlIG5vdCBhbHJlYWR5IGNyZWF0ZWQgb25lLgorICovCisKK3N0YXRpYyB2b2lkIHdyaXRlX29uZV9yZXZva2VfcmVjb3JkKGpvdXJuYWxfdCAqam91cm5hbCwKKwkJCQkgICAgdHJhbnNhY3Rpb25fdCAqdHJhbnNhY3Rpb24sCisJCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxvZ19idWZzLAorCQkJCSAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipkZXNjcmlwdG9ycCwKKwkJCQkgICAgaW50ICpvZmZzZXRwLAorCQkJCSAgICBzdHJ1Y3QgamJkMl9yZXZva2VfcmVjb3JkX3MgKnJlY29yZCwKKwkJCQkgICAgaW50IHdyaXRlX29wKQoreworCWludCBjc3VtX3NpemUgPSAwOworCXN0cnVjdCBidWZmZXJfaGVhZCAqZGVzY3JpcHRvcjsKKwlpbnQgc3osIG9mZnNldDsKKwlqb3VybmFsX2hlYWRlcl90ICpoZWFkZXI7CisKKwkvKiBJZiB3ZSBhcmUgYWxyZWFkeSBhYm9ydGluZywgdGhpcyBhbGwgYmVjb21lcyBhIG5vb3AuICBXZQorICAgICAgICAgICBzdGlsbCBuZWVkIHRvIGdvIHJvdW5kIHRoZSBsb29wIGluCisgICAgICAgICAgIGpvdXJuYWxfd3JpdGVfcmV2b2tlX3JlY29yZHMgaW4gb3JkZXIgdG8gZnJlZSBhbGwgb2YgdGhlCisgICAgICAgICAgIHJldm9rZSByZWNvcmRzOiBvbmx5IHRoZSBJTyB0byB0aGUgam91cm5hbCBpcyBvbWl0dGVkLiAqLworCWlmIChpc19qb3VybmFsX2Fib3J0ZWQoam91cm5hbCkpCisJCXJldHVybjsKKworCWRlc2NyaXB0b3IgPSAqZGVzY3JpcHRvcnA7CisJb2Zmc2V0ID0gKm9mZnNldHA7CisKKwkvKiBEbyB3ZSBuZWVkIHRvIGxlYXZlIHNwYWNlIGF0IHRoZSBlbmQgZm9yIGEgY2hlY2tzdW0/ICovCisJaWYgKGpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoam91cm5hbCkpCisJCWNzdW1fc2l6ZSA9IHNpemVvZihzdHJ1Y3Qgam91cm5hbF9yZXZva2VfdGFpbCk7CisKKwlpZiAoSkJEMl9IQVNfSU5DT01QQVRfRkVBVFVSRShqb3VybmFsLCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQpKQorCQlzeiA9IDg7CisJZWxzZQorCQlzeiA9IDQ7CisKKwkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhIGRlc2NyaXB0b3Igd2l0aCBzcGFjZSBsZWZ0IGZvciB0aGUgcmVjb3JkICovCisJaWYgKGRlc2NyaXB0b3IpIHsKKwkJaWYgKG9mZnNldCArIHN6ID4gam91cm5hbC0+al9ibG9ja3NpemUgLSBjc3VtX3NpemUpIHsKKwkJCWZsdXNoX2Rlc2NyaXB0b3Ioam91cm5hbCwgZGVzY3JpcHRvciwgb2Zmc2V0LCB3cml0ZV9vcCk7CisJCQlkZXNjcmlwdG9yID0gTlVMTDsKKwkJfQorCX0KKworCWlmICghZGVzY3JpcHRvcikgeworCQlkZXNjcmlwdG9yID0gam91cm5hbF9nZXRfZGVzY3JpcHRvcl9idWZmZXIoam91cm5hbCk7CisJCWlmICghZGVzY3JpcHRvcikKKwkJCXJldHVybjsKKwkJaGVhZGVyID0gKGpvdXJuYWxfaGVhZGVyX3QgKilkZXNjcmlwdG9yLT5iX2RhdGE7CisJCWhlYWRlci0+aF9tYWdpYyAgICAgPSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX01BR0lDX05VTUJFUik7CisJCWhlYWRlci0+aF9ibG9ja3R5cGUgPSBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX1JFVk9LRV9CTE9DSyk7CisJCWhlYWRlci0+aF9zZXF1ZW5jZSAgPSBleHQyZnNfY3B1X3RvX2JlMzIodHJhbnNhY3Rpb24tPnRfdGlkKTsKKworCQkvKiBSZWNvcmQgaXQgc28gdGhhdCB3ZSBjYW4gd2FpdCBmb3IgSU8gY29tcGxldGlvbiBsYXRlciAqLworCQlCVUZGRVJfVFJBQ0UoZGVzY3JpcHRvciwgImZpbGUgaW4gbG9nX2J1ZnMiKTsKKwkJamJkMl9maWxlX2xvZ19iaChsb2dfYnVmcywgZGVzY3JpcHRvcik7CisKKwkJb2Zmc2V0ID0gc2l6ZW9mKGpvdXJuYWxfcmV2b2tlX2hlYWRlcl90KTsKKwkJKmRlc2NyaXB0b3JwID0gZGVzY3JpcHRvcjsKKwl9CisKKwlpZiAoSkJEMl9IQVNfSU5DT01QQVRfRkVBVFVSRShqb3VybmFsLCBKQkQyX0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQpKSB7CisJCSogKChfX2JlNjQgKikoJmRlc2NyaXB0b3ItPmJfZGF0YVtvZmZzZXRdKSkgPQorCQkJY3B1X3RvX2JlNjQocmVjb3JkLT5ibG9ja25yKTsKKwllbHNlCisJCSogKChfX2JlMzIgKikoJmRlc2NyaXB0b3ItPmJfZGF0YVtvZmZzZXRdKSkgPQorCQkJY3B1X3RvX2JlMzIocmVjb3JkLT5ibG9ja25yKTsKKwlvZmZzZXQgKz0gc3o7CisKKwkqb2Zmc2V0cCA9IG9mZnNldDsKK30KKworc3RhdGljIHZvaWQgamJkMl9yZXZva2VfY3N1bV9zZXQoam91cm5hbF90ICpqLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmJoKQoreworCXN0cnVjdCBqb3VybmFsX3Jldm9rZV90YWlsICp0YWlsOworCV9fdTMyIGNzdW07CisKKwlpZiAoIWpvdXJuYWxfaGFzX2NzdW1fdjJvcjMoaikpCisJCXJldHVybjsKKworCXRhaWwgPSAoc3RydWN0IGpvdXJuYWxfcmV2b2tlX3RhaWwgKikoYmgtPmJfZGF0YSArIGotPmpfYmxvY2tzaXplIC0KKwkJCXNpemVvZihzdHJ1Y3Qgam91cm5hbF9yZXZva2VfdGFpbCkpOworCXRhaWwtPnJfY2hlY2tzdW0gPSAwOworCWNzdW0gPSBqYmQyX2Noa3N1bShqLCBqLT5qX2NzdW1fc2VlZCwgYmgtPmJfZGF0YSwgai0+al9ibG9ja3NpemUpOworCXRhaWwtPnJfY2hlY2tzdW0gPSBleHQyZnNfY3B1X3RvX2JlMzIoY3N1bSk7Cit9CisKKy8qCisgKiBGbHVzaCBhIHJldm9rZSBkZXNjcmlwdG9yIG91dCB0byB0aGUgam91cm5hbC4gIElmIHdlIGFyZSBhYm9ydGluZywKKyAqIHRoaXMgaXMgYSBub29wOyBvdGhlcndpc2Ugd2UgYXJlIGdlbmVyYXRpbmcgYSBidWZmZXIgd2hpY2ggbmVlZHMgdG8KKyAqIGJlIHdhaXRlZCBmb3IgZHVyaW5nIGNvbW1pdCwgc28gaXQgaGFzIHRvIGdvIG9udG8gdGhlIGFwcHJvcHJpYXRlCisgKiBqb3VybmFsIGJ1ZmZlciBsaXN0LgorICovCisKK3N0YXRpYyB2b2lkIGZsdXNoX2Rlc2NyaXB0b3Ioam91cm5hbF90ICpqb3VybmFsLAorCQkJICAgICBzdHJ1Y3QgYnVmZmVyX2hlYWQgKmRlc2NyaXB0b3IsCisJCQkgICAgIGludCBvZmZzZXQsIGludCB3cml0ZV9vcCkKK3sKKwlqb3VybmFsX3Jldm9rZV9oZWFkZXJfdCAqaGVhZGVyOworCisJaWYgKGlzX2pvdXJuYWxfYWJvcnRlZChqb3VybmFsKSkgeworCQlwdXRfYmgoZGVzY3JpcHRvcik7CisJCXJldHVybjsKKwl9CisKKwloZWFkZXIgPSAoam91cm5hbF9yZXZva2VfaGVhZGVyX3QgKilkZXNjcmlwdG9yLT5iX2RhdGE7CisJaGVhZGVyLT5yX2NvdW50ID0gZXh0MmZzX2NwdV90b19iZTMyKG9mZnNldCk7CisJamJkMl9yZXZva2VfY3N1bV9zZXQoam91cm5hbCwgZGVzY3JpcHRvcik7CisKKwlzZXRfYnVmZmVyX2p3cml0ZShkZXNjcmlwdG9yKTsKKwlCVUZGRVJfVFJBQ0UoZGVzY3JpcHRvciwgIndyaXRlIik7CisJc2V0X2J1ZmZlcl9kaXJ0eShkZXNjcmlwdG9yKTsKKwl3cml0ZV9kaXJ0eV9idWZmZXIoZGVzY3JpcHRvciwgd3JpdGVfb3ApOworfQorI2VuZGlmCisKKy8qCisgKiBSZXZva2Ugc3VwcG9ydCBmb3IgcmVjb3ZlcnkuCisgKgorICogUmVjb3ZlcnkgbmVlZHMgdG8gYmUgYWJsZSB0bzoKKyAqCisgKiAgcmVjb3JkIGFsbCByZXZva2UgcmVjb3JkcywgaW5jbHVkaW5nIHRoZSB0aWQgb2YgdGhlIGxhdGVzdCBpbnN0YW5jZQorICogIG9mIGVhY2ggcmV2b2tlIGluIHRoZSBqb3VybmFsCisgKgorICogIGNoZWNrIHdoZXRoZXIgYSBnaXZlbiBibG9jayBpbiBhIGdpdmVuIHRyYW5zYWN0aW9uIHNob3VsZCBiZSByZXBsYXllZAorICogIChpZS4gaGFzIG5vdCBiZWVuIHJldm9rZWQgYnkgYSByZXZva2UgcmVjb3JkIGluIHRoYXQgb3IgYSBzdWJzZXF1ZW50CisgKiAgdHJhbnNhY3Rpb24pCisgKgorICogIGVtcHR5IHRoZSByZXZva2UgdGFibGUgYWZ0ZXIgcmVjb3ZlcnkuCisgKi8KKworLyoKKyAqIEZpcnN0LCBzZXR0aW5nIHJldm9rZSByZWNvcmRzLiAgV2UgY3JlYXRlIGEgbmV3IHJldm9rZSByZWNvcmQgZm9yCisgKiBldmVyeSBibG9jayBldmVyIHJldm9rZWQgaW4gdGhlIGxvZyBhcyB3ZSBzY2FuIGl0IGZvciByZWNvdmVyeSwgYW5kCisgKiB3ZSB1cGRhdGUgdGhlIGV4aXN0aW5nIHJlY29yZHMgaWYgd2UgZmluZCBtdWx0aXBsZSByZXZva2VzIGZvciBhCisgKiBzaW5nbGUgYmxvY2suCisgKi8KKworaW50IGpvdXJuYWxfc2V0X3Jldm9rZShqb3VybmFsX3QgKmpvdXJuYWwsCisJCSAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2tuciwKKwkJICAgICAgIHRpZF90IHNlcXVlbmNlKQoreworCXN0cnVjdCBqYmQyX3Jldm9rZV9yZWNvcmRfcyAqcmVjb3JkOworCisJcmVjb3JkID0gZmluZF9yZXZva2VfcmVjb3JkKGpvdXJuYWwsIGJsb2NrbnIpOworCWlmIChyZWNvcmQpIHsKKwkJLyogSWYgd2UgaGF2ZSBtdWx0aXBsZSBvY2N1cnJlbmNlcywgb25seSByZWNvcmQgdGhlCisJCSAqIGxhdGVzdCBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIGhhc2hlZCByZWNvcmQgKi8KKwkJaWYgKHRpZF9ndChzZXF1ZW5jZSwgcmVjb3JkLT5zZXF1ZW5jZSkpCisJCQlyZWNvcmQtPnNlcXVlbmNlID0gc2VxdWVuY2U7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gaW5zZXJ0X3Jldm9rZV9oYXNoKGpvdXJuYWwsIGJsb2NrbnIsIHNlcXVlbmNlKTsKK30KKworLyoKKyAqIFRlc3QgcmV2b2tlIHJlY29yZHMuICBGb3IgYSBnaXZlbiBibG9jayByZWZlcmVuY2VkIGluIHRoZSBsb2csIGhhcworICogdGhhdCBibG9jayBiZWVuIHJldm9rZWQ/ICBBIHJldm9rZSByZWNvcmQgd2l0aCBhIGdpdmVuIHRyYW5zYWN0aW9uCisgKiBzZXF1ZW5jZSBudW1iZXIgcmV2b2tlcyBhbGwgYmxvY2tzIGluIHRoYXQgdHJhbnNhY3Rpb24gYW5kIGVhcmxpZXIKKyAqIG9uZXMsIGJ1dCBsYXRlciB0cmFuc2FjdGlvbnMgc3RpbGwgbmVlZCByZXBsYXllZC4KKyAqLworCitpbnQgam91cm5hbF90ZXN0X3Jldm9rZShqb3VybmFsX3QgKmpvdXJuYWwsCisJCQl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2tuciwKKwkJCXRpZF90IHNlcXVlbmNlKQoreworCXN0cnVjdCBqYmQyX3Jldm9rZV9yZWNvcmRfcyAqcmVjb3JkOworCisJcmVjb3JkID0gZmluZF9yZXZva2VfcmVjb3JkKGpvdXJuYWwsIGJsb2NrbnIpOworCWlmICghcmVjb3JkKQorCQlyZXR1cm4gMDsKKwlpZiAodGlkX2d0KHNlcXVlbmNlLCByZWNvcmQtPnNlcXVlbmNlKSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBGaW5hbGx5LCBvbmNlIHJlY292ZXJ5IGlzIG92ZXIsIHdlIG5lZWQgdG8gY2xlYXIgdGhlIHJldm9rZSB0YWJsZSBzbworICogdGhhdCBpdCBjYW4gYmUgcmV1c2VkIGJ5IHRoZSBydW5uaW5nIGZpbGVzeXN0ZW0uCisgKi8KKwordm9pZCBqb3VybmFsX2NsZWFyX3Jldm9rZShqb3VybmFsX3QgKmpvdXJuYWwpCit7CisJaW50IGk7CisJc3RydWN0IGxpc3RfaGVhZCAqaGFzaF9saXN0OworCXN0cnVjdCBqYmQyX3Jldm9rZV9yZWNvcmRfcyAqcmVjb3JkOworCXN0cnVjdCBqYmQyX3Jldm9rZV90YWJsZV9zICpyZXZva2U7CisKKwlyZXZva2UgPSBqb3VybmFsLT5qX3Jldm9rZTsKKworCWZvciAoaSA9IDA7IGkgPCByZXZva2UtPmhhc2hfc2l6ZTsgaSsrKSB7CisJCWhhc2hfbGlzdCA9ICZyZXZva2UtPmhhc2hfdGFibGVbaV07CisJCXdoaWxlICghbGlzdF9lbXB0eShoYXNoX2xpc3QpKSB7CisJCQlyZWNvcmQgPSAoc3RydWN0IGpiZDJfcmV2b2tlX3JlY29yZF9zKikgaGFzaF9saXN0LT5uZXh0OworCQkJbGlzdF9kZWwoJnJlY29yZC0+aGFzaCk7CisJCQlrbWVtX2NhY2hlX2ZyZWUoamJkMl9yZXZva2VfcmVjb3JkX2NhY2hlLCByZWNvcmQpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9zY2FudGVzdC5jIGIvZTJmc3Byb2dzL2UyZnNjay9zY2FudGVzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMzExNDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3NjYW50ZXN0LmMKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBzY2FudGVzdC5jIC0gdGVzdCB0aGUgc3BlZWQgb2YgdGhlIGlub2RlIHNjYW4gcm91dGluZQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8dGVybWlvcy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBIQVZFX01BTExPQ19ICisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKworI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKworI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorCisKK2V4dGVybiBpbnQgaXNhdHR5KGludCk7CisKK2NvbnN0IGNoYXIgKiBkZXZpY2VfbmFtZSA9IE5VTEw7CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIGhvdyBtdWNoIHJlc291cmNlcyBoYXZlCisgKiBiZWVuIHVzZWQgZm9yIGEgcGFydGljdWxhciBwYXNzIG9mIGUyZnNjay4KKyAqLworc3RydWN0IHJlc291cmNlX3RyYWNrIHsKKwlzdHJ1Y3QgdGltZXZhbCB0aW1lX3N0YXJ0OworCXN0cnVjdCB0aW1ldmFsIHVzZXJfc3RhcnQ7CisJc3RydWN0IHRpbWV2YWwgc3lzdGVtX3N0YXJ0OworCXZvaWQJKmJya19zdGFydDsKK307CisKK3N0cnVjdCByZXNvdXJjZV90cmFjawlnbG9iYWxfcnRyYWNrOworCit2b2lkIGluaXRfcmVzb3VyY2VfdHJhY2soc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaykKK3sKKwlzdHJ1Y3QgcnVzYWdlIHI7CisKKwl0cmFjay0+YnJrX3N0YXJ0ID0gc2JyaygwKTsKKwlnZXR0aW1lb2ZkYXkoJnRyYWNrLT50aW1lX3N0YXJ0LCAwKTsKKwlnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZyKTsKKwl0cmFjay0+dXNlcl9zdGFydCA9IHIucnVfdXRpbWU7CisJdHJhY2stPnN5c3RlbV9zdGFydCA9IHIucnVfc3RpbWU7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIGZsb2F0IHRpbWV2YWxfc3VidHJhY3Qoc3RydWN0IHRpbWV2YWwgKnR2MSwKKwkJCQkJIHN0cnVjdCB0aW1ldmFsICp0djIpCit7CisJcmV0dXJuICgodHYxLT50dl9zZWMgLSB0djItPnR2X3NlYykgKworCQkoKGZsb2F0KSAodHYxLT50dl91c2VjIC0gdHYyLT50dl91c2VjKSkgLyAxMDAwMDAwKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfcmVzb3VyY2VfdHJhY2soc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaykKK3sKKwlzdHJ1Y3QgcnVzYWdlIHI7CisJc3RydWN0IHRpbWV2YWwgdGltZV9lbmQ7CisKKwlnZXR0aW1lb2ZkYXkoJnRpbWVfZW5kLCAwKTsKKwlnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZyKTsKKworCXByaW50ZihfKCJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIpLAorCSAgICAgICAoaW50KSAoKChjaGFyICopIHNicmsoMCkpIC0gKChjaGFyICopIHRyYWNrLT5icmtfc3RhcnQpKSwKKwkgICAgICAgdGltZXZhbF9zdWJ0cmFjdCgmdGltZV9lbmQsICZ0cmFjay0+dGltZV9zdGFydCksCisJICAgICAgIHRpbWV2YWxfc3VidHJhY3QoJnIucnVfdXRpbWUsICZ0cmFjay0+dXNlcl9zdGFydCksCisJICAgICAgIHRpbWV2YWxfc3VidHJhY3QoJnIucnVfc3RpbWUsICZ0cmFjay0+c3lzdGVtX3N0YXJ0KSk7Cit9CisKKworCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwlpbnQJCWV4aXRfdmFsdWUgPSAwOworCWludAkJaTsKKwlleHQyX2ZpbHN5cwlmczsKKwlleHQyX2lub2RlX3NjYW4Jc2NhbjsKKwlleHQyX2lub190CWlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKworCXByaW50ZihfKCJzaXplIG9mIGlub2RlPSVkXG4iKSwgc2l6ZW9mKGlub2RlKSk7CisKKwlkZXZpY2VfbmFtZSA9ICIvZGV2L2hkYTMiOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmZ2xvYmFsX3J0cmFjayk7CisKKwlyZXR2YWwgPSBleHQyZnNfb3BlbihkZXZpY2VfbmFtZSwgMCwKKwkJCSAgICAgMCwgMCwgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQlkZXZpY2VfbmFtZSk7CisJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX29wZW5faW5vZGVfc2NhbihmcywgMCwgJnNjYW4pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsIF8oIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2dldF9uZXh0X2lub2RlKHNjYW4sICZpbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgXygid2hpbGUgc3RhcnRpbmcgaW5vZGUgc2NhbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisJd2hpbGUgKGlubykgeworCQlpZiAoIWlub2RlLmlfbGlua3NfY291bnQpCisJCQlnb3RvIG5leHQ7CisJCXByaW50ZigiJWx1XG4iLCBpbm9kZS5pX2Jsb2Nrcyk7CisJbmV4dDoKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9uZXh0X2lub2RlKHNjYW4sICZpbm8sICZpbm9kZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLAorCQkJCV8oIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisKKwlleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworCisJcHJpbnRfcmVzb3VyY2VfdHJhY2soJmdsb2JhbF9ydHJhY2spOworCisJcmV0dXJuIGV4aXRfdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc2NrL3NpZ2NhdGNoZXIuYyBiL2UyZnNwcm9ncy9lMmZzY2svc2lnY2F0Y2hlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDNiN2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3NpZ2NhdGNoZXIuYwpAQCAtMCwwICsxLDQ0NiBAQAorLyoKKyAqIHNpZ2NhdGNoZXIuYyAtLS0gcHJpbnQgYSBiYWNrdHJhY2Ugb24gYSBTSUdTRUdWLCBldC4gYWwKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmZGVmIEhBVkVfRVhFQ0lORk9fSAorI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImUyZnNjay5oIgorCitzdHJ1Y3Qgc3RyX3RhYmxlIHsKKwlpbnQJbnVtOworCWNvbnN0IGNoYXIJKm5hbWU7Cit9OworCisjZGVmaW5lIERFRklORV9FTlRSWShTWU0pCXsgU1lNLCAjU1lNIH0sCisjZGVmaW5lIEVORF9UQUJMRQkJeyAwLCAwIH0KKworc3RhdGljIHN0cnVjdCBzdHJfdGFibGUgc2lnX3RhYmxlW10gPSB7CisjaWZkZWYgU0lHSFVQCisJREVGSU5FX0VOVFJZKFNJR0hVUCkKKyNlbmRpZgorI2lmZGVmIFNJR0lOVAorCURFRklORV9FTlRSWShTSUdJTlQpCisjZW5kaWYKKyNpZmRlZiBTSUdRVUlUCisJREVGSU5FX0VOVFJZKFNJR1FVSVQpCisjZW5kaWYKKyNpZmRlZiBTSUdJTEwKKwlERUZJTkVfRU5UUlkoU0lHSUxMKQorI2VuZGlmCisjaWZkZWYgU0lHVFJBUAorCURFRklORV9FTlRSWShTSUdUUkFQKQorI2VuZGlmCisjaWZkZWYgU0lHQUJSVAorCURFRklORV9FTlRSWShTSUdBQlJUKQorI2VuZGlmCisjaWZkZWYgU0lHSU9UCisJREVGSU5FX0VOVFJZKFNJR0lPVCkKKyNlbmRpZgorI2lmZGVmIFNJR0JVUworCURFRklORV9FTlRSWShTSUdCVVMpCisjZW5kaWYKKyNpZmRlZiBTSUdGUEUKKwlERUZJTkVfRU5UUlkoU0lHRlBFKQorI2VuZGlmCisjaWZkZWYgU0lHS0lMTAorCURFRklORV9FTlRSWShTSUdLSUxMKQorI2VuZGlmCisjaWZkZWYgU0lHVVNSMQorCURFRklORV9FTlRSWShTSUdVU1IxKQorI2VuZGlmCisjaWZkZWYgU0lHU0VHVgorCURFRklORV9FTlRSWShTSUdTRUdWKQorI2VuZGlmCisjaWZkZWYgU0lHVVNSMgorCURFRklORV9FTlRSWShTSUdVU1IyKQorI2VuZGlmCisjaWZkZWYgU0lHUElQRQorCURFRklORV9FTlRSWShTSUdQSVBFKQorI2VuZGlmCisjaWZkZWYgU0lHQUxSTQorCURFRklORV9FTlRSWShTSUdBTFJNKQorI2VuZGlmCisjaWZkZWYgU0lHVEVSTQorCURFRklORV9FTlRSWShTSUdURVJNKQorI2VuZGlmCisjaWZkZWYgU0lHU1RLRkxUCisJREVGSU5FX0VOVFJZKFNJR1NUS0ZMVCkKKyNlbmRpZgorI2lmZGVmIFNJR0NITEQKKwlERUZJTkVfRU5UUlkoU0lHQ0hMRCkKKyNlbmRpZgorI2lmZGVmIFNJR0NPTlQKKwlERUZJTkVfRU5UUlkoU0lHQ09OVCkKKyNlbmRpZgorI2lmZGVmIFNJR1NUT1AKKwlERUZJTkVfRU5UUlkoU0lHU1RPUCkKKyNlbmRpZgorI2lmZGVmIFNJR1RTVFAKKwlERUZJTkVfRU5UUlkoU0lHVFNUUCkKKyNlbmRpZgorI2lmZGVmIFNJR1RUSU4KKwlERUZJTkVfRU5UUlkoU0lHVFRJTikKKyNlbmRpZgorI2lmZGVmIFNJR1RUT1UKKwlERUZJTkVfRU5UUlkoU0lHVFRPVSkKKyNlbmRpZgorI2lmZGVmIFNJR1VSRworCURFRklORV9FTlRSWShTSUdVUkcpCisjZW5kaWYKKyNpZmRlZiBTSUdYQ1BVCisJREVGSU5FX0VOVFJZKFNJR1hDUFUpCisjZW5kaWYKKyNpZmRlZiBTSUdYRlNaCisJREVGSU5FX0VOVFJZKFNJR1hGU1opCisjZW5kaWYKKyNpZmRlZiBTSUdWVEFMUk0KKwlERUZJTkVfRU5UUlkoU0lHVlRBTFJNKQorI2VuZGlmCisjaWZkZWYgU0lHUFJPRgorCURFRklORV9FTlRSWShTSUdQUk9GKQorI2VuZGlmCisjaWZkZWYgU0lHV0lOQ0gKKwlERUZJTkVfRU5UUlkoU0lHV0lOQ0gpCisjZW5kaWYKKyNpZmRlZiBTSUdJTworCURFRklORV9FTlRSWShTSUdJTykKKyNlbmRpZgorI2lmZGVmIFNJR1BPTEwKKwlERUZJTkVfRU5UUlkoU0lHUE9MTCkKKyNlbmRpZgorI2lmZGVmIFNJR1BXUgorCURFRklORV9FTlRSWShTSUdQV1IpCisjZW5kaWYKKyNpZmRlZiBTSUdTWVMKKwlERUZJTkVfRU5UUlkoU0lHU1lTKQorI2VuZGlmCisJRU5EX1RBQkxFCit9OworCitzdGF0aWMgc3RydWN0IHN0cl90YWJsZSBnZW5lcmljX2NvZGVfdGFibGVbXSA9IHsKKyNpZmRlZiBTSV9BU1lOQ05MCisJREVGSU5FX0VOVFJZKFNJX0FTWU5DTkwpCisjZW5kaWYKKyNpZmRlZiBTSV9US0lMTAorCURFRklORV9FTlRSWShTSV9US0lMTCkKKyNlbmRpZgorI2lmZGVmIFNJX1NJR0lPCisJREVGSU5FX0VOVFJZKFNJX1NJR0lPKQorI2VuZGlmCisjaWZkZWYgU0lfQVNZTkNJTworCURFRklORV9FTlRSWShTSV9BU1lOQ0lPKQorI2VuZGlmCisjaWZkZWYgU0lfTUVTR1EKKwlERUZJTkVfRU5UUlkoU0lfTUVTR1EpCisjZW5kaWYKKyNpZmRlZiBTSV9USU1FUgorCURFRklORV9FTlRSWShTSV9USU1FUikKKyNlbmRpZgorI2lmZGVmIFNJX1FVRVVFCisJREVGSU5FX0VOVFJZKFNJX1FVRVVFKQorI2VuZGlmCisjaWZkZWYgU0lfVVNFUgorCURFRklORV9FTlRSWShTSV9VU0VSKQorI2VuZGlmCisjaWZkZWYgU0lfS0VSTkVMCisJREVGSU5FX0VOVFJZKFNJX0tFUk5FTCkKKyNlbmRpZgorCUVORF9UQUJMRQorfTsKKworc3RhdGljIHN0cnVjdCBzdHJfdGFibGUgc2lnaWxsX2NvZGVfdGFibGVbXSA9IHsKKyNpZmRlZiBJTExfSUxMT1BDCisJREVGSU5FX0VOVFJZKElMTF9JTExPUEMpCisjZW5kaWYKKyNpZmRlZiBJTExfSUxMT1BOCisJREVGSU5FX0VOVFJZKElMTF9JTExPUE4pCisjZW5kaWYKKyNpZmRlZiBJTExfSUxMQURSCisJREVGSU5FX0VOVFJZKElMTF9JTExBRFIpCisjZW5kaWYKKyNpZmRlZiBJTExfSUxMVFJQCisJREVGSU5FX0VOVFJZKElMTF9JTExUUlApCisjZW5kaWYKKyNpZmRlZiBJTExfUFJWT1BDCisJREVGSU5FX0VOVFJZKElMTF9QUlZPUEMpCisjZW5kaWYKKyNpZmRlZiBJTExfUFJWUkVHCisJREVGSU5FX0VOVFJZKElMTF9QUlZSRUcpCisjZW5kaWYKKyNpZmRlZiBJTExfQ09QUk9DCisJREVGSU5FX0VOVFJZKElMTF9DT1BST0MpCisjZW5kaWYKKyNpZmRlZiBJTExfQkFEU1RLCisJREVGSU5FX0VOVFJZKElMTF9CQURTVEspCisjZW5kaWYKKyNpZmRlZiBCVVNfQURSQUxOCisJREVGSU5FX0VOVFJZKEJVU19BRFJBTE4pCisjZW5kaWYKKyNpZmRlZiBCVVNfQURSRVJSCisJREVGSU5FX0VOVFJZKEJVU19BRFJFUlIpCisjZW5kaWYKKyNpZmRlZiBCVVNfT0JKRVJSCisJREVGSU5FX0VOVFJZKEJVU19PQkpFUlIpCisjZW5kaWYKKwlFTkRfVEFCTEUKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc3RyX3RhYmxlIHNpZ2ZwZV9jb2RlX3RhYmxlW10gPSB7CisjaWZkZWYgRlBFX0lOVERJVgorCURFRklORV9FTlRSWShGUEVfSU5URElWKQorI2VuZGlmCisjaWZkZWYgRlBFX0lOVE9WRgorCURFRklORV9FTlRSWShGUEVfSU5UT1ZGKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVERJVgorCURFRklORV9FTlRSWShGUEVfRkxURElWKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVE9WRgorCURFRklORV9FTlRSWShGUEVfRkxUT1ZGKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVFVORAorCURFRklORV9FTlRSWShGUEVfRkxUVU5EKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVFJFUworCURFRklORV9FTlRSWShGUEVfRkxUUkVTKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVElOVgorCURFRklORV9FTlRSWShGUEVfRkxUSU5WKQorI2VuZGlmCisjaWZkZWYgRlBFX0ZMVFNVQgorCURFRklORV9FTlRSWShGUEVfRkxUU1VCKQorI2VuZGlmCisJRU5EX1RBQkxFCit9OworCitzdGF0aWMgc3RydWN0IHN0cl90YWJsZSBzaWdzZWd2X2NvZGVfdGFibGVbXSA9IHsKKyNpZmRlZiBTRUdWX01BUEVSUgorCURFRklORV9FTlRSWShTRUdWX01BUEVSUikKKyNlbmRpZgorI2lmZGVmIFNFR1ZfQUNDRVJSCisJREVGSU5FX0VOVFJZKFNFR1ZfQUNDRVJSKQorI2VuZGlmCisJRU5EX1RBQkxFCit9OworCisKK3N0YXRpYyBzdHJ1Y3Qgc3RyX3RhYmxlIHNpZ2J1c19jb2RlX3RhYmxlW10gPSB7CisjaWZkZWYgQlVTX0FEUkFMTgorCURFRklORV9FTlRSWShCVVNfQURSQUxOKQorI2VuZGlmCisjaWZkZWYgQlVTX0FEUkVSUgorCURFRklORV9FTlRSWShCVVNfQURSRVJSKQorI2VuZGlmCisjaWZkZWYgQlVTX09CSkVSUgorCURFRklORV9FTlRSWShCVVNfT0JKRVJSKQorI2VuZGlmCisJRU5EX1RBQkxFCit9OworCisjaWYgMCAvKiBzaG91bGQgdGhpcyBiZSBob29rZWQgaW4gc29tZXdoZXJlPyAqLworc3RhdGljIHN0cnVjdCBzdHJfdGFibGUgc2lnc3RyYXBfY29kZV90YWJsZVtdID0geworI2lmZGVmIFRSQVBfQlJLUFQKKwlERUZJTkVfRU5UUlkoVFJBUF9CUktQVCkKKyNlbmRpZgorI2lmZGVmIFRSQVBfVFJBQ0UKKwlERUZJTkVfRU5UUlkoVFJBUF9UUkFDRSkKKyNlbmRpZgorCUVORF9UQUJMRQorfTsKKyNlbmRpZgorCitzdGF0aWMgc3RydWN0IHN0cl90YWJsZSBzaWdjbGRfY29kZV90YWJsZVtdID0geworI2lmZGVmIENMRF9FWElURUQKKwlERUZJTkVfRU5UUlkoQ0xEX0VYSVRFRCkKKyNlbmRpZgorI2lmZGVmIENMRF9LSUxMRUQKKwlERUZJTkVfRU5UUlkoQ0xEX0tJTExFRCkKKyNlbmRpZgorI2lmZGVmIENMRF9EVU1QRUQKKwlERUZJTkVfRU5UUlkoQ0xEX0RVTVBFRCkKKyNlbmRpZgorI2lmZGVmIENMRF9UUkFQUEVECisJREVGSU5FX0VOVFJZKENMRF9UUkFQUEVEKQorI2VuZGlmCisjaWZkZWYgQ0xEX1NUT1BQRUQKKwlERUZJTkVfRU5UUlkoQ0xEX1NUT1BQRUQpCisjZW5kaWYKKyNpZmRlZiBDTERfQ09OVElOVUVECisJREVGSU5FX0VOVFJZKENMRF9DT05USU5VRUQpCisjZW5kaWYKKwlFTkRfVEFCTEUKK307CisKKyNpZiAwIC8qIHNob3VsZCB0aGlzIGJlIGhvb2tlZCBpbiBzb21ld2hlcmU/ICovCitzdGF0aWMgc3RydWN0IHN0cl90YWJsZSBzaWdwb2xsX2NvZGVfdGFibGVbXSA9IHsKKyNpZmRlZiBQT0xMX0lOCisJREVGSU5FX0VOVFJZKFBPTExfSU4pCisjZW5kaWYKKyNpZmRlZiBQT0xMX09VVAorCURFRklORV9FTlRSWShQT0xMX09VVCkKKyNlbmRpZgorI2lmZGVmIFBPTExfTVNHCisJREVGSU5FX0VOVFJZKFBPTExfTVNHKQorI2VuZGlmCisjaWZkZWYgUE9MTF9FUlIKKwlERUZJTkVfRU5UUlkoUE9MTF9FUlIpCisjZW5kaWYKKyNpZmRlZiBQT0xMX1BSSQorCURFRklORV9FTlRSWShQT0xMX1BSSSkKKyNlbmRpZgorI2lmZGVmIFBPTExfSFVQCisJREVGSU5FX0VOVFJZKFBPTExfSFVQKQorI2VuZGlmCisJRU5EX1RBQkxFCit9OworI2VuZGlmCisKK3N0YXRpYyBjb25zdCBjaGFyICpsb29rdXBfdGFibGUoaW50IG51bSwgc3RydWN0IHN0cl90YWJsZSAqdGFibGUpCit7CisJc3RydWN0IHN0cl90YWJsZSAqcDsKKworCWZvciAocD10YWJsZTsgcC0+bmFtZTsgcCsrKQorCQlpZiAobnVtID09IHAtPm51bSkKKwkJCXJldHVybihwLT5uYW1lKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmxvb2t1cF90YWJsZV9mYWxsYmFjayhpbnQgbnVtLCBzdHJ1Y3Qgc3RyX3RhYmxlICp0YWJsZSkKK3sKKwlzdGF0aWMgY2hhciBidWZbMzJdOworCWNvbnN0IGNoYXIgKnJldCA9IGxvb2t1cF90YWJsZShudW0sIHRhYmxlKTsKKworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVkIiwgbnVtKTsKKwlidWZbc2l6ZW9mKGJ1ZiktMV0gPSAwOworCXJldHVybiBidWY7Cit9CisKK3N0YXRpYyB2b2lkIGRpZV9zaWduYWxfaGFuZGxlcihpbnQgc2lnbnVtLCBzaWdpbmZvX3QgKnNpZ2luZm8sCisJCQkgICAgICAgdm9pZCAqY29udGV4dCBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisgICAgICAgY29uc3QgY2hhciAqY3A7CisKKyAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlNpZ25hbCAoJWQpICVzICIsIHNpZ251bSwKKwkgICAgICAgbG9va3VwX3RhYmxlX2ZhbGxiYWNrKHNpZ251bSwgc2lnX3RhYmxlKSk7CisgICAgICAgaWYgKHNpZ2luZm8tPnNpX2NvZGUgPT0gU0lfVVNFUikKKwkgICAgICAgZnByaW50ZihzdGRlcnIsICIoc2VudCBmcm9tIHBpZCAldSkgIiwgc2lnaW5mby0+c2lfcGlkKTsKKyAgICAgICBjcCA9IGxvb2t1cF90YWJsZShzaWdpbmZvLT5zaV9jb2RlLCBnZW5lcmljX2NvZGVfdGFibGUpOworICAgICAgIGlmIChjcCkKKwkgICAgICAgZnByaW50ZihzdGRlcnIsICJzaV9jb2RlPSVzICIsIGNwKTsKKyAgICAgICBlbHNlIGlmIChzaWdudW0gPT0gU0lHSUxMKQorCSAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNpX2NvZGU9JXMgIiwKKwkJICAgICAgIGxvb2t1cF90YWJsZV9mYWxsYmFjayhzaWdpbmZvLT5zaV9jb2RlLAorCQkJCQkgICAgIHNpZ2lsbF9jb2RlX3RhYmxlKSk7CisgICAgICAgZWxzZSBpZiAoc2lnbnVtID09IFNJR0ZQRSkKKwkgICAgICAgZnByaW50ZihzdGRlcnIsICJzaV9jb2RlPSVzICIsCisJCSAgICAgICBsb29rdXBfdGFibGVfZmFsbGJhY2soc2lnaW5mby0+c2lfY29kZSwKKwkJCQkJICAgICBzaWdmcGVfY29kZV90YWJsZSkpOworICAgICAgIGVsc2UgaWYgKHNpZ251bSA9PSBTSUdTRUdWKQorCSAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNpX2NvZGU9JXMgIiwKKwkJICAgICAgIGxvb2t1cF90YWJsZV9mYWxsYmFjayhzaWdpbmZvLT5zaV9jb2RlLAorCQkJCQkgICAgIHNpZ3NlZ3ZfY29kZV90YWJsZSkpOworICAgICAgIGVsc2UgaWYgKHNpZ251bSA9PSBTSUdCVVMpCisJICAgICAgIGZwcmludGYoc3RkZXJyLCAic2lfY29kZT0lcyAiLAorCQkgICAgICAgbG9va3VwX3RhYmxlX2ZhbGxiYWNrKHNpZ2luZm8tPnNpX2NvZGUsCisJCQkJCSAgICAgc2lnYnVzX2NvZGVfdGFibGUpKTsKKyAgICAgICBlbHNlIGlmIChzaWdudW0gPT0gU0lHQ0hMRCkKKwkgICAgICAgZnByaW50ZihzdGRlcnIsICJzaV9jb2RlPSVzICIsCisJCSAgICAgICBsb29rdXBfdGFibGVfZmFsbGJhY2soc2lnaW5mby0+c2lfY29kZSwKKwkJCQkJICAgICBzaWdjbGRfY29kZV90YWJsZSkpOworICAgICAgIGVsc2UKKwkgICAgICAgZnByaW50ZihzdGRlcnIsICJzaSBjb2RlPSVkICIsIHNpZ2luZm8tPnNpX2NvZGUpOworICAgICAgIGlmICgoc2lnaW5mby0+c2lfY29kZSAhPSBTSV9VU0VSKSAmJgorCSAgIChzaWdudW0gPT0gU0lHSUxMIHx8IHNpZ251bSA9PSBTSUdGUEUgfHwKKwkgICAgc2lnbnVtID09IFNJR1NFR1YgfHwgc2lnbnVtID09IFNJR0JVUykpCisJICAgICAgIGZwcmludGYoc3RkZXJyLCAiZmF1bHQgYWRkcj0lcCIsIHNpZ2luZm8tPnNpX2FkZHIpOworICAgICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKKworI2lmIGRlZmluZWQoSEFWRV9CQUNLVFJBQ0UpICYmICFkZWZpbmVkKERJU0FCTEVfQkFDS1RSQUNFKQorICAgICAgIHsKKwkgICAgICAgdm9pZCAqc3RhY2tfc3ltc1szMl07CisJICAgICAgIGludCBmcmFtZXM7CisKKwkgICAgICAgZnJhbWVzID0gYmFja3RyYWNlKHN0YWNrX3N5bXMsIDMyKTsKKwkgICAgICAgYmFja3RyYWNlX3N5bWJvbHNfZmQoc3RhY2tfc3ltcywgZnJhbWVzLCAyKTsKKyAgICAgICB9CisjZW5kaWYKKyAgICAgICBleGl0KEZTQ0tfRVJST1IpOworfQorCit2b2lkIHNpZ2NhdGNoZXJfc2V0dXAodm9pZCkKK3sKKwlzdHJ1Y3Qgc2lnYWN0aW9uCXNhOworCQorCW1lbXNldCgmc2EsIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSk7CisJc2Euc2Ffc2lnYWN0aW9uID0gZGllX3NpZ25hbF9oYW5kbGVyOworCXNhLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKKworCXNpZ2FjdGlvbihTSUdGUEUsICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR0lMTCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHQlVTLCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdTRUdWLCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdBQlJULCAmc2EsIDApOworfQkKKworCisjaWZkZWYgREVCVUcKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKwordm9pZCB1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLCAidHN0X3NpZ2NhdGNoZXI6IFstYWtmbl1cbiIpOworCWV4aXQoMSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKwlzdHJ1Y3Qgc2lnYWN0aW9uCXNhOworCWNoYXIJCQkqcCA9IDA7CisJaW50IAkJCWksIGM7CisJdm9sYXRpbGUJCXg9MDsKKworCW1lbXNldCgmc2EsIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSk7CisJc2Euc2Ffc2lnYWN0aW9uID0gZGllX3NpZ25hbF9oYW5kbGVyOworCXNhLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKKwlmb3IgKGk9MTsgaSA8IDMxOyBpKyspCisJCXNpZ2FjdGlvbihpLCAmc2EsIDApOworCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiYWZrbiIpKSAhPSBFT0YpCisJCXN3aXRjaCAoYykgeworCQljYXNlICdhJzoKKwkJCWFib3J0KCk7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlwcmludGYoIiVkXG4iLCA0Mi94KTsKKwkJY2FzZSAnayc6CisJCQlraWxsKGdldHBpZCgpLCBTSUdURVJNKTsKKwkJCWJyZWFrOworCQljYXNlICduJzoKKwkJCSpwID0gNDI7CisJCWRlZmF1bHQ6CisJCQl1c2FnZSAoKTsKKwkJfQorCisJcHJpbnRmKCJTbGVlcGluZyBmb3IgMTAgc2Vjb25kcywgc2VuZCBraWxsIHNpZ25hbCB0byBwaWQgJXUuLi5cbiIsCisJICAgICAgIGdldHBpZCgpKTsKKwlmZmx1c2goc3Rkb3V0KTsKKwlzbGVlcCgxMCk7CisJZXhpdCgwKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay9zdXBlci5jIGIvZTJmc3Byb2dzL2UyZnNjay9zdXBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyZmQ5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc2NrL3N1cGVyLmMKQEAgLTAsMCArMSwxMDI2IEBACisvKgorICogZTJmc2NrLmMgLSBzdXBlcmJsb2NrIGNoZWNrcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2lmbmRlZiBFWFQyX1NLSVBfVVVJRAorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2VuZGlmCisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSAicHJvYmxlbS5oIgorCisjZGVmaW5lIE1JTl9DSEVDSyAxCisjZGVmaW5lIE1BWF9DSEVDSyAyCisjZGVmaW5lIExPRzJfQ0hFQ0sgNAorCitzdGF0aWMgdm9pZCBjaGVja19zdXBlcl92YWx1ZShlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKmRlc2NyLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZSwgaW50IGZsYWdzLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBtaW5fdmFsLCB1bnNpZ25lZCBsb25nIG1heF92YWwpCit7CisJc3RydWN0CQlwcm9ibGVtX2NvbnRleHQgcGN0eDsKKworCWlmICgoZmxhZ3MgJiBNSU5fQ0hFQ0sgJiYgdmFsdWUgPCBtaW5fdmFsKSB8fAorCSAgICAoZmxhZ3MgJiBNQVhfQ0hFQ0sgJiYgdmFsdWUgPiBtYXhfdmFsKSB8fAorCSAgICAoZmxhZ3MgJiBMT0cyX0NIRUNLICYmICh2YWx1ZSAmICh2YWx1ZSAtIDEpKSAhPSAwKSkgeworCQljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCQlwY3R4Lm51bSA9IHZhbHVlOworCQlwY3R4LnN0ciA9IGRlc2NyOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfTUlTQ19DT1JSVVBUX1NVUEVSLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7IC8qIG5ldmVyIGdldCBoZXJlISAqLworCX0KK30KKworLyoKKyAqIGhlbHBlciBmdW5jdGlvbiB0byByZWxlYXNlIGFuIGlub2RlCisgKi8KK3N0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCB7CisJZTJmc2NrX3QgCWN0eDsKKwljaGFyIAkJKmJ1ZjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0ICpwY3R4OworCWludAkJdHJ1bmNhdGluZzsKKwlpbnQJCXRydW5jYXRlX29mZnNldDsKKwllMl9ibGtjbnRfdAl0cnVuY2F0ZV9ibG9jazsKKwlpbnQJCXRydW5jYXRlZF9ibG9ja3M7CisJaW50CQlhYm9ydDsKKwllcnJjb2RlX3QJZXJyY29kZTsKK307CisKK3N0YXRpYyBpbnQgcmVsZWFzZV9pbm9kZV9ibG9jayhleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgICBibGs2NF90CSpibG9ja19uciwKKwkJCSAgICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJCSAgICAgICBibGs2NF90CXJlZl9ibGsgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIGludAlyZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwYjsKKwllMmZzY2tfdCAJCWN0eDsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CSpwY3R4OworCWJsazY0X3QJCQlibGsgPSAqYmxvY2tfbnI7CisJaW50CQkJcmV0dmFsID0gMDsKKworCXBiID0gKHN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJY3R4ID0gcGItPmN0eDsKKwlwY3R4ID0gcGItPnBjdHg7CisKKwlwY3R4LT5ibGsgPSBibGs7CisJcGN0eC0+YmxrY291bnQgPSBibG9ja2NudDsKKworCWlmIChibGsgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoKGJsayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCSAgICAoYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8wX09SUEhBTl9JTExFR0FMX0JMT0NLX05VTSwgcGN0eCk7CisJcmV0dXJuX2Fib3J0OgorCQlwYi0+YWJvcnQgPSAxOworCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJfQorCisJaWYgKCFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGJsaykpIHsKKwkJZml4X3Byb2JsZW0oY3R4LCBQUl8wX09SUEhBTl9BTFJFQURZX0NMRUFSRURfQkxPQ0ssIHBjdHgpOworCQlnb3RvIHJldHVybl9hYm9ydDsKKwl9CisKKwkvKgorCSAqIElmIHdlIGFyZSBkZWxldGluZyBhbiBvcnBoYW4sIHRoZW4gd2UgbGVhdmUgdGhlIGZpZWxkcyBhbG9uZS4KKwkgKiBJZiB3ZSBhcmUgdHJ1bmNhdGluZyBhbiBvcnBoYW4sIHRoZW4gdXBkYXRlIHRoZSBpbm9kZSBmaWVsZHMKKwkgKiBhbmQgY2xlYW4gdXAgYW55IHBhcnRpYWwgYmxvY2sgZGF0YS4KKwkgKi8KKwlpZiAocGItPnRydW5jYXRpbmcpIHsKKwkJLyoKKwkJICogV2Ugb25seSByZW1vdmUgaW5kaXJlY3QgYmxvY2tzIGlmIHRoZXkgYXJlCisJCSAqIGNvbXBsZXRlbHkgZW1wdHkuCisJCSAqLworCQlpZiAoYmxvY2tjbnQgPCAwKSB7CisJCQlpbnQJaSwgbGltaXQ7CisJCQlibGtfdAkqYnA7CisKKwkJCXBiLT5lcnJjb2RlID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgYmxrLCAxLAorCQkJCQkJCXBiLT5idWYpOworCQkJaWYgKHBiLT5lcnJjb2RlKQorCQkJCWdvdG8gcmV0dXJuX2Fib3J0OworCisJCQlsaW1pdCA9IGZzLT5ibG9ja3NpemUgPj4gMjsKKwkJCWZvciAoaSA9IDAsIGJwID0gKGJsa190ICopIHBiLT5idWY7CisJCQkgICAgIGkgPCBsaW1pdDsJIGkrKywgYnArKykKKwkJCQlpZiAoKmJwKQorCQkJCQlyZXR1cm4gMDsKKwkJfQorCQkvKgorCQkgKiBXZSBkb24ndCByZW1vdmUgZGlyZWN0IGJsb2NrcyB1bnRpbCB3ZSd2ZSByZWFjaGVkCisJCSAqIHRoZSB0cnVuY2F0aW9uIGJsb2NrLgorCQkgKi8KKwkJaWYgKGJsb2NrY250ID49IDAgJiYgYmxvY2tjbnQgPCBwYi0+dHJ1bmNhdGVfYmxvY2spCisJCQlyZXR1cm4gMDsKKwkJLyoKKwkJICogSWYgcGFydCBvZiB0aGUgbGFzdCBibG9jayBuZWVkcyB0cnVuY2F0aW5nLCB3ZSBkbworCQkgKiBpdCBoZXJlLgorCQkgKi8KKwkJaWYgKChibG9ja2NudCA9PSBwYi0+dHJ1bmNhdGVfYmxvY2spICYmIHBiLT50cnVuY2F0ZV9vZmZzZXQpIHsKKwkJCXBiLT5lcnJjb2RlID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgYmxrLCAxLAorCQkJCQkJCXBiLT5idWYpOworCQkJaWYgKHBiLT5lcnJjb2RlKQorCQkJCWdvdG8gcmV0dXJuX2Fib3J0OworCQkJbWVtc2V0KHBiLT5idWYgKyBwYi0+dHJ1bmNhdGVfb2Zmc2V0LCAwLAorCQkJICAgICAgIGZzLT5ibG9ja3NpemUgLSBwYi0+dHJ1bmNhdGVfb2Zmc2V0KTsKKwkJCXBiLT5lcnJjb2RlID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsaywgMSwKKwkJCQkJCQkgcGItPmJ1Zik7CisJCQlpZiAocGItPmVycmNvZGUpCisJCQkJZ290byByZXR1cm5fYWJvcnQ7CisJCX0KKwkJcGItPnRydW5jYXRlZF9ibG9ja3MrKzsKKwkJKmJsb2NrX25yID0gMDsKKwkJcmV0dmFsIHw9IEJMT0NLX0NIQU5HRUQ7CisJfQorCisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrLCAtMSk7CisJY3R4LT5mcmVlX2Jsb2NrcysrOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlbGVhc2VzIGFuIGlub2RlLiAgUmV0dXJucyAxIGlmIGFuIGluY29uc2lzdGVuY3kgd2FzCisgKiBmb3VuZC4gIElmIHRoZSBpbm9kZSBoYXMgYSBsaW5rIGNvdW50LCB0aGVuIGl0IGlzIGJlaW5nIHRydW5jYXRlZCBhbmQKKyAqIG5vdCBkZWxldGVkLgorICovCitzdGF0aWMgaW50IHJlbGVhc2VfaW5vZGVfYmxvY2tzKGUyZnNja190IGN0eCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBjaGFyICpibG9ja19idWYsCisJCQkJc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKK3sKKwlzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgCXBiOworCWV4dDJfZmlsc3lzCQkJZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAkJCXJldHZhbDsKKwlfX3UzMgkJCQljb3VudDsKKworCWlmICghZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGZzLCBpbm9kZSkpCisJCXJldHVybiAwOworCisJcGIuYnVmID0gYmxvY2tfYnVmICsgMyAqIGN0eC0+ZnMtPmJsb2Nrc2l6ZTsKKwlwYi5jdHggPSBjdHg7CisJcGIuYWJvcnQgPSAwOworCXBiLmVycmNvZGUgPSAwOworCXBiLnBjdHggPSBwY3R4OworCWlmIChpbm9kZS0+aV9saW5rc19jb3VudCkgeworCQlwYi50cnVuY2F0aW5nID0gMTsKKwkJcGIudHJ1bmNhdGVfYmxvY2sgPSAoZTJfYmxrY250X3QpCisJCQkoKEVYVDJfSV9TSVpFKGlub2RlKSArIGZzLT5ibG9ja3NpemUgLSAxKSAvCisJCQkgZnMtPmJsb2Nrc2l6ZSk7CisJCXBiLnRydW5jYXRlX29mZnNldCA9IGlub2RlLT5pX3NpemUgJSBmcy0+YmxvY2tzaXplOworCX0gZWxzZSB7CisJCXBiLnRydW5jYXRpbmcgPSAwOworCQlwYi50cnVuY2F0ZV9ibG9jayA9IDA7CisJCXBiLnRydW5jYXRlX29mZnNldCA9IDA7CisJfQorCXBiLnRydW5jYXRlZF9ibG9ja3MgPSAwOworCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLCBCTE9DS19GTEFHX0RFUFRIX1RSQVZFUlNFLAorCQkJCSAgICAgIGJsb2NrX2J1ZiwgcmVsZWFzZV9pbm9kZV9ibG9jaywgJnBiKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInJlbGVhc2VfaW5vZGVfYmxvY2tzIiwgcmV0dmFsLAorCQkJXygid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiKSwKKwkJCWlubyk7CisJCXJldHVybiAxOworCX0KKwlpZiAocGIuYWJvcnQpCisJCXJldHVybiAxOworCisJLyogUmVmcmVzaCB0aGUgaW5vZGUgc2luY2UgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgbWF5IGhhdmUgY2hhbmdlZCBpdCAqLworCWUyZnNja19yZWFkX2lub2RlKGN0eCwgaW5vLCBpbm9kZSwgInJlbGVhc2VfaW5vZGVfYmxvY2tzIik7CisKKwlpZiAocGIudHJ1bmNhdGVkX2Jsb2NrcykKKwkJZXh0MmZzX2libGtfc3ViX2Jsb2NrcyhmcywgaW5vZGUsIHBiLnRydW5jYXRlZF9ibG9ja3MpOworCisJaWYgKGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgaW5vZGUpKSB7CisJCXJldHZhbCA9IGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQzKGZzLAorCQkJCWV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgaW5vZGUpLAorCQkJCWJsb2NrX2J1ZiwgLTEsICZjb3VudCwgaW5vKTsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU0pIHsKKwkJCXJldHZhbCA9IDA7CisJCQljb3VudCA9IDE7CisJCX0KKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigicmVsZWFzZV9pbm9kZV9ibG9ja3MiLCByZXR2YWwsCisJCV8oIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIiksCisJCQkJaW5vKTsKKwkJCXJldHVybiAxOworCQl9CisJCWlmIChjb3VudCA9PSAwKSB7CisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLAorCQkJCQlleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIGlub2RlKSwgLTEpOworCQkJY3R4LT5mcmVlX2Jsb2NrcysrOworCQl9CisJCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsIGlub2RlLCAwKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlbGVhc2VzIGFsbCBvZiB0aGUgb3JwaGFuIGlub2Rlcy4gIEl0IHJldHVybnMgMSBpZgorICogaXQgaGl0IHNvbWUgZXJyb3IsIGFuZCAwIG9uIHN1Y2Nlc3MuCisgKi8KK3N0YXRpYyBpbnQgcmVsZWFzZV9vcnBoYW5faW5vZGVzKGUyZnNja190IGN0eCkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJZXh0Ml9pbm9fdAlpbm8sIG5leHRfaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwljaGFyICpibG9ja19idWY7CisKKwlpZiAoKGlubyA9IGZzLT5zdXBlci0+c19sYXN0X29ycGhhbikgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFdpbiBvciBsb3NlLCB3ZSB3b24ndCBiZSB1c2luZyB0aGUgaGVhZCBvZiB0aGUgb3JwaGFuIGlub2RlCisJICogbGlzdCBhZ2Fpbi4KKwkgKi8KKwlmcy0+c3VwZXItPnNfbGFzdF9vcnBoYW4gPSAwOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKworCS8qCisJICogSWYgdGhlIGZpbGVzeXN0ZW0gY29udGFpbnMgZXJyb3JzLCBkb24ndCBydW4gdGhlIG9ycGhhbgorCSAqIGxpc3QsIHNpbmNlIHRoZSBvcnBoYW4gbGlzdCBjYW4ndCBiZSB0cnVzdGVkOyBhbmQgd2UncmUKKwkgKiBnb2luZyB0byBiZSBydW5uaW5nIGEgZnVsbCBlMmZzY2sgcnVuIGFueXdheS4uLgorCSAqLworCWlmIChmcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX0VSUk9SX0ZTKQorCQlyZXR1cm4gMDsKKworCWlmICgoaW5vIDwgRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpKSB8fAorCSAgICAoaW5vID4gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCkpIHsKKwkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJcGN0eC5pbm8gPSBpbm87CisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9PUlBIQU5fSUxMRUdBTF9IRUFEX0lOT0RFLCAmcGN0eCk7CisJCXJldHVybiAxOworCX0KKworCWJsb2NrX2J1ZiA9IChjaGFyICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBmcy0+YmxvY2tzaXplICogNCwKKwkJCQkJCSAgICAiYmxvY2sgaXRlcmF0ZSBidWZmZXIiKTsKKwllMmZzY2tfcmVhZF9iaXRtYXBzKGN0eCk7CisKKwl3aGlsZSAoaW5vKSB7CisJCWUyZnNja19yZWFkX2lub2RlKGN0eCwgaW5vLCAmaW5vZGUsICJyZWxlYXNlX29ycGhhbl9pbm9kZXMiKTsKKwkJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwkJcGN0eC5pbm8gPSBpbm87CisJCXBjdHguaW5vZGUgPSAmaW5vZGU7CisJCXBjdHguc3RyID0gaW5vZGUuaV9saW5rc19jb3VudCA/IF8oIlRydW5jYXRpbmciKSA6CisJCQlfKCJDbGVhcmluZyIpOworCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9PUlBIQU5fQ0xFQVJfSU5PREUsICZwY3R4KTsKKworCQluZXh0X2lubyA9IGlub2RlLmlfZHRpbWU7CisJCWlmIChuZXh0X2lubyAmJgorCQkgICAgKChuZXh0X2lubyA8IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSkgfHwKKwkJICAgICAobmV4dF9pbm8gPiBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KSkpIHsKKwkJCXBjdHguaW5vID0gbmV4dF9pbm87CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfT1JQSEFOX0lMTEVHQUxfSU5PREUsICZwY3R4KTsKKwkJCWdvdG8gcmV0dXJuX2Fib3J0OworCQl9CisKKwkJaWYgKHJlbGVhc2VfaW5vZGVfYmxvY2tzKGN0eCwgaW5vLCAmaW5vZGUsIGJsb2NrX2J1ZiwgJnBjdHgpKQorCQkJZ290byByZXR1cm5fYWJvcnQ7CisKKwkJaWYgKCFpbm9kZS5pX2xpbmtzX2NvdW50KSB7CisJCQlleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGZzLCBpbm8sIC0xLAorCQkJCQkJICBMSU5VWF9TX0lTRElSKGlub2RlLmlfbW9kZSkpOworCQkJY3R4LT5mcmVlX2lub2RlcysrOworCQkJaW5vZGUuaV9kdGltZSA9IGN0eC0+bm93OworCQl9IGVsc2UgeworCQkJaW5vZGUuaV9kdGltZSA9IDA7CisJCX0KKwkJZTJmc2NrX3dyaXRlX2lub2RlKGN0eCwgaW5vLCAmaW5vZGUsICJkZWxldGVfZmlsZSIpOworCQlpbm8gPSBuZXh0X2lubzsKKwl9CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworCXJldHVybiAwOworcmV0dXJuX2Fib3J0OgorCWV4dDJmc19mcmVlX21lbSgmYmxvY2tfYnVmKTsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIENoZWNrIHRoZSByZXNpemUgaW5vZGUgdG8gbWFrZSBzdXJlIGl0IGlzIHNhbmUuICBXZSBjaGVjayBib3RoIGZvcgorICogdGhlIGNhc2Ugd2hlcmUgb24tbGluZSByZXNpemluZyBpcyBub3QgZW5hYmxlZCAoaW4gd2hpY2ggY2FzZSB0aGUKKyAqIHJlc2l6ZSBpbm9kZSBzaG91bGQgYmUgY2xlYXJlZCkgYXMgd2VsbCBhcyB0aGUgY2FzZSB3aGVyZSBvbi1saW5lCisgKiByZXNpemluZyBpcyBlbmFibGVkLgorICovCit2b2lkIGNoZWNrX3Jlc2l6ZV9pbm9kZShlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQJcGN0eDsKKwlpbnQJCWksIGdkdF9vZmYsIGluZF9vZmY7CisJZGdycF90CQlqOworCWJsa190CQlibGssIHBibGs7CisJYmxrX3QJCWV4cGVjdDsJLyogZm9yIHJlc2l6ZSBpbm9kZSwgd2hpY2ggaXMgMzItYml0IG9ubHkgKi8KKwlfX3UzMiAJCSpkaW5kX2J1ZiA9IDAsICppbmRfYnVmOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJLyoKKwkgKiBJZiB0aGUgcmVzaXplIGlub2RlIGZlYXR1cmUgaXNuJ3Qgc2V0LCB0aGVuCisJICogc19yZXNlcnZlZF9nZHRfYmxvY2tzIG11c3QgYmUgemVyby4KKwkgKi8KKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9yZXNpemVfaW5vZGUoZnMtPnN1cGVyKSkgeworCQlpZiAoZnMtPnN1cGVyLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MpIHsKKwkJCXBjdHgubnVtID0gZnMtPnN1cGVyLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3M7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX05PTlpFUk9fUkVTRVJWRURfR0RUX0JMT0NLUywKKwkJCQkJJnBjdHgpKSB7CisJCQkJZnMtPnN1cGVyLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MgPSAwOworCQkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJCX0KKwkJfQorCX0KKworCS8qIFJlYWQgdGhlIHJlc2l6ZSBpbm9kZSAqLworCXBjdHguaW5vID0gRVhUMl9SRVNJWkVfSU5POworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBFWFQyX1JFU0laRV9JTk8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkgeworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX3Jlc2l6ZV9pbm9kZShmcy0+c3VwZXIpKQorCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19SRVNJWkVfSU5PREU7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIElmIHRoZSByZXNpemUgaW5vZGUgZmVhdHVyZSBpc24ndCBzZXQsIGNoZWNrIHRvIG1ha2Ugc3VyZQorCSAqIHRoZSByZXNpemUgaW5vZGUgaXMgY2xlYXJlZDsgdGhlbiB3ZSdyZSBkb25lLgorCSAqLworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3Jlc2l6ZV9pbm9kZShmcy0+c3VwZXIpKSB7CisJCWZvciAoaT0wOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKSB7CisJCQlpZiAoaW5vZGUuaV9ibG9ja1tpXSkKKwkJCQlicmVhazsKKwkJfQorCQlpZiAoKGkgPCBFWFQyX05fQkxPQ0tTKSAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX0NMRUFSX1JFU0laRV9JTk9ERSwgJnBjdHgpKSB7CisJCQltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwkJCWUyZnNja193cml0ZV9pbm9kZShjdHgsIEVYVDJfUkVTSVpFX0lOTywgJmlub2RlLAorCQkJCQkgICAiY2xlYXJfcmVzaXplIik7CisJCX0KKwkJcmV0dXJuOworCX0KKworCS8qCisJICogVGhlIHJlc2l6ZSBpbm9kZSBmZWF0dXJlIGlzIGVuYWJsZWQ7IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUKKwkgKiBvbmx5IGJsb2NrIGluIHVzZSBpcyB0aGUgZG91YmxlIGluZGlyZWN0IGJsb2NrCisJICovCisJYmxrID0gaW5vZGUuaV9ibG9ja1tFWFQyX0RJTkRfQkxPQ0tdOworCWZvciAoaT0wOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKSB7CisJCWlmIChpICE9IEVYVDJfRElORF9CTE9DSyAmJiBpbm9kZS5pX2Jsb2NrW2ldKQorCQkJYnJlYWs7CisJfQorCWlmICgoaSA8IEVYVDJfTl9CTE9DS1MpIHx8ICFibGsgfHwgIWlub2RlLmlfbGlua3NfY291bnQgfHwKKwkgICAgIShpbm9kZS5pX21vZGUgJiBMSU5VWF9TX0lGUkVHKSB8fAorCSAgICAoYmxrIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgfHwKKwkgICAgIGJsayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKSB7CisJcmVzaXplX2lub2RlX2ludmFsaWQ6CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfUkVTSVpFX0lOT0RFX0lOVkFMSUQsICZwY3R4KSkgeworCQkJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJCQllMmZzY2tfd3JpdGVfaW5vZGUoY3R4LCBFWFQyX1JFU0laRV9JTk8sICZpbm9kZSwKKwkJCQkJICAgImNsZWFyX3Jlc2l6ZSIpOworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19SRVNJWkVfSU5PREU7CisJCX0KKwkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkpIHsKKwkJCWZzLT5zdXBlci0+c19zdGF0ZSAmPSB+RVhUMl9WQUxJRF9GUzsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCQlnb3RvIGNsZWFudXA7CisJfQorCWRpbmRfYnVmID0gKF9fdTMyICopIGUyZnNja19hbGxvY2F0ZV9tZW1vcnkoY3R4LCBmcy0+YmxvY2tzaXplICogMiwKKwkJCQkJCSAgICAicmVzaXplIGRpbmQgYnVmZmVyIik7CisJaW5kX2J1ZiA9IChfX3UzMiAqKSAoKGNoYXIgKikgZGluZF9idWYgKyBmcy0+YmxvY2tzaXplKTsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2luZF9ibG9jayhmcywgYmxrLCBkaW5kX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byByZXNpemVfaW5vZGVfaW52YWxpZDsKKworCWdkdF9vZmYgPSBmcy0+ZGVzY19ibG9ja3M7CisJcGJsayA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrICsgMSArIGZzLT5kZXNjX2Jsb2NrczsKKwlpZiAoZnMtPmJsb2Nrc2l6ZSA9PSAxMDI0ICYmIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrID09IDApCisJCXBibGsrKzsJLyogRGVhbCB3aXRoIDEwMjQgYmxvY2tzaXplIGJpZ2FsbG9jIGZzICovCisJZm9yIChpID0gMDsgaSA8IGZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzIC8gNDsKKwkgICAgIGkrKywgZ2R0X29mZisrLCBwYmxrKyspIHsKKwkJZ2R0X29mZiAlPSBmcy0+YmxvY2tzaXplLzQ7CisJCWlmIChkaW5kX2J1ZltnZHRfb2ZmXSAhPSBwYmxrKQorCQkJZ290byByZXNpemVfaW5vZGVfaW52YWxpZDsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5kX2Jsb2NrKGZzLCBwYmxrLCBpbmRfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gcmVzaXplX2lub2RlX2ludmFsaWQ7CisJCWluZF9vZmYgPSAwOworCQlmb3IgKGogPSAxOyBqIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGorKykgeworCQkJaWYgKCFleHQyZnNfYmdfaGFzX3N1cGVyKGZzLCBqKSkKKwkJCQljb250aW51ZTsKKwkJCWV4cGVjdCA9IHBibGsgKyBFWFQyX0dST1VQU19UT19CTE9DS1MoZnMtPnN1cGVyLCBqKTsKKwkJCWlmIChpbmRfYnVmW2luZF9vZmZdICE9IGV4cGVjdCkKKwkJCQlnb3RvIHJlc2l6ZV9pbm9kZV9pbnZhbGlkOworCQkJaW5kX29mZisrOworCQl9CisJfQorCitjbGVhbnVwOgorCWlmIChkaW5kX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZkaW5kX2J1Zik7CisKKyB9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGUgZGlyaGFzaCBzaWduZWQvdW5zaWduZWQgaGludCBpZiBuZWNlc3NhcnkuCisgKi8KK3N0YXRpYyB2b2lkIGUyZnNja19maXhfZGlyaGFzaF9oaW50KGUyZnNja190IGN0eCkKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBjdHgtPmZzLT5zdXBlcjsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0IHBjdHg7CisJY2hhcgljOworCisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSB8fAorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2Rpcl9pbmRleChzYikgfHwKKwkgICAgKHNiLT5zX2ZsYWdzICYgKEVYVDJfRkxBR1NfU0lHTkVEX0hBU0h8RVhUMl9GTEFHU19VTlNJR05FRF9IQVNIKSkpCisJCXJldHVybjsKKworCWMgPSAoY2hhcikgMjU1OworCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKwlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0RJUkhBU0hfSElOVCwgJnBjdHgpKSB7CisJCWlmICgoKGludCkgYykgPT0gLTEpIHsKKwkJCXNiLT5zX2ZsYWdzIHw9IEVYVDJfRkxBR1NfU0lHTkVEX0hBU0g7CisJCX0gZWxzZSB7CisJCQlzYi0+c19mbGFncyB8PSBFWFQyX0ZMQUdTX1VOU0lHTkVEX0hBU0g7CisJCX0KKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoY3R4LT5mcyk7CisJfQorfQorCisKK3ZvaWQgY2hlY2tfc3VwZXJfYmxvY2soZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlibGs2NF90CWZpcnN0X2Jsb2NrLCBsYXN0X2Jsb2NrOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGZzLT5zdXBlcjsKKwl1bnNpZ25lZCBpbnQJaXBnX21heDsKKwlwcm9ibGVtX3QJcHJvYmxlbTsKKwlibGs2NF90CWJsb2Nrc19wZXJfZ3JvdXAgPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwlfX3UzMglicGdfbWF4LCBjcGdfbWF4OworCWludAlpbm9kZXNfcGVyX2Jsb2NrOworCWludAlpbm9kZV9zaXplOworCWludAlhY2NlcHRfdGltZV9mdWRnZTsKKwlpbnQJYnJva2VuX3N5c3RlbV9jbG9jazsKKwlkZ3JwX3QJaTsKKwlibGs2NF90CXNob3VsZF9iZTsKKwlzdHJ1Y3QgcHJvYmxlbV9jb250ZXh0CXBjdHg7CisJYmxrNjRfdAlmcmVlX2Jsb2NrcyA9IDA7CisJaW5vX3QJZnJlZV9pbm9kZXMgPSAwOworCWludCAgICAgY3N1bV9mbGFnLCBjbGVhcl90ZXN0X2ZzX2ZsYWc7CisKKwlpbm9kZXNfcGVyX2Jsb2NrID0gRVhUMl9JTk9ERVNfUEVSX0JMT0NLKGZzLT5zdXBlcik7CisJaXBnX21heCA9IGlub2Rlc19wZXJfYmxvY2sgKiAoYmxvY2tzX3Blcl9ncm91cCAtIDQpOworCWlmIChpcGdfbWF4ID4gRVhUMl9NQVhfSU5PREVTX1BFUl9HUk9VUChzYikpCisJCWlwZ19tYXggPSBFWFQyX01BWF9JTk9ERVNfUEVSX0dST1VQKHNiKTsKKwljcGdfbWF4ID0gOCAqIEVYVDJfQkxPQ0tfU0laRShzYik7CisJaWYgKGNwZ19tYXggPiBFWFQyX01BWF9DTFVTVEVSU19QRVJfR1JPVVAoc2IpKQorCQljcGdfbWF4ID0gRVhUMl9NQVhfQ0xVU1RFUlNfUEVSX0dST1VQKHNiKTsKKwlicGdfbWF4ID0gOCAqIEVYVDJfQkxPQ0tfU0laRShzYikgKiBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisJaWYgKGJwZ19tYXggPiBFWFQyX01BWF9CTE9DS1NfUEVSX0dST1VQKHNiKSkKKwkJYnBnX21heCA9IEVYVDJfTUFYX0JMT0NLU19QRVJfR1JPVVAoc2IpOworCisJY3R4LT5pbnZhbGlkX2lub2RlX2JpdG1hcF9mbGFnID0gKGludCAqKSBlMmZzY2tfYWxsb2NhdGVfbWVtb3J5KGN0eCwKKwkJIHNpemVvZihpbnQpICogZnMtPmdyb3VwX2Rlc2NfY291bnQsICJpbnZhbGlkX2lub2RlX2JpdG1hcCIpOworCWN0eC0+aW52YWxpZF9ibG9ja19iaXRtYXBfZmxhZyA9IChpbnQgKikgZTJmc2NrX2FsbG9jYXRlX21lbW9yeShjdHgsCisJCSBzaXplb2YoaW50KSAqIGZzLT5ncm91cF9kZXNjX2NvdW50LCAiaW52YWxpZF9ibG9ja19iaXRtYXAiKTsKKwljdHgtPmludmFsaWRfaW5vZGVfdGFibGVfZmxhZyA9IChpbnQgKikgZTJmc2NrX2FsbG9jYXRlX21lbW9yeShjdHgsCisJCXNpemVvZihpbnQpICogZnMtPmdyb3VwX2Rlc2NfY291bnQsICJpbnZhbGlkX2lub2RlX3RhYmxlIik7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCisJLyoKKwkgKiBWZXJpZnkgdGhlIHN1cGVyIGJsb2NrIGNvbnN0YW50cy4uLgorCSAqLworCWNoZWNrX3N1cGVyX3ZhbHVlKGN0eCwgImlub2Rlc19jb3VudCIsIHNiLT5zX2lub2Rlc19jb3VudCwKKwkJCSAgTUlOX0NIRUNLLCAxLCAwKTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJibG9ja3NfY291bnQiLCBleHQyZnNfYmxvY2tzX2NvdW50KHNiKSwKKwkJCSAgTUlOX0NIRUNLLCAxLCAwKTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJmaXJzdF9kYXRhX2Jsb2NrIiwgc2ItPnNfZmlyc3RfZGF0YV9ibG9jaywKKwkJCSAgTUFYX0NIRUNLLCAwLCBleHQyZnNfYmxvY2tzX2NvdW50KHNiKSk7CisJY2hlY2tfc3VwZXJfdmFsdWUoY3R4LCAibG9nX2Jsb2NrX3NpemUiLCBzYi0+c19sb2dfYmxvY2tfc2l6ZSwKKwkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLCAwLAorCQkJICBFWFQyX01BWF9CTE9DS19MT0dfU0laRSAtIEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFKTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJsb2dfY2x1c3Rlcl9zaXplIiwKKwkJCSAgc2ItPnNfbG9nX2NsdXN0ZXJfc2l6ZSwKKwkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLCBzYi0+c19sb2dfYmxvY2tfc2l6ZSwKKwkJCSAgKEVYVDJfTUFYX0NMVVNURVJfTE9HX1NJWkUgLQorCQkJICAgRVhUMl9NSU5fQ0xVU1RFUl9MT0dfU0laRSkpOworCWNoZWNrX3N1cGVyX3ZhbHVlKGN0eCwgImNsdXN0ZXJzX3Blcl9ncm91cCIsIHNiLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCwKKwkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLCA4LCBjcGdfbWF4KTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJibG9ja3NfcGVyX2dyb3VwIiwgc2ItPnNfYmxvY2tzX3Blcl9ncm91cCwKKwkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLCA4LCBicGdfbWF4KTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJpbm9kZXNfcGVyX2dyb3VwIiwgc2ItPnNfaW5vZGVzX3Blcl9ncm91cCwKKwkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLCBpbm9kZXNfcGVyX2Jsb2NrLCBpcGdfbWF4KTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJyX2Jsb2Nrc19jb3VudCIsIGV4dDJmc19yX2Jsb2Nrc19jb3VudChzYiksCisJCQkgIE1BWF9DSEVDSywgMCwgZXh0MmZzX2Jsb2Nrc19jb3VudChzYikgLyAyKTsKKwljaGVja19zdXBlcl92YWx1ZShjdHgsICJyZXNlcnZlZF9nZHRfYmxvY2tzIiwKKwkJCSAgc2ItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcywgTUFYX0NIRUNLLCAwLAorCQkJICBmcy0+YmxvY2tzaXplIC8gc2l6ZW9mKF9fdTMyKSk7CisJY2hlY2tfc3VwZXJfdmFsdWUoY3R4LCAiZGVzY19zaXplIiwKKwkJCSAgc2ItPnNfZGVzY19zaXplLCBNQVhfQ0hFQ0sgfCBMT0cyX0NIRUNLLCAwLAorCQkJICBFWFQyX01BWF9ERVNDX1NJWkUpOworCWlmIChzYi0+c19yZXZfbGV2ZWwgPiBFWFQyX0dPT0RfT0xEX1JFVikKKwkJY2hlY2tfc3VwZXJfdmFsdWUoY3R4LCAiZmlyc3RfaW5vIiwgc2ItPnNfZmlyc3RfaW5vLAorCQkJCSAgTUlOX0NIRUNLIHwgTUFYX0NIRUNLLAorCQkJCSAgRVhUMl9HT09EX09MRF9GSVJTVF9JTk8sIHNiLT5zX2lub2Rlc19jb3VudCk7CisJaW5vZGVfc2l6ZSA9IEVYVDJfSU5PREVfU0laRShzYik7CisJY2hlY2tfc3VwZXJfdmFsdWUoY3R4LCAiaW5vZGVfc2l6ZSIsCisJCQkgIGlub2RlX3NpemUsIE1JTl9DSEVDSyB8IE1BWF9DSEVDSyB8IExPRzJfQ0hFQ0ssCisJCQkgIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSwgZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKHNiLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgIT0gKHNiLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCAqCisJCQkJICAgICAgIEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSkpIHsKKwkJcGN0eC5udW0gPSBzYi0+c19jbHVzdGVyc19wZXJfZ3JvdXAgKiBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisJCXBjdHguc3RyID0gImJsb2NrX3NpemUiOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfTUlTQ19DT1JSVVBUX1NVUEVSLCAmcGN0eCk7CisJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfQUJPUlQ7IC8qIG5ldmVyIGdldCBoZXJlISAqLworCQlyZXR1cm47CisJfQorCisJaWYgKChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfR09UX0RFVlNJWkUpICYmCisJICAgIChjdHgtPm51bV9ibG9ja3MgPCBleHQyZnNfYmxvY2tzX2NvdW50KHNiKSkpIHsKKwkJcGN0eC5ibGsgPSBleHQyZnNfYmxvY2tzX2NvdW50KHNiKTsKKwkJcGN0eC5ibGsyID0gY3R4LT5udW1fYmxvY2tzOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0ZTX1NJWkVfV1JPTkcsICZwY3R4KSkgeworCQkJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCXNob3VsZF9iZSA9IChzYi0+c19sb2dfYmxvY2tfc2l6ZSA9PSAwICYmCisJCSAgICAgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpID09IDEpID8gMSA6IDA7CisJaWYgKHNiLT5zX2ZpcnN0X2RhdGFfYmxvY2sgIT0gc2hvdWxkX2JlKSB7CisJCXBjdHguYmxrID0gc2ItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwkJcGN0eC5ibGsyID0gc2hvdWxkX2JlOworCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfRklSU1RfREFUQV9CTE9DSywgJnBjdHgpOworCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQlyZXR1cm47CisJfQorCisJc2hvdWxkX2JlID0gKGJsazY0X3Qpc2ItPnNfaW5vZGVzX3Blcl9ncm91cCAqIGZzLT5ncm91cF9kZXNjX2NvdW50OworCWlmIChzaG91bGRfYmUgPiBVSU5UX01BWCkKKwkJc2hvdWxkX2JlID0gVUlOVF9NQVg7CisJaWYgKHNiLT5zX2lub2Rlc19jb3VudCAhPSBzaG91bGRfYmUpIHsKKwkJcGN0eC5pbm8gPSBzYi0+c19pbm9kZXNfY291bnQ7CisJCXBjdHguaW5vMiA9IHNob3VsZF9iZTsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9JTk9ERV9DT1VOVF9XUk9ORywgJnBjdHgpKSB7CisJCQlzYi0+c19pbm9kZXNfY291bnQgPSBzaG91bGRfYmU7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCX0KKwl9CisJaWYgKEVYVDJfSU5PREVfU0laRShzYikgPiBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpIHsKKwkJdW5zaWduZWQgbWluID0KKwkJCXNpemVvZigoKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIDApLT5pX2V4dHJhX2lzaXplKSArCisJCQlzaXplb2YoKChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSAwKS0+aV9jaGVja3N1bV9oaSk7CisJCXVuc2lnbmVkIG1heCA9IEVYVDJfSU5PREVfU0laRShzYikgLSBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkU7CisJCXBjdHgubnVtID0gc2ItPnNfbWluX2V4dHJhX2lzaXplOworCQlpZiAoc2ItPnNfbWluX2V4dHJhX2lzaXplICYmCisJCSAgICAoc2ItPnNfbWluX2V4dHJhX2lzaXplIDwgbWluIHx8CisJCSAgICAgc2ItPnNfbWluX2V4dHJhX2lzaXplID4gbWF4IHx8CisJCSAgICAgc2ItPnNfbWluX2V4dHJhX2lzaXplICYgMykgJiYKKwkJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9CQURfTUlOX0VYVFJBX0lTSVpFLCAmcGN0eCkpIHsKKwkJCXNiLT5zX21pbl9leHRyYV9pc2l6ZSA9CisJCQkJKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSkgLQorCQkJCSBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQl9CisJCXBjdHgubnVtID0gc2ItPnNfd2FudF9leHRyYV9pc2l6ZTsKKwkJaWYgKHNiLT5zX3dhbnRfZXh0cmFfaXNpemUgJiYKKwkJICAgIChzYi0+c193YW50X2V4dHJhX2lzaXplIDwgbWluIHx8CisJCSAgICAgc2ItPnNfd2FudF9leHRyYV9pc2l6ZSA+IG1heCB8fAorCQkgICAgIHNiLT5zX3dhbnRfZXh0cmFfaXNpemUgJiAzKSAmJgorCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX0JBRF9XQU5UX0VYVFJBX0lTSVpFLCAmcGN0eCkpIHsKKwkJCXNiLT5zX3dhbnRfZXh0cmFfaXNpemUgPQorCQkJCShzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpIC0KKwkJCQkgRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKTsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCX0KKwkJICAgIAorCS8qIEFyZSBtZXRhZGF0YV9jc3VtIGFuZCB1bmluaXRfYmcgYm90aCBzZXQ/ICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2dkdF9jc3VtKGZzLT5zdXBlcikgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX01FVEFfQU5EX0dEVF9DU1VNX1NFVCwgJnBjdHgpKSB7CisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2dkdF9jc3VtKGZzLT5zdXBlcik7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspCisJCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgaSk7CisJfQorCisJLyogV2UgY2FuJ3QgaGF2ZSBebWV0YWRhdGFfY3N1bSxtZXRhZGF0YV9jc3VtX3NlZWQgKi8KKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2NzdW1fc2VlZChmcy0+c3VwZXIpICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9DU1VNX1NFRURfV0lUSE9VVF9NRVRBX0NTVU0sICZwY3R4KSkgeworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9jc3VtX3NlZWQoZnMtPnN1cGVyKTsKKwkJZnMtPnN1cGVyLT5zX2NoZWNrc3VtX3NlZWQgPSAwOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCisJLyogSXMgNjRiaXQgc2V0IGFuZCBleHRlbnRzIHVuc2V0PyAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzBfNjRCSVRfV0lUSE9VVF9FWFRFTlRTLCAmcGN0eCkpIHsKKwkJZXh0MmZzX3NldF9mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0KKworCS8qIERpZCB1c2VyIGFzayB1cyB0byBjb252ZXJ0IGZpbGVzIHRvIGV4dGVudHM/ICovCisJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfQ09OVkVSVF9CTUFQKSB7CisJCWV4dDJmc19zZXRfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcik7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoZnMtPnN1cGVyKSAmJgorCSAgICAoZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmcgPiBmcy0+ZGVzY19ibG9ja3MpKSB7CisJCXBjdHguZ3JvdXAgPSBmcy0+ZGVzY19ibG9ja3M7CisJCXBjdHgubnVtID0gZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmc7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfRklSU1RfTUVUQV9CR19UT09fQklHLCAmcGN0eCkpIHsKKwkJCWV4dDJmc19jbGVhcl9mZWF0dXJlX21ldGFfYmcoZnMtPnN1cGVyKTsKKwkJCWZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnID0gMDsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCX0KKworCS8qCisJICogVmVyaWZ5IHRoZSBncm91cCBkZXNjcmlwdG9ycy4uLi4KKwkgKi8KKwlmaXJzdF9ibG9jayA9IHNiLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJbGFzdF9ibG9jayA9IGV4dDJmc19ibG9ja3NfY291bnQoc2IpLTE7CisKKwljc3VtX2ZsYWcgPSBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcyk7CisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJcGN0eC5ncm91cCA9IGk7CisKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpKSB7CisJCQlmaXJzdF9ibG9jayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGkpOworCQkJbGFzdF9ibG9jayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgaSk7CisJCX0KKworCQlpZiAoKGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSA8IGZpcnN0X2Jsb2NrKSB8fAorCQkgICAgKGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSA+IGxhc3RfYmxvY2spKSB7CisJCQlwY3R4LmJsayA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfQkJfTk9UX0dST1VQLCAmcGN0eCkpCisJCQkJZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Nfc2V0KGZzLCBpLCAwKTsKKwkJfQorCQlpZiAoZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpID09IDApIHsKKwkJCWN0eC0+aW52YWxpZF9ibG9ja19iaXRtYXBfZmxhZ1tpXSsrOworCQkJY3R4LT5pbnZhbGlkX2JpdG1hcHMrKzsKKwkJfQorCQlpZiAoKGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSA8IGZpcnN0X2Jsb2NrKSB8fAorCQkgICAgKGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSA+IGxhc3RfYmxvY2spKSB7CisJCQlwY3R4LmJsayA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfSUJfTk9UX0dST1VQLCAmcGN0eCkpCisJCQkJZXh0MmZzX2lub2RlX2JpdG1hcF9sb2Nfc2V0KGZzLCBpLCAwKTsKKwkJfQorCQlpZiAoZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpID09IDApIHsKKwkJCWN0eC0+aW52YWxpZF9pbm9kZV9iaXRtYXBfZmxhZ1tpXSsrOworCQkJY3R4LT5pbnZhbGlkX2JpdG1hcHMrKzsKKwkJfQorCQlpZiAoKGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpIDwgZmlyc3RfYmxvY2spIHx8CisJCSAgICAoKGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpICsKKwkJICAgICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgLSAxKSA+IGxhc3RfYmxvY2spKSB7CisJCQlwY3R4LmJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9JVEFCTEVfTk9UX0dST1VQLCAmcGN0eCkpCisJCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvY19zZXQoZnMsIGksIDApOworCQl9CisJCWlmIChleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSA9PSAwKSB7CisJCQljdHgtPmludmFsaWRfaW5vZGVfdGFibGVfZmxhZ1tpXSsrOworCQkJY3R4LT5pbnZhbGlkX2JpdG1hcHMrKzsKKwkJfQorCQlmcmVlX2Jsb2NrcyArPSBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGkpOworCQlmcmVlX2lub2RlcyArPSBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGkpOworCisJCWlmICgoZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBpKSA+IHNiLT5zX2Jsb2Nrc19wZXJfZ3JvdXApIHx8CisJCSAgICAoZXh0MmZzX2JnX2ZyZWVfaW5vZGVzX2NvdW50KGZzLCBpKSA+IHNiLT5zX2lub2Rlc19wZXJfZ3JvdXApIHx8CisJCSAgICAoZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudChmcywgaSkgPiBzYi0+c19pbm9kZXNfcGVyX2dyb3VwKSkKKwkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCisJCXNob3VsZF9iZSA9IDA7CisJCWlmICghZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV92ZXJpZnkoZnMsIGkpKSB7CisJCQlwY3R4LmNzdW0xID0gZXh0MmZzX2JnX2NoZWNrc3VtKGZzLCBpKTsKKwkJCXBjdHguY3N1bTIgPSBleHQyZnNfZ3JvdXBfZGVzY19jc3VtKGZzLCBpKTsKKwkJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfR0RUX0NTVU0sICZwY3R4KSkgeworCQkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpOworCQkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCQkJCWV4dDJmc19iZ19pdGFibGVfdW51c2VkX3NldChmcywgaSwgMCk7CisJCQkJc2hvdWxkX2JlID0gMTsKKwkJCX0KKwkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQl9CisKKwkJaWYgKCFjc3VtX2ZsYWcgJiYKKwkJICAgIChleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpIHx8CisJCSAgICAgZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGksIEVYVDJfQkdfSU5PREVfVU5JTklUKSB8fAorCQkgICAgIGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKSAhPSAwKSkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9HRFRfVU5JTklULCAmcGN0eCkpIHsKKwkJCQlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGksIEVYVDJfQkdfQkxPQ0tfVU5JTklUKTsKKwkJCQlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGksIEVYVDJfQkdfSU5PREVfVU5JTklUKTsKKwkJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXQoZnMsIGksIDApOworCQkJCXNob3VsZF9iZSA9IDE7CisJCQl9CisJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwkJfQorCisJCWlmIChpID09IGZzLT5ncm91cF9kZXNjX2NvdW50IC0gMSAmJgorCQkgICAgZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGksIEVYVDJfQkdfQkxPQ0tfVU5JTklUKSkgeworCQkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9CQl9VTklOSVRfTEFTVCwgJnBjdHgpKSB7CisJCQkJZXh0MmZzX2JnX2ZsYWdzX2NsZWFyKGZzLCBpLCBFWFQyX0JHX0JMT0NLX1VOSU5JVCk7CisJCQkJc2hvdWxkX2JlID0gMTsKKwkJCX0KKwkJCWV4dDJmc191bm1hcmtfdmFsaWQoZnMpOworCQl9CisKKwkJaWYgKGNzdW1fZmxhZyAmJgorCQkgICAgKGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKSA+IGV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudChmcywgaSkgfHwKKwkJICAgICBleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgaSkgPiBzYi0+c19pbm9kZXNfcGVyX2dyb3VwKSkgeworCQkJcGN0eC5ibGsgPSBleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgaSk7CisJCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0dEVF9JVEFCTEVfVU5VU0VELCAmcGN0eCkpIHsKKwkJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXQoZnMsIGksIDApOworCQkJCXNob3VsZF9iZSA9IDE7CisJCQl9CisJCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKwkJfQorCisJCWlmIChzaG91bGRfYmUpCisJCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgaSk7CisJCS8qIElmIHRoZSB1c2VyIGFib3J0cyBlMmZzY2sgYnkgdHlwaW5nIF5DLCBzdG9wIHJpZ2h0IGF3YXkgKi8KKwkJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TSUdOQUxfTUFTSykKKwkJCXJldHVybjsKKwl9CisKKwljdHgtPmZyZWVfYmxvY2tzID0gRVhUMkZTX0MyQihmcywgZnJlZV9ibG9ja3MpOworCWN0eC0+ZnJlZV9pbm9kZXMgPSBmcmVlX2lub2RlczsKKworCWlmICgoZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KHNiKSA+IGV4dDJmc19ibG9ja3NfY291bnQoc2IpKSB8fAorCSAgICAoc2ItPnNfZnJlZV9pbm9kZXNfY291bnQgPiBzYi0+c19pbm9kZXNfY291bnQpKQorCQlleHQyZnNfdW5tYXJrX3ZhbGlkKGZzKTsKKworCisJLyoKKwkgKiBJZiB3ZSBoYXZlIGludmFsaWQgYml0bWFwcywgc2V0IHRoZSBlcnJvciBzdGF0ZSBvZiB0aGUKKwkgKiBmaWxlc3lzdGVtLgorCSAqLworCWlmIChjdHgtPmludmFsaWRfYml0bWFwcyAmJiAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUkVBRE9OTFkpKSB7CisJCXNiLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCisJY2xlYXJfcHJvYmxlbV9jb250ZXh0KCZwY3R4KTsKKworI2lmbmRlZiBFWFQyX1NLSVBfVVVJRAorCS8qCisJICogSWYgdGhlIFVVSUQgZmllbGQgaXNuJ3QgYXNzaWduZWQsIGFzc2lnbiBpdC4KKwkgKiBTa2lwIGlmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCwKKwkgKiBpZiB0aGUgaWQgY2hhbmdlcyB1bmRlciB0aGUga2VybmVsIHJlbW91bnRpbmcgcncgbWF5IGZhaWwuCisJICovCisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgJiYgdXVpZF9pc19udWxsKHNiLT5zX3V1aWQpICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShjdHgtPmZzLT5zdXBlcikgJiYKKwkgICAgKCFjc3VtX2ZsYWcgfHwgIShjdHgtPm1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSkpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9BRERfVVVJRCwgJnBjdHgpKSB7CisJCQl1dWlkX2dlbmVyYXRlKHNiLT5zX3V1aWQpOworCQkJZXh0MmZzX2luaXRfY3N1bV9zZWVkKGZzKTsKKwkJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfRElSVFk7CisJCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwkJfQorCX0KKyNlbmRpZgorCisJLyoKKwkgKiBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIGRpc2FibGUgdGhlIHRlc3RfZnMgZmxhZworCSAqLworCXByb2ZpbGVfZ2V0X2Jvb2xlYW4oY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsCisJCQkgICAgImNsZWFyX3Rlc3RfZnNfZmxhZyIsIDAsIDEsCisJCQkgICAgJmNsZWFyX3Rlc3RfZnNfZmxhZyk7CisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgJiYKKwkgICAgY2xlYXJfdGVzdF9mc19mbGFnICYmCisJICAgIChmcy0+c3VwZXItPnNfZmxhZ3MgJiBFWFQyX0ZMQUdTX1RFU1RfRklMRVNZUykgJiYKKwkgICAgKGZzX3Byb2NfY2hlY2soImV4dDQiKSB8fCBjaGVja19mb3JfbW9kdWxlcygiZXh0NCIpKSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl8wX0NMRUFSX1RFU1RGU19GTEFHLCAmcGN0eCkpIHsKKwkJCWZzLT5zdXBlci0+c19mbGFncyAmPSB+RVhUMl9GTEFHU19URVNUX0ZJTEVTWVM7CisJCQlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0RJUlRZOworCQkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFk7CisJCX0KKwl9CisJCQkKKwkvKgorCSAqIEZvciB0aGUgSHVyZCwgY2hlY2sgdG8gc2VlIGlmIHRoZSBmaWxldHlwZSBvcHRpb24gaXMgc2V0LAorCSAqIHNpbmNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4KKwkgKi8KKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSAmJgorCSAgICBmcy0+c3VwZXItPnNfY3JlYXRvcl9vcyA9PSBFWFQyX09TX0hVUkQgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2ZpbGV0eXBlKGZzLT5zdXBlcikpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9IVVJEX0NMRUFSX0ZJTEVUWVBFLCAmcGN0eCkpIHsKKwkJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2ZpbGV0eXBlKGZzLT5zdXBlcik7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwkJfQorCX0KKworCS8qCisJICogSWYgd2UgaGF2ZSBhbnkgb2YgdGhlIGNvbXBhdGliaWxpdHkgZmxhZ3Mgc2V0LCB3ZSBuZWVkIHRvIGhhdmUgYQorCSAqIHJldmlzaW9uIDEgZmlsZXN5c3RlbS4gIE1vc3Qga2VybmVscyB3aWxsIG5vdCBjaGVjayB0aGUgZmxhZ3Mgb24KKwkgKiBhIHJldiAwIGZpbGVzeXN0ZW0gYW5kIHdlIG1heSBoYXZlIGNvcnJ1cHRpb24gaXNzdWVzIGJlY2F1c2Ugb2YKKwkgKiB0aGUgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW0uCisJICovCisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgJiYKKwkgICAgZnMtPnN1cGVyLT5zX3Jldl9sZXZlbCA9PSBFWFQyX0dPT0RfT0xEX1JFViAmJgorCSAgICAoZnMtPnN1cGVyLT5zX2ZlYXR1cmVfY29tcGF0IHx8CisJICAgICBmcy0+c3VwZXItPnNfZmVhdHVyZV9yb19jb21wYXQgfHwKKwkgICAgIGZzLT5zdXBlci0+c19mZWF0dXJlX2luY29tcGF0KSAmJgorCSAgICBmaXhfcHJvYmxlbShjdHgsIFBSXzBfRlNfUkVWX0xFVkVMLCAmcGN0eCkpIHsKKwkJZXh0MmZzX3VwZGF0ZV9keW5hbWljX3Jldihmcyk7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFk7CisJfQorCisJLyoKKwkgKiBDbGVhbiB1cCBhbnkgb3JwaGFuIGlub2RlcywgaWYgcHJlc2VudC4KKwkgKi8KKwlpZiAoIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSAmJiByZWxlYXNlX29ycGhhbl9pbm9kZXMoY3R4KSkgeworCQlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwl9CisKKwkvKgorCSAqIFVuZm9ydHVuYXRlbHksIGR1ZSB0byBXaW5kb3dzJyB1bmZvcnR1bmF0ZSBkZXNpZ24gZGVjaXNpb24KKwkgKiB0byBjb25maWd1cmUgdGhlIGhhcmR3YXJlIGNsb2NrIHRvIHRpY2sgbG9jYWx0aW1lLCBpbnN0ZWFkCisJICogb2YgdGhlIG1vcmUgcHJvcGVyIGFuZCBsZXNzIGVycm9yLXByb25lIFVUQyB0aW1lLCBtYW55CisJICogdXNlcnMgZW5kIHVwIGluIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIHN5c3RlbSBjbG9jayBpcworCSAqIGluY29ycmVjdGx5IHNldCBhdCB0aGUgdGltZSB3aGVuIGUyZnNjayBpcyBydW4uCisJICoKKwkgKiBIaXN0b3JpY2FsbHkgdGhpcyB3YXMgdXN1YWxseSBkdWUgdG8gc29tZSBkaXN0cmlidXRpb25zCisJICogaGF2aW5nIGJ1Z2d5IGluaXQgc2NyaXB0cyBhbmQvb3IgaW5zdGFsbGVycyB0aGF0IGRpZG4ndAorCSAqIGNvcnJlY3RseSBkZXRlY3QgdGhpcyBjYXNlIGFuZCB0YWtlIGFwcHJvcHJpYXRlCisJICogY291bnRlcm1lYXN1cmVzLiAgSG93ZXZlciwgaXQncyBzdGlsbCBwb3NzaWJsZSwgZGVzcGl0ZSB0aGUKKwkgKiBiZXN0IGVmZm9ydHMgb2YgaW5pdCBzY3JpcHQgYW5kIGluc3RhbGxlciBhdXRob3JzIHRvIG5vdCBiZQorCSAqIGFibGUgdG8gZGV0ZWN0IHRoaXMgbWlzY29uZmlndXJhdGlvbiwgdXN1YWxseSBkdWUgdG8gYQorCSAqIGJ1Z2d5IG9yIG1pc2NvbmZpZ3VyZWQgdmlydHVhbGl6YXRpb24gbWFuYWdlciBvciB0aGUKKwkgKiBpbnN0YWxsZXIgbm90IGhhdmluZyBhY2Nlc3MgdG8gYSBuZXR3b3JrIHRpbWUgc2VydmVyIGR1cmluZworCSAqIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gIFNvIGJ5IGRlZmF1bHQsIHdlIGFsbG93IHRoZQorCSAqIHN1cGVyYmxvY2sgdGltZXMgdG8gYmUgZnVkZ2VkIGJ5IHVwIHRvIDI0IGhvdXJzLiAgVGhpcyBjYW4KKwkgKiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIG9wdGlvbnMuYWNjZXB0X3RpbWVfZnVkZ2UgdG8gdGhlCisJICogYm9vbGVhbiB2YWx1ZSBvZiBmYWxzZSBpbiBlMmZzY2suY29uZi4gIFdlIGFsc28gc3VwcG9ydAorCSAqIG9wdGlvbnMuYnVnZ3lfaW5pdF9zY3JpcHRzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKwkgKi8KKwlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAiYWNjZXB0X3RpbWVfZnVkZ2UiLAorCQkJICAgIDAsIDEsICZhY2NlcHRfdGltZV9mdWRnZSk7CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwgImJ1Z2d5X2luaXRfc2NyaXB0cyIsCisJCQkgICAgMCwgYWNjZXB0X3RpbWVfZnVkZ2UsICZhY2NlcHRfdGltZV9mdWRnZSk7CisJY3R4LT50aW1lX2Z1ZGdlID0gYWNjZXB0X3RpbWVfZnVkZ2UgPyA4NjQwMCA6IDA7CisKKwlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAiYnJva2VuX3N5c3RlbV9jbG9jayIsCisJCQkgICAgMCwgMCwgJmJyb2tlbl9zeXN0ZW1fY2xvY2spOworCisJLyoKKwkgKiBDaGVjayB0byBzZWUgaWYgdGhlIHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIG9yIGxhc3QKKwkgKiB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuCisJICovCisJaWYgKCFicm9rZW5fc3lzdGVtX2Nsb2NrICYmCisJICAgICEoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1RJTUVfSU5TQU5FKSAmJgorCSAgICBmcy0+c3VwZXItPnNfbXRpbWUgPiAoX191MzIpIGN0eC0+bm93KSB7CisJCXBjdHgubnVtID0gZnMtPnN1cGVyLT5zX210aW1lOworCQlwcm9ibGVtID0gUFJfMF9GVVRVUkVfU0JfTEFTVF9NT1VOVDsKKwkJaWYgKGZzLT5zdXBlci0+c19tdGltZSA8PSAoX191MzIpIGN0eC0+bm93ICsgY3R4LT50aW1lX2Z1ZGdlKQorCQkJcHJvYmxlbSA9IFBSXzBfRlVUVVJFX1NCX0xBU1RfTU9VTlRfRlVER0VEOworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBwcm9ibGVtLCAmcGN0eCkpIHsKKwkJCWZzLT5zdXBlci0+c19tdGltZSA9IGN0eC0+bm93OworCQkJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19ESVJUWTsKKwkJfQorCX0KKwlpZiAoIWJyb2tlbl9zeXN0ZW1fY2xvY2sgJiYKKwkgICAgIShjdHgtPmZsYWdzICYgRTJGX0ZMQUdfVElNRV9JTlNBTkUpICYmCisJICAgIGZzLT5zdXBlci0+c193dGltZSA+IChfX3UzMikgY3R4LT5ub3cpIHsKKwkJcGN0eC5udW0gPSBmcy0+c3VwZXItPnNfd3RpbWU7CisJCXByb2JsZW0gPSBQUl8wX0ZVVFVSRV9TQl9MQVNUX1dSSVRFOworCQlpZiAoZnMtPnN1cGVyLT5zX3d0aW1lIDw9IChfX3UzMikgY3R4LT5ub3cgKyBjdHgtPnRpbWVfZnVkZ2UpCisJCQlwcm9ibGVtID0gUFJfMF9GVVRVUkVfU0JfTEFTVF9XUklURV9GVURHRUQ7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIHByb2JsZW0sICZwY3R4KSkgeworCQkJZnMtPnN1cGVyLT5zX3d0aW1lID0gY3R4LT5ub3c7CisJCQlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0RJUlRZOworCQl9CisJfQorCisJLyoKKwkgKiBNb3ZlIHRoZSBleHQzIGpvdXJuYWwgZmlsZSwgaWYgbmVjZXNzYXJ5LgorCSAqLworCWUyZnNja19tb3ZlX2V4dDNfam91cm5hbChjdHgpOworCisJLyoKKwkgKiBGaXggam91cm5hbCBoaW50LCBpZiBuZWNlc3NhcnkKKwkgKi8KKwllMmZzY2tfZml4X2V4dDNfam91cm5hbF9oaW50KGN0eCk7CisKKwkvKgorCSAqIEFkZCBkaXJoYXNoIGhpbnQgaWYgbmVjZXNzYXJ5CisJICovCisJZTJmc2NrX2ZpeF9kaXJoYXNoX2hpbnQoY3R4KTsKKworCS8qCisJICogSGlkZSBxdW90YSBpbm9kZXMgaWYgbmVjZXNzYXJ5LgorCSAqLworCWUyZnNja19oaWRlX3F1b3RhKGN0eCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgd2Ugc2hvdWxkIGJhY2t1cCB0aGUgbWFzdGVyIHNiIHRvIHRoZSBiYWNrdXAgc3VwZXIKKyAqIGJsb2Nrcy4gIFJldHVybnMgbm9uLXplcm8gaWYgdGhlIHNiIHNob3VsZCBiZSBiYWNrZWQgdXAuCisgKi8KKworLyoKKyAqIEEgZmV3IGZsYWdzIGFyZSBzZXQgb24gdGhlIGZseSBieSB0aGUga2VybmVsLCBidXQgb25seSBpbiB0aGUKKyAqIHByaW1hcnkgc3VwZXJibG9jay4gIFRoaXMgaXMgYWN0dWFsbHkgYSBiYWQgdGhpbmcsIGFuZCB3ZSBzaG91bGQKKyAqIHRyeSB0byBkaXNjb3VyYWdlIGl0IGluIHRoZSBmdXR1cmUuICBJbiBwYXJ0aWN1bGFyLCBmb3IgdGhlIG5ld2VyCisgKiBleHQ0IGZpbGVzLCBlc3BlY2lhbGx5IEVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LIGFuZAorICogRVhUM19GRUFUVVJFX0lOQ09NUEFUX0VYVEVOVFMuICBTbyBzb21lIG9mIHRoZXNlIG1heSBnbyBhd2F5IGluIHRoZQorICogZnV0dXJlLiAgRVhUM19GRUFUVVJFX0lOQ09NUEFUX1JFQ09WRVIgbWF5IGFsc28gZ2V0IHNldCB3aGVuCisgKiBjb3B5aW5nIHRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgZHVyaW5nIG9ubGluZSByZXNpemUuCisgKgorICogVGhlIGtlcm5lbCB3aWxsIHNldCBFWFQyX0ZFQVRVUkVfQ09NUEFUX0VYVF9BVFRSLCBidXQKKyAqIHVuZm9ydHVuYXRlbHksIHdlIHNob3VsZG4ndCBpZ25vcmUgaXQgc2luY2UgaWYgaXQncyBub3Qgc2V0IGluIHRoZQorICogYmFja3VwLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiB0aGUgZmlsZXN5c3RlbSB3aWxsIGJlIHN0cmlwcGVkCisgKiBhd2F5LgorICovCisjZGVmaW5lIEZFQVRVUkVfUk9fQ09NUEFUX0lHTk9SRQkoRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFfCBcCisJCQkJCSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0RJUl9OTElOSykKKyNkZWZpbmUgRkVBVFVSRV9JTkNPTVBBVF9JR05PUkUJCShFWFQzX0ZFQVRVUkVfSU5DT01QQVRfRVhURU5UU3wgXAorCQkJCQkgRVhUM19GRUFUVVJFX0lOQ09NUEFUX1JFQ09WRVIpCisKK2ludCBjaGVja19iYWNrdXBfc3VwZXJfYmxvY2soZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzCWZzID0gY3R4LT5mczsKKwllcnJjb2RlX3QJcmV0dmFsOworCWRncnBfdAkJZzsKKwlibGs2NF90CQlzYjsKKwlpbnQJCXJldCA9IDA7CisJY2hhcgkJYnVmW1NVUEVSQkxPQ0tfU0laRV07CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sJKmJhY2t1cF9zYjsKKworCS8qCisJICogSWYgd2UgYXJlIGFscmVhZHkgd3JpdGluZyBvdXQgdGhlIGJhY2t1cCBibG9ja3MsIHRoZW4gd2UKKwkgKiBkb24ndCBuZWVkIHRvIHRlc3QuICBBbHNvLCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBpbnZhbGlkLCBvcgorCSAqIHRoZSBjaGVjayB3YXMgYWJvcnRlZCBvciBjYW5jZWxsZWQsIHdlIGFsc28gZG9uJ3Qgd2FudCB0bworCSAqIGRvIHRoZSBiYWNrdXAuICBJZiB0aGUgZmlsZXN5c3RlbSB3YXMgb3BlbmVkIHJlYWQtb25seSB0aGVuCisJICogd2UgY2FuJ3QgZG8gdGhlIGJhY2t1cC4KKwkgKi8KKwlpZiAoKChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFkpID09IDApIHx8CisJICAgICFleHQyZnNfdGVzdF92YWxpZChmcykgfHwKKwkgICAgKGZzLT5zdXBlci0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpIHx8CisJICAgIChjdHgtPmZsYWdzICYgKEUyRl9GTEFHX0FCT1JUIHwgRTJGX0ZMQUdfQ0FOQ0VMKSkgfHwKKwkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUkVBRE9OTFkpKQorCQlyZXR1cm4gMDsKKworCWZvciAoZyA9IDE7IGcgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgZysrKSB7CisJCWlmICghZXh0MmZzX2JnX2hhc19zdXBlcihmcywgZykpCisJCQljb250aW51ZTsKKworCQlzYiA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGcpOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGsoZnMtPmlvLCBzYiwgLVNVUEVSQkxPQ0tfU0laRSwKKwkJCQkJICAgICBidWYpOworCQlpZiAocmV0dmFsKQorCQkJY29udGludWU7CisJCWJhY2t1cF9zYiA9IChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKSBidWY7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWV4dDJmc19zd2FwX3N1cGVyKGJhY2t1cF9zYik7CisjZW5kaWYKKwkJaWYgKChiYWNrdXBfc2ItPnNfbWFnaWMgIT0gRVhUMl9TVVBFUl9NQUdJQykgfHwKKwkJICAgIChiYWNrdXBfc2ItPnNfcmV2X2xldmVsID4gRVhUMl9MSUJfQ1VSUkVOVF9SRVYpIHx8CisJCSAgICAoKGJhY2t1cF9zYi0+c19sb2dfYmxvY2tfc2l6ZSArIEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFKSA+CisJCSAgICAgRVhUMl9NQVhfQkxPQ0tfTE9HX1NJWkUpIHx8CisJCSAgICAoRVhUMl9JTk9ERV9TSVpFKGJhY2t1cF9zYikgPCBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpKQorCQkJY29udGludWU7CisKKyNkZWZpbmUgU1VQRVJfSU5DT01QQVRfRElGRkVSRU5UKHgpCVwKKwkoKGZzLT5zdXBlci0+eCAmIH5GRUFUVVJFX0lOQ09NUEFUX0lHTk9SRSkgIT0JXAorCSAoYmFja3VwX3NiLT54ICYgfkZFQVRVUkVfSU5DT01QQVRfSUdOT1JFKSkKKyNkZWZpbmUgU1VQRVJfUk9fQ09NUEFUX0RJRkZFUkVOVCh4KQlcCisJKChmcy0+c3VwZXItPnggJiB+RkVBVFVSRV9ST19DT01QQVRfSUdOT1JFKSAhPQlcCisJIChiYWNrdXBfc2ItPnggJiB+RkVBVFVSRV9ST19DT01QQVRfSUdOT1JFKSkKKyNkZWZpbmUgU1VQRVJfRElGRkVSRU5UKHgpCQlcCisJKGZzLT5zdXBlci0+eCAhPSBiYWNrdXBfc2ItPngpCisKKwkJaWYgKFNVUEVSX0RJRkZFUkVOVChzX2ZlYXR1cmVfY29tcGF0KSB8fAorCQkgICAgU1VQRVJfSU5DT01QQVRfRElGRkVSRU5UKHNfZmVhdHVyZV9pbmNvbXBhdCkgfHwKKwkJICAgIFNVUEVSX1JPX0NPTVBBVF9ESUZGRVJFTlQoc19mZWF0dXJlX3JvX2NvbXBhdCkgfHwKKwkJICAgIFNVUEVSX0RJRkZFUkVOVChzX2Jsb2Nrc19jb3VudCkgfHwKKwkJICAgIFNVUEVSX0RJRkZFUkVOVChzX2Jsb2Nrc19jb3VudF9oaSkgfHwKKwkJICAgIFNVUEVSX0RJRkZFUkVOVChzX2lub2Rlc19jb3VudCkgfHwKKwkJICAgIG1lbWNtcChmcy0+c3VwZXItPnNfdXVpZCwgYmFja3VwX3NiLT5zX3V1aWQsCisJCQkgICBzaXplb2YoZnMtPnN1cGVyLT5zX3V1aWQpKSkKKwkJCXJldCA9IDE7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2UyZnNjay91bml4LmMgYi9lMmZzcHJvZ3MvZTJmc2NrL3VuaXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDBmYTE2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2UyZnNjay91bml4LmMKQEAgLTAsMCArMSwxOTUzIEBACisvKgorICogdW5peC5jIC0gVGhlIHVuaXgtc3BlY2lmaWMgY29kZSBmb3IgZTJmc2NrCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIC8qIGZvciBpbmNsdXNpb24gb2Ygc2FfaGFuZGxlciBpbiBTb2xhcmlzICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9TSUdOQUxfSAorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX01BTExPQ19ICisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxsaWJnZW4uaD4KKworI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJldC9jb21fZXJyLmgiCisjaW5jbHVkZSAiZTJwL2UycC5oIgorI2luY2x1ZGUgInN1cHBvcnQvcGxhdXNpYmxlLmgiCisjaW5jbHVkZSAiZTJmc2NrLmgiCisjaW5jbHVkZSAicHJvYmxlbS5oIgorI2luY2x1ZGUgImpmc191c2VyLmgiCisjaW5jbHVkZSAiLi4vdmVyc2lvbi5oIgorCisvKiBDb21tYW5kIGxpbmUgb3B0aW9ucyAqLworc3RhdGljIGludCBjZmxhZzsJCS8qIGNoZWNrIGRpc2sgKi8KK3N0YXRpYyBpbnQgc2hvd192ZXJzaW9uX29ubHk7CitzdGF0aWMgaW50IHZlcmJvc2U7CisKK3N0YXRpYyBpbnQgcmVwbGFjZV9iYWRfYmxvY2tzOworc3RhdGljIGludCBrZWVwX2JhZF9ibG9ja3M7CitzdGF0aWMgY2hhciAqYmFkX2Jsb2Nrc19maWxlOworCitlMmZzY2tfdCBlMmZzY2tfZ2xvYmFsX2N0eDsJLyogVHJ5IHlvdXIgdmVyeSBiZXN0IG5vdCB0byB1c2UgdGhpcyEgKi8KKworI2lmZGVmIENPTkZJR19KQkRfREVCVUcJCS8qIEVuYWJsZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLWpiZC1kZWJ1ZyAqLworaW50IGpvdXJuYWxfZW5hYmxlX2RlYnVnID0gLTE7CisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2UoZTJmc2NrX3QgY3R4KQoreworCWZwcmludGYoc3RkZXJyLAorCQlfKCJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisJCSJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKwkJIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iKSwKKwkJY3R4LT5wcm9ncmFtX25hbWUpOworCisJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIlxuRW1lcmdlbmN5IGhlbHA6XG4iCisJCSIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorCQkiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorCQkiIC15ICAgICAgICAgICAgICAgICAgIEFzc3VtZSBcInllc1wiIHRvIGFsbCBxdWVzdGlvbnNcbiIKKwkJIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrIGxpc3RcbiIKKwkJIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZSBjaGVja2luZyBldmVuIGlmIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGNsZWFuXG4iKSk7CisJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIiIKKwkJIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisJCSIgLWIgc3VwZXJibG9jayAgICAgICAgVXNlIGFsdGVybmF0aXZlIHN1cGVyYmxvY2tcbiIKKwkJIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisJCSIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisJCSIgLWwgYmFkX2Jsb2Nrc19maWxlICAgQWRkIHRvIGJhZGJsb2NrcyBsaXN0XG4iCisJCSIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisJCSIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorCQkpKTsKKworCWV4aXQoRlNDS19VU0FHRSk7Cit9CisKK3N0YXRpYyB2b2lkIHNob3dfc3RhdHMoZTJmc2NrX3QJY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwlleHQyX2lub190IGlub2RlcywgaW5vZGVzX3VzZWQ7CisJYmxrNjRfdCBibG9ja3MsIGJsb2Nrc191c2VkOworCXVuc2lnbmVkIGludCBkaXJfbGlua3M7CisJdW5zaWduZWQgaW50IG51bV9maWxlcywgbnVtX2xpbmtzOworCV9fdTMyICptYXNrLCBtOworCWludCBmcmFnX3BlcmNlbnRfZmlsZSwgZnJhZ19wZXJjZW50X2RpciwgZnJhZ19wZXJjZW50X3RvdGFsOworCWludCBpLCBqLCBwcmludGVkID0gMDsKKworCWRpcl9saW5rcyA9IDIgKiBjdHgtPmZzX2RpcmVjdG9yeV9jb3VudCAtIDE7CisJbnVtX2ZpbGVzID0gY3R4LT5mc190b3RhbF9jb3VudCAtIGRpcl9saW5rczsKKwludW1fbGlua3MgPSBjdHgtPmZzX2xpbmtzX2NvdW50IC0gZGlyX2xpbmtzOworCWlub2RlcyA9IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQ7CisJaW5vZGVzX3VzZWQgPSAoZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAtCisJCSAgICAgICBmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQpOworCWJsb2NrcyA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwlibG9ja3NfdXNlZCA9IChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkgICAgICAgZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpOworCisJZnJhZ19wZXJjZW50X2ZpbGUgPSAoMTAwMDAgKiBjdHgtPmZzX2ZyYWdtZW50ZWQpIC8gaW5vZGVzX3VzZWQ7CisJZnJhZ19wZXJjZW50X2ZpbGUgPSAoZnJhZ19wZXJjZW50X2ZpbGUgKyA1KSAvIDEwOworCisJZnJhZ19wZXJjZW50X2RpciA9ICgxMDAwMCAqIGN0eC0+ZnNfZnJhZ21lbnRlZF9kaXIpIC8gaW5vZGVzX3VzZWQ7CisJZnJhZ19wZXJjZW50X2RpciA9IChmcmFnX3BlcmNlbnRfZGlyICsgNSkgLyAxMDsKKworCWZyYWdfcGVyY2VudF90b3RhbCA9ICgoMTAwMDAgKiAoY3R4LT5mc19mcmFnbWVudGVkICsKKwkJCQkJY3R4LT5mc19mcmFnbWVudGVkX2RpcikpCisJCQkgICAgICAvIGlub2Rlc191c2VkKTsKKwlmcmFnX3BlcmNlbnRfdG90YWwgPSAoZnJhZ19wZXJjZW50X3RvdGFsICsgNSkgLyAxMDsKKworCWlmICghdmVyYm9zZSkgeworCQlsb2dfb3V0KGN0eCwgXygiJXM6ICV1LyV1IGZpbGVzICglMGQuJWQlJSBub24tY29udGlndW91cyksICIKKwkJCSAgICAgICAiJWxsdS8lbGx1IGJsb2Nrc1xuIiksCisJCQljdHgtPmRldmljZV9uYW1lLCBpbm9kZXNfdXNlZCwgaW5vZGVzLAorCQkJZnJhZ19wZXJjZW50X3RvdGFsIC8gMTAsIGZyYWdfcGVyY2VudF90b3RhbCAlIDEwLAorCQkJYmxvY2tzX3VzZWQsIGJsb2Nrcyk7CisJCXJldHVybjsKKwl9CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwgInJlcG9ydF9mZWF0dXJlcyIsIDAsIDAsCisJCQkgICAgJmkpOworCWlmICh2ZXJib3NlICYmIGkpIHsKKwkJbG9nX291dChjdHgsICJcbkZpbGVzeXN0ZW0gZmVhdHVyZXM6Iik7CisJCW1hc2sgPSAmY3R4LT5mcy0+c3VwZXItPnNfZmVhdHVyZV9jb21wYXQ7CisJCWZvciAoaSA9IDA7IGkgPCAzOyBpKyssIG1hc2srKykgeworCQkJZm9yIChqID0gMCwgbSA9IDE7IGogPCAzMjsgaisrLCBtIDw8PSAxKSB7CisJCQkJaWYgKCptYXNrICYgbSkgeworCQkJCQlsb2dfb3V0KGN0eCwgIiAlcyIsCisJCQkJCQllMnBfZmVhdHVyZTJzdHJpbmcoaSwgbSkpOworCQkJCQlwcmludGVkKys7CisJCQkJfQorCQkJfQorCQl9CisJCWlmIChwcmludGVkID09IDApCisJCQlsb2dfb3V0KGN0eCwgIiAobm9uZSkiKTsKKwkJbG9nX291dChjdHgsICJcbiIpOworCX0KKworCWxvZ19vdXQoY3R4LCBQXygiXG4lMTJ1IGlub2RlIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIsCisJCQkiXG4lMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iLAorCQkJaW5vZGVzX3VzZWQpLCBpbm9kZXNfdXNlZCwKKwkJMTAwLjAgKiBpbm9kZXNfdXNlZCAvIGlub2RlcywgaW5vZGVzKTsKKwlsb2dfb3V0KGN0eCwgUF8oIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iLAorCQkJIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIiwKKwkJCWN0eC0+ZnNfZnJhZ21lbnRlZCksCisJCWN0eC0+ZnNfZnJhZ21lbnRlZCwgZnJhZ19wZXJjZW50X2ZpbGUgLyAxMCwKKwkJZnJhZ19wZXJjZW50X2ZpbGUgJSAxMCk7CisJbG9nX291dChjdHgsIFBfKCIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iLAorCQkJIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIiwKKwkJCWN0eC0+ZnNfZnJhZ21lbnRlZF9kaXIpLAorCQljdHgtPmZzX2ZyYWdtZW50ZWRfZGlyLCBmcmFnX3BlcmNlbnRfZGlyIC8gMTAsCisJCWZyYWdfcGVyY2VudF9kaXIgJSAxMCk7CisJbG9nX291dChjdHgsIF8oIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAiCisJCSAgICAgICAiJXUvJXUvJXVcbiIpLAorCQljdHgtPmZzX2luZF9jb3VudCwgY3R4LT5mc19kaW5kX2NvdW50LCBjdHgtPmZzX3RpbmRfY291bnQpOworCisJZm9yIChqPU1BWF9FWFRFTlRfREVQVEhfQ09VTlQtMTsgaiA+PTA7IGotLSkKKwkJaWYgKGN0eC0+ZXh0ZW50X2RlcHRoX2NvdW50W2pdKQorCQkJYnJlYWs7CisJaWYgKCsraikgeworCQlsb2dfb3V0KGN0eCwgIiVzIiwgXygiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIpKTsKKwkJZm9yIChpPTA7IGkgPCBqOyBpKyspIHsKKwkJCWlmIChpKQorCQkJCWZwdXRjKCcvJywgc3Rkb3V0KTsKKwkJCWxvZ19vdXQoY3R4LCAiJXUiLCBjdHgtPmV4dGVudF9kZXB0aF9jb3VudFtpXSk7CisJCX0KKwkJbG9nX291dChjdHgsICJcbiIpOworCX0KKworCWxvZ19vdXQoY3R4LCBQXygiJTEybGx1IGJsb2NrIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIiwKKwkJCSIlMTJsbHUgYmxvY2tzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIiwKKwkJICAgYmxvY2tzX3VzZWQpLAorCQlibG9ja3NfdXNlZCwgMTAwLjAgKiBibG9ja3NfdXNlZCAvIGJsb2NrcywgYmxvY2tzKTsKKwlsb2dfb3V0KGN0eCwgUF8oIiUxMnUgYmFkIGJsb2NrXG4iLCAiJTEydSBiYWQgYmxvY2tzXG4iLAorCQkJY3R4LT5mc19iYWRibG9ja3NfY291bnQpLCBjdHgtPmZzX2JhZGJsb2Nrc19jb3VudCk7CisJbG9nX291dChjdHgsIFBfKCIlMTJ1IGxhcmdlIGZpbGVcbiIsICIlMTJ1IGxhcmdlIGZpbGVzXG4iLAorCQkJY3R4LT5sYXJnZV9maWxlcyksIGN0eC0+bGFyZ2VfZmlsZXMpOworCWxvZ19vdXQoY3R4LCBQXygiXG4lMTJ1IHJlZ3VsYXIgZmlsZVxuIiwgIlxuJTEydSByZWd1bGFyIGZpbGVzXG4iLAorCQkJY3R4LT5mc19yZWd1bGFyX2NvdW50KSwgY3R4LT5mc19yZWd1bGFyX2NvdW50KTsKKwlsb2dfb3V0KGN0eCwgUF8oIiUxMnUgZGlyZWN0b3J5XG4iLCAiJTEydSBkaXJlY3Rvcmllc1xuIiwKKwkJCWN0eC0+ZnNfZGlyZWN0b3J5X2NvdW50KSwgY3R4LT5mc19kaXJlY3RvcnlfY291bnQpOworCWxvZ19vdXQoY3R4LCBQXygiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIsCisJCQkiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iLCBjdHgtPmZzX2NoYXJkZXZfY291bnQpLAorCQljdHgtPmZzX2NoYXJkZXZfY291bnQpOworCWxvZ19vdXQoY3R4LCBQXygiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIiwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iLAorCQkJY3R4LT5mc19ibG9ja2Rldl9jb3VudCksIGN0eC0+ZnNfYmxvY2tkZXZfY291bnQpOworCWxvZ19vdXQoY3R4LCBQXygiJTEydSBmaWZvXG4iLCAiJTEydSBmaWZvc1xuIiwgY3R4LT5mc19maWZvX2NvdW50KSwKKwkJY3R4LT5mc19maWZvX2NvdW50KTsKKwlsb2dfb3V0KGN0eCwgUF8oIiUxMnUgbGlua1xuIiwgIiUxMnUgbGlua3NcbiIsIG51bV9saW5rcyksCisJCWN0eC0+ZnNfbGlua3NfY291bnQgLSBkaXJfbGlua3MpOworCWxvZ19vdXQoY3R4LCBQXygiJTEydSBzeW1ib2xpYyBsaW5rIiwgIiUxMnUgc3ltYm9saWMgbGlua3MiLAorCQkJY3R4LT5mc19zeW1saW5rc19jb3VudCksIGN0eC0+ZnNfc3ltbGlua3NfY291bnQpOworCWxvZ19vdXQoY3R4LCBQXygiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iLAorCQkJIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIsCisJCQljdHgtPmZzX2Zhc3Rfc3ltbGlua3NfY291bnQpLAorCQljdHgtPmZzX2Zhc3Rfc3ltbGlua3NfY291bnQpOworCWxvZ19vdXQoY3R4LCBQXygiJTEydSBzb2NrZXRcbiIsICIlMTJ1IHNvY2tldHNcbiIsCisJCQljdHgtPmZzX3NvY2tldHNfY291bnQpLAorCQljdHgtPmZzX3NvY2tldHNfY291bnQpOworCWxvZ19vdXQoY3R4LCAiLS0tLS0tLS0tLS0tXG4iKTsKKwlsb2dfb3V0KGN0eCwgUF8oIiUxMnUgZmlsZVxuIiwgIiUxMnUgZmlsZXNcbiIsIG51bV9maWxlcyksCisJCW51bV9maWxlcyk7Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrX21vdW50KGUyZnNja190IGN0eCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJY29udDsKKworCXJldHZhbCA9IGV4dDJmc19jaGVja19pZl9tb3VudGVkKGN0eC0+ZmlsZXN5c3RlbV9uYW1lLAorCQkJCQkgJmN0eC0+bW91bnRfZmxhZ3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX2NoZWNrX2lmX21vdW50IiwgcmV0dmFsLAorCQkJXygid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIpLAorCQkJY3R4LT5maWxlc3lzdGVtX25hbWUpOworCQlyZXR1cm47CisJfQorCisJLyoKKwkgKiBJZiB0aGUgZmlsZXN5c3RlbSBpc24ndCBtb3VudGVkLCBvciBpdCdzIHRoZSByb290CisJICogZmlsZXN5c3RlbSBhbmQgaXQncyBtb3VudGVkIHJlYWQtb25seSwgYW5kIHdlJ3JlIG5vdCBkb2luZworCSAqIGEgcmVhZC93cml0ZSBjaGVjaywgdGhlbiBldmVyeXRoaW5nJ3MgZmluZS4KKwkgKi8KKwlpZiAoKCEoY3R4LT5tb3VudF9mbGFncyAmIChFWFQyX01GX01PVU5URUQgfCBFWFQyX01GX0JVU1kpKSkgfHwKKwkgICAgKChjdHgtPm1vdW50X2ZsYWdzICYgRVhUMl9NRl9JU1JPT1QpICYmCisJICAgICAoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpICYmCisJICAgICAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfV1JJVEVDSEVDSykpKQorCQlyZXR1cm47CisKKwlpZiAoKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSB8fAorCSAgICAgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0ZPUkNFKSAmJgorCSAgICAgIChjdHgtPm1vdW50X2ZsYWdzICYgRVhUMl9NRl9SRUFET05MWSkpKSAmJgorCSAgICAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfV1JJVEVDSEVDSykpIHsKKwkJaWYgKGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpCisJCQlsb2dfb3V0KGN0eCwgXygiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iKSwKKwkJCQkJY3R4LT5maWxlc3lzdGVtX25hbWUpOworCQllbHNlCisJCQlsb2dfb3V0KGN0eCwgXygiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIpLAorCQkJCQljdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkKKwkJbG9nX291dChjdHgsIF8oIiVzIGlzIG1vdW50ZWQuXG4iKSwgY3R4LT5maWxlc3lzdGVtX25hbWUpOworCWVsc2UKKwkJbG9nX291dChjdHgsIF8oIiVzIGlzIGluIHVzZS5cbiIpLCBjdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJaWYgKCFjdHgtPmludGVyYWN0aXZlIHx8IGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX0JVU1kpCisJCWZhdGFsX2Vycm9yKGN0eCwgXygiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cblxuIikpOworCXB1dHMoIlwwMDdcMDA3XDAwN1wwMDciKTsKKwlsb2dfb3V0KGN0eCwgIiVzIiwgXygiXG5cbldBUk5JTkchISEgICIKKwkJICAgICAgICJUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgICIKKwkJICAgICAgICJJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKwkJICAgICAgICJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG5cbiIpKTsKKwlwdXRzKCJcMDA3XDAwN1wwMDciKTsKKwljb250ID0gYXNrX3luKGN0eCwgXygiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIiksIDApOworCWlmICghY29udCkgeworCQlwcmludGYoIiVzIiwgXygiY2hlY2sgYWJvcnRlZC5cbiIpKTsKKwkJZXhpdCAoMCk7CisJfQorCXJldHVybjsKK30KKworc3RhdGljIGludCBpc19vbl9iYXR0KHZvaWQpCit7CisJRklMRQkqZjsKKwlESVIJKmQ7CisJY2hhcgl0bXBbODBdLCB0bXAyWzgwXSwgZm5hbWVbODBdOworCXVuc2lnbmVkIGludAlhY2ZsYWc7CisJc3RydWN0IGRpcmVudCoJZGU7CisKKwlmID0gZm9wZW4oIi9zeXMvY2xhc3MvcG93ZXJfc3VwcGx5L0FDL29ubGluZSIsICJyIik7CisJaWYgKGYpIHsKKwkJaWYgKGZzY2FuZihmLCAiJXVcbiIsICZhY2ZsYWcpID09IDEpIHsKKwkJCWZjbG9zZShmKTsKKwkJCXJldHVybiAoIWFjZmxhZyk7CisJCX0KKwkJZmNsb3NlKGYpOworCX0KKwlmID0gZm9wZW4oIi9wcm9jL2FwbSIsICJyIik7CisJaWYgKGYpIHsKKwkJaWYgKGZzY2FuZihmLCAiJXMgJXMgJXMgJXgiLCB0bXAsIHRtcCwgdG1wLCAmYWNmbGFnKSAhPSA0KQorCQkJYWNmbGFnID0gMTsKKwkJZmNsb3NlKGYpOworCQlyZXR1cm4gKGFjZmxhZyAhPSAxKTsKKwl9CisJZCA9IG9wZW5kaXIoIi9wcm9jL2FjcGkvYWNfYWRhcHRlciIpOworCWlmIChkKSB7CisJCXdoaWxlICgoZGU9cmVhZGRpcihkKSkgIT0gTlVMTCkgeworCQkJaWYgKCFzdHJuY21wKCIuIiwgZGUtPmRfbmFtZSwgMSkpCisJCQkJY29udGludWU7CisJCQlzbnByaW50ZihmbmFtZSwgODAsICIvcHJvYy9hY3BpL2FjX2FkYXB0ZXIvJXMvc3RhdGUiLAorCQkJCSBkZS0+ZF9uYW1lKTsKKwkJCWYgPSBmb3BlbihmbmFtZSwgInIiKTsKKwkJCWlmICghZikKKwkJCQljb250aW51ZTsKKwkJCWlmIChmc2NhbmYoZiwgIiVzICVzIiwgdG1wMiwgdG1wKSAhPSAyKQorCQkJCXRtcFswXSA9IDA7CisJCQlmY2xvc2UoZik7CisJCQlpZiAoc3RybmNtcCh0bXAsICJvZmYtbGluZSIsIDgpID09IDApIHsKKwkJCQljbG9zZWRpcihkKTsKKwkJCQlyZXR1cm4gMTsKKwkJCX0KKwkJfQorCQljbG9zZWRpcihkKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgY2hlY2tzIHRvIHNlZSBpZiBhIGZpbGVzeXN0ZW0gY2FuIGJlIHNraXBwZWQ7IGlmIHNvLAorICogaXQgd2lsbCBleGl0IHdpdGggRTJGU0NLX09LLiAgVW5kZXIgc29tZSBjb25kaXRpb25zIGl0IHdpbGwgcHJpbnQgYQorICogbWVzc2FnZSBleHBsYWluaW5nIHdoeSBhIGNoZWNrIGlzIGJlaW5nIGZvcmNlZC4KKyAqLworc3RhdGljIHZvaWQgY2hlY2tfaWZfc2tpcChlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwljb25zdCBjaGFyICpyZWFzb24gPSBOVUxMOworCXVuc2lnbmVkIGludCByZWFzb25fYXJnID0gMDsKKwlsb25nIG5leHRfY2hlY2s7CisJaW50IGJhdHQgPSBpc19vbl9iYXR0KCk7CisJaW50IGRlZmVyX2NoZWNrX29uX2JhdHRlcnk7CisJaW50IGJyb2tlbl9zeXN0ZW1fY2xvY2s7CisJdGltZV90IGxhc3RjaGVjazsKKworCWlmIChjdHgtPmZsYWdzICYgRTJGX0ZMQUdfUFJPQkxFTVNfRklYRUQpCisJCXJldHVybjsKKworCXByb2ZpbGVfZ2V0X2Jvb2xlYW4oY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsICJicm9rZW5fc3lzdGVtX2Nsb2NrIiwKKwkJCSAgICAwLCAwLCAmYnJva2VuX3N5c3RlbV9jbG9jayk7CisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19USU1FX0lOU0FORSkKKwkJYnJva2VuX3N5c3RlbV9jbG9jayA9IDE7CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKKwkJCSAgICAiZGVmZXJfY2hlY2tfb25fYmF0dGVyeSIsIDAsIDEsCisJCQkgICAgJmRlZmVyX2NoZWNrX29uX2JhdHRlcnkpOworCWlmICghZGVmZXJfY2hlY2tfb25fYmF0dGVyeSkKKwkJYmF0dCA9IDA7CisKKwlpZiAoKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRk9SQ0UpIHx8IGJhZF9ibG9ja3NfZmlsZSB8fCBjZmxhZykKKwkJcmV0dXJuOworCisJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfSk9VUk5BTF9PTkxZKQorCQlnb3RvIHNraXA7CisKKwlsYXN0Y2hlY2sgPSBmcy0+c3VwZXItPnNfbGFzdGNoZWNrOworCWlmIChsYXN0Y2hlY2sgPiBjdHgtPm5vdykKKwkJbGFzdGNoZWNrIC09IGN0eC0+dGltZV9mdWRnZTsKKwlpZiAoKGZzLT5zdXBlci0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpIHx8CisJICAgICFleHQyZnNfdGVzdF92YWxpZChmcykpCisJCXJlYXNvbiA9IF8oIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIik7CisJZWxzZSBpZiAoKGZzLT5zdXBlci0+c19zdGF0ZSAmIEVYVDJfVkFMSURfRlMpID09IDApCisJCXJlYXNvbiA9IF8oIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIik7CisJZWxzZSBpZiAoY2hlY2tfYmFja3VwX3N1cGVyX2Jsb2NrKGN0eCkpCisJCXJlYXNvbiA9IF8oIiBwcmltYXJ5IHN1cGVyYmxvY2sgZmVhdHVyZXMgZGlmZmVyZW50IGZyb20gYmFja3VwIik7CisJZWxzZSBpZiAoKGZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50ID4gMCkgJiYKKwkJIChmcy0+c3VwZXItPnNfbW50X2NvdW50ID49CisJCSAgKHVuc2lnbmVkKSBmcy0+c3VwZXItPnNfbWF4X21udF9jb3VudCkpIHsKKwkJcmVhc29uID0gXygiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIik7CisJCXJlYXNvbl9hcmcgPSBmcy0+c3VwZXItPnNfbW50X2NvdW50OworCQlpZiAoYmF0dCAmJiAoZnMtPnN1cGVyLT5zX21udF9jb3VudCA8CisJCQkgICAgICh1bnNpZ25lZCkgZnMtPnN1cGVyLT5zX21heF9tbnRfY291bnQqMikpCisJCQlyZWFzb24gPSAwOworCX0gZWxzZSBpZiAoIWJyb2tlbl9zeXN0ZW1fY2xvY2sgJiYgZnMtPnN1cGVyLT5zX2NoZWNraW50ZXJ2YWwgJiYKKwkJICAgKGN0eC0+bm93IDwgbGFzdGNoZWNrKSkgeworCQlyZWFzb24gPSBfKCIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIpOworCQlpZiAoYmF0dCkKKwkJCXJlYXNvbiA9IDA7CisJfSBlbHNlIGlmICghYnJva2VuX3N5c3RlbV9jbG9jayAmJiBmcy0+c3VwZXItPnNfY2hlY2tpbnRlcnZhbCAmJgorCQkgICAoKGN0eC0+bm93IC0gbGFzdGNoZWNrKSA+PQorCQkgICAgKCh0aW1lX3QpIGZzLT5zdXBlci0+c19jaGVja2ludGVydmFsKSkpIHsKKwkJcmVhc29uID0gXygiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIik7CisJCXJlYXNvbl9hcmcgPSAoY3R4LT5ub3cgLSBmcy0+c3VwZXItPnNfbGFzdGNoZWNrKS8oMzYwMCoyNCk7CisJCWlmIChiYXR0ICYmICgoY3R4LT5ub3cgLSBmcy0+c3VwZXItPnNfbGFzdGNoZWNrKSA8CisJCQkgICAgIGZzLT5zdXBlci0+c19jaGVja2ludGVydmFsKjIpKQorCQkJcmVhc29uID0gMDsKKwl9CisJaWYgKHJlYXNvbikgeworCQlsb2dfb3V0KGN0eCwgIiVzIiwgY3R4LT5kZXZpY2VfbmFtZSk7CisJCWxvZ19vdXQoY3R4LCByZWFzb24sIHJlYXNvbl9hcmcpOworCQlsb2dfb3V0KGN0eCwgIiVzIiwgXygiLCBjaGVjayBmb3JjZWQuXG4iKSk7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgZ2xvYmFsIGNvdW50cyBmcm9tIHRoZSBibG9jayBncm91cCBjb3VudHMuICBUaGlzCisJICogaXMgbmVlZGVkIHNpbmNlIG1vZGVybiBrZXJuZWxzIGRvbid0IHVwZGF0ZSB0aGUgZ2xvYmFsCisJICogY291bnRzIHNvIGFzIHRvIGF2b2lkIGxvY2tpbmcgdGhlIGVudGlyZSBmaWxlIHN5c3RlbS4gIFNvCisJICogaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IHVubW91bnRlZCBjbGVhbmx5LCB0aGUgZ2xvYmFsCisJICogY291bnRzIG1heSBub3QgYmUgYWNjdXJhdGUuICBVcGRhdGUgdGhlbSBoZXJlIGlmIHdlIGNhbiwKKwkgKiBmb3IgdGhlIGJlbmVmaXQgb2YgdXNlcnMgd2hvIG1pZ2h0IGV4YW1pbmUgdGhlIGZpbGUgc3lzdGVtCisJICogdXNpbmcgZHVtcGUyZnMuICAoVGhpcyBpcyBmb3IgY29zbWV0aWMgcmVhc29ucyBvbmx5LikKKwkgKi8KKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCXBjdHguaW5vID0gZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50OworCXBjdHguaW5vMiA9IGN0eC0+ZnJlZV9pbm9kZXM7CisJaWYgKChwY3R4LmlubyAhPSBwY3R4LmlubzIpICYmCisJICAgICEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgJiYKKwkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl8wX0ZSRUVfSU5PREVfQ09VTlQsICZwY3R4KSkgeworCQlmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQgPSBjdHgtPmZyZWVfaW5vZGVzOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJcGN0eC5ibGsgPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwlwY3R4LmJsazIgPSBjdHgtPmZyZWVfYmxvY2tzOworCWlmICgocGN0eC5ibGsgIT0gcGN0eC5ibGsyKSAmJgorCSAgICAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUkVBRE9OTFkpICYmCisJICAgIGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9GUkVFX0JMT0NLX0NPVU5ULCAmcGN0eCkpIHsKKwkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsIGN0eC0+ZnJlZV9ibG9ja3MpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCisJLyogUHJpbnQgdGhlIHN1bW1hcnkgbWVzc2FnZSB3aGVuIHdlJ3JlIHNraXBwaW5nIGEgZnVsbCBjaGVjayAqLworCWxvZ19vdXQoY3R4LCBfKCIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIiksCisJCWN0eC0+ZGV2aWNlX25hbWUsCisJCWZzLT5zdXBlci0+c19pbm9kZXNfY291bnQgLSBmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQsCisJCWZzLT5zdXBlci0+c19pbm9kZXNfY291bnQsCisJCWV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtCisJCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpLAorCQlleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpOworCW5leHRfY2hlY2sgPSAxMDAwMDA7CisJaWYgKGZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50ID4gMCkgeworCQluZXh0X2NoZWNrID0gZnMtPnN1cGVyLT5zX21heF9tbnRfY291bnQgLSBmcy0+c3VwZXItPnNfbW50X2NvdW50OworCQlpZiAobmV4dF9jaGVjayA8PSAwKQorCQkJbmV4dF9jaGVjayA9IDE7CisJfQorCWlmICghYnJva2VuX3N5c3RlbV9jbG9jayAmJiBmcy0+c3VwZXItPnNfY2hlY2tpbnRlcnZhbCAmJgorCSAgICAoKGN0eC0+bm93IC0gZnMtPnN1cGVyLT5zX2xhc3RjaGVjaykgPj0gZnMtPnN1cGVyLT5zX2NoZWNraW50ZXJ2YWwpKQorCQluZXh0X2NoZWNrID0gMTsKKwlpZiAobmV4dF9jaGVjayA8PSA1KSB7CisJCWlmIChuZXh0X2NoZWNrID09IDEpIHsKKwkJCWlmIChiYXR0KQorCQkJCWxvZ19vdXQoY3R4LCAiJXMiLAorCQkJCQlfKCIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIpKTsKKwkJCWVsc2UKKwkJCQlsb2dfb3V0KGN0eCwgIiVzIiwKKwkJCQkJXygiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIpKTsKKwkJfSBlbHNlCisJCQlsb2dfb3V0KGN0eCwgXygiIChjaGVjayBpbiAlbGQgbW91bnRzKSIpLAorCQkJCW5leHRfY2hlY2spOworCX0KKwlsb2dfb3V0KGN0eCwgIlxuIik7Citza2lwOgorCWV4dDJmc19jbG9zZV9mcmVlKCZjdHgtPmZzKTsKKwllMmZzY2tfZnJlZV9jb250ZXh0KGN0eCk7CisJZXhpdChGU0NLX09LKTsKK30KKworLyoKKyAqIEZvciBjb21wbGV0aW9uIG5vdGljZQorICovCitzdHJ1Y3QgcGVyY2VudF90YmwgeworCWludAltYXhfcGFzczsKKwlpbnQJdGFibGVbMzJdOworfTsKK3N0YXRpYyBzdHJ1Y3QgcGVyY2VudF90YmwgZTJmc2NrX3RibCA9IHsKKwk1LCB7IDAsIDcwLCA5MCwgOTIsICA5NSwgMTAwIH0KK307CitzdGF0aWMgY2hhciBiYXJbMTI4XSwgc3BhY2VzWzEyOF07CisKK3N0YXRpYyBmbG9hdCBjYWxjX3BlcmNlbnQoc3RydWN0IHBlcmNlbnRfdGJsICp0YmwsIGludCBwYXNzLCBpbnQgY3VyciwKKwkJCSAgaW50IG1heCkKK3sKKwlmbG9hdAlwZXJjZW50OworCisJaWYgKHBhc3MgPD0gMCkKKwkJcmV0dXJuIDAuMDsKKwlpZiAocGFzcyA+IHRibC0+bWF4X3Bhc3MgfHwgbWF4ID09IDApCisJCXJldHVybiAxMDAuMDsKKwlwZXJjZW50ID0gKChmbG9hdCkgY3VycikgLyAoKGZsb2F0KSBtYXgpOworCXJldHVybiAoKHBlcmNlbnQgKiAodGJsLT50YWJsZVtwYXNzXSAtIHRibC0+dGFibGVbcGFzcy0xXSkpCisJCSsgdGJsLT50YWJsZVtwYXNzLTFdKTsKK30KKwordm9pZCBlMmZzY2tfY2xlYXJfcHJvZ2JhcihlMmZzY2tfdCBjdHgpCit7CisJaWYgKCEoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1BST0dfQkFSKSkKKwkJcmV0dXJuOworCisJcHJpbnRmKCIlcyVzXHIlcyIsIGN0eC0+c3RhcnRfbWV0YSwgc3BhY2VzICsgKHNpemVvZihzcGFjZXMpIC0gODApLAorCSAgICAgICBjdHgtPnN0b3BfbWV0YSk7CisJZmZsdXNoKHN0ZG91dCk7CisJY3R4LT5mbGFncyAmPSB+RTJGX0ZMQUdfUFJPR19CQVI7Cit9CisKK2ludCBlMmZzY2tfc2ltcGxlX3Byb2dyZXNzKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqbGFiZWwsIGZsb2F0IHBlcmNlbnQsCisJCQkgICB1bnNpZ25lZCBpbnQgZHB5bnVtKQoreworCXN0YXRpYyBjb25zdCBjaGFyIHNwaW5uZXJbXSA9ICJcXHwvLSI7CisJaW50CWk7CisJdW5zaWduZWQgaW50CXRpY2s7CisJc3RydWN0IHRpbWV2YWwJdHY7CisJaW50IGRweXdpZHRoOworCWludCBmaXhlZF9wZXJjZW50OworCisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19QUk9HX1NVUFBSRVNTKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogQ2FsY3VsYXRlIHRoZSBuZXcgcHJvZ3Jlc3MgcG9zaXRpb24uICBJZiB0aGUKKwkgKiBwZXJjZW50YWdlIGhhc24ndCBjaGFuZ2VkLCB0aGVuIHdlIHNraXAgb3V0IHJpZ2h0CisJICogYXdheS4KKwkgKi8KKwlmaXhlZF9wZXJjZW50ID0gKGludCkgKCgxMCAqIHBlcmNlbnQpICsgMC41KTsKKwlpZiAoY3R4LT5wcm9ncmVzc19sYXN0X3BlcmNlbnQgPT0gZml4ZWRfcGVyY2VudCkKKwkJcmV0dXJuIDA7CisJY3R4LT5wcm9ncmVzc19sYXN0X3BlcmNlbnQgPSBmaXhlZF9wZXJjZW50OworCisJLyoKKwkgKiBJZiB3ZSd2ZSBhbHJlYWR5IHVwZGF0ZWQgdGhlIHNwaW5uZXIgb25jZSB3aXRoaW4KKwkgKiB0aGUgbGFzdCAxLzh0aCBvZiBhIHNlY29uZCwgbm8gcG9pbnQgZG9pbmcgaXQKKwkgKiBhZ2Fpbi4KKwkgKi8KKwlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKwl0aWNrID0gKHR2LnR2X3NlYyA8PCAzKSArICh0di50dl91c2VjIC8gKDEwMDAwMDAgLyA4KSk7CisJaWYgKCh0aWNrID09IGN0eC0+cHJvZ3Jlc3NfbGFzdF90aW1lKSAmJgorCSAgICAoZml4ZWRfcGVyY2VudCAhPSAwKSAmJiAoZml4ZWRfcGVyY2VudCAhPSAxMDAwKSkKKwkJcmV0dXJuIDA7CisJY3R4LT5wcm9ncmVzc19sYXN0X3RpbWUgPSB0aWNrOworCisJLyoKKwkgKiBBZHZhbmNlIHRoZSBzcGlubmVyLCBhbmQgbm90ZSB0aGF0IHRoZSBwcm9ncmVzcyBiYXIKKwkgKiB3aWxsIGJlIG9uIHRoZSBzY3JlZW4KKwkgKi8KKwljdHgtPnByb2dyZXNzX3BvcyA9IChjdHgtPnByb2dyZXNzX3BvcysxKSAmIDM7CisJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19QUk9HX0JBUjsKKworCWRweXdpZHRoID0gNjYgLSBzdHJsZW4obGFiZWwpOworCWRweXdpZHRoID0gOCAqIChkcHl3aWR0aCAvIDgpOworCWlmIChkcHludW0pCisJCWRweXdpZHRoIC09IDg7CisKKwlpID0gKChwZXJjZW50ICogZHB5d2lkdGgpICsgNTApIC8gMTAwOworCXByaW50ZigiJXMlczogfCVzJXMiLCBjdHgtPnN0YXJ0X21ldGEsIGxhYmVsLAorCSAgICAgICBiYXIgKyAoc2l6ZW9mKGJhcikgLSAoaSsxKSksCisJICAgICAgIHNwYWNlcyArIChzaXplb2Yoc3BhY2VzKSAtIChkcHl3aWR0aCAtIGkgKyAxKSkpOworCWlmIChmaXhlZF9wZXJjZW50ID09IDEwMDApCisJCWZwdXRjKCd8Jywgc3Rkb3V0KTsKKwllbHNlCisJCWZwdXRjKHNwaW5uZXJbY3R4LT5wcm9ncmVzc19wb3MgJiAzXSwgc3Rkb3V0KTsKKwlwcmludGYoIiAlNC4xZiUlICAiLCBwZXJjZW50KTsKKwlpZiAoZHB5bnVtKQorCQlwcmludGYoIiV1XHIiLCBkcHludW0pOworCWVsc2UKKwkJZnB1dHMoIiBcciIsIHN0ZG91dCk7CisJZnB1dHMoY3R4LT5zdG9wX21ldGEsIHN0ZG91dCk7CisKKwlpZiAoZml4ZWRfcGVyY2VudCA9PSAxMDAwKQorCQllMmZzY2tfY2xlYXJfcHJvZ2JhcihjdHgpOworCWZmbHVzaChzdGRvdXQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZTJmc2NrX3VwZGF0ZV9wcm9ncmVzcyhlMmZzY2tfdCBjdHgsIGludCBwYXNzLAorCQkJCSAgdW5zaWduZWQgbG9uZyBjdXIsIHVuc2lnbmVkIGxvbmcgbWF4KQoreworCWNoYXIgYnVmWzEwMjRdOworCWZsb2F0IHBlcmNlbnQ7CisKKwlpZiAocGFzcyA9PSAwKQorCQlyZXR1cm4gMDsKKworCWlmIChjdHgtPnByb2dyZXNzX2ZkKSB7CisJCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlZCAlbHUgJWx1ICVzXG4iLAorCQkJIHBhc3MsIGN1ciwgbWF4LCBjdHgtPmRldmljZV9uYW1lKTsKKwkJd3JpdGVfYWxsKGN0eC0+cHJvZ3Jlc3NfZmQsIGJ1Ziwgc3RybGVuKGJ1ZikpOworCX0gZWxzZSB7CisJCXBlcmNlbnQgPSBjYWxjX3BlcmNlbnQoJmUyZnNja190YmwsIHBhc3MsIGN1ciwgbWF4KTsKKwkJZTJmc2NrX3NpbXBsZV9wcm9ncmVzcyhjdHgsIGN0eC0+ZGV2aWNlX25hbWUsCisJCQkJICAgICAgIHBlcmNlbnQsIDApOworCX0KKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBQQVRIX1NFVCAiUEFUSD0vc2JpbiIKKworLyoKKyAqIE1ha2Ugc3VyZSAwLDEsMiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBvcGVuLCBzbyB0aGF0IHdlIGRvbid0IG9wZW4KKyAqIHRoZSBmaWxlc3lzdGVtIHVzaW5nIHRoZSBzYW1lIGZpbGUgZGVzY3JpcHRvciBhcyBzdGRvdXQgb3Igc3RkZXJyLgorICovCitzdGF0aWMgdm9pZCByZXNlcnZlX3N0ZGlvX2Zkcyh2b2lkKQoreworCWludAlmZCA9IDA7CisKKwl3aGlsZSAoZmQgPD0gMikgeworCQlmZCA9IG9wZW4oIi9kZXYvbnVsbCIsIE9fUkRXUik7CisJCWlmIChmZCA8IDApIHsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJFUlJPUjogQ291bGRuJ3Qgb3BlbiAiCisJCQkJIi9kZXYvbnVsbCAoJXMpXG4iKSwKKwkJCQlzdHJlcnJvcihlcnJubykpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKKyNpZmRlZiBIQVZFX1NJR05BTF9ICitzdGF0aWMgdm9pZCBzaWduYWxfcHJvZ3Jlc3Nfb24oaW50IHNpZyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJZTJmc2NrX3QgY3R4ID0gZTJmc2NrX2dsb2JhbF9jdHg7CisKKwlpZiAoIWN0eCkKKwkJcmV0dXJuOworCisJY3R4LT5wcm9ncmVzcyA9IGUyZnNja191cGRhdGVfcHJvZ3Jlc3M7Cit9CisKK3N0YXRpYyB2b2lkIHNpZ25hbF9wcm9ncmVzc19vZmYoaW50IHNpZyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJZTJmc2NrX3QgY3R4ID0gZTJmc2NrX2dsb2JhbF9jdHg7CisKKwlpZiAoIWN0eCkKKwkJcmV0dXJuOworCisJZTJmc2NrX2NsZWFyX3Byb2diYXIoY3R4KTsKKwljdHgtPnByb2dyZXNzID0gMDsKK30KKworc3RhdGljIHZvaWQgc2lnbmFsX2NhbmNlbChpbnQgc2lnIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwllMmZzY2tfdCBjdHggPSBlMmZzY2tfZ2xvYmFsX2N0eDsKKworCWlmICghY3R4KQorCQlleGl0KEZTQ0tfQ0FOQ0VMRUQpOworCisJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19DQU5DRUw7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQgcGFyc2VfZXh0ZW5kZWRfb3B0cyhlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKm9wdHMpCit7CisJY2hhcgkqYnVmLCAqdG9rZW4sICpuZXh0LCAqcCwgKmFyZzsKKwlpbnQJZWFfdmVyOworCWludAlleHRlbmRlZF91c2FnZSA9IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIHJlYWRhX2tiOworCisJYnVmID0gc3RyaW5nX2NvcHkoY3R4LCBvcHRzLCAwKTsKKwlmb3IgKHRva2VuID0gYnVmOyB0b2tlbiAmJiAqdG9rZW47IHRva2VuID0gbmV4dCkgeworCQlwID0gc3RyY2hyKHRva2VuLCAnLCcpOworCQluZXh0ID0gMDsKKwkJaWYgKHApIHsKKwkJCSpwID0gMDsKKwkJCW5leHQgPSBwKzE7CisJCX0KKwkJYXJnID0gc3RyY2hyKHRva2VuLCAnPScpOworCQlpZiAoYXJnKSB7CisJCQkqYXJnID0gMDsKKwkJCWFyZysrOworCQl9CisJCWlmIChzdHJjbXAodG9rZW4sICJlYV92ZXIiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCWV4dGVuZGVkX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQllYV92ZXIgPSBzdHJ0b3VsKGFyZywgJnAsIDApOworCQkJaWYgKCpwIHx8CisJCQkgICAgKChlYV92ZXIgIT0gMSkgJiYgKGVhX3ZlciAhPSAyKSkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCQkJXygiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIikpOworCQkJCWV4dGVuZGVkX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQljdHgtPmV4dF9hdHRyX3ZlciA9IGVhX3ZlcjsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJyZWFkYWhlYWRfa2IiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCWV4dGVuZGVkX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQlyZWFkYV9rYiA9IHN0cnRvdWxsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQkJCV8oIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIikpOworCQkJCWV4dGVuZGVkX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQljdHgtPnJlYWRhaGVhZF9rYiA9IHJlYWRhX2tiOworCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgImZyYWdjaGVjayIpID09IDApIHsKKwkJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX0ZSQUdDSEVDSzsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgImpvdXJuYWxfb25seSIpID09IDApIHsKKwkJCWlmIChhcmcpIHsKKwkJCQlleHRlbmRlZF91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJY3R4LT5vcHRpb25zIHw9IEUyRl9PUFRfSk9VUk5BTF9PTkxZOworCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgImRpc2NhcmQiKSA9PSAwKSB7CisJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9ESVNDQVJEOworCQkJY29udGludWU7CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAibm9kaXNjYXJkIikgPT0gMCkgeworCQkJY3R4LT5vcHRpb25zICY9IH5FMkZfT1BUX0RJU0NBUkQ7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJsb2dfZmlsZW5hbWUiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykKKwkJCQlleHRlbmRlZF91c2FnZSsrOworCQkJZWxzZQorCQkJCWN0eC0+bG9nX2ZuID0gc3RyaW5nX2NvcHkoY3R4LCBhcmcsIDApOworCQkJY29udGludWU7CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAiYm1hcDJleHRlbnQiKSA9PSAwKSB7CisJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9DT05WRVJUX0JNQVA7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJmaXhlc19vbmx5IikgPT0gMCkgeworCQkJY3R4LT5vcHRpb25zIHw9IEUyRl9PUFRfRklYRVNfT05MWTsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIiksCisJCQkJdG9rZW4pOworCQkJZXh0ZW5kZWRfdXNhZ2UrKzsKKwkJfQorCX0KKwlmcmVlKGJ1Zik7CisKKwlpZiAoZXh0ZW5kZWRfdXNhZ2UpIHsKKwkJZnB1dHMoKCJcbkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsICIKKwkJICAgICAgICJhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKwkJICAgICAgICJpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLiAgIgorCQkgICAgICAgIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIiksIHN0ZGVycik7CisJCWZwdXRzKCgiXHRlYV92ZXI9PGVhX3ZlcnNpb24gKDEgb3IgMik+XG4iKSwgc3RkZXJyKTsKKwkJZnB1dHMoKCJcdGZyYWdjaGVja1xuIiksIHN0ZGVycik7CisJCWZwdXRzKCgiXHRqb3VybmFsX29ubHlcbiIpLCBzdGRlcnIpOworCQlmcHV0cygoIlx0ZGlzY2FyZFxuIiksIHN0ZGVycik7CisJCWZwdXRzKCgiXHRub2Rpc2NhcmRcbiIpLCBzdGRlcnIpOworCQlmcHV0cygoIlx0cmVhZGFoZWFkX2tiPTxidWZmZXIgc2l6ZT5cbiIpLCBzdGRlcnIpOworCQlmcHV0cygoIlx0Ym1hcDJleHRlbnRcbiIpLCBzdGRlcnIpOworCQlmcHV0YygnXG4nLCBzdGRlcnIpOworCQlleGl0KDEpOworCX0KK30KKworc3RhdGljIHZvaWQgc3ludGF4X2Vycl9yZXBvcnQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGxvbmcgZXJyLCBpbnQgbGluZV9udW0pCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcblx0JXNcbiIpLAorCQlmaWxlbmFtZSwgbGluZV9udW0sIGVycm9yX21lc3NhZ2UoZXJyKSk7CisJZXhpdChGU0NLX0VSUk9SKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmNvbmZpZ19mbltdID0geyBST09UX1NZU0NPTkZESVIgIi9lMmZzY2suY29uZiIsIDAgfTsKKworc3RhdGljIGVycmNvZGVfdCBQUlMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgZTJmc2NrX3QgKnJldF9jdHgpCit7CisJaW50CQlmbHVzaCA9IDA7CisJaW50CQljLCBmZDsKKyNpZmRlZiBNVFJBQ0UKKwlleHRlcm4gdm9pZAkqbWFsbHdhdGNoOworI2VuZGlmCisJZTJmc2NrX3QJY3R4OworCWVycmNvZGVfdAlyZXR2YWw7CisjaWZkZWYgSEFWRV9TSUdOQUxfSAorCXN0cnVjdCBzaWdhY3Rpb24Jc2E7CisjZW5kaWYKKwljaGFyCQkqZXh0ZW5kZWRfb3B0cyA9IDA7CisJY2hhcgkJKmNwOworCWludCAJCXJlczsJCS8qIHJlc3VsdCBvZiBzc2NhbmYgKi8KKyNpZmRlZiBDT05GSUdfSkJEX0RFQlVHCisJY2hhciAJCSpqYmRfZGVidWc7CisjZW5kaWYKKwl1bnNpZ25lZCBsb25nIGxvbmcgcGh5c19tZW1fa2I7CisKKwlyZXR2YWwgPSBlMmZzY2tfYWxsb2NhdGVfY29udGV4dCgmY3R4KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJKnJldF9jdHggPSBjdHg7CisJZTJmc2NrX2dsb2JhbF9jdHggPSBjdHg7CisKKwlzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTkJGLCBCVUZTSVopOworCXNldHZidWYoc3RkZXJyLCBOVUxMLCBfSU9OQkYsIEJVRlNJWik7CisJaWYgKGdldGVudigiRTJGU0NLX0ZPUkNFX0lOVEVSQUNUSVZFIikgfHwgKGlzYXR0eSgwKSAmJiBpc2F0dHkoMSkpKSB7CisJCWN0eC0+aW50ZXJhY3RpdmUgPSAxOworCX0gZWxzZSB7CisJCWN0eC0+c3RhcnRfbWV0YVswXSA9ICdcMDAxJzsKKwkJY3R4LT5zdG9wX21ldGFbMF0gPSAnXDAwMic7CisJfQorCW1lbXNldChiYXIsICc9Jywgc2l6ZW9mKGJhciktMSk7CisJbWVtc2V0KHNwYWNlcywgJyAnLCBzaXplb2Yoc3BhY2VzKS0xKTsKKwlhZGRfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCWFkZF9lcnJvcl90YWJsZSgmZXRfcHJvZl9lcnJvcl90YWJsZSk7CisJYmxraWRfZ2V0X2NhY2hlKCZjdHgtPmJsa2lkLCBOVUxMKTsKKworCWlmIChhcmdjICYmICphcmd2KQorCQljdHgtPnByb2dyYW1fbmFtZSA9ICphcmd2OworCWVsc2UKKwkJY3R4LT5wcm9ncmFtX25hbWUgPSAiZTJmc2NrIjsKKworCXBoeXNfbWVtX2tiID0gZ2V0X21lbW9yeV9zaXplKCkgLyAxMDI0OworCWN0eC0+cmVhZGFoZWFkX2tiID0gfjBVTEw7CisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJwYW55cmNDOkI6ZEU6ZnZ0RlZNOmI6STpqOlA6bDpMOk46U3NEa3o6IikpICE9IEVPRikKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ0MnOgorCQkJY3R4LT5wcm9ncmVzcyA9IGUyZnNja191cGRhdGVfcHJvZ3Jlc3M7CisJCQlyZXMgPSBzc2NhbmYob3B0YXJnLCAiJWQiLCAmY3R4LT5wcm9ncmVzc19mZCk7CisJCQlpZiAocmVzICE9IDEpCisJCQkJZ290byBzc2NhbmZfZXJyOworCisJCQlpZiAoY3R4LT5wcm9ncmVzc19mZCA8IDApIHsKKwkJCQljdHgtPnByb2dyZXNzID0gMDsKKwkJCQljdHgtPnByb2dyZXNzX2ZkID0gY3R4LT5wcm9ncmVzc19mZCAqIC0xOworCQkJfQorCQkJaWYgKCFjdHgtPnByb2dyZXNzX2ZkKQorCQkJCWJyZWFrOworCQkJLyogVmFsaWRhdGUgdGhlIGZpbGUgZGVzY3JpcHRvciB0byBhdm9pZCBkaXNhc3RlcnMgKi8KKwkJCWZkID0gZHVwKGN0eC0+cHJvZ3Jlc3NfZmQpOworCQkJaWYgKGZkIDwgMCkgeworCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCV8oIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIiksCisJCQkJCWN0eC0+cHJvZ3Jlc3NfZmQsCisJCQkJCWVycm9yX21lc3NhZ2UoZXJybm8pKTsKKwkJCQlmYXRhbF9lcnJvcihjdHgsCisJCQlfKCJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIikpOworCQkJfSBlbHNlCisJCQkJY2xvc2UoZmQpOworCQkJYnJlYWs7CisJCWNhc2UgJ0QnOgorCQkJY3R4LT5vcHRpb25zIHw9IEUyRl9PUFRfQ09NUFJFU1NfRElSUzsKKwkJCWJyZWFrOworCQljYXNlICdFJzoKKwkJCWV4dGVuZGVkX29wdHMgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCWNhc2UgJ2EnOgorCQkJaWYgKGN0eC0+b3B0aW9ucyAmIChFMkZfT1BUX1lFU3xFMkZfT1BUX05PKSkgeworCQkJY29uZmxpY3Rfb3B0OgorCQkJCWZhdGFsX2Vycm9yKGN0eCwKKwlfKCJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iKSk7CisJCQl9CisJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9QUkVFTjsKKwkJCWJyZWFrOworCQljYXNlICduJzoKKwkJCWlmIChjdHgtPm9wdGlvbnMgJiAoRTJGX09QVF9ZRVN8RTJGX09QVF9QUkVFTikpCisJCQkJZ290byBjb25mbGljdF9vcHQ7CisJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9OTzsKKwkJCWJyZWFrOworCQljYXNlICd5JzoKKwkJCWlmIChjdHgtPm9wdGlvbnMgJiAoRTJGX09QVF9QUkVFTnxFMkZfT1BUX05PKSkKKwkJCQlnb3RvIGNvbmZsaWN0X29wdDsKKwkJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX1lFUzsKKwkJCWJyZWFrOworCQljYXNlICd0JzoKKyNpZmRlZiBSRVNPVVJDRV9UUkFDSworCQkJaWYgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfVElNRSkKKwkJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9USU1FMjsKKwkJCWVsc2UKKwkJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9USU1FOworI2Vsc2UKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJUaGUgLXQgb3B0aW9uIGlzIG5vdCAiCisJCQkJInN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIikpOworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQlpZiAoY2ZsYWcrKykKKwkJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9XUklURUNIRUNLOworCQkJY3R4LT5vcHRpb25zIHw9IEUyRl9PUFRfQ0hFQ0tCTE9DS1M7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQkvKiBXaGF0IHdlIGRvIGJ5IGRlZmF1bHQsIGFueXdheSEgKi8KKwkJCWJyZWFrOworCQljYXNlICdiJzoKKwkJCXJlcyA9IHNzY2FuZihvcHRhcmcsICIlbGx1IiwgJmN0eC0+dXNlX3N1cGVyYmxvY2spOworCQkJaWYgKHJlcyAhPSAxKQorCQkJCWdvdG8gc3NjYW5mX2VycjsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfU0JfU1BFQ0lGSUVEOworCQkJYnJlYWs7CisJCWNhc2UgJ0InOgorCQkJY3R4LT5ibG9ja3NpemUgPSBhdG9pKG9wdGFyZyk7CisJCQlicmVhazsKKwkJY2FzZSAnSSc6CisJCQlyZXMgPSBzc2NhbmYob3B0YXJnLCAiJWQiLCAmY3R4LT5pbm9kZV9idWZmZXJfYmxvY2tzKTsKKwkJCWlmIChyZXMgIT0gMSkKKwkJCQlnb3RvIHNzY2FuZl9lcnI7CisJCQlicmVhazsKKwkJY2FzZSAnaic6CisJCQljdHgtPmpvdXJuYWxfbmFtZSA9IGJsa2lkX2dldF9kZXZuYW1lKGN0eC0+YmxraWQsCisJCQkJCQkJICAgICAgb3B0YXJnLCBOVUxMKTsKKwkJCWlmICghY3R4LT5qb3VybmFsX25hbWUpIHsKKwkJCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCAwLAorCQkJCQlfKCJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIiksCisJCQkJCW9wdGFyZyk7CisJCQkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdQJzoKKwkJCXJlcyA9IHNzY2FuZihvcHRhcmcsICIlZCIsICZjdHgtPnByb2Nlc3NfaW5vZGVfc2l6ZSk7CisJCQlpZiAocmVzICE9IDEpCisJCQkJZ290byBzc2NhbmZfZXJyOworCQkJYnJlYWs7CisJCWNhc2UgJ0wnOgorCQkJcmVwbGFjZV9iYWRfYmxvY2tzKys7CisJCWNhc2UgJ2wnOgorCQkJaWYgKGJhZF9ibG9ja3NfZmlsZSkKKwkJCQlmcmVlKGJhZF9ibG9ja3NfZmlsZSk7CisJCQliYWRfYmxvY2tzX2ZpbGUgPSBzdHJpbmdfY29weShjdHgsIG9wdGFyZywgMCk7CisJCQlicmVhazsKKwkJY2FzZSAnZCc6CisJCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9ERUJVRzsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX0ZPUkNFOworCQkJYnJlYWs7CisJCWNhc2UgJ0YnOgorCQkJZmx1c2ggPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJdmVyYm9zZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlzaG93X3ZlcnNpb25fb25seSA9IDE7CisJCQlicmVhazsKKyNpZmRlZiBNVFJBQ0UKKwkJY2FzZSAnTSc6CisJCQltYWxsd2F0Y2ggPSAodm9pZCAqKSBzdHJ0b2wob3B0YXJnLCBOVUxMLCAwKTsKKwkJCWJyZWFrOworI2VuZGlmCisJCWNhc2UgJ04nOgorCQkJY3R4LT5kZXZpY2VfbmFtZSA9IHN0cmluZ19jb3B5KGN0eCwgb3B0YXJnLCAwKTsKKwkJCWJyZWFrOworCQljYXNlICdrJzoKKwkJCWtlZXBfYmFkX2Jsb2NrcysrOworCQkJYnJlYWs7CisJCWNhc2UgJ3onOgorCQkJY3R4LT51bmRvX2ZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGN0eCk7CisJCX0KKwlpZiAoc2hvd192ZXJzaW9uX29ubHkpCisJCXJldHVybiAwOworCWlmIChvcHRpbmQgIT0gYXJnYyAtIDEpCisJCXVzYWdlKGN0eCk7CisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX05PKSAmJgorCSAgICAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9DT01QUkVTU19ESVJTKSkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJXygiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIikpOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KKwlpZiAoKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfTk8pICYmIGNmbGFnKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJUaGUgLW4gYW5kIC1jIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iKSk7CisJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJfQorCWlmICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgJiYgYmFkX2Jsb2Nrc19maWxlKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iKSk7CisJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJfQorCWlmIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX05PKQorCQljdHgtPm9wdGlvbnMgfD0gRTJGX09QVF9SRUFET05MWTsKKworCWN0eC0+aW9fb3B0aW9ucyA9IHN0cmNocihhcmd2W29wdGluZF0sICc/Jyk7CisJaWYgKGN0eC0+aW9fb3B0aW9ucykKKwkJKmN0eC0+aW9fb3B0aW9ucysrID0gMDsKKwljdHgtPmZpbGVzeXN0ZW1fbmFtZSA9IGJsa2lkX2dldF9kZXZuYW1lKGN0eC0+YmxraWQsIGFyZ3Zbb3B0aW5kXSwgMCk7CisJaWYgKCFjdHgtPmZpbGVzeXN0ZW1fbmFtZSkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCAwLCBfKCJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIiksCisJCQlhcmd2W29wdGluZF0pOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KKwlpZiAoZXh0ZW5kZWRfb3B0cykKKwkJcGFyc2VfZXh0ZW5kZWRfb3B0cyhjdHgsIGV4dGVuZGVkX29wdHMpOworCisJLyogQ29tcGxhaW4gYWJvdXQgbXV0dWFsbHkgZXhjbHVzaXZlIHJlYnVpbGRpbmcgYWN0aXZpdGllcyAqLworCWlmIChnZXRlbnYoIkUyRlNDS19GSVhFU19PTkxZIikpCisJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX0ZJWEVTX09OTFk7CisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0NPTVBSRVNTX0RJUlMpICYmCisJICAgIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0ZJWEVTX09OTFkpKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIpKTsKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9CisJaWYgKChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0NPTlZFUlRfQk1BUCkgJiYKKwkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRklYRVNfT05MWSkpIHsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCV8oIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIikpOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KKworCWlmICgoY3AgPSBnZXRlbnYoIkUyRlNDS19DT05GSUciKSkgIT0gTlVMTCkKKwkJY29uZmlnX2ZuWzBdID0gY3A7CisJcHJvZmlsZV9zZXRfc3ludGF4X2Vycl9jYihzeW50YXhfZXJyX3JlcG9ydCk7CisJcHJvZmlsZV9pbml0KGNvbmZpZ19mbiwgJmN0eC0+cHJvZmlsZSk7CisKKwlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAicmVwb3J0X3RpbWUiLCAwLCAwLAorCQkJICAgICZjKTsKKwlpZiAoYykKKwkJY3R4LT5vcHRpb25zIHw9IEUyRl9PUFRfVElNRSB8IEUyRl9PUFRfVElNRTI7CisJcHJvZmlsZV9nZXRfYm9vbGVhbihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwgInJlcG9ydF92ZXJib3NlIiwgMCwgMCwKKwkJCSAgICAmYyk7CisJaWYgKGMpCisJCXZlcmJvc2UgPSAxOworCisJaWYgKGN0eC0+cmVhZGFoZWFkX2tiID09IH4wVUxMKSB7CisJCXByb2ZpbGVfZ2V0X2ludGVnZXIoY3R4LT5wcm9maWxlLCAib3B0aW9ucyIsCisJCQkJICAgICJyZWFkYWhlYWRfbWVtX3BjdCIsIDAsIC0xLCAmYyk7CisJCWlmIChjID49IDAgJiYgYyA8PSAxMDApCisJCQljdHgtPnJlYWRhaGVhZF9rYiA9IHBoeXNfbWVtX2tiICogYyAvIDEwMDsKKwkJcHJvZmlsZV9nZXRfaW50ZWdlcihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKKwkJCQkgICAgInJlYWRhaGVhZF9rYiIsIDAsIC0xLCAmYyk7CisJCWlmIChjID49IDApCisJCQljdHgtPnJlYWRhaGVhZF9rYiA9IGM7CisJCWlmIChjdHgtPnJlYWRhaGVhZF9rYiAhPSB+MFVMTCAmJgorCQkgICAgY3R4LT5yZWFkYWhlYWRfa2IgPiBwaHlzX21lbV9rYikKKwkJCWN0eC0+cmVhZGFoZWFkX2tiID0gcGh5c19tZW1fa2I7CisJfQorCisJLyogVHVybiBvZmYgZGlzY2FyZCBpbiByZWFkLW9ubHkgbW9kZSAqLworCWlmICgoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgJiYKKwkgICAgKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfRElTQ0FSRCkpCisJCWN0eC0+b3B0aW9ucyAmPSB+RTJGX09QVF9ESVNDQVJEOworCisJaWYgKGZsdXNoKSB7CisJCWZkID0gb3BlbihjdHgtPmZpbGVzeXN0ZW1fbmFtZSwgT19SRE9OTFksIDApOworCQlpZiAoZmQgPCAwKSB7CisJCQljb21fZXJyKCJvcGVuIiwgZXJybm8sCisJCQkJXygid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciKSwKKwkJCQljdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJCQlmYXRhbF9lcnJvcihjdHgsIDApOworCQl9CisJCWlmICgocmV0dmFsID0gZXh0MmZzX3N5bmNfZGV2aWNlKGZkLCAxKSkpIHsKKwkJCWNvbV9lcnIoImV4dDJmc19zeW5jX2RldmljZSIsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiKSwKKwkJCQljdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJCQlmYXRhbF9lcnJvcihjdHgsIDApOworCQl9CisJCWNsb3NlKGZkKTsKKwl9CisJaWYgKGNmbGFnICYmIGJhZF9ibG9ja3NfZmlsZSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90ICIKKwkJCQkJImJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIikpOworCQlleGl0KEZTQ0tfVVNBR0UpOworCX0KKyNpZmRlZiBIQVZFX1NJR05BTF9ICisJLyoKKwkgKiBTZXQgdXAgc2lnbmFsIGFjdGlvbgorCSAqLworCW1lbXNldCgmc2EsIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSk7CisJc2Euc2FfaGFuZGxlciA9IHNpZ25hbF9jYW5jZWw7CisJc2lnYWN0aW9uKFNJR0lOVCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHVEVSTSwgJnNhLCAwKTsKKyNpZmRlZiBTQV9SRVNUQVJUCisJc2Euc2FfZmxhZ3MgPSBTQV9SRVNUQVJUOworI2VuZGlmCisJc2Euc2FfaGFuZGxlciA9IHNpZ25hbF9wcm9ncmVzc19vbjsKKwlzaWdhY3Rpb24oU0lHVVNSMSwgJnNhLCAwKTsKKwlzYS5zYV9oYW5kbGVyID0gc2lnbmFsX3Byb2dyZXNzX29mZjsKKwlzaWdhY3Rpb24oU0lHVVNSMiwgJnNhLCAwKTsKKyNlbmRpZgorCisJLyogVXBkYXRlIG91ciBQQVRIIHRvIGluY2x1ZGUgL3NiaW4gaWYgd2UgbmVlZCB0byBydW4gYmFkYmxvY2tzICAqLworCWlmIChjZmxhZykgeworCQljaGFyICpvbGRwYXRoID0gZ2V0ZW52KCJQQVRIIik7CisJCWNoYXIgKm5ld3BhdGg7CisJCWludCBsZW4gPSBzaXplb2YoUEFUSF9TRVQpICsgMTsKKworCQlpZiAob2xkcGF0aCkKKwkJCWxlbiArPSBzdHJsZW4ob2xkcGF0aCk7CisKKwkJbmV3cGF0aCA9IG1hbGxvYyhsZW4pOworCQlpZiAoIW5ld3BhdGgpCisJCQlmYXRhbF9lcnJvcihjdHgsICJDb3VsZG4ndCBtYWxsb2MoKSBuZXdwYXRoIik7CisJCXN0cmNweShuZXdwYXRoLCBQQVRIX1NFVCk7CisKKwkJaWYgKG9sZHBhdGgpIHsKKwkJCXN0cmNhdChuZXdwYXRoLCAiOiIpOworCQkJc3RyY2F0KG5ld3BhdGgsIG9sZHBhdGgpOworCQl9CisJCXB1dGVudihuZXdwYXRoKTsKKwl9CisjaWZkZWYgQ09ORklHX0pCRF9ERUJVRworCWpiZF9kZWJ1ZyA9IGdldGVudigiRTJGU0NLX0pCRF9ERUJVRyIpOworCWlmIChqYmRfZGVidWcpIHsKKwkJcmVzID0gc3NjYW5mKGpiZF9kZWJ1ZywgIiVkIiwgJmpvdXJuYWxfZW5hYmxlX2RlYnVnKTsKKwkJaWYgKHJlcyAhPSAxKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSAgICAgICAgXygiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcblxuIiksCisJCQkgICAgICAgIGpiZF9kZWJ1Zyk7CisJCQlleGl0ICgxKTsKKwkJfQorCX0KKyNlbmRpZgorCXJldHVybiAwOworCitzc2NhbmZfZXJyOgorCWZwcmludGYoc3RkZXJyLCBfKCJcbkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG5cbiIpLAorCSAgICAgICAgYywgb3B0YXJnKTsKKwlleGl0ICgxKTsKK30KKworc3RhdGljIGVycmNvZGVfdCB0cnlfb3Blbl9mcyhlMmZzY2tfdCBjdHgsIGludCBmbGFncywgaW9fbWFuYWdlciBpb19wdHIsCisJCQkgICAgIGV4dDJfZmlsc3lzICpyZXRfZnMpCit7CisJZXJyY29kZV90IHJldHZhbDsKKworCSpyZXRfZnMgPSBOVUxMOworCWlmIChjdHgtPnN1cGVyYmxvY2sgJiYgY3R4LT5ibG9ja3NpemUpIHsKKwkJcmV0dmFsID0gZXh0MmZzX29wZW4yKGN0eC0+ZmlsZXN5c3RlbV9uYW1lLCBjdHgtPmlvX29wdGlvbnMsCisJCQkJICAgICAgZmxhZ3MsIGN0eC0+c3VwZXJibG9jaywgY3R4LT5ibG9ja3NpemUsCisJCQkJICAgICAgaW9fcHRyLCByZXRfZnMpOworCX0gZWxzZSBpZiAoY3R4LT5zdXBlcmJsb2NrKSB7CisJCWludCBibG9ja3NpemU7CisJCWZvciAoYmxvY2tzaXplID0gRVhUMl9NSU5fQkxPQ0tfU0laRTsKKwkJICAgICBibG9ja3NpemUgPD0gRVhUMl9NQVhfQkxPQ0tfU0laRTsgYmxvY2tzaXplICo9IDIpIHsKKwkJCWlmICgqcmV0X2ZzKSB7CisJCQkJZXh0MmZzX2ZyZWUoKnJldF9mcyk7CisJCQkJKnJldF9mcyA9IE5VTEw7CisJCQl9CisJCQlyZXR2YWwgPSBleHQyZnNfb3BlbjIoY3R4LT5maWxlc3lzdGVtX25hbWUsCisJCQkJCSAgICAgIGN0eC0+aW9fb3B0aW9ucywgZmxhZ3MsCisJCQkJCSAgICAgIGN0eC0+c3VwZXJibG9jaywgYmxvY2tzaXplLAorCQkJCQkgICAgICBpb19wdHIsIHJldF9mcyk7CisJCQlpZiAoIXJldHZhbCkKKwkJCQlicmVhazsKKwkJfQorCX0gZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfb3BlbjIoY3R4LT5maWxlc3lzdGVtX25hbWUsIGN0eC0+aW9fb3B0aW9ucywKKwkJCQkgICAgICBmbGFncywgMCwgMCwgaW9fcHRyLCByZXRfZnMpOworCisJaWYgKHJldHZhbCA9PSAwKSB7CisJCSgqcmV0X2ZzKS0+cHJpdl9kYXRhID0gY3R4OworCQllMmZzY2tfc2V0X2JpdG1hcF90eXBlKCpyZXRfZnMsIEVYVDJGU19CTUFQNjRfUkJUUkVFLAorCQkJCSAgICAgICAiZGVmYXVsdCIsIE5VTEwpOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqbXlfdmVyX3N0cmluZyA9IEUyRlNQUk9HU19WRVJTSU9OOworc3RhdGljIGNvbnN0IGNoYXIgKm15X3Zlcl9kYXRlID0gRTJGU1BST0dTX0RBVEU7CisKK3N0YXRpYyBlcnJjb2RlX3QgZTJmc2NrX2NoZWNrX21tcChleHQyX2ZpbHN5cyBmcywgZTJmc2NrX3QgY3R4KQoreworCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfczsKKwl1bnNpZ25lZCBpbnQgbW1wX2NoZWNrX2ludGVydmFsOworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwl1bnNpZ25lZCBpbnQgd2FpdF90aW1lID0gMDsKKworCWNsZWFyX3Byb2JsZW1fY29udGV4dCgmcGN0eCk7CisJaWYgKGZzLT5tbXBfYnVmID09IE5VTEwpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmZzLT5tbXBfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2hlY2tfZXJyb3I7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX21tcF9yZWFkKGZzLCBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrLCBmcy0+bW1wX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBjaGVja19lcnJvcjsKKworCW1tcF9zID0gZnMtPm1tcF9idWY7CisKKwltbXBfY2hlY2tfaW50ZXJ2YWwgPSBmcy0+c3VwZXItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbDsKKwlpZiAobW1wX2NoZWNrX2ludGVydmFsIDwgRVhUNF9NTVBfTUlOX0NIRUNLX0lOVEVSVkFMKQorCQltbXBfY2hlY2tfaW50ZXJ2YWwgPSBFWFQ0X01NUF9NSU5fQ0hFQ0tfSU5URVJWQUw7CisKKwkvKgorCSAqIElmIGNoZWNrX2ludGVydmFsIGluIE1NUCBibG9jayBpcyBsYXJnZXIsIHVzZSB0aGF0IGluc3RlYWQgb2YKKwkgKiBjaGVja19pbnRlcnZhbCBmcm9tIHRoZSBzdXBlcmJsb2NrLgorCSAqLworCWlmIChtbXBfcy0+bW1wX2NoZWNrX2ludGVydmFsID4gbW1wX2NoZWNrX2ludGVydmFsKQorCQltbXBfY2hlY2tfaW50ZXJ2YWwgPSBtbXBfcy0+bW1wX2NoZWNrX2ludGVydmFsOworCisJd2FpdF90aW1lID0gbW1wX2NoZWNrX2ludGVydmFsICogMiArIDE7CisKKwlpZiAobW1wX3MtPm1tcF9zZXEgPT0gRVhUNF9NTVBfU0VRX0NMRUFOKQorCQlyZXR2YWwgPSAwOworCWVsc2UgaWYgKG1tcF9zLT5tbXBfc2VxID09IEVYVDRfTU1QX1NFUV9GU0NLKQorCQlyZXR2YWwgPSBFWFQyX0VUX01NUF9GU0NLX09OOworCWVsc2UgaWYgKG1tcF9zLT5tbXBfc2VxID4gRVhUNF9NTVBfU0VRX01BWCkKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfVU5LTk9XTl9TRVE7CisKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNoZWNrX2Vycm9yOworCisJLyogUHJpbnQgd2FybmluZyBpZiBlMmZjayB3aWxsIHdhaXQgZm9yIG1vcmUgdGhhbiAyMCBzZWNzLiAqLworCWlmICh2ZXJib3NlIHx8IHdhaXRfdGltZSA+IEVYVDRfTU1QX01JTl9DSEVDS19JTlRFUlZBTCAqIDQpIHsKKwkJbG9nX291dChjdHgsIF8oIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0ICIKKwkJCSAgICAgICAidGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2Ugd2FpdC4uLlxuIiksCisJCQltbXBfY2hlY2tfaW50ZXJ2YWwsIHdhaXRfdGltZSAqIDIpOworCX0KKworCXJldHVybiAwOworCitjaGVja19lcnJvcjoKKworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9NTVBfQkFEX0JMT0NLKSB7CisJCWlmIChmaXhfcHJvYmxlbShjdHgsIFBSXzBfTU1QX0lOVkFMSURfQkxLLCAmcGN0eCkpIHsKKwkJCWZzLT5zdXBlci0+c19tbXBfYmxvY2sgPSAwOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJcmV0dmFsID0gMDsKKwkJfQorCX0gZWxzZSBpZiAocmV0dmFsID09IEVYVDJfRVRfTU1QX0ZBSUxFRCkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siKSk7CisJCWR1bXBfbW1wX21zZyhmcy0+bW1wX2J1ZiwgTlVMTCk7CisJfSBlbHNlIGlmIChyZXR2YWwgPT0gRVhUMl9FVF9NTVBfRlNDS19PTiB8fAorCQkgICByZXR2YWwgPT0gRVhUMl9FVF9NTVBfVU5LTk9XTl9TRVEpIHsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgY2hlY2tpbmcgTU1QIGJsb2NrIikpOworCQlkdW1wX21tcF9tc2coZnMtPm1tcF9idWYsCisJCQkgICAgIF8oIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgIgorCQkJICAgICAgICJpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKwkJCSAgICAgICAiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIikpOworCX0gZWxzZSBpZiAocmV0dmFsID09IEVYVDJfRVRfTU1QX01BR0lDX0lOVkFMSUQpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9NTVBfSU5WQUxJRF9NQUdJQywgJnBjdHgpKSB7CisJCQlleHQyZnNfbW1wX2NsZWFyKGZzKTsKKwkJCXJldHZhbCA9IDA7CisJCX0KKwl9IGVsc2UgaWYgKHJldHZhbCA9PSBFWFQyX0VUX01NUF9DU1VNX0lOVkFMSUQpIHsKKwkJaWYgKGZpeF9wcm9ibGVtKGN0eCwgUFJfMF9NTVBfQ1NVTV9JTlZBTElELCAmcGN0eCkpIHsKKwkJCWV4dDJmc19tbXBfY2xlYXIoZnMpOworCQkJcmV0dmFsID0gMDsKKwkJfQorCX0gZWxzZQorCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIpKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IGUyZnNja19zZXR1cF90ZGIoZTJmc2NrX3QgY3R4LCBpb19tYW5hZ2VyICppb19wdHIpCit7CisJZXJyY29kZV90IHJldHZhbCA9IEVOT01FTTsKKwljaGFyICp0ZGJfZGlyID0gTlVMTCwgKnRkYl9maWxlID0gTlVMTDsKKwljaGFyICpkZXZfbmFtZSwgKnRtcF9uYW1lOworCWludCBmcmVlX3RkYl9kaXIgPSAwOworCisJLyogKHJlKW9wZW4gYSBzcGVjaWZpYyB1bmRvIGZpbGUgKi8KKwlpZiAoY3R4LT51bmRvX2ZpbGUgJiYgY3R4LT51bmRvX2ZpbGVbMF0gIT0gMCkgeworCQlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXIoKmlvX3B0cik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJKmlvX3B0ciA9IHVuZG9faW9fbWFuYWdlcjsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUoY3R4LT51bmRvX2ZpbGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnI7CisJCXByaW50ZihfKCJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgIgorCQkJICJ1c2luZyB0aGUgY29tbWFuZDpcbiIKKwkJCSAiICAgIGUydW5kbyAlcyAlc1xuXG4iKSwKKwkJCWN0eC0+dW5kb19maWxlLCBjdHgtPmZpbGVzeXN0ZW1fbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyoKKwkgKiBDb25maWd1cmF0aW9uIHZpYSBhIGNvbmYgZmlsZSB3b3VsZCBiZQorCSAqIG5pY2UKKwkgKi8KKwl0ZGJfZGlyID0gZ2V0ZW52KCJFMkZTUFJPR1NfVU5ET19ESVIiKTsKKwlpZiAoIXRkYl9kaXIpIHsKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKGN0eC0+cHJvZmlsZSwgImRlZmF1bHRzIiwKKwkJCQkgICAidW5kb19kaXIiLCAwLCAiL3Zhci9saWIvZTJmc3Byb2dzIiwKKwkJCQkgICAmdGRiX2Rpcik7CisJCWZyZWVfdGRiX2RpciA9IDE7CisJfQorCisJaWYgKCFzdHJjbXAodGRiX2RpciwgIm5vbmUiKSB8fCAodGRiX2RpclswXSA9PSAwKSB8fAorCSAgICBhY2Nlc3ModGRiX2RpciwgV19PSykpIHsKKwkJaWYgKGZyZWVfdGRiX2RpcikKKwkJCWZyZWUodGRiX2Rpcik7CisJCXJldHVybiAwOworCX0KKworCXRtcF9uYW1lID0gc3RyZHVwKGN0eC0+ZmlsZXN5c3RlbV9uYW1lKTsKKwlpZiAoIXRtcF9uYW1lKQorCQlnb3RvIGVycm91dDsKKwlkZXZfbmFtZSA9IGJhc2VuYW1lKHRtcF9uYW1lKTsKKwl0ZGJfZmlsZSA9IG1hbGxvYyhzdHJsZW4odGRiX2RpcikgKyA4ICsgc3RybGVuKGRldl9uYW1lKSArIDcgKyAxKTsKKwlpZiAoIXRkYl9maWxlKSB7CisJCWZyZWUodG1wX25hbWUpOworCQlnb3RvIGVycm91dDsKKwl9CisJc3ByaW50Zih0ZGJfZmlsZSwgIiVzL2UyZnNjay0lcy5lMnVuZG8iLCB0ZGJfZGlyLCBkZXZfbmFtZSk7CisJZnJlZSh0bXBfbmFtZSk7CisKKwlpZiAoKHVubGluayh0ZGJfZmlsZSkgPCAwKSAmJiAoZXJybm8gIT0gRU5PRU5UKSkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIpLCB0ZGJfZmlsZSk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2tpbmdfbWFuYWdlcigqaW9fcHRyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwkqaW9fcHRyID0gdW5kb19pb19tYW5hZ2VyOworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKHRkYl9maWxlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJICJ1c2luZyB0aGUgY29tbWFuZDpcbiIKKwkJICIgICAgZTJ1bmRvICVzICVzXG5cbiIpLCB0ZGJfZmlsZSwgY3R4LT5maWxlc3lzdGVtX25hbWUpOworCisJaWYgKGZyZWVfdGRiX2RpcikKKwkJZnJlZSh0ZGJfZGlyKTsKKwlmcmVlKHRkYl9maWxlKTsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWlmIChmcmVlX3RkYl9kaXIpCisJCWZyZWUodGRiX2Rpcik7CisJZnJlZSh0ZGJfZmlsZSk7CitlcnI6CisJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQlfKCJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iKSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXJyY29kZV90CXJldHZhbCA9IDAsIHJldHZhbDIgPSAwLCBvcmlnX3JldHZhbCA9IDA7CisJaW50CQlleGl0X3ZhbHVlID0gRlNDS19PSzsKKwlleHQyX2ZpbHN5cwlmcyA9IDA7CisJaW9fbWFuYWdlcglpb19wdHI7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiOworCWNvbnN0IGNoYXIJKmxpYl92ZXJfZGF0ZTsKKwlpbnQJCW15X3ZlciwgbGliX3ZlcjsKKwllMmZzY2tfdAljdHg7CisJYmxrNjRfdAkJb3JpZ19zdXBlcmJsb2NrOworCXN0cnVjdCBwcm9ibGVtX2NvbnRleHQgcGN0eDsKKwlpbnQgZmxhZ3MsIHJ1bl9yZXN1bHQsIHdhc19jaGFuZ2VkOworCWludCBqb3VybmFsX3NpemU7CisJaW50IHN5c3ZhbCwgc3lzX3BhZ2Vfc2l6ZSA9IDQwOTY7CisJaW50IG9sZF9iaXRtYXBzOworCV9fdTMyIGZlYXR1cmVzWzNdOworCWNoYXIgKmNwOworCXVuc2lnbmVkIGludCBxdHlwZV9iaXRzID0gMDsKKwllbnVtIHF1b3RhX3R5cGUgcXR5cGU7CisKKwljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCXNpZ2NhdGNoZXJfc2V0dXAoKTsKKyNpZmRlZiBNVFJBQ0UKKwltdHJhY2UoKTsKKyNlbmRpZgorI2lmZGVmIE1DSEVDSworCW1jaGVjaygwKTsKKyNlbmRpZgorI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlteV92ZXIgPSBleHQyZnNfcGFyc2VfdmVyc2lvbl9zdHJpbmcobXlfdmVyX3N0cmluZyk7CisJbGliX3ZlciA9IGV4dDJmc19nZXRfbGlicmFyeV92ZXJzaW9uKDAsICZsaWJfdmVyX2RhdGUpOworCWlmIChteV92ZXIgPiBsaWJfdmVyKSB7CisJCWZwcmludGYoIHN0ZGVyciwgIiVzIiwKKwkJCSBfKCJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIpKTsKKwkJc2hvd192ZXJzaW9uX29ubHkrKzsKKwl9CisKKwlyZXR2YWwgPSBQUlMoYXJnYywgYXJndiwgJmN0eCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJlMmZzY2siLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIikpOworCQlleGl0KEZTQ0tfRVJST1IpOworCX0KKwlyZXNlcnZlX3N0ZGlvX2ZkcygpOworCisJc2V0X3VwX2xvZ2dpbmcoY3R4KTsKKwlpZiAoY3R4LT5sb2dmKSB7CisJCWludCBpOworCQlmcHV0cygiRTJmc2NrIHJ1bjogIiwgY3R4LT5sb2dmKTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgeworCQkJaWYgKGkpCisJCQkJZnB1dGMoJyAnLCBjdHgtPmxvZ2YpOworCQkJZnB1dHMoYXJndltpXSwgY3R4LT5sb2dmKTsKKwkJfQorCQlmcHV0YygnXG4nLCBjdHgtPmxvZ2YpOworCX0KKworCWluaXRfcmVzb3VyY2VfdHJhY2soJmN0eC0+Z2xvYmFsX3J0cmFjaywgTlVMTCk7CisJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikgfHwgc2hvd192ZXJzaW9uX29ubHkpCisJCWxvZ19lcnIoY3R4LCAiZTJmc2NrICVzICglcylcbiIsIG15X3Zlcl9zdHJpbmcsCisJCQkgbXlfdmVyX2RhdGUpOworCisJaWYgKHNob3dfdmVyc2lvbl9vbmx5KSB7CisJCWxvZ19lcnIoY3R4LCBfKCJcdFVzaW5nICVzLCAlc1xuIiksCisJCQllcnJvcl9tZXNzYWdlKEVYVDJfRVRfQkFTRSksIGxpYl92ZXJfZGF0ZSk7CisJCWV4aXQoRlNDS19PSyk7CisJfQorCisJY2hlY2tfbW91bnQoY3R4KTsKKworCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pICYmCisJICAgICEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9OTykgJiYKKwkgICAgIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1lFUykpIHsKKwkJaWYgKCFjdHgtPmludGVyYWN0aXZlKQorCQkJZmF0YWxfZXJyb3IoY3R4LAorCQkJCSAgICBfKCJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIikpOworCX0KKwljdHgtPnN1cGVyYmxvY2sgPSBjdHgtPnVzZV9zdXBlcmJsb2NrOworCisJZmxhZ3MgPSBFWFQyX0ZMQUdfU0tJUF9NTVA7CityZXN0YXJ0OgorI2lmZGVmIENPTkZJR19URVNUSU9fREVCVUcKKwlpZiAoZ2V0ZW52KCJURVNUX0lPX0ZMQUdTIikgfHwgZ2V0ZW52KCJURVNUX0lPX0JMT0NLIikpIHsKKwkJaW9fcHRyID0gdGVzdF9pb19tYW5hZ2VyOworCQl0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwl9IGVsc2UKKyNlbmRpZgorCQlpb19wdHIgPSB1bml4X2lvX21hbmFnZXI7CisJZmxhZ3MgfD0gRVhUMl9GTEFHX05PRlJFRV9PTl9FUlJPUjsKKwlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLCAib2xkX2JpdG1hcHMiLCAwLCAwLAorCQkJICAgICZvbGRfYml0bWFwcyk7CisJaWYgKCFvbGRfYml0bWFwcykKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHXzY0QklUUzsKKwlpZiAoKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUkVBRE9OTFkpID09IDApIHsKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHX1JXOworCQlpZiAoIShjdHgtPm1vdW50X2ZsYWdzICYgRVhUMl9NRl9JU1JPT1QgJiYKKwkJICAgICAgY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpKQorCQkJZmxhZ3MgfD0gRVhUMl9GTEFHX0VYQ0xVU0lWRTsKKwkJaWYgKChjdHgtPm1vdW50X2ZsYWdzICYgRVhUMl9NRl9SRUFET05MWSkgJiYKKwkJICAgIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX0ZPUkNFKSkKKwkJCWZsYWdzICY9IH5FWFQyX0ZMQUdfRVhDTFVTSVZFOworCX0KKworCWlmIChjdHgtPnVuZG9fZmlsZSkgeworCQlyZXR2YWwgPSBlMmZzY2tfc2V0dXBfdGRiKGN0eCwgJmlvX3B0cik7CisJCWlmIChyZXR2YWwpCisJCQlleGl0KEZTQ0tfRVJST1IpOworCX0KKworCWN0eC0+b3BlbmZzX2ZsYWdzID0gZmxhZ3M7CisJcmV0dmFsID0gdHJ5X29wZW5fZnMoY3R4LCBmbGFncywgaW9fcHRyLCAmZnMpOworCisJaWYgKCFjdHgtPnN1cGVyYmxvY2sgJiYgIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1BSRUVOKSAmJgorCSAgICAhKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TQl9TUEVDSUZJRUQpICYmCisJICAgICgocmV0dmFsID09IEVYVDJfRVRfQkFEX01BR0lDKSB8fAorCSAgICAgKHJldHZhbCA9PSBFWFQyX0VUX1NCX0NTVU1fSU5WQUxJRCkgfHwKKwkgICAgIChyZXR2YWwgPT0gRVhUMl9FVF9DT1JSVVBUX1NVUEVSQkxPQ0spIHx8CisJICAgICAoKHJldHZhbCA9PSAwKSAmJiAocmV0dmFsMiA9IGV4dDJmc19jaGVja19kZXNjKGZzKSkpKSkgeworCQlpZiAocmV0dmFsKSB7CisJCQlwY3R4LmVycmNvZGUgPSByZXR2YWw7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfT1BFTl9GQUlMRUQsICZwY3R4KTsKKwkJfQorCQlpZiAocmV0dmFsMikgeworCQkJcGN0eC5lcnJjb2RlID0gcmV0dmFsMjsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9DSEVDS19ERVNDX0ZBSUxFRCwgJnBjdHgpOworCQl9CisJCXBjdHguZXJyY29kZSA9IDA7CisJCWlmIChyZXR2YWwyID09IEVOT01FTSB8fCByZXR2YWwyID09IEVYVDJfRVRfTk9fTUVNT1JZKSB7CisJCQlyZXR2YWwgPSByZXR2YWwyOworCQkJZ290byBmYWlsdXJlOworCQl9CisJCWlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfTk9GUkVFX09OX0VSUk9SKSB7CisJCQlleHQyZnNfZnJlZShmcyk7CisJCQlmcyA9IE5VTEw7CisJCX0KKwkJaWYgKCFmcyB8fCAoZnMtPmdyb3VwX2Rlc2NfY291bnQgPiAxKSkgeworCQkJbG9nX291dChjdHgsIF8oIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIiksCisJCQkJY3R4LT5wcm9ncmFtX25hbWUsCisJCQkJcmV0dmFsID8gXygiU3VwZXJibG9jayBpbnZhbGlkLCIpIDoKKwkJCQlfKCJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIpKTsKKwkJCW9yaWdfc3VwZXJibG9jayA9IGN0eC0+c3VwZXJibG9jazsKKwkJCWdldF9iYWNrdXBfc2IoY3R4LCBmcywgY3R4LT5maWxlc3lzdGVtX25hbWUsIGlvX3B0cik7CisJCQlpZiAoZnMpCisJCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJCW9yaWdfcmV0dmFsID0gcmV0dmFsOworCQkJcmV0dmFsID0gdHJ5X29wZW5fZnMoY3R4LCBmbGFncywgaW9fcHRyLCAmZnMpOworCQkJaWYgKChvcmlnX3JldHZhbCA9PSAwKSAmJiByZXR2YWwgIT0gMCkgeworCQkJCWlmIChmcykKKwkJCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJCQlsb2dfb3V0KGN0eCwgXygiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSAiCisJCQkJCSAgICAgICAiYmFja3VwIGJsb2NrcyIpLAorCQkJCQljdHgtPnByb2dyYW1fbmFtZSwKKwkJCQkJZXJyb3JfbWVzc2FnZShyZXR2YWwpKTsKKwkJCQlsb2dfb3V0KGN0eCwgXygiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgIgorCQkJCQkgICAgICAgInN1cGVyYmxvY2tcbiIpLAorCQkJCQljdHgtPnByb2dyYW1fbmFtZSk7CisJCQkJY3R4LT5zdXBlcmJsb2NrID0gb3JpZ19zdXBlcmJsb2NrOworCQkJCXJldHZhbCA9IHRyeV9vcGVuX2ZzKGN0eCwgZmxhZ3MsIGlvX3B0ciwgJmZzKTsKKwkJCX0KKwkJfQorCX0KKwlpZiAoKChyZXR2YWwgPT0gRVhUMl9FVF9VTlNVUFBfRkVBVFVSRSkgfHwKKwkgICAgIChyZXR2YWwgPT0gRVhUMl9FVF9ST19VTlNVUFBfRkVBVFVSRSkpICYmCisJICAgIGZzICYmIGZzLT5zdXBlcikgeworCQlzYiA9IGZzLT5zdXBlcjsKKwkJZmVhdHVyZXNbMF0gPSAoc2ItPnNfZmVhdHVyZV9jb21wYXQgJgorCQkJICAgICAgIH5FWFQyX0xJQl9GRUFUVVJFX0NPTVBBVF9TVVBQKTsKKwkJZmVhdHVyZXNbMV0gPSAoc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCAmCisJCQkgICAgICAgfkVYVDJfTElCX0ZFQVRVUkVfSU5DT01QQVRfU1VQUCk7CisJCWZlYXR1cmVzWzJdID0gKHNiLT5zX2ZlYXR1cmVfcm9fY29tcGF0ICYKKwkJCSAgICAgICB+RVhUMl9MSUJfRkVBVFVSRV9ST19DT01QQVRfU1VQUCk7CisJCWlmIChmZWF0dXJlc1swXSB8fCBmZWF0dXJlc1sxXSB8fCBmZWF0dXJlc1syXSkKKwkJCWdvdG8gcHJpbnRfdW5zdXBwX2ZlYXR1cmVzOworCX0KK2ZhaWx1cmU6CisJaWYgKHJldHZhbCkgeworCQlpZiAob3JpZ19yZXR2YWwpCisJCQlyZXR2YWwgPSBvcmlnX3JldHZhbDsKKwkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLCBfKCJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIpLAorCQkJY3R4LT5maWxlc3lzdGVtX25hbWUpOworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfUkVWX1RPT19ISUdIKSB7CisJCQlsb2dfb3V0KGN0eCwgIiVzIiwKKwkJCQlfKCJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5ICIKKwkJCQkgICJ0b28gaGlnaCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKKwkJCQkgICIoT3IgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayAiCisJCQkJICAiaXMgY29ycnVwdClcblxuIikpOworCQkJZml4X3Byb2JsZW0oY3R4LCBQUl8wX1NCX0NPUlJVUFQsICZwY3R4KTsKKwkJfSBlbHNlIGlmIChyZXR2YWwgPT0gRVhUMl9FVF9TSE9SVF9SRUFEKQorCQkJbG9nX291dChjdHgsICIlcyIsCisJCQkJXygiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIpKTsKKwkJZWxzZSBpZiAoKHJldHZhbCA9PSBFUEVSTSkgfHwgKHJldHZhbCA9PSBFQUNDRVMpKQorCQkJbG9nX291dChjdHgsIF8oIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSAiCisJCQkJICAgICAgICJmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIpLAorCQkJICAgICAgIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSA/CisJCQkgICAgICAgInIvbyIgOiAici93Iik7CisJCWVsc2UgaWYgKHJldHZhbCA9PSBFTlhJTykKKwkJCWxvZ19vdXQoY3R4LCAiJXMiLAorCQkJCV8oIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIpKTsKKwkJZWxzZSBpZiAocmV0dmFsID09IEVCVVNZKQorCQkJbG9nX291dChjdHgsICIlcyIsIF8oIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgIgorCQkJCQkgImV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIpKTsKKwkJZWxzZSBpZiAocmV0dmFsID09IEVOT0VOVCkKKwkJCWxvZ19vdXQoY3R4LCAiJXMiLAorCQkJCV8oIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iKSk7CisjaWZkZWYgRVJPRlMKKwkJZWxzZSBpZiAocmV0dmFsID09IEVST0ZTKQorCQkJbG9nX291dChjdHgsICIlcyIsIF8oIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlICIKKwkJCQkJICAgICAiLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisJCQkJCSAgICAgImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iKSk7CisjZW5kaWYKKwkJZWxzZSB7CisJCQlmaXhfcHJvYmxlbShjdHgsIFBSXzBfU0JfQ09SUlVQVCwgJnBjdHgpOworCQkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9NQUdJQykKKwkJCQljaGVja19wbGF1c2liaWxpdHkoY3R4LT5maWxlc3lzdGVtX25hbWUsCisJCQkJCQkgICBDSEVDS19GU19FWElTVCwgTlVMTCk7CisJCX0KKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9CisJLyoKKwkgKiBXZSBvbmx5IHVwZGF0ZSB0aGUgbWFzdGVyIHN1cGVyYmxvY2sgYmVjYXVzZSAoYSkgcGFyYW5vaWE7CisJICogd2UgZG9uJ3Qgd2FudCB0byBjb3JydXB0IHRoZSBiYWNrdXAgc3VwZXJibG9ja3MsIGFuZCAoYikgd2UKKwkgKiBkb24ndCBuZWVkIHRvIHVwZGF0ZSB0aGUgbW91bnQgY291bnQgYW5kIGxhc3QgY2hlY2tlZAorCSAqIGZpZWxkcyBpbiB0aGUgYmFja3VwIHN1cGVyYmxvY2sgKHRoZSBrZXJuZWwgZG9lc24ndCB1cGRhdGUKKwkgKiB0aGUgYmFja3VwIHN1cGVyYmxvY2tzIGFueXdheSkuICBXaXRoIG5ld2VyIHZlcnNpb25zIG9mIHRoZQorCSAqIGxpYnJhcnkgdGhpcyBmbGFnIGlzIHNldCBieSBleHQyZnNfb3BlbjIoKSwgYnV0IHdlIHNldCB0aGlzCisJICogaGVyZSBqdXN0IHRvIGJlIHN1cmUuICAoTm8sIHdlIGRvbid0IHN1cHBvcnQgZTJmc2NrIHJ1bm5pbmcKKwkgKiB3aXRoIHNvbWUgb3RoZXIgbGliZXh0MmZzIHRoYW4gdGhlIG9uZSB0aGF0IGl0IHdhcyBzaGlwcGVkCisJICogd2l0aCwgYnV0IGp1c3QgaW4gY2FzZS4uLi4pCisJICovCisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKworCWlmICghKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19HT1RfREVWU0laRSkpIHsKKwkJX191MzIgYmxvY2tzaXplID0gRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcik7CisJCWludCBuZWVkX3Jlc3RhcnQgPSAwOworCisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19nZXRfZGV2aWNlX3NpemUyKGN0eC0+ZmlsZXN5c3RlbV9uYW1lLAorCQkJCQkJICAgICAgIGJsb2Nrc2l6ZSwKKwkJCQkJCSAgICAgICAmY3R4LT5udW1fYmxvY2tzKTsKKwkJLyoKKwkJICogVGhlIGZsb3BweSBkcml2ZXIgcmVmdXNlcyB0byBhbGxvdyBhbnlvbmUgZWxzZSB0bworCQkgKiBvcGVuIHRoZSBkZXZpY2UgaWYgaGFzIGJlZW4gb3BlbmVkIHdpdGggT19FWENMOworCQkgKiB0aGlzIGlzIHVubGlrZSBvdGhlciBibG9jayBkZXZpY2UgZHJpdmVycyBpbiBMaW51eC4KKwkJICogVG8gaGFuZGxlIHRoaXMsIHdlIGNsb3NlIHRoZSBmaWxlc3lzdGVtIGFuZCB0aGVuCisJCSAqIHJlb3BlbiB0aGUgZmlsZXN5c3RlbSBhZnRlciB3ZSBnZXQgdGhlIGRldmljZSBzaXplLgorCQkgKi8KKwkJaWYgKHBjdHguZXJyY29kZSA9PSBFQlVTWSkgeworCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJCW5lZWRfcmVzdGFydCsrOworCQkJcGN0eC5lcnJjb2RlID0KKwkJCQlleHQyZnNfZ2V0X2RldmljZV9zaXplMihjdHgtPmZpbGVzeXN0ZW1fbmFtZSwKKwkJCQkJCQlibG9ja3NpemUsCisJCQkJCQkJJmN0eC0+bnVtX2Jsb2Nrcyk7CisJCX0KKwkJaWYgKHBjdHguZXJyY29kZSA9PSBFWFQyX0VUX1VOSU1QTEVNRU5URUQpCisJCQljdHgtPm51bV9ibG9ja3MgPSAwOworCQllbHNlIGlmIChwY3R4LmVycmNvZGUpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9HRVRTSVpFX0VSUk9SLCAmcGN0eCk7CisJCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0FCT1JUOworCQkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwkJfQorCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0dPVF9ERVZTSVpFOworCQlpZiAobmVlZF9yZXN0YXJ0KQorCQkJZ290byByZXN0YXJ0OworCX0KKworCWN0eC0+ZnMgPSBmczsKKwlmcy0+bm93ID0gY3R4LT5ub3c7CisJc2IgPSBmcy0+c3VwZXI7CisKKwlpZiAoc2ItPnNfcmV2X2xldmVsID4gRTJGU0NLX0NVUlJFTlRfUkVWKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIEVYVDJfRVRfUkVWX1RPT19ISUdILAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwKKwkJCWN0eC0+ZmlsZXN5c3RlbV9uYW1lKTsKKwlnZXRfbmV3ZXI6CisJCWZhdGFsX2Vycm9yKGN0eCwgXygiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIikpOworCX0KKworCS8qCisJICogU2V0IHRoZSBkZXZpY2UgbmFtZSwgd2hpY2ggaXMgdXNlZCB3aGVuZXZlciB3ZSBwcmludCBlcnJvcgorCSAqIG9yIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgdG8gdGhlIHVzZXIuCisJICovCisJaWYgKGN0eC0+ZGV2aWNlX25hbWUgPT0gMCAmJgorCSAgICAoc2ItPnNfdm9sdW1lX25hbWVbMF0gIT0gMCkpIHsKKwkJY3R4LT5kZXZpY2VfbmFtZSA9IHN0cmluZ19jb3B5KGN0eCwgc2ItPnNfdm9sdW1lX25hbWUsCisJCQkJCSAgICAgICBzaXplb2Yoc2ItPnNfdm9sdW1lX25hbWUpKTsKKwl9CisJaWYgKGN0eC0+ZGV2aWNlX25hbWUgPT0gMCkKKwkJY3R4LT5kZXZpY2VfbmFtZSA9IHN0cmluZ19jb3B5KGN0eCwgY3R4LT5maWxlc3lzdGVtX25hbWUsIDApOworCWZvciAoY3AgPSBjdHgtPmRldmljZV9uYW1lOyAqY3A7IGNwKyspCisJCWlmIChpc3NwYWNlKCpjcCkgfHwgKmNwID09ICc6JykKKwkJCSpjcCA9ICdfJzsKKworCWVoYW5kbGVyX2luaXQoZnMtPmlvKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbW1wKGZzLT5zdXBlcikgJiYKKwkgICAgKGZsYWdzICYgRVhUMl9GTEFHX1NLSVBfTU1QKSkgeworCQlpZiAoZTJmc2NrX2NoZWNrX21tcChmcywgY3R4KSkKKwkJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisKKwkJLyoKKwkJICogUmVzdGFydCBpbiBvcmRlciB0byByZW9wZW4gZnMgYnV0IHRoaXMgdGltZSBzdGFydCBtbXAuCisJCSAqLworCQlleHQyZnNfY2xvc2VfZnJlZSgmY3R4LT5mcyk7CisJCWZsYWdzICY9IH5FWFQyX0ZMQUdfU0tJUF9NTVA7CisJCWdvdG8gcmVzdGFydDsKKwl9CisKKwlpZiAoY3R4LT5sb2dmKQorCQlmcHJpbnRmKGN0eC0+bG9nZiwgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIsCisJCQllMnBfdXVpZDJzdHIoc2ItPnNfdXVpZCkpOworCisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGV4dDMgc3VwZXJibG9jayBmaWVsZHMgYXJlIGNvbnNpc3RlbnQuCisJICovCisJaWYgKChjdHgtPm1vdW50X2ZsYWdzICYgKEVYVDJfTUZfTU9VTlRFRCB8IEVYVDJfTUZfQlVTWSkpID09IDApIHsKKwkJcmV0dmFsID0gZTJmc2NrX2NoZWNrX2V4dDNfam91cm5hbChjdHgpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkJXygid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiKSwKKwkJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJCWZhdGFsX2Vycm9yKGN0eCwKKwkJCQlfKCJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIikpOworCQl9CisJfQorCisJLyoKKwkgKiBDaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byBkbyBleHQzLXN0eWxlIHJlY292ZXJ5LiAgSWYgc28sCisJICogZG8gaXQsIGFuZCB0aGVuIHJlc3RhcnQgdGhlIGZzY2suCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KHNiKSkgeworCQlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9SRUFET05MWSkgeworCQkJbG9nX291dChjdHgsICIlcyIsCisJCQkJXygiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlICIKKwkJCQkgICJkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtIGNoZWNrLlxuIikpOworCQkJaW9fY2hhbm5lbF9mbHVzaChjdHgtPmZzLT5pbyk7CisJCX0gZWxzZSB7CisJCQlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1JFU1RBUlRFRCkgeworCQkJCS8qCisJCQkJICogV2hvb3BzLCB3ZSBhdHRlbXB0ZWQgdG8gcnVuIHRoZQorCQkJCSAqIGpvdXJuYWwgdHdpY2UuICBUaGlzIHNob3VsZCBuZXZlcgorCQkJCSAqIGhhcHBlbiwgdW5sZXNzIHRoZSBoYXJkd2FyZSBvcgorCQkJCSAqIGRldmljZSBkcml2ZXIgaXMgYmVpbmcgYm9ndXMuCisJCQkJICovCisJCQkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzICIKKwkJCQkJICAib24gJXNcbiIpLCBjdHgtPmRldmljZV9uYW1lKTsKKwkJCQlmYXRhbF9lcnJvcihjdHgsIDApOworCQkJfQorCQkJcmV0dmFsID0gZTJmc2NrX3J1bl9leHQzX2pvdXJuYWwoY3R4KTsKKwkJCWlmIChyZXR2YWwgPT0gRUZTQkFEQ1JDKSB7CisJCQkJbG9nX291dChjdHgsIF8oIkpvdXJuYWwgY2hlY2tzdW0gZXJyb3IgIgorCQkJCQkgICAgICAgImZvdW5kIGluICVzXG4iKSwKKwkJCQkJY3R4LT5kZXZpY2VfbmFtZSk7CisJCQl9IGVsc2UgaWYgKHJldHZhbCA9PSBFRlNDT1JSVVBURUQpIHsKKwkJCQlsb2dfb3V0KGN0eCwgXygiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIpLAorCQkJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJCX0gZWxzZSBpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycihjdHgtPnByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCV8oIndoaWxlIHJlY292ZXJpbmcgam91cm5hbCBvZiAlcyIpLAorCQkJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJCX0KKwkJCWV4dDJmc19jbG9zZV9mcmVlKCZjdHgtPmZzKTsKKwkJCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUkVTVEFSVEVEOworCQkJZ290byByZXN0YXJ0OworCQl9CisJfQorCisJLyoKKwkgKiBDaGVjayBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBmZWF0dXJlIHNldHMuICBXZSBuZWVkIHRvCisJICogYmUgbW9yZSBzdHJpbmdlbnQgdGhhbiBleHQyZnNfb3BlbigpLgorCSAqLworCWZlYXR1cmVzWzBdID0gc2ItPnNfZmVhdHVyZV9jb21wYXQgJiB+RVhUMl9MSUJfRkVBVFVSRV9DT01QQVRfU1VQUDsKKwlmZWF0dXJlc1sxXSA9IHNiLT5zX2ZlYXR1cmVfaW5jb21wYXQgJiB+RVhUMl9MSUJfRkVBVFVSRV9JTkNPTVBBVF9TVVBQOworCWZlYXR1cmVzWzJdID0gKHNiLT5zX2ZlYXR1cmVfcm9fY29tcGF0ICYKKwkJICAgICAgIH5FWFQyX0xJQl9GRUFUVVJFX1JPX0NPTVBBVF9TVVBQKTsKK3ByaW50X3Vuc3VwcF9mZWF0dXJlczoKKwlpZiAoZmVhdHVyZXNbMF0gfHwgZmVhdHVyZXNbMV0gfHwgZmVhdHVyZXNbMl0pIHsKKwkJaW50CWksIGo7CisJCV9fdTMyCSptYXNrID0gZmVhdHVyZXMsIG07CisKKwkJbG9nX2VycihjdHgsIF8oIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIpLAorCQkJY3R4LT5maWxlc3lzdGVtX25hbWUpOworCisJCWZvciAoaT0wOyBpIDwzOyBpKyssbWFzaysrKSB7CisJCQlmb3IgKGo9MCxtPTE7IGogPCAzMjsgaisrLCBtPDw9MSkgeworCQkJCWlmICgqbWFzayAmIG0pCisJCQkJCWxvZ19lcnIoY3R4LCAiICVzIiwKKwkJCQkJCWUycF9mZWF0dXJlMnN0cmluZyhpLCBtKSk7CisJCQl9CisJCX0KKwkJbG9nX2VycihjdHgsICJcbiIpOworCQlnb3RvIGdldF9uZXdlcjsKKwl9CisKKwkvKgorCSAqIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHNwZWNpZmljIHN1cGVyYmxvY2ssIHByZXN1bWFibHkgdGhlCisJICogbWFzdGVyIHN1cGVyYmxvY2sgaGFzIGJlZW4gdHJhc2hlZC4gIFNvIHdlIG1hcmsgdGhlCisJICogc3VwZXJibG9jayBhcyBkaXJ0eSwgc28gaXQgY2FuIGJlIHdyaXR0ZW4gb3V0LgorCSAqLworCWlmIChjdHgtPnN1cGVyYmxvY2sgJiYKKwkgICAgIShjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX1JFQURPTkxZKSkKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCisJLyoKKwkgKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBmaWxlc3lzdGVtIGJsb2NrcyBwZXIgcGFnZXNpemUuICBJZgorCSAqIGZzLT5ibG9ja3NpemUgPiBwYWdlX3NpemUsIHNldCB0aGUgbnVtYmVyIG9mIGJsb2NrcyBwZXIKKwkgKiBwYWdlc2l6ZSB0byAxIHRvIGF2b2lkIGRpdmlzaW9uIGJ5IHplcm8gZXJyb3JzLgorCSAqLworI2lmZGVmIF9TQ19QQUdFU0laRQorCXN5c3ZhbCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKwlpZiAoc3lzdmFsID4gMCkKKwkJc3lzX3BhZ2Vfc2l6ZSA9IHN5c3ZhbDsKKyNlbmRpZiAvKiBfU0NfUEFHRVNJWkUgKi8KKwljdHgtPmJsb2Nrc19wZXJfcGFnZSA9IHN5c19wYWdlX3NpemUgLyBmcy0+YmxvY2tzaXplOworCWlmIChjdHgtPmJsb2Nrc19wZXJfcGFnZSA9PSAwKQorCQljdHgtPmJsb2Nrc19wZXJfcGFnZSA9IDE7CisKKwlpZiAoY3R4LT5zdXBlcmJsb2NrKQorCQlzZXRfbGF0Y2hfZmxhZ3MoUFJfTEFUQ0hfUkVMT0MsIFBSTF9MQVRDSEVELCAwKTsKKwlleHQyZnNfbWFya192YWxpZChmcyk7CisJY2hlY2tfc3VwZXJfYmxvY2soY3R4KTsKKwlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NJR05BTF9NQVNLKQorCQlmYXRhbF9lcnJvcihjdHgsIDApOworCWNoZWNrX2lmX3NraXAoY3R4KTsKKwljaGVja19yZXNpemVfaW5vZGUoY3R4KTsKKwlpZiAoYmFkX2Jsb2Nrc19maWxlKQorCQlyZWFkX2JhZF9ibG9ja3NfZmlsZShjdHgsIGJhZF9ibG9ja3NfZmlsZSwgcmVwbGFjZV9iYWRfYmxvY2tzKTsKKwllbHNlIGlmIChjZmxhZykKKwkJcmVhZF9iYWRfYmxvY2tzX2ZpbGUoY3R4LCAwLCAha2VlcF9iYWRfYmxvY2tzKTsgLyogVGVzdCBkaXNrICovCisJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TSUdOQUxfTUFTSykKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKworCS8qCisJICogTWFyayB0aGUgc3lzdGVtIGFzIHZhbGlkLCAndGlsIHByb3ZlbiBvdGhlcndpc2UKKwkgKi8KKwlleHQyZnNfbWFya192YWxpZChmcyk7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iYl9pbm9kZShmcywgJmZzLT5iYWRibG9ja3MpOworCWlmIChyZXR2YWwpIHsKKwkJbG9nX291dChjdHgsIF8oIiVzOiAlcyB3aGlsZSByZWFkaW5nIGJhZCBibG9ja3MgaW5vZGVcbiIpLAorCQkJY3R4LT5wcm9ncmFtX25hbWUsIGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCXByZWVuaGFsdChjdHgpOworCQlsb2dfb3V0KGN0eCwgIiVzIiwgXygiVGhpcyBkb2Vzbid0IGJvZGUgd2VsbCwgIgorCQkJCSAgICAgImJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIpKTsKKwl9CisKKwkvKgorCSAqIFNhdmUgdGhlIGpvdXJuYWwgc2l6ZSBpbiBtZWdhYnl0ZXMuCisJICogVHJ5IGFuZCB1c2UgdGhlIGpvdXJuYWwgc2l6ZSBmcm9tIHRoZSBiYWNrdXAgZWxzZSBsZXQgZTJmc2NrCisJICogZmluZCB0aGUgZGVmYXVsdCBqb3VybmFsIHNpemUuCisJICovCisJaWYgKHNiLT5zX2pubF9iYWNrdXBfdHlwZSA9PSBFWFQzX0pOTF9CQUNLVVBfQkxPQ0tTKQorCQlqb3VybmFsX3NpemUgPSAoc2ItPnNfam5sX2Jsb2Nrc1sxNV0gPDwgKDMyIC0gMjApKSB8CisJCQkgICAgICAgKHNiLT5zX2pubF9ibG9ja3NbMTZdID4+IDIwKTsKKwllbHNlCisJCWpvdXJuYWxfc2l6ZSA9IC0xOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9xdW90YShzYikpIHsKKwkJLyogUXVvdGFzIHdlcmUgZW5hYmxlZC4gRG8gcXVvdGEgYWNjb3VudGluZyBkdXJpbmcgZnNjay4gKi8KKwkJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKSB7CisJCQlpZiAoKnF1b3RhX3NiX2ludW1wKHNiLCBxdHlwZSkgIT0gMCkKKwkJCQlxdHlwZV9iaXRzIHw9IDEgPDwgcXR5cGU7CisJCX0KKworCQljbGVhcl9wcm9ibGVtX2NvbnRleHQoJnBjdHgpOworCQlwY3R4LmVycmNvZGUgPSBxdW90YV9pbml0X2NvbnRleHQoJmN0eC0+cWN0eCwgY3R4LT5mcywKKwkJCQkJCSAgcXR5cGVfYml0cyk7CisJCWlmIChwY3R4LmVycmNvZGUpIHsKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9RVU9UQV9JTklUX0NUWCwgJnBjdHgpOworCQkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwkJfQorCX0KKworCXJ1bl9yZXN1bHQgPSBlMmZzY2tfcnVuKGN0eCk7CisJZTJmc2NrX2NsZWFyX3Byb2diYXIoY3R4KTsKKworCWlmICghY3R4LT5pbnZhbGlkX2JpdG1hcHMgJiYKKwkgICAgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19KT1VSTkFMX0lOT0RFKSkgeworCQlpZiAoZml4X3Byb2JsZW0oY3R4LCBQUl82X1JFQ1JFQVRFX0pPVVJOQUwsICZwY3R4KSkgeworCQkJaWYgKGpvdXJuYWxfc2l6ZSA8IDEwMjQpCisJCQkJam91cm5hbF9zaXplID0gZXh0MmZzX2RlZmF1bHRfam91cm5hbF9zaXplKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSk7CisJCQlpZiAoam91cm5hbF9zaXplIDwgMCkgeworCQkJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWwoZnMtPnN1cGVyKTsKKwkJCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwkJCQlsb2dfb3V0KGN0eCwgIiVzOiBDb3VsZG4ndCBkZXRlcm1pbmUgIgorCQkJCQkiam91cm5hbCBzaXplXG4iLCBjdHgtPnByb2dyYW1fbmFtZSk7CisJCQkJZ290byBub19qb3VybmFsOworCQkJfQorCQkJbG9nX291dChjdHgsIF8oIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIpLAorCQkJICAgICAgIGpvdXJuYWxfc2l6ZSk7CisJCQlmZmx1c2goc3Rkb3V0KTsKKwkJCXJldHZhbCA9IGV4dDJmc19hZGRfam91cm5hbF9pbm9kZShmcywKKwkJCQkJCQkgIGpvdXJuYWxfc2l6ZSwgMCk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJbG9nX291dChjdHgsICIlczogd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAiCisJCQkJCSJqb3VybmFsXG4iLCBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQkJCWdvdG8gbm9fam91cm5hbDsKKwkJCX0KKwkJCWxvZ19vdXQoY3R4LCAiJXMiLCBfKCIgRG9uZS5cbiIpKTsKKwkJCWxvZ19vdXQoY3R4LCAiJXMiLAorCQkJCV8oIlxuKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqXG4iKSk7CisJCX0KKwl9Citub19qb3VybmFsOgorCisJaWYgKHJ1bl9yZXN1bHQgJiBFMkZfRkxBR19BQk9SVCkgeworCQlmYXRhbF9lcnJvcihjdHgsIF8oImFib3J0ZWQiKSk7CisJfSBlbHNlIGlmIChydW5fcmVzdWx0ICYgRTJGX0ZMQUdfQ0FOQ0VMKSB7CisJCWxvZ19vdXQoY3R4LCBfKCIlczogZTJmc2NrIGNhbmNlbGVkLlxuIiksIGN0eC0+ZGV2aWNlX25hbWUgPworCQkJY3R4LT5kZXZpY2VfbmFtZSA6IGN0eC0+ZmlsZXN5c3RlbV9uYW1lKTsKKwkJZXhpdF92YWx1ZSB8PSBGU0NLX0NBTkNFTEVEOworCX0gZWxzZSBpZiAoY3R4LT5xY3R4ICYmICFjdHgtPmludmFsaWRfYml0bWFwcykgeworCQlpbnQgbmVlZHNfd3JpdGVvdXQ7CisKKwkJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKSB7CisJCQlpZiAoKCgxIDw8IHF0eXBlKSAmIHF0eXBlX2JpdHMpID09IDApCisJCQkJY29udGludWU7CisJCQluZWVkc193cml0ZW91dCA9IDA7CisJCQlwY3R4Lm51bSA9IHF0eXBlOworCQkJcmV0dmFsID0gcXVvdGFfY29tcGFyZV9hbmRfdXBkYXRlKGN0eC0+cWN0eCwgcXR5cGUsCisJCQkJCQkJICAmbmVlZHNfd3JpdGVvdXQpOworCQkJaWYgKChyZXR2YWwgfHwgbmVlZHNfd3JpdGVvdXQpICYmCisJCQkgICAgZml4X3Byb2JsZW0oY3R4LCBQUl82X1VQREFURV9RVU9UQVMsICZwY3R4KSkgeworCQkJCXBjdHguZXJyY29kZSA9IHF1b3RhX3dyaXRlX2lub2RlKGN0eC0+cWN0eCwKKwkJCQkJCQkJIDEgPDwgcXR5cGUpOworCQkJCWlmIChwY3R4LmVycmNvZGUpCisJCQkJCSh2b2lkKSBmaXhfcHJvYmxlbShjdHgsCisJCQkJCQlQUl82X1dSSVRFX1FVT1RBUywgJnBjdHgpOworCQkJfQorCQl9CisJCXF1b3RhX3JlbGVhc2VfY29udGV4dCgmY3R4LT5xY3R4KTsKKwl9CisKKwlpZiAocnVuX3Jlc3VsdCA9PSBFMkZfRkxBR19SRVNUQVJUKSB7CisJCWxvZ19vdXQoY3R4LCAiJXMiLAorCQkJXygiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iKSk7CisJCXJldHZhbCA9IGUyZnNja19yZXNldF9jb250ZXh0KGN0eCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIpKTsKKwkJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJCX0KKwkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmN0eC0+ZnMpOworCQlnb3RvIHJlc3RhcnQ7CisJfQorCisjaWZkZWYgTVRSQUNFCisJbXRyYWNlX3ByaW50KCJDbGVhbnVwIik7CisjZW5kaWYKKwl3YXNfY2hhbmdlZCA9IGV4dDJmc190ZXN0X2NoYW5nZWQoZnMpOworCWlmICghKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19SVU5fUkVUVVJOKSAmJgorCSAgICAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUkVBRE9OTFkpKSB7CisJCWlmIChleHQyZnNfdGVzdF92YWxpZChmcykpIHsKKwkJCWlmICghKHNiLT5zX3N0YXRlICYgRVhUMl9WQUxJRF9GUykpCisJCQkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOworCQkJc2ItPnNfc3RhdGUgPSBFWFQyX1ZBTElEX0ZTOworCQkJaWYgKGNoZWNrX2JhY2t1cF9zdXBlcl9ibG9jayhjdHgpKQorCQkJCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCQl9IGVsc2UKKwkJCXNiLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCQlpZiAoIShjdHgtPmZsYWdzICYgRTJGX0ZMQUdfVElNRV9JTlNBTkUpKQorCQkJc2ItPnNfbGFzdGNoZWNrID0gY3R4LT5ub3c7CisJCXNiLT5zX21udF9jb3VudCA9IDA7CisJCW1lbXNldCgoKGNoYXIgKikgc2IpICsgRVhUNF9TX0VSUl9TVEFSVCwgMCwgRVhUNF9TX0VSUl9MRU4pOworCQlwY3R4LmVycmNvZGUgPSBleHQyZnNfc2V0X2dkdF9jc3VtKGN0eC0+ZnMpOworCQlpZiAocGN0eC5lcnJjb2RlKQorCQkJZml4X3Byb2JsZW0oY3R4LCBQUl82X1NFVF9CR19DSEVDS1NVTSwgJnBjdHgpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCisJZTJmc2NrX3dyaXRlX2JpdG1hcHMoY3R4KTsKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0RJUlRZKSB7CisJCXBjdHguZXJyY29kZSA9IGV4dDJmc19mbHVzaChjdHgtPmZzKTsKKwkJaWYgKHBjdHguZXJyY29kZSkKKwkJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNl9GTFVTSF9GSUxFU1lTVEVNLCAmcGN0eCk7CisJfQorCXBjdHguZXJyY29kZSA9IGlvX2NoYW5uZWxfZmx1c2goY3R4LT5mcy0+aW8pOworCWlmIChwY3R4LmVycmNvZGUpCisJCWZpeF9wcm9ibGVtKGN0eCwgUFJfNl9JT19GTFVTSCwgJnBjdHgpOworCisJaWYgKHdhc19jaGFuZ2VkKSB7CisJCWV4aXRfdmFsdWUgfD0gRlNDS19OT05ERVNUUlVDVDsKKwkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpCisJCQlsb2dfb3V0KGN0eCwgXygiXG4lczogKioqKiogRklMRSBTWVNURU0gV0FTICIKKwkJCQkgICAgICAgIk1PRElGSUVEICoqKioqXG4iKSwKKwkJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJaWYgKGN0eC0+bW91bnRfZmxhZ3MgJiBFWFQyX01GX0lTUk9PVCkgeworCQkJbG9nX291dChjdHgsIF8oIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iKSwKKwkJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJCWV4aXRfdmFsdWUgfD0gRlNDS19SRUJPT1Q7CisJCX0KKwl9CisJaWYgKCFleHQyZnNfdGVzdF92YWxpZChmcykgfHwKKwkgICAgKChleGl0X3ZhbHVlICYgRlNDS19DQU5DRUxFRCkgJiYKKwkgICAgIChzYi0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpKSkgeworCQlsb2dfb3V0KGN0eCwgXygiXG4lczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyAiCisJCQkgICAgICAgImVycm9ycyAqKioqKioqKioqXG5cbiIpLCBjdHgtPmRldmljZV9uYW1lKTsKKwkJZXhpdF92YWx1ZSB8PSBGU0NLX1VOQ09SUkVDVEVEOworCQlleGl0X3ZhbHVlICY9IH5GU0NLX05PTkRFU1RSVUNUOworCX0KKwlpZiAoZXhpdF92YWx1ZSAmIEZTQ0tfQ0FOQ0VMRUQpIHsKKwkJaW50CWFsbG93X2NhbmNlbGxhdGlvbjsKKworCQlwcm9maWxlX2dldF9ib29sZWFuKGN0eC0+cHJvZmlsZSwgIm9wdGlvbnMiLAorCQkJCSAgICAiYWxsb3dfY2FuY2VsbGF0aW9uIiwgMCwgMCwKKwkJCQkgICAgJmFsbG93X2NhbmNlbGxhdGlvbik7CisJCWV4aXRfdmFsdWUgJj0gfkZTQ0tfTk9OREVTVFJVQ1Q7CisJCWlmIChhbGxvd19jYW5jZWxsYXRpb24gJiYgZXh0MmZzX3Rlc3RfdmFsaWQoZnMpICYmCisJCSAgICAoc2ItPnNfc3RhdGUgJiBFWFQyX1ZBTElEX0ZTKSAmJgorCQkgICAgIShzYi0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpKQorCQkJZXhpdF92YWx1ZSA9IDA7CisJfSBlbHNlCisJCXNob3dfc3RhdHMoY3R4KTsKKworCXByaW50X3Jlc291cmNlX3RyYWNrKGN0eCwgTlVMTCwgJmN0eC0+Z2xvYmFsX3J0cmFjaywgY3R4LT5mcy0+aW8pOworCisJZXh0MmZzX2Nsb3NlX2ZyZWUoJmN0eC0+ZnMpOworCWZyZWUoY3R4LT5qb3VybmFsX25hbWUpOworCisJZTJmc2NrX2ZyZWVfY29udGV4dChjdHgpOworCXJlbW92ZV9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJcmVtb3ZlX2Vycm9yX3RhYmxlKCZldF9wcm9mX2Vycm9yX3RhYmxlKTsKKwlyZXR1cm4gZXhpdF92YWx1ZTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9lMmZzY2svdXRpbC5jIGIvZTJmc3Byb2dzL2UyZnNjay91dGlsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyMTdlNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzY2svdXRpbC5jCkBAIC0wLDAgKzEsODcyIEBACisvKgorICogdXRpbC5jIC0tLSBtaXNjZWxsYW5lb3VzIHV0aWxpdGllcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpZmRlZiBfX2xpbnV4X18KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0NPTklPX0gKKyN1bmRlZiBIQVZFX1RFUk1JT1NfSAorI2luY2x1ZGUgPGNvbmlvLmg+CisjZGVmaW5lIHJlYWRfYV9jaGFyKCkJZ2V0Y2goKQorI2Vsc2UKKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01BTExPQ19ICisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJlMmZzY2suaCIKKworZXh0ZXJuIGUyZnNja190IGUyZnNja19nbG9iYWxfY3R4OyAgIC8qIFRyeSB5b3VyIHZlcnkgYmVzdCBub3QgdG8gdXNlIHRoaXMhICovCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKwordm9pZCBmYXRhbF9lcnJvcihlMmZzY2tfdCBjdHgsIGNvbnN0IGNoYXIgKm1zZykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGN0eC0+ZnM7CisJaW50IGV4aXRfdmFsdWUgPSBGU0NLX0VSUk9SOworCisJaWYgKG1zZykKKwkJZnByaW50ZiAoc3RkZXJyLCAiZTJmc2NrOiAlc1xuIiwgbXNnKTsKKwlpZiAoIWZzKQorCQlnb3RvIG91dDsKKwlpZiAoZnMtPmlvICYmIGZzLT5zdXBlcikgeworCQlleHQyZnNfbW1wX3N0b3AoY3R4LT5mcyk7CisJCWlmIChjdHgtPmZzLT5pby0+bWFnaWMgPT0gRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKQorCQkJaW9fY2hhbm5lbF9mbHVzaChjdHgtPmZzLT5pbyk7CisJCWVsc2UKKwkJCWxvZ19lcnIoY3R4LCAiZTJmc2NrOiBpbyBtYW5hZ2VyIG1hZ2ljIGJhZCFcbiIpOworCX0KKwlpZiAoZXh0MmZzX3Rlc3RfY2hhbmdlZChmcykpIHsKKwkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOworCQlsb2dfb3V0KGN0eCwgXygiXG4lczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iKSwKKwkJCWN0eC0+ZGV2aWNlX25hbWUpOworCQlpZiAoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfSVNST09UKQorCQkJZXhpdF92YWx1ZSB8PSBGU0NLX1JFQk9PVDsKKwl9CisJaWYgKCFleHQyZnNfdGVzdF92YWxpZChmcykpIHsKKwkJbG9nX291dChjdHgsIF8oIlxuJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgIgorCQkJICAgICAgICJlcnJvcnMgKioqKioqKioqKlxuXG4iKSwgY3R4LT5kZXZpY2VfbmFtZSk7CisJCWV4aXRfdmFsdWUgfD0gRlNDS19VTkNPUlJFQ1RFRDsKKwkJZXhpdF92YWx1ZSAmPSB+RlNDS19OT05ERVNUUlVDVDsKKwl9CitvdXQ6CisJY3R4LT5mbGFncyB8PSBFMkZfRkxBR19BQk9SVDsKKwlpZiAoY3R4LT5mbGFncyAmIEUyRl9GTEFHX1NFVEpNUF9PSykKKwkJbG9uZ2ptcChjdHgtPmFib3J0X2xvYywgMSk7CisJZXhpdChleGl0X3ZhbHVlKTsKK30KKwordm9pZCBsb2dfb3V0KGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBwdmFyOworCisJdmFfc3RhcnQocHZhciwgZm10KTsKKwl2cHJpbnRmKGZtdCwgcHZhcik7CisJdmFfZW5kKHB2YXIpOworCWlmIChjdHgtPmxvZ2YpIHsKKwkJdmFfc3RhcnQocHZhciwgZm10KTsKKwkJdmZwcmludGYoY3R4LT5sb2dmLCBmbXQsIHB2YXIpOworCQl2YV9lbmQocHZhcik7CisJfQorfQorCit2b2lkIGxvZ19lcnIoZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKwl2YV9saXN0IHB2YXI7CisKKwl2YV9zdGFydChwdmFyLCBmbXQpOworCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBwdmFyKTsKKwl2YV9lbmQocHZhcik7CisJaWYgKGN0eC0+bG9nZikgeworCQl2YV9zdGFydChwdmFyLCBmbXQpOworCQl2ZnByaW50ZihjdHgtPmxvZ2YsIGZtdCwgcHZhcik7CisJCXZhX2VuZChwdmFyKTsKKwl9Cit9CisKK3ZvaWQgKmUyZnNja19hbGxvY2F0ZV9tZW1vcnkoZTJmc2NrX3QgY3R4LCB1bnNpZ25lZCBpbnQgc2l6ZSwKKwkJCSAgICAgY29uc3QgY2hhciAqZGVzY3JpcHRpb24pCit7CisJdm9pZCAqcmV0OworCWNoYXIgYnVmWzI1Nl07CisKKyNpZmRlZiBERUJVR19BTExPQ0FURV9NRU1PUlkKKwlwcmludGYoIkFsbG9jYXRpbmcgJXUgYnl0ZXMgZm9yICVzLi4uXG4iLCBzaXplLCBkZXNjcmlwdGlvbik7CisjZW5kaWYKKwlyZXQgPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCFyZXQpIHsKKwkJc3ByaW50ZihidWYsICJDYW4ndCBhbGxvY2F0ZSAldSBieXRlcyBmb3IgJXNcbiIsCisJCQlzaXplLCBkZXNjcmlwdGlvbik7CisJCWZhdGFsX2Vycm9yKGN0eCwgYnVmKTsKKwl9CisJbWVtc2V0KHJldCwgMCwgc2l6ZSk7CisJcmV0dXJuIHJldDsKK30KKworY2hhciAqc3RyaW5nX2NvcHkoZTJmc2NrX3QgY3R4IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICBjb25zdCBjaGFyICpzdHIsIGludCBsZW4pCit7CisJY2hhcgkqcmV0OworCisJaWYgKCFzdHIpCisJCXJldHVybiBOVUxMOworCWlmICghbGVuKQorCQlsZW4gPSBzdHJsZW4oc3RyKTsKKwlyZXQgPSBtYWxsb2MobGVuKzEpOworCWlmIChyZXQpIHsKKwkJc3RybmNweShyZXQsIHN0ciwgbGVuKTsKKwkJcmV0W2xlbl0gPSAwOworCX0KKwlyZXR1cm4gcmV0OworfQorCisjaWZuZGVmIEhBVkVfU1RSTkxFTgorLyoKKyAqIEluY3JlZGlibHksIGxpYmM1IGRvZXNuJ3QgYXBwZWFyIHRvIGhhdmUgc3Rybmxlbi4gIFNvIHdlIGhhdmUgdG8KKyAqIHByb3ZpZGUgb3VyIG93bi4KKyAqLworaW50IGUyZnNja19zdHJubGVuKGNvbnN0IGNoYXIgKiBzLCBpbnQgY291bnQpCit7CisJY29uc3QgY2hhciAqY3AgPSBzOworCisJd2hpbGUgKGNvdW50LS0gJiYgKmNwKQorCQljcCsrOworCXJldHVybiBjcCAtIHM7Cit9CisjZW5kaWYKKworI2lmbmRlZiBIQVZFX0NPTklPX0gKK3N0YXRpYyBpbnQgcmVhZF9hX2NoYXIodm9pZCkKK3sKKwljaGFyCWM7CisJaW50CXI7CisJaW50CWZhaWwgPSAwOworCisJd2hpbGUoMSkgeworCQlpZiAoZTJmc2NrX2dsb2JhbF9jdHggJiYKKwkJICAgIChlMmZzY2tfZ2xvYmFsX2N0eC0+ZmxhZ3MgJiBFMkZfRkxBR19DQU5DRUwpKSB7CisJCQlyZXR1cm4gMzsKKwkJfQorCQlyID0gcmVhZCgwLCAmYywgMSk7CisJCWlmIChyID09IDEpCisJCQlyZXR1cm4gYzsKKwkJaWYgKGZhaWwrKyA+IDEwMCkKKwkJCWJyZWFrOworCX0KKwlyZXR1cm4gRU9GOworfQorI2VuZGlmCisKK2ludCBhc2tfeW4oZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICogc3RyaW5nLCBpbnQgZGVmKQoreworCWludAkJYzsKKwljb25zdCBjaGFyCSpkZWZzdHI7CisJY29uc3QgY2hhcgkqc2hvcnRfeWVzID0gXygieVkiKTsKKwljb25zdCBjaGFyCSpzaG9ydF9ubyA9IF8oIm5OIik7CisJY29uc3QgY2hhcgkqc2hvcnRfeWVzYWxsID0gXygiYUEiKTsKKwljb25zdCBjaGFyCSp5ZXNhbGxfcHJvbXB0ID0gXygiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIpOworCWNvbnN0IGNoYXIJKmV4dHJhX3Byb21wdCA9ICIiOworCXN0YXRpYyBpbnQJeWVzX2Fuc3dlcnM7CisKKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorCXN0cnVjdCB0ZXJtaW9zCXRlcm1pb3MsIHRtcDsKKworCXRjZ2V0YXR0ciAoMCwgJnRlcm1pb3MpOworCXRtcCA9IHRlcm1pb3M7CisJdG1wLmNfbGZsYWcgJj0gfihJQ0FOT04gfCBFQ0hPKTsKKwl0bXAuY19jY1tWTUlOXSA9IDE7CisJdG1wLmNfY2NbVlRJTUVdID0gMDsKKwl0Y3NldGF0dHIgKDAsIFRDU0FOT1csICZ0bXApOworI2VuZGlmCisKKwlpZiAoZGVmID09IDEpCisJCWRlZnN0ciA9IF8oXygiPHk+IikpOworCWVsc2UgaWYgKGRlZiA9PSAwKQorCQlkZWZzdHIgPSBfKF8oIjxuPiIpKTsKKwllbHNlCisJCWRlZnN0ciA9IF8oIiAoeS9uKSIpOworCS8qCisJICogSWYgdGhlIHVzZXIgcHJlc3NlcyAneScgbW9yZSB0aGFuIDggKGJ1dCBsZXNzIHRoYW4gMTIpIHRpbWVzIGluCisJICogc3VjY2Vzc2lvbiB3aXRob3V0IHByZXNzaW5nIGFueXRoaW5nIGVsc2UsIGRpc3BsYXkgYSBoaW50IGFib3V0CisJICogeWVzLXRvLWFsbCBtb2RlLgorCSAqLworCWlmICh5ZXNfYW5zd2VycyA+IDEyKQorCQl5ZXNfYW5zd2VycyA9IC0xOworCWVsc2UgaWYgKHllc19hbnN3ZXJzID4gOCkKKwkJZXh0cmFfcHJvbXB0ID0geWVzYWxsX3Byb21wdDsKKwlsb2dfb3V0KGN0eCwgIiVzJXMlcz8gIiwgc3RyaW5nLCBleHRyYV9wcm9tcHQsIGRlZnN0cik7CisJd2hpbGUgKDEpIHsKKwkJZmZsdXNoIChzdGRvdXQpOworCQlpZiAoKGMgPSByZWFkX2FfY2hhcigpKSA9PSBFT0YpCisJCQlicmVhazsKKwkJaWYgKGMgPT0gMykgeworI2lmZGVmIEhBVkVfVEVSTUlPU19ICisJCQl0Y3NldGF0dHIgKDAsIFRDU0FOT1csICZ0ZXJtaW9zKTsKKyNlbmRpZgorCQkJaWYgKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19TRVRKTVBfT0spIHsKKwkJCQlsb2dfb3V0KGN0eCwgIlxuIik7CisJCQkJbG9uZ2ptcChlMmZzY2tfZ2xvYmFsX2N0eC0+YWJvcnRfbG9jLCAxKTsKKwkJCX0KKwkJCWxvZ19vdXQoY3R4LCAiJXMiLCBfKCJjYW5jZWxsZWQhXG4iKSk7CisJCQl5ZXNfYW5zd2VycyA9IDA7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlpZiAoc3RyY2hyKHNob3J0X3llcywgKGNoYXIpIGMpKSB7CisJCQlkZWYgPSAxOworCQkJaWYgKHllc19hbnN3ZXJzID49IDApCisJCQkJeWVzX2Fuc3dlcnMrKzsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKHN0cmNocihzaG9ydF9ubywgKGNoYXIpIGMpKSB7CisJCQlkZWYgPSAwOworCQkJeWVzX2Fuc3dlcnMgPSAtMTsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKHN0cmNocihzaG9ydF95ZXNhbGwsIChjaGFyKWMpKSB7CisJCQlkZWYgPSAyOworCQkJeWVzX2Fuc3dlcnMgPSAtMTsKKwkJCWN0eC0+b3B0aW9ucyB8PSBFMkZfT1BUX1lFUzsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKChjID09IDI3IHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1xuJykgJiYgKGRlZiAhPSAtMSkpIHsKKwkJCXllc19hbnN3ZXJzID0gLTE7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoZGVmID09IDIpCisJCWxvZ19vdXQoY3R4LCAiJXMiLCBfKCJ5ZXMgdG8gYWxsXG4iKSk7CisJZWxzZSBpZiAoZGVmKQorCQlsb2dfb3V0KGN0eCwgIiVzIiwgXygieWVzXG4iKSk7CisJZWxzZQorCQlsb2dfb3V0KGN0eCwgIiVzIiwgXygibm9cbiIpKTsKKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorCXRjc2V0YXR0ciAoMCwgVENTQU5PVywgJnRlcm1pb3MpOworI2VuZGlmCisJcmV0dXJuIGRlZjsKK30KKworaW50IGFzayAoZTJmc2NrX3QgY3R4LCBjb25zdCBjaGFyICogc3RyaW5nLCBpbnQgZGVmKQoreworCWlmIChjdHgtPm9wdGlvbnMgJiBFMkZfT1BUX05PKSB7CisJCWxvZ19vdXQoY3R4LCBfKCIlcz8gbm9cblxuIiksIHN0cmluZyk7CisJCXJldHVybiAwOworCX0KKwlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9ZRVMpIHsKKwkJbG9nX291dChjdHgsIF8oIiVzPyB5ZXNcblxuIiksIHN0cmluZyk7CisJCXJldHVybiAxOworCX0KKwlpZiAoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikgeworCQlsb2dfb3V0KGN0eCwgIiVzPyAlc1xuXG4iLCBzdHJpbmcsIGRlZiA/IF8oInllcyIpIDogXygibm8iKSk7CisJCXJldHVybiBkZWY7CisJfQorCXJldHVybiBhc2tfeW4oY3R4LCBzdHJpbmcsIGRlZik7Cit9CisKK3ZvaWQgZTJmc2NrX3JlYWRfYml0bWFwcyhlMmZzY2tfdCBjdHgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBjdHgtPmZzOworCWVycmNvZGVfdAlyZXR2YWw7CisJY29uc3QgY2hhcgkqb2xkX29wOworCXVuc2lnbmVkIGludAlzYXZlX3R5cGU7CisJaW50CQlmbGFnczsKKworCWlmIChjdHgtPmludmFsaWRfYml0bWFwcykgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCAwLAorCQkgICAgXygiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIiksCisJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9CisKKwlvbGRfb3AgPSBlaGFuZGxlcl9vcGVyYXRpb24oXygicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIpKTsKKwllMmZzY2tfc2V0X2JpdG1hcF90eXBlKGZzLCBFWFQyRlNfQk1BUDY0X1JCVFJFRSwgImZzX2JpdG1hcHMiLAorCQkJICAgICAgICZzYXZlX3R5cGUpOworCWZsYWdzID0gY3R4LT5mcy0+ZmxhZ3M7CisJY3R4LT5mcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iaXRtYXBzKGZzKTsKKwljdHgtPmZzLT5mbGFncyA9IChmbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpIHwKKwkJCSAoY3R4LT5mcy0+ZmxhZ3MgJiB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUyk7CisJZnMtPmRlZmF1bHRfYml0bWFwX3R5cGUgPSBzYXZlX3R5cGU7CisJZWhhbmRsZXJfb3BlcmF0aW9uKG9sZF9vcCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGN0eC0+cHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQlfKCJ3aGlsZSByZXRyeWluZyB0byByZWFkIGJpdG1hcHMgZm9yICVzIiksCisJCQljdHgtPmRldmljZV9uYW1lKTsKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9Cit9CisKK3ZvaWQgZTJmc2NrX3dyaXRlX2JpdG1hcHMoZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNvbnN0IGNoYXIJKm9sZF9vcDsKKworCW9sZF9vcCA9IGVoYW5kbGVyX29wZXJhdGlvbihfKCJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIikpOworCXJldHZhbCA9IGV4dDJmc193cml0ZV9iaXRtYXBzKGZzKTsKKwllaGFuZGxlcl9vcGVyYXRpb24ob2xkX29wKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoY3R4LT5wcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCV8oIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiKSwKKwkJCWN0eC0+ZGV2aWNlX25hbWUpOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KK30KKwordm9pZCBwcmVlbmhhbHQoZTJmc2NrX3QgY3R4KQoreworCWV4dDJfZmlsc3lzIGZzID0gY3R4LT5mczsKKworCWlmICghKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfUFJFRU4pKQorCQlyZXR1cm47CisJbG9nX2VycihjdHgsIF8oIlxuXG4lczogVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOyAiCisJCSJSVU4gZnNjayBNQU5VQUxMWS5cblx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIpLAorCSAgICAgICBjdHgtPmRldmljZV9uYW1lKTsKKwljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX0VYSVRJTkc7CisJaWYgKGZzICE9IE5VTEwpIHsKKwkJZnMtPnN1cGVyLT5zX3N0YXRlIHw9IEVYVDJfRVJST1JfRlM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwl9CisJZXhpdChGU0NLX1VOQ09SUkVDVEVEKTsKK30KKworI2lmZGVmIFJFU09VUkNFX1RSQUNLCit2b2lkIGluaXRfcmVzb3VyY2VfdHJhY2soc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaywgaW9fY2hhbm5lbCBjaGFubmVsKQoreworI2lmZGVmIEhBVkVfR0VUUlVTQUdFCisJc3RydWN0IHJ1c2FnZSByOworI2VuZGlmCisJaW9fc3RhdHMgaW9fc3RhcnQgPSAwOworCisJdHJhY2stPmJya19zdGFydCA9IHNicmsoMCk7CisJZ2V0dGltZW9mZGF5KCZ0cmFjay0+dGltZV9zdGFydCwgMCk7CisjaWZkZWYgSEFWRV9HRVRSVVNBR0UKKyNpZmRlZiBzdW4KKwltZW1zZXQoJnIsIDAsIHNpemVvZihzdHJ1Y3QgcnVzYWdlKSk7CisjZW5kaWYKKwlnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZyKTsKKwl0cmFjay0+dXNlcl9zdGFydCA9IHIucnVfdXRpbWU7CisJdHJhY2stPnN5c3RlbV9zdGFydCA9IHIucnVfc3RpbWU7CisjZWxzZQorCXRyYWNrLT51c2VyX3N0YXJ0LnR2X3NlYyA9IHRyYWNrLT51c2VyX3N0YXJ0LnR2X3VzZWMgPSAwOworCXRyYWNrLT5zeXN0ZW1fc3RhcnQudHZfc2VjID0gdHJhY2stPnN5c3RlbV9zdGFydC50dl91c2VjID0gMDsKKyNlbmRpZgorCXRyYWNrLT5ieXRlc19yZWFkID0gMDsKKwl0cmFjay0+Ynl0ZXNfd3JpdHRlbiA9IDA7CisJaWYgKGNoYW5uZWwgJiYgY2hhbm5lbC0+bWFuYWdlciAmJiBjaGFubmVsLT5tYW5hZ2VyLT5nZXRfc3RhdHMpCisJCWNoYW5uZWwtPm1hbmFnZXItPmdldF9zdGF0cyhjaGFubmVsLCAmaW9fc3RhcnQpOworCWlmIChpb19zdGFydCkgeworCQl0cmFjay0+Ynl0ZXNfcmVhZCA9IGlvX3N0YXJ0LT5ieXRlc19yZWFkOworCQl0cmFjay0+Ynl0ZXNfd3JpdHRlbiA9IGlvX3N0YXJ0LT5ieXRlc193cml0dGVuOworCX0KK30KKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIF9JTkxJTkVfIF9faW5saW5lX18KKyNlbHNlCisjZGVmaW5lIF9JTkxJTkVfCisjZW5kaWYKKworc3RhdGljIF9JTkxJTkVfIGZsb2F0IHRpbWV2YWxfc3VidHJhY3Qoc3RydWN0IHRpbWV2YWwgKnR2MSwKKwkJCQkgICAgICAgc3RydWN0IHRpbWV2YWwgKnR2MikKK3sKKwlyZXR1cm4gKCh0djEtPnR2X3NlYyAtIHR2Mi0+dHZfc2VjKSArCisJCSgoZmxvYXQpICh0djEtPnR2X3VzZWMgLSB0djItPnR2X3VzZWMpKSAvIDEwMDAwMDApOworfQorCit2b2lkIHByaW50X3Jlc291cmNlX3RyYWNrKGUyZnNja190IGN0eCwgY29uc3QgY2hhciAqZGVzYywKKwkJCSAgc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaywgaW9fY2hhbm5lbCBjaGFubmVsKQoreworI2lmZGVmIEhBVkVfR0VUUlVTQUdFCisJc3RydWN0IHJ1c2FnZSByOworI2VuZGlmCisjaWZkZWYgSEFWRV9NQUxMSU5GTworCXN0cnVjdCBtYWxsaW5mbwltYWxsb2NfaW5mbzsKKyNlbmRpZgorCXN0cnVjdCB0aW1ldmFsIHRpbWVfZW5kOworCisJaWYgKChkZXNjICYmICEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9USU1FMikpIHx8CisJICAgICghZGVzYyAmJiAhKGN0eC0+b3B0aW9ucyAmIEUyRl9PUFRfVElNRSkpKQorCQlyZXR1cm47CisKKwllMmZzY2tfY2xlYXJfcHJvZ2JhcihjdHgpOworCWdldHRpbWVvZmRheSgmdGltZV9lbmQsIDApOworCisJaWYgKGRlc2MpCisJCWxvZ19vdXQoY3R4LCAiJXM6ICIsIGRlc2MpOworCisjaWZkZWYgSEFWRV9NQUxMSU5GTworI2RlZmluZSBrYnl0ZXMoeCkJKCgodW5zaWduZWQgbG9uZykoeCkgKyAxMDIzKSAvIDEwMjQpCisKKwltYWxsb2NfaW5mbyA9IG1hbGxpbmZvKCk7CisJbG9nX291dChjdHgsIF8oIk1lbW9yeSB1c2VkOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIpLAorCQlrYnl0ZXMobWFsbG9jX2luZm8uYXJlbmEpLCBrYnl0ZXMobWFsbG9jX2luZm8uaGJsa2hkKSwKKwkJa2J5dGVzKG1hbGxvY19pbmZvLnVvcmRibGtzKSwga2J5dGVzKG1hbGxvY19pbmZvLmZvcmRibGtzKSk7CisjZWxzZQorCWxvZ19vdXQoY3R4LCBfKCJNZW1vcnkgdXNlZDogJWx1LCAiKSwKKwkJKHVuc2lnbmVkIGxvbmcpICgoKGNoYXIgKikgc2JyaygwKSkgLQorCQkJCSAoKGNoYXIgKikgdHJhY2stPmJya19zdGFydCkpKTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUUlVTQUdFCisJZ2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmcik7CisKKwlsb2dfb3V0KGN0eCwgXygidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIpLAorCQl0aW1ldmFsX3N1YnRyYWN0KCZ0aW1lX2VuZCwgJnRyYWNrLT50aW1lX3N0YXJ0KSwKKwkJdGltZXZhbF9zdWJ0cmFjdCgmci5ydV91dGltZSwgJnRyYWNrLT51c2VyX3N0YXJ0KSwKKwkJdGltZXZhbF9zdWJ0cmFjdCgmci5ydV9zdGltZSwgJnRyYWNrLT5zeXN0ZW1fc3RhcnQpKTsKKyNlbHNlCisJbG9nX291dChjdHgsIF8oImVsYXBzZWQgdGltZTogJTYuM2ZcbiIpLAorCQl0aW1ldmFsX3N1YnRyYWN0KCZ0aW1lX2VuZCwgJnRyYWNrLT50aW1lX3N0YXJ0KSk7CisjZW5kaWYKKyNkZWZpbmUgbWJ5dGVzKHgpCSgoKHgpICsgMTA0ODU3NSkgLyAxMDQ4NTc2KQorCWlmIChjaGFubmVsICYmIGNoYW5uZWwtPm1hbmFnZXIgJiYgY2hhbm5lbC0+bWFuYWdlci0+Z2V0X3N0YXRzKSB7CisJCWlvX3N0YXRzIGRlbHRhID0gMDsKKwkJdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzX3JlYWQgPSAwOworCQl1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNfd3JpdHRlbiA9IDA7CisKKwkJaWYgKGRlc2MpCisJCQlsb2dfb3V0KGN0eCwgIiVzOiAiLCBkZXNjKTsKKworCQljaGFubmVsLT5tYW5hZ2VyLT5nZXRfc3RhdHMoY2hhbm5lbCwgJmRlbHRhKTsKKwkJaWYgKGRlbHRhKSB7CisJCQlieXRlc19yZWFkID0gZGVsdGEtPmJ5dGVzX3JlYWQgLSB0cmFjay0+Ynl0ZXNfcmVhZDsKKwkJCWJ5dGVzX3dyaXR0ZW4gPSBkZWx0YS0+Ynl0ZXNfd3JpdHRlbiAtCisJCQkJdHJhY2stPmJ5dGVzX3dyaXR0ZW47CisJCX0KKwkJbG9nX291dChjdHgsICJJL08gcmVhZDogJWxsdU1CLCB3cml0ZTogJWxsdU1CLCAiCisJCQkicmF0ZTogJS4yZk1CL3NcbiIsCisJCQltYnl0ZXMoYnl0ZXNfcmVhZCksIG1ieXRlcyhieXRlc193cml0dGVuKSwKKwkJCShkb3VibGUpbWJ5dGVzKGJ5dGVzX3JlYWQgKyBieXRlc193cml0dGVuKSAvCisJCQl0aW1ldmFsX3N1YnRyYWN0KCZ0aW1lX2VuZCwgJnRyYWNrLT50aW1lX3N0YXJ0KSk7CisJfQorfQorI2VuZGlmIC8qIFJFU09VUkNFX1RSQUNLICovCisKK3ZvaWQgZTJmc2NrX3JlYWRfaW5vZGUoZTJmc2NrX3QgY3R4LCB1bnNpZ25lZCBsb25nIGlubywKKwkJCSAgICAgIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsIGNvbnN0IGNoYXIgKnByb2MpCit7CisJZXJyY29kZV90IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGN0eC0+ZnMsIGlubywgaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfaW5vZGUiLCByZXR2YWwsCisJCQlfKCJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIpLCBpbm8sIHByb2MpOworCQlmYXRhbF9lcnJvcihjdHgsIDApOworCX0KK30KKwordm9pZCBlMmZzY2tfcmVhZF9pbm9kZV9mdWxsKGUyZnNja190IGN0eCwgdW5zaWduZWQgbG9uZyBpbm8sCisJCQkgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBpbnQgYnVmc2l6ZSwKKwkJCSAgICBjb25zdCBjaGFyICpwcm9jKQoreworCWVycmNvZGVfdCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGN0eC0+ZnMsIGlubywgaW5vZGUsIGJ1ZnNpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfaW5vZGVfZnVsbCIsIHJldHZhbCwKKwkJCV8oIndoaWxlIHJlYWRpbmcgaW5vZGUgJWx1IGluICVzIiksIGlubywgcHJvYyk7CisJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJfQorfQorCit2b2lkIGUyZnNja193cml0ZV9pbm9kZV9mdWxsKGUyZnNja190IGN0eCwgdW5zaWduZWQgbG9uZyBpbm8sCisJCQkgICAgIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsIGludCBidWZzaXplLAorCQkJICAgICBjb25zdCBjaGFyICpwcm9jKQoreworCWVycmNvZGVfdCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChjdHgtPmZzLCBpbm8sIGlub2RlLCBidWZzaXplKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImV4dDJmc193cml0ZV9pbm9kZSIsIHJldHZhbCwKKwkJCV8oIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIiksIGlubywgcHJvYyk7CisJCWZhdGFsX2Vycm9yKGN0eCwgMCk7CisJfQorfQorCit2b2lkIGUyZnNja193cml0ZV9pbm9kZShlMmZzY2tfdCBjdHgsIHVuc2lnbmVkIGxvbmcgaW5vLAorCQkJc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwgY29uc3QgY2hhciAqcHJvYykKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGN0eC0+ZnMsIGlubywgaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3dyaXRlX2lub2RlIiwgcmV0dmFsLAorCQkJXygid2hpbGUgd3JpdGluZyBpbm9kZSAlbHUgaW4gJXMiKSwgaW5vLCBwcm9jKTsKKwkJZmF0YWxfZXJyb3IoY3R4LCAwKTsKKwl9Cit9CisKKyNpZmRlZiBNVFJBQ0UKK3ZvaWQgbXRyYWNlX3ByaW50KGNoYXIgKm1lc2cpCit7CisJRklMRQkqbWFsbG9jX2dldF9tYWxsc3RyZWFtKCk7CisJRklMRQkqZiA9IG1hbGxvY19nZXRfbWFsbHN0cmVhbSgpOworCisJaWYgKGYpCisJCWZwcmludGYoZiwgIj09PT09PT09PT09PT0gJXNcbiIsIG1lc2cpOworfQorI2VuZGlmCisKK2JsazY0X3QgZ2V0X2JhY2t1cF9zYihlMmZzY2tfdCBjdHgsIGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICpuYW1lLAorCQkgICAgICBpb19tYW5hZ2VyIG1hbmFnZXIpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiOworCWlvX2NoYW5uZWwJCWlvID0gTlVMTDsKKwl2b2lkCQkJKmJ1ZiA9IE5VTEw7CisJaW50CQkJYmxvY2tzaXplOworCWJsazY0X3QJCQlzdXBlcmJsb2NrLCByZXRfc2IgPSA4MTkzOworCisJaWYgKGZzICYmIGZzLT5zdXBlcikgeworCQlyZXRfc2IgPSAoZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgKworCQkJICBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJCWlmIChjdHgpIHsKKwkJCWN0eC0+c3VwZXJibG9jayA9IHJldF9zYjsKKwkJCWN0eC0+YmxvY2tzaXplID0gZnMtPmJsb2Nrc2l6ZTsKKwkJfQorCQlyZXR1cm4gcmV0X3NiOworCX0KKworCWlmIChjdHgpIHsKKwkJaWYgKGN0eC0+YmxvY2tzaXplKSB7CisJCQlyZXRfc2IgPSBjdHgtPmJsb2Nrc2l6ZSAqIDg7CisJCQlpZiAoY3R4LT5ibG9ja3NpemUgPT0gMTAyNCkKKwkJCQlyZXRfc2IrKzsKKwkJCWN0eC0+c3VwZXJibG9jayA9IHJldF9zYjsKKwkJCXJldHVybiByZXRfc2I7CisJCX0KKwkJY3R4LT5zdXBlcmJsb2NrID0gcmV0X3NiOworCQljdHgtPmJsb2Nrc2l6ZSA9IDEwMjQ7CisJfQorCisJaWYgKCFuYW1lIHx8ICFtYW5hZ2VyKQorCQlnb3RvIGNsZWFudXA7CisKKwlpZiAobWFuYWdlci0+b3BlbihuYW1lLCAwLCAmaW8pICE9IDApCisJCWdvdG8gY2xlYW51cDsKKworCWlmIChleHQyZnNfZ2V0X21lbShTVVBFUkJMT0NLX1NJWkUsICZidWYpKQorCQlnb3RvIGNsZWFudXA7CisJc2IgPSAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKikgYnVmOworCisJZm9yIChibG9ja3NpemUgPSBFWFQyX01JTl9CTE9DS19TSVpFOworCSAgICAgYmxvY2tzaXplIDw9IEVYVDJfTUFYX0JMT0NLX1NJWkUgOyBibG9ja3NpemUgKj0gMikgeworCQlzdXBlcmJsb2NrID0gYmxvY2tzaXplKjg7CisJCWlmIChibG9ja3NpemUgPT0gMTAyNCkKKwkJCXN1cGVyYmxvY2srKzsKKwkJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShpbywgYmxvY2tzaXplKTsKKwkJaWYgKGlvX2NoYW5uZWxfcmVhZF9ibGs2NChpbywgc3VwZXJibG9jaywKKwkJCQkJLVNVUEVSQkxPQ0tfU0laRSwgYnVmKSkKKwkJCWNvbnRpbnVlOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQlpZiAoc2ItPnNfbWFnaWMgPT0gZXh0MmZzX3N3YWIxNihFWFQyX1NVUEVSX01BR0lDKSkKKwkJCWV4dDJmc19zd2FwX3N1cGVyKHNiKTsKKyNlbmRpZgorCQlpZiAoKHNiLT5zX21hZ2ljID09IEVYVDJfU1VQRVJfTUFHSUMpICYmCisJCSAgICAoRVhUMl9CTE9DS19TSVpFKHNiKSA9PSBibG9ja3NpemUpKSB7CisJCQlyZXRfc2IgPSBzdXBlcmJsb2NrOworCQkJaWYgKGN0eCkgeworCQkJCWN0eC0+c3VwZXJibG9jayA9IHN1cGVyYmxvY2s7CisJCQkJY3R4LT5ibG9ja3NpemUgPSBibG9ja3NpemU7CisJCQl9CisJCQlicmVhazsKKwkJfQorCX0KKworY2xlYW51cDoKKwlpZiAoaW8pCisJCWlvX2NoYW5uZWxfY2xvc2UoaW8pOworCWlmIChidWYpCisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gKHJldF9zYik7Cit9CisKKy8qCisgKiBHaXZlbiBhIG1vZGUsIHJldHVybiB0aGUgZXh0MiBmaWxlIHR5cGUKKyAqLworaW50IGV4dDJfZmlsZV90eXBlKHVuc2lnbmVkIGludCBtb2RlKQoreworCWlmIChMSU5VWF9TX0lTUkVHKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9SRUdfRklMRTsKKworCWlmIChMSU5VWF9TX0lTRElSKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9ESVI7CisKKwlpZiAoTElOVVhfU19JU0NIUihtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfQ0hSREVWOworCisJaWYgKExJTlVYX1NfSVNCTEsobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX0JMS0RFVjsKKworCWlmIChMSU5VWF9TX0lTTE5LKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9TWU1MSU5LOworCisJaWYgKExJTlVYX1NfSVNGSUZPKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9GSUZPOworCisJaWYgKExJTlVYX1NfSVNTT0NLKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9TT0NLOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgYSBmaWxlc3lzdGVtIGlzIGluIC9wcm9jL2ZpbGVzeXN0ZW1zLgorICogUmV0dXJucyAxIGlmIGZvdW5kLCAwIGlmIG5vdAorICovCitpbnQgZnNfcHJvY19jaGVjayhjb25zdCBjaGFyICpmc19uYW1lKQoreworCUZJTEUJKmY7CisJY2hhcglidWZbODBdLCAqY3AsICp0OworCisJZiA9IGZvcGVuKCIvcHJvYy9maWxlc3lzdGVtcyIsICJyIik7CisJaWYgKCFmKQorCQlyZXR1cm4gKDApOworCXdoaWxlICghZmVvZihmKSkgeworCQlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpKQorCQkJYnJlYWs7CisJCWNwID0gYnVmOworCQlpZiAoIWlzc3BhY2UoKmNwKSkgeworCQkJd2hpbGUgKCpjcCAmJiAhaXNzcGFjZSgqY3ApKQorCQkJCWNwKys7CisJCX0KKwkJd2hpbGUgKCpjcCAmJiBpc3NwYWNlKCpjcCkpCisJCQljcCsrOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICdcbicpKSAhPSBOVUxMKQorCQkJKnQgPSAwOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICdcdCcpKSAhPSBOVUxMKQorCQkJKnQgPSAwOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICcgJykpICE9IE5VTEwpCisJCQkqdCA9IDA7CisJCWlmICghc3RyY21wKGZzX25hbWUsIGNwKSkgeworCQkJZmNsb3NlKGYpOworCQkJcmV0dXJuICgxKTsKKwkJfQorCX0KKwlmY2xvc2UoZik7CisJcmV0dXJuICgwKTsKK30KKworLyoKKyAqIENoZWNrIHRvIHNlZSBpZiBhIGZpbGVzeXN0ZW0gaXMgYXZhaWxhYmxlIGFzIGEgbW9kdWxlCisgKiBSZXR1cm5zIDEgaWYgZm91bmQsIDAgaWYgbm90CisgKi8KK2ludCBjaGVja19mb3JfbW9kdWxlcyhjb25zdCBjaGFyICpmc19uYW1lKQoreworI2lmZGVmIF9fbGludXhfXworCXN0cnVjdCB1dHNuYW1lCXV0czsKKwlGSUxFCQkqZjsKKwljaGFyCQlidWZbMTAyNF0sICpjcCwgKnQ7CisJaW50CQlpOworCisJaWYgKHVuYW1lKCZ1dHMpKQorCQlyZXR1cm4gKDApOworCXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIvbGliL21vZHVsZXMvJXMvbW9kdWxlcy5kZXAiLCB1dHMucmVsZWFzZSk7CisKKwlmID0gZm9wZW4oYnVmLCAiciIpOworCWlmICghZikKKwkJcmV0dXJuICgwKTsKKwl3aGlsZSAoIWZlb2YoZikpIHsKKwkJaWYgKCFmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkKKwkJCWJyZWFrOworCQlpZiAoKGNwID0gc3RyY2hyKGJ1ZiwgJzonKSkgIT0gTlVMTCkKKwkJCSpjcCA9IDA7CisJCWVsc2UKKwkJCWNvbnRpbnVlOworCQlpZiAoKGNwID0gc3RycmNocihidWYsICcvJykpICE9IE5VTEwpCisJCQljcCsrOworCQllbHNlCisJCQljcCA9IGJ1ZjsKKwkJaSA9IHN0cmxlbihjcCk7CisJCWlmIChpID4gMykgeworCQkJdCA9IGNwICsgaSAtIDM7CisJCQlpZiAoIXN0cmNtcCh0LCAiLmtvIikpCisJCQkJKnQgPSAwOworCQl9CisJCWlmICghc3RyY21wKGNwLCBmc19uYW1lKSkgeworCQkJZmNsb3NlKGYpOworCQkJcmV0dXJuICgxKTsKKwkJfQorCX0KKwlmY2xvc2UoZik7CisjZW5kaWYgLyogX19saW51eF9fICovCisJcmV0dXJuICgwKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGlmIHdyaXRlIHJldHVybnMgYQorICogcGFydGlhbCB3cml0ZSwgb3IgYW4gRUdBSU4vRUlOVFIgZXJyb3IuCisgKi8KK2ludCB3cml0ZV9hbGwoaW50IGZkLCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzc2l6ZV90IHJldDsKKwlpbnQgYyA9IDA7CisKKwl3aGlsZSAoY291bnQgPiAwKSB7CisJCXJldCA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUlOVFIpKQorCQkJCWNvbnRpbnVlOworCQkJcmV0dXJuIC0xOworCQl9CisJCWNvdW50IC09IHJldDsKKwkJYnVmICs9IHJldDsKKwkJYyArPSByZXQ7CisJfQorCXJldHVybiBjOworfQorCit2b2lkIGR1bXBfbW1wX21zZyhzdHJ1Y3QgbW1wX3N0cnVjdCAqbW1wLCBjb25zdCBjaGFyICptc2cpCit7CisKKwlpZiAobXNnKQorCQlwcmludGYoIk1NUCBjaGVjayBmYWlsZWQ6ICVzXG4iLCBtc2cpOworCWlmIChtbXApIHsKKwkJdGltZV90IHQgPSBtbXAtPm1tcF90aW1lOworCisJCXByaW50ZigiTU1QIGVycm9yIGluZm86IGxhc3QgdXBkYXRlOiAlcyBub2RlOiAlcyBkZXZpY2U6ICVzXG4iLAorCQkgICAgICAgY3RpbWUoJnQpLCBtbXAtPm1tcF9ub2RlbmFtZSwgbW1wLT5tbXBfYmRldm5hbWUpOworCX0KK30KKworZXJyY29kZV90IGUyZnNja19tbXBfdXBkYXRlKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3VwZGF0ZShmcyk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX01NUF9DSEFOR0VfQUJPUlQpCisJCWR1bXBfbW1wX21zZyhmcy0+bW1wX2NtcCwKKwkJCSAgICAgXygiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyAiCisJCQkgICAgICAgImJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgcnVubmluZy5cbiIpKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKK3ZvaWQgZTJmc2NrX3NldF9iaXRtYXBfdHlwZShleHQyX2ZpbHN5cyBmcywgdW5zaWduZWQgaW50IGRlZmF1bHRfdHlwZSwKKwkJCSAgICBjb25zdCBjaGFyICpwcm9maWxlX25hbWUsIHVuc2lnbmVkIGludCAqb2xkX3R5cGUpCit7CisJdW5zaWduZWQgdHlwZTsKKwllMmZzY2tfdCBjdHggPSAoZTJmc2NrX3QpIGZzLT5wcml2X2RhdGE7CisKKwlpZiAob2xkX3R5cGUpCisJCSpvbGRfdHlwZSA9IGZzLT5kZWZhdWx0X2JpdG1hcF90eXBlOworCXByb2ZpbGVfZ2V0X3VpbnQoY3R4LT5wcm9maWxlLCAiYml0bWFwcyIsIHByb2ZpbGVfbmFtZSwgMCwKKwkJCSBkZWZhdWx0X3R5cGUsICZ0eXBlKTsKKwlwcm9maWxlX2dldF91aW50KGN0eC0+cHJvZmlsZSwgImJpdG1hcHMiLCAiYWxsIiwgMCwgdHlwZSwgJnR5cGUpOworCWZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gdHlwZSA/IHR5cGUgOiBkZWZhdWx0X3R5cGU7Cit9CisKK2VycmNvZGVfdCBlMmZzY2tfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkgICAgICAgaW50IGRlZnR5cGUsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgICAgIGV4dDJmc19pbm9kZV9iaXRtYXAgKnJldCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCXVuc2lnbmVkIGludAlzYXZlX3R5cGU7CisKKwllMmZzY2tfc2V0X2JpdG1hcF90eXBlKGZzLCBkZWZ0eXBlLCBuYW1lLCAmc2F2ZV90eXBlKTsKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLCBkZXNjciwgcmV0KTsKKwlmcy0+ZGVmYXVsdF9iaXRtYXBfdHlwZSA9IHNhdmVfdHlwZTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZTJmc2NrX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChleHQyX2ZpbHN5cyBmcywgY29uc3QgY2hhciAqZGVzY3IsCisJCQkJICAgICAgIGludCBkZWZ0eXBlLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgICAgICBleHQyZnNfYmxvY2tfYml0bWFwICpyZXQpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwl1bnNpZ25lZCBpbnQJc2F2ZV90eXBlOworCisJZTJmc2NrX3NldF9iaXRtYXBfdHlwZShmcywgZGVmdHlwZSwgbmFtZSwgJnNhdmVfdHlwZSk7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChmcywgZGVzY3IsIHJldCk7CisJZnMtPmRlZmF1bHRfYml0bWFwX3R5cGUgPSBzYXZlX3R5cGU7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGUyZnNja19hbGxvY2F0ZV9zdWJjbHVzdGVyX2JpdG1hcChleHQyX2ZpbHN5cyBmcywgY29uc3QgY2hhciAqZGVzY3IsCisJCQkJCSAgICBpbnQgZGVmdHlwZSwKKwkJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwICpyZXQpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwl1bnNpZ25lZCBpbnQJc2F2ZV90eXBlOworCisJZTJmc2NrX3NldF9iaXRtYXBfdHlwZShmcywgZGVmdHlwZSwgbmFtZSwgJnNhdmVfdHlwZSk7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX3N1YmNsdXN0ZXJfYml0bWFwKGZzLCBkZXNjciwgcmV0KTsKKwlmcy0+ZGVmYXVsdF9iaXRtYXBfdHlwZSA9IHNhdmVfdHlwZTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKiBSZXR1cm4gbWVtb3J5IHNpemUgaW4gYnl0ZXMgKi8KK3Vuc2lnbmVkIGxvbmcgbG9uZyBnZXRfbWVtb3J5X3NpemUodm9pZCkKK3sKKyNpZiBkZWZpbmVkKF9TQ19QSFlTX1BBR0VTKQorIyBpZiBkZWZpbmVkKF9TQ19QQUdFU0laRSkKKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZylzeXNjb25mKF9TQ19QSFlTX1BBR0VTKSAqCisJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc3lzY29uZihfU0NfUEFHRVNJWkUpOworIyBlbGlmIGRlZmluZWQoX1NDX1BBR0VfU0laRSkKKwlyZXR1cm4gKHVuc2lnbmVkIGxvbmcgbG9uZylzeXNjb25mKF9TQ19QSFlTX1BBR0VTKSAqCisJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpc3lzY29uZihfU0NfUEFHRV9TSVpFKTsKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoQ1RMX0hXKQorIyBpZiAoZGVmaW5lZChIV19NRU1TSVpFKSB8fCBkZWZpbmVkKEhXX1BIWVNNRU02NCkpCisjICBkZWZpbmUgQ1RMX0hXX0lOVDY0CisjIGVsaWYgKGRlZmluZWQoSFdfUEhZU01FTSkgfHwgZGVmaW5lZChIV19SRUFMTUVNKSkKKyMgIGRlZmluZSBDVExfSFdfVUlOVAorIyBlbmRpZgorCWludCBtaWJbMl07CisKKwltaWJbMF0gPSBDVExfSFc7CisjIGlmIGRlZmluZWQoSFdfTUVNU0laRSkKKwltaWJbMV0gPSBIV19NRU1TSVpFOworIyBlbGlmIGRlZmluZWQoSFdfUEhZU01FTTY0KQorCW1pYlsxXSA9IEhXX1BIWVNNRU02NDsKKyMgZWxpZiBkZWZpbmVkKEhXX1JFQUxNRU0pCisJbWliWzFdID0gSFdfUkVBTE1FTTsKKyMgZWxpZiBkZWZpbmVkKEhXX1BZU01FTSkKKwltaWJbMV0gPSBIV19QSFlTTUVNOworIyBlbmRpZgorIyBpZiBkZWZpbmVkKENUTF9IV19JTlQ2NCkKKwl1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSA9IDA7CisjIGVsaWYgZGVmaW5lZChDVExfSFdfVUlOVCkKKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7CisjIGVuZGlmCisjIGlmIGRlZmluZWQoQ1RMX0hXX0lOVDY0KSB8fCBkZWZpbmVkKENUTF9IV19VSU5UKQorCXNpemVfdCBsZW4gPSBzaXplb2Yoc2l6ZSk7CisKKwlpZiAoc3lzY3RsKG1pYiwgMiwgJnNpemUsICZsZW4sIE5VTEwsIDApID09IDApCisJCXJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKXNpemU7CisjIGVuZGlmCisJcmV0dXJuIDA7CisjZWxzZQorIyB3YXJuaW5nICJEb24ndCBrbm93IGhvdyB0byBkZXRlY3QgbWVtb3J5IG9uIHlvdXIgcGxhdGZvcm0/IgorCXJldHVybiAwOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc3Byb2dzLmxzbSBiL2UyZnNwcm9ncy9lMmZzcHJvZ3MubHNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OGViZmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZTJmc3Byb2dzLmxzbQpAQCAtMCwwICsxLDE3IEBACitCZWdpbjMKK1RpdGxlOiAgICAgICAgICBFWFQyIEZpbGVzeXN0ZW0gdXRpbGl0aWVzCitWZXJzaW9uOiAgICAgICAgMS40My4zCitFbnRlcmVkLWRhdGU6ICAgMjAxNi0wOS0wNAorRGVzY3JpcHRpb246ICAgIFRoZSBmaWxlc3lzdGVtIHV0aWxpdGllcyBmb3IgdGhlIEVYVDIsIEVYVDMsIGFuZCBFWFQ0CisJCWZpbGVzeXN0ZW1zLCBpbmNsdWRpbmcgZTJmc2NrLCBta2UyZnMsIGR1bXBlMmZzLCBhbmQgb3RoZXJzLgorS2V5d29yZHM6ICAgICAgIHV0aWxpdGllcywgZmlsZXN5c3RlbSwgRXh0MmZzLCBleHQzLCBleHQ0CitBdXRob3I6ICAgICAgICAgdHl0c29AbWl0LmVkdSAoVGhlb2RvcmUgVHNvKQorTWFpbnRhaW5lZC1ieTogIHR5dHNvQG1pdC5lZHUgKFRoZW9kb3JlIFRzbykKK1ByaW1hcnktc2l0ZTogICBmdHAua2VybmVsLm9yZyAvcHViL2xpbnV4L2tlcm5lbC9wZW9wbGUvdHl0c28vZTJmc3Byb2dzCisgICAgICAgICAgICAgICAgNzIyNGtCIGUyZnNwcm9ncy0xLjQzLjMudGFyLmd6CisgICAgICAgICAgICAgICAgNjQ0a0IgIGUyZnNwcm9ncy1saWJzLTEuNDMuMy50YXIuZ3oKKyAgICAgICAgICAgICAgICAxa0IgICAgZTJmc3Byb2dzLTEuNDMuMy5sc20KK0FsdGVybmF0ZS1zaXRlOiBkb3dubG9hZC5zb3VyY2Vmb3JnZS5uZXQgL3B1Yi9zb3VyY2Vmb3JnZS9lMmZzcHJvZ3MKK1BsYXRmb3JtczoJbGludXggMS4yLngvMS4zLngvMi4wLngvMi4xLngvMi4yLngvMi4zLngvMi40LngvMi41LngvMi42LngvMy54LzQueAorQ29weWluZy1wb2xpY3k6IEdQTC0yL0xHUEwtMgorRW5kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZTJmc3Byb2dzLnNwZWMuaW4gYi9lMmZzcHJvZ3MvZTJmc3Byb2dzLnNwZWMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjE4OGI3NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9lMmZzcHJvZ3Muc3BlYy5pbgpAQCAtMCwwICsxLDI0MiBAQAorJWRlZmluZQlfcm9vdF9zYmluZGlyCS9zYmluCislZGVmaW5lCV9yb290X2xpYmRpcgkvJXtfbGlifQorJWRlZmluZQlfcm9vdF9sb2NhbGVkaXIJL3Vzci9zaGFyZS9sb2NhbGUKKyVkZWZpbmUJX3Jvb3RfZXRjZGlyCS9ldGMKKworU3VtbWFyeTogVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBleHQyL2V4dDMvZXh0NCBmaWxlc3lzdGVtcworTmFtZTogZTJmc3Byb2dzCitWZXJzaW9uOiBARTJGU1BST0dTX1BLR1ZFUkAKK1JlbGVhc2U6IDAKK0xpY2Vuc2U6IEdQTHYyCitHcm91cDogU3lzdGVtIEVudmlyb25tZW50L0Jhc2UKK1NvdXJjZTogIGZ0cDovL2Rvd25sb2FkLnNvdXJjZWZvcmdlLm5ldC9wdWIvc291cmNlZm9yZ2UvZTJmc3Byb2dzL2UyZnNwcm9ncy0le3ZlcnNpb259LnRhci5negorVXJsOiBodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KK1ByZXJlcTogL3NiaW4vbGRjb25maWcKK0J1aWxkUm9vdDogJXtfdG1wcGF0aH0vJXtuYW1lfS1yb290CisKKyVkZXNjcmlwdGlvbgorVGhlIGUyZnNwcm9ncyBwYWNrYWdlIGNvbnRhaW5zIGEgbnVtYmVyIG9mIHV0aWxpdGllcyBmb3IgY3JlYXRpbmcsCitjaGVja2luZywgbW9kaWZ5aW5nLCBhbmQgY29ycmVjdGluZyBhbnkgaW5jb25zaXN0ZW5jaWVzIGluIGV4dDIsIGV4dDMsCithbmQgZXh0NCBmaWxlc3lzdGVtcy4gIEUyZnNwcm9ncyBjb250YWlucyBlMmZzY2sgKHVzZWQgdG8gcmVwYWlyCitmaWxlc3lzdGVtIGluY29uc2lzdGVuY2llcyBhZnRlciBhbiB1bmNsZWFuIHNodXRkb3duKSwgbWtlMmZzICh1c2VkIHRvCitpbml0aWFsaXplIGEgcGFydGl0aW9uIHRvIGNvbnRhaW4gYW4gZW1wdHkgZXh0MiBmaWxlc3lzdGVtKSwgZGVidWdmcworKHVzZWQgdG8gZXhhbWluZSB0aGUgaW50ZXJuYWwgc3RydWN0dXJlIG9mIGEgZmlsZXN5c3RlbSwgdG8gbWFudWFsbHkKK3JlcGFpciBhIGNvcnJ1cHRlZCBmaWxlc3lzdGVtIG9yIHRvIGNyZWF0ZSB0ZXN0IGNhc2VzIGZvciBlMmZzY2spLAordHVuZTJmcyAodXNlZCB0byBtb2RpZnkgZmlsZXN5c3RlbSBwYXJhbWV0ZXJzKSwgcmVzaXplMmZzIHRvIGdyb3cgYW5kCitzaHJpbmsgdW5tb3VudGVkIGV4dDIgZmlsZXN5c3RlbXMsIGFuZCBtb3N0IG9mIHRoZSBvdGhlciBjb3JlIGV4dDJmcworZmlsZXN5c3RlbSB1dGlsaXRpZXMuCisKK1lvdSBzaG91bGQgaW5zdGFsbCB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgaWYgeW91IGFyZSB1c2luZyBhbnkgZXh0MiwKK2V4dDMsIG9yIGV4dDQgZmlsZXN5c3RlbXMgKGlmIHlvdSdyZSBub3Qgc3VyZSwgeW91IHByb2JhYmx5IHNob3VsZAoraW5zdGFsbCB0aGlzIHBhY2thZ2UpLiAgWW91IG1heSBhbHNvIG5lZWQgdG8gaW5zdGFsbCBpdCAoZXZlbiBpZiB5b3UKK2Rvbid0IHVzZSBleHQyL2V4dDMvZXh0NCkgZm9yIHRoZSBsaWJ1dWlkIGFuZCBsaWJibGtpZCBsaWJyYXJpZXMgYW5kCitmc2NrIHRvb2wgdGhhdCBhcmUgaW5jbHVkZWQgaGVyZS4KKworJXBhY2thZ2UgZGV2ZWwKK1N1bW1hcnk6IEV4dDIgZmlsZXN5c3RlbS1zcGVjaWZpYyBzdGF0aWMgbGlicmFyaWVzIGFuZCBoZWFkZXJzLgorR3JvdXA6IERldmVsb3BtZW50L0xpYnJhcmllcworUmVxdWlyZXM6IGUyZnNwcm9ncyA9ICV7dmVyc2lvbn0KK1ByZXJlcTogL3NiaW4vaW5zdGFsbC1pbmZvCisKKyVkZXNjcmlwdGlvbiBkZXZlbAorRTJmc3Byb2dzLWRldmVsIGNvbnRhaW5zIHRoZSBsaWJyYXJpZXMgYW5kIGhlYWRlciBmaWxlcyBuZWVkZWQgdG8KK2RldmVsb3AgZXh0MiwgZXh0Mywgb3IgZXh0NCBmaWxlc3lzdGVtLXNwZWNpZmljIHByb2dyYW1zLgorCitZb3Ugc2hvdWxkIGluc3RhbGwgZTJmc3Byb2dzLWRldmVsIGlmIHlvdSB3YW50IHRvIGRldmVsb3AKK2V4dDIuIGV4dDMuIG9yIGV4dDQgZmlsZXN5c3RlbS1zcGVjaWZpYyBwcm9ncmFtcy4gIElmIHlvdSBpbnN0YWxsCitlMmZzcHJvZ3MtZGV2ZWwsIHlvdSdsbCBhbHNvIHdhbnQgdG8gaW5zdGFsbCBlMmZzcHJvZ3MuCisKKyVwYWNrYWdlIC1uIHV1aWRkCitTdW1tYXJ5OiBoZWxwZXIgZGFlbW9uIHRvIGd1YXJhbnRlZSB1bmlxdWVuZXNzIG9mIHRpbWUtYmFzZWQgVVVJRHMKK0dyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvRGFlbW9ucworTGljZW5zZTogR1BMdjIKK1JlcXVpcmVzOiBlMmZzcHJvZ3MgPSAle3ZlcnNpb259CitSZXF1aXJlcyhwcmUpOiBzaGFkb3ctdXRpbHMKKworJWRlc2NyaXB0aW9uIC1uIHV1aWRkCitUaGUgdXVpZGQgcGFja2FnZSBjb250YWlucyBhIHVzZXJzcGFjZSBkYWVtb24gKHV1aWRkKSB3aGljaCBndWFyYW50ZWVzCit1bmlxdWVuZXNzIG9mIHRpbWUtYmFzZWQgVVVJRCBnZW5lcmF0aW9uIGV2ZW4gYXQgdmVyeSBoaWdoIHJhdGVzIG9uCitTTVAgc3lzdGVtcy4KKworJXByZXAKKyVzZXR1cAorCislYnVpbGQKKyVjb25maWd1cmUgLS1lbmFibGUtZWxmLXNobGlicyAtLWVuYWJsZS1ubHMgXAorCSV7P2V4dHJhX2NvbmZpZ19mbGFnczolZXh0cmFfY29uZmlnX2ZsYWdzfQorbWFrZQorbWFrZSBjaGVjaworCislaW5zdGFsbAorcm0gLXJmICRSUE1fQlVJTERfUk9PVAorZXhwb3J0IFBBVEg9L3NiaW46JFBBVEgKK21ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYnMgREVTVERJUj0iJFJQTV9CVUlMRF9ST09UIiBcCisJcm9vdF9zYmluZGlyPSV7X3Jvb3Rfc2JpbmRpcn0gcm9vdF9saWJkaXI9JXtfcm9vdF9saWJkaXJ9Cisvc2Jpbi9sZGNvbmZpZyAtbiAke1JQTV9CVUlMRF9ST09UfSV7X2xpYmRpcn0KKworIyBBZGQgYSBkaXIgdGhhdCB1dWlkZCBuZWVkcyB0aGF0IHRoZSBNYWtlZmlsZXMgZG9uJ3QgY3JlYXRlCitpbnN0YWxsIC1kICRSUE1fQlVJTERfUk9PVC92YXIvbGliL2xpYnV1aWQKKworJWZpbmRfbGFuZyAle25hbWV9CisKKyVjbGVhbgorcm0gLXJmICRSUE1fQlVJTERfUk9PVAorCislcG9zdCAtcCAvc2Jpbi9sZGNvbmZpZworCislcG9zdHVuIC1wIC9zYmluL2xkY29uZmlnCisKKyVwb3N0IGRldmVsCitpZiBbIC14IC9zYmluL2luc3RhbGwtaW5mbyAtYSAtZiAle19pbmZvZGlyfS9saWJleHQyZnMuaW5mby5neiBdOyB0aGVuCisgICAgL3NiaW4vaW5zdGFsbC1pbmZvICV7X2luZm9kaXJ9L2xpYmV4dDJmcy5pbmZvLmd6ICV7X2luZm9kaXJ9L2RpcgorZmkKK2V4aXQgMAorCislcG9zdHVuIGRldmVsCitpZiBbICQxID0gMCAtYSAteCAvc2Jpbi9pbnN0YWxsLWluZm8gLWEgLWYgJXtfaW5mb2Rpcn0vbGliZXh0MmZzLmluZm8uZ3ogXTsgdGhlbgorICAgL3NiaW4vaW5zdGFsbC1pbmZvIC0tZGVsZXRlICV7X2luZm9kaXJ9L2xpYmV4dDJmcy5pbmZvLmd6ICV7X2luZm9kaXJ9L2RpcgorZmkKK2V4aXQgMAorCislcHJlIC1uIHV1aWRkCitnZXRlbnQgZ3JvdXAgdXVpZGQgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciB1dWlkZAorZ2V0ZW50IHBhc3N3ZCB1dWlkZCA+L2Rldi9udWxsIHx8IFwKK3VzZXJhZGQgLXIgLWcgdXVpZGQgLWQgL3Zhci9saWIvbGlidXVpZCAtcyAvc2Jpbi9ub2xvZ2luIFwKKyAgICAtYyAiVVVJRCBnZW5lcmF0b3IgaGVscGVyIGRhZW1vbiIgdXVpZGQKK2V4aXQgMAorCislZmlsZXMgLWYgJXtuYW1lfS5sYW5nCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyVkb2MgUkVBRE1FIFJFTEVBU0UtTk9URVMKKworJXtfcm9vdF9zYmluZGlyfS9iYWRibG9ja3MKKyV7X3Jvb3Rfc2JpbmRpcn0vYmxraWQKKyV7X3Jvb3Rfc2JpbmRpcn0vZGVidWdmcworJXtfcm9vdF9zYmluZGlyfS9kdW1wZTJmcworJXtfcm9vdF9zYmluZGlyfS9lMmZzY2sKKyV7X3Jvb3Rfc2JpbmRpcn0vZTJpbWFnZQorJXtfcm9vdF9zYmluZGlyfS9lMmxhYmVsCisle19yb290X3NiaW5kaXJ9L2UydW5kbworJXtfcm9vdF9zYmluZGlyfS9maW5kZnMKKyV7X3Jvb3Rfc2JpbmRpcn0vZnNjaworJXtfcm9vdF9zYmluZGlyfS9mc2NrLmV4dDIKKyV7X3Jvb3Rfc2JpbmRpcn0vZnNjay5leHQzCisle19yb290X3NiaW5kaXJ9L2ZzY2suZXh0NAorJXtfcm9vdF9zYmluZGlyfS9mc2NrLmV4dDRkZXYKKyV7X3Jvb3Rfc2JpbmRpcn0vbG9nc2F2ZQorJXtfcm9vdF9zYmluZGlyfS9ta2UyZnMKKyV7X3Jvb3RfZXRjZGlyfS9ta2UyZnMuY29uZgorJXtfcm9vdF9zYmluZGlyfS9ta2ZzLmV4dDIKKyV7X3Jvb3Rfc2JpbmRpcn0vbWtmcy5leHQzCisle19yb290X3NiaW5kaXJ9L21rZnMuZXh0NAorJXtfcm9vdF9zYmluZGlyfS9ta2ZzLmV4dDRkZXYKKyV7X3Jvb3Rfc2JpbmRpcn0vcmVzaXplMmZzCisle19yb290X3NiaW5kaXJ9L3R1bmUyZnMKKyV7X3NiaW5kaXJ9L2ZpbGVmcmFnCisle19zYmluZGlyfS9ta2xvc3QrZm91bmQKKyV7X3NiaW5kaXJ9L2UyZnJlZWZyYWcKKworJXtfcm9vdF9saWJkaXJ9L2xpYmJsa2lkLnNvLioKKyV7X3Jvb3RfbGliZGlyfS9saWJjb21fZXJyLnNvLioKKyV7X3Jvb3RfbGliZGlyfS9saWJlMnAuc28uKgorJXtfcm9vdF9saWJkaXJ9L2xpYmV4dDJmcy5zby4qCisle19yb290X2xpYmRpcn0vbGlic3Muc28uKgorJXtfcm9vdF9saWJkaXJ9L2xpYnV1aWQuc28uKgorCisle19saWJkaXJ9L2UyaW5pdHJkX2hlbHBlcgorCisle19iaW5kaXJ9L2NoYXR0cgorJXtfYmluZGlyfS9sc2F0dHIKKyV7X2JpbmRpcn0vdXVpZGdlbgorJXtfbWFuZGlyfS9tYW4xL2NoYXR0ci4xKgorJXtfbWFuZGlyfS9tYW4xL2xzYXR0ci4xKgorJXtfbWFuZGlyfS9tYW4xL3V1aWRnZW4uMSoKKworJXtfbWFuZGlyfS9tYW41L2UyZnNjay5jb25mLjUqCisle19tYW5kaXJ9L21hbjUvbWtlMmZzLmNvbmYuNSoKKworJXtfbWFuZGlyfS9tYW44L2JhZGJsb2Nrcy44KgorJXtfbWFuZGlyfS9tYW44L2Jsa2lkLjgqCisle19tYW5kaXJ9L21hbjgvZGVidWdmcy44KgorJXtfbWFuZGlyfS9tYW44L2R1bXBlMmZzLjgqCisle19tYW5kaXJ9L21hbjgvZTJmc2NrLjgqCisle19tYW5kaXJ9L21hbjgvZmluZGZzLjgqCisle19tYW5kaXJ9L21hbjgvZnNjay5leHQyLjgqCisle19tYW5kaXJ9L21hbjgvZnNjay5leHQzLjgqCisle19tYW5kaXJ9L21hbjgvZnNjay5leHQ0LjgqCisle19tYW5kaXJ9L21hbjgvZnNjay5leHQ0ZGV2LjgqCisle19tYW5kaXJ9L21hbjgvZTJpbWFnZS44KgorJXtfbWFuZGlyfS9tYW44L2UybGFiZWwuOCoKKyV7X21hbmRpcn0vbWFuOC9lMnVuZG8uOCoKKyV7X21hbmRpcn0vbWFuOC9mc2NrLjgqCisle19tYW5kaXJ9L21hbjgvbG9nc2F2ZS44KgorJXtfbWFuZGlyfS9tYW44L21rZTJmcy44KgorJXtfbWFuZGlyfS9tYW44L21rZnMuZXh0Mi44KgorJXtfbWFuZGlyfS9tYW44L21rZnMuZXh0My44KgorJXtfbWFuZGlyfS9tYW44L21rZnMuZXh0NC44KgorJXtfbWFuZGlyfS9tYW44L21rZnMuZXh0NGRldi44KgorJXtfbWFuZGlyfS9tYW44L21rbG9zdCtmb3VuZC44KgorJXtfbWFuZGlyfS9tYW44L3Jlc2l6ZTJmcy44KgorJXtfbWFuZGlyfS9tYW44L3R1bmUyZnMuOCoKKyV7X21hbmRpcn0vbWFuOC9maWxlZnJhZy44KgorJXtfbWFuZGlyfS9tYW44L2UyZnJlZWZyYWcuOCoKKworJWZpbGVzIGRldmVsCislZGVmYXR0cigtLHJvb3Qscm9vdCkKKyV7X2luZm9kaXJ9L2xpYmV4dDJmcy5pbmZvKgorJXtfYmluZGlyfS9jb21waWxlX2V0Cisle19iaW5kaXJ9L21rX2NtZHMKKworJXtfbGliZGlyfS9saWJibGtpZC5hCisle19saWJkaXJ9L2xpYmJsa2lkLnNvCisle19saWJkaXJ9L2xpYmNvbV9lcnIuYQorJXtfbGliZGlyfS9saWJjb21fZXJyLnNvCisle19saWJkaXJ9L2xpYmUycC5hCisle19saWJkaXJ9L2xpYmUycC5zbworJXtfbGliZGlyfS9saWJleHQyZnMuYQorJXtfbGliZGlyfS9saWJleHQyZnMuc28KKyV7X2xpYmRpcn0vbGlic3MuYQorJXtfbGliZGlyfS9saWJzcy5zbworJXtfbGliZGlyfS9saWJ1dWlkLmEKKyV7X2xpYmRpcn0vbGlidXVpZC5zbworCisle19saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYworJXtfbGliZGlyfS9wa2djb25maWcvY29tX2Vyci5wYworJXtfbGliZGlyfS9wa2djb25maWcvZTJwLnBjCisle19saWJkaXJ9L3BrZ2NvbmZpZy9leHQyZnMucGMKKyV7X2xpYmRpcn0vcGtnY29uZmlnL3NzLnBjCisle19saWJkaXJ9L3BrZ2NvbmZpZy91dWlkLnBjCisKKyV7X2RhdGFkaXJ9L2V0Cisle19kYXRhZGlyfS9zcworJXtfaW5jbHVkZWRpcn0vYmxraWQKKyV7X2luY2x1ZGVkaXJ9L2UycAorJXtfaW5jbHVkZWRpcn0vZXQKKyV7X2luY2x1ZGVkaXJ9L2NvbV9lcnIuaAorJXtfaW5jbHVkZWRpcn0vZXh0MmZzCisle19pbmNsdWRlZGlyfS9zcworJXtfaW5jbHVkZWRpcn0vdXVpZAorJXtfbWFuZGlyfS9tYW4xL2NvbXBpbGVfZXQuMSoKKyV7X21hbmRpcn0vbWFuMS9ta19jbWRzLjEqCisle19tYW5kaXJ9L21hbjMvY29tX2Vyci4zKgorJXtfbWFuZGlyfS9tYW4zL2xpYmJsa2lkLjMqCisle19tYW5kaXJ9L21hbjMvdXVpZC4zKgorJXtfbWFuZGlyfS9tYW4zL3V1aWRfY2xlYXIuMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX2NvbXBhcmUuMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX2NvcHkuMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX2dlbmVyYXRlLjMqCisle19tYW5kaXJ9L21hbjMvdXVpZF9nZW5lcmF0ZV9yYW5kb20uMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX2dlbmVyYXRlX3RpbWUuMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX2lzX251bGwuMyoKKyV7X21hbmRpcn0vbWFuMy91dWlkX3BhcnNlLjMqCisle19tYW5kaXJ9L21hbjMvdXVpZF90aW1lLjMqCisle19tYW5kaXJ9L21hbjMvdXVpZF91bnBhcnNlLjMqCisKKyVmaWxlcyAtbiB1dWlkZAorJWRlZmF0dHIoLSxyb290LHJvb3QpCisjIGlmIHlvdSB3YW50IHRvIHJ1biB2aWEgaW5pdAorIyAvZXRjL2luaXQuZC91dWlkZAorJXtfbWFuZGlyfS9tYW44L3V1aWRkLjgqCislYXR0cig2NzU1LCB1dWlkZCwgdXVpZGQpICV7X3NiaW5kaXJ9L3V1aWRkCislZGlyICVhdHRyKDI3NzUsIHV1aWRkLCB1dWlkZCkgL3Zhci9saWIvbGlidXVpZAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZXh0MmVkL0NPUFlSSUdIVCBiL2UyZnNwcm9ncy9leHQyZWQvQ09QWVJJR0hUCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ODVlYjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL0NPUFlSSUdIVApAQCAtMCwwICsxLDM0NiBAQAorRVhUMkVEIGlzIGhlcmVieSBwbGFjZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK0ZvbGxvd3MgdGhlIEdOVSBsaWNlbnNlLgorCitHYWRpIE94bWFuLCBBdWd1c3QgMTk5NQorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgICAgICAgICAgICAgICAgICAgICAgIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBCisgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCisKKwkJCSAgICBQcmVhbWJsZQorCisgIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKK2ZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljCitMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCitzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcworR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KK3VzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKK3RoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworeW91ciBwcm9ncmFtcywgdG9vLgorCisgIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKK3ByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKK2hhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKK3RoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAoraWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKK2luIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKworICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCithbnlvbmUgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuCitUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQorZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCisgIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAoreW91IGhhdmUuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUgb3IgY2FuIGdldCB0aGUKK3NvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKK3JpZ2h0cy4KKworICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCisoMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LAorZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KKworICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgordGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUKK3NvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQord2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KK3RoYXQgYW55IHByb2JsZW1zIGludHJvZHVjZWQgYnkgb3RoZXJzIHdpbGwgbm90IHJlZmxlY3Qgb24gdGhlIG9yaWdpbmFsCithdXRob3JzJyByZXB1dGF0aW9ucy4KKworICBGaW5hbGx5LCBhbnkgZnJlZSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZQorcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQorcHJvZ3JhbSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55CitwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorCisgIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCittb2RpZmljYXRpb24gZm9sbG93LgorDAorCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTgorCisgIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKK2Egbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkCit1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCityZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKK21lYW5zIGVpdGhlciB0aGUgUHJvZ3JhbSBvciBhbnkgZGVyaXZhdGl2ZSB3b3JrIHVuZGVyIGNvcHlyaWdodCBsYXc6Cit0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAorZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKK2xhbmd1YWdlLiAgKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4KK3RoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgorCitBY3Rpdml0aWVzIG90aGVyIHRoYW4gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZCBtb2RpZmljYXRpb24gYXJlIG5vdAorY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgorcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQoraXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCitXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKworICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKK3NvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQorY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZQorY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQorbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZQorYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KKworWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kCit5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgorCisgIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24KK29mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKK2Rpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoKKworICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcworICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuCisKKyAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKyAgICB3aG9sZSBvciBpbiBwYXJ0IGNvbnRhaW5zIG9yIGlzIGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSBvciBhbnkKKyAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAorICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKKyAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCisgICAgaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbgorICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQorICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQorICAgIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIKKyAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcworICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CisgICAgZG9lcyBub3Qgbm9ybWFsbHkgcHJpbnQgc3VjaCBhbiBhbm5vdW5jZW1lbnQsIHlvdXIgd29yayBiYXNlZCBvbgorICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQorDAorVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgoraWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKK2FuZCBjYW4gYmUgcmVhc29uYWJseSBjb25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgordGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQorc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CitkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKK29uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgordGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKK2VudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0Cit5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KK2V4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgorY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQord2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCithIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgordGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGEgd29yayBiYXNlZCBvbiBpdCwKK3VuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgorU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQorICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucworICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKKyAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91cgorICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKKyAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0KKyAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlcgorICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCisgICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKKyAgICByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCisgICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IKK21ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCitjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQorYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCitjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCitzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKK2FueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhlciBzb3VyY2Ugb3IgYmluYXJ5Citmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQorb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKK2l0c2VsZiBhY2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKworSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZworYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCitkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKK2NvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisMCisgIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQorZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCit2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuCitIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgordGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKK3BhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4KKworICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKK3NpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yCitkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKK3Byb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKK21vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKK2FsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKK3RoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0LgorCisgIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKK1Byb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlCitvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCit0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgorcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLgorWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KK3RoaXMgTGljZW5zZS4KKworICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CitpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLAorY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdAorZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKK2Rpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKK0xpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKK21heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKK2xpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkKK2FsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgordGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bworcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKworSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCithbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvCithcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgorY2lyY3Vtc3RhbmNlcy4KKworSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQorcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKK3N1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUKK2ludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcworaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCitnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCit0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdAorc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwordG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90CitpbXBvc2UgdGhhdCBjaG9pY2UuCisKK1RoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bworYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisMCisgIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCitjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKK29yaWdpbmFsIGNvcHlyaWdodCBob2xkZXIgd2hvIHBsYWNlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIExpY2Vuc2UKK21heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwordGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZworY291bnRyaWVzIG5vdCB0aHVzIGV4Y2x1ZGVkLiAgSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzCit0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKworICA5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucworb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCitiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KK2FkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorCitFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCitzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKK3RoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24uCisKKyAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQorcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgordG8gYXNrIGZvciBwZXJtaXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCitTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKK21ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCitvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCitvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KKworCQkJICAgIE5PIFdBUlJBTlRZCisKKyAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCitGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4KK09USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKK1BST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECitPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUworVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQorUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCitSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCitXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SCitSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLAorSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCitPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECitUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKK1lPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCitQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKK1BPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KKworCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworDAorCUFwcGVuZGl4OiBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKworICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0Citwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CitmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KKworICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAordG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQorY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QKK3RoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgorCisgICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4KKyAgICBDb3B5cmlnaHQgKEMpIDE5eXkgIDxuYW1lIG9mIGF1dGhvcj4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCitBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KKworSWYgdGhlIHByb2dyYW0gaXMgaW50ZXJhY3RpdmUsIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQgbm90aWNlIGxpa2UgdGhpcword2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKKworICAgIEdub21vdmlzaW9uIHZlcnNpb24gNjksIENvcHlyaWdodCAoQykgMTl5eSBuYW1lIG9mIGF1dGhvcgorICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CisgICAgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKK3BhcnRzIG9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgT2YgY291cnNlLCB0aGUgY29tbWFuZHMgeW91IHVzZSBtYXkKK2JlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQorbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4KKworWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKK3NjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmCituZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6CisKKyAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQorICBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KKworICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkKKyAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvCitwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91IG1heQorY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCitsaWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwKK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9leHQyZWQvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY5NzQzMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSw5NiBAQAorIworIyBTdGFuZGFyZCBlMmZzcHJvZ3MgcHJvbG9ndWUuLi4uCisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLgorbXlfZGlyID0gZXh0MmVkCitJTlNUQUxMID0gQElOU1RBTExACisKK0BNQ09ORklHQAorCitQUk9HUz0JCWV4dDJlZAorTUFOUEFHRVM9CWV4dDJlZC44CisKK0RPQ19ESVIJCT0JJGRhdGFkaXIvZG9jL2V4dDJlZAorCitMSUJTCQk9CS1sbmN1cnNlcyAkKExJQkVYVDJGUykKKworU1JDUz0JJChzcmNkaXIpL21haW4uYyAkKHNyY2RpcikvaW5pdC5jICQoc3JjZGlyKS9nZW5lcmFsX2NvbS5jICAgICAgIFwKKwkkKHNyY2RpcikvaW5vZGVfY29tLmMgJChzcmNkaXIpL2Rpcl9jb20uYyAkKHNyY2Rpcikvc3VwZXJfY29tLmMgXAorCSQoc3JjZGlyKS9kaXNrLmMgJChzcmNkaXIpL3dpbi5jICQoc3JjZGlyKS9ncm91cF9jb20uYyAgICAgICAgICBcCisJJChzcmNkaXIpL2ZpbGVfY29tLmMgJChzcmNkaXIpL2Jsb2NrYml0bWFwX2NvbS5jICAgICAgICAgICAgICAgIFwKKwkkKHNyY2RpcikvZXh0Ml9jb20uYyAkKHNyY2RpcikvaW5vZGViaXRtYXBfY29tLmMKKworT0JKUz0JbWFpbi5vIGluaXQubyBnZW5lcmFsX2NvbS5vIGlub2RlX2NvbS5vIGRpcl9jb20ubyBzdXBlcl9jb20ubyAgICBcCisJZGlzay5vIHdpbi5vIGdyb3VwX2NvbS5vIGZpbGVfY29tLm8gYmxvY2tiaXRtYXBfY29tLm8gZXh0Ml9jb20ubyBcCisJaW5vZGViaXRtYXBfY29tLm8KKworRE9DUz0gICBkb2MvZXh0MmVkLWRlc2lnbi5wZGYgZG9jL3VzZXItZ3VpZGUucGRmIGRvYy9leHQyZnMtb3ZlcnZpZXcucGRmIFwKKwlkb2MvZXh0MmVkLWRlc2lnbi5odG1sIGRvYy91c2VyLWd1aWRlLmh0bWwgZG9jL2V4dDJmcy1vdmVydmlldy5odG1sCisKKy5jLm86CisJJChDQykgLWMgJChBTExfQ0ZMQUdTKSAkPCAtbyAkQAorCSQoQ0hFQ0tfQ01EKSAkKEFMTF9DRkxBR1MpICQ8CisJJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CisKKy5TVUZGSVhFUzogLnNnbWwgLnBzIC5wZGYgLmh0bWwKKworLnNnbWwucHM6CisJbWtkaXIgLXAgZG9jCisJc2dtbHRvb2xzIC1iIHBzICQ8IAorCS1tdiBgZWNobyAkPCB8IHNlZCAtZSAncy8uc2dtbCQkLy5wcy8nYCAkQAorCisuc2dtbC5wZGY6CisJbWtkaXIgLXAgZG9jCisJc2dtbHRvb2xzIC1iIHBkZiAkPCAKKwktbXYgYGVjaG8gJDwgfCBzZWQgLWUgJ3MvLnNnbWwkJC8ucGRmLydgICRACisKKy5zZ21sLmh0bWw6CisJbWtkaXIgLXAgZG9jCisJc2dtbHRvb2xzIC1iIG9uZWh0bWwgJDwgCisJLW12IGBlY2hvICQ8IHwgc2VkIC1lICdzLy5zZ21sJCQvLmh0bWwvJ2AgJEAKKworYWxsOjogJChQUk9HUykgJChNQU5QQUdFUykgZXh0MmVkLmNvbmYgCisKK2RvY3M6ICQoRE9DUykKKworZXh0MmVkOiAkKE9CSlMpCisJJChDQykgJChBTExfTERGTEFHUykgLW8gZXh0MmVkICQoT0JKUykgJChMSUJTKQorCitleHQyZWQuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2V4dDJlZC44LmluCisJJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2V4dDJlZC44LmluIGV4dDJlZC44CisKK2V4dDJlZC5jb25mOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvZXh0MmVkLmNvbmYuaW4KKwkkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvZXh0MmVkLmNvbmYuaW4gZXh0MmVkLmNvbmYKKworY2xlYW46OgorCSQoUk0pIC1mIGV4dDJlZCAkKE9CSlMpICQoRE9DUykgZXh0MmVkLmNvbmYgZXh0MmVkLjgKKwktcm1kaXIgZG9jCisKK2luc3RhbGw6IGV4dDJlZAorCWluc3RhbGwgLWQgJChyb290X3N5c2NvbmZkaXIpCisJaW5zdGFsbCAtbSA3NTUgZXh0MmVkICQoc2JpbmRpcikKKwlpbnN0YWxsIC1tIDY0NCAkKHNyY2RpcikvZXh0Mi5kZXNjcmlwdG9ycyAkKGRhdGFkaXIpCisJaW5zdGFsbCAtbSA2NDQgZXh0MmVkLmNvbmYgJChyb290X3N5c2NvbmZkaXIpCisJaW5zdGFsbCAtbSA2NDQgZXh0MmVkLjggJChtYW44ZGlyKQorCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK21haW4ubzogJChzcmNkaXIpL21haW4uYyAkKHNyY2RpcikvZXh0MmVkLmgKK2dlbmVyYWxfY29tLm86ICQoc3JjZGlyKS9nZW5lcmFsX2NvbS5jICQoc3JjZGlyKS9leHQyZWQuaAoraW5vZGVfY29tLm86ICQoc3JjZGlyKS9pbm9kZV9jb20uYyAkKHNyY2RpcikvZXh0MmVkLmgKK2Rpcl9jb20ubzogJChzcmNkaXIpL2Rpcl9jb20uYyAkKHNyY2RpcikvZXh0MmVkLmgKK3N1cGVyX2NvbS5vOiAkKHNyY2Rpcikvc3VwZXJfY29tLmMgJChzcmNkaXIpL2V4dDJlZC5oCitkaXNrLm86ICQoc3JjZGlyKS9kaXNrLmMgJChzcmNkaXIpL2V4dDJlZC5oCit3aW4ubzogJChzcmNkaXIpL3dpbi5jICQoc3JjZGlyKS9leHQyZWQuaAorZ3JvdXBfY29tLm86ICQoc3JjZGlyKS9ncm91cF9jb20uYyAkKHNyY2RpcikvZXh0MmVkLmgKK2ZpbGVfY29tLm86ICQoc3JjZGlyKS9maWxlX2NvbS5jICQoc3JjZGlyKS9leHQyZWQuaAorYmxvY2tiaXRtYXBfY29tLm86ICQoc3JjZGlyKS9ibG9ja2JpdG1hcF9jb20uYyAkKHNyY2RpcikvZXh0MmVkLmgKK2V4dDJfY29tLm86ICQoc3JjZGlyKS9leHQyX2NvbS5jICQoc3JjZGlyKS9leHQyZWQuaAoraW5vZGViaXRtYXBfY29tLm86ICQoc3JjZGlyKS9pbm9kZWJpdG1hcF9jb20uYyAkKHNyY2RpcikvZXh0MmVkLmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvUkVBRE1FIGIvZTJmc3Byb2dzL2V4dDJlZC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRhNGI4NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvUkVBRE1FCkBAIC0wLDAgKzEsMTYwIEBACitleHQyZWQgLSBUaGUgZXh0ZW5kZWQtMiBmaWxlc3lzdGVtIGVkaXRvciwgdmVyc2lvbiBlMmZzcHJvZ3MKKworCitUaGlzIHZlcnNpb24gb2YgZXh0MmVkIGhhcyBiZWVuIG1vZGlmaWVkIGFuZCB1cGRhdGVkIGJ5IFRoZW9kb3JlIFRzJ28KK2ZvciBpbmNsdXNpb24gd2l0aCB0aGUgZTJmc3Byb2dzIHBhY2thZ2UuICBJdCBub3cgYnVpbGRzIHdpdGggbW9kZXJuCituY3Vyc2VzIGFuZCBJJ3ZlIGZpeGVkIHZhcmlvdXMgc21hbGwgYnVncywgcGFydGljdWxhciBpbiB0aGUgcmVkcmF3aW5nCithbmQgcmVzaXppbmcgZnVuY3Rpb25zLgorCitJdCBpcyBjdXJyZW50bHkgbm90IGJ1aWx0IGJ5IGRlZmF1bHQgLS0gdGhlIHRvcC1sZXZlbCBlMmZzcHJvZ3MKK01ha2VmaWxlIGRvZXNuJ3QgcmVjdXJzZSBpbnRvIHRoaXMgZGlyZWN0b3J5LiAgVGhpcyBpcyBiZWNhdXNlIGV4dDJlZAoraGFzIGEgbnVtYmVyIG9mIFZFUlkgU0VSSU9VUyBzaG9ydGNvbWluZ3M6CisKKzEpICBJdCBkb2Vzbid0IHdvcmsgb24gZmlsZXN5c3RlbXMgYmlnZ2VyIHRoYW4gMkdCCisKKzIpICBJdCBhc3N1bWVzIHRoYXQgYWxsJ3MgdGhlIHdvcmxkIGFuIEludGVsLCBhbmQgYXNzdW1lcyB0aGF0CisJZXZlcnl0aGluZyBpcyBpbiBJbnRlbCAobGl0dGxlLWVuZGlhbikgYnl0ZSBvcmRlci4KKworRml4aW5nIGVpdGhlciBvZiB0aGVzZSBwcm9ibGVtcyB3b3VsZCBiZSBub24tdHJpdmlhbCwgYW5kIHNvIEkgYXQgdGhpcworcG9pbnQgRE8gTk9UIFJFQ09NTUVORCB0aGF0IGRpc3RyaWJ1dGlvbnMgdHJ5IHRvIGluY2x1ZGUgdGhpcyBwcm9ncmFtLAorZXZlbiBhcyBtb2RpZmllZCBhbmQgdXBkYXRlZCBpbiBlMmZzcHJvZ3MuICBUaGlzIGVzcGVjaWFsbHkgZ29lcyBmb3IKK0RlYmlhbiwgd2hlcmUgdGhlIERlYmlhbiBtYWludGFpbmVyIGZvciBlMmZzcHJvZ3MgaGFzIGEgaGlzdG9yeSBvZgorbWFraW5nIGF1dGhvcml6ZWQgY2hhbmdlcyB0byBlMmZzcHJvZ3MgdG8gaW5jbHVkZSBwcm9ncmFtcyB0aGF0IGFyZW4ndAorc3VwcG9ydGVkLCBhbmQgdGhlbiBzdGFydHMgYnVnZ2luZyBtZSB3aXRoIGJ1ZyByZXBvcnRzLiAgWUVTIEkgS05PVy4KK1RISVMgUFJPR1JBTSBIQVMgSE9SUklCTEUgU0hPUlRDT01JTkdTLiAgSVQgSVMgSU5DTFVERUQgSEVSRSBPTkxZCitCRUNBVVNFIElUJ1MgQSBDT05WRU5JRU5UIFdBWSBGT1IgKEZPUiBFMkZTUFJPR1MgREVWRUxPUEVSUyBPTiBJTlRFTAorTUFDSElORVMpIFRPIEdFTkVSQVRFIFRFU1QgQ0FTRVMgQlkgU0VMRUNUSVZFTFkgQ09SUlVQVElORworRklMRVNZU1RFTVMuICBJIFdJTEwgTk9UIFNVUFBPUlQgVEhJUyBQUk9HUkFNIEZPUiBVU0UgQlkgR0VORVJBTCBVU0VSUworU08gUExFQVNFIERPIE5PVCBJTkNMVURFIElUIElOIEEgRElTVFJJQlVUSU9OLgorCitJIGhhdmUgY3VycmVudGx5IGRpc2FibGVkIHRoZSB1c2Ugb2YgR05VIFJlYWRsaW5lIGluIHRoaXMgcHJvZ3JhbSwKK2JlY2F1c2UgcmVhZGxpbmUgYW5kIG5jdXJzZXMgcmVhbGx5IGRvbid0IHBsYXkgd2VsbCB0b2dldGhlciBhdCBhbGwuCitSZWFkbGluZSBhc3N1bWVzIHRoYXQgaXQgY2FuIHdyaXRlIGFyYml0cmFyeSB0ZXh0IHRvIHRoZSBzY3JlZW4KKyhlc3BlY2lhbGx5IHdoZW4gaXQgdHJpZXMgdG8gcHJpbnQgb3V0IGEgY29tcGxldGlvbiBsaXN0KSwgd2hpY2gganVzdAorZG9lc24ndCB3b3JrIHdpdGggbmN1cnNlcy4gIEZpeGluZyB0aGlzIHNvIHRoZXkgd291bGQgd29yayB0b2dldGhlcgord291bGQgcmVxdWlyZSB3aG9sZXNhbGUgY2hhbmdlcyB0byByZWFkbGluZS4gICAKKworCQkJCVRoZW9kb3JlIFRzJ28KKwkJCQl0eXRzb0BNSVQuRURVCisJCQkJTWF5IDEyLCAyMDAxCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZXh0MmVkIC0gVGhlIGV4dGVuZGVkLTIgZmlsZXN5c3RlbSBlZGl0b3IsIHZlcnNpb24gMC4yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBpcyB2ZXJzaW9uIDAuMiBvZiBleHQyZWQgLSBUaGUgZXh0ZW5kZWQtMiBmaWxlc3lzdGVtIGVkaXRvci4KKworTW9kaWZpY2F0aW9ucyBvbiBBcHIgNSAyMDAxCitUaGlzIGlzIG1pbm9yIGJ1ZyBmaXhlcyB0byBleHQyZWQsIGFzIG9mIEFwcmlsIDIwMDEuCitJdCBzdXBwb3J0cyBtb2Rlcm4gZXh0MiB2ZXJzaW9uIHRoYXQgaGFzIGZpbGUgdHlwZSBpbiBkaXJlY3Rvcnkgc3RydWN0dXJlCithbmQgZml4ZXMgdGhlIG1pc3N1bmRlcnN0YW5kaW5nIGJldHdlZW4gbmN1cnNlcyBhbmQKK3JlYWRsaW5lLgorCitJIGZpcnN0IGFwcGxpZWQgcGF0Y2hlcyBmcm9tIFJlZGhhdCBleGNlcHQgdGhlIG9uZSBmb3IgcmVhZGxpbmUgdGhhdCAKK3Jld3JvdGUgYSByZWFkbGluZSBiZWhhdmlvci4KKworR2xvYmFscyBkaWZmcyBiZXR3ZWVuIHZlcnNpb24gMC4xIGFuZCAwLjIgaXMgc3RvcmVkIGluIGZpbGUgOgorCWRpZmYtZXh0MmVkLjEuMgorCitDaHJpc3RpYW4gQmFjIDxDaHJpc3RpYW4uQmFjQG50LWV2cnkuZnI+CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCitleHQyZWQncyBkb2N1bWVudGF0aW9uIGNvbnNpc3RzIG9mIHRocmVlIGRvY3VtZW50czoKKworMS4JVGhlIHVzZXIncyBndWlkZS4KKzIuCVRlY2huaWNhbCBvdmVydmlldyBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtLgorMy4JVGhlIEVYVDJFRCBkZXNpZ24gYW5kIGltcGxlbWVudGF0aW9uIGRvY3VtZW50LgorCitUaG9zZSBkb2N1bWVudHMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgZG9jIGRpcmVjdG9yeSwgaW4gbGludXhkb2Mtc2dtbCBhbmQKK3Bvc3RzY3JpcHQgZm9ybWF0cy4KKworVGhlIGRvY3VtZW50YXRpb24gaXMgYWxzbyBhdmFpbGFibGUgb25saW5lIGF0OgorCitodHRwOi8vdG9jaG5hcGMyLnRlY2huaW9uLmFjLmlsCisKK3VuZGVyIHRoZSBleHQyZWQgc2VjdGlvbi4KKworSW5zdGFsbGF0aW9uCistLS0tLS0tLS0tLS0KKworZXh0MmVkIHJlcXVpcmVzIHRoZSBrZXJuZWwgc291cmNlcyBhbmQgdGhlIHJlYWRsaW5lIGFuZCBuY3Vyc2VzIHBhY2thZ2VzLgorUGxlYXNlIGVkaXQgdGhlIG1ha2VmaWxlIGlmIHlvdSBhcmUgdXNpbmcgYW4gIm9sZCIgdmVyc2lvbiBvZiBuY3Vyc2VzIChTZWUgdGhlCitkZXRhaWxzIGJlbG93KSBvciBpZiBnY2MgY2FuJ3QgZmluZCB0aGUgdmFyaW91cyBoZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmllcy4KKworVG8gaW5zdGFsbCwgc2ltcGx5IGlzc3VlIGEgJ21ha2UnIGNvbW1hbmQgdG8gY29tcGlsZSBhbmQgYSAnbWFrZSBpbnN0YWxsJworY29tbWFuZCB0byBpbnN0YWxsLiBJIGhhdmUgYWxzbyBpbmNsdWRlZCBhbiBhbHJlYWR5IGNvbXBpbGVkIGxpbnV4IGEub3V0CitiaW5hcnkuCisKK2V4dDJlZCBhbmQgbmN1cnNlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKK2V4dDJlZCB1c2VzIHRoZSBuY3Vyc2VzIGxpYnJhcnkgZm9yIHRlcm1pbmFsIG91dHB1dC4gSXQgaXMgdmVyeSBpbXBvcnRhbnQKK3RoYXQgbmN1cnNlcyB3aWxsIGJlIHByb3Blcmx5IGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbToKKworMS4JT2xkIHZlcnNpb25zIG9mIG5jdXJzZXMgKGFyb3VuZCAxLjguNSkgbmVlZCB0aGUgT0xEX05DVVJTRVMgY29tcGlsZQorCXRpbWUgb3B0aW9uIGluIEVYVDJFRC4KKworCUF0IGxlYXN0IGZyb20gMS45LjJjLCB0aGlzIGZsYWcgc2hvdWxkIG5vdCBiZSB1c2VkLiBJIHdvdWxkIHJlY29tbWVuZAorCXVwZ3JhZGluZyB0aGUgbmN1cnNlcyBsaWJyYXJ5IHRvIHRoZSBuZXdlciB2ZXJzaW9ucy4KKworMi4JbmN1cnNlcyB1c2VzIGl0cyBvd24gdGVybWluZm8gZGF0YWJhc2UgcmF0aGVyIHRoZW4gdGhlIHRlcm1jYXAgZmlsZS4KKwlJdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGUgdGVybWluZm8gZGF0YWJhc2Ugd2lsbCBiZSBmb3VuZCBieSBuY3Vyc2VzLgorCUlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCB5b3Ugd2lsbCBzZWUgb24gc3RhcnR1cCBzb21lIGxpbmVzIHdoaWNoCisJcmVmZXIgdG8gL2V0Yy90ZXJtY2FwLiBUaGlzIHdpbGwgbWVhbiB0aGF0IHRoZXJlIGlzIGEgcHJvYmxlbSB3aXRoCisJdGhlIHRlcm1pbmZvIGRhdGFiYXNlLgorCiszLglOZXdlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzIChhbmQgdGhlIDEuMyBzZXJpZXMgb2YgdGhlIGtlcm5lbCkgZGVzY3JpYmUKKwl0aGUgbGludXggY29uc29sZSBpbiB0aGUgZW50cnkgJ2xpbnV4JyBhbmQgbm90ICdjb25zb2xlJywgYXMgaXQgd2FzCisJYmVmb3JlLiBJZiB5b3UgcnVuIGV4dDJlZCBpbiB0aGUgbGludXggY29uc29sZSwgeW91IHNob3VsZCBlaXRoZXIKKwlzZXQgeW91ciBURVJNIGVudmlyb25tZW50IHZhcmlhYmxlIHRvICdsaW51eCcgb3IgbGluaworCWwvbGludXggdG8gYy9jb25zb2xlIGluIHRoZSB0ZXJtaW5mbyBkYXRhYmFzZS4KKworNC4JVGhlIHBlcmNvbXBpbGVkIGJpbmFyeSB3YXMgbGlua2VkIHdpdGggbmN1cnNlcyAxLjkuNCBhbmQgd2lsbCBzZWFyY2gKKwlmb3IgdGhlIHRlcm1pbmZvIGRhdGFiYXNlIG9uIC91c3IvbG9jYWwvbGliL3Rlcm1pbmZvLiBJZiB5b3UgYXJlCisJdXNpbmcgaXQsIGFuZCB5b3VyIDEuOS40IGNvbXBhdGlibGUgdGVybWluZm8gZGF0YWJhc2UgaXMgbm90IG9uIHRoZQorCWRpcmVjdG9yeSBhYm92ZSwgdXNlIHRoZSBURVJNSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzcGVjaWZ5CisJYW4gYWx0ZXJuYXRlIGxvY2F0aW9uLgorCitSdW5uaW5nIGV4dDJlZAorLS0tLS0tLS0tLS0tLS0KKworRm9yIHRob3NlIG9mIHlvdSB3aG8gZG9uJ3QgbGlrZSByZWFkaW5nIGxlbmd0aHkgYXJ0aWNsZXMsIGhlcmUgYXJlIGEgZmV3CitiYXNpYyBndWlkZWxpbmVzOgorCisxLglEb24ndCB1c2UgZXh0MmVkIHRvIGNoYW5nZSBhIG1vdW50ZWQgZmlsZXN5c3RlbSAhCisKKwlVc2luZyBleHQyZWQgaW4gcmVhZC1vbmx5IG1vZGUgb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIGJlIGFsbG93ZWQKKwlieSB1c2luZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbiAnQWxsb3dNb3VudGVkUmVhZCBvbicuIEhvd2V2ZXIsCisJbm90ZSB0aGF0IHRoZSBkaXNwbGF5ZWQgZGF0YSB3aWxsIGJlIHVucmVsaWFibGUuCisKKzIuCWV4dDJlZCBjdXJyZW50bHkgY2FuJ3QgaGFuZGxlIGZpbGVzeXN0ZW1zIGJpZ2dlciB0aGFuIDIgR0IuIEkgYW0KKwlzb3JyeSBmb3IgdGhlIGluY29udmVuaWVuY2UuIFRoaXMgd2lsbCBob3BlZnVsbHkgYmUgZml4ZWQgaW4gZnV0dXJlCisJcmVsZWFzZXMuCisKKzMuIAlCZWZvcmUgcnVubmluZyBleHQyZWQsIGVkaXQgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQorCS92YXIvbGliL2V4dDJlZC9leHQyZWQuY29uZiB0byBzdWl0IHlvdXIgbmVlZHMuIFRoZSB2YXJpb3VzCisJY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkb2N1bWVudGVkIHRoZXJlLgorCis0LglVc2UgdGhlICdzZXRkZXZpY2UnIGNvbW1hbmQgdG8gb3BlbiBhbiBleHQyIGZpbGVzeXN0ZW0uCisJZS5nLiAnc2V0ZGV2aWNlIC9kZXYvaGRhMScuCisKKzUuCUlmIHRoZSBmaWxlc3lzdGVtIGlzIGFuIGV4dDIgZmlsZXN5c3RlbSBhbmQgZXh0MmVkIGZhaWxzIHRvCisJYXV0b2RldGVjdCB0aGlzLCB1c2UgdGhlICdGb3JjZUV4dDIgb24nIGNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb24uCisKKzYuCVRoZSBmaWxlc3lzdGVtIHdpbGwgYWx3YXlzIGJlIG9wZW5lZCBpbiByZWFkLW9ubHkgbW9kZS4gRmVlbCBmcmVlIHRvCisJZXhwZXJpbWVudCwgYnV0IHRha2UgY2FyZSB3aXRoIHRoZSAnZW5hYmxld3JpdGUnIGNvbW1hbmQuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZlZWwgZnJlZSB0byBzZW5kIG1lIGZlZWRiYWNrIHdpdGggYW55dGhpbmcgcmVnYXJkaW5nIHRvIGV4dDJlZC4KKworRW5qb3ksCisKK0dhZGkgT3htYW4gPHRndWRAdG9jaG5hcGMyLnRlY2huaW9uLmFjLmlsPgorSGFpZmEsIEF1Z3VzdCAyMyAxOTk1CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvYmxvY2tiaXRtYXBfY29tLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL2Jsb2NrYml0bWFwX2NvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTYxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL2Jsb2NrYml0bWFwX2NvbS5jCkBAIC0wLDAgKzEsMjY2IEBACisvKgorCisvdXNyL3NyYy9leHQyZWQvYmxvY2tiaXRtYXBfY29tLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIYW5kbGVzIHRoZSBibG9jayBiaXRtYXAuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBjb21tYW5kcyB3aGljaCBhcmUgc3BlY2lmaWMgdG8gdGhlIGJsb2NrYml0bWFwIHR5cGUuCisKK0ZpcnN0IHdyaXR0ZW4gb246IEp1bHkgNSAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZXh0MmVkLmgiCisKKy8qCisKK1RoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIHVzZSB0aGUgZmxvYmFsIHN0cnVjdHVyZSBibG9ja19iaXRtYXBfaW5mby4gVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGN1cnJlbnQKK3Bvc2l0aW9uIGluIHRoZSBiaXRtYXAuCisKKyovCisKK3ZvaWQgdHlwZV9leHQyX2Jsb2NrX2JpdG1hcF9fX2VudHJ5IChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK1RoaXMgZnVuY3Rpb24gY2hhbmdlcyB0aGUgY3VycmVudCBlbnRyeSBpbiB0aGUgYml0bWFwLiBJdCBqdXN0IGNoYW5nZXMgdGhlIGVudHJ5X251bSB2YXJpYWJsZSBpbiBibG9ja19iaXRtYXBfaW5mbworYW5kIGRpc3BhdGNoZXMgYSBzaG93IGNvbW1hbmQgdG8gc2hvdyB0aGUgbmV3IGVudHJ5LgorCisqLworCit7CisJdW5zaWduZWQgbG9uZyBlbnRyeV9udW07CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsJCQkJCS8qIEdldCB0aGUgcmVxdWVzdGVkIGVudHJ5ICovCisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTm8gYXJndW1lbnQgc3BlY2lmaWVkXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsJcmV0dXJuOworCX0KKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwllbnRyeV9udW09YXRvbCAoYnVmZmVyKTsKKworCisJaWYgKGVudHJ5X251bSA+PSBmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfYmxvY2tzX3Blcl9ncm91cCkgewkvKiBDaGVjayBpZiBpdCBpcyBhIHZhbGlkIGVudHJ5IG51bWJlciAqLworCisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVudHJ5IG51bWJlciBvdXQgb2YgYm91bmRzXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisKKworCWJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bT1lbnRyeV9udW07CQkJCQkvKiBJZiBpdCBpcywganVzdCBjaGFuZ2UgZW50cnlfbnVtIGFuZCAqLworCXN0cmNweSAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CQkJCS8qIGRpc3BhdGNoIGEgc2hvdyBjb21tYW5kICovCit9CisKK3ZvaWQgdHlwZV9leHQyX2Jsb2NrX2JpdG1hcF9fX25leHQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworVGhpcyBmdW5jdGlvbiBwYXNzZXMgdG8gdGhlIG5leHQgZW50cnkgaW4gdGhlIGJpdG1hcC4gV2UganVzdCBjYWxsIHRoZSBhYm92ZSBlbnRyeSBjb21tYW5kLgorCisqLworCit7CisJbG9uZyBlbnRyeV9vZmZzZXQ9MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQllbnRyeV9vZmZzZXQ9YXRvbCAoYnVmZmVyKTsKKwl9CisKKwlzcHJpbnRmIChidWZmZXIsImVudHJ5ICVsZCIsYmxvY2tfYml0bWFwX2luZm8uZW50cnlfbnVtK2VudHJ5X29mZnNldCk7CisJZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2Jsb2NrX2JpdG1hcF9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgZW50cnlfb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJZW50cnlfb2Zmc2V0PWF0b2wgKGJ1ZmZlcik7CisJfQorCisJc3ByaW50ZiAoYnVmZmVyLCJlbnRyeSAlbGQiLGJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bS1lbnRyeV9vZmZzZXQpOworCWRpc3BhdGNoIChidWZmZXIpOworfQorCit2b2lkIHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19hbGxvY2F0ZSAoY2hhciAqY29tbWFuZF9saW5lKQorCisvKgorCitUaGlzIGZ1bmN0aW9uIHN0YXJ0cyBhbGxvY2F0aW5nIGJsb2NrIGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24uIEFsbG9jYXRpbmcgaW52b2x2ZXMgc2V0dGluZyB0aGUgY29ycmVjdCBiaXRzCitpbiB0aGUgYml0bWFwLiBUaGlzIGZ1bmN0aW9uIGlzIGEgdmVjdG9yIHZlcnNpb24gb2YgYWxsb2NhdGVfYmxvY2sgYmVsb3cgLSBXZSBqdXN0IHJ1biBvbiB0aGUgYmxvY2tzIHRoYXQKK3dlIG5lZWQgdG8gYWxsb2NhdGUsIGFuZCBjYWxsIGFsbG9jYXRlX2Jsb2NrIGZvciBlYWNoIG9uZS4KKworKi8KKworeworCWxvbmcgZW50cnlfbnVtLG51bT0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsJCQkJCS8qIEdldCB0aGUgbnVtYmVyIG9mIGJsb2NrcyB0byBhbGxvY2F0ZSAqLworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJbnVtPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJZW50cnlfbnVtPWJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bTsKKwkJCQkJCQkJCQkvKiBDaGVjayBmb3IgbGltaXRzICovCisJaWYgKG51bSA+IGZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19ibG9ja3NfcGVyX2dyb3VwLWVudHJ5X251bSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBUaGVyZSBhcmVuJ3QgdGhhdCBtdWNoIGJsb2NrcyBpbiB0aGUgZ3JvdXBcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisKKwl3aGlsZSAobnVtKSB7CQkJCQkJCQkvKiBBbmQgY2FsbCBhbGxvY2F0ZV9ibG9jayAqLworCQlhbGxvY2F0ZV9ibG9jayAoZW50cnlfbnVtKTsJCQkJCS8qIGZvciBlYWNoIGJsb2NrICovCisJCW51bS0tO2VudHJ5X251bSsrOworCX0KKworCWRpc3BhdGNoICgic2hvdyIpOwkJCQkJCQkvKiBTaG93IHRoZSByZXN1bHQgKi8KK30KKwordm9pZCB0eXBlX2V4dDJfYmxvY2tfYml0bWFwX19fZGVhbGxvY2F0ZSAoY2hhciAqY29tbWFuZF9saW5lKQorCisvKiBUaGlzIGlzIHRoZSBvcHBvc2l0ZSBvZiB0aGUgYWJvdmUgZnVuY3Rpb24gLSBXZSBjYWxsIGRlYWxsb2NhdGVfYmxvY2sgaW5zdGVhZCBvZiBhbGxvY2F0ZV9ibG9jayAqLworCit7CisJbG9uZyBlbnRyeV9udW0sbnVtPTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJbnVtPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJZW50cnlfbnVtPWJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bTsKKwlpZiAobnVtID4gZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2Jsb2Nrc19wZXJfZ3JvdXAtZW50cnlfbnVtKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIFRoZXJlIGFyZW4ndCB0aGF0IG11Y2ggYmxvY2tzIGluIHRoZSBncm91cFxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKworCXdoaWxlIChudW0pIHsKKwkJZGVhbGxvY2F0ZV9ibG9jayAoZW50cnlfbnVtKTsKKwkJbnVtLS07ZW50cnlfbnVtKys7CisJfQorCisJZGlzcGF0Y2ggKCJzaG93Iik7Cit9CisKKwordm9pZCBhbGxvY2F0ZV9ibG9jayAobG9uZyBlbnRyeV9udW0pCisKKy8qIEluIHRoaXMgZnVuY3Rpb24gd2UgY29udmVydCB0aGUgYml0IG51bWJlciBpbnRvIHRoZSByaWdodCBieXRlIGFuZCBpbm5lciBiaXQgcG9zaXRpb25zLiAqLworCit7CisJdW5zaWduZWQgY2hhciBiaXRfbWFzaz0xOworCWludCBieXRlX29mZnNldCxqOworCisJYnl0ZV9vZmZzZXQ9ZW50cnlfbnVtLzg7CQkJCQkvKiBGaW5kIHRoZSBjb3JyZWN0IGJ5dGUgLSBlbnRyeV9udW0vOCAqLworCQkJCQkJCQkJLyogVGhlIHBvc2l0aW9uIGluc2lkZSB0aGUgYnl0ZSBpcyBlbnRyeV9udW0gJTggKi8KKwlmb3IgKGo9MDtqPGVudHJ5X251bSU4O2orKykKKwkJYml0X21hc2sqPTI7CQkJCQkJLyogR2VuZXJhdGUgdGhlIG9yIG1hc2sgLSAxIGF0IHRoZSByaWdodCBwbGFjZSAqLworCXR5cGVfZGF0YS51LmJ1ZmZlciBbYnl0ZV9vZmZzZXRdIHw9IGJpdF9tYXNrOwkJCS8qIEFuZCBhcHBseSBpdCAqLworfQorCit2b2lkIGRlYWxsb2NhdGVfYmxvY2sgKGxvbmcgZW50cnlfbnVtKQorCisvKiBUaGlzIGlzIHRoZSBvcHBvc2l0ZSBvZiBhbGxvY2F0ZV9ibG9jayBhYm92ZS4gV2UgdXNlIGFuIGFuZCBtYXNrIGluc3RlYWQgb2YgYW4gb3IgbWFzay4gKi8KKworeworCXVuc2lnbmVkIGNoYXIgYml0X21hc2s9MTsKKwlpbnQgYnl0ZV9vZmZzZXQsajsKKworCWJ5dGVfb2Zmc2V0PWVudHJ5X251bS84OworCWZvciAoaj0wO2o8ZW50cnlfbnVtJTg7aisrKQorCQliaXRfbWFzayo9MjsKKwliaXRfbWFza149MHhmZjsKKworCXR5cGVfZGF0YS51LmJ1ZmZlciBbYnl0ZV9vZmZzZXRdICY9IGJpdF9tYXNrOworfQorCit2b2lkIHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK1dlIHNob3cgdGhlIGJpdG1hcCBhcyBhIHNlcmllcyBvZiBiaXRzLCBncm91cGVkIGF0IDgtYml0IGludGVydmFscy4gV2UgZGlzcGxheSA4IHN1Y2ggZ3JvdXBzIG9uIGVhY2ggbGluZS4KK1RoZSBjdXJyZW50IHBvc2l0aW9uIChhcyBrbm93biBmcm9tIGJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bSkgaXMgaGlnaGxpZ2h0ZWQuCisKKyovCisKK3sKKwlpbnQgaSxqOworCXVuc2lnbmVkIGNoYXIgKnB0cjsKKwl1bnNpZ25lZCBsb25nIGJsb2NrX251bSxlbnRyeV9udW07CisKKwlwdHI9dHlwZV9kYXRhLnUuYnVmZmVyOworCXNob3dfcGFkX2luZm8ubGluZT0wO3Nob3dfcGFkX2luZm8ubWF4X2xpbmU9LTE7CisKKwl3bW92ZSAoc2hvd19wYWQsMCwwKTsKKwlmb3IgKGk9MCxlbnRyeV9udW09MDtpPGZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19ibG9ja3NfcGVyX2dyb3VwLzg7aSsrLHB0cisrKSB7CisJCWZvciAoaj0xO2o8PTEyODtqKj0yKSB7CQkJCQkJLyogaiBjb250YWlucyB0aGUgYW5kIGJpdCBtYXNrICovCisJCQlpZiAoZW50cnlfbnVtPT1ibG9ja19iaXRtYXBfaW5mby5lbnRyeV9udW0pIHsJCS8qIEhpZ2hsaWdodCB0aGUgY3VycmVudCBlbnRyeSAqLworCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX1JFVkVSU0UpOworCQkJCXNob3dfcGFkX2luZm8ubGluZT1zaG93X3BhZF9pbmZvLm1heF9saW5lLXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcy8yOworCQkJfQorCisJCQlpZiAoKCpwdHIpICYgaikJCQkJCQkvKiBBcHBseSB0aGUgbWFzayAqLworCQkJCXdwcmludHcgKHNob3dfcGFkLCIxIik7CisJCQllbHNlCisJCQkJd3ByaW50dyAoc2hvd19wYWQsIjAiKTsKKworCQkJaWYgKGVudHJ5X251bT09YmxvY2tfYml0bWFwX2luZm8uZW50cnlfbnVtKQorCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisKKwkJCWVudHJ5X251bSsrOwkJCQkJCS8qIFBhc3MgdG8gdGhlIG5leHQgZW50cnkgKi8KKwkJfQorCQl3cHJpbnR3IChzaG93X3BhZCwiICIpOworCQlpZiAoaSU4PT03KSB7CQkJCQkJCS8qIERpc3BsYXkgOCBncm91cHMgaW4gYSByb3cgKi8KKwkJCXdwcmludHcgKHNob3dfcGFkLCJcbiIpOworCQkJc2hvd19wYWRfaW5mby5tYXhfbGluZSsrOworCQl9CisJfQorCisJcmVmcmVzaF9zaG93X3BhZCAoKTsKKwlzaG93X2luZm8gKCk7CQkJCQkJCQkvKiBTaG93IHRoZSB1c3VhbCBpbmZvcm1hdGlvbiAqLworCisJCQkJCQkJCQkJLyogU2hvdyB0aGUgZ3JvdXAgbnVtYmVyICovCisJd21vdmUgKHNob3dfd2luLDEsMCk7CisJd3ByaW50dyAoc2hvd193aW4sIkJsb2NrIGJpdG1hcCBvZiBibG9jayBncm91cCAlbGRcbiIsYmxvY2tfYml0bWFwX2luZm8uZ3JvdXBfbnVtKTsKKwkJCQkJCQkJCQkvKiBTaG93IHRoZSBibG9jayBudW1iZXIgKi8KKworCWJsb2NrX251bT1ibG9ja19iaXRtYXBfaW5mby5lbnRyeV9udW0rYmxvY2tfYml0bWFwX2luZm8uZ3JvdXBfbnVtKmZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19ibG9ja3NfcGVyX2dyb3VwOworCWJsb2NrX251bSs9ZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2ZpcnN0X2RhdGFfYmxvY2s7CisKKwl3cHJpbnR3IChzaG93X3dpbiwiU3RhdHVzIG9mIGJsb2NrICVsZCAtICIsYmxvY2tfbnVtKTsJCQkvKiBhbmQgdGhlIGFsbG9jYXRpb24gc3RhdHVzICovCisJcHRyPXR5cGVfZGF0YS51LmJ1ZmZlcitibG9ja19iaXRtYXBfaW5mby5lbnRyeV9udW0vODsKKwlqPTE7CisJZm9yIChpPWJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bSAlIDg7aT4wO2ktLSkKKwkJaio9MjsKKwlpZiAoKCpwdHIpICYgaikKKwkJd3ByaW50dyAoc2hvd193aW4sIkFsbG9jYXRlZFxuIik7CisJZWxzZQorCQl3cHJpbnR3IChzaG93X3dpbiwiRnJlZVxuIik7CisJcmVmcmVzaF9zaG93X3dpbiAoKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvZGlyX2NvbS5jIGIvZTJmc3Byb2dzL2V4dDJlZC9kaXJfY29tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE4NTI2NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvZGlyX2NvbS5jCkBAIC0wLDAgKzEsNjc4IEBACisvKgorCisvdXNyL3NyYy9leHQyZWQvZGlyX2NvbS5jCisKK0EgcGFydCBvZiB0aGUgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gMiBkaXNrIGVkaXRvci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hhbmRsZXMgZGlyZWN0b3JpZXMuCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGZpbGUgY29udGFpbnMgdGhlIGNvZGVzIHdoaWNoIGFsbG93cyB0aGUgdXNlciB0byBoYW5kbGUgZGlyZWN0b3JpZXMuCisKK01vc3Qgb2YgdGhlIGZ1bmN0aW9ucyB1c2UgdGhlIGdsb2JhbCB2YXJpYWJsZSBmaWxlX2luZm8gKGFsb25nIHdpdGggdGhlIHNwZWNpYWwgZGlyZWN0b3J5IGZpZWxkcyB0aGVyZSkgdG8gc2F2ZQoraW5mb3JtYXRpb24gYW5kIHBhc3MgaXQgYmV0d2VlbiB0aGVtLgorCitTaW5jZSBhIGRpcmVjdG9yeSBpcyBqdXN0IGEgYmlnIGZpbGUgd2hpY2ggaXMgY29tcG9zZWQgb2YgZGlyZWN0b3J5IGVudHJpZXMsIHlvdSB3aWxsIGZpbmQgdGhhdAordGhlIGZ1bmN0aW9ucyBoZXJlIGFyZSBhIHN1cGVyc2V0IG9mIHRob3NlIGluIHRoZSBmaWxlX2NvbS5jIHNvdXJjZS4KKworV2UgYXNzdW1lIHRoYXQgdGhlIHVzZXIgcmVhY2hlZCBoZXJlIHVzaW5nIHRoZSBkaXIgY29tbWFuZCBvZiB0aGUgaW5vZGUgdHlwZSBhbmQgbm90IGJ5IHVzaW5nIHNldHR5cGUgZGlyLCBzbwordGhhdCBpbml0X2Rpcl9pbmZvIGlzIGluZGVlZCBjYWxsZWQgdG8gZ2F0aGVyIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi4KKwordHlwZV9kYXRhIGlzIG5vdCBjaGFuZ2VkISBJdCBzdGlsbCBjb250YWlucyB0aGUgaW5vZGUgb2YgdGhlIGZpbGUgLSBXZSBoYW5kbGUgdGhlIGRpcmVjdG9yeSBpbiBvdXIgb3duCit2YXJpYWJsZXMsIHNvIHRoYXQgc2V0dHlwZSBleHQyX2lub2RlIHdpbGwgImdvIGJhY2siIHRvIHRoZSBpbm9kZSBvZiB0aGlzIGRpcmVjdG9yeS4KKworRmlyc3Qgd3JpdHRlbiBvbjogQXByaWwgMjggMTk5NQorCitDb3B5cmlnaHQgKEMpIDE5OTUgR2FkaSBPeG1hbgorCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImV4dDJlZC5oIgorCitjaGFyIG5hbWVfc2VhcmNoIFs4MF07Citsb25nIGVudHJ5X251bV9zZWFyY2g7CisKK2ludCBpbml0X2Rpcl9pbmZvIChzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyAqaW5mb19wdHIpCisKKy8qCisKK1RoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBpbm9kZSBvZiB0aGUgZGlyZWN0b3J5IHdoZW4gdGhlIHVzZXIgaXNzdWVzIHRoZSBkaXIgY29tbWFuZCBmcm9tIHRoZSBpbm9kZS4KK0l0IGlzIHVzZWQgdG8gZ2F0aGVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbm9kZSBhbmQgdG8gcmVzZXQgc29tZSB2YXJpYWJsZXMgd2hpY2ggd2UgbmVlZCBpbiBvcmRlciB0byBoYW5kbGUKK2RpcmVjdG9yaWVzLgorCisqLworCit7CisJc3RydWN0IGV4dDJfaW5vZGUgKnB0cjsKKworCXB0cj0mdHlwZV9kYXRhLnUudF9leHQyX2lub2RlOwkJCQkJLyogdHlwZV9kYXRhIGNvbnRhaW5zIHRoZSBpbm9kZSAqLworCisJaW5mb19wdHItPmlub2RlX3B0cj1wdHI7CisJaW5mb19wdHItPmlub2RlX29mZnNldD1kZXZpY2Vfb2Zmc2V0OwkJCQkvKiBkZXZpY2Ugb2Zmc2V0IGNvbnRhaW5zIHRoZSBpbm9kZSdzIG9mZnNldCAqLworCisJCQkJCQkJCQkvKiBSZXNldCB0aGUgY3VycmVudCBwb3NpdGlvbiB0byB0aGUgc3RhcnQgKi8KKworCWluZm9fcHRyLT5nbG9iYWxfYmxvY2tfbnVtPXB0ci0+aV9ibG9jayBbMF07CisJaW5mb19wdHItPmdsb2JhbF9ibG9ja19vZmZzZXQ9cHRyLT5pX2Jsb2NrIFswXSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJaW5mb19wdHItPmJsb2NrX251bT0wOworCWluZm9fcHRyLT5maWxlX29mZnNldD0wOworCQkJCQkJCQkJLyogU2V0IHRoZSBzaXplIG9mIHRoZSBkaXJlY3RvcnkgKi8KKworCWluZm9fcHRyLT5ibG9ja3NfY291bnQ9KHB0ci0+aV9zaXplK2ZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZS0xKS9maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJaW5mb19wdHItPmZpbGVfbGVuZ3RoPXB0ci0+aV9zaXplOworCisJaW5mb19wdHItPmxldmVsPTA7CQkJCQkJLyogV2Ugc3RhcnQgdXNpbmcgZGlyZWN0IGJsb2NrcyAqLworCWluZm9fcHRyLT5kaXNwbGF5PUhFWDsJCQkJCQkvKiBUaGlzIGlzIG5vdCBhY3R1YWxseSB1c2VkICovCisKKwlpbmZvX3B0ci0+ZGlyX2VudHJ5X251bT0wO2luZm9fcHRyLT5kaXJfZW50cmllc19jb3VudD0wOwkvKiBXZSdsbCBzdGFydCBhdCB0aGUgZmlyc3QgZGlyZWN0b3J5IGVudHJ5ICovCisJaW5mb19wdHItPmRpcl9lbnRyeV9vZmZzZXQ9MDsKKworCS8qIEZpbmQgZGlyX2VudHJpZXNfY291bnQgKi8KKworCWluZm9fcHRyLT5kaXJfZW50cmllc19jb3VudD1jb3VudF9kaXJfZW50cmllcyAoKTsgCQkvKiBTZXQgdGhlIHRvdGFsIG51bWJlciBvZiBlbnRyaWVzICovCisKKwlyZXR1cm4gKDEpOworfQorCitzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyBzZWFyY2hfZGlyX2VudHJpZXMgKGludCAoKmFjdGlvbikgKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKSxpbnQgKnN0YXR1cykKKworLyoKKwlUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGluIHRoaXMgc291cmNlIGZpbGUuIFZhcmlvdXMgYWN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgdGhpcyBiYXNpYyBmdW5jdGlvbi4KKworCVRoaXMgcm91dGluZSBydW5zIG9uIGFsbCBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisJRm9yIGVhY2ggZW50cnksIGFjdGlvbiBpcyBjYWxsZWQuIFdlJ2xsIGFjdCBhY2NvcmRpbmcgdG8gdGhlIHJldHVybiBjb2RlIG9mIGFjdGlvbjoKKworCQlBQk9SVAkJLQlDdXJyZW50IGRpciBlbnRyeSBpcyByZXR1cm5lZC4KKwkJQ09OVElOVUUJLQlDb250aW51ZSBzZWFyY2hpbmcuCisJCUZPVU5ECQktCUN1cnJlbnQgZGlyIGVudHJ5IGlzIHJldHVybmVkLgorCisJSWYgdGhlIGxhc3QgZW50cnkgaXMgcmVhY2hlZCwgaXQgaXMgcmV0dXJuZWQsIGFsb25nIHdpdGggYW4gQUJPUlQgc3RhdHVzLgorCisJc3RhdHVzIGlzIHVwZGF0ZWQgdG8gdGhlIHJldHVybmVkIGNvZGUgb2YgYWN0aW9uLgorKi8KKworeworCXN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvIGluZm87CQkJCQkJLyogVGVtcG9yYXJ5IHZhcmlhYmxlcyB1c2VkIHRvICovCisJc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKmRpcl9lbnRyeV9wdHI7CQkJCQkvKiBjb250YWluIHRoZSBjdXJyZW50IHNlYXJjaCBlbnRyaWVzICovCisJaW50IHJldHVybl9jb2RlLCBuZXh0OworCisJaW5mbz1maXJzdF9maWxlX2luZm87CQkJCQkJCS8qIFN0YXJ0IGZyb20gdGhlIGZpcnN0IGVudHJ5IC0gUmVhZCBpdCAqLworCWxvd19yZWFkIChpbmZvLmJ1ZmZlcixmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUsaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0KTsKKwlkaXJfZW50cnlfcHRyPShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfMiAqKSAoaW5mby5idWZmZXIraW5mby5kaXJfZW50cnlfb2Zmc2V0KTsKKworCXdoaWxlIChpbmZvLmZpbGVfb2Zmc2V0IDwgaW5mby5maWxlX2xlbmd0aCkgewkJCQkvKiBXaGlsZSB3ZSBoYXZlbid0IHJlYWNoZWQgdGhlIGVuZCAqLworCisJCSpzdGF0dXM9cmV0dXJuX2NvZGU9YWN0aW9uICgmaW5mbyk7CQkJCS8qIENhbGwgdGhlIGNsaWVudCBmdW5jdGlvbiB0byB0ZXN0ICovCisJCQkJCQkJCQkJLyogdGhlIGN1cnJlbnQgZW50cnkgKi8KKwkJaWYgKHJldHVybl9jb2RlPT1BQk9SVCB8fCByZXR1cm5fY29kZT09Rk9VTkQpCisJCQlyZXR1cm4gKGluZm8pOwkJCQkJCS8qIFN0b3AsIGlmIHNvIGFza2VkICovCisKKwkJCQkJCQkJCQkvKiBQYXNzIHRvIHRoZSBuZXh0IGVudHJ5ICovCisKKwkJZGlyX2VudHJ5X3B0cj0oc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKikgKGluZm8uYnVmZmVyK2luZm8uZGlyX2VudHJ5X29mZnNldCk7CisKKwkJaW5mby5kaXJfZW50cnlfbnVtKys7CisJCW5leHQgPSBkaXJfZW50cnlfcHRyLT5yZWNfbGVuOworCQlpZiAoIW5leHQpCisJCQluZXh0ID0gZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplIC0gaW5mby5kaXJfZW50cnlfb2Zmc2V0OworCQlpbmZvLmRpcl9lbnRyeV9vZmZzZXQgKz0gbmV4dDsKKwkJaW5mby5maWxlX29mZnNldCArPSBuZXh0OworCisJCWlmIChpbmZvLmZpbGVfb2Zmc2V0ID49IGluZm8uZmlsZV9sZW5ndGgpIGJyZWFrOworCisJCWlmIChpbmZvLmRpcl9lbnRyeV9vZmZzZXQgPj0gZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplKSB7CS8qIFdlIGNyb3NzZWQgYSBibG9jayBib3VuZGFyeSAqLworCQkJCQkJCQkJCS8qIEZpbmQgdGhlIG5leHQgYmxvY2ssICovCisJCQlpbmZvLmJsb2NrX251bSsrOworCQkJaW5mby5nbG9iYWxfYmxvY2tfbnVtPWZpbGVfYmxvY2tfdG9fZ2xvYmFsX2Jsb2NrIChpbmZvLmJsb2NrX251bSwmaW5mbyk7CisJCQlpbmZvLmdsb2JhbF9ibG9ja19vZmZzZXQ9aW5mby5nbG9iYWxfYmxvY2tfbnVtKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKwkJCWluZm8uZmlsZV9vZmZzZXQ9aW5mby5ibG9ja19udW0qZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCQkJaW5mby5kaXJfZW50cnlfb2Zmc2V0PTA7CisJCQkJCQkJCQkJLyogcmVhZCBpdCBhbmQgdXBkYXRlIHRoZSBwb2ludGVyICovCisKKwkJCWxvd19yZWFkIChpbmZvLmJ1ZmZlcixmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUsaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0KTsKKwkJCWRpcl9lbnRyeV9wdHI9KHN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICopIChpbmZvLmJ1ZmZlcitpbmZvLmRpcl9lbnRyeV9vZmZzZXQpOworCisJCX0KKworCX0KKworCSpzdGF0dXM9QUJPUlQ7cmV0dXJuIChpbmZvKTsJCQkJCQkvKiBUaGVyZSB3YXMgbm8gbWF0Y2ggKi8KK30KKworbG9uZyBjb3VudF9kaXJfZW50cmllcyAodm9pZCkKKworLyoKKworVGhpcyBmdW5jdGlvbiBjb3VudHMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaXJlY3RvcnkuIFdlIGp1c3QgY2FsbCBzZWFyY2hfZGlyX2VudHJpZXMgdGlsbCB0aGUgZW5kLgorVGhlIGNsaWVudCBmdW5jdGlvbiBpcyBhY3Rpb25fY291bnQsIHdoaWNoIGp1c3QgdGVsbCBzZWFyY2hfZGlyX2VudHJpZXMgdG8gY29udGludWUuCisKKyovCisKK3sKKwlpbnQgc3RhdHVzOworCisJcmV0dXJuIChzZWFyY2hfZGlyX2VudHJpZXMgKCZhY3Rpb25fY291bnQsJnN0YXR1cykuZGlyX2VudHJ5X251bSk7Cit9CisKK2ludCBhY3Rpb25fY291bnQgKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKQorCisvKgorCitVc2VkIGJ5IGNvdW50X2Rpcl9lbnRyaWVzIGFib3ZlIC0gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgc2VhcmNoX2Rpcl9lbnRyaWVzLCBhbmQgaXQgdGVsbHMgaXQgdG8gY29udGludWUKK3NlYXJjaGluZywgdW50aWwgd2UgZ2V0IHRvIHRoZSBsYXN0IGVudHJ5LgorCisqLworCit7CisJcmV0dXJuIChDT05USU5VRSk7CQkJCQkJCS8qIEp1c3QgY29udGludWUgc2VhcmNoaW5nICovCit9CisKK3ZvaWQgdHlwZV9kaXJfX19jZCAoY2hhciAqY29tbWFuZF9saW5lKQorCisvKgorCUNoYW5nZXMgdG8gYSBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworCVRoaXMgaXMgYSBjb21wbGljYXRlZCBvcGVyYXRpb24sIHNvIEkgd291bGQgcmVwZWF0IGhlcmUgdGhlIGV4cGxhbmF0aW9uIGZyb20gdGhlIGRlc2lnbiBhbmQKKwlpbXBsZW1lbnRhdGlvbiBkb2N1bWVudC4KKworMS4JVGhlIHBhdGggaXMgY2hlY2tlZCB0aGF0IGl0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoIChmcm9tIC8pLiBJZiBpdCBpcywgd2UgbGV0IHRoZSBnZW5lcmFsIGNkIHRvIGRvIHRoZSBqb2IgYnkKKwljYWxsaW5nIGRpcmVjdGx5IHR5cGVfZXh0Ml9fX2NkLgorCisyLglUaGUgcGF0aCBpcyBkaXZpZGVkIGludG8gdGhlIG5lYXJlc3QgcGF0aCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHBhdGguIEZvciBleGFtcGxlLCBjZCAxLzIvMy80IGlzIGRpdmlkZWQgaW50bworCTEgYW5kIGludG8gMi8zLzQuCisKKzMuCUl0IGlzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSBwYXRoIHRoYXQgd2UgbmVlZCB0byBzZWFyY2ggZm9yIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gV2Ugc2VhcmNoIGZvciBpdCB1c2luZworCXNlYXJjaF9kaXJfZW50cmllcywgd2hpY2ggYWNjZXB0cyB0aGUgYWN0aW9uX25hbWUgZnVuY3Rpb24gYXMgdGhlIGNsaWVudCBmdW5jdGlvbi4KKworNC4Jc2VhcmNoX2Rpcl9lbnRyaWVzIHdpbGwgc2NhbiB0aGUgZW50aXJlIGVudHJpZXMgYW5kIHdpbGwgY2FsbCBvdXIgYWN0aW9uX25hbWUgZnVuY3Rpb24gZm9yIGVhY2ggZW50cnkuCisJSW4gYWN0aW9uX25hbWUsIHRoZSByZXF1aXJlZCBuYW1lIHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVudHJ5LCBhbmQgRk9VTkQgd2lsbCBiZQorCXJldHVybmVkIHdoZW4gYSBtYXRjaCBvY2N1cnMuCisKKzUuCUlmIHRoZSByZXF1aXJlZCBlbnRyeSBpcyBmb3VuZCwgd2UgZGlzcGF0Y2ggYSByZW1lbWJlciBjb21tYW5kIHRvIGluc2VydCB0aGUgY3VycmVudCBpbm9kZSAocmVtZW1iZXIgdGhhdAorCXR5cGVfZGF0YSBpcyBzdGlsbCBpbnRhY3QgYW5kIGNvbnRhaW5zIHRoZSBpbm9kZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkpIGludG8gdGhlIG9iamVjdCBtZW1vcnkuCisJVGhpcyBpcyByZXF1aXJlZCB0byBlYXNpbHkgc3VwcG9ydCBzeW1ib2xpYyBsaW5rcyAtIElmIHdlIGZpbmQgbGF0ZXIgdGhhdCB0aGUgaW5vZGUgcG9pbnRlZCBieSB0aGUgZW50cnkgaXMKKwlhY3R1YWxseSBhIHN5bWJvbGljIGxpbmssIHdlJ2xsIG5lZWQgdG8gcmV0dXJuIHRvIHRoaXMgcG9pbnQsIGFuZCB0aGUgYWJvdmUgaW5vZGUgZG9lc24ndCBoYXZlIChhbmQgY2FuJ3QgaGF2ZSwKKwliZWNhdXNlIG9mIGhhcmQgbGlua3MpIHRoZSBpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gIm1vdmUgYmFjayIuCisKKzYuCVdlIHRoZW4gZGlzcGF0Y2ggYSBmb2xsb3dpbm9kZSBjb21tYW5kIHRvIHJlYWNoIHRoZSBpbm9kZSBwb2ludGVkIGJ5IHRoZSByZXF1aXJlZCBlbnRyeS4gVGhpcyBjb21tYW5kIHdpbGwKKwlhdXRvbWF0aWNhbGx5IGNoYW5nZSB0aGUgdHlwZSB0byBleHQyX2lub2RlIC0gV2UgYXJlIG5vdyBhdCBhbiBpbm9kZSwgYW5kIGFsbCB0aGUgaW5vZGUgY29tbWFuZHMgYXJlIGF2YWlsYWJsZS4KKworNy4JV2UgY2hlY2sgdGhlIGlub2RlJ3MgdHlwZSB0byBzZWUgaWYgaXQgaXMgYSBkaXJlY3RvcnkuIElmIGl0IGlzLCB3ZSBkaXNwYXRjaCBhIGRpciBjb21tYW5kIHRvICJlbnRlciB0aGUgZGlyZWN0b3J5IiwKKwlhbmQgcmVjdXJzaXZlbHkgY2FsbCBvdXJzZWxmIChUaGUgdHlwZSBpcyBkaXIgYWdhaW4pIGJ5IGRpc3BhdGNoaW5nIGEgY2QgY29tbWFuZCwgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGF0aAorCWFzIGFuIGFyZ3VtZW50LgorCis4LglJZiB0aGUgaW5vZGUncyB0eXBlIGlzIGEgc3ltYm9saWMgbGluayAob25seSBmYXN0IHN5bWJvbGljIGxpbmsgd2VyZSBtZWFud2hpbGUgaW1wbGVtZW50ZWQuIEkgZ3Vlc3MgdGhpcyBpcworCXR5cGljYWxseSB0aGUgY2FzZS4pLCB3ZSBub3RlIHRoZSBwYXRoIGl0IGlzIHBvaW50aW5nIGF0LCB0aGUgc2F2ZWQgaW5vZGUgaXMgcmVjYWxsZWQsIHdlIGRpc3BhdGNoIGRpciB0bworCWdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RvcnksIGFuZCB3ZSBjYWxsIG91cnNlbGYgYWdhaW4gd2l0aCB0aGUgbGluayBwYXRoL3Jlc3Qgb2YgdGhlIHBhdGggYXJndW1lbnQuCisKKzkuCUluIGFueSBvdGhlciBjYXNlLCB3ZSBqdXN0IHN0b3AgYXQgdGhlIHJlc3VsdGluZyBpbm9kZS4KKworKi8KKworeworCWludCBzdGF0dXM7CisJY2hhciAqcHRyLGZ1bGxfZGlyX25hbWUgWzUwMF0sZGlyX25hbWUgWzUwMF0sdGVtcCBbNTAwXSx0ZW1wMiBbNTAwXTsKKwlzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyBpbmZvOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICpkaXJfZW50cnlfcHRyOworCisJZGlyX2VudHJ5X3B0cj0oc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKikgKGZpbGVfaW5mby5idWZmZXIrZmlsZV9pbmZvLmRpcl9lbnRyeV9vZmZzZXQpOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxkaXJfbmFtZSk7CisKKwlpZiAoKnB0cj09MCkgewkJCQkJCS8qIGNkIGFsb25lIHdpbGwgZW50ZXIgdGhlIGhpZ2hsaWdodGVkIGRpcmVjdG9yeSAqLworCQlzdHJuY3B5IChmdWxsX2Rpcl9uYW1lLGRpcl9lbnRyeV9wdHItPm5hbWUsZGlyX2VudHJ5X3B0ci0+bmFtZV9sZW4pOworCQlmdWxsX2Rpcl9uYW1lIFtkaXJfZW50cnlfcHRyLT5uYW1lX2xlbl09MDsKKwl9CisJZWxzZQorCQlwdHI9cGFyc2Vfd29yZCAocHRyLGZ1bGxfZGlyX25hbWUpOworCisJcHRyPXN0cmNociAoZnVsbF9kaXJfbmFtZSwnLycpOworCisJaWYgKHB0cj09ZnVsbF9kaXJfbmFtZSkgewkJCQkvKiBQYXRobmFtZSBpcyBmcm9tIHJvb3QgLSBMZXQgdGhlIGdlbmVyYWwgY2QgZG8gdGhlIGpvYiAqLworCQlzcHJpbnRmICh0ZW1wLCJjZCAlcyIsZnVsbF9kaXJfbmFtZSk7dHlwZV9leHQyX19fY2QgKHRlbXApO3JldHVybjsKKwl9CisKKwlpZiAocHRyPT1OVUxMKSB7CisJCXN0cmNweSAoZGlyX25hbWUsZnVsbF9kaXJfbmFtZSk7CisJCWZ1bGxfZGlyX25hbWUgWzBdPTA7CisJfQorCisJZWxzZSB7CisJCXN0cm5jcHkgKGRpcl9uYW1lLGZ1bGxfZGlyX25hbWUscHRyLWZ1bGxfZGlyX25hbWUpOworCQlkaXJfbmFtZSBbcHRyLWZ1bGxfZGlyX25hbWVdPTA7CisJCXN0cmNweSAoZnVsbF9kaXJfbmFtZSwrK3B0cik7CisJfQorCQkJCQkJCQkvKiBkaXJfbmFtZSBjb250YWlucyB0aGUgY3VycmVudCBlbnRyeSwgd2hpbGUgKi8KKwkJCQkJCQkJLyogZnVsbF9kaXJfbmFtZSBjb250YWlucyB0aGUgcmVzdCAqLworCisJc3RyY3B5IChuYW1lX3NlYXJjaCxkaXJfbmFtZSk7CQkJCS8qIG5hbWVfc2VhcmNoIGlzIHVzZWQgdG8gaG9sZCB0aGUgcmVxdWlyZWQgZW50cnkgbmFtZSAqLworCisJaWYgKGRpcl9lbnRyeV9wdHItPm5hbWVfbGVuICE9IHN0cmxlbiAoZGlyX25hbWUpIHx8CisJICAgIHN0cm5jbXAgKGRpcl9uYW1lLGRpcl9lbnRyeV9wdHItPm5hbWUsZGlyX2VudHJ5X3B0ci0+bmFtZV9sZW4pIT0wKQorCQlpbmZvPXNlYXJjaF9kaXJfZW50cmllcyAoJmFjdGlvbl9uYW1lLCZzdGF0dXMpOwkvKiBTZWFyY2ggZm9yIHRoZSBlbnRyeS4gQW5zd2VyIGluIGluZm8uICovCisJZWxzZSB7CisJCXN0YXR1cz1GT1VORDtpbmZvPWZpbGVfaW5mbzsKKwl9CisKKwlpZiAoc3RhdHVzPT1GT1VORCkgewkJCQkJLyogSWYgZm91bmQgKi8KKwkJZmlsZV9pbmZvPWluZm87CQkJCQkvKiBTd2l0Y2ggdG8gaXQsIGJ5IHNldHRpbmcgdGhlIGdsb2JhbCBmaWxlX2luZm8gKi8KKwkJZGlzcGF0Y2ggKCJyZW1lbWJlciBpbnRlcm5hbF92YXJpYWJsZSIpOwkvKiBNb3ZlIHRoZSBpbm9kZSBpbnRvIHRoZSBvYmplY3RzIG1lbW9yeSAqLworCisJCWRpc3BhdGNoICgiZm9sbG93aW5vZGUiKTsJCQkvKiBHbyB0byB0aGUgaW5vZGUgcG9pbnRlZCBieSB0aGlzIGRpcmVjdG9yeSBlbnRyeSAqLworCisJCWlmIChTX0lTTE5LICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlKSkgey8qIFN5bWJvbGljIGxpbmsgPyAqLworCisJCQlpZiAodHlwZV9kYXRhLnUudF9leHQyX2lub2RlLmlfc2l6ZSA+IDYwKSB7CS8qIEknbSBsYXp5LCBJIGd1ZXNzIDotKSAqLworCQkJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIFNvcnJ5LCBPbmx5IGZhc3Qgc3ltYm9saWMgbGluayBmb2xsb3dpbmcgaXMgY3VycmVudGx5IHN1cHBvcnRlZFxuIik7CisJCQkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQkJCQkJCS8qIEdldCB0aGUgcG9pbnRlZCBuYW1lIGFuZCBhcHBlbmQgdGhlIHByZXZpb3VzIHBhdGggKi8KKworCQkJc3RyY3B5ICh0ZW1wMiwodW5zaWduZWQgY2hhciAqKSAmdHlwZV9kYXRhLnUudF9leHQyX2lub2RlLmlfYmxvY2spOworCQkJc3RyY2F0ICh0ZW1wMiwiLyIpOworCQkJc3RyY2F0ICh0ZW1wMixmdWxsX2Rpcl9uYW1lKTsKKworCQkJZGlzcGF0Y2ggKCJyZWNhbGwgaW50ZXJuYWxfdmFyaWFibGUiKTsJLyogUmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBpbm9kZSAqLworCQkJZGlzcGF0Y2ggKCJkaXIiKTsJCQkvKiBhbmQgdG8gdGhlIGRpcmVjdG9yeSAqLworCisJCQlzcHJpbnRmICh0ZW1wLCJjZCAlcyIsdGVtcDIpOwkJLyogQW5kIGNvbnRpbnVlIGZyb20gdGhlcmUgYnkgZGlzcGF0Y2hpbmcgYSBjZCBjb21tYW5kICovCisJCQlkaXNwYXRjaCAodGVtcCk7CQkJLyogKHdoaWNoIGNhbiBjYWxsIG91cnNlbGYgb3IgdGhlIGdlbmVyYWwgY2QpICovCisKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChTX0lTRElSICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlKSkgeyAvKiBJcyBpdCBhbiBpbm9kZSBvZiBhIGRpcmVjdG9yeSA/ICovCisKKwkJCWRpc3BhdGNoICgiZGlyIik7CQkJLyogWWVzIC0gUGFzcyB0byB0aGUgcG9pbnRlZCBkaXJlY3RvcnkgKi8KKworCQkJaWYgKGZ1bGxfZGlyX25hbWUgWzBdICE9IDApIHsJCS8qIEFuZCBjYWxsIG91cnNlbGYgd2l0aCB0aGUgcmVzdCBvZiB0aGUgcGF0aG5hbWUgKi8KKwkJCQlzcHJpbnRmICh0ZW1wLCJjZCAlcyIsZnVsbF9kaXJfbmFtZSk7CisJCQkJZGlzcGF0Y2ggKHRlbXApOworCQkJfQorCisJCQlyZXR1cm47CisJCX0KKworCQllbHNlIHsJCQkJCQkvKiBJZiB3ZSBjYW4ndCBjb250aW51ZSBmcm9tIGhlcmUsIHdlJ2xsIGp1c3Qgc3RvcCAqLworCQkJd3ByaW50dyAoY29tbWFuZF93aW4sIkNhblwndCBjb250aW51ZSAtIFN0b3BwaW5nIGF0IGxhc3QgaW5vZGVcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKKwl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBEaXJlY3RvcnkgZW50cnkgJXMgbm90IGZvdW5kLlxuIixkaXJfbmFtZSk7CS8qIEhtbSwgYW4gaW52YWxpZCBwYXRoIHNvbWV3aGVyZSAqLworCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7Cit9CisKK2ludCBhY3Rpb25fbmFtZSAoc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmluZm8pCisKKy8qCisKK0NvbXBhcmVzIHRoZSBjdXJyZW50IHNlYXJjaCBlbnRyeSBuYW1lIChzb21ld2hlcmUgaW5zaWRlIGluZm8pIHdpdGggdGhlIHJlcXVpcmVkIG5hbWUgKGluIG5hbWVfc2VhcmNoKS4KK1JldHVybnMgRk9VTkQgaWYgZm91bmQsIG9yIENPTlRJTlVFIGlmIG5vdCBmb3VuZC4KKworKi8KKworeworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICpkaXJfZW50cnlfcHRyOworCisJZGlyX2VudHJ5X3B0cj0oc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKikgKGluZm8tPmJ1ZmZlcitpbmZvLT5kaXJfZW50cnlfb2Zmc2V0KTsKKworCWlmIChkaXJfZW50cnlfcHRyLT5uYW1lX2xlbiAhPSBzdHJsZW4gKG5hbWVfc2VhcmNoKSkKKwkJcmV0dXJuIChDT05USU5VRSk7CisKKwlpZiAoc3RybmNtcCAoZGlyX2VudHJ5X3B0ci0+bmFtZSxuYW1lX3NlYXJjaCxkaXJfZW50cnlfcHRyLT5uYW1lX2xlbik9PTApCisJCXJldHVybiAoRk9VTkQpOworCisJcmV0dXJuIChDT05USU5VRSk7Cit9CisKK3ZvaWQgdHlwZV9kaXJfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKQorCisvKgorCitTZWxlY3RzIGEgZGlyZWN0b3J5IGVudHJ5IGFjY29yZGluZyB0byBpdHMgbnVtYmVyLgorc2VhcmNoX2Rpcl9lbnRyaWVzIGlzIHVzZWQgYWxvbmcgd2l0aCBhY3Rpb25fZW50cnlfbnVtLCBpbiB0aGUgc2FtZSBmYXNoaW9uIGFzIHRoZSBwcmV2aW91cyB1c2FnZSBvZiBzZWFyY2hfZGlyX2VudHJpZXMuCisKKyovCisKK3sKKwlpbnQgc3RhdHVzOworCXN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvIGluZm87CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEFyZ3VtZW50X25vdF9zcGVjaWZpZWRcbiIpO3dyZWZyZXNoIChjb21tYW5kX3dpbik7CisJCXJldHVybjsKKwl9CisJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCWVudHJ5X251bV9zZWFyY2g9YXRvbCAoYnVmZmVyKTsKKworCWlmIChlbnRyeV9udW1fc2VhcmNoIDwgMCB8fCBlbnRyeV9udW1fc2VhcmNoID49IGZpbGVfaW5mby5kaXJfZW50cmllc19jb3VudCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBFbnRyeSBudW1iZXIgb3V0IG9mIHJhbmdlXG4iKTt3cmVmcmVzaCAoY29tbWFuZF93aW4pOworCQlyZXR1cm47CisJfQorCisJaW5mbz1zZWFyY2hfZGlyX2VudHJpZXMgKCZhY3Rpb25fZW50cnlfbnVtLCZzdGF0dXMpOworCWlmIChzdGF0dXM9PUZPVU5EKSB7CisJCWZpbGVfaW5mbz1pbmZvOworCQlkaXNwYXRjaCAoInNob3ciKTsKKwkJcmV0dXJuOworCX0KKyNpZmRlZiBERUJVRworCWludGVybmFsX2Vycm9yICgiZGlyX2NvbSIsInR5cGVfZGlyX19fZW50cnkiLCJBY2NvcmRpbmcgdG8gb3VyIGdhdGhlcmVkIGRhdGEsIHdlIHNob3VsZCBoYXZlIGZvdW5kIHRoaXMgZW50cnkiKTsKKyNlbmRpZgorfQorCitpbnQgYWN0aW9uX2VudHJ5X251bSAoc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmluZm8pCisKKy8qCisKK1VzZWQgYnkgdGhlIGFib3ZlIGZ1bmN0aW9uLiBKdXN0IGNvbXBhcmVzIHRoZSBjdXJyZW50IG51bWJlciAoaW4gaW5mbykgd2l0aCB0aGUgcmVxdWlyZWQgb25lLgorCisqLworCit7CisJaWYgKGluZm8tPmRpcl9lbnRyeV9udW0gPT0gZW50cnlfbnVtX3NlYXJjaCkKKwkJcmV0dXJuIChGT1VORCk7CisKKwlyZXR1cm4gKENPTlRJTlVFKTsKK30KKwordm9pZCB0eXBlX2Rpcl9fX2ZvbGxvd2lub2RlIChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK0hlcmUgd2UgcGFzcyB0byB0aGUgaW5vZGUgcG9pbnRlZCBieSB0aGUgY3VycmVudCBlbnRyeS4KK0l0IGludm9sdmVzIGNvbXB1dGluZyB0aGUgZGV2aWNlIG9mZnNldCBvZiB0aGUgaW5vZGUgYW5kIHVzaW5nIGRpcmVjdGx5IHRoZSBzZXRvZmZzZXQgYW5kIHNldHR5cGUgY29tbWFuZHMuCisKKyovCit7CisJbG9uZyBpbm9kZV9vZmZzZXQ7CisJY2hhciBidWZmZXIgWzgwXTsKKworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICpkaXJfZW50cnlfcHRyOworCisJbG93X3JlYWQgKGZpbGVfaW5mby5idWZmZXIsZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLGZpbGVfaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0KTsKKwlkaXJfZW50cnlfcHRyPShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfMiAqKSAoZmlsZV9pbmZvLmJ1ZmZlcitmaWxlX2luZm8uZGlyX2VudHJ5X29mZnNldCk7CisKKwlpbm9kZV9vZmZzZXQ9aW5vZGVfbnVtX3RvX2lub2RlX29mZnNldCAoZGlyX2VudHJ5X3B0ci0+aW5vZGUpOwkJCS8qIENvbXB1dGUgdGhlIGlub2RlJ3Mgb2Zmc2V0ICovCisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgJWxkIixpbm9kZV9vZmZzZXQpO2Rpc3BhdGNoIChidWZmZXIpOwkJLyogTW92ZSB0byBpdCAqLworCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBleHQyX2lub2RlIik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CQkJLyogYW5kIHNldCB0aGUgdHlwZSB0byBhbiBpbm9kZSAqLworfQorCit2b2lkIHR5cGVfZGlyX19faW5vZGUgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworUmV0dXJucyB0byB0aGUgcGFyZW50IGlub2RlIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KK1RoaXMgaXMgdHJpdmlhbCwgYXMgd2UgdHlwZV9kYXRhIGlzIHN0aWxsIGludGFjdCBhbmQgY29udGFpbnMgdGhlIHBhcmVudCBpbm9kZSAhCisKKyovCisKK3sKKwlkaXNwYXRjaCAoInNldHR5cGUgZXh0Ml9pbm9kZSIpOworfQorCisKK3ZvaWQgdHlwZV9kaXJfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK1dlIHVzZSBzZWFyY2hfZGlyX2VudHJpZXMgdG8gcnVuIG9uIGFsbCB0aGUgZW50cmllcy4gRWFjaCB0aW1lLCBhY3Rpb25fc2hvdyB3aWxsIGJlIGNhbGxlZCB0byBzaG93IG9uZSBlbnRyeS4KKworKi8KKworeworCWludCBzdGF0dXM7CisKKwl3bW92ZSAoc2hvd19wYWQsMCwwKTsKKwlzaG93X3BhZF9pbmZvLm1heF9saW5lPS0xOworCisJc2VhcmNoX2Rpcl9lbnRyaWVzICgmYWN0aW9uX3Nob3csJnN0YXR1cyk7CisJc2hvd19wYWRfaW5mby5saW5lPWZpbGVfaW5mby5kaXJfZW50cnlfbnVtLXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcy8yOworCXJlZnJlc2hfc2hvd19wYWQgKCk7CisJc2hvd19kaXJfc3RhdHVzICgpOworfQorCitpbnQgYWN0aW9uX3Nob3cgKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKQorCisvKgorCitTaG93IHRoZSBjdXJyZW50IHNlYXJjaCBlbnRyeSAoaW5mbykgaW4gb25lIGxpbmUuIElmIHRoZSBlbnRyeSBoYXBwZW5zIHRvIGJlIHRoZSBjdXJyZW50IGVkaXRlZCBlbnRyeSwgaXQgaXMgaGlnaGxpZ2h0ZWQuCisKKyovCisKK3sKKwl1bnNpZ25lZCBjaGFyIHRlbXAgWzgwXTsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfMiAqZGlyX2VudHJ5X3B0cjsKKworCWRpcl9lbnRyeV9wdHI9KHN0cnVjdCBleHQyX2Rpcl9lbnRyeV8yICopIChpbmZvLT5idWZmZXIraW5mby0+ZGlyX2VudHJ5X29mZnNldCk7CisKKwlpZiAoaW5mby0+ZGlyX2VudHJ5X251bSA9PSBmaWxlX2luZm8uZGlyX2VudHJ5X251bSkJCQkJLyogSGlnaGxpZ2h0IHRoZSBjdXJyZW50IGVudHJ5ICovCisJCXdhdHRyc2V0IChzaG93X3BhZCxBX1JFVkVSU0UpOworCisJc3RybmNweSAodGVtcCxkaXJfZW50cnlfcHRyLT5uYW1lLGRpcl9lbnRyeV9wdHItPm5hbWVfbGVuKTsJCQkvKiBUaGUgbmFtZSBpcyBub3QgdGVybWluYXRlZCAqLworCXRlbXAgW2Rpcl9lbnRyeV9wdHItPm5hbWVfbGVuXT0wOworCWlmIChkaXJfZW50cnlfcHRyLT5uYW1lX2xlbiA+IChDT0xTIC0gNTUpICYmIENPTFMgPiA1NSkKKwkJdGVtcCBbQ09MUy01NV09MDsKKwl3cHJpbnR3IChzaG93X3BhZCwiaW5vZGUgPSAlLThsdSByZWNfbGVuID0gJS00bHUgbmFtZV9sZW4gPSAlLTNsdSBuYW1lID0gJXNcbiIsCS8qIERpc3BsYXkgdGhlIHZhcmlvdXMgZmllbGRzICovCisJCSBkaXJfZW50cnlfcHRyLT5pbm9kZSxkaXJfZW50cnlfcHRyLT5yZWNfbGVuLGRpcl9lbnRyeV9wdHItPm5hbWVfbGVuLHRlbXApOworCisJc2hvd19wYWRfaW5mby5tYXhfbGluZSsrOworCisJaWYgKGluZm8tPmRpcl9lbnRyeV9udW0gPT0gZmlsZV9pbmZvLmRpcl9lbnRyeV9udW0pCisJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisKKwlyZXR1cm4gKENPTlRJTlVFKTsJCQkJCQkJCS8qIEFuZCBwYXNzIHRvIHRoZSBuZXh0ICovCit9CisKK3ZvaWQgdHlwZV9kaXJfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK1RoaXMgZnVuY3Rpb24gbW92ZXMgdG8gdGhlIG5leHQgZGlyZWN0b3J5IGVudHJ5LiBJdCBqdXN0IHVzZXMgdGhlIGN1cnJlbnQgaW5mb3JtYXRpb24gYW5kIHRoZSBlbnRyeSBjb21tYW5kLgorCisqLworCit7CisJaW50IG9mZnNldD0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJb2Zmc2V0Kj1hdG9sIChidWZmZXIpOworCX0KKworCXNwcmludGYgKGJ1ZmZlciwiZW50cnkgJWxkIixmaWxlX2luZm8uZGlyX2VudHJ5X251bStvZmZzZXQpO2Rpc3BhdGNoIChidWZmZXIpOworCit9CisKK3ZvaWQgdHlwZV9kaXJfX19wcmV2IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlpbnQgb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlvZmZzZXQqPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJc3ByaW50ZiAoYnVmZmVyLCJlbnRyeSAlbGQiLGZpbGVfaW5mby5kaXJfZW50cnlfbnVtLW9mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgc2hvd19kaXJfc3RhdHVzICh2b2lkKQorCisvKgorCitWYXJpb3VzIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGRpcmVjdG9yeS4KKworKi8KKworeworCWxvbmcgaW5vZGVfbnVtOworCisJd21vdmUgKHNob3dfd2luLDAsMCk7CisJd3ByaW50dyAoc2hvd193aW4sIkRpcmVjdG9yeSBsaXN0aW5nLiBCbG9jayAlbGQuICIsZmlsZV9pbmZvLmdsb2JhbF9ibG9ja19udW0pOworCXdwcmludHcgKHNob3dfd2luLCJEaXJlY3RvcnkgZW50cnkgJWxkIG9mICVsZC5cbiIsZmlsZV9pbmZvLmRpcl9lbnRyeV9udW0sZmlsZV9pbmZvLmRpcl9lbnRyaWVzX2NvdW50LTEpOworCXdwcmludHcgKHNob3dfd2luLCJEaXJlY3RvcnkgT2Zmc2V0ICVsZCBvZiAlbGQuICIsZmlsZV9pbmZvLmZpbGVfb2Zmc2V0LGZpbGVfaW5mby5maWxlX2xlbmd0aC0xKTsKKworCWlub2RlX251bT1pbm9kZV9vZmZzZXRfdG9faW5vZGVfbnVtIChmaWxlX2luZm8uaW5vZGVfb2Zmc2V0KTsKKwl3cHJpbnR3IChzaG93X3dpbiwiRmlsZSBpbm9kZSAlbGQuIEluZGlyZWN0aW9uIGxldmVsICVsZC5cbiIsaW5vZGVfbnVtLGZpbGVfaW5mby5sZXZlbCk7CisKKwlyZWZyZXNoX3Nob3dfd2luICgpOworfQorCit2b2lkIHR5cGVfZGlyX19fcmVtZW1iZXIgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworVGhpcyBpcyBvdmVycmlkZWQgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHJlbWVtYmVyIGEgZGlyZWN0b3J5IC0gSXQgaXMgdG9vIGNvbXBsaWNhdGVkLiBJbnN0ZWFkLCB3ZSByZW1lbWJlciB0aGUKK2lub2RlIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKworKi8KKworeworCWludCBmb3VuZD0wOworCWxvbmcgZW50cnlfbnVtOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKwlzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmRlc2NyaXB0b3JfcHRyOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQXJndW1lbnQgbm90IHNwZWNpZmllZFxuIik7d3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKKwkJcmV0dXJuOworCX0KKworCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKworCWVudHJ5X251bT1yZW1lbWJlcl9saWZvLmVudHJpZXNfY291bnQrKzsKKwlpZiAoZW50cnlfbnVtPlJFTUVNQkVSX0NPVU5ULTEpIHsKKwkJZW50cnlfbnVtPTA7CisJCXJlbWVtYmVyX2xpZm8uZW50cmllc19jb3VudC0tOworCX0KKworCWRlc2NyaXB0b3JfcHRyPWZpcnN0X3R5cGU7CisJd2hpbGUgKGRlc2NyaXB0b3JfcHRyIT1OVUxMICYmICFmb3VuZCkgeworCQlpZiAoc3RyY21wIChkZXNjcmlwdG9yX3B0ci0+bmFtZSwiZXh0Ml9pbm9kZSIpPT0wKQorCQkJZm91bmQ9MTsKKwkJZWxzZQorCQkJZGVzY3JpcHRvcl9wdHI9ZGVzY3JpcHRvcl9wdHItPm5leHQ7CisJfQorCisKKwlyZW1lbWJlcl9saWZvLm9mZnNldCBbZW50cnlfbnVtXT1kZXZpY2Vfb2Zmc2V0OworCXJlbWVtYmVyX2xpZm8udHlwZSBbZW50cnlfbnVtXT1kZXNjcmlwdG9yX3B0cjsKKwlzdHJjcHkgKHJlbWVtYmVyX2xpZm8ubmFtZSBbZW50cnlfbnVtXSxidWZmZXIpOworCisJd3ByaW50dyAoY29tbWFuZF93aW4sIk9iamVjdCAlcyBpbiBPZmZzZXQgJWxkIHJlbWVtYmVyZWQgYXMgJXNcbiIsZGVzY3JpcHRvcl9wdHItPm5hbWUsZGV2aWNlX29mZnNldCxidWZmZXIpOworCXdyZWZyZXNoIChjb21tYW5kX3dpbik7Cit9CisKK3ZvaWQgdHlwZV9kaXJfX19zZXQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworU2luY2UgdGhlIGRpciBvYmplY3QgZG9lc24ndCBoYXZlIHZhcmlhYmxlcywgd2UgcHJvdmlkZSB0aGUgaW1wcmVzc2lvbiB0aGF0IGl0IGhhcyBoZXJlLiBleHQyX2Rpcl9lbnRyeSB3YXMgbm90IHVzZWQKK2JlY2F1c2UgaXQgaXMgb2YgdmFyaWFibGUgbGVuZ3RoLgorCisqLworCit7CisJaW50IGZvdW5kPTA7CisJdW5zaWduZWQgY2hhciAqcHRyLGJ1ZmZlciBbODBdLHZhcmlhYmxlIFs4MF0sdmFsdWUgWzgwXSx0ZW1wIFs4MF07CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKmRpcl9lbnRyeV9wdHI7CisKKwlkaXJfZW50cnlfcHRyPShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfMiAqKSAoZmlsZV9pbmZvLmJ1ZmZlcitmaWxlX2luZm8uZGlyX2VudHJ5X29mZnNldCk7CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTWlzc2luZyBhcmd1bWVudHNcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisJcGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJcHRyPXN0cmNociAoYnVmZmVyLCc9Jyk7CisJaWYgKHB0cj09TlVMTCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBCYWQgc3ludGF4XG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisJc3RybmNweSAodmFyaWFibGUsYnVmZmVyLHB0ci1idWZmZXIpO3ZhcmlhYmxlIFtwdHItYnVmZmVyXT0wOworCXN0cmNweSAodmFsdWUsKytwdHIpOworCisJaWYgKHN0cmNhc2VjbXAgKCJpbm9kZSIsdmFyaWFibGUpPT0wKSB7CisJCWZvdW5kPTE7CisJCWRpcl9lbnRyeV9wdHItPmlub2RlPWF0b2wgKHZhbHVlKTsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlZhcmlhYmxlICVzIHNldCB0byAlbHVcbiIsdmFyaWFibGUsZGlyX2VudHJ5X3B0ci0+aW5vZGUpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisKKwl9CisKKwlpZiAoc3RyY2FzZWNtcCAoInJlY19sZW4iLHZhcmlhYmxlKT09MCkgeworCQlmb3VuZD0xOworCQlkaXJfZW50cnlfcHRyLT5yZWNfbGVuPSh1bnNpZ25lZCBpbnQpIGF0b2wgKHZhbHVlKTsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlZhcmlhYmxlICVzIHNldCB0byAlbHVcbiIsdmFyaWFibGUsZGlyX2VudHJ5X3B0ci0+cmVjX2xlbik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKworCX0KKworCWlmIChzdHJjYXNlY21wICgibmFtZV9sZW4iLHZhcmlhYmxlKT09MCkgeworCQlmb3VuZD0xOworCQlkaXJfZW50cnlfcHRyLT5uYW1lX2xlbj0odW5zaWduZWQgaW50KSBhdG9sICh2YWx1ZSk7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJWYXJpYWJsZSAlcyBzZXQgdG8gJWx1XG4iLHZhcmlhYmxlLGRpcl9lbnRyeV9wdHItPm5hbWVfbGVuKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCisJfQorCisJaWYgKHN0cmNhc2VjbXAgKCJuYW1lIix2YXJpYWJsZSk9PTApIHsKKwkJZm91bmQ9MTsKKwkJaWYgKHN0cmxlbiAodmFsdWUpID4gZGlyX2VudHJ5X3B0ci0+bmFtZV9sZW4pIHsKKwkJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIExlbmd0aCBvZiBuYW1lIGdyZWF0ZXIgdGhlbiBuYW1lX2xlblxuIik7CisJCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwkJfQorCQlzdHJuY3B5IChkaXJfZW50cnlfcHRyLT5uYW1lLHZhbHVlLHN0cmxlbiAodmFsdWUpKTsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlZhcmlhYmxlICVzIHNldCB0byAlc1xuIix2YXJpYWJsZSx2YWx1ZSk7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKworCX0KKworCWlmIChmb3VuZCkgeworCQl3YXR0cnNldCAoc2hvd19wYWQsQV9SRVZFUlNFKTsKKwkJc3RybmNweSAodGVtcCxkaXJfZW50cnlfcHRyLT5uYW1lLGRpcl9lbnRyeV9wdHItPm5hbWVfbGVuKTsKKwkJdGVtcCBbZGlyX2VudHJ5X3B0ci0+bmFtZV9sZW5dPTA7CisJCXdtb3ZlIChzaG93X3BhZCxmaWxlX2luZm8uZGlyX2VudHJ5X251bSwwKTsKKwkJd3ByaW50dyAoc2hvd19wYWQsImlub2RlID0gJS04bHUgcmVjX2xlbiA9ICUtNGx1IG5hbWVfbGVuID0gJS0zbHUgbmFtZSA9ICVzXG4iLAorCQkJIGRpcl9lbnRyeV9wdHItPmlub2RlLGRpcl9lbnRyeV9wdHItPnJlY19sZW4sZGlyX2VudHJ5X3B0ci0+bmFtZV9sZW4sdGVtcCk7CisJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisJCXNob3dfcGFkX2luZm8ubGluZT1maWxlX2luZm8uZGlyX2VudHJ5X251bS1zaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMvMjsKKwkJcmVmcmVzaF9zaG93X3BhZCAoKTsKKwkJc2hvd19kaXJfc3RhdHVzICgpOworCX0KKworCWVsc2UgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBWYXJpYWJsZSAlcyBub3QgZm91bmRcbiIsdmFyaWFibGUpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KKworfQorCit2b2lkIHR5cGVfZGlyX19fd3JpdGVkYXRhIChjaGFyICpjb21tYW5kX2xpbmUpCisKKy8qCisKK1dlIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcyBzaW5jZSB0aGUgZGF0YSBpcyBub3QgaW4gdHlwZV9kYXRhLiBJbnN0ZWFkLCB3ZSBoYXZlIHRvIHdyaXRlIHRoZSBidWZmZXIgd2hpY2ggY29ycmVzcG9uZHMKK3RvIHRoZSBjdXJyZW50IGJsb2NrLgorCisqLworCit7CisJbG93X3dyaXRlIChmaWxlX2luZm8uYnVmZmVyLGZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSxmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX29mZnNldCk7CisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9kaXNrLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL2Rpc2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzI0MzEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9kaXNrLmMKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9kaXNrLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitUaGUgZmlsZXN5c3RlbSdzIGRpc2sgYWN0aXZpdHkgcGFzcyB0aHJvdWdoIGhlcmUuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBpcyBhY3RpbmcgYXMgYSBmaWx0ZXIgLSBCZWZvcmUgd2UgcGFzcyBhbiBhY3R1YWwgcmVhZCBvciB3cml0ZSByZXF1ZXN0IHRvIHRoZSBvcGVyYXRpbmcgc3lzdGVtLCB3ZQorZG91YmxlIGNoZWNrIHRoZSB2YXJpb3VzIHBlcm1pc3Npb25zIGFuZCBwb3NzaWJsZSBlcnJvcnMgaGVyZS4KKworVGhlIG1ham9yIHVwZGF0ZSB3aGljaCBuZWVkcyB0byBiZSBkb25lIGhlcmUgaXMgc3dpdGNoaW5nIHRvIHRoZSB1c2Ugb2YgdGhlIGxsc2VlayBzeXN0ZW0gY2FsbCwgc28gdGhhdCB3ZSB3aWxsCitiZSBhYmxlIHRvIHN1cHBvcnQgZXh0MiBmaWxlc3lzdGVtcyB1cCB0byA0IFRCLiBDdXJyZW50bHksIGR1ZSB0byB0aGUgc3RhbmRhcmQgZnNlZWsgdXNhZ2UsIHdlIGNhbid0IGhhbmRsZQorZmlsZXN5c3RlbXMgYmlnZ2VyIHRoYW4gNCBHQi4gVGhlIGxpbWl0IGlzIGFjdHVhbGx5IDIgR0IgYmVjYXVzZSBJIHVzZWQgbG9uZyByYXRoZXIgdGhhbiB1bnNpZ25lZCBsb25nIGxvbmcgYXQgdG9vCittYW55IHBsYWNlcyBpbiB0aGUgcHJvZ3JhbS4gVG8gY29uY2x1ZGUgLSBUaGlzIHVwZ3JhZGUgbmVlZHMgdG8gYmUgZG9uZSBjYXJlZnVseTsgVGhlcmUgYXJlIG1hbnkgcGxhY2VzIHRvIGNoYW5nZS4KKworRmlyc3Qgd3JpdHRlbiBvbjogQXByaWwgOSAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJlZC5oIgorCitpbnQgd3JpdGVfYWNjZXNzOworCitpbnQgbG93X3JlYWQgKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcix1bnNpZ25lZCBsb25nIGxlbmd0aCx1bnNpZ25lZCBsb25nIG9mZnNldCkKKworLyoKKworVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdoZW4gd2UgbmVlZCB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBmaWxlc3lzdGVtLgorCisqLworCit7CisKKyNpZmRlZiBERUJVRworCisJY2hhciB0ZW1wIFs4MF07CisKKwlpZiAoZGV2aWNlX2hhbmRsZT09TlVMTCkgewkJCQkJLyogQ2hlY2sgdGhhdCBhIGRldmljZSBpcyBpbmRlZWQgb3BlbiAqLworCQlpbnRlcm5hbF9lcnJvciAoIk5vIGRldmljZSBvcGVuZWQgeWV0IHJlYWQgcmVxdWVzdGVkIiwiZGlzayIsImxvd19yZWFkIik7CisJCXJldHVybiAoMCk7CisJfQorCWlmIChvZmZzZXQgPiBmaWxlX3N5c3RlbV9pbmZvLmZpbGVfc3lzdGVtX3NpemUpIHsJCS8qIENoZWNrIHRoYXQgdGhlIG9mZnNldCBpcyB3aXRoaW4gbGltaXRzICovCisJCXNwcmludGYgKHRlbXAsIlNlZWsgb2Zmc2V0ICVsZCBpcyBvdXQgb2YgcmFuZ2UiLG9mZnNldCk7CisJCWludGVybmFsX2Vycm9yICh0ZW1wLCJkaXNrIiwibG93X3JlYWQiKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKyNlbmRpZgorCisJaWYgKCAoZnNlZWsgKGRldmljZV9oYW5kbGUsb2Zmc2V0LFNFRUtfU0VUKSk9PS0xKSB7CQkvKiBTZWVrIHRvIHRoZSByZXF1aXJlZCBvZmZzZXQgKi8KKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRmFpbGVkIHRvIHNlZWsgdG8gb2Zmc2V0ICVsZCBpbiBkZXZpY2UgJXNcbiIsb2Zmc2V0LGRldmljZV9uYW1lKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuICgwKTsKKwl9OworCisJaWYgKCAoZnJlYWQgKGJ1ZmZlciwxLGxlbmd0aCxkZXZpY2VfaGFuZGxlKSk9PS0xKSB7CQkvKiBBbmQgZG8gdGhlIGFjdHVhbCByZWFkaW5nICovCisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZhaWxlZCB0byByZWFkIGZyb20gb2Zmc2V0ICVsZCBpbiBkZXZpY2UgJXNcbiIsb2Zmc2V0LGRldmljZV9uYW1lKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm4gKDApOworCX07CisKKwlyZXR1cm4gKDEpOworfQorCitpbnQgbG93X3dyaXRlICh1bnNpZ25lZCBjaGFyICpidWZmZXIsdW5zaWduZWQgbG9uZyBsZW5ndGgsdW5zaWduZWQgbG9uZyBvZmZzZXQpCisKKy8qCisKK1RoaXMgaXMgdXNlZCB0byBjaGFuZ2Ugc29tZXRoaW5nIGluIHRoZSBmaWxlc3lzdGVtLgord3JpdGVfYWNjZXNzIGlzIGNoZWNrZWQgdG8gc2VlIGlmIHdlIGFyZSBhbGxvd2VkIHRvIGRvIHRoZSBhY3R1YWwgd3JpdGluZy4KK0FzIGEgZG91YmxlIHNhZmV0eSBtZWFzdXJlLCBBbGxvd0NoYW5nZXMgaXMgcmVjaGVja2VkIGhlcmUuCitJZiBsb2dnaW5nIGlzIGVuYWJsZWQsIHdlIGxvZyB0aGUgY2hhbmdlIGJlZm9yZSB3cml0aW5nIGl0IHRvIHRoZSBkZXZpY2UuCisKKyovCit7CisJY2hhciB0ZW1wIFs4MF07CisKKwlpZiAoIXdyaXRlX2FjY2VzcykgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBXcml0ZSBhY2Nlc3Mgbm90IGF2aWFibGUgKHVzZSBlbmFibGV3cml0ZSlcbiIpOworCQlyZXR1cm4gKDApOworCX0KKworI2lmZGVmIERFQlVHCisKKwlpZiAoIUFsbG93Q2hhbmdlcykgeworCQlpbnRlcm5hbF9lcnJvciAoIkFsbG93Q2hhbmdlcz0wIHlldCBlbmFibGV3cml0ZSBzdWNjZWVkZWQiLCJkaXNrIiwibG93X3dyaXRlIik7CisJCXJldHVybiAoMCk7CisJfQorCisJaWYgKGRldmljZV9oYW5kbGU9PU5VTEwpIHsKKwkJaW50ZXJuYWxfZXJyb3IgKCJObyBkZXZpY2Ugb3BlbmVkIHlldCByZWFkIHJlcXVlc3RlZCIsImRpc2siLCJsb3dfd3JpdGUiKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAob2Zmc2V0ID4gZmlsZV9zeXN0ZW1faW5mby5maWxlX3N5c3RlbV9zaXplKSB7CisJCXNwcmludGYgKHRlbXAsIlNlZWsgb2Zmc2V0ICVsZCBpcyBvdXQgb2YgcmFuZ2UiLG9mZnNldCk7CisJCWludGVybmFsX2Vycm9yICh0ZW1wLCJkaXNrIiwibG93X3dyaXRlIik7CisJCXJldHVybiAoMCk7CisJfQorCisjZW5kaWYKKworCWlmIChMb2dDaGFuZ2VzKQorCQlpZiAoIWxvZ19jaGFuZ2VzIChidWZmZXIsbGVuZ3RoLG9mZnNldCkpCisJCQlyZXR1cm4gKDApOworCisJaWYgKCAoZnNlZWsgKGRldmljZV9oYW5kbGUsb2Zmc2V0LFNFRUtfU0VUKSk9PS0xKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZhaWxlZCB0byBzZWVrIHRvIG9mZnNldCAlbGQgaW4gZGV2aWNlICVzXG4iLG9mZnNldCxkZXZpY2VfbmFtZSk7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuICgwKTsKKwl9OworCisKKwlpZiAoIChmd3JpdGUgKGJ1ZmZlciwxLGxlbmd0aCxkZXZpY2VfaGFuZGxlKSk9PS0xKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZhaWxlZCB0byB3cml0ZSB0byBvZmZzZXQgJWxkIGluIGRldmljZSAlc1xuIixvZmZzZXQsZGV2aWNlX25hbWUpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybiAoMCk7CisJfTsKKworCXdwcmludHcgKGNvbW1hbmRfd2luLCJEYXRhIHdyaXR0ZW4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCXJldHVybiAoMSk7Cit9CisKK2ludCBsb2dfY2hhbmdlcyAodW5zaWduZWQgY2hhciAqYnVmZmVyLHVuc2lnbmVkIGxvbmcgbGVuZ3RoLHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQorCisvKgorCitMb2cgdGhlIGNoYW5nZSBpbiBhIHByaW1pdGl2ZSBmb3JtIC0gQW4gaGV4IGR1bXAgb2YgdGhlIGRhdGEgYmVmb3JlIHRoZSBjaGFuZ2UgYW5kIGFmdGVyIHRoZSBjaGFuZ2UuCitUaGUgaGV4IGJ5dGVzIGFyZSBjb252ZXJ0ZWQgdG8gdGV4dCwgc28gdGhhdCB0aGV5IHdpbGwgYmUgcmVhZGFibGUgd2l0aCBhIHN0YW5kYXJkIHRleHQgZWRpdG9yLgorCisqLworCit7CisJdW5zaWduZWQgY2hhciAqb3JpZ2luYWw7CisKKwlpbnQgaTsKKwl0aW1lX3QgY3VycmVudF90aW1lOworCUZJTEUgKmZwOworCisJaWYgKChmcD1mb3BlbiAoTG9nRmlsZSwiYSsiKSk9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gVW5hYmxlIHRvIG9wZW4gbG9nIGZpbGUgJXNcbiIsTG9nRmlsZSk7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuICgwKTsKKwl9OworCisJY3VycmVudF90aW1lPXRpbWUgKE5VTEwpOworCisJZnByaW50ZiAoZnAsIlxuLS0tLS0gRVhUMkVEIGxvZyBiZWdpbiAtLS0tLVxuXG4iKTsKKwlmcHJpbnRmIChmcCwiVGltZTogJXNcbkRldmljZTogJXNcbiIsY3RpbWUgKCh0aW1lX3QgKikgJmN1cnJlbnRfdGltZSksZGV2aWNlX25hbWUpOworCWZwcmludGYgKGZwLCJPZmZzZXQ6ICVsdVxuTGVuZ3RoOiAlbHVcbiIsb2Zmc2V0LGxlbmd0aCk7CisKKwlvcmlnaW5hbD0odW5zaWduZWQgY2hhciAqKSBtYWxsb2MgKGxlbmd0aCpzaXplb2YgKHVuc2lnbmVkIGNoYXIpKTsKKworCWlmIChvcmlnaW5hbD09TlVMTCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRmF0YWwgZXJyb3IgLSBDYW5cJ3QgYWxsb2NhdGUgJWx1IGJ5dGVzISIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO2ZjbG9zZSAoZnApO3JldHVybiAoMCk7CisJfQorCisJaWYgKCFsb3dfcmVhZCAob3JpZ2luYWwsbGVuZ3RoLG9mZnNldCkpIHsKKwkJZmNsb3NlIChmcCk7cmV0dXJuICgwKTsKKwl9CisKKwlmcHJpbnRmIChmcCwiXG5PcmlnaW5hbCBkYXRhOlxuXG4iKTsKKworCWZvciAoaT0wO2k8bGVuZ3RoO2krKykgeworCQlpZiAoaSUxNj09MCAmJiBpIT0wKSBmcHJpbnRmIChmcCwiXG4iKTsKKwkJZnByaW50ZiAoZnAsIiUwMnggIixvcmlnaW5hbCBbaV0pOworCX0KKworCWZwcmludGYgKGZwLCJcblxuTmV3IGRhdGE6XG5cbiIpOworCisJZm9yIChpPTA7aTxsZW5ndGg7aSsrKSB7CisJCWlmIChpJTE2PT0wICYmIGkhPTApIGZwcmludGYgKGZwLCJcbiIpOworCQlmcHJpbnRmIChmcCwiJTAyeCAiLGJ1ZmZlciBbaV0pOworCX0KKworCWZwcmludGYgKGZwLCJcbi0tLS0tIEVYVDJFRCBsb2cgZW5kICAtLS0tLVxuIik7CisKKwlmY2xvc2UgKGZwKTsKKwlyZXR1cm4gKDEpOworfQorCitpbnQgbG9hZF90eXBlX2RhdGEgKHZvaWQpCisKKy8qCisKK0p1c3QgcmVhZCBmcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uIGludG8gdHlwZSBkYXRhLgorCisqLworCit7CisJaWYgKGRldmljZV9oYW5kbGU9PU5VTEwpIHsKKwkJcHJpbnRmICgiRXJyb3IgLSBObyBkZXZpY2Ugb3BlbmVkXG4iKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAoZGV2aWNlX29mZnNldD09LTEpIHsKKwkJcHJpbnRmICgiRXJyb3IgLSBObyBvZmZzZXQgc2V0XG4iKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAobG93X3JlYWQgKHR5cGVfZGF0YS51LmJ1ZmZlcixFWFQyX01BWF9CTE9DS19TSVpFLGRldmljZV9vZmZzZXQpPT0wKQorCQlyZXR1cm4gKDApOworCisJaWYgKGN1cnJlbnRfdHlwZSE9TlVMTCkKKwkJaWYgKHN0cmNtcCAoY3VycmVudF90eXBlLT5uYW1lLCJleHQyX2Rpcl9lbnRyeSIpPT0wKQorCQkJY3VycmVudF90eXBlLT5sZW5ndGg9dHlwZV9kYXRhLnUudF9leHQyX2Rpcl9lbnRyeS5yZWNfbGVuOworCisJcmV0dXJuICgxKTsKK30KKworaW50IHdyaXRlX3R5cGVfZGF0YSAodm9pZCkKKworeworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGRldmljZSBvcGVuZWRcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm4gKDApOworCX0KKworCWlmIChkZXZpY2Vfb2Zmc2V0PT0tMSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBObyBvZmZzZXQgc2V0XG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAobG93X3dyaXRlICh0eXBlX2RhdGEudS5idWZmZXIsZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLGRldmljZV9vZmZzZXQpPT0wKQorCQlyZXR1cm4gKDApOworCisJcmV0dXJuICgxKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9kb2MvZXh0MmVkLWRlc2lnbi5zZ21sIGIvZTJmc3Byb2dzL2V4dDJlZC9kb2MvZXh0MmVkLWRlc2lnbi5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMmRmOTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL2RvYy9leHQyZWQtZGVzaWduLnNnbWwKQEAgLTAsMCArMSwzNDU5IEBACis8IURPQ1RZUEUgQXJ0aWNsZSBQVUJMSUMgIi0vL0RhdmVucG9ydC8vRFREIERvY0Jvb2sgVjMuMC8vRU4iPgorCis8QXJ0aWNsZT4KKworPEFydEhlYWRlcj4KKworPFRpdGxlPkVYVDJFRCAtIFRoZSBFeHRlbmRlZC0yIGZpbGVzeXN0ZW0gZWRpdG9yIC0gRGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbjwvVGl0bGU+Cis8QVVUSE9SCis+Cis8Rmlyc3ROYW1lPlByb2dyYW1tZWQgYnkgR2FkaSBPeG1hbiwgd2l0aCB0aGUgZ3VpZGUgb2YgQXZuZXIgTG90dGVtPC9GaXJzdE5hbWU+Cis8L0FVVEhPUgorPgorPFB1YkRhdGU+djAuMSwgQXVndXN0IDMgMTk5NTwvUHViRGF0ZT4KKworPC9BcnRIZWFkZXI+CisKKzxTZWN0MT4KKzxUaXRsZT5BYm91dCBFWFQyRUQgZG9jdW1lbnRhdGlvbjwvVGl0bGU+CisKKzxQYXJhPgorVGhlIEVYVDJFRCBkb2N1bWVudGF0aW9uIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgZXh0MiBmaWxlc3lzdGVtIG92ZXJ2aWV3LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIEVYVDJFRCB1c2VyJ3MgZ3VpZGUuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgRVhUMkVEIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoaXMgZG9jdW1lbnQgaXMgbm90IHRoZSB1c2VyJ3MgZ3VpZGUuIElmIHlvdSBqdXN0IGludGVuZCB0byB1c2UgRVhUMkVELCB5b3UKK21heSBub3Qgd2FudCB0byByZWFkIGl0LgorPC9QYXJhPgorCis8UGFyYT4KK0hvd2V2ZXIsIGlmIHlvdSBpbnRlbmQgdG8gYnJvd3NlIGFuZCBtb2RpZnkgdGhlIHNvdXJjZSBjb2RlLCB0aGlzIGRvY3VtZW50IGlzCitmb3IgeW91LgorPC9QYXJhPgorCis8UGFyYT4KK0luIGFueSBjYXNlLCBJZiB5b3UgaW50ZW5kIHRvIHJlYWQgdGhpcyBhcnRpY2xlLCBJIHN0cm9uZ2x5IHN1Z2dlc3QgdGhhdCB5b3UKK3dpbGwgYmUgZmFtaWxpYXIgd2l0aCB0aGUgbWF0ZXJpYWwgcHJlc2VudGVkIGluIHRoZSBvdGhlciB0d28gYXJ0aWNsZXMgYXMgd2VsbC4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlByZWZhY2U8L1RpdGxlPgorCis8UGFyYT4KK0luIHRoaXMgZG9jdW1lbnQgSSB3aWxsIHRyeSB0byBleHBsYWluIGhvdyBFWFQyRUQgaXMgY29uc3RydWN0ZWQuCitBdCB0aGlzIHRpbWUgb2Ygd3JpdGluZywgdGhlIGluaXRpYWwgdmVyc2lvbiBpcyBmaW5pc2hlZCBhbmQgcmVhZHkKK2ZvciBkaXN0cmlidXRpb247IEl0IGlzIGZ1bGx5IGZ1bmN0aW9uYWwuIEhvd2V2ZXIsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCitjYXNlLgorPC9QYXJhPgorCis8UGFyYT4KK0F0IGZpcnN0LCBJIGRpZG4ndCBrbm93IG11Y2ggYWJvdXQgVW5peCwgbXVjaCBsZXNzIGFib3V0IFVuaXggZmlsZXN5c3RlbXMsCithbmQgZXZlbiBsZXNzIGFib3V0IExpbnV4IGFuZCB0aGUgZXh0ZW5kZWQtMiBmaWxlc3lzdGVtLiBXaGlsZSB3b3JraW5nCitvbiB0aGlzIHByb2plY3QsIEkgZ3JhZHVhbGx5IGFjcXVpcmVkIGtub3dsZWRnZSBhYm91dCBhbGwgb2YgdGhlIGFib3ZlCitzdWJqZWN0cy4gSSBjYW4gdGhpbmsgb2YgdHdvIHdheXMgaW4gd2hpY2ggSSBjb3VsZCBoYXZlIG1hZGUgbXkgcHJvamVjdDoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgIkVuZ2luZWVyIiB3YXkKKworTGVhcm4gdGhlIHN1YmplY3QgdGhyb3VnaGx5IGJlZm9yZSBJIGdldCB0byB0aGUgcHJvZ3JhbW1pbmcgaXRzZWxmLgorVGhlbiwgSSBjb3VsZCBlYXNpbHkgc2VlIHRoZSBlbnRpcmUgcGljdHVyZSBhbmQgc2VsZWN0IHRoZSBiZXN0Citjb3Vyc2Ugb2YgYWN0aW9uLCB0YWtpbmcgYWxsIHRoZSBmYWN0b3JzIGludG8gYWNjb3VudC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSAiRXhwbG9yZXIgLSBQcm9ncmVzc2l2ZSIgd2F5LgorCitKdW1wIGltbWVkaWF0ZWx5IGludG8gdGhlIGNvbGQgd2F0ZXIgLSBTdGFydCBwcm9ncmFtbWluZyBhbmQKK2xlYXJuaW5nIHRoZSBtYXRlcmlhbCBwYXJhbGxlbGx5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK0kgZ3Vlc3MgdGhhdCB0aGUgYWJvdmUgZGlsZW1tYSBpcyB0eXBpY2FsIGFuZCBhcHBlYXJzIGFsbCB0aHJvdWdoIHNjaWVuY2UgYW5kCit0ZWNobm9sb2d5LgorPC9QYXJhPgorCis8UGFyYT4KK0hvd2V2ZXIsIEkgZGlkbid0IGhhdmUgdGhlIGx1eHVyeSBvZiBjaG9pY2Ugd2hlbiBJIHN0YXJ0ZWQgbXkgcHJvamVjdCAtCitMaW51eCBpcyBhIHJlbGF0aXZlbHkgbmV3IChhbmQgZ3JlYXQhKSBvcGVyYXRpbmcgc3lzdGVtLiBUaGUgZXh0ZW5kZWQtMgorZmlsZXN5c3RlbSBpcyBldmVuIG5ld2VyIC0gSXRzIGZpcnN0IHJlbGVhc2UgbGllcyBzb21ld2hlcmUgaW4gMTk5MyAtIE9ubHkKK3Bhc3NlZCB0d28geWVhcnMgdW50aWwgSSBzdGFydGVkIHdvcmtpbmcgb24gbXkgcHJvamVjdC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgc2l0dWF0aW9uIEkgZm91bmQgbXlzZWxmIGF0IHRoZSBiZWdpbm5pbmcgd2FzIHRoYXQgSSBkaWRuJ3QgaGF2ZSBhIGZ1bGx5CitkZXRhaWxlZCBkb2N1bWVudCB3aGljaCBkZXNjcmliZXMgdGhlIGV4dDIgZmlsZXN5c3RlbS4gSW4gZmFjdCwgSSBkaWRuJ3QKK2hhdmUgYW55IGV4dDIgZG9jdW1lbnQgYXQgYWxsLiBXaGVuIEkgYXNrZWQgQXZuZXIgYWJvdXQgZG9jdW1lbnRhdGlvbiwgaGUKK3N1Z2dlc3RlZCB0d28gcmVmZXJlbmNlczoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJQSBnZW5lcmFsIFVuaXggYm9vayAtIFRIRSBERVNJR04gT0YgVEhFIFVOSVggT1BFUkFUSU5HIFNZU1RFTSwgYnkKK01hdXJpY2UgSi4gQmFjaC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBrZXJuZWwgc291cmNlcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitJIHJlYWQgdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBib29rIGJlZm9yZSBJIHN0YXJ0ZWQgbXkgcHJvamVjdCAtIEl0IGlzIGEKK2JpdCBvbGQgbm93LCBidXQgdGhlIHByaW5jaXBsZXMgYXJlIHN0aWxsIHRoZSBzYW1lLiBIb3dldmVyLCBJIG5lZWRlZAorbW9yZSB0aGFuIGp1c3QgdGhlIHByaW5jaXBsZXMuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGtlcm5lbCBzb3VyY2VzIGFyZSBhIHJhcmUgYm9udXMhIFlvdSBkb24ndCBnZXQgZXZlcnlkYXkgdGhlIGZ1bGwKK3NvdXJjZXMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uIFRoZXJlIGlzIHNvIG11Y2ggdGhhdCBjYW4gYmUgbGVhcm5lZCBmcm9tCit0aGVtLCBhbmQgaXQgaXMgdGhlIHVsdGltYXRlIHNvdXJjZSAtIFRoZSBleGFjdCBhbnN3ZXIgaG93IHRoZSBrZXJuZWwKK3dvcmtzIGlzIHRoZXJlLCB3aXRoIGFsbCB0aGUgZmluZSBkZXRhaWxzLiBBdCB0aGUgZmlyc3Qgd2VlayBJIHN0YXJ0ZWQgdG8KK2xvb2sgYXQgcmFuZG9tIGF0IHRoZSByZWxldmFudCBwYXJ0cyBvZiB0aGUgc291cmNlcy4gSG93ZXZlciwgaXQgaXMgZGlmZmljdWx0Cit0byB1bmRlcnN0YW5kIHRoZSBnbG9iYWwgcGljdHVyZSBmcm9tIGRpcmVjdCByZWFkaW5nIG9mIG92ZXIgb25lIGh1bmRyZWQKK3BhZ2Ugc291cmNlcy4gVGhlbiwgSSBzdGFydGVkIHRvIGRvIHNvbWUgcHJvZ3JhbW1pbmcuIEkgZGlkbid0IGtub3cKK3lldCB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLCBhbmQgSSBzdGFydGVkIHRvIHdvcmsgb24gdGhlIHByb2plY3QgbGlrZSBhIGtpZAord2hvIHN0YXJ0cyB0byBidWlsZCBhIGxhcmdlIHB1enpsZS4KKzwvUGFyYT4KKworPFBhcmE+CitIb3dldmVyLCB0aGlzIHdhcyBleGFjdGx5IHRoZSBpbnRlcmVzdGluZyBwYXJ0ISBJdCBpcyBmcnVzdHJhdGluZyB0byBrbm93CitpdCBhbGwgZnJvbSBhZHZhbmNlIC0gSSB0aGluayB0aGF0IHRoZSBkaXNjb3ZlcnkgaXRzZWxmLCBiaXQgYnkgYml0LCBpcyB0aGUKK2tleSB0byBhIHRydWUgbGVhcm5pbmcgYW5kIHVuZGVyc3RhbmRpbmcuCis8L1BhcmE+CisKKzxQYXJhPgorTm93LCBpbiB0aGlzIGRvY3VtZW50LCBJIGFtIHRyeWluZyB0byBwcmVzZW50IHRoZSBzdWJqZWN0LiBFdmVuIHRob3VnaCBJCitkZXZlbG9wZWQgRVhUMkVEIHByb2dyZXNzaXZlbHksIEkgbm93IGNhbiBzZWUgdGhlIGVudGlyZSBzdWJqZWN0IG11Y2gKK2JyaWdodGVyIHRoYW4gSSBkaWQgYmVmb3JlLCBhbmQgdGhvdWdoIEkgZG8gaGF2ZSB0aGUgb3B0aW9uIG9mIHByZXNlbnRpbmcgaXQKK29ubHkgaW4gdGhlICJlbmdpbmVlciIgd2F5LiBIb3dldmVyLCBJIHdpbGwgbm90IGRvIHRoYXQuCis8L1BhcmE+CisKKzxQYXJhPgorTXkgcHJlc2VudGF0aW9uIHdpbGwgYmUgbWl4ZWQgLSBTb21ldGltZXMgSSB3aWxsIHByZXNlbnQgYSBzdWJqZWN0IHdpdGggYW4KK2luY3JlbWVudGFsIHBlcnNwZWN0aXZlLCBhbmQgc29tZXRpbWVzIGZyb20gYSAidG9wIGRvd24iIHZpZXcuIEknbGwgbGVhdmUKK3lvdSB0byBkZWNpZGUgaWYgbXkgcHJlc2VudGF0aW9uIGNob2ljZSB3YXMgd2lzZSA6LSkKKzwvUGFyYT4KKworPFBhcmE+CitJbiBhZGRpdGlvbiwgeW91J2xsIG5vdGljZSB0aGF0IHRoZSBzZWN0aW9ucyB0ZW5kIHRvIGdldCBzaG9ydGVyIGFzIHdlIGdldAorY2xvc2VyIHRvIHRoZSBlbmQuIFRoZSByZWFzb24gaXMgc2ltcGx5IHRoYXQgSSBzdGFydGVkIHRvIGZlZWwgdGhhdCBJIHdhcworcmVwZWF0aW5nIG15c2VsZiBzbyBJIGRlY2lkZWQgdG8gcHJlc2VudCBvbmx5IHRoZSBuZXcgaWRlYXMuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5HZXR0aW5nIHN0YXJ0ZWQgLi4uPC9UaXRsZT4KKworPFBhcmE+CitHZXR0aW5nIHN0YXJ0ZWQgaXMgYWxtb3N0IGFsd2F5cyB0aGUgbW9zdCBkaWZmaWN1bHQgdGFzay4gT25jZSB5b3UgZ2V0CitzdGFydGVkLCB0aGluZ3Mgc3RhcnQgInJ1bm5pbmciIC4uLgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+QmVmb3JlIHRoZSBhY3R1YWwgcHJvZ3JhbW1pbmc8L1RpdGxlPgorCis8UGFyYT4KK0Zyb20gbWluZSB0YWxraW5nIHdpdGggQXZuZXIsIEkgdW5kZXJzdG9vZCB0aGF0IExpbnV4LCBsaWtlIGFueSBvdGhlciBVbml4CitzeXN0ZW0sIHByb3ZpZGVzIGFjY2Vzc2VzIHRvIHRoZSBlbnRpcmUgZGlzayBhcyB0aG91Z2ggaXQgd2VyZSBhIGdlbmVyYWwKK2ZpbGUgLSBBY2Nlc3NpbmcgdGhlIGRldmljZS4gSXQgaXMgc3VyZWx5IGEgbmljZSBpZGVhLiBBdm5lciBzdWdnZXN0ZWQgdHdvCit3YXlzIG9mIGFjdGlvbjoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJT3BlbmluZyB0aGUgZGV2aWNlIGxpa2UgYSByZWd1bGFyIGZpbGUgaW4gdGhlIHVzZXIgc3BhY2UuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDb25zdHJ1Y3RpbmcgYSBkZXZpY2UgZHJpdmVyIHdoaWNoIHdpbGwgcnVuIGluIHRoZSBrZXJuZWwgc3BhY2UgYW5kCitwcm92aWRlIGhvb2tzIGZvciB0aGUgdXNlciBzcGFjZSBwcm9ncmFtLiBUaGUgYWR2YW50YWdlIGlzIHRoYXQgaXQKK3dpbGwgYmUgYSBwYXJ0IG9mIHRoZSBrZXJuZWwsIGFuZCB3b3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgZXh0Mgora2VybmVsIGZ1bmN0aW9ucyB0byBkbyBzb21lIG9mIHRoZSB3b3JrLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK0kgY2hvc2UgdGhlIGZpcnN0IHdheS4gSSB0aGluayB0aGF0IHRoZSBiYXNpYyByZWFzb24gd2FzIHNpbXBsaWNpdHkgLSBMZWFybmluZwordGhlIGV4dDIgZmlsZXN5c3RlbSB3YXMgY29tcGxpY2F0ZWQgZW5vdWdoLCBhbmQgYWRkaW5nIHRvIGl0IHRoZSB0YXNrIG9mCitsZWFybmluZyBob3cgdG8gcHJvZ3JhbSBpbiB0aGUga2VybmVsIHNwYWNlIHdhcyB0b28gbXVjaC4gSSBzdGlsbCBkb24ndCBrbm93Citob3cgdG8gcHJvZ3JhbSBhIGRldmljZSBkcml2ZXIsIGFuZCB0aGlzIGlzIHBlcmhhcHMgdGhlIGJhZCBwYXJ0LCBidXQKK2NvbmNlcm5pbmcgdGhlIHByb2plY3QgaW4gYSBiYWNrLXBlcnNwZWN0aXZlLCBJIHRoaW5rIHRoYXQgdGhlIGZpcnN0IHdheSBpcworc3VwZXJpb3IgdG8gdGhlIHNlY29uZDsgSXJvbmljYWxseSwgYmVjYXVzZSBvZiB0aGUgdmVyeSByZWFzb24gSSBjaG9zZSBpdCAtCitTaW1wbGljaXR5LiBFWFQyRUQgY2FuIG5vdyBydW4gZW50aXJlbHkgaW4gdGhlIHVzZXIgc3BhY2UgKHdoaWNoIEkgdGhpbmsgaXMKK2EgcG9pbnQgaW4gZmF2b3IsIGJlY2F1c2UgaXQgZG9lc24ndCByZXF1aXJlIHRoZSB1c2VyIHRvIHJlY29tcGlsZSBpdHMKK2tlcm5lbCksIGFuZCB0aGUgZW50aXJlIGhhcmQgd29yayBpcyBtaW5lLCB3aGljaCBmaXR0ZWQgbmljZWx5IGludG8gdGhlCitsZWFybmluZyBleHBlcmllbmNlIC0gSSBkaWRuJ3QgdXNlIG90aGVyIGNvZGUgdG8gZG8gdGhlIGpvYiAoYXNpZGUgZnJvbQorbG9va2luZyBhdCB0aGUgc291cmNlcywgb2YtY291cnNlKS4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkp1bXBpbmcgaW50byB0aGUgY29sZCB3YXRlcjwvVGl0bGU+CisKKzxQYXJhPgorSSBkaWRuJ3Qga25vdyBhbG1vc3QgYW55dGhpbmcgb2YgdGhlIHN0cnVjdHVyZSBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtLgorUmVhZGluZyB0aGUgc291cmNlcyB3YXMgbm90IGVub3VnaCAtIEkgbmVlZGVkIHRvIGV4cGVyaW1lbnQuIEhvd2V2ZXIsIGEgdG9vbAorZm9yIGV4cGVyaW1lbnRzIGluIHRoZSBleHQyIGZpbGVzeXN0ZW0gd2FzIGV4YWN0bHkgbXkgcHJvamVjdCEgLSBLaW5kIG9mIGEKK3BhcmFkb3guCis8L1BhcmE+CisKKzxQYXJhPgorSSBzdGFydGVkIGltbWVkaWF0ZWx5IHdpdGggY29uc3RydWN0aW5nIGEgc2ltcGxlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aGV4IGVkaXRvcjwvTGl0ZXJhbD4gLSBJdCB3b3VsZAorb3BlbiB0aGUgZGV2aWNlIGFzIGEgcmVndWxhciBmaWxlLCBwcm92aWRlIG1lYW5zIG9mIG1vdmluZyBpbnNpZGUgdGhlCitmaWxlc3lzdGVtIHdpdGggYSBzaW1wbGUgPExpdGVyYWwgcmVtYXA9InR0Ij5vZmZzZXQ8L0xpdGVyYWw+IG1ldGhvZCwgYW5kIGp1c3Qgc2hvdyBhCis8TGl0ZXJhbCByZW1hcD0idHQiPiBoZXggZHVtcDwvTGl0ZXJhbD4gb2YgdGhlIGNvbnRlbnRzIGF0IHRoaXMgcG9pbnQuIFByb2dyYW1taW5nIHRoaXMgd2FzIHRyaXZpYWxseQorc2ltcGxlIG9mLWNvdXJzZS4gQXQgdGhpcyBwb2ludCwgdGhlIHVzZXItaW50ZXJmYWNlIGRpZG4ndCBtYXR0ZXIgdG8gbWUgLSBJCit3YW50ZWQgYSBmYXN0IHdheSB0byBpbnRlcmFjdC4gQXMgYSByZXN1bHQsIEkgY2hvc2UgYSBzaW1wbGUgY29tbWFuZCBsaW5lCitwYXJzZXIuIE9mIGNvdXJzZSwgdGhlcmUgd2hlcmUgbm8gd2luZG93cyBhdCB0aGlzIHBvaW50LgorPC9QYXJhPgorCis8UGFyYT4KK0EgaGV4IGVkaXRvciBpcyBuaWNlLCBidXQgaXMgbm90IGVub3VnaC4gSXQgaW5kZWVkIGVuYWJsZWQgbWUgdG8gc2VlIGVhY2ggcGFydAorb2YgdGhlIGZpbGVzeXN0ZW0sIGJ1dCB0aGUgZm9ybWF0IG9mIHRoZSB2aWV3ZWQgZGF0YSB3YXMgZGlmZmljdWx0IHRvCithbmFseXplLiBJIHdhbnRlZCB0byBzZWUgdGhlIGRhdGEgaW4gYSBtb3JlIGludHVpdGl2ZSB3YXkuCis8L1BhcmE+CisKKzxQYXJhPgorQXQgdGhpcyBwb2ludCBvZiB0aW1lLCB0aGUgbW9zdCBoZWxwZnVsIGZpbGUgaW4gdGhlIHNvdXJjZXMgd2FzIHRoZSBleHQyCittYWluIGluY2x1ZGUgZmlsZSAtIDxMaXRlcmFsIHJlbWFwPSJ0dCI+L3Vzci9pbmNsdWRlL2xpbnV4L2V4dDImbG93YmFyO2ZzLmg8L0xpdGVyYWw+LiBBbW9uZyBpdHMgY29udGVudHMKK3RoZXJlIHdlcmUgdmFyaW91cyBzdHJ1Y3R1cmVzIHdoaWNoIEkgYXNzdW1lZCB0aGV5IGFyZSBkaXNrIGltYWdlcyAtIEFwcGVhcgorZXhhY3RseSBsaWtlIHRoYXQgb24gdGhlIGRpc2suCis8L1BhcmE+CisKKzxQYXJhPgorSSB3YW50ZWQgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnF1aWNrPC9MaXRlcmFsPiB3YXkgdG8gZ2V0IGdvaW5nLiBJIGRpZG4ndCBoYXZlIHRoZSBwYXRpZW5jZSB0byBsZWFybgorZWFjaCBvZiB0aGUgc3RydWN0dXJlcyB1c2UgaW4gdGhlIGNvZGUuIFJhdGhlciwgSSB3YW50ZWQgdG8gc2VlIHRoZW0gaW4gYWN0aW9uLAorc28gdGhhdCBJIGNvdWxkIGV4cGxvcmUgdGhlIGNvbm5lY3Rpb25zIGJldHdlZW4gdGhlbSAtIFRlc3QgbXkgYXNzdW1wdGlvbnMsCithbmQgcmVhY2ggb3RoZXIgYXNzdW1wdGlvbnMuCis8L1BhcmE+CisKKzxQYXJhPgorU28gYWZ0ZXIgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aGV4IGVkaXRvcjwvTGl0ZXJhbD4sIEVYVDJFRCBwcm9ncmVzc2VkIGludG8gYSB0b29sIHdoaWNoIGhhcyBzb21lCitlbGVtZW50cyBvZiBhIGNvbXBpbGVyLiBJIHByb2dyYW1tZWQgRVhUMkVEIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZHluYW1pY2FsbHkgcmVhZCB0aGUga2VybmVsCitleHQyIG1haW4gaW5jbHVkZSBmaWxlIGluIHJ1biB0aW1lPC9MaXRlcmFsPiwgYW5kIHByb2Nlc3MgdGhlIGluZm9ybWF0aW9uLiBUaGUgZ29hbAord2FzIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW1wbHkgYSBzdHJ1Y3R1cmUtZGVmaW5pdGlvbiBvbiB0aGUgY3VycmVudCBvZmZzZXQgYXQgdGhlCitmaWxlc3lzdGVtPC9MaXRlcmFsPi4gRVhUMkVEIHdvdWxkIHRoZW4gZGlzcGxheSB0aGUgc3RydWN0dXJlIGFzIGEgbGlzdCBvZiBpdHMKK3ZhcmlhYmxlcyBuYW1lcyBhbmQgY29udGVudHMsIGluc3RlYWQgb2YgYSBtZWFuaW5nbGVzcyBoZXggZHVtcC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZm9ybWF0IG9mIHRoZSBpbmNsdWRlIGZpbGUgaXMgbm90IHZlcnkgY29tcGxpY2F0ZWQgLSBUaGUgc3RydWN0dXJlcworYXJlIG1vc3RseSA8TGl0ZXJhbCByZW1hcD0idHQiPmZsYXQ8L0xpdGVyYWw+IC0gRGlkbid0IGNvbnRhaW4gYSBsb3Qgb2YgcmVjdXJzaXZlIHN0cnVjdHVyZTsgT25seSBhCitnbG9iYWwgc3RydWN0dXJlIGRlZmluaXRpb24sIGFuZCBzb21lIHZhcmlhYmxlcy4gVGhlcmUgd2VyZSBjYXNlcyBvZgorc3RydWN0dXJlcyBpbnNpZGUgc3RydWN0dXJlcywgSSB0cmVhdGVkIHRoZW0gaW4gYSBzb21ld2hhdCBub24tZWxlZ2FudCB3YXkgLSBJCittYWRlIGFsbCB0aGUgc3RydWN0dXJlcyBmbGF0LCBhbmQgZXhwYW5kZWQgdGhlIGFycmF5cy4gQXMgYSByZXN1bHQsIHRoZSBwYXJzZXIKK3dhcyB2ZXJ5IHNpbXBsZS4gQWZ0ZXIgYWxsLCB0aGlzIHdhcyBub3QgYW4gZXhlcmNpc2UgaW4gY29tcGlsaW5nLCBhbmQgSQord2FudGVkIHRvIHF1aWNrbHkgZ2V0IHNvbWUgcmVzdWx0cy4KKzwvUGFyYT4KKworPFBhcmE+CitUbyBoYW5kbGUgdGhlIHRhc2ssIEkgY29uc3RydWN0ZWQgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0Jmxvd2JhcjtkZXNjcmlwdG9yPC9MaXRlcmFsPiBzdHJ1Y3R1cmUuCitFYWNoIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0Jmxvd2JhcjtkZXNjcmlwdG9yIGluc3RhbmNlPC9MaXRlcmFsPiBjb250YWluZWQgaW5mb3JtYXRpb24gd2hpY2ggaXMgbmVlZGVkCitpbiBvcmRlciB0byBmb3JtYXQgYSBibG9jayBvZiBkYXRhIGFjY29yZGluZyB0byB0aGUgQyBzdHJ1Y3R1cmUgY29udGFpbmVkIGluIAordGhlIGtlcm5lbCBzb3VyY2UuIFRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQ6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBkZXNjcmlwdG9yIG5hbWUsIHVzZWQgdG8gcmVmZXJlbmNlIHRvIHRoZSBzdHJ1Y3R1cmUgaW4gRVhUMkVELgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIG5hbWUgb2YgZWFjaCB2YXJpYWJsZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSByZWxhdGl2ZSBvZmZzZXQgb2YgdGhlIGVhY2ggdmFyaWFibGUgaW4gdGhlIGRhdGEgYmxvY2suCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgbGVuZ3RoLCBpbiBieXRlcywgb2YgZWFjaCB2YXJpYWJsZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitTaW5jZSBJIGRpZG4ndCB3YW50IHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3RydWN0dXJlcywgSSBjaG9zZSBhIHNpbXBsZQorZG91YmxlIGxpbmtlZCBsaXN0IHRvIHN0b3JlIHRoZSBpbmZvcm1hdGlvbi4gT25lIHZhcmlhYmxlIGNvbnRhaW5lZCB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Y3VycmVudCBzdHJ1Y3R1cmUgdHlwZTwvTGl0ZXJhbD4gLSBBIHBvaW50ZXIgdG8gdGhlIHJlbGV2YW50Cis8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7ZGVzY3JpcHRvcjwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorTm93IEVYVDJFRCBjb250YWluZWQgYmFzaWNhbGx5IHRocmVlIGNvbW1hbmQgbGluZSBvcGVyYXRpb25zOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlzZXRkZXZpY2UKKworVXNlZCB0byBvcGVuIGEgZGV2aWNlIGZvciByZWFkaW5nIG9ubHkuIFdyaXRlIGFjY2VzcyB3YXMgcG9zdHBvbmVkCit0byBhIHZlcnkgYWR2YW5jZWQgc3RhdGUgaW4gdGhlIHByb2plY3QsIHNpbXBseSBiZWNhdXNlIEkgZGlkbid0Citrbm93IGEgdGhpbmcgb2YgdGhlIGZpbGVzeXN0ZW0gc3RydWN0dXJlLCBhbmQgSSBiZWxpZXZlZCB0aGF0CittYWtpbmcgYWN0dWFsIGNoYW5nZXMgd291bGQgZG8gbm90aGluZyBidXQgZGFtYWdlIDotKQorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJc2V0b2Zmc2V0CisKK1VzZWQgdG8gbW92ZSBpbiB0aGUgZGV2aWNlLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJc2V0dHlwZQorCitVc2VkIHRvIGltcGx5IGEgc3RydWN0dXJlIGRlZmluaXRpb24gb24gdGhlIGN1cnJlbnQgcGxhY2UuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlzaG93CisKK1VzZWQgdG8gZGlzcGxheSB0aGUgZGF0YS4gSXQgZGlzcGxheWVkIHRoZSBkYXRhIGluIGEgc2ltcGxlIGhleCBkdW1wCitpZiB0aGVyZSB3YXMgbm8gdHlwZSBzZXQsIG9yIGluIGEgbmljZSBmb3JtYXR0ZWQgd2F5IC0gQXMgYSBsaXN0IG9mCit0aGUgdmFyaWFibGUgY29udGVudHMsIGlmIHRoZXJlIHdhcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzxQYXJhPgorQ29tbWFuZCBsaW5lIGFuYWx5emluZyB3YXMgcHJpbWl0aXZlIGJhY2sgdGhlbiAtIEEgc2ltcGxlIHN3aXRjaCwgYXMgZmFyIGFzCitJIGNhbiByZW1lbWJlciAtIE5vdGhpbmcgYWxpa2UgdGhlIGN1cnJlbnQgZmxvdyBjb250cm9sLCBidXQgaXQgd2FzIGVub3VnaAorYXQgdGhlIHRpbWUuCis8L1BhcmE+CisKKzxQYXJhPgorQXQgdGhlIGVuZCwgSSBoYWQgc29tZXRoaW5nIHRvIHN0YXJ0IHdvcmtpbmcgd2l0aC4gSXQga25ldyB0byBmb3JtYXQgbWFueQorc3RydWN0dXJlcyAtIE5vbmUgb2Ygd2hpY2ggSSB1bmRlcnN0b29kIC0gYW5kIHByb3ZpZGVkIG1lLCB3aXRob3V0IHRvbyBtdWNoCit3b3JrLCBzb21ldGhpbmcgdG8gc3RhcnQgd2l0aC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlN0YXJ0aW5nIHRvIGV4cGxvcmU8L1RpdGxlPgorCis8UGFyYT4KK1dpdGggdGhlIGFib3ZlIHRvb2wgaW4gbXkgcG9ja2V0LCBJIHN0YXJ0ZWQgdG8gZXhwbG9yZSB0aGUgZXh0MiBmaWxlc3lzdGVtCitzdHJ1Y3R1cmUuIEZyb20gdGhlIGJyaWVmIHJlYWRpbmcgaW4gQmFjaCdzIGJvb2ssIEkgZ290IGZhbWlsaWFyIHRvIHNvbWUKK2Jhc2ljIGNvbmNlcHRzIC0gVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3VwZXJibG9jazwvTGl0ZXJhbD4sIGZvciBleGFtcGxlLiBJdCBzZWVtcyB0aGF0IHRoZQorc3VwZXJibG9jayBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgZmlsZXN5c3RlbS4gSSBkZWNpZGVkIHRvIHN0YXJ0CitleHBsb3Jpbmcgd2l0aCB0aGF0LgorPC9QYXJhPgorCis8UGFyYT4KK0kgcmVhbGl6ZWQgdGhhdCB0aGUgc3VwZXJibG9jayBzaG91bGQgYmUgYXQgYSBmaXhlZCBsb2NhdGlvbiBpbiB0aGUKK2ZpbGVzeXN0ZW0gLSBQcm9iYWJseSBuZWFyIHRoZSBiZWdpbm5pbmcuIFRoZXJlIGNhbiBiZSBubyBvdGhlciB3YXkgLQorVGhlIGtlcm5lbCBzaG91bGQgc3RhcnQgYXQgc29tZSBwbGFjZSB0byBmaW5kIGl0LiBBIGJyaWVmIGxvb2tpbmcgaW4KK3RoZSBrZXJuZWwgc291cmNlcyByZXZlYWxlZCB0aGF0IHRoZSBzdXBlcmJsb2NrIGlzIHNpZ25lZCBieSBhIHNwZWNpYWwKK3NpZ25hdHVyZSAtIEEgPExpdGVyYWwgcmVtYXA9InR0Ij5tYWdpYyBudW1iZXI8L0xpdGVyYWw+IC0gRVhUMiZsb3diYXI7U1VQRVImbG93YmFyO01BR0lDICgweEVGNTMgLSBFRiBwcm9iYWJseQorc3RhbmRzIGZvciBFeHRlbmRlZCBGaWxlc3lzdGVtKS4gSSBxdWlja2x5IGZvdW5kIHRoZSBzdXBlcmJsb2NrIGF0IHRoZQorZml4ZWQgb2Zmc2V0IDEwMjQgaW4gdGhlIGZpbGVzeXN0ZW0gLSBUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjttYWdpYzwvTGl0ZXJhbD4gdmFyaWFibGUgaW4gdGhlCitzdXBlcmJsb2NrIHdhcyBzZXQgZXhhY3RseSB0byB0aGUgYWJvdmUgdmFsdWUuCis8L1BhcmE+CisKKzxQYXJhPgorSXQgc2VlbXMgdGhhdCBzdGFydGluZyB3aXRoIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnN1cGVyYmxvY2s8L0xpdGVyYWw+IHdhcyBhIGdvb2QgYmV0IC0gSnVzdCBmcm9tCit0aGUgbGlzdCBvZiB2YXJpYWJsZXMsIG9uZSBjYW4gbGVhcm4gYSBsb3QuIEkgZGlkbid0IHVuZGVyc3RhbmQgYWxsIG9mIHRoZW0KK2F0IHRoZSB0aW1lLCBidXQgaXQgc2VlbWVkIHRoYXQgdGhlIGZvbGxvd2luZyBrZXl3b3JkcyB3ZXJlIHJlcGVhdGluZyB0aGVtc2VsZgoraW4gdmFyaW91cyB2YXJpYWJsZXM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWJsb2NrCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlpbm9kZQorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJZ3JvdXAKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitBdCB0aGlzIHBvaW50LCBJIHN0YXJ0ZWQgdG8gZXhwbG9yZSB0aGUgYmxvY2sgZ3JvdXBzLiBJIHdpbGwgbm90IGRldGFpbCBoZXJlCit0aGUgdGVjaG5pY2FsIGRlc2lnbiBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtLiBJIGhhdmUgd3JpdHRlbiBhIHNwZWNpYWwKK2FydGljbGUgd2hpY2ggZXhwbGFpbnMganVzdCB0aGF0LCBpbiB0aGUgImVuZ2luZWVyaW5nIiB3YXkuIFBsZWFzZSByZWZlciB0byBpdAoraWYgeW91IGZlZWwgdGhhdCB5b3UgYXJlIGxhY2tpbmcga25vd2xlZGdlIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGV4dDIKK2ZpbGVzeXN0ZW0uCis8L1BhcmE+CisKKzxQYXJhPgorSSB3YXMgZXhwbG9yaW5nIHRoZSBmaWxlc3lzdGVtIGluIHRoaXMgd2F5IGZvciBzb21lIHRpbWUsIGFsb25nIHdpdGggcmVhZGluZwordGhlIHNvdXJjZXMuIFRoaXMgbGVhZCBuYXR1cmFsbHkgdG8gdGhlIG5leHQgc3RlcC4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPk9iamVjdCBzcGVjaWZpYyBjb21tYW5kczwvVGl0bGU+CisKKzxQYXJhPgorV2hhdCBoYXMgYmVjb21lIGNsZWFyIGlzIHRoYXQgdGhlIGFib3ZlIHdheSBvZiBleHBsb3JpbmcgaXMgbm90IHBvd2VyZnVsCitlbm91Z2ggLSBJIGZvdW5kIG15c2VsZiBkb2luZyB2YXJpb3VzIGNhbGN1bGF0aW9ucyBtYW51YWxseSBpbiBvcmRlciB0byBwYXNzCitiZXR3ZWVuIHJlbGF0ZWQgc3RydWN0dXJlcy4gSSBuZWVkZWQgdG8gcmVwbGFjZSBzb21lIHRhc2tzIHdpdGggYW4gYXV0b21hdGVkCitwcm9jZWR1cmUuCis8L1BhcmE+CisKKzxQYXJhPgorSW4gYWRkaXRpb24sIGl0IGFsc28gYmVjYW1lIGNsZWFyIHRoYXQgKG9mLWNvdXJzZSkgZWFjaCBrZXkgb2JqZWN0IGluIHRoZQorZmlsZXN5c3RlbSBoYXMgaXRzIHNwZWNpYWwgcGxhY2UgaW4gcmVnYXJkIHRvIHRoZSBvdmVyYWxsIGV4dDIgZmlsZXN5c3RlbQorZGVzaWduLCBhbmQgbmVlZHMgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbmUgdHVuZWQgaGFuZGxpbmc8L0xpdGVyYWw+LiBJdCBpcyBhdCB0aGlzIHBvaW50IHRoYXQgdGhlCitzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgPExpdGVyYWwgcmVtYXA9InR0Ij5jYW1lIHRvIGxpZmU8L0xpdGVyYWw+IC0gVGhleSBiZWNhbWUgPExpdGVyYWwgcmVtYXA9InR0Ij5vYmplY3QKK2RlZmluaXRpb25zPC9MaXRlcmFsPiwgbWFraW5nIEVYVDJFRCA8TGl0ZXJhbCByZW1hcD0idHQiPm9iamVjdCBvcmllbnRlZDwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGFjdHVhbCBtZWFuaW5nIG9mIHRoZSBicmVhdGh0YWtpbmcgd29yZHMgYWJvdmUsIGlzIHRoYXQgZWFjaCBzdHJ1Y3R1cmUKK25vdyBoYWQgYSBsaXN0IG9mIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cHJpdmF0ZSBjb21tYW5kczwvTGl0ZXJhbD4sIHdoaWNoIGVuZGVkIHVwIGluCis8TGl0ZXJhbCByZW1hcD0idHQiPmNhbGxpbmcgc3BlY2lhbCBmaW5lLXR1bmVkIEMgZnVuY3Rpb25zPC9MaXRlcmFsPi4gVGhpcyBhcHByb2FjaCB3YXMKK2ZvdW5kIHRvIGJlIHZlcnkgcG93ZXJmdWwgYW5kIGlzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+dGhlIGhlYXJ0IG9mIEVYVDJFRCBldmVuIG5vdzwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorSW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBhYm92ZSBjb25jZXB0cywgSSBhZGRlZCB0aGUgc3RydWN0dXJlCis8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+LiBUaGUgcm9sZSBvZiB0aGlzIHN0cnVjdHVyZSBpcyB0byBncm91cCB0b2dldGhlciBhCitncm91cCBvZiBjb21tYW5kcywgd2hpY2ggY2FuIGJlIGxhdGVyIGFzc2lnbmVkIHRvIGEgc3BlY2lmaWMgdHlwZS4gRWFjaAorc3RydWN0dXJlIGhhZDoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJQSBsaXN0IG9mIGNvbW1hbmQgbmFtZXMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBIGxpc3Qgb2YgcG9pbnRlcnMgdG8gZnVuY3Rpb25zLCB3aGljaCBiaW5kcyBlYWNoIGNvbW1hbmQgdG8gaXRzCitzcGVjaWFsIGZpbmUtdHVuZWQgQyBmdW5jdGlvbi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitJbiBvcmRlciB0byByZWxhdGUgYSBsaXN0IG9mIGNvbW1hbmRzIHRvIGEgdHlwZSBkZWZpbml0aW9uLCBlYWNoCis8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7ZGVzY3JpcHRvcjwvTGl0ZXJhbD4gc3RydWN0dXJlIChleHBsYWluZWQgZWFybGllcikgd2FzIGFkZGVkIGEgcHJpdmF0ZQorPExpdGVyYWwgcmVtYXA9InR0Ij5zdHJ1Y3QmbG93YmFyO2NvbW1hbmRzPC9MaXRlcmFsPiBzdHJ1Y3R1cmUuCis8L1BhcmE+CisKKzxQYXJhPgorRm9sbG93cyB0aGUgY3VycmVudCBkZWZpbml0aW9ucyBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7ZGVzY3JpcHRvcjwvTGl0ZXJhbD4gYW5kIG9mCis8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7Y29tbWFuZDwvTGl0ZXJhbD46CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciB7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWUgWzYwXTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgZmllbGRzX251bTsKKyAgICAgICAgdW5zaWduZWQgY2hhciBmaWVsZF9uYW1lcyBbTUFYX0ZJRUxEU11bODBdOworICAgICAgICB1bnNpZ25lZCBzaG9ydCBmaWVsZF9sZW5ndGhzIFtNQVhfRklFTERTXTsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgZmllbGRfcG9zaXRpb25zIFtNQVhfRklFTERTXTsKKyAgICAgICAgc3RydWN0IHN0cnVjdF9jb21tYW5kcyB0eXBlX2NvbW1hbmRzOworICAgICAgICBzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKnByZXYsKm5leHQ7Cit9OworCit0eXBlZGVmIHZvaWQgKCpQRikgKGNoYXIgKik7CisKK3N0cnVjdCBzdHJ1Y3RfY29tbWFuZHMgeworICAgICAgICBpbnQgbGFzdF9jb21tYW5kOworICAgICAgICBjaGFyICpuYW1lcyBbTUFYX0NPTU1BTkRTX05VTV07CisgICAgICAgIGNoYXIgKmRlc2NyaXB0aW9ucyBbTUFYX0NPTU1BTkRTX05VTV07CisgICAgICAgIFBGIGNhbGxiYWNrIFtNQVhfQ09NTUFORFNfTlVNXTsKK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCisKKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxIGlkPSJmbG93LWNvbnRyb2wiPgorPFRpdGxlPlByb2dyYW0gZmxvdyBjb250cm9sPC9UaXRsZT4KKworPFBhcmE+CitPYnZpb3VzbHkgdGhlIGFib3ZlIGFwcHJvYWNoIGxlYWQgdG8gYSBtYWpvciByZWRlc2lnbiBvZiBFWFQyRUQuIFRoZQorbWFpbiBlbmdpbmUgb2YgdGhlIHJlc3VsdGluZyBkZXNpZ24gaXMgYmFzaWNhbGx5IHRoZSBzYW1lIGV2ZW4gbm93LgorPC9QYXJhPgorCis8UGFyYT4KK0kgcmVkZXNpZ25lZCB0aGUgcHJvZ3JhbSBmbG93IGNvbnRyb2wuIFVwIHRvIG5vdywgSSBhbmFseXplZCB0aGUgdXNlciBjb21tYW5kCitsaW5lIHdpdGggdGhlIHNpbXBsZSBzd2l0Y2ggbWV0aG9kLiBOb3cgSSB1c2VkIHRoZSBmYXIgc3VwZXJpb3IgY2FsbGJhY2sKK21ldGhvZC4KKzwvUGFyYT4KKworPFBhcmE+CitJIGRpdmlkZWQgdGhlIGF2YWlsYWJsZSB1c2VyIGNvbW1hbmRzIGludG8gdHdvIGdyb3VwczoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlHZW5lcmFsIGNvbW1hbmRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVHlwZSBzcGVjaWZpYyBjb21tYW5kcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKK0FzIGEgcmVzdWx0LCBhdCBlYWNoIHBvaW50IGluIHRpbWUsIHRoZSB1c2VyIHdhcyBhYmxlIHRvIGVudGVyIGEKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCBjb21tYW5kPC9MaXRlcmFsPiwgc2VsZWN0YWJsZSBmcm9tIGEgbGlzdCBvZiBnZW5lcmFsIGNvbW1hbmRzIHdoaWNoIHdhcworYWx3YXlzIGF2YWlsYWJsZSwgb3IgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUgc3BlY2lmaWMgY29tbWFuZDwvTGl0ZXJhbD4sIHNlbGVjdGFibGUgZnJvbSBhIGxpc3Qgb2YKK2NvbW1hbmRzIHdoaWNoIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Y2hhbmdlZCBpbiB0aW1lPC9MaXRlcmFsPiBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgdHlwZSB0aGF0IHRoZQordXNlciB3YXMgZWRpdGluZy4gVGhlIHNwZWNpYWwgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlIHNwZWNpZmljIGNvbW1hbmQ8L0xpdGVyYWw+ICJrbmV3IiBob3cgdG8KK2hhbmRsZSB0aGUgb2JqZWN0IGluIHRoZSBiZXN0IHBvc3NpYmxlIHdheSAtIEl0IHdhcyAiZmluZSB0dW5lZCIgZm9yIHRoZQorb2JqZWN0J3MgcGxhY2UgaW4gdGhlIGV4dDIgZmlsZXN5c3RlbSBkZXNpZ24uCis8L1BhcmE+CisKKzxQYXJhPgorSW4gb3JkZXIgdG8gaW1wbGVtZW50IHRoZSBhYm92ZSBpZGVhLCBJIGNvbnN0cnVjdGVkIGEgZ2xvYmFsIHZhcmlhYmxlIG9mCit0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0Jmxvd2Jhcjtjb21tYW5kczwvTGl0ZXJhbD4sIHdoaWNoIGNvbnRhaW5lZCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsIGNvbW1hbmRzPC9MaXRlcmFsPi4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUgc3BlY2lmaWMgY29tbWFuZHM8L0xpdGVyYWw+IHdlcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdAorZGVzY3JpcHRvcnM8L0xpdGVyYWw+LCBhcyBleHBsYWluZWQgZWFybGllci4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgcHJvZ3JhbSBmbG93IHdhcyBub3cgZG9uZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBhbGdvcml0aG06CisKKzxPcmRlcmVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJQXNrIHRoZSB1c2VyIGZvciBhIGNvbW1hbmQgbGluZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUFuYWx5emUgdGhlIHVzZXIgY29tbWFuZCAtIFNlcGFyYXRlIGl0IGludG8gPExpdGVyYWwgcmVtYXA9InR0Ij5jb21tYW5kPC9MaXRlcmFsPiBhbmQKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YXJndW1lbnRzPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRyYWNlIHRoZSBsaXN0IG9mIGtub3duIG9iamVjdHMgdG8gbWF0Y2ggdGhlIGNvbW1hbmQgbmFtZSB0byBhIHR5cGUuCitJZiB0aGUgdHlwZSBpcyBmb3VuZCwgY2FsbCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHdpdGggdGhlIGFyZ3VtZW50cworYXMgYSBwYXJhbWV0ZXIuIFRoZW4gZ28gYmFjayB0byBzdGVwICgxKS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUlmIHRoZSBjb21tYW5kIGlzIG5vdCB0eXBlIHNwZWNpZmljLCB0cnkgdG8gZmluZCBpdCBpbiB0aGUgZ2VuZXJhbAorY29tbWFuZHMsIGFuZCBjYWxsIGl0IGlmIGZvdW5kLiBHbyBiYWNrIHRvIHN0ZXAgKDEpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJSWYgdGhlIGNvbW1hbmQgaXMgbm90IGZvdW5kLCBpc3N1ZSBhIHNob3J0IGVycm9yIG1lc3NhZ2UsIGFuZCByZXR1cm4KK3RvIHN0ZXAgKDEpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworTm90ZSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5vcmRlcjwvTGl0ZXJhbD4gb2YgdGhlIGFib3ZlIHN0ZXBzLiBJbiBwYXJ0aWN1bGFyLCBub3RlIHRoYXQgYSBjb21tYW5kCitpcyBmaXJzdCBhc3N1bWVkIHRvIGJlIGEgdHlwZS1zcGVjaWZpYyBjb21tYW5kIGFuZCBvbmx5IGlmIHRoaXMgZmFpbHMsIGEKK2dlbmVyYWwgY29tbWFuZCBpcyBzZWFyY2hlZC4gVGhlICI8TGl0ZXJhbCByZW1hcD0idHQiPnNpZGUtZWZmZWN0PC9MaXRlcmFsPiIgKG1haW4gZWZmZWN0LCBhY3R1YWxseSkKK2lzIHRoYXQgd2hlbiB3ZSBoYXZlIHR3byBjb21tYW5kcyB3aXRoIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNhbWUgbmFtZTwvTGl0ZXJhbD4gLSBPbmUgdGhhdCBpcyBhIAordHlwZSBzcGVjaWZpYyBjb21tYW5kLCBhbmQgb25lIHRoYXQgaXMgYSBnZW5lcmFsIGNvbW1hbmQsIHRoZSBkaXNwYXRjaGluZworYWxnb3JpdGhtIHdpbGwgY2FsbCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlIHNwZWNpZmljIGNvbW1hbmQ8L0xpdGVyYWw+LiBUaGlzIGFsbG93cworPExpdGVyYWwgcmVtYXA9InR0Ij5vdmVycmlkaW5nPC9MaXRlcmFsPiBvZiBhIGNvbW1hbmQgdG8gcHJvdmlkZSA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbmUtdHVuZWQ8L0xpdGVyYWw+IG9wZXJhdGlvbi4KK0ZvciBleGFtcGxlLCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiBjb21tYW5kIGlzIG92ZXJyaWRkZW4gbmVhcmx5IGV2ZXJ5d2hlcmUsCit0byBhY2NvbW1vZGF0ZSBmb3IgdGhlIGRpZmZlcmVudCB3YXlzIGluIHdoaWNoIGRpZmZlcmVudCBvYmplY3RzIGFyZSBkaXNwbGF5ZWQsCitpbiBvcmRlciB0byBwcm92aWRlIGFuIGludHVpdGl2ZSBmaW5lLXR1bmVkIGRpc3BsYXkuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGFib3ZlIGlzIGRvbmUgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+IGZ1bmN0aW9uLCBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW4uYzwvTGl0ZXJhbD4uIFNpbmNlCitpdCBpcyBhIHZlcnkgaW1wb3J0YW50IGZ1bmN0aW9uIGluIEVYVDJFRCwgYW5kIGl0IGlzIHJlbGF0aXZlbHkgc2hvcnQsIEkgd2lsbAorbGlzdCBpdCBlbnRpcmVseSBoZXJlLiBOb3RlIHRoYXQgYSByZWRlc2lnbiB3YXMgbWFkZSBzaW5jZSB0aGVuIC0gQW5vdGhlcgorbGV2ZWwgd2FzIGFkZGVkIGJldHdlZW4gdGhlIHR3byBkZXNjcmliZWQsIGJ1dCBJJ2xsIGVsYWJvcmF0ZSBtb3JlIG9uIHRoaXMKK2xhdGVyLiBIb3dldmVyLCB0aGUgYmFzaWMgc3RydWN0dXJlIGZvbGxvd3MgdGhlIGV4cGxhbmF0aW9uIGRlc2NyaWJlZCBhYm92ZS4KKworPFByb2dyYW1MaXN0aW5nPgoraW50IGRpc3BhdGNoIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlpbnQgaSxmb3VuZD0wOworCWNoYXIgY29tbWFuZCBbODBdOworCisJcGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGNvbW1hbmQpOworCQkJCisJaWYgKHN0cmNtcCAoY29tbWFuZCwicXVpdCIpPT0wKSByZXR1cm4gKDEpOwkKKworCS8qIDEuIFNlYXJjaCBmb3IgdHlwZSBzcGVjaWZpYyBjb21tYW5kcyBGSVJTVCAtIEFsbG93cyBvdmVycmlkaW5nIG9mIGEgZ2VuZXJhbCBjb21tYW5kICovCisKKwlpZiAoY3VycmVudF90eXBlICE9IE5VTEwpCisJCWZvciAoaT0wO2kmIzYwOz1jdXJyZW50X3R5cGUtJiM2Mjt0eXBlX2NvbW1hbmRzLmxhc3RfY29tbWFuZCAmIzM4OyYjMzg7ICFmb3VuZDtpKyspIHsKKwkJCWlmIChzdHJjbXAgKGNvbW1hbmQsY3VycmVudF90eXBlLSYjNjI7dHlwZV9jb21tYW5kcy5uYW1lcyBbaV0pPT0wKSB7CisJCQkJKCpjdXJyZW50X3R5cGUtJiM2Mjt0eXBlX2NvbW1hbmRzLmNhbGxiYWNrIFtpXSkgKGNvbW1hbmRfbGluZSk7CisJCQkJZm91bmQ9MTsKKwkJCX0KKwkJfQorCisJLyogMi4gTm93IHNlYXJjaCBmb3IgZXh0MiBmaWxlc3lzdGVtIGdlbmVyYWwgY29tbWFuZHMgKi8KKworCWlmICghZm91bmQpCisJCWZvciAoaT0wO2kmIzYwOz1leHQyX2NvbW1hbmRzLmxhc3RfY29tbWFuZCAmIzM4OyYjMzg7ICFmb3VuZDtpKyspIHsKKwkJCWlmIChzdHJjbXAgKGNvbW1hbmQsZXh0Ml9jb21tYW5kcy5uYW1lcyBbaV0pPT0wKSB7CisJCQkJKCpleHQyX2NvbW1hbmRzLmNhbGxiYWNrIFtpXSkgKGNvbW1hbmRfbGluZSk7CisJCQkJZm91bmQ9MTsKKwkJCX0KKwkJfQorCisJCisJLyogMy4gSWYgbm90IGZvdW5kLCBzZWFyY2ggdGhlIGdlbmVyYWwgY29tbWFuZHMgKi8KKwkKKwlpZiAoIWZvdW5kKQorCQlmb3IgKGk9MDtpJiM2MDs9Z2VuZXJhbF9jb21tYW5kcy5sYXN0X2NvbW1hbmQgJiMzODsmIzM4OyAhZm91bmQ7aSsrKSB7CisJCQlpZiAoc3RyY21wIChjb21tYW5kLGdlbmVyYWxfY29tbWFuZHMubmFtZXMgW2ldKT09MCkgeworCQkJCSgqZ2VuZXJhbF9jb21tYW5kcy5jYWxsYmFjayBbaV0pIChjb21tYW5kX2xpbmUpOworCQkJCWZvdW5kPTE7CisJCQl9CisJCX0KKworCWlmICghZm91bmQpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yOiBVbmtub3duIGNvbW1hbmRcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KKwkKKwlyZXR1cm4gKDApOworfQorPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+U291cmNlIGZpbGVzIGluIEVYVDJFRDwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHByb2plY3Qgd2FzIGdldHRpbmcgbGFyZ2UgZW5vdWdoIHRvIGJlIHNwbGl0dGVkIGludG8gc2V2ZXJhbCBzb3VyY2UKK2ZpbGVzLiBJIHNwbGl0dGVkIHRoZSBzb3VyY2UgYXMgbXVjaCBhcyBJIGNvdWxkIGludG8gc2VsZi1jb250YWluZWQKK3NvdXJjZSBmaWxlcy4gVGhlIHNvdXJjZSBmaWxlcyBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmcgYmxvY2tzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPk1haW4gaW5jbHVkZSBmaWxlIC0gZXh0MmVkLmg8L0xpdGVyYWw+CisKK1RoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIHZhcmlvdXMgc3RydWN0dXJlcywKK3ZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHVzZWQgaW4gRVhUMkVELiBJdCBpcyBpbmNsdWRlZCBieSBhbGwgc291cmNlCitmaWxlcyBpbiBFWFQyRUQuCisKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+TWFpbiBibG9jayAtIG1haW4uYzwvTGl0ZXJhbD4KKworPExpdGVyYWwgcmVtYXA9InR0Ij5tYWluLmM8L0xpdGVyYWw+IGhhbmRsZXMgdGhlIHVwcGVyIGxldmVsIG9mIHRoZSBwcm9ncmFtIGZsb3cgY29udHJvbC4KK0l0IGNvbnRhaW5zIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnBhcnNlcjwvTGl0ZXJhbD4gYW5kIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpc3BhdGNoZXI8L0xpdGVyYWw+LiBJdHMgdGFzayBpcwordG8gYXNrIHRoZSB1c2VyIGZvciBhIHJlcXVpcmVkIGFjdGlvbiwgYW5kIHRvIHBhc3MgY29udHJvbCB0byBvdGhlcgorbG93ZXIgbGV2ZWwgZnVuY3Rpb25zIGluIG9yZGVyIHRvIGRvIHRoZSBhY3R1YWwgam9iLgorCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPkluaXRpYWxpemF0aW9uIC0gaW5pdC5jPC9MaXRlcmFsPgorCitUaGUgaW5pdCBzb3VyY2UgaXMgcmVzcG9uc2libGUgZm9yIHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9uCithY3Rpb25zIHdoaWNoIG5lZWQgdG8gYmUgZG9uZSB0aHJvdWdoIHRoZSBwcm9ncmFtLiBGb3IgZXhhbXBsZSwKK2F1dG8gZGV0ZWN0aW9uIG9mIGFuIGV4dDIgZmlsZXN5c3RlbSB3aGVuIHNlbGVjdGluZyBhIGRldmljZSBhbmQKK2luaXRpYWxpemF0aW9uIG9mIHRoZSBmaWxlc3lzdGVtLXNwZWNpZmljIHN0cnVjdHVyZXMgZGVzY3JpYmVkCitlYXJsaWVyLgorCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPkRpc2sgYWN0aXZpdHkgLSBkaXNrLmM8L0xpdGVyYWw+CisKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzay5jPC9MaXRlcmFsPiBpcyBoYW5kbGVzIHRoZSBsb3dlciBsZXZlbCBpbnRlcmFjdGlvbiB3aXRoIHRoZQorZGV2aWNlLiBBbGwgZGlzayBhY3Rpdml0eSBpcyBwYXNzZWQgdGhyb3VnaCB0aGlzIGZpbGUgLSBUaGUgdmFyaW91cworZnVuY3Rpb25zIHRocm91Z2ggdGhlIHNvdXJjZSBjb2RlIHJlcXVlc3QgZGlzayBhY3Rpb25zIGZyb20gdGhlCitmdW5jdGlvbnMgaW4gdGhpcyBmaWxlLiBJbiB0aGlzIHdheSwgZm9yIGV4YW1wbGUsIHdlIGNhbiBlYXNpbHkgYmxvY2sKK3RoZSB3cml0ZSBhY2Nlc3MgdG8gdGhlIGRldmljZS4KKworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5EaXNwbGF5IG91dHB1dCBhY3Rpdml0eSAtIHdpbi5jPC9MaXRlcmFsPgorCQorSW4gYSBzaW1pbGFyIHdheSB0byA8TGl0ZXJhbCByZW1hcD0idHQiPmRpc2suYzwvTGl0ZXJhbD4sIHRoZSB1c2VyLWludGVyZmFjZSBmdW5jdGlvbnMgYW5kCittb3N0IG9mIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm5jdXJzZXMgbGlicmFyeTwvTGl0ZXJhbD4gYXJlIGRvbmUKK2hlcmUuIE5vdGhpbmcgd2lsbCBiZSBhY3R1YWxseSB3cml0dGVuIHRvIGEgc3BlY2lmaWMgd2luZG93IHdpdGhvdXQKK2NhbGxpbmcgYSBmdW5jdGlvbiBmcm9tIHRoaXMgZmlsZS4KKworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5Db21tYW5kcyBhdmFpbGFibGUgdGhyb3VnaCBkaXNwYXRjaGluZyAtICombG93YmFyO2NvbS5jIDwvTGl0ZXJhbD4KKworVGhlIGFib3ZlIGZpbGUgbmFtZSBpcyBnZW5lcmljIC0gRWFjaCBmaWxlIHdoaWNoIGVuZHMgd2l0aAorPExpdGVyYWwgcmVtYXA9InR0Ij4mbG93YmFyO2NvbS5jPC9MaXRlcmFsPiBjb250YWlucyBhIGdyb3VwIG9mIHJlbGF0ZWQgY29tbWFuZHMgd2hpY2ggY2FuIGJlCitjYWxsZWQgdGhyb3VnaCA8TGl0ZXJhbCByZW1hcD0idHQiPnRoZSBkaXNwYXRjaGluZyBmdW5jdGlvbjwvTGl0ZXJhbD4uCisKK0VhY2ggb2JqZWN0IHR5cGljYWxseSBoYXMgaXRzIG93biBmaWxlLiBBIHNlcGFyYXRlIGZpbGUgaXMgYWxzbworYXZhaWxhYmxlIGZvciB0aGUgZ2VuZXJhbCBjb21tYW5kcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitUaGUgZW50aXJlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIGF2YWlsYWJsZSBhdCB0aGlzIHRpbWUgaXM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWJsb2NrYml0bWFwJmxvd2Jhcjtjb20uYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJZGlyJmxvd2Jhcjtjb20uYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJZGlzay5jCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlleHQyJmxvd2Jhcjtjb20uYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJZmlsZSZsb3diYXI7Y29tLmMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWdlbmVyYWwmbG93YmFyO2NvbS5jCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlncm91cCZsb3diYXI7Y29tLmMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWluaXQuYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJaW5vZGUmbG93YmFyO2NvbS5jCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlpbm9kZWJpdG1hcCZsb3diYXI7Y29tLmMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCW1haW4uYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJc3VwZXImbG93YmFyO2NvbS5jCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwl3aW4uYworPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlVzZXIgaW50ZXJmYWNlPC9UaXRsZT4KKworPFBhcmE+CitUaGUgdXNlciBpbnRlcmZhY2UgaXMgdGV4dC1iYXNlZCBvbmx5IGFuZCBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nCitsaWJyYXJpZXM6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5uY3Vyc2VzPC9MaXRlcmFsPiBsaWJyYXJ5LCBkZXZlbG9wZWQgYnkgPExpdGVyYWwgcmVtYXA9InR0Ij5aZXlkIEJlbi1IYWxpbTwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5HTlUgcmVhZGxpbmU8L0xpdGVyYWw+IGxpYnJhcnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSB1c2VyIGludGVyYWN0aW9uIGlzIGNvbW1hbmQgbGluZSBiYXNlZCAtIFRoZSB1c2VyIGVudGVycyBhIGNvbW1hbmQKK2xpbmUsIHdoaWNoIGNvbnNpc3RzIG9mIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5jb21tYW5kPC9MaXRlcmFsPiBhbmQgb2YgPExpdGVyYWwgcmVtYXA9InR0Ij5hcmd1bWVudHM8L0xpdGVyYWw+LiBUaGlzIGZpdHMKK25pY2VseSB3aXRoIHRoZSBwcm9ncmFtIGZsb3cgY29udHJvbCBkZXNjcmliZWQgZWFybGllciAtIFRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmNvbW1hbmQ8L0xpdGVyYWw+CitpcyB1c2VkIGJ5IDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+IHRvIHNlbGVjdCB0aGUgcmlnaHQgZnVuY3Rpb24sIGFuZCB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YXJndW1lbnRzPC9MaXRlcmFsPiBhcmUgaW50ZXJwcmV0ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0c2VsZi4KKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBuY3Vyc2VzIGxpYnJhcnk8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm5jdXJzZXM8L0xpdGVyYWw+IGxpYnJhcnkgZW5hYmxlcyBtZSB0byBkaXZpZGUgdGhlIHNjcmVlbiBpbnRvICJ3aW5kb3dzIi4KK1RoZSBtYWluIGFkdmFudGFnZSBpcyB0aGF0IEkgdHJlYXQgdGhlICJ3aW5kb3ciIGluIGEgdmlydHVhbCB3YXksIGFza2luZwordGhlIG5jdXJzZXMgbGlicmFyeSB0byAid3JpdGUgdG8gYSB3aW5kb3ciLiBIb3dldmVyLCB0aGUgbmN1cnNlcworbGlicmFyeSBpbnRlcm5hbGx5IGJ1ZmZlcnMgdGhlIHJlcXVlc3RzLCBhbmQgbm90aGluZyBpcyBhY3R1YWxseSBwYXNzZWQgdG8gdGhlCit0ZXJtaW5hbCB1bnRpbCBhbiBleHBsaWNpdCByZWZyZXNoIGlzIHJlcXVlc3RlZC4gV2hlbiB0aGUgcmVmcmVzaCByZXF1ZXN0IGlzCittYWRlLCBuY3Vyc2VzIGNvbXBhcmVzIHRoZSBjdXJyZW50IHRlcm1pbmFsIHN0YXRlIChhcyBrbm93biBpbiB0aGUgbGFzdCB0aW1lCit0aGF0IGEgcmVmcmVzaCB3YXMgZG9uZSkgd2l0aCB0aGUgbmV3IHRvIGJlIHNob3duIHN0YXRlLCBhbmQgcGFzc2VzIHRvIHRoZQordGVybWluYWwgdGhlIG1pbmltYWwgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5LiBBcyBhCityZXN1bHQsIHRoZSBkaXNwbGF5IG91dHB1dCBpcyBvcHRpbWl6ZWQgYmVoaW5kIHRoZSBzY2VuZXMgYnkgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPm5jdXJzZXM8L0xpdGVyYWw+IGxpYnJhcnksIHdoaWxlIEkgY2FuIHN0aWxsIHRyZWF0IGl0IGluIGEgdmlydHVhbCB3YXkuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlcmUgYXJlIHR3byBiYXNpYyBjb25jZXB0cyBpbiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5uY3Vyc2VzPC9MaXRlcmFsPiBsaWJyYXJ5OgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBIHdpbmRvdy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUEgcGFkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK0Egd2luZG93IGNhbiBiZSBubyBiaWdnZXIgdGhhbiB0aGUgYWN0dWFsIHRlcm1pbmFsIHNpemUuIEEgcGFkLCBob3dldmVyLCBpcworbm90IGxpbWl0ZWQgaW4gaXRzIHNpemUuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIHVzZXIgc2NyZWVuIGlzIGRpdmlkZWQgYnkgRVhUMkVEIGludG8gdGhyZWUgd2luZG93cyBhbmQgb25lIHBhZDoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGl0bGUgd2luZG93LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJU3RhdHVzIHdpbmRvdy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCU1haW4gZGlzcGxheSBwYWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDb21tYW5kIHdpbmRvdy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+dGl0bGUgd2luZG93PC9MaXRlcmFsPiBpcyBzdGF0aWMgLSBJdCBqdXN0IGRpc3BsYXlzIHRoZSBjdXJyZW50IHZlcnNpb24KK29mIEVYVDJFRC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgdXNlciBpbnRlcmFjdGlvbiBpcyBkb25lIGluIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmNvbW1hbmQgd2luZG93PC9MaXRlcmFsPi4gVGhlIHVzZXIgZW50ZXJzIGEKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Y29tbWFuZCBsaW5lPC9MaXRlcmFsPiwgZmVlZGJhY2sgaXMgdXN1YWxseSBkaXNwbGF5ZWQgdGhlcmUsIGFuZCB0aGVuIHJlbGV2YW50CitkYXRhIGlzIHVzdWFsbHkgZGlzcGxheWVkIGluIHRoZSBtYWluIGRpc3BsYXkgYW5kIGluIHRoZSBzdGF0dXMgd2luZG93LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW4gZGlzcGxheTwvTGl0ZXJhbD4gaXMgdXNpbmcgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnBhZDwvTGl0ZXJhbD4gaW5zdGVhZCBvZiBhIHdpbmRvdyBiZWNhdXNlCit0aGUgYW1vdW50IG9mIGluZm9ybWF0aW9uIHdoaWNoIGlzIHdyaXR0ZW4gdG8gaXQgaXMgbm90IGtub3duIGluIGFkdmFuY2UuCitUaGVyZWZvciwgdGhlIHVzZXIgdHJlYXRzIHRoZSBtYWluIGRpc3BsYXkgYXMgYSAid2luZG93IiBpbnRvIGEgYmlnZ2VyCitkaXNwbGF5IGFuZCBjYW4gPExpdGVyYWwgcmVtYXA9InR0Ij5zY3JvbGwgdmVydGljYWxseTwvTGl0ZXJhbD4gdXNpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cGdkbjwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cGd1cDwvTGl0ZXJhbD4KK2NvbW1hbmRzLiBBbHRob3VnaCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5wYWQ8L0xpdGVyYWw+IG1lY2hhbmlzbSBlbmFibGVzIG1lIHRvIHVzZSBob3Jpem9udGFsCitzY3JvbGxpbmcsIEkgaGF2ZSBub3QgdXRpbGl6ZWQgdGhpcy4KKzwvUGFyYT4KKworPFBhcmE+CitXaGVuIEkgbmVlZCB0byBzaG93IHNvbWV0aGluZyB0byB0aGUgdXNlciwgSSB1c2UgdGhlIG5jdXJzZXMgPExpdGVyYWwgcmVtYXA9InR0Ij53cHJpbnR3PC9MaXRlcmFsPgorY29tbWFuZC4gVGhlbiBhbiBleHBsaWNpdCByZWZyZXNoIGNvbW1hbmQgaXMgcmVxdWlyZWQuIEFzIGV4cGxhaW5lZCBiZWZvcmUsCit0aGUgcmVmcmVzaCBjb21tYW5kcyBpcyBwaXBlZCB0aHJvdWdoIDxMaXRlcmFsIHJlbWFwPSJ0dCI+d2luLmM8L0xpdGVyYWw+LiBGb3IgZXhhbXBsZSwgdG8gdXBkYXRlCit0aGUgY29tbWFuZCB3aW5kb3csIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVmcmVzaCZsb3diYXI7Y29tbWFuZCZsb3diYXI7d2luICgpPC9MaXRlcmFsPiBpcyB1c2VkLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIHJlYWRsaW5lIGxpYnJhcnk8L1RpdGxlPgorCis8UGFyYT4KK0F2bmVyIHN1Z2dlc3RlZCBtZSB0byBpbnRlZ3JhdGUgdGhlIEdOVSA8TGl0ZXJhbCByZW1hcD0idHQiPnJlYWRsaW5lPC9MaXRlcmFsPiBsaWJyYXJ5IGluIG15IHByb2plY3QuCitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5yZWFkbGluZTwvTGl0ZXJhbD4gbGlicmFyeSBpcyBkZXNpZ25lZCBzcGVjaWZpY2FsbHkgZm9yIHByb2dyYW1zIHdoaWNoIHVzZQorY29tbWFuZCBsaW5lIGludGVyZmFjZS4gSXQgcHJvdmlkZXMgYSBuaWNlIHBhY2thZ2Ugb2YgPExpdGVyYWwgcmVtYXA9InR0Ij5jb21tYW5kIGxpbmUgZWRpdGluZwordG9vbHM8L0xpdGVyYWw+IC0gSW5zZXJ0aW5nLCBkZWxldGluZyB3b3JkcywgYW5kIHRoZSB3aG9sZSBwYWNrYWdlIG9mIGVkaXRpbmcgdG9vbHMKK3doaWNoIGFyZSBub3JtYWxseSBhdmFpbGFibGUgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YmFzaDwvTGl0ZXJhbD4gc2hlbGwgKFJlZmVyIHRvIHRoZSByZWFkbGluZQorZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscykuIEluIGFkZGl0aW9uLCBJIHV0aWxpemVkIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmhpc3Rvcnk8L0xpdGVyYWw+CitmZWF0dXJlIG9mIHRoZSByZWFkbGluZSBsaWJyYXJ5IC0gVGhlIGVudGVyZWQgY29tbWFuZHMgYXJlIHNhdmVkIGluIGEKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Y29tbWFuZCBoaXN0b3J5PC9MaXRlcmFsPiwgYW5kIGNhbiBiZSBjYWxsZWQgbGF0ZXIgYnkgd2hhdGV2ZXIgbWVhbnMgdGhhdCB0aGUKK3JlYWRsaW5lIHBhY2thZ2UgcHJvdmlkZXMuIENvbW1hbmQgY29tcGxldGlvbiBpcyBhbHNvIHN1cHBvcnRlZCAtIFdoZW4gdGhlCit1c2VyIGVudGVycyBhIHBhcnRpYWwgY29tbWFuZCBuYW1lLCBFWFQyRUQgd2lsbCBwcm92aWRlIHRoZSByZWFkbGluZSBsaWJyYXJ5Cit3aXRoIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucy4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlBvc3NpYmxlIHN1cHBvcnQgb2Ygb3RoZXIgZmlsZXN5c3RlbXM8L1RpdGxlPgorCis8UGFyYT4KK1RoZSBlbnRpcmUgZXh0MiBsYXllciBpcyBwcm92aWRlZCB0aHJvdWdoIHNwZWNpZmljIG9iamVjdHMuIEdpdmVuIGFub3RoZXIKK3NldCBvZiBvYmplY3RzLCBzdXBwb3J0IG9mIG90aGVyIGZpbGVzeXN0ZW0gY2FuIGJlIHByb3ZpZGVkIHVzaW5nIHRoZSBzYW1lCitkaXNwYXRjaGluZyBtZWNoYW5pc20uIEluIG9yZGVyIHRvIHByZXBhcmUgdGhlIHN1cmZhY2UgZm9yIHRoaXMgb3B0aW9uLCBJCithZGRlZCB5ZXQgYW5vdGhlciBsYXllciB0byB0aGUgdHdvLWxheWVyIHN0cnVjdHVyZSBwcmVzZW50ZWQgZWFybGllci4gRVhUMkVECitjb21tYW5kcyBub3cgY29uc2lzdCBvZiB0aHJlZSBsYXllcnM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBnZW5lcmFsIGNvbW1hbmRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBleHQyIG9iamVjdCBzcGVjaWZpYyBjb21tYW5kcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitUaGUgZ2VuZXJhbCBjb21tYW5kcyBhcmUgcHJvdmlkZWQgYnkgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCZsb3diYXI7Y29tLmM8L0xpdGVyYWw+IHNvdXJjZSBmaWxlLAorYW5kIGFyZSBhbHdheXMgYXZhaWxhYmxlLiBUaGUgdHdvIG90aGVyIGxldmVscyBhcmUgbm90IHByZXNlbnQgd2hlbiBFWFQyRUQKK2xvYWRzIC0gVGhleSBhcmUgZHluYW1pY2FsbHkgYWRkZWQgYnkgPExpdGVyYWwgcmVtYXA9InR0Ij5pbml0LmM8L0xpdGVyYWw+IHdoZW4gRVhUMkVEIGRldGVjdHMgYW4KK2V4dDIgZmlsZXN5c3RlbSBvbiB0aGUgZGV2aWNlLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBhYnN0cmFjdGlvbiBsZXZlbHMgcHJlc2VudGVkIGFib3ZlIGhlbHBzIHRvIGV4dGVuZCBFWFQyRUQgdG8gZnVsbHkKK3N1cHBvcnQgYSBuZXcgZmlsZXN5c3RlbSwgd2l0aCBpdHMgb3duIHNwZWNpZmljIHR5cGUgY29tbWFuZHMuIAorPC9QYXJhPgorCis8UGFyYT4KK0V2ZW4gd2l0aG91dCBhbnkgc291cmNlIGNvZGUgbW9kaWZpY2F0aW9uLCB0aGUgdXNlciBpcyBmcmVlIHRvIGFkZCBzdHJ1Y3R1cmUKK2RlZmluaXRpb25zIGluIGEgc2VwYXJhdGUgZmlsZSAoc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUpLCAKK3doaWNoIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9iamVjdHMuIFRoZSBhZGRlZCBvYmplY3RzIHdpbGwKK2NvbnNpc3Qgb25seSBvZiB2YXJpYWJsZXMsIG9mLWNvdXJzZSwgYW5kIHdpbGwgYmUgdXNlZCB0aHJvdWdoIHRoZSBtb3JlCitwcmltaXRpdmUgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRvZmZzZXQ8L0xpdGVyYWw+IGFuZCA8TGl0ZXJhbCByZW1hcD0idHQiPnNldHR5cGU8L0xpdGVyYWw+IGNvbW1hbmRzLgorPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+T24gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSB2YXJpb3VzIGNvbW1hbmRzPC9UaXRsZT4KKworPFBhcmE+CitUaGlzIHNlY3Rpb24gcG9pbnRzIG91dCBzb21lIHR5cGljYWwgcHJvZ3JhbW1pbmcgc3R5bGUgdGhhdCBJIHVzZWQgaW4gbWFueQorcGxhY2VzIGF0IHRoZSBjb2RlLgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIGV4cGxpY2l0IHVzZSBvZiB0aGUgZGlzcGF0Y2ggZnVuY3Rpb248L1RpdGxlPgorCis8UGFyYT4KK1RoZSB2YXJpb3VzIGNvbW1hbmRzIGFyZSByZWFjaGVkIGJ5IHRoZSB1c2VyIHRocm91Z2ggdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+CitmdW5jdGlvbi4gVGhpcyBpcyBub3Qgc3VycHJpc2luZy4gVGhlIGZhY3QgdGhhdCBjYW4gYmUgc3VycHJpc2luZywgYXQgbGVhc3QgaW4KK2EgZmlyc3QgbG9vaywgaXMgdGhhdCA8TGl0ZXJhbCByZW1hcD0idHQiPnlvdSdsbCBmaW5kIHRoZSBkaXNwYXRjaCBjYWxsIGluIG1hbnkgb2YgbXkKK293biBmdW5jdGlvbnMhPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFBhcmE+CitJIGFtIGluIGZhY3QgdXNpbmcgbXkgb3duIGltcGxlbWVudGVkIGZ1bmN0aW9ucyB0byBjb25zdHJ1Y3QgaGlnaGVyCitsZXZlbCBvcGVyYXRpb25zLiBJIGFtIGhlYXZpbHkgdXNpbmcgdGhlIGZhY3QgdGhhdCB0aGUgZGlzcGF0Y2hpbmcgbWVjaGFuaXNtCitpcyBvYmplY3Qgb3JpZW50ZWQgYW50IHRoYXQgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+b3ZlcnJpZGluZzwvTGl0ZXJhbD4gcHJpbmNpcGxlIHRha2VzIHBsYWNlIGFuZAorc2VsZWN0cyB0aGUgcHJvcGVyIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBzZXZlcmFsIGNvbW1hbmRzIHdpdGggdGhlIHNhbWUgbmFtZQorYXJlIGFjY2Vzc2libGUuCis8L1BhcmE+CisKKzxQYXJhPgorU29tZXRpbWVzLCBob3dldmVyLCBJIGNhbGwgdGhlIGV4cGxpY2l0IGNvbW1hbmQgZGlyZWN0bHksIHdpdGhvdXQgcGFzc2luZwordGhyb3VnaCA8TGl0ZXJhbCByZW1hcD0idHQiPmRpc3BhdGNoPC9MaXRlcmFsPi4gVGhpcyBpcyB0eXBpY2FsbHkgZG9uZSB3aGVuIEkgd2FudCB0byBieXBhc3MgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPm92ZXJyaWRpbmc8L0xpdGVyYWw+IGVmZmVjdC4KKzwvUGFyYT4KKworPFBhcmE+CisKK1RoaXMgaXMgdXNlZCwgZm9yIGV4YW1wbGUsIGluIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBnbG9iYWwgY2QgY29tbWFuZAorYW5kIHRoZSBkaXIgb2JqZWN0IHNwZWNpZmljIGNkIGNvbW1hbmQuIFlvdSB3aWxsIHNlZSB0aGVyZSB0aGF0IGluIG9yZGVyCit0byBpbXBsZW1lbnQgdGhlICJlbnRpcmUiIGNkIGNvbW1hbmQsIHRoZSB0eXBlIHNwZWNpZmljIGNkIGNvbW1hbmQgdXNlcyBib3RoCithIGRpc3BhdGNoaW5nIG1lY2hhbmlzbSB0byBjYWxsIGl0c2VsZiByZWN1cnNpdmVseSBpZiBhIHJlbGF0aXZlIHBhdGggaXMKK3VzZWQsIG9yIGEgZGlyZWN0IGNhbGwgb2YgdGhlIGdlbmVyYWwgY2QgaGFuZGxpbmcgZnVuY3Rpb24gaWYgYW4gZXhwbGljaXQgcGF0aAoraXMgdXNlZC4KKworPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+UGFzc2luZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGhhbmRsaW5nIGZ1bmN0aW9uczwvVGl0bGU+CisKKzxQYXJhPgorVHlwaWNhbGx5LCBldmVyeSBzb3VyY2UgY29kZSBmaWxlIHdoaWNoIGhhbmRsZXMgb25lIG9iamVjdCB0eXBlIGhhcyBhIGdsb2JhbAorc3RydWN0dXJlIHNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgaXQgd2hpY2ggaXMgdXNlZCBieSBtb3N0IG9mIHRoZQorZnVuY3Rpb25zIGluIHRoYXQgZmlsZS4gVGhpcyBpcyB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gYmV0d2VlbiB0aGUgdmFyaW91cworZnVuY3Rpb25zIHRoZXJlLCBhbmQgdG8gcGh5c2ljYWxseSBwcm92aWRlIHRoZSBsaW5rIHRvIG90aGVyIHJlbGF0ZWQKK29iamVjdHMsIHR5cGljYWxseSBmb3IgaW5pdGlhbGl6YXRpb24gdXNlLgorPC9QYXJhPgorCis8UGFyYT4KKworRm9yIGV4YW1wbGUsIGluIG9yZGVyIHRvIGVkaXQgYSBmaWxlLCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKK2lub2RlIGlzIG5lZWRlZCAtIFRoZSBmaWxlIGNvbW1hbmQgaXMgYXZhaWxhYmxlIG9ubHkgd2hlbiBlZGl0aW5nIGFuCitpbm9kZS4gV2hlbiB0aGUgZmlsZSBjb21tYW5kIGlzIGlzc3VlZCwgdGhlIGhhbmRsaW5nIGZ1bmN0aW9uIChmb3VuZCwKK2FjY29yZGluZyB0byB0aGUgc291cmNlIGRpdmlzaW9uIG91dGxpbmVkIGFib3ZlLCBpbiBpbm9kZV9jb20uYykgd2lsbAorc3RvcmUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5vZGUgaW4gYSBzcGVjaWZpYyBzdHJ1Y3R1cmUKK29mIHR5cGUgc3RydWN0X2ZpbGVfaW5mbyB3aGljaCB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IHRoZSBmaWxlX2NvbS5jCitmdW5jdGlvbnMuIE9ubHkgdGhlbiBpdCB3aWxsIHNldCB0aGUgdHlwZSB0byBmaWxlLiBUaGlzIGlzIGFsc28gdGhlIHJlYXNvbgordGhhdCBhIGRpcmVjdCBhc3luY2hyb25pYyBzZXQgb2YgdGhlIG9iamVjdCB0eXBlIHRvIGEgZmlsZSB0aHJvdWdoIGEgc2V0dHlwZQorY29tbWFuZCB3aWxsIGZhaWwgLSBUaGUgYWJvdmUgZGF0YSBzdHJ1Y3R1cmUgd2lsbCBub3QgYmUgaW5pdGlhbGl6ZWQKK3Byb3Blcmx5IGJlY2F1c2UgdGhlIHVzZXIgbmV2ZXIgd2FzIGF0IHRoZSBpbm9kZSBvZiB0aGUgZmlsZS4gCisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkEgdmVyeSBzaW1wbGlmaWVkIG92ZXJ2aWV3IG9mIGEgdHlwaWNhbCBjb21tYW5kIGhhbmRsaW5nIGZ1bmN0aW9uPC9UaXRsZT4KKworPFBhcmE+CitUaGlzIGlzIGEgdmVyeSBzaW1wbGlmaWVkIG92ZXJ2aWV3LiBEZXRhaWxlZCBpbmZvcm1hdGlvbiB3aWxsIGZvbGxvdword2hlcmUgYXBwcm9wcmlhdGUuCis8L1BhcmE+CisKKzxTZWN0Mz4KKzxUaXRsZT5UaGUgcHJvdG90eXBlIG9mIGEgdHlwaWNhbCBoYW5kbGluZyBmdW5jdGlvbjwvVGl0bGU+CisKKzxQYXJhPgorCis8T3JkZXJlZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorIAlJIGNob3NlIGEgdW5pZmllZCA8TGl0ZXJhbCByZW1hcD0idHQiPm5hbWluZyBjb252ZW50aW9uPC9MaXRlcmFsPiBmb3IgdGhlIHZhcmlvdXMgb2JqZWN0CitzcGVjaWZpYyBjb21tYW5kcy4gSXQgaXMgcGVyaGFwcyBiZXN0IHNob3dlZCB3aXRoIGFuIGV4YW1wbGU6CisKK1RoZSBwcm90b3R5cGUgb2YgdGhlIGhhbmRsaW5nIGZ1bmN0aW9uIG9mIHRoZSBjb21tYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bmV4dDwvTGl0ZXJhbD4gb2YKK3RoZSB0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gaXM6CisKKzxTY3JlZW4+CisJCWV4dGVybiB2b2lkIHR5cGVfZmlsZV9fX25leHQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CisJCis8L1NjcmVlbj4KKworCitGb3Igb3RoZXIgdHlwZXMgYW5kIGNvbW1hbmRzLCB0aGUgd29yZHMgPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlPC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5uZXh0PC9MaXRlcmFsPgorc2hvdWxkIAliZSByZXBsYWNlZCBhY2NvcmRpbmdseS4KKworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcyBzeW50YXggaXMgc2ltaWxhci4gRm9yIGV4YW1wbGUsIHRoZSBleHQyCitnZW5lcmFsIGNvbW1hbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5zdXBlcjwvTGl0ZXJhbD4gcmVzdWx0cyBpbiBjYWxsaW5nOgorCis8U2NyZWVuPgorCQlleHRlcm4gdm9pZCB0eXBlX2V4dDJfX19zdXBlciAoY2hhciAqY29tbWFuZF9saW5lKTsKKwkKKzwvU2NyZWVuPgorCitUaG9zZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDImbG93YmFyO2NvbS5jPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBnZW5lcmFsIGNvbW1hbmRzIHN5bnRheCBpcyBldmVuIHNpbXBsZXIgLSBUaGUgbmFtZSBvZiB0aGUKK2hhbmRsaW5nIGZ1bmN0aW9uIGlzIGV4YWN0bHkgdGhlIG5hbWUgb2YgdGhlIGNvbW1hbmRzLiBUaG9zZQorZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUgaW4gPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsJmxvd2Jhcjtjb20uYzwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L09yZGVyZWRMaXN0PgorCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzxTZWN0Mz4KKzxUaXRsZT4iVHlwaWNhbCIgYWxnb3JpdGhtPC9UaXRsZT4KKworPFBhcmE+CitUaGlzIHNlY3Rpb24gY2FuJ3Qgb2YtY291cnNlIHByb3ZpZGUgbWVhbmluZ2Z1bCBpbmZvcm1hdGlvbiAtIEVhY2gKK2NvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSwgYnV0IHRoZSBmb2xsb3dpbmcgZnJhbWUgaXMgdHlwaWNhbDoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGFuZCBhbmFseXplIHRoZW0uIFJldHVybiB3aXRoIGFuIGVycm9yCittZXNzYWdlIGlmIHRoZSBzeW50YXggaXMgd3JvbmcuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwkiQWN0IGFjY29yZGluZ2x5IiwgcGVyaGFwcyBtYWtpbmcgdXNlIG9mIHRoZSBnbG9iYWwgdmFyaWFibGUgYXZhaWxhYmxlCit0byB0aGlzIHR5cGUuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlVc2Ugc29tZSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpc3BhdGNoIC8gZGlyZWN0IDwvTGl0ZXJhbD4gY2FsbHMgaW4gb3JkZXIgdG8gcGFzcyBjb250cm9sIHRvCitvdGhlciBsb3dlci1sZXZlbCB1c2VyIGNvbW1hbmRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJU29tZXRpbWVzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+IHRvIHRoZSBvYmplY3QncyA8TGl0ZXJhbCByZW1hcD0idHQiPnNob3c8L0xpdGVyYWw+IGNvbW1hbmQgdG8KK2Rpc3BsYXkgdGhlIHJlc3VsdGluZyBkYXRhIHRvIHRoZSB1c2VyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworSSB0b2xkIHlvdSBpdCBpcyBtZWFuaW5nbGVzcyA6LSkKKzwvUGFyYT4KKworPC9TZWN0Mz4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkluaXRpYWxpemF0aW9uIG92ZXJ2aWV3PC9UaXRsZT4KKworPFBhcmE+CitJbiB0aGlzIHNlY3Rpb24gSSB3aWxsIGRpc2N1c3Mgc29tZSBhc3BlY3RzIG9mIHRoZSB2YXJpb3VzIGluaXRpYWxpemF0aW9uCityb3V0aW5lcyBhdmFpbGFibGUgaW4gdGhlIHNvdXJjZSBmaWxlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5pdC5jPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPlVwb24gc3RhcnR1cDwvVGl0bGU+CisKKzxQYXJhPgorRm9sbG93cyB0aGUgZnVuY3Rpb24gPExpdGVyYWwgcmVtYXA9InR0Ij5tYWluPC9MaXRlcmFsPiwgYXBwZWFyaW5nIG9mLWNvdXJzZSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW4uYzwvTGl0ZXJhbD46CisKKworPFByb2dyYW1MaXN0aW5nPgoraW50IG1haW4gKHZvaWQpCisKK3sKKwlpZiAoIWluaXQgKCkpIHJldHVybiAoMCk7CS8qIFBlcmZvcm0gc29tZSBpbml0aWFsIGluaXRpYWxpemF0aW9uICovCisJCQkJCS8qIFF1aXQgaWYgZmFpbGVkICovCisKKwlwYXJzZXIgKCk7CQkJLyogR2V0IGFuZCBwYXJzZSB1c2VyIGNvbW1hbmRzICovCisJCisJcHJlcGFyZV90b19jbG9zZSAoKTsJCS8qIERvIHNvbWUgY2xlYW51cCAqLworCXByaW50ZiAoIlF1aXR0aW5nIC4uLlxuIik7CisJcmV0dXJuICgxKTsJCQkvKiBBbmQgcXVpdCAqLworfQorPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSB0d28gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLCB3aGljaCBhcmUgY2FsbGVkIGJ5IDxMaXRlcmFsIHJlbWFwPSJ0dCI+bWFpbjwvTGl0ZXJhbD4sIGFyZToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJaW5pdAorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJcHJlcGFyZSZsb3diYXI7dG8mbG93YmFyO2Nsb3NlCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8U2VjdDM+Cis8VGl0bGU+VGhlIGluaXQgZnVuY3Rpb248L1RpdGxlPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5pdDwvTGl0ZXJhbD4gaXMgY2FsbGVkIGZyb20gPExpdGVyYWwgcmVtYXA9InR0Ij5tYWluPC9MaXRlcmFsPiB1cG9uIHN0YXJ0dXAuIEl0IGluaXRpYWxpemVzIHRoZQorZm9sbG93aW5nIHRhc2tzIC8gc3Vic3lzdGVtczoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlQcm9jZXNzaW5nIG9mIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnVzZXIgY29uZmlndXJhdGlvbiBmaWxlPC9MaXRlcmFsPiwgYnkgdXNpbmcgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPnByb2Nlc3MmbG93YmFyO2NvbmZpZ3VyYXRpb24mbG93YmFyO2ZpbGU8L0xpdGVyYWw+IGZ1bmN0aW9uLiBGYWlsaW5nIHRvIGNvbXBsZXRlIHRoZQorY29uZmlndXJhdGlvbiBmaWxlIHByb2Nlc3NpbmcgaXMgY29uc2lkZXJlZCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmF0YWwgZXJyb3I8L0xpdGVyYWw+LAorYW5kIEVYVDJFRCBpcyBhYm9ydGVkLiBJIGRpZCBpdCB0aGlzIHdheSBiZWNhdXNlIHRoZSBjb25maWd1cmF0aW9uCitmaWxlIGhhcyBzb21lIHNlbnNpdGl2ZSB1c2VyIG9wdGlvbnMgbGlrZSB3cml0ZSBhY2Nlc3MgYmVoYXZpb3IsIGFuZAorSSB3YW50ZWQgdG8gYmUgc3VyZSB0aGF0IHRoZSB1c2VyIGlzIGF3YXJlIG9mIHRoZW0uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlSZWdpc3RyYXRpb24gb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCBjb21tYW5kczwvTGl0ZXJhbD4gdGhyb3VnaCB0aGUgdXNlIG9mCit0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5hZGQmbG93YmFyO2dlbmVyYWwmbG93YmFyO2NvbW1hbmRzPC9MaXRlcmFsPiBmdW5jdGlvbi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVJlc2V0IG9mIHRoZSBvYmplY3QgbWVtb3J5IHJvdGF0aW5nIGxpZm8gc3RydWN0dXJlLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJUmVzZXQgb2YgdGhlIGRldmljZSBwYXJhbWV0ZXJzIGFuZCBvZiB0aGUgY3VycmVudCB0eXBlLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJSW5pdGlhbGl6YXRpb24gb2YgdGhlIHdpbmRvd3Mgc3Vic3lzdGVtIC0gVGhlIGludGVyZmFjZSBiZXR3ZWVuIHRoZQorbmN1cnNlcyBsaWJyYXJ5IGFuZCBFWFQyRUQsIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbml0Jmxvd2Jhcjt3aW5kb3dzPC9MaXRlcmFsPgorZnVuY3Rpb24sIGF2YWlsYWJsZSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPndpbi5jPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUluaXRpYWxpemF0aW9uIG9mIHRoZSBpbnRlcmZhY2UgYmV0d2VlbiB0aGUgcmVhZGxpbmUgbGlicmFyeSBhbmQKK0VYVDJFRCwgdGhyb3VnaCA8TGl0ZXJhbCByZW1hcD0idHQiPmluaXQmbG93YmFyO3JlYWRsaW5lPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUluaXRpYWxpemF0aW9uIG9mIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNpZ25hbHM8L0xpdGVyYWw+IHN1YnN5c3RlbSwgdGhyb3VnaAorPExpdGVyYWwgcmVtYXA9InR0Ij5pbml0Jmxvd2JhcjtzaWduYWxzPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCURpc2FibGluZyB3cml0ZSBhY2Nlc3MuIFdyaXRlIGFjY2VzcyBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGVuYWJsZWQKK3VzaW5nIGEgdXNlciBjb21tYW5kLCB0byBwcmV2ZW50IGFjY2lkZW50YWwgdXNlciBtaXN0YWtlcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKK1doZW4gPExpdGVyYWwgcmVtYXA9InR0Ij5pbml0PC9MaXRlcmFsPiBpcyBmaW5pc2hlZCwgaXQgZGlzcGF0Y2hlcyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5oZWxwPC9MaXRlcmFsPiBjb21tYW5kIGluIG9yZGVyCit0byBzaG93IHRoZSBhdmFpbGFibGUgY29tbWFuZHMgdG8gdGhlIHVzZXIuIE5vdGUgdGhhdCB0aGUgZXh0MiBsYXllciBpcyBzdGlsbAorbm90IGFkZGVkOyBJdCB3aWxsIGJlIGFkZGVkIGlmIGFuZCB3aGVuIEVYVDJFRCB3aWxsIGRldGVjdCBhbiBleHQyCitmaWxlc3lzdGVtIG9uIGEgZGV2aWNlLgorPC9QYXJhPgorCis8L1NlY3QzPgorCis8U2VjdDM+Cis8VGl0bGU+VGhlIHByZXBhcmUmbG93YmFyO3RvJmxvd2JhcjtjbG9zZSBmdW5jdGlvbjwvVGl0bGU+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cHJlcGFyZSZsb3diYXI7dG8mbG93YmFyO2Nsb3NlPC9MaXRlcmFsPiBmdW5jdGlvbiByZXZlcnNlcyBzb21lIG9mIHRoZSBhY3Rpb25zIGRvbmUKK2VhcmxpZXIgaW4gRVhUMkVEIGFuZCBmcmVlaW5nIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LgorU3BlY2lmaWNhbGx5LCBpdDoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDbG9zZXMgdGhlIG9wZW4gZGV2aWNlLCBpZiBhbnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlSZW1vdmVzIHRoZSBmaXJzdCBsZXZlbCAtIFJlbW92aW5nIHRoZSBnZW5lcmFsIGNvbW1hbmRzLCB0aHJvdWdoCit0aGUgdXNlIG9mIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZnJlZSZsb3diYXI7dXNlciZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+LCB3aXRoIGEgcG9pbnRlciB0byB0aGUKK2dlbmVyYWwmbG93YmFyO2NvbW1hbmRzIHN0cnVjdHVyZSBhcyBhIHBhcmFtZXRlci4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVJlbW92ZXMgb2YgdGhlIHNlY29uZCBsZXZlbCAtIFJlbW92aW5nIHRoZSBleHQyIGV4dDIgZ2VuZXJhbAorY29tbWFuZHMsIGluIG11Y2ggdGhlIHNhbWUgd2F5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJUmVtb3ZlcyBvZiB0aGUgdGhpcmQgbGV2ZWwgLSBSZW1vdmluZyB0aGUgb2JqZWN0cyBhbmQgdGhlIG9iamVjdAorc3BlY2lmaWMgY29tbWFuZHMsIGJ5IHVzaW5nIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZnJlZSZsb3diYXI7c3RydWN0Jmxvd2JhcjtkZXNjcmlwdG9yczwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDbG9zZXMgdGhlIHdpbmRvdyBzdWJzeXN0ZW0sIGFuZCBkZWF0dGFjaGVzIEVYVDJFRCBmcm9tIHRoZSBuY3Vyc2VzCitsaWJyYXJ5LCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Y2xvc2UmbG93YmFyO3dpbmRvd3M8L0xpdGVyYWw+IGZ1bmN0aW9uLAorYXZhaWxhYmxlIGluIDxMaXRlcmFsIHJlbWFwPSJ0dCI+d2luLmM8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworPC9QYXJhPgorCis8L1NlY3QzPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+UmVnaXN0cmF0aW9uIG9mIGNvbW1hbmRzPC9UaXRsZT4KKworPFBhcmE+CitBZGRpdGlvbiBvZiBhIHVzZXIgY29tbWFuZCBpcyBkb25lIHRocm91Z2ggdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YWRkJmxvd2Jhcjt1c2VyJmxvd2Jhcjtjb21tYW5kPC9MaXRlcmFsPgorZnVuY3Rpb24uIFRoZSBwcm90b3R5cGUgaXM6CisKKzxTY3JlZW4+Cit2b2lkIGFkZF91c2VyX2NvbW1hbmQgKHN0cnVjdCBzdHJ1Y3RfY29tbWFuZHMgKnB0cixjaGFyICpuYW1lLGNoYXIKKypkZXNjcmlwdGlvbixQRiBjYWxsYmFjayk7Cis8L1NjcmVlbj4KKworVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIGEgcG9pbnRlciB0byBhIHN0cnVjdHVyZSBvZiB0eXBlCis8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+LCBhIGRlc2lyZWQgbmFtZSBmb3IgdGhlIGNvbW1hbmQgd2hpY2ggd2lsbCBiZSB1c2VkIGJ5Cit0aGUgdXNlciB0byBpZGVudGlmeSB0aGUgY29tbWFuZCwgYSBzaG9ydCBkZXNjcmlwdGlvbiB3aGljaCBpcyB1dGlsaXplZCBieSB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aGVscDwvTGl0ZXJhbD4gc3Vic3lzdGVtLCBhbmQgYSBwb2ludGVyIHRvIGEgQyBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBpZgorPExpdGVyYWwgcmVtYXA9InR0Ij5kaXNwYXRjaDwvTGl0ZXJhbD4gZGVjaWRlcyB0aGF0IHRoaXMgY29tbWFuZCB3YXMgcmVxdWVzdGVkLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmFkZCZsb3diYXI7dXNlciZsb3diYXI7Y29tbWFuZDwvTGl0ZXJhbD4gaXMgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmxvdyBsZXZlbCBmdW5jdGlvbjwvTGl0ZXJhbD4gdXNlZCBpbiB0aGUgdGhyZWUKK2xldmVscyB0byBhZGQgdXNlciBjb21tYW5kcy4gRm9yIGV4YW1wbGUsIGFkZGl0aW9uIG9mIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDIKK2dlbmVyYWwgY29tbWFuZHMgaXMgZG9uZSBieTo8L0xpdGVyYWw+CisKKzxQcm9ncmFtTGlzdGluZz4KK3ZvaWQgYWRkX2V4dDJfZ2VuZXJhbF9jb21tYW5kcyAodm9pZCkKKworeworCWFkZF91c2VyX2NvbW1hbmQgKCZhbXA7ZXh0Ml9jb21tYW5kcywic3VwZXIiLCJNb3ZlcyB0byB0aGUgc3VwZXJibG9jayBvZiB0aGUgZmlsZXN5c3RlbSIsdHlwZV9leHQyX19fc3VwZXIpOworCWFkZF91c2VyX2NvbW1hbmQgKCZhbXA7ZXh0Ml9jb21tYW5kcywiZ3JvdXAiLCJNb3ZlcyB0byB0aGUgZmlyc3QgZ3JvdXAgZGVzY3JpcHRvciIsdHlwZV9leHQyX19fZ3JvdXApOworCWFkZF91c2VyX2NvbW1hbmQgKCZhbXA7ZXh0Ml9jb21tYW5kcywiY2QiLCJNb3ZlcyB0byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCIsdHlwZV9leHQyX19fY2QpOworfQorPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+UmVnaXN0cmF0aW9uIG9mIG9iamVjdHM8L1RpdGxlPgorCis8UGFyYT4KK1JlZ2lzdHJhdGlvbiBvZiBvYmplY3RzIGlzIGJhc2VkLCBhcyBleHBsYWluZWQgZWFybGllciwgb24gdGhlICJjb21waWxhdGlvbiIKK29mIGFuIGV4dGVybmFsIHVzZXIgZmlsZSwgd2hpY2ggaGFzIGEgc3ludGF4IHNpbWlsYXIgdG8gdGhlIEMgbGFuZ3VhZ2UKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0PC9MaXRlcmFsPiBrZXl3b3JkLiBUaGUgcHJpbWl0aXZlIHBhcnNlciBJIGhhdmUgaW1wbGVtZW50ZWQgZGV0ZWN0cyB0aGUKK2RlZmluaXRpb24gb2Ygc3RydWN0dXJlcywgYW5kIGNhbGxzIHNvbWUgbG93ZXIgbGV2ZWwgZnVuY3Rpb25zIHRvIGFjdHVhbGx5CityZWdpc3RlciB0aGUgbmV3IGRldGVjdGVkIG9iamVjdC4gVGhlIHBhcnNlcidzIHByb3RvdHlwZSBpczoKKworPFNjcmVlbj4KK2ludCBzZXRfc3RydWN0X2Rlc2NyaXB0b3JzIChjaGFyICpmaWxlX25hbWUpCis8L1NjcmVlbj4KKworSXQgb3BlbnMgdGhlIGdpdmVuIGZpbGUgbmFtZSwgYW5kIGNhbGxzLCB3aGVuIGFwcHJvcHJpYXRlOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlhZGQmbG93YmFyO25ldyZsb3diYXI7ZGVzY3JpcHRvcgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJYWRkJmxvd2JhcjtuZXcmbG93YmFyO3ZhcmlhYmxlCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPExpdGVyYWwgcmVtYXA9InR0Ij5hZGQmbG93YmFyO25ldyZsb3diYXI7ZGVzY3JpcHRvcjwvTGl0ZXJhbD4gaXMgYSBsb3cgbGV2ZWwgZnVuY3Rpb24gd2hpY2ggYWRkcyBhIG5ldyBkZXNjcmlwdG9yCit0byB0aGUgZG91Ymx5IGxpbmtlZCBsaXN0IG9mIHRoZSBhdmFpbGFibGUgb2JqZWN0cy4gSXQgd2lsbCB0aGVuIGNhbGwKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsbCZsb3diYXI7dHlwZSZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+LCB3aGljaCB3aWxsIGFkZCBzcGVjaWZpYyBjb21tYW5kcyB0byB0aGUgb2JqZWN0LAoraWYgdGhlIG9iamVjdCBpcyBrbm93bi4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPmFkZCZsb3diYXI7bmV3Jmxvd2Jhcjt2YXJpYWJsZTwvTGl0ZXJhbD4gd2lsbCBhZGQgYSBuZXcgdmFyaWFibGUgb2YgdGhlIHJlcXVlc3RlZCBsZW5ndGggdG8gdGhlCitzcGVjaWZpZWQgZGVzY3JpcHRvci4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkluaXRpYWxpemF0aW9uIHVwb24gc3BlY2lmaWNhdGlvbiBvZiBhIGRldmljZTwvVGl0bGU+CisKKzxQYXJhPgorV2hlbiB0aGUgZ2VuZXJhbCBjb21tYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0ZGV2aWNlPC9MaXRlcmFsPiBpcyB1c2VkIHRvIG9wZW4gYSBkZXZpY2UsIHNvbWUKK2luaXRpYWxpemF0aW9uIHNlcXVlbmNlIHRha2VzIHBsYWNlLCB3aGljaCBpcyBpbnRlbmRlZCB0byBkZXRlcm1pbmUgdHdvCitmYWN0b3JzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBcmUgd2UgZGVhbGluZyB3aXRoIGFuIGV4dDIgZmlsZXN5c3RlbSA/Cis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlXaGF0IGFyZSB0aGUgYmFzaWMgZmlsZXN5c3RlbSBwYXJhbWV0ZXJzLCBzdWNoIGFzIGl0cyB0b3RhbCBzaXplIGFuZAoraXRzIGJsb2NrIHNpemUgPworPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK1RoaXMgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZCBieSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXQmbG93YmFyO2ZpbGUmbG93YmFyO3N5c3RlbSZsb3diYXI7aW5mbzwvTGl0ZXJhbD4sIHBvc3NpYmx5Cit1c2luZyBzb21lIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aGVscCBmcm9tIHRoZSB1c2VyPC9MaXRlcmFsPiwgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorVGhlIGFuc3dlcnMgYXJlIHBsYWNlZCBpbiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlJmxvd2JhcjtzeXN0ZW0mbG93YmFyO2luZm88L0xpdGVyYWw+IHN0cnVjdHVyZSwgd2hpY2ggaXMgb2YKK3R5cGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zdHJ1Y3QmbG93YmFyO2ZpbGUmbG93YmFyO3N5c3RlbSZsb3diYXI7aW5mbzwvTGl0ZXJhbD46CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBzdHJ1Y3RfZmlsZV9zeXN0ZW1faW5mbyB7CisJdW5zaWduZWQgbG9uZyBmaWxlX3N5c3RlbV9zaXplOworCXVuc2lnbmVkIGxvbmcgc3VwZXJfYmxvY2tfb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBncm91cHNfY291bnQ7CisJdW5zaWduZWQgbG9uZyBpbm9kZXNfcGVyX2Jsb2NrOworCXVuc2lnbmVkIGxvbmcgYmxvY2tzX3Blcl9ncm91cDsJCS8qIFRoZSBuYW1lIGlzIG1pc2xlYWRpbmc7IGJld2FyZSAqLworCXVuc2lnbmVkIGxvbmcgbm9fYmxvY2tzX2luX2dyb3VwOworCXVuc2lnbmVkIHNob3J0IGJsb2NrX3NpemU7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgc3VwZXJfYmxvY2s7Cit9OworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KK0F1dG9kZXRlY3Rpb24gb2YgYW4gZXh0MiBmaWxlc3lzdGVtIGlzIHVzdWFsbHkgcmVjb21tZW5kZWQuIEhvd2V2ZXIsIG9uIGEgZGFtYWdlZAorZmlsZXN5c3RlbSBJIGNhbid0IGFzc3VyZSBhIHN1Y2Nlc3MuIFRoYXQncyB3ZXJlIHRoZSB1c2VyIGNvbWVzIGluIC0gSGUgY2FuCis8TGl0ZXJhbCByZW1hcD0idHQiPm92ZXJyaWRlPC9MaXRlcmFsPiB0aGUgYXV0byBkZXRlY3Rpb24gcHJvY2VkdXJlIGFuZCBmb3JjZSBhbiBleHQyIGZpbGVzeXN0ZW0sIGJ5CitzZWxlY3RpbmcgdGhlIHByb3BlciBvcHRpb25zIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCis8L1BhcmE+CisKKzxQYXJhPgorSWYgYXV0byBkZXRlY3Rpb24gc3VjY2VlZHMsIHRoZSBzZWNvbmQgcXVlc3Rpb24gYWJvdmUgaXMgYXV0b21hdGljYWxseQorYW5zd2VyZWQgLSBJIGdldCBhbGwgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGl0c2VsZi4gSW4KK2FueSBjYXNlLCBkZWZhdWx0IHBhcmFtZXRlcnMgY2FuIGJlIHN1cHBsaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgYW5kCit0aGUgdXNlciBjYW4gc2VsZWN0IHRoZSByZXF1aXJlZCBiZWhhdmlvci4KKzwvUGFyYT4KKworPFBhcmE+CitJZiB3ZSBkZWNpZGUgdG8gdHJlYXQgdGhlIGZpbGVzeXN0ZW0gYXMgYW4gZXh0MiBmaWxlc3lzdGVtLCA8TGl0ZXJhbCByZW1hcD0idHQiPnJlZ2lzdHJhdGlvbiBvZgordGhlIGV4dDIgc3BlY2lmaWMgb2JqZWN0czwvTGl0ZXJhbD4gaXMgZG9uZSBhdCB0aGlzIHBvaW50LCBieSBjYWxsaW5nIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5zZXQmbG93YmFyO3N0cnVjdCZsb3diYXI7ZGVzY3JpcHRvcnM8L0xpdGVyYWw+IG91dGxpbmVkIGVhcmxpZXIsIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpbGUKK3doaWNoIGRlc2NyaWJlcyB0aGUgZXh0MiBvYmplY3RzLCBhbmQgaXMgYmFzaWNhbGx5IGJhc2VkIG9uIHRoZSBleHQyIHNvdXJjZXMKK21haW4gaW5jbHVkZSBmaWxlLiBBdCB0aGlzIHBvaW50LCBFWFQyRUQgY2FuIGJlIGZ1bGx5IHVzZWQgYnkgdGhlIHVzZXIuCis8L1BhcmE+CisKKzxQYXJhPgorSWYgd2UgZG8gbm90IHJlZ2lzdGVyIHRoZSBleHQyIHNwZWNpZmljIG9iamVjdHMsIHRoZSB1c2VyIGNhbiBzdGlsbCBwcm92aWRlCitvYmplY3QgZGVmaW5pdGlvbnMgaW4gYSBzZXBhcmF0ZSBmaWxlLCBhbmQgd2lsbCBiZSBhYmxlIHRvIHVzZSBFWFQyRUQgaW4gYQorPExpdGVyYWwgcmVtYXA9InR0Ij5saW1pdGVkIGZvcm08L0xpdGVyYWw+LCBidXQgbW9yZSBzb3BoaXN0aWNhdGVkIHRoYW4gYSBzaW1wbGUgaGV4IGVkaXRvci4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPm1haW4uYzwvVGl0bGU+CisKKzxQYXJhPgorQXMgZGVzY3JpYmVkIGVhcmxpZXIsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bWFpbi5jPC9MaXRlcmFsPiBpcyB1c2VkIGFzIGEgZnJvbnQtaGVhZCB0byB0aGUgZW50aXJlCitwcm9ncmFtLiA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW4uYzwvTGl0ZXJhbD4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBlbGVtZW50czoKKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBtYWluIHJvdXRpbmU8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW48L0xpdGVyYWw+IHJvdXRpbmUgd2FzIGRpc3BsYXllZCBhYm92ZS4gSXRzIHRhc2sgaXMgdG8gcGFzcyBjb250cm9sIHRvCit0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgYW5kIHRvIHRoZSBwYXJzZXIuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgcGFyc2VyPC9UaXRsZT4KKworPFBhcmE+CitUaGUgcGFyc2VyIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5wYXJzZXI8L0xpdGVyYWw+IGZ1bmN0aW9uLCB3aGljaCByZWFkcyB0aGUgY29tbWFuZCBsaW5lIGZyb20gdGhlCit1c2VyIGFuZCBzYXZlcyBpdCBpbiByZWFkbGluZSdzIGhpc3RvcnkgYnVmZmVyIGFuZCBpbiB0aGUgaW50ZXJuYWwKK2xhc3QtY29tbWFuZCBidWZmZXIuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5wYXJzZSZsb3diYXI7d29yZDwvTGl0ZXJhbD4gZnVuY3Rpb24sIHdoaWNoIHJlY2VpdmVzIGEgc3RyaW5nIGFuZCBwYXJzZXMKK3RoZSBmaXJzdCB3b3JkIGZyb20gaXQsIGlnbm9yaW5nIHdoaXRlc3BhY2VzLCBhbmQgcmV0dXJucyBhIHBvaW50ZXIKK3RvIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5jb21wbGV0ZSZsb3diYXI7Y29tbWFuZDwvTGl0ZXJhbD4gZnVuY3Rpb24sIHdoaWNoIGlzIHVzZWQgYnkgdGhlIHJlYWRsaW5lCitsaWJyYXJ5IGZvciBjb21tYW5kIGNvbXBsZXRpb24uIEl0IHNjYW5zIHRoZSBhdmFpbGFibGUgY29tbWFuZHMgYXQKK3RoaXMgcG9pbnQgYW5kIGRldGVybWluZXMgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBkaXNwYXRjaGVyPC9UaXRsZT4KKworPFBhcmE+CitUaGUgZGlzcGF0Y2hlciB3YXMgYWxyZWFkeSBleHBsYWluZWQgaW4gdGhlIGZsb3cgY29udHJvbCBzZWN0aW9uIC0gc2VjdGlvbgorPFhSZWYgTGlua0VuZD0iZmxvdy1jb250cm9sIj4uIEl0cyB0YXNrIGlzIHRvIHBhc3MgY29udHJvbCB0byB0aGUgcHJvcGVyIGNvbW1hbmQKK2hhbmRsaW5nIGZ1bmN0aW9uLCBiYXNlZCBvbiB0aGUgY29tbWFuZCBsaW5lJ3MgY29tbWFuZC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBzZWxmLXNhbml0eSBjb250cm9sPC9UaXRsZT4KKworPFBhcmE+CitUaGlzIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZ2VuZXJhbCBpZGVhIHdhcyB0byBwcm92aWRlIGEgY29udHJvbCBzeXN0ZW0gd2hpY2ggd2lsbCBzdXBlcnZpc2UgdGhlCitpbnRlcm5hbCB3b3JrIG9mIEVYVDJFRC4gU2luY2UgSSBhbSBwcmV0dHkgc3VyZSB0aGF0IGJ1Z3MgZXhpc3QsIEkgaGF2ZQorZG91YmxlIGNoZWNrZWQgbXlzZWxmIGluIGEgZmV3IGluc3RhbmNlcywgYW5kIGlzc3VlZCBhbiA8TGl0ZXJhbCByZW1hcD0idHQiPmludGVybmFsCitlcnJvcjwvTGl0ZXJhbD4gd2FybmluZyBpZiBJIHJlYWNoZWQgdGhlIGNvbmNsdXNpb24gdGhhdCBzb21ldGhpbmcgaXMgbm90IGxvZ2ljYWwuCitUaGUgaW50ZXJuYWwgZXJyb3IgaXMgcmVwb3J0ZWQgYnkgdGhlIGZ1bmN0aW9uIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW50ZXJuYWwmbG93YmFyO2Vycm9yPC9MaXRlcmFsPiwKK2F2YWlsYWJsZSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPm1haW4uYzwvTGl0ZXJhbD4uIAorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBzZWxmIHNhbml0eSBjaGVjayBpcyBjb21waWxlZCBvbmx5IGlmIHRoZSBjb21waWxlIHRpbWUgb3B0aW9uCis8TGl0ZXJhbCByZW1hcD0idHQiPkRFQlVHPC9MaXRlcmFsPiBpcyBzZWxlY3RlZC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSB3aW5kb3dzIGludGVyZmFjZTwvVGl0bGU+CisKKzxQYXJhPgorU2NyZWVuIGhhbmRsaW5nIGFuZCBpbnRlcmZhY2luZyB0byB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5uY3Vyc2VzPC9MaXRlcmFsPiBsaWJyYXJ5IGlzIGRvbmUgaW4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+d2luLmM8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+SW5pdGlhbGl6YXRpb248L1RpdGxlPgorCis8UGFyYT4KK09wZW5pbmcgb2YgdGhlIHdpbmRvd3MgaXMgZG9uZSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPmluaXQmbG93YmFyO3dpbmRvd3M8L0xpdGVyYWw+LiBJbgorPExpdGVyYWwgcmVtYXA9InR0Ij5jbG9zZSZsb3diYXI7d2luZG93czwvTGl0ZXJhbD4sIHdlIGp1c3QgY2xvc2Ugb3VyIHdpbmRvd3MuIFRoZSB2YXJpb3VzIHdpbmRvdyBsZW5ndGhzCit3aXRoIGFuIGV4Y2VwdGlvbiB0byB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93IHBhZDwvTGl0ZXJhbD4gYXJlIGRlZmluZWQgaW4gdGhlIG1haW4gaGVhZGVyIGZpbGUuCitUaGUgcmVzdCBvZiB0aGUgZGlzcGxheSB3aWxsIGJlIHVzZWQgYnkgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyBwYWQ8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+RGlzcGxheSBvdXRwdXQ8L1RpdGxlPgorCis8UGFyYT4KK0VhY2ggYWN0dWFsIHJlZnJlc2hpbmcgb2YgdGhlIHRlcm1pbmFsIG1vbml0b3IgaXMgZG9uZSBieSB1c2luZyB0aGUKK2FwcHJvcHJpYXRlIHJlZnJlc2ggZnVuY3Rpb24gZnJvbSB0aGlzIGZpbGU6IDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVmcmVzaCZsb3diYXI7dGl0bGUmbG93YmFyO3dpbjwvTGl0ZXJhbD4sCis8TGl0ZXJhbCByZW1hcD0idHQiPnJlZnJlc2gmbG93YmFyO3Nob3cmbG93YmFyO3dpbjwvTGl0ZXJhbD4sIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVmcmVzaCZsb3diYXI7c2hvdyZsb3diYXI7cGFkPC9MaXRlcmFsPiBhbmQKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVmcmVzaCZsb3diYXI7Y29tbWFuZCZsb3diYXI7d2luPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFBhcmE+CitXaXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyBwYWQ8L0xpdGVyYWw+LCBlYWNoIGZ1bmN0aW9uIHNpbXBseSBjYWxscyB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+bmN1cnNlcyByZWZyZXNoIGNvbW1hbmQ8L0xpdGVyYWw+LiBJbiBvcmRlciB0byBwcm92aWRlIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2Nyb2xsaW5nPC9MaXRlcmFsPiBpbgordGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyBwYWQ8L0xpdGVyYWw+LCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGl0cyBzdGF0dXMgaXMgY29uc3RhbnRseSB1cGRhdGVkCitieSB0aGUgdmFyaW91cyBmdW5jdGlvbnMgd2hpY2ggZGlzcGxheSBvdXRwdXQgaW4gaXQuIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVmcmVzaCZsb3diYXI7c2hvdyZsb3diYXI7cGFkPC9MaXRlcmFsPgorcGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gPExpdGVyYWwgcmVtYXA9InR0Ij5uY3Vyc2VzPC9MaXRlcmFsPiBzbyB0aGF0IHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlIHBhZAoraXMgYWN0dWFsbHkgY29waWVkIHRvIHRoZSBkaXNwbGF5LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBhYm92ZSBpbmZvcm1hdGlvbiBpcyBzYXZlZCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBvZiB0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0CitzdHJ1Y3QmbG93YmFyO3BhZCZsb3diYXI7aW5mbzwvTGl0ZXJhbD46Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3Qgc3RydWN0X3BhZF9pbmZvIHsKKwlpbnQgZGlzcGxheV9saW5lcyxkaXNwbGF5X2NvbHM7CisJaW50IGxpbmUsY29sOworCWludCBtYXhfbGluZSxtYXhfY29sOworCWludCBkaXNhYmxlX291dHB1dDsKK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5TY3JlZW4gcmVkcmF3PC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5yZWRyYXcmbG93YmFyO2FsbDwvTGl0ZXJhbD4gZnVuY3Rpb24gd2lsbCBqdXN0IHJlb3BlbiB0aGUgd2luZG93cy4gVGhpcyBhY3Rpb24gaXMKK25lY2Vzc2FyeSBpZiB0aGUgZGlzcGxheSBnZXRzIGdhcmJsZWQgZnJvbSBzb21lIHJlYXNvbi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBkaXNrIGludGVyZmFjZTwvVGl0bGU+CisKKzxQYXJhPgorQWxsIHRoZSBkaXNrIGFjdGl2aXR5IHdpdGggcmVnYXJkIHRvIHRoZSBmaWxlc3lzdGVtIHBhc3NlcyB0aHJvdWdoIHRoZSBmaWxlCis8TGl0ZXJhbCByZW1hcD0idHQiPmRpc2suYzwvTGl0ZXJhbD4uIFRoaXMgaXMgZG9uZSB0aGF0IHdheSB0byBwcm92aWRlIGFkZGl0aW9uYWwgbGV2ZWxzIG9mIHNhZmV0eQorY29uY2VybmluZyB0aGUgZGlzayBhY2Nlc3MuIFRoaXMgd2F5LCBnbG9iYWwgZGVjaXNpb25zIGNvbnNpZGVyaW5nIHRoZSBkaXNrCitjYW4gYmUgZWFzaWx5IGFjY29tcGxpc2hlZC4gVGhlIGJlbmVmaXRzIG9mIHRoaXMgaXNvbGF0aW9uIHdpbGwgYmVjb21lIGV2ZW4KK2NsZWFyZXIgaW4gdGhlIG5leHQgc2VjdGlvbnMuCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5Mb3cgbGV2ZWwgZnVuY3Rpb25zPC9UaXRsZT4KKworPFBhcmE+CitSZWFkIHJlcXVlc3RzIGFyZSB1bHRpbWF0ZWx5IGhhbmRsZWQgYnkgPExpdGVyYWwgcmVtYXA9InR0Ij5sb3cmbG93YmFyO3JlYWQ8L0xpdGVyYWw+IGFuZCB3cml0ZSByZXF1ZXN0cworYXJlIGhhbmRsZWQgYnkgPExpdGVyYWwgcmVtYXA9InR0Ij5sb3cmbG93YmFyO3dyaXRlPC9MaXRlcmFsPi4gVGhleSBqdXN0IHJlY2VpdmUgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YQorYmxvY2ssIHRoZSBvZmZzZXQgaW4gdGhlIGZpbGVzeXN0ZW0gYW5kIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGFuZCBwYXNzIHRoZQorcmVxdWVzdCB0byB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5mcmVhZDwvTGl0ZXJhbD4gb3IgPExpdGVyYWwgcmVtYXA9InR0Ij5md3JpdGU8L0xpdGVyYWw+IHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+TW91bnRlZCBmaWxlc3lzdGVtczwvVGl0bGU+CisKKzxQYXJhPgorRVhUMkVEIGRlc2lnbiBhc3N1bWVzIHRoYXQgdGhlIGVkaXRlZCBmaWxlc3lzdGVtIGlzIG5vdCBtb3VudGVkLiBFdmVuIGlmCithIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVhc29uYWJseSBzaW1wbGU8L0xpdGVyYWw+IHdheSB0byBoYW5kbGUgbW91bnRlZCBmaWxlc3lzdGVtcyBleGlzdHMsIGl0IGlzCitwcm9iYWJseSA8TGl0ZXJhbCByZW1hcD0idHQiPnRvbyBjb21wbGljYXRlZDwvTGl0ZXJhbD4gOi0pCis8L1BhcmE+CisKKzxQYXJhPgorV3JpdGUgYWNjZXNzIHRvIGEgbW91bnRlZCBmaWxlc3lzdGVtIHdpbGwgYmUgZGVuaWVkLiBSZWFkIGFjY2VzcyBjYW4gYmUKK2FsbG93ZWQgYnkgdXNpbmcgYSBjb25maWd1cmF0aW9uIGZpbGUgb3B0aW9uLiBUaGUgbW91bnQgc3RhdHVzIGlzIGRldGVybWluZWQKK2J5IHJlYWRpbmcgdGhlIGZpbGUgL2V0Yy9tdGFiLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+V3JpdGUgYWNjZXNzPC9UaXRsZT4KKworPFBhcmE+CitXcml0ZSBhY2Nlc3MgaXMgdGhlIG1vc3Qgc2Vuc2l0aXZlIHBhcnQgaW4gdGhlIHByb2dyYW0uIFRoaXMgcHJvZ3JhbSBpcworaW50ZW5kZWQgZm9yIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZWRpdGluZyBmaWxlc3lzdGVtczwvTGl0ZXJhbD4uIEl0IGlzIG9idmlvdXMgdGhhdCBhIHNtYWxsIG1pc3Rha2UKK2luIHRoaXMgcmVnYXJkIGNhbiBtYWtlIHRoZSBmaWxlc3lzdGVtIG5vdCB1c2FibGUgYW55bW9yZS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZm9sbG93aW5nIHNhZmV0eSBtZWFzdXJlcyBhcmUgYWRkZWQsIG9mLWNvdXJzZSwgdG8gdGhlIGdlbmVyYWwgVW5peAorcGVybWlzc2lvbiBwcm90ZWN0aW9uIC0gVGhlIHVzZXIgY2FuIGFsd2F5cyBkaXNhYmxlIHdyaXRlIGFjY2VzcyBvbiB0aGUKK2RldmljZSBmaWxlIGl0c2VsZi4KKzwvUGFyYT4KKworPFBhcmE+CitDb25zaWRlcmluZyB0aGUgdXNlciwgdGhlIGZvbGxvd2luZyBzYWZldHkgbWVhc3VyZXMgd2VyZSB0YWtlbjoKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgZmlsZXN5c3RlbSBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPm5ldmVyPC9MaXRlcmFsPiBvcGVuZWQgd2l0aCB3cml0ZS1hY2Nlc3MgZW5hYmxlcy4KK1JhdGhlciwgdGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5IHJlcXVlc3QgdG8gZW5hYmxlIHdyaXRlLWFjY2Vzcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSB1c2VyIGNhbiA8TGl0ZXJhbCByZW1hcD0idHQiPmRpc2FibGU8L0xpdGVyYWw+IHdyaXRlIGFjY2VzcyBlbnRpcmVseSBieSB1c2luZyBhCis8TGl0ZXJhbCByZW1hcD0idHQiPmNvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb248L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJQ2hhbmdlcyBhcmUgbmV2ZXIgZG9uZSBhdXRvbWF0aWNhbGx5IC0gV2hlbmV2ZXIgdGhlIHVzZXIgbWFrZXMKK2NoYW5nZXMsIHRoZXkgYXJlIGRvbmUgaW4gbWVtb3J5LiBBbiBleHBsaWNpdCA8TGl0ZXJhbCByZW1hcD0idHQiPndyaXRlZGF0YTwvTGl0ZXJhbD4KK2NvbW1hbmQgc2hvdWxkIGJlIGlzc3VlZCB0byBtYWtlIHRoZSBjaGFuZ2VzIGFjdGl2ZSBpbiB0aGUgZGlzay4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKK0NvbnNpZGVyaW5nIG15c2VsZiwgSSB0cmllZCB0byBwcm90ZWN0IGFnYWluc3QgbXkgYnVncyBieToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJT3BlbmluZyB0aGUgZGV2aWNlIGluIHJlYWQtb25seSBtb2RlIHVudGlsIGEgd3JpdGUgcmVxdWVzdCBpcworaXNzdWVkIGJ5IHRoZSB1c2VyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJTGltaXRpbmcgPExpdGVyYWwgcmVtYXA9InR0Ij5hY3R1YWw8L0xpdGVyYWw+IGZpbGVzeXN0ZW0gYWNjZXNzIHRvIHR3byBmdW5jdGlvbnMgb25seSAtCis8TGl0ZXJhbCByZW1hcD0idHQiPmxvdyZsb3diYXI7cmVhZDwvTGl0ZXJhbD4gZm9yIHJlYWRpbmcsIGFuZCA8TGl0ZXJhbCByZW1hcD0idHQiPmxvdyZsb3diYXI7d3JpdGU8L0xpdGVyYWw+IGZvciB3cml0aW5nLiBUaG9zZQorZnVuY3Rpb25zIHdlcmUgcHJvZ3JhbW1lZCBjYXJlZnVsbHksIGFuZCBJIGFkZGVkIHRoZSBzZWxmCitzYW5pdHkgY2hlY2tzIHRoZXJlLiBJbiBhZGRpdGlvbiwgdGhpcyBpcyB0aGUgb25seSBwbGFjZSBpbiB3aGljaCBJCituZWVkIHRvIGNoZWNrIHRoZSB1c2VyIG9wdGlvbnMgZGVzY3JpYmVkIGFib3ZlIC0gVGhlcmUgY2FuIGJlIG5vCitwbGFjZSBpbiB3aGljaCBJIGNhbiAiZm9yZ2V0IiB0byBjaGVjayB0aGVtLgorCitOb3RlIHRoYXQgVGhlIGRpc2FibGluZyBvZiB3cml0ZS1hY2Nlc3MgdGhyb3VnaCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCitpcyBkb3VibGUgY2hlY2tlZCBoZXJlIG9ubHkgYXMgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnNlbGYtc2FuaXR5PC9MaXRlcmFsPiBjaGVjayAtIElmCis8TGl0ZXJhbCByZW1hcD0idHQiPkRFQlVHPC9MaXRlcmFsPiBpcyBzZWxlY3RlZCwgc2luY2Ugd3JpdGUgZW5hYmxlIHNob3VsZCBoYXZlIGJlZW4gcmVmdXNlZAorYW5kIHdyaXRlLWFjY2VzcyBpcyBhbHdheXMgZGlzYWJsZWQgYXQgc3RhcnR1cCwgaGVuY2UgZmluZGluZworPExpdGVyYWwgcmVtYXA9InR0Ij5oZXJlPC9MaXRlcmFsPiB0aGF0IHRoZSB1c2VyIGhhcyB3cml0ZSBhY2Nlc3MgZGlzYWJsZWQgdGhyb3VnaCB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZSBjbGVhcmx5IGluZGljYXRlcyB0aGF0IEkgaGF2ZSBhIGJ1ZyBzb21ld2hlcmUuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSBmb2xsb3dpbmcgc2FmZXR5IG1lYXN1cmUgY2FuIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IDxMaXRlcmFsIHJlbWFwPSJ0dCI+Ym90aDwvTGl0ZXJhbD4gdXNlcgorbWlzdGFrZXMgYW5kIG15IG93biBidWdzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJIGFkZGVkIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5sb2dnaW5nIG9wdGlvbjwvTGl0ZXJhbD4sIHdoaWNoIGxvZ3MgZXZlcnkgYWN0dWFsIHdyaXRlCithY2Nlc3MgdG8gdGhlIGRpc2sgaW4gdGhlIGxvd2VzdCBsZXZlbCAtIEluIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bG93Jmxvd2Jhcjt3cml0ZTwvTGl0ZXJhbD4gaXRzZWxmLgorCitUaGUgbG9nZ2luZyBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IHR5cGUgYW5kIHRoZSB2YXJpb3VzCitvdGhlciBoaWdoZXIgbGV2ZWwgb3BlcmF0aW9ucyBvZiBFWFQyRUQgLSBJdCBpcyBzaW1wbHkgYSBoZXggZHVtcCBvZgordGhlIGNvbnRlbnRzIHdoaWNoIHdpbGwgYmUgb3ZlcndyaXR0ZW47IEJvdGggdGhlIG9yaWdpbmFsIGNvbnRlbnRzCithbmQgdGhlIG5ldyB3cml0dGVuIGRhdGEuCisKK0luIHRoYXQgY2FzZSwgZXZlbiBpZiB0aGUgdXNlciBtYWtlcyBhIAltaXN0YWtlLCB0aGUgb3JpZ2luYWwgZGF0YQorY2FuIGJlIHJldHJpZXZlZC4KKworRXZlbiBJZiBJIGhhdmUgYSBidWcgc29tZXdoZXJlIHdoaWNoIGNhdXNlcyBpbmNvcnJlY3QgZGF0YSB0byBiZQord3JpdHRlbiB0byB0aGUgZGlzaywgdGhlIGxvZ2dpbmcgb3B0aW9uIHdpbGwgc3RpbGwgbG9nIGV4YWN0bHkgdGhlCitvcmlnaW5hbCBjb250ZW50cyBhdCB0aGUgcGxhY2Ugd2VyZSBkYXRhIHdhcyBpbmNvcnJlY3RseSBvdmVyd3JpdHRlbi4KKyhUaGlzIGFzc3VtZXMsIG9mLWNvdXJzZSwgdGhhdCA8TGl0ZXJhbCByZW1hcD0idHQiPmxvdy13cml0ZTwvTGl0ZXJhbD4gYW5kIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmxvZ2dpbmcKK2l0c2VsZjwvTGl0ZXJhbD4gd29yayBjb3JyZWN0bHkuIEkgaGF2ZSBkb25lIG15IGJlc3QgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcworaW5kZWVkIHRoZSBjYXNlKS4KKworVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bG9nZ2luZzwvTGl0ZXJhbD4gb3B0aW9uIGlzIGltcGxlbWVudGVkIGluIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmxvZyZsb3diYXI7Y2hhbmdlczwvTGl0ZXJhbD4KK2Z1bmN0aW9uLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlJlYWRpbmcgLyBXcml0aW5nIG9iamVjdHM8L1RpdGxlPgorCis8UGFyYT4KK1VzdWFsbHkgPExpdGVyYWwgcmVtYXA9InR0Ij4obm90IGFsd2F5cyk8L0xpdGVyYWw+LCB0aGUgY3VycmVudCBvYmplY3QgZGF0YSBpcyBhdmFpbGFibGUgaW4gdGhlCitnbG9iYWwgdmFyaWFibGUgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlJmxvd2JhcjtkYXRhPC9MaXRlcmFsPiwgd2hpY2ggaXMgb2YgdGhlIHR5cGU6CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBzdHJ1Y3RfdHlwZV9kYXRhIHsKKwlsb25nIG9mZnNldF9pbl9ibG9jazsKKworCXVuaW9uIHVuaW9uX3R5cGVfZGF0YSB7CisJCWNoYXIgYnVmZmVyIFtFWFQyX01BWF9CTE9DS19TSVpFXTsKKwkJc3RydWN0IGV4dDJfYWNsX2hlYWRlciB0X2V4dDJfYWNsX2hlYWRlcjsKKwkJc3RydWN0IGV4dDJfYWNsX2VudHJ5IHRfZXh0Ml9hY2xfZW50cnk7CisJCXN0cnVjdCBleHQyX29sZF9ncm91cF9kZXNjIHRfZXh0Ml9vbGRfZ3JvdXBfZGVzYzsKKwkJc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyB0X2V4dDJfZ3JvdXBfZGVzYzsKKwkJc3RydWN0IGV4dDJfaW5vZGUgdF9leHQyX2lub2RlOworCQlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayB0X2V4dDJfc3VwZXJfYmxvY2s7CisJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSB0X2V4dDJfZGlyX2VudHJ5OworCX0gdTsKK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCitUaGUgYWJvdmUgdW5pb24gZW5hYmxlcyBtZSwgaW4gdGhlIHByb2dyYW0sIHRvIHRyZWF0IHRoZSBkYXRhIGFzIHJhdyBkYXRhIG9yCithcyBhIG1lYW5pbmdmdWwgZmlsZXN5c3RlbSBvYmplY3QuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIHJlYWRpbmcgYW5kIHdyaXRpbmcsIGlmIGRvbmUgdG8gdGhpcyBnbG9iYWwgdmFyaWFibGUsIGFyZSBkb25lIHRocm91Z2gKK3RoZSBmdW5jdGlvbnMgPExpdGVyYWwgcmVtYXA9InR0Ij5sb2FkJmxvd2Jhcjt0eXBlJmxvd2JhcjtkYXRhPC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij53cml0ZSZsb3diYXI7dHlwZSZsb3diYXI7ZGF0YTwvTGl0ZXJhbD4sIGF2YWlsYWJsZSBpbgorPExpdGVyYWwgcmVtYXA9InR0Ij5kaXNrLmM8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+VGhlIGdlbmVyYWwgY29tbWFuZHM8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmdlbmVyYWwgY29tbWFuZHM8L0xpdGVyYWw+IGFyZSBoYW5kbGVkIGluIHRoZSBmaWxlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCZsb3diYXI7Y29tLmM8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIGhlbHAgc3lzdGVtPC9UaXRsZT4KKworPFBhcmE+CitUaGUgaGVscCBjb21tYW5kIGlzIGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aGVscDwvTGl0ZXJhbD4uIFRoZSBhbGdvcml0aG0gaXMgYXMKK2ZvbGxvd3M6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8T3JkZXJlZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUNoZWNrIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLiBJZiB0aGVyZSBpcyBhbiBhcmd1bWVudCwgcGFzcworY29udHJvbCB0byB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5kZXRhaWxlZCZsb3diYXI7aGVscDwvTGl0ZXJhbD4gZnVuY3Rpb24sIGluIG9yZGVyIHRvIHByb3ZpZGUKK2hlbHAgb24gdGhlIHNwZWNpZmljIGNvbW1hbmQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJZiBnZW5lcmFsIGhlbHAgd2FzIHJlcXVlc3RlZCwgZGlzcGxheSBhIGxpc3Qgb2YgdGhlIGF2YWlsYWJsZQorY29tbWFuZHMgYXQgdGhpcyBwb2ludC4gVGhlIHRocmVlIGxldmVscyBhcmUgZGlzcGxheWVkIGluIHJldmVyc2UKK29yZGVyIC0gRmlyc3QgdGhlIGNvbW1hbmRzIHdoaWNoIGFyZSBzcGVjaWZpYyB0byB0aGUgY3VycmVudCB0eXBlCisoSWYgYSBjdXJyZW50IHR5cGUgaXMgZGVmaW5lZCksIHRoZW4gdGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcyAoSWYKK3dlIGRlY2lkZWQgdGhhdCB0aGUgZmlsZXN5c3RlbSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFuIGV4dDIKK2ZpbGVzeXN0ZW0pLCB0aGVuIHRoZSBnZW5lcmFsIGNvbW1hbmRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJRGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBFWFQyRUQgLSBDdXJyZW50IHZlcnNpb24sIGdlbmVyYWwKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9qZWN0LCBldGMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L09yZGVyZWRMaXN0PgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgc2V0ZGV2aWNlIGNvbW1hbmQ8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNldGRldmljZTwvTGl0ZXJhbD4gY29tbWFuZHMgcmVzdWx0IGluIGNhbGxpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0Jmxvd2JhcjtkZXZpY2U8L0xpdGVyYWw+CitmdW5jdGlvbi4gVGhlIGFsZ29yaXRobSBpczoKKzwvUGFyYT4KKworPFBhcmE+CisKKzxPcmRlcmVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJUGFyc2UgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudC4gSWYgaXQgaXNuJ3QgYXZhaWxhYmxlIHJlcG9ydCB0aGUKK2Vycm9yIGFuZCByZXR1cm4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDbG9zZSB0aGUgY3VycmVudCBvcGVuIGRldmljZSwgaWYgdGhlcmUgaXMgb25lLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJT3BlbiB0aGUgbmV3IGRldmljZSBpbiByZWFkLW9ubHkgbW9kZS4gVXBkYXRlIHRoZSBnbG9iYWwgdmFyaWFibGVzCis8TGl0ZXJhbCByZW1hcD0idHQiPmRldmljZSZsb3diYXI7bmFtZTwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGV2aWNlJmxvd2JhcjtoYW5kbGU8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJRGlzYWJsZSB3cml0ZSBhY2Nlc3MuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlFbXB0eSB0aGUgb2JqZWN0IG1lbW9yeS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVVucmVnaXN0ZXIgdGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcywgdXNpbmcKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZnJlZSZsb3diYXI7dXNlciZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVW5yZWdpc3RlciB0aGUgY3VycmVudCBvYmplY3RzLCB1c2luZyA8TGl0ZXJhbCByZW1hcD0idHQiPmZyZWUmbG93YmFyO3N0cnVjdCZsb3diYXI7ZGVzY3JpcHRvcnM8L0xpdGVyYWw+Cis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlDYWxsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0Jmxvd2JhcjtmaWxlJmxvd2JhcjtzeXN0ZW0mbG93YmFyO2luZm88L0xpdGVyYWw+IHRvIGF1dG8tZGV0ZWN0IGFuIGV4dDIgZmlsZXN5c3RlbQorYW5kIHNldCB0aGUgYmFzaWMgZmlsZXN5c3RlbSB2YWx1ZXMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBZGQgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YWx0ZXJuYXRlIGRlc2NyaXB0b3JzPC9MaXRlcmFsPiwgc3VwcGxpZWQgYnkgdGhlIHVzZXIuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlTZXQgdGhlIGRldmljZSBvZmZzZXQgdG8gdGhlIGZpbGVzeXN0ZW0gc3RhcnQgYnkgZGlzcGF0Y2hpbmcKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0b2Zmc2V0IDA8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJU2hvdyB0aGUgbmV3IGF2YWlsYWJsZSBjb21tYW5kcyBieSBkaXNwYXRjaGluZyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5oZWxwPC9MaXRlcmFsPgorY29tbWFuZC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkJhc2ljIG1hbmV1dmVyaW5nPC9UaXRsZT4KKworPFBhcmE+CitCYXNpYyBtYW5ldXZlcmluZyBpcyBkb25lIHVzaW5nIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNldG9mZnNldDwvTGl0ZXJhbD4gYW5kIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNldHR5cGU8L0xpdGVyYWw+Cit1c2VyIGNvbW1hbmRzLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0Jmxvd2JhcjtvZmZzZXQ8L0xpdGVyYWw+IGFjY2VwdHMgc29tZSBhbHRlcm5hdGl2ZSBmb3JtcyBvZiBzcGVjaWZ5aW5nIHRoZSBuZXcKK29mZnNldC4gVGhleSBhbGwgdWx0aW1hdGVseSBsZWFkIHRvIGNoYW5naW5nIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmRldmljZSZsb3diYXI7b2Zmc2V0PC9MaXRlcmFsPgorZ2xvYmFsIHZhcmlhYmxlIGFuZCBzZWVraW5nIHRvIHRoZSBuZXcgcG9zaXRpb24uIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0Jmxvd2JhcjtvZmZzZXQ8L0xpdGVyYWw+IGFsc28KK2NhbGxzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bG9hZCZsb3diYXI7dHlwZSZsb3diYXI7ZGF0YTwvTGl0ZXJhbD4gdG8gcmVhZCBhIGJsb2NrIGFoZWFkIG9mIHRoZSBuZXcgcG9zaXRpb24gaW50bwordGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+dHlwZSZsb3diYXI7ZGF0YTwvTGl0ZXJhbD4gZ2xvYmFsIHZhcmlhYmxlLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0Jmxvd2Jhcjt0eXBlPC9MaXRlcmFsPiB3aWxsIHBvaW50IHRoZSBnbG9iYWwgdmFyaWFibGUgPExpdGVyYWwgcmVtYXA9InR0Ij5jdXJyZW50Jmxvd2Jhcjt0eXBlPC9MaXRlcmFsPiB0byB0aGUKK2NvcnJlY3QgZW50cnkgaW4gdGhlIGRvdWJsZSBsaW5rZWQgbGlzdCBvZiB0aGUga25vd24gb2JqZWN0cy4gSWYgdGhlCityZXF1ZXN0ZWQgdHlwZSBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPmhleDwvTGl0ZXJhbD4gb3IgPExpdGVyYWwgcmVtYXA9InR0Ij5ub25lPC9MaXRlcmFsPiwgPExpdGVyYWwgcmVtYXA9InR0Ij5jdXJyZW50Jmxvd2Jhcjt0eXBlPC9MaXRlcmFsPiB3aWxsIGJlCitpbml0aWFsaXplZCB0byA8TGl0ZXJhbCByZW1hcD0idHQiPk5VTEw8L0xpdGVyYWw+LiA8TGl0ZXJhbCByZW1hcD0idHQiPnNldCZsb3diYXI7dHlwZTwvTGl0ZXJhbD4gd2lsbCBhbHNvIGRpc3BhdGNoIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdzwvTGl0ZXJhbD4sCitzbyB0aGF0IHRoZSBvYmplY3QgZGF0YSB3aWxsIGJlIHJlLWZvcm1hdHRlZCBpbiB0aGUgbmV3IGZvcm1hdC4KKzwvUGFyYT4KKworPFBhcmE+CitXaGVuIGVkaXRpbmcgYW4gZXh0MiBmaWxlc3lzdGVtLCBpdCBpcyBub3QgaW50ZW5kZWQgdGhhdCB0aG9zZSBjb21tYW5kcyB3aWxsCitiZSB1c2VkIGRpcmVjdGx5LCBhbmQgaXQgaXMgdXN1YWxseSBub3QgcmVxdWlyZWQuIE15IGltcGxlbWVudGF0aW9uIG9mIHRoZQorZXh0MiBsYXllciwgb24gdGhlIG90aGVyIGhhbmQsIHVzZXMgdGhpcyBsb3dlciBsZXZlbCBjb21tYW5kcyBvbiBjb3VudGxlc3MKK29jY2FzaW9ucy4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBkaXNwbGF5IGZ1bmN0aW9uczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGdlbmVyYWwgY29tbWFuZCB2ZXJzaW9uIG9mIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdzwvTGl0ZXJhbD4gaXMgaGFuZGxlZCBieSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPgorZnVuY3Rpb24uIFRoaXMgY29tbWFuZCBpcyBvdmVycmlkZGVuIGJ5IHZhcmlvdXMgb2JqZWN0cyB0byBwcm92aWRlIGEgZGlzcGxheQord2hpY2ggaXMgYmV0dGVyIHN1aXRlZCB0byB0aGUgb2JqZWN0LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBnZW5lcmFsIHNob3cgY29tbWFuZCB3aWxsIGZvcm1hdCB0aGUgZGF0YSBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUmbG93YmFyO2RhdGE8L0xpdGVyYWw+IGFjY29yZGluZwordG8gdGhlIHN0cnVjdHVyZSBkZWZpbml0aW9uIG9mIHRoZSBjdXJyZW50IHR5cGUgYW5kIHNob3cgaXQgb24gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdworcGFkPC9MaXRlcmFsPi4gSWYgdGhlcmUgaXMgbm8gY3VycmVudCB0eXBlLCB0aGUgZGF0YSB3aWxsIGJlIHNob3duIGFzIGEgc2ltcGxlIGhleAorZHVtcDsgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMsIGFsb25nIHdpdGggdGhlaXIgdmFsdWVzIHdpbGwgYmUgc2hvd24uCis8L1BhcmE+CisKKzxQYXJhPgorQSBjYWxsIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gaXMgYWxzbyBtYWRlIC0gPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93Jmxvd2JhcjtpbmZvPC9MaXRlcmFsPiB3aWxsIHByb3ZpZGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCBzdGF0aXN0aWNzPC9MaXRlcmFsPiBvbiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93Jmxvd2Jhcjt3aW5kb3c8L0xpdGVyYWw+LCBzdWNoIGFzIHRoZSBjdXJyZW50CitibG9jaywgY3VycmVudCB0eXBlLCBjdXJyZW50IG9mZnNldCBhbmQgY3VycmVudCBwYWdlLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnBndXA8L0xpdGVyYWw+IGFuZCA8TGl0ZXJhbCByZW1hcD0idHQiPnBnZG48L0xpdGVyYWw+IGdlbmVyYWwgY29tbWFuZHMganVzdCB1cGRhdGUgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPnNob3cmbG93YmFyO3BhZCZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gZ2xvYmFsIHZhcmlhYmxlIC0gV2UganVzdCBpbmNyZW1lbnQKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyZsb3diYXI7cGFkJmxvd2JhcjtpbmZvLmxpbmU8L0xpdGVyYWw+IHdpdGggdGhlIG51bWJlciBvZiBsaW5lcyBpbiB0aGUgc2NyZWVuIC0KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdyZsb3diYXI7cGFkJmxvd2JhcjtpbmZvLmRpc3BsYXkmbG93YmFyO2xpbmVzPC9MaXRlcmFsPiwgd2hpY2ggd2FzIGluaXRpYWxpemVkIGluCis8TGl0ZXJhbCByZW1hcD0idHQiPmluaXQmbG93YmFyO3dpbmRvd3M8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+Q2hhbmdpbmcgZGF0YTwvVGl0bGU+CisKKzxQYXJhPgorRGF0YSBjaGFuZ2UgaXMgZG9uZSBpbiBtZW1vcnkgb25seS4gQW4gdXBkYXRlIHRvIHRoZSBkaXNrIGlmIGZvbGxvd2VkIGJ5IGFuCitleHBsaWNpdCA8TGl0ZXJhbCByZW1hcD0idHQiPndyaXRlZGF0YTwvTGl0ZXJhbD4gY29tbWFuZCB0byB0aGUgZGlzay4gVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+d3JpdGUmbG93YmFyO2RhdGE8L0xpdGVyYWw+CitmdW5jdGlvbiBzaW1wbGUgY2FsbHMgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+d3JpdGUmbG93YmFyO3R5cGUmbG93YmFyO2RhdGE8L0xpdGVyYWw+IGZ1bmN0aW9uLCBvdXRsaW5lZCBlYXJsaWVyLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNldDwvTGl0ZXJhbD4gY29tbWFuZCBpcyB1c2VkIGZvciBjaGFuZ2luZyB0aGUgZGF0YS4KKzwvUGFyYT4KKworPFBhcmE+CitJZiB0aGVyZSBpcyBubyBjdXJyZW50IHR5cGUsIGNvbnRyb2wgaXMgcGFzc2VkIHRvIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmhleCZsb3diYXI7c2V0PC9MaXRlcmFsPiBmdW5jdGlvbiwKK3doaWNoIHRyZWF0cyB0aGUgZGF0YSBhcyBhIGJsb2NrIG9mIGJ5dGVzIGFuZCB1c2VzIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlJmxvd2JhcjtkYXRhLm9mZnNldCZsb3diYXI7aW4mbG93YmFyO2Jsb2NrPC9MaXRlcmFsPiB2YXJpYWJsZSB0byB3cml0ZSB0aGUgbmV3IHRleHQgb3IgaGV4IHN0cmluZwordG8gdGhlIGNvcnJlY3QgcGxhY2UgaW4gdGhlIGJsb2NrLgorPC9QYXJhPgorCis8UGFyYT4KK0lmIGEgY3VycmVudCB0eXBlIGlzIGRlZmluZWQsIHRoZSByZXF1ZXN0ZWQgdmFyaWFibGUgaXMgc2VhcmNoZWQgaW4gdGhlCitjdXJyZW50IG9iamVjdCwgYW5kIHRoZSBkZXNpcmVkIG5ldyB2YWx1ZWQgaXMgZW50ZXJlZC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5lbmFibGV3cml0ZTwvTGl0ZXJhbD4gY29tbWFuZHMganVzdCBzZXRzIHRoZSBnbG9iYWwgdmFyaWFibGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+d3JpdGUmbG93YmFyO2FjY2VzczwvTGl0ZXJhbD4gdG8gPExpdGVyYWwgcmVtYXA9InR0Ij4xPC9MaXRlcmFsPiBhbmQgcmUtb3BlbnMgdGhlIGZpbGVzeXN0ZW0gaW4gcmVhZC13cml0ZQorbW9kZSwgaWYgcG9zc2libGUuCis8L1BhcmE+CisKKzxQYXJhPgorSWYgdGhlIGN1cnJlbnQgdHlwZSBpcyBOVUxMLCBhIGhleC1tb2RlIGlzIGFzc3VtZWQgLSBUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5uZXh0PC9MaXRlcmFsPiBhbmQKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+cHJldjwvTGl0ZXJhbD4gY29tbWFuZHMgd2lsbCBqdXN0IHVwZGF0ZSA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUmbG93YmFyO2RhdGEub2Zmc2V0Jmxvd2JhcjtpbiZsb3diYXI7YmxvY2s8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KK0lmIHRoZSBjdXJyZW50IHR5cGUgaXMgbm90IE5VTEwsIHRoZSBUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5uZXh0PC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5wcmV2PC9MaXRlcmFsPiBjb21tYW5kCithcmUgdXN1YWxseSBvdmVycmlkZGVuIGFueXdheS4gSWYgdGhleSBhcmUgbm90IG92ZXJyaWRkZW4sIGl0IHdpbGwgYmUgYXNzdW1lZAordGhhdCB0aGUgdXNlciBpcyBlZGl0aW5nIGFuIGFycmF5IG9mIHN1Y2ggb2JqZWN0cywgYW5kIHRoZXkgd2lsbCBqdXN0IHBhc3MKK3RvIHRoZSBuZXh0IC8gcHJldiBlbGVtZW50IGJ5IGRpc3BhdGNoaW5nIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0b2Zmc2V0PC9MaXRlcmFsPiB1c2luZyB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0b2Zmc2V0IHR5cGUgKyAvIC0gWDwvTGl0ZXJhbD4gc3ludGF4LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+VGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcyBhcmUgY29udGFpbmVkIGluIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDImbG93YmFyO2dlbmVyYWwmbG93YmFyO2NvbW1hbmRzPC9MaXRlcmFsPgorZ2xvYmFsIHZhcmlhYmxlICh3aGljaCBpcyBvZiB0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0IHN0cnVjdCZsb3diYXI7Y29tbWFuZHM8L0xpdGVyYWw+KS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgaGFuZGxpbmcgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBpbiB0aGUgc291cmNlIGZpbGUgPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyJmxvd2Jhcjtjb20uYzwvTGl0ZXJhbD4uCitJIHdpbGwgaW5jbHVkZSB0aGUgZW50aXJlIHNvdXJjZSBjb2RlIHNpbmNlIGl0IGlzIHJlbGF0aXZlbHkgc2hvcnQuCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgc3VwZXIgY29tbWFuZDwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHN1cGVyIGNvbW1hbmQganVzdCAiYnJpbmdzIHRoZSB1c2VyIiB0byB0aGUgbWFpbiBzdXBlcmJsb2NrIGFuZCBzZXQgdGhlCit0eXBlIHRvIGV4dDImbG93YmFyO3N1cGVyJmxvd2JhcjtibG9jay4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHRyaXZpYWw6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+Cit2b2lkIHR5cGVfZXh0Ml9fX3N1cGVyIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwljaGFyIGJ1ZmZlciBbODBdOworCQorCXN1cGVyX2luZm8uY29weV9udW09MDsKKwlzcHJpbnRmIChidWZmZXIsInNldG9mZnNldCAlbGQiLGZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2tfb2Zmc2V0KTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzcHJpbnRmIChidWZmZXIsInNldHR5cGUgZXh0Ml9zdXBlcl9ibG9jayIpO2Rpc3BhdGNoIChidWZmZXIpOworfQorPC9Qcm9ncmFtTGlzdGluZz4KKworSXQgaW52b2x2ZXMgb25seSBzZXR0aW5nIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmNvcHkmbG93YmFyO251bTwvTGl0ZXJhbD4gdmFyaWFibGUgdG8gaW5kaWNhdGUgdGhlIG1haW4KK2NvcHksIGRpc3BhdGNoaW5nIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRvZmZzZXQ8L0xpdGVyYWw+IGNvbW1hbmQgdG8gcmVhY2ggdGhlIHN1cGVyYmxvY2ssIGFuZAorZGlzcGF0Y2hpbmcgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnNldHR5cGU8L0xpdGVyYWw+IHRvIGVuYWJsZSB0aGUgc3VwZXJibG9jayBzcGVjaWZpYyBjb21tYW5kcy4KK1RoaXMgbGFzdCBjb21tYW5kIHdpbGwgYWxzbyBjYWxsIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnNob3c8L0xpdGVyYWw+IGNvbW1hbmQgb2YgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDImbG93YmFyO3N1cGVyJmxvd2JhcjtibG9jazwvTGl0ZXJhbD4gdHlwZSwgdGhyb3VnaCBkaXNwYXRjaGluZyBhdCB0aGUgZ2VuZXJhbCBjb21tYW5kCis8TGl0ZXJhbCByZW1hcD0idHQiPnNldHR5cGU8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIGdyb3VwIGNvbW1hbmQ8L1RpdGxlPgorCis8UGFyYT4KK1RoZSBncm91cCBjb21tYW5kIHdpbGwgYnJpbmcgdGhlIHVzZXIgdG8gdGhlIHNwZWNpZmllZCBncm91cCBkZXNjcmlwdG9yIGluCit0aGUgbWFpbiBjb3B5IG9mIHRoZSBncm91cCBkZXNjcmlwdG9ycy4gVGhlIHR5cGUgd2lsbCBiZSBzZXQgdG8KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MiZsb3diYXI7Z3JvdXAmbG93YmFyO2Rlc2M8L0xpdGVyYWw+OgorCis8UHJvZ3JhbUxpc3Rpbmc+Cit2b2lkIHR5cGVfZXh0Ml9fX2dyb3VwIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGdyb3VwX251bT0wOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKwkKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlncm91cF9udW09YXRvbCAoYnVmZmVyKTsKKwl9CisKKwlncm91cF9pbmZvLmNvcHlfbnVtPTA7Z3JvdXBfaW5mby5ncm91cF9udW09MDsKKwlzcHJpbnRmIChidWZmZXIsInNldG9mZnNldCAlbGQiLGZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQpO2Rpc3BhdGNoIChidWZmZXIpOworCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBleHQyX2dyb3VwX2Rlc2MiKTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzcHJpbnRmIChidWZmZXIsImVudHJ5ICVsZCIsZ3JvdXBfbnVtKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKzwvUHJvZ3JhbUxpc3Rpbmc+CisKK1RoZSBpbXBsZW1lbnRhdGlvbiBpcyBhcyB0cml2aWFsIGFzIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnN1cGVyPC9MaXRlcmFsPiBpbXBsZW1lbnRhdGlvbi4gTm90ZQordGhlIHVzZSBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5lbnRyeTwvTGl0ZXJhbD4gY29tbWFuZCwgd2hpY2ggaXMgYSBjb21tYW5kIG9mIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyJmxvd2Jhcjtncm91cCZsb3diYXI7ZGVzYzwvTGl0ZXJhbD4gb2JqZWN0LCB0byBwYXNzIHRvIHRoZSBjb3JyZWN0IGdyb3VwIGRlc2NyaXB0b3IuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgY2QgY29tbWFuZDwvVGl0bGU+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Y2Q8L0xpdGVyYWw+IGNvbW1hbmQgcGVyZm9ybXMgdGhlIHVzdWFsIGNkIGZ1bmN0aW9uLiBUaGUgcGF0aCB0byB0aGUgZ2xvYmFsCitjZCBjb21tYW5kIGlzIGEgcGF0aCBmcm9tIDxMaXRlcmFsIHJlbWFwPSJ0dCI+LzwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorPExpdGVyYWwgcmVtYXA9InR0Ij5UaGlzIGlzIG9uZSBvZiB0aGUgYmVzdCBleGFtcGxlcyBvZiB0aGUgcG93ZXIgb2YgdGhlIG9iamVjdCBvcmllbnRlZAorZGVzaWduIGFuZCBvZiB0aGUgZGlzcGF0Y2hpbmcgbWVjaGFuaXNtLiBUaGUgb3BlcmF0aW9uIGlzIGNvbXBsaWNhdGVkLCB5ZXQgdGhlCitpbXBsZW1lbnRhdGlvbiBpcyBzdXJwcmlzaW5nbHkgc2hvcnQhPC9MaXRlcmFsPgorPC9QYXJhPgorCis8UGFyYT4KKworPFByb2dyYW1MaXN0aW5nPgordm9pZCB0eXBlX2V4dDJfX19jZCAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJY2hhciB0ZW1wIFs4MF0sYnVmZmVyIFs4MF0sKnB0cjsKKwkKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTm8gYXJndW1lbnQgc3BlY2lmaWVkXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkKKwlpZiAoYnVmZmVyIFswXSAhPSAnLycpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gVXNlIGEgZnVsbCBwYXRobmFtZSAoYmVnaW4gd2l0aCAnLycpXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJZGlzcGF0Y2ggKCJzdXBlciIpO2Rpc3BhdGNoICgiZ3JvdXAiKTtkaXNwYXRjaCAoImlub2RlIik7CisJZGlzcGF0Y2ggKCJuZXh0Iik7ZGlzcGF0Y2ggKCJkaXIiKTsKKwlpZiAoYnVmZmVyIFsxXSAhPSAwKSB7CisJCXNwcmludGYgKHRlbXAsImNkICVzIixidWZmZXIrMSk7ZGlzcGF0Y2ggKHRlbXApOworCX0KK30KKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPFBhcmE+CitOb3RlIHRoZSBudW1iZXIgb2YgdGhlIGRpc3BhdGNoIGNhbGxzISAKKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnN1cGVyPC9MaXRlcmFsPiBpcyB1c2VkIHRvIGdldCB0byB0aGUgc3VwZXJibG9jay4gPExpdGVyYWwgcmVtYXA9InR0Ij5ncm91cDwvTGl0ZXJhbD4gdG8gZ2V0IHRvIHRoZQorZmlyc3QgZ3JvdXAgZGVzY3JpcHRvci4gPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZTwvTGl0ZXJhbD4gYnJpbmdzIHVzIHRvIHRoZSBmaXJzdCBpbm9kZSAtIFRoZSBiYWQKK2Jsb2NrcyBpbm9kZS4gQSA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQ8L0xpdGVyYWw+IGlzIGNvbW1hbmQgdG8gcGFzcyB0byB0aGUgcm9vdCBkaXJlY3RvcnkgaW5vZGUsCithIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyPC9MaXRlcmFsPiBjb21tYW5kICJlbnRlcnMiIHRoZSBkaXJlY3RvcnksIGFuZCB0aGVuIHdlIGxldCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5vYmplY3QKK3NwZWNpZmljIGNkIGNvbW1hbmQ8L0xpdGVyYWw+IHRvIHRha2UgdXMgZnJvbSB0aGVyZSAoVGhlIG9iamVjdCBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPmRpcjwvTGl0ZXJhbD4sIHNvCit0aGF0IDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+IHdpbGwgY2FsbCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5jZDwvTGl0ZXJhbD4gY29tbWFuZCBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+IHR5cGUpLgorTm90ZSB0aGF0IGEgc3ltYm9saWMgbGluayBmb2xsb3dpbmcgY291bGQgYnJpbmcgdXMgYmFjayB0byB0aGUgcm9vdCBkaXJlY3RvcnksCit0aHVzIHRoZSBpbm5vY2VudCBjYWxscyBhYm92ZSB0cmVhdHMgbmljZWx5IHN1Y2ggYSByZWN1cnNpdmUgY2FzZSEKKzwvUGFyYT4KKworPFBhcmE+CitJIGZlZWwgdGhhdCB0aGUgYWJvdmUgaXMgPExpdGVyYWwgcmVtYXA9InR0Ij5pbnR1aXRpdmU8L0xpdGVyYWw+IC0gSSB3YXMgZXhwcmVzc2luZyBteXNlbGYgImluIHRoZQorbGFuZ3VhZ2UiIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0gLSAoR28gdG8gdGhlIGlub2RlLCBldGMpLCBhbmQgdGhlIGNvZGUgd2FzCit3cml0dGVuIGV4YWN0bHkgaW4gdGhpcyBzcGlyaXQhCis8L1BhcmE+CisKKzxQYXJhPgorSSBjYW4gd3JpdGUgbW9yZSBhdCB0aGlzIHBvaW50LCBidXQgSSBndWVzcyBJIGFtIGFscmVhZHkgYSBiaXQgY2FycmllZAorYXdheSB3aXRoIHRoZSBzZWxmIGNvbXBsaW1lbnRzIDotKQorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+VGhlIHN1cGVyYmxvY2s8L1RpdGxlPgorCis8UGFyYT4KK1RoaXMgc2VjdGlvbiBkZXRhaWxzIHRoZSBoYW5kbGluZyBvZiB0aGUgc3VwZXJibG9jay4KKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBzdXBlcmJsb2NrIHZhcmlhYmxlczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHN1cGVyYmxvY2sgb2JqZWN0IGlzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MiZsb3diYXI7c3VwZXImbG93YmFyO2Jsb2NrPC9MaXRlcmFsPi4gVGhlIGRlZmluaXRpb24gaXMganVzdAordGFrZW4gZnJvbSB0aGUga2VybmVsIGV4dDIgbWFpbiBpbmNsdWRlIGZpbGUgLSAvdXNyL2luY2x1ZGUvbGludXgvZXh0MiZsb3diYXI7ZnMuaC4KKzxGT09UTk9URT4KKworPFBhcmE+CitUaG9zZSBsaW5lcyBvZiBzb3VyY2UgYXJlIGNvcHlyaWdodGVkIGJ5IDxMaXRlcmFsIHJlbWFwPSJ0dCI+UmVteSBDYXJkPC9MaXRlcmFsPiAtIFRoZSBhdXRob3Igb2YgdGhlCitleHQyIGZpbGVzeXN0ZW0sIGFuZCBieSA8TGl0ZXJhbCByZW1hcD0idHQiPkxpbnVzIFRvcnZhbGRzPC9MaXRlcmFsPiAtIFRoZSBmaXJzdCBhdXRob3Igb2YgdGhlIExpbnV4CitvcGVyYXRpbmcgc3lzdGVtLiBQbGVhc2UgY3Jvc3MgcmVmZXJlbmNlIHRoZSBzZWN0aW9uIEFja25vd2xlZGdtZW50cyBmb3IgdGhlCitmdWxsIGNvcHlyaWdodC4KKzwvUGFyYT4KKworPC9GT09UTk9URT4KKworCisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHsKKwlfX3UzMglzX2lub2Rlc19jb3VudDsJCS8qIElub2RlcyBjb3VudCAqLworCV9fdTMyCXNfYmxvY2tzX2NvdW50OwkJLyogQmxvY2tzIGNvdW50ICovCisJX191MzIJc19yX2Jsb2Nrc19jb3VudDsJLyogUmVzZXJ2ZWQgYmxvY2tzIGNvdW50ICovCisJX191MzIJc19mcmVlX2Jsb2Nrc19jb3VudDsJLyogRnJlZSBibG9ja3MgY291bnQgKi8KKwlfX3UzMglzX2ZyZWVfaW5vZGVzX2NvdW50OwkvKiBGcmVlIGlub2RlcyBjb3VudCAqLworCV9fdTMyCXNfZmlyc3RfZGF0YV9ibG9jazsJLyogRmlyc3QgRGF0YSBCbG9jayAqLworCV9fdTMyCXNfbG9nX2Jsb2NrX3NpemU7CS8qIEJsb2NrIHNpemUgKi8KKwlfX3MzMglzX2xvZ19mcmFnX3NpemU7CS8qIEZyYWdtZW50IHNpemUgKi8KKwlfX3UzMglzX2Jsb2Nrc19wZXJfZ3JvdXA7CS8qICMgQmxvY2tzIHBlciBncm91cCAqLworCV9fdTMyCXNfZnJhZ3NfcGVyX2dyb3VwOwkvKiAjIEZyYWdtZW50cyBwZXIgZ3JvdXAgKi8KKwlfX3UzMglzX2lub2Rlc19wZXJfZ3JvdXA7CS8qICMgSW5vZGVzIHBlciBncm91cCAqLworCV9fdTMyCXNfbXRpbWU7CQkvKiBNb3VudCB0aW1lICovCisJX191MzIJc193dGltZTsJCS8qIFdyaXRlIHRpbWUgKi8KKwlfX3UxNglzX21udF9jb3VudDsJCS8qIE1vdW50IGNvdW50ICovCisJX19zMTYJc19tYXhfbW50X2NvdW50OwkvKiBNYXhpbWFsIG1vdW50IGNvdW50ICovCisJX191MTYJc19tYWdpYzsJCS8qIE1hZ2ljIHNpZ25hdHVyZSAqLworCV9fdTE2CXNfc3RhdGU7CQkvKiBGaWxlIHN5c3RlbSBzdGF0ZSAqLworCV9fdTE2CXNfZXJyb3JzOwkJLyogQmVoYXZpb3Igd2hlbiBkZXRlY3RpbmcgZXJyb3JzICovCisJX191MTYJc19wYWQ7CisJX191MzIJc19sYXN0Y2hlY2s7CQkvKiB0aW1lIG9mIGxhc3QgY2hlY2sgKi8KKwlfX3UzMglzX2NoZWNraW50ZXJ2YWw7CS8qIG1heC4gdGltZSBiZXR3ZWVuIGNoZWNrcyAqLworCV9fdTMyCXNfY3JlYXRvcl9vczsJCS8qIE9TICovCisJX191MzIJc19yZXZfbGV2ZWw7CQkvKiBSZXZpc2lvbiBsZXZlbCAqLworCV9fdTE2CXNfZGVmX3Jlc3VpZDsJCS8qIERlZmF1bHQgdWlkIGZvciByZXNlcnZlZCBibG9ja3MgKi8KKwlfX3UxNglzX2RlZl9yZXNnaWQ7CQkvKiBEZWZhdWx0IGdpZCBmb3IgcmVzZXJ2ZWQgYmxvY2tzICovCisJX191MzIJc19yZXNlcnZlZFswXTsJCS8qIFBhZGRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2sgKi8KKwlfX3UzMglzX3Jlc2VydmVkWzFdOwkJLyogUGFkZGluZyB0byB0aGUgZW5kIG9mIHRoZSBibG9jayAqLworCS4KKwkuCisJLgorCV9fdTMyCXNfcmVzZXJ2ZWRbMjM0XTsJLyogUGFkZGluZyB0byB0aGUgZW5kIG9mIHRoZSBibG9jayAqLworfTsKKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPFBhcmE+CitOb3RlIHRoYXQgSSA8TGl0ZXJhbCByZW1hcD0idHQiPmV4cGFuZGVkPC9MaXRlcmFsPiB0aGUgYXJyYXkgZHVlIHRvIG15IHByaW1pdGl2ZSBwYXJzZXIKK2ltcGxlbWVudGF0aW9uLiBUaGUgdmFyaW91cyBmaWVsZHMgYXJlIGRlc2NyaWJlZCBpbiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij50ZWNobmljYWwKK2RvY3VtZW50PC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBzdXBlcmJsb2NrIGNvbW1hbmRzPC9UaXRsZT4KKworPFBhcmE+CitUaGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlIGNvbW1hbmRzIGF2YWlsYWJsZSBpbiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyJmxvd2JhcjtzdXBlciZsb3diYXI7YmxvY2s8L0xpdGVyYWw+Cit0eXBlLiBUaGV5IGFsbCBhcHBlYXIgaW4gPExpdGVyYWwgcmVtYXA9InR0Ij5zdXBlciZsb3diYXI7Y29tLmM8L0xpdGVyYWw+Cis8L1BhcmE+CisKKzxTZWN0Mz4KKzxUaXRsZT5UaGUgc2hvdyBjb21tYW5kPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiBjb21tYW5kIGlzIG92ZXJyaWRkZW4gaGVyZSBpbiBvcmRlciB0byBwcm92aWRlIG1vcmUKK2luZm9ybWF0aW9uIHRoYW4ganVzdCB0aGUgbGlzdCBvZiB2YXJpYWJsZXMuIEEgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiBjb21tYW5kIHdpbGwgZW5kCit1cCBpbiBjYWxsaW5nIDxMaXRlcmFsIHJlbWFwPSJ0dCI+dHlwZSZsb3diYXI7c3VwZXImbG93YmFyO2Jsb2NrJmxvd2JhcjsmbG93YmFyOyZsb3diYXI7c2hvdzwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGZpcnN0IHRoaW5nIHRoYXQgd2UgZG8gaXMgY2FsbGluZyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsIHNob3cgY29tbWFuZDwvTGl0ZXJhbD4gaW4KK29yZGVyIHRvIGRpc3BsYXkgdGhlIGxpc3Qgb2YgdmFyaWFibGVzLgorPC9QYXJhPgorCis8UGFyYT4KK1dlIHRoZW4gYWRkIHNvbWUgaW50ZXJwcmV0YXRpb24gdG8gdGhlIHZhcmlvdXMgbGluZXMgdG8gbWFrZSB0aGUgZGF0YQorc29tZXdoYXQgbW9yZSBpbnR1aXRpdmUgKEV4cGFuc2lvbiBvZiB0aGUgdGltZSB2YXJpYWJsZXMgYW5kIHRoZSBjcmVhdG9yCitvcGVyYXRpbmcgc3lzdGVtIGNvZGUsIGZvciBleGFtcGxlKS4KKzwvUGFyYT4KKworPFBhcmE+CitXZSBhbHNvIGRpc3BsYXkgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YmFja3VwIGNvcHkgbnVtYmVyPC9MaXRlcmFsPiBvZiB0aGUgc3VwZXJibG9jayBpbiB0aGUgc3RhdHVzCit3aW5kb3cuIFRoaXMgY29weSBudW1iZXIgaXMgc2F2ZWQgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3VwZXImbG93YmFyO2luZm88L0xpdGVyYWw+IGdsb2JhbCB2YXJpYWJsZSAtCis8TGl0ZXJhbCByZW1hcD0idHQiPnN1cGVyJmxvd2JhcjtpbmZvLmNvcHkmbG93YmFyO251bTwvTGl0ZXJhbD4uIEN1cnJlbnRseSwgdGhpcyBpcyB0aGUgb25seSB2YXJpYWJsZSB0aGVyZSAuLi4KK2J1dCB0aGlzIHR5cGUgb2YgaW50ZXJuYWwgdmFyaWFibGUgc2F2aW5nIGlzIHR5cGljYWwgdGhyb3VnaCBteQoraW1wbGVtZW50YXRpb24uCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzxTZWN0Mz4KKzxUaXRsZT5UaGUgYmFja3VwIGNvcGllcyBoYW5kbGluZyBjb21tYW5kczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Y3VycmVudCBjb3B5IG51bWJlcjwvTGl0ZXJhbD4gaXMgYXZhaWxhYmxlIGluIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3VwZXImbG93YmFyO2luZm8uY29weSZsb3diYXI7bnVtPC9MaXRlcmFsPi4gSXQKK3dhcyBpbml0aWFsaXplZCBpbiB0aGUgZXh0MiBjb21tYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3VwZXI8L0xpdGVyYWw+LCBhbmQgaXMgdXNlZCBieSB0aGUgdmFyaW91cworc3VwZXJibG9jayByb3V0aW5lcy4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5nb2NvcHk8L0xpdGVyYWw+IHJvdXRpbmUgd2lsbCBwYXNzIHRvIGFub3RoZXIgY29weSBvZiB0aGUgc3VwZXJibG9jay4gVGhlCituZXcgZGV2aWNlIG9mZnNldCB3aWxsIGJlIGNvbXB1dGVkIHdpdGggdGhlIGFpZCBvZiB0aGUgdmFyaWFibGVzIGluIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlJmxvd2JhcjtzeXN0ZW0mbG93YmFyO2luZm88L0xpdGVyYWw+IHN0cnVjdHVyZS4gVGhlbiB0aGUgcm91dGluZSB3aWxsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzcGF0Y2g8L0xpdGVyYWw+IHRvCit0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRvZmZzZXQ8L0xpdGVyYWw+IGFuZCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiByb3V0aW5lcy4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRhY3RpdmVjb3B5PC9MaXRlcmFsPiByb3V0aW5lIHdpbGwganVzdCBzYXZlIHRoZSBjdXJyZW50IHN1cGVyYmxvY2sgZGF0YQoraW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUgb2YgdHlwZSA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDImbG93YmFyO3N1cGVyJmxvd2JhcjtibG9jazwvTGl0ZXJhbD4sIGFuZCB3aWxsIGRpc3BhdGNoCis8TGl0ZXJhbCByZW1hcD0idHQiPmdvY29weSAwPC9MaXRlcmFsPiB0byBwYXNzIHRvIHRoZSBtYWluIHN1cGVyYmxvY2suIFRoZW4gaXQgd2lsbCBwbGFjZSB0aGUgc2F2ZWQKK2RhdGEgaW4gcGxhY2Ugb2YgdGhlIGFjdHVhbCBkYXRhLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBhYm92ZSB0d28gY29tbWFuZHMgY2FuIGJlIHVzZWQgaWYgdGhlIG1haW4gc3VwZXJibG9jayBpcyBjb3JydXB0ZWQuCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgZ3JvdXAgZGVzY3JpcHRvcnM8L1RpdGxlPgorCis8UGFyYT4KK1RoZSBncm91cCBkZXNjcmlwdG9ycyBoYW5kbGluZyBtZWNoYW5pc20gYWxsb3dzIHRoZSB1c2VyIHRvIHRha2UgYSB0b3VyIGluCit0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgdGFibGUsIHN0b3BwaW5nIGF0IGVhY2ggcG9pbnQsIGFuZCBleGFtaW5pbmcgdGhlCityZWxldmFudCBpbm9kZSB0YWJsZSwgYmxvY2sgYWxsb2NhdGlvbiBtYXAgb3IgaW5vZGUgYWxsb2NhdGlvbiBtYXAgdGhyb3VnaAorZGlzcGF0Y2hpbmcgdG8gdGhlIHJlbGV2YW50IG9iamVjdHMuCis8L1BhcmE+CisKKzxQYXJhPgorU29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgYXZhaWxhYmxlIGluIHRoZSBnbG9iYWwKK3ZhcmlhYmxlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z3JvdXAmbG93YmFyO2luZm88L0xpdGVyYWw+LCB3aGljaCBpcyBvZiB0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0Jmxvd2Jhcjtncm91cCZsb3diYXI7aW5mbzwvTGl0ZXJhbD46Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3Qgc3RydWN0X2dyb3VwX2luZm8geworCXVuc2lnbmVkIGxvbmcgY29weV9udW07CisJdW5zaWduZWQgbG9uZyBncm91cF9udW07Cit9OworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Z3JvdXAmbG93YmFyO251bTwvTGl0ZXJhbD4gaXMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGRlc2NyaXB0b3IgaW4gdGhlIHRhYmxlLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Y29weSZsb3diYXI7bnVtPC9MaXRlcmFsPiBpcyB0aGUgbnVtYmVyIG9mIHRoZSBjdXJyZW50IGJhY2t1cCBjb3B5LgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIGdyb3VwIGRlc2NyaXB0b3IncyB2YXJpYWJsZXM8L1RpdGxlPgorCis8UGFyYT4KKworPFByb2dyYW1MaXN0aW5nPgorc3RydWN0IGV4dDJfZ3JvdXBfZGVzYworeworCV9fdTMyCWJnX2Jsb2NrX2JpdG1hcDsJCS8qIEJsb2NrcyBiaXRtYXAgYmxvY2sgKi8KKwlfX3UzMgliZ19pbm9kZV9iaXRtYXA7CQkvKiBJbm9kZXMgYml0bWFwIGJsb2NrICovCisJX191MzIJYmdfaW5vZGVfdGFibGU7CQkJLyogSW5vZGVzIHRhYmxlIGJsb2NrICovCisJX191MTYJYmdfZnJlZV9ibG9ja3NfY291bnQ7CQkvKiBGcmVlIGJsb2NrcyBjb3VudCAqLworCV9fdTE2CWJnX2ZyZWVfaW5vZGVzX2NvdW50OwkJLyogRnJlZSBpbm9kZXMgY291bnQgKi8KKwlfX3UxNgliZ191c2VkX2RpcnNfY291bnQ7CQkvKiBEaXJlY3RvcmllcyBjb3VudCAqLworCV9fdTE2CWJnX3BhZDsKKwlfX3UzMgliZ19yZXNlcnZlZFszXTsKK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGZpcnN0IHRocmVlIHZhcmlhYmxlcyBhcmUgdXNlZCB0byBwcm92aWRlIHRoZSBsaW5rcyB0byB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YmxvY2tiaXRtYXAsIGlub2RlYml0bWFwIGFuZCBpbm9kZTwvTGl0ZXJhbD4gb2JqZWN0cy4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPk1vdmVtZW50IGluIHRoZSB0YWJsZTwvVGl0bGU+CisKKzxQYXJhPgorTW92ZW1lbnQgaW4gdGhlIGdyb3VwIGRlc2NyaXB0b3JzIHRhYmxlIGlzIGRvbmUgdXNpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bmV4dCwgcHJldiBhbmQKK2VudHJ5PC9MaXRlcmFsPiBjb21tYW5kcy4gTm90ZSB0aGF0IHRoZSBmaXJzdCB0d28gY29tbWFuZHMgPExpdGVyYWwgcmVtYXA9InR0Ij5vdmVycmlkZTwvTGl0ZXJhbD4gdGhlCitnZW5lcmFsIGNvbW1hbmRzIG9mIHRoZSBzYW1lIG5hbWUuIFRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQgYW5kIHByZXY8L0xpdGVyYWw+IGNvbW1hbmQgYXJlIGp1c3QKK2NhbGxpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZW50cnk8L0xpdGVyYWw+IGZ1bmN0aW9uIHRvIGRvIHRoZSBqb2IuIEkgd2lsbCBzaG93IDxMaXRlcmFsIHJlbWFwPSJ0dCI+bmV4dDwvTGl0ZXJhbD4sCitmb3IgZXhhbXBsZToKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpCisgCit7CisJbG9uZyBlbnRyeV9vZmZzZXQ9MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisJCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJZW50cnlfb2Zmc2V0PWF0b2wgKGJ1ZmZlcik7CisJfQorCisJc3ByaW50ZiAoYnVmZmVyLCJlbnRyeSAlbGQiLGdyb3VwX2luZm8uZ3JvdXBfbnVtK2VudHJ5X29mZnNldCk7CisJZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9Cis8L1Byb2dyYW1MaXN0aW5nPgorCitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5lbnRyeTwvTGl0ZXJhbD4gZnVuY3Rpb24gaXMgYWxzbyBzaW1wbGUgLSBJdCBqdXN0IGNhbGN1bGF0ZXMgdGhlIG9mZnNldAordXNpbmcgdGhlIGluZm9ybWF0aW9uIGluIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z3JvdXAmbG93YmFyO2luZm88L0xpdGVyYWw+IGFuZCBpbiA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGUmbG93YmFyO3N5c3RlbSZsb3diYXI7aW5mbzwvTGl0ZXJhbD4sCithbmQgdXNlcyB0aGUgdXN1YWwgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRvZmZzZXQgLyBzaG93PC9MaXRlcmFsPiBwYWlyLiAKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBzaG93IGNvbW1hbmQ8L1RpdGxlPgorCis8UGFyYT4KK0FzIHVzdWFsLCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiBjb21tYW5kIGlzIG92ZXJyaWRkZW4uIFRoZSBpbXBsZW1lbnRhdGlvbiBpcworc2ltaWxhciB0byB0aGUgc3VwZXJibG9jaydzIHNob3cgaW1wbGVtZW50YXRpb24gLSBXZSBqdXN0IGNhbGwgdGhlIGdlbmVyYWwKK3Nob3cgY29tbWFuZCwgYW5kIGFkZCBzb21lIGluZm9ybWF0aW9uIGluIHRoZSBzdGF0dXMgd2luZG93IC0gVGhlIGNvbnRlbnRzIG9mCit0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5ncm91cCZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gc3RydWN0dXJlLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+TW92aW5nIGJldHdlZW4gYmFja3VwIGNvcGllczwvVGl0bGU+CisKKzxQYXJhPgorVGhpcyBpcyBkb25lIGV4YWN0bHkgbGlrZSB0aGUgc3VwZXJibG9jayBjYXNlLiBQbGVhc2UgcmVmZXIgdG8gZXhwbGFuYXRpb24KK3RoZXJlLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+TGlua3MgdG8gdGhlIGF2YWlsYWJsZSBmcmllbmRzPC9UaXRsZT4KKworPFBhcmE+CitGcm9tIGEgZ3JvdXAgZGVzY3JpcHRvciwgb25lIHR5cGljYWxseSB3YW50cyB0byByZWFjaCBhbiA8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlPC9MaXRlcmFsPiwgb3IKK29uZSBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5hbGxvY2F0aW9uIGJpdG1hcHM8L0xpdGVyYWw+LiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5vZGUsCitibG9ja2JpdG1hcCBvciBpbm9kZWJpdG1hcDwvTGl0ZXJhbD4gY29tbWFuZHMuIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBhZ2FpbiB0cml2aWFsCistIEdldCB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGdyb3VwIGRlc2NyaXB0b3IsIGluaXRpYWxpemUgdGhlCitzdHJ1Y3R1cmVzIG9mIHRoZSBuZXh0IHR5cGUsIGFuZCBpc3N1ZSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zZXRvZmZzZXQgLyBzZXR0eXBlPC9MaXRlcmFsPiBwYWlyLgorPC9QYXJhPgorCis8UGFyYT4KK0ZvciBleGFtcGxlLCBoZXJlIGlzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9ja2JpdG1hcDwvTGl0ZXJhbD4gY29tbWFuZDoKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19ibG9ja2JpdG1hcCAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJbG9uZyBibG9ja19iaXRtYXBfb2Zmc2V0OworCWNoYXIgYnVmZmVyIFs4MF07CisJCisJYmxvY2tfYml0bWFwX2luZm8uZW50cnlfbnVtPTA7CisJYmxvY2tfYml0bWFwX2luZm8uZ3JvdXBfbnVtPWdyb3VwX2luZm8uZ3JvdXBfbnVtOworCisJYmxvY2tfYml0bWFwX29mZnNldD10eXBlX2RhdGEudS50X2V4dDJfZ3JvdXBfZGVzYy5iZ19ibG9ja19iaXRtYXA7CisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgYmxvY2sgJWxkIixibG9ja19iaXRtYXBfb2Zmc2V0KTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzcHJpbnRmIChidWZmZXIsInNldHR5cGUgYmxvY2tfYml0bWFwIik7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgaW5vZGUgdGFibGU8L1RpdGxlPgorCis8UGFyYT4KK1RoZSBpbm9kZSBoYW5kbGluZyBlbmFibGVzIHRoZSB1c2VyIHRvIG1vdmUgaW4gdGhlIGlub2RlIHRhYmxlLCBlZGl0IHRoZQordmFyaW91cyBhdHRyaWJ1dGVzIG9mIHRoZSBpbm9kZSwgYW5kIGZvbGxvdyB0byB0aGUgbmV4dCBzdGFnZSAtIEEgZmlsZSBvciBhCitkaXJlY3RvcnkuCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgaW5vZGUgdmFyaWFibGVzPC9UaXRsZT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBleHQyX2lub2RlIHsKKwlfX3UxNglpX21vZGU7CQkvKiBGaWxlIG1vZGUgKi8KKwlfX3UxNglpX3VpZDsJCS8qIE93bmVyIFVpZCAqLworCV9fdTMyCWlfc2l6ZTsJCS8qIFNpemUgaW4gYnl0ZXMgKi8KKwlfX3UzMglpX2F0aW1lOwkvKiBBY2Nlc3MgdGltZSAqLworCV9fdTMyCWlfY3RpbWU7CS8qIENyZWF0aW9uIHRpbWUgKi8KKwlfX3UzMglpX210aW1lOwkvKiBNb2RpZmljYXRpb24gdGltZSAqLworCV9fdTMyCWlfZHRpbWU7CS8qIERlbGV0aW9uIFRpbWUgKi8KKwlfX3UxNglpX2dpZDsJCS8qIEdyb3VwIElkICovCisJX191MTYJaV9saW5rc19jb3VudDsJLyogTGlua3MgY291bnQgKi8KKwlfX3UzMglpX2Jsb2NrczsJLyogQmxvY2tzIGNvdW50ICovCisJX191MzIJaV9mbGFnczsJLyogRmlsZSBmbGFncyAqLworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCV9fdTMyICBsX2lfcmVzZXJ2ZWQxOworCQl9IGxpbnV4MTsKKwkJc3RydWN0IHsKKwkJCV9fdTMyICBoX2lfdHJhbnNsYXRvcjsKKwkJfSBodXJkMTsKKwl9IG9zZDE7CQkJCS8qIE9TIGRlcGVuZGVudCAxICovCisJX191MzIJaV9ibG9ja1tFWFQyX05fQkxPQ0tTXTsJLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIJaV92ZXJzaW9uOwkJLyogRmlsZSB2ZXJzaW9uIChmb3IgTkZTKSAqLworCV9fdTMyCWlfZmlsZV9hY2w7CQkvKiBGaWxlIEFDTCAqLworCV9fdTMyCWlfZGlyX2FjbDsJCS8qIERpcmVjdG9yeSBBQ0wgKi8KKwlfX3UzMglpX2ZhZGRyOwkJLyogRnJhZ21lbnQgYWRkcmVzcyAqLworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCV9fdTgJbF9pX2ZyYWc7CS8qIEZyYWdtZW50IG51bWJlciAqLworCQkJX191OAlsX2lfZnNpemU7CS8qIEZyYWdtZW50IHNpemUgKi8KKwkJCV9fdTE2CWlfcGFkMTsKKwkJCV9fdTMyCWxfaV9yZXNlcnZlZDJbMl07CisJCX0gbGludXgyOworCQlzdHJ1Y3QgeworCQkJX191OAloX2lfZnJhZzsJLyogRnJhZ21lbnQgbnVtYmVyICovCisJCQlfX3U4CWhfaV9mc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAqLworCQkJX191MTYJaF9pX21vZGVfaGlnaDsKKwkJCV9fdTE2CWhfaV91aWRfaGlnaDsKKwkJCV9fdTE2CWhfaV9naWRfaGlnaDsKKwkJCV9fdTMyCWhfaV9hdXRob3I7CisJCX0gaHVyZDI7CisJfSBvc2QyOwkJCQkvKiBPUyBkZXBlbmRlbnQgMiAqLworfTsKKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgYWJvdmUgaXMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGRlZmluaXRpb24uIFdlIGNhbiBzZWUgdGhhdCB0aGUgaW5vZGUKK3N1cHBvcnRzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+T3BlcmF0aW5nIHN5c3RlbXMgc3BlY2lmaWMgc3RydWN0dXJlczwvTGl0ZXJhbD4uIEluIGFkZGl0aW9uIHRvIHRoZQorZXhwYW5zaW9uIG9mIHRoZSBhcnJheXMsIEkgaGF2ZSA8TGl0ZXJhbCByZW1hcD0idHQiPiJmbGF0dGVuZWQ8L0xpdGVyYWw+IHRoZSBpbm9kZSB0byBzdXBwb3J0IG9ubHkKK3RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPkxpbnV4PC9MaXRlcmFsPiBkZWNsYXJhdGlvbi4gSXQgc2VlbWVkIHRoYXQgdGhpcyBvbmUgb2NjYXNpb24gb2YgbXVsdGlwbGUKK3ZhcmlhYmxlIGFsaWFzZXMgZGlkbid0IGp1c3RpZnkgdGhlIGNvbXBsaWNhdGlvbiBvZiBnZW5lcmFsbHkgc3VwcG9ydGluZworYWxpYXNlcy4gSW4gYW55IGNhc2UsIHRoZSBhYm92ZSBzeXN0ZW0gc3BlY2lmaWMgdmFyaWFibGVzIGFyZSBub3QgdXNlZAoraW50ZXJuYWxseSBieSBFWFQyRUQsIGFuZCB0aGUgdXNlciBpcyBmcmVlIHRvIGNoYW5nZSB0aGUgZGVmaW5pdGlvbiBpbgorPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyLmRlc2NyaXB0b3JzPC9MaXRlcmFsPiB0byBhY2NvbW1vZGF0ZSBmb3IgaGlzIG5lZWRzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIGhhbmRsaW5nIGZ1bmN0aW9uczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHVzZXIgaW50ZXJmYWNlIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bW92ZW1lbnQ8L0xpdGVyYWw+IGlzIHRoZSB1c3VhbCA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQgLyBwcmV2IC8KK2VudHJ5PC9MaXRlcmFsPiBpbnRlcmZhY2UuIFRoZXJlIGlzIHJlYWxseSBub3RoaW5nIHNwZWNpYWwgaW4gdGhvc2UgZnVuY3Rpb25zIC0gVGhlCitzaXplIG9mIHRoZSBpbm9kZSBpcyBmaXhlZCwgdGhlIHRvdGFsIG51bWJlciBvZiBpbm9kZXMgaXMga25vd24gZnJvbSB0aGUKK3N1cGVyYmxvY2sgaW5mb3JtYXRpb24sIGFuZCB0aGUgY3VycmVudCBlbnRyeSBjYW4gYmUgZmlndXJlZCB1cCBmcm9tIHRoZQorZGV2aWNlIG9mZnNldCBhbmQgdGhlIGlub2RlIHRhYmxlIHN0YXJ0IG9mZnNldCwgd2hpY2ggaXMga25vd24gZnJvbSB0aGUKK2NvcnJlc3BvbmRpbmcgZ3JvdXAgZGVzY3JpcHRvci4gVGhvc2UgZnVuY3Rpb25zIGFyZSBhIGJpdCBvbGRlciB0aGVuIHNvbWUKK290aGVyIGltcGxlbWVudGF0aW9ucyBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQ8L0xpdGVyYWw+IGFuZCA8TGl0ZXJhbCByZW1hcD0idHQiPnByZXY8L0xpdGVyYWw+LCBhbmQgdGhleSBkbyBub3Qgc2F2ZQoraW5mb3JtYXRpb24gaW4gYSBzcGVjaWFsIHN0cnVjdHVyZS4gUmF0aGVyLCB0aGV5IHJlY29tcHV0ZSBpdCB3aGVuCituZWNlc3NhcnkuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdzwvTGl0ZXJhbD4gY29tbWFuZCBpcyBvdmVycmlkZGVuIGhlcmUsIGFuZCBwcm92aWRlcyBhIGxvdCBvZiBhZGRpdGlvbmFsCitpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5vZGUgLSBJdHMgdHlwZSwgaW50ZXJwcmV0YXRpb24gb2YgdGhlIHBlcm1pc3Npb25zLAorc3BlY2lhbCBleHQyIGF0dHJpYnV0ZXMgKEltbXV0YWJsZSBmaWxlLCBmb3IgZXhhbXBsZSksIGFuZCBhIGxvdCBtb3JlLgorQWdhaW4sIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmdlbmVyYWwgc2hvdzwvTGl0ZXJhbD4gaXMgY2FsbGVkIGZpcnN0LCBhbmQgdGhlbiB0aGUgYWRkaXRpb25hbAoraW5mb3JtYXRpb24gaXMgd3JpdHRlbi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkFjY2Vzc2luZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXM8L1RpdGxlPgorCis8UGFyYT4KK0Zyb20gdGhlIGlub2RlLCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gb3IgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpcmVjdG9yeTwvTGl0ZXJhbD4gY2FuIHR5cGljYWxseSBiZSByZWFjaGVkLgorSW4gb3JkZXIgdG8gdHJlYXQgYSBmaWxlLCBmb3IgZXhhbXBsZSwgaXRzIGlub2RlIG5lZWRzIHRvIGJlIGNvbnN0YW50bHkKK2FjY2Vzc2VkLiBUbyBzYXRpc2Z5IHRoYXQgbmVlZCwgd2hlbiBlZGl0aW5nIGEgZmlsZSBvciBhIGRpcmVjdG9yeSwgdGhlCitpbm9kZSBpcyBzdGlsbCBzYXZlZCBpbiBtZW1vcnkgLSA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUmbG93YmFyO2RhdGE8L0xpdGVyYWw+IGlzIG5vdCBvdmVyd3JpdHRlbi4KK1JhdGhlciwgdGhlIGZvbGxvd2luZyB0YWtlcyBwbGFjZToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJQW4gaW50ZXJuYWwgZ2xvYmFsIHN0cnVjdHVyZSB3aGljaCBpcyB1c2VkIGJ5IHRoZSB0eXBlcyA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGU8L0xpdGVyYWw+CithbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+IGhhbmRsaW5nIGZ1bmN0aW9ucyBpcyBpbml0aWFsaXplZCBieSBjYWxsaW5nIHRoZQorYXBwcm9wcmlhdGUgZnVuY3Rpb24uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgdHlwZSBpcyBjaGFuZ2VkIGFjY29yZGluZ2x5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK1RoZSByZXN1bHQgaXMgdGhhdCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0dHlwZSBleHQyJmxvd2Jhcjtpbm9kZTwvTGl0ZXJhbD4gaXMgdGhlIG9ubHkgYWN0aW9uIG5lY2Vzc2FyeQordG8gcmV0dXJuIHRvIHRoZSBpbm9kZSAtIFdlIGFjdHVhbGx5IG5ldmVyIGxlZnQgaXQuCis8L1BhcmE+CisKKzxQYXJhPgorRm9sbG93cyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGlub2RlJ3MgPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlPC9MaXRlcmFsPiBjb21tYW5kOgorPC9QYXJhPgorCis8UGFyYT4KKworPFByb2dyYW1MaXN0aW5nPgordm9pZCB0eXBlX2V4dDJfaW5vZGVfX19maWxlIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwljaGFyIGJ1ZmZlciBbODBdOworCQorCWlmICghU19JU1JFRyAodHlwZV9kYXRhLnUudF9leHQyX2lub2RlLmlfbW9kZSkpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gSW5vZGUgdHlwZSBpcyBub3QgZmlsZVxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CXJldHVybjsJCQorCX0KKwkKKwlpZiAoIWluaXRfZmlsZV9pbmZvICgpKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIFVuYWJsZSB0byBzaG93IGZpbGVcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisJCisJc3ByaW50ZiAoYnVmZmVyLCJzZXR0eXBlIGZpbGUiKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPFBhcmE+CitBcyB3ZSBjYW4gc2VlIC0gV2UganVzdCBjYWxsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5pdCZsb3diYXI7ZmlsZSZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gdG8gZ2V0IHRoZSBuZWNlc3NhcnkKK2luZm9ybWF0aW9uIGZyb20gdGhlIGlub2RlLCBhbmQgc2V0IHRoZSB0eXBlIHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4uIFRoZSBuZXh0IGNhbGwKK3RvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2hvdzwvTGl0ZXJhbD4sIHdpbGwgZGlzcGF0Y2ggdG8gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZSdzIHNob3c8L0xpdGVyYWw+IGltcGxlbWVudGF0aW9uLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+Vmlld2luZyBhIGZpbGU8L1RpdGxlPgorCis8UGFyYT4KK1RoZXJlIGlzbid0IGFuIGV4dDIga2VybmVsIHN0cnVjdHVyZSB3aGljaCBjb3JyZXNwb25kcyB0byBhIGZpbGUgLSBBIGZpbGUgaXMKK2p1c3QgYSBzZXJpZXMgb2YgYmxvY2tzIHdoaWNoIGFyZSBkZXRlcm1pbmVkIGJ5IGl0cyBpbm9kZS4gQXMgZXhwbGFpbmVkIGluCit0aGUgbGFzdCBzZWN0aW9uLCB0aGUgaW5vZGUgaXMgbmV2ZXIgYWN0dWFsbHkgbGVmdCAtIFRoZSB0eXBlIGlzIGNoYW5nZWQgdG8KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gLSBBIHR5cGUgd2hpY2ggY29udGFpbnMgbm8gdmFyaWFibGVzLCBhbmQgYSBzcGVjaWFsIHN0cnVjdHVyZSBpcworaW5pdGlhbGl6ZWQ6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyB7CisKKwlzdHJ1Y3QgZXh0Ml9pbm9kZXMgKmlub2RlX3B0cjsKKwkKKwlsb25nIGlub2RlX29mZnNldDsKKwlsb25nIGdsb2JhbF9ibG9ja19udW0sZ2xvYmFsX2Jsb2NrX29mZnNldDsKKwlsb25nIGJsb2NrX251bSxibG9ja3NfY291bnQ7CisJbG9uZyBmaWxlX29mZnNldCxmaWxlX2xlbmd0aDsKKwlsb25nIGxldmVsOworCXVuc2lnbmVkIGNoYXIgYnVmZmVyIFtFWFQyX01BWF9CTE9DS19TSVpFXTsKKwlsb25nIG9mZnNldF9pbl9ibG9jazsKKworCWludCBkaXNwbGF5OworCS8qIFRoZSBmb2xsb3dpbmcgaXMgdXNlZCBpZiB0aGUgZmlsZSBpcyBhIGRpcmVjdG9yeSAqLworCQorCWxvbmcgZGlyX2VudHJ5X251bSxkaXJfZW50cmllc19jb3VudDsKKwlsb25nIGRpcl9lbnRyeV9vZmZzZXQ7Cit9OworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlJmxvd2JhcjtwdHI8L0xpdGVyYWw+IHdpbGwganVzdCBwb2ludCB0byB0aGUgaW5vZGUgaW4gPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlJmxvd2JhcjtkYXRhPC9MaXRlcmFsPiwgd2hpY2gKK2lzIG5vdCBvdmVyd3JpdHRlbiB3aGlsZSB0aGUgdXNlciBpcyBlZGl0aW5nIHRoZSBmaWxlLCBhcyB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0b2Zmc2V0PC9MaXRlcmFsPiBjb21tYW5kIGlzIG5vdCBpbnRlcm5hbGx5IHVzZWQuIFRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJ1ZmZlcjwvTGl0ZXJhbD4KK3dpbGwgY29udGFpbiB0aGUgY3VycmVudCB2aWV3ZWQgYmxvY2sgb2YgdGhlIGZpbGUuIFRoZSBvdGhlciB2YXJpYWJsZXMKK2NvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgcGxhY2UgaW4gdGhlIGZpbGUuIEZvciBleGFtcGxlLAorPExpdGVyYWwgcmVtYXA9InR0Ij5nbG9iYWwmbG93YmFyO2Jsb2NrJmxvd2JhcjtudW08L0xpdGVyYWw+IGp1c3QgY29udGFpbnMgdGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBnZW5lcmFsIGlkZWEgaXMgdGhhdCB0aGUgYWJvdmUgZGF0YSBzdHJ1Y3R1cmUgd2lsbCBwcm92aWRlIHRoZSBmaWxlCitoYW5kbGluZyBmdW5jdGlvbnMgYWxsIHRoZSBhY2N1cmF0ZSBpbmZvcm1hdGlvbiB3aGljaCBpcyBuZWVkZWQgdG8gYWNjb21wbGlzaAordGhlaXIgdGFzay4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZ2xvYmFsIHN0cnVjdHVyZSBvZiB0aGUgYWJvdmUgdHlwZSwgPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlJmxvd2JhcjtpbmZvPC9MaXRlcmFsPiwgaXMgaW5pdGlhbGl6ZWQgYnkKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5pdCZsb3diYXI7ZmlsZSZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gaW4gPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlJmxvd2Jhcjtjb20uYzwvTGl0ZXJhbD4sIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+dHlwZSZsb3diYXI7ZXh0MiZsb3diYXI7aW5vZGUmbG93YmFyOyZsb3diYXI7Jmxvd2JhcjtmaWxlPC9MaXRlcmFsPiBmdW5jdGlvbiB3aGVuIHRoZSB1c2VyIHJlcXVlc3RzIHRvIHdhdGNoIHRoZQorZmlsZS4gPExpdGVyYWwgcmVtYXA9InR0Ij5JdCBpcyB1cGRhdGVkIGFzIG5lY2Vzc2FyeSB0byBwcm92aWRlIGFjY3VyYXRlIGluZm9ybWF0aW9uIGFzIGxvbmcgYXMKK3RoZSBmaWxlIGlzIGVkaXRlZC48L0xpdGVyYWw+Cis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5SZXR1cm5pbmcgdG8gdGhlIGZpbGUncyBpbm9kZTwvVGl0bGU+CisKKzxQYXJhPgorQ29uY2VybmluZyB0aGUgbWV0aG9kIEkgdXNlZCB0byBoYW5kbGUgZmlsZXMsIHRoZSBhYm92ZSB0YXNrIGlzIHRyaXZpYWw6CisKKzxQcm9ncmFtTGlzdGluZz4KK3ZvaWQgdHlwZV9maWxlX19faW5vZGUgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWRpc3BhdGNoICgic2V0dHlwZSBleHQyX2lub2RlIik7Cit9Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5GaWxlIG1vdmVtZW50PC9UaXRsZT4KKworPFBhcmE+CitFWFQyRUQga2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIGZpbGUuIE1vdmVtZW50IGluc2lkZSB0aGUKK2N1cnJlbnQgYmxvY2sgaXMgZG9uZSB1c2luZyA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQsIHByZXYgYW5kIG9mZnNldDwvTGl0ZXJhbD4gLSBUaGV5IGp1c3QgY2hhbmdlCis8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGUmbG93YmFyO2luZm8ub2Zmc2V0Jmxvd2JhcjtpbiZsb3diYXI7YmxvY2s8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KK01vdmVtZW50IGJldHdlZW4gYmxvY2tzIGlzIGRvbmUgdXNpbmcgPExpdGVyYWwgcmVtYXA9InR0Ij5uZXh0YmxvY2ssIHByZXZibG9jayBhbmQgYmxvY2s8L0xpdGVyYWw+LgorVG8gYWNjb21wbGlzaCB0aGlzLCB0aGUgZGlyZWN0IGJsb2NrcywgaW5kaXJlY3QgYmxvY2tzLCBldGMsIG5lZWQgdG8gYmUKK3RyYWNlZC4gVGhpcyBpcyBkb25lIGJ5IDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZSZsb3diYXI7YmxvY2smbG93YmFyO3RvJmxvd2JhcjtnbG9iYWwmbG93YmFyO2Jsb2NrPC9MaXRlcmFsPiwgd2hpY2ggYWNjZXB0cyBhCitmaWxlJ3MgaW50ZXJuYWwgYmxvY2sgbnVtYmVyLCBhbmQgY29udmVydHMgaXQgdG8gdGhlIGFjdHVhbCBmaWxlc3lzdGVtIGJsb2NrCitudW1iZXIuCis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+Citsb25nIGZpbGVfYmxvY2tfdG9fZ2xvYmFsX2Jsb2NrIChsb25nIGZpbGVfYmxvY2ssc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmZpbGVfaW5mb19wdHIpCisKK3sKKwlsb25nIGxhc3RfZGlyZWN0LGxhc3RfaW5kaXJlY3QsbGFzdF9kaW5kaXJlY3Q7CisJbG9uZyBmX2luZGlyZWN0LHNfaW5kaXJlY3Q7CisJCisJbGFzdF9kaXJlY3Q9RVhUMl9ORElSX0JMT0NLUy0xOworCWxhc3RfaW5kaXJlY3Q9bGFzdF9kaXJlY3QrZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQ7CisJbGFzdF9kaW5kaXJlY3Q9bGFzdF9pbmRpcmVjdCsoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpIFwKKwkJKihmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCk7CisKKwlpZiAoZmlsZV9ibG9jayAmIzYwOz0gbGFzdF9kaXJlY3QpIHsKKwkJZmlsZV9pbmZvX3B0ci0mIzYyO2xldmVsPTA7CisJCXJldHVybiAoZmlsZV9pbmZvX3B0ci0mIzYyO2lub2RlX3B0ci0mIzYyO2lfYmxvY2sgW2ZpbGVfYmxvY2tdKTsKKwl9CisJCisJaWYgKGZpbGVfYmxvY2sgJiM2MDs9IGxhc3RfaW5kaXJlY3QpIHsKKwkJZmlsZV9pbmZvX3B0ci0mIzYyO2xldmVsPTE7CisJCWZpbGVfYmxvY2s9ZmlsZV9ibG9jay1sYXN0X2RpcmVjdC0xOworCQlyZXR1cm4gKHJldHVybl9pbmRpcmVjdCAoZmlsZV9pbmZvX3B0ci0mIzYyO2lub2RlX3B0ci0mIzYyOyBcCisJCQlpX2Jsb2NrIFtFWFQyX0lORF9CTE9DS10sZmlsZV9ibG9jaykpOworCX0KKworCWlmIChmaWxlX2Jsb2NrICYjNjA7PSBsYXN0X2RpbmRpcmVjdCkgeworCQlmaWxlX2luZm9fcHRyLSYjNjI7bGV2ZWw9MjsKKwkJZmlsZV9ibG9jaz1maWxlX2Jsb2NrLWxhc3RfaW5kaXJlY3QtMTsKKwkJcmV0dXJuIChyZXR1cm5fZGluZGlyZWN0IChmaWxlX2luZm9fcHRyLSYjNjI7aW5vZGVfcHRyLSYjNjI7IFwKKwkJCWlfYmxvY2sgW0VYVDJfRElORF9CTE9DS10sZmlsZV9ibG9jaykpOworCX0KKworCWZpbGVfaW5mb19wdHItJiM2MjtsZXZlbD0zOworCWZpbGVfYmxvY2s9ZmlsZV9ibG9jay1sYXN0X2RpbmRpcmVjdC0xOworCXJldHVybiAocmV0dXJuX3RpbmRpcmVjdCAoZmlsZV9pbmZvX3B0ci0mIzYyO2lub2RlX3B0ci0mIzYyOyBcCisJCWlfYmxvY2sgW0VYVDJfVElORF9CTE9DS10sZmlsZV9ibG9jaykpOworfQorPC9Qcm9ncmFtTGlzdGluZz4KKworPExpdGVyYWwgcmVtYXA9InR0Ij5sYXN0Jmxvd2JhcjtkaXJlY3QsIGxhc3QmbG93YmFyO2luZGlyZWN0LCBldGM8L0xpdGVyYWw+LCBjb250YWluIHRoZSBsYXN0IGludGVybmFsIGJsb2NrIG51bWJlcgord2hpY2ggaXMgYWNjZXNzZWQgYnkgdGhpcyBtZXRob2QgLSBJZiB0aGUgcmVxdWVzdGVkIGJsb2NrIGlzIHNtYWxsZXIgdGhlbgorPExpdGVyYWwgcmVtYXA9InR0Ij5sYXN0Jmxvd2JhcjtkaXJlY3Q8L0xpdGVyYWw+LCBmb3IgZXhhbXBsZSwgaXQgaXMgYSBkaXJlY3QgYmxvY2suCis8L1BhcmE+CisKKzxQYXJhPgorSWYgdGhlIGJsb2NrIGlzIGEgZGlyZWN0IGJsb2NrLCBpdHMgbnVtYmVyIGlzIGp1c3QgdGFrZW4gZnJvbSB0aGUgaW5vZGUuCitBIG5vbi1kaXJlY3QgYmxvY2sgaXMgaGFuZGxlZCBieSA8TGl0ZXJhbCByZW1hcD0idHQiPnJldHVybiZsb3diYXI7aW5kaXJlY3QsIHJldHVybiZsb3diYXI7ZGluZGlyZWN0IGFuZAorcmV0dXJuJmxvd2Jhcjt0aW5kaXJlY3Q8L0xpdGVyYWw+LCB3aGljaCBjb3JyZXNwb25kIHRvIGluZGlyZWN0LCBkb3VibGUtaW5kaXJlY3QgYW5kCit0cmlwbGUtaW5kaXJlY3QuIEVhY2ggb2YgdGhlIGFib3ZlIGZ1bmN0aW9ucyBpcyBjb25zdHJ1Y3RlZCB1c2luZyB0aGUgbG93ZXIKK2xldmVsIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGUsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmV0dXJuJmxvd2JhcjtkaW5kaXJlY3Q8L0xpdGVyYWw+IGlzIGNvbnN0cnVjdGVkIGFzCitmb2xsb3dzOgorPC9QYXJhPgorCis8UGFyYT4KKworPFByb2dyYW1MaXN0aW5nPgorbG9uZyByZXR1cm5fZGluZGlyZWN0IChsb25nIHRhYmxlX2Jsb2NrLGxvbmcgYmxvY2tfbnVtKQorCit7CisJbG9uZyBmX2luZGlyZWN0OworCQorCWZfaW5kaXJlY3Q9YmxvY2tfbnVtLyhmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCk7CisJZl9pbmRpcmVjdD1yZXR1cm5faW5kaXJlY3QgKHRhYmxlX2Jsb2NrLGZfaW5kaXJlY3QpOworCXJldHVybiAocmV0dXJuX2luZGlyZWN0IChmX2luZGlyZWN0LGJsb2NrX251bSUoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpKSk7Cit9Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5PYmplY3QgbWVtb3J5PC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5yZW1lbWJlcjwvTGl0ZXJhbD4gY29tbWFuZCBpcyBvdmVycmlkZGVuIGhlcmUgYW5kIGluIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpcjwvTGl0ZXJhbD4gdHlwZSAtCitXZSBqdXN0IHJlbWVtYmVyIHRoZSBpbm9kZSBvZiB0aGUgZmlsZS4gSXQgaXMganVzdCBzaW1wbGVyIHRvIGltcGxlbWVudCwgYW5kCitkb2Vzbid0IHNlZW0gbGlrZSBhIGJpZyBsaW1pdGF0aW9uLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+Q2hhbmdpbmcgZGF0YTwvVGl0bGU+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V0PC9MaXRlcmFsPiBjb21tYW5kIGlzIG92ZXJyaWRkZW4sIGFuZCBwcm92aWRlcyB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5CitsaWtlIHRoZSB1c2FnZSBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsIHNldDwvTGl0ZXJhbD4gY29tbWFuZCB3aXRoIG5vIHR5cGUgZGVjbGFyZWQuIFRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij53cml0ZWRhdGE8L0xpdGVyYWw+IGlzIG92ZXJyaWRkZW4gc28gdGhhdCB3ZSdsbCB3cml0ZSB0aGUgZWRpdGVkIGJsb2NrCisoZmlsZSZsb3diYXI7aW5mby5idWZmZXIpIGFuZCBub3QgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlJmxvd2JhcjtkYXRhPC9MaXRlcmFsPiAoV2hpY2ggY29udGFpbnMgdGhlIGlub2RlKS4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkRpcmVjdG9yaWVzPC9UaXRsZT4KKworPFBhcmE+CitBIGRpcmVjdG9yeSBpcyBqdXN0IGEgZmlsZSB3aGljaCBpcyBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIGEgc3BlY2lhbCBmb3JtYXQuCitBcyBzdWNoLCBFWFQyRUQgaGFuZGxlcyBkaXJlY3RvcmllcyBhbmQgZmlsZXMgcXVpdGUgYWxpa2UuIFNwZWNpZmljYWxseSwgdGhlCitzYW1lIHZhcmlhYmxlIG9mIHR5cGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zdHJ1Y3QmbG93YmFyO2ZpbGUmbG93YmFyO2luZm88L0xpdGVyYWw+IHdoaWNoIGlzIHVzZWQgaW4gdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGU8L0xpdGVyYWw+LCBpcyB1c2VkIGhlcmUuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyPC9MaXRlcmFsPiB0eXBlIHVzZXMgYWxsIHRoZSB2YXJpYWJsZXMgaW4gdGhlIGFib3ZlIHN0cnVjdHVyZSwgYXMKK29wcG9zZWQgdG8gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gdHlwZSwgd2hpY2ggZGlkbid0IHVzZSB0aGUgbGFzdCBvbmVzLgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+VGhlIHNlYXJjaCZsb3diYXI7ZGlyJmxvd2JhcjtlbnRyaWVzIGZ1bmN0aW9uPC9UaXRsZT4KKworPFBhcmE+CitUaGUgZW50aXJlIHNpdHVhdGlvbiBpcyBzaW1pbGFyIHRvIHRoYXQgd2hpY2ggd2FzIGRlc2NyaWJlZCBpbiB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gdHlwZSwgd2l0aCBvbmUgbWFpbiBjaGFuZ2U6Cis8L1BhcmE+CisKKzxQYXJhPgorVGhlIG1haW4gZnVuY3Rpb24gaW4gPExpdGVyYWwgcmVtYXA9InR0Ij5kaXImbG93YmFyO2NvbS5jPC9MaXRlcmFsPiBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPnNlYXJjaCZsb3diYXI7ZGlyJmxvd2JhcjtlbnRyaWVzPC9MaXRlcmFsPi4gVGhpcworZnVuY3Rpb24gd2lsbCA8TGl0ZXJhbCByZW1hcD0idHQiPiJydW4iPC9MaXRlcmFsPiBvbiB0aGUgZW50aXJlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSwgYW5kIHdpbGwKK2NhbGwgYSBjbGllbnQncyBmdW5jdGlvbiBlYWNoIHRpbWUuIFRoZSBjbGllbnQncyBmdW5jdGlvbiBpcyBzdXBwbGllZCBhcyBhbgorYXJndW1lbnQsIGFuZCB3aWxsIGNoZWNrIHRoZSBjdXJyZW50IGVudHJ5IGZvciBhIG1hdGNoLCBiYXNlZCBvbiBpdHMgb3duCitjcml0ZXJpb24uIEl0IHdpbGwgdGhlbiBzaWduYWwgPExpdGVyYWwgcmVtYXA9InR0Ij5zZWFyY2gmbG93YmFyO2RpciZsb3diYXI7ZW50cmllczwvTGl0ZXJhbD4gd2hldGhlciB0bworPExpdGVyYWwgcmVtYXA9InR0Ij5BQk9SVDwvTGl0ZXJhbD4gdGhlIHNlYXJjaCwgd2hldGhlciBpdCA8TGl0ZXJhbCByZW1hcD0idHQiPkZPVU5EPC9MaXRlcmFsPiB0aGUgZW50cnkgaXQgd2FzIGxvb2tpbmcKK2Zvciwgb3IgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgbm90IGZvdW5kLCBhbmQgd2Ugc2hvdWxkIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Q09OVElOVUU8L0xpdGVyYWw+CitzZWFyY2hpbmcuIEZvbGxvd3MgdGhlIGRlY2xhcmF0aW9uOgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyBzZWFyY2hfZGlyX2VudHJpZXMgXCAKKwkoaW50ICgqYWN0aW9uKSAoc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmluZm8pLGludCAqc3RhdHVzKQorCisvKgorCVRoaXMgcm91dGluZSBydW5zIG9uIGFsbCBkaXJlY3RvcnkgZW50cmllcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisJRm9yIGVhY2ggZW50cnksIGFjdGlvbiBpcyBjYWxsZWQuIFRoZSByZXR1cm4gY29kZSBvZiBhY3Rpb24gaXMgb25lIG9mCisJdGhlIGZvbGxvd2luZzoKKwkKKwkJQUJPUlQJCS0JQ3VycmVudCBkaXIgZW50cnkgaXMgcmV0dXJuZWQuCisJCUNPTlRJTlVFCS0JQ29udGludWUgc2VhcmNoaW5nLgorCQlGT1VORAkJLQlDdXJyZW50IGRpciBlbnRyeSBpcyByZXR1cm5lZC4KKwkJCisJSWYgdGhlIGxhc3QgZW50cnkgaXMgcmVhY2hlZCwgaXQgaXMgcmV0dXJuZWQsIGFsb25nIHdpdGggYW4gQUJPUlQgc3RhdHVzLgorCQorCXN0YXR1cyBpcyB1cGRhdGVkIHRvIHRoZSByZXR1cm5lZCBjb2RlIG9mIGFjdGlvbi4JCisqLworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KK1dpdGggdGhlIGFib3ZlIHRvb2wgaW4gaGFuZCwgbWFueSBvcGVyYXRpb25zIGFyZSBzaW1wbGUgdG8gcGVyZm9ybSAtIEhlcmUgaXMKK3RoZSB3YXkgSSBjb3VudGVkIHRoZSBlbnRyaWVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeToKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK2xvbmcgY291bnRfZGlyX2VudHJpZXMgKHZvaWQpCisKK3sKKwlpbnQgc3RhdHVzOworCQorCXJldHVybiAoc2VhcmNoX2Rpcl9lbnRyaWVzICgmYW1wO2FjdGlvbl9jb3VudCwmYW1wO3N0YXR1cykuZGlyX2VudHJ5X251bSk7Cit9CisKK2ludCBhY3Rpb25fY291bnQgKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKQorCit7CisJcmV0dXJuIChDT05USU5VRSk7Cit9Cis8L1Byb2dyYW1MaXN0aW5nPgorCitJdCB3aWxsIGp1c3QgPExpdGVyYWwgcmVtYXA9InR0Ij5DT05USU5VRTwvTGl0ZXJhbD4gdW50aWwgdGhlIGxhc3QgZW50cnkuIFRoZSByZXR1cm5lZCBzdHJ1Y3R1cmUKKyhvZiB0eXBlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3RydWN0Jmxvd2JhcjtmaWxlJmxvd2JhcjtpbmZvPC9MaXRlcmFsPikgd2lsbCBoYXZlIGl0cyBudW1iZXIgaW4gdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPmRpciZsb3diYXI7ZW50cnkmbG93YmFyO251bTwvTGl0ZXJhbD4gZmllbGQsIGFuZCB0aGlzIGlzIGV4YWN0bHkgdGhlIHJlcXVpcmVkIG51bWJlciEKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBjZCBjb21tYW5kPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5jZDwvTGl0ZXJhbD4gY29tbWFuZCBhY2NlcHRzIGEgcmVsYXRpdmUgcGF0aCwgYW5kIG1vdmVzIHRoZXJlIC4uLgorVGhlIGltcGxlbWVudGF0aW9uIGlzIG9mLWNvdXJzZSBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkOgorCis8T3JkZXJlZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBwYXRoIGlzIGNoZWNrZWQgdGhhdCBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aCAoZnJvbSA8TGl0ZXJhbCByZW1hcD0idHQiPi88L0xpdGVyYWw+KS4KK0lmIGl0IGlzLCB3ZSBsZXQgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Z2VuZXJhbCBjZDwvTGl0ZXJhbD4gdG8gZG8gdGhlIGpvYiBieSBjYWxsaW5nCitkaXJlY3RseSA8TGl0ZXJhbCByZW1hcD0idHQiPnR5cGUmbG93YmFyO2V4dDImbG93YmFyOyZsb3diYXI7Jmxvd2JhcjtjZDwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgcGF0aCBpcyBkaXZpZGVkIGludG8gdGhlIG5lYXJlc3QgcGF0aCBhbmQgdGhlIHJlc3Qgb2YgdGhlIHBhdGguCitGb3IgZXhhbXBsZSwgY2QgMS8yLzMvNCBpcyBkaXZpZGVkIGludG8gPExpdGVyYWwgcmVtYXA9InR0Ij4xPC9MaXRlcmFsPiBhbmQgaW50bworPExpdGVyYWwgcmVtYXA9InR0Ij4yLzMvNDwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJdCBpcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUgcGF0aCB0aGF0IHdlIG5lZWQgdG8gc2VhcmNoIGZvciBpbiB0aGUKK2N1cnJlbnQgZGlyZWN0b3J5LiBXZSBzZWFyY2ggZm9yIGl0IHVzaW5nIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2VhcmNoJmxvd2JhcjtkaXImbG93YmFyO2VudHJpZXM8L0xpdGVyYWw+LAord2hpY2ggYWNjZXB0cyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5hY3Rpb24mbG93YmFyO25hbWU8L0xpdGVyYWw+IGZ1bmN0aW9uIGFzIHRoZSB1c2VyIGRlZmluZWQKK2Z1bmN0aW9uLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5zZWFyY2gmbG93YmFyO2RpciZsb3diYXI7ZW50cmllczwvTGl0ZXJhbD4gd2lsbCBzY2FuIHRoZSBlbnRpcmUgZW50cmllcyBhbmQgd2lsbCBjYWxsCitvdXIgPExpdGVyYWwgcmVtYXA9InR0Ij5hY3Rpb24mbG93YmFyO25hbWU8L0xpdGVyYWw+IGZ1bmN0aW9uIGZvciBlYWNoIGVudHJ5LiBJbgorPExpdGVyYWwgcmVtYXA9InR0Ij5hY3Rpb24mbG93YmFyO25hbWU8L0xpdGVyYWw+LCB0aGUgcmVxdWlyZWQgbmFtZSB3aWxsIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUKK25hbWUgb2YgdGhlIGN1cnJlbnQgZW50cnksIGFuZCA8TGl0ZXJhbCByZW1hcD0idHQiPkZPVU5EPC9MaXRlcmFsPiB3aWxsIGJlIHJldHVybmVkIHdoZW4gYQorbWF0Y2ggb2NjdXJzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJSWYgdGhlIHJlcXVpcmVkIGVudHJ5IGlzIGZvdW5kLCB3ZSBkaXNwYXRjaCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVtZW1iZXI8L0xpdGVyYWw+Citjb21tYW5kIHRvIGluc2VydCB0aGUgY3VycmVudCA8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlPC9MaXRlcmFsPiBpbnRvIHRoZSBvYmplY3QgbWVtb3J5LgorVGhpcyBpcyByZXF1aXJlZCB0byBlYXNpbHkgc3VwcG9ydCA8TGl0ZXJhbCByZW1hcD0idHQiPnN5bWJvbGljIGxpbmtzPC9MaXRlcmFsPiAtIElmIHdlCitmaW5kIGxhdGVyIHRoYXQgdGhlIGlub2RlIHBvaW50ZWQgYnkgdGhlIGVudHJ5IGlzIGFjdHVhbGx5IGEKK3N5bWJvbGljIGxpbmssIHdlJ2xsIG5lZWQgdG8gcmV0dXJuIHRvIHRoaXMgcG9pbnQsIGFuZCB0aGUgYWJvdmUKK2lub2RlIGRvZXNuJ3QgaGF2ZSAoYW5kIGNhbid0IGhhdmUsIGJlY2F1c2Ugb2YgPExpdGVyYWwgcmVtYXA9InR0Ij5oYXJkIGxpbmtzPC9MaXRlcmFsPikgdGhlCitpbmZvcm1hdGlvbiBuZWNlc3NhcnkgdG8gIm1vdmUgYmFjayIuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlXZSB0aGVuIGRpc3BhdGNoIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5mb2xsb3dpbm9kZTwvTGl0ZXJhbD4gY29tbWFuZCB0byByZWFjaCB0aGUgaW5vZGUKK3BvaW50ZWQgYnkgdGhlIHJlcXVpcmVkIGVudHJ5LiBUaGlzIGNvbW1hbmQgd2lsbCBhdXRvbWF0aWNhbGx5CitjaGFuZ2UgdGhlIHR5cGUgdG8gPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyJmxvd2Jhcjtpbm9kZTwvTGl0ZXJhbD4gLSBXZSBhcmUgbm93IGF0IGFuIGlub2RlLCBhbmQKK2FsbCB0aGUgaW5vZGUgY29tbWFuZHMgYXJlIGF2YWlsYWJsZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVdlIGNoZWNrIHRoZSBpbm9kZSdzIHR5cGUgdG8gc2VlIGlmIGl0IGlzIGEgZGlyZWN0b3J5LiBJZiBpdCBpcywgd2UKK2Rpc3BhdGNoIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+IGNvbW1hbmQgdG8gImVudGVyIHRoZSBkaXJlY3RvcnkiLCBhbmQKK3JlY3Vyc2l2ZWx5IGNhbGwgb3Vyc2VsZiAoVGhlIHR5cGUgaXMgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+IGFnYWluKSBieQorZGlzcGF0Y2hpbmcgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmNkPC9MaXRlcmFsPiBjb21tYW5kLCB3aXRoIHRoZSByZXN0IG9mIHRoZSBwYXRoIGFzIGFuCithcmd1bWVudC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUlmIHRoZSBpbm9kZSdzIHR5cGUgaXMgYSBzeW1ib2xpYyBsaW5rIChvbmx5IGZhc3Qgc3ltYm9saWMgbGluayB3ZXJlCittZWFud2hpbGUgaW1wbGVtZW50ZWQuIEkgZ3Vlc3MgdGhpcyBpcyB0eXBpY2FsbHkgdGhlIGNhc2UuKSwgd2Ugbm90ZQordGhlIHBhdGggaXQgaXMgcG9pbnRpbmcgYXQsIHRoZQlzYXZlZCBpbm9kZSBpcyByZWNhbGxlZCwgd2UgZGlzcGF0Y2gKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyPC9MaXRlcmFsPiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5LCBhbmQgd2UgY2FsbAorb3Vyc2VsZiBhZ2FpbiB3aXRoIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmxpbmsgcGF0aC9yZXN0IG9mIHRoZSBwYXRoPC9MaXRlcmFsPiBhcmd1bWVudC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUluIGFueSBvdGhlciBjYXNlLCB3ZSBqdXN0IHN0b3AgYXQgdGhlIHJlc3VsdGluZyBpbm9kZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBibG9jayBhbmQgaW5vZGUgYWxsb2NhdGlvbiBiaXRtYXBzPC9UaXRsZT4KKworPFBhcmE+CitUaGUgYmxvY2sgYWxsb2NhdGlvbiBiaXRtYXAgaXMgcmVhY2hlZCBieSB0aGUgY29ycmVzcG9uZGluZyBncm91cCBkZXNjcmlwdG9yLgorVGhlIGdyb3VwIGRlc2NyaXB0b3IgaGFuZGxpbmcgZnVuY3Rpb25zIHdpbGwgc2F2ZSB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uCitpbnRvIGEgc3RydWN0dXJlIG9mIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnN0cnVjdCZsb3diYXI7YmxvY2smbG93YmFyO2JpdG1hcCZsb3diYXI7aW5mbzwvTGl0ZXJhbD4gdHlwZToKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBzdHJ1Y3RfYmxvY2tfYml0bWFwX2luZm8geworCXVuc2lnbmVkIGxvbmcgZW50cnlfbnVtOworCXVuc2lnbmVkIGxvbmcgZ3JvdXBfbnVtOworfTsKKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zaG93PC9MaXRlcmFsPiBjb21tYW5kIGlzIG92ZXJyaWRkZW4sIGFuZCB3aWxsIHNob3cgdGhlIGJsb2NrIGFzIGEgc2VyaWVzIG9mCitiaXRzLCBlYWNoIGJpdCBjb3JyZXNwb25kaW5nIHRvIGEgYmxvY2suIFRoZSBtYWluIHZhcmlhYmxlIGlzIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5lbnRyeSZsb3diYXI7bnVtPC9MaXRlcmFsPiB2YXJpYWJsZSwgZGVjbGFyZWQgYWJvdmUsIHdoaWNoIGlzIGp1c3QgdGhlIGN1cnJlbnQgYmxvY2sKK251bWJlciBpbiB0aGlzIGJsb2NrIGdyb3VwLiBUaGUgY3VycmVudCBlbnRyeSBpcyBoaWdobGlnaHRlZCwgYW5kIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5uZXh0LCBwcmV2IGFuZCBlbnRyeTwvTGl0ZXJhbD4gY29tbWFuZHMganVzdCBjaGFuZ2UgdGhlIGFib3ZlIHZhcmlhYmxlLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmFsbG9jYXRlIGFuZCBkZWFsbG9jYXRlPC9MaXRlcmFsPiBjaGFuZ2UgdGhlIHNwZWNpZmllZCBiaXRzLiBOb3RoaW5nCitzcGVjaWFsIGFib3V0IHRoZW0gLSBUaGV5IGp1c3QgY29udGFpbiBjb2RlIHdoaWNoIGNvbnZlcnRzIGJldHdlZW4gYml0IGFuZAorYnl0ZSBsb2NhdGlvbnMuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5vZGUgYWxsb2NhdGlvbiBiaXRtYXA8L0xpdGVyYWw+IGlzIHRyZWF0ZWQgaW4gbXVjaCB0aGUgc2FtZSBmYXNoaW9uLCB3aXRoCit0aGUgc2FtZSBjb21tYW5kcyBhdmFpbGFibGUuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5GaWxlc3lzdGVtIHNpemUgbGltaXRhdGlvbjwvVGl0bGU+CisKKzxQYXJhPgorV2hpbGUgYW4gZXh0MiBmaWxlc3lzdGVtIGhhcyBhIHNpemUgbGltaXQgb2YgPExpdGVyYWwgcmVtYXA9InR0Ij40IFRCPC9MaXRlcmFsPiwgRVhUMkVEIGN1cnJlbnRseQorPExpdGVyYWwgcmVtYXA9InR0Ij5jYW4ndDwvTGl0ZXJhbD4gaGFuZGxlIGZpbGVzeXN0ZW1zIHdoaWNoIGFyZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJpZ2dlciB0aGFuIDIgR0I8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KK1RoaXMgbGltaXRhdGlvbiByZXN1bHRzIGZyb20gbXkgdXNhZ2Ugb2YgPExpdGVyYWwgcmVtYXA9InR0Ij4zMiBiaXQgbG9uZyB2YXJpYWJsZXM8L0xpdGVyYWw+IGFuZAorb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZnNlZWs8L0xpdGVyYWw+IGZpbGVzeXN0ZW0gY2FsbCwgd2hpY2ggY2FuJ3Qgc2VlayB1cCB0byA0IFRCLgorPC9QYXJhPgorCis8UGFyYT4KK0J5IGxvb2tpbmcgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MiBsaWJyYXJ5PC9MaXRlcmFsPiBzb3VyY2UgY29kZSBieSA8TGl0ZXJhbCByZW1hcD0idHQiPlRoZW9kb3JlIFRzJ288L0xpdGVyYWw+LAorSSBkaXNjb3ZlcmVkIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmxsc2VlazwvTGl0ZXJhbD4gc3lzdGVtIGNhbGwgd2hpY2ggY2FuIHNlZWsgdG8gYQorPExpdGVyYWwgcmVtYXA9InR0Ij42NCBiaXQgdW5zaWduZWQgbG9uZyBsb25nPC9MaXRlcmFsPiBvZmZzZXQuIENvcnJlY3RpbmcgdGhlIHNpdHVhdGlvbiBpcyBub3QKK2RpZmZpY3VsdCBpbiBjb25jZXB0IC0gSSBuZWVkIHRvIGNoYW5nZSBsb25nIGludG8gdW5zaWduZWQgbG9uZyBsb25nIHdoZXJlCithcHByb3ByaWF0ZSBhbmQgbW9kaWZ5IDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlzay5jPC9MaXRlcmFsPiB0byB1c2UgdGhlIGxsc2VlayBzeXN0ZW0gY2FsbC4KKzwvUGFyYT4KKworPFBhcmE+CitIb3dldmVyLCBmaXhpbmcgdGhlIGFib3ZlIGxpbWl0YXRpb24gaW52b2x2ZXMgbWFraW5nIGNoYW5nZXMgaW4gbWFueSBwbGFjZXMKK2luIHRoZSBjb2RlIGFuZCB3aWxsIG9idmlvdXNseSBtYWtlIHRoZSBlbnRpcmUgY29kZSBsZXNzIHN0YWJsZS4gRm9yIHRoYXQKK3JlYXNvbiwgSSBjaG9zZSB0byByZWxlYXNlIEVYVDJFRCBhcyBpdCBpcyBub3cgYW5kIHRvIHBvc3Rwb25lIHRoZSBhYm92ZSBmaXgKK3RvIHRoZSBuZXh0IHJlbGVhc2UuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5Db25jbHVzaW9uPC9UaXRsZT4KKworPFBhcmE+CitIYWQgSSBrbm93biBpbiBhZHZhbmNlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSwgSSBmZWVsIHRoYXQKK3RoZSByZXN1bHRpbmcgZGVzaWduIHdvdWxkIGhhdmUgYmVlbiBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aGUgcHJlc2VudGVkCitkZXNpZ24gYWJvdmUuCis8L1BhcmE+CisKKzxQYXJhPgorRVhUMkVEIGhhcyBub3cgdHdvIGxldmVscyBvZiBhYnN0cmFjdGlvbiAtIEEgPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsPC9MaXRlcmFsPiBmaWxlc3lzdGVtLCBhbmQgYW4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MjwvTGl0ZXJhbD4gZmlsZXN5c3RlbSwgYW5kIHRoZSBzdXJmYWNlIGlzIG1vcmUgb3IgbGVzcyBwcmVwYXJlZCBmb3IgYWRkaXRpb25zCitvZiBvdGhlciBmaWxlc3lzdGVtcy4gSGFkIEkgYXBwcm9hY2hlZCB0aGUgZGVzaWduIGluIHRoZSAiZW5naW5lZXJpbmciIHdheSwKK0kgZ3Vlc3MgdGhhdCB0aGUgZmlyc3QgbGV2ZWwgYWJvdmUgd291bGQgbm90IGhhdmUgZXhpc3RlZC4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkNvcHlyaWdodDwvVGl0bGU+CisKKzxQYXJhPgorRVhUMkVEIGlzIENvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuLgorPC9QYXJhPgorCis8UGFyYT4KK0VYVDJFRCBpcyBoZXJlYnkgcGxhY2VkIHVuZGVyIHRoZSBHUEwgLSBHbnUgUHVibGljIExpY2Vuc2UuIFlvdSBhcmUgZnJlZSBhbmQKK3dlbGNvbWUgdG8gY29weSwgdmlldyBhbmQgbW9kaWZ5IHRoZSBzb3VyY2VzLiBNeSBvbmx5IHdpc2ggaXMgdGhhdCBteQorY29weXJpZ2h0IHByZXNlbnRlZCBhYm92ZSB3aWxsIGJlIGxlZnQgYW5kIHRoYXQgYSBsaXN0IG9mIHRoZSBidWcgZml4ZXMsCithZGRlZCBmZWF0dXJlcywgZXRjLCB3aWxsIGJlIHByb3ZpZGVkLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBlbnRpcmUgRVhUMkVEIHByb2plY3QgaXMgYmFzZWQsIG9mLWNvdXJzZSwgb24gdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0Mi5kZXNjcmlwdG9yczwvTGl0ZXJhbD4gZGlzdHJpYnV0ZWQgd2l0aCBFWFQyRUQgaXMgYSBzbGlnaHRseSBtb2RpZmllZAordmVyc2lvbiBvZiB0aGUgbWFpbiBleHQyIGluY2x1ZGUgZmlsZSwgL3Vzci9pbmNsdWRlL2xpbnV4L2V4dDImbG93YmFyO2ZzLmguIEZvbGxvd3MKK3RoZSBvcmlnaW5hbCBjb3B5cmlnaHQ6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CisvKgorICogIGxpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mcy5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1CisgKiBSZW15IENhcmQgKGNhcmRAbWFzaS5pYnAuZnIpCisgKiBMYWJvcmF0b2lyZSBNQVNJIC0gSW5zdGl0dXQgQmxhaXNlIFBhc2NhbAorICogVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqICBmcm9tCisgKgorICogIGxpbnV4L2luY2x1ZGUvbGludXgvbWluaXhfZnMuaAorICoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTEsIDE5OTIgIExpbnVzIFRvcnZhbGRzCisgKi8KKworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+QWNrbm93bGVkZ21lbnRzPC9UaXRsZT4KKworPFBhcmE+CitFWFQyRUQgd2FzIGNvbnN0cnVjdGVkIGFzIGEgc3R1ZGVudCBwcm9qZWN0IGluIHRoZSBzb2Z0d2FyZQorbGFib3JhdG9yeSBvZiB0aGUgZmFjdWx0eSBvZiBlbGVjdHJpY2FsLWVuZ2luZWVyaW5nIGluIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5UZWNobmlvbiAtIElzcmFlbCdzIGluc3RpdHV0ZSBvZiB0ZWNobm9sb2d5PC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFBhcmE+CitBdCBmaXJzdCwgSSB3b3VsZCBsaWtlIHRvIHRoYW5rIDxMaXRlcmFsIHJlbWFwPSJ0dCI+QXZuZXIgTG90dGVtPC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5Eb2N0b3IgSWxhbmEKK0RhdmlkPC9MaXRlcmFsPiBmb3IgdGhlaXIgaW50ZXJlc3QgYW5kIGFzc2lzdGFuY2UgaW4gdGhpcyBwcm9qZWN0LgorPC9QYXJhPgorCis8UGFyYT4KK0kgd291bGQgYWxzbyBsaWtlIHRvIHRoYW5rIHRoZSBmb2xsb3dpbmcgcGVvcGxlLCB3aG8gd2VyZSBpbnZvbHZlZCBpbiB0aGUKK2Rlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSBrZXJuZWwgY29kZSBhbmQgc3VwcG9ydAordXRpbGl0aWVzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPlJlbXkgQ2FyZDwvTGl0ZXJhbD4KKworV2hvIGRlc2lnbmVkLCBpbXBsZW1lbnRlZCBhbmQgbWFpbnRhaW5zIHRoZSBleHQyIGZpbGVzeXN0ZW0ga2VybmVsCitjb2RlLCBhbmQgc29tZSBvZiB0aGUgZXh0MiB1dGlsaXRpZXMuIDxMaXRlcmFsIHJlbWFwPSJ0dCI+UmVteSBDYXJkPC9MaXRlcmFsPiBpcyBhbHNvIHRoZQorYXV0aG9yIAlvZiBzZXZlcmFsIGhlbHBmdWwgc2xpZGVzIGNvbmNlcm5pbmcgdGhlIGV4dDIgZmlsZXN5c3RlbS4KK1NwZWNpZmljYWxseSwgaGUgaXMgdGhlIGF1dGhvciBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPkZpbGUgTWFuYWdlbWVudCBpbiB0aGUgTGludXgKK0tlcm5lbDwvTGl0ZXJhbD4gYW5kIG9mIDxMaXRlcmFsIHJlbWFwPSJ0dCI+VGhlIFNlY29uZCBFeHRlbmRlZCBGaWxlIFN5c3RlbSAtIEN1cnJlbnQKK1N0YXRlLCBGdXR1cmUgRGV2ZWxvcG1lbnQ8L0xpdGVyYWw+LgorCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPldheW5lIERhdmlzb248L0xpdGVyYWw+CisKK1dobyBkZXNpZ25lZCB0aGUgZXh0MiBmaWxlc3lzdGVtLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5TdGVwaGVuIFR3ZWVkaWU8L0xpdGVyYWw+CisKK1dobyBoZWxwZWQgZGVzaWduaW5nIHRoZSBleHQyIGZpbGVzeXN0ZW0ga2VybmVsIGNvZGUgYW5kIHdyb3RlIHRoZQorc2xpZGVzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+T3B0aW1pemF0aW9ucyBpbiBGaWxlIFN5c3RlbXM8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5UaGVvZG9yZSBUcydvPC9MaXRlcmFsPgorCitXaG8gaXMgdGhlIGF1dGhvciBvZiBzZXZlcmFsIGV4dDIgdXRpbGl0aWVzIGFuZCBvZiB0aGUgZXh0MiBsaWJyYXJ5Cis8TGl0ZXJhbCByZW1hcD0idHQiPmxpYmV4dDJmczwvTGl0ZXJhbD4gKHdoaWNoIEkgZGlkbid0IHVzZSwgc2ltcGx5IGJlY2F1c2UgSSBkaWRuJ3Qga25vdworaXQgZXhpc3RzIHdoZW4gSSBzdGFydGVkIHRvIHdvcmsgb24gbXkgcHJvamVjdCkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK0xhc3RseSwgSSB3b3VsZCBsaWtlIHRvIHRoYW5rLCBvZi1jb3Vyc2UsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+TGludXMgVG9ydmFsZHM8L0xpdGVyYWw+IGFuZCB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+TGludXggY29tbXVuaXR5PC9MaXRlcmFsPiBmb3IgcHJvdmlkaW5nIGFsbCBvZiB1cyB3aXRoIHN1Y2ggYSBncmVhdCBvcGVyYXRpbmcKK3N5c3RlbS4KKzwvUGFyYT4KKworPFBhcmE+CitQbGVhc2UgY29udGFjdCBtZSBpbiBhIGNhc2Ugb2YgYnVnIHJlcG9ydCwgc3VnZ2VzdGlvbnMsIG9yIGp1c3QgYWJvdXQKK2FueXRoaW5nIGNvbmNlcm5pbmcgRVhUMkVELgorPC9QYXJhPgorCis8UGFyYT4KK0Vuam95LAorPC9QYXJhPgorCis8UGFyYT4KK0dhZGkgT3htYW4gJmx0O3RndWRAdG9jaG5hcGMyLnRlY2huaW9uLmFjLmlsJmd0OworPC9QYXJhPgorCis8UGFyYT4KK0hhaWZhLCBBdWd1c3QgOTUKKzwvUGFyYT4KKworPC9TZWN0MT4KKworPC9BcnRpY2xlPgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9kb2MvZXh0MmZzLW92ZXJ2aWV3LnNnbWwgYi9lMmZzcHJvZ3MvZXh0MmVkL2RvYy9leHQyZnMtb3ZlcnZpZXcuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmViZjVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9kb2MvZXh0MmZzLW92ZXJ2aWV3LnNnbWwKQEAgLTAsMCArMSwxNTY5IEBACis8IURPQ1RZUEUgQXJ0aWNsZSBQVUJMSUMgIi0vL0RhdmVucG9ydC8vRFREIERvY0Jvb2sgVjMuMC8vRU4iPgorCis8QXJ0aWNsZT4KKworPEFydEhlYWRlcj4KKworPFRpdGxlPlRoZSBleHRlbmRlZC0yIGZpbGVzeXN0ZW0gb3ZlcnZpZXc8L1RpdGxlPgorPEFVVEhPUgorPgorPEZpcnN0TmFtZT5HYWRpIE94bWFuLCB0Z3VkQHRvY2huYXBjMi50ZWNobmlvbi5hYy5pbDwvRmlyc3ROYW1lPgorPC9BVVRIT1IKKz4KKzxQdWJEYXRlPnYwLjEsIEF1Z3VzdCAzIDE5OTU8L1B1YkRhdGU+CisKKzwvQXJ0SGVhZGVyPgorCis8U2VjdDE+Cis8VGl0bGU+UHJlZmFjZTwvVGl0bGU+CisKKzxQYXJhPgorVGhpcyBkb2N1bWVudCBhdHRlbXB0cyB0byBwcmVzZW50IGFuIG92ZXJ2aWV3IG9mIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YKK3RoZSBleHQyIGZpbGVzeXN0ZW0uIEl0IHdhcyB3cml0dGVuIGluIHN1bW1lciA5NSwgd2hpbGUgSSB3YXMgd29ya2luZyBvbiB0aGUgCis8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDIgZmlsZXN5c3RlbSBlZGl0b3IgcHJvamVjdCAoRVhUMkVEKTwvTGl0ZXJhbD4uIAorPC9QYXJhPgorCis8UGFyYT4KK0luIHRoZSBwcm9jZXNzIG9mIGNvbnN0cnVjdGluZyBFWFQyRUQsIEkgYWNxdWlyZWQga25vd2xlZGdlIG9mIHRoZSB2YXJpb3VzIAorZGVzaWduIGFzcGVjdHMgb2YgdGhlIHRoZSBleHQyIGZpbGVzeXN0ZW0uIFRoaXMgZG9jdW1lbnQgaXMgYSByZXN1bHQgb2YgYW4KK2VmZm9ydCB0byBkb2N1bWVudCB0aGlzIGtub3dsZWRnZS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGlzIGlzIG9ubHkgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50LiBJdCBpcyBvYnZpb3VzbHkgbmVpdGhlcgorZXJyb3ItcHJvbmUgbm9yIGNvbXBsZXRlLCBidXQgYXQgbGVhc3QgaXQgcHJvdmlkZXMgYSBzdGFydGluZyBwb2ludC4KKzwvUGFyYT4KKworPFBhcmE+CitJbiB0aGUgcHJvY2VzcyBvZiBsZWFybmluZyB0aGUgc3ViamVjdCwgSSBoYXZlIHVzZWQgdGhlIGZvbGxvd2luZyBzb3VyY2VzIC8KK3Rvb2xzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlFeHBlcmltZW50aW5nIHdpdGggRVhUMkVELCBhcyBpdCB3YXMgZGV2ZWxvcGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGV4dDIga2VybmVsIHNvdXJjZXM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBtYWluIGV4dDIgaW5jbHVkZSBmaWxlLAorPEZJTEVOQU1FPi91c3IvaW5jbHVkZS9saW51eC9leHQyJmxvd2Jhcjtmcy5oPC9GSUxFTkFNRT4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBjb250ZW50cyBvZiB0aGUgZGlyZWN0b3J5IDxGSUxFTkFNRT4vdXNyL3NyYy9saW51eC9mcy9leHQyPC9GSUxFTkFNRT4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgVkZTIGxheWVyIHNvdXJjZXMgKG9ubHkgYSBiaXQpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBzbGlkZXM6IFRoZSBTZWNvbmQgRXh0ZW5kZWQgRmlsZSBTeXN0ZW0sIEN1cnJlbnQgU3RhdGUsIEZ1dHVyZQorRGV2ZWxvcG1lbnQsIGJ5IDxwZXJzb25uYW1lPjxmaXJzdG5hbWU+UmVteTwvZmlyc3RuYW1lPiA8c3VybmFtZT5DYXJkPC9zdXJuYW1lPjwvcGVyc29ubmFtZT4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgc2xpZGVzOiBPcHRpbWlzYXRpb24gaW4gRmlsZSBTeXN0ZW1zLCBieSA8cGVyc29ubmFtZT48Zmlyc3RuYW1lPlN0ZXBoZW48L2ZpcnN0bmFtZT4gPHN1cm5hbWU+VHdlZWRpZTwvc3VybmFtZT48L3BlcnNvbm5hbWU+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIHZhcmlvdXMgZXh0MiB1dGlsaXRpZXMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+SW50cm9kdWN0aW9uPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5TZWNvbmQgRXh0ZW5kZWQgRmlsZSBTeXN0ZW0gKEV4dDJmcyk8L0xpdGVyYWw+IGlzIHZlcnkgcG9wdWxhciBhbW9uZyBMaW51eAordXNlcnMuIElmIHlvdSB1c2UgTGludXgsIGNoYW5jZXMgYXJlIHRoYXQgeW91IGFyZSB1c2luZyB0aGUgZXh0MiBmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KK0V4dDJmcyB3YXMgZGVzaWduZWQgYnkgPHBlcnNvbm5hbWU+PGZpcnN0bmFtZT5SZW15PC9maXJzdG5hbWU+IDxzdXJuYW1lPkNhcmQ8L3N1cm5hbWU+PC9wZXJzb25uYW1lPiBhbmQgPHBlcnNvbm5hbWU+PGZpcnN0bmFtZT5XYXluZTwvZmlyc3RuYW1lPiA8c3VybmFtZT5EYXZpc29uPC9zdXJuYW1lPjwvcGVyc29ubmFtZT4uIEl0IHdhcworaW1wbGVtZW50ZWQgYnkgPHBlcnNvbm5hbWU+PGZpcnN0bmFtZT5SZW15PC9maXJzdG5hbWU+IDxzdXJuYW1lPkNhcmQ8L3N1cm5hbWU+PC9wZXJzb25uYW1lPiBhbmQgd2FzIGZ1cnRoZXIgZW5oYW5jZWQgYnkgPHBlcnNvbm5hbWU+PGZpcnN0bmFtZT5TdGVwaGVuPC9maXJzdG5hbWU+Cis8c3VybmFtZT5Ud2VlZGllPC9zdXJuYW1lPjwvcGVyc29ubmFtZT4gYW5kIDxwZXJzb25uYW1lPjxmaXJzdG5hbWU+VGhlb2RvcmU8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+VHMnbzwvc3VybmFtZT48L3BlcnNvbm5hbWU+LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBleHQyIGZpbGVzeXN0ZW0gaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQuIEkgd2lsbCBkb2N1bWVudCBoZXJlCit2ZXJzaW9uIDAuNWEsIHdoaWNoIGlzIGRpc3RyaWJ1dGVkIGFsb25nIHdpdGggTGludXggMS4yLnguIEF0IHRoaXMgdGltZSBvZgord3JpdGluZywgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgTGludXggaXMgMS4zLjEzLCBhbmQgdGhlIHZlcnNpb24gb2YgdGhlCitleHQyIGtlcm5lbCBzb3VyY2UgaXMgMC41Yi4gQSBsb3Qgb2YgZmFuY3kgZW5oYW5jZW1lbnRzIGFyZSBwbGFubmVkIGZvciB0aGUKK2V4dDIgZmlsZXN5c3RlbSBpbiBMaW51eCAxLjMsIHNvIHN0YXkgdHVuZWQuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5BIGZpbGVzeXN0ZW0gLSBXaHkgZG8gd2UgbmVlZCBpdD88L1RpdGxlPgorCis8UGFyYT4KK0kgdGhvdWdodCB0aGF0IGJlZm9yZSB3ZSBkaXZlIGludG8gdGhlIHZhcmlvdXMgc21hbGwgZGV0YWlscywgSSdsbCByZXNlcnZlIGEKK2ZldyBtaW51dGVzIGZvciB0aGUgZGlzY3Vzc2lvbiBvZiBmaWxlc3lzdGVtcyBmcm9tIGEgZ2VuZXJhbCBwb2ludCBvZiB2aWV3LgorPC9QYXJhPgorCis8UGFyYT4KK0EgPExpdGVyYWwgcmVtYXA9InR0Ij5maWxlc3lzdGVtPC9MaXRlcmFsPiBjb25zaXN0cyBvZiB0d28gd29yZCAtIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZTwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3lzdGVtPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFBhcmE+CitFdmVyeW9uZSBrbm93cyB0aGUgbWVhbmluZyBvZiB0aGUgd29yZCA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGU8L0xpdGVyYWw+IC0gQSBidW5jaCBvZiBkYXRhIHB1dAorc29tZXdoZXJlLiB3aGVyZT8gVGhpcyBpcyBhbiBpbXBvcnRhbnQgcXVlc3Rpb24uIEksIGZvciBleGFtcGxlLCB1c3VhbGx5Cit0aHJvdyBhbG1vc3QgZXZlcnl0aGluZyBpbnRvIGEgc2luZ2xlIGRyYXdlciwgYW5kIGhhdmUgZGlmZmljdWx0aWVzIGZpbmRpbmcKK3NvbWV0aGluZyBsYXRlci4KKzwvUGFyYT4KKworPFBhcmE+CitUaGlzIGlzIHdoZXJlIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnN5c3RlbTwvTGl0ZXJhbD4gY29tZXMgaW4gLSBJbnN0ZWFkIG9mIGp1c3QgdGhyb3dpbmcgdGhlIGRhdGEKK3RvIHRoZSBkZXZpY2UsIHdlIGdlbmVyYWxpemUgYW5kIGNvbnN0cnVjdCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3lzdGVtPC9MaXRlcmFsPiB3aGljaCB3aWxsCit2aXJ0dWFsaXplIGZvciB1cyBhIG5pY2UgYW5kIG9yZGVyZWQgc3RydWN0dXJlIGluIHdoaWNoIHdlIGNvdWxkIGFycmFuZ2Ugb3VyCitkYXRhIGluIG11Y2ggdGhlIHNhbWUgd2F5IGFzIGJvb2tzIGFyZSBhcnJhbmdlZCBpbiBhIGxpYnJhcnkuIFRoZSBwdXJwb3NlIG9mCit0aGUgZmlsZXN5c3RlbSwgYXMgSSB1bmRlcnN0YW5kIGl0LCBpcyB0byBtYWtlIGl0IGVhc3kgZm9yIHVzIHRvIHVwZGF0ZSBhbmQKK21haW50YWluIG91ciBkYXRhLgorPC9QYXJhPgorCis8UGFyYT4KK05vcm1hbGx5LCBieSA8TGl0ZXJhbCByZW1hcD0idHQiPm1vdW50aW5nPC9MaXRlcmFsPiBmaWxlc3lzdGVtcywgd2UganVzdCB1c2UgdGhlIG5pY2UgYW5kIGxvZ2ljYWwKK3ZpcnR1YWwgc3RydWN0dXJlLiBIb3dldmVyLCB0aGUgZGlzayBrbm93cyBub3RoaW5nIGFib3V0IHRoYXQgLSBUaGUgZGV2aWNlCitkcml2ZXIgdmlld3MgdGhlIGRpc2sgYXMgYSBsYXJnZSBjb250aW51b3VzIHBhcGVyIGluIHdoaWNoIHdlIGNhbiB3cml0ZSBub3Rlcword2hlcmV2ZXIgd2Ugd2lzaC4gSXQgaXMgdGhlIHRhc2sgb2YgdGhlIGZpbGVzeXN0ZW0gbWFuYWdlbWVudCBjb2RlIHRvIHN0b3JlCitib29ra2VlcGluZyBpbmZvcm1hdGlvbiB3aGljaCB3aWxsIHNlcnZlIHRoZSBrZXJuZWwgZm9yIHNob3dpbmcgdXMgdGhlIG5pY2UKK2FuZCBvcmRlcmVkIHZpcnR1YWwgc3RydWN0dXJlLgorPC9QYXJhPgorCis8UGFyYT4KK0luIHRoaXMgZG9jdW1lbnQsIHdlIGNvbnNpZGVyIG9uZSBwYXJ0aWN1bGFyIGFkbWluaXN0cmF0aXZlIHN0cnVjdHVyZSAtIFRoZQorU2Vjb25kIEV4dGVuZGVkIEZpbGVzeXN0ZW0uCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgTGludXggVkZTIGxheWVyPC9UaXRsZT4KKworPFBhcmE+CitXaGVuIExpbnV4IHdhcyBmaXJzdCBkZXZlbG9wZWQsIGl0IHN1cHBvcnRlZCBvbmx5IG9uZSBmaWxlc3lzdGVtIC0gVGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPk1pbml4PC9MaXRlcmFsPiBmaWxlc3lzdGVtLiBUb2RheSwgTGludXggaGFzIHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQgc2V2ZXJhbAorZmlsZXN5c3RlbXMgY29uY3VycmVudGx5LiBUaGlzIHdhcyBkb25lIGJ5IHRoZSBpbnRyb2R1Y3Rpb24gb2YgYW5vdGhlciBsYXllcgorYmV0d2VlbiB0aGUga2VybmVsIGFuZCB0aGUgZmlsZXN5c3RlbSBjb2RlIC0gVGhlIFZpcnR1YWwgRmlsZSBTeXN0ZW0gKFZGUykuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGtlcm5lbCAic3BlYWtzIiB3aXRoIHRoZSBWRlMgbGF5ZXIuIFRoZSBWRlMgbGF5ZXIgcGFzc2VzIHRoZSBrZXJuZWwncworcmVxdWVzdCB0byB0aGUgcHJvcGVyIGZpbGVzeXN0ZW0gbWFuYWdlbWVudCBjb2RlLiBJIGhhdmVuJ3QgbGVhcm5lZCBtdWNoIG9mCit0aGUgVkZTIGxheWVyIGFzIEkgZGlkbid0IG5lZWQgaXQgZm9yIHRoZSBjb25zdHJ1Y3Rpb24gb2YgRVhUMkVEIHNvIHRoYXQgSQorY2FuJ3QgZWxhYm9yYXRlIG9uIGl0LiBKdXN0IGJlIGF3YXJlIHRoYXQgaXQgZXhpc3RzLgorPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+QWJvdXQgYmxvY2tzIGFuZCBibG9jayBncm91cHM8L1RpdGxlPgorCis8UGFyYT4KK0luIG9yZGVyIHRvIGVhc2UgbWFuYWdlbWVudCwgdGhlIGV4dDIgZmlsZXN5c3RlbSBsb2dpY2FsbHkgZGl2aWRlcyB0aGUgZGlzaworaW50byBzbWFsbCB1bml0cyBjYWxsZWQgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9ja3M8L0xpdGVyYWw+LiBBIGJsb2NrIGlzIHRoZSBzbWFsbGVzdCB1bml0IHdoaWNoCitjYW4gYmUgYWxsb2NhdGVkLiBFYWNoIGJsb2NrIGluIHRoZSBmaWxlc3lzdGVtIGNhbiBiZSA8TGl0ZXJhbCByZW1hcD0idHQiPmFsbG9jYXRlZDwvTGl0ZXJhbD4gb3IKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZnJlZTwvTGl0ZXJhbD4uCis8Rk9PVE5PVEU+CisKKzxQYXJhPgorVGhlIEV4dDJmcyBzb3VyY2UgY29kZSByZWZlcnMgdG8gdGhlIGNvbmNlcHQgb2YgPExpdGVyYWwgcmVtYXA9InR0Ij5mcmFnbWVudHM8L0xpdGVyYWw+LCB3aGljaCBJCitiZWxpZXZlIGFyZSBzdXBwb3NlZCB0byBiZSBzdWItYmxvY2sgYWxsb2NhdGlvbnMuIEFzIGZhciBhcyBJIGtub3csCitmcmFnbWVudHMgYXJlIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBpbiBFeHQyZnMuCis8L1BhcmE+CisKKzwvRk9PVE5PVEU+CisKK1RoZSBibG9jayBzaXplIGNhbiBiZSBzZWxlY3RlZCB0byBiZSAxMDI0LCAyMDQ4IG9yIDQwOTYgYnl0ZXMgd2hlbiBjcmVhdGluZwordGhlIGZpbGVzeXN0ZW0uCis8L1BhcmE+CisKKzxQYXJhPgorRXh0MmZzIGdyb3VwcyB0b2dldGhlciBhIGZpeGVkIG51bWJlciBvZiBzZXF1ZW50aWFsIGJsb2NrcyBpbnRvIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5ncm91cAorYmxvY2s8L0xpdGVyYWw+LiBUaGUgcmVzdWx0aW5nIHNpdHVhdGlvbiBpcyB0aGF0IHRoZSBmaWxlc3lzdGVtIGlzIG1hbmFnZWQgYXMgYQorc2VyaWVzIG9mIGdyb3VwIGJsb2Nrcy4gVGhpcyBpcyBkb25lIGluIG9yZGVyIHRvIGtlZXAgcmVsYXRlZCBpbmZvcm1hdGlvbgorcGh5c2ljYWxseSBjbG9zZSBvbiB0aGUgZGlzayBhbmQgdG8gZWFzZSB0aGUgbWFuYWdlbWVudCB0YXNrLiBBcyBhIHJlc3VsdCwKK211Y2ggb2YgdGhlIGZpbGVzeXN0ZW0gbWFuYWdlbWVudCByZWR1Y2VzIHRvIG1hbmFnZW1lbnQgb2YgYSBzaW5nbGUgYmxvY2tzCitncm91cC4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSB2aWV3IG9mIGlub2RlcyBmcm9tIHRoZSBwb2ludCBvZiB2aWV3IG9mIGEgYmxvY2tzIGdyb3VwPC9UaXRsZT4KKworPFBhcmE+CitFYWNoIGZpbGUgaW4gdGhlIGZpbGVzeXN0ZW0gaXMgcmVzZXJ2ZWQgYSBzcGVjaWFsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5vZGU8L0xpdGVyYWw+LiBJIGRvbid0IHdhbnQKK3RvIGV4cGxhaW4gaW5vZGVzIG5vdy4gUmF0aGVyLCBJIHdvdWxkIGxpa2UgdG8gdHJlYXQgaXQgYXMgYW5vdGhlciByZXNvdXJjZSwKK211Y2ggbGlrZSBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YmxvY2s8L0xpdGVyYWw+IC0gRWFjaCBibG9ja3MgZ3JvdXAgY29udGFpbnMgYSBsaW1pdGVkIG51bWJlciBvZgoraW5vZGUsIHdoaWxlIGFueSBzcGVjaWZpYyBpbm9kZSBjYW4gYmUgPExpdGVyYWwgcmVtYXA9InR0Ij5hbGxvY2F0ZWQ8L0xpdGVyYWw+IG9yCis8TGl0ZXJhbCByZW1hcD0idHQiPnVuYWxsb2NhdGVkPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBncm91cCBkZXNjcmlwdG9yczwvVGl0bGU+CisKKzxQYXJhPgorRWFjaCBibG9ja3MgZ3JvdXAgaXMgYWNjb21wYW5pZWQgYnkgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmdyb3VwIGRlc2NyaXB0b3I8L0xpdGVyYWw+LiBUaGUgZ3JvdXAKK2Rlc2NyaXB0b3Igc3VtbWFyaXplcyBzb21lIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWMgZ3JvdXAKK2Jsb2NrLiBGb2xsb3dzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBncm91cCBkZXNjcmlwdG9yLCBhcyBkZWZpbmVkIGluCis8RklMRU5BTUU+L3Vzci9pbmNsdWRlL2xpbnV4L2V4dDImbG93YmFyO2ZzLmg8L0ZJTEVOQU1FPjoKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBleHQyX2dyb3VwX2Rlc2MKK3sKKwlfX3UzMgliZ19ibG9ja19iaXRtYXA7CS8qIEJsb2NrcyBiaXRtYXAgYmxvY2sgKi8KKwlfX3UzMgliZ19pbm9kZV9iaXRtYXA7CS8qIElub2RlcyBiaXRtYXAgYmxvY2sgKi8KKwlfX3UzMgliZ19pbm9kZV90YWJsZTsJCS8qIElub2RlcyB0YWJsZSBibG9jayAqLworCV9fdTE2CWJnX2ZyZWVfYmxvY2tzX2NvdW50OwkvKiBGcmVlIGJsb2NrcyBjb3VudCAqLworCV9fdTE2CWJnX2ZyZWVfaW5vZGVzX2NvdW50OwkvKiBGcmVlIGlub2RlcyBjb3VudCAqLworCV9fdTE2CWJnX3VzZWRfZGlyc19jb3VudDsJLyogRGlyZWN0b3JpZXMgY291bnQgKi8KKwlfX3UxNgliZ19wYWQ7CisJX191MzIJYmdfcmVzZXJ2ZWRbM107Cit9OworPC9Qcm9ncmFtTGlzdGluZz4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSBsYXN0IHRocmVlIHZhcmlhYmxlczogPExpdGVyYWwgcmVtYXA9InR0Ij5iZyZsb3diYXI7ZnJlZSZsb3diYXI7YmxvY2tzJmxvd2Jhcjtjb3VudCwgYmcmbG93YmFyO2ZyZWUmbG93YmFyO2lub2RlcyZsb3diYXI7Y291bnQgYW5kIGJnJmxvd2Jhcjt1c2VkJmxvd2JhcjtkaXJzJmxvd2Jhcjtjb3VudDwvTGl0ZXJhbD4gcHJvdmlkZSBzdGF0aXN0aWNzIGFib3V0IHRoZSB1c2Ugb2YgdGhlIHRocmVlCityZXNvdXJjZXMgaW4gYSBibG9ja3MgZ3JvdXAgLSBUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9ja3M8L0xpdGVyYWw+LCB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZXM8L0xpdGVyYWw+IGFuZCB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyZWN0b3JpZXM8L0xpdGVyYWw+LiBJIGJlbGlldmUgdGhhdCB0aGV5IGFyZSB1c2VkIGJ5IHRoZSBrZXJuZWwgZm9yIGJhbGFuY2luZwordGhlIGxvYWQgYmV0d2VlbiB0aGUgdmFyaW91cyBibG9ja3MgZ3JvdXBzLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YmcmbG93YmFyO2Jsb2NrJmxvd2JhcjtiaXRtYXA8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSBibG9jayBudW1iZXIgb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YmxvY2sgYWxsb2NhdGlvbgorYml0bWFwIGJsb2NrPC9MaXRlcmFsPi4gVGhpcyBpcyB1c2VkIHRvIGFsbG9jYXRlIC8gZGVhbGxvY2F0ZSBlYWNoIGJsb2NrIGluIHRoZQorc3BlY2lmaWMgYmxvY2tzIGdyb3VwLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YmcmbG93YmFyO2lub2RlJmxvd2JhcjtiaXRtYXA8L0xpdGVyYWw+IGlzIGZ1bGx5IGFuYWxvZ291cyB0byB0aGUgcHJldmlvdXMgdmFyaWFibGUgLSBJdAorY29udGFpbnMgdGhlIGJsb2NrIG51bWJlciBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZSBhbGxvY2F0aW9uIGJpdG1hcCBibG9jazwvTGl0ZXJhbD4sIHdoaWNoCitpcyB1c2VkIHRvIGFsbG9jYXRlIC8gZGVhbGxvY2F0ZSBlYWNoIHNwZWNpZmljIGlub2RlIGluIHRoZSBmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YmcmbG93YmFyO2lub2RlJmxvd2Jhcjt0YWJsZTwvTGl0ZXJhbD4gY29udGFpbnMgdGhlIGJsb2NrIG51bWJlciBvZiB0aGUgc3RhcnQgb2YgdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlIHRhYmxlIG9mIHRoZSBjdXJyZW50IGJsb2NrcyBncm91cDwvTGl0ZXJhbD4uIFRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlIHRhYmxlPC9MaXRlcmFsPiBpcworanVzdCB0aGUgYWN0dWFsIGlub2RlcyB3aGljaCBhcmUgcmVzZXJ2ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBibG9jayBiaXRtYXAgYmxvY2ssIGlub2RlIGJpdG1hcCBibG9jayBhbmQgdGhlIGlub2RlIHRhYmxlIGFyZSBjcmVhdGVkCit3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIGNyZWF0ZWQuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGdyb3VwIGRlc2NyaXB0b3JzIGFyZSBwbGFjZWQgb25lIGFmdGVyIHRoZSBvdGhlci4gVG9nZXRoZXIgdGhleSBtYWtlIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5ncm91cCBkZXNjcmlwdG9ycyB0YWJsZTwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorRWFjaCBibG9ja3MgZ3JvdXAgY29udGFpbnMgdGhlIGVudGlyZSB0YWJsZSBvZiBncm91cCBkZXNjcmlwdG9ycyBpbiBpdHMKK3NlY29uZCBibG9jaywgcmlnaHQgYWZ0ZXIgdGhlIHN1cGVyYmxvY2suIEhvd2V2ZXIsIG9ubHkgdGhlIGZpcnN0IGNvcHkgKGluCitncm91cCAwKSBpcyBhY3R1YWxseSB1c2VkIGJ5IHRoZSBrZXJuZWwuIFRoZSBvdGhlciBjb3BpZXMgYXJlIHRoZXJlIGZvcgorYmFja3VwIHB1cnBvc2VzIGFuZCBjYW4gYmUgb2YgdXNlIGlmIHRoZSBtYWluIGNvcHkgZ2V0cyBjb3JydXB0ZWQuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgYmxvY2sgYml0bWFwIGFsbG9jYXRpb24gYmxvY2s8L1RpdGxlPgorCis8UGFyYT4KK0VhY2ggYmxvY2tzIGdyb3VwIGNvbnRhaW5zIG9uZSBzcGVjaWFsIGJsb2NrIHdoaWNoIGlzIGFjdHVhbGx5IGEgbWFwIG9mIHRoZQorZW50aXJlIGJsb2NrcyBpbiB0aGUgZ3JvdXAsIHdpdGggcmVzcGVjdCB0byB0aGVpciBhbGxvY2F0aW9uIHN0YXR1cy4gRWFjaAorPExpdGVyYWwgcmVtYXA9InR0Ij5iaXQ8L0xpdGVyYWw+IGluIHRoZSBibG9jayBiaXRtYXAgaW5kaWNhdGVkIHdoZXRoZXIgYSBzcGVjaWZpYyBibG9jayBpbiB0aGUKK2dyb3VwIGlzIHVzZWQgb3IgZnJlZS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZm9ybWF0IGlzIGFjdHVhbGx5IHF1aXRlIHNpbXBsZSAtIEp1c3QgdmlldyB0aGUgZW50aXJlIGJsb2NrIGFzIGEgc2VyaWVzCitvZiBiaXRzLiBGb3IgZXhhbXBsZSwKKzwvUGFyYT4KKworPFBhcmE+CitTdXBwb3NlIHRoZSBibG9jayBzaXplIGlzIDEwMjQgYnl0ZXMuIEFzIHN1Y2gsIHRoZXJlIGlzIGEgcGxhY2UgZm9yCisxMDI0Kjg9ODE5MiBibG9ja3MgaW4gYSBncm91cCBibG9jay4gVGhpcyBudW1iZXIgaXMgb25lIG9mIHRoZSBmaWVsZHMgaW4gdGhlCitmaWxlc3lzdGVtJ3MgPExpdGVyYWwgcmVtYXA9InR0Ij5zdXBlcmJsb2NrPC9MaXRlcmFsPiwgd2hpY2ggd2lsbCBiZSBleHBsYWluZWQgbGF0ZXIuCis8L1BhcmE+CisKKzxQYXJhPgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlCbG9jayAwIGluIHRoZSBibG9ja3MgZ3JvdXAgaXMgbWFuYWdlZCBieSBiaXQgMCBvZiBieXRlIDAgaW4gdGhlIGJpdG1hcAorYmxvY2suCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlCbG9jayA3IGluIHRoZSBibG9ja3MgZ3JvdXAgaXMgbWFuYWdlZCBieSBiaXQgNyBvZiBieXRlIDAgaW4gdGhlIGJpdG1hcAorYmxvY2suCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlCbG9jayA4IGluIHRoZSBibG9ja3MgZ3JvdXAgaXMgbWFuYWdlZCBieSBiaXQgMCBvZiBieXRlIDEgaW4gdGhlIGJpdG1hcAorYmxvY2suCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlCbG9jayA4MTkxIGluIHRoZSBibG9ja3MgZ3JvdXAgaXMgbWFuYWdlZCBieSBiaXQgNyBvZiBieXRlIDEwMjMgaW4gdGhlCitiaXRtYXAgCWJsb2NrLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitBIHZhbHVlIG9mICI8TGl0ZXJhbCByZW1hcD0idHQiPjE8L0xpdGVyYWw+IiBpbiB0aGUgYXBwcm9wcmlhdGUgYml0IHNpZ25hbHMgdGhhdCB0aGUgYmxvY2sgaXMKK2FsbG9jYXRlZCwgd2hpbGUgYSB2YWx1ZSBvZiAiPExpdGVyYWwgcmVtYXA9InR0Ij4wPC9MaXRlcmFsPiIgc2lnbmFscyB0aGF0IHRoZSBibG9jayBpcwordW5hbGxvY2F0ZWQuCis8L1BhcmE+CisKKzxQYXJhPgorWW91IHdpbGwgcHJvYmFibHkgbm90aWNlIHRoYXQgdHlwaWNhbGx5LCBhbGwgdGhlIGJpdHMgaW4gYSBieXRlIGNvbnRhaW4gdGhlCitzYW1lIHZhbHVlLCBtYWtpbmcgdGhlIGJ5dGUncyB2YWx1ZSA8TGl0ZXJhbCByZW1hcD0idHQiPjA8L0xpdGVyYWw+IG9yIDxMaXRlcmFsIHJlbWFwPSJ0dCI+MGZmaDwvTGl0ZXJhbD4uIFRoaXMgaXMgZG9uZSBieQordGhlIGtlcm5lbCBvbiBwdXJwb3NlIGluIG9yZGVyIHRvIGdyb3VwIHJlbGF0ZWQgZGF0YSBpbiBwaHlzaWNhbGx5IGNsb3NlCitibG9ja3MsIHNpbmNlIHRoZSBwaHlzaWNhbCBkZXZpY2UgaXMgdXN1YWxseSBvcHRpbWl6ZWQgdG8gaGFuZGxlIHN1Y2ggYSBjbG9zZQorcmVsYXRpb25zaGlwLgorPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+VGhlIGlub2RlIGFsbG9jYXRpb24gYml0bWFwPC9UaXRsZT4KKworPFBhcmE+CitUaGUgZm9ybWF0IG9mIHRoZSBpbm9kZSBhbGxvY2F0aW9uIGJpdG1hcCBibG9jayBpcyBleGFjdGx5IGxpa2UgdGhlIGZvcm1hdCBvZgordGhlIGJsb2NrIGFsbG9jYXRpb24gYml0bWFwIGJsb2NrLiBUaGUgZXhwbGFuYXRpb24gYWJvdmUgaXMgdmFsaWQgaGVyZSwgd2l0aAordGhlIHdvcmsgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9jazwvTGl0ZXJhbD4gcmVwbGFjZWQgYnkgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZTwvTGl0ZXJhbD4uIFR5cGljYWxseSwgdGhlcmUgYXJlIG11Y2ggbGVzcworaW5vZGVzIHRoZW4gYmxvY2tzIGluIGEgYmxvY2tzIGdyb3VwIGFuZCB0aHVzIG9ubHkgcGFydCBvZiB0aGUgaW5vZGUgYml0bWFwCitibG9jayBpcyB1c2VkLiBUaGUgbnVtYmVyIG9mIGlub2RlcyBpbiBhIGJsb2NrcyBncm91cCBpcyBhbm90aGVyIHZhcmlhYmxlCit3aGljaCBpcyBsaXN0ZWQgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3VwZXJibG9jazwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5PbiB0aGUgaW5vZGUgYW5kIHRoZSBpbm9kZSB0YWJsZXM8L1RpdGxlPgorCis8UGFyYT4KK0FuIGlub2RlIGlzIGEgbWFpbiByZXNvdXJjZSBpbiB0aGUgZXh0MiBmaWxlc3lzdGVtLiBJdCBpcyB1c2VkIGZvciB2YXJpb3VzCitwdXJwb3NlcywgYnV0IHRoZSBtYWluIHR3byBhcmU6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVN1cHBvcnQgb2YgZmlsZXMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVN1cHBvcnQgb2YgZGlyZWN0b3JpZXMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzxQYXJhPgorRWFjaCBmaWxlLCBmb3IgZXhhbXBsZSwgd2lsbCBhbGxvY2F0ZSBvbmUgaW5vZGUgZnJvbSB0aGUgZmlsZXN5c3RlbQorcmVzb3VyY2VzLgorPC9QYXJhPgorCis8UGFyYT4KK0FuIGV4dDIgZmlsZXN5c3RlbSBoYXMgYSB0b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlIGlub2RlcyB3aGljaCBpcyBkZXRlcm1pbmVkCit3aGlsZSBjcmVhdGluZyB0aGUgZmlsZXN5c3RlbS4gV2hlbiBhbGwgdGhlIGlub2RlcyBhcmUgdXNlZCwgZm9yIGV4YW1wbGUsIHlvdQord2lsbCBub3QgYmUgYWJsZSB0byBjcmVhdGUgYW4gYWRkaXRpb25hbCBmaWxlIGV2ZW4gdGhvdWdoIHRoZXJlIHdpbGwgc3RpbGwKK2JlIGZyZWUgYmxvY2tzIG9uIHRoZSBmaWxlc3lzdGVtLiAKKzwvUGFyYT4KKworPFBhcmE+CitFYWNoIGlub2RlIHRha2VzIHVwIDEyOCBieXRlcyBpbiB0aGUgZmlsZXN5c3RlbS4gQnkgZGVmYXVsdCwgPExpdGVyYWwgcmVtYXA9InR0Ij5ta2UyZnM8L0xpdGVyYWw+CityZXNlcnZlcyBhbiBpbm9kZSBmb3IgZWFjaCA0MDk2IGJ5dGVzIG9mIHRoZSBmaWxlc3lzdGVtIHNwYWNlLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBpbm9kZXMgYXJlIHBsYWNlZCBpbiBzZXZlcmFsIHRhYmxlcywgZWFjaCBvZiB3aGljaCBjb250YWlucyB0aGUgc2FtZQorbnVtYmVyIG9mIGlub2RlcyBhbmQgaXMgcGxhY2VkIGF0IGEgZGlmZmVyZW50IGJsb2NrcyBncm91cC4gVGhlIGdvYWwgaXMgdG8KK3BsYWNlIGlub2RlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWxlcyBpbiB0aGUgc2FtZSBibG9ja3MgZ3JvdXAgYmVjYXVzZSBvZgorbG9jYWxpdHkgYXJndW1lbnRzLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBudW1iZXIgb2YgaW5vZGVzIGluIGEgYmxvY2tzIGdyb3VwIGlzIGF2YWlsYWJsZSBpbiB0aGUgc3VwZXJibG9jayB2YXJpYWJsZQorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2Jhcjtpbm9kZXMmbG93YmFyO3BlciZsb3diYXI7Z3JvdXA8L0xpdGVyYWw+LiBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIDIwMDAgaW5vZGVzIHBlciBncm91cCwKK2dyb3VwIDAgd2lsbCBjb250YWluIHRoZSBpbm9kZXMgMS0yMDAwLCBncm91cCAyIHdpbGwgY29udGFpbiB0aGUgaW5vZGVzCisyMDAxLTQwMDAsIGFuZCBzbyBvbi4KKzwvUGFyYT4KKworPFBhcmE+CitFYWNoIGlub2RlIHRhYmxlIGlzIGFjY2Vzc2VkIGZyb20gdGhlIGdyb3VwIGRlc2NyaXB0b3Igb2YgdGhlIHNwZWNpZmljCitibG9ja3MgZ3JvdXAgd2hpY2ggY29udGFpbnMgdGhlIHRhYmxlLgorPC9QYXJhPgorCis8UGFyYT4KK0ZvbGxvd3MgdGhlIHN0cnVjdHVyZSBvZiBhbiBpbm9kZSBpbiBFeHQyZnM6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3QgZXh0Ml9pbm9kZSB7CisJX191MTYJaV9tb2RlOwkJLyogRmlsZSBtb2RlICovCisJX191MTYJaV91aWQ7CQkvKiBPd25lciBVaWQgKi8KKwlfX3UzMglpX3NpemU7CQkvKiBTaXplIGluIGJ5dGVzICovCisJX191MzIJaV9hdGltZTsJLyogQWNjZXNzIHRpbWUgKi8KKwlfX3UzMglpX2N0aW1lOwkvKiBDcmVhdGlvbiB0aW1lICovCisJX191MzIJaV9tdGltZTsJLyogTW9kaWZpY2F0aW9uIHRpbWUgKi8KKwlfX3UzMglpX2R0aW1lOwkvKiBEZWxldGlvbiBUaW1lICovCisJX191MTYJaV9naWQ7CQkvKiBHcm91cCBJZCAqLworCV9fdTE2CWlfbGlua3NfY291bnQ7CS8qIExpbmtzIGNvdW50ICovCisJX191MzIJaV9ibG9ja3M7CS8qIEJsb2NrcyBjb3VudCAqLworCV9fdTMyCWlfZmxhZ3M7CS8qIEZpbGUgZmxhZ3MgKi8KKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlfX3UzMiAgbF9pX3Jlc2VydmVkMTsKKwkJfSBsaW51eDE7CisJCXN0cnVjdCB7CisJCQlfX3UzMiAgaF9pX3RyYW5zbGF0b3I7CisJCX0gaHVyZDE7CisJCXN0cnVjdCB7CisJCQlfX3UzMiAgbV9pX3Jlc2VydmVkMTsKKwkJfSBtYXNpeDE7CisJfSBvc2QxOwkJCQkvKiBPUyBkZXBlbmRlbnQgMSAqLworCV9fdTMyCWlfYmxvY2tbRVhUMl9OX0JMT0NLU107LyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIJaV92ZXJzaW9uOwkvKiBGaWxlIHZlcnNpb24gKGZvciBORlMpICovCisJX191MzIJaV9maWxlX2FjbDsJLyogRmlsZSBBQ0wgKi8KKwlfX3UzMglpX2Rpcl9hY2w7CS8qIERpcmVjdG9yeSBBQ0wgKi8KKwlfX3UzMglpX2ZhZGRyOwkvKiBGcmFnbWVudCBhZGRyZXNzICovCisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJX191OAlsX2lfZnJhZzsJLyogRnJhZ21lbnQgbnVtYmVyICovCisJCQlfX3U4CWxfaV9mc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAqLworCQkJX191MTYJaV9wYWQxOworCQkJX191MzIJbF9pX3Jlc2VydmVkMlsyXTsKKwkJfSBsaW51eDI7CisJCXN0cnVjdCB7CisJCQlfX3U4CWhfaV9mcmFnOwkvKiBGcmFnbWVudCBudW1iZXIgKi8KKwkJCV9fdTgJaF9pX2ZzaXplOwkvKiBGcmFnbWVudCBzaXplICovCisJCQlfX3UxNgloX2lfbW9kZV9oaWdoOworCQkJX191MTYJaF9pX3VpZF9oaWdoOworCQkJX191MTYJaF9pX2dpZF9oaWdoOworCQkJX191MzIJaF9pX2F1dGhvcjsKKwkJfSBodXJkMjsKKwkJc3RydWN0IHsKKwkJCV9fdTgJbV9pX2ZyYWc7CS8qIEZyYWdtZW50IG51bWJlciAqLworCQkJX191OAltX2lfZnNpemU7CS8qIEZyYWdtZW50IHNpemUgKi8KKwkJCV9fdTE2CW1fcGFkMTsKKwkJCV9fdTMyCW1faV9yZXNlcnZlZDJbMl07CisJCX0gbWFzaXgyOworCX0gb3NkMjsJCQkJLyogT1MgZGVwZW5kZW50IDIgKi8KK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgYWxsb2NhdGVkIGJsb2NrczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgYW4gaW5vZGUgaXMgdG8gZ3JvdXAgdG9nZXRoZXIgYSBzZXJpZXMgb2YKK2FsbG9jYXRlZCBibG9ja3MuIFRoZXJlIGlzIG5vIGxpbWl0YXRpb24gb24gdGhlIGFsbG9jYXRlZCBibG9ja3MgLSBFYWNoCitibG9jayBjYW4gYmUgYWxsb2NhdGVkIHRvIGVhY2ggaW5vZGUuIE5ldmVydGhlbGVzcywgYmxvY2sgYWxsb2NhdGlvbiB3aWxsCit1c3VhbGx5IGJlIGRvbmUgaW4gc2VyaWVzIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBsb2NhbGl0eSBwcmluY2lwbGUuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGlub2RlIGlzIG5vdCBhbHdheXMgdXNlZCBpbiB0aGF0IHdheS4gSSB3aWxsIG5vdyBleHBsYWluIHRoZSBhbGxvY2F0aW9uCitvZiBibG9ja3MsIGFzc3VtaW5nIHRoYXQgdGhlIGN1cnJlbnQgaW5vZGUgdHlwZSBpbmRlZWQgcmVmZXJzIHRvIGEgbGlzdCBvZgorYWxsb2NhdGVkIGJsb2Nrcy4KKzwvUGFyYT4KKworPFBhcmE+CitJdCB3YXMgZm91bmQgZXhwZXJpbWVudGx5IHRoYXQgbWFueSBvZiB0aGUgZmlsZXMgaW4gdGhlIGZpbGVzeXN0ZW0gYXJlCithY3R1YWxseSBxdWl0ZSBzbWFsbC4gVG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhpcyBlZmZlY3QsIHRoZSBrZXJuZWwgcHJvdmlkZXMKK3N0b3JhZ2Ugb2YgdXAgdG8gMTIgYmxvY2sgbnVtYmVycyBpbiB0aGUgaW5vZGUgaXRzZWxmLiBUaG9zZSBibG9ja3MgYXJlCitjYWxsZWQgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXJlY3QgYmxvY2tzPC9MaXRlcmFsPi4gVGhlIGFkdmFudGFnZSBpcyB0aGF0IG9uY2UgdGhlIGtlcm5lbCBoYXMgdGhlCitpbm9kZSwgaXQgY2FuIGRpcmVjdGx5IGFjY2VzcyB0aGUgZmlsZSdzIGJsb2Nrcywgd2l0aG91dCBhbiBhZGRpdGlvbmFsIGRpc2sKK2FjY2Vzcy4gVGhvc2UgMTIgYmxvY2tzIGFyZSBkaXJlY3RseSBzcGVjaWZpZWQgaW4gdGhlIHZhcmlhYmxlcworPExpdGVyYWwgcmVtYXA9InR0Ij5pJmxvd2JhcjtibG9ja1swXSB0byBpJmxvd2JhcjtibG9ja1sxMV08L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7YmxvY2tbMTJdPC9MaXRlcmFsPiBpcyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbmRpcmVjdCBibG9jazwvTGl0ZXJhbD4gLSBUaGUgYmxvY2sgcG9pbnRlZCBieQoraSZsb3diYXI7YmxvY2smbHNxYjsxMl0gd2lsbCA8TGl0ZXJhbCByZW1hcD0idHQiPm5vdDwvTGl0ZXJhbD4gYmUgYSBkYXRhIGJsb2NrLiBSYXRoZXIsIGl0IHdpbGwganVzdCBjb250YWluIGEKK2xpc3Qgb2YgZGlyZWN0IGJsb2Nrcy4gRm9yIGV4YW1wbGUsIGlmIHRoZSBibG9jayBzaXplIGlzIDEwMjQgYnl0ZXMsIHNpbmNlCitlYWNoIGJsb2NrIG51bWJlciBpcyA0IGJ5dGVzIGxvbmcsIHRoZXJlIHdpbGwgYmUgcGxhY2UgZm9yIDI1NiBpbmRpcmVjdAorYmxvY2tzLiBUaGF0IGlzLCBibG9jayAxMyB0aWxsIGJsb2NrIDI2OCBpbiB0aGUgZmlsZSB3aWxsIGJlIGFjY2Vzc2VkIGJ5IHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5pbmRpcmVjdCBibG9jazwvTGl0ZXJhbD4gbWV0aG9kLiBUaGUgcGVuYWx0eSBpbiB0aGlzIGNhc2UsIGNvbXBhcmVkIHRvIHRoZQorZGlyZWN0IGJsb2NrcyBjYXNlLCBpcyB0aGF0IGFuIGFkZGl0aW9uYWwgYWNjZXNzIHRvIHRoZSBkZXZpY2UgaXMgbmVlZGVkIC0KK1dlIG5lZWQgPExpdGVyYWwgcmVtYXA9InR0Ij50d288L0xpdGVyYWw+IGFjY2Vzc2VzIHRvIHJlYWNoIHRoZSByZXF1aXJlZCBkYXRhIGJsb2NrLgorPC9QYXJhPgorCis8UGFyYT4KK0luIG11Y2ggdGhlIHNhbWUgd2F5LCA8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO2Jsb2NrWzEzXTwvTGl0ZXJhbD4gaXMgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZG91YmxlIGluZGlyZWN0IGJsb2NrPC9MaXRlcmFsPgorYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7YmxvY2tbMTRdPC9MaXRlcmFsPiBpcyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij50cmlwbGUgaW5kaXJlY3QgYmxvY2s8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7YmxvY2tbMTNdPC9MaXRlcmFsPiBwb2ludHMgdG8gYSBibG9jayB3aGljaCBjb250YWlucyBwb2ludGVycyB0byBpbmRpcmVjdAorYmxvY2tzLiBFYWNoIG9uZSBvZiB0aGVtIGlzIGhhbmRsZWQgaW4gdGhlIHdheSBkZXNjcmliZWQgYWJvdmUuCis8L1BhcmE+CisKKzxQYXJhPgorSW4gbXVjaCB0aGUgc2FtZSB3YXksIHRoZSB0cmlwbGUgaW5kaXJlY3QgYmxvY2sgaXMganVzdCBhbiBhZGRpdGlvbmFsIGxldmVsCitvZiBpbmRpcmVjdGlvbiAtIEl0IHdpbGwgcG9pbnQgdG8gYSBsaXN0IG9mIGRvdWJsZSBpbmRpcmVjdCBibG9ja3MuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaGUgaSZsb3diYXI7bW9kZSB2YXJpYWJsZTwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGkmbG93YmFyO21vZGUgdmFyaWFibGUgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aW5vZGUgdHlwZTwvTGl0ZXJhbD4gYW5kIHRoZQorYXNzb2NpYXRlZCA8TGl0ZXJhbCByZW1hcD0idHQiPnBlcm1pc3Npb25zPC9MaXRlcmFsPi4gSXQgaXMgYmVzdCBkZXNjcmliZWQgYnkgcmVwcmVzZW50aW5nIGl0IGFzIGFuCitvY3RhbCBudW1iZXIuIFNpbmNlIGl0IGlzIGEgMTYgYml0IHZhcmlhYmxlLCB0aGVyZSB3aWxsIGJlIDYgb2N0YWwgZGlnaXRzLgorVGhvc2UgYXJlIGRpdmlkZWQgaW50byB0d28gcGFydHMgLSBUaGUgcmlnaHRtb3N0IDQgZGlnaXRzIGFuZCB0aGUgbGVmdG1vc3QgMgorZGlnaXRzLgorPC9QYXJhPgorCis8U2VjdDM+Cis8VGl0bGU+VGhlIHJpZ2h0bW9zdCA0IG9jdGFsIGRpZ2l0czwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHJpZ2h0bW9zdCA0IGRpZ2l0cyBhcmUgPExpdGVyYWwgcmVtYXA9InR0Ij5iaXQgb3B0aW9uczwvTGl0ZXJhbD4gLSBFYWNoIGJpdCBoYXMgaXRzIG93bgorcHVycG9zZS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgbGFzdCAzIGRpZ2l0cyAoT2N0YWwgZGlnaXRzIDAsMSBhbmQgMikgYXJlIGp1c3QgdGhlIHVzdWFsIHBlcm1pc3Npb25zLAoraW4gdGhlIGtub3duIGZvcm0gPExpdGVyYWwgcmVtYXA9InR0Ij5yd3hyd3hyd3g8L0xpdGVyYWw+LiBEaWdpdCAyIHJlZmVycyB0byB0aGUgdXNlciwgZGlnaXQgMSB0bwordGhlIGdyb3VwIGFuZCBkaWdpdCAyIHRvIGV2ZXJ5b25lIGVsc2UuIFRoZXkgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCB0byBncmFudAorb3IgZGVueSBhY2Nlc3MgdG8gdGhlIG9iamVjdCBwcmVzZW50ZWQgYnkgdGhpcyBpbm9kZS4KKzxGT09UTk9URT4KKworPFBhcmE+CitBIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c21hcnRlcjwvTGl0ZXJhbD4gcGVybWlzc2lvbnMgY29udHJvbCBpcyBvbmUgb2YgdGhlIGVuaGFuY2VtZW50cyBwbGFubmVkIGZvcgorTGludXggMS4zIC0gVGhlIEFDTCAoQWNjZXNzIENvbnRyb2wgTGlzdHMpLiBBY3R1YWxseSwgZnJvbSBicm93c2luZyBvZiB0aGUKK2tlcm5lbCBzb3VyY2UsIHNvbWUgb2YgdGhlIEFDTCBoYW5kbGluZyBpcyBhbHJlYWR5IGRvbmUuCis8L1BhcmE+CisKKzwvRk9PVE5PVEU+CisKKzwvUGFyYT4KKworPFBhcmE+CitCaXQgbnVtYmVyIDkgc2lnbmFscyB0aGF0IHRoZSBmaWxlIChJJ2xsIHJlZmVyIHRvIHRoZSBvYmplY3QgcHJlc2VudGVkIGJ5Cit0aGUgaW5vZGUgYXMgZmlsZSBldmVuIHRob3VnaCBpdCBjYW4gYmUgYSBzcGVjaWFsIGRldmljZSwgZm9yIGV4YW1wbGUpIGlzCis8TGl0ZXJhbCByZW1hcD0idHQiPnNldCBWVFg8L0xpdGVyYWw+LiBJIHN0aWxsIGRvbid0IGtub3cgd2hhdCBpcyB0aGUgbWVhbmluZyBvZiAiVlRYIi4KKzwvUGFyYT4KKworPFBhcmE+CitCaXQgbnVtYmVyIDEwIHNpZ25hbHMgdGhhdCB0aGUgZmlsZSBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPnNldCBncm91cCBpZDwvTGl0ZXJhbD4gLSBJIGRvbid0IGtub3cKK2V4YWN0bHkgdGhlIG1lYW5pbmcgb2YgdGhlIGFib3ZlIGVpdGhlci4KKzwvUGFyYT4KKworPFBhcmE+CitCaXQgbnVtYmVyIDExIHNpZ25hbHMgdGhhdCB0aGUgZmlsZSBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPnNldCB1c2VyIGlkPC9MaXRlcmFsPiwgd2hpY2ggbWVhbnMgdGhhdAordGhlIGZpbGUgd2lsbCBydW4gd2l0aCBhbiBlZmZlY3RpdmUgdXNlciBpZCByb290LgorPC9QYXJhPgorCis8L1NlY3QzPgorCis8U2VjdDM+Cis8VGl0bGU+VGhlIGxlZnRtb3N0IHR3byBvY3RhbCBkaWdpdHM8L1RpdGxlPgorCis8UGFyYT4KK05vdGUgdGhlIHRoZSBsZWZ0bW9zdCBvY3RhbCBkaWdpdCBjYW4gb25seSBiZSAwIG9yIDEsIHNpbmNlIHRoZSB0b3RhbCBudW1iZXIKK29mIGJpdHMgaXMgMTYuCis8L1BhcmE+CisKKzxQYXJhPgorVGhvc2UgZGlnaXRzLCBhcyBvcHBvc2VkIHRvIHRoZSByaWdodG1vc3QgNCBkaWdpdHMsIGFyZSBub3QgYml0IG1hcHBlZAorb3B0aW9ucy4gVGhleSBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlICJmaWxlIiB0byB3aGljaCB0aGUgaW5vZGUgYmVsb25nczoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij4wMTwvTGl0ZXJhbD4gLSBUaGUgZmlsZSBpcyBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+RklGTzwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPjAyPC9MaXRlcmFsPiAtIFRoZSBmaWxlIGlzIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5jaGFyYWN0ZXIgZGV2aWNlPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+MDQ8L0xpdGVyYWw+IC0gVGhlIGZpbGUgaXMgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpcmVjdG9yeTwvTGl0ZXJhbD4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPjA2PC9MaXRlcmFsPiAtIFRoZSBmaWxlIGlzIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9jayBkZXZpY2U8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij4xMDwvTGl0ZXJhbD4gLSBUaGUgZmlsZSBpcyBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cmVndWxhciBmaWxlPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+MTI8L0xpdGVyYWw+IC0gVGhlIGZpbGUgaXMgYSA8TGl0ZXJhbCByZW1hcD0idHQiPnN5bWJvbGljIGxpbms8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij4xNDwvTGl0ZXJhbD4gLSBUaGUgZmlsZSBpcyBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c29ja2V0PC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5UaW1lIGFuZCBkYXRlPC9UaXRsZT4KKworPFBhcmE+CitMaW51eCByZWNvcmRzIHRoZSBsYXN0IHRpbWUgaW4gd2hpY2ggdmFyaW91cyBvcGVyYXRpb25zIG9jY3VyZWQgd2l0aCB0aGUKK2ZpbGUuIFRoZSB0aW1lIGFuZCBkYXRlIGFyZSBzYXZlZCBpbiB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5IGZvcm1hdCAtIFRoZQorbnVtYmVyIG9mIHNlY29uZHMgd2hpY2ggcGFzc2VkIHNpbmNlIDAwOjAwOjAwIEdNVCwgSmFudWFyeSAxLCAxOTcwLiBUaGUKK2ZvbGxvd2luZyB0aW1lcyBhcmUgcmVjb3JkZWQ6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7Y3RpbWU8L0xpdGVyYWw+IC0gVGhlIHRpbWUgaW4gd2hpY2ggdGhlIGlub2RlIHdhcyBsYXN0IGFsbG9jYXRlZC4gSW4KK290aGVyIHdvcmRzLCB0aGUgdGltZSBpbiB3aGljaCB0aGUgZmlsZSB3YXMgY3JlYXRlZC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7bXRpbWU8L0xpdGVyYWw+IC0gVGhlIHRpbWUgaW4gd2hpY2ggdGhlIGZpbGUgd2FzIGxhc3QgbW9kaWZpZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO2F0aW1lPC9MaXRlcmFsPiAtIFRoZSB0aW1lIGluIHdoaWNoIHRoZSBmaWxlIHdhcyBsYXN0IGFjY2Vzc2VkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5pJmxvd2JhcjtkdGltZTwvTGl0ZXJhbD4gLSBUaGUgdGltZSBpbiB3aGljaCB0aGUgaW5vZGUgd2FzIGRlYWxsb2NhdGVkLiBJbgorb3RoZXIgd29yZHMsIHRoZSB0aW1lIGluIHdoaWNoIHRoZSBmaWxlIHdhcyBkZWxldGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPmkmbG93YmFyO3NpemU8L1RpdGxlPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpemUgb2YgdGhlIG9iamVjdCBwcmVzZW50ZWQgYnkKK3RoZSBpbm9kZS4gSWYgdGhlIGlub2RlIGNvcnJlc3BvbmRzIHRvIGEgcmVndWxhciBmaWxlLCB0aGlzIGlzIGp1c3QgdGhlIHNpemUKK29mIHRoZSBmaWxlIGluIGJ5dGVzLiBJbiBvdGhlciBjYXNlcywgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZSB2YXJpYWJsZSBpcworZGlmZmVyZW50LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+VXNlciBhbmQgZ3JvdXAgaWQ8L1RpdGxlPgorCis8UGFyYT4KK1RoZSB1c2VyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBhcmUganVzdCBzYXZlZCBpbiB0aGUgdmFyaWFibGVzCis8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO3VpZDwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7Z2lkPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkhhcmQgbGlua3M8L1RpdGxlPgorCis8UGFyYT4KK0xhdGVyLCB3aGVuIHdlJ2xsIGRpc2N1c3MgdGhlIGltcGxlbWVudGF0aW9uIG9mIGRpcmVjdG9yaWVzLCBpdCB3aWxsIGJlCitleHBsYWluZWQgdGhhdCBlYWNoIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyZWN0b3J5IGVudHJ5PC9MaXRlcmFsPiBwb2ludHMgdG8gYW4gaW5vZGUuIEl0IGlzIHF1aXRlCitwb3NzaWJsZSB0aGF0IGEgPExpdGVyYWwgcmVtYXA9InR0Ij5zaW5nbGUgaW5vZGU8L0xpdGVyYWw+IHdpbGwgYmUgcG9pbnRlZCB0byBmcm9tIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c2V2ZXJhbDwvTGl0ZXJhbD4KK2RpcmVjdG9yaWVzLiBJbiB0aGF0IGNhc2UsIHdlIHNheSB0aGF0IHRoZXJlIGV4aXN0IDxMaXRlcmFsIHJlbWFwPSJ0dCI+aGFyZCBsaW5rczwvTGl0ZXJhbD4gdG8gdGhlCitmaWxlIC0gVGhlIGZpbGUgY2FuIGJlIGFjY2Vzc2VkIGZyb20gZWFjaCBvZiB0aGUgZGlyZWN0b3JpZXMuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGtlcm5lbCBrZWVwcyB0cmFjayBvZiB0aGUgbnVtYmVyIG9mIGhhcmQgbGlua3MgaW4gdGhlIHZhcmlhYmxlCis8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO2xpbmtzJmxvd2Jhcjtjb3VudDwvTGl0ZXJhbD4uIFRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiIHdoZW4gZmlyc3QgYWxsb2NhdGluZyB0aGUKK2lub2RlLCBhbmQgaXMgaW5jcmVtZW50ZWQgd2l0aCBlYWNoIGFkZGl0aW9uYWwgbGluay4gRGVsZXRpb24gb2YgYSBmaWxlIHdpbGwKK2RlbGV0ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgZW50cnkgYW5kIHdpbGwgZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgbGlua3MuCitPbmx5IHdoZW4gdGhpcyBudW1iZXIgcmVhY2hlcyB6ZXJvLCB0aGUgaW5vZGUgd2lsbCBiZSBhY3R1YWxseSBkZWFsbG9jYXRlZC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgbmFtZSA8TGl0ZXJhbCByZW1hcD0idHQiPmhhcmQgbGluazwvTGl0ZXJhbD4gaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBhbGlhcyBtZXRob2QKK2Rlc2NyaWJlZCBhYm92ZSwgdG8gYW5vdGhlciBhbGlhcyBtZXRob2QgY2FsbGVkIDxMaXRlcmFsIHJlbWFwPSJ0dCI+c3ltYm9saWMgbGlua2luZzwvTGl0ZXJhbD4sCit3aGljaCB3aWxsIGJlIGRlc2NyaWJlZCBsYXRlci4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlRoZSBFeHQyZnMgZXh0ZW5kZWQgZmxhZ3M8L1RpdGxlPgorCis8UGFyYT4KK1RoZSBleHQyIGZpbGVzeXN0ZW0gYXNzb2NpYXRlcyBhZGRpdGlvbmFsIGZsYWdzIHdpdGggYW4gaW5vZGUuIFRoZSBleHRlbmRlZAorYXR0cmlidXRlcyBhcmUgc3RvcmVkIGluIHRoZSB2YXJpYWJsZSA8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO2ZsYWdzPC9MaXRlcmFsPi4gPExpdGVyYWwgcmVtYXA9InR0Ij5pJmxvd2JhcjtmbGFnczwvTGl0ZXJhbD4gaXMgYSAzMgorYml0IHZhcmlhYmxlLiBPbmx5IHRoZSA3IHJpZ2h0bW9zdCBiaXRzIGFyZSBkZWZpbmVkLiBPZiB0aGVtLCBvbmx5IDUgYml0cworYXJlIHVzZWQgaW4gdmVyc2lvbiAwLjVhIG9mIHRoZSBmaWxlc3lzdGVtLiBTcGVjaWZpY2FsbHksIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij51bmRlbGV0ZTwvTGl0ZXJhbD4gYW5kIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmNvbXByZXNzPC9MaXRlcmFsPiBmZWF0dXJlcyBhcmUgbm90IGltcGxlbWVudGVkLCBhbmQKK2FyZSB0byBiZSBpbnRyb2R1Y2VkIGluIExpbnV4IDEuMyBkZXZlbG9wbWVudC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgY3VycmVudGx5IGF2YWlsYWJsZSBmbGFncyBhcmU6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWJpdCAwIC0gU2VjdXJlIGRlbGV0aW9uLgorCitXaGVuIHRoaXMgYml0IGlzIG9uLCB0aGUgZmlsZSdzIGJsb2NrcyBhcmUgemVyb2VkIHdoZW4gdGhlIGZpbGUgaXMKK2RlbGV0ZWQuIFdpdGggdGhpcyBiaXQgb2ZmLCB0aGV5IHdpbGwganVzdCBiZSBsZWZ0IHdpdGggdGhlaXIKK29yaWdpbmFsIGRhdGEgd2hlbiB0aGUgaW5vZGUgaXMgZGVhbGxvY2F0ZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwliaXQgMSAtIFVuZGVsZXRlLgorCQorVGhpcyBiaXQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuIEl0IHdpbGwgYmUgdXNlZCB0byBwcm92aWRlIGFuCis8TGl0ZXJhbCByZW1hcD0idHQiPnVuZGVsZXRlPC9MaXRlcmFsPiBmZWF0dXJlIGluIGZ1dHVyZSBFeHQyZnMgZGV2ZWxvcG1lbnRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJYml0IDIgLSBDb21wcmVzcyBmaWxlLgorCitUaGlzIGJpdCBpcyBhbHNvIG5vdCBzdXBwb3J0ZWQuIFRoZSBwbGFuIGlzIHRvIG9mZmVyICJjb21wcmVzc2lvbiBvbgordGhlIGZseSIgaW4gZnV0dXJlIHJlbGVhc2VzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJYml0IDMgLSBTeW5jaHJvbm91cyB1cGRhdGVzLgorCitXaXRoIHRoaXMgYml0IG9uLCB0aGUgbWV0YS1kYXRhIHdpbGwgYmUgd3JpdHRlbiBzeW5jaHJvbm91c2x5IHRvIHRoZQorZGlzaywgYXMgaWYgdGhlIGZpbGVzeXN0ZW0gd2FzIG1vdW50ZWQgd2l0aCB0aGUgInN5bmMiIG1vdW50IG9wdGlvbi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCWJpdCA0IC0gSW1tdXRhYmxlIGZpbGUuCisKK1doZW4gdGhpcyBiaXQgaXMgb24sIHRoZSBmaWxlIHdpbGwgc3RheSBhcyBpdCBpcyAtIENhbiBub3QgYmUKK2NoYW5nZWQsIGRlbGV0ZWQsIHJlbmFtZWQsIG5vIGhhcmQgbGlua3MsIGV0YywgYmVmb3JlIHRoZSBiaXQgaXMKK2NsZWFyZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwliaXQgNSAtIEFwcGVuZCBvbmx5IGZpbGUuCisJCitXaXRoIHRoaXMgb3B0aW9uIGFjdGl2ZSwgZGF0YSB3aWxsIG9ubHkgYmUgYXBwZW5kZWQgdG8gdGhlIGZpbGUuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwliaXQgNiAtIERvIG5vdCBkdW1wIHRoaXMgZmlsZS4KKworSSB0aGluayB0aGF0IHRoaXMgYml0IGlzIHVzZWQgYnkgdGhlIHBvcnQgb2YgZHVtcCB0byBsaW51eCAocG9ydGVkIGJ5Cis8TGl0ZXJhbCByZW1hcD0idHQiPlJlbXkgQ2FyZDwvTGl0ZXJhbD4pIHRvIGNoZWNrIGlmIHRoZSBmaWxlIHNob3VsZCBub3QgYmUgZHVtcGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPlN5bWJvbGljIGxpbmtzPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5oYXJkIGxpbmtzPC9MaXRlcmFsPiBwcmVzZW50ZWQgYWJvdmUgYXJlIGp1c3QgYW5vdGhlciBwb2ludGVycyB0byB0aGUgc2FtZQoraW5vZGUuIFRoZSBpbXBvcnRhbnQgYXNwZWN0IGlzIHRoYXQgdGhlIGlub2RlIG51bWJlciBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPmZpeGVkPC9MaXRlcmFsPiB3aGVuCit0aGUgbGluayBpcyBjcmVhdGVkLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlCitmaWxlc3lzdGVtIGFyZSB2aXNpYmxlIHRvIHRoZSB1c2VyIC0gSW4gYSBwdXJlIGFic3RyYWN0IHVzYWdlIG9mIHRoZQorZmlsZXN5c3RlbSwgdGhlIHVzZXIgc2hvdWxkIG5vdCBjYXJlIGFib3V0IGlub2Rlcy4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgYWJvdmUgY2F1c2VzIHNldmVyYWwgbGltaXRhdGlvbnM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUhhcmQgbGlua3MgY2FuIGJlIGRvbmUgb25seSBpbiB0aGUgc2FtZSBmaWxlc3lzdGVtLiBUaGlzIGlzIG9idmlvdXMsCitzaW5jZSBhIGhhcmQgbGluayBpcyBqdXN0IGFuIGlub2RlIG51bWJlciBpbiBzb21lIGRpcmVjdG9yeSBlbnRyeSwKK2FuZCB0aGUgYWJvdmUgZWxlbWVudHMgYXJlIGZpbGVzeXN0ZW0gc3BlY2lmaWMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlZb3UgY2FuIG5vdCAicmVwbGFjZSIgdGhlIGZpbGUgd2hpY2ggaXMgcG9pbnRlZCB0byBieSB0aGUgaGFyZCBsaW5rCithZnRlciB0aGUgbGluayBjcmVhdGlvbi4gIlJlcGxhY2luZyIgdGhlIGZpbGUgaW4gb25lIGRpcmVjdG9yeSB3aWxsCitzdGlsbCBsZWF2ZSB0aGUgb3JpZ2luYWwgZmlsZSBpbiB0aGUgb3RoZXIgZGlyZWN0b3J5IC0gVGhlCisicmVwbGFjZW1lbnQiIHdpbGwgbm90IGRlYWxsb2NhdGUgdGhlIG9yaWdpbmFsIGlub2RlLCBidXQgcmF0aGVyCithbGxvY2F0ZSBhbm90aGVyIGlub2RlIGZvciB0aGUgbmV3IHZlcnNpb24sIGFuZCB0aGUgZGlyZWN0b3J5IGVudHJ5CithdCB0aGUgb3RoZXIgcGxhY2Ugd2lsbCBqdXN0IHBvaW50IHRvIHRoZSBvbGQgaW5vZGUgbnVtYmVyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPlN5bWJvbGljIGxpbms8L0xpdGVyYWw+LCBvbiB0aGUgb3RoZXIgaGFuZCwgaXMgYW5hbHl6ZWQgYXQgPExpdGVyYWwgcmVtYXA9InR0Ij5ydW4gdGltZTwvTGl0ZXJhbD4uIEEKK3N5bWJvbGljIGxpbmsgaXMganVzdCBhIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cGF0aG5hbWU8L0xpdGVyYWw+IHdoaWNoIGlzIGFjY2Vzc2libGUgZnJvbSBhbiBpbm9kZS4KK0FzIHN1Y2gsIGl0ICJzcGVha3MiIGluIHRoZSBsYW5ndWFnZSBvZiB0aGUgYWJzdHJhY3QgZmlsZXN5c3RlbS4gV2hlbiB0aGUKK2tlcm5lbCByZWFjaGVzIGEgc3ltYm9saWMgbGluaywgaXQgd2lsbCA8TGl0ZXJhbCByZW1hcD0idHQiPmZvbGxvdyBpdCBpbiBydW4gdGltZTwvTGl0ZXJhbD4gdXNpbmcKK2l0cyBub3JtYWwgd2F5IG9mIHJlYWNoaW5nIGRpcmVjdG9yaWVzLgorPC9QYXJhPgorCis8UGFyYT4KK0FzIHN1Y2gsIHN5bWJvbGljIGxpbmsgY2FuIGJlIG1hZGUgPExpdGVyYWwgcmVtYXA9InR0Ij5hY3Jvc3MgZGlmZmVyZW50IGZpbGVzeXN0ZW1zPC9MaXRlcmFsPiBhbmQgYQorcmVwbGFjZW1lbnQgb2YgYSBmaWxlIHdpdGggYSBuZXcgdmVyc2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgYWN0aXZlIG9uIGFsbAoraXRzIHN5bWJvbGljIGxpbmtzLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBoYXJkIGxpbmsgZG9lc24ndCBjb25zdW1lIHNwYWNlIGV4Y2VwdCB0byBhIHNtYWxsCitkaXJlY3RvcnkgZW50cnkuIFN5bWJvbGljIGxpbmssIG9uIHRoZSBvdGhlciBoYW5kLCBjb25zdW1lcyBhdCBsZWFzdCBhbgoraW5vZGUsIGFuZCBjYW4gYWxzbyBjb25zdW1lIG9uZSBibG9jay4KKzwvUGFyYT4KKworPFBhcmE+CitXaGVuIHRoZSBpbm9kZSBpcyBpZGVudGlmaWVkIGFzIGEgc3ltYm9saWMgbGluaywgdGhlIGtlcm5lbCBuZWVkcyB0byBmaW5kCit0aGUgcGF0aCB0byB3aGljaCBpdCBwb2ludHMuCis8L1BhcmE+CisKKzxTZWN0Mz4KKzxUaXRsZT5GYXN0IHN5bWJvbGljIGxpbmtzPC9UaXRsZT4KKworPFBhcmE+CitXaGVuIHRoZSBwYXRobmFtZSBjb250YWlucyB1cCB0byA2NCBieXRlcywgaXQgY2FuIGJlIHNhdmVkIGRpcmVjdGx5IGluIHRoZQoraW5vZGUsIG9uIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO2Jsb2NrWzBdIC0gaSZsb3diYXI7YmxvY2tbMTVdPC9MaXRlcmFsPiB2YXJpYWJsZXMsIHNpbmNlIHRob3NlIGFyZSBub3QKK25lZWRlZCBpbiB0aGF0IGNhc2UuIFRoaXMgaXMgY2FsbGVkIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmFzdDwvTGl0ZXJhbD4gc3ltYm9saWMgbGluay4gSXQgaXMgZmFzdAorYmVjYXVzZSB0aGUgcGF0aG5hbWUgcmVzb2x1dGlvbiBjYW4gYmUgZG9uZSB1c2luZyB0aGUgaW5vZGUgaXRzZWxmLCB3aXRob3V0CithY2Nlc3NpbmcgYWRkaXRpb25hbCBibG9ja3MuIEl0IGlzIGFsc28gZWNvbm9taWNhbCwgc2luY2UgaXQgYWxsb2NhdGVzIG9ubHkKK2FuIGlub2RlLiBUaGUgbGVuZ3RoIG9mIHRoZSBwYXRobmFtZSBpcyBzdG9yZWQgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4KK3ZhcmlhYmxlLgorPC9QYXJhPgorCis8L1NlY3QzPgorCis8U2VjdDM+Cis8VGl0bGU+U2xvdyBzeW1ib2xpYyBsaW5rczwvVGl0bGU+CisKKzxQYXJhPgorU3RhcnRpbmcgZnJvbSA2NSBieXRlcywgYWRkaXRpb25hbCBibG9jayBpcyBhbGxvY2F0ZWQgKGJ5IHRoZSB1c2Ugb2YKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7YmxvY2tbMF08L0xpdGVyYWw+KSBhbmQgdGhlIHBhdGhuYW1lIGlzIHN0b3JlZCBpbiBpdC4gSXQgaXMgY2FsbGVkIHNsb3cKK2JlY2F1c2UgdGhlIGtlcm5lbCBuZWVkcyB0byByZWFkIGFkZGl0aW9uYWwgYmxvY2sgdG8gcmVzb2x2ZSB0aGUgcGF0aG5hbWUuCitUaGUgbGVuZ3RoIGlzIGFnYWluIHNhdmVkIGluIDxMaXRlcmFsIHJlbWFwPSJ0dCI+aSZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5pJmxvd2Jhcjt2ZXJzaW9uPC9UaXRsZT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPmkmbG93YmFyO3ZlcnNpb248L0xpdGVyYWw+IGlzIHVzZWQgd2l0aCByZWdhcmQgdG8gTmV0d29yayBGaWxlIFN5c3RlbS4gSSBkb24ndCBrbm93CitpdHMgZXhhY3QgdXNlLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+UmVzZXJ2ZWQgdmFyaWFibGVzPC9UaXRsZT4KKworPFBhcmE+CitBcyBmYXIgYXMgSSBrbm93LCB0aGUgdmFyaWFibGVzIHdoaWNoIGFyZSBjb25uZWN0ZWQgdG8gQUNMIGFuZCBmcmFnbWVudHMKK2FyZSBub3QgY3VycmVudGx5IHVzZWQuIFRoZXkgd2lsbCBiZSBzdXBwb3J0ZWQgaW4gZnV0dXJlIHZlcnNpb25zLgorPC9QYXJhPgorCis8UGFyYT4KK0V4dDJmcyBpcyBiZWluZyBwb3J0ZWQgdG8gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMuIEFzIGZhciBhcyBJIGtub3csCithdCBsZWFzdCBpbiBsaW51eCwgdGhlIG9zIGRlcGVuZGVudCB2YXJpYWJsZXMgYXJlIGFsc28gbm90IHVzZWQuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5TcGVjaWFsIHJlc2VydmVkIGlub2RlczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGZpcnN0IHRlbiBpbm9kZXMgb24gdGhlIGZpbGVzeXN0ZW0gYXJlIHNwZWNpYWwgaW5vZGVzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbm9kZSAxIGlzIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJhZCBibG9ja3MgaW5vZGU8L0xpdGVyYWw+IC0gSSBiZWxpZXZlIHRoYXQgaXRzIGRhdGEKK2Jsb2NrcyBjb250YWluIGEgbGlzdCBvZiB0aGUgYmFkIGJsb2NrcyBpbiB0aGUgZmlsZXN5c3RlbSwgd2hpY2gKK3Nob3VsZCBub3QgYmUgYWxsb2NhdGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJSW5vZGUgMiBpcyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5yb290IGlub2RlPC9MaXRlcmFsPiAtIFRoZSBpbm9kZSBvZiB0aGUgcm9vdCBkaXJlY3RvcnkuCitJdCBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWNoaW5nIGEga25vd24gcGF0aCBpbiB0aGUgZmlsZXN5c3RlbS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUlub2RlIDMgaXMgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YWNsIGluZGV4IGlub2RlPC9MaXRlcmFsPi4gQWNjZXNzIGNvbnRyb2wgbGlzdHMgYXJlCitjdXJyZW50bHkgbm90IHN1cHBvcnRlZCBieSB0aGUgZXh0MiBmaWxlc3lzdGVtLCBzbyBJIGJlbGlldmUgdGhpcworaW5vZGUgaXMgbm90IHVzZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbm9kZSA0IGlzIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmFjbCBkYXRhIGlub2RlPC9MaXRlcmFsPi4gT2YgY291cnNlLCB0aGUgYWJvdmUgYXBwbGllcworaGVyZSB0b28uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbm9kZSA1IGlzIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJvb3QgbG9hZGVyIGlub2RlPC9MaXRlcmFsPi4gSSBkb24ndCBrbm93IGl0cwordXNhZ2UuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbm9kZSA2IGlzIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZTwvTGl0ZXJhbD4uIEl0IGlzIGFsc28gYQorZm91bmRhdGlvbiBmb3IgZnV0dXJlIGVuaGFuY2VtZW50cywgYW5kIGlzIGN1cnJlbnRseSBub3QgdXNlZC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUlub2RlcyA3LTEwIGFyZSA8TGl0ZXJhbCByZW1hcD0idHQiPnJlc2VydmVkPC9MaXRlcmFsPiBhbmQgY3VycmVudGx5IG5vdCB1c2VkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkRpcmVjdG9yaWVzPC9UaXRsZT4KKworPFBhcmE+CitBIGRpcmVjdG9yeSBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZmlsZXMgYXJlIGltcGxlbWVudGVkICh3aXRoCit0aGUgZGlyZWN0IGJsb2NrcywgaW5kaXJlY3QgYmxvY2tzLCBldGMpIC0gSXQgaXMganVzdCBhIGZpbGUgd2hpY2ggaXMKK2Zvcm1hdHRlZCB3aXRoIGEgc3BlY2lhbCBmb3JtYXQgLSBBIGxpc3Qgb2YgZGlyZWN0b3J5IGVudHJpZXMuCis8L1BhcmE+CisKKzxQYXJhPgorRm9sbG93cyB0aGUgZGVmaW5pdGlvbiBvZiBhIGRpcmVjdG9yeSBlbnRyeToKKzwvUGFyYT4KKworPFBhcmE+CisKKzxQcm9ncmFtTGlzdGluZz4KK3N0cnVjdCBleHQyX2Rpcl9lbnRyeSB7CisJX191MzIJaW5vZGU7CQkJLyogSW5vZGUgbnVtYmVyICovCisJX191MTYJcmVjX2xlbjsJCS8qIERpcmVjdG9yeSBlbnRyeSBsZW5ndGggKi8KKwlfX3UxNgluYW1lX2xlbjsJCS8qIE5hbWUgbGVuZ3RoICovCisJY2hhcgluYW1lW0VYVDJfTkFNRV9MRU5dOwkvKiBGaWxlIG5hbWUgKi8KK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzxQYXJhPgorRXh0MmZzIHN1cHBvcnRzIGZpbGUgbmFtZXMgb2YgdmFyeWluZyBsZW5ndGhzLCB1cCB0byAyNTUgYnl0ZXMuIFRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5uYW1lPC9MaXRlcmFsPiBmaWVsZCBhYm92ZSBqdXN0IGNvbnRhaW5zIHRoZSBmaWxlIG5hbWUuIE5vdGUgdGhhdCBpdCBpcworPExpdGVyYWwgcmVtYXA9InR0Ij5ub3QgemVybyB0ZXJtaW5hdGVkPC9MaXRlcmFsPjsgSW5zdGVhZCwgdGhlIHZhcmlhYmxlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bmFtZSZsb3diYXI7bGVuPC9MaXRlcmFsPiBjb250YWlucwordGhlIGxlbmd0aCBvZiB0aGUgZmlsZSBuYW1lLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSB2YXJpYWJsZSA8TGl0ZXJhbCByZW1hcD0idHQiPnJlYyZsb3diYXI7bGVuPC9MaXRlcmFsPiBpcyBwcm92aWRlZCBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgZW50cmllcyBhcmUKK3BhZGRlZCB3aXRoIHplcm9lcyBzbyB0aGF0IHRoZSBuZXh0IGVudHJ5IHdpbGwgYmUgaW4gYW4gb2Zmc2V0IHdoaWNoIGlzCithIG11bHRpcGxpdGlvbiBvZiA0LiBUaGUgcmVzdWx0aW5nIGRpcmVjdG9yeSBlbnRyeSBzaXplIGlzIHN0b3JlZCBpbgorPExpdGVyYWwgcmVtYXA9InR0Ij5yZWMmbG93YmFyO2xlbjwvTGl0ZXJhbD4uIElmIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgdGhlIGxhc3QgaW4gdGhlIGJsb2NrLCBpdCBpcworcGFkZGVkIHdpdGggemVyb2VzIHRpbGwgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIGFuZCByZWMmbG93YmFyO2xlbiBpcyB1cGRhdGVkCithY2NvcmRpbmdseS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZTwvTGl0ZXJhbD4gdmFyaWFibGUgcG9pbnRzIHRvIHRoZSBpbm9kZSBvZiB0aGUgYWJvdmUgZmlsZS4KKzwvUGFyYT4KKworPFBhcmE+CitEZWxldGlvbiBvZiBkaXJlY3RvcnkgZW50cmllcyBpcyBkb25lIGJ5IGFwcGVuZGluZyBvZiB0aGUgZGVsZXRlZCBlbnRyeQorc3BhY2UgdG8gdGhlIHByZXZpb3VzIChvciBuZXh0LCBJIGFtIG5vdCBzdXJlKSBlbnRyeS4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBzdXBlcmJsb2NrPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zdXBlcmJsb2NrPC9MaXRlcmFsPiBpcyBhIGJsb2NrIHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIHdoaWNoIGRlc2NyaWJlcwordGhlIHN0YXRlIG9mIHRoZSBpbnRlcm5hbCBmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBzdXBlcmJsb2NrIGlzIGxvY2F0ZWQgYXQgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+Zml4ZWQgb2Zmc2V0IDEwMjQ8L0xpdGVyYWw+IGluIHRoZSBkZXZpY2UuIEl0cworbGVuZ3RoIGlzIDEwMjQgYnl0ZXMgYWxzby4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgc3VwZXJibG9jaywgbGlrZSB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMsIGlzIGNvcGllZCBvbiBlYWNoIGJsb2NrcyBncm91cAorYm91bmRhcnkgZm9yIGJhY2t1cCBwdXJwb3Nlcy4gSG93ZXZlciwgb25seSB0aGUgbWFpbiBjb3B5IGlzIHVzZWQgYnkgdGhlCitrZXJuZWwuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIHN1cGVyYmxvY2sgY29udGFpbiB0aHJlZSB0eXBlcyBvZiBpbmZvcm1hdGlvbjoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJRmlsZXN5c3RlbSBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBmaXhlZCBhbmQgd2hpY2ggd2VyZSBkZXRlcm1pbmVkIHdoZW4KK3RoaXMgc3BlY2lmaWMgZmlsZXN5c3RlbSB3YXMgY3JlYXRlZC4gU29tZSBvZiB0aG9zZSBwYXJhbWV0ZXJzIGNhbgorYmUgZGlmZmVyZW50IGluIGRpZmZlcmVudCBpbnN0YWxsYXRpb25zIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0sIGJ1dAorY2FuIG5vdCBiZSBjaGFuZ2VkIG9uY2UgdGhlIGZpbGVzeXN0ZW0gd2FzIGNyZWF0ZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlGaWxlc3lzdGVtIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHR1bmFibGUgLSBDYW4gYWx3YXlzIGJlIGNoYW5nZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudCBmaWxlc3lzdGVtIHN0YXRlLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitGb2xsb3dzIHRoZSBzdXBlcmJsb2NrIGRlZmluaXRpb246Cis8L1BhcmE+CisKKzxQYXJhPgorCis8UHJvZ3JhbUxpc3Rpbmc+CitzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayB7CisJX191MzIJc19pbm9kZXNfY291bnQ7CQkvKiBJbm9kZXMgY291bnQgKi8KKwlfX3UzMglzX2Jsb2Nrc19jb3VudDsJCS8qIEJsb2NrcyBjb3VudCAqLworCV9fdTMyCXNfcl9ibG9ja3NfY291bnQ7CS8qIFJlc2VydmVkIGJsb2NrcyBjb3VudCAqLworCV9fdTMyCXNfZnJlZV9ibG9ja3NfY291bnQ7CS8qIEZyZWUgYmxvY2tzIGNvdW50ICovCisJX191MzIJc19mcmVlX2lub2Rlc19jb3VudDsJLyogRnJlZSBpbm9kZXMgY291bnQgKi8KKwlfX3UzMglzX2ZpcnN0X2RhdGFfYmxvY2s7CS8qIEZpcnN0IERhdGEgQmxvY2sgKi8KKwlfX3UzMglzX2xvZ19ibG9ja19zaXplOwkvKiBCbG9jayBzaXplICovCisJX19zMzIJc19sb2dfZnJhZ19zaXplOwkvKiBGcmFnbWVudCBzaXplICovCisJX191MzIJc19ibG9ja3NfcGVyX2dyb3VwOwkvKiAjIEJsb2NrcyBwZXIgZ3JvdXAgKi8KKwlfX3UzMglzX2ZyYWdzX3Blcl9ncm91cDsJLyogIyBGcmFnbWVudHMgcGVyIGdyb3VwICovCisJX191MzIJc19pbm9kZXNfcGVyX2dyb3VwOwkvKiAjIElub2RlcyBwZXIgZ3JvdXAgKi8KKwlfX3UzMglzX210aW1lOwkJLyogTW91bnQgdGltZSAqLworCV9fdTMyCXNfd3RpbWU7CQkvKiBXcml0ZSB0aW1lICovCisJX191MTYJc19tbnRfY291bnQ7CQkvKiBNb3VudCBjb3VudCAqLworCV9fczE2CXNfbWF4X21udF9jb3VudDsJLyogTWF4aW1hbCBtb3VudCBjb3VudCAqLworCV9fdTE2CXNfbWFnaWM7CQkvKiBNYWdpYyBzaWduYXR1cmUgKi8KKwlfX3UxNglzX3N0YXRlOwkJLyogRmlsZSBzeXN0ZW0gc3RhdGUgKi8KKwlfX3UxNglzX2Vycm9yczsJCS8qIEJlaGF2aW91ciB3aGVuIGRldGVjdGluZyBlcnJvcnMgKi8KKwlfX3UxNglzX3BhZDsKKwlfX3UzMglzX2xhc3RjaGVjazsJCS8qIHRpbWUgb2YgbGFzdCBjaGVjayAqLworCV9fdTMyCXNfY2hlY2tpbnRlcnZhbDsJLyogbWF4LiB0aW1lIGJldHdlZW4gY2hlY2tzICovCisJX191MzIJc19jcmVhdG9yX29zOwkJLyogT1MgKi8KKwlfX3UzMglzX3Jldl9sZXZlbDsJCS8qIFJldmlzaW9uIGxldmVsICovCisJX191MTYJc19kZWZfcmVzdWlkOwkJLyogRGVmYXVsdCB1aWQgZm9yIHJlc2VydmVkIGJsb2NrcyAqLworCV9fdTE2CXNfZGVmX3Jlc2dpZDsJCS8qIERlZmF1bHQgZ2lkIGZvciByZXNlcnZlZCBibG9ja3MgKi8KKwlfX3UzMglzX3Jlc2VydmVkWzIzNV07CS8qIFBhZGRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2sgKi8KK307Cis8L1Byb2dyYW1MaXN0aW5nPgorCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5zdXBlcmJsb2NrIGlkZW50aWZpY2F0aW9uPC9UaXRsZT4KKworPFBhcmE+CitUaGUgZXh0MiBmaWxlc3lzdGVtJ3Mgc3VwZXJibG9jayBpcyBpZGVudGlmaWVkIGJ5IHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO21hZ2ljPC9MaXRlcmFsPiBmaWVsZC4KK1RoZSBjdXJyZW50IGV4dDIgbWFnaWMgbnVtYmVyIGlzIDB4RUY1My4gSSBwcmVzdW1lIHRoYXQgIkVGIiBtZWFucyAiRXh0ZW5kZWQKK0ZpbGVzeXN0ZW0iLiBJbiB2ZXJzaW9ucyBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtIHByaW9yIHRvIDAuMkIsIHRoZSBtYWdpYworbnVtYmVyIHdhcyAweEVGNTEuIFRob3NlIGZpbGVzeXN0ZW1zIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50Cit2ZXJzaW9uczsgU3BlY2lmaWNhbGx5LCB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQuIEkKK2RvdWJ0IGlmIHRoZXJlIHN0aWxsIGV4aXN0cyBzdWNoIGEgaW5zdGFsbGF0aW9uLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+RmlsZXN5c3RlbSBmaXhlZCBwYXJhbWV0ZXJzPC9UaXRsZT4KKworPFBhcmE+CitCeSB1c2luZyB0aGUgd29yZCA8TGl0ZXJhbCByZW1hcD0idHQiPmZpeGVkPC9MaXRlcmFsPiwgSSBtZWFuIGZpeGVkIHdpdGggcmVzcGVjdCB0byBhIHBhcnRpY3VsYXIKK2luc3RhbGxhdGlvbi4gVGhvc2UgdmFyaWFibGVzIGFyZSB1c3VhbGx5IG5vdCBmaXhlZCB3aXRoIHJlc3BlY3QgdG8KK2RpZmZlcmVudCBpbnN0YWxsYXRpb25zLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJsb2NrIHNpemU8L0xpdGVyYWw+IGlzIGRldGVybWluZWQgYnkgdXNpbmcgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7bG9nJmxvd2JhcjtibG9jayZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4KK3ZhcmlhYmxlLiBUaGUgYmxvY2sgc2l6ZSBpcyAxMDI0KnBvdyAoMixzJmxvd2Jhcjtsb2cmbG93YmFyO2Jsb2NrJmxvd2JhcjtzaXplKSBhbmQgc2hvdWxkIGJlCitiZXR3ZWVuIDEwMjQgYW5kIDQwOTYuIFRoZSBhdmFpbGFibGUgb3B0aW9ucyBhcmUgMTAyNCwgMjA0OCBhbmQgNDA5Ni4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2lub2RlcyZsb3diYXI7Y291bnQ8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlIGlub2Rlcy4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2Jsb2NrcyZsb3diYXI7Y291bnQ8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSB0b3RhbCBudW1iZXIgb2YgYXZhaWxhYmxlIGJsb2Nrcy4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2ZpcnN0Jmxvd2JhcjtkYXRhJmxvd2JhcjtibG9jazwvTGl0ZXJhbD4gc3BlY2lmaWVzIGluIHdoaWNoIG9mIHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmRldmljZSBibG9jazwvTGl0ZXJhbD4gdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPnN1cGVyYmxvY2s8L0xpdGVyYWw+IGlzIHByZXNlbnQuIFRoZSBzdXBlcmJsb2NrIGlzIGFsd2F5cyBwcmVzZW50IGF0IHRoZSBmaXhlZAorb2Zmc2V0IDEwMjQsIGJ1dCB0aGUgZGV2aWNlIGJsb2NrIG51bWJlcmluZyBjYW4gZGlmZmVyLiBGb3IgZXhhbXBsZSwgaWYgdGhlCitibG9jayBzaXplIGlzIDEwMjQsIHRoZSBzdXBlcmJsb2NrIHdpbGwgYmUgYXQgPExpdGVyYWwgcmVtYXA9InR0Ij5ibG9jayAxPC9MaXRlcmFsPiB3aXRoIHJlc3BlY3QgdG8KK3RoZSBkZXZpY2UuIEhvd2V2ZXIsIGlmIHRoZSBibG9jayBzaXplIGlzIDQwOTYsIG9mZnNldCAxMDI0IGlzIGluY2x1ZGVkIGluCis8TGl0ZXJhbCByZW1hcD0idHQiPmJsb2NrIDA8L0xpdGVyYWw+IG9mIHRoZSBkZXZpY2UsIGFuZCBpbiB0aGF0IGNhc2UgPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtmaXJzdCZsb3diYXI7ZGF0YSZsb3diYXI7YmxvY2s8L0xpdGVyYWw+Cit3aWxsIGNvbnRhaW4gMC4gQXQgbGVhc3QgdGhpcyBpcyBob3cgSSB1bmRlcnN0b29kIHRoaXMgdmFyaWFibGUuCis8L1BhcmE+CisKKzxQYXJhPgorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtibG9ja3MmbG93YmFyO3BlciZsb3diYXI7Z3JvdXA8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgYmxvY2tzIHdoaWNoIGFyZSBncm91cGVkCit0b2dldGhlciBhcyBhIGJsb2NrcyBncm91cC4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2lub2RlcyZsb3diYXI7cGVyJmxvd2Jhcjtncm91cDwvTGl0ZXJhbD4gY29udGFpbnMgdGhlIG51bWJlciBvZiBpbm9kZXMgYXZhaWxhYmxlIGluIGEgZ3JvdXAKK2Jsb2NrLiBJIHRoaW5rIHRoYXQgdGhpcyBpcyBhbHdheXMgdGhlIHRvdGFsIG51bWJlciBvZiBpbm9kZXMgZGl2aWRlZCBieSB0aGUKK251bWJlciBvZiBibG9ja3MgZ3JvdXBzLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7Y3JlYXRvciZsb3diYXI7b3M8L0xpdGVyYWw+IGNvbnRhaW5zIGEgY29kZSBudW1iZXIgd2hpY2ggc3BlY2lmaWVzIHRoZSBvcGVyYXRpbmcKK3N5c3RlbSB3aGljaCBjcmVhdGVkIHRoaXMgc3BlY2lmaWMgZmlsZXN5c3RlbToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5MaW51eDwvTGl0ZXJhbD4gOi0pIGlzIHNwZWNpZmllZCBieSB0aGUgdmFsdWUgPExpdGVyYWwgcmVtYXA9InR0Ij4wPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxMaXRlcmFsIHJlbWFwPSJ0dCI+SHVyZDwvTGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJ5IHRoZSB2YWx1ZSA8TGl0ZXJhbCByZW1hcD0idHQiPjE8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5NYXNpeDwvTGl0ZXJhbD4gaXMgc3BlY2lmaWVkIGJ5IHRoZSB2YWx1ZSA8TGl0ZXJhbCByZW1hcD0idHQiPjI8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO3JldiZsb3diYXI7bGV2ZWw8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0uCitDdXJyZW50bHkgdGhpcyBpcyBhbHdheXMgPExpdGVyYWwgcmVtYXA9InR0Ij4wPC9MaXRlcmFsPiwgYXMgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gaXMgMC41Qi4gSXQKK3dpbGwgcHJvYmFibHkgdGFrZSBzb21lIHRpbWUgdW50aWwgd2UgcmVhY2ggdmVyc2lvbiAxLjAuCis8L1BhcmE+CisKKzxQYXJhPgorQXMgZmFyIGFzIEkga25vdywgZnJhZ21lbnRzIChzdWItYmxvY2sgYWxsb2NhdGlvbnMpIGFyZSBjdXJyZW50bHkgbm90CitzdXBwb3J0ZWQgYW5kIGhlbmNlIGEgYmxvY2sgaXMgZXF1YWwgdG8gYSBmcmFnbWVudC4gQXMgYSByZXN1bHQsCis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2xvZyZsb3diYXI7ZnJhZyZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7ZnJhZ3MmbG93YmFyO3BlciZsb3diYXI7Z3JvdXA8L0xpdGVyYWw+IGFyZSBhbHdheXMgZXF1YWwgdG8KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7bG9nJmxvd2JhcjtibG9jayZsb3diYXI7c2l6ZTwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7YmxvY2tzJmxvd2JhcjtwZXImbG93YmFyO2dyb3VwPC9MaXRlcmFsPiwgcmVzcGVjdGl2ZWx5LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+RXh0MmZzIGVycm9yIGhhbmRsaW5nPC9UaXRsZT4KKworPFBhcmE+CitUaGUgZXh0MiBmaWxlc3lzdGVtIGVycm9yIGhhbmRsaW5nIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGhpbG9zb3BoeToKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJZGVudGlmaWNhdGlvbiBvZiBwcm9ibGVtcyBpcyBkb25lIGJ5IHRoZSBrZXJuZWwgY29kZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBjb3JyZWN0aW9uIHRhc2sgaXMgbGVmdCB0byBhbiBleHRlcm5hbCB1dGlsaXR5LCBzdWNoIGFzCis8TGl0ZXJhbCByZW1hcD0idHQiPmUyZnNjayBieSBUaGVvZG9yZSBUcydvPC9MaXRlcmFsPiBmb3IgPExpdGVyYWwgcmVtYXA9InR0Ij5hdXRvbWF0aWM8L0xpdGVyYWw+IGFuYWx5c2lzIGFuZAorY29ycmVjdGlvbiwgb3IgcGVyaGFwcyA8TGl0ZXJhbCByZW1hcD0idHQiPmRlYnVnZnMgYnkgVGhlb2RvcmUgVHMnbzwvTGl0ZXJhbD4gYW5kCis8TGl0ZXJhbCByZW1hcD0idHQiPkVYVDJFRCBieSBteXNlbGY8L0xpdGVyYWw+LCBmb3IgPExpdGVyYWwgcmVtYXA9InR0Ij5oYW5kPC9MaXRlcmFsPiBhbmFseXNpcyBhbmQgY29ycmVjdGlvbi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvT3JkZXJlZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtzdGF0ZTwvTGl0ZXJhbD4gdmFyaWFibGUgaXMgdXNlZCBieSB0aGUga2VybmVsIHRvIHBhc3MgdGhlIGlkZW50aWZpY2F0aW9uCityZXN1bHQgdG8gdGhpcmQgcGFydHkgdXRpbGl0aWVzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPmJpdCAwPC9MaXRlcmFsPiBvZiBzJmxvd2JhcjtzdGF0ZSBpcyByZXNldCB3aGVuIHRoZSBwYXJ0aXRpb24gaXMgbW91bnRlZCBhbmQKK3NldCB3aGVuIHRoZSBwYXJ0aXRpb24gaXMgdW5tb3VudGVkLiBUaHVzLCBhIHZhbHVlIG9mIDAgb24gYW4KK3VubW91bnRlZCBmaWxlc3lzdGVtIG1lYW5zIHRoYXQgdGhlIGZpbGVzeXN0ZW0gd2FzIG5vdCB1bm1vdW50ZWQKK3Byb3Blcmx5IC0gVGhlIGZpbGVzeXN0ZW0gaXMgbm90ICJjbGVhbiIgYW5kIHByb2JhYmx5IGNvbnRhaW5zCitlcnJvcnMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPmJpdCAxPC9MaXRlcmFsPiBvZiBzJmxvd2JhcjtzdGF0ZSBpcyBzZXQgYnkgdGhlIGtlcm5lbCB3aGVuIGl0IGRldGVjdHMgYW4KK2Vycm9yIGluIHRoZSBmaWxlc3lzdGVtLiBBIHZhbHVlIG9mIDAgZG9lc24ndCBtZWFuIHRoYXQgdGhlcmUgaXNuJ3QKK2FuIGVycm9yIGluIHRoZSBmaWxlc3lzdGVtLCBqdXN0IHRoYXQgdGhlIGtlcm5lbCBkaWRuJ3QgZmluZCBhbnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSBrZXJuZWwgYmVoYXZpb3Igd2hlbiBhbiBlcnJvciBpcyBmb3VuZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB1c2VyIHR1bmFibGUKK3BhcmFtZXRlciA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2Vycm9yczwvTGl0ZXJhbD46CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBrZXJuZWwgd2lsbCBpZ25vcmUgdGhlIGVycm9yIGFuZCBjb250aW51ZSBpZiA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2Vycm9ycz0xPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBrZXJuZWwgd2lsbCByZW1vdW50IHRoZSBmaWxlc3lzdGVtIGluIHJlYWQtb25seSBtb2RlIGlmCis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2Vycm9ycz0yPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUEga2VybmVsIHBhbmljIHdpbGwgYmUgaXNzdWVkIGlmIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7ZXJyb3JzPTM8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZGVmYXVsdCBiZWhhdmlvciBpcyB0byBpZ25vcmUgdGhlIGVycm9yLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+QWRkaXRpb25hbCBwYXJhbWV0ZXJzIHVzZWQgYnkgZTJmc2NrPC9UaXRsZT4KKworPFBhcmE+CitPZi1jb3Vyc2UsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZTJmc2NrPC9MaXRlcmFsPiB3aWxsIGNoZWNrIHRoZSBmaWxlc3lzdGVtIGlmIGVycm9ycyB3ZXJlIGRldGVjdGVkCitvciBpZiB0aGUgZmlsZXN5c3RlbSBpcyBub3QgY2xlYW4uCis8L1BhcmE+CisKKzxQYXJhPgorSW4gYWRkaXRpb24sIGVhY2ggdGltZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLCA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO21udCZsb3diYXI7Y291bnQ8L0xpdGVyYWw+IGlzCitpbmNyZW1lbnRlZC4gV2hlbiBzJmxvd2JhcjttbnQmbG93YmFyO2NvdW50IHJlYWNoZXMgPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjttYXgmbG93YmFyO21udCZsb3diYXI7Y291bnQ8L0xpdGVyYWw+LCA8TGl0ZXJhbCByZW1hcD0idHQiPmUyZnNjazwvTGl0ZXJhbD4KK3dpbGwgZm9yY2UgYSBjaGVjayBvbiB0aGUgZmlsZXN5c3RlbSBldmVuIHRob3VnaCBpdCBtYXkgYmUgY2xlYW4uIEl0IHdpbGwKK3RoZW4gemVybyBzJmxvd2JhcjttbnQmbG93YmFyO2NvdW50LiA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO21heCZsb3diYXI7bW50Jmxvd2Jhcjtjb3VudDwvTGl0ZXJhbD4gaXMgYSB0dW5hYmxlIHBhcmFtZXRlci4KKzwvUGFyYT4KKworPFBhcmE+CitFMmZzY2sgYWxzbyByZWNvcmRzIHRoZSBsYXN0IHRpbWUgaW4gd2hpY2ggdGhlIGZpbGUgc3lzdGVtIHdhcyBjaGVja2VkIGluCit0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtsYXN0Y2hlY2s8L0xpdGVyYWw+IHZhcmlhYmxlLiBUaGUgdXNlciB0dW5hYmxlIHBhcmFtZXRlcgorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtjaGVja2ludGVydmFsPC9MaXRlcmFsPiB3aWxsIGNvbnRhaW4gdGhlIG51bWJlciBvZiBzZWNvbmRzIHdoaWNoIGFyZSBhbGxvd2VkCit0byBwYXNzIHNpbmNlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7bGFzdGNoZWNrPC9MaXRlcmFsPiB1bnRpbCBhIGNoZWNrIGlzIHJlZm9yY2VkLiBBIHZhbHVlIG9mCis8TGl0ZXJhbCByZW1hcD0idHQiPjA8L0xpdGVyYWw+IGRpc2FibGVzIHRpbWUtYmFzZWQgY2hlY2suCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5BZGRpdGlvbmFsIHVzZXIgdHVuYWJsZSBwYXJhbWV0ZXJzPC9UaXRsZT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO3ImbG93YmFyO2Jsb2NrcyZsb3diYXI7Y291bnQ8L0xpdGVyYWw+IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YgZGlzayBibG9ja3Mgd2hpY2ggYXJlCityZXNlcnZlZCBmb3Igcm9vdCwgdGhlIHVzZXIgd2hvc2UgaWQgbnVtYmVyIGlzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7ZGVmJmxvd2JhcjtyZXN1aWQ8L0xpdGVyYWw+IGFuZCB0aGUKK2dyb3VwIHdob3NlIGlkIG51bWJlciBpcyA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO2RlZyZsb3diYXI7cmVzZ2lkPC9MaXRlcmFsPi4gVGhlIGtlcm5lbCB3aWxsIHJlZnVzZSB0bworYWxsb2NhdGUgdGhvc2UgbGFzdCA8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO3ImbG93YmFyO2Jsb2NrcyZsb3diYXI7Y291bnQ8L0xpdGVyYWw+IGlmIHRoZSB1c2VyIGlzIG5vdCBvbmUgb2YgdGhlCithYm92ZS4gVGhpcyBpcyBkb25lIHNvIHRoYXQgdGhlIGZpbGVzeXN0ZW0gd2lsbCB1c3VhbGx5IG5vdCBiZSAxMDAmcGVyY250OyBmdWxsLAorc2luY2UgMTAwJnBlcmNudDsgZnVsbCBmaWxlc3lzdGVtcyBjYW4gYWZmZWN0IHZhcmlvdXMgYXNwZWN0cyBvZiBvcGVyYXRpb24uCis8L1BhcmE+CisKKzxQYXJhPgorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtkZWYmbG93YmFyO3Jlc3VpZDwvTGl0ZXJhbD4gYW5kIDxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7ZGVmJmxvd2JhcjtyZXNnaWQ8L0xpdGVyYWw+IGNvbnRhaW4gdGhlIGlkIG9mIHRoZSB1c2VyIGFuZAorb2YgdGhlIGdyb3VwIHdobyBjYW4gdXNlIHRoZSByZXNlcnZlZCBibG9ja3MgaW4gYWRkaXRpb24gdG8gcm9vdC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPkZpbGVzeXN0ZW0gY3VycmVudCBzdGF0ZTwvVGl0bGU+CisKKzxQYXJhPgorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2JhcjtmcmVlJmxvd2JhcjtibG9ja3MmbG93YmFyO2NvdW50PC9MaXRlcmFsPiBjb250YWlucyB0aGUgY3VycmVudCBudW1iZXIgb2YgZnJlZSBibG9ja3MKK2luIHRoZSBmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+cyZsb3diYXI7ZnJlZSZsb3diYXI7aW5vZGVzJmxvd2Jhcjtjb3VudDwvTGl0ZXJhbD4gY29udGFpbnMgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZyZWUgaW5vZGVzIGluIHRoZQorZmlsZXN5c3RlbS4KKzwvUGFyYT4KKworPFBhcmE+Cis8TGl0ZXJhbCByZW1hcD0idHQiPnMmbG93YmFyO210aW1lPC9MaXRlcmFsPiBjb250YWlucyB0aGUgdGltZSBhdCB3aGljaCB0aGUgc3lzdGVtIHdhcyBsYXN0IG1vdW50ZWQuCis8L1BhcmE+CisKKzxQYXJhPgorPExpdGVyYWwgcmVtYXA9InR0Ij5zJmxvd2Jhcjt3dGltZTwvTGl0ZXJhbD4gY29udGFpbnMgdGhlIGxhc3QgdGltZSBhdCB3aGljaCBzb21ldGhpbmcgd2FzIGNoYW5nZWQgaW4gdGhlCitmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+Q29weXJpZ2h0PC9UaXRsZT4KKworPFBhcmE+CitUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHNvdXJjZSBjb2RlIHdoaWNoIHdhcyB0YWtlbiBmcm9tIHRoZSBMaW51eCBleHQyCitrZXJuZWwgc291cmNlIGNvZGUsIG1haW5seSBmcm9tIDxGSUxFTkFNRT4vdXNyL2luY2x1ZGUvbGludXgvZXh0MiZsb3diYXI7ZnMuaDwvRklMRU5BTUU+LiBGb2xsb3dzCit0aGUgb3JpZ2luYWwgY29weXJpZ2h0OgorPC9QYXJhPgorCis8UGFyYT4KKworPFByb2dyYW1MaXN0aW5nPgorLyoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NQorICogUmVteSBDYXJkIChjYXJkQG1hc2kuaWJwLmZyKQorICogTGFib3JhdG9pcmUgTUFTSSAtIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAgZnJvbQorICoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBUb3J2YWxkcworICovCisKKzwvUHJvZ3JhbUxpc3Rpbmc+CisKKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkFja25vd2xlZGdtZW50czwvVGl0bGU+CisKKzxQYXJhPgorSSB3b3VsZCBsaWtlIHRvIHRoYW5rIHRoZSBmb2xsb3dpbmcgcGVvcGxlLCB3aG8gd2VyZSBpbnZvbHZlZCBpbiB0aGUKK2Rlc2lnbiBhbmQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSBrZXJuZWwgY29kZSBhbmQgc3VwcG9ydAordXRpbGl0aWVzOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPlJlbXkgQ2FyZDwvTGl0ZXJhbD4KKworV2hvIGRlc2lnbmVkLCBpbXBsZW1lbnRlZCBhbmQgbWFpbnRhaW5zIHRoZSBleHQyIGZpbGVzeXN0ZW0ga2VybmVsCitjb2RlLCBhbmQgc29tZSBvZiB0aGUgZXh0MiB1dGlsaXRpZXMuIDxMaXRlcmFsIHJlbWFwPSJ0dCI+UmVteSBDYXJkPC9MaXRlcmFsPiBpcyBhbHNvIHRoZQorYXV0aG9yIAlvZiBzZXZlcmFsIGhlbHBmdWwgc2xpZGVzIGNvbmNlcm5pbmcgdGhlIGV4dDIgZmlsZXN5c3RlbS4KK1NwZWNpZmljYWxseSwgaGUgaXMgdGhlIGF1dGhvciBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPkZpbGUgTWFuYWdlbWVudCBpbiB0aGUgTGludXgKK0tlcm5lbDwvTGl0ZXJhbD4gYW5kIG9mIDxMaXRlcmFsIHJlbWFwPSJ0dCI+VGhlIFNlY29uZCBFeHRlbmRlZCBGaWxlIFN5c3RlbSAtIEN1cnJlbnQKK1N0YXRlLCBGdXR1cmUgRGV2ZWxvcG1lbnQ8L0xpdGVyYWw+LgorCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwk8TGl0ZXJhbCByZW1hcD0idHQiPldheW5lIERhdmlzb248L0xpdGVyYWw+CisKK1dobyBkZXNpZ25lZCB0aGUgZXh0MiBmaWxlc3lzdGVtLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5TdGVwaGVuIFR3ZWVkaWU8L0xpdGVyYWw+CisKK1dobyBoZWxwZWQgZGVzaWduaW5nIHRoZSBleHQyIGZpbGVzeXN0ZW0ga2VybmVsIGNvZGUgYW5kIHdyb3RlIHRoZQorc2xpZGVzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+T3B0aW1pemF0aW9ucyBpbiBGaWxlIFN5c3RlbXM8L0xpdGVyYWw+LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJPExpdGVyYWwgcmVtYXA9InR0Ij5UaGVvZG9yZSBUcydvPC9MaXRlcmFsPgorCitXaG8gaXMgdGhlIGF1dGhvciBvZiBzZXZlcmFsIGV4dDIgdXRpbGl0aWVzIGFuZCBvZiB0aGUgZXh0MiBsaWJyYXJ5Cis8TGl0ZXJhbCByZW1hcD0idHQiPmxpYmV4dDJmczwvTGl0ZXJhbD4gKHdoaWNoIEkgZGlkbid0IHVzZSwgc2ltcGx5IGJlY2F1c2UgSSBkaWRuJ3Qga25vdworaXQgZXhpc3RzIHdoZW4gSSBzdGFydGVkIHRvIHdvcmsgb24gbXkgcHJvamVjdCkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK0xhc3RseSwgSSB3b3VsZCBsaWtlIHRvIHRoYW5rLCBvZi1jb3Vyc2UsIDxMaXRlcmFsIHJlbWFwPSJ0dCI+TGludXMgVG9ydmFsZHM8L0xpdGVyYWw+IGFuZCB0aGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+TGludXggY29tbXVuaXR5PC9MaXRlcmFsPiBmb3IgcHJvdmlkaW5nIGFsbCBvZiB1cyB3aXRoIHN1Y2ggYSBncmVhdCBvcGVyYXRpbmcKK3N5c3RlbS4KKzwvUGFyYT4KKworPFBhcmE+CitQbGVhc2UgY29udGFjdCBtZSBpbiBhIGNhc2Ugb2YgYW4gZXJyb3IgcmVwb3J0LCBzdWdnZXN0aW9ucywgb3IganVzdCBhYm91dAorYW55dGhpbmcgY29uY2VybmluZyB0aGlzIGRvY3VtZW50LgorPC9QYXJhPgorCis8UGFyYT4KK0Vuam95LAorPC9QYXJhPgorCis8UGFyYT4KK0dhZGkgT3htYW4gJmx0O3RndWRAdG9jaG5hcGMyLnRlY2huaW9uLmFjLmlsJmd0OworPC9QYXJhPgorCis8UGFyYT4KK0hhaWZhLCBBdWd1c3QgOTUKKzwvUGFyYT4KKworPC9TZWN0MT4KKworPC9BcnRpY2xlPgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9kb2MvdXNlci1ndWlkZS5zZ21sIGIvZTJmc3Byb2dzL2V4dDJlZC9kb2MvdXNlci1ndWlkZS5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyODg3ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL2RvYy91c2VyLWd1aWRlLnNnbWwKQEAgLTAsMCArMSwyMjU4IEBACis8IURPQ1RZUEUgQXJ0aWNsZSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLy9FTiI+CisKKzxBcnRpY2xlPgorCis8QXJ0aWNsZUluZm8+CisKKzxUaXRsZT5FWFQyRUQgLSBUaGUgRXh0ZW5kZWQtMiBmaWxlc3lzdGVtIGVkaXRvciAtIFVzZXIncyBndWlkZTwvVGl0bGU+Cis8QVVUSE9SPgorPEZpcnN0TmFtZT5HYWRpIE94bWFuLCB0Z3VkQHRvY2huYXBjMi50ZWNobmlvbi5hYy5pbDwvRmlyc3ROYW1lPgorPC9BVVRIT1I+Cis8UHViRGF0ZT52MC4xLCBBdWd1c3QgMyAxOTk1PC9QdWJEYXRlPgorCis8QWJzdHJhY3Q+CisKKzxQYXJhPgorVGhpcyBpcyBvbmx5IHRoZSBpbml0aWFsIHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudC4gSXQgbWF5IGJlIHVuY2xlYXIgYXQKK3NvbWUgcGxhY2VzLiBQbGVhc2Ugc2VuZCBtZSBmZWVkYmFjayB3aXRoIGFueXRoaW5nIHJlZ2FyZGluZyB0byBpdC4KKzwvUGFyYT4KKworPC9BYnN0cmFjdD4KKworPC9BcnRpY2xlSW5mbz4KKworPFNlY3QxPgorPFRpdGxlPkFib3V0IEVYVDJFRCBkb2N1bWVudGF0aW9uPC9UaXRsZT4KKworPFBhcmE+CitUaGUgRVhUMkVEIGRvY3VtZW50YXRpb24gY29uc2lzdHMgb2YgdGhyZWUgcGFydHM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBleHQyIGZpbGVzeXN0ZW0gb3ZlcnZpZXcuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgRVhUMkVEIHVzZXIncyBndWlkZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBFWFQyRUQgZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzxQYXJhPgorSWYgeW91IGludGVuZCB0byB1c2VkIEVYVDJFRCwgSSBzdHJvbmdseSBzdWdnZXN0IHRoYXQgeW91IHdvdWxkIGJlIGZhbWlsaWFyCit3aXRoIHRoZSBtYXRlcmlhbCBwcmVzZW50ZWQgaW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MiBmaWxlc3lzdGVtIG92ZXJ2aWV3PC9MaXRlcmFsPiBhcyB3ZWxsLgorPC9QYXJhPgorCis8UGFyYT4KK0lmIHlvdSBhbHNvIGludGVuZCB0byBicm93c2UgYW5kIG1vZGlmeSB0aGUgc291cmNlIGNvZGUsIEkgc3VnZ2VzdCB0aGF0IHlvdQord2lsbCBhbHNvIHJlYWQgdGhlIGFydGljbGUgPExpdGVyYWwgcmVtYXA9InR0Ij5UaGUgRVhUMkVEIGRlc2lnbiBhbmQgaW1wbGVtZW50YXRpb248L0xpdGVyYWw+LCBhcyBpdAorcHJvdmlkZXMgYSBnZW5lcmFsIG92ZXJ2aWV3IG9mIHRoZSBzdHJ1Y3R1cmUgb2YgbXkgc291cmNlIGNvZGUuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5JbnRyb2R1Y3Rpb248L1RpdGxlPgorCis8UGFyYT4KK0VYVDJFRCBpcyBhICJkaXNrIGVkaXRvciIgZm9yIHRoZSBleHQyIGZpbGVzeXN0ZW0uIEl0cyBwdXJwb3NlIGlzIHRvIHNob3cKK3lvdSB0aGUgaW50ZXJuYWwgc3RydWN0dXJlcyBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtIGluIGFuIHJhdGhlciBpbnR1aXRpdmUKK2FuZCBsb2dpY2FsIHdheSwgc28gdGhhdCBpdCB3aWxsIGJlIGVhc2llciB0byAidHJhdmVsIiBiZXR3ZWVuIHRoZSB2YXJpb3VzCitpbnRlcm5hbCBmaWxlc3lzdGVtIHN0cnVjdHVyZXMuIAorPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+QmFzaWMgY29uY2VwdHMgaW4gRVhUMkVEPC9UaXRsZT4KKworPFBhcmE+CitUd28gYmFzaWMgY29uY2VwdHMgaW4gRVhUMkVEIGFyZSA8TGl0ZXJhbCByZW1hcD0idHQiPmNvbW1hbmRzPC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlczwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorRVhUMkVEIGlzIG9iamVjdC1vcmllbnRlZCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBkZWZpbmVzIG9iamVjdHMgaW4gdGhlCitmaWxlc3lzdGVtLCBsaWtlIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5zdXBlci1ibG9jazwvTGl0ZXJhbD4gb3IgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmRpcmVjdG9yeTwvTGl0ZXJhbD4uIEFuIG9iamVjdCBpcworc29tZXRoaW5nIHdoaWNoICJrbm93cyIgaG93IHRvIGhhbmRsZSBzb21lIGFzcGVjdCBvZiB0aGUgZmlsZXN5c3RlbS4KKzwvUGFyYT4KKworPFBhcmE+CitZb3VyIGludGVyYWN0aW9uIHdpdGggRVhUMkVEIGlzIGRvbmUgdGhyb3VnaCA8TGl0ZXJhbCByZW1hcD0idHQiPmNvbW1hbmRzPC9MaXRlcmFsPiB3aGljaCBFWFQyRUQKK2FjY2VwdHMuIFRoZXJlIGFyZSB0aHJlZSBsZXZlbHMgb2YgY29tbWFuZHM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUdlbmVyYWwgQ29tbWFuZHMKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUV4dGVuZGVkLTIgRmlsZXN5c3RlbSBnZW5lcmFsIGNvbW1hbmRzCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUeXBlIHNwZWNpZmljIGNvbW1hbmRzCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworVGhlIEdlbmVyYWwgY29tbWFuZHMgYXJlIGFsd2F5cyBhdmFpbGFibGUuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGV4dDIgZ2VuZXJhbCBjb21tYW5kcyBhcmUgYXZhaWxhYmxlIG9ubHkgd2hlbiBlZGl0aW5nIGFuIGV4dDIgZmlsZXN5c3RlbS4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgVHlwZSBzcGVjaWZpYyBjb21tYW5kcyBhcmUgYXZhaWxhYmxlIHdoZW4gZWRpdGluZyBhIHNwZWNpZmljIG9iamVjdCBpbiB0aGUKK2ZpbGVzeXN0ZW0uIEVhY2ggb2JqZWN0IHR5cGljYWxseSBjb21lcyB3aXRoIGl0cyBvd24gc2V0IG9mIGludGVybmFsCit2YXJpYWJsZXMsIGFuZCBpdHMgb3duIHNldCBvZiBjb21tYW5kcywgd2hpY2ggYXJlIGZpbmUgdHVuZWQgaGFuZGxlIHRoZQorY29ycmVzcG9uZGluZyBzdHJ1Y3R1cmUgaW4gdGhlIGZpbGVzeXN0ZW0uCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5SdW5uaW5nIEVYVDJFRDwvVGl0bGU+CisKKzxQYXJhPgorUnVubmluZyBFWFQyRUQgaXMgYXMgc2ltcGxlIGFzIHR5cGluZyA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDJlZDwvTGl0ZXJhbD4gZnJvbSB0aGUgc2hlbGwgcHJvbXB0LgorVGhlcmUgYXJlIG5vIGNvbW1hbmQgbGluZSBzd2l0Y2hlcy4KKzwvUGFyYT4KKworPFBhcmE+CitXaGVuIGZpcnN0IHJ1biwgRVhUMkVEIHBhcnNlcyBpdHMgY29uZmlndXJhdGlvbiBmaWxlLCA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDJlZC5jb25mPC9MaXRlcmFsPi4KK1RoaXMgZmlsZSBtdXN0IGV4aXN0LgorPC9QYXJhPgorCis8UGFyYT4KK1doZW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBwcm9jZXNzaW5nIGlzIGRvbmUsIEVYVDJFRCBzY3JlZW4gc2hvdWxkIGFwcGVhcgorb24gdGhlIHNjcmVlbiwgd2l0aCB0aGUgY29tbWFuZCBwcm9tcHQgPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyZWQmIzYyOzwvTGl0ZXJhbD4gZGlzcGxheWVkLgorPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+RVhUMkVEIHVzZXIgaW50ZXJmYWNlPC9UaXRsZT4KKworPFBhcmE+CitFWFQyRUQgdXNlcyB0aGUgPEVtcGhhc2lzPm5jdXJzZXM8L0VtcGhhc2lzPiBsaWJyYXJ5IGZvciBzY3JlZW4gbWFuYWdlbWVudC4gWW91ciBzY3JlZW4KK3dpbGwgYmUgZGl2aWRlZCBpbnRvIGZvdXIgcGFydHMsIGZyb20gdG9wIHRvIGJvdHRvbToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisgVGl0bGUgd2luZG93Cis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKyBTdGF0dXMgd2luZG93Cis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKyBNYWluIGVkaXRpbmcgd2luZG93Cis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKyBDb21tYW5kIHdpbmRvdworPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK1RoZSB0aXRsZSB3aW5kb3cganVzdCBkaXNwbGF5cyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIEVYVDJFRC4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgc3RhdHVzIHdpbmRvdyB3aWxsIGRpc3BsYXkgdmFyaW91cyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHN0YXRlIG9mCit0aGUgZWRpdGluZyBhdCB0aGlzIHBvaW50LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBtYWluIGVkaXRpbmcgd2luZG93IGlzIHRoZSBwbGFjZSBhdCB3aGljaCB0aGUgYWN0dWFsIGRhdGEgd2lsbCBiZSBzaG93bi4KK0FsbW9zdCBldmVyeSBjb21tYW5kIHdpbGwgY2F1c2Ugc29tZSBkaXNwbGF5IGF0IHRoaXMgd2luZG93LiBUaGlzIHdpbmRvdywgYXMKK29wcG9zZWQgdG8gdGhlIHRocmVlIG90aGVycywgaXMgb2YgdmFyaWFibGUgbGVuZ3RoIC0gWW91IGFsd2F5cyBsb29rIGF0IG9uZQorcGFnZSBvZiBpdC4gVGhlIGN1cnJlbnQgcGFnZSBhbmQgdGhlIHRvdGFsIG51bWJlcnMgb2YgcGFnZXMgYXQgdGhpcyBtb21lbnQKK2lzIGRpc3BsYXllZCBhdCB0aGUgc3RhdHVzIHdpbmRvdy4gTW92aW5nIGJldHdlZW4gcGFnZXMgaXMgZG9uZSBieSB0aGUgdXNlCitvZiB0aGUgPENvbW1hbmQ+cGdkbjwvQ29tbWFuZD4gYW5kIDxDb21tYW5kPnBndXA8L0NvbW1hbmQ+IGNvbW1hbmRzLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBjb21tYW5kIHdpbmRvdyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uIEl0IGFsd2F5cyBkaXNwbGF5cyBhCitjb21tYW5kIHByb21wdCA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDJlZCYjNjI7PC9MaXRlcmFsPiBhbmQgYWxsb3dzIHlvdSB0byB0eXBlIGEgY29tbWFuZC4gRmVlZGJhY2sKK2Fib3V0IHRoZSBjb21tYW5kcyBlbnRlcmVkIGlzIGRpc3BsYXllZCB0byB0aGlzIHdpbmRvdyBhbHNvLgorPC9QYXJhPgorCis8UGFyYT4KK0VYVDJFRCB1c2VzIHRoZSA8RW1waGFzaXM+cmVhZGxpbmU8L0VtcGhhc2lzPiBsaWJyYXJ5IHdoaWxlIHByb2Nlc3NpbmcgYSBjb21tYW5kIGxpbmUuIEFsbAordGhlIHVzdWFsIGVkaXRpbmcga2V5cyBhcmUgYXZhaWxhYmxlLiBFYWNoIGVudGVyZWQgY29tbWFuZCBpcyBwbGFjZWQgaW50byBhCitoaXN0b3J5IG9mIGNvbW1hbmRzLCBhbmQgY2FuIGJlIHJlY2FsbGVkIGxhdGVyLiBDb21tYW5kIENvbXBsZXRpb24gaXMgYWxzbworc3VwcG9ydGVkIC0gSnVzdCBzdGFydCB0byB0eXBlIGEgY29tbWFuZCwgYW5kIHByZXNzIHRoZSBjb21wbGV0aW9uIGtleS4KKzwvUGFyYT4KKworPFBhcmE+CitQcmVzc2luZyA8TGl0ZXJhbCByZW1hcD0idHQiPmVudGVyPC9MaXRlcmFsPiBhdCB0aGUgY29tbWFuZCB3aW5kb3csIHdpdGhvdXQgZW50ZXJpbmcgYSBjb21tYW5kLAorcmVjYWxscyB0aGUgbGFzdCBjb21tYW5kLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIG1vdmluZyBiZXR3ZWVuIGNsb3NlIGVudHJpZXMsCitpbiB0aGUgPENvbW1hbmQ+bmV4dDwvQ29tbWFuZD4gY29tbWFuZCwgZm9yIGV4YW1wbGUuCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5HZXR0aW5nIHN0YXJ0ZWQ8L1RpdGxlPgorCis8U2VjdDI+Cis8VGl0bGU+QSBmZXcgcHJlY2F1dGlvbnM8L1RpdGxlPgorCis8UGFyYT4KK0VYVDJFRCBpcyBhIHRvb2wgZm9yIGZpbGVzeXN0ZW0gPExpdGVyYWwgcmVtYXA9InR0Ij5lZGl0aW5nPC9MaXRlcmFsPi4gQXMgc3VjaCwgaXQgY2FuIGJlCis8TGl0ZXJhbCByZW1hcD0idHQiPmRhbmdlcm91czwvTGl0ZXJhbD4uIFRoZSBzdW1tYXJ5IHRvIHRoZSBzdWJzZWN0aW9ucyBiZWxvdyBpcyB0aGF0Cis8TGl0ZXJhbCByZW1hcD0idHQiPllvdSBtdXN0IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nPC9MaXRlcmFsPi4KKzwvUGFyYT4KKworPFNlY3QzIGlkPSJtb3VudGVkLXJlZiI+Cis8VGl0bGU+QSBtb3VudGVkIGZpbGVzeXN0ZW08L1RpdGxlPgorCis8UGFyYT4KK0VYVDJFRCBpcyBub3QgZGVzaWduZWQgdG8gd29yayBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSAtIEl0IGlzIGNvbXBsaWNhdGVkCitlbm91Z2ggYXMgaXQgaXM7IEkgZGlkbid0IGV2ZW4gdHJ5IHRvIHRoaW5rIG9mIGhhbmRsaW5nIHRoZSB2YXJpb3VzIHJhY2UKK2NvbmRpdGlvbnMuIEFzIHN1Y2gsIHBsZWFzZSByZXNwZWN0IHRoZSBmb2xsb3dpbmcgYWR2aWNlOgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+RG8gbm90IHVzZSBFWFQyRUQgb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0gITwvTGl0ZXJhbD4KKzwvUGFyYT4KKworPFBhcmE+CitFWFQyRUQgd2lsbCBub3QgYWxsb3cgd3JpdGUgYWNjZXNzIHRvIGEgbW91bnRlZCBmaWxlc3lzdGVtLiBBbHRob3VnaCBpdCBpcworZmFpcmx5IGVhc3kgdG8gY2hhbmdlIEVYVDJFRCBzbyB0aGF0IGl0IHdpbGwgYmUgYWxsb3dlZCwgSSBoZXJlYnkgcmVxdWVzdAorYWdhaW4tIEVYVDJFRCBpcyBub3QgZGVzaWduZWQgZm9yIHRoYXQgYWN0aW9uLCBhbmQgd2lsbCBtb3N0IGxpa2VseSBjb3JydXB0CitkYXRhIGlmIHVzZWQgdGhhdCB3YXkuIFBsZWFzZSBkb24ndCBkbyB0aGF0LgorPC9QYXJhPgorCis8UGFyYT4KK0NvbmNlcm5pbmcgcmVhZCBhY2Nlc3MsIEkgY2hvc2UgdG8gbGVhdmUgdGhlIGRlY2lzaW9uIGZvciB0aGUgdXNlciB0aHJvdWdoCit0aGUgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbiA8TGl0ZXJhbCByZW1hcD0idHQiPkFsbG93TW91bnRlZFJlYWQ8L0xpdGVyYWw+LiBBbHRob3VnaCByZWFkIGFjY2Vzcworb24gYSBtb3VudGVkIHBhcnRpdGlvbiB3aWxsIG5vdCBkbyBhbnkgZGFtYWdlIHRvIHRoZSBmaWxlc3lzdGVtLCB0aGUgZGF0YQorZGlzcGxheWVkIHRvIHlvdSB3aWxsIG5vdCBiZSByZWxpYWJsZSwgYW5kIHNob3dpbmcgeW91IGluY29ycmVjdCBpbmZvcm1hdGlvbgorbWF5IGJlIGFzIGJhZCBhcyBjb3JydXB0aW5nIHRoZSBmaWxlc3lzdGVtLiBIb3dldmVyLCB5b3UgbWF5IHN0aWxsIHdpc2ggdG8KK2RvIHRoYXQuCis8L1BhcmE+CisKKzwvU2VjdDM+CisKKzxTZWN0Mz4KKzxUaXRsZT5Xcml0ZSBhY2Nlc3M8L1RpdGxlPgorCis8UGFyYT4KK0NvbnNpZGVyaW5nIHRoZSBvYnZpb3VzIHNlbnNpdGl2aXR5IG9mIHRoZSBzdWJqZWN0LCBJIHRvb2sgdGhlIGZvbGxvd2luZworYWN0aW9uczoKKzwvUGFyYT4KKworPFBhcmE+CisKKzxPcmRlcmVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJRVhUMkVEIHdpbGwgYWx3YXlzIHN0YXJ0IHdpdGggYSByZWFkLW9ubHkgYWNjZXNzLiBXcml0ZSBhY2Nlc3MgbW9kZQorbmVlZHMgdG8gYmUgc3BlY2lmaWNhbGx5IGVudGVyZWQgYnkgdGhlIDxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiBjb21tYW5kLgorVW50aWwgdGhpcyBpcyBkb25lLCBubyB3cml0ZSB3aWxsIGJlIGFsbG93ZWQuIFdyaXRlIGFjY2VzcyBjYW4gYmUKK2Rpc2FibGVkIGF0IGFueSB0aW1lIHdpdGggPENvbW1hbmQ+ZGlzYWJsZXdyaXRlPC9Db21tYW5kPi4gV2hlbgorPENvbW1hbmQ+ZW5hYmxld3JpdGU8L0NvbW1hbmQ+IGlzIGlzc3VlZCwgdGhlIGRldmljZSBpcyByZW9wZW5lZCBpbiByZWFkLXdyaXRlCittb2RlLiBOZWVkbGVzcyB0byBzYXksIHRoZSBkZXZpY2UgcGVybWlzc2lvbnMgc2hvdWxkIGFsbG93IHRoYXQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBcyBhIHNlY29uZCBsZXZlbCBvZiBwcm90ZWN0aW9uLCB5b3UgY2FuIGRpc2FsbG93IHdyaXRlIGFjY2VzcyBpbgordGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBieSB1c2luZyB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5BbGxvd0NoYW5nZXMgb2ZmPC9MaXRlcmFsPgorY29uZmlndXJhdGlvbiBvcHRpb24uIEluIHRoaXMgY2FzZSwgdGhlIDxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiBjb21tYW5kCit3aWxsIGJlIHJlZnVzZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlXaGVuIHdyaXRlIGFjY2VzcyBpcyBlbmFibGVkLCB0aGUgZGF0YSB3aWxsIG5ldmVyIGNoYW5nZQoraW1tZWRpYXRlbHkuIFJhdGhlciwgYSBzcGVjaWZpYyA8Q29tbWFuZD53cml0ZWRhdGE8L0NvbW1hbmQ+IGNvbW1hbmQgaXMgbmVlZGVkCit0byB1cGRhdGUgdGhlIG9iamVjdCBpbiB0aGUgZGlzayB3aXRoIHRoZSBjaGFuZ2VkIG9iamVjdCBpbiBtZW1vcnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiBhZGRpdGlvbiwgQSBsb2dnaW5nIG9wdGlvbiBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSBjb25maWd1cmF0aW9uCitmaWxlIG9wdGlvbnMgPExpdGVyYWwgcmVtYXA9InR0Ij5Mb2dDaGFuZ2VzPC9MaXRlcmFsPiBhbmQgPExpdGVyYWwgcmVtYXA9InR0Ij5Mb2dGaWxlPC9MaXRlcmFsPi4gV2l0aCBsb2dnaW5nCitlbmFibGVkLCBlYWNoIGNoYW5nZSB0byB0aGUgZGlzayB3aWxsIGJlIGxvZ2dlZCBhdCBhIHZlcnkgcHJpbWl0aXZlCitsZXZlbCAtIEEgaGV4IGR1bXAgb2YgdGhlIG9yaWdpbmFsIGRhdGEgYW5kIG9mIHRoZSBuZXcgd3JpdHRlbiBkYXRhLgorVGhlIGxvZyBmaWxlIHdpbGwgYmUgYSB0ZXh0IGZpbGUgd2hpY2ggaXMgZWFzaWx5IHJlYWRhYmxlLCBhbmQgeW91CitjYW4gbWFrZSB1c2Ugb2YgaXQgdG8gdW5kbyBhbnkgY2hhbmdlcyB3aGljaCB5b3UgbWFkZSAoRVhUMkVEIGRvZXNuJ3QKK21ha2UgdXNlIG9mIHRoZSBsb2cgZmlsZSBmb3IgdGhhdCBwdXJwb3NlLCBpdCBqdXN0IGxvZ3MgdGhlIGNoYW5nZXMpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworUGxlYXNlIHJlbWVtYmVyIHRoYXQgdGhpcyBpcyBvbmx5IHRoZSBpbml0aWFsIHJlbGVhc2Ugb2YgRVhUMkVELCBhbmQgaXQgaXMKK25vdCB2ZXJ5IG11Y2ggdGVzdGVkIC0gSXQgaXMgcmVhc29uYWJsZSB0byBhc3N1bWUgdGhhdCA8TGl0ZXJhbCByZW1hcD0idHQiPnRoZXJlIGFyZQorYnVnczwvTGl0ZXJhbD4uCitIb3dldmVyLCB0aGUgbG9nZ2luZyBvcHRpb24gYWJvdmUgY2FuIG9mZmVyIHByb3RlY3Rpb24gZXZlbiBmcm9tIHRoaXMKK3VuZm9ydHVuYXRlIGNhc2UuIFRoZXJlZm9yLCBJIGhpZ2hseSByZWNvbW1lbmQgdGhhdCBhdCBsZWFzdCB3aGVuIGZpcnN0Cit3b3JraW5nIHdpdGggRVhUMkVELCB0aGUgbG9nZ2luZyBvcHRpb24gd2lsbCBiZSBlbmFibGVkLCBkZXNwaXRlIHRoZSBkaXNrCitzcGFjZSB3aGljaCBpdCBjb25zdW1lcy4KKzwvUGFyYT4KKworPC9TZWN0Mz4KKworPC9TZWN0Mj4KKworPFNlY3QyIGlkPSJoZWxwLXJlZiI+Cis8VGl0bGU+VGhlIGhlbHAgY29tbWFuZDwvVGl0bGU+CisKKzxQYXJhPgorV2hlbiBsb2FkZWQsIEVYVDJFRCB3aWxsIHNob3cgYSBzaG9ydCBoZWxwIHNjcmVlbi4gVGhpcyBoZWxwIHNjcmVlbiBjYW4KK2Fsd2F5cyBiZSByZXRyaWV2ZWQgYnkgdGhlIGNvbW1hbmQgPENvbW1hbmQ+aGVscDwvQ29tbWFuZD4uIFRoZSBoZWxwIHNjcmVlbiBkaXNwbGF5cyBhCitsaXN0IG9mIGFsbCB0aGUgY29tbWFuZHMgd2hpY2ggYXJlIGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50LiBBdCBzdGFydHVwLCBvbmx5Cit0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5HZW5lcmFsIGNvbW1hbmRzPC9MaXRlcmFsPiBhcmUgYXZhaWxhYmxlLgorVGhpcyB3aWxsIGNoYW5nZSB3aXRoIHRpbWUsIHNpbmNlIGVhY2ggb2JqZWN0IGhhcyBpdHMgb3duIGNvbW1hbmRzLiBUaHVzLAorY29tbWFuZHMgd2hpY2ggYXJlIGF2YWlsYWJsZSBub3cgbWF5IG5vdCBiZSBhdmFpbGFibGUgbGF0ZXIuCitVc2luZyA8Q29tbWFuZD5oZWxwPC9Db21tYW5kPiA8RW1waGFzaXM+Y29tbWFuZDwvRW1waGFzaXM+IHdpbGwgZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0Cit0aGUgc3BlY2lmaWMgY29tbWFuZCA8RW1waGFzaXM+Y29tbWFuZDwvRW1waGFzaXM+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDIgaWQ9InNldGRldmljZS1yZWYiPgorPFRpdGxlPlRoZSBzZXRkZXZpY2UgY29tbWFuZDwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGZpcnN0IGNvbW1hbmQgdGhhdCBpcyB1c3VhbGx5IGVudGVyZWQgdG8gRVhUMkVEIGlzIHRoZSA8Q29tbWFuZD5zZXRkZXZpY2U8L0NvbW1hbmQ+Citjb21tYW5kLiBUaGlzIGNvbW1hbmQgc2ltcGx5IHRlbGxzIEVYVDJFRCBvbiB3aGljaCBkZXZpY2UgdGhlIGZpbGVzeXN0ZW0gaXMKK3ByZXNlbnQuIEZvciBleGFtcGxlLCBzdXBwb3NlIG15IGV4dDIgZmlsZXN5c3RlbSBpcyBvbiB0aGUgZmlyc3QgcGFydGl0aW9uCitvZiBteSBpZGUgZGlzay4gVGhlIGNvbW1hbmQgd2lsbCBiZToKKworPFNjcmVlbj4KK3NldGRldmljZSAvZGV2L2hkYTEKKzwvU2NyZWVuPgorCitUaGUgZm9sbG93aW5nIGFjdGlvbnMgd2lsbCB0YWtlIHBsYWNlIGluIHRoZSBmb2xsb3dpbmcgb3JkZXI6CisKKzxPcmRlcmVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJRVhUMkVEIHdpbGwgY2hlY2sgaWYgdGhlIHBhcnRpdGlvbiBpcyBtb3VudGVkLgorSWYgdGhlIHBhcnRpdGlvbiBpcyBtb3VudGVkICg8TGl0ZXJhbCByZW1hcD0idHQiPmhpZ2hseSBub3QgcmVjb21tZW5kZWQ8L0xpdGVyYWw+KSwKK3RoZSBhY2NlcHQvcmVqZWN0IGJlaGF2aW9yIHdpbGwgYmUgZGVjaWRlZCBieSB0aGUgY29uZmlndXJhdGlvbgorZmlsZS4gQ3Jvc3MgcmVmZXJlbmNlIHNlY3Rpb24gPFhSZWYgTGlua0VuZD0ibW91bnRlZC1yZWYiPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBzcGVjaWZpZWQgZGV2aWNlIHdpbGwgYmUgb3BlbmVkIGluIHJlYWQtb25seSBtb2RlLiBUaGUKK3Blcm1pc3Npb25zIG9mIHRoZSBkZXZpY2Ugc2hvdWxkIGJlIHNldCBpbiBhIHdheSB0aGF0IGFsbG93cworeW91IHRvIG9wZW4gdGhlIGRldmljZSBmb3IgcmVhZCBhY2Nlc3MuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlBdXRvZGV0ZWN0aW9uIG9mIGFuIGV4dDIgZmlsZXN5c3RlbSB3aWxsIGJlIG1hZGUgYnkgc2VhcmNoaW5nIGZvcgordGhlIGV4dDIgbWFnaWMgbnVtYmVyIGluIHRoZSBtYWluIHN1cGVyYmxvY2suCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiB0aGUgY2FzZSBvZiBhIHN1Y2Nlc3NmdWwgcmVjb2duaXRpb24gb2YgYW4gZXh0MiBmaWxlc3lzdGVtLCB0aGUKK2V4dDIgZmlsZXN5c3RlbSBzcGVjaWZpYyBjb21tYW5kcyBhbmQgdGhlIGV4dDIgc3BlY2lmaWMgb2JqZWN0CitkZWZpbml0aW9ucyB3aWxsIGJlIHJlZ2lzdGVyZWQuIFRoZSBvYmplY3QgZGVmaW5pdGlvbnMgd2lsbCBiZSByZWFkCithdCBydW4gdGltZSBmcm9tIGEgZmlsZSBzcGVjaWZpZWQgYnkgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworSW4gY2FzZSBvZiBhIGNvcnJ1cHRlZCBleHQyIGZpbGVzeXN0ZW0sIGl0IGlzIHF1aXRlIHBvc3NpYmxlIHRoYXQKK3RoZSBtYWluIHN1cGVyYmxvY2sgaXMgZGFtYWdlZCBhbmQgYXV0b2RldGVjdGlvbiB3aWxsIGZhaWwuIEluIHRoYXQKK2Nhc2UsIHVzZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gPExpdGVyYWwgcmVtYXA9InR0Ij5Gb3JjZUV4dDIgb248L0xpdGVyYWw+LiBUaGlzIGlzIG5vdAordGhlIGRlZmF1bHQgY2FzZSBzaW5jZSBFWFQyRUQgY2FuIGJlIHVzZWQgYXQgYSBsb3dlciBsZXZlbCB0byBlZGl0IGEKK25vbi1leHQyIGZpbGVzeXN0ZW0uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiBhIGNhc2Ugb2YgYSBzdWNjZXNzZnVsIGF1dG9kZXRlY3Rpb24sIGVzc2VudGlhbCBpbmZvcm1hdGlvbiBhYm91dAordGhlIGZpbGVzeXN0ZW0gc3VjaCBhcyB0aGUgYmxvY2sgc2l6ZSB3aWxsIGJlIHJlYWQgZnJvbSB0aGUKK3N1cGVyYmxvY2ssIHVubGVzcyB0aGUgdXNlZCBvdmVycmlkZXMgdGhpcyBiZWhhdmlvciB3aXRoIGFuCitjb25maWd1cmF0aW9uIG9wdGlvbiAobm90IHJlY29tbWVuZGVkKS4gSW4gdGhhdCBjYXNlLCB0aGUgcGFyYW1ldGVycword2lsbCBiZSByZWFkIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworSW4gYSBjYXNlIG9mIGFuIGF1dG9kZXRlY3Rpb24gZmFpbHVyZSwgdGhlIGVzc2VudGlhbCBwYXJhbWV0ZXJzCit3aWxsIGJlIHJlYWQgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworQXNzdW1pbmcgdGhhdCB5b3UgYXJlIGVkaXRpbmcgYW4gZXh0MiBmaWxlc3lzdGVtIGFuZCB0aGF0IGV2ZXJ5dGhpbmcgZ29lcword2VsbCwgeW91IHdpbGwgbm90aWNlIHRoYXQgYWRkaXRpb25hbCBjb21tYW5kcyBhcmUgbm93IGF2YWlsYWJsZSBpbiB0aGUgaGVscAorc2NyZWVuLCB1bmRlciB0aGUgc2VjdGlvbiA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDIgZmlsZXN5c3RlbSBnZW5lcmFsIGNvbW1hbmRzPC9MaXRlcmFsPi4gSW4KK2FkZGl0aW9uLCBFWFQyRUQgbm93IHJlY29nbml6ZXMgYSBmZXcgb2JqZWN0cyB3aGljaCBhcmUgZXNzZW50aWFsIHRvIHRoZQorZWRpdGluZyBvZiBhbiBleHQyIGZpbGVzeXN0ZW0uCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5Ud28gbGV2ZWxzIG9mIHVzYWdlPC9UaXRsZT4KKworPFNlY3QyPgorPFRpdGxlPkxvdyBsZXZlbCB1c2FnZTwvVGl0bGU+CisKKzxQYXJhPgorVGhpcyBzZWN0aW9uIGV4cGxhaW5zIHdoYXQgRVhUMkVEIHByb3ZpZGVzIGV2ZW4gd2hlbiBub3QgZWRpdGluZyBhbiBleHQyCitmaWxlc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KK0V2ZW4gYXQgdGhpcyBsZXZlbCwgRVhUMkVEIGlzIG1vcmUgdGhhbiBqdXN0IGEgaGV4IGVkaXRvci4gSXQgc3RpbGwgYWxsb3dzCitkZWZpbml0aW9uIG9mIG9iamVjdHMgYW5kIHZhcmlhYmxlcyBpbiBydW4gdGltZSB0aHJvdWdoIGEgdXNlciBmaWxlLAorYWx0aG91Z2ggb2YtY291cnNlIHRoZSBvYmplY3RzIHdpbGwgbm90IGhhdmUgc3BlY2lhbCBmaW5lIHR1bmVkIGZ1bmN0aW9ucworY29ubmVjdGVkIHRvIHRoZW0uIEVYVDJFRCB3aWxsIGFsbG93IHlvdSB0byBtb3ZlIGluIHRoZSBmaWxlc3lzdGVtIHVzaW5nCis8Q29tbWFuZD5zZXRvZmZzZXQ8L0NvbW1hbmQ+LCBhbmQgdG8gYXBwbHkgYW4gb2JqZWN0IGRlZmluaXRpb24gb24gYSBzcGVjaWZpYyBwbGFjZQordXNpbmcgPENvbW1hbmQ+c2V0dHlwZTwvQ29tbWFuZD4gPEVtcGhhc2lzPnR5cGU8L0VtcGhhc2lzPi4gRnJvbSB0aGlzIHBvaW50IGFuZCBvbiwgdGhlIG9iamVjdCB3aWxsCitiZSBzaG93biA8TGl0ZXJhbCByZW1hcD0idHQiPmluIGl0cyBuYXRpdmUgZm9ybTwvTGl0ZXJhbD4gLSBZb3Ugd2lsbCBzZWUgYSBsaXN0IG9mIHRoZQordmFyaWFibGVzIHJhdGhlciB0aGFuIGp1c3QgYSBoZXggZHVtcCwgYW5kIHlvdSB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGVhY2gKK3ZhcmlhYmxlIGluIHRoZSBpbnR1aXRpdmUgZm9ybSA8Q29tbWFuZD5zZXQgdmFyaWFibGU9dmFsdWU8L0NvbW1hbmQ+LgorPC9QYXJhPgorCis8UGFyYT4KK1RvIGRlZmluZSBvYmplY3RzLCB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIDxMaXRlcmFsIHJlbWFwPSJ0dCI+QWx0ZXJuYXRlRGVzY3JpcHRvcnM8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZXJlIGFyZSBub3cgdHdvIGZvcm1zIG9mIGVkaXRpbmc6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUVkaXRpbmcgd2l0aG91dCBhIHR5cGUuIEluIHRoaXMgY2FzZSwgdGhlIGRpc2sgYmxvY2sgd2lsbCBiZSBzaG93bgorYXMgYSB0ZXh0K2hleCBkdW1wLCBhbmQgeW91IHdpbGwgYmUgYWJsZSB0byBtb3ZlIGFsb25nIGFuZCBjaGFuZ2UgaXQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlFZGl0aW5nIHdpdGggYSB0eXBlLiBJbiB0aGlzIGNhc2UsIHRoZSBvYmplY3QncyB2YXJpYWJsZXMgd2lsbCBiZQorc2hvd24sIGFuZCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBlYWNoIHZhcmlhYmxlIGluIGl0cyBuYXRpdmUgZm9ybS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5IaWdoIGxldmVsIHVzYWdlPC9UaXRsZT4KKworPFBhcmE+CitFWFQyRUQgd2FzIGRlc2lnbmVkIGZvciB0aGUgZWRpdGluZyBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtLiBBcyBzdWNoLCBpdAorInVuZGVyc3RhbmRzIiB0aGUgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUgdG8gc29tZSBleHRlbnQuIEVhY2ggb2JqZWN0IG5vdyBoYXMKK3NwZWNpYWwgZmluZSB0dW5lZCAnQycgZnVuY3Rpb25zIGNvbm5lY3RlZCB0byBpdCwgd2hpY2gga25vd3MgaG93IHRvIGRpc3BsYXkKK2l0IGluIGFuIGludHVpdGl2ZSBmb3JtLCBhbmQgaG93IHRoZSBvYmplY3QgZml0cyBpbiB0aGUgZ2VuZXJhbCBkZXNpZ24gb2YKK3RoZSBleHQyIGZpbGVzeXN0ZW0uIEl0IGlzIG9mLWNvdXJzZSBtdWNoIGVhc2llciB0byB1c2UgdGhpcyB0eXBlIG9mCitlZGl0aW5nLiBGb3IgZXhhbXBsZToKKworPFNjcmVlbj4KK0lzc3VlIDxFbXBoYXNpcz5ncm91cCAyPC9FbXBoYXNpcz4gdG8gbG9vayBhdCB0aGUgbWFpbiBjb3B5IG9mIHRoZSB0aGlyZCBncm91cCBibG9jaworZGVzY3JpcHRvci4gV2l0aCA8RW1waGFzaXM+Z29jb3B5IDE8L0VtcGhhc2lzPiB5b3UgY2FuIG1vdmUgdG8gaXRzIGZpcnN0IGJhY2t1cCBjb3B5LAorYW5kIHdpdGggPEVtcGhhc2lzPmlub2RlPC9FbXBoYXNpcz4geW91IGNhbiBzdGFydCBlZGl0aW5nIHRoZSBpbm9kZSB0YWJsZSBvZiB0aGUgYWJvdmUKK2dyb3VwIGJsb2NrLiBGcm9tIGhlcmUsIGlmIHRoZSBpbm9kZSBjb3JyZXNwb25kcyB0byBhIGZpbGUsIHlvdSBjYW4KK3VzZSA8RW1waGFzaXM+ZmlsZTwvRW1waGFzaXM+IHRvIGVkaXQgdGhlIGZpbGUgaW4gYSAiY29udGludW91cyIgd2F5LCB1c2luZworPEVtcGhhc2lzPm5leHRibG9jazwvRW1waGFzaXM+IHRvIHBhc3MgdG8gaXRzIG5leHQgYmxvY2ssIGxldHRpbmcgRVhUMkVEIGZvbGxvd2luZyBieQoraXRzZWxmIHRoZSBkaXJlY3QgYmxvY2tzLCBpbmRpcmVjdCBibG9ja3MsIC4uLiwgd2hpbGUgc3RpbGwgcHJlc2VydmluZyB0aGUKK2FjdHVhbCB2aWV3IG9mIHRoZSBleGFjdCBibG9jayB1c2FnZSBvZiB0aGUgZmlsZS4KKzwvU2NyZWVuPgorCitUaGUgcG9pbnQgaXMgdGhhdCB0aGUgInRvdXIiIG9mIHRoZSBmaWxlc3lzdGVtIHdpbGwgbm93IGJlIHN5bmNocm9uaWMgcmF0aGVyCit0aGFuIGFzeW5jaHJvbmljIC0gRWFjaCBvYmplY3QgaGFzIHRoZSAibGlua3MiIHRvIHBhc3MgYmV0d2VlbiBjb25uZWN0ZWQKK2xvZ2ljYWwgc3RydWN0dXJlcywgYW5kIHNwZWNpYWwgZmluZS10dW5lZCBmdW5jdGlvbnMgdG8gZGVhbCB3aXRoIGl0LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+R2VuZXJhbCBjb21tYW5kczwvVGl0bGU+CisKKzxQYXJhPgorSSB3aWxsIG5vdyBzdGFydCB3aXRoIGEgc3lzdGVtYXRpYyBleHBsYW5hdGlvbiBvZiB0aGUgZ2VuZXJhbCBjb21tYW5kcy4KK1BsZWFzZSBmZWVsIGZyZWUgdG8gZXhwZXJpbWVudCwgYnV0IHRha2UgY2FyZSB3aGVuIHVzaW5nIHRoZQorPExpdGVyYWwgcmVtYXA9InR0Ij5lbmFibGV3cml0ZTwvTGl0ZXJhbD4gY29tbWFuZC4KKzwvUGFyYT4KKworPFBhcmE+CitXaGVuZXZlciBhIGNvbW1hbmQgc3ludGF4IGlzIHNwZWNpZmllZCwgYXJndW1lbnRzIHdoaWNoIGFyZSBvcHRpb25hbCBhcmUKK2VuY2xvc2VkIHdpdGggc3F1YXJlIGJyYWNrZXRzLgorPC9QYXJhPgorCis8UGFyYT4KK1BsZWFzZSBub3RlIHRoYXQgaW4gRVhUMkVELCBlYWNoIGNvbW1hbmQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBzcGVjaWZpYworb2JqZWN0IHRvIHByb3ZpZGUgc3BlY2lhbCBmaW5lLXR1bmVkIGZ1bmN0aW9uYWxpdHkuIEluIGdlbmVyYWwsIEkgd2FzCithdHRlbXB0aW5nIHRvIHByZXNlcnZlIHRoZSBzaW1pbGFyaXR5IGJldHdlZW4gdGhvc2UgZnVuY3Rpb25zLCB3aGljaCBhcmUKK2FjY2Vzc2libGUgYnkgdGhlIHNhbWUgbmFtZS4KKzwvUGFyYT4KKworPFNlY3QyIGlkPSJkaXNhYmxld3JpdGUtcmVmIj4KKzxUaXRsZT5kaXNhYmxld3JpdGU8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZGlzYWJsZXdyaXRlCis8L1NjcmVlbj4KKworPENvbW1hbmQ+ZGlzYWJsZXdyaXRlPC9Db21tYW5kPiBpcyB1c2VkIHRvIHJlb3BlbiB0aGUgZGV2aWNlIHdpdGggcmVhZC1vbmx5IGFjY2Vzcy4gV2hlbgorZmlyc3QgcnVubmluZyBFWFQyRUQsIHRoZSBkZXZpY2UgaXMgb3BlbmVkIGluIHJlYWQtb25seSBtb2RlLCBhbmQgYW4KK2V4cGxpY2l0IDxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiBpcyByZXF1aXJlZCBmb3Igd3JpdGUgYWNjZXNzLiBXaGVuIGZpbmlzaGluZword2l0aCBjaGFuZ2luZywgYSA8Q29tbWFuZD5kaXNhYmxld3JpdGU8L0NvbW1hbmQ+IGlzIHJlY29tbWVuZGVkIGZvciBzYWZldHkuIENyb3NzCityZWZlcmVuY2Ugc2VjdGlvbiA8WFJlZiBMaW5rRW5kPSJkaXNhYmxld3JpdGUtcmVmIj4uCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0MiBpZD0iZW5hYmxld3JpdGUtcmVmIj4KKzxUaXRsZT5lbmFibGV3cml0ZTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBlbmFibGV3cml0ZQorPC9TY3JlZW4+CisKKzxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiBpcyB1c2VkIHRvIHJlb3BlbiB0aGUgZGV2aWNlIHdpdGggcmVhZC13cml0ZSBhY2Nlc3MuCitXaGVuIGZpcnN0IHJ1bm5pbmcgRVhUMkVELCB0aGUgZGV2aWNlIGlzIG9wZW5lZCBpbiByZWFkLW9ubHkgbW9kZSwgYW5kIGFuCitleHBsaWNpdCA8Q29tbWFuZD5lbmFibGV3cml0ZTwvQ29tbWFuZD4gaXMgcmVxdWlyZWQgZm9yIHdyaXRlIGFjY2Vzcy4KKzxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiB3aWxsIGZhaWwgaWYgd3JpdGUgYWNjZXNzIGlzIGRpc2FibGVkIGZyb20gdGhlCitjb25maWd1cmF0aW9uIGZpbGUgYnkgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+QWxsb3dDaGFuZ2VzIG9mZjwvTGl0ZXJhbD4gY29uZmlndXJhdGlvbiBvcHRpb24uCitFdmVuIGFmdGVyIDxDb21tYW5kPmVuYWJsZXdyaXRlPC9Db21tYW5kPiwgYW4gZXhwbGljaXQgPENvbW1hbmQ+d3JpdGVkYXRhPC9Db21tYW5kPgoraXMgcmVxdWlyZWQgdG8gYWN0dWFsbHkgd3JpdGUgdGhlIG5ldyBkYXRhIHRvIHRoZSBkaXNrLgorV2hlbiBmaW5pc2hpbmcgd2l0aCBjaGFuZ2luZywgYSA8Q29tbWFuZD5kaXNhYmxld3JpdGU8L0NvbW1hbmQ+IGlzIHJlY29tbWVuZGVkIGZvciBzYWZldHkuCitDcm9zcyByZWZlcmVuY2Ugc2VjdGlvbiA8WFJlZiBMaW5rRW5kPSJlbmFibGV3cml0ZS1yZWYiPi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPmhlbHA8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogaGVscCBbY29tbWFuZF0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+aGVscDwvQ29tbWFuZD4gY29tbWFuZCBpcyBkZXNjcmliZWQgYXQgc2VjdGlvbiA8WFJlZiBMaW5rRW5kPSJoZWxwLXJlZiI+LiAKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyIGlkPSJuZXh0LXJlZiI+Cis8VGl0bGU+bmV4dDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBuZXh0IFtudW1iZXJdCis8L1NjcmVlbj4KKworVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgPEVtcGhhc2lzPmdlbmVyYWwgY29tbWFuZDwvRW1waGFzaXM+IDxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+LiA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPgoraXMgb3ZlcnJpZGRlbiBieSBzZXZlcmFsIHR5cGVzIGluIEVYVDJFRCwgdG8gcHJvdmlkZSBmaW5lLXR1bmVkCitmdW5jdGlvbmFsaXR5LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPm5leHQgZ2VuZXJhbCBjb21tYW5kPC9MaXRlcmFsPiBiZWhhdmlvciBpcyBkZXBlbmRlZCBvbiB3aGV0aGVyIHlvdSBhcmUgZWRpdGluZyBhCitzcGVjaWZpYyBvYmplY3QsIG9yIG5vbmUuCis8L1BhcmE+CisKKzxQYXJhPgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiB0aGUgY2FzZSB3aGVyZSBUeXBlIGlzIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bm9uZTwvTGl0ZXJhbD4gKFRoZSBjdXJyZW50IHR5cGUgaXMgc2hvd2VkCitvbiB0aGUgc3RhdHVzIHdpbmRvdyBieSB0aGUgPENvbW1hbmQ+c2hvdzwvQ29tbWFuZD4gY29tbWFuZCksIDxMaXRlcmFsIHJlbWFwPSJ0dCI+bmV4dDwvTGl0ZXJhbD4KK3Bhc3NlcyB0byB0aGUgbmV4dCA8RW1waGFzaXM+bnVtYmVyPC9FbXBoYXNpcz4gYnl0ZXMgaW4gdGhlIGN1cnJlbnQgZWRpdGVkIGJsb2NrLgorSWYgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlzIG5vdCBzcGVjaWZpZWQsIDxFbXBoYXNpcz5udW1iZXI9MTwvRW1waGFzaXM+IGlzIGFzc3VtZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKyAJSW4gdGhlIGNhc2Ugd2hlcmUgVHlwZSBpcyBkZWZpbmVkLCB0aGUgPENvbW1hbmQ+bmV4dDwvQ29tbWFuZD4gY29tbWFuZHMgYXNzdW1lcwordGhhdCB5b3UgYXJlIGVkaXRpbmcgYW4gYXJyYXkgb2Ygb2JqZWN0cyBvZiB0aGF0IHR5cGUsIGFuZCB0aGUKKzxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBqdXN0IHBhc3MgdG8gdGhlIG5leHQgZW50cnkgaW4gdGhlIGFycmF5LgorSWYgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlzIGRlZmluZWQsIGl0IHdpbGwgcGFzcyA8RW1waGFzaXM+bnVtYmVyPC9FbXBoYXNpcz4gZW50cmllcworYWhlYWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDIgaWQ9InBnZG4tcmVmIj4KKzxUaXRsZT5wZ2RuPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHBnZG4KKzwvU2NyZWVuPgorCitVc3VhbGx5IHRoZSBlZGl0ZWQgZGF0YSBkb2Vzbid0IGZpdCBpbnRvIHRoZSB2aXNpYmxlIG1haW4gd2luZG93LiBJbiB0aGlzCitjYXNlLCB0aGUgc3RhdHVzIHdpbmRvdyB3aWxsIGluZGljYXRlIHRoYXQgdGhlcmUgaXMgbW9yZSB0byBzZWUgImJlbG93IiBieQordGhlIG1lc3NhZ2UgPExpdGVyYWwgcmVtYXA9InR0Ij5QYWdlIHggb2YgeTwvTGl0ZXJhbD4uIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBhcmUgPEVtcGhhc2lzPnk8L0VtcGhhc2lzPiBwYWdlcwordG90YWwsIGFuZCB5b3UgYXJlIGN1cnJlbnRseSB2aWV3aW5nIHRoZSA8RW1waGFzaXM+eDwvRW1waGFzaXM+IHBhZ2UuIFdpdGggdGhlIDxDb21tYW5kPnBnZG48L0NvbW1hbmQ+Citjb21tYW5kLCB5b3UgY2FuIHBhc3MgdG8gdGhlIG5leHQgYXZhaWxhYmxlIHBhZ2UuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5wZ3VwPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHBndXAKKzwvU2NyZWVuPgorCis8L1BhcmE+CisKKzxQYXJhPgorPENvbW1hbmQ+cGd1cDwvQ29tbWFuZD4gaXMgdGhlIG9wcG9zaXRlIG9mIDxDb21tYW5kPnBnZG48L0NvbW1hbmQ+IC0gSXQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cworcGFnZS4gQ3Jvc3MgcmVmZXJlbmNlIHNlY3Rpb24gPFhSZWYgTGlua0VuZD0icGdkbi1yZWYiPi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPnByZXY8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogcHJldiBbbnVtYmVyXQorPC9TY3JlZW4+CisKKzwvUGFyYT4KKworPFBhcmE+Cis8Q29tbWFuZD5wcmV2PC9Db21tYW5kPiBpcyB0aGUgb3Bwb3NpdGUgb2YgPENvbW1hbmQ+bmV4dDwvQ29tbWFuZD4uIENyb3NzIHJlZmVyZW5jZSBzZWN0aW9uCis8WFJlZiBMaW5rRW5kPSJuZXh0LXJlZiI+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDIgaWQ9InJlY2FsbC1yZWYiPgorPFRpdGxlPnJlY2FsbDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiByZWNhbGwgb2JqZWN0Cis8L1NjcmVlbj4KKworPENvbW1hbmQ+cmVjYWxsPC9Db21tYW5kPiBpcyB0aGUgb3Bwb3NpdGUgb2YgPENvbW1hbmQ+cmVtZW1iZXI8L0NvbW1hbmQ+LiBJdCB3aWxsIHBsYWNlIHlvdSBhdCB0aGUKK3BsYWNlIHlvdSB3aGVyZSB3aGVuIHNhdmluZyB0aGUgb2JqZWN0IHBvc2l0aW9uIGFuZCB0eXBlIGluZm9ybWF0aW9uLiBDcm9zcworcmVmZXJlbmNlIHNlY3Rpb24gPFhSZWYgTGlua0VuZD0icmVtZW1iZXItcmVmIj4uCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5yZWRyYXc8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogcmVkcmF3Cis8L1NjcmVlbj4KKworU29tZXRpbWVzIHRoZSBzY3JlZW4gZGlzcGxheSBnZXRzIGNvcnJ1cHRlZC4gSSBzdGlsbCBoYXZlIHByb2JsZW1zIHdpdGgKK3RoaXMuIFRoZSA8Q29tbWFuZD5yZWRyYXc8L0NvbW1hbmQ+IGNvbW1hbmQgc2ltcGx5IHJlZHJhd3MgdGhlIGVudGlyZSBkaXNwbGF5IHNjcmVlbi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyIGlkPSJyZW1lbWJlci1yZWYiPgorPFRpdGxlPnJlbWVtYmVyPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHJlbWVtYmVyIG9iamVjdAorPC9TY3JlZW4+CisKK0VYVDJFRCBwcm92aWRlcyB5b3UgPExpdGVyYWwgcmVtYXA9InR0Ij5tZW1vcnk8L0xpdGVyYWw+IG9mIG9iamVjdHM7IFdoaWxlIGVkaXRpbmcsIHlvdSBtYXkgcmVhY2ggYW4KK29iamVjdCB3aGljaCB5b3Ugd2lsbCBsaWtlIHRvIHJldHVybiB0byBsYXRlci4gVGhlIDxDb21tYW5kPnJlbWVtYmVyPC9Db21tYW5kPiBjb21tYW5kCit3aWxsIHN0b3JlIGluIG1lbW9yeSB0aGUgY3VycmVudCBwbGFjZSBhbmQgdHlwZSBvZiB0aGUgb2JqZWN0LiBZb3UgY2FuCityZXR1cm4gdG8gdGhlIG9iamVjdCBieSB1c2luZyB0aGUgPENvbW1hbmQ+cmVjYWxsPC9Db21tYW5kPiBjb21tYW5kLiBDcm9zcyByZWZlcmVuY2UKK3NlY3Rpb24gPFhSZWYgTGlua0VuZD0icmVjYWxsLXJlZiI+LgorPC9QYXJhPgorCis8UGFyYT4KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+Tm90ZTo8L0xpdGVyYWw+CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVdoZW4gcmVtZW1iZXJpbmcgYSA8TGl0ZXJhbCByZW1hcD0idHQiPmZpbGU8L0xpdGVyYWw+IG9yIGEgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXJlY3Rvcnk8L0xpdGVyYWw+LCB0aGUKK2NvcnJlc3BvbmRpbmcgaW5vZGUgd2lsbCBiZSBzYXZlZCBpbiBtZW1vcnkuIFRoZSBiYXNpYyByZWFzb24gaXMgdGhhdAordGhlIGlub2RlIGlzIGVzc2VudGlhbCBmb3IgZmluZGluZyB0aGUgYmxvY2tzIG9mIHRoZSBmaWxlIG9yIHRoZQorZGlyZWN0b3J5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPnNldDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBzZXQgW3RleHQgfHwgaGV4XSBhcmcxIFthcmcyIGFyZzMgLi4uXQorCitvcgorCitTeW50YXg6IHNldCB2YXJpYWJsZT12YWx1ZQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5zZXQ8L0NvbW1hbmQ+IGNvbW1hbmQgaXMgdXNlZCB0byBtb2RpZnkgdGhlIGN1cnJlbnQgZGF0YS4KK1RoZSA8Q29tbWFuZD5zZXQgZ2VuZXJhbCBjb21tYW5kPC9Db21tYW5kPiBiZWhhdmlvciBpcyBkZXBlbmRlZCBvbiB3aGV0aGVyIHlvdSBhcmUgZWRpdGluZyBhCitzcGVjaWZpYyBvYmplY3QsIG9yIG5vbmUuCis8L1BhcmE+CisKKzxQYXJhPgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiB0aGUgY2FzZSB3aGVyZSBUeXBlIGlzIDxDb21tYW5kPm5vbmU8L0NvbW1hbmQ+LCB0aGUgZmlyc3Qgc3ludGF4IHNob3VsZCBiZQordXNlZC4gVGhlIHNldCBjb21tYW5kIGFmZmVjdHMgdGhlIGRhdGEgc3RhcnRpbmcgYXQgdGhlIGN1cnJlbnQgCitoaWdobGlnaHRlZCBwb3NpdGlvbiBpbiB0aGUgZWRpdGVkIGJsb2NrLgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlXaGVuIHVzaW5nIHRoZSA8Q29tbWFuZD5zZXQgaGV4PC9Db21tYW5kPiBjb21tYW5kLCBhIGxpc3Qgb2YKK2hleGFkZWNpbWFsIGJ5dGVzIHNob3VsZCBmb2xsb3cuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlXaGVuIHVzaW5nIHRoZSA8Q29tbWFuZD5zZXQgdGV4dDwvQ29tbWFuZD4gY29tbWFuZCwgaXQgc2hvdWxkIGJlIGZvbGxvd2VkCitieSBhIHRleHQgc3RyaW5nLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKK0V4YW1wbGVzOgorCis8U2NyZWVuPgorCXNldCBoZXggMDkgMGEgMGIgMGMgMGQgMGUgMGYKKwlzZXQgdGV4dCBMaW51eCBpcyBqdXN0IGdyZWF0ICEKKwkKKzwvU2NyZWVuPgorCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKyAJSW4gdGhlIGNhc2Ugd2hlcmUgVHlwZSBpcyBkZWZpbmVkLCB0aGUgc2Vjb25kIHN5bnRheCBzaG91bGQgYmUgdXNlZC4KK1RoZSBzZXQgY29tbWFuZHMganVzdCBzZXRzIHRoZSB2YXJpYWJsZSA8RW1waGFzaXM+dmFyaWFibGU8L0VtcGhhc2lzPiB3aXRoIHRoZQordmFsdWUgPEVtcGhhc2lzPnZhbHVlPC9FbXBoYXNpcz4uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworSW4gYW55IGNhc2UsIHRoZSBkYXRhIGlzIG9ubHkgY2hhbmdlZCBpbiBtZW1vcnkuIEZvciBhbiBhY3R1YWwgdXBkYXRlIHRvIHRoZQorZGlzaywgdXNlIHRoZSA8Q29tbWFuZD53cml0ZWRhdGE8L0NvbW1hbmQ+IGNvbW1hbmQuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5zZXRkZXZpY2U8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogc2V0ZGV2aWNlIGRldmljZQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5zZXRkZXZpY2U8L0NvbW1hbmQ+IGNvbW1hbmQgaXMgZGVzY3JpYmVkIGF0IHNlY3Rpb24gPFhSZWYgTGlua0VuZD0ic2V0ZGV2aWNlLXJlZiI+LiAKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPnNldG9mZnNldDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBzZXRvZmZzZXQgW2Jsb2NrIHx8IHR5cGVdIFsrfC1db2Zmc2V0Cis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPnNldG9mZnNldDwvQ29tbWFuZD4gY29tbWFuZCBpcyB1c2VkIHRvIG1vdmUgYXN5bmNocm9uaWNhbGx5IGluc2lkZSB0aGUgZmlsZQorc3lzdGVtLiBJdCBpcyBjb25zaWRlcmVkIGEgbG93IGxldmVsIGNvbW1hbmQsIGFuZCB1c3VhbGx5IHNob3VsZCBub3QgYmUgdXNlZAord2hlbiBlZGl0aW5nIGFuIGV4dDIgZmlsZXN5c3RlbSwgc2ltcGx5IGJlY2F1c2UgbW92ZW1lbnQgaXMgYmV0dGVyCit1dGlsaXplZCB0aHJvdWdoIHRoZSBzcGVjaWZpYyBleHQyIGNvbW1hbmRzLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8Q29tbWFuZD5vZmZzZXQ8L0NvbW1hbmQ+IGlzIGluIGJ5dGVzLCBhbmQgbWVhbndoaWxlIHNob3VsZCBiZSBwb3NpdGl2ZSBhbmQgc21hbGxlcgordGhhbiAyR0IuCis8L1BhcmE+CisKKzxQYXJhPgorVXNlIG9mIHRoZSA8Q29tbWFuZD5ibG9jazwvQ29tbWFuZD4gbW9kaWZpZXIgY2hhbmdlcyB0aGUgY291bnRpbmcgdW5pdCB0byBibG9jay4KKzwvUGFyYT4KKworPFBhcmE+CitVc2Ugb2YgdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+KyBvciAtPC9MaXRlcmFsPiBtb2RpZmllcnMgc2lnbmFscyB0aGF0IHRoZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8KK3RoZSBjdXJyZW50IHBvc2l0aW9uLgorPC9QYXJhPgorCis8UGFyYT4KK3VzZSBvZiB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlPC9MaXRlcmFsPiBtb2RpZmllciBpcyBhbGxvd2VkIG9ubHkgd2l0aCByZWxhdGl2ZSBvZmZzZXQuIFRoaXMKK21vZGlmaWVyIHdpbGwgbXVsdGlwbHkgdGhlIG9mZnNldCBieSB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCB0eXBlLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+c2V0dHlwZTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBzZXR0eXBlIHR5cGUgfHwgW25vbmUgfCBoZXhdCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPnNldHR5cGU8L0NvbW1hbmQ+IGNvbW1hbmQgaXMgdXNlZCB0byBtb3ZlIGFwcGx5IHRoZSBvYmplY3QgZGVmaW5pdGlvbnMgb2YKK3RoZSB0eXBlIDxFbXBoYXNpcz50eXBlPC9FbXBoYXNpcz4gb24gdGhlIGN1cnJlbnQgcG9zaXRpb24uIEl0IGlzIGNvbnNpZGVyZWQgYSBsb3cgbGV2ZWwKK2NvbW1hbmQgYW5kIHVzdWFsbHkgc2hvdWxkIG5vdCBiZSB1c2VkIHdoZW4gZWRpdGluZyBhbiBleHQyIGZpbGVzeXN0ZW0gc2luY2UKK0VYVDJFRCBwcm92aWRlcyBiZXR0ZXIgdG9vbHMuIEl0IGlzIG9mLWNvdXJzZSB2ZXJ5IHVzZWZ1bCB3aGVuIGVkaXRpbmcgYQorbm9uLWV4dDIgZmlsZXN5c3RlbSBhbmQgdXNpbmcgdXNlci1kZWZpbmVkIG9iamVjdHMuCis8L1BhcmE+CisKKzxQYXJhPgorV2hlbiA8RW1waGFzaXM+dHlwZTwvRW1waGFzaXM+IGlzIDxFbXBoYXNpcz5oZXg8L0VtcGhhc2lzPiBvciA8RW1waGFzaXM+bm9uZTwvRW1waGFzaXM+LCB0aGUgZGF0YSB3aWxsIGJlIGRpc3BsYXllZCBhcworYSBoZXggYW5kIHRleHQgZHVtcC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPnNob3c8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogc2hvdworPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5zaG93PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgc2hvdyB0aGUgZGF0YSBvZiB0aGUgY3VycmVudCBvYmplY3QgYXQgdGhlCitjdXJyZW50IHBvc2l0aW9uIG9uIHRoZSBtYWluIGRpc3BsYXkgd2luZG93LiBJdCB3aWxsIGFsc28gdXBkYXRlIHRoZSBzdGF0dXMKK3dpbmRvdyB3aXRoIHR5cGUgc3BlY2lmaWMgaW5mb3JtYXRpb24uIEl0IG1heSBiZSBuZWNlc3NhcnkgdG8gdXNlCis8Q29tbWFuZD5wZ2RuPC9Db21tYW5kPiBhbmQgPENvbW1hbmQ+cGd1cDwvQ29tbWFuZD4gdG8gdmlldyB0aGUgZW50aXJlIGRhdGEuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT53cml0ZWRhdGE8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogd3JpdGVkYXRhCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPndyaXRlZGF0YTwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHVwZGF0ZSB0aGUgZGlzayB3aXRoIHRoZSBvYmplY3QgZGF0YSB0aGF0CitpcyBjdXJyZW50bHkgaW4gbWVtb3J5LiBUaGlzIGlzIHRoZSBwb2ludCBhdCB3aGljaCBhY3R1YWwgY2hhbmdlIGlzIG1hZGUgdG8KK3RoZSBmaWxlc3lzdGVtLiBXaXRob3V0IHRoaXMgY29tbWFuZCwgdGhlIGVkaXRlZCBkYXRhIHdpbGwgbm90IGhhdmUgYW55CitlZmZlY3QuIFdyaXRlIGFjY2VzcyBzaG91bGQgYmUgYWxsb3dlZCBmb3IgYSBzdWNjZXNzZnVsIHVwZGF0ZS4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkVkaXRpbmcgYW4gZXh0MiBmaWxlc3lzdGVtPC9UaXRsZT4KKworPFBhcmE+CitJbiBvcmRlciB0byBlZGl0IGFuIGV4dDIgZmlsZXN5c3RlbSwgeW91IHNob3VsZCwgb2YgY291cnNlLCBrbm93IHRoZSBzdHJ1Y3R1cmUKK29mIHRoZSBleHQyIGZpbGVzeXN0ZW0uIElmIHlvdSBmZWVsIHRoYXQgeW91IGxhY2sgc29tZSBrbm93bGVkZ2UgaW4gdGhpcworYXJlYSwgSSBzdWdnZXN0IHRoYXQgeW91IGRvIHNvbWUgb2YgdGhlIGZvbGxvd2luZzoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJUmVhZCB0aGUgc3VwcGxpZWQgZXh0MiB0ZWNobmljYWwgaW5mb3JtYXRpb24uIEkgdHJpZWQgdG8gc3VtbWFyaXplCit0aGUgYmFzaWMgaW5mb3JtYXRpb24gd2hpY2ggaXMgbmVlZGVkIHRvIGdldCB5b3Ugc3RhcnRlZC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUdldCB0aGUgc2xpZGVzIHRoYXQgUmVteSBDYXJkIChUaGUgYXV0aG9yIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0pCitwcmVwYXJlZCBjb25jZXJuaW5nIHRoZSBleHQyIGZpbGVzeXN0ZW0uCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlSZWFkIHRoZSBrZXJuZWwgc291cmNlcy4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCitBdCB0aGlzIHBvaW50LCB5b3Ugc2hvdWxkIGJlIGZhbWlsaWFyIHdpdGggdGhlIGZvbGxvd2luZyB0ZXJtczoKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+YmxvY2ssIGlub2RlLCBzdXBlcmJsb2NrLCBibG9jayBncm91cHMsIGJsb2NrIGFsbG9jYXRpb24gYml0bWFwLCBpbm9kZQorYWxsb2NhdGlvbiBiaXRtYXAsIGdyb3VwIGRlc2NyaXB0b3JzLCBmaWxlLCBkaXJlY3RvcnkuPC9MaXRlcmFsPk1vc3Qgb2YgdGhlIGFib3ZlCithcmUgb2JqZWN0cyBpbiBFWFQyRUQuCis8L1BhcmE+CisKKzxQYXJhPgorV2hlbiBlZGl0aW5nIGFuIGV4dDIgZmlsZXN5c3RlbSBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgdGhlIGV4dDIKK3NwZWNpZmljIGNvbW1hbmRzLCByYXRoZXIgdGhlbiB0aGUgZ2VuZXJhbCBjb21tYW5kcyAgPENvbW1hbmQ+c2V0b2Zmc2V0PC9Db21tYW5kPiBhbmQKKzxDb21tYW5kPnNldHR5cGU8L0NvbW1hbmQ+LCBtYWlubHkgYmVjYXVzZToKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlJbiBtb3N0IGNhc2VzIGl0IHdpbGwgYmUgdW5yZWxpYWJsZSwgYW5kIHdpbGwgZGlzcGxheSBpbmNvcnJlY3QKK2luZm9ybWF0aW9uLgorCitTb21ldGltZXMgaW4gb3JkZXIgdG8gZWRpdCBhbiBvYmplY3QsIEVYVDJFRCBuZWVkcyB0aGUgaW5mb3JtYXRpb24KK29mIHNvbWUgb3RoZXIgcmVsYXRlZCBvYmplY3RzLiBGb3IgZXhhbXBsZSwgd2hlbiBlZGl0aW5nIGEKK2RpcmVjdG9yeSwgRVhUMkVEIG5lZWRzIGFjY2VzcyB0byB0aGUgaW5vZGUgb2YgdGhlIGVkaXRlZCBkaXJlY3RvcnkuCitTaW1wbHkgc2V0dGluZyB0aGUgdHlwZSB0byBhIGRpcmVjdG9yeSA8TGl0ZXJhbCByZW1hcD0idHQiPndpbGwgYmUgdW5yZWxpYWJsZTwvTGl0ZXJhbD4sCitzaW5jZSB0aGUgb2JqZWN0IGFzc3VtZXMgdGhhdCB5b3UgcGFzc2VkIHRocm91Z2ggaXRzIGlub2RlIHRvIHJlYWNoCitpdCwgYW5kIGV4cGVjdHMgdGhpcyBpbmZvcm1hdGlvbiwgd2hpY2ggaXNuJ3QgaW5pdGlhbGl6ZWQgaWYgeW91CitkaXJlY3RseSBzZXQgdGhlIHR5cGUgdG8gYSBkaXJlY3RvcnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlFWFQyRUQgb2ZmZXJzIGZhciBiZXR0ZXIgdG9vbHMgZm9yIGhhbmRsaW5nIHRoZSBleHQyIGZpbGVzeXN0ZW0KK3VzaW5nIHRoZSBleHQyIHNwZWNpZmljIGNvbW1hbmRzLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworPC9QYXJhPgorCis8L1NlY3QxPgorCis8U2VjdDE+Cis8VGl0bGU+ZXh0MiBnZW5lcmFsIGNvbW1hbmRzPC9UaXRsZT4KKworPFBhcmE+CitUaGUgPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyIGdlbmVyYWwgY29tbWFuZHM8L0xpdGVyYWw+IGFyZSBhdmFpbGFibGUgb25seSB3aGVuIHlvdSBhcmUgZWRpdGluZyBhbgorZXh0MiBmaWxlc3lzdGVtLiBUaGV5IGFyZSA8TGl0ZXJhbCByZW1hcD0idHQiPmdlbmVyYWw8L0xpdGVyYWw+IGluIHRoZSBzZW5zZSB0aGF0IHRoZXkgYXJlIG5vdAorc3BlY2lmaWMgdG8gc29tZSBvYmplY3QsIGFuZCBjYW4gYmUgaW52b2tlZCBhbnl0aW1lLgorPC9QYXJhPgorCis8U2VjdDIgaWQ9ImdlbmVyYWwtc3VwZXJibG9jayI+Cis8VGl0bGU+c3VwZXI8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogc3VwZXIKKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+c3VwZXI8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCAiYnJpbmcgeW91IiB0byB0aGUgbWFpbiBzdXBlcmJsb2NrIGNvcHkuIEl0Cit3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBvYmplY3QgdHlwZSB0byA8TGl0ZXJhbCByZW1hcD0idHQiPmV4dDImbG93YmFyO3N1cGVyJmxvd2JhcjtibG9jazwvTGl0ZXJhbD4uIFRoZW4geW91Cit3aWxsIGJlIGFibGUgdG8gdmlldyBhbmQgZWRpdCB0aGUgc3VwZXJibG9jay4gV2hlbiB5b3UgYXJlIGluIHRoZQorc3VwZXJibG9jaywgb3RoZXIgY29tbWFuZHMgd2lsbCBiZSBhdmFpbGFibGUuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5ncm91cDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBncm91cCBbbnVtYmVyXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5ncm91cDwvQ29tbWFuZD4gY29tbWFuZCB3aWxsICJicmluZyB5b3UiIHRvIHRoZSBtYWluIGNvcHkgb2YgdGhlCis8RW1waGFzaXM+bnVtYmVyPC9FbXBoYXNpcz4gZ3JvdXAgZGVzY3JpcHRvci4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHNldCB0aGUgb2JqZWN0IHR5cGUgdG8KKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0MiZsb3diYXI7Z3JvdXAmbG93YmFyO2Rlc2M8L0xpdGVyYWw+LiBUaGVuIHlvdSB3aWxsIGJlIGFibGUgdG8gdmlldyBhbmQgZWRpdCB0aGUgZ3JvdXAKK2Rlc2NyaXB0b3IgZW50cnkuIFdoZW4geW91IGFyZSB0aGVyZSwgb3RoZXIgY29tbWFuZHMgd2lsbCBiZSBhdmFpbGFibGUuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5jZDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBjZCBwYXRoCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmNkPC9Db21tYW5kPiBjb21tYW5kIHdpbGwgbGV0IHlvdSB0cmF2ZWwgaW4gdGhlIGZpbGVzeXN0ZW0gaW4gdGhlIG5pY2Ugd2F5Cit0aGF0IHRoZSBtb3VudGVkIGZpbGVzeXN0ZW0gd291bGQgaGF2ZSBsZXQgeW91LgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSA8Q29tbWFuZD5jZDwvQ29tbWFuZD4gY29tbWFuZCBpcyBhIGNvbXBsaWNhdGVkIGNvbW1hbmQuIEFsdGhvdWdoIGl0IG1heSBzb3VuZAorc2ltcGxlIGF0IGZpcnN0LCBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIHR5cGljYWwgY2QgcmVxdWlyZXMgcGFzc2luZyB0aHJvdWdoCit0aGUgZ3JvdXAgZGVzY3JpcHRvcnMsIGlub2RlcywgZGlyZWN0b3J5IGVudHJpZXMsIGV0Yy4gRm9yIGV4YW1wbGU6Cis8L1BhcmE+CisKKzxQYXJhPgorVGhlIGlubm9jZW50IGNkIC91c3IgY29tbWFuZCBjYW4gYmUgZG9uZSBieSB1c2luZyBtb3JlIHByaW1pdGl2ZQorRVhUMkVEIGNvbW1hbmRzIGluIHRoZSBmb2xsb3dpbmcgd2F5IChJdCBpcyBpbXBsZW1lbnRlZCBleGFjdGx5IHRoaXMgd2F5KToKKworPE9yZGVyZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlVc2luZyA8Q29tbWFuZD5ncm91cCAwPC9Db21tYW5kPiB0byBnbyB0byB0aGUgZmlyc3QgZ3JvdXAgZGVzY3JpcHRvci4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVVzaW5nIDxDb21tYW5kPmlub2RlPC9Db21tYW5kPiB0byBnZXQgdG8gdGhlIEJhZCBibG9ja3MgaW5vZGUuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlVc2luZyA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPiB0byBwYXNzIHRvIHRoZSByb290IGRpcmVjdG9yeSBpbm9kZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVVzaW5nIDxDb21tYW5kPmRpcjwvQ29tbWFuZD4gdG8gc2VlIHRoZSBkaXJlY3RvcnkuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlVc2luZyA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPiB1bnRpbCB3ZSBmaW5kIHRoZSBkaXJlY3RvcnkgdXNyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVXNpbmcgPENvbW1hbmQ+Zm9sbG93aW5vZGU8L0NvbW1hbmQ+IHRvIHBhc3MgdG8gdGhlIGlub2RlIGNvcnJlc3BvbmRpbmcgdG8gdXNyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVXNpbmcgPENvbW1hbmQ+ZGlyPC9Db21tYW5kPiB0byBzZWUgdGhlIGRpcmVjdG9yeSBvZiAvdXNyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9PcmRlcmVkTGlzdD4KKworQW5kIHRob3NlIGNvbW1hbmRzIGFyZW4ndCB0aGF0IHByaW1pdGl2ZTsgRm9yIGV4YW1wbGUsIHRoZSB0cmFjaW5nIG9mIHRoZQorYmxvY2tzIHdoaWNoIGJlbG9uZyB0byB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBkaXIKK2NvbW1hbmQgYmVoaW5kIHRoZSBzY2VuZXMsIGFuZCB0aGUgZm9sbG93aW5vZGUgY29tbWFuZCB3aWxsIGF1dG9tYXRpY2FsbHkKKyJydW4iIHRvIHRoZSBjb3JyZWN0IGdyb3VwIGRlc2NyaXB0b3IgaW4gb3JkZXIgdG8gZmluZCB0aGUgcmVxdWlyZWQgaW5vZGUuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIHBhdGggdG8gdGhlIDxDb21tYW5kPmdlbmVyYWwgY2Q8L0NvbW1hbmQ+IGNvbW1hbmQgbmVlZHMgdG8gYmUgYSBmdWxsIHBhdGhuYW1lIC0KK1N0YXJ0aW5nIGZyb20gPEZpbGVuYW1lPi88L0ZpbGVuYW1lPi4gVGhlIDxDb21tYW5kPmNkPC9Db21tYW5kPiBjb21tYW5kIHN0b3BzIGF0IHRoZSBsYXN0IHJlYWNoYWJsZQorcG9pbnQsIHdoaWNoIGNhbiBiZSBhIGRpcmVjdG9yeSBlbnRyeSwgaW4gd2hpY2ggY2FzZSB0aGUgdHlwZSB3aWxsIGJlIHNldCB0bworPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+LCBvciBhbiBpbm9kZSwgaW4gd2hpY2ggY2FzZSB0aGUgdHlwZSB3aWxsIGJlIHNldCB0bworPExpdGVyYWwgcmVtYXA9InR0Ij5leHQyJmxvd2Jhcjtpbm9kZTwvTGl0ZXJhbD4uIFN5bWJvbGljIGxpbmtzIChPbmx5IGZhc3Qgc3ltYm9saWMgbGlua3MsIG1lYW53aGlsZSkgYXJlCithdXRvbWF0aWNhbGx5IGZvbGxvd2VkIChpZiB0aGV5IGFyZSBub3QgYWNyb3NzIGZpbGVzeXN0ZW1zLCBvZi1jb3Vyc2UpLiBJZgordGhlIHR5cGUgaXMgc2V0IHRvIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZGlyPC9MaXRlcmFsPiwgeW91IGNhbiB1c2UgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSAKKyJjdXJyZW50IGRpcmVjdG9yeSIuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgc3VwZXJibG9jazwvVGl0bGU+CisKKzxQYXJhPgorVGhlIHN1cGVyYmxvY2sgY2FuIGFsd2F5cyBiZSByZWFjaGVkIGJ5IHRoZSBleHQyIGdlbmVyYWwgY29tbWFuZAorPENvbW1hbmQ+c3VwZXI8L0NvbW1hbmQ+LiBDcm9zcyByZWZlcmVuY2Ugc2VjdGlvbiA8WFJlZiBMaW5rRW5kPSJnZW5lcmFsLXN1cGVyYmxvY2siPi4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgc3RhdHVzIHdpbmRvdyB3aWxsIHNob3cgeW91IHdoaWNoIGNvcHkgb2YgdGhlIHN1cGVyYmxvY2sgY29waWVzIHlvdSBhcmUKK2N1cnJlbnRseSBlZGl0aW5nLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBtYWluIGRhdGEgd2luZG93IHdpbGwgc2hvdyB5b3UgdGhlIHZhbHVlcyBvZiB0aGUgdmFyaW91cyBzdXBlcmJsb2NrCit2YXJpYWJsZXMsIGFsb25nIHdpdGggc29tZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgdmFsdWVzLgorPC9QYXJhPgorCis8UGFyYT4KK0RhdGEgY2FuIGJlIGNoYW5nZWQgd2l0aCB0aGUgPENvbW1hbmQ+c2V0PC9Db21tYW5kPiBhbmQgPENvbW1hbmQ+d3JpdGVkYXRhPC9Db21tYW5kPiBjb21tYW5kcy4KKworPFNjcmVlbj4KK0ZvciBleGFtcGxlLCBzZXQgc19yX2Jsb2Nrc19jb3VudD0xNDAwIHdpbGwgcmVzZXJ2ZSAxNDAwIGJsb2NrcyBmb3Igcm9vdC4KKzwvU2NyZWVuPgorCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5nb2NvcHk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZ29jb3B5IG51bWJlcgorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5nb2NvcHk8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCAiYnJpbmcgeW91IiB0byB0aGUgYmFja3VwIGNvcHkgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+CitvZiB0aGUgc3VwZXJibG9jayBjb3BpZXMuIDxDb21tYW5kPmdvY29weSAwPC9Db21tYW5kPiwgZm9yIGV4YW1wbGUsIHdpbGwgYnJpbmcgeW91IHRvCit0aGUgbWFpbiBjb3B5LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+c2V0YWN0aXZlY29weTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBzZXRhY3RpdmVjb3B5Cis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPnNldGFjdGl2ZWNvcHk8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBjb3B5IHRoZSBjb250ZW50cyBvZiB0aGUgY3VycmVudAorc3VwZXJibG9jayBjb3B5IG9udG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBtYWluIGNvcHkuIEl0IHdpbGwgYWxzbyBzd2l0Y2ggdG8KK2VkaXRpbmcgb2YgdGhlIG1haW4gY29weS4gTm8gYWN0dWFsIGRhdGEgaXMgd3JpdHRlbiB0byBkaXNrLCBvZi1jb3Vyc2UsCit1bnRpbCB5b3UgaXNzdWUgdGhlIDxDb21tYW5kPndyaXRlZGF0YTwvQ29tbWFuZD4gY29tbWFuZC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBncm91cCBkZXNjcmlwdG9yczwvVGl0bGU+CisKKzxQYXJhPgorVGhlIGdyb3VwIGRlc2NyaXB0b3JzIGNhbiBiZSBlZGl0ZWQgYnkgdGhlIDxDb21tYW5kPmdyb3VwPC9Db21tYW5kPiBjb21tYW5kLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBzdGF0dXMgd2luZG93IHdpbGwgaW5kaWNhdGUgdGhlIGN1cnJlbnQgZ3JvdXAgZGVzY3JpcHRvciwgdGhlIHRvdGFsCitudW1iZXIgb2YgZ3JvdXAgZGVzY3JpcHRvcnMgKGFuZCBoZW5jZSBvZiBncm91cCBibG9ja3MpLCBhbmQgdGhlIGJhY2t1cCBjb3B5CitudW1iZXIuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIG1haW4gZGF0YSB3aW5kb3cgd2lsbCBqdXN0IHNob3cgeW91IHRoZSB2YWx1ZXMgb2YgdGhlIHZhcmlvdXMgdmFyaWFibGVzLgorPC9QYXJhPgorCis8UGFyYT4KK0Jhc2ljYWxseSwgeW91IGNhbiB1c2UgdGhlIDxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+IGFuZCA8Q29tbWFuZD5wcmV2PC9Db21tYW5kPiBjb21tYW5kcywgYWxvbmcgd2l0aCB0aGUKKzxDb21tYW5kPnNldDwvQ29tbWFuZD4gY29tbWFuZCwgdG8gbW9kaWZ5IHRoZSBncm91cCBkZXNjcmlwdG9ycy4KKzwvUGFyYT4KKworPFBhcmE+CitUaGUgZ3JvdXAgZGVzY3JpcHRvcnMgb2JqZWN0IGlzIGEganVuY3Rpb24sIGZyb20gd2hpY2ggeW91IGNhbiByZWFjaDoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGlub2RlIHRhYmxlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrIGdyb3VwICh0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZTwvTGl0ZXJhbD4KK2NvbW1hbmQpCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgYmxvY2sgYWxsb2NhdGlvbiBiaXRtYXAgKHRoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJsb2NrYml0bWFwPC9MaXRlcmFsPiBjb21tYW5kKQorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGlub2RlIGFsbG9jYXRpb24gYml0bWFwICh0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5pbm9kZWJpdG1hcDwvTGl0ZXJhbD4gY29tbWFuZCkKKzwvUGFyYT4KKzwvTGlzdEl0ZW0+CisKKzwvSXRlbWl6ZWRMaXN0PgorCis8L1BhcmE+CisKKzxTZWN0Mj4KKzxUaXRsZT5ibG9ja2JpdG1hcDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBibG9ja2JpdG1hcAorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5ibG9ja2JpdG1hcDwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIGxldCB5b3UgZWRpdCB0aGUgYmxvY2sgYml0bWFwIGFsbG9jYXRpb24KK2Jsb2NrIG9mIHRoZSBjdXJyZW50IGdyb3VwIGJsb2NrLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+ZW50cnk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZW50cnkgbnVtYmVyCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmVudHJ5PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgbW92ZSB5b3UgdG8gdGhlIDxFbXBoYXNpcz5udW1iZXI8L0VtcGhhc2lzPiBncm91cCBkZXNjcmlwdG9yIGluIHRoZQorZ3JvdXAgZGVzY3JpcHRvcnMgdGFibGUuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5pbm9kZTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBpbm9kZQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5pbm9kZTwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHBhc3MgeW91IHRvIHRoZSBmaXJzdCBpbm9kZSBpbiB0aGUgY3VycmVudAorZ3JvdXAgYmxvY2suCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5pbm9kZWJpdG1hcDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBpbm9kZWJpdG1hcAorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5pbm9kZWJpdG1hcDwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIGxldCB5b3UgZWRpdCB0aGUgaW5vZGUgYml0bWFwIGFsbG9jYXRpb24KK2Jsb2NrIG9mIHRoZSBjdXJyZW50IGdyb3VwIGJsb2NrLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+bmV4dDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBuZXh0IFtudW1iZXJdCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBwYXNzIHRvIHRoZSBuZXh0IDxFbXBoYXNpcz5udW1iZXI8L0VtcGhhc2lzPiBncm91cAorZGVzY3JpcHRvci4gSWYgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlzIG9taXR0ZWQsIDxFbXBoYXNpcz5udW1iZXI9MTwvRW1waGFzaXM+IGlzIGFzc3VtZWQuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5wcmV2PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHByZXYgW251bWJlcl0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+cHJldjwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHBhc3MgdG8gdGhlIHByZXZpb3VzIDxFbXBoYXNpcz5udW1iZXI8L0VtcGhhc2lzPiBncm91cAorZGVzY3JpcHRvci4gSWYgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlzIG9taXR0ZWQsIDxFbXBoYXNpcz5udW1iZXI9MTwvRW1waGFzaXM+IGlzIGFzc3VtZWQuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5zZXRhY3RpdmVjb3B5PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHNldGFjdGl2ZWNvcHkKKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+c2V0YWN0aXZlY29weTwvQ29tbWFuZD4gY29tbWFuZCBjb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IGdyb3VwCitkZXNjcmlwdG9yLCB0byBpdHMgbWFpbiBjb3B5LiBUaGUgdXBkYXRlZCBtYWluIGNvcHkgd2lsbCB0aGVuIGJlIHNob3duLiBObworYWN0dWFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBkaXNrIHVudGlsIHlvdSBpc3N1ZSB0aGUgPENvbW1hbmQ+d3JpdGVkYXRhPC9Db21tYW5kPgorY29tbWFuZC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBpbm9kZTwvVGl0bGU+CisKKzxQYXJhPgorQW4gaW5vZGUgY2FuIGJlIHJlYWNoZWQgYnkgdGhlIGZvbGxvd2luZyB0d28gd2F5czoKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVXNpbmcgPENvbW1hbmQ+aW5vZGU8L0NvbW1hbmQ+IGZyb20gdGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXAgZGVzY3JpcHRvci4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVVzaW5nIDxDb21tYW5kPmZvbGxvd2lub2RlPC9Db21tYW5kPiBmcm9tIGEgZGlyZWN0b3J5IGVudHJ5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVXNpbmcgdGhlIDxDb21tYW5kPmNkPC9Db21tYW5kPiBjb21tYW5kIHdpdGggdGhlIHBhdGhuYW1lIHRvIHRoZSBmaWxlLgorCitGb3IgZXhhbXBsZSwgPENvbW1hbmQ+Y2QgL3Vzci9zcmMvZXh0MmVkL2V4dDJlZC5oPC9Db21tYW5kPgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgc3RhdHVzIHdpbmRvdyB3aWxsIGluZGljYXRlOgorCis8SXRlbWl6ZWRMaXN0PgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgY3VycmVudCBnbG9iYWwgaW5vZGUgbnVtYmVyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIHRvdGFsIHRvdGFsIG51bWJlciBvZiBpbm9kZXMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlPbiB3aGljaCBibG9jayBncm91cCB0aGUgaW5vZGUgaXMgYWxsb2NhdGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIHRvdGFsIG51bWJlciBvZiBpbm9kZXMgaW4gdGhpcyBncm91cCBibG9jay4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBpbm9kZSBpbiB0aGUgY3VycmVudCBncm91cCBibG9jay4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSB0eXBlIG9mIHRoZSBpbm9kZSAoZmlsZSwgZGlyZWN0b3J5LCBzcGVjaWFsLCBldGMpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitUaGUgbWFpbiBkYXRhIHdpbmRvdywgaW4gYWRkaXRpb24gdG8gdGhlIGxpc3Qgb2YgdmFyaWFibGVzLCB3aWxsIGNvbnRhaW4KK3NvbWUgaW50ZXJwcmV0YXRpb25zIG9uIHRoZSByaWdodCBzaWRlLgorPC9QYXJhPgorCis8UGFyYT4KK0lmIHRoZSBpbm9kZSBjb3JyZXNwb25kcyB0byBhIGZpbGUsIHlvdSBjYW4gdXNlIHRoZSA8Q29tbWFuZD5maWxlPC9Db21tYW5kPiBjb21tYW5kIHRvCitlZGl0IHRoZSBmaWxlLgorPC9QYXJhPgorCis8UGFyYT4KK0lmIHRoZSBpbm9kZSBpcyBhbiBpbm9kZSBvZiBhIGRpcmVjdG9yeSwgeW91IGNhbiB1c2UgdGhlIDxDb21tYW5kPmRpcjwvQ29tbWFuZD4gY29tbWFuZAordG8gZWRpdCB0aGUgZGlyZWN0b3J5LgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+ZGlyPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IGRpcgorPC9TY3JlZW4+CisKK0lmIHRoZSBpbm9kZSBtb2RlIGNvcnJlc3BvbmRzIHRvIGEgZGlyZWN0b3J5IChzaG93biBvbiB0aGUgc3RhdHVzIHdpbmRvdyksCit5b3UgY2FuIGVudGVyIGRpcmVjdG9yeSBtb2RlIGVkaXRpbmcgYnkgdXNpbmcgPExpdGVyYWwgcmVtYXA9InR0Ij5kaXI8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+ZW50cnk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZW50cnkgbnVtYmVyCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmVudHJ5PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgbW92ZSB5b3UgdG8gdGhlIDxFbXBoYXNpcz5udW1iZXI8L0VtcGhhc2lzPiBpbm9kZSBpbiB0aGUKK2N1cnJlbnQgaW5vZGUgdGFibGUuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5maWxlPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IGZpbGUKKzwvU2NyZWVuPgorCitJZiB0aGUgaW5vZGUgbW9kZSBjb3JyZXNwb25kcyB0byBhIGZpbGUgKHNob3duIG9uIHRoZSBzdGF0dXMgd2luZG93KSwKK3lvdSBjYW4gZW50ZXIgZmlsZSBtb2RlIGVkaXRpbmcgYnkgdXNpbmcgPENvbW1hbmQ+ZmlsZTwvQ29tbWFuZD4uCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5ncm91cDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBncm91cAorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5ncm91cDwvQ29tbWFuZD4gY29tbWFuZCBpcyB1c2VkIHRvIGdvIHRvIHRoZSBncm91cCBkZXNjcmlwdG9yIG9mIHRoZQorY3VycmVudCBncm91cCBibG9jay4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPm5leHQ8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogbmV4dCBbbnVtYmVyXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgcGFzcyB0byB0aGUgbmV4dCA8RW1waGFzaXM+bnVtYmVyPC9FbXBoYXNpcz4gaW5vZGUuCitJZiA8RW1waGFzaXM+bnVtYmVyPC9FbXBoYXNpcz4gaXMgb21pdHRlZCwgPEVtcGhhc2lzPm51bWJlcj0xPC9FbXBoYXNpcz4gaXMgYXNzdW1lZC4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPnByZXY8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogcHJldiBbbnVtYmVyXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5wcmV2PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgcGFzcyB0byB0aGUgcHJldmlvdXMgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlub2RlLgorSWYgPEVtcGhhc2lzPm51bWJlcjwvRW1waGFzaXM+IGlzIG9taXR0ZWQsIDxFbXBoYXNpcz5udW1iZXI9MTwvRW1waGFzaXM+IGlzIGFzc3VtZWQuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgZmlsZTwvVGl0bGU+CisKKzxQYXJhPgorV2hlbiBlZGl0aW5nIGEgZmlsZSwgRVhUMkVEIG9mZmVycyB5b3UgYSBib3RoIGEgY29udGludW91cyBhbmQgYSB0cnVlCitmcmFnbWVudGVkIHZpZXcgb2YgdGhlIGZpbGUgLSBUaGUgZmlsZSBpcyBzdGlsbCBzaG93biBibG9jayBieSBibG9jayB3aXRoCit0aGUgdHJ1ZSBibG9jayBudW1iZXIgYXQgZWFjaCBzdGFnZSBhbmQgRVhUMkVEIG9mZmVycyB5b3UgY29tbWFuZHMgd2hpY2gKK2FsbG93IHlvdSB0byBtb3ZlIGJldHdlZW4gdGhlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+ZmlsZSBibG9ja3M8L0xpdGVyYWw+LCB3aGlsZSBmaW5kaW5nIHRoZQorYWxsb2NhdGVkIGJsb2NrcyBieSB1c2luZyB0aGUgaW5vZGUgaW5mb3JtYXRpb24gYmVoaW5kIHRoZSBzY2VuZXMuCis8L1BhcmE+CisKKzxQYXJhPgorQXNpZGUgZnJvbSB0aGlzLCB0aGUgZWRpdGluZyBpcyBqdXN0IGEgPExpdGVyYWwgcmVtYXA9InR0Ij5oZXggZWRpdGluZzwvTGl0ZXJhbD4gLSBZb3UgbW92ZSB0aGUKK2N1cnNvciBpbiB0aGUgY3VycmVudCBibG9jayBvZiB0aGUgZmlsZSBieSB1c2luZyA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPiBhbmQKKzxDb21tYW5kPnByZXY8L0NvbW1hbmQ+LCBtb3ZlIGJldHdlZW4gYmxvY2tzIGJ5IDxDb21tYW5kPm5leHRibG9jazwvQ29tbWFuZD4gYW5kIDxDb21tYW5kPnByZXZibG9jazwvQ29tbWFuZD4sCithbmQgbWFrZSBjaGFuZ2VzIGJ5IHRoZSA8Q29tbWFuZD5zZXQ8L0NvbW1hbmQ+IGNvbW1hbmQuIE5vdGUgdGhhdCB0aGUgc2V0IGNvbW1hbmQgaXMKK292ZXJyaWRkZW4gaGVyZSAtIFRoZXJlIGFyZSBubyB2YXJpYWJsZXMuIFRoZSA8Q29tbWFuZD53cml0ZWRhdGE8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbAordXBkYXRlIHRoZSBjdXJyZW50IGJsb2NrIHRvIHRoZSBkaXNrLgorPC9QYXJhPgorCis8UGFyYT4KK1JlYWNoaW5nIGEgZmlsZSBjYW4gYmUgZG9uZSBieSB1c2luZyB0aGUgPENvbW1hbmQ+ZmlsZTwvQ29tbWFuZD4gY29tbWFuZCBmcm9tIGl0cyBpbm9kZS4KK1RoZSBpbm9kZSBjYW4gYmUgcmVhY2hlZCBieSBhbnkgb3RoZXIgbWVhbnMsIGZvciBleGFtcGxlLCBieSB0aGUKKzxDb21tYW5kPmNkPC9Db21tYW5kPiBjb21tYW5kLCBpZiB5b3Uga25vdyB0aGUgZmlsZSBuYW1lLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBzdGF0dXMgd2luZG93IHdpbGwgaW5kaWNhdGU6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBnbG9iYWwgYmxvY2sgbnVtYmVyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGludGVybmFsIGZpbGUgYmxvY2sgbnVtYmVyLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGZpbGUgb2Zmc2V0LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGZpbGUgc2l6ZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBmaWxlIGlub2RlIG51bWJlci4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBpbmRpcmVjdGlvbiBsZXZlbCAtIFdoZXRoZXIgaXQgaXMgYSBkaXJlY3QgYmxvY2sgKDApLCBpbmRpcmVjdAorKDEpLCBldGMuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8UGFyYT4KK1RoZSBtYWluIGRhdGEgd2luZG93IHdpbGwgZGlzcGxheSB0aGUgZmlsZSBlaXRoZXIgaW4gaGV4IG1vZGUgb3IgaW4gdGV4dAorbW9kZSwgc2VsZWN0LWFibGUgYnkgdGhlIDxDb21tYW5kPmRpc3BsYXk8L0NvbW1hbmQ+IGNvbW1hbmQuCis8L1BhcmE+CisKKzxQYXJhPgorSW4gaGV4IG1vZGUsIEVYVDJFRCB3aWxsIGRpc3BsYXkgb2Zmc2V0cyBpbiB0aGUgY3VycmVudCBibG9jaywgYWxvbmcgd2l0aCBhCit0ZXh0IGFuZCBoZXggZHVtcCBvZiB0aGUgY3VycmVudCBibG9jay4KKzwvUGFyYT4KKworPFBhcmE+CitJbiBlaXRoZXIgY2FzZSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5jdXJyZW50IHBsYWNlPC9MaXRlcmFsPiB3aWxsIGJlIGhpZ2hsaWdodGVkLiBJbiB0aGUgaGV4IG1vZGUKK2l0IHdpbGwgYmUgYWx3YXlzIGhpZ2hsaWdodGVkLCB3aGlsZSBpbiB0aGUgdGV4dCBtb2RlIGl0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQKK2lmIHRoZSBjaGFyYWN0ZXIgaXMgZGlzcGxheS1hYmxlLgorPC9QYXJhPgorCis8U2VjdDI+Cis8VGl0bGU+YmxvY2s8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogYmxvY2sgYmxvY2tfbnVtCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmJsb2NrPC9Db21tYW5kPiBjb21tYW5kIGlzIHVzZWQgdG8gbW92ZSBpbnNpZGUgdGhlIGZpbGUuIFRoZQorPEVtcGhhc2lzPmJsb2NrJmxvd2JhcjtudW08L0VtcGhhc2lzPiBhcmd1bWVudCBpcyB0aGUgcmVxdWVzdGVkIGludGVybmFsIGZpbGUgYmxvY2sgbnVtYmVyLiBBCit2YWx1ZSBvZiAwIHdpbGwgcmVhY2ggdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPmRpc3BsYXk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZGlzcGxheSBbdGV4dCB8fCBoZXhdCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmRpc3BsYXk8L0NvbW1hbmQ+IGNvbW1hbmQgY2hhbmdlcyB0aGUgZGlzcGxheSBtb2RlIG9mIHRoZSBmaWxlLiAKKzxDb21tYW5kPmRpc3BsYXkKK2hleDwvQ29tbWFuZD4gd2lsbCBzd2l0Y2ggdG8gPENvbW1hbmQ+aGV4IG1vZGU8L0NvbW1hbmQ+LCB3aGlsZSA8Q29tbWFuZD5kaXNwbGF5IHRleHQ8L0NvbW1hbmQ+IHdpbGwgc3dpdGNoCit0byB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgd2hlbiBubyA8Q29tbWFuZD5kaXNwbGF5PC9Db21tYW5kPiBjb21tYW5kIGlzIGlzc3VlZCBpcworPENvbW1hbmQ+aGV4IG1vZGU8L0NvbW1hbmQ+LgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+aW5vZGU8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogaW5vZGUKKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+aW5vZGU8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCByZXR1cm4gdG8gdGhlIGlub2RlIG9mIHRoZSBjdXJyZW50IGZpbGUuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5uZXh0PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IG5leHQgW251bV0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+bmV4dDwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHBhc3MgdG8gdGhlIG5leHQgYnl0ZSBpbiB0aGUgZmlsZS4gSWYKKzxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBzdXBwbGllZCwgaXQgd2lsbCBwYXNzIHRvIHRoZSBuZXh0IDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBieXRlcy4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPm5leHRibG9jazwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBuZXh0YmxvY2sgW251bV0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+bmV4dGJsb2NrPC9Db21tYW5kPiBjb21tYW5kIHdpbGwgcGFzcyB0byB0aGUgbmV4dCBibG9jayBpbiB0aGUgZmlsZS4gSWYKKzxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBzdXBwbGllZCwgaXQgd2lsbCBwYXNzIHRvIHRoZSBuZXh0IDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBibG9ja3MuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5wcmV2PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHByZXYgW251bV0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+cHJldjwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHBhc3MgdG8gdGhlIHByZXZpb3VzIGJ5dGUgaW4gdGhlIGZpbGUuIElmCis8RW1waGFzaXM+bnVtPC9FbXBoYXNpcz4gaXMgc3VwcGxpZWQsIGl0IHdpbGwgcGFzcyB0byB0aGUgcHJldmlvdXMgPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+IGJ5dGVzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+cHJldmJsb2NrPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHByZXZibG9jayBbbnVtXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5uZXh0YmxvY2s8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cyBibG9jayBpbiB0aGUgZmlsZS4gSWYKKzxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBzdXBwbGllZCwgaXQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cyA8RW1waGFzaXM+bnVtPC9FbXBoYXNpcz4gYmxvY2tzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+b2Zmc2V0PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IG9mZnNldCBmaWxlX29mZnNldAorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5vZmZzZXQ8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBtb3ZlIHRvIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IGluIHRoZSBmaWxlLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+c2V0PC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHNldCBbdGV4dCB8fCBoZXhdIGFyZzEgW2FyZzIgYXJnMyAuLi5dCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmZpbGUgc2V0PC9Db21tYW5kPiBjb21tYW5kIGlzIHdvcmtpbmcgbGlrZSB0aGUgPExpdGVyYWwgcmVtYXA9InR0Ij5nZW5lcmFsIHNldCBjb21tYW5kPC9MaXRlcmFsPiwKK3dpdGggPExpdGVyYWwgcmVtYXA9InR0Ij50eXBlPW5vbmU8L0xpdGVyYWw+LiBUaGVyZSBhcmUgbm8gdmFyaWFibGVzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+d3JpdGVkYXRhPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IHdyaXRlZGF0YQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD53cml0ZWRhdGE8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCB1cGRhdGUgdGhlIGN1cnJlbnQgZmlsZSBibG9jayBpbiB0aGUgZGlzay4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPlRoZSBkaXJlY3Rvcnk8L1RpdGxlPgorCis8UGFyYT4KK1doZW4gZWRpdGluZyBhIGZpbGUsIEVYVDJFRCBhbmFseXplcyBmb3IgeW91IGJvdGggdGhlIGFsbG9jYXRpb24gYmxvY2tzIG9mCit0aGUgZGlyZWN0b3J5IGVudHJpZXMsIGFuZCB0aGUgZGlyZWN0b3J5IGVudHJpZXMuCis8L1BhcmE+CisKKzxQYXJhPgorRWFjaCBkaXJlY3RvcnkgZW50cnkgaXMgZGlzcGxheWVkIG9uIG9uZSByb3cuIFlvdSBjYW4gbW92ZSB0aGUgaGlnaGxpZ2h0ZWQKK2VudHJ5IHdpdGggdGhlIHVzdWFsIDxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+IGFuZCA8Q29tbWFuZD5wcmV2PC9Db21tYW5kPiBjb21tYW5kcywgYW5kICJkaXZlIGluIgord2l0aCB0aGUgPENvbW1hbmQ+Zm9sbG93aW5vZGU8L0NvbW1hbmQ+IGNvbW1hbmQuCis8L1BhcmE+CisKKzxQYXJhPgorVGhlIHN0YXR1cyB3aW5kb3cgd2lsbCBpbmRpY2F0ZToKKworPEl0ZW1pemVkTGlzdD4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGRpcmVjdG9yeSBlbnRyeSBudW1iZXIuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgdG90YWwgbnVtYmVyIG9mIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoaXMgZGlyZWN0b3J5LgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJVGhlIGN1cnJlbnQgZ2xvYmFsIGJsb2NrIG51bWJlci4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBjdXJyZW50IG9mZnNldCBpbiB0aGUgZW50aXJlIGRpcmVjdG9yeSAtIFdoZW4gdmlld2luZyB0aGUKK2RpcmVjdG9yeSBhcyBhIGNvbnRpbnVvdXMgZmlsZS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCVRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIGRpcmVjdG9yeSBpdHNlbGYuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorPExpc3RJdGVtPgorCis8UGFyYT4KKwlUaGUgaW5kaXJlY3Rpb24gbGV2ZWwgLSBXaGV0aGVyIGl0IGlzIGEgZGlyZWN0IGJsb2NrICgwKSwgaW5kaXJlY3QKKygxKSwgZXRjLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPmNkPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IGNkIFtwYXRoXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5jZDwvQ29tbWFuZD4gY29tbWFuZCBpcyB1c2VkIGluIHRoZSB1c3VhbCBtZWFuaW5nLCBsaWtlIHRoZSBnbG9iYWwgY2QKK2NvbW1hbmQuCisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCUlmIDxFbXBoYXNpcz5wYXRoPC9FbXBoYXNpcz4gaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGVudHJ5IGlzCitmb2xsb3dlZC4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxFbXBoYXNpcz5wYXRoPC9FbXBoYXNpcz4gY2FuIGJlIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorCTxFbXBoYXNpcz5wYXRoPC9FbXBoYXNpcz4gY2FuIGFsc28gZW5kIHVwIGluIGEgZmlsZSwgaW4gd2hpY2ggY2FzZSB0aGUgZmlsZSBpbm9kZQord2lsbCBiZSByZWFjaGVkLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+CisJU3ltYm9saWMgbGluayAoZmFzdCBvbmx5LCBtZWFud2hpbGUpIGlzIGF1dG9tYXRpY2FsbHkgZm9sbG93ZWQuCis8L1BhcmE+Cis8L0xpc3RJdGVtPgorCis8L0l0ZW1pemVkTGlzdD4KKworPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+ZW50cnk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZW50cnkgW2VudHJ5X251bV0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+ZW50cnk8L0NvbW1hbmQ+IGNvbW1hbmQgc2V0cyA8RW1waGFzaXM+ZW50cnkmbG93YmFyO251bTwvRW1waGFzaXM+IGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorZW50cnkuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5mb2xsb3dpbm9kZTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBmb2xsb3dpbm9kZQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5mb2xsb3dpbm9kZTwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIG1vdmUgeW91IHRvIHRoZSBpbm9kZSBwb2ludGVkIGJ5IHRoZQorY3VycmVudCBkaXJlY3RvcnkgZW50cnkuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT5pbm9kZTwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBpbm9kZQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5pbm9kZTwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHJldHVybiB5b3UgdG8gdGhlIHBhcmVudCBpbm9kZSBvZiB0aGUgd2hvbGUKK2RpcmVjdG9yeSBsaXN0aW5nLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+bmV4dDwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBuZXh0IFtudW1dCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPm5leHQ8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBwYXNzIHRvIHRoZSBuZXh0IGRpcmVjdG9yeSBlbnRyeS4KK0lmIDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBzdXBwbGllZCwgaXQgd2lsbCBwYXNzIHRvIHRoZSBuZXh0IDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBlbnRyaWVzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+cHJldjwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBwcmV2IFtudW1dCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPnByZXY8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cyBkaXJlY3RvcnkgZW50cnkuCitJZiA8RW1waGFzaXM+bnVtPC9FbXBoYXNpcz4gaXMgc3VwcGxpZWQsIGl0IHdpbGwgcGFzcyB0byB0aGUgcHJldmlvdXMgPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+IGVudHJpZXMuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzxTZWN0Mj4KKzxUaXRsZT53cml0ZWRhdGE8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogd3JpdGVkYXRhCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPndyaXRlZGF0YTwvQ29tbWFuZD4gY29tbWFuZCB3aWxsIHdyaXRlIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBlbnRyeSB0byB0aGUKK2Rpc2suCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MSBpZD0iYmxvY2stYml0bWFwIj4KKzxUaXRsZT5UaGUgYmxvY2sgYWxsb2NhdGlvbiBiaXRtYXA8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmJsb2NrIGFsbG9jYXRpb24gYml0bWFwPC9MaXRlcmFsPiBvZiBhbnkgYmxvY2sgZ3JvdXAgY2FuIGJlIHJlYWNoZWQgZnJvbQordGhlIGNvcnJlc3BvbmRpbmcgZ3JvdXAgZGVzY3JpcHRvci4KKzwvUGFyYT4KKworPFBhcmE+CitZb3Ugd2lsbCBiZSBvZmZlcmVkIGEgYml0IGxpc3Rpbmcgb2YgdGhlIGVudGlyZSBibG9ja3MgaW4gdGhlIGdyb3VwLiBUaGUKK2N1cnJlbnQgYmxvY2sgd2lsbCBiZSBoaWdobGlnaHRlZCBhbmQgaXRzIG51bWJlciB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUKK3N0YXR1cyB3aW5kb3cuCis8L1BhcmE+CisKKzxQYXJhPgorQSB2YWx1ZSBvZiAiMSIgbWVhbnMgdGhhdCB0aGUgYmxvY2sgaXMgYWxsb2NhdGVkLCB3aGlsZSBhIHZhbHVlIG9mICIwIgorc2lnbmFscyB0aGF0IGl0IGlzIGZyZWUuIFRoZSB2YWx1ZSBpcyBhbHNvIGludGVycHJldGVkIGluIHRoZSBzdGF0dXMKK3dpbmRvdy4gWW91IGNhbiB1c2UgdGhlIHVzdWFsIDxDb21tYW5kPm5leHQvcHJldjwvQ29tbWFuZD4gY29tbWFuZHMsIGFsb25nIHdpdGggdGhlCis8Q29tbWFuZD5hbGxvY2F0ZS9kZWFsbG9jYXRlPC9Db21tYW5kPiBjb21tYW5kcy4KKzwvUGFyYT4KKworPFNlY3QyPgorPFRpdGxlPmFsbG9jYXRlPC9UaXRsZT4KKworPFBhcmE+CisKKzxTY3JlZW4+CitTeW50YXg6IGFsbG9jYXRlIFtudW1dCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPmFsbG9jYXRlPC9Db21tYW5kPiBjb21tYW5kIGFsbG9jYXRlcyA8RW1waGFzaXM+bnVtPC9FbXBoYXNpcz4gYmxvY2tzLCBzdGFydGluZyBmcm9tIHRoZQoraGlnaGxpZ2h0ZWQgcG9zaXRpb24uIElmIDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBub3Qgc3BlY2lmaWVkLCA8RW1waGFzaXM+bnVtPTE8L0VtcGhhc2lzPiBpcyBhc3N1bWVkLgorT2YtY291cnNlLCBubyBhY3R1YWwgY2hhbmdlIGlzIG1hZGUgdW50aWwgeW91IGlzc3VlIGEgPENvbW1hbmQ+d3JpdGVkYXRhPC9Db21tYW5kPiBjb21tYW5kLiAKKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPmRlYWxsb2NhdGU8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZGVhbGxvY2F0ZSBbbnVtXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5kZWFsbG9jYXRlPC9Db21tYW5kPiBjb21tYW5kIGRlYWxsb2NhdGVzIDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBibG9ja3MsIHN0YXJ0aW5nIGZyb20gdGhlCitoaWdobGlnaHRlZCBwb3NpdGlvbi4gSWYgPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+IGlzIG5vdCBzcGVjaWZpZWQsIDxFbXBoYXNpcz5udW09MTwvRW1waGFzaXM+IGlzIGFzc3VtZWQuCitPZi1jb3Vyc2UsIG5vIGFjdHVhbCBjaGFuZ2UgaXMgbWFkZSB1bnRpbCB5b3UgaXNzdWUgYSA8Q29tbWFuZD53cml0ZWRhdGE8L0NvbW1hbmQ+IGNvbW1hbmQuIAorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+ZW50cnk8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogZW50cnkgW2VudHJ5X251bV0KKzwvU2NyZWVuPgorCitUaGUgPENvbW1hbmQ+ZW50cnk8L0NvbW1hbmQ+IGNvbW1hbmQgc2V0cyB0aGUgY3VycmVudCBoaWdobGlnaHRlZCBibG9jayB0bworPEVtcGhhc2lzPmVudHJ5Jmxvd2JhcjtudW08L0VtcGhhc2lzPi4KKzwvUGFyYT4KKworPC9TZWN0Mj4KKworPFNlY3QyPgorPFRpdGxlPm5leHQ8L1RpdGxlPgorCis8UGFyYT4KKworPFNjcmVlbj4KK1N5bnRheDogbmV4dCBbbnVtXQorPC9TY3JlZW4+CisKK1RoZSA8Q29tbWFuZD5uZXh0PC9Db21tYW5kPiBjb21tYW5kIHdpbGwgcGFzcyB0byB0aGUgbmV4dCBiaXQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZQorbmV4dCBibG9jay4gSWYgPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+IGlzIHN1cHBsaWVkLCBpdCB3aWxsIHBhc3MgdG8gdGhlIG5leHQgPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+CitiaXRzLgorPC9QYXJhPgorCis8L1NlY3QyPgorCis8U2VjdDI+Cis8VGl0bGU+cHJldjwvVGl0bGU+CisKKzxQYXJhPgorCis8U2NyZWVuPgorU3ludGF4OiBwcmV2IFtudW1dCis8L1NjcmVlbj4KKworVGhlIDxDb21tYW5kPnByZXY8L0NvbW1hbmQ+IGNvbW1hbmQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cyBiaXQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZQorcHJldmlvdXMgYmxvY2suIElmIDxFbXBoYXNpcz5udW08L0VtcGhhc2lzPiBpcyBzdXBwbGllZCwgaXQgd2lsbCBwYXNzIHRvIHRoZSBwcmV2aW91cworPEVtcGhhc2lzPm51bTwvRW1waGFzaXM+IGJpdHMuCis8L1BhcmE+CisKKzwvU2VjdDI+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5UaGUgaW5vZGUgYWxsb2NhdGlvbiBiaXRtYXA8L1RpdGxlPgorCis8UGFyYT4KK1RoZSA8TGl0ZXJhbCByZW1hcD0idHQiPmlub2RlIGFsbG9jYXRpb24gYml0bWFwPC9MaXRlcmFsPiBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGJsb2NrIGFsbG9jYXRpb24KK2JpdG1hcCBleHBsYWluZWQgYWJvdmUuIEl0IGlzIGFsc28gcmVhY2hlZCBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGdyb3VwCitkZXNjcmlwdG9yLiBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvbiA8WFJlZiBMaW5rRW5kPSJibG9jay1iaXRtYXAiPi4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkZpbGVzeXN0ZW0gc2l6ZSBsaW1pdGF0aW9uPC9UaXRsZT4KKworPFBhcmE+CitXaGlsZSBhbiBleHQyIGZpbGVzeXN0ZW0gaGFzIGEgc2l6ZSBsaW1pdCBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPjQgVEI8L0xpdGVyYWw+LCBFWFQyRUQgY3VycmVudGx5Cis8TGl0ZXJhbCByZW1hcD0idHQiPmNhbid0PC9MaXRlcmFsPiBoYW5kbGUgZmlsZXN5c3RlbXMgd2hpY2ggYXJlIDxMaXRlcmFsIHJlbWFwPSJ0dCI+YmlnZ2VyIHRoYW4gMiBHQjwvTGl0ZXJhbD4uCis8L1BhcmE+CisKKzxQYXJhPgorSSBhbSBzb3JyeSBmb3IgdGhlIGluY29udmVuaWVuY2UuIFRoaXMgd2lsbCBob3BlZnVsbHkgYmUgZml4ZWQgaW4gZnV0dXJlCityZWxlYXNlcy4KKzwvUGFyYT4KKworPC9TZWN0MT4KKworPFNlY3QxPgorPFRpdGxlPkNvcHlyaWdodDwvVGl0bGU+CisKKzxQYXJhPgorRVhUMkVEIGlzIENvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuLgorPC9QYXJhPgorCis8UGFyYT4KK0VYVDJFRCBpcyBoZXJlYnkgcGxhY2VkIHVuZGVyIHRoZSBHUEwgLSBHbnUgUHVibGljIExpY2Vuc2UuIFlvdSBhcmUgZnJlZSBhbmQKK3dlbGNvbWUgdG8gY29weSwgdmlldyBhbmQgbW9kaWZ5IHRoZSBzb3VyY2VzLiBNeSBvbmx5IHdpc2ggaXMgdGhhdCBteQorY29weXJpZ2h0IHByZXNlbnRlZCBhYm92ZSB3aWxsIGJlIGxlZnQgYW5kIHRoYXQgYSBsaXN0IG9mIHRoZSBidWcgZml4ZXMsCithZGRlZCBmZWF0dXJlcywgZXRjLCB3aWxsIGJlIHByb3ZpZGVkLgorPC9QYXJhPgorCis8UGFyYT4KK1RoZSBlbnRpcmUgRVhUMkVEIHByb2plY3QgaXMgYmFzZWQsIG9mLWNvdXJzZSwgb24gdGhlIGtlcm5lbCBzb3VyY2VzLiBUaGUKKzxMaXRlcmFsIHJlbWFwPSJ0dCI+ZXh0Mi5kZXNjcmlwdG9yczwvTGl0ZXJhbD4gZGlzdHJpYnV0ZWQgd2l0aCBFWFQyRUQgaXMgYSBzbGlnaHRseSBtb2RpZmllZAordmVyc2lvbiBvZiB0aGUgbWFpbiBleHQyIGluY2x1ZGUgZmlsZSwgL3Vzci9pbmNsdWRlL2xpbnV4L2V4dDImbG93YmFyO2ZzLmguIEZvbGxvd3MKK3RoZSBvcmlnaW5hbCBjb3B5cmlnaHQ6Cis8L1BhcmE+CisKKzxQYXJhPgorCis8U2NyZWVuPgorLyoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NQorICogUmVteSBDYXJkIChjYXJkQG1hc2kuaWJwLmZyKQorICogTGFib3JhdG9pcmUgTUFTSSAtIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAgZnJvbQorICoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBUb3J2YWxkcworICovCisKKzwvU2NyZWVuPgorCis8L1BhcmE+CisKKzwvU2VjdDE+CisKKzxTZWN0MT4KKzxUaXRsZT5BY2tub3dsZWRnbWVudHM8L1RpdGxlPgorCis8UGFyYT4KK0VYVDJFRCB3YXMgY29uc3RydWN0ZWQgYXMgYSBzdHVkZW50IHByb2plY3QgaW4gdGhlIHNvZnR3YXJlCitsYWJvcmF0b3J5IG9mIHRoZSBmYWN1bHR5IG9mIGVsZWN0cmljYWwtZW5naW5lZXJpbmcgaW4gdGhlCis8TGl0ZXJhbCByZW1hcD0idHQiPlRlY2huaW9uIC0gSXNyYWVsJ3MgaW5zdGl0dXRlIG9mIHRlY2hub2xvZ3k8L0xpdGVyYWw+LgorPC9QYXJhPgorCis8UGFyYT4KK0F0IGZpcnN0LCBJIHdvdWxkIGxpa2UgdG8gdGhhbmsgPFBlcnNvbk5hbWU+PEZpcnN0TmFtZT5Bdm5lcjwvRmlyc3ROYW1lPiA8U3VyTmFtZT5Mb3R0ZW08L1N1ck5hbWU+PC9QZXJzb25OYW1lPiBhbmQgPFBlcnNvbk5hbWU+PEhvbm9yaWZpYz5Eb2N0b3I8L0hvbm9yaWZpYz4gPEZpcnN0TmFtZT5JbGFuYTwvRmlyc3ROYW1lPiA8U3VyTmFtZT5EYXZpZDwvU3VybmFtZT48L1BlcnNvbk5hbWU+IGZvciB0aGVpciBpbnRlcmVzdCBhbmQgYXNzaXN0YW5jZSBpbiB0aGlzIHByb2plY3QuCis8L1BhcmE+CisKKzxQYXJhPgorSSB3b3VsZCBhbHNvIGxpa2UgdG8gdGhhbmsgdGhlIGZvbGxvd2luZyBwZW9wbGUsIHdobyB3ZXJlIGludm9sdmVkIGluIHRoZQorZGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtIGtlcm5lbCBjb2RlIGFuZCBzdXBwb3J0Cit1dGlsaXRpZXM6CisKKzxJdGVtaXplZExpc3Q+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorPFBlcnNvbk5hbWU+PEZpcnN0TmFtZT5SZW15PC9GaXJzdE5hbWU+IDxTdXJOYW1lPkNhcmQ8L1N1ck5hbWU+PC9QZXJzb25OYW1lPgorCitXaG8gZGVzaWduZWQsIGltcGxlbWVudGVkIGFuZCBtYWludGFpbnMgdGhlIGV4dDIgZmlsZXN5c3RlbSBrZXJuZWwKK2NvZGUsIGFuZCBzb21lIG9mIHRoZSBleHQyIHV0aWxpdGllcy4gUmVteSBDYXJkIGlzIGFsc28gdGhlIGF1dGhvcgorb2Ygc2V2ZXJhbCBoZWxwZnVsIHNsaWRlcyBjb25jZXJuaW5nIHRoZSBleHQyIGZpbGVzeXN0ZW0uCitTcGVjaWZpY2FsbHksIGhlIGlzIHRoZSBhdXRob3Igb2YgPExpdGVyYWwgcmVtYXA9InR0Ij5GaWxlIE1hbmFnZW1lbnQgaW4gdGhlIExpbnV4CitLZXJuZWw8L0xpdGVyYWw+IGFuZCBvZiA8TGl0ZXJhbCByZW1hcD0idHQiPlRoZSBTZWNvbmQgRXh0ZW5kZWQgRmlsZSBTeXN0ZW0gLSBDdXJyZW50IFN0YXRlLAorRnV0dXJlIERldmVsb3BtZW50PC9MaXRlcmFsPi4KKworPC9QYXJhPgorPC9MaXN0SXRlbT4KKzxMaXN0SXRlbT4KKworPFBhcmE+Cis8UGVyc29uTmFtZT48Rmlyc3ROYW1lPldheW5lPC9GaXJzdE5hbWU+IDxTdXJOYW1lPkRhdmlzb248L1N1ck5hbWU+PC9QZXJzb25OYW1lPgorCitXaG8gZGVzaWduZWQgdGhlIGV4dDIgZmlsZXN5c3RlbS4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorPFBlcnNvbk5hbWU+PEZpcnN0TmFtZT5TdGVwaGVuPC9GaXJzdE5hbWU+IDxTdXJuYW1lPlR3ZWVkaWU8L1N1ck5hbWU+PC9QZXJzb25OYW1lPgorCitXaG8gaGVscGVkIGRlc2lnbmluZyB0aGUgZXh0MiBmaWxlc3lzdGVtIGtlcm5lbCBjb2RlIGFuZCB3cm90ZSB0aGUKK3NsaWRlcyA8TGl0ZXJhbCByZW1hcD0idHQiPk9wdGltaXphdGlvbnMgaW4gRmlsZSBTeXN0ZW1zPC9MaXRlcmFsPi4KKzwvUGFyYT4KKzwvTGlzdEl0ZW0+Cis8TGlzdEl0ZW0+CisKKzxQYXJhPgorPFBlcnNvbk5hbWU+PEZpcnN0TmFtZT5UaGVvZG9yZTwvRmlyc3ROYW1lPiA8U3VyTmFtZT5UcydvPC9TdXJOYW1lPjwvUGVyc29uTmFtZT4KKworV2hvIGlzIHRoZSBhdXRob3Igb2Ygc2V2ZXJhbCBleHQyIHV0aWxpdGllcyBhbmQgb2YgdGhlIGV4dDIgbGlicmFyeQorPExpdGVyYWwgcmVtYXA9InR0Ij5saWJleHQyZnM8L0xpdGVyYWw+ICh3aGljaCBJIGRpZG4ndCB1c2UsIHNpbXBseSBiZWNhdXNlIEkgZGlkbid0IGtub3cKK2l0IGV4aXN0cyB3aGVuIEkgc3RhcnRlZCB0byB3b3JrIG9uIG15IHByb2plY3QpLgorPC9QYXJhPgorPC9MaXN0SXRlbT4KKworPC9JdGVtaXplZExpc3Q+CisKKzwvUGFyYT4KKworPFBhcmE+CitMYXN0bHksIEkgd291bGQgbGlrZSB0byB0aGFuaywgb2YtY291cnNlLCA8UGVyc29uTmFtZT48Rmlyc3ROYW1lPkxpbnVzPC9GaXJzdE5hbWU+IDxTdXJOYW1lPlRvcnZhbGRzPC9TdXJOYW1lPjwvUGVyc29uTmFtZT4gYW5kIHRoZQorTGludXggY29tbXVuaXR5IGZvciBwcm92aWRpbmcgYWxsIG9mIHVzIHdpdGggc3VjaCBhIGdyZWF0IG9wZXJhdGluZworc3lzdGVtLgorPC9QYXJhPgorCis8UGFyYT4KK1BsZWFzZSBjb250YWN0IG1lIGluIGEgY2FzZSBvZiBidWcgcmVwb3J0LCBzdWdnZXN0aW9ucywgb3IganVzdCBhYm91dAorYW55dGhpbmcgY29uY2VybmluZyBFWFQyRUQuCis8L1BhcmE+CisKKzxQYXJhPgorRW5qb3ksCis8L1BhcmE+CisKKzxQYXJhPgorR2FkaSBPeG1hbiAmbHQ7dGd1ZEB0b2NobmFwYzIudGVjaG5pb24uYWMuaWwmZ3Q7Cis8L1BhcmE+CisKKzxQYXJhPgorSGFpZmEsIEF1Z3VzdCA5NQorPC9QYXJhPgorCis8L1NlY3QxPgorCis8L0FydGljbGU+CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZXh0MmVkL2V4dDIuZGVzY3JpcHRvcnMgYi9lMmZzcHJvZ3MvZXh0MmVkL2V4dDIuZGVzY3JpcHRvcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5MjdiMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvZXh0Mi5kZXNjcmlwdG9ycwpAQCAtMCwwICsxLDk3NiBAQAorRXh0ZW5kZWQgMiBmaWxlc3lzdGVtIHN0cnVjdHVyZSBkZWZpbml0aW9ucyBmb3IgZXh0MmVkLgorCitNb3N0IG9mIHRoaXMgZmlsZSBpcyBqdXN0IGNvcGllZCBmcm9tIHRoZSBleHQyIG1haW4gaW5jbHVkZSBmaWxlLgorCitNeSBwYXJzZXIgaXMgdmVyeSBwcmltaXRpdmUgLSBJdCBvbmx5IHNlYXJjaGVzIGZvciB0aGUgc3RydWN0IGtleXdvcmRzLAorYW5kIHVzZXMgdGhlIHZhcmlhYmxlcyBpbiB0aGVyZS4gVGhlIHJlc3Qgb2YgdGhlIGZpbGUgaXMganVzdCBpZ25vcmVkLgorCitZb3Ugd2lsbCBmaW5kIGF0IHRoZSBlbmQgYSBmZXcgYWRkaXRpb25hbCB0eXBlcyB3aGljaCBhcmUgbm90IGF2aWFibGUgaW4KK3RoZSBvcmlnaW5hbCBpbmNsdWRlIGZpbGUsIHN1Y2ggYXMgdGhlIHR5cGVzICJmaWxlIiBhbmQgImRpciIuIFRoZXkgaGF2ZQorbm8gdmFyaWFibGVzLCBidXQgYXJlIG5lY2Vzc2FyeSBkdWUgdG8gdGhlIHdheSBleHQyZWQgYmluZHMgQyBjb21tYW5kcwordG8gc3BlY2lmaWMgdHlwZXMuCisKK0dhZGkgT3htYW4sIDcvOTUKKworSGVyZSBpcyB0aGUgb3JpZ2luYWwgY29weXJpZ2h0OgorCisvKgorICogIGxpbnV4L2luY2x1ZGUvbGludXgvZXh0Ml9mcy5oCisgKgorICogIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCAgUmVteSBDYXJkIChjYXJkQG1hc2kuaWJwLmZyKQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFib3JhdG9pcmUgTUFTSSAtIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAgZnJvbQorICoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBUb3J2YWxkcworICovCisKKworLyoKKyAqIEFDTCBzdHJ1Y3R1cmVzCisgKi8KK3N0cnVjdCBleHQyX2FjbF9oZWFkZXIJLyogSGVhZGVyIG9mIEFjY2VzcyBDb250cm9sIExpc3RzICovCit7CisJdW5zaWduZWQgbG9uZyBhY2xoX3NpemU7CisJdW5zaWduZWQgbG9uZyBhY2xoX2ZpbGVfY291bnQ7CisJdW5zaWduZWQgbG9uZyBhY2xoX2FjbGVfY291bnQ7CisJdW5zaWduZWQgbG9uZyBhY2xoX2ZpcnN0X2FjbGU7Cit9OworCitzdHJ1Y3QgZXh0Ml9hY2xfZW50cnkJLyogQWNjZXNzIENvbnRyb2wgTGlzdCBFbnRyeSAqLworeworCXVuc2lnbmVkIGxvbmcgIGFjbGVfc2l6ZTsKKwl1bnNpZ25lZCBzaG9ydCBhY2xlX3Blcm1zOwkvKiBBY2Nlc3MgcGVybWlzc2lvbnMgKi8KKwl1bnNpZ25lZCBzaG9ydCBhY2xlX3R5cGU7CS8qIFR5cGUgb2YgZW50cnkgKi8KKwl1bnNpZ25lZCBzaG9ydCBhY2xlX3RhZzsJLyogVXNlciBvciBncm91cCBpZGVudGl0eSAqLworCXVuc2lnbmVkIHNob3J0IGFjbGVfcGFkMTsKKwl1bnNpZ25lZCBsb25nICBhY2xlX25leHQ7CS8qIFBvaW50ZXIgb24gbmV4dCBlbnRyeSBmb3IgdGhlICovCisJCQkJCS8qIHNhbWUgaW5vZGUgb3Igb24gbmV4dCBmcmVlIGVudHJ5ICovCit9OworCisvKgorICogU3RydWN0dXJlIG9mIGEgYmxvY2tzIGdyb3VwIGRlc2NyaXB0b3IKKyAqLworCitzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjCit7CisJX191MzIJYmdfYmxvY2tfYml0bWFwOwkJLyogQmxvY2tzIGJpdG1hcCBibG9jayAqLworCV9fdTMyCWJnX2lub2RlX2JpdG1hcDsJCS8qIElub2RlcyBiaXRtYXAgYmxvY2sgKi8KKwlfX3UzMgliZ19pbm9kZV90YWJsZTsJCS8qIElub2RlcyB0YWJsZSBibG9jayAqLworCV9fdTE2CWJnX2ZyZWVfYmxvY2tzX2NvdW50OwkvKiBGcmVlIGJsb2NrcyBjb3VudCAqLworCV9fdTE2CWJnX2ZyZWVfaW5vZGVzX2NvdW50OwkvKiBGcmVlIGlub2RlcyBjb3VudCAqLworCV9fdTE2CWJnX3VzZWRfZGlyc19jb3VudDsJLyogRGlyZWN0b3JpZXMgY291bnQgKi8KKwlfX3UxNgliZ19wYWQ7CisJX191MzIgICBiZ19yZXNlcnZlZFswXTsKKwlfX3UzMiAgIGJnX3Jlc2VydmVkWzFdOworCV9fdTMyICAgYmdfcmVzZXJ2ZWRbMl07Cit9OworCisvKgorICogU3RydWN0dXJlIG9mIGFuIGlub2RlIG9uIHRoZSBkaXNrCisgKi8KK3N0cnVjdCBleHQyX2lub2RlIHsKKwlfX3UxNiBpX21vZGU7CQkvKiBGaWxlIG1vZGUgKi8KKwlfX3UxNiBpX3VpZDsJCS8qIE93bmVyIFVpZCAqLworCV9fdTMyICBpX3NpemU7CQkvKiBTaXplIGluIGJ5dGVzICovCisJX191MzIgIGlfYXRpbWU7CQkvKiBBY2Nlc3MgdGltZSAqLworCV9fdTMyICBpX2N0aW1lOwkJLyogQ3JlYXRpb24gdGltZSAqLworCV9fdTMyICBpX210aW1lOwkJLyogTW9kaWZpY2F0aW9uIHRpbWUgKi8KKwlfX3UzMiAgaV9kdGltZTsJCS8qIERlbGV0aW9uIFRpbWUgKi8KKwlfX3UxNiAgaV9naWQ7CQkvKiBHcm91cCBJZCAqLworCV9fdTE2ICBpX2xpbmtzX2NvdW50OwkvKiBMaW5rcyBjb3VudCAqLworCV9fdTMyICBpX2Jsb2NrczsJLyogQmxvY2tzIGNvdW50ICovCisJX191MzIgIGlfZmxhZ3M7CQkvKiBGaWxlIGZsYWdzICovCisJX191MzIgIGxfaV9yZXNlcnZlZDE7CisJX191MzIgIGlfYmxvY2tbMF07IC8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyICBpX2Jsb2NrWzFdOyAvKiBQb2ludGVycyB0byBibG9ja3MgKi8KKwlfX3UzMiAgaV9ibG9ja1syXTsgLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIgIGlfYmxvY2tbM107IC8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyICBpX2Jsb2NrWzRdOyAvKiBQb2ludGVycyB0byBibG9ja3MgKi8KKwlfX3UzMiAgaV9ibG9ja1s1XTsgLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIgIGlfYmxvY2tbNl07IC8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyICBpX2Jsb2NrWzddOyAvKiBQb2ludGVycyB0byBibG9ja3MgKi8KKwlfX3UzMiAgaV9ibG9ja1s4XTsgLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIgIGlfYmxvY2tbOV07IC8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyICBpX2Jsb2NrWzEwXTsgLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIgIGlfYmxvY2tbMTFdOyAvKiBQb2ludGVycyB0byBibG9ja3MgKi8KKwlfX3UzMiAgaV9ibG9ja1sxMl07IC8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyICBpX2Jsb2NrWzEzXTsgLyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIgIGlfYmxvY2tbMTRdOyAvKiBQb2ludGVycyB0byBibG9ja3MgKi8KKwlfX3UzMiAgaV92ZXJzaW9uOwkvKiBGaWxlIHZlcnNpb24gKGZvciBORlMpICovCisJX191MzIgIGlfZmlsZV9hY2w7CS8qIEZpbGUgQUNMICovCisJX191MzIgIGlfZGlyX2FjbDsJLyogRGlyZWN0b3J5IEFDTCAqLworCV9fdTMyICBpX2ZhZGRyOwkJLyogRnJhZ21lbnQgYWRkcmVzcyAqLworCV9fdTggICBsX2lfZnJhZzsJLyogRnJhZ21lbnQgbnVtYmVyICovCisJX191OCAgIGxfaV9mc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAqLworCV9fdTE2ICBpX3BhZDE7CisJX191MTYJbF9pX3VpZF9oaWdoOwkvKiB0aGVzZSAyIGZpZWxkcyAgICAqLworCV9fdTE2CWxfaV9naWRfaGlnaDsJLyogd2VyZSByZXNlcnZlZDJbMF0gKi8KKwlfX3UzMiAgbF9pX3Jlc2VydmVkMjsKK307CisKKy8qCisgKiBTdHJ1Y3R1cmUgb2YgdGhlIHN1cGVyIGJsb2NrCisgKi8KK3N0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHsKKwlfX3UzMglzX2lub2Rlc19jb3VudDsJCS8qIElub2RlcyBjb3VudCAqLworCV9fdTMyCXNfYmxvY2tzX2NvdW50OwkJLyogQmxvY2tzIGNvdW50ICovCisJX191MzIJc19yX2Jsb2Nrc19jb3VudDsJLyogUmVzZXJ2ZWQgYmxvY2tzIGNvdW50ICovCisJX191MzIJc19mcmVlX2Jsb2Nrc19jb3VudDsJLyogRnJlZSBibG9ja3MgY291bnQgKi8KKwlfX3UzMglzX2ZyZWVfaW5vZGVzX2NvdW50OwkvKiBGcmVlIGlub2RlcyBjb3VudCAqLworCV9fdTMyCXNfZmlyc3RfZGF0YV9ibG9jazsJLyogRmlyc3QgRGF0YSBCbG9jayAqLworCV9fdTMyCXNfbG9nX2Jsb2NrX3NpemU7CS8qIEJsb2NrIHNpemUgKi8KKwlfX3MzMglzX2xvZ19mcmFnX3NpemU7CS8qIEZyYWdtZW50IHNpemUgKi8KKwlfX3UzMglzX2Jsb2Nrc19wZXJfZ3JvdXA7CS8qICMgQmxvY2tzIHBlciBncm91cCAqLworCV9fdTMyCXNfZnJhZ3NfcGVyX2dyb3VwOwkvKiAjIEZyYWdtZW50cyBwZXIgZ3JvdXAgKi8KKwlfX3UzMglzX2lub2Rlc19wZXJfZ3JvdXA7CS8qICMgSW5vZGVzIHBlciBncm91cCAqLworCV9fdTMyCXNfbXRpbWU7CQkvKiBNb3VudCB0aW1lICovCisJX191MzIJc193dGltZTsJCS8qIFdyaXRlIHRpbWUgKi8KKwlfX3UxNglzX21udF9jb3VudDsJCS8qIE1vdW50IGNvdW50ICovCisJX19zMTYJc19tYXhfbW50X2NvdW50OwkvKiBNYXhpbWFsIG1vdW50IGNvdW50ICovCisJX191MTYJc19tYWdpYzsJCS8qIE1hZ2ljIHNpZ25hdHVyZSAqLworCV9fdTE2CXNfc3RhdGU7CQkvKiBGaWxlIHN5c3RlbSBzdGF0ZSAqLworCV9fdTE2CXNfZXJyb3JzOwkJLyogQmVoYXZpb3VyIHdoZW4gZGV0ZWN0aW5nIGVycm9ycyAqLworCV9fdTE2CXNfbWlub3JfcmV2X2xldmVsOyAJLyogbWlub3IgcmV2aXNpb24gbGV2ZWwgKi8KKwlfX3UzMglzX2xhc3RjaGVjazsJCS8qIHRpbWUgb2YgbGFzdCBjaGVjayAqLworCV9fdTMyCXNfY2hlY2tpbnRlcnZhbDsJLyogbWF4LiB0aW1lIGJldHdlZW4gY2hlY2tzICovCisJX191MzIJc19jcmVhdG9yX29zOwkJLyogT1MgKi8KKwlfX3UzMglzX3Jldl9sZXZlbDsJCS8qIFJldmlzaW9uIGxldmVsICovCisJX191MTYJc19kZWZfcmVzdWlkOwkJLyogRGVmYXVsdCB1aWQgZm9yIHJlc2VydmVkIGJsb2NrcyAqLworCV9fdTE2CXNfZGVmX3Jlc2dpZDsJCS8qIERlZmF1bHQgZ2lkIGZvciByZXNlcnZlZCBibG9ja3MgKi8KKwlfX3UzMglzX2ZpcnN0X2lubzsgCQkvKiBGaXJzdCBub24tcmVzZXJ2ZWQgaW5vZGUgKi8KKwlfX3UxNiAgIHNfaW5vZGVfc2l6ZTsgCQkvKiBzaXplIG9mIGlub2RlIHN0cnVjdHVyZSAqLworCV9fdTE2CXNfYmxvY2tfZ3JvdXBfbnI7IAkvKiBibG9jayBncm91cCAjIG9mIHRoaXMgc3VwZXJibG9jayAqLworCV9fdTMyCXNfZmVhdHVyZV9jb21wYXQ7IAkvKiBjb21wYXRpYmxlIGZlYXR1cmUgc2V0ICovCisJX191MzIJc19mZWF0dXJlX2luY29tcGF0OyAJLyogaW5jb21wYXRpYmxlIGZlYXR1cmUgc2V0ICovCisJX191MzIJc19mZWF0dXJlX3JvX2NvbXBhdDsgCS8qIHJlYWRvbmx5LWNvbXBhdGlibGUgZmVhdHVyZSBzZXQgKi8KKwljaGFyWzE2XSBzX3V1aWQ7CQkvKiAxMjgtYml0IHV1aWQgZm9yIHZvbHVtZSAqLworCWNoYXJbMTZdIHNfdm9sdW1lX25hbWU7IAkvKiB2b2x1bWUgbmFtZSAqLworCWNoYXJbNjRdIHNfbGFzdF9tb3VudGVkOyAJLyogZGlyZWN0b3J5IHdoZXJlIGxhc3QgbW91bnRlZCAqLworCV9fdTMyCXNfYWxnb3JpdGhtX3VzYWdlX2JpdG1hcDsgLyogRm9yIGNvbXByZXNzaW9uICovCisJLyoKKwkgKiBQZXJmb3JtYW5jZSBoaW50cy4gIERpcmVjdG9yeSBwcmVhbGxvY2F0aW9uIHNob3VsZCBvbmx5CisJICogaGFwcGVuIGlmIHRoZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9QUkVBTExPQyBmbGFnIGlzIG9uLgorCSAqLworCV9fdTgJc19wcmVhbGxvY19ibG9ja3M7CS8qIE5yIG9mIGJsb2NrcyB0byB0cnkgdG8gcHJlYWxsb2NhdGUqLworCV9fdTgJc19wcmVhbGxvY19kaXJfYmxvY2tzOwkvKiBOciB0byBwcmVhbGxvY2F0ZSBmb3IgZGlycyAqLworCV9fdTE2CXNfcGFkZGluZzE7CisJLyogCisJICogSm91cm5hbGluZyBzdXBwb3J0IHZhbGlkIGlmIEVYVDJfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwgc2V0LgorCSAqLworCWNoYXJbMTZdIHNfam91cm5hbF91dWlkOwkvKiB1dWlkIG9mIGpvdXJuYWwgc3VwZXJibG9jayAqLworCV9fdTMyCXNfam91cm5hbF9pbnVtOwkJLyogaW5vZGUgbnVtYmVyIG9mIGpvdXJuYWwgZmlsZSAqLworCV9fdTMyCXNfam91cm5hbF9kZXY7CQkvKiBkZXZpY2UgbnVtYmVyIG9mIGpvdXJuYWwgZmlsZSAqLworCV9fdTMyCXNfbGFzdF9vcnBoYW47CQkvKiBzdGFydCBvZiBsaXN0IG9mIGlub2RlcyB0byBkZWxldGUgKi8KKworCisJX191MzIgIHNfcmVzZXJ2ZWRbMF07CS8qIFBhZGRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2sgKi8KKwlfX3UzMiAgc19yZXNlcnZlZFsxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFszXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTFdOworCV9fdTMyICBzX3Jlc2VydmVkWzEyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxM107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTRdOworCV9fdTMyICBzX3Jlc2VydmVkWzE1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTddOworCV9fdTMyICBzX3Jlc2VydmVkWzE4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxOV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMjBdOworCV9fdTMyICBzX3Jlc2VydmVkWzIxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsyMl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMjNdOworCV9fdTMyICBzX3Jlc2VydmVkWzI0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsyNV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMjZdOworCV9fdTMyICBzX3Jlc2VydmVkWzI3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsyOF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMjldOworCV9fdTMyICBzX3Jlc2VydmVkWzMwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFszMV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMzJdOworCV9fdTMyICBzX3Jlc2VydmVkWzMzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFszNF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMzVdOworCV9fdTMyICBzX3Jlc2VydmVkWzM2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFszN107CisJX191MzIgIHNfcmVzZXJ2ZWRbMzhdOworCV9fdTMyICBzX3Jlc2VydmVkWzM5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs0MF07CisJX191MzIgIHNfcmVzZXJ2ZWRbNDFdOworCV9fdTMyICBzX3Jlc2VydmVkWzQyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs0M107CisJX191MzIgIHNfcmVzZXJ2ZWRbNDRdOworCV9fdTMyICBzX3Jlc2VydmVkWzQ1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs0Nl07CisJX191MzIgIHNfcmVzZXJ2ZWRbNDddOworCV9fdTMyICBzX3Jlc2VydmVkWzQ4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs0OV07CisJX191MzIgIHNfcmVzZXJ2ZWRbNTBdOworCV9fdTMyICBzX3Jlc2VydmVkWzUxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs1Ml07CisJX191MzIgIHNfcmVzZXJ2ZWRbNTNdOworCV9fdTMyICBzX3Jlc2VydmVkWzU0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs1NV07CisJX191MzIgIHNfcmVzZXJ2ZWRbNTZdOworCV9fdTMyICBzX3Jlc2VydmVkWzU3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs1OF07CisJX191MzIgIHNfcmVzZXJ2ZWRbNTldOworCV9fdTMyICBzX3Jlc2VydmVkWzYwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs2MV07CisJX191MzIgIHNfcmVzZXJ2ZWRbNjJdOworCV9fdTMyICBzX3Jlc2VydmVkWzYzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs2NF07CisJX191MzIgIHNfcmVzZXJ2ZWRbNjVdOworCV9fdTMyICBzX3Jlc2VydmVkWzY2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs2N107CisJX191MzIgIHNfcmVzZXJ2ZWRbNjhdOworCV9fdTMyICBzX3Jlc2VydmVkWzY5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs3MF07CisJX191MzIgIHNfcmVzZXJ2ZWRbNzFdOworCV9fdTMyICBzX3Jlc2VydmVkWzcyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs3M107CisJX191MzIgIHNfcmVzZXJ2ZWRbNzRdOworCV9fdTMyICBzX3Jlc2VydmVkWzc1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs3Nl07CisJX191MzIgIHNfcmVzZXJ2ZWRbNzddOworCV9fdTMyICBzX3Jlc2VydmVkWzc4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs3OV07CisJX191MzIgIHNfcmVzZXJ2ZWRbODBdOworCV9fdTMyICBzX3Jlc2VydmVkWzgxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs4Ml07CisJX191MzIgIHNfcmVzZXJ2ZWRbODNdOworCV9fdTMyICBzX3Jlc2VydmVkWzg0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs4NV07CisJX191MzIgIHNfcmVzZXJ2ZWRbODZdOworCV9fdTMyICBzX3Jlc2VydmVkWzg3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs4OF07CisJX191MzIgIHNfcmVzZXJ2ZWRbODldOworCV9fdTMyICBzX3Jlc2VydmVkWzkwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs5MV07CisJX191MzIgIHNfcmVzZXJ2ZWRbOTJdOworCV9fdTMyICBzX3Jlc2VydmVkWzkzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFs5NF07CisJX191MzIgIHNfcmVzZXJ2ZWRbOTVdOworCV9fdTMyICBzX3Jlc2VydmVkWzk2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFs5N107CisJX191MzIgIHNfcmVzZXJ2ZWRbOThdOworCV9fdTMyICBzX3Jlc2VydmVkWzk5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMDBdOworCV9fdTMyICBzX3Jlc2VydmVkWzEwMV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTAyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMDNdOworCV9fdTMyICBzX3Jlc2VydmVkWzEwNF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTA1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMDZdOworCV9fdTMyICBzX3Jlc2VydmVkWzEwN107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTA4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMDldOworCV9fdTMyICBzX3Jlc2VydmVkWzExMF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTExXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMTJdOworCV9fdTMyICBzX3Jlc2VydmVkWzExM107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTE0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMTVdOworCV9fdTMyICBzX3Jlc2VydmVkWzExNl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTE3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMThdOworCV9fdTMyICBzX3Jlc2VydmVkWzExOV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTIwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMjFdOworCV9fdTMyICBzX3Jlc2VydmVkWzEyMl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTIzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMjRdOworCV9fdTMyICBzX3Jlc2VydmVkWzEyNV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTI2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMjddOworCV9fdTMyICBzX3Jlc2VydmVkWzEyOF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTI5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMzBdOworCV9fdTMyICBzX3Jlc2VydmVkWzEzMV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTMyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMzNdOworCV9fdTMyICBzX3Jlc2VydmVkWzEzNF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTM1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMzZdOworCV9fdTMyICBzX3Jlc2VydmVkWzEzN107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTM4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxMzldOworCV9fdTMyICBzX3Jlc2VydmVkWzE0MF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTQxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNDJdOworCV9fdTMyICBzX3Jlc2VydmVkWzE0M107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTQ0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNDVdOworCV9fdTMyICBzX3Jlc2VydmVkWzE0Nl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTQ3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNDhdOworCV9fdTMyICBzX3Jlc2VydmVkWzE0OV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTUwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNTFdOworCV9fdTMyICBzX3Jlc2VydmVkWzE1Ml07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTUzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNTRdOworCV9fdTMyICBzX3Jlc2VydmVkWzE1NV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTU2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNTddOworCV9fdTMyICBzX3Jlc2VydmVkWzE1OF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTU5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNjBdOworCV9fdTMyICBzX3Jlc2VydmVkWzE2MV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTYyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNjNdOworCV9fdTMyICBzX3Jlc2VydmVkWzE2NF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTY1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNjZdOworCV9fdTMyICBzX3Jlc2VydmVkWzE2N107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTY4XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNjldOworCV9fdTMyICBzX3Jlc2VydmVkWzE3MF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTcxXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNzJdOworCV9fdTMyICBzX3Jlc2VydmVkWzE3M107CisJX191MzIgIHNfcmVzZXJ2ZWRbMTc0XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNzVdOworCV9fdTMyICBzX3Jlc2VydmVkWzE3Nl07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTc3XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxNzhdOworCV9fdTMyICBzX3Jlc2VydmVkWzE3OV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTgwXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxODFdOworCV9fdTMyICBzX3Jlc2VydmVkWzE4Ml07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTgzXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxODRdOworCV9fdTMyICBzX3Jlc2VydmVkWzE4NV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTg2XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxODddOworCV9fdTMyICBzX3Jlc2VydmVkWzE4OF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTg5XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxOTBdOworCV9fdTMyICBzX3Jlc2VydmVkWzE5MV07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTkyXTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxOTNdOworCV9fdTMyICBzX3Jlc2VydmVkWzE5NF07CisJX191MzIgIHNfcmVzZXJ2ZWRbMTk1XTsKKwlfX3UzMiAgc19yZXNlcnZlZFsxOTZdOworfTsKKworVGhlIGZvbGxvd2luZyBpcyBhY3R1YWxseSBub3QgdXNlZCwgZHVlIHRvIHRoZSB2YXJpYWJsZSBsZW5ndGggb2YgdGhlCituYW1lIGZpZWxkLiBFWFQyRUQgaGFuZGxlcyBkaXJlY3RvcmllcyB0aHJvdWdoIHRoZSB0eXBlICJkaXIiIGJlbG93LgorCisvKgorICogU3RydWN0dXJlIG9mIGEgZGlyZWN0b3J5IGVudHJ5CisgKi8KKworLyogc3RydWN0IGV4dDJfZGlyX2VudHJ5IHsgKi8KKy8qCisJX191MzIgIGlub2RlOwkJCS8qIElub2RlIG51bWJlciAqLworCV9fdTE2IHJlY19sZW47CQkJLyogRGlyZWN0b3J5IGVudHJ5IGxlbmd0aCAqLworCV9fdTE2IG5hbWVfbGVuOwkJLyogTmFtZSBsZW5ndGggKi8KKwljaGFyICAgICAgICAgICBuYW1lW0VYVDJfTkFNRV9MRU5dOwkvKiBGaWxlIG5hbWUgKi8KK307CisqLworCitzdHJ1Y3QgZmlsZSB7Cit9OworCitzdHJ1Y3QgZGlyIHsKK307CisKK3N0cnVjdCBibG9ja19iaXRtYXAgeworfTsKKworc3RydWN0IGlub2RlX2JpdG1hcCB7Cit9OworCitzdHJ1Y3QgZXh0Ml9keF9yb290X25vZGUgeworCV9fdTMyIGRvdF9pbm9kZTsKKwlfX3UxNiBkb3RfcmVjX2xlbjsKKwlfX3U4IGRvdF9uYW1lX2xlbjsKKwlfX3U4IGRvdF9maWxlX3R5cGU7CisJY2hhcls0XSBkb3RfbmFtZTsKKwlfX3UzMiBkb3RfZG90X2lub2RlOworCV9fdTE2IGRvdF9kb3RfcmVjX2xlbjsKKwlfX3U4IGRvdF9kb3RfbmFtZV9sZW47CisJX191OCBkb3RfZG90X2ZpbGVfdHlwZTsKKwljaGFyWzRdIGRvdF9kb3RfbmFtZTsKKwlfX3UzMiByZXNlcnZlZF96ZXJvOworCV9fdTggaGFzaF92ZXJzaW9uOyAvKiAwIG5vdywgMSBhdCByZWxlYXNlICovCisJX191OCBpbmZvX2xlbmd0aDsgLyogOCAqLworCV9fdTggaW5kaXJlY3RfbGV2ZWxzOworCV9fdTggdW51c2VkX2ZsYWdzOworCV9fdTE2IGxpbWl0OworCV9fdTE2IGNvdW50OworCV9fdTMyIGJsb2NrWzBdOworCV9fdTMyIGhhc2hbMV07CisJX191MzIgYmxvY2tbMV07CisJX191MzIgaGFzaFsyXTsKKwlfX3UzMiBibG9ja1syXTsKKwlfX3UzMiBoYXNoWzNdOworCV9fdTMyIGJsb2NrWzNdOworCV9fdTMyIGhhc2hbNF07CisJX191MzIgYmxvY2tbNF07CisJX191MzIgaGFzaFs1XTsKKwlfX3UzMiBibG9ja1s1XTsKKwlfX3UzMiBoYXNoWzZdOworCV9fdTMyIGJsb2NrWzZdOworCV9fdTMyIGhhc2hbN107CisJX191MzIgYmxvY2tbN107CisJX191MzIgaGFzaFs4XTsKKwlfX3UzMiBibG9ja1s4XTsKKwlfX3UzMiBoYXNoWzldOworCV9fdTMyIGJsb2NrWzldOworCV9fdTMyIGhhc2hbMTBdOworCV9fdTMyIGJsb2NrWzEwXTsKKwlfX3UzMiBoYXNoWzExXTsKKwlfX3UzMiBibG9ja1sxMV07CisJX191MzIgaGFzaFsxMl07CisJX191MzIgYmxvY2tbMTJdOworCV9fdTMyIGhhc2hbMTNdOworCV9fdTMyIGJsb2NrWzEzXTsKKwlfX3UzMiBoYXNoWzE0XTsKKwlfX3UzMiBibG9ja1sxNF07CisJX191MzIgaGFzaFsxNV07CisJX191MzIgYmxvY2tbMTVdOworCV9fdTMyIGhhc2hbMTZdOworCV9fdTMyIGJsb2NrWzE2XTsKKwlfX3UzMiBoYXNoWzE3XTsKKwlfX3UzMiBibG9ja1sxN107CisJX191MzIgaGFzaFsxOF07CisJX191MzIgYmxvY2tbMThdOworCV9fdTMyIGhhc2hbMTldOworCV9fdTMyIGJsb2NrWzE5XTsKKwlfX3UzMiBoYXNoWzIwXTsKKwlfX3UzMiBibG9ja1syMF07CisJX191MzIgaGFzaFsyMV07CisJX191MzIgYmxvY2tbMjFdOworCV9fdTMyIGhhc2hbMjJdOworCV9fdTMyIGJsb2NrWzIyXTsKKwlfX3UzMiBoYXNoWzIzXTsKKwlfX3UzMiBibG9ja1syM107CisJX191MzIgaGFzaFsyNF07CisJX191MzIgYmxvY2tbMjRdOworCV9fdTMyIGhhc2hbMjVdOworCV9fdTMyIGJsb2NrWzI1XTsKKwlfX3UzMiBoYXNoWzI2XTsKKwlfX3UzMiBibG9ja1syNl07CisJX191MzIgaGFzaFsyN107CisJX191MzIgYmxvY2tbMjddOworCV9fdTMyIGhhc2hbMjhdOworCV9fdTMyIGJsb2NrWzI4XTsKKwlfX3UzMiBoYXNoWzI5XTsKKwlfX3UzMiBibG9ja1syOV07CisJX191MzIgaGFzaFszMF07CisJX191MzIgYmxvY2tbMzBdOworCV9fdTMyIGhhc2hbMzFdOworCV9fdTMyIGJsb2NrWzMxXTsKKwlfX3UzMiBoYXNoWzMyXTsKKwlfX3UzMiBibG9ja1szMl07CisJX191MzIgaGFzaFszM107CisJX191MzIgYmxvY2tbMzNdOworCV9fdTMyIGhhc2hbMzRdOworCV9fdTMyIGJsb2NrWzM0XTsKKwlfX3UzMiBoYXNoWzM1XTsKKwlfX3UzMiBibG9ja1szNV07CisJX191MzIgaGFzaFszNl07CisJX191MzIgYmxvY2tbMzZdOworCV9fdTMyIGhhc2hbMzddOworCV9fdTMyIGJsb2NrWzM3XTsKKwlfX3UzMiBoYXNoWzM4XTsKKwlfX3UzMiBibG9ja1szOF07CisJX191MzIgaGFzaFszOV07CisJX191MzIgYmxvY2tbMzldOworCV9fdTMyIGhhc2hbNDBdOworCV9fdTMyIGJsb2NrWzQwXTsKKwlfX3UzMiBoYXNoWzQxXTsKKwlfX3UzMiBibG9ja1s0MV07CisJX191MzIgaGFzaFs0Ml07CisJX191MzIgYmxvY2tbNDJdOworCV9fdTMyIGhhc2hbNDNdOworCV9fdTMyIGJsb2NrWzQzXTsKKwlfX3UzMiBoYXNoWzQ0XTsKKwlfX3UzMiBibG9ja1s0NF07CisJX191MzIgaGFzaFs0NV07CisJX191MzIgYmxvY2tbNDVdOworCV9fdTMyIGhhc2hbNDZdOworCV9fdTMyIGJsb2NrWzQ2XTsKKwlfX3UzMiBoYXNoWzQ3XTsKKwlfX3UzMiBibG9ja1s0N107CisJX191MzIgaGFzaFs0OF07CisJX191MzIgYmxvY2tbNDhdOworCV9fdTMyIGhhc2hbNDldOworCV9fdTMyIGJsb2NrWzQ5XTsKKwlfX3UzMiBoYXNoWzUwXTsKKwlfX3UzMiBibG9ja1s1MF07CisJX191MzIgaGFzaFs1MV07CisJX191MzIgYmxvY2tbNTFdOworCV9fdTMyIGhhc2hbNTJdOworCV9fdTMyIGJsb2NrWzUyXTsKKwlfX3UzMiBoYXNoWzUzXTsKKwlfX3UzMiBibG9ja1s1M107CisJX191MzIgaGFzaFs1NF07CisJX191MzIgYmxvY2tbNTRdOworCV9fdTMyIGhhc2hbNTVdOworCV9fdTMyIGJsb2NrWzU1XTsKKwlfX3UzMiBoYXNoWzU2XTsKKwlfX3UzMiBibG9ja1s1Nl07CisJX191MzIgaGFzaFs1N107CisJX191MzIgYmxvY2tbNTddOworCV9fdTMyIGhhc2hbNThdOworCV9fdTMyIGJsb2NrWzU4XTsKKwlfX3UzMiBoYXNoWzU5XTsKKwlfX3UzMiBibG9ja1s1OV07CisJX191MzIgaGFzaFs2MF07CisJX191MzIgYmxvY2tbNjBdOworCV9fdTMyIGhhc2hbNjFdOworCV9fdTMyIGJsb2NrWzYxXTsKKwlfX3UzMiBoYXNoWzYyXTsKKwlfX3UzMiBibG9ja1s2Ml07CisJX191MzIgaGFzaFs2M107CisJX191MzIgYmxvY2tbNjNdOworCV9fdTMyIGhhc2hbNjRdOworCV9fdTMyIGJsb2NrWzY0XTsKKwlfX3UzMiBoYXNoWzY1XTsKKwlfX3UzMiBibG9ja1s2NV07CisJX191MzIgaGFzaFs2Nl07CisJX191MzIgYmxvY2tbNjZdOworCV9fdTMyIGhhc2hbNjddOworCV9fdTMyIGJsb2NrWzY3XTsKKwlfX3UzMiBoYXNoWzY4XTsKKwlfX3UzMiBibG9ja1s2OF07CisJX191MzIgaGFzaFs2OV07CisJX191MzIgYmxvY2tbNjldOworCV9fdTMyIGhhc2hbNzBdOworCV9fdTMyIGJsb2NrWzcwXTsKKwlfX3UzMiBoYXNoWzcxXTsKKwlfX3UzMiBibG9ja1s3MV07CisJX191MzIgaGFzaFs3Ml07CisJX191MzIgYmxvY2tbNzJdOworCV9fdTMyIGhhc2hbNzNdOworCV9fdTMyIGJsb2NrWzczXTsKKwlfX3UzMiBoYXNoWzc0XTsKKwlfX3UzMiBibG9ja1s3NF07CisJX191MzIgaGFzaFs3NV07CisJX191MzIgYmxvY2tbNzVdOworCV9fdTMyIGhhc2hbNzZdOworCV9fdTMyIGJsb2NrWzc2XTsKKwlfX3UzMiBoYXNoWzc3XTsKKwlfX3UzMiBibG9ja1s3N107CisJX191MzIgaGFzaFs3OF07CisJX191MzIgYmxvY2tbNzhdOworCV9fdTMyIGhhc2hbNzldOworCV9fdTMyIGJsb2NrWzc5XTsKKwlfX3UzMiBoYXNoWzgwXTsKKwlfX3UzMiBibG9ja1s4MF07CisJX191MzIgaGFzaFs4MV07CisJX191MzIgYmxvY2tbODFdOworCV9fdTMyIGhhc2hbODJdOworCV9fdTMyIGJsb2NrWzgyXTsKKwlfX3UzMiBoYXNoWzgzXTsKKwlfX3UzMiBibG9ja1s4M107CisJX191MzIgaGFzaFs4NF07CisJX191MzIgYmxvY2tbODRdOworCV9fdTMyIGhhc2hbODVdOworCV9fdTMyIGJsb2NrWzg1XTsKKwlfX3UzMiBoYXNoWzg2XTsKKwlfX3UzMiBibG9ja1s4Nl07CisJX191MzIgaGFzaFs4N107CisJX191MzIgYmxvY2tbODddOworCV9fdTMyIGhhc2hbODhdOworCV9fdTMyIGJsb2NrWzg4XTsKKwlfX3UzMiBoYXNoWzg5XTsKKwlfX3UzMiBibG9ja1s4OV07CisJX191MzIgaGFzaFs4MF07CisJX191MzIgYmxvY2tbODBdOworCV9fdTMyIGhhc2hbODFdOworCV9fdTMyIGJsb2NrWzgxXTsKKwlfX3UzMiBoYXNoWzgyXTsKKwlfX3UzMiBibG9ja1s4Ml07CisJX191MzIgaGFzaFs4M107CisJX191MzIgYmxvY2tbODNdOworCV9fdTMyIGhhc2hbODRdOworCV9fdTMyIGJsb2NrWzg0XTsKKwlfX3UzMiBoYXNoWzg1XTsKKwlfX3UzMiBibG9ja1s4NV07CisJX191MzIgaGFzaFs4Nl07CisJX191MzIgYmxvY2tbODZdOworCV9fdTMyIGhhc2hbODddOworCV9fdTMyIGJsb2NrWzg3XTsKKwlfX3UzMiBoYXNoWzg4XTsKKwlfX3UzMiBibG9ja1s4OF07CisJX191MzIgaGFzaFs4OV07CisJX191MzIgYmxvY2tbODldOworCV9fdTMyIGhhc2hbOTBdOworCV9fdTMyIGJsb2NrWzkwXTsKKwlfX3UzMiBoYXNoWzkxXTsKKwlfX3UzMiBibG9ja1s5MV07CisJX191MzIgaGFzaFs5Ml07CisJX191MzIgYmxvY2tbOTJdOworCV9fdTMyIGhhc2hbOTNdOworCV9fdTMyIGJsb2NrWzkzXTsKKwlfX3UzMiBoYXNoWzk0XTsKKwlfX3UzMiBibG9ja1s5NF07CisJX191MzIgaGFzaFs5NV07CisJX191MzIgYmxvY2tbOTVdOworCV9fdTMyIGhhc2hbOTZdOworCV9fdTMyIGJsb2NrWzk2XTsKKwlfX3UzMiBoYXNoWzk3XTsKKwlfX3UzMiBibG9ja1s5N107CisJX191MzIgaGFzaFs5OF07CisJX191MzIgYmxvY2tbOThdOworCV9fdTMyIGhhc2hbOTldOworCV9fdTMyIGJsb2NrWzk5XTsKKwlfX3UzMiBoYXNoWzEwMF07CisJX191MzIgYmxvY2tbMTAwXTsKKwlfX3UzMiBoYXNoWzEwMV07CisJX191MzIgYmxvY2tbMTAxXTsKKwlfX3UzMiBoYXNoWzEwMl07CisJX191MzIgYmxvY2tbMTAyXTsKKwlfX3UzMiBoYXNoWzEwM107CisJX191MzIgYmxvY2tbMTAzXTsKKwlfX3UzMiBoYXNoWzEwNF07CisJX191MzIgYmxvY2tbMTA0XTsKKwlfX3UzMiBoYXNoWzEwNV07CisJX191MzIgYmxvY2tbMTA1XTsKKwlfX3UzMiBoYXNoWzEwNl07CisJX191MzIgYmxvY2tbMTA2XTsKKwlfX3UzMiBoYXNoWzEwN107CisJX191MzIgYmxvY2tbMTA3XTsKKwlfX3UzMiBoYXNoWzEwOF07CisJX191MzIgYmxvY2tbMTA4XTsKKwlfX3UzMiBoYXNoWzEwOV07CisJX191MzIgYmxvY2tbMTA5XTsKKwlfX3UzMiBoYXNoWzExMF07CisJX191MzIgYmxvY2tbMTEwXTsKKwlfX3UzMiBoYXNoWzExMV07CisJX191MzIgYmxvY2tbMTExXTsKKwlfX3UzMiBoYXNoWzExMl07CisJX191MzIgYmxvY2tbMTEyXTsKKwlfX3UzMiBoYXNoWzExM107CisJX191MzIgYmxvY2tbMTEzXTsKKwlfX3UzMiBoYXNoWzExNF07CisJX191MzIgYmxvY2tbMTE0XTsKKwlfX3UzMiBoYXNoWzExNV07CisJX191MzIgYmxvY2tbMTE1XTsKKwlfX3UzMiBoYXNoWzExNl07CisJX191MzIgYmxvY2tbMTE2XTsKKwlfX3UzMiBoYXNoWzExN107CisJX191MzIgYmxvY2tbMTE3XTsKKwlfX3UzMiBoYXNoWzExOF07CisJX191MzIgYmxvY2tbMTE4XTsKKwlfX3UzMiBoYXNoWzExOV07CisJX191MzIgYmxvY2tbMTE5XTsKKwlfX3UzMiBoYXNoWzEyMF07CisJX191MzIgYmxvY2tbMTIwXTsKKwlfX3UzMiBoYXNoWzEyMV07CisJX191MzIgYmxvY2tbMTIxXTsKKwlfX3UzMiBoYXNoWzEyMl07CisJX191MzIgYmxvY2tbMTIyXTsKKwlfX3UzMiBoYXNoWzEyM107CisJX191MzIgYmxvY2tbMTIzXTsKKwlfX3UzMiBoYXNoWzEyNF07CisJX191MzIgYmxvY2tbMTI0XTsKKwlfX3UzMiBoYXNoWzEyNV07CisJX191MzIgYmxvY2tbMTI1XTsKKwlfX3UzMiBoYXNoWzEyNl07CisJX191MzIgYmxvY2tbMTI2XTsKKwlfX3UzMiBoYXNoWzEyN107CisJX191MzIgYmxvY2tbMTI3XTsKK307CisKK3N0cnVjdCBleHQyX2R4X2ludF9ub2RlIHsKKwlfX3UzMiBmYWtlX2lub2RlOworCV9fdTE2IGZha2VfcmVjX2xlbjsKKwlfX3U4IGZha2VfbmFtZV9sZW47CisJX191OCBmYWtlX2ZpbGVfdHlwZTsKKwlfX3UxNiBsaW1pdDsKKwlfX3UxNiBjb3VudDsKKwlfX3UzMiBibG9ja1swXTsKKwlfX3UzMiBoYXNoWzFdOworCV9fdTMyIGJsb2NrWzFdOworCV9fdTMyIGhhc2hbMl07CisJX191MzIgYmxvY2tbMl07CisJX191MzIgaGFzaFszXTsKKwlfX3UzMiBibG9ja1szXTsKKwlfX3UzMiBoYXNoWzRdOworCV9fdTMyIGJsb2NrWzRdOworCV9fdTMyIGhhc2hbNV07CisJX191MzIgYmxvY2tbNV07CisJX191MzIgaGFzaFs2XTsKKwlfX3UzMiBibG9ja1s2XTsKKwlfX3UzMiBoYXNoWzddOworCV9fdTMyIGJsb2NrWzddOworCV9fdTMyIGhhc2hbOF07CisJX191MzIgYmxvY2tbOF07CisJX191MzIgaGFzaFs5XTsKKwlfX3UzMiBibG9ja1s5XTsKKwlfX3UzMiBoYXNoWzEwXTsKKwlfX3UzMiBibG9ja1sxMF07CisJX191MzIgaGFzaFsxMV07CisJX191MzIgYmxvY2tbMTFdOworCV9fdTMyIGhhc2hbMTJdOworCV9fdTMyIGJsb2NrWzEyXTsKKwlfX3UzMiBoYXNoWzEzXTsKKwlfX3UzMiBibG9ja1sxM107CisJX191MzIgaGFzaFsxNF07CisJX191MzIgYmxvY2tbMTRdOworCV9fdTMyIGhhc2hbMTVdOworCV9fdTMyIGJsb2NrWzE1XTsKKwlfX3UzMiBoYXNoWzE2XTsKKwlfX3UzMiBibG9ja1sxNl07CisJX191MzIgaGFzaFsxN107CisJX191MzIgYmxvY2tbMTddOworCV9fdTMyIGhhc2hbMThdOworCV9fdTMyIGJsb2NrWzE4XTsKKwlfX3UzMiBoYXNoWzE5XTsKKwlfX3UzMiBibG9ja1sxOV07CisJX191MzIgaGFzaFsyMF07CisJX191MzIgYmxvY2tbMjBdOworCV9fdTMyIGhhc2hbMjFdOworCV9fdTMyIGJsb2NrWzIxXTsKKwlfX3UzMiBoYXNoWzIyXTsKKwlfX3UzMiBibG9ja1syMl07CisJX191MzIgaGFzaFsyM107CisJX191MzIgYmxvY2tbMjNdOworCV9fdTMyIGhhc2hbMjRdOworCV9fdTMyIGJsb2NrWzI0XTsKKwlfX3UzMiBoYXNoWzI1XTsKKwlfX3UzMiBibG9ja1syNV07CisJX191MzIgaGFzaFsyNl07CisJX191MzIgYmxvY2tbMjZdOworCV9fdTMyIGhhc2hbMjddOworCV9fdTMyIGJsb2NrWzI3XTsKKwlfX3UzMiBoYXNoWzI4XTsKKwlfX3UzMiBibG9ja1syOF07CisJX191MzIgaGFzaFsyOV07CisJX191MzIgYmxvY2tbMjldOworCV9fdTMyIGhhc2hbMzBdOworCV9fdTMyIGJsb2NrWzMwXTsKKwlfX3UzMiBoYXNoWzMxXTsKKwlfX3UzMiBibG9ja1szMV07CisJX191MzIgaGFzaFszMl07CisJX191MzIgYmxvY2tbMzJdOworCV9fdTMyIGhhc2hbMzNdOworCV9fdTMyIGJsb2NrWzMzXTsKKwlfX3UzMiBoYXNoWzM0XTsKKwlfX3UzMiBibG9ja1szNF07CisJX191MzIgaGFzaFszNV07CisJX191MzIgYmxvY2tbMzVdOworCV9fdTMyIGhhc2hbMzZdOworCV9fdTMyIGJsb2NrWzM2XTsKKwlfX3UzMiBoYXNoWzM3XTsKKwlfX3UzMiBibG9ja1szN107CisJX191MzIgaGFzaFszOF07CisJX191MzIgYmxvY2tbMzhdOworCV9fdTMyIGhhc2hbMzldOworCV9fdTMyIGJsb2NrWzM5XTsKKwlfX3UzMiBoYXNoWzQwXTsKKwlfX3UzMiBibG9ja1s0MF07CisJX191MzIgaGFzaFs0MV07CisJX191MzIgYmxvY2tbNDFdOworCV9fdTMyIGhhc2hbNDJdOworCV9fdTMyIGJsb2NrWzQyXTsKKwlfX3UzMiBoYXNoWzQzXTsKKwlfX3UzMiBibG9ja1s0M107CisJX191MzIgaGFzaFs0NF07CisJX191MzIgYmxvY2tbNDRdOworCV9fdTMyIGhhc2hbNDVdOworCV9fdTMyIGJsb2NrWzQ1XTsKKwlfX3UzMiBoYXNoWzQ2XTsKKwlfX3UzMiBibG9ja1s0Nl07CisJX191MzIgaGFzaFs0N107CisJX191MzIgYmxvY2tbNDddOworCV9fdTMyIGhhc2hbNDhdOworCV9fdTMyIGJsb2NrWzQ4XTsKKwlfX3UzMiBoYXNoWzQ5XTsKKwlfX3UzMiBibG9ja1s0OV07CisJX191MzIgaGFzaFs1MF07CisJX191MzIgYmxvY2tbNTBdOworCV9fdTMyIGhhc2hbNTFdOworCV9fdTMyIGJsb2NrWzUxXTsKKwlfX3UzMiBoYXNoWzUyXTsKKwlfX3UzMiBibG9ja1s1Ml07CisJX191MzIgaGFzaFs1M107CisJX191MzIgYmxvY2tbNTNdOworCV9fdTMyIGhhc2hbNTRdOworCV9fdTMyIGJsb2NrWzU0XTsKKwlfX3UzMiBoYXNoWzU1XTsKKwlfX3UzMiBibG9ja1s1NV07CisJX191MzIgaGFzaFs1Nl07CisJX191MzIgYmxvY2tbNTZdOworCV9fdTMyIGhhc2hbNTddOworCV9fdTMyIGJsb2NrWzU3XTsKKwlfX3UzMiBoYXNoWzU4XTsKKwlfX3UzMiBibG9ja1s1OF07CisJX191MzIgaGFzaFs1OV07CisJX191MzIgYmxvY2tbNTldOworCV9fdTMyIGhhc2hbNjBdOworCV9fdTMyIGJsb2NrWzYwXTsKKwlfX3UzMiBoYXNoWzYxXTsKKwlfX3UzMiBibG9ja1s2MV07CisJX191MzIgaGFzaFs2Ml07CisJX191MzIgYmxvY2tbNjJdOworCV9fdTMyIGhhc2hbNjNdOworCV9fdTMyIGJsb2NrWzYzXTsKKwlfX3UzMiBoYXNoWzY0XTsKKwlfX3UzMiBibG9ja1s2NF07CisJX191MzIgaGFzaFs2NV07CisJX191MzIgYmxvY2tbNjVdOworCV9fdTMyIGhhc2hbNjZdOworCV9fdTMyIGJsb2NrWzY2XTsKKwlfX3UzMiBoYXNoWzY3XTsKKwlfX3UzMiBibG9ja1s2N107CisJX191MzIgaGFzaFs2OF07CisJX191MzIgYmxvY2tbNjhdOworCV9fdTMyIGhhc2hbNjldOworCV9fdTMyIGJsb2NrWzY5XTsKKwlfX3UzMiBoYXNoWzcwXTsKKwlfX3UzMiBibG9ja1s3MF07CisJX191MzIgaGFzaFs3MV07CisJX191MzIgYmxvY2tbNzFdOworCV9fdTMyIGhhc2hbNzJdOworCV9fdTMyIGJsb2NrWzcyXTsKKwlfX3UzMiBoYXNoWzczXTsKKwlfX3UzMiBibG9ja1s3M107CisJX191MzIgaGFzaFs3NF07CisJX191MzIgYmxvY2tbNzRdOworCV9fdTMyIGhhc2hbNzVdOworCV9fdTMyIGJsb2NrWzc1XTsKKwlfX3UzMiBoYXNoWzc2XTsKKwlfX3UzMiBibG9ja1s3Nl07CisJX191MzIgaGFzaFs3N107CisJX191MzIgYmxvY2tbNzddOworCV9fdTMyIGhhc2hbNzhdOworCV9fdTMyIGJsb2NrWzc4XTsKKwlfX3UzMiBoYXNoWzc5XTsKKwlfX3UzMiBibG9ja1s3OV07CisJX191MzIgaGFzaFs4MF07CisJX191MzIgYmxvY2tbODBdOworCV9fdTMyIGhhc2hbODFdOworCV9fdTMyIGJsb2NrWzgxXTsKKwlfX3UzMiBoYXNoWzgyXTsKKwlfX3UzMiBibG9ja1s4Ml07CisJX191MzIgaGFzaFs4M107CisJX191MzIgYmxvY2tbODNdOworCV9fdTMyIGhhc2hbODRdOworCV9fdTMyIGJsb2NrWzg0XTsKKwlfX3UzMiBoYXNoWzg1XTsKKwlfX3UzMiBibG9ja1s4NV07CisJX191MzIgaGFzaFs4Nl07CisJX191MzIgYmxvY2tbODZdOworCV9fdTMyIGhhc2hbODddOworCV9fdTMyIGJsb2NrWzg3XTsKKwlfX3UzMiBoYXNoWzg4XTsKKwlfX3UzMiBibG9ja1s4OF07CisJX191MzIgaGFzaFs4OV07CisJX191MzIgYmxvY2tbODldOworCV9fdTMyIGhhc2hbODBdOworCV9fdTMyIGJsb2NrWzgwXTsKKwlfX3UzMiBoYXNoWzgxXTsKKwlfX3UzMiBibG9ja1s4MV07CisJX191MzIgaGFzaFs4Ml07CisJX191MzIgYmxvY2tbODJdOworCV9fdTMyIGhhc2hbODNdOworCV9fdTMyIGJsb2NrWzgzXTsKKwlfX3UzMiBoYXNoWzg0XTsKKwlfX3UzMiBibG9ja1s4NF07CisJX191MzIgaGFzaFs4NV07CisJX191MzIgYmxvY2tbODVdOworCV9fdTMyIGhhc2hbODZdOworCV9fdTMyIGJsb2NrWzg2XTsKKwlfX3UzMiBoYXNoWzg3XTsKKwlfX3UzMiBibG9ja1s4N107CisJX191MzIgaGFzaFs4OF07CisJX191MzIgYmxvY2tbODhdOworCV9fdTMyIGhhc2hbODldOworCV9fdTMyIGJsb2NrWzg5XTsKKwlfX3UzMiBoYXNoWzkwXTsKKwlfX3UzMiBibG9ja1s5MF07CisJX191MzIgaGFzaFs5MV07CisJX191MzIgYmxvY2tbOTFdOworCV9fdTMyIGhhc2hbOTJdOworCV9fdTMyIGJsb2NrWzkyXTsKKwlfX3UzMiBoYXNoWzkzXTsKKwlfX3UzMiBibG9ja1s5M107CisJX191MzIgaGFzaFs5NF07CisJX191MzIgYmxvY2tbOTRdOworCV9fdTMyIGhhc2hbOTVdOworCV9fdTMyIGJsb2NrWzk1XTsKKwlfX3UzMiBoYXNoWzk2XTsKKwlfX3UzMiBibG9ja1s5Nl07CisJX191MzIgaGFzaFs5N107CisJX191MzIgYmxvY2tbOTddOworCV9fdTMyIGhhc2hbOThdOworCV9fdTMyIGJsb2NrWzk4XTsKKwlfX3UzMiBoYXNoWzk5XTsKKwlfX3UzMiBibG9ja1s5OV07CisJX191MzIgaGFzaFsxMDBdOworCV9fdTMyIGJsb2NrWzEwMF07CisJX191MzIgaGFzaFsxMDFdOworCV9fdTMyIGJsb2NrWzEwMV07CisJX191MzIgaGFzaFsxMDJdOworCV9fdTMyIGJsb2NrWzEwMl07CisJX191MzIgaGFzaFsxMDNdOworCV9fdTMyIGJsb2NrWzEwM107CisJX191MzIgaGFzaFsxMDRdOworCV9fdTMyIGJsb2NrWzEwNF07CisJX191MzIgaGFzaFsxMDVdOworCV9fdTMyIGJsb2NrWzEwNV07CisJX191MzIgaGFzaFsxMDZdOworCV9fdTMyIGJsb2NrWzEwNl07CisJX191MzIgaGFzaFsxMDddOworCV9fdTMyIGJsb2NrWzEwN107CisJX191MzIgaGFzaFsxMDhdOworCV9fdTMyIGJsb2NrWzEwOF07CisJX191MzIgaGFzaFsxMDldOworCV9fdTMyIGJsb2NrWzEwOV07CisJX191MzIgaGFzaFsxMTBdOworCV9fdTMyIGJsb2NrWzExMF07CisJX191MzIgaGFzaFsxMTFdOworCV9fdTMyIGJsb2NrWzExMV07CisJX191MzIgaGFzaFsxMTJdOworCV9fdTMyIGJsb2NrWzExMl07CisJX191MzIgaGFzaFsxMTNdOworCV9fdTMyIGJsb2NrWzExM107CisJX191MzIgaGFzaFsxMTRdOworCV9fdTMyIGJsb2NrWzExNF07CisJX191MzIgaGFzaFsxMTVdOworCV9fdTMyIGJsb2NrWzExNV07CisJX191MzIgaGFzaFsxMTZdOworCV9fdTMyIGJsb2NrWzExNl07CisJX191MzIgaGFzaFsxMTddOworCV9fdTMyIGJsb2NrWzExN107CisJX191MzIgaGFzaFsxMThdOworCV9fdTMyIGJsb2NrWzExOF07CisJX191MzIgaGFzaFsxMTldOworCV9fdTMyIGJsb2NrWzExOV07CisJX191MzIgaGFzaFsxMjBdOworCV9fdTMyIGJsb2NrWzEyMF07CisJX191MzIgaGFzaFsxMjFdOworCV9fdTMyIGJsb2NrWzEyMV07CisJX191MzIgaGFzaFsxMjJdOworCV9fdTMyIGJsb2NrWzEyMl07CisJX191MzIgaGFzaFsxMjNdOworCV9fdTMyIGJsb2NrWzEyM107CisJX191MzIgaGFzaFsxMjRdOworCV9fdTMyIGJsb2NrWzEyNF07CisJX191MzIgaGFzaFsxMjVdOworCV9fdTMyIGJsb2NrWzEyNV07CisJX191MzIgaGFzaFsxMjZdOworCV9fdTMyIGJsb2NrWzEyNl07CisJX191MzIgaGFzaFsxMjddOworCV9fdTMyIGJsb2NrWzEyN107Cit9OworCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvZXh0Ml9jb20uYyBiL2UyZnNwcm9ncy9leHQyZWQvZXh0Ml9jb20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDAwNGYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9leHQyX2NvbS5jCkBAIC0wLDAgKzEsOTggQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9leHQyX2NvbS5jCisKK0EgcGFydCBvZiB0aGUgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gMiBkaXNrIGVkaXRvci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0V4dGVuZGVkLTIgZmlsZXN5c3RlbSBHZW5lcmFsIGNvbW1hbmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgY29tbWFuZHMgaGVyZSB3aWxsIGJlIHJlZ2lzdGVyZWQgd2hlbiB3ZSBhcmUgZWRpdGluZyBhbiBleHQyIGZpbGVzeXN0ZW0KKworRmlyc3Qgd3JpdHRlbiBvbjogSnVseSAyOCAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZXh0MmVkLmgiCisKK3ZvaWQgdHlwZV9leHQyX19fc3VwZXIgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworV2UgYXJlIG1vdmluZyB0byB0aGUgc3VwZXJibG9jayAtIEp1c3QgdXNlIHNldG9mZnNldCBhbmQgc2V0dHlwZS4gVGhlIG9mZnNldCB3YXMgZ2F0aGVyZWQgaW4gdGhlCitpbml0aWFsaXphdGlvbiBwaGFzZSAoYnV0IGlzIGNvbnN0YW50IC0gMTAyNCkuCisKKyovCisKK3sKKwljaGFyIGJ1ZmZlciBbODBdOworCisJc3VwZXJfaW5mby5jb3B5X251bT0wOworCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIsZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9ja19vZmZzZXQpO2Rpc3BhdGNoIChidWZmZXIpOworCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBleHQyX3N1cGVyX2Jsb2NrIik7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX19fY2QgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworQSBnbG9iYWwgY2QgY29tbWFuZCAtIFRoZSBwYXRoIHNob3VsZCBzdGFydCB3aXRoIC8uCisKK1dlIGltcGxlbWVudCBpdCB0aHJvdWdoIGRpc3BhdGNoaW5nIHRvIG91ciBwcmltaXRpdmUgZnVuY3Rpb25zLgorCisqLworCit7CisJY2hhciB0ZW1wIFs4MF0sYnVmZmVyIFs4MF0sKnB0cjsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBObyBhcmd1bWVudCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwlpZiAoYnVmZmVyIFswXSAhPSAnLycpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gVXNlIGEgZnVsbCBwYXRobmFtZSAoYmVnaW4gd2l0aCAnLycpXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisKKwkvKiBOb3RlIHRoZSB2YXJpb3VzIGRpc3BhdGNoZXMgYmVsb3cgLSBUaGV5IHNob3VsZCBiZSBpbnR1aXRpdmUgaWYgeW91IGtub3cgdGhlIGV4dDIgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUgKi8KKworCWRpc3BhdGNoICgic3VwZXIiKTtkaXNwYXRjaCAoImdyb3VwIik7ZGlzcGF0Y2ggKCJpbm9kZSIpO2Rpc3BhdGNoICgibmV4dCIpO2Rpc3BhdGNoICgiZGlyIik7CisJaWYgKGJ1ZmZlciBbMV0gIT0gMCkgeworCQlzcHJpbnRmICh0ZW1wLCJjZCAlcyIsYnVmZmVyKzEpO2Rpc3BhdGNoICh0ZW1wKTsKKwl9Cit9CisKK3ZvaWQgdHlwZV9leHQyX19fZ3JvdXAgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworLyoKKworV2UgZ28gdG8gdGhlIGdyb3VwIGRlc2NyaXB0b3JzLgorRmlyc3QsIHdlIGdvIHRvIHRoZSBmaXJzdCBncm91cCBkZXNjcmlwdG9yIGluIHRoZSBtYWluIGNvcHkuCitUaGVuLCB3ZSB1c2UgdGhlIGdyb3VwJ3MgZW50cnkgY29tbWFuZCB0byBwYXNzIHRvIGFub3RoZXIgZ3JvdXAuCisKKyovCisKK3sKKwlsb25nIGdyb3VwX251bT0wOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0ciE9MCkgeworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCWdyb3VwX251bT1hdG9sIChidWZmZXIpOworCX0KKworCWdyb3VwX2luZm8uY29weV9udW09MDtncm91cF9pbmZvLmdyb3VwX251bT0wOworCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIsZmlsZV9zeXN0ZW1faW5mby5maXJzdF9ncm91cF9kZXNjX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJc3ByaW50ZiAoYnVmZmVyLCJzZXR0eXBlIGV4dDJfZ3JvdXBfZGVzYyIpO2Rpc3BhdGNoIChidWZmZXIpOworCXNwcmludGYgKGJ1ZmZlciwiZW50cnkgJWxkIixncm91cF9udW0pO2Rpc3BhdGNoIChidWZmZXIpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9leHQyZWQuOC5pbiBiL2UyZnNwcm9ncy9leHQyZWQvZXh0MmVkLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkNmIzMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvZXh0MmVkLjguaW4KQEAgLTAsMCArMSw3MiBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5USCBFWFQyRUQgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZXh0MmVkIFwtIGV4dDIgZmlsZSBzeXN0ZW0gZWRpdG9yCisuU0ggU1lOT1BTSVMKKy5CIGV4dDJlZAorLlNIIERFU0NSSVBUSU9OCisuQiBleHQyZWQKK2luIGFuIAorLkIgZWRpdG9yCitmb3IgdGhlCisuQiBzZWNvbmQgZXh0ZW5kZWQgZmlsZXN5c3RlbS4KK0l0cyBhaW0gaXMgdG8gc2hvdyB5b3UgdGhlIHZhcmlvdXMgaW50ZXJuYWwgZmlsZXN5c3RlbSBzdHJ1Y3R1cmVzIGluIGFuCitpbnR1aXRpdmUgZm9ybSBzbyB0aGF0IHlvdSB3b3VsZCBiZSBhYmxlIHRvIGVhc2lseSB1bmRlcnN0YW5kIGFuZCBtb2RpZnkKK3RoZW0uCisuU0ggRE9DVU1FTlRBVElPTgorVGhlIGRvY3VtZW50YXRpb24gaXMgbm90IGF2YWlsYWJsZSBpbiBtYW4gcGFnZSBmb3JtYXQuIEluc3RlYWQsIEkgaGF2ZQord3JpdHRlbiB0aHJlZSBhcnRpY2xlcyB3aGljaCBhcmUgcmVsYXRlZCB0byBleHQyZWQ6CisKK1RoZSBmaXJzdCBhcnRpY2xlIGlzCisuQiBUaGUgdXNlcidzIGd1aWRlLgorVGhpcyBhcnRpY2xlIGV4cGxhaW5zIGhvdyB0byB1c2UgZXh0MmVkLgorCitUaGUgc2Vjb25kIGFydGljbGUgaXMKKy5CIFRoZSBFeHQyZnMgb3ZlcnZpZXcuCitUaGlzIGFydGljbGUgZ2l2ZXMgYW4gb3ZlcnZpZXcgb2YgaW50ZXJuYWwgc3RydWN0dXJlIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0uCitZb3UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCBsYXlvdXQgaW4gb3JkZXIgdG8gZWZmZWN0aXZlbHkgZWRpdAoreW91ciBmaWxlc3lzdGVtLgorCitUaGUgdGhpcmQgYXJ0aWNsZSBpcworLkIgRVhUMkVEIC0gRGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbi4KK1RoaXMgYXJ0aWNsZSBleHBsYWlucyBob3cgSSBjb25zdHJ1Y3RlZCBleHQyZWQuIFlvdSBtYXkgd2FudCB0byBoYXZlIGEgbG9vaworaW4gaXQgaWYgeW91IHBsYW4gdG8gdmlldyBvciBtb2RpZnkgdGhlIHNvdXJjZSBjb2RlLgorCisuU0ggV0FSTklORworCisuQgorRG8gbm90IHVzZSBleHQyZWQgb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0uCisKKy5TSCBGSUxFUworLlRQCisuSSAvdXNyL2Jpbi9leHQyZWQKK1RoZSBwcm9ncmFtIGl0c2VsZi4KKy5UUAorLkkgQHJvb3Rfc3lzY29uZmRpckAvZXh0MmVkLmNvbmYKK2V4dDJlZCdzIGNvbmZpZ3VyYXRpb24gZmlsZS4KKy5UUAorLkkgQGRhdGFkaXJAL2V4dDIuZGVzY3JpcHRvcnMKK0RlZmluaXRpb24gb2YgdGhlIHZhcmlvdXMgb2JqZWN0cyBmb3IgdGhlIGV4dDIgZmlsZXN5c3RlbS4KKy5UUAorLkkgL3Zhci9sb2cvZXh0MmVkLmxvZworTG9nIGZpbGUgb2YgYWN0dWFsIGNoYW5nZXMgbWFkZSB0byB0aGUgZmlsZXN5c3RlbS4KKy5UUAorLkkgL3Vzci9tYW4vbWFuOC9leHQyZWQuOAorVGhlIG1hbnVhbCBwYWdlLgorLlRQCisuSSBAZGF0YWRpckAvZG9jL2V4dDJlZC91c2VyLWd1aWRlLTAuMS5wcworVGhlIHVzZXIncyBndWlkZS4KKy5UUAorLkkgQGRhdGFkaXJAL2RvYy9leHQyZWQvRXh0MmZzLW92ZXJ2aWV3LTAuMS5wcworVGVjaG5pY2FsIG92ZXJ2aWV3IG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0uCisuVFAKKy5JIEBkYXRhZGlyQC9kb2MvZXh0MmVkL2V4dDJlZC1kZXNpZ24tMC4xLnBzCitFWFQyRUQgZGVzaWduIG5vdGVzLgorCisuU0ggQlVHUworRmlsZXN5c3RlbXMgYmlnZ2VyIHRoYW4gMiBHQiBhcmVuJ3QgeWV0IHN1cHBvcnRlZC4KKy5TSCBBVVRIT1IKK0dhZGkgT3htYW4gPHRndWRAdG9jaG5hcGMyLnRlY2huaW9uLmFjLmlsPgorLlNIIFNFRSBBTFNPCisuQlIgZTJmc2NrICg4KSwKKy5CUiBkZWJ1Z2ZzICg4KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9leHQyZWQuY29uZi5pbiBiL2UyZnNwcm9ncy9leHQyZWQvZXh0MmVkLmNvbmYuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyYTkyNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvZXh0MmVkLmNvbmYuaW4KQEAgLTAsMCArMSw3OSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIGV4dDJlZC5jb25mICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBleHRlbmRlZCAyIGZpbGUgc3lzdGVtIGRpc2sgZWRpdG9yLiAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBFeHQyRGVzY3JpcHRvcnMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBleHQyIGZpbGVzeXN0ZW0gc3RydWN0dXJlCisjIGRlZmluaXRpb25zLgorCisKK0V4dDJEZXNjcmlwdG9ycwkJQGRhdGFkaXJAL2V4dDIuZGVzY3JpcHRvcnMgCisKKworIyBVc2luZyBBbHRlcm5hdGVEZXNjcmlwdG9ycyB5b3UgY2FuIGRlY2xhcmUgYWRkaXRpb25hbCBzdHJ1Y3R1cmVzLiBUaG9zZQorIyBzdHJ1Y3R1cmVzIGNhbiBjb250YWluIG9ubHkgdmFyaWFibGVzLiBMaW5raW5nIGZ1bmN0aW9ucyB0byB0aGUgb2JqZWN0cyBpcworIyBwb3NzaWJsZSBvbmx5IHRocm91Z2ggc291cmNlIGNvZGUgYWRkaXRpb25zLgorCisKK0FsdGVybmF0ZURlc2NyaXB0b3JzCQorCisKKyMgTG9nRmlsZSBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIGxvZyBmaWxlLiBBY3R1YWwgY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbQorIyBhcmUgbG9nZ2VkIHRoZXJlLiBTZWUgYWxzbyBMb2dDaGFuZ2VzLgorCisKK0xvZ0ZpbGUJCQkvdmFyL2xvZy9leHQyZWQubG9nCisKKworIyBUaGUgZm9sbG93aW5nIHNlbGVjdHMgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiBjaGFuZ2VzIGFyZSBtYWRlIHRvIHRoZQorIyBmaWxlc3lzdGVtLiBXaGVuIG9uLCBlYWNoIGNoYW5nZSB3aWxsIGJlIGxvZ2dlZCAtIEJvdGggdGhlIHByZXZpb3VzIGRhdGEKKyMgYW5kIHRoZSBuZXcgd3JpdHRlbiBkYXRhLgorCisKK0xvZ0NoYW5nZXMJCW9uCisKKworIyBBbGxvd0NoYW5nZXMgb2ZmIHdpbGwgbm90IGFsbG93IGV4dDJlZCB0byBkbyBhbnkgY2hhbmdlcyB0byB0aGUKKyMgZmlsZXN5c3RlbSAtIFRoZSAiZW5hYmxld3JpdGUiIGNvbW1hbmQgd2lsbCBub3Qgd29yay4gV2hlbiBvbiwgZW5hYmxld3JpdGUKKyMgd2lsbCBzdGlsbCBoYXZlIHRvIGJlIGlzc3VlZCB0byBhbGxvdyB3cml0ZSBhY2Nlc3MuCisKKworQWxsb3dDaGFuZ2VzCQlvbgorCisKKyMgV2l0aCB0aGlzIG9wdGlvbiB5b3UgY2FuIGNob29zZSB3aGV0aGVyIGV4dDJlZCB3aWxsIGFsbG93IHJlYWQtb25seSBtb2RlIG9uCisjIGEgbW91bnRlZCBmaWxlc3lzdGVtLiBSZWFkLVdyaXRlIG1vZGUgaXMgbmV2ZXIgYWxsb3dlZCBvbiBhIG1vdW50ZWQKKyMgZmlsZXN5c3RlbS4KKworCitBbGxvd01vdW50ZWRSZWFkCW9uCisKKworIyBXaGVuIEZvcmNlRXh0MiBpcyBzZXQgdG8gb24sIHRoZSBmaWxlc3lzdGVtIGlzIGFzc3VtZWQgdG8gYmUgZXh0MgorIyBmaWxlc3lzdGVtLCBkZXNwaXRlIHRoZSBwb3NzaWJseSBjb3JydXB0IHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIHJlYWRpbmcuCisjIEFsbCB0aGUgZXh0MiBzcGVjaWZpYyBjb21tYW5kcyB3aWxsIGJlIGF2aWFibGUgZGVzcGl0ZSB0aGUgcG9zc2libGUKKyMgYXV0b2RldGVjdGlvbiBmYWlsdHVyZS4KKworRm9yY2VFeHQyCQlvZmYKKworCisjIE5vcm1hbGx5LCB0aGUgdmFyaW91cyBmaWxlc3lzdGVtIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgYmxvY2sgc2l6ZSBhbmQgdGhlCisjIHRvdGFsIG51bWJlciBvZiBibG9ja3MgYXJlIGdhdGhlcmVkIGZyb20gdGhlIGV4dDIgZmlsZXN5c3RlbSBpdHNlbGYuCisjIEhvd2V2ZXIsIG9uIGEgY29ycnVwdCBmaWxlc3lzdGVtLCBleHQyZWQgaXMgdW5hYmxlIHRvIGdldCB0aGUgcmlnaHQKKyMgcGFyYW1ldGVycy4gSW4gdGhpcyBjYXNlLCB0aGV5IHdpbGwgYmUgdGFrZW4gZnJvbSBoZXJlLiBTZWUgYWxzbworIyBGb3JjZURlZmF1bHQuCisKKworRGVmYXVsdEJsb2NrU2l6ZQkxMDI0CitEZWZhdWx0VG90YWxCbG9ja3MJMjA5NzE1MQkJIyB+MiBHQiB0b3RhbCBzaXplCitEZWZhdWx0QmxvY2tzSW5Hcm91cAk4MTkyCisKKyMgV2l0aCBGb3JjZURlZmF1bHQgb24sIHlvdSBjYW4gZm9yY2UgdGhlIHVzZSBvZiB0aGUgZGVmYXVsdCBwYXJhbWV0ZXJzCisjIGFib3ZlLiBUaGlzIGlzIG5vdCByZWNvbW1lbmRlZCwgYXMgZXh0MmVkIHdpbGwgZmFsbGJhY2sgYnkgZGVmYXVsdCB0byB0aG9zZQorIyBwYXJhbWV0ZXJzIGlmIGl0IGNhbid0IGZpZ3VyZSB1cCB0aGUgcGFyYW1ldGVycyBmcm9tIHRoZSBmaWxlc3lzdGVtIGl0c2VsZi4KKworCitGb3JjZURlZmF1bHQgCQlvZmYKKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZXh0MmVkL2V4dDJlZC5oIGIvZTJmc3Byb2dzL2V4dDJlZC9leHQyZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWI0M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9leHQyZWQuaApAQCAtMCwwICsxLDQzNSBAQAorCisvKgorCisvdXNyL3NyYy9leHQyZWQvZXh0MmVkLmgKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSW5jbHVkZSBmaWxlIGZvciB0aGUgZXh0MiBkaXNrIGVkaXRvci4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBjb250YWlucyBkZWNsYXJhdGlvbnMgd2hpY2ggYXJlIG5lZWRlZCBieSBhbGwgdGhlIGZpbGVzIGluIGV4dDJlZC4KKworRmlyc3Qgd3JpdHRlbiBvbjogQXByaWwgOSAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpZm5kZWYgRVhUMkVEX0VESVRPUl9ICisjZGVmaW5lIEVYVDJFRF9FRElUT1JfSAorCisvKgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVzZXIgZGVmaW5hYmxlIG9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyovCisKKyNkZWZpbmUgREVCVUcJCQkJCQkvKiBBY3RpdmF0ZSBzZWxmLXNhbml0eSBjaGVja3MgKi8KKworI2luY2x1ZGUgPGV4dDJmcy9leHQyX2ZzLmg+CQkJCS8qIE1haW4ga2VybmVsIGV4dDIgaW5jbHVkZSBmaWxlICovCisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2luY2x1ZGUgPG5jdXJzZXMuaD4KKworI2RlZmluZSBNQVhfRklFTERTIAkJNDAwCisKKyNkZWZpbmUgTUFYX0NPTU1BTkRfTElORSAJODEKKyNkZWZpbmUgTUFYX0NPTU1BTkRTX05VTQkzMAkJCS8qIE1heGltdW0gbnVtYmVyIG9mIGNvbW1hbmRzIG9mIG9uZSB0eXBlICovCisjZGVmaW5lIFJFTUVNQkVSX0NPVU5UCQkzMAkJCS8qIE9iamVjdCBtZW1vcnkgc2l6ZSAqLworCisvKgorCVRoZSB1c2VyIHNjcmVlbiBjb25zaXN0cyBvZiBmb3VyIHBhcnRzOgorCisJCTEuCVRpdGxlIHdpbmRvdyAodGl0bGVfd2luKS4KKwkJMi4JU2hvdyAoc3RhdHVzKSB3aW5kb3cgKHNob3dfd2luKS4KKwkJMy4JTWFpbiBzaG93IHBhZCAoc2hvd19wYWQpLgorCQk0LglDb21tYW5kIHdpbmRvdyAoY29tbWFuZF93aW4pLgorCisqLworCisvKgorCisgICBUaGUgc2hvdyBwYWQgaXMgbWFwcGVkIHRvIHRoZSBzcGFjZSBsZWZ0IGJldHdlZW4gdGhlIG90aGVyIHRocmVlIHdpbmRvd3MuCisKKyAgIElmIHlvdSB3b25kZXJlZCB3aHkgZXh0MmVkIGdyYWJzIHNvIG1lbW9yeSwgdGhlIGFuc3dlciBpcyBwcm9iYWJseSBiZWxvdyAtIEkgd2FudGVkIHRvIHRyZWF0CisgICB0aGUgdmlydHVhbCBkaXNwbGF5IGFzIGluZmluaXRlLiBEZWNyZWFzZSB0aGUgZm9sbG93aW5nIGZvciBtb3JlIHJlYWxpc3RpYyBtZW1vcnkgY29uc3VtcHRpb24uCisKKyovCisKKyNkZWZpbmUgU0hPV19QQURfTElORVMgMzAwMAorI2RlZmluZSBTSE9XX1BBRF9DT0xTIChDT0xTID4gMTQwID8gQ09MUyA6IDE0MCkKKworI2RlZmluZSBDT01NQU5EX1dJTl9MSU5FUyA2CQkJCS8qIENoYW5nZSB0aGlzIHRvIHlvdXIgcHJlZmVyZW5jZXMgKi8KKyNkZWZpbmUgVElUTEVfV0lOX0xJTkVTIDMKKyNkZWZpbmUgU0hPV19XSU5fTElORVMgMworCisjZGVmaW5lIEhFWCAxCisjZGVmaW5lIFRFWFQgMgorCisjaWZuZGVmIEVYVDJfUFJFXzAyQl9NQUdJQworCSNkZWZpbmUgRVhUMl9QUkVfMDJCX01BR0lDCTB4RUY1MQorI2VuZGlmCisKKwordHlwZWRlZiB2b2lkICgqUEYpIChjaGFyICopOwkJCQkvKiBVc2VkIHRvIHBvaW50IHRvIHRoZSBkaXNwYXRjaGVkIGZ1bmN0aW9ucyAqLworCitzdHJ1Y3Qgc3RydWN0X2NvbW1hbmRzIHsJCQkJLyogSG9sZHMgY29tbWFuZHMgb2YgYW4gb2JqZWN0ICovCisJaW50IGxhc3RfY29tbWFuZDsKKwljaGFyICpuYW1lcyBbTUFYX0NPTU1BTkRTX05VTV07CisJY2hhciAqZGVzY3JpcHRpb25zIFtNQVhfQ09NTUFORFNfTlVNXTsKKwlQRiBjYWxsYmFjayBbTUFYX0NPTU1BTkRTX05VTV07Cit9OworCitzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgewkJCQkvKiBEZXNjcmliZXMgYW4gb2JqZWN0ICovCisJdW5zaWduZWQgbG9uZyBsZW5ndGg7CisJdW5zaWduZWQgY2hhciBuYW1lIFs2MF07CisJdW5zaWduZWQgc2hvcnQgZmllbGRzX251bTsKKwl1bnNpZ25lZCBjaGFyIGZpZWxkX25hbWVzIFtNQVhfRklFTERTXVs4MF07CisJdW5zaWduZWQgY2hhciBmaWVsZF90eXBlcyBbTUFYX0ZJRUxEU107CisJdW5zaWduZWQgc2hvcnQgZmllbGRfbGVuZ3RocyBbTUFYX0ZJRUxEU107CisJdW5zaWduZWQgc2hvcnQgZmllbGRfcG9zaXRpb25zIFtNQVhfRklFTERTXTsKKwlzdHJ1Y3Qgc3RydWN0X2NvbW1hbmRzIHR5cGVfY29tbWFuZHM7CisJc3RydWN0IHN0cnVjdF9kZXNjcmlwdG9yICpwcmV2LCpuZXh0OworfTsKKworI2RlZmluZSBGSUVMRF9UWVBFX0lOVAkgIDEKKyNkZWZpbmUgRklFTERfVFlQRV9VSU5UICAgMgorI2RlZmluZSBGSUVMRF9UWVBFX0NIQVIgICAzCisKK3N0cnVjdCBzdHJ1Y3RfdHlwZV9kYXRhIHsJCQkJLyogVGhlIG9iamVjdCdzIGRhdGEgaXMgdXN1YWxseSBoZXJlICovCisJbG9uZyBvZmZzZXRfaW5fYmxvY2s7CisKKwl1bmlvbiB1bmlvbl90eXBlX2RhdGEgewkJCQkvKiBGb3JtYXQgaXQgaW4gdmFyaW91cyB3YXlzICovCisJCWNoYXIgYnVmZmVyIFtFWFQyX01BWF9CTE9DS19TSVpFXTsKKwkJc3RydWN0IGV4dDJfYWNsX2hlYWRlciB0X2V4dDJfYWNsX2hlYWRlcjsKKwkJc3RydWN0IGV4dDJfYWNsX2VudHJ5IHRfZXh0Ml9hY2xfZW50cnk7CisJCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgdF9leHQyX2dyb3VwX2Rlc2M7CisJCXN0cnVjdCBleHQyX2lub2RlIHRfZXh0Ml9pbm9kZTsKKwkJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgdF9leHQyX3N1cGVyX2Jsb2NrOworCQlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgdF9leHQyX2Rpcl9lbnRyeTsKKwl9IHU7Cit9OworCitzdHJ1Y3Qgc3RydWN0X2ZpbGVfc3lzdGVtX2luZm8gewkJCS8qIEltcG9ydGFudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmlsZXN5c3RlbSAqLworCXVuc2lnbmVkIGxvbmcgbG9uZyBmaWxlX3N5c3RlbV9zaXplOworCXVuc2lnbmVkIGxvbmcgc3VwZXJfYmxvY2tfb2Zmc2V0OworCXVuc2lnbmVkIGxvbmcgZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyBncm91cHNfY291bnQ7CisJdW5zaWduZWQgbG9uZyBpbm9kZXNfcGVyX2Jsb2NrOworCXVuc2lnbmVkIGxvbmcgYmxvY2tzX3Blcl9ncm91cDsJCQkvKiBUaGUgbmFtZSBpcyBtaXNsZWFkaW5nOyBiZXdhcmUgKi8KKwl1bnNpZ25lZCBsb25nIG5vX2Jsb2Nrc19pbl9ncm91cDsKKwl1bnNpZ25lZCBzaG9ydCBibG9ja19zaXplOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHN1cGVyX2Jsb2NrOworfTsKKworc3RydWN0IHN0cnVjdF9maWxlX2luZm8gewkJCQkvKiBVc2VkIHRvIGhhbmRsZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgKi8KKworCXN0cnVjdCBleHQyX2lub2RlICppbm9kZV9wdHI7CisKKwlsb25nIGlub2RlX29mZnNldDsKKwlsb25nIGdsb2JhbF9ibG9ja19udW0sZ2xvYmFsX2Jsb2NrX29mZnNldDsKKwlsb25nIGJsb2NrX251bSxibG9ja3NfY291bnQ7CisJbG9uZyBmaWxlX29mZnNldCxmaWxlX2xlbmd0aDsKKwlsb25nIGxldmVsOworCXVuc2lnbmVkIGNoYXIgYnVmZmVyIFtFWFQyX01BWF9CTE9DS19TSVpFXTsKKwlsb25nIG9mZnNldF9pbl9ibG9jazsKKworCWludCBkaXNwbGF5OworCS8qIFRoZSBmb2xsb3dpbmcgaXMgdXNlZCBpZiB0aGUgZmlsZSBpcyBhIGRpcmVjdG9yeSAqLworCisJbG9uZyBkaXJfZW50cnlfbnVtLGRpcl9lbnRyaWVzX2NvdW50OworCWxvbmcgZGlyX2VudHJ5X29mZnNldDsKK307CisKK3N0cnVjdCBzdHJ1Y3Rfc3VwZXJfaW5mbyB7CQkJCS8qIFVzZWQgdG8gaGFuZGxlIHRoZSBzdXBlcmJsb2NrICovCisJdW5zaWduZWQgbG9uZyBjb3B5X251bTsKK307CisKK3N0cnVjdCBzdHJ1Y3RfZ3JvdXBfaW5mbyB7CQkJCS8qIFVzZWQgdG8gaGFuZGxlIHRoZSBncm91cCBkZXNjcmlwdG9ycyAqLworCXVuc2lnbmVkIGxvbmcgY29weV9udW07CisJdW5zaWduZWQgbG9uZyBncm91cF9udW07Cit9OworCitzdHJ1Y3Qgc3RydWN0X2Jsb2NrX2JpdG1hcF9pbmZvIHsJCQkvKiBVc2VkIGluIGJsb2NrYml0bWFwX2NvbS5jICovCisJdW5zaWduZWQgbG9uZyBlbnRyeV9udW07CisJdW5zaWduZWQgbG9uZyBncm91cF9udW07Cit9OworCitzdHJ1Y3Qgc3RydWN0X2lub2RlX2JpdG1hcF9pbmZvIHsJCQkvKiBVc2VkIGluIGlub2RlYml0bWFwX2NvbS5jICovCisJdW5zaWduZWQgbG9uZyBlbnRyeV9udW07CisJdW5zaWduZWQgbG9uZyBncm91cF9udW07Cit9OworCitzdHJ1Y3Qgc3RydWN0X3JlbWVtYmVyX2xpZm8gewkJCQkvKiBJbXBsZW1lbnRzIHRoZSBvYmplY3RzIGNpcmN1bGFyIG1lbW9yeSAqLworCWxvbmcgZW50cmllc19jb3VudDsKKworCWxvbmcgb2Zmc2V0IFtSRU1FTUJFUl9DT1VOVF07CisJc3RydWN0IHN0cnVjdF9kZXNjcmlwdG9yICp0eXBlIFtSRU1FTUJFUl9DT1VOVF07CisJY2hhciBuYW1lIFtSRU1FTUJFUl9DT1VOVF1bODBdOworfTsKKworc3RydWN0IHN0cnVjdF9wYWRfaW5mbyB7CQkJCS8qIFVzZWQgdG8gem9vbSBpbnRvIHRoZSBwYWQgd2luZG93ICovCisJaW50IGRpc3BsYXlfbGluZXMsZGlzcGxheV9jb2xzOworCWludCBsaW5lLGNvbDsKKwlpbnQgbWF4X2xpbmUsbWF4X2NvbDsKKwlpbnQgZGlzYWJsZV9vdXRwdXQ7Cit9OworCisvKiBHbG9iYWwgdmFyaWFibGVzIChkZWZpbmVkIG1vc3RseSBpbiBtYWluLmMpICovCisKKy8qIENvbmZpZ3VyYWJsZSB2YXJpYWJsZXMgKFRocm91Z2ggY29uZmlndXJhdGlvbiBmaWxlKSAqLworCitleHRlcm4gY2hhciBBbHRlcm5hdGVEZXNjcmlwdG9ycyBbMjAwXTsKK2V4dGVybiBjaGFyIEV4dDJEZXNjcmlwdG9ycyBbMjAwXTsKK2V4dGVybiBjaGFyIExvZ0ZpbGUgWzIwMF07CitleHRlcm4gaW50IExvZ0NoYW5nZXM7CitleHRlcm4gaW50IEFsbG93Q2hhbmdlczsKK2V4dGVybiBpbnQgQWxsb3dNb3VudGVkUmVhZDsKK2V4dGVybiBpbnQgRm9yY2VFeHQyOworZXh0ZXJuIGludCBEZWZhdWx0QmxvY2tTaXplOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRGVmYXVsdFRvdGFsQmxvY2tzOworZXh0ZXJuIHVuc2lnbmVkIGxvbmcgRGVmYXVsdEJsb2Nrc0luR3JvdXA7CitleHRlcm4gaW50IEZvcmNlRGVmYXVsdDsKKworZXh0ZXJuIGNoYXIgZGV2aWNlX25hbWUgWzgwXTsKK2V4dGVybiBjaGFyIGxhc3RfY29tbWFuZF9saW5lIFs4MF07CitleHRlcm4gRklMRSAqZGV2aWNlX2hhbmRsZTsKK2V4dGVybiBsb25nIGRldmljZV9vZmZzZXQ7CitleHRlcm4gaW50ICBtb3VudGVkOworCitleHRlcm4gc2hvcnQgYmxvY2tfc2l6ZTsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X2NvbW1hbmRzIGdlbmVyYWxfY29tbWFuZHM7CitleHRlcm4gc3RydWN0IHN0cnVjdF9jb21tYW5kcyBleHQyX2NvbW1hbmRzOworZXh0ZXJuIHN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqZmlyc3RfdHlwZTsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmxhc3RfdHlwZTsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmN1cnJlbnRfdHlwZTsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X3R5cGVfZGF0YSB0eXBlX2RhdGE7CitleHRlcm4gc3RydWN0IHN0cnVjdF9maWxlX3N5c3RlbV9pbmZvIGZpbGVfc3lzdGVtX2luZm87CitleHRlcm4gc3RydWN0IHN0cnVjdF9maWxlX2luZm8gZmlsZV9pbmZvLGZpcnN0X2ZpbGVfaW5mbzsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X2dyb3VwX2luZm8gZ3JvdXBfaW5mbzsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X3N1cGVyX2luZm8gc3VwZXJfaW5mbzsKK2V4dGVybiBzdHJ1Y3Qgc3RydWN0X2Jsb2NrX2JpdG1hcF9pbmZvIGJsb2NrX2JpdG1hcF9pbmZvOworZXh0ZXJuIHN0cnVjdCBzdHJ1Y3RfaW5vZGVfYml0bWFwX2luZm8gaW5vZGVfYml0bWFwX2luZm87CitleHRlcm4gc3RydWN0IHN0cnVjdF9yZW1lbWJlcl9saWZvIHJlbWVtYmVyX2xpZm87CitleHRlcm4gc3RydWN0IHN0cnVjdF9wYWRfaW5mbyBzaG93X3BhZF9pbmZvOworZXh0ZXJuIGludCB3cml0ZV9hY2Nlc3M7CisKK2V4dGVybiBpbnQgcmVkcmF3X3JlcXVlc3Q7CitleHRlcm4gY2hhciBsaW5lc19zIFs4MF07CitleHRlcm4gY2hhciBjb2xzX3MgWzgwXTsKKworCisvKiBpbml0LmMgKi8KKworZXh0ZXJuIGludCBpbml0ICh2b2lkKTsKK2V4dGVybiB2b2lkIHByZXBhcmVfdG9fY2xvc2UgKHZvaWQpOworZXh0ZXJuIGludCBzZXRfc3RydWN0X2Rlc2NyaXB0b3JzIChjaGFyICpmaWxlX25hbWUpOworZXh0ZXJuIHZvaWQgZnJlZV9zdHJ1Y3RfZGVzY3JpcHRvcnMgKHZvaWQpOworZXh0ZXJuIHN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqYWRkX25ld19kZXNjcmlwdG9yIChjaGFyICpuYW1lKTsKK2V4dGVybiB2b2lkIGFkZF9uZXdfdmFyaWFibGUgKHN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqZGVzY3JpcHRvcixjaGFyICp2X3R5cGUsY2hhciAqdl9uYW1lKTsKK2V4dGVybiB2b2lkIGZpbGxfdHlwZV9jb21tYW5kcyAoc3RydWN0IHN0cnVjdF9kZXNjcmlwdG9yICpwdHIpOworZXh0ZXJuIHZvaWQgYWRkX3VzZXJfY29tbWFuZCAoc3RydWN0IHN0cnVjdF9jb21tYW5kcyAqcHRyLGNoYXIgKm5hbWUsY2hhciAqZGVzY3JpcHRpb24sUEYgY2FsbGJhY2spOworZXh0ZXJuIHZvaWQgZnJlZV91c2VyX2NvbW1hbmRzIChzdHJ1Y3Qgc3RydWN0X2NvbW1hbmRzICpwdHIpOworZXh0ZXJuIGludCBzZXRfZmlsZV9zeXN0ZW1faW5mbyAodm9pZCk7CitleHRlcm4gaW50IHByb2Nlc3NfY29uZmlndXJhdGlvbl9maWxlICh2b2lkKTsKK2V4dGVybiB2b2lkIGFkZF9nZW5lcmFsX2NvbW1hbmRzICh2b2lkKTsKK2V4dGVybiB2b2lkIGFkZF9leHQyX2dlbmVyYWxfY29tbWFuZHMgKHZvaWQpOworZXh0ZXJuIHZvaWQgY2hlY2tfbW91bnRlZCAoY2hhciAqbmFtZSk7CisKK2ludCBnZXRfbmV4dF9vcHRpb24gKEZJTEUgKmZwLGNoYXIgKm9wdGlvbixjaGFyICp2YWx1ZSk7Cit2b2lkIGluaXRfcmVhZGxpbmUgKHZvaWQpOwordm9pZCBpbml0X3NpZ25hbHMgKHZvaWQpOwordm9pZCBzaWduYWxfU0lHV0lOQ0hfaGFuZGxlciAoaW50IHNpZ19udW0pOwordm9pZCBzaWduYWxfU0lHVEVSTV9oYW5kbGVyIChpbnQgc2lnX251bSk7Cit2b2lkIHNpZ25hbF9TSUdTRUdWX2hhbmRsZXIgKGludCBzaWdfbnVtKTsKKworLyogZ2VuZXJhbF9jb20uYyAqLworCisvKiBHZW5lcmFsIGNvbW1hbmRzIHdoaWNoIGFyZSBhdmlhYmxlIGFsd2F5cyAqLworCitleHRlcm4gdm9pZCBoZWxwIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgc2V0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgc2V0X2RldmljZSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHNldF9vZmZzZXQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCBzZXRfdHlwZSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHNob3cgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCBwZ3VwIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgcGdkbiAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHJlZHJhdyAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHJlbWVtYmVyIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgcmVjYWxsIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgY2QgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCBlbmFibGVfd3JpdGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCBkaXNhYmxlX3dyaXRlIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgd3JpdGVfZGF0YSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIG5leHQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCBwcmV2IChjaGFyICpjb21tYW5kX2xpbmUpOworCit2b2lkIGhleF9zZXQgKGNoYXIgKmNvbW1hbmRfbGluZSk7Cit2b2lkIGRldGFpbGVkX2hlbHAgKGNoYXIgKnRleHQpOworCisKKy8qIGV4dDJfY29tLmMgKi8KKworLyogRXh0ZW5kZWQyIGZpbGVzeXN0ZW0gZ2VuZXJlYWwgY29tbWFuZHMgLSBBdmlhYmxlIG9ubHkgd2hlbiBlZGl0aW5nIGFuCisgICBleHQyIGZpbGVzeXN0ZW0gKi8KKworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX19fc3VwZXIgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfX19ncm91cCAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9fX2NkIChjaGFyICpjb21tYW5kX2xpbmUpOworCisKKy8qIG1haW4uYyAqLworCitleHRlcm4gaW50IHZlcnNpb25fbWFqb3IsdmVyc2lvbl9taW5vcjsKK2V4dGVybiBjaGFyIHJldmlzaW9uX2RhdGUgWzgwXTsKK2V4dGVybiBjaGFyIGVtYWlsX2FkZHJlc3MgWzgwXTsKKworI2lmZGVmIERFQlVHCitleHRlcm4gdm9pZCBpbnRlcm5hbF9lcnJvciAoY2hhciAqZGVzY3JpcHRpb24sY2hhciAqc291cmNlX25hbWUsY2hhciAqZnVuY3Rpb25fbmFtZSk7CisjZW5kaWYKKwordm9pZCBwYXJzZXIgKHZvaWQpOworZXh0ZXJuIGludCBkaXNwYXRjaCAoY2hhciAqY29tbWFuZF9saW5lKTsKK2NoYXIgKnBhcnNlX3dvcmQgKGNoYXIgKnNvdXJjZSxjaGFyICpkZXN0KTsKK2NoYXIgKmNvbXBsZXRlX2NvbW1hbmQgKGNoYXIgKnRleHQsaW50IHN0YXRlKTsKK2NoYXIgKmR1cHN0ciAoY2hhciAqc3JjKTsKKworCisKKy8qIGRpc2suYyAqLworCitleHRlcm4gaW50IGxvYWRfdHlwZV9kYXRhICh2b2lkKTsKK2V4dGVybiBpbnQgd3JpdGVfdHlwZV9kYXRhICh2b2lkKTsKK2V4dGVybiBpbnQgbG93X3JlYWQgKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcix1bnNpZ25lZCBsb25nIGxlbmd0aCx1bnNpZ25lZCBsb25nIG9mZnNldCk7CitleHRlcm4gaW50IGxvd193cml0ZSAodW5zaWduZWQgY2hhciAqYnVmZmVyLHVuc2lnbmVkIGxvbmcgbGVuZ3RoLHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTsKK2V4dGVybiBpbnQgbG9nX2NoYW5nZXMgKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlcix1bnNpZ25lZCBsb25nIGxlbmd0aCx1bnNpZ25lZCBsb25nIG9mZnNldCk7CisKKy8qIGZpbGVfY29tLmMgKi8KKworZXh0ZXJuIGludCBpbml0X2ZpbGVfaW5mbyAodm9pZCk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9maWxlX19faW5vZGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19kaXNwbGF5IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9maWxlX19fcHJldiAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZmlsZV9fX25leHQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19vZmZzZXQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19wcmV2YmxvY2sgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19uZXh0YmxvY2sgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2ZpbGVfX19ibG9jayAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZmlsZV9fX3JlbWVtYmVyIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9maWxlX19fc2V0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9maWxlX19fd3JpdGVkYXRhIChjaGFyICpjb21tYW5kX2xpbmUpOworCitleHRlcm4gbG9uZyBmaWxlX2Jsb2NrX3RvX2dsb2JhbF9ibG9jayAobG9uZyBmaWxlX2Jsb2NrLHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICpmaWxlX2luZm9fcHRyKTsKK2V4dGVybiBsb25nIHJldHVybl9pbmRpcmVjdCAobG9uZyB0YWJsZV9ibG9jayxsb25nIGJsb2NrX251bSk7CitleHRlcm4gbG9uZyByZXR1cm5fZGluZGlyZWN0IChsb25nIHRhYmxlX2Jsb2NrLGxvbmcgYmxvY2tfbnVtKTsKK2V4dGVybiBsb25nIHJldHVybl90aW5kaXJlY3QgKGxvbmcgdGFibGVfYmxvY2ssbG9uZyBibG9ja19udW0pOworCit2b2lkIGZpbGVfc2hvd19oZXggKHZvaWQpOwordm9pZCBmaWxlX3Nob3dfdGV4dCAodm9pZCk7Cit2b2lkIHNob3dfc3RhdHVzICh2b2lkKTsKKworLyogaW5vZGVfY29tLmMgKi8KKworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2lub2RlX19fbmV4dCAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9pbm9kZV9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2lub2RlX19fZ3JvdXAgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9pbm9kZV9fX2ZpbGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfX19kaXIgKGNoYXIgKmNvbW1hbmRfbGluZSk7CisKK2V4dGVybiBsb25nIGlub2RlX29mZnNldF90b19ncm91cF9udW0gKGxvbmcgaW5vZGVfb2Zmc2V0KTsKK2V4dGVybiBsb25nIGludCBpbm9kZV9vZmZzZXRfdG9faW5vZGVfbnVtIChsb25nIGlub2RlX29mZnNldCk7CitleHRlcm4gbG9uZyBpbnQgaW5vZGVfbnVtX3RvX2lub2RlX29mZnNldCAobG9uZyBpbm9kZV9udW0pOworCisvKiBkaXJfY29tLmMgKi8KKworZXh0ZXJuIGludCBpbml0X2Rpcl9pbmZvIChzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyAqaW5mbyk7CitleHRlcm4gdm9pZCB0eXBlX2Rpcl9fX3Nob3cgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2Rpcl9fX2lub2RlIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19wZ2RuIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19wZ3VwIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19wcmV2IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19mb2xsb3dpbm9kZSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZGlyX19fcmVtZW1iZXIgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2Rpcl9fX2NkIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZGlyX19fd3JpdGVkYXRhIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9kaXJfX19zZXQgKGNoYXIgKmNvbW1hbmRfbGluZSk7CisKKyNkZWZpbmUgSEVYIDEKKyNkZWZpbmUgVEVYVCAyCisKKyNkZWZpbmUgQUJPUlQJCTAKKyNkZWZpbmUgQ09OVElOVUUJMQorI2RlZmluZSBGT1VORAkJMgorCitzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyBzZWFyY2hfZGlyX2VudHJpZXMgKGludCAoKmFjdGlvbikgKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKSxpbnQgKnN0YXR1cyk7CitpbnQgYWN0aW9uX2NvdW50IChzdHJ1Y3Qgc3RydWN0X2ZpbGVfaW5mbyAqaW5mbyk7Cit2b2lkIHNob3dfZGlyX3N0YXR1cyAodm9pZCk7Citsb25nIGNvdW50X2Rpcl9lbnRyaWVzICh2b2lkKTsKK2ludCBhY3Rpb25fbmFtZSAoc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmluZm8pOworaW50IGFjdGlvbl9lbnRyeV9udW0gKHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICppbmZvKTsKK2ludCBhY3Rpb25fc2hvdyAoc3RydWN0IHN0cnVjdF9maWxlX2luZm8gKmluZm8pOworCisvKiBzdXBlcl9jb20uYyAqLworCitleHRlcm4gdm9pZCB0eXBlX2V4dDJfc3VwZXJfYmxvY2tfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX3N1cGVyX2Jsb2NrX19fZ29jb3B5IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX3N1cGVyX2Jsb2NrX19fc2V0YWN0aXZlY29weSAoY2hhciAqY29tbWFuZF9saW5lKTsKKworLyogZ3JvdXBfY29tLmMgKi8KKworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19wcmV2IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fc2hvdyAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19faW5vZGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX2dvY29weSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fYmxvY2tiaXRtYXAgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX2lub2RlYml0bWFwIChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19zZXRhY3RpdmVjb3B5IChjaGFyICpjb21tYW5kX2xpbmUpOworCisvKiBibG9ja2JpdG1hcF9jb20uYyAqLworCitleHRlcm4gdm9pZCB0eXBlX2V4dDJfYmxvY2tfYml0bWFwX19fc2hvdyAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2Jsb2NrX2JpdG1hcF9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfYmxvY2tfYml0bWFwX19fYWxsb2NhdGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfYmxvY2tfYml0bWFwX19fZGVhbGxvY2F0ZSAoY2hhciAqY29tbWFuZF9saW5lKTsKK3ZvaWQgYWxsb2NhdGVfYmxvY2sgKGxvbmcgZW50cnlfbnVtKTsKK3ZvaWQgZGVhbGxvY2F0ZV9ibG9jayAobG9uZyBlbnRyeV9udW0pOworCisvKiBpbm9kZWJpdG1hcF9ib20uYyAqLworCitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfYml0bWFwX19fc2hvdyAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKTsKK2V4dGVybiB2b2lkIHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpOworZXh0ZXJuIHZvaWQgdHlwZV9leHQyX2lub2RlX2JpdG1hcF9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfYml0bWFwX19fYWxsb2NhdGUgKGNoYXIgKmNvbW1hbmRfbGluZSk7CitleHRlcm4gdm9pZCB0eXBlX2V4dDJfaW5vZGVfYml0bWFwX19fZGVhbGxvY2F0ZSAoY2hhciAqY29tbWFuZF9saW5lKTsKK3ZvaWQgYWxsb2NhdGVfaW5vZGUgKGxvbmcgZW50cnlfbnVtKTsKK3ZvaWQgZGVhbGxvY2F0ZV9pbm9kZSAobG9uZyBlbnRyeV9udW0pOworCisvKiB3aW4uYyAqLworCitleHRlcm4gV0lORE9XICp0aXRsZV93aW4sKnNob3dfd2luLCpjb21tYW5kX3dpbiwqc2hvd19wYWQ7CisKK2V4dGVybiB2b2lkIGluaXRfd2luZG93cyAodm9pZCk7CitleHRlcm4gdm9pZCByZWZyZXNoX3RpdGxlX3dpbiAodm9pZCk7CitleHRlcm4gdm9pZCByZWZyZXNoX3Nob3dfd2luICh2b2lkKTsKK2V4dGVybiB2b2lkIHJlZnJlc2hfc2hvd19wYWQgKHZvaWQpOworZXh0ZXJuIHZvaWQgcmVmcmVzaF9jb21tYW5kX3dpbiAodm9pZCk7CitleHRlcm4gdm9pZCBzaG93X2luZm8gKHZvaWQpOworZXh0ZXJuIHZvaWQgcmVkcmF3X2FsbCAodm9pZCk7CitleHRlcm4gdm9pZCBjbG9zZV93aW5kb3dzICh2b2lkKTsKKworI2VuZGlmIC8qIEVYVDJFRF9FRElUT1JfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9maWxlX2NvbS5jIGIvZTJmc3Byb2dzL2V4dDJlZC9maWxlX2NvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2Njc5NTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL2ZpbGVfY29tLmMKQEAgLTAsMCArMSw1NjUgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9maWxlX2NvbS5jCisKK0EgcGFydCBvZiB0aGUgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gMiBkaXNrIGVkaXRvci4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ29tbWFuZHMgd2hpY2ggaGFuZGxlIGEgZmlsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGaXJzdCB3cml0dGVuIG9uOiBBcHJpbCAxOCAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZXh0MmVkLmgiCisKK2ludCBpbml0X2ZpbGVfaW5mbyAodm9pZCkKKworeworCXN0cnVjdCBleHQyX2lub2RlICpwdHI7CisKKwlwdHI9JnR5cGVfZGF0YS51LnRfZXh0Ml9pbm9kZTsKKworCWZpbGVfaW5mby5pbm9kZV9wdHI9cHRyOworCWZpbGVfaW5mby5pbm9kZV9vZmZzZXQ9ZGV2aWNlX29mZnNldDsKKworCWZpbGVfaW5mby5nbG9iYWxfYmxvY2tfbnVtPXB0ci0+aV9ibG9jayBbMF07CisJZmlsZV9pbmZvLmdsb2JhbF9ibG9ja19vZmZzZXQ9cHRyLT5pX2Jsb2NrIFswXSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJZmlsZV9pbmZvLmJsb2NrX251bT0wOworCWZpbGVfaW5mby5ibG9ja3NfY291bnQ9KHB0ci0+aV9zaXplK2ZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZS0xKS9maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJZmlsZV9pbmZvLmZpbGVfb2Zmc2V0PTA7CisJZmlsZV9pbmZvLmZpbGVfbGVuZ3RoPXB0ci0+aV9zaXplOworCWZpbGVfaW5mby5sZXZlbD0wOworCWZpbGVfaW5mby5vZmZzZXRfaW5fYmxvY2s9MDsKKworCWZpbGVfaW5mby5kaXNwbGF5PUhFWDsKKworCWxvd19yZWFkIChmaWxlX2luZm8uYnVmZmVyLGZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSxmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX29mZnNldCk7CisKKwlyZXR1cm4gKDEpOworfQorCisKK3ZvaWQgdHlwZV9maWxlX19faW5vZGUgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWRpc3BhdGNoICgic2V0dHlwZSBleHQyX2lub2RlIik7Cit9CisKK3ZvaWQgdHlwZV9maWxlX19fc2hvdyAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJaWYgKGZpbGVfaW5mby5kaXNwbGF5PT1IRVgpCisJCWZpbGVfc2hvd19oZXggKCk7CisJaWYgKGZpbGVfaW5mby5kaXNwbGF5PT1URVhUKQorCQlmaWxlX3Nob3dfdGV4dCAoKTsKK30KKwordm9pZCB0eXBlX2ZpbGVfX19uZXh0YmxvY2sgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgYmxvY2tfb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlibG9ja19vZmZzZXQqPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJaWYgKGZpbGVfaW5mby5ibG9ja19udW0rYmxvY2tfb2Zmc2V0ID49IGZpbGVfaW5mby5ibG9ja3NfY291bnQpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQmxvY2sgb2Zmc2V0IG91dCBvZiByYW5nZVxuIik7d3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKKwkJcmV0dXJuOworCX0KKworCWZpbGVfaW5mby5ibG9ja19udW0rPWJsb2NrX29mZnNldDsKKwlmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX251bT1maWxlX2Jsb2NrX3RvX2dsb2JhbF9ibG9jayAoZmlsZV9pbmZvLmJsb2NrX251bSwmZmlsZV9pbmZvKTsKKwlmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX29mZnNldD1maWxlX2luZm8uZ2xvYmFsX2Jsb2NrX251bSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJZmlsZV9pbmZvLmZpbGVfb2Zmc2V0PWZpbGVfaW5mby5ibG9ja19udW0qZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJbG93X3JlYWQgKGZpbGVfaW5mby5idWZmZXIsZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLGZpbGVfaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0KTsKKworCXN0cmNweSAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9maWxlX19fbmV4dCAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJaW50IG9mZnNldD0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJb2Zmc2V0Kj1hdG9sIChidWZmZXIpOworCX0KKworCWlmIChmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrK29mZnNldCA8IGZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkgeworCQlmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrKz1vZmZzZXQ7CisJCXNwcmludGYgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworCX0KKworCWVsc2UgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBPZmZzZXQgb3V0IG9mIGJsb2NrXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KK30KKwordm9pZCB0eXBlX2ZpbGVfX19vZmZzZXQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJb2Zmc2V0PWF0b2wgKGJ1ZmZlcik7CisJfQorCWVsc2UgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBBcmd1bWVudCBub3Qgc3BlY2lmaWVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJaWYgKG9mZnNldCA8IGZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkgeworCQlmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrPW9mZnNldDsKKwkJc3ByaW50ZiAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJZWxzZSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE9mZnNldCBvdXQgb2YgYmxvY2tcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorfQorCit2b2lkIHR5cGVfZmlsZV9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWludCBvZmZzZXQ9MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisKKwlpZiAoKnB0ciE9MCkgeworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCW9mZnNldCo9YXRvbCAoYnVmZmVyKTsKKwl9CisKKwlpZiAoZmlsZV9pbmZvLm9mZnNldF9pbl9ibG9jay1vZmZzZXQgPj0gMCkgeworCQlmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrLT1vZmZzZXQ7CisJCXNwcmludGYgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworCX0KKworCWVsc2UgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBPZmZzZXQgb3V0IG9mIGJsb2NrXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KK30KKwordm9pZCB0eXBlX2ZpbGVfX19wcmV2YmxvY2sgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgYmxvY2tfb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlibG9ja19vZmZzZXQqPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJaWYgKGZpbGVfaW5mby5ibG9ja19udW0tYmxvY2tfb2Zmc2V0IDwgMCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBCbG9jayBvZmZzZXQgb3V0IG9mIHJhbmdlXG4iKTt3cmVmcmVzaCAoY29tbWFuZF93aW4pOworCQlyZXR1cm47CisJfQorCisJZmlsZV9pbmZvLmJsb2NrX251bS09YmxvY2tfb2Zmc2V0OworCWZpbGVfaW5mby5nbG9iYWxfYmxvY2tfbnVtPWZpbGVfYmxvY2tfdG9fZ2xvYmFsX2Jsb2NrIChmaWxlX2luZm8uYmxvY2tfbnVtLCZmaWxlX2luZm8pOworCWZpbGVfaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0PWZpbGVfaW5mby5nbG9iYWxfYmxvY2tfbnVtKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKwlmaWxlX2luZm8uZmlsZV9vZmZzZXQ9ZmlsZV9pbmZvLmJsb2NrX251bSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisKKwlsb3dfcmVhZCAoZmlsZV9pbmZvLmJ1ZmZlcixmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUsZmlsZV9pbmZvLmdsb2JhbF9ibG9ja19vZmZzZXQpOworCisJc3RyY3B5IChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2ZpbGVfX19ibG9jayAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJbG9uZyBibG9ja19vZmZzZXQ9MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBJbnZhbGlkIGFyZ3VtZW50c1xuIik7d3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKKwkJcmV0dXJuOworCX0KKworCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwlibG9ja19vZmZzZXQ9YXRvbCAoYnVmZmVyKTsKKworCWlmIChibG9ja19vZmZzZXQgPCAwIHx8IGJsb2NrX29mZnNldCA+PSBmaWxlX2luZm8uYmxvY2tzX2NvdW50KSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEJsb2NrIG9mZnNldCBvdXQgb2YgcmFuZ2VcbiIpO3dyZWZyZXNoIChjb21tYW5kX3dpbik7CisJCXJldHVybjsKKwl9CisKKwlmaWxlX2luZm8uYmxvY2tfbnVtPWJsb2NrX29mZnNldDsKKwlmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX251bT1maWxlX2Jsb2NrX3RvX2dsb2JhbF9ibG9jayAoZmlsZV9pbmZvLmJsb2NrX251bSwmZmlsZV9pbmZvKTsKKwlmaWxlX2luZm8uZ2xvYmFsX2Jsb2NrX29mZnNldD1maWxlX2luZm8uZ2xvYmFsX2Jsb2NrX251bSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJZmlsZV9pbmZvLmZpbGVfb2Zmc2V0PWZpbGVfaW5mby5ibG9ja19udW0qZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJbG93X3JlYWQgKGZpbGVfaW5mby5idWZmZXIsZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLGZpbGVfaW5mby5nbG9iYWxfYmxvY2tfb2Zmc2V0KTsKKworCXN0cmNweSAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9maWxlX19fZGlzcGxheSAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyPT0wKQorCQlzdHJjcHkgKGJ1ZmZlciwiaGV4Iik7CisJZWxzZQorCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwlpZiAoc3RyY2FzZWNtcCAoYnVmZmVyLCJoZXgiKT09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRGlzcGxheSBzZXQgdG8gaGV4XG4iKTt3cmVmcmVzaCAoY29tbWFuZF93aW4pOworCQlmaWxlX2luZm8uZGlzcGxheT1IRVg7CisJCXNwcmludGYgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworCX0KKworCWVsc2UgaWYgKHN0cmNhc2VjbXAgKGJ1ZmZlciwidGV4dCIpPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJEaXNwbGF5IHNldCB0byB0ZXh0XG4iKTt3cmVmcmVzaCAoY29tbWFuZF93aW4pOworCQlmaWxlX2luZm8uZGlzcGxheT1URVhUOworCQlzcHJpbnRmIChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKKwl9CisKKwllbHNlIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gSW52YWxpZCBhcmd1bWVudHNcbiIpO3dyZWZyZXNoIChjb21tYW5kX3dpbik7CisJfQorfQorCit2b2lkIGZpbGVfc2hvd19oZXggKHZvaWQpCisKK3sKKwlsb25nIG9mZnNldD0wLGwsaTsKKwl1bnNpZ25lZCBjaGFyICpjaF9wdHI7CisKKwkvKiBkZXZpY2Vfb2Zmc2V0IGFuZCB0eXBlX2RhdGEgcG9pbnRzIHRvIHRoZSBpbm9kZSAqLworCisJc2hvd19wYWRfaW5mby5saW5lPTA7CisKKwl3bW92ZSAoc2hvd19wYWQsMCwwKTsKKwljaF9wdHI9ZmlsZV9pbmZvLmJ1ZmZlcjsKKwlmb3IgKGw9MDtsPGZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZS8xNjtsKyspIHsKKwkJaWYgKGZpbGVfaW5mby5maWxlX29mZnNldCtvZmZzZXQ+ZmlsZV9pbmZvLmZpbGVfbGVuZ3RoLTEpIGJyZWFrOworCQl3cHJpbnR3IChzaG93X3BhZCwiJTA4bGQgOiAgIixvZmZzZXQpOworCQlmb3IgKGk9MDtpPDE2O2krKykgeworCisJCQlpZiAoZmlsZV9pbmZvLmZpbGVfb2Zmc2V0K29mZnNldCtpPmZpbGVfaW5mby5maWxlX2xlbmd0aC0xKSB7CisJCQkJd3ByaW50dyAoc2hvd19wYWQsIiAiKTsKKwkJCX0KKworCQkJZWxzZSB7CisJCQkJaWYgKGZpbGVfaW5mby5vZmZzZXRfaW5fYmxvY2s9PW9mZnNldCtpKQorCQkJCQl3YXR0cnNldCAoc2hvd19wYWQsQV9SRVZFUlNFKTsKKworCQkJCWlmIChjaF9wdHIgW2ldPj0nICcgJiYgY2hfcHRyIFtpXTw9J3onKQorCQkJCQl3cHJpbnR3IChzaG93X3BhZCwiJWMiLGNoX3B0ciBbaV0pOworCQkJCWVsc2UKKwkJCQkJd3ByaW50dyAoc2hvd19wYWQsIi4iKTsKKworCQkJCWlmIChmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrPT1vZmZzZXQraSkKKwkJCQkJd2F0dHJzZXQgKHNob3dfcGFkLEFfTk9STUFMKTsKKwkJCX0KKwkJfQorCisJCXdwcmludHcgKHNob3dfcGFkLCIgICAiKTsKKwkJZm9yIChpPTA7aTwxNjtpKyspIHsKKwkJCWlmIChmaWxlX2luZm8uZmlsZV9vZmZzZXQrb2Zmc2V0K2k+ZmlsZV9pbmZvLmZpbGVfbGVuZ3RoLTEpIGJyZWFrOworCQkJaWYgKGZpbGVfaW5mby5vZmZzZXRfaW5fYmxvY2s9PW9mZnNldCtpKQorCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX1JFVkVSU0UpOworCisJCQl3cHJpbnR3IChzaG93X3BhZCwiJTAyeCIsY2hfcHRyIFtpXSk7CisKKwkJCWlmIChmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrPT1vZmZzZXQraSkgeworCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisJCQkJc2hvd19wYWRfaW5mby5saW5lPWwtbCAlIHNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lczsKKwkJCX0KKworCQkJd3ByaW50dyAoc2hvd19wYWQsIiAiKTsKKworCQl9CisKKwkJd3ByaW50dyAoc2hvd19wYWQsIlxuIik7CisJCW9mZnNldCs9aTsKKwkJY2hfcHRyKz1pOworCX0KKworCXNob3dfcGFkX2luZm8ubWF4X2xpbmU9bC0xOworCisJcmVmcmVzaF9zaG93X3BhZCAoKTsKKworCXNob3dfc3RhdHVzICgpOworfQorCit2b2lkIGZpbGVfc2hvd190ZXh0ICh2b2lkKQorCit7CisJbG9uZyBvZmZzZXQ9MCxsYXN0X29mZnNldCxsPTAsY29scz0wOworCXVuc2lnbmVkIGNoYXIgKmNoX3B0cjsKKworCS8qIGRldmljZV9vZmZzZXQgYW5kIHR5cGVfZGF0YSBwb2ludHMgdG8gdGhlIGlub2RlICovCisKKwlzaG93X3BhZF9pbmZvLmxpbmU9MDsKKwl3bW92ZSAoc2hvd19wYWQsMCwwKTsKKwljaF9wdHI9ZmlsZV9pbmZvLmJ1ZmZlcjsKKworCWxhc3Rfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZS0xOworCisJaWYgKGZpbGVfaW5mby5maWxlX29mZnNldCtsYXN0X29mZnNldCA+IGZpbGVfaW5mby5maWxlX2xlbmd0aC0xKQorCQlsYXN0X29mZnNldD1maWxlX2luZm8uZmlsZV9sZW5ndGgtMS1maWxlX2luZm8uZmlsZV9vZmZzZXQ7CisKKwl3aGlsZSAoIChvZmZzZXQgPD0gbGFzdF9vZmZzZXQpICYmIGw8U0hPV19QQURfTElORVMpIHsKKworCQlpZiAoY29scz09U0hPV19QQURfQ09MUy0xKSB7CisJCQl3cHJpbnR3IChzaG93X3BhZCwiXG4iKTsKKwkJCWwrKztjb2xzPTA7CisJCX0KKworCisJCWlmIChmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrPT1vZmZzZXQpCisJCQl3YXR0cnNldCAoc2hvd19wYWQsQV9SRVZFUlNFKTsKKworCQlpZiAoKmNoX3B0ciA+PSAnICcgJiYgKmNoX3B0ciA8PSAneicpCisJCQl3cHJpbnR3IChzaG93X3BhZCwiJWMiLCpjaF9wdHIpOworCisKKwkJZWxzZSB7CisJCQlpZiAoKmNoX3B0ciA9PSAweGEpIHsKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiXG4iKTsKKwkJCQlsKys7Y29scz0wOworCQkJfQorCisJCQllbHNlIGlmICgqY2hfcHRyID09IDB4OSkKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiICAgICIpOworCisJCQllbHNlCisJCQkJd3ByaW50dyAoc2hvd19wYWQsIi4iKTsKKwkJfQorCisJCWlmIChmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrPT1vZmZzZXQpIHsKKwkJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisJCQlzaG93X3BhZF9pbmZvLmxpbmU9bC1sICUgc2hvd19wYWRfaW5mby5kaXNwbGF5X2xpbmVzOworCQl9CisKKworCQlvZmZzZXQrKztjb2xzKys7Y2hfcHRyKys7CisJfQorCisJd3ByaW50dyAoc2hvd19wYWQsIlxuIik7CisJc2hvd19wYWRfaW5mby5tYXhfbGluZT1sOworCisJcmVmcmVzaF9zaG93X3BhZCAoKTsKKworCXNob3dfc3RhdHVzICgpOworfQorCit2b2lkIHNob3dfc3RhdHVzICh2b2lkKQorCit7CisJbG9uZyBpbm9kZV9udW07CisKKwl3ZXJhc2UgKHNob3dfd2luKTt3bW92ZSAoc2hvd193aW4sMCwwKTsKKwl3cHJpbnR3IChzaG93X3dpbiwiRmlsZSBjb250ZW50cy4gQmxvY2sgJWxkLiAiLGZpbGVfaW5mby5nbG9iYWxfYmxvY2tfbnVtKTsKKwl3cHJpbnR3IChzaG93X3dpbiwiRmlsZSBibG9jayAlbGQgb2YgJWxkLiAiLGZpbGVfaW5mby5ibG9ja19udW0sZmlsZV9pbmZvLmJsb2Nrc19jb3VudC0xKTsKKwl3cHJpbnR3IChzaG93X3dpbiwiRmlsZSBPZmZzZXQgJWxkIG9mICVsZC4iLGZpbGVfaW5mby5maWxlX29mZnNldCxmaWxlX2luZm8uZmlsZV9sZW5ndGgtMSk7CisKKwl3bW92ZSAoc2hvd193aW4sMSwwKTsKKwlpbm9kZV9udW09aW5vZGVfb2Zmc2V0X3RvX2lub2RlX251bSAoZmlsZV9pbmZvLmlub2RlX29mZnNldCk7CisJd3ByaW50dyAoc2hvd193aW4sIkZpbGUgaW5vZGUgJWxkLiBJbmRpcmVjdGlvbiBsZXZlbCAlbGQuIixpbm9kZV9udW0sZmlsZV9pbmZvLmxldmVsKTsKKworCXJlZnJlc2hfc2hvd193aW4gKCk7Cit9CisKK3ZvaWQgdHlwZV9maWxlX19fcmVtZW1iZXIgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWludCBmb3VuZD0wOworCWxvbmcgZW50cnlfbnVtOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKwlzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmRlc2NyaXB0b3JfcHRyOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQXJndW1lbnQgbm90IHNwZWNpZmllZFxuIik7d3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKKwkJcmV0dXJuOworCX0KKworCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKworCWVudHJ5X251bT1yZW1lbWJlcl9saWZvLmVudHJpZXNfY291bnQrKzsKKwlpZiAoZW50cnlfbnVtPlJFTUVNQkVSX0NPVU5ULTEpIHsKKwkJZW50cnlfbnVtPTA7CisJCXJlbWVtYmVyX2xpZm8uZW50cmllc19jb3VudC0tOworCX0KKworCWRlc2NyaXB0b3JfcHRyPWZpcnN0X3R5cGU7CisJd2hpbGUgKGRlc2NyaXB0b3JfcHRyIT1OVUxMICYmICFmb3VuZCkgeworCQlpZiAoc3RyY21wIChkZXNjcmlwdG9yX3B0ci0+bmFtZSwiZXh0Ml9pbm9kZSIpPT0wKQorCQkJZm91bmQ9MTsKKwkJZWxzZQorCQkJZGVzY3JpcHRvcl9wdHI9ZGVzY3JpcHRvcl9wdHItPm5leHQ7CisJfQorCisKKwlyZW1lbWJlcl9saWZvLm9mZnNldCBbZW50cnlfbnVtXT1kZXZpY2Vfb2Zmc2V0OworCXJlbWVtYmVyX2xpZm8udHlwZSBbZW50cnlfbnVtXT1kZXNjcmlwdG9yX3B0cjsKKwlzdHJjcHkgKHJlbWVtYmVyX2xpZm8ubmFtZSBbZW50cnlfbnVtXSxidWZmZXIpOworCisJd3ByaW50dyAoY29tbWFuZF93aW4sIk9iamVjdCAlcyBpbiBPZmZzZXQgJWxkIHJlbWVtYmVyZWQgYXMgJXNcbiIsZGVzY3JpcHRvcl9wdHItPm5hbWUsZGV2aWNlX29mZnNldCxidWZmZXIpOworCXdyZWZyZXNoIChjb21tYW5kX3dpbik7Cit9CisKK3ZvaWQgdHlwZV9maWxlX19fc2V0IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwl1bnNpZ25lZCBjaGFyIHRtcDsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF0sKmNoX3B0cjsKKwlpbnQgbW9kZT1IRVg7CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQXJndW1lbnQgbm90IHNwZWNpZmllZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCisJaWYgKHN0cmNhc2VjbXAgKGJ1ZmZlciwidGV4dCIpPT0wKSB7CisJCW1vZGU9VEVYVDsKKwkJc3RyY3B5IChidWZmZXIscHRyKTsKKwl9CisKKwllbHNlIGlmIChzdHJjYXNlY21wIChidWZmZXIsImhleCIpPT0wKSB7CisJCW1vZGU9SEVYOworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJfQorCisJaWYgKCpidWZmZXI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRGF0YSBub3Qgc3BlY2lmaWVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisKKwlpZiAobW9kZT09SEVYKSB7CisJCWRvIHsKKwkJCXRtcD0odW5zaWduZWQgY2hhcikgc3RydG9sIChidWZmZXIsTlVMTCwxNik7CisJCQlmaWxlX2luZm8uYnVmZmVyIFtmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrXT10bXA7CisJCQlmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrKys7CisJCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCQlpZiAoZmlsZV9pbmZvLm9mZnNldF9pbl9ibG9jaz09ZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplKSB7CisJCQkJaWYgKCpwdHIpIHsKKwkJCQkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRW5kaW5nIG9mZnNldCBvdXRzaWRlIGJsb2NrLCBvbmx5IHBhcnRpYWwgc3RyaW5nIGNoYW5nZWRcbiIpOworCQkJCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQkJCX0KKwkJCQlmaWxlX2luZm8ub2Zmc2V0X2luX2Jsb2NrLS07CisJCQl9CisJCX0gd2hpbGUgKCpidWZmZXIpIDsKKwl9CisKKwllbHNlIHsKKwkJY2hfcHRyPWJ1ZmZlcjsKKwkJd2hpbGUgKCpjaF9wdHIpIHsKKwkJCXRtcD0odW5zaWduZWQgY2hhcikgKmNoX3B0cisrOworCQkJZmlsZV9pbmZvLmJ1ZmZlciBbZmlsZV9pbmZvLm9mZnNldF9pbl9ibG9ja109dG1wOworCQkJZmlsZV9pbmZvLm9mZnNldF9pbl9ibG9jaysrOworCQkJaWYgKGZpbGVfaW5mby5vZmZzZXRfaW5fYmxvY2s9PWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkgeworCQkJCWlmICgqY2hfcHRyKSB7CisJCQkJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVuZGluZyBvZmZzZXQgb3V0c2lkZSBibG9jaywgb25seSBwYXJ0aWFsIHN0cmluZyBjaGFuZ2VkXG4iKTsKKwkJCQkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJCQl9CisJCQkJZmlsZV9pbmZvLm9mZnNldF9pbl9ibG9jay0tOworCQkJfQorCQl9CisJfQorCisJc3RyY3B5IChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2ZpbGVfX193cml0ZWRhdGEgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvd193cml0ZSAoZmlsZV9pbmZvLmJ1ZmZlcixmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUsZmlsZV9pbmZvLmdsb2JhbF9ibG9ja19vZmZzZXQpOworCXJldHVybjsKK30KKworbG9uZyBmaWxlX2Jsb2NrX3RvX2dsb2JhbF9ibG9jayAobG9uZyBmaWxlX2Jsb2NrLHN0cnVjdCBzdHJ1Y3RfZmlsZV9pbmZvICpmaWxlX2luZm9fcHRyKQorCit7CisJbG9uZyBsYXN0X2RpcmVjdCxsYXN0X2luZGlyZWN0LGxhc3RfZGluZGlyZWN0OworCisJbGFzdF9kaXJlY3Q9RVhUMl9ORElSX0JMT0NLUy0xOworCWxhc3RfaW5kaXJlY3Q9bGFzdF9kaXJlY3QrZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQ7CisJbGFzdF9kaW5kaXJlY3Q9bGFzdF9pbmRpcmVjdCsoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpKihmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCk7CisKKwlpZiAoZmlsZV9ibG9jayA8PSBsYXN0X2RpcmVjdCkgeworCQlmaWxlX2luZm9fcHRyLT5sZXZlbD0wOworCQlyZXR1cm4gKGZpbGVfaW5mb19wdHItPmlub2RlX3B0ci0+aV9ibG9jayBbZmlsZV9ibG9ja10pOworCX0KKworCWlmIChmaWxlX2Jsb2NrIDw9IGxhc3RfaW5kaXJlY3QpIHsKKwkJZmlsZV9pbmZvX3B0ci0+bGV2ZWw9MTsKKwkJZmlsZV9ibG9jaz1maWxlX2Jsb2NrLWxhc3RfZGlyZWN0LTE7CisJCXJldHVybiAocmV0dXJuX2luZGlyZWN0IChmaWxlX2luZm9fcHRyLT5pbm9kZV9wdHItPmlfYmxvY2sgW0VYVDJfSU5EX0JMT0NLXSxmaWxlX2Jsb2NrKSk7CisJfQorCisJaWYgKGZpbGVfYmxvY2sgPD0gbGFzdF9kaW5kaXJlY3QpIHsKKwkJZmlsZV9pbmZvX3B0ci0+bGV2ZWw9MjsKKwkJZmlsZV9ibG9jaz1maWxlX2Jsb2NrLWxhc3RfaW5kaXJlY3QtMTsKKwkJcmV0dXJuIChyZXR1cm5fZGluZGlyZWN0IChmaWxlX2luZm9fcHRyLT5pbm9kZV9wdHItPmlfYmxvY2sgW0VYVDJfRElORF9CTE9DS10sZmlsZV9ibG9jaykpOworCX0KKworCWZpbGVfaW5mb19wdHItPmxldmVsPTM7CisJZmlsZV9ibG9jaz1maWxlX2Jsb2NrLWxhc3RfZGluZGlyZWN0LTE7CisJcmV0dXJuIChyZXR1cm5fdGluZGlyZWN0IChmaWxlX2luZm9fcHRyLT5pbm9kZV9wdHItPmlfYmxvY2sgW0VYVDJfVElORF9CTE9DS10sZmlsZV9ibG9jaykpOworfQorCitsb25nIHJldHVybl9pbmRpcmVjdCAobG9uZyB0YWJsZV9ibG9jayxsb25nIGJsb2NrX251bSkKKworeworCWxvbmcgYmxvY2tfdGFibGUgW0VYVDJfTUFYX0JMT0NLX1NJWkUvNF07CisKKwlsb3dfcmVhZCAoKGNoYXIgKikgYmxvY2tfdGFibGUsZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLHRhYmxlX2Jsb2NrKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSk7CisJcmV0dXJuIChibG9ja190YWJsZSBbYmxvY2tfbnVtXSk7Cit9CisKK2xvbmcgcmV0dXJuX2RpbmRpcmVjdCAobG9uZyB0YWJsZV9ibG9jayxsb25nIGJsb2NrX251bSkKKworeworCWxvbmcgZl9pbmRpcmVjdDsKKworCWZfaW5kaXJlY3Q9YmxvY2tfbnVtLyhmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCk7CisJZl9pbmRpcmVjdD1yZXR1cm5faW5kaXJlY3QgKHRhYmxlX2Jsb2NrLGZfaW5kaXJlY3QpOworCXJldHVybiAocmV0dXJuX2luZGlyZWN0IChmX2luZGlyZWN0LGJsb2NrX251bSUoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpKSk7Cit9CisKK2xvbmcgcmV0dXJuX3RpbmRpcmVjdCAobG9uZyB0YWJsZV9ibG9jayxsb25nIGJsb2NrX251bSkKKworeworCWxvbmcgc19pbmRpcmVjdDsKKworCXNfaW5kaXJlY3Q9YmxvY2tfbnVtLygoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpKihmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCkpOworCXNfaW5kaXJlY3Q9cmV0dXJuX2luZGlyZWN0ICh0YWJsZV9ibG9jayxzX2luZGlyZWN0KTsKKwlyZXR1cm4gKHJldHVybl9kaW5kaXJlY3QgKHNfaW5kaXJlY3QsYmxvY2tfbnVtJSgoZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzQpKihmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUvNCkpKSk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZXh0MmVkL2dlbmVyYWxfY29tLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL2dlbmVyYWxfY29tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzliMmZmYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvZ2VuZXJhbF9jb20uYwpAQCAtMCwwICsxLDkwNyBAQAorLyoKKworL3Vzci9zcmMvZXh0MmVkL2dlbmVyYWxfY29tLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0dlbmVyYWwgdXNlciBjb21tYW5kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IHdyaXR0ZW4gb246IEFwcmlsIDkgMTk5NQorCitDb3B5cmlnaHQgKEMpIDE5OTUgR2FkaSBPeG1hbgorCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImV4dDJlZC5oIgorI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKwordm9pZCBoZWxwIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlpbnQgaSxtYXhfbGluZT0wOworCWNoYXIgYXJndW1lbnQgWzgwXSwqcHRyOworCisJd2VyYXNlIChzaG93X3BhZCk7d21vdmUgKHNob3dfcGFkLDAsMCk7CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGFyZ3VtZW50KTsKKworCWlmICgqcHRyIT0wKSB7CisJCSBwdHI9cGFyc2Vfd29yZCAocHRyLGFyZ3VtZW50KTsKKwkJIGlmICgqYXJndW1lbnQhPTApIHsKKwkJCSBkZXRhaWxlZF9oZWxwIChhcmd1bWVudCk7CisJCQkgcmV0dXJuOworCQl9CisJfQorCisJaWYgKGN1cnJlbnRfdHlwZSE9TlVMTCkgeworCisJCXdwcmludHcgKHNob3dfcGFkLCJUeXBlICVzIHNwZWNpZmljIGNvbW1hbmRzOlxuIixjdXJyZW50X3R5cGUtPm5hbWUpO21heF9saW5lKys7CisKKwkJaWYgKGN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5sYXN0X2NvbW1hbmQ9PS0xKSB7CisJCQl3cHJpbnR3IChzaG93X3BhZCwiXG5ub25lXG4iKTttYXhfbGluZSs9MjsKKwkJfQorCQllbHNlCisJCQlmb3IgKGk9MDtpPD1jdXJyZW50X3R5cGUtPnR5cGVfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQkJCWlmIChpJTU9PTApIHsKKwkJCQkJd3ByaW50dyAoc2hvd19wYWQsIlxuIik7bWF4X2xpbmUrKzsKKwkJCQl9CisJCQkJd3ByaW50dyAoc2hvd19wYWQsIiUtMTNzIixjdXJyZW50X3R5cGUtPnR5cGVfY29tbWFuZHMubmFtZXMgW2ldKTsKKwkJCQlpZiAoaSU1IT00KQorCQkJCQl3cHJpbnR3IChzaG93X3BhZCwiOyAgIik7CisJCQl9CisKKwkJd3ByaW50dyAoc2hvd19wYWQsIlxuXG4iKTttYXhfbGluZSs9MjsKKwl9CisKKwlpZiAoZXh0Ml9jb21tYW5kcy5sYXN0X2NvbW1hbmQgIT0gLTEpIHsKKwkJd3ByaW50dyAoc2hvd19wYWQsImV4dDIgZmlsZXN5c3RlbSBnZW5lcmFsIGNvbW1hbmRzOiBcbiIpO21heF9saW5lKys7CisJCWZvciAoaT0wO2k8PWV4dDJfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQkJaWYgKGklNT09MCkgeworCQkJCXdwcmludHcgKHNob3dfcGFkLCJcbiIpO21heF9saW5lKys7CisJCQl9CisJCQl3cHJpbnR3IChzaG93X3BhZCwiJS0xM3MiLGV4dDJfY29tbWFuZHMubmFtZXMgW2ldKTsKKwkJCWlmIChpJTUhPTQpCisJCQkJd3ByaW50dyAoc2hvd19wYWQsIjsgICIpOworCisJCX0KKwkJd3ByaW50dyAoc2hvd19wYWQsIlxuXG4iKTttYXhfbGluZSs9MjsKKwl9CisKKwl3cHJpbnR3IChzaG93X3BhZCwiR2VuZXJhbCBjb21tYW5kczogXG4iKTsKKworCWZvciAoaT0wO2k8PWdlbmVyYWxfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQlpZiAoaSU1PT0wKSB7CisJCQl3cHJpbnR3IChzaG93X3BhZCwiXG4iKTttYXhfbGluZSsrOworCQl9CisJCXdwcmludHcgKHNob3dfcGFkLCIlLTEzcyIsZ2VuZXJhbF9jb21tYW5kcy5uYW1lcyBbaV0pOworCQlpZiAoaSU1IT00KQorCQkJd3ByaW50dyAoc2hvd19wYWQsIjsgICIpOworCX0KKworCXdwcmludHcgKHNob3dfcGFkLCJcblxuIik7bWF4X2xpbmUrPTI7CisKKwl3cHJpbnR3IChzaG93X3BhZCwiRVhUMkVEIHZlciAlcyAoJXMpXG4iLEUyRlNQUk9HU19WRVJTSU9OLCBFMkZTUFJPR1NfREFURSk7CisJd3ByaW50dyAoc2hvd19wYWQsIkNvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuXG4iKTsKKwl3cHJpbnR3IChzaG93X3BhZCwiUmV2aWV3ZWQgMjAwMSBDaHJpc3RpYW4gQmFjXG4iKTsKKwl3cHJpbnR3IChzaG93X3BhZCwiTW9kaWZpZWQgYW5kIGVuY2hhbmNlZCBieSBUaGVvZG9yZSBUcydvLCAyMDAyXG4iKTsKKwl3cHJpbnR3IChzaG93X3BhZCwiRVhUMkVEIGlzIGhlcmVieSBwbGFjZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS5cblxuIik7CisJd3ByaW50dyAoc2hvd19wYWQsIkVYVDJFRCB3YXMgcHJvZ3JhbW1lZCBhcyBhIHN0dWRlbnQgcHJvamVjdCBpbiB0aGUgc29mdHdhcmUgbGFib3JhdG9yeVxuIik7CisJd3ByaW50dyAoc2hvd19wYWQsIm9mIHRoZSBmYWN1bHR5IG9mIGVsZWN0cmljYWwgZW5naW5lZXJpbmcgaW4gdGhlXG4iKTsKKwl3cHJpbnR3IChzaG93X3BhZCwiVGVjaG5pb24gLSBJc3JhZWwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3lcbiIpOworCXdwcmludHcgKHNob3dfcGFkLCJ3aXRoIHRoZSBndWlkZSBvZiBBdm5lciBMb3R0ZW0gYW5kIERyLiBJbGFuYSBEYXZpZC5cbiIpOworCisJbWF4X2xpbmUrPTEwOworCisJc2hvd19wYWRfaW5mby5saW5lPTA7c2hvd19wYWRfaW5mby5tYXhfbGluZT1tYXhfbGluZTsKKworCXdlcmFzZSAoc2hvd193aW4pO3dtb3ZlIChzaG93X3dpbiwwLDApOworCXdwcmludHcgKHNob3dfd2luLCJFWFQyRUQgaGVscCIpOworCisJcmVmcmVzaF9zaG93X3dpbiAoKTsKKwlyZWZyZXNoX3Nob3dfcGFkICgpOworfQorCit2b2lkIGRldGFpbGVkX2hlbHAgKGNoYXIgKnRleHQpCisKK3sKKwlpbnQgaTsKKworCWlmIChjdXJyZW50X3R5cGUgIT0gTlVMTCkKKwkJZm9yIChpPTA7aTw9Y3VycmVudF90eXBlLT50eXBlX2NvbW1hbmRzLmxhc3RfY29tbWFuZDtpKyspIHsKKwkJCWlmIChzdHJjbXAgKGN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5uYW1lcyBbaV0sdGV4dCk9PTApIHsKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiJXMgLSAlc1xuIix0ZXh0LGN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5kZXNjcmlwdGlvbnMgW2ldKTsKKwkJCQlyZWZyZXNoX3Nob3dfcGFkICgpO3JldHVybjsKKwkJCX0KKwkJfQorCisJZm9yIChpPTA7aTw9ZXh0Ml9jb21tYW5kcy5sYXN0X2NvbW1hbmQ7aSsrKSB7CisJCWlmIChzdHJjbXAgKGV4dDJfY29tbWFuZHMubmFtZXMgW2ldLHRleHQpPT0wKSB7CisJCQkJd3ByaW50dyAoc2hvd19wYWQsIiVzIC0gJXNcbiIsdGV4dCxleHQyX2NvbW1hbmRzLmRlc2NyaXB0aW9ucyBbaV0pOworCQkJCXJlZnJlc2hfc2hvd19wYWQgKCk7cmV0dXJuOworCQl9CisJfQorCisJZm9yIChpPTA7aTw9Z2VuZXJhbF9jb21tYW5kcy5sYXN0X2NvbW1hbmQ7aSsrKSB7CisJCWlmIChzdHJjbXAgKGdlbmVyYWxfY29tbWFuZHMubmFtZXMgW2ldLHRleHQpPT0wKSB7CisJCQkJd3ByaW50dyAoc2hvd19wYWQsIiVzIC0gJXNcbiIsdGV4dCxnZW5lcmFsX2NvbW1hbmRzLmRlc2NyaXB0aW9ucyBbaV0pOworCQkJCXJlZnJlc2hfc2hvd19wYWQgKCk7cmV0dXJuOworCQl9CisJfQorCisJaWYgKHN0cmNtcCAoInF1aXQiLHRleHQpPT0wKSB7CisJCXdwcmludHcgKHNob3dfcGFkLCJxdWl0IC0gRXhpc3RzIEVYVDJFRCIpOworCQlyZWZyZXNoX3Nob3dfcGFkICgpO3JldHVybjsKKwl9CisKKwl3cHJpbnR3IChzaG93X3BhZCwiRXJyb3IgLSBDb21tYW5kICVzIG5vdCBhdmlhYmxlIG5vd1xuIix0ZXh0KTsKKwlyZWZyZXNoX3Nob3dfcGFkICgpO3JldHVybjsKK30KKworCisKK3ZvaWQgc2V0X2RldmljZSAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJY2hhciAqcHRyLG5ld19kZXZpY2UgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsbmV3X2RldmljZSk7CisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRGV2aWNlIG5hbWUgbm90IHNwZWNpZmllZFxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKwlwYXJzZV93b3JkIChwdHIsbmV3X2RldmljZSk7CisJY2hlY2tfbW91bnRlZCAobmV3X2RldmljZSk7CisJaWYgKG1vdW50ZWQgJiYgIUFsbG93TW91bnRlZFJlYWQpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRmlsZXN5c3RlbSBpcyBtb3VudGVkLCBhYm9ydGluZ1xuIik7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJZb3UgbWF5IHdpc2ggdG8gdXNlIHRoZSBBbGxvd01vdW50ZWRSZWFkIG9uIGNvbmZpZ3VyYXRpb24gb3B0aW9uXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJaWYgKG1vdW50ZWQgJiYgQWxsb3dNb3VudGVkUmVhZCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiV2FybmluZyAtIEZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gRGlzcGxheWVkIGRhdGEgbWF5IGJlIHVucmVsaWFibGUuXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwl9CisKKwlpZiAoZGV2aWNlX2hhbmRsZSE9TlVMTCkKKwkJZmNsb3NlIChkZXZpY2VfaGFuZGxlKTsKKworCWlmICggKGRldmljZV9oYW5kbGU9Zm9wZW4gKG5ld19kZXZpY2UsInJiIikpPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIENhbiBub3Qgb3BlbiBkZXZpY2UgJXNcbiIsbmV3X2RldmljZSk7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKwllbHNlIHsKKwkJc3RyY3B5IChkZXZpY2VfbmFtZSxuZXdfZGV2aWNlKTsKKwkJd3JpdGVfYWNjZXNzPTA7CQkJCS8qIFdyaXRlIGFjY2VzcyBkaXNhYmxlZCAqLworCQljdXJyZW50X3R5cGU9TlVMTDsJCQkvKiBUaGVyZSBpcyBubyB0eXBlIG5vdyAqLworCQlyZW1lbWJlcl9saWZvLmVudHJpZXNfY291bnQ9MDsJCS8qIEVtcHR5IE9iamVjdCBtZW1vcnkgKi8KKwkJZnJlZV91c2VyX2NvbW1hbmRzICgmZXh0Ml9jb21tYW5kcyk7CS8qIEZyZWUgZmlsZXN5c3RlbSBzcGVjaWZpYyBvYmplY3RzICovCisJCWZyZWVfc3RydWN0X2Rlc2NyaXB0b3JzICgpOworCQlpZiAoIXNldF9maWxlX3N5c3RlbV9pbmZvICgpKSB7CQkvKiBFcnJvciB3aGlsZSBnZXR0aW5nIGluZm8gLS0+IGFib3J0ICovCisJCQlmcmVlX3VzZXJfY29tbWFuZHMgKCZleHQyX2NvbW1hbmRzKTsKKwkJCWZyZWVfc3RydWN0X2Rlc2NyaXB0b3JzICgpOworCQkJZmNsb3NlIChkZXZpY2VfaGFuZGxlKTsKKwkJCWRldmljZV9oYW5kbGU9TlVMTDsJCS8qIE5vdGljZSB0aGF0IG91ciBkZXZpY2UgaXMgc3RpbGwgbm90IHNldCB1cCAqLworCQkJZGV2aWNlX29mZnNldD0tMTsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAoKkFsdGVybmF0ZURlc2NyaXB0b3JzKQkJLyogQ2hlY2sgaWYgdXNlciBkZWZpbmVkIG9iamVjdHMgZXhpc3QgKi8KKwkJCXNldF9zdHJ1Y3RfZGVzY3JpcHRvcnMgKEFsdGVybmF0ZURlc2NyaXB0b3JzKTsKKwkJZGlzcGF0Y2ggKCJzZXRvZmZzZXQgMCIpOworCQlkaXNwYXRjaCAoImhlbHAiKTsJCQkvKiBTaG93IGhlbHAgc2NyZWVuICovCisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJEZXZpY2UgY2hhbmdlZCB0byAlcyIsZGV2aWNlX25hbWUpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorfQorCit2b2lkIHNldF9vZmZzZXQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgbXVsdD0xOworCWxvbmcgbmV3X29mZnNldDsKKwljaGFyICpwdHIsbmV3X29mZnNldF9idWZmZXIgWzgwXTsKKworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGRldmljZSBvcGVuZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLG5ld19vZmZzZXRfYnVmZmVyKTsKKworCWlmICgqcHRyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGFyZ3VtZW50IHNwZWNpZmllZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKworCXB0cj1wYXJzZV93b3JkIChwdHIsbmV3X29mZnNldF9idWZmZXIpOworCisJaWYgKHN0cmNtcCAobmV3X29mZnNldF9idWZmZXIsImJsb2NrIik9PTApIHsKKwkJbXVsdD1maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsbmV3X29mZnNldF9idWZmZXIpOworCX0KKworCWlmIChzdHJjbXAgKG5ld19vZmZzZXRfYnVmZmVyLCJ0eXBlIik9PTApIHsKKwkJaWYgKGN1cnJlbnRfdHlwZT09TlVMTCkgeworCQkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTm8gdHlwZSBzZXRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCQlyZXR1cm47CisJCX0KKworCQltdWx0PWN1cnJlbnRfdHlwZS0+bGVuZ3RoOworCQlwdHI9cGFyc2Vfd29yZCAocHRyLG5ld19vZmZzZXRfYnVmZmVyKTsKKwl9CisKKwlpZiAoKm5ld19vZmZzZXRfYnVmZmVyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIG9mZnNldCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAobmV3X29mZnNldF9idWZmZXIgWzBdPT0nKycpIHsKKwkJaWYgKGRldmljZV9vZmZzZXQ9PS0xKSB7CisJCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBTZWxlY3QgYSBmaXhlZCBvZmZzZXQgZmlyc3RcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCQlyZXR1cm47CisJCX0KKwkJbmV3X29mZnNldD1kZXZpY2Vfb2Zmc2V0K2F0b2wgKG5ld19vZmZzZXRfYnVmZmVyKzEpKm11bHQ7CisJfQorCisJZWxzZSBpZiAobmV3X29mZnNldF9idWZmZXIgWzBdPT0nLScpIHsKKwkJaWYgKGRldmljZV9vZmZzZXQ9PS0xKSB7CisJCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBTZWxlY3QgYSBmaXhlZCBvZmZzZXQgZmlyc3RcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCQlyZXR1cm47CisJCX0KKwkJbmV3X29mZnNldD1kZXZpY2Vfb2Zmc2V0LWF0b2wgKG5ld19vZmZzZXRfYnVmZmVyKzEpKm11bHQ7CisJCWlmIChuZXdfb2Zmc2V0PDApIG5ld19vZmZzZXQ9MDsKKwl9CisKKwllbHNlCisJCW5ld19vZmZzZXQ9YXRvbCAobmV3X29mZnNldF9idWZmZXIpKm11bHQ7CisKKwlpZiAoIChmc2VlayAoZGV2aWNlX2hhbmRsZSxuZXdfb2Zmc2V0LFNFRUtfU0VUKSk9PS0xKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZhaWxlZCB0byBzZWVrIHRvIG9mZnNldCAlbGQgaW4gZGV2aWNlICVzXG4iLG5ld19vZmZzZXQsZGV2aWNlX25hbWUpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfTsKKwlkZXZpY2Vfb2Zmc2V0PW5ld19vZmZzZXQ7CisJd3ByaW50dyAoY29tbWFuZF93aW4sIkRldmljZSBvZmZzZXQgY2hhbmdlZCB0byAlbGRcbiIsZGV2aWNlX29mZnNldCk7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwlsb2FkX3R5cGVfZGF0YSAoKTsKKwl0eXBlX2RhdGEub2Zmc2V0X2luX2Jsb2NrPTA7Cit9CisKK3ZvaWQgc2V0X2ludChzaG9ydCBsZW4sIHZvaWQgKnB0ciwgY2hhciAqbmFtZSwgY2hhciAqdmFsdWUpCit7CisJY2hhcgkqY2hhcl9wdHI7CisJc2hvcnQJKnNob3J0X3B0cjsKKwlsb25nCSpsb25nX3B0cjsKKwlsb25nCXY7CisJY2hhcgkqdG1wOworCisJdiA9IHN0cnRvbCh2YWx1ZSwgJnRtcCwgMCk7CisJaWYgKCp0bXApIHsKKwkJd3ByaW50dyggY29tbWFuZF93aW4sICJCYWQgdmFsdWUgLSAlc1xuIiwgdmFsdWUpOworCQlyZXR1cm47CisJfQorCXN3aXRjaCAobGVuKSB7CisJY2FzZSAxOgorCQljaGFyX3B0ciA9IChjaGFyICopIHB0cjsKKwkJKmNoYXJfcHRyID0gdjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlzaG9ydF9wdHIgPSAoc2hvcnQgKikgcHRyOworCQkqc2hvcnRfcHRyID0gdjsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlsb25nX3B0ciA9IChsb25nICopIHB0cjsKKwkJKmxvbmdfcHRyID0gdjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sCisJCQkgInNldF9pbnQ6IHVuc3VwcG9ydGVkIGxlbmd0aDogJWRcbiIsIGxlbik7CisJCXJldHVybjsKKwl9CisJd3ByaW50dyAoY29tbWFuZF93aW4sICJWYXJpYWJsZSAlcyBzZXQgdG8gJXNcbiIsCisJCSBuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgc2V0X3VpbnQoc2hvcnQgbGVuLCB2b2lkICpwdHIsIGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKQoreworCXVuc2lnbmVkIGNoYXIJKmNoYXJfcHRyOworCXVuc2lnbmVkIHNob3J0CSpzaG9ydF9wdHI7CisJdW5zaWduZWQgbG9uZwkqbG9uZ19wdHI7CisJdW5zaWduZWQgbG9uZwl2OworCWNoYXIJCSp0bXA7CisKKwl2ID0gc3RydG91bCh2YWx1ZSwgJnRtcCwgMCk7CisJaWYgKCp0bXApIHsKKwkJd3ByaW50dyggY29tbWFuZF93aW4sICJCYWQgdmFsdWUgLSAlc1xuIiwgdmFsdWUpOworCQlyZXR1cm47CisJfQorCXN3aXRjaCAobGVuKSB7CisJY2FzZSAxOgorCQljaGFyX3B0ciA9ICh1bnNpZ25lZCBjaGFyICopIHB0cjsKKwkJKmNoYXJfcHRyID0gdjsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlzaG9ydF9wdHIgPSAodW5zaWduZWQgc2hvcnQgKikgcHRyOworCQkqc2hvcnRfcHRyID0gdjsKKwkJYnJlYWs7CisJY2FzZSA0OgorCQlsb25nX3B0ciA9ICh1bnNpZ25lZCBsb25nICopIHB0cjsKKwkJKmxvbmdfcHRyID0gdjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sCisJCQkgInNldF91aW50OiB1bnN1cHBvcnRlZCBsZW5ndGg6ICVkXG4iLCBsZW4pOworCQlyZXR1cm47CisJfQorCXdwcmludHcgKGNvbW1hbmRfd2luLCAiVmFyaWFibGUgJXMgc2V0IHRvICVzXG4iLAorCQkgbmFtZSwgdmFsdWUpOworfQorCit2b2lkIHNldF9jaGFyKHNob3J0IGxlbiwgdm9pZCAqcHRyLCBjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSkKK3sKKwlpZiAoc3RybGVuKHZhbHVlKSsxID4gbGVuKSB7CisJCXdwcmludHcoIGNvbW1hbmRfd2luLCAiVmFsdWUgJXMgdG9vIGJpZyBmb3IgZmllbGRcbiIsCisJCQluYW1lLCBsZW4pOworCQlyZXR1cm47CisJfQorCW1lbXNldChwdHIsIDAsIGxlbik7CisJc3RyY3B5KChjaGFyICopIHB0ciwgdmFsdWUpOworCXdwcmludHcgKGNvbW1hbmRfd2luLCAiVmFyaWFibGUgJXMgc2V0IHRvICVzXG4iLAorCQkgbmFtZSwgdmFsdWUpOworfQorCisKK3ZvaWQgc2V0IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwl1bnNpZ25lZCBzaG9ydCAqaW50X3B0cjsKKwl1bnNpZ25lZCBjaGFyICpjaGFyX3B0cjsKKwl1bnNpZ25lZCBsb25nICpsb25nX3B0cixvZmZzZXQ9MDsKKwlpbnQgaSxsZW4sIGZvdW5kPTA7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdLHZhcmlhYmxlIFs4MF0sdmFsdWUgWzgwXTsKKworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGRldmljZSBvcGVuZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY3VycmVudF90eXBlPT1OVUxMKSB7CisJCWhleF9zZXQgKGNvbW1hbmRfbGluZSk7CisJCXJldHVybjsKKwl9CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKHB0cj09TlVMTCB8fCAqcHRyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE1pc3NpbmcgYXJndW1lbnRzXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCXB0cj1zdHJjaHIgKGJ1ZmZlciwnPScpOworCWlmIChwdHI9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQmFkIHN5bnRheFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCXN0cm5jcHkgKHZhcmlhYmxlLGJ1ZmZlcixwdHItYnVmZmVyKTt2YXJpYWJsZSBbcHRyLWJ1ZmZlcl09MDsKKwlzdHJjcHkgKHZhbHVlLCsrcHRyKTsKKworCWlmIChjdXJyZW50X3R5cGU9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlNvcnJ5LCBub3QgeWV0IHN1cHBvcnRlZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJZm9yIChpPTA7aTxjdXJyZW50X3R5cGUtPmZpZWxkc19udW0gJiYgIWZvdW5kO2krKykgeworCQlpZiAoc3RyY21wIChjdXJyZW50X3R5cGUtPmZpZWxkX25hbWVzIFtpXSx2YXJpYWJsZSk9PTApIHsKKwkJCWZvdW5kPTE7CisJCQlwdHI9dHlwZV9kYXRhLnUuYnVmZmVyK29mZnNldDsKKwkJCWxlbiA9IGN1cnJlbnRfdHlwZS0+ZmllbGRfbGVuZ3RocyBbaV07CisJCQlzd2l0Y2ggKGN1cnJlbnRfdHlwZS0+ZmllbGRfdHlwZXMgW2ldKSB7CisJCQljYXNlIEZJRUxEX1RZUEVfSU5UOgorCQkJCXNldF9pbnQobGVuLCBwdHIsIHZhcmlhYmxlLCB2YWx1ZSk7CisJCQkJYnJlYWs7CisJCQljYXNlIEZJRUxEX1RZUEVfVUlOVDoKKwkJCQlzZXRfdWludChsZW4sIHB0ciwgdmFyaWFibGUsIHZhbHVlKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRklFTERfVFlQRV9DSEFSOgorCQkJCXNldF9jaGFyKGxlbiwgcHRyLCB2YXJpYWJsZSwgdmFsdWUpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQl3cHJpbnR3IChjb21tYW5kX3dpbiwKKwkJCQkJICJzZXQ6IHVuaGFuZGxlZCB0eXBlICVkXG4iLAorCQkJCQkgY3VycmVudF90eXBlLT5maWVsZF90eXBlcyBbaV0pOworCQkJCWJyZWFrOworCQkJfQorCQkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJfQorCQlvZmZzZXQrPWN1cnJlbnRfdHlwZS0+ZmllbGRfbGVuZ3RocyBbaV07CisJfQorCWlmIChmb3VuZCkKKwkJZGlzcGF0Y2ggKCJzaG93Iik7CisJZWxzZSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIFZhcmlhYmxlICVzIG5vdCBmb3VuZFxuIix2YXJpYWJsZSk7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorfQorCit2b2lkIGhleF9zZXQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXVuc2lnbmVkIGNoYXIgdG1wOworCWNoYXIgKnB0cixidWZmZXIgWzgwXSwqY2hfcHRyOworCWludCBtb2RlPUhFWDsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBBcmd1bWVudCBub3Qgc3BlY2lmaWVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisKKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwlpZiAoc3RyY2FzZWNtcCAoYnVmZmVyLCJ0ZXh0Iik9PTApIHsKKwkJbW9kZT1URVhUOworCQlzdHJjcHkgKGJ1ZmZlcixwdHIpOworCX0KKworCWVsc2UgaWYgKHN0cmNhc2VjbXAgKGJ1ZmZlciwiaGV4Iik9PTApIHsKKwkJbW9kZT1IRVg7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwl9CisKKwlpZiAoKmJ1ZmZlcj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBEYXRhIG5vdCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKworCWlmIChtb2RlPT1IRVgpIHsKKwkJZG8geworCQkJdG1wPSh1bnNpZ25lZCBjaGFyKSBzdHJ0b2wgKGJ1ZmZlcixOVUxMLDE2KTsKKwkJCXR5cGVfZGF0YS51LmJ1ZmZlciBbdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9ja109dG1wOworCQkJdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jaysrOworCQkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQkJaWYgKHR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2s9PWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkgeworCQkJCWlmICgqcHRyKSB7CisJCQkJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVuZGluZyBvZmZzZXQgb3V0c2lkZSBibG9jaywgb25seSBwYXJ0aWFsIHN0cmluZyBjaGFuZ2VkXG4iKTsKKwkJCQkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJCQl9CisJCQkJdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jay0tOworCQkJfQorCQl9IHdoaWxlICgqYnVmZmVyKSA7CisJfQorCisJZWxzZSB7CisJCWNoX3B0cj1idWZmZXI7CisJCXdoaWxlICgqY2hfcHRyKSB7CisJCQl0bXA9KHVuc2lnbmVkIGNoYXIpICpjaF9wdHIrKzsKKwkJCXR5cGVfZGF0YS51LmJ1ZmZlciBbdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9ja109dG1wOworCQkJdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jaysrOworCQkJaWYgKHR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2s9PWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkgeworCQkJCWlmICgqY2hfcHRyKSB7CisJCQkJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVuZGluZyBvZmZzZXQgb3V0c2lkZSBibG9jaywgb25seSBwYXJ0aWFsIHN0cmluZyBjaGFuZ2VkXG4iKTsKKwkJCQkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJCQl9CisJCQkJdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jay0tOworCQkJfQorCQl9CisJfQorCisJc3RyY3B5IChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKworCisKK3ZvaWQgc2V0X3R5cGUgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqZGVzY3JpcHRvcl9wdHI7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdLHRtcF9idWZmZXIgWzgwXTsKKwlzaG9ydCBmb3VuZD0wOworCisJaWYgKCFsb2FkX3R5cGVfZGF0YSAoKSkKKwkJcmV0dXJuOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCisJaWYgKHN0cmNtcCAoYnVmZmVyLCJub25lIik9PTAgfHwgc3RyY21wIChidWZmZXIsImhleCIpPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJEYXRhIHdpbGwgYmUgc2hvd24gYXMgaGV4IGR1bXBcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCWN1cnJlbnRfdHlwZT1OVUxMOworCQlzcHJpbnRmICh0bXBfYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKHRtcF9idWZmZXIpOworCQlyZXR1cm47CisJfQorCisJZGVzY3JpcHRvcl9wdHI9Zmlyc3RfdHlwZTsKKwl3aGlsZSAoZGVzY3JpcHRvcl9wdHIhPU5VTEwgJiYgIWZvdW5kKSB7CisJCWlmIChzdHJjbXAgKGRlc2NyaXB0b3JfcHRyLT5uYW1lLGJ1ZmZlcik9PTApCisJCQlmb3VuZD0xOworCQllbHNlCisJCQlkZXNjcmlwdG9yX3B0cj1kZXNjcmlwdG9yX3B0ci0+bmV4dDsKKwl9CisJaWYgKGZvdW5kKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJTdHJ1Y3R1cmUgdHlwZSBzZXQgdG8gJXNcbiIsYnVmZmVyKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQljdXJyZW50X3R5cGU9ZGVzY3JpcHRvcl9wdHI7CisJCXNwcmludGYgKHRtcF9idWZmZXIsInNob3ciKTtkaXNwYXRjaCAodG1wX2J1ZmZlcik7CisJfQorCWVsc2UgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSAlcyBpcyBub3QgYSB2YWxpZCB0eXBlXG4iLGJ1ZmZlcik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwl9Cit9CisKK3ZvaWQgc2hvd19pbnQoc2hvcnQgbGVuLCB2b2lkICpwdHIpCit7CisJbG9uZwl0ZW1wOworCWNoYXIJKmZvcm1hdDsKKworCXN3aXRjaCAobGVuKSB7CisJY2FzZSAxOgorCQl0ZW1wID0gKigoY2hhciAqKSBwdHIpOworCQlmb3JtYXQgPSAiJTNkICgweCUwMngpXG4iOworCQlicmVhazsKKwljYXNlIDI6CisJCXRlbXAgPSAqKChzaG9ydCAqKSBwdHIpOworCQlmb3JtYXQgPSAiJWQgKDB4JXgpXG4iOworCQlicmVhazsKKwljYXNlIDQ6CisJCXRlbXAgPSAqKChsb25nICopIHB0cik7CisJCWZvcm1hdCA9ICIlZFxuIjsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJd3ByaW50dyAoc2hvd19wYWQsICJ1bmltcGxlbWVudGVkXG4iKTsKKwkJcmV0dXJuOworCX0KKwl3cHJpbnR3KHNob3dfcGFkLCBmb3JtYXQsIHRlbXAsIHRlbXApOworfQorCit2b2lkIHNob3dfdWludChzaG9ydCBsZW4sIHZvaWQgKnB0cikKK3sKKwl1bnNpZ25lZCBsb25nCXRlbXA7CisJY2hhcgkJKmZvcm1hdDsKKworCXN3aXRjaCAobGVuKSB7CisJY2FzZSAxOgorCQl0ZW1wID0gKigodW5zaWduZWQgY2hhciAqKSBwdHIpOworCQl0ZW1wID0gdGVtcCAmIDB4RkY7CisJCWZvcm1hdCA9ICIlM3UgKDB4JTAyeClcbiI7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJdGVtcCA9ICooKHVuc2lnbmVkIHNob3J0ICopIHB0cik7CisJCXRlbXAgPSB0ZW1wICYgMHhGRkZGOworCQlmb3JtYXQgPSAiJXUgKDB4JXgpXG4iOworCQlicmVhazsKKwljYXNlIDQ6CisJCXRlbXAgPSAodW5zaWduZWQgbG9uZykgKigodW5zaWduZWQgbG9uZyAqKSBwdHIpOworCQlmb3JtYXQgPSAiJXVcbiI7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXdwcmludHcgKHNob3dfcGFkLCAidW5pbXBsZW1lbnRlZFxuIik7CisJCXJldHVybjsKKwl9CisJd3ByaW50dyhzaG93X3BhZCwgZm9ybWF0LCB0ZW1wLCB0ZW1wKTsKK30KKwordm9pZCBzaG93X2NoYXIoc2hvcnQgbGVuLCB2b2lkICpwdHIpCit7CisJdW5zaWduZWQgY2hhcgkqY3AgPSAodW5zaWduZWQgY2hhciAqKSBwdHI7CisJdW5zaWduZWQgY2hhcgljaDsKKwlpbnQJCWksajsKKworCXdwcmludHcoc2hvd19wYWQsICJcIiIpOworCisJZm9yIChpPTA7IGkgPCBsZW47IGkrKykgeworCQljaCA9ICpjcCsrOworCQlpZiAoY2ggPT0gMCkgeworCQkJZm9yIChqPWkrMTsgaiA8IGxlbjsgaisrKQorCQkJCWlmIChjcFtqLWldKQorCQkJCQlicmVhazsKKwkJCWlmIChqID09IGxlbikKKwkJCQlicmVhazsKKwkJfQorCQlpZiAoY2ggPiAxMjgpIHsKKwkJCXdwcmludHcoc2hvd19wYWQsICJNLSIpOworCQkJY2ggLT0gMTI4OworCQl9CisJCWlmICgoY2ggPCAzMikgfHwgKGNoID09IDB4N2YpKSB7CisJCQl3cHJpbnR3KHNob3dfcGFkLCAiXiIpOworCQkJY2ggXj0gMHg0MDsgLyogXkAsIF5BLCBeQjsgXj8gZm9yIERFTCAqLworCQl9CisJCXdwcmludHcoc2hvd19wYWQsICIlYyIsIGNoKTsKKwl9CisKKwl3cHJpbnR3KHNob3dfcGFkLCAiXCJcbiIpOworfQorCisKKwordm9pZCBzaG93IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwl1bnNpZ25lZCBpbnQgaSxsLGxlbix0ZW1wX2ludDsKKwl1bnNpZ25lZCBsb25nIG9mZnNldD0wLHRlbXBfbG9uZzsKKwl1bnNpZ25lZCBjaGFyIHRlbXBfY2hhciwqY2hfcHRyOworCXZvaWQgKnB0cjsKKworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKQorCQlyZXR1cm47CisKKwlzaG93X3BhZF9pbmZvLmxpbmU9MDsKKworCWlmIChjdXJyZW50X3R5cGU9PU5VTEwpIHsKKwkJd21vdmUgKHNob3dfcGFkLDAsMCk7CisJCWNoX3B0cj10eXBlX2RhdGEudS5idWZmZXI7CisJCWZvciAobD0wO2w8ZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplLzE2O2wrKykgeworCQkJd3ByaW50dyAoc2hvd19wYWQsIiUwOGxkIDogICIsb2Zmc2V0KTsKKwkJCWZvciAoaT0wO2k8MTY7aSsrKSB7CisJCQkJaWYgKHR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2s9PW9mZnNldCtpKQorCQkJCQl3YXR0cnNldCAoc2hvd19wYWQsQV9SRVZFUlNFKTsKKworCQkJCWlmIChjaF9wdHIgW2ldPj0nICcgJiYgY2hfcHRyIFtpXTw9J3onKQorCQkJCQl3cHJpbnR3IChzaG93X3BhZCwiJWMiLGNoX3B0ciBbaV0pOworCQkJCWVsc2UKKwkJCQkJd3ByaW50dyAoc2hvd19wYWQsIi4iKTsKKwkJCQlpZiAodHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jaz09b2Zmc2V0K2kpCisJCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX05PUk1BTCk7CisJCQl9CisJCQl3cHJpbnR3IChzaG93X3BhZCwiICAgIik7CisJCQlmb3IgKGk9MDtpPDE2O2krKykgeworCQkJCWlmICh0eXBlX2RhdGEub2Zmc2V0X2luX2Jsb2NrPT1vZmZzZXQraSkKKwkJCQkJd2F0dHJzZXQgKHNob3dfcGFkLEFfUkVWRVJTRSk7CisKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiJTAyeCIsY2hfcHRyIFtpXSk7CisKKwkJCQlpZiAodHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jaz09b2Zmc2V0K2kpIHsKKwkJCQkJd2F0dHJzZXQgKHNob3dfcGFkLEFfTk9STUFMKTsKKwkJCQkJc2hvd19wYWRfaW5mby5saW5lPWwtbCAlIHNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lczsKKwkJCQl9CisKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiICIpOworCQkJfQorCQkJd3ByaW50dyAoc2hvd19wYWQsIlxuIik7CisJCQlvZmZzZXQrPTE2OworCQkJY2hfcHRyKz0xNjsKKwkJfQorCQlzaG93X3BhZF9pbmZvLm1heF9saW5lPWwtMTtzaG93X3BhZF9pbmZvLm1heF9jb2w9Q09MUy0xOworCQlyZWZyZXNoX3Nob3dfcGFkICgpO3Nob3dfaW5mbyAoKTsKKwl9CisJZWxzZSB7CisJCXdtb3ZlIChzaG93X3BhZCwwLDApO2w9MDsKKwkJZm9yIChpPTA7aTxjdXJyZW50X3R5cGUtPmZpZWxkc19udW07aSsrKSB7CisJCQl3cHJpbnR3IChzaG93X3BhZCwiJS0yMHMgPSAiLGN1cnJlbnRfdHlwZS0+ZmllbGRfbmFtZXMgW2ldKTsKKwkJCXB0cj10eXBlX2RhdGEudS5idWZmZXIrb2Zmc2V0OworCQkJbGVuID0gY3VycmVudF90eXBlLT5maWVsZF9sZW5ndGhzW2ldOworCQkJc3dpdGNoIChjdXJyZW50X3R5cGUtPmZpZWxkX3R5cGVzW2ldKSB7CisJCQljYXNlIEZJRUxEX1RZUEVfSU5UOgorCQkJCXNob3dfaW50KGxlbiwgcHRyKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRklFTERfVFlQRV9VSU5UOgorCQkJCXNob3dfdWludChsZW4sIHB0cik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZJRUxEX1RZUEVfQ0hBUjoKKwkJCQlzaG93X2NoYXIobGVuLCBwdHIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwgInVuaW1wbGVtZW50ZWRcbiIpOworCQkJCWJyZWFrOworCQkJfQorCQkJb2Zmc2V0Kz1sZW47CisJCQlsKys7CisJCX0KKwkJY3VycmVudF90eXBlLT5sZW5ndGg9b2Zmc2V0OworCQlzaG93X3BhZF9pbmZvLm1heF9saW5lPWwtMTsKKwkJcmVmcmVzaF9zaG93X3BhZCAoKTtzaG93X2luZm8gKCk7CisJfQorfQorCit2b2lkIG5leHQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlvZmZzZXQqPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJaWYgKGN1cnJlbnRfdHlwZSE9TlVMTCkgeworCQlzcHJpbnRmIChidWZmZXIsInNldG9mZnNldCB0eXBlICslbGQiLG9mZnNldCk7CisJCWRpc3BhdGNoIChidWZmZXIpOworCQlyZXR1cm47CisJfQorCisJaWYgKHR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2srb2Zmc2V0IDwgZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplKSB7CisJCXR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2srPW9mZnNldDsKKwkJc3ByaW50ZiAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJZWxzZSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE9mZnNldCBvdXQgb2YgYmxvY2tcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorfQorCit2b2lkIHByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQlvZmZzZXQqPWF0b2wgKGJ1ZmZlcik7CisJfQorCisJaWYgKGN1cnJlbnRfdHlwZSE9TlVMTCkgeworCQlzcHJpbnRmIChidWZmZXIsInNldG9mZnNldCB0eXBlIC0lbGQiLG9mZnNldCk7CisJCWRpc3BhdGNoIChidWZmZXIpOworCQlyZXR1cm47CisJfQorCisJaWYgKHR5cGVfZGF0YS5vZmZzZXRfaW5fYmxvY2stb2Zmc2V0ID49IDApIHsKKwkJdHlwZV9kYXRhLm9mZnNldF9pbl9ibG9jay09b2Zmc2V0OworCQlzcHJpbnRmIChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKKwl9CisKKwllbHNlIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gT2Zmc2V0IG91dCBvZiBibG9ja1xuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwl9Cit9CisKK3ZvaWQgcGdkbiAoY2hhciAqY29tbW5hZF9saW5lKQorCit7CisJc2hvd19wYWRfaW5mby5saW5lKz1zaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXM7CisJcmVmcmVzaF9zaG93X3BhZCAoKTtyZWZyZXNoX3Nob3dfd2luICgpOworfQorCit2b2lkIHBndXAgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXNob3dfcGFkX2luZm8ubGluZS09c2hvd19wYWRfaW5mby5kaXNwbGF5X2xpbmVzOworCXJlZnJlc2hfc2hvd19wYWQgKCk7cmVmcmVzaF9zaG93X3dpbiAoKTsKK30KKwordm9pZCByZWRyYXcgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXJlZHJhd19hbGwgKCk7CisJZGlzcGF0Y2ggKCJzaG93Iik7Cit9CisKK3ZvaWQgcmVtZW1iZXIgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgZW50cnlfbnVtOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGRldmljZSBvcGVuZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBBcmd1bWVudCBub3Qgc3BlY2lmaWVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCisJZW50cnlfbnVtPXJlbWVtYmVyX2xpZm8uZW50cmllc19jb3VudCsrOworCWlmIChlbnRyeV9udW0+UkVNRU1CRVJfQ09VTlQtMSkgeworCQllbnRyeV9udW09MDsKKwkJcmVtZW1iZXJfbGlmby5lbnRyaWVzX2NvdW50LS07CisJfQorCisJcmVtZW1iZXJfbGlmby5vZmZzZXQgW2VudHJ5X251bV09ZGV2aWNlX29mZnNldDsKKwlyZW1lbWJlcl9saWZvLnR5cGUgW2VudHJ5X251bV09Y3VycmVudF90eXBlOworCXN0cmNweSAocmVtZW1iZXJfbGlmby5uYW1lIFtlbnRyeV9udW1dLGJ1ZmZlcik7CisKKwlpZiAoY3VycmVudF90eXBlIT1OVUxMKQorCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiT2JqZWN0ICVzIGluIE9mZnNldCAlbGQgcmVtZW1iZXJlZCBhcyAlc1xuIixjdXJyZW50X3R5cGUtPm5hbWUsZGV2aWNlX29mZnNldCxidWZmZXIpOworCWVsc2UKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIk9mZnNldCAlbGQgcmVtZW1iZXJlZCBhcyAlc1xuIixkZXZpY2Vfb2Zmc2V0LGJ1ZmZlcik7CisKKwlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworfQorCit2b2lkIHJlY2FsbCAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCWxvbmcgZW50cnlfbnVtOworCisJaWYgKGRldmljZV9oYW5kbGU9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTm8gZGV2aWNlIG9wZW5lZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKworCWlmICgqcHRyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEFyZ3VtZW50IG5vdCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKworCWZvciAoZW50cnlfbnVtPXJlbWVtYmVyX2xpZm8uZW50cmllc19jb3VudC0xO2VudHJ5X251bT49MDtlbnRyeV9udW0tLSkgeworCQlpZiAoc3RyY21wIChyZW1lbWJlcl9saWZvLm5hbWUgW2VudHJ5X251bV0sYnVmZmVyKT09MCkKKwkJCWJyZWFrOworCX0KKworCWlmIChlbnRyeV9udW09PS0xKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIENhbiBub3QgcmVjYWxsICVzXG4iLGJ1ZmZlcik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKworCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIscmVtZW1iZXJfbGlmby5vZmZzZXQgW2VudHJ5X251bV0pO2Rpc3BhdGNoIChidWZmZXIpOworCWlmIChyZW1lbWJlcl9saWZvLnR5cGUgW2VudHJ5X251bV0gIT0gTlVMTCkgeworCQlzcHJpbnRmIChidWZmZXIsInNldHR5cGUgJXMiLHJlbWVtYmVyX2xpZm8udHlwZSBbZW50cnlfbnVtXS0+bmFtZSk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJZWxzZSB7CisJCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBub25lIik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJd3ByaW50dyAoY29tbWFuZF93aW4sIk9iamVjdCAlcyBpbiBPZmZzZXQgJWxkIHJlY2FsbGVkXG4iLGN1cnJlbnRfdHlwZS0+bmFtZSxkZXZpY2Vfb2Zmc2V0KTsKKwlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworfQorCit2b2lkIGVuYWJsZV93cml0ZSAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJRklMRSAqZnA7CisKKwlpZiAoZGV2aWNlX2hhbmRsZT09TlVMTCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBObyBkZXZpY2Ugb3BlbmVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJaWYgKCFBbGxvd0NoYW5nZXMpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlNvcnJ5LCB3cml0ZSBhY2Nlc3MgaXMgbm90IGFsbG93ZWRcbiIpOworICAgIAkJcmV0dXJuOworICAgIAl9CisKKyAgICAJaWYgKG1vdW50ZWQpIHsKKyAgICAJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZpbGVzeXN0ZW0gaXMgbW91bnRlZFxuIik7CisJCXJldHVybjsKKyAgICAJfQorCisJaWYgKCAoZnA9Zm9wZW4gKGRldmljZV9uYW1lLCJyK2IiKSk9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQ2FuIG5vdCBvcGVuIGRldmljZSAlcyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZ1xuIixkZXZpY2VfbmFtZSk7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKwlmY2xvc2UgKGRldmljZV9oYW5kbGUpOworCWRldmljZV9oYW5kbGU9ZnA7d3JpdGVfYWNjZXNzPTE7CisJd3ByaW50dyAoY29tbWFuZF93aW4sIldyaXRlIGFjY2VzcyBlbmFibGVkIC0gQmUgY2FyZWZ1bFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKK30KKwordm9pZCBkaXNhYmxlX3dyaXRlIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlGSUxFICpmcDsKKworCWlmIChkZXZpY2VfaGFuZGxlPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGRldmljZSBvcGVuZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIChmcD1mb3BlbiAoZGV2aWNlX25hbWUsInJiIikpPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIENhbiBub3Qgb3BlbiBkZXZpY2UgJXNcbiIsZGV2aWNlX25hbWUpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCXJldHVybjsKKwl9CisKKwlmY2xvc2UgKGRldmljZV9oYW5kbGUpOworCWRldmljZV9oYW5kbGU9ZnA7d3JpdGVfYWNjZXNzPTA7CisJd3ByaW50dyAoY29tbWFuZF93aW4sIldyaXRlIGFjY2VzcyBkaXNhYmxlZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKK30KKwordm9pZCB3cml0ZV9kYXRhIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwl3cml0ZV90eXBlX2RhdGEgKCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvZXh0MmVkL2dyb3VwX2NvbS5jIGIvZTJmc3Byb2dzL2V4dDJlZC9ncm91cF9jb20uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWVkMTZlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9ncm91cF9jb20uYwpAQCAtMCwwICsxLDE4MyBAQAorLyoKKworL3Vzci9zcmMvZXh0MmVkL2dyb3VwX2NvbS5jCisKK0EgcGFydCBvZiB0aGUgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gMiBkaXNrIGVkaXRvci4KKworR2VuZXJhbCB1c2VyIGNvbW1hbmRzCisKK0ZpcnN0IHdyaXR0ZW4gb246IEFwcmlsIDE3IDE5OTUKKworQ29weXJpZ2h0IChDKSAxOTk1IEdhZGkgT3htYW4KKworKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJleHQyZWQuaCIKKwordm9pZCB0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX25leHQgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgZW50cnlfb2Zmc2V0PTE7CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJZW50cnlfb2Zmc2V0PWF0b2wgKGJ1ZmZlcik7CisJfQorCisJc3ByaW50ZiAoYnVmZmVyLCJlbnRyeSAlbGQiLGdyb3VwX2luZm8uZ3JvdXBfbnVtK2VudHJ5X29mZnNldCk7CisJZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19wcmV2IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGVudHJ5X29mZnNldD0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0ciE9MCkgeworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCWVudHJ5X29mZnNldD1hdG9sIChidWZmZXIpOworCX0KKworCXNwcmludGYgKGJ1ZmZlciwiZW50cnkgJWxkIixncm91cF9pbmZvLmdyb3VwX251bS1lbnRyeV9vZmZzZXQpOworCWRpc3BhdGNoIChidWZmZXIpOworfQorCit2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fZW50cnkgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgZ3JvdXBfbnVtOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBObyBhcmd1bWVudCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwlncm91cF9udW09YXRvbCAoYnVmZmVyKTsKKworCWlmIChncm91cF9udW0gPCAwIHx8IGdyb3VwX251bSA+PSBmaWxlX3N5c3RlbV9pbmZvLmdyb3Vwc19jb3VudCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBFbnRyeSBudW1iZXIgb3V0IG9mIGJvdW5kc1xuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJZGV2aWNlX29mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0K2dyb3VwX251bSpzaXplb2YgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpOworCisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgJWxkIixkZXZpY2Vfb2Zmc2V0KTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzdHJjcHkgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworCWdyb3VwX2luZm8uZ3JvdXBfbnVtPWdyb3VwX251bTsKK30KKworCit2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fZ29jb3B5IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwl1bnNpZ25lZCBsb25nIGNvcHlfbnVtLG9mZnNldDsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHI9PTApIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gTm8gYXJndW1lbnQgc3BlY2lmaWVkXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCisJY29weV9udW09YXRvbCAoYnVmZmVyKTsKKworCW9mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0K2NvcHlfbnVtKmZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19ibG9ja3NfcGVyX2dyb3VwKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKworCWlmIChvZmZzZXQgPiBmaWxlX3N5c3RlbV9pbmZvLmZpbGVfc3lzdGVtX3NpemUpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQ29weSBudW1iZXIgb3V0IG9mIGJvdW5kc1xuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJZ3JvdXBfaW5mby5jb3B5X251bT1jb3B5X251bTsKKwlkZXZpY2Vfb2Zmc2V0PW9mZnNldCtncm91cF9pbmZvLmdyb3VwX251bSpzaXplb2YgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpOworCisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgJWxkIixkZXZpY2Vfb2Zmc2V0KTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzdHJjcHkgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworfQorCisKK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGdyb3VwX251bSx0ZW1wOworCisJdGVtcD0oZGV2aWNlX29mZnNldC1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0KSAlIChmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfYmxvY2tzX3Blcl9ncm91cCpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUpOworCWdyb3VwX251bT10ZW1wL3NpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisKKwlzaG93IChjb21tYW5kX2xpbmUpOworCisJd21vdmUgKHNob3dfd2luLDEsMCk7d3ByaW50dyAoc2hvd193aW4sIlxuIik7d21vdmUgKHNob3dfd2luLDIsMCk7CisJd3ByaW50dyAoc2hvd193aW4sIkdyb3VwICVsZCBvZiAlbGQgIixncm91cF9udW0sZmlsZV9zeXN0ZW1faW5mby5ncm91cHNfY291bnQtMSk7CisJd3ByaW50dyAoc2hvd193aW4sImluIGNvcHkgJWxkICIsZ3JvdXBfaW5mby5jb3B5X251bSk7CisJaWYgKGdyb3VwX2luZm8uY29weV9udW09PTApIHdwcmludHcgKHNob3dfd2luLCIoTWFpbiBjb3B5KSIpOworCXdwcmludHcgKHNob3dfd2luLCJcbiIpO3JlZnJlc2hfc2hvd193aW4gKCk7CisKKwlpZiAoZ3JvdXBfbnVtPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJSZWFjaGVkIGZpcnN0IGdyb3VwIGRlc2NyaXB0b3JcbiIpOworCQl3cmVmcmVzaCAoY29tbWFuZF93aW4pOworCX0KKworCWlmIChncm91cF9udW09PWZpbGVfc3lzdGVtX2luZm8uZ3JvdXBzX2NvdW50LTEpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlJlYWNoZWQgbGFzdCBncm91cCBkZXNjcmlwdG9yXG4iKTsKKwkJd3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKKwl9Cit9CisKK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19pbm9kZSAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJbG9uZyBpbm9kZV9vZmZzZXQ7CisJY2hhciBidWZmZXIgWzgwXTsKKworCWlub2RlX29mZnNldD10eXBlX2RhdGEudS50X2V4dDJfZ3JvdXBfZGVzYy5iZ19pbm9kZV90YWJsZTsKKwlzcHJpbnRmIChidWZmZXIsInNldG9mZnNldCBibG9jayAlbGQiLGlub2RlX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJc3ByaW50ZiAoYnVmZmVyLCJzZXR0eXBlIGV4dDJfaW5vZGUiKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX2Jsb2NrYml0bWFwIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGJsb2NrX2JpdG1hcF9vZmZzZXQ7CisJY2hhciBidWZmZXIgWzgwXTsKKworCWJsb2NrX2JpdG1hcF9pbmZvLmVudHJ5X251bT0wOworCWJsb2NrX2JpdG1hcF9pbmZvLmdyb3VwX251bT1ncm91cF9pbmZvLmdyb3VwX251bTsKKworCWJsb2NrX2JpdG1hcF9vZmZzZXQ9dHlwZV9kYXRhLnUudF9leHQyX2dyb3VwX2Rlc2MuYmdfYmxvY2tfYml0bWFwOworCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0IGJsb2NrICVsZCIsYmxvY2tfYml0bWFwX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJc3ByaW50ZiAoYnVmZmVyLCJzZXR0eXBlIGJsb2NrX2JpdG1hcCIpO2Rpc3BhdGNoIChidWZmZXIpOworfQorCit2b2lkIHR5cGVfZXh0Ml9ncm91cF9kZXNjX19faW5vZGViaXRtYXAgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgaW5vZGVfYml0bWFwX29mZnNldDsKKwljaGFyIGJ1ZmZlciBbODBdOworCisJaW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtPTA7CisJaW5vZGVfYml0bWFwX2luZm8uZ3JvdXBfbnVtPWdyb3VwX2luZm8uZ3JvdXBfbnVtOworCisJaW5vZGVfYml0bWFwX29mZnNldD10eXBlX2RhdGEudS50X2V4dDJfZ3JvdXBfZGVzYy5iZ19pbm9kZV9iaXRtYXA7CisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgYmxvY2sgJWxkIixpbm9kZV9iaXRtYXBfb2Zmc2V0KTtkaXNwYXRjaCAoYnVmZmVyKTsKKwlzcHJpbnRmIChidWZmZXIsInNldHR5cGUgaW5vZGVfYml0bWFwIik7ZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19zZXRhY3RpdmVjb3B5IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjIGdkOworCisJZ2Q9dHlwZV9kYXRhLnUudF9leHQyX2dyb3VwX2Rlc2M7CisJZGlzcGF0Y2ggKCJnb2NvcHkgMCIpOworCXR5cGVfZGF0YS51LnRfZXh0Ml9ncm91cF9kZXNjPWdkOworCWRpc3BhdGNoICgic2hvdyIpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9pbml0LmMgYi9lMmZzcHJvZ3MvZXh0MmVkL2luaXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDliNTI2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9pbml0LmMKQEAgLTAsMCArMSw2MzMgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9pbml0LmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorVmFyaW91cyBpbml0aWFsaXphdGlvbiByb3V0aW5lcy4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IHdyaXR0ZW4gb246IEFwcmlsIDkgMTk5NQorCitDb3B5cmlnaHQgKEMpIDE5OTUgR2FkaSBPeG1hbgorCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX1JFQURMSU5FCisjaW5jbHVkZSA8cmVhZGxpbmUuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiZXh0MmVkLmgiCisKK2NoYXIgbGluZXNfcyBbODBdLGNvbHNfcyBbODBdOworCit2b2lkIHNpZ25hbF9oYW5kbGVyICh2b2lkKTsKKwordm9pZCBwcmVwYXJlX3RvX2Nsb3NlICh2b2lkKQorCit7CisJY2xvc2Vfd2luZG93cyAoKTsKKwlpZiAoZGV2aWNlX2hhbmRsZSE9TlVMTCkKKwkJZmNsb3NlIChkZXZpY2VfaGFuZGxlKTsKKwlmcmVlX3VzZXJfY29tbWFuZHMgKCZnZW5lcmFsX2NvbW1hbmRzKTsKKwlmcmVlX3VzZXJfY29tbWFuZHMgKCZleHQyX2NvbW1hbmRzKTsKKwlmcmVlX3N0cnVjdF9kZXNjcmlwdG9ycyAoKTsKK30KKworaW50IGluaXQgKHZvaWQpCisKK3sKKwlwcmludGYgKCJJbml0aWFsaXppbmcgLi4uXG4iKTsKKworCWlmICghcHJvY2Vzc19jb25maWd1cmF0aW9uX2ZpbGUgKCkpIHsKKwkJZnByaW50ZiAoc3RkZXJyLCJFcnJvciAtIFVuYWJsZSB0byBjb21wbGV0ZSBjb25maWd1cmF0aW9uLiBRdWl0dGluZy5cbiIpOworCQlyZXR1cm4gKDApOworCX07CisKKwlnZW5lcmFsX2NvbW1hbmRzLmxhc3RfY29tbWFuZD0tMTsJLyogTm8gY29tbWFuZHMgd2hhdHNvZXZlciBtZWFud2hpbGUgKi8KKwlleHQyX2NvbW1hbmRzLmxhc3RfY29tbWFuZD0tMTsKKwlhZGRfZ2VuZXJhbF9jb21tYW5kcyAoKTsJCS8qIEFkZCB0aGUgZ2VuZXJhbCBjb21tYW5kcywgYXZpYWJsZSBhbHdheXMgKi8KKwlkZXZpY2VfaGFuZGxlPU5VTEw7CQkJLyogTm90aWNlIHRoYXQgb3VyIGRldmljZSBpcyBzdGlsbCBub3Qgc2V0IHVwICovCisJZGV2aWNlX29mZnNldD0tMTsKKwljdXJyZW50X3R5cGU9TlVMTDsJCQkvKiBObyBmaWxlc3lzdGVtIHNwZWNpZmljIHR5cGVzIHlldCAqLworCisJcmVtZW1iZXJfbGlmby5lbnRyaWVzX2NvdW50PTA7CQkvKiBPYmplY3QgbWVtb3J5IGlzIGVtcHR5ICovCisKKwlpbml0X3dpbmRvd3MgKCk7CQkJLyogSW5pdGlhbGl6ZSB0aGUgTkNVUlNFUyBpbnRlcmZhY2UgKi8KKwlpbml0X3JlYWRsaW5lICgpOwkJCS8qIEluaXRpYWxpemUgdGhlIFJFQURMSU5FIGludGVyZmFjZSAqLworCWluaXRfc2lnbmFscyAoKTsJCQkvKiBJbml0aWFsaXplIHRoZSBzaWduYWwgaGFuZGxlcnMgKi8KKwl3cml0ZV9hY2Nlc3M9MDsJCQkJLyogV3JpdGUgYWNjZXNzIGRpc2FibGVkICovCisKKwlzdHJjcHkgKGxhc3RfY29tbWFuZF9saW5lLCJoZWxwIik7CS8qIFNob3cgdGhlIGhlbHAgc2NyZWVuIHRvIHRoZSB1c2VyICovCisJZGlzcGF0Y2ggKCJoZWxwIik7CisJcmV0dXJuICgxKTsJCQkJLyogU3VjY2VzcyAqLworfQorCit2b2lkIGFkZF9nZW5lcmFsX2NvbW1hbmRzICh2b2lkKQorCit7CisJYWRkX3VzZXJfY29tbWFuZCAoJmdlbmVyYWxfY29tbWFuZHMsImhlbHAiLCJFWFQyRUQgaGVscCBzeXN0ZW0iLGhlbHApOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJzZXQiLCJDaGFuZ2VzIGEgdmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgb2JqZWN0IixzZXQpOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJzZXRkZXZpY2UiLCJTZWxlY3RzIHRoZSBmaWxlc3lzdGVtIGJsb2NrIGRldmljZSAoZS5nLiAvZGV2L2hkYTEpIixzZXRfZGV2aWNlKTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZ2VuZXJhbF9jb21tYW5kcywic2V0b2Zmc2V0IiwiTW92ZXMgYXN5bmNocm9uaWNseSBpbiB0aGUgZmlsZXN5c3RlbSIsc2V0X29mZnNldCk7CisJYWRkX3VzZXJfY29tbWFuZCAoJmdlbmVyYWxfY29tbWFuZHMsInNldHR5cGUiLCJUZWxscyBFWFQyRUQgaG93IHRvIGludGVycGVydCB0aGUgY3VycmVudCBvYmplY3QiLHNldF90eXBlKTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZ2VuZXJhbF9jb21tYW5kcywic2hvdyIsIkRpc3BsYXlzIHRoZSBjdXJyZW50IG9iamVjdCIsc2hvdyk7CisJYWRkX3VzZXJfY29tbWFuZCAoJmdlbmVyYWxfY29tbWFuZHMsInBndXAiLCJTY3JvbGxzIGRhdGEgb25lIHBhZ2UgdXAiLHBndXApOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJwZ2RuIiwiU2Nyb2xscyBkYXRhIG9uZSBwYWdlIGRvd24iLHBnZG4pOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJyZWRyYXciLCJSZWRpc3BsYXkgdGhlIHNjcmVlbiIscmVkcmF3KTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZ2VuZXJhbF9jb21tYW5kcywicmVtZW1iZXIiLCJTYXZlcyB0aGUgY3VycmVudCBwb3NpdGlvbiBhbmQgZGF0YSBpbmZvcm1hdGlvbiIscmVtZW1iZXIpOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJyZWNhbGwiLCJHZXRzIGJhY2sgdG8gdGhlIHNhdmVkIG9iamVjdCBwb3NpdGlvbiIscmVjYWxsKTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZ2VuZXJhbF9jb21tYW5kcywiZW5hYmxld3JpdGUiLCJFbnRlcnMgUmVhZC9Xcml0ZSBtb2RlIC0gQWxsb3dzIGNoYW5naW5nIHRoZSBmaWxlc3lzdGVtIixlbmFibGVfd3JpdGUpOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJkaXNhYmxld3JpdGUiLCJFbnRlcnMgcmVhZCBvbmx5IG1vZGUiLGRpc2FibGVfd3JpdGUpOworCWFkZF91c2VyX2NvbW1hbmQgKCZnZW5lcmFsX2NvbW1hbmRzLCJ3cml0ZWRhdGEiLCJXcml0ZSBkYXRhIGJhY2sgdG8gZGlzayIsd3JpdGVfZGF0YSk7CisJYWRkX3VzZXJfY29tbWFuZCAoJmdlbmVyYWxfY29tbWFuZHMsIm5leHQiLCJNb3ZlcyB0byB0aGUgbmV4dCBieXRlIGluIGhleCBtb2RlIixuZXh0KTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZ2VuZXJhbF9jb21tYW5kcywicHJldiIsIk1vdmVzIHRvIHRoZSBwcmV2aW91cyBieXRlIGluIGhleCBtb2RlIixwcmV2KTsKK30KKwordm9pZCBhZGRfZXh0Ml9nZW5lcmFsX2NvbW1hbmRzICh2b2lkKQorCit7CisJYWRkX3VzZXJfY29tbWFuZCAoJmV4dDJfY29tbWFuZHMsInN1cGVyIiwiTW92ZXMgdG8gdGhlIHN1cGVyYmxvY2sgb2YgdGhlIGZpbGVzeXN0ZW0iLHR5cGVfZXh0Ml9fX3N1cGVyKTsKKwlhZGRfdXNlcl9jb21tYW5kICgmZXh0Ml9jb21tYW5kcywiZ3JvdXAiLCJNb3ZlcyB0byB0aGUgZmlyc3QgZ3JvdXAgZGVzY3JpcHRvciIsdHlwZV9leHQyX19fZ3JvdXApOworCWFkZF91c2VyX2NvbW1hbmQgKCZleHQyX2NvbW1hbmRzLCJjZCIsIk1vdmVzIHRvIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIix0eXBlX2V4dDJfX19jZCk7Cit9CisKK2ludCBzZXRfc3RydWN0X2Rlc2NyaXB0b3JzIChjaGFyICpmaWxlX25hbWUpCisKK3sKKwlGSUxFICpmcDsKKwljaGFyIGN1cnJlbnRfbGluZSBbNTAwXSxjdXJyZW50X3dvcmQgWzUwXSwqY2g7CisJY2hhciB2YXJpYWJsZV9uYW1lIFs1MF0sdmFyaWFibGVfdHlwZSBbMjBdOworCXN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqY3VycmVudF9kZXNjcmlwdG9yOworCisJaWYgKCAoZnA9Zm9wZW4gKGZpbGVfbmFtZSwicnQiKSk9PU5VTEwpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gRmFpbGVkIHRvIG9wZW4gZGVzY3JpcHRvcnMgZmlsZSAlc1xuIixmaWxlX25hbWUpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOwlyZXR1cm4gKDApOworCX07CisKKwl3aGlsZSAoIWZlb2YgKGZwKSkgeworCQlmZ2V0cyAoY3VycmVudF9saW5lLDUwMCxmcCk7CisJCWlmIChmZW9mIChmcCkpIGJyZWFrOworCQljaD1wYXJzZV93b3JkIChjdXJyZW50X2xpbmUsY3VycmVudF93b3JkKTsKKwkJaWYgKHN0cmNtcCAoY3VycmVudF93b3JkLCJzdHJ1Y3QiKT09MCkgeworCQkJY2g9cGFyc2Vfd29yZCAoY2gsY3VycmVudF93b3JkKTsKKwkJCWN1cnJlbnRfZGVzY3JpcHRvcj1hZGRfbmV3X2Rlc2NyaXB0b3IgKGN1cnJlbnRfd29yZCk7CisKKwkJCXdoaWxlIChzdHJjaHIgKGN1cnJlbnRfbGluZSwneycpPT1OVUxMKSB7CisJCQkJZmdldHMgKGN1cnJlbnRfbGluZSw1MDAsZnApOworCQkJCWlmIChmZW9mIChmcCkpIGJyZWFrOworCQkJfTsKKwkJCWlmIChmZW9mIChmcCkpIGJyZWFrOworCisJCQlmZ2V0cyAoY3VycmVudF9saW5lLDUwMCxmcCk7CisKKwkJCXdoaWxlIChzdHJjaHIgKGN1cnJlbnRfbGluZSwnfScpPT1OVUxMKSB7CisJCQkJd2hpbGUgKHN0cmNociAoY3VycmVudF9saW5lLCc7Jyk9PU5VTEwpIHsKKwkJCQkJZmdldHMgKGN1cnJlbnRfbGluZSw1MDAsZnApOworCQkJCQlpZiAoc3RyY2hyIChjdXJyZW50X2xpbmUsJ30nKSE9TlVMTCkgYnJlYWs7CisJCQkJfTsKKwkJCQlpZiAoc3RyY2hyIChjdXJyZW50X2xpbmUsJ30nKSAhPU5VTEwpIGJyZWFrOworCQkJCWNoPXBhcnNlX3dvcmQgKGN1cnJlbnRfbGluZSx2YXJpYWJsZV90eXBlKTsKKwkJCQljaD1wYXJzZV93b3JkIChjaCx2YXJpYWJsZV9uYW1lKTsKKwkJCQl3aGlsZSAodmFyaWFibGVfbmFtZSBbc3RybGVuICh2YXJpYWJsZV9uYW1lKS0xXSE9JzsnKSB7CisJCQkJCXN0cmNweSAodmFyaWFibGVfdHlwZSx2YXJpYWJsZV9uYW1lKTsKKwkJCQkJY2g9cGFyc2Vfd29yZCAoY2gsdmFyaWFibGVfbmFtZSk7CisJCQkJfTsKKwkJCQl2YXJpYWJsZV9uYW1lIFtzdHJsZW4gKHZhcmlhYmxlX25hbWUpLTFdPTA7CisJCQkJYWRkX25ld192YXJpYWJsZSAoY3VycmVudF9kZXNjcmlwdG9yLHZhcmlhYmxlX3R5cGUsdmFyaWFibGVfbmFtZSk7CisJCQkJZmdldHMgKGN1cnJlbnRfbGluZSw1MDAsZnApOworCQkJfTsKKwkJfTsKKwl9OworCisJZmNsb3NlIChmcCk7CisJcmV0dXJuICgxKTsKK30KKwordm9pZCBmcmVlX3N0cnVjdF9kZXNjcmlwdG9ycyAodm9pZCkKKworeworCXN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqcHRyLCpuZXh0OworCisJcHRyPWZpcnN0X3R5cGU7CisJd2hpbGUgKHB0ciE9TlVMTCkgeworCQluZXh0PXB0ci0+bmV4dDsKKwkJZnJlZV91c2VyX2NvbW1hbmRzICgmcHRyLT50eXBlX2NvbW1hbmRzKTsKKwkJZnJlZSAocHRyKTsKKwkJcHRyPW5leHQ7CisJfQorCWZpcnN0X3R5cGU9bGFzdF90eXBlPWN1cnJlbnRfdHlwZT1OVUxMOworfQorCit2b2lkIGZyZWVfdXNlcl9jb21tYW5kcyAoc3RydWN0IHN0cnVjdF9jb21tYW5kcyAqcHRyKQorCit7CisJaW50IGk7CisKKwlmb3IgKGk9MDtpPD1wdHItPmxhc3RfY29tbWFuZDtpKyspIHsKKwkJZnJlZSAocHRyLT5uYW1lcyBbaV0pOworCQlmcmVlIChwdHItPmRlc2NyaXB0aW9ucyBbaV0pOworCX0KKworCXB0ci0+bGFzdF9jb21tYW5kPS0xOworfQorCitzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmFkZF9uZXdfZGVzY3JpcHRvciAoY2hhciAqbmFtZSkKKworeworCXN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvciAqcHRyOworCisJcHRyID0gbWFsbG9jIChzaXplb2YgKHN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvcikpOworCWlmIChwdHIgPT0gTlVMTCkgeworCQlwcmludGYgKCJFcnJvciAtIENhbiBub3QgYWxsb2NhdGUgbWVtb3J5IC0gUXVpdHRpbmdcbiIpOworCQlleGl0ICgxKTsKKwl9CisJbWVtc2V0KHB0ciwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfZGVzY3JpcHRvcikpOworCXB0ci0+cHJldiA9IHB0ci0+bmV4dCA9IE5VTEw7CisJc3RyY3B5IChwdHItPm5hbWUsbmFtZSk7CisJcHRyLT5sZW5ndGg9MDsKKwlwdHItPmZpZWxkc19udW09MDsKKwlpZiAoZmlyc3RfdHlwZT09TlVMTCkgeworCQlmaXJzdF90eXBlID0gbGFzdF90eXBlID0gcHRyOworCX0gZWxzZSB7CisJCXB0ci0+cHJldiA9IGxhc3RfdHlwZTsgbGFzdF90eXBlLT5uZXh0ID0gcHRyOyBsYXN0X3R5cGU9cHRyOworCX0KKwlwdHItPnR5cGVfY29tbWFuZHMubGFzdF9jb21tYW5kPS0xOworCWZpbGxfdHlwZV9jb21tYW5kcyAocHRyKTsKKwlyZXR1cm4gKHB0cik7Cit9CisKK3N0cnVjdCB0eXBlX3RhYmxlIHsKKwljaGFyIAkqbmFtZTsKKwlpbnQJZmllbGRfdHlwZTsKKwlpbnQJbGVuOworfTsKKworc3RydWN0IHR5cGVfdGFibGUgdHlwZV90YWJsZVtdID0geworCXsgImxvbmciLCAgIEZJRUxEX1RZUEVfSU5ULAk0IH0sCisJeyAic2hvcnQiLCAgRklFTERfVFlQRV9JTlQsCTIgfSwKKwl7ICJjaGFyIiwgICBGSUVMRF9UWVBFX0NIQVIsCTEgfSwKKwl7ICJfX3UzMiIsICBGSUVMRF9UWVBFX1VJTlQsCTQgfSwKKwl7ICJfX3MzMiIsICBGSUVMRF9UWVBFX0lOVCwJNCB9LAorCXsgIl9fdTE2IiwgIEZJRUxEX1RZUEVfVUlOVCwJMiB9LAorCXsgIl9fczE2IiwgIEZJRUxEX1RZUEVfSU5ULAkyIH0sCisJeyAiX191OCIsICAgRklFTERfVFlQRV9VSU5ULAkxIH0sCisJeyAiX19zOCIsICAgRklFTERfVFlQRV9JTlQsCTEgfSwKKwl7ICAwLCAgICAgICAwLCAgICAgICAgICAgICAgICAgIDAgfQorfTsKKwordm9pZCBhZGRfbmV3X3ZhcmlhYmxlIChzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKnB0cixjaGFyICp2X3R5cGUsY2hhciAqdl9uYW1lKQorCit7CisJc2hvcnQJbGVuPTE7CisJY2hhcglmaWVsZF90eXBlPUZJRUxEX1RZUEVfSU5UOworCXN0cnVjdCB0eXBlX3RhYmxlICpwOworCisJc3RyY3B5IChwdHItPmZpZWxkX25hbWVzIFtwdHItPmZpZWxkc19udW1dLHZfbmFtZSk7CisJcHRyLT5maWVsZF9wb3NpdGlvbnMgW3B0ci0+ZmllbGRzX251bV09cHRyLT5sZW5ndGg7CisKKwlmb3IgKHAgPSB0eXBlX3RhYmxlOyBwLT5uYW1lOyBwKyspIHsKKwkJaWYgKHN0cmNtcCh2X3R5cGUsIHAtPm5hbWUpID09IDApIHsKKwkJCWxlbiA9IHAtPmxlbjsKKwkJCWZpZWxkX3R5cGUgPSBwLT5maWVsZF90eXBlOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKHAtPm5hbWUgPT0gMCkgeworCQlpZiAoc3RybmNtcCh2X3R5cGUsICJjaGFyWyIsIDUpID09IDApIHsKKwkJCWxlbiA9IGF0b2kodl90eXBlKzUpOworCQkJZmllbGRfdHlwZSA9IEZJRUxEX1RZUEVfQ0hBUjsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZigiVW5rbm93biB0eXBlICVzIGZvciBmaWVsZCAlc1xuIiwgdl90eXBlLCB2X25hbWUpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCXB0ci0+ZmllbGRfbGVuZ3RocyBbcHRyLT5maWVsZHNfbnVtXSA9IGxlbjsKKwlwdHItPmZpZWxkX3R5cGVzIFtwdHItPmZpZWxkc19udW1dID0gZmllbGRfdHlwZTsKKworCXB0ci0+bGVuZ3RoKz1sZW47CisJcHRyLT5maWVsZHNfbnVtKys7Cit9CisKK3ZvaWQgZmlsbF90eXBlX2NvbW1hbmRzIChzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKnB0cikKKworLyoKKworU2V0IHNwZWNpZmljIHR5cGUgdXNlciBjb21tYW5kcy4KKworKi8KKworeworCisJaWYgKHN0cmNtcCAoKHB0ci0+bmFtZSksImZpbGUiKT09MCkgeworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJzaG93IiwiU2hvd3MgZmlsZSBkYXRhIix0eXBlX2ZpbGVfX19zaG93KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiaW5vZGUiLCJSZXR1cm5zIHRvIHRoZSBpbm9kZSBvZiB0aGUgY3VycmVudCBmaWxlIix0eXBlX2ZpbGVfX19pbm9kZSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImRpc3BsYXkiLCJTcGVjaWZpZXMgZGF0YSBmb3JtYXQgLSB0ZXh0IG9yIGhleCIsdHlwZV9maWxlX19fZGlzcGxheSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsIm5leHQiLCJQYXNzIHRvIG5leHQgYnl0ZSIsdHlwZV9maWxlX19fbmV4dCk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInByZXYiLCJQYXNzIHRvIHRoZSBwcmV2aW91cyBieXRlIix0eXBlX2ZpbGVfX19wcmV2KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywib2Zmc2V0IiwiUGFzcyB0byBhIHNwZWNpZmllZCBieXRlIGluIHRoZSBjdXJyZW50IGJsb2NrIix0eXBlX2ZpbGVfX19vZmZzZXQpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJuZXh0YmxvY2siLCJQYXNzIHRvIG5leHQgZmlsZSBibG9jayIsdHlwZV9maWxlX19fbmV4dGJsb2NrKTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywicHJldmJsb2NrIiwiUGFzcyB0byB0aGUgcHJldmlvdXMgZmlsZSBibG9jayIsdHlwZV9maWxlX19fcHJldmJsb2NrKTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiYmxvY2siLCJTcGVjaWZ5IHdoaWNoIGZpbGUgYmxvY2sgdG8gZWRpdCIsdHlwZV9maWxlX19fYmxvY2spOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJyZW1lbWJlciIsIlNhdmVzIHRoZSBmaWxlXCdzIGlub2RlIHBvc2l0aW9uIGZvciBsYXRlciByZWZlcmVuY2UiLHR5cGVfZmlsZV9fX3JlbWVtYmVyKTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywic2V0IiwiU2V0cyB0aGUgY3VycmVudCBieXRlIix0eXBlX2ZpbGVfX19zZXQpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJ3cml0ZWRhdGEiLCJXcml0ZXMgdGhlIGN1cnJlbnQgYmxvY2sgdG8gdGhlIGRpc2siLHR5cGVfZmlsZV9fX3dyaXRlZGF0YSk7CisJfQorCisJaWYgKHN0cmNtcCAoKHB0ci0+bmFtZSksImV4dDJfaW5vZGUiKT09MCkgeworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJzaG93IiwiU2hvd3MgaW5vZGUgZGF0YSIsdHlwZV9leHQyX2lub2RlX19fc2hvdyk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsIm5leHQiLCJNb3ZlIHRvIG5leHQgaW5vZGUgaW4gY3VycmVudCBibG9jayBncm91cCIsdHlwZV9leHQyX2lub2RlX19fbmV4dCk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInByZXYiLCJNb3ZlIHRvIG5leHQgaW5vZGUgaW4gY3VycmVudCBibG9jayBncm91cCIsdHlwZV9leHQyX2lub2RlX19fcHJldik7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImdyb3VwIiwiTW92ZSB0byB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgb2YgdGhlIGN1cnJlbnQgaW5vZGUgdGFibGUiLHR5cGVfZXh0Ml9pbm9kZV9fX2dyb3VwKTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiZW50cnkiLCJNb3ZlIHRvIGEgc3BlY2lmaWVkIGVudHJ5IGluIHRoZSBjdXJyZW50IGlub2RlIHRhYmxlIix0eXBlX2V4dDJfaW5vZGVfX19lbnRyeSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImZpbGUiLCJEaXNwbGF5IGZpbGUgZGF0YSBvZiB0aGUgY3VycmVudCBpbm9kZSIsdHlwZV9leHQyX2lub2RlX19fZmlsZSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImRpciIsIkRpc3BsYXkgZGlyZWN0b3J5IGRhdGEgb2YgdGhlIGN1cnJlbnQgaW5vZGUiLHR5cGVfZXh0Ml9pbm9kZV9fX2Rpcik7CisJfQorCisJaWYgKHN0cmNtcCAoKHB0ci0+bmFtZSksImRpciIpPT0wKSB7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInNob3ciLCJTaG93cyBjdXJyZW50IGRpcmVjdG9yeSBkYXRhIix0eXBlX2Rpcl9fX3Nob3cpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJpbm9kZSIsIlJldHVybnMgdG8gdGhlIGlub2RlIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeSIsdHlwZV9kaXJfX19pbm9kZSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsIm5leHQiLCJQYXNzIHRvIHRoZSBuZXh0IGRpcmVjdG9yeSBlbnRyeSIsdHlwZV9kaXJfX19uZXh0KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywicHJldiIsIlBhc3MgdG8gdGhlIHByZXZpb3VzIGRpcmVjdG9yeSBlbnRyeSIsdHlwZV9kaXJfX19wcmV2KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiZm9sbG93aW5vZGUiLCJGb2xsb3dzIHRoZSBpbm9kZSBzcGVjaWZpZWQgaW4gdGhpcyBkaXJlY3RvcnkgZW50cnkiLHR5cGVfZGlyX19fZm9sbG93aW5vZGUpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJyZW1lbWJlciIsIlJlbWVtYmVyIHRoZSBpbm9kZSBvZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgZW50cnkiLHR5cGVfZGlyX19fcmVtZW1iZXIpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJjZCIsIkNoYW5nZXMgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeSIsdHlwZV9kaXJfX19jZCk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImVudHJ5IiwiTW92ZXMgdG8gYSBzcGVjaWZpZWQgZW50cnkgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5Iix0eXBlX2Rpcl9fX2VudHJ5KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywid3JpdGVkYXRhIiwiV3JpdGVzIHRoZSBjdXJyZW50IGVudHJ5IHRvIHRoZSBkaXNrIix0eXBlX2Rpcl9fX3dyaXRlZGF0YSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInNldCIsIkNoYW5nZXMgYSB2YXJpYWJsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgZW50cnkiLHR5cGVfZGlyX19fc2V0KTsKKwl9CisKKwlpZiAoc3RyY21wICgocHRyLT5uYW1lKSwiZXh0Ml9zdXBlcl9ibG9jayIpPT0wKSB7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInNob3ciLCJEaXNwbGF5cyB0aGUgc3VwZXIgYmxvY2sgZGF0YSIsdHlwZV9leHQyX3N1cGVyX2Jsb2NrX19fc2hvdyk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImdvY29weSIsIk1vdmUgdG8gYW5vdGhlciBiYWNrdXAgY29weSBvZiB0aGUgc3VwZXJibG9jayIsdHlwZV9leHQyX3N1cGVyX2Jsb2NrX19fZ29jb3B5KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywic2V0YWN0aXZlY29weSIsIkNvcGllcyB0aGUgY3VycmVudCBzdXBlcmJsb2NrIHRvIHRoZSBtYWluIHN1cGVyYmxvY2siLHR5cGVfZXh0Ml9zdXBlcl9ibG9ja19fX3NldGFjdGl2ZWNvcHkpOworCX0KKworCWlmIChzdHJjbXAgKChwdHItPm5hbWUpLCJleHQyX2dyb3VwX2Rlc2MiKT09MCkgeworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJuZXh0IiwiUGFzcyB0byB0aGUgbmV4dCBibG9jayBncm91cCBkZWNyaXB0b3IiLHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fbmV4dCk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsInByZXYiLCJQYXNzIHRvIHRoZSBwcmV2aW91cyBncm91cCBkZXNjcmlwdG9yIix0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX3ByZXYpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJlbnRyeSIsIlBhc3MgdG8gYSBzcGVjaWZpYyBncm91cCBkZXNjcmlwdG9yIix0eXBlX2V4dDJfZ3JvdXBfZGVzY19fX2VudHJ5KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywic2hvdyIsIlNob3dzIHRoZSBjdXJyZW50IGdyb3VwIGRlc2NyaXB0b3IiLHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fc2hvdyk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImlub2RlIiwiUGFzcyB0byB0aGUgaW5vZGUgdGFibGUgb2YgdGhlIGN1cnJlbnQgZ3JvdXAgYmxvY2siLHR5cGVfZXh0Ml9ncm91cF9kZXNjX19faW5vZGUpOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJnb2NvcHkiLCJNb3ZlIHRvIGFub3RoZXIgYmFja3VwIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3IiLHR5cGVfZXh0Ml9ncm91cF9kZXNjX19fZ29jb3B5KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiYmxvY2tiaXRtYXAiLCJTaG93IHRoZSBibG9jayBhbGxvY2F0aW9uIGJpdG1hcCBvZiB0aGUgY3VycmVudCBncm91cCBibG9jayIsdHlwZV9leHQyX2dyb3VwX2Rlc2NfX19ibG9ja2JpdG1hcCk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImlub2RlYml0bWFwIiwiU2hvdyB0aGUgaW5vZGUgYWxsb2NhdGlvbiBiaXRtYXAgb2YgdGhlIGN1cnJlbnQgZ3JvdXAgYmxvY2siLHR5cGVfZXh0Ml9ncm91cF9kZXNjX19faW5vZGViaXRtYXApOworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJzZXRhY3RpdmVjb3B5IiwiQ29waWVzIHRoZSBjdXJyZW50IGdyb3VwIGRlc2NyaXB0b3IgdG8gdGhlIG1haW4gdGFibGUiLHR5cGVfZXh0Ml9zdXBlcl9ibG9ja19fX3NldGFjdGl2ZWNvcHkpOworCX0KKworCWlmIChzdHJjbXAgKChwdHItPm5hbWUpLCJibG9ja19iaXRtYXAiKT09MCkgeworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJzaG93IiwiRGlzcGxheXMgdGhlIGJsb2NrIGFsbG9jYXRpb24gYml0bWFwIix0eXBlX2V4dDJfYmxvY2tfYml0bWFwX19fc2hvdyk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImVudHJ5IiwiTW92ZXMgdG8gYSBzcGVjaWZpYyBiaXQiLHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19lbnRyeSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsIm5leHQiLCJNb3ZlcyB0byB0aGUgbmV4dCBiaXQiLHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19uZXh0KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywicHJldiIsIk1vdmVzIHRvIHRoZSBwcmV2aW91cyBiaXQiLHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19wcmV2KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiYWxsb2NhdGUiLCJBbGxvY2F0ZXMgdGhlIGN1cnJlbnQgYmxvY2siLHR5cGVfZXh0Ml9ibG9ja19iaXRtYXBfX19hbGxvY2F0ZSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImRlYWxsb2NhdGUiLCJEZWFsbG9jYXRlcyB0aGUgY3VycmVudCBibG9jayIsdHlwZV9leHQyX2Jsb2NrX2JpdG1hcF9fX2RlYWxsb2NhdGUpOworCX0KKworCWlmIChzdHJjbXAgKChwdHItPm5hbWUpLCJpbm9kZV9iaXRtYXAiKT09MCkgeworCQlhZGRfdXNlcl9jb21tYW5kICgmcHRyLT50eXBlX2NvbW1hbmRzLCJzaG93IiwiRGlzcGxheXMgdGhlIGlub2RlIGFsbG9jYXRpb24gYml0bWFwIix0eXBlX2V4dDJfaW5vZGVfYml0bWFwX19fc2hvdyk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImVudHJ5IiwiTW92ZXMgdG8gYSBzcGVjaWZpYyBiaXQiLHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19lbnRyeSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsIm5leHQiLCJNb3ZlcyB0byB0aGUgbmV4dCBiaXQiLHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19uZXh0KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywicHJldiIsIk1vdmVzIHRvIHRoZSBwcmV2aW91cyBiaXQiLHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19wcmV2KTsKKwkJYWRkX3VzZXJfY29tbWFuZCAoJnB0ci0+dHlwZV9jb21tYW5kcywiYWxsb2NhdGUiLCJBbGxvY2F0ZXMgdGhlIGN1cnJlbnQgaW5vZGUiLHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19hbGxvY2F0ZSk7CisJCWFkZF91c2VyX2NvbW1hbmQgKCZwdHItPnR5cGVfY29tbWFuZHMsImRlYWxsb2NhdGUiLCJEZWFsbG9jYXRlcyB0aGUgY3VycmVudCBpbm9kZSIsdHlwZV9leHQyX2lub2RlX2JpdG1hcF9fX2RlYWxsb2NhdGUpOworCX0KKworfQorCit2b2lkIGFkZF91c2VyX2NvbW1hbmQgKHN0cnVjdCBzdHJ1Y3RfY29tbWFuZHMgKnB0cixjaGFyICpuYW1lLGNoYXIgKmRlc2NyaXB0aW9uLFBGIGNhbGxiYWNrKQorCit7CisJaW50IG51bTsKKworCW51bT1wdHItPmxhc3RfY29tbWFuZDsKKwlpZiAobnVtKzE9PU1BWF9DT01NQU5EU19OVU0pIHsKKwkJcHJpbnRmICgiSW50ZXJuYWwgRXJyb3IgLSBDYW4ndCBhZGQgY29tbWFuZCAlc1xuIixuYW1lKTsKKwkJcmV0dXJuOworCX0KKworCXB0ci0+bGFzdF9jb21tYW5kPSsrbnVtOworCisJcHRyLT5uYW1lcyBbbnVtXT0oY2hhciAqKSBtYWxsb2MgKHN0cmxlbiAobmFtZSkrMSk7CisJc3RyY3B5IChwdHItPm5hbWVzIFtudW1dLG5hbWUpOworCisJaWYgKCpkZXNjcmlwdGlvbiE9MCkgeworCQlwdHItPmRlc2NyaXB0aW9ucyBbbnVtXT0oY2hhciAqKSBtYWxsb2MgKHN0cmxlbiAoZGVzY3JpcHRpb24pKzEpOworCQlzdHJjcHkgKHB0ci0+ZGVzY3JpcHRpb25zIFtudW1dLGRlc2NyaXB0aW9uKTsKKwl9CisKKwlwdHItPmNhbGxiYWNrIFtudW1dPWNhbGxiYWNrOworfQorCitpbnQgc2V0X2ZpbGVfc3lzdGVtX2luZm8gKHZvaWQpCisKK3sKKwlpbnQgZXh0Ml9kZXRlY3RlZD0wOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYjsKKworCWZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2tfb2Zmc2V0PTEwMjQ7CisJZmlsZV9zeXN0ZW1faW5mby5maWxlX3N5c3RlbV9zaXplPURlZmF1bHRUb3RhbEJsb2NrcypEZWZhdWx0QmxvY2tTaXplOworCisJbG93X3JlYWQgKChjaGFyICopICZmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLHNpemVvZiAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2spLGZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2tfb2Zmc2V0KTsKKworCXNiPSZmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrOworCisJaWYgKHNiLT5zX21hZ2ljID09IEVYVDJfU1VQRVJfTUFHSUMpCisJCWV4dDJfZGV0ZWN0ZWQ9MTsKKworCWlmIChleHQyX2RldGVjdGVkKQorCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRGV0ZWN0ZWQgZXh0ZW5kZWQgMiBmaWxlIHN5c3RlbSBvbiBkZXZpY2UgJXNcbiIsZGV2aWNlX25hbWUpOworCWVsc2UKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIldhcm5pbmcgLSBFeHRlbmRlZCAyIGZpbGVzeXN0ZW0gbm90IGRldGVjdGVkIG9uIGRldmljZSAlc1xuIixkZXZpY2VfbmFtZSk7CisKKwlpZiAoIWV4dDJfZGV0ZWN0ZWQgJiYgIUZvcmNlRXh0MikKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIllvdSBtYXkgd2lzaCB0byB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIEZvcmNlRXh0MiBvblxuIik7CisKKwlpZiAoRm9yY2VFeHQyICYmICFleHQyX2RldGVjdGVkKQorCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRm9yY2luZyBleHRlbmRlZCAyIGZpbGVzeXN0ZW1cbiIpOworCisJaWYgKEZvcmNlRGVmYXVsdCB8fCAhZXh0Ml9kZXRlY3RlZCkKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkZvcmNpbmcgZGVmYXVsdCBwYXJhbWV0ZXJzXG4iKTsKKworCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisKKwlpZiAoZXh0Ml9kZXRlY3RlZCB8fCBGb3JjZUV4dDIpIHsKKwkJYWRkX2V4dDJfZ2VuZXJhbF9jb21tYW5kcyAoKTsKKwkJaWYgKCFzZXRfc3RydWN0X2Rlc2NyaXB0b3JzIChFeHQyRGVzY3JpcHRvcnMpKQorCQkJcmV0dXJuICgwKTsKKwl9CisKKwlpZiAoIUZvcmNlRGVmYXVsdCAmJiBleHQyX2RldGVjdGVkKSB7CisKKwkJZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplPUVYVDJfTUlOX0JMT0NLX1NJWkUgPDwgc2ItPnNfbG9nX2Jsb2NrX3NpemU7CisJCWlmIChmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUgPT0gRVhUMl9NSU5fQkxPQ0tfU0laRSkKKwkJCWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQ9MipFWFQyX01JTl9CTE9DS19TSVpFOworCQllbHNlCisJCQlmaWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKwkJZmlsZV9zeXN0ZW1faW5mby5ncm91cHNfY291bnQgPSBleHQyZnNfZGl2NjRfY2VpbChleHQyZnNfYmxvY2tzX2NvdW50KHNiKSwKKwkJCQkJCSBzYi0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKworCQlmaWxlX3N5c3RlbV9pbmZvLmlub2Rlc19wZXJfYmxvY2s9ZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplL3NpemVvZiAoc3RydWN0IGV4dDJfaW5vZGUpOworCQlmaWxlX3N5c3RlbV9pbmZvLmJsb2Nrc19wZXJfZ3JvdXA9c2ItPnNfaW5vZGVzX3Blcl9ncm91cC9maWxlX3N5c3RlbV9pbmZvLmlub2Rlc19wZXJfYmxvY2s7CisJCWZpbGVfc3lzdGVtX2luZm8ubm9fYmxvY2tzX2luX2dyb3VwPXNiLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCWZpbGVfc3lzdGVtX2luZm8uZmlsZV9zeXN0ZW1fc2l6ZT0oZXh0MmZzX2Jsb2Nrc19jb3VudChzYiktMSkqZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCX0KKworCWVsc2UgeworCQlmaWxlX3N5c3RlbV9pbmZvLmZpbGVfc3lzdGVtX3NpemU9RGVmYXVsdFRvdGFsQmxvY2tzKkRlZmF1bHRCbG9ja1NpemU7CisJCWZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZT1EZWZhdWx0QmxvY2tTaXplOworCQlmaWxlX3N5c3RlbV9pbmZvLm5vX2Jsb2Nrc19pbl9ncm91cD1EZWZhdWx0QmxvY2tzSW5Hcm91cDsKKwl9CisKKwlpZiAoZmlsZV9zeXN0ZW1faW5mby5maWxlX3N5c3RlbV9zaXplID4gMjE0NzQ4MzY0NykgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiU29ycnksIGZpbGVzeXN0ZW1zIGJpZ2dlciB0aGFuIDIgR0IgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJcmV0dXJuICgwKTsKKwl9CisJcmV0dXJuICgxKTsKK30KKwordm9pZCBpbml0X3JlYWRsaW5lICh2b2lkKQorCit7CisjaWZkZWYgSEFWRV9SRUFETElORQorCXJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb249KEZ1bmN0aW9uICopIGNvbXBsZXRlX2NvbW1hbmQ7CisjZW5kaWYKK30KKwordm9pZCBpbml0X3NpZ25hbHMgKHZvaWQpCisKK3sKKwlzaWduYWwgKFNJR1dJTkNILCBzaWduYWxfU0lHV0lOQ0hfaGFuZGxlcik7CS8qIENhdGNoIFNJR1dJTkNIICovCisJc2lnbmFsIChTSUdURVJNLCBzaWduYWxfU0lHVEVSTV9oYW5kbGVyKTsKKwlzaWduYWwgKFNJR1NFR1YsIHNpZ25hbF9TSUdTRUdWX2hhbmRsZXIpOworCit9CisKK3ZvaWQgc2lnbmFsX1NJR1dJTkNIX2hhbmRsZXIgKGludCBzaWdfbnVtKQorCit7CisJcmVkcmF3X3JlcXVlc3Q9MTsJLyogV2Ugd2lsbCBoYW5kbGUgaXQgaW4gbWFpbi5jICovCisKKwkvKiBSZXNldCBzaWduYWwgaGFuZGxlciAqLworCXNpZ25hbCAoU0lHV0lOQ0gsIHNpZ25hbF9TSUdXSU5DSF9oYW5kbGVyKTsKKworfQorCit2b2lkIHNpZ25hbF9TSUdURVJNX2hhbmRsZXIgKGludCBzaWdfbnVtKQorCit7CisJcHJlcGFyZV90b19jbG9zZSAoKTsKKwlwcmludGYgKCJUZXJtaW5hdGVkIGR1ZSB0byBzaWduYWwgJWRcbiIsc2lnX251bSk7CisJZXhpdCAoMSk7Cit9CisKK3ZvaWQgc2lnbmFsX1NJR1NFR1ZfaGFuZGxlciAoaW50IHNpZ19udW0pCisKK3sKKwlwcmVwYXJlX3RvX2Nsb3NlICgpOworCXByaW50ZiAoIktpbGxlZCBieSBzaWduYWwgJWQhXG4iLHNpZ19udW0pOworCWV4aXQgKDEpOworfQorCitpbnQgcHJvY2Vzc19jb25maWd1cmF0aW9uX2ZpbGUgKHZvaWQpCisKK3sKKwljaGFyIGJ1ZmZlciBbMzAwXTsKKwljaGFyIG9wdGlvbiBbODBdLHZhbHVlIFs4MF07CisJRklMRSAqZnA7CisKKwlzdHJjcHkgKGJ1ZmZlciwgUk9PVF9TWVNDT05GRElSKTsKKwlzdHJjYXQgKGJ1ZmZlciwiL2V4dDJlZC5jb25mIik7CisKKwlpZiAoKGZwPWZvcGVuIChidWZmZXIsInJ0IikpPT1OVUxMKSB7CisJCWZwcmludGYgKHN0ZGVyciwiRXJyb3IgLSBVbmFibGUgdG8gb3BlbiBjb25maWd1cmF0aW9uIGZpbGUgJXNcbiIsYnVmZmVyKTsKKwkJcmV0dXJuICgwKTsKKwl9CisKKwl3aGlsZSAoZ2V0X25leHRfb3B0aW9uIChmcCxvcHRpb24sdmFsdWUpKSB7CisJCWlmIChzdHJjYXNlY21wIChvcHRpb24sIkV4dDJEZXNjcmlwdG9ycyIpPT0wKSB7CisJCQlzdHJjcHkgKEV4dDJEZXNjcmlwdG9ycyx2YWx1ZSk7CisJCX0KKworCQllbHNlIGlmIChzdHJjYXNlY21wIChvcHRpb24sIkFsdGVybmF0ZURlc2NyaXB0b3JzIik9PTApIHsKKwkJCXN0cmNweSAoQWx0ZXJuYXRlRGVzY3JpcHRvcnMsdmFsdWUpOworCQl9CisKKwkJZWxzZSBpZiAoc3RyY2FzZWNtcCAob3B0aW9uLCJMb2dGaWxlIik9PTApIHsKKwkJCXN0cmNweSAoTG9nRmlsZSx2YWx1ZSk7CisJCX0KKworCQllbHNlIGlmIChzdHJjYXNlY21wIChvcHRpb24sIkxvZ0NoYW5nZXMiKT09MCkgeworCQkJaWYgKHN0cmNhc2VjbXAgKHZhbHVlLCJvbiIpPT0wKQorCQkJCUxvZ0NoYW5nZXMgPSAxOworCQkJZWxzZSBpZiAoc3RyY2FzZWNtcCAodmFsdWUsIm9mZiIpPT0wKQorCQkJCUxvZ0NoYW5nZXMgPSAwOworCQkJZWxzZSB7CisJCQkJZnByaW50ZiAoc3RkZXJyLCJFcnJvciAtIElsbGVnYWwgdmFsdWU6ICVzICVzXG4iLG9wdGlvbix2YWx1ZSk7CisJCQkJZmNsb3NlIChmcCk7cmV0dXJuICgwKTsKKwkJCX0KKwkJfQorCisJCWVsc2UgaWYgKHN0cmNhc2VjbXAgKG9wdGlvbiwiQWxsb3dDaGFuZ2VzIik9PTApIHsKKwkJCWlmIChzdHJjYXNlY21wICh2YWx1ZSwib24iKT09MCkKKwkJCQlBbGxvd0NoYW5nZXMgPSAxOworCQkJZWxzZSBpZiAoc3RyY2FzZWNtcCAodmFsdWUsIm9mZiIpPT0wKQorCQkJCUFsbG93Q2hhbmdlcyA9IDA7CisJCQllbHNlIHsKKwkJCQlmcHJpbnRmIChzdGRlcnIsIkVycm9yIC0gSWxsZWdhbCB2YWx1ZTogJXMgJXNcbiIsb3B0aW9uLHZhbHVlKTsKKwkJCQlmY2xvc2UgKGZwKTtyZXR1cm4gKDApOworCQkJfQorCQl9CisKKwkJZWxzZSBpZiAoc3RyY2FzZWNtcCAob3B0aW9uLCJBbGxvd01vdW50ZWRSZWFkIik9PTApIHsKKwkJCWlmIChzdHJjYXNlY21wICh2YWx1ZSwib24iKT09MCkKKwkJCQlBbGxvd01vdW50ZWRSZWFkID0gMTsKKwkJCWVsc2UgaWYgKHN0cmNhc2VjbXAgKHZhbHVlLCJvZmYiKT09MCkKKwkJCQlBbGxvd01vdW50ZWRSZWFkID0gMDsKKwkJCWVsc2UgeworCQkJCWZwcmludGYgKHN0ZGVyciwiRXJyb3IgLSBJbGxlZ2FsIHZhbHVlOiAlcyAlc1xuIixvcHRpb24sdmFsdWUpOworCQkJCWZjbG9zZSAoZnApO3JldHVybiAoMCk7CisJCQl9CisJCX0KKworCQllbHNlIGlmIChzdHJjYXNlY21wIChvcHRpb24sIkZvcmNlRXh0MiIpPT0wKSB7CisJCQlpZiAoc3RyY2FzZWNtcCAodmFsdWUsIm9uIik9PTApCisJCQkJRm9yY2VFeHQyID0gMTsKKwkJCWVsc2UgaWYgKHN0cmNhc2VjbXAgKHZhbHVlLCJvZmYiKT09MCkKKwkJCQlGb3JjZUV4dDIgPSAwOworCQkJZWxzZSB7CisJCQkJZnByaW50ZiAoc3RkZXJyLCJFcnJvciAtIElsbGVnYWwgdmFsdWU6ICVzICVzXG4iLG9wdGlvbix2YWx1ZSk7CisJCQkJZmNsb3NlIChmcCk7cmV0dXJuICgwKTsKKwkJCX0KKwkJfQorCisJCWVsc2UgaWYgKHN0cmNhc2VjbXAgKG9wdGlvbiwiRGVmYXVsdEJsb2NrU2l6ZSIpPT0wKSB7CisJCQlEZWZhdWx0QmxvY2tTaXplID0gYXRvaSAodmFsdWUpOworCQl9CisKKwkJZWxzZSBpZiAoc3RyY2FzZWNtcCAob3B0aW9uLCJEZWZhdWx0VG90YWxCbG9ja3MiKT09MCkgeworCQkJRGVmYXVsdFRvdGFsQmxvY2tzID0gc3RydG91bCAodmFsdWUsTlVMTCwxMCk7CisJCX0KKworCQllbHNlIGlmIChzdHJjYXNlY21wIChvcHRpb24sIkRlZmF1bHRCbG9ja3NJbkdyb3VwIik9PTApIHsKKwkJCURlZmF1bHRCbG9ja3NJbkdyb3VwID0gc3RydG91bCAodmFsdWUsTlVMTCwxMCk7CisJCX0KKworCQllbHNlIGlmIChzdHJjYXNlY21wIChvcHRpb24sIkZvcmNlRGVmYXVsdCIpPT0wKSB7CisJCQlpZiAoc3RyY2FzZWNtcCAodmFsdWUsIm9uIik9PTApCisJCQkJRm9yY2VEZWZhdWx0ID0gMTsKKwkJCWVsc2UgaWYgKHN0cmNhc2VjbXAgKHZhbHVlLCJvZmYiKT09MCkKKwkJCQlGb3JjZURlZmF1bHQgPSAwOworCQkJZWxzZSB7CisJCQkJZnByaW50ZiAoc3RkZXJyLCJFcnJvciAtIElsbGVnYWwgdmFsdWU6ICVzICVzXG4iLG9wdGlvbix2YWx1ZSk7CisJCQkJZmNsb3NlIChmcCk7cmV0dXJuICgwKTsKKwkJCX0KKwkJfQorCisJCWVsc2UgeworCQkJZnByaW50ZiAoc3RkZXJyLCJFcnJvciAtIFVua25vd24gb3B0aW9uOiAlc1xuIixvcHRpb24pOworCQkJZmNsb3NlIChmcCk7cmV0dXJuICgwKTsKKwkJfQorCX0KKworCXByaW50ZiAoIkNvbmZpZ3VyYXRpb24gY29tcGxldGVkXG4iKTsKKwlmY2xvc2UgKGZwKTsKKwlyZXR1cm4gKDEpOworfQorCitpbnQgZ2V0X25leHRfb3B0aW9uIChGSUxFICpmcCxjaGFyICpvcHRpb24sY2hhciAqdmFsdWUpCisKK3sKKwljaGFyICpwdHI7CisJY2hhciBidWZmZXIgWzYwMF07CisKKwlpZiAoZmVvZiAoZnApKSByZXR1cm4gKDApOworCWRveworCQlpZiAoZmVvZiAoZnApKSByZXR1cm4gKDApOworCQlmZ2V0cyAoYnVmZmVyLDUwMCxmcCk7CisJfSB3aGlsZSAoYnVmZmVyIFswXT09JyMnIHx8IGJ1ZmZlciBbMF09PSdcbicpOworCisJcHRyPXBhcnNlX3dvcmQgKGJ1ZmZlcixvcHRpb24pOworCXB0cj1wYXJzZV93b3JkIChwdHIsdmFsdWUpOworCXJldHVybiAoMSk7Cit9CisKK3ZvaWQgY2hlY2tfbW91bnRlZCAoY2hhciAqbmFtZSkKKworeworCUZJTEUgKmZwOworCWNoYXIgKnB0cjsKKwljaGFyIGN1cnJlbnRfbGluZSBbNTAwXSxjdXJyZW50X3dvcmQgWzIwMF07CisKKwltb3VudGVkPTA7CisKKwlpZiAoIChmcD1mb3BlbiAoIi9ldGMvbXRhYiIsInJ0IikpPT1OVUxMKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEZhaWxlZCB0byBvcGVuIC9ldGMvbXRhYi4gQXNzdW1pbmcgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7bW91bnRlZD0xO3JldHVybjsKKwl9OworCisJd2hpbGUgKCFmZW9mIChmcCkpIHsKKwkJZmdldHMgKGN1cnJlbnRfbGluZSw1MDAsZnApOworCQlpZiAoZmVvZiAoZnApKSBicmVhazsKKwkJcHRyPXBhcnNlX3dvcmQgKGN1cnJlbnRfbGluZSxjdXJyZW50X3dvcmQpOworCQlpZiAoc3RyY2FzZWNtcCAoY3VycmVudF93b3JkLG5hbWUpPT0wKSB7CisJCQltb3VudGVkPTE7ZmNsb3NlIChmcCk7cmV0dXJuOworCQl9CisJfTsKKworCWZjbG9zZSAoZnApOworCisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9pbm9kZV9jb20uYyBiL2UyZnNwcm9ncy9leHQyZWQvaW5vZGVfY29tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQzZGQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvaW5vZGVfY29tLmMKQEAgLTAsMCArMSw0MzcgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9pbm9kZV9jb20uYworCitBIHBhcnQgb2YgdGhlIGV4dGVuZGVkIGZpbGUgc3lzdGVtIDIgZGlzayBlZGl0b3IuCisKK0NvbW1hbmRzIHJlbGV2YW50IHRvIGV4dDJfaW5vZGUgdHlwZS4KKworRmlyc3Qgd3JpdHRlbiBvbjogQXByaWwgOSAxOTk1CisKK0NvcHlyaWdodCAoQykgMTk5NSBHYWRpIE94bWFuCisKKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJlZC5oIgorCit2b2lkIHR5cGVfZXh0Ml9pbm9kZV9fX3ByZXYgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJbG9uZyBncm91cF9udW0sZ3JvdXBfb2Zmc2V0LGVudHJ5X251bSxibG9ja19udW0sZmlyc3RfZW50cnksbGFzdF9lbnRyeTsKKwlsb25nIGlub2RlX251bSxtdWx0PTE7CisJc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyBkZXNjOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQltdWx0PWF0b2wgKGJ1ZmZlcik7CisJfQorCisJYmxvY2tfbnVtPWRldmljZV9vZmZzZXQvZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJZ3JvdXBfbnVtPWlub2RlX29mZnNldF90b19ncm91cF9udW0gKGRldmljZV9vZmZzZXQpOworCWdyb3VwX29mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0K2dyb3VwX251bSpzaXplb2YgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpOworCisJbG93X3JlYWQgKChjaGFyICopICZkZXNjLHNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyksZ3JvdXBfb2Zmc2V0KTsKKworCWVudHJ5X251bT0oZGV2aWNlX29mZnNldC1kZXNjLmJnX2lub2RlX3RhYmxlKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkvc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9pbm9kZSk7CisKKwlmaXJzdF9lbnRyeT0wO2xhc3RfZW50cnk9ZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXAtMTsKKwlpbm9kZV9udW09MDsKKworCWlmIChlbnRyeV9udW0tbXVsdCsxPjApIHsKKwkJZGV2aWNlX29mZnNldC09c2l6ZW9mIChzdHJ1Y3QgZXh0Ml9pbm9kZSkqbXVsdDsKKwkJZW50cnlfbnVtLT1tdWx0OworCisJCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIsZGV2aWNlX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJCXN0cmNweSAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJZWxzZSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVudHJ5IG91dCBvZiBsaW1pdHNcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorCisJaWYgKGVudHJ5X251bT09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiUmVhY2hlZCBmaXJzdCBpbm9kZSBpbiBjdXJyZW50IGdyb3VwIGRlc2NyaXB0b3JcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KK30KKwordm9pZCB0eXBlX2V4dDJfaW5vZGVfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCWxvbmcgZ3JvdXBfbnVtLGdyb3VwX29mZnNldCxlbnRyeV9udW0sYmxvY2tfbnVtLGZpcnN0X2VudHJ5LGxhc3RfZW50cnk7CisJbG9uZyBpbm9kZV9udW0sbXVsdD0xOworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgZGVzYzsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKworCWlmICgqcHRyIT0wKSB7CisJCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKwkJbXVsdD1hdG9sIChidWZmZXIpOworCX0KKworCisJYmxvY2tfbnVtPWRldmljZV9vZmZzZXQvZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJZ3JvdXBfbnVtPWlub2RlX29mZnNldF90b19ncm91cF9udW0gKGRldmljZV9vZmZzZXQpOworCWdyb3VwX29mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0K2dyb3VwX251bSpzaXplb2YgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpOworCisJbG93X3JlYWQgKChjaGFyICopICZkZXNjLHNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyksZ3JvdXBfb2Zmc2V0KTsKKworCWVudHJ5X251bT0oZGV2aWNlX29mZnNldC1kZXNjLmJnX2lub2RlX3RhYmxlKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZSkvc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9pbm9kZSk7CisKKwlmaXJzdF9lbnRyeT0wO2xhc3RfZW50cnk9ZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXAtMTsKKwlpbm9kZV9udW09MDsKKworCWlmIChlbnRyeV9udW0rbXVsdC0xPGxhc3RfZW50cnkpIHsKKwkJZGV2aWNlX29mZnNldCs9c2l6ZW9mIChzdHJ1Y3QgZXh0Ml9pbm9kZSkqbXVsdDsKKwkJZW50cnlfbnVtKz1tdWx0OworCisJCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIsZGV2aWNlX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJCXN0cmNweSAoYnVmZmVyLCJzaG93Iik7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorCisJZWxzZSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIEVudHJ5IG91dCBvZiBsaW1pdHNcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorCisJaWYgKGVudHJ5X251bT09bGFzdF9lbnRyeSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiUmVhY2hlZCBsYXN0IGlub2RlIGluIGN1cnJlbnQgZ3JvdXAgZGVzY3JpcHRvclxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorfQorCisKK3ZvaWQgdHlwZV9leHQyX2lub2RlX19fc2hvdyAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlX3B0cjsKKworCXVuc2lnbmVkIHNob3J0IHRlbXA7CisJaW50IGk7CisKKwlsb25nIGdyb3VwX251bSxncm91cF9vZmZzZXQsZW50cnlfbnVtLGJsb2NrX251bSxmaXJzdF9lbnRyeSxsYXN0X2VudHJ5LGlub2RlX251bTsKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjIGRlc2M7CisKKwlibG9ja19udW09ZGV2aWNlX29mZnNldC9maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisKKwlncm91cF9udW09aW5vZGVfb2Zmc2V0X3RvX2dyb3VwX251bSAoZGV2aWNlX29mZnNldCk7CisJZ3JvdXBfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQrZ3JvdXBfbnVtKnNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisKKwlsb3dfcmVhZCAoKGNoYXIgKikgJmRlc2Msc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjKSxncm91cF9vZmZzZXQpOworCisJZW50cnlfbnVtPShkZXZpY2Vfb2Zmc2V0LWRlc2MuYmdfaW5vZGVfdGFibGUqZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplKS9zaXplb2YgKHN0cnVjdCBleHQyX2lub2RlKTsKKwlmaXJzdF9lbnRyeT0wO2xhc3RfZW50cnk9ZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXAtMTsKKwlpbm9kZV9udW09Z3JvdXBfbnVtKmZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19pbm9kZXNfcGVyX2dyb3VwKzE7CisJaW5vZGVfbnVtKz1lbnRyeV9udW07CisKKwlpbm9kZV9wdHI9JnR5cGVfZGF0YS51LnRfZXh0Ml9pbm9kZTsKKworCXNob3cgKGNvbW1hbmRfbGluZSk7CisKKwl3bW92ZSAoc2hvd19wYWQsMCw0MCk7d3ByaW50dyAoc2hvd19wYWQsIm9jdGFsID0gJTA2byAiLGlub2RlX3B0ci0+aV9tb2RlKTsKKwlmb3IgKGk9NjtpPj0wO2ktPTMpIHsKKwkJdGVtcD1pbm9kZV9wdHItPmlfbW9kZSAmIDB4MWZmOworCQl0ZW1wPXRlbXAgPj4gaTsKKwkJaWYgKHRlbXAgJiA0KQorCQkJd3ByaW50dyAoc2hvd19wYWQsInIiKTsKKwkJZWxzZQorCQkJd3ByaW50dyAoc2hvd19wYWQsIi0iKTsKKworCQlpZiAodGVtcCAmIDIpCisJCQl3cHJpbnR3IChzaG93X3BhZCwidyIpOworCQllbHNlCisJCQl3cHJpbnR3IChzaG93X3BhZCwiLSIpOworCisJCWlmICh0ZW1wICYgMSkKKwkJCXdwcmludHcgKHNob3dfcGFkLCJ4Iik7CisJCWVsc2UKKwkJCXdwcmludHcgKHNob3dfcGFkLCItIik7CisJfQorCXdtb3ZlIChzaG93X3BhZCwzLDQwKTt3cHJpbnR3IChzaG93X3BhZCwiJXMiLGN0aW1lICgodGltZV90ICopICZ0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9hdGltZSkpOworCXdtb3ZlIChzaG93X3BhZCw0LDQwKTt3cHJpbnR3IChzaG93X3BhZCwiJXMiLGN0aW1lICgodGltZV90ICopICZ0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9jdGltZSkpOworCXdtb3ZlIChzaG93X3BhZCw1LDQwKTt3cHJpbnR3IChzaG93X3BhZCwiJXMiLGN0aW1lICgodGltZV90ICopICZ0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tdGltZSkpOworCXdtb3ZlIChzaG93X3BhZCw2LDQwKTt3cHJpbnR3IChzaG93X3BhZCwiJXMiLGN0aW1lICgodGltZV90ICopICZ0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9kdGltZSkpOworCisJd21vdmUgKHNob3dfcGFkLDEwLDQwKTsKKwl0ZW1wPWlub2RlX3B0ci0+aV9mbGFnczsKKworCWlmICh0ZW1wICYgRVhUMl9TRUNSTV9GTCkKKwkJd3ByaW50dyAoc2hvd19wYWQsInMiKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfcGFkLCItIik7CisKKworCWlmICh0ZW1wICYgRVhUMl9VTlJNX0ZMKQorCQl3cHJpbnR3IChzaG93X3BhZCwidSIpOworCWVsc2UKKwkJd3ByaW50dyAoc2hvd19wYWQsIi0iKTsKKworCWlmICh0ZW1wICYgRVhUMl9DT01QUl9GTCkKKwkJd3ByaW50dyAoc2hvd19wYWQsImMiKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfcGFkLCItIik7CisKKwlpZiAodGVtcCAmIEVYVDJfU1lOQ19GTCkKKwkJd3ByaW50dyAoc2hvd19wYWQsIlMiKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfcGFkLCItIik7CisKKwlpZiAodGVtcCAmIEVYVDJfSU1NVVRBQkxFX0ZMKQorCQl3cHJpbnR3IChzaG93X3BhZCwiaSIpOworCWVsc2UKKwkJd3ByaW50dyAoc2hvd19wYWQsIi0iKTsKKworCWlmICh0ZW1wICYgRVhUMl9BUFBFTkRfRkwpCisJCXdwcmludHcgKHNob3dfcGFkLCJhIik7CisJZWxzZQorCQl3cHJpbnR3IChzaG93X3BhZCwiLSIpOworCisJaWYgKHRlbXAgJiBFWFQyX05PRFVNUF9GTCkKKwkJd3ByaW50dyAoc2hvd19wYWQsImQiKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfcGFkLCItIik7CisKKwlyZWZyZXNoX3Nob3dfcGFkICgpOworCisJd21vdmUgKHNob3dfd2luLDEsMCk7CisKKwl3cHJpbnR3IChzaG93X3dpbiwiSW5vZGUgJWxkIG9mICVsZC4gRW50cnkgJWxkIG9mICVsZCBpbiBncm91cCBkZXNjcmlwdG9yICVsZC5cbiIKKwkJLGlub2RlX251bSxmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX2NvdW50LGVudHJ5X251bSxsYXN0X2VudHJ5LGdyb3VwX251bSk7CisKKwl3cHJpbnR3IChzaG93X3dpbiwiSW5vZGUgdHlwZTogIik7CisKKwlpZiAoaW5vZGVfbnVtIDwgRVhUMl9HT09EX09MRF9GSVJTVF9JTk8pIHsKKwkJc3dpdGNoIChpbm9kZV9udW0pIHsKKwkJCWNhc2UgRVhUMl9CQURfSU5POgorCQkJCXdwcmludHcgKHNob3dfd2luLCJCYWQgYmxvY2tzIGlub2RlIC0gIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEVYVDJfUk9PVF9JTk86CisJCQkJd3ByaW50dyAoc2hvd193aW4sIlJvb3QgaW5vZGUgLSAiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRVhUNF9VU1JfUVVPVEFfSU5POgorCQkJCXdwcmludHcgKHNob3dfd2luLCJVc2VyIHF1b3RhIGlub2RlIC0gIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEVYVDRfR1JQX1FVT1RBX0lOTzoKKwkJCQl3cHJpbnR3IChzaG93X3dpbiwiR3JvdXAgcXVvdGEgaW5vZGUgLSAiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRVhUMl9CT09UX0xPQURFUl9JTk86CisJCQkJd3ByaW50dyAoc2hvd193aW4sIkJvb3QgbG9hZGVyIGlub2RlIC0gIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEVYVDJfVU5ERUxfRElSX0lOTzoKKwkJCQl3cHJpbnR3IChzaG93X3dpbiwiVW5kZWxldGUgZGlyZWN0b3J5IGlub2RlIC0gIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXdwcmludHcgKHNob3dfd2luLCJSZXNlcnZlZCBpbm9kZSAtICIpOworCQkJCWJyZWFrOworCQl9CisJfQorCWlmICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlPT0wKQorCQl3cHJpbnR3IChzaG93X3dpbiwiRnJlZS4gICAgICAgICAgICAiKTsKKworCWlmIChTX0lTUkVHICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlKSkKKwkJd3ByaW50dyAoc2hvd193aW4sIkZpbGUuICAgICAgICAgICAgIik7CisKKwlpZiAoU19JU0RJUiAodHlwZV9kYXRhLnUudF9leHQyX2lub2RlLmlfbW9kZSkpCisJCXdwcmludHcgKHNob3dfd2luLCJEaXJlY3RvcnkuICAgICAgICIpOworCisJaWYgKFNfSVNMTksgKHR5cGVfZGF0YS51LnRfZXh0Ml9pbm9kZS5pX21vZGUpKSB7CisJCXdwcmludHcgKHNob3dfd2luLCJTeW1ib2xpYyBsaW5rLiAgICIpOworCQl3bW92ZSAoc2hvd19wYWQsMTIsNDApOworCisJCWlmIChpbm9kZV9wdHItPmlfc2l6ZSA8PSA2MCkKKwkJCXdwcmludHcgKHNob3dfcGFkLCItPiAlcyIsKGNoYXIgKikgJnR5cGVfZGF0YS51LnRfZXh0Ml9pbm9kZS5pX2Jsb2NrIFswXSk7CisJCWVsc2UKKwkJCXdwcmludHcgKHNob3dfcGFkLCJTbG93IHN5bWJvbGljIGxpbmtcbiIpOworCQlyZWZyZXNoX3Nob3dfcGFkICgpOworCX0KKworCWlmIChTX0lTQ0hSICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlKSkKKwkJd3ByaW50dyAoc2hvd193aW4sIkNoYXJhY3RlciBkZXZpY2UuIik7CisKKwlpZiAoU19JU0JMSyAodHlwZV9kYXRhLnUudF9leHQyX2lub2RlLmlfbW9kZSkpCisJCXdwcmludHcgKHNob3dfd2luLCJCbG9jayBkZXZpY2UuICAgICIpOworCisJd3ByaW50dyAoc2hvd193aW4sIlxuIik7cmVmcmVzaF9zaG93X3dpbiAoKTsKKworCWlmIChlbnRyeV9udW09PWxhc3RfZW50cnkpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIlJlYWNoZWQgbGFzdCBpbm9kZSBpbiBjdXJyZW50IGdyb3VwIGRlc2NyaXB0b3JcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCX0KKworCWlmIChlbnRyeV9udW09PWZpcnN0X2VudHJ5KSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJSZWFjaGVkIGZpcnN0IGlub2RlIGluIGN1cnJlbnQgZ3JvdXAgZGVzY3JpcHRvclxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorCit9CisKK3ZvaWQgdHlwZV9leHQyX2lub2RlX19fZW50cnkgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCWxvbmcgZ3JvdXBfbnVtLGdyb3VwX29mZnNldCxlbnRyeV9udW0sYmxvY2tfbnVtLHdhbnRlZF9lbnRyeTsKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjIGRlc2M7CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHI9PTApIHJldHVybjsKKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJd2FudGVkX2VudHJ5PWF0b2wgKGJ1ZmZlcik7CisKKwlibG9ja19udW09ZGV2aWNlX29mZnNldC9maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisKKwlncm91cF9udW09aW5vZGVfb2Zmc2V0X3RvX2dyb3VwX251bSAoZGV2aWNlX29mZnNldCk7CisJZ3JvdXBfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQrZ3JvdXBfbnVtKnNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisKKwlsb3dfcmVhZCAoKGNoYXIgKikgJmRlc2Msc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjKSxncm91cF9vZmZzZXQpOworCisJZW50cnlfbnVtPShkZXZpY2Vfb2Zmc2V0LWRlc2MuYmdfaW5vZGVfdGFibGUqZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplKS9zaXplb2YgKHN0cnVjdCBleHQyX2lub2RlKTsKKworCWlmICh3YW50ZWRfZW50cnkgPiBlbnRyeV9udW0pIHsKKwkJc3ByaW50ZiAoYnVmZmVyLCJuZXh0ICVsZCIsd2FudGVkX2VudHJ5LWVudHJ5X251bSk7CisJCWRpc3BhdGNoIChidWZmZXIpOworCX0KKworCWVsc2UgaWYgKHdhbnRlZF9lbnRyeSA8IGVudHJ5X251bSkgeworCQlzcHJpbnRmIChidWZmZXIsInByZXYgJWxkIixlbnRyeV9udW0td2FudGVkX2VudHJ5KTsKKwkJZGlzcGF0Y2ggKGJ1ZmZlcik7CisJfQorfQorCit2b2lkIHR5cGVfZXh0Ml9pbm9kZV9fX2dyb3VwIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwljaGFyIGJ1ZmZlciBbODBdOworCisJbG9uZyBncm91cF9udW0sZ3JvdXBfb2Zmc2V0OworCisJZ3JvdXBfbnVtPWlub2RlX29mZnNldF90b19ncm91cF9udW0gKGRldmljZV9vZmZzZXQpOworCWdyb3VwX29mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0K2dyb3VwX251bSpzaXplb2YgKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpOworCisJc3ByaW50ZiAoYnVmZmVyLCJzZXRvZmZzZXQgJWxkIixncm91cF9vZmZzZXQpO2Rpc3BhdGNoIChidWZmZXIpOworCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBleHQyX2dyb3VwX2Rlc2MiKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2V4dDJfaW5vZGVfX19maWxlIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwljaGFyIGJ1ZmZlciBbODBdOworCisJaWYgKCFTX0lTUkVHICh0eXBlX2RhdGEudS50X2V4dDJfaW5vZGUuaV9tb2RlKSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBJbm9kZSB0eXBlIGlzIG5vdCBmaWxlXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJaWYgKCFpbml0X2ZpbGVfaW5mbyAoKSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBVbmFibGUgdG8gc2hvdyBmaWxlXG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJc3ByaW50ZiAoYnVmZmVyLCJzZXR0eXBlIGZpbGUiKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2V4dDJfaW5vZGVfX19kaXIgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWNoYXIgYnVmZmVyIFs4MF07CisKKwlpZiAoIVNfSVNESVIgKHR5cGVfZGF0YS51LnRfZXh0Ml9pbm9kZS5pX21vZGUpKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIElub2RlIHR5cGUgaXMgbm90IGRpcmVjdG9yeVxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKwkJcmV0dXJuOworCX0KKworLyogSXQgaXMgdmVyeSBpbXBvcnRhbnQgdG8gaW5pdCBmaXJzdF9maWxlX2luZm8gZmlyc3QsIGFzIHNlYXJjaF9kaXJfZW50cmllcyByZWxpZXMgb24gaXQgKi8KKworCWlmICghaW5pdF9kaXJfaW5mbyAoJmZpcnN0X2ZpbGVfaW5mbykpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gVW5hYmxlIHRvIHNob3cgZGlyZWN0b3J5XG4iKTtyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQlyZXR1cm47CisJfQorCisJZmlsZV9pbmZvPWZpcnN0X2ZpbGVfaW5mbzsKKworCXNwcmludGYgKGJ1ZmZlciwic2V0dHlwZSBkaXIiKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKworbG9uZyBpbm9kZV9vZmZzZXRfdG9fZ3JvdXBfbnVtIChsb25nIGlub2RlX29mZnNldCkKKworeworCWludCBmb3VuZD0wOworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgZGVzYzsKKworCWxvbmcgYmxvY2tfbnVtLGdyb3VwX29mZnNldCxncm91cF9udW07CisKKwlibG9ja19udW09aW5vZGVfb2Zmc2V0L2ZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKworCWdyb3VwX29mZnNldD1maWxlX3N5c3RlbV9pbmZvLmZpcnN0X2dyb3VwX2Rlc2Nfb2Zmc2V0OworCWdyb3VwX251bT0oZ3JvdXBfb2Zmc2V0LWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQpL3NpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisKKwl3aGlsZSAoIWZvdW5kICYmIGdyb3VwX251bT49MCAmJiBncm91cF9udW08ZmlsZV9zeXN0ZW1faW5mby5ncm91cHNfY291bnQpIHsKKwkJbG93X3JlYWQgKChjaGFyICopICZkZXNjLHNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyksZ3JvdXBfb2Zmc2V0KTsKKwkJaWYgKGJsb2NrX251bT49ZGVzYy5iZ19pbm9kZV90YWJsZSAmJiBibG9ja19udW08ZGVzYy5iZ19pbm9kZV90YWJsZStmaWxlX3N5c3RlbV9pbmZvLmJsb2Nrc19wZXJfZ3JvdXApCisJCQlmb3VuZD0xOworCQllbHNlCisJCQlncm91cF9vZmZzZXQrPXNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisJCWdyb3VwX251bT0oZ3JvdXBfb2Zmc2V0LWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQpL3NpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisJfQorCisJaWYgKCFmb3VuZCkKKwkJcmV0dXJuICgtMSk7CisKKwlyZXR1cm4gKGdyb3VwX251bSk7Cit9CisKKworCitsb25nIGludCBpbm9kZV9vZmZzZXRfdG9faW5vZGVfbnVtIChsb25nIGlub2RlX29mZnNldCkKKworeworCWxvbmcgZ3JvdXBfbnVtLGdyb3VwX29mZnNldCxlbnRyeV9udW0sYmxvY2tfbnVtLGZpcnN0X2VudHJ5LGxhc3RfZW50cnksaW5vZGVfbnVtOworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgZGVzYzsKKworCWJsb2NrX251bT1pbm9kZV9vZmZzZXQvZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJZ3JvdXBfbnVtPWlub2RlX29mZnNldF90b19ncm91cF9udW0gKGlub2RlX29mZnNldCk7CisJZ3JvdXBfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQrZ3JvdXBfbnVtKnNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisKKwlsb3dfcmVhZCAoKGNoYXIgKikgJmRlc2Msc2l6ZW9mIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjKSxncm91cF9vZmZzZXQpOworCisJZW50cnlfbnVtPShpbm9kZV9vZmZzZXQtZGVzYy5iZ19pbm9kZV90YWJsZSpmaWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemUpL3NpemVvZiAoc3RydWN0IGV4dDJfaW5vZGUpOworCWZpcnN0X2VudHJ5PTA7bGFzdF9lbnRyeT1maWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX3Blcl9ncm91cC0xOworCWlub2RlX251bT1ncm91cF9udW0qZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXArMTsKKwlpbm9kZV9udW0rPWVudHJ5X251bTsKKworCXJldHVybiAoaW5vZGVfbnVtKTsKK30KKworbG9uZyBpbnQgaW5vZGVfbnVtX3RvX2lub2RlX29mZnNldCAobG9uZyBpbm9kZV9udW0pCisKK3sKKwlsb25nIGdyb3VwX251bSxncm91cF9vZmZzZXQsaW5vZGVfb2Zmc2V0LGlub2RlX2VudHJ5OworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgZGVzYzsKKworCWlub2RlX251bS0tOworCisJZ3JvdXBfbnVtPWlub2RlX251bS9maWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX3Blcl9ncm91cDsKKwlpbm9kZV9lbnRyeT1pbm9kZV9udW0lZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXA7CisJZ3JvdXBfb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uZmlyc3RfZ3JvdXBfZGVzY19vZmZzZXQrZ3JvdXBfbnVtKnNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyk7CisJbG93X3JlYWQgKChjaGFyICopICZkZXNjLHNpemVvZiAoc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyksZ3JvdXBfb2Zmc2V0KTsKKworCWlub2RlX29mZnNldD1kZXNjLmJnX2lub2RlX3RhYmxlKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZStpbm9kZV9lbnRyeSpzaXplb2YgKHN0cnVjdCBleHQyX2lub2RlKTsKKworCXJldHVybiAoaW5vZGVfb2Zmc2V0KTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvaW5vZGViaXRtYXBfY29tLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL2lub2RlYml0bWFwX2NvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NzgwN2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL2lub2RlYml0bWFwX2NvbS5jCkBAIC0wLDAgKzEsMjE1IEBACisvKgorCisvdXNyL3NyYy9leHQyZWQvaW5vZGViaXRtYXBfY29tLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIYW5kbGVzIHRoZSBpbm9kZSBiaXRtYXAuCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBpbiBibG9ja2JpdG1hcF9jb20uYyAtIFRob3NlIHR3byBmaWxlcyBhcmUgYWxtb3N0IGVxdWFsLgorCitGaXJzdCB3cml0dGVuIG9uOiBKdWx5IDI1IDE5OTUKKworQ29weXJpZ2h0IChDKSAxOTk1IEdhZGkgT3htYW4KKworKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJleHQyZWQuaCIKKworCit2b2lkIHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19lbnRyeSAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJdW5zaWduZWQgbG9uZyBlbnRyeV9udW07CisJY2hhciAqcHRyLGJ1ZmZlciBbODBdOworCisJcHRyPXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxidWZmZXIpOworCWlmICgqcHRyPT0wKSB7CisJCXdwcmludHcgKGNvbW1hbmRfd2luLCJFcnJvciAtIE5vIGFyZ3VtZW50IHNwZWNpZmllZFxuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCXB0cj1wYXJzZV93b3JkIChwdHIsYnVmZmVyKTsKKworCWVudHJ5X251bT1hdG9sIChidWZmZXIpOworCisJaWYgKGVudHJ5X251bSA+PSBmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX3Blcl9ncm91cCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBFbnRyeSBudW1iZXIgb3V0IG9mIGJvdW5kc1xuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJaW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtPWVudHJ5X251bTsKKwlzdHJjcHkgKGJ1ZmZlciwic2hvdyIpO2Rpc3BhdGNoIChidWZmZXIpOworfQorCit2b2lkIHR5cGVfZXh0Ml9pbm9kZV9iaXRtYXBfX19uZXh0IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGVudHJ5X29mZnNldD0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0ciE9MCkgeworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCWVudHJ5X29mZnNldD1hdG9sIChidWZmZXIpOworCX0KKworCXNwcmludGYgKGJ1ZmZlciwiZW50cnkgJWxkIixpbm9kZV9iaXRtYXBfaW5mby5lbnRyeV9udW0rZW50cnlfb2Zmc2V0KTsKKwlkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2V4dDJfaW5vZGVfYml0bWFwX19fcHJldiAoY2hhciAqY29tbWFuZF9saW5lKQorCit7CisJbG9uZyBlbnRyeV9vZmZzZXQ9MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQllbnRyeV9vZmZzZXQ9YXRvbCAoYnVmZmVyKTsKKwl9CisKKwlzcHJpbnRmIChidWZmZXIsImVudHJ5ICVsZCIsaW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtLWVudHJ5X29mZnNldCk7CisJZGlzcGF0Y2ggKGJ1ZmZlcik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2lub2RlX2JpdG1hcF9fX2FsbG9jYXRlIChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlsb25nIGVudHJ5X251bSxudW09MTsKKwljaGFyICpwdHIsYnVmZmVyIFs4MF07CisKKwlwdHI9cGFyc2Vfd29yZCAoY29tbWFuZF9saW5lLGJ1ZmZlcik7CisJaWYgKCpwdHIhPTApIHsKKwkJcHRyPXBhcnNlX3dvcmQgKHB0cixidWZmZXIpOworCQludW09YXRvbCAoYnVmZmVyKTsKKwl9CisKKwllbnRyeV9udW09aW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtOworCWlmIChudW0gPiBmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX3Blcl9ncm91cC1lbnRyeV9udW0pIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gVGhlcmUgYXJlbid0IHRoYXQgbXVjaCBpbm9kZXMgaW4gdGhlIGdyb3VwXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJd2hpbGUgKG51bSkgeworCQlhbGxvY2F0ZV9pbm9kZSAoZW50cnlfbnVtKTsKKwkJbnVtLS07ZW50cnlfbnVtKys7CisJfQorCisJZGlzcGF0Y2ggKCJzaG93Iik7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2lub2RlX2JpdG1hcF9fX2RlYWxsb2NhdGUgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWxvbmcgZW50cnlfbnVtLG51bT0xOworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0ciE9MCkgeworCQlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisJCW51bT1hdG9sIChidWZmZXIpOworCX0KKworCWVudHJ5X251bT1pbm9kZV9iaXRtYXBfaW5mby5lbnRyeV9udW07CisJaWYgKG51bSA+IGZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2suc19pbm9kZXNfcGVyX2dyb3VwLWVudHJ5X251bSkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBUaGVyZSBhcmVuJ3QgdGhhdCBtdWNoIGlub2RlcyBpbiB0aGUgZ3JvdXBcbiIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpO3JldHVybjsKKwl9CisKKwl3aGlsZSAobnVtKSB7CisJCWRlYWxsb2NhdGVfaW5vZGUgKGVudHJ5X251bSk7CisJCW51bS0tO2VudHJ5X251bSsrOworCX0KKworCWRpc3BhdGNoICgic2hvdyIpOworfQorCisKK3ZvaWQgYWxsb2NhdGVfaW5vZGUgKGxvbmcgZW50cnlfbnVtKQorCit7CisJdW5zaWduZWQgY2hhciBiaXRfbWFzaz0xOworCWludCBieXRlX29mZnNldCxqOworCisJYnl0ZV9vZmZzZXQ9ZW50cnlfbnVtLzg7CisJZm9yIChqPTA7ajxlbnRyeV9udW0lODtqKyspCisJCWJpdF9tYXNrKj0yOworCXR5cGVfZGF0YS51LmJ1ZmZlciBbYnl0ZV9vZmZzZXRdIHw9IGJpdF9tYXNrOworfQorCit2b2lkIGRlYWxsb2NhdGVfaW5vZGUgKGxvbmcgZW50cnlfbnVtKQorCit7CisJdW5zaWduZWQgY2hhciBiaXRfbWFzaz0xOworCWludCBieXRlX29mZnNldCxqOworCisJYnl0ZV9vZmZzZXQ9ZW50cnlfbnVtLzg7CisJZm9yIChqPTA7ajxlbnRyeV9udW0lODtqKyspCisJCWJpdF9tYXNrKj0yOworCWJpdF9tYXNrXj0weGZmOworCisJdHlwZV9kYXRhLnUuYnVmZmVyIFtieXRlX29mZnNldF0gJj0gYml0X21hc2s7Cit9CisKK3ZvaWQgdHlwZV9leHQyX2lub2RlX2JpdG1hcF9fX3Nob3cgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCWludCBpLGo7CisJdW5zaWduZWQgY2hhciAqcHRyOworCXVuc2lnbmVkIGxvbmcgaW5vZGVfbnVtLGVudHJ5X251bTsKKworCXB0cj10eXBlX2RhdGEudS5idWZmZXI7CisJc2hvd19wYWRfaW5mby5saW5lPTA7c2hvd19wYWRfaW5mby5tYXhfbGluZT0tMTsKKworCXdtb3ZlIChzaG93X3BhZCwwLDApOworCWZvciAoaT0wLGVudHJ5X251bT0wO2k8ZmlsZV9zeXN0ZW1faW5mby5zdXBlcl9ibG9jay5zX2lub2Rlc19wZXJfZ3JvdXAvODtpKysscHRyKyspIHsKKwkJZm9yIChqPTE7ajw9MTI4O2oqPTIpIHsKKwkJCWlmIChlbnRyeV9udW09PWlub2RlX2JpdG1hcF9pbmZvLmVudHJ5X251bSkgeworCQkJCXdhdHRyc2V0IChzaG93X3BhZCxBX1JFVkVSU0UpOworCQkJCXNob3dfcGFkX2luZm8ubGluZT1zaG93X3BhZF9pbmZvLm1heF9saW5lLXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcy8yOworCQkJfQorCisJCQlpZiAoKCpwdHIpICYgaikKKwkJCQl3cHJpbnR3IChzaG93X3BhZCwiMSIpOworCQkJZWxzZQorCQkJCXdwcmludHcgKHNob3dfcGFkLCIwIik7CisKKwkJCWlmIChlbnRyeV9udW09PWlub2RlX2JpdG1hcF9pbmZvLmVudHJ5X251bSkKKwkJCQl3YXR0cnNldCAoc2hvd19wYWQsQV9OT1JNQUwpOworCisJCQllbnRyeV9udW0rKzsKKwkJfQorCQl3cHJpbnR3IChzaG93X3BhZCwiICIpOworCQlpZiAoaSU4PT03KSB7CisJCQl3cHJpbnR3IChzaG93X3BhZCwiXG4iKTsKKwkJCXNob3dfcGFkX2luZm8ubWF4X2xpbmUrKzsKKwkJfQorCX0KKworCWlmIChpJTghPTcpIHsKKwkJd3ByaW50dyAoc2hvd19wYWQsIlxuIik7CisJCXNob3dfcGFkX2luZm8ubWF4X2xpbmUrKzsKKwl9CisKKwlyZWZyZXNoX3Nob3dfcGFkICgpOworCXNob3dfaW5mbyAoKTsKKwl3bW92ZSAoc2hvd193aW4sMSwwKTt3cHJpbnR3IChzaG93X3dpbiwiSW5vZGUgYml0bWFwIG9mIGJsb2NrIGdyb3VwICVsZFxuIixpbm9kZV9iaXRtYXBfaW5mby5ncm91cF9udW0pOworCisJaW5vZGVfbnVtPTEraW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtK2lub2RlX2JpdG1hcF9pbmZvLmdyb3VwX251bSpmaWxlX3N5c3RlbV9pbmZvLnN1cGVyX2Jsb2NrLnNfaW5vZGVzX3Blcl9ncm91cDsKKwl3cHJpbnR3IChzaG93X3dpbiwiU3RhdHVzIG9mIGlub2RlICVsZCAtICIsaW5vZGVfbnVtKTsKKwlwdHI9dHlwZV9kYXRhLnUuYnVmZmVyK2lub2RlX2JpdG1hcF9pbmZvLmVudHJ5X251bS84OworCWo9MTsKKwlmb3IgKGk9aW5vZGVfYml0bWFwX2luZm8uZW50cnlfbnVtICUgODtpPjA7aS0tKQorCQlqKj0yOworCWlmICgoKnB0cikgJiBqKQorCQl3cHJpbnR3IChzaG93X3dpbiwiQWxsb2NhdGVkXG4iKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfd2luLCJGcmVlXG4iKTsKKwlyZWZyZXNoX3Nob3dfd2luICgpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC9tYWluLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTI5OTc5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2V4dDJlZC9tYWluLmMKQEAgLTAsMCArMSw1NDYgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC9tYWluLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0KK01haW4gcHJvZ3JhbQorLS0tLS0tLS0tLS0tCisKK1RoaXMgZmlsZSBtb3N0bHkgY29udGFpbnM6CisKKzEuCUEgbGlzdCBvZiBnbG9iYWwgdmFyaWFibGVzIHVzZWQgdGhyb3VnaCB0aGUgZW50aXJlIHByb2dyYW0uCisyLglUaGUgcGFyc2VyLCB3aGljaCBhc2tzIHRoZSBjb21tYW5kIGxpbmUgZnJvbSB0aGUgdXNlci4KKzMuCVRoZSBkaXNwYXRjaGVyLCB3aGljaCBhbmFseXplcyB0aGUgY29tbWFuZCBsaW5lIGFuZCBjYWxscyB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlciBmdW5jdGlvbi4KKzQuCUEgY29tbWFuZCBwYXR0ZXJuIG1hdGNoZXIgd2hpY2ggaXMgdXNlZCBhbG9uZyB3aXRoIHRoZSByZWFkbGluZSBjb21wbGV0aW9uIGZlYXR1cmUuCis1LglBIGZ1bmN0aW9uIHdoaWNoIHRlbGxzIHRoZSB1c2VyIHRoYXQgYW4gaW50ZXJuYWwgZXJyb3IgaGFzIG9jY3VyZWQuCisKK0ZpcnN0IHdyaXR0ZW4gb246IE1hcmNoIDMwIDE5OTUKKworQ29weXJpZ2h0IChDKSAxOTk1IEdhZGkgT3htYW4KKworKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKyNpZmRlZiBIQVZFX1JFQURMSU5FCisjaW5jbHVkZSA8cmVhZGxpbmUuaD4KKyNpbmNsdWRlIDxoaXN0b3J5Lmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJlZC5oIgorCisvKiBHbG9iYWwgdmFyaWFibGVzICovCisKKy8qCisKK0NvbmZpZ3VyYXRpb24gZmlsZSBvcHRpb25zCisKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIHdpbGwgYmUgc2V0IGJ5IGluaXQuYyB0byB0aGUgdmFsdWVzIHNlbGVjdGVkIGluIHRoZSB1c2VyIGNvbmZpZ3VyYXRpb24gZmlsZS4KK1RoZXkgYXJlIGluaXRpYWxpemVkIGJlbG93IHRvIHNvbWUgbG9naWNhbCBkZWZhdWx0cy4KKworKi8KKworCitjaGFyIEV4dDJEZXNjcmlwdG9ycyBbMjAwXT0iZXh0Mi5kZXNjcmlwdG9ycyI7CS8qIFRoZSBsb2NhdGlvbiBvZiB0aGUgZXh0MiBmaWxlc3lzdGVtIG9iamVjdCBkZWZpbml0aW9uICovCitjaGFyIEFsdGVybmF0ZURlc2NyaXB0b3JzIFsyMDBdPSIiOwkJLyogV2UgYWxsb3cgdGhlIHVzZXIgdG8gZGVmaW5lIGFkZGl0aW9uYWwgc3RydWN0dXJlcyAqLworY2hhciBMb2dGaWxlIFsyMDBdPSJleHQyZWQubG9nIjsJCS8qIFRoZSBsb2NhdGlvbiBvZiB0aGUgbG9nIGZpbGUgLSBFYWNoIHdyaXRlIHdpbGwgYmUgbG9nZ2VkIHRoZXJlICovCitpbnQgTG9nQ2hhbmdlcz0xOwkJCQkvKiAxIGVuYWJsZXMgbG9nZ2luZywgMCBkaWFibGVzIGxvZ2dpbmcgKi8KK2ludCBBbGxvd0NoYW5nZXM9MDsJCQkJLyogV2hlbiBzZXQsIHRoZSBlbmFibGV3cml0ZSBjb21tYW5kIHdpbGwgZmFpbCAqLworaW50IEFsbG93TW91bnRlZFJlYWQ9MDsJCQkJLyogQmVoYXZpb3Igd2hlbiB0cnlpbmcgdG8gb3BlbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSByZWFkLW9ubHkgKi8KK2ludCBGb3JjZUV4dDI9MDsJCQkJLyogV2hlbiBzZXQsIGV4dDIgYXV0b2RldGVjdGlvbiBpcyBvdmVycmlkZGVuICovCitpbnQgRGVmYXVsdEJsb2NrU2l6ZT0xMDI0OwordW5zaWduZWQgbG9uZyBEZWZhdWx0VG90YWxCbG9ja3M9MjA5NzE1MTsKK3Vuc2lnbmVkIGxvbmcgRGVmYXVsdEJsb2Nrc0luR3JvdXA9ODE5MjsJLyogVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSB1c2VkIHdoZW4gYW4gZXh0MiBmaWxlc3lzdGVtIGlzIG5vdCAqLworaW50IEZvcmNlRGVmYXVsdD0wOwkJCQkvKiBkZXRlY3RlZCwgb3IgRm9yY2VEZWZhdWx0IGlzIHNldCAqLworCitjaGFyIGxhc3RfY29tbWFuZF9saW5lIFs4MF07CQkJLyogQSBzaW1wbGUgb25lIGNvbW1hbmQgY2FjaGUsIGluIGFkZGl0aW9uIHRvIHRoZSByZWFkbGluZSBoaXN0b3J5ICovCisKK2NoYXIgZGV2aWNlX25hbWUgWzgwXTsJCQkJLyogVGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlc3lzdGVtICovCitGSUxFICpkZXZpY2VfaGFuZGxlPU5VTEw7CQkJLyogVGhpcyBpcyBwYXNzZWQgdG8gdGhlIGZvcGVuIC8gZnJlYWQgLi4uIGNvbW1hbmRzICovCitsb25nIGRldmljZV9vZmZzZXQ7CQkJCS8qIFRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSBmaWxlc3lzdGVtICovCisJCQkJCQkvKiBOb3RlIHRoYXQgd2UgaGF2ZSBhIDIgR0IgbGltaXRhdGlvbiAqLworCitpbnQgbW91bnRlZD0wOwkJCQkJLyogVGhpcyBpcyBzZXQgd2hlbiB3ZSBmaW5kIHRoYXQgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCAqLworCitzdHJ1Y3Qgc3RydWN0X2NvbW1hbmRzIGdlbmVyYWxfY29tbWFuZHMsZXh0Ml9jb21tYW5kczsJCS8qIFVzZWQgdG8gZGVmaW5lIHRoZSBnZW5lcmFsIGFuZCBleHQyIGNvbW1hbmRzICovCitzdHJ1Y3Qgc3RydWN0X2Rlc2NyaXB0b3IgKmZpcnN0X3R5cGUsKmxhc3RfdHlwZSwqY3VycmVudF90eXBlOwkvKiBVc2VkIHRvIGFjY2VzcyB0aGUgZG91YmxlIGxpbmtlZCBsaXN0ICovCitzdHJ1Y3Qgc3RydWN0X3R5cGVfZGF0YSB0eXBlX2RhdGE7CQkJCS8qIFRoZSBjdXJyZW50IGRhdGEgaXMgc29tZXRpbWVzIHN0b3JlZCBoZXJlICovCitzdHJ1Y3Qgc3RydWN0X2ZpbGVfc3lzdGVtX2luZm8gZmlsZV9zeXN0ZW1faW5mbzsJCS8qIEVzc2VudGlhbCBpbmZvcm1hdGlvbiBvbiB0aGUgZmlsZXN5c3RlbSAqLworc3RydWN0IHN0cnVjdF9maWxlX2luZm8gZmlsZV9pbmZvLGZpcnN0X2ZpbGVfaW5mbzsJCS8qIFVzZWQgYnkgZmlsZV9jb20uYyB0byBhY2Nlc3MgZmlsZXMgKi8KK3N0cnVjdCBzdHJ1Y3RfZ3JvdXBfaW5mbyBncm91cF9pbmZvOwkJCQkvKiBVc2VkIGJ5IGdyb3VwX2NvbS5jICovCitzdHJ1Y3Qgc3RydWN0X3N1cGVyX2luZm8gc3VwZXJfaW5mbzsJCQkJLyogVXNlZCBieSBzdXBlcl9jb20uYyAqLworc3RydWN0IHN0cnVjdF9yZW1lbWJlcl9saWZvIHJlbWVtYmVyX2xpZm87CQkJLyogQSBjaXJjdWxhciBtZW1vcnkgb2Ygb2JqZWN0cyAqLworc3RydWN0IHN0cnVjdF9ibG9ja19iaXRtYXBfaW5mbyBibG9ja19iaXRtYXBfaW5mbzsJCS8qIFVzZWQgYnkgYmxvY2tiaXRtYXBfY29tLmMgKi8KK3N0cnVjdCBzdHJ1Y3RfaW5vZGVfYml0bWFwX2luZm8gaW5vZGVfYml0bWFwX2luZm87CQkvKiBVc2VkIGJ5IGlub2RlYml0bWFwX2NvbS5jICovCisKK2ludCByZWRyYXdfcmVxdWVzdD0wOwkJCQkJCS8qIElzIHNldCBieSBhIHNpZ25hbCBoYW5kbGVyIHRvIGhhbmRsZSB0ZXJtaW5hbCAqLworCQkJCQkJCQkvKiBzY3JlZW4gc2l6ZSBjaGFuZ2UuICovCisKKworLyoKKyAqIFdlIGp1c3QgY2FsbCB0aGUgcGFyc2VyIHRvIGdldCBjb21tYW5kcyBmcm9tIHRoZSB1c2VyLiBXZSBxdWl0IHdoZW4KKyAqIHBhcnNlciByZXR1cm5zLgorICovCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAl3cml0ZV9wcml2ID0gMDsKKwlpbnQJYzsKKwljaGFyCSpidWY7CisKKwlpZiAoIWluaXQgKCkpCisJCXJldHVybiAoMSk7CisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAidyIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ3cnOgorCQkJd3JpdGVfcHJpdisrOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKG9wdGluZCA8IGFyZ2MpIHsKKwkJYnVmID0gbWFsbG9jKHN0cmxlbihhcmd2W29wdGluZF0pICsgMzIpOworCQlpZiAoIWJ1ZikgeworCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBhbGxvY2F0ZSBmaWxlbmFtZSBidWZmZXJcbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlzdHJjcHkoYnVmLCAic2V0X2RldmljZSAiKTsKKwkJc3RyY2F0KGJ1ZiwgYXJndltvcHRpbmRdKTsKKwkJc2V0X2RldmljZShidWYpOworCQlmcmVlKGJ1Zik7CisJCWlmICh3cml0ZV9wcml2KSB7CisJCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiXG4iKTsKKwkJCWVuYWJsZV93cml0ZSgiZW5hYmxlX3dyaXRlIik7CisJCX0KKwl9CisJcGFyc2VyICgpOwkJCS8qIEdldCBhbmQgcGFyc2UgdXNlciBjb21tYW5kcyAqLworCXByZXBhcmVfdG9fY2xvc2UoKTsJCS8qIERvIHNvbWUgY2xlYW51cCAqLworCXByaW50ZigiUXVpdHRpbmcgLi4uXG4iKTsKKwlyZXR1cm4oMCk7Cit9CisKKworLyoKKyAqIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgY29tbWFuZCB3aW5kb3cKKyAqLworaW50IGNvbW1hbmRfcmVhZF9rZXkoKQoreworCWludAlrZXkgPSAwOworCisJd2hpbGUgKCFrZXkpIHsKKwkJaWYgKHJlZHJhd19yZXF1ZXN0KSB7CisJCQlyZWRyYXdfYWxsKCk7CisJCQlyZWRyYXdfcmVxdWVzdD0wOworCQl9CisJCWtleSA9IHdnZXRjaChjb21tYW5kX3dpbik7CisJCXN3aXRjaCAoa2V5KSB7CisJCWNhc2UgMHgxQToKKwkJCWtleSA9IDA7CisJCQlraWxsKGdldHBpZCgpLCBTSUdUU1RQKTsKKwkJCWJyZWFrOworCisJCWNhc2UgS0VZX05QQUdFOgorCQkJcGdkbigiIik7CisJCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCQkJYnJlYWs7CisKKwkJY2FzZSBLRVlfUFBBR0U6CisJCQlwZ3VwKCIiKTsKKwkJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJCQlicmVhazsKKwkJY2FzZSBFUlI6CisJCQlrZXkgPSAwOworCQkJYnJlYWs7CisKKwkJY2FzZSBLRVlfQkFDS1NQQUNFOgorCQkJa2V5ID0gJ1xiJzsKKwkJfQorCQlpZiAoKGtleSA8IDMyICYmIGtleSAhPSAnXGInICYmIGtleSAhPSAnXG4nKSB8fAorCQkgICAgKGtleSA+IDEyNykpCisJCQlrZXkgPSAwOworCX0KKwlyZXR1cm4ga2V5OworfQorCisjaWZkZWYgSEFWRV9SRUFETElORQoraW50IHJsX2dldGNfcmVwbGFjZW1lbnQoRklMRSAqZikKK3sKKwlpbnQJa2V5ID0gY29tbWFuZF9yZWFkX2tleSgpOworCisJaWYgKGtleSA9PSAnXGInKSB7CisJCWlmIChybF9wb2ludCA+IDApCisJCQl3cHJpbnR3KGNvbW1hbmRfd2luLCAiXGIgXGIiKTsKKwl9IGVsc2UKKwkJd3ByaW50dyhjb21tYW5kX3dpbiwgIiVjIiwga2V5KTsKKwlyZXR1cm4ga2V5OworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBhc2tzIHRoZSB1c2VyIGZvciBhIGNvbW1hbmQgYW5kIGNhbGxzIHRoZSBkaXNwYXRjaGVyCisgKiBmdW5jdGlvbiwgZGlzcGF0Y2gsIHRvIGFuYWx5emUgaXQuICBXZSB1c2UgdGhlIHJlYWRsaW5lIGxpYnJhcnkKKyAqIGZ1bmN0aW9uIHJlYWRsaW5lIHRvIHJlYWQgdGhlIGNvbW1hbmQsIGhlbmNlIGFsbCB0aGUgdXN1YWwgcmVhZGxpbmUKKyAqIGtleXMgYXJlIGF2YWlsYWJsZS4gIFRoZSBuZXcgY29tbWFuZCBpcyBzYXZlZCBib3RoIGluIHRoZQorICogcmVhZGxpbmUncyBoaXN0b3J5IGFuZCBpbiBvdXIgdGlueSBvbmUtY29tbWFuZCBjYWNoZSwgc28gdGhhdCBvbmx5CisgKiB0aGUgZW50ZXIga2V5IGlzIG5lZWRlZCB0byByZXR5cGUgaXQuCisgKi8KK3ZvaWQgcGFyc2VyICh2b2lkKQoreworCWNoYXIgKnB0cixjb21tYW5kX2xpbmUgWzgwXTsKKwlpbnQgcXVpdD0wOworCisjaWYgMAorCW5vZWNobygpOworCWNicmVhaygpOworCWtleXBhZChjb21tYW5kX3dpbiwgMSk7CisJd3RpbWVvdXQoY29tbWFuZF93aW4sIDEwMCk7CisKKwlybF9nZXRjX2Z1bmN0aW9uID0gcmxfZ2V0Y19yZXBsYWNlbWVudDsKKyNlbmRpZgorCisJd2hpbGUgKCFxdWl0KSB7CisJCS8qIFRlcm1pbmFsIHNjcmVlbiBzaXplIGhhcyBjaGFuZ2VkICovCisJCWlmIChyZWRyYXdfcmVxdWVzdCkgeworCQkJcmVkcmF3X2FsbCgpOworCQkJcmVkcmF3X3JlcXVlc3Q9MDsKKwkJfQorCisJCXdtb3ZlIChjb21tYW5kX3dpbiwwLDApOworCQl3Y2xydG9lb2wgKGNvbW1hbmRfd2luKTsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sImV4dDJlZCA+ICIpOworCQlyZWZyZXNoX2NvbW1hbmRfd2luICgpOworCisJCS8qCisJCSAqIFRoZSBuY3Vyc2VzIGxpYnJhcnkgb3B0aW1pemVzIGN1cnNvciBtb3ZlbWVudCBieQorCQkgKiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBjdXJzb3IgcG9zaXRpb24uIEhvd2V2ZXIsIGJ5CisJCSAqIHVzaW5nIHRoZSByZWFkbGluZSBsaWJyYXJ5IEknbSBicmVha2luZyBpdHMKKwkJICogYXNzdW1wdGlvbnMuIFRoZSBkb3VibGUgLTEgYXJndW1lbnRzIHRlbGwgbmN1cnNlcworCQkgKiB0byBkaXNhYmxlIGN1cnNvciBtb3ZlbWVudCBvcHRpbWl6YXRpb24gdGhpcworCQkgKiB0aW1lLgorCQkgKi8KKwkJbXZjdXIgKC0xLC0xLExJTkVTLUNPTU1BTkRfV0lOX0xJTkVTLDApOworCisJCS8qIGVjaG8gKCk7ICovCisJCXB0cj1yZWFkbGluZSAoImV4dDJlZCA+ICIpOworCQkvKiBub2VjaG8gKCk7ICovCisKKwkJLyoKKwkJICogUmVhZGxpbmUgYWxsb2NhdGVkIHRoZSBidWZmZXIgLSBDb3B5IHRoZSBzdHJpbmcKKwkJICogYW5kIGZyZWUgdGhlIGFsbG9jYXRlZCBidWZmZXIKKwkJICogWFhYIFdIWT8/PworCQkgKi8KKwkJc3RyY3B5IChjb21tYW5kX2xpbmUscHRyKTsKKwkJZnJlZSAocHRyKTsKKworCQlpZiAoKmNvbW1hbmRfbGluZSAhPSAwKQorCQkJYWRkX2hpc3RvcnkgKGNvbW1hbmRfbGluZSk7CisKKwkJLyogSWYgb25seSBlbnRlciB3YXMgcHJlc3NlZCwgcmVjYWxsIHRoZSBsYXN0IGNvbW1hbmQgKi8KKwkJaWYgKCpjb21tYW5kX2xpbmU9PTApCisJCQlzdHJjcHkgKGNvbW1hbmRfbGluZSxsYXN0X2NvbW1hbmRfbGluZSk7CisKKwkJLyogRW11bGF0ZSByZWFkbGluZSdzIGFjdGlvbnMgZm9yIG5jdXJzZXMgKi8KKwkJbXZjdXIgKC0xLC0xLExJTkVTLUNPTU1BTkRfV0lOX0xJTkVTLDApOworCQl3ZXJhc2UgKGNvbW1hbmRfd2luKTsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sImV4dDJlZCA+ICIpOworCQl3cHJpbnR3IChjb21tYW5kX3dpbixjb21tYW5kX2xpbmUpOworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiXG4iKTsKKwkJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKKworCQkvKiBTYXZlIHRoaXMgY29tbWFuZCBpbiBvdXIgdGlueSBjYWNoZSAqLworCQlzdHJjcHkgKGxhc3RfY29tbWFuZF9saW5lLGNvbW1hbmRfbGluZSk7CisKKwkJLyogQW5kIGNhbGwgZGlzcGF0Y2ggdG8gZG8gdGhlIGFjdHVhbCBqb2IgKi8KKwkJcXVpdD1kaXNwYXRjaCAoY29tbWFuZF9saW5lKTsKKwl9Cit9CisjZWxzZQordm9pZCByZWFkX2xpbmUoY2hhciAqIGZvbykgeworCWNoYXIgKiBjaHB0ciA9IGZvbzsKKwlpbnQgY2g7CisJaW50IGRvbmUgPSAwOworCisJd2hpbGUgKCFkb25lICYmIChjaCA9IGNvbW1hbmRfcmVhZF9rZXkoKSkpIHsKKwkJc3dpdGNoIChjaCkgeworCQljYXNlICdcbic6CisJCQlkb25lID0gMTsKKwkJCWJyZWFrOworCisJCWNhc2UgJ1xiJzoKKwkJCWlmIChjaHB0ciA+IGZvbykgeworCQkJCXdwcmludHcoY29tbWFuZF93aW4sICJcYiBcYiIpOworCQkJCWNocHRyLS07CisJCQl9CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJaWYgKGNoID4gMjU2KQorCQkJCWJyZWFrOworCQkJaWYgKGNoID09ICdcbicpIGJyZWFrOworCQkJKmNocHRyKysgPSBjaDsKKwkJCXdwcmludHcoY29tbWFuZF93aW4sICIlYyIsIGNoKTsKKwkJCWJyZWFrOworCQl9CisJfQorCSpjaHB0ciA9ICdcMCc7Cit9CisKK3ZvaWQgcGFyc2VyICh2b2lkKQoreworCWNoYXIgY29tbWFuZF9saW5lIFs4MF07CisJaW50IHF1aXQ9MDsKKworCW5vZWNobygpOworCWNicmVhaygpOworCXd0aW1lb3V0KGNvbW1hbmRfd2luLCAxMDApOworCWtleXBhZChjb21tYW5kX3dpbiwgMSk7CisKKwl3aGlsZSAoIXF1aXQpIHsKKwkJLyogVGVybWluYWwgc2NyZWVuIHNpemUgaGFzIGNoYW5nZWQgKi8KKwkJaWYgKHJlZHJhd19yZXF1ZXN0KSB7CisJCQlyZWRyYXdfYWxsKCk7CisJCQlyZWRyYXdfcmVxdWVzdD0wOworCQl9CisKKwkJd21vdmUgKGNvbW1hbmRfd2luLDAsMCk7d2NscnRvZW9sIChjb21tYW5kX3dpbik7CisKKwkJd21vdmUoY29tbWFuZF93aW4sIDAsIDApOworCQl3cHJpbnR3KGNvbW1hbmRfd2luLCAiZXh0MmVkID4gIik7CisJCXJlYWRfbGluZShjb21tYW5kX2xpbmUpOworCisJCS8qIElmIG9ubHkgZW50ZXIgd2FzIHByZXNzZWQsIHJlY2FsbCB0aGUgbGFzdCBjb21tYW5kICovCisgCQlpZiAoKmNvbW1hbmRfbGluZT09MCkKKyAJCQlzdHJjcHkgKGNvbW1hbmRfbGluZSxsYXN0X2NvbW1hbmRfbGluZSk7CisKKwkJbXZjdXIgKC0xLC0xLExJTkVTLUNPTU1BTkRfV0lOX0xJTkVTICsgMSwwKTsKKworIAkJc3RyY3B5IChsYXN0X2NvbW1hbmRfbGluZSxjb21tYW5kX2xpbmUpOwkvKiBTYXZlIHRoaXMgY29tbWFuZCBpbiBvdXIgdGlueSBjYWNoZSAqLworCisJCS8qIEFuZCBjYWxsIGRpc3BhdGNoIHRvIGRvIHRoZSBhY3R1YWwgam9iICovCisJCXF1aXQ9ZGlzcGF0Y2ggKGNvbW1hbmRfbGluZSk7CisJfQorfQorI2VuZGlmCisKKworLyoKKyAqIFRoaXMgaXMgYSB2ZXJ5IGltcG9ydGFudCBmdW5jdGlvbi4gSXRzIHRhc2sgaXMgdG8gcmVjaWV2ZSBhIGNvbW1hbmQKKyAqIG5hbWUgYW5kIGxpbmsgaXQgdG8gYSBDIGZ1bmN0aW9uLiAgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIGNvbW1hbmRzOgorICoKKyAqIDEuCUdlbmVyYWwgY29tbWFuZHMgLSBBbHdheXMgYXZhaWxhYmxlIGFuZCBhY2Nlc3NlZCB0aHJvdWdoCisgKiBnZW5lcmFsX2NvbW1hbmRzLgorICogMi4JRXh0MiBzcGVjaWZpYyBjb21tYW5kcyAtIEF2YWlsYWJsZSB3aGVuIGVkaXRpbmcgYW4gZXh0MgorICogZmlsZXN5c3RlbSwgYWNjZXNzZWQgdGhyb3VnaCBleHQyX2NvbW1hbmRzLgorICogMy4JVHlwZSBzcGVjaWZpYyBjb21tYW5kcyAtIFRob3NlIGFyZSBjaGFuZ2luZyBhY2NvcmRpbmcgdG8gdGhlCisgKiBjdXJyZW50IHR5cGUuIFRoZSBnbG9iYWwgdmFyaWFibGUgY3VycmVudF90eXBlIHBvaW50cyB0byB0aGUKKyAqIGN1cnJlbnQgb2JqZWN0IGRlZmluaXRpb24gKG9mIHR5cGUgc3RydWN0X2Rlc2NyaXB0b3IpLiBJbiBpdCwgdGhlCisgKiBzdHJ1Y3RfY29tbWFuZHMgZW50cnkgY29udGFpbnMgdGhlIHR5cGUgc3BlY2lmaWMgY29tbWFuZHMgbGlua3MuCisgKgorICogT3ZlcnJpZGluZyBpcyBhbiBpbXBvcnRhbnQgZmVhdHVyZSAtIE11Y2ggbGlrZSBpbiBDKysgOiBUaGUgc2FtZQorICogY29tbWFuZCBuYW1lIGNhbiBkaXNwYXRjaCB0byBkaWZmZXJlbnQgZnVuY3Rpb25zLiBUaGUgb3ZlcnJpZGluZworICogcHJpb3JpdHkgaXMgMywyLDE7IFRoYXQgaXMgLSBBIHR5cGUgc3BlY2lmaWMgY29tbWFuZCB3aWxsIGFsd2F5cworICogb3ZlcnJpZGUgYSBnZW5lcmFsIGNvbW1hbmQuIFRoaXMgaXMgdXNlZCB0aHJvdWdoIHRoZSBwcm9ncmFtIHRvCisgKiBhbGxvdyBmaW5lIHR1bmVkIG9wZXJhdGlvbi4KKyAqCisgKiBXaGVuIGFuIGhhbmRsaW5nIGZ1bmN0aW9uIGlzIGZvdW5kLCBpdCBpcyBjYWxsZWQgYWxvbmcgd2l0aCB0aGUKKyAqIGNvbW1hbmQgbGluZSB0aGF0IHdhcyBwYXNzZWQgdG8gdXMuIFRoZSBoYW5kbGluZyBmdW5jdGlvbiBpcyB0aGVuCisgKiBmcmVlIHRvIGludGVycGVydCB0aGUgYXJndW1lbnRzIGluIGl0cyBvd24gc3R5bGUuCisgKi8KK2ludCBkaXNwYXRjaCAoY2hhciAqY29tbWFuZF9saW5lKQoreworCWludCBpLGZvdW5kPTA7CisKKwljaGFyIGNvbW1hbmQgWzgwXTsKKworCXBhcnNlX3dvcmQgKGNvbW1hbmRfbGluZSxjb21tYW5kKTsKKworCWlmIChzdHJjYXNlY21wIChjb21tYW5kLCJxdWl0Iik9PTApIHJldHVybiAoMSk7CisKKwkvKiAxLiBTZWFyY2ggZm9yIHR5cGUgc3BlY2lmaWMgY29tbWFuZHMgRklSU1QgLSBBbGxvd3MKKwlvdmVycmlkaW5nIG9mIGEgZ2VuZXJhbCBjb21tYW5kICovCisKKwlpZiAoY3VycmVudF90eXBlICE9IE5VTEwpCisJCWZvciAoaT0wOworCQkgICAgIGk8PWN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5sYXN0X2NvbW1hbmQgJiYgIWZvdW5kOworCQkgICAgIGkrKykgeworCQkJaWYgKHN0cmNhc2VjbXAgKGNvbW1hbmQsY3VycmVudF90eXBlLT50eXBlX2NvbW1hbmRzLm5hbWVzIFtpXSk9PTApIHsKKwkJCQkoKmN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5jYWxsYmFjayBbaV0pIChjb21tYW5kX2xpbmUpOworCQkJCWZvdW5kPTE7CisJCQl9CisJCX0KKworCS8qIDIuIE5vdyBzZWFyY2ggZm9yIGV4dDIgZmlsZXN5c3RlbSBnZW5lcmFsIGNvbW1hbmRzICovCisKKwlpZiAoIWZvdW5kKQorCQlmb3IgKGk9MDtpPD1leHQyX2NvbW1hbmRzLmxhc3RfY29tbWFuZCAmJiAhZm91bmQ7aSsrKSB7CisJCQlpZiAoc3RyY2FzZWNtcCAoY29tbWFuZCxleHQyX2NvbW1hbmRzLm5hbWVzIFtpXSk9PTApIHsKKwkJCQkoKmV4dDJfY29tbWFuZHMuY2FsbGJhY2sgW2ldKSAoY29tbWFuZF9saW5lKTsKKwkJCQlmb3VuZD0xOworCQkJfQorCQl9CisKKworCS8qIDMuIElmIG5vdCBmb3VuZCwgc2VhcmNoIHRoZSBnZW5lcmFsIGNvbW1hbmRzICovCisKKwlpZiAoIWZvdW5kKQorCQlmb3IgKGk9MDtpPD1nZW5lcmFsX2NvbW1hbmRzLmxhc3RfY29tbWFuZCAmJiAhZm91bmQ7aSsrKSB7CisJCQlpZiAoc3RyY2FzZWNtcCAoY29tbWFuZCxnZW5lcmFsX2NvbW1hbmRzLm5hbWVzIFtpXSk9PTApIHsKKwkJCQkoKmdlbmVyYWxfY29tbWFuZHMuY2FsbGJhY2sgW2ldKSAoY29tbWFuZF9saW5lKTsKKwkJCQlmb3VuZD0xOworCQkJfQorCQl9CisKKwkvKiA0LiBJZiBub3QgZm91bmQsIGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybiAqLworCisJaWYgKCFmb3VuZCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3I6IFVua25vd24gY29tbWFuZFxuIik7CisJCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJfQorCisJcmV0dXJuICgwKTsKK30KKworCisvKgorICoKKyAqIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSBuZXh0IHdvcmQgaW4gc291cmNlIHRvIHRoZSB2YXJpYWJsZSBkZXN0LAorICogaWdub3Jpbmcgd2hpdGVzcGFjZXMuICBJdCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgbmV4dCB3b3JkIGluCisgKiBzb3VyY2UuICBJdCBpcyB1c2VkIHRvIHNwbGl0IHRoZSBjb21tYW5kIGxpbmUgaW50byBjb21tYW5kIGFuZCBhcmd1bWVudHMuCisgKi8KK2NoYXIgKnBhcnNlX3dvcmQgKGNoYXIgKnNvdXJjZSxjaGFyICpkZXN0KQoreworCWNoYXIgY2gsKnNvdXJjZV9wdHIsKnRhcmdldF9wdHI7CisKKwlpZiAoKnNvdXJjZT09MCkgeworCQkqZGVzdD0wOworCQlyZXR1cm4gKHNvdXJjZSk7CisJfTsKKworCXNvdXJjZV9wdHI9c291cmNlO3RhcmdldF9wdHI9ZGVzdDsKKwlkbyB7CisJCWNoPSpzb3VyY2VfcHRyKys7CisJfSB3aGlsZSAoISAoY2g+JyAnICYmIGNoPD0neicpICYmIGNoIT0wKTsKKworCXdoaWxlIChjaD4nICcgJiYgY2g8PSd6JykgeworCQkqdGFyZ2V0X3B0cisrPWNoOworCQljaD0qc291cmNlX3B0cisrOworCX0KKworCSp0YXJnZXRfcHRyPTA7CisKKwlzb3VyY2VfcHRyLS07CisJZG8geworCQljaD0qc291cmNlX3B0cisrOworCX0gd2hpbGUgKCEgKGNoPicgJyAmJiBjaDw9J3onKSAmJiBjaCE9MCk7CisKKwlyZXR1cm4gKC0tc291cmNlX3B0cik7Cit9CisKKy8qCisgKiB0ZXh0IGlzIHRoZSBwYXJ0aWFsIGNvbW1hbmQgZW50ZXJlZCBieSB0aGUgdXNlcjsgV2UgYXNzdW1lIHRoYXQgaXQKKyAqIGlzIGEgcGFydCBvZiBhIGNvbW1hbmQgLSBJIGRpZG4ndCB3cml0ZSBjb2RlIGZvciBzbWFydGVyIGNvbXBsZXRpb24uCisgKgorICogVGhlIHN0YXRlIHZhcmlhYmxlIGlzIGFuIGluZGV4IHdoaWNoIHRlbGxzIHVzIGhvdyBtYW55IHBvc3NpYmxlCisgKiBjb21wbGV0aW9ucyB3ZSBhbHJlYWR5IHJldHVybmVkIHRvIHJlYWRsaW5lLgorICoKKyAqIFdlIHJldHVybiBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIG9yIChjaGFyICopIE5VTEwgaWYgdGhlcmUKKyAqIGFyZSBubyBtb3JlIGNvbXBsZXRpb25zLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJ5IHJlYWRsaW5lCisgKiBvdmVyIGFuZCBvdmVyIHVudGlsIHdlIHRlbGwgaXQgdG8gc3RvcC4KKyAqCisgKiBXaGlsZSBzY2FubmluZyBmb3IgcG9zc2libGUgY29tcGxldGlvbnMsIHdlIHVzZSB0aGUgc2FtZSBwcmlvcml0eQorICogZGVmaW5pdGlvbiB3aGljaCB3YXMgdXNlZCBpbiBkaXNwYXRjaC4KKyAqLworI2lmIEhBVkVfUkVBRExJTkUKK2NoYXIgKmNvbXBsZXRlX2NvbW1hbmQgKGNoYXIgKnRleHQsaW50IHN0YXRlKQoreworCWludCBzdGF0ZV9pbmRleD0tMTsKKwlpbnQgaSxsZW47CisKKwlsZW49c3RybGVuICh0ZXh0KTsKKworCS8qIElzIHRoZSBjb21tYW5kIHR5cGUgc3BlY2lmaWMgPyAqLworCisJaWYgKGN1cnJlbnRfdHlwZSAhPSBOVUxMKQorCQlmb3IgKGk9MDtpPD1jdXJyZW50X3R5cGUtPnR5cGVfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQkJaWYgKHN0cm5jbXAgKGN1cnJlbnRfdHlwZS0+dHlwZV9jb21tYW5kcy5uYW1lcyBbaV0sdGV4dCxsZW4pPT0wKSB7CisJCQkJc3RhdGVfaW5kZXgrKzsKKwkJCQlpZiAoc3RhdGU9PXN0YXRlX2luZGV4KSB7CisJCQkJCXJldHVybiAoZHVwc3RyIChjdXJyZW50X3R5cGUtPnR5cGVfY29tbWFuZHMubmFtZXMgW2ldKSk7CisJCQkJfQorCQkJfQorCQl9CisKKwkvKiBObywgcGVoYXBzIGV4dDIgc3BlY2lmaWMgY29tbWFuZCB0aGVuID8gKi8KKworCWZvciAoaT0wO2k8PWV4dDJfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQlpZiAoc3RybmNtcCAoZXh0Ml9jb21tYW5kcy5uYW1lcyBbaV0sdGV4dCxsZW4pPT0wKSB7CisJCQlzdGF0ZV9pbmRleCsrOworCQkJaWYgKHN0YXRlPT1zdGF0ZV9pbmRleCkKKwkJCXJldHVybiAoZHVwc3RyIChleHQyX2NvbW1hbmRzLm5hbWVzIFtpXSkpOworCQl9CisJfQorCisKKwkvKiBDaGVjayBmb3IgYSBnZW5lcmFsIGNvbW1hbmQgKi8KKworCWZvciAoaT0wO2k8PWdlbmVyYWxfY29tbWFuZHMubGFzdF9jb21tYW5kO2krKykgeworCQlpZiAoc3RybmNtcCAoZ2VuZXJhbF9jb21tYW5kcy5uYW1lcyBbaV0sdGV4dCxsZW4pPT0wKSB7CisJCQkJc3RhdGVfaW5kZXgrKzsKKwkJCQlpZiAoc3RhdGU9PXN0YXRlX2luZGV4KQorCQkJCQlyZXR1cm4gKGR1cHN0ciAoZ2VuZXJhbF9jb21tYW5kcy5uYW1lcyBbaV0pKTsKKwkJfQorCX0KKworCS8qIHF1aXQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSAqLworCisJaWYgKHN0cm5jbXAgKCJxdWl0Iix0ZXh0LGxlbik9PTApIHsKKwkJc3RhdGVfaW5kZXgrKzsKKwkJaWYgKHN0YXRlPT1zdGF0ZV9pbmRleCkKKwkJCXJldHVybiAoZHVwc3RyICgicXVpdCIpKTsKKwl9CisKKwkvKiBObyBtb3JlIGNvbXBsZXRpb25zICovCisKKwlyZXR1cm4gKChjaGFyICopIE5VTEwpOworfQorI2VuZGlmCisKKworLyoKKyAqIE5vdGhpbmcgc3BlY2lhbCAtIEp1c3QgYWxsb2NhdGVzIGVub3VnaCBzcGFjZSBhbmQgY29weSB0aGUgc3RyaW5nLgorICovCitjaGFyICpkdXBzdHIgKGNoYXIgKnNyYykKK3sKKwljaGFyICpwdHI7CisKKwlwdHI9KGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKHNyYykrMSk7CisJc3RyY3B5IChwdHIsc3JjKTsKKwlyZXR1cm4gKHB0cik7Cit9CisKKyNpZmRlZiBERUJVRworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmVwb3J0cyBhbiBpbnRlcm5hbCBlcnJvci4gSXQgaXMgYWxtb3N0IG5vdCB1c2VkLiBPbmUKKyAqIHBsYWNlIGluIHdoaWNoIEkgZG8gY2hlY2sgZm9yIGludGVybmFsIGVycm9ycyBpcyBkaXNrLmMuCisgKgorICogV2UganVzdCByZXBvcnQgdGhlIGVycm9yLCBhbmQgdHJ5IHRvIGNvbnRpbnVlIC4uLgorICovCit2b2lkIGludGVybmFsX2Vycm9yIChjaGFyICpkZXNjcmlwdGlvbixjaGFyICpzb3VyY2VfbmFtZSxjaGFyICpmdW5jdGlvbl9uYW1lKQoreworCXdwcmludHcgKGNvbW1hbmRfd2luLCJJbnRlcm5hbCBlcnJvciAtIEZvdW5kIGJ5IHNvdXJjZTogJXMuYyAsIGZ1bmN0aW9uOiAlc1xuIixzb3VyY2VfbmFtZSxmdW5jdGlvbl9uYW1lKTsKKwl3cHJpbnR3IChjb21tYW5kX3dpbiwiXHQlc1xuIixkZXNjcmlwdGlvbik7CisJd3ByaW50dyAoY29tbWFuZF93aW4sIlByZXNzIGVudGVyIHRvIChob3BlZnVsbHkpIGNvbnRpbnVlXG4iKTsKKwlyZWZyZXNoX2NvbW1hbmRfd2luICgpO2dldGNoICgpO3dlcmFzZSAoY29tbWFuZF93aW4pOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9leHQyZWQvc3VwZXJfY29tLmMgYi9lMmZzcHJvZ3MvZXh0MmVkL3N1cGVyX2NvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTg5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvZXh0MmVkL3N1cGVyX2NvbS5jCkBAIC0wLDAgKzEsMTU2IEBACisvKgorCisvdXNyL3NyYy9leHQyZWQvc3VwZXJfY29tLmMKKworQSBwYXJ0IG9mIHRoZSBleHRlbmRlZCBmaWxlIHN5c3RlbSAyIGRpc2sgZWRpdG9yLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIYW5kbGVzIHRoZSBzdXBlcmJsb2NrCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpcnN0IHdyaXR0ZW4gb246IEFwcmlsIDkgMTk5NQorCitDb3B5cmlnaHQgKEMpIDE5OTUgR2FkaSBPeG1hbgorCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNpbmNsdWRlICJleHQyZWQuaCIKKwordm9pZCB0eXBlX2V4dDJfc3VwZXJfYmxvY2tfX19zaG93IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXI7CisJc3VwZXI9JnR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jazsKKworCXNob3cgKGNvbW1hbmRfbGluZSk7CisKKwlpZiAoZXh0MmZzX2Jsb2Nrc19jb3VudChzdXBlcikgIT0gMCkgeworCQl3bW92ZSAoc2hvd19wYWQsMiw0MCk7d3ByaW50dyAoc2hvd19wYWQsIiUyLjJmJSUiLDEwMCooZmxvYXQpIGV4dDJmc19yX2Jsb2Nrc19jb3VudChzdXBlcikvIChmbG9hdCkgZXh0MmZzX2Jsb2Nrc19jb3VudChzdXBlcikpOworCQl3bW92ZSAoc2hvd19wYWQsMyw0MCk7d3ByaW50dyAoc2hvd19wYWQsIiUyLjJmJSUiLDEwMCooZmxvYXQpIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChzdXBlcikvIChmbG9hdCkgZXh0MmZzX2Jsb2Nrc19jb3VudChzdXBlcikpOworCX0KKworCWlmIChzdXBlci0+c19pbm9kZXNfY291bnQgIT0gMCkgeworCQl3bW92ZSAoc2hvd19wYWQsNCw0MCk7d3ByaW50dyAoc2hvd19wYWQsIiUyLjJmJSUiLDEwMCooZmxvYXQpIHN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50LyAoZmxvYXQpIHN1cGVyLT5zX2lub2Rlc19jb3VudCk7CisJfQorCisJd21vdmUgKHNob3dfcGFkLDYsNDApOworCXN3aXRjaCAoc3VwZXItPnNfbG9nX2Jsb2NrX3NpemUpIHsKKwkJY2FzZSAwOgl3cHJpbnR3IChzaG93X3BhZCwiMTAyNCBieXRlcyIpO2JyZWFrOworCQljYXNlIDE6IHdwcmludHcgKHNob3dfcGFkLCIyMDQ4IGJ5dGVzIik7YnJlYWs7CisJCWNhc2UgMjogd3ByaW50dyAoc2hvd19wYWQsIjQwOTYgYnl0ZXMiKTticmVhazsKKwl9CisJd21vdmUgKHNob3dfcGFkLDExLDQwKTt3cHJpbnR3IChzaG93X3BhZCwiJXMiLGN0aW1lICgodGltZV90ICopICZ0eXBlX2RhdGEudS50X2V4dDJfc3VwZXJfYmxvY2suc19tdGltZSkpOworCXdtb3ZlIChzaG93X3BhZCwxMiw0MCk7d3ByaW50dyAoc2hvd19wYWQsIiVzIixjdGltZSAoKHRpbWVfdCAqKSAmdHlwZV9kYXRhLnUudF9leHQyX3N1cGVyX2Jsb2NrLnNfd3RpbWUpKTsKKwl3bW92ZSAoc2hvd19wYWQsMTksNDApO3dwcmludHcgKHNob3dfcGFkLCIlcyIsY3RpbWUgKCh0aW1lX3QgKikgJnR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jay5zX2xhc3RjaGVjaykpOworCXdtb3ZlIChzaG93X3BhZCwxNSw0MCk7CisKKwlzd2l0Y2ggKHR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jay5zX21hZ2ljKSB7CisJCWNhc2UgRVhUMl9TVVBFUl9NQUdJQzoKKwkJCXdwcmludHcgKHNob3dfcGFkLCJleHQyID49IDAuMkIiKTsKKwkJCWJyZWFrOworCQljYXNlIEVYVDJfUFJFXzAyQl9NQUdJQzoKKwkJCXdwcmludHcgKHNob3dfcGFkLCJleHQyIDwgMC4yQiAobm90IHN1cHBvcnRlZCkiKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJd3ByaW50dyAoc2hvd19wYWQsIlVua25vd24iKTsKKwkJCWJyZWFrOworCX0KKworCXdtb3ZlIChzaG93X3BhZCwxNiw0MCk7CisJaWYgKHR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jay5zX3N0YXRlICYgMHgxKQorCQl3cHJpbnR3IChzaG93X3BhZCwiY2xlYW4gIik7CisJZWxzZQorCQl3cHJpbnR3IChzaG93X3BhZCwibm90IGNsZWFuICIpOworCisJaWYgKHR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jay5zX3N0YXRlICYgMHgyKQorCQl3cHJpbnR3IChzaG93X3BhZCwid2l0aCBlcnJvcnMgIik7CisJZWxzZQorCQl3cHJpbnR3IChzaG93X3BhZCwid2l0aCBubyBlcnJvcnMiKTsKKworCXdtb3ZlIChzaG93X3BhZCwxNyw0MCk7CisKKwlzd2l0Y2ggKHR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jay5zX2Vycm9ycykgeworCQljYXNlIEVYVDJfRVJST1JTX0NPTlRJTlVFOgorCQkJd3ByaW50dyAoc2hvd19wYWQsIkNvbnRpbnVlIik7CisJCQlicmVhazsKKwkJY2FzZSBFWFQyX0VSUk9SU19STzoKKwkJCXdwcmludHcgKHNob3dfcGFkLCJSZW1vdW50IHJlYWQgb25seSIpOworCQkJYnJlYWs7CisJCWNhc2UgRVhUMl9FUlJPUlNfUEFOSUM6CisJCQl3cHJpbnR3IChzaG93X3BhZCwiSXNzdWUga2VybmVsIHBhbmljIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXdwcmludHcgKHNob3dfcGFkLCJVbmtub3duIik7CisJCQlicmVhazsKKwl9CisKKwl3bW92ZSAoc2hvd19wYWQsMjEsNDApOworCisJc3dpdGNoICh0eXBlX2RhdGEudS50X2V4dDJfc3VwZXJfYmxvY2suc19jcmVhdG9yX29zKSB7CisKKwkJY2FzZSBFWFQyX09TX0xJTlVYOgorCQkJd3ByaW50dyAoc2hvd19wYWQsIkxpbnV4IDotKSIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBFWFQyX09TX0hVUkQ6CisJCQl3cHJpbnR3IChzaG93X3BhZCwiSHVyZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCXdwcmludHcgKHNob3dfcGFkLCJVbmtub3duIik7CisJCQlicmVhazsKKwl9CisKKwlyZWZyZXNoX3Nob3dfcGFkICgpOworCisJd21vdmUgKHNob3dfd2luLDEsMCk7d3ByaW50dyAoc2hvd193aW4sIlxuIik7d21vdmUgKHNob3dfd2luLDIsMCk7CisJd3ByaW50dyAoc2hvd193aW4sIlN1cGVyYmxvY2sgY29weSAlbGQgIixzdXBlcl9pbmZvLmNvcHlfbnVtKTsKKwlpZiAoc3VwZXJfaW5mby5jb3B5X251bT09MCkKKwkJd3ByaW50dyAoc2hvd193aW4sIihtYWluIGNvcHkpIik7CisJd3ByaW50dyAoc2hvd193aW4sIlxuIik7CisJcmVmcmVzaF9zaG93X3dpbiAoKTsKK30KKwordm9pZCB0eXBlX2V4dDJfc3VwZXJfYmxvY2tfX19nb2NvcHkgKGNoYXIgKmNvbW1hbmRfbGluZSkKKworeworCXVuc2lnbmVkIGxvbmcgY29weV9udW0sb2Zmc2V0OworCWNoYXIgKnB0cixidWZmZXIgWzgwXTsKKworCXB0cj1wYXJzZV93b3JkIChjb21tYW5kX2xpbmUsYnVmZmVyKTsKKwlpZiAoKnB0cj09MCkgeworCQl3cHJpbnR3IChjb21tYW5kX3dpbiwiRXJyb3IgLSBObyBhcmd1bWVudCBzcGVjaWZpZWRcbiIpO3JlZnJlc2hfY29tbWFuZF93aW4gKCk7cmV0dXJuOworCX0KKwlwdHI9cGFyc2Vfd29yZCAocHRyLGJ1ZmZlcik7CisKKwljb3B5X251bT1hdG9sIChidWZmZXIpOworCisJb2Zmc2V0PWZpbGVfc3lzdGVtX2luZm8uc3VwZXJfYmxvY2tfb2Zmc2V0K2NvcHlfbnVtKmZpbGVfc3lzdGVtX2luZm8ubm9fYmxvY2tzX2luX2dyb3VwKmZpbGVfc3lzdGVtX2luZm8uYmxvY2tfc2l6ZTsKKworCWlmIChvZmZzZXQgPiBmaWxlX3N5c3RlbV9pbmZvLmZpbGVfc3lzdGVtX3NpemUpIHsKKwkJd3ByaW50dyAoY29tbWFuZF93aW4sIkVycm9yIC0gQ29weSBudW1iZXIgb3V0IG9mIGJvdW5kc1xuIik7cmVmcmVzaF9jb21tYW5kX3dpbiAoKTtyZXR1cm47CisJfQorCisJc3VwZXJfaW5mby5jb3B5X251bT1jb3B5X251bTsKKwlkZXZpY2Vfb2Zmc2V0PW9mZnNldDsKKworCXNwcmludGYgKGJ1ZmZlciwic2V0b2Zmc2V0ICVsZCIsZGV2aWNlX29mZnNldCk7ZGlzcGF0Y2ggKGJ1ZmZlcik7CisJc3RyY3B5IChidWZmZXIsInNob3ciKTtkaXNwYXRjaCAoYnVmZmVyKTsKK30KKwordm9pZCB0eXBlX2V4dDJfc3VwZXJfYmxvY2tfX19zZXRhY3RpdmVjb3B5IChjaGFyICpjb21tYW5kX2xpbmUpCisKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayBzYjsKKworCXNiPXR5cGVfZGF0YS51LnRfZXh0Ml9zdXBlcl9ibG9jazsKKwlkaXNwYXRjaCAoImdvY29weSAwIik7CisJdHlwZV9kYXRhLnUudF9leHQyX3N1cGVyX2Jsb2NrPXNiOworCWRpc3BhdGNoICgic2hvdyIpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2V4dDJlZC93aW4uYyBiL2UyZnNwcm9ncy9leHQyZWQvd2luLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNkMGRhMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9leHQyZWQvd2luLmMKQEAgLTAsMCArMSwyMzIgQEAKKy8qCisKKy91c3Ivc3JjL2V4dDJlZC93aW4uYworCitBIHBhcnQgb2YgdGhlIGV4dGVuZGVkIGZpbGUgc3lzdGVtIDIgZGlzayBlZGl0b3IuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitXaW5kb3cgbWFuYWdlbWVudCAtIEludGVyZmFjaW5nIHdpdGggdGhlIG5jdXJzZXMgbGlicmFyeQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRmlyc3Qgd3JpdHRlbiBvbjogQXByaWwgMTcgMTk5NQorTW9kaWZpZWQgb24gOiBBcHJpbCAwNSAyMDAxIENocmlzdGlhbi5CYWNAaW50LWV2cnkuZnIKK2l0IGxvb2tzIGxpa2UgcmVhZGxpbmUgZG9lcyBub3QgbGlrZSB0aGF0IGluaXRzY3IgZGVjaWRlcyB0byBzZXQgdGhlIHR0eSB0bworbm9lY2hvLgorCitDb3B5cmlnaHQgKEMpIDE5OTUgR2FkaSBPeG1hbgorCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlICJleHQyZWQuaCIKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKK3N0cnVjdCBzdHJ1Y3RfcGFkX2luZm8gc2hvd19wYWRfaW5mbzsKK1dJTkRPVyAqdGl0bGVfd2luLCpzaG93X3dpbiwqY29tbWFuZF93aW4sKm10X3dpbjEsKm10X3dpbjIsKnNob3dfcGFkOworCisvKiB0byByZW1lbWJlciBjb25maWd1cmF0aW9uIGFmdGVyIGluaXRzY3IKKyAqIGFuZCBtb2RpZnkgaXQKKyAqLworc3RydWN0IHRlcm1pb3MgdGVybWlvSW5pdCwgdGVybWlvQ3VycmVudDsKKwordm9pZCBkcmF3X3RpdGxlX3dpbiAodm9pZCkKK3sKKwljaGFyIHRpdGxlX3N0cmluZyBbMTI4XTsKKworCXdlcmFzZSh0aXRsZV93aW4pOworCWJveCAodGl0bGVfd2luLDAsMCk7CisJc3ByaW50ZiAodGl0bGVfc3RyaW5nLCJFWFQyRUQgLSBFeHRlbmRlZC0yIEZpbGUgU3lzdGVtIGVkaXRvciB2ZXIgJXMgKCVzKSIsIEUyRlNQUk9HU19WRVJTSU9OLCBFMkZTUFJPR1NfREFURSk7CisJd21vdmUgKHRpdGxlX3dpbixUSVRMRV9XSU5fTElORVMvMiwoQ09MUy1zdHJsZW4gKHRpdGxlX3N0cmluZykpLzIpOworCXdwcmludHcgKHRpdGxlX3dpbix0aXRsZV9zdHJpbmcpOworCXdyZWZyZXNoKHRpdGxlX3dpbik7Cit9CisKK3ZvaWQgc2V0dXBfc2hvd193aW4odm9pZCkKK3sKKwl3YmtnZHNldCAoc2hvd193aW4sQV9SRVZFUlNFKTt3ZXJhc2UgKHNob3dfd2luKTsKKwlzaG93X3BhZF9pbmZvLmxpbmU9MDsKKwlzaG93X3BhZF9pbmZvLmNvbD0wOworCXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcz1MSU5FUy1USVRMRV9XSU5fTElORVMtU0hPV19XSU5fTElORVMtQ09NTUFORF9XSU5fTElORVMtMjsKKwlzaG93X3BhZF9pbmZvLmRpc3BsYXlfY29scz1DT0xTOworCXNob3dfcGFkX2luZm8ubWF4X2xpbmU9c2hvd19wYWRfaW5mby5kaXNwbGF5X2xpbmVzLTE7c2hvd19wYWRfaW5mby5tYXhfY29sPXNob3dfcGFkX2luZm8uZGlzcGxheV9jb2xzLTE7CisJc2hvd19wYWRfaW5mby5kaXNhYmxlX291dHB1dD0wOworfQorCit2b2lkIGluaXRfd2luZG93cyAodm9pZCkKK3sKKwlpbml0c2NyICgpOworCXRjZ2V0YXR0cigwLCZ0ZXJtaW9Jbml0KTsgLyogc2F2ZSBpbml0aWFsIGNvbmZpZyAqLworCXRlcm1pb0N1cnJlbnQgPSB0ZXJtaW9Jbml0OworCXRlcm1pb0N1cnJlbnQuY19sZmxhZyB8PSBFQ0hPOyAvKiBzZXQgZWNobyBvbiAqLworCXRjc2V0YXR0cigwLFRDU0FOT1csJnRlcm1pb0N1cnJlbnQpOworCisJaWYgKExJTkVTPFRJVExFX1dJTl9MSU5FUytTSE9XX1dJTl9MSU5FUytDT01NQU5EX1dJTl9MSU5FUyszKSB7CisJCXByaW50ZiAoIlNvcnJ5LCB5b3VyIHRlcm1pbmFsIHNjcmVlbiBpcyB0b28gc21hbGxcbiIpOworCQlwcmludGYgKCJFcnJvciAtIENhbiBub3QgaW5pdGlhbGl6ZSB3aW5kb3dzXG4iKTsKKwkJZXhpdCAoMSk7CisJfQorCisJdGl0bGVfd2luPW5ld3dpbiAoVElUTEVfV0lOX0xJTkVTLENPTFMsMCwwKTsKKwlzaG93X3dpbj1uZXd3aW4gKFNIT1dfV0lOX0xJTkVTLENPTFMsVElUTEVfV0lOX0xJTkVTLDApOworCXNob3dfcGFkPW5ld3BhZCAoU0hPV19QQURfTElORVMsU0hPV19QQURfQ09MUyk7CisJbXRfd2luMT1uZXd3aW4gKDEsQ09MUyxUSVRMRV9XSU5fTElORVMrU0hPV19XSU5fTElORVMsMCk7CisJbXRfd2luMj1uZXd3aW4gKDEsQ09MUyxMSU5FUy1DT01NQU5EX1dJTl9MSU5FUy0xLDApOworCWNvbW1hbmRfd2luPW5ld3dpbiAoQ09NTUFORF9XSU5fTElORVMsQ09MUyxMSU5FUy1DT01NQU5EX1dJTl9MSU5FUywwKTsKKworCWlmICh0aXRsZV93aW49PU5VTEwgfHwgc2hvd193aW49PU5VTEwgfHwgc2hvd19wYWQ9PU5VTEwgfHwgY29tbWFuZF93aW49PU5VTEwpIHsKKwkJcHJpbnRmICgiRXJyb3IgLSBOb3QgZW5vdWdoIG1lbW9yeSAtIENhbiBub3QgaW5pdGlhbGl6ZSB3aW5kb3dzXG4iKTtleGl0ICgxKTsKKwl9CisKKwlkcmF3X3RpdGxlX3dpbigpOworCisJc2V0dXBfc2hvd193aW4oKTsKKworCXNjcm9sbG9rIChjb21tYW5kX3dpbixUUlVFKTsKKworCXJlZnJlc2hfdGl0bGVfd2luICgpOworCXJlZnJlc2hfc2hvd193aW4gKCk7CisJcmVmcmVzaF9zaG93X3BhZCgpOworCXJlZnJlc2hfY29tbWFuZF93aW4gKCk7CisJd3JlZnJlc2gobXRfd2luMSk7CisJd3JlZnJlc2gobXRfd2luMik7Cit9CisKK3ZvaWQgcmVmcmVzaF90aXRsZV93aW4gKHZvaWQpCit7CisJd3JlZnJlc2ggKHRpdGxlX3dpbik7Cit9CisKK3ZvaWQgcmVmcmVzaF9zaG93X3dpbiAodm9pZCkKK3sKKwlpbnQgY3VycmVudF9wYWdlLHRvdGFsX3BhZ2VzOworCisJY3VycmVudF9wYWdlPXNob3dfcGFkX2luZm8ubGluZS9zaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMrMTsKKwlpZiAoc2hvd19wYWRfaW5mby5saW5lJXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcykKKwkJY3VycmVudF9wYWdlKys7CisJdG90YWxfcGFnZXM9c2hvd19wYWRfaW5mby5tYXhfbGluZS9zaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMrMTsKKworCXdtb3ZlIChzaG93X3dpbiwyLENPTFMtMTgpOworCXdwcmludHcgKHNob3dfd2luLCJQYWdlICVkIG9mICVkXG4iLGN1cnJlbnRfcGFnZSx0b3RhbF9wYWdlcyk7CisKKwl3bW92ZSAoc2hvd193aW4sMixDT0xTLTE4KTsKKwl3cmVmcmVzaCAoc2hvd193aW4pOworfQorCisKK3ZvaWQgcmVmcmVzaF9zaG93X3BhZCAodm9pZCkKKworeworCWludCBsZWZ0LHRvcCxyaWdodCxib3R0b20saTsKKworCWlmIChzaG93X3BhZF9pbmZvLmRpc2FibGVfb3V0cHV0KQorCQlyZXR1cm47CisKKwlpZiAoc2hvd19wYWRfaW5mby5tYXhfbGluZSA8IHNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcy0xKSB7CisJCWZvciAoaT1zaG93X3BhZF9pbmZvLm1heF9saW5lKzE7aTxzaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXM7aSsrKSB7CisJCQl3bW92ZSAoc2hvd19wYWQsaSwwKTt3cHJpbnR3IChzaG93X3BhZCwiXG4iKTsKKwkJfQorCX0KKwlsZWZ0PTA7cmlnaHQ9c2hvd19wYWRfaW5mby5kaXNwbGF5X2NvbHMtMTsKKwl0b3A9VElUTEVfV0lOX0xJTkVTK1NIT1dfV0lOX0xJTkVTKzE7Ym90dG9tPXRvcCtzaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMtMTsKKworCWlmIChzaG93X3BhZF9pbmZvLmxpbmUgPiBzaG93X3BhZF9pbmZvLm1heF9saW5lLXNob3dfcGFkX2luZm8uZGlzcGxheV9saW5lcysxKQorCQlzaG93X3BhZF9pbmZvLmxpbmU9c2hvd19wYWRfaW5mby5tYXhfbGluZS1zaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMrMTsKKworCWlmIChzaG93X3BhZF9pbmZvLmxpbmUgPCAwKQorCQlzaG93X3BhZF9pbmZvLmxpbmU9MDsKKworI2lmZGVmIE9MRF9OQ1VSU0VTCisJcHJlZnJlc2ggKHNob3dfcGFkLHNob3dfcGFkX2luZm8ubGluZSxzaG93X3BhZF9pbmZvLmNvbCx0b3AsbGVmdCxzaG93X3BhZF9pbmZvLmRpc3BsYXlfbGluZXMtMSxzaG93X3BhZF9pbmZvLmRpc3BsYXlfY29scy0xKTsKKyNlbHNlCisJcHJlZnJlc2ggKHNob3dfcGFkLHNob3dfcGFkX2luZm8ubGluZSxzaG93X3BhZF9pbmZvLmNvbCx0b3AsbGVmdCx0b3Arc2hvd19wYWRfaW5mby5kaXNwbGF5X2xpbmVzLTEsbGVmdCtzaG93X3BhZF9pbmZvLmRpc3BsYXlfY29scy0xKTsKKyNlbmRpZgorfQorCit2b2lkIHJlZnJlc2hfY29tbWFuZF93aW4gKHZvaWQpCit7CisJd3JlZnJlc2ggKGNvbW1hbmRfd2luKTsKK30KKwordm9pZCBjbG9zZV93aW5kb3dzICh2b2lkKQoreworLy8JZWNobyAoKTsKKwl0Y3NldGF0dHIoMCxUQ1NBTk9XLCZ0ZXJtaW9Jbml0KTsKKworCWRlbHdpbiAodGl0bGVfd2luKTsKKwlkZWx3aW4gKGNvbW1hbmRfd2luKTsKKwlkZWx3aW4gKHNob3dfd2luKTsKKwlkZWx3aW4gKHNob3dfcGFkKTsKKworCWVuZHdpbiAoKTsKK30KKwordm9pZCBzaG93X2luZm8gKHZvaWQpCit7CisJaW50IGJsb2NrX251bSxibG9ja19vZmZzZXQ7CisKKwlibG9ja19udW09ZGV2aWNlX29mZnNldC9maWxlX3N5c3RlbV9pbmZvLmJsb2NrX3NpemU7CisJYmxvY2tfb2Zmc2V0PWRldmljZV9vZmZzZXQlZmlsZV9zeXN0ZW1faW5mby5ibG9ja19zaXplOworCisJd21vdmUgKHNob3dfd2luLDAsMCk7CisJd3ByaW50dyAoc2hvd193aW4sIk9mZnNldCAlLTNsZCBpbiBibG9jayAlbGQuICIsYmxvY2tfb2Zmc2V0LGJsb2NrX251bSk7CisJaWYgKGN1cnJlbnRfdHlwZSAhPSBOVUxMKQorCQl3cHJpbnR3IChzaG93X3dpbiwiVHlwZTogJXNcbiIsY3VycmVudF90eXBlLT5uYW1lKTsKKwllbHNlCisJCXdwcmludHcgKHNob3dfd2luLCJUeXBlOiAlc1xuIiwibm9uZSIpOworCisJcmVmcmVzaF9zaG93X3dpbiAoKTsKK30KKworCit2b2lkIHJlZHJhd19hbGwgKHZvaWQpCit7CisJaW50IG1pbl9saW5lcyA9IFRJVExFX1dJTl9MSU5FUytTSE9XX1dJTl9MSU5FUytDT01NQU5EX1dJTl9MSU5FUyszOworCXN0cnVjdCB3aW5zaXplIHdzOworCWludAlzYXZlX2NvbCwgc2F2ZV9saW5lczsKKworCS8qIGdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIHN0ZG91dCAqLworCWlvY3RsKDEsIFRJT0NHV0lOU1osICZ3cyk7CisJLyoKKwkgKiBEbyBpdCBhZ2FpbiBiZWNhdXNlIEdEQiBkb2Vzbid0IHN0b3AgYmVmb3JlIHRoZSBmaXJzdCBpb2N0bAorCSAqIGNhbGwsIHdlIHdhbnQgYW4gdXAtdG8tZGF0ZSBzaXplIHdoZW4gd2UncmUKKwkgKiBzaW5nbGUtc3RlcHBpbmcuCisJICovCisJaWYgKGlvY3RsKDEsIFRJT0NHV0lOU1osICZ3cykgPT0gMCkgeworCQlpZiAod3Mud3Nfcm93IDwgbWluX2xpbmVzKQorCQkJd3Mud3Nfcm93ID0gbWluX2xpbmVzOworCQlpZiAoKHdzLndzX3JvdyAhPSBMSU5FUykgfHwgKHdzLndzX2NvbCAhPSBDT0xTKSkgeworCQkJd21vdmUgKHNob3dfd2luLDIsQ09MUy0xOCk7CisJCQl3Y2xydG9lb2woc2hvd193aW4pOworCQkJd3JlZnJlc2goc2hvd193aW4pOworCQkJcmVzaXpldGVybSh3cy53c19yb3csIHdzLndzX2NvbCk7CisJCQl3cmVzaXplKHRpdGxlX3dpbiwgVElUTEVfV0lOX0xJTkVTLENPTFMpOworCQkJd3Jlc2l6ZShzaG93X3dpbiwgU0hPV19XSU5fTElORVMsQ09MUyk7CisJCQl3cmVzaXplKGNvbW1hbmRfd2luLCBDT01NQU5EX1dJTl9MSU5FUyxDT0xTKTsKKwkJCXdyZXNpemUobXRfd2luMSwgMSxDT0xTKTsKKwkJCXdyZXNpemUobXRfd2luMiwgMSxDT0xTKTsKKwkJCW12d2luKG10X3dpbjIsIExJTkVTLUNPTU1BTkRfV0lOX0xJTkVTLTEsMCk7CisJCQltdndpbihjb21tYW5kX3dpbiwgTElORVMtQ09NTUFORF9XSU5fTElORVMsMCk7CisJCQlkcmF3X3RpdGxlX3dpbigpOworCQkJc2hvd19wYWRfaW5mby5kaXNwbGF5X2xpbmVzPUxJTkVTLVRJVExFX1dJTl9MSU5FUy1TSE9XX1dJTl9MSU5FUy1DT01NQU5EX1dJTl9MSU5FUy0yOworCQkJc2hvd19wYWRfaW5mby5kaXNwbGF5X2NvbHM9Q09MUzsKKwkJfQorCX0KKwljbGVhcm9rKHRpdGxlX3dpbiwgMSk7CisJY2xlYXJvayhzaG93X3dpbiwgMSk7CisJY2xlYXJvayhjb21tYW5kX3dpbiwgMSk7CisJY2xlYXJvayhtdF93aW4xLCAxKTsKKwljbGVhcm9rKG10X3dpbjIsIDEpOworCXdyZWZyZXNoKG10X3dpbjEpOworCXdyZWZyZXNoKG10X3dpbjIpOworCXJlZnJlc2hfc2hvd19wYWQoKTsKKwlyZWZyZXNoX3Nob3dfd2luKCk7CisJcmVmcmVzaF90aXRsZV93aW4gKCk7CisJcmVmcmVzaF9jb21tYW5kX3dpbiAoKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvYXNtL3R5cGVzLmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L2FzbS90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMWM4ODkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L2FzbS90eXBlcy5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlICIuLi9saW51eC90eXBlcy5oIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9jb25maWcuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2OWQyMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvY29uZmlnLmgKQEAgLTAsMCArMSwyMSBAQAorCisjZGVmaW5lIF9JTk9fVF9ERUZJTkVEIDEKKworI2RlZmluZSBIQVZFX1NURExJQl9IICAxCisjZGVmaW5lIEhBVkVfU1RSSU5HX0ggIDEKKyNkZWZpbmUgSEFWRV9HRVRPUFRfSCAgMQorI2RlZmluZSBIQVZFX0VSUk5PX0ggICAxCisjZGVmaW5lIEhBVkVfU0VUSk1QX0ggIDEKKworI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQorI2RlZmluZSBzdHJjYXNlY21wICAgICBfc3RyaWNtcAorI2RlZmluZSBzdHJuY2FzZWNtcCAgICAgX3N0cm5pY21wCisKKyNkZWZpbmUgSEFWRV9DT05JT19IICAgMQorCisjZGVmaW5lIEhBVkVfRVhUMl9JTk9ERV9WRVJTSU9OIDEKKworI2RlZmluZSBpbmxpbmUgX19mb3JjZWlubGluZQorCisjZGVmaW5lIF9DVFlQRV9ESVNBQkxFX01BQ1JPUworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L2RpcmVudC5oIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9kaXJlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9kaXJlbnQuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9nZXRvcHQuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvZ2V0b3B0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhZDQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvZ2V0b3B0LmgKQEAgLTAsMCArMSwxMzUgQEAKKy8qIERlY2xhcmF0aW9ucyBmb3IgZ2V0b3B0LgorICAgQ29weXJpZ2h0IChDKSAxOTg5LDkwLDkxLDkyLDkzLDk0LDk2LDk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlCisgICBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAorICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworCisjaWZuZGVmIF9HRVRPUFRfSAorI2RlZmluZSBfR0VUT1BUX0ggMQorCisjaWZkZWYJX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyNpZm5kZWYgR0VUT1BUX1ZBUklBQkxFCisjZGVmaW5lIEdFVE9QVF9WQVJJQUJMRQorI2VuZGlmCisKKy8qIEZvciBjb21tdW5pY2F0aW9uIGZyb20gYGdldG9wdCcgdG8gdGhlIGNhbGxlci4KKyAgIFdoZW4gYGdldG9wdCcgZmluZHMgYW4gb3B0aW9uIHRoYXQgdGFrZXMgYW4gYXJndW1lbnQsCisgICB0aGUgYXJndW1lbnQgdmFsdWUgaXMgcmV0dXJuZWQgaGVyZS4KKyAgIEFsc28sIHdoZW4gYG9yZGVyaW5nJyBpcyBSRVRVUk5fSU5fT1JERVIsCisgICBlYWNoIG5vbi1vcHRpb24gQVJHVi1lbGVtZW50IGlzIHJldHVybmVkIGhlcmUuICAqLworCitleHRlcm4gR0VUT1BUX1ZBUklBQkxFIGNoYXIgKm9wdGFyZzsKKworLyogSW5kZXggaW4gQVJHViBvZiB0aGUgbmV4dCBlbGVtZW50IHRvIGJlIHNjYW5uZWQuCisgICBUaGlzIGlzIHVzZWQgZm9yIGNvbW11bmljYXRpb24gdG8gYW5kIGZyb20gdGhlIGNhbGxlcgorICAgYW5kIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gc3VjY2Vzc2l2ZSBjYWxscyB0byBgZ2V0b3B0Jy4KKworICAgT24gZW50cnkgdG8gYGdldG9wdCcsIHplcm8gbWVhbnMgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbDsgaW5pdGlhbGl6ZS4KKworICAgV2hlbiBgZ2V0b3B0JyByZXR1cm5zIC0xLCB0aGlzIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgb2YgdGhlCisgICBub24tb3B0aW9uIGVsZW1lbnRzIHRoYXQgdGhlIGNhbGxlciBzaG91bGQgaXRzZWxmIHNjYW4uCisKKyAgIE90aGVyd2lzZSwgYG9wdGluZCcgY29tbXVuaWNhdGVzIGZyb20gb25lIGNhbGwgdG8gdGhlIG5leHQKKyAgIGhvdyBtdWNoIG9mIEFSR1YgaGFzIGJlZW4gc2Nhbm5lZCBzbyBmYXIuICAqLworCitleHRlcm4gR0VUT1BUX1ZBUklBQkxFIGludCBvcHRpbmQ7CisKKy8qIENhbGxlcnMgc3RvcmUgemVybyBoZXJlIHRvIGluaGliaXQgdGhlIGVycm9yIG1lc3NhZ2UgYGdldG9wdCcgcHJpbnRzCisgICBmb3IgdW5yZWNvZ25pemVkIG9wdGlvbnMuICAqLworCitleHRlcm4gR0VUT1BUX1ZBUklBQkxFIGludCBvcHRlcnI7CisKKy8qIFNldCB0byBhbiBvcHRpb24gY2hhcmFjdGVyIHdoaWNoIHdhcyB1bnJlY29nbml6ZWQuICAqLworCitleHRlcm4gR0VUT1BUX1ZBUklBQkxFIGludCBvcHRvcHQ7CisKKy8qIERlc2NyaWJlIHRoZSBsb25nLW5hbWVkIG9wdGlvbnMgcmVxdWVzdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAgIFRoZSBMT05HX09QVElPTlMgYXJndW1lbnQgdG8gZ2V0b3B0X2xvbmcgb3IgZ2V0b3B0X2xvbmdfb25seSBpcyBhIHZlY3RvcgorICAgb2YgYHN0cnVjdCBvcHRpb24nIHRlcm1pbmF0ZWQgYnkgYW4gZWxlbWVudCBjb250YWluaW5nIGEgbmFtZSB3aGljaCBpcworICAgemVyby4KKworICAgVGhlIGZpZWxkIGBoYXNfYXJnJyBpczoKKyAgIG5vX2FyZ3VtZW50CQkob3IgMCkgaWYgdGhlIG9wdGlvbiBkb2VzIG5vdCB0YWtlIGFuIGFyZ3VtZW50LAorICAgcmVxdWlyZWRfYXJndW1lbnQJKG9yIDEpIGlmIHRoZSBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQsCisgICBvcHRpb25hbF9hcmd1bWVudCAJKG9yIDIpIGlmIHRoZSBvcHRpb24gdGFrZXMgYW4gb3B0aW9uYWwgYXJndW1lbnQuCisKKyAgIElmIHRoZSBmaWVsZCBgZmxhZycgaXMgbm90IE5VTEwsIGl0IHBvaW50cyB0byBhIHZhcmlhYmxlIHRoYXQgaXMgc2V0CisgICB0byB0aGUgdmFsdWUgZ2l2ZW4gaW4gdGhlIGZpZWxkIGB2YWwnIHdoZW4gdGhlIG9wdGlvbiBpcyBmb3VuZCwgYnV0CisgICBsZWZ0IHVuY2hhbmdlZCBpZiB0aGUgb3B0aW9uIGlzIG5vdCBmb3VuZC4KKworICAgVG8gaGF2ZSBhIGxvbmctbmFtZWQgb3B0aW9uIGRvIHNvbWV0aGluZyBvdGhlciB0aGFuIHNldCBhbiBgaW50JyB0bworICAgYSBjb21waWxlZC1pbiBjb25zdGFudCwgc3VjaCBhcyBzZXQgYSB2YWx1ZSBmcm9tIGBvcHRhcmcnLCBzZXQgdGhlCisgICBvcHRpb24ncyBgZmxhZycgZmllbGQgdG8gemVybyBhbmQgaXRzIGB2YWwnIGZpZWxkIHRvIGEgbm9uemVybworICAgdmFsdWUgKHRoZSBlcXVpdmFsZW50IHNpbmdsZS1sZXR0ZXIgb3B0aW9uIGNoYXJhY3RlciwgaWYgdGhlcmUgaXMKKyAgIG9uZSkuICBGb3IgbG9uZyBvcHRpb25zIHRoYXQgaGF2ZSBhIHplcm8gYGZsYWcnIGZpZWxkLCBgZ2V0b3B0JworICAgcmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIGB2YWwnIGZpZWxkLiAgKi8KKworc3RydWN0IG9wdGlvbgoreworI2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXworICBjb25zdCBjaGFyICpuYW1lOworI2Vsc2UKKyAgY2hhciAqbmFtZTsKKyNlbmRpZgorICAvKiBoYXNfYXJnIGNhbid0IGJlIGFuIGVudW0gYmVjYXVzZSBzb21lIGNvbXBpbGVycyBjb21wbGFpbiBhYm91dAorICAgICB0eXBlIG1pc21hdGNoZXMgaW4gYWxsIHRoZSBjb2RlIHRoYXQgYXNzdW1lcyBpdCBpcyBhbiBpbnQuICAqLworICBpbnQgaGFzX2FyZzsKKyAgaW50ICpmbGFnOworICBpbnQgdmFsOworfTsKKworLyogTmFtZXMgZm9yIHRoZSB2YWx1ZXMgb2YgdGhlIGBoYXNfYXJnJyBmaWVsZCBvZiBgc3RydWN0IG9wdGlvbicuICAqLworCisjZGVmaW5lCW5vX2FyZ3VtZW50CQkwCisjZGVmaW5lIHJlcXVpcmVkX2FyZ3VtZW50CTEKKyNkZWZpbmUgb3B0aW9uYWxfYXJndW1lbnQJMgorCisjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIF9fU1REQ19fCisjaWZkZWYgX19HTlVfTElCUkFSWV9fCisvKiBNYW55IG90aGVyIGxpYnJhcmllcyBoYXZlIGNvbmZsaWN0aW5nIHByb3RvdHlwZXMgZm9yIGdldG9wdCwgd2l0aAorICAgZGlmZmVyZW5jZXMgaW4gdGhlIGNvbnN0cywgaW4gc3RkbGliLmguICBUbyBhdm9pZCBjb21waWxhdGlvbgorICAgZXJyb3JzLCBvbmx5IHByb3RvdHlwZSBnZXRvcHQgZm9yIHRoZSBHTlUgQyBsaWJyYXJ5LiAgKi8KK2V4dGVybiBpbnQgZ2V0b3B0IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGNvbnN0IGNoYXIgKnNob3J0b3B0cyk7CisjZWxzZSAvKiBub3QgX19HTlVfTElCUkFSWV9fICovCitleHRlcm4gaW50IGdldG9wdCAoKTsKKyNlbmRpZiAvKiBfX0dOVV9MSUJSQVJZX18gKi8KK2V4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndiwgY29uc3QgY2hhciAqc2hvcnRvcHRzLAorCQkgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdpbmQpOworZXh0ZXJuIGludCBnZXRvcHRfbG9uZ19vbmx5IChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCisJCQkgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKKwkJICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdpbmQpOworCisvKiBJbnRlcm5hbCBvbmx5LiAgVXNlcnMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgZGlyZWN0bHkuICAqLworZXh0ZXJuIGludCBfZ2V0b3B0X2ludGVybmFsIChpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsCisJCQkgICAgIGNvbnN0IGNoYXIgKnNob3J0b3B0cywKKwkJICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBvcHRpb24gKmxvbmdvcHRzLCBpbnQgKmxvbmdpbmQsCisJCQkgICAgIGludCBsb25nX29ubHkpOworI2Vsc2UgLyogbm90IF9fU1REQ19fICovCitleHRlcm4gaW50IGdldG9wdCAoKTsKK2V4dGVybiBpbnQgZ2V0b3B0X2xvbmcgKCk7CitleHRlcm4gaW50IGdldG9wdF9sb25nX29ubHkgKCk7CisKK2V4dGVybiBpbnQgX2dldG9wdF9pbnRlcm5hbCAoKTsKKyNlbmRpZiAvKiBfX1NURENfXyAqLworCisjaWZkZWYJX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX0dFVE9QVF9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L2dycC5oIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9ncnAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjAxOWJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9ncnAuaApAQCAtMCwwICsxLDE3IEBACisKKyNwcmFnbWEgb25jZQorCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fZ2lkX3Q7CitfX2lubGluZSBfX2dpZF90IGdldGdpZCh2b2lkKXtyZXR1cm4gMDt9CitfX2lubGluZSBzdHJ1Y3QgZ3JvdXAgKiBnZXRncm5hbShjaGFyKiBnKXtyZXR1cm4gMDt9CisKK3N0cnVjdCBncm91cAorICB7CisgICAgY2hhciAqZ3JfbmFtZTsKKyAgICBjaGFyICpncl9wYXNzd2Q7CisgICAgX19naWRfdCBncl9naWQ7CisgICAgY2hhciAqKmdyX21lbTsKKyAgfTsKKworI2RlZmluZSBnZXRncmdpZChpKSBOVUxMCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvbGludXgvdHlwZXMuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvbGludXgvdHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTViYzkwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9saW51eC90eXBlcy5oCkBAIC0wLDAgKzEsMjggQEAKKyNpZm5kZWYgX0xJTlVYX1RZUEVTX0gKKyNkZWZpbmUgX0xJTlVYX1RZUEVTX0gKKworI2lmbmRlZiBfTVNDX1ZFUgorI2Vycm9yICBfTVNDX1ZFUiBub3QgZGVmaW5lZAorI2VuZGlmCisKKwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDggX191ODsKK3R5cGVkZWYgc2lnbmVkIF9faW50OCBfX3M4OworCit0eXBlZGVmIHNpZ25lZCAgIF9faW50NjQgX19zNjQ7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgX191NjQ7CisKK3R5cGVkZWYJc2lnbmVkICAgX19pbnQxNglfX3MxNjsKK3R5cGVkZWYJdW5zaWduZWQgX19pbnQxNglfX3UxNjsKKwordHlwZWRlZglzaWduZWQgICBfX2ludDMyCV9fczMyOwordHlwZWRlZgl1bnNpZ25lZCBfX2ludDMyCV9fdTMyOworCit0eXBlZGVmCXNpZ25lZCAgIF9faW50NjQJX19zNjQ7Cit0eXBlZGVmCXVuc2lnbmVkIF9faW50NjQJX191NjQ7CisKKwordHlwZWRlZiBfX3UzMiBpbm9fdDsKKworCisjZW5kaWYgLyogTElOVVhfVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9wd2QuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvcHdkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyNGVhMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvcHdkLmgKQEAgLTAsMCArMSwyMiBAQAorCisjcHJhZ21hIG9uY2UKKwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3VpZF90OworX19pbmxpbmUgX191aWRfdCBnZXR1aWQodm9pZCl7cmV0dXJuIDA7fQorX19pbmxpbmUgaW50IGdldGV1aWQodm9pZCl7cmV0dXJuIDE7fQorX19pbmxpbmUgc3RydWN0IHBhc3N3ZCogZ2V0cHduYW0gKGNoYXIqIGcpe3JldHVybiAwO30KKworCitzdHJ1Y3QgcGFzc3dkCit7CisgIGNoYXIgKnB3X25hbWU7CisgIGNoYXIgKnB3X3Bhc3N3ZDsKKyAgX191aWRfdCBwd191aWQ7CisgIF9fZ2lkX3QgcHdfZ2lkOworICBjaGFyICpwd19nZWNvczsKKyAgY2hhciAqcHdfZGlyOworICBjaGFyICpwd19zaGVsbDsKK307CisKKyNkZWZpbmUgZ2V0cHd1aWQoaSkgTlVMTAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9maWxlLmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9maWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL2ZpbGUuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvaW9jdGwuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL2lvY3RsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL2lvY3RsLmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL3BhcmFtLmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9wYXJhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9wYXJhbS5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9yZXNvdXJjZS5oIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvcmVzb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvcmVzb3VyY2UuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvc29ja2V0LmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy9zb2NrZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvc29ja2V0LmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL3RpbWUuaCBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL3RpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWZkMTg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC9zeXMvdGltZS5oCkBAIC0wLDAgKzEgQEAKKyNpbmNsdWRlIDx0aW1lLmg+CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy93YWl0LmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3N5cy93YWl0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvc3lzL3dhaXQuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC90ZXJtaW9zLmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3Rlcm1pb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC90ZXJtaW9zLmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbmNsdWRlL25vbnVuaXgvdW5pc3RkLmggYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3VuaXN0ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNTM1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3VuaXN0ZC5oCkBAIC0wLDAgKzEsNDkgQEAKKworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHByb2Nlc3MuaD4KKyNpbmNsdWRlIDxpby5oPgorCisjZGVmaW5lIEVPUE5PVFNVUFAgIDk1CisKKyNkZWZpbmUgT19OT05CTE9DSyAgMAorI2RlZmluZSBPX1JET05MWSAgICBfT19SRE9OTFkKKyNkZWZpbmUgT19SRFdSICAgICAgX09fUkRXUgorCisjZGVmaW5lIHBvcGVuICAgX3BvcGVuCisjZGVmaW5lIHBjbG9zZSAgX3BjbG9zZQorI2RlZmluZSBzbGVlcCAgIF9zbGVlcAorI2RlZmluZSBzdGF0ICAgIF9zdGF0CisjZGVmaW5lIG9wZW4gICAgX29wZW4KKyNkZWZpbmUgY2xvc2UgICBfY2xvc2UKKyNkZWZpbmUgZnN0YXQgICBfZnN0YXQKKyNkZWZpbmUgcmVhZCAgICBfcmVhZAorI2RlZmluZSB3cml0ZSAgIF93cml0ZQorI2RlZmluZSBvZmZfdCAgIF9vZmZfdAorI2RlZmluZSBsc2VlayAgIF9sc2VlaworI2RlZmluZSBwdXRlbnYgIF9wdXRlbnYKKyNkZWZpbmUgZ2V0cGlkICBfZ2V0cGlkCisjZGVmaW5lIHV0aW1idWYgX3V0aW1idWYKKyNkZWZpbmUgc3lzX25lcnIgX3N5c19uZXJyCisjZGVmaW5lIHN5c19lcnJsaXN0IF9zeXNfZXJybGlzdAorI2RlZmluZSBpc2F0dHkgX2lzYXR0eQorI2RlZmluZSBnZXRjaCBfZ2V0Y2gKKworI2luY2x1ZGUgPGdycC5oPgorI2luY2x1ZGUgPHB3ZC5oPgorCisKKy8vIG5vLW9wZWQgc3luYworX19pbmxpbmUgdm9pZCBzeW5jKHZvaWQpe307CisKKworCisjZGVmaW5lIGdldHRpbWVvZmRheShwLCB2KSAoKHApLT50dl9zZWMgPSAocCktPnR2X3VzZWMgPSAwKQorCisKKyNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAorCisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC91dGltZS5oIGIvZTJmc3Byb2dzL2luY2x1ZGUvbm9udW5peC91dGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyODVmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5jbHVkZS9ub251bml4L3V0aW1lLmgKQEAgLTAsMCArMSBAQAorI2luY2x1ZGUgPHN5cy91dGltZS5oPgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luc3RhbGwtdXRpbHMvY29tcGlsZV9tYW5wYWdlcyBiL2UyZnNwcm9ncy9pbnN0YWxsLXV0aWxzL2NvbXBpbGVfbWFucGFnZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzYmJkYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnN0YWxsLXV0aWxzL2NvbXBpbGVfbWFucGFnZXMKQEAgLTAsMCArMSwxOCBAQAorIyEvYmluL3NoCisKK01BTjg9ImRlYnVnZnMgYmFkYmxvY2tzIGUyZnNjayBta2UyZnMgZHVtcGUyZnMgbWtsb3N0K2ZvdW5kIFwKKwlmc2NrIHR1bmUyZnMiCitNQU4xPSJsc2F0dHIgY2hhdHRyIgorCitmb3IgaSBpbiAkTUFOOAorZG8KKwltYW4gLVMgOCAkaSA+IC9kZXYvbnVsbAorZG9uZQorCisKK2ZvciBpIGluICRNQU4xCitkbworCW1hbiAtUyAxICRpID4gL2Rldi9udWxsCitkb25lCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2luc3RhbGwtdXRpbHMvY29udmZzdGFiIGIvZTJmc3Byb2dzL2luc3RhbGwtdXRpbHMvY29udmZzdGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMTYwYmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5zdGFsbC11dGlscy9jb252ZnN0YWIKQEAgLTAsMCArMSw3OCBAQAorIyEvYmluL3NoCisjICBNYWtlIC9ldGMvZnN0YWIgc3RhbmRhcmQgY29tcGxpYW50LgorIyAgTS5XZWxsZXIgKGVvd21vYkBleHAtbWF0aC51bmktZXNzZW4uZGUpIDEzLjExLjE5OTQuCisjICBUaGlzIHNjcmlwdCBpcyBwdWJsaWMgZG9tYWluLiBTdGlsbCBpZiBvbmx5IHNsaWdodGx5CisjICBtb2RpZmllZCBhIGNyZWRpdCB0byBtZSBtaWdodCBiZSBuaWNlLgorCitST09UX1BBU1M9MQkJIyBQYXNzIGZvciByb290IGZpbGUgc3lzdGVtCitOT05fUk9PVF9QQVNTPTIJCSMgUGFzcyBmb3Igbm9uIHJvb3QgZmlsZSBzeXN0ZW1zCitERUZfRkxBR1M9ImRlZmF1bHRzIgkjIERlZmF1bHQgZmlsZXN5c2ZsYWdzCitERUZfRFVNUD0wCQkjIERlZmF1bHQgZHVtcGZyZXEuCisJCit3aGlsZSByZWFkIExJTkUKK2RvCisgIHNldCAtLSAkTElORQorICBpZiBbICQjICE9IDAgXQorICB0aGVuCisgICAgY2FzZSAkMSBpbgorICAgICAgXCMqIHwgISogKQorCWVjaG8gIiRMSU5FIgorCSMgIEFjdHVhbGx5IHRoZXJlIGFyZSBubyBjb21tZW50cyBhbGxvd2VkIGluIC9ldGMvZnN0YWIKKwllY2hvICJXYXJuaW5nOiBjb21tZW50IGluIC9ldGMvZnN0YWIgZGV0ZWN0ZWQuIiA+JjIKKwllY2hvICJQbGVhc2UgcmVtb3ZlIGl0IGJ5IGhhbmQuIiA+JjIKKwk7OworICAgICAgKiApCisJaWYgWyAkIyAtZ3QgNiBdIHx8IFsgJCMgLWx0IDMgXQorCXRoZW4KKwkgIGVjaG8gIkRvbid0IGhhdmUgYSBjbHVlIGFib3V0IFwiJExJTkVcIi4iID4mMgorCSAgZWNobyAiJExJTkUiCisJZWxzZQorCSAgY2FzZSAkMiBpbgorCSAgICAvICkKKwkgICAgICBQQVNTPSRST09UX1BBU1MKKwkgICAgICA7OworCSAgICBub25lICkKKwkgICAgICBQQVNTPTAKKwkgICAgICA7OworCSAgICAqICkKKwkgICAgICBQQVNTPSROT05fUk9PVF9QQVNTCisJICAgICAgOzsKKwkgIGVzYWMKKwkgIERVTVA9JERFRl9EVU1QCisJICBjYXNlICQzIGluCisJICAgIGlnbm9yZSB8IGlzbzk2NjAgfCBtc2RvcyB8IGhwZnMgfCBzeXN2IHwgXAorCQkgIHhlbml4IHwgY29oZXJlbnQgfCBuZnMgfCBwcm9jIHwgc3cgfCBzd2FwICkKKwkgICAgICBEVU1QPTA7CisJICAgICAgUEFTUz0wOworCSAgICAgIDs7CisJICBlc2FjCisJICBjYXNlICQjIGluCisJICAgIDMgKQorCSAgICAgIGVjaG8gIiRMSU5FCSRERUZfRkxBR1MJJERVTVAJJFBBU1MiCisJICAgICAgOzsKKwkgICAgNCApCisJICAgICAgZWNobyAiJExJTkUJJERVTVAJJFBBU1MiCisJICAgICAgOzsKKwkgICAgNSApCisJICAgICAgZWNobyAiJExJTkUJJFBBU1MiCisJICAgICAgOzsKKwkgICAgNikKKwkgICAgICBlY2hvICIkTElORSIKKwkgICAgICA7OworCSAgZXNhYworCWZpCisJOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBlY2hvICJXYXJuaW5nOiBPbmUgZW1wdHkgbGluZSByZW1vdmVkLiIgPiYyCisgIGZpCitkb25lIDwvZXRjL2ZzdGFiID4vdG1wL25ld2ZzdGFiLiQkCittdiAtZiAvZXRjL2ZzdGFiIC9ldGMvZnN0YWIuYmFrCittdiAtZiAvdG1wL25ld2ZzdGFiLiQkIC9ldGMvZnN0YWIKK2lmIFsgJD8gIT0gMCBdCit0aGVuCisgIGVjaG8gIkluc3RhbGxhdGlvbiBvZiBwYXRjaGVkIC9ldGMvZnN0YWIgZmFpbGVkLiIKKyAgZWNobyAiSXQgd291bGQgaGF2ZSBiZWVuOiIKKyAgY2F0IC90bXAvbmV3ZnN0YWIuJCQKKyAgcm0gLWYgL3RtcC9uZXdmc3RhYi4kJAorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnN0YWxsLXV0aWxzL3JlbW92ZV9wcmVmb3JtYXRfbWFucGFnZXMgYi9lMmZzcHJvZ3MvaW5zdGFsbC11dGlscy9yZW1vdmVfcHJlZm9ybWF0X21hbnBhZ2VzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZGZmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW5zdGFsbC11dGlscy9yZW1vdmVfcHJlZm9ybWF0X21hbnBhZ2VzCkBAIC0wLDAgKzEsMjEgQEAKKyMhL2Jpbi9zaAorCitQUkVGT1JNQVRfUk9PVD0vdXNyL21hbi9wcmVmb3JtYXQKK0NPTVBJTEVEX1JPT1Q9L3Vzci9tYW4KKworTUFOOD0iZGVidWdmcy44IGJhZGJsb2Nrcy44IGUyZnNjay44IG1rZTJmcy44IGR1bXBlMmZzLjggbWtsb3N0K2ZvdW5kLjggXAorCWZzY2suOCB0dW5lMmZzLjggZTJsYWJlbC44IgorTUFOMT0ibHNhdHRyLjEgY2hhdHRyLjEiCisKK2ZvciBpIGluICRNQU44CitkbworCXJtIC1mICRQUkVGT1JNQVRfUk9PVC9jYXQ4LyRpICRDT01QSUxFRF9ST09UL2NhdDgvJGkgXAorCQkkUFJFRk9STUFUX1JPT1QvY2F0OC8kaS5neiAkQ09NUElMRURfUk9PVC9jYXQ4LyRpLmd6Citkb25lCisKKworZm9yIGkgaW4gJE1BTjEKK2RvCisJcm0gLWYgJFBSRUZPUk1BVF9ST09UL2NhdDEvJGkgJENPTVBJTEVEX1JPT1QvY2F0MS8kaSBcCisJCSRQUkVGT1JNQVRfUk9PVC9jYXQxLyRpLmd6ICRDT01QSUxFRF9ST09UL2NhdDEvJGkuZ3oKK2RvbmUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL01ha2VmaWxlLmluIGIvZTJmc3Byb2dzL2ludGwvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2ZDdkNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsNTQ3IEBACisjIE1ha2VmaWxlIGZvciBkaXJlY3Rvcnkgd2l0aCBtZXNzYWdlIGNhdGFsb2cgaGFuZGxpbmcgbGlicmFyeSBvZiBHTlUgZ2V0dGV4dAorIyBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisjIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyMgVVNBLgorCitQQUNLQUdFID0gQFBBQ0tBR0VACitWRVJTSU9OID0gQFZFUlNJT05ACisKK1NIRUxMID0gL2Jpbi9zaAorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAordG9wX2J1aWxkZGlyID0gLi4KK1ZQQVRIID0gJChzcmNkaXIpCisKK3ByZWZpeCA9IEBwcmVmaXhACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAordHJhbnNmb3JtID0gQHByb2dyYW1fdHJhbnNmb3JtX25hbWVACitsaWJkaXIgPSBAbGliZGlyQAoraW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKK2dldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvaW50bAorYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpCitzdWJkaXIgPSBpbnRsCisKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitNS0lOU1RBTExESVJTID0gQE1LSU5TVEFMTERJUlNACitta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJChNS0lOU1RBTExESVJTKQorCitAU0VUX01BS0VACisKK0BpZkdOVW1ha2VAIFYgPQorQGlmR05VbWFrZUAgaWZlcSAoJChzdHJpcCAkKFYpKSwpCitAaWZHTlVtYWtlQCAjICBFID0gQGVjaG8KK0BpZkdOVW1ha2VAICMgIFEgPSBACitAaWZHTlVtYWtlQCAgICBFID0gQEVACitAaWZHTlVtYWtlQCAgICBRID0gQFFACitAaWZHTlVtYWtlQCBlbHNlCitAaWZHTlVtYWtlQCAgICBFID0gQFwjCitAaWZHTlVtYWtlQCAgICBRID0KK0BpZkdOVW1ha2VAIGVuZGlmCisKK0BpZk5vdEdOVW1ha2VAIEUgPSBARUAKK0BpZk5vdEdOVW1ha2VAIFEgPSBAUUAKKworQGlmR05VbWFrZUAgQ0hFQ0s9c3BhcnNlCitAaWZHTlVtYWtlQCBDSEVDS19PUFRTPS1Xc3BhcnNlLWFsbCAtV25vLXRyYW5zcGFyZW50LXVuaW9uIC1Xbm8tcmV0dXJuLXZvaWQgLVduby11bmRlZiAtV25vLW5vbi1wb2ludGVyLW51bGwKK0BpZkdOVW1ha2VAIENQUENIRUNLPWNwcGNoZWNrCitAaWZHTlVtYWtlQCBDUFBDSEVDS19PUFRTPS0tZm9yY2UgLS1lbmFibGU9YWxsIC0tcXVpZXQgLS1jaGVjay1jb25maWcKK0BpZkdOVW1ha2VAIGlmZXEgKCIkKEMpIiwgIjIiKQorQGlmR05VbWFrZUAgICBDSEVDS19DTUQ9JChDSEVDSykgJChDSEVDS19PUFRTKSAtV2JpdHdpc2UgLURfX0NIRUNLX0VORElBTl9fCitAaWZHTlVtYWtlQCAgIENQUENIRUNLX0NNRD0kKENQUENIRUNLKSAkKENQUENIRUNLX09QVFMpCitAaWZHTlVtYWtlQCBlbHNlCitAaWZHTlVtYWtlQCAgIGlmZXEgKCIkKEMpIiwgIjEiKQorQGlmR05VbWFrZUAgICAgIENIRUNLX0NNRD0kKENIRUNLKSAkKENIRUNLX09QVFMpCitAaWZHTlVtYWtlQCAgICAgQ1BQQ0hFQ0tfQ01EPSQoQ1BQQ0hFQ0spICQoQ1BQQ0hFQ0tfT1BUUykKK0BpZkdOVW1ha2VAICAgIGVsc2UKK0BpZkdOVW1ha2VAICAgICBDSEVDS19DTUQ9QHRydWUKK0BpZkdOVW1ha2VAICAgICBDUFBDSEVDS19DTUQ9QHRydWUKK0BpZkdOVW1ha2VAICAgZW5kaWYKK0BpZkdOVW1ha2VAIGVuZGlmCisKK0BpZk5vdEdOVW1ha2VAIENIRUNLX0NNRD1AdHJ1ZQorQGlmTm90R05VbWFrZUAgQ1BQQ0hFQ0tfQ01EPUB0cnVlCisKK2wgPSBASU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVhACisKK0FSID0gYXIKK0NDID0gQENDQAorTElCVE9PTCA9IEBMSUJUT09MQAorUkFOTElCID0gQFJBTkxJQkAKK1lBQ0MgPSBASU5UTEJJU09OQCAteSAtZAorWUZMQUdTID0gLS1uYW1lLXByZWZpeD1fX2dldHRleHQKKworREVGUyA9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIgLURMT0NBTEVfQUxJQVNfUEFUSD1cIiQoYWxpYXNwYXRoKVwiIFwKKy1ETElCRElSPVwiJChsaWJkaXIpXCIgLURJTl9MSUJJTlRMIFwKKy1ERU5BQkxFX1JFTE9DQVRBQkxFPTEgLURJTl9MSUJSQVJZIC1ESU5TVEFMTERJUj1cIiQobGliZGlyKVwiIC1ETk9fWE1BTExPQyBcCistRHNldF9yZWxvY2F0aW9uX3ByZWZpeD1saWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCBcCistRHJlbG9jYXRlPWxpYmludGxfcmVsb2NhdGUgXAorLURERVBFTkRTX09OX0xJQklDT05WPTEgLURIQVZFX0NPTkZJR19ICitDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NGTEFHUyA9IEBDRkxBR1NACitMREZMQUdTID0gQExERkxBR1NACitMSUJTID0gQExJQlNACisKK0NPTVBJTEUgPSAkKENDKSAtYyAkKERFRlMpICQoSU5DTFVERVMpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAkKFhDRkxBR1MpCisKK0hFQURFUlMgPSBcCisgIGdtby5oIFwKKyAgZ2V0dGV4dFAuaCBcCisgIGhhc2gtc3RyaW5nLmggXAorICBsb2FkaW5mby5oIFwKKyAgcGx1cmFsLWV4cC5oIFwKKyAgZXZhbC1wbHVyYWwuaCBcCisgIGxvY2FsY2hhcnNldC5oIFwKKyAgcmVsb2NhdGFibGUuaCBcCisgIHhzaXplLmggXAorICBwcmludGYtYXJncy5oIHByaW50Zi1hcmdzLmMgXAorICBwcmludGYtcGFyc2UuaCB3cHJpbnRmLXBhcnNlLmggcHJpbnRmLXBhcnNlLmMgXAorICB2YXNucHJpbnRmLmggdmFzbndwcmludGYuaCB2YXNucHJpbnRmLmMgXAorICBvczJjb21wYXQuaCBcCisgIGxpYmdudWludGwuaC5pbgorU09VUkNFUyA9IFwKKyAgYmluZHRleHRkb20uYyBcCisgIGRjZ2V0dGV4dC5jIFwKKyAgZGdldHRleHQuYyBcCisgIGdldHRleHQuYyBcCisgIGZpbmRkb21haW4uYyBcCisgIGxvYWRtc2djYXQuYyBcCisgIGxvY2FsZWFsaWFzLmMgXAorICB0ZXh0ZG9tYWluLmMgXAorICBsMTBuZmxpc3QuYyBcCisgIGV4cGxvZGVuYW1lLmMgXAorICBkY2lnZXR0ZXh0LmMgXAorICBkY25nZXR0ZXh0LmMgXAorICBkbmdldHRleHQuYyBcCisgIG5nZXR0ZXh0LmMgXAorICBwbHVyYWwueSBcCisgIHBsdXJhbC1leHAuYyBcCisgIGxvY2FsY2hhcnNldC5jIFwKKyAgcmVsb2NhdGFibGUuYyBcCisgIGxvY2FsZW5hbWUuYyBcCisgIGxvZy5jIFwKKyAgcHJpbnRmLmMgXAorICBvc2RlcC5jIFwKKyAgb3MyY29tcGF0LmMgXAorICBpbnRsLWNvbXBhdC5jCitPQkpFQ1RTID0gXAorICBiaW5kdGV4dGRvbS4kbG8gXAorICBkY2dldHRleHQuJGxvIFwKKyAgZGdldHRleHQuJGxvIFwKKyAgZ2V0dGV4dC4kbG8gXAorICBmaW5kZG9tYWluLiRsbyBcCisgIGxvYWRtc2djYXQuJGxvIFwKKyAgbG9jYWxlYWxpYXMuJGxvIFwKKyAgdGV4dGRvbWFpbi4kbG8gXAorICBsMTBuZmxpc3QuJGxvIFwKKyAgZXhwbG9kZW5hbWUuJGxvIFwKKyAgZGNpZ2V0dGV4dC4kbG8gXAorICBkY25nZXR0ZXh0LiRsbyBcCisgIGRuZ2V0dGV4dC4kbG8gXAorICBuZ2V0dGV4dC4kbG8gXAorICBwbHVyYWwuJGxvIFwKKyAgcGx1cmFsLWV4cC4kbG8gXAorICBsb2NhbGNoYXJzZXQuJGxvIFwKKyAgcmVsb2NhdGFibGUuJGxvIFwKKyAgbG9jYWxlbmFtZS4kbG8gXAorICBsb2cuJGxvIFwKKyAgcHJpbnRmLiRsbyBcCisgIG9zZGVwLiRsbyBcCisgIGludGwtY29tcGF0LiRsbworRElTVEZJTEVTLmNvbW1vbiA9IE1ha2VmaWxlLmluIFwKK2NvbmZpZy5jaGFyc2V0IGxvY2FsZS5hbGlhcyByZWYtYWRkLnNpbiByZWYtZGVsLnNpbiAkKEhFQURFUlMpICQoU09VUkNFUykKK0RJU1RGSUxFUy5nZW5lcmF0ZWQgPSBwbHVyYWwuYworRElTVEZJTEVTLm5vcm1hbCA9IFZFUlNJT04KK0RJU1RGSUxFUy5nZXR0ZXh0ID0gQ09QWUlORy5MSUItMi4wIENPUFlJTkcuTElCLTIuMSBsaWJpbnRsLmdsaWJjIFwKK2xpYmdudWludGwuaF92bXMgTWFrZWZpbGUudm1zIFwKK2xpYmdudWludGwuaC5tc3ZjLXN0YXRpYyBsaWJnbnVpbnRsLmgubXN2Yy1zaGFyZWQgUkVBRE1FLndvZTMyIE1ha2VmaWxlLm1zdmMKK0RJU1RGSUxFUy5vYnNvbGV0ZSA9IHhvcGVuLW1zZy5zZWQgbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIGNhdC1jb21wYXQuYyBcCitDT1BZSU5HLkxJQi0yIGdldHRleHQuaCBsaWJnZXR0ZXh0LmggcGx1cmFsLWV2YWwuYyBsaWJnbnVpbnRsLmgKKworYWxsOiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQAorYWxsLXllczogbGliaW50bC4kbGEgbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKK2FsbC1ubzogYWxsLW5vLUBCVUlMRF9JTkNMVURFRF9MSUJJTlRMQAorYWxsLW5vLXllczogbGliZ251aW50bC4kbGEKK2FsbC1uby1ubzoKKworbGliaW50bC5hIGxpYmdudWludGwuYTogJChPQkpFQ1RTKQorCSQoUSkgcm0gLWYgJEAKKwkkKEUpICIJQVIgJEAiCisJJChRKSAkKEFSKSBjcnUgJEAgJChPQkpFQ1RTKQorCSQoRSkgIglSQU5MSUIgJEAiCisJJChRKSAkKFJBTkxJQikgJEAKKworbGliaW50bC5sYSBsaWJnbnVpbnRsLmxhOiAkKE9CSkVDVFMpCisJJChMSUJUT09MKSAtLW1vZGU9bGluayBcCisJICAkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgJChYQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAIFwKKwkgICQoT0JKRUNUUykgQExUTElCSUNPTlZAICQoTElCUykgLWxjIFwKKwkgIC12ZXJzaW9uLWluZm8gJChMVFZfQ1VSUkVOVCk6JChMVFZfUkVWSVNJT04pOiQoTFRWX0FHRSkgXAorCSAgLXJwYXRoICQobGliZGlyKSBcCisJICAtbm8tdW5kZWZpbmVkCisKKyMgTGlidG9vbCdzIGxpYnJhcnkgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgbGliaW50bC4KKyMgQmVmb3JlIG1ha2luZyBhIGdldHRleHQgcmVsZWFzZSwgdGhlIGdldHRleHQgbWFpbnRhaW5lciBtdXN0IGNoYW5nZSB0aGlzCisjIGFjY29yZGluZyB0byB0aGUgbGlidG9vbCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICJMaWJyYXJ5IGludGVyZmFjZSB2ZXJzaW9ucyIuCisjIE1haW50YWluZXJzIG9mIG90aGVyIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgaW50bCBkaXJlY3RvcnkgbXVzdCAqbm90KgorIyBjaGFuZ2UgdGhlc2UgdmFsdWVzLgorTFRWX0NVUlJFTlQ9NworTFRWX1JFVklTSU9OPTAKK0xUVl9BR0U9NAorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5jIC55IC5vIC5sbyAuc2luIC5zZWQKKworLmMubzoKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENPTVBJTEUpICQ8CisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CisKKy55LmM6CisJJChZQUNDKSAkKFlGTEFHUykgLS1vdXRwdXQgJEAgJDwKKwlybSAtZiAkKi5oCisKK2JpbmR0ZXh0ZG9tLmxvOiAkKHNyY2RpcikvYmluZHRleHRkb20uYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvYmluZHRleHRkb20uYworZGNnZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNnZXR0ZXh0LmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RjZ2V0dGV4dC5jCitkZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RnZXR0ZXh0LmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2RnZXR0ZXh0LmMKK2dldHRleHQubG86ICQoc3JjZGlyKS9nZXR0ZXh0LmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2dldHRleHQuYworZmluZGRvbWFpbi5sbzogJChzcmNkaXIpL2ZpbmRkb21haW4uYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZmluZGRvbWFpbi5jCitsb2FkbXNnY2F0LmxvOiAkKHNyY2RpcikvbG9hZG1zZ2NhdC5jCisJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9sb2FkbXNnY2F0LmMKK2xvY2FsZWFsaWFzLmxvOiAkKHNyY2RpcikvbG9jYWxlYWxpYXMuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9jYWxlYWxpYXMuYwordGV4dGRvbWFpbi5sbzogJChzcmNkaXIpL3RleHRkb21haW4uYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvdGV4dGRvbWFpbi5jCitsMTBuZmxpc3QubG86ICQoc3JjZGlyKS9sMTBuZmxpc3QuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbDEwbmZsaXN0LmMKK2V4cGxvZGVuYW1lLmxvOiAkKHNyY2RpcikvZXhwbG9kZW5hbWUuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZXhwbG9kZW5hbWUuYworZGNpZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RjaWdldHRleHQuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZGNpZ2V0dGV4dC5jCitkY25nZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNuZ2V0dGV4dC5jCisJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY25nZXR0ZXh0LmMKK2RuZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RuZ2V0dGV4dC5jCisJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kbmdldHRleHQuYworbmdldHRleHQubG86ICQoc3JjZGlyKS9uZ2V0dGV4dC5jCisJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9uZ2V0dGV4dC5jCitwbHVyYWwubG86ICQoc3JjZGlyKS9wbHVyYWwuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcGx1cmFsLmMKK3BsdXJhbC1leHAubG86ICQoc3JjZGlyKS9wbHVyYWwtZXhwLmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3BsdXJhbC1leHAuYworbG9jYWxjaGFyc2V0LmxvOiAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvY2FsY2hhcnNldC5jCityZWxvY2F0YWJsZS5sbzogJChzcmNkaXIpL3JlbG9jYXRhYmxlLmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3JlbG9jYXRhYmxlLmMKK2xvY2FsZW5hbWUubG86ICQoc3JjZGlyKS9sb2NhbGVuYW1lLmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvY2FsZW5hbWUuYworbG9nLmxvOiAkKHNyY2RpcikvbG9nLmMKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvZy5jCitwcmludGYubG86ICQoc3JjZGlyKS9wcmludGYuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvcHJpbnRmLmMKK29zZGVwLmxvOiAkKHNyY2Rpcikvb3NkZXAuYworCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2Rpcikvb3NkZXAuYworaW50bC1jb21wYXQubG86ICQoc3JjZGlyKS9pbnRsLWNvbXBhdC5jCisJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9pbnRsLWNvbXBhdC5jCisKK3JlZi1hZGQuc2VkOiAkKHNyY2RpcikvcmVmLWFkZC5zaW4KKwkkKEUpICIJU0VEIHJlZi1hZGQuc2VkIgorCSQoUSkgc2VkIC1lICcvXiMvZCcgLWUgJ3MvQCcnUEFDS0FHRScnQC9AUEFDS0FHRUAvZycgJChzcmNkaXIpL3JlZi1hZGQuc2luID4gdC1yZWYtYWRkLnNlZAorCSQoUSkgbXYgdC1yZWYtYWRkLnNlZCByZWYtYWRkLnNlZAorcmVmLWRlbC5zZWQ6ICQoc3JjZGlyKS9yZWYtZGVsLnNpbgorCSQoRSkgIglTRUQgcmVmLWRlbC5zZWQiCisJJChRKSBzZWQgLWUgJy9eIy9kJyAtZSAncy9AJydQQUNLQUdFJydAL0BQQUNLQUdFQC9nJyAkKHNyY2RpcikvcmVmLWRlbC5zaW4gPiB0LXJlZi1kZWwuc2VkCisJJChRKSBtdiB0LXJlZi1kZWwuc2VkIHJlZi1kZWwuc2VkCisKK0lOQ0xVREVTID0gLUkuIC1JJChzcmNkaXIpIC1JLi4gLUkkKHRvcF9idWlsZGRpcikvbGliCisKK2xpYmdudWludGwuaDogJChzcmNkaXIpL2xpYmdudWludGwuaC5pbgorCSQoRSkgIglTRUQgbGliZ251aW50bC5oICIKKwkkKFEpIHNlZCAtZSAncyxAJydIQVZFX1BPU0lYX1BSSU5URicnQCxASEFWRV9QT1NJWF9QUklOVEZALGcnIFwKKwkgICAgLWUgJ3MsQCcnSEFWRV9BU1BSSU5URicnQCxASEFWRV9BU1BSSU5URkAsZycgXAorCSAgICAtZSAncyxAJydIQVZFX1NOUFJJTlRGJydALEBIQVZFX1NOUFJJTlRGQCxnJyBcCisJICAgIC1lICdzLEAnJ0hBVkVfV1BSSU5URicnQCxASEFWRV9XUFJJTlRGQCxnJyBcCisJICA8ICQoc3JjZGlyKS9saWJnbnVpbnRsLmguaW4gPiBsaWJnbnVpbnRsLmggCisKK2xpYmludGwuaDogbGliZ251aW50bC5oCisJJChFKSAiCUNQIGxpYmludGwuaCIKKwkkKFEpIGNwIGxpYmdudWludGwuaCBsaWJpbnRsLmgKKworY2hhcnNldC5hbGlhczogJChzcmNkaXIpL2NvbmZpZy5jaGFyc2V0CisJJChFKSAiCUNPTkZJRy5DSEFSU0VUICRAIgorCSQoUSkgJChTSEVMTCkgJChzcmNkaXIpL2NvbmZpZy5jaGFyc2V0ICdAaG9zdEAnID4gdC0kQAorCSQoUSkgbXYgdC0kQCAkQAorCitjaGVjazogYWxsCisKKyMgV2UgbXVzdCBub3QgaW5zdGFsbCB0aGUgbGliaW50bC5oL2xpYmludGwuYSBmaWxlcyBpZiB3ZSBhcmUgb24gYQorIyBzeXN0ZW0gd2hpY2ggaGFzIHRoZSBHTlUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGluIGl0cyBDIGxpYnJhcnkgb3IgaW4gYQorIyBzZXBhcmF0ZSBsaWJyYXJ5LgorIyBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIG9uZSB3aGljaCBjb21lcyB3aXRoIHRoaXMgdmVyc2lvbiBvZiB0aGUKKyMgcGFja2FnZSwgeW91IGhhdmUgdG8gdXNlIGBjb25maWd1cmUgLS13aXRoLWluY2x1ZGVkLWdldHRleHQnLgoraW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQoraW5zdGFsbC1leGVjOiBhbGwKKwkkKFEpIGlmIHsgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgfSBcCisJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpICQoREVTVERJUikkKGluY2x1ZGVkaXIpOyBcCisJICAkKElOU1RBTExfREFUQSkgbGliaW50bC5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAorCSAgJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBcCisJICAgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLiRsYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwuJGxhOyBcCisJICBpZiB0ZXN0ICJAUkVMT0NBVEFCTEVAIiA9IHllczsgdGhlbiBcCisJICAgIGRlcGVuZGVuY2llcz1gc2VkIC1uIC1lICdzLF5kZXBlbmRlbmN5X2xpYnM9XCguKlwpLFwxLHAnIDwgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLmxhIHwgc2VkIC1lICJzLF4nLCwiIC1lICJzLCdcJCQsLCJgOyBcCisJICAgIGlmIHRlc3QgLW4gIiQkZGVwZW5kZW5jaWVzIjsgdGhlbiBcCisJICAgICAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLmxhOyBcCisJICAgIGZpOyBcCisJICBmaTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCSQoUSkgaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgXAorCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsaWJkaXIpOyBcCisJICAkKExJQlRPT0wpIC0tbW9kZT1pbnN0YWxsIFwKKwkgICAgJChJTlNUQUxMX0RBVEEpIGxpYmdudWludGwuJGxhICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC4kbGE7IFwKKwkgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvcHJlbG9hZGFibGVfbGliaW50bC5zbzsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC5zbyAkKERFU1RESVIpJChsaWJkaXIpL3ByZWxvYWRhYmxlX2xpYmludGwuc287IFwKKwkgICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC4kbGE7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKKwlpZiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCisJICB0ZXN0IEBHTElCQzIxQCAhPSBubyB8fCAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcik7IFwKKwkgIHRlbXA9JChERVNURElSKSQobGliZGlyKS90LWNoYXJzZXQuYWxpYXM7IFwKKwkgIGRlc3Q9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCisJICBpZiB0ZXN0IC1mICQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgdGhlbiBcCisJICAgIG9yaWc9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCisJICAgIHNlZCAtZiByZWYtYWRkLnNlZCAkJG9yaWcgPiAkJHRlbXA7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKKwkgICAgcm0gLWYgJCR0ZW1wOyBcCisJICBlbHNlIFwKKwkgICAgaWYgdGVzdCBAR0xJQkMyMUAgPSBubzsgdGhlbiBcCisJICAgICAgb3JpZz1jaGFyc2V0LmFsaWFzOyBcCisJICAgICAgc2VkIC1mIHJlZi1hZGQuc2VkICQkb3JpZyA+ICQkdGVtcDsgXAorCSAgICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCisJICAgICAgcm0gLWYgJCR0ZW1wOyBcCisJICAgIGZpOyBcCisJICBmaTsgXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsb2NhbGVkaXIpOyBcCisJICB0ZXN0IC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzIFwKKwkgICAgJiYgb3JpZz0kKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhcyBcCisJICAgIHx8IG9yaWc9JChzcmNkaXIpL2xvY2FsZS5hbGlhczsgXAorCSAgdGVtcD0kKERFU1RESVIpJChsb2NhbGVkaXIpL3QtbG9jYWxlLmFsaWFzOyBcCisJICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCisJICBzZWQgLWYgcmVmLWFkZC5zZWQgJCRvcmlnID4gJCR0ZW1wOyBcCisJICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAorCSAgcm0gLWYgJCR0ZW1wOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCitpbnN0YWxsLWRhdGE6IGFsbAorCSQoUSkgaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCSAgJChJTlNUQUxMX0RBVEEpIFZFUlNJT04gJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvVkVSU0lPTjsgXAorCSAgJChJTlNUQUxMX0RBVEEpIENoYW5nZUxvZy5pbnN0ICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL0NoYW5nZUxvZzsgXAorCSAgZGlzdHM9IkNPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgJChESVNURklMRVMuY29tbW9uKSI7IFwKKwkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAorCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCSAgY2htb2QgYSt4ICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpL2NvbmZpZy5jaGFyc2V0OyBcCisJICBkaXN0cz0iJChESVNURklMRVMuZ2VuZXJhdGVkKSI7IFwKKwkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gZGlyPS47IGVsc2UgZGlyPSQoc3JjZGlyKTsgZmk7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICQkZGlyLyQkZmlsZSBcCisJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJICBkaXN0cz0iJChESVNURklMRVMub2Jzb2xldGUpIjsgXAorCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCitpbnN0YWxsZGlyczoKKwlpZiB7IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSIgfHwgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IH0gXAorCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpJChpbmNsdWRlZGlyKTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiIFwKKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IG5vOyB0aGVuIFwKKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCWlmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKKwkgIHRlc3QgQEdMSUJDMjFAICE9IG5vIHx8ICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChsb2NhbGVkaXIpOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCisjIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCitpbnN0YWxsY2hlY2s6CisKK2luc3RhbGwtc2hsaWJzOgorCit1bmluc3RhbGwtc2hsaWJzOgorCitpbnN0YWxsLXNobGlicy1zdHJpcDoKKwordW5pbnN0YWxsOgorCWlmIHsgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgfSBcCisJICAgJiYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAorCSAgcm0gLWYgJChERVNURElSKSQoaW5jbHVkZWRpcikvbGliaW50bC5oOyBcCisJICAkKExJQlRPT0wpIC0tbW9kZT11bmluc3RhbGwgXAorCSAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmludGwuJGxhOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgXAorCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAorCSAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9wcmVsb2FkYWJsZV9saWJpbnRsLnNvOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCisJaWYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAorCSAgaWYgdGVzdCAtZiAkKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IHRoZW4gXAorCSAgICB0ZW1wPSQoREVTVERJUikkKGxpYmRpcikvdC1jaGFyc2V0LmFsaWFzOyBcCisJICAgIGRlc3Q9JChERVNURElSKSQobGliZGlyKS9jaGFyc2V0LmFsaWFzOyBcCisJICAgIHNlZCAtZiByZWYtZGVsLnNlZCAkJGRlc3QgPiAkJHRlbXA7IFwKKwkgICAgaWYgZ3JlcCAnXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAkJCcgJCR0ZW1wID4gL2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICBybSAtZiAkJGRlc3Q7IFwKKwkgICAgZWxzZSBcCisJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKKwkgICAgZmk7IFwKKwkgICAgcm0gLWYgJCR0ZW1wOyBcCisJICBmaTsgXAorCSAgaWYgdGVzdCAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhczsgdGhlbiBcCisJICAgIHRlbXA9JChERVNURElSKSQobG9jYWxlZGlyKS90LWxvY2FsZS5hbGlhczsgXAorCSAgICBkZXN0PSQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyBcCisJICAgIHNlZCAtZiByZWYtZGVsLnNlZCAkJGRlc3QgPiAkJHRlbXA7IFwKKwkgICAgaWYgZ3JlcCAnXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAkJCcgJCR0ZW1wID4gL2Rldi9udWxsOyB0aGVuIFwKKwkgICAgICBybSAtZiAkJGRlc3Q7IFwKKwkgICAgZWxzZSBcCisJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKKwkgICAgZmk7IFwKKwkgICAgcm0gLWYgJCR0ZW1wOyBcCisJICBmaTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgIGZvciBmaWxlIGluIFZFUlNJT04gQ2hhbmdlTG9nIENPUFlJTkcuTElCLTIuMCBDT1BZSU5HLkxJQi0yLjEgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCWVsc2UgXAorCSAgOiA7IFwKKwlmaQorCitpbmZvIGR2aSBwcyBwZGYgaHRtbDoKKworJChPQkpFQ1RTKTogbGliZ251aW50bC5oCitiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkY2lnZXR0ZXh0LiRsbyBkY25nZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZG5nZXR0ZXh0LiRsbyBmaW5kZG9tYWluLiRsbyBnZXR0ZXh0LiRsbyBpbnRsLWNvbXBhdC4kbG8gbG9hZG1zZ2NhdC4kbG8gbG9jYWxlYWxpYXMuJGxvIG5nZXR0ZXh0LiRsbyB0ZXh0ZG9tYWluLiRsbzogJChzcmNkaXIpL2dldHRleHRQLmggJChzcmNkaXIpL2dtby5oICQoc3JjZGlyKS9sb2FkaW5mby5oCitkY2lnZXR0ZXh0LiRsbyBsb2FkbXNnY2F0LiRsbzogJChzcmNkaXIpL2hhc2gtc3RyaW5nLmgKK2V4cGxvZGVuYW1lLiRsbyBsMTBuZmxpc3QuJGxvOiAkKHNyY2RpcikvbG9hZGluZm8uaAorZGNpZ2V0dGV4dC4kbG8gbG9hZG1zZ2NhdC4kbG8gcGx1cmFsLiRsbyBwbHVyYWwtZXhwLiRsbzogJChzcmNkaXIpL3BsdXJhbC1leHAuaAorZGNpZ2V0dGV4dC4kbG86ICQoc3JjZGlyKS9ldmFsLXBsdXJhbC5oCitsb2NhbGNoYXJzZXQuJGxvOiAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmgKK2xvY2FsZWFsaWFzLiRsbyBsb2NhbGNoYXJzZXQuJGxvIHJlbG9jYXRhYmxlLiRsbzogJChzcmNkaXIpL3JlbG9jYXRhYmxlLmgKK3ByaW50Zi4kbG86ICQoc3JjZGlyKS9wcmludGYtYXJncy5oICQoc3JjZGlyKS9wcmludGYtYXJncy5jICQoc3JjZGlyKS9wcmludGYtcGFyc2UuaCAkKHNyY2Rpcikvd3ByaW50Zi1wYXJzZS5oICQoc3JjZGlyKS94c2l6ZS5oICQoc3JjZGlyKS9wcmludGYtcGFyc2UuYyAkKHNyY2RpcikvdmFzbnByaW50Zi5oICQoc3JjZGlyKS92YXNud3ByaW50Zi5oICQoc3JjZGlyKS92YXNucHJpbnRmLmMKKwordGFnczogVEFHUworCitUQUdTOiAkKEhFQURFUlMpICQoU09VUkNFUykKKwloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgZXRhZ3MgLW8gJCRoZXJlL1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCisKK2N0YWdzOiBDVEFHUworCitDVEFHUzogJChIRUFERVJTKSAkKFNPVVJDRVMpCisJaGVyZT1gcHdkYDsgY2QgJChzcmNkaXIpICYmIGN0YWdzIC1vICQkaGVyZS9DVEFHUyAkKEhFQURFUlMpICQoU09VUkNFUykKKworaWQ6IElECisKK0lEOiAkKEhFQURFUlMpICQoU09VUkNFUykKKwloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgbWtpZCAtZiQkaGVyZS9JRCAkKEhFQURFUlMpICQoU09VUkNFUykKKworY292ZXJhZ2UudHh0OjoKKworbW9zdGx5Y2xlYW46CisJcm0gLWYgKi5hICoubGEgKi5vICoub2JqICoubG8gY29yZSBjb3JlLioKKwlybSAtZiBsaWJnbnVpbnRsLmggbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKKwlybSAtZiAtciAubGlicyBfbGlicworCitjbGVhbjo6IG1vc3RseWNsZWFuCisKK2Rpc3RjbGVhbjogY2xlYW4KKwlybSAtZiBNYWtlZmlsZSBJRCBUQUdTCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICBybSAtZiBDaGFuZ2VMb2cuaW5zdCAkKERJU1RGSUxFUy5ub3JtYWwpOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCisKK21haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgorCSQoRSkgIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlOyIKKwkkKEUpICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKKworCisjIEdOVSBnZXR0ZXh0IG5lZWRzIG5vdCBjb250YWluIHRoZSBmaWxlIGBWRVJTSU9OJyBidXQgY29udGFpbnMgc29tZQorIyBvdGhlciBmaWxlcyB3aGljaCBzaG91bGQgbm90IGJlIGRpc3RyaWJ1dGVkIGluIG90aGVyIHBhY2thZ2VzLgorZGlzdGRpciA9IC4uLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKK2Rpc3QgZGlzdGRpcjogTWFrZWZpbGUKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICA6IDsgXAorCWVsc2UgXAorCSAgaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIjsgdGhlbiBcCisJICAgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLmdldHRleHQpIjsgXAorCSAgZWxzZSBcCisJICAgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLm5vcm1hbCkiOyBcCisJICBmaTsgXAorCSAgJChNQUtFKSAkKERJU1RGSUxFUy5jb21tb24pICQoRElTVEZJTEVTLmdlbmVyYXRlZCkgJCRhZGRpdGlvbmFsOyBcCisJICBmb3IgZmlsZSBpbiBDaGFuZ2VMb2cgJChESVNURklMRVMuY29tbW9uKSAkKERJU1RGSUxFUy5nZW5lcmF0ZWQpICQkYWRkaXRpb25hbDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBkaXI9LjsgZWxzZSBkaXI9JChzcmNkaXIpOyBmaTsgXAorCSAgICBjcCAtcCAkJGRpci8kJGZpbGUgJChkaXN0ZGlyKTsgXAorCSAgZG9uZTsgXAorCWZpCisKK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKyMJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworIyBUaGlzIHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LCBidXQgZG9lc24ndCB3b3JrIGFueSBtb3JlIHdpdGggYXV0b2NvbmYtMi41NywKKyMgd2hlbiBBQ19DT05GSUdfRklMRVMoW2ludGwvTWFrZWZpbGU6c29tZWRpci9NYWtlZmlsZS5pbl0pIGlzIHVzZWQuCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cworCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgorIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9WRVJTSU9OIGIvZTJmc3Byb2dzL2ludGwvVkVSU0lPTgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGI4NDZjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvVkVSU0lPTgpAQCAtMCwwICsxIEBACitHTlUgZ2V0dGV4dCBsaWJyYXJ5IGZyb20gZ2V0dGV4dC0wLjE0LjEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2JpbmR0ZXh0ZG9tLmMgYi9lMmZzcHJvZ3MvaW50bC9iaW5kdGV4dGRvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyODQyMjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9iaW5kdGV4dGRvbS5jCkBAIC0wLDAgKzEsMzYyIEBACisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYmluZHRleHRkb21haW4oMykgZnVuY3Rpb24KKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlIDxsaWJpbnRsLmg+CisjZWxzZQorIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCisjZW5kaWYKKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgorCisjaWZkZWYgX0xJQkMKKy8qIFdlIGhhdmUgdG8gaGFuZGxlIG11bHRpLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gICovCisjIGluY2x1ZGUgPGJpdHMvbGliYy1sb2NrLmg+CisjZWxzZQorLyogUHJvdmlkZSBkdW1teSBpbXBsZW1lbnRhdGlvbiBpZiB0aGlzIGlzIG91dHNpZGUgZ2xpYmMuICAqLworIyBkZWZpbmUgX19saWJjX3J3bG9ja19kZWZpbmUoQ0xBU1MsIE5BTUUpCisjIGRlZmluZSBfX2xpYmNfcndsb2NrX3dybG9jayhOQU1FKQorIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKKyNlbmRpZgorCisvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50CisgICBuYW1lcyB0aGFuIHRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gR05VIGxpYmMsIG90aGVyd2lzZSBwcm9ncmFtcworICAgdXNpbmcgbGliaW50bC5hIGNhbm5vdCBiZSBsaW5rZWQgc3RhdGljYWxseS4gICovCisjaWYgIWRlZmluZWQgX0xJQkMKKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2Rpcm5hbWUgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUKKyMgZGVmaW5lIF9ubF9kb21haW5fYmluZGluZ3MgbGliaW50bF9ubF9kb21haW5fYmluZGluZ3MKKyNlbmRpZgorCisvKiBTb21lIGNvbXBpbGVycywgbGlrZSBTdW5PUzQgY2MsIGRvbid0IGhhdmUgb2Zmc2V0b2YgaW4gPHN0ZGRlZi5oPi4gICovCisjaWZuZGVmIG9mZnNldG9mCisjIGRlZmluZSBvZmZzZXRvZih0eXBlLGlkZW50KSAoKHNpemVfdCkmKCgodHlwZSopMCktPmlkZW50KSkKKyNlbmRpZgorCisvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCisKKy8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KK2V4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXTsKKyNpZmRlZiBfTElCQworZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZV9pbnRlcm5hbFtdIGF0dHJpYnV0ZV9oaWRkZW47CisjZWxzZQorIyBkZWZpbmUgSU5UVVNFKG5hbWUpIG5hbWUKKyNlbmRpZgorCisvKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucy4gICovCitleHRlcm4gc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7CisKKy8qIExvY2sgdmFyaWFibGUgdG8gcHJvdGVjdCB0aGUgZ2xvYmFsIGRhdGEgaW4gdGhlIGdldHRleHQgaW1wbGVtZW50YXRpb24uICAqLworX19saWJjX3J3bG9ja19kZWZpbmUgKGV4dGVybiwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKKworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCisgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCisgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIEJJTkRURVhURE9NQUlOIF9fYmluZHRleHRkb21haW4KKyMgZGVmaW5lIEJJTkRfVEVYVERPTUFJTl9DT0RFU0VUIF9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKKyMgaWZuZGVmIHN0cmR1cAorIyAgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCisjIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgQklORFRFWFRET01BSU4gbGliaW50bF9iaW5kdGV4dGRvbWFpbgorIyBkZWZpbmUgQklORF9URVhURE9NQUlOX0NPREVTRVQgbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldAorI2VuZGlmCisKKy8qIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IG5hbWUgKkRJUk5BTUVQIGFuZCB0aGUgb3V0cHV0IGNvZGVzZXQgKkNPREVTRVRQCisgICB0byBiZSB1c2VkIGZvciB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cuCisgICBJZiAqRElSTkFNRVAgb3IgKkNPREVTRVRQIGlzIE5VTEwsIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBpcyBub3QKKyAgIG1vZGlmaWVkLCBvbmx5IHRoZSBjdXJyZW50IHZhbHVlIGlzIHJldHVybmVkLgorICAgSWYgRElSTkFNRVAgb3IgQ09ERVNFVFAgaXMgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGlzIG5laXRoZXIKKyAgIG1vZGlmaWVkIG5vciByZXR1cm5lZC4gICovCitzdGF0aWMgdm9pZAorc2V0X2JpbmRpbmdfdmFsdWVzIChjb25zdCBjaGFyICpkb21haW5uYW1lLAorCQkgICAgY29uc3QgY2hhciAqKmRpcm5hbWVwLCBjb25zdCBjaGFyICoqY29kZXNldHApCit7CisgIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOworICBpbnQgbW9kaWZpZWQ7CisKKyAgLyogU29tZSBzYW5pdHkgY2hlY2tzLiAgKi8KKyAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCB8fCBkb21haW5uYW1lWzBdID09ICdcMCcpCisgICAgeworICAgICAgaWYgKGRpcm5hbWVwKQorCSpkaXJuYW1lcCA9IE5VTEw7CisgICAgICBpZiAoY29kZXNldHApCisJKmNvZGVzZXRwID0gTlVMTDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgX19saWJjX3J3bG9ja193cmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKKworICBtb2RpZmllZCA9IDA7CisKKyAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKKyAgICB7CisgICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7CisgICAgICBpZiAoY29tcGFyZSA9PSAwKQorCS8qIFdlIGZvdW5kIGl0ISAgKi8KKwlicmVhazsKKyAgICAgIGlmIChjb21wYXJlIDwgMCkKKwl7CisJICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLworCSAgYmluZGluZyA9IE5VTEw7CisJICBicmVhazsKKwl9CisgICAgfQorCisgIGlmIChiaW5kaW5nICE9IE5VTEwpCisgICAgeworICAgICAgaWYgKGRpcm5hbWVwKQorCXsKKwkgIGNvbnN0IGNoYXIgKmRpcm5hbWUgPSAqZGlybmFtZXA7CisKKwkgIGlmIChkaXJuYW1lID09IE5VTEwpCisJICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KKwkgICAgKmRpcm5hbWVwID0gYmluZGluZy0+ZGlybmFtZTsKKwkgIGVsc2UKKwkgICAgeworCSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKKwkJIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKKwkJIG9sZCBiaW5kaW5nLiAgKi8KKwkgICAgICBjaGFyICpyZXN1bHQgPSBiaW5kaW5nLT5kaXJuYW1lOworCSAgICAgIGlmIChzdHJjbXAgKGRpcm5hbWUsIHJlc3VsdCkgIT0gMCkKKwkJeworCQkgIGlmIChzdHJjbXAgKGRpcm5hbWUsIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkgPT0gMCkKKwkJICAgIHJlc3VsdCA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKKwkJICBlbHNlCisJCSAgICB7CisjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCisJCSAgICAgIHJlc3VsdCA9IHN0cmR1cCAoZGlybmFtZSk7CisjZWxzZQorCQkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7CisJCSAgICAgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKwkJICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKKwkJCW1lbWNweSAocmVzdWx0LCBkaXJuYW1lLCBsZW4pOworI2VuZGlmCisJCSAgICB9CisKKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQorCQkgICAgeworCQkgICAgICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCisJCQlmcmVlIChiaW5kaW5nLT5kaXJuYW1lKTsKKworCQkgICAgICBiaW5kaW5nLT5kaXJuYW1lID0gcmVzdWx0OworCQkgICAgICBtb2RpZmllZCA9IDE7CisJCSAgICB9CisJCX0KKwkgICAgICAqZGlybmFtZXAgPSByZXN1bHQ7CisJICAgIH0KKwl9CisKKyAgICAgIGlmIChjb2Rlc2V0cCkKKwl7CisJICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gKmNvZGVzZXRwOworCisJICBpZiAoY29kZXNldCA9PSBOVUxMKQorCSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCisJICAgICpjb2Rlc2V0cCA9IGJpbmRpbmctPmNvZGVzZXQ7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCisJCSBvbmUgYXJlIGVxdWFsIHdlIHNpbXBseSBkbyBub3RoaW5nLiAgT3RoZXJ3aXNlIHJlcGxhY2UgdGhlCisJCSBvbGQgYmluZGluZy4gICovCisJICAgICAgY2hhciAqcmVzdWx0ID0gYmluZGluZy0+Y29kZXNldDsKKwkgICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgc3RyY21wIChjb2Rlc2V0LCByZXN1bHQpICE9IDApCisJCXsKKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKKwkJICByZXN1bHQgPSBzdHJkdXAgKGNvZGVzZXQpOworI2Vsc2UKKwkJICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7CisJCSAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCisJCSAgICBtZW1jcHkgKHJlc3VsdCwgY29kZXNldCwgbGVuKTsKKyNlbmRpZgorCisJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKKwkJICAgIHsKKwkJICAgICAgZnJlZSAoYmluZGluZy0+Y29kZXNldCk7CisKKwkJICAgICAgYmluZGluZy0+Y29kZXNldCA9IHJlc3VsdDsKKwkJICAgICAgYmluZGluZy0+Y29kZXNldF9jbnRyKys7CisJCSAgICAgIG1vZGlmaWVkID0gMTsKKwkJICAgIH0KKwkJfQorCSAgICAgICpjb2Rlc2V0cCA9IHJlc3VsdDsKKwkgICAgfQorCX0KKyAgICB9CisgIGVsc2UgaWYgKChkaXJuYW1lcCA9PSBOVUxMIHx8ICpkaXJuYW1lcCA9PSBOVUxMKQorCSAgICYmIChjb2Rlc2V0cCA9PSBOVUxMIHx8ICpjb2Rlc2V0cCA9PSBOVUxMKSkKKyAgICB7CisgICAgICAvKiBTaW1wbHkgcmV0dXJuIHRoZSBkZWZhdWx0IHZhbHVlcy4gICovCisgICAgICBpZiAoZGlybmFtZXApCisJKmRpcm5hbWVwID0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOworICAgICAgaWYgKGNvZGVzZXRwKQorCSpjb2Rlc2V0cCA9IE5VTEw7CisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogV2UgaGF2ZSB0byBjcmVhdGUgYSBuZXcgYmluZGluZy4gICovCisgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7CisgICAgICBzdHJ1Y3QgYmluZGluZyAqbmV3X2JpbmRpbmcgPQorCShzdHJ1Y3QgYmluZGluZyAqKSBtYWxsb2MgKG9mZnNldG9mIChzdHJ1Y3QgYmluZGluZywgZG9tYWlubmFtZSkgKyBsZW4pOworCisgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAobmV3X2JpbmRpbmcgPT0gTlVMTCwgMCkpCisJZ290byBmYWlsZWQ7CisKKyAgICAgIG1lbWNweSAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGxlbik7CisKKyAgICAgIGlmIChkaXJuYW1lcCkKKwl7CisJICBjb25zdCBjaGFyICpkaXJuYW1lID0gKmRpcm5hbWVwOworCisJICBpZiAoZGlybmFtZSA9PSBOVUxMKQorCSAgICAvKiBUaGUgZGVmYXVsdCB2YWx1ZS4gICovCisJICAgIGRpcm5hbWUgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpID09IDApCisJCWRpcm5hbWUgPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7CisJICAgICAgZWxzZQorCQl7CisJCSAgY2hhciAqcmVzdWx0OworI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorCQkgIHJlc3VsdCA9IHN0cmR1cCAoZGlybmFtZSk7CisJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKKwkJICAgIGdvdG8gZmFpbGVkX2Rpcm5hbWU7CisjZWxzZQorCQkgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKKwkJICByZXN1bHQgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CisJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKKwkJICAgIGdvdG8gZmFpbGVkX2Rpcm5hbWU7CisJCSAgbWVtY3B5IChyZXN1bHQsIGRpcm5hbWUsIGxlbik7CisjZW5kaWYKKwkJICBkaXJuYW1lID0gcmVzdWx0OworCQl9CisJICAgIH0KKwkgICpkaXJuYW1lcCA9IGRpcm5hbWU7CisJICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIGRpcm5hbWU7CisJfQorICAgICAgZWxzZQorCS8qIFRoZSBkZWZhdWx0IHZhbHVlLiAgKi8KKwluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKKworICAgICAgbmV3X2JpbmRpbmctPmNvZGVzZXRfY250ciA9IDA7CisKKyAgICAgIGlmIChjb2Rlc2V0cCkKKwl7CisJICBjb25zdCBjaGFyICpjb2Rlc2V0ID0gKmNvZGVzZXRwOworCisJICBpZiAoY29kZXNldCAhPSBOVUxMKQorCSAgICB7CisJICAgICAgY2hhciAqcmVzdWx0OworCisjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCisJICAgICAgcmVzdWx0ID0gc3RyZHVwIChjb2Rlc2V0KTsKKwkgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQorCQlnb3RvIGZhaWxlZF9jb2Rlc2V0OworI2Vsc2UKKwkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChjb2Rlc2V0KSArIDE7CisJICAgICAgcmVzdWx0ID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCisJCWdvdG8gZmFpbGVkX2NvZGVzZXQ7CisJICAgICAgbWVtY3B5IChyZXN1bHQsIGNvZGVzZXQsIGxlbik7CisjZW5kaWYKKwkgICAgICBjb2Rlc2V0ID0gcmVzdWx0OworCSAgICAgIG5ld19iaW5kaW5nLT5jb2Rlc2V0X2NudHIrKzsKKwkgICAgfQorCSAgKmNvZGVzZXRwID0gY29kZXNldDsKKwkgIG5ld19iaW5kaW5nLT5jb2Rlc2V0ID0gKGNoYXIgKikgY29kZXNldDsKKwl9CisgICAgICBlbHNlCisJbmV3X2JpbmRpbmctPmNvZGVzZXQgPSBOVUxMOworCisgICAgICAvKiBOb3cgZW5xdWV1ZSBpdC4gICovCisgICAgICBpZiAoX25sX2RvbWFpbl9iaW5kaW5ncyA9PSBOVUxMCisJICB8fCBzdHJjbXAgKGRvbWFpbm5hbWUsIF9ubF9kb21haW5fYmluZGluZ3MtPmRvbWFpbm5hbWUpIDwgMCkKKwl7CisJICBuZXdfYmluZGluZy0+bmV4dCA9IF9ubF9kb21haW5fYmluZGluZ3M7CisJICBfbmxfZG9tYWluX2JpbmRpbmdzID0gbmV3X2JpbmRpbmc7CisJfQorICAgICAgZWxzZQorCXsKKwkgIGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOworCSAgd2hpbGUgKGJpbmRpbmctPm5leHQgIT0gTlVMTAorCQkgJiYgc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5uZXh0LT5kb21haW5uYW1lKSA+IDApCisJICAgIGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0OworCisJICBuZXdfYmluZGluZy0+bmV4dCA9IGJpbmRpbmctPm5leHQ7CisJICBiaW5kaW5nLT5uZXh0ID0gbmV3X2JpbmRpbmc7CisJfQorCisgICAgICBtb2RpZmllZCA9IDE7CisKKyAgICAgIC8qIEhlcmUgd2UgZGVhbCB3aXRoIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLiAgKi8KKyAgICAgIGlmICgwKQorCXsKKwlmYWlsZWRfY29kZXNldDoKKwkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCisJICAgIGZyZWUgKG5ld19iaW5kaW5nLT5kaXJuYW1lKTsKKwlmYWlsZWRfZGlybmFtZToKKwkgIGZyZWUgKG5ld19iaW5kaW5nKTsKKwlmYWlsZWQ6CisJICBpZiAoZGlybmFtZXApCisJICAgICpkaXJuYW1lcCA9IE5VTEw7CisJICBpZiAoY29kZXNldHApCisJICAgICpjb2Rlc2V0cCA9IE5VTEw7CisJfQorICAgIH0KKworICAvKiBJZiB3ZSBtb2RpZmllZCBhbnkgYmluZGluZywgd2UgZmx1c2ggdGhlIGNhY2hlcy4gICovCisgIGlmIChtb2RpZmllZCkKKyAgICArK19ubF9tc2dfY2F0X2NudHI7CisKKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKK30KKworLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCisgICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCitjaGFyICoKK0JJTkRURVhURE9NQUlOIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpkaXJuYW1lKQoreworICBzZXRfYmluZGluZ192YWx1ZXMgKGRvbWFpbm5hbWUsICZkaXJuYW1lLCBOVUxMKTsKKyAgcmV0dXJuIChjaGFyICopIGRpcm5hbWU7Cit9CisKKy8qIFNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB3aGljaCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUKKyAgIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgcmV0dXJuZWQuICAqLworY2hhciAqCitCSU5EX1RFWFRET01BSU5fQ09ERVNFVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqY29kZXNldCkKK3sKKyAgc2V0X2JpbmRpbmdfdmFsdWVzIChkb21haW5uYW1lLCBOVUxMLCAmY29kZXNldCk7CisgIHJldHVybiAoY2hhciAqKSBjb2Rlc2V0OworfQorCisjaWZkZWYgX0xJQkMKKy8qIEFsaWFzZXMgZm9yIGZ1bmN0aW9uIG5hbWVzIGluIEdOVSBDIExpYnJhcnkuICAqLword2Vha19hbGlhcyAoX19iaW5kdGV4dGRvbWFpbiwgYmluZHRleHRkb21haW4pOword2Vha19hbGlhcyAoX19iaW5kX3RleHRkb21haW5fY29kZXNldCwgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9jb25maWcuY2hhcnNldCBiL2UyZnNwcm9ncy9pbnRsL2NvbmZpZy5jaGFyc2V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDQ1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9jb25maWcuY2hhcnNldApAQCAtMCwwICsxLDYwOCBAQAorIyEgL2Jpbi9zaAorIyBPdXRwdXQgYSBzeXN0ZW0gZGVwZW5kZW50IHRhYmxlIG9mIGNoYXJhY3RlciBlbmNvZGluZyBhbGlhc2VzLgorIworIyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorIyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisjICAgVVNBLgorIworIyBUaGUgdGFibGUgY29uc2lzdHMgb2YgbGluZXMgb2YgdGhlIGZvcm0KKyMgICAgQUxJQVMgIENBTk9OSUNBTAorIworIyBBTElBUyBpcyB0aGUgKHN5c3RlbSBkZXBlbmRlbnQpIHJlc3VsdCBvZiAibmxfbGFuZ2luZm8gKENPREVTRVQpIi4KKyMgQUxJQVMgaXMgY29tcGFyZWQgaW4gYSBjYXNlIHNlbnNpdGl2ZSB3YXkuCisjCisjIENBTk9OSUNBTCBpcyB0aGUgR05VIGNhbm9uaWNhbCBuYW1lIGZvciB0aGlzIGNoYXJhY3RlciBlbmNvZGluZy4KKyMgSXQgbXVzdCBiZSBhbiBlbmNvZGluZyBzdXBwb3J0ZWQgYnkgbGliaWNvbnYuIFN1cHBvcnQgYnkgR05VIGxpYmMgaXMKKyMgYWxzbyBkZXNpcmFibGUuIENBTk9OSUNBTCBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc3VhbGx5IGFuIHVwcGVyIGNhc2UKKyMgTUlNRSBjaGFyc2V0IG5hbWUgaXMgcHJlZmVycmVkLgorIyBUaGUgY3VycmVudCBsaXN0IG9mIEdOVSBjYW5vbmljYWwgY2hhcnNldCBuYW1lcyBpcyBhcyBmb2xsb3dzLgorIworIyAgICAgICBuYW1lICAgICAgICAgICAgICBNSU1FPyAgICAgICAgICAgICB1c2VkIGJ5IHdoaWNoIHN5c3RlbXMKKyMgICBBU0NJSSwgQU5TSV9YMy40LTE5NjggICAgICAgZ2xpYmMgc29sYXJpcyBmcmVlYnNkIGRhcndpbgorIyAgIElTTy04ODU5LTEgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCisjICAgSVNPLTg4NTktMiAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KKyMgICBJU08tODg1OS0zICAgICAgICAgICAgICBZICAgZ2xpYmMgc29sYXJpcworIyAgIElTTy04ODU5LTQgICAgICAgICAgICAgIFkgICBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgorIyAgIElTTy04ODU5LTUgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCisjICAgSVNPLTg4NTktNiAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IHNvbGFyaXMKKyMgICBJU08tODg1OS03ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcworIyAgIElTTy04ODU5LTggICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcworIyAgIElTTy04ODU5LTkgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzCisjICAgSVNPLTg4NTktMTMgICAgICAgICAgICAgICAgIGdsaWJjCisjICAgSVNPLTg4NTktMTQgICAgICAgICAgICAgICAgIGdsaWJjCisjICAgSVNPLTg4NTktMTUgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBvc2Ygc29sYXJpcyBmcmVlYnNkCisjICAgS09JOC1SICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KKyMgICBLT0k4LVUgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMgZnJlZWJzZCBkYXJ3aW4KKyMgICBLT0k4LVQgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMKKyMgICBDUDQzNyAgICAgICAgICAgICAgICAgICAgICAgZG9zCisjICAgQ1A3NzUgICAgICAgICAgICAgICAgICAgICAgIGRvcworIyAgIENQODUwICAgICAgICAgICAgICAgICAgICAgICBhaXggb3NmIGRvcworIyAgIENQODUyICAgICAgICAgICAgICAgICAgICAgICBkb3MKKyMgICBDUDg1NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCisjICAgQ1A4NTYgICAgICAgICAgICAgICAgICAgICAgIGFpeAorIyAgIENQODU3ICAgICAgICAgICAgICAgICAgICAgICBkb3MKKyMgICBDUDg2MSAgICAgICAgICAgICAgICAgICAgICAgZG9zCisjICAgQ1A4NjIgICAgICAgICAgICAgICAgICAgICAgIGRvcworIyAgIENQODY0ICAgICAgICAgICAgICAgICAgICAgICBkb3MKKyMgICBDUDg2NSAgICAgICAgICAgICAgICAgICAgICAgZG9zCisjICAgQ1A4NjYgICAgICAgICAgICAgICAgICAgICAgIGZyZWVic2QgZGFyd2luIGRvcworIyAgIENQODY5ICAgICAgICAgICAgICAgICAgICAgICBkb3MKKyMgICBDUDg3NCAgICAgICAgICAgICAgICAgICAgICAgd29lMzIgZG9zCisjICAgQ1A5MjIgICAgICAgICAgICAgICAgICAgICAgIGFpeAorIyAgIENQOTMyICAgICAgICAgICAgICAgICAgICAgICBhaXggd29lMzIgZG9zCisjICAgQ1A5NDMgICAgICAgICAgICAgICAgICAgICAgIGFpeAorIyAgIENQOTQ5ICAgICAgICAgICAgICAgICAgICAgICBvc2Ygd29lMzIgZG9zCisjICAgQ1A5NTAgICAgICAgICAgICAgICAgICAgICAgIHdvZTMyIGRvcworIyAgIENQMTA0NiAgICAgICAgICAgICAgICAgICAgICBhaXgKKyMgICBDUDExMjQgICAgICAgICAgICAgICAgICAgICAgYWl4CisjICAgQ1AxMTI1ICAgICAgICAgICAgICAgICAgICAgIGRvcworIyAgIENQMTEyOSAgICAgICAgICAgICAgICAgICAgICBhaXgKKyMgICBDUDEyNTAgICAgICAgICAgICAgICAgICAgICAgd29lMzIKKyMgICBDUDEyNTEgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcyBkYXJ3aW4gd29lMzIKKyMgICBDUDEyNTIgICAgICAgICAgICAgICAgICAgICAgYWl4IHdvZTMyCisjICAgQ1AxMjUzICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCisjICAgQ1AxMjU0ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCisjICAgQ1AxMjU1ICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHdvZTMyCisjICAgQ1AxMjU2ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCisjICAgQ1AxMjU3ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCisjICAgR0IyMzEyICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggc29sYXJpcyBmcmVlYnNkIGRhcndpbgorIyAgIEVVQy1KUCAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCisjICAgRVVDLUtSICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KKyMgICBFVUMtVFcgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcworIyAgIEJJRzUgICAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgorIyAgIEJJRzUtSEtTQ1MgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzCisjICAgR0JLICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBvc2Ygc29sYXJpcyB3b2UzMiBkb3MKKyMgICBHQjE4MDMwICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcworIyAgIFNISUZUX0pJUyAgICAgICAgICAgICAgIFkgICBocHV4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCisjICAgSk9IQUIgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIHNvbGFyaXMgd29lMzIKKyMgICBUSVMtNjIwICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMKKyMgICBWSVNDSUkgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMKKyMgICBUQ1ZONTcxMi0xICAgICAgICAgICAgICAgICAgZ2xpYmMKKyMgICBHRU9SR0lBTi1QUyAgICAgICAgICAgICAgICAgZ2xpYmMKKyMgICBIUC1ST01BTjggICAgICAgICAgICAgICAgICAgaHB1eAorIyAgIEhQLUFSQUJJQzggICAgICAgICAgICAgICAgICBocHV4CisjICAgSFAtR1JFRUs4ICAgICAgICAgICAgICAgICAgIGhwdXgKKyMgICBIUC1IRUJSRVc4ICAgICAgICAgICAgICAgICAgaHB1eAorIyAgIEhQLVRVUktJU0g4ICAgICAgICAgICAgICAgICBocHV4CisjICAgSFAtS0FOQTggICAgICAgICAgICAgICAgICAgIGhwdXgKKyMgICBERUMtS0FOSkkgICAgICAgICAgICAgICAgICAgb3NmCisjICAgREVDLUhBTllVICAgICAgICAgICAgICAgICAgIG9zZgorIyAgIFVURi04ICAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcworIworIyBOb3RlOiBOYW1lcyB3aGljaCBhcmUgbm90IG1hcmtlZCBhcyBiZWluZyBhIE1JTUUgbmFtZSBzaG91bGQgbm90IGJlIHVzZWQgaW4KKyMgSW50ZXJuZXQgcHJvdG9jb2xzIGZvciBpbmZvcm1hdGlvbiBpbnRlcmNoYW5nZSAobWFpbCwgbmV3cywgZXRjLikuCisjCisjIE5vdGU6IEFTQ0lJIGFuZCBBTlNJX1gzLjQtMTk2OCBhcmUgc3lub255bW91cyBjYW5vbmljYWwgbmFtZXMuIEFwcGxpY2F0aW9ucworIyBtdXN0IHVuZGVyc3RhbmQgYm90aCBuYW1lcyBhbmQgdHJlYXQgdGhlbSBhcyBlcXVpdmFsZW50LgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IKKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCisKK2hvc3Q9IiQxIgorb3M9YGVjaG8gIiRob3N0IiB8IHNlZCAtZSAncy9eW14tXSotW14tXSotXCguKlwpJC9cMS8nYAorZWNobyAiIyBUaGlzIGZpbGUgY29udGFpbnMgYSB0YWJsZSBvZiBjaGFyYWN0ZXIgZW5jb2RpbmcgYWxpYXNlcywiCitlY2hvICIjIHN1aXRhYmxlIGZvciBvcGVyYXRpbmcgc3lzdGVtICcke29zfScuIgorZWNobyAiIyBJdCB3YXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjb25maWcuY2hhcnNldC4iCisjIExpc3Qgb2YgcmVmZXJlbmNlcywgdXBkYXRlZCBkdXJpbmcgaW5zdGFsbGF0aW9uOgorZWNobyAiIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6ICIKK2Nhc2UgIiRvcyIgaW4KKyAgICBsaW51eC1nbnVsaWJjMSopCisJIyBMaW51eCBsaWJjNSBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQorCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQorCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCWVjaG8gIkMgQVNDSUkiCisJZWNobyAiUE9TSVggQVNDSUkiCisJZm9yIGwgaW4gYWYgYWZfWkEgY2EgY2FfRVMgZGEgZGFfREsgZGUgZGVfQVQgZGVfQkUgZGVfQ0ggZGVfREUgZGVfTFUgXAorCSAgICAgICAgIGVuIGVuX0FVIGVuX0JXIGVuX0NBIGVuX0RLIGVuX0dCIGVuX0lFIGVuX05aIGVuX1VTIGVuX1pBIFwKKwkgICAgICAgICBlbl9aVyBlcyBlc19BUiBlc19CTyBlc19DTCBlc19DTyBlc19ETyBlc19FQyBlc19FUyBlc19HVCBcCisJICAgICAgICAgZXNfSE4gZXNfTVggZXNfUEEgZXNfUEUgZXNfUFkgZXNfU1YgZXNfVVMgZXNfVVkgZXNfVkUgZXQgXAorCSAgICAgICAgIGV0X0VFIGV1IGV1X0VTIGZpIGZpX0ZJIGZvIGZvX0ZPIGZyIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIFwKKwkgICAgICAgICBmcl9MVSBnYSBnYV9JRSBnbCBnbF9FUyBpZCBpZF9JRCBpbiBpbl9JRCBpcyBpc19JUyBpdCBpdF9DSCBcCisJICAgICAgICAgaXRfSVQga2wga2xfR0wgbmwgbmxfQkUgbmxfTkwgbm8gbm9fTk8gcHQgcHRfQlIgcHRfUFQgc3YgXAorCSAgICAgICAgIHN2X0ZJIHN2X1NFOyBkbworCSAgZWNobyAiJGwgSVNPLTg4NTktMSIKKwkgIGVjaG8gIiRsLmlzby04ODU5LTEgSVNPLTg4NTktMSIKKwkgIGVjaG8gIiRsLmlzby04ODU5LTE1IElTTy04ODU5LTE1IgorCSAgZWNobyAiJGwuaXNvLTg4NTktMTVAZXVybyBJU08tODg1OS0xNSIKKwkgIGVjaG8gIiRsQGV1cm8gSVNPLTg4NTktMTUiCisJICBlY2hvICIkbC5jcC00MzcgQ1A0MzciCisJICBlY2hvICIkbC5jcC04NTAgQ1A4NTAiCisJICBlY2hvICIkbC5jcC0xMjUyIENQMTI1MiIKKwkgIGVjaG8gIiRsLmNwLTEyNTJAZXVybyBDUDEyNTIiCisJICAjZWNobyAiJGwuYXRhcmktc3QgQVRBUkktU1QiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZworCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCisJICBlY2hvICIkbC51dGYtOEBldXJvIFVURi04IgorCWRvbmUKKwlmb3IgbCBpbiBjcyBjc19DWiBociBocl9IUiBodSBodV9IVSBwbCBwbF9QTCBybyByb19STyBzayBza19TSyBzbCBcCisJICAgICAgICAgc2xfU0kgc3Igc3JfQ1Mgc3JfWVU7IGRvCisJICBlY2hvICIkbCBJU08tODg1OS0yIgorCSAgZWNobyAiJGwuaXNvLTg4NTktMiBJU08tODg1OS0yIgorCSAgZWNobyAiJGwuY3AtODUyIENQODUyIgorCSAgZWNobyAiJGwuY3AtMTI1MCBDUDEyNTAiCisJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKKwlkb25lCisJZm9yIGwgaW4gbWsgbWtfTUsgcnUgcnVfUlU7IGRvCisJICBlY2hvICIkbCBJU08tODg1OS01IgorCSAgZWNobyAiJGwuaXNvLTg4NTktNSBJU08tODg1OS01IgorCSAgZWNobyAiJGwua29pOC1yIEtPSTgtUiIKKwkgIGVjaG8gIiRsLmNwLTg2NiBDUDg2NiIKKwkgIGVjaG8gIiRsLmNwLTEyNTEgQ1AxMjUxIgorCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCisJZG9uZQorCWZvciBsIGluIGFyIGFyX1NBOyBkbworCSAgZWNobyAiJGwgSVNPLTg4NTktNiIKKwkgIGVjaG8gIiRsLmlzby04ODU5LTYgSVNPLTg4NTktNiIKKwkgIGVjaG8gIiRsLmNwLTg2NCBDUDg2NCIKKwkgICNlY2hvICIkbC5jcC04NjggQ1A4NjgiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZworCSAgZWNobyAiJGwuY3AtMTI1NiBDUDEyNTYiCisJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKKwlkb25lCisJZm9yIGwgaW4gZWwgZWxfR1IgZ3IgZ3JfR1I7IGRvCisJICBlY2hvICIkbCBJU08tODg1OS03IgorCSAgZWNobyAiJGwuaXNvLTg4NTktNyBJU08tODg1OS03IgorCSAgZWNobyAiJGwuY3AtODY5IENQODY5IgorCSAgZWNobyAiJGwuY3AtMTI1MyBDUDEyNTMiCisJICBlY2hvICIkbC5jcC0xMjUzQGV1cm8gQ1AxMjUzIgorCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCisJICBlY2hvICIkbC51dGYtOEBldXJvIFVURi04IgorCWRvbmUKKwlmb3IgbCBpbiBoZSBoZV9JTCBpdyBpd19JTDsgZG8KKwkgIGVjaG8gIiRsIElTTy04ODU5LTgiCisJICBlY2hvICIkbC5pc28tODg1OS04IElTTy04ODU5LTgiCisJICBlY2hvICIkbC5jcC04NjIgQ1A4NjIiCisJICBlY2hvICIkbC5jcC0xMjU1IENQMTI1NSIKKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgorCWRvbmUKKwlmb3IgbCBpbiB0ciB0cl9UUjsgZG8KKwkgIGVjaG8gIiRsIElTTy04ODU5LTkiCisJICBlY2hvICIkbC5pc28tODg1OS05IElTTy04ODU5LTkiCisJICBlY2hvICIkbC5jcC04NTcgQ1A4NTciCisJICBlY2hvICIkbC5jcC0xMjU0IENQMTI1NCIKKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgorCWRvbmUKKwlmb3IgbCBpbiBsdCBsdF9MVCBsdiBsdl9MVjsgZG8KKwkgICNlY2hvICIkbCBCQUxUSUMiICMgbm90IGEgY29tbW9ubHkgdXNlZCBlbmNvZGluZywgd3JvbmcgZW5jb2RpbmcgbmFtZQorCSAgZWNobyAiJGwgSVNPLTg4NTktMTMiCisJZG9uZQorCWZvciBsIGluIHJ1X1VBIHVrIHVrX1VBOyBkbworCSAgZWNobyAiJGwgS09JOC1VIgorCWRvbmUKKwlmb3IgbCBpbiB6aCB6aF9DTjsgZG8KKwkgICNlY2hvICIkbCBHQl8yMzEyLTgwIiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcsIHdyb25nIGVuY29kaW5nIG5hbWUKKwkgIGVjaG8gIiRsIEdCMjMxMiIKKwlkb25lCisJZm9yIGwgaW4gamEgamFfSlAgamFfSlAuRVVDOyBkbworCSAgZWNobyAiJGwgRVVDLUpQIgorCWRvbmUKKwlmb3IgbCBpbiBrbyBrb19LUjsgZG8KKwkgIGVjaG8gIiRsIEVVQy1LUiIKKwlkb25lCisJZm9yIGwgaW4gdGggdGhfVEg7IGRvCisJICBlY2hvICIkbCBUSVMtNjIwIgorCWRvbmUKKwlmb3IgbCBpbiBmYSBmYV9JUjsgZG8KKwkgICNlY2hvICIkbCBJU0lSSS0zMzQyIiAjIGEgYnJva2VuIGVuY29kaW5nCisJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKKwlkb25lCisJOzsKKyAgICBsaW51eCogfCAqLWdudSopCisJIyBXaXRoIGdsaWJjLTIuMSBvciBuZXdlciwgd2UgZG9uJ3QgbmVlZCBhbnkgY2Fub25pY2FsaXphdGlvbiwKKwkjIGJlY2F1c2UgZ2xpYmMgaGFzIGljb252IGFuZCBib3RoIGdsaWJjIGFuZCBsaWJpY29udiBzdXBwb3J0IGFsbAorCSMgR05VIGNhbm9uaWNhbCBuYW1lcyBkaXJlY3RseS4gVGhlcmVmb3JlLCB0aGUgTWFrZWZpbGUgZG9lcyBub3QKKwkjIG5lZWQgdG8gaW5zdGFsbCB0aGUgYWxpYXMgZmlsZSBhdCBhbGwuCisJIyBUaGUgZm9sbG93aW5nIGFwcGxpZXMgb25seSB0byBnbGliYy0yLjAueCBhbmQgb2xkZXIgbGliY3MuCisJZWNobyAiSVNPXzY0Ni5JUlY6MTk4MyBBU0NJSSIKKwk7OworICAgIGFpeCopCisJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCisJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCisJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCisJZWNobyAiSVNPODg1OS02IElTTy04ODU5LTYiCisJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCisJZWNobyAiSVNPODg1OS04IElTTy04ODU5LTgiCisJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCisJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKKwllY2hvICJJQk0tODUwIENQODUwIgorCWVjaG8gIklCTS04NTYgQ1A4NTYiCisJZWNobyAiSUJNLTkyMSBJU08tODg1OS0xMyIKKwllY2hvICJJQk0tOTIyIENQOTIyIgorCWVjaG8gIklCTS05MzIgQ1A5MzIiCisJZWNobyAiSUJNLTk0MyBDUDk0MyIKKwllY2hvICJJQk0tMTA0NiBDUDEwNDYiCisJZWNobyAiSUJNLTExMjQgQ1AxMTI0IgorCWVjaG8gIklCTS0xMTI5IENQMTEyOSIKKwllY2hvICJJQk0tMTI1MiBDUDEyNTIiCisJZWNobyAiSUJNLWV1Y0NOIEdCMjMxMiIKKwllY2hvICJJQk0tZXVjSlAgRVVDLUpQIgorCWVjaG8gIklCTS1ldWNLUiBFVUMtS1IiCisJZWNobyAiSUJNLWV1Y1RXIEVVQy1UVyIKKwllY2hvICJiaWc1IEJJRzUiCisJZWNobyAiR0JLIEdCSyIKKwllY2hvICJUSVMtNjIwIFRJUy02MjAiCisJZWNobyAiVVRGLTggVVRGLTgiCisJOzsKKyAgICBocHV4KikKKwllY2hvICJpc284ODU5MSBJU08tODg1OS0xIgorCWVjaG8gImlzbzg4NTkyIElTTy04ODU5LTIiCisJZWNobyAiaXNvODg1OTUgSVNPLTg4NTktNSIKKwllY2hvICJpc284ODU5NiBJU08tODg1OS02IgorCWVjaG8gImlzbzg4NTk3IElTTy04ODU5LTciCisJZWNobyAiaXNvODg1OTggSVNPLTg4NTktOCIKKwllY2hvICJpc284ODU5OSBJU08tODg1OS05IgorCWVjaG8gImlzbzg4NTkxNSBJU08tODg1OS0xNSIKKwllY2hvICJyb21hbjggSFAtUk9NQU44IgorCWVjaG8gImFyYWJpYzggSFAtQVJBQklDOCIKKwllY2hvICJncmVlazggSFAtR1JFRUs4IgorCWVjaG8gImhlYnJldzggSFAtSEVCUkVXOCIKKwllY2hvICJ0dXJraXNoOCBIUC1UVVJLSVNIOCIKKwllY2hvICJrYW5hOCBIUC1LQU5BOCIKKwllY2hvICJ0aXM2MjAgVElTLTYyMCIKKwllY2hvICJiaWc1IEJJRzUiCisJZWNobyAiZXVjSlAgRVVDLUpQIgorCWVjaG8gImV1Y0tSIEVVQy1LUiIKKwllY2hvICJldWNUVyBFVUMtVFciCisJZWNobyAiaHAxNUNOIEdCMjMxMiIKKwkjZWNobyAiY2NkYyA/IiAjIHdoYXQgaXMgdGhpcz8KKwllY2hvICJTSklTIFNISUZUX0pJUyIKKwllY2hvICJ1dGY4IFVURi04IgorCTs7CisgICAgaXJpeCopCisJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCisJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCisJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCisJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCisJZWNobyAiSVNPODg1OS05IElTTy04ODU5LTkiCisJZWNobyAiZXVjQ04gR0IyMzEyIgorCWVjaG8gImV1Y0pQIEVVQy1KUCIKKwllY2hvICJldWNLUiBFVUMtS1IiCisJZWNobyAiZXVjVFcgRVVDLVRXIgorCTs7CisgICAgb3NmKikKKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKKwllY2hvICJJU084ODU5LTcgSVNPLTg4NTktNyIKKwllY2hvICJJU084ODU5LTggSVNPLTg4NTktOCIKKwllY2hvICJJU084ODU5LTkgSVNPLTg4NTktOSIKKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgorCWVjaG8gImNwODUwIENQODUwIgorCWVjaG8gImJpZzUgQklHNSIKKwllY2hvICJkZWNoYW55dSBERUMtSEFOWVUiCisJZWNobyAiZGVjaGFuemkgR0IyMzEyIgorCWVjaG8gImRlY2thbmppIERFQy1LQU5KSSIKKwllY2hvICJkZWNrb3JlYW4gRVVDLUtSIgorCWVjaG8gImV1Y0pQIEVVQy1KUCIKKwllY2hvICJldWNLUiBFVUMtS1IiCisJZWNobyAiZXVjVFcgRVVDLVRXIgorCWVjaG8gIkdCSyBHQksiCisJZWNobyAiS1NDNTYwMSBDUDk0OSIKKwllY2hvICJzZGVja2FuamkgRVVDLUpQIgorCWVjaG8gIlNKSVMgU0hJRlRfSklTIgorCWVjaG8gIlRBQ1RJUyBUSVMtNjIwIgorCWVjaG8gIlVURi04IFVURi04IgorCTs7CisgICAgc29sYXJpcyopCisJZWNobyAiNjQ2IEFTQ0lJIgorCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgorCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgorCWVjaG8gIklTTzg4NTktMyBJU08tODg1OS0zIgorCWVjaG8gIklTTzg4NTktNCBJU08tODg1OS00IgorCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgorCWVjaG8gIklTTzg4NTktNiBJU08tODg1OS02IgorCWVjaG8gIklTTzg4NTktNyBJU08tODg1OS03IgorCWVjaG8gIklTTzg4NTktOCBJU08tODg1OS04IgorCWVjaG8gIklTTzg4NTktOSBJU08tODg1OS05IgorCWVjaG8gIklTTzg4NTktMTUgSVNPLTg4NTktMTUiCisJZWNobyAia29pOC1yIEtPSTgtUiIKKwllY2hvICJhbnNpLTEyNTEgQ1AxMjUxIgorCWVjaG8gIkJJRzUgQklHNSIKKwllY2hvICJCaWc1LUhLU0NTIEJJRzUtSEtTQ1MiCisJZWNobyAiZ2IyMzEyIEdCMjMxMiIKKwllY2hvICJHQksgR0JLIgorCWVjaG8gIkdCMTgwMzAgR0IxODAzMCIKKwllY2hvICJjbnMxMTY0MyBFVUMtVFciCisJZWNobyAiNTYwMSBFVUMtS1IiCisJZWNobyAia29fS1Iuam9oYXA5MiBKT0hBQiIKKwllY2hvICJldWNKUCBFVUMtSlAiCisJZWNobyAiUENLIFNISUZUX0pJUyIKKwllY2hvICJUSVM2MjAuMjUzMyBUSVMtNjIwIgorCSNlY2hvICJzdW5fZXVfZ3JlZWsgPyIgIyB3aGF0IGlzIHRoaXM/CisJZWNobyAiVVRGLTggVVRGLTgiCisJOzsKKyAgICBmcmVlYnNkKiB8IG9zMiopCisJIyBGcmVlQlNEIDQuMiBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQorCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQorCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCSMgTGlrZXdpc2UgZm9yIE9TLzIuIE9TLzIgaGFzIFhGcmVlODYganVzdCBsaWtlIEZyZWVCU0QuIEp1c3QKKwkjIHJldXNlIEZyZWVCU0QncyBsb2NhbGUgZGF0YSBmb3IgT1MvMi4KKwllY2hvICJDIEFTQ0lJIgorCWVjaG8gIlVTLUFTQ0lJIEFTQ0lJIgorCWZvciBsIGluIGxhX0xOIGx0X0xOOyBkbworCSAgZWNobyAiJGwuQVNDSUkgQVNDSUkiCisJZG9uZQorCWZvciBsIGluIGRhX0RLIGRlX0FUIGRlX0NIIGRlX0RFIGVuX0FVIGVuX0NBIGVuX0dCIGVuX1VTIGVzX0VTIFwKKwkgICAgICAgICBmaV9GSSBmcl9CRSBmcl9DQSBmcl9DSCBmcl9GUiBpc19JUyBpdF9DSCBpdF9JVCBsYV9MTiBcCisJICAgICAgICAgbHRfTE4gbmxfQkUgbmxfTkwgbm9fTk8gcHRfUFQgc3ZfU0U7IGRvCisJICBlY2hvICIkbC5JU09fODg1OS0xIElTTy04ODU5LTEiCisJICBlY2hvICIkbC5ESVNfODg1OS0xNSBJU08tODg1OS0xNSIKKwlkb25lCisJZm9yIGwgaW4gY3NfQ1ogaHJfSFIgaHVfSFUgbGFfTE4gbHRfTE4gcGxfUEwgc2xfU0k7IGRvCisJICBlY2hvICIkbC5JU09fODg1OS0yIElTTy04ODU5LTIiCisJZG9uZQorCWZvciBsIGluIGxhX0xOIGx0X0xUOyBkbworCSAgZWNobyAiJGwuSVNPXzg4NTktNCBJU08tODg1OS00IgorCWRvbmUKKwlmb3IgbCBpbiBydV9SVSBydV9TVTsgZG8KKwkgIGVjaG8gIiRsLktPSTgtUiBLT0k4LVIiCisJICBlY2hvICIkbC5JU09fODg1OS01IElTTy04ODU5LTUiCisJICBlY2hvICIkbC5DUDg2NiBDUDg2NiIKKwlkb25lCisJZWNobyAidWtfVUEuS09JOC1VIEtPSTgtVSIKKwllY2hvICJ6aF9UVy5CSUc1IEJJRzUiCisJZWNobyAiemhfVFcuQmlnNSBCSUc1IgorCWVjaG8gInpoX0NOLkVVQyBHQjIzMTIiCisJZWNobyAiamFfSlAuRVVDIEVVQy1KUCIKKwllY2hvICJqYV9KUC5TSklTIFNISUZUX0pJUyIKKwllY2hvICJqYV9KUC5TaGlmdF9KSVMgU0hJRlRfSklTIgorCWVjaG8gImtvX0tSLkVVQyBFVUMtS1IiCisJOzsKKyAgICBuZXRic2QqKQorCWVjaG8gIjY0NiBBU0NJSSIKKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKKwllY2hvICJJU084ODU5LTE1IElTTy04ODU5LTE1IgorCWVjaG8gImV1Y0NOIEdCMjMxMiIKKwllY2hvICJldWNKUCBFVUMtSlAiCisJZWNobyAiZXVjS1IgRVVDLUtSIgorCWVjaG8gImV1Y1RXIEVVQy1UVyIKKwllY2hvICJCSUc1IEJJRzUiCisJZWNobyAiU0pJUyBTSElGVF9KSVMiCisJOzsKKyAgICBkYXJ3aW4qKQorCSMgRGFyd2luIDYuOCBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQorCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQorCSMgZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCWVjaG8gIkMgQVNDSUkiCisJZm9yIGwgaW4gZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgbGFfTE47IGRvCisJICBlY2hvICIkbC5VUy1BU0NJSSBBU0NJSSIKKwlkb25lCisJZm9yIGwgaW4gZGFfREsgZGVfQVQgZGVfQ0ggZGVfREUgZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgZXNfRVMgXAorCSAgICAgICAgIGZpX0ZJIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIGlzX0lTIGl0X0NIIGl0X0lUIG5sX0JFIFwKKwkgICAgICAgICBubF9OTCBub19OTyBwdF9QVCBzdl9TRTsgZG8KKwkgIGVjaG8gIiRsIElTTy04ODU5LTEiCisJICBlY2hvICIkbC5JU084ODU5LTEgSVNPLTg4NTktMSIKKwkgIGVjaG8gIiRsLklTTzg4NTktMTUgSVNPLTg4NTktMTUiCisJZG9uZQorCWZvciBsIGluIGxhX0xOOyBkbworCSAgZWNobyAiJGwuSVNPODg1OS0xIElTTy04ODU5LTEiCisJICBlY2hvICIkbC5JU084ODU5LTE1IElTTy04ODU5LTE1IgorCWRvbmUKKwlmb3IgbCBpbiBjc19DWiBocl9IUiBodV9IVSBsYV9MTiBwbF9QTCBzbF9TSTsgZG8KKwkgIGVjaG8gIiRsLklTTzg4NTktMiBJU08tODg1OS0yIgorCWRvbmUKKwlmb3IgbCBpbiBsYV9MTiBsdF9MVDsgZG8KKwkgIGVjaG8gIiRsLklTTzg4NTktNCBJU08tODg1OS00IgorCWRvbmUKKwlmb3IgbCBpbiBydV9SVTsgZG8KKwkgIGVjaG8gIiRsLktPSTgtUiBLT0k4LVIiCisJICBlY2hvICIkbC5JU084ODU5LTUgSVNPLTg4NTktNSIKKwkgIGVjaG8gIiRsLkNQODY2IENQODY2IgorCWRvbmUKKwlmb3IgbCBpbiBiZ19CRzsgZG8KKwkgIGVjaG8gIiRsLkNQMTI1MSBDUDEyNTEiCisJZG9uZQorCWVjaG8gInVrX1VBLktPSTgtVSBLT0k4LVUiCisJZWNobyAiemhfVFcuQklHNSBCSUc1IgorCWVjaG8gInpoX1RXLkJpZzUgQklHNSIKKwllY2hvICJ6aF9DTi5FVUMgR0IyMzEyIgorCWVjaG8gImphX0pQLkVVQyBFVUMtSlAiCisJZWNobyAiamFfSlAuU0pJUyBTSElGVF9KSVMiCisJZWNobyAia29fS1IuRVVDIEVVQy1LUiIKKwk7OworICAgIGJlb3MqKQorCSMgQmVPUyBoYXMgYSBzaW5nbGUgbG9jYWxlLCBhbmQgaXQgaGFzIFVURi04IGVuY29kaW5nLgorCWVjaG8gIiogVVRGLTgiCisJOzsKKyAgICBtc2Rvc2RqZ3BwKikKKwkjIERKR1BQIDIuMDMgZG9lc24ndCBoYXZlIG5sX2xhbmdpbmZvKENPREVTRVQpOyB0aGVyZWZvcmUKKwkjIGxvY2FsY2hhcnNldC5jIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGZ1bGwgbG9jYWxlIG5hbWUKKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKwllY2hvICIjIgorCWVjaG8gIiMgVGhlIGVuY29kaW5ncyBnaXZlbiBoZXJlIG1heSBub3QgYWxsIGJlIGNvcnJlY3QuIgorCWVjaG8gIiMgSWYgeW91IGZpbmQgdGhhdCB0aGUgZW5jb2RpbmcgZ2l2ZW4gZm9yIHlvdXIgbGFuZ3VhZ2UgYW5kIgorCWVjaG8gIiMgY291bnRyeSBpcyBub3QgdGhlIG9uZSB5b3VyIERPUyBtYWNoaW5lIGFjdHVhbGx5IHVzZXMsIGp1c3QiCisJZWNobyAiIyBjb3JyZWN0IGl0IGluIHRoaXMgZmlsZSwgYW5kIHNlbmQgYSBtYWlsIHRvIgorCWVjaG8gIiMgSnVhbiBNYW51ZWwgR3VlcnJlcm8gPHN0MDAxOTA2QGhyejEuaHJ6LnR1LWRhcm1zdGFkdC5kZT4iCisJZWNobyAiIyBhbmQgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LiIKKwllY2hvICIjIgorCWVjaG8gIkMgQVNDSUkiCisJIyBJU08tODg1OS0xIGxhbmd1YWdlcworCWVjaG8gImNhIENQODUwIgorCWVjaG8gImNhX0VTIENQODUwIgorCWVjaG8gImRhIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PworCWVjaG8gImRhX0RLIENQODY1IiAjIG5vdCBDUDg1MCA/PworCWVjaG8gImRlIENQODUwIgorCWVjaG8gImRlX0FUIENQODUwIgorCWVjaG8gImRlX0NIIENQODUwIgorCWVjaG8gImRlX0RFIENQODUwIgorCWVjaG8gImVuIENQODUwIgorCWVjaG8gImVuX0FVIENQODUwIiAjIG5vdCBDUDQzNyA/PworCWVjaG8gImVuX0NBIENQODUwIgorCWVjaG8gImVuX0dCIENQODUwIgorCWVjaG8gImVuX05aIENQNDM3IgorCWVjaG8gImVuX1VTIENQNDM3IgorCWVjaG8gImVuX1pBIENQODUwIiAjIG5vdCBDUDQzNyA/PworCWVjaG8gImVzIENQODUwIgorCWVjaG8gImVzX0FSIENQODUwIgorCWVjaG8gImVzX0JPIENQODUwIgorCWVjaG8gImVzX0NMIENQODUwIgorCWVjaG8gImVzX0NPIENQODUwIgorCWVjaG8gImVzX0NSIENQODUwIgorCWVjaG8gImVzX0NVIENQODUwIgorCWVjaG8gImVzX0RPIENQODUwIgorCWVjaG8gImVzX0VDIENQODUwIgorCWVjaG8gImVzX0VTIENQODUwIgorCWVjaG8gImVzX0dUIENQODUwIgorCWVjaG8gImVzX0hOIENQODUwIgorCWVjaG8gImVzX01YIENQODUwIgorCWVjaG8gImVzX05JIENQODUwIgorCWVjaG8gImVzX1BBIENQODUwIgorCWVjaG8gImVzX1BZIENQODUwIgorCWVjaG8gImVzX1BFIENQODUwIgorCWVjaG8gImVzX1NWIENQODUwIgorCWVjaG8gImVzX1VZIENQODUwIgorCWVjaG8gImVzX1ZFIENQODUwIgorCWVjaG8gImV0IENQODUwIgorCWVjaG8gImV0X0VFIENQODUwIgorCWVjaG8gImV1IENQODUwIgorCWVjaG8gImV1X0VTIENQODUwIgorCWVjaG8gImZpIENQODUwIgorCWVjaG8gImZpX0ZJIENQODUwIgorCWVjaG8gImZyIENQODUwIgorCWVjaG8gImZyX0JFIENQODUwIgorCWVjaG8gImZyX0NBIENQODUwIgorCWVjaG8gImZyX0NIIENQODUwIgorCWVjaG8gImZyX0ZSIENQODUwIgorCWVjaG8gImdhIENQODUwIgorCWVjaG8gImdhX0lFIENQODUwIgorCWVjaG8gImdkIENQODUwIgorCWVjaG8gImdkX0dCIENQODUwIgorCWVjaG8gImdsIENQODUwIgorCWVjaG8gImdsX0VTIENQODUwIgorCWVjaG8gImlkIENQODUwIiAgICAjIG5vdCBDUDQzNyA/PworCWVjaG8gImlkX0lEIENQODUwIiAjIG5vdCBDUDQzNyA/PworCWVjaG8gImlzIENQODYxIiAgICAjIG5vdCBDUDg1MCA/PworCWVjaG8gImlzX0lTIENQODYxIiAjIG5vdCBDUDg1MCA/PworCWVjaG8gIml0IENQODUwIgorCWVjaG8gIml0X0NIIENQODUwIgorCWVjaG8gIml0X0lUIENQODUwIgorCWVjaG8gImx0IENQNzc1IgorCWVjaG8gImx0X0xUIENQNzc1IgorCWVjaG8gImx2IENQNzc1IgorCWVjaG8gImx2X0xWIENQNzc1IgorCWVjaG8gIm5iIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PworCWVjaG8gIm5iX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PworCWVjaG8gIm5sIENQODUwIgorCWVjaG8gIm5sX0JFIENQODUwIgorCWVjaG8gIm5sX05MIENQODUwIgorCWVjaG8gIm5uIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PworCWVjaG8gIm5uX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PworCWVjaG8gIm5vIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PworCWVjaG8gIm5vX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PworCWVjaG8gInB0IENQODUwIgorCWVjaG8gInB0X0JSIENQODUwIgorCWVjaG8gInB0X1BUIENQODUwIgorCWVjaG8gInN2IENQODUwIgorCWVjaG8gInN2X1NFIENQODUwIgorCSMgSVNPLTg4NTktMiBsYW5ndWFnZXMKKwllY2hvICJjcyBDUDg1MiIKKwllY2hvICJjc19DWiBDUDg1MiIKKwllY2hvICJociBDUDg1MiIKKwllY2hvICJocl9IUiBDUDg1MiIKKwllY2hvICJodSBDUDg1MiIKKwllY2hvICJodV9IVSBDUDg1MiIKKwllY2hvICJwbCBDUDg1MiIKKwllY2hvICJwbF9QTCBDUDg1MiIKKwllY2hvICJybyBDUDg1MiIKKwllY2hvICJyb19STyBDUDg1MiIKKwllY2hvICJzayBDUDg1MiIKKwllY2hvICJza19TSyBDUDg1MiIKKwllY2hvICJzbCBDUDg1MiIKKwllY2hvICJzbF9TSSBDUDg1MiIKKwllY2hvICJzcSBDUDg1MiIKKwllY2hvICJzcV9BTCBDUDg1MiIKKwllY2hvICJzciBDUDg1MiIgICAgIyBDUDg1MiBvciBDUDg2NiBvciBDUDg1NSA/PworCWVjaG8gInNyX0NTIENQODUyIiAjIENQODUyIG9yIENQODY2IG9yIENQODU1ID8/CisJZWNobyAic3JfWVUgQ1A4NTIiICMgQ1A4NTIgb3IgQ1A4NjYgb3IgQ1A4NTUgPz8KKwkjIElTTy04ODU5LTMgbGFuZ3VhZ2VzCisJZWNobyAibXQgQ1A4NTAiCisJZWNobyAibXRfTVQgQ1A4NTAiCisJIyBJU08tODg1OS01IGxhbmd1YWdlcworCWVjaG8gImJlIENQODY2IgorCWVjaG8gImJlX0JFIENQODY2IgorCWVjaG8gImJnIENQODY2IiAgICAjIG5vdCBDUDg1NSA/PworCWVjaG8gImJnX0JHIENQODY2IiAjIG5vdCBDUDg1NSA/PworCWVjaG8gIm1rIENQODY2IiAgICAjIG5vdCBDUDg1NSA/PworCWVjaG8gIm1rX01LIENQODY2IiAjIG5vdCBDUDg1NSA/PworCWVjaG8gInJ1IENQODY2IgorCWVjaG8gInJ1X1JVIENQODY2IgorCWVjaG8gInVrIENQMTEyNSIKKwllY2hvICJ1a19VQSBDUDExMjUiCisJIyBJU08tODg1OS02IGxhbmd1YWdlcworCWVjaG8gImFyIENQODY0IgorCWVjaG8gImFyX0FFIENQODY0IgorCWVjaG8gImFyX0RaIENQODY0IgorCWVjaG8gImFyX0VHIENQODY0IgorCWVjaG8gImFyX0lRIENQODY0IgorCWVjaG8gImFyX0lSIENQODY0IgorCWVjaG8gImFyX0pPIENQODY0IgorCWVjaG8gImFyX0tXIENQODY0IgorCWVjaG8gImFyX01BIENQODY0IgorCWVjaG8gImFyX09NIENQODY0IgorCWVjaG8gImFyX1FBIENQODY0IgorCWVjaG8gImFyX1NBIENQODY0IgorCWVjaG8gImFyX1NZIENQODY0IgorCSMgSVNPLTg4NTktNyBsYW5ndWFnZXMKKwllY2hvICJlbCBDUDg2OSIKKwllY2hvICJlbF9HUiBDUDg2OSIKKwkjIElTTy04ODU5LTggbGFuZ3VhZ2VzCisJZWNobyAiaGUgQ1A4NjIiCisJZWNobyAiaGVfSUwgQ1A4NjIiCisJIyBJU08tODg1OS05IGxhbmd1YWdlcworCWVjaG8gInRyIENQODU3IgorCWVjaG8gInRyX1RSIENQODU3IgorCSMgSmFwYW5lc2UKKwllY2hvICJqYSBDUDkzMiIKKwllY2hvICJqYV9KUCBDUDkzMiIKKwkjIENoaW5lc2UKKwllY2hvICJ6aF9DTiBHQksiCisJZWNobyAiemhfVFcgQ1A5NTAiICMgbm90IENQOTM4ID8/CisJIyBLb3JlYW4KKwllY2hvICJrciBDUDk0OSIgICAgIyBub3QgQ1A5MzQgPz8KKwllY2hvICJrcl9LUiBDUDk0OSIgIyBub3QgQ1A5MzQgPz8KKwkjIFRoYWkKKwllY2hvICJ0aCBDUDg3NCIKKwllY2hvICJ0aF9USCBDUDg3NCIKKwkjIE90aGVyCisJZWNobyAiZW8gQ1A4NTAiCisJZWNobyAiZW9fRU8gQ1A4NTAiCisJOzsKK2VzYWMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2RjZ2V0dGV4dC5jIGIvZTJmc3Byb2dzL2ludGwvZGNnZXR0ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwYWNkZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2RjZ2V0dGV4dC5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY2dldHRleHQoMykgZnVuY3Rpb24uCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2Vsc2UKKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCisgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBEQ0dFVFRFWFQgX19kY2dldHRleHQKKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0CisjZWxzZQorIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0CisjIGRlZmluZSBEQ0lHRVRURVhUIGxpYmludGxfZGNpZ2V0dGV4dAorI2VuZGlmCisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQorICAgbG9jYWxlLiAgKi8KK2NoYXIgKgorRENHRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KQoreworICByZXR1cm4gRENJR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIE5VTEwsIDAsIDAsIGNhdGVnb3J5KTsKK30KKworI2lmZGVmIF9MSUJDCisvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KK0lOVERFRihfX2RjZ2V0dGV4dCkKK3dlYWtfYWxpYXMgKF9fZGNnZXR0ZXh0LCBkY2dldHRleHQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9kY2lnZXR0ZXh0LmMgYi9lMmZzcHJvZ3MvaW50bC9kY2lnZXR0ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2NzhjZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2RjaWdldHRleHQuYwpAQCAtMCwwICsxLDEyMjIgQEAKKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbCBkY2lnZXR0ZXh0IGZ1bmN0aW9uLgorICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKy8qIFRlbGwgZ2xpYmMncyA8c3RyaW5nLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIG1lbXBjcHkoKS4KKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQorICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLworI2lmbmRlZiBfR05VX1NPVVJDRQorIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmZGVmIF9fR05VQ19fCisjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQorIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQorI2Vsc2UKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCisjIGVsc2UKKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCisjICAgaW5jbHVkZSA8YWxsb2NhLmg+CisjICBlbHNlCisjICAgaWZkZWYgX0FJWAorICNwcmFnbWEgYWxsb2NhCisjICAgZWxzZQorIyAgICBpZm5kZWYgYWxsb2NhCitjaGFyICphbGxvY2EgKCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaWZuZGVmIGVycm5vCitleHRlcm4gaW50IGVycm5vOworI2VuZGlmCisjaWZuZGVmIF9fc2V0X2Vycm5vCisjIGRlZmluZSBfX3NldF9lcnJubyh2YWwpIGVycm5vID0gKHZhbCkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQworIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpZmRlZiBfTElCQworICAvKiBHdWVzcyB3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgc2lnbmFsIFNJR0ZQRS4KKyAgICAgU2V0IHRvIDEgb25seSBpZiB5b3Uga25vdyBmb3Igc3VyZS4gIEluIGNhc2Ugb2YgZG91YnQsIHNldCB0byAwLiAgKi8KKyMgaWYgZGVmaW5lZCBfX2FscGhhX18gfHwgZGVmaW5lZCBfX2FybV9fIHx8IGRlZmluZWQgX19pMzg2X18gXAorICAgICB8fCBkZWZpbmVkIF9fbTY4a19fIHx8IGRlZmluZWQgX19zMzkwX18KKyMgIGRlZmluZSBJTlRESVYwX1JBSVNFU19TSUdGUEUgMQorIyBlbHNlCisjICBkZWZpbmUgSU5URElWMF9SQUlTRVNfU0lHRlBFIDAKKyMgZW5kaWYKKyNlbmRpZgorI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKKyMgaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQgSEFWRV9TWVNfUEFSQU1fSCB8fCBkZWZpbmVkIF9MSUJDCisjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgorI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlIDxsaWJpbnRsLmg+CisjZWxzZQorIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCisjZW5kaWYKKyNpbmNsdWRlICJoYXNoLXN0cmluZy5oIgorCisvKiBUaHJlYWQgc2FmZXR5bmVzcy4gICovCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KKyNlbHNlCisvKiBQcm92aWRlIGR1bW15IGltcGxlbWVudGF0aW9uIGlmIHRoaXMgaXMgb3V0c2lkZSBnbGliYy4gICovCisjIGRlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQoQ0xBU1MsIE5BTUUpCisjIGRlZmluZSBfX2xpYmNfbG9ja19sb2NrKE5BTUUpCisjIGRlZmluZSBfX2xpYmNfbG9ja191bmxvY2soTkFNRSkKKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lX2luaXRpYWxpemVkKENMQVNTLCBOQU1FKQorIyBkZWZpbmUgX19saWJjX3J3bG9ja19yZGxvY2soTkFNRSkKKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfdW5sb2NrKE5BTUUpCisjZW5kaWYKKworLyogQWxpZ25tZW50IG9mIHR5cGVzLiAgKi8KKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID49IDIKKyMgZGVmaW5lIGFsaWdub2YoVFlQRSkgX19hbGlnbm9mX18gKFRZUEUpCisjZWxzZQorIyBkZWZpbmUgYWxpZ25vZihUWVBFKSBcCisgICAgKChpbnQpICYoKHN0cnVjdCB7IGNoYXIgZHVtbXkxOyBUWVBFIGR1bW15MjsgfSAqKSAwKS0+ZHVtbXkyKQorI2VuZGlmCisKKy8qIFRoZSBpbnRlcm5hbCB2YXJpYWJsZXMgaW4gdGhlIHN0YW5kYWxvbmUgbGliaW50bC5hIG11c3QgaGF2ZSBkaWZmZXJlbnQKKyAgIG5hbWVzIHRoYW4gdGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiBHTlUgbGliYywgb3RoZXJ3aXNlIHByb2dyYW1zCisgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KKyNpZiAhZGVmaW5lZCBfTElCQworIyBkZWZpbmUgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4gbGliaW50bF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluCisjIGRlZmluZSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4KKyMgZGVmaW5lIF9ubF9kZWZhdWx0X2Rpcm5hbWUgbGliaW50bF9ubF9kZWZhdWx0X2Rpcm5hbWUKKyMgZGVmaW5lIF9ubF9kb21haW5fYmluZGluZ3MgbGliaW50bF9ubF9kb21haW5fYmluZGluZ3MKKyNlbmRpZgorCisvKiBTb21lIGNvbXBpbGVycywgbGlrZSBTdW5PUzQgY2MsIGRvbid0IGhhdmUgb2Zmc2V0b2YgaW4gPHN0ZGRlZi5oPi4gICovCisjaWZuZGVmIG9mZnNldG9mCisjIGRlZmluZSBvZmZzZXRvZih0eXBlLGlkZW50KSAoKHNpemVfdCkmKCgodHlwZSopMCktPmlkZW50KSkKKyNlbmRpZgorCisvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCisKKyNpZmRlZiBfTElCQworLyogUmVuYW1lIHRoZSBub24gQU5TSSBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCisgICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0CisgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCisjIGRlZmluZSBnZXRjd2QgX19nZXRjd2QKKyMgaWZuZGVmIHN0cGNweQorIyAgZGVmaW5lIHN0cGNweSBfX3N0cGNweQorIyBlbmRpZgorIyBkZWZpbmUgdGZpbmQgX190ZmluZAorI2Vsc2UKKyMgaWYgIWRlZmluZWQgSEFWRV9HRVRDV0QKK2NoYXIgKmdldHdkICgpOworIyAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgZ2V0d2QgKGJ1ZikKKyMgZWxzZQorIyAgaWYgVk1TCisjICAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgKGdldGN3ZCkgKGJ1ZiwgbWF4LCAwKQorIyAgZWxzZQorY2hhciAqZ2V0Y3dkICgpOworIyAgZW5kaWYKKyMgZW5kaWYKKyMgaWZuZGVmIEhBVkVfU1RQQ1BZCisjZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIG15X3N0cGNweShkZXN0LCBzcmMpCitzdGF0aWMgY2hhciAqc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOworIyBlbmRpZgorIyBpZm5kZWYgSEFWRV9NRU1QQ1BZCitzdGF0aWMgdm9pZCAqbWVtcGNweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7CisjIGVuZGlmCisjZW5kaWYKKworLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KKyNkZWZpbmUgUEFUSF9JTkNSIDMyCisKKy8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLworLyogTm9uLVBPU0lYIEJTRCBzeXN0ZW1zIG1pZ2h0IGhhdmUgZ2NjJ3MgbGltaXRzLmgsIHdoaWNoIGRvZXNuJ3QgZGVmaW5lCisgICBQQVRIX01BWCBidXQgbWlnaHQgY2F1c2UgcmVkZWZpbml0aW9uIHdhcm5pbmdzIHdoZW4gc3lzL3BhcmFtLmggaXMKKyAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KKyNpZiBkZWZpbmVkIF9QT1NJWF9WRVJTSU9OIHx8IChkZWZpbmVkIEhBVkVfTElNSVRTX0ggJiYgIWRlZmluZWQgX19HTlVDX18pCisjIGluY2x1ZGUgPGxpbWl0cy5oPgorI2VuZGlmCisKKyNpZm5kZWYgX1BPU0lYX1BBVEhfTUFYCisjIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1CisjZW5kaWYKKworI2lmICFkZWZpbmVkIFBBVEhfTUFYICYmIGRlZmluZWQgX1BDX1BBVEhfTUFYCisjIGRlZmluZSBQQVRIX01BWCAocGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSA8IDEgPyAxMDI0IDogcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSkKKyNlbmRpZgorCisvKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLworI2lmIGRlZmluZWQgSEFWRV9TWVNfUEFSQU1fSCAmJiAhZGVmaW5lZCBQQVRIX01BWCAmJiAhZGVmaW5lZCBNQVhQQVRITEVOCisjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIE1BWFBBVEhMRU4KKyMgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KKyNlbmRpZgorCisjaWZuZGVmIFBBVEhfTUFYCisjIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKKyNlbmRpZgorCisvKiBQYXRobmFtZSBzdXBwb3J0LgorICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCisgICBJU19BQlNPTFVURV9QQVRIKFApICB0ZXN0cyB3aGV0aGVyIFAgaXMgYW4gYWJzb2x1dGUgcGF0aC4gIElmIGl0IGlzIG5vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IG1heSBiZSBjb25jYXRlbmF0ZWQgdG8gYSBkaXJlY3RvcnkgcGF0aG5hbWUuCisgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KKyAqLworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXworICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCisjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQorIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCisgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAorICAgICAmJiAoUClbMV0gPT0gJzonKQorIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSAoSVNTTEFTSCAoKFApWzBdKSB8fCBIQVNfREVWSUNFIChQKSkKKyMgZGVmaW5lIElTX1BBVEhfV0lUSF9ESVIoUCkgXAorICAgIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCB8fCBzdHJjaHIgKFAsICdcXCcpICE9IE5VTEwgfHwgSEFTX0RFVklDRSAoUCkpCisjZWxzZQorICAvKiBVbml4ICovCisjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQorIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSBJU1NMQVNIICgoUClbMF0pCisjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCkKKyNlbmRpZgorCisvKiBUaGlzIGlzIHRoZSB0eXBlIHVzZWQgZm9yIHRoZSBzZWFyY2ggdHJlZSB3aGVyZSBrbm93biB0cmFuc2xhdGlvbnMKKyAgIGFyZSBzdG9yZWQuICAqLworc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QKK3sKKyAgLyogRG9tYWluIGluIHdoaWNoIHRvIHNlYXJjaC4gICovCisgIGNoYXIgKmRvbWFpbm5hbWU7CisKKyAgLyogVGhlIGNhdGVnb3J5LiAgKi8KKyAgaW50IGNhdGVnb3J5OworCisgIC8qIFN0YXRlIG9mIHRoZSBjYXRhbG9nIGNvdW50ZXIgYXQgdGhlIHBvaW50IHRoZSBzdHJpbmcgd2FzIGZvdW5kLiAgKi8KKyAgaW50IGNvdW50ZXI7CisKKyAgLyogQ2F0YWxvZyB3aGVyZSB0aGUgc3RyaW5nIHdhcyBmb3VuZC4gICovCisgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKKworICAvKiBBbmQgZmluYWxseSB0aGUgdHJhbnNsYXRpb24uICAqLworICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbjsKKyAgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbmd0aDsKKworICAvKiBQb2ludGVyIHRvIHRoZSBzdHJpbmcgaW4gcXVlc3Rpb24uICAqLworICBjaGFyIG1zZ2lkW1pFUk9dOworfTsKKworLyogUm9vdCBvZiB0aGUgc2VhcmNoIHRyZWUgd2l0aCBrbm93biB0cmFuc2xhdGlvbnMuICBXZSBjYW4gdXNlIHRoaXMKKyAgIG9ubHkgaWYgdGhlIHN5c3RlbSBwcm92aWRlcyB0aGUgYHRzZWFyY2gnIGZ1bmN0aW9uIGZhbWlseS4gICovCisjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQworIyBpbmNsdWRlIDxzZWFyY2guaD4KKworc3RhdGljIHZvaWQgKnJvb3Q7CisKKyMgaWZkZWYgX0xJQkMKKyMgIGRlZmluZSB0c2VhcmNoIF9fdHNlYXJjaAorIyBlbmRpZgorCisvKiBGdW5jdGlvbiB0byBjb21wYXJlIHR3byBlbnRyaWVzIGluIHRoZSB0YWJsZSBvZiBrbm93biB0cmFuc2xhdGlvbnMuICAqLworc3RhdGljIGludAordHJhbnNjbXAgKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKK3sKKyAgY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnMxOworICBjb25zdCBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqczI7CisgIGludCByZXN1bHQ7CisKKyAgczEgPSAoY29uc3Qgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikgcDE7CisgIHMyID0gKGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopIHAyOworCisgIHJlc3VsdCA9IHN0cmNtcCAoczEtPm1zZ2lkLCBzMi0+bXNnaWQpOworICBpZiAocmVzdWx0ID09IDApCisgICAgeworICAgICAgcmVzdWx0ID0gc3RyY21wIChzMS0+ZG9tYWlubmFtZSwgczItPmRvbWFpbm5hbWUpOworICAgICAgaWYgKHJlc3VsdCA9PSAwKQorCS8qIFdlIGNvbXBhcmUgdGhlIGNhdGVnb3J5IGxhc3QgKHRob3VnaCB0aGlzIGlzIHRoZSBjaGVhcGVzdAorCSAgIG9wZXJhdGlvbikgc2luY2UgaXQgaXMgaG9wZWZ1bGx5IGFsd2F5cyB0aGUgc2FtZSAobmFtZWx5CisJICAgTENfTUVTU0FHRVMpLiAgKi8KKwlyZXN1bHQgPSBzMS0+Y2F0ZWdvcnkgLSBzMi0+Y2F0ZWdvcnk7CisgICAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmbmRlZiBJTlRWQVJERUYKKyMgZGVmaW5lIElOVFZBUkRFRihuYW1lKQorI2VuZGlmCisjaWZuZGVmIElOVFVTRQorIyBkZWZpbmUgSU5UVVNFKG5hbWUpIG5hbWUKKyNlbmRpZgorCisvKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGRvbWFpbiB1c2VkIGZvciBnZXR0ZXh0KDMpIHByaW9yIGFueSBjYWxsIHRvCisgICB0ZXh0ZG9tYWluKDMpLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgaXMgIm1lc3NhZ2VzIi4gICovCitjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW10gYXR0cmlidXRlX2hpZGRlbiA9ICJtZXNzYWdlcyI7CisKKy8qIFZhbHVlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZG9tYWluIGZvciBnZXR0ZXh0KDMpLiAgKi8KK2NvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGF0dHJpYnV0ZV9oaWRkZW4KKyAgICAgPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKKworLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLworI2lmIGRlZmluZWQgX19FTVhfXworZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdOworI2Vsc2UKK2NvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdID0gTE9DQUxFRElSOworSU5UVkFSREVGIChfbmxfZGVmYXVsdF9kaXJuYW1lKQorI2VuZGlmCisKKy8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQorICAgY2FsbHMuICAqLworc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7CisKKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCitzdGF0aWMgY2hhciAqcGx1cmFsX2xvb2t1cCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluLAorCQkJICAgIHVuc2lnbmVkIGxvbmcgaW50IG4sCisJCQkgICAgY29uc3QgY2hhciAqdHJhbnNsYXRpb24sIHNpemVfdCB0cmFuc2xhdGlvbl9sZW4pCisgICAgIGludGVybmFsX2Z1bmN0aW9uOworc3RhdGljIGNvbnN0IGNoYXIgKmd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChpbnQgY2F0ZWdvcnksCisJCQkJCSBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCisgICAgIGludGVybmFsX2Z1bmN0aW9uOworI2lmZGVmIF9MSUJDCisjIGluY2x1ZGUgIi4uL2xvY2FsZS9sb2NhbGVpbmZvLmgiCisjIGRlZmluZSBjYXRlZ29yeV90b19uYW1lKGNhdGVnb3J5KQlfbmxfY2F0ZWdvcnlfbmFtZXNbY2F0ZWdvcnldCisjZWxzZQorc3RhdGljIGNvbnN0IGNoYXIgKmNhdGVnb3J5X3RvX25hbWUgKGludCBjYXRlZ29yeSkgaW50ZXJuYWxfZnVuY3Rpb247CisjZW5kaWYKKworCisvKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKKyAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCisjaWZkZWYgSEFWRV9BTExPQ0EKKy8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLworIyBkZWZpbmUgZnJlZWEocCkgLyogbm90aGluZyAqLworIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHJlc3MpIC8qIG5vdGhpbmcgKi8KKyMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KKyNlbHNlCitzdHJ1Y3QgYmxvY2tfbGlzdAoreworICB2b2lkICphZGRyZXNzOworICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKK307CisjIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCisgIGRvIHsJCQkJCQkJCQkgICAgICBcCisgICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCisgICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAorICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAorICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAorICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCisgICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKKyAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKKyAgICB9CQkJCQkJCQkJICAgICAgXAorICB9IHdoaWxlICgwKQorIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCisgIGRvIHsJCQkJCQkJCQkgICAgICBcCisgICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKKyAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAorICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAorICAgICAgZnJlZSAob2xkLT5hZGRyZXNzKTsJCQkJCQkgICAgICBcCisgICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCisgICAgfQkJCQkJCQkJCSAgICAgIFwKKyAgfSB3aGlsZSAoMCkKKyMgdW5kZWYgYWxsb2NhCisjIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCisjIGRlZmluZSBmcmVlYShwKSBmcmVlIChwKQorI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCisKKworI2lmZGVmIF9MSUJDCisvKiBMaXN0IG9mIGJsb2NrcyBhbGxvY2F0ZWQgZm9yIHRyYW5zbGF0aW9ucy4gICovCit0eXBlZGVmIHN0cnVjdCB0cmFuc21lbV9saXN0Cit7CisgIHN0cnVjdCB0cmFuc21lbV9saXN0ICpuZXh0OworICBjaGFyIGRhdGFbWkVST107Cit9IHRyYW5zbWVtX2Jsb2NrX3Q7CitzdGF0aWMgc3RydWN0IHRyYW5zbWVtX2xpc3QgKnRyYW5zbWVtX2xpc3Q7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHRyYW5zbWVtX2Jsb2NrX3Q7CisjZW5kaWYKKworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCisgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCisgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0CisjZWxzZQorIyBkZWZpbmUgRENJR0VUVEVYVCBsaWJpbnRsX2RjaWdldHRleHQKKyNlbmRpZgorCisvKiBMb2NrIHZhcmlhYmxlIHRvIHByb3RlY3QgdGhlIGdsb2JhbCBkYXRhIGluIHRoZSBnZXR0ZXh0IGltcGxlbWVudGF0aW9uLiAgKi8KKyNpZmRlZiBfTElCQworX19saWJjX3J3bG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKCwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKKyNlbmRpZgorCisvKiBDaGVja2luZyB3aGV0aGVyIHRoZSBiaW5hcmllcyBydW5zIFNVSUQgbXVzdCBiZSBkb25lIGFuZCBnbGliYyBwcm92aWRlcworICAgZWFzaWVyIG1ldGhvZHMgdGhlcmVmb3JlIHdlIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBFTkFCTEVfU0VDVVJFIF9fbGliY19lbmFibGVfc2VjdXJlCisjIGRlZmluZSBERVRFUk1JTkVfU0VDVVJFCisjZWxzZQorIyBpZm5kZWYgSEFWRV9HRVRVSUQKKyMgIGRlZmluZSBnZXR1aWQoKSAwCisjIGVuZGlmCisjIGlmbmRlZiBIQVZFX0dFVEdJRAorIyAgZGVmaW5lIGdldGdpZCgpIDAKKyMgZW5kaWYKKyMgaWZuZGVmIEhBVkVfR0VURVVJRAorIyAgZGVmaW5lIGdldGV1aWQoKSBnZXR1aWQoKQorIyBlbmRpZgorIyBpZm5kZWYgSEFWRV9HRVRFR0lECisjICBkZWZpbmUgZ2V0ZWdpZCgpIGdldGdpZCgpCisjIGVuZGlmCitzdGF0aWMgaW50IGVuYWJsZV9zZWN1cmU7CisjIGRlZmluZSBFTkFCTEVfU0VDVVJFIChlbmFibGVfc2VjdXJlID09IDEpCisjIGRlZmluZSBERVRFUk1JTkVfU0VDVVJFIFwKKyAgaWYgKGVuYWJsZV9zZWN1cmUgPT0gMCkJCQkJCQkgICAgICBcCisgICAgewkJCQkJCQkJCSAgICAgIFwKKyAgICAgIGlmIChnZXR1aWQgKCkgIT0gZ2V0ZXVpZCAoKSB8fCBnZXRnaWQgKCkgIT0gZ2V0ZWdpZCAoKSkJCSAgICAgIFwKKwllbmFibGVfc2VjdXJlID0gMTsJCQkJCQkgICAgICBcCisgICAgICBlbHNlCQkJCQkJCQkgICAgICBcCisJZW5hYmxlX3NlY3VyZSA9IC0xOwkJCQkJCSAgICAgIFwKKyAgICB9CisjZW5kaWYKKworLyogR2V0IHRoZSBmdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgcGx1cmFsIGV4cHJlc3Npb24uICAqLworI2luY2x1ZGUgImV2YWwtcGx1cmFsLmgiCisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorICAgQ0FURUdPUlkgbG9jYWxlIGFuZCwgaWYgUExVUkFMIGlzIG5vbnplcm8sIHNlYXJjaCBvdmVyIHN0cmluZworICAgZGVwZW5kaW5nIG9uIHRoZSBwbHVyYWwgZm9ybSBkZXRlcm1pbmVkIGJ5IE4uICAqLworY2hhciAqCitEQ0lHRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwKKwkgICAgaW50IHBsdXJhbCwgdW5zaWduZWQgbG9uZyBpbnQgbiwgaW50IGNhdGVnb3J5KQoreworI2lmbmRlZiBIQVZFX0FMTE9DQQorICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7CisjZW5kaWYKKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluOworICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKKyAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOworICBjb25zdCBjaGFyICpjYXRlZ29yeXZhbHVlOworICBjaGFyICpkaXJuYW1lLCAqeGRvbWFpbm5hbWU7CisgIGNoYXIgKnNpbmdsZV9sb2NhbGU7CisgIGNoYXIgKnJldHZhbDsKKyAgc2l6ZV90IHJldGxlbjsKKyAgaW50IHNhdmVkX2Vycm5vOworI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKKyAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnNlYXJjaDsKKyAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKipmb3VuZHAgPSBOVUxMOworICBzaXplX3QgbXNnaWRfbGVuOworI2VuZGlmCisgIHNpemVfdCBkb21haW5uYW1lX2xlbjsKKworICAvKiBJZiBubyByZWFsIE1TR0lEIGlzIGdpdmVuIHJldHVybiBOVUxMLiAgKi8KKyAgaWYgKG1zZ2lkMSA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgX0xJQkMKKyAgaWYgKGNhdGVnb3J5IDwgMCB8fCBjYXRlZ29yeSA+PSBfX0xDX0xBU1QgfHwgY2F0ZWdvcnkgPT0gTENfQUxMKQorICAgIC8qIEJvZ3VzLiAgKi8KKyAgICByZXR1cm4gKHBsdXJhbCA9PSAwCisJICAgID8gKGNoYXIgKikgbXNnaWQxCisJICAgIC8qIFVzZSB0aGUgR2VybWFuaWMgcGx1cmFsIHJ1bGUuICAqLworCSAgICA6IG4gPT0gMSA/IChjaGFyICopIG1zZ2lkMSA6IChjaGFyICopIG1zZ2lkMik7CisjZW5kaWYKKworICBfX2xpYmNfcndsb2NrX3JkbG9jayAoX25sX3N0YXRlX2xvY2spOworCisgIC8qIElmIERPTUFJTk5BTUUgaXMgTlVMTCwgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgZG9tYWluLiAgSWYKKyAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCisgICAgIGRlZmluaXRpb24gbGVmdCB0aGlzIHVuZGVmaW5lZC4gICovCisgIGlmIChkb21haW5uYW1lID09IE5VTEwpCisgICAgZG9tYWlubmFtZSA9IF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworCisgIC8qIE9TLzIgc3BlY2lmaWM6IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBsaWJpbnRsIHZlcnNpb25zICAqLworI2lmZGVmIExDX01FU1NBR0VTX0NPTVBBVAorICBpZiAoY2F0ZWdvcnkgPT0gTENfTUVTU0FHRVNfQ09NUEFUKQorICAgIGNhdGVnb3J5ID0gTENfTUVTU0FHRVM7CisjZW5kaWYKKworI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKKyAgbXNnaWRfbGVuID0gc3RybGVuIChtc2dpZDEpICsgMTsKKworICAvKiBUcnkgdG8gZmluZCB0aGUgdHJhbnNsYXRpb24gYW1vbmcgdGhvc2Ugd2hpY2ggd2UgZm91bmQgYXQKKyAgICAgc29tZSB0aW1lLiAgKi8KKyAgc2VhcmNoID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopCisJICAgYWxsb2NhIChvZmZzZXRvZiAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QsIG1zZ2lkKSArIG1zZ2lkX2xlbik7CisgIG1lbWNweSAoc2VhcmNoLT5tc2dpZCwgbXNnaWQxLCBtc2dpZF9sZW4pOworICBzZWFyY2gtPmRvbWFpbm5hbWUgPSAoY2hhciAqKSBkb21haW5uYW1lOworICBzZWFyY2gtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7CisKKyAgZm91bmRwID0gKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICoqKSB0ZmluZCAoc2VhcmNoLCAmcm9vdCwgdHJhbnNjbXApOworICBmcmVlYSAoc2VhcmNoKTsKKyAgaWYgKGZvdW5kcCAhPSBOVUxMICYmICgqZm91bmRwKS0+Y291bnRlciA9PSBfbmxfbXNnX2NhdF9jbnRyKQorICAgIHsKKyAgICAgIC8qIE5vdyBkZWFsIHdpdGggcGx1cmFsLiAgKi8KKyAgICAgIGlmIChwbHVyYWwpCisJcmV0dmFsID0gcGx1cmFsX2xvb2t1cCAoKCpmb3VuZHApLT5kb21haW4sIG4sICgqZm91bmRwKS0+dHJhbnNsYXRpb24sCisJCQkJKCpmb3VuZHApLT50cmFuc2xhdGlvbl9sZW5ndGgpOworICAgICAgZWxzZQorCXJldHZhbCA9IChjaGFyICopICgqZm91bmRwKS0+dHJhbnNsYXRpb247CisKKyAgICAgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7CisgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KKyNlbmRpZgorCisgIC8qIFByZXNlcnZlIHRoZSBgZXJybm8nIHZhbHVlLiAgKi8KKyAgc2F2ZWRfZXJybm8gPSBlcnJubzsKKworICAvKiBTZWUgd2hldGhlciB0aGlzIGlzIGEgU1VJRCBiaW5hcnkgb3Igbm90LiAgKi8KKyAgREVURVJNSU5FX1NFQ1VSRTsKKworICAvKiBGaXJzdCBmaW5kIG1hdGNoaW5nIGJpbmRpbmcuICAqLworICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQorICAgIHsKKyAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKKyAgICAgIGlmIChjb21wYXJlID09IDApCisJLyogV2UgZm91bmQgaXQhICAqLworCWJyZWFrOworICAgICAgaWYgKGNvbXBhcmUgPCAwKQorCXsKKwkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCisJICBiaW5kaW5nID0gTlVMTDsKKwkgIGJyZWFrOworCX0KKyAgICB9CisKKyAgaWYgKGJpbmRpbmcgPT0gTlVMTCkKKyAgICBkaXJuYW1lID0gKGNoYXIgKikgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOworICBlbHNlIGlmIChJU19BQlNPTFVURV9QQVRIIChiaW5kaW5nLT5kaXJuYW1lKSkKKyAgICBkaXJuYW1lID0gYmluZGluZy0+ZGlybmFtZTsKKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIFdlIGhhdmUgYSByZWxhdGl2ZSBwYXRoLiAgTWFrZSBpdCBhYnNvbHV0ZSBub3cuICAqLworICAgICAgc2l6ZV90IGRpcm5hbWVfbGVuID0gc3RybGVuIChiaW5kaW5nLT5kaXJuYW1lKSArIDE7CisgICAgICBzaXplX3QgcGF0aF9tYXg7CisgICAgICBjaGFyICpyZXQ7CisKKyAgICAgIHBhdGhfbWF4ID0gKHVuc2lnbmVkIGludCkgUEFUSF9NQVg7CisgICAgICBwYXRoX21heCArPSAyOwkJLyogVGhlIGdldGN3ZCBkb2NzIHNheSB0byBkbyB0aGlzLiAgKi8KKworICAgICAgZm9yICg7OykKKwl7CisJICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKKwkgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZGlybmFtZSk7CisKKwkgIF9fc2V0X2Vycm5vICgwKTsKKwkgIHJldCA9IGdldGN3ZCAoZGlybmFtZSwgcGF0aF9tYXgpOworCSAgaWYgKHJldCAhPSBOVUxMIHx8IGVycm5vICE9IEVSQU5HRSkKKwkgICAgYnJlYWs7CisKKwkgIHBhdGhfbWF4ICs9IHBhdGhfbWF4IC8gMjsKKwkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKKwl9CisKKyAgICAgIGlmIChyZXQgPT0gTlVMTCkKKwkvKiBXZSBjYW5ub3QgZ2V0IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiAgRG9uJ3Qgc2lnbmFsIGFuCisJICAgZXJyb3IgYnV0IHNpbXBseSByZXR1cm4gdGhlIGRlZmF1bHQgc3RyaW5nLiAgKi8KKwlnb3RvIHJldHVybl91bnRyYW5zbGF0ZWQ7CisKKyAgICAgIHN0cGNweSAoc3RwY3B5IChzdHJjaHIgKGRpcm5hbWUsICdcMCcpLCAiLyIpLCBiaW5kaW5nLT5kaXJuYW1lKTsKKyAgICB9CisKKyAgLyogTm93IGRldGVybWluZSB0aGUgc3ltYm9saWMgbmFtZSBvZiBDQVRFR09SWSBhbmQgaXRzIHZhbHVlLiAgKi8KKyAgY2F0ZWdvcnluYW1lID0gY2F0ZWdvcnlfdG9fbmFtZSAoY2F0ZWdvcnkpOworICBjYXRlZ29yeXZhbHVlID0gZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOworCisgIGRvbWFpbm5hbWVfbGVuID0gc3RybGVuIChkb21haW5uYW1lKTsKKyAgeGRvbWFpbm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnluYW1lKQorCQkJCSArIGRvbWFpbm5hbWVfbGVuICsgNSk7CisgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOworCisgIHN0cGNweSAobWVtcGNweSAoc3RwY3B5IChzdHBjcHkgKHhkb21haW5uYW1lLCBjYXRlZ29yeW5hbWUpLCAiLyIpLAorCQkgIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuKSwKKwkgICIubW8iKTsKKworICAvKiBDcmVhdGluZyB3b3JraW5nIGFyZWEuICAqLworICBzaW5nbGVfbG9jYWxlID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5dmFsdWUpICsgMSk7CisgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgc2luZ2xlX2xvY2FsZSk7CisKKworICAvKiBTZWFyY2ggZm9yIHRoZSBnaXZlbiBzdHJpbmcuICBUaGlzIGlzIGEgbG9vcCBiZWNhdXNlIHdlIHBlcmhhcHMKKyAgICAgZ290IGFuIG9yZGVyZWQgbGlzdCBvZiBsYW5ndWFnZXMgdG8gY29uc2lkZXIgZm9yIHRoZSB0cmFuc2xhdGlvbi4gICovCisgIHdoaWxlICgxKQorICAgIHsKKyAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KKyAgICAgIHdoaWxlIChjYXRlZ29yeXZhbHVlWzBdICE9ICdcMCcgJiYgY2F0ZWdvcnl2YWx1ZVswXSA9PSAnOicpCisJKytjYXRlZ29yeXZhbHVlOworICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKKwl7CisJICAvKiBUaGUgd2hvbGUgY29udGVudHMgb2YgQ0FURUdPUllWQUxVRSBoYXMgYmVlbiBzZWFyY2hlZCBidXQKKwkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KKwkgICAgIGJ5IGltcGxpY2l0bHkgYXBwZW5kaW5nIGEgIkMiIGVudHJ5LCBpLmUuIG5vIHRyYW5zbGF0aW9uCisJICAgICB3aWxsIHRha2UgcGxhY2UuICAqLworCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKKwkgIHNpbmdsZV9sb2NhbGVbMV0gPSAnXDAnOworCX0KKyAgICAgIGVsc2UKKwl7CisJICBjaGFyICpjcCA9IHNpbmdsZV9sb2NhbGU7CisJICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQorCSAgICAqY3ArKyA9ICpjYXRlZ29yeXZhbHVlKys7CisJICAqY3AgPSAnXDAnOworCisJICAvKiBXaGVuIHRoaXMgaXMgYSBTVUlEIGJpbmFyeSB3ZSBtdXN0IG5vdCBhbGxvdyBhY2Nlc3NpbmcgZmlsZXMKKwkgICAgIG91dHNpZGUgdGhlIGRlZGljYXRlZCBkaXJlY3Rvcmllcy4gICovCisJICBpZiAoRU5BQkxFX1NFQ1VSRSAmJiBJU19QQVRIX1dJVEhfRElSIChzaW5nbGVfbG9jYWxlKSkKKwkgICAgLyogSW5nb3JlIHRoaXMgZW50cnkuICAqLworCSAgICBjb250aW51ZTsKKwl9CisKKyAgICAgIC8qIElmIHRoZSBjdXJyZW50IGxvY2FsZSB2YWx1ZSBpcyBDIChvciBQT1NJWCkgd2UgZG9uJ3QgbG9hZCBhCisJIGRvbWFpbi4gIFJldHVybiB0aGUgTVNHSUQuICAqLworICAgICAgaWYgKHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIkMiKSA9PSAwCisJICB8fCBzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJQT1NJWCIpID09IDApCisJYnJlYWs7CisKKyAgICAgIC8qIEZpbmQgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBtYXRjaGluZyB0aGUKKwkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLworICAgICAgZG9tYWluID0gX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBzaW5nbGVfbG9jYWxlLCB4ZG9tYWlubmFtZSwgYmluZGluZyk7CisKKyAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKKwl7CisJICByZXR2YWwgPSBfbmxfZmluZF9tc2cgKGRvbWFpbiwgYmluZGluZywgbXNnaWQxLCAmcmV0bGVuKTsKKworCSAgaWYgKHJldHZhbCA9PSBOVUxMKQorCSAgICB7CisJICAgICAgaW50IGNudDsKKworCSAgICAgIGZvciAoY250ID0gMDsgZG9tYWluLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKKwkJeworCQkgIHJldHZhbCA9IF9ubF9maW5kX21zZyAoZG9tYWluLT5zdWNjZXNzb3JbY250XSwgYmluZGluZywKKwkJCQkJIG1zZ2lkMSwgJnJldGxlbik7CisKKwkJICBpZiAocmV0dmFsICE9IE5VTEwpCisJCSAgICB7CisJCSAgICAgIGRvbWFpbiA9IGRvbWFpbi0+c3VjY2Vzc29yW2NudF07CisJCSAgICAgIGJyZWFrOworCQkgICAgfQorCQl9CisJICAgIH0KKworCSAgaWYgKHJldHZhbCAhPSBOVUxMKQorCSAgICB7CisJICAgICAgLyogRm91bmQgdGhlIHRyYW5zbGF0aW9uIG9mIE1TR0lEMSBpbiBkb21haW4gRE9NQUlOOgorCQkgc3RhcnRpbmcgYXQgUkVUVkFMLCBSRVRMRU4gYnl0ZXMuICAqLworCSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCisJICAgICAgaWYgKGZvdW5kcCA9PSBOVUxMKQorCQl7CisJCSAgLyogQ3JlYXRlIGEgbmV3IGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIHNlYXJjaCB0cmVlLiAgKi8KKwkJICBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqbmV3cDsKKworCQkgIG5ld3AgPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikKKwkJICAgIG1hbGxvYyAob2Zmc2V0b2YgKHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90LCBtc2dpZCkKKwkJCSAgICArIG1zZ2lkX2xlbiArIGRvbWFpbm5hbWVfbGVuICsgMSk7CisJCSAgaWYgKG5ld3AgIT0gTlVMTCkKKwkJICAgIHsKKwkJICAgICAgbmV3cC0+ZG9tYWlubmFtZSA9CisJCQltZW1wY3B5IChuZXdwLT5tc2dpZCwgbXNnaWQxLCBtc2dpZF9sZW4pOworCQkgICAgICBtZW1jcHkgKG5ld3AtPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGRvbWFpbm5hbWVfbGVuICsgMSk7CisJCSAgICAgIG5ld3AtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7CisJCSAgICAgIG5ld3AtPmNvdW50ZXIgPSBfbmxfbXNnX2NhdF9jbnRyOworCQkgICAgICBuZXdwLT5kb21haW4gPSBkb21haW47CisJCSAgICAgIG5ld3AtPnRyYW5zbGF0aW9uID0gcmV0dmFsOworCQkgICAgICBuZXdwLT50cmFuc2xhdGlvbl9sZW5ndGggPSByZXRsZW47CisKKwkJICAgICAgLyogSW5zZXJ0IHRoZSBlbnRyeSBpbiB0aGUgc2VhcmNoIHRyZWUuICAqLworCQkgICAgICBmb3VuZHAgPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKiopCisJCQl0c2VhcmNoIChuZXdwLCAmcm9vdCwgdHJhbnNjbXApOworCQkgICAgICBpZiAoZm91bmRwID09IE5VTEwKKwkJCSAgfHwgX19idWlsdGluX2V4cGVjdCAoKmZvdW5kcCAhPSBuZXdwLCAwKSkKKwkJCS8qIFRoZSBpbnNlcnQgZmFpbGVkLiAgKi8KKwkJCWZyZWUgKG5ld3ApOworCQkgICAgfQorCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgLyogV2UgY2FuIHVwZGF0ZSB0aGUgZXhpc3RpbmcgZW50cnkuICAqLworCQkgICgqZm91bmRwKS0+Y291bnRlciA9IF9ubF9tc2dfY2F0X2NudHI7CisJCSAgKCpmb3VuZHApLT5kb21haW4gPSBkb21haW47CisJCSAgKCpmb3VuZHApLT50cmFuc2xhdGlvbiA9IHJldHZhbDsKKwkJICAoKmZvdW5kcCktPnRyYW5zbGF0aW9uX2xlbmd0aCA9IHJldGxlbjsKKwkJfQorI2VuZGlmCisJICAgICAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKKworCSAgICAgIC8qIE5vdyBkZWFsIHdpdGggcGx1cmFsLiAgKi8KKwkgICAgICBpZiAocGx1cmFsKQorCQlyZXR2YWwgPSBwbHVyYWxfbG9va3VwIChkb21haW4sIG4sIHJldHZhbCwgcmV0bGVuKTsKKworCSAgICAgIF9fbGliY19yd2xvY2tfdW5sb2NrIChfbmxfc3RhdGVfbG9jayk7CisJICAgICAgcmV0dXJuIHJldHZhbDsKKwkgICAgfQorCX0KKyAgICB9CisKKyByZXR1cm5fdW50cmFuc2xhdGVkOgorICAvKiBSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCBNU0dJRC4gICovCisgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKKyNpZiAwCQkJCS8qIERvZXNuJ3Qgd29yayB3aXRoIGRpZXQgbGliYyAtLSBUWVQgKi8KKyNpZm5kZWYgX0xJQkMKKyAgaWYgKCFFTkFCTEVfU0VDVVJFKQorICAgIHsKKyAgICAgIGV4dGVybiB2b2lkIF9ubF9sb2dfdW50cmFuc2xhdGVkIChjb25zdCBjaGFyICpsb2dmaWxlbmFtZSwKKwkJCQkJY29uc3QgY2hhciAqZG9tYWlubmFtZSwKKwkJCQkJY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsCisJCQkJCWludCBwbHVyYWwpOworICAgICAgY29uc3QgY2hhciAqbG9nZmlsZW5hbWUgPSBnZXRlbnYgKCJHRVRURVhUX0xPR19VTlRSQU5TTEFURUQiKTsKKworICAgICAgaWYgKGxvZ2ZpbGVuYW1lICE9IE5VTEwgJiYgbG9nZmlsZW5hbWVbMF0gIT0gJ1wwJykKKwlfbmxfbG9nX3VudHJhbnNsYXRlZCAobG9nZmlsZW5hbWUsIGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBwbHVyYWwpOworICAgIH0KKyNlbmRpZgorI2VuZGlmCisgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CisgIHJldHVybiAocGx1cmFsID09IDAKKwkgID8gKGNoYXIgKikgbXNnaWQxCisJICAvKiBVc2UgdGhlIEdlcm1hbmljIHBsdXJhbCBydWxlLiAgKi8KKwkgIDogbiA9PSAxID8gKGNoYXIgKikgbXNnaWQxIDogKGNoYXIgKikgbXNnaWQyKTsKK30KKworCitjaGFyICoKK2ludGVybmFsX2Z1bmN0aW9uCitfbmxfZmluZF9tc2cgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAorCSAgICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKKwkgICAgICBzaXplX3QgKmxlbmd0aHApCit7CisgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47CisgIG5sc191aW50MzIgbnN0cmluZ3M7CisgIHNpemVfdCBhY3Q7CisgIGNoYXIgKnJlc3VsdDsKKyAgc2l6ZV90IHJlc3VsdGxlbjsKKworICBpZiAoZG9tYWluX2ZpbGUtPmRlY2lkZWQgPT0gMCkKKyAgICBfbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlLCBkb21haW5iaW5kaW5nKTsKKworICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKworICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7CisKKyAgbnN0cmluZ3MgPSBkb21haW4tPm5zdHJpbmdzOworCisgIC8qIExvY2F0ZSB0aGUgTVNHSUQgYW5kIGl0cyB0cmFuc2xhdGlvbi4gICovCisgIGlmIChkb21haW4tPmhhc2hfdGFiICE9IE5VTEwpCisgICAgeworICAgICAgLyogVXNlIHRoZSBoYXNoaW5nIHRhYmxlLiAgKi8KKyAgICAgIG5sc191aW50MzIgbGVuID0gc3RybGVuIChtc2dpZCk7CisgICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKKyAgICAgIG5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKKyAgICAgIG5sc191aW50MzIgaW5jciA9IDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7CisKKyAgICAgIHdoaWxlICgxKQorCXsKKwkgIG5sc191aW50MzIgbnN0ciA9CisJICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOworCisJICBpZiAobnN0ciA9PSAwKQorCSAgICAvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KKwkgICAgcmV0dXJuIE5VTEw7CisKKwkgIG5zdHItLTsKKworCSAgLyogQ29tcGFyZSBtc2dpZCB3aXRoIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXQgaW5kZXggbnN0ci4KKwkgICAgIFdlIGNvbXBhcmUgdGhlIGxlbmd0aHMgd2l0aCA+PSwgbm90ID09LCBiZWNhdXNlIHBsdXJhbCBlbnRyaWVzCisJICAgICBhcmUgcmVwcmVzZW50ZWQgYnkgc3RyaW5ncyB3aXRoIGFuIGVtYmVkZGVkIE5VTC4gICovCisJICBpZiAobnN0ciA8IG5zdHJpbmdzCisJICAgICAgPyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyXS5sZW5ndGgpID49IGxlbgorCQkmJiAoc3RyY21wIChtc2dpZCwKKwkJCSAgICBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKwkJCQkJICAgICAgZG9tYWluLT5vcmlnX3RhYltuc3RyXS5vZmZzZXQpKQorCQkgICAgPT0gMCkKKwkgICAgICA6IGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiW25zdHIgLSBuc3RyaW5nc10ubGVuZ3RoID4gbGVuCisJCSYmIChzdHJjbXAgKG1zZ2lkLAorCQkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiW25zdHIgLSBuc3RyaW5nc10ucG9pbnRlcikKKwkJICAgID09IDApKQorCSAgICB7CisJICAgICAgYWN0ID0gbnN0cjsKKwkgICAgICBnb3RvIGZvdW5kOworCSAgICB9CisKKwkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQorCSAgICBpZHggLT0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyOworCSAgZWxzZQorCSAgICBpZHggKz0gaW5jcjsKKwl9CisgICAgICAvKiBOT1RSRUFDSEVEICovCisgICAgfQorICBlbHNlCisgICAgeworICAgICAgLyogVHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZCBhcnJheSBvZgorCSBtZXNzYWdlcy4gICovCisgICAgICBzaXplX3QgdG9wLCBib3R0b207CisKKyAgICAgIGJvdHRvbSA9IDA7CisgICAgICB0b3AgPSBuc3RyaW5nczsKKyAgICAgIHdoaWxlIChib3R0b20gPCB0b3ApCisJeworCSAgaW50IGNtcF92YWw7CisKKwkgIGFjdCA9IChib3R0b20gKyB0b3ApIC8gMjsKKwkgIGNtcF92YWwgPSBzdHJjbXAgKG1zZ2lkLCAoZG9tYWluLT5kYXRhCisJCQkJICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCisJCQkJCSBkb21haW4tPm9yaWdfdGFiW2FjdF0ub2Zmc2V0KSkpOworCSAgaWYgKGNtcF92YWwgPCAwKQorCSAgICB0b3AgPSBhY3Q7CisJICBlbHNlIGlmIChjbXBfdmFsID4gMCkKKwkgICAgYm90dG9tID0gYWN0ICsgMTsKKwkgIGVsc2UKKwkgICAgZ290byBmb3VuZDsKKwl9CisgICAgICAvKiBObyB0cmFuc2xhdGlvbiB3YXMgZm91bmQuICAqLworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgZm91bmQ6CisgIC8qIFRoZSB0cmFuc2xhdGlvbiB3YXMgZm91bmQgYXQgaW5kZXggQUNULiAgSWYgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZQorICAgICBzdHJpbmcgdG8gdXNlIGEgZGlmZmVyZW50IGNoYXJhY3RlciBzZXQsIHRoaXMgaXMgdGhlIHRpbWUuICAqLworICBpZiAoYWN0IDwgbnN0cmluZ3MpCisgICAgeworICAgICAgcmVzdWx0ID0gKGNoYXIgKikKKwkoZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW2FjdF0ub2Zmc2V0KSk7CisgICAgICByZXN1bHRsZW4gPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbYWN0XS5sZW5ndGgpICsgMTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICByZXN1bHQgPSAoY2hhciAqKSBkb21haW4tPnRyYW5zX3N5c2RlcF90YWJbYWN0IC0gbnN0cmluZ3NdLnBvaW50ZXI7CisgICAgICByZXN1bHRsZW4gPSBkb21haW4tPnRyYW5zX3N5c2RlcF90YWJbYWN0IC0gbnN0cmluZ3NdLmxlbmd0aDsKKyAgICB9CisKKyNpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfSUNPTlYKKyAgaWYgKGRvbWFpbi0+Y29kZXNldF9jbnRyCisgICAgICAhPSAoZG9tYWluYmluZGluZyAhPSBOVUxMID8gZG9tYWluYmluZGluZy0+Y29kZXNldF9jbnRyIDogMCkpCisgICAgeworICAgICAgLyogVGhlIGRvbWFpbidzIGNvZGVzZXQgaGFzIGNoYW5nZWQgdGhyb3VnaCBiaW5kX3RleHRkb21haW5fY29kZXNldCgpCisJIHNpbmNlIHRoZSBtZXNzYWdlIGNhdGFsb2cgd2FzIGluaXRpYWxpemVkIG9yIGxhc3QgYWNjZXNzZWQuICBXZQorCSBoYXZlIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY29udmVydGVyLiAgKi8KKyAgICAgIF9ubF9mcmVlX2RvbWFpbl9jb252IChkb21haW4pOworICAgICAgX25sX2luaXRfZG9tYWluX2NvbnYgKGRvbWFpbl9maWxlLCBkb21haW4sIGRvbWFpbmJpbmRpbmcpOworICAgIH0KKworICBpZiAoCisjIGlmZGVmIF9MSUJDCisgICAgICBkb21haW4tPmNvbnYgIT0gKF9fZ2NvbnZfdCkgLTEKKyMgZWxzZQorIyAgaWYgSEFWRV9JQ09OVgorICAgICAgZG9tYWluLT5jb252ICE9IChpY29udl90KSAtMQorIyAgZW5kaWYKKyMgZW5kaWYKKyAgICAgICkKKyAgICB7CisgICAgICAvKiBXZSBhcmUgc3VwcG9zZWQgdG8gZG8gYSBjb252ZXJzaW9uLiAgRmlyc3QgYWxsb2NhdGUgYW4KKwkgYXBwcm9wcmlhdGUgdGFibGUgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgdGhlIHRhYmxlCisJIG9mIHRyYW5zbGF0aW9ucyBpbiB0aGUgZmlsZSwgd2hlcmUgd2UgY2FuIHB1dCB0aGUgcG9pbnRlcnMKKwkgdG8gdGhlIGNvbnZlcnRlZCBzdHJpbmdzIGluLgorCSBUaGVyZSBpcyBhIHNsaWdodCBjb21wbGljYXRpb24gd2l0aCBwbHVyYWwgZW50cmllcy4gIFRoZXkKKwkgYXJlIHJlcHJlc2VudGVkIGJ5IGNvbnNlY3V0aXZlIE5VTCB0ZXJtaW5hdGVkIHN0cmluZ3MuICBXZQorCSBoYW5kbGUgdGhpcyBjYXNlIGJ5IGNvbnZlcnRpbmcgUkVTVUxUTEVOIGJ5dGVzLCBpbmNsdWRpbmcKKwkgTlVMcy4gICovCisKKyAgICAgIGlmIChkb21haW4tPmNvbnZfdGFiID09IE5VTEwKKwkgICYmICgoZG9tYWluLT5jb252X3RhYiA9CisJCSAoY2hhciAqKikgY2FsbG9jIChuc3RyaW5ncyArIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncywKKwkJCQkgICBzaXplb2YgKGNoYXIgKikpKQorCSAgICAgID09IE5VTEwpKQorCS8qIE1hcmsgdGhhdCB3ZSBkaWRuJ3Qgc3VjY2VlZCBhbGxvY2F0aW5nIGEgdGFibGUuICAqLworCWRvbWFpbi0+Y29udl90YWIgPSAoY2hhciAqKikgLTE7CisKKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChkb21haW4tPmNvbnZfdGFiID09IChjaGFyICoqKSAtMSwgMCkpCisJLyogTm90aGluZyB3ZSBjYW4gZG8sIG5vIG1vcmUgbWVtb3J5LiAgKi8KKwlnb3RvIGNvbnZlcnRlZDsKKworICAgICAgaWYgKGRvbWFpbi0+Y29udl90YWJbYWN0XSA9PSBOVUxMKQorCXsKKwkgIC8qIFdlIGhhdmVuJ3QgdXNlZCB0aGlzIHN0cmluZyBzbyBmYXIsIHNvIGl0IGlzIG5vdAorCSAgICAgdHJhbnNsYXRlZCB5ZXQuICBEbyB0aGlzIG5vdy4gICovCisJICAvKiBXZSB1c2UgYSBiaXQgbW9yZSBlZmZpY2llbnQgbWVtb3J5IGhhbmRsaW5nLgorCSAgICAgV2UgYWxsb2NhdGUgYWx3YXlzIGxhcmdlciBibG9ja3Mgd2hpY2ggZ2V0IHVzZWQgb3ZlcgorCSAgICAgdGltZS4gIFRoaXMgaXMgZmFzdGVyIHRoYW4gbWFueSBzbWFsbCBhbGxvY2F0aW9ucy4gICAqLworCSAgX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spCisjIGRlZmluZSBJTklUSUFMX0JMT0NLX1NJWkUJNDA4MAorCSAgc3RhdGljIHVuc2lnbmVkIGNoYXIgKmZyZWVtZW07CisJICBzdGF0aWMgc2l6ZV90IGZyZWVtZW1fc2l6ZTsKKworCSAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5idWY7CisJICB1bnNpZ25lZCBjaGFyICpvdXRidWY7CisJICBpbnQgbWFsbG9jX2NvdW50OworIyBpZm5kZWYgX0xJQkMKKwkgIHRyYW5zbWVtX2Jsb2NrX3QgKnRyYW5zbWVtX2xpc3QgPSBOVUxMOworIyBlbmRpZgorCisJICBfX2xpYmNfbG9ja19sb2NrIChsb2NrKTsKKworCSAgaW5idWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSByZXN1bHQ7CisJICBvdXRidWYgPSBmcmVlbWVtICsgc2l6ZW9mIChzaXplX3QpOworCisJICBtYWxsb2NfY291bnQgPSAwOworCSAgd2hpbGUgKDEpCisJICAgIHsKKwkgICAgICB0cmFuc21lbV9ibG9ja190ICpuZXdtZW07CisjIGlmZGVmIF9MSUJDCisJICAgICAgc2l6ZV90IG5vbl9yZXZlcnNpYmxlOworCSAgICAgIGludCByZXM7CisKKwkgICAgICBpZiAoZnJlZW1lbV9zaXplIDwgc2l6ZW9mIChzaXplX3QpKQorCQlnb3RvIHJlc2l6ZV9mcmVlbWVtOworCisJICAgICAgcmVzID0gX19nY29udiAoZG9tYWluLT5jb252LAorCQkJICAgICAmaW5idWYsIGluYnVmICsgcmVzdWx0bGVuLAorCQkJICAgICAmb3V0YnVmLAorCQkJICAgICBvdXRidWYgKyBmcmVlbWVtX3NpemUgLSBzaXplb2YgKHNpemVfdCksCisJCQkgICAgICZub25fcmV2ZXJzaWJsZSk7CisKKwkgICAgICBpZiAocmVzID09IF9fR0NPTlZfT0sgfHwgcmVzID09IF9fR0NPTlZfRU1QVFlfSU5QVVQpCisJCWJyZWFrOworCisJICAgICAgaWYgKHJlcyAhPSBfX0dDT05WX0ZVTExfT1VUUFVUKQorCQl7CisJCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKKwkJICBnb3RvIGNvbnZlcnRlZDsKKwkJfQorCisJICAgICAgaW5idWYgPSByZXN1bHQ7CisjIGVsc2UKKyMgIGlmIEhBVkVfSUNPTlYKKwkgICAgICBjb25zdCBjaGFyICppbnB0ciA9IChjb25zdCBjaGFyICopIGluYnVmOworCSAgICAgIHNpemVfdCBpbmxlZnQgPSByZXN1bHRsZW47CisJICAgICAgY2hhciAqb3V0cHRyID0gKGNoYXIgKikgb3V0YnVmOworCSAgICAgIHNpemVfdCBvdXRsZWZ0OworCisJICAgICAgaWYgKGZyZWVtZW1fc2l6ZSA8IHNpemVvZiAoc2l6ZV90KSkKKwkJZ290byByZXNpemVfZnJlZW1lbTsKKworCSAgICAgIG91dGxlZnQgPSBmcmVlbWVtX3NpemUgLSBzaXplb2YgKHNpemVfdCk7CisJICAgICAgaWYgKGljb252IChkb21haW4tPmNvbnYsCisJCQkgKElDT05WX0NPTlNUIGNoYXIgKiopICZpbnB0ciwgJmlubGVmdCwKKwkJCSAmb3V0cHRyLCAmb3V0bGVmdCkKKwkJICAhPSAoc2l6ZV90KSAoLTEpKQorCQl7CisJCSAgb3V0YnVmID0gKHVuc2lnbmVkIGNoYXIgKikgb3V0cHRyOworCQkgIGJyZWFrOworCQl9CisJICAgICAgaWYgKGVycm5vICE9IEUyQklHKQorCQl7CisJCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKKwkJICBnb3RvIGNvbnZlcnRlZDsKKwkJfQorIyAgZW5kaWYKKyMgZW5kaWYKKworCSAgICByZXNpemVfZnJlZW1lbToKKwkgICAgICAvKiBXZSBtdXN0IGFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBvciByZXNpemUgdGhlIG9sZCBvbmUuICAqLworCSAgICAgIGlmIChtYWxsb2NfY291bnQgPiAwKQorCQl7CisJCSAgKyttYWxsb2NfY291bnQ7CisJCSAgZnJlZW1lbV9zaXplID0gbWFsbG9jX2NvdW50ICogSU5JVElBTF9CTE9DS19TSVpFOworCQkgIG5ld21lbSA9ICh0cmFuc21lbV9ibG9ja190ICopIHJlYWxsb2MgKHRyYW5zbWVtX2xpc3QsCisJCQkJCQkJIGZyZWVtZW1fc2l6ZSk7CisjIGlmZGVmIF9MSUJDCisJCSAgaWYgKG5ld21lbSAhPSBOVUxMKQorCQkgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7CisJCSAgZWxzZQorCQkgICAgeworCQkgICAgICBzdHJ1Y3QgdHJhbnNtZW1fbGlzdCAqb2xkID0gdHJhbnNtZW1fbGlzdDsKKworCQkgICAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKKwkJICAgICAgZnJlZSAob2xkKTsKKwkJICAgIH0KKyMgZW5kaWYKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIG1hbGxvY19jb3VudCA9IDE7CisJCSAgZnJlZW1lbV9zaXplID0gSU5JVElBTF9CTE9DS19TSVpFOworCQkgIG5ld21lbSA9ICh0cmFuc21lbV9ibG9ja190ICopIG1hbGxvYyAoZnJlZW1lbV9zaXplKTsKKwkJfQorCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChuZXdtZW0gPT0gTlVMTCwgMCkpCisJCXsKKwkJICBmcmVlbWVtID0gTlVMTDsKKwkJICBmcmVlbWVtX3NpemUgPSAwOworCQkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7CisJCSAgZ290byBjb252ZXJ0ZWQ7CisJCX0KKworIyBpZmRlZiBfTElCQworCSAgICAgIC8qIEFkZCB0aGUgYmxvY2sgdG8gdGhlIGxpc3Qgb2YgYmxvY2tzIHdlIGhhdmUgdG8gZnJlZQorICAgICAgICAgICAgICAgICBhdCBzb21lIHBvaW50LiAgKi8KKwkgICAgICBuZXdtZW0tPm5leHQgPSB0cmFuc21lbV9saXN0OworCSAgICAgIHRyYW5zbWVtX2xpc3QgPSBuZXdtZW07CisKKwkgICAgICBmcmVlbWVtID0gbmV3bWVtLT5kYXRhOworCSAgICAgIGZyZWVtZW1fc2l6ZSAtPSBvZmZzZXRvZiAoc3RydWN0IHRyYW5zbWVtX2xpc3QsIGRhdGEpOworIyBlbHNlCisJICAgICAgdHJhbnNtZW1fbGlzdCA9IG5ld21lbTsKKwkgICAgICBmcmVlbWVtID0gbmV3bWVtOworIyBlbmRpZgorCisJICAgICAgb3V0YnVmID0gZnJlZW1lbSArIHNpemVvZiAoc2l6ZV90KTsKKwkgICAgfQorCisJICAvKiBXZSBoYXZlIG5vdyBpbiBvdXIgYnVmZmVyIGEgY29udmVydGVkIHN0cmluZy4gIFB1dCB0aGlzCisJICAgICBpbnRvIHRoZSB0YWJsZSBvZiBjb252ZXJzaW9ucy4gICovCisJICAqKHNpemVfdCAqKSBmcmVlbWVtID0gb3V0YnVmIC0gZnJlZW1lbSAtIHNpemVvZiAoc2l6ZV90KTsKKwkgIGRvbWFpbi0+Y29udl90YWJbYWN0XSA9IChjaGFyICopIGZyZWVtZW07CisJICAvKiBTaHJpbmsgZnJlZW1lbSwgYnV0IGtlZXAgaXQgYWxpZ25lZC4gICovCisJICBmcmVlbWVtX3NpemUgLT0gb3V0YnVmIC0gZnJlZW1lbTsKKwkgIGZyZWVtZW0gPSBvdXRidWY7CisJICBmcmVlbWVtICs9IGZyZWVtZW1fc2l6ZSAmIChhbGlnbm9mIChzaXplX3QpIC0gMSk7CisJICBmcmVlbWVtX3NpemUgPSBmcmVlbWVtX3NpemUgJiB+IChhbGlnbm9mIChzaXplX3QpIC0gMSk7CisKKwkgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7CisJfQorCisgICAgICAvKiBOb3cgZG9tYWluLT5jb252X3RhYlthY3RdIGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBvZiBhbGwKKwkgdGhlIHBsdXJhbCB2YXJpYW50cy4gICovCisgICAgICByZXN1bHQgPSBkb21haW4tPmNvbnZfdGFiW2FjdF0gKyBzaXplb2YgKHNpemVfdCk7CisgICAgICByZXN1bHRsZW4gPSAqKHNpemVfdCAqKSBkb21haW4tPmNvbnZfdGFiW2FjdF07CisgICAgfQorCisgY29udmVydGVkOgorICAvKiBUaGUgcmVzdWx0IHN0cmluZyBpcyBjb252ZXJ0ZWQuICAqLworCisjZW5kaWYgLyogX0xJQkMgfHwgSEFWRV9JQ09OViAqLworCisgICpsZW5ndGhwID0gcmVzdWx0bGVuOworICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIExvb2sgdXAgYSBwbHVyYWwgdmFyaWFudC4gICovCitzdGF0aWMgY2hhciAqCitpbnRlcm5hbF9mdW5jdGlvbgorcGx1cmFsX2xvb2t1cCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGludCBuLAorCSAgICAgICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbiwgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbikKK3sKKyAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbmRhdGEgPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluLT5kYXRhOworICB1bnNpZ25lZCBsb25nIGludCBpbmRleDsKKyAgY29uc3QgY2hhciAqcDsKKworICBpbmRleCA9IHBsdXJhbF9ldmFsIChkb21haW5kYXRhLT5wbHVyYWwsIG4pOworICBpZiAoaW5kZXggPj0gZG9tYWluZGF0YS0+bnBsdXJhbHMpCisgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgSXQgbWVhbnMgdGhlIHBsdXJhbCBleHByZXNzaW9uIGFuZCB0aGUKKyAgICAgICBnaXZlbiBtYXhpbXVtIHZhbHVlIGRvIG5vdCBtYXRjaC4gICovCisgICAgaW5kZXggPSAwOworCisgIC8qIFNraXAgSU5ERVggc3RyaW5ncyBhdCBUUkFOU0xBVElPTi4gICovCisgIHAgPSB0cmFuc2xhdGlvbjsKKyAgd2hpbGUgKGluZGV4LS0gPiAwKQorICAgIHsKKyNpZmRlZiBfTElCQworICAgICAgcCA9IF9fcmF3bWVtY2hyIChwLCAnXDAnKTsKKyNlbHNlCisgICAgICBwID0gc3RyY2hyIChwLCAnXDAnKTsKKyNlbmRpZgorICAgICAgLyogQW5kIHNraXAgb3ZlciB0aGUgTlVMIGJ5dGUuICAqLworICAgICAgcCsrOworCisgICAgICBpZiAocCA+PSB0cmFuc2xhdGlvbiArIHRyYW5zbGF0aW9uX2xlbikKKwkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICBJdCBtZWFucyB0aGUgcGx1cmFsIGV4cHJlc3Npb24KKwkgICBldmFsdWF0ZWQgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHZhcmlhbnRzCisJICAgYXZhaWxhYmxlIGZvciBNU0dJRDEuICAqLworCXJldHVybiAoY2hhciAqKSB0cmFuc2xhdGlvbjsKKyAgICB9CisgIHJldHVybiAoY2hhciAqKSBwOworfQorCisjaWZuZGVmIF9MSUJDCisvKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxvY2FsZSBDQVRFR09SWS4gICovCitzdGF0aWMgY29uc3QgY2hhciAqCitpbnRlcm5hbF9mdW5jdGlvbgorY2F0ZWdvcnlfdG9fbmFtZSAoaW50IGNhdGVnb3J5KQoreworICBjb25zdCBjaGFyICpyZXR2YWw7CisKKyAgc3dpdGNoIChjYXRlZ29yeSkKKyAgeworI2lmZGVmIExDX0NPTExBVEUKKyAgY2FzZSBMQ19DT0xMQVRFOgorICAgIHJldHZhbCA9ICJMQ19DT0xMQVRFIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX0NUWVBFCisgIGNhc2UgTENfQ1RZUEU6CisgICAgcmV0dmFsID0gIkxDX0NUWVBFIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX01PTkVUQVJZCisgIGNhc2UgTENfTU9ORVRBUlk6CisgICAgcmV0dmFsID0gIkxDX01PTkVUQVJZIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX05VTUVSSUMKKyAgY2FzZSBMQ19OVU1FUklDOgorICAgIHJldHZhbCA9ICJMQ19OVU1FUklDIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX1RJTUUKKyAgY2FzZSBMQ19USU1FOgorICAgIHJldHZhbCA9ICJMQ19USU1FIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX01FU1NBR0VTCisgIGNhc2UgTENfTUVTU0FHRVM6CisgICAgcmV0dmFsID0gIkxDX01FU1NBR0VTIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX1JFU1BPTlNFCisgIGNhc2UgTENfUkVTUE9OU0U6CisgICAgcmV0dmFsID0gIkxDX1JFU1BPTlNFIjsKKyAgICBicmVhazsKKyNlbmRpZgorI2lmZGVmIExDX0FMTAorICBjYXNlIExDX0FMTDoKKyAgICAvKiBUaGlzIG1pZ2h0IG5vdCBtYWtlIHNlbnNlIGJ1dCBpcyBwZXJoYXBzIGJldHRlciB0aGFuIGFueSBvdGhlcgorICAgICAgIHZhbHVlLiAgKi8KKyAgICByZXR2YWwgPSAiTENfQUxMIjsKKyAgICBicmVhazsKKyNlbmRpZgorICBkZWZhdWx0OgorICAgIC8qIElmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgZGVmYXVsdCB2YWx1ZSBsZXQgbWUga25vdy4gICovCisgICAgcmV0dmFsID0gIkxDX1hYWCI7CisgIH0KKworICByZXR1cm4gcmV0dmFsOworfQorI2VuZGlmCisKKy8qIEd1ZXNzIHZhbHVlIG9mIGN1cnJlbnQgbG9jYWxlIGZyb20gdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCitzdGF0aWMgY29uc3QgY2hhciAqCitpbnRlcm5hbF9mdW5jdGlvbgorZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKQoreworICBjb25zdCBjaGFyICpsYW5ndWFnZTsKKyAgY29uc3QgY2hhciAqcmV0dmFsOworCisgIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50CisgICAgIHZhcmlhYmxlLiAgQnV0IHdlIGRvbid0IHVzZSB0aGUgdmFsdWUgaWYgdGhlIGN1cnJlbnRseSBzZWxlY3RlZAorICAgICBsb2NhbGUgaXMgdGhlIEMgbG9jYWxlLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uICAqLworICBsYW5ndWFnZSA9IGdldGVudiAoIkxBTkdVQUdFIik7CisgIGlmIChsYW5ndWFnZSAhPSBOVUxMICYmIGxhbmd1YWdlWzBdID09ICdcMCcpCisgICAgbGFuZ3VhZ2UgPSBOVUxMOworCisgIC8qIFdlIGhhdmUgdG8gcHJvY2VlZCB3aXRoIHRoZSBQT1NJWCBtZXRob2RzIG9mIGxvb2tpbmcgdG8gYExDX0FMTCcsCisgICAgIGBMQ194eHgnLCBhbmQgYExBTkcnLiAgT24gc29tZSBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlCisgICAgIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCisjaWZkZWYgX0xJQkMKKyAgcmV0dmFsID0gX19jdXJyZW50X2xvY2FsZV9uYW1lIChjYXRlZ29yeSk7CisjZWxzZQorICByZXR2YWwgPSBfbmxfbG9jYWxlX25hbWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOworI2VuZGlmCisKKyAgLyogSWdub3JlIExBTkdVQUdFIGlmIHRoZSBsb2NhbGUgaXMgc2V0IHRvICJDIiBiZWNhdXNlCisgICAgIDEuICJDIiBsb2NhbGUgdXN1YWxseSB1c2VzIHRoZSBBU0NJSSBlbmNvZGluZywgYW5kIG1vc3QgaW50ZXJuYXRpb25hbAorCW1lc3NhZ2VzIHVzZSBub24tQVNDSUkgY2hhcmFjdGVycy4gVGhlc2UgY2hhcmFjdGVycyBnZXQgZGlzcGxheWVkCisJYXMgcXVlc3Rpb24gbWFya3MgKGlmIHVzaW5nIGdsaWJjJ3MgaWNvbnYoKSkgb3IgYXMgaW52YWxpZCA4LWJpdAorCWNoYXJhY3RlcnMgKGJlY2F1c2Ugb3RoZXIgaWNvbnYoKXMgcmVmdXNlIHRvIGNvbnZlcnQgbW9zdCBub24tQVNDSUkKKwljaGFyYWN0ZXJzIHRvIEFTQ0lJKS4gSW4gYW55IGNhc2UsIHRoZSBvdXRwdXQgaXMgdWdseS4KKyAgICAgMi4gVGhlIHByZWNpc2Ugb3V0cHV0IG9mIHNvbWUgcHJvZ3JhbXMgaW4gdGhlICJDIiBsb2NhbGUgaXMgc3BlY2lmaWVkCisJYnkgUE9TSVggYW5kIHNob3VsZCBub3QgZGVwZW5kIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlCisJIkxBTkdVQUdFIi4gIFdlIGFsbG93IHN1Y2ggcHJvZ3JhbXMgdG8gdXNlIGdldHRleHQoKS4gICovCisgIHJldHVybiBsYW5ndWFnZSAhPSBOVUxMICYmIHN0cmNtcCAocmV0dmFsLCAiQyIpICE9IDAgPyBsYW5ndWFnZSA6IHJldHZhbDsKK30KKworLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCisKKy8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCisgICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcworICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKKyAgIHRvIGJlIGRlZmluZWQuICAqLworI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKK3N0YXRpYyBjaGFyICoKK3N0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQoreworICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCisgICAgLyogRG8gbm90aGluZy4gKi8gOworICByZXR1cm4gZGVzdCAtIDE7Cit9CisjZW5kaWYKKworI2lmICFfTElCQyAmJiAhSEFWRV9NRU1QQ1BZCitzdGF0aWMgdm9pZCAqCittZW1wY3B5ICh2b2lkICpkZXN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVfdCBuKQoreworICByZXR1cm4gKHZvaWQgKikgKChjaGFyICopIG1lbWNweSAoZGVzdCwgc3JjLCBuKSArIG4pOworfQorI2VuZGlmCisKKworI2lmZGVmIF9MSUJDCisvKiBJZiB3ZSB3YW50IHRvIGZyZWUgYWxsIHJlc291cmNlcyB3ZSBoYXZlIHRvIGRvIHNvbWUgd29yayBhdAorICAgcHJvZ3JhbSdzIGVuZC4gICovCitsaWJjX2ZyZWVyZXNfZm4gKGZyZWVfbWVtKQoreworICB2b2lkICpvbGQ7CisKKyAgd2hpbGUgKF9ubF9kb21haW5fYmluZGluZ3MgIT0gTlVMTCkKKyAgICB7CisgICAgICBzdHJ1Y3QgYmluZGluZyAqb2xkcCA9IF9ubF9kb21haW5fYmluZGluZ3M7CisgICAgICBfbmxfZG9tYWluX2JpbmRpbmdzID0gX25sX2RvbWFpbl9iaW5kaW5ncy0+bmV4dDsKKyAgICAgIGlmIChvbGRwLT5kaXJuYW1lICE9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkKKwkvKiBZZXMsIHRoaXMgaXMgYSBwb2ludGVyIGNvbXBhcmlzb24uICAqLworCWZyZWUgKG9sZHAtPmRpcm5hbWUpOworICAgICAgZnJlZSAob2xkcC0+Y29kZXNldCk7CisgICAgICBmcmVlIChvbGRwKTsKKyAgICB9CisKKyAgaWYgKF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluICE9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKQorICAgIC8qIFllcywgYWdhaW4gYSBwb2ludGVyIGNvbXBhcmlzb24uICAqLworICAgIGZyZWUgKChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluKTsKKworICAvKiBSZW1vdmUgdGhlIHNlYXJjaCB0cmVlIHdpdGggdGhlIGtub3duIHRyYW5zbGF0aW9ucy4gICovCisgIF9fdGRlc3Ryb3kgKHJvb3QsIGZyZWUpOworICByb290ID0gTlVMTDsKKworICB3aGlsZSAodHJhbnNtZW1fbGlzdCAhPSBOVUxMKQorICAgIHsKKyAgICAgIG9sZCA9IHRyYW5zbWVtX2xpc3Q7CisgICAgICB0cmFuc21lbV9saXN0ID0gdHJhbnNtZW1fbGlzdC0+bmV4dDsKKyAgICAgIGZyZWUgKG9sZCk7CisgICAgfQorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9kY25nZXR0ZXh0LmMgYi9lMmZzcHJvZ3MvaW50bC9kY25nZXR0ZXh0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhhM2UwOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2RjbmdldHRleHQuYwpAQCAtMCwwICsxLDU3IEBACisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlIDxsaWJpbnRsLmg+CisjZWxzZQorIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCisjZW5kaWYKKworLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCisgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCisgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0CisjIGRlZmluZSBEQ0lHRVRURVhUIF9fZGNpZ2V0dGV4dAorI2Vsc2UKKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0CisjIGRlZmluZSBEQ0lHRVRURVhUIGxpYmludGxfZGNpZ2V0dGV4dAorI2VuZGlmCisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQorICAgbG9jYWxlLiAgKi8KK2NoYXIgKgorRENOR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKKwkgICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4sCisJICAgIGludCBjYXRlZ29yeSkKK3sKKyAgcmV0dXJuIERDSUdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCAxLCBuLCBjYXRlZ29yeSk7Cit9CisKKyNpZmRlZiBfTElCQworLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCit3ZWFrX2FsaWFzIChfX2RjbmdldHRleHQsIGRjbmdldHRleHQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9kZ2V0dGV4dC5jIGIvZTJmc3Byb2dzL2ludGwvZGdldHRleHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjRiMGY1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvZGdldHRleHQuYwpAQCAtMCwwICsxLDU4IEBACisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGdldHRleHQoMykgZnVuY3Rpb24uCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisKKyNpbmNsdWRlIDxsb2NhbGUuaD4KKworI2lmZGVmIF9MSUJDCisjIGluY2x1ZGUgPGxpYmludGwuaD4KKyNlbHNlCisjIGluY2x1ZGUgImxpYmdudWludGwuaCIKKyNlbmRpZgorCisvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCisKKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKyNpZmRlZiBfTElCQworIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAorIyBkZWZpbmUgRENHRVRURVhUIElOVFVTRShfX2RjZ2V0dGV4dCkKKyNlbHNlCisjIGRlZmluZSBER0VUVEVYVCBsaWJpbnRsX2RnZXR0ZXh0CisjIGRlZmluZSBEQ0dFVFRFWFQgbGliaW50bF9kY2dldHRleHQKKyNlbmRpZgorCisvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBvZiB0aGUgY3VycmVudAorICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KK2NoYXIgKgorREdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4gRENHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgTENfTUVTU0FHRVMpOworfQorCisjaWZkZWYgX0xJQkMKKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLword2Vha19hbGlhcyAoX19kZ2V0dGV4dCwgZGdldHRleHQpOworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9kbmdldHRleHQuYyBiL2UyZnNwcm9ncy9pbnRsL2RuZ2V0dGV4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTU2MzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9kbmdldHRleHQuYwpAQCAtMCwwICsxLDU5IEBACisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZG5nZXR0ZXh0KDMpIGZ1bmN0aW9uLgorICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTcsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJnZXR0ZXh0UC5oIgorCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlIDxsaWJpbnRsLmg+CisjZWxzZQorIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCisjZW5kaWYKKworLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCisgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCisgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIEROR0VUVEVYVCBfX2RuZ2V0dGV4dAorIyBkZWZpbmUgRENOR0VUVEVYVCBfX2RjbmdldHRleHQKKyNlbHNlCisjIGRlZmluZSBETkdFVFRFWFQgbGliaW50bF9kbmdldHRleHQKKyMgZGVmaW5lIERDTkdFVFRFWFQgbGliaW50bF9kY25nZXR0ZXh0CisjZW5kaWYKKworLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgb2YgdGhlIGN1cnJlbnQKKyAgIExDX01FU1NBR0VTIGxvY2FsZSBhbmQgc2tpcCBtZXNzYWdlIGFjY29yZGluZyB0byB0aGUgcGx1cmFsIGZvcm0uICAqLworY2hhciAqCitETkdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCisJICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCit7CisgIHJldHVybiBEQ05HRVRURVhUIChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgbiwgTENfTUVTU0FHRVMpOworfQorCisjaWZkZWYgX0xJQkMKKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLword2Vha19hbGlhcyAoX19kbmdldHRleHQsIGRuZ2V0dGV4dCk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2V2YWwtcGx1cmFsLmggYi9lMmZzcHJvZ3MvaW50bC9ldmFsLXBsdXJhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYmQ1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9ldmFsLXBsdXJhbC5oCkBAIC0wLDAgKzEsMTA4IEBACisvKiBQbHVyYWwgZXhwcmVzc2lvbiBldmFsdWF0aW9uLgorICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZuZGVmIFNUQVRJQworI2RlZmluZSBTVEFUSUMgc3RhdGljCisjZW5kaWYKKworLyogRXZhbHVhdGUgdGhlIHBsdXJhbCBleHByZXNzaW9uIGFuZCByZXR1cm4gYW4gaW5kZXggdmFsdWUuICAqLworU1RBVElDCit1bnNpZ25lZCBsb25nIGludAoraW50ZXJuYWxfZnVuY3Rpb24KK3BsdXJhbF9ldmFsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqcGV4cCwgdW5zaWduZWQgbG9uZyBpbnQgbikKK3sKKyAgc3dpdGNoIChwZXhwLT5uYXJncykKKyAgICB7CisgICAgY2FzZSAwOgorICAgICAgc3dpdGNoIChwZXhwLT5vcGVyYXRpb24pCisJeworCWNhc2UgdmFyOgorCSAgcmV0dXJuIG47CisJY2FzZSBudW06CisJICByZXR1cm4gcGV4cC0+dmFsLm51bTsKKwlkZWZhdWx0OgorCSAgYnJlYWs7CisJfQorICAgICAgLyogTk9UUkVBQ0hFRCAqLworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgeworCS8qIHBleHAtPm9wZXJhdGlvbiBtdXN0IGJlIGxub3QuICAqLworCXVuc2lnbmVkIGxvbmcgaW50IGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1swXSwgbik7CisJcmV0dXJuICEgYXJnOworICAgICAgfQorICAgIGNhc2UgMjoKKyAgICAgIHsKKwl1bnNpZ25lZCBsb25nIGludCBsZWZ0YXJnID0gcGx1cmFsX2V2YWwgKHBleHAtPnZhbC5hcmdzWzBdLCBuKTsKKwlpZiAocGV4cC0+b3BlcmF0aW9uID09IGxvcikKKwkgIHJldHVybiBsZWZ0YXJnIHx8IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1sxXSwgbik7CisJZWxzZSBpZiAocGV4cC0+b3BlcmF0aW9uID09IGxhbmQpCisJICByZXR1cm4gbGVmdGFyZyAmJiBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMV0sIG4pOworCWVsc2UKKwkgIHsKKwkgICAgdW5zaWduZWQgbG9uZyBpbnQgcmlnaHRhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMV0sIG4pOworCisJICAgIHN3aXRjaCAocGV4cC0+b3BlcmF0aW9uKQorCSAgICAgIHsKKwkgICAgICBjYXNlIG11bHQ6CisJCXJldHVybiBsZWZ0YXJnICogcmlnaHRhcmc7CisJICAgICAgY2FzZSBkaXZpZGU6CisjaWYgIUlOVERJVjBfUkFJU0VTX1NJR0ZQRQorCQlpZiAocmlnaHRhcmcgPT0gMCkKKwkJICByYWlzZSAoU0lHRlBFKTsKKyNlbmRpZgorCQlyZXR1cm4gbGVmdGFyZyAvIHJpZ2h0YXJnOworCSAgICAgIGNhc2UgbW9kdWxlOgorI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKKwkJaWYgKHJpZ2h0YXJnID09IDApCisJCSAgcmFpc2UgKFNJR0ZQRSk7CisjZW5kaWYKKwkJcmV0dXJuIGxlZnRhcmcgJSByaWdodGFyZzsKKwkgICAgICBjYXNlIHBsdXM6CisJCXJldHVybiBsZWZ0YXJnICsgcmlnaHRhcmc7CisJICAgICAgY2FzZSBtaW51czoKKwkJcmV0dXJuIGxlZnRhcmcgLSByaWdodGFyZzsKKwkgICAgICBjYXNlIGxlc3NfdGhhbjoKKwkJcmV0dXJuIGxlZnRhcmcgPCByaWdodGFyZzsKKwkgICAgICBjYXNlIGdyZWF0ZXJfdGhhbjoKKwkJcmV0dXJuIGxlZnRhcmcgPiByaWdodGFyZzsKKwkgICAgICBjYXNlIGxlc3Nfb3JfZXF1YWw6CisJCXJldHVybiBsZWZ0YXJnIDw9IHJpZ2h0YXJnOworCSAgICAgIGNhc2UgZ3JlYXRlcl9vcl9lcXVhbDoKKwkJcmV0dXJuIGxlZnRhcmcgPj0gcmlnaHRhcmc7CisJICAgICAgY2FzZSBlcXVhbDoKKwkJcmV0dXJuIGxlZnRhcmcgPT0gcmlnaHRhcmc7CisJICAgICAgY2FzZSBub3RfZXF1YWw6CisJCXJldHVybiBsZWZ0YXJnICE9IHJpZ2h0YXJnOworCSAgICAgIGRlZmF1bHQ6CisJCWJyZWFrOworCSAgICAgIH0KKwkgIH0KKwkvKiBOT1RSRUFDSEVEICovCisJYnJlYWs7CisgICAgICB9CisgICAgY2FzZSAzOgorICAgICAgeworCS8qIHBleHAtPm9wZXJhdGlvbiBtdXN0IGJlIHFtb3AuICAqLworCXVuc2lnbmVkIGxvbmcgaW50IGJvb2xhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMF0sIG4pOworCXJldHVybiBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbYm9vbGFyZyA/IDEgOiAyXSwgbik7CisgICAgICB9CisgICAgfQorICAvKiBOT1RSRUFDSEVEICovCisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvZXhwbG9kZW5hbWUuYyBiL2UyZnNwcm9ncy9pbnRsL2V4cGxvZGVuYW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjMjVlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2V4cGxvZGVuYW1lLmMKQEAgLTAsMCArMSwxODUgQEAKKy8qIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpbmNsdWRlICJsb2FkaW5mby5oIgorCisvKiBPbiBzb21lIHN0cmFuZ2Ugc3lzdGVtcyBzdGlsbCBubyBkZWZpbml0aW9uIG9mIE5VTEwgaXMgZm91bmQuICBTaWdoISAgKi8KKyNpZm5kZWYgTlVMTAorIyBpZiBkZWZpbmVkIF9fU1REQ19fICYmIF9fU1REQ19fCisjICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKKyMgZWxzZQorIyAgZGVmaW5lIE5VTEwgMAorIyBlbmRpZgorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworY2hhciAqCitfbmxfZmluZF9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgd2hpbGUgKG5hbWVbMF0gIT0gJ1wwJyAmJiBuYW1lWzBdICE9ICdfJyAmJiBuYW1lWzBdICE9ICdAJworCSAmJiBuYW1lWzBdICE9ICcrJyAmJiBuYW1lWzBdICE9ICcsJykKKyAgICArK25hbWU7CisKKyAgcmV0dXJuIChjaGFyICopIG5hbWU7Cit9CisKKworaW50CitfbmxfZXhwbG9kZV9uYW1lIChjaGFyICpuYW1lLAorCQkgIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwgY29uc3QgY2hhciAqKm1vZGlmaWVyLAorCQkgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAorCQkgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQsIGNvbnN0IGNoYXIgKipzcGVjaWFsLAorCQkgIGNvbnN0IGNoYXIgKipzcG9uc29yLCBjb25zdCBjaGFyICoqcmV2aXNpb24pCit7CisgIGVudW0geyB1bmRlY2lkZWQsIHhwZywgY2VuIH0gc3ludGF4OworICBjaGFyICpjcDsKKyAgaW50IG1hc2s7CisKKyAgKm1vZGlmaWVyID0gTlVMTDsKKyAgKnRlcnJpdG9yeSA9IE5VTEw7CisgICpjb2Rlc2V0ID0gTlVMTDsKKyAgKm5vcm1hbGl6ZWRfY29kZXNldCA9IE5VTEw7CisgICpzcGVjaWFsID0gTlVMTDsKKyAgKnNwb25zb3IgPSBOVUxMOworICAqcmV2aXNpb24gPSBOVUxMOworCisgIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAorICAgICBsb29rIGZvciB0aGUgbGFuZ3VhZ2UuICBUZXJtaW5hdGlvbiBzeW1ib2xzIGFyZSBgXycgYW5kIGBAJyBpZgorICAgICB3ZSB1c2UgWFBHNCBzdHlsZSwgYW5kIGBfJywgYCsnLCBhbmQgYCwnIGlmIHdlIHVzZSBDRU4gc3ludGF4LiAgKi8KKyAgbWFzayA9IDA7CisgIHN5bnRheCA9IHVuZGVjaWRlZDsKKyAgKmxhbmd1YWdlID0gY3AgPSBuYW1lOworICBjcCA9IF9ubF9maW5kX2xhbmd1YWdlICgqbGFuZ3VhZ2UpOworCisgIGlmICgqbGFuZ3VhZ2UgPT0gY3ApCisgICAgLyogVGhpcyBkb2VzIG5vdCBtYWtlIHNlbnNlOiBsYW5ndWFnZSBoYXMgdG8gYmUgc3BlY2lmaWVkLiAgVXNlCisgICAgICAgdGhpcyBlbnRyeSBhcyBpdCBpcyB3aXRob3V0IGV4cGxvZGluZy4gIFBlcmhhcHMgaXQgaXMgYW4gYWxpYXMuICAqLworICAgIGNwID0gc3RyY2hyICgqbGFuZ3VhZ2UsICdcMCcpOworICBlbHNlIGlmIChjcFswXSA9PSAnXycpCisgICAgeworICAgICAgLyogTmV4dCBpcyB0aGUgdGVycml0b3J5LiAgKi8KKyAgICAgIGNwWzBdID0gJ1wwJzsKKyAgICAgICp0ZXJyaXRvcnkgPSArK2NwOworCisgICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnLicgJiYgY3BbMF0gIT0gJ0AnCisJICAgICAmJiBjcFswXSAhPSAnKycgJiYgY3BbMF0gIT0gJywnICYmIGNwWzBdICE9ICdfJykKKwkrK2NwOworCisgICAgICBtYXNrIHw9IFRFUlJJVE9SWTsKKworICAgICAgaWYgKGNwWzBdID09ICcuJykKKwl7CisJICAvKiBOZXh0IGlzIHRoZSBjb2Rlc2V0LiAgKi8KKwkgIHN5bnRheCA9IHhwZzsKKwkgIGNwWzBdID0gJ1wwJzsKKwkgICpjb2Rlc2V0ID0gKytjcDsKKworCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ0AnKQorCSAgICArK2NwOworCisJICBtYXNrIHw9IFhQR19DT0RFU0VUOworCisJICBpZiAoKmNvZGVzZXQgIT0gY3AgJiYgKCpjb2Rlc2V0KVswXSAhPSAnXDAnKQorCSAgICB7CisJICAgICAgKm5vcm1hbGl6ZWRfY29kZXNldCA9IF9ubF9ub3JtYWxpemVfY29kZXNldCAoKmNvZGVzZXQsCisJCQkJCQkJICAgY3AgLSAqY29kZXNldCk7CisJICAgICAgaWYgKHN0cmNtcCAoKmNvZGVzZXQsICpub3JtYWxpemVkX2NvZGVzZXQpID09IDApCisJCWZyZWUgKChjaGFyICopICpub3JtYWxpemVkX2NvZGVzZXQpOworCSAgICAgIGVsc2UKKwkJbWFzayB8PSBYUEdfTk9STV9DT0RFU0VUOworCSAgICB9CisJfQorICAgIH0KKworICBpZiAoY3BbMF0gPT0gJ0AnIHx8IChzeW50YXggIT0geHBnICYmIGNwWzBdID09ICcrJykpCisgICAgeworICAgICAgLyogTmV4dCBpcyB0aGUgbW9kaWZpZXIuICAqLworICAgICAgc3ludGF4ID0gY3BbMF0gPT0gJ0AnID8geHBnIDogY2VuOworICAgICAgY3BbMF0gPSAnXDAnOworICAgICAgKm1vZGlmaWVyID0gKytjcDsKKworICAgICAgd2hpbGUgKHN5bnRheCA9PSBjZW4gJiYgY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnKycKKwkgICAgICYmIGNwWzBdICE9ICcsJyAmJiBjcFswXSAhPSAnXycpCisJKytjcDsKKworICAgICAgbWFzayB8PSBYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0U7CisgICAgfQorCisgIGlmIChzeW50YXggIT0geHBnICYmIChjcFswXSA9PSAnKycgfHwgY3BbMF0gPT0gJywnIHx8IGNwWzBdID09ICdfJykpCisgICAgeworICAgICAgc3ludGF4ID0gY2VuOworCisgICAgICBpZiAoY3BbMF0gPT0gJysnKQorCXsKKyAJICAvKiBOZXh0IGlzIHNwZWNpYWwgYXBwbGljYXRpb24gKENFTiBzeW50YXgpLiAgKi8KKwkgIGNwWzBdID0gJ1wwJzsKKwkgICpzcGVjaWFsID0gKytjcDsKKworCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJywnICYmIGNwWzBdICE9ICdfJykKKwkgICAgKytjcDsKKworCSAgbWFzayB8PSBDRU5fU1BFQ0lBTDsKKwl9CisKKyAgICAgIGlmIChjcFswXSA9PSAnLCcpCisJeworIAkgIC8qIE5leHQgaXMgc3BvbnNvciAoQ0VOIHN5bnRheCkuICAqLworCSAgY3BbMF0gPSAnXDAnOworCSAgKnNwb25zb3IgPSArK2NwOworCisJICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnXycpCisJICAgICsrY3A7CisKKwkgIG1hc2sgfD0gQ0VOX1NQT05TT1I7CisJfQorCisgICAgICBpZiAoY3BbMF0gPT0gJ18nKQorCXsKKyAJICAvKiBOZXh0IGlzIHJldmlzaW9uIChDRU4gc3ludGF4KS4gICovCisJICBjcFswXSA9ICdcMCc7CisJICAqcmV2aXNpb24gPSArK2NwOworCisJICBtYXNrIHw9IENFTl9SRVZJU0lPTjsKKwl9CisgICAgfQorCisgIC8qIEZvciBDRU4gc3ludGF4IHZhbHVlcyBpdCBtaWdodCBiZSBpbXBvcnRhbnQgdG8gaGF2ZSB0aGUKKyAgICAgc2VwYXJhdG9yIGNoYXJhY3RlciBpbiB0aGUgZmlsZSBuYW1lLCBub3QgZm9yIFhQRyBzeW50YXguICAqLworICBpZiAoc3ludGF4ID09IHhwZykKKyAgICB7CisgICAgICBpZiAoKnRlcnJpdG9yeSAhPSBOVUxMICYmICgqdGVycml0b3J5KVswXSA9PSAnXDAnKQorCW1hc2sgJj0gflRFUlJJVE9SWTsKKworICAgICAgaWYgKCpjb2Rlc2V0ICE9IE5VTEwgJiYgKCpjb2Rlc2V0KVswXSA9PSAnXDAnKQorCW1hc2sgJj0gflhQR19DT0RFU0VUOworCisgICAgICBpZiAoKm1vZGlmaWVyICE9IE5VTEwgJiYgKCptb2RpZmllcilbMF0gPT0gJ1wwJykKKwltYXNrICY9IH5YUEdfTU9ESUZJRVI7CisgICAgfQorCisgIHJldHVybiBtYXNrOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvZmluZGRvbWFpbi5jIGIvZTJmc3Byb2dzL2ludGwvZmluZGRvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OTJhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9maW5kZG9tYWluLmMKQEAgLTAsMCArMSwxOTIgQEAKKy8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUub3JnPiwgMTk5NS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2Vsc2UKKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy8qIExpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucy4gICovCitzdGF0aWMgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvYWRlZF9kb21haW5zOworCisKKy8qIFJldHVybiBhIGRhdGEgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBkZXNjcmliZWQgYnkKKyAgIHRoZSBET01BSU5OQU1FIGFuZCBDQVRFR09SWSBwYXJhbWV0ZXJzIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudGx5CisgICBlc3RhYmxpc2hlZCBiaW5kaW5ncy4gICovCitzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKK2ludGVybmFsX2Z1bmN0aW9uCitfbmxfZmluZF9kb21haW4gKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGNoYXIgKmxvY2FsZSwKKwkJIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQoreworICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7CisgIGNvbnN0IGNoYXIgKmxhbmd1YWdlOworICBjb25zdCBjaGFyICptb2RpZmllcjsKKyAgY29uc3QgY2hhciAqdGVycml0b3J5OworICBjb25zdCBjaGFyICpjb2Rlc2V0OworICBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQ7CisgIGNvbnN0IGNoYXIgKnNwZWNpYWw7CisgIGNvbnN0IGNoYXIgKnNwb25zb3I7CisgIGNvbnN0IGNoYXIgKnJldmlzaW9uOworICBjb25zdCBjaGFyICphbGlhc192YWx1ZTsKKyAgaW50IG1hc2s7CisKKyAgLyogTE9DQUxFIGNhbiBjb25zaXN0IG9mIHVwIHRvIGZvdXIgcmVjb2duaXplZCBwYXJ0cyBmb3IgdGhlIFhQRyBzeW50YXg6CisKKwkJbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0KKworICAgICBhbmQgc2l4IHBhcnRzIGZvciB0aGUgQ0VOIHN5bnRheDoKKworCWxhbmd1YWdlW190ZXJyaXRvcnldWythdWRpZW5jZV1bK3NwZWNpYWxdWyxbc3BvbnNvcl1bX3JldmlzaW9uXV0KKworICAgICBCZXNpZGUgdGhlIGZpcnN0IHBhcnQgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gYmUgbWlzc2luZy4gIElmCisgICAgIHRoZSBmdWxsIHNwZWNpZmllZCBsb2NhbGUgaXMgbm90IGZvdW5kLCB0aGUgbGVzcyBzcGVjaWZpYyBvbmUgYXJlCisgICAgIGxvb2tlZCBmb3IuICBUaGUgdmFyaW91cyBwYXJ0cyB3aWxsIGJlIHN0cmlwcGVkIG9mZiBhY2NvcmRpbmcgdG8KKyAgICAgdGhlIGZvbGxvd2luZyBvcmRlcjoKKwkJKDEpIHJldmlzaW9uCisJCSgyKSBzcG9uc29yCisJCSgzKSBzcGVjaWFsCisJCSg0KSBjb2Rlc2V0CisJCSg1KSBub3JtYWxpemVkIGNvZGVzZXQKKwkJKDYpIHRlcnJpdG9yeQorCQkoNykgYXVkaWVuY2UvbW9kaWZpZXIKKyAgICovCisKKyAgLyogSWYgd2UgaGF2ZSBhbHJlYWR5IHRlc3RlZCBmb3IgdGhpcyBsb2NhbGUgZW50cnkgdGhlcmUgaGFzIHRvCisgICAgIGJlIG9uZSBkYXRhIHNldCBpbiB0aGUgbGlzdCBvZiBsb2FkZWQgZG9tYWlucy4gICovCisgIHJldHZhbCA9IF9ubF9tYWtlX2wxMG5mbGlzdCAoJl9ubF9sb2FkZWRfZG9tYWlucywgZGlybmFtZSwKKwkJCSAgICAgICBzdHJsZW4gKGRpcm5hbWUpICsgMSwgMCwgbG9jYWxlLCBOVUxMLCBOVUxMLAorCQkJICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGRvbWFpbm5hbWUsIDApOworICBpZiAocmV0dmFsICE9IE5VTEwpCisgICAgeworICAgICAgLyogV2Uga25vdyBzb21ldGhpbmcgYWJvdXQgdGhpcyBsb2NhbGUuICAqLworICAgICAgaW50IGNudDsKKworICAgICAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQorCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLCBkb21haW5iaW5kaW5nKTsKKworICAgICAgaWYgKHJldHZhbC0+ZGF0YSAhPSBOVUxMKQorCXJldHVybiByZXR2YWw7CisKKyAgICAgIGZvciAoY250ID0gMDsgcmV0dmFsLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKKwl7CisJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGVjaWRlZCA9PSAwKQorCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0sIGRvbWFpbmJpbmRpbmcpOworCisJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQorCSAgICBicmVhazsKKwl9CisgICAgICByZXR1cm4gY250ID49IDAgPyByZXR2YWwgOiBOVUxMOworICAgICAgLyogTk9UUkVBQ0hFRCAqLworICAgIH0KKworICAvKiBTZWUgd2hldGhlciB0aGUgbG9jYWxlIHZhbHVlIGlzIGFuIGFsaWFzLiAgSWYgeWVzIGl0cyB2YWx1ZQorICAgICAqb3ZlcndyaXRlcyogdGhlIGFsaWFzIG5hbWUuICBObyB0ZXN0IGZvciB0aGUgb3JpZ2luYWwgdmFsdWUgaXMKKyAgICAgZG9uZS4gICovCisgIGFsaWFzX3ZhbHVlID0gX25sX2V4cGFuZF9hbGlhcyAobG9jYWxlKTsKKyAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCisgICAgeworI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorICAgICAgbG9jYWxlID0gc3RyZHVwIChhbGlhc192YWx1ZSk7CisgICAgICBpZiAobG9jYWxlID09IE5VTEwpCisJcmV0dXJuIE5VTEw7CisjZWxzZQorICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoYWxpYXNfdmFsdWUpICsgMTsKKyAgICAgIGxvY2FsZSA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKyAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCkKKwlyZXR1cm4gTlVMTDsKKworICAgICAgbWVtY3B5IChsb2NhbGUsIGFsaWFzX3ZhbHVlLCBsZW4pOworI2VuZGlmCisgICAgfQorCisgIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAorICAgICBsb29rIGZvciB0aGUgbGFuZ3VhZ2UuICBUZXJtaW5hdGlvbiBzeW1ib2xzIGFyZSBgXycgYW5kIGBAJyBpZgorICAgICB3ZSB1c2UgWFBHNCBzdHlsZSwgYW5kIGBfJywgYCsnLCBhbmQgYCwnIGlmIHdlIHVzZSBDRU4gc3ludGF4LiAgKi8KKyAgbWFzayA9IF9ubF9leHBsb2RlX25hbWUgKGxvY2FsZSwgJmxhbmd1YWdlLCAmbW9kaWZpZXIsICZ0ZXJyaXRvcnksCisJCQkgICAmY29kZXNldCwgJm5vcm1hbGl6ZWRfY29kZXNldCwgJnNwZWNpYWwsCisJCQkgICAmc3BvbnNvciwgJnJldmlzaW9uKTsKKworICAvKiBDcmVhdGUgYWxsIHBvc3NpYmxlIGxvY2FsZSBlbnRyaWVzIHdoaWNoIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4KKyAgICAgZ2VuZXJhbGl6YXRpb24uICAqLworICByZXR2YWwgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKCZfbmxfbG9hZGVkX2RvbWFpbnMsIGRpcm5hbWUsCisJCQkgICAgICAgc3RybGVuIChkaXJuYW1lKSArIDEsIG1hc2ssIGxhbmd1YWdlLCB0ZXJyaXRvcnksCisJCQkgICAgICAgY29kZXNldCwgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKKwkJCSAgICAgICBzcG9uc29yLCByZXZpc2lvbiwgZG9tYWlubmFtZSwgMSk7CisgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAvKiBUaGlzIG1lYW5zIHdlIGFyZSBvdXQgb2YgY29yZS4gICovCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQorICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLCBkb21haW5iaW5kaW5nKTsKKyAgaWYgKHJldHZhbC0+ZGF0YSA9PSBOVUxMKQorICAgIHsKKyAgICAgIGludCBjbnQ7CisgICAgICBmb3IgKGNudCA9IDA7IHJldHZhbC0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCisJeworCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKKwkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLCBkb21haW5iaW5kaW5nKTsKKwkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCisJICAgIGJyZWFrOworCX0KKyAgICB9CisKKyAgLyogVGhlIHJvb20gZm9yIGFuIGFsaWFzIHdhcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQuICBGcmVlIGl0IG5vdy4gICovCisgIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQorICAgIGZyZWUgKGxvY2FsZSk7CisKKyAgLyogVGhlIHNwYWNlIGZvciBub3JtYWxpemVkX2NvZGVzZXQgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgRnJlZSBpdC4gICovCisgIGlmIChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkKKyAgICBmcmVlICgodm9pZCAqKSBub3JtYWxpemVkX2NvZGVzZXQpOworCisgIHJldHVybiByZXR2YWw7Cit9CisKKworI2lmZGVmIF9MSUJDCitsaWJjX2ZyZWVyZXNfZm4gKGZyZWVfbWVtKQoreworICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpydW5wID0gX25sX2xvYWRlZF9kb21haW5zOworCisgIHdoaWxlIChydW5wICE9IE5VTEwpCisgICAgeworICAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqaGVyZSA9IHJ1bnA7CisgICAgICBpZiAocnVucC0+ZGF0YSAhPSBOVUxMKQorCV9ubF91bmxvYWRfZG9tYWluICgoc3RydWN0IGxvYWRlZF9kb21haW4gKikgcnVucC0+ZGF0YSk7CisgICAgICBydW5wID0gcnVucC0+bmV4dDsKKyAgICAgIGZyZWUgKChjaGFyICopIGhlcmUtPmZpbGVuYW1lKTsKKyAgICAgIGZyZWUgKGhlcmUpOworICAgIH0KK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvZ2V0dGV4dC5jIGIvZTJmc3Byb2dzL2ludGwvZ2V0dGV4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzQyZmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9nZXR0ZXh0LmMKQEAgLTAsMCArMSw2MyBAQAorLyogSW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dCgzKSBmdW5jdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBfX25lZWRfTlVMTAorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2Vsc2UKKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCisgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBHRVRURVhUIF9fZ2V0dGV4dAorIyBkZWZpbmUgRENHRVRURVhUIElOVFVTRShfX2RjZ2V0dGV4dCkKKyNlbHNlCisjIGRlZmluZSBHRVRURVhUIGxpYmludGxfZ2V0dGV4dAorIyBkZWZpbmUgRENHRVRURVhUIGxpYmludGxfZGNnZXR0ZXh0CisjZW5kaWYKKworLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CisgICB0ZXh0KS4gICovCitjaGFyICoKK0dFVFRFWFQgKGNvbnN0IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4gRENHRVRURVhUIChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpOworfQorCisjaWZkZWYgX0xJQkMKKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLword2Vha19hbGlhcyAoX19nZXR0ZXh0LCBnZXR0ZXh0KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvZ2V0dGV4dFAuaCBiL2UyZnNwcm9ncy9pbnRsL2dldHRleHRQLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ2NmMzZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2dldHRleHRQLmgKQEAgLTAsMCArMSwyMTUgQEAKKy8qIEhlYWRlciBkZXNjcmliaW5nIGludGVybmFscyBvZiBsaWJpbnRsIGxpYnJhcnkuCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZm5kZWYgX0dFVFRFWFRQX0gKKyNkZWZpbmUgX0dFVFRFWFRQX0gKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgkJLyogR2V0IHNpemVfdC4gICovCisKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlICIuLi9pY29udi9nY29udl9pbnQuaCIKKyNlbHNlCisjIGlmIEhBVkVfSUNPTlYKKyMgIGluY2x1ZGUgPGljb252Lmg+CisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgImxvYWRpbmZvLmgiCisKKyNpbmNsdWRlICJnbW8uaCIJCS8qIEdldCBubHNfdWludDMyLiAgKi8KKworLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworCisjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCisjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgorI2VuZGlmCisKKyNpZm5kZWYgYXR0cmlidXRlX2hpZGRlbgorIyBkZWZpbmUgYXR0cmlidXRlX2hpZGRlbgorI2VuZGlmCisKKy8qIFRlbGwgdGhlIGNvbXBpbGVyIHdoZW4gYSBjb25kaXRpb25hbCBvciBpbnRlZ2VyIGV4cHJlc3Npb24gaXMKKyAgIGFsbW9zdCBhbHdheXMgdHJ1ZSBvciBhbG1vc3QgYWx3YXlzIGZhbHNlLiAgKi8KKyNpZm5kZWYgSEFWRV9CVUlMVElOX0VYUEVDVAorIyBkZWZpbmUgX19idWlsdGluX2V4cGVjdChleHByLCB2YWwpIChleHByKQorI2VuZGlmCisKKyNpZm5kZWYgVworIyBkZWZpbmUgVyhmbGFnLCBkYXRhKSAoKGZsYWcpID8gU1dBUCAoZGF0YSkgOiAoZGF0YSkpCisjZW5kaWYKKworCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyMgZGVmaW5lIFNXQVAoaSkgYnN3YXBfMzIgKGkpCisjZWxzZQorc3RhdGljIGlubGluZSBubHNfdWludDMyCitTV0FQIChpKQorICAgICBubHNfdWludDMyIGk7Cit7CisgIHJldHVybiAoaSA8PCAyNCkgfCAoKGkgJiAweGZmMDApIDw8IDgpIHwgKChpID4+IDgpICYgMHhmZjAwKSB8IChpID4+IDI0KTsKK30KKyNlbmRpZgorCisKKy8qIEluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZy4gICovCitzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjCit7CisgIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCisgIHNpemVfdCBsZW5ndGg7CisgIC8qIFBvaW50ZXIgdG8gYWRkcmVzc2VkIHN0cmluZy4gICovCisgIGNvbnN0IGNoYXIgKnBvaW50ZXI7Cit9OworCisvKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gb3BlbmVkIG1lc3NhZ2UgY2F0YWxvZy4gICovCitzdHJ1Y3QgbG9hZGVkX2RvbWFpbgoreworICAvKiBQb2ludGVyIHRvIG1lbW9yeSBjb250YWluaW5nIHRoZSAubW8gZmlsZS4gICovCisgIGNvbnN0IGNoYXIgKmRhdGE7CisgIC8qIDEgaWYgdGhlIG1lbW9yeSBpcyBtbWFwKCllZCwgMCBpZiB0aGUgbWVtb3J5IGlzIG1hbGxvYygpZWQuICAqLworICBpbnQgdXNlX21tYXA7CisgIC8qIFNpemUgb2YgbW1hcCgpZWQgbWVtb3J5LiAgKi8KKyAgc2l6ZV90IG1tYXBfc2l6ZTsKKyAgLyogMSBpZiB0aGUgLm1vIGZpbGUgdXNlcyBhIGRpZmZlcmVudCBlbmRpYW5uZXNzIHRoYW4gdGhpcyBtYWNoaW5lLiAgKi8KKyAgaW50IG11c3Rfc3dhcDsKKyAgLyogUG9pbnRlciB0byBhZGRpdGlvbmFsIG1hbGxvYygpZWQgbWVtb3J5LiAgKi8KKyAgdm9pZCAqbWFsbG9jZWQ7CisKKyAgLyogTnVtYmVyIG9mIHN0YXRpYyBzdHJpbmdzIHBhaXJzLiAgKi8KKyAgbmxzX3VpbnQzMiBuc3RyaW5nczsKKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiBvcmlnaW5hbCBzdHJpbmdzIGluIHRoZSBmaWxlLiAgKi8KKyAgY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICpvcmlnX3RhYjsKKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiB0cmFuc2xhdGVkIHN0cmluZ3MgaW4gdGhlIGZpbGUuICAqLworICBjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKKworICAvKiBOdW1iZXIgb2Ygc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIHBhaXJzLiAgKi8KKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zdHJpbmdzOworICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIG9yaWdpbmFsIHN5c2RlcCBzdHJpbmdzLiAgKi8KKyAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqb3JpZ19zeXNkZXBfdGFiOworICAvKiBQb2ludGVyIHRvIGRlc2NyaXB0b3JzIG9mIHRyYW5zbGF0ZWQgc3lzZGVwIHN0cmluZ3MuICAqLworICBjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICp0cmFuc19zeXNkZXBfdGFiOworCisgIC8qIFNpemUgb2YgaGFzaCB0YWJsZS4gICovCisgIG5sc191aW50MzIgaGFzaF9zaXplOworICAvKiBQb2ludGVyIHRvIGhhc2ggdGFibGUuICAqLworICBjb25zdCBubHNfdWludDMyICpoYXNoX3RhYjsKKyAgLyogMSBpZiB0aGUgaGFzaCB0YWJsZSB1c2VzIGEgZGlmZmVyZW50IGVuZGlhbm5lc3MgdGhhbiB0aGlzIG1hY2hpbmUuICAqLworICBpbnQgbXVzdF9zd2FwX2hhc2hfdGFiOworCisgIGludCBjb2Rlc2V0X2NudHI7CisjaWZkZWYgX0xJQkMKKyAgX19nY29udl90IGNvbnY7CisjZWxzZQorIyBpZiBIQVZFX0lDT05WCisgIGljb252X3QgY29udjsKKyMgZW5kaWYKKyNlbmRpZgorICBjaGFyICoqY29udl90YWI7CisKKyAgc3RydWN0IGV4cHJlc3Npb24gKnBsdXJhbDsKKyAgdW5zaWduZWQgbG9uZyBpbnQgbnBsdXJhbHM7Cit9OworCisvKiBXZSB3YW50IHRvIGFsbG9jYXRlIGEgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdC4gIEJ1dCBJU08gQworICAgZG9lc24ndCBhbGxvdyB6ZXJvIHNpemVkIGFycmF5cy4gICovCisjaWZkZWYgX19HTlVDX18KKyMgZGVmaW5lIFpFUk8gMAorI2Vsc2UKKyMgZGVmaW5lIFpFUk8gMQorI2VuZGlmCisKKy8qIEEgc2V0IG9mIHNldHRpbmdzIGJvdW5kIHRvIGEgbWVzc2FnZSBkb21haW4uICBVc2VkIHRvIHN0b3JlIHNldHRpbmdzCisgICBmcm9tIGJpbmR0ZXh0ZG9tYWluKCkgYW5kIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KCkuICAqLworc3RydWN0IGJpbmRpbmcKK3sKKyAgc3RydWN0IGJpbmRpbmcgKm5leHQ7CisgIGNoYXIgKmRpcm5hbWU7CisgIGludCBjb2Rlc2V0X2NudHI7CS8qIEluY3JlbWVudGVkIGVhY2ggdGltZSBjb2Rlc2V0IGNoYW5nZXMuICAqLworICBjaGFyICpjb2Rlc2V0OworICBjaGFyIGRvbWFpbm5hbWVbWkVST107Cit9OworCisvKiBBIGNvdW50ZXIgd2hpY2ggaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHNvbWUgcHJldmlvdXMgdHJhbnNsYXRpb25zCisgICBiZWNvbWUgaW52YWxpZC4KKyAgIFRoaXMgdmFyaWFibGUgaXMgcGFydCBvZiB0aGUgZXh0ZXJuYWwgQUJJIG9mIHRoZSBHTlUgbGliaW50bC4gICovCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CisKKyNpZm5kZWYgX0xJQkMKK2NvbnN0IGNoYXIgKl9ubF9sb2NhbGVfbmFtZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpOworI2VuZGlmCisKK3N0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9maW5kX2RvbWFpbiAoY29uc3QgY2hhciAqX19kaXJuYW1lLCBjaGFyICpfX2xvY2FsZSwKKwkJCQkJIGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkJIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCisgICAgIGludGVybmFsX2Z1bmN0aW9uOwordm9pZCBfbmxfbG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluLAorCQkgICAgICBzdHJ1Y3QgYmluZGluZyAqX19kb21haW5iaW5kaW5nKQorICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKK3ZvaWQgX25sX3VubG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfZG9tYWluICpfX2RvbWFpbikKKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Citjb25zdCBjaGFyICpfbmxfaW5pdF9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX19kb21haW5fZmlsZSwKKwkJCQkgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpfX2RvbWFpbiwKKwkJCQkgIHN0cnVjdCBiaW5kaW5nICpfX2RvbWFpbmJpbmRpbmcpCisgICAgIGludGVybmFsX2Z1bmN0aW9uOwordm9pZCBfbmxfZnJlZV9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluKQorICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKKworY2hhciAqX25sX2ZpbmRfbXNnIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKKwkJICAgIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nLCBjb25zdCBjaGFyICptc2dpZCwKKwkJICAgIHNpemVfdCAqbGVuZ3RocCkKKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247CisKKyNpZmRlZiBfTElCQworZXh0ZXJuIGNoYXIgKl9fZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCk7CitleHRlcm4gY2hhciAqX19kZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKTsKK2V4dGVybiBjaGFyICpfX2RjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAorCQkJICBpbnQgX19jYXRlZ29yeSk7CitleHRlcm4gY2hhciAqX19uZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJIHVuc2lnbmVkIGxvbmcgaW50IF9fbik7CitleHRlcm4gY2hhciAqX19kbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCSAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJICB1bnNpZ25lZCBsb25nIGludCBuKTsKK2V4dGVybiBjaGFyICpfX2RjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCSAgIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwgaW50IF9fY2F0ZWdvcnkpOworZXh0ZXJuIGNoYXIgKl9fZGNpZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorCQkJICAgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJICAgaW50IF9fcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBfX24sCisJCQkgICBpbnQgX19jYXRlZ29yeSk7CitleHRlcm4gY2hhciAqX190ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpOworZXh0ZXJuIGNoYXIgKl9fYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpOworZXh0ZXJuIGNoYXIgKl9fYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkJY29uc3QgY2hhciAqX19jb2Rlc2V0KTsKKyNlbHNlCisvKiBEZWNsYXJlIHRoZSBleHBvcnRlZCBsaWJpbnRsXyogZnVuY3Rpb25zLCBpbiBhIHdheSB0aGF0IGFsbG93cyB1cyB0bworICAgY2FsbCB0aGVtIHVuZGVyIHRoZWlyIHJlYWwgbmFtZS4gICovCisjIHVuZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQorIyB1bmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKKyMgZGVmaW5lIF9JTlRMX1JFRElSRUNUX01BQ1JPUworIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCitleHRlcm4gY2hhciAqbGliaW50bF9kY2lnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCisJCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKKwkJCQkgaW50IF9fcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBfX24sCisJCQkJIGludCBfX2NhdGVnb3J5KTsKKyNlbmRpZgorCisvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKworI2VuZGlmIC8qIGdldHRleHRQLmggICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9nbW8uaCBiL2UyZnNwcm9ncy9pbnRsL2dtby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YzljYzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9nbW8uaApAQCAtMCwwICsxLDE0OSBAQAorLyogRGVzY3JpcHRpb24gb2YgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQ6IGdlbmVyYWwgZmlsZSBsYXlvdXQuCisgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcsIDIwMDAtMjAwMiwgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZm5kZWYgX0dFVFRFWFRfSAorI2RlZmluZSBfR0VUVEVYVF9IIDEKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCisKKy8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KKyNkZWZpbmUgX01BR0lDIDB4OTUwNDEyZGUKKyNkZWZpbmUgX01BR0lDX1NXQVBQRUQgMHhkZTEyMDQ5NQorCisvKiBSZXZpc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnRseSB1c2VkIC5tbyAoYmluYXJ5KSBmaWxlIGZvcm1hdC4gICovCisjZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUiAwCisjZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUl9XSVRIX1NZU0RFUF9JIDEKKworLyogVGhlIGZvbGxvd2luZyBjb250b3J0aW9ucyBhcmUgYW4gYXR0ZW1wdCB0byB1c2UgdGhlIEMgcHJlcHJvY2Vzc29yCisgICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCisgICBhbHRlcm5hdGl2ZSBhcHByb2FjaCBpcyB0byB1c2UgYXV0b2NvbmYncyBBQ19DSEVDS19TSVpFT0YgbWFjcm8sIGJ1dAorICAgYXMgb2YgdmVyc2lvbiBhdXRvY29uZi0yLjEzLCB0aGUgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvIGRvZXNuJ3Qgd29yaworICAgd2hlbiBjcm9zcy1jb21waWxpbmcuICAqLworCisjaWYgX19TVERDX18KKyMgZGVmaW5lIFVJTlRfTUFYXzMyX0JJVFMgNDI5NDk2NzI5NVUKKyNlbHNlCisjIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDB4RkZGRkZGRkYKKyNlbmRpZgorCisvKiBJZiBVSU5UX01BWCBpc24ndCBkZWZpbmVkLCBhc3N1bWUgaXQncyBhIDMyLWJpdCB0eXBlLgorICAgVGhpcyBzaG91bGQgYmUgdmFsaWQgZm9yIGFsbCBzeXN0ZW1zIEdOVSBjYXJlcyBhYm91dCBiZWNhdXNlCisgICB0aGF0IGRvZXNuJ3QgaW5jbHVkZSAxNi1iaXQgc3lzdGVtcywgYW5kIG9ubHkgbW9kZXJuIHN5c3RlbXMKKyAgICh0aGF0IGNlcnRhaW5seSBoYXZlIDxsaW1pdHMuaD4pIGhhdmUgNjQrLWJpdCBpbnRlZ3JhbCB0eXBlcy4gICovCisKKyNpZm5kZWYgVUlOVF9NQVgKKyMgZGVmaW5lIFVJTlRfTUFYIFVJTlRfTUFYXzMyX0JJVFMKKyNlbmRpZgorCisjaWYgVUlOVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwordHlwZWRlZiB1bnNpZ25lZCBubHNfdWludDMyOworI2Vsc2UKKyMgaWYgVVNIUlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgbmxzX3VpbnQzMjsKKyMgZWxzZQorIyAgaWYgVUxPTkdfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBubHNfdWludDMyOworIyAgZWxzZQorICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgaW50ZW5kZWQgdG8gdGhyb3cgYW4gZXJyb3IuICBVc2luZyAjZXJyb3IgaXMKKyAgICAgbm90IHBvcnRhYmxlIGVub3VnaC4gICovCisgICJDYW5ub3QgZGV0ZXJtaW5lIHVuc2lnbmVkIDMyLWJpdCBkYXRhIHR5cGUuIgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisKKy8qIEhlYWRlciBmb3IgYmluYXJ5IC5tbyBmaWxlIGZvcm1hdC4gICovCitzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIKK3sKKyAgLyogVGhlIG1hZ2ljIG51bWJlci4gICovCisgIG5sc191aW50MzIgbWFnaWM7CisgIC8qIFRoZSByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGZpbGUgZm9ybWF0LiAgKi8KKyAgbmxzX3VpbnQzMiByZXZpc2lvbjsKKworICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWFqb3IgcmV2aXNpb24gMCBvciAxLiAgKi8KKworICAvKiBUaGUgbnVtYmVyIG9mIHN0cmluZ3MgcGFpcnMuICAqLworICBubHNfdWludDMyIG5zdHJpbmdzOworICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN0cmluZ3MuICAqLworICBubHNfdWludDMyIG9yaWdfdGFiX29mZnNldDsKKyAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGVkIHN0cmluZ3MuICAqLworICBubHNfdWludDMyIHRyYW5zX3RhYl9vZmZzZXQ7CisgIC8qIFNpemUgb2YgaGFzaCB0YWJsZS4gICovCisgIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKKyAgLyogT2Zmc2V0IG9mIGZpcnN0IGhhc2ggdGFibGUgZW50cnkuICAqLworICBubHNfdWludDMyIGhhc2hfdGFiX29mZnNldDsKKworICAvKiBUaGUgZm9sbG93aW5nIGFyZSBvbmx5IHVzZWQgaW4gLm1vIGZpbGVzIHdpdGggbWlub3IgcmV2aXNpb24gPj0gMS4gICovCisKKyAgLyogVGhlIG51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KKyAgbmxzX3VpbnQzMiBuX3N5c2RlcF9zZWdtZW50czsKKyAgLyogT2Zmc2V0IG9mIHRhYmxlIGRlc2NyaWJpbmcgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4gICovCisgIG5sc191aW50MzIgc3lzZGVwX3NlZ21lbnRzX29mZnNldDsKKyAgLyogVGhlIG51bWJlciBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgcGFpcnMuICAqLworICBubHNfdWludDMyIG5fc3lzZGVwX3N0cmluZ3M7CisgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3lzZGVwIHN0cmluZ3MuICAqLworICBubHNfdWludDMyIG9yaWdfc3lzZGVwX3RhYl9vZmZzZXQ7CisgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRlZCBzeXNkZXAgc3RyaW5ncy4gICovCisgIG5sc191aW50MzIgdHJhbnNfc3lzZGVwX3RhYl9vZmZzZXQ7Cit9OworCisvKiBEZXNjcmlwdG9yIGZvciBzdGF0aWMgc3RyaW5nIGNvbnRhaW5lZCBpbiB0aGUgYmluYXJ5IC5tbyBmaWxlLiAgKi8KK3N0cnVjdCBzdHJpbmdfZGVzYworeworICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgbm90IGluY2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgKi8KKyAgbmxzX3VpbnQzMiBsZW5ndGg7CisgIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCisgIG5sc191aW50MzIgb2Zmc2V0OworfTsKKworLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1pbm9yIHJldmlzaW9uID49IDEuICAqLworCisvKiBEZXNjcmlwdG9yIGZvciBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZyBzZWdtZW50LiAgKi8KK3N0cnVjdCBzeXNkZXBfc2VnbWVudAoreworICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICAqLworICBubHNfdWludDMyIGxlbmd0aDsKKyAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KKyAgbmxzX3VpbnQzMiBvZmZzZXQ7Cit9OworCisvKiBEZXNjcmlwdG9yIGZvciBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZy4gICovCitzdHJ1Y3Qgc3lzZGVwX3N0cmluZworeworICAvKiBPZmZzZXQgb2Ygc3RhdGljIHN0cmluZyBzZWdtZW50cyBpbiBmaWxlLiAgKi8KKyAgbmxzX3VpbnQzMiBvZmZzZXQ7CisgIC8qIEFsdGVybmF0aW5nIHNlcXVlbmNlIG9mIHN0YXRpYyBhbmQgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4KKyAgICAgVGhlIGxhc3Qgc2VnbWVudCBpcyBhIHN0YXRpYyBzZWdtZW50LCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCisgIHN0cnVjdCBzZWdtZW50X3BhaXIKKyAgeworICAgIC8qIFNpemUgb2Ygc3RhdGljIHNlZ21lbnQuICAqLworICAgIG5sc191aW50MzIgc2Vnc2l6ZTsKKyAgICAvKiBSZWZlcmVuY2UgdG8gc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcgc2VnbWVudCwgb3IgfjAgYXQgdGhlIGVuZC4gICovCisgICAgbmxzX3VpbnQzMiBzeXNkZXByZWY7CisgIH0gc2VnbWVudHNbMV07Cit9OworCisvKiBNYXJrZXIgZm9yIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnRzW10gYXJyYXkuICBUaGlzIGhhcyB0aGUgdmFsdWUgMHhGRkZGRkZGRiwKKyAgIHJlZ2FyZGxlc3Mgd2hldGhlciAnaW50JyBpcyAxNiBiaXQsIDMyIGJpdCwgb3IgNjQgYml0LiAgKi8KKyNkZWZpbmUgU0VHTUVOVFNfRU5EICgobmxzX3VpbnQzMikgfjApCisKKy8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworCisjZW5kaWYJLyogZ2V0dGV4dC5oICAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvaGFzaC1zdHJpbmcuaCBiL2UyZnNwcm9ncy9pbnRsL2hhc2gtc3RyaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzZTNiMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2hhc2gtc3RyaW5nLmgKQEAgLTAsMCArMSw0OCBAQAorLyogRGVzY3JpcHRpb24gb2YgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQ6IHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uLgorICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworLyogV2UgYXNzdW1lIHRvIGhhdmUgYHVuc2lnbmVkIGxvbmcgaW50JyB2YWx1ZSB3aXRoIGF0IGxlYXN0IDMyIGJpdHMuICAqLworI2RlZmluZSBIQVNIV09SREJJVFMgMzIKKworCisvKiBEZWZpbmVzIHRoZSBzbyBjYWxsZWQgYGhhc2hwancnIGZ1bmN0aW9uIGJ5IFAuSi4gV2VpbmJlcmdlcgorICAgW3NlZSBBaG8vU2V0aGkvVWxsbWFuLCBDT01QSUxFUlM6IFByaW5jaXBsZXMsIFRlY2huaXF1ZXMgYW5kIFRvb2xzLAorICAgMTk4NiwgMTk4NyBCZWxsIFRlbGVwaG9uZSBMYWJvcmF0b3JpZXMsIEluYy5dICAqLworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGludAoraGFzaF9zdHJpbmcgKGNvbnN0IGNoYXIgKnN0cl9wYXJhbSkKK3sKKyAgdW5zaWduZWQgbG9uZyBpbnQgaHZhbCwgZzsKKyAgY29uc3QgY2hhciAqc3RyID0gc3RyX3BhcmFtOworCisgIC8qIENvbXB1dGUgdGhlIGhhc2ggdmFsdWUgZm9yIHRoZSBnaXZlbiBzdHJpbmcuICAqLworICBodmFsID0gMDsKKyAgd2hpbGUgKCpzdHIgIT0gJ1wwJykKKyAgICB7CisgICAgICBodmFsIDw8PSA0OworICAgICAgaHZhbCArPSAodW5zaWduZWQgY2hhcikgKnN0cisrOworICAgICAgZyA9IGh2YWwgJiAoKHVuc2lnbmVkIGxvbmcgaW50KSAweGYgPDwgKEhBU0hXT1JEQklUUyAtIDQpKTsKKyAgICAgIGlmIChnICE9IDApCisJeworCSAgaHZhbCBePSBnID4+IChIQVNIV09SREJJVFMgLSA4KTsKKwkgIGh2YWwgXj0gZzsKKwl9CisgICAgfQorICByZXR1cm4gaHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2ludGwtY29tcGF0LmMgYi9lMmZzcHJvZ3MvaW50bC9pbnRsLWNvbXBhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZjlkOTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9pbnRsLWNvbXBhdC5jCkBAIC0wLDAgKzEsMTMxIEBACisvKiBpbnRsLWNvbXBhdC5jIC0gU3R1YiBmdW5jdGlvbnMgdG8gY2FsbCBnZXR0ZXh0IGZ1bmN0aW9ucyBmcm9tIEdOVSBnZXR0ZXh0CisgICBMaWJyYXJ5LgorICAgQ29weXJpZ2h0IChDKSAxOTk1LCAyMDAwLTIwMDMgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworLyogVGhpcyBmaWxlIHJlZGlyZWN0cyB0aGUgZ2V0dGV4dCBmdW5jdGlvbnMgKHdpdGhvdXQgcHJlZml4KSB0byB0aG9zZQorICAgZGVmaW5lZCBpbiB0aGUgaW5jbHVkZWQgR05VIGxpYmludGwgbGlicmFyeSAod2l0aCAibGliaW50bF8iIHByZWZpeCkuCisgICBJdCBpcyBjb21waWxlZCBpbnRvIGxpYmludGwgaW4gb3JkZXIgdG8gbWFrZSB0aGUgQU1fR05VX0dFVFRFWFQgdGVzdAorICAgb2YgZ2V0dGV4dCA8PSAwLjExLjIgd29yayB3aXRoIHRoZSBsaWJpbnRsIGxpYnJhcnkgPj0gMC4xMS4zIHdoaWNoCisgICBoYXMgdGhlIHJlZGlyZWN0aW9ucyBwcmltYXJpbHkgaW4gdGhlIDxsaWJpbnRsLmg+IGluY2x1ZGUgZmlsZS4KKyAgIEl0IGlzIGFsc28gY29tcGlsZWQgaW50byBsaWJnbnVpbnRsIHNvIHRoYXQgbGliZ251aW50bC5zbyBjYW4gYmUgdXNlZAorICAgYXMgTERfUFJFTE9BRGFibGUgbGlicmFyeSBvbiBnbGliYyBzeXN0ZW1zLCB0byBwcm92aWRlIHRoZSBleHRyYQorICAgZmVhdHVyZXMgdGhhdCB0aGUgZnVuY3Rpb25zIGluIHRoZSBsaWJjIGRvbid0IGhhdmUgKG5hbWVseSwgbG9nZ2luZykuICAqLworCisKKyN1bmRlZiBnZXR0ZXh0CisjdW5kZWYgZGdldHRleHQKKyN1bmRlZiBkY2dldHRleHQKKyN1bmRlZiBuZ2V0dGV4dAorI3VuZGVmIGRuZ2V0dGV4dAorI3VuZGVmIGRjbmdldHRleHQKKyN1bmRlZiB0ZXh0ZG9tYWluCisjdW5kZWYgYmluZHRleHRkb21haW4KKyN1bmRlZiBiaW5kX3RleHRkb21haW5fY29kZXNldAorCisKKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKKyAgIHRoZSBmdW5jdGlvbnMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgYmluYXJ5IGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHdlCisgICBkb24ndCBuZWVkIHRvIHVzZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW4gYW55IGNhc2UuICAqLworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCisjIGRlZmluZSBETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZQorIyBkZWZpbmUgRExMX0VYUE9SVEVECisjZW5kaWYKKworCitETExfRVhQT1JURUQKK2NoYXIgKgorZ2V0dGV4dCAoY29uc3QgY2hhciAqbXNnaWQpCit7CisgIHJldHVybiBsaWJpbnRsX2dldHRleHQgKG1zZ2lkKTsKK30KKworCitETExfRVhQT1JURUQKK2NoYXIgKgorZGdldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkKQoreworICByZXR1cm4gbGliaW50bF9kZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQpOworfQorCisKK0RMTF9FWFBPUlRFRAorY2hhciAqCitkY2dldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpCit7CisgIHJldHVybiBsaWJpbnRsX2RjZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQsIGNhdGVnb3J5KTsKK30KKworCitETExfRVhQT1JURUQKK2NoYXIgKgorbmdldHRleHQgKGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQoreworICByZXR1cm4gbGliaW50bF9uZ2V0dGV4dCAobXNnaWQxLCBtc2dpZDIsIG4pOworfQorCisKK0RMTF9FWFBPUlRFRAorY2hhciAqCitkbmdldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCisJICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCit7CisgIHJldHVybiBsaWJpbnRsX2RuZ2V0dGV4dCAoZG9tYWlubmFtZSwgbXNnaWQxLCBtc2dpZDIsIG4pOworfQorCisKK0RMTF9FWFBPUlRFRAorY2hhciAqCitkY25nZXR0ZXh0IChjb25zdCBjaGFyICpkb21haW5uYW1lLAorCSAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbiwKKwkgICAgaW50IGNhdGVnb3J5KQoreworICByZXR1cm4gbGliaW50bF9kY25nZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgbiwgY2F0ZWdvcnkpOworfQorCisKK0RMTF9FWFBPUlRFRAorY2hhciAqCit0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpkb21haW5uYW1lKQoreworICByZXR1cm4gbGliaW50bF90ZXh0ZG9tYWluIChkb21haW5uYW1lKTsKK30KKworCitETExfRVhQT1JURUQKK2NoYXIgKgorYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmRpcm5hbWUpCit7CisgIHJldHVybiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKTsKK30KKworCitETExfRVhQT1JURUQKK2NoYXIgKgorYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKmNvZGVzZXQpCit7CisgIHJldHVybiBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChkb21haW5uYW1lLCBjb2Rlc2V0KTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2wxMG5mbGlzdC5jIGIvZTJmc3Byb2dzL2ludGwvbDEwbmZsaXN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5M2VjYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2wxMG5mbGlzdC5jCkBAIC0wLDAgKzEsNDIyIEBACisvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3Igc3RwY3B5KCkuCisgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgZGVmaW5lIF9HTlVfU09VUkNFCTEKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9BUkdaX0gKKyMgaW5jbHVkZSA8YXJnei5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImxvYWRpbmZvLmgiCisKKy8qIE9uIHNvbWUgc3RyYW5nZSBzeXN0ZW1zIHN0aWxsIG5vIGRlZmluaXRpb24gb2YgTlVMTCBpcyBmb3VuZC4gIFNpZ2ghICAqLworI2lmbmRlZiBOVUxMCisjIGlmIGRlZmluZWQgX19TVERDX18gJiYgX19TVERDX18KKyMgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQorIyBlbHNlCisjICBkZWZpbmUgTlVMTCAwCisjIGVuZGlmCisjZW5kaWYKKworLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworCisjaWZkZWYgX0xJQkMKKy8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorICAgYmVjYXVzZSBzb21lIEFOU0kgQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworIyBpZm5kZWYgc3RwY3B5CisjICBkZWZpbmUgc3RwY3B5KGRlc3QsIHNyYykgX19zdHBjcHkoZGVzdCwgc3JjKQorIyBlbmRpZgorI2Vsc2UKKyMgaWZuZGVmIEhBVkVfU1RQQ1BZCisjZGVmaW5lIHN0cGNweShkZXN0LCBzcmMpIG15X3N0cGNweShkZXN0LCBzcmMpCitzdGF0aWMgY2hhciAqc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOworIyBlbmRpZgorI2VuZGlmCisKKy8qIFBhdGhuYW1lIHN1cHBvcnQuCisgICBJU1NMQVNIKEMpICAgICAgICAgICB0ZXN0cyB3aGV0aGVyIEMgaXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGNoYXJhY3Rlci4KKyAgIElTX0FCU09MVVRFX1BBVEgoUCkgIHRlc3RzIHdoZXRoZXIgUCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiAgSWYgaXQgaXMgbm90LAorICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGJlIGNvbmNhdGVuYXRlZCB0byBhIGRpcmVjdG9yeSBwYXRobmFtZS4KKyAqLworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXworICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCisjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQorIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCisgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAorICAgICAmJiAoUClbMV0gPT0gJzonKQorIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSAoSVNTTEFTSCAoKFApWzBdKSB8fCBIQVNfREVWSUNFIChQKSkKKyNlbHNlCisgIC8qIFVuaXggKi8KKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycpCisjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIElTU0xBU0ggKChQKVswXSkKKyNlbmRpZgorCisvKiBEZWZpbmUgZnVuY3Rpb24gd2hpY2ggYXJlIHVzdWFsbHkgbm90IGF2YWlsYWJsZS4gICovCisKKyNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9DT1VOVAorLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN0cmluZ3MgaW4gQVJHWi4gICovCitzdGF0aWMgc2l6ZV90Cithcmd6X2NvdW50X18gKGNvbnN0IGNoYXIgKmFyZ3osIHNpemVfdCBsZW4pCit7CisgIHNpemVfdCBjb3VudCA9IDA7CisgIHdoaWxlIChsZW4gPiAwKQorICAgIHsKKyAgICAgIHNpemVfdCBwYXJ0X2xlbiA9IHN0cmxlbiAoYXJneik7CisgICAgICBhcmd6ICs9IHBhcnRfbGVuICsgMTsKKyAgICAgIGxlbiAtPSBwYXJ0X2xlbiArIDE7CisgICAgICBjb3VudCsrOworICAgIH0KKyAgcmV0dXJuIGNvdW50OworfQorIyB1bmRlZiBfX2FyZ3pfY291bnQKKyMgZGVmaW5lIF9fYXJnel9jb3VudChhcmd6LCBsZW4pIGFyZ3pfY291bnRfXyAoYXJneiwgbGVuKQorI2Vsc2UKKyMgaWZkZWYgX0xJQkMKKyMgIGRlZmluZSBfX2FyZ3pfY291bnQoYXJneiwgbGVuKSBJTlRVU0UoX19hcmd6X2NvdW50KSAoYXJneiwgbGVuKQorIyBlbmRpZgorI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfQ09VTlQgKi8KKworI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX1NUUklOR0lGWQorLyogTWFrZSAnXDAnIHNlcGFyYXRlZCBhcmcgdmVjdG9yIEFSR1ogcHJpbnRhYmxlIGJ5IGNvbnZlcnRpbmcgYWxsIHRoZSAnXDAncworICAgZXhjZXB0IHRoZSBsYXN0IGludG8gdGhlIGNoYXJhY3RlciBTRVAuICAqLworc3RhdGljIHZvaWQKK2FyZ3pfc3RyaW5naWZ5X18gKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApCit7CisgIHdoaWxlIChsZW4gPiAwKQorICAgIHsKKyAgICAgIHNpemVfdCBwYXJ0X2xlbiA9IHN0cmxlbiAoYXJneik7CisgICAgICBhcmd6ICs9IHBhcnRfbGVuOworICAgICAgbGVuIC09IHBhcnRfbGVuICsgMTsKKyAgICAgIGlmIChsZW4gPiAwKQorCSphcmd6KysgPSBzZXA7CisgICAgfQorfQorIyB1bmRlZiBfX2FyZ3pfc3RyaW5naWZ5CisjIGRlZmluZSBfX2FyZ3pfc3RyaW5naWZ5KGFyZ3osIGxlbiwgc2VwKSBhcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKKyNlbHNlCisjIGlmZGVmIF9MSUJDCisjICBkZWZpbmUgX19hcmd6X3N0cmluZ2lmeShhcmd6LCBsZW4sIHNlcCkgXAorICBJTlRVU0UoX19hcmd6X3N0cmluZ2lmeSkgKGFyZ3osIGxlbiwgc2VwKQorIyBlbmRpZgorI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfU1RSSU5HSUZZICovCisKKyNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9ORVhUCitzdGF0aWMgY2hhciAqCithcmd6X25leHRfXyAoY2hhciAqYXJneiwgc2l6ZV90IGFyZ3pfbGVuLCBjb25zdCBjaGFyICplbnRyeSkKK3sKKyAgaWYgKGVudHJ5KQorICAgIHsKKyAgICAgIGlmIChlbnRyeSA8IGFyZ3ogKyBhcmd6X2xlbikKKyAgICAgICAgZW50cnkgPSBzdHJjaHIgKGVudHJ5LCAnXDAnKSArIDE7CisKKyAgICAgIHJldHVybiBlbnRyeSA+PSBhcmd6ICsgYXJnel9sZW4gPyBOVUxMIDogKGNoYXIgKikgZW50cnk7CisgICAgfQorICBlbHNlCisgICAgaWYgKGFyZ3pfbGVuID4gMCkKKyAgICAgIHJldHVybiBhcmd6OworICAgIGVsc2UKKyAgICAgIHJldHVybiAwOworfQorIyB1bmRlZiBfX2FyZ3pfbmV4dAorIyBkZWZpbmUgX19hcmd6X25leHQoYXJneiwgbGVuLCBlbnRyeSkgYXJnel9uZXh0X18gKGFyZ3osIGxlbiwgZW50cnkpCisjZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9ORVhUICovCisKKworLyogUmV0dXJuIG51bWJlciBvZiBiaXRzIHNldCBpbiBYLiAgKi8KK3N0YXRpYyBpbmxpbmUgaW50Citwb3AgKGludCB4KQoreworICAvKiBXZSBhc3N1bWUgdGhhdCBubyBtb3JlIHRoYW4gMTYgYml0cyBhcmUgdXNlZC4gICovCisgIHggPSAoKHggJiB+MHg1NTU1KSA+PiAxKSArICh4ICYgMHg1NTU1KTsKKyAgeCA9ICgoeCAmIH4weDMzMzMpID4+IDIpICsgKHggJiAweDMzMzMpOworICB4ID0gKCh4ID4+IDQpICsgeCkgJiAweDBmMGY7CisgIHggPSAoKHggPj4gOCkgKyB4KSAmIDB4ZmY7CisKKyAgcmV0dXJuIHg7Cit9CisKKworc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCitfbmxfbWFrZV9sMTBuZmxpc3QgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0LAorCQkgICAgY29uc3QgY2hhciAqZGlybGlzdCwgc2l6ZV90IGRpcmxpc3RfbGVuLAorCQkgICAgaW50IG1hc2ssIGNvbnN0IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksCisJCSAgICBjb25zdCBjaGFyICpjb2Rlc2V0LCBjb25zdCBjaGFyICpub3JtYWxpemVkX2NvZGVzZXQsCisJCSAgICBjb25zdCBjaGFyICptb2RpZmllciwgY29uc3QgY2hhciAqc3BlY2lhbCwKKwkJICAgIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLAorCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBkb19hbGxvY2F0ZSkKK3sKKyAgY2hhciAqYWJzX2ZpbGVuYW1lOworICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbGFzdHA7CisgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnJldHZhbDsKKyAgY2hhciAqY3A7CisgIHNpemVfdCBkaXJsaXN0X2NvdW50OworICBzaXplX3QgZW50cmllczsKKyAgaW50IGNudDsKKworICAvKiBJZiBMQU5HVUFHRSBjb250YWlucyBhbiBhYnNvbHV0ZSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiwgd2UgaWdub3JlCisgICAgIERJUkxJU1QuICAqLworICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAobGFuZ3VhZ2UpKQorICAgIGRpcmxpc3RfbGVuID0gMDsKKworICAvKiBBbGxvY2F0ZSByb29tIGZvciB0aGUgZnVsbCBmaWxlIG5hbWUuICAqLworICBhYnNfZmlsZW5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGRpcmxpc3RfbGVuCisJCQkJICArIHN0cmxlbiAobGFuZ3VhZ2UpCisJCQkJICArICgobWFzayAmIFRFUlJJVE9SWSkgIT0gMAorCQkJCSAgICAgPyBzdHJsZW4gKHRlcnJpdG9yeSkgKyAxIDogMCkKKwkJCQkgICsgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDAKKwkJCQkgICAgID8gc3RybGVuIChjb2Rlc2V0KSArIDEgOiAwKQorCQkJCSAgKyAoKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwCisJCQkJICAgICA/IHN0cmxlbiAobm9ybWFsaXplZF9jb2Rlc2V0KSArIDEgOiAwKQorCQkJCSAgKyAoKChtYXNrICYgWFBHX01PRElGSUVSKSAhPSAwCisJCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fQVVESUVOQ0UpICE9IDApCisJCQkJICAgICA/IHN0cmxlbiAobW9kaWZpZXIpICsgMSA6IDApCisJCQkJICArICgobWFzayAmIENFTl9TUEVDSUFMKSAhPSAwCisJCQkJICAgICA/IHN0cmxlbiAoc3BlY2lhbCkgKyAxIDogMCkKKwkJCQkgICsgKCgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCisJCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDApCisJCQkJICAgICA/ICgxICsgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKKwkJCQkJICAgICA/IHN0cmxlbiAoc3BvbnNvcikgOiAwKQorCQkJCQkrICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMAorCQkJCQkgICA/IHN0cmxlbiAocmV2aXNpb24pICsgMSA6IDApKSA6IDApCisJCQkJICArIDEgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpOworCisgIGlmIChhYnNfZmlsZW5hbWUgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKworICAvKiBDb25zdHJ1Y3QgZmlsZSBuYW1lLiAgKi8KKyAgY3AgPSBhYnNfZmlsZW5hbWU7CisgIGlmIChkaXJsaXN0X2xlbiA+IDApCisgICAgeworICAgICAgbWVtY3B5IChjcCwgZGlybGlzdCwgZGlybGlzdF9sZW4pOworICAgICAgX19hcmd6X3N0cmluZ2lmeSAoY3AsIGRpcmxpc3RfbGVuLCBQQVRIX1NFUEFSQVRPUik7CisgICAgICBjcCArPSBkaXJsaXN0X2xlbjsKKyAgICAgIGNwWy0xXSA9ICcvJzsKKyAgICB9CisKKyAgY3AgPSBzdHBjcHkgKGNwLCBsYW5ndWFnZSk7CisKKyAgaWYgKChtYXNrICYgVEVSUklUT1JZKSAhPSAwKQorICAgIHsKKyAgICAgICpjcCsrID0gJ18nOworICAgICAgY3AgPSBzdHBjcHkgKGNwLCB0ZXJyaXRvcnkpOworICAgIH0KKyAgaWYgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDApCisgICAgeworICAgICAgKmNwKysgPSAnLic7CisgICAgICBjcCA9IHN0cGNweSAoY3AsIGNvZGVzZXQpOworICAgIH0KKyAgaWYgKChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMCkKKyAgICB7CisgICAgICAqY3ArKyA9ICcuJzsKKyAgICAgIGNwID0gc3RwY3B5IChjcCwgbm9ybWFsaXplZF9jb2Rlc2V0KTsKKyAgICB9CisgIGlmICgobWFzayAmIChYUEdfTU9ESUZJRVIgfCBDRU5fQVVESUVOQ0UpKSAhPSAwKQorICAgIHsKKyAgICAgIC8qIFRoaXMgY29tcG9uZW50IGNhbiBiZSBwYXJ0IG9mIGJvdGggc3ludGFjZXMgYnV0IGhhcyBkaWZmZXJlbnQKKwkgbGVhZGluZyBjaGFyYWN0ZXJzLiAgRm9yIENFTiB3ZSB1c2UgYCsnLCBlbHNlIGBAJy4gICovCisgICAgICAqY3ArKyA9IChtYXNrICYgQ0VOX0FVRElFTkNFKSAhPSAwID8gJysnIDogJ0AnOworICAgICAgY3AgPSBzdHBjcHkgKGNwLCBtb2RpZmllcik7CisgICAgfQorICBpZiAoKG1hc2sgJiBDRU5fU1BFQ0lBTCkgIT0gMCkKKyAgICB7CisgICAgICAqY3ArKyA9ICcrJzsKKyAgICAgIGNwID0gc3RwY3B5IChjcCwgc3BlY2lhbCk7CisgICAgfQorICBpZiAoKG1hc2sgJiAoQ0VOX1NQT05TT1IgfCBDRU5fUkVWSVNJT04pKSAhPSAwKQorICAgIHsKKyAgICAgICpjcCsrID0gJywnOworICAgICAgaWYgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDApCisJY3AgPSBzdHBjcHkgKGNwLCBzcG9uc29yKTsKKyAgICAgIGlmICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMCkKKwl7CisJICAqY3ArKyA9ICdfJzsKKwkgIGNwID0gc3RwY3B5IChjcCwgcmV2aXNpb24pOworCX0KKyAgICB9CisKKyAgKmNwKysgPSAnLyc7CisgIHN0cGNweSAoY3AsIGZpbGVuYW1lKTsKKworICAvKiBMb29rIGluIGxpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucyB3aGV0aGVyIGl0IGlzIGFscmVhZHkKKyAgICAgYXZhaWxhYmxlLiAgKi8KKyAgbGFzdHAgPSBsMTBuZmlsZV9saXN0OworICBmb3IgKHJldHZhbCA9ICpsMTBuZmlsZV9saXN0OyByZXR2YWwgIT0gTlVMTDsgcmV0dmFsID0gcmV0dmFsLT5uZXh0KQorICAgIGlmIChyZXR2YWwtPmZpbGVuYW1lICE9IE5VTEwpCisgICAgICB7CisJaW50IGNvbXBhcmUgPSBzdHJjbXAgKHJldHZhbC0+ZmlsZW5hbWUsIGFic19maWxlbmFtZSk7CisJaWYgKGNvbXBhcmUgPT0gMCkKKwkgIC8qIFdlIGZvdW5kIGl0ISAgKi8KKwkgIGJyZWFrOworCWlmIChjb21wYXJlIDwgMCkKKwkgIHsKKwkgICAgLyogSXQncyBub3QgaW4gdGhlIGxpc3QuICAqLworCSAgICByZXR2YWwgPSBOVUxMOworCSAgICBicmVhazsKKwkgIH0KKworCWxhc3RwID0gJnJldHZhbC0+bmV4dDsKKyAgICAgIH0KKworICBpZiAocmV0dmFsICE9IE5VTEwgfHwgZG9fYWxsb2NhdGUgPT0gMCkKKyAgICB7CisgICAgICBmcmVlIChhYnNfZmlsZW5hbWUpOworICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICB9CisKKyAgZGlybGlzdF9jb3VudCA9IChkaXJsaXN0X2xlbiA+IDAgPyBfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSA6IDEpOworCisgIC8qIEFsbG9jYXRlIGEgbmV3IGxvYWRlZF9sMTBuZmlsZS4gICovCisgIHJldHZhbCA9CisgICAgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikKKyAgICBtYWxsb2MgKHNpemVvZiAoKnJldHZhbCkKKwkgICAgKyAoKChkaXJsaXN0X2NvdW50IDw8IHBvcCAobWFzaykpICsgKGRpcmxpc3RfY291bnQgPiAxID8gMSA6IDApKQorCSAgICAgICAqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOworICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0dmFsLT5maWxlbmFtZSA9IGFic19maWxlbmFtZTsKKworICAvKiBXZSBzZXQgcmV0dmFsLT5kYXRhIHRvIE5VTEwgaGVyZTsgaXQgaXMgZmlsbGVkIGluIGxhdGVyLgorICAgICBTZXR0aW5nIHJldHZhbC0+ZGVjaWRlZCB0byAxIGhlcmUgbWVhbnMgdGhhdCByZXR2YWwgZG9lcyBub3QKKyAgICAgY29ycmVzcG9uZCB0byBhIHJlYWwgZmlsZSAoZGlybGlzdF9jb3VudCA+IDEpIG9yIGlzIG5vdCB3b3J0aAorICAgICBsb29raW5nIHVwIChpZiBhbiB1bm5vcm1hbGl6ZWQgY29kZXNldCB3YXMgc3BlY2lmaWVkKS4gICovCisgIHJldHZhbC0+ZGVjaWRlZCA9IChkaXJsaXN0X2NvdW50ID4gMQorCQkgICAgIHx8ICgobWFzayAmIFhQR19DT0RFU0VUKSAhPSAwCisJCQkgJiYgKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwKSk7CisgIHJldHZhbC0+ZGF0YSA9IE5VTEw7CisKKyAgcmV0dmFsLT5uZXh0ID0gKmxhc3RwOworICAqbGFzdHAgPSByZXR2YWw7CisKKyAgZW50cmllcyA9IDA7CisgIC8qIFJlY3Vyc2UgdG8gZmlsbCB0aGUgaW5oZXJpdGFuY2UgbGlzdCBvZiBSRVRWQUwuCisgICAgIElmIHRoZSBESVJMSVNUIGlzIGEgcmVhbCBsaXN0IChpLmUuIERJUkxJU1RfQ09VTlQgPiAxKSwgdGhlIFJFVFZBTAorICAgICBlbnRyeSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgcmVhbCBmaWxlOyByZXR2YWwtPmZpbGVuYW1lIGNvbnRhaW5zCisgICAgIGNvbG9ucy4gIEluIHRoaXMgY2FzZSB3ZSBsb29wIGFjcm9zcyBhbGwgZWxlbWVudHMgb2YgRElSTElTVCBhbmQKKyAgICAgYWNyb3NzIGFsbCBiaXQgcGF0dGVybnMgZG9taW5hdGVkIGJ5IE1BU0suCisgICAgIElmIHRoZSBESVJMSVNUIGlzIGEgc2luZ2xlIGRpcmVjdG9yeSBvciBlbnRpcmVseSByZWR1bmRhbnQgKGkuZS4KKyAgICAgRElSTElTVF9DT1VOVCA9PSAxKSwgd2UgbG9vcCBhY3Jvc3MgYWxsIGJpdCBwYXR0ZXJucyBkb21pbmF0ZWQgYnkKKyAgICAgTUFTSywgZXhjbHVkaW5nIE1BU0sgaXRzZWxmLgorICAgICBJbiBlaXRoZXIgY2FzZSwgd2UgbG9vcCBkb3duIGZyb20gTUFTSyB0byAwLiAgVGhpcyBoYXMgdGhlIGVmZmVjdAorICAgICB0aGF0IHRoZSBleHRyYSBiaXRzIGluIHRoZSBsb2NhbGUgbmFtZSBhcmUgZHJvcHBlZCBpbiB0aGlzIG9yZGVyOgorICAgICBmaXJzdCB0aGUgbW9kaWZpZXIsIHRoZW4gdGhlIHRlcnJpdG9yeSwgdGhlbiB0aGUgY29kZXNldCwgdGhlbiB0aGUKKyAgICAgbm9ybWFsaXplZF9jb2Rlc2V0LiAgKi8KKyAgZm9yIChjbnQgPSBkaXJsaXN0X2NvdW50ID4gMSA/IG1hc2sgOiBtYXNrIC0gMTsgY250ID49IDA7IC0tY250KQorICAgIGlmICgoY250ICYgfm1hc2spID09IDAKKwkmJiAoKGNudCAmIENFTl9TUEVDSUZJQykgPT0gMCB8fCAoY250ICYgWFBHX1NQRUNJRklDKSA9PSAwKQorCSYmICgoY250ICYgWFBHX0NPREVTRVQpID09IDAgfHwgKGNudCAmIFhQR19OT1JNX0NPREVTRVQpID09IDApKQorICAgICAgeworCWlmIChkaXJsaXN0X2NvdW50ID4gMSkKKwkgIHsKKwkgICAgLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBvZiB0aGUgRElSTElTVC4gICovCisJICAgIGNoYXIgKmRpciA9IE5VTEw7CisKKwkgICAgd2hpbGUgKChkaXIgPSBfX2FyZ3pfbmV4dCAoKGNoYXIgKikgZGlybGlzdCwgZGlybGlzdF9sZW4sIGRpcikpCisJCSAgICE9IE5VTEwpCisJICAgICAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQorCQk9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlyLCBzdHJsZW4gKGRpcikgKyAxLAorCQkJCSAgICAgIGNudCwgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKKwkJCQkgICAgICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAorCQkJCSAgICAgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgMSk7CisJICB9CisJZWxzZQorCSAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllcysrXQorCSAgICA9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlybGlzdCwgZGlybGlzdF9sZW4sCisJCQkJICBjbnQsIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGNvZGVzZXQsCisJCQkJICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAorCQkJCSAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCAxKTsKKyAgICAgIH0KKyAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllc10gPSBOVUxMOworCisgIHJldHVybiByZXR2YWw7Cit9CisKKy8qIE5vcm1hbGl6ZSBjb2Rlc2V0IG5hbWUuICBUaGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIGNvZGVzZXQKKyAgIG5hbWVzLiAgTm9ybWFsaXphdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiB0aGUgY29tbW9uCisgICBuYW1lcy4gIFRoZSByZXR1cm4gdmFsdWUgaXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFuZCBoYXMgdG8gYmUKKyAgIGZyZWVkIGJ5IHRoZSBjYWxsZXIuICAqLworY29uc3QgY2hhciAqCitfbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmNvZGVzZXQsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgaW50IGxlbiA9IDA7CisgIGludCBvbmx5X2RpZ2l0ID0gMTsKKyAgY2hhciAqcmV0dmFsOworICBjaGFyICp3cDsKKyAgc2l6ZV90IGNudDsKKworICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKKyAgICBpZiAoaXNhbG51bSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCisgICAgICB7CisJKytsZW47CisKKwlpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSkpCisJICBvbmx5X2RpZ2l0ID0gMDsKKyAgICAgIH0KKworICByZXR2YWwgPSAoY2hhciAqKSBtYWxsb2MgKChvbmx5X2RpZ2l0ID8gMyA6IDApICsgbGVuICsgMSk7CisKKyAgaWYgKHJldHZhbCAhPSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChvbmx5X2RpZ2l0KQorCXdwID0gc3RwY3B5IChyZXR2YWwsICJpc28iKTsKKyAgICAgIGVsc2UKKwl3cCA9IHJldHZhbDsKKworICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCisJaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQorCSAgKndwKysgPSB0b2xvd2VyICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKTsKKwllbHNlIGlmIChpc2RpZ2l0ICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKSkKKwkgICp3cCsrID0gY29kZXNldFtjbnRdOworCisgICAgICAqd3AgPSAnXDAnOworICAgIH0KKworICByZXR1cm4gKGNvbnN0IGNoYXIgKikgcmV0dmFsOworfQorCisKKy8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworCisvKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQorICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKKyAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCisgICB0byBiZSBkZWZpbmVkLiAgKi8KKyNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCitzdGF0aWMgY2hhciAqCitzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKK3sKKyAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQorICAgIC8qIERvIG5vdGhpbmcuICovIDsKKyAgcmV0dXJuIGRlc3QgLSAxOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9saWJnZXR0ZXh0LmggYi9lMmZzcHJvZ3MvaW50bC9saWJnZXR0ZXh0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5Mjk2MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2xpYmdldHRleHQuaApAQCAtMCwwICsxLDE4MiBAQAorLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCisgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisKKy8qIEJlY2F1c2Ugb24gc29tZSBzeXN0ZW1zIChlLmcuIFNvbGFyaXMpIHdlIHNvbWV0aW1lcyBoYXZlIHRvIGluY2x1ZGUKKyAgIHRoZSBzeXN0ZW1zIGxpYmludGwuaCBhcyB3ZWxsIGFzIHRoaXMgZmlsZSB3ZSBoYXZlIG1vcmUgY29tcGxleAorICAgaW5jbHVkZSBwcm90ZWN0aW9uIGFib3ZlLiAgQnV0IHRoZSBzeXN0ZW1zIGhlYWRlciBtaWdodCBwZXJoYXBzIGFsc28KKyAgIGRlZmluZSBfTElCSU5UTF9IIGFuZCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBwcm90ZWN0IHRoZSBkZWZpbml0aW9uIGhlcmUuICAqLworCisjaWYgIWRlZmluZWQgX0xJQklOVExfSCB8fCAhZGVmaW5lZCBfTElCR0VUVEVYVF9ICisjaWZuZGVmIF9MSUJJTlRMX0gKKyMgZGVmaW5lIF9MSUJJTlRMX0gJMQorI2VuZGlmCisjZGVmaW5lIF9MSUJHRVRURVhUX0gJMQorCisvKiBXZSBkZWZpbmUgYW4gYWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIHRoZSBHTlUKKyAgIGltcGxlbWVudGF0aW9uIG9mIGdldHRleHQuICAqLworI2RlZmluZSBfX1VTRV9HTlVfR0VUVEVYVCAxCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmIEhBVkVfTE9DQUxFX0gKKyMgaW5jbHVkZSA8bG9jYWxlLmg+CisjZW5kaWYKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworI2lmbmRlZiBQQVJBTVMKKyMgaWYgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cworIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCisjIGVsc2UKKyMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIE5VTEwKKyMgaWYgIWRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfX0dOVUNfXworIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCisjIGVsc2UKKyMgIGRlZmluZSBOVUxMICgwKQorIyBlbmRpZgorI2VuZGlmCisKKyNpZiAhSEFWRV9MQ19NRVNTQUdFUworLyogVGhpcyB2YWx1ZSBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGdldHRleHQoKSBhbmQgZGdldHRleHQoKQorICAgZnVuY3Rpb24uICBCdXQgc29tZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSB0aGlzIGRlZmluZWQuICBEZWZpbmUgaXQKKyAgIHRvIGEgZGVmYXVsdCB2YWx1ZS4gICovCisjIGRlZmluZSBMQ19NRVNTQUdFUyAoLTEpCisjZW5kaWYKKworCisvKiBEZWNsYXJhdGlvbnMgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuICBEZXJpdmVkIGZyb20KKyAgIEppbSBNZXllcmluZydzIGxpYmludGwuaC4gICovCitzdHJ1Y3QgX21zZ19lbnQKK3sKKyAgY29uc3QgY2hhciAqX21zZzsKKyAgaW50IF9tc2dfbnVtYmVyOworfTsKKworCisjaWYgSEFWRV9DQVRHRVRTCisvKiBUaGVzZSB0d28gdmFyaWFibGVzIGFyZSBkZWZpbmVkIGluIHRoZSBhdXRvbWF0aWNhbGx5IGJ5IHBvLXRvLXRibC5zZWQKKyAgIGdlbmVyYXRlZCBmaWxlIGBjYXQtaWQtdGJsLmMnLiAgKi8KK2V4dGVybiBjb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXTsKK2V4dGVybiBpbnQgX21zZ190YmxfbGVuZ3RoOworI2VuZGlmCisKKworLyogRm9yIGF1dG9tYXRpY2FsIGV4dHJhY3Rpb24gb2YgbWVzc2FnZXMgc29tZXRpbWVzIG5vIHJlYWwKKyAgIHRyYW5zbGF0aW9uIGlzIG5lZWRlZC4gIEluc3RlYWQgdGhlIHN0cmluZyBpdHNlbGYgaXMgdGhlIHJlc3VsdC4gICovCisjZGVmaW5lIGdldHRleHRfbm9vcChTdHIpIChTdHIpCisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50CisgICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAorICAgdGV4dCkuICAqLworZXh0ZXJuIGNoYXIgKmdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19tc2dpZCkpOworZXh0ZXJuIGNoYXIgKmdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7CisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KK2V4dGVybiBjaGFyICpkZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKK2V4dGVybiBjaGFyICpkZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkgY29uc3QgY2hhciAqX19tc2dpZCkpOworCisvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKKyAgIGxvY2FsZS4gICovCitleHRlcm4gY2hhciAqZGNnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKKwkJCQlpbnQgX19jYXRlZ29yeSkpOworZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkgIGNvbnN0IGNoYXIgKl9fbXNnaWQsIGludCBfX2NhdGVnb3J5KSk7CisKKworLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCisgICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgorICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCitleHRlcm4gY2hhciAqdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKK2V4dGVybiBjaGFyICp0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7CisKKy8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLworZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkpOworZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorCQkJCSAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKKworI2lmIEVOQUJMRV9OTFMKKworLyogU29sYXJpcyAyLjMgaGFzIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGJ1dCBkY2dldHRleHQgaXMgbWlzc2luZy4KKyAgIFNvIHdlIG9taXQgdGhpcyBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLiAgQlRXLCBTb2xhcmlzIDIuNAorICAgaGFzIGRjZ2V0dGV4dC4gICovCisjIGlmICFIQVZFX0NBVEdFVFMgJiYgKCFIQVZFX0dFVFRFWFQgfHwgSEFWRV9EQ0dFVFRFWFQpCisKKyMgIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKQkJCQkJCSAgICAgIFwKKyAgICAgZGdldHRleHQgKE5VTEwsIE1zZ2lkKQorCisjICBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpCQkJCQkgICAgICBcCisgICAgIGRjZ2V0dGV4dCAoRG9tYWlubmFtZSwgTXNnaWQsIExDX01FU1NBR0VTKQorCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gNworLyogVGhpcyBnbG9iYWwgdmFyaWFibGUgaXMgZGVmaW5lZCBpbiBsb2FkbXNnY2F0LmMuICBXZSBuZWVkIGEgc2lnbiwKKyAgIHdoZXRoZXIgYSBuZXcgY2F0YWxvZyB3YXMgbG9hZGVkLCB3aGljaCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFsbAorICAgdHJhbnNsYXRpb25zLiAgKi8KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKKworIyAgIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KQkJCSAgICAgIFwKKyAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAorICAgKHsJCQkJCQkJCQkgICAgICBcCisgICAgIGNoYXIgKl9fcmVzdWx0OwkJCQkJCQkgICAgICBcCisgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCAoTXNnaWQpKQkJCQkJICAgICAgXAorICAgICAgIHsJCQkJCQkJCSAgICAgIFwKKwkgc3RhdGljIGNoYXIgKl9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKKwkgc3RhdGljIGludCBfX2NhdGFsb2dfY291bnRlcl9fOwkJCQkgICAgICBcCisJIGlmICghIF9fdHJhbnNsYXRpb25fXyB8fCBfX2NhdGFsb2dfY291bnRlcl9fICE9IF9ubF9tc2dfY2F0X2NudHIpICAgIFwKKwkgICB7CQkJCQkJCQkgICAgICBcCisJICAgICBfX3RyYW5zbGF0aW9uX18gPQkJCQkJCSAgICAgIFwKKwkgICAgICAgZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCisJICAgICBfX2NhdGFsb2dfY291bnRlcl9fID0gX25sX21zZ19jYXRfY250cjsJCQkgICAgICBcCisJICAgfQkJCQkJCQkJICAgICAgXAorCSBfX3Jlc3VsdCA9IF9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKKyAgICAgICB9CQkJCQkJCQkgICAgICBcCisgICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKKyAgICAgICBfX3Jlc3VsdCA9IGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAorICAgICBfX3Jlc3VsdDsJCQkJCQkJCSAgICAgIFwKKyAgICB9KSkKKyMgIGVuZGlmCisjIGVuZGlmCisKKyNlbHNlCisKKyMgZGVmaW5lIGdldHRleHQoTXNnaWQpIChNc2dpZCkKKyMgZGVmaW5lIGRnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkKSAoTXNnaWQpCisjIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KSAoTXNnaWQpCisjIGRlZmluZSB0ZXh0ZG9tYWluKERvbWFpbm5hbWUpICgoY2hhciAqKSBEb21haW5uYW1lKQorIyBkZWZpbmUgYmluZHRleHRkb21haW4oRG9tYWlubmFtZSwgRGlybmFtZSkgKChjaGFyICopIERpcm5hbWUpCisKKyNlbmRpZgorCisvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9saWJnbnVpbnRsLmguaW4gYi9lMmZzcHJvZ3MvaW50bC9saWJnbnVpbnRsLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JlN2ViOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2xpYmdudWludGwuaC5pbgpAQCAtMCwwICsxLDM4MyBAQAorLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfTElCSU5UTF9ICisjZGVmaW5lIF9MSUJJTlRMX0gJMQorCisjaW5jbHVkZSA8bG9jYWxlLmg+CisKKy8qIFRoZSBMQ19NRVNTQUdFUyBsb2NhbGUgY2F0ZWdvcnkgaXMgdGhlIGNhdGVnb3J5IHVzZWQgYnkgdGhlIGZ1bmN0aW9ucworICAgZ2V0dGV4dCgpIGFuZCBkZ2V0dGV4dCgpLiAgSXQgaXMgc3BlY2lmaWVkIGluIFBPU0lYLCBidXQgbm90IGluIEFOU0kgQy4KKyAgIE9uIHN5c3RlbXMgdGhhdCBkb24ndCBkZWZpbmUgaXQsIHVzZSBhbiBhcmJpdHJhcnkgdmFsdWUgaW5zdGVhZC4KKyAgIE9uIFNvbGFyaXMsIDxsb2NhbGUuaD4gZGVmaW5lcyBfX0xPQ0FMRV9IIChvciBfTE9DQUxFX0ggaW4gU29sYXJpcyAyLjUpCisgICB0aGVuIGluY2x1ZGVzIDxsaWJpbnRsLmg+IChpLmUuIHRoaXMgZmlsZSEpIGFuZCB0aGVuIG9ubHkgZGVmaW5lcworICAgTENfTUVTU0FHRVMuICBUbyBhdm9pZCBhIHJlZGVmaW5pdGlvbiB3YXJuaW5nLCBkb24ndCBkZWZpbmUgTENfTUVTU0FHRVMKKyAgIGluIHRoaXMgY2FzZS4gICovCisjaWYgIWRlZmluZWQgTENfTUVTU0FHRVMgJiYgIShkZWZpbmVkIF9fTE9DQUxFX0ggfHwgKGRlZmluZWQgX0xPQ0FMRV9IICYmIGRlZmluZWQgX19zdW4pKQorIyBkZWZpbmUgTENfTUVTU0FHRVMgMTcyOQorI2VuZGlmCisKKy8qIFdlIGRlZmluZSBhbiBhZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgdGhlIEdOVQorICAgaW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dC4gICovCisjZGVmaW5lIF9fVVNFX0dOVV9HRVRURVhUIDEKKworLyogUHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VwcG9ydGVkIGZpbGUgZm9ybWF0cy4gIFJldHVybnMgdGhlCisgICBtYXhpbXVtIG1pbm9yIHJldmlzaW9uIG51bWJlciBzdXBwb3J0ZWQgZm9yIGEgZ2l2ZW4gbWFqb3IgcmV2aXNpb24uICAqLworI2RlZmluZSBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTihtYWpvcikgXAorICAoKG1ham9yKSA9PSAwID8gMSA6IC0xKQorCisvKiBSZXNvbHZlIGEgcGxhdGZvcm0gc3BlY2lmaWMgY29uZmxpY3Qgb24gREpHUFAuICBHTlUgZ2V0dGV4dCB0YWtlcworICAgcHJlY2VkZW5jZSBvdmVyIF9jb25pb19nZXR0ZXh0LiAgKi8KKyNpZmRlZiBfX0RKR1BQX18KKyMgdW5kZWYgZ2V0dGV4dAorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisvKiBXZSByZWRpcmVjdCB0aGUgZnVuY3Rpb25zIHRvIHRob3NlIHByZWZpeGVkIHdpdGggImxpYmludGxfIi4gIFRoaXMgaXMKKyAgIG5lY2Vzc2FyeSwgYmVjYXVzZSBzb21lIHN5c3RlbXMgZGVmaW5lIGdldHRleHQvdGV4dGRvbWFpbi8uLi4gaW4gdGhlIEMKKyAgIGxpYnJhcnkgKG5hbWVseSwgU29sYXJpcyAyLjQgYW5kIG5ld2VyLCBhbmQgR05VIGxpYmMgMi4wIGFuZCBuZXdlcikuCisgICBJZiB3ZSB1c2VkIHRoZSB1bnByZWZpeGVkIG5hbWVzLCB0aGVyZSB3b3VsZCBiZSBjYXNlcyB3aGVyZSB0aGUKKyAgIGRlZmluaXRpb24gaW4gdGhlIEMgbGlicmFyeSB3b3VsZCBvdmVycmlkZSB0aGUgb25lIGluIHRoZSBsaWJpbnRsLnNvCisgICBzaGFyZWQgbGlicmFyeS4gIFJlY2FsbCB0aGF0IG9uIEVMRiBzeXN0ZW1zLCB0aGUgc3ltYm9scyBhcmUgbG9va2VkCisgICB1cCBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgorICAgICAxLiBpbiB0aGUgZXhlY3V0YWJsZSwKKyAgICAgMi4gaW4gdGhlIHNoYXJlZCBsaWJyYXJpZXMgc3BlY2lmaWVkIG9uIHRoZSBsaW5rIGNvbW1hbmQgbGluZSwgaW4gb3JkZXIsCisgICAgIDMuIGluIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJpZXMgc3BlY2lmaWVkIG9uIHRoZSBsaW5rCisgICAgICAgIGNvbW1hbmQgbGluZSwKKyAgICAgNC4gaW4gdGhlIGRsb3BlbigpZWQgc2hhcmVkIGxpYnJhcmllcywgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZQorICAgICAgICBkbG9wZW4oKWVkLgorICAgVGhlIGRlZmluaXRpb24gaW4gdGhlIEMgbGlicmFyeSB3b3VsZCBvdmVycmlkZSB0aGUgb25lIGluIGxpYmludGwuc28gaWYKKyAgIGVpdGhlcgorICAgICAqIC1sYyBpcyBnaXZlbiBvbiB0aGUgbGluayBjb21tYW5kIGxpbmUgYW5kIC1saW50bCBpc24ndCwgb3IKKyAgICAgKiAtbGMgaXMgZ2l2ZW4gb24gdGhlIGxpbmsgY29tbWFuZCBsaW5lIGJlZm9yZSAtbGludGwsIG9yCisgICAgICogbGliaW50bC5zbyBpcyBhIGRlcGVuZGVuY3kgb2YgYSBkbG9wZW4oKWVkIHNoYXJlZCBsaWJyYXJ5IGJ1dCBub3QKKyAgICAgICBsaW5rZWQgdG8gdGhlIGV4ZWN1dGFibGUgYXQgbGluayB0aW1lLgorICAgU2luY2UgU29sYXJpcyBnZXR0ZXh0KCkgYmVoYXZlcyBkaWZmZXJlbnRseSB0aGFuIEdOVSBnZXR0ZXh0KCksIHRoaXMKKyAgIHdvdWxkIGJlIHVuYWNjZXB0YWJsZS4KKworICAgVGhlIHJlZGlyZWN0aW9uIGhhcHBlbnMgYnkgZGVmYXVsdCB0aHJvdWdoIG1hY3JvcyBpbiBDLCBzbyB0aGF0ICZnZXR0ZXh0CisgICBpcyBpbmRlcGVuZGVudCBvZiB0aGUgY29tcGlsYXRpb24gdW5pdCwgYnV0IHRocm91Z2ggaW5saW5lIGZ1bmN0aW9ucyBpbgorICAgQysrLCBpbiBvcmRlciBub3QgdG8gaW50ZXJmZXJlIHdpdGggdGhlIG5hbWUgbWFuZ2xpbmcgb2YgY2xhc3MgZmllbGRzIG9yCisgICBjbGFzcyBtZXRob2RzIGNhbGxlZCAnZ2V0dGV4dCcuICAqLworCisvKiBUaGUgdXNlciBjYW4gZGVmaW5lIF9JTlRMX1JFRElSRUNUX0lOTElORSBvciBfSU5UTF9SRURJUkVDVF9NQUNST1MuCisgICBJZiBoZSBkb2Vzbid0LCB3ZSBjaG9vc2UgdGhlIG1ldGhvZC4gIEEgdGhpcmQgcG9zc2libGUgbWV0aG9kIGlzCisgICBfSU5UTF9SRURJUkVDVF9BU00sIHN1cHBvcnRlZCBvbmx5IGJ5IEdDQy4gICovCisjaWYgIShkZWZpbmVkIF9JTlRMX1JFRElSRUNUX0lOTElORSB8fCBkZWZpbmVkIF9JTlRMX1JFRElSRUNUX01BQ1JPUykKKyMgaWYgX19HTlVDX18gPj0gMiAmJiAhZGVmaW5lZCBfX0FQUExFX0NDX18gJiYgIWRlZmluZWQgX19NSU5HVzMyX18gJiYgIShfX0dOVUNfXyA9PSAyICYmIGRlZmluZWQgX0FJWCkgJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cykKKyMgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9BU00KKyMgZWxzZQorIyAgaWZkZWYgX19jcGx1c3BsdXMKKyMgICBkZWZpbmUgX0lOVExfUkVESVJFQ1RfSU5MSU5FCisjICBlbHNlCisjICAgZGVmaW5lIF9JTlRMX1JFRElSRUNUX01BQ1JPUworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorLyogQXV4aWxpYXJ5IG1hY3Jvcy4gICovCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfQVNNCisjIGRlZmluZSBfSU5UTF9BU00oY25hbWUpIF9fYXNtX18gKF9JTlRMX0FTTU5BTUUgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgI2NuYW1lKSkKKyMgZGVmaW5lIF9JTlRMX0FTTU5BTUUocHJlZml4LGNuYW1lc3RyaW5nKSBfSU5UTF9TVFJJTkdJRlkgKHByZWZpeCkgY25hbWVzdHJpbmcKKyMgZGVmaW5lIF9JTlRMX1NUUklOR0lGWShwcmVmaXgpICNwcmVmaXgKKyNlbHNlCisjIGRlZmluZSBfSU5UTF9BU00oY25hbWUpCisjZW5kaWYKKworLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKyAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0CisgICB0ZXh0KS4gICovCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCitleHRlcm4gY2hhciAqbGliaW50bF9nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKTsKK3N0YXRpYyBpbmxpbmUgY2hhciAqZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCkKK3sKKyAgcmV0dXJuIGxpYmludGxfZ2V0dGV4dCAoX19tc2dpZCk7Cit9CisjZWxzZQorI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUworIyBkZWZpbmUgZ2V0dGV4dCBsaWJpbnRsX2dldHRleHQKKyNlbmRpZgorZXh0ZXJuIGNoYXIgKmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQpCisgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2dldHRleHQpOworI2VuZGlmCisKKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKK2V4dGVybiBjaGFyICpsaWJpbnRsX2RnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpOworc3RhdGljIGlubGluZSBjaGFyICpkZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKQoreworICByZXR1cm4gbGliaW50bF9kZ2V0dGV4dCAoX19kb21haW5uYW1lLCBfX21zZ2lkKTsKK30KKyNlbHNlCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCisjIGRlZmluZSBkZ2V0dGV4dCBsaWJpbnRsX2RnZXR0ZXh0CisjZW5kaWYKK2V4dGVybiBjaGFyICpkZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKQorICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kZ2V0dGV4dCk7CisjZW5kaWYKKworLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCisgICBsb2NhbGUuICAqLworI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQorZXh0ZXJuIGNoYXIgKmxpYmludGxfZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCisJCQkJaW50IF9fY2F0ZWdvcnkpOworc3RhdGljIGlubGluZSBjaGFyICpkY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKKwkJCSAgICAgICBpbnQgX19jYXRlZ29yeSkKK3sKKyAgcmV0dXJuIGxpYmludGxfZGNnZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQsIF9fY2F0ZWdvcnkpOworfQorI2Vsc2UKKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKKyMgZGVmaW5lIGRjZ2V0dGV4dCBsaWJpbnRsX2RjZ2V0dGV4dAorI2VuZGlmCitleHRlcm4gY2hhciAqZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCisJCQlpbnQgX19jYXRlZ29yeSkKKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZGNnZXR0ZXh0KTsKKyNlbmRpZgorCisKKy8qIFNpbWlsYXIgdG8gYGdldHRleHQnIGJ1dCBzZWxlY3QgdGhlIHBsdXJhbCBmb3JtIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICBudW1iZXIgTi4gICovCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCitleHRlcm4gY2hhciAqbGliaW50bF9uZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbik7CitzdGF0aWMgaW5saW5lIGNoYXIgKm5nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCisJCQkgICAgICB1bnNpZ25lZCBsb25nIGludCBfX24pCit7CisgIHJldHVybiBsaWJpbnRsX25nZXR0ZXh0IChfX21zZ2lkMSwgX19tc2dpZDIsIF9fbik7Cit9CisjZWxzZQorI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUworIyBkZWZpbmUgbmdldHRleHQgbGliaW50bF9uZ2V0dGV4dAorI2VuZGlmCitleHRlcm4gY2hhciAqbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKKwkJICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbikKKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfbmdldHRleHQpOworI2VuZGlmCisKKy8qIFNpbWlsYXIgdG8gYGRnZXR0ZXh0JyBidXQgc2VsZWN0IHRoZSBwbHVyYWwgZm9ybSBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgbnVtYmVyIE4uICAqLworI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQorZXh0ZXJuIGNoYXIgKmxpYmludGxfZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQxLAorCQkJCWNvbnN0IGNoYXIgKl9fbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBfX24pOworc3RhdGljIGlubGluZSBjaGFyICpkbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZDEsCisJCQkgICAgICAgY29uc3QgY2hhciAqX19tc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IF9fbikKK3sKKyAgcmV0dXJuIGxpYmludGxfZG5nZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQxLCBfX21zZ2lkMiwgX19uKTsKK30KKyNlbHNlCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCisjIGRlZmluZSBkbmdldHRleHQgbGliaW50bF9kbmdldHRleHQKKyNlbmRpZgorZXh0ZXJuIGNoYXIgKmRuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorCQkJY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJdW5zaWduZWQgbG9uZyBpbnQgX19uKQorICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kbmdldHRleHQpOworI2VuZGlmCisKKy8qIFNpbWlsYXIgdG8gYGRjZ2V0dGV4dCcgYnV0IHNlbGVjdCB0aGUgcGx1cmFsIGZvcm0gY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIG51bWJlciBOLiAgKi8KKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKK2V4dGVybiBjaGFyICpsaWJpbnRsX2RjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAorCQkJCSB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KTsKK3N0YXRpYyBpbmxpbmUgY2hhciAqZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorCQkJCWNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKKwkJCQl1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KQoreworICByZXR1cm4gbGliaW50bF9kY25nZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQxLCBfX21zZ2lkMiwgX19uLCBfX2NhdGVnb3J5KTsKK30KKyNlbHNlCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCisjIGRlZmluZSBkY25nZXR0ZXh0IGxpYmludGxfZGNuZ2V0dGV4dAorI2VuZGlmCitleHRlcm4gY2hhciAqZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKKwkJCSB1bnNpZ25lZCBsb25nIGludCBfX24sIGludCBfX2NhdGVnb3J5KQorICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kY25nZXR0ZXh0KTsKKyNlbmRpZgorCisKKy8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgorICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KKyAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLworI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQorZXh0ZXJuIGNoYXIgKmxpYmludGxfdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKTsKK3N0YXRpYyBpbmxpbmUgY2hhciAqdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKQoreworICByZXR1cm4gbGliaW50bF90ZXh0ZG9tYWluIChfX2RvbWFpbm5hbWUpOworfQorI2Vsc2UKKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKKyMgZGVmaW5lIHRleHRkb21haW4gbGliaW50bF90ZXh0ZG9tYWluCisjZW5kaWYKK2V4dGVybiBjaGFyICp0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpCisgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX3RleHRkb21haW4pOworI2VuZGlmCisKKy8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAorICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLworI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQorZXh0ZXJuIGNoYXIgKmxpYmludGxfYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKwkJCQkgICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSk7CitzdGF0aWMgaW5saW5lIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCisJCQkJICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkKK3sKKyAgcmV0dXJuIGxpYmludGxfYmluZHRleHRkb21haW4gKF9fZG9tYWlubmFtZSwgX19kaXJuYW1lKTsKK30KKyNlbHNlCisjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCisjIGRlZmluZSBiaW5kdGV4dGRvbWFpbiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluCisjZW5kaWYKK2V4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX2Rpcm5hbWUpCisgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluKTsKKyNlbmRpZgorCisvKiBTcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gd2hpY2ggdGhlIG1lc3NhZ2VzIGZyb20gdGhlCisgICBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIHJldHVybmVkLiAgKi8KKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKK2V4dGVybiBjaGFyICpsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCisJCQkJCSAgICAgIGNvbnN0IGNoYXIgKl9fY29kZXNldCk7CitzdGF0aWMgaW5saW5lIGNoYXIgKmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCisJCQkJCSAgICAgY29uc3QgY2hhciAqX19jb2Rlc2V0KQoreworICByZXR1cm4gbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCAoX19kb21haW5uYW1lLCBfX2NvZGVzZXQpOworfQorI2Vsc2UKKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKKyMgZGVmaW5lIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKKyNlbmRpZgorZXh0ZXJuIGNoYXIgKmJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCisJCQkJICAgICAgY29uc3QgY2hhciAqX19jb2Rlc2V0KQorICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldCk7CisjZW5kaWYKKworCisvKiBTdXBwb3J0IGZvciBmb3JtYXQgc3RyaW5ncyB3aXRoIHBvc2l0aW9ucyBpbiAqcHJpbnRmKCksIGZvbGxvd2luZyB0aGUKKyAgIFBPU0lYL1hTSSBzcGVjaWZpY2F0aW9uLgorICAgTm90ZTogVGhlc2UgcmVwbGFjZW1lbnRzIGZvciB0aGUgKnByaW50ZigpIGZ1bmN0aW9ucyBhcmUgdmlzaWJsZSBvbmx5CisgICBpbiBzb3VyY2UgZmlsZXMgdGhhdCAjaW5jbHVkZSA8bGliaW50bC5oPiBvciAjaW5jbHVkZSAiZ2V0dGV4dC5oIi4KKyAgIFBhY2thZ2VzIHRoYXQgdXNlICpwcmludGYoKSBpbiBzb3VyY2UgZmlsZXMgdGhhdCBkb24ndCByZWZlciB0byBfKCkKKyAgIG9yIGdldHRleHQoKSBidXQgZm9yIHdoaWNoIHRoZSBmb3JtYXQgc3RyaW5nIGNvdWxkIGJlIHRoZSByZXR1cm4gdmFsdWUKKyAgIG9mIF8oKSBvciBnZXR0ZXh0KCkgbmVlZCB0byBhZGQgdGhpcyAjaW5jbHVkZS4gIE9oIHdlbGwuICAqLworCisjaWYgIUBIQVZFX1BPU0lYX1BSSU5URkAKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qIEdldCB2YV9saXN0LiAgKi8KKyNpZiBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIKKyMgaW5jbHVkZSA8c3RkYXJnLmg+CisjZWxzZQorIyBpbmNsdWRlIDx2YXJhcmdzLmg+CisjZW5kaWYKKworI3VuZGVmIGZwcmludGYKKyNkZWZpbmUgZnByaW50ZiBsaWJpbnRsX2ZwcmludGYKK2V4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7CisjdW5kZWYgdmZwcmludGYKKyNkZWZpbmUgdmZwcmludGYgbGliaW50bF92ZnByaW50ZgorZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOworCisjdW5kZWYgcHJpbnRmCisjZGVmaW5lIHByaW50ZiBsaWJpbnRsX3ByaW50ZgorZXh0ZXJuIGludCBwcmludGYgKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyN1bmRlZiB2cHJpbnRmCisjZGVmaW5lIHZwcmludGYgbGliaW50bF92cHJpbnRmCitleHRlcm4gaW50IHZwcmludGYgKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CisKKyN1bmRlZiBzcHJpbnRmCisjZGVmaW5lIHNwcmludGYgbGliaW50bF9zcHJpbnRmCitleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOworI3VuZGVmIHZzcHJpbnRmCisjZGVmaW5lIHZzcHJpbnRmIGxpYmludGxfdnNwcmludGYKK2V4dGVybiBpbnQgdnNwcmludGYgKGNoYXIgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKKworI2lmIEBIQVZFX1NOUFJJTlRGQAorCisjdW5kZWYgc25wcmludGYKKyNkZWZpbmUgc25wcmludGYgbGliaW50bF9zbnByaW50ZgorZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgLi4uKTsKKyN1bmRlZiB2c25wcmludGYKKyNkZWZpbmUgdnNucHJpbnRmIGxpYmludGxfdnNucHJpbnRmCitleHRlcm4gaW50IHZzbnByaW50ZiAoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CisKKyNlbmRpZgorCisjaWYgQEhBVkVfQVNQUklOVEZACisKKyN1bmRlZiBhc3ByaW50ZgorI2RlZmluZSBhc3ByaW50ZiBsaWJpbnRsX2FzcHJpbnRmCitleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIC4uLik7CisjdW5kZWYgdmFzcHJpbnRmCisjZGVmaW5lIHZhc3ByaW50ZiBsaWJpbnRsX3Zhc3ByaW50ZgorZXh0ZXJuIGludCB2YXNwcmludGYgKGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CisKKyNlbmRpZgorCisjaWYgQEhBVkVfV1BSSU5URkAKKworI3VuZGVmIGZ3cHJpbnRmCisjZGVmaW5lIGZ3cHJpbnRmIGxpYmludGxfZndwcmludGYKK2V4dGVybiBpbnQgZndwcmludGYgKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOworI3VuZGVmIHZmd3ByaW50ZgorI2RlZmluZSB2ZndwcmludGYgbGliaW50bF92ZndwcmludGYKK2V4dGVybiBpbnQgdmZ3cHJpbnRmIChGSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CisKKyN1bmRlZiB3cHJpbnRmCisjZGVmaW5lIHdwcmludGYgbGliaW50bF93cHJpbnRmCitleHRlcm4gaW50IHdwcmludGYgKGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKKyN1bmRlZiB2d3ByaW50ZgorI2RlZmluZSB2d3ByaW50ZiBsaWJpbnRsX3Z3cHJpbnRmCitleHRlcm4gaW50IHZ3cHJpbnRmIChjb25zdCB3Y2hhcl90ICosIHZhX2xpc3QpOworCisjdW5kZWYgc3dwcmludGYKKyNkZWZpbmUgc3dwcmludGYgbGliaW50bF9zd3ByaW50ZgorZXh0ZXJuIGludCBzd3ByaW50ZiAod2NoYXJfdCAqLCBzaXplX3QsIGNvbnN0IHdjaGFyX3QgKiwgLi4uKTsKKyN1bmRlZiB2c3dwcmludGYKKyNkZWZpbmUgdnN3cHJpbnRmIGxpYmludGxfdnN3cHJpbnRmCitleHRlcm4gaW50IHZzd3ByaW50ZiAod2NoYXJfdCAqLCBzaXplX3QsIGNvbnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7CisKKyNlbmRpZgorCisjZW5kaWYKKworCisvKiBTdXBwb3J0IGZvciByZWxvY2F0YWJsZSBwYWNrYWdlcy4gICovCisKKy8qIFNldHMgdGhlIG9yaWdpbmFsIGFuZCB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IG9mIHRoZSBwYWNrYWdlLgorICAgUmVsb2NhdGlvbiBzaW1wbHkgcmVwbGFjZXMgYSBwYXRobmFtZSBzdGFydGluZyB3aXRoIHRoZSBvcmlnaW5hbCBwcmVmaXgKKyAgIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhdGhuYW1lIHdpdGggdGhlIGN1cnJlbnQgcHJlZml4IGluc3RlYWQuICBCb3RoCisgICBwcmVmaXhlcyBzaG91bGQgYmUgZGlyZWN0b3J5IG5hbWVzIHdpdGhvdXQgdHJhaWxpbmcgc2xhc2ggKGkuZS4gdXNlICIiCisgICBpbnN0ZWFkIG9mICIvIikuICAqLworI2RlZmluZSBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeAorZXh0ZXJuIHZvaWQKKyAgICAgICBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXgsCisJCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBsaWJpbnRsLmggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2xvYWRpbmZvLmggYi9lMmZzcHJvZ3MvaW50bC9sb2FkaW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZTVlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9sb2FkaW5mby5oCkBAIC0wLDAgKzEsMTQ1IEBACisvKiBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisgICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5Ni4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZm5kZWYgX0xPQURJTkZPX0gKKyNkZWZpbmUgX0xPQURJTkZPX0gJMQorCisvKiBEZWNsYXJhdGlvbnMgb2YgbG9jYWxlIGRlcGVuZGVudCBjYXRhbG9nIGxvb2t1cCBmdW5jdGlvbnMuCisgICBJbXBsZW1lbnRlZCBpbgorCisgICAgIGxvY2FsZWFsaWFzLmMgICAgUG9zc2libHkgcmVwbGFjZSBhIGxvY2FsZSBuYW1lIGJ5IGFub3RoZXIuCisgICAgIGV4cGxvZGVuYW1lLmMgICAgU3BsaXQgYSBsb2NhbGUgbmFtZSBpbnRvIGl0cyB2YXJpb3VzIGZpZWxkcy4KKyAgICAgbDEwbmZsaXN0LmMgICAgICBHZW5lcmF0ZSBhIGxpc3Qgb2YgZmlsZW5hbWVzIG9mIHBvc3NpYmxlIG1lc3NhZ2UgY2F0YWxvZ3MuCisgICAgIGZpbmRkb21haW4uYyAgICAgRmluZCBhbmQgb3BlbiB0aGUgcmVsZXZhbnQgbWVzc2FnZSBjYXRhbG9ncy4KKworICAgVGhlIG1haW4gZnVuY3Rpb24gX25sX2ZpbmRfZG9tYWluKCkgaW4gZmluZGRvbWFpbi5jIGlzIGRlY2xhcmVkCisgICBpbiBnZXR0ZXh0UC5oLgorICovCisKKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCisjZW5kaWYKKworLyogVGVsbCB0aGUgY29tcGlsZXIgd2hlbiBhIGNvbmRpdGlvbmFsIG9yIGludGVnZXIgZXhwcmVzc2lvbiBpcworICAgYWxtb3N0IGFsd2F5cyB0cnVlIG9yIGFsbW9zdCBhbHdheXMgZmFsc2UuICAqLworI2lmbmRlZiBIQVZFX0JVSUxUSU5fRVhQRUNUCisjIGRlZmluZSBfX2J1aWx0aW5fZXhwZWN0KGV4cHIsIHZhbCkgKGV4cHIpCisjZW5kaWYKKworLyogU2VwYXJhdG9yIGluIFBBVEggbGlrZSBsaXN0cyBvZiBwYXRobmFtZXMuICAqLworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXworICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCisjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOycKKyNlbHNlCisgIC8qIFVuaXggKi8KKyMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc6JworI2VuZGlmCisKKy8qIEVuY29kaW5nIG9mIGxvY2FsZSBuYW1lIHBhcnRzLiAgKi8KKyNkZWZpbmUgQ0VOX1JFVklTSU9OCQkxCisjZGVmaW5lIENFTl9TUE9OU09SCQkyCisjZGVmaW5lIENFTl9TUEVDSUFMCQk0CisjZGVmaW5lIFhQR19OT1JNX0NPREVTRVQJOAorI2RlZmluZSBYUEdfQ09ERVNFVAkJMTYKKyNkZWZpbmUgVEVSUklUT1JZCQkzMgorI2RlZmluZSBDRU5fQVVESUVOQ0UJCTY0CisjZGVmaW5lIFhQR19NT0RJRklFUgkJMTI4CisKKyNkZWZpbmUgQ0VOX1NQRUNJRklDCShDRU5fUkVWSVNJT058Q0VOX1NQT05TT1J8Q0VOX1NQRUNJQUx8Q0VOX0FVRElFTkNFKQorI2RlZmluZSBYUEdfU1BFQ0lGSUMJKFhQR19DT0RFU0VUfFhQR19OT1JNX0NPREVTRVR8WFBHX01PRElGSUVSKQorCisKK3N0cnVjdCBsb2FkZWRfbDEwbmZpbGUKK3sKKyAgY29uc3QgY2hhciAqZmlsZW5hbWU7CisgIGludCBkZWNpZGVkOworCisgIGNvbnN0IHZvaWQgKmRhdGE7CisKKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqbmV4dDsKKyAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqc3VjY2Vzc29yWzFdOworfTsKKworCisvKiBOb3JtYWxpemUgY29kZXNldCBuYW1lLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBjb2Rlc2V0CisgICBuYW1lcy4gIE5vcm1hbGl6YXRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHVzZSBhbnkgb2YgdGhlIGNvbW1vbgorICAgbmFtZXMuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgaGFzIHRvIGJlCisgICBmcmVlZCBieSB0aGUgY2FsbGVyLiAgKi8KK2V4dGVybiBjb25zdCBjaGFyICpfbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvbnN0IGNoYXIgKmNvZGVzZXQsCisJCQkJCSAgc2l6ZV90IG5hbWVfbGVuKTsKKworLyogTG9va3VwIGEgbG9jYWxlIGRlcGVuZGVudCBmaWxlLgorICAgKkwxME5GSUxFX0xJU1QgZGVub3RlcyBhIHBvb2wgb2YgbG9va3VwIHJlc3VsdHMgb2YgbG9jYWxlIGRlcGVuZGVudAorICAgZmlsZXMgb2YgdGhlIHNhbWUga2luZCwgc29ydGVkIGluIGRlY3JlYXNpbmcgb3JkZXIgb2YgLT5maWxlbmFtZS4KKyAgIERJUkxJU1QgYW5kIERJUkxJU1RfTEVOIGFyZSBhbiBhcmd6IGxpc3Qgb2YgZGlyZWN0b3JpZXMgaW4gd2hpY2ggdG8KKyAgIGxvb2ssIGNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGRpcmVjdG9yeSAoaS5lLiBESVJMSVNUX0xFTiA+IDApLgorICAgTUFTSywgTEFOR1VBR0UsIFRFUlJJVE9SWSwgQ09ERVNFVCwgTk9STUFMSVpFRF9DT0RFU0VULCBNT0RJRklFUiwKKyAgIFNQRUNJQUwsIFNQT05TT1IsIFJFVklTSU9OIGFyZSB0aGUgcGllY2VzIG9mIHRoZSBsb2NhbGUgbmFtZSwgYXMKKyAgIHByb2R1Y2VkIGJ5IF9ubF9leHBsb2RlX25hbWUoKS4gIEZJTEVOQU1FIGlzIHRoZSBmaWxlbmFtZSBzdWZmaXguCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBsb29rdXAgcmVzdWx0LCBlaXRoZXIgZm91bmQgaW4gKkwxME5GSUxFX0xJU1QsCisgICBvciAtIGlmIERPX0FMTE9DQVRFIGlzIG5vbnplcm8gLSBmcmVzaGx5IGFsbG9jYXRlZCwgb3IgcG9zc2libHkgTlVMTC4KKyAgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbm9uLU5VTEwsIGl0IGlzIGFkZGVkIHRvICpMMTBORklMRV9MSVNULCBhbmQKKyAgIGl0cyAtPm5leHQgZmllbGQgZGVub3RlcyB0aGUgY2hhaW5pbmcgaW5zaWRlICpMMTBORklMRV9MSVNULCBhbmQKKyAgIGZ1cnRoZXJtb3JlIGl0cyAtPnN1Y2Nlc3NvcltdIGZpZWxkIGNvbnRhaW5zIGEgbGlzdCBvZiBvdGhlciBsb29rdXAKKyAgIHJlc3VsdHMgZnJvbSB3aGljaCB0aGlzIGxvb2t1cCByZXN1bHQgaW5oZXJpdHMuICAqLworZXh0ZXJuIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKgorX25sX21ha2VfbDEwbmZsaXN0IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKKwkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssCisJCSAgICBjb25zdCBjaGFyICpsYW5ndWFnZSwgY29uc3QgY2hhciAqdGVycml0b3J5LAorCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAorCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCisJCSAgICBjb25zdCBjaGFyICpzcG9uc29yLCBjb25zdCBjaGFyICpyZXZpc2lvbiwKKwkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpOworCisvKiBMb29rdXAgdGhlIHJlYWwgbG9jYWxlIG5hbWUgZm9yIGEgbG9jYWxlIGFsaWFzIE5BTUUsIG9yIE5VTEwgaWYKKyAgIE5BTUUgaXMgbm90IGEgbG9jYWxlIGFsaWFzIChidXQgcG9zc2libHkgYSByZWFsIGxvY2FsZSBuYW1lKS4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQgYW5kIG11c3Qgbm90IGJlIGZyZWVkLiAgKi8KK2V4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICpuYW1lKTsKKworLyogU3BsaXQgYSBsb2NhbGUgbmFtZSBOQU1FIGludG8gaXRzIHBpZWNlczogbGFuZ3VhZ2UsIG1vZGlmaWVyLAorICAgdGVycml0b3J5LCBjb2Rlc2V0LCBzcGVjaWFsLCBzcG9uc29yLCByZXZpc2lvbi4KKyAgIE5BTUUgZ2V0cyBkZXN0cnVjdGl2ZWx5IG1vZGlmaWVkOiBOVUwgYnl0ZXMgYXJlIGluc2VydGVkIGhlcmUgYW5kCisgICB0aGVyZS4gICpMQU5HVUFHRSBnZXRzIGFzc2lnbmVkIE5BTUUuICBFYWNoIG9mICpNT0RJRklFUiwgKlRFUlJJVE9SWSwKKyAgICpDT0RFU0VULCAqU1BFQ0lBTCwgKlNQT05TT1IsICpSRVZJU0lPTiBnZXRzIGFzc2lnbmVkIGVpdGhlciBhCisgICBwb2ludGVyIGludG8gdGhlIG9sZCBOQU1FIHN0cmluZywgb3IgTlVMTC4gICpOT1JNQUxJWkVEX0NPREVTRVQKKyAgIGdldHMgYXNzaWduZWQgdGhlIGV4cGFuZGVkICpDT0RFU0VULCBpZiBpdCBpcyBkaWZmZXJlbnQgZnJvbSAqQ09ERVNFVDsKKyAgIHRoaXMgb25lIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgYml0bWFzaywgd2hlcmUgZWFjaCBiaXQgY29ycmVzcG9uZHMgdG8gb25lCisgICBmaWxsZWQtaW4gdmFsdWU6CisgICAgIFhQR19NT0RJRklFUiwgQ0VOX0FVRElFTkNFICBmb3IgKk1PRElGSUVSLAorICAgICBURVJSSVRPUlkgICAgICAgICAgICAgICAgICAgZm9yICpURVJSSVRPUlksCisgICAgIFhQR19DT0RFU0VUICAgICAgICAgICAgICAgICBmb3IgKkNPREVTRVQsCisgICAgIFhQR19OT1JNX0NPREVTRVQgICAgICAgICAgICBmb3IgKk5PUk1BTElaRURfQ09ERVNFVCwKKyAgICAgQ0VOX1NQRUNJQUwgICAgICAgICAgICAgICAgIGZvciAqU1BFQ0lBTCwKKyAgICAgQ0VOX1NQT05TT1IgICAgICAgICAgICAgICAgIGZvciAqU1BPTlNPUiwKKyAgICAgQ0VOX1JFVklTSU9OICAgICAgICAgICAgICAgIGZvciAqUkVWSVNJT04uCisgKi8KK2V4dGVybiBpbnQgX25sX2V4cGxvZGVfbmFtZSAoY2hhciAqbmFtZSwgY29uc3QgY2hhciAqKmxhbmd1YWdlLAorCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksCisJCQkgICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0LAorCQkJICAgICBjb25zdCBjaGFyICoqbm9ybWFsaXplZF9jb2Rlc2V0LAorCQkJICAgICBjb25zdCBjaGFyICoqc3BlY2lhbCwgY29uc3QgY2hhciAqKnNwb25zb3IsCisJCQkgICAgIGNvbnN0IGNoYXIgKipyZXZpc2lvbik7CisKKy8qIFNwbGl0IGEgbG9jYWxlIG5hbWUgTkFNRSBpbnRvIGEgbGVhZGluZyBsYW5ndWFnZSBwYXJ0IGFuZCBhbGwgdGhlCisgICByZXN0LiAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYW5ndWFnZSwKKyAgIGkuZS4gdG8gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3QuICAqLworZXh0ZXJuIGNoYXIgKl9ubF9maW5kX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lKTsKKworI2VuZGlmCS8qIGxvYWRpbmZvLmggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2xvYWRtc2djYXQuYyBiL2UyZnNwcm9ncy9pbnRsL2xvYWRtc2djYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmFiNzFhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvbG9hZG1zZ2NhdC5jCkBAIC0wLDAgKzEsMTQxOCBAQAorLyogTG9hZCBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncy4KKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCisgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2lmZGVmIF9fR05VQ19fCisjIHVuZGVmICBhbGxvY2EKKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCisjIGRlZmluZSBIQVZFX0FMTE9DQSAxCisjZWxzZQorIyBpZmRlZiBfTVNDX1ZFUgorIyAgaW5jbHVkZSA8bWFsbG9jLmg+CisjICBkZWZpbmUgYWxsb2NhIF9hbGxvY2EKKyMgZWxzZQorIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KKyMgIGVsc2UKKyMgICBpZmRlZiBfQUlYCisgI3ByYWdtYSBhbGxvY2EKKyMgICBlbHNlCisjICAgIGlmbmRlZiBhbGxvY2EKK2NoYXIgKmFsbG9jYSAoKTsKKyMgICAgZW5kaWYKKyMgICBlbmRpZgorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQworIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyMgaW5jbHVkZSA8bG9jYWxlLmg+CisjZW5kaWYKKworI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKyAgICB8fCAoZGVmaW5lZCBfTElCQyAmJiBkZWZpbmVkIF9QT1NJWF9NQVBQRURfRklMRVMpCisjIGluY2x1ZGUgPHN5cy9tbWFuLmg+CisjIHVuZGVmIEhBVkVfTU1BUAorIyBkZWZpbmUgSEFWRV9NTUFQCTEKKyNlbHNlCisjIHVuZGVmIEhBVkVfTU1BUAorI2VuZGlmCisKKyNpZiBkZWZpbmVkIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYIHx8IGRlZmluZWQgX0xJQkMKKyMgaW5jbHVkZSA8c3RkaW50Lmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSCB8fCBkZWZpbmVkIF9MSUJDCisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImdtby5oIgorI2luY2x1ZGUgImdldHRleHRQLmgiCisjaW5jbHVkZSAiaGFzaC1zdHJpbmcuaCIKKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCisKKyNpZmRlZiBfTElCQworIyBpbmNsdWRlICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIgorI2VuZGlmCisKKy8qIFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIGZvciBtYWNyb3MgdGhhdCBvdWdodCB0byBiZSBkZWZpbmVkIGluIDxpbnR0eXBlcy5oPi4KKyAgIE5vdGUgdGhhdCBvdXIgZmFsbGJhY2sgdmFsdWVzIG5lZWQgbm90IGJlIGxpdGVyYWwgc3RyaW5ncywgYmVjYXVzZSB3ZSBkb24ndAorICAgdXNlIHRoZW0gd2l0aCBwcmVwcm9jZXNzb3Igc3RyaW5nIGNvbmNhdGVuYXRpb24uICAqLworI2lmICFkZWZpbmVkIFBSSWQ4IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWQ4CisjIGRlZmluZSBQUklkOCAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWk4IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWk4CisjIGRlZmluZSBQUklpOCAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW84IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSW84CisjIGRlZmluZSBQUklvOCAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXU4IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXU4CisjIGRlZmluZSBQUkl1OCAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXg4IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXg4CisjIGRlZmluZSBQUkl4OCAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVg4IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSVg4CisjIGRlZmluZSBQUklYOCAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWQxNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklkMTYKKyMgZGVmaW5lIFBSSWQxNiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWkxNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklpMTYKKyMgZGVmaW5lIFBSSWkxNiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW8xNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklvMTYKKyMgZGVmaW5lIFBSSW8xNiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXUxNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl1MTYKKyMgZGVmaW5lIFBSSXUxNiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXgxNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl4MTYKKyMgZGVmaW5lIFBSSXgxNiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVgxNiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklYMTYKKyMgZGVmaW5lIFBSSVgxNiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWQzMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklkMzIKKyMgZGVmaW5lIFBSSWQzMiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWkzMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklpMzIKKyMgZGVmaW5lIFBSSWkzMiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW8zMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklvMzIKKyMgZGVmaW5lIFBSSW8zMiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXUzMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl1MzIKKyMgZGVmaW5lIFBSSXUzMiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXgzMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl4MzIKKyMgZGVmaW5lIFBSSXgzMiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVgzMiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklYMzIKKyMgZGVmaW5lIFBSSVgzMiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWQ2NCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklkNjQKKyMgZGVmaW5lIFBSSWQ2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImxkIiA6ICJsbGQiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJaTY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWk2NAorIyBkZWZpbmUgUFJJaTY0IChzaXplb2YgKGxvbmcpID09IDggPyAibGkiIDogImxsaSIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUklvNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJbzY0CisjIGRlZmluZSBQUklvNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsbyIgOiAibGxvIikKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXU2NCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl1NjQKKyMgZGVmaW5lIFBSSXU2NCAoc2l6ZW9mIChsb25nKSA9PSA4ID8gImx1IiA6ICJsbHUiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJeDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXg2NAorIyBkZWZpbmUgUFJJeDY0IChzaXplb2YgKGxvbmcpID09IDggPyAibHgiIDogImxseCIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUklYNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJWDY0CisjIGRlZmluZSBQUklYNjQgKHNpemVvZiAobG9uZykgPT0gOCA/ICJsWCIgOiAibGxYIikKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZExFQVNUOAorIyBkZWZpbmUgUFJJZExFQVNUOCAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJaUxFQVNUOAorIyBkZWZpbmUgUFJJaUxFQVNUOCAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9MRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJb0xFQVNUOAorIyBkZWZpbmUgUFJJb0xFQVNUOCAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdUxFQVNUOAorIyBkZWZpbmUgUFJJdUxFQVNUOCAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJeExFQVNUOAorIyBkZWZpbmUgUFJJeExFQVNUOCAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJWExFQVNUOAorIyBkZWZpbmUgUFJJWExFQVNUOCAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWRMRUFTVDE2CisjIGRlZmluZSBQUklkTEVBU1QxNiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWlMRUFTVDE2CisjIGRlZmluZSBQUklpTEVBU1QxNiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9MRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSW9MRUFTVDE2CisjIGRlZmluZSBQUklvTEVBU1QxNiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXVMRUFTVDE2CisjIGRlZmluZSBQUkl1TEVBU1QxNiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXhMRUFTVDE2CisjIGRlZmluZSBQUkl4TEVBU1QxNiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSVhMRUFTVDE2CisjIGRlZmluZSBQUklYTEVBU1QxNiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWRMRUFTVDMyCisjIGRlZmluZSBQUklkTEVBU1QzMiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWlMRUFTVDMyCisjIGRlZmluZSBQUklpTEVBU1QzMiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9MRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSW9MRUFTVDMyCisjIGRlZmluZSBQUklvTEVBU1QzMiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXVMRUFTVDMyCisjIGRlZmluZSBQUkl1TEVBU1QzMiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXhMRUFTVDMyCisjIGRlZmluZSBQUkl4TEVBU1QzMiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSVhMRUFTVDMyCisjIGRlZmluZSBQUklYTEVBU1QzMiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWRMRUFTVDY0CisjIGRlZmluZSBQUklkTEVBU1Q2NCBQUklkNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWlMRUFTVDY0CisjIGRlZmluZSBQUklpTEVBU1Q2NCBQUklpNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9MRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSW9MRUFTVDY0CisjIGRlZmluZSBQUklvTEVBU1Q2NCBQUklvNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXVMRUFTVDY0CisjIGRlZmluZSBQUkl1TEVBU1Q2NCBQUkl1NjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXhMRUFTVDY0CisjIGRlZmluZSBQUkl4TEVBU1Q2NCBQUkl4NjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSVhMRUFTVDY0CisjIGRlZmluZSBQUklYTEVBU1Q2NCBQUklYNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklkRkFTVDgKKyMgZGVmaW5lIFBSSWRGQVNUOCAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklpRkFTVDgKKyMgZGVmaW5lIFBSSWlGQVNUOCAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9GQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklvRkFTVDgKKyMgZGVmaW5lIFBSSW9GQVNUOCAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl1RkFTVDgKKyMgZGVmaW5lIFBSSXVGQVNUOCAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUkl4RkFTVDgKKyMgZGVmaW5lIFBSSXhGQVNUOCAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklYRkFTVDgKKyMgZGVmaW5lIFBSSVhGQVNUOCAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZEZBU1QxNgorIyBkZWZpbmUgUFJJZEZBU1QxNiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJaUZBU1QxNgorIyBkZWZpbmUgUFJJaUZBU1QxNiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9GQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJb0ZBU1QxNgorIyBkZWZpbmUgUFJJb0ZBU1QxNiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdUZBU1QxNgorIyBkZWZpbmUgUFJJdUZBU1QxNiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJeEZBU1QxNgorIyBkZWZpbmUgUFJJeEZBU1QxNiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJWEZBU1QxNgorIyBkZWZpbmUgUFJJWEZBU1QxNiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZEZBU1QzMgorIyBkZWZpbmUgUFJJZEZBU1QzMiAiZCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJaUZBU1QzMgorIyBkZWZpbmUgUFJJaUZBU1QzMiAiaSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9GQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJb0ZBU1QzMgorIyBkZWZpbmUgUFJJb0ZBU1QzMiAibyIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdUZBU1QzMgorIyBkZWZpbmUgUFJJdUZBU1QzMiAidSIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJeEZBU1QzMgorIyBkZWZpbmUgUFJJeEZBU1QzMiAieCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJWEZBU1QzMgorIyBkZWZpbmUgUFJJWEZBU1QzMiAiWCIKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZEZBU1Q2NAorIyBkZWZpbmUgUFJJZEZBU1Q2NCBQUklkNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWlGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJaUZBU1Q2NAorIyBkZWZpbmUgUFJJaUZBU1Q2NCBQUklpNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSW9GQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJb0ZBU1Q2NAorIyBkZWZpbmUgUFJJb0ZBU1Q2NCBQUklvNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdUZBU1Q2NAorIyBkZWZpbmUgUFJJdUZBU1Q2NCBQUkl1NjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXhGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJeEZBU1Q2NAorIyBkZWZpbmUgUFJJeEZBU1Q2NCBQUkl4NjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSVhGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJWEZBU1Q2NAorIyBkZWZpbmUgUFJJWEZBU1Q2NCBQUklYNjQKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZE1BWAorIyBkZWZpbmUgUFJJZE1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibGQiIDogImxsZCIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUklpTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWlNQVgKKyMgZGVmaW5lIFBSSWlNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxpIiA6ICJsbGkiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJb01BWCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklvTUFYCisjIGRlZmluZSBQUklvTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsbyIgOiAibGxvIikKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdU1BWAorIyBkZWZpbmUgUFJJdU1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibHUiIDogImxsdSIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUkl4TUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXhNQVgKKyMgZGVmaW5lIFBSSXhNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImx4IiA6ICJsbHgiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJWE1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklYTUFYCisjIGRlZmluZSBQUklYTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsWCIgOiAibGxYIikKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSWRQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJZFBUUgorIyBkZWZpbmUgUFJJZFBUUiBcCisgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsZCIgOiBcCisgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gImQiIDogXAorICAgImxsZCIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUklpUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSWlQVFIKKyMgZGVmaW5lIFBSSWlQVFIgXAorICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibGkiIDogXAorICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJpIiA6IFwKKyAgICJsbGkiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJb1BUUiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklvUFRSCisjIGRlZmluZSBQUklvUFRSIFwKKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxvIiA6IFwKKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAibyIgOiBcCisgICAibGxvIikKKyNlbmRpZgorI2lmICFkZWZpbmVkIFBSSXVQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KKyMgdW5kZWYgUFJJdVBUUgorIyBkZWZpbmUgUFJJdVBUUiBcCisgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsdSIgOiBcCisgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gInUiIDogXAorICAgImxsdSIpCisjZW5kaWYKKyNpZiAhZGVmaW5lZCBQUkl4UFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCisjIHVuZGVmIFBSSXhQVFIKKyMgZGVmaW5lIFBSSXhQVFIgXAorICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibHgiIDogXAorICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJ4IiA6IFwKKyAgICJsbHgiKQorI2VuZGlmCisjaWYgIWRlZmluZWQgUFJJWFBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgorIyB1bmRlZiBQUklYUFRSCisjIGRlZmluZSBQUklYUFRSIFwKKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxYIiA6IFwKKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAiWCIgOiBcCisgICAibGxYIikKKyNlbmRpZgorCisvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCisKKyNpZmRlZiBfTElCQworLyogUmVuYW1lIHRoZSBub24gSVNPIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKyAgIGJlY2F1c2Ugc29tZSBJU08gQyBmdW5jdGlvbnMgd2lsbCByZXF1aXJlIGxpbmtpbmcgd2l0aCB0aGlzIG9iamVjdAorICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworIyBkZWZpbmUgb3BlbiAgIF9fb3BlbgorIyBkZWZpbmUgY2xvc2UgIF9fY2xvc2UKKyMgZGVmaW5lIHJlYWQgICBfX3JlYWQKKyMgZGVmaW5lIG1tYXAgICBfX21tYXAKKyMgZGVmaW5lIG11bm1hcCBfX211bm1hcAorI2VuZGlmCisKKy8qIEZvciB0aG9zZSBsb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCisgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLworI2lmZGVmIEhBVkVfQUxMT0NBCisjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCisjZWxzZQorIyBkZWZpbmUgYWxsb2NhKG4pIG1hbGxvYyAobikKKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCisjZW5kaWYKKworLyogRm9yIHN5c3RlbXMgdGhhdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRleHQgYW5kIGJpbmFyeSBJL08uCisgICBPX0JJTkFSWSBpcyB1c3VhbGx5IGRlY2xhcmVkIGluIDxmY250bC5oPi4gKi8KKyNpZiAhZGVmaW5lZCBPX0JJTkFSWSAmJiBkZWZpbmVkIF9PX0JJTkFSWQorICAvKiBGb3IgTVNDLWNvbXBhdGlibGUgY29tcGlsZXJzLiAgKi8KKyMgZGVmaW5lIE9fQklOQVJZIF9PX0JJTkFSWQorIyBkZWZpbmUgT19URVhUIF9PX1RFWFQKKyNlbmRpZgorI2lmZGVmIF9fQkVPU19fCisgIC8qIEJlT1MgNSBoYXMgT19CSU5BUlkgYW5kIE9fVEVYVCwgYnV0IHRoZXkgaGF2ZSBubyBlZmZlY3QuICAqLworIyB1bmRlZiBPX0JJTkFSWQorIyB1bmRlZiBPX1RFWFQKKyNlbmRpZgorLyogT24gcmVhc29uYWJsZSBzeXN0ZW1zLCBiaW5hcnkgSS9PIGlzIHRoZSBkZWZhdWx0LiAgKi8KKyNpZm5kZWYgT19CSU5BUlkKKyMgZGVmaW5lIE9fQklOQVJZIDAKKyNlbmRpZgorCisKKy8qIFdlIG5lZWQgYSBzaWduLCB3aGV0aGVyIGEgbmV3IGNhdGFsb2cgd2FzIGxvYWRlZCwgd2hpY2ggY2FuIGJlIGFzc29jaWF0ZWQKKyAgIHdpdGggYWxsIHRyYW5zbGF0aW9ucy4gIFRoaXMgaXMgaW1wb3J0YW50IGlmIHRoZSB0cmFuc2xhdGlvbnMgYXJlCisgICBjYWNoZWQgYnkgb25lIG9mIEdDQydzIGZlYXR1cmVzLiAgKi8KK2ludCBfbmxfbXNnX2NhdF9jbnRyOworCisKKy8qIEV4cGFuZCBhIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5nIHNlZ21lbnQuICBSZXR1cm4gTlVMTCBpZiB1bnN1cHBvcnRlZC4gICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfc3lzZGVwX3NlZ21lbnRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIC8qIFRlc3QgZm9yIGFuIElTTyBDIDk5IHNlY3Rpb24gNy44LjEgZm9ybWF0IHN0cmluZyBkaXJlY3RpdmUuCisgICAgIFN5bnRheDoKKyAgICAgUCBSIEkgeyBkIHwgaSB8IG8gfCB1IHwgeCB8IFggfQorICAgICB7IHsgfCBMRUFTVCB8IEZBU1QgfSB7IDggfCAxNiB8IDMyIHwgNjQgfSB8IE1BWCB8IFBUUiB9ICAqLworICAvKiBXZSBkb24ndCB1c2UgYSB0YWJsZSBvZiAxNCB0aW1lcyA2ICdjb25zdCBjaGFyIConIHN0cmluZ3MgaGVyZSwgYmVjYXVzZQorICAgICBkYXRhIHJlbG9jYXRpb25zIGNvc3Qgc3RhcnR1cCB0aW1lLiAgKi8KKyAgaWYgKG5hbWVbMF0gPT0gJ1AnICYmIG5hbWVbMV0gPT0gJ1InICYmIG5hbWVbMl0gPT0gJ0knKQorICAgIHsKKyAgICAgIGlmIChuYW1lWzNdID09ICdkJyB8fCBuYW1lWzNdID09ICdpJyB8fCBuYW1lWzNdID09ICdvJyB8fCBuYW1lWzNdID09ICd1JworCSAgfHwgbmFtZVszXSA9PSAneCcgfHwgbmFtZVszXSA9PSAnWCcpCisJeworCSAgaWYgKG5hbWVbNF0gPT0gJzgnICYmIG5hbWVbNV0gPT0gJ1wwJykKKwkgICAgeworCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKKwkJcmV0dXJuIFBSSWQ4OworCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKKwkJcmV0dXJuIFBSSWk4OworCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKKwkJcmV0dXJuIFBSSW84OworCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKKwkJcmV0dXJuIFBSSXU4OworCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKKwkJcmV0dXJuIFBSSXg4OworCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKKwkJcmV0dXJuIFBSSVg4OworCSAgICAgIGFib3J0ICgpOworCSAgICB9CisJICBpZiAobmFtZVs0XSA9PSAnMScgJiYgbmFtZVs1XSA9PSAnNicgJiYgbmFtZVs2XSA9PSAnXDAnKQorCSAgICB7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQlyZXR1cm4gUFJJZDE2OworCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKKwkJcmV0dXJuIFBSSWkxNjsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCisJCXJldHVybiBQUklvMTY7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQlyZXR1cm4gUFJJdTE2OworCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKKwkJcmV0dXJuIFBSSXgxNjsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCisJCXJldHVybiBQUklYMTY7CisJICAgICAgYWJvcnQgKCk7CisJICAgIH0KKwkgIGlmIChuYW1lWzRdID09ICczJyAmJiBuYW1lWzVdID09ICcyJyAmJiBuYW1lWzZdID09ICdcMCcpCisJICAgIHsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCisJCXJldHVybiBQUklkMzI7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQorCQlyZXR1cm4gUFJJaTMyOworCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKKwkJcmV0dXJuIFBSSW8zMjsKKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCisJCXJldHVybiBQUkl1MzI7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQorCQlyZXR1cm4gUFJJeDMyOworCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKKwkJcmV0dXJuIFBSSVgzMjsKKwkgICAgICBhYm9ydCAoKTsKKwkgICAgfQorCSAgaWYgKG5hbWVbNF0gPT0gJzYnICYmIG5hbWVbNV0gPT0gJzQnICYmIG5hbWVbNl0gPT0gJ1wwJykKKwkgICAgeworCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKKwkJcmV0dXJuIFBSSWQ2NDsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCisJCXJldHVybiBQUklpNjQ7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQorCQlyZXR1cm4gUFJJbzY0OworCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKKwkJcmV0dXJuIFBSSXU2NDsKKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCisJCXJldHVybiBQUkl4NjQ7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQorCQlyZXR1cm4gUFJJWDY0OworCSAgICAgIGFib3J0ICgpOworCSAgICB9CisJICBpZiAobmFtZVs0XSA9PSAnTCcgJiYgbmFtZVs1XSA9PSAnRScgJiYgbmFtZVs2XSA9PSAnQScKKwkgICAgICAmJiBuYW1lWzddID09ICdTJyAmJiBuYW1lWzhdID09ICdUJykKKwkgICAgeworCSAgICAgIGlmIChuYW1lWzldID09ICc4JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQorCQl7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQkgICAgcmV0dXJuIFBSSWRMRUFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQorCQkgICAgcmV0dXJuIFBSSWlMRUFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQorCQkgICAgcmV0dXJuIFBSSW9MRUFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQkgICAgcmV0dXJuIFBSSXVMRUFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQorCQkgICAgcmV0dXJuIFBSSXhMRUFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQorCQkgICAgcmV0dXJuIFBSSVhMRUFTVDg7CisJCSAgYWJvcnQgKCk7CisJCX0KKwkgICAgICBpZiAobmFtZVs5XSA9PSAnMScgJiYgbmFtZVsxMF0gPT0gJzYnICYmIG5hbWVbMTFdID09ICdcMCcpCisJCXsKKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCisJCSAgICByZXR1cm4gUFJJZExFQVNUMTY7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQorCQkgICAgcmV0dXJuIFBSSWlMRUFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICdvJykKKwkJICAgIHJldHVybiBQUklvTEVBU1QxNjsKKwkJICBpZiAobmFtZVszXSA9PSAndScpCisJCSAgICByZXR1cm4gUFJJdUxFQVNUMTY7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQorCQkgICAgcmV0dXJuIFBSSXhMRUFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICdYJykKKwkJICAgIHJldHVybiBQUklYTEVBU1QxNjsKKwkJICBhYm9ydCAoKTsKKwkJfQorCSAgICAgIGlmIChuYW1lWzldID09ICczJyAmJiBuYW1lWzEwXSA9PSAnMicgJiYgbmFtZVsxMV0gPT0gJ1wwJykKKwkJeworCQkgIGlmIChuYW1lWzNdID09ICdkJykKKwkJICAgIHJldHVybiBQUklkTEVBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAnaScpCisJCSAgICByZXR1cm4gUFJJaUxFQVNUMzI7CisJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQorCQkgICAgcmV0dXJuIFBSSW9MRUFTVDMyOworCQkgIGlmIChuYW1lWzNdID09ICd1JykKKwkJICAgIHJldHVybiBQUkl1TEVBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAneCcpCisJCSAgICByZXR1cm4gUFJJeExFQVNUMzI7CisJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQorCQkgICAgcmV0dXJuIFBSSVhMRUFTVDMyOworCQkgIGFib3J0ICgpOworCQl9CisJICAgICAgaWYgKG5hbWVbOV0gPT0gJzYnICYmIG5hbWVbMTBdID09ICc0JyAmJiBuYW1lWzExXSA9PSAnXDAnKQorCQl7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQkgICAgcmV0dXJuIFBSSWRMRUFTVDY0OworCQkgIGlmIChuYW1lWzNdID09ICdpJykKKwkJICAgIHJldHVybiBQUklpTEVBU1Q2NDsKKwkJICBpZiAobmFtZVszXSA9PSAnbycpCisJCSAgICByZXR1cm4gUFJJb0xFQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQkgICAgcmV0dXJuIFBSSXVMRUFTVDY0OworCQkgIGlmIChuYW1lWzNdID09ICd4JykKKwkJICAgIHJldHVybiBQUkl4TEVBU1Q2NDsKKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCisJCSAgICByZXR1cm4gUFJJWExFQVNUNjQ7CisJCSAgYWJvcnQgKCk7CisJCX0KKwkgICAgfQorCSAgaWYgKG5hbWVbNF0gPT0gJ0YnICYmIG5hbWVbNV0gPT0gJ0EnICYmIG5hbWVbNl0gPT0gJ1MnCisJICAgICAgJiYgbmFtZVs3XSA9PSAnVCcpCisJICAgIHsKKwkgICAgICBpZiAobmFtZVs4XSA9PSAnOCcgJiYgbmFtZVs5XSA9PSAnXDAnKQorCQl7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQkgICAgcmV0dXJuIFBSSWRGQVNUODsKKwkJICBpZiAobmFtZVszXSA9PSAnaScpCisJCSAgICByZXR1cm4gUFJJaUZBU1Q4OworCQkgIGlmIChuYW1lWzNdID09ICdvJykKKwkJICAgIHJldHVybiBQUklvRkFTVDg7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQkgICAgcmV0dXJuIFBSSXVGQVNUODsKKwkJICBpZiAobmFtZVszXSA9PSAneCcpCisJCSAgICByZXR1cm4gUFJJeEZBU1Q4OworCQkgIGlmIChuYW1lWzNdID09ICdYJykKKwkJICAgIHJldHVybiBQUklYRkFTVDg7CisJCSAgYWJvcnQgKCk7CisJCX0KKwkgICAgICBpZiAobmFtZVs4XSA9PSAnMScgJiYgbmFtZVs5XSA9PSAnNicgJiYgbmFtZVsxMF0gPT0gJ1wwJykKKwkJeworCQkgIGlmIChuYW1lWzNdID09ICdkJykKKwkJICAgIHJldHVybiBQUklkRkFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICdpJykKKwkJICAgIHJldHVybiBQUklpRkFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICdvJykKKwkJICAgIHJldHVybiBQUklvRkFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICd1JykKKwkJICAgIHJldHVybiBQUkl1RkFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICd4JykKKwkJICAgIHJldHVybiBQUkl4RkFTVDE2OworCQkgIGlmIChuYW1lWzNdID09ICdYJykKKwkJICAgIHJldHVybiBQUklYRkFTVDE2OworCQkgIGFib3J0ICgpOworCQl9CisJICAgICAgaWYgKG5hbWVbOF0gPT0gJzMnICYmIG5hbWVbOV0gPT0gJzInICYmIG5hbWVbMTBdID09ICdcMCcpCisJCXsKKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCisJCSAgICByZXR1cm4gUFJJZEZBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAnaScpCisJCSAgICByZXR1cm4gUFJJaUZBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAnbycpCisJCSAgICByZXR1cm4gUFJJb0ZBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAndScpCisJCSAgICByZXR1cm4gUFJJdUZBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAneCcpCisJCSAgICByZXR1cm4gUFJJeEZBU1QzMjsKKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCisJCSAgICByZXR1cm4gUFJJWEZBU1QzMjsKKwkJICBhYm9ydCAoKTsKKwkJfQorCSAgICAgIGlmIChuYW1lWzhdID09ICc2JyAmJiBuYW1lWzldID09ICc0JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQorCQl7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQkgICAgcmV0dXJuIFBSSWRGQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQorCQkgICAgcmV0dXJuIFBSSWlGQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQorCQkgICAgcmV0dXJuIFBSSW9GQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQkgICAgcmV0dXJuIFBSSXVGQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQorCQkgICAgcmV0dXJuIFBSSXhGQVNUNjQ7CisJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQorCQkgICAgcmV0dXJuIFBSSVhGQVNUNjQ7CisJCSAgYWJvcnQgKCk7CisJCX0KKwkgICAgfQorCSAgaWYgKG5hbWVbNF0gPT0gJ00nICYmIG5hbWVbNV0gPT0gJ0EnICYmIG5hbWVbNl0gPT0gJ1gnCisJICAgICAgJiYgbmFtZVs3XSA9PSAnXDAnKQorCSAgICB7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnKQorCQlyZXR1cm4gUFJJZE1BWDsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCisJCXJldHVybiBQUklpTUFYOworCSAgICAgIGlmIChuYW1lWzNdID09ICdvJykKKwkJcmV0dXJuIFBSSW9NQVg7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ3UnKQorCQlyZXR1cm4gUFJJdU1BWDsKKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCisJCXJldHVybiBQUkl4TUFYOworCSAgICAgIGlmIChuYW1lWzNdID09ICdYJykKKwkJcmV0dXJuIFBSSVhNQVg7CisJICAgICAgYWJvcnQgKCk7CisJICAgIH0KKwkgIGlmIChuYW1lWzRdID09ICdQJyAmJiBuYW1lWzVdID09ICdUJyAmJiBuYW1lWzZdID09ICdSJworCSAgICAgICYmIG5hbWVbN10gPT0gJ1wwJykKKwkgICAgeworCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKKwkJcmV0dXJuIFBSSWRQVFI7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ2knKQorCQlyZXR1cm4gUFJJaVBUUjsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCisJCXJldHVybiBQUklvUFRSOworCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKKwkJcmV0dXJuIFBSSXVQVFI7CisJICAgICAgaWYgKG5hbWVbM10gPT0gJ3gnKQorCQlyZXR1cm4gUFJJeFBUUjsKKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCisJCXJldHVybiBQUklYUFRSOworCSAgICAgIGFib3J0ICgpOworCSAgICB9CisJfQorICAgIH0KKyAgLyogVGVzdCBmb3IgYSBnbGliYyBzcGVjaWZpYyBwcmludGYoKSBmb3JtYXQgZGlyZWN0aXZlIGZsYWcuICAqLworICBpZiAobmFtZVswXSA9PSAnSScgJiYgbmFtZVsxXSA9PSAnXDAnKQorICAgIHsKKyNpZiBkZWZpbmVkIF9MSUJDIHx8IF9fR0xJQkNfXyA+IDIgfHwgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKQorICAgICAgLyogVGhlICdJJyBmbGFnLCBpbiBudW1lcmljIGZvcm1hdCBkaXJlY3RpdmVzLCByZXBsYWNlcyBBU0NJSSBkaWdpdHMKKwkgd2l0aCB0aGUgJ291dGRpZ2l0cycgZGVmaW5lZCBpbiB0aGUgTENfQ1RZUEUgbG9jYWxlIGZhY2V0LiAgVGhpcyBpcworCSB1c2VkIGZvciBGYXJzaSAoUGVyc2lhbikgYW5kIG1heWJlIEFyYWJpYy4gICovCisgICAgICByZXR1cm4gIkkiOworI2Vsc2UKKyAgICAgIHJldHVybiAiIjsKKyNlbmRpZgorICAgIH0KKyAgLyogT3RoZXIgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIGFyZSBub3QgdmFsaWQuICAqLworICByZXR1cm4gTlVMTDsKK30KKworLyogSW5pdGlhbGl6ZSB0aGUgY29kZXNldCBkZXBlbmRlbnQgcGFydHMgb2YgYW4gb3BlbmVkIG1lc3NhZ2UgY2F0YWxvZy4KKyAgIFJldHVybiB0aGUgaGVhZGVyIGVudHJ5LiAgKi8KK2NvbnN0IGNoYXIgKgoraW50ZXJuYWxfZnVuY3Rpb24KK19ubF9pbml0X2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKKwkJICAgICAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbiwKKwkJICAgICAgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcpCit7CisgIC8qIEZpbmQgb3V0IGFib3V0IHRoZSBjaGFyYWN0ZXIgc2V0IHRoZSBmaWxlIGlzIGVuY29kZWQgd2l0aC4KKyAgICAgVGhpcyBjYW4gYmUgZm91bmQgKGluIHRleHR1YWwgZm9ybSkgaW4gdGhlIGVudHJ5ICIiLiAgSWYgdGhpcworICAgICBlbnRyeSBkb2VzIG5vdCBleGlzdCBvciBpZiB0aGlzIGRvZXMgbm90IGNvbnRhaW4gdGhlIGBjaGFyc2V0PScKKyAgICAgaW5mb3JtYXRpb24sIHdlIHdpbGwgYXNzdW1lIHRoZSBjaGFyc2V0IG1hdGNoZXMgdGhlIG9uZSB0aGUKKyAgICAgY3VycmVudCBsb2NhbGUgYW5kIHdlIGRvbid0IGhhdmUgdG8gcGVyZm9ybSBhbnkgY29udmVyc2lvbi4gICovCisgIGNoYXIgKm51bGxlbnRyeTsKKyAgc2l6ZV90IG51bGxlbnRyeWxlbjsKKworICAvKiBQcmVpbml0aWFsaXplIGZpZWxkcywgdG8gYXZvaWQgcmVjdXJzaW9uIGR1cmluZyBfbmxfZmluZF9tc2cuICAqLworICBkb21haW4tPmNvZGVzZXRfY250ciA9CisgICAgKGRvbWFpbmJpbmRpbmcgIT0gTlVMTCA/IGRvbWFpbmJpbmRpbmctPmNvZGVzZXRfY250ciA6IDApOworI2lmZGVmIF9MSUJDCisgIGRvbWFpbi0+Y29udiA9IChfX2djb252X3QpIC0xOworI2Vsc2UKKyMgaWYgSEFWRV9JQ09OVgorICBkb21haW4tPmNvbnYgPSAoaWNvbnZfdCkgLTE7CisjIGVuZGlmCisjZW5kaWYKKyAgZG9tYWluLT5jb252X3RhYiA9IE5VTEw7CisKKyAgLyogR2V0IHRoZSBoZWFkZXIgZW50cnkuICAqLworICBudWxsZW50cnkgPSBfbmxfZmluZF9tc2cgKGRvbWFpbl9maWxlLCBkb21haW5iaW5kaW5nLCAiIiwgJm51bGxlbnRyeWxlbik7CisKKyAgaWYgKG51bGxlbnRyeSAhPSBOVUxMKQorICAgIHsKKyNpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfSUNPTlYKKyAgICAgIGNvbnN0IGNoYXIgKmNoYXJzZXRzdHI7CisKKyAgICAgIGNoYXJzZXRzdHIgPSBzdHJzdHIgKG51bGxlbnRyeSwgImNoYXJzZXQ9Iik7CisgICAgICBpZiAoY2hhcnNldHN0ciAhPSBOVUxMKQorCXsKKwkgIHNpemVfdCBsZW47CisJICBjaGFyICpjaGFyc2V0OworCSAgY29uc3QgY2hhciAqb3V0Y2hhcnNldDsKKworCSAgY2hhcnNldHN0ciArPSBzdHJsZW4gKCJjaGFyc2V0PSIpOworCSAgbGVuID0gc3RyY3NwbiAoY2hhcnNldHN0ciwgIiBcdFxuIik7CisKKwkgIGNoYXJzZXQgPSAoY2hhciAqKSBhbGxvY2EgKGxlbiArIDEpOworIyBpZiBkZWZpbmVkIF9MSUJDIHx8IEhBVkVfTUVNUENQWQorCSAgKigoY2hhciAqKSBtZW1wY3B5IChjaGFyc2V0LCBjaGFyc2V0c3RyLCBsZW4pKSA9ICdcMCc7CisjIGVsc2UKKwkgIG1lbWNweSAoY2hhcnNldCwgY2hhcnNldHN0ciwgbGVuKTsKKwkgIGNoYXJzZXRbbGVuXSA9ICdcMCc7CisjIGVuZGlmCisKKwkgIC8qIFRoZSBvdXRwdXQgY2hhcnNldCBzaG91bGQgbm9ybWFsbHkgYmUgZGV0ZXJtaW5lZCBieSB0aGUKKwkgICAgIGxvY2FsZS4gIEJ1dCBzb21ldGltZXMgdGhlIGxvY2FsZSBpcyBub3QgdXNlZCBvciBub3QgY29ycmVjdGx5CisJICAgICBzZXQgdXAsIHNvIHdlIHByb3ZpZGUgYSBwb3NzaWJpbGl0eSBmb3IgdGhlIHVzZXIgdG8gb3ZlcnJpZGUKKwkgICAgIHRoaXMuICBNb3Jlb3ZlciwgdGhlIHZhbHVlIHNwZWNpZmllZCB0aHJvdWdoCisJICAgICBiaW5kX3RleHRkb21haW5fY29kZXNldCBvdmVycmlkZXMgYm90aC4gICovCisJICBpZiAoZG9tYWluYmluZGluZyAhPSBOVUxMICYmIGRvbWFpbmJpbmRpbmctPmNvZGVzZXQgIT0gTlVMTCkKKwkgICAgb3V0Y2hhcnNldCA9IGRvbWFpbmJpbmRpbmctPmNvZGVzZXQ7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBvdXRjaGFyc2V0ID0gZ2V0ZW52ICgiT1VUUFVUX0NIQVJTRVQiKTsKKwkgICAgICBpZiAob3V0Y2hhcnNldCA9PSBOVUxMIHx8IG91dGNoYXJzZXRbMF0gPT0gJ1wwJykKKwkJeworIyBpZmRlZiBfTElCQworCQkgIG91dGNoYXJzZXQgPSBfTkxfQ1VSUkVOVCAoTENfQ1RZUEUsIENPREVTRVQpOworIyBlbHNlCisjICBpZiBIQVZFX0lDT05WCisJCSAgZXh0ZXJuIGNvbnN0IGNoYXIgKmxvY2FsZV9jaGFyc2V0ICh2b2lkKTsKKwkJICBvdXRjaGFyc2V0ID0gbG9jYWxlX2NoYXJzZXQgKCk7CisjICBlbmRpZgorIyBlbmRpZgorCQl9CisJICAgIH0KKworIyBpZmRlZiBfTElCQworCSAgLyogV2UgYWx3YXlzIHdhbnQgdG8gdXNlIHRyYW5zbGl0ZXJhdGlvbi4gICovCisJICBvdXRjaGFyc2V0ID0gbm9ybV9hZGRfc2xhc2hlcyAob3V0Y2hhcnNldCwgIlRSQU5TTElUIik7CisJICBjaGFyc2V0ID0gbm9ybV9hZGRfc2xhc2hlcyAoY2hhcnNldCwgTlVMTCk7CisJICBpZiAoX19nY29udl9vcGVuIChvdXRjaGFyc2V0LCBjaGFyc2V0LCAmZG9tYWluLT5jb252LAorCQkJICAgIEdDT05WX0FWT0lEX05PQ09OVikKKwkgICAgICAhPSBfX0dDT05WX09LKQorCSAgICBkb21haW4tPmNvbnYgPSAoX19nY29udl90KSAtMTsKKyMgZWxzZQorIyAgaWYgSEFWRV9JQ09OVgorCSAgLyogV2hlbiB1c2luZyBHTlUgbGliYyA+PSAyLjIgb3IgR05VIGxpYmljb252ID49IDEuNSwKKwkgICAgIHdlIHdhbnQgdG8gdXNlIHRyYW5zbGl0ZXJhdGlvbi4gICovCisjICAgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAyKSB8fCBfX0dMSUJDX18gPiAyIFwKKyAgICAgICB8fCBfTElCSUNPTlZfVkVSU0lPTiA+PSAweDAxMDUKKwkgIGlmIChzdHJjaHIgKG91dGNoYXJzZXQsICcvJykgPT0gTlVMTCkKKwkgICAgeworCSAgICAgIGNoYXIgKnRtcDsKKworCSAgICAgIGxlbiA9IHN0cmxlbiAob3V0Y2hhcnNldCk7CisJICAgICAgdG1wID0gKGNoYXIgKikgYWxsb2NhIChsZW4gKyAxMCArIDEpOworCSAgICAgIG1lbWNweSAodG1wLCBvdXRjaGFyc2V0LCBsZW4pOworCSAgICAgIG1lbWNweSAodG1wICsgbGVuLCAiLy9UUkFOU0xJVCIsIDEwICsgMSk7CisJICAgICAgb3V0Y2hhcnNldCA9IHRtcDsKKworCSAgICAgIGRvbWFpbi0+Y29udiA9IGljb252X29wZW4gKG91dGNoYXJzZXQsIGNoYXJzZXQpOworCisJICAgICAgZnJlZWEgKG91dGNoYXJzZXQpOworCSAgICB9CisJICBlbHNlCisjICAgZW5kaWYKKwkgICAgZG9tYWluLT5jb252ID0gaWNvbnZfb3BlbiAob3V0Y2hhcnNldCwgY2hhcnNldCk7CisjICBlbmRpZgorIyBlbmRpZgorCisJICBmcmVlYSAoY2hhcnNldCk7CisJfQorI2VuZGlmIC8qIF9MSUJDIHx8IEhBVkVfSUNPTlYgKi8KKyAgICB9CisKKyAgcmV0dXJuIG51bGxlbnRyeTsKK30KKworLyogRnJlZXMgdGhlIGNvZGVzZXQgZGVwZW5kZW50IHBhcnRzIG9mIGFuIG9wZW5lZCBtZXNzYWdlIGNhdGFsb2cuICAqLwordm9pZAoraW50ZXJuYWxfZnVuY3Rpb24KK19ubF9mcmVlX2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluKQoreworICBpZiAoZG9tYWluLT5jb252X3RhYiAhPSBOVUxMICYmIGRvbWFpbi0+Y29udl90YWIgIT0gKGNoYXIgKiopIC0xKQorICAgIGZyZWUgKGRvbWFpbi0+Y29udl90YWIpOworCisjaWZkZWYgX0xJQkMKKyAgaWYgKGRvbWFpbi0+Y29udiAhPSAoX19nY29udl90KSAtMSkKKyAgICBfX2djb252X2Nsb3NlIChkb21haW4tPmNvbnYpOworI2Vsc2UKKyMgaWYgSEFWRV9JQ09OVgorICBpZiAoZG9tYWluLT5jb252ICE9IChpY29udl90KSAtMSkKKyAgICBpY29udl9jbG9zZSAoZG9tYWluLT5jb252KTsKKyMgZW5kaWYKKyNlbmRpZgorfQorCisvKiBMb2FkIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHNwZWNpZmllZCBieSBGSUxFTkFNRS4gIElmIGl0IGlzIG5vIHZhbGlkCisgICBtZXNzYWdlIGNhdGFsb2cgZG8gbm90aGluZy4gICovCit2b2lkCitpbnRlcm5hbF9mdW5jdGlvbgorX25sX2xvYWRfZG9tYWluIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKKwkJIHN0cnVjdCBiaW5kaW5nICpkb21haW5iaW5kaW5nKQoreworICBpbnQgZmQ7CisgIHNpemVfdCBzaXplOworI2lmZGVmIF9MSUJDCisgIHN0cnVjdCBzdGF0NjQgc3Q7CisjZWxzZQorICBzdHJ1Y3Qgc3RhdCBzdDsKKyNlbmRpZgorICBzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKmRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIC0xOworICBpbnQgdXNlX21tYXAgPSAwOworICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOworICBpbnQgcmV2aXNpb247CisgIGNvbnN0IGNoYXIgKm51bGxlbnRyeTsKKworICBkb21haW5fZmlsZS0+ZGVjaWRlZCA9IDE7CisgIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKKworICAvKiBOb3RlIHRoYXQgaXQgd291bGQgYmUgdXNlbGVzcyB0byBzdG9yZSBkb21haW5iaW5kaW5nIGluIGRvbWFpbl9maWxlCisgICAgIGJlY2F1c2UgZG9tYWluYmluZGluZyBtaWdodCBiZSA9PSBOVUxMIG5vdyBidXQgIT0gTlVMTCBsYXRlciAoYWZ0ZXIKKyAgICAgYSBjYWxsIHRvIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KS4gICovCisKKyAgLyogSWYgdGhlIHJlY29yZCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBsb2NhbGUgdGhlIEZJTEVOQU1FCisgICAgIG1pZ2h0IGJlIE5VTEwuICBUaGlzIGNhbiBoYXBwZW4gd2hlbiBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuCisgICAgIHNwZWNpZmljYXRpb24gdGhlIGxvY2FsZSBmaWxlIG5hbWUgaXMgZGlmZmVyZW50IGZvciBYUEcgYW5kIENFTgorICAgICBzeW50YXguICAqLworICBpZiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lID09IE5VTEwpCisgICAgcmV0dXJuOworCisgIC8qIFRyeSB0byBvcGVuIHRoZSBhZGRyZXNzZWQgZmlsZS4gICovCisgIGZkID0gb3BlbiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lLCBPX1JET05MWSB8IE9fQklOQVJZKTsKKyAgaWYgKGZkID09IC0xKQorICAgIHJldHVybjsKKworICAvKiBXZSBtdXN0IGtub3cgYWJvdXQgdGhlIHNpemUgb2YgdGhlIGZpbGUuICAqLworICBpZiAoCisjaWZkZWYgX0xJQkMKKyAgICAgIF9fYnVpbHRpbl9leHBlY3QgKGZzdGF0NjQgKGZkLCAmc3QpICE9IDAsIDApCisjZWxzZQorICAgICAgX19idWlsdGluX2V4cGVjdCAoZnN0YXQgKGZkLCAmc3QpICE9IDAsIDApCisjZW5kaWYKKyAgICAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKChzaXplID0gKHNpemVfdCkgc3Quc3Rfc2l6ZSkgIT0gc3Quc3Rfc2l6ZSwgMCkKKyAgICAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKHNpemUgPCBzaXplb2YgKHN0cnVjdCBtb19maWxlX2hlYWRlciksIDApKQorICAgIHsKKyAgICAgIC8qIFNvbWV0aGluZyB3ZW50IHdyb25nLiAgKi8KKyAgICAgIGNsb3NlIChmZCk7CisgICAgICByZXR1cm47CisgICAgfQorCisjaWZkZWYgSEFWRV9NTUFQCisgIC8qIE5vdyB3ZSBhcmUgcmVhZHkgdG8gbG9hZCB0aGUgZmlsZS4gIElmIG1tYXAoKSBpcyBhdmFpbGFibGUgd2UgdHJ5CisgICAgIHRoaXMgZmlyc3QuICBJZiBub3QgYXZhaWxhYmxlIG9yIGl0IGZhaWxlZCB3ZSB0cnkgdG8gbG9hZCBpdC4gICovCisgIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1tYXAgKE5VTEwsIHNpemUsIFBST1RfUkVBRCwKKwkJCQkJIE1BUF9QUklWQVRFLCBmZCwgMCk7CisKKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEgIT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSwgMSkpCisgICAgeworICAgICAgLyogbW1hcCgpIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLworICAgICAgY2xvc2UgKGZkKTsKKyAgICAgIHVzZV9tbWFwID0gMTsKKyAgICB9CisjZW5kaWYKKworICAvKiBJZiB0aGUgZGF0YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAoaS5lLiBtbWFwJ2VkKSB3ZSB0cnkgdG8gbG9hZAorICAgICBpdCBtYW51YWxseS4gICovCisgIGlmIChkYXRhID09IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEpCisgICAgeworICAgICAgc2l6ZV90IHRvX3JlYWQ7CisgICAgICBjaGFyICpyZWFkX3B0cjsKKworICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzaXplKTsKKyAgICAgIGlmIChkYXRhID09IE5VTEwpCisJcmV0dXJuOworCisgICAgICB0b19yZWFkID0gc2l6ZTsKKyAgICAgIHJlYWRfcHRyID0gKGNoYXIgKikgZGF0YTsKKyAgICAgIGRvCisJeworCSAgbG9uZyBpbnQgbmIgPSAobG9uZyBpbnQpIHJlYWQgKGZkLCByZWFkX3B0ciwgdG9fcmVhZCk7CisJICBpZiAobmIgPD0gMCkKKwkgICAgeworI2lmZGVmIEVJTlRSCisJICAgICAgaWYgKG5iID09IC0xICYmIGVycm5vID09IEVJTlRSKQorCQljb250aW51ZTsKKyNlbmRpZgorCSAgICAgIGNsb3NlIChmZCk7CisJICAgICAgcmV0dXJuOworCSAgICB9CisJICByZWFkX3B0ciArPSBuYjsKKwkgIHRvX3JlYWQgLT0gbmI7CisJfQorICAgICAgd2hpbGUgKHRvX3JlYWQgPiAwKTsKKworICAgICAgY2xvc2UgKGZkKTsKKyAgICB9CisKKyAgLyogVXNpbmcgdGhlIG1hZ2ljIG51bWJlciB3ZSBjYW4gdGVzdCB3aGV0aGVyIGl0IHJlYWxseSBpcyBhIG1lc3NhZ2UKKyAgICAgY2F0YWxvZyBmaWxlLiAgKi8KKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGRhdGEtPm1hZ2ljICE9IF9NQUdJQyAmJiBkYXRhLT5tYWdpYyAhPSBfTUFHSUNfU1dBUFBFRCwKKwkJCTApKQorICAgIHsKKyAgICAgIC8qIFRoZSBtYWdpYyBudW1iZXIgaXMgd3Jvbmc6IG5vdCBhIG1lc3NhZ2UgY2F0YWxvZyBmaWxlLiAgKi8KKyNpZmRlZiBIQVZFX01NQVAKKyAgICAgIGlmICh1c2VfbW1hcCkKKwltdW5tYXAgKCh2b2lkICopIGRhdGEsIHNpemUpOworICAgICAgZWxzZQorI2VuZGlmCisJZnJlZSAoZGF0YSk7CisgICAgICByZXR1cm47CisgICAgfQorCisgIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxvYWRlZF9kb21haW4pKTsKKyAgaWYgKGRvbWFpbiA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgZG9tYWluX2ZpbGUtPmRhdGEgPSBkb21haW47CisKKyAgZG9tYWluLT5kYXRhID0gKGNoYXIgKikgZGF0YTsKKyAgZG9tYWluLT51c2VfbW1hcCA9IHVzZV9tbWFwOworICBkb21haW4tPm1tYXBfc2l6ZSA9IHNpemU7CisgIGRvbWFpbi0+bXVzdF9zd2FwID0gZGF0YS0+bWFnaWMgIT0gX01BR0lDOworICBkb21haW4tPm1hbGxvY2VkID0gTlVMTDsKKworICAvKiBGaWxsIGluIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZhaWxhYmxlIHRhYmxlcy4gICovCisgIHJldmlzaW9uID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnJldmlzaW9uKTsKKyAgLyogV2Ugc3VwcG9ydCBvbmx5IHRoZSBtYWpvciByZXZpc2lvbnMgMCBhbmQgMS4gICovCisgIHN3aXRjaCAocmV2aXNpb24gPj4gMTYpCisgICAgeworICAgIGNhc2UgMDoKKyAgICBjYXNlIDE6CisgICAgICBkb21haW4tPm5zdHJpbmdzID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm5zdHJpbmdzKTsKKyAgICAgIGRvbWFpbi0+b3JpZ190YWIgPSAoY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICopCisJKChjaGFyICopIGRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ190YWJfb2Zmc2V0KSk7CisgICAgICBkb21haW4tPnRyYW5zX3RhYiA9IChjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKikKKwkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT50cmFuc190YWJfb2Zmc2V0KSk7CisgICAgICBkb21haW4tPmhhc2hfc2l6ZSA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5oYXNoX3RhYl9zaXplKTsKKyAgICAgIGRvbWFpbi0+aGFzaF90YWIgPQorCShkb21haW4tPmhhc2hfc2l6ZSA+IDIKKwkgPyAoY29uc3QgbmxzX3VpbnQzMiAqKQorCSAgICgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX29mZnNldCkpCisJIDogTlVMTCk7CisgICAgICBkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiA9IGRvbWFpbi0+bXVzdF9zd2FwOworCisgICAgICAvKiBOb3cgZGlzcGF0Y2ggb24gdGhlIG1pbm9yIHJldmlzaW9uLiAgKi8KKyAgICAgIHN3aXRjaCAocmV2aXNpb24gJiAweGZmZmYpCisJeworCWNhc2UgMDoKKwkgIGRvbWFpbi0+bl9zeXNkZXBfc3RyaW5ncyA9IDA7CisJICBkb21haW4tPm9yaWdfc3lzZGVwX3RhYiA9IE5VTEw7CisJICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOworCSAgYnJlYWs7CisJY2FzZSAxOgorCWRlZmF1bHQ6CisJICB7CisJICAgIG5sc191aW50MzIgbl9zeXNkZXBfc3RyaW5nczsKKworCSAgICBpZiAoZG9tYWluLT5oYXNoX3RhYiA9PSBOVUxMKQorCSAgICAgIC8qIFRoaXMgaXMgaW52YWxpZC4gIFRoZXNlIG1pbm9yIHJldmlzaW9ucyBuZWVkIGEgaGFzaCB0YWJsZS4gICovCisJICAgICAgZ290byBpbnZhbGlkOworCisJICAgIG5fc3lzZGVwX3N0cmluZ3MgPQorCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5uX3N5c2RlcF9zdHJpbmdzKTsKKwkgICAgaWYgKG5fc3lzZGVwX3N0cmluZ3MgPiAwKQorCSAgICAgIHsKKwkJbmxzX3VpbnQzMiBuX3N5c2RlcF9zZWdtZW50czsKKwkJY29uc3Qgc3RydWN0IHN5c2RlcF9zZWdtZW50ICpzeXNkZXBfc2VnbWVudHM7CisJCWNvbnN0IGNoYXIgKipzeXNkZXBfc2VnbWVudF92YWx1ZXM7CisJCWNvbnN0IG5sc191aW50MzIgKm9yaWdfc3lzZGVwX3RhYjsKKwkJY29uc3QgbmxzX3VpbnQzMiAqdHJhbnNfc3lzZGVwX3RhYjsKKwkJbmxzX3VpbnQzMiBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOworCQlzaXplX3QgbWVtbmVlZDsKKwkJY2hhciAqbWVtOworCQlzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICppbm1lbV9vcmlnX3N5c2RlcF90YWI7CisJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX3RyYW5zX3N5c2RlcF90YWI7CisJCW5sc191aW50MzIgKmlubWVtX2hhc2hfdGFiOworCQl1bnNpZ25lZCBpbnQgaSwgajsKKworCQkvKiBHZXQgdGhlIHZhbHVlcyBvZiB0aGUgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4gICovCisJCW5fc3lzZGVwX3NlZ21lbnRzID0KKwkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bl9zeXNkZXBfc2VnbWVudHMpOworCQlzeXNkZXBfc2VnbWVudHMgPSAoY29uc3Qgc3RydWN0IHN5c2RlcF9zZWdtZW50ICopCisJCSAgKChjaGFyICopIGRhdGEKKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+c3lzZGVwX3NlZ21lbnRzX29mZnNldCkpOworCQlzeXNkZXBfc2VnbWVudF92YWx1ZXMgPQorCQkgIGFsbG9jYSAobl9zeXNkZXBfc2VnbWVudHMgKiBzaXplb2YgKGNvbnN0IGNoYXIgKikpOworCQlmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc2VnbWVudHM7IGkrKykKKwkJICB7CisJCSAgICBjb25zdCBjaGFyICpuYW1lID0KKwkJICAgICAgKGNoYXIgKikgZGF0YQorCQkgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc2VnbWVudHNbaV0ub2Zmc2V0KTsKKwkJICAgIG5sc191aW50MzIgbmFtZWxlbiA9CisJCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc2VnbWVudHNbaV0ubGVuZ3RoKTsKKworCQkgICAgaWYgKCEobmFtZWxlbiA+IDAgJiYgbmFtZVtuYW1lbGVuIC0gMV0gPT0gJ1wwJykpCisJCSAgICAgIHsKKwkJCWZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOworCQkJZ290byBpbnZhbGlkOworCQkgICAgICB9CisKKwkJICAgIHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tpXSA9IGdldF9zeXNkZXBfc2VnbWVudF92YWx1ZSAobmFtZSk7CisJCSAgfQorCisJCW9yaWdfc3lzZGVwX3RhYiA9IChjb25zdCBubHNfdWludDMyICopCisJCSAgKChjaGFyICopIGRhdGEKKwkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+b3JpZ19zeXNkZXBfdGFiX29mZnNldCkpOworCQl0cmFuc19zeXNkZXBfdGFiID0gKGNvbnN0IG5sc191aW50MzIgKikKKwkJICAoKGNoYXIgKikgZGF0YQorCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT50cmFuc19zeXNkZXBfdGFiX29mZnNldCkpOworCisJCS8qIENvbXB1dGUgdGhlIGFtb3VudCBvZiBhZGRpdGlvbmFsIG1lbW9yeSBuZWVkZWQgZm9yIHRoZQorCQkgICBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MgYW5kIHRoZSBhdWdtZW50ZWQgaGFzaCB0YWJsZS4KKwkJICAgQXQgdGhlIHNhbWUgdGltZSwgYWxzbyBkcm9wIHN0cmluZyBwYWlycyB3aGljaCByZWZlciB0bworCQkgICBhbiB1bmRlZmluZWQgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50LiAgKi8KKwkJbl9pbm1lbV9zeXNkZXBfc3RyaW5ncyA9IDA7CisJCW1lbW5lZWQgPSBkb21haW4tPmhhc2hfc2l6ZSAqIHNpemVvZiAobmxzX3VpbnQzMik7CisJCWZvciAoaSA9IDA7IGkgPCBuX3N5c2RlcF9zdHJpbmdzOyBpKyspCisJCSAgeworCQkgICAgaW50IHZhbGlkID0gMTsKKwkJICAgIHNpemVfdCBuZWVkc1syXTsKKworCQkgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKKwkJICAgICAgeworCQkJY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQorCQkJICAoY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKikKKwkJCSAgKChjaGFyICopIGRhdGEKKwkJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCisJCQkJaiA9PSAwCisJCQkJPyBvcmlnX3N5c2RlcF90YWJbaV0KKwkJCQk6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKKwkJCXNpemVfdCBuZWVkID0gMDsKKwkJCWNvbnN0IHN0cnVjdCBzZWdtZW50X3BhaXIgKnAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKKworCQkJaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpICE9IFNFR01FTlRTX0VORCkKKwkJCSAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCisJCQkgICAgeworCQkJICAgICAgbmxzX3VpbnQzMiBzeXNkZXByZWY7CisKKwkJCSAgICAgIG5lZWQgKz0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnNlZ3NpemUpOworCisJCQkgICAgICBzeXNkZXByZWYgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKKwkJCSAgICAgIGlmIChzeXNkZXByZWYgPT0gU0VHTUVOVFNfRU5EKQorCQkJCWJyZWFrOworCisJCQkgICAgICBpZiAoc3lzZGVwcmVmID49IG5fc3lzZGVwX3NlZ21lbnRzKQorCQkJCXsKKwkJCQkgIC8qIEludmFsaWQuICAqLworCQkJCSAgZnJlZWEgKHN5c2RlcF9zZWdtZW50X3ZhbHVlcyk7CisJCQkJICBnb3RvIGludmFsaWQ7CisJCQkJfQorCisJCQkgICAgICBpZiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0gPT0gTlVMTCkKKwkJCQl7CisJCQkJICAvKiBUaGlzIHBhcnRpY3VsYXIgc3RyaW5nIHBhaXIgaXMgaW52YWxpZC4gICovCisJCQkJICB2YWxpZCA9IDA7CisJCQkJICBicmVhazsKKwkJCQl9CisKKwkJCSAgICAgIG5lZWQgKz0gc3RybGVuIChzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSk7CisJCQkgICAgfQorCisJCQluZWVkc1tqXSA9IG5lZWQ7CisJCQlpZiAoIXZhbGlkKQorCQkJICBicmVhazsKKwkJICAgICAgfQorCisJCSAgICBpZiAodmFsaWQpCisJCSAgICAgIHsKKwkJCW5faW5tZW1fc3lzZGVwX3N0cmluZ3MrKzsKKwkJCW1lbW5lZWQgKz0gbmVlZHNbMF0gKyBuZWVkc1sxXTsKKwkJICAgICAgfQorCQkgIH0KKwkJbWVtbmVlZCArPSAyICogbl9pbm1lbV9zeXNkZXBfc3RyaW5ncworCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOworCisJCWlmIChuX2lubWVtX3N5c2RlcF9zdHJpbmdzID4gMCkKKwkJICB7CisJCSAgICB1bnNpZ25lZCBpbnQgazsKKworCQkgICAgLyogQWxsb2NhdGUgYWRkaXRpb25hbCBtZW1vcnkuICAqLworCQkgICAgbWVtID0gKGNoYXIgKikgbWFsbG9jIChtZW1uZWVkKTsKKwkJICAgIGlmIChtZW0gPT0gTlVMTCkKKwkJICAgICAgZ290byBpbnZhbGlkOworCisJCSAgICBkb21haW4tPm1hbGxvY2VkID0gbWVtOworCQkgICAgaW5tZW1fb3JpZ19zeXNkZXBfdGFiID0gKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKikgbWVtOworCQkgICAgbWVtICs9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3MKKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjKTsKKwkJICAgIGlubWVtX3RyYW5zX3N5c2RlcF90YWIgPSAoc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqKSBtZW07CisJCSAgICBtZW0gKz0gbl9pbm1lbV9zeXNkZXBfc3RyaW5ncworCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOworCQkgICAgaW5tZW1faGFzaF90YWIgPSAobmxzX3VpbnQzMiAqKSBtZW07CisJCSAgICBtZW0gKz0gZG9tYWluLT5oYXNoX3NpemUgKiBzaXplb2YgKG5sc191aW50MzIpOworCisJCSAgICAvKiBDb21wdXRlIHRoZSBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZ3MuICAqLworCQkgICAgayA9IDA7CisJCSAgICBmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc3RyaW5nczsgaSsrKQorCQkgICAgICB7CisJCQlpbnQgdmFsaWQgPSAxOworCisJCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKQorCQkJICB7CisJCQkgICAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQorCQkJICAgICAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCisJCQkgICAgICAoKGNoYXIgKikgZGF0YQorCQkJICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCisJCQkJICAgIGogPT0gMAorCQkJCSAgICA/IG9yaWdfc3lzZGVwX3RhYltpXQorCQkJCSAgICA6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKKwkJCSAgICBjb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0KKwkJCSAgICAgIHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOworCisJCQkgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpCisJCQkJIT0gU0VHTUVOVFNfRU5EKQorCQkJICAgICAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCisJCQkJeworCQkJCSAgbmxzX3VpbnQzMiBzeXNkZXByZWY7CisKKwkJCQkgIHN5c2RlcHJlZiA9CisJCQkJICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpOworCQkJCSAgaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCisJCQkJICAgIGJyZWFrOworCisJCQkJICBpZiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0gPT0gTlVMTCkKKwkJCQkgICAgeworCQkJCSAgICAgIC8qIFRoaXMgcGFydGljdWxhciBzdHJpbmcgcGFpciBpcworCQkJCQkgaW52YWxpZC4gICovCisJCQkJICAgICAgdmFsaWQgPSAwOworCQkJCSAgICAgIGJyZWFrOworCQkJCSAgICB9CisJCQkJfQorCisJCQkgICAgaWYgKCF2YWxpZCkKKwkJCSAgICAgIGJyZWFrOworCQkJICB9CisKKwkJCWlmICh2YWxpZCkKKwkJCSAgeworCQkJICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCisJCQkgICAgICB7CisJCQkJY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQorCQkJCSAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCisJCQkJICAoKGNoYXIgKikgZGF0YQorCQkJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCisJCQkJCWogPT0gMAorCQkJCQk/IG9yaWdfc3lzZGVwX3RhYltpXQorCQkJCQk6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKKwkJCQljb25zdCBjaGFyICpzdGF0aWNfc2VnbWVudHMgPQorCQkJCSAgKGNoYXIgKikgZGF0YQorCQkJCSAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgc3lzZGVwX3N0cmluZy0+b2Zmc2V0KTsKKwkJCQljb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0KKwkJCQkgIHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOworCisJCQkJLyogQ29uY2F0ZW5hdGUgdGhlIHNlZ21lbnRzLCBhbmQgZmlsbAorCQkJCSAgIGlubWVtX29yaWdfc3lzZGVwX3RhYltrXSAoZm9yIGogPT0gMCkgYW5kCisJCQkJICAgaW5tZW1fdHJhbnNfc3lzZGVwX3RhYltrXSAoZm9yIGogPT0gMSkuICAqLworCisJCQkJc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqaW5tZW1fdGFiX2VudHJ5ID0KKwkJCQkgIChqID09IDAKKwkJCQkgICA/IGlubWVtX29yaWdfc3lzZGVwX3RhYgorCQkJCSAgIDogaW5tZW1fdHJhbnNfc3lzZGVwX3RhYikKKwkJCQkgICsgazsKKworCQkJCWlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKQorCQkJCSAgICA9PSBTRUdNRU5UU19FTkQpCisJCQkJICB7CisJCQkJICAgIC8qIE9ubHkgb25lIHN0YXRpYyBzZWdtZW50LiAgKi8KKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5sZW5ndGggPQorCQkJCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zZWdzaXplKTsKKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyID0gc3RhdGljX3NlZ21lbnRzOworCQkJCSAgfQorCQkJCWVsc2UKKwkJCQkgIHsKKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5wb2ludGVyID0gbWVtOworCisJCQkJICAgIGZvciAocCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOzsgcCsrKQorCQkJCSAgICAgIHsKKwkJCQkJbmxzX3VpbnQzMiBzZWdzaXplID0KKwkJCQkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c2Vnc2l6ZSk7CisJCQkJCW5sc191aW50MzIgc3lzZGVwcmVmID0KKwkJCQkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKKwkJCQkJc2l6ZV90IG47CisKKwkJCQkJaWYgKHNlZ3NpemUgPiAwKQorCQkJCQkgIHsKKwkJCQkJICAgIG1lbWNweSAobWVtLCBzdGF0aWNfc2VnbWVudHMsIHNlZ3NpemUpOworCQkJCQkgICAgbWVtICs9IHNlZ3NpemU7CisJCQkJCSAgICBzdGF0aWNfc2VnbWVudHMgKz0gc2Vnc2l6ZTsKKwkJCQkJICB9CisKKwkJCQkJaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCisJCQkJCSAgYnJlYWs7CisKKwkJCQkJbiA9IHN0cmxlbiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0pOworCQkJCQltZW1jcHkgKG1lbSwgc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0sIG4pOworCQkJCQltZW0gKz0gbjsKKwkJCQkgICAgICB9CisKKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5sZW5ndGggPQorCQkJCSAgICAgIG1lbSAtIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlcjsKKwkJCQkgIH0KKwkJCSAgICAgIH0KKworCQkJICAgIGsrKzsKKwkJCSAgfQorCQkgICAgICB9CisJCSAgICBpZiAoayAhPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzKQorCQkgICAgICBhYm9ydCAoKTsKKworCQkgICAgLyogQ29tcHV0ZSB0aGUgYXVnbWVudGVkIGhhc2ggdGFibGUuICAqLworCQkgICAgZm9yIChpID0gMDsgaSA8IGRvbWFpbi0+aGFzaF9zaXplOyBpKyspCisJCSAgICAgIGlubWVtX2hhc2hfdGFiW2ldID0KKwkJCVcgKGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiLCBkb21haW4tPmhhc2hfdGFiW2ldKTsKKwkJICAgIGZvciAoaSA9IDA7IGkgPCBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOyBpKyspCisJCSAgICAgIHsKKwkJCWNvbnN0IGNoYXIgKm1zZ2lkID0gaW5tZW1fb3JpZ19zeXNkZXBfdGFiW2ldLnBvaW50ZXI7CisJCQlubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKKwkJCW5sc191aW50MzIgaWR4ID0gaGFzaF92YWwgJSBkb21haW4tPmhhc2hfc2l6ZTsKKwkJCW5sc191aW50MzIgaW5jciA9CisJCQkgIDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7CisKKwkJCWZvciAoOzspCisJCQkgIHsKKwkJCSAgICBpZiAoaW5tZW1faGFzaF90YWJbaWR4XSA9PSAwKQorCQkJICAgICAgeworCQkJCS8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICBVc2UgaXQuICAqLworCQkJCWlubWVtX2hhc2hfdGFiW2lkeF0gPSAxICsgZG9tYWluLT5uc3RyaW5ncyArIGk7CisJCQkJYnJlYWs7CisJCQkgICAgICB9CisKKwkJCSAgICBpZiAoaWR4ID49IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcikKKwkJCSAgICAgIGlkeCAtPSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3I7CisJCQkgICAgZWxzZQorCQkJICAgICAgaWR4ICs9IGluY3I7CisJCQkgIH0KKwkJICAgICAgfQorCisJCSAgICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOworCQkgICAgZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBpbm1lbV9vcmlnX3N5c2RlcF90YWI7CisJCSAgICBkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBpbm1lbV90cmFuc19zeXNkZXBfdGFiOworCisJCSAgICBkb21haW4tPmhhc2hfdGFiID0gaW5tZW1faGFzaF90YWI7CisJCSAgICBkb21haW4tPm11c3Rfc3dhcF9oYXNoX3RhYiA9IDA7CisJCSAgfQorCQllbHNlCisJCSAgeworCQkgICAgZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gMDsKKwkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKKwkJICAgIGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYiA9IE5VTEw7CisJCSAgfQorCisJCWZyZWVhIChzeXNkZXBfc2VnbWVudF92YWx1ZXMpOworCSAgICAgIH0KKwkgICAgZWxzZQorCSAgICAgIHsKKwkJZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gMDsKKwkJZG9tYWluLT5vcmlnX3N5c2RlcF90YWIgPSBOVUxMOworCQlkb21haW4tPnRyYW5zX3N5c2RlcF90YWIgPSBOVUxMOworCSAgICAgIH0KKwkgIH0KKwkgIGJyZWFrOworCX0KKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAvKiBUaGlzIGlzIGFuIGludmFsaWQgcmV2aXNpb24uICAqLworICAgIGludmFsaWQ6CisgICAgICAvKiBUaGlzIGlzIGFuIGludmFsaWQgLm1vIGZpbGUuICAqLworICAgICAgZnJlZSAoZG9tYWluLT5tYWxsb2NlZCk7CisjaWZkZWYgSEFWRV9NTUFQCisgICAgICBpZiAodXNlX21tYXApCisJbXVubWFwICgodm9pZCAqKSBkYXRhLCBzaXplKTsKKyAgICAgIGVsc2UKKyNlbmRpZgorCWZyZWUgKGRhdGEpOworICAgICAgZnJlZSAoZG9tYWluKTsKKyAgICAgIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgLyogTm93IGluaXRpYWxpemUgdGhlIGNoYXJhY3RlciBzZXQgY29udmVydGVyIGZyb20gdGhlIGNoYXJhY3RlciBzZXQKKyAgICAgdGhlIGZpbGUgaXMgZW5jb2RlZCB3aXRoIChmb3VuZCBpbiB0aGUgaGVhZGVyIGVudHJ5KSB0byB0aGUgZG9tYWluJ3MKKyAgICAgc3BlY2lmaWVkIGNoYXJhY3RlciBzZXQgb3IgdGhlIGxvY2FsZSdzIGNoYXJhY3RlciBzZXQuICAqLworICBudWxsZW50cnkgPSBfbmxfaW5pdF9kb21haW5fY29udiAoZG9tYWluX2ZpbGUsIGRvbWFpbiwgZG9tYWluYmluZGluZyk7CisKKyAgLyogQWxzbyBsb29rIGZvciBhIHBsdXJhbCBzcGVjaWZpY2F0aW9uLiAgKi8KKyAgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiAobnVsbGVudHJ5LCAmZG9tYWluLT5wbHVyYWwsICZkb21haW4tPm5wbHVyYWxzKTsKK30KKworCisjaWZkZWYgX0xJQkMKK3ZvaWQKK2ludGVybmFsX2Z1bmN0aW9uCitfbmxfdW5sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbikKK3sKKyAgaWYgKGRvbWFpbi0+cGx1cmFsICE9ICZfX2dldHRleHRfZ2VybWFuaWNfcGx1cmFsKQorICAgIF9fZ2V0dGV4dF9mcmVlX2V4cCAoZG9tYWluLT5wbHVyYWwpOworCisgIF9ubF9mcmVlX2RvbWFpbl9jb252IChkb21haW4pOworCisgIGZyZWUgKGRvbWFpbi0+bWFsbG9jZWQpOworCisjIGlmZGVmIF9QT1NJWF9NQVBQRURfRklMRVMKKyAgaWYgKGRvbWFpbi0+dXNlX21tYXApCisgICAgbXVubWFwICgodm9pZCAqKSBkb21haW4tPmRhdGEsIGRvbWFpbi0+bW1hcF9zaXplKTsKKyAgZWxzZQorIyBlbmRpZgkvKiBfUE9TSVhfTUFQUEVEX0ZJTEVTICovCisgICAgZnJlZSAoKHZvaWQgKikgZG9tYWluLT5kYXRhKTsKKworICBmcmVlIChkb21haW4pOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9sb2NhbGNoYXJzZXQuYyBiL2UyZnNwcm9ncy9pbnRsL2xvY2FsY2hhcnNldC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzZTNhOWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9sb2NhbGNoYXJzZXQuYwpAQCAtMCwwICsxLDM5NyBAQAorLyogRGV0ZXJtaW5lIGEgY2Fub25pY2FsIG5hbWUgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZy4KKworICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKy8qIFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgImxvY2FsY2hhcnNldC5oIgorCisjaWYgSEFWRV9TVERERUZfSAorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1NUUklOR19ICisjIGluY2x1ZGUgPHN0cmluZy5oPgorI2Vsc2UKKyMgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaWYgSEFWRV9TVERMSUJfSAorIyBpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KKyMgdW5kZWYgV0lOMzIgICAvKiBhdm9pZCB3YXJuaW5nIG9uIG1pbmd3MzIgKi8KKyMgZGVmaW5lIFdJTjMyCisjZW5kaWYKKworI2lmIGRlZmluZWQgX19FTVhfXworLyogQXNzdW1lIEVNWCBwcm9ncmFtIHJ1bnMgb24gT1MvMiwgZXZlbiBpZiBjb21waWxlZCB1bmRlciBET1MuICAqLworIyBkZWZpbmUgT1MyCisjZW5kaWYKKworI2lmICFkZWZpbmVkIFdJTjMyCisjIGlmIEhBVkVfTEFOR0lORk9fQ09ERVNFVAorIyAgaW5jbHVkZSA8bGFuZ2luZm8uaD4KKyMgZWxzZQorIyAgaWYgSEFWRV9TRVRMT0NBTEUKKyMgICBpbmNsdWRlIDxsb2NhbGUuaD4KKyMgIGVuZGlmCisjIGVuZGlmCisjZWxpZiBkZWZpbmVkIFdJTjMyCisjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorI2lmIGRlZmluZWQgT1MyCisjIGRlZmluZSBJTkNMX0RPUworIyBpbmNsdWRlIDxvczIuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCisjIGluY2x1ZGUgInJlbG9jYXRhYmxlLmgiCisjZWxzZQorIyBkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKKyNlbmRpZgorCisjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCisgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCisjZW5kaWYKKworI2lmbmRlZiBESVJFQ1RPUllfU0VQQVJBVE9SCisjIGRlZmluZSBESVJFQ1RPUllfU0VQQVJBVE9SICcvJworI2VuZGlmCisKKyNpZm5kZWYgSVNTTEFTSAorIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09IERJUkVDVE9SWV9TRVBBUkFUT1IpCisjZW5kaWYKKworI2lmIEhBVkVfREVDTF9HRVRDX1VOTE9DS0VECisjIHVuZGVmIGdldGMKKyMgZGVmaW5lIGdldGMgZ2V0Y191bmxvY2tlZAorI2VuZGlmCisKKy8qIFRoZSBmb2xsb3dpbmcgc3RhdGljIHZhcmlhYmxlIGlzIGRlY2xhcmVkICd2b2xhdGlsZScgdG8gYXZvaWQgYQorICAgcG9zc2libGUgbXVsdGl0aHJlYWQgcHJvYmxlbSBpbiB0aGUgZnVuY3Rpb24gZ2V0X2NoYXJzZXRfYWxpYXNlcy4gSWYgd2UKKyAgIGFyZSBydW5uaW5nIGluIGEgdGhyZWFkZWQgZW52aXJvbm1lbnQsIGFuZCBpZiB0d28gdGhyZWFkcyBpbml0aWFsaXplCisgICAnY2hhcnNldF9hbGlhc2VzJyBzaW11bHRhbmVvdXNseSwgYm90aCB3aWxsIHByb2R1Y2UgdGhlIHNhbWUgdmFsdWUsCisgICBhbmQgZXZlcnl0aGluZyB3aWxsIGJlIG9rIGlmIHRoZSB0d28gYXNzaWdubWVudHMgdG8gJ2NoYXJzZXRfYWxpYXNlcycKKyAgIGFyZSBhdG9taWMuIEJ1dCBJIGRvbid0IGtub3cgd2hhdCB3aWxsIGhhcHBlbiBpZiB0aGUgdHdvIGFzc2lnbm1lbnRzIG1peC4gICovCisjaWYgX19TVERDX18gIT0gMQorIyBkZWZpbmUgdm9sYXRpbGUgLyogZW1wdHkgKi8KKyNlbmRpZgorLyogUG9pbnRlciB0byB0aGUgY29udGVudHMgb2YgdGhlIGNoYXJzZXQuYWxpYXMgZmlsZSwgaWYgaXQgaGFzIGFscmVhZHkgYmVlbgorICAgcmVhZCwgZWxzZSBOVUxMLiAgSXRzIGZvcm1hdCBpczoKKyAgIEFMSUFTXzEgJ1wwJyBDQU5PTklDQUxfMSAnXDAnIC4uLiBBTElBU19uICdcMCcgQ0FOT05JQ0FMX24gJ1wwJyAnXDAnICAqLworc3RhdGljIGNvbnN0IGNoYXIgKiB2b2xhdGlsZSBjaGFyc2V0X2FsaWFzZXM7CisKKy8qIFJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorZ2V0X2NoYXJzZXRfYWxpYXNlcyAoKQoreworICBjb25zdCBjaGFyICpjcDsKKworICBjcCA9IGNoYXJzZXRfYWxpYXNlczsKKyAgaWYgKGNwID09IE5VTEwpCisgICAgeworI2lmICEoZGVmaW5lZCBWTVMgfHwgZGVmaW5lZCBXSU4zMikKKyAgICAgIEZJTEUgKmZwOworICAgICAgY29uc3QgY2hhciAqZGlyID0gcmVsb2NhdGUgKExJQkRJUik7CisgICAgICBjb25zdCBjaGFyICpiYXNlID0gImNoYXJzZXQuYWxpYXMiOworICAgICAgY2hhciAqZmlsZV9uYW1lOworCisgICAgICAvKiBDb25jYXRlbmF0ZSBkaXIgYW5kIGJhc2UgaW50byBmcmVzaGx5IGFsbG9jYXRlZCBmaWxlX25hbWUuICAqLworICAgICAgeworCXNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOworCXNpemVfdCBiYXNlX2xlbiA9IHN0cmxlbiAoYmFzZSk7CisJaW50IGFkZF9zbGFzaCA9IChkaXJfbGVuID4gMCAmJiAhSVNTTEFTSCAoZGlyW2Rpcl9sZW4gLSAxXSkpOworCWZpbGVfbmFtZSA9IChjaGFyICopIG1hbGxvYyAoZGlyX2xlbiArIGFkZF9zbGFzaCArIGJhc2VfbGVuICsgMSk7CisJaWYgKGZpbGVfbmFtZSAhPSBOVUxMKQorCSAgeworCSAgICBtZW1jcHkgKGZpbGVfbmFtZSwgZGlyLCBkaXJfbGVuKTsKKwkgICAgaWYgKGFkZF9zbGFzaCkKKwkgICAgICBmaWxlX25hbWVbZGlyX2xlbl0gPSBESVJFQ1RPUllfU0VQQVJBVE9SOworCSAgICBtZW1jcHkgKGZpbGVfbmFtZSArIGRpcl9sZW4gKyBhZGRfc2xhc2gsIGJhc2UsIGJhc2VfbGVuICsgMSk7CisJICB9CisgICAgICB9CisKKyAgICAgIGlmIChmaWxlX25hbWUgPT0gTlVMTCB8fCAoZnAgPSBmb3BlbiAoZmlsZV9uYW1lLCAiciIpKSA9PSBOVUxMKQorCS8qIE91dCBvZiBtZW1vcnkgb3IgZmlsZSBub3QgZm91bmQsIHRyZWF0IGl0IGFzIGVtcHR5LiAgKi8KKwljcCA9ICIiOworICAgICAgZWxzZQorCXsKKwkgIC8qIFBhcnNlIHRoZSBmaWxlJ3MgY29udGVudHMuICAqLworCSAgaW50IGM7CisJICBjaGFyIGJ1ZjFbNTArMV07CisJICBjaGFyIGJ1ZjJbNTArMV07CisJICBjaGFyICpyZXNfcHRyID0gTlVMTDsKKwkgIHNpemVfdCByZXNfc2l6ZSA9IDA7CisJICBzaXplX3QgbDEsIGwyOworCisJICBmb3IgKDs7KQorCSAgICB7CisJICAgICAgYyA9IGdldGMgKGZwKTsKKwkgICAgICBpZiAoYyA9PSBFT0YpCisJCWJyZWFrOworCSAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnICcgfHwgYyA9PSAnXHQnKQorCQljb250aW51ZTsKKwkgICAgICBpZiAoYyA9PSAnIycpCisJCXsKKwkJICAvKiBTa2lwIGNvbW1lbnQsIHRvIGVuZCBvZiBsaW5lLiAgKi8KKwkJICBkbworCQkgICAgYyA9IGdldGMgKGZwKTsKKwkJICB3aGlsZSAoIShjID09IEVPRiB8fCBjID09ICdcbicpKTsKKwkJICBpZiAoYyA9PSBFT0YpCisJCSAgICBicmVhazsKKwkJICBjb250aW51ZTsKKwkJfQorCSAgICAgIHVuZ2V0YyAoYywgZnApOworCSAgICAgIGlmIChmc2NhbmYgKGZwLCAiJTUwcyAlNTBzIiwgYnVmMSwgYnVmMikgPCAyKQorCQlicmVhazsKKwkgICAgICBsMSA9IHN0cmxlbiAoYnVmMSk7CisJICAgICAgbDIgPSBzdHJsZW4gKGJ1ZjIpOworCSAgICAgIGlmIChyZXNfc2l6ZSA9PSAwKQorCQl7CisJCSAgcmVzX3NpemUgPSBsMSArIDEgKyBsMiArIDE7CisJCSAgcmVzX3B0ciA9IChjaGFyICopIG1hbGxvYyAocmVzX3NpemUgKyAxKTsKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIHJlc19zaXplICs9IGwxICsgMSArIGwyICsgMTsKKwkJICByZXNfcHRyID0gKGNoYXIgKikgcmVhbGxvYyAocmVzX3B0ciwgcmVzX3NpemUgKyAxKTsKKwkJfQorCSAgICAgIGlmIChyZXNfcHRyID09IE5VTEwpCisJCXsKKwkJICAvKiBPdXQgb2YgbWVtb3J5LiAqLworCQkgIHJlc19zaXplID0gMDsKKwkJICBicmVhazsKKwkJfQorCSAgICAgIHN0cmNweSAocmVzX3B0ciArIHJlc19zaXplIC0gKGwyICsgMSkgLSAobDEgKyAxKSwgYnVmMSk7CisJICAgICAgc3RyY3B5IChyZXNfcHRyICsgcmVzX3NpemUgLSAobDIgKyAxKSwgYnVmMik7CisJICAgIH0KKwkgIGZjbG9zZSAoZnApOworCSAgaWYgKHJlc19zaXplID09IDApCisJICAgIGNwID0gIiI7CisJICBlbHNlCisJICAgIHsKKwkgICAgICAqKHJlc19wdHIgKyByZXNfc2l6ZSkgPSAnXDAnOworCSAgICAgIGNwID0gcmVzX3B0cjsKKwkgICAgfQorCX0KKworICAgICAgZnJlZSAoZmlsZV9uYW1lKTsKKworI2Vsc2UKKworIyBpZiBkZWZpbmVkIFZNUworICAgICAgLyogVG8gYXZvaWQgdGhlIHRyb3VibGVzIG9mIGFuIGV4dHJhIGZpbGUgY2hhcnNldC5hbGlhc192bXMgaW4gdGhlCisJIHNvdXJjZXMgb2YgbWFueSBHTlUgcGFja2FnZXMsIHNpbXBseSBpbmxpbmUgdGhlIGFsaWFzZXMgaGVyZS4gICovCisgICAgICAvKiBUaGUgbGlzdCBvZiBlbmNvZGluZ3MgaXMgdGFrZW4gZnJvbSB0aGUgT3BlblZNUyA3LjMtMSBkb2N1bWVudGF0aW9uCisJICJDb21wYXEgQyBSdW4tVGltZSBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwgZm9yIE9wZW5WTVMgc3lzdGVtcyIKKwkgc2VjdGlvbiAxMC43ICJIYW5kbGluZyBEaWZmZXJlbnQgQ2hhcmFjdGVyIFNldHMiLiAgKi8KKyAgICAgIGNwID0gIklTTzg4NTktMSIgIlwwIiAiSVNPLTg4NTktMSIgIlwwIgorCSAgICJJU084ODU5LTIiICJcMCIgIklTTy04ODU5LTIiICJcMCIKKwkgICAiSVNPODg1OS01IiAiXDAiICJJU08tODg1OS01IiAiXDAiCisJICAgIklTTzg4NTktNyIgIlwwIiAiSVNPLTg4NTktNyIgIlwwIgorCSAgICJJU084ODU5LTgiICJcMCIgIklTTy04ODU5LTgiICJcMCIKKwkgICAiSVNPODg1OS05IiAiXDAiICJJU08tODg1OS05IiAiXDAiCisJICAgLyogSmFwYW5lc2UgKi8KKwkgICAiZXVjSlAiICJcMCIgIkVVQy1KUCIgIlwwIgorCSAgICJTSklTIiAiXDAiICJTSElGVF9KSVMiICJcMCIKKwkgICAiREVDS0FOSkkiICJcMCIgIkRFQy1LQU5KSSIgIlwwIgorCSAgICJTREVDS0FOSkkiICJcMCIgIkVVQy1KUCIgIlwwIgorCSAgIC8qIENoaW5lc2UgKi8KKwkgICAiZXVjVFciICJcMCIgIkVVQy1UVyIgIlwwIgorCSAgICJERUNIQU5ZVSIgIlwwIiAiREVDLUhBTllVIiAiXDAiCisJICAgIkRFQ0hBTlpJIiAiXDAiICJHQjIzMTIiICJcMCIKKwkgICAvKiBLb3JlYW4gKi8KKwkgICAiREVDS09SRUFOIiAiXDAiICJFVUMtS1IiICJcMCI7CisjIGVuZGlmCisKKyMgaWYgZGVmaW5lZCBXSU4zMgorICAgICAgLyogVG8gYXZvaWQgdGhlIHRyb3VibGVzIG9mIGluc3RhbGxpbmcgYSBzZXBhcmF0ZSBmaWxlIGluIHRoZSBzYW1lCisJIGRpcmVjdG9yeSBhcyB0aGUgRExMIGFuZCBvZiByZXRyaWV2aW5nIHRoZSBETEwncyBkaXJlY3RvcnkgYXQKKwkgcnVudGltZSwgc2ltcGx5IGlubGluZSB0aGUgYWxpYXNlcyBoZXJlLiAgKi8KKworICAgICAgY3AgPSAiQ1A5MzYiICJcMCIgIkdCSyIgIlwwIgorCSAgICJDUDEzNjEiICJcMCIgIkpPSEFCIiAiXDAiCisJICAgIkNQMjAxMjciICJcMCIgIkFTQ0lJIiAiXDAiCisJICAgIkNQMjA4NjYiICJcMCIgIktPSTgtUiIgIlwwIgorCSAgICJDUDIxODY2IiAiXDAiICJLT0k4LVJVIiAiXDAiCisJICAgIkNQMjg1OTEiICJcMCIgIklTTy04ODU5LTEiICJcMCIKKwkgICAiQ1AyODU5MiIgIlwwIiAiSVNPLTg4NTktMiIgIlwwIgorCSAgICJDUDI4NTkzIiAiXDAiICJJU08tODg1OS0zIiAiXDAiCisJICAgIkNQMjg1OTQiICJcMCIgIklTTy04ODU5LTQiICJcMCIKKwkgICAiQ1AyODU5NSIgIlwwIiAiSVNPLTg4NTktNSIgIlwwIgorCSAgICJDUDI4NTk2IiAiXDAiICJJU08tODg1OS02IiAiXDAiCisJICAgIkNQMjg1OTciICJcMCIgIklTTy04ODU5LTciICJcMCIKKwkgICAiQ1AyODU5OCIgIlwwIiAiSVNPLTg4NTktOCIgIlwwIgorCSAgICJDUDI4NTk5IiAiXDAiICJJU08tODg1OS05IiAiXDAiCisJICAgIkNQMjg2MDUiICJcMCIgIklTTy04ODU5LTE1IiAiXDAiOworIyBlbmRpZgorI2VuZGlmCisKKyAgICAgIGNoYXJzZXRfYWxpYXNlcyA9IGNwOworICAgIH0KKworICByZXR1cm4gY3A7Cit9CisKKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsIGFuZCBjYW5vbmljYWxpemUgaXQKKyAgIGludG8gb25lIG9mIHRoZSBjYW5vbmljYWwgbmFtZXMgbGlzdGVkIGluIGNvbmZpZy5jaGFyc2V0LgorICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCisgICBJZiB0aGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSByZXN1bHQgaXMgYSBub24tY2Fub25pY2FsCisgICBuYW1lLiAgKi8KKworI2lmZGVmIFNUQVRJQworU1RBVElDCisjZW5kaWYKK2NvbnN0IGNoYXIgKgorbG9jYWxlX2NoYXJzZXQgKCkKK3sKKyAgY29uc3QgY2hhciAqY29kZXNldDsKKyAgY29uc3QgY2hhciAqYWxpYXNlczsKKworI2lmICEoZGVmaW5lZCBXSU4zMiB8fCBkZWZpbmVkIE9TMikKKworIyBpZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKKworICAvKiBNb3N0IHN5c3RlbXMgc3VwcG9ydCBubF9sYW5naW5mbyAoQ09ERVNFVCkgbm93YWRheXMuICAqLworICBjb2Rlc2V0ID0gbmxfbGFuZ2luZm8gKENPREVTRVQpOworCisjIGVsc2UKKworICAvKiBPbiBvbGQgc3lzdGVtcyB3aGljaCBsYWNrIGl0LCB1c2Ugc2V0bG9jYWxlIG9yIGdldGVudi4gICovCisgIGNvbnN0IGNoYXIgKmxvY2FsZSA9IE5VTEw7CisKKyAgLyogQnV0IG1vc3Qgb2xkIHN5c3RlbXMgZG9uJ3QgaGF2ZSBhIGNvbXBsZXRlIHNldCBvZiBsb2NhbGVzLiAgU29tZQorICAgICAobGlrZSBTdW5PUyA0IG9yIERKR1BQKSBoYXZlIG9ubHkgdGhlIEMgbG9jYWxlLiAgVGhlcmVmb3JlIHdlIGRvbid0CisgICAgIHVzZSBzZXRsb2NhbGUgaGVyZTsgaXQgd291bGQgcmV0dXJuICJDIiB3aGVuIGl0IGRvZXNuJ3Qgc3VwcG9ydCB0aGUKKyAgICAgbG9jYWxlIG5hbWUgdGhlIHVzZXIgaGFzIHNldC4gICovCisjICBpZiBIQVZFX1NFVExPQ0FMRSAmJiAwCisgIGxvY2FsZSA9IHNldGxvY2FsZSAoTENfQ1RZUEUsIE5VTEwpOworIyAgZW5kaWYKKyAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQorICAgIHsKKyAgICAgIGxvY2FsZSA9IGdldGVudiAoIkxDX0FMTCIpOworICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQorCXsKKwkgIGxvY2FsZSA9IGdldGVudiAoIkxDX0NUWVBFIik7CisJICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCisJICAgIGxvY2FsZSA9IGdldGVudiAoIkxBTkciKTsKKwl9CisgICAgfQorCisgIC8qIE9uIHNvbWUgb2xkIHN5c3RlbXMsIG9uZSB1c2VkIHRvIHNldCBsb2NhbGUgPSAiaXNvODg1OV8xIi4gT24gb3RoZXJzLAorICAgICB5b3Ugc2V0IGl0IHRvICJsYW5ndWFnZV9DT1VOVFJZLmNoYXJzZXQiLiBJbiBhbnkgY2FzZSwgd2UgcmVzb2x2ZSBpdAorICAgICB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLworICBjb2Rlc2V0ID0gbG9jYWxlOworCisjIGVuZGlmCisKKyNlbGlmIGRlZmluZWQgV0lOMzIKKworICBzdGF0aWMgY2hhciBidWZbMiArIDEwICsgMV07CisKKyAgLyogV29lMzIgaGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBsb2NhbGUncyBjb2RlcGFnZSBhcyBhIG51bWJlci4gICovCisgIHNwcmludGYgKGJ1ZiwgIkNQJXUiLCBHZXRBQ1AgKCkpOworICBjb2Rlc2V0ID0gYnVmOworCisjZWxpZiBkZWZpbmVkIE9TMgorCisgIGNvbnN0IGNoYXIgKmxvY2FsZTsKKyAgc3RhdGljIGNoYXIgYnVmWzIgKyAxMCArIDFdOworICBVTE9ORyBjcFszXTsKKyAgVUxPTkcgY3BsZW47CisKKyAgLyogQWxsb3cgdXNlciB0byBvdmVycmlkZSB0aGUgY29kZXNldCwgYXMgc2V0IGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtLAorICAgICB3aXRoIHN0YW5kYXJkIGxhbmd1YWdlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCisgIGxvY2FsZSA9IGdldGVudiAoIkxDX0FMTCIpOworICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCisgICAgeworICAgICAgbG9jYWxlID0gZ2V0ZW52ICgiTENfQ1RZUEUiKTsKKyAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKKwlsb2NhbGUgPSBnZXRlbnYgKCJMQU5HIik7CisgICAgfQorICBpZiAobG9jYWxlICE9IE5VTEwgJiYgbG9jYWxlWzBdICE9ICdcMCcpCisgICAgeworICAgICAgLyogSWYgdGhlIGxvY2FsZSBuYW1lIGNvbnRhaW5zIGFuIGVuY29kaW5nIGFmdGVyIHRoZSBkb3QsIHJldHVybiBpdC4gICovCisgICAgICBjb25zdCBjaGFyICpkb3QgPSBzdHJjaHIgKGxvY2FsZSwgJy4nKTsKKworICAgICAgaWYgKGRvdCAhPSBOVUxMKQorCXsKKwkgIGNvbnN0IGNoYXIgKm1vZGlmaWVyOworCisJICBkb3QrKzsKKwkgIC8qIExvb2sgZm9yIHRoZSBwb3NzaWJsZSBALi4uIHRyYWlsZXIgYW5kIHJlbW92ZSBpdCwgaWYgYW55LiAgKi8KKwkgIG1vZGlmaWVyID0gc3RyY2hyIChkb3QsICdAJyk7CisJICBpZiAobW9kaWZpZXIgPT0gTlVMTCkKKwkgICAgcmV0dXJuIGRvdDsKKwkgIGlmIChtb2RpZmllciAtIGRvdCA8IHNpemVvZiAoYnVmKSkKKwkgICAgeworCSAgICAgIG1lbWNweSAoYnVmLCBkb3QsIG1vZGlmaWVyIC0gZG90KTsKKwkgICAgICBidWYgW21vZGlmaWVyIC0gZG90XSA9ICdcMCc7CisJICAgICAgcmV0dXJuIGJ1ZjsKKwkgICAgfQorCX0KKworICAgICAgLyogUmVzb2x2ZSB0aHJvdWdoIHRoZSBjaGFyc2V0LmFsaWFzIGZpbGUuICAqLworICAgICAgY29kZXNldCA9IGxvY2FsZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBPUy8yIGhhcyBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbG9jYWxlJ3MgY29kZXBhZ2UgYXMgYSBudW1iZXIuICAqLworICAgICAgaWYgKERvc1F1ZXJ5Q3AgKHNpemVvZiAoY3ApLCBjcCwgJmNwbGVuKSkKKwljb2Rlc2V0ID0gIiI7CisgICAgICBlbHNlCisJeworCSAgc3ByaW50ZiAoYnVmLCAiQ1AldSIsIGNwWzBdKTsKKwkgIGNvZGVzZXQgPSBidWY7CisJfQorICAgIH0KKworI2VuZGlmCisKKyAgaWYgKGNvZGVzZXQgPT0gTlVMTCkKKyAgICAvKiBUaGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQuICAqLworICAgIGNvZGVzZXQgPSAiIjsKKworICAvKiBSZXNvbHZlIGFsaWFzLiAqLworICBmb3IgKGFsaWFzZXMgPSBnZXRfY2hhcnNldF9hbGlhc2VzICgpOworICAgICAgICphbGlhc2VzICE9ICdcMCc7CisgICAgICAgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSwgYWxpYXNlcyArPSBzdHJsZW4gKGFsaWFzZXMpICsgMSkKKyAgICBpZiAoc3RyY21wIChjb2Rlc2V0LCBhbGlhc2VzKSA9PSAwCisJfHwgKGFsaWFzZXNbMF0gPT0gJyonICYmIGFsaWFzZXNbMV0gPT0gJ1wwJykpCisgICAgICB7CisJY29kZXNldCA9IGFsaWFzZXMgKyBzdHJsZW4gKGFsaWFzZXMpICsgMTsKKwlicmVhazsKKyAgICAgIH0KKworICAvKiBEb24ndCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLiAgR05VIGxpYmMgYW5kIEdOVSBsaWJpY29udiBpbnRlcnByZXQKKyAgICAgdGhlIGVtcHR5IHN0cmluZyBhcyBkZW5vdGluZyAidGhlIGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZyIsCisgICAgIHRodXMgR05VIGxpYmljb252IHdvdWxkIGNhbGwgdGhpcyBmdW5jdGlvbiBhIHNlY29uZCB0aW1lLiAgKi8KKyAgaWYgKGNvZGVzZXRbMF0gPT0gJ1wwJykKKyAgICBjb2Rlc2V0ID0gIkFTQ0lJIjsKKworICByZXR1cm4gY29kZXNldDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2xvY2FsY2hhcnNldC5oIGIvZTJmc3Byb2dzL2ludGwvbG9jYWxjaGFyc2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxMzdlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL2xvY2FsY2hhcnNldC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qIERldGVybWluZSBhIGNhbm9uaWNhbCBuYW1lIGZvciB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcuCisgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQ0hBUlNFVCBMaWJyYXJ5LgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfTE9DQUxDSEFSU0VUX0gKKyNkZWZpbmUgX0xPQ0FMQ0hBUlNFVF9ICisKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKy8qIERldGVybWluZSB0aGUgY3VycmVudCBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmcsIGFuZCBjYW5vbmljYWxpemUgaXQKKyAgIGludG8gb25lIG9mIHRoZSBjYW5vbmljYWwgbmFtZXMgbGlzdGVkIGluIGNvbmZpZy5jaGFyc2V0LgorICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuCisgICBJZiB0aGUgY2Fub25pY2FsIG5hbWUgY2Fubm90IGJlIGRldGVybWluZWQsIHRoZSByZXN1bHQgaXMgYSBub24tY2Fub25pY2FsCisgICBuYW1lLiAgKi8KK2V4dGVybiBjb25zdCBjaGFyICogbG9jYWxlX2NoYXJzZXQgKHZvaWQpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKworI2VuZGlmIC8qIF9MT0NBTENIQVJTRVRfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvbG9jYWxlLmFsaWFzIGIvZTJmc3Byb2dzL2ludGwvbG9jYWxlLmFsaWFzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNmJiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9sb2NhbGUuYWxpYXMKQEAgLTAsMCArMSw3OCBAQAorIyBMb2NhbGUgbmFtZSBhbGlhcyBkYXRhIGJhc2UuCisjIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyMgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorIyBVU0EuCisKKyMgVGhlIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGZpbGUgb2YKKyMgdGhlIFggV2luZG93IFN5c3RlbSwgd2hpY2ggbm9ybWFsbHkgY2FuIGJlIGZvdW5kIGluCisjCS91c3IvbGliL1gxMS9sb2NhbGUvbG9jYWxlLmFsaWFzCisjIEEgc2luZ2xlIGxpbmUgY29udGFpbnMgdHdvIGZpZWxkczogYW4gYWxpYXMgYW5kIGEgc3Vic3RpdHV0aW9uIHZhbHVlLgorIyBBbGwgZW50cmllcyBhcmUgY2FzZSBpbmRlcGVuZGVudC4KKworIyBOb3RlOiBUaGlzIGZpbGUgaXMgZmFyIGZyb20gYmVpbmcgY29tcGxldGUuICBJZiB5b3UgaGF2ZSBhIHZhbHVlIGZvcgorIyB5b3VyIG93biBzaXRlIHdoaWNoIHlvdSB0aGluayBtaWdodCBiZSB1c2VmdWwgZm9yIG90aGVycyB0b28sIHNoYXJlCisjIGl0IHdpdGggdGhlIHJlc3Qgb2YgdXMuICBTZW5kIGl0IHVzaW5nIHRoZSBgZ2xpYmNidWcnIHNjcmlwdCB0bworIyBidWdzQGdudS5vcmcuCisKKyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAKKworYm9rbWFsCQluYl9OTy5JU08tODg1OS0xCitib2tt5WwJCW5iX05PLklTTy04ODU5LTEKK2NhdGFsYW4JCWNhX0VTLklTTy04ODU5LTEKK2Nyb2F0aWFuCWhyX0hSLklTTy04ODU5LTIKK2N6ZWNoCQljc19DWi5JU08tODg1OS0yCitkYW5pc2ggICAgICAgICAgZGFfREsuSVNPLTg4NTktMQorZGFuc2sJCWRhX0RLLklTTy04ODU5LTEKK2RldXRzY2gJCWRlX0RFLklTTy04ODU5LTEKK2R1dGNoCQlubF9OTC5JU08tODg1OS0xCitlZXN0aQkJZXRfRUUuSVNPLTg4NTktMQorZXN0b25pYW4JZXRfRUUuSVNPLTg4NTktMQorZmlubmlzaCAgICAgICAgIGZpX0ZJLklTTy04ODU5LTEKK2ZyYW7nYWlzCWZyX0ZSLklTTy04ODU5LTEKK2ZyZW5jaAkJZnJfRlIuSVNPLTg4NTktMQorZ2FsZWdvCQlnbF9FUy5JU08tODg1OS0xCitnYWxpY2lhbglnbF9FUy5JU08tODg1OS0xCitnZXJtYW4JCWRlX0RFLklTTy04ODU5LTEKK2dyZWVrICAgICAgICAgICBlbF9HUi5JU08tODg1OS03CitoZWJyZXcgICAgICAgICAgaGVfSUwuSVNPLTg4NTktOAoraHJ2YXRza2kJaHJfSFIuSVNPLTg4NTktMgoraHVuZ2FyaWFuICAgICAgIGh1X0hVLklTTy04ODU5LTIKK2ljZWxhbmRpYyAgICAgICBpc19JUy5JU08tODg1OS0xCitpdGFsaWFuICAgICAgICAgaXRfSVQuSVNPLTg4NTktMQoramFwYW5lc2UJamFfSlAuZXVjSlAKK2phcGFuZXNlLmV1YwlqYV9KUC5ldWNKUAoramFfSlAJCWphX0pQLmV1Y0pQCitqYV9KUC51amlzCWphX0pQLmV1Y0pQCitqYXBhbmVzZS5zamlzCWphX0pQLlNKSVMKK2tvcmVhbgkJa29fS1IuZXVjS1IKK2tvcmVhbi5ldWMgCWtvX0tSLmV1Y0tSCitrb19LUgkJa29fS1IuZXVjS1IKK2xpdGh1YW5pYW4gICAgICBsdF9MVC5JU08tODg1OS0xMworbm9fTk8JCW5iX05PLklTTy04ODU5LTEKK25vX05PLklTTy04ODU5LTEgbmJfTk8uSVNPLTg4NTktMQorbm9yd2VnaWFuICAgICAgIG5iX05PLklTTy04ODU5LTEKK255bm9yc2sJCW5uX05PLklTTy04ODU5LTEKK3BvbGlzaCAgICAgICAgICBwbF9QTC5JU08tODg1OS0yCitwb3J0dWd1ZXNlICAgICAgcHRfUFQuSVNPLTg4NTktMQorcm9tYW5pYW4gICAgICAgIHJvX1JPLklTTy04ODU5LTIKK3J1c3NpYW4gICAgICAgICBydV9SVS5JU08tODg1OS01CitzbG92YWsgICAgICAgICAgc2tfU0suSVNPLTg4NTktMgorc2xvdmVuZSAgICAgICAgIHNsX1NJLklTTy04ODU5LTIKK3Nsb3ZlbmlhbiAgICAgICBzbF9TSS5JU08tODg1OS0yCitzcGFuaXNoICAgICAgICAgZXNfRVMuSVNPLTg4NTktMQorc3dlZGlzaCAgICAgICAgIHN2X1NFLklTTy04ODU5LTEKK3RoYWkJCXRoX1RILlRJUy02MjAKK3R1cmtpc2ggICAgICAgICB0cl9UUi5JU08tODg1OS05CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9sb2NhbGVhbGlhcy5jIGIvZTJmc3Byb2dzL2ludGwvbG9jYWxlYWxpYXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWFmODgxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvbG9jYWxlYWxpYXMuYwpAQCAtMCwwICsxLDQxNCBAQAorLyogSGFuZGxlIGFsaWFzZXMgZm9yIGxvY2FsZSBuYW1lcy4KKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDEsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBUZWxsIGdsaWJjJ3MgPHN0cmluZy5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBtZW1wY3B5KCkuCisgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgZGVmaW5lIF9HTlVfU09VUkNFICAgIDEKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX19fRlNFVExPQ0tJTkcKKyMgaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmZGVmIF9fR05VQ19fCisjIHVuZGVmIGFsbG9jYQorIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKKyMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKKyNlbHNlCisjIGlmZGVmIF9NU0NfVkVSCisjICBpbmNsdWRlIDxtYWxsb2MuaD4KKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQorIyBlbHNlCisjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQworIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgorIyAgZWxzZQorIyAgIGlmZGVmIF9BSVgKKyAjcHJhZ21hIGFsbG9jYQorIyAgIGVsc2UKKyMgICAgaWZuZGVmIGFsbG9jYQorY2hhciAqYWxsb2NhICgpOworIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImdldHRleHRQLmgiCisKKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKKyMgaW5jbHVkZSAicmVsb2NhdGFibGUuaCIKKyNlbHNlCisjIGRlZmluZSByZWxvY2F0ZShwYXRobmFtZSkgKHBhdGhuYW1lKQorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworI2lmZGVmIF9MSUJDCisvKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKyAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKyAgIGZpbGUgYW5kIHRoZSBuYW1lIHNwYWNlIG11c3Qgbm90IGJlIHBvbGx1dGVkLiAgKi8KKyMgZGVmaW5lIHN0cmNhc2VjbXAgX19zdHJjYXNlY21wCisKKyMgaWZuZGVmIG1lbXBjcHkKKyMgIGRlZmluZSBtZW1wY3B5IF9fbWVtcGNweQorIyBlbmRpZgorIyBkZWZpbmUgSEFWRV9NRU1QQ1BZCTEKKyMgZGVmaW5lIEhBVkVfX19GU0VUTE9DS0lORwkxCisKKy8qIFdlIG5lZWQgbG9ja2luZyBoZXJlIHNpbmNlIHdlIGNhbiBiZSBjYWxsZWQgZnJvbSBkaWZmZXJlbnQgcGxhY2VzLiAgKi8KKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KKworX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOworI2VuZGlmCisKKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCisjZW5kaWYKKworLyogU29tZSBvcHRpbWl6YXRpb25zIGZvciBnbGliYy4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIEZFT0YoZnApCQlmZW9mX3VubG9ja2VkIChmcCkKKyMgZGVmaW5lIEZHRVRTKGJ1ZiwgbiwgZnApCWZnZXRzX3VubG9ja2VkIChidWYsIG4sIGZwKQorI2Vsc2UKKyMgZGVmaW5lIEZFT0YoZnApCQlmZW9mIChmcCkKKyMgZGVmaW5lIEZHRVRTKGJ1ZiwgbiwgZnApCWZnZXRzIChidWYsIG4sIGZwKQorI2VuZGlmCisKKy8qIEZvciB0aG9zZSBsb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCisgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLworI2lmZGVmIEhBVkVfQUxMT0NBCisjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCisjZWxzZQorIyBkZWZpbmUgYWxsb2NhKG4pIG1hbGxvYyAobikKKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCisjZW5kaWYKKworI2lmIGRlZmluZWQgX0xJQkNfUkVFTlRSQU5UIHx8IEhBVkVfREVDTF9GR0VUU19VTkxPQ0tFRAorIyB1bmRlZiBmZ2V0cworIyBkZWZpbmUgZmdldHMoYnVmLCBsZW4sIHMpIGZnZXRzX3VubG9ja2VkIChidWYsIGxlbiwgcykKKyNlbmRpZgorI2lmIGRlZmluZWQgX0xJQkNfUkVFTlRSQU5UIHx8IEhBVkVfREVDTF9GRU9GX1VOTE9DS0VECisjIHVuZGVmIGZlb2YKKyMgZGVmaW5lIGZlb2YocykgZmVvZl91bmxvY2tlZCAocykKKyNlbmRpZgorCisKK3N0cnVjdCBhbGlhc19tYXAKK3sKKyAgY29uc3QgY2hhciAqYWxpYXM7CisgIGNvbnN0IGNoYXIgKnZhbHVlOworfTsKKworCisjaWZuZGVmIF9MSUJDCisjIGRlZmluZSBsaWJjX2ZyZWVyZXNfcHRyKGRlY2wpIGRlY2wKKyNlbmRpZgorCitsaWJjX2ZyZWVyZXNfcHRyIChzdGF0aWMgY2hhciAqc3RyaW5nX3NwYWNlKTsKK3N0YXRpYyBzaXplX3Qgc3RyaW5nX3NwYWNlX2FjdDsKK3N0YXRpYyBzaXplX3Qgc3RyaW5nX3NwYWNlX21heDsKK2xpYmNfZnJlZXJlc19wdHIgKHN0YXRpYyBzdHJ1Y3QgYWxpYXNfbWFwICptYXApOworc3RhdGljIHNpemVfdCBubWFwOworc3RhdGljIHNpemVfdCBtYXhtYXA7CisKKworLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KK3N0YXRpYyBzaXplX3QgcmVhZF9hbGlhc19maWxlIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikKKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247CitzdGF0aWMgaW50IGV4dGVuZF9hbGlhc190YWJsZSAodm9pZCk7CitzdGF0aWMgaW50IGFsaWFzX2NvbXBhcmUgKGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDEsCisJCQkgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDIpOworCisKK2NvbnN0IGNoYXIgKgorX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoOworICBzdHJ1Y3QgYWxpYXNfbWFwICpyZXR2YWw7CisgIGNvbnN0IGNoYXIgKnJlc3VsdCA9IE5VTEw7CisgIHNpemVfdCBhZGRlZDsKKworI2lmZGVmIF9MSUJDCisgIF9fbGliY19sb2NrX2xvY2sgKGxvY2spOworI2VuZGlmCisKKyAgaWYgKGxvY2FsZV9hbGlhc19wYXRoID09IE5VTEwpCisgICAgbG9jYWxlX2FsaWFzX3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKKworICBkbworICAgIHsKKyAgICAgIHN0cnVjdCBhbGlhc19tYXAgaXRlbTsKKworICAgICAgaXRlbS5hbGlhcyA9IG5hbWU7CisKKyAgICAgIGlmIChubWFwID4gMCkKKwlyZXR2YWwgPSAoc3RydWN0IGFsaWFzX21hcCAqKSBic2VhcmNoICgmaXRlbSwgbWFwLCBubWFwLAorCQkJCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKKwkJCQkJICAgICAgIChpbnQgKCopIChjb25zdCB2b2lkICosCisJCQkJCQkJIGNvbnN0IHZvaWQgKikKKwkJCQkJCSkgYWxpYXNfY29tcGFyZSk7CisgICAgICBlbHNlCisJcmV0dmFsID0gTlVMTDsKKworICAgICAgLyogV2UgcmVhbGx5IGZvdW5kIGFuIGFsaWFzLiAgUmV0dXJuIHRoZSB2YWx1ZS4gICovCisgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCisJeworCSAgcmVzdWx0ID0gcmV0dmFsLT52YWx1ZTsKKwkgIGJyZWFrOworCX0KKworICAgICAgLyogUGVyaGFwcyB3ZSBjYW4gZmluZCBhbm90aGVyIGFsaWFzIGZpbGUuICAqLworICAgICAgYWRkZWQgPSAwOworICAgICAgd2hpbGUgKGFkZGVkID09IDAgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJykKKwl7CisJICBjb25zdCBjaGFyICpzdGFydDsKKworCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09IFBBVEhfU0VQQVJBVE9SKQorCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOworCSAgc3RhcnQgPSBsb2NhbGVfYWxpYXNfcGF0aDsKKworCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcKKwkJICYmIGxvY2FsZV9hbGlhc19wYXRoWzBdICE9IFBBVEhfU0VQQVJBVE9SKQorCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOworCisJICBpZiAoc3RhcnQgPCBsb2NhbGVfYWxpYXNfcGF0aCkKKwkgICAgYWRkZWQgPSByZWFkX2FsaWFzX2ZpbGUgKHN0YXJ0LCBsb2NhbGVfYWxpYXNfcGF0aCAtIHN0YXJ0KTsKKwl9CisgICAgfQorICB3aGlsZSAoYWRkZWQgIT0gMCk7CisKKyNpZmRlZiBfTElCQworICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOworI2VuZGlmCisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgc2l6ZV90CitpbnRlcm5hbF9mdW5jdGlvbgorcmVhZF9hbGlhc19maWxlIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikKK3sKKyAgRklMRSAqZnA7CisgIGNoYXIgKmZ1bGxfZm5hbWU7CisgIHNpemVfdCBhZGRlZDsKKyAgc3RhdGljIGNvbnN0IGNoYXIgYWxpYXNmaWxlW10gPSAiL2xvY2FsZS5hbGlhcyI7CisKKyAgZnVsbF9mbmFtZSA9IChjaGFyICopIGFsbG9jYSAoZm5hbWVfbGVuICsgc2l6ZW9mIGFsaWFzZmlsZSk7CisjaWZkZWYgSEFWRV9NRU1QQ1BZCisgIG1lbXBjcHkgKG1lbXBjcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pLAorCSAgIGFsaWFzZmlsZSwgc2l6ZW9mIGFsaWFzZmlsZSk7CisjZWxzZQorICBtZW1jcHkgKGZ1bGxfZm5hbWUsIGZuYW1lLCBmbmFtZV9sZW4pOworICBtZW1jcHkgKCZmdWxsX2ZuYW1lW2ZuYW1lX2xlbl0sIGFsaWFzZmlsZSwgc2l6ZW9mIGFsaWFzZmlsZSk7CisjZW5kaWYKKworICBmcCA9IGZvcGVuIChyZWxvY2F0ZSAoZnVsbF9mbmFtZSksICJyIik7CisgIGZyZWVhIChmdWxsX2ZuYW1lKTsKKyAgaWYgKGZwID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyNpZmRlZiBIQVZFX19fRlNFVExPQ0tJTkcKKyAgLyogTm8gdGhyZWFkcyBwcmVzZW50LiAgKi8KKyAgX19mc2V0bG9ja2luZyAoZnAsIEZTRVRMT0NLSU5HX0JZQ0FMTEVSKTsKKyNlbmRpZgorCisgIGFkZGVkID0gMDsKKyAgd2hpbGUgKCFGRU9GIChmcCkpCisgICAgeworICAgICAgLyogSXQgaXMgYSByZWFzb25hYmxlIGFwcHJvYWNoIHRvIHVzZSBhIGZpeCBidWZmZXIgaGVyZSBiZWNhdXNlCisJIGEpIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpcnN0IHR3byBmaWVsZHMKKwkgYikgdGhlc2UgZmllbGRzIG11c3QgYmUgdXNhYmxlIGFzIGZpbGUgbmFtZXMgYW5kIHNvIG11c3Qgbm90CisJICAgIGJlIHRoYXQgbG9uZworCSBXZSBhdm9pZCBhIG11bHRpLWtpbG9ieXRlIGJ1ZmZlciBoZXJlIHNpbmNlIHRoaXMgd291bGQgdXNlIHVwCisJIHN0YWNrIHNwYWNlIHdoaWNoIHdlIG1pZ2h0IG5vdCBoYXZlIGlmIHRoZSBwcm9ncmFtIHJhbiBvdXQgb2YKKwkgbWVtb3J5LiAgKi8KKyAgICAgIGNoYXIgYnVmWzQwMF07CisgICAgICBjaGFyICphbGlhczsKKyAgICAgIGNoYXIgKnZhbHVlOworICAgICAgY2hhciAqY3A7CisKKyAgICAgIGlmIChGR0VUUyAoYnVmLCBzaXplb2YgYnVmLCBmcCkgPT0gTlVMTCkKKwkvKiBFT0YgcmVhY2hlZC4gICovCisJYnJlYWs7CisKKyAgICAgIGNwID0gYnVmOworICAgICAgLyogSWdub3JlIGxlYWRpbmcgd2hpdGUgc3BhY2UuICAqLworICAgICAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCisJKytjcDsKKworICAgICAgLyogQSBsZWFkaW5nICcjJyBzaWduYWxzIGEgY29tbWVudCBsaW5lLiAgKi8KKyAgICAgIGlmIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcjJykKKwl7CisJICBhbGlhcyA9IGNwKys7CisJICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKKwkgICAgKytjcDsKKwkgIC8qIFRlcm1pbmF0ZSBhbGlhcyBuYW1lLiAgKi8KKwkgIGlmIChjcFswXSAhPSAnXDAnKQorCSAgICAqY3ArKyA9ICdcMCc7CisKKwkgIC8qIE5vdyBsb29rIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSB2YWx1ZS4gICovCisJICB3aGlsZSAoaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKKwkgICAgKytjcDsKKworCSAgaWYgKGNwWzBdICE9ICdcMCcpCisJICAgIHsKKwkgICAgICBzaXplX3QgYWxpYXNfbGVuOworCSAgICAgIHNpemVfdCB2YWx1ZV9sZW47CisKKwkgICAgICB2YWx1ZSA9IGNwKys7CisJICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCisJCSsrY3A7CisJICAgICAgLyogVGVybWluYXRlIHZhbHVlLiAgKi8KKwkgICAgICBpZiAoY3BbMF0gPT0gJ1xuJykKKwkJeworCQkgIC8qIFRoaXMgaGFzIHRvIGJlIGRvbmUgdG8gbWFrZSB0aGUgZm9sbG93aW5nIHRlc3QKKwkJICAgICBmb3IgdGhlIGVuZCBvZiBsaW5lIHBvc3NpYmxlLiAgV2UgYXJlIGxvb2tpbmcgZm9yCisJCSAgICAgdGhlIHRlcm1pbmF0aW5nICdcbicgd2hpY2ggZG8gbm90IG92ZXJ3cml0ZSBoZXJlLiAgKi8KKwkJICAqY3ArKyA9ICdcMCc7CisJCSAgKmNwID0gJ1xuJzsKKwkJfQorCSAgICAgIGVsc2UgaWYgKGNwWzBdICE9ICdcMCcpCisJCSpjcCsrID0gJ1wwJzsKKworCSAgICAgIGlmIChubWFwID49IG1heG1hcCkKKwkJaWYgKF9fYnVpbHRpbl9leHBlY3QgKGV4dGVuZF9hbGlhc190YWJsZSAoKSwgMCkpCisJCSAgcmV0dXJuIGFkZGVkOworCisJICAgICAgYWxpYXNfbGVuID0gc3RybGVuIChhbGlhcykgKyAxOworCSAgICAgIHZhbHVlX2xlbiA9IHN0cmxlbiAodmFsdWUpICsgMTsKKworCSAgICAgIGlmIChzdHJpbmdfc3BhY2VfYWN0ICsgYWxpYXNfbGVuICsgdmFsdWVfbGVuID4gc3RyaW5nX3NwYWNlX21heCkKKwkJeworCQkgIC8qIEluY3JlYXNlIHNpemUgb2YgbWVtb3J5IHBvb2wuICAqLworCQkgIHNpemVfdCBuZXdfc2l6ZSA9IChzdHJpbmdfc3BhY2VfbWF4CisJCQkJICAgICArIChhbGlhc19sZW4gKyB2YWx1ZV9sZW4gPiAxMDI0CisJCQkJCT8gYWxpYXNfbGVuICsgdmFsdWVfbGVuIDogMTAyNCkpOworCQkgIGNoYXIgKm5ld19wb29sID0gKGNoYXIgKikgcmVhbGxvYyAoc3RyaW5nX3NwYWNlLCBuZXdfc2l6ZSk7CisJCSAgaWYgKG5ld19wb29sID09IE5VTEwpCisJCSAgICByZXR1cm4gYWRkZWQ7CisKKwkJICBpZiAoX19idWlsdGluX2V4cGVjdCAoc3RyaW5nX3NwYWNlICE9IG5ld19wb29sLCAwKSkKKwkJICAgIHsKKwkJICAgICAgc2l6ZV90IGk7CisKKwkJICAgICAgZm9yIChpID0gMDsgaSA8IG5tYXA7IGkrKykKKwkJCXsKKwkJCSAgbWFwW2ldLmFsaWFzICs9IG5ld19wb29sIC0gc3RyaW5nX3NwYWNlOworCQkJICBtYXBbaV0udmFsdWUgKz0gbmV3X3Bvb2wgLSBzdHJpbmdfc3BhY2U7CisJCQl9CisJCSAgICB9CisKKwkJICBzdHJpbmdfc3BhY2UgPSBuZXdfcG9vbDsKKwkJICBzdHJpbmdfc3BhY2VfbWF4ID0gbmV3X3NpemU7CisJCX0KKworCSAgICAgIG1hcFtubWFwXS5hbGlhcyA9IG1lbWNweSAoJnN0cmluZ19zcGFjZVtzdHJpbmdfc3BhY2VfYWN0XSwKKwkJCQkJYWxpYXMsIGFsaWFzX2xlbik7CisJICAgICAgc3RyaW5nX3NwYWNlX2FjdCArPSBhbGlhc19sZW47CisKKwkgICAgICBtYXBbbm1hcF0udmFsdWUgPSBtZW1jcHkgKCZzdHJpbmdfc3BhY2Vbc3RyaW5nX3NwYWNlX2FjdF0sCisJCQkJCXZhbHVlLCB2YWx1ZV9sZW4pOworCSAgICAgIHN0cmluZ19zcGFjZV9hY3QgKz0gdmFsdWVfbGVuOworCisJICAgICAgKytubWFwOworCSAgICAgICsrYWRkZWQ7CisJICAgIH0KKwl9CisKKyAgICAgIC8qIFBvc3NpYmx5IG5vdCB0aGUgd2hvbGUgbGluZSBmaXRzIGludG8gdGhlIGJ1ZmZlci4gIElnbm9yZQorCSB0aGUgcmVzdCBvZiB0aGUgbGluZS4gICovCisgICAgICB3aGlsZSAoc3RyY2hyIChidWYsICdcbicpID09IE5VTEwpCisJaWYgKEZHRVRTIChidWYsIHNpemVvZiBidWYsIGZwKSA9PSBOVUxMKQorCSAgLyogTWFrZSBzdXJlIHRoZSBpbm5lciBsb29wIHdpbGwgYmUgbGVmdC4gIFRoZSBvdXRlciBsb29wCisJICAgICB3aWxsIGV4aXQgYXQgdGhlIGBmZW9mJyB0ZXN0LiAgKi8KKwkgIGJyZWFrOworICAgIH0KKworICAvKiBTaG91bGQgd2UgdGVzdCBmb3IgZmVycm9yKCk/ICBJIHRoaW5rIHdlIGhhdmUgdG8gc2lsZW50bHkgaWdub3JlCisgICAgIGVycm9ycy4gIC0tZHJlcHBlciAgKi8KKyAgZmNsb3NlIChmcCk7CisKKyAgaWYgKGFkZGVkID4gMCkKKyAgICBxc29ydCAobWFwLCBubWFwLCBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAorCSAgIChpbnQgKCopIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpIGFsaWFzX2NvbXBhcmUpOworCisgIHJldHVybiBhZGRlZDsKK30KKworCitzdGF0aWMgaW50CitleHRlbmRfYWxpYXNfdGFibGUgKCkKK3sKKyAgc2l6ZV90IG5ld19zaXplOworICBzdHJ1Y3QgYWxpYXNfbWFwICpuZXdfbWFwOworCisgIG5ld19zaXplID0gbWF4bWFwID09IDAgPyAxMDAgOiAyICogbWF4bWFwOworICBuZXdfbWFwID0gKHN0cnVjdCBhbGlhc19tYXAgKikgcmVhbGxvYyAobWFwLCAobmV3X3NpemUKKwkJCQkJCSogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSkpOworICBpZiAobmV3X21hcCA9PSBOVUxMKQorICAgIC8qIFNpbXBseSBkb24ndCBleHRlbmQ6IHdlIGRvbid0IGhhdmUgYW55IG1vcmUgY29yZS4gICovCisgICAgcmV0dXJuIC0xOworCisgIG1hcCA9IG5ld19tYXA7CisgIG1heG1hcCA9IG5ld19zaXplOworICByZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50CithbGlhc19jb21wYXJlIChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLCBjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAyKQoreworI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkNBU0VDTVAKKyAgcmV0dXJuIHN0cmNhc2VjbXAgKG1hcDEtPmFsaWFzLCBtYXAyLT5hbGlhcyk7CisjZWxzZQorICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMSA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1hcDEtPmFsaWFzOworICBjb25zdCB1bnNpZ25lZCBjaGFyICpwMiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIG1hcDItPmFsaWFzOworICB1bnNpZ25lZCBjaGFyIGMxLCBjMjsKKworICBpZiAocDEgPT0gcDIpCisgICAgcmV0dXJuIDA7CisKKyAgZG8KKyAgICB7CisgICAgICAvKiBJIGtub3cgdGhpcyBzZWVtcyB0byBiZSBvZGQgYnV0IHRoZSB0b2xvd2VyKCkgZnVuY3Rpb24gaW4KKwkgc29tZSBzeXN0ZW1zIGxpYmMgY2Fubm90IGhhbmRsZSBub25hbHBoYSBjaGFyYWN0ZXJzLiAgKi8KKyAgICAgIGMxID0gaXN1cHBlciAoKnAxKSA/IHRvbG93ZXIgKCpwMSkgOiAqcDE7CisgICAgICBjMiA9IGlzdXBwZXIgKCpwMikgPyB0b2xvd2VyICgqcDIpIDogKnAyOworICAgICAgaWYgKGMxID09ICdcMCcpCisJYnJlYWs7CisgICAgICArK3AxOworICAgICAgKytwMjsKKyAgICB9CisgIHdoaWxlIChjMSA9PSBjMik7CisKKyAgcmV0dXJuIGMxIC0gYzI7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL2xvY2FsZW5hbWUuYyBiL2UyZnNwcm9ncy9pbnRsL2xvY2FsZW5hbWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjYyZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvbG9jYWxlbmFtZS5jCkBAIC0wLDAgKzEsMTE0MiBAQAorLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IHNlbGVjdGVkIGxvY2FsZS4KKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5vcmc+LCAxOTk1LiAgKi8KKy8qIFdpbjMyIGNvZGUgd3JpdHRlbiBieSBUb3IgTGlsbHF2aXN0IDx0bWxAaWtpLmZpPi4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxsb2NhbGUuaD4KKworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCisjIHVuZGVmIFdJTjMyICAgLyogYXZvaWQgd2FybmluZyBvbiBtaW5ndzMyICovCisjIGRlZmluZSBXSU4zMgorI2VuZGlmCisKKyNpZmRlZiBXSU4zMgorIyBkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBMaXN0IG9mIGxhbmd1YWdlIGNvZGVzLCBzb3J0ZWQgYnkgdmFsdWU6CisgICAweDAxIExBTkdfQVJBQklDCisgICAweDAyIExBTkdfQlVMR0FSSUFOCisgICAweDAzIExBTkdfQ0FUQUxBTgorICAgMHgwNCBMQU5HX0NISU5FU0UKKyAgIDB4MDUgTEFOR19DWkVDSAorICAgMHgwNiBMQU5HX0RBTklTSAorICAgMHgwNyBMQU5HX0dFUk1BTgorICAgMHgwOCBMQU5HX0dSRUVLCisgICAweDA5IExBTkdfRU5HTElTSAorICAgMHgwYSBMQU5HX1NQQU5JU0gKKyAgIDB4MGIgTEFOR19GSU5OSVNICisgICAweDBjIExBTkdfRlJFTkNICisgICAweDBkIExBTkdfSEVCUkVXCisgICAweDBlIExBTkdfSFVOR0FSSUFOCisgICAweDBmIExBTkdfSUNFTEFORElDCisgICAweDEwIExBTkdfSVRBTElBTgorICAgMHgxMSBMQU5HX0pBUEFORVNFCisgICAweDEyIExBTkdfS09SRUFOCisgICAweDEzIExBTkdfRFVUQ0gKKyAgIDB4MTQgTEFOR19OT1JXRUdJQU4KKyAgIDB4MTUgTEFOR19QT0xJU0gKKyAgIDB4MTYgTEFOR19QT1JUVUdVRVNFCisgICAweDE3IExBTkdfUkhBRVRPX1JPTUFOQ0UKKyAgIDB4MTggTEFOR19ST01BTklBTgorICAgMHgxOSBMQU5HX1JVU1NJQU4KKyAgIDB4MWEgTEFOR19DUk9BVElBTiA9PSBMQU5HX1NFUkJJQU4KKyAgIDB4MWIgTEFOR19TTE9WQUsKKyAgIDB4MWMgTEFOR19BTEJBTklBTgorICAgMHgxZCBMQU5HX1NXRURJU0gKKyAgIDB4MWUgTEFOR19USEFJCisgICAweDFmIExBTkdfVFVSS0lTSAorICAgMHgyMCBMQU5HX1VSRFUKKyAgIDB4MjEgTEFOR19JTkRPTkVTSUFOCisgICAweDIyIExBTkdfVUtSQUlOSUFOCisgICAweDIzIExBTkdfQkVMQVJVU0lBTgorICAgMHgyNCBMQU5HX1NMT1ZFTklBTgorICAgMHgyNSBMQU5HX0VTVE9OSUFOCisgICAweDI2IExBTkdfTEFUVklBTgorICAgMHgyNyBMQU5HX0xJVEhVQU5JQU4KKyAgIDB4MjggTEFOR19UQUpJSworICAgMHgyOSBMQU5HX0ZBUlNJCisgICAweDJhIExBTkdfVklFVE5BTUVTRQorICAgMHgyYiBMQU5HX0FSTUVOSUFOCisgICAweDJjIExBTkdfQVpFUkkKKyAgIDB4MmQgTEFOR19CQVNRVUUKKyAgIDB4MmUgTEFOR19TT1JCSUFOCisgICAweDJmIExBTkdfTUFDRURPTklBTgorICAgMHgzMCBMQU5HX1NVVFUKKyAgIDB4MzEgTEFOR19UU09OR0EKKyAgIDB4MzIgTEFOR19UU1dBTkEKKyAgIDB4MzMgTEFOR19WRU5EQQorICAgMHgzNCBMQU5HX1hIT1NBCisgICAweDM1IExBTkdfWlVMVQorICAgMHgzNiBMQU5HX0FGUklLQUFOUworICAgMHgzNyBMQU5HX0dFT1JHSUFOCisgICAweDM4IExBTkdfRkFFUk9FU0UKKyAgIDB4MzkgTEFOR19ISU5ESQorICAgMHgzYSBMQU5HX01BTFRFU0UKKyAgIDB4M2IgTEFOR19TQUFNSQorICAgMHgzYyBMQU5HX0dBRUxJQworICAgMHgzZCBMQU5HX1lJRERJU0gKKyAgIDB4M2UgTEFOR19NQUxBWQorICAgMHgzZiBMQU5HX0tBWkFLCisgICAweDQwIExBTkdfS1lSR1laCisgICAweDQxIExBTkdfU1dBSElMSQorICAgMHg0MiBMQU5HX1RVUktNRU4KKyAgIDB4NDMgTEFOR19VWkJFSworICAgMHg0NCBMQU5HX1RBVEFSCisgICAweDQ1IExBTkdfQkVOR0FMSQorICAgMHg0NiBMQU5HX1BVTkpBQkkKKyAgIDB4NDcgTEFOR19HVUpBUkFUSQorICAgMHg0OCBMQU5HX09SSVlBCisgICAweDQ5IExBTkdfVEFNSUwKKyAgIDB4NGEgTEFOR19URUxVR1UKKyAgIDB4NGIgTEFOR19LQU5OQURBCisgICAweDRjIExBTkdfTUFMQVlBTEFNCisgICAweDRkIExBTkdfQVNTQU1FU0UKKyAgIDB4NGUgTEFOR19NQVJBVEhJCisgICAweDRmIExBTkdfU0FOU0tSSVQKKyAgIDB4NTAgTEFOR19NT05HT0xJQU4KKyAgIDB4NTEgTEFOR19USUJFVEFOCisgICAweDUyIExBTkdfV0VMU0gKKyAgIDB4NTMgTEFOR19DQU1CT0RJQU4KKyAgIDB4NTQgTEFOR19MQU8KKyAgIDB4NTUgTEFOR19CVVJNRVNFCisgICAweDU2IExBTkdfR0FMSUNJQU4KKyAgIDB4NTcgTEFOR19LT05LQU5JCisgICAweDU4IExBTkdfTUFOSVBVUkkKKyAgIDB4NTkgTEFOR19TSU5ESEkKKyAgIDB4NWEgTEFOR19TWVJJQUMKKyAgIDB4NWIgTEFOR19TSU5IQUxFU0UKKyAgIDB4NWMgTEFOR19DSEVST0tFRQorICAgMHg1ZCBMQU5HX0lOVUtUSVRVVAorICAgMHg1ZSBMQU5HX0FNSEFSSUMKKyAgIDB4NWYgTEFOR19UQU1BWklHSFQKKyAgIDB4NjAgTEFOR19LQVNITUlSSQorICAgMHg2MSBMQU5HX05FUEFMSQorICAgMHg2MiBMQU5HX0ZSSVNJQU4KKyAgIDB4NjMgTEFOR19QQVNIVE8KKyAgIDB4NjQgTEFOR19UQUdBTE9HCisgICAweDY1IExBTkdfRElWRUhJCisgICAweDY2IExBTkdfRURPCisgICAweDY3IExBTkdfRlVMRlVMREUKKyAgIDB4NjggTEFOR19IQVVTQQorICAgMHg2OSBMQU5HX0lCSUJJTworICAgMHg2YSBMQU5HX1lPUlVCQQorICAgMHg3MCBMQU5HX0lHQk8KKyAgIDB4NzEgTEFOR19LQU5VUkkKKyAgIDB4NzIgTEFOR19PUk9NTworICAgMHg3MyBMQU5HX1RJR1JJTllBCisgICAweDc0IExBTkdfR1VBUkFOSQorICAgMHg3NSBMQU5HX0hBV0FJSUFOCisgICAweDc2IExBTkdfTEFUSU4KKyAgIDB4NzcgTEFOR19TT01BTEkKKyAgIDB4NzggTEFOR19ZSQorICAgMHg3OSBMQU5HX1BBUElBTUVOVFUKKyovCisvKiBNaW5ndyBoZWFkZXJzIGRvbid0IGhhdmUgbGF0ZXN0IGxhbmd1YWdlIGFuZCBzdWJsYW5ndWFnZSBjb2Rlcy4gICovCisjIGlmbmRlZiBMQU5HX0FGUklLQUFOUworIyBkZWZpbmUgTEFOR19BRlJJS0FBTlMgMHgzNgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19BTEJBTklBTgorIyBkZWZpbmUgTEFOR19BTEJBTklBTiAweDFjCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0FNSEFSSUMKKyMgZGVmaW5lIExBTkdfQU1IQVJJQyAweDVlCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0FSQUJJQworIyBkZWZpbmUgTEFOR19BUkFCSUMgMHgwMQorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19BUk1FTklBTgorIyBkZWZpbmUgTEFOR19BUk1FTklBTiAweDJiCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0FTU0FNRVNFCisjIGRlZmluZSBMQU5HX0FTU0FNRVNFIDB4NGQKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfQVpFUkkKKyMgZGVmaW5lIExBTkdfQVpFUkkgMHgyYworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19CQVNRVUUKKyMgZGVmaW5lIExBTkdfQkFTUVVFIDB4MmQKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfQkVMQVJVU0lBTgorIyBkZWZpbmUgTEFOR19CRUxBUlVTSUFOIDB4MjMKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfQkVOR0FMSQorIyBkZWZpbmUgTEFOR19CRU5HQUxJIDB4NDUKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfQlVSTUVTRQorIyBkZWZpbmUgTEFOR19CVVJNRVNFIDB4NTUKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfQ0FNQk9ESUFOCisjIGRlZmluZSBMQU5HX0NBTUJPRElBTiAweDUzCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0NBVEFMQU4KKyMgZGVmaW5lIExBTkdfQ0FUQUxBTiAweDAzCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0NIRVJPS0VFCisjIGRlZmluZSBMQU5HX0NIRVJPS0VFIDB4NWMKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfRElWRUhJCisjIGRlZmluZSBMQU5HX0RJVkVISSAweDY1CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0VETworIyBkZWZpbmUgTEFOR19FRE8gMHg2NgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19FU1RPTklBTgorIyBkZWZpbmUgTEFOR19FU1RPTklBTiAweDI1CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0ZBRVJPRVNFCisjIGRlZmluZSBMQU5HX0ZBRVJPRVNFIDB4MzgKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfRkFSU0kKKyMgZGVmaW5lIExBTkdfRkFSU0kgMHgyOQorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19GUklTSUFOCisjIGRlZmluZSBMQU5HX0ZSSVNJQU4gMHg2MgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19GVUxGVUxERQorIyBkZWZpbmUgTEFOR19GVUxGVUxERSAweDY3CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0dBRUxJQworIyBkZWZpbmUgTEFOR19HQUVMSUMgMHgzYworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19HQUxJQ0lBTgorIyBkZWZpbmUgTEFOR19HQUxJQ0lBTiAweDU2CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0dFT1JHSUFOCisjIGRlZmluZSBMQU5HX0dFT1JHSUFOIDB4MzcKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfR1VBUkFOSQorIyBkZWZpbmUgTEFOR19HVUFSQU5JIDB4NzQKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfR1VKQVJBVEkKKyMgZGVmaW5lIExBTkdfR1VKQVJBVEkgMHg0NworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19IQVVTQQorIyBkZWZpbmUgTEFOR19IQVVTQSAweDY4CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0hBV0FJSUFOCisjIGRlZmluZSBMQU5HX0hBV0FJSUFOIDB4NzUKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfSEVCUkVXCisjIGRlZmluZSBMQU5HX0hFQlJFVyAweDBkCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0hJTkRJCisjIGRlZmluZSBMQU5HX0hJTkRJIDB4MzkKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfSUJJQklPCisjIGRlZmluZSBMQU5HX0lCSUJJTyAweDY5CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0lHQk8KKyMgZGVmaW5lIExBTkdfSUdCTyAweDcwCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0lORE9ORVNJQU4KKyMgZGVmaW5lIExBTkdfSU5ET05FU0lBTiAweDIxCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0lOVUtUSVRVVAorIyBkZWZpbmUgTEFOR19JTlVLVElUVVQgMHg1ZAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19LQU5OQURBCisjIGRlZmluZSBMQU5HX0tBTk5BREEgMHg0YgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19LQU5VUkkKKyMgZGVmaW5lIExBTkdfS0FOVVJJIDB4NzEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfS0FTSE1JUkkKKyMgZGVmaW5lIExBTkdfS0FTSE1JUkkgMHg2MAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19LQVpBSworIyBkZWZpbmUgTEFOR19LQVpBSyAweDNmCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0tPTktBTkkKKyMgZGVmaW5lIExBTkdfS09OS0FOSSAweDU3CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX0tZUkdZWgorIyBkZWZpbmUgTEFOR19LWVJHWVogMHg0MAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19MQU8KKyMgZGVmaW5lIExBTkdfTEFPIDB4NTQKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfTEFUSU4KKyMgZGVmaW5lIExBTkdfTEFUSU4gMHg3NgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19MQVRWSUFOCisjIGRlZmluZSBMQU5HX0xBVFZJQU4gMHgyNgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19MSVRIVUFOSUFOCisjIGRlZmluZSBMQU5HX0xJVEhVQU5JQU4gMHgyNworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19NQUNFRE9OSUFOCisjIGRlZmluZSBMQU5HX01BQ0VET05JQU4gMHgyZgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19NQUxBWQorIyBkZWZpbmUgTEFOR19NQUxBWSAweDNlCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX01BTEFZQUxBTQorIyBkZWZpbmUgTEFOR19NQUxBWUFMQU0gMHg0YworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19NQUxURVNFCisjIGRlZmluZSBMQU5HX01BTFRFU0UgMHgzYQorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19NQU5JUFVSSQorIyBkZWZpbmUgTEFOR19NQU5JUFVSSSAweDU4CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX01BUkFUSEkKKyMgZGVmaW5lIExBTkdfTUFSQVRISSAweDRlCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX01PTkdPTElBTgorIyBkZWZpbmUgTEFOR19NT05HT0xJQU4gMHg1MAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19ORVBBTEkKKyMgZGVmaW5lIExBTkdfTkVQQUxJIDB4NjEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfT1JJWUEKKyMgZGVmaW5lIExBTkdfT1JJWUEgMHg0OAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19PUk9NTworIyBkZWZpbmUgTEFOR19PUk9NTyAweDcyCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1BBUElBTUVOVFUKKyMgZGVmaW5lIExBTkdfUEFQSUFNRU5UVSAweDc5CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1BBU0hUTworIyBkZWZpbmUgTEFOR19QQVNIVE8gMHg2MworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19QVU5KQUJJCisjIGRlZmluZSBMQU5HX1BVTkpBQkkgMHg0NgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19SSEFFVE9fUk9NQU5DRQorIyBkZWZpbmUgTEFOR19SSEFFVE9fUk9NQU5DRSAweDE3CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1NBQU1JCisjIGRlZmluZSBMQU5HX1NBQU1JIDB4M2IKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU0FOU0tSSVQKKyMgZGVmaW5lIExBTkdfU0FOU0tSSVQgMHg0ZgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19TRVJCSUFOCisjIGRlZmluZSBMQU5HX1NFUkJJQU4gMHgxYQorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19TSU5ESEkKKyMgZGVmaW5lIExBTkdfU0lOREhJIDB4NTkKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU0lOSEFMRVNFCisjIGRlZmluZSBMQU5HX1NJTkhBTEVTRSAweDViCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1NMT1ZBSworIyBkZWZpbmUgTEFOR19TTE9WQUsgMHgxYgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19TT01BTEkKKyMgZGVmaW5lIExBTkdfU09NQUxJIDB4NzcKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU09SQklBTgorIyBkZWZpbmUgTEFOR19TT1JCSUFOIDB4MmUKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU1VUVQorIyBkZWZpbmUgTEFOR19TVVRVIDB4MzAKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU1dBSElMSQorIyBkZWZpbmUgTEFOR19TV0FISUxJIDB4NDEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfU1lSSUFDCisjIGRlZmluZSBMQU5HX1NZUklBQyAweDVhCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1RBR0FMT0cKKyMgZGVmaW5lIExBTkdfVEFHQUxPRyAweDY0CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1RBSklLCisjIGRlZmluZSBMQU5HX1RBSklLIDB4MjgKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVEFNQVpJR0hUCisjIGRlZmluZSBMQU5HX1RBTUFaSUdIVCAweDVmCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1RBTUlMCisjIGRlZmluZSBMQU5HX1RBTUlMIDB4NDkKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVEFUQVIKKyMgZGVmaW5lIExBTkdfVEFUQVIgMHg0NAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19URUxVR1UKKyMgZGVmaW5lIExBTkdfVEVMVUdVIDB4NGEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVEhBSQorIyBkZWZpbmUgTEFOR19USEFJIDB4MWUKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVElCRVRBTgorIyBkZWZpbmUgTEFOR19USUJFVEFOIDB4NTEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVElHUklOWUEKKyMgZGVmaW5lIExBTkdfVElHUklOWUEgMHg3MworIyBlbmRpZgorIyBpZm5kZWYgTEFOR19UU09OR0EKKyMgZGVmaW5lIExBTkdfVFNPTkdBIDB4MzEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVFNXQU5BCisjIGRlZmluZSBMQU5HX1RTV0FOQSAweDMyCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1RVUktNRU4KKyMgZGVmaW5lIExBTkdfVFVSS01FTiAweDQyCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1VLUkFJTklBTgorIyBkZWZpbmUgTEFOR19VS1JBSU5JQU4gMHgyMgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19VUkRVCisjIGRlZmluZSBMQU5HX1VSRFUgMHgyMAorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19VWkJFSworIyBkZWZpbmUgTEFOR19VWkJFSyAweDQzCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1ZFTkRBCisjIGRlZmluZSBMQU5HX1ZFTkRBIDB4MzMKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfVklFVE5BTUVTRQorIyBkZWZpbmUgTEFOR19WSUVUTkFNRVNFIDB4MmEKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfV0VMU0gKKyMgZGVmaW5lIExBTkdfV0VMU0ggMHg1MgorIyBlbmRpZgorIyBpZm5kZWYgTEFOR19YSE9TQQorIyBkZWZpbmUgTEFOR19YSE9TQSAweDM0CisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1lJCisjIGRlZmluZSBMQU5HX1lJIDB4NzgKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfWUlERElTSAorIyBkZWZpbmUgTEFOR19ZSURESVNIIDB4M2QKKyMgZW5kaWYKKyMgaWZuZGVmIExBTkdfWU9SVUJBCisjIGRlZmluZSBMQU5HX1lPUlVCQSAweDZhCisjIGVuZGlmCisjIGlmbmRlZiBMQU5HX1pVTFUKKyMgZGVmaW5lIExBTkdfWlVMVSAweDM1CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUEKKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NBVURJX0FSQUJJQSAweDAxCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19JUkFRCisjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19JUkFRIDB4MDIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0VHWVBUCisjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19FR1lQVCAweDAzCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19MSUJZQQorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfTElCWUEgMHgwNAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfQUxHRVJJQQorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQUxHRVJJQSAweDA1CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPCisjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPIDB4MDYKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1RVTklTSUEKKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1RVTklTSUEgMHgwNworIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfT01BTgorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfT01BTiAweDA4CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19ZRU1FTgorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfWUVNRU4gMHgwOQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfU1lSSUEKKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1NZUklBIDB4MGEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0pPUkRBTgorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfSk9SREFOIDB4MGIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0xFQkFOT04KKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0xFQkFOT04gMHgwYworIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfS1VXQUlUCisjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19LVVdBSVQgMHgwZAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfVUFFCisjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19VQUUgMHgwZQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfQkFIUkFJTgorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfQkFIUkFJTiAweDBmCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19RQVRBUgorIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfUUFUQVIgMHgxMAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19BWkVSSV9MQVRJTgorIyBkZWZpbmUgU1VCTEFOR19BWkVSSV9MQVRJTiAweDAxCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0FaRVJJX0NZUklMTElDCisjIGRlZmluZSBTVUJMQU5HX0FaRVJJX0NZUklMTElDIDB4MDIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQkVOR0FMSV9JTkRJQQorIyBkZWZpbmUgU1VCTEFOR19CRU5HQUxJX0lORElBIDB4MDAKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfQkVOR0FMSV9CQU5HTEFERVNICisjIGRlZmluZSBTVUJMQU5HX0JFTkdBTElfQkFOR0xBREVTSCAweDAxCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0NISU5FU0VfTUFDQVUKKyMgZGVmaW5lIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVSAweDA1CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBIDB4MDcKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9KQU1BSUNBCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSkFNQUlDQSAweDA4CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOIDB4MDkKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9CRUxJWkUKKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9CRUxJWkUgMHgwYQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1RSSU5JREFECisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQgMHgwYgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1pJTUJBQldFCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0UgMHgwYworIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1BISUxJUFBJTkVTCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfUEhJTElQUElORVMgMHgwZAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQQorIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQSAweDBlCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSE9OR0tPTkcKKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9IT05HS09ORyAweDBmCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSU5ESUEKKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9JTkRJQSAweDEwCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUEKKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9NQUxBWVNJQSAweDExCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFCisjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFIDB4MTIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkcKKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkcgMHgwNQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTU9OQUNPCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT05BQ08gMHgwNgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUworIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUyAweDA3CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OIDB4MDgKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NPTkdPCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DT05HTyAweDA5CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMIDB4MGEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NBTUVST09OCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTiAweDBiCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9DT1RFRElWT0lSRQorIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfQ09URURJVk9JUkUgMHgwYworIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTUFMSQorIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTUFMSSAweDBkCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPIDB4MGUKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0hBSVRJCisjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9IQUlUSSAweDBmCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHCisjIGRlZmluZSBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHIDB4MDQKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU4KKyMgZGVmaW5lIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU4gMHgwNQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19LQVNITUlSSV9JTkRJQQorIyBkZWZpbmUgU1VCTEFOR19LQVNITUlSSV9JTkRJQSAweDAyCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX01BTEFZX01BTEFZU0lBCisjIGRlZmluZSBTVUJMQU5HX01BTEFZX01BTEFZU0lBIDB4MDEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0KKyMgZGVmaW5lIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0gMHgwMgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19ORVBBTElfSU5ESUEKKyMgZGVmaW5lIFNVQkxBTkdfTkVQQUxJX0lORElBIDB4MDIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfUFVOSkFCSV9JTkRJQQorIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX0lORElBIDB4MDAKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfUFVOSkFCSV9QQUtJU1RBTgorIyBkZWZpbmUgU1VCTEFOR19QVU5KQUJJX1BBS0lTVEFOIDB4MDEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfUk9NQU5JQU5fUk9NQU5JQQorIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9ST01BTklBIDB4MDAKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfUk9NQU5JQU5fTU9MRE9WQQorIyBkZWZpbmUgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBIDB4MDEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU0VSQklBTl9MQVRJTgorIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0xBVElOIDB4MDIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU0VSQklBTl9DWVJJTExJQworIyBkZWZpbmUgU1VCTEFOR19TRVJCSUFOX0NZUklMTElDIDB4MDMKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU0lOREhJX0lORElBCisjIGRlZmluZSBTVUJMQU5HX1NJTkRISV9JTkRJQSAweDAwCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NJTkRISV9QQUtJU1RBTgorIyBkZWZpbmUgU1VCTEFOR19TSU5ESElfUEFLSVNUQU4gMHgwMQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQSAweDA0CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQ09TVEFfUklDQQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NPU1RBX1JJQ0EgMHgwNQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BBTkFNQQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1BBTkFNQSAweDA2CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDCisjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDIDB4MDcKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEEKKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEEgMHgwOAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0NPTE9NQklBCisjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQ09MT01CSUEgMHgwOQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BFUlUKKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QRVJVIDB4MGEKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkEKKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkEgMHgwYgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0VDVUFET1IKKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SIDB4MGMKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9DSElMRQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NISUxFIDB4MGQKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9VUlVHVUFZCisjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWSAweDBlCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEFSQUdVQVkKKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWSAweDBmCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQk9MSVZJQQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0JPTElWSUEgMHgxMAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SCisjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRUxfU0FMVkFET1IgMHgxMQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0hPTkRVUkFTCisjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfSE9ORFVSQVMgMHgxMgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQQorIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQSAweDEzCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUFVFUlRPX1JJQ08KKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTyAweDE0CisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1NXRURJU0hfRklOTEFORAorIyBkZWZpbmUgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQgMHgwMgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19UQU1BWklHSFRfQVJBQklDCisjIGRlZmluZSBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUMgMHgwMQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19UQU1BWklHSFRfTEFUSU4KKyMgZGVmaW5lIFNVQkxBTkdfVEFNQVpJR0hUX0xBVElOIDB4MDIKKyMgZW5kaWYKKyMgaWZuZGVmIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUEKKyMgZGVmaW5lIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUEgMHgwMAorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBCisjIGRlZmluZSBTVUJMQU5HX1RJR1JJTllBX0VSSVRSRUEgMHgwMQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19VUkRVX1BBS0lTVEFOCisjIGRlZmluZSBTVUJMQU5HX1VSRFVfUEFLSVNUQU4gMHgwMQorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19VUkRVX0lORElBCisjIGRlZmluZSBTVUJMQU5HX1VSRFVfSU5ESUEgMHgwMgorIyBlbmRpZgorIyBpZm5kZWYgU1VCTEFOR19VWkJFS19MQVRJTgorIyBkZWZpbmUgU1VCTEFOR19VWkJFS19MQVRJTiAweDAxCisjIGVuZGlmCisjIGlmbmRlZiBTVUJMQU5HX1VaQkVLX0NZUklMTElDCisjIGRlZmluZSBTVUJMQU5HX1VaQkVLX0NZUklMTElDIDB4MDIKKyMgZW5kaWYKKyNlbmRpZgorCisvKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiAnc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgorICAgIkRpcmVjdHMgJ3NldGxvY2FsZSgpJyB0byBxdWVyeSAnY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKKyAgICBzZXR0aW5nIG9mICdsb2NhbCcuIgorICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBOZWl0aGVyIGRvIFNVU1YyIGFuZAorICAgSVNPIEMgOTkuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkIHN5c3RlbXMgKGUuZy4KKyAgIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KKyNpZiBkZWZpbmVkIF9MSUJDIHx8IChkZWZpbmVkIF9fR05VX0xJQlJBUllfXyAmJiBfX0dOVV9MSUJSQVJZX18gPj0gMikKKyMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKKyNlbmRpZgorCisvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgbmFtZSwgYW5kIGNhbm9uaWNhbGl6ZSBpdCBpbnRvIFhQRyBzeW50YXgKKyAgICAgbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0KKyAgIFRoZSBjb2Rlc2V0IHBhcnQgaW4gdGhlIHJlc3VsdCBpcyBub3QgcmVsaWFibGU7IHRoZSBsb2NhbGVfY2hhcnNldCgpCisgICBzaG91bGQgYmUgdXNlZCBmb3IgY29kZXNldCBpbmZvcm1hdGlvbiBpbnN0ZWFkLgorICAgVGhlIHJlc3VsdCBtdXN0IG5vdCBiZSBmcmVlZDsgaXQgaXMgc3RhdGljYWxseSBhbGxvY2F0ZWQuICAqLworCitjb25zdCBjaGFyICoKK19ubF9sb2NhbGVfbmFtZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCit7CisgIGNvbnN0IGNoYXIgKnJldHZhbDsKKworI2lmbmRlZiBXSU4zMgorCisgIC8qIFVzZSB0aGUgUE9TSVggbWV0aG9kcyBvZiBsb29raW5nIHRvICdMQ19BTEwnLCAnTENfeHh4JywgYW5kICdMQU5HJy4KKyAgICAgT24gc29tZSBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlICdzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCisjIGlmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAorICByZXR2YWwgPSBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKTsKKyMgZWxzZQorICAvKiBTZXR0aW5nIG9mIExDX0FMTCBvdmVyd3JpdGVzIGFsbCBvdGhlci4gICovCisgIHJldHZhbCA9IGdldGVudiAoIkxDX0FMTCIpOworICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCisgICAgeworICAgICAgLyogTmV4dCBjb21lcyB0aGUgbmFtZSBvZiB0aGUgZGVzaXJlZCBjYXRlZ29yeS4gICovCisgICAgICByZXR2YWwgPSBnZXRlbnYgKGNhdGVnb3J5bmFtZSk7CisgICAgICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCisJeworCSAgLyogTGFzdCBwb3NzaWJpbGl0eSBpcyB0aGUgTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCisJICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7CisJICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCisJICAgIC8qIFdlIHVzZSBDIGFzIHRoZSBkZWZhdWx0IGRvbWFpbi4gIFBPU0lYIHNheXMgdGhpcyBpcworCSAgICAgICBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiAgKi8KKwkgICAgcmV0dmFsID0gIkMiOworCX0KKyAgICB9CisjIGVuZGlmCisKKyAgcmV0dXJuIHJldHZhbDsKKworI2Vsc2UgLyogV0lOMzIgKi8KKworICAvKiBSZXR1cm4gYW4gWFBHIHN0eWxlIGxvY2FsZSBuYW1lIGxhbmd1YWdlW190ZXJyaXRvcnldW0Btb2RpZmllcl0uCisgICAgIERvbid0IGV2ZW4gYm90aGVyIGRldGVybWluaW5nIHRoZSBjb2Rlc2V0OyBpdCdzIG5vdCB1c2VmdWwgaW4gdGhpcworICAgICBjb250ZXh0LCBiZWNhdXNlIG1lc3NhZ2UgY2F0YWxvZ3MgYXJlIG5vdCBzcGVjaWZpYyB0byBhIHNpbmdsZQorICAgICBjb2Rlc2V0LiAgKi8KKworICBMQ0lEIGxjaWQ7CisgIExBTkdJRCBsYW5naWQ7CisgIGludCBwcmltYXJ5LCBzdWI7CisKKyAgLyogTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSBzeXN0ZW0gc2V0dGluZ3MgdGhyb3VnaCBlbnZpcm9ubWVudAorICAgICB2YXJpYWJsZXMsIGFzIG9uIFBPU0lYIHN5c3RlbXMuICAqLworICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorICAgIHJldHVybiByZXR2YWw7CisgIHJldHZhbCA9IGdldGVudiAoY2F0ZWdvcnluYW1lKTsKKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorICAgIHJldHVybiByZXR2YWw7CisgIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKKyAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorICAgIHJldHVybiByZXR2YWw7CisKKyAgLyogVXNlIG5hdGl2ZSBXaW4zMiBBUEkgbG9jYWxlIElELiAgKi8KKyAgbGNpZCA9IEdldFRocmVhZExvY2FsZSAoKTsKKworICAvKiBTdHJpcCBvZmYgdGhlIHNvcnRpbmcgcnVsZXMsIGtlZXAgb25seSB0aGUgbGFuZ3VhZ2UgcGFydC4gICovCisgIGxhbmdpZCA9IExBTkdJREZST01MQ0lEIChsY2lkKTsKKworICAvKiBTcGxpdCBpbnRvIGxhbmd1YWdlIGFuZCB0ZXJyaXRvcnkgcGFydC4gICovCisgIHByaW1hcnkgPSBQUklNQVJZTEFOR0lEIChsYW5naWQpOworICBzdWIgPSBTVUJMQU5HSUQgKGxhbmdpZCk7CisKKyAgLyogRGlzcGF0Y2ggb24gbGFuZ3VhZ2UuCisgICAgIFNlZSBhbHNvIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9vbmxpbmVkYXQvbGFuZ3VhZ2VzLmh0bWwgLgorICAgICBGb3IgZGV0YWlscyBhYm91dCBsYW5ndWFnZXMsIHNlZSBodHRwOi8vd3d3LmV0aG5vbG9ndWUuY29tLyAuICAqLworICBzd2l0Y2ggKHByaW1hcnkpCisgICAgeworICAgIGNhc2UgTEFOR19BRlJJS0FBTlM6IHJldHVybiAiYWZfWkEiOworICAgIGNhc2UgTEFOR19BTEJBTklBTjogcmV0dXJuICJzcV9BTCI7CisgICAgY2FzZSBMQU5HX0FNSEFSSUM6IHJldHVybiAiYW1fRVQiOworICAgIGNhc2UgTEFOR19BUkFCSUM6CisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUE6IHJldHVybiAiYXJfU0EiOworCWNhc2UgU1VCTEFOR19BUkFCSUNfSVJBUTogcmV0dXJuICJhcl9JUSI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19FR1lQVDogcmV0dXJuICJhcl9FRyI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19MSUJZQTogcmV0dXJuICJhcl9MWSI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19BTEdFUklBOiByZXR1cm4gImFyX0RaIjsKKwljYXNlIFNVQkxBTkdfQVJBQklDX01PUk9DQ086IHJldHVybiAiYXJfTUEiOworCWNhc2UgU1VCTEFOR19BUkFCSUNfVFVOSVNJQTogcmV0dXJuICJhcl9UTiI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19PTUFOOiByZXR1cm4gImFyX09NIjsKKwljYXNlIFNVQkxBTkdfQVJBQklDX1lFTUVOOiByZXR1cm4gImFyX1lFIjsKKwljYXNlIFNVQkxBTkdfQVJBQklDX1NZUklBOiByZXR1cm4gImFyX1NZIjsKKwljYXNlIFNVQkxBTkdfQVJBQklDX0pPUkRBTjogcmV0dXJuICJhcl9KTyI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19MRUJBTk9OOiByZXR1cm4gImFyX0xCIjsKKwljYXNlIFNVQkxBTkdfQVJBQklDX0tVV0FJVDogcmV0dXJuICJhcl9LVyI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19VQUU6IHJldHVybiAiYXJfQUUiOworCWNhc2UgU1VCTEFOR19BUkFCSUNfQkFIUkFJTjogcmV0dXJuICJhcl9CSCI7CisJY2FzZSBTVUJMQU5HX0FSQUJJQ19RQVRBUjogcmV0dXJuICJhcl9RQSI7CisJfQorICAgICAgcmV0dXJuICJhciI7CisgICAgY2FzZSBMQU5HX0FSTUVOSUFOOiByZXR1cm4gImh5X0FNIjsKKyAgICBjYXNlIExBTkdfQVNTQU1FU0U6IHJldHVybiAiYXNfSU4iOworICAgIGNhc2UgTEFOR19BWkVSSToKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwkvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBBemVyYmFpamFuaSBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KKwljYXNlIFNVQkxBTkdfQVpFUklfTEFUSU46IHJldHVybiAiYXpfQVpAbGF0aW4iOworCWNhc2UgU1VCTEFOR19BWkVSSV9DWVJJTExJQzogcmV0dXJuICJhel9BWkBjeXJpbGxpYyI7CisJfQorICAgICAgcmV0dXJuICJheiI7CisgICAgY2FzZSBMQU5HX0JBU1FVRToKKyAgICAgIHJldHVybiAiZXUiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJldV9FUyIgb3IgImV1X0ZSIi4gICovCisgICAgY2FzZSBMQU5HX0JFTEFSVVNJQU46IHJldHVybiAiYmVfQlkiOworICAgIGNhc2UgTEFOR19CRU5HQUxJOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19CRU5HQUxJX0lORElBOiByZXR1cm4gImJuX0lOIjsKKwljYXNlIFNVQkxBTkdfQkVOR0FMSV9CQU5HTEFERVNIOiByZXR1cm4gImJuX0JEIjsKKwl9CisgICAgICByZXR1cm4gImJuIjsKKyAgICBjYXNlIExBTkdfQlVMR0FSSUFOOiByZXR1cm4gImJnX0JHIjsKKyAgICBjYXNlIExBTkdfQlVSTUVTRTogcmV0dXJuICJteV9NTSI7CisgICAgY2FzZSBMQU5HX0NBTUJPRElBTjogcmV0dXJuICJrbV9LSCI7CisgICAgY2FzZSBMQU5HX0NBVEFMQU46IHJldHVybiAiY2FfRVMiOworICAgIGNhc2UgTEFOR19DSEVST0tFRTogcmV0dXJuICJjaHJfVVMiOworICAgIGNhc2UgTEFOR19DSElORVNFOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19DSElORVNFX1RSQURJVElPTkFMOiByZXR1cm4gInpoX1RXIjsKKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9TSU1QTElGSUVEOiByZXR1cm4gInpoX0NOIjsKKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9IT05HS09ORzogcmV0dXJuICJ6aF9ISyI7CisJY2FzZSBTVUJMQU5HX0NISU5FU0VfU0lOR0FQT1JFOiByZXR1cm4gInpoX1NHIjsKKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVTogcmV0dXJuICJ6aF9NTyI7CisJfQorICAgICAgcmV0dXJuICJ6aCI7CisgICAgY2FzZSBMQU5HX0NST0FUSUFOOgkJLyogTEFOR19DUk9BVElBTiA9PSBMQU5HX1NFUkJJQU4KKwkJCQkgKiBXaGF0IHVzZWQgdG8gYmUgY2FsbGVkIFNlcmJvLUNyb2F0aWFuCisJCQkJICogc2hvdWxkIHJlYWxseSBub3cgYmUgdHdvIHNlcGFyYXRlCisJCQkJICogbGFuZ3VhZ2VzIGJlY2F1c2Ugb2YgcG9saXRpY2FsIHJlYXNvbnMuCisJCQkJICogKFNheXMgdG1sLCB3aG8ga25vd3Mgbm90aGluZyBhYm91dCBTZXJiaWFuCisJCQkJICogb3IgQ3JvYXRpYW4uKQorCQkJCSAqIChJIGNhbiBmZWVsIHRob3NlIGZsYW1lcyBjb21pbmcgYWxyZWFkeS4pCisJCQkJICovCisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAiaHJfSFIiOworCWNhc2UgU1VCTEFOR19TRVJCSUFOX0xBVElOOiByZXR1cm4gInNyX0NTIjsKKwljYXNlIFNVQkxBTkdfU0VSQklBTl9DWVJJTExJQzogcmV0dXJuICJzcl9DU0BjeXJpbGxpYyI7CisJfQorICAgICAgcmV0dXJuICJociI7CisgICAgY2FzZSBMQU5HX0NaRUNIOiByZXR1cm4gImNzX0NaIjsKKyAgICBjYXNlIExBTkdfREFOSVNIOiByZXR1cm4gImRhX0RLIjsKKyAgICBjYXNlIExBTkdfRElWRUhJOiByZXR1cm4gImR2X01WIjsKKyAgICBjYXNlIExBTkdfRFVUQ0g6CisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX0RVVENIOiByZXR1cm4gIm5sX05MIjsKKwljYXNlIFNVQkxBTkdfRFVUQ0hfQkVMR0lBTjogLyogRkxFTUlTSCwgVkxBQU1TICovIHJldHVybiAibmxfQkUiOworCX0KKyAgICAgIHJldHVybiAibmwiOworICAgIGNhc2UgTEFOR19FRE86IHJldHVybiAiYmluX05HIjsKKyAgICBjYXNlIExBTkdfRU5HTElTSDoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwkvKiBTVUJMQU5HX0VOR0xJU0hfVVMgPT0gU1VCTEFOR19ERUZBVUxULiBIZWguIEkgdGhvdWdodAorCSAqIEVuZ2xpc2ggd2FzIHRoZSBsYW5ndWFnZSBzcG9rZW4gaW4gRW5nbGFuZC4KKwkgKiBPaCB3ZWxsLgorCSAqLworCWNhc2UgU1VCTEFOR19FTkdMSVNIX1VTOiByZXR1cm4gImVuX1VTIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9VSzogcmV0dXJuICJlbl9HQiI7CisJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQVVTOiByZXR1cm4gImVuX0FVIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9DQU46IHJldHVybiAiZW5fQ0EiOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX05aOiByZXR1cm4gImVuX05aIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9FSVJFOiByZXR1cm4gImVuX0lFIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9TT1VUSF9BRlJJQ0E6IHJldHVybiAiZW5fWkEiOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0E6IHJldHVybiAiZW5fSk0iOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX0NBUklCQkVBTjogcmV0dXJuICJlbl9HRCI7IC8qIEdyZW5hZGE/ICovCisJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQkVMSVpFOiByZXR1cm4gImVuX0JaIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9UUklOSURBRDogcmV0dXJuICJlbl9UVCI7CisJY2FzZSBTVUJMQU5HX0VOR0xJU0hfWklNQkFCV0U6IHJldHVybiAiZW5fWlciOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX1BISUxJUFBJTkVTOiByZXR1cm4gImVuX1BIIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9JTkRPTkVTSUE6IHJldHVybiAiZW5fSUQiOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX0hPTkdLT05HOiByZXR1cm4gImVuX0hLIjsKKwljYXNlIFNVQkxBTkdfRU5HTElTSF9JTkRJQTogcmV0dXJuICJlbl9JTiI7CisJY2FzZSBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUE6IHJldHVybiAiZW5fTVkiOworCWNhc2UgU1VCTEFOR19FTkdMSVNIX1NJTkdBUE9SRTogcmV0dXJuICJlbl9TRyI7CisJfQorICAgICAgcmV0dXJuICJlbiI7CisgICAgY2FzZSBMQU5HX0VTVE9OSUFOOiByZXR1cm4gImV0X0VFIjsKKyAgICBjYXNlIExBTkdfRkFFUk9FU0U6IHJldHVybiAiZm9fRk8iOworICAgIGNhc2UgTEFOR19GQVJTSTogcmV0dXJuICJmYV9JUiI7CisgICAgY2FzZSBMQU5HX0ZJTk5JU0g6IHJldHVybiAiZmlfRkkiOworICAgIGNhc2UgTEFOR19GUkVOQ0g6CisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSDogcmV0dXJuICJmcl9GUiI7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSF9CRUxHSUFOOiAvKiBXQUxMT09OICovIHJldHVybiAiZnJfQkUiOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ0FOQURJQU46IHJldHVybiAiZnJfQ0EiOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfU1dJU1M6IHJldHVybiAiZnJfQ0giOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfTFVYRU1CT1VSRzogcmV0dXJuICJmcl9MVSI7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSF9NT05BQ086IHJldHVybiAiZnJfTUMiOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUzogcmV0dXJuICJmciI7IC8qIENhcmliYmVhbj8gKi8KKwljYXNlIFNVQkxBTkdfRlJFTkNIX1JFVU5JT046IHJldHVybiAiZnJfUkUiOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ09OR086IHJldHVybiAiZnJfQ0ciOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfU0VORUdBTDogcmV0dXJuICJmcl9TTiI7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DQU1FUk9PTjogcmV0dXJuICJmcl9DTSI7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DT1RFRElWT0lSRTogcmV0dXJuICJmcl9DSSI7CisJY2FzZSBTVUJMQU5HX0ZSRU5DSF9NQUxJOiByZXR1cm4gImZyX01MIjsKKwljYXNlIFNVQkxBTkdfRlJFTkNIX01PUk9DQ086IHJldHVybiAiZnJfTUEiOworCWNhc2UgU1VCTEFOR19GUkVOQ0hfSEFJVEk6IHJldHVybiAiZnJfSFQiOworCX0KKyAgICAgIHJldHVybiAiZnIiOworICAgIGNhc2UgTEFOR19GUklTSUFOOiByZXR1cm4gImZ5X05MIjsKKyAgICBjYXNlIExBTkdfRlVMRlVMREU6CisgICAgICAvKiBTcG9rZW4gaW4gTmlnZXJpYSwgR3VpbmVhLCBTZW5lZ2FsLCBNYWxpLCBOaWdlciwgQ2FtZXJvb24sIEJlbmluLiAqLworICAgICAgcmV0dXJuICJmZl9ORyI7CisgICAgY2FzZSBMQU5HX0dBRUxJQzoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIDB4MDE6IC8qIFNDT1RUSVNIICovIHJldHVybiAiZ2RfR0IiOworCWNhc2UgMHgwMjogLyogSVJJU0ggKi8gcmV0dXJuICJnYV9JRSI7CisJfQorICAgICAgcmV0dXJuICJDIjsKKyAgICBjYXNlIExBTkdfR0FMSUNJQU46IHJldHVybiAiZ2xfRVMiOworICAgIGNhc2UgTEFOR19HRU9SR0lBTjogcmV0dXJuICJrYV9HRSI7CisgICAgY2FzZSBMQU5HX0dFUk1BTjoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfR0VSTUFOOiByZXR1cm4gImRlX0RFIjsKKwljYXNlIFNVQkxBTkdfR0VSTUFOX1NXSVNTOiByZXR1cm4gImRlX0NIIjsKKwljYXNlIFNVQkxBTkdfR0VSTUFOX0FVU1RSSUFOOiByZXR1cm4gImRlX0FUIjsKKwljYXNlIFNVQkxBTkdfR0VSTUFOX0xVWEVNQk9VUkc6IHJldHVybiAiZGVfTFUiOworCWNhc2UgU1VCTEFOR19HRVJNQU5fTElFQ0hURU5TVEVJTjogcmV0dXJuICJkZV9MSSI7CisJfQorICAgICAgcmV0dXJuICJkZSI7CisgICAgY2FzZSBMQU5HX0dSRUVLOiByZXR1cm4gImVsX0dSIjsKKyAgICBjYXNlIExBTkdfR1VBUkFOSTogcmV0dXJuICJnbl9QWSI7CisgICAgY2FzZSBMQU5HX0dVSkFSQVRJOiByZXR1cm4gImd1X0lOIjsKKyAgICBjYXNlIExBTkdfSEFVU0E6IHJldHVybiAiaGFfTkciOworICAgIGNhc2UgTEFOR19IQVdBSUlBTjoKKyAgICAgIC8qIEZJWE1FOiBEbyB0aGV5IG1lYW4gSGF3YWlpYW4gKCJoYXdfVVMiLCAxMDAwIHNwZWFrZXJzKQorCSBvciBIYXdhaWkgQ3Jlb2xlIEVuZ2xpc2ggKCJjcGVfVVMiLCA2MDAwMDAgc3BlYWtlcnMpPyAgKi8KKyAgICAgIHJldHVybiAiY3BlX1VTIjsKKyAgICBjYXNlIExBTkdfSEVCUkVXOiByZXR1cm4gImhlX0lMIjsKKyAgICBjYXNlIExBTkdfSElOREk6IHJldHVybiAiaGlfSU4iOworICAgIGNhc2UgTEFOR19IVU5HQVJJQU46IHJldHVybiAiaHVfSFUiOworICAgIGNhc2UgTEFOR19JQklCSU86IHJldHVybiAibmljX05HIjsKKyAgICBjYXNlIExBTkdfSUNFTEFORElDOiByZXR1cm4gImlzX0lTIjsKKyAgICBjYXNlIExBTkdfSUdCTzogcmV0dXJuICJpZ19ORyI7CisgICAgY2FzZSBMQU5HX0lORE9ORVNJQU46IHJldHVybiAiaWRfSUQiOworICAgIGNhc2UgTEFOR19JTlVLVElUVVQ6IHJldHVybiAiaXVfQ0EiOworICAgIGNhc2UgTEFOR19JVEFMSUFOOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19JVEFMSUFOOiByZXR1cm4gIml0X0lUIjsKKwljYXNlIFNVQkxBTkdfSVRBTElBTl9TV0lTUzogcmV0dXJuICJpdF9DSCI7CisJfQorICAgICAgcmV0dXJuICJpdCI7CisgICAgY2FzZSBMQU5HX0pBUEFORVNFOiByZXR1cm4gImphX0pQIjsKKyAgICBjYXNlIExBTkdfS0FOTkFEQTogcmV0dXJuICJrbl9JTiI7CisgICAgY2FzZSBMQU5HX0tBTlVSSTogcmV0dXJuICJrcl9ORyI7CisgICAgY2FzZSBMQU5HX0tBU0hNSVJJOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gImtzX1BLIjsKKwljYXNlIFNVQkxBTkdfS0FTSE1JUklfSU5ESUE6IHJldHVybiAia3NfSU4iOworCX0KKyAgICAgIHJldHVybiAia3MiOworICAgIGNhc2UgTEFOR19LQVpBSzogcmV0dXJuICJra19LWiI7CisgICAgY2FzZSBMQU5HX0tPTktBTkk6CisgICAgICAvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBzdWNoIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLworICAgICAgcmV0dXJuICJrb2tfSU4iOworICAgIGNhc2UgTEFOR19LT1JFQU46IHJldHVybiAia29fS1IiOworICAgIGNhc2UgTEFOR19LWVJHWVo6IHJldHVybiAia3lfS0ciOworICAgIGNhc2UgTEFOR19MQU86IHJldHVybiAibG9fTEEiOworICAgIGNhc2UgTEFOR19MQVRJTjogcmV0dXJuICJsYV9WQSI7CisgICAgY2FzZSBMQU5HX0xBVFZJQU46IHJldHVybiAibHZfTFYiOworICAgIGNhc2UgTEFOR19MSVRIVUFOSUFOOiByZXR1cm4gImx0X0xUIjsKKyAgICBjYXNlIExBTkdfTUFDRURPTklBTjogcmV0dXJuICJta19NSyI7CisgICAgY2FzZSBMQU5HX01BTEFZOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19NQUxBWV9NQUxBWVNJQTogcmV0dXJuICJtc19NWSI7CisJY2FzZSBTVUJMQU5HX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNOiByZXR1cm4gIm1zX0JOIjsKKwl9CisgICAgICByZXR1cm4gIm1zIjsKKyAgICBjYXNlIExBTkdfTUFMQVlBTEFNOiByZXR1cm4gIm1sX0lOIjsKKyAgICBjYXNlIExBTkdfTUFMVEVTRTogcmV0dXJuICJtdF9NVCI7CisgICAgY2FzZSBMQU5HX01BTklQVVJJOgorICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KKyAgICAgIHJldHVybiAibW5pX0lOIjsKKyAgICBjYXNlIExBTkdfTUFSQVRISTogcmV0dXJuICJtcl9JTiI7CisgICAgY2FzZSBMQU5HX01PTkdPTElBTjoKKyAgICAgIHJldHVybiAibW4iOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJtbl9DTiIgb3IgIm1uX01OIi4gICovCisgICAgY2FzZSBMQU5HX05FUEFMSToKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJuZV9OUCI7CisJY2FzZSBTVUJMQU5HX05FUEFMSV9JTkRJQTogcmV0dXJuICJuZV9JTiI7CisJfQorICAgICAgcmV0dXJuICJuZSI7CisgICAgY2FzZSBMQU5HX05PUldFR0lBTjoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfTk9SV0VHSUFOX0JPS01BTDogcmV0dXJuICJub19OTyI7CisJY2FzZSBTVUJMQU5HX05PUldFR0lBTl9OWU5PUlNLOiByZXR1cm4gIm5uX05PIjsKKwl9CisgICAgICByZXR1cm4gIm5vIjsKKyAgICBjYXNlIExBTkdfT1JJWUE6IHJldHVybiAib3JfSU4iOworICAgIGNhc2UgTEFOR19PUk9NTzogcmV0dXJuICJvbV9FVCI7CisgICAgY2FzZSBMQU5HX1BBUElBTUVOVFU6IHJldHVybiAicGFwX0FOIjsKKyAgICBjYXNlIExBTkdfUEFTSFRPOgorICAgICAgcmV0dXJuICJwcyI7IC8qIEFtYmlndW91czogY291bGQgYmUgInBzX1BLIiBvciAicHNfQUYiLiAgKi8KKyAgICBjYXNlIExBTkdfUE9MSVNIOiByZXR1cm4gInBsX1BMIjsKKyAgICBjYXNlIExBTkdfUE9SVFVHVUVTRToKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfUE9SVFVHVUVTRTogcmV0dXJuICJwdF9QVCI7CisJLyogSG1tLiBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOID09IFNVQkxBTkdfREVGQVVMVC4KKwkgICBTYW1lIHBoZW5vbWVub24gYXMgU1VCTEFOR19FTkdMSVNIX1VTID09IFNVQkxBTkdfREVGQVVMVC4gKi8KKwljYXNlIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU46IHJldHVybiAicHRfQlIiOworCX0KKyAgICAgIHJldHVybiAicHQiOworICAgIGNhc2UgTEFOR19QVU5KQUJJOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19QVU5KQUJJX0lORElBOiByZXR1cm4gInBhX0lOIjsgLyogR3VybXVraGkgc2NyaXB0ICovCisJY2FzZSBTVUJMQU5HX1BVTkpBQklfUEFLSVNUQU46IHJldHVybiAicGFfUEsiOyAvKiBBcmFiaWMgc2NyaXB0ICovCisJfQorICAgICAgcmV0dXJuICJwYSI7CisgICAgY2FzZSBMQU5HX1JIQUVUT19ST01BTkNFOiByZXR1cm4gInJtX0NIIjsKKyAgICBjYXNlIExBTkdfUk9NQU5JQU46CisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX1JPTUFOSUFOX1JPTUFOSUE6IHJldHVybiAicm9fUk8iOworCWNhc2UgU1VCTEFOR19ST01BTklBTl9NT0xET1ZBOiByZXR1cm4gInJvX01EIjsKKwl9CisgICAgICByZXR1cm4gInJvIjsKKyAgICBjYXNlIExBTkdfUlVTU0lBTjoKKyAgICAgIHJldHVybiAicnUiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJydV9SVSIgb3IgInJ1X1VBIiBvciAicnVfTUQiLiAgKi8KKyAgICBjYXNlIExBTkdfU0FBTUk6IC8qIGFjdHVhbGx5IE5vcnRoZXJuIFNhbWkgKi8gcmV0dXJuICJzZV9OTyI7CisgICAgY2FzZSBMQU5HX1NBTlNLUklUOiByZXR1cm4gInNhX0lOIjsKKyAgICBjYXNlIExBTkdfU0lOREhJOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19TSU5ESElfSU5ESUE6IHJldHVybiAic2RfSU4iOworCWNhc2UgU1VCTEFOR19TSU5ESElfUEFLSVNUQU46IHJldHVybiAic2RfUEsiOworCX0KKyAgICAgIHJldHVybiAic2QiOworICAgIGNhc2UgTEFOR19TSU5IQUxFU0U6IHJldHVybiAic2lfTEsiOworICAgIGNhc2UgTEFOR19TTE9WQUs6IHJldHVybiAic2tfU0siOworICAgIGNhc2UgTEFOR19TTE9WRU5JQU46IHJldHVybiAic2xfU0kiOworICAgIGNhc2UgTEFOR19TT01BTEk6IHJldHVybiAic29fU08iOworICAgIGNhc2UgTEFOR19TT1JCSUFOOgorICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KKyAgICAgIHJldHVybiAid2VuX0RFIjsKKyAgICBjYXNlIExBTkdfU1BBTklTSDoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfU1BBTklTSDogcmV0dXJuICJlc19FUyI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTUVYSUNBTjogcmV0dXJuICJlc19NWCI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTU9ERVJOOgorCSAgcmV0dXJuICJlc19FU0Btb2Rlcm4iOwkvKiBub3Qgc2VlbiBvbiBVbml4ICovCisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfR1VBVEVNQUxBOiByZXR1cm4gImVzX0dUIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBOiByZXR1cm4gImVzX0NSIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QQU5BTUE6IHJldHVybiAiZXNfUEEiOworCWNhc2UgU1VCTEFOR19TUEFOSVNIX0RPTUlOSUNBTl9SRVBVQkxJQzogcmV0dXJuICJlc19ETyI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVkVORVpVRUxBOiByZXR1cm4gImVzX1ZFIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DT0xPTUJJQTogcmV0dXJuICJlc19DTyI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEVSVTogcmV0dXJuICJlc19QRSI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQVJHRU5USU5BOiByZXR1cm4gImVzX0FSIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9FQ1VBRE9SOiByZXR1cm4gImVzX0VDIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DSElMRTogcmV0dXJuICJlc19DTCI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfVVJVR1VBWTogcmV0dXJuICJlc19VWSI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEFSQUdVQVk6IHJldHVybiAiZXNfUFkiOworCWNhc2UgU1VCTEFOR19TUEFOSVNIX0JPTElWSUE6IHJldHVybiAiZXNfQk8iOworCWNhc2UgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SOiByZXR1cm4gImVzX1NWIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9IT05EVVJBUzogcmV0dXJuICJlc19ITiI7CisJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTklDQVJBR1VBOiByZXR1cm4gImVzX05JIjsKKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QVUVSVE9fUklDTzogcmV0dXJuICJlc19QUiI7CisJfQorICAgICAgcmV0dXJuICJlcyI7CisgICAgY2FzZSBMQU5HX1NVVFU6IHJldHVybiAiYm50X1RaIjsgLyogb3IgInN0X0xTIiBvciAibnNvX1pBIj8gKi8KKyAgICBjYXNlIExBTkdfU1dBSElMSTogcmV0dXJuICJzd19LRSI7CisgICAgY2FzZSBMQU5HX1NXRURJU0g6CisgICAgICBzd2l0Y2ggKHN1YikKKwl7CisJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAic3ZfU0UiOworCWNhc2UgU1VCTEFOR19TV0VESVNIX0ZJTkxBTkQ6IHJldHVybiAic3ZfRkkiOworCX0KKyAgICAgIHJldHVybiAic3YiOworICAgIGNhc2UgTEFOR19TWVJJQUM6IHJldHVybiAic3lyX1RSIjsgLyogQW4gZXh0aW5jdCBsYW5ndWFnZS4gICovCisgICAgY2FzZSBMQU5HX1RBR0FMT0c6IHJldHVybiAidGxfUEgiOworICAgIGNhc2UgTEFOR19UQUpJSzogcmV0dXJuICJ0Z19USiI7CisgICAgY2FzZSBMQU5HX1RBTUFaSUdIVDoKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwkvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBUYW1hemlnaHQgbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCisJY2FzZSBTVUJMQU5HX1RBTUFaSUdIVF9BUkFCSUM6IHJldHVybiAiYmVyX01BQGFyYWJpYyI7CisJY2FzZSBTVUJMQU5HX1RBTUFaSUdIVF9MQVRJTjogcmV0dXJuICJiZXJfTUFAbGF0aW4iOworCX0KKyAgICAgIHJldHVybiAiYmVyX01BIjsKKyAgICBjYXNlIExBTkdfVEFNSUw6CisgICAgICByZXR1cm4gInRhIjsgLyogQW1iaWd1b3VzOiBjb3VsZCBiZSAidGFfSU4iIG9yICJ0YV9MSyIgb3IgInRhX1NHIi4gICovCisgICAgY2FzZSBMQU5HX1RBVEFSOiByZXR1cm4gInR0X1JVIjsKKyAgICBjYXNlIExBTkdfVEVMVUdVOiByZXR1cm4gInRlX0lOIjsKKyAgICBjYXNlIExBTkdfVEhBSTogcmV0dXJuICJ0aF9USCI7CisgICAgY2FzZSBMQU5HX1RJQkVUQU46IHJldHVybiAiYm9fQ04iOworICAgIGNhc2UgTEFOR19USUdSSU5ZQToKKyAgICAgIHN3aXRjaCAoc3ViKQorCXsKKwljYXNlIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUE6IHJldHVybiAidGlfRVQiOworCWNhc2UgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBOiByZXR1cm4gInRpX0VSIjsKKwl9CisgICAgICByZXR1cm4gInRpIjsKKyAgICBjYXNlIExBTkdfVFNPTkdBOiByZXR1cm4gInRzX1pBIjsKKyAgICBjYXNlIExBTkdfVFNXQU5BOiByZXR1cm4gInRuX0JXIjsKKyAgICBjYXNlIExBTkdfVFVSS0lTSDogcmV0dXJuICJ0cl9UUiI7CisgICAgY2FzZSBMQU5HX1RVUktNRU46IHJldHVybiAidGtfVE0iOworICAgIGNhc2UgTEFOR19VS1JBSU5JQU46IHJldHVybiAidWtfVUEiOworICAgIGNhc2UgTEFOR19VUkRVOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19VUkRVX1BBS0lTVEFOOiByZXR1cm4gInVyX1BLIjsKKwljYXNlIFNVQkxBTkdfVVJEVV9JTkRJQTogcmV0dXJuICJ1cl9JTiI7CisJfQorICAgICAgcmV0dXJuICJ1ciI7CisgICAgY2FzZSBMQU5HX1VaQkVLOgorICAgICAgc3dpdGNoIChzdWIpCisJeworCWNhc2UgU1VCTEFOR19VWkJFS19MQVRJTjogcmV0dXJuICJ1el9VWiI7CisJY2FzZSBTVUJMQU5HX1VaQkVLX0NZUklMTElDOiByZXR1cm4gInV6X1VaQGN5cmlsbGljIjsKKwl9CisgICAgICByZXR1cm4gInV6IjsKKyAgICBjYXNlIExBTkdfVkVOREE6IHJldHVybiAidmVfWkEiOworICAgIGNhc2UgTEFOR19WSUVUTkFNRVNFOiByZXR1cm4gInZpX1ZOIjsKKyAgICBjYXNlIExBTkdfV0VMU0g6IHJldHVybiAiY3lfR0IiOworICAgIGNhc2UgTEFOR19YSE9TQTogcmV0dXJuICJ4aF9aQSI7CisgICAgY2FzZSBMQU5HX1lJOiByZXR1cm4gInNpdF9DTiI7CisgICAgY2FzZSBMQU5HX1lJRERJU0g6IHJldHVybiAieWlfSUwiOworICAgIGNhc2UgTEFOR19ZT1JVQkE6IHJldHVybiAieW9fTkciOworICAgIGNhc2UgTEFOR19aVUxVOiByZXR1cm4gInp1X1pBIjsKKyAgICBkZWZhdWx0OiByZXR1cm4gIkMiOworICAgIH0KKworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9sb2cuYyBiL2UyZnNwcm9ncy9pbnRsL2xvZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNjA3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9sb2cuYwpAQCAtMCwwICsxLDk4IEBACisvKiBMb2cgZmlsZSBvdXRwdXQuCisgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisvKiBQcmludCBhbiBBU0NJSSBzdHJpbmcgd2l0aCBxdW90ZXMgYW5kIGVzY2FwZSBzZXF1ZW5jZXMgd2hlcmUgbmVlZGVkLiAgKi8KK3N0YXRpYyB2b2lkCitwcmludF9lc2NhcGVkIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgcHV0YyAoJyInLCBzdHJlYW0pOworICBmb3IgKDsgKnN0ciAhPSAnXDAnOyBzdHIrKykKKyAgICBpZiAoKnN0ciA9PSAnXG4nKQorICAgICAgeworCWZwdXRzICgiXFxuXCIiLCBzdHJlYW0pOworCWlmIChzdHJbMV0gPT0gJ1wwJykKKwkgIHJldHVybjsKKwlmcHV0cyAoIlxuXCIiLCBzdHJlYW0pOworICAgICAgfQorICAgIGVsc2UKKyAgICAgIHsKKwlpZiAoKnN0ciA9PSAnIicgfHwgKnN0ciA9PSAnXFwnKQorCSAgcHV0YyAoJ1xcJywgc3RyZWFtKTsKKwlwdXRjICgqc3RyLCBzdHJlYW0pOworICAgICAgfQorICBwdXRjICgnIicsIHN0cmVhbSk7Cit9CisKKy8qIEFkZCB0byB0aGUgbG9nIGZpbGUgYW4gZW50cnkgZGVub3RpbmcgYSBmYWlsZWQgdHJhbnNsYXRpb24uICAqLwordm9pZAorX25sX2xvZ191bnRyYW5zbGF0ZWQgKGNvbnN0IGNoYXIgKmxvZ2ZpbGVuYW1lLCBjb25zdCBjaGFyICpkb21haW5uYW1lLAorCQkgICAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgaW50IHBsdXJhbCkKK3sKKyAgc3RhdGljIGNoYXIgKmxhc3RfbG9nZmlsZW5hbWUgPSBOVUxMOworICBzdGF0aWMgRklMRSAqbGFzdF9sb2dmaWxlID0gTlVMTDsKKyAgRklMRSAqbG9nZmlsZTsKKworICAvKiBDYW4gd2UgcmV1c2UgdGhlIGxhc3Qgb3BlbmVkIGxvZ2ZpbGU/ICAqLworICBpZiAobGFzdF9sb2dmaWxlbmFtZSA9PSBOVUxMIHx8IHN0cmNtcCAobG9nZmlsZW5hbWUsIGxhc3RfbG9nZmlsZW5hbWUpICE9IDApCisgICAgeworICAgICAgLyogQ2xvc2UgdGhlIGxhc3QgdXNlZCBsb2dmaWxlLiAgKi8KKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGVuYW1lICE9IE5VTEwpCisJeworCSAgaWYgKGxhc3RfbG9nZmlsZSAhPSBOVUxMKQorCSAgICB7CisJICAgICAgZmNsb3NlIChsYXN0X2xvZ2ZpbGUpOworCSAgICAgIGxhc3RfbG9nZmlsZSA9IE5VTEw7CisJICAgIH0KKwkgIGZyZWUgKGxhc3RfbG9nZmlsZW5hbWUpOworCSAgbGFzdF9sb2dmaWxlbmFtZSA9IE5VTEw7CisJfQorICAgICAgLyogT3BlbiB0aGUgbG9nZmlsZS4gICovCisgICAgICBsYXN0X2xvZ2ZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKGxvZ2ZpbGVuYW1lKSArIDEpOworICAgICAgaWYgKGxhc3RfbG9nZmlsZW5hbWUgPT0gTlVMTCkKKwlyZXR1cm47CisgICAgICBzdHJjcHkgKGxhc3RfbG9nZmlsZW5hbWUsIGxvZ2ZpbGVuYW1lKTsKKyAgICAgIGxhc3RfbG9nZmlsZSA9IGZvcGVuIChsb2dmaWxlbmFtZSwgImEiKTsKKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGUgPT0gTlVMTCkKKwlyZXR1cm47CisgICAgfQorICBsb2dmaWxlID0gbGFzdF9sb2dmaWxlOworCisgIGZwcmludGYgKGxvZ2ZpbGUsICJkb21haW4gIik7CisgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIGRvbWFpbm5hbWUpOworICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dpZCAiKTsKKyAgcHJpbnRfZXNjYXBlZCAobG9nZmlsZSwgbXNnaWQxKTsKKyAgaWYgKHBsdXJhbCkKKyAgICB7CisgICAgICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dpZF9wbHVyYWwgIik7CisgICAgICBwcmludF9lc2NhcGVkIChsb2dmaWxlLCBtc2dpZDIpOworICAgICAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnc3RyWzBdIFwiXCJcbiIpOworICAgIH0KKyAgZWxzZQorICAgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ3N0ciBcIlwiXG4iKTsKKyAgcHV0YyAoJ1xuJywgbG9nZmlsZSk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9uZ2V0dGV4dC5jIGIvZTJmc3Byb2dzL2ludGwvbmdldHRleHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzNlMDBjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvbmdldHRleHQuYwpAQCAtMCwwICsxLDY1IEBACisvKiBJbXBsZW1lbnRhdGlvbiBvZiBuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBfX25lZWRfTlVMTAorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCisjZW5kaWYKKworI2luY2x1ZGUgImdldHRleHRQLmgiCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2Vsc2UKKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxsb2NhbGUuaD4KKworLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCisgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCisgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIE5HRVRURVhUIF9fbmdldHRleHQKKyMgZGVmaW5lIERDTkdFVFRFWFQgX19kY25nZXR0ZXh0CisjZWxzZQorIyBkZWZpbmUgTkdFVFRFWFQgbGliaW50bF9uZ2V0dGV4dAorIyBkZWZpbmUgRENOR0VUVEVYVCBsaWJpbnRsX2RjbmdldHRleHQKKyNlbmRpZgorCisvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAorICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKKyAgIHRleHQpLiAgKi8KK2NoYXIgKgorTkdFVFRFWFQgKGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQoreworICByZXR1cm4gRENOR0VUVEVYVCAoTlVMTCwgbXNnaWQxLCBtc2dpZDIsIG4sIExDX01FU1NBR0VTKTsKK30KKworI2lmZGVmIF9MSUJDCisvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KK3dlYWtfYWxpYXMgKF9fbmdldHRleHQsIG5nZXR0ZXh0KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvb3MyY29tcGF0LmMgYi9lMmZzcHJvZ3MvaW50bC9vczJjb21wYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGRjMzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvb3MyY29tcGF0LmMKQEAgLTAsMCArMSw5OCBAQAorLyogT1MvMiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9ucy4KKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2RlZmluZSBPUzJfQVdBUkUKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorCisvKiBBIHZlcnNpb24gb2YgZ2V0ZW52KCkgdGhhdCB3b3JrcyBmcm9tIERMTHMgKi8KK2V4dGVybiB1bnNpZ25lZCBsb25nIERvc1NjYW5FbnYgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzek5hbWUsIHVuc2lnbmVkIGNoYXIgKipwcHN6VmFsdWUpOworCitjaGFyICoKK19ubF9nZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIHVuc2lnbmVkIGNoYXIgKnZhbHVlOworICBpZiAoRG9zU2NhbkVudiAobmFtZSwgJnZhbHVlKSkKKyAgICByZXR1cm4gTlVMTDsKKyAgZWxzZQorICAgIHJldHVybiB2YWx1ZTsKK30KKworLyogQSBmaXhlZCBzaXplIGJ1ZmZlci4gICovCitjaGFyIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lW01BWFBBVEhMRU4rMV07CisKK2NoYXIgKl9ubG9zMl9saWJkaXIgPSBOVUxMOworY2hhciAqX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IE5VTEw7CitjaGFyICpfbmxvczJfbG9jYWxlZGlyID0gTlVMTDsKKworc3RhdGljIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgdm9pZAorbmxvczJfaW5pdGlhbGl6ZSAoKQoreworICBjaGFyICpyb290ID0gZ2V0ZW52ICgiVU5JWFJPT1QiKTsKKyAgY2hhciAqZ251bG9jYWxlZGlyID0gZ2V0ZW52ICgiR05VTE9DQUxFRElSIik7CisKKyAgX25sb3MyX2xpYmRpciA9IGdudWxvY2FsZWRpcjsKKyAgaWYgKCFfbmxvczJfbGliZGlyKQorICAgIHsKKyAgICAgIGlmIChyb290KQorICAgICAgICB7CisgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKKyAgICAgICAgICBfbmxvczJfbGliZGlyID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTElCRElSKSArIDEpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xpYmRpciwgcm9vdCwgc2wpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xpYmRpciArIHNsLCBMSUJESVIsIHN0cmxlbiAoTElCRElSKSArIDEpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIF9ubG9zMl9saWJkaXIgPSBMSUJESVI7CisgICAgfQorCisgIF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSBnbnVsb2NhbGVkaXI7CisgIGlmICghX25sb3MyX2xvY2FsZWFsaWFzcGF0aCkKKyAgICB7CisgICAgICBpZiAocm9vdCkKKyAgICAgICAgeworICAgICAgICAgIHNpemVfdCBzbCA9IHN0cmxlbiAocm9vdCk7CisgICAgICAgICAgX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IChjaGFyICopIG1hbGxvYyAoc2wgKyBzdHJsZW4gKExPQ0FMRV9BTElBU19QQVRIKSArIDEpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWFsaWFzcGF0aCwgcm9vdCwgc2wpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWFsaWFzcGF0aCArIHNsLCBMT0NBTEVfQUxJQVNfUEFUSCwgc3RybGVuIChMT0NBTEVfQUxJQVNfUEFUSCkgKyAxKTsKKyAgICAgICAgfQorICAgICBlbHNlCisgICAgICAgIF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSBMT0NBTEVfQUxJQVNfUEFUSDsKKyAgICB9CisKKyAgX25sb3MyX2xvY2FsZWRpciA9IGdudWxvY2FsZWRpcjsKKyAgaWYgKCFfbmxvczJfbG9jYWxlZGlyKQorICAgIHsKKyAgICAgIGlmIChyb290KQorICAgICAgICB7CisgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKKyAgICAgICAgICBfbmxvczJfbG9jYWxlZGlyID0gKGNoYXIgKikgbWFsbG9jIChzbCArIHN0cmxlbiAoTE9DQUxFRElSKSArIDEpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWRpciwgcm9vdCwgc2wpOworICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWRpciArIHNsLCBMT0NBTEVESVIsIHN0cmxlbiAoTE9DQUxFRElSKSArIDEpOworICAgICAgICB9CisgICAgICBlbHNlCisgICAgICAgIF9ubG9zMl9sb2NhbGVkaXIgPSBMT0NBTEVESVI7CisgICAgfQorCisgIGlmIChzdHJsZW4gKF9ubG9zMl9sb2NhbGVkaXIpIDw9IE1BWFBBVEhMRU4pCisgICAgc3RyY3B5IChsaWJpbnRsX25sX2RlZmF1bHRfZGlybmFtZSwgX25sb3MyX2xvY2FsZWRpcik7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9vczJjb21wYXQuaCBiL2UyZnNwcm9ncy9pbnRsL29zMmNvbXBhdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNzRlOGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9vczJjb21wYXQuaApAQCAtMCwwICsxLDQ2IEBACisvKiBPUy8yIGNvbXBhdGliaWxpdHkgZGVmaW5lcy4KKyAgIFRoaXMgZmlsZSBpcyBpbnRlbmRlZCB0byBiZSBpbmNsdWRlZCBmcm9tIGNvbmZpZy5oCisgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKy8qIFdoZW4gaW5jbHVkZWQgZnJvbSBvczJjb21wYXQuaCB3ZSBuZWVkIGFsbCB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbnMgKi8KKyNpZm5kZWYgT1MyX0FXQVJFCisKKyN1bmRlZiBMSUJESVIKKyNkZWZpbmUgTElCRElSCQkJX25sb3MyX2xpYmRpcgorZXh0ZXJuIGNoYXIgKl9ubG9zMl9saWJkaXI7CisKKyN1bmRlZiBMT0NBTEVESVIKKyNkZWZpbmUgTE9DQUxFRElSCQlfbmxvczJfbG9jYWxlZGlyCitleHRlcm4gY2hhciAqX25sb3MyX2xvY2FsZWRpcjsKKworI3VuZGVmIExPQ0FMRV9BTElBU19QQVRICisjZGVmaW5lIExPQ0FMRV9BTElBU19QQVRICV9ubG9zMl9sb2NhbGVhbGlhc3BhdGgKK2V4dGVybiBjaGFyICpfbmxvczJfbG9jYWxlYWxpYXNwYXRoOworCisjZW5kaWYKKworI3VuZGVmIEhBVkVfU1RSQ0FTRUNNUAorI2RlZmluZSBIQVZFX1NUUkNBU0VDTVAgMQorI2RlZmluZSBzdHJjYXNlY21wIHN0cmljbXAKKyNkZWZpbmUgc3RybmNhc2VjbXAgc3RybmljbXAKKworLyogV2UgaGF2ZSBvdXIgb3duIGdldGVudigpIHdoaWNoIHdvcmtzIGV2ZW4gaWYgbGlicmFyeSBpcyBjb21waWxlZCBhcyBETEwgKi8KKyNkZWZpbmUgZ2V0ZW52IF9ubF9nZXRlbnYKKworLyogT2xkZXIgdmVyc2lvbnMgb2YgZ2V0dGV4dCB1c2VkIC0xIGFzIHRoZSB2YWx1ZSBvZiBMQ19NRVNTQUdFUyAqLworI2RlZmluZSBMQ19NRVNTQUdFU19DT01QQVQgKC0xKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvb3NkZXAuYyBiL2UyZnNwcm9ncy9pbnRsL29zZGVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3MjU5OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL29zZGVwLmMKQEAgLTAsMCArMSwyNCBAQAorLyogT1MgZGVwZW5kZW50IHBhcnRzIG9mIGxpYmludGwuCisgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZiBkZWZpbmVkIF9fRU1YX18KKyMgaW5jbHVkZSAib3MyY29tcGF0LmMiCisjZWxzZQorLyogQXZvaWQgQUlYIGNvbXBpbGVyIHdhcm5pbmcuICAqLwordHlwZWRlZiBpbnQgZHVtbXk7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC1leHAuYyBiL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC1leHAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzA0ZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcGx1cmFsLWV4cC5jCkBAIC0wLDAgKzEsMTU0IEBACisvKiBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgPGNvbmZpZy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgorCisjaWYgKGRlZmluZWQgX19HTlVDX18gJiYgIWRlZmluZWQgX19BUFBMRV9DQ19fKSBcCisgICAgfHwgKGRlZmluZWQgX19TVERDX1ZFUlNJT05fXyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwpCisKKy8qIFRoZXNlIHN0cnVjdHMgYXJlIHRoZSBjb25zdGFudCBleHByZXNzaW9uIGZvciB0aGUgZ2VybWFuaWMgcGx1cmFsCisgICBmb3JtIGRldGVybWluYXRpb24uICBJdCByZXByZXNlbnRzIHRoZSBleHByZXNzaW9uICAibiAhPSAxIi4gICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gcGx2YXIgPQoreworICAubmFyZ3MgPSAwLAorICAub3BlcmF0aW9uID0gdmFyLAorfTsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiBwbG9uZSA9Cit7CisgIC5uYXJncyA9IDAsCisgIC5vcGVyYXRpb24gPSBudW0sCisgIC52YWwgPQorICB7CisgICAgLm51bSA9IDEKKyAgfQorfTsKK3N0cnVjdCBleHByZXNzaW9uIEdFUk1BTklDX1BMVVJBTCA9Cit7CisgIC5uYXJncyA9IDIsCisgIC5vcGVyYXRpb24gPSBub3RfZXF1YWwsCisgIC52YWwgPQorICB7CisgICAgLmFyZ3MgPQorICAgIHsKKyAgICAgIFswXSA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSAmcGx2YXIsCisgICAgICBbMV0gPSAoc3RydWN0IGV4cHJlc3Npb24gKikgJnBsb25lCisgICAgfQorICB9Cit9OworCisjIGRlZmluZSBJTklUX0dFUk1BTklDX1BMVVJBTCgpCisKKyNlbHNlCisKKy8qIEZvciBjb21waWxlcnMgd2l0aG91dCBzdXBwb3J0IGZvciBJU08gQyA5OSBzdHJ1Y3QvdW5pb24gaW5pdGlhbGl6ZXJzOgorICAgSW5pdGlhbGl6YXRpb24gYXQgcnVuLXRpbWUuICAqLworCitzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gcGx2YXI7CitzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gcGxvbmU7CitzdHJ1Y3QgZXhwcmVzc2lvbiBHRVJNQU5JQ19QTFVSQUw7CisKK3N0YXRpYyB2b2lkCitpbml0X2dlcm1hbmljX3BsdXJhbCAoKQoreworICBpZiAocGxvbmUudmFsLm51bSA9PSAwKQorICAgIHsKKyAgICAgIHBsdmFyLm5hcmdzID0gMDsKKyAgICAgIHBsdmFyLm9wZXJhdGlvbiA9IHZhcjsKKworICAgICAgcGxvbmUubmFyZ3MgPSAwOworICAgICAgcGxvbmUub3BlcmF0aW9uID0gbnVtOworICAgICAgcGxvbmUudmFsLm51bSA9IDE7CisKKyAgICAgIEdFUk1BTklDX1BMVVJBTC5uYXJncyA9IDI7CisgICAgICBHRVJNQU5JQ19QTFVSQUwub3BlcmF0aW9uID0gbm90X2VxdWFsOworICAgICAgR0VSTUFOSUNfUExVUkFMLnZhbC5hcmdzWzBdID0gJnBsdmFyOworICAgICAgR0VSTUFOSUNfUExVUkFMLnZhbC5hcmdzWzFdID0gJnBsb25lOworICAgIH0KK30KKworIyBkZWZpbmUgSU5JVF9HRVJNQU5JQ19QTFVSQUwoKSBpbml0X2dlcm1hbmljX3BsdXJhbCAoKQorCisjZW5kaWYKKwordm9pZAoraW50ZXJuYWxfZnVuY3Rpb24KK0VYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gKGNvbnN0IGNoYXIgKm51bGxlbnRyeSwgc3RydWN0IGV4cHJlc3Npb24gKipwbHVyYWxwLAorCQkJICAgdW5zaWduZWQgbG9uZyBpbnQgKm5wbHVyYWxzcCkKK3sKKyAgaWYgKG51bGxlbnRyeSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGNvbnN0IGNoYXIgKnBsdXJhbDsKKyAgICAgIGNvbnN0IGNoYXIgKm5wbHVyYWxzOworCisgICAgICBwbHVyYWwgPSBzdHJzdHIgKG51bGxlbnRyeSwgInBsdXJhbD0iKTsKKyAgICAgIG5wbHVyYWxzID0gc3Ryc3RyIChudWxsZW50cnksICJucGx1cmFscz0iKTsKKyAgICAgIGlmIChwbHVyYWwgPT0gTlVMTCB8fCBucGx1cmFscyA9PSBOVUxMKQorCWdvdG8gbm9fcGx1cmFsOworICAgICAgZWxzZQorCXsKKwkgIGNoYXIgKmVuZHA7CisJICB1bnNpZ25lZCBsb25nIGludCBuOworCSAgc3RydWN0IHBhcnNlX2FyZ3MgYXJnczsKKworCSAgLyogRmlyc3QgZ2V0IHRoZSBudW1iZXIuICAqLworCSAgbnBsdXJhbHMgKz0gOTsKKwkgIHdoaWxlICgqbnBsdXJhbHMgIT0gJ1wwJyAmJiBpc3NwYWNlICgodW5zaWduZWQgY2hhcikgKm5wbHVyYWxzKSkKKwkgICAgKytucGx1cmFsczsKKwkgIGlmICghKCpucGx1cmFscyA+PSAnMCcgJiYgKm5wbHVyYWxzIDw9ICc5JykpCisJICAgIGdvdG8gbm9fcGx1cmFsOworI2lmIGRlZmluZWQgSEFWRV9TVFJUT1VMIHx8IGRlZmluZWQgX0xJQkMKKwkgIG4gPSBzdHJ0b3VsIChucGx1cmFscywgJmVuZHAsIDEwKTsKKyNlbHNlCisJICBmb3IgKGVuZHAgPSBucGx1cmFscywgbiA9IDA7ICplbmRwID49ICcwJyAmJiAqZW5kcCA8PSAnOSc7IGVuZHArKykKKwkgICAgbiA9IG4gKiAxMCArICgqZW5kcCAtICcwJyk7CisjZW5kaWYKKwkgIGlmIChucGx1cmFscyA9PSBlbmRwKQorCSAgICBnb3RvIG5vX3BsdXJhbDsKKwkgICpucGx1cmFsc3AgPSBuOworCisJICAvKiBEdWUgdG8gdGhlIHJlc3RyaWN0aW9ucyBiaXNvbiBpbXBvc2VzIG9udG8gdGhlIGludGVyZmFjZSBvZiB0aGUKKwkgICAgIHNjYW5uZXIgZnVuY3Rpb24gd2UgaGF2ZSB0byBwdXQgdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlIHJlc3VsdAorCSAgICAgcGFzc2VkIHVwIGZyb20gdGhlIHBhcnNlciBpbnRvIHRoZSBzYW1lIHN0cnVjdHVyZSB3aGljaCBhZGRyZXNzCisJICAgICBpcyBwYXNzZWQgZG93biB0byB0aGUgcGFyc2VyLiAgKi8KKwkgIHBsdXJhbCArPSA3OworCSAgYXJncy5jcCA9IHBsdXJhbDsKKwkgIGlmIChQTFVSQUxfUEFSU0UgKCZhcmdzKSAhPSAwKQorCSAgICBnb3RvIG5vX3BsdXJhbDsKKwkgICpwbHVyYWxwID0gYXJncy5yZXM7CisJfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIEJ5IGRlZmF1bHQgd2UgYXJlIHVzaW5nIHRoZSBHZXJtYW5pYyBmb3JtOiBzaW5ndWxhciBmb3JtIG9ubHkKKyAgICAgICAgIGZvciBgb25lJywgdGhlIHBsdXJhbCBmb3JtIG90aGVyd2lzZS4gIFllcywgdGhpcyBpcyBhbHNvIHdoYXQKKyAgICAgICAgIEVuZ2xpc2ggaXMgdXNpbmcgc2luY2UgRW5nbGlzaCBpcyBhIEdlcm1hbmljIGxhbmd1YWdlLiAgKi8KKyAgICBub19wbHVyYWw6CisgICAgICBJTklUX0dFUk1BTklDX1BMVVJBTCAoKTsKKyAgICAgICpwbHVyYWxwID0gJkdFUk1BTklDX1BMVVJBTDsKKyAgICAgICpucGx1cmFsc3AgPSAyOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC1leHAuaCBiL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC1leHAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWUyYzViCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcGx1cmFsLWV4cC5oCkBAIC0wLDAgKzEsMTE4IEBACisvKiBFeHByZXNzaW9uIHBhcnNpbmcgYW5kIGV2YWx1YXRpb24gZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZm5kZWYgX1BMVVJBTF9FWFBfSAorI2RlZmluZSBfUExVUkFMX0VYUF9ICisKKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCisjZW5kaWYKKworI2lmbmRlZiBhdHRyaWJ1dGVfaGlkZGVuCisjIGRlZmluZSBhdHRyaWJ1dGVfaGlkZGVuCisjZW5kaWYKKworCisvKiBUaGlzIGlzIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvbnMgdG8gZGV0ZXJtaW5lIHRoZQorICAgcGx1cmFsIGZvcm0uICAqLworc3RydWN0IGV4cHJlc3Npb24KK3sKKyAgaW50IG5hcmdzOwkJCS8qIE51bWJlciBvZiBhcmd1bWVudHMuICAqLworICBlbnVtIG9wZXJhdG9yCisgIHsKKyAgICAvKiBXaXRob3V0IGFyZ3VtZW50czogICovCisgICAgdmFyLAkJCS8qIFRoZSB2YXJpYWJsZSAibiIuICAqLworICAgIG51bSwJCQkvKiBEZWNpbWFsIG51bWJlci4gICovCisgICAgLyogVW5hcnkgb3BlcmF0b3JzOiAgKi8KKyAgICBsbm90LAkJCS8qIExvZ2ljYWwgTk9ULiAgKi8KKyAgICAvKiBCaW5hcnkgb3BlcmF0b3JzOiAgKi8KKyAgICBtdWx0LAkJCS8qIE11bHRpcGxpY2F0aW9uLiAgKi8KKyAgICBkaXZpZGUsCQkJLyogRGl2aXNpb24uICAqLworICAgIG1vZHVsZSwJCQkvKiBNb2R1bG8gb3BlcmF0aW9uLiAgKi8KKyAgICBwbHVzLAkJCS8qIEFkZGl0aW9uLiAgKi8KKyAgICBtaW51cywJCQkvKiBTdWJ0cmFjdGlvbi4gICovCisgICAgbGVzc190aGFuLAkJCS8qIENvbXBhcmlzb24uICAqLworICAgIGdyZWF0ZXJfdGhhbiwJCS8qIENvbXBhcmlzb24uICAqLworICAgIGxlc3Nfb3JfZXF1YWwsCQkvKiBDb21wYXJpc29uLiAgKi8KKyAgICBncmVhdGVyX29yX2VxdWFsLAkJLyogQ29tcGFyaXNvbi4gICovCisgICAgZXF1YWwsCQkJLyogQ29tcGFyaXNvbiBmb3IgZXF1YWxpdHkuICAqLworICAgIG5vdF9lcXVhbCwJCQkvKiBDb21wYXJpc29uIGZvciBpbmVxdWFsaXR5LiAgKi8KKyAgICBsYW5kLAkJCS8qIExvZ2ljYWwgQU5ELiAgKi8KKyAgICBsb3IsCQkJLyogTG9naWNhbCBPUi4gICovCisgICAgLyogVGVybmFyeSBvcGVyYXRvcnM6ICAqLworICAgIHFtb3AJCQkvKiBRdWVzdGlvbiBtYXJrIG9wZXJhdG9yLiAgKi8KKyAgfSBvcGVyYXRpb247CisgIHVuaW9uCisgIHsKKyAgICB1bnNpZ25lZCBsb25nIGludCBudW07CS8qIE51bWJlciB2YWx1ZSBmb3IgYG51bScuICAqLworICAgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzNdOwkvKiBVcCB0byB0aHJlZSBhcmd1bWVudHMuICAqLworICB9IHZhbDsKK307CisKKy8qIFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlciBhbmQgZ2V0CisgICB0aGUgcmVzdWx0IGluIGEgdGhyZWFkLXNhZmUgd2F5LiAgKi8KK3N0cnVjdCBwYXJzZV9hcmdzCit7CisgIGNvbnN0IGNoYXIgKmNwOworICBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmVzOworfTsKKworCisvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGlzIHNvdXJjZSBjb2RlIGlzIHVzZWQKKyAgIDEuIGluIHRoZSBHTlUgQyBMaWJyYXJ5IGxpYnJhcnksCisgICAyLiBpbiB0aGUgR05VIGxpYmludGwgbGlicmFyeSwKKyAgIDMuIGluIHRoZSBHTlUgZ2V0dGV4dCB0b29scy4KKyAgIFRoZSBmdW5jdGlvbiBuYW1lcyBpbiBlYWNoIHNpdHVhdGlvbiBtdXN0IGJlIGRpZmZlcmVudCwgdG8gYWxsb3cgZm9yCisgICBiaW5hcnkgaW5jb21wYXRpYmxlIGNoYW5nZXMgaW4gJ3N0cnVjdCBleHByZXNzaW9uJy4gIEZ1cnRoZXJtb3JlLAorICAgMS4gaW4gdGhlIEdOVSBDIExpYnJhcnkgbGlicmFyeSwgdGhlIG5hbWVzIGhhdmUgYSBfXyBwcmVmaXgsCisgICAyLiszLiBpbiB0aGUgR05VIGxpYmludGwgbGlicmFyeSBhbmQgaW4gdGhlIEdOVSBnZXR0ZXh0IHRvb2xzLCB0aGUgbmFtZXMKKyAgICAgICAgIG11c3QgZm9sbG93IEFOU0kgQyBhbmQgbm90IHN0YXJ0IHdpdGggX18uCisgICBTbyB3ZSBoYXZlIHRvIGRpc3Rpbmd1aXNoIHRoZSB0aHJlZSBjYXNlcy4gICovCisjaWZkZWYgX0xJQkMKKyMgZGVmaW5lIEZSRUVfRVhQUkVTU0lPTiBfX2dldHRleHRfZnJlZV9leHAKKyMgZGVmaW5lIFBMVVJBTF9QQVJTRSBfX2dldHRleHRwYXJzZQorIyBkZWZpbmUgR0VSTUFOSUNfUExVUkFMIF9fZ2V0dGV4dF9nZXJtYW5pY19wbHVyYWwKKyMgZGVmaW5lIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gX19nZXR0ZXh0X2V4dHJhY3RfcGx1cmFsCisjZWxpZiBkZWZpbmVkIChJTl9MSUJJTlRMKQorIyBkZWZpbmUgRlJFRV9FWFBSRVNTSU9OIGxpYmludGxfZ2V0dGV4dF9mcmVlX2V4cAorIyBkZWZpbmUgUExVUkFMX1BBUlNFIGxpYmludGxfZ2V0dGV4dHBhcnNlCisjIGRlZmluZSBHRVJNQU5JQ19QTFVSQUwgbGliaW50bF9nZXR0ZXh0X2dlcm1hbmljX3BsdXJhbAorIyBkZWZpbmUgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiBsaWJpbnRsX2dldHRleHRfZXh0cmFjdF9wbHVyYWwKKyNlbHNlCisjIGRlZmluZSBGUkVFX0VYUFJFU1NJT04gZnJlZV9wbHVyYWxfZXhwcmVzc2lvbgorIyBkZWZpbmUgUExVUkFMX1BBUlNFIHBhcnNlX3BsdXJhbF9leHByZXNzaW9uCisjIGRlZmluZSBHRVJNQU5JQ19QTFVSQUwgZ2VybWFuaWNfcGx1cmFsCisjIGRlZmluZSBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIGV4dHJhY3RfcGx1cmFsX2V4cHJlc3Npb24KKyNlbmRpZgorCitleHRlcm4gdm9pZCBGUkVFX0VYUFJFU1NJT04gKHN0cnVjdCBleHByZXNzaW9uICpleHApCisgICAgIGludGVybmFsX2Z1bmN0aW9uOworZXh0ZXJuIGludCBQTFVSQUxfUEFSU0UgKHZvaWQgKmFyZyk7CitleHRlcm4gc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMIGF0dHJpYnV0ZV9oaWRkZW47CitleHRlcm4gdm9pZCBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChjb25zdCBjaGFyICpudWxsZW50cnksCisJCQkJICAgICAgIHN0cnVjdCBleHByZXNzaW9uICoqcGx1cmFscCwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgKm5wbHVyYWxzcCkKKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247CisKKyNpZiAhZGVmaW5lZCAoX0xJQkMpICYmICFkZWZpbmVkIChJTl9MSUJJTlRMKQorZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHBsdXJhbF9ldmFsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqcGV4cCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGludCBuKTsKKyNlbmRpZgorCisjZW5kaWYgLyogX1BMVVJBTF9FWFBfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvcGx1cmFsLmMgYi9lMmZzcHJvZ3MvaW50bC9wbHVyYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzUzMDViCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcGx1cmFsLmMKQEAgLTAsMCArMSwxNDkwIEBACisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBmcm9tIHBsdXJhbC55CisgICBieSBHTlUgYmlzb24gMS4zNS4gICovCisKKyNkZWZpbmUgWVlCSVNPTiAxICAvKiBJZGVudGlmeSBCaXNvbiBvdXRwdXQuICAqLworCisjZGVmaW5lIHl5cGFyc2UgX19nZXR0ZXh0cGFyc2UKKyNkZWZpbmUgeXlsZXggX19nZXR0ZXh0bGV4CisjZGVmaW5lIHl5ZXJyb3IgX19nZXR0ZXh0ZXJyb3IKKyNkZWZpbmUgeXlsdmFsIF9fZ2V0dGV4dGx2YWwKKyNkZWZpbmUgeXljaGFyIF9fZ2V0dGV4dGNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyBfX2dldHRleHRkZWJ1ZworI2RlZmluZSB5eW5lcnJzIF9fZ2V0dGV4dG5lcnJzCisjIGRlZmluZQlFUVVPUDIJMjU3CisjIGRlZmluZQlDTVBPUDIJMjU4CisjIGRlZmluZQlBRERPUDIJMjU5CisjIGRlZmluZQlNVUxPUDIJMjYwCisjIGRlZmluZQlOVU1CRVIJMjYxCisKKyNsaW5lIDEgInBsdXJhbC55IgorCisvKiBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMjAwMC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKy8qIFRoZSBiaXNvbiBnZW5lcmF0ZWQgcGFyc2VyIHVzZXMgYWxsb2NhLiAgQUlYIDMgZm9yY2VzIHVzIHRvIHB1dCB0aGlzCisgICBkZWNsYXJhdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlLiAgVGhlIGRlY2xhcmF0aW9uIGluIGJpc29uJ3MKKyAgIHNrZWxldG9uIGZpbGUgY29tZXMgdG9vIGxhdGUuICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPgorICAgYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlIGFyYml0cmFyeSBzeXN0ZW0gaGVhZGVycy4gICovCisjaWYgZGVmaW5lZCBfQUlYICYmICFkZWZpbmVkIF9fR05VQ19fCisgI3ByYWdtYSBhbGxvY2EKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgorCisvKiBUaGUgbWFpbiBmdW5jdGlvbiBnZW5lcmF0ZWQgYnkgdGhlIHBhcnNlciBpcyBjYWxsZWQgX19nZXR0ZXh0cGFyc2UsCisgICBidXQgd2Ugd2FudCBpdCB0byBiZSBjYWxsZWQgUExVUkFMX1BBUlNFLiAgKi8KKyNpZm5kZWYgX0xJQkMKKyMgZGVmaW5lIF9fZ2V0dGV4dHBhcnNlIFBMVVJBTF9QQVJTRQorI2VuZGlmCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0JJigoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+Y3AKKyNkZWZpbmUgWVlQQVJTRV9QQVJBTQlhcmcKKworI2xpbmUgNDkgInBsdXJhbC55IgorI2lmbmRlZiBZWVNUWVBFCit0eXBlZGVmIHVuaW9uIHsKKyAgdW5zaWduZWQgbG9uZyBpbnQgbnVtOworICBlbnVtIG9wZXJhdG9yIG9wOworICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOworfSB5eXN0eXBlOworIyBkZWZpbmUgWVlTVFlQRSB5eXN0eXBlCisjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQorI2VuZGlmCisjbGluZSA1NSAicGx1cmFsLnkiCisKKy8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCitzdGF0aWMgaW50IHl5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCk7CitzdGF0aWMgdm9pZCB5eWVycm9yIChjb25zdCBjaGFyICpzdHIpOworCisvKiBBbGxvY2F0aW9uIG9mIGV4cHJlc3Npb25zLiAgKi8KKworc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKK25ld19leHAgKGludCBuYXJncywgZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKiBjb25zdCAqYXJncykKK3sKKyAgaW50IGk7CisgIHN0cnVjdCBleHByZXNzaW9uICpuZXdwOworCisgIC8qIElmIGFueSBvZiB0aGUgYXJndW1lbnQgY291bGQgbm90IGJlIG1hbGxvYydlZCwganVzdCByZXR1cm4gTlVMTC4gICovCisgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgaWYgKGFyZ3NbaV0gPT0gTlVMTCkKKyAgICAgIGdvdG8gZmFpbDsKKworICAvKiBBbGxvY2F0ZSBhIG5ldyBleHByZXNzaW9uLiAgKi8KKyAgbmV3cCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsKKyAgaWYgKG5ld3AgIT0gTlVMTCkKKyAgICB7CisgICAgICBuZXdwLT5uYXJncyA9IG5hcmdzOworICAgICAgbmV3cC0+b3BlcmF0aW9uID0gb3A7CisgICAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQorCW5ld3AtPnZhbC5hcmdzW2ldID0gYXJnc1tpXTsKKyAgICAgIHJldHVybiBuZXdwOworICAgIH0KKworIGZhaWw6CisgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCisgICAgRlJFRV9FWFBSRVNTSU9OIChhcmdzW2ldKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCituZXdfZXhwXzAgKGVudW0gb3BlcmF0b3Igb3ApCit7CisgIHJldHVybiBuZXdfZXhwICgwLCBvcCwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgorbmV3X2V4cF8xIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCit7CisgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzFdOworCisgIGFyZ3NbMF0gPSByaWdodDsKKyAgcmV0dXJuIG5ld19leHAgKDEsIG9wLCBhcmdzKTsKK30KKworc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKK25ld19leHBfMiAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmxlZnQsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKK3sKKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMl07CisKKyAgYXJnc1swXSA9IGxlZnQ7CisgIGFyZ3NbMV0gPSByaWdodDsKKyAgcmV0dXJuIG5ld19leHAgKDIsIG9wLCBhcmdzKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCituZXdfZXhwXzMgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpiZXhwLAorCSAgIHN0cnVjdCBleHByZXNzaW9uICp0YnJhbmNoLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZmJyYW5jaCkKK3sKKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbM107CisKKyAgYXJnc1swXSA9IGJleHA7CisgIGFyZ3NbMV0gPSB0YnJhbmNoOworICBhcmdzWzJdID0gZmJyYW5jaDsKKyAgcmV0dXJuIG5ld19leHAgKDMsIG9wLCBhcmdzKTsKK30KKworI2lmbmRlZiBZWURFQlVHCisjIGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorCisKKworI2RlZmluZQlZWUZJTkFMCQkyNworI2RlZmluZQlZWUZMQUcJCS0zMjc2OAorI2RlZmluZQlZWU5UQkFTRQkxNgorCisvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICovCisjZGVmaW5lIFlZVFJBTlNMQVRFKHgpICgodW5zaWduZWQpKHgpIDw9IDI2MSA/IHl5dHJhbnNsYXRlW3hdIDogMTgpCisKKy8qIFlZVFJBTlNMQVRFW1lZTEVYXSAtLSBCaXNvbiB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gKi8KK3N0YXRpYyBjb25zdCBjaGFyIHl5dHJhbnNsYXRlW10gPQoreworICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgMTAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgNSwgICAgIDIsCisgICAgICAxNCwgICAgMTUsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgMTIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgIDEzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAgICA5LCAgICAxMQorfTsKKworI2lmIFlZREVCVUcKK3N0YXRpYyBjb25zdCBzaG9ydCB5eXByaHNbXSA9Cit7CisgICAgICAgMCwgICAgIDAsICAgICAyLCAgICAgOCwgICAgMTIsICAgIDE2LCAgICAyMCwgICAgMjQsICAgIDI4LCAgICAzMiwKKyAgICAgIDM1LCAgICAzNywgICAgMzkKK307CitzdGF0aWMgY29uc3Qgc2hvcnQgeXlyaHNbXSA9Cit7CisgICAgICAxNywgICAgIDAsICAgIDE3LCAgICAgMywgICAgMTcsICAgIDEyLCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNCwKKyAgICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA1LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgNiwgICAgMTcsICAgICAwLAorICAgICAgMTcsICAgICA3LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgOCwgICAgMTcsICAgICAwLCAgICAxNywgICAgIDksCisgICAgICAxNywgICAgIDAsICAgIDEwLCAgICAxNywgICAgIDAsICAgIDEzLCAgICAgMCwgICAgMTEsICAgICAwLCAgICAxNCwKKyAgICAgIDE3LCAgICAxNSwgICAgIDAKK307CisKKyNlbmRpZgorCisjaWYgWVlERUJVRworLyogWVlSTElORVtZWU5dIC0tIHNvdXJjZSBsaW5lIHdoZXJlIHJ1bGUgbnVtYmVyIFlZTiB3YXMgZGVmaW5lZC4gKi8KK3N0YXRpYyBjb25zdCBzaG9ydCB5eXJsaW5lW10gPQoreworICAgICAgIDAsICAgMTUwLCAgIDE1OCwgICAxNjIsICAgMTY2LCAgIDE3MCwgICAxNzQsICAgMTc4LCAgIDE4MiwgICAxODYsCisgICAgIDE5MCwgICAxOTQsICAgMTk5Cit9OworI2VuZGlmCisKKworI2lmIChZWURFQlVHKSB8fCBkZWZpbmVkIFlZRVJST1JfVkVSQk9TRQorCisvKiBZWVROQU1FW1RPS0VOX05VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhlIHRva2VuIFRPS0VOX05VTS4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1lW10gPQoreworICAiJCIsICJlcnJvciIsICIkdW5kZWZpbmVkLiIsICInPyciLCAiJ3wnIiwgIicmJyIsICJFUVVPUDIiLCAiQ01QT1AyIiwKKyAgIkFERE9QMiIsICJNVUxPUDIiLCAiJyEnIiwgIk5VTUJFUiIsICInOiciLCAiJ24nIiwgIicoJyIsICInKSciLAorICAic3RhcnQiLCAiZXhwIiwgMAorfTsKKyNlbmRpZgorCisvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAqLworc3RhdGljIGNvbnN0IHNob3J0IHl5cjFbXSA9Cit7CisgICAgICAgMCwgICAgMTYsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywKKyAgICAgIDE3LCAgICAxNywgICAgMTcKK307CisKKy8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBjb21wb3NpbmcgcmlnaHQgaGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAqLworc3RhdGljIGNvbnN0IHNob3J0IHl5cjJbXSA9Cit7CisgICAgICAgMCwgICAgIDEsICAgICA1LCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMiwKKyAgICAgICAxLCAgICAgMSwgICAgIDMKK307CisKKy8qIFlZREVGQUNUW1NdIC0tIGRlZmF1bHQgcnVsZSB0byByZWR1Y2Ugd2l0aCBpbiBzdGF0ZSBTIHdoZW4gWVlUQUJMRQorICAgZG9lc24ndCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybyBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbgorICAgZXJyb3IuICovCitzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZhY3RbXSA9Cit7CisgICAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMCwgICAgIDAsICAgICAxLCAgICAgOSwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgICAwLCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDAsICAgICAwCit9OworCitzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZnb3RvW10gPQoreworICAgICAgMjUsICAgICA1Cit9OworCitzdGF0aWMgY29uc3Qgc2hvcnQgeXlwYWN0W10gPQoreworICAgICAgLTksICAgIC05LC0zMjc2OCwtMzI3NjgsICAgIC05LCAgICAzNCwtMzI3NjgsICAgIDExLCAgICAtOSwgICAgLTksCisgICAgICAtOSwgICAgLTksICAgIC05LCAgICAtOSwgICAgLTksLTMyNzY4LCAgICAyNCwgICAgMzksICAgIDQzLCAgICAxNiwKKyAgICAgIDI2LCAgICAtMywtMzI3NjgsICAgIC05LCAgICAzNCwgICAgMjEsICAgIDUzLC0zMjc2OAorfTsKKworc3RhdGljIGNvbnN0IHNob3J0IHl5cGdvdG9bXSA9Cit7CisgIC0zMjc2OCwgICAgLTEKK307CisKKworI2RlZmluZQlZWUxBU1QJCTUzCisKKworc3RhdGljIGNvbnN0IHNob3J0IHl5dGFibGVbXSA9Cit7CisgICAgICAgNiwgICAgIDEsICAgICAyLCAgICAgNywgICAgIDMsICAgICA0LCAgICAxNCwgICAgMTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDI2LCAgICAyNCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTMsICAgIDE0LCAgICAyMywgICAgIDgsICAgICA5LCAgICAxMCwKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMjcKK307CisKK3N0YXRpYyBjb25zdCBzaG9ydCB5eWNoZWNrW10gPQoreworICAgICAgIDEsICAgIDEwLCAgICAxMSwgICAgIDQsICAgIDEzLCAgICAxNCwgICAgIDksICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAgICA5LCAgICAgMCwgICAgMjMsICAgICA3LCAgICAgOCwgICAgIDksICAgIDE1LCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgICA4LCAgICAgOSwgICAgMTIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAgNiwKKyAgICAgICA3LCAgICAgOCwgICAgIDksICAgICAwCit9OworI2RlZmluZSBZWVBVUkUgMQorCisvKiAtKi1DLSotICBOb3RlIHNvbWUgY29tcGlsZXJzIGNob2tlIG9uIGNvbW1lbnRzIG9uIGAjbGluZScgbGluZXMuICAqLworI2xpbmUgMyAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCisKKy8qIFNrZWxldG9uIG91dHB1dCBwYXJzZXIgZm9yIGJpc29uLAorCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKworLyogQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgY29waWVkIGJ5IEJpc29uIGludG8gYQorICAgQmlzb24gb3V0cHV0IGZpbGUsIHlvdSBtYXkgdXNlIHRoYXQgb3V0cHV0IGZpbGUgd2l0aG91dCByZXN0cmljdGlvbi4KKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgIGluIHZlcnNpb24gMS4yNCBvZiBCaXNvbi4gICovCisKKy8qIFRoaXMgaXMgdGhlIHBhcnNlciBjb2RlIHRoYXQgaXMgd3JpdHRlbiBpbnRvIGVhY2ggYmlzb24gcGFyc2VyIHdoZW4KKyAgIHRoZSAlc2VtYW50aWNfcGFyc2VyIGRlY2xhcmF0aW9uIGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIGdyYW1tYXIuCisgICBJdCB3YXMgd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxsbWFuIGJ5IHNpbXBsaWZ5aW5nIHRoZSBoYWlyeSBwYXJzZXIKKyAgIHVzZWQgd2hlbiAlc2VtYW50aWNfcGFyc2VyIGlzIHNwZWNpZmllZC4gICovCisKKy8qIEFsbCBzeW1ib2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2luIHdpdGggeXkgb3IgWVksIHRvIGF2b2lkCisgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4gIFRoaXMgc2hvdWxkIGJlIGRvbmUgZXZlbiBmb3IgbG9jYWwKKyAgIHZhcmlhYmxlcywgYXMgdGhleSBtaWdodCBvdGhlcndpc2UgYmUgZXhwYW5kZWQgYnkgdXNlciBtYWNyb3MuCisgICBUaGVyZSBhcmUgc29tZSB1bmF2b2lkYWJsZSBleGNlcHRpb25zIHdpdGhpbiBpbmNsdWRlIGZpbGVzIHRvCisgICBkZWZpbmUgbmVjZXNzYXJ5IGxpYnJhcnkgc3ltYm9sczsgdGhleSBhcmUgbm90ZWQgIklORlJJTkdFUyBPTgorICAgVVNFUiBOQU1FIFNQQUNFIiBiZWxvdy4gICovCisKKyNpZiAhIGRlZmluZWQgKHl5b3ZlcmZsb3cpIHx8IGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkKKworLyogVGhlIHBhcnNlciBpbnZva2VzIGFsbG9jYSBvciBtYWxsb2M7IGRlZmluZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuICAqLworCisjIGlmIFlZU1RBQ0tfVVNFX0FMTE9DQQorIyAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCisjIGVsc2UKKyMgIGlmbmRlZiBZWVNUQUNLX1VTRV9BTExPQ0EKKyMgICBpZiBkZWZpbmVkIChhbGxvY2EpIHx8IGRlZmluZWQgKF9BTExPQ0FfSCkKKyMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCisjICAgZWxzZQorIyAgICBpZmRlZiBfX0dOVUNfXworIyAgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgX19idWlsdGluX2FsbG9jYQorIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmZGVmIFlZU1RBQ0tfQUxMT0MKKyAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScgd2FybmluZy4gKi8KKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICovOyB9IHdoaWxlICgwKQorIyBlbHNlCisjICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCisjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CisjICBlbmRpZgorIyAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgbWFsbG9jCisjICBkZWZpbmUgWVlTVEFDS19GUkVFIGZyZWUKKyMgZW5kaWYKKyNlbmRpZiAvKiAhIGRlZmluZWQgKHl5b3ZlcmZsb3cpIHx8IGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkgKi8KKworCisjaWYgKCEgZGVmaW5lZCAoeXlvdmVyZmxvdykgXAorICAgICAmJiAoISBkZWZpbmVkIChfX2NwbHVzcGx1cykgXAorCSB8fCAoWVlMVFlQRV9JU19UUklWSUFMICYmIFlZU1RZUEVfSVNfVFJJVklBTCkpKQorCisvKiBBIHR5cGUgdGhhdCBpcyBwcm9wZXJseSBhbGlnbmVkIGZvciBhbnkgc3RhY2sgbWVtYmVyLiAgKi8KK3VuaW9uIHl5YWxsb2MKK3sKKyAgc2hvcnQgeXlzczsKKyAgWVlTVFlQRSB5eXZzOworIyBpZiBZWUxTUF9ORUVERUQKKyAgWVlMVFlQRSB5eWxzOworIyBlbmRpZgorfTsKKworLyogVGhlIHNpemUgb2YgdGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAgKi8KKyMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWCAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCisKKy8qIFRoZSBzaXplIG9mIGFuIGFycmF5IGxhcmdlIHRvIGVub3VnaCB0byBob2xkIGFsbCBzdGFja3MsIGVhY2ggd2l0aAorICAgTiBlbGVtZW50cy4gICovCisjIGlmIFlZTFNQX05FRURFRAorIyAgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAorICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpCVwKKyAgICAgICsgMiAqIFlZU1RBQ0tfR0FQX01BWCkKKyMgZWxzZQorIyAgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAorICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQpICsgc2l6ZW9mIChZWVNUWVBFKSkJCQkJXAorICAgICAgKyBZWVNUQUNLX0dBUF9NQVgpCisjIGVuZGlmCisKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92ZXJsYXAuICAqLworIyBpZm5kZWYgWVlDT1BZCisjICBpZiAxIDwgX19HTlVDX18KKyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgXAorICAgICAgX19idWlsdGluX21lbWNweSAoVG8sIEZyb20sIChDb3VudCkgKiBzaXplb2YgKCooRnJvbSkpKQorIyAgZWxzZQorIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KQkJXAorICAgICAgZG8JCQkJCVwKKwl7CQkJCQlcCisJICByZWdpc3RlciBZWVNJWkVfVCB5eWk7CQlcCisJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5aSsrKQlcCisJICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAorCX0JCQkJCVwKKyAgICAgIHdoaWxlICgwKQorIyAgZW5kaWYKKyMgZW5kaWYKKworLyogUmVsb2NhdGUgU1RBQ0sgZnJvbSBpdHMgb2xkIGxvY2F0aW9uIHRvIHRoZSBuZXcgb25lLiAgVGhlCisgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKKyAgIGVsZW1lbnRzIGluIHRoZSBzdGFjaywgYW5kIFlZUFRSIGdpdmVzIHRoZSBuZXcgbG9jYXRpb24gb2YgdGhlCisgICBzdGFjay4gIEFkdmFuY2UgWVlQVFIgdG8gYSBwcm9wZXJseSBhbGlnbmVkIGxvY2F0aW9uIGZvciB0aGUgbmV4dAorICAgc3RhY2suICAqLworIyBkZWZpbmUgWVlTVEFDS19SRUxPQ0FURShTdGFjaykJCQkJCVwKKyAgICBkbwkJCQkJCQkJCVwKKyAgICAgIHsJCQkJCQkJCQlcCisJWVlTSVpFX1QgeXluZXdieXRlczsJCQkJCQlcCisJWVlDT1BZICgmeXlwdHItPlN0YWNrLCBTdGFjaywgeXlzaXplKTsJCQkJXAorCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlcCisJeXluZXdieXRlcyA9IHl5c3RhY2tzaXplICogc2l6ZW9mICgqU3RhY2spICsgWVlTVEFDS19HQVBfTUFYOwlcCisJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAorICAgICAgfQkJCQkJCQkJCVwKKyAgICB3aGlsZSAoMCkKKworI2VuZGlmCisKKworI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpICYmIGRlZmluZWQgKF9fU0laRV9UWVBFX18pCisjIGRlZmluZSBZWVNJWkVfVCBfX1NJWkVfVFlQRV9fCisjZW5kaWYKKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKSAmJiBkZWZpbmVkIChzaXplX3QpCisjIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKKyNlbmRpZgorI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpCisjIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKKyMgIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CisjIGVuZGlmCisjZW5kaWYKKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKQorIyBkZWZpbmUgWVlTSVpFX1QgdW5zaWduZWQgaW50CisjZW5kaWYKKworI2RlZmluZSB5eWVycm9rCQkoeXllcnJzdGF0dXMgPSAwKQorI2RlZmluZSB5eWNsZWFyaW4JKHl5Y2hhciA9IFlZRU1QVFkpCisjZGVmaW5lIFlZRU1QVFkJCS0yCisjZGVmaW5lIFlZRU9GCQkwCisjZGVmaW5lIFlZQUNDRVBUCWdvdG8geXlhY2NlcHRsYWIKKyNkZWZpbmUgWVlBQk9SVCAJZ290byB5eWFib3J0bGFiCisjZGVmaW5lIFlZRVJST1IJCWdvdG8geXllcnJsYWIxCisvKiBMaWtlIFlZRVJST1IgZXhjZXB0IGRvIGNhbGwgeXllcnJvci4gIFRoaXMgcmVtYWlucyBoZXJlIHRlbXBvcmFyaWx5CisgICB0byBlYXNlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgorICAgT25jZSBHQ0MgdmVyc2lvbiAyIGhhcyBzdXBwbGFudGVkIHZlcnNpb24gMSwgdGhpcyBjYW4gZ28uICAqLworI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKyNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQorI2RlZmluZSBZWUJBQ0tVUChUb2tlbiwgVmFsdWUpCQkJCQlcCitkbwkJCQkJCQkJXAorICBpZiAoeXljaGFyID09IFlZRU1QVFkgJiYgeXlsZW4gPT0gMSkJCQkJXAorICAgIHsJCQkJCQkJCVwKKyAgICAgIHl5Y2hhciA9IChUb2tlbik7CQkJCQkJXAorICAgICAgeXlsdmFsID0gKFZhbHVlKTsJCQkJCQlcCisgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CQkJCVwKKyAgICAgIFlZUE9QU1RBQ0s7CQkJCQkJXAorICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCisgICAgfQkJCQkJCQkJXAorICBlbHNlCQkJCQkJCQlcCisgICAgeyAJCQkJCQkJCVwKKyAgICAgIHl5ZXJyb3IgKCJzeW50YXggZXJyb3I6IGNhbm5vdCBiYWNrIHVwIik7CQkJXAorICAgICAgWVlFUlJPUjsJCQkJCQkJXAorICAgIH0JCQkJCQkJCVwKK3doaWxlICgwKQorCisjZGVmaW5lIFlZVEVSUk9SCTEKKyNkZWZpbmUgWVlFUlJDT0RFCTI1NgorCisKKy8qIFlZTExPQ19ERUZBVUxUIC0tIENvbXB1dGUgdGhlIGRlZmF1bHQgbG9jYXRpb24gKGJlZm9yZSB0aGUgYWN0aW9ucworICAgYXJlIHJ1bikuCisKKyAgIFdoZW4gWVlMTE9DX0RFRkFVTFQgaXMgcnVuLCBDVVJSRU5UIGlzIHNldCB0aGUgbG9jYXRpb24gb2YgdGhlCisgICBmaXJzdCB0b2tlbi4gIEJ5IGRlZmF1bHQsIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciByYW5nZXMsIGV4dGVuZAorICAgaXRzIHJhbmdlIHRvIHRoZSBsYXN0IHN5bWJvbC4gICovCisKKyNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKKyMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgCVwKKyAgIEN1cnJlbnQubGFzdF9saW5lICAgPSBSaHNbTl0ubGFzdF9saW5lOwlcCisgICBDdXJyZW50Lmxhc3RfY29sdW1uID0gUmhzW05dLmxhc3RfY29sdW1uOworI2VuZGlmCisKKworLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICovCisKKyNpZiBZWVBVUkUKKyMgaWYgWVlMU1BfTkVFREVECisjICBpZmRlZiBZWUxFWF9QQVJBTQorIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MsIFlZTEVYX1BBUkFNKQorIyAgZWxzZQorIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2MpCisjICBlbmRpZgorIyBlbHNlIC8qICFZWUxTUF9ORUVERUQgKi8KKyMgIGlmZGVmIFlZTEVYX1BBUkFNCisjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCwgWVlMRVhfUEFSQU0pCisjICBlbHNlCisjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCkKKyMgIGVuZGlmCisjIGVuZGlmIC8qICFZWUxTUF9ORUVERUQgKi8KKyNlbHNlIC8qICFZWVBVUkUgKi8KKyMgZGVmaW5lIFlZTEVYCQkJeXlsZXggKCkKKyNlbmRpZiAvKiAhWVlQVVJFICovCisKKworLyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLworI2lmIFlZREVCVUcKKworIyBpZm5kZWYgWVlGUFJJTlRGCisjICBpbmNsdWRlIDxzdGRpby5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZpbmUgWVlGUFJJTlRGIGZwcmludGYKKyMgZW5kaWYKKworIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCQkJXAorZG8gewkJCQkJCVwKKyAgaWYgKHl5ZGVidWcpCQkJCQlcCisgICAgWVlGUFJJTlRGIEFyZ3M7CQkJCVwKK30gd2hpbGUgKDApCisvKiBOb256ZXJvIG1lYW5zIHByaW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKKyAgIG11bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLworaW50IHl5ZGVidWc7CisjZWxzZSAvKiAhWVlERUJVRyAqLworIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCisjZW5kaWYgLyogIVlZREVCVUcgKi8KKworLyogWVlJTklUREVQVEggLS0gaW5pdGlhbCBzaXplIG9mIHRoZSBwYXJzZXIncyBzdGFja3MuICAqLworI2lmbmRlZglZWUlOSVRERVBUSAorIyBkZWZpbmUgWVlJTklUREVQVEggMjAwCisjZW5kaWYKKworLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNrcyBjYW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKKyAgIGlmIHRoZSBidWlsdC1pbiBzdGFjayBleHRlbnNpb24gbWV0aG9kIGlzIHVzZWQpLgorCisgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgorICAgU0laRV9NQVggPCBZWVNUQUNLX0JZVEVTIChZWU1BWERFUFRIKQorICAgZXZhbHVhdGVkIHdpdGggaW5maW5pdGUtcHJlY2lzaW9uIGludGVnZXIgYXJpdGhtZXRpYy4gICovCisKKyNpZiBZWU1BWERFUFRIID09IDAKKyMgdW5kZWYgWVlNQVhERVBUSAorI2VuZGlmCisKKyNpZm5kZWYgWVlNQVhERVBUSAorIyBkZWZpbmUgWVlNQVhERVBUSCAxMDAwMAorI2VuZGlmCisKKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKKworIyBpZm5kZWYgeXlzdHJsZW4KKyMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19IKQorIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KKyMgIGVsc2UKKy8qIFJldHVybiB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KK3N0YXRpYyBZWVNJWkVfVAorIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKK3l5c3RybGVuIChjb25zdCBjaGFyICp5eXN0cikKKyMgICBlbHNlCit5eXN0cmxlbiAoeXlzdHIpCisgICAgIGNvbnN0IGNoYXIgKnl5c3RyOworIyAgIGVuZGlmCit7CisgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3RyOworCisgIHdoaWxlICgqeXlzKysgIT0gJ1wwJykKKyAgICBjb250aW51ZTsKKworICByZXR1cm4geXlzIC0geXlzdHIgLSAxOworfQorIyAgZW5kaWYKKyMgZW5kaWYKKworIyBpZm5kZWYgeXlzdHBjcHkKKyMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19IKSAmJiBkZWZpbmVkIChfR05VX1NPVVJDRSkKKyMgICBkZWZpbmUgeXlzdHBjcHkgc3RwY3B5CisjICBlbHNlCisvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRoZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCisgICBZWURFU1QuICAqLworc3RhdGljIGNoYXIgKgorIyAgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKK3l5c3RwY3B5IChjaGFyICp5eWRlc3QsIGNvbnN0IGNoYXIgKnl5c3JjKQorIyAgIGVsc2UKK3l5c3RwY3B5ICh5eWRlc3QsIHl5c3JjKQorICAgICBjaGFyICp5eWRlc3Q7CisgICAgIGNvbnN0IGNoYXIgKnl5c3JjOworIyAgIGVuZGlmCit7CisgIHJlZ2lzdGVyIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKKyAgcmVnaXN0ZXIgY29uc3QgY2hhciAqeXlzID0geXlzcmM7CisKKyAgd2hpbGUgKCgqeXlkKysgPSAqeXlzKyspICE9ICdcMCcpCisgICAgY29udGludWU7CisKKyAgcmV0dXJuIHl5ZCAtIDE7Cit9CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKyNsaW5lIDMxNSAiL3Vzci9sb2NhbC9zaGFyZS9iaXNvbi9iaXNvbi5zaW1wbGUiCisKKworLyogVGhlIHVzZXIgY2FuIGRlZmluZSBZWVBBUlNFX1BBUkFNIGFzIHRoZSBuYW1lIG9mIGFuIGFyZ3VtZW50IHRvIGJlIHBhc3NlZAorICAgaW50byB5eXBhcnNlLiAgVGhlIGFyZ3VtZW50IHNob3VsZCBoYXZlIHR5cGUgdm9pZCAqLgorICAgSXQgc2hvdWxkIGFjdHVhbGx5IHBvaW50IHRvIGFuIG9iamVjdC4KKyAgIEdyYW1tYXIgYWN0aW9ucyBjYW4gYWNjZXNzIHRoZSB2YXJpYWJsZSBieSBjYXN0aW5nIGl0CisgICB0byB0aGUgcHJvcGVyIHBvaW50ZXIgdHlwZS4gICovCisKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0FSRyB2b2lkICpZWVBBUlNFX1BBUkFNCisjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMCisjIGVsc2UKKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0FSRyBZWVBBUlNFX1BBUkFNCisjICBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMIHZvaWQgKllZUEFSU0VfUEFSQU07CisjIGVuZGlmCisjZWxzZSAvKiAhWVlQQVJTRV9QQVJBTSAqLworIyBkZWZpbmUgWVlQQVJTRV9QQVJBTV9BUkcKKyMgZGVmaW5lIFlZUEFSU0VfUEFSQU1fREVDTAorI2VuZGlmIC8qICFZWVBBUlNFX1BBUkFNICovCisKKy8qIFByZXZlbnQgd2FybmluZyBpZiAtV3N0cmljdC1wcm90b3R5cGVzLiAgKi8KKyNpZmRlZiBfX0dOVUNfXworIyBpZmRlZiBZWVBBUlNFX1BBUkFNCitpbnQgeXlwYXJzZSAodm9pZCAqKTsKKyMgZWxzZQoraW50IHl5cGFyc2UgKHZvaWQpOworIyBlbmRpZgorI2VuZGlmCisKKy8qIFlZX0RFQ0xfVkFSSUFCTEVTIC0tIGRlcGVuZGluZyB3aGV0aGVyIHdlIHVzZSBhIHB1cmUgcGFyc2VyLAorICAgdmFyaWFibGVzIGFyZSBnbG9iYWwsIG9yIGxvY2FsIHRvIFlZUEFSU0UuICAqLworCisjZGVmaW5lIFlZX0RFQ0xfTk9OX0xTUF9WQVJJQUJMRVMJCQlcCisvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCQkJCVwKK2ludCB5eWNoYXI7CQkJCQkJXAorCQkJCQkJCVwKKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gKi8JXAorWVlTVFlQRSB5eWx2YWw7CQkJCQkJXAorCQkJCQkJCVwKKy8qIE51bWJlciBvZiBwYXJzZSBlcnJvcnMgc28gZmFyLiAgKi8JCQlcCitpbnQgeXluZXJyczsKKworI2lmIFlZTFNQX05FRURFRAorIyBkZWZpbmUgWVlfREVDTF9WQVJJQUJMRVMJCQlcCitZWV9ERUNMX05PTl9MU1BfVkFSSUFCTEVTCQkJXAorCQkJCQkJXAorLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLwlcCitZWUxUWVBFIHl5bGxvYzsKKyNlbHNlCisjIGRlZmluZSBZWV9ERUNMX1ZBUklBQkxFUwkJCVwKK1lZX0RFQ0xfTk9OX0xTUF9WQVJJQUJMRVMKKyNlbmRpZgorCisKKy8qIElmIG5vbnJlZW50cmFudCwgZ2VuZXJhdGUgdGhlIHZhcmlhYmxlcyBoZXJlLiAqLworCisjaWYgIVlZUFVSRQorWVlfREVDTF9WQVJJQUJMRVMKKyNlbmRpZiAgLyogIVlZUFVSRSAqLworCitpbnQKK3l5cGFyc2UgKFlZUEFSU0VfUEFSQU1fQVJHKQorICAgICBZWVBBUlNFX1BBUkFNX0RFQ0wKK3sKKyAgLyogSWYgcmVlbnRyYW50LCBnZW5lcmF0ZSB0aGUgdmFyaWFibGVzIGhlcmUuICovCisjaWYgWVlQVVJFCisgIFlZX0RFQ0xfVkFSSUFCTEVTCisjZW5kaWYgIC8qICFZWVBVUkUgKi8KKworICByZWdpc3RlciBpbnQgeXlzdGF0ZTsKKyAgcmVnaXN0ZXIgaW50IHl5bjsKKyAgaW50IHl5cmVzdWx0OworICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KKyAgaW50IHl5ZXJyc3RhdHVzOworICAvKiBMb29rYWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICovCisgIGludCB5eWNoYXIxID0gMDsKKworICAvKiBUaHJlZSBzdGFja3MgYW5kIHRoZWlyIHRvb2xzOgorICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAorICAgICBgeXl2cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAorICAgICBgeXlscyc6IHJlbGF0ZWQgdG8gbG9jYXRpb25zLgorCisgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2ludGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdworICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdoZXJlLiAgKi8KKworICAvKiBUaGUgc3RhdGUgc3RhY2suICovCisgIHNob3J0CXl5c3NhW1lZSU5JVERFUFRIXTsKKyAgc2hvcnQgKnl5c3MgPSB5eXNzYTsKKyAgcmVnaXN0ZXIgc2hvcnQgKnl5c3NwOworCisgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCisgIFlZU1RZUEUgeXl2c2FbWVlJTklUREVQVEhdOworICBZWVNUWVBFICp5eXZzID0geXl2c2E7CisgIHJlZ2lzdGVyIFlZU1RZUEUgKnl5dnNwOworCisjaWYgWVlMU1BfTkVFREVECisgIC8qIFRoZSBsb2NhdGlvbiBzdGFjay4gICovCisgIFlZTFRZUEUgeXlsc2FbWVlJTklUREVQVEhdOworICBZWUxUWVBFICp5eWxzID0geXlsc2E7CisgIFlZTFRZUEUgKnl5bHNwOworI2VuZGlmCisKKyNpZiBZWUxTUF9ORUVERUQKKyMgZGVmaW5lIFlZUE9QU1RBQ0sgICAoeXl2c3AtLSwgeXlzc3AtLSwgeXlsc3AtLSkKKyNlbHNlCisjIGRlZmluZSBZWVBPUFNUQUNLICAgKHl5dnNwLS0sIHl5c3NwLS0pCisjZW5kaWYKKworICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOworCisKKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAgICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsKKyNpZiBZWUxTUF9ORUVERUQKKyAgWVlMVFlQRSB5eWxvYzsKKyNlbmRpZgorCisgIC8qIFdoZW4gcmVkdWNpbmcsIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgUkhTIG9mIHRoZSByZWR1Y2VkCisgICAgIHJ1bGUuICovCisgIGludCB5eWxlbjsKKworICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFydGluZyBwYXJzZVxuIikpOworCisgIHl5c3RhdGUgPSAwOworICB5eWVycnN0YXR1cyA9IDA7CisgIHl5bmVycnMgPSAwOworICB5eWNoYXIgPSBZWUVNUFRZOwkJLyogQ2F1c2UgYSB0b2tlbiB0byBiZSByZWFkLiAgKi8KKworICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgorICAgICBXYXN0ZSBvbmUgZWxlbWVudCBvZiB2YWx1ZSBhbmQgbG9jYXRpb24gc3RhY2sKKyAgICAgc28gdGhhdCB0aGV5IHN0YXkgb24gdGhlIHNhbWUgbGV2ZWwgYXMgdGhlIHN0YXRlIHN0YWNrLgorICAgICBUaGUgd2FzdGVkIGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCisKKyAgeXlzc3AgPSB5eXNzOworICB5eXZzcCA9IHl5dnM7CisjaWYgWVlMU1BfTkVFREVECisgIHl5bHNwID0geXlsczsKKyNlbmRpZgorICBnb3RvIHl5c2V0c3RhdGU7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eW5ld3N0YXRlIC0tIFB1c2ggYSBuZXcgc3RhdGUsIHdoaWNoIGlzIGZvdW5kIGluIHl5c3RhdGUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyB5eW5ld3N0YXRlOgorICAvKiBJbiBhbGwgY2FzZXMsIHdoZW4geW91IGdldCBoZXJlLCB0aGUgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrcworICAgICBoYXZlIGp1c3QgYmVlbiBwdXNoZWQuIHNvIHB1c2hpbmcgYSBzdGF0ZSBoZXJlIGV2ZW5zIHRoZSBzdGFja3MuCisgICAgICovCisgIHl5c3NwKys7CisKKyB5eXNldHN0YXRlOgorICAqeXlzc3AgPSB5eXN0YXRlOworCisgIGlmICh5eXNzcCA+PSB5eXNzICsgeXlzdGFja3NpemUgLSAxKQorICAgIHsKKyAgICAgIC8qIEdldCB0aGUgY3VycmVudCB1c2VkIHNpemUgb2YgdGhlIHRocmVlIHN0YWNrcywgaW4gZWxlbWVudHMuICAqLworICAgICAgWVlTSVpFX1QgeXlzaXplID0geXlzc3AgLSB5eXNzICsgMTsKKworI2lmZGVmIHl5b3ZlcmZsb3cKKyAgICAgIHsKKwkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suIFVzZSBjb3BpZXMgb2YKKwkgICB0aGVzZSBzbyB0aGF0IHRoZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCisJICAgbWVtb3J5LiAgKi8KKwlZWVNUWVBFICp5eXZzMSA9IHl5dnM7CisJc2hvcnQgKnl5c3MxID0geXlzczsKKworCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQorCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgKi8KKyMgaWYgWVlMU1BfTkVFREVECisJWVlMVFlQRSAqeXlsczEgPSB5eWxzOworCS8qIFRoaXMgdXNlZCB0byBiZSBhIGNvbmRpdGlvbmFsIGFyb3VuZCBqdXN0IHRoZSB0d28gZXh0cmEgYXJncywKKwkgICBidXQgdGhhdCBtaWdodCBiZSB1bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3JvLiAgKi8KKwl5eW92ZXJmbG93ICgicGFyc2VyIHN0YWNrIG92ZXJmbG93IiwKKwkJICAgICZ5eXNzMSwgeXlzaXplICogc2l6ZW9mICgqeXlzc3ApLAorCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCisJCSAgICAmeXlsczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5bHNwKSwKKwkJICAgICZ5eXN0YWNrc2l6ZSk7CisJeXlscyA9IHl5bHMxOworIyBlbHNlCisJeXlvdmVyZmxvdyAoInBhcnNlciBzdGFjayBvdmVyZmxvdyIsCisJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgqeXl2c3ApLAorCQkgICAgJnl5c3RhY2tzaXplKTsKKyMgZW5kaWYKKwl5eXNzID0geXlzczE7CisJeXl2cyA9IHl5dnMxOworICAgICAgfQorI2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLworIyBpZm5kZWYgWVlTVEFDS19SRUxPQ0FURQorICAgICAgZ290byB5eW92ZXJmbG93bGFiOworIyBlbHNlCisgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KKyAgICAgIGlmICh5eXN0YWNrc2l6ZSA+PSBZWU1BWERFUFRIKQorCWdvdG8geXlvdmVyZmxvd2xhYjsKKyAgICAgIHl5c3RhY2tzaXplICo9IDI7CisgICAgICBpZiAoeXlzdGFja3NpemUgPiBZWU1BWERFUFRIKQorCXl5c3RhY2tzaXplID0gWVlNQVhERVBUSDsKKworICAgICAgeworCXNob3J0ICp5eXNzMSA9IHl5c3M7CisJdW5pb24geXlhbGxvYyAqeXlwdHIgPQorCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKKwlpZiAoISB5eXB0cikKKwkgIGdvdG8geXlvdmVyZmxvd2xhYjsKKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKKwlZWVNUQUNLX1JFTE9DQVRFICh5eXZzKTsKKyMgaWYgWVlMU1BfTkVFREVECisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CisjIGVuZGlmCisjIHVuZGVmIFlZU1RBQ0tfUkVMT0NBVEUKKwlpZiAoeXlzczEgIT0geXlzc2EpCisJICBZWVNUQUNLX0ZSRUUgKHl5c3MxKTsKKyAgICAgIH0KKyMgZW5kaWYKKyNlbmRpZiAvKiBubyB5eW92ZXJmbG93ICovCisKKyAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7CisgICAgICB5eXZzcCA9IHl5dnMgKyB5eXNpemUgLSAxOworI2lmIFlZTFNQX05FRURFRAorICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKKyNlbmRpZgorCisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCisJCSAgKHVuc2lnbmVkIGxvbmcgaW50KSB5eXN0YWNrc2l6ZSkpOworCisgICAgICBpZiAoeXlzc3AgPj0geXlzcyArIHl5c3RhY2tzaXplIC0gMSkKKwlZWUFCT1JUOworICAgIH0KKworICBZWURQUklOVEYgKChzdGRlcnIsICJFbnRlcmluZyBzdGF0ZSAlZFxuIiwgeXlzdGF0ZSkpOworCisgIGdvdG8geXliYWNrdXA7CisKKworLyotLS0tLS0tLS0tLS4KK3wgeXliYWNrdXAuICB8CitgLS0tLS0tLS0tLS0qLworeXliYWNrdXA6CisKKy8qIERvIGFwcHJvcHJpYXRlIHByb2Nlc3NpbmcgZ2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUuICAqLworLyogUmVhZCBhIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisvKiB5eXJlc3VtZTogKi8KKworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAgKi8KKworICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4gPT0gWVlGTEFHKQorICAgIGdvdG8geXlkZWZhdWx0OworCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCisKKyAgLyogeXljaGFyIGlzIGVpdGhlciBZWUVNUFRZIG9yIFlZRU9GCisgICAgIG9yIGEgdmFsaWQgdG9rZW4gaW4gZXh0ZXJuYWwgZm9ybS4gICovCisKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZKQorICAgIHsKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlJlYWRpbmcgYSB0b2tlbjogIikpOworICAgICAgeXljaGFyID0gWVlMRVg7CisgICAgfQorCisgIC8qIENvbnZlcnQgdG9rZW4gdG8gaW50ZXJuYWwgZm9ybSAoaW4geXljaGFyMSkgZm9yIGluZGV4aW5nIHRhYmxlcyB3aXRoICovCisKKyAgaWYgKHl5Y2hhciA8PSAwKQkJLyogVGhpcyBtZWFucyBlbmQgb2YgaW5wdXQuICovCisgICAgeworICAgICAgeXljaGFyMSA9IDA7CisgICAgICB5eWNoYXIgPSBZWUVPRjsJCS8qIERvbid0IGNhbGwgWVlMRVggYW55IG1vcmUgKi8KKworICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiTm93IGF0IGVuZCBvZiBpbnB1dC5cbiIpKTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB5eWNoYXIxID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7CisKKyNpZiBZWURFQlVHCisgICAgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMKKwl3aGljaCBhcmUgZGVmaW5lZCBvbmx5IGlmIGBZWURFQlVHJyBpcyBzZXQuICAqLworICAgICAgaWYgKHl5ZGVidWcpCisJeworCSAgWVlGUFJJTlRGIChzdGRlcnIsICJOZXh0IHRva2VuIGlzICVkICglcyIsCisJCSAgICAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKTsKKwkgIC8qIEdpdmUgdGhlIGluZGl2aWR1YWwgcGFyc2VyIGEgd2F5IHRvIHByaW50IHRoZSBwcmVjaXNlCisJICAgICBtZWFuaW5nIG9mIGEgdG9rZW4sIGZvciBmdXJ0aGVyIGRlYnVnZ2luZyBpbmZvLiAgKi8KKyMgaWZkZWYgWVlQUklOVAorCSAgWVlQUklOVCAoc3RkZXJyLCB5eWNoYXIsIHl5bHZhbCk7CisjIGVuZGlmCisJICBZWUZQUklOVEYgKHN0ZGVyciwgIilcbiIpOworCX0KKyNlbmRpZgorICAgIH0KKworICB5eW4gKz0geXljaGFyMTsKKyAgaWYgKHl5biA8IDAgfHwgeXluID4gWVlMQVNUIHx8IHl5Y2hlY2tbeXluXSAhPSB5eWNoYXIxKQorICAgIGdvdG8geXlkZWZhdWx0OworCisgIHl5biA9IHl5dGFibGVbeXluXTsKKworICAvKiB5eW4gaXMgd2hhdCB0byBkbyBmb3IgdGhpcyB0b2tlbiB0eXBlIGluIHRoaXMgc3RhdGUuCisgICAgIE5lZ2F0aXZlID0+IHJlZHVjZSwgLXl5biBpcyBydWxlIG51bWJlci4KKyAgICAgUG9zaXRpdmUgPT4gc2hpZnQsIHl5biBpcyBuZXcgc3RhdGUuCisgICAgICAgTmV3IHN0YXRlIGlzIGZpbmFsIHN0YXRlID0+IGRvbid0IGJvdGhlciB0byBzaGlmdCwKKyAgICAgICBqdXN0IHJldHVybiBzdWNjZXNzLgorICAgICAwLCBvciBtb3N0IG5lZ2F0aXZlIG51bWJlciA9PiBlcnJvci4gICovCisKKyAgaWYgKHl5biA8IDApCisgICAgeworICAgICAgaWYgKHl5biA9PSBZWUZMQUcpCisJZ290byB5eWVycmxhYjsKKyAgICAgIHl5biA9IC15eW47CisgICAgICBnb3RvIHl5cmVkdWNlOworICAgIH0KKyAgZWxzZSBpZiAoeXluID09IDApCisgICAgZ290byB5eWVycmxhYjsKKworICBpZiAoeXluID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgLyogU2hpZnQgdGhlIGxvb2thaGVhZCB0b2tlbi4gICovCisgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlNoaWZ0aW5nIHRva2VuICVkICglcyksICIsCisJICAgICAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKSk7CisKKyAgLyogRGlzY2FyZCB0aGUgdG9rZW4gYmVpbmcgc2hpZnRlZCB1bmxlc3MgaXQgaXMgZW9mLiAgKi8KKyAgaWYgKHl5Y2hhciAhPSBZWUVPRikKKyAgICB5eWNoYXIgPSBZWUVNUFRZOworCisgICorK3l5dnNwID0geXlsdmFsOworI2lmIFlZTFNQX05FRURFRAorICAqKyt5eWxzcCA9IHl5bGxvYzsKKyNlbmRpZgorCisgIC8qIENvdW50IHRva2VucyBzaGlmdGVkIHNpbmNlIGVycm9yOyBhZnRlciB0aHJlZSwgdHVybiBvZmYgZXJyb3IKKyAgICAgc3RhdHVzLiAgKi8KKyAgaWYgKHl5ZXJyc3RhdHVzKQorICAgIHl5ZXJyc3RhdHVzLS07CisKKyAgeXlzdGF0ZSA9IHl5bjsKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZGVmYXVsdCAtLSBkbyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBjdXJyZW50IHN0YXRlLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZGVmYXVsdDoKKyAgeXluID0geXlkZWZhY3RbeXlzdGF0ZV07CisgIGlmICh5eW4gPT0gMCkKKyAgICBnb3RvIHl5ZXJybGFiOworICBnb3RvIHl5cmVkdWNlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cmVkdWNlIC0tIERvIGEgcmVkdWN0aW9uLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5cmVkdWNlOgorICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAqLworICB5eWxlbiA9IHl5cjJbeXluXTsKKworICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKKyAgICAgYCQkID0gJDEnLgorCisgICAgIE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwgdG8gdGhlIHNlbWFudGljIHZhbHVlIG9mCisgICAgIHRoZSBsb29rYWhlYWQgdG9rZW4uICBUaGlzIGJlaGF2aW9yIGlzIHVuZG9jdW1lbnRlZCBhbmQgQmlzb24KKyAgICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlWQUwKKyAgICAgdW5jb25kaXRpb25hbGx5IG1ha2VzIHRoZSBwYXJzZXIgYSBiaXQgc21hbGxlciwgYW5kIGl0IGF2b2lkcyBhCisgICAgIEdDQyB3YXJuaW5nIHRoYXQgWVlWQUwgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZC4gICovCisgIHl5dmFsID0geXl2c3BbMS15eWxlbl07CisKKyNpZiBZWUxTUF9ORUVERUQKKyAgLyogU2ltaWxhcmx5IGZvciB0aGUgZGVmYXVsdCBsb2NhdGlvbi4gIExldCB0aGUgdXNlciBydW4gYWRkaXRpb25hbAorICAgICBjb21tYW5kcyBpZiBmb3IgaW5zdGFuY2UgbG9jYXRpb25zIGFyZSByYW5nZXMuICAqLworICB5eWxvYyA9IHl5bHNwWzEteXlsZW5dOworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwgeXlsZW4pOworI2VuZGlmCisKKyNpZiBZWURFQlVHCisgIC8qIFdlIGhhdmUgdG8ga2VlcCB0aGlzIGAjaWYgWVlERUJVRycsIHNpbmNlIHdlIHVzZSB2YXJpYWJsZXMgd2hpY2gKKyAgICAgYXJlIGRlZmluZWQgb25seSBpZiBgWVlERUJVRycgaXMgc2V0LiAgKi8KKyAgaWYgKHl5ZGVidWcpCisgICAgeworICAgICAgaW50IHl5aTsKKworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyB2aWEgcnVsZSAlZCAobGluZSAlZCksICIsCisJCSB5eW4sIHl5cmxpbmVbeXluXSk7CisKKyAgICAgIC8qIFByaW50IHRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQsIGFuZCB0aGVpciByZXN1bHQuICAqLworICAgICAgZm9yICh5eWkgPSB5eXByaHNbeXluXTsgeXlyaHNbeXlpXSA+IDA7IHl5aSsrKQorCVlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgeXl0bmFtZVt5eXJoc1t5eWldXSk7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiAtPiAlc1xuIiwgeXl0bmFtZVt5eXIxW3l5bl1dKTsKKyAgICB9CisjZW5kaWYKKworICBzd2l0Y2ggKHl5bikgeworCitjYXNlIDE6CisjbGluZSAxNTEgInBsdXJhbC55IgoreworCSAgICBpZiAoeXl2c3BbMF0uZXhwID09IE5VTEwpCisJICAgICAgWVlBQk9SVDsKKwkgICAgKChzdHJ1Y3QgcGFyc2VfYXJncyAqKSBhcmcpLT5yZXMgPSB5eXZzcFswXS5leHA7CisJICB9CisgICAgYnJlYWs7CitjYXNlIDI6CisjbGluZSAxNTkgInBsdXJhbC55IgoreworCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzMgKHFtb3AsIHl5dnNwWy00XS5leHAsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7CisJICB9CisgICAgYnJlYWs7CitjYXNlIDM6CisjbGluZSAxNjMgInBsdXJhbC55IgoreworCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKGxvciwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKKwkgIH0KKyAgICBicmVhazsKK2Nhc2UgNDoKKyNsaW5lIDE2NyAicGx1cmFsLnkiCit7CisJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAobGFuZCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKKwkgIH0KKyAgICBicmVhazsKK2Nhc2UgNToKKyNsaW5lIDE3MSAicGx1cmFsLnkiCit7CisJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOworCSAgfQorICAgIGJyZWFrOworY2FzZSA2OgorI2xpbmUgMTc1ICJwbHVyYWwueSIKK3sKKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7CisJICB9CisgICAgYnJlYWs7CitjYXNlIDc6CisjbGluZSAxNzkgInBsdXJhbC55IgoreworCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKKwkgIH0KKyAgICBicmVhazsKK2Nhc2UgODoKKyNsaW5lIDE4MyAicGx1cmFsLnkiCit7CisJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOworCSAgfQorICAgIGJyZWFrOworY2FzZSA5OgorI2xpbmUgMTg3ICJwbHVyYWwueSIKK3sKKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8xIChsbm90LCB5eXZzcFswXS5leHApOworCSAgfQorICAgIGJyZWFrOworY2FzZSAxMDoKKyNsaW5lIDE5MSAicGx1cmFsLnkiCit7CisJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMCAodmFyKTsKKwkgIH0KKyAgICBicmVhazsKK2Nhc2UgMTE6CisjbGluZSAxOTUgInBsdXJhbC55IgoreworCSAgICBpZiAoKHl5dmFsLmV4cCA9IG5ld19leHBfMCAobnVtKSkgIT0gTlVMTCkKKwkgICAgICB5eXZhbC5leHAtPnZhbC5udW0gPSB5eXZzcFswXS5udW07CisJICB9CisgICAgYnJlYWs7CitjYXNlIDEyOgorI2xpbmUgMjAwICJwbHVyYWwueSIKK3sKKwkgICAgeXl2YWwuZXhwID0geXl2c3BbLTFdLmV4cDsKKwkgIH0KKyAgICBicmVhazsKK30KKworI2xpbmUgNzA1ICIvdXNyL2xvY2FsL3NoYXJlL2Jpc29uL2Jpc29uLnNpbXBsZSIKKworCisgIHl5dnNwIC09IHl5bGVuOworICB5eXNzcCAtPSB5eWxlbjsKKyNpZiBZWUxTUF9ORUVERUQKKyAgeXlsc3AgLT0geXlsZW47CisjZW5kaWYKKworI2lmIFlZREVCVUcKKyAgaWYgKHl5ZGVidWcpCisgICAgeworICAgICAgc2hvcnQgKnl5c3NwMSA9IHl5c3MgLSAxOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJzdGF0ZSBzdGFjayBub3ciKTsKKyAgICAgIHdoaWxlICh5eXNzcDEgIT0geXlzc3ApCisJWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqKyt5eXNzcDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOworICAgIH0KKyNlbmRpZgorCisgICorK3l5dnNwID0geXl2YWw7CisjaWYgWVlMU1BfTkVFREVECisgICorK3l5bHNwID0geXlsb2M7CisjZW5kaWYKKworICAvKiBOb3cgYHNoaWZ0JyB0aGUgcmVzdWx0IG9mIHRoZSByZWR1Y3Rpb24uICBEZXRlcm1pbmUgd2hhdCBzdGF0ZQorICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKKyAgICAgbnVtYmVyIHJlZHVjZWQgYnkuICAqLworCisgIHl5biA9IHl5cjFbeXluXTsKKworICB5eXN0YXRlID0geXlwZ290b1t5eW4gLSBZWU5UQkFTRV0gKyAqeXlzc3A7CisgIGlmICh5eXN0YXRlID49IDAgJiYgeXlzdGF0ZSA8PSBZWUxBU1QgJiYgeXljaGVja1t5eXN0YXRlXSA9PSAqeXlzc3ApCisgICAgeXlzdGF0ZSA9IHl5dGFibGVbeXlzdGF0ZV07CisgIGVsc2UKKyAgICB5eXN0YXRlID0geXlkZWZnb3RvW3l5biAtIFlZTlRCQVNFXTsKKworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJsYWI6CisgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLworICBpZiAoIXl5ZXJyc3RhdHVzKQorICAgIHsKKyAgICAgICsreXluZXJyczsKKworI2lmZGVmIFlZRVJST1JfVkVSQk9TRQorICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOworCisgICAgICBpZiAoeXluID4gWVlGTEFHICYmIHl5biA8IFlZTEFTVCkKKwl7CisJICBZWVNJWkVfVCB5eXNpemUgPSAwOworCSAgY2hhciAqeXltc2c7CisJICBpbnQgeXl4LCB5eWNvdW50OworCisJICB5eWNvdW50ID0gMDsKKwkgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KKwkgICAgIFlZQ0hFQ0suICAqLworCSAgZm9yICh5eXggPSB5eW4gPCAwID8gLXl5biA6IDA7CisJICAgICAgIHl5eCA8IChpbnQpIChzaXplb2YgKHl5dG5hbWUpIC8gc2l6ZW9mIChjaGFyICopKTsgeXl4KyspCisJICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4KQorCSAgICAgIHl5c2l6ZSArPSB5eXN0cmxlbiAoeXl0bmFtZVt5eXhdKSArIDE1LCB5eWNvdW50Kys7CisJICB5eXNpemUgKz0geXlzdHJsZW4gKCJwYXJzZSBlcnJvciwgdW5leHBlY3RlZCAiKSArIDE7CisJICB5eXNpemUgKz0geXlzdHJsZW4gKHl5dG5hbWVbWVlUUkFOU0xBVEUgKHl5Y2hhcildKTsKKwkgIHl5bXNnID0gKGNoYXIgKikgWVlTVEFDS19BTExPQyAoeXlzaXplKTsKKwkgIGlmICh5eW1zZyAhPSAwKQorCSAgICB7CisJICAgICAgY2hhciAqeXlwID0geXlzdHBjcHkgKHl5bXNnLCAicGFyc2UgZXJyb3IsIHVuZXhwZWN0ZWQgIik7CisJICAgICAgeXlwID0geXlzdHBjcHkgKHl5cCwgeXl0bmFtZVtZWVRSQU5TTEFURSAoeXljaGFyKV0pOworCisJICAgICAgaWYgKHl5Y291bnQgPCA1KQorCQl7CisJCSAgeXljb3VudCA9IDA7CisJCSAgZm9yICh5eXggPSB5eW4gPCAwID8gLXl5biA6IDA7CisJCSAgICAgICB5eXggPCAoaW50KSAoc2l6ZW9mICh5eXRuYW1lKSAvIHNpemVvZiAoY2hhciAqKSk7CisJCSAgICAgICB5eXgrKykKKwkJICAgIGlmICh5eWNoZWNrW3l5eCArIHl5bl0gPT0geXl4KQorCQkgICAgICB7CisJCQljb25zdCBjaGFyICp5eXEgPSAhIHl5Y291bnQgPyAiLCBleHBlY3RpbmcgIiA6ICIgb3IgIjsKKwkJCXl5cCA9IHl5c3RwY3B5ICh5eXAsIHl5cSk7CisJCQl5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXRuYW1lW3l5eF0pOworCQkJeXljb3VudCsrOworCQkgICAgICB9CisJCX0KKwkgICAgICB5eWVycm9yICh5eW1zZyk7CisJICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7CisJICAgIH0KKwkgIGVsc2UKKwkgICAgeXllcnJvciAoInBhcnNlIGVycm9yOyBhbHNvIHZpcnR1YWwgbWVtb3J5IGV4aGF1c3RlZCIpOworCX0KKyAgICAgIGVsc2UKKyNlbmRpZiAvKiBkZWZpbmVkIChZWUVSUk9SX1ZFUkJPU0UpICovCisJeXllcnJvciAoInBhcnNlIGVycm9yIik7CisgICAgfQorICBnb3RvIHl5ZXJybGFiMTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxhYjEgLS0gZXJyb3IgcmFpc2VkIGV4cGxpY2l0bHkgYnkgYW4gYWN0aW9uIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWVycmxhYjE6CisgIGlmICh5eWVycnN0YXR1cyA9PSAzKQorICAgIHsKKyAgICAgIC8qIElmIGp1c3QgdHJpZWQgYW5kIGZhaWxlZCB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgYW4KKwkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLworCisgICAgICAvKiByZXR1cm4gZmFpbHVyZSBpZiBhdCBlbmQgb2YgaW5wdXQgKi8KKyAgICAgIGlmICh5eWNoYXIgPT0gWVlFT0YpCisJWVlBQk9SVDsKKyAgICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIkRpc2NhcmRpbmcgdG9rZW4gJWQgKCVzKS5cbiIsCisJCSAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKSk7CisgICAgICB5eWNoYXIgPSBZWUVNUFRZOworICAgIH0KKworICAvKiBFbHNlIHdpbGwgdHJ5IHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKKyAgICAgdG9rZW4uICAqLworCisgIHl5ZXJyc3RhdHVzID0gMzsJCS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcyAqLworCisgIGdvdG8geXllcnJoYW5kbGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmRlZmF1bHQgLS0gY3VycmVudCBzdGF0ZSBkb2VzIG5vdCBkbyBhbnl0aGluZyBzcGVjaWFsIGZvciB0aGUgfAorfCBlcnJvciB0b2tlbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJkZWZhdWx0OgorI2lmIDAKKyAgLyogVGhpcyBpcyB3cm9uZzsgb25seSBzdGF0ZXMgdGhhdCBleHBsaWNpdGx5IHdhbnQgZXJyb3IgdG9rZW5zCisgICAgIHNob3VsZCBzaGlmdCB0aGVtLiAgKi8KKworICAvKiBJZiBpdHMgZGVmYXVsdCBpcyB0byBhY2NlcHQgYW55IHRva2VuLCBvay4gIE90aGVyd2lzZSBwb3AgaXQuICAqLworICB5eW4gPSB5eWRlZmFjdFt5eXN0YXRlXTsKKyAgaWYgKHl5bikKKyAgICBnb3RvIHl5ZGVmYXVsdDsKKyNlbmRpZgorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycnBvcCAtLSBwb3AgdGhlIGN1cnJlbnQgc3RhdGUgYmVjYXVzZSBpdCBjYW5ub3QgaGFuZGxlIHRoZSB8Cit8IGVycm9yIHRva2VuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJwb3A6CisgIGlmICh5eXNzcCA9PSB5eXNzKQorICAgIFlZQUJPUlQ7CisgIHl5dnNwLS07CisgIHl5c3RhdGUgPSAqLS15eXNzcDsKKyNpZiBZWUxTUF9ORUVERUQKKyAgeXlsc3AtLTsKKyNlbmRpZgorCisjaWYgWVlERUJVRworICBpZiAoeXlkZWJ1ZykKKyAgICB7CisgICAgICBzaG9ydCAqeXlzc3AxID0geXlzcyAtIDE7CisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIkVycm9yOiBzdGF0ZSBzdGFjayBub3ciKTsKKyAgICAgIHdoaWxlICh5eXNzcDEgIT0geXlzc3ApCisJWVlGUFJJTlRGIChzdGRlcnIsICIgJWQiLCAqKyt5eXNzcDEpOworICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOworICAgIH0KKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmhhbmRsZS4gIHwKK2AtLS0tLS0tLS0tLS0tLSovCit5eWVycmhhbmRsZToKKyAgeXluID0geXlwYWN0W3l5c3RhdGVdOworICBpZiAoeXluID09IFlZRkxBRykKKyAgICBnb3RvIHl5ZXJyZGVmYXVsdDsKKworICB5eW4gKz0gWVlURVJST1I7CisgIGlmICh5eW4gPCAwIHx8IHl5biA+IFlZTEFTVCB8fCB5eWNoZWNrW3l5bl0gIT0gWVlURVJST1IpCisgICAgZ290byB5eWVycmRlZmF1bHQ7CisKKyAgeXluID0geXl0YWJsZVt5eW5dOworICBpZiAoeXluIDwgMCkKKyAgICB7CisgICAgICBpZiAoeXluID09IFlZRkxBRykKKwlnb3RvIHl5ZXJycG9wOworICAgICAgeXluID0gLXl5bjsKKyAgICAgIGdvdG8geXlyZWR1Y2U7CisgICAgfQorICBlbHNlIGlmICh5eW4gPT0gMCkKKyAgICBnb3RvIHl5ZXJycG9wOworCisgIGlmICh5eW4gPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKworICBZWURQUklOVEYgKChzdGRlcnIsICJTaGlmdGluZyBlcnJvciB0b2tlbiwgIikpOworCisgICorK3l5dnNwID0geXlsdmFsOworI2lmIFlZTFNQX05FRURFRAorICAqKyt5eWxzcCA9IHl5bGxvYzsKKyNlbmRpZgorCisgIHl5c3RhdGUgPSB5eW47CisgIGdvdG8geXluZXdzdGF0ZTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFjY2VwdGxhYjoKKyAgeXlyZXN1bHQgPSAwOworICBnb3RvIHl5cmV0dXJuOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWFib3J0bGFiIC0tIFlZQUJPUlQgY29tZXMgaGVyZS4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCit5eWFib3J0bGFiOgorICB5eXJlc3VsdCA9IDE7CisgIGdvdG8geXlyZXR1cm47CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eW92ZXJmbG93YWIgLS0gcGFyc2VyIG92ZXJmbG93IGNvbWVzIGhlcmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5b3ZlcmZsb3dsYWI6CisgIHl5ZXJyb3IgKCJwYXJzZXIgc3RhY2sgb3ZlcmZsb3ciKTsKKyAgeXlyZXN1bHQgPSAyOworICAvKiBGYWxsIHRocm91Z2guICAqLworCit5eXJldHVybjoKKyNpZm5kZWYgeXlvdmVyZmxvdworICBpZiAoeXlzcyAhPSB5eXNzYSkKKyAgICBZWVNUQUNLX0ZSRUUgKHl5c3MpOworI2VuZGlmCisgIHJldHVybiB5eXJlc3VsdDsKK30KKyNsaW5lIDIwNSAicGx1cmFsLnkiCisKKwordm9pZAoraW50ZXJuYWxfZnVuY3Rpb24KK0ZSRUVfRVhQUkVTU0lPTiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKK3sKKyAgaWYgKGV4cCA9PSBOVUxMKQorICAgIHJldHVybjsKKworICAvKiBIYW5kbGUgdGhlIHJlY3Vyc2l2ZSBjYXNlLiAgKi8KKyAgc3dpdGNoIChleHAtPm5hcmdzKQorICAgIHsKKyAgICBjYXNlIDM6CisgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMl0pOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBjYXNlIDI6CisgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMV0pOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBjYXNlIDE6CisgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMF0pOworICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgICAgfQorCisgIGZyZWUgKGV4cCk7Cit9CisKKworc3RhdGljIGludAoreXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKQoreworICBjb25zdCBjaGFyICpleHAgPSAqcGV4cDsKKyAgaW50IHJlc3VsdDsKKworICB3aGlsZSAoMSkKKyAgICB7CisgICAgICBpZiAoZXhwWzBdID09ICdcMCcpCisJeworCSAgKnBleHAgPSBleHA7CisJICByZXR1cm4gWVlFT0Y7CisJfQorCisgICAgICBpZiAoZXhwWzBdICE9ICcgJyAmJiBleHBbMF0gIT0gJ1x0JykKKwlicmVhazsKKworICAgICAgKytleHA7CisgICAgfQorCisgIHJlc3VsdCA9ICpleHArKzsKKyAgc3dpdGNoIChyZXN1bHQpCisgICAgeworICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6CisgICAgICB7CisJdW5zaWduZWQgbG9uZyBpbnQgbiA9IHJlc3VsdCAtICcwJzsKKwl3aGlsZSAoZXhwWzBdID49ICcwJyAmJiBleHBbMF0gPD0gJzknKQorCSAgeworCSAgICBuICo9IDEwOworCSAgICBuICs9IGV4cFswXSAtICcwJzsKKwkgICAgKytleHA7CisJICB9CisJbHZhbC0+bnVtID0gbjsKKwlyZXN1bHQgPSBOVU1CRVI7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgJz0nOgorICAgICAgaWYgKGV4cFswXSA9PSAnPScpCisJeworCSAgKytleHA7CisJICBsdmFsLT5vcCA9IGVxdWFsOworCSAgcmVzdWx0ID0gRVFVT1AyOworCX0KKyAgICAgIGVsc2UKKwlyZXN1bHQgPSBZWUVSUkNPREU7CisgICAgICBicmVhazsKKworICAgIGNhc2UgJyEnOgorICAgICAgaWYgKGV4cFswXSA9PSAnPScpCisJeworCSAgKytleHA7CisJICBsdmFsLT5vcCA9IG5vdF9lcXVhbDsKKwkgIHJlc3VsdCA9IEVRVU9QMjsKKwl9CisgICAgICBicmVhazsKKworICAgIGNhc2UgJyYnOgorICAgIGNhc2UgJ3wnOgorICAgICAgaWYgKGV4cFswXSA9PSByZXN1bHQpCisJKytleHA7CisgICAgICBlbHNlCisJcmVzdWx0ID0gWVlFUlJDT0RFOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICc8JzoKKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQorCXsKKwkgICsrZXhwOworCSAgbHZhbC0+b3AgPSBsZXNzX29yX2VxdWFsOworCX0KKyAgICAgIGVsc2UKKwlsdmFsLT5vcCA9IGxlc3NfdGhhbjsKKyAgICAgIHJlc3VsdCA9IENNUE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnPic6CisgICAgICBpZiAoZXhwWzBdID09ICc9JykKKwl7CisJICArK2V4cDsKKwkgIGx2YWwtPm9wID0gZ3JlYXRlcl9vcl9lcXVhbDsKKwl9CisgICAgICBlbHNlCisJbHZhbC0+b3AgPSBncmVhdGVyX3RoYW47CisgICAgICByZXN1bHQgPSBDTVBPUDI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgJyonOgorICAgICAgbHZhbC0+b3AgPSBtdWx0OworICAgICAgcmVzdWx0ID0gTVVMT1AyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICcvJzoKKyAgICAgIGx2YWwtPm9wID0gZGl2aWRlOworICAgICAgcmVzdWx0ID0gTVVMT1AyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICclJzoKKyAgICAgIGx2YWwtPm9wID0gbW9kdWxlOworICAgICAgcmVzdWx0ID0gTVVMT1AyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICcrJzoKKyAgICAgIGx2YWwtPm9wID0gcGx1czsKKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnLSc6CisgICAgICBsdmFsLT5vcCA9IG1pbnVzOworICAgICAgcmVzdWx0ID0gQURET1AyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICduJzoKKyAgICBjYXNlICc/JzoKKyAgICBjYXNlICc6JzoKKyAgICBjYXNlICcoJzoKKyAgICBjYXNlICcpJzoKKyAgICAgIC8qIE5vdGhpbmcsIGp1c3QgcmV0dXJuIHRoZSBjaGFyYWN0ZXIuICAqLworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICc7JzoKKyAgICBjYXNlICdcbic6CisgICAgY2FzZSAnXDAnOgorICAgICAgLyogQmUgc2FmZSBhbmQgbGV0IHRoZSB1c2VyIGNhbGwgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4gICovCisgICAgICAtLWV4cDsKKyAgICAgIHJlc3VsdCA9IFlZRU9GOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgcmVzdWx0ID0gWVlFUlJDT0RFOworI2lmIFlZREVCVUcgIT0gMAorICAgICAgLS1leHA7CisjZW5kaWYKKyAgICAgIGJyZWFrOworICAgIH0KKworICAqcGV4cCA9IGV4cDsKKworICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyB2b2lkCit5eWVycm9yIChjb25zdCBjaGFyICpzdHIpCit7CisgIC8qIERvIG5vdGhpbmcuICBXZSBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlLiAgKi8KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC55IGIvZTJmc3Byb2dzL2ludGwvcGx1cmFsLnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzM2JkNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL3BsdXJhbC55CkBAIC0wLDAgKzEsMzgxIEBACisleworLyogRXhwcmVzc2lvbiBwYXJzaW5nIGZvciBwbHVyYWwgZm9ybSBzZWxlY3Rpb24uCisgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisvKiBUaGUgYmlzb24gZ2VuZXJhdGVkIHBhcnNlciB1c2VzIGFsbG9jYS4gIEFJWCAzIGZvcmNlcyB1cyB0byBwdXQgdGhpcworICAgZGVjbGFyYXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gIFRoZSBkZWNsYXJhdGlvbiBpbiBiaXNvbidzCisgICBza2VsZXRvbiBmaWxlIGNvbWVzIHRvbyBsYXRlLiAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4KKyAgIGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZSBhcmJpdHJhcnkgc3lzdGVtIGhlYWRlcnMuICAqLworI2lmIGRlZmluZWQgX0FJWCAmJiAhZGVmaW5lZCBfX0dOVUNfXworICNwcmFnbWEgYWxsb2NhCisjZW5kaWYKKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgInBsdXJhbC1leHAuaCIKKworLyogVGhlIG1haW4gZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBwYXJzZXIgaXMgY2FsbGVkIF9fZ2V0dGV4dHBhcnNlLAorICAgYnV0IHdlIHdhbnQgaXQgdG8gYmUgY2FsbGVkIFBMVVJBTF9QQVJTRS4gICovCisjaWZuZGVmIF9MSUJDCisjIGRlZmluZSBfX2dldHRleHRwYXJzZSBQTFVSQUxfUEFSU0UKKyNlbmRpZgorCisjZGVmaW5lIFlZTEVYX1BBUkFNCSYoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPmNwCisjZGVmaW5lIFlZUEFSU0VfUEFSQU0JYXJnCislfQorJXB1cmVfcGFyc2VyCislZXhwZWN0IDcKKworJXVuaW9uIHsKKyAgdW5zaWduZWQgbG9uZyBpbnQgbnVtOworICBlbnVtIG9wZXJhdG9yIG9wOworICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwOworfQorCisleworLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KK3N0YXRpYyBpbnQgeXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKTsKK3N0YXRpYyB2b2lkIHl5ZXJyb3IgKGNvbnN0IGNoYXIgKnN0cik7CisKKy8qIEFsbG9jYXRpb24gb2YgZXhwcmVzc2lvbnMuICAqLworCitzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgorbmV3X2V4cCAoaW50IG5hcmdzLCBlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqIGNvbnN0ICphcmdzKQoreworICBpbnQgaTsKKyAgc3RydWN0IGV4cHJlc3Npb24gKm5ld3A7CisKKyAgLyogSWYgYW55IG9mIHRoZSBhcmd1bWVudCBjb3VsZCBub3QgYmUgbWFsbG9jJ2VkLCBqdXN0IHJldHVybiBOVUxMLiAgKi8KKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKKyAgICBpZiAoYXJnc1tpXSA9PSBOVUxMKQorICAgICAgZ290byBmYWlsOworCisgIC8qIEFsbG9jYXRlIGEgbmV3IGV4cHJlc3Npb24uICAqLworICBuZXdwID0gKHN0cnVjdCBleHByZXNzaW9uICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOworICBpZiAobmV3cCAhPSBOVUxMKQorICAgIHsKKyAgICAgIG5ld3AtPm5hcmdzID0gbmFyZ3M7CisgICAgICBuZXdwLT5vcGVyYXRpb24gPSBvcDsKKyAgICAgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCisJbmV3cC0+dmFsLmFyZ3NbaV0gPSBhcmdzW2ldOworICAgICAgcmV0dXJuIG5ld3A7CisgICAgfQorCisgZmFpbDoKKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKKyAgICBGUkVFX0VYUFJFU1NJT04gKGFyZ3NbaV0pOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKK25ld19leHBfMCAoZW51bSBvcGVyYXRvciBvcCkKK3sKKyAgcmV0dXJuIG5ld19leHAgKDAsIG9wLCBOVUxMKTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCituZXdfZXhwXzEgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKK3sKKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMV07CisKKyAgYXJnc1swXSA9IHJpZ2h0OworICByZXR1cm4gbmV3X2V4cCAoMSwgb3AsIGFyZ3MpOworfQorCitzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgorbmV3X2V4cF8yIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqbGVmdCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQoreworICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1syXTsKKworICBhcmdzWzBdID0gbGVmdDsKKyAgYXJnc1sxXSA9IHJpZ2h0OworICByZXR1cm4gbmV3X2V4cCAoMiwgb3AsIGFyZ3MpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKK25ld19leHBfMyAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmJleHAsCisJICAgc3RydWN0IGV4cHJlc3Npb24gKnRicmFuY2gsIHN0cnVjdCBleHByZXNzaW9uICpmYnJhbmNoKQoreworICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsKKworICBhcmdzWzBdID0gYmV4cDsKKyAgYXJnc1sxXSA9IHRicmFuY2g7CisgIGFyZ3NbMl0gPSBmYnJhbmNoOworICByZXR1cm4gbmV3X2V4cCAoMywgb3AsIGFyZ3MpOworfQorCislfQorCisvKiBUaGlzIGRlY2xhcmVzIHRoYXQgYWxsIG9wZXJhdG9ycyBoYXZlIHRoZSBzYW1lIGFzc29jaWF0aXZpdHkgYW5kIHRoZQorICAgcHJlY2VkZW5jZSBvcmRlciBhcyBpbiBDLiAgU2VlIFtIYXJiaXNvbiwgU3RlZWxlOiBDLCBBIFJlZmVyZW5jZSBNYW51YWxdLgorICAgVGhlcmUgaXMgbm8gdW5hcnkgbWludXMgYW5kIG5vIGJpdHdpc2Ugb3BlcmF0b3JzLgorICAgT3BlcmF0b3JzIHdpdGggdGhlIHNhbWUgc3ludGFjdGljIGJlaGF2aW91ciBoYXZlIGJlZW4gbWVyZ2VkIGludG8gYSBzaW5nbGUKKyAgIHRva2VuLCB0byBzYXZlIHNwYWNlIGluIHRoZSBhcnJheSBnZW5lcmF0ZWQgYnkgYmlzb24uICAqLworJXJpZ2h0ICc/JwkJLyogICA/CQkqLworJWxlZnQgJ3wnCQkvKiAgIHx8CQkqLworJWxlZnQgJyYnCQkvKiAgICYmCQkqLworJWxlZnQgRVFVT1AyCQkvKiAgID09ICE9CSovCislbGVmdCBDTVBPUDIJCS8qICAgPCA+IDw9ID49CSovCislbGVmdCBBRERPUDIJCS8qICAgKyAtCSovCislbGVmdCBNVUxPUDIJCS8qICAgKiAvICUJKi8KKyVyaWdodCAnIScJCS8qICAgIQkJKi8KKworJXRva2VuIDxvcD4gRVFVT1AyIENNUE9QMiBBRERPUDIgTVVMT1AyCisldG9rZW4gPG51bT4gTlVNQkVSCisldHlwZSA8ZXhwPiBleHAKKworJSUKKworc3RhcnQ6CSAgZXhwCisJICB7CisJICAgIGlmICgkMSA9PSBOVUxMKQorCSAgICAgIFlZQUJPUlQ7CisJICAgICgoc3RydWN0IHBhcnNlX2FyZ3MgKikgYXJnKS0+cmVzID0gJDE7CisJICB9CisJOworCitleHA6CSAgZXhwICc/JyBleHAgJzonIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMyAocW1vcCwgJDEsICQzLCAkNSk7CisJICB9CisJfCBleHAgJ3wnIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMiAobG9yLCAkMSwgJDMpOworCSAgfQorCXwgZXhwICcmJyBleHAKKwkgIHsKKwkgICAgJCQgPSBuZXdfZXhwXzIgKGxhbmQsICQxLCAkMyk7CisJICB9CisJfCBleHAgRVFVT1AyIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7CisJICB9CisJfCBleHAgQ01QT1AyIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7CisJICB9CisJfCBleHAgQURET1AyIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7CisJICB9CisJfCBleHAgTVVMT1AyIGV4cAorCSAgeworCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7CisJICB9CisJfCAnIScgZXhwCisJICB7CisJICAgICQkID0gbmV3X2V4cF8xIChsbm90LCAkMik7CisJICB9CisJfCAnbicKKwkgIHsKKwkgICAgJCQgPSBuZXdfZXhwXzAgKHZhcik7CisJICB9CisJfCBOVU1CRVIKKwkgIHsKKwkgICAgaWYgKCgkJCA9IG5ld19leHBfMCAobnVtKSkgIT0gTlVMTCkKKwkgICAgICAkJC0+dmFsLm51bSA9ICQxOworCSAgfQorCXwgJygnIGV4cCAnKScKKwkgIHsKKwkgICAgJCQgPSAkMjsKKwkgIH0KKwk7CisKKyUlCisKK3ZvaWQKK2ludGVybmFsX2Z1bmN0aW9uCitGUkVFX0VYUFJFU1NJT04gKHN0cnVjdCBleHByZXNzaW9uICpleHApCit7CisgIGlmIChleHAgPT0gTlVMTCkKKyAgICByZXR1cm47CisKKyAgLyogSGFuZGxlIHRoZSByZWN1cnNpdmUgY2FzZS4gICovCisgIHN3aXRjaCAoZXhwLT5uYXJncykKKyAgICB7CisgICAgY2FzZSAzOgorICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzJdKTsKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSAyOgorICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzFdKTsKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgY2FzZSAxOgorICAgICAgRlJFRV9FWFBSRVNTSU9OIChleHAtPnZhbC5hcmdzWzBdKTsKKyAgICAgIC8qIEZBTExUSFJPVUdIICovCisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICAgIH0KKworICBmcmVlIChleHApOworfQorCisKK3N0YXRpYyBpbnQKK3l5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCkKK3sKKyAgY29uc3QgY2hhciAqZXhwID0gKnBleHA7CisgIGludCByZXN1bHQ7CisKKyAgd2hpbGUgKDEpCisgICAgeworICAgICAgaWYgKGV4cFswXSA9PSAnXDAnKQorCXsKKwkgICpwZXhwID0gZXhwOworCSAgcmV0dXJuIFlZRU9GOworCX0KKworICAgICAgaWYgKGV4cFswXSAhPSAnICcgJiYgZXhwWzBdICE9ICdcdCcpCisJYnJlYWs7CisKKyAgICAgICsrZXhwOworICAgIH0KKworICByZXN1bHQgPSAqZXhwKys7CisgIHN3aXRjaCAocmVzdWx0KQorICAgIHsKKyAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CisgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgorICAgICAgeworCXVuc2lnbmVkIGxvbmcgaW50IG4gPSByZXN1bHQgLSAnMCc7CisJd2hpbGUgKGV4cFswXSA+PSAnMCcgJiYgZXhwWzBdIDw9ICc5JykKKwkgIHsKKwkgICAgbiAqPSAxMDsKKwkgICAgbiArPSBleHBbMF0gLSAnMCc7CisJICAgICsrZXhwOworCSAgfQorCWx2YWwtPm51bSA9IG47CisJcmVzdWx0ID0gTlVNQkVSOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlICc9JzoKKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQorCXsKKwkgICsrZXhwOworCSAgbHZhbC0+b3AgPSBlcXVhbDsKKwkgIHJlc3VsdCA9IEVRVU9QMjsKKwl9CisgICAgICBlbHNlCisJcmVzdWx0ID0gWVlFUlJDT0RFOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICchJzoKKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQorCXsKKwkgICsrZXhwOworCSAgbHZhbC0+b3AgPSBub3RfZXF1YWw7CisJICByZXN1bHQgPSBFUVVPUDI7CisJfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlICcmJzoKKyAgICBjYXNlICd8JzoKKyAgICAgIGlmIChleHBbMF0gPT0gcmVzdWx0KQorCSsrZXhwOworICAgICAgZWxzZQorCXJlc3VsdCA9IFlZRVJSQ09ERTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnPCc6CisgICAgICBpZiAoZXhwWzBdID09ICc9JykKKwl7CisJICArK2V4cDsKKwkgIGx2YWwtPm9wID0gbGVzc19vcl9lcXVhbDsKKwl9CisgICAgICBlbHNlCisJbHZhbC0+b3AgPSBsZXNzX3RoYW47CisgICAgICByZXN1bHQgPSBDTVBPUDI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgJz4nOgorICAgICAgaWYgKGV4cFswXSA9PSAnPScpCisJeworCSAgKytleHA7CisJICBsdmFsLT5vcCA9IGdyZWF0ZXJfb3JfZXF1YWw7CisJfQorICAgICAgZWxzZQorCWx2YWwtPm9wID0gZ3JlYXRlcl90aGFuOworICAgICAgcmVzdWx0ID0gQ01QT1AyOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICcqJzoKKyAgICAgIGx2YWwtPm9wID0gbXVsdDsKKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnLyc6CisgICAgICBsdmFsLT5vcCA9IGRpdmlkZTsKKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnJSc6CisgICAgICBsdmFsLT5vcCA9IG1vZHVsZTsKKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnKyc6CisgICAgICBsdmFsLT5vcCA9IHBsdXM7CisgICAgICByZXN1bHQgPSBBRERPUDI7CisgICAgICBicmVhazsKKworICAgIGNhc2UgJy0nOgorICAgICAgbHZhbC0+b3AgPSBtaW51czsKKyAgICAgIHJlc3VsdCA9IEFERE9QMjsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnbic6CisgICAgY2FzZSAnPyc6CisgICAgY2FzZSAnOic6CisgICAgY2FzZSAnKCc6CisgICAgY2FzZSAnKSc6CisgICAgICAvKiBOb3RoaW5nLCBqdXN0IHJldHVybiB0aGUgY2hhcmFjdGVyLiAgKi8KKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAnOyc6CisgICAgY2FzZSAnXG4nOgorICAgIGNhc2UgJ1wwJzoKKyAgICAgIC8qIEJlIHNhZmUgYW5kIGxldCB0aGUgdXNlciBjYWxsIHRoaXMgZnVuY3Rpb24gYWdhaW4uICAqLworICAgICAgLS1leHA7CisgICAgICByZXN1bHQgPSBZWUVPRjsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIHJlc3VsdCA9IFlZRVJSQ09ERTsKKyNpZiBZWURFQlVHICE9IDAKKyAgICAgIC0tZXhwOworI2VuZGlmCisgICAgICBicmVhazsKKyAgICB9CisKKyAgKnBleHAgPSBleHA7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgdm9pZAoreXllcnJvciAoY29uc3QgY2hhciAqc3RyKQoreworICAvKiBEbyBub3RoaW5nLiAgV2UgZG9uJ3QgcHJpbnQgZXJyb3IgbWVzc2FnZXMgaGVyZS4gICovCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9wcmludGYtYXJncy5jIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLWFyZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmYzMjE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLWFyZ3MuYwpAQCAtMCwwICsxLDExOSBAQAorLyogRGVjb21wb3NlZCBwcmludGYgYXJndW1lbnQgbGlzdC4KKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworLyogU3BlY2lmaWNhdGlvbi4gICovCisjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKKworI2lmZGVmIFNUQVRJQworU1RBVElDCisjZW5kaWYKK2ludAorcHJpbnRmX2ZldGNoYXJncyAodmFfbGlzdCBhcmdzLCBhcmd1bWVudHMgKmEpCit7CisgIHNpemVfdCBpOworICBhcmd1bWVudCAqYXA7CisKKyAgZm9yIChpID0gMCwgYXAgPSAmYS0+YXJnWzBdOyBpIDwgYS0+Y291bnQ7IGkrKywgYXArKykKKyAgICBzd2l0Y2ggKGFwLT50eXBlKQorICAgICAgeworICAgICAgY2FzZSBUWVBFX1NDSEFSOgorCWFwLT5hLmFfc2NoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qc2lnbmVkIGNoYXIqLyBpbnQpOworCWJyZWFrOworICAgICAgY2FzZSBUWVBFX1VDSEFSOgorCWFwLT5hLmFfdWNoYXIgPSB2YV9hcmcgKGFyZ3MsIC8qdW5zaWduZWQgY2hhciovIGludCk7CisJYnJlYWs7CisgICAgICBjYXNlIFRZUEVfU0hPUlQ6CisJYXAtPmEuYV9zaG9ydCA9IHZhX2FyZyAoYXJncywgLypzaG9ydCovIGludCk7CisJYnJlYWs7CisgICAgICBjYXNlIFRZUEVfVVNIT1JUOgorCWFwLT5hLmFfdXNob3J0ID0gdmFfYXJnIChhcmdzLCAvKnVuc2lnbmVkIHNob3J0Ki8gaW50KTsKKwlicmVhazsKKyAgICAgIGNhc2UgVFlQRV9JTlQ6CisJYXAtPmEuYV9pbnQgPSB2YV9hcmcgKGFyZ3MsIGludCk7CisJYnJlYWs7CisgICAgICBjYXNlIFRZUEVfVUlOVDoKKwlhcC0+YS5hX3VpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGludCk7CisJYnJlYWs7CisgICAgICBjYXNlIFRZUEVfTE9OR0lOVDoKKwlhcC0+YS5hX2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgaW50KTsKKwlicmVhazsKKyAgICAgIGNhc2UgVFlQRV9VTE9OR0lOVDoKKwlhcC0+YS5hX3Vsb25naW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBsb25nIGludCk7CisJYnJlYWs7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKKwlhcC0+YS5hX2xvbmdsb25naW50ID0gdmFfYXJnIChhcmdzLCBsb25nIGxvbmcgaW50KTsKKwlicmVhazsKKyAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6CisJYXAtPmEuYV91bG9uZ2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQpOworCWJyZWFrOworI2VuZGlmCisgICAgICBjYXNlIFRZUEVfRE9VQkxFOgorCWFwLT5hLmFfZG91YmxlID0gdmFfYXJnIChhcmdzLCBkb3VibGUpOworCWJyZWFrOworI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKKyAgICAgIGNhc2UgVFlQRV9MT05HRE9VQkxFOgorCWFwLT5hLmFfbG9uZ2RvdWJsZSA9IHZhX2FyZyAoYXJncywgbG9uZyBkb3VibGUpOworCWJyZWFrOworI2VuZGlmCisgICAgICBjYXNlIFRZUEVfQ0hBUjoKKwlhcC0+YS5hX2NoYXIgPSB2YV9hcmcgKGFyZ3MsIGludCk7CisJYnJlYWs7CisjaWZkZWYgSEFWRV9XSU5UX1QKKyAgICAgIGNhc2UgVFlQRV9XSURFX0NIQVI6CisJYXAtPmEuYV93aWRlX2NoYXIgPSB2YV9hcmcgKGFyZ3MsIHdpbnRfdCk7CisJYnJlYWs7CisjZW5kaWYKKyAgICAgIGNhc2UgVFlQRV9TVFJJTkc6CisJYXAtPmEuYV9zdHJpbmcgPSB2YV9hcmcgKGFyZ3MsIGNvbnN0IGNoYXIgKik7CisJYnJlYWs7CisjaWZkZWYgSEFWRV9XQ0hBUl9UCisgICAgICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6CisJYXAtPmEuYV93aWRlX3N0cmluZyA9IHZhX2FyZyAoYXJncywgY29uc3Qgd2NoYXJfdCAqKTsKKwlicmVhazsKKyNlbmRpZgorICAgICAgY2FzZSBUWVBFX1BPSU5URVI6CisJYXAtPmEuYV9wb2ludGVyID0gdmFfYXJnIChhcmdzLCB2b2lkICopOworCWJyZWFrOworICAgICAgY2FzZSBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVI6CisJYXAtPmEuYV9jb3VudF9zY2hhcl9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBzaWduZWQgY2hhciAqKTsKKwlicmVhazsKKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOgorCWFwLT5hLmFfY291bnRfc2hvcnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgc2hvcnQgKik7CisJYnJlYWs7CisgICAgICBjYXNlIFRZUEVfQ09VTlRfSU5UX1BPSU5URVI6CisJYXAtPmEuYV9jb3VudF9pbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgaW50ICopOworCWJyZWFrOworICAgICAgY2FzZSBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUjoKKwlhcC0+YS5hX2NvdW50X2xvbmdpbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgbG9uZyBpbnQgKik7CisJYnJlYWs7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSOgorCWFwLT5hLmFfY291bnRfbG9uZ2xvbmdpbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgbG9uZyBsb25nIGludCAqKTsKKwlicmVhazsKKyNlbmRpZgorICAgICAgZGVmYXVsdDoKKwkvKiBVbmtub3duIHR5cGUuICAqLworCXJldHVybiAtMTsKKyAgICAgIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9wcmludGYtYXJncy5oIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLWFyZ3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTFlNjRjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLWFyZ3MuaApAQCAtMCwwICsxLDEzNyBAQAorLyogRGVjb21wb3NlZCBwcmludGYgYXJndW1lbnQgbGlzdC4KKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfUFJJTlRGX0FSR1NfSAorI2RlZmluZSBfUFJJTlRGX0FSR1NfSAorCisvKiBHZXQgc2l6ZV90LiAgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyogR2V0IHdjaGFyX3QuICAqLworI2lmZGVmIEhBVkVfV0NIQVJfVAorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorCisvKiBHZXQgd2ludF90LiAgKi8KKyNpZmRlZiBIQVZFX1dJTlRfVAorIyBpbmNsdWRlIDx3Y2hhci5oPgorI2VuZGlmCisKKy8qIEdldCB2YV9saXN0LiAgKi8KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworCisvKiBBcmd1bWVudCB0eXBlcyAqLwordHlwZWRlZiBlbnVtCit7CisgIFRZUEVfTk9ORSwKKyAgVFlQRV9TQ0hBUiwKKyAgVFlQRV9VQ0hBUiwKKyAgVFlQRV9TSE9SVCwKKyAgVFlQRV9VU0hPUlQsCisgIFRZUEVfSU5ULAorICBUWVBFX1VJTlQsCisgIFRZUEVfTE9OR0lOVCwKKyAgVFlQRV9VTE9OR0lOVCwKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICBUWVBFX0xPTkdMT05HSU5ULAorICBUWVBFX1VMT05HTE9OR0lOVCwKKyNlbmRpZgorICBUWVBFX0RPVUJMRSwKKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCisgIFRZUEVfTE9OR0RPVUJMRSwKKyNlbmRpZgorICBUWVBFX0NIQVIsCisjaWZkZWYgSEFWRV9XSU5UX1QKKyAgVFlQRV9XSURFX0NIQVIsCisjZW5kaWYKKyAgVFlQRV9TVFJJTkcsCisjaWZkZWYgSEFWRV9XQ0hBUl9UCisgIFRZUEVfV0lERV9TVFJJTkcsCisjZW5kaWYKKyAgVFlQRV9QT0lOVEVSLAorICBUWVBFX0NPVU5UX1NDSEFSX1BPSU5URVIsCisgIFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUiwKKyAgVFlQRV9DT1VOVF9JTlRfUE9JTlRFUiwKKyAgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVIKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworLCBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVIKKyNlbmRpZgorfSBhcmdfdHlwZTsKKworLyogUG9seW1vcnBoaWMgYXJndW1lbnQgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgIGFyZ190eXBlIHR5cGU7CisgIHVuaW9uCisgIHsKKyAgICBzaWduZWQgY2hhcgkJCWFfc2NoYXI7CisgICAgdW5zaWduZWQgY2hhcgkJYV91Y2hhcjsKKyAgICBzaG9ydAkJCWFfc2hvcnQ7CisgICAgdW5zaWduZWQgc2hvcnQJCWFfdXNob3J0OworICAgIGludAkJCQlhX2ludDsKKyAgICB1bnNpZ25lZCBpbnQJCWFfdWludDsKKyAgICBsb25nIGludAkJCWFfbG9uZ2ludDsKKyAgICB1bnNpZ25lZCBsb25nIGludAkJYV91bG9uZ2ludDsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGxvbmcgbG9uZyBpbnQJCWFfbG9uZ2xvbmdpbnQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGludAlhX3Vsb25nbG9uZ2ludDsKKyNlbmRpZgorICAgIGZsb2F0CQkJYV9mbG9hdDsKKyAgICBkb3VibGUJCQlhX2RvdWJsZTsKKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCisgICAgbG9uZyBkb3VibGUJCQlhX2xvbmdkb3VibGU7CisjZW5kaWYKKyAgICBpbnQJCQkJYV9jaGFyOworI2lmZGVmIEhBVkVfV0lOVF9UCisgICAgd2ludF90CQkJYV93aWRlX2NoYXI7CisjZW5kaWYKKyAgICBjb25zdCBjaGFyKgkJCWFfc3RyaW5nOworI2lmZGVmIEhBVkVfV0NIQVJfVAorICAgIGNvbnN0IHdjaGFyX3QqCQlhX3dpZGVfc3RyaW5nOworI2VuZGlmCisgICAgdm9pZCoJCQlhX3BvaW50ZXI7CisgICAgc2lnbmVkIGNoYXIgKgkJYV9jb3VudF9zY2hhcl9wb2ludGVyOworICAgIHNob3J0ICoJCQlhX2NvdW50X3Nob3J0X3BvaW50ZXI7CisgICAgaW50ICoJCQlhX2NvdW50X2ludF9wb2ludGVyOworICAgIGxvbmcgaW50ICoJCQlhX2NvdW50X2xvbmdpbnRfcG9pbnRlcjsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGxvbmcgbG9uZyBpbnQgKgkJYV9jb3VudF9sb25nbG9uZ2ludF9wb2ludGVyOworI2VuZGlmCisgIH0KKyAgYTsKK30KK2FyZ3VtZW50OworCit0eXBlZGVmIHN0cnVjdAoreworICBzaXplX3QgY291bnQ7CisgIGFyZ3VtZW50ICphcmc7Cit9Cithcmd1bWVudHM7CisKKworLyogRmV0Y2ggdGhlIGFyZ3VtZW50cywgcHV0dGluZyB0aGVtIGludG8gYS4gKi8KKyNpZmRlZiBTVEFUSUMKK1NUQVRJQworI2Vsc2UKK2V4dGVybgorI2VuZGlmCitpbnQgcHJpbnRmX2ZldGNoYXJncyAodmFfbGlzdCBhcmdzLCBhcmd1bWVudHMgKmEpOworCisjZW5kaWYgLyogX1BSSU5URl9BUkdTX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3ByaW50Zi1wYXJzZS5jIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLXBhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2ZGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL3ByaW50Zi1wYXJzZS5jCkBAIC0wLDAgKzEsNTM1IEBACisvKiBGb3JtYXR0ZWQgb3V0cHV0IHRvIHN0cmluZ3MuCisgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMCwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworLyogU3BlY2lmaWNhdGlvbi4gICovCisjaWYgV0lERV9DSEFSX1ZFUlNJT04KKyMgaW5jbHVkZSAid3ByaW50Zi1wYXJzZS5oIgorI2Vsc2UKKyMgaW5jbHVkZSAicHJpbnRmLXBhcnNlLmgiCisjZW5kaWYKKworLyogR2V0IHNpemVfdCwgTlVMTC4gICovCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qIEdldCBpbnRtYXhfdC4gICovCisjaWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKKyMgaW5jbHVkZSA8c3RkaW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCisjIGluY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKKworLyogbWFsbG9jKCksIHJlYWxsb2MoKSwgZnJlZSgpLiAgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworLyogQ2hlY2tlZCBzaXplX3QgY29tcHV0YXRpb25zLiAgKi8KKyNpbmNsdWRlICJ4c2l6ZS5oIgorCisjaWYgV0lERV9DSEFSX1ZFUlNJT04KKyMgZGVmaW5lIFBSSU5URl9QQVJTRSB3cHJpbnRmX3BhcnNlCisjIGRlZmluZSBDSEFSX1Qgd2NoYXJfdAorIyBkZWZpbmUgRElSRUNUSVZFIHdjaGFyX3RfZGlyZWN0aXZlCisjIGRlZmluZSBESVJFQ1RJVkVTIHdjaGFyX3RfZGlyZWN0aXZlcworI2Vsc2UKKyMgZGVmaW5lIFBSSU5URl9QQVJTRSBwcmludGZfcGFyc2UKKyMgZGVmaW5lIENIQVJfVCBjaGFyCisjIGRlZmluZSBESVJFQ1RJVkUgY2hhcl9kaXJlY3RpdmUKKyMgZGVmaW5lIERJUkVDVElWRVMgY2hhcl9kaXJlY3RpdmVzCisjZW5kaWYKKworI2lmZGVmIFNUQVRJQworU1RBVElDCisjZW5kaWYKK2ludAorUFJJTlRGX1BBUlNFIChjb25zdCBDSEFSX1QgKmZvcm1hdCwgRElSRUNUSVZFUyAqZCwgYXJndW1lbnRzICphKQoreworICBjb25zdCBDSEFSX1QgKmNwID0gZm9ybWF0OwkJLyogcG9pbnRlciBpbnRvIGZvcm1hdCAqLworICBzaXplX3QgYXJnX3Bvc24gPSAwOwkJLyogbnVtYmVyIG9mIHJlZ3VsYXIgYXJndW1lbnRzIGNvbnN1bWVkICovCisgIHNpemVfdCBkX2FsbG9jYXRlZDsJCQkvKiBhbGxvY2F0ZWQgZWxlbWVudHMgb2YgZC0+ZGlyICovCisgIHNpemVfdCBhX2FsbG9jYXRlZDsJCQkvKiBhbGxvY2F0ZWQgZWxlbWVudHMgb2YgYS0+YXJnICovCisgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoID0gMDsKKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoID0gMDsKKworICBkLT5jb3VudCA9IDA7CisgIGRfYWxsb2NhdGVkID0gMTsKKyAgZC0+ZGlyID0gbWFsbG9jIChkX2FsbG9jYXRlZCAqIHNpemVvZiAoRElSRUNUSVZFKSk7CisgIGlmIChkLT5kaXIgPT0gTlVMTCkKKyAgICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8KKyAgICByZXR1cm4gLTE7CisKKyAgYS0+Y291bnQgPSAwOworICBhX2FsbG9jYXRlZCA9IDA7CisgIGEtPmFyZyA9IE5VTEw7CisKKyNkZWZpbmUgUkVHSVNURVJfQVJHKF9pbmRleF8sX3R5cGVfKSBcCisgIHsJCQkJCQkJCQlcCisgICAgc2l6ZV90IG4gPSAoX2luZGV4Xyk7CQkJCQkJXAorICAgIGlmIChuID49IGFfYWxsb2NhdGVkKQkJCQkJCVwKKyAgICAgIHsJCQkJCQkJCQlcCisJc2l6ZV90IG1lbW9yeV9zaXplOwkJCQkJCVwKKwlhcmd1bWVudCAqbWVtb3J5OwkJCQkJCVwKKwkJCQkJCQkJCVwKKwlhX2FsbG9jYXRlZCA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIDIpOwkJCQlcCisJaWYgKGFfYWxsb2NhdGVkIDw9IG4pCQkJCQkJXAorCSAgYV9hbGxvY2F0ZWQgPSB4c3VtIChuLCAxKTsJCQkJCVwKKwltZW1vcnlfc2l6ZSA9IHh0aW1lcyAoYV9hbGxvY2F0ZWQsIHNpemVvZiAoYXJndW1lbnQpKTsJCVwKKwlpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCQkJCVwKKwkgIC8qIE92ZXJmbG93LCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkuICAqLwkJCVwKKwkgIGdvdG8gZXJyb3I7CQkJCQkJCVwKKwltZW1vcnkgPSAoYS0+YXJnCQkJCQkJXAorCQkgID8gcmVhbGxvYyAoYS0+YXJnLCBtZW1vcnlfc2l6ZSkJCQlcCisJCSAgOiBtYWxsb2MgKG1lbW9yeV9zaXplKSk7CQkJCVwKKwlpZiAobWVtb3J5ID09IE5VTEwpCQkJCQkJXAorCSAgLyogT3V0IG9mIG1lbW9yeS4gICovCQkJCQkJXAorCSAgZ290byBlcnJvcjsJCQkJCQkJXAorCWEtPmFyZyA9IG1lbW9yeTsJCQkJCQlcCisgICAgICB9CQkJCQkJCQkJXAorICAgIHdoaWxlIChhLT5jb3VudCA8PSBuKQkJCQkJCVwKKyAgICAgIGEtPmFyZ1thLT5jb3VudCsrXS50eXBlID0gVFlQRV9OT05FOwkJCQlcCisgICAgaWYgKGEtPmFyZ1tuXS50eXBlID09IFRZUEVfTk9ORSkJCQkJCVwKKyAgICAgIGEtPmFyZ1tuXS50eXBlID0gKF90eXBlXyk7CQkJCQlcCisgICAgZWxzZSBpZiAoYS0+YXJnW25dLnR5cGUgIT0gKF90eXBlXykpCQkJCVwKKyAgICAgIC8qIEFtYmlndW91cyB0eXBlIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8JCQlcCisgICAgICBnb3RvIGVycm9yOwkJCQkJCQlcCisgIH0KKworICB3aGlsZSAoKmNwICE9ICdcMCcpCisgICAgeworICAgICAgQ0hBUl9UIGMgPSAqY3ArKzsKKyAgICAgIGlmIChjID09ICclJykKKwl7CisJICBzaXplX3QgYXJnX2luZGV4ID0gQVJHX05PTkU7CisJICBESVJFQ1RJVkUgKmRwID0gJmQtPmRpcltkLT5jb3VudF07LyogcG9pbnRlciB0byBuZXh0IGRpcmVjdGl2ZSAqLworCisJICAvKiBJbml0aWFsaXplIHRoZSBuZXh0IGRpcmVjdGl2ZS4gICovCisJICBkcC0+ZGlyX3N0YXJ0ID0gY3AgLSAxOworCSAgZHAtPmZsYWdzID0gMDsKKwkgIGRwLT53aWR0aF9zdGFydCA9IE5VTEw7CisJICBkcC0+d2lkdGhfZW5kID0gTlVMTDsKKwkgIGRwLT53aWR0aF9hcmdfaW5kZXggPSBBUkdfTk9ORTsKKwkgIGRwLT5wcmVjaXNpb25fc3RhcnQgPSBOVUxMOworCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBOVUxMOworCSAgZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPSBBUkdfTk9ORTsKKwkgIGRwLT5hcmdfaW5kZXggPSBBUkdfTk9ORTsKKworCSAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCisJICBpZiAoKmNwID49ICcwJyAmJiAqY3AgPD0gJzknKQorCSAgICB7CisJICAgICAgY29uc3QgQ0hBUl9UICpucDsKKworCSAgICAgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQorCQk7CisJICAgICAgaWYgKCpucCA9PSAnJCcpCisJCXsKKwkJICBzaXplX3QgbiA9IDA7CisKKwkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKKwkJICAgIG4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKKwkJICBpZiAobiA9PSAwKQorCQkgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KKwkJICAgIGdvdG8gZXJyb3I7CisJCSAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobikpCisJCSAgICAvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5IGxhdGVyLiAgKi8KKwkJICAgIGdvdG8gZXJyb3I7CisJCSAgYXJnX2luZGV4ID0gbiAtIDE7CisJCSAgY3AgPSBucCArIDE7CisJCX0KKwkgICAgfQorCisJICAvKiBSZWFkIHRoZSBmbGFncy4gICovCisJICBmb3IgKDs7KQorCSAgICB7CisJICAgICAgaWYgKCpjcCA9PSAnXCcnKQorCQl7CisJCSAgZHAtPmZsYWdzIHw9IEZMQUdfR1JPVVA7CisJCSAgY3ArKzsKKwkJfQorCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnLScpCisJCXsKKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19MRUZUOworCQkgIGNwKys7CisJCX0KKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJysnKQorCQl7CisJCSAgZHAtPmZsYWdzIHw9IEZMQUdfU0hPV1NJR047CisJCSAgY3ArKzsKKwkJfQorCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnICcpCisJCXsKKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19TUEFDRTsKKwkJICBjcCsrOworCQl9CisJICAgICAgZWxzZSBpZiAoKmNwID09ICcjJykKKwkJeworCQkgIGRwLT5mbGFncyB8PSBGTEFHX0FMVDsKKwkJICBjcCsrOworCQl9CisJICAgICAgZWxzZSBpZiAoKmNwID09ICcwJykKKwkJeworCQkgIGRwLT5mbGFncyB8PSBGTEFHX1pFUk87CisJCSAgY3ArKzsKKwkJfQorCSAgICAgIGVsc2UKKwkJYnJlYWs7CisJICAgIH0KKworCSAgLyogUGFyc2UgdGhlIGZpZWxkIHdpZHRoLiAgKi8KKwkgIGlmICgqY3AgPT0gJyonKQorCSAgICB7CisJICAgICAgZHAtPndpZHRoX3N0YXJ0ID0gY3A7CisJICAgICAgY3ArKzsKKwkgICAgICBkcC0+d2lkdGhfZW5kID0gY3A7CisJICAgICAgaWYgKG1heF93aWR0aF9sZW5ndGggPCAxKQorCQltYXhfd2lkdGhfbGVuZ3RoID0gMTsKKworCSAgICAgIC8qIFRlc3QgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLworCSAgICAgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCisJCXsKKwkJICBjb25zdCBDSEFSX1QgKm5wOworCisJCSAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCisJCSAgICA7CisJCSAgaWYgKCpucCA9PSAnJCcpCisJCSAgICB7CisJCSAgICAgIHNpemVfdCBuID0gMDsKKworCQkgICAgICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKKwkJCW4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKKwkJICAgICAgaWYgKG4gPT0gMCkKKwkJCS8qIFBvc2l0aW9uYWwgYXJndW1lbnQgMC4gICovCisJCQlnb3RvIGVycm9yOworCQkgICAgICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKKwkJCS8qIG4gdG9vIGxhcmdlLCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkgbGF0ZXIuICAqLworCQkJZ290byBlcnJvcjsKKwkJICAgICAgZHAtPndpZHRoX2FyZ19pbmRleCA9IG4gLSAxOworCQkgICAgICBjcCA9IG5wICsgMTsKKwkJICAgIH0KKwkJfQorCSAgICAgIGlmIChkcC0+d2lkdGhfYXJnX2luZGV4ID09IEFSR19OT05FKQorCQl7CisJCSAgZHAtPndpZHRoX2FyZ19pbmRleCA9IGFyZ19wb3NuKys7CisJCSAgaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggPT0gQVJHX05PTkUpCisJCSAgICAvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCisJCSAgICBnb3RvIGVycm9yOworCQl9CisJICAgICAgUkVHSVNURVJfQVJHIChkcC0+d2lkdGhfYXJnX2luZGV4LCBUWVBFX0lOVCk7CisJICAgIH0KKwkgIGVsc2UgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKKwkgICAgeworCSAgICAgIHNpemVfdCB3aWR0aF9sZW5ndGg7CisKKwkgICAgICBkcC0+d2lkdGhfc3RhcnQgPSBjcDsKKwkgICAgICBmb3IgKDsgKmNwID49ICcwJyAmJiAqY3AgPD0gJzknOyBjcCsrKQorCQk7CisJICAgICAgZHAtPndpZHRoX2VuZCA9IGNwOworCSAgICAgIHdpZHRoX2xlbmd0aCA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7CisJICAgICAgaWYgKG1heF93aWR0aF9sZW5ndGggPCB3aWR0aF9sZW5ndGgpCisJCW1heF93aWR0aF9sZW5ndGggPSB3aWR0aF9sZW5ndGg7CisJICAgIH0KKworCSAgLyogUGFyc2UgdGhlIHByZWNpc2lvbi4gICovCisJICBpZiAoKmNwID09ICcuJykKKwkgICAgeworCSAgICAgIGNwKys7CisJICAgICAgaWYgKCpjcCA9PSAnKicpCisJCXsKKwkJICBkcC0+cHJlY2lzaW9uX3N0YXJ0ID0gY3AgLSAxOworCQkgIGNwKys7CisJCSAgZHAtPnByZWNpc2lvbl9lbmQgPSBjcDsKKwkJICBpZiAobWF4X3ByZWNpc2lvbl9sZW5ndGggPCAyKQorCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSAyOworCisJCSAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCisJCSAgaWYgKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykKKwkJICAgIHsKKwkJICAgICAgY29uc3QgQ0hBUl9UICpucDsKKworCQkgICAgICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKKwkJCTsKKwkJICAgICAgaWYgKCpucCA9PSAnJCcpCisJCQl7CisJCQkgIHNpemVfdCBuID0gMDsKKworCQkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKKwkJCSAgICBuID0geHN1bSAoeHRpbWVzIChuLCAxMCksICpucCAtICcwJyk7CisJCQkgIGlmIChuID09IDApCisJCQkgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KKwkJCSAgICBnb3RvIGVycm9yOworCQkJICBpZiAoc2l6ZV9vdmVyZmxvd19wIChuKSkKKwkJCSAgICAvKiBuIHRvbyBsYXJnZSwgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5CisJCQkgICAgICAgbGF0ZXIuICAqLworCQkJICAgIGdvdG8gZXJyb3I7CisJCQkgIGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ID0gbiAtIDE7CisJCQkgIGNwID0gbnAgKyAxOworCQkJfQorCQkgICAgfQorCQkgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKKwkJICAgIHsKKwkJICAgICAgZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPSBhcmdfcG9zbisrOworCQkgICAgICBpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPT0gQVJHX05PTkUpCisJCQkvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCisJCQlnb3RvIGVycm9yOworCQkgICAgfQorCQkgIFJFR0lTVEVSX0FSRyAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXgsIFRZUEVfSU5UKTsKKwkJfQorCSAgICAgIGVsc2UKKwkJeworCQkgIHNpemVfdCBwcmVjaXNpb25fbGVuZ3RoOworCisJCSAgZHAtPnByZWNpc2lvbl9zdGFydCA9IGNwIC0gMTsKKwkJICBmb3IgKDsgKmNwID49ICcwJyAmJiAqY3AgPD0gJzknOyBjcCsrKQorCQkgICAgOworCQkgIGRwLT5wcmVjaXNpb25fZW5kID0gY3A7CisJCSAgcHJlY2lzaW9uX2xlbmd0aCA9IGRwLT5wcmVjaXNpb25fZW5kIC0gZHAtPnByZWNpc2lvbl9zdGFydDsKKwkJICBpZiAobWF4X3ByZWNpc2lvbl9sZW5ndGggPCBwcmVjaXNpb25fbGVuZ3RoKQorCQkgICAgbWF4X3ByZWNpc2lvbl9sZW5ndGggPSBwcmVjaXNpb25fbGVuZ3RoOworCQl9CisJICAgIH0KKworCSAgeworCSAgICBhcmdfdHlwZSB0eXBlOworCisJICAgIC8qIFBhcnNlIGFyZ3VtZW50IHR5cGUvc2l6ZSBzcGVjaWZpZXJzLiAgKi8KKwkgICAgeworCSAgICAgIGludCBmbGFncyA9IDA7CisKKwkgICAgICBmb3IgKDs7KQorCQl7CisJCSAgaWYgKCpjcCA9PSAnaCcpCisJCSAgICB7CisJCSAgICAgIGZsYWdzIHw9ICgxIDw8IChmbGFncyAmIDEpKTsKKwkJICAgICAgY3ArKzsKKwkJICAgIH0KKwkJICBlbHNlIGlmICgqY3AgPT0gJ0wnKQorCQkgICAgeworCQkgICAgICBmbGFncyB8PSA0OworCQkgICAgICBjcCsrOworCQkgICAgfQorCQkgIGVsc2UgaWYgKCpjcCA9PSAnbCcpCisJCSAgICB7CisJCSAgICAgIGZsYWdzICs9IDg7CisJCSAgICAgIGNwKys7CisJCSAgICB9CisjaWZkZWYgSEFWRV9JTlRNQVhfVAorCQkgIGVsc2UgaWYgKCpjcCA9PSAnaicpCisJCSAgICB7CisJCSAgICAgIGlmIChzaXplb2YgKGludG1heF90KSA+IHNpemVvZiAobG9uZykpCisJCQl7CisJCQkgIC8qIGludG1heF90ID0gbG9uZyBsb25nICovCisJCQkgIGZsYWdzICs9IDE2OworCQkJfQorCQkgICAgICBlbHNlIGlmIChzaXplb2YgKGludG1heF90KSA+IHNpemVvZiAoaW50KSkKKwkJCXsKKwkJCSAgLyogaW50bWF4X3QgPSBsb25nICovCisJCQkgIGZsYWdzICs9IDg7CisJCQl9CisJCSAgICAgIGNwKys7CisJCSAgICB9CisjZW5kaWYKKwkJICBlbHNlIGlmICgqY3AgPT0gJ3onIHx8ICpjcCA9PSAnWicpCisJCSAgICB7CisJCSAgICAgIC8qICd6JyBpcyBzdGFuZGFyZGl6ZWQgaW4gSVNPIEMgOTksIGJ1dCBnbGliYyB1c2VzICdaJworCQkJIGJlY2F1c2UgdGhlIHdhcm5pbmcgZmFjaWxpdHkgaW4gZ2NjLTIuOTUuMiB1bmRlcnN0YW5kcworCQkJIG9ubHkgJ1onIChzZWUgZ2NjLTIuOTUuMi9nY2MvYy1jb21tb24uYzoxNzg0KS4gICovCisJCSAgICAgIGlmIChzaXplb2YgKHNpemVfdCkgPiBzaXplb2YgKGxvbmcpKQorCQkJeworCQkJICAvKiBzaXplX3QgPSBsb25nIGxvbmcgKi8KKwkJCSAgZmxhZ3MgKz0gMTY7CisJCQl9CisJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAoc2l6ZV90KSA+IHNpemVvZiAoaW50KSkKKwkJCXsKKwkJCSAgLyogc2l6ZV90ID0gbG9uZyAqLworCQkJICBmbGFncyArPSA4OworCQkJfQorCQkgICAgICBjcCsrOworCQkgICAgfQorCQkgIGVsc2UgaWYgKCpjcCA9PSAndCcpCisJCSAgICB7CisJCSAgICAgIGlmIChzaXplb2YgKHB0cmRpZmZfdCkgPiBzaXplb2YgKGxvbmcpKQorCQkJeworCQkJICAvKiBwdHJkaWZmX3QgPSBsb25nIGxvbmcgKi8KKwkJCSAgZmxhZ3MgKz0gMTY7CisJCQl9CisJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAocHRyZGlmZl90KSA+IHNpemVvZiAoaW50KSkKKwkJCXsKKwkJCSAgLyogcHRyZGlmZl90ID0gbG9uZyAqLworCQkJICBmbGFncyArPSA4OworCQkJfQorCQkgICAgICBjcCsrOworCQkgICAgfQorCQkgIGVsc2UKKwkJICAgIGJyZWFrOworCQl9CisKKwkgICAgICAvKiBSZWFkIHRoZSBjb252ZXJzaW9uIGNoYXJhY3Rlci4gICovCisJICAgICAgYyA9ICpjcCsrOworCSAgICAgIHN3aXRjaCAoYykKKwkJeworCQljYXNlICdkJzogY2FzZSAnaSc6CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCisJCSAgICB0eXBlID0gVFlQRV9MT05HTE9OR0lOVDsKKwkJICBlbHNlCisjZW5kaWYKKwkJICBpZiAoZmxhZ3MgPj0gOCkKKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdJTlQ7CisJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQorCQkgICAgdHlwZSA9IFRZUEVfU0NIQVI7CisJCSAgZWxzZSBpZiAoZmxhZ3MgJiAxKQorCQkgICAgdHlwZSA9IFRZUEVfU0hPUlQ7CisJCSAgZWxzZQorCQkgICAgdHlwZSA9IFRZUEVfSU5UOworCQkgIGJyZWFrOworCQljYXNlICdvJzogY2FzZSAndSc6IGNhc2UgJ3gnOiBjYXNlICdYJzoKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKKwkJICAgIHR5cGUgPSBUWVBFX1VMT05HTE9OR0lOVDsKKwkJICBlbHNlCisjZW5kaWYKKwkJICBpZiAoZmxhZ3MgPj0gOCkKKwkJICAgIHR5cGUgPSBUWVBFX1VMT05HSU5UOworCQkgIGVsc2UgaWYgKGZsYWdzICYgMikKKwkJICAgIHR5cGUgPSBUWVBFX1VDSEFSOworCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKKwkJICAgIHR5cGUgPSBUWVBFX1VTSE9SVDsKKwkJICBlbHNlCisJCSAgICB0eXBlID0gVFlQRV9VSU5UOworCQkgIGJyZWFrOworCQljYXNlICdmJzogY2FzZSAnRic6IGNhc2UgJ2UnOiBjYXNlICdFJzogY2FzZSAnZyc6IGNhc2UgJ0cnOgorCQljYXNlICdhJzogY2FzZSAnQSc6CisjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQorCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKKwkJICAgIHR5cGUgPSBUWVBFX0xPTkdET1VCTEU7CisJCSAgZWxzZQorI2VuZGlmCisJCSAgdHlwZSA9IFRZUEVfRE9VQkxFOworCQkgIGJyZWFrOworCQljYXNlICdjJzoKKwkJICBpZiAoZmxhZ3MgPj0gOCkKKyNpZmRlZiBIQVZFX1dJTlRfVAorCQkgICAgdHlwZSA9IFRZUEVfV0lERV9DSEFSOworI2Vsc2UKKwkJICAgIGdvdG8gZXJyb3I7CisjZW5kaWYKKwkJICBlbHNlCisJCSAgICB0eXBlID0gVFlQRV9DSEFSOworCQkgIGJyZWFrOworI2lmZGVmIEhBVkVfV0lOVF9UCisJCWNhc2UgJ0MnOgorCQkgIHR5cGUgPSBUWVBFX1dJREVfQ0hBUjsKKwkJICBjID0gJ2MnOworCQkgIGJyZWFrOworI2VuZGlmCisJCWNhc2UgJ3MnOgorCQkgIGlmIChmbGFncyA+PSA4KQorI2lmZGVmIEhBVkVfV0NIQVJfVAorCQkgICAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7CisjZWxzZQorCQkgICAgZ290byBlcnJvcjsKKyNlbmRpZgorCQkgIGVsc2UKKwkJICAgIHR5cGUgPSBUWVBFX1NUUklORzsKKwkJICBicmVhazsKKyNpZmRlZiBIQVZFX1dDSEFSX1QKKwkJY2FzZSAnUyc6CisJCSAgdHlwZSA9IFRZUEVfV0lERV9TVFJJTkc7CisJCSAgYyA9ICdzJzsKKwkJICBicmVhazsKKyNlbmRpZgorCQljYXNlICdwJzoKKwkJICB0eXBlID0gVFlQRV9QT0lOVEVSOworCQkgIGJyZWFrOworCQljYXNlICduJzoKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI7CisJCSAgZWxzZQorI2VuZGlmCisJCSAgaWYgKGZsYWdzID49IDgpCisJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI7CisJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQorCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUjsKKwkJICBlbHNlIGlmIChmbGFncyAmIDEpCisJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOworCQkgIGVsc2UKKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOworCQkgIGJyZWFrOworCQljYXNlICclJzoKKwkJICB0eXBlID0gVFlQRV9OT05FOworCQkgIGJyZWFrOworCQlkZWZhdWx0OgorCQkgIC8qIFVua25vd24gY29udmVyc2lvbiBjaGFyYWN0ZXIuICAqLworCQkgIGdvdG8gZXJyb3I7CisJCX0KKwkgICAgfQorCisJICAgIGlmICh0eXBlICE9IFRZUEVfTk9ORSkKKwkgICAgICB7CisJCWRwLT5hcmdfaW5kZXggPSBhcmdfaW5kZXg7CisJCWlmIChkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKQorCQkgIHsKKwkJICAgIGRwLT5hcmdfaW5kZXggPSBhcmdfcG9zbisrOworCQkgICAgaWYgKGRwLT5hcmdfaW5kZXggPT0gQVJHX05PTkUpCisJCSAgICAgIC8qIGFyZ19wb3NuIHdyYXBwZWQgYXJvdW5kLiAgKi8KKwkJICAgICAgZ290byBlcnJvcjsKKwkJICB9CisJCVJFR0lTVEVSX0FSRyAoZHAtPmFyZ19pbmRleCwgdHlwZSk7CisJICAgICAgfQorCSAgICBkcC0+Y29udmVyc2lvbiA9IGM7CisJICAgIGRwLT5kaXJfZW5kID0gY3A7CisJICB9CisKKwkgIGQtPmNvdW50Kys7CisJICBpZiAoZC0+Y291bnQgPj0gZF9hbGxvY2F0ZWQpCisJICAgIHsKKwkgICAgICBzaXplX3QgbWVtb3J5X3NpemU7CisJICAgICAgRElSRUNUSVZFICptZW1vcnk7CisKKwkgICAgICBkX2FsbG9jYXRlZCA9IHh0aW1lcyAoZF9hbGxvY2F0ZWQsIDIpOworCSAgICAgIG1lbW9yeV9zaXplID0geHRpbWVzIChkX2FsbG9jYXRlZCwgc2l6ZW9mIChESVJFQ1RJVkUpKTsKKwkgICAgICBpZiAoc2l6ZV9vdmVyZmxvd19wIChtZW1vcnlfc2l6ZSkpCisJCS8qIE92ZXJmbG93LCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkuICAqLworCQlnb3RvIGVycm9yOworCSAgICAgIG1lbW9yeSA9IHJlYWxsb2MgKGQtPmRpciwgbWVtb3J5X3NpemUpOworCSAgICAgIGlmIChtZW1vcnkgPT0gTlVMTCkKKwkJLyogT3V0IG9mIG1lbW9yeS4gICovCisJCWdvdG8gZXJyb3I7CisJICAgICAgZC0+ZGlyID0gbWVtb3J5OworCSAgICB9CisJfQorICAgIH0KKyAgZC0+ZGlyW2QtPmNvdW50XS5kaXJfc3RhcnQgPSBjcDsKKworICBkLT5tYXhfd2lkdGhfbGVuZ3RoID0gbWF4X3dpZHRoX2xlbmd0aDsKKyAgZC0+bWF4X3ByZWNpc2lvbl9sZW5ndGggPSBtYXhfcHJlY2lzaW9uX2xlbmd0aDsKKyAgcmV0dXJuIDA7CisKK2Vycm9yOgorICBmcmVlIChhLT5hcmcpOworICBmcmVlIChkLT5kaXIpOworICByZXR1cm4gLTE7Cit9CisKKyN1bmRlZiBESVJFQ1RJVkVTCisjdW5kZWYgRElSRUNUSVZFCisjdW5kZWYgQ0hBUl9UCisjdW5kZWYgUFJJTlRGX1BBUlNFCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9wcmludGYtcGFyc2UuaCBiL2UyZnNwcm9ncy9pbnRsL3ByaW50Zi1wYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZWM1MGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9wcmludGYtcGFyc2UuaApAQCAtMCwwICsxLDc1IEBACisvKiBQYXJzZSBwcmludGYgZm9ybWF0IHN0cmluZy4KKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfUFJJTlRGX1BBUlNFX0gKKyNkZWZpbmUgX1BSSU5URl9QQVJTRV9ICisKKyNpbmNsdWRlICJwcmludGYtYXJncy5oIgorCisKKy8qIEZsYWdzICovCisjZGVmaW5lIEZMQUdfR1JPVVAJIDEJLyogJyBmbGFnICovCisjZGVmaW5lIEZMQUdfTEVGVAkgMgkvKiAtIGZsYWcgKi8KKyNkZWZpbmUgRkxBR19TSE9XU0lHTgkgNAkvKiArIGZsYWcgKi8KKyNkZWZpbmUgRkxBR19TUEFDRQkgOAkvKiBzcGFjZSBmbGFnICovCisjZGVmaW5lIEZMQUdfQUxUCTE2CS8qICMgZmxhZyAqLworI2RlZmluZSBGTEFHX1pFUk8JMzIKKworLyogYXJnX2luZGV4IHZhbHVlIGluZGljYXRpbmcgdGhhdCBubyBhcmd1bWVudCBpcyBjb25zdW1lZC4gICovCisjZGVmaW5lIEFSR19OT05FCSh+KHNpemVfdCkwKQorCisvKiBBIHBhcnNlZCBkaXJlY3RpdmUuICAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY29uc3QgY2hhciogZGlyX3N0YXJ0OworICBjb25zdCBjaGFyKiBkaXJfZW5kOworICBpbnQgZmxhZ3M7CisgIGNvbnN0IGNoYXIqIHdpZHRoX3N0YXJ0OworICBjb25zdCBjaGFyKiB3aWR0aF9lbmQ7CisgIHNpemVfdCB3aWR0aF9hcmdfaW5kZXg7CisgIGNvbnN0IGNoYXIqIHByZWNpc2lvbl9zdGFydDsKKyAgY29uc3QgY2hhciogcHJlY2lzaW9uX2VuZDsKKyAgc2l6ZV90IHByZWNpc2lvbl9hcmdfaW5kZXg7CisgIGNoYXIgY29udmVyc2lvbjsgLyogZCBpIG8gdSB4IFggZiBlIEUgZyBHIGMgcyBwIG4gVSAlIGJ1dCBub3QgQyBTICovCisgIHNpemVfdCBhcmdfaW5kZXg7Cit9CitjaGFyX2RpcmVjdGl2ZTsKKworLyogQSBwYXJzZWQgZm9ybWF0IHN0cmluZy4gICovCit0eXBlZGVmIHN0cnVjdAoreworICBzaXplX3QgY291bnQ7CisgIGNoYXJfZGlyZWN0aXZlICpkaXI7CisgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoOworICBzaXplX3QgbWF4X3ByZWNpc2lvbl9sZW5ndGg7Cit9CitjaGFyX2RpcmVjdGl2ZXM7CisKKworLyogUGFyc2VzIHRoZSBmb3JtYXQgc3RyaW5nLiAgRmlsbHMgaW4gdGhlIG51bWJlciBOIG9mIGRpcmVjdGl2ZXMsIGFuZCBmaWxscworICAgaW4gZGlyZWN0aXZlc1swXSwgLi4uLCBkaXJlY3RpdmVzW04tMV0sIGFuZCBzZXRzIGRpcmVjdGl2ZXNbTl0uZGlyX3N0YXJ0CisgICB0byB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLiAgQWxzbyBmaWxscyBpbiB0aGUgYXJnX3R5cGUgZmllbGRzIG9mIHRoZQorICAgYXJndW1lbnRzIGFuZCB0aGUgbmVlZGVkIGNvdW50IG9mIGFyZ3VtZW50cy4gICovCisjaWZkZWYgU1RBVElDCitTVEFUSUMKKyNlbHNlCitleHRlcm4KKyNlbmRpZgoraW50IHByaW50Zl9wYXJzZSAoY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyX2RpcmVjdGl2ZXMgKmQsIGFyZ3VtZW50cyAqYSk7CisKKyNlbmRpZiAvKiBfUFJJTlRGX1BBUlNFX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3ByaW50Zi5jIGIvZTJmc3Byb2dzL2ludGwvcHJpbnRmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc4NjQ2YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL3ByaW50Zi5jCkBAIC0wLDAgKzEsMzcxIEBACisvKiBGb3JtYXR0ZWQgb3V0cHV0IHRvIHN0cmluZ3MsIHVzaW5nIFBPU0lYL1hTSSBmb3JtYXQgc3RyaW5ncyB3aXRoIHBvc2l0aW9ucy4KKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2lmZGVmIF9fR05VQ19fCisjIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQorIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQorI2Vsc2UKKyMgaWZkZWYgX01TQ19WRVIKKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgorIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCisjIGVsc2UKKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCisjICAgaW5jbHVkZSA8YWxsb2NhLmg+CisjICBlbHNlCisjICAgaWZkZWYgX0FJWAorICNwcmFnbWEgYWxsb2NhCisjICAgZWxzZQorIyAgICBpZm5kZWYgYWxsb2NhCitjaGFyICphbGxvY2EgKCk7CisjICAgIGVuZGlmCisjICAgZW5kaWYKKyMgIGVuZGlmCisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZiAhSEFWRV9QT1NJWF9QUklOVEYKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisvKiBXaGVuIGJ1aWxkaW5nIGEgRExMLCB3ZSBtdXN0IGV4cG9ydCBzb21lIGZ1bmN0aW9ucy4gIE5vdGUgdGhhdCBiZWNhdXNlCisgICB0aGUgZnVuY3Rpb25zIGFyZSBvbmx5IGRlZmluZWQgZm9yIGJpbmFyeSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB3ZQorICAgZG9uJ3QgbmVlZCB0byB1c2UgX19kZWNsc3BlYyhkbGxpbXBvcnQpIGluIGFueSBjYXNlLiAgKi8KKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIEJVSUxESU5HX0RMTAorIyBkZWZpbmUgRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQorI2Vsc2UKKyMgZGVmaW5lIERMTF9FWFBPUlRFRAorI2VuZGlmCisKKyNkZWZpbmUgU1RBVElDIHN0YXRpYworCisvKiBEZWZpbmUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAicHJpbnRmLWFyZ3MuaCIuICAqLworI2luY2x1ZGUgInByaW50Zi1hcmdzLmMiCisKKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJwcmludGYtcGFyc2UuaCIuICAqLworI2luY2x1ZGUgInByaW50Zi1wYXJzZS5jIgorCisvKiBEZWZpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ2YXNucHJpbnRmLmgiLiAgKi8KKyNkZWZpbmUgdmFzbnByaW50ZiBsaWJpbnRsX3Zhc25wcmludGYKKyNpbmNsdWRlICJ2YXNucHJpbnRmLmMiCisjaWYgMCAvKiBub3QgbmVlZGVkICovCisjZGVmaW5lIGFzbnByaW50ZiBsaWJpbnRsX2FzbnByaW50ZgorI2luY2x1ZGUgImFzbnByaW50Zi5jIgorI2VuZGlmCisKK0RMTF9FWFBPUlRFRAoraW50CitsaWJpbnRsX3ZmcHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQoreworICBpZiAoc3RyY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKKyAgICByZXR1cm4gdmZwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHNpemVfdCBsZW5ndGg7CisgICAgICBjaGFyICpyZXN1bHQgPSBsaWJpbnRsX3Zhc25wcmludGYgKE5VTEwsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7CisgICAgICBpbnQgcmV0dmFsID0gLTE7CisgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCisJeworCSAgaWYgKGZ3cml0ZSAocmVzdWx0LCAxLCBsZW5ndGgsIHN0cmVhbSkgPT0gbGVuZ3RoKQorCSAgICByZXR2YWwgPSBsZW5ndGg7CisJICBmcmVlIChyZXN1bHQpOworCX0KKyAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorfQorCitETExfRVhQT1JURUQKK2ludAorbGliaW50bF9mcHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworICB2YV9saXN0IGFyZ3M7CisgIGludCByZXR2YWw7CisKKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7CisgIHJldHZhbCA9IGxpYmludGxfdmZwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKyAgdmFfZW5kIChhcmdzKTsKKyAgcmV0dXJuIHJldHZhbDsKK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfdnByaW50ZiAoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCit7CisgIHJldHVybiBsaWJpbnRsX3ZmcHJpbnRmIChzdGRvdXQsIGZvcm1hdCwgYXJncyk7Cit9CisKK0RMTF9FWFBPUlRFRAoraW50CitsaWJpbnRsX3ByaW50ZiAoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92cHJpbnRmIChmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQgKGFyZ3MpOworICByZXR1cm4gcmV0dmFsOworfQorCitETExfRVhQT1JURUQKK2ludAorbGliaW50bF92c3ByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKK3sKKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCisgICAgcmV0dXJuIHZzcHJpbnRmIChyZXN1bHRidWYsIGZvcm1hdCwgYXJncyk7CisgIGVsc2UKKyAgICB7CisgICAgICBzaXplX3QgbGVuZ3RoID0gKHNpemVfdCkgfjAgLyAoNCAqIHNpemVvZiAoY2hhcikpOworICAgICAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7CisgICAgICBpZiAocmVzdWx0ICE9IHJlc3VsdGJ1ZikKKwl7CisJICBmcmVlIChyZXN1bHQpOworCSAgcmV0dXJuIC0xOworCX0KKyAgICAgIGVsc2UKKwlyZXR1cm4gbGVuZ3RoOworICAgIH0KK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfc3ByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcmdzOworICBpbnQgcmV0dmFsOworCisgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworICByZXR2YWwgPSBsaWJpbnRsX3ZzcHJpbnRmIChyZXN1bHRidWYsIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZCAoYXJncyk7CisgIHJldHVybiByZXR2YWw7Cit9CisKKyNpZiBIQVZFX1NOUFJJTlRGCisKKyMgaWYgSEFWRV9ERUNMX19TTlBSSU5URgorICAgLyogV2luZG93cy4gICovCisjICBkZWZpbmUgc3lzdGVtX3ZzbnByaW50ZiBfdnNucHJpbnRmCisjIGVsc2UKKyAgIC8qIFVuaXguICAqLworIyAgZGVmaW5lIHN5c3RlbV92c25wcmludGYgdnNucHJpbnRmCisjIGVuZGlmCisKK0RMTF9FWFBPUlRFRAoraW50CitsaWJpbnRsX3ZzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKK3sKKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCisgICAgcmV0dXJuIHN5c3RlbV92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICBlbHNlCisgICAgeworICAgICAgc2l6ZV90IG1heGxlbmd0aCA9IGxlbmd0aDsKKyAgICAgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAocmVzdWx0YnVmLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCisJeworCSAgaWYgKG1heGxlbmd0aCA+IDApCisJICAgIHsKKwkgICAgICBpZiAobGVuZ3RoIDwgbWF4bGVuZ3RoKQorCQlhYm9ydCAoKTsKKwkgICAgICBtZW1jcHkgKHJlc3VsdGJ1ZiwgcmVzdWx0LCBtYXhsZW5ndGggLSAxKTsKKwkgICAgICByZXN1bHRidWZbbWF4bGVuZ3RoIC0gMV0gPSAnXDAnOworCSAgICB9CisJICBmcmVlIChyZXN1bHQpOworCSAgcmV0dXJuIC0xOworCX0KKyAgICAgIGVsc2UKKwlyZXR1cm4gbGVuZ3RoOworICAgIH0KK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92c25wcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQgKGFyZ3MpOworICByZXR1cm4gcmV0dmFsOworfQorCisjZW5kaWYKKworI2lmIEhBVkVfQVNQUklOVEYKKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfdmFzcHJpbnRmIChjaGFyICoqcmVzdWx0cCwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCit7CisgIHNpemVfdCBsZW5ndGg7CisgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAoTlVMTCwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKKyAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgIHJldHVybiAtMTsKKyAgKnJlc3VsdHAgPSByZXN1bHQ7CisgIHJldHVybiBsZW5ndGg7Cit9CisKK0RMTF9FWFBPUlRFRAoraW50CitsaWJpbnRsX2FzcHJpbnRmIChjaGFyICoqcmVzdWx0cCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92YXNwcmludGYgKHJlc3VsdHAsIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZCAoYXJncyk7CisgIHJldHVybiByZXR2YWw7Cit9CisKKyNlbmRpZgorCisjaWYgSEFWRV9GV1BSSU5URgorCisjaW5jbHVkZSA8d2NoYXIuaD4KKworI2RlZmluZSBXSURFX0NIQVJfVkVSU0lPTiAxCisKKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJ3cHJpbnRmLXBhcnNlLmgiLiAgKi8KKyNpbmNsdWRlICJwcmludGYtcGFyc2UuYyIKKworLyogRGVmaW5lIGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAidmFzbnByaW50Zi5oIi4gICovCisjZGVmaW5lIHZhc253cHJpbnRmIGxpYmludGxfdmFzbndwcmludGYKKyNpbmNsdWRlICJ2YXNucHJpbnRmLmMiCisjaWYgMCAvKiBub3QgbmVlZGVkICovCisjZGVmaW5lIGFzbndwcmludGYgbGliaW50bF9hc253cHJpbnRmCisjaW5jbHVkZSAiYXNucHJpbnRmLmMiCisjZW5kaWYKKworIyBpZiBIQVZFX0RFQ0xfX1NOV1BSSU5URgorICAgLyogV2luZG93cy4gICovCisjICBkZWZpbmUgc3lzdGVtX3Zzd3ByaW50ZiBfdnNud3ByaW50ZgorIyBlbHNlCisgICAvKiBVbml4LiAgKi8KKyMgIGRlZmluZSBzeXN0ZW1fdnN3cHJpbnRmIHZzd3ByaW50ZgorIyBlbmRpZgorCitETExfRVhQT1JURUQKK2ludAorbGliaW50bF92ZndwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCit7CisgIGlmICh3Y3NjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQorICAgIHJldHVybiB2ZndwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIHNpemVfdCBsZW5ndGg7CisgICAgICB3Y2hhcl90ICpyZXN1bHQgPSBsaWJpbnRsX3Zhc253cHJpbnRmIChOVUxMLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICAgICAgaW50IHJldHZhbCA9IC0xOworICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQorCXsKKwkgIHNpemVfdCBpOworCSAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKQorCSAgICBpZiAoZnB1dHdjIChyZXN1bHRbaV0sIHN0cmVhbSkgPT0gV0VPRikKKwkgICAgICBicmVhazsKKwkgIGlmIChpID09IGxlbmd0aCkKKwkgICAgcmV0dmFsID0gbGVuZ3RoOworCSAgZnJlZSAocmVzdWx0KTsKKwl9CisgICAgICByZXR1cm4gcmV0dmFsOworICAgIH0KK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfZndwcmludGYgKEZJTEUgKnN0cmVhbSwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92ZndwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKKyAgdmFfZW5kIChhcmdzKTsKKyAgcmV0dXJuIHJldHZhbDsKK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfdndwcmludGYgKGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQoreworICByZXR1cm4gbGliaW50bF92ZndwcmludGYgKHN0ZG91dCwgZm9ybWF0LCBhcmdzKTsKK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92d3ByaW50ZiAoZm9ybWF0LCBhcmdzKTsKKyAgdmFfZW5kIChhcmdzKTsKKyAgcmV0dXJuIHJldHZhbDsKK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfdnN3cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQoreworICBpZiAod2NzY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKKyAgICByZXR1cm4gc3lzdGVtX3Zzd3ByaW50ZiAocmVzdWx0YnVmLCBsZW5ndGgsIGZvcm1hdCwgYXJncyk7CisgIGVsc2UKKyAgICB7CisgICAgICBzaXplX3QgbWF4bGVuZ3RoID0gbGVuZ3RoOworICAgICAgd2NoYXJfdCAqcmVzdWx0ID0gbGliaW50bF92YXNud3ByaW50ZiAocmVzdWx0YnVmLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCisJeworCSAgaWYgKG1heGxlbmd0aCA+IDApCisJICAgIHsKKwkgICAgICBpZiAobGVuZ3RoIDwgbWF4bGVuZ3RoKQorCQlhYm9ydCAoKTsKKwkgICAgICBtZW1jcHkgKHJlc3VsdGJ1ZiwgcmVzdWx0LCAobWF4bGVuZ3RoIC0gMSkgKiBzaXplb2YgKHdjaGFyX3QpKTsKKwkgICAgICByZXN1bHRidWZbbWF4bGVuZ3RoIC0gMV0gPSAwOworCSAgICB9CisJICBmcmVlIChyZXN1bHQpOworCSAgcmV0dXJuIC0xOworCX0KKyAgICAgIGVsc2UKKwlyZXR1cm4gbGVuZ3RoOworICAgIH0KK30KKworRExMX0VYUE9SVEVECitpbnQKK2xpYmludGxfc3dwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgaW50IHJldHZhbDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgcmV0dmFsID0gbGliaW50bF92c3dwcmludGYgKHJlc3VsdGJ1ZiwgbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQgKGFyZ3MpOworICByZXR1cm4gcmV0dmFsOworfQorCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9yZWYtYWRkLnNpbiBiL2UyZnNwcm9ncy9pbnRsL3JlZi1hZGQuc2luCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NzM3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9yZWYtYWRkLnNpbgpAQCAtMCwwICsxLDMxIEBACisjIEFkZCB0aGlzIHBhY2thZ2UgdG8gYSBsaXN0IG9mIHJlZmVyZW5jZXMgc3RvcmVkIGluIGEgdGV4dCBmaWxlLgorIworIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyMgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjICAgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisjICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorIyAgIFVTQS4KKyMKKyMgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4uCisjCisvXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAvIHsKKyAgcy8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovLworICB0YQorICA6YQorICBzLyBAUEFDS0FHRUAgLyBAUEFDS0FHRUAgLworICB0YgorICBzLyAkLyBAUEFDS0FHRUAgLworICA6YgorICBzL14vIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6LworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2ludGwvcmVmLWRlbC5zaW4gYi9lMmZzcHJvZ3MvaW50bC9yZWYtZGVsLnNpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTNjZjM3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcmVmLWRlbC5zaW4KQEAgLTAsMCArMSwyNiBAQAorIyBSZW1vdmUgdGhpcyBwYWNrYWdlIGZyb20gYSBsaXN0IG9mIHJlZmVyZW5jZXMgc3RvcmVkIGluIGEgdGV4dCBmaWxlLgorIworIyAgIENvcHlyaWdodCAoQykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyMgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjICAgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisjICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorIyAgIFVTQS4KKyMKKyMgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4uCisjCisvXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAvIHsKKyAgcy8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovLworICBzLyBAUEFDS0FHRUAgLyAvCisgIHMvXi8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC9yZWxvY2F0YWJsZS5jIGIvZTJmc3Byb2dzL2ludGwvcmVsb2NhdGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjdjNzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvcmVsb2NhdGFibGUuYwpAQCAtMCwwICsxLDQ0OSBAQAorLyogUHJvdmlkZSByZWxvY2F0YWJsZSBwYWNrYWdlcy4KKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworCisvKiBUZWxsIGdsaWJjJ3MgPHN0ZGlvLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIGdldGxpbmUoKS4KKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQorICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLworI2lmbmRlZiBfR05VX1NPVVJDRQorIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjIGluY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKy8qIFNwZWNpZmljYXRpb24uICAqLworI2luY2x1ZGUgInJlbG9jYXRhYmxlLmgiCisKKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZmRlZiBOT19YTUFMTE9DCisjIGRlZmluZSB4bWFsbG9jIG1hbGxvYworI2Vsc2UKKyMgaW5jbHVkZSAieGFsbG9jLmgiCisjZW5kaWYKKworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCisjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCisjaWYgREVQRU5EU19PTl9MSUJDSEFSU0VUCisjIGluY2x1ZGUgPGxpYmNoYXJzZXQuaD4KKyNlbmRpZgorI2lmIERFUEVORFNfT05fTElCSUNPTlYgJiYgSEFWRV9JQ09OVgorIyBpbmNsdWRlIDxpY29udi5oPgorI2VuZGlmCisjaWYgREVQRU5EU19PTl9MSUJJTlRMICYmIEVOQUJMRV9OTFMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2VuZGlmCisKKy8qIEZha2VkIGNoZWFwICdib29sJy4gICovCisjdW5kZWYgYm9vbAorI3VuZGVmIGZhbHNlCisjdW5kZWYgdHJ1ZQorI2RlZmluZSBib29sIGludAorI2RlZmluZSBmYWxzZSAwCisjZGVmaW5lIHRydWUgMQorCisvKiBQYXRobmFtZSBzdXBwb3J0LgorICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCisgICBJU19QQVRIX1dJVEhfRElSKFApICB0ZXN0cyB3aGV0aGVyIFAgY29udGFpbnMgYSBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbi4KKyAqLworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXworICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCisjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQorIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCisgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAorICAgICAmJiAoUClbMV0gPT0gJzonKQorIyBkZWZpbmUgSVNfUEFUSF9XSVRIX0RJUihQKSBcCisgICAgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMIHx8IHN0cmNociAoUCwgJ1xcJykgIT0gTlVMTCB8fCBIQVNfREVWSUNFIChQKSkKKyMgZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAoSEFTX0RFVklDRSAoUCkgPyAyIDogMCkKKyNlbHNlCisgIC8qIFVuaXggKi8KKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycpCisjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCkKKyMgZGVmaW5lIEZJTEVTWVNURU1fUFJFRklYX0xFTihQKSAwCisjZW5kaWYKKworLyogT3JpZ2luYWwgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCitzdGF0aWMgY2hhciAqb3JpZ19wcmVmaXg7CitzdGF0aWMgc2l6ZV90IG9yaWdfcHJlZml4X2xlbjsKKy8qIEN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeC4gICovCitzdGF0aWMgY2hhciAqY3Vycl9wcmVmaXg7CitzdGF0aWMgc2l6ZV90IGN1cnJfcHJlZml4X2xlbjsKKy8qIFRoZXNlIHByZWZpeGVzIGRvIG5vdCBlbmQgaW4gYSBzbGFzaC4gIEFueXRoaW5nIHRoYXQgd2lsbCBiZSBjb25jYXRlbmF0ZWQKKyAgIHRvIHRoZW0gbXVzdCBzdGFydCB3aXRoIGEgc2xhc2guICAqLworCisvKiBTZXRzIHRoZSBvcmlnaW5hbCBhbmQgdGhlIGN1cnJlbnQgaW5zdGFsbGF0aW9uIHByZWZpeCBvZiB0aGlzIG1vZHVsZS4KKyAgIFJlbG9jYXRpb24gc2ltcGx5IHJlcGxhY2VzIGEgcGF0aG5hbWUgc3RhcnRpbmcgd2l0aCB0aGUgb3JpZ2luYWwgcHJlZml4CisgICBieSB0aGUgY29ycmVzcG9uZGluZyBwYXRobmFtZSB3aXRoIHRoZSBjdXJyZW50IHByZWZpeCBpbnN0ZWFkLiAgQm90aAorICAgcHJlZml4ZXMgc2hvdWxkIGJlIGRpcmVjdG9yeSBuYW1lcyB3aXRob3V0IHRyYWlsaW5nIHNsYXNoIChpLmUuIHVzZSAiIgorICAgaW5zdGVhZCBvZiAiLyIpLiAgKi8KK3N0YXRpYyB2b2lkCitzZXRfdGhpc19yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXhfYXJnLAorCQkJICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4X2FyZykKK3sKKyAgaWYgKG9yaWdfcHJlZml4X2FyZyAhPSBOVUxMICYmIGN1cnJfcHJlZml4X2FyZyAhPSBOVUxMCisgICAgICAvKiBPcHRpbWl6YXRpb246IGlmIG9yaWdfcHJlZml4IGFuZCBjdXJyX3ByZWZpeCBhcmUgZXF1YWwsIHRoZQorCSByZWxvY2F0aW9uIGlzIGEgbm9wLiAgKi8KKyAgICAgICYmIHN0cmNtcCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpICE9IDApCisgICAgeworICAgICAgLyogRHVwbGljYXRlIHRoZSBhcmd1bWVudCBzdHJpbmdzLiAgKi8KKyAgICAgIGNoYXIgKm1lbW9yeTsKKworICAgICAgb3JpZ19wcmVmaXhfbGVuID0gc3RybGVuIChvcmlnX3ByZWZpeF9hcmcpOworICAgICAgY3Vycl9wcmVmaXhfbGVuID0gc3RybGVuIChjdXJyX3ByZWZpeF9hcmcpOworICAgICAgbWVtb3J5ID0gKGNoYXIgKikgeG1hbGxvYyAob3JpZ19wcmVmaXhfbGVuICsgMSArIGN1cnJfcHJlZml4X2xlbiArIDEpOworI2lmZGVmIE5PX1hNQUxMT0MKKyAgICAgIGlmIChtZW1vcnkgIT0gTlVMTCkKKyNlbmRpZgorCXsKKwkgIG1lbWNweSAobWVtb3J5LCBvcmlnX3ByZWZpeF9hcmcsIG9yaWdfcHJlZml4X2xlbiArIDEpOworCSAgb3JpZ19wcmVmaXggPSBtZW1vcnk7CisJICBtZW1vcnkgKz0gb3JpZ19wcmVmaXhfbGVuICsgMTsKKwkgIG1lbWNweSAobWVtb3J5LCBjdXJyX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2xlbiArIDEpOworCSAgY3Vycl9wcmVmaXggPSBtZW1vcnk7CisJICByZXR1cm47CisJfQorICAgIH0KKyAgb3JpZ19wcmVmaXggPSBOVUxMOworICBjdXJyX3ByZWZpeCA9IE5VTEw7CisgIC8qIERvbid0IHdvcnJ5IGFib3V0IHdhc3RlZCBtZW1vcnkgaGVyZSAtIHRoaXMgZnVuY3Rpb24gaXMgdXN1YWxseSBvbmx5CisgICAgIGNhbGxlZCBvbmNlLiAgKi8KK30KKworLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhlIHBhY2thZ2UuCisgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAorICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCit2b2lkCitzZXRfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4X2FyZywgY29uc3QgY2hhciAqY3Vycl9wcmVmaXhfYXJnKQoreworICBzZXRfdGhpc19yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOworCisgIC8qIE5vdyBub3RpZnkgYWxsIGRlcGVuZGVudCBsaWJyYXJpZXMuICAqLworI2lmIERFUEVORFNfT05fTElCQ0hBUlNFVAorICBsaWJjaGFyc2V0X3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOworI2VuZGlmCisjaWYgREVQRU5EU19PTl9MSUJJQ09OViAmJiBIQVZFX0lDT05WICYmIF9MSUJJQ09OVl9WRVJTSU9OID49IDB4MDEwOQorICBsaWJpY29udl9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKKyNlbmRpZgorI2lmIERFUEVORFNfT05fTElCSU5UTCAmJiBFTkFCTEVfTkxTICYmIGRlZmluZWQgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXgKKyAgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKKyNlbmRpZgorfQorCisjaWYgIWRlZmluZWQgSU5fTElCUkFSWSB8fCAoZGVmaW5lZCBQSUMgJiYgZGVmaW5lZCBJTlNUQUxMRElSKQorCisvKiBDb252ZW5pZW5jZSBmdW5jdGlvbjoKKyAgIENvbXB1dGVzIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXgsIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAorICAgaW5zdGFsbGF0aW9uIHByZWZpeCwgdGhlIG9yaWdpbmFsIGluc3RhbGxhdGlvbiBkaXJlY3Rvcnkgb2YgYSBwYXJ0aWN1bGFyCisgICBmaWxlLCBhbmQgdGhlIGN1cnJlbnQgcGF0aG5hbWUgb2YgdGhpcyBmaWxlLiAgUmV0dXJucyBOVUxMIHVwb24gZmFpbHVyZS4gICovCisjaWZkZWYgSU5fTElCUkFSWQorI2RlZmluZSBjb21wdXRlX2N1cnJfcHJlZml4IGxvY2FsX2NvbXB1dGVfY3Vycl9wcmVmaXgKK3N0YXRpYworI2VuZGlmCitjb25zdCBjaGFyICoKK2NvbXB1dGVfY3Vycl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCwKKwkJICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCisJCSAgICAgY29uc3QgY2hhciAqY3Vycl9wYXRobmFtZSkKK3sKKyAgY29uc3QgY2hhciAqY3Vycl9pbnN0YWxsZGlyOworICBjb25zdCBjaGFyICpyZWxfaW5zdGFsbGRpcjsKKworICBpZiAoY3Vycl9wYXRobmFtZSA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworCisgIC8qIERldGVybWluZSB0aGUgcmVsYXRpdmUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSwgcmVsYXRpdmUgdG8gdGhlIHByZWZpeC4KKyAgICAgVGhpcyBpcyBzaW1wbHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBvcmlnX2luc3RhbGxwcmVmaXggYW5kCisgICAgIG9yaWdfaW5zdGFsbGRpci4gICovCisgIGlmIChzdHJuY21wIChvcmlnX2luc3RhbGxwcmVmaXgsIG9yaWdfaW5zdGFsbGRpciwgc3RybGVuIChvcmlnX2luc3RhbGxwcmVmaXgpKQorICAgICAgIT0gMCkKKyAgICAvKiBTaG91bGRuJ3QgaGFwcGVuIC0gbm90aGluZyBzaG91bGQgYmUgaW5zdGFsbGVkIG91dHNpZGUgJChwcmVmaXgpLiAgKi8KKyAgICByZXR1cm4gTlVMTDsKKyAgcmVsX2luc3RhbGxkaXIgPSBvcmlnX2luc3RhbGxkaXIgKyBzdHJsZW4gKG9yaWdfaW5zdGFsbHByZWZpeCk7CisKKyAgLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuICAqLworICB7CisgICAgY29uc3QgY2hhciAqcF9iYXNlID0gY3Vycl9wYXRobmFtZSArIEZJTEVTWVNURU1fUFJFRklYX0xFTiAoY3Vycl9wYXRobmFtZSk7CisgICAgY29uc3QgY2hhciAqcCA9IGN1cnJfcGF0aG5hbWUgKyBzdHJsZW4gKGN1cnJfcGF0aG5hbWUpOworICAgIGNoYXIgKnE7CisKKyAgICB3aGlsZSAocCA+IHBfYmFzZSkKKyAgICAgIHsKKwlwLS07CisJaWYgKElTU0xBU0ggKCpwKSkKKwkgIGJyZWFrOworICAgICAgfQorCisgICAgcSA9IChjaGFyICopIHhtYWxsb2MgKHAgLSBjdXJyX3BhdGhuYW1lICsgMSk7CisjaWZkZWYgTk9fWE1BTExPQworICAgIGlmIChxID09IE5VTEwpCisgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgIG1lbWNweSAocSwgY3Vycl9wYXRobmFtZSwgcCAtIGN1cnJfcGF0aG5hbWUpOworICAgIHFbcCAtIGN1cnJfcGF0aG5hbWVdID0gJ1wwJzsKKyAgICBjdXJyX2luc3RhbGxkaXIgPSBxOworICB9CisKKyAgLyogQ29tcHV0ZSB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IGJ5IHJlbW92aW5nIHRoZSB0cmFpbGluZworICAgICByZWxfaW5zdGFsbGRpciBmcm9tIGl0LiAgKi8KKyAgeworICAgIGNvbnN0IGNoYXIgKnJwID0gcmVsX2luc3RhbGxkaXIgKyBzdHJsZW4gKHJlbF9pbnN0YWxsZGlyKTsKKyAgICBjb25zdCBjaGFyICpjcCA9IGN1cnJfaW5zdGFsbGRpciArIHN0cmxlbiAoY3Vycl9pbnN0YWxsZGlyKTsKKyAgICBjb25zdCBjaGFyICpjcF9iYXNlID0KKyAgICAgIGN1cnJfaW5zdGFsbGRpciArIEZJTEVTWVNURU1fUFJFRklYX0xFTiAoY3Vycl9pbnN0YWxsZGlyKTsKKworICAgIHdoaWxlIChycCA+IHJlbF9pbnN0YWxsZGlyICYmIGNwID4gY3BfYmFzZSkKKyAgICAgIHsKKwlib29sIHNhbWUgPSBmYWxzZTsKKwljb25zdCBjaGFyICpycGkgPSBycDsKKwljb25zdCBjaGFyICpjcGkgPSBjcDsKKworCXdoaWxlIChycGkgPiByZWxfaW5zdGFsbGRpciAmJiBjcGkgPiBjcF9iYXNlKQorCSAgeworCSAgICBycGktLTsKKwkgICAgY3BpLS07CisJICAgIGlmIChJU1NMQVNIICgqcnBpKSB8fCBJU1NMQVNIICgqY3BpKSkKKwkgICAgICB7CisJCWlmIChJU1NMQVNIICgqcnBpKSAmJiBJU1NMQVNIICgqY3BpKSkKKwkJICBzYW1lID0gdHJ1ZTsKKwkJYnJlYWs7CisJICAgICAgfQorI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXworCSAgICAvKiBXaW4zMiwgT1MvMiwgRE9TIC0gY2FzZSBpbnNpZ25pZmljYW50IGZpbGVzeXN0ZW0gKi8KKwkgICAgaWYgKCgqcnBpID49ICdhJyAmJiAqcnBpIDw9ICd6JyA/ICpycGkgLSAnYScgKyAnQScgOiAqcnBpKQorCQkhPSAoKmNwaSA+PSAnYScgJiYgKmNwaSA8PSAneicgPyAqY3BpIC0gJ2EnICsgJ0EnIDogKmNwaSkpCisJICAgICAgYnJlYWs7CisjZWxzZQorCSAgICBpZiAoKnJwaSAhPSAqY3BpKQorCSAgICAgIGJyZWFrOworI2VuZGlmCisJICB9CisJaWYgKCFzYW1lKQorCSAgYnJlYWs7CisJLyogVGhlIGxhc3QgcGF0aG5hbWUgY29tcG9uZW50IHdhcyB0aGUgc2FtZS4gIG9waSBhbmQgY3BpIG5vdyBwb2ludAorCSAgIHRvIHRoZSBzbGFzaCBiZWZvcmUgaXQuICAqLworCXJwID0gcnBpOworCWNwID0gY3BpOworICAgICAgfQorCisgICAgaWYgKHJwID4gcmVsX2luc3RhbGxkaXIpCisgICAgICAvKiBVbmV4cGVjdGVkOiBUaGUgY3Vycl9pbnN0YWxsZGlyIGRvZXMgbm90IGVuZCB3aXRoIHJlbF9pbnN0YWxsZGlyLiAgKi8KKyAgICAgIHJldHVybiBOVUxMOworCisgICAgeworICAgICAgc2l6ZV90IGN1cnJfcHJlZml4X2xlbiA9IGNwIC0gY3Vycl9pbnN0YWxsZGlyOworICAgICAgY2hhciAqY3Vycl9wcmVmaXg7CisKKyAgICAgIGN1cnJfcHJlZml4ID0gKGNoYXIgKikgeG1hbGxvYyAoY3Vycl9wcmVmaXhfbGVuICsgMSk7CisjaWZkZWYgTk9fWE1BTExPQworICAgICAgaWYgKGN1cnJfcHJlZml4ID09IE5VTEwpCisJcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICAgIG1lbWNweSAoY3Vycl9wcmVmaXgsIGN1cnJfaW5zdGFsbGRpciwgY3Vycl9wcmVmaXhfbGVuKTsKKyAgICAgIGN1cnJfcHJlZml4W2N1cnJfcHJlZml4X2xlbl0gPSAnXDAnOworCisgICAgICByZXR1cm4gY3Vycl9wcmVmaXg7CisgICAgfQorICB9Cit9CisKKyNlbmRpZiAvKiAhSU5fTElCUkFSWSB8fCBQSUMgKi8KKworI2lmIGRlZmluZWQgUElDICYmIGRlZmluZWQgSU5TVEFMTERJUgorCisvKiBGdWxsIHBhdGhuYW1lIG9mIHNoYXJlZCBsaWJyYXJ5LCBvciBOVUxMLiAgKi8KK3N0YXRpYyBjaGFyICpzaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKKworI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCisKKy8qIERldGVybWluZSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgd2hlbiBpdCBpcyBsb2FkZWQuICAqLworCitCT09MIFdJTkFQSQorRGxsTWFpbiAoSElOU1RBTkNFIG1vZHVsZV9oYW5kbGUsIERXT1JEIGV2ZW50LCBMUFZPSUQgcmVzZXJ2ZWQpCit7CisgICh2b2lkKSByZXNlcnZlZDsKKworICBpZiAoZXZlbnQgPT0gRExMX1BST0NFU1NfQVRUQUNIKQorICAgIHsKKyAgICAgIC8qIFRoZSBETEwgaXMgYmVpbmcgbG9hZGVkIGludG8gYW4gYXBwbGljYXRpb24ncyBhZGRyZXNzIHJhbmdlLiAgKi8KKyAgICAgIHN0YXRpYyBjaGFyIGxvY2F0aW9uW01BWF9QQVRIXTsKKworICAgICAgaWYgKCFHZXRNb2R1bGVGaWxlTmFtZSAobW9kdWxlX2hhbmRsZSwgbG9jYXRpb24sIHNpemVvZiAobG9jYXRpb24pKSkKKwkvKiBTaG91bGRuJ3QgaGFwcGVuLiAgKi8KKwlyZXR1cm4gRkFMU0U7CisKKyAgICAgIGlmICghSVNfUEFUSF9XSVRIX0RJUiAobG9jYXRpb24pKQorCS8qIFNob3VsZG4ndCBoYXBwZW4uICAqLworCXJldHVybiBGQUxTRTsKKworICAgICAgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgPSBzdHJkdXAgKGxvY2F0aW9uKTsKKyAgICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKyNlbHNlIC8qIFVuaXggKi8KKworc3RhdGljIHZvaWQKK2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkKK3sKKyNpZiBkZWZpbmVkIF9fbGludXhfXyAmJiBfX0dMSUJDX18gPj0gMgorICAvKiBMaW51eCBoYXMgL3Byb2Mvc2VsZi9tYXBzLiBnbGliYyAyIGhhcyB0aGUgZ2V0bGluZSgpIGZ1bmN0aW9uLiAgKi8KKyAgRklMRSAqZnA7CisKKyAgLyogT3BlbiB0aGUgY3VycmVudCBwcm9jZXNzJyBtYXBzIGZpbGUuICBJdCBkZXNjcmliZXMgb25lIFZNQSBwZXIgbGluZS4gICovCisgIGZwID0gZm9wZW4gKCIvcHJvYy9zZWxmL21hcHMiLCAiciIpOworICBpZiAoZnApCisgICAgeworICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpICZmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOworICAgICAgZm9yICg7OykKKwl7CisJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7CisJICBpbnQgYzsKKworCSAgaWYgKGZzY2FuZiAoZnAsICIlbHgtJWx4IiwgJnN0YXJ0LCAmZW5kKSAhPSAyKQorCSAgICBicmVhazsKKwkgIGlmIChhZGRyZXNzID49IHN0YXJ0ICYmIGFkZHJlc3MgPD0gZW5kIC0gMSkKKwkgICAgeworCSAgICAgIC8qIEZvdW5kIGl0LiAgTm93IHNlZSBpZiB0aGlzIGxpbmUgY29udGFpbnMgYSBmaWxlbmFtZS4gICovCisJICAgICAgd2hpbGUgKGMgPSBnZXRjIChmcCksIGMgIT0gRU9GICYmIGMgIT0gJ1xuJyAmJiBjICE9ICcvJykKKwkJY29udGludWU7CisJICAgICAgaWYgKGMgPT0gJy8nKQorCQl7CisJCSAgc2l6ZV90IHNpemU7CisJCSAgaW50IGxlbjsKKworCQkgIHVuZ2V0YyAoYywgZnApOworCQkgIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lID0gTlVMTDsgc2l6ZSA9IDA7CisJCSAgbGVuID0gZ2V0bGluZSAoJnNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lLCAmc2l6ZSwgZnApOworCQkgIGlmIChsZW4gPj0gMCkKKwkJICAgIHsKKwkJICAgICAgLyogU3VjY2VzczogZmlsbGVkIHNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lLiAgKi8KKwkJICAgICAgaWYgKGxlbiA+IDAgJiYgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWVbbGVuIC0gMV0gPT0gJ1xuJykKKwkJCXNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lW2xlbiAtIDFdID0gJ1wwJzsKKwkJICAgIH0KKwkJfQorCSAgICAgIGJyZWFrOworCSAgICB9CisJICB3aGlsZSAoYyA9IGdldGMgKGZwKSwgYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorCSAgICBjb250aW51ZTsKKwl9CisgICAgICBmY2xvc2UgKGZwKTsKKyAgICB9CisjZW5kaWYKK30KKworI2VuZGlmIC8qIFdJTjMyIC8gVW5peCAqLworCisvKiBSZXR1cm4gdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGN1cnJlbnQgc2hhcmVkIGxpYnJhcnkuCisgICBSZXR1cm4gTlVMTCBpZiB1bmtub3duLgorICAgR3VhcmFudGVlZCB0byB3b3JrIG9ubHkgb24gTGludXggYW5kIFdvZTMyLiAgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKQoreworI2lmICEoZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18pCisgIHN0YXRpYyBib29sIHRyaWVkX2ZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWU7CisgIGlmICghdHJpZWRfZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSkKKyAgICB7CisgICAgICBmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpOworICAgICAgdHJpZWRfZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSA9IHRydWU7CisgICAgfQorI2VuZGlmCisgIHJldHVybiBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKK30KKworI2VuZGlmIC8qIFBJQyAqLworCisvKiBSZXR1cm5zIHRoZSBwYXRobmFtZSwgcmVsb2NhdGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24KKyAgIGRpcmVjdG9yeS4gICovCitjb25zdCBjaGFyICoKK3JlbG9jYXRlIChjb25zdCBjaGFyICpwYXRobmFtZSkKK3sKKyNpZiBkZWZpbmVkIFBJQyAmJiBkZWZpbmVkIElOU1RBTExESVIKKyAgc3RhdGljIGludCBpbml0aWFsaXplZDsKKworICAvKiBJbml0aWFsaXphdGlvbiBjb2RlIGZvciBhIHNoYXJlZCBsaWJyYXJ5LiAgKi8KKyAgaWYgKCFpbml0aWFsaXplZCkKKyAgICB7CisgICAgICAvKiBBdCB0aGlzIHBvaW50LCBvcmlnX3ByZWZpeCBhbmQgY3Vycl9wcmVmaXggbGlrZWx5IGhhdmUgYWxyZWFkeSBiZWVuCisJIHNldCB0aHJvdWdoIHRoZSBtYWluIHByb2dyYW0ncyBzZXRfcHJvZ3JhbV9uYW1lX2FuZF9pbnN0YWxsZGlyCisJIGZ1bmN0aW9uLiAgVGhpcyBpcyBzdWZmaWNpZW50IGluIHRoZSBjYXNlIHRoYXQgdGhlIGxpYnJhcnkgaGFzCisJIGluaXRpYWxseSBiZWVuIGluc3RhbGxlZCBpbiB0aGUgc2FtZSBvcmlnX3ByZWZpeC4gIEJ1dCB3ZSBjYW4gZG8KKwkgYmV0dGVyLCB0byBhbHNvIGNvdmVyIHRoZSBjYXNlcyB0aGF0IDEuIGl0IGhhcyBiZWVuIGluc3RhbGxlZAorCSBpbiBhIGRpZmZlcmVudCBwcmVmaXggYmVmb3JlIGJlaW5nIG1vdmVkIHRvIG9yaWdfcHJlZml4IGFuZCAobGF0ZXIpCisJIHRvIGN1cnJfcHJlZml4LCAyLiB1bmxpa2UgdGhlIHByb2dyYW0sIGl0IGhhcyBub3QgbW92ZWQgYXdheSBmcm9tCisJIG9yaWdfcHJlZml4LiAgKi8KKyAgICAgIGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCA9IElOU1RBTExQUkVGSVg7CisgICAgICBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIgPSBJTlNUQUxMRElSOworICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXhfYmV0dGVyOworCisgICAgICBjdXJyX3ByZWZpeF9iZXR0ZXIgPQorCWNvbXB1dGVfY3Vycl9wcmVmaXggKG9yaWdfaW5zdGFsbHByZWZpeCwgb3JpZ19pbnN0YWxsZGlyLAorCQkJICAgICBnZXRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkpOworICAgICAgaWYgKGN1cnJfcHJlZml4X2JldHRlciA9PSBOVUxMKQorCWN1cnJfcHJlZml4X2JldHRlciA9IGN1cnJfcHJlZml4OworCisgICAgICBzZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfaW5zdGFsbHByZWZpeCwgY3Vycl9wcmVmaXhfYmV0dGVyKTsKKworICAgICAgaW5pdGlhbGl6ZWQgPSAxOworICAgIH0KKyNlbmRpZgorCisgIC8qIE5vdGU6IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gcGVyZm9ybSBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gaGVyZSwKKyAgICAgZXZlbiBmb3IgRE9TLWxpa2UgZmlsZXN5c3RlbXMsIGJlY2F1c2UgdGhlIHBhdGhuYW1lIGFyZ3VtZW50IHdhcworICAgICB0eXBpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBzYW1lIE1ha2VmaWxlIHZhcmlhYmxlIGFzIG9yaWdfcHJlZml4IGNhbWUKKyAgICAgZnJvbS4gICovCisgIGlmIChvcmlnX3ByZWZpeCAhPSBOVUxMICYmIGN1cnJfcHJlZml4ICE9IE5VTEwKKyAgICAgICYmIHN0cm5jbXAgKHBhdGhuYW1lLCBvcmlnX3ByZWZpeCwgb3JpZ19wcmVmaXhfbGVuKSA9PSAwKQorICAgIHsKKyAgICAgIGlmIChwYXRobmFtZVtvcmlnX3ByZWZpeF9sZW5dID09ICdcMCcpCisJLyogcGF0aG5hbWUgZXF1YWxzIG9yaWdfcHJlZml4LiAgKi8KKwlyZXR1cm4gY3Vycl9wcmVmaXg7CisgICAgICBpZiAoSVNTTEFTSCAocGF0aG5hbWVbb3JpZ19wcmVmaXhfbGVuXSkpCisJeworCSAgLyogcGF0aG5hbWUgc3RhcnRzIHdpdGggb3JpZ19wcmVmaXguICAqLworCSAgY29uc3QgY2hhciAqcGF0aG5hbWVfdGFpbCA9ICZwYXRobmFtZVtvcmlnX3ByZWZpeF9sZW5dOworCSAgY2hhciAqcmVzdWx0ID0KKwkgICAgKGNoYXIgKikgeG1hbGxvYyAoY3Vycl9wcmVmaXhfbGVuICsgc3RybGVuIChwYXRobmFtZV90YWlsKSArIDEpOworCisjaWZkZWYgTk9fWE1BTExPQworCSAgaWYgKHJlc3VsdCAhPSBOVUxMKQorI2VuZGlmCisJICAgIHsKKwkgICAgICBtZW1jcHkgKHJlc3VsdCwgY3Vycl9wcmVmaXgsIGN1cnJfcHJlZml4X2xlbik7CisJICAgICAgc3RyY3B5IChyZXN1bHQgKyBjdXJyX3ByZWZpeF9sZW4sIHBhdGhuYW1lX3RhaWwpOworCSAgICAgIHJldHVybiByZXN1bHQ7CisJICAgIH0KKwl9CisgICAgfQorICAvKiBOb3RoaW5nIHRvIHJlbG9jYXRlLiAgKi8KKyAgcmV0dXJuIHBhdGhuYW1lOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3JlbG9jYXRhYmxlLmggYi9lMmZzcHJvZ3MvaW50bC9yZWxvY2F0YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YzViNzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC9yZWxvY2F0YWJsZS5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qIFByb3ZpZGUgcmVsb2NhdGFibGUgcGFja2FnZXMuCisgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwgMjAwMy4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyAgIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKyAgIFVTQS4gICovCisKKyNpZm5kZWYgX1JFTE9DQVRBQkxFX0gKKyNkZWZpbmUgX1JFTE9DQVRBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKKy8qIFRoaXMgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlIC0tZW5hYmxlLXJlbG9jYXRhYmxlIG9wdGlvbi4gICovCisjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCisKKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKKyAgIHRoaXMgaXMgYSBwcml2YXRlIC5oIGZpbGUsIHdlIGRvbid0IG5lZWQgdG8gdXNlIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorICAgaW4gYW55IGNhc2UuICAqLworI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCisjIGRlZmluZSBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQgX19kZWNsc3BlYyhkbGxleHBvcnQpCisjZWxzZQorIyBkZWZpbmUgUkVMT0NBVEFCTEVfRExMX0VYUE9SVEVECisjZW5kaWYKKworLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhlIHBhY2thZ2UuCisgICBSZWxvY2F0aW9uIHNpbXBseSByZXBsYWNlcyBhIHBhdGhuYW1lIHN0YXJ0aW5nIHdpdGggdGhlIG9yaWdpbmFsIHByZWZpeAorICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgcGF0aG5hbWUgd2l0aCB0aGUgY3VycmVudCBwcmVmaXggaW5zdGVhZC4gIEJvdGgKKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKKyAgIGluc3RlYWQgb2YgIi8iKS4gICovCitleHRlcm4gUkVMT0NBVEFCTEVfRExMX0VYUE9SVEVEIHZvaWQKKyAgICAgICBzZXRfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4LAorCQkJICAgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXgpOworCisvKiBSZXR1cm5zIHRoZSBwYXRobmFtZSwgcmVsb2NhdGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24KKyAgIGRpcmVjdG9yeS4gICovCitleHRlcm4gY29uc3QgY2hhciAqIHJlbG9jYXRlIChjb25zdCBjaGFyICpwYXRobmFtZSk7CisKKy8qIE1lbW9yeSBtYW5hZ2VtZW50OiByZWxvY2F0ZSgpIGxlYWtzIG1lbW9yeSwgYmVjYXVzZSBpdCBoYXMgdG8gY29uc3RydWN0CisgICBhIGZyZXNoIHBhdGhuYW1lLiAgSWYgdGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZSB5b3VyIHByb2dyYW0gY2FsbHMKKyAgIHJlbG9jYXRlKCkgZnJlcXVlbnRseSwgdGhpbmsgYWJvdXQgY2FjaGluZyB0aGUgcmVzdWx0LiAgKi8KKworLyogQ29udmVuaWVuY2UgZnVuY3Rpb246CisgICBDb21wdXRlcyB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4LCBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKKyAgIGluc3RhbGxhdGlvbiBwcmVmaXgsIHRoZSBvcmlnaW5hbCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IG9mIGEgcGFydGljdWxhcgorICAgZmlsZSwgYW5kIHRoZSBjdXJyZW50IHBhdGhuYW1lIG9mIHRoaXMgZmlsZS4gIFJldHVybnMgTlVMTCB1cG9uIGZhaWx1cmUuICAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb21wdXRlX2N1cnJfcHJlZml4IChjb25zdCBjaGFyICpvcmlnX2luc3RhbGxwcmVmaXgsCisJCQkJCSBjb25zdCBjaGFyICpvcmlnX2luc3RhbGxkaXIsCisJCQkJCSBjb25zdCBjaGFyICpjdXJyX3BhdGhuYW1lKTsKKworI2Vsc2UKKworLyogQnkgZGVmYXVsdCwgd2UgdXNlIHRoZSBoYXJkd2lyZWQgcGF0aG5hbWVzLiAgKi8KKyNkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKKworI2VuZGlmCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9SRUxPQ0FUQUJMRV9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvaW50bC90ZXh0ZG9tYWluLmMgYi9lMmZzcHJvZ3MvaW50bC90ZXh0ZG9tYWluLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc0NWE4NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9pbnRsL3RleHRkb21haW4uYwpAQCAtMCwwICsxLDE0MSBAQAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHRleHRkb21haW4oMykgZnVuY3Rpb24uCisgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaWZkZWYgX0xJQkMKKyMgaW5jbHVkZSA8bGliaW50bC5oPgorI2Vsc2UKKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgorI2VuZGlmCisjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKworI2lmZGVmIF9MSUJDCisvKiBXZSBoYXZlIHRvIGhhbmRsZSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMuICAqLworIyBpbmNsdWRlIDxiaXRzL2xpYmMtbG9jay5oPgorI2Vsc2UKKy8qIFByb3ZpZGUgZHVtbXkgaW1wbGVtZW50YXRpb24gaWYgdGhpcyBpcyBvdXRzaWRlIGdsaWJjLiAgKi8KKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lKENMQVNTLCBOQU1FKQorIyBkZWZpbmUgX19saWJjX3J3bG9ja193cmxvY2soTkFNRSkKKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfdW5sb2NrKE5BTUUpCisjZW5kaWYKKworLyogVGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiB0aGUgc3RhbmRhbG9uZSBsaWJpbnRsLmEgbXVzdCBoYXZlIGRpZmZlcmVudAorICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKKyAgIHVzaW5nIGxpYmludGwuYSBjYW5ub3QgYmUgbGlua2VkIHN0YXRpY2FsbHkuICAqLworI2lmICFkZWZpbmVkIF9MSUJDCisjIGRlZmluZSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4KKyMgZGVmaW5lIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGxpYmludGxfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbgorI2VuZGlmCisKKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKworLyogTmFtZSBvZiB0aGUgZGVmYXVsdCB0ZXh0IGRvbWFpbi4gICovCitleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdIGF0dHJpYnV0ZV9oaWRkZW47CisKKy8qIERlZmF1bHQgdGV4dCBkb21haW4gaW4gd2hpY2ggZW50cmllcyBmb3IgZ2V0dGV4dCgzKSBhcmUgdG8gYmUgZm91bmQuICAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluIGF0dHJpYnV0ZV9oaWRkZW47CisKKworLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCisgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworI2lmZGVmIF9MSUJDCisjIGRlZmluZSBURVhURE9NQUlOIF9fdGV4dGRvbWFpbgorIyBpZm5kZWYgc3RyZHVwCisjICBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKKyMgZW5kaWYKKyNlbHNlCisjIGRlZmluZSBURVhURE9NQUlOIGxpYmludGxfdGV4dGRvbWFpbgorI2VuZGlmCisKKy8qIExvY2sgdmFyaWFibGUgdG8gcHJvdGVjdCB0aGUgZ2xvYmFsIGRhdGEgaW4gdGhlIGdldHRleHQgaW1wbGVtZW50YXRpb24uICAqLworX19saWJjX3J3bG9ja19kZWZpbmUgKGV4dGVybiwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKKworLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCisgICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgorICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCitjaGFyICoKK1RFWFRET01BSU4gKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpCit7CisgIGNoYXIgKm5ld19kb21haW47CisgIGNoYXIgKm9sZF9kb21haW47CisKKyAgLyogQSBOVUxMIHBvaW50ZXIgcmVxdWVzdHMgdGhlIGN1cnJlbnQgc2V0dGluZy4gICovCisgIGlmIChkb21haW5uYW1lID09IE5VTEwpCisgICAgcmV0dXJuIChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworCisgIF9fbGliY19yd2xvY2tfd3Jsb2NrIChfbmxfc3RhdGVfbG9jayk7CisKKyAgb2xkX2RvbWFpbiA9IChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworCisgIC8qIElmIGRvbWFpbiBuYW1lIGlzIHRoZSBudWxsIHN0cmluZyBzZXQgdG8gZGVmYXVsdCBkb21haW4gIm1lc3NhZ2VzIi4gICovCisgIGlmIChkb21haW5uYW1lWzBdID09ICdcMCcKKyAgICAgIHx8IHN0cmNtcCAoZG9tYWlubmFtZSwgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pID09IDApCisgICAgeworICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKKyAgICAgIG5ld19kb21haW4gPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKyAgICB9CisgIGVsc2UgaWYgKHN0cmNtcCAoZG9tYWlubmFtZSwgb2xkX2RvbWFpbikgPT0gMCkKKyAgICAvKiBUaGlzIGNhbiBoYXBwZW4gYW5kIHBlb3BsZSB3aWxsIHVzZSBpdCB0byBzaWduYWwgdGhhdCBzb21lCisgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgY2hhbmdlZC4gICovCisgICAgbmV3X2RvbWFpbiA9IG9sZF9kb21haW47CisgIGVsc2UKKyAgICB7CisgICAgICAvKiBJZiB0aGUgZm9sbG93aW5nIG1hbGxvYyBmYWlscyBgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4nCisJIHdpbGwgYmUgTlVMTC4gIFRoaXMgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhbmQgc28gc2lnbmFscyB3ZQorCSBhcmUgb3V0IG9mIGNvcmUuICAqLworI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorICAgICAgbmV3X2RvbWFpbiA9IHN0cmR1cCAoZG9tYWlubmFtZSk7CisjZWxzZQorICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOworICAgICAgbmV3X2RvbWFpbiA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKyAgICAgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCisJbWVtY3B5IChuZXdfZG9tYWluLCBkb21haW5uYW1lLCBsZW4pOworI2VuZGlmCisKKyAgICAgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCisJX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBuZXdfZG9tYWluOworICAgIH0KKworICAvKiBXZSB1c2UgdGhpcyBwb3NzaWJpbGl0eSB0byBzaWduYWwgYSBjaGFuZ2Ugb2YgdGhlIGxvYWRlZCBjYXRhbG9ncworICAgICBzaW5jZSB0aGlzIGlzIG1vc3QgbGlrZWx5IHRoZSBjYXNlIGFuZCB0aGVyZSBpcyBubyBvdGhlciBlYXN5IHdlCisgICAgIHRvIGRvIGl0LiAgRG8gaXQgb25seSB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsLiAgKi8KKyAgaWYgKG5ld19kb21haW4gIT0gTlVMTCkKKyAgICB7CisgICAgICArK19ubF9tc2dfY2F0X2NudHI7CisKKyAgICAgIGlmIChvbGRfZG9tYWluICE9IG5ld19kb21haW4gJiYgb2xkX2RvbWFpbiAhPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbikKKwlmcmVlIChvbGRfZG9tYWluKTsKKyAgICB9CisKKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKKworICByZXR1cm4gbmV3X2RvbWFpbjsKK30KKworI2lmZGVmIF9MSUJDCisvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KK3dlYWtfYWxpYXMgKF9fdGV4dGRvbWFpbiwgdGV4dGRvbWFpbik7CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3Zhc25wcmludGYuYyBiL2UyZnNwcm9ncy9pbnRsL3Zhc25wcmludGYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWJmYjllCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvdmFzbnByaW50Zi5jCkBAIC0wLDAgKzEsODg0IEBACisvKiB2c3ByaW50ZiB3aXRoIGF1dG9tYXRpYyBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworLyogVGVsbCBnbGliYydzIDxzdGRpby5oPiB0byBwcm92aWRlIGEgcHJvdG90eXBlIGZvciBzbnByaW50ZigpLgorICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCisgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCisjaWZuZGVmIF9HTlVfU09VUkNFCisjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCisjZW5kaWYKKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKyNpZm5kZWYgSU5fTElCSU5UTAorIyBpbmNsdWRlIDxhbGxvY2EuaD4KKyNlbmRpZgorCisvKiBTcGVjaWZpY2F0aW9uLiAgKi8KKyNpZiBXSURFX0NIQVJfVkVSU0lPTgorIyBpbmNsdWRlICJ2YXNud3ByaW50Zi5oIgorI2Vsc2UKKyMgaW5jbHVkZSAidmFzbnByaW50Zi5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgkvKiBzbnByaW50ZigpLCBzcHJpbnRmKCkgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4JLyogYWJvcnQoKSwgbWFsbG9jKCksIHJlYWxsb2MoKSwgZnJlZSgpICovCisjaW5jbHVkZSA8c3RyaW5nLmg+CS8qIG1lbWNweSgpLCBzdHJsZW4oKSAqLworI2luY2x1ZGUgPGVycm5vLmg+CS8qIGVycm5vICovCisjaW5jbHVkZSA8bGltaXRzLmg+CS8qIENIQVJfQklUICovCisjaW5jbHVkZSA8ZmxvYXQuaD4JLyogREJMX01BWF9FWFAsIExEQkxfTUFYX0VYUCAqLworI2lmIFdJREVfQ0hBUl9WRVJTSU9OCisjIGluY2x1ZGUgIndwcmludGYtcGFyc2UuaCIKKyNlbHNlCisjIGluY2x1ZGUgInByaW50Zi1wYXJzZS5oIgorI2VuZGlmCisKKy8qIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4gICovCisjaW5jbHVkZSAieHNpemUuaCIKKworI2lmZGVmIEhBVkVfV0NIQVJfVAorIyBpZmRlZiBIQVZFX1dDU0xFTgorIyAgZGVmaW5lIGxvY2FsX3djc2xlbiB3Y3NsZW4KKyMgZWxzZQorICAgLyogU29sYXJpcyAyLjUuMSBoYXMgd2NzbGVuKCkgaW4gYSBzZXBhcmF0ZSBsaWJyYXJ5IGxpYncuc28uIFRvIGF2b2lkCisgICAgICBhIGRlcGVuZGVuY3kgdG93YXJkcyB0aGlzIGxpYnJhcnksIGhlcmUgaXMgYSBsb2NhbCBzdWJzdGl0dXRlLgorICAgICAgRGVmaW5lIHRoaXMgc3Vic3RpdHV0ZSBvbmx5IG9uY2UsIGV2ZW4gaWYgdGhpcyBmaWxlIGlzIGluY2x1ZGVkCisgICAgICB0d2ljZSBpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiAgKi8KKyMgIGlmbmRlZiBsb2NhbF93Y3NsZW5fZGVmaW5lZAorIyAgIGRlZmluZSBsb2NhbF93Y3NsZW5fZGVmaW5lZCAxCitzdGF0aWMgc2l6ZV90Citsb2NhbF93Y3NsZW4gKGNvbnN0IHdjaGFyX3QgKnMpCit7CisgIGNvbnN0IHdjaGFyX3QgKnB0cjsKKworICBmb3IgKHB0ciA9IHM7ICpwdHIgIT0gKHdjaGFyX3QpIDA7IHB0cisrKQorICAgIDsKKyAgcmV0dXJuIHB0ciAtIHM7Cit9CisjICBlbmRpZgorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBXSURFX0NIQVJfVkVSU0lPTgorIyBkZWZpbmUgVkFTTlBSSU5URiB2YXNud3ByaW50ZgorIyBkZWZpbmUgQ0hBUl9UIHdjaGFyX3QKKyMgZGVmaW5lIERJUkVDVElWRSB3Y2hhcl90X2RpcmVjdGl2ZQorIyBkZWZpbmUgRElSRUNUSVZFUyB3Y2hhcl90X2RpcmVjdGl2ZXMKKyMgZGVmaW5lIFBSSU5URl9QQVJTRSB3cHJpbnRmX3BhcnNlCisjIGRlZmluZSBVU0VfU05QUklOVEYgMQorIyBpZiBIQVZFX0RFQ0xfX1NOV1BSSU5URgorICAgLyogT24gV2luZG93cywgdGhlIGZ1bmN0aW9uIHN3cHJpbnRmKCkgaGFzIGEgZGlmZmVyZW50IHNpZ25hdHVyZSB0aGFuCisgICAgICBvbiBVbml4OyB3ZSB1c2UgdGhlIF9zbndwcmludGYoKSBmdW5jdGlvbiBpbnN0ZWFkLiAgKi8KKyMgIGRlZmluZSBTTlBSSU5URiBfc253cHJpbnRmCisjIGVsc2UKKyAgIC8qIFVuaXguICAqLworIyAgZGVmaW5lIFNOUFJJTlRGIHN3cHJpbnRmCisjIGVuZGlmCisjZWxzZQorIyBkZWZpbmUgVkFTTlBSSU5URiB2YXNucHJpbnRmCisjIGRlZmluZSBDSEFSX1QgY2hhcgorIyBkZWZpbmUgRElSRUNUSVZFIGNoYXJfZGlyZWN0aXZlCisjIGRlZmluZSBESVJFQ1RJVkVTIGNoYXJfZGlyZWN0aXZlcworIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHByaW50Zl9wYXJzZQorIyBkZWZpbmUgVVNFX1NOUFJJTlRGIChIQVZFX0RFQ0xfX1NOUFJJTlRGIHx8IEhBVkVfU05QUklOVEYpCisjIGlmIEhBVkVfREVDTF9fU05QUklOVEYKKyAgIC8qIFdpbmRvd3MuICAqLworIyAgZGVmaW5lIFNOUFJJTlRGIF9zbnByaW50ZgorIyBlbHNlCisgICAvKiBVbml4LiAgKi8KKyMgIGRlZmluZSBTTlBSSU5URiBzbnByaW50ZgorIyBlbmRpZgorI2VuZGlmCisKK0NIQVJfVCAqCitWQVNOUFJJTlRGIChDSEFSX1QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCBDSEFSX1QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQoreworICBESVJFQ1RJVkVTIGQ7CisgIGFyZ3VtZW50cyBhOworCisgIGlmIChQUklOVEZfUEFSU0UgKGZvcm1hdCwgJmQsICZhKSA8IDApCisgICAgeworICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyNkZWZpbmUgQ0xFQU5VUCgpIFwKKyAgZnJlZSAoZC5kaXIpOwkJCQkJCQkJXAorICBpZiAoYS5hcmcpCQkJCQkJCQlcCisgICAgZnJlZSAoYS5hcmcpOworCisgIGlmIChwcmludGZfZmV0Y2hhcmdzIChhcmdzLCAmYSkgPCAwKQorICAgIHsKKyAgICAgIENMRUFOVVAgKCk7CisgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICB7CisgICAgc2l6ZV90IGJ1Zl9uZWVkZWRsZW5ndGg7CisgICAgQ0hBUl9UICpidWY7CisgICAgQ0hBUl9UICpidWZfbWFsbG9jZWQ7CisgICAgY29uc3QgQ0hBUl9UICpjcDsKKyAgICBzaXplX3QgaTsKKyAgICBESVJFQ1RJVkUgKmRwOworICAgIC8qIE91dHB1dCBzdHJpbmcgYWNjdW11bGF0b3IuICAqLworICAgIENIQVJfVCAqcmVzdWx0OworICAgIHNpemVfdCBhbGxvY2F0ZWQ7CisgICAgc2l6ZV90IGxlbmd0aDsKKworICAgIC8qIEFsbG9jYXRlIGEgc21hbGwgYnVmZmVyIHRoYXQgd2lsbCBob2xkIGEgZGlyZWN0aXZlIHBhc3NlZCB0bworICAgICAgIHNwcmludGYgb3Igc25wcmludGYuICAqLworICAgIGJ1Zl9uZWVkZWRsZW5ndGggPQorICAgICAgeHN1bTQgKDcsIGQubWF4X3dpZHRoX2xlbmd0aCwgZC5tYXhfcHJlY2lzaW9uX2xlbmd0aCwgNik7CisjaWYgSEFWRV9BTExPQ0EKKyAgICBpZiAoYnVmX25lZWRlZGxlbmd0aCA8IDQwMDAgLyBzaXplb2YgKENIQVJfVCkpCisgICAgICB7CisJYnVmID0gKENIQVJfVCAqKSBhbGxvY2EgKGJ1Zl9uZWVkZWRsZW5ndGggKiBzaXplb2YgKENIQVJfVCkpOworCWJ1Zl9tYWxsb2NlZCA9IE5VTEw7CisgICAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICB7CisJc2l6ZV90IGJ1Zl9tZW1zaXplID0geHRpbWVzIChidWZfbmVlZGVkbGVuZ3RoLCBzaXplb2YgKENIQVJfVCkpOworCWlmIChzaXplX292ZXJmbG93X3AgKGJ1Zl9tZW1zaXplKSkKKwkgIGdvdG8gb3V0X29mX21lbW9yeV8xOworCWJ1ZiA9IChDSEFSX1QgKikgbWFsbG9jIChidWZfbWVtc2l6ZSk7CisJaWYgKGJ1ZiA9PSBOVUxMKQorCSAgZ290byBvdXRfb2ZfbWVtb3J5XzE7CisJYnVmX21hbGxvY2VkID0gYnVmOworICAgICAgfQorCisgICAgaWYgKHJlc3VsdGJ1ZiAhPSBOVUxMKQorICAgICAgeworCXJlc3VsdCA9IHJlc3VsdGJ1ZjsKKwlhbGxvY2F0ZWQgPSAqbGVuZ3RocDsKKyAgICAgIH0KKyAgICBlbHNlCisgICAgICB7CisJcmVzdWx0ID0gTlVMTDsKKwlhbGxvY2F0ZWQgPSAwOworICAgICAgfQorICAgIGxlbmd0aCA9IDA7CisgICAgLyogSW52YXJpYW50czoKKyAgICAgICByZXN1bHQgaXMgZWl0aGVyID09IHJlc3VsdGJ1ZiBvciA9PSBOVUxMIG9yIG1hbGxvYy1hbGxvY2F0ZWQuCisgICAgICAgSWYgbGVuZ3RoID4gMCwgdGhlbiByZXN1bHQgIT0gTlVMTC4gICovCisKKyAgICAvKiBFbnN1cmVzIHRoYXQgYWxsb2NhdGVkID49IG5lZWRlZC4gIEFib3J0cyB0aHJvdWdoIGEganVtcCB0bworICAgICAgIG91dF9vZl9tZW1vcnkgaWYgbmVlZGVkIGlzIFNJWkVfTUFYIG9yIG90aGVyd2lzZSB0b28gYmlnLiAgKi8KKyNkZWZpbmUgRU5TVVJFX0FMTE9DQVRJT04obmVlZGVkKSBcCisgICAgaWYgKChuZWVkZWQpID4gYWxsb2NhdGVkKQkJCQkJCSAgICAgXAorICAgICAgewkJCQkJCQkJCSAgICAgXAorCXNpemVfdCBtZW1vcnlfc2l6ZTsJCQkJCQkgICAgIFwKKwlDSEFSX1QgKm1lbW9yeTsJCQkJCQkJICAgICBcCisJCQkJCQkJCQkgICAgIFwKKwlhbGxvY2F0ZWQgPSAoYWxsb2NhdGVkID4gMCA/IHh0aW1lcyAoYWxsb2NhdGVkLCAyKSA6IDEyKTsJICAgICBcCisJaWYgKChuZWVkZWQpID4gYWxsb2NhdGVkKQkJCQkJICAgICBcCisJICBhbGxvY2F0ZWQgPSAobmVlZGVkKTsJCQkJCQkgICAgIFwKKwltZW1vcnlfc2l6ZSA9IHh0aW1lcyAoYWxsb2NhdGVkLCBzaXplb2YgKENIQVJfVCkpOwkJICAgICBcCisJaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQkJCQkgICAgIFwKKwkgIGdvdG8gb3V0X29mX21lbW9yeTsJCQkJCQkgICAgIFwKKwlpZiAocmVzdWx0ID09IHJlc3VsdGJ1ZiB8fCByZXN1bHQgPT0gTlVMTCkJCQkgICAgIFwKKwkgIG1lbW9yeSA9IChDSEFSX1QgKikgbWFsbG9jIChtZW1vcnlfc2l6ZSk7CQkJICAgICBcCisJZWxzZQkJCQkJCQkJICAgICBcCisJICBtZW1vcnkgPSAoQ0hBUl9UICopIHJlYWxsb2MgKHJlc3VsdCwgbWVtb3J5X3NpemUpOwkJICAgICBcCisJaWYgKG1lbW9yeSA9PSBOVUxMKQkJCQkJCSAgICAgXAorCSAgZ290byBvdXRfb2ZfbWVtb3J5OwkJCQkJCSAgICAgXAorCWlmIChyZXN1bHQgPT0gcmVzdWx0YnVmICYmIGxlbmd0aCA+IDApCQkJCSAgICAgXAorCSAgbWVtY3B5IChtZW1vcnksIHJlc3VsdCwgbGVuZ3RoICogc2l6ZW9mIChDSEFSX1QpKTsJCSAgICAgXAorCXJlc3VsdCA9IG1lbW9yeTsJCQkJCQkgICAgIFwKKyAgICAgIH0KKworICAgIGZvciAoY3AgPSBmb3JtYXQsIGkgPSAwLCBkcCA9ICZkLmRpclswXTsgOyBjcCA9IGRwLT5kaXJfZW5kLCBpKyssIGRwKyspCisgICAgICB7CisJaWYgKGNwICE9IGRwLT5kaXJfc3RhcnQpCisJICB7CisJICAgIHNpemVfdCBuID0gZHAtPmRpcl9zdGFydCAtIGNwOworCSAgICBzaXplX3QgYXVnbWVudGVkX2xlbmd0aCA9IHhzdW0gKGxlbmd0aCwgbik7CisKKwkgICAgRU5TVVJFX0FMTE9DQVRJT04gKGF1Z21lbnRlZF9sZW5ndGgpOworCSAgICBtZW1jcHkgKHJlc3VsdCArIGxlbmd0aCwgY3AsIG4gKiBzaXplb2YgKENIQVJfVCkpOworCSAgICBsZW5ndGggPSBhdWdtZW50ZWRfbGVuZ3RoOworCSAgfQorCWlmIChpID09IGQuY291bnQpCisJICBicmVhazsKKworCS8qIEV4ZWN1dGUgYSBzaW5nbGUgZGlyZWN0aXZlLiAgKi8KKwlpZiAoZHAtPmNvbnZlcnNpb24gPT0gJyUnKQorCSAgeworCSAgICBzaXplX3QgYXVnbWVudGVkX2xlbmd0aDsKKworCSAgICBpZiAoIShkcC0+YXJnX2luZGV4ID09IEFSR19OT05FKSkKKwkgICAgICBhYm9ydCAoKTsKKwkgICAgYXVnbWVudGVkX2xlbmd0aCA9IHhzdW0gKGxlbmd0aCwgMSk7CisJICAgIEVOU1VSRV9BTExPQ0FUSU9OIChhdWdtZW50ZWRfbGVuZ3RoKTsKKwkgICAgcmVzdWx0W2xlbmd0aF0gPSAnJSc7CisJICAgIGxlbmd0aCA9IGF1Z21lbnRlZF9sZW5ndGg7CisJICB9CisJZWxzZQorCSAgeworCSAgICBpZiAoIShkcC0+YXJnX2luZGV4ICE9IEFSR19OT05FKSkKKwkgICAgICBhYm9ydCAoKTsKKworCSAgICBpZiAoZHAtPmNvbnZlcnNpb24gPT0gJ24nKQorCSAgICAgIHsKKwkJc3dpdGNoIChhLmFyZ1tkcC0+YXJnX2luZGV4XS50eXBlKQorCQkgIHsKKwkJICBjYXNlIFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUjoKKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfc2NoYXJfcG9pbnRlciA9IGxlbmd0aDsKKwkJICAgIGJyZWFrOworCQkgIGNhc2UgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOgorCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9zaG9ydF9wb2ludGVyID0gbGVuZ3RoOworCQkgICAgYnJlYWs7CisJCSAgY2FzZSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOgorCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9pbnRfcG9pbnRlciA9IGxlbmd0aDsKKwkJICAgIGJyZWFrOworCQkgIGNhc2UgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI6CisJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2xvbmdpbnRfcG9pbnRlciA9IGxlbmd0aDsKKwkJICAgIGJyZWFrOworI2lmZGVmIEhBVkVfTE9OR19MT05HCisJCSAgY2FzZSBUWVBFX0NPVU5UX0xPTkdMT05HSU5UX1BPSU5URVI6CisJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X2xvbmdsb25naW50X3BvaW50ZXIgPSBsZW5ndGg7CisJCSAgICBicmVhazsKKyNlbmRpZgorCQkgIGRlZmF1bHQ6CisJCSAgICBhYm9ydCAoKTsKKwkJICB9CisJICAgICAgfQorCSAgICBlbHNlCisJICAgICAgeworCQlhcmdfdHlwZSB0eXBlID0gYS5hcmdbZHAtPmFyZ19pbmRleF0udHlwZTsKKwkJQ0hBUl9UICpwOworCQl1bnNpZ25lZCBpbnQgcHJlZml4X2NvdW50OworCQlpbnQgcHJlZml4ZXNbMl07CisjaWYgIVVTRV9TTlBSSU5URgorCQlzaXplX3QgdG1wX2xlbmd0aDsKKwkJQ0hBUl9UIHRtcGJ1Zls3MDBdOworCQlDSEFSX1QgKnRtcDsKKworCQkvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgb2Ygc3VmZmljaWVudCBzaXplIGZvciBjYWxsaW5nCisJCSAgIHNwcmludGYuICAqLworCQl7CisJCSAgc2l6ZV90IHdpZHRoOworCQkgIHNpemVfdCBwcmVjaXNpb247CisKKwkJICB3aWR0aCA9IDA7CisJCSAgaWYgKGRwLT53aWR0aF9zdGFydCAhPSBkcC0+d2lkdGhfZW5kKQorCQkgICAgeworCQkgICAgICBpZiAoZHAtPndpZHRoX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKKwkJCXsKKwkJCSAgaW50IGFyZzsKKworCQkJICBpZiAoIShhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS50eXBlID09IFRZUEVfSU5UKSkKKwkJCSAgICBhYm9ydCAoKTsKKwkJCSAgYXJnID0gYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0uYS5hX2ludDsKKwkJCSAgd2lkdGggPSAoYXJnIDwgMCA/ICh1bnNpZ25lZCBpbnQpICgtYXJnKSA6IGFyZyk7CisJCQl9CisJCSAgICAgIGVsc2UKKwkJCXsKKwkJCSAgY29uc3QgQ0hBUl9UICpkaWdpdHAgPSBkcC0+d2lkdGhfc3RhcnQ7CisKKwkJCSAgZG8KKwkJCSAgICB3aWR0aCA9IHhzdW0gKHh0aW1lcyAod2lkdGgsIDEwKSwgKmRpZ2l0cCsrIC0gJzAnKTsKKwkJCSAgd2hpbGUgKGRpZ2l0cCAhPSBkcC0+d2lkdGhfZW5kKTsKKwkJCX0KKwkJICAgIH0KKworCQkgIHByZWNpc2lvbiA9IDY7CisJCSAgaWYgKGRwLT5wcmVjaXNpb25fc3RhcnQgIT0gZHAtPnByZWNpc2lvbl9lbmQpCisJCSAgICB7CisJCSAgICAgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKKwkJCXsKKwkJCSAgaW50IGFyZzsKKworCQkJICBpZiAoIShhLmFyZ1tkcC0+cHJlY2lzaW9uX2FyZ19pbmRleF0udHlwZSA9PSBUWVBFX0lOVCkpCisJCQkgICAgYWJvcnQgKCk7CisJCQkgIGFyZyA9IGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS5hLmFfaW50OworCQkJICBwcmVjaXNpb24gPSAoYXJnIDwgMCA/IDAgOiBhcmcpOworCQkJfQorCQkgICAgICBlbHNlCisJCQl7CisJCQkgIGNvbnN0IENIQVJfVCAqZGlnaXRwID0gZHAtPnByZWNpc2lvbl9zdGFydCArIDE7CisKKwkJCSAgcHJlY2lzaW9uID0gMDsKKwkJCSAgZG8KKwkJCSAgICBwcmVjaXNpb24gPSB4c3VtICh4dGltZXMgKHByZWNpc2lvbiwgMTApLCAqZGlnaXRwKysgLSAnMCcpOworCQkJICB3aGlsZSAoZGlnaXRwICE9IGRwLT5wcmVjaXNpb25fZW5kKTsKKwkJCX0KKwkJICAgIH0KKworCQkgIHN3aXRjaCAoZHAtPmNvbnZlcnNpb24pCisJCSAgICB7CisKKwkJICAgIGNhc2UgJ2QnOiBjYXNlICdpJzogY2FzZSAndSc6CisjIGlmZGVmIEhBVkVfTE9OR19MT05HCisJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKKwkJCXRtcF9sZW5ndGggPQorCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KKwkJCQkJICkKKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCisJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCisJCSAgICAgIGVsc2UKKyMgZW5kaWYKKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0lOVCkKKwkJCXRtcF9sZW5ndGggPQorCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nKSAqIENIQVJfQklUCisJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCisJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCisJCQkJCSApCisJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLworCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLworCQkgICAgICBlbHNlCisJCQl0bXBfbGVuZ3RoID0KKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCisJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCisJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCisJCQkJCSApCisJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLworCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLworCQkgICAgICBicmVhazsKKworCQkgICAgY2FzZSAnbyc6CisjIGlmZGVmIEhBVkVfTE9OR19MT05HCisJCSAgICAgIGlmICh0eXBlID09IFRZUEVfTE9OR0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HTE9OR0lOVCkKKwkJCXRtcF9sZW5ndGggPQorCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLworCQkJCQkgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KKwkJICAgICAgZWxzZQorIyBlbmRpZgorCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQorCQkJdG1wX2xlbmd0aCA9CisJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQKKwkJCQkJICAqIDAuMzMzMzM0IC8qIGJpbmFyeSAtPiBvY3RhbCAqLworCQkJCQkgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KKwkJICAgICAgZWxzZQorCQkJdG1wX2xlbmd0aCA9CisJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiBDSEFSX0JJVAorCQkJCQkgICogMC4zMzMzMzQgLyogYmluYXJ5IC0+IG9jdGFsICovCisJCQkJCSApCisJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLworCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLworCQkgICAgICBicmVhazsKKworCQkgICAgY2FzZSAneCc6IGNhc2UgJ1gnOgorIyBpZmRlZiBIQVZFX0xPTkdfTE9ORworCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdMT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0xPTkdJTlQpCisJCQl0bXBfbGVuZ3RoID0KKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZyBsb25nKSAqIENIQVJfQklUCisJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLworCQkJCQkgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KKwkJICAgICAgZWxzZQorIyBlbmRpZgorCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQorCQkJdG1wX2xlbmd0aCA9CisJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQKKwkJCQkJICAqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCisJCQkJCSApCisJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLworCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiBvciBhbHRlcm5hdGUgZm9ybSAqLworCQkgICAgICBlbHNlCisJCQl0bXBfbGVuZ3RoID0KKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCisJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLworCQkJCQkgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KKwkJICAgICAgYnJlYWs7CisKKwkJICAgIGNhc2UgJ2YnOiBjYXNlICdGJzoKKyMgaWZkZWYgSEFWRV9MT05HX0RPVUJMRQorCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdET1VCTEUpCisJCQl0bXBfbGVuZ3RoID0KKwkJCSAgKHVuc2lnbmVkIGludCkgKExEQkxfTUFYX0VYUAorCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLworCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLworCQkJCQkgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAxMDsgLyogc2lnbiwgZGVjaW1hbCBwb2ludCBldGMuICovCisJCSAgICAgIGVsc2UKKyMgZW5kaWYKKwkJCXRtcF9sZW5ndGggPQorCQkJICAodW5zaWduZWQgaW50KSAoREJMX01BWF9FWFAKKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KKwkJCQkJICkKKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCisJCQkgICsgMTA7IC8qIHNpZ24sIGRlY2ltYWwgcG9pbnQgZXRjLiAqLworCQkgICAgICB0bXBfbGVuZ3RoID0geHN1bSAodG1wX2xlbmd0aCwgcHJlY2lzaW9uKTsKKwkJICAgICAgYnJlYWs7CisKKwkJICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogY2FzZSAnZyc6IGNhc2UgJ0cnOgorCQkgICAgY2FzZSAnYSc6IGNhc2UgJ0EnOgorCQkgICAgICB0bXBfbGVuZ3RoID0KKwkJCTEyOyAvKiBzaWduLCBkZWNpbWFsIHBvaW50LCBleHBvbmVudCBldGMuICovCisJCSAgICAgIHRtcF9sZW5ndGggPSB4c3VtICh0bXBfbGVuZ3RoLCBwcmVjaXNpb24pOworCQkgICAgICBicmVhazsKKworCQkgICAgY2FzZSAnYyc6CisjIGlmIGRlZmluZWQgSEFWRV9XSU5UX1QgJiYgIVdJREVfQ0hBUl9WRVJTSU9OCisJCSAgICAgIGlmICh0eXBlID09IFRZUEVfV0lERV9DSEFSKQorCQkJdG1wX2xlbmd0aCA9IE1CX0NVUl9NQVg7CisJCSAgICAgIGVsc2UKKyMgZW5kaWYKKwkJCXRtcF9sZW5ndGggPSAxOworCQkgICAgICBicmVhazsKKworCQkgICAgY2FzZSAncyc6CisjIGlmZGVmIEhBVkVfV0NIQVJfVAorCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX1dJREVfU1RSSU5HKQorCQkJeworCQkJICB0bXBfbGVuZ3RoID0KKwkJCSAgICBsb2NhbF93Y3NsZW4gKGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV93aWRlX3N0cmluZyk7CisKKyMgIGlmICFXSURFX0NIQVJfVkVSU0lPTgorCQkJICB0bXBfbGVuZ3RoID0geHRpbWVzICh0bXBfbGVuZ3RoLCBNQl9DVVJfTUFYKTsKKyMgIGVuZGlmCisJCQl9CisJCSAgICAgIGVsc2UKKyMgZW5kaWYKKwkJCXRtcF9sZW5ndGggPSBzdHJsZW4gKGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9zdHJpbmcpOworCQkgICAgICBicmVhazsKKworCQkgICAgY2FzZSAncCc6CisJCSAgICAgIHRtcF9sZW5ndGggPQorCQkJKHVuc2lnbmVkIGludCkgKHNpemVvZiAodm9pZCAqKSAqIENIQVJfQklUCisJCQkJCSogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KKwkJCQkgICAgICAgKQorCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIDB4ICovCisJCSAgICAgIGJyZWFrOworCisJCSAgICBkZWZhdWx0OgorCQkgICAgICBhYm9ydCAoKTsKKwkJICAgIH0KKworCQkgIGlmICh0bXBfbGVuZ3RoIDwgd2lkdGgpCisJCSAgICB0bXBfbGVuZ3RoID0gd2lkdGg7CisKKwkJICB0bXBfbGVuZ3RoID0geHN1bSAodG1wX2xlbmd0aCwgMSk7IC8qIGFjY291bnQgZm9yIHRyYWlsaW5nIE5VTCAqLworCQl9CisKKwkJaWYgKHRtcF9sZW5ndGggPD0gc2l6ZW9mICh0bXBidWYpIC8gc2l6ZW9mIChDSEFSX1QpKQorCQkgIHRtcCA9IHRtcGJ1ZjsKKwkJZWxzZQorCQkgIHsKKwkJICAgIHNpemVfdCB0bXBfbWVtc2l6ZSA9IHh0aW1lcyAodG1wX2xlbmd0aCwgc2l6ZW9mIChDSEFSX1QpKTsKKworCQkgICAgaWYgKHNpemVfb3ZlcmZsb3dfcCAodG1wX21lbXNpemUpKQorCQkgICAgICAvKiBPdmVyZmxvdywgd291bGQgbGVhZCB0byBvdXQgb2YgbWVtb3J5LiAgKi8KKwkJICAgICAgZ290byBvdXRfb2ZfbWVtb3J5OworCQkgICAgdG1wID0gKENIQVJfVCAqKSBtYWxsb2MgKHRtcF9tZW1zaXplKTsKKwkJICAgIGlmICh0bXAgPT0gTlVMTCkKKwkJICAgICAgLyogT3V0IG9mIG1lbW9yeS4gICovCisJCSAgICAgIGdvdG8gb3V0X29mX21lbW9yeTsKKwkJICB9CisjZW5kaWYKKworCQkvKiBDb25zdHJ1Y3QgdGhlIGZvcm1hdCBzdHJpbmcgZm9yIGNhbGxpbmcgc25wcmludGYgb3IKKwkJICAgc3ByaW50Zi4gICovCisJCXAgPSBidWY7CisJCSpwKysgPSAnJSc7CisJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0dST1VQKQorCQkgICpwKysgPSAnXCcnOworCQlpZiAoZHAtPmZsYWdzICYgRkxBR19MRUZUKQorCQkgICpwKysgPSAnLSc7CisJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1NIT1dTSUdOKQorCQkgICpwKysgPSAnKyc7CisJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1NQQUNFKQorCQkgICpwKysgPSAnICc7CisJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX0FMVCkKKwkJICAqcCsrID0gJyMnOworCQlpZiAoZHAtPmZsYWdzICYgRkxBR19aRVJPKQorCQkgICpwKysgPSAnMCc7CisJCWlmIChkcC0+d2lkdGhfc3RhcnQgIT0gZHAtPndpZHRoX2VuZCkKKwkJICB7CisJCSAgICBzaXplX3QgbiA9IGRwLT53aWR0aF9lbmQgLSBkcC0+d2lkdGhfc3RhcnQ7CisJCSAgICBtZW1jcHkgKHAsIGRwLT53aWR0aF9zdGFydCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7CisJCSAgICBwICs9IG47CisJCSAgfQorCQlpZiAoZHAtPnByZWNpc2lvbl9zdGFydCAhPSBkcC0+cHJlY2lzaW9uX2VuZCkKKwkJICB7CisJCSAgICBzaXplX3QgbiA9IGRwLT5wcmVjaXNpb25fZW5kIC0gZHAtPnByZWNpc2lvbl9zdGFydDsKKwkJICAgIG1lbWNweSAocCwgZHAtPnByZWNpc2lvbl9zdGFydCwgbiAqIHNpemVvZiAoQ0hBUl9UKSk7CisJCSAgICBwICs9IG47CisJCSAgfQorCisJCXN3aXRjaCAodHlwZSkKKwkJICB7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKwkJICBjYXNlIFRZUEVfTE9OR0xPTkdJTlQ6CisJCSAgY2FzZSBUWVBFX1VMT05HTE9OR0lOVDoKKwkJICAgICpwKysgPSAnbCc7CisJCSAgICAvKkZBTExUSFJPVUdIKi8KKyNlbmRpZgorCQkgIGNhc2UgVFlQRV9MT05HSU5UOgorCQkgIGNhc2UgVFlQRV9VTE9OR0lOVDoKKyNpZmRlZiBIQVZFX1dJTlRfVAorCQkgIGNhc2UgVFlQRV9XSURFX0NIQVI6CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dDSEFSX1QKKwkJICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6CisjZW5kaWYKKwkJICAgICpwKysgPSAnbCc7CisJCSAgICBicmVhazsKKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCisJCSAgY2FzZSBUWVBFX0xPTkdET1VCTEU6CisJCSAgICAqcCsrID0gJ0wnOworCQkgICAgYnJlYWs7CisjZW5kaWYKKwkJICBkZWZhdWx0OgorCQkgICAgYnJlYWs7CisJCSAgfQorCQkqcCA9IGRwLT5jb252ZXJzaW9uOworI2lmIFVTRV9TTlBSSU5URgorCQlwWzFdID0gJyUnOworCQlwWzJdID0gJ24nOworCQlwWzNdID0gJ1wwJzsKKyNlbHNlCisJCXBbMV0gPSAnXDAnOworI2VuZGlmCisKKwkJLyogQ29uc3RydWN0IHRoZSBhcmd1bWVudHMgZm9yIGNhbGxpbmcgc25wcmludGYgb3Igc3ByaW50Zi4gICovCisJCXByZWZpeF9jb3VudCA9IDA7CisJCWlmIChkcC0+d2lkdGhfYXJnX2luZGV4ICE9IEFSR19OT05FKQorCQkgIHsKKwkJICAgIGlmICghKGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQorCQkgICAgICBhYm9ydCAoKTsKKwkJICAgIHByZWZpeGVzW3ByZWZpeF9jb3VudCsrXSA9IGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLmEuYV9pbnQ7CisJCSAgfQorCQlpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggIT0gQVJHX05PTkUpCisJCSAgeworCQkgICAgaWYgKCEoYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQorCQkgICAgICBhYm9ydCAoKTsKKwkJICAgIHByZWZpeGVzW3ByZWZpeF9jb3VudCsrXSA9IGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS5hLmFfaW50OworCQkgIH0KKworI2lmIFVTRV9TTlBSSU5URgorCQkvKiBQcmVwYXJlIGNoZWNraW5nIHdoZXRoZXIgc25wcmludGYgcmV0dXJucyB0aGUgY291bnQKKwkJICAgdmlhICVuLiAgKi8KKwkJRU5TVVJFX0FMTE9DQVRJT04gKHhzdW0gKGxlbmd0aCwgMSkpOworCQlyZXN1bHRbbGVuZ3RoXSA9ICdcMCc7CisjZW5kaWYKKworCQlmb3IgKDs7KQorCQkgIHsKKwkJICAgIHNpemVfdCBtYXhsZW47CisJCSAgICBpbnQgY291bnQ7CisJCSAgICBpbnQgcmV0Y291bnQ7CisKKwkJICAgIG1heGxlbiA9IGFsbG9jYXRlZCAtIGxlbmd0aDsKKwkJICAgIGNvdW50ID0gLTE7CisJCSAgICByZXRjb3VudCA9IDA7CisKKyNpZiBVU0VfU05QUklOVEYKKyMgZGVmaW5lIFNOUFJJTlRGX0JVRihhcmcpIFwKKwkJICAgIHN3aXRjaCAocHJlZml4X2NvdW50KQkJCQkgICAgXAorCQkgICAgICB7CQkJCQkJCSAgICBcCisJCSAgICAgIGNhc2UgMDoJCQkJCQkgICAgXAorCQkJcmV0Y291bnQgPSBTTlBSSU5URiAocmVzdWx0ICsgbGVuZ3RoLCBtYXhsZW4sIGJ1ZiwgIFwKKwkJCQkJICAgICBhcmcsICZjb3VudCk7CQkgICAgXAorCQkJYnJlYWs7CQkJCQkJICAgIFwKKwkJICAgICAgY2FzZSAxOgkJCQkJCSAgICBcCisJCQlyZXRjb3VudCA9IFNOUFJJTlRGIChyZXN1bHQgKyBsZW5ndGgsIG1heGxlbiwgYnVmLCAgXAorCQkJCQkgICAgIHByZWZpeGVzWzBdLCBhcmcsICZjb3VudCk7CSAgICBcCisJCQlicmVhazsJCQkJCQkgICAgXAorCQkgICAgICBjYXNlIDI6CQkJCQkJICAgIFwKKwkJCXJldGNvdW50ID0gU05QUklOVEYgKHJlc3VsdCArIGxlbmd0aCwgbWF4bGVuLCBidWYsICBcCisJCQkJCSAgICAgcHJlZml4ZXNbMF0sIHByZWZpeGVzWzFdLCBhcmcsIFwKKwkJCQkJICAgICAmY291bnQpOwkJCSAgICBcCisJCQlicmVhazsJCQkJCQkgICAgXAorCQkgICAgICBkZWZhdWx0OgkJCQkJCSAgICBcCisJCQlhYm9ydCAoKTsJCQkJCSAgICBcCisJCSAgICAgIH0KKyNlbHNlCisjIGRlZmluZSBTTlBSSU5URl9CVUYoYXJnKSBcCisJCSAgICBzd2l0Y2ggKHByZWZpeF9jb3VudCkJCQkJICAgIFwKKwkJICAgICAgewkJCQkJCQkgICAgXAorCQkgICAgICBjYXNlIDA6CQkJCQkJICAgIFwKKwkJCWNvdW50ID0gc3ByaW50ZiAodG1wLCBidWYsIGFyZyk7CQkgICAgXAorCQkJYnJlYWs7CQkJCQkJICAgIFwKKwkJICAgICAgY2FzZSAxOgkJCQkJCSAgICBcCisJCQljb3VudCA9IHNwcmludGYgKHRtcCwgYnVmLCBwcmVmaXhlc1swXSwgYXJnKTsJICAgIFwKKwkJCWJyZWFrOwkJCQkJCSAgICBcCisJCSAgICAgIGNhc2UgMjoJCQkJCQkgICAgXAorCQkJY291bnQgPSBzcHJpbnRmICh0bXAsIGJ1ZiwgcHJlZml4ZXNbMF0sIHByZWZpeGVzWzFdLFwKKwkJCQkJIGFyZyk7CQkJCSAgICBcCisJCQlicmVhazsJCQkJCQkgICAgXAorCQkgICAgICBkZWZhdWx0OgkJCQkJCSAgICBcCisJCQlhYm9ydCAoKTsJCQkJCSAgICBcCisJCSAgICAgIH0KKyNlbmRpZgorCisJCSAgICBzd2l0Y2ggKHR5cGUpCisJCSAgICAgIHsKKwkJICAgICAgY2FzZSBUWVBFX1NDSEFSOgorCQkJeworCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3NjaGFyOworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBUWVBFX1VDSEFSOgorCQkJeworCQkJICB1bnNpZ25lZCBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3VjaGFyOworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBUWVBFX1NIT1JUOgorCQkJeworCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3Nob3J0OworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKwkJICAgICAgY2FzZSBUWVBFX1VTSE9SVDoKKwkJCXsKKwkJCSAgdW5zaWduZWQgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91c2hvcnQ7CisJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgICBjYXNlIFRZUEVfSU5UOgorCQkJeworCQkJICBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2ludDsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisJCSAgICAgIGNhc2UgVFlQRV9VSU5UOgorCQkJeworCQkJICB1bnNpZ25lZCBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3VpbnQ7CisJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgICBjYXNlIFRZUEVfTE9OR0lOVDoKKwkJCXsKKwkJCSAgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2xvbmdpbnQ7CisJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgICBjYXNlIFRZUEVfVUxPTkdJTlQ6CisJCQl7CisJCQkgIHVuc2lnbmVkIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV91bG9uZ2ludDsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKwkJICAgICAgY2FzZSBUWVBFX0xPTkdMT05HSU5UOgorCQkJeworCQkJICBsb25nIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25nbG9uZ2ludDsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisJCSAgICAgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6CisJCQl7CisJCQkgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3Vsb25nbG9uZ2ludDsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisjZW5kaWYKKwkJICAgICAgY2FzZSBUWVBFX0RPVUJMRToKKwkJCXsKKwkJCSAgZG91YmxlIGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9kb3VibGU7CisJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKKwkJCX0KKwkJCWJyZWFrOworI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKKwkJICAgICAgY2FzZSBUWVBFX0xPTkdET1VCTEU6CisJCQl7CisJCQkgIGxvbmcgZG91YmxlIGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25nZG91YmxlOworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKyNlbmRpZgorCQkgICAgICBjYXNlIFRZUEVfQ0hBUjoKKwkJCXsKKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jaGFyOworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKyNpZmRlZiBIQVZFX1dJTlRfVAorCQkgICAgICBjYXNlIFRZUEVfV0lERV9DSEFSOgorCQkJeworCQkJICB3aW50X3QgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfY2hhcjsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisjZW5kaWYKKwkJICAgICAgY2FzZSBUWVBFX1NUUklORzoKKwkJCXsKKwkJCSAgY29uc3QgY2hhciAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3N0cmluZzsKKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOworCQkJfQorCQkJYnJlYWs7CisjaWZkZWYgSEFWRV9XQ0hBUl9UCisJCSAgICAgIGNhc2UgVFlQRV9XSURFX1NUUklORzoKKwkJCXsKKwkJCSAgY29uc3Qgd2NoYXJfdCAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfc3RyaW5nOworCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7CisJCQl9CisJCQlicmVhazsKKyNlbmRpZgorCQkgICAgICBjYXNlIFRZUEVfUE9JTlRFUjoKKwkJCXsKKwkJCSAgdm9pZCAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3BvaW50ZXI7CisJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKKwkJCX0KKwkJCWJyZWFrOworCQkgICAgICBkZWZhdWx0OgorCQkJYWJvcnQgKCk7CisJCSAgICAgIH0KKworI2lmIFVTRV9TTlBSSU5URgorCQkgICAgLyogUG9ydGFiaWxpdHk6IE5vdCBhbGwgaW1wbGVtZW50YXRpb25zIG9mIHNucHJpbnRmKCkKKwkJICAgICAgIGFyZSBJU08gQyA5OSBjb21wbGlhbnQuICBEZXRlcm1pbmUgdGhlIG51bWJlciBvZgorCQkgICAgICAgYnl0ZXMgdGhhdCBzbnByaW50ZigpIGhhcyBwcm9kdWNlZCBvciB3b3VsZCBoYXZlCisJCSAgICAgICBwcm9kdWNlZC4gICovCisJCSAgICBpZiAoY291bnQgPj0gMCkKKwkJICAgICAgeworCQkJLyogVmVyaWZ5IHRoYXQgc25wcmludGYoKSBoYXMgTlVMLXRlcm1pbmF0ZWQgaXRzCisJCQkgICByZXN1bHQuICAqLworCQkJaWYgKGNvdW50IDwgbWF4bGVuICYmIHJlc3VsdFtsZW5ndGggKyBjb3VudF0gIT0gJ1wwJykKKwkJCSAgYWJvcnQgKCk7CisJCQkvKiBQb3J0YWJpbGl0eSBoYWNrLiAgKi8KKwkJCWlmIChyZXRjb3VudCA+IGNvdW50KQorCQkJICBjb3VudCA9IHJldGNvdW50OworCQkgICAgICB9CisJCSAgICBlbHNlCisJCSAgICAgIHsKKwkJCS8qIHNucHJpbnRmKCkgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAnJW4nCisJCQkgICBkaXJlY3RpdmUuICAqLworCQkJaWYgKHBbMV0gIT0gJ1wwJykKKwkJCSAgeworCQkJICAgIC8qIERvbid0IHVzZSB0aGUgJyVuJyBkaXJlY3RpdmU7IGluc3RlYWQsIGxvb2sKKwkJCSAgICAgICBhdCB0aGUgc25wcmludGYoKSByZXR1cm4gdmFsdWUuICAqLworCQkJICAgIHBbMV0gPSAnXDAnOworCQkJICAgIGNvbnRpbnVlOworCQkJICB9CisJCQllbHNlCisJCQkgIHsKKwkJCSAgICAvKiBMb29rIGF0IHRoZSBzbnByaW50ZigpIHJldHVybiB2YWx1ZS4gICovCisJCQkgICAgaWYgKHJldGNvdW50IDwgMCkKKwkJCSAgICAgIHsKKwkJCQkvKiBIUC1VWCAxMC4yMCBzbnByaW50ZigpIGlzIGRvdWJseSBkZWZpY2llbnQ6CisJCQkJICAgSXQgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAnJW4nIGRpcmVjdGl2ZSwKKwkJCQkgICAqYW5kKiBpdCByZXR1cm5zIC0xIChyYXRoZXIgdGhhbiB0aGUgbGVuZ3RoCisJCQkJICAgdGhhdCB3b3VsZCBoYXZlIGJlZW4gcmVxdWlyZWQpIHdoZW4gdGhlCisJCQkJICAgYnVmZmVyIGlzIHRvbyBzbWFsbC4gICovCisJCQkJc2l6ZV90IGJpZ2dlcl9uZWVkID0KKwkJCQkgIHhzdW0gKHh0aW1lcyAoYWxsb2NhdGVkLCAyKSwgMTIpOworCQkJCUVOU1VSRV9BTExPQ0FUSU9OIChiaWdnZXJfbmVlZCk7CisJCQkJY29udGludWU7CisJCQkgICAgICB9CisJCQkgICAgZWxzZQorCQkJICAgICAgY291bnQgPSByZXRjb3VudDsKKwkJCSAgfQorCQkgICAgICB9CisjZW5kaWYKKworCQkgICAgLyogQXR0ZW1wdCB0byBoYW5kbGUgZmFpbHVyZS4gICovCisJCSAgICBpZiAoY291bnQgPCAwKQorCQkgICAgICB7CisJCQlpZiAoIShyZXN1bHQgPT0gcmVzdWx0YnVmIHx8IHJlc3VsdCA9PSBOVUxMKSkKKwkJCSAgZnJlZSAocmVzdWx0KTsKKwkJCWZyZWUgKGJ1Zl9tYWxsb2NlZCk7CisJCQlDTEVBTlVQICgpOworCQkJZXJybm8gPSBFSU5WQUw7CisJCQlyZXR1cm4gTlVMTDsKKwkJICAgICAgfQorCisjaWYgIVVTRV9TTlBSSU5URgorCQkgICAgaWYgKGNvdW50ID49IHRtcF9sZW5ndGgpCisJCSAgICAgIC8qIHRtcF9sZW5ndGggd2FzIGluY29ycmVjdGx5IGNhbGN1bGF0ZWQgLSBmaXggdGhlCisJCQkgY29kZSBhYm92ZSEgICovCisJCSAgICAgIGFib3J0ICgpOworI2VuZGlmCisKKwkJICAgIC8qIE1ha2Ugcm9vbSBmb3IgdGhlIHJlc3VsdC4gICovCisJCSAgICBpZiAoY291bnQgPj0gbWF4bGVuKQorCQkgICAgICB7CisJCQkvKiBOZWVkIGF0IGxlYXN0IGNvdW50IGJ5dGVzLiAgQnV0IGFsbG9jYXRlCisJCQkgICBwcm9wb3J0aW9uYWxseSwgdG8gYXZvaWQgbG9vcGluZyBldGVybmFsbHkgaWYKKwkJCSAgIHNucHJpbnRmKCkgcmVwb3J0cyBhIHRvbyBzbWFsbCBjb3VudC4gICovCisJCQlzaXplX3QgbiA9CisJCQkgIHhtYXggKHhzdW0gKGxlbmd0aCwgY291bnQpLCB4dGltZXMgKGFsbG9jYXRlZCwgMikpOworCisJCQlFTlNVUkVfQUxMT0NBVElPTiAobik7CisjaWYgVVNFX1NOUFJJTlRGCisJCQljb250aW51ZTsKKyNlbmRpZgorCQkgICAgICB9CisKKyNpZiBVU0VfU05QUklOVEYKKwkJICAgIC8qIFRoZSBzbnByaW50ZigpIHJlc3VsdCBkaWQgZml0LiAgKi8KKyNlbHNlCisJCSAgICAvKiBBcHBlbmQgdGhlIHNwcmludGYoKSByZXN1bHQuICAqLworCQkgICAgbWVtY3B5IChyZXN1bHQgKyBsZW5ndGgsIHRtcCwgY291bnQgKiBzaXplb2YgKENIQVJfVCkpOworCQkgICAgaWYgKHRtcCAhPSB0bXBidWYpCisJCSAgICAgIGZyZWUgKHRtcCk7CisjZW5kaWYKKworCQkgICAgbGVuZ3RoICs9IGNvdW50OworCQkgICAgYnJlYWs7CisJCSAgfQorCSAgICAgIH0KKwkgIH0KKyAgICAgIH0KKworICAgIC8qIEFkZCB0aGUgZmluYWwgTlVMLiAgKi8KKyAgICBFTlNVUkVfQUxMT0NBVElPTiAoeHN1bSAobGVuZ3RoLCAxKSk7CisgICAgcmVzdWx0W2xlbmd0aF0gPSAnXDAnOworCisgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYgJiYgbGVuZ3RoICsgMSA8IGFsbG9jYXRlZCkKKyAgICAgIHsKKwkvKiBTaHJpbmsgdGhlIGFsbG9jYXRlZCBtZW1vcnkgaWYgcG9zc2libGUuICAqLworCUNIQVJfVCAqbWVtb3J5OworCisJbWVtb3J5ID0gKENIQVJfVCAqKSByZWFsbG9jIChyZXN1bHQsIChsZW5ndGggKyAxKSAqIHNpemVvZiAoQ0hBUl9UKSk7CisJaWYgKG1lbW9yeSAhPSBOVUxMKQorCSAgcmVzdWx0ID0gbWVtb3J5OworICAgICAgfQorCisgICAgZnJlZSAoYnVmX21hbGxvY2VkKTsKKyAgICBDTEVBTlVQICgpOworICAgICpsZW5ndGhwID0gbGVuZ3RoOworICAgIHJldHVybiByZXN1bHQ7CisKKyAgb3V0X29mX21lbW9yeToKKyAgICBpZiAoIShyZXN1bHQgPT0gcmVzdWx0YnVmIHx8IHJlc3VsdCA9PSBOVUxMKSkKKyAgICAgIGZyZWUgKHJlc3VsdCk7CisgICAgZnJlZSAoYnVmX21hbGxvY2VkKTsKKyAgb3V0X29mX21lbW9yeV8xOgorICAgIENMRUFOVVAgKCk7CisgICAgZXJybm8gPSBFTk9NRU07CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworI3VuZGVmIFNOUFJJTlRGCisjdW5kZWYgVVNFX1NOUFJJTlRGCisjdW5kZWYgUFJJTlRGX1BBUlNFCisjdW5kZWYgRElSRUNUSVZFUworI3VuZGVmIERJUkVDVElWRQorI3VuZGVmIENIQVJfVAorI3VuZGVmIFZBU05QUklOVEYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3Zhc25wcmludGYuaCBiL2UyZnNwcm9ncy9pbnRsL3Zhc25wcmludGYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWYxYmMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvdmFzbnByaW50Zi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qIHZzcHJpbnRmIHdpdGggYXV0b21hdGljIG1lbW9yeSBhbGxvY2F0aW9uLgorICAgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZuZGVmIF9WQVNOUFJJTlRGX0gKKyNkZWZpbmUgX1ZBU05QUklOVEZfSAorCisvKiBHZXQgdmFfbGlzdC4gICovCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKy8qIEdldCBzaXplX3QuICAqLworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaWZuZGVmIF9fYXR0cmlidXRlX18KKy8qIFRoaXMgZmVhdHVyZSBpcyBhdmFpbGFibGUgaW4gZ2NjIHZlcnNpb25zIDIuNSBhbmQgbGF0ZXIuICAqLworIyBpZiBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA1KSB8fCBfX1NUUklDVF9BTlNJX18KKyMgIGRlZmluZSBfX2F0dHJpYnV0ZV9fKFNwZWMpIC8qIGVtcHR5ICovCisjIGVuZGlmCisvKiBUaGUgX18tcHJvdGVjdGVkIHZhcmlhbnRzIG9mIGBmb3JtYXQnIGFuZCBgcHJpbnRmJyBhdHRyaWJ1dGVzCisgICBhcmUgYWNjZXB0ZWQgYnkgZ2NjIHZlcnNpb25zIDIuNi40IChlZmZlY3RpdmVseSAyLjcpIGFuZCBsYXRlci4gICovCisjIGlmIF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDcpCisjICBkZWZpbmUgX19mb3JtYXRfXyBmb3JtYXQKKyMgIGRlZmluZSBfX3ByaW50Zl9fIHByaW50ZgorIyBlbmRpZgorI2VuZGlmCisKKyNpZmRlZglfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyogV3JpdGUgZm9ybWF0dGVkIG91dHB1dCB0byBhIHN0cmluZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MoKS4KKyAgIFlvdSBjYW4gcGFzcyBhIHByZWFsbG9jYXRlZCBidWZmZXIgZm9yIHRoZSByZXN1bHQgaW4gUkVTVUxUQlVGIGFuZCBpdHMKKyAgIHNpemUgaW4gKkxFTkdUSFA7IG90aGVyd2lzZSB5b3UgcGFzcyBSRVNVTFRCVUYgPSBOVUxMLgorICAgSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdHJpbmcgKHRoaXMgbWF5IGJlID0gUkVTVUxUQlVGCisgICBpZiBubyBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdhcyBuZWNlc3NhcnkpIGFuZCBzZXQgKkxFTkdUSFAgdG8gdGhlCisgICBudW1iZXIgb2YgcmVzdWx0aW5nIGJ5dGVzLCBleGNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gIFVwb24gZXJyb3IsIHNldAorICAgZXJybm8gYW5kIHJldHVybiBOVUxMLiAgKi8KK2V4dGVybiBjaGFyICogYXNucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCisgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDQpKSk7CitleHRlcm4gY2hhciAqIHZhc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKKyAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgMCkpKTsKKworI2lmZGVmCV9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9WQVNOUFJJTlRGX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3Zhc253cHJpbnRmLmggYi9lMmZzcHJvZ3MvaW50bC92YXNud3ByaW50Zi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzY2VmNGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC92YXNud3ByaW50Zi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qIHZzd3ByaW50ZiB3aXRoIGF1dG9tYXRpYyBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfVkFTTldQUklOVEZfSAorI2RlZmluZSBfVkFTTldQUklOVEZfSAorCisvKiBHZXQgdmFfbGlzdC4gICovCisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKy8qIEdldCB3Y2hhcl90LCBzaXplX3QuICAqLworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjaWZkZWYJX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qIFdyaXRlIGZvcm1hdHRlZCBvdXRwdXQgdG8gYSBzdHJpbmcgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHdpdGggbWFsbG9jKCkuCisgICBZb3UgY2FuIHBhc3MgYSBwcmVhbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgcmVzdWx0IGluIFJFU1VMVEJVRiBhbmQgaXRzCisgICBzaXplIGluICpMRU5HVEhQOyBvdGhlcndpc2UgeW91IHBhc3MgUkVTVUxUQlVGID0gTlVMTC4KKyAgIElmIHN1Y2Nlc3NmdWwsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RyaW5nICh0aGlzIG1heSBiZSA9IFJFU1VMVEJVRgorICAgaWYgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3YXMgbmVjZXNzYXJ5KSBhbmQgc2V0ICpMRU5HVEhQIHRvIHRoZQorICAgbnVtYmVyIG9mIHJlc3VsdGluZyBieXRlcywgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICBVcG9uIGVycm9yLCBzZXQKKyAgIGVycm5vIGFuZCByZXR1cm4gTlVMTC4gICovCitleHRlcm4gd2NoYXJfdCAqIGFzbndwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLik7CitleHRlcm4gd2NoYXJfdCAqIHZhc253cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpOworCisjaWZkZWYJX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX1ZBU05XUFJJTlRGX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3dwcmludGYtcGFyc2UuaCBiL2UyZnNwcm9ncy9pbnRsL3dwcmludGYtcGFyc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGEyY2ZjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2ludGwvd3ByaW50Zi1wYXJzZS5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qIFBhcnNlIHByaW50ZiBmb3JtYXQgc3RyaW5nLgorICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisgICBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCisgICBVU0EuICAqLworCisjaWZuZGVmIF9XUFJJTlRGX1BBUlNFX0gKKyNkZWZpbmUgX1dQUklOVEZfUEFSU0VfSAorCisjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKKworCisvKiBGbGFncyAqLworI2RlZmluZSBGTEFHX0dST1VQCSAxCS8qICcgZmxhZyAqLworI2RlZmluZSBGTEFHX0xFRlQJIDIJLyogLSBmbGFnICovCisjZGVmaW5lIEZMQUdfU0hPV1NJR04JIDQJLyogKyBmbGFnICovCisjZGVmaW5lIEZMQUdfU1BBQ0UJIDgJLyogc3BhY2UgZmxhZyAqLworI2RlZmluZSBGTEFHX0FMVAkxNgkvKiAjIGZsYWcgKi8KKyNkZWZpbmUgRkxBR19aRVJPCTMyCisKKy8qIGFyZ19pbmRleCB2YWx1ZSBpbmRpY2F0aW5nIHRoYXQgbm8gYXJndW1lbnQgaXMgY29uc3VtZWQuICAqLworI2RlZmluZSBBUkdfTk9ORQkofihzaXplX3QpMCkKKworLyogQSBwYXJzZWQgZGlyZWN0aXZlLiAgKi8KK3R5cGVkZWYgc3RydWN0Cit7CisgIGNvbnN0IHdjaGFyX3QqIGRpcl9zdGFydDsKKyAgY29uc3Qgd2NoYXJfdCogZGlyX2VuZDsKKyAgaW50IGZsYWdzOworICBjb25zdCB3Y2hhcl90KiB3aWR0aF9zdGFydDsKKyAgY29uc3Qgd2NoYXJfdCogd2lkdGhfZW5kOworICBzaXplX3Qgd2lkdGhfYXJnX2luZGV4OworICBjb25zdCB3Y2hhcl90KiBwcmVjaXNpb25fc3RhcnQ7CisgIGNvbnN0IHdjaGFyX3QqIHByZWNpc2lvbl9lbmQ7CisgIHNpemVfdCBwcmVjaXNpb25fYXJnX2luZGV4OworICB3Y2hhcl90IGNvbnZlcnNpb247IC8qIGQgaSBvIHUgeCBYIGYgZSBFIGcgRyBjIHMgcCBuIFUgJSBidXQgbm90IEMgUyAqLworICBzaXplX3QgYXJnX2luZGV4OworfQord2NoYXJfdF9kaXJlY3RpdmU7CisKKy8qIEEgcGFyc2VkIGZvcm1hdCBzdHJpbmcuICAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgc2l6ZV90IGNvdW50OworICB3Y2hhcl90X2RpcmVjdGl2ZSAqZGlyOworICBzaXplX3QgbWF4X3dpZHRoX2xlbmd0aDsKKyAgc2l6ZV90IG1heF9wcmVjaXNpb25fbGVuZ3RoOworfQord2NoYXJfdF9kaXJlY3RpdmVzOworCisKKy8qIFBhcnNlcyB0aGUgZm9ybWF0IHN0cmluZy4gIEZpbGxzIGluIHRoZSBudW1iZXIgTiBvZiBkaXJlY3RpdmVzLCBhbmQgZmlsbHMKKyAgIGluIGRpcmVjdGl2ZXNbMF0sIC4uLiwgZGlyZWN0aXZlc1tOLTFdLCBhbmQgc2V0cyBkaXJlY3RpdmVzW05dLmRpcl9zdGFydAorICAgdG8gdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZy4gIEFsc28gZmlsbHMgaW4gdGhlIGFyZ190eXBlIGZpZWxkcyBvZiB0aGUKKyAgIGFyZ3VtZW50cyBhbmQgdGhlIG5lZWRlZCBjb3VudCBvZiBhcmd1bWVudHMuICAqLworI2lmZGVmIFNUQVRJQworU1RBVElDCisjZWxzZQorZXh0ZXJuCisjZW5kaWYKK2ludCB3cHJpbnRmX3BhcnNlIChjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHdjaGFyX3RfZGlyZWN0aXZlcyAqZCwgYXJndW1lbnRzICphKTsKKworI2VuZGlmIC8qIF9XUFJJTlRGX1BBUlNFX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9pbnRsL3hzaXplLmggYi9lMmZzcHJvZ3MvaW50bC94c2l6ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MmUyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvaW50bC94c2l6ZS5oCkBAIC0wLDAgKzEsMTA5IEBACisvKiB4c2l6ZS5oIC0tIENoZWNrZWQgc2l6ZV90IGNvbXB1dGF0aW9ucy4KKworICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAorICAgVVNBLiAgKi8KKworI2lmbmRlZiBfWFNJWkVfSAorI2RlZmluZSBfWFNJWkVfSAorCisvKiBHZXQgc2l6ZV90LiAgKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyogR2V0IFNJWkVfTUFYLiAgKi8KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpZiBIQVZFX1NURElOVF9ICisjIGluY2x1ZGUgPHN0ZGludC5oPgorI2VuZGlmCisKKy8qIFRoZSBzaXplIG9mIG1lbW9yeSBvYmplY3RzIGlzIG9mdGVuIGNvbXB1dGVkIHRocm91Z2ggZXhwcmVzc2lvbnMgb2YKKyAgIHR5cGUgc2l6ZV90LiBFeGFtcGxlOgorICAgICAgdm9pZCogcCA9IG1hbGxvYyAoaGVhZGVyX3NpemUgKyBuICogZWxlbWVudF9zaXplKS4KKyAgIFRoZXNlIGNvbXB1dGF0aW9ucyBjYW4gbGVhZCB0byBvdmVyZmxvdy4gIFdoZW4gdGhpcyBoYXBwZW5zLCBtYWxsb2MoKQorICAgcmV0dXJucyBhIHBpZWNlIG9mIG1lbW9yeSB0aGF0IGlzIHdheSB0b28gc21hbGwsIGFuZCB0aGUgcHJvZ3JhbSB0aGVuCisgICBjcmFzaGVzIHdoaWxlIGF0dGVtcHRpbmcgdG8gZmlsbCB0aGUgbWVtb3J5LgorICAgVG8gYXZvaWQgdGhpcywgdGhlIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIGluIHRoaXMgZmlsZSBjaGVjayBmb3Igb3ZlcmZsb3cuCisgICBUaGUgY29udmVudGlvbiBpcyB0aGF0IFNJWkVfTUFYIHJlcHJlc2VudHMgb3ZlcmZsb3cuCisgICBtYWxsb2MgKFNJWkVfTUFYKSBpcyBub3QgZ3VhcmFudGVlZCB0byBmYWlsIC0tIHRoaW5rIG9mIGEgbWFsbG9jCisgICBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgbW1hcCAtLSwgaXQncyByZWNvbW1lbmRlZCB0byB1c2Ugc2l6ZV9vdmVyZmxvd19wKCkKKyAgIG9yIHNpemVfaW5fYm91bmRzX3AoKSBiZWZvcmUgaW52b2tpbmcgbWFsbG9jKCkuCisgICBUaGUgZXhhbXBsZSB0aHVzIGJlY29tZXM6CisgICAgICBzaXplX3Qgc2l6ZSA9IHhzdW0gKGhlYWRlcl9zaXplLCB4dGltZXMgKG4sIGVsZW1lbnRfc2l6ZSkpOworICAgICAgdm9pZCAqcCA9IChzaXplX2luX2JvdW5kc19wIChzaXplKSA/IG1hbGxvYyAoc2l6ZSkgOiBOVUxMKTsKKyovCisKKy8qIENvbnZlcnQgYW4gYXJiaXRyYXJ5IHZhbHVlID49IDAgdG8gdHlwZSBzaXplX3QuICAqLworI2RlZmluZSB4Y2FzdF9zaXplX3QoTikgXAorICAoKE4pIDw9IFNJWkVfTUFYID8gKHNpemVfdCkgKE4pIDogU0laRV9NQVgpCisKKy8qIFN1bSBvZiB0d28gc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLworc3RhdGljIGlubGluZSBzaXplX3QKKyNpZiBfX0dOVUNfXyA+PSAzCitfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQorI2VuZGlmCit4c3VtIChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMikKK3sKKyAgc2l6ZV90IHN1bSA9IHNpemUxICsgc2l6ZTI7CisgIHJldHVybiAoc3VtID49IHNpemUxID8gc3VtIDogU0laRV9NQVgpOworfQorCisvKiBTdW0gb2YgdGhyZWUgc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLworc3RhdGljIGlubGluZSBzaXplX3QKKyNpZiBfX0dOVUNfXyA+PSAzCitfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQorI2VuZGlmCit4c3VtMyAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIsIHNpemVfdCBzaXplMykKK3sKKyAgcmV0dXJuIHhzdW0gKHhzdW0gKHNpemUxLCBzaXplMiksIHNpemUzKTsKK30KKworLyogU3VtIG9mIGZvdXIgc2l6ZXMsIHdpdGggb3ZlcmZsb3cgY2hlY2suICAqLworc3RhdGljIGlubGluZSBzaXplX3QKKyNpZiBfX0dOVUNfXyA+PSAzCitfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQorI2VuZGlmCit4c3VtNCAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIsIHNpemVfdCBzaXplMywgc2l6ZV90IHNpemU0KQoreworICByZXR1cm4geHN1bSAoeHN1bSAoeHN1bSAoc2l6ZTEsIHNpemUyKSwgc2l6ZTMpLCBzaXplNCk7Cit9CisKKy8qIE1heGltdW0gb2YgdHdvIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KK3N0YXRpYyBpbmxpbmUgc2l6ZV90CisjaWYgX19HTlVDX18gPj0gMworX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKKyNlbmRpZgoreG1heCAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIpCit7CisgIC8qIE5vIGV4cGxpY2l0IGNoZWNrIGlzIG5lZWRlZCBoZXJlLCBiZWNhdXNlIGZvciBhbnkgbjoKKyAgICAgbWF4IChTSVpFX01BWCwgbikgPT0gU0laRV9NQVggYW5kIG1heCAobiwgU0laRV9NQVgpID09IFNJWkVfTUFYLiAgKi8KKyAgcmV0dXJuIChzaXplMSA+PSBzaXplMiA/IHNpemUxIDogc2l6ZTIpOworfQorCisvKiBNdWx0aXBsaWNhdGlvbiBvZiBhIGNvdW50IHdpdGggYW4gZWxlbWVudCBzaXplLCB3aXRoIG92ZXJmbG93IGNoZWNrLgorICAgVGhlIGNvdW50IG11c3QgYmUgPj0gMCBhbmQgdGhlIGVsZW1lbnQgc2l6ZSBtdXN0IGJlID4gMC4KKyAgIFRoaXMgaXMgYSBtYWNybywgbm90IGFuIGlubGluZSBmdW5jdGlvbiwgc28gdGhhdCBpdCB3b3JrcyBjb3JyZWN0bHkgZXZlbgorICAgd2hlbiBOIGlzIG9mIGEgd2lkZXIgdHVwZSBhbmQgTiA+IFNJWkVfTUFYLiAgKi8KKyNkZWZpbmUgeHRpbWVzKE4sIEVMU0laRSkgXAorICAoKE4pIDw9IFNJWkVfTUFYIC8gKEVMU0laRSkgPyAoc2l6ZV90KSAoTikgKiAoRUxTSVpFKSA6IFNJWkVfTUFYKQorCisvKiBDaGVjayBmb3Igb3ZlcmZsb3cuICAqLworI2RlZmluZSBzaXplX292ZXJmbG93X3AoU0laRSkgXAorICAoKFNJWkUpID09IFNJWkVfTUFYKQorLyogQ2hlY2sgYWdhaW5zdCBvdmVyZmxvdy4gICovCisjZGVmaW5lIHNpemVfaW5fYm91bmRzX3AoU0laRSkgXAorICAoKFNJWkUpICE9IFNJWkVfTUFYKQorCisjZW5kaWYgLyogX1hTSVpFX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9saWIvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDUzZTdkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9BbmRyb2lkLm1rCkBAIC0wLDAgKzEgQEAKK2luY2x1ZGUgJChjYWxsIGFsbC1zdWJkaXItbWFrZWZpbGVzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9NYWtlZmlsZS5ic2QtbGliIGIvZTJmc3Byb2dzL2xpYi9NYWtlZmlsZS5ic2QtbGliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMDk0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmJzZC1saWIKQEAgLTAsMCArMSw0NyBAQAorIworIyBUaGlzIGlzIGEgTWFrZWZpbGUgc3R1YiB3aGljaCBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBCU0Qgc2hhcmVkCisjIGxpYnJhcmllcy4KKyMKKyMgSW4gb3JkZXIgdG8gdXNlIHRoaXMgc3R1YiwgdGhlIGZvbGxvd2luZyBtYWtlZmlsZSB2YXJpYWJsZXMgbXVzdCBiZSBkZWZpbmVkLgorIyAKKyMgQlNETElCX1ZFUlNJT04gPSAxLjAKKyMgQlNETElCX0lNQUdFID0gbGliY2UKKyMgQlNETElCX01ZRElSID0gZXQKKyMgQlNETElCX0lOU1RBTExfRElSID0gJChTSExJQkRJUikKKyMKKworYWxsOjogaW1hZ2UKKworcmVhbC1zdWJkaXJzOjogTWFrZWZpbGUKKwlAZWNobyAiCU1LRElSIHBpYyIKKwlAbWtkaXIgLXAgcGljCisKK0JTRF9MSUIgPSAkKEJTRExJQl9JTUFHRSkuc28uJChCU0RMSUJfVkVSU0lPTikKK0JTRExJQl9QSUNfRkxBRyA9IC1mcGljCisKK2ltYWdlOgkJJChCU0RfTElCKQorCiskKEJTRF9MSUIpOiAkKE9CSlMpCisJKGNkIHBpYzsgbGQgLUJzaGFyZWFibGUgLW8gJChCU0RfTElCKSAkKExERkxBR1NfU0hMSUIpICQoT0JKUykpCisJJChNVikgcGljLyQoQlNEX0xJQikgLgorCSQoUk0pIC1mIC4uLyQoQlNEX0xJQikKKwkoY2QgLi47ICQoTE4pICQoTElOS19CVUlMRF9GTEFHUykgXAorCQlgZWNobyAkKG15X2RpcikgfCBzZWQgLWUgJ3M7bGliLzs7J2AvJChCU0RfTElCKSAkKEJTRF9MSUIpKQorCitpbnN0YWxsLXNobGlicyBpbnN0YWxsOjogJChCU0RfTElCKQorCUBlY2hvICIJSU5TVEFMTF9QUk9HUkFNICQoQlNETElCX0lOU1RBTExfRElSKS8kKEJTRF9MSUIpIgorCUAkKElOU1RBTExfUFJPR1JBTSkgJChCU0RfTElCKSBcCisJCSQoREVTVERJUikkKEJTRExJQl9JTlNUQUxMX0RJUikvJChCU0RfTElCKQorCUAtJChMRENPTkZJRykKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCitpbnN0YWxsLXNobGlicy1zdHJpcDogaW5zdGFsbC1zaGxpYnMKKwordW5pbnN0YWxsLXNobGlicyB1bmluc3RhbGw6OgorCSQoUk0pIC1mICQoREVTVERJUikkKEJTRExJQl9JTlNUQUxMX0RJUikvJChCU0RfTElCKQorCitjbGVhbjo6CisJJChSTSkgLXJmIHBpYworCSQoUk0pIC1mICQoQlNEX0xJQikKKwkkKFJNKSAtZiAuLi8kKEJTRF9MSUIpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmNoZWNrZXIgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmNoZWNrZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI1ZjlhMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUuY2hlY2tlcgpAQCAtMCwwICsxLDMgQEAKKyMgVGhpcyBpcyBhIHBsYWNlaG9sZGVyIHNvIGJ1aWxkcyBkb24ndCBicmVhayBhZnRlciBhICJnaXQgcHVsbCIKKyMgd2hpY2ggcmVtb3ZlZCB0aGUgY2hlY2tlciBpbmZyYXN0cnVjdHVyZS4gIFRoaXMgZmlsZSBjYW4gYmUgZGVsZXRlZAorIyBhZnRlciBlMmZzcHJvZ3MgMS40NCBpcyByZWxlYXNlZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9NYWtlZmlsZS5kYXJ3aW4tbGliIGIvZTJmc3Byb2dzL2xpYi9NYWtlZmlsZS5kYXJ3aW4tbGliCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NGE1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmRhcndpbi1saWIKQEAgLTAsMCArMSw1MSBAQAorIworIyBUaGlzIGlzIGEgTWFrZWZpbGUgc3R1YiB3aGljaCBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBEYXJ3aW4gQlNEIHNoYXJlZAorIyBsaWJyYXJpZXMuCisjCisjIEluIG9yZGVyIHRvIHVzZSB0aGlzIHN0dWIsIHRoZSBmb2xsb3dpbmcgbWFrZWZpbGUgdmFyaWFibGVzIG11c3QgYmUgZGVmaW5lZC4KKyMKKyMgQlNETElCX1ZFUlNJT04gPSAxLjAKKyMgQlNETElCX0lNQUdFID0gbGliY2UKKyMgQlNETElCX01ZRElSID0gZXQKKyMgQlNETElCX0lOU1RBTExfRElSID0gJChTSExJQkRJUikKKyMKKworYWxsOjogaW1hZ2UKKworcmVhbC1zdWJkaXJzOjogTWFrZWZpbGUKKwkkKEUpICIJTUtESVIgcGljIgorCSQoUSkgbWtkaXIgLXAgcGljCisKK0JTRF9MSUIgPSAkKEJTRExJQl9JTUFHRSkuJChCU0RMSUJfVkVSU0lPTikuZHlsaWIKK0JTRExJQl9QSUNfRkxBRyA9IC1mUElDCisKK2ltYWdlOgkJJChCU0RfTElCKQorCiskKEJTRF9MSUIpOiAkKE9CSlMpCisJJChFKSAiCUdFTl9CU0RfU09MSUIgJChCU0RfTElCKSIKKwkkKFEpIChjZCBwaWM7ICQoQ0MpIC1keW5hbWljbGliIC1jb21wYXRpYmlsaXR5X3ZlcnNpb24gMS4wIC1jdXJyZW50X3ZlcnNpb24gJChCU0RMSUJfVkVSU0lPTikgXAorCQktZmxhdF9uYW1lc3BhY2UgLXVuZGVmaW5lZCB3YXJuaW5nIC1vICQoQlNEX0xJQikgJChPQkpTKSkKKwkkKFEpICQoTVYpIHBpYy8kKEJTRF9MSUIpIC4KKwkkKFEpICQoUk0pIC1mIC4uLyQoQlNEX0xJQikKKwkkKFEpIChjZCAuLjsgJChMTikgJChMSU5LX0JVSUxEX0ZMQUdTKSBcCisJCWBlY2hvICQobXlfZGlyKSB8IHNlZCAtZSAncztsaWIvOzsnYC8kKEJTRF9MSUIpICQoQlNEX0xJQikpCisJJChRKSAoY2QgLi47ICQoTE4pICQoTElOS19CVUlMRF9GTEFHUykgJChCU0RfTElCKSAkKEJTRExJQl9JTUFHRSkuZHlsaWIpCisKK2luc3RhbGwtc2hsaWJzIGluc3RhbGw6OiAkKEJTRF9MSUIpCisJJChFKSAiCUlOU1RBTExfUFJPR1JBTSAkKEJTRExJQl9JTlNUQUxMX0RJUikvJChCU0RfTElCKSIKKwkkKFEpICQoSU5TVEFMTF9QUk9HUkFNKSAkKEJTRF9MSUIpIFwKKwkJJChERVNURElSKSQoQlNETElCX0lOU1RBTExfRElSKS8kKEJTRF9MSUIpCisJLSQoUSkgJChMRENPTkZJRykKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCitpbnN0YWxsLXNobGlicy1zdHJpcDogaW5zdGFsbC1zaGxpYnMKKwordW5pbnN0YWxsLXNobGlicyB1bmluc3RhbGw6OgorCSQoUk0pIC1mICQoREVTVERJUikkKEJTRExJQl9JTlNUQUxMX0RJUikvJChCU0RfTElCKQorCitjbGVhbjo6CisJJChSTSkgLXJmIHBpYworCSQoUk0pIC1mICQoQlNEX0xJQikKKwkkKFJNKSAtZiAuLi8kKEJTRF9MSUIpCisJJChSTSkgLWYgLi4vJChCU0RMSUJfSU1BR0UpLmR5bGliCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmVsZi1saWIgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmVsZi1saWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU4OGMwNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUuZWxmLWxpYgpAQCAtMCwwICsxLDc1IEBACisjCisjIFRoaXMgaXMgYSBNYWtlZmlsZSBzdHViIHdoaWNoIGhhbmRsZXMgdGhlIGNyZWF0aW9uIG9mIExpbnV4IEVMRiBzaGFyZWQKKyMgbGlicmFyaWVzLgorIworIyBJbiBvcmRlciB0byB1c2UgdGhpcyBzdHViLCB0aGUgZm9sbG93aW5nIG1ha2VmaWxlIHZhcmlhYmxlcyBtdXN0IGJlIGRlZmluZWQuCisjIAorIyBFTEZfVkVSU0lPTiA9IDEuMAorIyBFTEZfU09fVkVSU0lPTiA9IDEKKyMgRUxGX0lNQUdFID0gbGliY2UKKyMgRUxGX01ZRElSID0gZXQKKyMgRUxGX0lOU1RBTExfRElSID0gJChTSExJQkRJUikKKyMgRUxGX09USEVSX0xJQlMgPSAtbGMKKworYWxsOjogaW1hZ2UKKworcmVhbC1zdWJkaXJzOjogTWFrZWZpbGUKKwkkKEUpICIJTUtESVIgZWxmc2hhcmVkIgorCSQoUSkgbWtkaXIgLXAgZWxmc2hhcmVkCisKK0VMRl9MSUIgPSAkKEVMRl9JTUFHRSkuc28uJChFTEZfVkVSU0lPTikKK0VMRl9TT05BTUUgPSAkKEVMRl9JTUFHRSkuc28uJChFTEZfU09fVkVSU0lPTikKKworaW1hZ2U6CQkkKEVMRl9MSUIpCisKKyQoRUxGX0xJQik6ICQoT0JKUykKKwkkKEUpICIJR0VOX0VMRl9TT0xJQiAkKEVMRl9MSUIpIgorCSQoUSkgKGNkIGVsZnNoYXJlZDsgJChDQykgLW8gJChFTEZfTElCKSBcCisJCS1MJCh0b3BfYnVpbGRkaXIpLy4uL2xpYiAkKExERkxBR1NfU0hMSUIpIC1mUElDIC1zaGFyZWQgXAorCQktV2wsLXNvbmFtZSwkKEVMRl9TT05BTUUpICQoT0JKUykgJChFTEZfT1RIRVJfTElCUykpCisJJChRKSAkKE1WKSBlbGZzaGFyZWQvJChFTEZfTElCKSAuCisJJChRKSAkKFJNKSAtZiAuLi8kKEVMRl9MSUIpIC4uLyQoRUxGX0lNQUdFKS5zbyAuLi8kKEVMRl9TT05BTUUpCisJJChRKSAoY2QgLi47ICQoTE4pICQoTElOS19CVUlMRF9GTEFHUykgXAorCQlgZWNobyAkKG15X2RpcikgfCBzZWQgLWUgJ3M7bGliLzs7J2AvJChFTEZfTElCKSAkKEVMRl9MSUIpKQorCSQoUSkgKGNkIC4uOyAkKExOKSAkKExJTktfQlVJTERfRkxBR1MpICQoRUxGX0xJQikgJChFTEZfSU1BR0UpLnNvKQorCSQoUSkgKGNkIC4uOyAkKExOKSAkKExJTktfQlVJTERfRkxBR1MpICQoRUxGX0xJQikgJChFTEZfU09OQU1FKSkKKworaW5zdGFsbGRpcnMtZWxmLWxpYjo6CisJJChFKSAiCU1LSU5TVEFMTERJUlMgJChFTEZfSU5TVEFMTF9ESVIpICQobGliZGlyKSIKKwkkKFEpICQoTUtJTlNUQUxMRElSUykgJChERVNURElSKSQoRUxGX0lOU1RBTExfRElSKSBcCisJCSQoREVTVERJUikkKGxpYmRpcikKKworaW5zdGFsbGRpcnM6OiBpbnN0YWxsZGlycy1lbGYtbGliCisKK2luc3RhbGwtc2hsaWJzIGluc3RhbGw6OiAkKEVMRl9MSUIpIGluc3RhbGxkaXJzLWVsZi1saWIgJChERVBfSU5TVEFMTF9TWU1MSU5LKQorCSQoRSkgIglJTlNUQUxMLUVMRi1MSUIgJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX0xJQikiCisJJChRKSAkKElOU1RBTExfUFJPR1JBTSkgJChFTEZfTElCKSAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX0xJQikKKwkkKEUpICIJU1lNTElOSyAkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfU09OQU1FKSIKKwkkKFEpICQoSU5TVEFMTF9TWU1MSU5LKSAkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfTElCKSBcCisJCSQoRUxGX0lOU1RBTExfRElSKS8kKEVMRl9TT05BTUUpICQoREVTVERJUikKKwkkKEUpICIJU1lNTElOSyAkKGxpYmRpcikvJChFTEZfSU1BR0UpLnNvIgorCSQoUSkgJChJTlNUQUxMX1NZTUxJTkspICQoRUxGX0lOU1RBTExfRElSKS8kKEVMRl9TT05BTUUpIFwKKwkJJChsaWJkaXIpLyQoRUxGX0lNQUdFKS5zbyAkKERFU1RESVIpCisJJChFKSAiCUxEQ09ORklHIgorCSQoUSkgLSQoTERDT05GSUcpCisKK2luc3RhbGwtc3RyaXA6IGluc3RhbGwKKwkkKEUpICIJU1RSSVAtTElCICQoRUxGX0lOU1RBTExfRElSKS8kKEVMRl9MSUIpIgorCSQoUSkgJChTVFJJUCkgLS1zdHJpcC11bm5lZWRlZCAtLXJlbW92ZS1zZWN0aW9uPS5jb21tZW50IFwKKwkJLS1yZW1vdmUtc2VjdGlvbj0ubm90ZSAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX0xJQikKKworaW5zdGFsbC1zaGxpYnMtc3RyaXA6IGluc3RhbGwtc2hsaWJzCisJJChFKSAiCVNUUklQLUxJQiAkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfTElCKSIKKwkkKFEpICQoU1RSSVApIC0tc3RyaXAtdW5uZWVkZWQgLS1yZW1vdmUtc2VjdGlvbj0uY29tbWVudCBcCisJCS0tcmVtb3ZlLXNlY3Rpb249Lm5vdGUgJChERVNURElSKSQoRUxGX0lOU1RBTExfRElSKS8kKEVMRl9MSUIpCisKK3VuaW5zdGFsbC1zaGxpYnMgdW5pbnN0YWxsOjoKKwkkKFJNKSAtZiAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX0xJQikgXAorCQkkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX1NPTkFNRSkgXAorCQkkKERFU1RESVIpJChsaWJkaXIpLyQoRUxGX0lNQUdFKS5zbworCS0kKExEQ09ORklHKQorCitjbGVhbjo6CisJJChSTSkgLXJmIGVsZnNoYXJlZAorCSQoUk0pIC1mICQoRUxGX0xJQikKKwkkKFJNKSAtZiAuLi8kKEVMRl9MSUIpIC4uLyQoRUxGX0lNQUdFKS5zbyAuLi8kKEVMRl9TT05BTUUpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmxpYnJhcnkgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLmxpYnJhcnkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI4NmIwMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUubGlicmFyeQpAQCAtMCwwICsxLDI1IEBACithbGw6OiBzdWJkaXJzICQoTElCUkFSWSkuYQorCitpbnN0YWxsLXNobGliczo6CisKK3VuaW5zdGFsbC1zaGxpYnM6OgorCityZWFsLXN1YmRpcnM6OgorCitzdWJkaXJzOjogTWFrZWZpbGUKKwkkKFEpICQoTUFLRSkgLXMgcmVhbC1zdWJkaXJzCisJJChRKSB0b3VjaCBzdWJkaXJzCisKK2NsZWFuOjoKKwkkKFEpICQoUk0pIC1mIHN1YmRpcnMKKworJChMSUJSQVJZKS5hOiAkKE9CSlMpCisJJChFKSAiCUdFTl9MSUIgJEAiCisJJChRKSAoaWYgdGVzdCAtciAkQDsgdGhlbiAkKFJNKSAtZiAkQC5iYWsgJiYgJChNVikgJEAgJEAuYmFrOyBmaSkKKwkkKFEpICQoQVJHRU4pICRAICQoT0JKUykKKwktQCQoUkFOTElCKSAkQAorCSQoUSkgJChSTSkgLWYgLi4vJEAKKwkkKFEpIChjZCAuLjsgJChMTikgJChMSU5LX0JVSUxEX0ZMQUdTKSBcCisJCWBlY2hvICQobXlfZGlyKSB8IHNlZCAtZSAncztsaWIvOzsnYC8kQCAkQCkKKworJChMSUIpLyQoTElCUkFSWSkuYTogJChMSUJSQVJZKS5hCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLnByb2ZpbGUgYi9lMmZzcHJvZ3MvbGliL01ha2VmaWxlLnByb2ZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwZjViYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUucHJvZmlsZQpAQCAtMCwwICsxLDI3IEBACithbGw6OiAkKExJQlJBUlkpX3AuYQorCityZWFsLXN1YmRpcnM6OiBNYWtlZmlsZQorCSQoRSkgIglNS0RJUiBwcm9maWxlZCIKKwkkKFEpIG1rZGlyIC1wIHByb2ZpbGVkCisKK2NsZWFuOjoKKwkkKFJNKSAtcmYgcHJvZmlsZWQKKwkkKFJNKSAtZiAkKExJQlJBUlkpX3AuYSAuLi8kKExJQlJBUlkpX3AuYQorCiskKExJQlJBUlkpX3AuYTogJChPQkpTKQorCSQoRSkgIglHRU5fUFJPRklMRURfTElCICQoRUxGX0xJQikiCisJJChRKSAoaWYgdGVzdCAtciAkQDsgdGhlbiAkKFJNKSAtZiAkQC5iYWsgJiYgJChNVikgJEAgJEAuYmFrOyBmaSkKKwkkKFEpIChjZCBwcm9maWxlZDsgJChBUlVQRCkgLi4vJEAgJChPQkpTKSkKKwktJChRKSAkKFJBTkxJQikgJEAKKwkkKFEpICQoUk0pIC1mIC4uLyRACisJJChRKSAoY2QgLi47ICQoTE4pICQoTElOS19CVUlMRF9GTEFHUykgXAorCQlgZWNobyAkKG15X2RpcikgfCBzZWQgLWUgJ3M7bGliLzs7J2AvJEAgJEApCisKK2luc3RhbGw6OiAkKExJQlJBUlkpX3AuYSBpbnN0YWxsZGlycworCSQoRSkgIglJTlNUQUxMX0RBVEEgJChsaWJkaXIpLyQoTElCUkFSWSlfcC5hIgorCSQoUSkgJChJTlNUQUxMX0RBVEEpICQoTElCUkFSWSlfcC5hICQoREVTVERJUikkKGxpYmRpcikvJChMSUJSQVJZKV9wLmEKKwktJChRKSAkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS8kKExJQlJBUlkpX3AuYQorCSQoUSkgJChDSE1PRCkgJChMSUJNT0RFKSAkKERFU1RESVIpJChsaWJkaXIpLyQoTElCUkFSWSlfcC5hCisKK3VuaW5zdGFsbDo6CisJJChSTSkgLWYgJChERVNURElSKSQobGliZGlyKS8kKExJQlJBUlkpX3AuYQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9NYWtlZmlsZS5zb2xhcmlzLWxpYiBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUuc29sYXJpcy1saWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNkMzk1ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvTWFrZWZpbGUuc29sYXJpcy1saWIKQEAgLTAsMCArMSw2NSBAQAorIworIyBUaGlzIGlzIGEgTWFrZWZpbGUgc3R1YiB3aGljaCBoYW5kbGVzIHRoZSBjcmVhdGlvbiBvZiBMaW51eCBFTEYgc2hhcmVkCisjIGxpYnJhcmllcy4KKyMKKyMgSW4gb3JkZXIgdG8gdXNlIHRoaXMgc3R1YiwgdGhlIGZvbGxvd2luZyBtYWtlZmlsZSB2YXJpYWJsZXMgbXVzdCBiZSBkZWZpbmVkLgorIyAKKyMgRUxGX1ZFUlNJT04gPSAxLjAKKyMgRUxGX1NPX1ZFUlNJT04gPSAxCisjIEVMRl9JTUFHRSA9IGxpYmNlCisjIEVMRl9NWURJUiA9IGV0CisjIEVMRl9JTlNUQUxMX0RJUiA9ICQoU0hMSUJESVIpCisjIEVMRl9PVEhFUl9MSUJTID0gLWxjCisKK2FsbDo6IGltYWdlCisKK3JlYWwtc3ViZGlyczo6IE1ha2VmaWxlCisJJChFKSAiCU1LRElSIGVsZnNoYXJlZCIKKwkkKFEpIG1rZGlyIC1wIGVsZnNoYXJlZAorCitFTEZfTElCID0gJChFTEZfSU1BR0UpLnNvLiQoRUxGX1ZFUlNJT04pCitFTEZfU09OQU1FID0gJChFTEZfSU1BR0UpLnNvLiQoRUxGX1NPX1ZFUlNJT04pCisKK2ltYWdlOgkJJChFTEZfTElCKQorCiskKEVMRl9MSUIpOiAkKE9CSlMpCisJJChFKSAiCUdFTl9FTEZfU09MSUIgJChFTEZfTElCKSIKKwkkKFEpIChjZCBlbGZzaGFyZWQ7ICQoQ0MpIC0tc2hhcmVkIC1vICQoRUxGX0xJQikgXAorCQktTCQodG9wX2J1aWxkZGlyKS8uLi9saWIgJChMREZMQUdTX1NITElCKSBcCisJCS1XbCwtaCwkKEVMRl9TT05BTUUpICQoT0JKUykgJChFTEZfT1RIRVJfTElCUykpCisJJChRKSAkKE1WKSBlbGZzaGFyZWQvJChFTEZfTElCKSAuCisJJChRKSAkKFJNKSAtZiAuLi8kKEVMRl9MSUIpIC4uLyQoRUxGX0lNQUdFKS5zbyAuLi8kKEVMRl9TT05BTUUpCisJJChRKSAoY2QgLi47ICQoTE4pICQoTElOS19CVUlMRF9GTEFHUykgXAorCQlgZWNobyAkKG15X2RpcikgfCBzZWQgLWUgJ3M7bGliLzs7J2AvJChFTEZfTElCKSAkKEVMRl9MSUIpKQorCSQoUSkgKGNkIC4uOyAkKExOKSAkKExJTktfQlVJTERfRkxBR1MpICQoRUxGX0xJQikgJChFTEZfSU1BR0UpLnNvKQorCSQoUSkgKGNkIC4uOyAkKExOKSAkKExJTktfQlVJTERfRkxBR1MpICQoRUxGX0xJQikgJChFTEZfU09OQU1FKSkKKworaW5zdGFsbGRpcnMtZWxmLWxpYjo6CisJJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpIFwKKwkJJChERVNURElSKSQobGliZGlyKQorCitpbnN0YWxsZGlyczo6IGluc3RhbGxkaXJzLWVsZi1saWIKKworaW5zdGFsbC1zaGxpYnMgaW5zdGFsbDo6ICQoRUxGX0xJQikgaW5zdGFsbGRpcnMtZWxmLWxpYgorCSQoSU5TVEFMTF9QUk9HUkFNKSAkKEVMRl9MSUIpICQoREVTVERJUikkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfTElCKQorCSQoTE5fUykgLWYgJChFTEZfTElCKSAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX1NPTkFNRSkKKwkkKExOX1MpIC1mICQoRUxGX0lOU1RBTExfRElSKS8kKEVMRl9TT05BTUUpIFwKKwkJJChERVNURElSKSQobGliZGlyKS8kKEVMRl9JTUFHRSkuc28KKwktJChMRENPTkZJRykKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCSQoU1RSSVApIC14ICQoREVTVERJUikkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfTElCKQorCitpbnN0YWxsLXNobGlicy1zdHJpcDogaW5zdGFsbC1zaGxpYnMKKwkkKFNUUklQKSAteCAkKERFU1RESVIpJChFTEZfSU5TVEFMTF9ESVIpLyQoRUxGX0xJQikKKwordW5pbnN0YWxsLXNobGlicyB1bmluc3RhbGw6OgorCSQoUk0pIC1mICQoREVTVERJUikkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfTElCKSBcCisJCSQoREVTVERJUikkKEVMRl9JTlNUQUxMX0RJUikvJChFTEZfU09OQU1FKSBcCisJCSQoREVTVERJUikkKGxpYmRpcikvJChFTEZfSU1BR0UpLnNvCisJLSQoTERDT05GSUcpCisKK2NsZWFuOjoKKwkkKFJNKSAtcmYgZWxmc2hhcmVkCisJJChSTSkgLWYgJChFTEZfTElCKQorCSQoUk0pIC1mIC4uLyQoRUxGX0xJQikgLi4vJChFTEZfSU1BR0UpLnNvIC4uLyQoRUxGX1NPTkFNRSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9saWIvYmxraWQvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTdjNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsNjIgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKKworbGliZXh0Ml9ibGtpZF9zcmNfZmlsZXMgOj0gXAorCWNhY2hlLmMgXAorCWRldi5jIFwKKwlkZXZuYW1lLmMgXAorCWRldm5vLmMgXAorCWdldHNpemUuYyBcCisJbGxzZWVrLmMgXAorCXByb2JlLmMgXAorCXJlYWQuYyBcCisJcmVzb2x2ZS5jIFwKKwlzYXZlLmMgXAorCXRhZy5jIFwKKwl2ZXJzaW9uLmMgXAorCisKK2xpYmV4dDJfYmxraWRfc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJleHQyX3V1aWQKKworbGliZXh0Ml9ibGtpZF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2xpYmV4dDJfYmxraWRfc3RhdGljX2xpYnJhcmllcyA6PSBsaWJleHQyX3V1aWRfc3RhdGljCisKK2xpYmV4dDJfYmxraWRfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMgOj0gbGliYworCitsaWJleHQyX2Jsa2lkX2NfaW5jbHVkZXMgOj0gZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitsaWJleHQyX2Jsa2lkX2NmbGFncyA6PSAtTzIgLWcgLVcgLVdhbGwgLWZuby1zdHJpY3QtYWxpYXNpbmcKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfYmxraWRfc3JjX2ZpbGVzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChsaWJleHQyX2Jsa2lkX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxpYmV4dDJfYmxraWRfc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX2Jsa2lkX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2Jsa2lkX2NmbGFncykKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX2Jsa2lkCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsaWJleHQyX2Jsa2lkX3NyY19maWxlcykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChsaWJleHQyX2Jsa2lkX3N0YXRpY19saWJyYXJpZXMpICQobGliZXh0Ml9ibGtpZF9zeXN0ZW1fc3RhdGljX2xpYnJhcmllcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX2Jsa2lkX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2Jsa2lkX2NmbGFncykgJChsaWJleHQyX2Jsa2lkX2NmbGFnc19saW51eCkgLWZuby1zdHJpY3QtYWxpYXNpbmcKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX2Jsa2lkCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsaWJleHQyX2Jsa2lkX3NyY19maWxlcykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChhZGRzdWZmaXggLWhvc3QsICQobGliZXh0Ml9ibGtpZF9zaGFyZWRfbGlicmFyaWVzKSkKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX2Jsa2lkX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2Jsa2lkX2NmbGFncykKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX2Jsa2lkLWhvc3QKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9IT1NUX1NIQVJFRF9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9saWIvYmxraWQvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YzODQ1MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSwyMjIgQEAKKyMgTWFrZWZpbGUgZm9yIGxpYmJsa2lkCisjCisjIENvcHlyaWdodCAoQykgMjAwMSBUaGVvZG9yZSBUcydvICh0eXRzb0BtaXQuZWR1KQorIworIyBUaGlzIGZpbGUgY2FuIGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorIyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uLy4uCitteV9kaXIgPSBsaWIvYmxraWQKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK2FsbDo6IAorCitTTUFOUEFHRVM9CWxpYmJsa2lkLjMKKworT0JKUz0gY2FjaGUubyBkZXYubyBkZXZuYW1lLm8gZGV2bm8ubyBnZXRzaXplLm8gbGxzZWVrLm8gcHJvYmUubyBcCisgcmVhZC5vIHJlc29sdmUubyBzYXZlLm8gdGFnLm8gdmVyc2lvbi5vIAorCitTUkNTPSAkKHNyY2RpcikvY2FjaGUuYyAkKHNyY2RpcikvZGV2LmMgJChzcmNkaXIpL2Rldm5hbWUuYyAkKHNyY2RpcikvZGV2bm8uYyBcCisgJChzcmNkaXIpL2dldHNpemUuYyAkKHNyY2RpcikvbGxzZWVrLmMgJChzcmNkaXIpL3Byb2JlLmMgXAorICQoc3JjZGlyKS9yZWFkLmMgJChzcmNkaXIpL3Jlc29sdmUuYyAkKHNyY2Rpcikvc2F2ZS5jICQoc3JjZGlyKS90YWcuYyBcCisgJChzcmNkaXIpL3ZlcnNpb24uYworCitIRklMRVNfSU49CWJsa2lkLmggYmxraWRfdHlwZXMuaAorCitMSUJSQVJZPSBsaWJibGtpZAorTElCRElSPSBibGtpZAorCitFTEZfVkVSU0lPTiA9IDEuMAorRUxGX1NPX1ZFUlNJT04gPSAxCitFTEZfSU1BR0UgPSBsaWJibGtpZAorRUxGX01ZRElSID0gYmxraWQKK0VMRl9JTlNUQUxMX0RJUiA9ICQocm9vdF9saWJkaXIpCitFTEZfT1RIRVJfTElCUyA9IC1sdXVpZAorCitCU0RMSUJfVkVSU0lPTiA9IDIuMAorQlNETElCX0lNQUdFID0gbGliYmxraWQKK0JTRExJQl9NWURJUiA9IGJsa2lkCitCU0RMSUJfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9FTEZACitATUFLRUZJTEVfQlNETElCQAorQE1BS0VGSUxFX1BST0ZJTEVACisKK0xJQlNfQkxLSUQ9CSQoU1RBVElDX0xJQkJMS0lEKSAkKFNUQVRJQ19MSUJVVUlEKQorREVQTElCU19CTEtJRD0JJChERVBTVEFUSUNfTElCQkxLSUQpICQoREVQU1RBVElDX0xJQlVVSUQpCisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NUTElCKSAtYyAkPCAtbyAkQAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorQFBST0ZJTEVfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TVExJQikgLWcgLXBnIC1vIHByb2ZpbGVkLyQqLm8gLWMgJDwKK0BFTEZfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TSExJQikgLWZQSUMgLXNoYXJlZCAtbyBlbGZzaGFyZWQvJCoubyAtYyAkPAorQEJTRExJQl9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NITElCKSAkKEJTRExJQl9QSUNfRkxBRykgLW8gcGljLyQqLm8gLWMgJDwKKworYWxsOjogJChTTUFOUEFHRVMpIGJsa2lkLnBjCisKK2Jsa2lkX3R5cGVzLmg6ICQoc3JjZGlyKS9ibGtpZF90eXBlcy5oLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJJChFKSAiCUNPTkZJRy5TVEFUVVMgJEAiCisJJChRKSBjZCAkKHRvcF9idWlsZGRpcik7IFwKKwkJQ09ORklHX0ZJTEVTPSQobXlfZGlyKS9ibGtpZF90eXBlcy5oIC4vY29uZmlnLnN0YXR1cworCitibGtpZC5oOiAkKHNyY2RpcikvYmxraWQuaC5pbgorCSQoRSkgIglDUCAkQCIKKwkkKFEpIGNwICQoc3JjZGlyKS9ibGtpZC5oLmluIGJsa2lkLmgKKworbGliYmxraWQuMzogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2xpYmJsa2lkLjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvbGliYmxraWQuMy5pbiBsaWJibGtpZC4zCisKK3RzdF9jYWNoZTogJChzcmNkaXIpL2NhY2hlLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9jYWNoZSAtRFRFU1RfUFJPR1JBTSAkKHNyY2RpcikvY2FjaGUuYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X2RldjogJChzcmNkaXIpL2Rldi5jICQoREVQTElCU19CTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfZGV2IC1EVEVTVF9QUk9HUkFNICQoc3JjZGlyKS9kZXYuYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X2Rldm5hbWU6ICQoc3JjZGlyKS9kZXZuYW1lLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9kZXZuYW1lIC1EVEVTVF9QUk9HUkFNICQoc3JjZGlyKS9kZXZuYW1lLmMgJChMSUJTX0JMS0lEKSAkKEFMTF9DRkxBR1MpCisKK3RzdF9kZXZubzogJChzcmNkaXIpL2Rldm5vLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9kZXZubyAtRFRFU1RfUFJPR1JBTSAkKHNyY2RpcikvZGV2bm8uYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X2dldHNpemU6ICQoc3JjZGlyKS9nZXRzaXplLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9nZXRzaXplIC1EVEVTVF9QUk9HUkFNICQoc3JjZGlyKS9nZXRzaXplLmMgJChMSUJTX0JMS0lEKSAkKEFMTF9DRkxBR1MpCisKK3RzdF9wcm9iZTogJChzcmNkaXIpL3Byb2JlLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9wcm9iZSAtRFRFU1RfUFJPR1JBTSAkKHNyY2RpcikvcHJvYmUuYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X3JlYWQ6ICQoc3JjZGlyKS9yZWFkLmMgJChERVBMSUJTX0JMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9yZWFkIC1EVEVTVF9QUk9HUkFNICQoc3JjZGlyKS9yZWFkLmMgJChMSUJTX0JMS0lEKSAkKEFMTF9DRkxBR1MpCisKK3RzdF9yZXNvbHZlOiAkKHNyY2RpcikvcmVzb2x2ZS5jICQoREVQTElCU19CTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfcmVzb2x2ZSAtRFRFU1RfUFJPR1JBTSAkKHNyY2RpcikvcmVzb2x2ZS5jICQoTElCU19CTEtJRCkgJChBTExfQ0ZMQUdTKQorCit0c3Rfc2F2ZTogJChzcmNkaXIpL3NhdmUuYyAkKERFUExJQlNfQkxLSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X3NhdmUgLURURVNUX1BST0dSQU0gJChzcmNkaXIpL3NhdmUuYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X3RhZzogJChzcmNkaXIpL3RhZy5jICQoREVQTElCU19CTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfdGFnIC1EVEVTVF9QUk9HUkFNICQoc3JjZGlyKS90YWcuYyAkKExJQlNfQkxLSUQpICQoQUxMX0NGTEFHUykKKwordHN0X3R5cGVzOiB0c3RfdHlwZXMubyBibGtpZF90eXBlcy5oIAorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF90eXBlcyAkKEFMTF9MREZMQUdTKSB0c3RfdHlwZXMubworCisuLi8uLi9taXNjL2Jsa2lkLm86ICQodG9wX3NyY2RpcikvbWlzYy9ibGtpZC5jIGJsa2lkLmgKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpIC1jICQodG9wX3NyY2RpcikvbWlzYy9ibGtpZC5jIFwKKwkJLW8gLi4vLi4vbWlzYy9ibGtpZC5vCisKK2Jsa2lkOiAuLi8uLi9taXNjL2Jsa2lkLm8gbGliYmxraWQuYSAkKERFUExJQlVVSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gYmxraWQgLi4vLi4vbWlzYy9ibGtpZC5vIGxpYmJsa2lkLmEgJChMSUJVVUlEKQorCit0ZXN0X3Byb2JlOiB0ZXN0X3Byb2JlLmluIE1ha2VmaWxlCisJJChFKSAiQ3JlYXRpbmcgdGVzdF9wcm9iZS4uLiIKKwkkKEUpICIjIS9iaW4vc2giID4gdGVzdF9wcm9iZQorCSQoRSkgIlNSQ0RJUj1Ac3JjZGlyQCIgPj4gdGVzdF9wcm9iZQorCSQoUSkgY2F0ICQoc3JjZGlyKS90ZXN0X3Byb2JlLmluID4+IHRlc3RfcHJvYmUKKwkkKFEpIGNobW9kICt4IHRlc3RfcHJvYmUKKworY2hlY2s6OiBhbGwgdHN0X2NhY2hlIHRzdF9kZXYgdHN0X2Rldm5hbWUgdHN0X2Rldm5vIHRzdF9nZXRzaXplIHRzdF9wcm9iZSBcCisgdHN0X3JlYWQgdHN0X3Jlc29sdmUgdHN0X3NhdmUgdHN0X3RhZyB0ZXN0X3Byb2JlIHRzdF90eXBlcworCS4vdGVzdF9wcm9iZQorCS4vdHN0X3R5cGVzCisKK2Jsa2lkLnBjOiAkKHNyY2RpcikvYmxraWQucGMuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwkkKEUpICIJQ09ORklHLlNUQVRVUyAkQCIKKwkkKFEpIGNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPWxpYi9ibGtpZC9ibGtpZC5wYyAuL2NvbmZpZy5zdGF0dXMKKworaW5zdGFsbGRpcnM6OgorCSQoRSkgIglNS0lOU1RBTExESVJTICQobGliZGlyKSAkKGluY2x1ZGVkaXIpL2Jsa2lkIgorCSQoUSkgJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChsaWJkaXIpIFwKKwkJJChERVNURElSKSQoaW5jbHVkZWRpcikvYmxraWQgJChERVNURElSKSQocGtnY29uZmlnZGlyKQorCitpbnN0YWxsOjogYWxsIGluc3RhbGxkaXJzIAorCSQoRSkgIglJTlNUQUxMX0RBVEEgJChsaWJkaXIpL2xpYmJsa2lkLmEiCisJJChRKSAkKElOU1RBTExfREFUQSkgbGliYmxraWQuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmJsa2lkLmEKKwktJChRKSAkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS9saWJibGtpZC5hCisJJChRKSAkKENITU9EKSAkKExJQk1PREUpICQoREVTVERJUikkKGxpYmRpcikvbGliYmxraWQuYQorCSQoUSkgc2V0IC1lOyBmb3IgaSBpbiAkKEhGSUxFU19JTik7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKGluY2x1ZGVkaXIpL2Jsa2lkLyQkaSI7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9ibGtpZC8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKFNNQU5QQUdFUyk7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKG1hbjNkaXIpLyQkaSI7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJChtYW4zZGlyKS8kJGk7IFwKKwlkb25lCisJJChFKSAiCUlOU1RBTExfREFUQSAkKHBrZ2NvbmZpZ2RpcikvYmxraWQucGMiCisJJChRKSAkKElOU1RBTExfREFUQSkgYmxraWQucGMgJChERVNURElSKSQocGtnY29uZmlnZGlyKS9ibGtpZC5wYworCit1bmluc3RhbGw6OgorCSQoUk0pIC1mICQoREVTVERJUikkKGxpYmRpcikvbGliYmxraWQuYSBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvYmxraWQucGMKKwkkKFJNKSAtcmYgJChERVNURElSKSQoaW5jbHVkZWRpcikvYmxraWQKKwlmb3IgaSBpbiAkKFNNQU5QQUdFUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQobWFuM2RpcikvJCRpOyBcCisJZG9uZQorCitjbGVhbjo6CisJJChSTSkgLWYgXCMqICoucyAqLm8gKi5vcmlnICouYSAqfiAqLmJhayB0c3RfY2FjaGUgdHN0X2RldiB0c3RfZGV2bmFtZSBcCisJCXRzdF9kZXZubyB0c3RfZ2V0c2l6ZSB0c3RfcHJvYmUgdHN0X3JlYWQgdHN0X3Jlc29sdmUgdHN0X3NhdmUgXAorCQl0c3RfdGFnIHRzdF90eXBlcyB0ZXN0cy8qLm91dCB0ZXN0cy8qLm9rIFwKKwkJdGVzdHMvKi5pbWcgcmVzdWx0cyB0ZXN0X3Byb2JlIGNvcmUgcHJvZmlsZWQvKiBcCisJCWJsa2lkLmggYmxraWRfdHlwZXMuaCAuLi9saWJibGtpZC5hIC4uL2xpYmJsa2lkX3AuYSBcCisJCSQoU01BTlBBR0VTKSBibGtpZCBibGtpZC5wYworCUBlY2hvIHJtZGlyIHRlc3RzL3RtcCB0ZXN0cworCUAocm1kaXIgdGVzdHMvdG1wIHRlc3RzIDI+IC9kZXYvbnVsbCA7IGV4aXQgMCkKKworbW9zdGx5Y2xlYW46OiBjbGVhbgorZGlzdGNsZWFuOjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlIGJsa2lkLnBjIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorCiskKE9CSlMpOiBzdWJkaXJzICQoSEZJTEVTX0lOKQorCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK2NhY2hlLm86ICQoc3JjZGlyKS9jYWNoZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvYmxraWRQLmggJChzcmNkaXIpL2xpc3QuaAorZGV2Lm86ICQoc3JjZGlyKS9kZXYuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK2Rldm5hbWUubzogJChzcmNkaXIpL2Rldm5hbWUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK2Rldm5vLm86ICQoc3JjZGlyKS9kZXZuby5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvYmxraWRQLmggJChzcmNkaXIpL2xpc3QuaAorZ2V0c2l6ZS5vOiAkKHNyY2RpcikvZ2V0c2l6ZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvYmxraWRQLmggJChzcmNkaXIpL2xpc3QuaAorbGxzZWVrLm86ICQoc3JjZGlyKS9sbHNlZWsuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK3Byb2JlLm86ICQoc3JjZGlyKS9wcm9iZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvYmxraWRQLmggJChzcmNkaXIpL2xpc3QuaCBcCisgJChzcmNkaXIpL3Byb2JlLmgKK3JlYWQubzogJChzcmNkaXIpL3JlYWQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK3Jlc29sdmUubzogJChzcmNkaXIpL3Jlc29sdmUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK3NhdmUubzogJChzcmNkaXIpL3NhdmUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2Jsa2lkUC5oICQoc3JjZGlyKS9saXN0LmgKK3RhZy5vOiAkKHNyY2RpcikvdGFnLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9ibGtpZFAuaCAkKHNyY2RpcikvbGlzdC5oCit2ZXJzaW9uLm86ICQoc3JjZGlyKS92ZXJzaW9uLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvdmVyc2lvbi5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkLmguaW4gYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFmMzA5OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvYmxraWQuaC5pbgpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIGJsa2lkLmggLSBJbnRlcmZhY2UgZm9yIGxpYmJsa2lkLCBhIGxpYnJhcnkgdG8gaWRlbnRpZnkgYmxvY2sgZGV2aWNlcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAzIFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0JMS0lEX0JMS0lEX0gKKyNkZWZpbmUgX0JMS0lEX0JMS0lEX0gKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGJsa2lkL2Jsa2lkX3R5cGVzLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBCTEtJRF9WRVJTSU9OCSIxLjAuMCIKKyNkZWZpbmUgQkxLSURfREFURQkiMTItRmViLTIwMDMiCisKK3R5cGVkZWYgc3RydWN0IGJsa2lkX3N0cnVjdF9kZXYgKmJsa2lkX2RldjsKK3R5cGVkZWYgc3RydWN0IGJsa2lkX3N0cnVjdF9jYWNoZSAqYmxraWRfY2FjaGU7Cit0eXBlZGVmIF9fczY0IGJsa2lkX2xvZmZfdDsKKwordHlwZWRlZiBzdHJ1Y3QgYmxraWRfc3RydWN0X3RhZ19pdGVyYXRlICpibGtpZF90YWdfaXRlcmF0ZTsKK3R5cGVkZWYgc3RydWN0IGJsa2lkX3N0cnVjdF9kZXZfaXRlcmF0ZSAqYmxraWRfZGV2X2l0ZXJhdGU7CisKKy8qCisgKiBGbGFncyBmb3IgYmxraWRfZ2V0X2RldgorICoKKyAqIEJMS0lEX0RFVl9DUkVBVEUJQ3JlYXRlIGFuIGVtcHR5IGRldmljZSBzdHJ1Y3R1cmUgaWYgbm90IGZvdW5kCisgKiAJCQlpbiB0aGUgY2FjaGUuCisgKiBCTEtJRF9ERVZfVkVSSUZZCU1ha2Ugc3VyZSB0aGUgZGV2aWNlIHN0cnVjdHVyZSBjb3JyZXNwb25kcworICogCQkJd2l0aCByZWFsaXR5LgorICogQkxLSURfREVWX0ZJTkQJSnVzdCBsb29rIHVwIGEgZGV2aWNlIGVudHJ5LCBhbmQgcmV0dXJuIE5VTEwKKyAqIAkJCWlmIGl0IGlzIG5vdCBmb3VuZC4KKyAqIEJMS0lEX0RFVl9OT1JNQUwJR2V0IGEgdmFsaWQgZGV2aWNlIHN0cnVjdHVyZSwgZWl0aGVyIGZyb20gdGhlCisgKiAJCQljYWNoZSBvciBieSBwcm9iaW5nIHRoZSBkZXZpY2UuCisgKi8KKyNkZWZpbmUgQkxLSURfREVWX0ZJTkQJCTB4MDAwMAorI2RlZmluZSBCTEtJRF9ERVZfQ1JFQVRFCTB4MDAwMQorI2RlZmluZSBCTEtJRF9ERVZfVkVSSUZZCTB4MDAwMgorI2RlZmluZSBCTEtJRF9ERVZfTk9STUFMCShCTEtJRF9ERVZfQ1JFQVRFIHwgQkxLSURfREVWX1ZFUklGWSkKKworLyogY2FjaGUuYyAqLworZXh0ZXJuIHZvaWQgYmxraWRfcHV0X2NhY2hlKGJsa2lkX2NhY2hlIGNhY2hlKTsKK2V4dGVybiBpbnQgYmxraWRfZ2V0X2NhY2hlKGJsa2lkX2NhY2hlICpjYWNoZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworZXh0ZXJuIHZvaWQgYmxraWRfZ2NfY2FjaGUoYmxraWRfY2FjaGUgY2FjaGUpOworCisvKiBkZXYuYyAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKmJsa2lkX2Rldl9kZXZuYW1lKGJsa2lkX2RldiBkZXYpOworCitleHRlcm4gYmxraWRfZGV2X2l0ZXJhdGUgYmxraWRfZGV2X2l0ZXJhdGVfYmVnaW4oYmxraWRfY2FjaGUgY2FjaGUpOworZXh0ZXJuIGludCBibGtpZF9kZXZfc2V0X3NlYXJjaChibGtpZF9kZXZfaXRlcmF0ZSBpdGVyLAorCQkJCWNoYXIgKnNlYXJjaF90eXBlLCBjaGFyICpzZWFyY2hfdmFsdWUpOworZXh0ZXJuIGludCBibGtpZF9kZXZfbmV4dChibGtpZF9kZXZfaXRlcmF0ZSBpdGVyYXRlLCBibGtpZF9kZXYgKmRldik7CitleHRlcm4gdm9pZCBibGtpZF9kZXZfaXRlcmF0ZV9lbmQoYmxraWRfZGV2X2l0ZXJhdGUgaXRlcmF0ZSk7CisKKy8qIGRldm5vLmMgKi8KK2V4dGVybiBjaGFyICpibGtpZF9kZXZub190b19kZXZuYW1lKGRldl90IGRldm5vKTsKKworLyogZGV2bmFtZS5jICovCitleHRlcm4gaW50IGJsa2lkX3Byb2JlX2FsbChibGtpZF9jYWNoZSBjYWNoZSk7CitleHRlcm4gaW50IGJsa2lkX3Byb2JlX2FsbF9uZXcoYmxraWRfY2FjaGUgY2FjaGUpOworZXh0ZXJuIGJsa2lkX2RldiBibGtpZF9nZXRfZGV2KGJsa2lkX2NhY2hlIGNhY2hlLCBjb25zdCBjaGFyICpkZXZuYW1lLAorCQkJICAgICAgIGludCBmbGFncyk7CisKKy8qIGdldHNpemUuYyAqLworZXh0ZXJuIGJsa2lkX2xvZmZfdCBibGtpZF9nZXRfZGV2X3NpemUoaW50IGZkKTsKKworLyogcHJvYmUuYyAqLworaW50IGJsa2lkX2tub3duX2ZzdHlwZShjb25zdCBjaGFyICpmc3R5cGUpOworZXh0ZXJuIGJsa2lkX2RldiBibGtpZF92ZXJpZnkoYmxraWRfY2FjaGUgY2FjaGUsIGJsa2lkX2RldiBkZXYpOworCisvKiByZWFkLmMgKi8KKworLyogcmVzb2x2ZS5jICovCitleHRlcm4gY2hhciAqYmxraWRfZ2V0X3RhZ192YWx1ZShibGtpZF9jYWNoZSBjYWNoZSwgY29uc3QgY2hhciAqdGFnbmFtZSwKKwkJCQkgICAgICAgY29uc3QgY2hhciAqZGV2bmFtZSk7CitleHRlcm4gY2hhciAqYmxraWRfZ2V0X2Rldm5hbWUoYmxraWRfY2FjaGUgY2FjaGUsIGNvbnN0IGNoYXIgKnRva2VuLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlKTsKKworLyogdGFnLmMgKi8KK2V4dGVybiBibGtpZF90YWdfaXRlcmF0ZSBibGtpZF90YWdfaXRlcmF0ZV9iZWdpbihibGtpZF9kZXYgZGV2KTsKK2V4dGVybiBpbnQgYmxraWRfdGFnX25leHQoYmxraWRfdGFnX2l0ZXJhdGUgaXRlcmF0ZSwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKip0eXBlLCBjb25zdCBjaGFyICoqdmFsdWUpOworZXh0ZXJuIHZvaWQgYmxraWRfdGFnX2l0ZXJhdGVfZW5kKGJsa2lkX3RhZ19pdGVyYXRlIGl0ZXJhdGUpOworZXh0ZXJuIGludCBibGtpZF9kZXZfaGFzX3RhZyhibGtpZF9kZXYgZGV2LCBjb25zdCBjaGFyICp0eXBlLAorCQkJICAgICBjb25zdCBjaGFyICp2YWx1ZSk7CitleHRlcm4gYmxraWRfZGV2IGJsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnKGJsa2lkX2NhY2hlIGNhY2hlLAorCQkJCQkgY29uc3QgY2hhciAqdHlwZSwKKwkJCQkJIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2V4dGVybiBpbnQgYmxraWRfcGFyc2VfdGFnX3N0cmluZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqKnJldF90eXBlLAorCQkJCSAgY2hhciAqKnJldF92YWwpOworCisvKiB2ZXJzaW9uLmMgKi8KK2V4dGVybiBpbnQgYmxraWRfcGFyc2VfdmVyc2lvbl9zdHJpbmcoY29uc3QgY2hhciAqdmVyX3N0cmluZyk7CitleHRlcm4gaW50IGJsa2lkX2dldF9saWJyYXJ5X3ZlcnNpb24oY29uc3QgY2hhciAqKnZlcl9zdHJpbmcsCisJCQkJICAgICBjb25zdCBjaGFyICoqZGF0ZV9zdHJpbmcpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX0JMS0lEX0JMS0lEX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvYmxraWQucGMuaW4gYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwOGZlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkLnBjLmluCkBAIC0wLDAgKzEsMTEgQEAKK3ByZWZpeD1AcHJlZml4QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorCitOYW1lOiBibGtpZAorRGVzY3JpcHRpb246IEJsb2NrIGRldmljZSBpZCBsaWJyYXJ5CitWZXJzaW9uOiBARTJGU1BST0dTX1ZFUlNJT05ACitSZXF1aXJlcy5wcml2YXRlOiB1dWlkCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9ibGtpZCAtSSR7aW5jbHVkZWRpcn0KK0xpYnM6IC1MJHtsaWJkaXJ9IC1sYmxraWQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvYmxraWRQLmggYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkUC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MGJmZWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Jsa2lkUC5oCkBAIC0wLDAgKzEsMTg5IEBACisvKgorICogYmxraWRQLmggLSBJbnRlcm5hbCBpbnRlcmZhY2VzIGZvciBsaWJibGtpZAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAzIFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0JMS0lEX0JMS0lEUF9ICisjZGVmaW5lIF9CTEtJRF9CTEtJRFBfSAorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgPGJsa2lkL2Jsa2lkLmg+CisKKyNpbmNsdWRlIDxibGtpZC9saXN0Lmg+CisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBfX0JMS0lEX0FUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgX19CTEtJRF9BVFRSKHgpCisjZW5kaWYKKworCisvKgorICogVGhpcyBkZXNjcmliZXMgdGhlIGF0dHJpYnV0ZXMgb2YgYSBzcGVjaWZpYyBkZXZpY2UuCisgKiBXZSBjYW4gdHJhdmVyc2UgYWxsIG9mIHRoZSB0YWdzIGJ5IGJpZF90YWdzIChsaW5raW5nIHRvIHRoZSB0YWcgYml0X25hbWVzKS4KKyAqIFRoZSBiaWRfbGFiZWwgYW5kIGJpZF91dWlkIGZpZWxkcyBhcmUgc2hvcnRjdXRzIHRvIHRoZSBMQUJFTCBhbmQgVVVJRCB0YWcKKyAqIHZhbHVlcywgaWYgdGhleSBleGlzdC4KKyAqLworc3RydWN0IGJsa2lkX3N0cnVjdF9kZXYKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkCWJpZF9kZXZzOwkvKiBBbGwgZGV2aWNlcyBpbiB0aGUgY2FjaGUgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkCWJpZF90YWdzOwkvKiBBbGwgdGFncyBmb3IgdGhpcyBkZXZpY2UgKi8KKwlibGtpZF9jYWNoZQkJYmlkX2NhY2hlOwkvKiBEZXYgYmVsb25ncyB0byB0aGlzIGNhY2hlICovCisJY2hhcgkJCSpiaWRfbmFtZTsJLyogRGV2aWNlIGlub2RlIHBhdGhuYW1lICovCisJY2hhcgkJCSpiaWRfdHlwZTsJLyogUHJlZmVycmVkIGRldmljZSBUWVBFICovCisJaW50CQkJYmlkX3ByaTsJLyogRGV2aWNlIHByaW9yaXR5ICovCisJZGV2X3QJCQliaWRfZGV2bm87CS8qIERldmljZSBtYWpvci9taW5vciBudW1iZXIgKi8KKwl0aW1lX3QJCQliaWRfdGltZTsJLyogTGFzdCB1cGRhdGUgdGltZSBvZiBkZXZpY2UgKi8KKwl1bnNpZ25lZCBpbnQJCWJpZF9mbGFnczsJLyogRGV2aWNlIHN0YXR1cyBiaXRmbGFncyAqLworCWNoYXIJCQkqYmlkX2xhYmVsOwkvKiBTaG9ydGN1dCB0byBkZXZpY2UgTEFCRUwgKi8KKwljaGFyCQkJKmJpZF91dWlkOwkvKiBTaG9ydGN1dCB0byBiaW5hcnkgVVVJRCAqLworfTsKKworI2RlZmluZSBCTEtJRF9CSURfRkxfVkVSSUZJRUQJMHgwMDAxCS8qIERldmljZSBkYXRhIHZhbGlkYXRlZCBmcm9tIGRpc2sgKi8KKyNkZWZpbmUgQkxLSURfQklEX0ZMX0lOVkFMSUQJMHgwMDA0CS8qIERldmljZSBpcyBpbnZhbGlkICovCisKKy8qCisgKiBFYWNoIHRhZyBkZWZpbmVzIGEgTkFNRT12YWx1ZSBwYWlyIGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlLiAgVGhlIHRhZ3MKKyAqIGFyZSBsaW5rZWQgdmlhIGJpdF9uYW1lcyBmb3IgYSBzaW5nbGUgZGV2aWNlLCBzbyB0aGF0IHRyYXZlcnNpbmcgdGhlCisgKiBuYW1lcyBsaXN0IHdpbGwgZ2V0IHlvdSBhIGxpc3Qgb2YgYWxsIHRhZ3MgYXNzb2NpYXRlZCB3aXRoIGEgZGV2aWNlLgorICogVGhleSBhcmUgYWxzbyBsaW5rZWQgdmlhIGJpdF92YWx1ZXMgZm9yIGFsbCBkZXZpY2VzLCBzbyBvbmUgY2FuIGVhc2lseQorICogc2VhcmNoIGFsbCB0YWdzIHdpdGggYSBnaXZlbiBOQU1FIGZvciBhIHNwZWNpZmljIHZhbHVlLgorICovCitzdHJ1Y3QgYmxraWRfc3RydWN0X3RhZworeworCXN0cnVjdCBsaXN0X2hlYWQJYml0X3RhZ3M7CS8qIEFsbCB0YWdzIGZvciB0aGlzIGRldmljZSAqLworCXN0cnVjdCBsaXN0X2hlYWQJYml0X25hbWVzOwkvKiBBbGwgdGFncyB3aXRoIGdpdmVuIE5BTUUgKi8KKwljaGFyCQkJKmJpdF9uYW1lOwkvKiBOQU1FIG9mIHRhZyAoc2hhcmVkKSAqLworCWNoYXIJCQkqYml0X3ZhbDsJLyogdmFsdWUgb2YgdGFnICovCisJYmxraWRfZGV2CQliaXRfZGV2OwkvKiBwb2ludGVyIHRvIGRldmljZSAqLworfTsKK3R5cGVkZWYgc3RydWN0IGJsa2lkX3N0cnVjdF90YWcgKmJsa2lkX3RhZzsKKworLyoKKyAqIE1pbmltdW0gbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBkZXZpY2UgcHJvYmVzLCBldmVuIHdoZW4gcmVhZGluZworICogZnJvbSB0aGUgY2FjaGUuICBUaGlzIGlzIHRvIGF2b2lkIHJlLXByb2JpbmcgYWxsIGRldmljZXMgd2hpY2ggd2VyZQorICoganVzdCBwcm9iZWQgYnkgYW5vdGhlciBwcm9ncmFtIHRoYXQgZG9lcyBub3Qgc2hhcmUgdGhlIGNhY2hlLgorICovCisjZGVmaW5lIEJMS0lEX1BST0JFX01JTgkJMgorCisvKgorICogVGltZSBpbiBzZWNvbmRzIGFuIGVudHJ5IHJlbWFpbnMgdmVyaWZpZWQgaW4gdGhlIGluLW1lbW9yeSBjYWNoZQorICogYmVmb3JlIGJlaW5nIHJldmVyaWZpZWQgKGluIGNhc2Ugb2YgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcyB0aGF0CisgKiBrZWVwIGEgY2FjaGUgaW4gbWVtb3J5IGFuZCBjb250aW51ZSB0byB1c2UgaXQgZm9yIGEgbG9uZyB0aW1lKS4KKyAqLworI2RlZmluZSBCTEtJRF9QUk9CRV9JTlRFUlZBTAkyMDAKKworLyogVGhpcyBkZXNjcmliZXMgYW4gZW50aXJlIGJsa2lkIGNhY2hlIGZpbGUgYW5kIHByb2JlZCBkZXZpY2VzLgorICogV2UgY2FuIHRyYXZlcnNlIGFsbCBvZiB0aGUgZm91bmQgZGV2aWNlcyB2aWEgYmljX2xpc3QuCisgKiBXZSBjYW4gdHJhdmVyc2UgYWxsIG9mIHRoZSB0YWcgdHlwZXMgYnkgYmljX3RhZ3MsIHdoaWNoIGhvbGQgZW1wdHkgdGFncworICogZm9yIGVhY2ggdGFnIHR5cGUuICBUaG9zZSB0YWdzIGNhbiBiZSB1c2VkIGFzIGxpc3RfaGVhZHMgZm9yIGl0ZXJhdGluZworICogdGhyb3VnaCBhbGwgZGV2aWNlcyB3aXRoIGEgc3BlY2lmaWMgdGFnIHR5cGUgKGUuZy4gTEFCRUwpLgorICovCitzdHJ1Y3QgYmxraWRfc3RydWN0X2NhY2hlCit7CisJc3RydWN0IGxpc3RfaGVhZAliaWNfZGV2czsJLyogTGlzdCBoZWFkIG9mIGFsbCBkZXZpY2VzICovCisJc3RydWN0IGxpc3RfaGVhZAliaWNfdGFnczsJLyogTGlzdCBoZWFkIG9mIGFsbCB0YWcgdHlwZXMgKi8KKwl0aW1lX3QJCQliaWNfdGltZTsJLyogTGFzdCBwcm9iZSB0aW1lICovCisJdGltZV90CQkJYmljX2Z0aW1lOyAJLyogTW9kIHRpbWUgb2YgdGhlIGNhY2hlZmlsZSAqLworCXVuc2lnbmVkIGludAkJYmljX2ZsYWdzOwkvKiBTdGF0dXMgZmxhZ3Mgb2YgdGhlIGNhY2hlICovCisJY2hhcgkJCSpiaWNfZmlsZW5hbWU7CS8qIGZpbGVuYW1lIG9mIGNhY2hlICovCit9OworCisjZGVmaW5lIEJMS0lEX0JJQ19GTF9QUk9CRUQJMHgwMDAyCS8qIFdlIHByb2JlZCAvcHJvYy9wYXJ0aXRpb24gZGV2aWNlcyAqLworI2RlZmluZSBCTEtJRF9CSUNfRkxfQ0hBTkdFRAkweDAwMDQJLyogQ2FjaGUgaGFzIGNoYW5nZWQgZnJvbSBkaXNrICovCisKK2V4dGVybiBjaGFyICpibGtpZF9zdHJkdXAoY29uc3QgY2hhciAqcyk7CitleHRlcm4gY2hhciAqYmxraWRfc3RybmR1cChjb25zdCBjaGFyICpzLCBjb25zdCBpbnQgbGVuZ3RoKTsKKworI2RlZmluZSBCTEtJRF9DQUNIRV9GSUxFICIvZXRjL2Jsa2lkLnRhYiIKKworI2RlZmluZSBCTEtJRF9FUlJfSU8JIDUKKyNkZWZpbmUgQkxLSURfRVJSX1BST0MJIDkKKyNkZWZpbmUgQkxLSURfRVJSX01FTQkxMgorI2RlZmluZSBCTEtJRF9FUlJfQ0FDSEUJMTQKKyNkZWZpbmUgQkxLSURfRVJSX0RFVgkxOQorI2RlZmluZSBCTEtJRF9FUlJfUEFSQU0JMjIKKyNkZWZpbmUgQkxLSURfRVJSX0JJRwkyNworCisvKgorICogUHJpb3JpdHkgc2V0dGluZ3MgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiBkZXZpY2VzCisgKi8KKyNkZWZpbmUgQkxLSURfUFJJX0RNCTQwCisjZGVmaW5lIEJMS0lEX1BSSV9FVk1TCTMwCisjZGVmaW5lIEJMS0lEX1BSSV9MVk0JMjAKKyNkZWZpbmUgQkxLSURfUFJJX01ECTEwCisKKyNpZiBkZWZpbmVkKFRFU1RfUFJPR1JBTSkgJiYgIWRlZmluZWQoQ09ORklHX0JMS0lEX0RFQlVHKQorI2RlZmluZSBDT05GSUdfQkxLSURfREVCVUcKKyNlbmRpZgorCisjZGVmaW5lIERFQlVHX0NBQ0hFCTB4MDAwMQorI2RlZmluZSBERUJVR19EVU1QCTB4MDAwMgorI2RlZmluZSBERUJVR19ERVYJMHgwMDA0CisjZGVmaW5lIERFQlVHX0RFVk5BTUUJMHgwMDA4CisjZGVmaW5lIERFQlVHX0RFVk5PCTB4MDAxMAorI2RlZmluZSBERUJVR19QUk9CRQkweDAwMjAKKyNkZWZpbmUgREVCVUdfUkVBRAkweDAwNDAKKyNkZWZpbmUgREVCVUdfUkVTT0xWRQkweDAwODAKKyNkZWZpbmUgREVCVUdfU0FWRQkweDAxMDAKKyNkZWZpbmUgREVCVUdfVEFHCTB4MDIwMAorI2RlZmluZSBERUJVR19JTklUCTB4ODAwMAorI2RlZmluZSBERUJVR19BTEwJMHhGRkZGCisKKyNpZmRlZiBDT05GSUdfQkxLSURfREVCVUcKKyNpbmNsdWRlIDxzdGRpby5oPgorZXh0ZXJuIGludAlibGtpZF9kZWJ1Z19tYXNrOworI2RlZmluZSBEQkcobSx4KQlpZiAoKG0pICYgYmxraWRfZGVidWdfbWFzaykgeDsKKyNlbHNlCisjZGVmaW5lIERCRyhtLHgpCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19CTEtJRF9ERUJVRworZXh0ZXJuIHZvaWQgYmxraWRfZGVidWdfZHVtcF9kZXYoYmxraWRfZGV2IGRldik7CitleHRlcm4gdm9pZCBibGtpZF9kZWJ1Z19kdW1wX3RhZyhibGtpZF90YWcgdGFnKTsKKyNlbmRpZgorCisvKiBkZXZuby5jICovCitzdHJ1Y3QgZGlyX2xpc3QgeworCWNoYXIJKm5hbWU7CisJc3RydWN0IGRpcl9saXN0ICpuZXh0OworfTsKK2V4dGVybiB2b2lkIGJsa2lkX19zY2FuX2Rpcihjb25zdCBjaGFyICosIGRldl90LCBzdHJ1Y3QgZGlyX2xpc3QgKiosIGNoYXIgKiopOworCisvKiBsc2Vlay5jICovCitleHRlcm4gYmxraWRfbG9mZl90IGJsa2lkX2xsc2VlayhpbnQgZmQsIGJsa2lkX2xvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpOworCisvKiByZWFkLmMgKi8KK2V4dGVybiB2b2lkIGJsa2lkX3JlYWRfY2FjaGUoYmxraWRfY2FjaGUgY2FjaGUpOworCisvKiBzYXZlLmMgKi8KK2V4dGVybiBpbnQgYmxraWRfZmx1c2hfY2FjaGUoYmxraWRfY2FjaGUgY2FjaGUpOworCisvKgorICogRnVuY3Rpb25zIHRvIGNyZWF0ZSBhbmQgZmluZCBhIHNwZWNpZmljIHRhZyB0eXBlOiB0YWcuYworICovCitleHRlcm4gdm9pZCBibGtpZF9mcmVlX3RhZyhibGtpZF90YWcgdGFnKTsKK2V4dGVybiBibGtpZF90YWcgYmxraWRfZmluZF90YWdfZGV2KGJsa2lkX2RldiBkZXYsIGNvbnN0IGNoYXIgKnR5cGUpOworZXh0ZXJuIGludCBibGtpZF9zZXRfdGFnKGJsa2lkX2RldiBkZXYsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgY29uc3QgY2hhciAqdmFsdWUsIGNvbnN0IGludCB2bGVuZ3RoKTsKKworLyoKKyAqIEZ1bmN0aW9ucyB0byBjcmVhdGUgYW5kIGZpbmQgYSBzcGVjaWZpYyB0YWcgdHlwZTogZGV2LmMKKyAqLworZXh0ZXJuIGJsa2lkX2RldiBibGtpZF9uZXdfZGV2KHZvaWQpOworZXh0ZXJuIHZvaWQgYmxraWRfZnJlZV9kZXYoYmxraWRfZGV2IGRldik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfQkxLSURfQkxLSURQX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvYmxraWRfdHlwZXMuaC5pbiBiL2UyZnNwcm9ncy9saWIvYmxraWQvYmxraWRfdHlwZXMuaC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGM4MWQwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9ibGtpZF90eXBlcy5oLmluCkBAIC0wLDAgKzEsMTY3IEBACisvKiAKKyAqIElmIGxpbnV4L3R5cGVzLmggaXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkLCBhc3N1bWUgaXQgaGFzIGRlZmluZWQKKyAqIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gIChjcm9zcyBmaW5nZXJzKSAgT3RoZXIgaGVhZGVyIGZpbGVzIG1heSBoYXZlIAorICogYWxzbyBkZWZpbmVkIHRoZSB0eXBlcyB0aGF0IHdlIG5lZWQuCisgKi8KKyNpZiAoIWRlZmluZWQoX0xJTlVYX1RZUEVTX0gpICYmICFkZWZpbmVkKF9CTEtJRF9UWVBFU19IKSAmJiBcCisJIWRlZmluZWQoX0VYVDJfVFlQRVNfSCkpCisjZGVmaW5lIF9CTEtJRF9UWVBFU19ICisKK0BBU01fVFlQRVNfSEVBREVSQAorCisjaWZuZGVmIEhBVkVfX19VOAorI2RlZmluZSBIQVZFX19fVTgKKyNpZmRlZiBfX1U4X1RZUEVERUYKK3R5cGVkZWYgX19VOF9UWVBFREVGIF9fdTg7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7CisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX19fVTggKi8KKworI2lmbmRlZiBIQVZFX19fUzgKKyNkZWZpbmUgSEFWRV9fX1M4CisjaWZkZWYgX19TOF9UWVBFREVGCit0eXBlZGVmIF9fUzhfVFlQRURFRiBfX3M4OworI2Vsc2UKK3R5cGVkZWYgc2lnbmVkIGNoYXIgX19zODsKKyNlbmRpZgorI2VuZGlmIC8qIEhBVkVfX19TOCAqLworCisjaWZuZGVmIEhBVkVfX19VMTYKKyNkZWZpbmUgSEFWRV9fX1UxNgorI2lmZGVmIF9fVTE2X1RZUEVERUYKK3R5cGVkZWYgX19VMTZfVFlQRURFRiBfX3UxNjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfSU5UQCA9PSAyKQordHlwZWRlZgl1bnNpZ25lZCBpbnQJX191MTY7CisjZWxzZQorI2lmIChAU0laRU9GX1NIT1JUQCA9PSAyKQordHlwZWRlZgl1bnNpZ25lZCBzaG9ydAlfX3UxNjsKKyNlbHNlCisjdW5kZWYgSEFWRV9fX1UxNgorICA/PT1lcnJvcjogdW5kZWZpbmVkIDE2IGJpdCB0eXBlCisjZW5kaWYgLyogU0laRU9GX1NIT1JUID09IDIgKi8KKyNlbmRpZiAvKiBTSVpFT0ZfSU5UID09IDIgKi8KKyNlbmRpZiAvKiBfX1UxNl9UWVBFREVGICovCisjZW5kaWYgLyogSEFWRV9fX1UxNiAqLworCisjaWZuZGVmIEhBVkVfX19TMTYKKyNkZWZpbmUgSEFWRV9fX1MxNgorI2lmZGVmIF9fUzE2X1RZUEVERUYKK3R5cGVkZWYgX19TMTZfVFlQRURFRiBfX3MxNjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfSU5UQCA9PSAyKQordHlwZWRlZglpbnQJCV9fczE2OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9TSE9SVEAgPT0gMikKK3R5cGVkZWYJc2hvcnQJCV9fczE2OworI2Vsc2UKKyN1bmRlZiBIQVZFX19fUzE2CisgID89PWVycm9yOiB1bmRlZmluZWQgMTYgYml0IHR5cGUKKyNlbmRpZiAvKiBTSVpFT0ZfU0hPUlQgPT0gMiAqLworI2VuZGlmIC8qIFNJWkVPRl9JTlQgPT0gMiAqLworI2VuZGlmIC8qIF9fUzE2X1RZUEVERUYgKi8KKyNlbmRpZiAvKiBIQVZFX19fUzE2ICovCisKKyNpZm5kZWYgSEFWRV9fX1UzMgorI2RlZmluZSBIQVZFX19fVTMyCisjaWZkZWYgX19VMzJfVFlQRURFRgordHlwZWRlZiBfX1UzMl9UWVBFREVGIF9fdTMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9JTlRAID09IDQpCit0eXBlZGVmCXVuc2lnbmVkIGludAlfX3UzMjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfTE9OR0AgPT0gNCkKK3R5cGVkZWYJdW5zaWduZWQgbG9uZwlfX3UzMjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfU0hPUlRAID09IDQpCit0eXBlZGVmCXVuc2lnbmVkIHNob3J0CV9fdTMyOworI2Vsc2UKKyN1bmRlZiBIQVZFX19fVTMyCisgPz09IGVycm9yOiB1bmRlZmluZWQgMzIgYml0IHR5cGUKKyNlbmRpZiAvKiBTSVpFT0ZfU0hPUlQgPT0gNCAqLworI2VuZGlmIC8qIFNJWkVPRl9MT05HID09IDQgKi8KKyNlbmRpZiAvKiBTSVpFT0ZfSU5UID09IDQgKi8KKyNlbmRpZiAvKiBfX1UzMl9UWVBFREVGICovCisjZW5kaWYgLyogSEFWRV9fX1UzMiAqLworCisjaWZuZGVmIEhBVkVfX19TMzIKKyNkZWZpbmUgSEFWRV9fX1MzMgorI2lmZGVmIF9fUzMyX1RZUEVERUYKK3R5cGVkZWYgX19TMzJfVFlQRURFRiBfX3MzMjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfSU5UQCA9PSA0KQordHlwZWRlZglpbnQJCV9fczMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9MT05HQCA9PSA0KQordHlwZWRlZglsb25nCQlfX3MzMjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfU0hPUlRAID09IDQpCit0eXBlZGVmCXNob3J0CQlfX3MzMjsKKyNlbHNlCisjdW5kZWYgSEFWRV9fX1MzMgorID89PSBlcnJvcjogdW5kZWZpbmVkIDMyIGJpdCB0eXBlCisjZW5kaWYgLyogU0laRU9GX1NIT1JUID09IDQgKi8KKyNlbmRpZiAvKiBTSVpFT0ZfTE9ORyA9PSA0ICovCisjZW5kaWYgLyogU0laRU9GX0lOVCA9PSA0ICovCisjZW5kaWYgLyogX19TMzJfVFlQRURFRiAqLworI2VuZGlmIC8qIEhBVkVfX19TMzIgKi8KKworI2lmbmRlZiBIQVZFX19fVTY0CisjZGVmaW5lIEhBVkVfX19VNjQKKyNpZmRlZiBfX1U2NF9UWVBFREVGCit0eXBlZGVmIF9fVTY0X1RZUEVERUYgX191NjQ7CisjZWxzZQorI2lmIChAU0laRU9GX0lOVEAgPT0gOCkKK3R5cGVkZWYgdW5zaWduZWQgaW50CV9fdTY0OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9MT05HX0xPTkdAID09IDgpCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZwlfX3U2NDsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfTE9OR0AgPT0gOCkKK3R5cGVkZWYgdW5zaWduZWQgbG9uZwlfX3U2NDsKKyNlbHNlCisjdW5kZWYgSEFWRV9fX1U2NAorID89PSBlcnJvcjogdW5kZWZpbmVkIDY0IGJpdCB0eXBlCisjZW5kaWYgLyogU0laRU9GX0xPTkcgPT0gOCAqLworI2VuZGlmIC8qIFNJWkVPRl9MT05HX0xPTkcgPT0gOCAqLworI2VuZGlmIC8qIFNJWkVPRl9JTlQgPT0gOCAqLworI2VuZGlmIC8qIF9fVTY0X1RZUEVERUYgKi8KKyNlbmRpZiAvKiBIQVZFX19fVTY0ICovCisKKyNpZm5kZWYgSEFWRV9fX1M2NAorI2RlZmluZSBIQVZFX19fUzY0CisjaWZkZWYgX19TNjRfVFlQRURFRgordHlwZWRlZiBfX1M2NF9UWVBFREVGIF9fczY0OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9JTlRAID09IDgpCit0eXBlZGVmIGludAkJX19zNjQ7CisjZWxzZQorI2lmIChAU0laRU9GX0xPTkdfTE9OR0AgPT0gOCkKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQordHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZwlfX3M2NDsKKyNlbHNlCit0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcJX19zNjQ7CisjZW5kaWYgLyogX19HTlVDX18gKi8KKyNlbHNlCisjaWYgKEBTSVpFT0ZfTE9OR0AgPT0gOCkKK3R5cGVkZWYgbG9uZwkJX19zNjQ7CisjZWxzZQorI3VuZGVmIEhBVkVfX19TNjQKKyA/PT0gZXJyb3I6IHVuZGVmaW5lZCA2NCBiaXQgdHlwZQorI2VuZGlmIC8qIFNJWkVPRl9MT05HID09IDggKi8KKyNlbmRpZiAvKiBTSVpFT0ZfTE9OR19MT05HID09IDggKi8KKyNlbmRpZiAvKiBTSVpFT0ZfSU5UID09IDggKi8KKyNlbmRpZiAvKiBfX1M2NF9UWVBFREVGICovCisjZW5kaWYgLyogSEFWRV9fX1M2NCAqLworCisjdW5kZWYgX19TOF9UWVBFREVGCisjdW5kZWYgX19VOF9UWVBFREVGCisjdW5kZWYgX19TMTZfVFlQRURFRgorI3VuZGVmIF9fVTE2X1RZUEVERUYKKyN1bmRlZiBfX1MzMl9UWVBFREVGCisjdW5kZWYgX19VMzJfVFlQRURFRgorI3VuZGVmIF9fUzY0X1RZUEVERUYKKyN1bmRlZiBfX1U2NF9UWVBFREVGCisKKyNlbmRpZiAvKiBfKl9UWVBFU19IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL2NhY2hlLmMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2NhY2hlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBjODA4OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvY2FjaGUuYwpAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIGNhY2hlLmMgLSBhbGxvY2F0aW9uL2luaXRpYWxpemF0aW9uL2ZyZWUgcm91dGluZXMgZm9yIGNhY2hlCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIEFuZHJlYXMgRGlsZ2VyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX1NZU19QUkNUTF9ICisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjZWxzZQorI2RlZmluZSBQUl9HRVRfRFVNUEFCTEUgMworI2VuZGlmCisjaWYgKCFkZWZpbmVkKEhBVkVfUFJDVEwpICYmIGRlZmluZWQobGludXgpKQorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaW5jbHVkZSAiYmxraWRQLmgiCisKK2ludCBibGtpZF9kZWJ1Z19tYXNrID0gMDsKKworCitzdGF0aWMgY2hhciAqc2FmZV9nZXRlbnYoY29uc3QgY2hhciAqYXJnKQoreworCWlmICgoZ2V0dWlkKCkgIT0gZ2V0ZXVpZCgpKSB8fCAoZ2V0Z2lkKCkgIT0gZ2V0ZWdpZCgpKSkKKwkJcmV0dXJuIE5VTEw7CisjaWYgSEFWRV9QUkNUTAorCWlmIChwcmN0bChQUl9HRVRfRFVNUEFCTEUsIDAsIDAsIDAsIDApID09IDApCisJCXJldHVybiBOVUxMOworI2Vsc2UKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChTWVNfcHJjdGwpKQorCWlmIChzeXNjYWxsKFNZU19wcmN0bCwgUFJfR0VUX0RVTVBBQkxFLCAwLCAwLCAwLCAwKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gc2VjdXJlX2dldGVudihhcmcpOworI2VsaWYgZGVmaW5lZChIQVZFX19fU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gX19zZWN1cmVfZ2V0ZW52KGFyZyk7CisjZWxzZQorCXJldHVybiBnZXRlbnYoYXJnKTsKKyNlbmRpZgorfQorCisjaWYgMCAvKiBpZmRlZiBDT05GSUdfQkxLSURfREVCVUcgKi8KK3N0YXRpYyBibGtpZF9kZWJ1Z19kdW1wX2NhY2hlKGludCBtYXNrLCBibGtpZF9jYWNoZSBjYWNoZSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOworCisJaWYgKCFjYWNoZSkgeworCQlwcmludGYoImNhY2hlOiBOVUxMXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXByaW50ZigiY2FjaGU6IHRpbWUgPSAlbHVcbiIsIGNhY2hlLT5iaWNfdGltZSk7CisJcHJpbnRmKCJjYWNoZTogZmxhZ3MgPSAweCUwOFhcbiIsIGNhY2hlLT5iaWNfZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaChwLCAmY2FjaGUtPmJpY19kZXZzKSB7CisJCWJsa2lkX2RldiBkZXYgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfZGV2LCBiaWRfZGV2cyk7CisJCWJsa2lkX2RlYnVnX2R1bXBfZGV2KGRldik7CisJfQorfQorI2VuZGlmCisKK2ludCBibGtpZF9nZXRfY2FjaGUoYmxraWRfY2FjaGUgKnJldF9jYWNoZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJYmxraWRfY2FjaGUgY2FjaGU7CisKKyNpZmRlZiBDT05GSUdfQkxLSURfREVCVUcKKwlpZiAoIShibGtpZF9kZWJ1Z19tYXNrICYgREVCVUdfSU5JVCkpIHsKKwkJY2hhciAqZHN0ciA9IGdldGVudigiQkxLSURfREVCVUciKTsKKworCQlpZiAoZHN0cikKKwkJCWJsa2lkX2RlYnVnX21hc2sgPSBzdHJ0b3VsKGRzdHIsIDAsIDApOworCQlibGtpZF9kZWJ1Z19tYXNrIHw9IERFQlVHX0lOSVQ7CisJfQorI2VuZGlmCisKKwlEQkcoREVCVUdfQ0FDSEUsIHByaW50ZigiY3JlYXRpbmcgYmxraWQgY2FjaGUgKHVzaW5nICVzKVxuIiwKKwkJCQlmaWxlbmFtZSA/IGZpbGVuYW1lIDogImRlZmF1bHQgY2FjaGUiKSk7CisKKwlpZiAoIShjYWNoZSA9IChibGtpZF9jYWNoZSkgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgYmxraWRfc3RydWN0X2NhY2hlKSkpKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9NRU07CisKKwlJTklUX0xJU1RfSEVBRCgmY2FjaGUtPmJpY19kZXZzKTsKKwlJTklUX0xJU1RfSEVBRCgmY2FjaGUtPmJpY190YWdzKTsKKworCWlmIChmaWxlbmFtZSAmJiAhc3RybGVuKGZpbGVuYW1lKSkKKwkJZmlsZW5hbWUgPSAwOworCWlmICghZmlsZW5hbWUpCisJCWZpbGVuYW1lID0gc2FmZV9nZXRlbnYoIkJMS0lEX0ZJTEUiKTsKKwlpZiAoIWZpbGVuYW1lKQorCQlmaWxlbmFtZSA9IEJMS0lEX0NBQ0hFX0ZJTEU7CisJY2FjaGUtPmJpY19maWxlbmFtZSA9IGJsa2lkX3N0cmR1cChmaWxlbmFtZSk7CisKKwlibGtpZF9yZWFkX2NhY2hlKGNhY2hlKTsKKworCSpyZXRfY2FjaGUgPSBjYWNoZTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBibGtpZF9wdXRfY2FjaGUoYmxraWRfY2FjaGUgY2FjaGUpCit7CisJaWYgKCFjYWNoZSkKKwkJcmV0dXJuOworCisJKHZvaWQpIGJsa2lkX2ZsdXNoX2NhY2hlKGNhY2hlKTsKKworCURCRyhERUJVR19DQUNIRSwgcHJpbnRmKCJmcmVlaW5nIGNhY2hlIHN0cnVjdFxuIikpOworCisJLyogREJHKERFQlVHX0NBQ0hFLCBibGtpZF9kZWJ1Z19kdW1wX2NhY2hlKGNhY2hlKSk7ICovCisKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmNhY2hlLT5iaWNfZGV2cykpIHsKKwkJYmxraWRfZGV2IGRldiA9IGxpc3RfZW50cnkoY2FjaGUtPmJpY19kZXZzLm5leHQsCisJCQkJCSAgIHN0cnVjdCBibGtpZF9zdHJ1Y3RfZGV2LAorCQkJCQkgICAgYmlkX2RldnMpOworCQlibGtpZF9mcmVlX2RldihkZXYpOworCX0KKworCXdoaWxlICghbGlzdF9lbXB0eSgmY2FjaGUtPmJpY190YWdzKSkgeworCQlibGtpZF90YWcgdGFnID0gbGlzdF9lbnRyeShjYWNoZS0+YmljX3RhZ3MubmV4dCwKKwkJCQkJICAgc3RydWN0IGJsa2lkX3N0cnVjdF90YWcsCisJCQkJCSAgIGJpdF90YWdzKTsKKworCQl3aGlsZSAoIWxpc3RfZW1wdHkoJnRhZy0+Yml0X25hbWVzKSkgeworCQkJYmxraWRfdGFnIGJhZCA9IGxpc3RfZW50cnkodGFnLT5iaXRfbmFtZXMubmV4dCwKKwkJCQkJCSAgIHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnLAorCQkJCQkJICAgYml0X25hbWVzKTsKKworCQkJREJHKERFQlVHX0NBQ0hFLCBwcmludGYoIndhcm5pbmc6IHVuZnJlZWQgdGFnICVzPSVzXG4iLAorCQkJCQkJYmFkLT5iaXRfbmFtZSwgYmFkLT5iaXRfdmFsKSk7CisJCQlibGtpZF9mcmVlX3RhZyhiYWQpOworCQl9CisJCWJsa2lkX2ZyZWVfdGFnKHRhZyk7CisJfQorCWZyZWUoY2FjaGUtPmJpY19maWxlbmFtZSk7CisKKwlmcmVlKGNhY2hlKTsKK30KKwordm9pZCBibGtpZF9nY19jYWNoZShibGtpZF9jYWNoZSBjYWNoZSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwLCAqcG5leHQ7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoIWNhY2hlKQorCQlyZXR1cm47CisKKwlsaXN0X2Zvcl9lYWNoX3NhZmUocCwgcG5leHQsICZjYWNoZS0+YmljX2RldnMpIHsKKwkJYmxraWRfZGV2IGRldiA9IGxpc3RfZW50cnkocCwgc3RydWN0IGJsa2lkX3N0cnVjdF9kZXYsIGJpZF9kZXZzKTsKKwkJaWYgKHN0YXQoZGV2LT5iaWRfbmFtZSwgJnN0KSA8IDApIHsKKwkJCURCRyhERUJVR19DQUNIRSwKKwkJCSAgICBwcmludGYoImZyZWVpbmcgJXNcbiIsIGRldi0+YmlkX25hbWUpKTsKKwkJCWJsa2lkX2ZyZWVfZGV2KGRldik7CisJCQljYWNoZS0+YmljX2ZsYWdzIHw9IEJMS0lEX0JJQ19GTF9DSEFOR0VEOworCQl9IGVsc2UgeworCQkJREJHKERFQlVHX0NBQ0hFLAorCQkJICAgIHByaW50ZigiRGV2aWNlICVzIGV4aXN0c1xuIiwgZGV2LT5iaWRfbmFtZSkpOworCQl9CisJfQorfQorCisKKyNpZmRlZiBURVNUX1BST0dSQU0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKwlibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisJaW50IHJldDsKKworCWJsa2lkX2RlYnVnX21hc2sgPSBERUJVR19BTEw7CisJaWYgKChhcmdjID4gMikpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW2ZpbGVuYW1lXSBcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCWlmICgocmV0ID0gYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgYXJndlsxXSkpIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yICVkIHBhcnNpbmcgY2FjaGUgZmlsZSAlc1xuIiwgcmV0LAorCQkJYXJndlsxXSA/IGFyZ3ZbMV0gOiBCTEtJRF9DQUNIRV9GSUxFKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKChyZXQgPSBibGtpZF9nZXRfY2FjaGUoJmNhY2hlLCAiL2Rldi9udWxsIikpICE9IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogZXJyb3IgY3JlYXRpbmcgY2FjaGUgKCVkKVxuIiwKKwkJCWFyZ3ZbMF0sIHJldCk7CisJCWV4aXQoMSk7CisJfQorCWlmICgocmV0ID0gYmxraWRfcHJvYmVfYWxsKGNhY2hlKSA8IDApKQorCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yIHByb2JpbmcgZGV2aWNlc1xuIik7CisKKwlibGtpZF9wdXRfY2FjaGUoY2FjaGUpOworCisJcmV0dXJuIHJldDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC9kZXYuYyBiL2UyZnNwcm9ncy9saWIvYmxraWQvZGV2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4ZWFlYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvZGV2LmMKQEAgLTAsMCArMSwyNTMgQEAKKy8qCisgKiBkZXYuYyAtIGFsbG9jYXRpb24vaW5pdGlhbGl6YXRpb24vZnJlZSByb3V0aW5lcyBmb3IgZGV2CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIEFuZHJlYXMgRGlsZ2VyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiYmxraWRQLmgiCisKK2Jsa2lkX2RldiBibGtpZF9uZXdfZGV2KHZvaWQpCit7CisJYmxraWRfZGV2IGRldjsKKworCWlmICghKGRldiA9IChibGtpZF9kZXYpIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGJsa2lkX3N0cnVjdF9kZXYpKSkpCisJCXJldHVybiBOVUxMOworCisJSU5JVF9MSVNUX0hFQUQoJmRldi0+YmlkX2RldnMpOworCUlOSVRfTElTVF9IRUFEKCZkZXYtPmJpZF90YWdzKTsKKworCXJldHVybiBkZXY7Cit9CisKK3ZvaWQgYmxraWRfZnJlZV9kZXYoYmxraWRfZGV2IGRldikKK3sKKwlpZiAoIWRldikKKwkJcmV0dXJuOworCisJREJHKERFQlVHX0RFViwKKwkgICAgcHJpbnRmKCIgIGZyZWVpbmcgZGV2ICVzICglcylcbiIsIGRldi0+YmlkX25hbWUsIGRldi0+YmlkX3R5cGUgPworCQkgICBkZXYtPmJpZF90eXBlIDogIihudWxsKSIpKTsKKwlEQkcoREVCVUdfREVWLCBibGtpZF9kZWJ1Z19kdW1wX2RldihkZXYpKTsKKworCWxpc3RfZGVsKCZkZXYtPmJpZF9kZXZzKTsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmRldi0+YmlkX3RhZ3MpKSB7CisJCWJsa2lkX3RhZyB0YWcgPSBsaXN0X2VudHJ5KGRldi0+YmlkX3RhZ3MubmV4dCwKKwkJCQkJICAgc3RydWN0IGJsa2lkX3N0cnVjdF90YWcsCisJCQkJCSAgIGJpdF90YWdzKTsKKwkJYmxraWRfZnJlZV90YWcodGFnKTsKKwl9CisJZnJlZShkZXYtPmJpZF9uYW1lKTsKKwlmcmVlKGRldik7Cit9CisKKy8qCisgKiBHaXZlbiBhIGJsa2lkIGRldmljZSwgcmV0dXJuIGl0cyBuYW1lCisgKi8KK2V4dGVybiBjb25zdCBjaGFyICpibGtpZF9kZXZfZGV2bmFtZShibGtpZF9kZXYgZGV2KQoreworCXJldHVybiBkZXYtPmJpZF9uYW1lOworfQorCisjaWZkZWYgQ09ORklHX0JMS0lEX0RFQlVHCit2b2lkIGJsa2lkX2RlYnVnX2R1bXBfZGV2KGJsa2lkX2RldiBkZXYpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqcDsKKworCWlmICghZGV2KSB7CisJCXByaW50ZigiICBkZXY6IE5VTExcbiIpOworCQlyZXR1cm47CisJfQorCisJcHJpbnRmKCIgIGRldjogbmFtZSA9ICVzXG4iLCBkZXYtPmJpZF9uYW1lKTsKKwlwcmludGYoIiAgZGV2OiBERVZOTz1cIjB4JTBsbHhcIlxuIiwgKGxvbmcgbG9uZylkZXYtPmJpZF9kZXZubyk7CisJcHJpbnRmKCIgIGRldjogVElNRT1cIiVsZFwiXG4iLCAobG9uZylkZXYtPmJpZF90aW1lKTsKKwlwcmludGYoIiAgZGV2OiBQUkk9XCIlZFwiXG4iLCBkZXYtPmJpZF9wcmkpOworCXByaW50ZigiICBkZXY6IGZsYWdzID0gMHglMDhYXG4iLCBkZXYtPmJpZF9mbGFncyk7CisKKwlsaXN0X2Zvcl9lYWNoKHAsICZkZXYtPmJpZF90YWdzKSB7CisJCWJsa2lkX3RhZyB0YWcgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnLCBiaXRfdGFncyk7CisJCWlmICh0YWcpCisJCQlwcmludGYoIiAgICB0YWc6ICVzPVwiJXNcIlxuIiwgdGFnLT5iaXRfbmFtZSwKKwkJCSAgICAgICB0YWctPmJpdF92YWwpOworCQllbHNlCisJCQlwcmludGYoIiAgICB0YWc6IE5VTExcbiIpOworCX0KKwlwcmludGYoIlxuIik7Cit9CisjZW5kaWYKKworLyoKKyAqIGRldiBpdGVyYXRpb24gcm91dGluZXMgZm9yIHRoZSBwdWJsaWMgbGliYmxraWQgaW50ZXJmYWNlLgorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGRvIG5vdCBleHBvc2UgdGhlIGxpc3QuaCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYXJlIGEKKyAqIGNvbnRhbWluYXRpb24gb2YgdGhlIG5hbWVzcGFjZSwgYW5kIHdoaWNoIGZvcmNlIHVzIHRvIHJldmVhbCBmYXIsIGZhcgorICogdG9vIG11Y2ggb2Ygb3VyIGludGVybmFsIGltcGxlbWVuYXRpb24uICBJJ20gbm90IGNvbnZpbmNlZCBJIHdhbnQKKyAqIHRvIGtlZXAgbGlzdC5oIGluIHRoZSBsb25nIHRlcm0sIGFueXdheS4gIEl0J3MgZmluZSBmb3Iga2VybmVsCisgKiBwcm9ncmFtbWluZywgYnV0IHBlcmZvcm1hbmNlIGlzIG5vdCB0aGUgIzEgcHJpb3JpdHkgZm9yIHRoaXMKKyAqIGxpYnJhcnksIGFuZCBJIHJlYWxseSBkb24ndCBsaWtlIHRoZSB0cmFkZW9mZiBvZiB0eXBlLXNhZmV0eSBmb3IKKyAqIHBlcmZvcm1hbmNlIGZvciB0aGlzIGFwcGxpY2F0aW9uLiAgW3R5dHNvOjIwMDMwMTI1LjIwMDdFU1RdCisgKi8KKworLyoKKyAqIFRoaXMgc2VyaWVzIG9mIGZ1bmN0aW9ucyBpdGVyYXRlIG92ZXIgYWxsIGRldmljZXMgaW4gYSBibGtpZCBjYWNoZQorICovCisjZGVmaW5lIERFVl9JVEVSQVRFX01BR0lDCTB4MDFhNTI4NGMKKworc3RydWN0IGJsa2lkX3N0cnVjdF9kZXZfaXRlcmF0ZSB7CisJaW50CQkJbWFnaWM7CisJYmxraWRfY2FjaGUJCWNhY2hlOworCWNoYXIJCQkqc2VhcmNoX3R5cGU7CisJY2hhcgkJCSpzZWFyY2hfdmFsdWU7CisJc3RydWN0IGxpc3RfaGVhZAkqcDsKK307CisKK2V4dGVybiBibGtpZF9kZXZfaXRlcmF0ZSBibGtpZF9kZXZfaXRlcmF0ZV9iZWdpbihibGtpZF9jYWNoZSBjYWNoZSkKK3sKKwlibGtpZF9kZXZfaXRlcmF0ZQlpdGVyOworCisJaXRlciA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGJsa2lkX3N0cnVjdF9kZXZfaXRlcmF0ZSkpOworCWlmIChpdGVyKSB7CisJCWl0ZXItPm1hZ2ljID0gREVWX0lURVJBVEVfTUFHSUM7CisJCWl0ZXItPmNhY2hlID0gY2FjaGU7CisJCWl0ZXItPnAJPSBjYWNoZS0+YmljX2RldnMubmV4dDsKKwkJaXRlci0+c2VhcmNoX3R5cGUgPSAwOworCQlpdGVyLT5zZWFyY2hfdmFsdWUgPSAwOworCX0KKwlyZXR1cm4gKGl0ZXIpOworfQorCitleHRlcm4gaW50IGJsa2lkX2Rldl9zZXRfc2VhcmNoKGJsa2lkX2Rldl9pdGVyYXRlIGl0ZXIsCisJCQkJIGNoYXIgKnNlYXJjaF90eXBlLCBjaGFyICpzZWFyY2hfdmFsdWUpCit7CisJY2hhciAqbmV3X3R5cGUsICpuZXdfdmFsdWU7CisKKwlpZiAoIWl0ZXIgfHwgaXRlci0+bWFnaWMgIT0gREVWX0lURVJBVEVfTUFHSUMgfHwgIXNlYXJjaF90eXBlIHx8CisJICAgICFzZWFyY2hfdmFsdWUpCisJCXJldHVybiAtMTsKKwluZXdfdHlwZSA9IG1hbGxvYyhzdHJsZW4oc2VhcmNoX3R5cGUpKzEpOworCW5ld192YWx1ZSA9IG1hbGxvYyhzdHJsZW4oc2VhcmNoX3ZhbHVlKSsxKTsKKwlpZiAoIW5ld190eXBlIHx8ICFuZXdfdmFsdWUpIHsKKwkJZnJlZShuZXdfdHlwZSk7CisJCWZyZWUobmV3X3ZhbHVlKTsKKwkJcmV0dXJuIC0xOworCX0KKwlzdHJjcHkobmV3X3R5cGUsIHNlYXJjaF90eXBlKTsKKwlzdHJjcHkobmV3X3ZhbHVlLCBzZWFyY2hfdmFsdWUpOworCWZyZWUoaXRlci0+c2VhcmNoX3R5cGUpOworCWZyZWUoaXRlci0+c2VhcmNoX3ZhbHVlKTsKKwlpdGVyLT5zZWFyY2hfdHlwZSA9IG5ld190eXBlOworCWl0ZXItPnNlYXJjaF92YWx1ZSA9IG5ld192YWx1ZTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCisgKi8KK2V4dGVybiBpbnQgYmxraWRfZGV2X25leHQoYmxraWRfZGV2X2l0ZXJhdGUgaXRlciwKKwkJCSAgYmxraWRfZGV2ICpyZXRfZGV2KQoreworCWJsa2lkX2RldgkJZGV2OworCisJKnJldF9kZXYgPSAwOworCWlmICghaXRlciB8fCBpdGVyLT5tYWdpYyAhPSBERVZfSVRFUkFURV9NQUdJQykKKwkJcmV0dXJuIC0xOworCXdoaWxlIChpdGVyLT5wICE9ICZpdGVyLT5jYWNoZS0+YmljX2RldnMpIHsKKwkJZGV2ID0gbGlzdF9lbnRyeShpdGVyLT5wLCBzdHJ1Y3QgYmxraWRfc3RydWN0X2RldiwgYmlkX2RldnMpOworCQlpdGVyLT5wID0gaXRlci0+cC0+bmV4dDsKKwkJaWYgKGl0ZXItPnNlYXJjaF90eXBlICYmCisJCSAgICAhYmxraWRfZGV2X2hhc190YWcoZGV2LCBpdGVyLT5zZWFyY2hfdHlwZSwKKwkJCQkgICAgICAgaXRlci0+c2VhcmNoX3ZhbHVlKSkKKwkJCWNvbnRpbnVlOworCQkqcmV0X2RldiA9IGRldjsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAtMTsKK30KKworZXh0ZXJuIHZvaWQgYmxraWRfZGV2X2l0ZXJhdGVfZW5kKGJsa2lkX2Rldl9pdGVyYXRlIGl0ZXIpCit7CisJaWYgKCFpdGVyIHx8IGl0ZXItPm1hZ2ljICE9IERFVl9JVEVSQVRFX01BR0lDKQorCQlyZXR1cm47CisJaXRlci0+bWFnaWMgPSAwOworCWZyZWUoaXRlcik7Cit9CisKKyNpZmRlZiBURVNUX1BST0dSQU0KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisKK3ZvaWQgdXNhZ2UoY2hhciAqcHJvZykKK3sKKwlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbLWYgYmxraWRfZmlsZV0gWy1tIGRlYnVnX21hc2tdXG4iLCBwcm9nKTsKKwlmcHJpbnRmKHN0ZGVyciwgIlx0TGlzdCBhbGwgZGV2aWNlcyBhbmQgZXhpdFxuIik7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWJsa2lkX2Rldl9pdGVyYXRlCWl0ZXI7CisJYmxraWRfY2FjaGUgCQljYWNoZSA9IE5VTEw7CisJYmxraWRfZGV2CQlkZXY7CisJaW50CQkJYywgcmV0OworCWNoYXIJCQkqdG1wOworCWNoYXIJCQkqZmlsZSA9IE5VTEw7CisJY2hhcgkJCSpzZWFyY2hfdHlwZSA9IE5VTEw7CisJY2hhcgkJCSpzZWFyY2hfdmFsdWUgPSBOVUxMOworCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAibTpmOiIpKSAhPSBFT0YpCisJCXN3aXRjaCAoYykgeworCQljYXNlICdmJzoKKwkJCWZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnbSc6CisJCQlibGtpZF9kZWJ1Z19tYXNrID0gc3RydG91bCAob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIGRlYnVnIG1hc2s6ICVzXG4iLAorCQkJCQlvcHRhcmcpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnPyc6CisJCQl1c2FnZShhcmd2WzBdKTsKKwkJfQorCWlmIChhcmdjID49IG9wdGluZCsyKSB7CisJCXNlYXJjaF90eXBlID0gYXJndltvcHRpbmRdOworCQlzZWFyY2hfdmFsdWUgPSBhcmd2W29wdGluZCsxXTsKKwkJb3B0aW5kICs9IDI7CisJfQorCWlmIChhcmdjICE9IG9wdGluZCkKKwkJdXNhZ2UoYXJndlswXSk7CisKKwlpZiAoKHJldCA9IGJsa2lkX2dldF9jYWNoZSgmY2FjaGUsIGZpbGUpKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIGNyZWF0aW5nIGNhY2hlICglZClcbiIsCisJCQlhcmd2WzBdLCByZXQpOworCQlleGl0KDEpOworCX0KKworCWl0ZXIgPSBibGtpZF9kZXZfaXRlcmF0ZV9iZWdpbihjYWNoZSk7CisJaWYgKHNlYXJjaF90eXBlKQorCQlibGtpZF9kZXZfc2V0X3NlYXJjaChpdGVyLCBzZWFyY2hfdHlwZSwgc2VhcmNoX3ZhbHVlKTsKKwl3aGlsZSAoYmxraWRfZGV2X25leHQoaXRlciwgJmRldikgPT0gMCkgeworCQlwcmludGYoIkRldmljZTogJXNcbiIsIGJsa2lkX2Rldl9kZXZuYW1lKGRldikpOworCX0KKwlibGtpZF9kZXZfaXRlcmF0ZV9lbmQoaXRlcik7CisKKworCWJsa2lkX3B1dF9jYWNoZShjYWNoZSk7CisJcmV0dXJuICgwKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC9kZXZuYW1lLmMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Rldm5hbWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTJlZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9kZXZuYW1lLmMKQEAgLTAsMCArMSw1NTcgQEAKKy8qCisgKiBkZXZuYW1lLmMgLSBnZXQgYSBkZXYgYnkgaXRzIGRldmljZSBpbm9kZSBuYW1lCisgKgorICogQ29weXJpZ2h0IChDKSBBbmRyaWVzIEJyb3V3ZXIKKyAqIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBUaGVvZG9yZSBUcydvCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgQW5kcmVhcyBEaWxnZXIKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNkZWZpbmUgX0dOVV9TT1VSQ0UgMQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfTUtERVZfSAorI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiYmxraWRQLmgiCisKKy8qCisgKiBGaW5kIGEgZGV2IHN0cnVjdCBpbiB0aGUgY2FjaGUgYnkgZGV2aWNlIG5hbWUsIGlmIGF2YWlsYWJsZS4KKyAqCisgKiBJZiB0aGVyZSBpcyBubyBlbnRyeSB3aXRoIHRoZSBzcGVjaWZpZWQgZGV2aWNlIG5hbWUsIGFuZCB0aGUgY3JlYXRlCisgKiBmbGFnIGlzIHNldCwgdGhlbiBjcmVhdGUgYW4gZW1wdHkgZGV2aWNlIGVudHJ5LgorICovCitibGtpZF9kZXYgYmxraWRfZ2V0X2RldihibGtpZF9jYWNoZSBjYWNoZSwgY29uc3QgY2hhciAqZGV2bmFtZSwgaW50IGZsYWdzKQoreworCWJsa2lkX2RldiBkZXYgPSBOVUxMLCB0bXA7CisJc3RydWN0IGxpc3RfaGVhZCAqcCwgKnBuZXh0OworCisJaWYgKCFjYWNoZSB8fCAhZGV2bmFtZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlsaXN0X2Zvcl9lYWNoKHAsICZjYWNoZS0+YmljX2RldnMpIHsKKwkJdG1wID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgYmxraWRfc3RydWN0X2RldiwgYmlkX2RldnMpOworCQlpZiAoc3RyY21wKHRtcC0+YmlkX25hbWUsIGRldm5hbWUpKQorCQkJY29udGludWU7CisKKwkJREJHKERFQlVHX0RFVk5BTUUsCisJCSAgICBwcmludGYoImZvdW5kIGRldm5hbWUgJXMgaW4gY2FjaGVcbiIsIHRtcC0+YmlkX25hbWUpKTsKKwkJZGV2ID0gdG1wOworCQlicmVhazsKKwl9CisKKwlpZiAoIWRldiAmJiAoZmxhZ3MgJiBCTEtJRF9ERVZfQ1JFQVRFKSkgeworCQlpZiAoYWNjZXNzKGRldm5hbWUsIEZfT0spIDwgMCkKKwkJCXJldHVybiBOVUxMOworCQlkZXYgPSBibGtpZF9uZXdfZGV2KCk7CisJCWlmICghZGV2KQorCQkJcmV0dXJuIE5VTEw7CisJCWRldi0+YmlkX3RpbWUgPSBJTlRfTUlOOworCQlkZXYtPmJpZF9uYW1lID0gYmxraWRfc3RyZHVwKGRldm5hbWUpOworCQlkZXYtPmJpZF9jYWNoZSA9IGNhY2hlOworCQlsaXN0X2FkZF90YWlsKCZkZXYtPmJpZF9kZXZzLCAmY2FjaGUtPmJpY19kZXZzKTsKKwkJY2FjaGUtPmJpY19mbGFncyB8PSBCTEtJRF9CSUNfRkxfQ0hBTkdFRDsKKwl9CisKKwlpZiAoZmxhZ3MgJiBCTEtJRF9ERVZfVkVSSUZZKSB7CisJCWRldiA9IGJsa2lkX3ZlcmlmeShjYWNoZSwgZGV2KTsKKwkJaWYgKCFkZXYgfHwgIShkZXYtPmJpZF9mbGFncyAmIEJMS0lEX0JJRF9GTF9WRVJJRklFRCkpCisJCQlyZXR1cm4gZGV2OworCQkvKgorCQkgKiBJZiB0aGUgZGV2aWNlIGlzIHZlcmlmaWVkLCB0aGVuIHNlYXJjaCB0aGUgYmxraWQKKwkJICogY2FjaGUgZm9yIGFueSBlbnRyaWVzIHRoYXQgbWF0Y2ggb24gdGhlIHR5cGUsIHV1aWQsCisJCSAqIGFuZCBsYWJlbCwgYW5kIHZlcmlmeSB0aGVtOyBpZiBhIGNhY2hlIGVudHJ5IGNhbgorCQkgKiBub3QgYmUgdmVyaWZpZWQsIHRoZW4gaXQncyBzdGFsZSBhbmQgc28gd2UgcmVtb3ZlCisJCSAqIGl0LgorCQkgKi8KKwkJbGlzdF9mb3JfZWFjaF9zYWZlKHAsIHBuZXh0LCAmY2FjaGUtPmJpY19kZXZzKSB7CisJCQlibGtpZF9kZXYgZGV2MjsKKwkJCWRldjIgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfZGV2LCBiaWRfZGV2cyk7CisJCQlpZiAoZGV2Mi0+YmlkX2ZsYWdzICYgQkxLSURfQklEX0ZMX1ZFUklGSUVEKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKCFkZXYtPmJpZF90eXBlIHx8ICFkZXYyLT5iaWRfdHlwZSB8fAorCQkJICAgIHN0cmNtcChkZXYtPmJpZF90eXBlLCBkZXYyLT5iaWRfdHlwZSkpCisJCQkJY29udGludWU7CisJCQlpZiAoZGV2LT5iaWRfbGFiZWwgJiYgZGV2Mi0+YmlkX2xhYmVsICYmCisJCQkgICAgc3RyY21wKGRldi0+YmlkX2xhYmVsLCBkZXYyLT5iaWRfbGFiZWwpKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKGRldi0+YmlkX3V1aWQgJiYgZGV2Mi0+YmlkX3V1aWQgJiYKKwkJCSAgICBzdHJjbXAoZGV2LT5iaWRfdXVpZCwgZGV2Mi0+YmlkX3V1aWQpKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKChkZXYtPmJpZF9sYWJlbCAmJiAhZGV2Mi0+YmlkX2xhYmVsKSB8fAorCQkJICAgICghZGV2LT5iaWRfbGFiZWwgJiYgZGV2Mi0+YmlkX2xhYmVsKSB8fAorCQkJICAgIChkZXYtPmJpZF91dWlkICYmICFkZXYyLT5iaWRfdXVpZCkgfHwKKwkJCSAgICAoIWRldi0+YmlkX3V1aWQgJiYgZGV2Mi0+YmlkX3V1aWQpKQorCQkJCWNvbnRpbnVlOworCQkJZGV2MiA9IGJsa2lkX3ZlcmlmeShjYWNoZSwgZGV2Mik7CisJCQlpZiAoZGV2MiAmJiAhKGRldjItPmJpZF9mbGFncyAmIEJMS0lEX0JJRF9GTF9WRVJJRklFRCkpCisJCQkJYmxraWRfZnJlZV9kZXYoZGV2Mik7CisJCX0KKwl9CisJcmV0dXJuIGRldjsKK30KKworLyogRGlyZWN0b3JpZXMgd2hlcmUgd2Ugd2lsbCB0cnkgdG8gc2VhcmNoIGZvciBkZXZpY2UgbmFtZXMgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkaXJsaXN0W10gPSB7ICIvZGV2IiwgIi9kZXZmcyIsICIvZGV2aWNlcyIsIE5VTEwgfTsKKworc3RhdGljIGludCBpc19kbV9sZWFmKGNvbnN0IGNoYXIgKmRldm5hbWUpCit7CisJc3RydWN0IGRpcmVudAkqZGUsICpkX2RlOworCURJUgkJKmRpciwgKmRfZGlyOworCWNoYXIJCXBhdGhbMjU2XTsKKwlpbnQJCXJldCA9IDE7CisKKwlpZiAoKGRpciA9IG9wZW5kaXIoIi9zeXMvYmxvY2siKSkgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisJd2hpbGUgKChkZSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworCQlpZiAoIXN0cmNtcChkZS0+ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZGUtPmRfbmFtZSwgIi4uIikgfHwKKwkJICAgICFzdHJjbXAoZGUtPmRfbmFtZSwgZGV2bmFtZSkgfHwKKwkJICAgIHN0cm5jbXAoZGUtPmRfbmFtZSwgImRtLSIsIDMpIHx8CisJCSAgICBzdHJsZW4oZGUtPmRfbmFtZSkgPiBzaXplb2YocGF0aCktMzIpCisJCQljb250aW51ZTsKKwkJc3ByaW50ZihwYXRoLCAiL3N5cy9ibG9jay8lcy9zbGF2ZXMiLCBkZS0+ZF9uYW1lKTsKKwkJaWYgKChkX2RpciA9IG9wZW5kaXIocGF0aCkpID09IE5VTEwpCisJCQljb250aW51ZTsKKwkJd2hpbGUgKChkX2RlID0gcmVhZGRpcihkX2RpcikpICE9IE5VTEwpIHsKKwkJCWlmICghc3RyY21wKGRfZGUtPmRfbmFtZSwgZGV2bmFtZSkpIHsKKwkJCQlyZXQgPSAwOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWNsb3NlZGlyKGRfZGlyKTsKKwkJaWYgKCFyZXQpCisJCQlicmVhazsKKwl9CisJY2xvc2VkaXIoZGlyKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogU2luY2UgMi42LjI5IChwYXRjaCA3ODRhYWU3MzVkOWIwYmJhM2Y4YjlmYWVmNGM4YjMwZGYzYmYwMTI4KSBrZXJuZWwgc3lzZnMKKyAqIHByb3ZpZGVzIHRoZSByZWFsIERNIGRldmljZSBuYW1lcyBpbiAvc3lzL2Jsb2NrLzxwdG5hbWU+L2RtL25hbWUKKyAqLworc3RhdGljIGNoYXIgKmdldF9kbV9uYW1lKGNvbnN0IGNoYXIgKnB0bmFtZSkKK3sKKwlGSUxFCSpmOworCXNpemVfdAlzejsKKwljaGFyCXBhdGhbMjU2XSwgbmFtZVsyNTZdLCAqcmVzID0gTlVMTDsKKworCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIi9zeXMvYmxvY2svJXMvZG0vbmFtZSIsIHB0bmFtZSk7CisJaWYgKChmID0gZm9wZW4ocGF0aCwgInIiKSkgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiByZWFkICI8bmFtZT5cbiIgZnJvbSBzeXNmcyAqLworCWlmIChmZ2V0cyhuYW1lLCBzaXplb2YobmFtZSksIGYpICYmIChzeiA9IHN0cmxlbihuYW1lKSkgPiAxKSB7CisJCW5hbWVbc3ogLSAxXSA9ICdcMCc7CisJCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIi9kZXYvbWFwcGVyLyVzIiwgbmFtZSk7CisJCXJlcyA9IGJsa2lkX3N0cmR1cChwYXRoKTsKKwl9CisJZmNsb3NlKGYpOworCXJldHVybiByZXM7Cit9CisKKy8qCisgKiBQcm9iZSBhIHNpbmdsZSBibG9jayBkZXZpY2UgdG8gYWRkIHRvIHRoZSBkZXZpY2UgY2FjaGUuCisgKi8KK3N0YXRpYyB2b2lkIHByb2JlX29uZShibGtpZF9jYWNoZSBjYWNoZSwgY29uc3QgY2hhciAqcHRuYW1lLAorCQkgICAgICBkZXZfdCBkZXZubywgaW50IHByaSwgaW50IG9ubHlfaWZfbmV3KQoreworCWJsa2lkX2RldiBkZXYgPSBOVUxMOworCXN0cnVjdCBsaXN0X2hlYWQgKnAsICpwbmV4dDsKKwljb25zdCBjaGFyICoqZGlyOworCWNoYXIgKmRldm5hbWUgPSBOVUxMOworCisJLyogU2VlIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGlzIGRldmljZSBudW1iZXIgaW4gdGhlIGNhY2hlLiAqLworCWxpc3RfZm9yX2VhY2hfc2FmZShwLCBwbmV4dCwgJmNhY2hlLT5iaWNfZGV2cykgeworCQlibGtpZF9kZXYgdG1wID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgYmxraWRfc3RydWN0X2RldiwKKwkJCQkJICAgYmlkX2RldnMpOworCQlpZiAodG1wLT5iaWRfZGV2bm8gPT0gZGV2bm8pIHsKKwkJCWlmIChvbmx5X2lmX25ldyAmJiAhYWNjZXNzKHRtcC0+YmlkX25hbWUsIEZfT0spKQorCQkJCXJldHVybjsKKwkJCWRldiA9IGJsa2lkX3ZlcmlmeShjYWNoZSwgdG1wKTsKKwkJCWlmIChkZXYgJiYgKGRldi0+YmlkX2ZsYWdzICYgQkxLSURfQklEX0ZMX1ZFUklGSUVEKSkKKwkJCQlicmVhazsKKwkJCWRldiA9IDA7CisJCX0KKwl9CisJaWYgKGRldiAmJiBkZXYtPmJpZF9kZXZubyA9PSBkZXZubykKKwkJZ290byBzZXRfcHJpOworCisJLyogVHJ5IHRvIHRyYW5zbGF0ZSBwcml2YXRlIGRldmljZS1tYXBwZXIgZG0tPE4+IG5hbWVzCisJICogdG8gc3RhbmRhcmQgL2Rldi9tYXBwZXIvPG5hbWU+LgorCSAqLworCWlmICghc3RybmNtcChwdG5hbWUsICJkbS0iLCAzKSAmJiBpc2RpZ2l0KHB0bmFtZVszXSkpIHsKKwkJZGV2bmFtZSA9IGdldF9kbV9uYW1lKHB0bmFtZSk7CisJCWlmICghZGV2bmFtZSkKKwkJCWJsa2lkX19zY2FuX2RpcigiL2Rldi9tYXBwZXIiLCBkZXZubywgMCwgJmRldm5hbWUpOworCQlpZiAoZGV2bmFtZSkKKwkJCWdvdG8gZ2V0X2RldjsKKwl9CisKKwkvKgorCSAqIFRha2UgYSBxdWljayBsb29rIGF0IC9kZXYvcHRuYW1lIGZvciB0aGUgZGV2aWNlIG51bWJlci4gIFdlIGNoZWNrCisJICogYWxsIG9mIHRoZSBsaWtlbHkgZGV2aWNlIGRpcmVjdG9yaWVzLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgb3IgaWYKKwkgKiB0aGUgc3RhdCBpbmZvcm1hdGlvbiBkb2Vzbid0IGNoZWNrIG91dCwgdXNlIGJsa2lkX2Rldm5vX3RvX2Rldm5hbWUoKQorCSAqIHRvIGZpbmQgaXQgdmlhIGFuIGV4aGF1c3RpdmUgc2VhcmNoIGZvciB0aGUgZGV2aWNlIG1ham9yL21pbm9yLgorCSAqLworCWZvciAoZGlyID0gZGlybGlzdDsgKmRpcjsgZGlyKyspIHsKKwkJc3RydWN0IHN0YXQgc3Q7CisJCWNoYXIgZGV2aWNlWzI1Nl07CisKKwkJc3ByaW50ZihkZXZpY2UsICIlcy8lcyIsICpkaXIsIHB0bmFtZSk7CisJCWlmICgoZGV2ID0gYmxraWRfZ2V0X2RldihjYWNoZSwgZGV2aWNlLCBCTEtJRF9ERVZfRklORCkpICYmCisJCSAgICBkZXYtPmJpZF9kZXZubyA9PSBkZXZubykKKwkJCWdvdG8gc2V0X3ByaTsKKworCQlpZiAoc3RhdChkZXZpY2UsICZzdCkgPT0gMCAmJiBTX0lTQkxLKHN0LnN0X21vZGUpICYmCisJCSAgICBzdC5zdF9yZGV2ID09IGRldm5vKSB7CisJCQlkZXZuYW1lID0gYmxraWRfc3RyZHVwKGRldmljZSk7CisJCQlnb3RvIGdldF9kZXY7CisJCX0KKwl9CisJLyogRG8gYSBzaG9ydC1jdXQgc2NhbiBvZiAvZGV2L21hcHBlciBmaXJzdCAqLworCWlmICghZGV2bmFtZSkKKwkJZGV2bmFtZSA9IGdldF9kbV9uYW1lKHB0bmFtZSk7CisJaWYgKCFkZXZuYW1lKQorCQlibGtpZF9fc2Nhbl9kaXIoIi9kZXYvbWFwcGVyIiwgZGV2bm8sIDAsICZkZXZuYW1lKTsKKwlpZiAoIWRldm5hbWUpIHsKKwkJZGV2bmFtZSA9IGJsa2lkX2Rldm5vX3RvX2Rldm5hbWUoZGV2bm8pOworCQlpZiAoIWRldm5hbWUpCisJCQlyZXR1cm47CisJfQorZ2V0X2RldjoKKwlkZXYgPSBibGtpZF9nZXRfZGV2KGNhY2hlLCBkZXZuYW1lLCBCTEtJRF9ERVZfTk9STUFMKTsKKwlmcmVlKGRldm5hbWUpOworc2V0X3ByaToKKwlpZiAoZGV2KSB7CisJCWlmIChwcmkpCisJCQlkZXYtPmJpZF9wcmkgPSBwcmk7CisJCWVsc2UgaWYgKCFzdHJuY21wKGRldi0+YmlkX25hbWUsICIvZGV2L21hcHBlci8iLCAxMSkpIHsKKwkJCWRldi0+YmlkX3ByaSA9IEJMS0lEX1BSSV9ETTsKKwkJCWlmIChpc19kbV9sZWFmKHB0bmFtZSkpCisJCQkJZGV2LT5iaWRfcHJpICs9IDU7CisJCX0gZWxzZSBpZiAoIXN0cm5jbXAocHRuYW1lLCAibWQiLCAyKSkKKwkJCWRldi0+YmlkX3ByaSA9IEJMS0lEX1BSSV9NRDsKKyAJfQorCXJldHVybjsKK30KKworI2RlZmluZSBQUk9DX1BBUlRJVElPTlMgIi9wcm9jL3BhcnRpdGlvbnMiCisjZGVmaW5lIFZHX0RJUgkJIi9wcm9jL2x2bS9WR3MiCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBVVUlEIGNhY2hlIHdpdGggZGV2aWNlcyBmcm9tIHRoZSBMVk0KKyAqIHByb2MgaGllcmFyY2h5LiAgV2UgY3VycmVudGx5IGRlcGVuZCBvbiB0aGUgbmFtZXMgb2YgdGhlIExWTQorICogaGllcmFyY2h5IGdpdmluZyB1cyB0aGUgZGV2aWNlIHN0cnVjdHVyZSBpbiAvZGV2LiAgKFhYWCBpcyB0aGlzIGEKKyAqIHNhZmUgdGhpbmcgdG8gZG8/KQorICovCisjaWZkZWYgVkdfRElSCitzdGF0aWMgZGV2X3QgbHZtX2dldF9kZXZubyhjb25zdCBjaGFyICpsdm1fZGV2aWNlKQoreworCUZJTEUgKmx2ZjsKKwljaGFyIGJ1ZlsxMDI0XTsKKwlpbnQgbWEsIG1pOworCWRldl90IHJldCA9IDA7CisKKwlEQkcoREVCVUdfREVWTkFNRSwgcHJpbnRmKCJvcGVuaW5nICVzXG4iLCBsdm1fZGV2aWNlKSk7CisJaWYgKChsdmYgPSBmb3Blbihsdm1fZGV2aWNlLCAiciIpKSA9PSBOVUxMKSB7CisJCURCRyhERUJVR19ERVZOQU1FLCBwcmludGYoIiVzOiAoJWQpICVzXG4iLCBsdm1fZGV2aWNlLCBlcnJubywKKwkJCQkJICBzdHJlcnJvcihlcnJubykpKTsKKwkJcmV0dXJuIDA7CisJfQorCisJd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGx2ZikpIHsKKwkJaWYgKHNzY2FuZihidWYsICJkZXZpY2U6ICVkOiVkIiwgJm1hLCAmbWkpID09IDIpIHsKKwkJCXJldCA9IG1ha2VkZXYobWEsIG1pKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWZjbG9zZShsdmYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgbHZtX3Byb2JlX2FsbChibGtpZF9jYWNoZSBjYWNoZSwgaW50IG9ubHlfaWZfbmV3KQoreworCURJUgkJKnZnX2xpc3Q7CisJc3RydWN0IGRpcmVudAkqdmdfaXRlcjsKKwlpbnQJCXZnX2xlbiA9IHN0cmxlbihWR19ESVIpOworCWRldl90CQlkZXY7CisKKwlpZiAoKHZnX2xpc3QgPSBvcGVuZGlyKFZHX0RJUikpID09IE5VTEwpCisJCXJldHVybjsKKworCURCRyhERUJVR19ERVZOQU1FLCBwcmludGYoInByb2JpbmcgTFZNIGRldmljZXMgdW5kZXIgJXNcbiIsIFZHX0RJUikpOworCisJd2hpbGUgKCh2Z19pdGVyID0gcmVhZGRpcih2Z19saXN0KSkgIT0gTlVMTCkgeworCQlESVIJCSpsdl9saXN0OworCQljaGFyCQkqdmRpcm5hbWU7CisJCWNoYXIJCSp2Z19uYW1lOworCQlzdHJ1Y3QgZGlyZW50CSpsdl9pdGVyOworCisJCXZnX25hbWUgPSB2Z19pdGVyLT5kX25hbWU7CisJCWlmICghc3RyY21wKHZnX25hbWUsICIuIikgfHwgIXN0cmNtcCh2Z19uYW1lLCAiLi4iKSkKKwkJCWNvbnRpbnVlOworCQl2ZGlybmFtZSA9IG1hbGxvYyh2Z19sZW4gKyBzdHJsZW4odmdfbmFtZSkgKyA4KTsKKwkJaWYgKCF2ZGlybmFtZSkKKwkJCWdvdG8gZXhpdDsKKwkJc3ByaW50Zih2ZGlybmFtZSwgIiVzLyVzL0xWcyIsIFZHX0RJUiwgdmdfbmFtZSk7CisKKwkJbHZfbGlzdCA9IG9wZW5kaXIodmRpcm5hbWUpOworCQlmcmVlKHZkaXJuYW1lKTsKKwkJaWYgKGx2X2xpc3QgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXdoaWxlICgobHZfaXRlciA9IHJlYWRkaXIobHZfbGlzdCkpICE9IE5VTEwpIHsKKwkJCWNoYXIJCSpsdl9uYW1lLCAqbHZtX2RldmljZTsKKworCQkJbHZfbmFtZSA9IGx2X2l0ZXItPmRfbmFtZTsKKwkJCWlmICghc3RyY21wKGx2X25hbWUsICIuIikgfHwgIXN0cmNtcChsdl9uYW1lLCAiLi4iKSkKKwkJCQljb250aW51ZTsKKworCQkJbHZtX2RldmljZSA9IG1hbGxvYyh2Z19sZW4gKyBzdHJsZW4odmdfbmFtZSkgKworCQkJCQkgICAgc3RybGVuKGx2X25hbWUpICsgOCk7CisJCQlpZiAoIWx2bV9kZXZpY2UpIHsKKwkJCQljbG9zZWRpcihsdl9saXN0KTsKKwkJCQlnb3RvIGV4aXQ7CisJCQl9CisJCQlzcHJpbnRmKGx2bV9kZXZpY2UsICIlcy8lcy9MVnMvJXMiLCBWR19ESVIsIHZnX25hbWUsCisJCQkJbHZfbmFtZSk7CisJCQlkZXYgPSBsdm1fZ2V0X2Rldm5vKGx2bV9kZXZpY2UpOworCQkJc3ByaW50Zihsdm1fZGV2aWNlLCAiJXMvJXMiLCB2Z19uYW1lLCBsdl9uYW1lKTsKKwkJCURCRyhERUJVR19ERVZOQU1FLCBwcmludGYoIkxWTSBkZXYgJXM6IGRldm5vIDB4JTA0WFxuIiwKKwkJCQkJCSAgbHZtX2RldmljZSwKKwkJCQkJCSAgKHVuc2lnbmVkIGludCkgZGV2KSk7CisJCQlwcm9iZV9vbmUoY2FjaGUsIGx2bV9kZXZpY2UsIGRldiwgQkxLSURfUFJJX0xWTSwKKwkJCQkgIG9ubHlfaWZfbmV3KTsKKwkJCWZyZWUobHZtX2RldmljZSk7CisJCX0KKwkJY2xvc2VkaXIobHZfbGlzdCk7CisJfQorZXhpdDoKKwljbG9zZWRpcih2Z19saXN0KTsKK30KKyNlbmRpZgorCisjZGVmaW5lIFBST0NfRVZNU19WT0xVTUVTICIvcHJvYy9ldm1zL3ZvbHVtZXMiCisKK3N0YXRpYyBpbnQKK2V2bXNfcHJvYmVfYWxsKGJsa2lkX2NhY2hlIGNhY2hlLCBpbnQgb25seV9pZl9uZXcpCit7CisJY2hhciBsaW5lWzEwMF07CisJaW50IG1hLCBtaSwgc3osIG51bSA9IDA7CisJRklMRSAqcHJvY3B0OworCWNoYXIgZGV2aWNlWzExMF07CisKKwlwcm9jcHQgPSBmb3BlbihQUk9DX0VWTVNfVk9MVU1FUywgInIiKTsKKwlpZiAoIXByb2NwdCkKKwkJcmV0dXJuIDA7CisJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgcHJvY3B0KSkgeworCQlpZiAoc3NjYW5mIChsaW5lLCAiICVkICVkICVkICUqcyAlKnMgJVteXG4gXSIsCisJCQkgICAgJm1hLCAmbWksICZzeiwgZGV2aWNlKSAhPSA0KQorCQkJY29udGludWU7CisKKwkJREJHKERFQlVHX0RFVk5BTUUsIHByaW50ZigiQ2hlY2tpbmcgcGFydGl0aW9uICVzICglZCwgJWQpXG4iLAorCQkJCQkgIGRldmljZSwgbWEsIG1pKSk7CisKKwkJcHJvYmVfb25lKGNhY2hlLCBkZXZpY2UsIG1ha2VkZXYobWEsIG1pKSwgQkxLSURfUFJJX0VWTVMsCisJCQkgIG9ubHlfaWZfbmV3KTsKKwkJbnVtKys7CisJfQorCWZjbG9zZShwcm9jcHQpOworCXJldHVybiBudW07Cit9CisKKy8qCisgKiBSZWFkIHRoZSBkZXZpY2UgZGF0YSBmb3IgYWxsIGF2YWlsYWJsZSBibG9jayBkZXZpY2VzIGluIHRoZSBzeXN0ZW0uCisgKi8KK3N0YXRpYyBpbnQgcHJvYmVfYWxsKGJsa2lkX2NhY2hlIGNhY2hlLCBpbnQgb25seV9pZl9uZXcpCit7CisJRklMRSAqcHJvYzsKKwljaGFyIGxpbmVbMTAyNF07CisJY2hhciBwdG5hbWUwWzEyOF0sIHB0bmFtZTFbMTI4XSwgKnB0bmFtZSA9IDA7CisJY2hhciAqcHRuYW1lc1syXTsKKwlkZXZfdCBkZXZzWzJdOworCWludCBtYSwgbWk7CisJdW5zaWduZWQgbG9uZyBsb25nIHN6OworCWludCBsZW5zWzJdID0geyAwLCAwIH07CisJaW50IHdoaWNoID0gMCwgbGFzdCA9IDA7CisJc3RydWN0IGxpc3RfaGVhZCAqcCwgKnBuZXh0OworCisJcHRuYW1lc1swXSA9IHB0bmFtZTA7CisJcHRuYW1lc1sxXSA9IHB0bmFtZTE7CisKKwlpZiAoIWNhY2hlKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworCWlmIChjYWNoZS0+YmljX2ZsYWdzICYgQkxLSURfQklDX0ZMX1BST0JFRCAmJgorCSAgICB0aW1lKDApIC0gY2FjaGUtPmJpY190aW1lIDwgQkxLSURfUFJPQkVfSU5URVJWQUwpCisJCXJldHVybiAwOworCisJYmxraWRfcmVhZF9jYWNoZShjYWNoZSk7CisJZXZtc19wcm9iZV9hbGwoY2FjaGUsIG9ubHlfaWZfbmV3KTsKKyNpZmRlZiBWR19ESVIKKwlsdm1fcHJvYmVfYWxsKGNhY2hlLCBvbmx5X2lmX25ldyk7CisjZW5kaWYKKworCXByb2MgPSBmb3BlbihQUk9DX1BBUlRJVElPTlMsICJyIik7CisJaWYgKCFwcm9jKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QUk9DOworCisJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgcHJvYykpIHsKKwkJbGFzdCA9IHdoaWNoOworCQl3aGljaCBePSAxOworCQlwdG5hbWUgPSBwdG5hbWVzW3doaWNoXTsKKworCQlpZiAoc3NjYW5mKGxpbmUsICIgJWQgJWQgJWxsdSAlMTI4W15cbiBdIiwKKwkJCSAgICZtYSwgJm1pLCAmc3osIHB0bmFtZSkgIT0gNCkKKwkJCWNvbnRpbnVlOworCQlkZXZzW3doaWNoXSA9IG1ha2VkZXYobWEsIG1pKTsKKworCQlEQkcoREVCVUdfREVWTkFNRSwgcHJpbnRmKCJyZWFkIHBhcnRpdGlvbiBuYW1lICVzXG4iLCBwdG5hbWUpKTsKKworCQkvKiBTa2lwIHdob2xlIGRpc2sgZGV2cyB1bmxlc3MgdGhleSBoYXZlIG5vIHBhcnRpdGlvbnMuCisJCSAqIElmIGJhc2UgbmFtZSBvZiBkZXZpY2UgaGFzIGNoYW5nZWQsIGFsc28KKwkJICogY2hlY2sgcHJldmlvdXMgZGV2IHRvIHNlZSBpZiBpdCBkaWRuJ3QgaGF2ZSBhIHBhcnRuLgorCQkgKiBoZXVyaXN0aWM6IHBhcnRpdGlvbiBuYW1lIGVuZHMgaW4gYSBkaWdpdCwgJiBwYXJ0aXRpb24KKwkJICogbmFtZXMgY29udGFpbiB3aG9sZSBkZXZpY2UgbmFtZSBhcyBzdWJzdHJpbmcuCisJCSAqCisJCSAqIFNraXAgZXh0ZW5kZWQgcGFydGl0aW9ucy4KKwkJICogaGV1cmlzdGljOiBzaXplIGlzIDEKKwkJICoKKwkJICogRklYTUU6IHNraXAgL2Rldi97aWRhLGNjaXNzLHJkfSB3aG9sZS1kaXNrIGRldnMKKwkJICovCisKKwkJbGVuc1t3aGljaF0gPSBzdHJsZW4ocHRuYW1lKTsKKworCQkvKiBlbmRzIGluIGEgZGlnaXQsIGNsZWFybHkgYSBwYXJ0aXRpb24sIHNvIGNoZWNrICovCisJCWlmIChpc2RpZ2l0KHB0bmFtZVtsZW5zW3doaWNoXSAtIDFdKSkgeworCQkJREJHKERFQlVHX0RFVk5BTUUsCisJCQkgICAgcHJpbnRmKCJwYXJ0aXRpb24gZGV2ICVzLCBkZXZubyAweCUwNFhcbiIsCisJCQkJICAgcHRuYW1lLCAodW5zaWduZWQgaW50KSBkZXZzW3doaWNoXSkpOworCisJCQlpZiAoc3ogPiAxKQorCQkJCXByb2JlX29uZShjYWNoZSwgcHRuYW1lLCBkZXZzW3doaWNoXSwgMCwKKwkJCQkJICBvbmx5X2lmX25ldyk7CisJCQlsZW5zW3doaWNoXSA9IDA7CS8qIG1hcmsgYXMgY2hlY2tlZCAqLworCQl9CisKKwkJLyoKKwkJICogSWYgbGFzdCB3YXMgYSB3aG9sZSBkaXNrIGFuZCB3ZSBqdXN0IGZvdW5kIGEgcGFydGl0aW9uCisJCSAqIG9uIGl0LCByZW1vdmUgdGhlIHdob2xlLWRpc2sgZGV2IGZyb20gdGhlIGNhY2hlIGlmCisJCSAqIGl0IGV4aXN0cy4KKwkJICovCisJCWlmIChsZW5zW2xhc3RdICYmICFzdHJuY21wKHB0bmFtZXNbbGFzdF0sIHB0bmFtZSwgbGVuc1tsYXN0XSkpIHsKKwkJCWxpc3RfZm9yX2VhY2hfc2FmZShwLCBwbmV4dCwgJmNhY2hlLT5iaWNfZGV2cykgeworCQkJCWJsa2lkX2RldiB0bXA7CisKKwkJCQkvKiBmaW5kIGJsa2lkIGRldiBmb3IgdGhlIHdob2xlLWRpc2sgZGV2bm8gKi8KKwkJCQl0bXAgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfZGV2LAorCQkJCQkJIGJpZF9kZXZzKTsKKwkJCQlpZiAodG1wLT5iaWRfZGV2bm8gPT0gZGV2c1tsYXN0XSkgeworCQkJCQlEQkcoREVCVUdfREVWTkFNRSwKKwkJCQkJCXByaW50ZigiZnJlZWluZyAlc1xuIiwKKwkJCQkJCSAgICAgICB0bXAtPmJpZF9uYW1lKSk7CisJCQkJCWJsa2lkX2ZyZWVfZGV2KHRtcCk7CisJCQkJCWNhY2hlLT5iaWNfZmxhZ3MgfD0gQkxLSURfQklDX0ZMX0NIQU5HRUQ7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCWxlbnNbbGFzdF0gPSAwOworCQl9CisJCS8qCisJCSAqIElmIGxhc3Qgd2FzIG5vdCBjaGVja2VkIGJlY2F1c2UgaXQgbG9va2VkIGxpa2UgYSB3aG9sZS1kaXNrCisJCSAqIGRldiwgYW5kIHRoZSBkZXZpY2UncyBiYXNlIG5hbWUgaGFzIGNoYW5nZWQsCisJCSAqIGNoZWNrIGxhc3QgYXMgd2VsbC4KKwkJICovCisJCWlmIChsZW5zW2xhc3RdICYmIHN0cm5jbXAocHRuYW1lc1tsYXN0XSwgcHRuYW1lLCBsZW5zW2xhc3RdKSkgeworCQkJREJHKERFQlVHX0RFVk5BTUUsCisJCQkgICAgcHJpbnRmKCJ3aG9sZSBkZXYgJXMsIGRldm5vIDB4JTA0WFxuIiwKKwkJCQkgICBwdG5hbWVzW2xhc3RdLCAodW5zaWduZWQgaW50KSBkZXZzW2xhc3RdKSk7CisJCQlwcm9iZV9vbmUoY2FjaGUsIHB0bmFtZXNbbGFzdF0sIGRldnNbbGFzdF0sIDAsCisJCQkJICBvbmx5X2lmX25ldyk7CisJCQlsZW5zW2xhc3RdID0gMDsKKwkJfQorCX0KKworCS8qIEhhbmRsZSB0aGUgbGFzdCBkZXZpY2UgaWYgaXQgd2Fzbid0IHBhcnRpdGlvbmVkICovCisJaWYgKGxlbnNbd2hpY2hdKQorCQlwcm9iZV9vbmUoY2FjaGUsIHB0bmFtZSwgZGV2c1t3aGljaF0sIDAsIG9ubHlfaWZfbmV3KTsKKworCWZjbG9zZShwcm9jKTsKKwlibGtpZF9mbHVzaF9jYWNoZShjYWNoZSk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBibGtpZF9wcm9iZV9hbGwoYmxraWRfY2FjaGUgY2FjaGUpCit7CisJaW50IHJldDsKKworCURCRyhERUJVR19QUk9CRSwgcHJpbnRmKCJCZWdpbiBibGtpZF9wcm9iZV9hbGwoKVxuIikpOworCXJldCA9IHByb2JlX2FsbChjYWNoZSwgMCk7CisJY2FjaGUtPmJpY190aW1lID0gdGltZSgwKTsKKwljYWNoZS0+YmljX2ZsYWdzIHw9IEJMS0lEX0JJQ19GTF9QUk9CRUQ7CisJREJHKERFQlVHX1BST0JFLCBwcmludGYoIkVuZCBibGtpZF9wcm9iZV9hbGwoKVxuIikpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBibGtpZF9wcm9iZV9hbGxfbmV3KGJsa2lkX2NhY2hlIGNhY2hlKQoreworCWludCByZXQ7CisKKwlEQkcoREVCVUdfUFJPQkUsIHByaW50ZigiQmVnaW4gYmxraWRfcHJvYmVfYWxsX25ldygpXG4iKSk7CisJcmV0ID0gcHJvYmVfYWxsKGNhY2hlLCAxKTsKKwlEQkcoREVCVUdfUFJPQkUsIHByaW50ZigiRW5kIGJsa2lkX3Byb2JlX2FsbF9uZXcoKVxuIikpOworCXJldHVybiByZXQ7Cit9CisKKworI2lmZGVmIFRFU1RfUFJPR1JBTQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWJsa2lkX2NhY2hlIGNhY2hlID0gTlVMTDsKKwlpbnQgcmV0OworCisJYmxraWRfZGVidWdfbWFzayA9IERFQlVHX0FMTDsKKwlpZiAoYXJnYyAhPSAxKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzXG4iCisJCQkiUHJvYmUgYWxsIGRldmljZXMgYW5kIGV4aXRcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKwlpZiAoKHJldCA9IGJsa2lkX2dldF9jYWNoZSgmY2FjaGUsICIvZGV2L251bGwiKSkgIT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBlcnJvciBjcmVhdGluZyBjYWNoZSAoJWQpXG4iLAorCQkJYXJndlswXSwgcmV0KTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKGJsa2lkX3Byb2JlX2FsbChjYWNoZSkgPCAwKQorCQlwcmludGYoIiVzOiBlcnJvciBwcm9iaW5nIGRldmljZXNcbiIsIGFyZ3ZbMF0pOworCisJYmxraWRfcHV0X2NhY2hlKGNhY2hlKTsKKwlyZXR1cm4gKDApOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Rldm5vLmMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2Rldm5vLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE2ZWI5MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvZGV2bm8uYwpAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIGRldm5vLmMgLSBmaW5kIGEgcGFydGljdWxhciBkZXZpY2UgYnkgaXRzIGRldmljZSBudW1iZXIgKG1ham9yL21pbm9yKQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMSwgMjAwMyBUaGVvZG9yZSBUcydvCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgQW5kcmVhcyBEaWxnZXIKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfTUtERVZfSAorI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJibGtpZFAuaCIKKworY2hhciAqYmxraWRfc3RybmR1cChjb25zdCBjaGFyICpzLCBpbnQgbGVuZ3RoKQoreworCWNoYXIgKnJldDsKKworCWlmICghcykKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoIWxlbmd0aCkKKwkJbGVuZ3RoID0gc3RybGVuKHMpOworCisJcmV0ID0gbWFsbG9jKGxlbmd0aCArIDEpOworCWlmIChyZXQpIHsKKwkJc3RybmNweShyZXQsIHMsIGxlbmd0aCk7CisJCXJldFtsZW5ndGhdID0gJ1wwJzsKKwl9CisJcmV0dXJuIHJldDsKK30KKworY2hhciAqYmxraWRfc3RyZHVwKGNvbnN0IGNoYXIgKnMpCit7CisJcmV0dXJuIGJsa2lkX3N0cm5kdXAocywgMCk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYW4gZW50cnkgdG8gdGhlIGRpcmVjdG9yeSBsaXN0CisgKi8KK3N0YXRpYyB2b2lkIGFkZF90b19kaXJsaXN0KGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkaXJfbGlzdCAqKmxpc3QpCit7CisJc3RydWN0IGRpcl9saXN0ICpkcDsKKworCWRwID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGlyX2xpc3QpKTsKKwlpZiAoIWRwKQorCQlyZXR1cm47CisJZHAtPm5hbWUgPSBibGtpZF9zdHJkdXAobmFtZSk7CisJaWYgKCFkcC0+bmFtZSkgeworCQlmcmVlKGRwKTsKKwkJcmV0dXJuOworCX0KKwlkcC0+bmV4dCA9ICpsaXN0OworCSpsaXN0ID0gZHA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIGEgZGlyZWN0b3J5IGxpc3QKKyAqLworc3RhdGljIHZvaWQgZnJlZV9kaXJsaXN0KHN0cnVjdCBkaXJfbGlzdCAqKmxpc3QpCit7CisJc3RydWN0IGRpcl9saXN0ICpkcCwgKm5leHQ7CisKKwlmb3IgKGRwID0gKmxpc3Q7IGRwOyBkcCA9IG5leHQpIHsKKwkJbmV4dCA9IGRwLT5uZXh0OworCQlmcmVlKGRwLT5uYW1lKTsKKwkJZnJlZShkcCk7CisJfQorCSpsaXN0ID0gTlVMTDsKK30KKwordm9pZCBibGtpZF9fc2Nhbl9kaXIoY29uc3QgY2hhciAqZGlybmFtZSwgZGV2X3QgZGV2bm8sIHN0cnVjdCBkaXJfbGlzdCAqKmxpc3QsCisJCSAgICAgY2hhciAqKmRldm5hbWUpCit7CisJRElSCSpkaXI7CisJc3RydWN0IGRpcmVudCAqZHA7CisJY2hhcglwYXRoWzEwMjRdOworCWludAlkaXJsZW47CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoKGRpciA9IG9wZW5kaXIoZGlybmFtZSkpID09IE5VTEwpCisJCXJldHVybjsKKwlkaXJsZW4gPSBzdHJsZW4oZGlybmFtZSkgKyAyOworCXdoaWxlICgoZHAgPSByZWFkZGlyKGRpcikpICE9IDApIHsKKwkJaWYgKGRpcmxlbiArIHN0cmxlbihkcC0+ZF9uYW1lKSA+PSBzaXplb2YocGF0aCkpCisJCQljb250aW51ZTsKKworCQlpZiAoZHAtPmRfbmFtZVswXSA9PSAnLicgJiYKKwkJICAgICgoZHAtPmRfbmFtZVsxXSA9PSAwKSB8fAorCQkgICAgICgoZHAtPmRfbmFtZVsxXSA9PSAnLicpICYmIChkcC0+ZF9uYW1lWzJdID09IDApKSkpCisJCQljb250aW51ZTsKKworCQlzcHJpbnRmKHBhdGgsICIlcy8lcyIsIGRpcm5hbWUsIGRwLT5kX25hbWUpOworCQlpZiAoc3RhdChwYXRoLCAmc3QpIDwgMCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChTX0lTQkxLKHN0LnN0X21vZGUpICYmIHN0LnN0X3JkZXYgPT0gZGV2bm8pIHsKKwkJCSpkZXZuYW1lID0gYmxraWRfc3RyZHVwKHBhdGgpOworCQkJREJHKERFQlVHX0RFVk5PLAorCQkJICAgIHByaW50ZigiZm91bmQgMHglbGx4IGF0ICVzICglcClcbiIsIChsb25nIGxvbmcpZGV2bm8sCisJCQkJICAgcGF0aCwgKmRldm5hbWUpKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChsaXN0ICYmIFNfSVNESVIoc3Quc3RfbW9kZSkgJiYgIWxzdGF0KHBhdGgsICZzdCkgJiYKKwkJICAgIFNfSVNESVIoc3Quc3RfbW9kZSkpCisJCQlhZGRfdG9fZGlybGlzdChwYXRoLCBsaXN0KTsKKwl9CisJY2xvc2VkaXIoZGlyKTsKKwlyZXR1cm47Cit9CisKKy8qIERpcmVjdG9yaWVzIHdoZXJlIHdlIHdpbGwgdHJ5IHRvIHNlYXJjaCBmb3IgZGV2aWNlIG51bWJlcnMgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZXZkaXJzW10gPSB7ICIvZGV2aWNlcyIsICIvZGV2ZnMiLCAiL2RldiIsIE5VTEwgfTsKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gZmluZHMgdGhlIHBhdGhuYW1lIHRvIGEgYmxvY2sgZGV2aWNlIHdpdGggYSBnaXZlbgorICogZGV2aWNlIG51bWJlci4gIEl0IHJldHVybnMgYSBwb2ludGVyIHRvIGFsbG9jYXRlZCBtZW1vcnkgdG8gdGhlCisgKiBwYXRobmFtZSBvbiBzdWNjZXNzLCBhbmQgTlVMTCBvbiBmYWlsdXJlLgorICovCitjaGFyICpibGtpZF9kZXZub190b19kZXZuYW1lKGRldl90IGRldm5vKQoreworCXN0cnVjdCBkaXJfbGlzdCAqbGlzdCA9IE5VTEwsICpuZXdfbGlzdCA9IE5VTEw7CisJY2hhciAqZGV2bmFtZSA9IE5VTEw7CisJY29uc3QgY2hhciAqKmRpcjsKKworCS8qCisJICogQWRkIHRoZSBzdGFydGluZyBkaXJlY3RvcmllcyB0byBzZWFyY2ggaW4gcmV2ZXJzZSBvcmRlciBvZgorCSAqIGltcG9ydGFuY2UsIHNpbmNlIHdlIGFyZSB1c2luZyBhIHN0YWNrLi4uCisJICovCisJZm9yIChkaXIgPSBkZXZkaXJzOyAqZGlyOyBkaXIrKykKKwkJYWRkX3RvX2Rpcmxpc3QoKmRpciwgJmxpc3QpOworCisJd2hpbGUgKGxpc3QpIHsKKwkJc3RydWN0IGRpcl9saXN0ICpjdXJyZW50ID0gbGlzdDsKKworCQlsaXN0ID0gbGlzdC0+bmV4dDsKKwkJREJHKERFQlVHX0RFVk5PLCBwcmludGYoImRpcmVjdG9yeSAlc1xuIiwgY3VycmVudC0+bmFtZSkpOworCQlibGtpZF9fc2Nhbl9kaXIoY3VycmVudC0+bmFtZSwgZGV2bm8sICZuZXdfbGlzdCwgJmRldm5hbWUpOworCQlmcmVlKGN1cnJlbnQtPm5hbWUpOworCQlmcmVlKGN1cnJlbnQpOworCQlpZiAoZGV2bmFtZSkKKwkJCWJyZWFrOworCQkvKgorCQkgKiBJZiB3ZSdyZSBkb25lIGNoZWNraW5nIGF0IHRoaXMgbGV2ZWwsIGRlc2NlbmQgdG8KKwkJICogdGhlIG5leHQgbGV2ZWwgb2Ygc3ViZGlyZWN0b3JpZXMuIChicmVhZHRoLWZpcnN0KQorCQkgKi8KKwkJaWYgKGxpc3QgPT0gTlVMTCkgeworCQkJbGlzdCA9IG5ld19saXN0OworCQkJbmV3X2xpc3QgPSBOVUxMOworCQl9CisJfQorCWZyZWVfZGlybGlzdCgmbGlzdCk7CisJZnJlZV9kaXJsaXN0KCZuZXdfbGlzdCk7CisKKwlpZiAoIWRldm5hbWUpIHsKKwkJREJHKERFQlVHX0RFVk5PLAorCQkgICAgcHJpbnRmKCJibGtpZDogY291bGRuJ3QgZmluZCBkZXZubyAweCUwNGx4XG4iLAorCQkJICAgKHVuc2lnbmVkIGxvbmcpIGRldm5vKSk7CisJfSBlbHNlIHsKKwkJREJHKERFQlVHX0RFVk5PLAorCQkgICAgcHJpbnRmKCJmb3VuZCBkZXZubyAweCUwNGxseCBhcyAlc1xuIiwgKGxvbmcgbG9uZylkZXZubywgZGV2bmFtZSkpOworCX0KKworCisJcmV0dXJuIGRldm5hbWU7Cit9CisKKyNpZmRlZiBURVNUX1BST0dSQU0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKwljaGFyCSpkZXZuYW1lLCAqdG1wOworCWludAltYWpvciwgbWlub3I7CisJZGV2X3QJZGV2bm87CisJY29uc3QgY2hhciAqZXJybXNnID0gIkNvdWxkbid0IHBhcnNlICVzOiAlc1xuIjsKKworCWJsa2lkX2RlYnVnX21hc2sgPSBERUJVR19BTEw7CisJaWYgKChhcmdjICE9IDIpICYmIChhcmdjICE9IDMpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6XHQlcyBkZXZpY2VfbnVtYmVyXG5cdCVzIG1ham9yIG1pbm9yXG4iCisJCQkiUmVzb2x2ZSBhIGRldmljZSBudW1iZXIgdG8gYSBkZXZpY2UgbmFtZVxuIiwKKwkJCWFyZ3ZbMF0sIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKwlpZiAoYXJnYyA9PSAyKSB7CisJCWRldm5vID0gc3RydG91bChhcmd2WzFdLCAmdG1wLCAwKTsKKwkJaWYgKCp0bXApIHsKKwkJCWZwcmludGYoc3RkZXJyLCBlcnJtc2csICJkZXZpY2UgbnVtYmVyIiwgYXJndlsxXSk7CisJCQlleGl0KDEpOworCQl9CisJfSBlbHNlIHsKKwkJbWFqb3IgPSBzdHJ0b3VsKGFyZ3ZbMV0sICZ0bXAsIDApOworCQlpZiAoKnRtcCkgeworCQkJZnByaW50ZihzdGRlcnIsIGVycm1zZywgIm1ham9yIG51bWJlciIsIGFyZ3ZbMV0pOworCQkJZXhpdCgxKTsKKwkJfQorCQltaW5vciA9IHN0cnRvdWwoYXJndlsyXSwgJnRtcCwgMCk7CisJCWlmICgqdG1wKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgZXJybXNnLCAibWlub3IgbnVtYmVyIiwgYXJndlsyXSk7CisJCQlleGl0KDEpOworCQl9CisJCWRldm5vID0gbWFrZWRldihtYWpvciwgbWlub3IpOworCX0KKwlwcmludGYoIkxvb2tpbmcgZm9yIGRldmljZSAweCUwNGxseFxuIiwgKGxvbmcgbG9uZylkZXZubyk7CisJZGV2bmFtZSA9IGJsa2lkX2Rldm5vX3RvX2Rldm5hbWUoZGV2bm8pOworCWZyZWUoZGV2bmFtZSk7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvZ2V0c2l6ZS5jIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9nZXRzaXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU4ZWI0YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvZ2V0c2l6ZS5jCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogZ2V0c2l6ZS5jIC0tLSBnZXQgdGhlIHNpemUgb2YgYSBwYXJ0aXRpb24uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk1IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImJsa2lkUC5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0ZEX0gKKyNpbmNsdWRlIDxsaW51eC9mZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKKyNpbmNsdWRlIDxzeXMvZGlza2xhYmVsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19ESVNLX0gKKyNpbmNsdWRlIDxzeXMvZGlzay5oPgorI2VuZGlmCisjaWZkZWYgX19saW51eF9fCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKworCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX0lPKSAmJiAhZGVmaW5lZChCTEtHRVRTSVpFKQorI2RlZmluZSBCTEtHRVRTSVpFIF9JTygweDEyLDk2KQkvKiByZXR1cm4gZGV2aWNlIHNpemUgKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX0lPUikgJiYgIWRlZmluZWQoQkxLR0VUU0laRTY0KQorI2RlZmluZSBCTEtHRVRTSVpFNjQgX0lPUigweDEyLDExNCxzaXplX3QpCS8qIHJldHVybiBkZXZpY2Ugc2l6ZSBpbiBieXRlcyAodTY0ICphcmcpICovCisjZW5kaWYKKworI2lmZGVmIEFQUExFX0RBUldJTgorI2RlZmluZSBCTEtHRVRTSVpFIERLSU9DR0VUQkxPQ0tDT1VOVDMyCisjZW5kaWYgLyogQVBQTEVfREFSV0lOICovCisKK3N0YXRpYyBpbnQgdmFsaWRfb2Zmc2V0KGludCBmZCwgYmxraWRfbG9mZl90IG9mZnNldCkKK3sKKwljaGFyIGNoOworCisJaWYgKGJsa2lkX2xsc2VlayhmZCwgb2Zmc2V0LCAwKSA8IDApCisJCXJldHVybiAwOworCWlmIChyZWFkKGZkLCAmY2gsIDEpIDwgMSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gYSBwYXJ0aXRpb24KKyAqLworYmxraWRfbG9mZl90IGJsa2lkX2dldF9kZXZfc2l6ZShpbnQgZmQpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIHNpemU2NDsKKwlibGtpZF9sb2ZmX3QgaGlnaCwgbG93OworCisjaWZkZWYgREtJT0NHRVRCTE9DS0NPVU5UCS8qIEZvciBBcHBsZSBEYXJ3aW4gKi8KKwlpZiAoaW9jdGwoZmQsIERLSU9DR0VUQkxPQ0tDT1VOVCwgJnNpemU2NCkgPj0gMCkgeworCQlpZiAoc2l6ZW9mKGJsa2lkX2xvZmZfdCkgPCBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSAmJgorCQkgICAgKHNpemU2NCA8PCA5KSA+IDB4RkZGRkZGRkYpCisJCQlyZXR1cm4gMDsgLyogRUZCSUcgKi8KKwkJcmV0dXJuIChibGtpZF9sb2ZmX3Qpc2l6ZTY0IDw8IDk7CisJfQorI2VuZGlmCisKKyNpZmRlZiBCTEtHRVRTSVpFNjQKKwl7CisJCWludCB2YWxpZF9ibGtnZXRzaXplNjQgPSAxOworI2lmZGVmIF9fbGludXhfXworCQlzdHJ1Y3QJCXV0c25hbWUgdXQ7CisKKwkJaWYgKCh1bmFtZSgmdXQpID09IDApICYmCisJCSAgICAoKHV0LnJlbGVhc2VbMF0gPT0gJzInKSAmJiAodXQucmVsZWFzZVsxXSA9PSAnLicpICYmCisJCSAgICAgKHV0LnJlbGVhc2VbMl0gPCAnNicpICYmICh1dC5yZWxlYXNlWzNdID09ICcuJykpKQorCQkJdmFsaWRfYmxrZ2V0c2l6ZTY0ID0gMDsKKyNlbmRpZgorCQlpZiAodmFsaWRfYmxrZ2V0c2l6ZTY0ICYmCisJCSAgICBpb2N0bChmZCwgQkxLR0VUU0laRTY0LCAmc2l6ZTY0KSA+PSAwKSB7CisJCQlpZiAoc2l6ZW9mKGJsa2lkX2xvZmZfdCkgPCBzaXplb2YodW5zaWduZWQgbG9uZyBsb25nKSAmJgorCQkJICAgIChzaXplNjQgPiAweEZGRkZGRkZGKSkKKwkJCQlyZXR1cm4gMDsgLyogRUZCSUcgKi8KKwkJCXJldHVybiBzaXplNjQ7CisJCX0KKwl9CisjZW5kaWYgLyogQkxLR0VUU0laRTY0ICovCisKKyNpZmRlZiBCTEtHRVRTSVpFCisJeworCQl1bnNpZ25lZCBsb25nIHNpemU7CisKKwkJaWYgKGlvY3RsKGZkLCBCTEtHRVRTSVpFLCAmc2l6ZSkgPj0gMCkKKwkJCXJldHVybiAoYmxraWRfbG9mZl90KXNpemUgPDwgOTsKKwl9CisjZW5kaWYKKworLyogdGVzdGVkIG9uIEZyZWVCU0QgNi4xLVJFTEVBU0UgaTM4NiAqLworI2lmZGVmIERJT0NHTUVESUFTSVpFCisJaWYgKGlvY3RsKGZkLCBESU9DR01FRElBU0laRSwgJnNpemU2NCkgPj0gMCkKKwkJcmV0dXJuIChvZmZfdClzaXplNjQ7CisjZW5kaWYgLyogRElPQ0dNRURJQVNJWkUgKi8KKworI2lmZGVmIEZER0VUUFJNCisJeworCQlzdHJ1Y3QgZmxvcHB5X3N0cnVjdCB0aGlzX2Zsb3BweTsKKworCQlpZiAoaW9jdGwoZmQsIEZER0VUUFJNLCAmdGhpc19mbG9wcHkpID49IDApCisJCQlyZXR1cm4gKGJsa2lkX2xvZmZfdCl0aGlzX2Zsb3BweS5zaXplIDw8IDk7CisJfQorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX1NZU19ESVNLTEFCRUxfSCkgJiYgZGVmaW5lZChESU9DR0RJTkZPKQorCXsKKwkJaW50IHBhcnQgPSAtMTsKKwkJc3RydWN0IGRpc2tsYWJlbCBsYWI7CisJCXN0cnVjdCBwYXJ0aXRpb24gKnBwOworCQljaGFyIGNoOworCQlzdHJ1Y3Qgc3RhdCBzdDsKKworCQkvKgorCQkgKiBUaGlzIGNvZGUgd29ya3MgZm9yIEZyZWVCU0QgNC4xMSBpMzg2LCBleGNlcHQgZm9yIHRoZSBmdWxsCisJCSAqIGRldmljZSAoc3VjaCBhcyAvZGV2L2FkMCkuIEl0IGRvZXNuJ3Qgd29yayBwcm9wZXJseSBmb3IKKwkJICogbmV3ZXIgRnJlZUJTRCB0aG91Z2guIEZyZWVCU0QgPj0gNS4wIHNob3VsZCBiZSBjb3ZlcmVkIGJ5CisJCSAqIHRoZSBESU9DR01FRElBU0laRSBhYm92ZSBob3dldmVyLgorCQkgKgorCQkgKiBOb3RlIHRoYXQgRnJlZUJTRCA+PSA0LjAgaGFzIGRpc2sgZGV2aWNlcyBhcyB1bmJ1ZmZlcmVkIChyYXcsCisJCSAqIGNoYXJhY3RlcikgZGV2aWNlcywgc28gd2UgbmVlZCB0byBjaGVjayBmb3IgU19JU0NIUiwgdG9vLgorCQkgKi8KKwkJaWYgKGZzdGF0KGZkLCAmc3QpID49IDAgJiYKKwkJICAgIChTX0lTQkxLKHN0LnN0X21vZGUpIHx8IFNfSVNDSFIoc3Quc3RfbW9kZSkpKQorCQkJcGFydCA9IHN0LnN0X3JkZXYgJiA3OworCisJCWlmIChwYXJ0ID49IDAgJiYgKGlvY3RsKGZkLCBESU9DR0RJTkZPLCAoY2hhciAqKSZsYWIpID49IDApKSB7CisJCQlwcCA9ICZsYWIuZF9wYXJ0aXRpb25zW3BhcnRdOworCQkJaWYgKHBwLT5wX3NpemUpCisJCQkJcmV0dXJuIHBwLT5wX3NpemUgPDwgOTsKKwkJfQorCX0KKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfU1lTX0RJU0tMQUJFTF9IKSAmJiBkZWZpbmVkKERJT0NHRElORk8pICovCisJeworI2lmIGRlZmluZWQoSEFWRV9GU1RBVDY0KSAmJiAhZGVmaW5lZChfX09TWF9BVkFJTEFCTEVfQlVUX0RFUFJFQ0FURUQpCisJCXN0cnVjdCBzdGF0NjQgICBzdDsKKwkJaWYgKGZzdGF0NjQoZmQsICZzdCkgPT0gMCkKKyNlbHNlCisJCXN0cnVjdCBzdGF0CXN0OworCQlpZiAoZnN0YXQoZmQsICZzdCkgPT0gMCkKKyNlbmRpZgorCQkJaWYgKFNfSVNSRUcoc3Quc3RfbW9kZSkpCisJCQkJcmV0dXJuIHN0LnN0X3NpemU7CisJfQorCisJLyoKKwkgKiBPSywgd2UgY291bGRuJ3QgZmlndXJlIGl0IG91dCBieSB1c2luZyBhIHNwZWNpYWxpemVkIGlvY3RsLAorCSAqIHdoaWNoIGlzIGdlbmVyYWxseSB0aGUgYmVzdCB3YXkuICBTbyBkbyBiaW5hcnkgc2VhcmNoIHRvCisJICogZmluZCB0aGUgc2l6ZSBvZiB0aGUgcGFydGl0aW9uLgorCSAqLworCWxvdyA9IDA7CisJZm9yIChoaWdoID0gMTAyNDsgdmFsaWRfb2Zmc2V0KGZkLCBoaWdoKTsgaGlnaCAqPSAyKQorCQlsb3cgPSBoaWdoOworCXdoaWxlIChsb3cgPCBoaWdoIC0gMSkgeworCQljb25zdCBibGtpZF9sb2ZmX3QgbWlkID0gKGxvdyArIGhpZ2gpIC8gMjsKKworCQlpZiAodmFsaWRfb2Zmc2V0KGZkLCBtaWQpKQorCQkJbG93ID0gbWlkOworCQllbHNlCisJCQloaWdoID0gbWlkOworCX0KKwlyZXR1cm4gbG93ICsgMTsKK30KKworI2lmZGVmIFRFU1RfUFJPR1JBTQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWxvbmcgbG9uZyBieXRlczsKKwlpbnQJZmQ7CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgZGV2aWNlXG4iCisJCQkiRGV0ZXJtaW5lIHRoZSBzaXplIG9mIGEgZGV2aWNlXG4iLCBhcmd2WzBdKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKChmZCA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpKSA8IDApCisJCXBlcnJvcihhcmd2WzBdKTsKKworCWJ5dGVzID0gYmxraWRfZ2V0X2Rldl9zaXplKGZkKTsKKwlwcmludGYoIkRldmljZSAlcyBoYXMgJWxsZCAxayBibG9ja3MuXG4iLCBhcmd2WzFdLAorCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKWJ5dGVzID4+IDEwKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL2xpYmJsa2lkLjMuaW4gYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2xpYmJsa2lkLjMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyNGNiMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvbGliYmxraWQuMy5pbgpAQCAtMCwwICsxLDgwIEBACisuXCIgQ29weXJpZ2h0IDIwMDEgQW5kcmVhcyBEaWxnZXIgKGFkaWxnZXJAdHVyYm9saW51eC5jb20pCisuXCIKKy5cIiBUaGlzIG1hbiBwYWdlIHdhcyBjcmVhdGVkIGZvciBsaWJibGtpZC5zby4xLjAgZnJvbSBlMmZzcHJvZ3MtMS4yNC4KKy5cIgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiCisuXCIgQ3JlYXRlZCAgV2VkIFNlcCAxNCAxMjowMjoxMiAyMDAxLCBBbmRyZWFzIERpbGdlcgorLlRIIExJQkJMS0lEIDMgIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2xpYmJsa2lkIFwtIGJsb2NrIGRldmljZSBpZGVudGlmaWNhdGlvbiBsaWJyYXJ5CisuU0ggU1lOT1BTSVMKKy5CICNpbmNsdWRlIDxibGtpZC9ibGtpZC5oPgorLnNwCisuQiBjYworLkkgZmlsZS5jCisuQiBcLWxibGtpZAorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIGxpYmJsa2lkCitsaWJyYXJ5IGlzIHVzZWQgdG8gaWRlbnRpZnkgYmxvY2sgZGV2aWNlcyAoZGlza3MpIGFzIHRvIHRoZWlyIGNvbnRlbnQgKGUuZy4KK2ZpbGVzeXN0ZW0gdHlwZSkgYXMgd2VsbCBhcyBleHRyYWN0aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcworZmlsZXN5c3RlbSBsYWJlbHMvdm9sdW1lIG5hbWVzLCB1bmlxdWUgaWRlbnRpZmllcnMvc2VyaWFsIG51bWJlcnMsIGV0Yy4KK0EgY29tbW9uIHVzZSBpcyB0byBhbGxvdyB1c2Ugb2YgTEFCRUw9IGFuZCBVVUlEPSB0YWdzIGluc3RlYWQgb2YgaGFyZC1jb2RpbmcKK3NwZWNpZmljIGJsb2NrIGRldmljZSBuYW1lcyBpbnRvIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisuUAorQmxvY2sgZGV2aWNlIGluZm9ybWF0aW9uIGlzIG5vcm1hbGx5IGtlcHQgaW4gYSBjYWNoZSBmaWxlCisuSSAvZXRjL2Jsa2lkLnRhYgorYW5kIGlzIHZlcmlmaWVkIHRvIHN0aWxsIGJlIHZhbGlkIGJlZm9yZSBiZWluZyByZXR1cm5lZCB0byB0aGUgdXNlcgorKGlmIHRoZSB1c2VyIGhhcyByZWFkIHBlcm1pc3Npb24gb24gdGhlIHJhdyBibG9jayBkZXZpY2UsIG90aGVyd2lzZSBub3QpLgorVGhlIGNhY2hlIGZpbGUgYWxzbyBhbGxvd3MgdW5wcml2aWxlZ2VkIHVzZXJzIChub3JtYWxseSBhbnlvbmUgb3RoZXIKK3RoYW4gcm9vdCwgb3IgdGhvc2Ugbm90IGluIHRoZSAiZGlzayIgZ3JvdXApIHRvIGxvY2F0ZSBkZXZpY2VzIGJ5IGxhYmVsL2lkLgorVGhlIHN0YW5kYXJkIGxvY2F0aW9uIG9mIHRoZSBjYWNoZSBmaWxlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZQorZW52aXJvbm1lbnQgdmFyaWFibGUgQkxLSURfRklMRS4KKy5QCitJbiBzaXR1YXRpb25zIHdoZXJlIG9uZSBpcyBnZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGtub3duIGRldmljZSwKK2l0IGRvZXMgbm90IGltcGFjdCBwZXJmb3JtYW5jZSB3aGV0aGVyIHRoZSBjYWNoZSBpcyB1c2VkIG9yIG5vdCAodW5sZXNzIHlvdQorYXJlIG5vdCBhYmxlIHRvIHJlYWQgdGhlIGJsb2NrIGRldmljZSBkaXJlY3RseSkuICBJZiB5b3UgYXJlIGRlYWxpbmcgd2l0aAorbXVsdGlwbGUgZGV2aWNlcywgdXNlIG9mIHRoZSBjYWNoZSBpcyBoaWdobHkgcmVjb21tZW5kZWQgKGV2ZW4gaWYgZW1wdHkpIGFzCitkZXZpY2VzIHdpbGwgYmUgc2Nhbm5lZCBhdCBtb3N0IG9uZSB0aW1lIGFuZCB0aGUgb24tZGlzayBjYWNoZSB3aWxsIGJlCit1cGRhdGVkIGlmIHBvc3NpYmxlLiAgVGhlcmUgaXMgcmFyZWx5IGEgcmVhc29uIG5vdCB0byB1c2UgdGhlIGNhY2hlLgorLlAKK0luIHNvbWUgY2FzZXMgKG1vZHVsYXIga2VybmVscyksIGJsb2NrIGRldmljZXMgYXJlIG5vdCBldmVuIHZpc2libGUgdW50aWwKK2FmdGVyIHRoZXkgYXJlIGFjY2Vzc2VkIHRoZSBmaXJzdCB0aW1lLCBzbyBpdCBpcyBjcml0aWNhbCB0aGF0IHRoZXJlIGlzCitzb21lIHdheSB0byBsb2NhdGUgdGhlc2UgZGV2aWNlcyB3aXRob3V0IGVudW1lcmF0aW5nIG9ubHkgdmlzaWJsZSBkZXZpY2VzLAorc28gdGhlIHVzZSBvZiB0aGUgY2FjaGUgZmlsZSBpcworLkIgcmVxdWlyZWQKK2luIHRoaXMgc2l0dWF0aW9uLgorLlNIIEFVVEhPUgorLkIgbGliYmxraWQKK3dhcyB3cml0dGVuIGJ5IEFuZHJlYXMgRGlsZ2VyIGZvciB0aGUgZXh0MiBmaWxlc3lzdGVtIHV0aWx0aWVzLCB3aXRoIGlucHV0Citmcm9tIFRlZCBUcydvLiAgVGhlIGxpYnJhcnkgd2FzIHN1YnNlcXVlbnRseSBoZWF2aWx5IG1vZGlmaWVkIGJ5IFRlZCBUcydvLgorLlNIIEZJTEVTCisuVFAKKy5JIC9ldGMvYmxraWQudGFiCitDYWNoZXMgZGF0YSBleHRyYWN0ZWQgZnJvbSBlYWNoIHJlY29nbml6ZWQgYmxvY2sgZGV2aWNlLgorLlNIIEFWQUlMQUJJTElUWQorLkIgbGliYmxraWQKK2lzIHBhcnQgb2YgdGhlIGUyZnNwcm9ncyBwYWNrYWdlIHNpbmNlIHZlcnNpb24gMS4zMyBhbmQgaXMgYXZhaWxhYmxlIGZyb20KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LgorLlNIIENPUFlJTkcKKy5CIGxpYmJsa2lkCitpcyBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChMR1BMKSwKK3ZlcnNpb24gMiAob3IgYXQgeW91ciBkaXNjcmV0aW9uIGFueSBsYXRlciB2ZXJzaW9uKS4gIEEgY29weSBvZiB0aGUgTEdQTAorc2hvdWxkIGJlIGluY2x1ZGVkIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvCisuUlMKK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLmJyCis1MSBGcmFua2xpbiBTdAorLmJyCitGaWZ0aCBGbG9vcgorLmJyCitCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKy5SRQorLlBQCitvciB2aXNpdAorLlVSIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0xHUEwKK2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0xHUEwKKy5VRQorLlNIICJTRUUgQUxTTyIKKy5CUiBibGtpZCAoOCkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvbGlzdC5oIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9saXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZhNWFjMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvbGlzdC5oCkBAIC0wLDAgKzEsMTc2IEBACisjaWYgIWRlZmluZWQoX0JMS0lEX0xJU1RfSCkgJiYgIWRlZmluZWQoTElTVF9IRUFEX0lOSVQpCisjZGVmaW5lIF9CTEtJRF9MSVNUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgX0lOTElORV8gc3RhdGljIF9faW5saW5lX18KKyNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZvciBXYXRjb20gQyAqLworI2RlZmluZSBfSU5MSU5FXyBzdGF0aWMgaW5saW5lCisjZW5kaWYKKworLyoKKyAqIFNpbXBsZSBkb3VibHkgbGlua2VkIGxpc3QgaW1wbGVtZW50YXRpb24uCisgKgorICogU29tZSBvZiB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zICgiX194eHgiKSBhcmUgdXNlZnVsIHdoZW4KKyAqIG1hbmlwdWxhdGluZyB3aG9sZSBsaXN0cyByYXRoZXIgdGhhbiBzaW5nbGUgZW50cmllcywgYXMKKyAqIHNvbWV0aW1lcyB3ZSBhbHJlYWR5IGtub3cgdGhlIG5leHQvcHJldiBlbnRyaWVzIGFuZCB3ZSBjYW4KKyAqIGdlbmVyYXRlIGJldHRlciBjb2RlIGJ5IHVzaW5nIHRoZW0gZGlyZWN0bHkgcmF0aGVyIHRoYW4KKyAqIHVzaW5nIHRoZSBnZW5lcmljIHNpbmdsZS1lbnRyeSByb3V0aW5lcy4KKyAqLworCitzdHJ1Y3QgbGlzdF9oZWFkIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsKK307CisKKyNkZWZpbmUgTElTVF9IRUFEX0lOSVQobmFtZSkgeyAmKG5hbWUpLCAmKG5hbWUpIH0KKworI2RlZmluZSBJTklUX0xJU1RfSEVBRChwdHIpIGRvIHsgXAorCShwdHIpLT5uZXh0ID0gKHB0cik7IChwdHIpLT5wcmV2ID0gKHB0cik7IFwKK30gd2hpbGUgKDApCisKKy8qCisgKiBJbnNlcnQgYSBuZXcgZW50cnkgYmV0d2VlbiB0d28ga25vd24gY29uc2VjdXRpdmUgZW50cmllcy4KKyAqCisgKiBUaGlzIGlzIG9ubHkgZm9yIGludGVybmFsIGxpc3QgbWFuaXB1bGF0aW9uIHdoZXJlIHdlIGtub3cKKyAqIHRoZSBwcmV2L25leHQgZW50cmllcyBhbHJlYWR5IQorICovCitfSU5MSU5FXyB2b2lkIF9fbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqIGFkZCwKKwlzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwKKwlzdHJ1Y3QgbGlzdF9oZWFkICogbmV4dCkKK3sKKwluZXh0LT5wcmV2ID0gYWRkOworCWFkZC0+bmV4dCA9IG5leHQ7CisJYWRkLT5wcmV2ID0gcHJldjsKKwlwcmV2LT5uZXh0ID0gYWRkOworfQorCisvKioKKyAqIGxpc3RfYWRkIC0gYWRkIGEgbmV3IGVudHJ5CisgKiBAYWRkOgluZXcgZW50cnkgdG8gYmUgYWRkZWQKKyAqIEBoZWFkOglsaXN0IGhlYWQgdG8gYWRkIGl0IGFmdGVyCisgKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGFmdGVyIHRoZSBzcGVjaWZpZWQgaGVhZC4KKyAqIFRoaXMgaXMgZ29vZCBmb3IgaW1wbGVtZW50aW5nIHN0YWNrcy4KKyAqLworX0lOTElORV8gdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICphZGQsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJX19saXN0X2FkZChhZGQsIGhlYWQsIGhlYWQtPm5leHQpOworfQorCisvKioKKyAqIGxpc3RfYWRkX3RhaWwgLSBhZGQgYSBuZXcgZW50cnkKKyAqIEBhZGQ6CW5ldyBlbnRyeSB0byBiZSBhZGRlZAorICogQGhlYWQ6CWxpc3QgaGVhZCB0byBhZGQgaXQgYmVmb3JlCisgKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGJlZm9yZSB0aGUgc3BlY2lmaWVkIGhlYWQuCisgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIHF1ZXVlcy4KKyAqLworX0lOTElORV8gdm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKmFkZCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlfX2xpc3RfYWRkKGFkZCwgaGVhZC0+cHJldiwgaGVhZCk7Cit9CisKKy8qCisgKiBEZWxldGUgYSBsaXN0IGVudHJ5IGJ5IG1ha2luZyB0aGUgcHJldi9uZXh0IGVudHJpZXMKKyAqIHBvaW50IHRvIGVhY2ggb3RoZXIuCisgKgorICogVGhpcyBpcyBvbmx5IGZvciBpbnRlcm5hbCBsaXN0IG1hbmlwdWxhdGlvbiB3aGVyZSB3ZSBrbm93CisgKiB0aGUgcHJldi9uZXh0IGVudHJpZXMgYWxyZWFkeSEKKyAqLworX0lOTElORV8gdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAorCQkJCSAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCit7CisJbmV4dC0+cHJldiA9IHByZXY7CisJcHJldi0+bmV4dCA9IG5leHQ7Cit9CisKKy8qKgorICogbGlzdF9kZWwgLSBkZWxldGVzIGVudHJ5IGZyb20gbGlzdC4KKyAqIEBlbnRyeToJdGhlIGVsZW1lbnQgdG8gZGVsZXRlIGZyb20gdGhlIGxpc3QuCisgKgorICogbGlzdF9lbXB0eSgpIG9uIEBlbnRyeSBkb2VzIG5vdCByZXR1cm4gdHJ1ZSBhZnRlciB0aGlzLCBAZW50cnkgaXMKKyAqIGluIGFuIHVuZGVmaW5lZCBzdGF0ZS4KKyAqLworX0lOTElORV8gdm9pZCBsaXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSkKK3sKKwlfX2xpc3RfZGVsKGVudHJ5LT5wcmV2LCBlbnRyeS0+bmV4dCk7Cit9CisKKy8qKgorICogbGlzdF9kZWxfaW5pdCAtIGRlbGV0ZXMgZW50cnkgZnJvbSBsaXN0IGFuZCByZWluaXRpYWxpemUgaXQuCisgKiBAZW50cnk6CXRoZSBlbGVtZW50IHRvIGRlbGV0ZSBmcm9tIHRoZSBsaXN0LgorICovCitfSU5MSU5FXyB2b2lkIGxpc3RfZGVsX2luaXQoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCit7CisJX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOworCUlOSVRfTElTVF9IRUFEKGVudHJ5KTsKK30KKworLyoqCisgKiBsaXN0X2VtcHR5IC0gdGVzdHMgd2hldGhlciBhIGxpc3QgaXMgZW1wdHkKKyAqIEBoZWFkOgl0aGUgbGlzdCB0byB0ZXN0LgorICovCitfSU5MSU5FXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cit9CisKKy8qKgorICogbGlzdF9zcGxpY2UgLSBqb2luIHR3byBsaXN0cworICogQGxpc3Q6CXRoZSBuZXcgbGlzdCB0byBhZGQuCisgKiBAaGVhZDoJdGhlIHBsYWNlIHRvIGFkZCBpdCBpbiB0aGUgZmlyc3QgbGlzdC4KKyAqLworX0lOTElORV8gdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXN0cnVjdCBsaXN0X2hlYWQgKmZpcnN0ID0gbGlzdC0+bmV4dDsKKworCWlmIChmaXJzdCAhPSBsaXN0KSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OworCQlzdHJ1Y3QgbGlzdF9oZWFkICphdCA9IGhlYWQtPm5leHQ7CisKKwkJZmlyc3QtPnByZXYgPSBoZWFkOworCQloZWFkLT5uZXh0ID0gZmlyc3Q7CisKKwkJbGFzdC0+bmV4dCA9IGF0OworCQlhdC0+cHJldiA9IGxhc3Q7CisJfQorfQorCisvKioKKyAqIGxpc3RfZW50cnkgLSBnZXQgdGhlIHN0cnVjdCBmb3IgdGhpcyBlbnRyeQorICogQHB0cjoJdGhlICZzdHJ1Y3QgbGlzdF9oZWFkIHBvaW50ZXIuCisgKiBAdHlwZToJdGhlIHR5cGUgb2YgdGhlIHN0cnVjdCB0aGlzIGlzIGVtYmVkZGVkIGluLgorICogQG1lbWJlcjoJdGhlIG5hbWUgb2YgdGhlIGxpc3Rfc3RydWN0IHdpdGhpbiB0aGUgc3RydWN0LgorICovCisjZGVmaW5lIGxpc3RfZW50cnkocHRyLCB0eXBlLCBtZW1iZXIpIFwKKwkoKHR5cGUgKikoKGNoYXIgKikocHRyKS0odW5zaWduZWQgbG9uZykoJigodHlwZSAqKTApLT5tZW1iZXIpKSkKKworLyoqCisgKiBsaXN0X2Zvcl9lYWNoIC0gaXRlcmF0ZSBvdmVyIGVsZW1lbnRzIGluIGEgbGlzdAorICogQHBvczoJdGhlICZzdHJ1Y3QgbGlzdF9oZWFkIHRvIHVzZSBhcyBhIGxvb3AgY291bnRlci4KKyAqIEBoZWFkOgl0aGUgaGVhZCBmb3IgeW91ciBsaXN0LgorICovCisjZGVmaW5lIGxpc3RfZm9yX2VhY2gocG9zLCBoZWFkKSBcCisJZm9yIChwb3MgPSAoaGVhZCktPm5leHQ7IHBvcyAhPSAoaGVhZCk7IHBvcyA9IHBvcy0+bmV4dCkKKworLyoqCisgKiBsaXN0X2Zvcl9lYWNoX3NhZmUgLSBpdGVyYXRlIG92ZXIgZWxlbWVudHMgaW4gYSBsaXN0LCBidXQgZG9uJ3QgZGVyZWZlcmVuY2UKKyAqICAgICAgICAgICAgICAgICAgICAgIHBvcyBhZnRlciB0aGUgYm9keSBpcyBkb25lIChpbiBjYXNlIGl0IGlzIGZyZWVkKQorICogQHBvczoJdGhlICZzdHJ1Y3QgbGlzdF9oZWFkIHRvIHVzZSBhcyBhIGxvb3AgY291bnRlci4KKyAqIEBwbmV4dDoJdGhlICZzdHJ1Y3QgbGlzdF9oZWFkIHRvIHVzZSBhcyBhIHBvaW50ZXIgdG8gdGhlIG5leHQgaXRlbS4KKyAqIEBoZWFkOgl0aGUgaGVhZCBmb3IgeW91ciBsaXN0IChub3QgaW5jbHVkZWQgaW4gaXRlcmF0aW9uKS4KKyAqLworI2RlZmluZSBsaXN0X2Zvcl9lYWNoX3NhZmUocG9zLCBwbmV4dCwgaGVhZCkgXAorCWZvciAocG9zID0gKGhlYWQpLT5uZXh0LCBwbmV4dCA9IHBvcy0+bmV4dDsgcG9zICE9IChoZWFkKTsgXAorCSAgICAgcG9zID0gcG5leHQsIHBuZXh0ID0gcG9zLT5uZXh0KQorCisjdW5kZWYgX0lOTElORV8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9CTEtJRF9MSVNUX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvbGxzZWVrLmMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2xsc2Vlay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5Mjk4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL2xsc2Vlay5jCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogbGxzZWVrLmMgLS0gc3R1YiBjYWxsaW5nIHRoZSBsbHNlZWsgc3lzdGVtIGNhbGwKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorI2lmbmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgX19NU0RPU19fCisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiYmxraWRQLmgiCisKKyNpZmRlZiBfX2xpbnV4X18KKworI2lmIGRlZmluZWQoSEFWRV9MU0VFSzY0KSAmJiBkZWZpbmVkKEhBVkVfTFNFRUs2NF9QUk9UT1RZUEUpCisKKyNkZWZpbmUgbXlfbGxzZWVrIGxzZWVrNjQKKworI2VsaWYgZGVmaW5lZChIQVZFX0xMU0VFSykKKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisjaWZuZGVmIEhBVkVfTExTRUVLX1BST1RPVFlQRQorZXh0ZXJuIGxvbmcgbG9uZyBsbHNlZWsoaW50IGZkLCBsb25nIGxvbmcgb2Zmc2V0LCBpbnQgb3JpZ2luKTsKKyNlbmRpZgorCisjZGVmaW5lIG15X2xsc2VlayBsbHNlZWsKKworI2Vsc2UJLyogISBIQVZFX0xMU0VFSyAqLworCisjaWYgU0laRU9GX0xPTkcgPT0gU0laRU9GX0xPTkdfTE9ORworCisjZGVmaW5lIGxsc2VlayBsc2VlaworCisjZWxzZSAvKiBTSVpFT0ZfTE9ORyAhPSBTSVpFT0ZfTE9OR19MT05HICovCisKKyNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KKworI2lmbmRlZiBfX05SX19sbHNlZWsKKyNkZWZpbmUgX19OUl9fbGxzZWVrICAgICAgICAgICAgMTQwCisjZW5kaWYKKworI2lmbmRlZiBfX2kzODZfXworc3RhdGljIGludCBfbGxzZWVrKHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZywgdW5zaWduZWQgbG9uZywKKwkJICAgYmxraWRfbG9mZl90ICosIHVuc2lnbmVkIGludCk7CisKK3N0YXRpYyBfc3lzY2FsbDUoaW50LCBfbGxzZWVrLCB1bnNpZ25lZCBpbnQsIGZkLCB1bnNpZ25lZCBsb25nLCBvZmZzZXRfaGlnaCwKKwkJIHVuc2lnbmVkIGxvbmcsIG9mZnNldF9sb3csIGJsa2lkX2xvZmZfdCAqLCByZXN1bHQsCisJCSB1bnNpZ25lZCBpbnQsIG9yaWdpbikKKyNlbmRpZgorCitzdGF0aWMgYmxraWRfbG9mZl90IG15X2xsc2VlayhpbnQgZmQsIGJsa2lkX2xvZmZfdCBvZmZzZXQsIGludCBvcmlnaW4pCit7CisJYmxraWRfbG9mZl90IHJlc3VsdDsKKwlpbnQgcmV0dmFsOworCisjaWZuZGVmIF9faTM4Nl9fCisJcmV0dmFsID0gX2xsc2VlayhmZCwgKCh1bnNpZ25lZCBsb25nIGxvbmcpIG9mZnNldCkgPj4gMzIsCisJCQkgKCh1bnNpZ25lZCBsb25nIGxvbmcpb2Zmc2V0KSAmIDB4ZmZmZmZmZmYsCisJCQkgJnJlc3VsdCwgb3JpZ2luKTsKKyNlbHNlCisJcmV0dmFsID0gc3lzY2FsbChfX05SX19sbHNlZWssIGZkLCAoKHVuc2lnbmVkIGxvbmcgbG9uZykgb2Zmc2V0KSA+PiAzMiwKKwkJCSAoKHVuc2lnbmVkIGxvbmcgbG9uZylvZmZzZXQpICYgMHhmZmZmZmZmZiwKKwkJCSAmcmVzdWx0LCBvcmlnaW4pOworI2VuZGlmCisJcmV0dXJuIChyZXR2YWwgPT0gLTEgPyAoYmxraWRfbG9mZl90KSByZXR2YWwgOiByZXN1bHQpOworfQorCisjZW5kaWYJLyogX19hbHBoYV9fIHx8IF9faWE2NF9fICovCisKKyNlbmRpZiAvKiBIQVZFX0xMU0VFSyAqLworCitibGtpZF9sb2ZmX3QgYmxraWRfbGxzZWVrKGludCBmZCwgYmxraWRfbG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSkKK3sKKwlibGtpZF9sb2ZmX3QgcmVzdWx0OworCXN0YXRpYyBpbnQgZG9fY29tcGF0ID0gMDsKKworCWlmICgoc2l6ZW9mKG9mZl90KSA+PSBzaXplb2YoYmxraWRfbG9mZl90KSkgfHwKKwkgICAgKG9mZnNldCA8ICgoYmxraWRfbG9mZl90KSAxIDw8ICgoc2l6ZW9mKG9mZl90KSo4KSAtMSkpKSkKKwkJcmV0dXJuIGxzZWVrKGZkLCAob2ZmX3QpIG9mZnNldCwgd2hlbmNlKTsKKworCWlmIChkb19jb21wYXQpIHsKKwkJZXJybm8gPSBFT1ZFUkZMT1c7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXN1bHQgPSBteV9sbHNlZWsoZmQsIG9mZnNldCwgd2hlbmNlKTsKKwlpZiAocmVzdWx0ID09IC0xICYmIGVycm5vID09IEVOT1NZUykgeworCQkvKgorCQkgKiBKdXN0IGluIGNhc2UgdGhpcyBjb2RlIHJ1bnMgb24gdG9wIG9mIGFuIG9sZCBrZXJuZWwKKwkJICogd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGxzZWVrIHN5c3RlbSBjYWxsCisJCSAqLworCQlkb19jb21wYXQrKzsKKwkJZXJybm8gPSBFT1ZFUkZMT1c7CisJfQorCXJldHVybiByZXN1bHQ7Cit9CisKKyNlbHNlIC8qICFsaW51eCAqLworCisjaWZuZGVmIEVPVkVSRkxPVworI2lmZGVmIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVAorI2RlZmluZSBFT1ZFUkZMT1cgRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBFT1ZFUkZMT1cgMTEyCisjZW5kaWYKKyNlbmRpZgorCitibGtpZF9sb2ZmX3QgYmxraWRfbGxzZWVrKGludCBmZCwgYmxraWRfbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTFNFRUs2NCkgJiYgZGVmaW5lZChIQVZFX0xTRUVLNjRfUFJPVE9UWVBFKQorCXJldHVybiBsc2VlazY0IChmZCwgb2Zmc2V0LCBvcmlnaW4pOworI2Vsc2UKKwlpZiAoKHNpemVvZihvZmZfdCkgPCBzaXplb2YoYmxraWRfbG9mZl90KSkgJiYKKwkgICAgKG9mZnNldCA+PSAoKGJsa2lkX2xvZmZfdCkgMSA8PCAoKHNpemVvZihvZmZfdCkqOCkgLSAxKSkpKSB7CisJCWVycm5vID0gRU9WRVJGTE9XOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiBsc2VlayhmZCwgKG9mZl90KSBvZmZzZXQsIG9yaWdpbik7CisjZW5kaWYKK30KKworI2VuZGlmCS8qIGxpbnV4ICovCisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC9wcm9iZS5jIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9wcm9iZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZWNiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Byb2JlLmMKQEAgLTAsMCArMSwxNzA4IEBACisvKgorICogcHJvYmUuYyAtIGlkZW50aWZ5IGEgYmxvY2sgZGV2aWNlIGJ5IGl0cyBjb250ZW50cywgYW5kIHJldHVybiBhIGRldgorICogICAgICAgICAgIHN0cnVjdCB3aXRoIHRoZSBkZXRhaWxzCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5IGJ5IEFuZHJpZXMgQnJvdXdlcgorICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzIGJ5IFRoZW9kb3JlIFRzJ28KKyAqIENvcHlyaWdodCAoQykgMjAwMSBieSBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDA0IEtheSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfTUtERVZfSAorI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgorI2VuZGlmCisjaWZkZWYgX19saW51eF9fCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlICJibGtpZFAuaCIKKyNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKKyNpbmNsdWRlICJwcm9iZS5oIgorCitzdGF0aWMgaW50IGZpZ3VyZV9sYWJlbF9sZW4oY29uc3QgdW5zaWduZWQgY2hhciAqbGFiZWwsIGludCBsZW4pCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAqZW5kID0gbGFiZWwgKyBsZW4gLSAxOworCisJd2hpbGUgKCgqZW5kID09ICcgJyB8fCAqZW5kID09IDApICYmIGVuZCA+PSBsYWJlbCkKKwkJLS1lbmQ7CisJaWYgKGVuZCA+PSBsYWJlbCkKKwkJcmV0dXJuIGVuZCAtIGxhYmVsICsgMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgKmdldF9idWZmZXIoc3RydWN0IGJsa2lkX3Byb2JlICpwciwKKwkJCSAgYmxraWRfbG9mZl90IG9mZiwgc2l6ZV90IGxlbikKK3sKKwlzc2l6ZV90CQlyZXRfcmVhZDsKKwl1bnNpZ25lZCBjaGFyCSpuZXdidWY7CisKKwlpZiAob2ZmICsgbGVuIDw9IFNCX0JVRkZFUl9TSVpFKSB7CisJCWlmICghcHItPnNiYnVmKSB7CisJCQlwci0+c2JidWYgPSBtYWxsb2MoU0JfQlVGRkVSX1NJWkUpOworCQkJaWYgKCFwci0+c2JidWYpCisJCQkJcmV0dXJuIE5VTEw7CisJCQlpZiAobHNlZWsocHItPmZkLCAwLCBTRUVLX1NFVCkgPCAwKQorCQkJCXJldHVybiBOVUxMOworCQkJcmV0X3JlYWQgPSByZWFkKHByLT5mZCwgcHItPnNiYnVmLCBTQl9CVUZGRVJfU0laRSk7CisJCQlpZiAocmV0X3JlYWQgPCAwKQorCQkJCXJldF9yZWFkID0gMDsKKwkJCXByLT5zYl92YWxpZCA9IHJldF9yZWFkOworCQl9CisJCWlmIChvZmYrbGVuID4gcHItPnNiX3ZhbGlkKQorCQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiBwci0+c2JidWYgKyBvZmY7CisJfSBlbHNlIHsKKwkJaWYgKGxlbiA+IHByLT5idWZfbWF4KSB7CisJCQluZXdidWYgPSByZWFsbG9jKHByLT5idWYsIGxlbik7CisJCQlpZiAobmV3YnVmID09IE5VTEwpCisJCQkJcmV0dXJuIE5VTEw7CisJCQlwci0+YnVmID0gbmV3YnVmOworCQkJcHItPmJ1Zl9tYXggPSBsZW47CisJCX0KKwkJaWYgKGJsa2lkX2xsc2Vlayhwci0+ZmQsIG9mZiwgU0VFS19TRVQpIDwgMCkKKwkJCXJldHVybiBOVUxMOworCQlyZXRfcmVhZCA9IHJlYWQocHItPmZkLCBwci0+YnVmLCBsZW4pOworCQlpZiAocmV0X3JlYWQgIT0gKHNzaXplX3QpIGxlbikKKwkJCXJldHVybiBOVUxMOworCQlyZXR1cm4gcHItPmJ1ZjsKKwl9Cit9CisKKworLyoKKyAqIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgY29kZSB0byBjaGVjayBmb3IgYW4gTURSQUlEIGRldmljZS4gIFdlIGRvCisgKiB0aGlzIHNwZWNpYWwgc2luY2UgaXQgcmVxdWlyZXMgY2hlY2tpbmcgZm9yIGEgc3VwZXJibG9jayBhdCB0aGUgZW5kCisgKiBvZiB0aGUgZGV2aWNlLgorICovCitzdGF0aWMgaW50IGNoZWNrX21kcmFpZChpbnQgZmQsIHVuc2lnbmVkIGNoYXIgKnJldF91dWlkKQoreworCXN0cnVjdCBtZHBfc3VwZXJibG9ja19zICptZDsKKwlibGtpZF9sb2ZmX3QJCW9mZnNldDsKKwljaGFyCQkJYnVmWzQwOTZdOworCisJaWYgKGZkIDwgMCkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKKwlvZmZzZXQgPSAoYmxraWRfZ2V0X2Rldl9zaXplKGZkKSAmIH4oKGJsa2lkX2xvZmZfdCk2NTUzNSkpIC0gNjU1MzY7CisKKwlpZiAoYmxraWRfbGxzZWVrKGZkLCBvZmZzZXQsIDApIDwgMCB8fAorCSAgICByZWFkKGZkLCBidWYsIDQwOTYpICE9IDQwOTYpCisJCXJldHVybiAtQkxLSURfRVJSX0lPOworCisJLyogQ2hlY2sgZm9yIG1hZ2ljIG51bWJlciAqLworCWlmIChtZW1jbXAoIlwyNTErTlwzNzQiLCBidWYsIDQpICYmIG1lbWNtcCgiXDM3NE4rXDI1MSIsIGJ1ZiwgNCkpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJaWYgKCFyZXRfdXVpZCkKKwkJcmV0dXJuIDA7CisJKnJldF91dWlkID0gMDsKKworCS8qIFRoZSBNRCBVVUlEIGlzIG5vdCBjb250aWd1b3VzIGluIHRoZSBzdXBlcmJsb2NrLCBtYWtlIGl0IHNvICovCisJbWQgPSAoc3RydWN0IG1kcF9zdXBlcmJsb2NrX3MgKilidWY7CisJaWYgKG1kLT5zZXRfdXVpZDAgfHwgbWQtPnNldF91dWlkMSB8fCBtZC0+c2V0X3V1aWQyIHx8IG1kLT5zZXRfdXVpZDMpIHsKKwkJbWVtY3B5KHJldF91dWlkLCAmbWQtPnNldF91dWlkMCwgNCk7CisJCW1lbWNweShyZXRfdXVpZCArIDQsICZtZC0+c2V0X3V1aWQxLCAxMik7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzZXRfdXVpZChibGtpZF9kZXYgZGV2LCB1dWlkX3QgdXVpZCwgY29uc3QgY2hhciAqdGFnKQoreworCWNoYXIJc3RyWzM3XTsKKworCWlmICghdXVpZF9pc19udWxsKHV1aWQpKSB7CisJCXV1aWRfdW5wYXJzZSh1dWlkLCBzdHIpOworCQlibGtpZF9zZXRfdGFnKGRldiwgdGFnID8gdGFnIDogIlVVSUQiLCBzdHIsIHNpemVvZihzdHIpKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGdldF9leHQyX2luZm8oYmxraWRfZGV2IGRldiwgc3RydWN0IGJsa2lkX21hZ2ljICppZCwKKwkJCSAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICplcyA9IChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKSBidWY7CisJY29uc3QgY2hhciAqbGFiZWwgPSAwOworCisJREJHKERFQlVHX1BST0JFLCBwcmludGYoImV4dDJfc2IuY29tcGF0ID0gJTA4WDolMDhYOiUwOFhcbiIsCisJCSAgIGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9jb21wYXQpLAorCQkgICBibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfaW5jb21wYXQpLAorCQkgICBibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfcm9fY29tcGF0KSkpOworCisJaWYgKHN0cmxlbihlcy0+c192b2x1bWVfbmFtZSkpCisJCWxhYmVsID0gZXMtPnNfdm9sdW1lX25hbWU7CisJYmxraWRfc2V0X3RhZyhkZXYsICJMQUJFTCIsIGxhYmVsLCBzaXplb2YoZXMtPnNfdm9sdW1lX25hbWUpKTsKKworCXNldF91dWlkKGRldiwgZXMtPnNfdXVpZCwgMCk7CisKKwlpZiAoKGVzLT5zX2ZlYXR1cmVfY29tcGF0ICYgRVhUM19GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCkgJiYKKwkgICAgIXV1aWRfaXNfbnVsbChlcy0+c19qb3VybmFsX3V1aWQpKQorCQlzZXRfdXVpZChkZXYsIGVzLT5zX2pvdXJuYWxfdXVpZCwgIkVYVF9KT1VSTkFMIik7CisKKwlpZiAoc3RyY21wKGlkLT5iaW1fdHlwZSwgImV4dDIiKSAmJgorCSAgICAoKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9pbmNvbXBhdCkgJgorCSAgICAgIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9VTlNVUFBPUlRFRCkgPT0gMCkpCisJCWJsa2lkX3NldF90YWcoZGV2LCAiU0VDX1RZUEUiLCAiZXh0MiIsIHNpemVvZigiZXh0MiIpKTsKK30KKworLyoKKyAqIENoZWNrIHRvIHNlZSBpZiBhIGZpbGVzeXN0ZW0gaXMgaW4gL3Byb2MvZmlsZXN5c3RlbXMuCisgKiBSZXR1cm5zIDEgaWYgZm91bmQsIDAgaWYgbm90CisgKi8KK3N0YXRpYyBpbnQgZnNfcHJvY19jaGVjayhjb25zdCBjaGFyICpmc19uYW1lKQoreworCUZJTEUJKmY7CisJY2hhcglidWZbODBdLCAqY3AsICp0OworCisJZiA9IGZvcGVuKCIvcHJvYy9maWxlc3lzdGVtcyIsICJyIik7CisJaWYgKCFmKQorCQlyZXR1cm4gKDApOworCXdoaWxlICghZmVvZihmKSkgeworCQlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpKQorCQkJYnJlYWs7CisJCWNwID0gYnVmOworCQlpZiAoIWlzc3BhY2UoKmNwKSkgeworCQkJd2hpbGUgKCpjcCAmJiAhaXNzcGFjZSgqY3ApKQorCQkJCWNwKys7CisJCX0KKwkJd2hpbGUgKCpjcCAmJiBpc3NwYWNlKCpjcCkpCisJCQljcCsrOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICdcbicpKSAhPSBOVUxMKQorCQkJKnQgPSAwOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICdcdCcpKSAhPSBOVUxMKQorCQkJKnQgPSAwOworCQlpZiAoKHQgPSBzdHJjaHIoY3AsICcgJykpICE9IE5VTEwpCisJCQkqdCA9IDA7CisJCWlmICghc3RyY21wKGZzX25hbWUsIGNwKSkgeworCQkJZmNsb3NlKGYpOworCQkJcmV0dXJuICgxKTsKKwkJfQorCX0KKwlmY2xvc2UoZik7CisJcmV0dXJuICgwKTsKK30KKworLyoKKyAqIENoZWNrIHRvIHNlZSBpZiBhIGZpbGVzeXN0ZW0gaXMgYXZhaWxhYmxlIGFzIGEgbW9kdWxlCisgKiBSZXR1cm5zIDEgaWYgZm91bmQsIDAgaWYgbm90CisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfZm9yX21vZHVsZXMoY29uc3QgY2hhciAqZnNfbmFtZSkKK3sKKyNpZmRlZiBfX2xpbnV4X18KKwlzdHJ1Y3QgdXRzbmFtZQl1dHM7CisJRklMRQkJKmY7CisJY2hhcgkJYnVmWzEwMjRdLCAqY3A7CisJaW50CQluYW1lc3o7CisKKwlpZiAodW5hbWUoJnV0cykpCisJCXJldHVybiAoMCk7CisJc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIi9saWIvbW9kdWxlcy8lcy9tb2R1bGVzLmRlcCIsIHV0cy5yZWxlYXNlKTsKKworCWYgPSBmb3BlbihidWYsICJyIik7CisJaWYgKCFmKQorCQlyZXR1cm4gKDApOworCisJbmFtZXN6ID0gc3RybGVuKGZzX25hbWUpOworCisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpCisJCQlicmVhazsKKwkJaWYgKChjcCA9IHN0cmNocihidWYsICc6JykpICE9IE5VTEwpCisJCQkqY3AgPSAwOworCQllbHNlCisJCQljb250aW51ZTsKKwkJaWYgKChjcCA9IHN0cnJjaHIoYnVmLCAnLycpKSAhPSBOVUxMKQorCQkJY3ArKzsKKwkJZWxzZQorCQkJY3AgPSBidWY7CisJCWlmICghc3RybmNtcChjcCwgZnNfbmFtZSwgbmFtZXN6KSAmJgorCQkgICAgKCFzdHJjbXAoY3AgKyBuYW1lc3osICIua28iKSB8fAorCQkgICAgICFzdHJjbXAoY3AgKyBuYW1lc3osICIua28uZ3oiKSkpIHsKKwkJCWZjbG9zZShmKTsKKwkJCXJldHVybiAoMSk7CisJCX0KKwl9CisJZmNsb3NlKGYpOworI2VuZGlmCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIGludCBsaW51eF92ZXJzaW9uX2NvZGUodm9pZCkKK3sKKyNpZmRlZiBfX2xpbnV4X18KKwlzdHJ1Y3QgdXRzbmFtZQl1dDsKKwlzdGF0aWMgaW50CXZlcnNpb25fY29kZSA9IC0xOworCWludAkJbWFqb3IsIG1pbm9yLCByZXY7CisJY2hhcgkJKmVuZHB0cjsKKwljb25zdCBjaGFyIAkqY3A7CisKKwlpZiAodmVyc2lvbl9jb2RlID4gMCkKKwkJcmV0dXJuIHZlcnNpb25fY29kZTsKKworCWlmICh1bmFtZSgmdXQpKQorCQlyZXR1cm4gMDsKKwljcCA9IHV0LnJlbGVhc2U7CisKKwltYWpvciA9IHN0cnRvbChjcCwgJmVuZHB0ciwgMTApOworCWlmIChjcCA9PSBlbmRwdHIgfHwgKmVuZHB0ciAhPSAnLicpCisJCXJldHVybiAwOworCWNwID0gZW5kcHRyICsgMTsKKwltaW5vciA9IHN0cnRvbChjcCwgJmVuZHB0ciwgMTApOworCWlmIChjcCA9PSBlbmRwdHIgfHwgKmVuZHB0ciAhPSAnLicpCisJCXJldHVybiAwOworCWNwID0gZW5kcHRyICsgMTsKKwlyZXYgPSBzdHJ0b2woY3AsICZlbmRwdHIsIDEwKTsKKwlpZiAoY3AgPT0gZW5kcHRyKQorCQlyZXR1cm4gMDsKKwl2ZXJzaW9uX2NvZGUgPSAoKChtYWpvciAqIDI1NikgKyBtaW5vcikgKiAyNTYpICsgcmV2OworCXJldHVybiB2ZXJzaW9uX2NvZGU7CisjZWxzZQorCXJldHVybiAwOworI2VuZGlmCit9CisKKyNkZWZpbmUgRVhUNF9TVVBQT1JUU19FWFQyICgyICogNjU1MzYgKyA2KjI1NiArIDI5KQorCitzdGF0aWMgaW50IHN5c3RlbV9zdXBwb3J0c19leHQyKHZvaWQpCit7CisJc3RhdGljIHRpbWVfdAlsYXN0X2NoZWNrID0gMDsKKwlzdGF0aWMgaW50CXJldCA9IC0xOworCXRpbWVfdAkJbm93ID0gdGltZSgwKTsKKworCWlmIChyZXQgIT0gLTEgfHwgKG5vdyAtIGxhc3RfY2hlY2spIDwgNSkKKwkJcmV0dXJuIHJldDsKKwlsYXN0X2NoZWNrID0gbm93OworCXJldCA9IChmc19wcm9jX2NoZWNrKCJleHQyIikgfHwgY2hlY2tfZm9yX21vZHVsZXMoImV4dDIiKSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzeXN0ZW1fc3VwcG9ydHNfZXh0NCh2b2lkKQoreworCXN0YXRpYyB0aW1lX3QJbGFzdF9jaGVjayA9IDA7CisJc3RhdGljIGludAlyZXQgPSAtMTsKKwl0aW1lX3QJCW5vdyA9IHRpbWUoMCk7CisKKwlpZiAocmV0ICE9IC0xIHx8IChub3cgLSBsYXN0X2NoZWNrKSA8IDUpCisJCXJldHVybiByZXQ7CisJbGFzdF9jaGVjayA9IG5vdzsKKwlyZXQgPSAoZnNfcHJvY19jaGVjaygiZXh0NCIpIHx8IGNoZWNrX2Zvcl9tb2R1bGVzKCJleHQ0IikpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgc3lzdGVtX3N1cHBvcnRzX2V4dDRkZXYodm9pZCkKK3sKKwlzdGF0aWMgdGltZV90CWxhc3RfY2hlY2sgPSAwOworCXN0YXRpYyBpbnQJcmV0ID0gLTE7CisJdGltZV90CQlub3cgPSB0aW1lKDApOworCisJaWYgKHJldCAhPSAtMSB8fCAobm93IC0gbGFzdF9jaGVjaykgPCA1KQorCQlyZXR1cm4gcmV0OworCWxhc3RfY2hlY2sgPSBub3c7CisJcmV0ID0gKGZzX3Byb2NfY2hlY2soImV4dDRkZXYiKSB8fCBjaGVja19mb3JfbW9kdWxlcygiZXh0NGRldiIpKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHByb2JlX2V4dDRkZXYoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJCSBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkLAorCQkJIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqZXM7CisJZXMgPSAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKilidWY7CisKKwkvKiBEaXN0aW5ndWlzaCBmcm9tIGpiZCAqLworCWlmIChibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfaW5jb21wYXQpICYKKwkgICAgRVhUM19GRUFUVVJFX0lOQ09NUEFUX0pPVVJOQUxfREVWKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworCS8qIAorCSAqIElmIHRoZSBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgYSBqb3VybmFsIGFuZCBleHQyIGFuZCBleHQ0CisJICogaXMgbm90IHByZXNlbnQsIHRoZW4gZm9yY2UgdGhpcyB0byBiZSBkZXRlY3RlZCBhcyBhbgorCSAqIGV4dDRkZXYgZmlsZXN5c3RlbS4KKwkgKi8KKwlpZiAoIShibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfY29tcGF0KSAmCisJICAgICAgRVhUM19GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCkgJiYKKwkgICAgIXN5c3RlbV9zdXBwb3J0c19leHQyKCkgJiYgIXN5c3RlbV9zdXBwb3J0c19leHQ0KCkgJiYKKwkgICAgc3lzdGVtX3N1cHBvcnRzX2V4dDRkZXYoKSAmJgorCSAgICBsaW51eF92ZXJzaW9uX2NvZGUoKSA+PSBFWFQ0X1NVUFBPUlRTX0VYVDIpCisJCWdvdG8gZm9yY2VfZXh0NGRldjsKKworCS8qCisJICogSWYgdGhlIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGFzIE9LIGZvciB1c2UgYnkgaW4tZGV2ZWxvcG1lbnQKKwkgKiBmaWxlc3lzdGVtIGNvZGUsIGJ1dCBleHQ0ZGV2IGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBleHQ0IGlzLAorCSAqIHRoZW4gZG9uJ3QgY2FsbCBvdXJzZWx2ZXMgZXh0NGRldiwgc2luY2Ugd2Ugc2hvdWxkIGJlCisJICogZGV0ZWN0ZWQgYXMgZXh0NCBpbiB0aGF0IGNhc2UuCisJICoKKwkgKiBJZiB0aGUgZmlsZXN5c3RlbSBpcyBtYXJrZWQgYXMgaW4gdXNlIGJ5IHByb2R1Y3Rpb24KKwkgKiBmaWxlc3lzdGVtLCB0aGVuIGl0IGNhbiBvbmx5IGJlIHVzZWQgYnkgZXh0NCBhbmQgTk9UIGJ5CisJICogZXh0NGRldiwgc28gYWx3YXlzIGRpc2NsYWltIHdlIGFyZSBleHQ0ZGV2IGluIHRoYXQgY2FzZS4KKwkgKi8KKwlpZiAoYmxraWRfbGUzMihlcy0+c19mbGFncykgJiBFWFQyX0ZMQUdTX1RFU1RfRklMRVNZUykgeworCQlpZiAoIXN5c3RlbV9zdXBwb3J0c19leHQ0ZGV2KCkgJiYgc3lzdGVtX3N1cHBvcnRzX2V4dDQoKSkKKwkJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCX0gZWxzZQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworZm9yY2VfZXh0NGRldjoKKyAgICAJZ2V0X2V4dDJfaW5mbyhwcm9iZS0+ZGV2LCBpZCwgYnVmKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9leHQ0KHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQsCisJCSAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqZXM7CisJZXMgPSAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKilidWY7CisKKwkvKiBEaXN0aW5ndWlzaCBmcm9tIGpiZCAqLworCWlmIChibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfaW5jb21wYXQpICYKKwkgICAgRVhUM19GRUFUVVJFX0lOQ09NUEFUX0pPVVJOQUxfREVWKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworCS8qIAorCSAqIElmIHRoZSBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgYSBqb3VybmFsIGFuZCBleHQyIGlzIG5vdAorCSAqIHByZXNlbnQsIHRoZW4gZm9yY2UgdGhpcyB0byBiZSBkZXRlY3RlZCBhcyBhbiBleHQyCisJICogZmlsZXN5c3RlbS4KKwkgKi8KKwlpZiAoIShibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfY29tcGF0KSAmCisJICAgICAgRVhUM19GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCkgJiYKKwkgICAgIXN5c3RlbV9zdXBwb3J0c19leHQyKCkgJiYgc3lzdGVtX3N1cHBvcnRzX2V4dDQoKSAmJgorCSAgICBsaW51eF92ZXJzaW9uX2NvZGUoKSA+PSBFWFQ0X1NVUFBPUlRTX0VYVDIpCisJCWdvdG8gZm9yY2VfZXh0NDsKKworCS8qIEV4dDQgaGFzIGF0IGxlYXN0IG9uZSBmZWF0dXJlIHdoaWNoIGV4dDMgZG9lc24ndCB1bmRlcnN0YW5kICovCisJaWYgKCEoYmxraWRfbGUzMihlcy0+c19mZWF0dXJlX3JvX2NvbXBhdCkgJgorCSAgICAgIEVYVDNfRkVBVFVSRV9ST19DT01QQVRfVU5TVVBQT1JURUQpICYmCisJICAgICEoYmxraWRfbGUzMihlcy0+c19mZWF0dXJlX2luY29tcGF0KSAmCisJICAgICAgRVhUM19GRUFUVVJFX0lOQ09NUEFUX1VOU1VQUE9SVEVEKSkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKK2ZvcmNlX2V4dDQ6CisJLyoKKwkgKiBJZiB0aGUgZmlsZXN5c3RlbSBpcyBhIE9LIGZvciB1c2UgYnkgaW4tZGV2ZWxvcG1lbnQKKwkgKiBmaWxlc3lzdGVtIGNvZGUsIGFuZCBleHQ0ZGV2IGlzIHN1cHBvcnRlZCBvciBleHQ0IGlzIG5vdAorCSAqIHN1cHBvcnRlZCwgdGhlbiBkb24ndCBjYWxsIG91cnNlbHZlcyBleHQ0LCBzbyB3ZSBjYW4gcmVkbworCSAqIHRoZSBkZXRlY3Rpb24gYW5kIG1hcmsgdGhlIGZpbGVzeXN0ZW0gYXMgZXh0NGRldi4KKwkgKgorCSAqIElmIHRoZSBmaWxlc3lzdGVtIGlzIG1hcmtlZCBhcyBpbiB1c2UgYnkgcHJvZHVjdGlvbgorCSAqIGZpbGVzeXN0ZW0sIHRoZW4gaXQgY2FuIG9ubHkgYmUgdXNlZCBieSBleHQ0IGFuZCBOT1QgYnkKKwkgKiBleHQ0ZGV2LgorCSAqLworCWlmIChibGtpZF9sZTMyKGVzLT5zX2ZsYWdzKSAmIEVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTKSB7CisJCWlmIChzeXN0ZW1fc3VwcG9ydHNfZXh0NGRldigpIHx8ICFzeXN0ZW1fc3VwcG9ydHNfZXh0NCgpKQorCQkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisJfQorICAgIAlnZXRfZXh0Ml9pbmZvKHByb2JlLT5kZXYsIGlkLCBidWYpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2JlX2V4dDMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwgc3RydWN0IGJsa2lkX21hZ2ljICppZCwKKwkJICAgICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICplczsKKwllcyA9IChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKWJ1ZjsKKworCS8qIGV4dDMgcmVxdWlyZXMgam91cm5hbCAqLworCWlmICghKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9jb21wYXQpICYKKwkgICAgICBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMKSkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKKwkvKiBBbnkgZmVhdHVyZXMgd2hpY2ggZXh0MyBkb2Vzbid0IHVuZGVyc3RhbmQgKi8KKwlpZiAoKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9yb19jb21wYXQpICYKKwkgICAgIEVYVDNfRkVBVFVSRV9ST19DT01QQVRfVU5TVVBQT1JURUQpIHx8CisJICAgIChibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfaW5jb21wYXQpICYKKwkgICAgIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9VTlNVUFBPUlRFRCkpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisgICAgCWdldF9leHQyX2luZm8ocHJvYmUtPmRldiwgaWQsIGJ1Zik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfZXh0MihzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLCBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkLAorCQkgICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKmVzOworCisJZXMgPSAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKilidWY7CisKKwkvKiBEaXN0aW5ndWlzaCBiZXR3ZWVuIGV4dDMgYW5kIGV4dDIgKi8KKwlpZiAoKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9jb21wYXQpICYKKwkgICAgICBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMKSkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKKwkvKiBBbnkgZmVhdHVyZXMgd2hpY2ggZXh0MiBkb2Vzbid0IHVuZGVyc3RhbmQgKi8KKwlpZiAoKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9yb19jb21wYXQpICYKKwkgICAgIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfVU5TVVBQT1JURUQpIHx8CisJICAgIChibGtpZF9sZTMyKGVzLT5zX2ZlYXR1cmVfaW5jb21wYXQpICYKKwkgICAgIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9VTlNVUFBPUlRFRCkpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJLyogCisJICogSWYgZXh0MiBpcyBub3QgcHJlc2VudCwgYnV0IGV4dDQgb3IgZXh0NGRldiBhcmUsIHRoZW4KKwkgKiBkaXNjbGFpbSB3ZSBhcmUgZXh0MgorCSAqLworCWlmICghc3lzdGVtX3N1cHBvcnRzX2V4dDIoKSAmJgorCSAgICAoc3lzdGVtX3N1cHBvcnRzX2V4dDQoKSB8fCBzeXN0ZW1fc3VwcG9ydHNfZXh0NGRldigpKSAmJgorCSAgICBsaW51eF92ZXJzaW9uX2NvZGUoKSA+PSBFWFQ0X1NVUFBPUlRTX0VYVDIpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJZ2V0X2V4dDJfaW5mbyhwcm9iZS0+ZGV2LCBpZCwgYnVmKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9qYmQoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwgc3RydWN0IGJsa2lkX21hZ2ljICppZCwKKwkJICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKmVzID0gKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICopIGJ1ZjsKKworCWlmICghKGJsa2lkX2xlMzIoZXMtPnNfZmVhdHVyZV9pbmNvbXBhdCkgJgorCSAgICAgIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9KT1VSTkFMX0RFVikpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJZ2V0X2V4dDJfaW5mbyhwcm9iZS0+ZGV2LCBpZCwgYnVmKTsKKworCXJldHVybiAwOworfQorCisjZGVmaW5lIEZBVF9BVFRSX1ZPTFVNRV9JRAkJMHgwOAorI2RlZmluZSBGQVRfQVRUUl9ESVIJCQkweDEwCisjZGVmaW5lIEZBVF9BVFRSX0xPTkdfTkFNRQkJMHgwZgorI2RlZmluZSBGQVRfQVRUUl9NQVNLCQkJMHgzZgorI2RlZmluZSBGQVRfRU5UUllfRlJFRQkJCTB4ZTUKKworc3RhdGljIGNvbnN0IGNoYXIgKm5vX25hbWUgPSAiTk8gTkFNRSAgICAiOworCitzdGF0aWMgdW5zaWduZWQgY2hhciAqc2VhcmNoX2ZhdF9sYWJlbChzdHJ1Y3QgdmZhdF9kaXJfZW50cnkgKmRpciwgaW50IGNvdW50KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJaWYgKGRpcltpXS5uYW1lWzBdID09IDB4MDApCisJCQlicmVhazsKKworCQlpZiAoKGRpcltpXS5uYW1lWzBdID09IEZBVF9FTlRSWV9GUkVFKSB8fAorCQkgICAgKGRpcltpXS5jbHVzdGVyX2hpZ2ggIT0gMCB8fCBkaXJbaV0uY2x1c3Rlcl9sb3cgIT0gMCkgfHwKKwkJICAgICgoZGlyW2ldLmF0dHIgJiBGQVRfQVRUUl9NQVNLKSA9PSBGQVRfQVRUUl9MT05HX05BTUUpKQorCQkJY29udGludWU7CisKKwkJaWYgKChkaXJbaV0uYXR0ciAmIChGQVRfQVRUUl9WT0xVTUVfSUQgfCBGQVRfQVRUUl9ESVIpKSA9PQorCQkgICAgRkFUX0FUVFJfVk9MVU1FX0lEKSB7CisJCQlyZXR1cm4gZGlyW2ldLm5hbWU7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qIEZBVCBsYWJlbCBleHRyYWN0aW9uIGZyb20gdGhlIHJvb3QgZGlyZWN0b3J5IHRha2VuIGZyb20gS2F5CisgKiBTaWV2ZXJzJ3Mgdm9sdW1lX2lkIGxpYnJhcnkgKi8KK3N0YXRpYyBpbnQgcHJvYmVfZmF0KHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCB2ZmF0X3N1cGVyX2Jsb2NrICp2cyA9IChzdHJ1Y3QgdmZhdF9zdXBlcl9ibG9jayAqKSBidWY7CisJc3RydWN0IG1zZG9zX3N1cGVyX2Jsb2NrICptcyA9IChzdHJ1Y3QgbXNkb3Nfc3VwZXJfYmxvY2sgKikgYnVmOworCXN0cnVjdCB2ZmF0X2Rpcl9lbnRyeSAqZGlyOworCWNoYXIgc2Vybm9bMTBdOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmxhYmVsID0gMCwgKnZvbF9sYWJlbCA9IDAsICp0bXA7CisJdW5zaWduZWQgY2hhcgkqdm9sX3Nlcm5vOworCWludCBsYWJlbF9sZW4gPSAwLCBtYXhsb29wID0gMTAwOworCV9fdTE2IHNlY3Rvcl9zaXplLCBkaXJfZW50cmllcywgcmVzZXJ2ZWQ7CisJX191MzIgc2VjdF9jb3VudCwgZmF0X3NpemUsIGRpcl9zaXplLCBjbHVzdGVyX2NvdW50LCBmYXRfbGVuZ3RoOworCV9fdTMyIGJ1Zl9zaXplLCBzdGFydF9kYXRhX3NlY3QsIG5leHQsIHJvb3Rfc3RhcnQsIHJvb3RfZGlyX2VudHJpZXM7CisKKwkvKiBzZWN0b3Igc2l6ZSBjaGVjayAqLworCXRtcCA9ICh1bnNpZ25lZCBjaGFyICopJm1zLT5tc19zZWN0b3Jfc2l6ZTsKKwlzZWN0b3Jfc2l6ZSA9IHRtcFswXSArICh0bXBbMV0gPDwgOCk7CisJaWYgKHNlY3Rvcl9zaXplICE9IDB4MjAwICYmIHNlY3Rvcl9zaXplICE9IDB4NDAwICYmCisJICAgIHNlY3Rvcl9zaXplICE9IDB4ODAwICYmIHNlY3Rvcl9zaXplICE9IDB4MTAwMCkKKwkJcmV0dXJuIDE7CisKKwl0bXAgPSAodW5zaWduZWQgY2hhciAqKSZtcy0+bXNfZGlyX2VudHJpZXM7CisJZGlyX2VudHJpZXMgPSB0bXBbMF0gKyAodG1wWzFdIDw8IDgpOworCXJlc2VydmVkID0gIGJsa2lkX2xlMTYobXMtPm1zX3Jlc2VydmVkKTsKKwl0bXAgPSAodW5zaWduZWQgY2hhciAqKSZtcy0+bXNfc2VjdG9yczsKKwlzZWN0X2NvdW50ID0gdG1wWzBdICsgKHRtcFsxXSA8PCA4KTsKKwlpZiAoc2VjdF9jb3VudCA9PSAwKQorCQlzZWN0X2NvdW50ID0gYmxraWRfbGUzMihtcy0+bXNfdG90YWxfc2VjdCk7CisKKwlmYXRfbGVuZ3RoID0gYmxraWRfbGUxNihtcy0+bXNfZmF0X2xlbmd0aCk7CisJaWYgKGZhdF9sZW5ndGggPT0gMCkKKwkJZmF0X2xlbmd0aCA9IGJsa2lkX2xlMzIodnMtPnZzX2ZhdDMyX2xlbmd0aCk7CisKKwlmYXRfc2l6ZSA9IGZhdF9sZW5ndGggKiBtcy0+bXNfZmF0czsKKwlkaXJfc2l6ZSA9ICgoZGlyX2VudHJpZXMgKiBzaXplb2Yoc3RydWN0IHZmYXRfZGlyX2VudHJ5KSkgKworCQkJKHNlY3Rvcl9zaXplLTEpKSAvIHNlY3Rvcl9zaXplOworCisJY2x1c3Rlcl9jb3VudCA9IHNlY3RfY291bnQgLSAocmVzZXJ2ZWQgKyBmYXRfc2l6ZSArIGRpcl9zaXplKTsKKwlpZiAobXMtPm1zX2NsdXN0ZXJfc2l6ZSA9PSAwKQorCQlyZXR1cm4gMTsKKwljbHVzdGVyX2NvdW50IC89IG1zLT5tc19jbHVzdGVyX3NpemU7CisKKwlpZiAoY2x1c3Rlcl9jb3VudCA+IEZBVDMyX01BWCkKKwkJcmV0dXJuIDE7CisKKwlpZiAobXMtPm1zX2ZhdF9sZW5ndGgpIHsKKwkJLyogdGhlIGxhYmVsIG1heSBiZSBhbiBhdHRyaWJ1dGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5ICovCisJCXJvb3Rfc3RhcnQgPSAocmVzZXJ2ZWQgKyBmYXRfc2l6ZSkgKiBzZWN0b3Jfc2l6ZTsKKwkJcm9vdF9kaXJfZW50cmllcyA9IHZzLT52c19kaXJfZW50cmllc1swXSArCisJCQkodnMtPnZzX2Rpcl9lbnRyaWVzWzFdIDw8IDgpOworCisJCWJ1Zl9zaXplID0gcm9vdF9kaXJfZW50cmllcyAqIHNpemVvZihzdHJ1Y3QgdmZhdF9kaXJfZW50cnkpOworCQlkaXIgPSAoc3RydWN0IHZmYXRfZGlyX2VudHJ5ICopIGdldF9idWZmZXIocHJvYmUsIHJvb3Rfc3RhcnQsCisJCQkJCQkJICAgYnVmX3NpemUpOworCQlpZiAoZGlyKQorCQkJdm9sX2xhYmVsID0gc2VhcmNoX2ZhdF9sYWJlbChkaXIsIHJvb3RfZGlyX2VudHJpZXMpOworCisJCWlmICghdm9sX2xhYmVsIHx8ICFtZW1jbXAodm9sX2xhYmVsLCBub19uYW1lLCAxMSkpCisJCQl2b2xfbGFiZWwgPSBtcy0+bXNfbGFiZWw7CisJCXZvbF9zZXJubyA9IG1zLT5tc19zZXJubzsKKworCQlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJTRUNfVFlQRSIsICJtc2RvcyIsCisJCQkgICAgICBzaXplb2YoIm1zZG9zIikpOworCX0gZWxzZSB7CisJCS8qIFNlYXJjaCB0aGUgRkFUMzIgcm9vdCBkaXIgZm9yIHRoZSBsYWJlbCBhdHRyaWJ1dGUgKi8KKwkJYnVmX3NpemUgPSB2cy0+dnNfY2x1c3Rlcl9zaXplICogc2VjdG9yX3NpemU7CisJCXN0YXJ0X2RhdGFfc2VjdCA9IHJlc2VydmVkICsgZmF0X3NpemU7CisKKwkJbmV4dCA9IGJsa2lkX2xlMzIodnMtPnZzX3Jvb3RfY2x1c3Rlcik7CisJCXdoaWxlIChuZXh0ICYmIC0tbWF4bG9vcCkgeworCQkJX191MzIgbmV4dF9zZWN0X29mZjsKKwkJCV9fdTY0IG5leHRfb2ZmLCBmYXRfZW50cnlfb2ZmOworCQkJaW50IGNvdW50OworCisJCQluZXh0X3NlY3Rfb2ZmID0gKG5leHQgLSAyKSAqIHZzLT52c19jbHVzdGVyX3NpemU7CisJCQluZXh0X29mZiA9IChfX3U2NCkgKHN0YXJ0X2RhdGFfc2VjdCArIG5leHRfc2VjdF9vZmYpICoKKwkJCQlzZWN0b3Jfc2l6ZTsKKworCQkJZGlyID0gKHN0cnVjdCB2ZmF0X2Rpcl9lbnRyeSAqKQorCQkJCWdldF9idWZmZXIocHJvYmUsIG5leHRfb2ZmLCBidWZfc2l6ZSk7CisJCQlpZiAoZGlyID09IE5VTEwpCisJCQkJYnJlYWs7CisKKwkJCWNvdW50ID0gYnVmX3NpemUgLyBzaXplb2Yoc3RydWN0IHZmYXRfZGlyX2VudHJ5KTsKKworCQkJdm9sX2xhYmVsID0gc2VhcmNoX2ZhdF9sYWJlbChkaXIsIGNvdW50KTsKKwkJCWlmICh2b2xfbGFiZWwpCisJCQkJYnJlYWs7CisKKwkJCS8qIGdldCBGQVQgZW50cnkgKi8KKwkJCWZhdF9lbnRyeV9vZmYgPQorCQkJCSgodW5zaWduZWQgaW50KSByZXNlcnZlZCAqCisJCQkJICh1bnNpZ25lZCBpbnQpIHNlY3Rvcl9zaXplKSArCisJCQkJKG5leHQgKiBzaXplb2YoX191MzIpKTsKKwkJCWJ1ZiA9IGdldF9idWZmZXIocHJvYmUsIGZhdF9lbnRyeV9vZmYsIGJ1Zl9zaXplKTsKKwkJCWlmIChidWYgPT0gTlVMTCkKKwkJCQlicmVhazsKKworCQkJLyogc2V0IG5leHQgY2x1c3RlciAqLworCQkJbmV4dCA9IGJsa2lkX2xlMzIoKigoX191MzIgKikgYnVmKSAmIDB4MGZmZmZmZmYpOworCQl9CisKKwkJaWYgKCF2b2xfbGFiZWwgfHwgIW1lbWNtcCh2b2xfbGFiZWwsIG5vX25hbWUsIDExKSkKKwkJCXZvbF9sYWJlbCA9IHZzLT52c19sYWJlbDsKKwkJdm9sX3Nlcm5vID0gdnMtPnZzX3Nlcm5vOworCX0KKworCWlmICh2b2xfbGFiZWwgJiYgbWVtY21wKHZvbF9sYWJlbCwgbm9fbmFtZSwgMTEpKSB7CisJCWlmICgobGFiZWxfbGVuID0gZmlndXJlX2xhYmVsX2xlbih2b2xfbGFiZWwsIDExKSkpCisJCQlsYWJlbCA9IHZvbF9sYWJlbDsKKwl9CisKKwkvKiBXZSBjYW4ndCBqdXN0IHByaW50IHRoZW0gYXMgJTA0WCwgYmVjYXVzZSB0aGV5IGFyZSB1bmFsaWduZWQgKi8KKwlzcHJpbnRmKHNlcm5vLCAiJTAyWCUwMlgtJTAyWCUwMlgiLCB2b2xfc2Vybm9bM10sIHZvbF9zZXJub1syXSwKKwkJdm9sX3Nlcm5vWzFdLCB2b2xfc2Vybm9bMF0pOworCisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTEFCRUwiLCAoY29uc3QgY2hhciAqKSBsYWJlbCwgbGFiZWxfbGVuKTsKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJVVUlEIiwgc2Vybm8sIHNpemVvZihzZXJubyktMSk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoZSBGQVQgZmlsZXN5c3RlbSBjb3VsZCBiZSB3aXRob3V0IGEgbWFnaWMgc3RyaW5nIGluIHN1cGVyYmxvY2sKKyAqIChlLmcuIG9sZCBmbG9wcGllcykuICBUaGlzIGhldXJpc3RpYyBmb3IgRkFUIGRldGVjdGlvbiBpcyBpbnNwaXJlZAorICogYnkgaHR0cDovL3ZyZnkub3JnL3Byb2plY3RzL3ZvbHVtZV9pZC8gYW5kIExpbnV4IGtlcm5lbC4KKyAqIFs3LUp1bC0yMDA1LCBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT5dCisgKi8KK3N0YXRpYyBpbnQgcHJvYmVfZmF0X25vbWFnaWMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IG1zZG9zX3N1cGVyX2Jsb2NrICptczsKKworCW1zID0gKHN0cnVjdCBtc2Rvc19zdXBlcl9ibG9jayAqKWJ1ZjsKKworCS8qIGhlYWRzIGNoZWNrICovCisJaWYgKG1zLT5tc19oZWFkcyA9PSAwKQorCQlyZXR1cm4gMTsKKworCS8qIGNsdXN0ZXIgc2l6ZSBjaGVjayovCisJaWYgKG1zLT5tc19jbHVzdGVyX3NpemUgPT0gMCB8fAorCSAgICAobXMtPm1zX2NsdXN0ZXJfc2l6ZSAmIChtcy0+bXNfY2x1c3Rlcl9zaXplLTEpKSkKKwkJcmV0dXJuIDE7CisKKwkvKiBtZWRpYSBjaGVjayAqLworCWlmIChtcy0+bXNfbWVkaWEgPCAweGY4ICYmIG1zLT5tc19tZWRpYSAhPSAweGYwKQorCQlyZXR1cm4gMTsKKworCS8qIGZhdCBjb3VudHMoTGludXgga2VybmVsIGV4cGVjdHMgYXQgbGVhc3QgMSBGQVQgdGFibGUpICovCisJaWYgKCFtcy0+bXNfZmF0cykKKwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIE9TLzIgYW5kIGFwcGFyZW50bHkgREZTZWUgd2lsbCBwbGFjZSBhIEZBVDEyLzE2LWxpa2UKKwkgKiBwc2V1ZG8tc3VwZXJibG9jayBpbiB0aGUgZmlyc3QgNTEyIGJ5dGVzIG9mIG5vbi1GQVQKKwkgKiBmaWxlc3lzdGVtcyAtLS0gYXQgbGVhc3QgSkZTIGFuZCBIUEZTLCBhbmQgcG9zc2libHkgb3RoZXJzLgorCSAqIFNvIHdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRob3NlIGZpbGVzeXN0ZW1zIGF0IHRoZQorCSAqIEZBVDEyLzE2IGZpbGVzeXN0ZW0gbWFnaWMgZmllbGQgaWRlbnRpZmllciwgYW5kIGlmIHRoZXkgYXJlCisJICogcHJlc2VudCwgd2UgcnVsZSB0aGlzIG91dCBhcyBhIEZBVCBmaWxlc3lzdGVtLCBkZXNwaXRlIHRoZQorCSAqIEZBVC1saWtlIHBzZXVkby1oZWFkZXIuCisgICAgICAgICAqLworCWlmICgobWVtY21wKG1zLT5tc19tYWdpYywgIkpGUyAgICAgIiwgOCkgPT0gMCkgfHwKKwkgICAgKG1lbWNtcChtcy0+bXNfbWFnaWMsICJIUEZTICAgICIsIDgpID09IDApKQorCQlyZXR1cm4gMTsKKworCXJldHVybiBwcm9iZV9mYXQocHJvYmUsIGlkLCBidWYpOworfQorCitzdGF0aWMgaW50IHByb2JlX250ZnMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJICAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IG50ZnNfc3VwZXJfYmxvY2sgKm5zOworCXN0cnVjdCBtYXN0ZXJfZmlsZV90YWJsZV9yZWNvcmQgKm1mdDsKKwlzdHJ1Y3QgZmlsZV9hdHRyaWJ1dGUgKmF0dHI7CisJY2hhcgkJdXVpZF9zdHJbMTddLCBsYWJlbF9zdHJbMTI5XSwgKmNwOworCWludAkJYnl0ZXNfcGVyX3NlY3Rvciwgc2VjdG9yc19wZXJfY2x1c3RlcjsKKwlpbnQJCW1mdF9yZWNvcmRfc2l6ZSwgYXR0cl9vZmYsIGF0dHJfbGVuOworCXVuc2lnbmVkIGludAlpLCBhdHRyX3R5cGUsIHZhbF9sZW47CisJaW50CQl2YWxfb2ZmOworCV9fdTY0CQlucl9jbHVzdGVyczsKKwlibGtpZF9sb2ZmX3Qgb2ZmOworCXVuc2lnbmVkIGNoYXIgKmJ1Zl9tZnQsICp2YWw7CisKKwlucyA9IChzdHJ1Y3QgbnRmc19zdXBlcl9ibG9jayAqKSBidWY7CisKKwlieXRlc19wZXJfc2VjdG9yID0gbnMtPmJpb3NfcGFyYW1ldGVyX2Jsb2NrWzBdICsKKwkJKG5zLT5iaW9zX3BhcmFtZXRlcl9ibG9ja1sxXSAgPDwgOCk7CisJc2VjdG9yc19wZXJfY2x1c3RlciA9IG5zLT5iaW9zX3BhcmFtZXRlcl9ibG9ja1syXTsKKworCWlmICgoYnl0ZXNfcGVyX3NlY3RvciA8IDUxMikgfHwgKHNlY3RvcnNfcGVyX2NsdXN0ZXIgPT0gMCkpCisJCXJldHVybiAxOworCisJaWYgKG5zLT5jbHVzdGVyX3Blcl9tZnRfcmVjb3JkIDwgMCkKKwkJbWZ0X3JlY29yZF9zaXplID0gMSA8PCAoMC1ucy0+Y2x1c3Rlcl9wZXJfbWZ0X3JlY29yZCk7CisJZWxzZQorCQltZnRfcmVjb3JkX3NpemUgPSBucy0+Y2x1c3Rlcl9wZXJfbWZ0X3JlY29yZCAqCisJCQlzZWN0b3JzX3Blcl9jbHVzdGVyICogYnl0ZXNfcGVyX3NlY3RvcjsKKwlucl9jbHVzdGVycyA9IGJsa2lkX2xlNjQobnMtPm51bWJlcl9vZl9zZWN0b3JzKSAvIHNlY3RvcnNfcGVyX2NsdXN0ZXI7CisKKwlpZiAoKGJsa2lkX2xlNjQobnMtPm1mdF9jbHVzdGVyX2xvY2F0aW9uKSA+IG5yX2NsdXN0ZXJzKSB8fAorCSAgICAoYmxraWRfbGU2NChucy0+bWZ0X21pcnJvcl9jbHVzdGVyX2xvY2F0aW9uKSA+IG5yX2NsdXN0ZXJzKSkKKwkJcmV0dXJuIDE7CisKKwlvZmYgPSBibGtpZF9sZTY0KG5zLT5tZnRfbWlycm9yX2NsdXN0ZXJfbG9jYXRpb24pICoKKwkJYnl0ZXNfcGVyX3NlY3RvciAqIHNlY3RvcnNfcGVyX2NsdXN0ZXI7CisKKwlidWZfbWZ0ID0gZ2V0X2J1ZmZlcihwcm9iZSwgb2ZmLCBtZnRfcmVjb3JkX3NpemUpOworCWlmICghYnVmX21mdCkKKwkJcmV0dXJuIDE7CisKKwlpZiAobWVtY21wKGJ1Zl9tZnQsICJGSUxFIiwgNCkpCisJCXJldHVybiAxOworCisJb2ZmID0gYmxraWRfbGU2NChucy0+bWZ0X2NsdXN0ZXJfbG9jYXRpb24pICogYnl0ZXNfcGVyX3NlY3RvciAqCisJCXNlY3RvcnNfcGVyX2NsdXN0ZXI7CisKKwlidWZfbWZ0ID0gZ2V0X2J1ZmZlcihwcm9iZSwgb2ZmLCBtZnRfcmVjb3JkX3NpemUpOworCWlmICghYnVmX21mdCkKKwkJcmV0dXJuIDE7CisKKwlpZiAobWVtY21wKGJ1Zl9tZnQsICJGSUxFIiwgNCkpCisJCXJldHVybiAxOworCisJb2ZmICs9IE1GVF9SRUNPUkRfVk9MVU1FICogbWZ0X3JlY29yZF9zaXplOworCisJYnVmX21mdCA9IGdldF9idWZmZXIocHJvYmUsIG9mZiwgbWZ0X3JlY29yZF9zaXplKTsKKwlpZiAoIWJ1Zl9tZnQpCisJCXJldHVybiAxOworCisJaWYgKG1lbWNtcChidWZfbWZ0LCAiRklMRSIsIDQpKQorCQlyZXR1cm4gMTsKKworCW1mdCA9IChzdHJ1Y3QgbWFzdGVyX2ZpbGVfdGFibGVfcmVjb3JkICopIGJ1Zl9tZnQ7CisKKwlhdHRyX29mZiA9IGJsa2lkX2xlMTYobWZ0LT5hdHRyc19vZmZzZXQpOworCWxhYmVsX3N0clswXSA9IDA7CisKKwl3aGlsZSAoMSkgeworCQlhdHRyID0gKHN0cnVjdCBmaWxlX2F0dHJpYnV0ZSAqKSAoYnVmX21mdCArIGF0dHJfb2ZmKTsKKwkJYXR0cl9sZW4gPSBibGtpZF9sZTE2KGF0dHItPmxlbik7CisJCWF0dHJfdHlwZSA9IGJsa2lkX2xlMzIoYXR0ci0+dHlwZSk7CisJCXZhbF9vZmYgPSBibGtpZF9sZTE2KGF0dHItPnZhbHVlX29mZnNldCk7CisJCXZhbF9sZW4gPSBibGtpZF9sZTMyKGF0dHItPnZhbHVlX2xlbik7CisKKwkJYXR0cl9vZmYgKz0gYXR0cl9sZW47CisKKwkJaWYgKChhdHRyX29mZiA+IG1mdF9yZWNvcmRfc2l6ZSkgfHwKKwkJICAgIChhdHRyX2xlbiA9PSAwKSkKKwkJCWJyZWFrOworCisJCWlmIChhdHRyX3R5cGUgPT0gTUZUX1JFQ09SRF9BVFRSX0VORCkKKwkJCWJyZWFrOworCisJCWlmIChhdHRyX3R5cGUgPT0gTUZUX1JFQ09SRF9BVFRSX1ZPTFVNRV9OQU1FKSB7CisJCQlpZiAodmFsX2xlbiA+IHNpemVvZihsYWJlbF9zdHIpKQorCQkJCXZhbF9sZW4gPSBzaXplb2YobGFiZWxfc3RyKS0xOworCisJCQlmb3IgKGk9MCwgY3A9bGFiZWxfc3RyOyBpIDwgdmFsX2xlbjsgaSs9MixjcCsrKSB7CisJCQkJdmFsID0gKChfX3U4ICopIGF0dHIpICsgdmFsX29mZiArIGk7CisJCQkJKmNwID0gdmFsWzBdOworCQkJCWlmICh2YWxbMV0pCisJCQkJCSpjcCA9ICc/JzsKKwkJCX0KKwkJCSpjcCA9IDA7CisJCX0KKwl9CisKKwlzcHJpbnRmKHV1aWRfc3RyLCAiJTAxNmxsWCIsIGJsa2lkX2xlNjQobnMtPnZvbHVtZV9zZXJpYWwpKTsKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJVVUlEIiwgdXVpZF9zdHIsIDApOworCWlmIChsYWJlbF9zdHJbMF0pCisJCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgbGFiZWxfc3RyLCAwKTsKKwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IHByb2JlX3hmcyhzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkgICAgIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IHhmc19zdXBlcl9ibG9jayAqeHM7CisJY29uc3QgY2hhciAqbGFiZWwgPSAwOworCisJeHMgPSAoc3RydWN0IHhmc19zdXBlcl9ibG9jayAqKWJ1ZjsKKworCWlmIChzdHJsZW4oeHMtPnhzX2ZuYW1lKSkKKwkJbGFiZWwgPSB4cy0+eHNfZm5hbWU7CisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTEFCRUwiLCBsYWJlbCwgc2l6ZW9mKHhzLT54c19mbmFtZSkpOworCXNldF91dWlkKHByb2JlLT5kZXYsIHhzLT54c191dWlkLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9yZWlzZXJmcyhzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkJICBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkLCB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IHJlaXNlcmZzX3N1cGVyX2Jsb2NrICpycyA9IChzdHJ1Y3QgcmVpc2VyZnNfc3VwZXJfYmxvY2sgKikgYnVmOworCXVuc2lnbmVkIGludCBibG9ja3NpemU7CisJY29uc3QgY2hhciAqbGFiZWwgPSAwOworCisJYmxvY2tzaXplID0gYmxraWRfbGUxNihycy0+cnNfYmxvY2tzaXplKTsKKworCS8qIFRoZSBibG9ja3NpemUgbXVzdCBiZSBhdCBsZWFzdCAxayAqLworCWlmICgoYmxvY2tzaXplID4+IDEwKSA9PSAwKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworCS8qIElmIHRoZSBzdXBlcmJsb2NrIGlzIGluc2lkZSB0aGUgam91cm5hbCwgd2UgaGF2ZSB0aGUgd3Jvbmcgb25lICovCisJaWYgKGlkLT5iaW1fa2JvZmYvKGJsb2Nrc2l6ZT4+MTApID4gYmxraWRfbGUzMihycy0+cnNfam91cm5hbF9ibG9jaykpCisJCXJldHVybiAtQkxLSURfRVJSX0JJRzsKKworCS8qIExBQkVML1VVSUQgYXJlIG9ubHkgdmFsaWQgZm9yIGxhdGVyIHZlcnNpb25zIG9mIFJlaXNlcmZzIHYzLjYuICovCisJaWYgKGlkLT5iaW1fbWFnaWNbNl0gPT0gJzInIHx8IGlkLT5iaW1fbWFnaWNbNl0gPT0gJzMnKSB7CisJCWlmIChzdHJsZW4ocnMtPnJzX2xhYmVsKSkKKwkJCWxhYmVsID0gcnMtPnJzX2xhYmVsOworCQlzZXRfdXVpZChwcm9iZS0+ZGV2LCBycy0+cnNfdXVpZCwgMCk7CisJfQorCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgbGFiZWwsIHNpemVvZihycy0+cnNfbGFiZWwpKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2JlX3JlaXNlcmZzNChzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkJICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkJICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCByZWlzZXI0X3N1cGVyX2Jsb2NrICpyczQgPSAoc3RydWN0IHJlaXNlcjRfc3VwZXJfYmxvY2sgKikgYnVmOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmxhYmVsID0gMDsKKworCWlmIChzdHJsZW4oKGNoYXIgKikgcnM0LT5yczRfbGFiZWwpKQorCQlsYWJlbCA9IHJzNC0+cnM0X2xhYmVsOworCXNldF91dWlkKHByb2JlLT5kZXYsIHJzNC0+cnM0X3V1aWQsIDApOworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgKGNvbnN0IGNoYXIgKikgbGFiZWwsCisJCSAgICAgIHNpemVvZihyczQtPnJzNF9sYWJlbCkpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfamZzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgamZzX3N1cGVyX2Jsb2NrICpqczsKKwljb25zdCBjaGFyICpsYWJlbCA9IDA7CisKKwlqcyA9IChzdHJ1Y3QgamZzX3N1cGVyX2Jsb2NrICopYnVmOworCisJaWYgKGJsa2lkX2xlMzIoanMtPmpzX2JzaXplKSAhPSAoMVUgPDwgYmxraWRfbGUxNihqcy0+anNfbDJic2l6ZSkpKQorCQlyZXR1cm4gMTsKKworCWlmIChibGtpZF9sZTMyKGpzLT5qc19wYnNpemUpICE9ICgxVSA8PCBibGtpZF9sZTE2KGpzLT5qc19sMnBic2l6ZSkpKQorCQlyZXR1cm4gMTsKKworCWlmICgoYmxraWRfbGUxNihqcy0+anNfbDJic2l6ZSkgLSBibGtpZF9sZTE2KGpzLT5qc19sMnBic2l6ZSkpICE9CisJICAgIGJsa2lkX2xlMTYoanMtPmpzX2wyYmZhY3RvcikpCisJCXJldHVybiAxOworCisJaWYgKHN0cmxlbigoY2hhciAqKSBqcy0+anNfbGFiZWwpKQorCQlsYWJlbCA9IChjaGFyICopIGpzLT5qc19sYWJlbDsKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIGxhYmVsLCBzaXplb2YoanMtPmpzX2xhYmVsKSk7CisJc2V0X3V1aWQocHJvYmUtPmRldiwganMtPmpzX3V1aWQsIDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2JlX3pmcyhzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlIF9fQkxLSURfQVRUUigodW51c2VkKSksCisJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiBfX0JMS0lEX0FUVFIoKHVudXNlZCkpKQoreworI2lmIDAKKwljaGFyICp2ZGV2X2xhYmVsOworCWNvbnN0IGNoYXIgKnBvb2xfbmFtZSA9IDA7CisKKwkvKiByZWFkIG52cGFpciBkYXRhIGZvciBwb29sIG5hbWUsIHBvb2wgR1VJRCAoY29tcGxleCkgKi8KKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIHBvb2xfbmFtZSwgc2l6ZW9mKHBvb2xfbmFtZSkpOworCXNldF91dWlkKHByb2JlLT5kZXYsIHBvb2xfZ3VpZCwgMCk7CisjZW5kaWYKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9sdWtzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgICBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkIF9fQkxLSURfQVRUUigodW51c2VkKSksCisJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJY2hhciB1dWlkWzQwXTsKKworCS8qIDE2OCBpcyB0aGUgb2Zmc2V0IHRvIHRoZSA0MCBjaGFyYWN0ZXIgdXVpZDoKKwkgKiBodHRwOi8vbHVrcy5lbmRvcnBoaW4ub3JnL0xVS1Mtb24tZGlzay1mb3JtYXQucGRmICovCisJc3RybmNweSh1dWlkLCAoY2hhciAqKSBidWYrMTY4LCA0MCk7CisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiVVVJRCIsIHV1aWQsIHNpemVvZih1dWlkKSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfcm9tZnMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJICAgICAgIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3Qgcm9tZnNfc3VwZXJfYmxvY2sgKnJvczsKKwljb25zdCBjaGFyICpsYWJlbCA9IDA7CisKKwlyb3MgPSAoc3RydWN0IHJvbWZzX3N1cGVyX2Jsb2NrICopYnVmOworCisJaWYgKHN0cmxlbigoY2hhciAqKSByb3MtPnJvc192b2x1bWUpKQorCQlsYWJlbCA9IChjaGFyICopIHJvcy0+cm9zX3ZvbHVtZTsKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIGxhYmVsLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9jcmFtZnMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJCXN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJCXVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgY3JhbWZzX3N1cGVyX2Jsb2NrICpjc2I7CisJY29uc3QgY2hhciAqbGFiZWwgPSAwOworCisJY3NiID0gKHN0cnVjdCBjcmFtZnNfc3VwZXJfYmxvY2sgKilidWY7CisKKwlpZiAoc3RybGVuKChjaGFyICopIGNzYi0+bmFtZSkpCisJCWxhYmVsID0gKGNoYXIgKikgY3NiLT5uYW1lOworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgbGFiZWwsIDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2JlX3N3YXAwKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgICBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkIF9fQkxLSURfQVRUUigodW51c2VkKSksCisJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWYgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSkKK3sKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJVVUlEIiwgMCwgMCk7CisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTEFCRUwiLCAwLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9zd2FwMShzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkgICAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCwKKwkJICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiBfX0JMS0lEX0FUVFIoKHVudXNlZCkpKQoreworCXN0cnVjdCBzd2FwX2lkX2Jsb2NrICpzd3M7CisKKwlwcm9iZV9zd2FwMChwcm9iZSwgaWQsIGJ1Zik7CisJLyoKKwkgKiBWZXJzaW9uIDEgc3dhcCBoZWFkZXJzIGFyZSBhbHdheXMgbG9jYXRlZCBhdCBvZmZzZXQgb2YgMTAyNAorCSAqIGJ5dGVzLCBhbHRob3VnaCB0aGUgc3dhcCBzaWduYXR1cmUgaXRzZWxmIGlzIGxvY2F0ZWQgYXQgdGhlCisJICogZW5kIG9mIHRoZSBwYWdlICh3aGljaCBtYXkgdmFyeSBkZXBlbmRpbmcgb24gaGFyZHdhcmUKKwkgKiBwYWdlc2l6ZSkuCisJICovCisJc3dzID0gKHN0cnVjdCBzd2FwX2lkX2Jsb2NrICopIGdldF9idWZmZXIocHJvYmUsIDEwMjQsIDEwMjQpOworCWlmICghc3dzKQorCQlyZXR1cm4gMTsKKworCS8qIGNoZWNrIGZvciB3cm9uZyB2ZXJzaW9uIG9yIHplcm9lZCBwYWdlY291bnQsIGZvciBzYW5pdHkgKi8KKwlpZiAoIW1lbWNtcChpZC0+YmltX21hZ2ljLCAiU1dBUFNQQUNFMiIsIGlkLT5iaW1fbGVuKSAmJgorCQkJKHN3cy0+c3dzX3ZlcnNpb24gIT0gMSB8fCBzd3MtPnN3c19sYXN0cGFnZSA9PSAwKSkKKwkJcmV0dXJuIDE7CisKKwkvKiBhcmJpdHJhcnkgc2FuaXR5IGNoZWNrLi4gaXMgdGhlcmUgYW55IGdhcmJhZ2UgZG93biB0aGVyZT8gKi8KKwlpZiAoc3dzLT5zd3NfcGFkWzMyXSA9PSAwICYmIHN3cy0+c3dzX3BhZFszM10gPT0gMCkgIHsKKwkJaWYgKHN3cy0+c3dzX3ZvbHVtZVswXSkKKwkJCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgc3dzLT5zd3Nfdm9sdW1lLAorCQkJCSAgICAgIHNpemVvZihzd3MtPnN3c192b2x1bWUpKTsKKwkJaWYgKHN3cy0+c3dzX3V1aWRbMF0pCisJCQlzZXRfdXVpZChwcm9iZS0+ZGV2LCBzd3MtPnN3c191dWlkLCAwKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfaXNvOTY2MChzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkJIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJCSB1bnNpZ25lZCBjaGFyICpidWYpCit7CisJc3RydWN0IGlzb192b2x1bWVfZGVzY3JpcHRvciAqaXNvOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmxhYmVsOworCisJaXNvID0gKHN0cnVjdCBpc29fdm9sdW1lX2Rlc2NyaXB0b3IgKikgYnVmOworCWxhYmVsID0gaXNvLT52b2x1bWVfaWQ7CisKKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIChjb25zdCBjaGFyICopIGxhYmVsLAorCQkgICAgICBmaWd1cmVfbGFiZWxfbGVuKGxhYmVsLCAzMikpOworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBjb25zdCBjaGFyCisqdWRmX21hZ2ljW10gPSB7ICJCRUEwMSIsICJCT09UMiIsICJDRDAwMSIsICJDRFcwMiIsICJOU1IwMiIsCisJCSAiTlNSMDMiLCAiVEVBMDEiLCAwIH07CisKK3N0YXRpYyBpbnQgcHJvYmVfdWRmKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiBfX0JMS0lEX0FUVFIoKHVudXNlZCkpKQoreworCWludCBqLCBiczsKKwlzdHJ1Y3QgaXNvX3ZvbHVtZV9kZXNjcmlwdG9yICppc29zYjsKKwljb25zdCBjaGFyICoqIG07CisKKwkvKiBkZXRlcm1pbmUgdGhlIGJsb2NrIHNpemUgYnkgc2Nhbm5pbmcgaW4gMksgaW5jcmVtZW50cworCSAgIChibG9jayBzaXplcyBsYXJnZXIgdGhhbiAySyB3aWxsIGJlIG51bGwgcGFkZGVkKSAqLworCWZvciAoYnMgPSAxOyBicyA8IDE2OyBicysrKSB7CisJCWlzb3NiID0gKHN0cnVjdCBpc29fdm9sdW1lX2Rlc2NyaXB0b3IgKikKKwkJCWdldF9idWZmZXIocHJvYmUsIChibGtpZF9sb2ZmX3QpIGJzKjIwNDgrMzI3NjgsCisJCQkJICAgc2l6ZW9mKCppc29zYikpOworCQlpZiAoIWlzb3NiKQorCQkJcmV0dXJuIDE7CisJCWlmIChpc29zYi0+dmRfaWRbMF0pCisJCQlicmVhazsKKwl9CisKKwkvKiBTY2FuIHVwIHRvIGFub3RoZXIgNjQgYmxvY2tzIGxvb2tpbmcgZm9yIGFkZGl0aW9uYWwgVlNEJ3MgKi8KKwlmb3IgKGogPSAxOyBqIDwgNjQ7IGorKykgeworCQlpZiAoaiA+IDEpIHsKKwkJCWlzb3NiID0gKHN0cnVjdCBpc29fdm9sdW1lX2Rlc2NyaXB0b3IgKikKKwkJCQlnZXRfYnVmZmVyKHByb2JlLCBqKmJzKjIwNDgrMzI3NjgsCisJCQkJCSAgIHNpemVvZigqaXNvc2IpKTsKKwkJCWlmICghaXNvc2IpCisJCQkJcmV0dXJuIDE7CisJCX0KKwkJLyogSWYgd2UgZmluZCBOU1IweCB0aGVuIGNhbGwgaXQgdWRmOgorCQkgICBOU1IwMSBmb3IgVURGIDEuMDAKKwkJICAgTlNSMDIgZm9yIFVERiAxLjUwCisJCSAgIE5TUjAzIGZvciBVREYgMi4wMCAqLworCQlpZiAoIW1lbWNtcChpc29zYi0+dmRfaWQsICJOU1IwIiwgNCkpCisJCQlyZXR1cm4gcHJvYmVfaXNvOTY2MChwcm9iZSwgaWQsIGJ1Zik7CisJCWZvciAobSA9IHVkZl9tYWdpYzsgKm07IG0rKykKKwkJCWlmICghbWVtY21wKCptLCBpc29zYi0+dmRfaWQsIDUpKQorCQkJCWJyZWFrOworCQlpZiAoKm0gPT0gMCkKKwkJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBwcm9iZV9vY2ZzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBvY2ZzX3ZvbHVtZV9oZWFkZXIgb3ZoOworCXN0cnVjdCBvY2ZzX3ZvbHVtZV9sYWJlbCBvdmw7CisJX191MzIgbWFqb3I7CisKKwltZW1jcHkoJm92aCwgYnVmLCBzaXplb2Yob3ZoKSk7CisJbWVtY3B5KCZvdmwsIGJ1Zis1MTIsIHNpemVvZihvdmwpKTsKKworCW1ham9yID0gb2Nmc21ham9yKG92aCk7CisJaWYgKG1ham9yID09IDEpCisJCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwiU0VDX1RZUEUiLCJvY2ZzMSIsc2l6ZW9mKCJvY2ZzMSIpKTsKKwllbHNlIGlmIChtYWpvciA+PSA5KQorCQlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsIlNFQ19UWVBFIiwibnRvY2ZzIixzaXplb2YoIm50b2NmcyIpKTsKKworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgb3ZsLmxhYmVsLCBvY2ZzbGFiZWxsZW4ob3ZsKSk7CisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTU9VTlQiLCBvdmgubW91bnQsIG9jZnNtb3VudGxlbihvdmgpKTsKKwlzZXRfdXVpZChwcm9iZS0+ZGV2LCBvdmwudm9sX2lkLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9vY2ZzMihzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkgICAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBvY2ZzMl9zdXBlcl9ibG9jayAqb3NiOworCisJb3NiID0gKHN0cnVjdCBvY2ZzMl9zdXBlcl9ibG9jayAqKWJ1ZjsKKworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgb3NiLT5zX2xhYmVsLCBzaXplb2Yob3NiLT5zX2xhYmVsKSk7CisJc2V0X3V1aWQocHJvYmUtPmRldiwgb3NiLT5zX3V1aWQsIDApOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2JlX29yYWNsZWFzbShzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkJICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkJICAgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBvcmFjbGVfYXNtX2Rpc2tfbGFiZWwgKmRsOworCisJZGwgPSAoc3RydWN0IG9yYWNsZV9hc21fZGlza19sYWJlbCAqKWJ1ZjsKKworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgZGwtPmRsX2lkLCBzaXplb2YoZGwtPmRsX2lkKSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfZ2ZzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZ2ZzMl9zYiAqc2JkOworCWNvbnN0IGNoYXIgKmxhYmVsID0gMDsKKworCXNiZCA9IChzdHJ1Y3QgZ2ZzMl9zYiAqKWJ1ZjsKKworCWlmIChibGtpZF9iZTMyKHNiZC0+c2JfZnNfZm9ybWF0KSA9PSBHRlNfRk9STUFUX0ZTICYmCisJICAgIGJsa2lkX2JlMzIoc2JkLT5zYl9tdWx0aWhvc3RfZm9ybWF0KSA9PSBHRlNfRk9STUFUX01VTFRJKQorCXsKKwkJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiVVVJRCIsIDAsIDApOworCisJCWlmIChzdHJsZW4oc2JkLT5zYl9sb2NrdGFibGUpKQorCQkJbGFiZWwgPSBzYmQtPnNiX2xvY2t0YWJsZTsKKwkJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTEFCRUwiLCBsYWJlbCwgc2l6ZW9mKHNiZC0+c2JfbG9ja3RhYmxlKSk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBwcm9iZV9nZnMyKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCSAgICAgc3RydWN0IGJsa2lkX21hZ2ljICppZCBfX0JMS0lEX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgZ2ZzMl9zYiAqc2JkOworCWNvbnN0IGNoYXIgKmxhYmVsID0gMDsKKworCXNiZCA9IChzdHJ1Y3QgZ2ZzMl9zYiAqKWJ1ZjsKKworCWlmIChibGtpZF9iZTMyKHNiZC0+c2JfZnNfZm9ybWF0KSA9PSBHRlMyX0ZPUk1BVF9GUyAmJgorCSAgICBibGtpZF9iZTMyKHNiZC0+c2JfbXVsdGlob3N0X2Zvcm1hdCkgPT0gR0ZTMl9GT1JNQVRfTVVMVEkpCisJeworCQlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJVVUlEIiwgMCwgMCk7CisKKwkJaWYgKHN0cmxlbihzYmQtPnNiX2xvY2t0YWJsZSkpCisJCQlsYWJlbCA9IHNiZC0+c2JfbG9ja3RhYmxlOworCQlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIGxhYmVsLCBzaXplb2Yoc2JkLT5zYl9sb2NrdGFibGUpKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCB1bmljb2RlXzE2YmVfdG9fdXRmOCh1bnNpZ25lZCBjaGFyICpzdHIsIGludCBvdXRfbGVuLAorCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBpbl9sZW4pCit7CisJaW50IGksIGo7CisJdW5zaWduZWQgaW50IGM7CisKKwlmb3IgKGkgPSBqID0gMDsgaSArIDIgPD0gaW5fbGVuOyBpICs9IDIpIHsKKwkJYyA9IChidWZbaV0gPDwgOCkgfCBidWZbaSsxXTsKKwkJaWYgKGMgPT0gMCkgeworCQkJc3RyW2pdID0gJ1wwJzsKKwkJCWJyZWFrOworCQl9IGVsc2UgaWYgKGMgPCAweDgwKSB7CisJCQlpZiAoaisxID49IG91dF9sZW4pCisJCQkJYnJlYWs7CisJCQlzdHJbaisrXSA9ICh1bnNpZ25lZCBjaGFyKSBjOworCQl9IGVsc2UgaWYgKGMgPCAweDgwMCkgeworCQkJaWYgKGorMiA+PSBvdXRfbGVuKQorCQkJCWJyZWFrOworCQkJc3RyW2orK10gPSAodW5zaWduZWQgY2hhcikgKDB4YzAgfCAoYyA+PiA2KSk7CisJCQlzdHJbaisrXSA9ICh1bnNpZ25lZCBjaGFyKSAoMHg4MCB8IChjICYgMHgzZikpOworCQl9IGVsc2UgeworCQkJaWYgKGorMyA+PSBvdXRfbGVuKQorCQkJCWJyZWFrOworCQkJc3RyW2orK10gPSAodW5zaWduZWQgY2hhcikgKDB4ZTAgfCAoYyA+PiAxMikpOworCQkJc3RyW2orK10gPSAodW5zaWduZWQgY2hhcikgKDB4ODAgfCAoKGMgPj4gNikgJiAweDNmKSk7CisJCQlzdHJbaisrXSA9ICh1bnNpZ25lZCBjaGFyKSAoMHg4MCB8IChjICYgMHgzZikpOworCQl9CisJfQorCXN0cltqXSA9ICdcMCc7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfaGZzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJCSBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkIF9fQkxLSURfQVRUUigodW51c2VkKSksCisJCQkgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBoZnNfbWRiICpoZnMgPSAoc3RydWN0IGhmc19tZGIgKilidWY7CisJdW5zaWduZWQgbG9uZyBsb25nICp1dWlkX3B0cjsKKwljaGFyCXV1aWRfc3RyWzE3XTsKKwlfX3U2NAl1dWlkOworCisJaWYgKChtZW1jbXAoaGZzLT5lbWJlZF9zaWcsICJIKyIsIDIpID09IDApIHx8CisJICAgIChtZW1jbXAoaGZzLT5lbWJlZF9zaWcsICJIWCIsIDIpID09IDApKQorCQlyZXR1cm4gMTsJLyogTm90IGhmcywgYnV0IGFuIGVtYmVkZGVkIEhGUysgKi8KKworCXV1aWRfcHRyID0gKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWhmcy0+ZmluZGVyX2luZm8uaWQ7CisJdXVpZCA9IGJsa2lkX2xlNjQoKnV1aWRfcHRyKTsKKwlpZiAodXVpZCkgeworCQlzcHJpbnRmKHV1aWRfc3RyLCAiJTAxNmxsWCIsIHV1aWQpOworCQlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJVVUlEIiwgdXVpZF9zdHIsIDApOworCX0KKwlibGtpZF9zZXRfdGFnKHByb2JlLT5kZXYsICJMQUJFTCIsIChjaGFyICopaGZzLT5sYWJlbCwgaGZzLT5sYWJlbF9sZW4pOworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQgcHJvYmVfaGZzcGx1cyhzdHJ1Y3QgYmxraWRfcHJvYmUgKnByb2JlLAorCQkJIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQsCisJCQkgdW5zaWduZWQgY2hhciAqYnVmKQoreworCXN0cnVjdCBoZnNwbHVzX2V4dGVudCBleHRlbnRzW0hGU1BMVVNfRVhURU5UX0NPVU5UXTsKKwlzdHJ1Y3QgaGZzcGx1c19ibm9kZV9kZXNjcmlwdG9yICpkZXNjcjsKKwlzdHJ1Y3QgaGZzcGx1c19iaGVhZGVyX3JlY29yZCAqYm5vZGU7CisJc3RydWN0IGhmc3BsdXNfY2F0YWxvZ19rZXkgKmtleTsKKwlzdHJ1Y3QgaGZzcGx1c192b2xfaGVhZGVyICpoZnNwbHVzOworCXN0cnVjdCBoZnNfbWRiICpzYmQgPSAoc3RydWN0IGhmc19tZGIgKikgYnVmOworCXVuc2lnbmVkIGludCBhbGxvY19ibG9ja19zaXplOworCXVuc2lnbmVkIGludCBhbGxvY19maXJzdF9ibG9jazsKKwl1bnNpZ25lZCBpbnQgZW1iZWRfZmlyc3RfYmxvY2s7CisJdW5zaWduZWQgaW50IG9mZiA9IDA7CisJdW5zaWduZWQgaW50IGJsb2Nrc2l6ZTsKKwl1bnNpZ25lZCBpbnQgY2F0X2Jsb2NrOworCXVuc2lnbmVkIGludCBleHRfYmxvY2tfc3RhcnQ7CisJdW5zaWduZWQgaW50IGV4dF9ibG9ja19jb3VudDsKKwl1bnNpZ25lZCBpbnQgcmVjb3JkX2NvdW50OworCXVuc2lnbmVkIGludCBsZWFmX25vZGVfaGVhZDsKKwl1bnNpZ25lZCBpbnQgbGVhZl9ub2RlX2NvdW50OworCXVuc2lnbmVkIGludCBsZWFmX25vZGVfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgbGVhZl9ibG9jazsKKwl1bnNpZ25lZCBpbnQgbGFiZWxfbGVuOworCXVuc2lnbmVkIGxvbmcgbG9uZyAqdXVpZF9wdHI7CisJX191NjQgbGVhZl9vZmYsIHV1aWQ7CisJY2hhcgl1dWlkX3N0clsxN10sIGxhYmVsWzUxMl07CisJaW50IGV4dDsKKworCS8qIENoZWNrIGZvciBhIEhGUysgdm9sdW1lIGVtYmVkZGVkIGluIGEgSEZTIHZvbHVtZSAqLworCWlmIChtZW1jbXAoc2JkLT5zaWduYXR1cmUsICJCRCIsIDIpID09IDApIHsKKwkJaWYgKChtZW1jbXAoc2JkLT5lbWJlZF9zaWcsICJIKyIsIDIpICE9IDApICYmCisJCSAgICAobWVtY21wKHNiZC0+ZW1iZWRfc2lnLCAiSFgiLCAyKSAhPSAwKSkKKwkJCS8qIFRoaXMgbXVzdCBiZSBhbiBIRlMgdm9sdW1lLCBzbyBmYWlsICovCisJCQlyZXR1cm4gMTsKKworCQlhbGxvY19ibG9ja19zaXplID0gYmxraWRfYmUzMihzYmQtPmFsX2Jsa19zaXplKTsKKwkJYWxsb2NfZmlyc3RfYmxvY2sgPSBibGtpZF9iZTE2KHNiZC0+YWxfYmxfc3QpOworCQllbWJlZF9maXJzdF9ibG9jayA9IGJsa2lkX2JlMTYoc2JkLT5lbWJlZF9zdGFydGJsb2NrKTsKKwkJb2ZmID0gKGFsbG9jX2ZpcnN0X2Jsb2NrICogNTEyKSArCisJCQkoZW1iZWRfZmlyc3RfYmxvY2sgKiBhbGxvY19ibG9ja19zaXplKTsKKwkJYnVmID0gZ2V0X2J1ZmZlcihwcm9iZSwgb2ZmICsgKGlkLT5iaW1fa2JvZmYgKiAxMDI0KSwKKwkJCQkgc2l6ZW9mKCpzYmQpKTsKKwkJaWYgKCFidWYpCisJCQlyZXR1cm4gMTsKKworCQloZnNwbHVzID0gKHN0cnVjdCBoZnNwbHVzX3ZvbF9oZWFkZXIgKikgYnVmOworCX0KKworCWhmc3BsdXMgPSAoc3RydWN0IGhmc3BsdXNfdm9sX2hlYWRlciAqKSBidWY7CisKKwlpZiAoKG1lbWNtcChoZnNwbHVzLT5zaWduYXR1cmUsICJIKyIsIDIpICE9IDApICYmCisJICAgIChtZW1jbXAoaGZzcGx1cy0+c2lnbmF0dXJlLCAiSFgiLCAyKSAhPSAwKSkKKwkJcmV0dXJuIDE7CisKKwl1dWlkX3B0ciA9ICh1bnNpZ25lZCBsb25nIGxvbmcgKiloZnNwbHVzLT5maW5kZXJfaW5mby5pZDsKKwl1dWlkID0gYmxraWRfbGU2NCgqdXVpZF9wdHIpOworCWlmICh1dWlkKSB7CisJCXNwcmludGYodXVpZF9zdHIsICIlMDE2bGxYIiwgdXVpZCk7CisJCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIlVVSUQiLCB1dWlkX3N0ciwgMCk7CisJfQorCisJYmxvY2tzaXplID0gYmxraWRfYmUzMihoZnNwbHVzLT5ibG9ja3NpemUpOworCW1lbWNweShleHRlbnRzLCBoZnNwbHVzLT5jYXRfZmlsZS5leHRlbnRzLCBzaXplb2YoZXh0ZW50cykpOworCWNhdF9ibG9jayA9IGJsa2lkX2JlMzIoZXh0ZW50c1swXS5zdGFydF9ibG9jayk7CisKKwlidWYgPSBnZXRfYnVmZmVyKHByb2JlLCBvZmYgKyAoKF9fdTY0KSBjYXRfYmxvY2sgKiBibG9ja3NpemUpLCAweDIwMDApOworCWlmICghYnVmKQorCQlyZXR1cm4gMDsKKworCWJub2RlID0gKHN0cnVjdCBoZnNwbHVzX2JoZWFkZXJfcmVjb3JkICopCisJCSZidWZbc2l6ZW9mKHN0cnVjdCBoZnNwbHVzX2Jub2RlX2Rlc2NyaXB0b3IpXTsKKworCWxlYWZfbm9kZV9oZWFkID0gYmxraWRfYmUzMihibm9kZS0+bGVhZl9oZWFkKTsKKwlsZWFmX25vZGVfc2l6ZSA9IGJsa2lkX2JlMTYoYm5vZGUtPm5vZGVfc2l6ZSk7CisJbGVhZl9ub2RlX2NvdW50ID0gYmxraWRfYmUzMihibm9kZS0+bGVhZl9jb3VudCk7CisJaWYgKGxlYWZfbm9kZV9jb3VudCA9PSAwKQorCQlyZXR1cm4gMDsKKworCWxlYWZfYmxvY2sgPSAobGVhZl9ub2RlX2hlYWQgKiBsZWFmX25vZGVfc2l6ZSkgLyBibG9ja3NpemU7CisKKwkvKiBnZXQgcGh5c2ljYWwgbG9jYXRpb24gKi8KKwlmb3IgKGV4dCA9IDA7IGV4dCA8IEhGU1BMVVNfRVhURU5UX0NPVU5UOyBleHQrKykgeworCQlleHRfYmxvY2tfc3RhcnQgPSBibGtpZF9iZTMyKGV4dGVudHNbZXh0XS5zdGFydF9ibG9jayk7CisJCWV4dF9ibG9ja19jb3VudCA9IGJsa2lkX2JlMzIoZXh0ZW50c1tleHRdLmJsb2NrX2NvdW50KTsKKwkJaWYgKGV4dF9ibG9ja19jb3VudCA9PSAwKQorCQkJcmV0dXJuIDA7CisKKwkJLyogdGhpcyBpcyBvdXIgZXh0ZW50ICovCisJCWlmIChsZWFmX2Jsb2NrIDwgZXh0X2Jsb2NrX2NvdW50KQorCQkJYnJlYWs7CisKKwkJbGVhZl9ibG9jayAtPSBleHRfYmxvY2tfY291bnQ7CisJfQorCWlmIChleHQgPT0gSEZTUExVU19FWFRFTlRfQ09VTlQpCisJCXJldHVybiAwOworCisJbGVhZl9vZmYgPSAoX191NjQpIChleHRfYmxvY2tfc3RhcnQgKyBsZWFmX2Jsb2NrKSAqIGJsb2Nrc2l6ZTsKKworCWJ1ZiA9IGdldF9idWZmZXIocHJvYmUsIG9mZiArIGxlYWZfb2ZmLCBsZWFmX25vZGVfc2l6ZSk7CisJaWYgKCFidWYpCisJCXJldHVybiAwOworCisJZGVzY3IgPSAoc3RydWN0IGhmc3BsdXNfYm5vZGVfZGVzY3JpcHRvciAqKSBidWY7CisJcmVjb3JkX2NvdW50ID0gYmxraWRfYmUxNihkZXNjci0+bnVtX3JlY3MpOworCWlmIChyZWNvcmRfY291bnQgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZGVzY3ItPnR5cGUgIT0gSEZTX05PREVfTEVBRikKKwkJcmV0dXJuIDA7CisKKwlrZXkgPSAoc3RydWN0IGhmc3BsdXNfY2F0YWxvZ19rZXkgKikKKwkJJmJ1ZltzaXplb2Yoc3RydWN0IGhmc3BsdXNfYm5vZGVfZGVzY3JpcHRvcildOworCisJaWYgKGJsa2lkX2JlMzIoa2V5LT5wYXJlbnRfaWQpICE9IEhGU1BMVVNfUE9SX0NOSUQpCisJCXJldHVybiAwOworCisJbGFiZWxfbGVuID0gYmxraWRfYmUxNihrZXktPnVuaWNvZGVfbGVuKSAqIDI7CisJdW5pY29kZV8xNmJlX3RvX3V0ZjgoKHVuc2lnbmVkIGNoYXIgKilsYWJlbCwgc2l6ZW9mKGxhYmVsKSwKKwkJCSAgICAga2V5LT51bmljb2RlLCBsYWJlbF9sZW4pOworCWJsa2lkX3NldF90YWcocHJvYmUtPmRldiwgIkxBQkVMIiwgbGFiZWwsIDApOworCXJldHVybiAwOworfQorCisjZGVmaW5lIExWTTJfTEFCRUxfU0laRSA1MTIKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbHZtMl9jYWxjX2NyYyhjb25zdCB2b2lkICpidWYsIHVuc2lnbmVkIGludCBzaXplKQoreworCXN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgY3JjdGFiW10gPSB7CisJCTB4MDAwMDAwMDAsIDB4MWRiNzEwNjQsIDB4M2I2ZTIwYzgsIDB4MjZkOTMwYWMsCisJCTB4NzZkYzQxOTAsIDB4NmI2YjUxZjQsIDB4NGRiMjYxNTgsIDB4NTAwNTcxM2MsCisJCTB4ZWRiODgzMjAsIDB4ZjAwZjkzNDQsIDB4ZDZkNmEzZTgsIDB4Y2I2MWIzOGMsCisJCTB4OWI2NGMyYjAsIDB4ODZkM2QyZDQsIDB4YTAwYWUyNzgsIDB4YmRiZGYyMWMKKwl9OworCXVuc2lnbmVkIGludCBpLCBjcmMgPSAweGY1OTdhNmNmOworCWNvbnN0IF9fdTggKmRhdGEgPSAoY29uc3QgX191OCAqKSBidWY7CisKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisJCWNyYyBePSAqZGF0YSsrOworCQljcmMgPSAoY3JjID4+IDQpIF4gY3JjdGFiW2NyYyAmIDB4Zl07CisJCWNyYyA9IChjcmMgPj4gNCkgXiBjcmN0YWJbY3JjICYgMHhmXTsKKwl9CisJcmV0dXJuIGNyYzsKK30KKworc3RhdGljIGludCBwcm9iZV9sdm0yKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCQlzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkLAorCQkJdW5zaWduZWQgY2hhciAqYnVmKQoreworCWludCBzZWN0b3IgPSAoaWQtPmJpbV9rYm9mZikgPDwgMTsKKwlzdHJ1Y3QgbHZtMl9wdl9sYWJlbF9oZWFkZXIgKmxhYmVsPSAoc3RydWN0IGx2bTJfcHZfbGFiZWxfaGVhZGVyICopYnVmOworCWNoYXIgKnAsICpxLCB1dWlkWzQwXTsKKwl1bnNpZ25lZCBpbnQgaSwgYjsKKworCS8qIGJ1ZiBpcyBhdCAwayBvciAxayBvZmZzZXQ7IGZpbmQgbGFiZWwgaW5zaWRlICovCisJaWYgKG1lbWNtcChidWYsICJMQUJFTE9ORSIsIDgpID09IDApIHsKKwkJbGFiZWwgPSAoc3RydWN0IGx2bTJfcHZfbGFiZWxfaGVhZGVyICopYnVmOworCX0gZWxzZSBpZiAobWVtY21wKGJ1ZiArIDUxMiwgIkxBQkVMT05FIiwgOCkgPT0gMCkgeworCQlsYWJlbCA9IChzdHJ1Y3QgbHZtMl9wdl9sYWJlbF9oZWFkZXIgKikoYnVmICsgNTEyKTsKKwkJc2VjdG9yKys7CisJfSBlbHNlIHsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKGJsa2lkX2xlNjQobGFiZWwtPnNlY3Rvcl94bCkgIT0gKHVuc2lnbmVkKSBzZWN0b3IpIHsKKwkJREJHKERFQlVHX1BST0JFLAorCQkgICAgcHJpbnRmKCJMVk0yOiBsYWJlbCBmb3Igc2VjdG9yICVsbHUgZm91bmQgYXQgc2VjdG9yICVkXG4iLAorCQkJICAgYmxraWRfbGU2NChsYWJlbC0+c2VjdG9yX3hsKSwgc2VjdG9yKSk7CisJCXJldHVybiAxOworCX0KKworCWlmIChsdm0yX2NhbGNfY3JjKCZsYWJlbC0+b2Zmc2V0X3hsLCBMVk0yX0xBQkVMX1NJWkUgLQorCQkJICAoKGNoYXIgKikmbGFiZWwtPm9mZnNldF94bCAtIChjaGFyICopbGFiZWwpKSAhPQorCQkJYmxraWRfbGUzMihsYWJlbC0+Y3JjX3hsKSkgeworCQlEQkcoREVCVUdfUFJPQkUsCisJCSAgICBwcmludGYoIkxWTTI6IGxhYmVsIGNoZWNrc3VtIGluY29ycmVjdCBhdCBzZWN0b3IgJWRcbiIsCisJCQkgICBzZWN0b3IpKTsKKwkJcmV0dXJuIDE7CisJfQorCisJZm9yIChpPTAsIGI9MSwgcD11dWlkLCBxPSAoY2hhciAqKSBsYWJlbC0+cHZfdXVpZDsgaSA8IExWTTJfSURfTEVOOworCSAgICAgaSsrLCBiIDw8PSAxKSB7CisJCWlmIChiICYgMHg0NDQ0NDQwKQorCQkJKnArKyA9ICctJzsKKwkJKnArKyA9ICpxKys7CisJfQorCisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiVVVJRCIsIHV1aWQsIExWTTJfSURfTEVOKzYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvYmVfYnRyZnMoc3RydWN0IGJsa2lkX3Byb2JlICpwcm9iZSwKKwkJCXN0cnVjdCBibGtpZF9tYWdpYyAqaWQgX19CTEtJRF9BVFRSKCh1bnVzZWQpKSwKKwkJCXVuc2lnbmVkIGNoYXIgKmJ1ZikKK3sKKwlzdHJ1Y3QgYnRyZnNfc3VwZXJfYmxvY2sgKmJzOworCWNvbnN0IGNoYXIgKmxhYmVsID0gMDsKKworCWJzID0gKHN0cnVjdCBidHJmc19zdXBlcl9ibG9jayAqKWJ1ZjsKKworCWlmIChzdHJsZW4oYnMtPmxhYmVsKSkKKwkJbGFiZWwgPSBicy0+bGFiZWw7CisJYmxraWRfc2V0X3RhZyhwcm9iZS0+ZGV2LCAiTEFCRUwiLCBsYWJlbCwgc2l6ZW9mKGJzLT5sYWJlbCkpOworCXNldF91dWlkKHByb2JlLT5kZXYsIGJzLT5mc2lkLCAwKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcm9iZV9mMmZzKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisgICAgICAgICAgICBzdHJ1Y3QgYmxraWRfbWFnaWMgKmlkIF9fQkxLSURfQVRUUigodW51c2VkKSksCisgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWYpCit7CisgICAgc3RydWN0IGYyZnNfc3VwZXJfYmxvY2sgKmJzOworCisgICAgYnMgPSAoc3RydWN0IGYyZnNfc3VwZXJfYmxvY2sgKilidWY7CisgICAgc2V0X3V1aWQocHJvYmUtPmRldiwgYnMtPnV1aWQsIDApOworICAgIHJldHVybiAwOworfQorCisvKgorICogVmFyaW91cyBmaWxlc3lzdGVtIG1hZ2ljcyB0aGF0IHdlIGNhbiBjaGVjayBmb3IuICBOb3RlIHRoYXQga2JvZmYgYW5kCisgKiBzYm9mZiBhcmUgaW4ga2lsb2J5dGVzIGFuZCBieXRlcyByZXNwZWN0aXZlbHkuICBBbGwgbWFnaWNzIGFyZSBpbgorICogYnl0ZSBzdHJpbmdzIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGVuZGlhbiBpc3N1ZXMuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgYmxraWRfbWFnaWMgdHlwZV9hcnJheVtdID0geworLyogIHR5cGUgICAgIGtib2ZmICAgc2JvZmYgbGVuICBtYWdpYwkJCXByb2JlICovCisgIHsgIm9yYWNsZWFzbSIsIDAsCTMyLCAgOCwgIk9SQ0xESVNLIiwJCXByb2JlX29yYWNsZWFzbSB9LAorICB7ICJudGZzIiwJIDAsCSAzLCAgOCwgIk5URlMgICAgIiwJCXByb2JlX250ZnMgfSwKKyAgeyAiamJkIiwJIDEsICAgMHgzOCwgIDIsICJcMTIzXDM1NyIsCQlwcm9iZV9qYmQgfSwKKyAgeyAiZXh0NGRldiIsCSAxLCAgIDB4MzgsICAyLCAiXDEyM1wzNTciLAkJcHJvYmVfZXh0NGRldiB9LAorICB7ICJleHQ0IiwJIDEsICAgMHgzOCwgIDIsICJcMTIzXDM1NyIsCQlwcm9iZV9leHQ0IH0sCisgIHsgImV4dDMiLAkgMSwgICAweDM4LCAgMiwgIlwxMjNcMzU3IiwJCXByb2JlX2V4dDMgfSwKKyAgeyAiZXh0MiIsCSAxLCAgIDB4MzgsICAyLCAiXDEyM1wzNTciLAkJcHJvYmVfZXh0MiB9LAorICB7ICJyZWlzZXJmcyIsCSA4LCAgIDB4MzQsICA4LCAiUmVJc0VyRnMiLAkJcHJvYmVfcmVpc2VyZnMgfSwKKyAgeyAicmVpc2VyZnMiLCA2NCwgICAweDM0LCAgOSwgIlJlSXNFcjJGcyIsCQlwcm9iZV9yZWlzZXJmcyB9LAorICB7ICJyZWlzZXJmcyIsIDY0LCAgIDB4MzQsICA5LCAiUmVJc0VyM0ZzIiwJCXByb2JlX3JlaXNlcmZzIH0sCisgIHsgInJlaXNlcmZzIiwgNjQsICAgMHgzNCwgIDgsICJSZUlzRXJGcyIsCQlwcm9iZV9yZWlzZXJmcyB9LAorICB7ICJyZWlzZXJmcyIsCSA4LAkyMCwgIDgsICJSZUlzRXJGcyIsCQlwcm9iZV9yZWlzZXJmcyB9LAorICB7ICJyZWlzZXI0IiwgIDY0LAkgMCwgIDcsICJSZUlzRXI0IiwJCXByb2JlX3JlaXNlcmZzNCB9LAorICB7ICJnZnMyIiwgICAgIDY0LCAgICAgIDAsICA0LCAiXHgwMVx4MTZceDE5XHg3MCIsICAgICBwcm9iZV9nZnMyIH0sCisgIHsgImdmcyIsICAgICAgNjQsICAgICAgMCwgIDQsICJceDAxXHgxNlx4MTlceDcwIiwgICAgIHByb2JlX2dmcyB9LAorICB7ICJ2ZmF0IiwgICAgICAwLCAgIDB4NTIsICA1LCAiTVNXSU4iLCAgICAgICAgICAgICAgICBwcm9iZV9mYXQgfSwKKyAgeyAidmZhdCIsICAgICAgMCwgICAweDUyLCAgOCwgIkZBVDMyICAgIiwgICAgICAgICAgICAgcHJvYmVfZmF0IH0sCisgIHsgInZmYXQiLCAgICAgIDAsICAgMHgzNiwgIDUsICJNU0RPUyIsICAgICAgICAgICAgICAgIHByb2JlX2ZhdCB9LAorICB7ICJ2ZmF0IiwgICAgICAwLCAgIDB4MzYsICA4LCAiRkFUMTYgICAiLCAgICAgICAgICAgICBwcm9iZV9mYXQgfSwKKyAgeyAidmZhdCIsICAgICAgMCwgICAweDM2LCAgOCwgIkZBVDEyICAgIiwgICAgICAgICAgICAgcHJvYmVfZmF0IH0sCisgIHsgInZmYXQiLCAgICAgIDAsICAgICAgMCwgIDEsICJcMzUzIiwgICAgICAgICAgICAgICAgIHByb2JlX2ZhdF9ub21hZ2ljIH0sCisgIHsgInZmYXQiLCAgICAgIDAsICAgICAgMCwgIDEsICJcMzUxIiwgICAgICAgICAgICAgICAgIHByb2JlX2ZhdF9ub21hZ2ljIH0sCisgIHsgInZmYXQiLCAgICAgIDAsICAweDFmZSwgIDIsICJcMTI1XDI1MiIsICAgICAgICAgICAgIHByb2JlX2ZhdF9ub21hZ2ljIH0sCisgIHsgIm1pbml4IiwgICAgIDEsICAgMHgxMCwgIDIsICJcMTc3XDAyMyIsICAgICAgICAgICAgIDAgfSwKKyAgeyAibWluaXgiLCAgICAgMSwgICAweDEwLCAgMiwgIlwyMTdcMDIzIiwgICAgICAgICAgICAgMCB9LAorICB7ICJtaW5peCIsCSAxLCAgIDB4MTAsICAyLCAiXDE1MFwwNDQiLAkJMCB9LAorICB7ICJtaW5peCIsCSAxLCAgIDB4MTAsICAyLCAiXDE3MFwwNDQiLAkJMCB9LAorICB7ICJ2eGZzIiwJIDEsCSAwLCAgNCwgIlwzNjVcMzc0XDAwMVwyNDUiLAkwIH0sCisgIHsgInhmcyIsCSAwLAkgMCwgIDQsICJYRlNCIiwJCQlwcm9iZV94ZnMgfSwKKyAgeyAicm9tZnMiLAkgMCwJIDAsICA4LCAiLXJvbTFmcy0iLAkJcHJvYmVfcm9tZnMgfSwKKyAgeyAiYmZzIiwJIDAsCSAwLCAgNCwgIlwzMTZcMzcyXDE3M1wwMzMiLAkwIH0sCisgIHsgImNyYW1mcyIsCSAwLAkgMCwgIDQsICJFPVwzMTVcMDUwIiwJCXByb2JlX2NyYW1mcyB9LAorICB7ICJxbng0IiwJIDAsCSA0LCAgNiwgIlFOWDRGUyIsCQkwIH0sCisgIHsgInVkZiIsCTMyLAkgMSwgIDUsICJCRUEwMSIsCQlwcm9iZV91ZGYgfSwKKyAgeyAidWRmIiwJMzIsCSAxLCAgNSwgIkJPT1QyIiwJCXByb2JlX3VkZiB9LAorICB7ICJ1ZGYiLAkzMiwJIDEsICA1LCAiQ0QwMDEiLAkJcHJvYmVfdWRmIH0sCisgIHsgInVkZiIsCTMyLAkgMSwgIDUsICJDRFcwMiIsCQlwcm9iZV91ZGYgfSwKKyAgeyAidWRmIiwJMzIsCSAxLCAgNSwgIk5TUjAyIiwJCXByb2JlX3VkZiB9LAorICB7ICJ1ZGYiLAkzMiwJIDEsICA1LCAiTlNSMDMiLAkJcHJvYmVfdWRmIH0sCisgIHsgInVkZiIsCTMyLAkgMSwgIDUsICJURUEwMSIsCQlwcm9iZV91ZGYgfSwKKyAgeyAiaXNvOTY2MCIsCTMyLAkgMSwgIDUsICJDRDAwMSIsCQlwcm9iZV9pc285NjYwIH0sCisgIHsgImlzbzk2NjAiLAkzMiwJIDksICA1LCAiQ0RST00iLAkJcHJvYmVfaXNvOTY2MCB9LAorICB7ICJqZnMiLAkzMiwJIDAsICA0LCAiSkZTMSIsCQkJcHJvYmVfamZzIH0sCisgIC8qIFpGUyBoYXMgMTI4IHJvb3QgYmxvY2tzICgjNCBpcyB0aGUgZmlyc3QgdXNlZCksIGNoZWNrIG9ubHkgNiBvZiB0aGVtICovCisgIHsgInpmcyIsICAgICAxMjgsCSAwLCAgOCwgIlwwXDBcMFwwXDBceGJhXHhiMVx4MGMiLCBwcm9iZV96ZnMgfSwKKyAgeyAiemZzIiwgICAgIDEyOCwJIDAsICA4LCAiXHgwY1x4YjFceGJhXDBcMFwwXDBcMCIsIHByb2JlX3pmcyB9LAorICB7ICJ6ZnMiLCAgICAgMTMyLAkgMCwgIDgsICJcMFwwXDBcMFwwXHhiYVx4YjFceDBjIiwgcHJvYmVfemZzIH0sCisgIHsgInpmcyIsICAgICAxMzIsCSAwLCAgOCwgIlx4MGNceGIxXHhiYVwwXDBcMFwwXDAiLCBwcm9iZV96ZnMgfSwKKyAgeyAiemZzIiwgICAgIDEzNiwJIDAsICA4LCAiXDBcMFwwXDBcMFx4YmFceGIxXHgwYyIsIHByb2JlX3pmcyB9LAorICB7ICJ6ZnMiLCAgICAgMTM2LAkgMCwgIDgsICJceDBjXHhiMVx4YmFcMFwwXDBcMFwwIiwgcHJvYmVfemZzIH0sCisgIHsgInpmcyIsICAgICAzODQsCSAwLCAgOCwgIlwwXDBcMFwwXDBceGJhXHhiMVx4MGMiLCBwcm9iZV96ZnMgfSwKKyAgeyAiemZzIiwgICAgIDM4NCwJIDAsICA4LCAiXHgwY1x4YjFceGJhXDBcMFwwXDBcMCIsIHByb2JlX3pmcyB9LAorICB7ICJ6ZnMiLCAgICAgMzg4LAkgMCwgIDgsICJcMFwwXDBcMFwwXHhiYVx4YjFceDBjIiwgcHJvYmVfemZzIH0sCisgIHsgInpmcyIsICAgICAzODgsCSAwLCAgOCwgIlx4MGNceGIxXHhiYVwwXDBcMFwwXDAiLCBwcm9iZV96ZnMgfSwKKyAgeyAiemZzIiwgICAgIDM5MiwJIDAsICA4LCAiXDBcMFwwXDBcMFx4YmFceGIxXHgwYyIsIHByb2JlX3pmcyB9LAorICB7ICJ6ZnMiLCAgICAgMzkyLAkgMCwgIDgsICJceDBjXHhiMVx4YmFcMFwwXDBcMFwwIiwgcHJvYmVfemZzIH0sCisgIHsgImhmc3BsdXMiLAkgMSwJIDAsICAyLCAiQkQiLAkJCXByb2JlX2hmc3BsdXMgfSwKKyAgeyAiaGZzcGx1cyIsCSAxLAkgMCwgIDIsICJIKyIsCQkJcHJvYmVfaGZzcGx1cyB9LAorICB7ICJoZnNwbHVzIiwJIDEsCSAwLCAgMiwgIkhYIiwJCQlwcm9iZV9oZnNwbHVzIH0sCisgIHsgImhmcyIsCSAxLAkgMCwgIDIsICJCRCIsCQkJcHJvYmVfaGZzIH0sCisgIHsgInVmcyIsCSA4LCAgMHg1NWMsICA0LCAiVFwwMzFcMDAxXDAwMCIsCTAgfSwKKyAgeyAiaHBmcyIsCSA4LAkgMCwgIDQsICJJXDM1MFwyMjVcMzcxIiwJMCB9LAorICB7ICJzeXN2IiwJIDAsICAweDNmOCwgIDQsICJcMDIwflwwMzBcMzc1IiwJMCB9LAorICB7ICJzd2FwIiwJIDAsICAweGZmNiwgMTAsICJTV0FQLVNQQUNFIiwJCXByb2JlX3N3YXAwIH0sCisgIHsgInN3YXAiLAkgMCwgIDB4ZmY2LCAxMCwgIlNXQVBTUEFDRTIiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dzdXNwZW5kIiwgMCwgIDB4ZmY2LCAgOSwgIlMxU1VTUEVORCIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd3N1c3BlbmQiLCAwLCAgMHhmZjYsICA5LCAiUzJTVVNQRU5EIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3c3VzcGVuZCIsIDAsICAweGZmNiwgIDksICJVTFNVU1BFTkQiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dhcCIsCSAwLCAweDFmZjYsIDEwLCAiU1dBUC1TUEFDRSIsCQlwcm9iZV9zd2FwMCB9LAorICB7ICJzd2FwIiwJIDAsIDB4MWZmNiwgMTAsICJTV0FQU1BBQ0UyIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3c3VzcGVuZCIsIDAsIDB4MWZmNiwgIDksICJTMVNVU1BFTkQiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dzdXNwZW5kIiwgMCwgMHgxZmY2LCAgOSwgIlMyU1VTUEVORCIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd3N1c3BlbmQiLCAwLCAweDFmZjYsICA5LCAiVUxTVVNQRU5EIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3YXAiLAkgMCwgMHgzZmY2LCAxMCwgIlNXQVAtU1BBQ0UiLAkJcHJvYmVfc3dhcDAgfSwKKyAgeyAic3dhcCIsCSAwLCAweDNmZjYsIDEwLCAiU1dBUFNQQUNFMiIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd3N1c3BlbmQiLCAwLCAweDNmZjYsICA5LCAiUzFTVVNQRU5EIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3c3VzcGVuZCIsIDAsIDB4M2ZmNiwgIDksICJTMlNVU1BFTkQiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dzdXNwZW5kIiwgMCwgMHgzZmY2LCAgOSwgIlVMU1VTUEVORCIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd2FwIiwJIDAsIDB4N2ZmNiwgMTAsICJTV0FQLVNQQUNFIiwJCXByb2JlX3N3YXAwIH0sCisgIHsgInN3YXAiLAkgMCwgMHg3ZmY2LCAxMCwgIlNXQVBTUEFDRTIiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dzdXNwZW5kIiwgMCwgMHg3ZmY2LCAgOSwgIlMxU1VTUEVORCIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd3N1c3BlbmQiLCAwLCAweDdmZjYsICA5LCAiUzJTVVNQRU5EIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3c3VzcGVuZCIsIDAsIDB4N2ZmNiwgIDksICJVTFNVU1BFTkQiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dhcCIsCSAwLCAweGZmZjYsIDEwLCAiU1dBUC1TUEFDRSIsCQlwcm9iZV9zd2FwMCB9LAorICB7ICJzd2FwIiwJIDAsIDB4ZmZmNiwgMTAsICJTV0FQU1BBQ0UyIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgInN3c3VzcGVuZCIsIDAsIDB4ZmZmNiwgIDksICJTMVNVU1BFTkQiLAkJcHJvYmVfc3dhcDEgfSwKKyAgeyAic3dzdXNwZW5kIiwgMCwgMHhmZmY2LCAgOSwgIlMyU1VTUEVORCIsCQlwcm9iZV9zd2FwMSB9LAorICB7ICJzd3N1c3BlbmQiLCAwLCAweGZmZjYsICA5LCAiVUxTVVNQRU5EIiwJCXByb2JlX3N3YXAxIH0sCisgIHsgIm9jZnMiLAkgMCwJIDgsICA5LAkiT3JhY2xlQ0ZTIiwJCXByb2JlX29jZnMgfSwKKyAgeyAib2NmczIiLAkgMSwJIDAsICA2LAkiT0NGU1YyIiwJCXByb2JlX29jZnMyIH0sCisgIHsgIm9jZnMyIiwJIDIsCSAwLCAgNiwJIk9DRlNWMiIsCQlwcm9iZV9vY2ZzMiB9LAorICB7ICJvY2ZzMiIsCSA0LAkgMCwgIDYsCSJPQ0ZTVjIiLAkJcHJvYmVfb2NmczIgfSwKKyAgeyAib2NmczIiLAkgOCwJIDAsICA2LAkiT0NGU1YyIiwJCXByb2JlX29jZnMyIH0sCisgIHsgImNyeXB0X0xVS1MiLCAwLAkgMCwgIDYsCSJMVUtTXHhiYVx4YmUiLAkJcHJvYmVfbHVrcyB9LAorICB7ICJzcXVhc2hmcyIsCSAwLAkgMCwgIDQsCSJzcXNoIiwJCQkwIH0sCisgIHsgInNxdWFzaGZzIiwJIDAsCSAwLCAgNCwJImhzcXMiLAkJCTAgfSwKKyAgeyAibHZtMnB2IiwJIDAsICAweDIxOCwgIDgsICJMVk0yIDAwMSIsCQlwcm9iZV9sdm0yIH0sCisgIHsgImx2bTJwdiIsCSAwLCAgMHgwMTgsICA4LCAiTFZNMiAwMDEiLAkJcHJvYmVfbHZtMiB9LAorICB7ICJsdm0ycHYiLAkgMSwgIDB4MDE4LCAgOCwgIkxWTTIgMDAxIiwJCXByb2JlX2x2bTIgfSwKKyAgeyAibHZtMnB2IiwJIDEsICAweDIxOCwgIDgsICJMVk0yIDAwMSIsCQlwcm9iZV9sdm0yIH0sCisgIHsgImJ0cmZzIiwJIDY0LCAgMHg0MCwgIDgsICJfQkhSZlNfTSIsCQlwcm9iZV9idHJmcyB9LAorICB7ICJmMmZzIiwJIDEsICAgICAgMCwgIDQsICJceDEwXHgyMFx4ZjVceGYyIiwJcHJvYmVfZjJmcyB9LAorICB7ICAgTlVMTCwJIDAsCSAwLCAgMCwgTlVMTCwJCQlOVUxMIH0KK307CisKKy8qCisgKiBWZXJpZnkgdGhhdCB0aGUgZGF0YSBpbiBkZXYgaXMgY29uc2lzdGVudCB3aXRoIHdoYXQgaXMgb24gdGhlIGFjdHVhbAorICogYmxvY2sgZGV2aWNlICh1c2luZyB0aGUgZGV2bmFtZSBmaWVsZCBvbmx5KS4gIE5vcm1hbGx5IHRoaXMgd2lsbCBiZQorICogY2FsbGVkIHdoZW4gZmluZGluZyBpdGVtcyBpbiB0aGUgY2FjaGUsIGJ1dCBmb3IgbG9uZyBydW5uaW5nIHByb2Nlc3NlcworICogaXMgYWxzbyBkZXNpcmFibGUgdG8gcmV2YWxpZGF0ZSBhbiBpdGVtIGJlZm9yZSB1c2UuCisgKgorICogSWYgd2UgYXJlIHVuYWJsZSB0byByZXZhbGlkYXRlIHRoZSBkYXRhLCB3ZSByZXR1cm4gdGhlIG9sZCBkYXRhIGFuZAorICogZG8gbm90IHNldCB0aGUgQkxLSURfQklEX0ZMX1ZFUklGSUVEIGZsYWcgb24gaXQuCisgKi8KK2Jsa2lkX2RldiBibGtpZF92ZXJpZnkoYmxraWRfY2FjaGUgY2FjaGUsIGJsa2lkX2RldiBkZXYpCit7CisJc3RydWN0IGJsa2lkX21hZ2ljICppZDsKKwlzdHJ1Y3QgYmxraWRfcHJvYmUgcHJvYmU7CisJYmxraWRfdGFnX2l0ZXJhdGUgaXRlcjsKKwl1bnNpZ25lZCBjaGFyICpidWY7CisJY29uc3QgY2hhciAqdHlwZSwgKnZhbHVlOworCXN0cnVjdCBzdGF0IHN0OworCXRpbWVfdCBub3c7CisJZG91YmxlIGRpZmY7CisJaW50IGlkeDsKKworCWlmICghZGV2KQorCQlyZXR1cm4gTlVMTDsKKworCW5vdyA9IHRpbWUoMCk7CisJZGlmZiA9IGRpZmZ0aW1lKG5vdywgZGV2LT5iaWRfdGltZSk7CisKKwlpZiAoc3RhdChkZXYtPmJpZF9uYW1lLCAmc3QpIDwgMCkgeworCQlEQkcoREVCVUdfUFJPQkUsCisJCSAgICBwcmludGYoImJsa2lkX3ZlcmlmeTogZXJyb3IgJXMgKCVkKSB3aGlsZSAiCisJCQkgICAidHJ5aW5nIHRvIHN0YXQgJXNcbiIsIHN0cmVycm9yKGVycm5vKSwgZXJybm8sCisJCQkgICBkZXYtPmJpZF9uYW1lKSk7CisJb3Blbl9lcnI6CisJCWlmICgoZXJybm8gPT0gRVBFUk0pIHx8IChlcnJubyA9PSBFQUNDRVMpIHx8IChlcnJubyA9PSBFTk9FTlQpKSB7CisJCQkvKiBXZSBkb24ndCBoYXZlIHJlYWQgcGVybWlzc2lvbiwganVzdCByZXR1cm4gY2FjaGUgZGF0YS4gKi8KKwkJCURCRyhERUJVR19QUk9CRSwgcHJpbnRmKCJyZXR1cm5pbmcgdW52ZXJpZmllZCBkYXRhIGZvciAlc1xuIiwKKwkJCQkJCWRldi0+YmlkX25hbWUpKTsKKwkJCXJldHVybiBkZXY7CisJCX0KKwkJYmxraWRfZnJlZV9kZXYoZGV2KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKChub3cgPj0gZGV2LT5iaWRfdGltZSkgJiYKKwkgICAgKHN0LnN0X210aW1lIDw9IGRldi0+YmlkX3RpbWUpICYmCisJICAgICgoZGlmZiA8IEJMS0lEX1BST0JFX01JTikgfHwKKwkgICAgIChkZXYtPmJpZF9mbGFncyAmIEJMS0lEX0JJRF9GTF9WRVJJRklFRCAmJgorCSAgICAgIGRpZmYgPCBCTEtJRF9QUk9CRV9JTlRFUlZBTCkpKQorCQlyZXR1cm4gZGV2OworCisJREJHKERFQlVHX1BST0JFLAorCSAgICBwcmludGYoIm5lZWQgdG8gcmV2YWxpZGF0ZSAlcyAoY2FjaGUgdGltZSAlbHUsIHN0YXQgdGltZSAlbHUsXG5cdCIKKwkJICAgInRpbWUgc2luY2UgbGFzdCBjaGVjayAlbHUpXG4iLAorCQkgICBkZXYtPmJpZF9uYW1lLCAodW5zaWduZWQgbG9uZylkZXYtPmJpZF90aW1lLAorCQkgICAodW5zaWduZWQgbG9uZylzdC5zdF9tdGltZSwgKHVuc2lnbmVkIGxvbmcpZGlmZikpOworCisJaWYgKChwcm9iZS5mZCA9IG9wZW4oZGV2LT5iaWRfbmFtZSwgT19SRE9OTFkpKSA8IDApIHsKKwkJREJHKERFQlVHX1BST0JFLCBwcmludGYoImJsa2lkX3ZlcmlmeTogZXJyb3IgJXMgKCVkKSB3aGlsZSAiCisJCQkJCSJvcGVuaW5nICVzXG4iLCBzdHJlcnJvcihlcnJubyksIGVycm5vLAorCQkJCQlkZXYtPmJpZF9uYW1lKSk7CisJCWdvdG8gb3Blbl9lcnI7CisJfQorCisJcHJvYmUuY2FjaGUgPSBjYWNoZTsKKwlwcm9iZS5kZXYgPSBkZXY7CisJcHJvYmUuc2JidWYgPSAwOworCXByb2JlLmJ1ZiA9IDA7CisJcHJvYmUuYnVmX21heCA9IDA7CisKKwkvKgorCSAqIEl0ZXJhdGUgb3ZlciB0aGUgdHlwZSBhcnJheS4gIElmIHdlIGFscmVhZHkga25vdyB0aGUgdHlwZSwKKwkgKiB0aGVuIHRyeSB0aGF0IGZpcnN0LiAgSWYgaXQgZG9lc24ndCB3b3JrLCB0aGVuIGJsb3cgYXdheQorCSAqIHRoZSB0eXBlIGluZm9ybWF0aW9uLCBhbmQgdHJ5IGFnYWluLgorCSAqCisJICovCit0cnlfYWdhaW46CisJdHlwZSA9IDA7CisJaWYgKCFkZXYtPmJpZF90eXBlIHx8ICFzdHJjbXAoZGV2LT5iaWRfdHlwZSwgIm1kcmFpZCIpKSB7CisJCXV1aWRfdAl1dWlkOworCisJCWlmIChjaGVja19tZHJhaWQocHJvYmUuZmQsIHV1aWQpID09IDApIHsKKwkJCXNldF91dWlkKGRldiwgdXVpZCwgMCk7CisJCQl0eXBlID0gIm1kcmFpZCI7CisJCQlnb3RvIGZvdW5kX3R5cGU7CisJCX0KKwl9CisJZm9yIChpZCA9IHR5cGVfYXJyYXk7IGlkLT5iaW1fdHlwZTsgaWQrKykgeworCQlpZiAoZGV2LT5iaWRfdHlwZSAmJgorCQkgICAgc3RyY21wKGlkLT5iaW1fdHlwZSwgZGV2LT5iaWRfdHlwZSkpCisJCQljb250aW51ZTsKKworCQlpZHggPSBpZC0+YmltX2tib2ZmICsgKGlkLT5iaW1fc2JvZmYgPj4gMTApOworCQlidWYgPSBnZXRfYnVmZmVyKCZwcm9iZSwgKF9fdTY0KSBpZHggPDwgMTAsIDEwMjQpOworCQlpZiAoIWJ1ZikKKwkJCWNvbnRpbnVlOworCisJCWlmIChtZW1jbXAoaWQtPmJpbV9tYWdpYywgYnVmICsgKGlkLT5iaW1fc2JvZmYgJiAweDNmZiksCisJCQkgICBpZC0+YmltX2xlbikpCisJCQljb250aW51ZTsKKworCQlpZiAoKGlkLT5iaW1fcHJvYmUgPT0gTlVMTCkgfHwKKwkJICAgIChpZC0+YmltX3Byb2JlKCZwcm9iZSwgaWQsIGJ1ZikgPT0gMCkpIHsKKwkJCXR5cGUgPSBpZC0+YmltX3R5cGU7CisJCQlnb3RvIGZvdW5kX3R5cGU7CisJCX0KKwl9CisKKwlpZiAoIWlkLT5iaW1fdHlwZSAmJiBkZXYtPmJpZF90eXBlKSB7CisJCS8qCisJCSAqIFphcCB0aGUgZGV2aWNlIGZpbGVzeXN0ZW0gaW5mb3JtYXRpb24gYW5kIHRyeSBhZ2FpbgorCQkgKi8KKwkJREJHKERFQlVHX1BST0JFLAorCQkgICAgcHJpbnRmKCJwcmV2aW91cyBmcyB0eXBlICVzIG5vdCB2YWxpZCwgIgorCQkJICAgInRyeWluZyBmdWxsIHByb2JlXG4iLCBkZXYtPmJpZF90eXBlKSk7CisJCWl0ZXIgPSBibGtpZF90YWdfaXRlcmF0ZV9iZWdpbihkZXYpOworCQl3aGlsZSAoYmxraWRfdGFnX25leHQoaXRlciwgJnR5cGUsICZ2YWx1ZSkgPT0gMCkKKwkJCWJsa2lkX3NldF90YWcoZGV2LCB0eXBlLCAwLCAwKTsKKwkJYmxraWRfdGFnX2l0ZXJhdGVfZW5kKGl0ZXIpOworCQlnb3RvIHRyeV9hZ2FpbjsKKwl9CisKKwlpZiAoIWRldi0+YmlkX3R5cGUpIHsKKwkJYmxraWRfZnJlZV9kZXYoZGV2KTsKKwkJZGV2ID0gMDsKKwkJZ290byBmb3VuZF90eXBlOworCX0KKworZm91bmRfdHlwZToKKwlpZiAoZGV2ICYmIHR5cGUpIHsKKwkJZGV2LT5iaWRfZGV2bm8gPSBzdC5zdF9yZGV2OworCQlkZXYtPmJpZF90aW1lID0gdGltZSgwKTsKKwkJZGV2LT5iaWRfZmxhZ3MgfD0gQkxLSURfQklEX0ZMX1ZFUklGSUVEOworCQljYWNoZS0+YmljX2ZsYWdzIHw9IEJMS0lEX0JJQ19GTF9DSEFOR0VEOworCisJCWJsa2lkX3NldF90YWcoZGV2LCAiVFlQRSIsIHR5cGUsIDApOworCisJCURCRyhERUJVR19QUk9CRSwgcHJpbnRmKCIlczogZGV2bm8gMHglMDRsbHgsIHR5cGUgJXNcbiIsCisJCQkgICBkZXYtPmJpZF9uYW1lLCAobG9uZyBsb25nKXN0LnN0X3JkZXYsIHR5cGUpKTsKKwl9CisKKwlmcmVlKHByb2JlLnNiYnVmKTsKKwlmcmVlKHByb2JlLmJ1Zik7CisJaWYgKHByb2JlLmZkID49IDApCisJCWNsb3NlKHByb2JlLmZkKTsKKworCXJldHVybiBkZXY7Cit9CisKK2ludCBibGtpZF9rbm93bl9mc3R5cGUoY29uc3QgY2hhciAqZnN0eXBlKQoreworCXN0cnVjdCBibGtpZF9tYWdpYyAqaWQ7CisKKwlmb3IgKGlkID0gdHlwZV9hcnJheTsgaWQtPmJpbV90eXBlOyBpZCsrKSB7CisJCWlmIChzdHJjbXAoZnN0eXBlLCBpZC0+YmltX3R5cGUpID09IDApCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBURVNUX1BST0dSQU0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlibGtpZF9kZXYgZGV2OworCWJsa2lkX2NhY2hlIGNhY2hlOworCWludCByZXQ7CisKKwlpZiAoYXJnYyAhPSAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGRldmljZVxuIgorCQkJIlByb2JlIGEgc2luZ2xlIGRldmljZSB0byBkZXRlcm1pbmUgdHlwZVxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCWlmICgocmV0ID0gYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgIi9kZXYvbnVsbCIpKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIGNyZWF0aW5nIGNhY2hlICglZClcbiIsCisJCQlhcmd2WzBdLCByZXQpOworCQlleGl0KDEpOworCX0KKwlkZXYgPSBibGtpZF9nZXRfZGV2KGNhY2hlLCBhcmd2WzFdLCBCTEtJRF9ERVZfTk9STUFMKTsKKwlpZiAoIWRldikgeworCQlwcmludGYoIiVzOiAlcyBoYXMgYW4gdW5zdXBwb3J0ZWQgdHlwZVxuIiwgYXJndlswXSwgYXJndlsxXSk7CisJCXJldHVybiAoMSk7CisJfQorCXByaW50ZigiVFlQRT0nJXMnXG4iLCBkZXYtPmJpZF90eXBlID8gZGV2LT5iaWRfdHlwZSA6ICIobnVsbCkiKTsKKwlpZiAoZGV2LT5iaWRfbGFiZWwpCisJCXByaW50ZigiTEFCRUw9JyVzJ1xuIiwgZGV2LT5iaWRfbGFiZWwpOworCWlmIChkZXYtPmJpZF91dWlkKQorCQlwcmludGYoIlVVSUQ9JyVzJ1xuIiwgZGV2LT5iaWRfdXVpZCk7CisKKwlibGtpZF9mcmVlX2RldihkZXYpOworCXJldHVybiAoMCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvcHJvYmUuaCBiL2UyZnNwcm9ncy9saWIvYmxraWQvcHJvYmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDAyNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9wcm9iZS5oCkBAIC0wLDAgKzEsODUzIEBACisvKgorICogcHJvYmUuaCAtIGNvbnN0YW50cyBhbmQgb24tZGlzayBzdHJ1Y3R1cmVzIGZvciBleHRyYWN0aW5nIGRldmljZSBkYXRhCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5IGJ5IEFuZHJpZXMgQnJvdXdlcgorICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzIGJ5IFRoZW9kb3JlIFRzJ28KKyAqIENvcHlyaWdodCAoQykgMjAwMSBieSBBbmRyZWFzIERpbGdlcgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfQkxLSURfUFJPQkVfSAorI2RlZmluZSBfQkxLSURfUFJPQkVfSAorCisjaW5jbHVkZSA8YmxraWQvYmxraWRfdHlwZXMuaD4KKworc3RydWN0IGJsa2lkX21hZ2ljOworCisjZGVmaW5lIFNCX0JVRkZFUl9TSVpFCQkweDExMDAwCisKK3N0cnVjdCBibGtpZF9wcm9iZSB7CisJaW50CQkJZmQ7CisJYmxraWRfY2FjaGUJCWNhY2hlOworCWJsa2lkX2RldgkJZGV2OworCXVuc2lnbmVkIGNoYXIJCSpzYmJ1ZjsKKwlzaXplX3QJCQlzYl92YWxpZDsKKwl1bnNpZ25lZCBjaGFyCQkqYnVmOworCXNpemVfdAkJCWJ1Zl9tYXg7Cit9OworCit0eXBlZGVmIGludCAoKmJsa2lkX3Byb2JlX3QpKHN0cnVjdCBibGtpZF9wcm9iZSAqcHJvYmUsCisJCQkgICAgIHN0cnVjdCBibGtpZF9tYWdpYyAqaWQsIHVuc2lnbmVkIGNoYXIgKmJ1Zik7CisKK3N0cnVjdCBibGtpZF9tYWdpYyB7CisJY29uc3QgY2hhcgkqYmltX3R5cGU7CS8qIHR5cGUgbmFtZSBmb3IgdGhpcyBtYWdpYyAqLworCWxvbmcJCWJpbV9rYm9mZjsJLyoga2lsb2J5dGUgb2Zmc2V0IG9mIHN1cGVyYmxvY2sgKi8KKwl1bnNpZ25lZAliaW1fc2JvZmY7CS8qIGJ5dGUgb2Zmc2V0IHdpdGhpbiBzdXBlcmJsb2NrICovCisJdW5zaWduZWQJYmltX2xlbjsJLyogbGVuZ3RoIG9mIG1hZ2ljICovCisJY29uc3QgY2hhcgkqYmltX21hZ2ljOwkvKiBtYWdpYyBzdHJpbmcgKi8KKwlibGtpZF9wcm9iZV90CWJpbV9wcm9iZTsJLyogcHJvYmUgZnVuY3Rpb24gKi8KK307CisKKy8qCisgKiBTdHJ1Y3R1cmVzIGZvciBlYWNoIG9mIHRoZSBjb250ZW50IHR5cGVzIHdlIHdhbnQgdG8gZXh0cmFjdCBpbmZvcm1hdGlvbgorICogZnJvbS4gIFdlIGRvIG5vdCBuZWNlc3NhcmlseSBuZWVkIHRoZSBtYWdpYyBmaWVsZCBoZXJlLCBiZWNhdXNlIHdlIGhhdmUKKyAqIGFscmVhZHkgaWRlbnRpZmllZCB0aGUgY29udGVudCB0eXBlIGJlZm9yZSB3ZSBnZXQgdGhpcyBmYXIuICBJdCBtYXkgc3RpbGwKKyAqIGJlIHVzZWZ1bCBpZiB0aGVyZSBhcmUgcHJvYmUgZnVuY3Rpb25zIHdoaWNoIGhhbmRsZSBtdWx0aXBsZSBjb250ZW50IHR5cGVzLgorICovCitzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayB7CisJX191MzIJCXNfaW5vZGVzX2NvdW50OworCV9fdTMyCQlzX2Jsb2Nrc19jb3VudDsKKwlfX3UzMgkJc19yX2Jsb2Nrc19jb3VudDsKKwlfX3UzMgkJc19mcmVlX2Jsb2Nrc19jb3VudDsKKwlfX3UzMgkJc19mcmVlX2lub2Rlc19jb3VudDsKKwlfX3UzMgkJc19maXJzdF9kYXRhX2Jsb2NrOworCV9fdTMyCQlzX2xvZ19ibG9ja19zaXplOworCV9fdTMyCQlzX2R1bW15M1s3XTsKKwl1bnNpZ25lZCBjaGFyCXNfbWFnaWNbMl07CisJX191MTYJCXNfc3RhdGU7CisJX191MzIJCXNfZHVtbXk1WzhdOworCV9fdTMyCQlzX2ZlYXR1cmVfY29tcGF0OworCV9fdTMyCQlzX2ZlYXR1cmVfaW5jb21wYXQ7CisJX191MzIJCXNfZmVhdHVyZV9yb19jb21wYXQ7CisJdW5zaWduZWQgY2hhciAgIHNfdXVpZFsxNl07CisJY2hhcgkgICBzX3ZvbHVtZV9uYW1lWzE2XTsKKwljaGFyCXNfbGFzdF9tb3VudGVkWzY0XTsKKwlfX3UzMglzX2FsZ29yaXRobV91c2FnZV9iaXRtYXA7CisJX191OAlzX3ByZWFsbG9jX2Jsb2NrczsKKwlfX3U4CXNfcHJlYWxsb2NfZGlyX2Jsb2NrczsKKwlfX3UxNglzX3Jlc2VydmVkX2dkdF9ibG9ja3M7CisJX191OAlzX2pvdXJuYWxfdXVpZFsxNl07CisJX191MzIJc19qb3VybmFsX2ludW07CisJX191MzIJc19qb3VybmFsX2RldjsKKwlfX3UzMglzX2xhc3Rfb3JwaGFuOworCV9fdTMyCXNfaGFzaF9zZWVkWzRdOworCV9fdTgJc19kZWZfaGFzaF92ZXJzaW9uOworCV9fdTgJc19qbmxfYmFja3VwX3R5cGU7CisJX191MTYJc19yZXNlcnZlZF93b3JkX3BhZDsKKwlfX3UzMglzX2RlZmF1bHRfbW91bnRfb3B0czsKKwlfX3UzMglzX2ZpcnN0X21ldGFfYmc7CisJX191MzIJc19ta2ZzX3RpbWU7CisJX191MzIJc19qbmxfYmxvY2tzWzE3XTsKKwlfX3UzMglzX2Jsb2Nrc19jb3VudF9oaTsKKwlfX3UzMglzX3JfYmxvY2tzX2NvdW50X2hpOworCV9fdTMyCXNfZnJlZV9ibG9ja3NfaGk7CisJX191MTYJc19taW5fZXh0cmFfaXNpemU7CisJX191MTYJc193YW50X2V4dHJhX2lzaXplOworCV9fdTMyCXNfZmxhZ3M7CisJX191MTYgICBzX3JhaWRfc3RyaWRlOworCV9fdTE2ICAgc19tbXBfaW50ZXJ2YWw7CisJX191NjQgICBzX21tcF9ibG9jazsKKwlfX3UzMiAgIHNfcmFpZF9zdHJpcGVfd2lkdGg7CisJX191MzIgICBzX3Jlc2VydmVkWzE2M107Cit9OworCisvKiBmb3Igc19mbGFncyAqLworI2RlZmluZSBFWFQyX0ZMQUdTX1RFU1RfRklMRVNZUwkJMHgwMDA0CisKKy8qIGZvciBzX2ZlYXR1cmVfY29tcGF0ICovCisjZGVmaW5lIEVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwJCTB4MDAwNAorCisvKiBmb3Igc19mZWF0dXJlX3JvX2NvbXBhdCAqLworI2RlZmluZSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX1NQQVJTRV9TVVBFUgkweDAwMDEKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFCTB4MDAwMgorI2RlZmluZSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX0JUUkVFX0RJUgkweDAwMDQKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUJMHgwMDA4CisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0JCTB4MDAxMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0RJUl9OTElOSwkweDAwMjAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9FWFRSQV9JU0laRQkweDAwNDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9RVU9UQQkJMHgwMTAwCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfTUVUQURBVEFfQ1NVTQkweDA0MDAKKworLyogZm9yIHNfZmVhdHVyZV9pbmNvbXBhdCAqLworI2RlZmluZSBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEUJCTB4MDAwMgorI2RlZmluZSBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfUkVDT1ZFUgkJMHgwMDA0CisjZGVmaW5lIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9KT1VSTkFMX0RFVgkweDAwMDgKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0lOQ09NUEFUX01FVEFfQkcJCTB4MDAxMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRVhURU5UUwkJMHgwMDQwIC8qIGV4dGVudHMgc3VwcG9ydCAqLworI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQJCTB4MDA4MAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QCQkweDAxMDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZMRVhfQkcJCTB4MDIwMAorCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfU1VQUAkoRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9TUEFSU0VfU1VQRVJ8IFwKKwkJCQkJIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfTEFSR0VfRklMRXwgXAorCQkJCQkgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9CVFJFRV9ESVIpCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9TVVBQCShFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEV8IFwKKwkJCQkJIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9NRVRBX0JHKQorI2RlZmluZSBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfVU5TVVBQT1JURUQJfkVYVDJfRkVBVFVSRV9JTkNPTVBBVF9TVVBQCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfVU5TVVBQT1JURUQJfkVYVDJfRkVBVFVSRV9ST19DT01QQVRfU1VQUAorCisjZGVmaW5lIEVYVDNfRkVBVFVSRV9ST19DT01QQVRfU1VQUAkoRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9TUEFSU0VfU1VQRVJ8IFwKKwkJCQkJIEVYVDJfRkVBVFVSRV9ST19DT01QQVRfTEFSR0VfRklMRXwgXAorCQkJCQkgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9CVFJFRV9ESVIpCisjZGVmaW5lIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9TVVBQCShFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEV8IFwKKwkJCQkJIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9SRUNPVkVSfCBcCisJCQkJCSBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfTUVUQV9CRykKKyNkZWZpbmUgRVhUM19GRUFUVVJFX0lOQ09NUEFUX1VOU1VQUE9SVEVECX5FWFQzX0ZFQVRVUkVfSU5DT01QQVRfU1VQUAorI2RlZmluZSBFWFQzX0ZFQVRVUkVfUk9fQ09NUEFUX1VOU1VQUE9SVEVECX5FWFQzX0ZFQVRVUkVfUk9fQ09NUEFUX1NVUFAKKworCitzdHJ1Y3QgeGZzX3N1cGVyX2Jsb2NrIHsKKwl1bnNpZ25lZCBjaGFyCXhzX21hZ2ljWzRdOworCV9fdTMyCQl4c19ibG9ja3NpemU7CisJX191NjQJCXhzX2RibG9ja3M7CisJX191NjQJCXhzX3JibG9ja3M7CisJX191MzIJCXhzX2R1bW15MVsyXTsKKwl1bnNpZ25lZCBjaGFyCXhzX3V1aWRbMTZdOworCV9fdTMyCQl4c19kdW1teTJbMTVdOworCWNoYXIJCXhzX2ZuYW1lWzEyXTsKKwlfX3UzMgkJeHNfZHVtbXkzWzJdOworCV9fdTY0CQl4c19pY291bnQ7CisJX191NjQJCXhzX2lmcmVlOworCV9fdTY0CQl4c19mZGJsb2NrczsKK307CisKK3N0cnVjdCByZWlzZXJmc19zdXBlcl9ibG9jayB7CisJX191MzIJCXJzX2Jsb2Nrc19jb3VudDsKKwlfX3UzMgkJcnNfZnJlZV9ibG9ja3M7CisJX191MzIJCXJzX3Jvb3RfYmxvY2s7CisJX191MzIJCXJzX2pvdXJuYWxfYmxvY2s7CisJX191MzIJCXJzX2pvdXJuYWxfZGV2OworCV9fdTMyCQlyc19vcmlnX2pvdXJuYWxfc2l6ZTsKKwlfX3UzMgkJcnNfZHVtbXkyWzVdOworCV9fdTE2CQlyc19ibG9ja3NpemU7CisJX191MTYJCXJzX2R1bW15M1szXTsKKwl1bnNpZ25lZCBjaGFyCXJzX21hZ2ljWzEyXTsKKwlfX3UzMgkJcnNfZHVtbXk0WzVdOworCXVuc2lnbmVkIGNoYXIJcnNfdXVpZFsxNl07CisJY2hhcgkJcnNfbGFiZWxbMTZdOworfTsKKworc3RydWN0IHJlaXNlcjRfc3VwZXJfYmxvY2sgeworCXVuc2lnbmVkIGNoYXIJcnM0X21hZ2ljWzE2XTsKKwlfX3UxNgkJcnM0X2R1bW15WzJdOworCXVuc2lnbmVkIGNoYXIJcnM0X3V1aWRbMTZdOworCXVuc2lnbmVkIGNoYXIJcnM0X2xhYmVsWzE2XTsKKwlfX3U2NAkJcnM0X2R1bW15MjsKK307CisKK3N0cnVjdCBqZnNfc3VwZXJfYmxvY2sgeworCXVuc2lnbmVkIGNoYXIJanNfbWFnaWNbNF07CisJX191MzIJCWpzX3ZlcnNpb247CisJX191NjQJCWpzX3NpemU7CisJX191MzIJCWpzX2JzaXplOwkvKiA0OiBhZ2dyZWdhdGUgYmxvY2sgc2l6ZSBpbiBieXRlcyAqLworCV9fdTE2CQlqc19sMmJzaXplOwkvKiAyOiBsb2cyIG9mIHNfYnNpemUgKi8KKwlfX3UxNgkJanNfbDJiZmFjdG9yOwkvKiAyOiBsb2cyKHNfYnNpemUvaGFyZHdhcmUgYmxvY2sgc2l6ZSkgKi8KKwlfX3UzMgkJanNfcGJzaXplOwkvKiA0OiBoYXJkd2FyZS9MVk0gYmxvY2sgc2l6ZSBpbiBieXRlcyAqLworCV9fdTE2CQlqc19sMnBic2l6ZTsJLyogMjogbG9nMiBvZiBzX3Bic2l6ZSAqLworCV9fdTE2IAkJanNfcGFkOwkJLyogMjogcGFkZGluZyBuZWNlc3NhcnkgZm9yIGFsaWdubWVudCAqLworCV9fdTMyCQlqc19kdW1teTJbMjZdOworCXVuc2lnbmVkIGNoYXIJanNfdXVpZFsxNl07CisJdW5zaWduZWQgY2hhcglqc19sYWJlbFsxNl07CisJdW5zaWduZWQgY2hhcglqc19sb2d1dWlkWzE2XTsKK307CisKK3N0cnVjdCByb21mc19zdXBlcl9ibG9jayB7CisJdW5zaWduZWQgY2hhcglyb3NfbWFnaWNbOF07CisJX191MzIJCXJvc19kdW1teTFbMl07CisJdW5zaWduZWQgY2hhcglyb3Nfdm9sdW1lWzE2XTsKK307CisKK3N0cnVjdCBjcmFtZnNfc3VwZXJfYmxvY2sgeworCV9fdTgJCW1hZ2ljWzRdOworCV9fdTMyCQlzaXplOworCV9fdTMyCQlmbGFnczsKKwlfX3UzMgkJZnV0dXJlOworCV9fdTgJCXNpZ25hdHVyZVsxNl07CisJc3RydWN0IGNyYW1mc19pbmZvIHsKKwkJX191MzIJCWNyYzsKKwkJX191MzIJCWVkaXRpb247CisJCV9fdTMyCQlibG9ja3M7CisJCV9fdTMyCQlmaWxlczsKKwl9IGluZm87CisJX191OAkJbmFtZVsxNl07Cit9OworCitzdHJ1Y3Qgc3dhcF9pZF9ibG9jayB7CisvKgl1bnNpZ25lZCBjaGFyCXN3c19ib290WzEwMjRdOyAqLworCV9fdTMyCQlzd3NfdmVyc2lvbjsKKwlfX3UzMgkJc3dzX2xhc3RwYWdlOworCV9fdTMyCQlzd3NfbnJiYWQ7CisJdW5zaWduZWQgY2hhcglzd3NfdXVpZFsxNl07CisJY2hhcgkJc3dzX3ZvbHVtZVsxNl07CisJdW5zaWduZWQgY2hhcglzd3NfcGFkWzExN107CisJX191MzIJCXN3c19iYWRwZzsKK307CisKKy8qIFl1Y2t5IG1pc2FsaWduZWQgdmFsdWVzICovCitzdHJ1Y3QgdmZhdF9zdXBlcl9ibG9jayB7CisvKiAwMCovCXVuc2lnbmVkIGNoYXIJdnNfaWdub3JlZFszXTsKKy8qIDAzKi8JdW5zaWduZWQgY2hhcgl2c19zeXNpZFs4XTsKKy8qIDBiKi8JdW5zaWduZWQgY2hhcgl2c19zZWN0b3Jfc2l6ZVsyXTsKKy8qIDBkKi8JX191OAkJdnNfY2x1c3Rlcl9zaXplOworLyogMGUqLwlfX3UxNgkJdnNfcmVzZXJ2ZWQ7CisvKiAxMCovCV9fdTgJCXZzX2ZhdHM7CisvKiAxMSovCXVuc2lnbmVkIGNoYXIJdnNfZGlyX2VudHJpZXNbMl07CisvKiAxMyovCXVuc2lnbmVkIGNoYXIJdnNfc2VjdG9yc1syXTsKKy8qIDE1Ki8JdW5zaWduZWQgY2hhcgl2c19tZWRpYTsKKy8qIDE2Ki8JX191MTYJCXZzX2ZhdF9sZW5ndGg7CisvKiAxOCovCV9fdTE2CQl2c19zZWNzX3RyYWNrOworLyogMWEqLwlfX3UxNgkJdnNfaGVhZHM7CisvKiAxYyovCV9fdTMyCQl2c19oaWRkZW47CisvKiAyMCovCV9fdTMyCQl2c190b3RhbF9zZWN0OworLyogMjQqLwlfX3UzMgkJdnNfZmF0MzJfbGVuZ3RoOworLyogMjgqLwlfX3UxNgkJdnNfZmxhZ3M7CisvKiAyYSovCV9fdTgJCXZzX3ZlcnNpb25bMl07CisvKiAyYyovCV9fdTMyCQl2c19yb290X2NsdXN0ZXI7CisvKiAzMCovCV9fdTE2CQl2c19pbnNmb19zZWN0b3I7CisvKiAzMiovCV9fdTE2CQl2c19iYWNrdXBfYm9vdDsKKy8qIDM0Ki8JX191MTYJCXZzX3Jlc2VydmVkMls2XTsKKy8qIDQwKi8JdW5zaWduZWQgY2hhcgl2c191bmtub3duWzNdOworLyogNDMqLwl1bnNpZ25lZCBjaGFyCXZzX3Nlcm5vWzRdOworLyogNDcqLwl1bnNpZ25lZCBjaGFyCXZzX2xhYmVsWzExXTsKKy8qIDUyKi8JdW5zaWduZWQgY2hhciAgIHZzX21hZ2ljWzhdOworLyogNWEqLwl1bnNpZ25lZCBjaGFyCXZzX2R1bW15MlsxNjRdOworLyoxZmUqLwl1bnNpZ25lZCBjaGFyCXZzX3BtYWdpY1syXTsKK307CisKKy8qIFl1Y2t5IG1pc2FsaWduZWQgdmFsdWVzICovCitzdHJ1Y3QgbXNkb3Nfc3VwZXJfYmxvY2sgeworLyogMDAqLwl1bnNpZ25lZCBjaGFyCW1zX2lnbm9yZWRbM107CisvKiAwMyovCXVuc2lnbmVkIGNoYXIJbXNfc3lzaWRbOF07CisvKiAwYiovCXVuc2lnbmVkIGNoYXIJbXNfc2VjdG9yX3NpemVbMl07CisvKiAwZCovCV9fdTgJCW1zX2NsdXN0ZXJfc2l6ZTsKKy8qIDBlKi8JX191MTYJCW1zX3Jlc2VydmVkOworLyogMTAqLwlfX3U4CQltc19mYXRzOworLyogMTEqLwl1bnNpZ25lZCBjaGFyCW1zX2Rpcl9lbnRyaWVzWzJdOworLyogMTMqLwl1bnNpZ25lZCBjaGFyCW1zX3NlY3RvcnNbMl07CisvKiAxNSovCXVuc2lnbmVkIGNoYXIJbXNfbWVkaWE7CisvKiAxNiovCV9fdTE2CQltc19mYXRfbGVuZ3RoOworLyogMTgqLwlfX3UxNgkJbXNfc2Vjc190cmFjazsKKy8qIDFhKi8JX191MTYJCW1zX2hlYWRzOworLyogMWMqLwlfX3UzMgkJbXNfaGlkZGVuOworLyogMjAqLwlfX3UzMgkJbXNfdG90YWxfc2VjdDsKKy8qIDI0Ki8JdW5zaWduZWQgY2hhcgltc191bmtub3duWzNdOworLyogMjcqLwl1bnNpZ25lZCBjaGFyCW1zX3Nlcm5vWzRdOworLyogMmIqLwl1bnNpZ25lZCBjaGFyCW1zX2xhYmVsWzExXTsKKy8qIDM2Ki8JdW5zaWduZWQgY2hhciAgIG1zX21hZ2ljWzhdOworLyogM2QqLwl1bnNpZ25lZCBjaGFyCW1zX2R1bW15MlsxOTJdOworLyoxZmUqLwl1bnNpZ25lZCBjaGFyCW1zX3BtYWdpY1syXTsKK307CisKK3N0cnVjdCB2ZmF0X2Rpcl9lbnRyeSB7CisJX191OAluYW1lWzExXTsKKwlfX3U4CWF0dHI7CisJX191MTYJdGltZV9jcmVhdDsKKwlfX3UxNglkYXRlX2NyZWF0OworCV9fdTE2CXRpbWVfYWNjOworCV9fdTE2CWRhdGVfYWNjOworCV9fdTE2CWNsdXN0ZXJfaGlnaDsKKwlfX3UxNgl0aW1lX3dyaXRlOworCV9fdTE2CWRhdGVfd3JpdGU7CisJX191MTYJY2x1c3Rlcl9sb3c7CisJX191MzIJc2l6ZTsKK307CisKKy8qIG1heGltdW0gbnVtYmVyIG9mIGNsdXN0ZXJzICovCisjZGVmaW5lIEZBVDEyX01BWCAweEZGNAorI2RlZmluZSBGQVQxNl9NQVggMHhGRkY0CisjZGVmaW5lIEZBVDMyX01BWCAweDBGRkZGRkY2CisKK3N0cnVjdCBtaW5peF9zdXBlcl9ibG9jayB7CisJX191MTYJCW1zX25pbm9kZXM7CisJX191MTYJCW1zX256b25lczsKKwlfX3UxNgkJbXNfaW1hcF9ibG9ja3M7CisJX191MTYJCW1zX3ptYXBfYmxvY2tzOworCV9fdTE2CQltc19maXJzdGRhdGF6b25lOworCV9fdTE2CQltc19sb2dfem9uZV9zaXplOworCV9fdTMyCQltc19tYXhfc2l6ZTsKKwl1bnNpZ25lZCBjaGFyCW1zX21hZ2ljWzJdOworCV9fdTE2CQltc19zdGF0ZTsKKwlfX3UzMgkJbXNfem9uZXM7Cit9OworCitzdHJ1Y3QgbWRwX3N1cGVyYmxvY2tfcyB7CisJX191MzIgbWRfbWFnaWM7CisJX191MzIgbWFqb3JfdmVyc2lvbjsKKwlfX3UzMiBtaW5vcl92ZXJzaW9uOworCV9fdTMyIHBhdGNoX3ZlcnNpb247CisJX191MzIgZ3ZhbGlkX3dvcmRzOworCV9fdTMyIHNldF91dWlkMDsKKwlfX3UzMiBjdGltZTsKKwlfX3UzMiBsZXZlbDsKKwlfX3UzMiBzaXplOworCV9fdTMyIG5yX2Rpc2tzOworCV9fdTMyIHJhaWRfZGlza3M7CisJX191MzIgbWRfbWlub3I7CisJX191MzIgbm90X3BlcnNpc3RlbnQ7CisJX191MzIgc2V0X3V1aWQxOworCV9fdTMyIHNldF91dWlkMjsKKwlfX3UzMiBzZXRfdXVpZDM7Cit9OworCitzdHJ1Y3QgaGZzX3N1cGVyX2Jsb2NrIHsKKwljaGFyCWhfbWFnaWNbMl07CisJY2hhcgloX2R1bW15WzE4XTsKKwlfX3UzMgloX2Jsa3NpemU7Cit9OworCitzdHJ1Y3Qgb2Nmc192b2x1bWVfaGVhZGVyIHsKKwl1bnNpZ25lZCBjaGFyCW1pbm9yX3ZlcnNpb25bNF07CisJdW5zaWduZWQgY2hhcgltYWpvcl92ZXJzaW9uWzRdOworCXVuc2lnbmVkIGNoYXIJc2lnbmF0dXJlWzEyOF07CisJY2hhcgkJbW91bnRbMTI4XTsKKwl1bnNpZ25lZCBjaGFyICAgbW91bnRfbGVuWzJdOworfTsKKworc3RydWN0IG9jZnNfdm9sdW1lX2xhYmVsIHsKKwl1bnNpZ25lZCBjaGFyCWRpc2tfbG9ja1s0OF07CisJY2hhcgkJbGFiZWxbNjRdOworCXVuc2lnbmVkIGNoYXIJbGFiZWxfbGVuWzJdOworCXVuc2lnbmVkIGNoYXIgIHZvbF9pZFsxNl07CisJdW5zaWduZWQgY2hhciAgdm9sX2lkX2xlblsyXTsKK307CisKKyNkZWZpbmUgb2Nmc21ham9yKG8pICgoX191MzIpby5tYWpvcl92ZXJzaW9uWzBdIFwKKyAgICAgICAgICAgICAgICAgICArICgoKF9fdTMyKSBvLm1ham9yX3ZlcnNpb25bMV0pIDw8IDgpIFwKKyAgICAgICAgICAgICAgICAgICArICgoKF9fdTMyKSBvLm1ham9yX3ZlcnNpb25bMl0pIDw8IDE2KSBcCisgICAgICAgICAgICAgICAgICAgKyAoKChfX3UzMikgby5tYWpvcl92ZXJzaW9uWzNdKSA8PCAyNCkpCisjZGVmaW5lIG9jZnNsYWJlbGxlbihvKQkoKF9fdTMyKW8ubGFiZWxfbGVuWzBdICsgKCgoX191MzIpIG8ubGFiZWxfbGVuWzFdKSA8PCA4KSkKKyNkZWZpbmUgb2Nmc21vdW50bGVuKG8pCSgoX191MzIpby5tb3VudF9sZW5bMF0gKyAoKChfX3UzMikgby5tb3VudF9sZW5bMV0pPDw4KSkKKworI2RlZmluZSBPQ0ZTX01BR0lDICJPcmFjbGVDRlMiCisKK3N0cnVjdCBvY2ZzMl9zdXBlcl9ibG9jayB7CisJdW5zaWduZWQgY2hhciAgc2lnbmF0dXJlWzhdOworCXVuc2lnbmVkIGNoYXIgIHNfZHVtbXkxWzE4NF07CisJdW5zaWduZWQgY2hhciAgc19kdW1teTJbODBdOworCWNoYXIJICAgICAgIHNfbGFiZWxbNjRdOworCXVuc2lnbmVkIGNoYXIgIHNfdXVpZFsxNl07Cit9OworCisjZGVmaW5lIE9DRlMyX01JTl9CTE9DS1NJWkUgICAgICAgICAgICAgNTEyCisjZGVmaW5lIE9DRlMyX01BWF9CTE9DS1NJWkUgICAgICAgICAgICAgNDA5NgorCisjZGVmaW5lIE9DRlMyX1NVUEVSX0JMT0NLX0JMS05PICAgICAgICAgMgorCisjZGVmaW5lIE9DRlMyX1NVUEVSX0JMT0NLX1NJR05BVFVSRSAgICAgIk9DRlNWMiIKKworc3RydWN0IG9yYWNsZV9hc21fZGlza19sYWJlbCB7CisJY2hhciBkdW1teVszMl07CisJY2hhciBkbF90YWdbOF07CisJY2hhciBkbF9pZFsyNF07Cit9OworCisjZGVmaW5lIE9SQUNMRV9BU01fRElTS19MQUJFTF9NQVJLRUQgICAgIk9SQ0xESVNLIgorI2RlZmluZSBPUkFDTEVfQVNNX0RJU0tfTEFCRUxfT0ZGU0VUICAgIDMyCisKK3N0cnVjdCBpc29fdm9sdW1lX2Rlc2NyaXB0b3IgeworCXVuc2lnbmVkIGNoYXIJdmRfdHlwZTsKKwl1bnNpZ25lZCBjaGFyCXZkX2lkWzVdOworCXVuc2lnbmVkIGNoYXIJdmRfdmVyc2lvbjsKKwl1bnNpZ25lZCBjaGFyCWZsYWdzOworCXVuc2lnbmVkIGNoYXIJc3lzdGVtX2lkWzMyXTsKKwl1bnNpZ25lZCBjaGFyCXZvbHVtZV9pZFszMl07CisJdW5zaWduZWQgY2hhcgl1bnVzZWRbOF07CisJdW5zaWduZWQgY2hhcglzcGFjZV9zaXplWzhdOworCXVuc2lnbmVkIGNoYXIJZXNjYXBlX3NlcXVlbmNlc1s4XTsKK307CisKKy8qIENvbW1vbiBnZnMvZ2ZzMiBjb25zdGFudHM6ICovCisjZGVmaW5lIEdGU19NQUdJQyAgICAgICAgICAgICAgIDB4MDExNjE5NzAKKyNkZWZpbmUgR0ZTX0RFRkFVTFRfQlNJWkUgICAgICAgNDA5NgorI2RlZmluZSBHRlNfU1VQRVJCTE9DS19PRkZTRVQJKDB4MTAgKiBHRlNfREVGQVVMVF9CU0laRSkKKyNkZWZpbmUgR0ZTX01FVEFUWVBFX1NCICAgICAgICAgMQorI2RlZmluZSBHRlNfRk9STUFUX1NCICAgICAgICAgICAxMDAKKyNkZWZpbmUgR0ZTX0xPQ0tOQU1FX0xFTiAgICAgICAgNjQKKworLyogZ2ZzMSBjb25zdGFudHM6ICovCisjZGVmaW5lIEdGU19GT1JNQVRfRlMgICAgICAgICAgIDEzMDkKKyNkZWZpbmUgR0ZTX0ZPUk1BVF9NVUxUSSAgICAgICAgMTQwMQorLyogZ2ZzMiBjb25zdGFudHM6ICovCisjZGVmaW5lIEdGUzJfRk9STUFUX0ZTICAgICAgICAgIDE4MDEKKyNkZWZpbmUgR0ZTMl9GT1JNQVRfTVVMVEkgICAgICAgMTkwMAorCitzdHJ1Y3QgZ2ZzMl9tZXRhX2hlYWRlciB7CisJX191MzIgbWhfbWFnaWM7CisJX191MzIgbWhfdHlwZTsKKwlfX3U2NCBfX3BhZDA7ICAgICAgICAgIC8qIFdhcyBnZW5lcmF0aW9uIG51bWJlciBpbiBnZnMxICovCisJX191MzIgbWhfZm9ybWF0OworCV9fdTMyIF9fcGFkMTsgICAgICAgICAgLyogV2FzIGluY2FybmF0aW9uIG51bWJlciBpbiBnZnMxICovCit9OworCitzdHJ1Y3QgZ2ZzMl9pbnVtIHsKKwlfX3U2NCBub19mb3JtYWxfaW5vOworCV9fdTY0IG5vX2FkZHI7Cit9OworCitzdHJ1Y3QgZ2ZzMl9zYiB7CisJc3RydWN0IGdmczJfbWV0YV9oZWFkZXIgc2JfaGVhZGVyOworCisJX191MzIgc2JfZnNfZm9ybWF0OworCV9fdTMyIHNiX211bHRpaG9zdF9mb3JtYXQ7CisJX191MzIgIF9fcGFkMDsgIC8qIFdhcyBzdXBlcmJsb2NrIGZsYWdzIGluIGdmczEgKi8KKworCV9fdTMyIHNiX2JzaXplOworCV9fdTMyIHNiX2JzaXplX3NoaWZ0OworCV9fdTMyIF9fcGFkMTsgICAvKiBXYXMgam91cm5hbCBzZWdtZW50IHNpemUgaW4gZ2ZzMSAqLworCisJc3RydWN0IGdmczJfaW51bSBzYl9tYXN0ZXJfZGlyOyAvKiBXYXMgamluZGV4IGRpbm9kZSBpbiBnZnMxICovCisJc3RydWN0IGdmczJfaW51bSBfX3BhZDI7IC8qIFdhcyByaW5kZXggZGlub2RlIGluIGdmczEgKi8KKwlzdHJ1Y3QgZ2ZzMl9pbnVtIHNiX3Jvb3RfZGlyOworCisJY2hhciBzYl9sb2NrcHJvdG9bR0ZTX0xPQ0tOQU1FX0xFTl07CisJY2hhciBzYl9sb2NrdGFibGVbR0ZTX0xPQ0tOQU1FX0xFTl07CisJLyogSW4gZ2ZzMSwgcXVvdGEgYW5kIGxpY2Vuc2UgZGlub2RlcyBmb2xsb3dlZCAqLworfTsKKworc3RydWN0IG50ZnNfc3VwZXJfYmxvY2sgeworCV9fdTgJanVtcFszXTsKKwlfX3U4CW9lbV9pZFs4XTsKKwlfX3U4CWJpb3NfcGFyYW1ldGVyX2Jsb2NrWzI1XTsKKwlfX3UxNgl1bnVzZWRbMl07CisJX191NjQJbnVtYmVyX29mX3NlY3RvcnM7CisJX191NjQJbWZ0X2NsdXN0ZXJfbG9jYXRpb247CisJX191NjQJbWZ0X21pcnJvcl9jbHVzdGVyX2xvY2F0aW9uOworCV9fczgJY2x1c3Rlcl9wZXJfbWZ0X3JlY29yZDsKKwlfX3U4CXJlc2VydmVkMVszXTsKKwlfX3M4CWNsdXN0ZXJfcGVyX2luZGV4X3JlY29yZDsKKwlfX3U4CXJlc2VydmVkMlszXTsKKwlfX3U2NAl2b2x1bWVfc2VyaWFsOworCV9fdTE2CWNoZWNrc3VtOworfTsKKworc3RydWN0IG1hc3Rlcl9maWxlX3RhYmxlX3JlY29yZCB7CisJX191MzIJbWFnaWM7CisJX191MTYJdXNhX29mczsKKwlfX3UxNgl1c2FfY291bnQ7CisJX191NjQJbHNuOworCV9fdTE2CXNlcXVlbmNlX251bWJlcjsKKwlfX3UxNglsaW5rX2NvdW50OworCV9fdTE2CWF0dHJzX29mZnNldDsKKwlfX3UxNglmbGFnczsKKwlfX3UzMglieXRlc19pbl91c2U7CisJX191MzIJYnl0ZXNfYWxsb2NhdGVkOworfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKK3N0cnVjdCBmaWxlX2F0dHJpYnV0ZSB7CisJX191MzIJdHlwZTsKKwlfX3UzMglsZW47CisJX191OAlub25fcmVzaWRlbnQ7CisJX191OAluYW1lX2xlbjsKKwlfX3UxNgluYW1lX29mZnNldDsKKwlfX3UxNglmbGFnczsKKwlfX3UxNglpbnN0YW5jZTsKKwlfX3UzMgl2YWx1ZV9sZW47CisJX191MTYJdmFsdWVfb2Zmc2V0OworfSBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSk7CisKKyNkZWZpbmUgTUZUX1JFQ09SRF9WT0xVTUUJCQkzCisjZGVmaW5lIE1GVF9SRUNPUkRfQVRUUl9WT0xVTUVfTkFNRQkJMHg2MAorI2RlZmluZSBNRlRfUkVDT1JEX0FUVFJfVk9MVU1FX0lORk8JCTB4NzAKKyNkZWZpbmUgTUZUX1JFQ09SRF9BVFRSX09CSkVDVF9JRAkJMHg0MAorI2RlZmluZSBNRlRfUkVDT1JEX0FUVFJfRU5ECQkJMHhmZmZmZmZmZnUKKworLyogSEZTIC8gSEZTKyAqLworc3RydWN0IGhmc19maW5kZXJfaW5mbyB7CisgICAgICAgIF9fdTMyICAgICAgICBib290X2ZvbGRlcjsKKyAgICAgICAgX191MzIgICAgICAgIHN0YXJ0X2FwcDsKKyAgICAgICAgX191MzIgICAgICAgIG9wZW5fZm9sZGVyOworICAgICAgICBfX3UzMiAgICAgICAgb3M5X2ZvbGRlcjsKKyAgICAgICAgX191MzIgICAgICAgIHJlc2VydmVkOworICAgICAgICBfX3UzMiAgICAgICAgb3N4X2ZvbGRlcjsKKyAgICAgICAgX191OCAgICAgICAgIGlkWzhdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGhmc19tZGIgeworICAgICAgICBfX3U4ICAgICAgICAgc2lnbmF0dXJlWzJdOworICAgICAgICBfX3UzMiAgICAgICAgY3JfZGF0ZTsKKyAgICAgICAgX191MzIgICAgICAgIGxzX01vZDsKKyAgICAgICAgX191MTYgICAgICAgIGF0cmI7CisgICAgICAgIF9fdTE2ICAgICAgICBubV9mbHM7CisgICAgICAgIF9fdTE2ICAgICAgICB2Ym1fc3Q7CisgICAgICAgIF9fdTE2ICAgICAgICBhbGxvY19wdHI7CisgICAgICAgIF9fdTE2ICAgICAgICBubV9hbF9ibGtzOworICAgICAgICBfX3UzMiAgICAgICAgYWxfYmxrX3NpemU7CisgICAgICAgIF9fdTMyICAgICAgICBjbHBfc2l6ZTsKKyAgICAgICAgX191MTYgICAgICAgIGFsX2JsX3N0OworICAgICAgICBfX3UzMiAgICAgICAgbnh0X2NuaWQ7CisgICAgICAgIF9fdTE2ICAgICAgICBmcmVlX2JrczsKKyAgICAgICAgX191OCAgICAgICAgIGxhYmVsX2xlbjsKKyAgICAgICAgX191OCAgICAgICAgIGxhYmVsWzI3XTsKKyAgICAgICAgX191MzIgICAgICAgIHZvbF9ia3VwOworICAgICAgICBfX3UxNiAgICAgICAgdm9sX3NlcV9udW07CisgICAgICAgIF9fdTMyICAgICAgICB3cl9jbnQ7CisgICAgICAgIF9fdTMyICAgICAgICB4dF9jbHVtcF9zaXplOworICAgICAgICBfX3UzMiAgICAgICAgY3RfY2x1bXBfc2l6ZTsKKyAgICAgICAgX191MTYgICAgICAgIG51bV9yb290X2RpcnM7CisgICAgICAgIF9fdTMyICAgICAgICBmaWxlX2NvdW50OworICAgICAgICBfX3UzMiAgICAgICAgZGlyX2NvdW50OworICAgICAgICBzdHJ1Y3QgaGZzX2ZpbmRlcl9pbmZvIGZpbmRlcl9pbmZvOworICAgICAgICBfX3U4ICAgICAgICAgZW1iZWRfc2lnWzJdOworICAgICAgICBfX3UxNiAgICAgICAgZW1iZWRfc3RhcnRibG9jazsKKyAgICAgICAgX191MTYgICAgICAgIGVtYmVkX2Jsb2NrY291bnQ7Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisKKyNkZWZpbmUgSEZTX05PREVfTEVBRgkJCTB4ZmYKKyNkZWZpbmUgSEZTUExVU19QT1JfQ05JRAkJMQorCitzdHJ1Y3QgaGZzcGx1c19ibm9kZV9kZXNjcmlwdG9yIHsKKwlfX3UzMgkJbmV4dDsKKwlfX3UzMgkJcHJldjsKKwlfX3U4CQl0eXBlOworCV9fdTgJCWhlaWdodDsKKwlfX3UxNgkJbnVtX3JlY3M7CisJX191MTYJCXJlc2VydmVkOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGhmc3BsdXNfYmhlYWRlcl9yZWNvcmQgeworCV9fdTE2CQlkZXB0aDsKKwlfX3UzMgkJcm9vdDsKKwlfX3UzMgkJbGVhZl9jb3VudDsKKwlfX3UzMgkJbGVhZl9oZWFkOworCV9fdTMyCQlsZWFmX3RhaWw7CisJX191MTYJCW5vZGVfc2l6ZTsKK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKK3N0cnVjdCBoZnNwbHVzX2NhdGFsb2dfa2V5IHsKKwlfX3UxNglrZXlfbGVuOworCV9fdTMyCXBhcmVudF9pZDsKKwlfX3UxNgl1bmljb2RlX2xlbjsKKwlfX3U4CQl1bmljb2RlWzI1NSAqIDJdOworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworc3RydWN0IGhmc3BsdXNfZXh0ZW50IHsKKwlfX3UzMgkJc3RhcnRfYmxvY2s7CisJX191MzIJCWJsb2NrX2NvdW50OworfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKworI2RlZmluZSBIRlNQTFVTX0VYVEVOVF9DT1VOVAkJOAorc3RydWN0IGhmc3BsdXNfZm9yayB7CisJX191NjQJCXRvdGFsX3NpemU7CisJX191MzIJCWNsdW1wX3NpemU7CisJX191MzIJCXRvdGFsX2Jsb2NrczsKKwlzdHJ1Y3QgaGZzcGx1c19leHRlbnQgZXh0ZW50c1tIRlNQTFVTX0VYVEVOVF9DT1VOVF07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCitzdHJ1Y3QgaGZzcGx1c192b2xfaGVhZGVyIHsKKwlfX3U4CQlzaWduYXR1cmVbMl07CisJX191MTYJCXZlcnNpb247CisJX191MzIJCWF0dHJpYnV0ZXM7CisJX191MzIJCWxhc3RfbW91bnRfdmVyczsKKwlfX3UzMgkJcmVzZXJ2ZWQ7CisJX191MzIJCWNyZWF0ZV9kYXRlOworCV9fdTMyCQltb2RpZnlfZGF0ZTsKKwlfX3UzMgkJYmFja3VwX2RhdGU7CisJX191MzIJCWNoZWNrZWRfZGF0ZTsKKwlfX3UzMgkJZmlsZV9jb3VudDsKKwlfX3UzMgkJZm9sZGVyX2NvdW50OworCV9fdTMyCQlibG9ja3NpemU7CisJX191MzIJCXRvdGFsX2Jsb2NrczsKKwlfX3UzMgkJZnJlZV9ibG9ja3M7CisJX191MzIJCW5leHRfYWxsb2M7CisJX191MzIJCXJzcmNfY2x1bXBfc3o7CisJX191MzIJCWRhdGFfY2x1bXBfc3o7CisJX191MzIJCW5leHRfY25pZDsKKwlfX3UzMgkJd3JpdGVfY291bnQ7CisJX191NjQJCWVuY29kaW5nc19ibXA7CisJc3RydWN0IGhmc19maW5kZXJfaW5mbyBmaW5kZXJfaW5mbzsKKwlzdHJ1Y3QgaGZzcGx1c19mb3JrIGFsbG9jX2ZpbGU7CisJc3RydWN0IGhmc3BsdXNfZm9yayBleHRfZmlsZTsKKwlzdHJ1Y3QgaGZzcGx1c19mb3JrIGNhdF9maWxlOworCXN0cnVjdCBoZnNwbHVzX2ZvcmsgYXR0cl9maWxlOworCXN0cnVjdCBoZnNwbHVzX2Zvcmsgc3RhcnRfZmlsZTsKK30gIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworCisKKy8qIHRoaXMgaXMgbHZtJ3MgbGFiZWxfaGVhZGVyICYgcHZfaGVhZGVyIGNvbWJpbmVkLiAqLworCisjZGVmaW5lIExWTTJfSURfTEVOIDMyCisKK3N0cnVjdCBsdm0yX3B2X2xhYmVsX2hlYWRlciB7CisJLyogbGFiZWxfaGVhZGVyICovCisJX191OAlpZFs4XTsJCS8qIExBQkVMT05FICovCisJX191NjQJc2VjdG9yX3hsOwkvKiBTZWN0b3IgbnVtYmVyIG9mIHRoaXMgbGFiZWwgKi8KKwlfX3UzMgljcmNfeGw7CQkvKiBGcm9tIG5leHQgZmllbGQgdG8gZW5kIG9mIHNlY3RvciAqLworCV9fdTMyCW9mZnNldF94bDsJLyogT2Zmc2V0IGZyb20gc3RhcnQgb2Ygc3RydWN0IHRvIGNvbnRlbnRzICovCisJX191OAl0eXBlWzhdOwkvKiBMVk0yIDAwMSAqLworCS8qIHB2X2hlYWRlciAqLworCV9fdTgJcHZfdXVpZFtMVk0yX0lEX0xFTl07Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworCisvKgorICogdGhpcyBpcyBhIHZlcnkgZ2VuZXJvdXMgcG9ydGlvbiBvZiB0aGUgc3VwZXIgYmxvY2ssIGdpdmluZyB1cworICogcm9vbSB0byB0cmFuc2xhdGUgMTQgY2h1bmtzIHdpdGggMyBzdHJpcGVzIGVhY2guCisgKi8KKyNkZWZpbmUgQlRSRlNfU1lTVEVNX0NIVU5LX0FSUkFZX1NJWkUgMjA0OAorI2RlZmluZSBCVFJGU19MQUJFTF9TSVpFIDI1NgorI2RlZmluZSBCVFJGU19VVUlEX1NJWkUgMTYKKyNkZWZpbmUgQlRSRlNfRlNJRF9TSVpFIDE2CisjZGVmaW5lIEJUUkZTX0NTVU1fU0laRSAzMgorCitzdHJ1Y3QgYnRyZnNfZGV2X2l0ZW0geworCS8qIHRoZSBpbnRlcm5hbCBidHJmcyBkZXZpY2UgaWQgKi8KKwlfX3U2NCBkZXZpZDsKKworCS8qIHNpemUgb2YgdGhlIGRldmljZSAqLworCV9fdTY0IHRvdGFsX2J5dGVzOworCisJLyogYnl0ZXMgdXNlZCAqLworCV9fdTY0IGJ5dGVzX3VzZWQ7CisKKwkvKiBvcHRpbWFsIGlvIGFsaWdubWVudCBmb3IgdGhpcyBkZXZpY2UgKi8KKwlfX3UzMiBpb19hbGlnbjsKKworCS8qIG9wdGltYWwgaW8gd2lkdGggZm9yIHRoaXMgZGV2aWNlICovCisJX191MzIgaW9fd2lkdGg7CisKKwkvKiBtaW5pbWFsIGlvIHNpemUgZm9yIHRoaXMgZGV2aWNlICovCisJX191MzIgc2VjdG9yX3NpemU7CisKKwkvKiB0eXBlIGFuZCBpbmZvIGFib3V0IHRoaXMgZGV2aWNlICovCisJX191NjQgdHlwZTsKKworCS8qIGV4cGVjdGVkIGdlbmVyYXRpb24gZm9yIHRoaXMgZGV2aWNlICovCisJX191NjQgZ2VuZXJhdGlvbjsKKworCS8qCisJICogc3RhcnRpbmcgYnl0ZSBvZiB0aGlzIHBhcnRpdGlvbiBvbiB0aGUgZGV2aWNlLAorCSAqIHRvIGFsbG93ciBmb3Igc3RyaXBlIGFsaWdubWVudCBpbiB0aGUgZnV0dXJlCisJICovCisJX191NjQgc3RhcnRfb2Zmc2V0OworCisJLyogZ3JvdXBpbmcgaW5mb3JtYXRpb24gZm9yIGFsbG9jYXRpb24gZGVjaXNpb25zICovCisJX191MzIgZGV2X2dyb3VwOworCisJLyogc2VlayBzcGVlZCAwLTEwMCB3aGVyZSAxMDAgaXMgZmFzdGVzdCAqLworCV9fdTggc2Vla19zcGVlZDsKKworCS8qIGJhbmR3aWR0aCAwLTEwMCB3aGVyZSAxMDAgaXMgZmFzdGVzdCAqLworCV9fdTggYmFuZHdpZHRoOworCisJLyogYnRyZnMgZ2VuZXJhdGVkIHV1aWQgZm9yIHRoaXMgZGV2aWNlICovCisJX191OCB1dWlkW0JUUkZTX1VVSURfU0laRV07CisKKwkvKiB1dWlkIG9mIEZTIHdobyBvd25zIHRoaXMgZGV2aWNlICovCisJX191OCBmc2lkW0JUUkZTX1VVSURfU0laRV07Cit9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CisKKy8qCisgKiB0aGUgc3VwZXIgYmxvY2sgYmFzaWNhbGx5IGxpc3RzIHRoZSBtYWluIHRyZWVzIG9mIHRoZSBGUworICogaXQgY3VycmVudGx5IGxhY2tzIGFueSBibG9jayBjb3VudCBldGMgZXRjCisgKi8KK3N0cnVjdCBidHJmc19zdXBlcl9ibG9jayB7CisJX191OCBjc3VtW0JUUkZTX0NTVU1fU0laRV07CisJLyogdGhlIGZpcnN0IDMgZmllbGRzIG11c3QgbWF0Y2ggc3RydWN0IGJ0cmZzX2hlYWRlciAqLworCV9fdTggZnNpZFtCVFJGU19GU0lEX1NJWkVdOyAgICAvKiBGUyBzcGVjaWZpYyB1dWlkICovCisJX191NjQgYnl0ZW5yOyAvKiB0aGlzIGJsb2NrIG51bWJlciAqLworCV9fdTY0IGZsYWdzOworCisJLyogYWxsb3dlZCB0byBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnRyZnNfaGVhZGVyIGZyb20gaGVyZSBvd24gZG93biAqLworCV9fdTY0IG1hZ2ljOworCV9fdTY0IGdlbmVyYXRpb247CisJX191NjQgcm9vdDsKKwlfX3U2NCBjaHVua19yb290OworCV9fdTY0IGxvZ19yb290OworCisJLyogdGhpcyB3aWxsIGhlbHAgZmluZCB0aGUgbmV3IHN1cGVyIGJhc2VkIG9uIHRoZSBsb2cgcm9vdCAqLworCV9fdTY0IGxvZ19yb290X3RyYW5zaWQ7CisJX191NjQgdG90YWxfYnl0ZXM7CisJX191NjQgYnl0ZXNfdXNlZDsKKwlfX3U2NCByb290X2Rpcl9vYmplY3RpZDsKKwlfX3U2NCBudW1fZGV2aWNlczsKKwlfX3UzMiBzZWN0b3JzaXplOworCV9fdTMyIG5vZGVzaXplOworCV9fdTMyIGxlYWZzaXplOworCV9fdTMyIHN0cmlwZXNpemU7CisJX191MzIgc3lzX2NodW5rX2FycmF5X3NpemU7CisJX191NjQgY2h1bmtfcm9vdF9nZW5lcmF0aW9uOworCV9fdTY0IGNvbXBhdF9mbGFnczsKKwlfX3U2NCBjb21wYXRfcm9fZmxhZ3M7CisJX191NjQgaW5jb21wYXRfZmxhZ3M7CisJX191MTYgY3N1bV90eXBlOworCV9fdTggcm9vdF9sZXZlbDsKKwlfX3U4IGNodW5rX3Jvb3RfbGV2ZWw7CisJX191OCBsb2dfcm9vdF9sZXZlbDsKKwlzdHJ1Y3QgYnRyZnNfZGV2X2l0ZW0gZGV2X2l0ZW07CisKKwljaGFyIGxhYmVsW0JUUkZTX0xBQkVMX1NJWkVdOworCisJLyogZnV0dXJlIGV4cGFuc2lvbiAqLworCV9fdTY0IHJlc2VydmVkWzMyXTsKKwlfX3U4IHN5c19jaHVua19hcnJheVtCVFJGU19TWVNURU1fQ0hVTktfQVJSQVlfU0laRV07Cit9IF9fYXR0cmlidXRlX18gKChfX3BhY2tlZF9fKSk7CisKKyNkZWZpbmUgRjJGU19NQVhfRVhURU5TSU9OICAgICAgNjQgIC8qICMgb2YgZXh0ZW5zaW9uIGVudHJpZXMgKi8KKworc3RydWN0IGYyZnNfc3VwZXJfYmxvY2sgeworICAgIF9fdTMyIG1hZ2ljOyAgICAgICAgICAgLyogTWFnaWMgTnVtYmVyICovCisgICAgX191MTYgbWFqb3JfdmVyOyAgICAgICAvKiBNYWpvciBWZXJzaW9uICovCisgICAgX191MTYgbWlub3JfdmVyOyAgICAgICAvKiBNaW5vciBWZXJzaW9uICovCisgICAgX191MzIgbG9nX3NlY3RvcnNpemU7ICAgICAgLyogbG9nMiBzZWN0b3Igc2l6ZSBpbiBieXRlcyAqLworICAgIF9fdTMyIGxvZ19zZWN0b3JzX3Blcl9ibG9jazsgICAvKiBsb2cyICMgb2Ygc2VjdG9ycyBwZXIgYmxvY2sgKi8KKyAgICBfX3UzMiBsb2dfYmxvY2tzaXplOyAgICAgICAvKiBsb2cyIGJsb2NrIHNpemUgaW4gYnl0ZXMgKi8KKyAgICBfX3UzMiBsb2dfYmxvY2tzX3Blcl9zZWc7ICAvKiBsb2cyICMgb2YgYmxvY2tzIHBlciBzZWdtZW50ICovCisgICAgX191MzIgc2Vnc19wZXJfc2VjOyAgICAgICAgLyogIyBvZiBzZWdtZW50cyBwZXIgc2VjdGlvbiAqLworICAgIF9fdTMyIHNlY3NfcGVyX3pvbmU7ICAgICAgIC8qICMgb2Ygc2VjdGlvbnMgcGVyIHpvbmUgKi8KKyAgICBfX3UzMiBjaGVja3N1bV9vZmZzZXQ7ICAgICAvKiBjaGVja3N1bSBvZmZzZXQgaW5zaWRlIHN1cGVyIGJsb2NrICovCisgICAgX191NjQgYmxvY2tfY291bnQ7ICAgICAvKiB0b3RhbCAjIG9mIHVzZXIgYmxvY2tzICovCisgICAgX191MzIgc2VjdGlvbl9jb3VudDsgICAgICAgLyogdG90YWwgIyBvZiBzZWN0aW9ucyAqLworICAgIF9fdTMyIHNlZ21lbnRfY291bnQ7ICAgICAgIC8qIHRvdGFsICMgb2Ygc2VnbWVudHMgKi8KKyAgICBfX3UzMiBzZWdtZW50X2NvdW50X2NrcHQ7ICAvKiAjIG9mIHNlZ21lbnRzIGZvciBjaGVja3BvaW50ICovCisgICAgX191MzIgc2VnbWVudF9jb3VudF9zaXQ7ICAgLyogIyBvZiBzZWdtZW50cyBmb3IgU0lUICovCisgICAgX191MzIgc2VnbWVudF9jb3VudF9uYXQ7ICAgLyogIyBvZiBzZWdtZW50cyBmb3IgTkFUICovCisgICAgX191MzIgc2VnbWVudF9jb3VudF9zc2E7ICAgLyogIyBvZiBzZWdtZW50cyBmb3IgU1NBICovCisgICAgX191MzIgc2VnbWVudF9jb3VudF9tYWluOyAgLyogIyBvZiBzZWdtZW50cyBmb3IgbWFpbiBhcmVhICovCisgICAgX191MzIgc2VnbWVudDBfYmxrYWRkcjsgICAgLyogc3RhcnQgYmxvY2sgYWRkcmVzcyBvZiBzZWdtZW50IDAgKi8KKyAgICBfX3UzMiBjcF9ibGthZGRyOyAgICAgIC8qIHN0YXJ0IGJsb2NrIGFkZHJlc3Mgb2YgY2hlY2twb2ludCAqLworICAgIF9fdTMyIHNpdF9ibGthZGRyOyAgICAgLyogc3RhcnQgYmxvY2sgYWRkcmVzcyBvZiBTSVQgKi8KKyAgICBfX3UzMiBuYXRfYmxrYWRkcjsgICAgIC8qIHN0YXJ0IGJsb2NrIGFkZHJlc3Mgb2YgTkFUICovCisgICAgX191MzIgc3NhX2Jsa2FkZHI7ICAgICAvKiBzdGFydCBibG9jayBhZGRyZXNzIG9mIFNTQSAqLworICAgIF9fdTMyIG1haW5fYmxrYWRkcjsgICAgICAgIC8qIHN0YXJ0IGJsb2NrIGFkZHJlc3Mgb2YgbWFpbiBhcmVhICovCisgICAgX191MzIgcm9vdF9pbm87ICAgICAgICAvKiByb290IGlub2RlIG51bWJlciAqLworICAgIF9fdTMyIG5vZGVfaW5vOyAgICAgICAgLyogbm9kZSBpbm9kZSBudW1iZXIgKi8KKyAgICBfX3UzMiBtZXRhX2lubzsgICAgICAgIC8qIG1ldGEgaW5vZGUgbnVtYmVyICovCisgICAgX191OCB1dWlkWzE2XTsgICAgICAgICAgLyogMTI4LWJpdCB1dWlkIGZvciB2b2x1bWUgKi8KKyAgICBfX3UxNiB2b2x1bWVfbmFtZVs1MTJdOyAgICAvKiB2b2x1bWUgbmFtZSAqLworICAgIF9fdTMyIGV4dGVuc2lvbl9jb3VudDsgICAgIC8qICMgb2YgZXh0ZW5zaW9ucyBiZWxvdyAqLworICAgIF9fdTggZXh0ZW5zaW9uX2xpc3RbRjJGU19NQVhfRVhURU5TSU9OXVs4XTsgLyogZXh0ZW5zaW9uIGFycmF5ICovCit9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworLyoKKyAqIEJ5dGUgc3dhcCBmdW5jdGlvbnMKKyAqLworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIF9JTkxJTkVfIHN0YXRpYyBfX2lubGluZV9fCisjZWxzZQkJCQkvKiBGb3IgV2F0Y29tIEMgKi8KKyNkZWZpbmUgX0lOTElORV8gc3RhdGljIGlubGluZQorI2VuZGlmCisKK3N0YXRpYyBfX3UxNiBibGtpZF9zd2FiMTYoX191MTYgdmFsKTsKK3N0YXRpYyBfX3UzMiBibGtpZF9zd2FiMzIoX191MzIgdmFsKTsKK3N0YXRpYyBfX3U2NCBibGtpZF9zd2FiNjQoX191NjQgdmFsKTsKKworI2lmICgoZGVmaW5lZCBfX0dOVUNfXykgJiYgXAorICAgICAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2k0ODZfXykgfHwgZGVmaW5lZChfX2k1ODZfXykpKQorCisjZGVmaW5lIF9CTEtJRF9IQVZFX0FTTV9CSVRPUFNfCisKK19JTkxJTkVfIF9fdTMyIGJsa2lkX3N3YWIzMihfX3UzMiB2YWwpCit7CisjaWZkZWYgRVhUMkZTX1JFUVVJUkVfNDg2CisJX19hc21fXygiYnN3YXAgJTAiIDogIj1yIiAodmFsKSA6ICIwIiAodmFsKSk7CisjZWxzZQorCV9fYXNtX18oInhjaGdiICViMCwlaDBcblx0IgkvKiBzd2FwIGxvd2VyIGJ5dGVzCSovCisJCSJyb3JsICQxNiwlMFxuXHQiCS8qIHN3YXAgd29yZHMJCSovCisJCSJ4Y2hnYiAlYjAsJWgwIgkJLyogc3dhcCBoaWdoZXIgYnl0ZXMJKi8KKwkJOiI9cSIgKHZhbCkKKwkJOiAiMCIgKHZhbCkpOworI2VuZGlmCisJcmV0dXJuIHZhbDsKK30KKworX0lOTElORV8gX191MTYgYmxraWRfc3dhYjE2KF9fdTE2IHZhbCkKK3sKKwlfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwIgkJLyogc3dhcCBieXRlcwkJKi8gXAorCQk6ICI9cSIgKHZhbCkgXAorCQk6ICAiMCIgKHZhbCkpOyBcCisJCXJldHVybiB2YWw7Cit9CisKK19JTkxJTkVfIF9fdTY0IGJsa2lkX3N3YWI2NChfX3U2NCB2YWwpCit7CisJcmV0dXJuIChibGtpZF9zd2FiMzIodmFsID4+IDMyKSB8CisJCSgoKF9fdTY0KSBibGtpZF9zd2FiMzIodmFsICYgMHhGRkZGRkZGRlVMKSkgPDwgMzIpKTsKK30KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoX0JMS0lEX0hBVkVfQVNNX0JJVE9QU18pCisKK19JTkxJTkVfICBfX3UxNiBibGtpZF9zd2FiMTYoX191MTYgdmFsKQoreworCXJldHVybiAodmFsID4+IDgpIHwgKHZhbCA8PCA4KTsKK30KKworX0lOTElORV8gX191MzIgYmxraWRfc3dhYjMyKF9fdTMyIHZhbCkKK3sKKwlyZXR1cm4gKCh2YWw+PjI0KSB8ICgodmFsPj44KSYweEZGMDApIHwKKwkJKCh2YWw8PDgpJjB4RkYwMDAwKSB8ICh2YWw8PDI0KSk7Cit9CisKK19JTkxJTkVfIF9fdTY0IGJsa2lkX3N3YWI2NChfX3U2NCB2YWwpCit7CisJcmV0dXJuIChibGtpZF9zd2FiMzIodmFsID4+IDMyKSB8CisJCSgoKF9fdTY0KSBibGtpZF9zd2FiMzIodmFsICYgMHhGRkZGRkZGRlVMKSkgPDwgMzIpKTsKK30KKyNlbmRpZgorCisKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorI2RlZmluZSBibGtpZF9sZTE2KHgpIGJsa2lkX3N3YWIxNih4KQorI2RlZmluZSBibGtpZF9sZTMyKHgpIGJsa2lkX3N3YWIzMih4KQorI2RlZmluZSBibGtpZF9sZTY0KHgpIGJsa2lkX3N3YWI2NCh4KQorI2RlZmluZSBibGtpZF9iZTE2KHgpICh4KQorI2RlZmluZSBibGtpZF9iZTMyKHgpICh4KQorI2RlZmluZSBibGtpZF9iZTY0KHgpICh4KQorI2Vsc2UKKyNkZWZpbmUgYmxraWRfbGUxNih4KSAoeCkKKyNkZWZpbmUgYmxraWRfbGUzMih4KSAoeCkKKyNkZWZpbmUgYmxraWRfbGU2NCh4KSAoeCkKKyNkZWZpbmUgYmxraWRfYmUxNih4KSBibGtpZF9zd2FiMTYoeCkKKyNkZWZpbmUgYmxraWRfYmUzMih4KSBibGtpZF9zd2FiMzIoeCkKKyNkZWZpbmUgYmxraWRfYmU2NCh4KSBibGtpZF9zd2FiNjQoeCkKKyNlbmRpZgorCisjdW5kZWYgX0lOTElORV8KKworI2VuZGlmIC8qIF9CTEtJRF9QUk9CRV9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3JlYWQuYyBiL2UyZnNwcm9ncy9saWIvYmxraWQvcmVhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYzM0OGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3JlYWQuYwpAQCAtMCwwICsxLDQ5NCBAQAorLyoKKyAqIHJlYWQuYyAtIHJlYWQgdGhlIGJsa2lkIGNhY2hlIGZyb20gZGlzaywgdG8gYXZvaWQgc2Nhbm5pbmcgYWxsIGRldmljZXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMgVGhlb2RvcmUgWS4gVHMnbworICogQ29weXJpZ2h0IChDKSAyMDAxIEFuZHJlYXMgRGlsZ2VyCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIC8qIGZvciBpbmNsdXNpb24gb2Ygc3RydG91bGwgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImJsa2lkUC5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorCisjaWZkZWYgSEFWRV9TVFJUT1VMTAorI2RlZmluZSBTVFJUT1VMTCBzdHJ0b3VsbCAvKiBkZWZpbmVkIGluIHN0ZGxpYi5oIGlmIHlvdSB0cnkgaGFyZCBlbm91Z2ggKi8KKyNlbHNlCisvKiBGSVhNRTogbmVlZCB0byBzdXBwb3J0IHJlYWwgc3RydG91bGwgaGVyZSAqLworI2RlZmluZSBTVFJUT1VMTCBzdHJ0b3VsCisjZW5kaWYKKworI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWZkZWYgVEVTVF9QUk9HUkFNCisjZGVmaW5lIGJsa2lkX2RlYnVnX2R1bXBfZGV2KGRldikJKGRlYnVnX2R1bXBfZGV2KGRldikpCitzdGF0aWMgdm9pZCBkZWJ1Z19kdW1wX2RldihibGtpZF9kZXYgZGV2KTsKKyNlbmRpZgorCisvKgorICogRmlsZSBmb3JtYXQ6CisgKgorICoJPGRldmljZSBbPE5BTUU9InZhbHVlIj4gLi4uXT5kZXZpY2VfbmFtZTwvZGV2aWNlPgorICoKKyAqCVRoZSBmb2xsb3dpbmcgdGFncyBhcmUgcmVxdWlyZWQgZm9yIGVhY2ggZW50cnk6CisgKgk8SUQ9ImlkIj4JdW5pcXVlICh3aXRoaW4gdGhpcyBmaWxlKSBJRCBudW1iZXIgb2YgdGhpcyBkZXZpY2UKKyAqCTxUSU1FPSJ0aW1lIj4JKGFzY2lpIHRpbWVfdCkgdGltZSB0aGlzIGVudHJ5IHdhcyBsYXN0IHJlYWQgZnJvbSBkaXNrCisgKgk8VFlQRT0idHlwZSI+CShkZXRlY3RlZCkgdHlwZSBvZiBmaWxlc3lzdGVtL2RhdGEgZm9yIHRoaXMgcGFydGl0aW9uCisgKgorICoJVGhlIGZvbGxvd2luZyB0YWdzIG1heSBiZSBwcmVzZW50LCBkZXBlbmRpbmcgb24gdGhlIGRldmljZSBjb250ZW50cworICoJPExBQkVMPSJsYWJlbCI+CSh1c2VyIHN1cHBsaWVkKSBsYWJlbCAodm9sdW1lIG5hbWUsIGV0YykKKyAqCTxVVUlEPSJ1dWlkIj4JKGdlbmVyYXRlZCkgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIgKHNlcmlhbCBubykKKyAqLworCitzdGF0aWMgY2hhciAqc2tpcF9vdmVyX2JsYW5rKGNoYXIgKmNwKQoreworCXdoaWxlICgqY3AgJiYgaXNzcGFjZSgqY3ApKQorCQljcCsrOworCXJldHVybiBjcDsKK30KKworc3RhdGljIGNoYXIgKnNraXBfb3Zlcl93b3JkKGNoYXIgKmNwKQoreworCWNoYXIgY2g7CisKKwl3aGlsZSAoKGNoID0gKmNwKSkgeworCQkvKiBJZiB3ZSBzZWUgYSBiYWNrc2xhc2gsIHNraXAgdGhlIG5leHQgY2hhcmFjdGVyICovCisJCWlmIChjaCA9PSAnXFwnKSB7CisJCQljcCsrOworCQkJaWYgKCpjcCA9PSAnXDAnKQorCQkJCWJyZWFrOworCQkJY3ArKzsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChpc3NwYWNlKGNoKSB8fCBjaCA9PSAnPCcgfHwgY2ggPT0gJz4nKQorCQkJYnJlYWs7CisJCWNwKys7CisJfQorCXJldHVybiBjcDsKK30KKworc3RhdGljIGNoYXIgKnN0cmlwX2xpbmUoY2hhciAqbGluZSkKK3sKKwljaGFyCSpwOworCisJbGluZSA9IHNraXBfb3Zlcl9ibGFuayhsaW5lKTsKKworCXAgPSBsaW5lICsgc3RybGVuKGxpbmUpIC0gMTsKKworCXdoaWxlICgqbGluZSkgeworCQlpZiAoaXNzcGFjZSgqcCkpCisJCQkqcC0tID0gJ1wwJzsKKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIGxpbmU7Cit9CisKKyNpZiAwCitzdGF0aWMgY2hhciAqcGFyc2Vfd29yZChjaGFyICoqYnVmKQoreworCWNoYXIgKndvcmQsICpuZXh0OworCisJd29yZCA9ICpidWY7CisJaWYgKCp3b3JkID09ICdcMCcpCisJCXJldHVybiBOVUxMOworCisJd29yZCA9IHNraXBfb3Zlcl9ibGFuayh3b3JkKTsKKwluZXh0ID0gc2tpcF9vdmVyX3dvcmQod29yZCk7CisJaWYgKCpuZXh0KSB7CisJCWNoYXIgKmVuZCA9IG5leHQgLSAxOworCQlpZiAoKmVuZCA9PSAnIicgfHwgKmVuZCA9PSAnXCcnKQorCQkJKmVuZCA9ICdcMCc7CisJCSpuZXh0KysgPSAnXDAnOworCX0KKwkqYnVmID0gbmV4dDsKKworCWlmICgqd29yZCA9PSAnIicgfHwgKndvcmQgPT0gJ1wnJykKKwkJd29yZCsrOworCXJldHVybiB3b3JkOworfQorI2VuZGlmCisKKy8qCisgKiBTdGFydCBwYXJzaW5nIGEgbmV3IGxpbmUgZnJvbSB0aGUgY2FjaGUuCisgKgorICogbGluZSBzdGFydHMgd2l0aCAiPGRldmljZSIgcmV0dXJuIDEgLT4gY29udGludWUgcGFyc2luZyBsaW5lCisgKiBsaW5lIHN0YXJ0cyB3aXRoICI8Zm9vIiwgZW1wdHksIG9yICMgcmV0dXJuIDAgLT4gc2tpcCBsaW5lCisgKiBsaW5lIHN0YXJ0cyB3aXRoIG90aGVyLCByZXR1cm4gLUJMS0lEX0VSUl9DQUNIRSAtPiBlcnJvcgorICovCitzdGF0aWMgaW50IHBhcnNlX3N0YXJ0KGNoYXIgKipjcCkKK3sKKwljaGFyICpwOworCisJcCA9IHN0cmlwX2xpbmUoKmNwKTsKKworCS8qIFNraXAgY29tbWVudCBvciBibGFuayBsaW5lcy4gIFdlIGNhbid0IGp1c3QgTlVMIHRoZSBmaXJzdCAnIycgY2hhciwKKwkgKiBpbiBjYXNlIGl0IGlzIGluc2lkZSBxdW90ZXMsIG9yIGVzY2FwZWQuCisJICovCisJaWYgKCpwID09ICdcMCcgfHwgKnAgPT0gJyMnKQorCQlyZXR1cm4gMDsKKworCWlmICghc3RybmNtcChwLCAiPGRldmljZSIsIDcpKSB7CisJCURCRyhERUJVR19SRUFELCBwcmludGYoImZvdW5kIGRldmljZSBoZWFkZXI6ICU4c1xuIiwgcCkpOworCQlwICs9IDc7CisKKwkJKmNwID0gcDsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKCpwID09ICc8JykKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gLUJMS0lEX0VSUl9DQUNIRTsKK30KKworLyogQ29uc3VtZSB0aGUgcmVtYWluaW5nIFhNTCBvbiB0aGUgbGluZSAoY29zbWV0aWMgb25seSkgKi8KK3N0YXRpYyBpbnQgcGFyc2VfZW5kKGNoYXIgKipjcCkKK3sKKwkqY3AgPSBza2lwX292ZXJfYmxhbmsoKmNwKTsKKworCWlmICghc3RybmNtcCgqY3AsICI8L2RldmljZT4iLCA5KSkgeworCQlEQkcoREVCVUdfUkVBRCwgcHJpbnRmKCJmb3VuZCBkZXZpY2UgdHJhaWxlciAlOXNcbiIsICpjcCkpOworCQkqY3AgKz0gOTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIC1CTEtJRF9FUlJfQ0FDSEU7Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIG5ldyBkZXZpY2Ugc3RydWN0IHdpdGggZGV2aWNlIG5hbWUgZmlsbGVkIGluLiAgV2lsbCBoYW5kbGUKKyAqIGZpbmRpbmcgdGhlIGRldmljZSBvbiBsaW5lcyBvZiB0aGUgZm9ybToKKyAqIDxkZXZpY2UgZm9vPWJhcj5kZXZuYW1lPC9kZXZpY2U+CisgKiA8ZGV2aWNlPmRldm5hbWU8Zm9vPmJhcjwvZm9vPjwvZGV2aWNlPgorICovCitzdGF0aWMgaW50IHBhcnNlX2RldihibGtpZF9jYWNoZSBjYWNoZSwgYmxraWRfZGV2ICpkZXYsIGNoYXIgKipjcCkKK3sKKwljaGFyICpzdGFydCwgKnRtcCwgKmVuZCwgKm5hbWU7CisJaW50IHJldDsKKworCWlmICgocmV0ID0gcGFyc2Vfc3RhcnQoY3ApKSA8PSAwKQorCQlyZXR1cm4gcmV0OworCisJc3RhcnQgPSB0bXAgPSBzdHJjaHIoKmNwLCAnPicpOworCWlmICghc3RhcnQpIHsKKwkJREJHKERFQlVHX1JFQUQsCisJCSAgICBwcmludGYoImJsa2lkOiBzaG9ydCBsaW5lIHBhcnNpbmcgZGV2OiAlc1xuIiwgKmNwKSk7CisJCXJldHVybiAtQkxLSURfRVJSX0NBQ0hFOworCX0KKwlzdGFydCA9IHNraXBfb3Zlcl9ibGFuayhzdGFydCArIDEpOworCWVuZCA9IHNraXBfb3Zlcl93b3JkKHN0YXJ0KTsKKworCURCRyhERUJVR19SRUFELCBwcmludGYoImRldmljZSBzaG91bGQgYmUgJSpzXG4iLAorCQkJICAgICAgIChpbnQpKGVuZCAtIHN0YXJ0KSwgc3RhcnQpKTsKKworCWlmICgqKmNwID09ICc+JykKKwkJKmNwID0gZW5kOworCWVsc2UKKwkJKCpjcCkrKzsKKworCSp0bXAgPSAnXDAnOworCisJaWYgKCEodG1wID0gc3RycmNocihlbmQsICc8JykpIHx8IHBhcnNlX2VuZCgmdG1wKSA8IDApIHsKKwkJREJHKERFQlVHX1JFQUQsCisJCSAgICBwcmludGYoImJsa2lkOiBtaXNzaW5nIDwvZGV2aWNlPiBlbmRpbmc6ICVzXG4iLCBlbmQpKTsKKwl9IGVsc2UgaWYgKHRtcCkKKwkJKnRtcCA9ICdcMCc7CisKKwlpZiAoZW5kIC0gc3RhcnQgPD0gMSkgeworCQlEQkcoREVCVUdfUkVBRCwgcHJpbnRmKCJibGtpZDogZW1wdHkgZGV2aWNlIG5hbWU6ICVzXG4iLCAqY3ApKTsKKwkJcmV0dXJuIC1CTEtJRF9FUlJfQ0FDSEU7CisJfQorCisJbmFtZSA9IGJsa2lkX3N0cm5kdXAoc3RhcnQsIGVuZC1zdGFydCk7CisJaWYgKG5hbWUgPT0gTlVMTCkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfTUVNOworCisJREJHKERFQlVHX1JFQUQsIHByaW50ZigiZm91bmQgZGV2ICVzXG4iLCBuYW1lKSk7CisKKwlpZiAoISgqZGV2ID0gYmxraWRfZ2V0X2RldihjYWNoZSwgbmFtZSwgQkxLSURfREVWX0NSRUFURSkpKSB7CisJCWZyZWUobmFtZSk7CisJCXJldHVybiAtQkxLSURfRVJSX01FTTsKKwl9CisKKwlmcmVlKG5hbWUpOworCXJldHVybiAxOworfQorCisvKgorICogRXh0cmFjdCBhIHRhZyBvZiB0aGUgZm9ybSBOQU1FPSJ2YWx1ZSIgZnJvbSB0aGUgbGluZS4KKyAqLworc3RhdGljIGludCBwYXJzZV90b2tlbihjaGFyICoqbmFtZSwgY2hhciAqKnZhbHVlLCBjaGFyICoqY3ApCit7CisJY2hhciAqZW5kOworCisJaWYgKCFuYW1lIHx8ICF2YWx1ZSB8fCAhY3ApCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJaWYgKCEoKnZhbHVlID0gc3RyY2hyKCpjcCwgJz0nKSkpCisJCXJldHVybiAwOworCisJKip2YWx1ZSA9ICdcMCc7CisJKm5hbWUgPSBzdHJpcF9saW5lKCpjcCk7CisJKnZhbHVlID0gc2tpcF9vdmVyX2JsYW5rKCp2YWx1ZSArIDEpOworCisJaWYgKCoqdmFsdWUgPT0gJyInKSB7CisJCWVuZCA9IHN0cmNocigqdmFsdWUgKyAxLCAnIicpOworCQlpZiAoIWVuZCkgeworCQkJREJHKERFQlVHX1JFQUQsCisJCQkgICAgcHJpbnRmKCJ1bmJhbGFuY2VkIHF1b3RlcyBhdDogJXNcbiIsICp2YWx1ZSkpOworCQkJKmNwID0gKnZhbHVlOworCQkJcmV0dXJuIC1CTEtJRF9FUlJfQ0FDSEU7CisJCX0KKwkJKCp2YWx1ZSkrKzsKKwkJKmVuZCA9ICdcMCc7CisJCWVuZCsrOworCX0gZWxzZSB7CisJCWVuZCA9IHNraXBfb3Zlcl93b3JkKCp2YWx1ZSk7CisJCWlmICgqZW5kKSB7CisJCQkqZW5kID0gJ1wwJzsKKwkJCWVuZCsrOworCQl9CisJfQorCSpjcCA9IGVuZDsKKworCXJldHVybiAxOworfQorCisvKgorICogRXh0cmFjdCBhIHRhZyBvZiB0aGUgZm9ybSA8TkFNRT52YWx1ZTwvTkFNRT4gZnJvbSB0aGUgbGluZS4KKyAqLworLyoKK3N0YXRpYyBpbnQgcGFyc2VfeG1sKGNoYXIgKipuYW1lLCBjaGFyICoqdmFsdWUsIGNoYXIgKipjcCkKK3sKKwljaGFyICplbmQ7CisKKwlpZiAoIW5hbWUgfHwgIXZhbHVlIHx8ICFjcCkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKKwkqbmFtZSA9IHN0cmlwX2xpbmUoKmNwKTsKKworCWlmICgoKm5hbWUpWzBdICE9ICc8JyB8fCAoKm5hbWUpWzFdID09ICcvJykKKwkJcmV0dXJuIDA7CisKKwlGSVhNRTogZmluaXNoIHRoaXMuCit9CisqLworCisvKgorICogRXh0cmFjdCBhIHRhZyBmcm9tIHRoZSBsaW5lLgorICoKKyAqIFJldHVybiAxIGlmIGEgdmFsaWQgdGFnIHdhcyBmb3VuZC4KKyAqIFJldHVybiAwIGlmIG5vIHRhZyBmb3VuZC4KKyAqIFJldHVybiAtdmUgZXJyb3IgY29kZS4KKyAqLworc3RhdGljIGludCBwYXJzZV90YWcoYmxraWRfY2FjaGUgY2FjaGUsIGJsa2lkX2RldiBkZXYsIGNoYXIgKipjcCkKK3sKKwljaGFyICpuYW1lOworCWNoYXIgKnZhbHVlOworCWludCByZXQ7CisKKwlpZiAoIWNhY2hlIHx8ICFkZXYpCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJaWYgKChyZXQgPSBwYXJzZV90b2tlbigmbmFtZSwgJnZhbHVlLCBjcCkpIDw9IDAgLyogJiYKKwkgICAgKHJldCA9IHBhcnNlX3htbCgmbmFtZSwgJnZhbHVlLCBjcCkpIDw9IDAgKi8pCisJCXJldHVybiByZXQ7CisKKwkvKiBTb21lIHRhZ3MgYXJlIHN0b3JlZCBkaXJlY3RseSBpbiB0aGUgZGV2aWNlIHN0cnVjdCAqLworCWlmICghc3RyY21wKG5hbWUsICJERVZOTyIpKQorCQlkZXYtPmJpZF9kZXZubyA9IFNUUlRPVUxMKHZhbHVlLCAwLCAwKTsKKwllbHNlIGlmICghc3RyY21wKG5hbWUsICJQUkkiKSkKKwkJZGV2LT5iaWRfcHJpID0gc3RydG9sKHZhbHVlLCAwLCAwKTsKKwllbHNlIGlmICghc3RyY21wKG5hbWUsICJUSU1FIikpCisJCWRldi0+YmlkX3RpbWUgPSBTVFJUT1VMTCh2YWx1ZSwgMCwgMCk7CisJZWxzZQorCQlyZXQgPSBibGtpZF9zZXRfdGFnKGRldiwgbmFtZSwgdmFsdWUsIHN0cmxlbih2YWx1ZSkpOworCisJREJHKERFQlVHX1JFQUQsIHByaW50ZigiICAgIHRhZzogJXM9XCIlc1wiXG4iLCBuYW1lLCB2YWx1ZSkpOworCisJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAxOworfQorCisvKgorICogUGFyc2UgYSBzaW5nbGUgbGluZSBvZiBkYXRhLCBhbmQgcmV0dXJuIGEgbmV3bHkgYWxsb2NhdGVkIGRldiBzdHJ1Y3QuCisgKiBBZGQgdGhlIG5ldyBkZXZpY2UgdG8gdGhlIGNhY2hlIHN0cnVjdCwgaWYgb25lIHdhcyByZWFkLgorICoKKyAqIExpbmVzIGFyZSBvZiB0aGUgZm9ybSA8ZGV2aWNlIFtUQUc9InZhbHVlIiAuLi5dPi9kZXYvZm9vPC9kZXZpY2U+CisgKgorICogUmV0dXJucyAtdmUgdmFsdWUgb24gZXJyb3IuCisgKiBSZXR1cm5zIDAgb3RoZXJ3aXNlLgorICogSWYgYSB2YWxpZCBkZXZpY2Ugd2FzIHJlYWQsICpkZXZfcCBpcyBub24tTlVMTCwgb3RoZXJ3aXNlIGl0IGlzIE5VTEwKKyAqIChlLmcuIGNvbW1lbnQgbGluZXMsIHVua25vd24gWE1MIGNvbnRlbnQsIGV0YykuCisgKi8KK3N0YXRpYyBpbnQgYmxraWRfcGFyc2VfbGluZShibGtpZF9jYWNoZSBjYWNoZSwgYmxraWRfZGV2ICpkZXZfcCwgY2hhciAqY3ApCit7CisJYmxraWRfZGV2IGRldjsKKwlpbnQgcmV0OworCisJaWYgKCFjYWNoZSB8fCAhZGV2X3ApCisJCXJldHVybiAtQkxLSURfRVJSX1BBUkFNOworCisJKmRldl9wID0gTlVMTDsKKworCURCRyhERUJVR19SRUFELCBwcmludGYoImxpbmU6ICVzXG4iLCBjcCkpOworCisJaWYgKChyZXQgPSBwYXJzZV9kZXYoY2FjaGUsIGRldl9wLCAmY3ApKSA8PSAwKQorCQlyZXR1cm4gcmV0OworCisJZGV2ID0gKmRldl9wOworCisJd2hpbGUgKChyZXQgPSBwYXJzZV90YWcoY2FjaGUsIGRldiwgJmNwKSkgPiAwKSB7CisJCTsKKwl9CisKKwlpZiAoZGV2LT5iaWRfdHlwZSA9PSBOVUxMKSB7CisJCURCRyhERUJVR19SRUFELAorCQkgICAgcHJpbnRmKCJibGtpZDogZGV2aWNlICVzIGhhcyBubyBUWVBFXG4iLGRldi0+YmlkX25hbWUpKTsKKwkJYmxraWRfZnJlZV9kZXYoZGV2KTsKKwl9CisKKwlEQkcoREVCVUdfUkVBRCwgYmxraWRfZGVidWdfZHVtcF9kZXYoZGV2KSk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogUGFyc2UgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgYW5kIHJldHVybiB0aGUgZGF0YSBpbiB0aGUgc3VwcGxpZWQgb3IKKyAqIGEgbmV3bHkgYWxsb2NhdGVkIGNhY2hlIHN0cnVjdC4gIElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIHJldHVybiBhCisgKiBuZXcgZW1wdHkgY2FjaGUgc3RydWN0LgorICovCit2b2lkIGJsa2lkX3JlYWRfY2FjaGUoYmxraWRfY2FjaGUgY2FjaGUpCit7CisJRklMRSAqZmlsZTsKKwljaGFyIGJ1Zls0MDk2XTsKKwlpbnQgZmQsIGxpbmVubyA9IDA7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoIWNhY2hlKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIHRoZW4gd2UganVzdCByZXR1cm4gYW4gZW1wdHkKKwkgKiBzdHJ1Y3Qgc28gdGhhdCB0aGUgY2FjaGUgY2FuIGJlIHBvcHVsYXRlZC4KKwkgKi8KKwlpZiAoKGZkID0gb3BlbihjYWNoZS0+YmljX2ZpbGVuYW1lLCBPX1JET05MWSkpIDwgMCkKKwkJcmV0dXJuOworCWlmIChmc3RhdChmZCwgJnN0KSA8IDApCisJCWdvdG8gZXJyb3V0OworCWlmICgoc3Quc3RfbXRpbWUgPT0gY2FjaGUtPmJpY19mdGltZSkgfHwKKwkgICAgKGNhY2hlLT5iaWNfZmxhZ3MgJiBCTEtJRF9CSUNfRkxfQ0hBTkdFRCkpIHsKKwkJREJHKERFQlVHX0NBQ0hFLCBwcmludGYoInNraXBwaW5nIHJlLXJlYWQgb2YgJXNcbiIsCisJCQkJCWNhY2hlLT5iaWNfZmlsZW5hbWUpKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJREJHKERFQlVHX0NBQ0hFLCBwcmludGYoInJlYWRpbmcgY2FjaGUgZmlsZSAlc1xuIiwKKwkJCQljYWNoZS0+YmljX2ZpbGVuYW1lKSk7CisKKwlmaWxlID0gZmRvcGVuKGZkLCAiciIpOworCWlmICghZmlsZSkKKwkJZ290byBlcnJvdXQ7CisKKwl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZmlsZSkpIHsKKwkJYmxraWRfZGV2IGRldjsKKwkJdW5zaWduZWQgaW50IGVuZDsKKworCQlsaW5lbm8rKzsKKwkJaWYgKGJ1ZlswXSA9PSAwKQorCQkJY29udGludWU7CisJCWVuZCA9IHN0cmxlbihidWYpIC0gMTsKKwkJLyogQ29udGludWUgcmVhZGluZyBuZXh0IGxpbmUgaWYgaXQgZW5kcyB3aXRoIGEgYmFja3NsYXNoICovCisJCXdoaWxlIChidWZbZW5kXSA9PSAnXFwnICYmIGVuZCA8IHNpemVvZihidWYpIC0gMiAmJgorCQkgICAgICAgZmdldHMoYnVmICsgZW5kLCBzaXplb2YoYnVmKSAtIGVuZCwgZmlsZSkpIHsKKwkJCWVuZCA9IHN0cmxlbihidWYpIC0gMTsKKwkJCWxpbmVubysrOworCQl9CisKKwkJaWYgKGJsa2lkX3BhcnNlX2xpbmUoY2FjaGUsICZkZXYsIGJ1ZikgPCAwKSB7CisJCQlEQkcoREVCVUdfUkVBRCwKKwkJCSAgICBwcmludGYoImJsa2lkOiBiYWQgZm9ybWF0IG9uIGxpbmUgJWRcbiIsIGxpbmVubykpOworCQkJY29udGludWU7CisJCX0KKwl9CisJZmNsb3NlKGZpbGUpOworCisJLyoKKwkgKiBJbml0aWFsbHkgd2UgZG8gbm90IG5lZWQgdG8gd3JpdGUgb3V0IHRoZSBjYWNoZSBmaWxlLgorCSAqLworCWNhY2hlLT5iaWNfZmxhZ3MgJj0gfkJMS0lEX0JJQ19GTF9DSEFOR0VEOworCWNhY2hlLT5iaWNfZnRpbWUgPSBzdC5zdF9tdGltZTsKKworCXJldHVybjsKK2Vycm91dDoKKwljbG9zZShmZCk7CisJcmV0dXJuOworfQorCisjaWZkZWYgVEVTVF9QUk9HUkFNCitzdGF0aWMgdm9pZCBkZWJ1Z19kdW1wX2RldihibGtpZF9kZXYgZGV2KQoreworCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisKKwlpZiAoIWRldikgeworCQlwcmludGYoIiAgZGV2OiBOVUxMXG4iKTsKKwkJcmV0dXJuOworCX0KKworCXByaW50ZigiICBkZXY6IG5hbWUgPSAlc1xuIiwgZGV2LT5iaWRfbmFtZSk7CisJcHJpbnRmKCIgIGRldjogREVWTk89XCIweCUwbGx4XCJcbiIsIChsb25nIGxvbmcpZGV2LT5iaWRfZGV2bm8pOworCXByaW50ZigiICBkZXY6IFRJTUU9XCIlbGxkXCJcbiIsIChsb25nIGxvbmcpZGV2LT5iaWRfdGltZSk7CisJcHJpbnRmKCIgIGRldjogUFJJPVwiJWRcIlxuIiwgZGV2LT5iaWRfcHJpKTsKKwlwcmludGYoIiAgZGV2OiBmbGFncyA9IDB4JTA4WFxuIiwgZGV2LT5iaWRfZmxhZ3MpOworCisJbGlzdF9mb3JfZWFjaChwLCAmZGV2LT5iaWRfdGFncykgeworCQlibGtpZF90YWcgdGFnID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgYmxraWRfc3RydWN0X3RhZywgYml0X3RhZ3MpOworCQlpZiAodGFnKQorCQkJcHJpbnRmKCIgICAgdGFnOiAlcz1cIiVzXCJcbiIsIHRhZy0+Yml0X25hbWUsCisJCQkgICAgICAgdGFnLT5iaXRfdmFsKTsKKwkJZWxzZQorCQkJcHJpbnRmKCIgICAgdGFnOiBOVUxMXG4iKTsKKwl9CisJcHJpbnRmKCJcbiIpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqYXJndikKK3sKKwlibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisJaW50IHJldDsKKworCWJsa2lkX2RlYnVnX21hc2sgPSBERUJVR19BTEw7CisJaWYgKGFyZ2MgPiAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFtmaWxlbmFtZV1cbiIKKwkJCSJUZXN0IHBhcnNpbmcgb2YgdGhlIGNhY2hlIChmaWxlbmFtZSlcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKwlpZiAoKHJldCA9IGJsa2lkX2dldF9jYWNoZSgmY2FjaGUsIGFyZ3ZbMV0pKSA8IDApCisJCWZwcmludGYoc3RkZXJyLCAiZXJyb3IgJWQgcmVhZGluZyBjYWNoZSBmaWxlICVzXG4iLCByZXQsCisJCQlhcmd2WzFdID8gYXJndlsxXSA6IEJMS0lEX0NBQ0hFX0ZJTEUpOworCisJYmxraWRfcHV0X2NhY2hlKGNhY2hlKTsKKworCXJldHVybiByZXQ7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvcmVzb2x2ZS5jIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC9yZXNvbHZlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JjMzdiMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvcmVzb2x2ZS5jCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogcmVzb2x2ZS5jIC0gcmVzb2x2ZSBuYW1lcyBhbmQgdGFncyBpbnRvIHNwZWNpZmljIGRldmljZXMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMgVGhlb2RvcmUgVHMnby4KKyAqIENvcHlyaWdodCAoQykgMjAwMSBBbmRyZWFzIERpbGdlcgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgImJsa2lkUC5oIgorCisvKgorICogRmluZCBhIHRhZ25hbWUgKGUuZy4gTEFCRUwgb3IgVVVJRCkgb24gYSBzcGVjaWZpYyBkZXZpY2UuCisgKi8KK2NoYXIgKmJsa2lkX2dldF90YWdfdmFsdWUoYmxraWRfY2FjaGUgY2FjaGUsIGNvbnN0IGNoYXIgKnRhZ25hbWUsCisJCQkgIGNvbnN0IGNoYXIgKmRldm5hbWUpCit7CisJYmxraWRfdGFnIGZvdW5kOworCWJsa2lkX2RldiBkZXY7CisJYmxraWRfY2FjaGUgYyA9IGNhY2hlOworCWNoYXIgKnJldCA9IE5VTEw7CisKKwlEQkcoREVCVUdfUkVTT0xWRSwgcHJpbnRmKCJsb29raW5nIGZvciAlcyBvbiAlc1xuIiwgdGFnbmFtZSwgZGV2bmFtZSkpOworCisJaWYgKCFkZXZuYW1lKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghY2FjaGUpIHsKKwkJaWYgKGJsa2lkX2dldF9jYWNoZSgmYywgTlVMTCkgPCAwKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYgKChkZXYgPSBibGtpZF9nZXRfZGV2KGMsIGRldm5hbWUsIEJMS0lEX0RFVl9OT1JNQUwpKSAmJgorCSAgICAoZm91bmQgPSBibGtpZF9maW5kX3RhZ19kZXYoZGV2LCB0YWduYW1lKSkpCisJCXJldCA9IGJsa2lkX3N0cmR1cChmb3VuZC0+Yml0X3ZhbCk7CisKKwlpZiAoIWNhY2hlKQorCQlibGtpZF9wdXRfY2FjaGUoYyk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogTG9jYXRlIGEgZGV2aWNlIG5hbWUgZnJvbSBhIHRva2VuIChOQU1FPXZhbHVlIHN0cmluZyksIG9yIChuYW1lLCB2YWx1ZSkKKyAqIHBhaXIuICBJbiB0aGUgY2FzZSBvZiBhIHRva2VuLCB2YWx1ZSBpcyBpZ25vcmVkLiAgSWYgdGhlICJ0b2tlbiIgaXMgbm90CisgKiBvZiB0aGUgZm9ybSAiTkFNRT12YWx1ZSIgYW5kIHRoZXJlIGlzIG5vIHZhbHVlIGdpdmVuLCB0aGVuIGl0IGlzIGFzc3VtZWQKKyAqIHRvIGJlIHRoZSBhY3R1YWwgZGV2bmFtZSBhbmQgYSBjb3B5IGlzIHJldHVybmVkLgorICovCitjaGFyICpibGtpZF9nZXRfZGV2bmFtZShibGtpZF9jYWNoZSBjYWNoZSwgY29uc3QgY2hhciAqdG9rZW4sCisJCQljb25zdCBjaGFyICp2YWx1ZSkKK3sKKwlibGtpZF9kZXYgZGV2OworCWJsa2lkX2NhY2hlIGMgPSBjYWNoZTsKKwljaGFyICp0ID0gMCwgKnYgPSAwOworCWNoYXIgKnJldCA9IE5VTEw7CisKKwlpZiAoIXRva2VuKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghY2FjaGUpIHsKKwkJaWYgKGJsa2lkX2dldF9jYWNoZSgmYywgTlVMTCkgPCAwKQorCQkJcmV0dXJuIE5VTEw7CisJfQorCisJREJHKERFQlVHX1JFU09MVkUsCisJICAgIHByaW50ZigibG9va2luZyBmb3IgJXMlcyVzICVzXG4iLCB0b2tlbiwgdmFsdWUgPyAiPSIgOiAiIiwKKwkJICAgdmFsdWUgPyB2YWx1ZSA6ICIiLCBjYWNoZSA/ICJpbiBjYWNoZSIgOiAiZnJvbSBkaXNrIikpOworCisJaWYgKCF2YWx1ZSkgeworCQlpZiAoIXN0cmNocih0b2tlbiwgJz0nKSkgeworCQkJcmV0ID0gYmxraWRfc3RyZHVwKHRva2VuKTsKKwkJCWdvdG8gb3V0OworCQl9CisJCWJsa2lkX3BhcnNlX3RhZ19zdHJpbmcodG9rZW4sICZ0LCAmdik7CisJCWlmICghdCB8fCAhdikKKwkJCWdvdG8gb3V0OworCQl0b2tlbiA9IHQ7CisJCXZhbHVlID0gdjsKKwl9CisKKwlkZXYgPSBibGtpZF9maW5kX2Rldl93aXRoX3RhZyhjLCB0b2tlbiwgdmFsdWUpOworCWlmICghZGV2KQorCQlnb3RvIG91dDsKKworCXJldCA9IGJsa2lkX3N0cmR1cChibGtpZF9kZXZfZGV2bmFtZShkZXYpKTsKKworb3V0OgorCWZyZWUodCk7CisJZnJlZSh2KTsKKwlpZiAoIWNhY2hlKSB7CisJCWJsa2lkX3B1dF9jYWNoZShjKTsKKwl9CisJcmV0dXJuIChyZXQpOworfQorCisjaWZkZWYgVEVTVF9QUk9HUkFNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY2hhciAqdmFsdWU7CisJYmxraWRfY2FjaGUgY2FjaGU7CisKKwlibGtpZF9kZWJ1Z19tYXNrID0gREVCVUdfQUxMOworCWlmIChhcmdjICE9IDIgJiYgYXJnYyAhPSAzKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6XHQlcyB0YWduYW1lPXZhbHVlXG4iCisJCQkiXHQlcyB0YWduYW1lIGRldm5hbWVcbiIKKwkJCSJGaW5kIHdoaWNoIGRldmljZSBob2xkcyBhIGdpdmVuIHRva2VuIG9yXG4iCisJCQkiRmluZCB3aGF0IHRoZSB2YWx1ZSBvZiBhIHRhZyBpcyBpbiBhIGRldmljZVxuIiwKKwkJCWFyZ3ZbMF0sIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKwlpZiAoYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgIi9kZXYvbnVsbCIpIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkbid0IGdldCBibGtpZCBjYWNoZVxuIik7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGFyZ3ZbMl0pIHsKKwkJdmFsdWUgPSBibGtpZF9nZXRfdGFnX3ZhbHVlKGNhY2hlLCBhcmd2WzFdLCBhcmd2WzJdKTsKKwkJcHJpbnRmKCIlcyBoYXMgdGFnICVzPSVzXG4iLCBhcmd2WzJdLCBhcmd2WzFdLAorCQkgICAgICAgdmFsdWUgPyB2YWx1ZSA6ICI8bWlzc2luZz4iKTsKKwl9IGVsc2UgeworCQl2YWx1ZSA9IGJsa2lkX2dldF9kZXZuYW1lKGNhY2hlLCBhcmd2WzFdLCBOVUxMKTsKKwkJcHJpbnRmKCIlcyBoYXMgdGFnICVzXG4iLCB2YWx1ZSA/IHZhbHVlIDogIjxub25lPiIsIGFyZ3ZbMV0pOworCX0KKwlibGtpZF9wdXRfY2FjaGUoY2FjaGUpOworCXJldHVybiB2YWx1ZSA/IDAgOiAxOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3NhdmUuYyBiL2UyZnNwcm9ncy9saWIvYmxraWQvc2F2ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MmZmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3NhdmUuYwpAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIHNhdmUuYyAtIHdyaXRlIHRoZSBjYWNoZSBzdHJ1Y3QgdG8gZGlzaworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBieSBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAzIFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19NS0RFVl9ICisjaW5jbHVkZSA8c3lzL21rZGV2Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSAiYmxraWRQLmgiCisKK3N0YXRpYyBpbnQgc2F2ZV9kZXYoYmxraWRfZGV2IGRldiwgRklMRSAqZmlsZSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOworCisJaWYgKCFkZXYgfHwgZGV2LT5iaWRfbmFtZVswXSAhPSAnLycpCisJCXJldHVybiAwOworCisJREJHKERFQlVHX1NBVkUsCisJICAgIHByaW50ZigiZGV2aWNlICVzLCB0eXBlICVzXG4iLCBkZXYtPmJpZF9uYW1lLCBkZXYtPmJpZF90eXBlID8KKwkJICAgZGV2LT5iaWRfdHlwZSA6ICIobnVsbCkiKSk7CisKKwlmcHJpbnRmKGZpbGUsCisJCSI8ZGV2aWNlIERFVk5PPVwiMHglMDRseFwiIFRJTUU9XCIlbGRcIiIsCisJCSh1bnNpZ25lZCBsb25nKSBkZXYtPmJpZF9kZXZubywgKGxvbmcpIGRldi0+YmlkX3RpbWUpOworCWlmIChkZXYtPmJpZF9wcmkpCisJCWZwcmludGYoZmlsZSwgIiBQUkk9XCIlZFwiIiwgZGV2LT5iaWRfcHJpKTsKKwlsaXN0X2Zvcl9lYWNoKHAsICZkZXYtPmJpZF90YWdzKSB7CisJCWJsa2lkX3RhZyB0YWcgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnLCBiaXRfdGFncyk7CisJCWZwcmludGYoZmlsZSwgIiAlcz1cIiVzXCIiLCB0YWctPmJpdF9uYW1lLHRhZy0+Yml0X3ZhbCk7CisJfQorCWZwcmludGYoZmlsZSwgIj4lczwvZGV2aWNlPlxuIiwgZGV2LT5iaWRfbmFtZSk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFdyaXRlIG91dCB0aGUgY2FjaGUgc3RydWN0IHRvIHRoZSBjYWNoZSBmaWxlIG9uIGRpc2suCisgKi8KK2ludCBibGtpZF9mbHVzaF9jYWNoZShibGtpZF9jYWNoZSBjYWNoZSkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOworCWNoYXIgKnRtcCA9IE5VTEw7CisJY29uc3QgY2hhciAqb3BlbmVkID0gTlVMTDsKKwljb25zdCBjaGFyICpmaWxlbmFtZTsKKwlGSUxFICpmaWxlID0gTlVMTDsKKwlpbnQgZmQsIHJldCA9IDA7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoIWNhY2hlKQorCQlyZXR1cm4gLUJMS0lEX0VSUl9QQVJBTTsKKworCWlmIChsaXN0X2VtcHR5KCZjYWNoZS0+YmljX2RldnMpIHx8CisJICAgICEoY2FjaGUtPmJpY19mbGFncyAmIEJMS0lEX0JJQ19GTF9DSEFOR0VEKSkgeworCQlEQkcoREVCVUdfU0FWRSwgcHJpbnRmKCJza2lwcGluZyBjYWNoZSBmaWxlIHdyaXRlXG4iKSk7CisJCXJldHVybiAwOworCX0KKworCWZpbGVuYW1lID0gY2FjaGUtPmJpY19maWxlbmFtZSA/IGNhY2hlLT5iaWNfZmlsZW5hbWU6IEJMS0lEX0NBQ0hFX0ZJTEU7CisKKwkvKiBJZiB3ZSBjYW4ndCB3cml0ZSB0byB0aGUgY2FjaGUgZmlsZSwgdGhlbiBkb24ndCBldmVuIHRyeSAqLworCWlmICgoKHJldCA9IHN0YXQoZmlsZW5hbWUsICZzdCkpIDwgMCAmJiBlcnJubyAhPSBFTk9FTlQpIHx8CisJICAgIChyZXQgPT0gMCAmJiBhY2Nlc3MoZmlsZW5hbWUsIFdfT0spIDwgMCkpIHsKKwkJREJHKERFQlVHX1NBVkUsCisJCSAgICBwcmludGYoImNhbid0IHdyaXRlIHRvIGNhY2hlIGZpbGUgJXNcbiIsIGZpbGVuYW1lKSk7CisJCXJldHVybiAwOworCX0KKworCS8qCisJICogVHJ5IGFuZCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnkgc28KKwkgKiB0aGF0IGluIGNhc2Ugb2YgZXJyb3Igd2UgZG9uJ3Qgb3ZlcndyaXRlIHRoZSBjYWNoZSBmaWxlLgorCSAqIElmIHRoZSBjYWNoZSBmaWxlIGRvZXNuJ3QgeWV0IGV4aXN0LCBpdCBpc24ndCBhIHJlZ3VsYXIKKwkgKiBmaWxlIChlLmcuIC9kZXYvbnVsbCBvciBhIHNvY2tldCksIG9yIHdlIGNvdWxkbid0IGNyZWF0ZQorCSAqIGEgdGVtcG9yYXJ5IGZpbGUgdGhlbiB3ZSBvcGVuIGl0IGRpcmVjdGx5LgorCSAqLworCWlmIChyZXQgPT0gMCAmJiBTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisJCXRtcCA9IG1hbGxvYyhzdHJsZW4oZmlsZW5hbWUpICsgOCk7CisJCWlmICh0bXApIHsKKwkJCW1vZGVfdCBzYXZlX3VtYXNrID0gdW1hc2soMDIyKTsKKwkJCXNwcmludGYodG1wLCAiJXMtWFhYWFhYIiwgZmlsZW5hbWUpOworCQkJZmQgPSBta3N0ZW1wKHRtcCk7CisJCQl1bWFzayhzYXZlX3VtYXNrKTsKKwkJCWlmIChmZCA+PSAwKSB7CisJCQkJZmlsZSA9IGZkb3BlbihmZCwgInciKTsKKwkJCQlvcGVuZWQgPSB0bXA7CisJCQl9CisJCQlmY2htb2QoZmQsIDA2NDQpOworCQl9CisJfQorCisJaWYgKCFmaWxlKSB7CisJCWZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInciKTsKKwkJb3BlbmVkID0gZmlsZW5hbWU7CisJfQorCisJREJHKERFQlVHX1NBVkUsCisJICAgIHByaW50Zigid3JpdGluZyBjYWNoZSBmaWxlICVzIChyZWFsbHkgJXMpXG4iLAorCQkgICBmaWxlbmFtZSwgb3BlbmVkKSk7CisKKwlpZiAoIWZpbGUpIHsKKwkJcmV0ID0gZXJybm87CisJCWdvdG8gZXJyb3V0OworCX0KKworCWxpc3RfZm9yX2VhY2gocCwgJmNhY2hlLT5iaWNfZGV2cykgeworCQlibGtpZF9kZXYgZGV2ID0gbGlzdF9lbnRyeShwLCBzdHJ1Y3QgYmxraWRfc3RydWN0X2RldiwgYmlkX2RldnMpOworCQlpZiAoIWRldi0+YmlkX3R5cGUpCisJCQljb250aW51ZTsKKwkJaWYgKChyZXQgPSBzYXZlX2RldihkZXYsIGZpbGUpKSA8IDApCisJCQlicmVhazsKKwl9CisKKwlpZiAocmV0ID49IDApIHsKKwkJY2FjaGUtPmJpY19mbGFncyAmPSB+QkxLSURfQklDX0ZMX0NIQU5HRUQ7CisJCXJldCA9IDE7CisJfQorCisJZmNsb3NlKGZpbGUpOworCWlmIChvcGVuZWQgIT0gZmlsZW5hbWUpIHsKKwkJaWYgKHJldCA8IDApIHsKKwkJCSh2b2lkKSB1bmxpbmsob3BlbmVkKTsKKwkJCURCRyhERUJVR19TQVZFLAorCQkJICAgIHByaW50ZigidW5saW5rZWQgdGVtcCBjYWNoZSAlc1xuIiwgb3BlbmVkKSk7CisJCX0gZWxzZSB7CisJCQljaGFyICpiYWNrdXA7CisKKwkJCWJhY2t1cCA9IG1hbGxvYyhzdHJsZW4oZmlsZW5hbWUpICsgNSk7CisJCQlpZiAoYmFja3VwKSB7CisJCQkJc3ByaW50ZihiYWNrdXAsICIlcy5vbGQiLCBmaWxlbmFtZSk7CisJCQkJdW5saW5rKGJhY2t1cCk7CisJCQkJKHZvaWQpIGxpbmsoZmlsZW5hbWUsIGJhY2t1cCk7CisJCQkJZnJlZShiYWNrdXApOworCQkJfQorCQkJaWYgKHJlbmFtZShvcGVuZWQsIGZpbGVuYW1lKSA8IDApCisJCQkJKHZvaWQpIHVubGluayhvcGVuZWQpOworCQkJREJHKERFQlVHX1NBVkUsCisJCQkgICAgcHJpbnRmKCJtb3ZlZCB0ZW1wIGNhY2hlICVzXG4iLCBvcGVuZWQpKTsKKwkJfQorCX0KKworZXJyb3V0OgorCWZyZWUodG1wKTsKKwlyZXR1cm4gcmV0OworfQorCisjaWZkZWYgVEVTVF9QUk9HUkFNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJYmxraWRfY2FjaGUgY2FjaGUgPSBOVUxMOworCWludCByZXQ7CisKKwlibGtpZF9kZWJ1Z19tYXNrID0gREVCVUdfQUxMOworCWlmIChhcmdjID4gMikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbZmlsZW5hbWVdXG4iCisJCQkiVGVzdCBsb2FkaW5nL3NhdmluZyBhIGNhY2hlIChmaWxlbmFtZSlcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCWlmICgocmV0ID0gYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgIi9kZXYvbnVsbCIpKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIGNyZWF0aW5nIGNhY2hlICglZClcbiIsCisJCQlhcmd2WzBdLCByZXQpOworCQlleGl0KDEpOworCX0KKwlpZiAoKHJldCA9IGJsa2lkX3Byb2JlX2FsbChjYWNoZSkpIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yICglZCkgcHJvYmluZyBkZXZpY2VzXG4iLCByZXQpOworCQlleGl0KDEpOworCX0KKwljYWNoZS0+YmljX2ZpbGVuYW1lID0gYmxraWRfc3RyZHVwKGFyZ3ZbMV0pOworCisJaWYgKChyZXQgPSBibGtpZF9mbHVzaF9jYWNoZShjYWNoZSkpIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yICglZCkgc2F2aW5nIGNhY2hlXG4iLCByZXQpOworCQlleGl0KDEpOworCX0KKworCWJsa2lkX3B1dF9jYWNoZShjYWNoZSk7CisKKwlyZXR1cm4gcmV0OworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3RhZy5jIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90YWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWFlN2RmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90YWcuYwpAQCAtMCwwICsxLDQ3MSBAQAorLyoKKyAqIHRhZy5jIC0gYWxsb2NhdGlvbi9pbml0aWFsaXphdGlvbi9mcmVlIHJvdXRpbmVzIGZvciB0YWcgc3RydWN0cworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBBbmRyZWFzIERpbGdlcgorICogQ29weXJpZ2h0IChDKSAyMDAzIFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKyAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiYmxraWRQLmgiCisKK3N0YXRpYyBibGtpZF90YWcgYmxraWRfbmV3X3RhZyh2b2lkKQoreworCWJsa2lkX3RhZyB0YWc7CisKKwlpZiAoISh0YWcgPSAoYmxraWRfdGFnKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnKSkpKQorCQlyZXR1cm4gTlVMTDsKKworCUlOSVRfTElTVF9IRUFEKCZ0YWctPmJpdF90YWdzKTsKKwlJTklUX0xJU1RfSEVBRCgmdGFnLT5iaXRfbmFtZXMpOworCisJcmV0dXJuIHRhZzsKK30KKworI2lmZGVmIENPTkZJR19CTEtJRF9ERUJVRwordm9pZCBibGtpZF9kZWJ1Z19kdW1wX3RhZyhibGtpZF90YWcgdGFnKQoreworCWlmICghdGFnKSB7CisJCXByaW50ZigiICAgIHRhZzogTlVMTFxuIik7CisJCXJldHVybjsKKwl9CisKKwlwcmludGYoIiAgICB0YWc6ICVzPVwiJXNcIlxuIiwgdGFnLT5iaXRfbmFtZSwgdGFnLT5iaXRfdmFsKTsKK30KKyNlbmRpZgorCit2b2lkIGJsa2lkX2ZyZWVfdGFnKGJsa2lkX3RhZyB0YWcpCit7CisJaWYgKCF0YWcpCisJCXJldHVybjsKKworCURCRyhERUJVR19UQUcsIHByaW50ZigiICAgIGZyZWVpbmcgdGFnICVzPSVzXG4iLCB0YWctPmJpdF9uYW1lLAorCQkgICB0YWctPmJpdF92YWwgPyB0YWctPmJpdF92YWwgOiAiKE5VTEwpIikpOworCURCRyhERUJVR19UQUcsIGJsa2lkX2RlYnVnX2R1bXBfdGFnKHRhZykpOworCisJbGlzdF9kZWwoJnRhZy0+Yml0X3RhZ3MpOwkvKiBsaXN0IG9mIHRhZ3MgZm9yIHRoaXMgZGV2aWNlICovCisJbGlzdF9kZWwoJnRhZy0+Yml0X25hbWVzKTsJLyogbGlzdCBvZiB0YWdzIHdpdGggdGhpcyB0eXBlICovCisKKwlmcmVlKHRhZy0+Yml0X25hbWUpOworCWZyZWUodGFnLT5iaXRfdmFsKTsKKworCWZyZWUodGFnKTsKK30KKworLyoKKyAqIEZpbmQgdGhlIGRlc2lyZWQgdGFnIG9uIGEgZGV2aWNlLiAgSWYgdmFsdWUgaXMgTlVMTCwgdGhlbiB0aGUKKyAqIGZpcnN0IHN1Y2ggdGFnIGlzIHJldHVybmVkLCBvdGhlcndpc2UgcmV0dXJuIG9ubHkgZXhhY3QgdGFnIGlmIGZvdW5kLgorICovCitibGtpZF90YWcgYmxraWRfZmluZF90YWdfZGV2KGJsa2lkX2RldiBkZXYsIGNvbnN0IGNoYXIgKnR5cGUpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqcDsKKworCWlmICghZGV2IHx8ICF0eXBlKQorCQlyZXR1cm4gTlVMTDsKKworCWxpc3RfZm9yX2VhY2gocCwgJmRldi0+YmlkX3RhZ3MpIHsKKwkJYmxraWRfdGFnIHRtcCA9IGxpc3RfZW50cnkocCwgc3RydWN0IGJsa2lkX3N0cnVjdF90YWcsCisJCQkJCSAgIGJpdF90YWdzKTsKKworCQlpZiAoIXN0cmNtcCh0bXAtPmJpdF9uYW1lLCB0eXBlKSkKKwkJCXJldHVybiB0bXA7CisJfQorCXJldHVybiBOVUxMOworfQorCitleHRlcm4gaW50IGJsa2lkX2Rldl9oYXNfdGFnKGJsa2lkX2RldiBkZXYsIGNvbnN0IGNoYXIgKnR5cGUsCisJCQkgICAgIGNvbnN0IGNoYXIgKnZhbHVlKQoreworCWJsa2lkX3RhZwkJdGFnOworCisJaWYgKCFkZXYgfHwgIXR5cGUpCisJCXJldHVybiAtMTsKKworCXRhZyA9IGJsa2lkX2ZpbmRfdGFnX2RldihkZXYsIHR5cGUpOworCWlmICghdmFsdWUpCisJCXJldHVybiAodGFnICE9IE5VTEwpOworCWlmICghdGFnIHx8IHN0cmNtcCh0YWctPmJpdF92YWwsIHZhbHVlKSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBkZXNpcmVkIHRhZyB0eXBlIGluIHRoZSBjYWNoZS4KKyAqIFdlIHJldHVybiB0aGUgaGVhZCB0YWcgZm9yIHRoaXMgdGFnIHR5cGUuCisgKi8KK3N0YXRpYyBibGtpZF90YWcgYmxraWRfZmluZF9oZWFkX2NhY2hlKGJsa2lkX2NhY2hlIGNhY2hlLCBjb25zdCBjaGFyICp0eXBlKQoreworCWJsa2lkX3RhZyBoZWFkID0gTlVMTCwgdG1wOworCXN0cnVjdCBsaXN0X2hlYWQgKnA7CisKKwlpZiAoIWNhY2hlIHx8ICF0eXBlKQorCQlyZXR1cm4gTlVMTDsKKworCWxpc3RfZm9yX2VhY2gocCwgJmNhY2hlLT5iaWNfdGFncykgeworCQl0bXAgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnLCBiaXRfdGFncyk7CisJCWlmICghc3RyY21wKHRtcC0+Yml0X25hbWUsIHR5cGUpKSB7CisJCQlEQkcoREVCVUdfVEFHLAorCQkJICAgIHByaW50ZigiICAgIGZvdW5kIGNhY2hlIHRhZyBoZWFkICVzXG4iLCB0eXBlKSk7CisJCQloZWFkID0gdG1wOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIGhlYWQ7Cit9CisKKy8qCisgKiBTZXQgYSB0YWcgb24gYW4gZXhpc3RpbmcgZGV2aWNlLgorICoKKyAqIElmIHZhbHVlIGlzIE5VTEwsIHRoZW4gZGVsZXRlIHRoZSB0YWdzZnJvbSB0aGUgZGV2aWNlLgorICovCitpbnQgYmxraWRfc2V0X3RhZyhibGtpZF9kZXYgZGV2LCBjb25zdCBjaGFyICpuYW1lLAorCQkgIGNvbnN0IGNoYXIgKnZhbHVlLCBjb25zdCBpbnQgdmxlbmd0aCkKK3sKKwlibGtpZF90YWcJdCA9IDAsIGhlYWQgPSAwOworCWNoYXIJCSp2YWwgPSAwOworCWNoYXIJCSoqZGV2X3ZhciA9IDA7CisKKwlpZiAoIWRldiB8fCAhbmFtZSkKKwkJcmV0dXJuIC1CTEtJRF9FUlJfUEFSQU07CisKKwlpZiAoISh2YWwgPSBibGtpZF9zdHJuZHVwKHZhbHVlLCB2bGVuZ3RoKSkgJiYgdmFsdWUpCisJCXJldHVybiAtQkxLSURfRVJSX01FTTsKKworCS8qCisJICogQ2VydGFpbiBjb21tb24gdGFncyBhcmUgbGlua2VkIGRpcmVjdGx5IHRvIHRoZSBkZXZpY2Ugc3RydWN0CisJICogV2UgbmVlZCB0byBrbm93IHdoYXQgdGhleSBhcmUgYmVmb3JlIHdlIGRvIGFueXRoaW5nIGVsc2UgYmVjYXVzZQorCSAqIHRoZSBmdW5jdGlvbiBuYW1lIHBhcmFtZXRlciBtaWdodCBnZXQgZnJlZWQgbGF0ZXIgb24uCisJICovCisJaWYgKCFzdHJjbXAobmFtZSwgIlRZUEUiKSkKKwkJZGV2X3ZhciA9ICZkZXYtPmJpZF90eXBlOworCWVsc2UgaWYgKCFzdHJjbXAobmFtZSwgIkxBQkVMIikpCisJCWRldl92YXIgPSAmZGV2LT5iaWRfbGFiZWw7CisJZWxzZSBpZiAoIXN0cmNtcChuYW1lLCAiVVVJRCIpKQorCQlkZXZfdmFyID0gJmRldi0+YmlkX3V1aWQ7CisKKwl0ID0gYmxraWRfZmluZF90YWdfZGV2KGRldiwgbmFtZSk7CisJaWYgKCF2YWx1ZSkgeworCQlpZiAodCkKKwkJCWJsa2lkX2ZyZWVfdGFnKHQpOworCX0gZWxzZSBpZiAodCkgeworCQlpZiAoIXN0cmNtcCh0LT5iaXRfdmFsLCB2YWwpKSB7CisJCQkvKiBTYW1lIHRoaW5nLCBleGl0ICovCisJCQlmcmVlKHZhbCk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlmcmVlKHQtPmJpdF92YWwpOworCQl0LT5iaXRfdmFsID0gdmFsOworCX0gZWxzZSB7CisJCS8qIEV4aXN0aW5nIHRhZyBub3QgcHJlc2VudCwgYWRkIHRvIGRldmljZSAqLworCQlpZiAoISh0ID0gYmxraWRfbmV3X3RhZygpKSkKKwkJCWdvdG8gZXJyb3V0OworCQl0LT5iaXRfbmFtZSA9IGJsa2lkX3N0cmR1cChuYW1lKTsKKwkJdC0+Yml0X3ZhbCA9IHZhbDsKKwkJdC0+Yml0X2RldiA9IGRldjsKKworCQlsaXN0X2FkZF90YWlsKCZ0LT5iaXRfdGFncywgJmRldi0+YmlkX3RhZ3MpOworCisJCWlmIChkZXYtPmJpZF9jYWNoZSkgeworCQkJaGVhZCA9IGJsa2lkX2ZpbmRfaGVhZF9jYWNoZShkZXYtPmJpZF9jYWNoZSwKKwkJCQkJCSAgICAgdC0+Yml0X25hbWUpOworCQkJaWYgKCFoZWFkKSB7CisJCQkJaGVhZCA9IGJsa2lkX25ld190YWcoKTsKKwkJCQlpZiAoIWhlYWQpCisJCQkJCWdvdG8gZXJyb3V0OworCisJCQkJREJHKERFQlVHX1RBRywKKwkJCQkgICAgcHJpbnRmKCIgICAgY3JlYXRpbmcgbmV3IGNhY2hlIHRhZyBoZWFkICVzXG4iLCBuYW1lKSk7CisJCQkJaGVhZC0+Yml0X25hbWUgPSBibGtpZF9zdHJkdXAobmFtZSk7CisJCQkJaWYgKCFoZWFkLT5iaXRfbmFtZSkKKwkJCQkJZ290byBlcnJvdXQ7CisJCQkJbGlzdF9hZGRfdGFpbCgmaGVhZC0+Yml0X3RhZ3MsCisJCQkJCSAgICAgICZkZXYtPmJpZF9jYWNoZS0+YmljX3RhZ3MpOworCQkJfQorCQkJbGlzdF9hZGRfdGFpbCgmdC0+Yml0X25hbWVzLCAmaGVhZC0+Yml0X25hbWVzKTsKKwkJfQorCX0KKworCS8qIExpbmsgY29tbW9uIHRhZ3MgZGlyZWN0bHkgdG8gdGhlIGRldmljZSBzdHJ1Y3QgKi8KKwlpZiAoZGV2X3ZhcikKKwkJKmRldl92YXIgPSB2YWw7CisKKwlpZiAoZGV2LT5iaWRfY2FjaGUpCisJCWRldi0+YmlkX2NhY2hlLT5iaWNfZmxhZ3MgfD0gQkxLSURfQklDX0ZMX0NIQU5HRUQ7CisJcmV0dXJuIDA7CisKK2Vycm91dDoKKwlpZiAodCkKKwkJYmxraWRfZnJlZV90YWcodCk7CisJZWxzZSBmcmVlKHZhbCk7CisJaWYgKGhlYWQpCisJCWJsa2lkX2ZyZWVfdGFnKGhlYWQpOworCXJldHVybiAtQkxLSURfRVJSX01FTTsKK30KKworCisvKgorICogUGFyc2UgYSAiTkFNRT12YWx1ZSIgc3RyaW5nLiAgVGhpcyBpcyBzbGlnaHRseSBkaWZmZXJlbnQgdGhhbgorICogcGFyc2VfdG9rZW4sIGJlY2F1c2UgdGhhdCB3aWxsIGVuZCBhbiB1bnF1b3RlZCB2YWx1ZSBhdCBhIHNwYWNlLCB3aGlsZQorICogdGhpcyB3aWxsIGFzc3VtZSB0aGF0IGFuIHVucXVvdGVkIHZhbHVlIGlzIHRoZSByZXN0IG9mIHRoZSB0b2tlbiAoZS5nLgorICogaWYgd2UgYXJlIHBhc3NlZCBhbiBhbHJlYWR5IHF1b3RlZCBzdHJpbmcgZnJvbSB0aGUgY29tbWFuZC1saW5lIHdlIGRvbid0CisgKiBoYXZlIHRvIGJvdGggcXVvdGUgYW5kIGVzY2FwZSBxdW90ZSBzbyB0aGF0IHRoZSBxdW90ZXMgbWFrZSBpdCB0bworICogdXMpLgorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBhbmQgLTEgb24gZmFpbHVyZS4KKyAqLworaW50IGJsa2lkX3BhcnNlX3RhZ19zdHJpbmcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKipyZXRfdHlwZSwgY2hhciAqKnJldF92YWwpCit7CisJY2hhciAqbmFtZSwgKnZhbHVlLCAqY3A7CisKKwlEQkcoREVCVUdfVEFHLCBwcmludGYoInRyeWluZyB0byBwYXJzZSAnJXMnIGFzIGEgdGFnXG4iLCB0b2tlbikpOworCisJaWYgKCF0b2tlbiB8fCAhKGNwID0gc3RyY2hyKHRva2VuLCAnPScpKSkKKwkJcmV0dXJuIC0xOworCisJbmFtZSA9IGJsa2lkX3N0cmR1cCh0b2tlbik7CisJaWYgKCFuYW1lKQorCQlyZXR1cm4gLTE7CisJdmFsdWUgPSBuYW1lICsgKGNwIC0gdG9rZW4pOworCSp2YWx1ZSsrID0gJ1wwJzsKKwlpZiAoKnZhbHVlID09ICciJyB8fCAqdmFsdWUgPT0gJ1wnJykgeworCQljaGFyIGMgPSAqdmFsdWUrKzsKKwkJaWYgKCEoY3AgPSBzdHJyY2hyKHZhbHVlLCBjKSkpCisJCQlnb3RvIGVycm91dDsgLyogbWlzc2luZyBjbG9zaW5nIHF1b3RlICovCisJCSpjcCA9ICdcMCc7CisJfQorCXZhbHVlID0gYmxraWRfc3RyZHVwKHZhbHVlKTsKKwlpZiAoIXZhbHVlKQorCQlnb3RvIGVycm91dDsKKworCSpyZXRfdHlwZSA9IG5hbWU7CisJKnJldF92YWwgPSB2YWx1ZTsKKworCXJldHVybiAwOworCitlcnJvdXQ6CisJZnJlZShuYW1lKTsKKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBUYWcgaXRlcmF0aW9uIHJvdXRpbmVzIGZvciB0aGUgcHVibGljIGxpYmJsa2lkIGludGVyZmFjZS4KKyAqCisgKiBUaGVzZSByb3V0aW5lcyBkbyBub3QgZXhwb3NlIHRoZSBsaXN0LmggaW1wbGVtZW50YXRpb24sIHdoaWNoIGFyZSBhCisgKiBjb250YW1pbmF0aW9uIG9mIHRoZSBuYW1lc3BhY2UsIGFuZCB3aGljaCBmb3JjZSB1cyB0byByZXZlYWwgZmFyLCBmYXIKKyAqIHRvbyBtdWNoIG9mIG91ciBpbnRlcm5hbCBpbXBsZW1lbmF0aW9uLiAgSSdtIG5vdCBjb252aW5jZWQgSSB3YW50CisgKiB0byBrZWVwIGxpc3QuaCBpbiB0aGUgbG9uZyB0ZXJtLCBhbnl3YXkuICBJdCdzIGZpbmUgZm9yIGtlcm5lbAorICogcHJvZ3JhbW1pbmcsIGJ1dCBwZXJmb3JtYW5jZSBpcyBub3QgdGhlICMxIHByaW9yaXR5IGZvciB0aGlzCisgKiBsaWJyYXJ5LCBhbmQgSSByZWFsbHkgZG9uJ3QgbGlrZSB0aGUgdHJhZGVvZmYgb2YgdHlwZS1zYWZldHkgZm9yCisgKiBwZXJmb3JtYW5jZSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gIFt0eXRzbzoyMDAzMDEyNS4yMDA3RVNUXQorICovCisKKy8qCisgKiBUaGlzIHNlcmllcyBvZiBmdW5jdGlvbnMgaXRlcmF0ZSBvdmVyIGFsbCB0YWdzIGluIGEgZGV2aWNlCisgKi8KKyNkZWZpbmUgVEFHX0lURVJBVEVfTUFHSUMJMHgwMWE1Mjg0YworCitzdHJ1Y3QgYmxraWRfc3RydWN0X3RhZ19pdGVyYXRlIHsKKwlpbnQJCQltYWdpYzsKKwlibGtpZF9kZXYJCWRldjsKKwlzdHJ1Y3QgbGlzdF9oZWFkCSpwOworfTsKKworZXh0ZXJuIGJsa2lkX3RhZ19pdGVyYXRlIGJsa2lkX3RhZ19pdGVyYXRlX2JlZ2luKGJsa2lkX2RldiBkZXYpCit7CisJYmxraWRfdGFnX2l0ZXJhdGUJaXRlcjsKKworCWl0ZXIgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnX2l0ZXJhdGUpKTsKKwlpZiAoaXRlcikgeworCQlpdGVyLT5tYWdpYyA9IFRBR19JVEVSQVRFX01BR0lDOworCQlpdGVyLT5kZXYgPSBkZXY7CisJCWl0ZXItPnAJPSBkZXYtPmJpZF90YWdzLm5leHQ7CisJfQorCXJldHVybiAoaXRlcik7Cit9CisKKy8qCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvcgorICovCitleHRlcm4gaW50IGJsa2lkX3RhZ19uZXh0KGJsa2lkX3RhZ19pdGVyYXRlIGl0ZXIsCisJCQkgIGNvbnN0IGNoYXIgKip0eXBlLCBjb25zdCBjaGFyICoqdmFsdWUpCit7CisJYmxraWRfdGFnIHRhZzsKKworCSp0eXBlID0gMDsKKwkqdmFsdWUgPSAwOworCWlmICghaXRlciB8fCBpdGVyLT5tYWdpYyAhPSBUQUdfSVRFUkFURV9NQUdJQyB8fAorCSAgICBpdGVyLT5wID09ICZpdGVyLT5kZXYtPmJpZF90YWdzKQorCQlyZXR1cm4gLTE7CisJdGFnID0gbGlzdF9lbnRyeShpdGVyLT5wLCBzdHJ1Y3QgYmxraWRfc3RydWN0X3RhZywgYml0X3RhZ3MpOworCSp0eXBlID0gdGFnLT5iaXRfbmFtZTsKKwkqdmFsdWUgPSB0YWctPmJpdF92YWw7CisJaXRlci0+cCA9IGl0ZXItPnAtPm5leHQ7CisJcmV0dXJuIDA7Cit9CisKK2V4dGVybiB2b2lkIGJsa2lkX3RhZ19pdGVyYXRlX2VuZChibGtpZF90YWdfaXRlcmF0ZSBpdGVyKQoreworCWlmICghaXRlciB8fCBpdGVyLT5tYWdpYyAhPSBUQUdfSVRFUkFURV9NQUdJQykKKwkJcmV0dXJuOworCWl0ZXItPm1hZ2ljID0gMDsKKwlmcmVlKGl0ZXIpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgZGV2aWNlIHdoaWNoIG1hdGNoZXMgYSBwYXJ0aWN1bGFyCisgKiB0eXBlL3ZhbHVlIHBhaXIuICBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRldmljZSB0aGF0IG1hdGNoZXMgdGhlCisgKiBzZWFyY2ggc3BlY2lmaWNhdGlvbiwgaXQgcmV0dXJucyB0aGUgb25lIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkKKyAqIHZhbHVlLiAgVGhpcyBhbGxvd3MgdXMgdG8gZ2l2ZSBwcmVmZXJlbmNlIHRvIEVWTVMgb3IgTFZNIGRldmljZXMuCisgKi8KK2V4dGVybiBibGtpZF9kZXYgYmxraWRfZmluZF9kZXZfd2l0aF90YWcoYmxraWRfY2FjaGUgY2FjaGUsCisJCQkJCSBjb25zdCBjaGFyICp0eXBlLAorCQkJCQkgY29uc3QgY2hhciAqdmFsdWUpCit7CisJYmxraWRfdGFnCWhlYWQ7CisJYmxraWRfZGV2CWRldjsKKwlpbnQJCXByaTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpwOworCWludAkJcHJvYmVfbmV3ID0gMDsKKworCWlmICghY2FjaGUgfHwgIXR5cGUgfHwgIXZhbHVlKQorCQlyZXR1cm4gTlVMTDsKKworCWJsa2lkX3JlYWRfY2FjaGUoY2FjaGUpOworCisJREJHKERFQlVHX1RBRywgcHJpbnRmKCJsb29raW5nIGZvciAlcz0lcyBpbiBjYWNoZVxuIiwgdHlwZSwgdmFsdWUpKTsKKwordHJ5X2FnYWluOgorCXByaSA9IC0xOworCWRldiA9IDA7CisJaGVhZCA9IGJsa2lkX2ZpbmRfaGVhZF9jYWNoZShjYWNoZSwgdHlwZSk7CisKKwlpZiAoaGVhZCkgeworCQlsaXN0X2Zvcl9lYWNoKHAsICZoZWFkLT5iaXRfbmFtZXMpIHsKKwkJCWJsa2lkX3RhZyB0bXAgPSBsaXN0X2VudHJ5KHAsIHN0cnVjdCBibGtpZF9zdHJ1Y3RfdGFnLAorCQkJCQkJICAgYml0X25hbWVzKTsKKworCQkJaWYgKCFzdHJjbXAodG1wLT5iaXRfdmFsLCB2YWx1ZSkgJiYKKwkJCSAgICAodG1wLT5iaXRfZGV2LT5iaWRfcHJpID4gcHJpKSAmJgorCQkJICAgICFhY2Nlc3ModG1wLT5iaXRfZGV2LT5iaWRfbmFtZSwgRl9PSykpIHsKKwkJCQlkZXYgPSB0bXAtPmJpdF9kZXY7CisJCQkJcHJpID0gZGV2LT5iaWRfcHJpOworCQkJfQorCQl9CisJfQorCWlmIChkZXYgJiYgIShkZXYtPmJpZF9mbGFncyAmIEJMS0lEX0JJRF9GTF9WRVJJRklFRCkpIHsKKwkJZGV2ID0gYmxraWRfdmVyaWZ5KGNhY2hlLCBkZXYpOworCQlpZiAoIWRldiB8fCAoZGV2ICYmIChkZXYtPmJpZF9mbGFncyAmIEJMS0lEX0JJRF9GTF9WRVJJRklFRCkpKQorCQkJZ290byB0cnlfYWdhaW47CisJfQorCisJaWYgKCFkZXYgJiYgIXByb2JlX25ldykgeworCQlpZiAoYmxraWRfcHJvYmVfYWxsX25ldyhjYWNoZSkgPCAwKQorCQkJcmV0dXJuIE5VTEw7CisJCXByb2JlX25ldysrOworCQlnb3RvIHRyeV9hZ2FpbjsKKwl9CisKKwlpZiAoIWRldiAmJiAhKGNhY2hlLT5iaWNfZmxhZ3MgJiBCTEtJRF9CSUNfRkxfUFJPQkVEKSkgeworCQlpZiAoYmxraWRfcHJvYmVfYWxsKGNhY2hlKSA8IDApCisJCQlyZXR1cm4gTlVMTDsKKwkJZ290byB0cnlfYWdhaW47CisJfQorCXJldHVybiBkZXY7Cit9CisKKyNpZmRlZiBURVNUX1BST0dSQU0KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisKK3ZvaWQgdXNhZ2UoY2hhciAqcHJvZykKK3sKKwlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbLWYgYmxraWRfZmlsZV0gWy1tIGRlYnVnX21hc2tdIGRldmljZSAiCisJCSJbdHlwZSB2YWx1ZV1cbiIsCisJCXByb2cpOworCWZwcmludGYoc3RkZXJyLCAiXHRMaXN0IGFsbCB0YWdzIGZvciBhIGRldmljZSBhbmQgZXhpdFxuIik7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWJsa2lkX3RhZ19pdGVyYXRlCWl0ZXI7CisJYmxraWRfY2FjaGUgCQljYWNoZSA9IE5VTEw7CisJYmxraWRfZGV2CQlkZXY7CisJaW50CQkJYywgcmV0LCBmb3VuZDsKKwlpbnQJCQlmbGFncyA9IEJMS0lEX0RFVl9GSU5EOworCWNoYXIJCQkqdG1wOworCWNoYXIJCQkqZmlsZSA9IE5VTEw7CisJY2hhcgkJCSpkZXZuYW1lID0gTlVMTDsKKwljaGFyCQkJKnNlYXJjaF90eXBlID0gTlVMTDsKKwljaGFyCQkJKnNlYXJjaF92YWx1ZSA9IE5VTEw7CisJY29uc3QgY2hhcgkJKnR5cGUsICp2YWx1ZTsKKworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgIm06ZjoiKSkgIT0gRU9GKQorCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnZic6CisJCQlmaWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ20nOgorCQkJYmxraWRfZGVidWdfbWFzayA9IHN0cnRvdWwgKG9wdGFyZywgJnRtcCwgMCk7CisJCQlpZiAoKnRtcCkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiSW52YWxpZCBkZWJ1ZyBtYXNrOiAlc1xuIiwKKwkJCQkJb3B0YXJnKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJz8nOgorCQkJdXNhZ2UoYXJndlswXSk7CisJCX0KKwlpZiAoYXJnYyA+IG9wdGluZCkKKwkJZGV2bmFtZSA9IGFyZ3Zbb3B0aW5kKytdOworCWlmIChhcmdjID4gb3B0aW5kKQorCQlzZWFyY2hfdHlwZSA9IGFyZ3Zbb3B0aW5kKytdOworCWlmIChhcmdjID4gb3B0aW5kKQorCQlzZWFyY2hfdmFsdWUgPSBhcmd2W29wdGluZCsrXTsKKwlpZiAoIWRldm5hbWUgfHwgKGFyZ2MgIT0gb3B0aW5kKSkKKwkJdXNhZ2UoYXJndlswXSk7CisKKwlpZiAoKHJldCA9IGJsa2lkX2dldF9jYWNoZSgmY2FjaGUsIGZpbGUpKSAhPSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIGNyZWF0aW5nIGNhY2hlICglZClcbiIsCisJCQlhcmd2WzBdLCByZXQpOworCQlleGl0KDEpOworCX0KKworCWRldiA9IGJsa2lkX2dldF9kZXYoY2FjaGUsIGRldm5hbWUsIGZsYWdzKTsKKwlpZiAoIWRldikgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBDYW4gbm90IGZpbmQgZGV2aWNlIGluIGJsa2lkIGNhY2hlXG4iLAorCQkJZGV2bmFtZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzZWFyY2hfdHlwZSkgeworCQlmb3VuZCA9IGJsa2lkX2Rldl9oYXNfdGFnKGRldiwgc2VhcmNoX3R5cGUsIHNlYXJjaF92YWx1ZSk7CisJCXByaW50ZigiRGV2aWNlICVzOiAoJXMsICVzKSAlc1xuIiwgYmxraWRfZGV2X2Rldm5hbWUoZGV2KSwKKwkJICAgICAgIHNlYXJjaF90eXBlLCBzZWFyY2hfdmFsdWUgPyBzZWFyY2hfdmFsdWUgOiAiTlVMTCIsCisJCSAgICAgICBmb3VuZCA/ICJGT1VORCIgOiAiTk9UIEZPVU5EIik7CisJCXJldHVybighZm91bmQpOworCX0KKwlwcmludGYoIkRldmljZSAlcy4uLlxuIiwgYmxraWRfZGV2X2Rldm5hbWUoZGV2KSk7CisKKwlpdGVyID0gYmxraWRfdGFnX2l0ZXJhdGVfYmVnaW4oZGV2KTsKKwl3aGlsZSAoYmxraWRfdGFnX25leHQoaXRlciwgJnR5cGUsICZ2YWx1ZSkgPT0gMCkgeworCQlwcmludGYoIlx0VGFnICVzIGhhcyB2YWx1ZSAlc1xuIiwgdHlwZSwgdmFsdWUpOworCX0KKwlibGtpZF90YWdfaXRlcmF0ZV9lbmQoaXRlcik7CisKKwlibGtpZF9wdXRfY2FjaGUoY2FjaGUpOworCXJldHVybiAoMCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdF9wcm9iZS5pbiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdF9wcm9iZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2IyOWEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0X3Byb2JlLmluCkBAIC0wLDAgKzEsNjIgQEAKKworVEVTVFM9JCoKKworaWYgdGVzdCAiJFRFU1RTInggPSB4IDsgdGhlbgorCWZvciBpIGluICRTUkNESVIvdGVzdHMvKi5pbWcuYnoyCisJZG8KKwkJVEVTVFM9IiRURVNUUyBgYmFzZW5hbWUgJGkgLmltZy5iejJgIgorCWRvbmUKK2ZpCisKK21rZGlyIC1wIHRlc3RzL3RtcAorCitmb3IgaSBpbiAkVEVTVFMKK2RvCisJcHJpbnRmICIlczogIiAkaQorCVJFU1VMVFM9JFNSQ0RJUi90ZXN0cy8kaS5yZXN1bHRzCisJSU1BR0VfQloyPSRTUkNESVIvdGVzdHMvJGkuaW1nLmJ6MgorCUlNQUdFPXRlc3RzL3RtcC8kaS5pbWcuJCQKKwlpZiB0ZXN0ICEgLWYgJElNQUdFX0JaMiAtYSAhIC1mICRSRVNVTFRTIDsKKwl0aGVuCisJCWVjaG8gIm5vbi1leGlzdGVudCIKKwkJY29udGludWUKKwlmaQorCWlmIFsgIiRpIiA9ICJzd2FwMCIgXSAmJiB3aGljaCBta3N3YXAgPiAvZGV2L251bGw7ICB0aGVuCisJCSMgc3dhcCBpcyBuYXRpdmUtZW5kaWFuLCBzbyByZWdlbmVyYXRlIGJlZm9yZSB0ZXN0aW5nCisJCWRkIGlmPS9kZXYvemVybyBvZj0kSU1BR0UgYnM9MTZrIGNvdW50PTY0IDI+IC9kZXYvbnVsbAorCQlta3N3YXAgLXYwICRJTUFHRSA+IC9kZXYvbnVsbAorCWVsaWYgWyAiJGkiID0gInN3YXAxIiBdICYmIHdoaWNoIG1rc3dhcCA+IC9kZXYvbnVsbDsgdGhlbgorCQkjIHN3YXAgaXMgbmF0aXZlLWVuZGlhbiwgc28gcmVnZW5lcmF0ZSBiZWZvcmUgdGVzdGluZworCQlkZCBpZj0vZGV2L3plcm8gb2Y9JElNQUdFIGJzPTE2ayBjb3VudD02NCAyPiAvZGV2L251bGwKKwkJIyBjaGVjayBpZiBta3N3YXAgc3VwcG9ydHMgdGhlICItVSIgb3B0aW9uCisJCWlmIG1rc3dhcCAtaCAyPiYxIHwgZ3JlcCAtcSAtLSAnLVUnOyB0aGVuCisJCQlVVUlEPSItVSA4ZmY4ZTc3Zi04NTUzLTQ4NWUtODY1Ni01OGJlNjdhODE2NjYiCisJCWVsc2UKKwkJCVJNVVVJRD0ifCBncmVwIC12IFVVSUQiCisJCQlSRVNfVE1QPSRTUkNESVIvdGVzdHMvdG1wLyRpLnJlc3VsdHMKKwkJCWdyZXAgLXYgVVVJRCAkUkVTVUxUUyA+ICRSRVNfVE1QCisJCQlSRVNVTFRTPSRSRVNfVE1QCisJCWZpCisJCW1rc3dhcCAtdjEgLUwgU1dBUC1URVNUICRVVUlEICRJTUFHRSA+L2Rldi9udWxsCisJZWxzZQorCQlidW56aXAyIDwgJElNQUdFX0JaMiA+ICRJTUFHRQorCWZpCisJZXZhbCAuL3RzdF9wcm9iZSAkSU1BR0UgJFJNVVVJRCA+IHRlc3RzLyRpLm91dAorCXJtIC1mICRJTUFHRSB0ZXN0cy8kaS5vayB0ZXN0cy8kaS5mYWlsZWQKKwljbXAgLXMgdGVzdHMvJGkub3V0ICRSRVNVTFRTCisJdW5zZXQgUk1VVUlECisJaWYgWyAkPyA9IDAgXTsgIHRoZW4KKwkJZWNobyBvaworCQl0b3VjaCB0ZXN0cy8kaS5vaworCWVsc2UJCisJCWVjaG8gZmFpbGVkCisJCWRpZmYgLWMgdGVzdHMvJGkub3V0ICRSRVNVTFRTID4gdGVzdHMvJGkuZmFpbGVkCisJZmkKK2RvbmUKKworbnVtX29rPWBscyB0ZXN0cy8qLm9rIDI+L2Rldi9udWxsIHwgd2MgLWxgCitudW1fZmFpbGVkPWBscyB0ZXN0cy8qLmZhaWxlZCAyPi9kZXYvbnVsbCB8IHdjIC1sYAorCitlY2hvICIkbnVtX29rIHRlc3RzIHN1Y2NlZWRlZAkkbnVtX2ZhaWxlZCB0ZXN0cyBmYWlsZWQiCisKK3Rlc3QgIiRudW1fZmFpbGVkIiAtZXEgMCB8fCBleGl0IDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvY3JhbWZzLmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2NyYW1mcy5pbWcuYnoyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MzgxMTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2NyYW1mcy5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvY3JhbWZzLnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2NyYW1mcy5yZXN1bHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NGQ5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2NyYW1mcy5yZXN1bHRzCkBAIC0wLDAgKzEsMiBAQAorVFlQRT0nY3JhbWZzJworTEFCRUw9J3Rlc3QtY3JhbScKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0Mi5pbWcuYnoyIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9leHQyLmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDE4MTFjZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0Mi5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0Mi5yZXN1bHRzIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9leHQyLnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZhN2EyYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0Mi5yZXN1bHRzCkBAIC0wLDAgKzEsMyBAQAorVFlQRT0nZXh0MicKK0xBQkVMPSd0ZXN0LWV4dDInCitVVUlEPScyMmYwZWFjMy01Yzg5LTRlYzEtOTA3Ni02MDc5OTExOWFhZWEnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2V4dDMuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0My5pbWcuYnoyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzOTQ1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2V4dDMuaW1nLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2V4dDMucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZXh0My5yZXN1bHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYzIyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2V4dDMucmVzdWx0cwpAQCAtMCwwICsxLDMgQEAKK1RZUEU9J2V4dDMnCitMQUJFTD0ndGVzdC1leHQzJworVVVJRD0nMzVmNjZkYWItNDc3ZS00MDkwLWE4NzItOTVlZTBlNDkzYWQ2JwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZmF0LmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhN2YyZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZmF0LmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZmF0LnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0MTg3MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvZmF0LnJlc3VsdHMKQEAgLTAsMCArMSwzIEBACitUWVBFPSd2ZmF0JworTEFCRUw9J1RFU1QtRkFUJworVVVJRD0nREVBRC1CRUVGJwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQzMl9sYWJlbF82NE1CLmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2ZhdDMyX2xhYmVsXzY0TUIuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTc2MjkzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQzMl9sYWJlbF82NE1CLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQzMl9sYWJlbF82NE1CLnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2ZhdDMyX2xhYmVsXzY0TUIucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmY1NmMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9mYXQzMl9sYWJlbF82NE1CLnJlc3VsdHMKQEAgLTAsMCArMSwzIEBACitUWVBFPSd2ZmF0JworTEFCRUw9J0JJTkdPJworVVVJRD0nOENCNS1CQTQ5JwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9pc28uaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvaXNvLmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVmYjZhZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvaXNvLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9pc28ucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvaXNvLnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1ZDFkYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvaXNvLnJlc3VsdHMKQEAgLTAsMCArMSwyIEBACitUWVBFPSdpc285NjYwJworTEFCRUw9J3Rlc3QtaXNvJwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qYmQuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvamJkLmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBkN2Y5MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvamJkLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qYmQucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvamJkLnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0MzA4OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvamJkLnJlc3VsdHMKQEAgLTAsMCArMSwyIEBACitUWVBFPSdqYmQnCitVVUlEPScwZDdhMDdkZi03YjA2LTQ4MjktYmNlNy0zYjljM2VjZTU3MGMnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2pmcy5pbWcuYnoyIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qZnMuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDRkMjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qZnMuaW1nLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL2pmcy5yZXN1bHRzIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qZnMucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDc1MmEzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9qZnMucmVzdWx0cwpAQCAtMCwwICsxLDMgQEAKK1RZUEU9J2pmcycKK0xBQkVMPSd0ZXN0LWpmcycKK1VVSUQ9JzliZjdiODJlLTc1ODMtNGM3NC05OWE0LTE4OWE2OTFmMjdiNScKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvbWluaXguaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvbWluaXguaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTFmM2E4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9taW5peC5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvbWluaXgucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvbWluaXgucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGI0NDhmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9taW5peC5yZXN1bHRzCkBAIC0wLDAgKzEgQEAKK1RZUEU9J21pbml4JwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9vY2ZzMi5pbWcuYnoyIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9vY2ZzMi5pbWcuYnoyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYWQ5MTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL29jZnMyLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9vY2ZzMi5yZXN1bHRzIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9vY2ZzMi5yZXN1bHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxOGFmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL29jZnMyLnJlc3VsdHMKQEAgLTAsMCArMSwzIEBACitUWVBFPSdvY2ZzMicKK0xBQkVMPSd0ZXN0LW9jZnMyJworVVVJRD0nNmI2YmZiZWEtM2E3OS00ZjBjLWIxNjYtYTIwNzc2MTAyNDQ1JwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXIzLmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3JlaXNlcjMuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODAyYmMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXIzLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXIzLnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3JlaXNlcjMucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzNiYjdjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXIzLnJlc3VsdHMKQEAgLTAsMCArMSwzIEBACitUWVBFPSdyZWlzZXJmcycKK0xBQkVMPSdURVNUUkVJU0VSJworVVVJRD0nOWVmZTc4NjMtYjEyNC00NmRjLWFkNjgtOGVjZDA0MjMwYTdiJwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXI0LmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3JlaXNlcjQuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBkMTJlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXI0LmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXI0LnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3JlaXNlcjQucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzEyMjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yZWlzZXI0LnJlc3VsdHMKQEAgLTAsMCArMSwzIEBACitUWVBFPSdyZWlzZXI0JworTEFCRUw9J1RFU1RSNCcKK1VVSUQ9Jzk3MjI2MzNjLWQ2OWEtNDg4MS1iMWM4LWJlZGVjYmJmMzlkMicKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvcm9tZnMuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvcm9tZnMuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWUzMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yb21mcy5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvcm9tZnMucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvcm9tZnMucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2U4NjIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9yb21mcy5yZXN1bHRzCkBAIC0wLDAgKzEsMiBAQAorVFlQRT0ncm9tZnMnCitMQUJFTD0ndGVzdC1yb21mcycKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc21hbGwtZmF0MzIuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc21hbGwtZmF0MzIuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjkwZjljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9zbWFsbC1mYXQzMi5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc21hbGwtZmF0MzIucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc21hbGwtZmF0MzIucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDVlYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9zbWFsbC1mYXQzMi5yZXN1bHRzCkBAIC0wLDAgKzEsMyBAQAorVFlQRT0ndmZhdCcKK0xBQkVMPSdURVNUVkZBVCcKK1VVSUQ9JzE0MjMtQUFFMScKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDAuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDAuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjFlMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9zd2FwMC5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDAucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDAucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzQyYTYwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy9zd2FwMC5yZXN1bHRzCkBAIC0wLDAgKzEgQEAKK1RZUEU9J3N3YXAnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3N3YXAxLmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3N3YXAxLmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhYjllZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDEuaW1nLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3N3YXAxLnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3N3YXAxLnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWEwNGU1ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvc3dhcDEucmVzdWx0cwpAQCAtMCwwICsxLDMgQEAKK1RZUEU9J3N3YXAnCitMQUJFTD0nU1dBUC1URVNUJworVVVJRD0nOGZmOGU3N2YtODU1My00ODVlLTg2NTYtNThiZTY3YTgxNjY2JwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy91ZGYuaW1nLmJ6MiBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvdWRmLmltZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQyZGViMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvdWRmLmltZy5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy91ZGYucmVzdWx0cyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvdWRmLnJlc3VsdHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3YWE0OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvdWRmLnJlc3VsdHMKQEAgLTAsMCArMSwyIEBACitUWVBFPSd1ZGYnCitMQUJFTD0ndGVzdC11ZGYnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3hmcy5pbWcuYnoyIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy94ZnMuaW1nLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjY5ODJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy94ZnMuaW1nLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3hmcy5yZXN1bHRzIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy94ZnMucmVzdWx0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGU4ZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC90ZXN0cy94ZnMucmVzdWx0cwpAQCAtMCwwICsxLDMgQEAKK1RZUEU9J3hmcycKK0xBQkVMPSd0ZXN0LXhmcycKK1VVSUQ9JzhjOGEwYTVhLTlmNTctNDkyZS05NjEwLTQ1YTYxZjM4ZjU4YScKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvemZzLmltZy5iejIgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3pmcy5pbWcuYnoyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZjQ0NWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3pmcy5pbWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdGVzdHMvemZzLnJlc3VsdHMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3pmcy5yZXN1bHRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwZjhmYjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3Rlc3RzL3pmcy5yZXN1bHRzCkBAIC0wLDAgKzEgQEAKK1RZUEU9J3pmcycKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdHN0X3R5cGVzLmMgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3RzdF90eXBlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNjEyYWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Jsa2lkL3RzdF90eXBlcy5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBUaGlzIHRlc3RpbmcgcHJvZ3JhbSBtYWtlcyBzdXJlIHRoZSBibGtpZF90eXBlcyBoZWFkZXIgZmlsZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgImJsa2lkL2Jsa2lkX3R5cGVzLmgiCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaWYgKHNpemVvZihfX3U4KSAhPSAxKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fdTgpIGlzICVkIHNob3VsZCBiZSAxXG4iLAorCQkgICAgICAgKGludClzaXplb2YoX191OCkpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fczgpICE9IDEpIHsKKwkJcHJpbnRmKCJTaXplb2YoX3M4KSBpcyAlZCBzaG91bGQgYmUgMVxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fczgpKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHNpemVvZihfX3UxNikgIT0gMikgeworCQlwcmludGYoIlNpemVvZihfX3UxNikgaXMgJWQgc2hvdWxkIGJlIDJcbiIsCisJCSAgICAgICAoaW50KXNpemVvZihfX3UxNikpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fczE2KSAhPSAyKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fczE2KSBpcyAlZCBzaG91bGQgYmUgMlxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fczE2KSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzaXplb2YoX191MzIpICE9IDQpIHsKKwkJcHJpbnRmKCJTaXplb2YoX191MzIpIGlzICVkIHNob3VsZCBiZSA0XG4iLAorCQkgICAgICAgKGludClzaXplb2YoX191MzIpKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHNpemVvZihfX3MzMikgIT0gNCkgeworCQlwcmludGYoIlNpemVvZihfX3MzMikgaXMgJWQgc2hvdWxkIGJlIDRcbiIsCisJCSAgICAgICAoaW50KXNpemVvZihfX3MzMikpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fdTY0KSAhPSA4KSB7CisJCXByaW50ZigiU2l6ZW9mKF9fdTY0KSBpcyAlZCBzaG91bGQgYmUgOFxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fdTY0KSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzaXplb2YoX19zNjQpICE9IDgpIHsKKwkJcHJpbnRmKCJTaXplb2YoX19zNjQpIGlzICVkIHNob3VsZCBiZSA4XG4iLAorCQkgICAgICAgKGludClzaXplb2YoX19zNjQpKTsKKwkJZXhpdCgxKTsKKwl9CisJcHJpbnRmKCJUaGUgYmxraWRfdHlwZXMuaCB0eXBlcyBhcmUgY29ycmVjdC5cbiIpOworCWV4aXQoMCk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvYmxraWQvdmVyc2lvbi5jIGIvZTJmc3Byb2dzL2xpYi9ibGtpZC92ZXJzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRjMTdhYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvYmxraWQvdmVyc2lvbi5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiB2ZXJzaW9uLmMgLS0tIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgYmxraWQgbGlicmFyeQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2luY2x1ZGUgPGJsa2lkL2Jsa2lkLmg+CisjaW5jbHVkZSAiLi4vLi4vdmVyc2lvbi5oIgorCitzdGF0aWMgY29uc3QgY2hhciAqbGliX3ZlcnNpb24gPSBFMkZTUFJPR1NfVkVSU0lPTjsKK3N0YXRpYyBjb25zdCBjaGFyICpsaWJfZGF0ZSA9IEUyRlNQUk9HU19EQVRFOworCitpbnQgYmxraWRfcGFyc2VfdmVyc2lvbl9zdHJpbmcoY29uc3QgY2hhciAqdmVyX3N0cmluZykKK3sKKwljb25zdCBjaGFyICpjcDsKKwlpbnQgdmVyc2lvbiA9IDA7CisKKwlmb3IgKGNwID0gdmVyX3N0cmluZzsgKmNwOyBjcCsrKSB7CisJCWlmICgqY3AgPT0gJy4nKQorCQkJY29udGludWU7CisJCWlmICghaXNkaWdpdCgqY3ApKQorCQkJYnJlYWs7CisJCXZlcnNpb24gPSAodmVyc2lvbiAqIDEwKSArICgqY3AgLSAnMCcpOworCX0KKwlyZXR1cm4gdmVyc2lvbjsKK30KKworaW50IGJsa2lkX2dldF9saWJyYXJ5X3ZlcnNpb24oY29uc3QgY2hhciAqKnZlcl9zdHJpbmcsCisJCQkgICAgICAgY29uc3QgY2hhciAqKmRhdGVfc3RyaW5nKQoreworCWlmICh2ZXJfc3RyaW5nKQorCQkqdmVyX3N0cmluZyA9IGxpYl92ZXJzaW9uOworCWlmIChkYXRlX3N0cmluZykKKwkJKmRhdGVfc3RyaW5nID0gbGliX2RhdGU7CisKKwlyZXR1cm4gYmxraWRfcGFyc2VfdmVyc2lvbl9zdHJpbmcobGliX3ZlcnNpb24pOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9jb25maWcuaC5pbiBiL2UyZnNwcm9ncy9saWIvY29uZmlnLmguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwMDZkZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvY29uZmlnLmguaW4KQEAgLTAsMCArMSw4ODEgQEAKKy8qIGxpYi9jb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KKworLyogRGVmaW5lIGlmIGJ1aWxkaW5nIHVuaXZlcnNhbCAoaW50ZXJuYWwgaGVscGVyIG1hY3JvKSAqLworI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAorCisvKiBEZWZpbmUgdG8gMSBpZiBkZWJ1Z2dpbmcgdGhlIGJsa2lkIGxpYnJhcnkgKi8KKyN1bmRlZiBDT05GSUdfQkxLSURfREVCVUcKKworLyogRGVmaW5lIHRvIDEgdG8gY29tcGlsZSBmaW5kZnMgKi8KKyN1bmRlZiBDT05GSUdfQlVJTERfRklOREZTCisKKy8qIERlZmluZSB0byAxIGlmIGRlYnVnZ2luZyBleHQzLzQgam91cm5hbCBjb2RlICovCisjdW5kZWYgQ09ORklHX0pCRF9ERUJVRworCisvKiBEZWZpbmUgdG8gMSB0byBlbmFibGUgbW1wIHN1cHBvcnQgKi8KKyN1bmRlZiBDT05GSUdfTU1QCisKKy8qIERlZmluZSB0byAxIHRvIGVuYWJsZSB0ZGIgc3VwcG9ydCAqLworI3VuZGVmIENPTkZJR19UREIKKworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHRlc3RpbyBJL08gbWFuYWdlciBzaG91bGQgYmUgZW5hYmxlZCAqLworI3VuZGVmIENPTkZJR19URVNUSU9fREVCVUcKKworLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3IgQ3JheS0yIGFuZCBDcmF5LVlNUAorICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCisgICAqLworI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5ECisKKy8qIERlZmluZSB0byAxIGlmIHVzaW5nIGBhbGxvY2EuYycuICovCisjdW5kZWYgQ19BTExPQ0EKKworLyogRGVmaW5lIHRvIDEgdG8gZGlzYWJsZSB1c2Ugb2YgYmFja3RyYWNlICovCisjdW5kZWYgRElTQUJMRV9CQUNLVFJBQ0UKKworLyogRGVmaW5lIHRvIDEgdG8gZW5hYmxlIGJpdG1hcCBzdGF0cy4gKi8KKyN1bmRlZiBFTkFCTEVfQk1BUF9TVEFUUworCisvKiBEZWZpbmUgdG8gMSB0byBlbmFibGUgYml0bWFwIHN0YXRzLiAqLworI3VuZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCisvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCisgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCisjdW5kZWYgRU5BQkxFX05MUworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFkZF9rZXknIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQUREX0tFWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgYWxsb2NhJywgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gKi8KKyN1bmRlZiBIQVZFX0FMTE9DQQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBpdCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuCisgICAqLworI3VuZGVmIEhBVkVfQUxMT0NBX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBhcmd6X2NvdW50JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0FSR1pfQ09VTlQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhcmd6Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfQVJHWl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYXJnel9uZXh0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0FSR1pfTkVYVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFyZ3pfc3RyaW5naWZ5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0FSR1pfU1RSSU5HSUZZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYXNwcmludGYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQVNQUklOVEYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxhdHRyL3hhdHRyLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfQVRUUl9YQVRUUl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmFja3RyYWNlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JBQ0tUUkFDRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJsa2lkX3Byb2JlX2VuYWJsZV9wYXJ0aXRpb25zJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JMS0lEX1BST0JFX0VOQUJMRV9QQVJUSVRJT05TCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmxraWRfcHJvYmVfZ2V0X3RvcG9sb2d5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0JMS0lEX1BST0JFX0dFVF9UT1BPTE9HWQorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgY29tcGlsZXIgdW5kZXJzdGFuZHMgX19idWlsdGluX2V4cGVjdC4gKi8KKyN1bmRlZiBIQVZFX0JVSUxUSU5fRVhQRUNUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRkxvY2FsZUNvcHlDdXJyZW50IGluIHRoZQorICAgQ29yZUZvdW5kYXRpb24gZnJhbWV3b3JrLiAqLworI3VuZGVmIEhBVkVfQ0ZMT0NBTEVDT1BZQ1VSUkVOVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTWFjIE9TIFggZnVuY3Rpb24gQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSBpbgorICAgdGhlIENvcmVGb3VuZGF0aW9uIGZyYW1ld29yay4gKi8KKyN1bmRlZiBIQVZFX0NGUFJFRkVSRU5DRVNDT1BZQVBQVkFMVUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjaGZsYWdzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NIRkxBR1MKKworLyogRGVmaW5lIGlmIHRoZSBHTlUgZGNnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC4KKyAgICovCisjdW5kZWYgSEFWRV9EQ0dFVFRFWFQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBmZW9mX3VubG9ja2VkJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfRkVPRl9VTkxPQ0tFRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYGZnZXRzX3VubG9ja2VkJywgYW5kIHRvIDAgaWYKKyAgIHlvdSBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfRkdFVFNfVU5MT0NLRUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBnZXRjX3VubG9ja2VkJywgYW5kIHRvIDAgaWYgeW91CisgICBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfR0VUQ19VTkxPQ0tFRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYF9zbnByaW50ZicsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX19TTlBSSU5URgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYF9zbndwcmludGYnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9fU05XUFJJTlRGCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfRElSRU5UX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRExPUEVOCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBkb24ndCBoYXZlIGB2cHJpbnRmJyBidXQgZG8gaGF2ZSBgX2RvcHJudC4nICovCisjdW5kZWYgSEFWRV9ET1BSTlQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VSUk5PX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxleGVjaW5mby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VYRUNJTkZPX0gKKworLyogRGVmaW5lIHRvIDEgaWYgRXh0MiBpb2N0bHMgcHJlc2VudCAqLworI3VuZGVmIEhBVkVfRVhUMl9JT0NUTFMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmYWR2aXNlNjQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkFEVklTRTY0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmFsbG9jYXRlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZBTExPQ0FURQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZhbGxvY2F0ZTY0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZBTExPQ0FURTY0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNob3duJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZDSE9XTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZkYXRhc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GREFUQVNZTkMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmZWF0dXJlcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0ZFQVRVUkVTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc3RhdDY0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZTVEFUNjQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdHJ1bmNhdGU2NCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVFJVTkNBVEU2NAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGZ1c2UuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9GVVNFX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdXRpbWVzJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmd3ByaW50ZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GV1BSSU5URgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGN3ZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRDV0QKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRkdGFibGVzaXplJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVERUQUJMRVNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRlZ2lkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEVHSUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRldWlkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEVVSUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRnaWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUR0lECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0bW50aW5mbycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRNTlRJTkZPCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Z2V0b3B0Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfR0VUT1BUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRwYWdlc2l6ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRQQUdFU0laRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHB3dWlkX3InIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUUFdVSURfUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHJsaW1pdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRSTElNSVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRydXNhZ2UnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUUlVTQUdFCisKKy8qIERlZmluZSBpZiB0aGUgR05VIGdldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLiAqLworI3VuZGVmIEhBVkVfR0VUVEVYVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHVpZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRVSUQKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBpY29udigpIGZ1bmN0aW9uIGFuZCBpdCB3b3Jrcy4gKi8KKyN1bmRlZiBIQVZFX0lDT05WCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ludG1heF90JyB0eXBlIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+LiAqLworI3VuZGVmIEhBVkVfSU5UTUFYX1QKKworLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGludHB0cl90Jy4gKi8KKyN1bmRlZiBIQVZFX0lOVFBUUl9UCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JTlRUWVBFU19ICisKKy8qIERlZmluZSBpZiA8aW50dHlwZXMuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwgYW5kCisgICBkZWNsYXJlcyB1aW50bWF4X3QuICovCisjdW5kZWYgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGpyYW5kNDgnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSlJBTkQ0OAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtleWN0bCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9LRVlDVEwKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIDxsYW5naW5mby5oPiBhbmQgbmxfbGFuZ2luZm8oQ09ERVNFVCkuICovCisjdW5kZWYgSEFWRV9MQU5HSU5GT19DT0RFU0VUCisKKy8qIERlZmluZSBpZiB5b3VyIDxsb2NhbGUuaD4gZmlsZSBkZWZpbmVzIExDX01FU1NBR0VTLiAqLworI3VuZGVmIEhBVkVfTENfTUVTU0FHRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU1JVFNfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L2ZhbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX0ZBTExPQ19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvZmQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9MSU5VWF9GRF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbG9vcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX0xPT1BfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L21ham9yLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfTUFKT1JfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxsaXN0eGF0dHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTExJU1RYQVRUUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxsc2VlaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MTFNFRUsKKworLyogRGVmaW5lIHRvIDEgaWYgbGxzZWVrIGRlY2xhcmVkIGluIHVuaXN0ZC5oICovCisjdW5kZWYgSEFWRV9MTFNFRUtfUFJPVE9UWVBFCisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlICdsb25nIGxvbmcgaW50Jy4gKi8KKyN1bmRlZiBIQVZFX0xPTkdfTE9OR19JTlQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsc2VlazY0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0xTRUVLNjQKKworLyogRGVmaW5lIHRvIDEgaWYgbHNlZWs2NCBkZWNsYXJlZCBpbiB1bmlzdGQuaCAqLworI3VuZGVmIEhBVkVfTFNFRUs2NF9QUk9UT1RZUEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWdpYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01BR0lDX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtYWxsaW5mbycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NQUxMSU5GTworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01BTExPQ19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWJydG93YycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NQlJUT1dDCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWJzdG93Y3MnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUJTVE9XQ1MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1hbGlnbicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NRU1BTElHTgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1lbW9yeS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX01FTU9SWV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtcGNweScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NRU1QQ1BZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NTUFQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bW50ZW50Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTU5URU5UX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtc3luYycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NU1lOQworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG11bm1hcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NVU5NQVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuYW5vc2xlZXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTkFOT1NMRUVQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pbi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldC9pZl9kbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVF9JRl9ETF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUX0lGX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuZXdsb2NhbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTkVXTE9DQUxFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgb3BlbjY0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX09QRU42NAorCisvKiBEZWZpbmUgdG8gMSBpZiBvcHRyZXNldCBmb3IgZ2V0b3B0IGlzIHByZXNlbnQgKi8KKyN1bmRlZiBIQVZFX09QVFJFU0VUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGF0aGNvbmYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUEFUSENPTkYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwYXRocy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1BBVEhTX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlNjQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFEVklTRTY0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcG9zaXhfbWVtYWxpZ24nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfTUVNQUxJR04KKworLyogRGVmaW5lIGlmIHlvdXIgcHJpbnRmKCkgZnVuY3Rpb24gc3VwcG9ydHMgZm9ybWF0IHN0cmluZ3Mgd2l0aCBwb3NpdGlvbnMuICovCisjdW5kZWYgSEFWRV9QT1NJWF9QUklOVEYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwcmN0bCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QUkNUTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BSRUFECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWQ2NCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QUkVBRDY0CisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHRocmVhZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1BUSFJFQURfSAorCisvKiBEZWZpbmUgaWYgdGhlIDxwdGhyZWFkLmg+IGRlZmluZXMgUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUuICovCisjdW5kZWYgSEFWRV9QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRQorCisvKiBEZWZpbmUgaWYgdGhlIFBPU0lYIG11bHRpdGhyZWFkaW5nIGxpYnJhcnkgaGFzIHJlYWQvd3JpdGUgbG9ja3MuICovCisjdW5kZWYgSEFWRV9QVEhSRUFEX1JXTE9DSworCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB1dGVudicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QVVRFTlYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwd3JpdGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFdSSVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHdyaXRlNjQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFdSSVRFNjQKKworLyogRGVmaW5lIHRvIDEgaWYgZGlyZW50IGhhcyBkX3JlY2xlbiAqLworI3VuZGVmIEhBVkVfUkVDTEVOX0RJUkVOVAorCisvKiBEZWZpbmUgdG8gMSBpZiBpZiBzdHJ1Y3Qgc29ja2FkZHIgY29udGFpbnMgc2FfbGVuICovCisjdW5kZWYgSEFWRV9TQV9MRU4KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWN1cmVfZ2V0ZW52JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFQ1VSRV9HRVRFTlYKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZW1hcGhvcmUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TRU1BUEhPUkVfSAorCisvKiBEZWZpbmUgdG8gMSBpZiBzZW1faW5pdCgpIGV4aXN0cyAqLworI3VuZGVmIEhBVkVfU0VNX0lOSVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlbnYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VURU5WCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2V0am1wLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU0VUSk1QX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRsb2NhbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUTE9DQUxFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0bW50ZW50JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NFVE1OVEVOVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHJlc2dpZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRSRVNHSUQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRyZXN1aWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUUkVTVUlECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2lnbmFsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU0lHTkFMX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TTlBSSU5URgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNyYW5kb20nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1JBTkRPTQorCisvKiBEZWZpbmUgdG8gMSBpZiBzdHJ1Y3Qgc3RhdCBoYXMgc3RfZmxhZ3MgKi8KKyN1bmRlZiBIQVZFX1NUQVRfRkxBR1MKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRhcmcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERBUkdfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGRlZi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NURERFRl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1RESU5UX0gKKworLyogRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwgYW5kIGRlY2xhcmVzCisgICB1aW50bWF4X3QuICovCisjdW5kZWYgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRsaWIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TVERMSUJfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cGNweScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFBDUFkKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJjYXNlY21wJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUkNBU0VDTVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSRFVQCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5ncy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NUUklOR19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RybmxlbicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJOTEVOCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RycHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1RSUFRJTUUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NUUlRPVUwKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsbCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT1VMTAorCisvKiBEZWZpbmUgdG8gMSBpZiBgc3RfYXRpbScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0FUSU0KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeW1saW5rJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NZTUxJTksKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeW5jX2ZpbGVfcmFuZ2UnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lOQ19GSUxFX1JBTkdFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3lzY29uZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TWVNDT05GCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2FjbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19BQ0xfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXNrbGFiZWwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlzay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19ESVNLX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19GSUxFX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9rZXkuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfS0VZX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbWtkZXYuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfTUtERVZfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFuLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX01NQU5fSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tb3VudC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19NT1VOVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1BBUkFNX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcHJjdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfUFJDVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9yZXNvdXJjZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU09DS0VUX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc29ja2lvLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NPQ0tJT19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1RBVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2NhbGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTQ0FMTF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c2N0bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19TWVNDVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNtYWNyb3MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19USU1FX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19VTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3dhaXQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfV0FJVF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dGVybWlvcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1RFUk1JT1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHRlcm1pby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1RFUk1JT19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdHNlYXJjaCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9UU0VBUkNICisKKy8qIERlZmluZSB0byAxIGlmIHNzaXplX3QgZGVjbGFyZWQgKi8KKyN1bmRlZiBIQVZFX1RZUEVfU1NJWkVfVAorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd1aW50bWF4X3QnIHR5cGUgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uICovCisjdW5kZWYgSEFWRV9VSU5UTUFYX1QKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9VTklTVERfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSAndW5zaWduZWQgbG9uZyBsb25nIGludCcuICovCisjdW5kZWYgSEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgdXNlbG9jYWxlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1VTRUxPQ0FMRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVzbGVlcCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VU0xFRVAKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VVElNRQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VVElNRVMKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dGltZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1VUSU1FX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB2YWxsb2MnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVkFMTE9DCisKKy8qIERlZmluZSB0byAxIG9yIDAsIGRlcGVuZGluZyB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyBzaW1wbGUgdmlzaWJpbGl0eQorICAgZGVjbGFyYXRpb25zLiAqLworI3VuZGVmIEhBVkVfVklTSUJJTElUWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHZwcmludGYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfVlBSSU5URgorCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd3Y2hhcl90JyB0eXBlLiAqLworI3VuZGVmIEhBVkVfV0NIQVJfVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdjcnRvbWInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV0NSVE9NQgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdjc2xlbicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9XQ1NMRU4KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3NubGVuJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1dDU05MRU4KKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnd2ludF90JyB0eXBlLiAqLworI3VuZGVmIEhBVkVfV0lOVF9UCisKKy8qIERlZmluZSB0byAxIGlmIE9fTk9BVElNRSB3b3Jrcy4gKi8KKyN1bmRlZiBIQVZFX1dPUktJTkdfT19OT0FUSU1FCisKKy8qIERlZmluZSB0byAxIGlmIE9fTk9GT0xMT1cgd29ya3MuICovCisjdW5kZWYgSEFWRV9XT1JLSU5HX09fTk9GT0xMT1cKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfX2ZzZXRsb2NraW5nJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX19fRlNFVExPQ0tJTkcKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBfX3NlY3VyZV9nZXRlbnYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfX19TRUNVUkVfR0VURU5WCisKKy8qIERlZmluZSBhcyBjb25zdCBpZiB0aGUgZGVjbGFyYXRpb24gb2YgaWNvbnYoKSBuZWVkcyBjb25zdC4gKi8KKyN1bmRlZiBJQ09OVl9DT05TVAorCisvKiBEZWZpbmUgaWYgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBzaWduYWwgU0lHRlBFLiAqLworI3VuZGVmIElOVERJVjBfUkFJU0VTX1NJR0ZQRQorCisvKiBwYWNrYWdlIG5hbWUgZm9yIGdldHRleHQgKi8KKyN1bmRlZiBQQUNLQUdFCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisKKy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX05BTUUKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfU1RSSU5HCisKKy8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKworLyogRGVmaW5lIHRvIHRoZSBob21lIHBhZ2UgZm9yIHRoaXMgcGFja2FnZS4gKi8KKyN1bmRlZiBQQUNLQUdFX1VSTAorCisvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgorCisvKiBEZWZpbmUgaWYgPGludHR5cGVzLmg+IGV4aXN0cyBhbmQgZGVmaW5lcyB1bnVzYWJsZSBQUkkqIG1hY3Jvcy4gKi8KKyN1bmRlZiBQUklfTUFDUk9TX0JST0tFTgorCisvKiBEZWZpbmUgaWYgdGhlIHB0aHJlYWRfaW5fdXNlKCkgZGV0ZWN0aW9uIGlzIGhhcmQuICovCisjdW5kZWYgUFRIUkVBRF9JTl9VU0VfREVURUNUSU9OX0hBUkQKKworLyogVGhlIHNpemUgb2YgYGludCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyN1bmRlZiBTSVpFT0ZfSU5UCisKKy8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI3VuZGVmIFNJWkVPRl9MT05HCisKKy8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjdW5kZWYgU0laRU9GX0xPTkdfTE9ORworCisvKiBUaGUgc2l6ZSBvZiBgb2ZmX3QnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjdW5kZWYgU0laRU9GX09GRl9UCisKKy8qIFRoZSBzaXplIG9mIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyN1bmRlZiBTSVpFT0ZfU0hPUlQKKworLyogVGhlIHNpemUgb2YgYHRpbWVfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyN1bmRlZiBTSVpFT0ZfVElNRV9UCisKKy8qIERlZmluZSBhcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0eXBlICdzaXplX3QnLCBpZiB0aGUgc3lzdGVtIGRvZXNuJ3QgZGVmaW5lCisgICBpdC4gKi8KKyNpZm5kZWYgU0laRV9NQVgKKyMgdW5kZWYgU0laRV9NQVgKKyNlbmRpZgorCisvKiBJZiB1c2luZyB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBhbGxvY2EsIGRlZmluZSBpZiB5b3Uga25vdyB0aGUKKyAgIGRpcmVjdGlvbiBvZiBzdGFjayBncm93dGggZm9yIHlvdXIgc3lzdGVtOyBvdGhlcndpc2UgaXQgd2lsbCBiZQorICAgYXV0b21hdGljYWxseSBkZWR1Y2VkIGF0IHJ1bnRpbWUuCisJU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcworCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcworCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duICovCisjdW5kZWYgU1RBQ0tfRElSRUNUSU9OCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLworI3VuZGVmIFNURENfSEVBREVSUworCisvKiBJZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgYSBUTFMgc3RvcmFnZSBjbGFzcyBkZWZpbmUgaXQgdG8gdGhhdCBoZXJlICovCisjdW5kZWYgVExTCisKKy8qIERlZmluZSBpZiB0aGUgUE9TSVggbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBjYW4gYmUgdXNlZC4gKi8KKyN1bmRlZiBVU0VfUE9TSVhfVEhSRUFEUworCisvKiBEZWZpbmUgaWYgcmVmZXJlbmNlcyB0byB0aGUgUE9TSVggbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBzaG91bGQgYmUgbWFkZQorICAgd2Vhay4gKi8KKyN1bmRlZiBVU0VfUE9TSVhfVEhSRUFEU19XRUFLCisKKy8qIERlZmluZSBpZiB0aGUgR05VIFB0aCBtdWx0aXRocmVhZGluZyBsaWJyYXJ5IGNhbiBiZSB1c2VkLiAqLworI3VuZGVmIFVTRV9QVEhfVEhSRUFEUworCisvKiBEZWZpbmUgaWYgcmVmZXJlbmNlcyB0byB0aGUgR05VIFB0aCBtdWx0aXRocmVhZGluZyBsaWJyYXJ5IHNob3VsZCBiZSBtYWRlCisgICB3ZWFrLiAqLworI3VuZGVmIFVTRV9QVEhfVEhSRUFEU19XRUFLCisKKy8qIERlZmluZSBpZiB0aGUgb2xkIFNvbGFyaXMgbXVsdGl0aHJlYWRpbmcgbGlicmFyeSBjYW4gYmUgdXNlZC4gKi8KKyN1bmRlZiBVU0VfU09MQVJJU19USFJFQURTCisKKy8qIERlZmluZSBpZiByZWZlcmVuY2VzIHRvIHRoZSBvbGQgU29sYXJpcyBtdWx0aXRocmVhZGluZyBsaWJyYXJ5IHNob3VsZCBiZQorICAgbWFkZSB3ZWFrLiAqLworI3VuZGVmIFVTRV9TT0xBUklTX1RIUkVBRFNfV0VBSworCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBBSVggMywgSW50ZXJpeC4gICovCisjaWZuZGVmIF9BTExfU09VUkNFCisjIHVuZGVmIF9BTExfU09VUkNFCisjZW5kaWYKKy8qIEVuYWJsZSBHTlUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSB0aGVtLiAgKi8KKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyMgdW5kZWYgX0dOVV9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxlIHRocmVhZGluZyBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MKKyMgdW5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjZW5kaWYKKy8qIEVuYWJsZSBleHRlbnNpb25zIG9uIEhQIE5vblN0b3AuICAqLworI2lmbmRlZiBfVEFOREVNX1NPVVJDRQorIyB1bmRlZiBfVEFOREVNX1NPVVJDRQorI2VuZGlmCisvKiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIFNvbGFyaXMuICAqLworI2lmbmRlZiBfX0VYVEVOU0lPTlNfXworIyB1bmRlZiBfX0VYVEVOU0lPTlNfXworI2VuZGlmCisKKworLyogRGVmaW5lIHRvIDEgdG8gYnVpbGQgdXVpZGQgKi8KKyN1bmRlZiBVU0VfVVVJREQKKworLyogRGVmaW5lIGlmIHRoZSBuYXRpdmUgV2luZG93cyBtdWx0aXRocmVhZGluZyBBUEkgY2FuIGJlIHVzZWQuICovCisjdW5kZWYgVVNFX1dJTkRPV1NfVEhSRUFEUworCisvKiB2ZXJzaW9uIGZvciBnZXR0ZXh0ICovCisjdW5kZWYgVkVSU0lPTgorCisvKiBEZWZpbmUgV09SRFNfQklHRU5ESUFOIHRvIDEgaWYgeW91ciBwcm9jZXNzb3Igc3RvcmVzIHdvcmRzIHdpdGggdGhlIG1vc3QKKyAgIHNpZ25pZmljYW50IGJ5dGUgZmlyc3QgKGxpa2UgTW90b3JvbGEgYW5kIFNQQVJDLCB1bmxpa2UgSW50ZWwpLiAqLworI2lmIGRlZmluZWQgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisjIGlmIGRlZmluZWQgX19CSUdfRU5ESUFOX18KKyMgIGRlZmluZSBXT1JEU19CSUdFTkRJQU4gMQorIyBlbmRpZgorI2Vsc2UKKyMgaWZuZGVmIFdPUkRTX0JJR0VORElBTgorIyAgdW5kZWYgV09SRFNfQklHRU5ESUFOCisjIGVuZGlmCisjZW5kaWYKKworLyogRGVmaW5lIHRvIDEgaWYgQXBwbGUgRGFyd2luIGxpYmludGwgd29ya2Fyb3VuZCBpcyBuZWVkZWQgKi8KKyN1bmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKKworLyogRGVmaW5lIHRvIDEgaWYgb24gTUlOSVguICovCisjdW5kZWYgX01JTklYCisKKy8qIERlZmluZSB0byAyIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgcHJvdmlkZSBQT1NJWC4xIGZlYXR1cmVzIGV4Y2VwdCB3aXRoCisgICB0aGlzIGRlZmluZWQuICovCisjdW5kZWYgX1BPU0lYXzFfU09VUkNFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBuZWVkIHRvIGluIG9yZGVyIGZvciBgc3RhdCcgYW5kIG90aGVyIHRoaW5ncyB0byB3b3JrLiAqLworI3VuZGVmIF9QT1NJWF9TT1VSQ0UKKworLyogUGxlYXNlIHNlZSB0aGUgR251bGliIG1hbnVhbCBmb3IgaG93IHRvIHVzZSB0aGVzZSBtYWNyb3MuCisKKyAgIFN1cHByZXNzIGV4dGVybiBpbmxpbmUgd2l0aCBIUC1VWCBjYywgYXMgaXQgYXBwZWFycyB0byBiZSBicm9rZW47IHNlZQorICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctdGV4aW5mby8yMDEzLTAyL21zZzAwMDMwLmh0bWw+LgorCisgICBTdXBwcmVzcyBleHRlcm4gaW5saW5lIHdpdGggU3VuIEMgaW4gc3RhbmRhcmRzLWNvbmZvcm1hbmNlIG1vZGUsIGFzIGl0CisgICBtaXNoYW5kbGVzIGlubGluZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGVhY2ggb3RoZXIuICBFLmcuLCBmb3IgJ2lubGluZSB2b2lkIGYKKyAgICh2b2lkKSB7IH0gaW5saW5lIHZvaWQgZyAodm9pZCkgeyBmICgpOyB9JywgYzk5IGluY29ycmVjdGx5IGNvbXBsYWlucworICAgJ3JlZmVyZW5jZSB0byBzdGF0aWMgaWRlbnRpZmllciAiZiIgaW4gZXh0ZXJuIGlubGluZSBmdW5jdGlvbicuCisgICBUaGlzIGJ1ZyB3YXMgb2JzZXJ2ZWQgd2l0aCBTdW4gQyA1LjEyIFN1bk9TX2kzODYgMjAxMS8xMS8xNi4KKworICAgU3VwcHJlc3MgdGhlIHVzZSBvZiBleHRlcm4gaW5saW5lIG9uIEFwcGxlJ3MgcGxhdGZvcm1zLCBhcyBMaWJjIGF0IGxlYXN0CisgICB0aHJvdWdoIExpYmMtODI1LjI2ICgyMDEzLTA0LTA5KSBpcyBpbmNvbXBhdGlibGUgd2l0aCBpdDsgc2VlLCBlLmcuLAorICAgPGh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctZ251bGliLzIwMTItMTIvbXNnMDAwMjMuaHRtbD4uCisgICBQZXJoYXBzIEFwcGxlIHdpbGwgZml4IHRoaXMgc29tZSBkYXkuICAqLworI2lmICgoX19HTlVDX18gXAorICAgICAgPyBkZWZpbmVkIF9fR05VQ19TVERDX0lOTElORV9fICYmIF9fR05VQ19TVERDX0lOTElORV9fIFwKKyAgICAgIDogKDE5OTkwMUwgPD0gX19TVERDX1ZFUlNJT05fXyBcCisgICAgICAgICAmJiAhZGVmaW5lZCBfX0hQX2NjIFwKKyAgICAgICAgICYmICEoZGVmaW5lZCBfX1NVTlBST19DICYmIF9fU1REQ19fKSkpIFwKKyAgICAgJiYgIWRlZmluZWQgX19BUFBMRV9fKQorIyBkZWZpbmUgX0dMX0lOTElORSBpbmxpbmUKKyMgZGVmaW5lIF9HTF9FWFRFUk5fSU5MSU5FIGV4dGVybiBpbmxpbmUKKyNlbGlmICgyIDwgX19HTlVDX18gKyAoNyA8PSBfX0dOVUNfTUlOT1JfXykgJiYgIWRlZmluZWQgX19TVFJJQ1RfQU5TSV9fIFwKKyAgICAgICAmJiAhZGVmaW5lZCBfX0FQUExFX18pCisjIGlmIF9fR05VQ19HTlVfSU5MSU5FX18KKyAgIC8qIF9fZ251X2lubGluZV9fIHN1cHByZXNzZXMgYSBHQ0MgNC4yIGRpYWdub3N0aWMuICAqLworIyAgZGVmaW5lIF9HTF9JTkxJTkUgZXh0ZXJuIGlubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKQorIyBlbHNlCisjICBkZWZpbmUgX0dMX0lOTElORSBleHRlcm4gaW5saW5lCisjIGVuZGlmCisjIGRlZmluZSBfR0xfRVhURVJOX0lOTElORSBleHRlcm4KKyNlbHNlCisjIGRlZmluZSBfR0xfSU5MSU5FIHN0YXRpYyBfR0xfVU5VU0VECisjIGRlZmluZSBfR0xfRVhURVJOX0lOTElORSBzdGF0aWMgX0dMX1VOVVNFRAorI2VuZGlmCisKKyNpZiA0IDwgX19HTlVDX18gKyAoNiA8PSBfX0dOVUNfTUlOT1JfXykKKyMgaWYgZGVmaW5lZCBfX0dOVUNfU1REQ19JTkxJTkVfXyAmJiBfX0dOVUNfU1REQ19JTkxJTkVfXworIyAgZGVmaW5lIF9HTF9JTkxJTkVfSEVBREVSX0NPTlNUX1BSQUdNQQorIyBlbHNlCisjICBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfQ09OU1RfUFJBR01BIFwKKyAgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N1Z2dlc3QtYXR0cmlidXRlPWNvbnN0XCIiKQorIyBlbmRpZgorICAvKiBTdXBwcmVzcyBHQ0MncyBib2d1cyAibm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciAnRk9PJyIKKyAgICAgYW5kICJubyBwcmV2aW91cyBkZWNsYXJhdGlvbiBmb3IgJ0ZPTyciICBkaWFnbm9zdGljcywKKyAgICAgd2hlbiBGT08gaXMgYW4gaW5saW5lIGZ1bmN0aW9uIGluIHRoZSBoZWFkZXI7IHNlZQorICAgICA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NDExMz4uICAqLworIyBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfQkVHSU4gXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBwdXNoIikgXAorICAgIF9QcmFnbWEgKCJHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdtaXNzaW5nLXByb3RvdHlwZXNcIiIpIFwKKyAgICBfUHJhZ21hICgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XbWlzc2luZy1kZWNsYXJhdGlvbnNcIiIpIFwKKyAgICBfR0xfSU5MSU5FX0hFQURFUl9DT05TVF9QUkFHTUEKKyMgZGVmaW5lIF9HTF9JTkxJTkVfSEVBREVSX0VORCBcCisgICAgX1ByYWdtYSAoIkdDQyBkaWFnbm9zdGljIHBvcCIpCisjZWxzZQorIyBkZWZpbmUgX0dMX0lOTElORV9IRUFERVJfQkVHSU4KKyMgZGVmaW5lIF9HTF9JTkxJTkVfSEVBREVSX0VORAorI2VuZGlmCisKKy8qIERlZmluZSB0byBgX19pbmxpbmVfXycgb3IgYF9faW5saW5lJyBpZiB0aGF0J3Mgd2hhdCB0aGUgQyBjb21waWxlcgorICAgY2FsbHMgaXQsIG9yIHRvIG5vdGhpbmcgaWYgJ2lubGluZScgaXMgbm90IHN1cHBvcnRlZCB1bmRlciBhbnkgbmFtZS4gICovCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjdW5kZWYgaW5saW5lCisjZW5kaWYKKworLyogRGVmaW5lIGFzIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2Ygc3VidHJhY3RpbmcgdHdvIHBvaW50ZXJzLCBpZiB0aGUgc3lzdGVtCisgICBkb2Vzbid0IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBwdHJkaWZmX3QKKworLyogRGVmaW5lIHRvIGB1bnNpZ25lZCBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworI3VuZGVmIHNpemVfdAorCisvKiBEZWZpbmUgdG8gdW5zaWduZWQgbG9uZyBvciB1bnNpZ25lZCBsb25nIGxvbmcgaWYgPHN0ZGludC5oPiBhbmQKKyAgIDxpbnR0eXBlcy5oPiBkb24ndCBkZWZpbmUuICovCisjdW5kZWYgdWludG1heF90CisKKyNpbmNsdWRlIDxkaXJwYXRocy5oPgorCisKKyNkZWZpbmUgX19saWJjX2xvY2tfdCAgICAgICAgICAgICAgICAgICBnbF9sb2NrX3QKKyNkZWZpbmUgX19saWJjX2xvY2tfZGVmaW5lICAgICAgICAgICAgICBnbF9sb2NrX2RlZmluZQorI2RlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgIGdsX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkCisjZGVmaW5lIF9fbGliY19sb2NrX2luaXQgICAgICAgICAgICAgICAgZ2xfbG9ja19pbml0CisjZGVmaW5lIF9fbGliY19sb2NrX2xvY2sgICAgICAgICAgICAgICAgZ2xfbG9ja19sb2NrCisjZGVmaW5lIF9fbGliY19sb2NrX3VubG9jayAgICAgICAgICAgICAgZ2xfbG9ja191bmxvY2sKKyNkZWZpbmUgX19saWJjX2xvY2tfcmVjdXJzaXZlX3QgICAgICAgICAgICAgICAgICAgZ2xfcmVjdXJzaXZlX2xvY2tfdAorI2RlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfcmVjdXJzaXZlICAgICAgICAgICAgICBnbF9yZWN1cnNpdmVfbG9ja19kZWZpbmUKKyNkZWZpbmUgX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkX3JlY3Vyc2l2ZSAgZ2xfcmVjdXJzaXZlX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkCisjZGVmaW5lIF9fbGliY19sb2NrX2luaXRfcmVjdXJzaXZlICAgICAgICAgICAgICAgIGdsX3JlY3Vyc2l2ZV9sb2NrX2luaXQKKyNkZWZpbmUgX19saWJjX2xvY2tfbG9ja19yZWN1cnNpdmUgICAgICAgICAgICAgICAgZ2xfcmVjdXJzaXZlX2xvY2tfbG9jaworI2RlZmluZSBfX2xpYmNfbG9ja191bmxvY2tfcmVjdXJzaXZlICAgICAgICAgICAgICBnbF9yZWN1cnNpdmVfbG9ja191bmxvY2sKKyNkZWZpbmUgZ2x0aHJlYWRfaW5fdXNlICBsaWJpbnRsX3RocmVhZF9pbl91c2UKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja19pbml0X2Z1bmMgICAgIGxpYmludGxfbG9ja19pbml0X2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja19sb2NrX2Z1bmMgICAgIGxpYmludGxfbG9ja19sb2NrX2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfbG9ja191bmxvY2tfZnVuYyAgIGxpYmludGxfbG9ja191bmxvY2tfZnVuYworI2RlZmluZSBnbHRocmVhZF9sb2NrX2Rlc3Ryb3lfZnVuYyAgbGliaW50bF9sb2NrX2Rlc3Ryb3lfZnVuYworI2RlZmluZSBnbHRocmVhZF9yd2xvY2tfaW5pdF9tdWx0aXRocmVhZGVkICAgICBsaWJpbnRsX3J3bG9ja19pbml0X211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcndsb2NrX2luaXRfZnVuYyAgICAgICAgICAgICAgbGliaW50bF9yd2xvY2tfaW5pdF9mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19yZGxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3JkbG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19yZGxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3JkbG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja193cmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3dybG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja193cmxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3dybG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja191bmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcndsb2NrX3VubG9ja19tdWx0aXRocmVhZGVkCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja191bmxvY2tfZnVuYyAgICAgICAgICAgIGxpYmludGxfcndsb2NrX3VubG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3J3bG9ja19kZXN0cm95X211bHRpdGhyZWFkZWQgIGxpYmludGxfcndsb2NrX2Rlc3Ryb3lfbXVsdGl0aHJlYWRlZAorI2RlZmluZSBnbHRocmVhZF9yd2xvY2tfZGVzdHJveV9mdW5jICAgICAgICAgICBsaWJpbnRsX3J3bG9ja19kZXN0cm95X2Z1bmMKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfaW5pdF9tdWx0aXRocmVhZGVkICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2luaXRfbXVsdGl0aHJlYWRlZAorI2RlZmluZSBnbHRocmVhZF9yZWN1cnNpdmVfbG9ja19pbml0X2Z1bmMgICAgICAgICAgICAgIGxpYmludGxfcmVjdXJzaXZlX2xvY2tfaW5pdF9mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3JlY3Vyc2l2ZV9sb2NrX2xvY2tfbXVsdGl0aHJlYWRlZCAgICAgbGliaW50bF9yZWN1cnNpdmVfbG9ja19sb2NrX211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfbG9ja19mdW5jICAgICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2xvY2tfZnVuYworI2RlZmluZSBnbHRocmVhZF9yZWN1cnNpdmVfbG9ja191bmxvY2tfbXVsdGl0aHJlYWRlZCAgIGxpYmludGxfcmVjdXJzaXZlX2xvY2tfdW5sb2NrX211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfdW5sb2NrX2Z1bmMgICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX3VubG9ja19mdW5jCisjZGVmaW5lIGdsdGhyZWFkX3JlY3Vyc2l2ZV9sb2NrX2Rlc3Ryb3lfbXVsdGl0aHJlYWRlZCAgbGliaW50bF9yZWN1cnNpdmVfbG9ja19kZXN0cm95X211bHRpdGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfcmVjdXJzaXZlX2xvY2tfZGVzdHJveV9mdW5jICAgICAgICAgICBsaWJpbnRsX3JlY3Vyc2l2ZV9sb2NrX2Rlc3Ryb3lfZnVuYworI2RlZmluZSBnbHRocmVhZF9vbmNlX2Z1bmMgICAgICAgICAgICBsaWJpbnRsX29uY2VfZnVuYworI2RlZmluZSBnbHRocmVhZF9vbmNlX3NpbmdsZXRocmVhZGVkICBsaWJpbnRsX29uY2Vfc2luZ2xldGhyZWFkZWQKKyNkZWZpbmUgZ2x0aHJlYWRfb25jZV9tdWx0aXRocmVhZGVkICAgbGliaW50bF9vbmNlX211bHRpdGhyZWFkZWQKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9kaXJwYXRocy5oLmluIGIvZTJmc3Byb2dzL2xpYi9kaXJwYXRocy5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjY2I1NWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2RpcnBhdGhzLmguaW4KQEAgLTAsMCArMSwxMCBAQAorLyoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgcGF0aCBuYW1lcyBmb3IgdmFyaW91cyBkaXJlY3RvcmllcyBhcworICogY29udHJvbGxlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdC4KKyAqLworCisvKiBXaGVyZSB0byBwdXQgdGhlIG1lc3NhZ2VzIGZpbGUgZm9yIGludGVybmF0aW9uYWxpemF0aW9uIHN1cHBvcnQgKi8KKyNkZWZpbmUgTE9DQUxFRElSCQkiQGRhdGFkaXJAL2xvY2FsZSIKKworLyogV2hlcmUgdG8gZmluZCB0aGUgbWtlMmZzLmNvbmYgYW5kIGUyZnNjay5jb25mIGZpbGVzICovCisjZGVmaW5lIFJPT1RfU1lTQ09ORkRJUgkJIkByb290X3N5c2NvbmZkaXJAIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9saWIvZTJwL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE3MzJjMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL0FuZHJvaWQubWsKQEAgLTAsMCArMSw2NSBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQorCitsaWJleHQyX2UycF9zcmNfZmlsZXMgOj0gXAorCWZlYXR1cmUuYyBcCisJZmdldGZsYWdzLmMgXAorCWZzZXRmbGFncy5jIFwKKwlmZ2V0cHJvamVjdC5jIFwKKwlmc2V0cHJvamVjdC5jIFwKKwlmZ2V0dmVyc2lvbi5jIFwKKwlmc2V0dmVyc2lvbi5jIFwKKwlnZXRmbGFncy5jIFwKKwlnZXR2ZXJzaW9uLmMgXAorCWhhc2hzdHIuYyBcCisJaW9kLmMgXAorCWxzLmMgXAorCW1udG9wdHMuYyBcCisJcGFyc2VfbnVtLmMgXAorCXBlLmMgXAorCXBmLmMgXAorCXBzLmMgXAorCXNldGZsYWdzLmMgXAorCXNldHZlcnNpb24uYyBcCisJdXVpZC5jIFwKKwlvc3R5cGUuYyBcCisJcGVyY2VudC5jCisKK2xpYmV4dDJfZTJwX2NfaW5jbHVkZXMgOj0gZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitsaWJleHQyX2UycF9jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2xpYmV4dDJfZTJwX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworbGliZXh0Ml9lMnBfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9lMnBfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJfZTJwX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2UycF9jZmxhZ3MpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxpYmV4dDJfZTJwX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfZTJwCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsaWJleHQyX2UycF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9lMnBfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfZTJwX2NmbGFncykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChsaWJleHQyX2UycF9zeXN0ZW1fc3RhdGljX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX2UycAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9lMnBfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJfZTJwX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2UycF9jZmxhZ3MpCitMT0NBTF9NT0RVTEUgOj0gbGliZXh0Ml9lMnAtaG9zdAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9saWIvZTJwL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NmE4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDIwMiBAQAorIyBNYWtlZmlsZSBmb3IgdGhlIHNlY29uZCBleHRlbmRlZCBmaWxlIHN5c3RlbSB1dGlsaXR5IGZ1bmN0aW9ucworIworIyBDb3B5cmlnaHQgKEMpIDE5OTMgUmVteSBDYXJkIChjYXJkQG1hc2kuaWJwLmZyKQorIworIyBUaGlzIGZpbGUgY2FuIGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAorIyBQdWJsaWMgTGljZW5zZQorCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAordG9wX2J1aWxkZGlyID0gLi4vLi4KK215X2RpciA9IGxpYi9lMnAKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK2FsbDo6CWUycC5wYworCitPQkpTPQkJZmVhdHVyZS5vIGZnZXRmbGFncy5vIGZzZXRmbGFncy5vIGZnZXR2ZXJzaW9uLm8gZnNldHZlcnNpb24ubyBcCisJCWdldGZsYWdzLm8gZ2V0dmVyc2lvbi5vIGhhc2hzdHIubyBpb2QubyBscy5vIG1udG9wdHMubyBcCisJCXBhcnNlX251bS5vIHBlLm8gcGYubyBwcy5vIHNldGZsYWdzLm8gc2V0dmVyc2lvbi5vIHV1aWQubyBcCisJCW9zdHlwZS5vIHBlcmNlbnQubyBjcnlwdG9fbW9kZS5vIGZnZXRwcm9qZWN0Lm8gZnNldHByb2plY3QubworCitTUkNTPQkJJChzcmNkaXIpL2ZlYXR1cmUuYyAkKHNyY2RpcikvZmdldGZsYWdzLmMgXAorCQkkKHNyY2RpcikvZnNldGZsYWdzLmMgJChzcmNkaXIpL2ZnZXR2ZXJzaW9uLmMgXAorCQkkKHNyY2RpcikvZnNldHZlcnNpb24uYyAkKHNyY2RpcikvZ2V0ZmxhZ3MuYyBcCisJCSQoc3JjZGlyKS9nZXR2ZXJzaW9uLmMgJChzcmNkaXIpL2hhc2hzdHIuYyAkKHNyY2RpcikvaW9kLmMgXAorCQkkKHNyY2RpcikvbHMuYyAkKHNyY2RpcikvbW50b3B0cy5jICQoc3JjZGlyKS9wYXJzZV9udW0uYyBcCisJCSQoc3JjZGlyKS9wZS5jICQoc3JjZGlyKS9wZi5jICQoc3JjZGlyKS9wcy5jIFwKKwkJJChzcmNkaXIpL3NldGZsYWdzLmMgJChzcmNkaXIpL3NldHZlcnNpb24uYyAkKHNyY2RpcikvdXVpZC5jIFwKKwkJJChzcmNkaXIpL29zdHlwZS5jICQoc3JjZGlyKS9wZXJjZW50LmMgJChzcmNkaXIpL2NyeXB0b19tb2RlLmMgXAorCQkkKHNyY2RpcikvZmdldHByb2plY3QuYyAkKHNyY2RpcikvZnNldHByb2plY3QuYworSEZJTEVTPSBlMnAuaAorCitMSUJSQVJZPSBsaWJlMnAKK0xJQkRJUj0gZTJwCisKK0VMRl9WRVJTSU9OID0gMi4zCitFTEZfU09fVkVSU0lPTiA9IDIKK0VMRl9JTUFHRSA9IGxpYmUycAorRUxGX01ZRElSID0gZTJwCitFTEZfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorRUxGX09USEVSX0xJQlMgPQorCitCU0RMSUJfVkVSU0lPTiA9IDIuMQorQlNETElCX0lNQUdFID0gbGliZTJwCitCU0RMSUJfTVlESVIgPSBlMnAKK0JTRExJQl9JTlNUQUxMX0RJUiA9ICQocm9vdF9saWJkaXIpCisKK0BNQUtFRklMRV9MSUJSQVJZQAorQE1BS0VGSUxFX0VMRkAKK0BNQUtFRklMRV9CU0RMSUJACitATUFLRUZJTEVfUFJPRklMRUAKKworLmMubzoKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU1RMSUIpIC1jICQ8IC1vICRACisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CitAUFJPRklMRV9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NUTElCKSAtZyAtcGcgLW8gcHJvZmlsZWQvJCoubyAtYyAkPAorQEVMRl9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NITElCKSAtZlBJQyAtc2hhcmVkIC1vIGVsZnNoYXJlZC8kKi5vIC1jICQ8CitAQlNETElCX0NNVEAJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU0hMSUIpICQoQlNETElCX1BJQ19GTEFHKSAtbyBwaWMvJCoubyAtYyAkPAorCitlMnAucGM6ICQoc3JjZGlyKS9lMnAucGMuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwkkKEUpICIJQ09ORklHLlNUQVRVUyAkQCIKKwkkKFEpIGNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPWxpYi9lMnAvZTJwLnBjIC4vY29uZmlnLnN0YXR1cworCit0c3Rfb3N0eXBlOiAkKHNyY2Rpcikvb3N0eXBlLmMKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtRFRFU1RfUFJPR1JBTSAtSSQodG9wX3NyY2RpcikvbGliIC1vIHRzdF9vc3R5cGUgXAorCQkkKHNyY2Rpcikvb3N0eXBlLmMgJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKQorCit0c3RfZmVhdHVyZTogJChzcmNkaXIpL2ZlYXR1cmUuYworCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1EVEVTVF9QUk9HUkFNIC1JJCh0b3Bfc3JjZGlyKS9saWIgLW8gdHN0X2ZlYXR1cmUgXAorCQkkKHNyY2RpcikvZmVhdHVyZS5jICQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykKKworY2hlY2s6Ogl0c3Rfb3N0eXBlIHRzdF9mZWF0dXJlCisJLi90c3Rfb3N0eXBlCisJLi90c3RfZmVhdHVyZQorCitpbnN0YWxsZGlyczo6CisJJChFKSAiCU1LSU5TVEFMTERJUlMgJChsaWJkaXIpICQoaW5jbHVkZWRpcikvZTJwIgorCSQoUSkgJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChsaWJkaXIpIFwKKwkJJChERVNURElSKSQoaW5jbHVkZWRpcikvZTJwICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikKKworaW5zdGFsbDo6IGFsbCBpbnN0YWxsZGlycyAKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQobGliZGlyKS9saWJlMnAuYSIKKwkkKFEpICQoSU5TVEFMTF9EQVRBKSBsaWJlMnAuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmUycC5hCisJLSQoUSkgJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGliZTJwLmEKKwkkKFEpICQoQ0hNT0QpICQoTElCTU9ERSkgJChERVNURElSKSQobGliZGlyKS9saWJlMnAuYQorCSQoUSkgc2V0IC1lOyBmb3IgaSBpbiAkKEhGSUxFUyk7IGRvIFwKKwkgIGVjaG8gIglJTlNUQUxMX0RBVEEgJChpbmNsdWRlZGlyKS9lMnAvJCRpIjsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZTJwLyQkaTsgXAorCWRvbmUKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQocGtnY29uZmlnZGlyKS9lMnAucGMiCisJJChRKSAkKElOU1RBTExfREFUQSkgZTJwLnBjICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvZTJwLnBjCisKK3VuaW5zdGFsbDo6CisJJChSTSkgLWYgJChERVNURElSKSQobGliZGlyKS9saWJlMnAuYSBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvZTJwLnBjCisJJChSTSkgLXJmICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2UycAorCitjbGVhbjo6CisJJChSTSkgLWYgXCMqICoucyAqLm8gKi5hICp+ICouYmFrIGNvcmUgcHJvZmlsZWQvKgorCSQoUk0pIC1mIC4uL2xpYmUycC5hIC4uL2xpYmUycF9wLmEgdHN0X29zdHlwZSB0c3RfZmVhdHVyZSBlMnAucGMKKworbW9zdGx5Y2xlYW46OiBjbGVhbgorZGlzdGNsZWFuOjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlIGUycC5wYyBcCisJCSQoc3JjZGlyKS9UQUdTICQoc3JjZGlyKS9NYWtlZmlsZS5pbi5vbGQKKworJChPQkpTKTogc3ViZGlycworCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK2ZlYXR1cmUubzogJChzcmNkaXIpL2ZlYXR1cmUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWpiZC5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtbGlzdC5oCitmZ2V0ZmxhZ3MubzogJChzcmNkaXIpL2ZnZXRmbGFncy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitmc2V0ZmxhZ3MubzogJChzcmNkaXIpL2ZzZXRmbGFncy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitmZ2V0dmVyc2lvbi5vOiAkKHNyY2RpcikvZmdldHZlcnNpb24uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAorZnNldHZlcnNpb24ubzogJChzcmNkaXIpL2ZzZXR2ZXJzaW9uLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK2dldGZsYWdzLm86ICQoc3JjZGlyKS9nZXRmbGFncy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitnZXR2ZXJzaW9uLm86ICQoc3JjZGlyKS9nZXR2ZXJzaW9uLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK2hhc2hzdHIubzogJChzcmNkaXIpL2hhc2hzdHIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAoraW9kLm86ICQoc3JjZGlyKS9pb2QuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAorbHMubzogJChzcmNkaXIpL2xzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCittbnRvcHRzLm86ICQoc3JjZGlyKS9tbnRvcHRzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK3BhcnNlX251bS5vOiAkKHNyY2RpcikvcGFyc2VfbnVtLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK3BlLm86ICQoc3JjZGlyKS9wZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitwZi5vOiAkKHNyY2RpcikvcGYuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAorcHMubzogJChzcmNkaXIpL3BzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK3NldGZsYWdzLm86ICQoc3JjZGlyKS9zZXRmbGFncy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitzZXR2ZXJzaW9uLm86ICQoc3JjZGlyKS9zZXR2ZXJzaW9uLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9lMnAuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK3V1aWQubzogJChzcmNkaXIpL3V1aWQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHNyY2RpcikvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaAorb3N0eXBlLm86ICQoc3JjZGlyKS9vc3R5cGUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAorcGVyY2VudC5vOiAkKHNyY2RpcikvcGVyY2VudC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oCitjcnlwdG9fbW9kZS5vOiAkKHNyY2RpcikvY3J5cHRvX21vZGUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaAorZmdldHByb2plY3QubzogJChzcmNkaXIpL2ZnZXRwcm9qZWN0LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9wcm9qZWN0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHNyY2RpcikvZTJwLmgKK2ZzZXRwcm9qZWN0Lm86ICQoc3JjZGlyKS9mc2V0cHJvamVjdC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvcHJvamVjdC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJChzcmNkaXIpL2UycC5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9jcnlwdG9fbW9kZS5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvY3J5cHRvX21vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzU1M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvY3J5cHRvX21vZGUuYwpAQCAtMCwwICsxLDc0IEBACisvKgorICogY3J5cHRvX21vZGUuYyAtLS0gY29udmVydCBiZXR3ZWVuIGVuY3J5cHRpb24gbW9kZXMgYW5kIHN0cmluZ3MKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgIFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSAiZTJwLmgiCisKK3N0cnVjdCBtb2RlIHsKKwl1bnNpZ25lZCBpbnQJbnVtOworCWNvbnN0IGNoYXIJKnN0cmluZzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgbW9kZSBtb2RlX2xpc3RbXSA9IHsKKwl7CUVYVDRfRU5DUllQVElPTl9NT0RFX0lOVkFMSUQsCQkiSW52YWxpZCJ9LAorCXsJRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9YVFMsCSJBRVMtMjU2LVhUUyJ9LAorCXsJRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9HQ00sCSJBRVMtMjU2LUdDTSJ9LAorCXsJRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9DQkMsCSJBRVMtMjU2LUNCQyJ9LAorCXsJMCwgMCB9LAorfTsKKworY29uc3QgY2hhciAqZTJwX2VuY21vZGUyc3RyaW5nKGludCBudW0pCit7CisJc3RydWN0IG1vZGUgICpwOworCXN0YXRpYyBjaGFyIGJ1ZlsyMF07CisKKwlmb3IgKHAgPSBtb2RlX2xpc3Q7IHAtPnN0cmluZzsgcCsrKSB7CisJCWlmIChudW0gPT0gcC0+bnVtKQorCQkJcmV0dXJuIHAtPnN0cmluZzsKKwl9CisJc3ByaW50ZihidWYsICJFTkNfTU9ERV8lZCIsIG51bSk7CisJcmV0dXJuIGJ1ZjsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGhhc2ggYWxnb3JpdGhtLCBvciAtMSBvbiBlcnJvcgorICovCitpbnQgZTJwX3N0cmluZzJlbmNtb2RlKGNoYXIgKnN0cmluZykKK3sKKwlzdHJ1Y3QgbW9kZQkqcDsKKwljaGFyCQkqZXB0cjsKKwlpbnQJCW51bTsKKworCWZvciAocCA9IG1vZGVfbGlzdDsgcC0+c3RyaW5nOyBwKyspIHsKKwkJaWYgKCFzdHJjYXNlY21wKHN0cmluZywgcC0+c3RyaW5nKSkgeworCQkJcmV0dXJuIHAtPm51bTsKKwkJfQorCX0KKwlpZiAoc3RybmNhc2VjbXAoc3RyaW5nLCAiRU5DX01PREVfIiwgOSkpCisJCXJldHVybiAtMTsKKworCWlmIChzdHJpbmdbOV0gPT0gMCkKKwkJcmV0dXJuIC0xOworCW51bSA9IHN0cnRvbChzdHJpbmcrOSwgJmVwdHIsIDEwKTsKKwlpZiAobnVtID4gMjU1IHx8IG51bSA8IDApCisJCXJldHVybiAtMTsKKwlpZiAoKmVwdHIpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gbnVtOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9lMnAuaCBiL2UyZnNwcm9ncy9saWIvZTJwL2UycC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YjgzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9lMnAuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogZTJwLmggLS0tIGhlYWRlciBmaWxlIGZvciB0aGUgZTJwIGxpYnJhcnkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4JCS8qIE5lZWRlZCBieSBkaXJlbnQuaCBvbiBuZXRic2QgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorCisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfZnMuaD4KKworI2RlZmluZSBFMlBfRkVBVFVSRV9DT01QQVQJMAorI2RlZmluZSBFMlBfRkVBVFVSRV9JTkNPTVBBVAkxCisjZGVmaW5lIEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFUCTIKKyNkZWZpbmUgRTJQX0ZFQVRVUkVfVFlQRV9NQVNLCTB4MDMKKworI2RlZmluZSBFMlBfRkVBVFVSRV9ORUdBVEVfRkxBRwkweDgwCisKKyNkZWZpbmUgRTJQX0ZTX0ZFQVRVUkUJCTAKKyNkZWZpbmUgRTJQX0pPVVJOQUxfRkVBVFVSRQkxCisKKy8qIGBvcHRpb25zJyBmb3IgcHJpbnRfZmxhZ3MoKSAqLworCisjZGVmaW5lIFBGT1BUX0xPTkcgIDEgLyogTXVzdCBiZSAxIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYGludCBsb25nX2Zvcm1hdCcuICovCisKKworaW50IGZnZXRmbGFncyAoY29uc3QgY2hhciAqIG5hbWUsIHVuc2lnbmVkIGxvbmcgKiBmbGFncyk7CitpbnQgZmdldHZlcnNpb24gKGNvbnN0IGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBsb25nICogdmVyc2lvbik7CitpbnQgZnNldGZsYWdzIChjb25zdCBjaGFyICogbmFtZSwgdW5zaWduZWQgbG9uZyBmbGFncyk7CitpbnQgZnNldHZlcnNpb24gKGNvbnN0IGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBsb25nIHZlcnNpb24pOworaW50IGZnZXRwcm9qZWN0KGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgKnByb2plY3QpOworaW50IGZzZXRwcm9qZWN0KGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgcHJvamVjdCk7CitpbnQgZ2V0ZmxhZ3MgKGludCBmZCwgdW5zaWduZWQgbG9uZyAqIGZsYWdzKTsKK2ludCBnZXR2ZXJzaW9uIChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgKiB2ZXJzaW9uKTsKK2ludCBpdGVyYXRlX29uX2RpciAoY29uc3QgY2hhciAqIGRpcl9uYW1lLAorCQkgICAgaW50ICgqZnVuYykgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRpcmVudCAqLCB2b2lkICopLAorCQkgICAgdm9pZCAqIHByaXZhdGVfYXJnKTsKK3ZvaWQgbGlzdF9zdXBlcihzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHMpOwordm9pZCBsaXN0X3N1cGVyMihzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHMsIEZJTEUgKmYpOwordm9pZCBwcmludF9mc19lcnJvcnMgKEZJTEUgKiBmLCB1bnNpZ25lZCBzaG9ydCBlcnJvcnMpOwordm9pZCBwcmludF9mbGFncyAoRklMRSAqIGYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsIHVuc2lnbmVkIG9wdGlvbnMpOwordm9pZCBwcmludF9mc19zdGF0ZSAoRklMRSAqIGYsIHVuc2lnbmVkIHNob3J0IHN0YXRlKTsKK2ludCBzZXRmbGFncyAoaW50IGZkLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKK2ludCBzZXR2ZXJzaW9uIChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmVyc2lvbik7CisKK2NvbnN0IGNoYXIgKmUycF9mZWF0dXJlMnN0cmluZyhpbnQgY29tcGF0LCB1bnNpZ25lZCBpbnQgbWFzayk7Citjb25zdCBjaGFyICplMnBfanJubF9mZWF0dXJlMnN0cmluZyhpbnQgY29tcGF0LCB1bnNpZ25lZCBpbnQgbWFzayk7CitpbnQgZTJwX3N0cmluZzJmZWF0dXJlKGNoYXIgKnN0cmluZywgaW50ICpjb21wYXQsIHVuc2lnbmVkIGludCAqbWFzayk7CitpbnQgZTJwX2pybmxfc3RyaW5nMmZlYXR1cmUoY2hhciAqc3RyaW5nLCBpbnQgKmNvbXBhdF90eXBlLCB1bnNpZ25lZCBpbnQgKm1hc2spOworaW50IGUycF9lZGl0X2ZlYXR1cmUoY29uc3QgY2hhciAqc3RyLCBfX3UzMiAqY29tcGF0X2FycmF5LCBfX3UzMiAqb2tfYXJyYXkpOworaW50IGUycF9lZGl0X2ZlYXR1cmUyKGNvbnN0IGNoYXIgKnN0ciwgX191MzIgKmNvbXBhdF9hcnJheSwgX191MzIgKm9rX2FycmF5LAorCQkgICAgICBfX3UzMiAqY2xlYXJfb2tfYXJyYXksIGludCAqdHlwZV9lcnIsCisJCSAgICAgIHVuc2lnbmVkIGludCAqbWFza19lcnIpOworCitpbnQgZTJwX2lzX251bGxfdXVpZCh2b2lkICp1dSk7Cit2b2lkIGUycF91dWlkX3RvX3N0cih2b2lkICp1dSwgY2hhciAqb3V0KTsKK2NvbnN0IGNoYXIgKmUycF91dWlkMnN0cih2b2lkICp1dSk7CisKK2NvbnN0IGNoYXIgKmUycF9oYXNoMnN0cmluZyhpbnQgbnVtKTsKK2ludCBlMnBfc3RyaW5nMmhhc2goY2hhciAqc3RyaW5nKTsKKworY29uc3QgY2hhciAqZTJwX21udG9wdDJzdHJpbmcodW5zaWduZWQgaW50IG1hc2spOworaW50IGUycF9zdHJpbmcybW50b3B0KGNoYXIgKnN0cmluZywgdW5zaWduZWQgaW50ICptYXNrKTsKK2ludCBlMnBfZWRpdF9tbnRvcHRzKGNvbnN0IGNoYXIgKnN0ciwgX191MzIgKm1udG9wdHMsIF9fdTMyIG9rKTsKKwordW5zaWduZWQgbG9uZyBwYXJzZV9udW1fYmxvY2tzKGNvbnN0IGNoYXIgKmFyZywgaW50IGxvZ19ibG9ja19zaXplKTsKK3Vuc2lnbmVkIGxvbmcgbG9uZyBwYXJzZV9udW1fYmxvY2tzMihjb25zdCBjaGFyICphcmcsIGludCBsb2dfYmxvY2tfc2l6ZSk7CisKK2NoYXIgKmUycF9vczJzdHJpbmcoaW50IG9zX3R5cGUpOworaW50IGUycF9zdHJpbmcyb3MoY2hhciAqc3RyKTsKKwordW5zaWduZWQgaW50IGUycF9wZXJjZW50KGludCBwZXJjZW50LCB1bnNpZ25lZCBpbnQgYmFzZSk7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9lMnAucGMuaW4gYi9lMmZzcHJvZ3MvbGliL2UycC9lMnAucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3MWFlNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL2UycC5wYy5pbgpAQCAtMCwwICsxLDExIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKworTmFtZTogZTJwCitEZXNjcmlwdGlvbjogRXh0MmZzIHVzZXJwYWNlIHByb2dyYW1zIHV0aWxpdHkgbGlicmFyeQorVmVyc2lvbjogQEUyRlNQUk9HU19WRVJTSU9OQAorUmVxdWlyZXM6IAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZTJwIC1JJHtpbmNsdWRlZGlyfQorTGliczogLUwke2xpYmRpcn0gLWxlMnAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2ZlYXR1cmUuYyBiL2UyZnNwcm9ncy9saWIvZTJwL2ZlYXR1cmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Y2YzFkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvZmVhdHVyZS5jCkBAIC0wLDAgKzEsNDIzIEBACisvKgorICogZmVhdHVyZS5jIC0tLSBjb252ZXJ0IGJldHdlZW4gZmVhdHVyZXMgYW5kIHN0cmluZ3MKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgIFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKyNpbmNsdWRlIDxleHQyZnMvZXh0MmZzLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2tlcm5lbC1qYmQuaD4KKworc3RydWN0IGZlYXR1cmUgeworCWludAkJY29tcGF0OworCXVuc2lnbmVkIGludAltYXNrOworCWNvbnN0IGNoYXIJKnN0cmluZzsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmVhdHVyZSBmZWF0dXJlX2xpc3RbXSA9IHsKKwl7CUUyUF9GRUFUVVJFX0NPTVBBVCwgRVhUMl9GRUFUVVJFX0NPTVBBVF9ESVJfUFJFQUxMT0MsCisJCQkiZGlyX3ByZWFsbG9jIiB9LAorCXsJRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMLAorCQkJImhhc19qb3VybmFsIiB9LAorCXsJRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQyX0ZFQVRVUkVfQ09NUEFUX0lNQUdJQ19JTk9ERVMsCisJCQkiaW1hZ2ljX2lub2RlcyIgfSwKKwl7CUUyUF9GRUFUVVJFX0NPTVBBVCwgRVhUMl9GRUFUVVJFX0NPTVBBVF9FWFRfQVRUUiwKKwkJCSJleHRfYXR0ciIgfSwKKwl7CUUyUF9GRUFUVVJFX0NPTVBBVCwgRVhUMl9GRUFUVVJFX0NPTVBBVF9ESVJfSU5ERVgsCisJCQkiZGlyX2luZGV4IiB9LAorCXsJRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQyX0ZFQVRVUkVfQ09NUEFUX1JFU0laRV9JTk9ERSwKKwkJCSJyZXNpemVfaW5vZGUiIH0sCisJewlFMlBfRkVBVFVSRV9DT01QQVQsIEVYVDJfRkVBVFVSRV9DT01QQVRfTEFaWV9CRywKKwkJCSJsYXp5X2JnIiB9LAorCXsJRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQyX0ZFQVRVUkVfQ09NUEFUX0VYQ0xVREVfQklUTUFQLAorCQkJInNuYXBzaG90X2JpdG1hcCIgfSwKKwl7CUUyUF9GRUFUVVJFX0NPTVBBVCwgRVhUNF9GRUFUVVJFX0NPTVBBVF9TUEFSU0VfU1VQRVIyLAorCQkJInNwYXJzZV9zdXBlcjIiIH0sCisKKwl7CUUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULCBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX1NQQVJTRV9TVVBFUiwKKwkJCSJzcGFyc2Vfc3VwZXIiIH0sCisJewlFMlBfRkVBVFVSRV9ST19JTkNPTVBBVCwgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFLAorCQkJImxhcmdlX2ZpbGUiIH0sCisJewlFMlBfRkVBVFVSRV9ST19JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUsCisJCQkiaHVnZV9maWxlIiB9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0sCisJCQkidW5pbml0X2JnIiB9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0sCisJCQkidW5pbml0X2dyb3VwcyIgfSwKKwl7CUUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0RJUl9OTElOSywKKwkJCSJkaXJfbmxpbmsiIH0sCisJewlFMlBfRkVBVFVSRV9ST19JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9FWFRSQV9JU0laRSwKKwkJCSJleHRyYV9pc2l6ZSIgfSwKKwl7CUUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX1FVT1RBLAorCQkJInF1b3RhIiB9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfQklHQUxMT0MsCisJCQkiYmlnYWxsb2MifSwKKwl7CUUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX01FVEFEQVRBX0NTVU0sCisJCQkibWV0YWRhdGFfY3N1bSJ9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUkVQTElDQSwKKwkJCSJyZXBsaWNhIiB9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUkVBRE9OTFksCisJCQkicmVhZC1vbmx5IiB9LAorCXsJRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVCwKKwkJCSJwcm9qZWN0In0sCisKKwl7CUUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfQ09NUFJFU1NJT04sCisJCQkiY29tcHJlc3Npb24iIH0sCisJewlFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUMl9GRUFUVVJFX0lOQ09NUEFUX0ZJTEVUWVBFLAorCQkJImZpbGV0eXBlIiB9LAorCXsJRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9SRUNPVkVSLAorCQkJIm5lZWRzX3JlY292ZXJ5IiB9LAorCXsJRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9KT1VSTkFMX0RFViwKKwkJCSJqb3VybmFsX2RldiIgfSwKKwl7CUUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfRVhURU5UUywKKwkJCSJleHRlbnQiIH0sCisJewlFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUM19GRUFUVVJFX0lOQ09NUEFUX0VYVEVOVFMsCisJCQkiZXh0ZW50cyIgfSwKKwl7CUUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfTUVUQV9CRywKKwkJCSJtZXRhX2JnIiB9LAorCXsJRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF82NEJJVCwKKwkJCSI2NGJpdCIgfSwKKwl7ICAgICAgIEUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QLAorCQkJIm1tcCIgfSwKKwl7ICAgICAgIEUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRkxFWF9CRywKKwkJCSJmbGV4X2JnIn0sCisJeyAgICAgICBFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0VBX0lOT0RFLAorCQkJImVhX2lub2RlIn0sCisJeyAgICAgICBFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0RJUkRBVEEsCisJCQkiZGlyZGF0YSJ9LAorCXsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1NFRUQsCisJCQkibWV0YWRhdGFfY3N1bV9zZWVkIn0sCisJeyAgICAgICBFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0xBUkdFRElSLAorCQkJImxhcmdlX2RpciJ9LAorCXsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9JTkxJTkVfREFUQSwKKwkJCSJpbmxpbmVfZGF0YSJ9LAorCXsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9FTkNSWVBULAorCQkJImVuY3J5cHQifSwKKwl7CTAsIDAsIDAgfSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZmVhdHVyZSBqcm5sX2ZlYXR1cmVfbGlzdFtdID0geworICAgICAgIHsgICAgICAgRTJQX0ZFQVRVUkVfQ09NUEFULCBKRlNfRkVBVFVSRV9DT01QQVRfQ0hFQ0tTVU0sCisgICAgICAgICAgICAgICAgICAgICAgICJqb3VybmFsX2NoZWNrc3VtIiB9LAorCisgICAgICAgeyAgICAgICBFMlBfRkVBVFVSRV9JTkNPTVBBVCwgSkZTX0ZFQVRVUkVfSU5DT01QQVRfUkVWT0tFLAorICAgICAgICAgICAgICAgICAgICAgICAiam91cm5hbF9pbmNvbXBhdF9yZXZva2UiIH0sCisgICAgICAgeyAgICAgICBFMlBfRkVBVFVSRV9JTkNPTVBBVCwgSkZTX0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQsCisgICAgICAgICAgICAgICAgICAgICAgICJqb3VybmFsXzY0Yml0IiB9LAorICAgICAgIHsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEpGU19GRUFUVVJFX0lOQ09NUEFUX0FTWU5DX0NPTU1JVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImpvdXJuYWxfYXN5bmNfY29tbWl0IiB9LAorICAgICAgIHsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjIsCisgICAgICAgICAgICAgICAgICAgICAgICJqb3VybmFsX2NoZWNrc3VtX3YyIiB9LAorICAgICAgIHsgICAgICAgRTJQX0ZFQVRVUkVfSU5DT01QQVQsIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjMsCisgICAgICAgICAgICAgICAgICAgICAgICJqb3VybmFsX2NoZWNrc3VtX3YzIiB9LAorICAgICAgIHsgICAgICAgMCwgMCwgMCB9LAorfTsKKworY29uc3QgY2hhciAqZTJwX2ZlYXR1cmUyc3RyaW5nKGludCBjb21wYXQsIHVuc2lnbmVkIGludCBtYXNrKQoreworCXN0cnVjdCBmZWF0dXJlICAqZjsKKwlzdGF0aWMgY2hhciBidWZbMjBdOworCWNoYXIJZmNoYXI7CisJaW50CWZudW07CisKKwlmb3IgKGYgPSBmZWF0dXJlX2xpc3Q7IGYtPnN0cmluZzsgZisrKSB7CisJCWlmICgoY29tcGF0ID09IGYtPmNvbXBhdCkgJiYKKwkJICAgIChtYXNrID09IGYtPm1hc2spKQorCQkJcmV0dXJuIGYtPnN0cmluZzsKKwl9CisJc3dpdGNoIChjb21wYXQpIHsKKwljYXNlICBFMlBfRkVBVFVSRV9DT01QQVQ6CisJCWZjaGFyID0gJ0MnOworCQlicmVhazsKKwljYXNlIEUyUF9GRUFUVVJFX0lOQ09NUEFUOgorCQlmY2hhciA9ICdJJzsKKwkJYnJlYWs7CisJY2FzZSBFMlBfRkVBVFVSRV9ST19JTkNPTVBBVDoKKwkJZmNoYXIgPSAnUic7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWZjaGFyID0gJz8nOworCQlicmVhazsKKwl9CisJZm9yIChmbnVtID0gMDsgbWFzayA+Pj0gMTsgZm51bSsrKTsKKwlzcHJpbnRmKGJ1ZiwgIkZFQVRVUkVfJWMlZCIsIGZjaGFyLCBmbnVtKTsKKwlyZXR1cm4gYnVmOworfQorCitpbnQgZTJwX3N0cmluZzJmZWF0dXJlKGNoYXIgKnN0cmluZywgaW50ICpjb21wYXRfdHlwZSwgdW5zaWduZWQgaW50ICptYXNrKQoreworCXN0cnVjdCBmZWF0dXJlICAqZjsKKwljaGFyCQkqZXB0cjsKKwlpbnQJCW51bTsKKworCWZvciAoZiA9IGZlYXR1cmVfbGlzdDsgZi0+c3RyaW5nOyBmKyspIHsKKwkJaWYgKCFzdHJjYXNlY21wKHN0cmluZywgZi0+c3RyaW5nKSkgeworCQkJKmNvbXBhdF90eXBlID0gZi0+Y29tcGF0OworCQkJKm1hc2sgPSBmLT5tYXNrOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJaWYgKHN0cm5jYXNlY21wKHN0cmluZywgIkZFQVRVUkVfIiwgOCkpCisJCXJldHVybiAxOworCisJc3dpdGNoIChzdHJpbmdbOF0pIHsKKwljYXNlICdjJzoKKwljYXNlICdDJzoKKwkJKmNvbXBhdF90eXBlID0gRTJQX0ZFQVRVUkVfQ09NUEFUOworCQlicmVhazsKKwljYXNlICdpJzoKKwljYXNlICdJJzoKKwkJKmNvbXBhdF90eXBlID0gRTJQX0ZFQVRVUkVfSU5DT01QQVQ7CisJCWJyZWFrOworCWNhc2UgJ3InOgorCWNhc2UgJ1InOgorCQkqY29tcGF0X3R5cGUgPSBFMlBfRkVBVFVSRV9ST19JTkNPTVBBVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDE7CisJfQorCWlmIChzdHJpbmdbOV0gPT0gMCkKKwkJcmV0dXJuIDE7CisJbnVtID0gc3RydG9sKHN0cmluZys5LCAmZXB0ciwgMTApOworCWlmIChudW0gPiAzMSB8fCBudW0gPCAwKQorCQlyZXR1cm4gMTsKKwlpZiAoKmVwdHIpCisJCXJldHVybiAxOworCSptYXNrID0gMSA8PCBudW07CisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IGNoYXIgKmUycF9qcm5sX2ZlYXR1cmUyc3RyaW5nKGludCBjb21wYXQsIHVuc2lnbmVkIGludCBtYXNrKQoreworCXN0cnVjdCBmZWF0dXJlICAqZjsKKwlzdGF0aWMgY2hhciBidWZbMjBdOworCWNoYXIJZmNoYXI7CisJaW50CWZudW07CisKKwlmb3IgKGYgPSBqcm5sX2ZlYXR1cmVfbGlzdDsgZi0+c3RyaW5nOyBmKyspIHsKKwkJaWYgKChjb21wYXQgPT0gZi0+Y29tcGF0KSAmJgorCQkgICAgKG1hc2sgPT0gZi0+bWFzaykpCisJCQlyZXR1cm4gZi0+c3RyaW5nOworCX0KKwlzd2l0Y2ggKGNvbXBhdCkgeworCWNhc2UgIEUyUF9GRUFUVVJFX0NPTVBBVDoKKwkJZmNoYXIgPSAnQyc7CisJCWJyZWFrOworCWNhc2UgRTJQX0ZFQVRVUkVfSU5DT01QQVQ6CisJCWZjaGFyID0gJ0knOworCQlicmVhazsKKwljYXNlIEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFUOgorCQlmY2hhciA9ICdSJzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZmNoYXIgPSAnPyc7CisJCWJyZWFrOworCX0KKwlmb3IgKGZudW0gPSAwOyBtYXNrID4+PSAxOyBmbnVtKyspOworCXNwcmludGYoYnVmLCAiRkVBVFVSRV8lYyVkIiwgZmNoYXIsIGZudW0pOworCXJldHVybiBidWY7Cit9CisKK2ludCBlMnBfanJubF9zdHJpbmcyZmVhdHVyZShjaGFyICpzdHJpbmcsIGludCAqY29tcGF0X3R5cGUsIHVuc2lnbmVkIGludCAqbWFzaykKK3sKKwlzdHJ1Y3QgZmVhdHVyZSAgKmY7CisJY2hhcgkJKmVwdHI7CisJaW50CQludW07CisKKwlmb3IgKGYgPSBqcm5sX2ZlYXR1cmVfbGlzdDsgZi0+c3RyaW5nOyBmKyspIHsKKwkJaWYgKCFzdHJjYXNlY21wKHN0cmluZywgZi0+c3RyaW5nKSkgeworCQkJKmNvbXBhdF90eXBlID0gZi0+Y29tcGF0OworCQkJKm1hc2sgPSBmLT5tYXNrOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJaWYgKHN0cm5jYXNlY21wKHN0cmluZywgIkZFQVRVUkVfIiwgOCkpCisJCXJldHVybiAxOworCisJc3dpdGNoIChzdHJpbmdbOF0pIHsKKwljYXNlICdjJzoKKwljYXNlICdDJzoKKwkJKmNvbXBhdF90eXBlID0gRTJQX0ZFQVRVUkVfQ09NUEFUOworCQlicmVhazsKKwljYXNlICdpJzoKKwljYXNlICdJJzoKKwkJKmNvbXBhdF90eXBlID0gRTJQX0ZFQVRVUkVfSU5DT01QQVQ7CisJCWJyZWFrOworCWNhc2UgJ3InOgorCWNhc2UgJ1InOgorCQkqY29tcGF0X3R5cGUgPSBFMlBfRkVBVFVSRV9ST19JTkNPTVBBVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDE7CisJfQorCWlmIChzdHJpbmdbOV0gPT0gMCkKKwkJcmV0dXJuIDE7CisJbnVtID0gc3RydG9sKHN0cmluZys5LCAmZXB0ciwgMTApOworCWlmIChudW0gPiAzMSB8fCBudW0gPCAwKQorCQlyZXR1cm4gMTsKKwlpZiAoKmVwdHIpCisJCXJldHVybiAxOworCSptYXNrID0gMSA8PCBudW07CisJcmV0dXJuIDA7Cit9CitzdGF0aWMgY2hhciAqc2tpcF9vdmVyX2JsYW5rcyhjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfd29yZChjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmICFpc3NwYWNlKCpjcCkgJiYgKmNwICE9ICcsJykKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKKy8qCisgKiBFZGl0IGEgZmVhdHVyZSBzZXQgYXJyYXkgYXMgcmVxdWVzdGVkIGJ5IHRoZSB1c2VyLiAgVGhlIG9rX2FycmF5LAorICogaWYgc2V0LCBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGxpbWl0IHdoYXQgZmVhdHVyZXMgdGhlIHVzZXIgaXMKKyAqIGFsbG93ZWQgdG8gc2V0IG9yIGNsZWFyIHVzaW5nIHRoaXMgZnVuY3Rpb24uICBJZiBjbGVhcl9va19hcnJheSBpcyBzZXQsCisgKiB0aGVuIHVzZSBpdCB0ZWxsIHdoZXRoZXIgb3Igbm90IGl0IGlzIE9LIHRvIGNsZWFyIGEgZmlsZXN5c3RlbSBmZWF0dXJlLgorICovCitpbnQgZTJwX2VkaXRfZmVhdHVyZTIoY29uc3QgY2hhciAqc3RyLCBfX3UzMiAqY29tcGF0X2FycmF5LCBfX3UzMiAqb2tfYXJyYXksCisJCSAgICAgIF9fdTMyICpjbGVhcl9va19hcnJheSwgaW50ICp0eXBlX2VyciwKKwkJICAgICAgdW5zaWduZWQgaW50ICptYXNrX2VycikKK3sKKwljaGFyCQkqY3AsICpidWYsICpuZXh0OworCWludAkJbmVnOworCXVuc2lnbmVkIGludAltYXNrOworCWludAkJY29tcGF0X3R5cGU7CisJaW50CQlyYyA9IDA7CisKKwlpZiAoIWNsZWFyX29rX2FycmF5KQorCQljbGVhcl9va19hcnJheSA9IG9rX2FycmF5OworCisJaWYgKHR5cGVfZXJyKQorCQkqdHlwZV9lcnIgPSAwOworCWlmIChtYXNrX2VycikKKwkJKm1hc2tfZXJyID0gMDsKKworCWJ1ZiA9IG1hbGxvYyhzdHJsZW4oc3RyKSsxKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIDE7CisJc3RyY3B5KGJ1Ziwgc3RyKTsKKwlmb3IgKGNwID0gYnVmOyBjcCAmJiAqY3A7IGNwID0gbmV4dCA/IG5leHQrMSA6IDApIHsKKwkJbmVnID0gMDsKKwkJY3AgPSBza2lwX292ZXJfYmxhbmtzKGNwKTsKKwkJbmV4dCA9IHNraXBfb3Zlcl93b3JkKGNwKTsKKworCQlpZiAoKm5leHQgPT0gMCkKKwkJCW5leHQgPSAwOworCQllbHNlCisJCQkqbmV4dCA9IDA7CisKKwkJaWYgKChzdHJjYXNlY21wKGNwLCAibm9uZSIpID09IDApIHx8CisJCSAgICAoc3RyY2FzZWNtcChjcCwgImNsZWFyIikgPT0gMCkpIHsKKwkJCWNvbXBhdF9hcnJheVswXSA9IDA7CisJCQljb21wYXRfYXJyYXlbMV0gPSAwOworCQkJY29tcGF0X2FycmF5WzJdID0gMDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJc3dpdGNoICgqY3ApIHsKKwkJY2FzZSAnLSc6CisJCWNhc2UgJ14nOgorCQkJbmVnKys7CisJCQkvKiBmYWxsdGhyb3VnaCAqLworCQljYXNlICcrJzoKKwkJCWNwKys7CisJCQlicmVhazsKKwkJfQorCQlpZiAoZTJwX3N0cmluZzJmZWF0dXJlKGNwLCAmY29tcGF0X3R5cGUsICZtYXNrKSkgeworCQkJcmMgPSAxOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKG5lZykgeworCQkJaWYgKGNsZWFyX29rX2FycmF5ICYmCisJCQkgICAgIShjbGVhcl9va19hcnJheVtjb21wYXRfdHlwZV0gJiBtYXNrKSkgeworCQkJCXJjID0gMTsKKwkJCQlpZiAodHlwZV9lcnIpCisJCQkJCSp0eXBlX2VyciA9IChjb21wYXRfdHlwZSB8CisJCQkJCQkgICAgIEUyUF9GRUFUVVJFX05FR0FURV9GTEFHKTsKKwkJCQlpZiAobWFza19lcnIpCisJCQkJCSptYXNrX2VyciA9IG1hc2s7CisJCQkJYnJlYWs7CisJCQl9CisJCQljb21wYXRfYXJyYXlbY29tcGF0X3R5cGVdICY9IH5tYXNrOworCQl9IGVsc2UgeworCQkJaWYgKG9rX2FycmF5ICYmICEob2tfYXJyYXlbY29tcGF0X3R5cGVdICYgbWFzaykpIHsKKwkJCQlyYyA9IDE7CisJCQkJaWYgKHR5cGVfZXJyKQorCQkJCQkqdHlwZV9lcnIgPSBjb21wYXRfdHlwZTsKKwkJCQlpZiAobWFza19lcnIpCisJCQkJCSptYXNrX2VyciA9IG1hc2s7CisJCQkJYnJlYWs7CisJCQl9CisJCQljb21wYXRfYXJyYXlbY29tcGF0X3R5cGVdIHw9IG1hc2s7CisJCX0KKwl9CisJZnJlZShidWYpOworCXJldHVybiByYzsKK30KKworaW50IGUycF9lZGl0X2ZlYXR1cmUoY29uc3QgY2hhciAqc3RyLCBfX3UzMiAqY29tcGF0X2FycmF5LCBfX3UzMiAqb2tfYXJyYXkpCit7CisJcmV0dXJuIGUycF9lZGl0X2ZlYXR1cmUyKHN0ciwgY29tcGF0X2FycmF5LCBva19hcnJheSwgMCwgMCwgMCk7Cit9CisKKyNpZmRlZiBURVNUX1BST0dSQU0KK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgY29tcGF0LCBjb21wYXQyLCBpOworCXVuc2lnbmVkIGludCBtYXNrLCBtYXNrMjsKKwljb25zdCBjaGFyICpzdHI7CisJc3RydWN0IGZlYXR1cmUgKmY7CisKKwlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7CisJCWlmIChpID09IDApIHsKKwkJCWYgPSBmZWF0dXJlX2xpc3Q7CisJCQlwcmludGYoIkZlYXR1cmUgbGlzdDpcbiIpOworCQl9IGVsc2UgeworCQkJcHJpbnRmKCJcbkpvdXJuYWwgZmVhdHVyZSBsaXN0OlxuIik7CisJCQlmID0ganJubF9mZWF0dXJlX2xpc3Q7CisJCX0KKwkJZm9yICg7IGYtPnN0cmluZzsgZisrKSB7CisJCQlpZiAoaSA9PSAwKSB7CisJCQkJZTJwX3N0cmluZzJmZWF0dXJlKChjaGFyICopZi0+c3RyaW5nLCAmY29tcGF0LAorCQkJCQkJICAgJm1hc2spOworCQkJCXN0ciA9IGUycF9mZWF0dXJlMnN0cmluZyhjb21wYXQsIG1hc2spOworCQkJfSBlbHNlIHsKKwkJCQllMnBfanJubF9zdHJpbmcyZmVhdHVyZSgoY2hhciAqKWYtPnN0cmluZywKKwkJCQkJCQkmY29tcGF0LCAmbWFzayk7CisJCQkJc3RyID0gZTJwX2pybmxfZmVhdHVyZTJzdHJpbmcoY29tcGF0LCBtYXNrKTsKKwkJCX0KKworCQkJcHJpbnRmKCJcdENvbXBhdCA9ICVkLCBNYXNrID0gJXUsICVzXG4iLAorCQkJICAgICAgIGNvbXBhdCwgbWFzaywgZi0+c3RyaW5nKTsKKwkJCWlmIChzdHJjbXAoZi0+c3RyaW5nLCBzdHIpKSB7CisJCQkJaWYgKGUycF9zdHJpbmcyZmVhdHVyZSgoY2hhciAqKSBzdHIsICZjb21wYXQyLAorCQkJCQkJICAgICAgICZtYXNrMikgfHwKKwkJCQkgICAgKGNvbXBhdDIgIT0gY29tcGF0KSB8fAorCQkJCSAgICAobWFzazIgIT0gbWFzaykpIHsKKwkJCQkJZnByaW50ZihzdGRlcnIsICJGYWlsdXJlIVxuIik7CisJCQkJCWV4aXQoMSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCWV4aXQoMCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2ZnZXRmbGFncy5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvZmdldGZsYWdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I5M2NiYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL2ZnZXRmbGFncy5jCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogZmdldGZsYWdzLmMJCS0gR2V0IGEgZmlsZSBmbGFncyBvbiBhbiBleHQyIGZpbGUgc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIEhpc3Rvcnk6CisgKiA5My8xMC8zMAktIENyZWF0aW9uCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZiBIQVZFX0VYVDJfSU9DVExTCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZTJwLmgiCisKKyNpZmRlZiBPX0xBUkdFRklMRQorI2RlZmluZSBPUEVOX0ZMQUdTIChPX1JET05MWXxPX05PTkJMT0NLfE9fTEFSR0VGSUxFKQorI2Vsc2UKKyNkZWZpbmUgT1BFTl9GTEFHUyAoT19SRE9OTFl8T19OT05CTE9DSykKKyNlbmRpZgorCitpbnQgZmdldGZsYWdzIChjb25zdCBjaGFyICogbmFtZSwgdW5zaWduZWQgbG9uZyAqIGZsYWdzKQoreworCXN0cnVjdCBzdGF0IGJ1ZjsKKyNpZiBIQVZFX1NUQVRfRkxBR1MgJiYgIShBUFBMRV9EQVJXSU4gJiYgSEFWRV9FWFQyX0lPQ1RMUykKKworCWlmIChzdGF0IChuYW1lLCAmYnVmKSA9PSAtMSkKKwkJcmV0dXJuIC0xOworCisJKmZsYWdzID0gMDsKKyNpZmRlZiBVRl9JTU1VVEFCTEUKKwlpZiAoYnVmLnN0X2ZsYWdzICYgVUZfSU1NVVRBQkxFKQorCQkqZmxhZ3MgfD0gRVhUMl9JTU1VVEFCTEVfRkw7CisjZW5kaWYKKyNpZmRlZiBVRl9BUFBFTkQKKwlpZiAoYnVmLnN0X2ZsYWdzICYgVUZfQVBQRU5EKQorCQkqZmxhZ3MgfD0gRVhUMl9BUFBFTkRfRkw7CisjZW5kaWYKKyNpZmRlZiBVRl9OT0RVTVAKKwlpZiAoYnVmLnN0X2ZsYWdzICYgVUZfTk9EVU1QKQorCQkqZmxhZ3MgfD0gRVhUMl9OT0RVTVBfRkw7CisjZW5kaWYKKworCXJldHVybiAwOworI2Vsc2UgLyogIUhBVkVfU1RBVF9GTEFHUyB8fCAoQVBQTEVfREFSV0lOICYmIEhBVkVfRVhUMl9JT0NUTFMpICovCisjaWYgSEFWRV9FWFQyX0lPQ1RMUworCWludCBmZCwgciwgZiwgc2F2ZV9lcnJubyA9IDA7CisKKwlpZiAoIWxzdGF0KG5hbWUsICZidWYpICYmCisJICAgICFTX0lTUkVHKGJ1Zi5zdF9tb2RlKSAmJiAhU19JU0RJUihidWYuc3RfbW9kZSkpIHsKKwkJZ290byBub3RzdXBwOworCX0KKyNpZiAhQVBQTEVfREFSV0lOCisJZmQgPSBvcGVuIChuYW1lLCBPUEVOX0ZMQUdTKTsKKwlpZiAoZmQgPT0gLTEpCisJCXJldHVybiAtMTsKKwlyID0gaW9jdGwgKGZkLCBFWFQyX0lPQ19HRVRGTEFHUywgJmYpOworCWlmIChyID09IC0xKQorCQlzYXZlX2Vycm5vID0gZXJybm87CisJKmZsYWdzID0gZjsKKwljbG9zZSAoZmQpOworCWlmIChzYXZlX2Vycm5vKQorCQllcnJubyA9IHNhdmVfZXJybm87CisJcmV0dXJuIHI7CisjZWxzZSAvKiBBUFBMRV9EQVJXSU4gKi8KKyAgIGYgPSAtMTsKKyAgIHNhdmVfZXJybm8gPSBzeXNjYWxsKFNZU19mc2N0bCwgbmFtZSwgRVhUMl9JT0NfR0VURkxBR1MsICZmLCAwKTsKKyAgICpmbGFncyA9IGY7CisgICByZXR1cm4gKHNhdmVfZXJybm8pOworI2VuZGlmIC8qICFBUFBMRV9EQVJXSU4gKi8KK25vdHN1cHA6CisjZW5kaWYgLyogSEFWRV9FWFQyX0lPQ1RMUyAqLworI2VuZGlmCisJZXJybm8gPSBFT1BOT1RTVVBQOworCXJldHVybiAtMTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2ZnZXRwcm9qZWN0LmMgYi9lMmZzcHJvZ3MvbGliL2UycC9mZ2V0cHJvamVjdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMzIwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9mZ2V0cHJvamVjdC5jCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBmZ2V0cHJvamVjdC5jIC0tLSBnZXQgcHJvamVjdCBpZAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OSAgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorI2lmbmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaWYgSEFWRV9FWFQyX0lPQ1RMUworI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSAicHJvamVjdC5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJlMnAuaCIKKworI2lmZGVmIE9fTEFSR0VGSUxFCisjZGVmaW5lIE9QRU5fRkxBR1MgKE9fUkRPTkxZfE9fTk9OQkxPQ0t8T19MQVJHRUZJTEUpCisjZWxzZQorI2RlZmluZSBPUEVOX0ZMQUdTIChPX1JET05MWXxPX05PTkJMT0NLKQorI2VuZGlmCisKK2ludCBmZ2V0cHJvamVjdChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBsb25nICpwcm9qZWN0KQoreworI2lmbmRlZiBGU19JT0NfRlNHRVRYQVRUUgorCWVycm5vID0gRU9QTk9UU1VQUDsKKwlyZXR1cm4gLTE7CisjZWxzZQorCWludCBmZCwgciwgc2F2ZV9lcnJubyA9IDA7CisJc3RydWN0IGZzeGF0dHIgZnN4OworCisJZmQgPSBvcGVuIChuYW1lLCBPUEVOX0ZMQUdTKTsKKwlpZiAoZmQgPT0gLTEpCisJCXJldHVybiAtMTsKKwlyID0gaW9jdGwgKGZkLCBGU19JT0NfRlNHRVRYQVRUUiwgJmZzeCk7CisJaWYgKHIgPT0gMCkKKwkJKnByb2plY3QgPSBmc3guZnN4X3Byb2ppZDsKKwlzYXZlX2Vycm5vID0gZXJybm87CisJY2xvc2UgKGZkKTsKKwlpZiAoc2F2ZV9lcnJubykKKwkJZXJybm8gPSBzYXZlX2Vycm5vOworCXJldHVybiByOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9mZ2V0dmVyc2lvbi5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvZmdldHZlcnNpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2JlY2ZlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvZmdldHZlcnNpb24uYwpAQCAtMCwwICsxLDc0IEBACisvKgorICogZmdldHZlcnNpb24uYwktIEdldCBhIGZpbGUgdmVyc2lvbiBvbiBhbiBleHQyIGZpbGUgc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIEhpc3Rvcnk6CisgKiA5My8xMC8zMAktIENyZWF0aW9uCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKworI2luY2x1ZGUgImUycC5oIgorCisjaWZkZWYgT19MQVJHRUZJTEUKKyNkZWZpbmUgT1BFTl9GTEFHUyAoT19SRE9OTFl8T19OT05CTE9DS3xPX0xBUkdFRklMRSkKKyNlbHNlCisjZGVmaW5lIE9QRU5fRkxBR1MgKE9fUkRPTkxZfE9fTk9OQkxPQ0spCisjZW5kaWYKKworaW50IGZnZXR2ZXJzaW9uKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgKnZlcnNpb24pCit7CisJdW5zaWduZWQgaW50IHZlciA9IC0xOworCWludCByYyA9IC0xOworI2lmIEhBVkVfRVhUMl9JT0NUTFMKKyMgaWYgIUFQUExFX0RBUldJTgorCWludCBmZCwgc2F2ZV9lcnJubyA9IDA7CisKKwlmZCA9IG9wZW4obmFtZSwgT1BFTl9GTEFHUyk7CisJaWYgKGZkID09IC0xKQorCQlyZXR1cm4gLTE7CisKKwlyYyA9IGlvY3RsKGZkLCBFWFQyX0lPQ19HRVRWRVJTSU9OLCAmdmVyKTsKKwlpZiAocmMgPT0gLTEpCisJCXNhdmVfZXJybm8gPSBlcnJubzsKKwljbG9zZShmZCk7CisJaWYgKHJjID09IC0xKQorCQllcnJubyA9IHNhdmVfZXJybm87CisjIGVsc2UgLyogQVBQTEVfREFSV0lOICovCisJcmMgPSBzeXNjYWxsKFNZU19mc2N0bCwgbmFtZSwgRVhUMl9JT0NfR0VUVkVSU0lPTiwgJnZlciwgMCk7CisjIGVuZGlmIC8qICFBUFBMRV9EQVJXSU4gKi8KKyNlbHNlIC8qICEgSEFWRV9FWFQyX0lPQ1RMUyAqLworCWV4dGVybiBpbnQgZXJybm87CisKKwllcnJubyA9IEVPUE5PVFNVUFA7CisjZW5kaWYgLyogISBIQVZFX0VYVDJfSU9DVExTICovCisJaWYgKHJjID09IDApCisJCSp2ZXJzaW9uID0gdmVyOworCisJcmV0dXJuIHJjOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvZnNldGZsYWdzLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9mc2V0ZmxhZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjc4MzRiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvZnNldGZsYWdzLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBmc2V0ZmxhZ3MuYwkJLSBTZXQgYSBmaWxlIGZsYWdzIG9uIGFuIGV4dDIgZmlsZSBzeXN0ZW0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQgIFJlbXkgQ2FyZCA8Y2FyZEBtYXNpLmlicC5mcj4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFib3JhdG9pcmUgTUFTSSwgSW5zdGl0dXQgQmxhaXNlIFBhc2NhbAorICogICAgICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzaXRlIFBpZXJyZSBldCBNYXJpZSBDdXJpZSAoUGFyaXMgVkkpCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzEwLzMwCS0gQ3JlYXRpb24KKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEhBVkVfRVhUMl9JT0NUTFMKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJlMnAuaCIKKworLyoKKyAqIERlYWwgd2l0aCBsYW1lIGdsaWJjJ3MgdGhhdCBkZWZpbmUgdGhpcyBmdW5jdGlvbiB3aXRob3V0IGFjdHVhbGx5CisgKiBpbXBsZW1lbnRpbmcgaXQuICBDYW4geW91IHNheSAiYXR0cmFjdGl2ZSBudWlzYW5jZSIsIGJveXMgYW5kIGdpcmxzPworICogSSBrbmV3IHlvdSBjb3VsZCEKKyAqLworI2lmZGVmIF9fbGludXhfXworI3VuZGVmIEhBVkVfQ0hGTEFHUworI2VuZGlmCisKKyNpZmRlZiBPX0xBUkdFRklMRQorI2RlZmluZSBPUEVOX0ZMQUdTIChPX1JET05MWXxPX05PTkJMT0NLfE9fTEFSR0VGSUxFKQorI2Vsc2UKKyNkZWZpbmUgT1BFTl9GTEFHUyAoT19SRE9OTFl8T19OT05CTE9DSykKKyNlbmRpZgorCitpbnQgZnNldGZsYWdzIChjb25zdCBjaGFyICogbmFtZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKyNpZiBIQVZFX0NIRkxBR1MgJiYgIShBUFBMRV9EQVJXSU4gJiYgSEFWRV9FWFQyX0lPQ1RMUykKKwl1bnNpZ25lZCBsb25nIGJzZF9mbGFncyA9IDA7CisKKyNpZmRlZiBVRl9JTU1VVEFCTEUKKwlpZiAoZmxhZ3MgJiBFWFQyX0lNTVVUQUJMRV9GTCkKKwkJYnNkX2ZsYWdzIHw9IFVGX0lNTVVUQUJMRTsKKyNlbmRpZgorI2lmZGVmIFVGX0FQUEVORAorCWlmIChmbGFncyAmIEVYVDJfQVBQRU5EX0ZMKQorCQlic2RfZmxhZ3MgfD0gVUZfQVBQRU5EOworI2VuZGlmCisjaWZkZWYgVUZfTk9EVU1QCisJaWYgKGZsYWdzICYgRVhUMl9OT0RVTVBfRkwpCisJCWJzZF9mbGFncyB8PSBVRl9OT0RVTVA7CisjZW5kaWYKKworCXJldHVybiBjaGZsYWdzIChuYW1lLCBic2RfZmxhZ3MpOworI2Vsc2UgLyogIUhBVkVfQ0hGTEFHUyB8fCAoQVBQTEVfREFSV0lOICYmIEhBVkVfRVhUMl9JT0NUTFMpICovCisjaWYgSEFWRV9FWFQyX0lPQ1RMUworCWludCBmZCwgciwgZiwgc2F2ZV9lcnJubyA9IDA7CisJc3RydWN0IHN0YXQgYnVmOworCisJaWYgKCFsc3RhdChuYW1lLCAmYnVmKSAmJgorCSAgICAhU19JU1JFRyhidWYuc3RfbW9kZSkgJiYgIVNfSVNESVIoYnVmLnN0X21vZGUpKSB7CisJCWdvdG8gbm90c3VwcDsKKwl9CisjaWYgIUFQUExFX0RBUldJTgorCWZkID0gb3BlbiAobmFtZSwgT1BFTl9GTEFHUyk7CisJaWYgKGZkID09IC0xKQorCQlyZXR1cm4gLTE7CisJZiA9IChpbnQpIGZsYWdzOworCXIgPSBpb2N0bCAoZmQsIEVYVDJfSU9DX1NFVEZMQUdTLCAmZik7CisJaWYgKHIgPT0gLTEpCisJCXNhdmVfZXJybm8gPSBlcnJubzsKKwljbG9zZSAoZmQpOworCWlmIChzYXZlX2Vycm5vKQorCQllcnJubyA9IHNhdmVfZXJybm87CisjZWxzZSAvKiBBUFBMRV9EQVJXSU4gKi8KKwlmID0gKGludCkgZmxhZ3M7CisJcmV0dXJuIHN5c2NhbGwoU1lTX2ZzY3RsLCBuYW1lLCBFWFQyX0lPQ19TRVRGTEFHUywgJmYsIDApOworI2VuZGlmIC8qICFBUFBMRV9EQVJXSU4gKi8KKwlyZXR1cm4gcjsKKworbm90c3VwcDoKKyNlbmRpZiAvKiBIQVZFX0VYVDJfSU9DVExTICovCisjZW5kaWYKKwllcnJubyA9IEVPUE5PVFNVUFA7CisJcmV0dXJuIC0xOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvZnNldHByb2plY3QuYyBiL2UyZnNwcm9ncy9saWIvZTJwL2ZzZXRwcm9qZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRmNzA5MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL2ZzZXRwcm9qZWN0LmMKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIGZnZXRwcm9qZWN0LmMgLS0tIGdldCBwcm9qZWN0IGlkCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5ICBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZiBIQVZFX0VYVDJfSU9DVExTCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlICJwcm9qZWN0LmgiCisjZW5kaWYKKworI2luY2x1ZGUgImUycC5oIgorCisjaWZkZWYgT19MQVJHRUZJTEUKKyNkZWZpbmUgT1BFTl9GTEFHUyAoT19SRE9OTFl8T19OT05CTE9DS3xPX0xBUkdFRklMRSkKKyNlbHNlCisjZGVmaW5lIE9QRU5fRkxBR1MgKE9fUkRPTkxZfE9fTk9OQkxPQ0spCisjZW5kaWYKKworaW50IGZzZXRwcm9qZWN0KGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgcHJvamVjdCkKK3sKKyNpZm5kZWYgRlNfSU9DX0ZTR0VUWEFUVFIKKwllcnJubyA9IEVPUE5PVFNVUFA7CisJcmV0dXJuIC0xOworI2Vsc2UKKwlpbnQgZmQsIHIsIHNhdmVfZXJybm8gPSAwOworCXN0cnVjdCBmc3hhdHRyIGZzeDsKKworCWZkID0gb3BlbiAobmFtZSwgT1BFTl9GTEFHUyk7CisJaWYgKGZkID09IC0xKQorCQlyZXR1cm4gLTE7CisJciA9IGlvY3RsIChmZCwgRlNfSU9DX0ZTR0VUWEFUVFIsICZmc3gpOworCWlmIChyID09IC0xKSB7CisJCXNhdmVfZXJybm8gPSBlcnJubzsKKwkJZ290byBlcnJvdXQ7CisJfQorCWZzeC5mc3hfcHJvamlkID0gcHJvamVjdDsKKwlyID0gaW9jdGwgKGZkLCBGU19JT0NfRlNTRVRYQVRUUiwgJmZzeCk7CisJaWYgKHIgPT0gLTEpCisJCXNhdmVfZXJybm8gPSBlcnJubzsKK2Vycm91dDoKKwljbG9zZSAoZmQpOworCWlmIChzYXZlX2Vycm5vKQorCQllcnJubyA9IHNhdmVfZXJybm87CisJcmV0dXJuIHI7CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2ZzZXR2ZXJzaW9uLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9mc2V0dmVyc2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjYmZmNWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9mc2V0dmVyc2lvbi5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBmc2V0dmVyc2lvbi5jCS0gU2V0IGEgZmlsZSB2ZXJzaW9uIG9uIGFuIGV4dDIgZmlsZSBzeXN0ZW0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQgIFJlbXkgQ2FyZCA8Y2FyZEBtYXNpLmlicC5mcj4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFib3JhdG9pcmUgTUFTSSwgSW5zdGl0dXQgQmxhaXNlIFBhc2NhbAorICogICAgICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzaXRlIFBpZXJyZSBldCBNYXJpZSBDdXJpZSAoUGFyaXMgVkkpCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzEwLzMwCS0gQ3JlYXRpb24KKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorCisjaW5jbHVkZSAiZTJwLmgiCisKKyNpZmRlZiBPX0xBUkdFRklMRQorI2RlZmluZSBPUEVOX0ZMQUdTIChPX1JET05MWXxPX05PTkJMT0NLfE9fTEFSR0VGSUxFKQorI2Vsc2UKKyNkZWZpbmUgT1BFTl9GTEFHUyAoT19SRE9OTFl8T19OT05CTE9DSykKKyNlbmRpZgorCitpbnQgZnNldHZlcnNpb24gKGNvbnN0IGNoYXIgKiBuYW1lLCB1bnNpZ25lZCBsb25nIHZlcnNpb24pCit7CisjaWYgSEFWRV9FWFQyX0lPQ1RMUworI2lmICFBUFBMRV9EQVJXSU4KKwlpbnQgZmQsIHIsIHZlciwgc2F2ZV9lcnJubyA9IDA7CisKKwlmZCA9IG9wZW4gKG5hbWUsIE9QRU5fRkxBR1MpOworCWlmIChmZCA9PSAtMSkKKwkJcmV0dXJuIC0xOworCXZlciA9IChpbnQpIHZlcnNpb247CisJciA9IGlvY3RsIChmZCwgRVhUMl9JT0NfU0VUVkVSU0lPTiwgJnZlcik7CisJaWYgKHIgPT0gLTEpCisJCXNhdmVfZXJybm8gPSBlcnJubzsKKwljbG9zZSAoZmQpOworCWlmIChzYXZlX2Vycm5vKQorCQllcnJubyA9IHNhdmVfZXJybm87CisJcmV0dXJuIHI7CisjZWxzZQorICAgaW50IHZlciA9IChpbnQpdmVyc2lvbjsKKyAgIHJldHVybiBzeXNjYWxsKFNZU19mc2N0bCwgbmFtZSwgRVhUMl9JT0NfU0VUVkVSU0lPTiwgJnZlciwgMCk7CisjZW5kaWYKKyNlbHNlIC8qICEgSEFWRV9FWFQyX0lPQ1RMUyAqLworCWV4dGVybiBpbnQgZXJybm87CisJZXJybm8gPSBFT1BOT1RTVVBQOworCXJldHVybiAtMTsKKyNlbmRpZiAvKiAhIEhBVkVfRVhUMl9JT0NUTFMgKi8KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2dldGZsYWdzLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9nZXRmbGFncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0ZTJhZDcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9nZXRmbGFncy5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBnZXRmbGFncy5jCQktIEdldCBhIGZpbGUgZmxhZ3Mgb24gYW4gZXh0MiBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMTAvMzAJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZiBIQVZFX0VYVDJfSU9DVExTCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImUycC5oIgorCitpbnQgZ2V0ZmxhZ3MgKGludCBmZCwgdW5zaWduZWQgbG9uZyAqIGZsYWdzKQoreworCXN0cnVjdCBzdGF0IGJ1ZjsKKyNpZiBIQVZFX1NUQVRfRkxBR1MKKworCWlmIChmc3RhdCAoZmQsICZidWYpID09IC0xKQorCQlyZXR1cm4gLTE7CisKKwkqZmxhZ3MgPSAwOworI2lmZGVmIFVGX0lNTVVUQUJMRQorCWlmIChidWYuc3RfZmxhZ3MgJiBVRl9JTU1VVEFCTEUpCisJCSpmbGFncyB8PSBFWFQyX0lNTVVUQUJMRV9GTDsKKyNlbmRpZgorI2lmZGVmIFVGX0FQUEVORAorCWlmIChidWYuc3RfZmxhZ3MgJiBVRl9BUFBFTkQpCisJCSpmbGFncyB8PSBFWFQyX0FQUEVORF9GTDsKKyNlbmRpZgorI2lmZGVmIFVGX05PRFVNUAorCWlmIChidWYuc3RfZmxhZ3MgJiBVRl9OT0RVTVApCisJCSpmbGFncyB8PSBFWFQyX05PRFVNUF9GTDsKKyNlbmRpZgorCisJcmV0dXJuIDA7CisjZWxzZQorI2lmIEhBVkVfRVhUMl9JT0NUTFMKKwlpbnQgciwgZjsKKworCWlmICghZnN0YXQoZmQsICZidWYpICYmCisJICAgICFTX0lTUkVHKGJ1Zi5zdF9tb2RlKSAmJiAhU19JU0RJUihidWYuc3RfbW9kZSkpCisJCWdvdG8gbm90c3VwcDsKKwlyID0gaW9jdGwoZmQsIEVYVDJfSU9DX0dFVEZMQUdTLCAmZik7CisJKmZsYWdzID0gZjsKKworCXJldHVybiByOworbm90c3VwcDoKKyNlbmRpZiAvKiBIQVZFX0VYVDJfSU9DVExTICovCisjZW5kaWYKKwllcnJubyA9IEVPUE5PVFNVUFA7CisJcmV0dXJuIC0xOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvZ2V0dmVyc2lvbi5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvZ2V0dmVyc2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMDMxZmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9nZXR2ZXJzaW9uLmMKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIGdldHZlcnNpb24uYwkJLSBHZXQgYSBmaWxlIHZlcnNpb24gb24gYW4gZXh0MiBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMTAvMzAJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKworaW50IGdldHZlcnNpb24gKGludCBmZCwgdW5zaWduZWQgbG9uZyAqIHZlcnNpb24pCit7CisjaWYgSEFWRV9FWFQyX0lPQ1RMUworCWludAlyLCB2ZXI7CisKKwlyID0gaW9jdGwgKGZkLCBFWFQyX0lPQ19HRVRWRVJTSU9OLCAmdmVyKTsKKwkqdmVyc2lvbiA9IHZlcjsKKwlyZXR1cm4gcjsKKyNlbHNlIC8qICEgSEFWRV9FWFQyX0lPQ1RMUyAqLworCWV4dGVybiBpbnQgZXJybm87CisJZXJybm8gPSBFT1BOT1RTVVBQOworCXJldHVybiAtMTsKKyNlbmRpZiAvKiAhIEhBVkVfRVhUMl9JT0NUTFMgKi8KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL2hhc2hzdHIuYyBiL2UyZnNwcm9ncy9saWIvZTJwL2hhc2hzdHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNzM3NThjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvaGFzaHN0ci5jCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBmZWF0dXJlLmMgLS0tIGNvbnZlcnQgYmV0d2VlbiBmZWF0dXJlcyBhbmQgc3RyaW5ncworICoKKyAqIENvcHlyaWdodCAoQykgMTk5OSAgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgImUycC5oIgorCitzdHJ1Y3QgaGFzaCB7CisJaW50CQludW07CisJY29uc3QgY2hhcgkqc3RyaW5nOworfTsKKworc3RhdGljIHN0cnVjdCBoYXNoIGhhc2hfbGlzdFtdID0geworCXsJRVhUMl9IQVNIX0xFR0FDWSwgCSJsZWdhY3kiIH0sCisJewlFWFQyX0hBU0hfSEFMRl9NRDQsIAkiaGFsZl9tZDQiIH0sCisJewlFWFQyX0hBU0hfVEVBLCAJCSJ0ZWEiIH0sCisJewkwLCAwIH0sCit9OworCitjb25zdCBjaGFyICplMnBfaGFzaDJzdHJpbmcoaW50IG51bSkKK3sKKwlzdHJ1Y3QgaGFzaCAgKnA7CisJc3RhdGljIGNoYXIgYnVmWzIwXTsKKworCWZvciAocCA9IGhhc2hfbGlzdDsgcC0+c3RyaW5nOyBwKyspIHsKKwkJaWYgKG51bSA9PSBwLT5udW0pCisJCQlyZXR1cm4gcC0+c3RyaW5nOworCX0KKwlzcHJpbnRmKGJ1ZiwgIkhBU0hBTEdfJWQiLCBudW0pOworCXJldHVybiBidWY7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBoYXNoIGFsZ29yaXRobSwgb3IgLTEgb24gZXJyb3IKKyAqLworaW50IGUycF9zdHJpbmcyaGFzaChjaGFyICpzdHJpbmcpCit7CisJc3RydWN0IGhhc2gJKnA7CisJY2hhcgkJKmVwdHI7CisJaW50CQludW07CisKKwlmb3IgKHAgPSBoYXNoX2xpc3Q7IHAtPnN0cmluZzsgcCsrKSB7CisJCWlmICghc3RyY2FzZWNtcChzdHJpbmcsIHAtPnN0cmluZykpIHsKKwkJCXJldHVybiBwLT5udW07CisJCX0KKwl9CisJaWYgKHN0cm5jYXNlY21wKHN0cmluZywgIkhBU0hBTEdfIiwgOCkpCisJCXJldHVybiAtMTsKKworCWlmIChzdHJpbmdbOF0gPT0gMCkKKwkJcmV0dXJuIC0xOworCW51bSA9IHN0cnRvbChzdHJpbmcrOCwgJmVwdHIsIDEwKTsKKwlpZiAobnVtID4gMjU1IHx8IG51bSA8IDApCisJCXJldHVybiAtMTsKKwlpZiAoKmVwdHIpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gbnVtOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9pb2QuYyBiL2UyZnNwcm9ncy9saWIvZTJwL2lvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMDMwZGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9pb2QuYwpAQCAtMCwwICsxLDc2IEBACisvKgorICogaW9kLmMJCS0gSXRlcmF0ZSBhIGZ1bmN0aW9uIG9uIGVhY2ggZW50cnkgb2YgYSBkaXJlY3RvcnkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQgIFJlbXkgQ2FyZCA8Y2FyZEBtYXNpLmlicC5mcj4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFib3JhdG9pcmUgTUFTSSwgSW5zdGl0dXQgQmxhaXNlIFBhc2NhbAorICogICAgICAgICAgICAgICAgICAgICAgICAgICBVbml2ZXJzaXRlIFBpZXJyZSBldCBNYXJpZSBDdXJpZSAoUGFyaXMgVkkpCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzEwLzMwCS0gQ3JlYXRpb24KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZTJwLmgiCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2ludCBpdGVyYXRlX29uX2RpciAoY29uc3QgY2hhciAqIGRpcl9uYW1lLAorCQkgICAgaW50ICgqZnVuYykgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRpcmVudCAqLCB2b2lkICopLAorCQkgICAgdm9pZCAqIHByaXZhdGUpCit7CisJRElSICogZGlyOworCXN0cnVjdCBkaXJlbnQgKmRlLCAqZGVwOworCWludAltYXhfbGVuID0gLTEsIGxlbiwgcmV0ID0gMDsKKworI2lmIEhBVkVfUEFUSENPTkYgJiYgZGVmaW5lZChfUENfTkFNRV9NQVgpCisJbWF4X2xlbiA9IHBhdGhjb25mKGRpcl9uYW1lLCBfUENfTkFNRV9NQVgpOworI2VuZGlmCisJaWYgKG1heF9sZW4gPT0gLTEpIHsKKyNpZmRlZiBfUE9TSVhfTkFNRV9NQVgKKwkJbWF4X2xlbiA9IF9QT1NJWF9OQU1FX01BWDsKKyNlbHNlCisjaWZkZWYgTkFNRV9NQVgKKwkJbWF4X2xlbiA9IE5BTUVfTUFYOworI2Vsc2UKKwkJbWF4X2xlbiA9IDI1NjsKKyNlbmRpZiAvKiBOQU1FX01BWCAqLworI2VuZGlmIC8qIF9QT1NJWF9OQU1FX01BWCAqLworCX0KKwltYXhfbGVuICs9IHNpemVvZihzdHJ1Y3QgZGlyZW50KTsKKworCWRlID0gbWFsbG9jKG1heF9sZW4rMSk7CisJaWYgKCFkZSkKKwkJcmV0dXJuIC0xOworCW1lbXNldChkZSwgMCwgbWF4X2xlbisxKTsKKworCWRpciA9IG9wZW5kaXIgKGRpcl9uYW1lKTsKKwlpZiAoZGlyID09IE5VTEwpIHsKKwkJZnJlZShkZSk7CisJCXJldHVybiAtMTsKKwl9CisJd2hpbGUgKChkZXAgPSByZWFkZGlyIChkaXIpKSkgeworI2lmZGVmIEhBVkVfUkVDTEVOX0RJUkVOVAorCQlsZW4gPSBkZXAtPmRfcmVjbGVuOworCQlpZiAobGVuID4gbWF4X2xlbikKKwkJCWxlbiA9IG1heF9sZW47CisjZWxzZQorCQlsZW4gPSBzaXplb2Yoc3RydWN0IGRpcmVudCk7CisjZW5kaWYKKwkJbWVtY3B5KGRlLCBkZXAsIGxlbik7CisJCWlmICgoKmZ1bmMpKGRpcl9uYW1lLCBkZSwgcHJpdmF0ZSkpCisJCQlyZXQrKzsKKwl9CisJZnJlZShkZSk7CisJY2xvc2VkaXIoZGlyKTsKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvbHMuYyBiL2UyZnNwcm9ncy9saWIvZTJwL2xzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1ODZlMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL2xzLmMKQEAgLTAsMCArMSw0NzkgQEAKKy8qCisgKiBscy5jCQkJLSBMaXN0IHRoZSBjb250ZW50cyBvZiBhbiBleHQyZnMgc3VwZXJibG9jaworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgIFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxncnAuaD4KKyNpbmNsdWRlIDxwd2QuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3F1b3RhaW8uaCIKKworc3RhdGljIHZvaWQgcHJpbnRfdXNlciAodW5zaWduZWQgc2hvcnQgdWlkLCBGSUxFICpmKQoreworCXN0cnVjdCBwYXNzd2QgKnB3OworCisJZnByaW50ZihmLCAiJXUgIiwgdWlkKTsKKwlwdyA9IGdldHB3dWlkICh1aWQpOworCWlmIChwdyA9PSBOVUxMKQorCQlmcHJpbnRmKGYsICIodXNlciB1bmtub3duKVxuIik7CisJZWxzZQorCQlmcHJpbnRmKGYsICIodXNlciAlcylcbiIsIHB3LT5wd19uYW1lKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfZ3JvdXAgKHVuc2lnbmVkIHNob3J0IGdpZCwgRklMRSAqZikKK3sKKwlzdHJ1Y3QgZ3JvdXAgKmdyOworCisJZnByaW50ZihmLCAiJXUgIiwgZ2lkKTsKKwlnciA9IGdldGdyZ2lkIChnaWQpOworCWlmIChnciA9PSBOVUxMKQorCQlmcHJpbnRmKGYsICIoZ3JvdXAgdW5rbm93bilcbiIpOworCWVsc2UKKwkJZnByaW50ZihmLCAiKGdyb3VwICVzKVxuIiwgZ3ItPmdyX25hbWUpOworfQorCisjZGVmaW5lIE1PTlRIX0lOVCAoODY0MDAgKiAzMCkKKyNkZWZpbmUgV0VFS19JTlQgKDg2NDAwICogNykKKyNkZWZpbmUgREFZX0lOVAkoODY0MDApCisjZGVmaW5lIEhPVVJfSU5UICg2MCAqIDYwKQorI2RlZmluZSBNSU5VVEVfSU5UICg2MCkKKworc3RhdGljIGNvbnN0IGNoYXIgKmludGVydmFsX3N0cmluZyh1bnNpZ25lZCBpbnQgc2VjcykKK3sKKwlzdGF0aWMgY2hhciBidWZbMjU2XSwgdG1wWzgwXTsKKwlpbnQJCWhyLCBtaW4sIG51bTsKKworCWJ1ZlswXSA9IDA7CisKKwlpZiAoc2VjcyA9PSAwKQorCQlyZXR1cm4gIjxub25lPiI7CisKKwlpZiAoc2VjcyA+PSBNT05USF9JTlQpIHsKKwkJbnVtID0gc2VjcyAvIE1PTlRIX0lOVDsKKwkJc2VjcyAtPSBudW0qTU9OVEhfSU5UOworCQlzcHJpbnRmKGJ1ZiwgIiVkIG1vbnRoJXMiLCBudW0sIChudW0+MSkgPyAicyIgOiAiIik7CisJfQorCWlmIChzZWNzID49IFdFRUtfSU5UKSB7CisJCW51bSA9IHNlY3MgLyBXRUVLX0lOVDsKKwkJc2VjcyAtPSBudW0qV0VFS19JTlQ7CisJCXNwcmludGYodG1wLCAiJXMlZCB3ZWVrJXMiLCBidWZbMF0gPyAiLCAiIDogIiIsCisJCQludW0sIChudW0+MSkgPyAicyIgOiAiIik7CisJCXN0cmNhdChidWYsIHRtcCk7CisJfQorCWlmIChzZWNzID49IERBWV9JTlQpIHsKKwkJbnVtID0gc2VjcyAvIERBWV9JTlQ7CisJCXNlY3MgLT0gbnVtKkRBWV9JTlQ7CisJCXNwcmludGYodG1wLCAiJXMlZCBkYXklcyIsIGJ1ZlswXSA/ICIsICIgOiAiIiwKKwkJCW51bSwgKG51bT4xKSA/ICJzIiA6ICIiKTsKKwkJc3RyY2F0KGJ1ZiwgdG1wKTsKKwl9CisJaWYgKHNlY3MgPiAwKSB7CisJCWhyID0gc2VjcyAvIEhPVVJfSU5UOworCQlzZWNzIC09IGhyKkhPVVJfSU5UOworCQltaW4gPSBzZWNzIC8gTUlOVVRFX0lOVDsKKwkJc2VjcyAtPSBtaW4qTUlOVVRFX0lOVDsKKwkJc3ByaW50Zih0bXAsICIlcyVkOiUwMmQ6JTAyZCIsIGJ1ZlswXSA/ICIsICIgOiAiIiwKKwkJCWhyLCBtaW4sIHNlY3MpOworCQlzdHJjYXQoYnVmLCB0bXApOworCX0KKwlyZXR1cm4gYnVmOworfQorCitzdGF0aWMgdm9pZCBwcmludF9mZWF0dXJlcyhzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHMsIEZJTEUgKmYpCit7CisjaWZkZWYgRVhUMl9EWU5BTUlDX1JFVgorCWludAlpLCBqLCBwcmludGVkPTA7CisJX191MzIJKm1hc2sgPSAmcy0+c19mZWF0dXJlX2NvbXBhdCwgbTsKKworCWZwcmludGYoZiwgIkZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAiKTsKKwlmb3IgKGk9MDsgaSA8MzsgaSsrLG1hc2srKykgeworCQlmb3IgKGo9MCxtPTE7IGogPCAzMjsgaisrLCBtPDw9MSkgeworCQkJaWYgKCptYXNrICYgbSkgeworCQkJCWZwcmludGYoZiwgIiAlcyIsIGUycF9mZWF0dXJlMnN0cmluZyhpLCBtKSk7CisJCQkJcHJpbnRlZCsrOworCQkJfQorCQl9CisJfQorCWlmIChwcmludGVkID09IDApCisJCWZwcmludGYoZiwgIiAobm9uZSkiKTsKKwlmcHJpbnRmKGYsICJcbiIpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHByaW50X21udG9wdHMoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzLCBGSUxFICpmKQoreworI2lmZGVmIEVYVDJfRFlOQU1JQ19SRVYKKwlpbnQJaSwgcHJpbnRlZD0wOworCV9fdTMyCW1hc2sgPSBzLT5zX2RlZmF1bHRfbW91bnRfb3B0cywgbTsKKworCWZwcmludGYoZiwgIkRlZmF1bHQgbW91bnQgb3B0aW9uczogICAiKTsKKwlpZiAobWFzayAmIEVYVDNfREVGTV9KTU9ERSkgeworCQlmcHJpbnRmKGYsICIgJXMiLCBlMnBfbW50b3B0MnN0cmluZyhtYXNrICYgRVhUM19ERUZNX0pNT0RFKSk7CisJCXByaW50ZWQrKzsKKwl9CisJZm9yIChpPTAsbT0xOyBpIDwgMzI7IGkrKywgbTw8PTEpIHsKKwkJaWYgKG0gJiBFWFQzX0RFRk1fSk1PREUpCisJCQljb250aW51ZTsKKwkJaWYgKG1hc2sgJiBtKSB7CisJCQlmcHJpbnRmKGYsICIgJXMiLCBlMnBfbW50b3B0MnN0cmluZyhtKSk7CisJCQlwcmludGVkKys7CisJCX0KKwl9CisJaWYgKHByaW50ZWQgPT0gMCkKKwkJZnByaW50ZihmLCAiIChub25lKSIpOworCWZwcmludGYoZiwgIlxuIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgcHJpbnRfc3VwZXJfZmxhZ3Moc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzLCBGSUxFICpmKQoreworCWludAlmbGFnc19mb3VuZCA9IDA7CisKKwlpZiAocy0+c19mbGFncyA9PSAwKQorCQlyZXR1cm47CisKKwlmcHV0cygiRmlsZXN5c3RlbSBmbGFnczogICAgICAgICAiLCBmKTsKKwlpZiAocy0+c19mbGFncyAmIEVYVDJfRkxBR1NfU0lHTkVEX0hBU0gpIHsKKwkJZnB1dHMoInNpZ25lZF9kaXJlY3RvcnlfaGFzaCAiLCBmKTsKKwkJZmxhZ3NfZm91bmQrKzsKKwl9CisJaWYgKHMtPnNfZmxhZ3MgJiBFWFQyX0ZMQUdTX1VOU0lHTkVEX0hBU0gpIHsKKwkJZnB1dHMoInVuc2lnbmVkX2RpcmVjdG9yeV9oYXNoICIsIGYpOworCQlmbGFnc19mb3VuZCsrOworCX0KKwlpZiAocy0+c19mbGFncyAmIEVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTKSB7CisJCWZwdXRzKCJ0ZXN0X2ZpbGVzeXN0ZW0gIiwgZik7CisJCWZsYWdzX2ZvdW5kKys7CisJfQorCWlmIChmbGFnc19mb3VuZCkKKwkJZnB1dHMoIlxuIiwgZik7CisJZWxzZQorCQlmcHV0cygiKG5vbmUpXG4iLCBmKTsKK30KKworc3RhdGljIF9fdTY0IGUycF9ibG9ja3NfY291bnQoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyKQoreworCXJldHVybiBzdXBlci0+c19ibG9ja3NfY291bnQgfAorCQkoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KHN1cGVyKSA/CisJCShfX3U2NCkgc3VwZXItPnNfYmxvY2tzX2NvdW50X2hpIDw8IDMyIDogMCk7Cit9CisKK3N0YXRpYyBfX3U2NCBlMnBfcl9ibG9ja3NfY291bnQoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyKQoreworCXJldHVybiBzdXBlci0+c19yX2Jsb2Nrc19jb3VudCB8CisJCShleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoc3VwZXIpID8KKwkJKF9fdTY0KSBzdXBlci0+c19yX2Jsb2Nrc19jb3VudF9oaSA8PCAzMiA6IDApOworfQorCitzdGF0aWMgX191NjQgZTJwX2ZyZWVfYmxvY2tzX2NvdW50KHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlcikKK3sKKwlyZXR1cm4gc3VwZXItPnNfZnJlZV9ibG9ja3NfY291bnQgfAorCQkoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KHN1cGVyKSA/CisJCShfX3U2NCkgc3VwZXItPnNfZnJlZV9ibG9ja3NfaGkgPDwgMzIgOiAwKTsKK30KKworI2lmbmRlZiBFWFQyX0lOT0RFX1NJWkUKKyNkZWZpbmUgRVhUMl9JTk9ERV9TSVpFKHMpIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkKKyNlbmRpZgorCisjaWZuZGVmIEVYVDJfR09PRF9PTERfUkVWCisjZGVmaW5lIEVYVDJfR09PRF9PTERfUkVWIDAKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgY2hhciAqY2hlY2tzdW1fdHlwZShfX3U4IHR5cGUpCit7CisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBFWFQyX0NSQzMyQ19DSEtTVU06CisJCXJldHVybiAiY3JjMzJjIjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gInVua25vd24iOworCX0KK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnF1b3RhX3ByZWZpeFtNQVhRVU9UQVNdID0geworCVtVU1JRVU9UQV0gPSAiVXNlciBxdW90YSBpbm9kZToiLAorCVtHUlBRVU9UQV0gPSAiR3JvdXAgcXVvdGEgaW5vZGU6IiwKKwlbUFJKUVVPVEFdID0gIlByb2plY3QgcXVvdGEgaW5vZGU6IiwKK307CisKKy8qKgorICogQ29udmVydCB0eXBlIG9mIHF1b3RhIHRvIHdyaXR0ZW4gcmVwcmVzZW50YXRpb24KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKnF1b3RhX3R5cGUycHJlZml4KGVudW0gcXVvdGFfdHlwZSBxdHlwZSkKK3sKKwlyZXR1cm4gcXVvdGFfcHJlZml4W3F0eXBlXTsKK30KKwordm9pZCBsaXN0X3N1cGVyMihzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHNiLCBGSUxFICpmKQoreworCWludCBpbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCWNoYXIgYnVmWzgwXSwgKnN0cjsKKwl0aW1lX3QJdG07CisJZW51bSBxdW90YV90eXBlIHF0eXBlOworCisJaW5vZGVfYmxvY2tzX3Blcl9ncm91cCA9ICgoKHNiLT5zX2lub2Rlc19wZXJfZ3JvdXAgKgorCQkJCSAgICBFWFQyX0lOT0RFX1NJWkUoc2IpKSArCisJCQkJICAgRVhUMl9CTE9DS19TSVpFKHNiKSAtIDEpIC8KKwkJCQkgIEVYVDJfQkxPQ0tfU0laRShzYikpOworCWlmIChzYi0+c192b2x1bWVfbmFtZVswXSkgeworCQltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisJCXN0cm5jcHkoYnVmLCBzYi0+c192b2x1bWVfbmFtZSwgc2l6ZW9mKHNiLT5zX3ZvbHVtZV9uYW1lKSk7CisJfSBlbHNlCisJCXN0cmNweShidWYsICI8bm9uZT4iKTsKKwlmcHJpbnRmKGYsICJGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgICVzXG4iLCBidWYpOworCWlmIChzYi0+c19sYXN0X21vdW50ZWRbMF0pIHsKKwkJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCQlzdHJuY3B5KGJ1Ziwgc2ItPnNfbGFzdF9tb3VudGVkLCBzaXplb2Yoc2ItPnNfbGFzdF9tb3VudGVkKSk7CisJfSBlbHNlCisJCXN0cmNweShidWYsICI8bm90IGF2YWlsYWJsZT4iKTsKKwlmcHJpbnRmKGYsICJMYXN0IG1vdW50ZWQgb246ICAgICAgICAgICVzXG4iLCBidWYpOworCWZwcmludGYoZiwgIkZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgJXNcbiIsIGUycF91dWlkMnN0cihzYi0+c191dWlkKSk7CisJZnByaW50ZihmLCAiRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweCUwNFhcbiIsIHNiLT5zX21hZ2ljKTsKKwlmcHJpbnRmKGYsICJGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgICVkIiwgc2ItPnNfcmV2X2xldmVsKTsKKwlpZiAoc2ItPnNfcmV2X2xldmVsID09IEVYVDJfR09PRF9PTERfUkVWKSB7CisJCWZwcmludGYoZiwgIiAob3JpZ2luYWwpXG4iKTsKKyNpZmRlZiBFWFQyX0RZTkFNSUNfUkVWCisJfSBlbHNlIGlmIChzYi0+c19yZXZfbGV2ZWwgPT0gRVhUMl9EWU5BTUlDX1JFVikgeworCQlmcHJpbnRmKGYsICIgKGR5bmFtaWMpXG4iKTsKKyNlbmRpZgorCX0gZWxzZQorCQlmcHJpbnRmKGYsICIgKHVua25vd24pXG4iKTsKKwlwcmludF9mZWF0dXJlcyhzYiwgZik7CisJcHJpbnRfc3VwZXJfZmxhZ3Moc2IsIGYpOworCXByaW50X21udG9wdHMoc2IsIGYpOworCWlmIChzYi0+c19tb3VudF9vcHRzWzBdKQorCQlmcHJpbnRmKGYsICJNb3VudCBvcHRpb25zOiAgICAgICAgICAgICVzXG4iLCBzYi0+c19tb3VudF9vcHRzKTsKKwlmcHJpbnRmKGYsICJGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIik7CisJcHJpbnRfZnNfc3RhdGUgKGYsIHNiLT5zX3N0YXRlKTsKKwlmcHJpbnRmKGYsICJcbiIpOworCWZwcmludGYoZiwgIkVycm9ycyBiZWhhdmlvcjogICAgICAgICAgIik7CisJcHJpbnRfZnNfZXJyb3JzKGYsIHNiLT5zX2Vycm9ycyk7CisJZnByaW50ZihmLCAiXG4iKTsKKwlzdHIgPSBlMnBfb3Myc3RyaW5nKHNiLT5zX2NyZWF0b3Jfb3MpOworCWZwcmludGYoZiwgIkZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgJXNcbiIsIHN0cik7CisJZnJlZShzdHIpOworCWZwcmludGYoZiwgIklub2RlIGNvdW50OiAgICAgICAgICAgICAgJXVcbiIsIHNiLT5zX2lub2Rlc19jb3VudCk7CisJZnByaW50ZihmLCAiQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAlbGx1XG4iLCBlMnBfYmxvY2tzX2NvdW50KHNiKSk7CisJZnByaW50ZihmLCAiUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAlbGx1XG4iLCBlMnBfcl9ibG9ja3NfY291bnQoc2IpKTsKKwlpZiAoc2ItPnNfb3ZlcmhlYWRfYmxvY2tzKQorCQlmcHJpbnRmKGYsICJPdmVyaGVhZCBibG9ja3M6ICAgICAgICAgICV1XG4iLAorCQkJc2ItPnNfb3ZlcmhlYWRfYmxvY2tzKTsKKwlmcHJpbnRmKGYsICJGcmVlIGJsb2NrczogICAgICAgICAgICAgICVsbHVcbiIsIGUycF9mcmVlX2Jsb2Nrc19jb3VudChzYikpOworCWZwcmludGYoZiwgIkZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgJXVcbiIsIHNiLT5zX2ZyZWVfaW5vZGVzX2NvdW50KTsKKwlmcHJpbnRmKGYsICJGaXJzdCBibG9jazogICAgICAgICAgICAgICV1XG4iLCBzYi0+c19maXJzdF9kYXRhX2Jsb2NrKTsKKwlmcHJpbnRmKGYsICJCbG9jayBzaXplOiAgICAgICAgICAgICAgICV1XG4iLCBFWFQyX0JMT0NLX1NJWkUoc2IpKTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKHNiKSkKKwkJZnByaW50ZihmLCAiQ2x1c3RlciBzaXplOiAgICAgICAgICAgICAldVxuIiwKKwkJCUVYVDJfQ0xVU1RFUl9TSVpFKHNiKSk7CisJZWxzZQorCQlmcHJpbnRmKGYsICJGcmFnbWVudCBzaXplOiAgICAgICAgICAgICV1XG4iLAorCQkJRVhUMl9DTFVTVEVSX1NJWkUoc2IpKTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KHNiKSkKKwkJZnByaW50ZihmLCAiR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICAldVxuIiwgc2ItPnNfZGVzY19zaXplKTsKKwlpZiAoc2ItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcykKKwkJZnByaW50ZihmLCAiUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAldVxuIiwKKwkJCXNiLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MpOworCWZwcmludGYoZiwgIkJsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgJXVcbiIsIHNiLT5zX2Jsb2Nrc19wZXJfZ3JvdXApOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2Moc2IpKQorCQlmcHJpbnRmKGYsICJDbHVzdGVycyBwZXIgZ3JvdXA6ICAgICAgICV1XG4iLAorCQkJc2ItPnNfY2x1c3RlcnNfcGVyX2dyb3VwKTsKKwllbHNlCisJCWZwcmludGYoZiwgIkZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgJXVcbiIsCisJCQlzYi0+c19jbHVzdGVyc19wZXJfZ3JvdXApOworCWZwcmludGYoZiwgIklub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgJXVcbiIsIHNiLT5zX2lub2Rlc19wZXJfZ3JvdXApOworCWZwcmludGYoZiwgIklub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgJXVcbiIsIGlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCWlmIChzYi0+c19yYWlkX3N0cmlkZSkKKwkJZnByaW50ZihmLCAiUkFJRCBzdHJpZGU6ICAgICAgICAgICAgICAldVxuIiwKKwkJCXNiLT5zX3JhaWRfc3RyaWRlKTsKKwlpZiAoc2ItPnNfcmFpZF9zdHJpcGVfd2lkdGgpCisJCWZwcmludGYoZiwgIlJBSUQgc3RyaXBlIHdpZHRoOiAgICAgICAgJXVcbiIsCisJCQlzYi0+c19yYWlkX3N0cmlwZV93aWR0aCk7CisJaWYgKHNiLT5zX2ZpcnN0X21ldGFfYmcpCisJCWZwcmludGYoZiwgIkZpcnN0IG1ldGEgYmxvY2sgZ3JvdXA6ICAgJXVcbiIsCisJCQlzYi0+c19maXJzdF9tZXRhX2JnKTsKKwlpZiAoc2ItPnNfbG9nX2dyb3Vwc19wZXJfZmxleCkKKwkJZnByaW50ZihmLCAiRmxleCBibG9jayBncm91cCBzaXplOiAgICAldVxuIiwKKwkJCTEgPDwgc2ItPnNfbG9nX2dyb3Vwc19wZXJfZmxleCk7CisJaWYgKHNiLT5zX21rZnNfdGltZSkgeworCQl0bSA9IHNiLT5zX21rZnNfdGltZTsKKwkJZnByaW50ZihmLCAiRmlsZXN5c3RlbSBjcmVhdGVkOiAgICAgICAlcyIsIGN0aW1lKCZ0bSkpOworCX0KKwl0bSA9IHNiLT5zX210aW1lOworCWZwcmludGYoZiwgIkxhc3QgbW91bnQgdGltZTogICAgICAgICAgJXMiLAorCQlzYi0+c19tdGltZSA/IGN0aW1lKCZ0bSkgOiAibi9hXG4iKTsKKwl0bSA9IHNiLT5zX3d0aW1lOworCWZwcmludGYoZiwgIkxhc3Qgd3JpdGUgdGltZTogICAgICAgICAgJXMiLCBjdGltZSgmdG0pKTsKKwlmcHJpbnRmKGYsICJNb3VudCBjb3VudDogICAgICAgICAgICAgICV1XG4iLCBzYi0+c19tbnRfY291bnQpOworCWZwcmludGYoZiwgIk1heGltdW0gbW91bnQgY291bnQ6ICAgICAgJWRcbiIsIHNiLT5zX21heF9tbnRfY291bnQpOworCXRtID0gc2ItPnNfbGFzdGNoZWNrOworCWZwcmludGYoZiwgIkxhc3QgY2hlY2tlZDogICAgICAgICAgICAgJXMiLCBjdGltZSgmdG0pKTsKKwlmcHJpbnRmKGYsICJDaGVjayBpbnRlcnZhbDogICAgICAgICAgICV1ICglcylcbiIsIHNiLT5zX2NoZWNraW50ZXJ2YWwsCisJICAgICAgIGludGVydmFsX3N0cmluZyhzYi0+c19jaGVja2ludGVydmFsKSk7CisJaWYgKHNiLT5zX2NoZWNraW50ZXJ2YWwpCisJeworCQl0aW1lX3QgbmV4dDsKKworCQluZXh0ID0gc2ItPnNfbGFzdGNoZWNrICsgc2ItPnNfY2hlY2tpbnRlcnZhbDsKKwkJZnByaW50ZihmLCAiTmV4dCBjaGVjayBhZnRlcjogICAgICAgICAlcyIsIGN0aW1lKCZuZXh0KSk7CisJfQorI2RlZmluZSBQT1cyKHgpICgoX191NjQpIDEgPDwgKHgpKQorCWlmIChzYi0+c19rYnl0ZXNfd3JpdHRlbikgeworCQlmcHJpbnRmKGYsICJMaWZldGltZSB3cml0ZXM6ICAgICAgICAgICIpOworCQlpZiAoc2ItPnNfa2J5dGVzX3dyaXR0ZW4gPCBQT1cyKDEzKSkKKwkJCWZwcmludGYoZiwgIiVsbHUga0JcbiIsIHNiLT5zX2tieXRlc193cml0dGVuKTsKKwkJZWxzZSBpZiAoc2ItPnNfa2J5dGVzX3dyaXR0ZW4gPCBQT1cyKDIzKSkKKwkJCWZwcmludGYoZiwgIiVsbHUgTUJcbiIsCisJCQkJKHNiLT5zX2tieXRlc193cml0dGVuICsgUE9XMig5KSkgPj4gMTApOworCQllbHNlIGlmIChzYi0+c19rYnl0ZXNfd3JpdHRlbiA8IFBPVzIoMzMpKQorCQkJZnByaW50ZihmLCAiJWxsdSBHQlxuIiwKKwkJCQkoc2ItPnNfa2J5dGVzX3dyaXR0ZW4gKyBQT1cyKDE5KSkgPj4gMjApOworCQllbHNlIGlmIChzYi0+c19rYnl0ZXNfd3JpdHRlbiA8IFBPVzIoNDMpKQorCQkJZnByaW50ZihmLCAiJWxsdSBUQlxuIiwKKwkJCQkoc2ItPnNfa2J5dGVzX3dyaXR0ZW4gKyBQT1cyKDI5KSkgPj4gMzApOworCQllbHNlCisJCQlmcHJpbnRmKGYsICIlbGx1IFBCXG4iLAorCQkJCShzYi0+c19rYnl0ZXNfd3JpdHRlbiArIFBPVzIoMzkpKSA+PiA0MCk7CisJfQorCWZwcmludGYoZiwgIlJlc2VydmVkIGJsb2NrcyB1aWQ6ICAgICAgIik7CisJcHJpbnRfdXNlcihzYi0+c19kZWZfcmVzdWlkLCBmKTsKKwlmcHJpbnRmKGYsICJSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgICIpOworCXByaW50X2dyb3VwKHNiLT5zX2RlZl9yZXNnaWQsIGYpOworCWlmIChzYi0+c19yZXZfbGV2ZWwgPj0gRVhUMl9EWU5BTUlDX1JFVikgeworCQlmcHJpbnRmKGYsICJGaXJzdCBpbm9kZTogICAgICAgICAgICAgICVkXG4iLCBzYi0+c19maXJzdF9pbm8pOworCQlmcHJpbnRmKGYsICJJbm9kZSBzaXplOgkgICAgICAgICAgJWRcbiIsIHNiLT5zX2lub2RlX3NpemUpOworCQlpZiAoc2ItPnNfbWluX2V4dHJhX2lzaXplKQorCQkJZnByaW50ZihmLCAiUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAlZFxuIiwKKwkJCQlzYi0+c19taW5fZXh0cmFfaXNpemUpOworCQlpZiAoc2ItPnNfd2FudF9leHRyYV9pc2l6ZSkKKwkJCWZwcmludGYoZiwgIkRlc2lyZWQgZXh0cmEgaXNpemU6ICAgICAgJWRcbiIsCisJCQkJc2ItPnNfd2FudF9leHRyYV9pc2l6ZSk7CisJfQorCWlmICghZTJwX2lzX251bGxfdXVpZChzYi0+c19qb3VybmFsX3V1aWQpKQorCQlmcHJpbnRmKGYsICJKb3VybmFsIFVVSUQ6ICAgICAgICAgICAgICVzXG4iLAorCQkJZTJwX3V1aWQyc3RyKHNiLT5zX2pvdXJuYWxfdXVpZCkpOworCWlmIChzYi0+c19qb3VybmFsX2ludW0pCisJCWZwcmludGYoZiwgIkpvdXJuYWwgaW5vZGU6ICAgICAgICAgICAgJXVcbiIsCisJCQlzYi0+c19qb3VybmFsX2ludW0pOworCWlmIChzYi0+c19qb3VybmFsX2RldikKKwkJZnByaW50ZihmLCAiSm91cm5hbCBkZXZpY2U6CSAgICAgICAgICAweCUwNHhcbiIsCisJCQlzYi0+c19qb3VybmFsX2Rldik7CisJaWYgKHNiLT5zX2xhc3Rfb3JwaGFuKQorCQlmcHJpbnRmKGYsICJGaXJzdCBvcnBoYW4gaW5vZGU6ICAgICAgICV1XG4iLAorCQkJc2ItPnNfbGFzdF9vcnBoYW4pOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZGlyX2luZGV4KHNiKSB8fAorCSAgICBzYi0+c19kZWZfaGFzaF92ZXJzaW9uKQorCQlmcHJpbnRmKGYsICJEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgICVzXG4iLAorCQkJZTJwX2hhc2gyc3RyaW5nKHNiLT5zX2RlZl9oYXNoX3ZlcnNpb24pKTsKKwlpZiAoIWUycF9pc19udWxsX3V1aWQoc2ItPnNfaGFzaF9zZWVkKSkKKwkJZnByaW50ZihmLCAiRGlyZWN0b3J5IEhhc2ggU2VlZDogICAgICAlc1xuIiwKKwkJCWUycF91dWlkMnN0cihzYi0+c19oYXNoX3NlZWQpKTsKKwlpZiAoc2ItPnNfam5sX2JhY2t1cF90eXBlKSB7CisJCWZwcmludGYoZiwgIkpvdXJuYWwgYmFja3VwOiAgICAgICAgICAgIik7CisJCXN3aXRjaCAoc2ItPnNfam5sX2JhY2t1cF90eXBlKSB7CisJCWNhc2UgMToKKwkJCWZwcmludGYoZiwgImlub2RlIGJsb2Nrc1xuIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZwcmludGYoZiwgInR5cGUgJXVcbiIsIHNiLT5zX2pubF9iYWNrdXBfdHlwZSk7CisJCX0KKwl9CisJaWYgKHNiLT5zX2JhY2t1cF9iZ3NbMF0gfHwgc2ItPnNfYmFja3VwX2Jnc1sxXSkgeworCQlmcHJpbnRmKGYsICJCYWNrdXAgYmxvY2sgZ3JvdXBzOiAgICAgICIpOworCQlpZiAoc2ItPnNfYmFja3VwX2Jnc1swXSkKKwkJCWZwcmludGYoZiwgIiV1ICIsIHNiLT5zX2JhY2t1cF9iZ3NbMF0pOworCQlpZiAoc2ItPnNfYmFja3VwX2Jnc1sxXSkKKwkJCWZwcmludGYoZiwgIiV1ICIsIHNiLT5zX2JhY2t1cF9iZ3NbMV0pOworCQlmcHV0YygnXG4nLCBmKTsKKwl9CisJaWYgKHNiLT5zX3NuYXBzaG90X2ludW0pIHsKKwkJZnByaW50ZihmLCAiU25hcHNob3QgaW5vZGU6ICAgICAgICAgICAldVxuIiwKKwkJCXNiLT5zX3NuYXBzaG90X2ludW0pOworCQlmcHJpbnRmKGYsICJTbmFwc2hvdCBJRDogICAgICAgICAgICAgICV1XG4iLAorCQkJc2ItPnNfc25hcHNob3RfaWQpOworCQlmcHJpbnRmKGYsICJTbmFwc2hvdCByZXNlcnZlZCBibG9ja3M6ICVsbHVcbiIsCisJCQlzYi0+c19zbmFwc2hvdF9yX2Jsb2Nrc19jb3VudCk7CisJfQorCWlmIChzYi0+c19zbmFwc2hvdF9saXN0KQorCQlmcHJpbnRmKGYsICJTbmFwc2hvdCBsaXN0IGhlYWQ6ICAgICAgICV1XG4iLAorCQkJc2ItPnNfc25hcHNob3RfbGlzdCk7CisJaWYgKHNiLT5zX2Vycm9yX2NvdW50KQorCQlmcHJpbnRmKGYsICJGUyBFcnJvciBjb3VudDogICAgICAgICAgICV1XG4iLAorCQkJc2ItPnNfZXJyb3JfY291bnQpOworCWlmIChzYi0+c19maXJzdF9lcnJvcl90aW1lKSB7CisJCXRtID0gc2ItPnNfZmlyc3RfZXJyb3JfdGltZTsKKwkJZnByaW50ZihmLCAiRmlyc3QgZXJyb3IgdGltZTogICAgICAgICAlcyIsIGN0aW1lKCZ0bSkpOworCQltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisJCXN0cm5jcHkoYnVmLCAoY2hhciAqKXNiLT5zX2ZpcnN0X2Vycm9yX2Z1bmMsCisJCQlzaXplb2Yoc2ItPnNfZmlyc3RfZXJyb3JfZnVuYykpOworCQlmcHJpbnRmKGYsICJGaXJzdCBlcnJvciBmdW5jdGlvbjogICAgICVzXG4iLCBidWYpOworCQlmcHJpbnRmKGYsICJGaXJzdCBlcnJvciBsaW5lICM6ICAgICAgICV1XG4iLAorCQkJc2ItPnNfZmlyc3RfZXJyb3JfbGluZSk7CisJCWZwcmludGYoZiwgIkZpcnN0IGVycm9yIGlub2RlICM6ICAgICAgJXVcbiIsCisJCQlzYi0+c19maXJzdF9lcnJvcl9pbm8pOworCQlmcHJpbnRmKGYsICJGaXJzdCBlcnJvciBibG9jayAjOiAgICAgICVsbHVcbiIsCisJCQlzYi0+c19maXJzdF9lcnJvcl9ibG9jayk7CisJfQorCWlmIChzYi0+c19sYXN0X2Vycm9yX3RpbWUpIHsKKwkJdG0gPSBzYi0+c19sYXN0X2Vycm9yX3RpbWU7CisJCWZwcmludGYoZiwgIkxhc3QgZXJyb3IgdGltZTogICAgICAgICAgJXMiLCBjdGltZSgmdG0pKTsKKwkJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCQlzdHJuY3B5KGJ1ZiwgKGNoYXIgKilzYi0+c19sYXN0X2Vycm9yX2Z1bmMsCisJCQlzaXplb2Yoc2ItPnNfbGFzdF9lcnJvcl9mdW5jKSk7CisJCWZwcmludGYoZiwgIkxhc3QgZXJyb3IgZnVuY3Rpb246ICAgICAgJXNcbiIsIGJ1Zik7CisJCWZwcmludGYoZiwgIkxhc3QgZXJyb3IgbGluZSAjOiAgICAgICAgJXVcbiIsCisJCQlzYi0+c19sYXN0X2Vycm9yX2xpbmUpOworCQlmcHJpbnRmKGYsICJMYXN0IGVycm9yIGlub2RlICM6ICAgICAgICV1XG4iLAorCQkJc2ItPnNfbGFzdF9lcnJvcl9pbm8pOworCQlmcHJpbnRmKGYsICJMYXN0IGVycm9yIGJsb2NrICM6ICAgICAgICVsbHVcbiIsCisJCQlzYi0+c19sYXN0X2Vycm9yX2Jsb2NrKTsKKwl9CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tbXAoc2IpKSB7CisJCWZwcmludGYoZiwgIk1NUCBibG9jayBudW1iZXI6ICAgICAgICAgJWxsdVxuIiwKKwkJCShsb25nIGxvbmcpc2ItPnNfbW1wX2Jsb2NrKTsKKwkJZnByaW50ZihmLCAiTU1QIHVwZGF0ZSBpbnRlcnZhbDogICAgICAldVxuIiwKKwkJCXNiLT5zX21tcF91cGRhdGVfaW50ZXJ2YWwpOworCX0KKwlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspIHsKKwkJaWYgKCpxdW90YV9zYl9pbnVtcChzYiwgcXR5cGUpICE9IDApCisJCQlmcHJpbnRmKGYsICIlLTI2cyV1XG4iLAorCQkJCXF1b3RhX3R5cGUycHJlZml4KHF0eXBlKSwKKwkJCQkqcXVvdGFfc2JfaW51bXAoc2IsIHF0eXBlKSk7CisJfQorCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKHNiKSkgeworCQlmcHJpbnRmKGYsICJDaGVja3N1bSB0eXBlOiAgICAgICAgICAgICVzXG4iLAorCQkJY2hlY2tzdW1fdHlwZShzYi0+c19jaGVja3N1bV90eXBlKSk7CisJCWZwcmludGYoZiwgIkNoZWNrc3VtOiAgICAgICAgICAgICAgICAgMHglMDh4XG4iLAorCQkJc2ItPnNfY2hlY2tzdW0pOworCX0KKwlpZiAoIWUycF9pc19udWxsX3V1aWQoc2ItPnNfZW5jcnlwdF9wd19zYWx0KSkKKwkJZnByaW50ZihmLCAiRW5jcnlwdGlvbiBQVyBTYWx0OiAgICAgICAlc1xuIiwKKwkJCWUycF91dWlkMnN0cihzYi0+c19lbmNyeXB0X3B3X3NhbHQpKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfY3N1bV9zZWVkKHNiKSkKKwkJZnByaW50ZihmLCAiQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweCUwOHhcbiIsCisJCQlzYi0+c19jaGVja3N1bV9zZWVkKTsKK30KKwordm9pZCBsaXN0X3N1cGVyIChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqIHMpCit7CisJbGlzdF9zdXBlcjIocywgc3Rkb3V0KTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvbW50b3B0cy5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvbW50b3B0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMGFlOWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9tbnRvcHRzLmMKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBtb3VudG9wdHMuYyAtLS0gY29udmVydCBiZXR3ZWVuIGRlZmF1bHQgbW91bnQgb3B0aW9ucyBhbmQgc3RyaW5ncworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiAgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKworc3RydWN0IG1udG9wdCB7CisJdW5zaWduZWQgaW50CW1hc2s7CisJY29uc3QgY2hhcgkqc3RyaW5nOworfTsKKworc3RhdGljIHN0cnVjdCBtbnRvcHQgbW50b3B0X2xpc3RbXSA9IHsKKwl7IEVYVDJfREVGTV9ERUJVRywJImRlYnVnIiB9LAorCXsgRVhUMl9ERUZNX0JTREdST1VQUywJImJzZGdyb3VwcyIgfSwKKwl7IEVYVDJfREVGTV9YQVRUUl9VU0VSLAkidXNlcl94YXR0ciIgfSwKKwl7IEVYVDJfREVGTV9BQ0wsCSJhY2wiIH0sCisJeyBFWFQyX0RFRk1fVUlEMTYsCSJ1aWQxNiIgfSwKKwl7IEVYVDNfREVGTV9KTU9ERV9EQVRBLCAiam91cm5hbF9kYXRhIiB9LAorCXsgRVhUM19ERUZNX0pNT0RFX09SREVSRUQsICJqb3VybmFsX2RhdGFfb3JkZXJlZCIgfSwKKwl7IEVYVDNfREVGTV9KTU9ERV9XQkFDSywgImpvdXJuYWxfZGF0YV93cml0ZWJhY2siIH0sCisJeyBFWFQ0X0RFRk1fTk9CQVJSSUVSLAkibm9iYXJyaWVyIiB9LAorCXsgRVhUNF9ERUZNX0JMT0NLX1ZBTElESVRZLCAiYmxvY2tfdmFsaWRpdHkiIH0sCisJeyBFWFQ0X0RFRk1fRElTQ0FSRCwJImRpc2NhcmQifSwKKwl7IEVYVDRfREVGTV9OT0RFTEFMTE9DLAkibm9kZWxhbGxvYyJ9LAorCXsgMCwgMCB9LAorfTsKKworY29uc3QgY2hhciAqZTJwX21udG9wdDJzdHJpbmcodW5zaWduZWQgaW50IG1hc2spCit7CisJc3RydWN0IG1udG9wdCAgKmY7CisJc3RhdGljIGNoYXIgYnVmWzIwXTsKKwlpbnQJZm51bTsKKworCWZvciAoZiA9IG1udG9wdF9saXN0OyBmLT5zdHJpbmc7IGYrKykgeworCQlpZiAobWFzayA9PSBmLT5tYXNrKQorCQkJcmV0dXJuIGYtPnN0cmluZzsKKwl9CisJZm9yIChmbnVtID0gMDsgbWFzayA+Pj0gMTsgZm51bSsrKTsKKwlzcHJpbnRmKGJ1ZiwgIk1OVE9QVF8lZCIsIGZudW0pOworCXJldHVybiBidWY7Cit9CisKK2ludCBlMnBfc3RyaW5nMm1udG9wdChjaGFyICpzdHJpbmcsIHVuc2lnbmVkIGludCAqbWFzaykKK3sKKwlzdHJ1Y3QgbW50b3B0ICAqZjsKKwljaGFyCQkqZXB0cjsKKwlpbnQJCW51bTsKKworCWZvciAoZiA9IG1udG9wdF9saXN0OyBmLT5zdHJpbmc7IGYrKykgeworCQlpZiAoIXN0cmNhc2VjbXAoc3RyaW5nLCBmLT5zdHJpbmcpKSB7CisJCQkqbWFzayA9IGYtPm1hc2s7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwlpZiAoc3RybmNhc2VjbXAoc3RyaW5nLCAiTU5UT1BUXyIsIDcpKQorCQlyZXR1cm4gMTsKKworCWlmIChzdHJpbmdbOF0gPT0gMCkKKwkJcmV0dXJuIDE7CisJbnVtID0gc3RydG9sKHN0cmluZys4LCAmZXB0ciwgMTApOworCWlmIChudW0gPiAzMSB8fCBudW0gPCAwKQorCQlyZXR1cm4gMTsKKwlpZiAoKmVwdHIpCisJCXJldHVybiAxOworCSptYXNrID0gMSA8PCBudW07CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfYmxhbmtzKGNoYXIgKmNwKQoreworCXdoaWxlICgqY3AgJiYgaXNzcGFjZSgqY3ApKQorCQljcCsrOworCXJldHVybiBjcDsKK30KKworc3RhdGljIGNoYXIgKnNraXBfb3Zlcl93b3JkKGNoYXIgKmNwKQoreworCXdoaWxlICgqY3AgJiYgIWlzc3BhY2UoKmNwKSAmJiAqY3AgIT0gJywnKQorCQljcCsrOworCXJldHVybiBjcDsKK30KKworLyoKKyAqIEVkaXQgYSBtbnRvcHQgc2V0IGFycmF5IGFzIHJlcXVlc3RlZCBieSB0aGUgdXNlci4gIFRoZSBvaworICogcGFyYW1ldGVyLCBpZiBub24temVybywgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBsaW1pdCB3aGF0CisgKiBtbnRvcHRzIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gc2V0IG9yIGNsZWFyIHVzaW5nIHRoaXMgZnVuY3Rpb24uCisgKi8KK2ludCBlMnBfZWRpdF9tbnRvcHRzKGNvbnN0IGNoYXIgKnN0ciwgX191MzIgKm1udG9wdHMsIF9fdTMyIG9rKQoreworCWNoYXIJKmNwLCAqYnVmLCAqbmV4dDsKKwlpbnQJbmVnOworCXVuc2lnbmVkIGludAltYXNrOworCWludAlyYyA9IDA7CisKKwlidWYgPSBtYWxsb2Moc3RybGVuKHN0cikrMSk7CisJaWYgKCFidWYpCisJCXJldHVybiAxOworCXN0cmNweShidWYsIHN0cik7CisJY3AgPSBidWY7CisJd2hpbGUgKGNwICYmICpjcCkgeworCQluZWcgPSAwOworCQljcCA9IHNraXBfb3Zlcl9ibGFua3MoY3ApOworCQluZXh0ID0gc2tpcF9vdmVyX3dvcmQoY3ApOworCQlpZiAoKm5leHQgPT0gMCkKKwkJCW5leHQgPSAwOworCQllbHNlCisJCQkqbmV4dCA9IDA7CisJCXN3aXRjaCAoKmNwKSB7CisJCWNhc2UgJy0nOgorCQljYXNlICdeJzoKKwkJCW5lZysrOworCQkJLyogZmFsbHRocm91Z2ggKi8KKwkJY2FzZSAnKyc6CisJCQljcCsrOworCQkJYnJlYWs7CisJCX0KKwkJaWYgKGUycF9zdHJpbmcybW50b3B0KGNwLCAmbWFzaykpIHsKKwkJCXJjID0gMTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChvayAmJiAhKG9rICYgbWFzaykpIHsKKwkJCXJjID0gMTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChtYXNrICYgRVhUM19ERUZNX0pNT0RFKQorCQkJKm1udG9wdHMgJj0gfkVYVDNfREVGTV9KTU9ERTsKKwkJaWYgKG5lZykKKwkJCSptbnRvcHRzICY9IH5tYXNrOworCQllbHNlCisJCQkqbW50b3B0cyB8PSBtYXNrOworCQljcCA9IG5leHQgPyBuZXh0KzEgOiAwOworCX0KKwlmcmVlKGJ1Zik7CisJcmV0dXJuIHJjOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvb3N0eXBlLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9vc3R5cGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDAyZTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvb3N0eXBlLmMKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIGdldG9zdHlwZS5jICAgICAgICAgIC0gR2V0IHRoZSBGaWxlc3lzdGVtIE9TIHR5cGUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsMjAwNSAgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJlMnAuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworc3RhdGljIGNvbnN0IGNoYXIgKm9zX3RhYltdID0KKwl7ICJMaW51eCIsCisJICAiSHVyZCIsCisJICAiTWFzaXgiLAorCSAgIkZyZWVCU0QiLAorCSAgIkxpdGVzIiwKKwkgIDAgfTsKKworLyoKKyAqIENvbnZlcnQgYW4gb3NfdHlwZSB0byBhIHN0cmluZworICovCitjaGFyICplMnBfb3Myc3RyaW5nKGludCBvc190eXBlKQoreworICAgICAgICBjb25zdCBjaGFyCSpvczsKKwljaGFyIAkJKnJldDsKKworCWlmIChvc190eXBlIDw9IEVYVDJfT1NfTElURVMpCisJCW9zID0gb3NfdGFiW29zX3R5cGVdOworCWVsc2UKKwkJb3MgPSAiKHVua25vd24gb3MpIjsKKworICAgICAgICByZXQgPSBtYWxsb2Moc3RybGVuKG9zKSsxKTsKKwlpZiAocmV0KQorCQlzdHJjcHkocmV0LCBvcyk7CisgICAgICAgIHJldHVybiByZXQ7Cit9CisKKy8qCisgKiBDb252ZXJ0IGFuIG9zX3R5cGUgdG8gYSBzdHJpbmcKKyAqLworaW50IGUycF9zdHJpbmcyb3MoY2hhciAqc3RyKQoreworCWNvbnN0IGNoYXIJKipjcHA7CisJaW50CQlpID0gMDsKKworCWZvciAoY3BwID0gb3NfdGFiOyAqY3BwOyBjcHArKywgaSsrKSB7CisJCWlmICghc3RyY2FzZWNtcChzdHIsICpjcHApKQorCQkJcmV0dXJuIGk7CisJfQorCXJldHVybiAtMTsKK30KKworI2lmZGVmIFRFU1RfUFJPR1JBTQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIgCSpzOworCWludAlpLCBvczsKKworCWZvciAoaT0wOyBpIDw9IEVYVDJfT1NfTElURVM7IGkrKykgeworCQlzID0gZTJwX29zMnN0cmluZyhpKTsKKwkJb3MgPSBlMnBfc3RyaW5nMm9zKHMpOworCQlwcmludGYoIiVkOiAlcyAoJWQpXG4iLCBpLCBzLCBvcyk7CisJCWlmIChpICE9IG9zKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWx1cmUhXG4iKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJZXhpdCgwKTsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3BhcnNlX251bS5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvcGFyc2VfbnVtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThkNjI4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL3BhcnNlX251bS5jCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBwYXJzZV9udW0uYwkJLSBQYXJzZSB0aGUgbnVtYmVyIG9mIGJsb2NrcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCwyMDA1ICBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImUycC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3Vuc2lnbmVkIGxvbmcgbG9uZyBwYXJzZV9udW1fYmxvY2tzMihjb25zdCBjaGFyICphcmcsIGludCBsb2dfYmxvY2tfc2l6ZSkKK3sKKwljaGFyICpwOworCXVuc2lnbmVkIGxvbmcgbG9uZyBudW07CisKKwludW0gPSBzdHJ0b3VsbChhcmcsICZwLCAwKTsKKworCWlmIChwWzBdICYmIHBbMV0pCisJCXJldHVybiAwOworCisJc3dpdGNoICgqcCkgewkJLyogVXNpbmcgZmFsbC10aHJvdWdoIGxvZ2ljICovCisJY2FzZSAnVCc6IGNhc2UgJ3QnOgorCQludW0gPDw9IDEwOworCQkvKiBmYWxsdGhyb3VnaCAqLworCWNhc2UgJ0cnOiBjYXNlICdnJzoKKwkJbnVtIDw8PSAxMDsKKwkJLyogZmFsbHRocm91Z2ggKi8KKwljYXNlICdNJzogY2FzZSAnbSc6CisJCW51bSA8PD0gMTA7CisJCS8qIGZhbGx0aHJvdWdoICovCisJY2FzZSAnSyc6IGNhc2UgJ2snOgorCQlpZiAobG9nX2Jsb2NrX3NpemUgPCAwKQorCQkJbnVtIDw8PSAxMDsKKwkJZWxzZQorCQkJbnVtID4+PSBsb2dfYmxvY2tfc2l6ZTsKKwkJYnJlYWs7CisJY2FzZSAncyc6CisJCWlmIChsb2dfYmxvY2tfc2l6ZSA8IDApCisJCQludW0gPDw9IDk7CisJCWVsc2UKKwkJCW51bSA+Pj0gKDErbG9nX2Jsb2NrX3NpemUpOworCQlicmVhazsKKwljYXNlICdcMCc6CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gbnVtOworfQorCit1bnNpZ25lZCBsb25nIHBhcnNlX251bV9ibG9ja3MoY29uc3QgY2hhciAqYXJnLCBpbnQgbG9nX2Jsb2NrX3NpemUpCit7CisJcmV0dXJuIHBhcnNlX251bV9ibG9ja3MyKGFyZywgbG9nX2Jsb2NrX3NpemUpOworfQorCisjaWZkZWYgREVCVUcKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwl1bnNpZ25lZCBsb25nIG51bTsKKwlpbnQgbG9nX2Jsb2NrX3NpemUgPSAwOworCisJaWYgKGFyZ2MgIT0gMiAmJiBhcmdjICE9IDMpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgYXJnIFtsb2dfYmxvY2tfc2l6ZV1cbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCWlmIChhcmdjID09IDMpIHsKKwkJY2hhciAqcDsKKworCQlsb2dfYmxvY2tfc2l6ZSA9IHN0cnRvbChhcmd2WzJdLCAmcCwgMCk7CisJCWlmICgqcCkgeworCQkJZnByaW50ZihzdGRlcnIsICJCYWQgbG9nX2Jsb2NrX3NpemU6ICVzXG4iLCBhcmd2WzJdKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwludW0gPSBwYXJzZV9udW1fYmxvY2tzKGFyZ3ZbMV0sIGxvZ19ibG9ja19zaXplKTsKKworCXByaW50ZigiUGFyc2VkIG51bWJlcjogJWx1XG4iLCBudW0pOworCWV4aXQoMCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3BlLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9wZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMjQ1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9wZS5jCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBwZS5jCQkJLSBQcmludCBhIHNlY29uZCBleHRlbmRlZCBmaWxlc3lzdGVtIGVycm9ycyBiZWhhdmlvcgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTQvMDEvMDkJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZTJwLmgiCisKK3ZvaWQgcHJpbnRfZnNfZXJyb3JzIChGSUxFICogZiwgdW5zaWduZWQgc2hvcnQgZXJyb3JzKQoreworCXN3aXRjaCAoZXJyb3JzKQorCXsKKwkJY2FzZSBFWFQyX0VSUk9SU19DT05USU5VRToKKwkJCWZwcmludGYgKGYsICJDb250aW51ZSIpOworCQkJYnJlYWs7CisJCWNhc2UgRVhUMl9FUlJPUlNfUk86CisJCQlmcHJpbnRmIChmLCAiUmVtb3VudCByZWFkLW9ubHkiKTsKKwkJCWJyZWFrOworCQljYXNlIEVYVDJfRVJST1JTX1BBTklDOgorCQkJZnByaW50ZiAoZiwgIlBhbmljIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZwcmludGYgKGYsICJVbmtub3duIChjb250aW51ZSkiKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2UycC9wZXJjZW50LmMgYi9lMmZzcHJvZ3MvbGliL2UycC9wZXJjZW50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM0MGNkNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL3BlcmNlbnQuYwpAQCAtMCwwICsxLDY3IEBACisvKgorICogcGVyY2VudC5jCQktIFRha2UgcGVyY2VudGFnZSBvZiBhIG51bWJlcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiAgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJlMnAuaCIKKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisvKgorICogV2Ugd29yayByZWFsbHkgaGFyZCB0byBjYWxjdWxhdGUgdGhpcyBhY2N1cmF0ZWx5LCB3aGlsZSBhdm9pZGluZworICogYW4gb3ZlcmZsb3cuICAiSXMgdGhlcmUgYSBoeXBoZW4gaW4gYW5hbC1yZXRlbnRpdmU/IiAgOi0pCisgKi8KK3Vuc2lnbmVkIGludCBlMnBfcGVyY2VudChpbnQgcGVyY2VudCwgdW5zaWduZWQgaW50IGJhc2UpCit7CisJdW5zaWduZWQgaW50IG1hc2sgPSB+KCgxIDw8IChzaXplb2YodW5zaWduZWQgaW50KSAtIDEpICogOCkgLSAxKTsKKworCWlmICghcGVyY2VudCkKKwkJcmV0dXJuIDA7CisJaWYgKDEwMCAlIHBlcmNlbnQgPT0gMCkKKwkJcmV0dXJuIGJhc2UgLyAoMTAwIC8gcGVyY2VudCk7CisJaWYgKG1hc2sgJiBiYXNlKQorCQlyZXR1cm4gKGJhc2UgLyAxMDApICogcGVyY2VudDsKKwlyZXR1cm4gYmFzZSAqIHBlcmNlbnQgLyAxMDA7Cit9CisKKyNpZmRlZiBERUJVRworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK21haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXVuc2lnbmVkIGludCBiYXNlOworCWludCBwZXJjZW50OworCWNoYXIgKnA7CisJaW50IGxvZ19ibG9ja19zaXplID0gMDsKKworCWlmIChhcmdjICE9IDMpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgcGVyY2VudCBiYXNlXG4iLCBhcmd2WzBdKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlwZXJjZW50ID0gc3RydG91bChhcmd2WzFdLCAmcCwgMCk7CisJaWYgKHBbMF0gJiYgcFsxXSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkJhZCBwZXJjZW50OiAlc1xuIiwgYXJndlsxXSk7CisJCWV4aXQoMSk7CisJfQorCisJYmFzZSA9IHN0cnRvdWwoYXJndlsyXSwgJnAsIDApOworCWlmIChwWzBdICYmIHBbMV0pIHsKKwkJZnByaW50ZihzdGRlcnIsICJCYWQgYmFzZTogJXNcbiIsIGFyZ3ZbMl0pOworCQlleGl0KDEpOworCX0KKworCXByaW50ZigiJWQgcGVyY2VudCBvZiAldSBpcyAldS5cbiIsIHBlcmNlbnQsIGJhc2UsCisJICAgICAgIGUycF9wZXJjZW50KHBlcmNlbnQsIGJhc2UpKTsKKworCWV4aXQoMCk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3BmLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9wZi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YTA4NmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9wZi5jCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBwZi5jCQkJLSBQcmludCBmaWxlIGF0dHJpYnV0ZXMgb24gYW4gZXh0MiBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMTAvMzAJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZTJwLmgiCisKK3N0cnVjdCBmbGFnc19uYW1lIHsKKwl1bnNpZ25lZCBsb25nCWZsYWc7CisJY29uc3QgY2hhcgkqc2hvcnRfbmFtZTsKKwljb25zdCBjaGFyCSpsb25nX25hbWU7Cit9OworCitzdGF0aWMgc3RydWN0IGZsYWdzX25hbWUgZmxhZ3NfYXJyYXlbXSA9IHsKKwl7IEVYVDJfU0VDUk1fRkwsICJzIiwgIlNlY3VyZV9EZWxldGlvbiIgfSwKKwl7IEVYVDJfVU5STV9GTCwgInUiICwgIlVuZGVsZXRlIiB9LAorCXsgRVhUMl9TWU5DX0ZMLCAiUyIsICJTeW5jaHJvbm91c19VcGRhdGVzIiB9LAorCXsgRVhUMl9ESVJTWU5DX0ZMLCAiRCIsICJTeW5jaHJvbm91c19EaXJlY3RvcnlfVXBkYXRlcyIgfSwKKwl7IEVYVDJfSU1NVVRBQkxFX0ZMLCAiaSIsICJJbW11dGFibGUiIH0sCisJeyBFWFQyX0FQUEVORF9GTCwgImEiLCAiQXBwZW5kX09ubHkiIH0sCisJeyBFWFQyX05PRFVNUF9GTCwgImQiLCAiTm9fRHVtcCIgfSwKKwl7IEVYVDJfTk9BVElNRV9GTCwgIkEiLCAiTm9fQXRpbWUiIH0sCisJeyBFWFQyX0NPTVBSX0ZMLCAiYyIsICJDb21wcmVzc2lvbl9SZXF1ZXN0ZWQiIH0sCisJeyBFWFQ0X0VOQ1JZUFRfRkwsICJFIiwgIkVuY3J5cHRlZCIgfSwKKwl7IEVYVDNfSk9VUk5BTF9EQVRBX0ZMLCAiaiIsICJKb3VybmFsZWRfRGF0YSIgfSwKKwl7IEVYVDJfSU5ERVhfRkwsICJJIiwgIkluZGV4ZWRfZGlyZWN0b3J5IiB9LAorCXsgRVhUMl9OT1RBSUxfRkwsICJ0IiwgIk5vX1RhaWxtZXJnaW5nIiB9LAorCXsgRVhUMl9UT1BESVJfRkwsICJUIiwgIlRvcF9vZl9EaXJlY3RvcnlfSGllcmFyY2hpZXMiIH0sCisJeyBFWFQ0X0VYVEVOVFNfRkwsICJlIiwgIkV4dGVudHMiIH0sCisJeyBFWFQ0X0hVR0VfRklMRV9GTCwgImgiLCAiSHVnZV9maWxlIiB9LAorCXsgRlNfTk9DT1dfRkwsICJDIiwgIk5vX0NPVyIgfSwKKwl7IEVYVDRfSU5MSU5FX0RBVEFfRkwsICJOIiwgIklubGluZV9EYXRhIiB9LAorCXsgRVhUNF9QUk9KSU5IRVJJVF9GTCwgIlAiLCAiUHJvamVjdF9IaWVyYXJjaHkiIH0sCisJeyAwLCBOVUxMLCBOVUxMIH0KK307CisKK3ZvaWQgcHJpbnRfZmxhZ3MgKEZJTEUgKiBmLCB1bnNpZ25lZCBsb25nIGZsYWdzLCB1bnNpZ25lZCBvcHRpb25zKQoreworCWludCBsb25nX29wdCA9IChvcHRpb25zICYgUEZPUFRfTE9ORyk7CisJc3RydWN0IGZsYWdzX25hbWUgKmZwOworCWludAlmaXJzdCA9IDE7CisKKwlmb3IgKGZwID0gZmxhZ3NfYXJyYXk7IGZwLT5mbGFnICE9IDA7IGZwKyspIHsKKwkJaWYgKGZsYWdzICYgZnAtPmZsYWcpIHsKKwkJCWlmIChsb25nX29wdCkgeworCQkJCWlmIChmaXJzdCkKKwkJCQkJZmlyc3QgPSAwOworCQkJCWVsc2UKKwkJCQkJZnB1dHMoIiwgIiwgZik7CisJCQkJZnB1dHMoZnAtPmxvbmdfbmFtZSwgZik7CisJCQl9IGVsc2UKKwkJCQlmcHV0cyhmcC0+c2hvcnRfbmFtZSwgZik7CisJCX0gZWxzZSB7CisJCQlpZiAoIWxvbmdfb3B0KQorCQkJCWZwdXRzKCItIiwgZik7CisJCX0KKwl9CisJaWYgKGxvbmdfb3B0ICYmIGZpcnN0KQorCQlmcHV0cygiLS0tIiwgZik7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3Byb2plY3QuaCBiL2UyZnNwcm9ncy9saWIvZTJwL3Byb2plY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTM0MjVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvcHJvamVjdC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiBwcm9qZWN0LmgKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml9mcy5oPgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKEZTX0lPQ19GU0dFVFhBVFRSKQorI2RlZmluZSBGU19JT0NfRlNHRVRYQVRUUgkJX0lPUignWCcsIDMxLCBzdHJ1Y3QgZnN4YXR0cikKKyNkZWZpbmUgRlNfSU9DX0ZTU0VUWEFUVFIJCV9JT1coJ1gnLCAzMiwgc3RydWN0IGZzeGF0dHIpCisKKy8qCisgKiBTdHJ1Y3R1cmUgZm9yIEZTX0lPQ19GU0dFVFhBVFRSIGFuZCBGU19JT0NfRlNTRVRYQVRUUi4KKyAqLworc3RydWN0IGZzeGF0dHIgeworCV9fdTMyCQlmc3hfeGZsYWdzOwkvKiB4ZmxhZ3MgZmllbGQgdmFsdWUgKGdldC9zZXQpICovCisJX191MzIJCWZzeF9leHRzaXplOwkvKiBleHRzaXplIGZpZWxkIHZhbHVlIChnZXQvc2V0KSovCisJX191MzIJCWZzeF9uZXh0ZW50czsJLyogbmV4dGVudHMgZmllbGQgdmFsdWUgKGdldCkJKi8KKwlfX3UzMgkJZnN4X3Byb2ppZDsJLyogcHJvamVjdCBpZGVudGlmaWVyIChnZXQvc2V0KSAqLworCXVuc2lnbmVkIGNoYXIJZnN4X3BhZFsxMl07Cit9OworI2VuZGlmCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3BzLmMgYi9lMmZzcHJvZ3MvbGliL2UycC9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1N2Y4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9wcy5jCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBwcy5jCQkJLSBQcmludCBmaWxlc3lzdGVtIHN0YXRlCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIEhpc3Rvcnk6CisgKiA5My8xMi8yMgktIENyZWF0aW9uCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKwordm9pZCBwcmludF9mc19zdGF0ZSAoRklMRSAqIGYsIHVuc2lnbmVkIHNob3J0IHN0YXRlKQoreworCWlmIChzdGF0ZSAmIEVYVDJfVkFMSURfRlMpCisJCWZwcmludGYgKGYsICIgY2xlYW4iKTsKKwllbHNlCisJCWZwcmludGYgKGYsICIgbm90IGNsZWFuIik7CisJaWYgKHN0YXRlICYgRVhUMl9FUlJPUl9GUykKKwkJZnByaW50ZiAoZiwgIiB3aXRoIGVycm9ycyIpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvc2V0ZmxhZ3MuYyBiL2UyZnNwcm9ncy9saWIvZTJwL3NldGZsYWdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY2YTNlMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZTJwL3NldGZsYWdzLmMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIHNldGZsYWdzLmMJCS0gU2V0IGEgZmlsZSBmbGFncyBvbiBhbiBleHQyIGZpbGUgc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIEhpc3Rvcnk6CisgKiA5My8xMC8zMAktIENyZWF0aW9uCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEhBVkVfRVhUMl9JT0NUTFMKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZTJwLmgiCisKKy8qCisgKiBEZWFsIHdpdGggbGFtZSBnbGliYydzIHRoYXQgZGVmaW5lIHRoaXMgZnVuY3Rpb24gd2l0aG91dCBhY3R1YWxseQorICogaW1wbGVtZW50aW5nIGl0LiAgQ2FuIHlvdSBzYXkgImF0dHJhY3RpdmUgbnVpc2FuY2UiLCBib3lzIGFuZCBnaXJscz8KKyAqIEkga25ldyB5b3UgY291bGQhCisgKi8KKyNpZmRlZiBfX2xpbnV4X18KKyN1bmRlZiBIQVZFX0NIRkxBR1MKKyNlbmRpZgorCitpbnQgc2V0ZmxhZ3MgKGludCBmZCwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKyNpZiBIQVZFX0NIRkxBR1MKKwl1bnNpZ25lZCBsb25nIGJzZF9mbGFncyA9IDA7CisKKyNpZmRlZiBVRl9JTU1VVEFCTEUKKwlpZiAoZmxhZ3MgJiBFWFQyX0lNTVVUQUJMRV9GTCkKKwkJYnNkX2ZsYWdzIHw9IFVGX0lNTVVUQUJMRTsKKyNlbmRpZgorI2lmZGVmIFVGX0FQUEVORAorCWlmIChmbGFncyAmIEVYVDJfQVBQRU5EX0ZMKQorCQlic2RfZmxhZ3MgfD0gVUZfQVBQRU5EOworI2VuZGlmCisjaWZkZWYgVUZfTk9EVU1QCisJaWYgKGZsYWdzICYgRVhUMl9OT0RVTVBfRkwpCisJCWJzZF9mbGFncyB8PSBVRl9OT0RVTVA7CisjZW5kaWYKKworCXJldHVybiBmY2hmbGFncyAoZmQsIGJzZF9mbGFncyk7CisjZWxzZSAvKiAhIEhBVkVfQ0hGTEFHUyAqLworI2lmIEhBVkVfRVhUMl9JT0NUTFMKKwlzdHJ1Y3Qgc3RhdCBidWY7CisJaW50CWY7CisKKwlpZiAoIWZzdGF0KGZkLCAmYnVmKSAmJgorCSAgICAhU19JU1JFRyhidWYuc3RfbW9kZSkgJiYgIVNfSVNESVIoYnVmLnN0X21vZGUpKSB7CisJCWVycm5vID0gRU9QTk9UU1VQUDsKKwkJcmV0dXJuIC0xOworCX0KKwlmID0gKGludCkgZmxhZ3M7CisKKwlyZXR1cm4gaW9jdGwoZmQsIEVYVDJfSU9DX1NFVEZMQUdTLCAmZik7CisjZWxzZQorCWVycm5vID0gRU9QTk9UU1VQUDsKKwlyZXR1cm4gLTE7CisjZW5kaWYgLyogSEFWRV9FWFQyX0lPQ1RMUyAqLworI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9lMnAvc2V0dmVyc2lvbi5jIGIvZTJmc3Byb2dzL2xpYi9lMnAvc2V0dmVyc2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMjgzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2UycC9zZXR2ZXJzaW9uLmMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIHNldHZlcnNpb24uYwkJLSBTZXQgYSBmaWxlIHZlcnNpb24gb24gYW4gZXh0MiBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMTAvMzAJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKworaW50IHNldHZlcnNpb24gKGludCBmZCwgdW5zaWduZWQgbG9uZyB2ZXJzaW9uKQoreworI2lmIEhBVkVfRVhUMl9JT0NUTFMKKwlpbnQgdmVyOworCisJdmVyID0gKGludCkgdmVyc2lvbjsKKwlyZXR1cm4gaW9jdGwgKGZkLCBFWFQyX0lPQ19TRVRWRVJTSU9OLCAmdmVyKTsKKyNlbHNlIC8qICEgSEFWRV9FWFQyX0lPQ1RMUyAqLworCWV4dGVybiBpbnQgZXJybm87CisJZXJybm8gPSBFT1BOT1RTVVBQOworCXJldHVybiAtMTsKKyNlbmRpZiAvKiAhIEhBVkVfRVhUMl9JT0NUTFMgKi8KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZTJwL3V1aWQuYyBiL2UyZnNwcm9ncy9saWIvZTJwL3V1aWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTAyMDkyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9lMnAvdXVpZC5jCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiB1dWlkLmMgLS0gdXRpbGl0eSByb3V0aW5lcyBmb3IgbWFuaXB1bGF0aW5nIFVVSUQncy4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGV4dDJmcy9leHQyX3R5cGVzLmg+CisKKyNpbmNsdWRlICJlMnAuaCIKKworc3RydWN0IHV1aWQgeworCV9fdTMyCXRpbWVfbG93OworCV9fdTE2CXRpbWVfbWlkOworCV9fdTE2CXRpbWVfaGlfYW5kX3ZlcnNpb247CisJX191MTYJY2xvY2tfc2VxOworCV9fdTgJbm9kZVs2XTsKK307CisKKy8qIFJldHVybnMgMSBpZiB0aGUgdXVpZCBpcyB0aGUgTlVMTCB1dWlkICovCitpbnQgZTJwX2lzX251bGxfdXVpZCh2b2lkICp1dSkKK3sKKwlfX3U4IAkqY3A7CisJaW50CWk7CisKKwlmb3IgKGk9MCwgY3AgPSB1dTsgaSA8IDE2OyBpKyspCisJCWlmICgqY3ArKykKKwkJCXJldHVybiAwOworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBlMnBfdW5wYWNrX3V1aWQodm9pZCAqaW4sIHN0cnVjdCB1dWlkICp1dSkKK3sKKwlfX3U4CSpwdHIgPSBpbjsKKwlfX3UzMgl0bXA7CisKKwl0bXAgPSAqcHRyKys7CisJdG1wID0gKHRtcCA8PCA4KSB8ICpwdHIrKzsKKwl0bXAgPSAodG1wIDw8IDgpIHwgKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfbG93ID0gdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfbWlkID0gdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfaGlfYW5kX3ZlcnNpb24gPSB0bXA7CisKKwl0bXAgPSAqcHRyKys7CisJdG1wID0gKHRtcCA8PCA4KSB8ICpwdHIrKzsKKwl1dS0+Y2xvY2tfc2VxID0gdG1wOworCisJbWVtY3B5KHV1LT5ub2RlLCBwdHIsIDYpOworfQorCit2b2lkIGUycF91dWlkX3RvX3N0cih2b2lkICp1dSwgY2hhciAqb3V0KQoreworCXN0cnVjdCB1dWlkIHV1aWQ7CisKKwllMnBfdW5wYWNrX3V1aWQodXUsICZ1dWlkKTsKKwlzcHJpbnRmKG91dCwKKwkJIiUwOHgtJTA0eC0lMDR4LSUwMnglMDJ4LSUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCIsCisJCXV1aWQudGltZV9sb3csIHV1aWQudGltZV9taWQsIHV1aWQudGltZV9oaV9hbmRfdmVyc2lvbiwKKwkJdXVpZC5jbG9ja19zZXEgPj4gOCwgdXVpZC5jbG9ja19zZXEgJiAweEZGLAorCQl1dWlkLm5vZGVbMF0sIHV1aWQubm9kZVsxXSwgdXVpZC5ub2RlWzJdLAorCQl1dWlkLm5vZGVbM10sIHV1aWQubm9kZVs0XSwgdXVpZC5ub2RlWzVdKTsKK30KKworY29uc3QgY2hhciAqZTJwX3V1aWQyc3RyKHZvaWQgKnV1KQoreworCXN0YXRpYyBjaGFyIGJ1Zls4MF07CisKKwlpZiAoZTJwX2lzX251bGxfdXVpZCh1dSkpCisJCXJldHVybiAiPG5vbmU+IjsKKwllMnBfdXVpZF90b19zdHIodXUsIGJ1Zik7CisJcmV0dXJuIGJ1ZjsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC9BbmRyb2lkLm1rIGIvZTJmc3Byb2dzL2xpYi9ldC9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDRmNGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L0FuZHJvaWQubWsKQEAgLTAsMCArMSw0NiBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQorCitsaWJleHQyX2NvbV9lcnJfc3JjX2ZpbGVzIDo9IFwKKwllcnJvcl9tZXNzYWdlLmMgXAorCWV0X25hbWUuYyBcCisJaW5pdF9ldC5jIFwKKwljb21fZXJyLmMgXAorCWNvbV9yaWdodC5jCisKK2xpYmV4dDJfY29tX2Vycl9jX2luY2x1ZGVzIDo9IGV4dGVybmFsL2UyZnNwcm9ncy9saWIKKworbGliZXh0Ml9jb21fZXJyX2NmbGFncyA6PSAtTzIgLWcgLVcgLVdhbGwKKworbGliZXh0Ml9jb21fZXJyX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfY29tX2Vycl9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9jb21fZXJyX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2NvbV9lcnJfY2ZsYWdzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGliYworTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfY29tX2VycgorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9jb21fZXJyX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX2NvbV9lcnJfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfY29tX2Vycl9jZmxhZ3MpCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9IGxpYmMKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX2NvbV9lcnIKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfY29tX2Vycl9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9jb21fZXJyX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX2NvbV9lcnJfY2ZsYWdzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfY29tX2Vyci1ob3N0CitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9TSEFSRURfTElCUkFSWSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvbGliL2V0L01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3NmYxODkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMTg0IEBACisjCisjIE1ha2VmaWxlIGZvciBsaWIvZXQKKyMKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uLy4uCitteV9kaXIgPSBsaWIvZXQKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworREVQX01BS0VGSUxFID0gJChERVBfTElCX01BS0VGSUxFUykKKworQE1DT05GSUdACisKK2FsbDo6IGNvbXBpbGVfZXQgY29tX2Vyci5wYworCitPQkpTPSBlcnJvcl9tZXNzYWdlLm8gZXRfbmFtZS5vIGluaXRfZXQubyBjb21fZXJyLm8gY29tX3JpZ2h0Lm8KK1NSQ1MgPSAkKHNyY2RpcikvZXJyb3JfbWVzc2FnZS5jICQoc3JjZGlyKS9ldF9uYW1lLmMgJChzcmNkaXIpL2luaXRfZXQuYyBcCisJJChzcmNkaXIpL2NvbV9lcnIuYyAkKHNyY2RpcikvY29tX3JpZ2h0LmMKKworSEZJTEVTPSBjb21fZXJyLmgKK1NIQVJFX0ZJTEVTPSBldF9jLmF3ayBldF9oLmF3aworCitMSUJSQVJZPSBsaWJjb21fZXJyCitMSUJESVI9IGV0CisKK0VMRl9WRVJTSU9OID0gMi4xCitFTEZfU09fVkVSU0lPTiA9IDIKK0VMRl9JTUFHRSA9IGxpYmNvbV9lcnIKK0VMRl9NWURJUiA9IGV0CitFTEZfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorRUxGX09USEVSX0xJQlMgPSBAU0VNX0lOSVRfTElCQAorCitCU0RMSUJfVkVSU0lPTiA9IDEuMQorQlNETElCX0lNQUdFID0gbGliY29tX2VycgorQlNETElCX01ZRElSID0gZXQKK0JTRExJQl9JTlNUQUxMX0RJUiA9ICQocm9vdF9saWJkaXIpCisKKyMKKyMgd2hhdCB0byBidWlsZC4uLgorIworLmMubzoKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU1RMSUIpIC1jICQ8IC1vICRACisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CitAUFJPRklMRV9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NUTElCKSAtZyAtcGcgLW8gcHJvZmlsZWQvJCoubyAtYyAkPAorQEVMRl9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NITElCKSAtZlBJQyAtc2hhcmVkIC1vIGVsZnNoYXJlZC8kKi5vIC1jICQ8CitAQlNETElCX0NNVEAJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU0hMSUIpICQoQlNETElCX1BJQ19GTEFHKSAtbyBwaWMvJCoubyAtYyAkPAorCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9FTEZACitATUFLRUZJTEVfQlNETElCQAorQE1BS0VGSUxFX1BST0ZJTEVACisKK2NvbXBpbGVfZXQ6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9jb21waWxlX2V0LnNoLmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFKSAkKHNyY2RpcikvY29tcGlsZV9ldC5zaC5pbiBjb21waWxlX2V0CisJJChRKSAkKENITU9EKSAreCBjb21waWxlX2V0CisKK0RWST10ZXhpMmR2aQorRFZJUFM9ZHZpcHMgLW8gIiRAIgorSU5GTz1ATUFLRUlORk9ACitIVE1MPW1ha2VpbmZvIC0taHRtbCAtLW5vLXNwbGl0CitQUzJQREY9cHMycGRmCisKK2NvbV9lcnIucHMgOiBjb21fZXJyLmR2aQorY29tX2Vyci5kdmk6IGNvbV9lcnIudGV4aW5mbworCitjb21fZXJyLmluZm86ICQoc3JjZGlyKS9jb21fZXJyLnRleGluZm8KKwkkKEUpICIJTUFLRUlORk8gJEAiCisJLSQoUSkgJChJTkZPKSAkKHNyY2RpcikvY29tX2Vyci50ZXhpbmZvCisKK2NvbV9lcnIuZHZpOiAkKHNyY2RpcikvY29tX2Vyci50ZXhpbmZvCisJJChFKSAiCVRFWEkyRFZJICRAIgorCS0kKFEpICQoRFZJKSAkKHNyY2RpcikvY29tX2Vyci50ZXhpbmZvCisKK2NvbV9lcnIucHM6IGNvbV9lcnIuZHZpCisJJChFKSAiCURWSVBTICRAIgorCS0kKFEpICQoRFZJUFMpIGNvbV9lcnIuZHZpCisKK2NvbV9lcnIucGRmOiBjb21fZXJyLnBzCisJJChFKSAiCVBTMlBERiAkQCIKKwktJChRKSAkKFBTMlBERikgY29tX2Vyci5wcworCitjb21fZXJyLmh0bWw6ICQoc3JjZGlyKS9jb21fZXJyLnRleGluZm8KKwkkKEUpICIJTUFLRUlORk8gJEAiCisJLSQoUSkgJChIVE1MKSAkKHNyY2RpcikvY29tX2Vyci50ZXhpbmZvCisKK2NvbV9lcnIucGM6ICQoc3JjZGlyKS9jb21fZXJyLnBjLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJJChFKSAiCUNPTkZJRy5TVEFUVVMgJEAiCisJJChRKSBjZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz1saWIvZXQvY29tX2Vyci5wYyAuL2NvbmZpZy5zdGF0dXMKKworI2xpYmNvbV9lcnIubzoJJChMSUJPQkpTKQorIwkkKExEKSAtciAtcyAtbyBsaWJjb21fZXJyLm8gJChMSUJPQkpTKQorIwljaG1vZCAteCBsaWJjb21fZXJyLm8KKworVEFHUzoJJChTUkNTKQorCSQoVEFHUykgJChTUkNTKQorCitpbnN0YWxsZGlyczo6CisJJChFKSAiCU1LSU5TVEFMTERJUlMgJChsaWJkaXIpICQoaW5jbHVkZWRpcikvZXQgJChkYXRhZGlyKS9ldCAkKGJpbmRpcikgJChtYW4xZGlyKSAkKG1hbjNkaXIpIgorCSQoUSkgJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChsaWJkaXIpIFwKKwkJJChERVNURElSKSQoaW5jbHVkZWRpcikvZXQgJChERVNURElSKSQoZGF0YWRpcikvZXQgXAorCQkkKERFU1RESVIpJChiaW5kaXIpICQoREVTVERJUikkKG1hbjFkaXIpIFwKKwkJJChERVNURElSKSQobWFuM2RpcikgJChERVNURElSKSQocGtnY29uZmlnZGlyKQorCitpbnN0YWxsOjogY29tcGlsZV9ldCBsaWJjb21fZXJyLmEgJChIRklMRVMpIGluc3RhbGxkaXJzIGNvbV9lcnIucGMKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQobGliZGlyKS9saWJjb21fZXJyLmEiCisJJChRKSAkKElOU1RBTExfREFUQSkgbGliY29tX2Vyci5hICQoREVTVERJUikkKGxpYmRpcikvbGliY29tX2Vyci5hCisJLSQoUSkgJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGliY29tX2Vyci5hCisJJChRKSAkKENITU9EKSAkKExJQk1PREUpICQoREVTVERJUikkKGxpYmRpcikvbGliY29tX2Vyci5hCisJJChRKSBmb3IgaSBpbiAkKEhGSUxFUyk7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKGluY2x1ZGVkaXIpL2V0LyQkaSI7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZXQvJCRpOyBcCisJZG9uZQorCSQoUSkgKGNkICQoREVTVERJUikkKGluY2x1ZGVkaXIpIDtcCisJCSQoTE4pICQoTElOS19JTlNUQUxMX0ZMQUdTKSBldC9jb21fZXJyLmggLiApCisJJChRKSBmb3IgaSBpbiAkKFNIQVJFX0ZJTEVTKTsgZG8gXAorCQllY2hvICIJSU5TVEFMTF9EQVRBICQoZGF0YWRpcikvZXQvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkaSAkKERFU1RESVIpJChkYXRhZGlyKS9ldC8kJGk7IFwKKwlkb25lCisJJChFKSAiCUlOU1RBTExfU0NSSVBUICQoYmluZGlyKS9jb21waWxlX2V0IgorCSQoUSkgJChJTlNUQUxMX1NDUklQVCkgY29tcGlsZV9ldCAkKERFU1RESVIpJChiaW5kaXIpL2NvbXBpbGVfZXQKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQobWFuM2RpcikvY29tX2Vyci4zIgorCSQoUSkgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9jb21fZXJyLjMgJChERVNURElSKSQobWFuM2RpcikvY29tX2Vyci4zCisJJChFKSAiCUlOU1RBTExfREFUQSAkKG1hbjFkaXIpL2NvbXBpbGVfZXQuMSIKKwkkKFEpICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvY29tcGlsZV9ldC4xIFwKKwkJCSQoREVTVERJUikkKG1hbjFkaXIpL2NvbXBpbGVfZXQuMQorCSQoRSkgIglJTlNUQUxMX0RBVEEgJChwa2djb25maWdkaXIpL2NvbV9lcnIucGMiCisJJChRKSAkKElOU1RBTExfREFUQSkgY29tX2Vyci5wYyAkKERFU1RESVIpJChwa2djb25maWdkaXIpL2NvbV9lcnIucGMKKwordW5pbnN0YWxsOjoKKwkkKFJNKSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmNvbV9lcnIuYSBcCisJCSQoREVTVERJUikkKGJpbmRpcikvY29tcGlsZV9ldCBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvY29tX2Vyci5wYworCSQoUk0pIC1yZiAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9ldCAkKERFU1RESVIpJChkYXRhZGlyKS9ldAorCitjaGVjazo6IGNvbXBpbGVfZXQKKwlmb3IgaSBpbiAkKHNyY2RpcikvdGVzdF9jYXNlcy8qLmV0IDsgZG8gXAorCQl0PWBiYXNlbmFtZSAkJGkgfCBzZWQgLWUgJ3MvLmV0Ly8nYDsgXAorCQlfRVRfRElSX09WRVJSSURFPSQoc3JjZGlyKSAuL2NvbXBpbGVfZXQgJCRpIDsgXAorCQlkaWZmIC1jICQoc3JjZGlyKS90ZXN0X2Nhc2VzLyQkdC5jICQkdC5jID4gJCR0LmZhaWxlZDsgXAorCQlpZiBbICQkPyAtbmUgMCBdOyB0aGVuIGVjaG8gVGVzdCBjYXNlICQkdCBmYWlsZWQ7IGV4aXQgMSA7IGZpIDsgXAorCQlkaWZmIC1jICQoc3JjZGlyKS90ZXN0X2Nhc2VzLyQkdC5oICQkdC5oID4+ICQkdC5mYWlsZWQ7IFwKKwkJaWYgWyAkJD8gLW5lIDAgXTsgdGhlbiBlY2hvIFRlc3QgY2FzZSAkJHQgZmFpbGVkOyBleGl0IDEgOyBmaSA7IFwKKwkJJChSTSkgLWYgJCR0LmMgJCR0LmggJCR0LmZhaWxlZDsgXAorCQllY2hvICJUZXN0IGNhc2UgJCR0IHN1Y2NlZWRlZCIgOyBcCisJZG9uZQorCitjbGVhbjo6CisJJChSTSkgLWYgY29tcGlsZV9ldCBsaWJjb21fZXJyLmEgbGliY29tX2Vycl9wLmEgY29tX2Vyci5pbmZvCisJJChSTSkgLWYgJChPQkpTKSBwcm9maWxlZC8qCisJJChSTSkgLWYgKn4gXCMqICouYmFrICoub3RsICouYXV4ICoudG9jICouUFMgKi5kdmkgKi5wcyBUQUdTICoubG4gXAorCQkqLmh0bWwgKi5jcCAqLmZuICouZm5zICoua3kgKi5sb2cgKi5wYyAqLnBnICoudG9jICoudHAgKi52ciBcCisJCSoucGRmCisJJChSTSkgLWYgLi4vbGliY29tX2Vyci5hIC4uL2xpYmNvbV9lcnJfcC5hCisKK21vc3RseWNsZWFuOjogY2xlYW4KK2Rpc3RjbGVhbjo6IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBNYWtlZmlsZSBjb21fZXJyLnBjIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorCiskKE9CSlMpOiBzdWJkaXJzCisKKyMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysKKyMgCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpbgorIyB0aGUgTWFrZWZpbGUuaW4gZmlsZQorIworZXJyb3JfbWVzc2FnZS5vOiAkKHNyY2RpcikvZXJyb3JfbWVzc2FnZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvY29tX2Vyci5oICQoc3JjZGlyKS9lcnJvcl90YWJsZS5oIFwKKyAkKHNyY2RpcikvaW50ZXJuYWwuaAorZXRfbmFtZS5vOiAkKHNyY2RpcikvZXRfbmFtZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvY29tX2Vyci5oICQoc3JjZGlyKS9lcnJvcl90YWJsZS5oIFwKKyAkKHNyY2RpcikvaW50ZXJuYWwuaAoraW5pdF9ldC5vOiAkKHNyY2RpcikvaW5pdF9ldC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvY29tX2Vyci5oICQoc3JjZGlyKS9lcnJvcl90YWJsZS5oCitjb21fZXJyLm86ICQoc3JjZGlyKS9jb21fZXJyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9jb21fZXJyLmggJChzcmNkaXIpL2Vycm9yX3RhYmxlLmggXAorICQoc3JjZGlyKS9pbnRlcm5hbC5oCitjb21fcmlnaHQubzogJChzcmNkaXIpL2NvbV9yaWdodC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvY29tX2Vyci5oICQoc3JjZGlyKS9lcnJvcl90YWJsZS5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L2NvbV9lcnIuMyBiL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMjVmMDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbV9lcnIuMwpAQCAtMCwwICsxLDg3IEBACisuXCIgQ29weXJpZ2h0IChjKSAxOTg4IE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksCisuXCIgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkLiAgCisuXCIKKy5USCBDT01fRVJSIDMgIjIyIE5vdiAxOTg4IiBTSVBCCisuU0ggTkFNRQorY29tX2VyciBcLSBjb21tb24gZXJyb3IgZGlzcGxheSByb3V0aW5lCisuU0ggU1lOT1BTSVMKKy5uZgorICNpbmNsdWRlIDxldC9jb21fZXJyLmg+Cit2b2lkICgqXGZJcHJvY1xmUikgKGNvbnN0IGNoYXIgKiwgbG9uZywgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKKy5QUAordm9pZCBjb21fZXJyIChjb25zdCBjaGFyICp3aG9hbWksIGxvbmcgY29kZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworLlBQCitwcm9jID0gc2V0X2NvbV9lcnJfaG9vayAocHJvYyk7CisuUFAKK3Byb2MgPSByZXNldF9jb21fZXJyX2hvb2sgKCk7CisuUFAKK3ZvaWQgaW5pdGlhbGl6ZV9YWFhYX2Vycm9yX3RhYmxlICgpOworLmZpCisuU0ggREVTQ1JJUFRJT04KKy5JIENvbV9lcnIKK2Rpc3BsYXlzIGFuIGVycm9yIG1lc3NhZ2Ugb24gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbQorLkkgc3RkZXJyCisoc2VlCisuSVIgc3RkaW8gKDNTKSkKK2NvbXBvc2VkIG9mIHRoZQorLkkgd2hvYW1pCitzdHJpbmcsIHdoaWNoIHNob3VsZCBzcGVjaWZ5IHRoZSBwcm9ncmFtIG5hbWUgb3Igc29tZSBzdWJwb3J0aW9uIG9mCithIHByb2dyYW0sIGZvbGxvd2VkIGJ5IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGZyb20gdGhlCisuSSBjb2RlCit2YWx1ZSAoZGVyaXZlZCBmcm9tCisuSVIgY29tcGlsZV9ldCAoMSkpLAorYW5kIGEgc3RyaW5nIHByb2R1Y2VkIHVzaW5nIHRoZQorLkkgZm9ybWF0CitzdHJpbmcgYW5kIGFueSBmb2xsb3dpbmcgYXJndW1lbnRzLCBpbiB0aGUgc2FtZSBzdHlsZSBhcworLklSIGZwcmludGYgKDMpLgorCitUaGUgYmVoYXZpb3Igb2YKKy5JIGNvbV9lcnIKK2NhbiBiZSBtb2RpZmllZCB1c2luZworLkkgc2V0X2NvbV9lcnJfaG9vazsKK3RoaXMgZGVmaW5lcyBhIHByb2NlZHVyZSB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0bworLkkgY29tX2VyciwKK2luc3RlYWQgb2YgdGhlIGRlZmF1bHQgaW50ZXJuYWwgcHJvY2VkdXJlIHdoaWNoIHNlbmRzIHRoZSBmb3JtYXR0ZWQKK3RleHQgdG8gZXJyb3Igb3V0cHV0LiAgVGh1cyB0aGUgZXJyb3IgbWVzc2FnZXMgZnJvbSBhIHByb2dyYW0gY2FuIGFsbAorZWFzaWx5IGJlIGRpdmVydGVkIHRvIGFub3RoZXIgZm9ybSBvZiBkaWFnbm9zdGljIGxvZ2dpbmcsIHN1Y2ggYXMKKy5JUiBzeXNsb2cgKDMpLgorLkkgUmVzZXRfY29tX2Vycl9ob29rCittYXkgYmUgdXNlZCB0byByZXN0b3JlIHRoZSBiZWhhdmlvciBvZgorLkkgY29tX2VycgordG8gaXRzIGRlZmF1bHQgZm9ybS4gIEJvdGggcHJvY2VkdXJlcyByZXR1cm4gdGhlIHByZXZpb3VzIGBgaG9vaycnCit2YWx1ZS4gIFRoZXNlIGBgaG9vaycnIHByb2NlZHVyZXMgbXVzdCBoYXZlIHRoZSBkZWNsYXJhdGlvbiBnaXZlbiBmb3IKKy5JIHByb2MKK2Fib3ZlIGluIHRoZSBzeW5vcHNpcy4KKworVGhlCisuSSBpbml0aWFsaXplX1hYWFhfZXJyb3JfdGFibGUKK3JvdXRpbmUgaXMgZ2VuZXJhdGVkIG1lY2hhbmljYWxseSBieQorLklSIGNvbXBpbGVfZXQgKDEpCitmcm9tIGEgc291cmNlIGZpbGUgY29udGFpbmluZyBuYW1lcyBhbmQgYXNzb2NpYXRlZCBzdHJpbmdzLiAgRWFjaAordGFibGUgaGFzIGEgbmFtZSBvZiB1cCB0byBmb3VyIGNoYXJhY3RlcnMsIHdoaWNoIGlzIHVzZWQgaW4gcGxhY2Ugb2YKK3RoZQorLkIgWFhYWAoraW4gdGhlIG5hbWUgb2YgdGhlIHJvdXRpbmUuICBUaGVzZSByb3V0aW5lcyBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZQorYW55IG9mIHRoZSBjb3JyZXNwb25kaW5nIGVycm9yIGNvZGVzIGFyZSB1c2VkLCBzbyB0aGF0IHRoZQorLkkgY29tX2VycgorbGlicmFyeSB3aWxsIHJlY29nbml6ZSBlcnJvciBjb2RlcyBmcm9tIHRoZXNlIHRhYmxlcyB3aGVuIHRoZXkgYXJlCit1c2VkLgorCitUaGUKKy5CIGNvbV9lcnIuaAoraGVhZGVyIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGFueSBzb3VyY2UgZmlsZSB0aGF0IHVzZXMgcm91dGluZXMKK2Zyb20gdGhlCisuSSBjb21fZXJyCitsaWJyYXJ5OyBleGVjdXRhYmxlIGZpbGVzIG11c3QgYmUgbGlua2VkIHVzaW5nCisuSSBgYC1sY29tX2VycicnCitpbiBvcmRlciB0byBjYXVzZSB0aGUKKy5JIGNvbV9lcnIKK2xpYnJhcnkgdG8gYmUgaW5jbHVkZWQuCisKKy5cIiAuSVIgZm9yIG1hbnVhbCBlbnRyaWVzCisuXCIgLlBQIGZvciBwYXJhZ3JhcGggYnJlYWtzCisKKy5TSCAiU0VFIEFMU08iCitjb21waWxlX2V0ICgxKSwgc3lzbG9nICgzKS4KKworS2VuIFJhZWJ1cm4sICJBIENvbW1vbiBFcnJvciBEZXNjcmlwdGlvbiBMaWJyYXJ5IGZvciBVTklYIi4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci5jIGIvZTJmc3Byb2dzL2xpYi9ldC9jb21fZXJyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4OTk4YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci5jCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogQ29weXJpZ2h0IDE5ODcsIDE5ODggYnkgTUlUIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZC4KKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgImNvbV9lcnIuaCIKKyNpbmNsdWRlICJlcnJvcl90YWJsZS5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisKK3N0YXRpYyB2b2lkCitkZWZhdWx0X2NvbV9lcnJfcHJvYyAoY29uc3QgY2hhciAqd2hvYW1pLCBlcnJjb2RlX3QgY29kZSwgY29uc3QKKwkJICAgICAgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpCisJQ09NX0VSUl9BVFRSKChmb3JtYXQocHJpbnRmLCAzLCAwKSkpOworCitzdGF0aWMgdm9pZAorZGVmYXVsdF9jb21fZXJyX3Byb2MgKGNvbnN0IGNoYXIgKndob2FtaSwgZXJyY29kZV90IGNvZGUsIGNvbnN0CisJCSAgICAgIGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQoreworICAgIGludCBkb19jciA9IDEsIGZkID0gZmlsZW5vKHN0ZGVycik7CisKKyAgICBpZiAod2hvYW1pKSB7CisJZnB1dHMod2hvYW1pLCBzdGRlcnIpOworCWZwdXRzKCI6ICIsIHN0ZGVycik7CisgICAgfQorICAgIGlmIChjb2RlKSB7CisJZnB1dHMoZXJyb3JfbWVzc2FnZShjb2RlKSwgc3RkZXJyKTsKKwlmcHV0cygiICIsIHN0ZGVycik7CisgICAgfQorICAgIGlmIChmbXQpIHsKKyAgICAgICAgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKyAgICB9CisgICAgaWYgKCFpc2F0dHkoZmQpKQorCWRvX2NyID0gMDsKKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorICAgIGVsc2UgeworCXN0cnVjdCB0ZXJtaW9zIHQ7CisKKwlpZiAoKHRjZ2V0YXR0cihmZCwgJnQpKSA9PSAwICYmCisJICAgICh0LmNfb2ZsYWcgJiBPUE9TVCkgJiYgKHQuY19vZmxhZyAmIE9OTENSKSkKKwlkb19jciA9IDA7CisgICAgfQorI2VuZGlmCisgICAgaWYgKGRvX2NyKQorCWZwdXRjKCdccicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwordHlwZWRlZiB2b2lkICgqZXJyZikgKGNvbnN0IGNoYXIgKiwgZXJyY29kZV90LCBjb25zdCBjaGFyICosIHZhX2xpc3QpOworCitlcnJmIGNvbV9lcnJfaG9vayA9IGRlZmF1bHRfY29tX2Vycl9wcm9jOworCit2b2lkIGNvbV9lcnJfdmEgKGNvbnN0IGNoYXIgKndob2FtaSwgZXJyY29kZV90IGNvZGUsIGNvbnN0IGNoYXIgKmZtdCwKKwkJIHZhX2xpc3QgYXJncykKK3sKKyAgICAoKmNvbV9lcnJfaG9vaykgKHdob2FtaSwgY29kZSwgZm10LCBhcmdzKTsKK30KKwordm9pZCBjb21fZXJyIChjb25zdCBjaGFyICp3aG9hbWksCisJICAgICAgZXJyY29kZV90IGNvZGUsCisJICAgICAgY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisgICAgdmFfbGlzdCBwdmFyOworCisgICAgaWYgKCFjb21fZXJyX2hvb2spCisJY29tX2Vycl9ob29rID0gZGVmYXVsdF9jb21fZXJyX3Byb2M7CisgICAgdmFfc3RhcnQocHZhciwgZm10KTsKKyAgICBjb21fZXJyX3ZhICh3aG9hbWksIGNvZGUsIGZtdCwgcHZhcik7CisgICAgdmFfZW5kKHB2YXIpOworfQorCitlcnJmIHNldF9jb21fZXJyX2hvb2soZXJyZiBuZXdfcHJvYykKK3sKKyAgICBlcnJmIHggPSBjb21fZXJyX2hvb2s7CisKKyAgICBpZiAobmV3X3Byb2MpCisJY29tX2Vycl9ob29rID0gbmV3X3Byb2M7CisgICAgZWxzZQorCWNvbV9lcnJfaG9vayA9IGRlZmF1bHRfY29tX2Vycl9wcm9jOworCisgICAgcmV0dXJuIHg7Cit9CisKK2VycmYgcmVzZXRfY29tX2Vycl9ob29rKHZvaWQpIHsKKyAgICBlcnJmIHggPSBjb21fZXJyX2hvb2s7CisgICAgY29tX2Vycl9ob29rID0gZGVmYXVsdF9jb21fZXJyX3Byb2M7CisgICAgcmV0dXJuIHg7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L2NvbV9lcnIuaCBiL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YTM2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbV9lcnIuaApAQCAtMCwwICsxLDY4IEBACisvKgorICogSGVhZGVyIGZpbGUgZm9yIGNvbW1vbiBlcnJvciBkZXNjcmlwdGlvbiBsaWJyYXJ5LgorICoKKyAqIENvcHlyaWdodCAxOTg4LCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQgb2YgdGhlCisgKiBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LgorICoKKyAqIEZvciBjb3B5cmlnaHQgYW5kIGRpc3RyaWJ1dGlvbiBpbmZvLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gc3VwcGxpZWQKKyAqIHdpdGggdGhpcyBwYWNrYWdlLgorICovCisKKyNpZiAhZGVmaW5lZChfX0NPTV9FUlJfSCkgJiYgIWRlZmluZWQoX19DT01fRVJSX0hfXykKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIENPTV9FUlJfQVRUUih4KSBfX2F0dHJpYnV0ZV9fKHgpCisjZWxzZQorI2RlZmluZSBDT01fRVJSX0FUVFIoeCkKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisKK3R5cGVkZWYgbG9uZyBlcnJjb2RlX3Q7CisKK3N0cnVjdCBlcnJvcl90YWJsZSB7CisJY2hhciBjb25zdCAqIGNvbnN0ICogbXNnczsKKwlsb25nIGJhc2U7CisJaW50IG5fbXNnczsKK307CitzdHJ1Y3QgZXRfbGlzdDsKKworZXh0ZXJuIHZvaWQgY29tX2VyciAoY29uc3QgY2hhciAqLCBsb25nLCBjb25zdCBjaGFyICosIC4uLikKKwlDT01fRVJSX0FUVFIoKGZvcm1hdChwcmludGYsIDMsIDQpKSk7CisKK2V4dGVybiB2b2lkIGNvbV9lcnJfdmEgKGNvbnN0IGNoYXIgKndob2FtaSwgZXJyY29kZV90IGNvZGUsIGNvbnN0IGNoYXIgKmZtdCwKKwkJIHZhX2xpc3QgYXJncykKKwlDT01fRVJSX0FUVFIoKGZvcm1hdChwcmludGYsIDMsIDApKSk7CisKK2V4dGVybiBjaGFyIGNvbnN0ICplcnJvcl9tZXNzYWdlIChsb25nKTsKK2V4dGVybiB2b2lkICgqY29tX2Vycl9ob29rKSAoY29uc3QgY2hhciAqLCBsb25nLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOworZXh0ZXJuIHZvaWQgKCpzZXRfY29tX2Vycl9ob29rICh2b2lkICgqKSAoY29uc3QgY2hhciAqLCBsb25nLAorCQkJCQkgIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCkpKQorCShjb25zdCBjaGFyICosIGxvbmcsIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CitleHRlcm4gdm9pZCAoKnJlc2V0X2NvbV9lcnJfaG9vayAodm9pZCkpIChjb25zdCBjaGFyICosIGxvbmcsCisJCQkJCSAgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKK2V4dGVybiBpbnQgaW5pdF9lcnJvcl90YWJsZShjb25zdCBjaGFyICogY29uc3QgKm1zZ3MsIGxvbmcgYmFzZSwgaW50IGNvdW50KTsKK2V4dGVybiBjaGFyICooKnNldF9jb21fZXJyX2dldHRleHQgKGNoYXIgKigqKSAoY29uc3QgY2hhciAqKSkpCisJKGNvbnN0IGNoYXIgKik7CisKK2V4dGVybiBlcnJjb2RlX3QgYWRkX2Vycm9yX3RhYmxlKGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSAqIGV0KTsKK2V4dGVybiBlcnJjb2RlX3QgcmVtb3ZlX2Vycm9yX3RhYmxlKGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSAqIGV0KTsKK2V4dGVybiB2b2lkIGFkZF90b19lcnJvcl90YWJsZShzdHJ1Y3QgZXRfbGlzdCAqbmV3X3RhYmxlKTsKKworLyogUHJvdmlkZWQgZm9yIEhlaW1kYWxsIGNvbXBhdGliaWxpdHkgKi8KK2V4dGVybiBjb25zdCBjaGFyICpjb21fcmlnaHQoc3RydWN0IGV0X2xpc3QgKmxpc3QsIGxvbmcgY29kZSk7CitleHRlcm4gY29uc3QgY2hhciAqY29tX3JpZ2h0X3Ioc3RydWN0IGV0X2xpc3QgKmxpc3QsIGxvbmcgY29kZSwgY2hhciAqc3RyLCBzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIGluaXRpYWxpemVfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QsCisJCQkJICAgICBjb25zdCBjaGFyICoqbWVzc2FnZXMsCisJCQkJICAgICBpbnQgbnVtX2Vycm9ycywKKwkJCQkgICAgIGxvbmcgYmFzZSk7CitleHRlcm4gdm9pZCBmcmVlX2Vycm9yX3RhYmxlKHN0cnVjdCBldF9saXN0ICpldCk7CisKKy8qIFByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgY29tX2VyciBsaWJyYXJpZXMgKi8KK2V4dGVybiBpbnQgZXRfbGlzdF9sb2NrKHZvaWQpOworZXh0ZXJuIGludCBldF9saXN0X3VubG9jayh2b2lkKTsKKworI2RlZmluZSBfX0NPTV9FUlJfSAorI2RlZmluZSBfX0NPTV9FUlJfSF9fCisjZW5kaWYgLyogIWRlZmluZWQoX19DT01fRVJSX0gpICYmICFkZWZpbmVkKF9fQ09NX0VSUl9IX18pKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci5wYy5pbiBiL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmRmOGEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC9jb21fZXJyLnBjLmluCkBAIC0wLDAgKzEsMTIgQEAKK3ByZWZpeD1AcHJlZml4QAorZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorbGliZGlyPUBsaWJkaXJACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorCitOYW1lOiBjb21fZXJyCitEZXNjcmlwdGlvbjogQ29tbW9uIGVycm9yIGRlc2NyaXB0aW9uIGxpYnJhcnkKK1ZlcnNpb246IEBFMkZTUFJPR1NfVkVSU0lPTkAKK1JlcXVpcmVzOgorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZXQgLUkke2luY2x1ZGVkaXJ9CitMaWJzOiAtTCR7bGliZGlyfSAtbGNvbV9lcnIKK0xpYnMucHJpdmF0ZTogQFNFTV9JTklUX0xJQkAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci50ZXhpbmZvIGIvZTJmc3Byb2dzL2xpYi9ldC9jb21fZXJyLnRleGluZm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkM2ZjYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvY29tX2Vyci50ZXhpbmZvCkBAIC0wLDAgKzEsNTMyIEBACitcaW5wdXQgdGV4aW5mbyBAYyAtKi10ZXhpbmZvLSotCisKK0BjICRIZWFkZXIkCitAYyAkU291cmNlJAorQGMgJExvY2tlciQKKworQGMgTm90ZSB0aGF0IGFsdGhvdWdoIHRoaXMgc291cmNlIGZpbGUgaXMgaW4gdGV4aW5mbyBmb3JtYXQgKG1vcmUKK0BjIG9yIGxlc3MpLCBpdCBpcyBub3QgeWV0IHN1aXRhYmxlIGZvciB0dXJuaW5nIGludG8gYW4gYGBpbmZvJycKK0BjIGZpbGUuICBTb3JyeSwgbWF5YmUgbmV4dCB0aW1lLgorQGMKK0BjIEluIG9yZGVyIHRvIHByb2R1Y2UgaGFyZGNvcHkgZG9jdW1lbnRhdGlvbiBmcm9tIGEgdGV4aW5mbyBmaWxlLAorQGMgcnVuIGBgdGV4IGNvbV9lcnIudGV4aW5mbycnIHdoaWNoIHdpbGwgbG9hZCBpbiB0ZXhpbmZvLnRleCwKK0BjIHByb3ZpZGVkIGluIHRoaXMgZGlzdHJpYnV0aW9uLiAgKHRleGluZm8udGV4IGlzIGZyb20gdGhlIEZyZWUKK0BjIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZCBpcyB1bmRlciBkaWZmZXJlbnQgY29weXJpZ2h0IHJlc3RyaWN0aW9ucworQGMgZnJvbSB0aGUgcmVzdCBvZiB0aGlzIHBhY2thZ2UuKQorCitAc2V0ZmlsZW5hbWUgY29tX2Vyci5pbmZvCitAc2V0dGl0bGUgQSBDb21tb24gRXJyb3IgRGVzY3JpcHRpb24gTGlicmFyeSBmb3IgVU5JWAorCitAaWZpbmZvCitAZGlyY2F0ZWdvcnkgRGV2ZWxvcG1lbnQKK0BkaXJlbnRyeQorKiBDb21fZXJyOiAoY29tX2VycikuICAgQSBDb21tb24gRXJyb3IgRGVzY3JpcHRpb24gTGlicmFyeSBmb3IgVU5JWC4KK0BlbmQgZGlyZW50cnkKK0BlbmQgaWZpbmZvCisKK0BjIHNtYWxsYm9vaworCitAaWZ0ZXgKK0BmaW5hbG91dAorQGVuZCBpZnRleAorCitAaWZpbmZvCitUaGlzIGZpbGUgZG9jdW1lbnRzIHRoZSB1c2Ugb2YgdGhlIENvbW1vbiBFcnJvciBEZXNjcmlwdGlvbiBsaWJyYXJ5LgorCitDb3B5cmlnaHQgKEMpIDE5ODcsIDE5ODggU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkIG9mIHRoZQorTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neS4KKworUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCitkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkCit0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAorY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUKK3VzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQord2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuCittYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKworTm90ZSB0aGF0IHRoZSBmaWxlIHRleGluZm8udGV4LCBwcm92aWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uLCBpcyBmcm9tCit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQgaXMgdW5kZXIgZGlmZmVyZW50IGNvcHlyaWdodCByZXN0cmljdGlvbnMKK2Zyb20gdGhlIHJlbWFpbmRlciBvZiB0aGlzIHBhY2thZ2UuCisKK0BpZ25vcmUKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBwcm9jZXNzIHRoaXMgZmlsZSB0aHJvdWdoIFRleCBhbmQgcHJpbnQgdGhlCityZXN1bHRzLCBwcm92aWRlZCB0aGUgcHJpbnRlZCBkb2N1bWVudCBjYXJyaWVzIGNvcHlpbmcgcGVybWlzc2lvbgorbm90aWNlIGlkZW50aWNhbCB0byB0aGlzIG9uZSBleGNlcHQgZm9yIHRoZSByZW1vdmFsIG9mIHRoaXMgcGFyYWdyYXBoCisodGhpcyBwYXJhZ3JhcGggbm90IGJlaW5nIHJlbGV2YW50IHRvIHRoZSBwcmludGVkIG1hbnVhbCkuCisKK0BlbmQgaWdub3JlCitAZW5kIGlmaW5mbworCitAc2V0Y2hhcHRlcm5ld3BhZ2Ugb2RkCisKK0B0aXRsZXBhZ2UKK0BjZW50ZXIgQHRpdGxlZm9udHtBIENvbW1vbiBFcnJvciBEZXNjcmlwdGlvbn0KK0BjZW50ZXIgQHRpdGxlZm9udHtMaWJyYXJ5IGZvciBVTklYfQorQHNwIDIKK0BjZW50ZXIgS2VuIFJhZWJ1cm4KK0BjZW50ZXIgQmlsbCBTb21tZXJmZWxkCitAc3AgMQorQGNlbnRlciBNSVQgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCitAc3AgMworQGNlbnRlciBsYXN0IHVwZGF0ZWQgMSBKYW51YXJ5IDE5ODkKK0BjZW50ZXIgZm9yIHZlcnNpb24gMS4yCitAY2VudGVyICoqKkRSQUZUIENPUFkgT05MWSoqKgorCitAdnNraXAgMmluCisKK0BjZW50ZXIgQGJ7QWJzdHJhY3R9CisKK1VOSVggaGFzIGFsd2F5cyBoYWQgYSBjbGVhbiBhbmQgc2ltcGxlIHN5c3RlbSBjYWxsIGludGVyZmFjZSwgd2l0aCBhCitzdGFuZGFyZCBzZXQgb2YgZXJyb3IgY29kZXMgcGFzc2VkIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdXNlcgorcHJvZ3JhbXMuICBVbmZvcnR1bmF0ZWx5LCB0aGUgc2FtZSBjYW5ub3QgYmUgc2FpZCBvZiBtYW55IG9mIHRoZQorbGlicmFyaWVzIGxheWVyZWQgb24gdG9wIG9mIHRoZSBwcmltaXRpdmVzIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwuCitUeXBpY2FsbHksIGVhY2ggb25lIGhhcyB1c2VkIGEgZGlmZmVyZW50IHN0eWxlIG9mIGluZGljYXRpbmcgZXJyb3JzIHRvCit0aGVpciBjYWxsZXJzLCBsZWFkaW5nIHRvIGEgdG90YWwgaG9kZ2Vwb2RnZSBvZiBlcnJvciBoYW5kbGluZywgYW5kCitjb25zaWRlcmFibGUgYW1vdW50cyBvZiB3b3JrIGZvciB0aGUgcHJvZ3JhbW1lci4gIFRoaXMgcGFwZXIgZGVzY3JpYmVzCithIGxpYnJhcnkgYW5kIGFzc29jaWF0ZWQgdXRpbGl0aWVzIHdoaWNoIGFsbG93cyBhIG1vcmUgdW5pZm9ybSB3YXkgZm9yCitsaWJyYXJpZXMgdG8gcmV0dXJuIGVycm9ycyB0byB0aGVpciBjYWxsZXJzLCBhbmQgZm9yIHByb2dyYW1zIHRvCitkZXNjcmliZSBlcnJvcnMgYW5kIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMgdG8gdGhlaXIgdXNlcnMuCisKK0BwYWdlCitAdnNraXAgMHB0IHBsdXMgMWZpbGxsCisKK0NvcHlyaWdodCBAY29weXJpZ2h0e30gMTk4NywgMTk4OCBieSB0aGUgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nCitCb2FyZCBvZiB0aGUgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neS4KKworUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQgaXRzCitkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkCit0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZCB0aGF0IGJvdGggdGhhdAorY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZworZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUKK3VzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQord2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuCittYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55CitwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKworTm90ZSB0aGF0IHRoZSBmaWxlIHRleGluZm8udGV4LCBwcm92aWRlZCB3aXRoIHRoaXMgZGlzdHJpYnV0aW9uLCBpcyBmcm9tCit0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQgaXMgdW5kZXIgZGlmZmVyZW50IGNvcHlyaWdodCByZXN0cmljdGlvbnMKK2Zyb20gdGhlIHJlbWFpbmRlciBvZiB0aGlzIHBhY2thZ2UuCisKK0BlbmQgdGl0bGVwYWdlCisKK0Bub2RlIFRvcCwgV2h5IGNvbV9lcnI/LCAoZGlyKSwgKGRpcikKKworQHRvcCBBIENvbW1vbiBFcnJvciBEZXNjcmlwdGlvbiBMaWJyYXJ5IGZvciBVTklYCisKK1RoaXMgbWFudWFsIGRvY3VtZW50cyB0aGUgY29tX2VyciBsaWJyYXJ5LgorCitAbWVudQorKiBXaHkgY29tX2Vycj86OiAgICAgICAgICAgICAgICAKKyogRXJyb3IgY29kZXM6OiAgICAgICAgICAgICAgICAgCisqIEVycm9yIHRhYmxlIHNvdXJjZSBmaWxlOjogICAgIAorKiBUaGUgZXJyb3ItdGFibGUgY29tcGlsZXI6OiAgICAKKyogUnVuLXRpbWUgc3VwcG9ydCByb3V0aW5lczo6ICAgCisqIENvZGluZyBDb252ZW50aW9uczo6ICAgICAgICAgIAorKiBCdWlsZGluZyBhbmQgSW5zdGFsbGF0aW9uOjogICAKKyogQnVnIFJlcG9ydHM6OiAgICAgICAgICAgICAgICAgCisqIEFja25vd2xlZGdlbWVudHM6OiAgICAgICAgICAgIAorQGVuZCBtZW51CisKK0BwYWdlCisKK0Bub2RlIFdoeSBjb21fZXJyPywgRXJyb3IgY29kZXMsIFRvcCwgVG9wCitAY2hhcHRlciBXaHkgY29tX2Vycj8KKworSW4gYnVpbGRpbmcgYXBwbGljYXRpb24gc29mdHdhcmUgcGFja2FnZXMsIGEgcHJvZ3JhbW1lciBvZnRlbiBoYXMgdG8KK2RlYWwgd2l0aCBhIG51bWJlciBvZiBsaWJyYXJpZXMsIGVhY2ggb2Ygd2hpY2ggY2FuIHVzZSBhIGRpZmZlcmVudAorZXJyb3ItcmVwb3J0aW5nIG1lY2hhbmlzbS4gIFNvbWV0aW1lcyBvbmUgb2YgdHdvIHZhbHVlcyBpcyByZXR1cm5lZCwKK2luZGljYXRpbmcgc2ltcGx5IFNVQ0NFU1Mgb3IgRkFJTFVSRSwgd2l0aCBubyBkZXNjcmlwdGlvbiBvZiBlcnJvcnMKK2VuY291bnRlcmVkLiAgU29tZXRpbWVzIGl0IGlzIGFuIGluZGV4IGludG8gYSB0YWJsZSBvZiB0ZXh0IHN0cmluZ3MsCit3aGVyZSB0aGUgbmFtZSBvZiB0aGUgdGFibGUgdXNlZCBpcyBkZXBlbmRlbnQgb24gdGhlIGxpYnJhcnkgYmVpbmcKK3VzZWQgd2hlbiB0aGUgZXJyb3IgaXMgZ2VuZXJhdGVkOyBzaW5jZSBlYWNoIHRhYmxlIHN0YXJ0cyBudW1iZXJpbmcgYXQKKzAgb3IgMSwgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhcyB0byB0aGUgc291cmNlIG9mIHRoZSBlcnJvciBjb2RlIGlzCituZWVkZWQgdG8gZGV0ZXJtaW5lIHdoaWNoIHRhYmxlIHRvIGxvb2sgYXQuICBTb21ldGltZXMgbm8gdGV4dCBtZXNzYWdlcyBhcmUKK3N1cHBsaWVkIGF0IGFsbCwgYW5kIHRoZSBwcm9ncmFtbWVyIG11c3Qgc3VwcGx5IHRoZW0gYXQgYW55IHBvaW50IGF0IHdoaWNoCitoZSBtYXkgd2lzaCB0byByZXBvcnQgZXJyb3IgY29uZGl0aW9ucy4KK09mdGVuLCBhIGdsb2JhbCB2YXJpYWJsZSBpcyBhc3NpZ25lZCBzb21lIHZhbHVlIGRlc2NyaWJpbmcgdGhlIGVycm9yLCBidXQKK3RoZSBwcm9ncmFtbWVyIGhhcyB0byBrbm93IGluIGVhY2ggY2FzZSB3aGV0aGVyIHRvIGxvb2sgYXQgQGNvZGV7ZXJybm99LAorQGNvZGV7aF9lcnJub30sIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBAY29kZXtoZXNfZXJyKCl9LCBvciB3aGF0ZXZlciBvdGhlcgordmFyaWFibGVzIG9yIHJvdXRpbmVzIGFyZSBzcGVjaWZpZWQuCitBbmQgd2hhdCBoYXBwZW5zIGlmIHNvbWV0aGluZworaW4gdGhlIHByb2NlZHVyZSBvZgorZXhhbWluaW5nIG9yIHJlcG9ydGluZyB0aGUgZXJyb3IgY2hhbmdlcyB0aGUgc2FtZSB2YXJpYWJsZT8KKworVGhlIHBhY2thZ2Ugd2UgaGF2ZSBkZXZlbG9wZWQgaXMgYW4gYXR0ZW1wdCB0byBwcmVzZW50IGEgY29tbW9uCitlcnJvci1oYW5kbGluZyBtZWNoYW5pc20gdG8gbWFuaXB1bGF0ZSB0aGUgbW9zdCBjb21tb24gZm9ybSBvZiBlcnJvciBjb2RlCitpbiBhIGZhc2hpb24gdGhhdCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9ibGVtcyBsaXN0ZWQgYWJvdmUuCisKK0EgbGlzdCBvZiB1cCB0byAyNTYgdGV4dCBtZXNzYWdlcyBpcyBzdXBwbGllZCB0byBhIHRyYW5zbGF0b3Igd2UgaGF2ZQord3JpdHRlbiwgYWxvbmcgd2l0aCB0aGUgdGhyZWUtIHRvIGZvdXItY2hhcmFjdGVyIGBgbmFtZScnIG9mIHRoZSBlcnJvcgordGFibGUuICBUaGUgbGlicmFyeSB1c2luZyB0aGlzIGVycm9yIHRhYmxlIG5lZWQgb25seSBjYWxsIGEgcm91dGluZQorZ2VuZXJhdGVkIGZyb20gdGhpcyBlcnJvci10YWJsZSBzb3VyY2UgdG8gbWFrZSB0aGUgdGFibGUgYGBrbm93bicnIHRvIHRoZQorY29tX2VyciBsaWJyYXJ5LCBhbmQgYW55IGVycm9yIGNvZGUgdGhlIGxpYnJhcnkgZ2VuZXJhdGVzIGNhbiBiZSBjb252ZXJ0ZWQKK3RvIHRoZSBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2UuICBUaGVyZSBpcyBhbHNvIGEgZGVmYXVsdCBmb3JtYXQgZm9yCitlcnJvciBjb2RlcyBhY2NpZGVudGFsbHkgcmV0dXJuZWQgYmVmb3JlIG1ha2luZyB0aGUgdGFibGUga25vd24sIHdoaWNoIGlzCitvZiB0aGUgZm9ybSBAc2FtcHt1bmtub3duIGNvZGUgZm9vIDMyfSwgd2hlcmUgQHNhbXB7Zm9vfSB3b3VsZCBiZSB0aGUgbmFtZQorb2YgdGhlIHRhYmxlLgorCitAbm9kZSBFcnJvciBjb2RlcywgRXJyb3IgdGFibGUgc291cmNlIGZpbGUsIFdoeSBjb21fZXJyPywgVG9wCitAY2hhcHRlciBFcnJvciBjb2RlcworCitFcnJvciBjb2RlcyB0aGVtc2VsdmVzIGFyZSAzMiBiaXQgKHNpZ25lZCkgaW50ZWdlcnMsIG9mIHdoaWNoIHRoZSBoaWdoCitvcmRlciAyNCBiaXRzIGFyZSBhbiBpZGVudGlmaWVyIG9mIHdoaWNoIGVycm9yIHRhYmxlIHRoZSBlcnJvciBjb2RlIGlzCitmcm9tLCBhbmQgdGhlIGxvdyBvcmRlciA4IGJpdHMgYXJlIGEgc2VxdWVudGlhbCBlcnJvciBudW1iZXIgd2l0aGluCit0aGUgdGFibGUuICBBbiBlcnJvciBjb2RlIG1heSB0aHVzIGJlIGVhc2lseSBkZWNvbXBvc2VkIGludG8gaXRzIGNvbXBvbmVudAorcGFydHMuICBPbmx5IHRoZSBsb3dlc3QgMzIgYml0cyBvZiBhbiBlcnJvciBjb2RlIGFyZSBjb25zaWRlcmVkIHNpZ25pZmljYW50CitvbiBzeXN0ZW1zIHdoaWNoIHN1cHBvcnQgd2lkZXIgdmFsdWVzLgorCitFcnJvciB0YWJsZSAwIGlzIGRlZmluZWQgdG8gbWF0Y2ggdGhlIFVOSVggc3lzdGVtIGNhbGwgZXJyb3IgdGFibGUKKyhAY29kZXtzeXNfZXJybGlzdH0pOyB0aGlzIGFsbG93cyBAY29kZXtlcnJub30gdmFsdWVzIHRvIGJlIHVzZWQgZGlyZWN0bHkKK2luIHRoZSBsaWJyYXJ5IChhc3N1bWluZyB0aGF0IEBjb2Rle2Vycm5vfSBpcyBvZiBhIHR5cGUgd2l0aCB0aGUgc2FtZSB3aWR0aAorYXMgQHR7bG9uZ30pLiAgT3RoZXIgZXJyb3IgdGFibGUgbnVtYmVycyBhcmUgZm9ybWVkIGJ5IGNvbXBhY3RpbmcgdG9nZXRoZXIKK3RoZSBmaXJzdCBmb3VyIGNoYXJhY3RlcnMgb2YgdGhlIGVycm9yIHRhYmxlIG5hbWUuICBUaGUgbWFwcGluZyBiZXR3ZWVuCitjaGFyYWN0ZXJzIGluIHRoZSBuYW1lIGFuZCBudW1lcmljIHZhbHVlcyBpbiB0aGUgZXJyb3IgY29kZSBhcmUgZGVmaW5lZCBpbgorYSBzeXN0ZW0taW5kZXBlbmRlbnQgZmFzaGlvbiwgc28gdGhhdCB0d28gc3lzdGVtcyB0aGF0IGNhbiBwYXNzIGludGVncmFsCit2YWx1ZXMgYmV0d2VlbiB0aGVtIGNhbiByZWxpYWJseSBwYXNzIGVycm9yIGNvZGVzIHdpdGhvdXQgbG9zcyBvZiBtZWFuaW5nOwordGhpcyBzaG91bGQgd29yayBldmVuIGlmIHRoZSBjaGFyYWN0ZXIgc2V0cyB1c2VkIGFyZSBub3QgdGhlIHNhbWUuCisoSG93ZXZlciwgaWYgdGhpcyBpcyB0byBiZSBkb25lLCBlcnJvciB0YWJsZSAwIHNob3VsZCBiZSBhdm9pZGVkLCBzaW5jZSB0aGUKK2xvY2FsIHN5c3RlbSBjYWxsIGVycm9yIHRhYmxlcyBtYXkgZGlmZmVyLikKKworQW55IHZhcmlhYmxlIHdoaWNoIGlzIHRvIGNvbnRhaW4gYW4gZXJyb3IgY29kZSBzaG91bGQgYmUgZGVjbGFyZWQgQHR7bG9uZ30uCitUaGUgZHJhZnQgcHJvcG9zZWQgQW1lcmljYW4gTmF0aW9uYWwgU3RhbmRhcmQgZm9yIEMgKGFzIG9mIE1heSwgMTk4OCkKK3JlcXVpcmVzIHRoYXQgQHR7bG9uZ30gdmFyaWFibGVzIGJlIGF0IGxlYXN0IDMyIGJpdHM7IGFueSBzeXN0ZW0gd2hpY2ggZG9lcworbm90IHN1cHBvcnQgMzItYml0IEB0e2xvbmd9IHZhbHVlcyBjYW5ub3QgbWFrZSB1c2Ugb2YgdGhpcyBwYWNrYWdlIChub3IKK211Y2ggb3RoZXIgc29mdHdhcmUgdGhhdCBhc3N1bWVzIGFuIEFOU0ktQyBlbnZpcm9ubWVudCBiYXNlKSB3aXRob3V0CitzaWduaWZpY2FudCBlZmZvcnQuCisKK0Bub2RlIEVycm9yIHRhYmxlIHNvdXJjZSBmaWxlLCBUaGUgZXJyb3ItdGFibGUgY29tcGlsZXIsIEVycm9yIGNvZGVzLCBUb3AKK0BjaGFwdGVyIEVycm9yIHRhYmxlIHNvdXJjZSBmaWxlCisKK1RoZSBlcnJvciB0YWJsZSBzb3VyY2UgZmlsZSBiZWdpbnMgd2l0aCB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIHRhYmxlIG5hbWUsCithcworCitAZXhhbXBsZQorZXJyb3JfdGFibGUgQHZhcnt0YWJsZW5hbWV9CitAZW5kIGV4YW1wbGUKKworSW5kaXZpZHVhbCBlcnJvciBjb2RlcyBhcmUKK3NwZWNpZmllZCB3aXRoCisKK0BleGFtcGxlCitlcnJvcl9jb2RlIEB2YXJ7RVJST1JfTkFNRX0sIEB2YXJ7InRleHQgbWVzc2FnZSJ9CitAZW5kIGV4YW1wbGUKKword2hlcmUgQHNhbXB7ZWN9IGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBzaG9ydCBmb3JtIG9mIEBzYW1we2Vycm9yX2NvZGV9LiAgVG8KK2luZGljYXRlIHRoZSBlbmQgb2YgdGhlIHRhYmxlLCB1c2UgQHNhbXB7ZW5kfS4gIFRodXMsIGEgKHNob3J0KSBzYW1wbGUKK2Vycm9yIHRhYmxlIG1pZ2h0IGJlOgorCitAZXhhbXBsZQorCisgICAgICAgIGVycm9yX3RhYmxlICAgICBkc2MKKworICAgICAgICBlcnJvcl9jb2RlICAgICAgRFNDX0RVUF9NVEdfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJNZWV0aW5nIGFscmVhZHkgZXhpc3RzIgorCisgICAgICAgIGVjICAgICAgICAgICAgICBEU0NfQkFEX1BBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAiQSBiYWQgbWVldGluZyBwYXRobmFtZSB3YXMgZ2l2ZW4iCisKKyAgICAgICAgZWMgICAgICAgICAgICAgIERTQ19CQURfTU9ERVMsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBtb2RlIGZvciB0aGlzIGFjY2VzcyBjb250cm9sIGxpc3QiCisKKyAgICAgICAgZW5kCisKK0BlbmQgZXhhbXBsZQorCitAbm9kZSBUaGUgZXJyb3ItdGFibGUgY29tcGlsZXIsIFJ1bi10aW1lIHN1cHBvcnQgcm91dGluZXMsIEVycm9yIHRhYmxlIHNvdXJjZSBmaWxlLCBUb3AKK0BjaGFwdGVyIFRoZSBlcnJvci10YWJsZSBjb21waWxlcgorCitUaGUgZXJyb3IgdGFibGUgY29tcGlsZXIgaXMgbmFtZWQgQGNvZGV7Y29tcGlsZV9ldH0uICBJdCB0YWtlcyBvbmUKK2FyZ3VtZW50LCB0aGUgcGF0aG5hbWUgb2YgYSBmaWxlIChlbmRpbmcgaW4gQHNhbXB7LmV0fSwgZS5nLiwKK0BzYW1we2RzY19lcnIuZXR9KSBjb250YWluaW5nIGFuIGVycm9yIHRhYmxlIHNvdXJjZSBmaWxlLiAgSXQgcGFyc2VzIHRoZQorZXJyb3IgdGFibGUsIGFuZCBnZW5lcmF0ZXMgdHdvIG91dHB1dCBmaWxlcyAtLSBhIEMgaGVhZGVyIGZpbGUKKyhAc2FtcHtkaXNjdXNzX2Vyci5ofSkgd2hpY2ggY29udGFpbnMgZGVmaW5pdGlvbnMgb2YgdGhlIG51bWVyaWNhbCB2YWx1ZXMKK29mIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkIGluIHRoZSBlcnJvciB0YWJsZSwgYW5kIGEgQyBzb3VyY2UgZmlsZSB3aGljaAorc2hvdWxkIGJlIGNvbXBpbGVkIGFuZCBsaW5rZWQgd2l0aCB0aGUgZXhlY3V0YWJsZS4gIFRoZSBoZWFkZXIgZmlsZSBtdXN0IGJlCitpbmNsdWRlZCBpbiB0aGUgc291cmNlIG9mIGEgbW9kdWxlIHdoaWNoIHdpc2hlcyB0byByZWZlcmVuY2UgdGhlIGVycm9yCitjb2RlcyBkZWZpbmVkOyB0aGUgb2JqZWN0IG1vZHVsZSBnZW5lcmF0ZWQgZnJvbSB0aGUgQyBjb2RlIG1heSBiZSBsaW5rZWQgaW4KK3RvIGEgcHJvZ3JhbSB3aGljaCB3aXNoZXMgdG8gdXNlIHRoZSBwcmludGVkIGZvcm1zIG9mIHRoZSBlcnJvciBjb2Rlcy4KKworQG5vZGUgUnVuLXRpbWUgc3VwcG9ydCByb3V0aW5lcywgQ29kaW5nIENvbnZlbnRpb25zLCBUaGUgZXJyb3ItdGFibGUgY29tcGlsZXIsIFRvcAorQGNoYXB0ZXIgUnVuLXRpbWUgc3VwcG9ydCByb3V0aW5lcworCitBbnkgc291cmNlIGZpbGUgd2hpY2ggdXNlcyB0aGUgcm91dGluZXMgc3VwcGxpZWQgd2l0aCBvciBwcm9kdWNlZCBieSB0aGUKK2NvbV9lcnIgcGFja2FnZSBzaG91bGQgaW5jbHVkZSB0aGUgaGVhZGVyIGZpbGUgQGZpbGV7PGNvbV9lcnIuaD59LiAgSXQKK2NvbnRhaW5zIGRlY2xhcmF0aW9ucyBhbmQgZGVmaW5pdGlvbnMgd2hpY2ggbWF5IGJlIG5lZWRlZCBvbiBzb21lIHN5c3RlbXMuCisoU29tZSBmdW5jdGlvbnMgY2Fubm90IGJlIHJlZmVyZW5jZWQgcHJvcGVybHkgd2l0aG91dCB0aGUgcmV0dXJuIHR5cGUKK2RlY2xhcmF0aW9ucyBpbiB0aGlzIGZpbGUuICBTb21lIGZ1bmN0aW9ucyBtYXkgd29yayBwcm9wZXJseSBvbiBtb3N0CithcmNoaXRlY3R1cmVzIGV2ZW4gd2l0aG91dCB0aGUgaGVhZGVyIGZpbGUsIGJ1dCByZWx5aW5nIG9uIHRoaXMgaXMgbm90CityZWNvbW1lbmRlZC4pCisKK1RoZSBydW4tdGltZSBzdXBwb3J0IHJvdXRpbmVzIGFuZCB2YXJpYWJsZXMgcHJvdmlkZWQgdmlhIHRoaXMgcGFja2FnZQoraW5jbHVkZSB0aGUgZm9sbG93aW5nOgorCitAZXhhbXBsZQordm9pZCBpbml0aWFsaXplX0B2YXJ7eHh4eH1fZXJyb3JfdGFibGUgKHZvaWQpOworQGVuZCBleGFtcGxlCisKK09uZSBvZiB0aGVzZSByb3V0aW5lcyBpcyBidWlsdCBieSB0aGUgZXJyb3IgY29tcGlsZXIgZm9yIGVhY2ggZXJyb3IgdGFibGUuCitJdCBtYWtlcyB0aGUgQHZhcnt4eHh4fSBlcnJvciB0YWJsZSBgYGtub3duJycgdG8gdGhlIGVycm9yIHJlcG9ydGluZworc3lzdGVtLiAgQnkgY29udmVudGlvbiwgdGhpcyByb3V0aW5lIHNob3VsZCBiZSBjYWxsZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uCityb3V0aW5lIG9mIHRoZSBAdmFye3h4eHh9IGxpYnJhcnkuICBJZiB0aGUgbGlicmFyeSBoYXMgbm8gaW5pdGlhbGl6YXRpb24KK3JvdXRpbmUsIHNvbWUgY29tYmluYXRpb24gb2Ygcm91dGluZXMgd2hpY2ggZm9ybSB0aGUgY29yZSBvZiB0aGUgbGlicmFyeQorc2hvdWxkIGVuc3VyZSB0aGF0IHRoaXMgcm91dGluZSBpcyBjYWxsZWQuICBJdCBpcyBub3QgYWR2aXNlZCB0byBsZWF2ZSBpdAordGhlIGNhbGxlciB0byBtYWtlIHRoaXMgY2FsbC4KKworVGhlcmUgaXMgbm8gaGFybSBpbiBjYWxsaW5nIHRoaXMgcm91dGluZSBtb3JlIHRoYW4gb25jZS4KKworQGV4YW1wbGUKKyNkZWZpbmUgRVJST1JfVEFCTEVfQkFTRV9AdmFye3h4eHh9IEB2YXJ7bm5ubm59TAorQGVuZCBleGFtcGxlCisKK1RoaXMgc3ltYm9sIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZXJyb3IgY29kZSBlbnRyeSBpbiB0aGUKK3NwZWNpZmllZCB0YWJsZS4KK1RoaXMgcmFyZWx5IG5lZWRzIGJlIHVzZWQgYnkgdGhlCitwcm9ncmFtbWVyLgorCitAZGVmdHlwZWZ1biBjb25zdCBjaGFyICplcnJvcl9tZXNzYWdlIChsb25nIEB2YXJ7Y29kZX0pOworCitUaGlzIHJvdXRpbmUgcmV0dXJucyB0aGUgY2hhcmFjdGVyIHN0cmluZyBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQKK3dpdGggQGNvZGV7Y29kZX07IGlmIHRoaXMgaXMgYXNzb2NpYXRlZCB3aXRoIGFuIHVua25vd24gZXJyb3IgdGFibGUsIG9yCitpZiB0aGUgY29kZSBpcyBhc3NvY2lhdGVkIHdpdGggYSBrbm93biBlcnJvciB0YWJsZSBidXQgdGhlIGNvZGUgaXMgbm90CitpbiB0aGUgdGFibGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtIEBzYW1we1Vua25vd24gY29kZSBAdmFye3h4eHggbm59fSBpcworcmV0dXJuZWQsIHdoZXJlIEB2YXJ7eHh4eH0gaXMgdGhlIGVycm9yIHRhYmxlIG5hbWUgcHJvZHVjZWQgYnkKK3JldmVyc2luZyB0aGUgY29tcGFjdGlvbiBwZXJmb3JtZWQgb24gdGhlIGVycm9yIHRhYmxlIG51bWJlciBpbXBsaWVkCitieSB0aGF0IGVycm9yIGNvZGUsIGFuZCBAdmFye25ufSBpcyB0aGUgb2Zmc2V0IGZyb20gdGhhdCBiYXNlIHZhbHVlLgorCitBbHRob3VnaCB0aGlzIHJvdXRpbmUgaXMgYXZhaWxhYmxlIGZvciB1c2Ugd2hlbiBuZWVkZWQsIGl0cyB1c2Ugc2hvdWxkIGJlCitsZWZ0IHRvIGNpcmN1bXN0YW5jZXMgd2hpY2ggcmVuZGVyIEBjb2Rle2NvbV9lcnJ9IChiZWxvdykgdW51c2FibGUuCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAZGVmdHlwZWZ1biB2b2lkIGNvbV9lcnIgKGNvbnN0IGNoYXIgKkB2YXJ7d2hvYW1pfSwgbG9uZyBAdmFye2Vycm9yX2NvZGV9LCBjb25zdCBjaGFyICpAdmFye2Zvcm1hdH0sIC4uLik7ICAgICAgICAgICAgIAorCitUaGlzIHJvdXRpbmUgcHJvdmlkZXMgYW4gYWx0ZXJuYXRlIHdheSB0byBwcmludCBlcnJvciBtZXNzYWdlcyB0bworc3RhbmRhcmQgZXJyb3I7IGl0IGFsbG93cyB0aGUgZXJyb3IgbWVzc2FnZSB0byBiZSBwYXNzZWQgaW4gYXMgYQorcGFyYW1ldGVyLCByYXRoZXIgdGhhbiBpbiBhbiBleHRlcm5hbCB2YXJpYWJsZS4gIEBlbXBoe1Byb3ZpZGUgZ3JhbW1hdGljYWwKK2NvbnRleHQgZm9yIGBgbWVzc2FnZS4nJ30KKworVGhlIG1vZHVsZSByZXBvcnRpbmcgdGhlIGVycm9yIHNob3VsZCBiZSBwYXNzZWQgaW4gdmlhIEB2YXJ7d2hvYW1pfS4KK0lmIEB2YXJ7Zm9ybWF0fSBpcyBAY29kZXsoY2hhciAqKU5VTEx9LCB0aGUgZm9ybWF0dGVkIG1lc3NhZ2Ugd2lsbCBub3QgYmUKK3ByaW50ZWQuICBAdmFye2Zvcm1hdH0gbWF5IG5vdCBiZSBvbWl0dGVkLgorCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gdm9pZCBjb21fZXJyX3ZhIChjb25zdCBjaGFyICpAdmFye3dob2FtaX0sIGxvbmcgQHZhcntlcnJvcl9jb2RlfSwgY29uc3QgY2hhciAqQHZhcntmb3JtYXR9LCB2YV9saXN0IEB2YXJ7YXJnc30pOworCitUaGlzIHJvdXRpbmUgcHJvdmlkZXMgYW4gaW50ZXJmYWNlLCBlcXVpdmFsZW50IHRvIEBjb2Rle2NvbV9lcnJ9IGFib3ZlLAord2hpY2ggbWF5IGJlIHVzZWQgYnkgaGlnaGVyLWxldmVsIHZhcmlhZGljIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIHdoaWNoCithY2NlcHQgdmFyaWFibGUgbnVtYmVycyBvZiBhcmd1bWVudHMpLgorCitAZW5kIGRlZnR5cGVmdW4KKworQGRlZnR5cGVmdW4gdm9pZCAqc2V0X2NvbV9lcnJfaG9vayAodm9pZCAoKkB2YXJ7cHJvY30pIChjb25zdCBjaGFyICpAdmFye3dob2FtaX0sIGxvbmcgQHZhcntlcnJvcl9jb2RlfSwgdmFfbGlzdCBAdmFye2FyZ3N9KSAoY29uc3QgY2hhciAqQHZhcnt3aG9hbWl9LCBsb25nIEB2YXJ7ZXJyb3JfY29kZX0sIHZhX2xpc3QgQHZhcnthcmdzfSkpOworCitAZGVmdHlwZWZ1bnggdm9pZCByZXNldF9jb21fZXJyX2hvb2sgKCk7CisKK1RoZXNlIHR3byByb3V0aW5lcyBhbGxvdyBhIHJvdXRpbmUgdG8gYmUgZHluYW1pY2FsbHkgc3Vic3RpdHV0ZWQgZm9yCitAc2FtcHtjb21fZXJyfS4gIEFmdGVyIEBzYW1we3NldF9jb21fZXJyX2hvb2t9IGhhcyBiZWVuIGNhbGxlZCwKK2NhbGxzIHRvIEBzYW1we2NvbV9lcnJ9IHdpbGwgdHVybiBpbnRvIGNhbGxzIHRvIHRoZSBuZXcgaG9vayByb3V0aW5lLgorQHNhbXB7cmVzZXRfY29tX2Vycl9ob29rfSB0dXJucyBvZmYgdGhpcyBob29rLiAgVGhpcyBtYXkgaW50ZW5kZWQgdG8KK2JlIHVzZWQgaW4gZGFlbW9ucyAodG8gdXNlIGEgcm91dGluZSB3aGljaCBjYWxscyBAY2l0ZXtzeXNsb2coMyl9KSwgb3IKK2luIGEgd2luZG93IHN5c3RlbSBhcHBsaWNhdGlvbiAod2hpY2ggY291bGQgcG9wIHVwIGEgZGlhbG9ndWUgYm94KS4KKworSWYgYSBwcm9ncmFtIGlzIHRvIGJlIHVzZWQgaW4gYW4gZW52aXJvbm1lbnQgaW4gd2hpY2ggc2ltcGx5IHByaW50aW5nCittZXNzYWdlcyB0byB0aGUgQGNvZGV7c3RkZXJyfSBzdHJlYW0gd291bGQgYmUgaW5hcHByb3ByaWF0ZSAoc3VjaCBhcyBpbiBhCitkYWVtb24gcHJvZ3JhbSB3aGljaCBydW5zIHdpdGhvdXQgYSB0ZXJtaW5hbCBhdHRhY2hlZCksCitAY29kZXtzZXRfY29tX2Vycl9ob29rfSBtYXkgYmUgdXNlZCB0byByZWRpcmVjdCBvdXRwdXQgZnJvbSBAY29kZXtjb21fZXJyfS4KK1RoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSBvZiBhbiBlcnJvciBoYW5kbGVyIHdoaWNoIHVzZXMgQGNpdGV7c3lzbG9nKDMpfQorYXMgc3VwcGxpZWQgaW4gQlNEIDQuMzoKKworQGV4YW1wbGUKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN5c2xvZy5oPgorCisvKiBleHRlcm4gb3BlbmxvZyAoY29uc3QgY2hhciAqIG5hbWUsIGludCBsb2dvcHQsIGludCBmYWNpbGl0eSk7ICovCisvKiBleHRlcm4gc3lzbG9nIChpbnQgcHJpb3JpdHksIGNoYXIgKiBtZXNzYWdlLCAuLi4pOyAqLworCit2b2lkIGhvb2sgKGNvbnN0IGNoYXIgKiB3aG9hbWksIGxvbmcgY29kZSwKKyAgICAgICAgICAgY29uc3QgY2hhciAqIGZvcm1hdCwgdmFfbGlzdCBhcmdzKQorQHsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpdOworICAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOworICAgIGlmICghaW5pdGlhbGl6ZWQpIEB7CisgICAgICAgIG9wZW5sb2cgKHdob2FtaSwKKyAgICAgICAgICAgICAgICAgTE9HX05PV0FJVHxMT0dfQ09OU3xMT0dfUElEfExPR19OREVMQVksCisgICAgICAgICAgICAgICAgIExPR19EQUVNT04pOworICAgICAgICBpbml0aWFsaXplZCA9IDE7CisgICAgQH0KKyAgICB2c3ByaW50ZiAoYnVmZmVyLCBmb3JtYXQsIGFyZ3MpOworICAgIHN5c2xvZyAoTE9HX0VSUiwgIiVzICVzIiwgZXJyb3JfbWVzc2FnZSAoY29kZSksIGJ1ZmZlcik7CitAfQorQGVuZCBleGFtcGxlCisKK0FmdGVyIG1ha2luZyB0aGUgY2FsbAorQGNvZGV7c2V0X2NvbV9lcnJfaG9vayAoaG9vayk7fSwKK2FueSBjYWxscyB0byBAY29kZXtjb21fZXJyfSB3aWxsIHJlc3VsdCBpbiBtZXNzYWdlcyBiZWluZyBzZW50IHRvIHRoZQorQHZhcntzeXNsb2dkfSBkYWVtb24gZm9yIGxvZ2dpbmcuCitUaGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSwgQHNhbXB7d2hvYW1pfSwgaXMgc3VwcGxpZWQgdG8gdGhlCitAc2FtcHtvcGVubG9nKCl9IGNhbGwsIGFuZCB0aGUgbWVzc2FnZSBpcyBmb3JtYXR0ZWQgaW50byBhIGJ1ZmZlciBhbmQKK3Bhc3NlZCB0byBAY29kZXtzeXNsb2d9LgorCitOb3RlIHRoYXQgc2luY2UgdGhlIGV4dHJhIGFyZ3VtZW50cyB0byBAY29kZXtjb21fZXJyfSBhcmUgcGFzc2VkIGJ5CityZWZlcmVuY2UgdmlhIHRoZSBAY29kZXt2YV9saXN0fSB2YWx1ZSBAY29kZXthcmdzfSwgdGhlIGhvb2sgcm91dGluZSBtYXkKK3BsYWNlIGFueSBmb3JtIG9mIGludGVycHJldGF0aW9uIG9uIHRoZW0sIGluY2x1ZGluZyBpZ25vcmluZyB0aGVtLiAgRm9yCitjb25zaXN0ZW5jeSwgQGNvZGV7cHJpbnRmfS1zdHlsZSBpbnRlcnByZXRhdGlvbiBpcyBzdWdnZXN0ZWQsIHZpYQorQGNvZGV7dnNwcmludGZ9IChvciBAY29kZXtfZG9wcm50fSBvbiBCU0Qgc3lzdGVtcyB3aXRob3V0IGZ1bGwgc3VwcG9ydCBmb3IKK3RoZSBBTlNJIEMgbGlicmFyeSkuCisKK0BlbmQgZGVmdHlwZWZ1bgorCitAbm9kZSBDb2RpbmcgQ29udmVudGlvbnMsIEJ1aWxkaW5nIGFuZCBJbnN0YWxsYXRpb24sIFJ1bi10aW1lIHN1cHBvcnQgcm91dGluZXMsIFRvcAorQGNoYXB0ZXIgQ29kaW5nIENvbnZlbnRpb25zCisKK1RoZSBmb2xsb3dpbmcgY29udmVudGlvbnMgYXJlIGp1c3Qgc29tZSBnZW5lcmFsIHN0eWxpc3RpYyBjb252ZW50aW9ucwordG8gZm9sbG93IHdoZW4gd3JpdGluZyByb2J1c3QgbGlicmFyaWVzIGFuZCBwcm9ncmFtcy4gIENvbnZlbnRpb25zCitzaW1pbGFyIHRvIHRoaXMgYXJlIGdlbmVyYWxseSBmb2xsb3dlZCBpbnNpZGUgdGhlIFVOSVgga2VybmVsIGFuZCBtb3N0Cityb3V0aW5lcyBpbiB0aGUgTXVsdGljcyBvcGVyYXRpbmcgc3lzdGVtLiAgSW4gZ2VuZXJhbCwgYSByb3V0aW5lCitlaXRoZXIgc3VjY2VlZHMgKHJldHVybmluZyBhIHplcm8gZXJyb3IgY29kZSwgYW5kIGRvaW5nIHNvbWUgc2lkZQorZWZmZWN0cyBpbiB0aGUgcHJvY2VzcyksIG9yIGl0IGZhaWxzLCBkb2luZyBtaW5pbWFsIHNpZGUgZWZmZWN0czsgaW4KK2FueSBldmVudCwgYW55IGludmFyaWFudCB3aGljaCB0aGUgbGlicmFyeSBhc3N1bWVzIG11c3QgYmUgbWFpbnRhaW5lZC4KKworSW4gZ2VuZXJhbCwgaXQgaXMgbm90IGluIHRoZSBkb21haW4gb2Ygbm9uIHVzZXItaW50ZXJmYWNlIGxpYnJhcnkKK3JvdXRpbmVzIHRvIHdyaXRlIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgdGVybWluYWwsIG9yIGhhbHQgdGhlCitwcm9jZXNzLiAgU3VjaCBmb3JtcyBvZiBgYGVycm9yIGhhbmRsaW5nJycgc2hvdWxkIGJlIHJlc2VydmVkIGZvcgorZmFpbHVyZXMgb2YgaW50ZXJuYWwgaW52YXJpYW50cyBhbmQgY29uc2lzdGFuY3kgY2hlY2tzIG9ubHksIGFzIGl0Citwcm92aWRlcyB0aGUgdXNlciBvZiB0aGUgbGlicmFyeSBubyB3YXkgdG8gY2xlYW4gdXAgZm9yIGhpbXNlbGYgaW4gdGhlCitldmVudCBvZiB0b3RhbCBmYWlsdXJlLgorCitMaWJyYXJ5IHJvdXRpbmVzIHdoaWNoIGNhbiBmYWlsIHNob3VsZCBiZSBzZXQgdXAgdG8gcmV0dXJuIGFuIGVycm9yCitjb2RlLiAgVGhpcyBzaG91bGQgdXN1YWxseSBiZSBkb25lIGFzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCitmdW5jdGlvbjsgaWYgdGhpcyBpcyBub3QgYWNjZXB0YWJsZSwgdGhlIHJvdXRpbmUgc2hvdWxkIHJldHVybiBhCitgYG51bGwnJyB2YWx1ZSwgYW5kIHB1dCB0aGUgZXJyb3IgY29kZSBpbnRvIGEgcGFyYW1ldGVyIHBhc3NlZCBieQorcmVmZXJlbmNlLgorCitSb3V0aW5lcyB3aGljaCB1c2UgdGhlIGZpcnN0IHN0eWxlIG9mIGludGVyZmFjZSBjYW4gYmUgdXNlZCBmcm9tCit1c2VyLWludGVyZmFjZSBsZXZlbHMgb2YgYSBwcm9ncmFtIGFzIGZvbGxvd3M6CisKK0BleGFtcGxlCitAeworICAgIGlmICgoY29kZSA9IGluaXRpYWxpemVfd29ybGQoZ2V0dWlkKCksIHJhbmRvbSgpKSkgIT0gMCkgQHsKKyAgICAgICAgY29tX2VycigiZGVtbyIsIGNvZGUsCisgICAgICAgICAgICAgICAgIndoZW4gdHJ5aW5nIHRvIGluaXRpYWxpemUgd29ybGQiKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICBAfQorICAgIGlmICgoZGF0YWJhc2UgPSBvcGVuX2RhdGFiYXNlKCJteV9zZWNyZXRzIiwgJmNvZGUpKT09TlVMTCkgQHsKKyAgICAgICAgY29tX2VycigiZGVtbyIsIGNvZGUsCisgICAgICAgICAgICAgICAgIndoaWxlIG9wZW5pbmcgbXlfc2VjcmV0cyIpOworICAgICAgICBleGl0KDEpOworICAgIEB9CitAfQorQGVuZCBleGFtcGxlCisKK0EgY2FsbGVyIHdoaWNoIGZhaWxzIHRvIGNoZWNrIHRoZSByZXR1cm4gc3RhdHVzIGlzIGluIGVycm9yLiAgSXQgaXMKK3Bvc3NpYmxlIHRvIGxvb2sgZm9yIGNvZGUgd2hpY2ggaWdub3JlcyBlcnJvciByZXR1cm5zIGJ5IHVzaW5nIGxpbnQ7Citsb29rIGZvciBlcnJvciBtZXNzYWdlcyBvZiB0aGUgZm9ybSBgYGZvb2JhciByZXR1cm5zIHZhbHVlIHdoaWNoIGlzCitzb21ldGltZXMgaWdub3JlZCcnIG9yIGBgZm9vYmFyIHJldHVybnMgdmFsdWUgd2hpY2ggaXMgYWx3YXlzCitpZ25vcmVkLicnCisKK1NpbmNlIGxpYnJhcmllcyBtYXkgYmUgYnVpbHQgb3V0IG9mIG90aGVyIGxpYnJhcmllcywgaXQgaXMgb2Z0ZW4gbmVjZXNzYXJ5Citmb3IgdGhlIHN1Y2Nlc3Mgb2Ygb25lIHJvdXRpbmUgdG8gZGVwZW5kIG9uIGFub3RoZXIuICBXaGVuIGEgbG93ZXIgbGV2ZWwKK3JvdXRpbmUgcmV0dXJucyBhbiBlcnJvciBjb2RlLCB0aGUgbWlkZGxlIGxldmVsIHJvdXRpbmUgaGFzIGEgZmV3IHBvc3NpYmxlCitvcHRpb25zLiAgSXQgY2FuIHNpbXBseSByZXR1cm4gdGhlIGVycm9yIGNvZGUgdG8gaXRzIGNhbGxlciBhZnRlciBkb2luZworc29tZSBmb3JtIG9mIGNsZWFudXAsIGl0IGNhbiBzdWJzdGl0dXRlIG9uZSBvZiBpdHMgb3duLCBvciBpdCBjYW4gdGFrZQorY29ycmVjdGl2ZSBhY3Rpb24gb2YgaXRzIG93biBhbmQgY29udGludWUgbm9ybWFsbHkuICBGb3IgaW5zdGFuY2UsIGEKK2xpYnJhcnkgcm91dGluZSB3aGljaCBtYWtlcyBhIGBgY29ubmVjdCcnIHN5c3RlbSBjYWxsIHRvIG1ha2UgYSBuZXR3b3JrCitjb25uZWN0aW9uIG1heSByZWZsZWN0IHRoZSBzeXN0ZW0gZXJyb3IgY29kZSBAY29kZXtFQ09OTlJFRlVTRUR9CisoQ29ubmVjdGlvbiByZWZ1c2VkKSB0byBpdHMgY2FsbGVyLCBvciBpdCBtYXkgcmV0dXJuIGEgYGBzZXJ2ZXIgbm90CithdmFpbGFibGUsIHRyeSBhZ2FpbiBsYXRlciwnJyBvciBpdCBtYXkgdHJ5IGEgZGlmZmVyZW50IHNlcnZlci4KKworQ2xlYW51cCB3aGljaCBpcyB0eXBpY2FsbHkgbmVjZXNzYXJ5IG1heSBpbmNsdWRlLCBidXQgbm90IGJlIGxpbWl0ZWQKK3RvLCBmcmVlaW5nIGFsbG9jYXRlZCBtZW1vcnkgd2hpY2ggd2lsbCBub3QgYmUgbmVlZGVkIGFueSBtb3JlLAordW5sb2NraW5nIGNvbmN1cnJhbmN5IGxvY2tzLCBkcm9wcGluZyByZWZlcmVuY2UgY291bnRzLCBjbG9zaW5nIGZpbGUKK2Rlc2NyaXB0b3JzLCBvciBvdGhlcndpc2UgdW5kb2luZyBhbnl0aGluZyB3aGljaCB0aGUgcHJvY2VkdXJlIGRpZCB1cAordG8gdGhpcyBwb2ludC4gIFdoZW4gdGhlcmUgYXJlIGEgbG90IG9mIHRoaW5ncyB3aGljaCBjYW4gZ28gd3JvbmcsIGl0CitpcyBnZW5lcmFsbHkgZ29vZCB0byB3cml0ZSBvbmUgYmxvY2sgb2YgZXJyb3ItaGFuZGxpbmcgY29kZSB3aGljaCBpcworYnJhbmNoZWQgdG8sIHVzaW5nIGEgZ290bywgaW4gdGhlIGV2ZW50IG9mIGZhaWx1cmUuICBBIGNvbW1vbiBzb3VyY2UKK29mIGVycm9ycyBpbiBVTklYIHByb2dyYW1zIGlzIGZhaWxpbmcgdG8gY2xvc2UgZmlsZSBkZXNjcmlwdG9ycyBvbgorZXJyb3IgcmV0dXJuczsgdGhpcyBsZWF2ZXMgYSBudW1iZXIgb2YgYGB6b21iaWVkJycgZmlsZSBkZXNjcmlwdG9ycworb3Blbiwgd2hpY2ggZXZlbnR1YWxseSBjYXVzZXMgdGhlIHByb2Nlc3MgdG8gcnVuIG91dCBvZiBmaWxlCitkZXNjcmlwdG9ycyBhbmQgZmFsbCBvdmVyLgorCitAZXhhbXBsZQorQHsKKyAgICBGSUxFICpmMT1OVUxMLCAqZjI9TlVMTCwgKmYzPU5VTEw7CisgICAgaW50IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoIChmMSA9IGZvcGVuKEZJTEUxLCAiciIpKSA9PSBOVUxMKSBAeworICAgICAgICBzdGF0dXMgPSBlcnJubzsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBAfQorCisgICAgLyoKKyAgICAgKiBDcnVuY2ggZm9yIGEgd2hpbGUKKyAgICAgKi8KKworICAgIGlmICggKGYyID0gZm9wZW4oRklMRTIsICJ3IikpID09IE5VTEwpIEB7CisgICAgICAgIHN0YXR1cyA9IGVycm5vOworICAgICAgICBnb3RvIGVycm9yOworICAgIEB9CisKKyAgICBpZiAoIChmMyA9IGZvcGVuKEZJTEUzLCAiYSsiKSkgPT0gTlVMTCkgQHsKKyAgICAgICAgc3RhdHVzID0gZXJybm87CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIEB9CisKKyAgICAvKgorICAgICAqIERvIG1vcmUgcHJvY2Vzc2luZy4KKyAgICAgKi8KKyAgICBmY2xvc2UoZjEpOworICAgIGZjbG9zZShmMik7CisgICAgZmNsb3NlKGYzKTsKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgaWYgKGYxKSBmY2xvc2UoZjEpOworICAgIGlmIChmMikgZmNsb3NlKGYyKTsKKyAgICBpZiAoZjMpIGZjbG9zZShmMyk7CisgICAgcmV0dXJuIHN0YXR1czsKK0B9CitAZW5kIGV4YW1wbGUKKworQG5vZGUgQnVpbGRpbmcgYW5kIEluc3RhbGxhdGlvbiwgQnVnIFJlcG9ydHMsIENvZGluZyBDb252ZW50aW9ucywgVG9wCitAY2hhcHRlciBCdWlsZGluZyBhbmQgSW5zdGFsbGF0aW9uCisKK1RoZSBkaXN0cmlidXRpb24gb2YgdGhpcyBwYWNrYWdlIHdpbGwgcHJvYmFibHkgYmUgZG9uZSBhcyBhIGNvbXByZXNzZWQKK2BgdGFyJyctZm9ybWF0IGZpbGUgYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgRlRQIGZyb20gU0lQQi5NSVQuRURVLgorUmV0cmlldmUgQHNhbXB7cHViL2NvbV9lcnIudGFyLlp9IGFuZCBleHRyYWN0IHRoZSBjb250ZW50cy4gIEEgc3ViZGlyZWN0b3J5CitAdHtwcm9maWxlZH0gc2hvdWxkIGJlIGNyZWF0ZWQgdG8gaG9sZCBvYmplY3RzIGNvbXBpbGVkIGZvciBwcm9maWxpbmcuCitSdW5uaW5nIGBgbWFrZSBhbGwnJyBzaG91bGQgdGhlbiBiZSBzdWZmaWNpZW50IHRvIGJ1aWxkIHRoZSBsaWJyYXJ5IGFuZAorZXJyb3ItdGFibGUgY29tcGlsZXIuICBUaGUgZmlsZXMgQHNhbXB7bGliY29tX2Vyci5hfSwKK0BzYW1we2xpYmNvbV9lcnJfcC5hfSwgQHNhbXB7Y29tX2Vyci5ofSwgYW5kIEBzYW1we2NvbXBpbGVfZXR9IHNob3VsZCBiZQoraW5zdGFsbGVkIGZvciB1c2U7IEBzYW1we2NvbV9lcnIuM30gYW5kIEBzYW1we2NvbXBpbGVfZXQuMX0gY2FuIGFsc28gYmUKK2luc3RhbGxlZCBhcyBtYW51YWwgcGFnZXMuCisKK0Bub2RlIEJ1ZyBSZXBvcnRzLCBBY2tub3dsZWRnZW1lbnRzLCBCdWlsZGluZyBhbmQgSW5zdGFsbGF0aW9uLCBUb3AKK0BjaGFwdGVyIEJ1ZyBSZXBvcnRzCisKK1RoZSBwcmluY2lwYWwgYXV0aG9yIG9mIHRoaXMgbGlicmFyeSBpczogS2VuCitSYWVidXJuLCBAdHtyYWVidXJuQEBNSVQuRURVfS4gIAorCitUaGlzIHZlcnNpb24gb2YgdGhlIGNvbV9lcnIgbGlicmFyeSBpcyBiZWluZyBtYWludGFpbmVkIGJ5IFRoZW9kb3JlCitUcydvLCBhbmQgc28gYnVncyBhbmQgY29tbWVudHMgc2hvdWxkIGJlIHNlbnQgdG8gQHR7dHl0c29AQHRodW5rLm9yZ30uCisKKworQG5vZGUgQWNrbm93bGVkZ2VtZW50cywgICwgQnVnIFJlcG9ydHMsIFRvcAorQGNoYXB0ZXIgQWNrbm93bGVkZ2VtZW50cworCitJIHdvdWxkIGxpa2UgdG8gdGhhbms6IEJpbGwgU29tbWVyZmVsZCwgZm9yIGhpcyBoZWxwIHdpdGggc29tZSBvZiB0aGlzCitkb2N1bWVudGF0aW9uLCBhbmQgY2F0Y2hpbmcgc29tZSBvZiB0aGUgYnVncyB0aGUgZmlyc3QgdGltZSBhcm91bmQ7CitIb25leXdlbGwgSW5mb3JtYXRpb24gU3lzdGVtcywgZm9yIG5vdCBraWxsaW5nIG9mZiB0aGUgQGVtcGh7TXVsdGljc30KK29wZXJhdGluZyBzeXN0ZW0gYmVmb3JlIEkgaGFkIGFuIG9wcG9ydHVuaXR5IHRvIHVzZSBpdDsgSG9uZXl3ZWxsJ3MKK2N1c3RvbWVycywgd2hvIHBlcnN1YWRlZCB0aGVtIG5vdCB0byBkbyBzbywgZm9yIGEgd2hpbGU7IFRlZCBBbmRlcnNvbiBvZgorQ01VLCBmb3IgY2F0Y2hpbmcgc29tZSBwcm9ibGVtcyBiZWZvcmUgdmVyc2lvbiAxLjIgbGVmdCB0aGUgbmVzdDsgU3RhbgorWmFuYXJvdHRpIGFuZCBzZXZlcmFsIG90aGVycyBvZiBNSVQncyBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQsCitmb3IgZ2V0dGluZyB1cyBzdGFydGVkIHdpdGggYGBkaXNjdXNzLCcnIGZvciB3aGljaCB0aGlzIHBhY2thZ2Ugd2FzCitvcmlnaW5hbGx5IHdyaXR0ZW47IGFuZCBldmVyeW9uZSBJJ3ZlIHRhbGtlZCBpbnRvIC0tLSBJIG1lYW4sIGFza2VkIHRvIHJlYWQKK3RoaXMgZG9jdW1lbnQgYW5kIHRoZSBgYG1hbicnIHBhZ2VzLgorCitAY29udGVudHMKK0BieWUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvY29tX3JpZ2h0LmMgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbV9yaWdodC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjY2ViNTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbV9yaWdodC5jCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogY29tX3JpZ2h0LmMgLS0gcHJvdmlkZSBIZWltZGFsbCAvIEtlcmJlcm9zNGt0aCBjb21fZXJyIGludGVyZmFjZXMKKyAqIAlmb3IgYmFja3dhcmRzIGNvbXBhdGJpbGl0eQorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMyBieSBUaGVvZG9yZSBUcydvCisgKgorICogVGFrZW4gZnJvbSBsaWIvY29tX2Vyci9lcnJvci5jIGZyb20gS2VyYmVyb3M0a3RoIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTcsIDE5OTgsIDIwMDEgS3VuZ2xpZ2EgVGVrbmlza2EgSPZnc2tvbGFuCisgKiAoUm95YWwgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3ksIFN0b2NraG9sbSwgU3dlZGVuKS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBJbnN0aXR1dGUgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIElOU1RJVFVURSBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIElOU1RJVFVURSBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgImNvbV9lcnIuaCIKKyNpbmNsdWRlICJlcnJvcl90YWJsZS5oIgorCitjb25zdCBjaGFyICoKK2NvbV9yaWdodChzdHJ1Y3QgZXRfbGlzdCAqbGlzdCwgbG9uZyBjb2RlKQoreworICAgIHN0cnVjdCBldF9saXN0ICpwOworICAgIGZvciAocCA9IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7CisJaWYgKGNvZGUgPj0gcC0+dGFibGUtPmJhc2UgJiYgY29kZSA8IHAtPnRhYmxlLT5iYXNlICsgcC0+dGFibGUtPm5fbXNncykKKwkgICAgcmV0dXJuIHAtPnRhYmxlLT5tc2dzW2NvZGUgLSBwLT50YWJsZS0+YmFzZV07CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCitjb25zdCBjaGFyICoKK2NvbV9yaWdodF9yKHN0cnVjdCBldF9saXN0ICpsaXN0LCBsb25nIGNvZGUsIGNoYXIgKnN0ciwgc2l6ZV90IGxlbikKK3sKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqcDsKKyAgICBmb3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4dCkgeworCWlmICgoY29kZSA+PSBwLT50YWJsZS0+YmFzZSkgJiYKKwkgICAgKGNvZGUgPCBwLT50YWJsZS0+YmFzZSArIHAtPnRhYmxlLT5uX21zZ3MpKSB7CisgICAgICAgICAgICBzdHJuY3B5KHN0ciwgcC0+dGFibGUtPm1zZ3NbY29kZSAtIHAtPnRhYmxlLT5iYXNlXSwgbGVuKTsKKyAgICAgICAgICAgIHN0cltsZW4tMV0gPSAnXDAnOworICAgICAgICAgICAgcmV0dXJuIHN0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RydWN0IGZvb2JhciB7CisgICAgc3RydWN0IGV0X2xpc3QgZXRsOworICAgIHN0cnVjdCBlcnJvcl90YWJsZSB0YWI7Cit9OworCisvKgorICogV2UgcHJvdmlkZSB0aGlzIHJvdXRpbmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBIZWltZGFsbCBnZW5lcmF0ZWQKKyAqIGZvb19lcnIuYyBmaWxlcywgYnV0IHdlIGRvbid0IHVzZSB0aGlzIG91cnNlbHZlcyBmb3IgZm9vX2Vyci5jCisgKiBmaWxlcyBnZW5lcmF0ZWQgYnkgb3VyIGNvbXBpbGVfZXQuICBUaGlzIGlzIHNvIG91ciBmb29fZXJyLmMKKyAqIGZpbGVzIGNhbiBiZSB1c2VkIHdpdGggb2xkZXIgY29tX2VyciBsaWJyYXJpZXMgd2l0aG91dCBydW5uaW5nCisgKiBhZm91bCBvZiBkZXBlbmRlbmNpZXMuCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QsCisJCQkgY29uc3QgY2hhciAqKm1lc3NhZ2VzLAorCQkJIGludCBudW1fZXJyb3JzLAorCQkJIGxvbmcgYmFzZSkKK3sKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqZXQsICoqZW5kOworICAgIHN0cnVjdCBlcnJvcl90YWJsZSAqdGFiOworICAgIHN0cnVjdCBmb29iYXIgKmY7CisKKyAgICBmb3IgKGVuZCA9IGxpc3QsIGV0ID0gKmxpc3Q7IGV0OyBlbmQgPSAmZXQtPm5leHQsIGV0ID0gZXQtPm5leHQpCisgICAgICAgIGlmIChldC0+dGFibGUtPm1zZ3MgPT0gbWVzc2FnZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgZiA9IG1hbGxvYyhzaXplb2YoKmYpKTsKKyAgICBpZiAoZiA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgZXQgPSAmZi0+ZXRsOworICAgIGV0LT50YWJsZSA9IHRhYiA9ICZmLT50YWI7CisgICAgdGFiLT5tc2dzID0gbWVzc2FnZXM7CisgICAgdGFiLT5uX21zZ3MgPSBudW1fZXJyb3JzOworICAgIHRhYi0+YmFzZSA9IGJhc2U7CisgICAgZXQtPm5leHQgPSBOVUxMOworICAgICplbmQgPSBldDsKK30KKworCit2b2lkCitmcmVlX2Vycm9yX3RhYmxlKHN0cnVjdCBldF9saXN0ICpldCkKK3sKKyAgICB3aGlsZShldCl7CisJc3RydWN0IGV0X2xpc3QgKnAgPSBldDsKKwlldCA9IGV0LT5uZXh0OworCWZyZWUocCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC9jb21waWxlX2V0LjEgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbXBpbGVfZXQuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjE5NDQxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC9jb21waWxlX2V0LjEKQEAgLTAsMCArMSw4MiBAQAorLlwiIENvcHlyaWdodCAoYykgMTk4OCBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LAorLlwiIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisuXCIKKy5cIiAkSGVhZGVyJAorLlwiCisuVEggQ09NUElMRV9FVCAxICIzMCBNYXIgMTk5OCIgU0lQQgorLlNIIE5BTUUKK2NvbXBpbGVfZXQgXC0gZXJyb3IgdGFibGUgY29tcGlsZXIKKy5TSCBTWU5PUFNJUworLkIgY29tcGlsZV9ldAorZmlsZQorLlNIIERFU0NSSVBUSU9OCisuQiBDb21waWxlX2V0Citjb252ZXJ0cyBhIHRhYmxlIGxpc3RpbmcgZXJyb3ItY29kZSBuYW1lcyBhbmQgYXNzb2NpYXRlZCBtZXNzYWdlcyBpbnRvCithIEMgc291cmNlIGZpbGUgc3VpdGFibGUgZm9yIHVzZSB3aXRoIHRoZQorLklSIGNvbV9lcnIgKDMpCitsaWJyYXJ5LgorCitUaGUgc291cmNlIGZpbGUgbmFtZSBtdXN0IGVuZCB3aXRoIGEgc3VmZml4IG9mIGBgLmV0Jyc7IHRoZSBmaWxlCitjb25zaXN0cyBvZiBhIGRlY2xhcmF0aW9uIHN1cHBseWluZyB0aGUgbmFtZSAodXAgdG8gZm91ciBjaGFyYWN0ZXJzCitsb25nKSBvZiB0aGUgZXJyb3ItY29kZSB0YWJsZToKKworLkIgZXJyb3JfdGFibGUKKy5JIG5hbWUKKworZm9sbG93ZWQgYnkgdXAgdG8gMjU2IGVudHJpZXMgb2YgdGhlIGZvcm06CisKKy5CIGVycm9yX2NvZGUKKy5JIG5hbWUsCisiCisuSSBzdHJpbmcKKyIKKworYW5kIGEgZmluYWwKKworLkIgZW5kCisKK3RvIGluZGljYXRlIHRoZSBlbmQgb2YgdGhlIHRhYmxlLgorCitUaGUgbmFtZSBvZiB0aGUgdGFibGUgaXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIG5hbWUgb2YgYSBzdWJyb3V0aW5lCisuSSBpbml0aWFsaXplX1hYWFhfZXJyb3JfdGFibGUKK3doaWNoIG11c3QgYmUgY2FsbGVkIGluIG9yZGVyIGZvciB0aGUKKy5JIGNvbV9lcnIKK2xpYnJhcnkgdG8gcmVjb2duaXplIHRoZSBlcnJvciB0YWJsZS4KKworVGhlIHZhcmlvdXMgZXJyb3IgY29kZXMgZGVmaW5lZCBhcmUgYXNzaWduZWQgc2VxdWVudGlhbGx5IGluY3JlYXNpbmcKK251bWJlcnMgKHN0YXJ0aW5nIHdpdGggYSBsYXJnZSBudW1iZXIgY29tcHV0ZWQgYXMgYSBoYXNoIGZ1bmN0aW9uIG9mCit0aGUgbmFtZSBvZiB0aGUgdGFibGUpOyB0aHVzIGZvciBjb21wYXRpYmlsaXR5IGl0IGlzIHN1Z2dlc3RlZCB0aGF0CituZXcgY29kZXMgYmUgYWRkZWQgb25seSB0byB0aGUgZW5kIG9mIGFuIGV4aXN0aW5nIHRhYmxlLCBhbmQgdGhhdCBubworY29kZXMgYmUgcmVtb3ZlZCBmcm9tIHRhYmxlcy4KKworVGhlIG5hbWVzIGRlZmluZWQgaW4gdGhlIHRhYmxlIGFyZSBwbGFjZWQgaW50byBhIEMgaGVhZGVyIGZpbGUgd2l0aAorcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMgZGVmaW5pbmcgdGhlbSBhcyBpbnRlZ2VyIGNvbnN0YW50cyBvZiB1cCB0bworMzIgYml0cyBpbiBtYWduaXR1ZGUuCisKK0EgQyBzb3VyY2UgZmlsZSBpcyBhbHNvIGdlbmVyYXRlZCB3aGljaCBzaG91bGQgYmUgY29tcGlsZWQgYW5kIGxpbmtlZAord2l0aCB0aGUgb2JqZWN0IGZpbGVzIHdoaWNoIHJlZmVyZW5jZSB0aGVzZSBlcnJvciBjb2RlczsgaXQgY29udGFpbnMKK3RoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlcyBhbmQgdGhlIGluaXRpYWxpemF0aW9uIHN1YnJvdXRpbmUuICBCb3RoIEMKK2ZpbGVzIGhhdmUgbmFtZXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCB3aXRoCit0aGUgYGAuZXQnJyBzdWZmaXggcmVwbGFjZWQgYnkgYGAuYycnIGFuZCBgYC5oJycuCisKK0EgYGAjJycgaW4gdGhlIHNvdXJjZSBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBjb21tZW50IGNoYXJhY3RlciwgYW5kIGFsbAorcmVtYWluaW5nIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgc291cmNlIGxpbmUgd2lsbCBiZSBpZ25vcmVkLgorCisuU0ggQlVHUworCitTaW5jZSB0aGUgb3JpZ2luYWwKKy5CIGNvbXBpbGVfZXQKK3VzZXMgYSB2ZXJ5IHNpbXBsZSBwYXJzZXIgYmFzZWQgb24KKy5JUiB5YWNjICgxKSwgCithbmQgdGhpcyBjdXJyZW50IHZlcnNpb24gb2YgCisuQiBjb21waWxlX2V0Cit1c2VzIGFuIGF3ay9zZWQgY29tYmluYXRpb24gb2Ygc2NyaXB0cywgCitpdHMgZXJyb3IgcmVjb3ZlcnkgbGVhdmVzIG11Y2ggdG8gYmUgZGVzaXJlZC4KKworLlwiIC5JUiBmb3IgbWFudWFsIGVudHJpZXMKKy5cIiAuUFAgZm9yIHBhcmFncmFwaCBicmVha3MKKworLlNIICJTRUUgQUxTTyIKK2NvbV9lcnIgKDMpLgorCitLZW4gUmFlYnVybiwgIkEgQ29tbW9uIEVycm9yIERlc2NyaXB0aW9uIExpYnJhcnkgZm9yIFVOSVgiLgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC9jb21waWxlX2V0LnNoLmluIGIvZTJmc3Byb2dzL2xpYi9ldC9jb21waWxlX2V0LnNoLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNGJhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2NvbXBpbGVfZXQuc2guaW4KQEAgLTAsMCArMSw2MSBAQAorIyEvYmluL3NoCisjCisjCisKK2RhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKK0FXSz1AQVdLQAorRElSPUBkYXRhZGlyQC9ldAorCitpZiB0ZXN0ICIkMSIgPSAiLS1idWlsZC10cmVlIiA7IHRoZW4KKyAgICBzaGlmdDsKKyAgICBESVI9IiRFVF9ESVIiCitmaQorCitpZiB0ZXN0ICJ4JDEiID0geCA7IHRoZW4KKyAgICBlY2hvICJVc2FnZTogY29tcGlsZV9ldCBmaWxlIgorICAgIGV4aXQgMQorZmkKKworZm9yIGFzX3ZhciBpbiBcCisgIExBTkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19JREVOVElGSUNBVElPTiBcCisgIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCisgIExDX1RFTEVQSE9ORSBMQ19USU1FCitkbworICBpZiAoc2V0ICt4OyB0ZXN0IC16ICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgorICAgIGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcgorICBlbHNlCisgICAgJGFzX3Vuc2V0ICRhc192YXIKKyAgZmkKK2RvbmUKKworaWYgdGVzdCAtbiAiJF9FVF9ESVJfT1ZFUlJJREUiIDsgdGhlbgorICAgIERJUj0iJF9FVF9ESVJfT1ZFUlJJREUiOworZmkKKworaWYgdGVzdCAhIC1mICIkRElSL2V0X2guYXdrIiB8fCB0ZXN0ICEgLWYgIiRESVIvZXRfYy5hd2siIDsgdGhlbgorICAgIGVjaG8gImNvbXBpbGVfZXQ6IENvdWxkbid0IGZpbmQgY29tcGlsZV9ldCdzIHRlbXBsYXRlIGZpbGVzLiIKKyAgICBleGl0IDEKK2ZpCisKK1JPT1Q9YGVjaG8gJDEgfCBzZWQgLWUgcy8uZXQkLy9gCitCQVNFPWBiYXNlbmFtZSAkUk9PVGAKKworaWYgdGVzdCAhIC1mICIkUk9PVC5ldCIgOyB0aGVuCisgICAgZWNobyAiY29tcGlsZV9ldDogJFJPT1QuZXQ6IEZpbGUgbm90IGZvdW5kIgorICAgIGV4aXQgMTsKK2ZpCisKKyRBV0sgLWYgIiR7RElSfS9ldF9oLmF3ayIgIm91dGZpbGU9JHtCQVNFfS5oLiQkIiAib3V0Zm49JHtCQVNFfS5oIiAiJFJPT1QuZXQiCitpZiB0ZXN0IC1mICR7QkFTRX0uaCAmJiBjbXAgLXMgJHtCQVNFfS5oLiQkICR7QkFTRX0uaCA7IHRoZW4KKyAgICBybSAtZiAke0JBU0V9LmguJCQKK2Vsc2UKKyAgICBtdiAtZiAke0JBU0V9LmguJCQgJHtCQVNFfS5oCisgICAgY2htb2QgYS13ICR7QkFTRX0uaAorZmkKKyRBV0sgLWYgIiR7RElSfS9ldF9jLmF3ayIgIm91dGZpbGU9JHtCQVNFfS5jLiQkIiAib3V0Zm49JHtCQVNFfS5jIiAiJFJPT1QuZXQiCitpZiB0ZXN0IC1mICR7QkFTRX0uYyAmJiBjbXAgLXMgJHtCQVNFfS5jLiQkICR7QkFTRX0uYyA7IHRoZW4KKyAgICBybSAtZiAke0JBU0V9LmMuJCQKK2Vsc2UKKyAgICBtdiAtZiAke0JBU0V9LmMuJCQgJHtCQVNFfS5jCisgICAgY2htb2QgYS13ICR7QkFTRX0uYworZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvZXJyb3JfbWVzc2FnZS5jIGIvZTJmc3Byb2dzL2xpYi9ldC9lcnJvcl9tZXNzYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU3OTEyMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvZXJyb3JfbWVzc2FnZS5jCkBAIC0wLDAgKzEsMzM3IEBACisvKgorICogJEhlYWRlciQKKyAqICRTb3VyY2UkCisgKiAkTG9ja2VyJAorICoKKyAqIENvcHlyaWdodCAxOTg3IGJ5IHRoZSBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqIG9mIHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5CisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpZmRlZiBIQVZFX1NZU19QUkNUTF9ICisjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CisjZWxzZQorI2RlZmluZSBQUl9HRVRfRFVNUEFCTEUgMworI2VuZGlmCisjaWYgKCFkZWZpbmVkKEhBVkVfUFJDVEwpICYmIGRlZmluZWQobGludXgpKQorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NFTUFQSE9SRV9ICisjaW5jbHVkZSA8c2VtYXBob3JlLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgImNvbV9lcnIuaCIKKyNpbmNsdWRlICJlcnJvcl90YWJsZS5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisKKyNpZmRlZiBUTFMKKyNkZWZpbmUgVEhSRUFEX0xPQ0FMIHN0YXRpYyBUTFMKKyNlbHNlCisjZGVmaW5lIFRIUkVBRF9MT0NBTCBzdGF0aWMKKyNlbmRpZgorCitUSFJFQURfTE9DQUwgY2hhciBidWZmZXJbMjVdOworCitzdHJ1Y3QgZXRfbGlzdCAqIF9ldF9saXN0ID0gKHN0cnVjdCBldF9saXN0ICopIE5VTEw7CitzdHJ1Y3QgZXRfbGlzdCAqIF9ldF9keW5hbWljX2xpc3QgPSAoc3RydWN0IGV0X2xpc3QgKikgTlVMTDsKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIENPTUVSUl9BVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIENPTUVSUl9BVFRSKHgpCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0VNX0lOSVQKK3N0YXRpYyBzZW1fdCBfZXRfbG9jazsKK3N0YXRpYyBpbnQgX2V0X2xvY2tfaW5pdGlhbGl6ZWQ7CisKK3N0YXRpYyB2b2lkIENPTUVSUl9BVFRSKChjb25zdHJ1Y3RvcikpIHNldHVwX2V0X2xvY2sodm9pZCkKK3sKKwlzZW1faW5pdCgmX2V0X2xvY2ssIDAsIDEpOworCV9ldF9sb2NrX2luaXRpYWxpemVkID0gMTsKK30KKworc3RhdGljIHZvaWQgQ09NRVJSX0FUVFIoKGRlc3RydWN0b3IpKSBmaW5pX2V0X2xvY2sodm9pZCkKK3sKKwlzZW1fZGVzdHJveSgmX2V0X2xvY2spOworCV9ldF9sb2NrX2luaXRpYWxpemVkID0gMDsKK30KKyNlbmRpZgorCisKK2ludCBldF9saXN0X2xvY2sodm9pZCkKK3sKKyNpZmRlZiBIQVZFX1NFTV9JTklUCisJaWYgKCFfZXRfbG9ja19pbml0aWFsaXplZCkKKwkJc2V0dXBfZXRfbG9jaygpOworCXJldHVybiBzZW1fd2FpdCgmX2V0X2xvY2spOworI2Vsc2UKKwlyZXR1cm4gMDsKKyNlbmRpZgorfQorCitpbnQgZXRfbGlzdF91bmxvY2sodm9pZCkKK3sKKyNpZmRlZiBIQVZFX1NFTV9JTklUCisJaWYgKF9ldF9sb2NrX2luaXRpYWxpemVkKQorCQlyZXR1cm4gc2VtX3Bvc3QoJl9ldF9sb2NrKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCit0eXBlZGVmIGNoYXIgKigqZ2V0dGV4dGYpIChjb25zdCBjaGFyICopOworCitzdGF0aWMgZ2V0dGV4dGYgY29tX2Vycl9nZXR0ZXh0ID0gTlVMTDsKKworZ2V0dGV4dGYgc2V0X2NvbV9lcnJfZ2V0dGV4dChnZXR0ZXh0ZiBuZXdfcHJvYykKK3sKKyAgICBnZXR0ZXh0ZiB4ID0gY29tX2Vycl9nZXR0ZXh0OworCisgICAgY29tX2Vycl9nZXR0ZXh0ID0gbmV3X3Byb2M7CisKKyAgICByZXR1cm4geDsKK30KKworCitjb25zdCBjaGFyICogZXJyb3JfbWVzc2FnZSAoZXJyY29kZV90IGNvZGUpCit7CisgICAgaW50IG9mZnNldDsKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqZXQ7CisgICAgZXJyY29kZV90IHRhYmxlX251bTsKKyAgICBpbnQgc3RhcnRlZCA9IDA7CisgICAgY2hhciAqY3A7CisKKyAgICBvZmZzZXQgPSAoaW50KSAoY29kZSAmICgoMTw8RVJSQ09ERV9SQU5HRSktMSkpOworICAgIHRhYmxlX251bSA9IGNvZGUgLSBvZmZzZXQ7CisgICAgaWYgKCF0YWJsZV9udW0pIHsKKyNpZmRlZiBIQVNfU1lTX0VSUkxJU1QKKwlpZiAob2Zmc2V0IDwgc3lzX25lcnIpCisJICAgIHJldHVybihzeXNfZXJybGlzdFtvZmZzZXRdKTsKKwllbHNlCisJICAgIGdvdG8gb29wczsKKyNlbHNlCisJY3AgPSBzdHJlcnJvcihvZmZzZXQpOworCWlmIChjcCkKKwkgICAgcmV0dXJuKGNwKTsKKwllbHNlCisJICAgIGdvdG8gb29wczsKKyNlbmRpZgorICAgIH0KKyAgICBldF9saXN0X2xvY2soKTsKKyAgICBmb3IgKGV0ID0gX2V0X2xpc3Q7IGV0OyBldCA9IGV0LT5uZXh0KSB7CisJaWYgKChldC0+dGFibGUtPmJhc2UgJiAweGZmZmZmZkwpID09ICh0YWJsZV9udW0gJiAweGZmZmZmZkwpKSB7CisJICAgIC8qIFRoaXMgaXMgdGhlIHJpZ2h0IHRhYmxlICovCisJICAgIGlmIChldC0+dGFibGUtPm5fbXNncyA8PSBvZmZzZXQpIHsKKwkJYnJlYWs7CisJICAgIH0gZWxzZSB7CisJCWNvbnN0IGNoYXIgKm1zZyA9IGV0LT50YWJsZS0+bXNnc1tvZmZzZXRdOworCQlldF9saXN0X3VubG9jaygpOworCQlpZiAoY29tX2Vycl9nZXR0ZXh0KQorCQkgICAgcmV0dXJuICgqY29tX2Vycl9nZXR0ZXh0KShtc2cpOworCQllbHNlCisJCSAgICByZXR1cm4gbXNnOworCSAgICB9CisJfQorICAgIH0KKyAgICBmb3IgKGV0ID0gX2V0X2R5bmFtaWNfbGlzdDsgZXQ7IGV0ID0gZXQtPm5leHQpIHsKKwlpZiAoKGV0LT50YWJsZS0+YmFzZSAmIDB4ZmZmZmZmTCkgPT0gKHRhYmxlX251bSAmIDB4ZmZmZmZmTCkpIHsKKwkgICAgLyogVGhpcyBpcyB0aGUgcmlnaHQgdGFibGUgKi8KKwkgICAgaWYgKGV0LT50YWJsZS0+bl9tc2dzIDw9IG9mZnNldCkgeworCQlicmVhazsKKwkgICAgfSBlbHNlIHsKKwkJY29uc3QgY2hhciAqbXNnID0gZXQtPnRhYmxlLT5tc2dzW29mZnNldF07CisJCWV0X2xpc3RfdW5sb2NrKCk7CisJCWlmIChjb21fZXJyX2dldHRleHQpCisJCSAgICByZXR1cm4gKCpjb21fZXJyX2dldHRleHQpKG1zZyk7CisJCWVsc2UKKwkJICAgIHJldHVybiBtc2c7CisJICAgIH0KKwl9CisgICAgfQorICAgIGV0X2xpc3RfdW5sb2NrKCk7Citvb3BzOgorICAgIHN0cmNweSAoYnVmZmVyLCAiVW5rbm93biBjb2RlICIpOworICAgIGlmICh0YWJsZV9udW0pIHsKKwlzdHJjYXQgKGJ1ZmZlciwgZXJyb3JfdGFibGVfbmFtZSAodGFibGVfbnVtKSk7CisJc3RyY2F0IChidWZmZXIsICIgIik7CisgICAgfQorICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgY3ArKykKKwk7CisgICAgaWYgKG9mZnNldCA+PSAxMDApIHsKKwkqY3ArKyA9ICcwJyArIG9mZnNldCAvIDEwMDsKKwlvZmZzZXQgJT0gMTAwOworCXN0YXJ0ZWQrKzsKKyAgICB9CisgICAgaWYgKHN0YXJ0ZWQgfHwgb2Zmc2V0ID49IDEwKSB7CisJKmNwKysgPSAnMCcgKyBvZmZzZXQgLyAxMDsKKwlvZmZzZXQgJT0gMTA7CisgICAgfQorICAgICpjcCsrID0gJzAnICsgb2Zmc2V0OworICAgICpjcCA9ICdcMCc7CisgICAgcmV0dXJuKGJ1ZmZlcik7Cit9CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgd2lsbCBvbmx5IHJldHVybiBhIHZhbHVlIGlmIHRoZSB3ZSBhcmUgbm90IHJ1bm5pbmcgYXMKKyAqIGEgcHJpdmlsZWdlZCBwcm9jZXNzLgorICovCitzdGF0aWMgY2hhciAqc2FmZV9nZXRlbnYoY29uc3QgY2hhciAqYXJnKQoreworCWlmICgoZ2V0dWlkKCkgIT0gZ2V0ZXVpZCgpKSB8fCAoZ2V0Z2lkKCkgIT0gZ2V0ZWdpZCgpKSkKKwkJcmV0dXJuIE5VTEw7CisjaWYgSEFWRV9QUkNUTAorCWlmIChwcmN0bChQUl9HRVRfRFVNUEFCTEUsIDAsIDAsIDAsIDApID09IDApCisJCXJldHVybiBOVUxMOworI2Vsc2UKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChTWVNfcHJjdGwpKQorCWlmIChzeXNjYWxsKFNZU19wcmN0bCwgUFJfR0VUX0RVTVBBQkxFLCAwLCAwLCAwLCAwKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gc2VjdXJlX2dldGVudihhcmcpOworI2VsaWYgZGVmaW5lZChIQVZFX19fU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gX19zZWN1cmVfZ2V0ZW52KGFyZyk7CisjZWxzZQorCXJldHVybiBnZXRlbnYoYXJnKTsKKyNlbmRpZgorfQorCisjZGVmaW5lIERFQlVHX0lOSVQJMHg4MDAwCisjZGVmaW5lIERFQlVHX0FERFJFTU9WRSAweDAwMDEKKworc3RhdGljIGludCBkZWJ1Z19tYXNrID0gMDsKK3N0YXRpYyBGSUxFICpkZWJ1Z19mID0gMDsKKworc3RhdGljIHZvaWQgaW5pdF9kZWJ1Zyh2b2lkKQoreworCWNoYXIJKmRzdHIsICpmbiwgKnRtcDsKKwlpbnQJZmQsIGZsYWdzOworCisJaWYgKGRlYnVnX21hc2sgJiBERUJVR19JTklUKQorCQlyZXR1cm47CisKKwlkc3RyID0gZ2V0ZW52KCJDT01FUlJfREVCVUciKTsKKwlpZiAoZHN0cikgeworCQlkZWJ1Z19tYXNrID0gc3RydG91bChkc3RyLCAmdG1wLCAwKTsKKwkJaWYgKCp0bXAgfHwgZXJybm8pCisJCQlkZWJ1Z19tYXNrID0gMDsKKwl9CisKKwlkZWJ1Z19tYXNrIHw9IERFQlVHX0lOSVQ7CisJaWYgKGRlYnVnX21hc2sgPT0gREVCVUdfSU5JVCkKKwkJcmV0dXJuOworCisJZm4gPSBzYWZlX2dldGVudigiQ09NRVJSX0RFQlVHX0ZJTEUiKTsKKwlpZiAoZm4pCisJCWRlYnVnX2YgPSBmb3BlbihmbiwgImEiKTsKKwlpZiAoIWRlYnVnX2YpCisJCWRlYnVnX2YgPSBmb3BlbigiL2Rldi90dHkiLCAiYSIpOworCWlmIChkZWJ1Z19mKSB7CisJCWZkID0gZmlsZW5vKGRlYnVnX2YpOworCQlpZiAoZmQgPj0gMCkgeworCQkJZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGRCk7CisJCQlpZiAoZmxhZ3MgPj0gMCkKKwkJCQlmY250bChmZCwgRl9TRVRGRCwgZmxhZ3MgfCBGRF9DTE9FWEVDKTsKKwkJfQorCX0gZWxzZQorCQlkZWJ1Z19tYXNrID0gREVCVUdfSU5JVDsKKworfQorCisvKgorICogTmV3IGludGVyZmFjZSBwcm92aWRlZCBieSBrcmI1J3MgY29tX2VyciBsaWJyYXJ5CisgKi8KK2VycmNvZGVfdCBhZGRfZXJyb3JfdGFibGUoY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlICogZXQpCit7CisJc3RydWN0IGV0X2xpc3QgKmVsOworCisJaWYgKCEoZWwgPSAoc3RydWN0IGV0X2xpc3QgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3QgZXRfbGlzdCkpKSkKKwkJcmV0dXJuIEVOT01FTTsKKworCWlmIChldF9saXN0X2xvY2soKSAhPSAwKSB7CisJCWZyZWUoZWwpOworCQlyZXR1cm4gZXJybm87CisJfQorCisJZWwtPnRhYmxlID0gZXQ7CisJZWwtPm5leHQgPSBfZXRfZHluYW1pY19saXN0OworCV9ldF9keW5hbWljX2xpc3QgPSBlbDsKKworCWluaXRfZGVidWcoKTsKKwlpZiAoZGVidWdfbWFzayAmIERFQlVHX0FERFJFTU9WRSkKKwkJZnByaW50ZihkZWJ1Z19mLCAiYWRkX2Vycm9yX3RhYmxlOiAlcyAoMHglcClcbiIsCisJCQllcnJvcl90YWJsZV9uYW1lKGV0LT5iYXNlKSwKKwkJCShjb25zdCB2b2lkICopIGV0KTsKKworCWV0X2xpc3RfdW5sb2NrKCk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBOZXcgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IGtyYjUncyBjb21fZXJyIGxpYnJhcnkKKyAqLworZXJyY29kZV90IHJlbW92ZV9lcnJvcl90YWJsZShjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgKiBldCkKK3sKKwlzdHJ1Y3QgZXRfbGlzdCAqZWw7CisJc3RydWN0IGV0X2xpc3QgKmVsMiA9IDA7CisKKwlpZiAoZXRfbGlzdF9sb2NrKCkgIT0gMCkKKwkJcmV0dXJuIEVOT0VOVDsKKworCWVsID0gX2V0X2R5bmFtaWNfbGlzdDsKKwlpbml0X2RlYnVnKCk7CisJd2hpbGUgKGVsKSB7CisJCWlmIChlbC0+dGFibGUtPmJhc2UgPT0gZXQtPmJhc2UpIHsKKwkJCWlmIChlbDIpCS8qIE5vdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaXN0ICovCisJCQkJZWwyLT5uZXh0ID0gZWwtPm5leHQ7CisJCQllbHNlCisJCQkJX2V0X2R5bmFtaWNfbGlzdCA9IGVsLT5uZXh0OworCQkJKHZvaWQpIGZyZWUoZWwpOworCQkJaWYgKGRlYnVnX21hc2sgJiBERUJVR19BRERSRU1PVkUpCisJCQkJZnByaW50ZihkZWJ1Z19mLAorCQkJCQkicmVtb3ZlX2Vycm9yX3RhYmxlOiAlcyAoMHglcClcbiIsCisJCQkJCWVycm9yX3RhYmxlX25hbWUoZXQtPmJhc2UpLAorCQkJCQkoY29uc3Qgdm9pZCAqKSBldCk7CisJCQlldF9saXN0X3VubG9jaygpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJZWwyID0gZWw7CisJCWVsID0gZWwtPm5leHQ7CisJfQorCWlmIChkZWJ1Z19tYXNrICYgREVCVUdfQUREUkVNT1ZFKQorCQlmcHJpbnRmKGRlYnVnX2YsICJyZW1vdmVfZXJyb3JfdGFibGUgRkFJTEVEOiAlcyAoMHglcClcbiIsCisJCQllcnJvcl90YWJsZV9uYW1lKGV0LT5iYXNlKSwKKwkJCShjb25zdCB2b2lkICopIGV0KTsKKwlldF9saXN0X3VubG9jaygpOworCXJldHVybiBFTk9FTlQ7Cit9CisKKy8qCisgKiBWYXJpYW50IG9mIHRoZSBpbnRlcmZhY2UgcHJvdmlkZWQgYnkgSGVpbWRhbCdzIGNvbV9lcnIgbGlicmFyeQorICovCit2b2lkCithZGRfdG9fZXJyb3JfdGFibGUoc3RydWN0IGV0X2xpc3QgKm5ld190YWJsZSkKK3sKKwlhZGRfZXJyb3JfdGFibGUobmV3X3RhYmxlLT50YWJsZSk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L2Vycm9yX3RhYmxlLmggYi9lMmZzcHJvZ3MvbGliL2V0L2Vycm9yX3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRlNDc2MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvZXJyb3JfdGFibGUuaApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IDE5ODggYnkgdGhlIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZCBvZiB0aGUKKyAqIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kuCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKi8KKworI2lmbmRlZiBfRVRfSAorCitzdHJ1Y3QgZXRfbGlzdCB7CisgICAgc3RydWN0IGV0X2xpc3QgKm5leHQ7CisgICAgY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlICp0YWJsZTsKK307CitleHRlcm4gc3RydWN0IGV0X2xpc3QgKl9ldF9saXN0LCAqX2V0X2R5bmFtaWNfbGlzdDsKKworI2RlZmluZQlFUlJDT0RFX1JBTkdFCTgJLyogIyBvZiBiaXRzIHRvIHNoaWZ0IHRhYmxlIG51bWJlciAqLworI2RlZmluZQlCSVRTX1BFUl9DSEFSCTYJLyogIyBiaXRzIHRvIHNoaWZ0IHBlciBjaGFyYWN0ZXIgaW4gbmFtZSAqLworCitleHRlcm4gY29uc3QgY2hhciAqZXJyb3JfdGFibGVfbmFtZShlcnJjb2RlX3QgbnVtKTsKKworI2RlZmluZSBfRVRfSAorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L2V0X2MuYXdrIGIvZTJmc3Byb2dzL2xpYi9ldC9ldF9jLmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWMzM2JhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC9ldF9jLmF3awpAQCAtMCwwICsxLDI2OSBAQAorQkVHSU4geyAKK2lmICggbGVuZ3RoKG91dGZuKSA9PSAwKSB7CisJb3V0Zm4gPSBvdXRmaWxlCit9CitjaGFyX3NoaWZ0PTY0CisjIyAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfIjsKK2MyblsiQSJdPTEKK2MyblsiQiJdPTIKK2MyblsiQyJdPTMKK2MyblsiRCJdPTQKK2MyblsiRSJdPTUKK2MyblsiRiJdPTYKK2MyblsiRyJdPTcKK2MyblsiSCJdPTgKK2MyblsiSSJdPTkKK2MyblsiSiJdPTEwCitjMm5bIksiXT0xMQorYzJuWyJMIl09MTIKK2MyblsiTSJdPTEzCitjMm5bIk4iXT0xNAorYzJuWyJPIl09MTUKK2MyblsiUCJdPTE2CitjMm5bIlEiXT0xNworYzJuWyJSIl09MTgKK2MyblsiUyJdPTE5CitjMm5bIlQiXT0yMAorYzJuWyJVIl09MjEKK2MyblsiViJdPTIyCitjMm5bIlciXT0yMworYzJuWyJYIl09MjQKK2MyblsiWSJdPTI1CitjMm5bIloiXT0yNgorYzJuWyJhIl09MjcKK2MyblsiYiJdPTI4CitjMm5bImMiXT0yOQorYzJuWyJkIl09MzAKK2MyblsiZSJdPTMxCitjMm5bImYiXT0zMgorYzJuWyJnIl09MzMKK2MyblsiaCJdPTM0CitjMm5bImkiXT0zNQorYzJuWyJqIl09MzYKK2MyblsiayJdPTM3CitjMm5bImwiXT0zOAorYzJuWyJtIl09MzkKK2MyblsibiJdPTQwCitjMm5bIm8iXT00MQorYzJuWyJwIl09NDIKK2MyblsicSJdPTQzCitjMm5bInIiXT00NAorYzJuWyJzIl09NDUKK2MyblsidCJdPTQ2CitjMm5bInUiXT00NworYzJuWyJ2Il09NDgKK2MyblsidyJdPTQ5CitjMm5bIngiXT01MAorYzJuWyJ5Il09NTEKK2MyblsieiJdPTUyCitjMm5bIjAiXT01MworYzJuWyIxIl09NTQKK2MyblsiMiJdPTU1CitjMm5bIjMiXT01NgorYzJuWyI0Il09NTcKK2MyblsiNSJdPTU4CitjMm5bIjYiXT01OQorYzJuWyI3Il09NjAKK2MyblsiOCJdPTYxCitjMm5bIjkiXT02MgorYzJuWyJfIl09NjMKK30KKy9eIy8geyBuZXh0IH0KKy9eWyBcdF0qKGVycm9yX3RhYmxlfGV0KVsgXHRdK1thLXpBLVpdW2EtekEtWjAtOV9dKy8geworCXRhYmxlX251bWJlciA9IDAKKwltb2RfYmFzZSA9IDEwMDAwMDAKKwlpZiAoTkYgPiAyKSB7CisJICAgIHRhYmxlX25hbWUgPSAkMworCSAgICBiYXNlX25hbWUgPSAkMgorCX0gZWxzZSB7CisJICAgIHRhYmxlX25hbWUgPSAkMgorCSAgICBiYXNlX25hbWUgPSB0YWJsZV9uYW1lCisJfQorCWZvcihpPTE7IGk8PWxlbmd0aChiYXNlX25hbWUpOyBpKyspIHsKKwkgICAgdGFibGVfbnVtYmVyPSh0YWJsZV9udW1iZXIqY2hhcl9zaGlmdCkrYzJuW3N1YnN0cihiYXNlX25hbWUsaSwxKV0KKwl9CisKKwkjIFdlIHN0YXJ0IHBsYXlpbmcgKl9oaWdoLCAqbG93IGdhbWVzIGhlcmUgYmVjYXVzZSB0aGUgc29tZQorCSMgYXdrIHByb2dyYW1zIGRvIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcHJlY2lzaW9uIChzaWdoKQorCXRhYl9iYXNlX2xvdyA9IHRhYmxlX251bWJlciAlIG1vZF9iYXNlCisJaWYgKHRhYl9iYXNlX2xvdyA8IDApIHsKKwkJIyBXb3JrIGFyb3VuZCBzdHVwaWQgYnVnIGluIHRoZSBBUk0gbGlibQorCQl0YWJfYmFzZV9sb3cgPSB0YWJfYmFzZV9sb3cgKyBtb2RfYmFzZQorCX0KKwl0YWJfYmFzZV9oaWdoID0gaW50KHRhYmxlX251bWJlciAvIG1vZF9iYXNlKQorCXRhYl9iYXNlX3NpZ24gPSAxOworCisJIyBmaWd1cmUgb3V0OiB0YWJsZV9udW1iZXJfYmFzZT10YWJsZV9udW1iZXIqMjU2CisJdGFiX2Jhc2VfbG93ID0gdGFiX2Jhc2VfbG93ICogMjU2CisJdGFiX2Jhc2VfaGlnaCA9ICh0YWJfYmFzZV9oaWdoICogMjU2KSArIFwKKwkJCWludCh0YWJfYmFzZV9sb3cgLyBtb2RfYmFzZSkKKwl0YWJfYmFzZV9sb3cgPSB0YWJfYmFzZV9sb3cgJSBtb2RfYmFzZQorCWlmICh0YWJfYmFzZV9sb3cgPCAwKSB7CisJCSMgV29yayBhcm91bmQgc3R1cGlkIGJ1ZyBpbiB0aGUgQVJNIGxpYm0KKwkJdGFiX2Jhc2VfbG93ID0gdGFiX2Jhc2VfbG93ICsgbW9kX2Jhc2UKKwl9CisKKwlpZiAodGFibGVfbnVtYmVyID4gMTI4KjI1NioyNTYpIHsKKwkJIyBmaWd1cmUgb3V0OiAgdGFibGVfbnVtYmVyX2Jhc2UgLT0gMjU2KjI1NioyNTYqMjU2CisJCSMgc3ViX2hpZ2gsIHN1Yl9sb3cgaXMgMjU2KjI1NioyNTYqMjU2CisJCXN1Yl9sb3cgPSAyNTYqMjU2KjI1NiAlIG1vZF9iYXNlCisJCXN1Yl9oaWdoID0gaW50KDI1NioyNTYqMjU2IC8gbW9kX2Jhc2UpCisKKwkJc3ViX2xvdyA9IHN1Yl9sb3cgKiAyNTYKKwkJc3ViX2hpZ2ggPSAoc3ViX2hpZ2ggKiAyNTYpICsgaW50KHN1Yl9sb3cgLyBtb2RfYmFzZSkKKwkJc3ViX2xvdyA9IHN1Yl9sb3cgJSBtb2RfYmFzZQorCisJCXRhYl9iYXNlX2xvdyA9IHN1Yl9sb3cgLSB0YWJfYmFzZV9sb3c7CisJCXRhYl9iYXNlX2hpZ2ggPSBzdWJfaGlnaCAtIHRhYl9iYXNlX2hpZ2g7CisJCXRhYl9iYXNlX3NpZ24gPSAtMTsKKwkJaWYgKHRhYl9iYXNlX2xvdyA8IDApIHsKKwkJCXRhYl9iYXNlX2xvdyA9IHRhYl9iYXNlX2xvdyArIG1vZF9iYXNlCisJCQl0YWJfYmFzZV9oaWdoLS0KKwkJfQorCX0KKwlwcmludCAiLyoiID4gb3V0ZmlsZQorCXByaW50ICIgKiAiIG91dGZuICI6IiA+IG91dGZpbGUKKwlwcmludCAiICogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkOyBwbGVhc2UgZG8gbm90IGVkaXQgaXQuIiA+IG91dGZpbGUKKwlwcmludCAiICovIiA+IG91dGZpbGUKKworCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICIjaW5jbHVkZSA8c3RkbGliLmg+IiA+IG91dGZpbGUKKwlwcmludCAiIiA+IG91dGZpbGUKKwlwcmludCAiI2RlZmluZSBOXyhhKSBhIiA+IG91dGZpbGUKKwlwcmludCAiIiA+IG91dGZpbGUKKwlwcmludCAic3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0ZXh0W10gPSB7IiA+IG91dGZpbGUKKwl0YWJsZV9pdGVtX2NvdW50ID0gMAorfQorCisoY29udGludWF0aW9uID09IDEpICYmICgkMCB+IC9cXFsgXHRdKiQvKSB7CisJdGV4dD1zdWJzdHIoJDAsMSxsZW5ndGgoJDApLTEpOworIwlwcmludGYgIlx0XHRcIiVzXCJcbiIsIHRleHQgPiBvdXRmaWxlCisJY29udF9idWY9Y29udF9idWYgdGV4dDsKK30KKworKGNvbnRpbnVhdGlvbiA9PSAxKSAmJiAoJDAgfiAvIlsgXHRdKiQvKSB7CisjCXByaW50ZiAiXHRcdFwiJXMsXG4iLCAkMCA+IG91dGZpbGUKKwlwcmludGYgIlx0Tl8oJXMpLFxuIiwgY29udF9idWYgJDAgPiBvdXRmaWxlCisJY29udGludWF0aW9uID0gMDsKK30KKworL15bIFx0XSooZXJyb3JfY29kZXxlYylbIFx0XStbQS1aXzAtOV0rLFteIFx0XS8geworCSMgQmUgdG9sZXJhbnQgdG8gbWlzc2luZyB3aGl0ZXNwYWNlIGFmdGVyIGAsJyAuLi4KKwlzdWIoLywvLCAiLCAiKQorfQorCisvXlsgXHRdKihlcnJvcl9jb2RlfGVjKVsgXHRdK1tBLVpfMC05XSssWyBcdF0qJC8geworCXRhYmxlX2l0ZW1fY291bnQrKworCXNraXBvbmU9MQorCW5leHQKK30KKworL15bIFx0XSooZXJyb3JfY29kZXxlYylbIFx0XStbQS1aXzAtOV0rLFsgXHRdKiIuKiJbIFx0XSokLyB7CisJdGV4dD0iIgorCWZvciAoaT0zOyBpPD1ORjsgaSsrKSB7IAorCSAgICB0ZXh0ID0gdGV4dCBGUyAkaQorCX0KKwl0ZXh0PXN1YnN0cih0ZXh0LDIsbGVuZ3RoKHRleHQpLTEpOworCXByaW50ZiAiXHROXyglcyksXG4iLCB0ZXh0ID4gb3V0ZmlsZQorCXRhYmxlX2l0ZW1fY291bnQrKworfQorCisvXlsgXHRdKihlcnJvcl9jb2RlfGVjKVsgXHRdK1tBLVpfMC05XSssWyBcdF0qIi4qXFxbIFx0XSokLyB7CisJdGV4dD0iIgorCWZvciAoaT0zOyBpPD1ORjsgaSsrKSB7IAorCSAgICB0ZXh0ID0gdGV4dCBGUyAkaQorCX0KKwl0ZXh0PXN1YnN0cih0ZXh0LDIsbGVuZ3RoKHRleHQpLTIpOworIwlwcmludGYgIlx0JXNcIlxuIiwgdGV4dCA+IG91dGZpbGUKKwljb250X2J1Zj10ZXh0CisJdGFibGVfaXRlbV9jb3VudCsrCisJY29udGludWF0aW9uKys7Cit9CisKKy9eWyBcdF0qIi4qXFxbIFx0XSokLyB7CisJaWYgKHNraXBvbmUpIHsKKwkgICAgdGV4dD1zdWJzdHIoJDAsMSxsZW5ndGgoJDApLTEpOworIwkgICAgcHJpbnRmICJcdCVzXCJcbiIsIHRleHQgPiBvdXRmaWxlCisJICAgIGNvbnRfYnVmPXRleHQKKwkgICAgY29udGludWF0aW9uKys7CisJfQorCXNraXBvbmU9MAorfQorCit7IAorCWlmIChza2lwb25lKSB7CisJICAgIHByaW50ZiAiXHROXyglcyksXG4iLCAkMCA+IG91dGZpbGUKKwl9CisJc2tpcG9uZT0wCit9CisKKy9eWyBcdF0qKHByZWZpeCkkLyB7CisJcHJlZml4X3N0ciA9ICIiCit9CisKKy9eWyBcdF0qKHByZWZpeClbIFx0XStbQS1aXzAtOV0rLyB7CisJcHJlZml4X3N0ciA9ICQyICJfIgorfQorCisvXlsgXHRdKihpbmRleClbIFx0XStbQS1aXzAtOV0rLyB7CisJbmV3X2lkeCA9ICQyCisJZm9yIChpID0gdGFibGVfaXRlbV9jb3VudCA7IGkgPCBuZXdfaWR4OyBpKyspIHsKKwkJcHJpbnRmICJcdE5fKFwiUmVzZXJ2ZWQgJXMgZXJyb3IgKCVkKVwiKSxcbiIsIFwKKwkJCXRhYmxlX25hbWUsIHRhYmxlX2l0ZW1fY291bnQrKyA+IG91dGZpbGUKKwl9Cit9CisKK0VORCB7CisJcHJpbnQgIiAgICAwIiA+IG91dGZpbGUKKwlwcmludCAifTsiID4gb3V0ZmlsZQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICJzdHJ1Y3QgZXJyb3JfdGFibGUgeyIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICBjaGFyIGNvbnN0ICogY29uc3QgKiBtc2dzOyIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICBsb25nIGJhc2U7IiA+IG91dGZpbGUKKwlwcmludCAiICAgIGludCBuX21zZ3M7IiA+IG91dGZpbGUKKwlwcmludCAifTsiID4gb3V0ZmlsZQorCXByaW50ICJzdHJ1Y3QgZXRfbGlzdCB7IiA+IG91dGZpbGUKKwlwcmludCAiICAgIHN0cnVjdCBldF9saXN0ICpuZXh0OyIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgKiB0YWJsZTsiID4gb3V0ZmlsZQorCXByaW50ICJ9OyIgPiBvdXRmaWxlCisJcHJpbnQgImV4dGVybiBzdHJ1Y3QgZXRfbGlzdCAqX2V0X2xpc3Q7IiA+IG91dGZpbGUKKwlwcmludCAiIiA+IG91dGZpbGUKKwlpZiAodGFiX2Jhc2VfaGlnaCA9PSAwKSB7CisJCXByaW50ICJjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfIiB0YWJsZV9uYW1lICJfZXJyb3JfdGFibGUgPSB7IHRleHQsICIgXAorCQlzcHJpbnRmKCIlZEwsICVkIH07IiwgdGFiX2Jhc2Vfc2lnbip0YWJfYmFzZV9sb3csIFwKKwkJdGFibGVfaXRlbV9jb3VudCkgPiBvdXRmaWxlCisJfSBlbHNlIHsKKwkJcHJpbnQgImNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF8iIHRhYmxlX25hbWUgIl9lcnJvcl90YWJsZSA9IHsgdGV4dCwgIiBcCisJCXNwcmludGYoIiVkJTA2ZEwsICVkIH07IiwgdGFiX2Jhc2Vfc2lnbip0YWJfYmFzZV9oaWdoLCBcCisJCXRhYl9iYXNlX2xvdywgdGFibGVfaXRlbV9jb3VudCkgPiBvdXRmaWxlCisJfQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICJzdGF0aWMgc3RydWN0IGV0X2xpc3QgbGluayA9IHsgMCwgMCB9OyIgPiBvdXRmaWxlCisJcHJpbnQgIiIgPiBvdXRmaWxlCisJcHJpbnQgInZvaWQgaW5pdGlhbGl6ZV8iIHRhYmxlX25hbWUgIl9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7IiA+IG91dGZpbGUKKwlwcmludCAidm9pZCBpbml0aWFsaXplXyIgdGFibGVfbmFtZSAiX2Vycm9yX3RhYmxlKHZvaWQpOyIgPiBvdXRmaWxlCisJcHJpbnQgIiIgPiBvdXRmaWxlCisJcHJpbnQgInZvaWQgaW5pdGlhbGl6ZV8iIHRhYmxlX25hbWUgIl9lcnJvcl90YWJsZSh2b2lkKSB7IiA+IG91dGZpbGUKKwlwcmludCAiICAgIGluaXRpYWxpemVfIiB0YWJsZV9uYW1lICJfZXJyb3JfdGFibGVfcigmX2V0X2xpc3QpOyIgPiBvdXRmaWxlCisJcHJpbnQgIn0iID4gb3V0ZmlsZQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICIvKiBGb3IgSGVpbWRhbCBjb21wYXRpYmlsaXR5ICovIiA+IG91dGZpbGUKKwlwcmludCAidm9pZCBpbml0aWFsaXplXyIgdGFibGVfbmFtZSAiX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KSIgPiBvdXRmaWxlCisJcHJpbnQgInsiID4gb3V0ZmlsZQorCXByaW50ICIgICAgc3RydWN0IGV0X2xpc3QgKmV0LCAqKmVuZDsiID4gb3V0ZmlsZQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICIgICAgZm9yIChlbmQgPSBsaXN0LCBldCA9ICpsaXN0OyBldDsgZW5kID0gJmV0LT5uZXh0LCBldCA9IGV0LT5uZXh0KSIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICAgICAgaWYgKGV0LT50YWJsZS0+bXNncyA9PSB0ZXh0KSIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICAgICAgICAgIHJldHVybjsiID4gb3V0ZmlsZQorCXByaW50ICIgICAgZXQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldF9saXN0KSk7IiA+IG91dGZpbGUKKwlwcmludCAiICAgIGlmIChldCA9PSAwKSB7IiA+IG91dGZpbGUKKwlwcmludCAiICAgICAgICBpZiAoIWxpbmsudGFibGUpIiA+IG91dGZpbGUKKwlwcmludCAiICAgICAgICAgICAgZXQgPSAmbGluazsiID4gb3V0ZmlsZQorCXByaW50ICIgICAgICAgIGVsc2UiID4gb3V0ZmlsZQorCXByaW50ICIgICAgICAgICAgICByZXR1cm47IiA+IG91dGZpbGUKKwlwcmludCAiICAgIH0iID4gb3V0ZmlsZQorCXByaW50ICIgICAgZXQtPnRhYmxlID0gJmV0XyIgdGFibGVfbmFtZSAiX2Vycm9yX3RhYmxlOyIgPiBvdXRmaWxlCisJcHJpbnQgIiAgICBldC0+bmV4dCA9IDA7IiA+IG91dGZpbGUKKwlwcmludCAiICAgICplbmQgPSBldDsiID4gb3V0ZmlsZQorCXByaW50ICJ9IiA+IG91dGZpbGUKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvZXRfaC5hd2sgYi9lMmZzcHJvZ3MvbGliL2V0L2V0X2guYXdrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMzcxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2V0X2guYXdrCkBAIC0wLDAgKzEsMjA0IEBACitCRUdJTiB7IAoraWYgKCBsZW5ndGgob3V0Zm4pID09IDApIHsKKwlvdXRmbiA9IG91dGZpbGUKK30KK2NoYXJfc2hpZnQ9NjQKKyMjICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OV8iOworYzJuWyJBIl09MQorYzJuWyJCIl09MgorYzJuWyJDIl09MworYzJuWyJEIl09NAorYzJuWyJFIl09NQorYzJuWyJGIl09NgorYzJuWyJHIl09NworYzJuWyJIIl09OAorYzJuWyJJIl09OQorYzJuWyJKIl09MTAKK2MyblsiSyJdPTExCitjMm5bIkwiXT0xMgorYzJuWyJNIl09MTMKK2MyblsiTiJdPTE0CitjMm5bIk8iXT0xNQorYzJuWyJQIl09MTYKK2MyblsiUSJdPTE3CitjMm5bIlIiXT0xOAorYzJuWyJTIl09MTkKK2MyblsiVCJdPTIwCitjMm5bIlUiXT0yMQorYzJuWyJWIl09MjIKK2MyblsiVyJdPTIzCitjMm5bIlgiXT0yNAorYzJuWyJZIl09MjUKK2MyblsiWiJdPTI2CitjMm5bImEiXT0yNworYzJuWyJiIl09MjgKK2MyblsiYyJdPTI5CitjMm5bImQiXT0zMAorYzJuWyJlIl09MzEKK2MyblsiZiJdPTMyCitjMm5bImciXT0zMworYzJuWyJoIl09MzQKK2MyblsiaSJdPTM1CitjMm5bImoiXT0zNgorYzJuWyJrIl09MzcKK2MyblsibCJdPTM4CitjMm5bIm0iXT0zOQorYzJuWyJuIl09NDAKK2MyblsibyJdPTQxCitjMm5bInAiXT00MgorYzJuWyJxIl09NDMKK2MyblsiciJdPTQ0CitjMm5bInMiXT00NQorYzJuWyJ0Il09NDYKK2MyblsidSJdPTQ3CitjMm5bInYiXT00OAorYzJuWyJ3Il09NDkKK2MyblsieCJdPTUwCitjMm5bInkiXT01MQorYzJuWyJ6Il09NTIKK2MyblsiMCJdPTUzCitjMm5bIjEiXT01NAorYzJuWyIyIl09NTUKK2MyblsiMyJdPTU2CitjMm5bIjQiXT01NworYzJuWyI1Il09NTgKK2MyblsiNiJdPTU5CitjMm5bIjciXT02MAorYzJuWyI4Il09NjEKK2MyblsiOSJdPTYyCitjMm5bIl8iXT02MworfQorL14jLyB7IG5leHQgfQorL15bIFx0XSooZXJyb3JfdGFibGV8ZXQpWyBcdF0rW2EtekEtWl1bYS16QS1aMC05X10rLyB7CisJdGFibGVfbnVtYmVyID0gMAorCW1vZF9iYXNlID0gMTAwMDAwMAorCWlmIChORiA+IDIpIHsKKwkgICAgdGFibGVfbmFtZSA9ICQzCisJICAgIGJhc2VfbmFtZSA9ICQyCisJfSBlbHNlIHsKKwkgICAgdGFibGVfbmFtZSA9ICQyCisJICAgIGJhc2VfbmFtZSA9IHRhYmxlX25hbWUKKwl9CisJZm9yKGk9MTsgaTw9bGVuZ3RoKGJhc2VfbmFtZSk7IGkrKykgeworCSAgICB0YWJsZV9udW1iZXI9KHRhYmxlX251bWJlcipjaGFyX3NoaWZ0KStjMm5bc3Vic3RyKGJhc2VfbmFtZSxpLDEpXQorCX0KKwkjIFdlIHN0YXJ0IHBsYXlpbmcgKl9oaWdoLCAqbG93IGdhbWVzIGhlcmUgYmVjYXVzZSB0aGUgc29tZQorCSMgYXdrIHByb2dyYW1zIGRvIG5vdCBoYXZlIHRoZSBuZWNlc3NhcnkgcHJlY2lzaW9uIChzaWdoKQorCXRhYl9iYXNlX2xvdyA9IHRhYmxlX251bWJlciAlIG1vZF9iYXNlCisJaWYgKHRhYl9iYXNlX2xvdyA8IDApIHsKKwkJIyBXb3JrIGFyb3VuZCBzdHVwaWQgYnVnIGluIHRoZSBBUk0gbGlibQorCQl0YWJfYmFzZV9sb3cgPSB0YWJfYmFzZV9sb3cgKyBtb2RfYmFzZQorCX0KKwl0YWJfYmFzZV9oaWdoID0gaW50KHRhYmxlX251bWJlciAvIG1vZF9iYXNlKQorCXRhYl9iYXNlX3NpZ24gPSAxOworCisJIyBmaWd1cmUgb3V0OiB0YWJsZV9udW1iZXJfYmFzZT10YWJsZV9udW1iZXIqMjU2CisJdGFiX2Jhc2VfbG93ID0gdGFiX2Jhc2VfbG93ICogMjU2CisJdGFiX2Jhc2VfaGlnaCA9ICh0YWJfYmFzZV9oaWdoICogMjU2KSArIFwKKwkJCWludCh0YWJfYmFzZV9sb3cgLyBtb2RfYmFzZSkKKwl0YWJfYmFzZV9sb3cgPSB0YWJfYmFzZV9sb3cgJSBtb2RfYmFzZQorCWlmICh0YWJfYmFzZV9sb3cgPCAwKSB7CisJCSMgV29yayBhcm91bmQgc3R1cGlkIGJ1ZyBpbiB0aGUgQVJNIGxpYm0KKwkJdGFiX2Jhc2VfbG93ID0gdGFiX2Jhc2VfbG93ICsgbW9kX2Jhc2UKKwl9CisKKwlpZiAodGFibGVfbnVtYmVyID4gMTI4KjI1NioyNTYpIHsKKwkJIyBmaWd1cmUgb3V0OiAgdGFibGVfbnVtYmVyX2Jhc2UgLT0gMjU2KjI1NioyNTYqMjU2CisJCSMgc3ViX2hpZ2gsIHN1Yl9sb3cgaXMgMjU2KjI1NioyNTYqMjU2CisJCXN1Yl9sb3cgPSAyNTYqMjU2KjI1NiAlIG1vZF9iYXNlCisJCXN1Yl9oaWdoID0gaW50KDI1NioyNTYqMjU2IC8gbW9kX2Jhc2UpCisKKwkJc3ViX2xvdyA9IHN1Yl9sb3cgKiAyNTYKKwkJc3ViX2hpZ2ggPSAoc3ViX2hpZ2ggKiAyNTYpICsgaW50KHN1Yl9sb3cgLyBtb2RfYmFzZSkKKwkJc3ViX2xvdyA9IHN1Yl9sb3cgJSBtb2RfYmFzZQorCisJCXRhYl9iYXNlX2xvdyA9IHN1Yl9sb3cgLSB0YWJfYmFzZV9sb3c7CisJCXRhYl9iYXNlX2hpZ2ggPSBzdWJfaGlnaCAtIHRhYl9iYXNlX2hpZ2g7CisJCXRhYl9iYXNlX3NpZ24gPSAtMTsKKwkJaWYgKHRhYl9iYXNlX2xvdyA8IDApIHsKKwkJCXRhYl9iYXNlX2xvdyA9IHRhYl9iYXNlX2xvdyArIG1vZF9iYXNlCisJCQl0YWJfYmFzZV9oaWdoLS0KKwkJfQorCX0KKwlwcmVmaXhfc3RyID0gIiIKKwljdXJyX2lkeCA9IDAKKwljdXJyX2xvdyA9IHRhYl9iYXNlX2xvdworCWN1cnJfaGlnaCA9IHRhYl9iYXNlX2hpZ2gKKwljdXJyX3NpZ24gPSB0YWJfYmFzZV9zaWduCisJcHJpbnQgIi8qIiA+IG91dGZpbGUKKwlwcmludCAiICogIiBvdXRmbiAiOiIgPiBvdXRmaWxlCisJcHJpbnQgIiAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LiIgPiBvdXRmaWxlCisJcHJpbnQgIiAqLyIgPiBvdXRmaWxlCisJcHJpbnQgIiIgPiBvdXRmaWxlCisJcHJpbnQgIiNpbmNsdWRlIDxldC9jb21fZXJyLmg+IiA+IG91dGZpbGUKKwlwcmludCAiIiA+IG91dGZpbGUKK30KKworL15bIFx0XSooZXJyb3JfY29kZXxlYylbIFx0XStbQS1aXzAtOV0rLC8geworCSMgQmUgdG9sZXJhbnQgdG8gbWlzc2luZyB3aGl0ZXNwYWNlIGFmdGVyIGAsJyAuLi4KKwlzdWIoLywvLCAiLCAiKQorCisJdGFnPXByZWZpeF9zdHIgc3Vic3RyKCQyLDEsbGVuZ3RoKCQyKS0xKQorCWlmIChjdXJyX2hpZ2ggPT0gMCkgeworCQlwcmludGYgIiNkZWZpbmUgJS00MHMgKCVkTClcbiIsIHRhZywgXAorCQkJY3Vycl9zaWduKmN1cnJfbG93ID4gb3V0ZmlsZQorCX0gZWxzZSB7CisJCXByaW50ZiAiI2RlZmluZSAlLTQwcyAoJWQlMDZkTClcbiIsIHRhZywgY3Vycl9oaWdoKmN1cnJfc2lnbiwgXAorCQkJY3Vycl9sb3cgPiBvdXRmaWxlCisJfQorCWN1cnJfbG93ICs9IGN1cnJfc2lnbjsKKwljdXJyX2lkeCsrOworCWlmIChjdXJyX2xvdyA+PSBtb2RfYmFzZSkgeworCQljdXJyX2xvdyAtPSBtb2RfYmFzZTsKKwkJY3Vycl9oaWdoKysKKwl9CisJaWYgKGN1cnJfbG93IDwgMCkgeworCQljdXJfbG93ICs9IG1vZF9iYXNlCisJCWN1cl9oaWdoLS0KKwl9Cit9CisKKy9eWyBcdF0qKHByZWZpeCkkLyB7CisJcHJlZml4X3N0ciA9ICIiCit9CisKKy9eWyBcdF0qKHByZWZpeClbIFx0XStbQS1aXzAtOV0rLyB7CisJcHJlZml4X3N0ciA9ICQyICJfIgorfQorCisvXlsgXHRdKihpbmRleClbIFx0XStbQS1aXzAtOV0rLyB7CisJbmV3X2lkeCA9ICQyCisJY3Vycl9sb3cgKz0gY3Vycl9zaWduICogKG5ld19pZHggLSBjdXJyX2lkeCkKKwljdXJyX2lkeCA9IG5ld19pZHgKKwlpZiAoY3Vycl9sb3cgPj0gbW9kX2Jhc2UpIHsKKwkJY3Vycl9sb3cgLT0gbW9kX2Jhc2U7CisJCWN1cnJfaGlnaCsrCisJfQorCWlmIChjdXJyX2xvdyA8IDApIHsKKwkJY3VyX2xvdyArPSBtb2RfYmFzZQorCQljdXJfaGlnaC0tCisJfQorfQorCisKK0VORCB7CisJcHJpbnQgImV4dGVybiBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfIiB0YWJsZV9uYW1lICJfZXJyb3JfdGFibGU7IiA+IG91dGZpbGUKKwlwcmludCAiZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV8iIHRhYmxlX25hbWUgIl9lcnJvcl90YWJsZSh2b2lkKTsiID4gb3V0ZmlsZQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICIvKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEhlaW1kYWwgKi8iID4gb3V0ZmlsZQorCXByaW50ICJleHRlcm4gdm9pZCBpbml0aWFsaXplXyIgdGFibGVfbmFtZSAiX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KTsiID4gb3V0ZmlsZQorCXByaW50ICIiID4gb3V0ZmlsZQorCWlmICh0YWJfYmFzZV9oaWdoID09IDApIHsKKwkJcHJpbnQgIiNkZWZpbmUgRVJST1JfVEFCTEVfQkFTRV8iIHRhYmxlX25hbWUgIiAoIiBcCisJCQlzcHJpbnRmKCIlZCIsIHRhYl9iYXNlX3NpZ24qdGFiX2Jhc2VfbG93KSBcCisJCQkiTCkiID4gb3V0ZmlsZQorCX0gZWxzZSB7CisJCXByaW50ICIjZGVmaW5lIEVSUk9SX1RBQkxFX0JBU0VfIiB0YWJsZV9uYW1lICIgKCIgXAorCQkJc3ByaW50ZigiJWQlMDZkIiwgdGFiX2Jhc2Vfc2lnbip0YWJfYmFzZV9oaWdoLCBcCisJCQl0YWJfYmFzZV9sb3cpICJMKSIgPiBvdXRmaWxlCisJfQorCXByaW50ICIiID4gb3V0ZmlsZQorCXByaW50ICIvKiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHZlcnNpb25zLi4uICovIiA+IG91dGZpbGUKKwlwcmludCAiI2RlZmluZSBpbml0XyIgdGFibGVfbmFtZSAiX2Vycl90YmwgaW5pdGlhbGl6ZV8iIHRhYmxlX25hbWUgIl9lcnJvcl90YWJsZSIgPiBvdXRmaWxlCisJcHJpbnQgIiNkZWZpbmUgIiB0YWJsZV9uYW1lICJfZXJyX2Jhc2UgRVJST1JfVEFCTEVfQkFTRV8iIHRhYmxlX25hbWUgPiBvdXRmaWxlCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L2V0X25hbWUuYyBiL2UyZnNwcm9ncy9saWIvZXQvZXRfbmFtZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5YTNlODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2V0X25hbWUuYwpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IDE5ODcgYnkgTUlUIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZAorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlIHVzZWQgaW4KKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKKyAqIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBhbmQgdGhlCisgKiBNLkkuVC4gUy5JLlAuQi4gbWFrZSBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dAorICogZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJjb21fZXJyLmgiCisjaW5jbHVkZSAiZXJyb3JfdGFibGUuaCIKKyNpbmNsdWRlICJpbnRlcm5hbC5oIgorCitzdGF0aWMgY29uc3QgY2hhciBjaGFyX3NldFtdID0KKwkiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlfIjsKKworc3RhdGljIGNoYXIgYnVmWzZdOworCitjb25zdCBjaGFyICogZXJyb3JfdGFibGVfbmFtZShlcnJjb2RlX3QgbnVtKQoreworICAgIGludCBjaDsKKyAgICBpbnQgaTsKKyAgICBjaGFyICpwOworCisgICAgLyogbnVtID0gYWEgYWFhIGFiYiBiYmIgYmNjIGNjYyBjZGQgZGRkIGQ/PyA/Pz8gPz8/ICovCisgICAgcCA9IGJ1ZjsKKyAgICBudW0gPj49IEVSUkNPREVfUkFOR0U7CisgICAgLyogbnVtID0gPz8gPz8/ID8/PyBhYWEgYWFhIGJiYiBiYmIgY2NjIGNjYyBkZGQgZGRkICovCisgICAgbnVtICY9IDA3Nzc3Nzc3N0w7CisgICAgLyogbnVtID0gMDAgMDAwIDAwMCBhYWEgYWFhIGJiYiBiYmIgY2NjIGNjYyBkZGQgZGRkICovCisgICAgZm9yIChpID0gNDsgaSA+PSAwOyBpLS0pIHsKKwljaCA9IChpbnQpKChudW0gPj4gQklUU19QRVJfQ0hBUiAqIGkpICYgKCgxIDw8IEJJVFNfUEVSX0NIQVIpIC0gMSkpOworCWlmIChjaCAhPSAwKQorCSAgICAqcCsrID0gY2hhcl9zZXRbY2gtMV07CisgICAgfQorICAgICpwID0gJ1wwJzsKKyAgICByZXR1cm4oYnVmKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvaW5pdF9ldC5jIGIvZTJmc3Byb2dzL2xpYi9ldC9pbml0X2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyNjYwZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvaW5pdF9ldC5jCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiAkSGVhZGVyJAorICogJFNvdXJjZSQKKyAqICRMb2NrZXIkCisgKgorICogQ29weXJpZ2h0IDE5ODYsIDE5ODcsIDE5ODggYnkgTUlUIEluZm9ybWF0aW9uIFN5c3RlbXMgYW5kCisgKgl0aGUgTUlUIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZC4KKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2luY2x1ZGUgImNvbV9lcnIuaCIKKyNpbmNsdWRlICJlcnJvcl90YWJsZS5oIgorCitzdHJ1Y3QgZm9vYmFyIHsKKyAgICBzdHJ1Y3QgZXRfbGlzdCBldGw7CisgICAgc3RydWN0IGVycm9yX3RhYmxlIGV0OworfTsKKworZXh0ZXJuIHN0cnVjdCBldF9saXN0ICogX2V0X2R5bmFtaWNfbGlzdDsKKworaW50IGluaXRfZXJyb3JfdGFibGUoY29uc3QgY2hhciAqIGNvbnN0ICptc2dzLCBsb25nIGJhc2UsIGludCBjb3VudCkKK3sKKyAgICBzdHJ1Y3QgZm9vYmFyICogbmV3X2V0OworCisgICAgaWYgKCFiYXNlIHx8ICFjb3VudCB8fCAhbXNncykKKwlyZXR1cm4gMDsKKworICAgIG5ld19ldCA9IChzdHJ1Y3QgZm9vYmFyICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGZvb2JhcikpOworICAgIGlmICghbmV3X2V0KQorCXJldHVybiBFTk9NRU07CS8qIG9vcHMgKi8KKyAgICBuZXdfZXQtPmV0bC50YWJsZSA9ICZuZXdfZXQtPmV0OworICAgIG5ld19ldC0+ZXQubXNncyA9IG1zZ3M7CisgICAgbmV3X2V0LT5ldC5iYXNlID0gYmFzZTsKKyAgICBuZXdfZXQtPmV0Lm5fbXNncz0gY291bnQ7CisKKyAgICBuZXdfZXQtPmV0bC5uZXh0ID0gX2V0X2R5bmFtaWNfbGlzdDsKKyAgICBfZXRfZHluYW1pY19saXN0ID0gJm5ld19ldC0+ZXRsOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC9pbnRlcm5hbC5oIGIvZTJmc3Byb2dzL2xpYi9ldC9pbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNmYzNzMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L2ludGVybmFsLmgKQEAgLTAsMCArMSwxOSBAQAorLyoKKyAqIGludGVybmFsIGluY2x1ZGUgZmlsZSBmb3IgY29tX2VyciBwYWNrYWdlCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKi8KKworI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZmRlZiBORUVEX1NZU19FUlJMSVNUCitleHRlcm4gY2hhciBjb25zdCAqIGNvbnN0IHN5c19lcnJsaXN0W107CitleHRlcm4gY29uc3QgaW50IHN5c19uZXJyOworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvY29udGludWF0aW9uLmMgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvY29udGludWF0aW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIwNzg5NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9jb250aW51YXRpb24uYwpAQCAtMCwwICsxLDU1IEBACisvKgorICogY29udGludWF0aW9uLmM6CisgKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQ7IHBsZWFzZSBkbyBub3QgZWRpdCBpdC4KKyAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNkZWZpbmUgTl8oYSkgYQorCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRleHRbXSA9IHsKKwlOXygiTmV3IHBhc3N3b3JkIHdhcyBmb3VuZCBpbiBhIGRpY3Rpb25hcnkgb2YgcG9zc2libGUgcGFzc3dvcmRzIGFuZFxudGhlcmVmb3JlIG1heSBiZSBlYXNpbHkgZ3Vlc3NlZC4gUGxlYXNlIGNob29zZSBhbm90aGVyIHBhc3N3b3JkLlxuU2VlIHRoZSBvdnBhc3N3ZCBtYW4gcGFnZSBmb3IgaGVscCBpbiBjaG9vc2luZyBhIGdvb2QgcGFzc3dvcmQuIiksCisgICAgMAorfTsKKworc3RydWN0IGVycm9yX3RhYmxlIHsKKyAgICBjaGFyIGNvbnN0ICogY29uc3QgKiBtc2dzOworICAgIGxvbmcgYmFzZTsKKyAgICBpbnQgbl9tc2dzOworfTsKK3N0cnVjdCBldF9saXN0IHsKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqbmV4dDsKKyAgICBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgKiB0YWJsZTsKK307CitleHRlcm4gc3RydWN0IGV0X2xpc3QgKl9ldF9saXN0OworCitjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfb3ZrX2Vycm9yX3RhYmxlID0geyB0ZXh0LCA0Mzc4NzUyMEwsIDEgfTsKKworc3RhdGljIHN0cnVjdCBldF9saXN0IGxpbmsgPSB7IDAsIDAgfTsKKwordm9pZCBpbml0aWFsaXplX292a19lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7Cit2b2lkIGluaXRpYWxpemVfb3ZrX2Vycm9yX3RhYmxlKHZvaWQpOworCit2b2lkIGluaXRpYWxpemVfb3ZrX2Vycm9yX3RhYmxlKHZvaWQpIHsKKyAgICBpbml0aWFsaXplX292a19lcnJvcl90YWJsZV9yKCZfZXRfbGlzdCk7Cit9CisKKy8qIEZvciBIZWltZGFsIGNvbXBhdGliaWxpdHkgKi8KK3ZvaWQgaW5pdGlhbGl6ZV9vdmtfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpCit7CisgICAgc3RydWN0IGV0X2xpc3QgKmV0LCAqKmVuZDsKKworICAgIGZvciAoZW5kID0gbGlzdCwgZXQgPSAqbGlzdDsgZXQ7IGVuZCA9ICZldC0+bmV4dCwgZXQgPSBldC0+bmV4dCkKKyAgICAgICAgaWYgKGV0LT50YWJsZS0+bXNncyA9PSB0ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgIGV0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZXRfbGlzdCkpOworICAgIGlmIChldCA9PSAwKSB7CisgICAgICAgIGlmICghbGluay50YWJsZSkKKyAgICAgICAgICAgIGV0ID0gJmxpbms7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXQtPnRhYmxlID0gJmV0X292a19lcnJvcl90YWJsZTsKKyAgICBldC0+bmV4dCA9IDA7CisgICAgKmVuZCA9IGV0OworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2NvbnRpbnVhdGlvbi5ldCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9jb250aW51YXRpb24uZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRkMTY3NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9jb250aW51YXRpb24uZXQKQEAgLTAsMCArMSw4IEBACisJZXJyb3JfdGFibGUJb3ZrCisKK2Vycm9yX2NvZGUgQ0hQQVNTX1VUSUxfUEFTU1dPUkRfSU5fRElDVElPTkFSWSwKKyJOZXcgcGFzc3dvcmQgd2FzIGZvdW5kIGluIGEgZGljdGlvbmFyeSBvZiBwb3NzaWJsZSBwYXNzd29yZHMgYW5kXG5cCit0aGVyZWZvcmUgbWF5IGJlIGVhc2lseSBndWVzc2VkLiBQbGVhc2UgY2hvb3NlIGFub3RoZXIgcGFzc3dvcmQuXG5cCitTZWUgdGhlIG92cGFzc3dkIG1hbiBwYWdlIGZvciBoZWxwIGluIGNob29zaW5nIGEgZ29vZCBwYXNzd29yZC4iCisKKwllbmQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9jb250aW51YXRpb24uaCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9jb250aW51YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2ZlNjAyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2NvbnRpbnVhdGlvbi5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiBjb250aW51YXRpb24uaDoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisKKyNkZWZpbmUgQ0hQQVNTX1VUSUxfUEFTU1dPUkRfSU5fRElDVElPTkFSWSAgICAgICAoNDM3ODc1MjBMKQorZXh0ZXJuIGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF9vdmtfZXJyb3JfdGFibGU7CitleHRlcm4gdm9pZCBpbml0aWFsaXplX292a19lcnJvcl90YWJsZSh2b2lkKTsKKworLyogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBIZWltZGFsICovCitleHRlcm4gdm9pZCBpbml0aWFsaXplX292a19lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7CisKKyNkZWZpbmUgRVJST1JfVEFCTEVfQkFTRV9vdmsgKDQzNzg3NTIwTCkKKworLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy4uLiAqLworI2RlZmluZSBpbml0X292a19lcnJfdGJsIGluaXRpYWxpemVfb3ZrX2Vycm9yX3RhYmxlCisjZGVmaW5lIG92a19lcnJfYmFzZSBFUlJPUl9UQUJMRV9CQVNFX292awpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2hlaW1kYWwuYyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDliZTRjZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsLmMKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKiBoZWltZGFsLmM6CisgKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQ7IHBsZWFzZSBkbyBub3QgZWRpdCBpdC4KKyAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNkZWZpbmUgTl8oYSkgYQorCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHRleHRbXSA9IHsKKwlOXygiS2VyYmVyb3Mgc3VjY2Vzc2Z1bCIpLAorCU5fKCJLZXJiZXJvcyBwcmluY2lwYWwgZXhwaXJlZCIpLAorCU5fKCJLZXJiZXJvcyBzZXJ2aWNlIGV4cGlyZWQiKSwKKwlOXygiS2VyYmVyb3MgYXV0aCBleHBpcmVkIiksCisJTl8oIkluY29ycmVjdCBrZXJiZXJvcyBtYXN0ZXIga2V5IHZlcnNpb24iKSwKKwlOXygiSW5jb3JyZWN0IGtlcmJlcm9zIG1hc3RlciBrZXkgdmVyc2lvbiIpLAorCU5fKCJJbmNvcnJlY3Qga2VyYmVyb3MgbWFzdGVyIGtleSB2ZXJzaW9uIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBieXRlIG9yZGVyIHVua25vd24iKSwKKwlOXygiS2VyYmVyb3MgcHJpbmNpcGFsIHVua25vd24iKSwKKwlOXygiS2VyYmVyb3MgcHJpbmNpcGFsIG5vdCB1bmlxdWUiKSwKKwlOXygiS2VyYmVyb3MgcHJpbmNpcGFsIGhhcyBudWxsIGtleSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDExKSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDEyKSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDEzKSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE0KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE1KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE2KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE3KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE4KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDE5KSIpLAorCU5fKCJHZW5lcmljIGVycm9yIGZyb20gS2VyYmVyb3MgS0RDIiksCisJTl8oIkNhbid0IHJlYWQgS2VyYmVyb3MgdGlja2V0IGZpbGUiKSwKKwlOXygiQ2FuJ3QgZmluZCBLZXJiZXJvcyB0aWNrZXQgb3IgVEdUIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjMpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjQpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjUpIiksCisJTl8oIktlcmJlcm9zIFRHVCBFeHBpcmVkIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjcpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjgpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMjkpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoMzApIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBDYW4ndCBkZWNvZGUgYXV0aGVudGljYXRvciIpLAorCU5fKCJLZXJiZXJvcyB0aWNrZXQgZXhwaXJlZCIpLAorCU5fKCJLZXJiZXJvcyB0aWNrZXQgbm90IHlldCB2YWxpZCIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogUmVwZWF0ZWQgcmVxdWVzdCIpLAorCU5fKCJUaGUga2VyYmVyb3MgdGlja2V0IGlzbid0IGZvciB1cyIpLAorCU5fKCJLZXJiZXJvcyByZXF1ZXN0IGluY29uc2lzdGVudCIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogZGVsdGFfdCB0b28gYmlnIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBpbmNvcnJlY3QgbmV0IGFkZHJlc3MiKSwKKwlOXygiS2VyYmVyb3MgcHJvdG9jb2wgdmVyc2lvbiBtaXNtYXRjaCIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogaW52YWxpZCBtc2cgdHlwZSIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogbWVzc2FnZSBzdHJlYW0gbW9kaWZpZWQiKSwKKwlOXygiS2VyYmVyb3MgZXJyb3I6IG1lc3NhZ2Ugb3V0IG9mIG9yZGVyIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiB1bmF1dGhvcml6ZWQgcmVxdWVzdCIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ0KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ1KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ2KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ3KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ4KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDQ5KSIpLAorCU5fKCJSZXNlcnZlZCBrcmIgZXJyb3IgKDUwKSIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogY3VycmVudCBQVyBpcyBudWxsIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZCIpLAorCU5fKCJLZXJiZXJvcyBwcm90b2NvbCBlcnJvciIpLAorCU5fKCJFcnJvciByZXR1cm5lZCBieSBLZXJiZXJvcyBLREMiKSwKKwlOXygiTnVsbCBLZXJiZXJvcyB0aWNrZXQgcmV0dXJuZWQgYnkgS0RDIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBSZXRyeSBjb3VudCBleGNlZWRlZCIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogQ2FuJ3Qgc2VuZCByZXF1ZXN0IiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNTgpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNTkpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNjApIiksCisJTl8oIktlcmJlcm9zIGVycm9yOiBub3QgYWxsIHRpY2tldHMgcmV0dXJuZWQiKSwKKwlOXygiS2VyYmVyb3MgZXJyb3I6IGluY29ycmVjdCBwYXNzd29yZCIpLAorCU5fKCJLZXJiZXJvcyBlcnJvcjogUHJvdG9jb2wgRXJyb3IiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2NCkiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2NSkiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2NikiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2NykiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2OCkiKSwKKwlOXygiUmVzZXJ2ZWQga3JiIGVycm9yICg2OSkiKSwKKwlOXygiT3RoZXIgZXJyb3IiKSwKKwlOXygiRG9uJ3QgaGF2ZSBLZXJiZXJvcyB0aWNrZXQtZ3JhbnRpbmcgdGlja2V0IiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNzIpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNzMpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNzQpIiksCisJTl8oIlJlc2VydmVkIGtyYiBlcnJvciAoNzUpIiksCisJTl8oIk5vIHRpY2tldCBmaWxlIGZvdW5kIiksCisJTl8oIkNvdWxkbid0IGFjY2VzcyB0aWNrZXQgZmlsZSIpLAorCU5fKCJDb3VsZG4ndCBsb2NrIHRpY2tldCBmaWxlIiksCisJTl8oIkJhZCB0aWNrZXQgZmlsZSBmb3JtYXQiKSwKKwlOXygidGZfaW5pdCBub3QgY2FsbGVkIGZpcnN0IiksCisJTl8oIkJhZCBLZXJiZXJvcyBuYW1lIGZvcm1hdCIpLAorICAgIDAKK307CisKK3N0cnVjdCBlcnJvcl90YWJsZSB7CisgICAgY2hhciBjb25zdCAqIGNvbnN0ICogbXNnczsKKyAgICBsb25nIGJhc2U7CisgICAgaW50IG5fbXNnczsKK307CitzdHJ1Y3QgZXRfbGlzdCB7CisgICAgc3RydWN0IGV0X2xpc3QgKm5leHQ7CisgICAgY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlICogdGFibGU7Cit9OworZXh0ZXJuIHN0cnVjdCBldF9saXN0ICpfZXRfbGlzdDsKKworY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlIGV0X2tyYl9lcnJvcl90YWJsZSA9IHsgdGV4dCwgMzk1MjUzNzZMLCA4MiB9OworCitzdGF0aWMgc3RydWN0IGV0X2xpc3QgbGluayA9IHsgMCwgMCB9OworCit2b2lkIGluaXRpYWxpemVfa3JiX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KTsKK3ZvaWQgaW5pdGlhbGl6ZV9rcmJfZXJyb3JfdGFibGUodm9pZCk7CisKK3ZvaWQgaW5pdGlhbGl6ZV9rcmJfZXJyb3JfdGFibGUodm9pZCkgeworICAgIGluaXRpYWxpemVfa3JiX2Vycm9yX3RhYmxlX3IoJl9ldF9saXN0KTsKK30KKworLyogRm9yIEhlaW1kYWwgY29tcGF0aWJpbGl0eSAqLwordm9pZCBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCkKK3sKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqZXQsICoqZW5kOworCisgICAgZm9yIChlbmQgPSBsaXN0LCBldCA9ICpsaXN0OyBldDsgZW5kID0gJmV0LT5uZXh0LCBldCA9IGV0LT5uZXh0KQorICAgICAgICBpZiAoZXQtPnRhYmxlLT5tc2dzID09IHRleHQpCisgICAgICAgICAgICByZXR1cm47CisgICAgZXQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBldF9saXN0KSk7CisgICAgaWYgKGV0ID09IDApIHsKKyAgICAgICAgaWYgKCFsaW5rLnRhYmxlKQorICAgICAgICAgICAgZXQgPSAmbGluazsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBldC0+dGFibGUgPSAmZXRfa3JiX2Vycm9yX3RhYmxlOworICAgIGV0LT5uZXh0ID0gMDsKKyAgICAqZW5kID0gZXQ7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbC5ldCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsLmV0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkY2UxOTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbC5ldApAQCAtMCwwICsxLDY1IEBACisjCUNvcHlyaWdodCAxOTg3LDE5ODggTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQorIworIwlGb3IgY29weWluZyBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLCBzZWUgdGhlIGZpbGUKKyMJIm1pdC1jb3B5cmlnaHQuaCIuCisjIAorIyBUaGlzIG1pZ2h0IGxvb2sgbGlrZSBhIGNvbV9lcnIgZmlsZSwgYnV0IGlzIG5vdAorIworaWQgIiRJZDoga3JiX2Vyci5ldCx2IDEuNyAxOTk4LzAzLzI5IDE0OjE5OjUyIGJnIEV4cCAkIgorCitlcnJvcl90YWJsZSBrcmIKKworcHJlZml4IEtSQkVUCitlYyBLU1VDQ0VTUywJCSJLZXJiZXJvcyBzdWNjZXNzZnVsIgorZWMgS0RDX05BTUVfRVhQLAkiS2VyYmVyb3MgcHJpbmNpcGFsIGV4cGlyZWQiCitlYyBLRENfU0VSVklDRV9FWFAsCSJLZXJiZXJvcyBzZXJ2aWNlIGV4cGlyZWQiCitlYyBLRENfQVVUSF9FWFAsCSJLZXJiZXJvcyBhdXRoIGV4cGlyZWQiCitlYyBLRENfUEtUX1ZFUiwJCSJJbmNvcnJlY3Qga2VyYmVyb3MgbWFzdGVyIGtleSB2ZXJzaW9uIgorZWMgS0RDX1BfTUtFWV9WRVIsCSJJbmNvcnJlY3Qga2VyYmVyb3MgbWFzdGVyIGtleSB2ZXJzaW9uIgorZWMgS0RDX1NfTUtFWV9WRVIsCSJJbmNvcnJlY3Qga2VyYmVyb3MgbWFzdGVyIGtleSB2ZXJzaW9uIgorZWMgS0RDX0JZVEVfT1JERVIsCSJLZXJiZXJvcyBlcnJvcjogYnl0ZSBvcmRlciB1bmtub3duIgorZWMgS0RDX1BSX1VOS05PV04sCSJLZXJiZXJvcyBwcmluY2lwYWwgdW5rbm93biIKK2VjIEtEQ19QUl9OX1VOSVFVRSwJIktlcmJlcm9zIHByaW5jaXBhbCBub3QgdW5pcXVlIgorZWMgS0RDX05VTExfS0VZLAkiS2VyYmVyb3MgcHJpbmNpcGFsIGhhcyBudWxsIGtleSIKK2luZGV4IDIwCitlYyBLRENfR0VOX0VSUiwJCSJHZW5lcmljIGVycm9yIGZyb20gS2VyYmVyb3MgS0RDIgorZWMgR0NfVEtGSUwsCQkiQ2FuJ3QgcmVhZCBLZXJiZXJvcyB0aWNrZXQgZmlsZSIKK2VjIEdDX05PVEtULAkJIkNhbid0IGZpbmQgS2VyYmVyb3MgdGlja2V0IG9yIFRHVCIKK2luZGV4IDI2CitlYyBNS19BUF9UR1RFWFAsCSJLZXJiZXJvcyBUR1QgRXhwaXJlZCIKK2luZGV4IDMxCitlYyBSRF9BUF9VTkRFQywJCSJLZXJiZXJvcyBlcnJvcjogQ2FuJ3QgZGVjb2RlIGF1dGhlbnRpY2F0b3IiCitlYyBSRF9BUF9FWFAsCQkiS2VyYmVyb3MgdGlja2V0IGV4cGlyZWQiCitlYyBSRF9BUF9OWVYsCQkiS2VyYmVyb3MgdGlja2V0IG5vdCB5ZXQgdmFsaWQiCitlYyBSRF9BUF9SRVBFQVQsCSJLZXJiZXJvcyBlcnJvcjogUmVwZWF0ZWQgcmVxdWVzdCIKK2VjIFJEX0FQX05PVF9VUywJIlRoZSBrZXJiZXJvcyB0aWNrZXQgaXNuJ3QgZm9yIHVzIgorZWMgUkRfQVBfSU5DT04sCQkiS2VyYmVyb3MgcmVxdWVzdCBpbmNvbnNpc3RlbnQiCitlYyBSRF9BUF9USU1FLAkJIktlcmJlcm9zIGVycm9yOiBkZWx0YV90IHRvbyBiaWciCitlYyBSRF9BUF9CQURELAkJIktlcmJlcm9zIGVycm9yOiBpbmNvcnJlY3QgbmV0IGFkZHJlc3MiCitlYyBSRF9BUF9WRVJTSU9OLAkiS2VyYmVyb3MgcHJvdG9jb2wgdmVyc2lvbiBtaXNtYXRjaCIKK2VjIFJEX0FQX01TR19UWVBFLAkiS2VyYmVyb3MgZXJyb3I6IGludmFsaWQgbXNnIHR5cGUiCitlYyBSRF9BUF9NT0RJRklFRCwJIktlcmJlcm9zIGVycm9yOiBtZXNzYWdlIHN0cmVhbSBtb2RpZmllZCIKK2VjIFJEX0FQX09SREVSLAkJIktlcmJlcm9zIGVycm9yOiBtZXNzYWdlIG91dCBvZiBvcmRlciIKK2VjIFJEX0FQX1VOQVVUSE9SLAkiS2VyYmVyb3MgZXJyb3I6IHVuYXV0aG9yaXplZCByZXF1ZXN0IgoraW5kZXggNTEKK2VjIEdUX1BXX05VTEwsCQkiS2VyYmVyb3MgZXJyb3I6IGN1cnJlbnQgUFcgaXMgbnVsbCIKK2VjIEdUX1BXX0JBRFBXLAkJIktlcmJlcm9zIGVycm9yOiBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZCIKK2VjIEdUX1BXX1BST1QsCQkiS2VyYmVyb3MgcHJvdG9jb2wgZXJyb3IiCitlYyBHVF9QV19LRENFUlIsCSJFcnJvciByZXR1cm5lZCBieSBLZXJiZXJvcyBLREMiCitlYyBHVF9QV19OVUxMVEtULAkiTnVsbCBLZXJiZXJvcyB0aWNrZXQgcmV0dXJuZWQgYnkgS0RDIgorZWMgU0tEQ19SRVRSWSwJCSJLZXJiZXJvcyBlcnJvcjogUmV0cnkgY291bnQgZXhjZWVkZWQiCitlYyBTS0RDX0NBTlQsCQkiS2VyYmVyb3MgZXJyb3I6IENhbid0IHNlbmQgcmVxdWVzdCIKK2luZGV4IDYxCitlYyBJTlRLX1dfTk9UQUxMLAkiS2VyYmVyb3MgZXJyb3I6IG5vdCBhbGwgdGlja2V0cyByZXR1cm5lZCIKK2VjIElOVEtfQkFEUFcsCQkiS2VyYmVyb3MgZXJyb3I6IGluY29ycmVjdCBwYXNzd29yZCIKK2VjIElOVEtfUFJPVCwJCSJLZXJiZXJvcyBlcnJvcjogUHJvdG9jb2wgRXJyb3IiCitpbmRleCA3MAorZWMgSU5US19FUlIsCQkiT3RoZXIgZXJyb3IiCitlYyBBRF9OT1RHVCwJCSJEb24ndCBoYXZlIEtlcmJlcm9zIHRpY2tldC1ncmFudGluZyB0aWNrZXQiCitpbmRleCA3NgorZWMgTk9fVEtUX0ZJTCwJCSJObyB0aWNrZXQgZmlsZSBmb3VuZCIKK2VjIFRLVF9GSUxfQUNDLAkJIkNvdWxkbid0IGFjY2VzcyB0aWNrZXQgZmlsZSIKK2VjIFRLVF9GSUxfTENLLAkJIkNvdWxkbid0IGxvY2sgdGlja2V0IGZpbGUiCitlYyBUS1RfRklMX0ZNVCwJCSJCYWQgdGlja2V0IGZpbGUgZm9ybWF0IgorZWMgVEtUX0ZJTF9JTkksCQkidGZfaW5pdCBub3QgY2FsbGVkIGZpcnN0IgorZWMgS05BTUVfRk1ULAkJIkJhZCBLZXJiZXJvcyBuYW1lIGZvcm1hdCIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsLmggYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOTQzNTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBoZWltZGFsLmg6CisgKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQ7IHBsZWFzZSBkbyBub3QgZWRpdCBpdC4KKyAqLworCisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorCisjZGVmaW5lIEtSQkVUX0tTVUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzc2TCkKKyNkZWZpbmUgS1JCRVRfS0RDX05BTUVfRVhQICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzNzdMKQorI2RlZmluZSBLUkJFVF9LRENfU0VSVklDRV9FWFAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM3OEwpCisjZGVmaW5lIEtSQkVUX0tEQ19BVVRIX0VYUCAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzc5TCkKKyNkZWZpbmUgS1JCRVRfS0RDX1BLVF9WRVIgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODBMKQorI2RlZmluZSBLUkJFVF9LRENfUF9NS0VZX1ZFUiAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4MUwpCisjZGVmaW5lIEtSQkVUX0tEQ19TX01LRVlfVkVSICAgICAgICAgICAgICAgICAgICAgKDM5NTI1MzgyTCkKKyNkZWZpbmUgS1JCRVRfS0RDX0JZVEVfT1JERVIgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODNMKQorI2RlZmluZSBLUkJFVF9LRENfUFJfVU5LTk9XTiAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4NEwpCisjZGVmaW5lIEtSQkVUX0tEQ19QUl9OX1VOSVFVRSAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzg1TCkKKyNkZWZpbmUgS1JCRVRfS0RDX05VTExfS0VZICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODZMKQorI2RlZmluZSBLUkJFVF9LRENfR0VOX0VSUiAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM5NkwpCisjZGVmaW5lIEtSQkVUX0dDX1RLRklMICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzk3TCkKKyNkZWZpbmUgS1JCRVRfR0NfTk9US1QgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzOThMKQorI2RlZmluZSBLUkJFVF9NS19BUF9UR1RFWFAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQwMkwpCisjZGVmaW5lIEtSQkVUX1JEX0FQX1VOREVDICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDA3TCkKKyNkZWZpbmUgS1JCRVRfUkRfQVBfRVhQICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MDhMKQorI2RlZmluZSBLUkJFVF9SRF9BUF9OWVYgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQwOUwpCisjZGVmaW5lIEtSQkVUX1JEX0FQX1JFUEVBVCAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDEwTCkKKyNkZWZpbmUgS1JCRVRfUkRfQVBfTk9UX1VTICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MTFMKQorI2RlZmluZSBLUkJFVF9SRF9BUF9JTkNPTiAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQxMkwpCisjZGVmaW5lIEtSQkVUX1JEX0FQX1RJTUUgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDEzTCkKKyNkZWZpbmUgS1JCRVRfUkRfQVBfQkFERCAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MTRMKQorI2RlZmluZSBLUkJFVF9SRF9BUF9WRVJTSU9OICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQxNUwpCisjZGVmaW5lIEtSQkVUX1JEX0FQX01TR19UWVBFICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDE2TCkKKyNkZWZpbmUgS1JCRVRfUkRfQVBfTU9ESUZJRUQgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MTdMKQorI2RlZmluZSBLUkJFVF9SRF9BUF9PUkRFUiAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQxOEwpCisjZGVmaW5lIEtSQkVUX1JEX0FQX1VOQVVUSE9SICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDE5TCkKKyNkZWZpbmUgS1JCRVRfR1RfUFdfTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MjdMKQorI2RlZmluZSBLUkJFVF9HVF9QV19CQURQVyAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQyOEwpCisjZGVmaW5lIEtSQkVUX0dUX1BXX1BST1QgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDI5TCkKKyNkZWZpbmUgS1JCRVRfR1RfUFdfS0RDRVJSICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MzBMKQorI2RlZmluZSBLUkJFVF9HVF9QV19OVUxMVEtUICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQzMUwpCisjZGVmaW5lIEtSQkVUX1NLRENfUkVUUlkgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDMyTCkKKyNkZWZpbmUgS1JCRVRfU0tEQ19DQU5UICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MzNMKQorI2RlZmluZSBLUkJFVF9JTlRLX1dfTk9UQUxMICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQzN0wpCisjZGVmaW5lIEtSQkVUX0lOVEtfQkFEUFcgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDM4TCkKKyNkZWZpbmUgS1JCRVRfSU5US19QUk9UICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0MzlMKQorI2RlZmluZSBLUkJFVF9JTlRLX0VSUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQ0NkwpCisjZGVmaW5lIEtSQkVUX0FEX05PVEdUICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDQ3TCkKKyNkZWZpbmUgS1JCRVRfTk9fVEtUX0ZJTCAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0NTJMKQorI2RlZmluZSBLUkJFVF9US1RfRklMX0FDQyAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQ1M0wpCisjZGVmaW5lIEtSQkVUX1RLVF9GSUxfTENLICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDU0TCkKKyNkZWZpbmUgS1JCRVRfVEtUX0ZJTF9GTVQgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjU0NTVMKQorI2RlZmluZSBLUkJFVF9US1RfRklMX0lOSSAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTQ1NkwpCisjZGVmaW5lIEtSQkVUX0tOQU1FX0ZNVCAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1NDU3TCkKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfa3JiX2Vycm9yX3RhYmxlOworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9rcmJfZXJyb3JfdGFibGUodm9pZCk7CisKKy8qIEZvciBjb21wYXRpYmlsaXR5IHdpdGggSGVpbWRhbCAqLworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9rcmJfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpOworCisjZGVmaW5lIEVSUk9SX1RBQkxFX0JBU0Vfa3JiICgzOTUyNTM3NkwpCisKKy8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMuLi4gKi8KKyNkZWZpbmUgaW5pdF9rcmJfZXJyX3RibCBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZQorI2RlZmluZSBrcmJfZXJyX2Jhc2UgRVJST1JfVEFCTEVfQkFTRV9rcmIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMi5jIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2hlaW1kYWwyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThkNGMxMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMi5jCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogaGVpbWRhbDIuYzoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBOXyhhKSBhCisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGV4dFtdID0geworCU5fKCIkSWQ6IGthZG1fZXJyLmV0LHYgMS41IDE5OTgvMDEvMTYgMjM6MTE6Mjcgam9kYSBFeHAgJCIpLAorCU5fKCJDYW5ub3QgZmV0Y2ggbG9jYWwgcmVhbG0iKSwKKwlOXygiVW5hYmxlIHRvIGZldGNoIGNyZWRlbnRpYWxzIiksCisJTl8oIkJhZCBrZXkgc3VwcGxpZWQiKSwKKwlOXygiQ2FuJ3QgZW5jcnlwdCBkYXRhIiksCisJTl8oIkNhbm5vdCBlbmNvZGUvZGVjb2RlIGF1dGhlbnRpY2F0aW9uIGluZm8iKSwKKwlOXygiUHJpbmNpcGFsIGF0dGVtcGluZyBjaGFuZ2UgaXMgaW4gd3JvbmcgcmVhbG0iKSwKKwlOXygiUGFja2V0IGlzIHRvbyBsYXJnZSIpLAorCU5fKCJWZXJzaW9uIG51bWJlciBpcyBpbmNvcnJlY3QiKSwKKwlOXygiQ2hlY2tzdW0gZG9lcyBub3QgbWF0Y2giKSwKKwlOXygiVW5zZWFsaW5nIHByaXZhdGUgZGF0YSBmYWlsZWQiKSwKKwlOXygiVW5zdXBwb3J0ZWQgb3BlcmF0aW9uIiksCisJTl8oIkNvdWxkIG5vdCBmaW5kIGFkbWluaXN0cmF0aW5nIGhvc3QiKSwKKwlOXygiQWRtaW5pc3RyYXRpbmcgaG9zdCBuYW1lIGlzIHVua25vd24iKSwKKwlOXygiQ291bGQgbm90IGZpbmQgc2VydmljZSBuYW1lIGluIHNlcnZpY2VzIGRhdGFiYXNlIiksCisJTl8oIkNvdWxkIG5vdCBjcmVhdGUgc29ja2V0IiksCisJTl8oIkNvdWxkIG5vdCBjb25uZWN0IHRvIHNlcnZlciIpLAorCU5fKCJDb3VsZCBub3QgZmV0Y2ggbG9jYWwgc29ja2V0IGFkZHJlc3MiKSwKKwlOXygiQ291bGQgbm90IGZldGNoIG1hc3RlciBrZXkiKSwKKwlOXygiQ291bGQgbm90IHZlcmlmeSBtYXN0ZXIga2V5IiksCisJTl8oIkVudHJ5IGFscmVhZHkgZXhpc3RzIGluIGRhdGFiYXNlIiksCisJTl8oIkRhdGFiYXNlIHN0b3JlIGVycm9yIiksCisJTl8oIkRhdGFiYXNlIHJlYWQgZXJyb3IiKSwKKwlOXygiSW5zdWZmaWNpZW50IGFjY2VzcyB0byBwZXJmb3JtIHJlcXVlc3RlZCBvcGVyYXRpb24iKSwKKwlOXygiRGF0YSBpcyBhdmFpbGFibGUgZm9yIHJldHVybiB0byBjbGllbnQiKSwKKwlOXygiTm8gc3VjaCBlbnRyeSBpbiB0aGUgZGF0YWJhc2UiKSwKKwlOXygiTWVtb3J5IGV4aGF1c3RlZCIpLAorCU5fKCJDb3VsZCBub3QgZmV0Y2ggc3lzdGVtIGhvc3RuYW1lIiksCisJTl8oIkNvdWxkIG5vdCBiaW5kIHBvcnQiKSwKKwlOXygiTGVuZ3RoIG1pc21hdGNoIHByb2JsZW0iKSwKKwlOXygiSWxsZWdhbCB1c2Ugb2Ygd2lsZGNhcmQiKSwKKwlOXygiRGF0YWJhc2UgaXMgbG9ja2VkIG9yIGluIHVzZS0tdHJ5IGFnYWluIGxhdGVyIiksCisJTl8oIkluc2VjdXJlIHBhc3N3b3JkIHJlamVjdGVkIiksCisJTl8oIkNsZWFydGV4dCBwYXNzd29yZCBhbmQgREVTIGtleSBkaWQgbm90IG1hdGNoIiksCisJTl8oIkludmFsaWQgcHJpbmNpcGFsIGZvciBjaGFuZ2Ugc3J2dGFiIHJlcXVlc3QiKSwKKwlOXygiQXR0ZW1wdCBkbyBkZWxldGUgaW1tdXRhYmxlIHByaW5jaXBhbCIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICgzNikiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoMzcpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDM4KSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICgzOSkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNDApIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDQxKSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg0MikiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNDMpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDQ0KSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg0NSkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNDYpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDQ3KSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg0OCkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNDkpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDUwKSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg1MSkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNTIpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDUzKSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg1NCkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNTUpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDU2KSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg1NykiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNTgpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDU5KSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg2MCkiKSwKKwlOXygiUmVzZXJ2ZWQga2FkbSBlcnJvciAoNjEpIiksCisJTl8oIlJlc2VydmVkIGthZG0gZXJyb3IgKDYyKSIpLAorCU5fKCJSZXNlcnZlZCBrYWRtIGVycm9yICg2MykiKSwKKwlOXygiTnVsbCBwYXNzd29yZHMgYXJlIG5vdCBhbGxvd2VkIiksCisJTl8oIlBhc3N3b3JkIGlzIHRvbyBzaG9ydCIpLAorCU5fKCJUb28gZmV3IGNoYXJhY3RlciBjbGFzc2VzIGluIHBhc3N3b3JkIiksCisJTl8oIlBhc3N3b3JkIGlzIGluIHRoZSBwYXNzd29yZCBkaWN0aW9uYXJ5IiksCisgICAgMAorfTsKKworc3RydWN0IGVycm9yX3RhYmxlIHsKKyAgICBjaGFyIGNvbnN0ICogY29uc3QgKiBtc2dzOworICAgIGxvbmcgYmFzZTsKKyAgICBpbnQgbl9tc2dzOworfTsKK3N0cnVjdCBldF9saXN0IHsKKyAgICBzdHJ1Y3QgZXRfbGlzdCAqbmV4dDsKKyAgICBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgKiB0YWJsZTsKK307CitleHRlcm4gc3RydWN0IGV0X2xpc3QgKl9ldF9saXN0OworCitjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfa2FkbV9lcnJvcl90YWJsZSA9IHsgdGV4dCwgLTE3ODMxMjYyNzJMLCA2OCB9OworCitzdGF0aWMgc3RydWN0IGV0X2xpc3QgbGluayA9IHsgMCwgMCB9OworCit2b2lkIGluaXRpYWxpemVfa2FkbV9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7Cit2b2lkIGluaXRpYWxpemVfa2FkbV9lcnJvcl90YWJsZSh2b2lkKTsKKwordm9pZCBpbml0aWFsaXplX2thZG1fZXJyb3JfdGFibGUodm9pZCkgeworICAgIGluaXRpYWxpemVfa2FkbV9lcnJvcl90YWJsZV9yKCZfZXRfbGlzdCk7Cit9CisKKy8qIEZvciBIZWltZGFsIGNvbXBhdGliaWxpdHkgKi8KK3ZvaWQgaW5pdGlhbGl6ZV9rYWRtX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KQoreworICAgIHN0cnVjdCBldF9saXN0ICpldCwgKiplbmQ7CisKKyAgICBmb3IgKGVuZCA9IGxpc3QsIGV0ID0gKmxpc3Q7IGV0OyBlbmQgPSAmZXQtPm5leHQsIGV0ID0gZXQtPm5leHQpCisgICAgICAgIGlmIChldC0+dGFibGUtPm1zZ3MgPT0gdGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICBldCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGV0X2xpc3QpKTsKKyAgICBpZiAoZXQgPT0gMCkgeworICAgICAgICBpZiAoIWxpbmsudGFibGUpCisgICAgICAgICAgICBldCA9ICZsaW5rOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV0LT50YWJsZSA9ICZldF9rYWRtX2Vycm9yX3RhYmxlOworICAgIGV0LT5uZXh0ID0gMDsKKyAgICAqZW5kID0gZXQ7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDIuZXQgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDIuZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNDdjNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMi5ldApAQCAtMCwwICsxLDY1IEBACisjICRJZDoga2FkbV9lcnIuZXQsdiAxLjUgMTk5OC8wMS8xNiAyMzoxMToyNyBqb2RhIEV4cCAkCisjCisjIENvcHlyaWdodCAxOTg4IGJ5IHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LgorIworIyBGb3IgY29weWluZyBhbmQgZGlzdHJpYnV0aW9uIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBmaWxlCisjIDxtaXQtY29weXJpZ2h0Lmg+LgorIworIyBLZXJiZXJvcyBhZG1pbmlzdHJhdGlvbiBzZXJ2ZXIgZXJyb3IgdGFibGUKKyMKKwlldAlrYWRtCisKKyMgS0FETV9TVUNDRVNTLCBhcyBhbGwgc3VjY2VzcyBjb2RlcyBzaG91bGQgYmUsIGlzIHplcm8KKworZWMgS0FETV9SQ1NJRCwJCSIkSWQ6IGthZG1fZXJyLmV0LHYgMS41IDE5OTgvMDEvMTYgMjM6MTE6Mjcgam9kYSBFeHAgJCIKKyMgLyogQnVpbGRpbmcgYW5kIHVuYnVpbGRpbmcgdGhlIHBhY2tldCBlcnJvcnMgKi8KK2VjIEtBRE1fTk9fUkVBTE0sCSJDYW5ub3QgZmV0Y2ggbG9jYWwgcmVhbG0iCitlYyBLQURNX05PX0NSRUQsCSJVbmFibGUgdG8gZmV0Y2ggY3JlZGVudGlhbHMiCitlYyBLQURNX0JBRF9LRVksCSJCYWQga2V5IHN1cHBsaWVkIgorZWMgS0FETV9OT19FTkNSWVBULAkiQ2FuJ3QgZW5jcnlwdCBkYXRhIgorZWMgS0FETV9OT19BVVRILAkiQ2Fubm90IGVuY29kZS9kZWNvZGUgYXV0aGVudGljYXRpb24gaW5mbyIKK2VjIEtBRE1fV1JPTkdfUkVBTE0sCSJQcmluY2lwYWwgYXR0ZW1waW5nIGNoYW5nZSBpcyBpbiB3cm9uZyByZWFsbSIKK2VjIEtBRE1fTk9fUk9PTSwJIlBhY2tldCBpcyB0b28gbGFyZ2UiCitlYyBLQURNX0JBRF9WRVIsCSJWZXJzaW9uIG51bWJlciBpcyBpbmNvcnJlY3QiCitlYyBLQURNX0JBRF9DSEssCSJDaGVja3N1bSBkb2VzIG5vdCBtYXRjaCIKK2VjIEtBRE1fTk9fUkVBRCwJIlVuc2VhbGluZyBwcml2YXRlIGRhdGEgZmFpbGVkIgorZWMgS0FETV9OT19PUENPREUsCSJVbnN1cHBvcnRlZCBvcGVyYXRpb24iCitlYyBLQURNX05PX0hPU1QsCSJDb3VsZCBub3QgZmluZCBhZG1pbmlzdHJhdGluZyBob3N0IgorZWMgS0FETV9VTktfSE9TVCwJIkFkbWluaXN0cmF0aW5nIGhvc3QgbmFtZSBpcyB1bmtub3duIgorZWMgS0FETV9OT19TRVJWLAkiQ291bGQgbm90IGZpbmQgc2VydmljZSBuYW1lIGluIHNlcnZpY2VzIGRhdGFiYXNlIgorZWMgS0FETV9OT19TT0NLLAkiQ291bGQgbm90IGNyZWF0ZSBzb2NrZXQiCitlYyBLQURNX05PX0NPTk4sCSJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIiCitlYyBLQURNX05PX0hFUkUsCSJDb3VsZCBub3QgZmV0Y2ggbG9jYWwgc29ja2V0IGFkZHJlc3MiCitlYyBLQURNX05PX01BU1QsCSJDb3VsZCBub3QgZmV0Y2ggbWFzdGVyIGtleSIKK2VjIEtBRE1fTk9fVkVSSSwJIkNvdWxkIG5vdCB2ZXJpZnkgbWFzdGVyIGtleSIKKworIyAvKiBGcm9tIHRoZSBzZXJ2ZXIgc2lkZSByb3V0aW5lcyAqLworZWMgS0FETV9JTlVTRSwJCSJFbnRyeSBhbHJlYWR5IGV4aXN0cyBpbiBkYXRhYmFzZSIKK2VjIEtBRE1fVUtfU0VSUk9SLAkiRGF0YWJhc2Ugc3RvcmUgZXJyb3IiCitlYyBLQURNX1VLX1JFUlJPUiwJIkRhdGFiYXNlIHJlYWQgZXJyb3IiCitlYyBLQURNX1VOQVVUSCwJCSJJbnN1ZmZpY2llbnQgYWNjZXNzIHRvIHBlcmZvcm0gcmVxdWVzdGVkIG9wZXJhdGlvbiIKKyMgS0FETV9EQVRBIGlzbid0IHJlYWxseSBhbiBlcnJvciwgYnV0Li4uCitlYyBLQURNX0RBVEEsCQkiRGF0YSBpcyBhdmFpbGFibGUgZm9yIHJldHVybiB0byBjbGllbnQiCitlYyBLQURNX05PRU5UUlksCSJObyBzdWNoIGVudHJ5IGluIHRoZSBkYXRhYmFzZSIKKworZWMgS0FETV9OT01FTSwJCSJNZW1vcnkgZXhoYXVzdGVkIgorZWMgS0FETV9OT19IT1NUTkFNRSwJIkNvdWxkIG5vdCBmZXRjaCBzeXN0ZW0gaG9zdG5hbWUiCitlYyBLQURNX05PX0JJTkQsCSJDb3VsZCBub3QgYmluZCBwb3J0IgorZWMgS0FETV9MRU5HVEhfRVJST1IsCSJMZW5ndGggbWlzbWF0Y2ggcHJvYmxlbSIKK2VjIEtBRE1fSUxMX1dJTERDQVJELAkiSWxsZWdhbCB1c2Ugb2Ygd2lsZGNhcmQiCisKK2VjIEtBRE1fREJfSU5VU0UsCSJEYXRhYmFzZSBpcyBsb2NrZWQgb3IgaW4gdXNlLS10cnkgYWdhaW4gbGF0ZXIiCisKK2VjIEtBRE1fSU5TRUNVUkVfUFcsICAgICJJbnNlY3VyZSBwYXNzd29yZCByZWplY3RlZCIKK2VjIEtBRE1fUFdfTUlTTUFUQ0gsICAgICJDbGVhcnRleHQgcGFzc3dvcmQgYW5kIERFUyBrZXkgZGlkIG5vdCBtYXRjaCIKKworZWMgS0FETV9OT1RfU0VSVl9QUklOQywgIkludmFsaWQgcHJpbmNpcGFsIGZvciBjaGFuZ2Ugc3J2dGFiIHJlcXVlc3QiCitlYyBLQURNX0lNTVVUQUJMRSwJIkF0dGVtcHQgZG8gZGVsZXRlIGltbXV0YWJsZSBwcmluY2lwYWwiCisjIHBhc3N3b3JkIHF1YWxpdHkgYmFzaWNhbGx5IHN0b2xlbiBmcm9tIE9WIGxpYmthZG01CitpbmRleCA2NAorcHJlZml4IEtBRE1fUEFTU19RCitlYyBOVUxMLAkJIk51bGwgcGFzc3dvcmRzIGFyZSBub3QgYWxsb3dlZCIKK2VjIFRPT1NIT1JULAkJIlBhc3N3b3JkIGlzIHRvbyBzaG9ydCIKK2VjIENMQVNTLAkJIlRvbyBmZXcgY2hhcmFjdGVyIGNsYXNzZXMgaW4gcGFzc3dvcmQiCitlYyBESUNULAkJIlBhc3N3b3JkIGlzIGluIHRoZSBwYXNzd29yZCBkaWN0aW9uYXJ5IgorZW5kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDIuaCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMmNiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDIuaApAQCAtMCwwICsxLDU4IEBACisvKgorICogaGVpbWRhbDIuaDoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisKKyNkZWZpbmUgS0FETV9SQ1NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNzJMKQorI2RlZmluZSBLQURNX05PX1JFQUxNICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI3MUwpCisjZGVmaW5lIEtBRE1fTk9fQ1JFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjcwTCkKKyNkZWZpbmUgS0FETV9CQURfS0VZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNjlMKQorI2RlZmluZSBLQURNX05PX0VOQ1JZUFQgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI2OEwpCisjZGVmaW5lIEtBRE1fTk9fQVVUSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjY3TCkKKyNkZWZpbmUgS0FETV9XUk9OR19SRUFMTSAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNjZMKQorI2RlZmluZSBLQURNX05PX1JPT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI2NUwpCisjZGVmaW5lIEtBRE1fQkFEX1ZFUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjY0TCkKKyNkZWZpbmUgS0FETV9CQURfQ0hLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNjNMKQorI2RlZmluZSBLQURNX05PX1JFQUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI2MkwpCisjZGVmaW5lIEtBRE1fTk9fT1BDT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjYxTCkKKyNkZWZpbmUgS0FETV9OT19IT1NUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNjBMKQorI2RlZmluZSBLQURNX1VOS19IT1NUICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI1OUwpCisjZGVmaW5lIEtBRE1fTk9fU0VSViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjU4TCkKKyNkZWZpbmUgS0FETV9OT19TT0NLICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNTdMKQorI2RlZmluZSBLQURNX05PX0NPTk4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI1NkwpCisjZGVmaW5lIEtBRE1fTk9fSEVSRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjU1TCkKKyNkZWZpbmUgS0FETV9OT19NQVNUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNTRMKQorI2RlZmluZSBLQURNX05PX1ZFUkkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI1M0wpCisjZGVmaW5lIEtBRE1fSU5VU0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjUyTCkKKyNkZWZpbmUgS0FETV9VS19TRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNTFMKQorI2RlZmluZSBLQURNX1VLX1JFUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI1MEwpCisjZGVmaW5lIEtBRE1fVU5BVVRIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjQ5TCkKKyNkZWZpbmUgS0FETV9EQVRBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNDhMKQorI2RlZmluZSBLQURNX05PRU5UUlkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI0N0wpCisjZGVmaW5lIEtBRE1fTk9NRU0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjQ2TCkKKyNkZWZpbmUgS0FETV9OT19IT1NUTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNDVMKQorI2RlZmluZSBLQURNX05PX0JJTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI0NEwpCisjZGVmaW5lIEtBRE1fTEVOR1RIX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjQzTCkKKyNkZWZpbmUgS0FETV9JTExfV0lMRENBUkQgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyNDJMKQorI2RlZmluZSBLQURNX0RCX0lOVVNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjI0MUwpCisjZGVmaW5lIEtBRE1fSU5TRUNVUkVfUFcgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjQwTCkKKyNkZWZpbmUgS0FETV9QV19NSVNNQVRDSCAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyMzlMKQorI2RlZmluZSBLQURNX05PVF9TRVJWX1BSSU5DICAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjIzOEwpCisjZGVmaW5lIEtBRE1fSU1NVVRBQkxFICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjM3TCkKKyNkZWZpbmUgS0FETV9QQVNTX1FfTlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyMDhMKQorI2RlZmluZSBLQURNX1BBU1NfUV9UT09TSE9SVCAgICAgICAgICAgICAgICAgICAgICgtMTc4MzEyNjIwN0wpCisjZGVmaW5lIEtBRE1fUEFTU19RX0NMQVNTICAgICAgICAgICAgICAgICAgICAgICAgKC0xNzgzMTI2MjA2TCkKKyNkZWZpbmUgS0FETV9QQVNTX1FfRElDVCAgICAgICAgICAgICAgICAgICAgICAgICAoLTE3ODMxMjYyMDVMKQorZXh0ZXJuIGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF9rYWRtX2Vycm9yX3RhYmxlOworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9rYWRtX2Vycm9yX3RhYmxlKHZvaWQpOworCisvKiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEhlaW1kYWwgKi8KK2V4dGVybiB2b2lkIGluaXRpYWxpemVfa2FkbV9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7CisKKyNkZWZpbmUgRVJST1JfVEFCTEVfQkFTRV9rYWRtICgtMTc4MzEyNjI3MkwpCisKKy8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMuLi4gKi8KKyNkZWZpbmUgaW5pdF9rYWRtX2Vycl90YmwgaW5pdGlhbGl6ZV9rYWRtX2Vycm9yX3RhYmxlCisjZGVmaW5lIGthZG1fZXJyX2Jhc2UgRVJST1JfVEFCTEVfQkFTRV9rYWRtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDMuYyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YjliNzMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaGVpbWRhbDMuYwpAQCAtMCwwICsxLDU2IEBACisvKgorICogaGVpbWRhbDMuYzoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBOXyhhKSBhCisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGV4dFtdID0geworCU5fKCJUZXN0IG1lc3NhZ2UgMSIpLAorCU5fKCJUZXN0IG1lc3NhZ2UgMiIpLAorICAgIDAKK307CisKK3N0cnVjdCBlcnJvcl90YWJsZSB7CisgICAgY2hhciBjb25zdCAqIGNvbnN0ICogbXNnczsKKyAgICBsb25nIGJhc2U7CisgICAgaW50IG5fbXNnczsKK307CitzdHJ1Y3QgZXRfbGlzdCB7CisgICAgc3RydWN0IGV0X2xpc3QgKm5leHQ7CisgICAgY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlICogdGFibGU7Cit9OworZXh0ZXJuIHN0cnVjdCBldF9saXN0ICpfZXRfbGlzdDsKKworY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlIGV0X2gzdGVzdF9lcnJvcl90YWJsZSA9IHsgdGV4dCwgNDM3ODc1MjBMLCAyIH07CisKK3N0YXRpYyBzdHJ1Y3QgZXRfbGlzdCBsaW5rID0geyAwLCAwIH07CisKK3ZvaWQgaW5pdGlhbGl6ZV9oM3Rlc3RfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpOwordm9pZCBpbml0aWFsaXplX2gzdGVzdF9lcnJvcl90YWJsZSh2b2lkKTsKKwordm9pZCBpbml0aWFsaXplX2gzdGVzdF9lcnJvcl90YWJsZSh2b2lkKSB7CisgICAgaW5pdGlhbGl6ZV9oM3Rlc3RfZXJyb3JfdGFibGVfcigmX2V0X2xpc3QpOworfQorCisvKiBGb3IgSGVpbWRhbCBjb21wYXRpYmlsaXR5ICovCit2b2lkIGluaXRpYWxpemVfaDN0ZXN0X2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KQoreworICAgIHN0cnVjdCBldF9saXN0ICpldCwgKiplbmQ7CisKKyAgICBmb3IgKGVuZCA9IGxpc3QsIGV0ID0gKmxpc3Q7IGV0OyBlbmQgPSAmZXQtPm5leHQsIGV0ID0gZXQtPm5leHQpCisgICAgICAgIGlmIChldC0+dGFibGUtPm1zZ3MgPT0gdGV4dCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICBldCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGV0X2xpc3QpKTsKKyAgICBpZiAoZXQgPT0gMCkgeworICAgICAgICBpZiAoIWxpbmsudGFibGUpCisgICAgICAgICAgICBldCA9ICZsaW5rOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV0LT50YWJsZSA9ICZldF9oM3Rlc3RfZXJyb3JfdGFibGU7CisgICAgZXQtPm5leHQgPSAwOworICAgICplbmQgPSBldDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMy5ldCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMy5ldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGJkNWMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2hlaW1kYWwzLmV0CkBAIC0wLDAgKzEsNSBAQAorZXJyb3JfdGFibGUgb3ZrIGgzdGVzdAorcHJlZml4IEgzVEVTVAorZWMgVEVTVDEsCSJUZXN0IG1lc3NhZ2UgMSIKK2VjIFRFU1QyLAkiVGVzdCBtZXNzYWdlIDIiCitlbmQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMy5oIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2hlaW1kYWwzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFkMmNiOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9oZWltZGFsMy5oCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBoZWltZGFsMy5oOgorICogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkOyBwbGVhc2UgZG8gbm90IGVkaXQgaXQuCisgKi8KKworI2luY2x1ZGUgPGV0L2NvbV9lcnIuaD4KKworI2RlZmluZSBIM1RFU1RfVEVTVDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg0Mzc4NzUyMEwpCisjZGVmaW5lIEgzVEVTVF9URVNUMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDQzNzg3NTIxTCkKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZXJyb3JfdGFibGUgZXRfaDN0ZXN0X2Vycm9yX3RhYmxlOworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9oM3Rlc3RfZXJyb3JfdGFibGUodm9pZCk7CisKKy8qIEZvciBjb21wYXRpYmlsaXR5IHdpdGggSGVpbWRhbCAqLworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9oM3Rlc3RfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpOworCisjZGVmaW5lIEVSUk9SX1RBQkxFX0JBU0VfaDN0ZXN0ICg0Mzc4NzUyMEwpCisKKy8qIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdmVyc2lvbnMuLi4gKi8KKyNkZWZpbmUgaW5pdF9oM3Rlc3RfZXJyX3RibCBpbml0aWFsaXplX2gzdGVzdF9lcnJvcl90YWJsZQorI2RlZmluZSBoM3Rlc3RfZXJyX2Jhc2UgRVJST1JfVEFCTEVfQkFTRV9oM3Rlc3QKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9pbWFwX2Vyci5jIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2ltYXBfZXJyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY1NzZkMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9pbWFwX2Vyci5jCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBpbWFwX2Vyci5jOgorICogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkOyBwbGVhc2UgZG8gbm90IGVkaXQgaXQuCisgKi8KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjZGVmaW5lIE5fKGEpIGEKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB0ZXh0W10gPSB7CisJTl8oICAgIlN5c3RlbSBJL08gZXJyb3IiKSwKKwlOXyggICAiUGVybWlzc2lvbiBkZW5pZWQiKSwKKwlOXyggICAiT3ZlciBxdW90YSIpLAorCU5fKCAgICJUb28gbWFueSB1c2VyIGZsYWdzIGluIG1haWxib3giKSwKKwlOXyggICAiTWFpbGJveCBoYXMgYW4gaW52YWxpZCBmb3JtYXQiKSwKKwlOXyggICAiT3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gbWFpbGJveCIpLAorCU5fKCAgICJNYWlsYm94IGRvZXMgbm90IGV4aXN0IiksCisJTl8oICAgIk1haWxib3ggYWxyZWFkeSBleGlzdHMiKSwKKwlOXyggICAiSW52YWxpZCBtYWlsYm94IG5hbWUiKSwKKwlOXyggICAiTWFpbGJveCBpcyBsb2NrZWQgYnkgUE9QIHNlcnZlciIpLAorCU5fKCAgICJVbmtub3duL2ludmFsaWQgcGFydGl0aW9uIiksCisJTl8oICAgIkludmFsaWQgaWRlbnRpZmllciIpLAorCU5fKCAgICJNZXNzYWdlIGNvbnRhaW5zIE5VTCBjaGFyYWN0ZXJzIiksCisJTl8oICAgIk1lc3NhZ2UgY29udGFpbnMgYmFyZSBuZXdsaW5lcyIpLAorCU5fKCAgICJNZXNzYWdlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIGhlYWRlcnMiKSwKKwlOXyggICAiTWVzc2FnZSBjb250YWlucyBpbnZhbGlkIGhlYWRlciIpLAorCU5fKCAgICJNZXNzYWdlIGhhcyBubyBoZWFkZXIvYm9keSBzZXBhcmF0b3IiKSwKKwlOXyggICAiUXVvdGEgcm9vdCBkb2VzIG5vdCBleGlzdCIpLAorCU5fKCAgICJVbnJlY29nbml6ZWQgY2hhcmFjdGVyIHNldCIpLAorCU5fKCAgICJJbnZhbGlkIHVzZXIiKSwKKwlOXyggICAiTG9naW4gaW5jb3JyZWN0IiksCisJTl8oICAgIkFub255bW91cyBsb2dpbiBpcyBub3QgcGVybWl0dGVkIiksCisJTl8oICAgIlVuc3VwcG9ydGVkIHF1b3RhIHJlc291cmNlIiksCisJTl8oICAgIk1haWxib3ggaXMgb3ZlciBxdW90YSIpLAorCU5fKCAgICJNYWlsYm94IGlzIGF0ICVkJSUgb2YgcXVvdGEiKSwKKwlOXyggICAiTWVzc2FnZSAlZCBubyBsb25nZXIgZXhpc3RzIiksCisJTl8oICAgIlVuYWJsZSB0byBjaGVja3BvaW50IFxcU2VlbiBzdGF0ZSIpLAorCU5fKCAgICJVbmFibGUgdG8gcHJlc2VydmUgXFxTZWVuIHN0YXRlIiksCisJTl8oICAgIkxPR09VVCByZWNlaXZlZCIpLAorCU5fKCAgICJDb21wbGV0ZWQiKSwKKyAgICAwCit9OworCitzdHJ1Y3QgZXJyb3JfdGFibGUgeworICAgIGNoYXIgY29uc3QgKiBjb25zdCAqIG1zZ3M7CisgICAgbG9uZyBiYXNlOworICAgIGludCBuX21zZ3M7Cit9Oworc3RydWN0IGV0X2xpc3QgeworICAgIHN0cnVjdCBldF9saXN0ICpuZXh0OworICAgIGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSAqIHRhYmxlOworfTsKK2V4dGVybiBzdHJ1Y3QgZXRfbGlzdCAqX2V0X2xpc3Q7CisKK2NvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF9pbWFwX2Vycm9yX3RhYmxlID0geyB0ZXh0LCAtMTkwNDgwOTQ3MkwsIDMwIH07CisKK3N0YXRpYyBzdHJ1Y3QgZXRfbGlzdCBsaW5rID0geyAwLCAwIH07CisKK3ZvaWQgaW5pdGlhbGl6ZV9pbWFwX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KTsKK3ZvaWQgaW5pdGlhbGl6ZV9pbWFwX2Vycm9yX3RhYmxlKHZvaWQpOworCit2b2lkIGluaXRpYWxpemVfaW1hcF9lcnJvcl90YWJsZSh2b2lkKSB7CisgICAgaW5pdGlhbGl6ZV9pbWFwX2Vycm9yX3RhYmxlX3IoJl9ldF9saXN0KTsKK30KKworLyogRm9yIEhlaW1kYWwgY29tcGF0aWJpbGl0eSAqLwordm9pZCBpbml0aWFsaXplX2ltYXBfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpCit7CisgICAgc3RydWN0IGV0X2xpc3QgKmV0LCAqKmVuZDsKKworICAgIGZvciAoZW5kID0gbGlzdCwgZXQgPSAqbGlzdDsgZXQ7IGVuZCA9ICZldC0+bmV4dCwgZXQgPSBldC0+bmV4dCkKKyAgICAgICAgaWYgKGV0LT50YWJsZS0+bXNncyA9PSB0ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgIGV0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZXRfbGlzdCkpOworICAgIGlmIChldCA9PSAwKSB7CisgICAgICAgIGlmICghbGluay50YWJsZSkKKyAgICAgICAgICAgIGV0ID0gJmxpbms7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXQtPnRhYmxlID0gJmV0X2ltYXBfZXJyb3JfdGFibGU7CisgICAgZXQtPm5leHQgPSAwOworICAgICplbmQgPSBldDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9pbWFwX2Vyci5ldCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9pbWFwX2Vyci5ldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2Y1YmJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2ltYXBfZXJyLmV0CkBAIC0wLDAgKzEsMTI3IEBACisjIGltYXBfZXJyLmV0IC0tIEVycm9yIGNvZGVzIGZvciBDeXJ1cyBJTUFQIHNlcnZlciBwcm9ncmFtcworIworIyBDb3B5cmlnaHQgMTk5OCBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQorIyAKKyMgTm8gd2FycmFudGllcywgZWl0aGVyIGV4cHJlc3NlZCBvciBpbXBsaWVkLCBhcmUgbWFkZSByZWdhcmRpbmcgdGhlCisjIG9wZXJhdGlvbiwgdXNlLCBvciByZXN1bHRzIG9mIHRoZSBzb2Z0d2FyZS4KKyMKKyMgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKKyMgZG9jdW1lbnRhdGlvbiBpcyBoZXJlYnkgZ3JhbnRlZCBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgb25seQorIyBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluIGFsbCBjb3BpZXMgYW5kIGluCisjIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbi4KKyMKKyMgUGVybWlzc2lvbiBpcyBhbHNvIGdyYW50ZWQgdG8gSW50ZXJuZXQgU2VydmljZSBQcm92aWRlcnMgYW5kIG90aGVycworIyBlbnRpdGllcyB0byB1c2UgdGhlIHNvZnR3YXJlIGZvciBpbnRlcm5hbCBwdXJwb3Nlcy4KKyMKKyMgVGhlIGRpc3RyaWJ1dGlvbiwgbW9kaWZpY2F0aW9uIG9yIHNhbGUgb2YgYSBwcm9kdWN0IHdoaWNoIHVzZXMgb3IgaXMKKyMgYmFzZWQgb24gdGhlIHNvZnR3YXJlLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCBmb3IgY29tbWVyY2lhbCBwdXJwb3NlcyBvcgorIyBiZW5lZml0cyByZXF1aXJlcyBzcGVjaWZpYywgYWRkaXRpb25hbCBwZXJtaXNzaW9uIGZyb206CisjCisjICBPZmZpY2Ugb2YgVGVjaG5vbG9neSBUcmFuc2ZlcgorIyAgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKKyMgIDUwMDAgRm9yYmVzIEF2ZW51ZQorIyAgUGl0dHNidXJnaCwgUEEgIDE1MjEzLTM4OTAKKyMgICg0MTIpIDI2OC00Mzg3LCBmYXg6ICg0MTIpIDI2OC03Mzk1CisjICB0ZWNoLXRyYW5zZmVyQGFuZHJldy5jbXUuZWR1CisjIAorZXJyb3JfdGFibGUgaW1hcAorCitlYyBJTUFQX0lPRVJST1IsCisgICAiU3lzdGVtIEkvTyBlcnJvciIKKworZWMgSU1BUF9QRVJNSVNTSU9OX0RFTklFRCwKKyAgICJQZXJtaXNzaW9uIGRlbmllZCIKKworZWMgSU1BUF9RVU9UQV9FWENFRURFRCwKKyAgICJPdmVyIHF1b3RhIgorCitlYyBJTUFQX1VTRVJGTEFHX0VYSEFVU1RFRCwKKyAgICJUb28gbWFueSB1c2VyIGZsYWdzIGluIG1haWxib3giCisKK2VjIElNQVBfTUFJTEJPWF9CQURGT1JNQVQsCisgICAiTWFpbGJveCBoYXMgYW4gaW52YWxpZCBmb3JtYXQiCisKK2VjIElNQVBfTUFJTEJPWF9OT1RTVVBQT1JURUQsCisgICAiT3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gbWFpbGJveCIKKworZWMgSU1BUF9NQUlMQk9YX05PTkVYSVNURU5ULAorICAgIk1haWxib3ggZG9lcyBub3QgZXhpc3QiCisKK2VjIElNQVBfTUFJTEJPWF9FWElTVFMsCisgICAiTWFpbGJveCBhbHJlYWR5IGV4aXN0cyIKKworZWMgSU1BUF9NQUlMQk9YX0JBRE5BTUUsCisgICAiSW52YWxpZCBtYWlsYm94IG5hbWUiCisKK2VjIElNQVBfTUFJTEJPWF9QT1BMT0NLRUQsCisgICAiTWFpbGJveCBpcyBsb2NrZWQgYnkgUE9QIHNlcnZlciIKKworZWMgSU1BUF9QQVJUSVRJT05fVU5LTk9XTiwKKyAgICJVbmtub3duL2ludmFsaWQgcGFydGl0aW9uIgorCitlYyBJTUFQX0lOVkFMSURfSURFTlRJRklFUiwKKyAgICJJbnZhbGlkIGlkZW50aWZpZXIiCisKK2VjIElNQVBfTUVTU0FHRV9DT05UQUlOU05VTEwsCisgICAiTWVzc2FnZSBjb250YWlucyBOVUwgY2hhcmFjdGVycyIKKworZWMgSU1BUF9NRVNTQUdFX0NPTlRBSU5TTkwsCisgICAiTWVzc2FnZSBjb250YWlucyBiYXJlIG5ld2xpbmVzIgorCitlYyBJTUFQX01FU1NBR0VfQ09OVEFJTlM4QklULAorICAgIk1lc3NhZ2UgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gaGVhZGVycyIKKworZWMgSU1BUF9NRVNTQUdFX0JBREhFQURFUiwKKyAgICJNZXNzYWdlIGNvbnRhaW5zIGludmFsaWQgaGVhZGVyIgorCitlYyBJTUFQX01FU1NBR0VfTk9CTEFOS0xJTkUsCisgICAiTWVzc2FnZSBoYXMgbm8gaGVhZGVyL2JvZHkgc2VwYXJhdG9yIgorCitlYyBJTUFQX1FVT1RBUk9PVF9OT05FWElTVEVOVCwKKyAgICJRdW90YSByb290IGRvZXMgbm90IGV4aXN0IgorCisjIEZvbGxvd2luZyBvbmx5IHVzZWQgZm9yIGludGVybmF0aW9uYWxpemF0aW9uIG9mIGVycm9yIG1lc3NhZ2VzCisKK2VjIElNQVBfVU5SRUNPR05JWkVEX0NIQVJTRVQsCisgICAiVW5yZWNvZ25pemVkIGNoYXJhY3RlciBzZXQiCisKK2VjIElNQVBfSU5WQUxJRF9VU0VSLAorICAgIkludmFsaWQgdXNlciIKKworZWMgSU1BUF9JTlZBTElEX0xPR0lOLAorICAgIkxvZ2luIGluY29ycmVjdCIKKworZWMgSU1BUF9BTk9OWU1PVVNfTk9UX1BFUk1JVFRFRCwKKyAgICJBbm9ueW1vdXMgbG9naW4gaXMgbm90IHBlcm1pdHRlZCIKKworZWMgSU1BUF9VTlNVUFBPUlRFRF9RVU9UQSwKKyAgICJVbnN1cHBvcnRlZCBxdW90YSByZXNvdXJjZSIKKworIyBGb2xsb3dpbmcgdXNlZCBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24gb2YgdW50YWdnZWQgT0svTk8gcmVzcG9uc2VzCisKK2VjIElNQVBfTk9fT1ZFUlFVT1RBLAorICAgIk1haWxib3ggaXMgb3ZlciBxdW90YSIKKworZWMgSU1BUF9OT19DTE9TRVFVT1RBLAorICAgIk1haWxib3ggaXMgYXQgJWQlJSBvZiBxdW90YSIKKworZWMgSU1BUF9OT19NU0dHT05FLAorICAgIk1lc3NhZ2UgJWQgbm8gbG9uZ2VyIGV4aXN0cyIKKworZWMgSU1BUF9OT19DSEVDS1NFRU4sCisgICAiVW5hYmxlIHRvIGNoZWNrcG9pbnQgXFxTZWVuIHN0YXRlIgorCitlYyBJTUFQX05PX0NIRUNLUFJFU0VSVkUsCisgICAiVW5hYmxlIHRvIHByZXNlcnZlIFxcU2VlbiBzdGF0ZSIKKworIyBGb2xsb3dpbmcgdXNlZCBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24gb2YgdW50YWdnZWQgQllFIHJlc3BvbnNlCisKK2VjIElNQVBfQllFX0xPR09VVCwKKyAgICJMT0dPVVQgcmVjZWl2ZWQiCisKKyMgRm9sbG93aW5nIHVzZWQgZm9yIGludGVybmF0aW9uYWxpemF0aW9uIG9mIHRhZ2dlZCBPSyByZXNwb25zZQorCitlYyBJTUFQX09LX0NPTVBMRVRFRCwKKyAgICJDb21wbGV0ZWQiCisKK2VuZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2ltYXBfZXJyLmggYi9lMmZzcHJvZ3MvbGliL2V0L3Rlc3RfY2FzZXMvaW1hcF9lcnIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzY2NGM0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL2ltYXBfZXJyLmgKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIGltYXBfZXJyLmg6CisgKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQ7IHBsZWFzZSBkbyBub3QgZWRpdCBpdC4KKyAqLworCisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorCisjZGVmaW5lIElNQVBfSU9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDcyTCkKKyNkZWZpbmUgSU1BUF9QRVJNSVNTSU9OX0RFTklFRCAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NzFMKQorI2RlZmluZSBJTUFQX1FVT1RBX0VYQ0VFREVEICAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ3MEwpCisjZGVmaW5lIElNQVBfVVNFUkZMQUdfRVhIQVVTVEVEICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDY5TCkKKyNkZWZpbmUgSU1BUF9NQUlMQk9YX0JBREZPUk1BVCAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NjhMKQorI2RlZmluZSBJTUFQX01BSUxCT1hfTk9UU1VQUE9SVEVEICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ2N0wpCisjZGVmaW5lIElNQVBfTUFJTEJPWF9OT05FWElTVEVOVCAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDY2TCkKKyNkZWZpbmUgSU1BUF9NQUlMQk9YX0VYSVNUUyAgICAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NjVMKQorI2RlZmluZSBJTUFQX01BSUxCT1hfQkFETkFNRSAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ2NEwpCisjZGVmaW5lIElNQVBfTUFJTEJPWF9QT1BMT0NLRUQgICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDYzTCkKKyNkZWZpbmUgSU1BUF9QQVJUSVRJT05fVU5LTk9XTiAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NjJMKQorI2RlZmluZSBJTUFQX0lOVkFMSURfSURFTlRJRklFUiAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ2MUwpCisjZGVmaW5lIElNQVBfTUVTU0FHRV9DT05UQUlOU05VTEwgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDYwTCkKKyNkZWZpbmUgSU1BUF9NRVNTQUdFX0NPTlRBSU5TTkwgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NTlMKQorI2RlZmluZSBJTUFQX01FU1NBR0VfQ09OVEFJTlM4QklUICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ1OEwpCisjZGVmaW5lIElNQVBfTUVTU0FHRV9CQURIRUFERVIgICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDU3TCkKKyNkZWZpbmUgSU1BUF9NRVNTQUdFX05PQkxBTktMSU5FICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NTZMKQorI2RlZmluZSBJTUFQX1FVT1RBUk9PVF9OT05FWElTVEVOVCAgICAgICAgICAgICAgICgtMTkwNDgwOTQ1NUwpCisjZGVmaW5lIElNQVBfVU5SRUNPR05JWkVEX0NIQVJTRVQgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDU0TCkKKyNkZWZpbmUgSU1BUF9JTlZBTElEX1VTRVIgICAgICAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NTNMKQorI2RlZmluZSBJTUFQX0lOVkFMSURfTE9HSU4gICAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ1MkwpCisjZGVmaW5lIElNQVBfQU5PTllNT1VTX05PVF9QRVJNSVRURUQgICAgICAgICAgICAgKC0xOTA0ODA5NDUxTCkKKyNkZWZpbmUgSU1BUF9VTlNVUFBPUlRFRF9RVU9UQSAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NTBMKQorI2RlZmluZSBJTUFQX05PX09WRVJRVU9UQSAgICAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ0OUwpCisjZGVmaW5lIElNQVBfTk9fQ0xPU0VRVU9UQSAgICAgICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDQ4TCkKKyNkZWZpbmUgSU1BUF9OT19NU0dHT05FICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NDdMKQorI2RlZmluZSBJTUFQX05PX0NIRUNLU0VFTiAgICAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ0NkwpCisjZGVmaW5lIElNQVBfTk9fQ0hFQ0tQUkVTRVJWRSAgICAgICAgICAgICAgICAgICAgKC0xOTA0ODA5NDQ1TCkKKyNkZWZpbmUgSU1BUF9CWUVfTE9HT1VUICAgICAgICAgICAgICAgICAgICAgICAgICAoLTE5MDQ4MDk0NDRMKQorI2RlZmluZSBJTUFQX09LX0NPTVBMRVRFRCAgICAgICAgICAgICAgICAgICAgICAgICgtMTkwNDgwOTQ0M0wpCitleHRlcm4gY29uc3Qgc3RydWN0IGVycm9yX3RhYmxlIGV0X2ltYXBfZXJyb3JfdGFibGU7CitleHRlcm4gdm9pZCBpbml0aWFsaXplX2ltYXBfZXJyb3JfdGFibGUodm9pZCk7CisKKy8qIEZvciBjb21wYXRpYmlsaXR5IHdpdGggSGVpbWRhbCAqLworZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9pbWFwX2Vycm9yX3RhYmxlX3Ioc3RydWN0IGV0X2xpc3QgKipsaXN0KTsKKworI2RlZmluZSBFUlJPUl9UQUJMRV9CQVNFX2ltYXAgKC0xOTA0ODA5NDcyTCkKKworLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy4uLiAqLworI2RlZmluZSBpbml0X2ltYXBfZXJyX3RibCBpbml0aWFsaXplX2ltYXBfZXJyb3JfdGFibGUKKyNkZWZpbmUgaW1hcF9lcnJfYmFzZSBFUlJPUl9UQUJMRV9CQVNFX2ltYXAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuYyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGFiMWEzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL3NpbXBsZS5jCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBzaW1wbGUuYzoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBOXyhhKSBhCisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdGV4dFtdID0geworCU5fKAkJCSJDYW4ndCByZWFkIHRpY2tldCBmaWxlIiksCisJTl8oCQkJIkNhbid0IGZpbmQgdGlja2V0IG9yIFRHVCIpLAorCU5fKAkJCSJUR1QgZXhwaXJlZCIpLAorCU5fKAkJCSJDYW4ndCBkZWNvZGUgYXV0aGVudGljYXRvciIpLAorCU5fKAkJCSJUaWNrZXQgZXhwaXJlZCIpLAorCU5fKAkJCSJSZXBlYXRlZCByZXF1ZXN0IiksCisJTl8oCQkJIlRoZSB0aWNrZXQgaXNuJ3QgZm9yIHVzIiksCisJTl8oCQkJIlJlcXVlc3QgaXMgaW5jb25zaXN0ZW50IiksCisJTl8oCQkJIkRlbHRhLVQgdG9vIGJpZyIpLAorCU5fKAkJCSJJbmNvcnJlY3QgbmV0IGFkZHJlc3MiKSwKKwlOXygJCQkiUHJvdG9jb2wgdmVyc2lvbiBtaXNtYXRjaCIpLAorCU5fKAkJCSJJbnZhbGlkIG1lc3NhZ2UgdHlwZSIpLAorCU5fKAkJCSJNZXNzYWdlIHN0cmVhbSBtb2RpZmllZCIpLAorCU5fKAkJCSJNZXNzYWdlIG91dCBvZiBvcmRlciIpLAorCU5fKAkJCSJVbmF1dGhvcml6ZWQgcmVxdWVzdCIpLAorCU5fKAkJCSJDdXJyZW50IHBhc3N3b3JkIGlzIG51bGwiKSwKKwlOXygJCQkiSW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQiKSwKKwlOXygJCQkiUHJvdG9jb2wgZXJyb3IiKSwKKwlOXygJCQkiRXJyb3IgcmV0dXJuZWQgYnkgS0RDIiksCisJTl8oCQkJIk51bGwgdGlja2V0IHJldHVybmVkIGJ5IEtEQyIpLAorCU5fKAkJCSJSZXRyeSBjb3VudCBleGNlZWRlZCIpLAorCU5fKAkJCSJDYW4ndCBzZW5kIHJlcXVlc3QiKSwKKyAgICAwCit9OworCitzdHJ1Y3QgZXJyb3JfdGFibGUgeworICAgIGNoYXIgY29uc3QgKiBjb25zdCAqIG1zZ3M7CisgICAgbG9uZyBiYXNlOworICAgIGludCBuX21zZ3M7Cit9Oworc3RydWN0IGV0X2xpc3QgeworICAgIHN0cnVjdCBldF9saXN0ICpuZXh0OworICAgIGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSAqIHRhYmxlOworfTsKK2V4dGVybiBzdHJ1Y3QgZXRfbGlzdCAqX2V0X2xpc3Q7CisKK2NvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF9rcmJfZXJyb3JfdGFibGUgPSB7IHRleHQsIDM5NTI1Mzc2TCwgMjIgfTsKKworc3RhdGljIHN0cnVjdCBldF9saXN0IGxpbmsgPSB7IDAsIDAgfTsKKwordm9pZCBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7Cit2b2lkIGluaXRpYWxpemVfa3JiX2Vycm9yX3RhYmxlKHZvaWQpOworCit2b2lkIGluaXRpYWxpemVfa3JiX2Vycm9yX3RhYmxlKHZvaWQpIHsKKyAgICBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZV9yKCZfZXRfbGlzdCk7Cit9CisKKy8qIEZvciBIZWltZGFsIGNvbXBhdGliaWxpdHkgKi8KK3ZvaWQgaW5pdGlhbGl6ZV9rcmJfZXJyb3JfdGFibGVfcihzdHJ1Y3QgZXRfbGlzdCAqKmxpc3QpCit7CisgICAgc3RydWN0IGV0X2xpc3QgKmV0LCAqKmVuZDsKKworICAgIGZvciAoZW5kID0gbGlzdCwgZXQgPSAqbGlzdDsgZXQ7IGVuZCA9ICZldC0+bmV4dCwgZXQgPSBldC0+bmV4dCkKKyAgICAgICAgaWYgKGV0LT50YWJsZS0+bXNncyA9PSB0ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAgIGV0ID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZXRfbGlzdCkpOworICAgIGlmIChldCA9PSAwKSB7CisgICAgICAgIGlmICghbGluay50YWJsZSkKKyAgICAgICAgICAgIGV0ID0gJmxpbms7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXQtPnRhYmxlID0gJmV0X2tyYl9lcnJvcl90YWJsZTsKKyAgICBldC0+bmV4dCA9IDA7CisgICAgKmVuZCA9IGV0OworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL3NpbXBsZS5ldCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM3Yjc3ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuZXQKQEAgLTAsMCArMSw2OSBAQAorCWVycm9yX3RhYmxlCWtyYgorCisJZXJyb3JfY29kZQlLUkJfTUtfQVBfVEtGSUwsCisJCQkiQ2FuJ3QgcmVhZCB0aWNrZXQgZmlsZSIKKworCWVjCQlLUkJfTUtfQVBfTk9US1QsCisJCQkiQ2FuJ3QgZmluZCB0aWNrZXQgb3IgVEdUIgorCisJZWMJCUtSQl9NS19BUF9UR1RFWFAsCisJCQkiVEdUIGV4cGlyZWQiCisKKwllYwkJS1JCX1JEX0FQX1VOREVDLAorCQkJIkNhbid0IGRlY29kZSBhdXRoZW50aWNhdG9yIgorCisJZWMJCUtSQl9SRF9BUF9FWFAsCisJCQkiVGlja2V0IGV4cGlyZWQiCisKKwllYwkJS1JCX1JEX0FQX1JFUEVBVCwKKwkJCSJSZXBlYXRlZCByZXF1ZXN0IgorCisJZWMJCUtSQl9SRF9BUF9OT1RfVVMsCisJCQkiVGhlIHRpY2tldCBpc24ndCBmb3IgdXMiCisKKwllYwkJS1JCX1JEX0FQX0lOQ09OLAorCQkJIlJlcXVlc3QgaXMgaW5jb25zaXN0ZW50IgorCisJZWMJCUtSQl9SRF9BUF9USU1FLAorCQkJIkRlbHRhLVQgdG9vIGJpZyIKKworCWVjCQlLUkJfUkRfQVBfQkFERCwKKwkJCSJJbmNvcnJlY3QgbmV0IGFkZHJlc3MiCisKKwllYwkJS1JCX1JEX0FQX1ZFUlNJT04sCisJCQkiUHJvdG9jb2wgdmVyc2lvbiBtaXNtYXRjaCIKKworCWVjCQlLUkJfUkRfQVBfTVNHX1RZUEUsCisJCQkiSW52YWxpZCBtZXNzYWdlIHR5cGUiCisKKwllYwkJS1JCX1JEX0FQX01PRElGSUVELAorCQkJIk1lc3NhZ2Ugc3RyZWFtIG1vZGlmaWVkIgorCisJZWMJCUtSQl9SRF9BUF9PUkRFUiwKKwkJCSJNZXNzYWdlIG91dCBvZiBvcmRlciIKKworCWVjCQlLUkJfUkRfQVBfVU5BVVRIT1IsCisJCQkiVW5hdXRob3JpemVkIHJlcXVlc3QiCisKKwllYwkJS1JCX0dUX1BXX05VTEwsCisJCQkiQ3VycmVudCBwYXNzd29yZCBpcyBudWxsIgorCisJZWMJCUtSQl9HVF9QV19CQURQVywKKwkJCSJJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZCIKKworCWVjCQlLUkJfR1RfUFdfUFJPVCwKKwkJCSJQcm90b2NvbCBlcnJvciIKKworCWVjCQlLUkJfR1RfUFdfS0RDRVJSLAorCQkJIkVycm9yIHJldHVybmVkIGJ5IEtEQyIKKworCWVjCQlLUkJfR1RfUFdfTlVMTFRLVCwKKwkJCSJOdWxsIHRpY2tldCByZXR1cm5lZCBieSBLREMiCisKKwllYwkJS1JCX1NLRENfUkVUUlksCisJCQkiUmV0cnkgY291bnQgZXhjZWVkZWQiCisKKwllYwkJS1JCX1NLRENfQ0FOVCwKKwkJCSJDYW4ndCBzZW5kIHJlcXVlc3QiCisKKwllbmQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuaCBiL2UyZnNwcm9ncy9saWIvZXQvdGVzdF9jYXNlcy9zaW1wbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzgwMGI3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9ldC90ZXN0X2Nhc2VzL3NpbXBsZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBzaW1wbGUuaDoKKyAqIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZDsgcGxlYXNlIGRvIG5vdCBlZGl0IGl0LgorICovCisKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisKKyNkZWZpbmUgS1JCX01LX0FQX1RLRklMICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzNzZMKQorI2RlZmluZSBLUkJfTUtfQVBfTk9US1QgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM3N0wpCisjZGVmaW5lIEtSQl9NS19BUF9UR1RFWFAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzc4TCkKKyNkZWZpbmUgS1JCX1JEX0FQX1VOREVDICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzNzlMKQorI2RlZmluZSBLUkJfUkRfQVBfRVhQICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4MEwpCisjZGVmaW5lIEtSQl9SRF9BUF9SRVBFQVQgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1MzgxTCkKKyNkZWZpbmUgS1JCX1JEX0FQX05PVF9VUyAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODJMKQorI2RlZmluZSBLUkJfUkRfQVBfSU5DT04gICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4M0wpCisjZGVmaW5lIEtSQl9SRF9BUF9USU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzg0TCkKKyNkZWZpbmUgS1JCX1JEX0FQX0JBREQgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODVMKQorI2RlZmluZSBLUkJfUkRfQVBfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4NkwpCisjZGVmaW5lIEtSQl9SRF9BUF9NU0dfVFlQRSAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzg3TCkKKyNkZWZpbmUgS1JCX1JEX0FQX01PRElGSUVEICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzODhMKQorI2RlZmluZSBLUkJfUkRfQVBfT1JERVIgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM4OUwpCisjZGVmaW5lIEtSQl9SRF9BUF9VTkFVVEhPUiAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1MzkwTCkKKyNkZWZpbmUgS1JCX0dUX1BXX05VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzOTFMKQorI2RlZmluZSBLUkJfR1RfUFdfQkFEUFcgICAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM5MkwpCisjZGVmaW5lIEtSQl9HVF9QV19QUk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1MzkzTCkKKyNkZWZpbmUgS1JCX0dUX1BXX0tEQ0VSUiAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzOTRMKQorI2RlZmluZSBLUkJfR1RfUFdfTlVMTFRLVCAgICAgICAgICAgICAgICAgICAgICAgICgzOTUyNTM5NUwpCisjZGVmaW5lIEtSQl9TS0RDX1JFVFJZICAgICAgICAgICAgICAgICAgICAgICAgICAgKDM5NTI1Mzk2TCkKKyNkZWZpbmUgS1JCX1NLRENfQ0FOVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzk1MjUzOTdMKQorZXh0ZXJuIGNvbnN0IHN0cnVjdCBlcnJvcl90YWJsZSBldF9rcmJfZXJyb3JfdGFibGU7CitleHRlcm4gdm9pZCBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZSh2b2lkKTsKKworLyogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBIZWltZGFsICovCitleHRlcm4gdm9pZCBpbml0aWFsaXplX2tyYl9lcnJvcl90YWJsZV9yKHN0cnVjdCBldF9saXN0ICoqbGlzdCk7CisKKyNkZWZpbmUgRVJST1JfVEFCTEVfQkFTRV9rcmIgKDM5NTI1Mzc2TCkKKworLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucy4uLiAqLworI2RlZmluZSBpbml0X2tyYl9lcnJfdGJsIGluaXRpYWxpemVfa3JiX2Vycm9yX3RhYmxlCisjZGVmaW5lIGtyYl9lcnJfYmFzZSBFUlJPUl9UQUJMRV9CQVNFX2tyYgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9ldC90ZXhpbmZvLnRleCBiL2UyZnNwcm9ncy9saWIvZXQvdGV4aW5mby50ZXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRkZDAxNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdGV4aW5mby50ZXgKQEAgLTAsMCArMSw3MjI2IEBACislIHRleGluZm8udGV4IC0tIFRlWCBtYWNyb3MgdG8gaGFuZGxlIFRleGluZm8gZmlsZXMuCislCislIExvYWQgcGxhaW4gaWYgbmVjZXNzYXJ5LCBpLmUuLCBpZiBydW5uaW5nIHVuZGVyIGluaXRleC4KK1xleHBhbmRhZnRlclxpZnhcY3NuYW1lIGZtdG5hbWVcZW5kY3NuYW1lXHJlbGF4XGlucHV0IHBsYWluXGZpCislCitcZGVmXHRleGluZm92ZXJzaW9uezIwMDYtMDItMTMuMTZ9CislCislIENvcHlyaWdodCAoQykgMTk4NSwgMTk4NiwgMTk4OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwKKyUgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlCislIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyUKKyUgVGhpcyB0ZXhpbmZvLnRleCBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorJSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworJSBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0CislIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyUKKyUgVGhpcyB0ZXhpbmZvLnRleCBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorJSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CislIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCislIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyUKKyUgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyUgYWxvbmcgd2l0aCB0aGlzIHRleGluZm8udGV4IGZpbGU7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZQorJSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorJSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyUKKyUgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgcmVhZCBieSBUZVggd2hlbiBwcm9jZXNzaW5nCislIGEgVGV4aW5mbyBzb3VyY2UgZG9jdW1lbnQsIHlvdSBtYXkgdXNlIHRoZSByZXN1bHQgd2l0aG91dAorJSByZXN0cmljdGlvbi4gIChUaGlzIGhhcyBiZWVuIG91ciBpbnRlbnQgc2luY2UgVGV4aW5mbyB3YXMgaW52ZW50ZWQuKQorJQorJSBQbGVhc2UgdHJ5IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0ZXhpbmZvLnRleCBiZWZvcmUgc3VibWl0dGluZyBidWcKKyUgcmVwb3J0czsgeW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb206CislICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vICh0aGUgVGV4aW5mbyBob21lIHBhZ2UpLCBvcgorJSAgIGZ0cDovL3R1Zy5vcmcvdGV4L3RleGluZm8udGV4CislICAgICAoYW5kIGFsbCBDVEFOIG1pcnJvcnMsIHNlZSBodHRwOi8vd3d3LmN0YW4ub3JnKS4KKyUgVGhlIHRleGluZm8udGV4IGluIGFueSBnaXZlbiBkaXN0cmlidXRpb24gY291bGQgd2VsbCBiZSBvdXQKKyUgb2YgZGF0ZSwgc28gaWYgdGhhdCdzIHdoYXQgeW91J3JlIHVzaW5nLCBwbGVhc2UgY2hlY2suCislCislIFNlbmQgYnVnIHJlcG9ydHMgdG8gYnVnLXRleGluZm9AZ251Lm9yZy4gIFBsZWFzZSBpbmNsdWRlIGluY2x1ZGluZyBhCislIGNvbXBsZXRlIGRvY3VtZW50IGluIGVhY2ggYnVnIHJlcG9ydCB3aXRoIHdoaWNoIHdlIGNhbiByZXByb2R1Y2UgdGhlCislIHByb2JsZW0uICBQYXRjaGVzIGFyZSwgb2YgY291cnNlLCBncmVhdGx5IGFwcHJlY2lhdGVkLgorJQorJSBUbyBwcm9jZXNzIGEgVGV4aW5mbyBtYW51YWwgd2l0aCBUZVgsIGl0J3MgbW9zdCByZWxpYWJsZSB0byB1c2UgdGhlCislIHRleGkyZHZpIHNoZWxsIHNjcmlwdCB0aGF0IGNvbWVzIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gIEZvciBhIHNpbXBsZQorJSBtYW51YWwgZm9vLnRleGksIGhvd2V2ZXIsIHlvdSBjYW4gZ2V0IGF3YXkgd2l0aCB0aGlzOgorJSAgIHRleCBmb28udGV4aQorJSAgIHRleGluZGV4IGZvby4/PworJSAgIHRleCBmb28udGV4aQorJSAgIHRleCBmb28udGV4aQorJSAgIGR2aXBzIGZvby5kdmkgLW8gICMgb3Igd2hhdGV2ZXI7IHRoaXMgbWFrZXMgZm9vLnBzLgorJSBUaGUgZXh0cmEgVGVYIHJ1bnMgZ2V0IHRoZSBjcm9zcy1yZWZlcmVuY2UgaW5mb3JtYXRpb24gY29ycmVjdC4KKyUgU29tZXRpbWVzIG9uZSBydW4gYWZ0ZXIgdGV4aW5kZXggc3VmZmljZXMsIGFuZCBzb21ldGltZXMgeW91IG5lZWQgbW9yZQorJSB0aGFuIHR3bzsgdGV4aTJkdmkgZG9lcyBpdCBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeS4KKyUKKyUgSXQgaXMgcG9zc2libGUgdG8gYWRhcHQgdGV4aW5mby50ZXggZm9yIG90aGVyIGxhbmd1YWdlcywgdG8gc29tZQorJSBleHRlbnQuICBZb3UgY2FuIGdldCB0aGUgZXhpc3RpbmcgbGFuZ3VhZ2Utc3BlY2lmaWMgZmlsZXMgZnJvbSB0aGUKKyUgZnVsbCBUZXhpbmZvIGRpc3RyaWJ1dGlvbi4KKyUKKyUgVGhlIEdOVSBUZXhpbmZvIGhvbWUgcGFnZSBpcyBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby4KKworCitcbWVzc2FnZXtMb2FkaW5nIHRleGluZm8gW3ZlcnNpb24gXHRleGluZm92ZXJzaW9uXTp9CisKKyUgSWYgaW4gYSAuZm10IGZpbGUsIHByaW50IHRoZSB2ZXJzaW9uIG51bWJlcgorJSBhbmQgdHVybiBvbiBhY3RpdmUgY2hhcmFjdGVycyB0aGF0IHdlIGNvdWxkbid0IGRvIGVhcmxpZXIgYmVjYXVzZQorJSB0aGV5IG1pZ2h0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIGlucHV0IGZpbGUgbmFtZS4KK1xldmVyeWpvYntcbWVzc2FnZXtbVGV4aW5mbyB2ZXJzaW9uIFx0ZXhpbmZvdmVyc2lvbl19JQorICBcY2F0Y29kZWArPVxhY3RpdmUgXGNhdGNvZGVgXF89XGFjdGl2ZX0KKworXG1lc3NhZ2V7QmFzaWNzLH0KK1xjaGFyZGVmXG90aGVyPTEyCisKKyUgV2UgbmV2ZXIgd2FudCBwbGFpbidzIFxvdXRlciBkZWZpbml0aW9uIG9mIFwrIGluIFRleGluZm8uCislIEZvciBAdGV4LCB3ZSBjYW4gdXNlIFx0YWJhbGlnbi4KK1xsZXRcKyA9IFxyZWxheAorCislIFNhdmUgc29tZSBwbGFpbiB0ZXggbWFjcm9zIHdob3NlIG5hbWVzIHdlIHdpbGwgcmVkZWZpbmUuCitcbGV0XHB0ZXhiPVxiCitcbGV0XHB0ZXhidWxsZXQ9XGJ1bGxldAorXGxldFxwdGV4Yz1cYworXGxldFxwdGV4Y29tbWE9XCwKK1xsZXRccHRleGRvdD1cLgorXGxldFxwdGV4ZG90cz1cZG90cworXGxldFxwdGV4ZW5kPVxlbmQKK1xsZXRccHRleGVxdWl2PVxlcXVpdgorXGxldFxwdGV4ZXhjbGFtPVwhCitcbGV0XHB0ZXhmb290bm90ZT1cZm9vdG5vdGUKK1xsZXRccHRleGd0cj0+CitcbGV0XHB0ZXhoYXQ9XgorXGxldFxwdGV4aT1caQorXGxldFxwdGV4aW5kZW50PVxpbmRlbnQKK1xsZXRccHRleGluc2VydD1caW5zZXJ0CitcbGV0XHB0ZXhsYnJhY2U9XHsKK1xsZXRccHRleGxlc3M9PAorXGxldFxwdGV4bmV3d3JpdGVcbmV3d3JpdGUKK1xsZXRccHRleG5vaW5kZW50PVxub2luZGVudAorXGxldFxwdGV4cGx1cz0rCitcbGV0XHB0ZXhyYnJhY2U9XH0KK1xsZXRccHRleHNsYXNoPVwvCitcbGV0XHB0ZXhzdGFyPVwqCitcbGV0XHB0ZXh0PVx0CisKKyUgSWYgdGhpcyBjaGFyYWN0ZXIgYXBwZWFycyBpbiBhbiBlcnJvciBtZXNzYWdlIG9yIGhlbHAgc3RyaW5nLCBpdAorJSBzdGFydHMgYSBuZXcgbGluZSBpbiB0aGUgb3V0cHV0LgorXG5ld2xpbmVjaGFyID0gYF5eSgorCislIFVzZSBUZVggMy4wJ3MgXGlucHV0bGluZW5vIHRvIGdldCB0aGUgbGluZSBudW1iZXIsIGZvciBiZXR0ZXIgZXJyb3IKKyUgbWVzc2FnZXMsIGJ1dCBpZiB3ZSdyZSB1c2luZyBhbiBvbGQgdmVyc2lvbiBvZiBUZVgsIGRvbid0IGRvIGFueXRoaW5nLgorJQorXGlmeFxpbnB1dGxpbmVub1x0aGlzaXN1bmRlZmluZWQKKyAgXGxldFxsaW5lbnVtYmVyID0gXGVtcHR5ICUgUHJlLTMuMC4KK1xlbHNlCisgIFxkZWZcbGluZW51bWJlcntsLlx0aGVcaW5wdXRsaW5lbm86XHNwYWNlfQorXGZpCisKKyUgU2V0IHVwIGZpeGVkIHdvcmRzIGZvciBFbmdsaXNoIGlmIG5vdCBhbHJlYWR5IHNldC4KK1xpZnhccHV0d29yZEFwcGVuZGl4XHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZEFwcGVuZGl4e0FwcGVuZGl4fVxmaQorXGlmeFxwdXR3b3JkQ2hhcHRlclx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkQ2hhcHRlcntDaGFwdGVyfVxmaQorXGlmeFxwdXR3b3JkZmlsZVx1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkZmlsZXtmaWxlfVxmaQorXGlmeFxwdXR3b3JkaW5cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3JkaW57aW59XGZpCitcaWZ4XHB1dHdvcmRJbmRleElzRW1wdHlcdW5kZWZpbmVkICAgICBcZ2RlZlxwdXR3b3JkSW5kZXhJc0VtcHR5eyhJbmRleCBpcyBlbXB0eSl9XGZpCitcaWZ4XHB1dHdvcmRJbmRleE5vbmV4aXN0ZW50XHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5kZXhOb25leGlzdGVudHsoSW5kZXggaXMgbm9uZXhpc3RlbnQpfVxmaQorXGlmeFxwdXR3b3JkSW5mb1x1bmRlZmluZWQgICAgICBcZ2RlZlxwdXR3b3JkSW5mb3tJbmZvfVxmaQorXGlmeFxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9me0luc3RhbmNlIFZhcmlhYmxlIG9mfVxmaQorXGlmeFxwdXR3b3JkTWV0aG9kb25cdW5kZWZpbmVkICBcZ2RlZlxwdXR3b3JkTWV0aG9kb257TWV0aG9kIG9ufVxmaQorXGlmeFxwdXR3b3JkTm9UaXRsZVx1bmRlZmluZWQgICBcZ2RlZlxwdXR3b3JkTm9UaXRsZXtObyBUaXRsZX1cZmkKK1xpZnhccHV0d29yZG9mXHVuZGVmaW5lZCAgICAgICAgXGdkZWZccHV0d29yZG9me29mfVxmaQorXGlmeFxwdXR3b3Jkb25cdW5kZWZpbmVkICAgICAgICBcZ2RlZlxwdXR3b3Jkb257b259XGZpCitcaWZ4XHB1dHdvcmRwYWdlXHVuZGVmaW5lZCAgICAgIFxnZGVmXHB1dHdvcmRwYWdle3BhZ2V9XGZpCitcaWZ4XHB1dHdvcmRzZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRzZWN0aW9ue3NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRTZWN0aW9uXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmRTZWN0aW9ue1NlY3Rpb259XGZpCitcaWZ4XHB1dHdvcmRzZWVcdW5kZWZpbmVkICAgICAgIFxnZGVmXHB1dHdvcmRzZWV7c2VlfVxmaQorXGlmeFxwdXR3b3JkU2VlXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkU2Vle1NlZX1cZmkKK1xpZnhccHV0d29yZFNob3J0VE9DXHVuZGVmaW5lZCAgXGdkZWZccHV0d29yZFNob3J0VE9De1Nob3J0IENvbnRlbnRzfVxmaQorXGlmeFxwdXR3b3JkVE9DXHVuZGVmaW5lZCAgICAgICBcZ2RlZlxwdXR3b3JkVE9De1RhYmxlIG9mIENvbnRlbnRzfVxmaQorJQorXGlmeFxwdXR3b3JkTUphblx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1KYW57SmFudWFyeX1cZmkKK1xpZnhccHV0d29yZE1GZWJcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNRmVie0ZlYnJ1YXJ5fVxmaQorXGlmeFxwdXR3b3JkTU1hclx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1NYXJ7TWFyY2h9XGZpCitcaWZ4XHB1dHdvcmRNQXByXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUFwcntBcHJpbH1cZmkKK1xpZnhccHV0d29yZE1NYXlcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTWF5e01heX1cZmkKK1xpZnhccHV0d29yZE1KdW5cdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNSnVue0p1bmV9XGZpCitcaWZ4XHB1dHdvcmRNSnVsXHVuZGVmaW5lZCBcZ2RlZlxwdXR3b3JkTUp1bHtKdWx5fVxmaQorXGlmeFxwdXR3b3JkTUF1Z1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1BdWd7QXVndXN0fVxmaQorXGlmeFxwdXR3b3JkTVNlcFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1TZXB7U2VwdGVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTU9jdFx1bmRlZmluZWQgXGdkZWZccHV0d29yZE1PY3R7T2N0b2Jlcn1cZmkKK1xpZnhccHV0d29yZE1Ob3ZcdW5kZWZpbmVkIFxnZGVmXHB1dHdvcmRNTm92e05vdmVtYmVyfVxmaQorXGlmeFxwdXR3b3JkTURlY1x1bmRlZmluZWQgXGdkZWZccHV0d29yZE1EZWN7RGVjZW1iZXJ9XGZpCislCitcaWZ4XHB1dHdvcmREZWZtYWNcdW5kZWZpbmVkICAgIFxnZGVmXHB1dHdvcmREZWZtYWN7TWFjcm99XGZpCitcaWZ4XHB1dHdvcmREZWZzcGVjXHVuZGVmaW5lZCAgIFxnZGVmXHB1dHdvcmREZWZzcGVje1NwZWNpYWwgRm9ybX1cZmkKK1xpZnhccHV0d29yZERlZnZhclx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZnZhcntWYXJpYWJsZX1cZmkKK1xpZnhccHV0d29yZERlZm9wdFx1bmRlZmluZWQgICAgXGdkZWZccHV0d29yZERlZm9wdHtVc2VyIE9wdGlvbn1cZmkKK1xpZnhccHV0d29yZERlZmZ1bmNcdW5kZWZpbmVkICAgXGdkZWZccHV0d29yZERlZmZ1bmN7RnVuY3Rpb259XGZpCisKKyUgU2luY2UgdGhlIGNhdGVnb3J5IG9mIHNwYWNlIGlzIG5vdCBrbm93biwgd2UgaGF2ZSB0byBiZSBjYXJlZnVsLgorXGNoYXJkZWZcc3BhY2VjYXQgPSAxMAorXGRlZlxzcGFjZWlzc3BhY2V7XGNhdGNvZGVgXCA9XHNwYWNlY2F0fQorCislIElnbm9yZSBhIHRva2VuLgorJQorXGRlZlxnb2JibGUjMXt9CisKKyUgVGhlIGZvbGxvd2luZyBpcyB1c2VkIGluc2lkZSBzZXZlcmFsIFxlZGVmJ3MuCitcZGVmXG1ha2Vjc25hbWUjMXtcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lIzFcZW5kY3NuYW1lfQorCislIEh5cGhlbmF0aW9uIGZpeGVzLgorXGh5cGhlbmF0aW9ueworICBGbG9yLWktZGEgR2hvc3Qtc2NyaXB0IEdob3N0LXZpZXcgTWFjLU9TIFBvc3QtU2NyaXB0CisgIGFwLXBlbi1kaXggYml0LW1hcCBiaXQtbWFwcworICBkYXRhLWJhc2UgZGF0YS1iYXNlcyBlc2hlbGwgZmFsbC1pbmcgaGFsZi13YXkgbG9uZy1lc3QgbWFuLXUtc2NyaXB0CisgIG1hbi11LXNjcmlwdHMgbWluaS1idWYtZmVyIG1pbmktYnVmLWZlcnMgb3Zlci12aWV3IHBhci1hLWRpZ20KKyAgcGFyLWEtZGlnbXMgcmF0aC1lciByZWMtdGFuLWd1LWxhciByby1ib3QtaWNzIHNlLXZlcmUtbHkgc2V0LXVwIHNwYS1jZXMKKyAgc3BlbGwtaW5nIHNwZWxsLWluZ3MKKyAgc3RhbmQtYWxvbmUgc3Ryb25nLWVzdCB0aW1lLXN0YW1wIHRpbWUtc3RhbXBzIHdoaWNoLWV2ZXIgd2hpdGUtc3BhY2UKKyAgd2lkZS1zcHJlYWQgd3JhcC1hcm91bmQKK30KKworJSBNYXJnaW4gdG8gYWRkIHRvIHJpZ2h0IG9mIGV2ZW4gcGFnZXMsIHRvIGxlZnQgb2Ygb2RkIHBhZ2VzLgorXG5ld2RpbWVuXGJpbmRpbmdvZmZzZXQKK1xuZXdkaW1lblxub3JtYWxvZmZzZXQKK1xuZXdkaW1lblxwYWdld2lkdGggXG5ld2RpbWVuXHBhZ2VoZWlnaHQKKworJSBGb3IgYSBmaW5hbCBjb3B5LCB0YWtlIG91dCB0aGUgcmVjdGFuZ2xlcworJSB0aGF0IG1hcmsgb3ZlcmZ1bGwgYm94ZXMgKGluIGNhc2UgeW91IGhhdmUgZGVjaWRlZAorJSB0aGF0IHRoZSB0ZXh0IGxvb2tzIG9rIGV2ZW4gdGhvdWdoIGl0IHBhc3NlcyB0aGUgbWFyZ2luKS4KKyUKK1xkZWZcZmluYWxvdXR7XG92ZXJmdWxscnVsZT0wcHR9CisKKyUgQHwgaW5zZXJ0cyBhIGNoYW5nZWJhciB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVudCBsaW5lLiAgSXQgc2hvdWxkCislIHN1cnJvdW5kIGFueSBjaGFuZ2VkIHRleHQuICBUaGlzIGFwcHJvYWNoIGRvZXMgKm5vdCogd29yayBpZiB0aGUKKyUgY2hhbmdlIHNwYW5zIG1vcmUgdGhhbiB0d28gbGluZXMgb2Ygb3V0cHV0LiAgVG8gaGFuZGxlIHRoYXQsIHdlIHdvdWxkCislIGhhdmUgYWRvcHQgYSBtdWNoIG1vcmUgZGlmZmljdWx0IGFwcHJvYWNoIChwdXR0aW5nIG1hcmtzIGludG8gdGhlIG1haW4KKyUgdmVydGljYWwgbGlzdCBmb3IgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggY2hhbmdlKS4KKyUKK1xkZWZcfHslCisgICUgXHZhZGp1c3QgY2FuIG9ubHkgYmUgdXNlZCBpbiBob3Jpem9udGFsIG1vZGUuCisgIFxsZWF2ZXZtb2RlCisgICUKKyAgJSBBcHBlbmQgdGhpcyB2ZXJ0aWNhbCBtb2RlIG1hdGVyaWFsIGFmdGVyIHRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHZhZGp1c3R7JQorICAgICUgV2Ugd2FudCB0byBpbnNlcnQgYSBydWxlIHdpdGggdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIGN1cnJlbnQKKyAgICAlIGxlYWRpbmc7IHRoYXQgaXMgZXhhY3RseSB3aGF0IFxzdHJ1dGJveCBpcyBzdXBwb3NlZCB0byByZWNvcmQuCisgICAgXHZza2lwLVxiYXNlbGluZXNraXAKKyAgICAlCisgICAgJSBcdmFkanVzdC1pdGVtcyBhcmUgaW5zZXJ0ZWQgYXQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgdHlwZS4gIFNvCisgICAgJSB0aGUgXGxsYXAgaGVyZSBtb3ZlcyBvdXQgaW50byB0aGUgbGVmdC1oYW5kIG1hcmdpbi4KKyAgICBcbGxhcHslCisgICAgICAlCisgICAgICAlIEZvciBhIHRoaWNrZXIgb3IgdGhpbm5lciBiYXIsIGNoYW5nZSB0aGUgYDFwdCcuCisgICAgICBcdnJ1bGUgaGVpZ2h0XGJhc2VsaW5lc2tpcCB3aWR0aDFwdAorICAgICAgJQorICAgICAgJSBUaGlzIGlzIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBiYXIgYW5kIHRoZSB0ZXh0LgorICAgICAgXGhza2lwIDEycHQKKyAgICB9JQorICB9JQorfQorCislIFNvbWV0aW1lcyBpdCBpcyBjb252ZW5pZW50IHRvIGhhdmUgZXZlcnl0aGluZyBpbiB0aGUgdHJhbnNjcmlwdCBmaWxlCislIGFuZCBub3RoaW5nIG9uIHRoZSB0ZXJtaW5hbC4gIFdlIGRvbid0IGp1c3QgY2FsbCBcdHJhY2luZ2FsbCBoZXJlLAorJSBzaW5jZSB0aGF0IHByb2R1Y2VzIHNvbWUgdXNlbGVzcyBvdXRwdXQgb24gdGhlIHRlcm1pbmFsLiAgV2UgYWxzbyBtYWtlCislIHNvbWUgZWZmb3J0IHRvIG9yZGVyIHRoZSB0cmFjaW5nIGNvbW1hbmRzIHRvIHJlZHVjZSBvdXRwdXQgaW4gdGhlIGxvZworJSBmaWxlOyBjZi4gdHJhY2Uuc3R5IGluIExhVGVYLgorJQorXGRlZlxnbG9nZ2luZ2FsbHtcYmVnaW5ncm91cCBcZ2xvYmFsZGVmcyA9IDEgXGxvZ2dpbmdhbGwgXGVuZGdyb3VwfSUKK1xkZWZcbG9nZ2luZ2FsbHslCisgIFx0cmFjaW5nc3RhdHMyCisgIFx0cmFjaW5ncGFnZXMxCisgIFx0cmFjaW5nbG9zdGNoYXJzMiAgJSAyIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcdHJhY2luZ3BhcmFncmFwaHMxCisgIFx0cmFjaW5nb3V0cHV0MQorICBcdHJhY2luZ21hY3JvczIKKyAgXHRyYWNpbmdyZXN0b3JlczEKKyAgXHNob3dib3hicmVhZHRoXG1heGRpbWVuIFxzaG93Ym94ZGVwdGhcbWF4ZGltZW4KKyAgXGlmeFxlVGVYdmVyc2lvblx1bmRlZmluZWRcZWxzZSAlIGV0ZXggZ2l2ZXMgdXMgbW9yZSBsb2dnaW5nCisgICAgXHRyYWNpbmdzY2FudG9rZW5zMQorICAgIFx0cmFjaW5naWZzMQorICAgIFx0cmFjaW5nZ3JvdXBzMQorICAgIFx0cmFjaW5nbmVzdGluZzIKKyAgICBcdHJhY2luZ2Fzc2lnbnMxCisgIFxmaQorICBcdHJhY2luZ2NvbW1hbmRzMyAgJSAzIGdpdmVzIHVzIG1vcmUgaW4gZXRleAorICBcZXJyb3Jjb250ZXh0bGluZXMxNgorfSUKKworJSBhZGQgY2hlY2sgZm9yIFxsYXN0cGVuYWx0eSB0byBwbGFpbidzIGRlZmluaXRpb25zLiAgSWYgdGhlIGxhc3QgdGhpbmcKKyUgd2UgZGlkIHdhcyBhIFxub2JyZWFrLCB3ZSBkb24ndCB3YW50IHRvIGluc2VydCBtb3JlIHNwYWNlLgorJQorXGRlZlxzbWFsbGJyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XHNtYWxsc2tpcGFtb3VudAorICBccmVtb3ZlbGFzdHNraXBccGVuYWx0eS01MFxzbWFsbHNraXBcZmlcZml9CitcZGVmXG1lZGJyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XG1lZHNraXBhbW91bnQKKyAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktMTAwXG1lZHNraXBcZmlcZml9CitcZGVmXGJpZ2JyZWFre1xpZm51bVxsYXN0cGVuYWx0eTwxMDAwMFxwYXJcaWZkaW1cbGFzdHNraXA8XGJpZ3NraXBhbW91bnQKKyAgXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHktMjAwXGJpZ3NraXBcZmlcZml9CisKKyUgRm9yIEBjcm9wbWFya3MgY29tbWFuZC4KKyUgRG8gQGNyb3BtYXJrcyB0byBnZXQgY3JvcCBtYXJrcy4KKyUKK1xuZXdpZlxpZmNyb3BtYXJrcworXGxldFxjcm9wbWFya3MgPSBcY3JvcG1hcmtzdHJ1ZQorJQorJSBEaW1lbnNpb25zIHRvIGFkZCBjcm9wbWFya3MgYXQgY29ybmVycy4KKyUgQWRkZWQgYnkgUC4gQS4gTWFjS2F5LCAxMiBOb3YuIDE5ODYKKyUKK1xuZXdkaW1lblxvdXRlcmhzaXplIFxuZXdkaW1lblxvdXRlcnZzaXplICUgc2V0IGJ5IHRoZSBwYXBlciBzaXplIHJvdXRpbmVzCitcbmV3ZGltZW5cY29ybmVybG9uZyAgXGNvcm5lcmxvbmc9MXBjCitcbmV3ZGltZW5cY29ybmVydGhpY2sgXGNvcm5lcnRoaWNrPS4zcHQKK1xuZXdkaW1lblx0b3BhbmRib3R0b21tYXJnaW4gXHRvcGFuZGJvdHRvbW1hcmdpbj0uNzVpbgorCislIE1haW4gb3V0cHV0IHJvdXRpbmUuCitcY2hhcmRlZlxQQUdFID0gMjU1Citcb3V0cHV0ID0ge1xvbmVwYWdlb3V0e1xwYWdlY29udGVudHNcUEFHRX19CisKK1xuZXdib3hcaGVhZGxpbmVib3gKK1xuZXdib3hcZm9vdGxpbmVib3gKKworJSBcb25lcGFnZW91dCB0YWtlcyBhIHZib3ggYXMgYW4gYXJndW1lbnQuICBOb3RlIHRoYXQgXHBhZ2Vjb250ZW50cworJSBkb2VzIGluc2VydGlvbnMsIGJ1dCB5b3UgaGF2ZSB0byBjYWxsIGl0IHlvdXJzZWxmLgorXGRlZlxvbmVwYWdlb3V0IzF7JQorICBcaWZjcm9wbWFya3MgXGhvZmZzZXQ9MHB0IFxlbHNlIFxob2Zmc2V0PVxub3JtYWxvZmZzZXQgXGZpCisgICUKKyAgXGlmb2RkXHBhZ2VubyAgXGFkdmFuY2VcaG9mZnNldCBieSBcYmluZGluZ29mZnNldAorICBcZWxzZSBcYWR2YW5jZVxob2Zmc2V0IGJ5IC1cYmluZGluZ29mZnNldFxmaQorICAlCisgICUgRG8gdGhpcyBvdXRzaWRlIG9mIHRoZSBcc2hpcG91dCBzbyBAY29kZSBldGMuIHdpbGwgYmUgZXhwYW5kZWQgaW4KKyAgJSB0aGUgaGVhZGxpbmUgYXMgdGhleSBzaG91bGQgYmUsIG5vdCB0YWtlbiBsaXRlcmFsbHkgKG91dHB1dHRpbmcgJydjb2RlKS4KKyAgXHNldGJveFxoZWFkbGluZWJveCA9IFx2Ym94e1xsZXRcaHNpemU9XHBhZ2V3aWR0aCBcbWFrZWhlYWRsaW5lfSUKKyAgXHNldGJveFxmb290bGluZWJveCA9IFx2Ym94e1xsZXRcaHNpemU9XHBhZ2V3aWR0aCBcbWFrZWZvb3RsaW5lfSUKKyAgJQorICB7JQorICAgICUgSGF2ZSB0byBkbyB0aGlzIHN0dWZmIG91dHNpZGUgdGhlIFxzaGlwb3V0IGJlY2F1c2Ugd2Ugd2FudCBpdCB0bworICAgICUgdGFrZSBlZmZlY3QgaW4gXHdyaXRlJ3MsIHlldCB0aGUgZ3JvdXAgZGVmaW5lZCBieSB0aGUgXHZib3ggZW5kcworICAgICUgYmVmb3JlIHRoZSBcc2hpcG91dCBydW5zLgorICAgICUKKyAgICBcaW5kZXhkdW1taWVzICAgICAgICAgJSBkb24ndCBleHBhbmQgY29tbWFuZHMgaW4gdGhlIG91dHB1dC4KKyAgICBcbm9ybWFsdHVybm9mZmFjdGl2ZSAgJSBcIGluIGluZGV4IGVudHJpZXMgbXVzdCBub3Qgc3RheSBcLCBlLmcuLCBpZgorICAgICAgICAgICAgICAgJSB0aGUgcGFnZSBicmVhayBoYXBwZW5zIHRvIGJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhhbXBsZS4KKyAgICAgICAgICAgICAgICUgV2UgZG9uJ3Qgd2FudCAudnIgKG9yIHdoYXRldmVyKSBlbnRyaWVzIGxpa2UgdGhpczoKKyAgICAgICAgICAgICAgICUgXGVudHJ5e3tcdHQgXGluZGV4YmFja3NsYXNoIH1hY3JvbnltfXszMn17XGNvZGUge1xhY3JvbnltfX0KKyAgICAgICAgICAgICAgICUgIlxhY3JvbnltIiB3b24ndCB3b3JrIHdoZW4gaXQncyByZWFkIGJhY2sgaW47CisgICAgICAgICAgICAgICAlIGl0IG5lZWRzIHRvIGJlIAorICAgICAgICAgICAgICAgJSB7XGNvZGUge3tcdHQgXGJhY2tzbGFzaGN1cmZvbnQgfWFjcm9ueW19CisgICAgXHNoaXBvdXRcdmJveHslCisgICAgICAlIERvIHRoaXMgZWFybHkgc28gcGRmIHJlZmVyZW5jZXMgZ28gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFnZS4KKyAgICAgIFxpZnBkZm1ha2VwYWdlZGVzdCBccGRmZGVzdCBuYW1le1x0aGVccGFnZW5vfSB4eXpcZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcyBcdmJveCB0byBcb3V0ZXJ2c2l6ZVxiZ3JvdXAKKyAgICAgICAgXGhzaXplID0gXG91dGVyaHNpemUKKyAgICAgICAgXHZza2lwLVx0b3BhbmRib3R0b21tYXJnaW4KKyAgICAgICAgXHZ0b3AgdG8wcHR7JQorICAgICAgICAgIFxsaW5le1xld3RvcFxoZmlsXGV3dG9wfSUKKyAgICAgICAgICBcbm9pbnRlcmxpbmVza2lwCisgICAgICAgICAgXGxpbmV7JQorICAgICAgICAgICAgXHZib3h7XG1vdmVsZWZ0XGNvcm5lcnRoaWNrXG5zdG9wfSUKKyAgICAgICAgICAgIFxoZmlsbAorICAgICAgICAgICAgXHZib3h7XG1vdmVyaWdodFxjb3JuZXJ0aGlja1xuc3RvcH0lCisgICAgICAgICAgfSUKKyAgICAgICAgICBcdnNzfSUKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbgorICAgICAgICBcbGluZVxiZ3JvdXAKKyAgICAgICAgICBcaGZpbCAlIGNlbnRlciB0aGUgcGFnZSB3aXRoaW4gdGhlIG91dGVyIChwYWdlKSBoc2l6ZS4KKyAgICAgICAgICBcaWZvZGRccGFnZW5vXGhza2lwXGJpbmRpbmdvZmZzZXRcZmkKKyAgICAgICAgICBcdmJveFxiZ3JvdXAKKyAgICAgIFxmaQorICAgICAgJQorICAgICAgXHVudmJveFxoZWFkbGluZWJveAorICAgICAgXHBhZ2Vib2R5eyMxfSUKKyAgICAgIFxpZmRpbVxodFxmb290bGluZWJveCA+IDBwdAorICAgICAgICAlIE9ubHkgbGVhdmUgdGhpcyBzcGFjZSBpZiB0aGUgZm9vdGxpbmUgaXMgbm9uZW1wdHkuCisgICAgICAgICUgKFdlIGxlc3NlbmVkIFx2c2l6ZSBmb3IgaXQgaW4gXG9kZGZvb3Rpbmd4eHguKQorICAgICAgICAlIFRoZSBcYmFzZWxpbmVza2lwPTI0cHQgaW4gcGxhaW4ncyBcbWFrZWZvb3RsaW5lIGhhcyBubyBlZmZlY3QuCisgICAgICAgIFx2c2tpcCAyXGJhc2VsaW5lc2tpcAorICAgICAgICBcdW52Ym94XGZvb3RsaW5lYm94CisgICAgICBcZmkKKyAgICAgICUKKyAgICAgIFxpZmNyb3BtYXJrcworICAgICAgICAgIFxlZ3JvdXAgJSBlbmQgb2YgXHZib3hcYmdyb3VwCisgICAgICAgIFxoZmlsXGVncm91cCAlIGVuZCBvZiAoY2VudGVyaW5nKSBcbGluZVxiZ3JvdXAKKyAgICAgICAgXHZza2lwXHRvcGFuZGJvdHRvbW1hcmdpbiBwbHVzMWZpbGwgbWludXMxZmlsbAorICAgICAgICBcYm94bWF4ZGVwdGggPSBcY29ybmVydGhpY2sKKyAgICAgICAgXHZib3ggdG8wcHR7XHZzcworICAgICAgICAgIFxsaW5leyUKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlbGVmdFxjb3JuZXJ0aGlja1xuc2JvdH0lCisgICAgICAgICAgICBcaGZpbGwKKyAgICAgICAgICAgIFx2Ym94e1xtb3ZlcmlnaHRcY29ybmVydGhpY2tcbnNib3R9JQorICAgICAgICAgIH0lCisgICAgICAgICAgXG5vaW50ZXJsaW5lc2tpcAorICAgICAgICAgIFxsaW5le1xld2JvdFxoZmlsXGV3Ym90fSUKKyAgICAgICAgfSUKKyAgICAgIFxlZ3JvdXAgJSBcdmJveCBmcm9tIGZpcnN0IGNyb3BtYXJrcyBjbGF1c2UKKyAgICAgIFxmaQorICAgIH0lIGVuZCBvZiBcc2hpcG91dFx2Ym94CisgIH0lIGVuZCBvZiBncm91cCB3aXRoIFxpbmRleGR1bW1pZXMKKyAgXGFkdmFuY2VwYWdlbm8KKyAgXGlmbnVtXG91dHB1dHBlbmFsdHk+LTIwMDAwIFxlbHNlXGRvc3VwZXJlamVjdFxmaQorfQorCitcbmV3aW5zZXJ0XG1hcmdpbiBcZGltZW5cbWFyZ2luPVxtYXhkaW1lbgorCitcZGVmXHBhZ2Vib2R5IzF7XHZib3ggdG9ccGFnZWhlaWdodHtcYm94bWF4ZGVwdGg9XG1heGRlcHRoICMxfX0KK3tcY2F0Y29kZWBcQCA9MTEKK1xnZGVmXHBhZ2Vjb250ZW50cyMxe1xpZnZvaWRcdG9waW5zXGVsc2VcdW52Ym94XHRvcGluc1xmaQorJSBtYXJnaW5hbCBoYWNrcywganVoYUB2aWlzYS51dWNwIChKdWhhIFRha2FsYSkKK1xpZnZvaWRcbWFyZ2luXGVsc2UgJSBtYXJnaW5hbCBpbmZvIGlzIHByZXNlbnQKKyAgXHJsYXB7XGtlcm5caHNpemVcdmJveCB0b1x6QHtca2VybjFwdFxib3hcbWFyZ2luIFx2c3N9fVxmaQorXGRpbWVuQD1cZHAjMSBcdW52Ym94IzEKK1xpZnZvaWRcZm9vdGluc1xlbHNlXHZza2lwXHNraXBcZm9vdGluc1xmb290bm90ZXJ1bGUgXHVudmJveFxmb290aW5zXGZpCitcaWZyQGdnZWRib3R0b20gXGtlcm4tXGRpbWVuQCBcdmZpbCBcZml9Cit9CisKKyUgSGVyZSBhcmUgdGhlIHJ1bGVzIGZvciB0aGUgY3JvcG1hcmtzLiAgTm90ZSB0aGF0IHRoZXkgYXJlCislIG9mZnNldCBzbyB0aGF0IHRoZSBzcGFjZSBiZXR3ZWVuIHRoZW0gaXMgdHJ1bHkgXG91dGVyaHNpemUgb3IgXG91dGVydnNpemUKKyUgKFAuIEEuIE1hY0theSwgMTIgTm92ZW1iZXIsIDE5ODYpCislCitcZGVmXGV3dG9we1x2cnVsZSBoZWlnaHRcY29ybmVydGhpY2sgZGVwdGgwcHQgd2lkdGhcY29ybmVybG9uZ30KK1xkZWZcbnN0b3B7XHZib3gKKyAge1xocnVsZSBoZWlnaHRcY29ybmVydGhpY2sgZGVwdGhcY29ybmVybG9uZyB3aWR0aFxjb3JuZXJ0aGlja319CitcZGVmXGV3Ym90e1x2cnVsZSBoZWlnaHQwcHQgZGVwdGhcY29ybmVydGhpY2sgd2lkdGhcY29ybmVybG9uZ30KK1xkZWZcbnNib3R7XHZib3gKKyAge1xocnVsZSBoZWlnaHRcY29ybmVybG9uZyBkZXB0aFxjb3JuZXJ0aGljayB3aWR0aFxjb3JuZXJ0aGlja319CisKKyUgUGFyc2UgYW4gYXJndW1lbnQsIHRoZW4gcGFzcyBpdCB0byAjMS4gIFRoZSBhcmd1bWVudCBpcyB0aGUgcmVzdCBvZgorJSB0aGUgaW5wdXQgbGluZSAoZXhjZXB0IHdlIHJlbW92ZSBhIHRyYWlsaW5nIGNvbW1lbnQpLiAgIzEgc2hvdWxkIGJlIGEKKyUgbWFjcm8gd2hpY2ggZXhwZWN0cyBhbiBvcmRpbmFyeSB1bmRlbGltaXRlZCBUZVggYXJndW1lbnQuCislCitcZGVmXHBhcnNlYXJne1xwYXJzZWFyZ3VzaW5ne319CitcZGVmXHBhcnNlYXJndXNpbmcjMSMyeyUKKyAgXGRlZlxuZXh0eyMyfSUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcb2JleWxpbmVzCisgICAgXHNwYWNlaXNzcGFjZQorICAgICMxJQorICAgIFxwYXJzZWFyZ2xpbmVcZW1wdHklIEluc2VydCB0aGUgXGVtcHR5IHRva2VuLCBzZWUgXGZpbmlzaHBhcnNlYXJnIGJlbG93LgorfQorCit7XG9iZXlsaW5lcyAlCisgIFxnZGVmXHBhcnNlYXJnbGluZSMxXl5NeyUKKyAgICBcZW5kZ3JvdXAgJSBFbmQgb2YgdGhlIGdyb3VwIHN0YXJ0ZWQgaW4gXHBhcnNlYXJnLgorICAgIFxhcmdyZW1vdmVjb21tZW50ICMxXGNvbW1lbnRcQXJnVGVybSUKKyAgfSUKK30KKworJSBGaXJzdCByZW1vdmUgYW55IEBjb21tZW50LCB0aGVuIGFueSBAYyBjb21tZW50LgorXGRlZlxhcmdyZW1vdmVjb21tZW50IzFcY29tbWVudCMyXEFyZ1Rlcm17XGFyZ3JlbW92ZWMgIzFcY1xBcmdUZXJtfQorXGRlZlxhcmdyZW1vdmVjIzFcYyMyXEFyZ1Rlcm17XGFyZ2NoZWNrc3BhY2VzIzFcXl5NXEFyZ1Rlcm19CisKKyUgRWFjaCBvY2N1cmVuY2Ugb2YgYFxeXk0nIG9yIGA8c3BhY2U+XF5eTScgaXMgcmVwbGFjZWQgYnkgYSBzaW5nbGUgc3BhY2UuCislCislIFxhcmdyZW1vdmVjIG1pZ2h0IGxlYXZlIHVzIHdpdGggdHJhaWxpbmcgc3BhY2UsIGUuZy4sCislICAgIEBlbmQgaXRlbWl6ZSAgQGMgZm9vCislIFRoaXMgc3BhY2UgdG9rZW4gdW5kZXJnb2VzIHRoZSBzYW1lIHByb2NlZHVyZSBhbmQgaXMgZXZlbnR1YWxseSByZW1vdmVkCislIGJ5IFxmaW5pc2hwYXJzZWFyZy4KKyUKK1xkZWZcYXJnY2hlY2tzcGFjZXMjMVxeXk17XGFyZ2NoZWNrc3BhY2VzWCMxXF5eTSBcXl5NfQorXGRlZlxhcmdjaGVja3NwYWNlc1gjMSBcXl5Ne1xhcmdjaGVja3NwYWNlc1kjMVxeXk19CitcZGVmXGFyZ2NoZWNrc3BhY2VzWSMxXF5eTSMyXF5eTSMzXEFyZ1Rlcm17JQorICBcZGVmXHRlbXB7IzN9JQorICBcaWZ4XHRlbXBcZW1wdHkKKyAgICAlIFdlIGNhbm5vdCB1c2UgXG5leHQgaGVyZSwgYXMgaXQgaG9sZHMgdGhlIG1hY3JvIHRvIHJ1bjsKKyAgICAlIHRodXMgd2UgcmV1c2UgXHRlbXAuCisgICAgXGxldFx0ZW1wXGZpbmlzaHBhcnNlYXJnCisgIFxlbHNlCisgICAgXGxldFx0ZW1wXGFyZ2NoZWNrc3BhY2VzCisgIFxmaQorICAlIFB1dCB0aGUgc3BhY2UgdG9rZW4gaW46CisgIFx0ZW1wIzEgIzNcQXJnVGVybQorfQorCislIElmIGEgX2RlbGltaXRlZF8gYXJndW1lbnQgaXMgZW5jbG9zZWQgaW4gYnJhY2VzLCB0aGV5IGdldCBzdHJpcHBlZDsgc28KKyUgdG8gZ2V0IF9leGFjdGx5XyB0aGUgcmVzdCBvZiB0aGUgbGluZSwgd2UgaGFkIHRvIHByZXZlbnQgc3VjaCBzaXR1YXRpb24uCislIFdlIHByZXBlbmRlZCBhbiBcZW1wdHkgdG9rZW4gYXQgdGhlIHZlcnkgYmVnaW5uaW5nIGFuZCB3ZSBleHBhbmQgaXQgbm93LAorJSBqdXN0IGJlZm9yZSBwYXNzaW5nIHRoZSBjb250cm9sIHRvIFxuZXh0LgorJSAoU2ltaWxhcmlseSwgd2UgaGF2ZSB0byB0aGluayBhYm91dCAjMyBvZiBcYXJnY2hlY2tzcGFjZXNZIGFib3ZlOiBpdCBpcworJSBlaXRoZXIgdGhlIG51bGwgc3RyaW5nLCBvciBpdCBlbmRzIHdpdGggXF5eTS0tLXRodXMgdGhlcmUgaXMgbm8gZGFuZ2VyCislIHRoYXQgYSBwYWlyIG9mIGJyYWNlcyB3b3VsZCBiZSBzdHJpcHBlZC4KKyUKKyUgQnV0IGZpcnN0LCB3ZSBoYXZlIHRvIHJlbW92ZSB0aGUgdHJhaWxpbmcgc3BhY2UgdG9rZW4uCislCitcZGVmXGZpbmlzaHBhcnNlYXJnIzEgXEFyZ1Rlcm17XGV4cGFuZGFmdGVyXG5leHRcZXhwYW5kYWZ0ZXJ7IzF9fQorCislIFxwYXJzZWFyZ2RlZlxmb297Li4ufQorJQlpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8KKyUgXGRlZlxmb297XHBhcnNlYXJnXFhmb299CislIFxkZWZcWGZvbyMxey4uLn0KKyUKKyUgQWN0dWFsbHksIEkgdXNlIFxjc25hbWVcc3RyaW5nXGZvb1xlbmRjc25hbWUsIGllLiBcXGZvbywgYXMgaXQgaXMgbXkKKyUgZmF2b3VyaXRlIFRlWCB0cmljay4gIC0ta2FzYWwsIDE2bm92MDMKKworXGRlZlxwYXJzZWFyZ2RlZiMxeyUKKyAgXGV4cGFuZGFmdGVyIFxkb3BhcnNlYXJnZGVmIFxjc25hbWVcc3RyaW5nIzFcZW5kY3NuYW1lICMxJQorfQorXGRlZlxkb3BhcnNlYXJnZGVmIzEjMnslCisgIFxkZWYjMntccGFyc2VhcmcjMX0lCisgIFxkZWYjMSMjMSUKK30KKworJSBTZXZlcmFsIHV0aWxpdHkgZGVmaW5pdGlvbnMgd2l0aCBhY3RpdmUgc3BhY2U6Cit7CisgIFxvYmV5c3BhY2VzCisgIFxnZGVmXG9iZXllZHNwYWNleyB9CisKKyAgJSBNYWtlIGVhY2ggc3BhY2UgY2hhcmFjdGVyIGluIHRoZSBpbnB1dCBwcm9kdWNlIGEgbm9ybWFsIGludGVyd29yZAorICAlIHNwYWNlIGluIHRoZSBvdXRwdXQuICBEb24ndCBhbGxvdyBhIGxpbmUgYnJlYWsgYXQgdGhpcyBzcGFjZSwgYXMgdGhpcworICAlIGlzIHVzZWQgb25seSBpbiBlbnZpcm9ubWVudHMgbGlrZSBAZXhhbXBsZSwgd2hlcmUgZWFjaCBsaW5lIG9mIGlucHV0CisgICUgc2hvdWxkIHByb2R1Y2UgYSBsaW5lIG9mIG91dHB1dCBhbnl3YXkuCisgICUKKyAgXGdkZWZcc2Vwc3BhY2Vze1xvYmV5c3BhY2VzXGxldCA9XHRpZX0KKworICAlIElmIGFuIGluZGV4IGNvbW1hbmQgaXMgdXNlZCBpbiBhbiBAZXhhbXBsZSBlbnZpcm9ubWVudCwgYW55IHNwYWNlcworICAlIHRoZXJlaW4gc2hvdWxkIGJlY29tZSByZWd1bGFyIHNwYWNlcyBpbiB0aGUgcmF3IGluZGV4IGZpbGUsIG5vdCB0aGUKKyAgJSBleHBhbnNpb24gb2YgXHRpZSAoXGxlYXZldm1vZGUgXHBlbmFsdHkgXEBNIFwgKS4KKyAgXGdkZWZcdW5zZXBzcGFjZXN7XGxldCA9XHNwYWNlfQorfQorCisKK1xkZWZcZmx1c2hjcntcaWZ4XHBhclxsaXNwcGFyIFxkZWZcbmV4dCMjMXt9XGVsc2UgXGxldFxuZXh0PVxyZWxheCBcZmkgXG5leHR9CisKKyUgRGVmaW5lIHRoZSBmcmFtZXdvcmsgZm9yIGVudmlyb25tZW50cyBpbiB0ZXhpbmZvLnRleC4gIEl0J3MgdXNlZCBsaWtlIHRoaXM6CislCislICAgXGVudmRlZlxmb297Li4ufQorJSAgIFxkZWZcRWZvb3suLi59CislCislIEl0J3MgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIFxlbnZkZWYgdG8gaW5zZXJ0IFxiZWdpbmdyb3VwIGJlZm9yZSB0aGUKKyUgYWN0dWFsIGJvZHk7IEBlbmQgY2xvc2VzIHRoZSBncm91cCBhZnRlciBjYWxsaW5nIFxFZm9vLiAgXGVudmRlZiBhbHNvCislIGRlZmluZXMgXHRoaXNlbnYsIHNvIHRoZSBjdXJyZW50IGVudmlyb25tZW50IGlzIGtub3duOyBAZW5kIGNoZWNrcworJSB3aGV0aGVyIHRoZSBlbnZpcm9ubWVudCBuYW1lIG1hdGNoZXMuICBUaGUgXGNoZWNrZW52IG1hY3JvIGNhbiBhbHNvIGJlCislIHVzZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBlbnZpcm9ubWVudCBpcyB0aGUgb25lIGV4cGVjdGVkLgorJQorJSBOb24tZmFsc2UgY29uZGl0aW9uYWxzIChAaWZ0ZXgsIEBpZnNldCkgZG9uJ3QgZml0IGludG8gdGhpcywgc28gdGhleQorJSBhcmUgbm90IHRyZWF0ZWQgYXMgZW52aXJvbWVudHM7IHRoZXkgZG9uJ3Qgb3BlbiBhIGdyb3VwLiAgKFRoZQorJSBpbXBsZW1lbnRhdGlvbiBvZiBAZW5kIHRha2VzIGNhcmUgbm90IHRvIGNhbGwgXGVuZGdyb3VwIGluIHRoaXMKKyUgc3BlY2lhbCBjYXNlLikKKworCislIEF0IHJ1bnRpbWUsIGVudmlyb25tZW50cyBzdGFydCB3aXRoIHRoaXM6CitcZGVmXHN0YXJ0ZW52aXJvbm1lbnQjMXtcYmVnaW5ncm91cFxkZWZcdGhpc2VudnsjMX19CislIGluaXRpYWxpemUKK1xsZXRcdGhpc2VudlxlbXB0eQorCislIC4uLiBidXQgdGhleSBnZXQgZGVmaW5lZCB2aWEgYGBcZW52ZGVmXGZvb3suLi59Jyc6CitcbG9uZ1xkZWZcZW52ZGVmIzEjMntcZGVmIzF7XHN0YXJ0ZW52aXJvbm1lbnQjMSMyfX0KK1xkZWZcZW52cGFyc2VhcmdkZWYjMSMye1xwYXJzZWFyZ2RlZiMxe1xzdGFydGVudmlyb25tZW50IzEjMn19CisKKyUgQ2hlY2sgd2hldGhlciB3ZSdyZSBpbiB0aGUgcmlnaHQgZW52aXJvbm1lbnQ6CitcZGVmXGNoZWNrZW52IzF7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRoaXNlbnZcdGVtcAorICBcZWxzZQorICAgIFxiYWRlbnZlcnIKKyAgXGZpCit9CisKKyUgRXZpcm9ubWVudCBtaXNtYXRjaCwgIzEgZXhwZWN0ZWQ6CitcZGVmXGJhZGVudmVycnslCisgIFxlcnJoZWxwID0gXEVNc2ltcGxlCisgIFxlcnJtZXNzYWdle1RoaXMgY29tbWFuZCBjYW4gYXBwZWFyIG9ubHkgXGluZW52aXJvbm1lbnRcdGVtcCwKKyAgICBub3QgXGluZW52aXJvbm1lbnRcdGhpc2Vudn0lCit9CitcZGVmXGluZW52aXJvbm1lbnQjMXslCisgIFxpZngjMVxlbXB0eQorICAgIG91dCBvZiBhbnkgZW52aXJvbm1lbnQlCisgIFxlbHNlCisgICAgaW4gZW52aXJvbm1lbnQgXGV4cGFuZGFmdGVyXHN0cmluZyMxJQorICBcZmkKK30KKworJSBAZW5kIGZvbyBleGVjdXRlcyB0aGUgZGVmaW5pdGlvbiBvZiBcRWZvby4KKyUgQnV0IGZpcnN0LCBpdCBleGVjdXRlcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgXGNoZWNrZW52CislCitccGFyc2VhcmdkZWZcZW5keyUKKyAgXGlmIDFcY3NuYW1lIGlzY29uZC4jMVxlbmRjc25hbWUKKyAgXGVsc2UKKyAgICAlIFRoZSBnZW5lcmFsIHdvcmRpbmcgb2YgXGJhZGVudmVyciBtYXkgbm90IGJlIGlkZWFsLCBidXQuLi4gLS1rYXNhbCwgMDZub3YwMworICAgIFxleHBhbmRhZnRlclxjaGVja2Vudlxjc25hbWUjMVxlbmRjc25hbWUKKyAgICBcY3NuYW1lIEUjMVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCit9CisKK1xuZXdoZWxwXEVNc2ltcGxle1ByZXNzIFJFVFVSTiB0byBjb250aW51ZS59CisKKworJSUgU2ltcGxlIHNpbmdsZS1jaGFyYWN0ZXIgQCBjb21tYW5kcworCislIEBAIHByaW50cyBhbiBACislIEtsdWRnZSB0aGlzIHVudGlsIHRoZSBmb250cyBhcmUgcmlnaHQgKGdycikuCitcZGVmXEB7e1x0dFxjaGFyNjR9fQorCislIFRoaXMgaXMgdHVybmVkIG9mZiBiZWNhdXNlIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkCislIGFuZCB5b3UgY2FuIHVzZSBAd3suLi59IGFyb3VuZCBhIHF1b3RlIHRvIHN1cHByZXNzIGxpZ2F0dXJlcy4KKyUlIERlZmluZSBAYCBhbmQgQCcgdG8gYmUgdGhlIHNhbWUgYXMgYCBhbmQgJworJSUgYnV0IHN1cHByZXNzaW5nIGxpZ2F0dXJlcy4KKyVcZGVmXGB7e2B9fQorJVxkZWZcJ3t7J319CisKKyUgVXNlZCB0byBnZW5lcmF0ZSBxdW90ZWQgYnJhY2VzLgorXGRlZlxteWxicmFjZSB7e1x0dFxjaGFyMTIzfX0KK1xkZWZcbXlyYnJhY2Uge3tcdHRcY2hhcjEyNX19CitcbGV0XHs9XG15bGJyYWNlCitcbGV0XH09XG15cmJyYWNlCitcYmVnaW5ncm91cAorICAlIERlZmluaXRpb25zIHRvIHByb2R1Y2UgXHsgYW5kIFx9IGNvbW1hbmRzIGZvciBpbmRpY2VzLAorICAlIGFuZCBAeyBhbmQgQH0gZm9yIHRoZSBhdXgvdG9jIGZpbGVzLgorICBcY2F0Y29kZWBceyA9IFxvdGhlciBcY2F0Y29kZWBcfSA9IFxvdGhlcgorICBcY2F0Y29kZWBcWyA9IDEgXGNhdGNvZGVgXF0gPSAyCisgIFxjYXRjb2RlYFwhID0gMCBcY2F0Y29kZWBcXCA9IFxvdGhlcgorICAhZ2RlZiFsYnJhY2VjbWRbXHtdJQorICAhZ2RlZiFyYnJhY2VjbWRbXH1dJQorICAhZ2RlZiFsYnJhY2VhdGNtZFtAe10lCisgICFnZGVmIXJicmFjZWF0Y21kW0B9XSUKKyFlbmRncm91cAorCislIEBjb21tYXt9IHRvIGF2b2lkICwgcGFyc2luZyBwcm9ibGVtcy4KK1xsZXRcY29tbWEgPSAsCisKKyUgQWNjZW50czogQCwgQGRvdGFjY2VudCBAcmluZ2FjY2VudCBAdWJhcmFjY2VudCBAdWRvdGFjY2VudAorJSBPdGhlcnMgYXJlIGRlZmluZWQgYnkgcGxhaW4gVGVYOiBAYCBAJyBAIiBAXiBAfiBAPSBAdSBAdiBASC4KK1xsZXRcLCA9IFxjCitcbGV0XGRvdGFjY2VudCA9IFwuCitcZGVmXHJpbmdhY2NlbnQjMXt7XGFjY2VudDIzICMxfX0KK1xsZXRcdGllYWNjZW50ID0gXHQKK1xsZXRcdWJhcmFjY2VudCA9IFxiCitcbGV0XHVkb3RhY2NlbnQgPSBcZAorCislIE90aGVyIHNwZWNpYWwgY2hhcmFjdGVyczogQHF1ZXN0aW9uZG93biBAZXhjbGFtZG93biBAb3JkZiBAb3JkbQorJSBQbGFpbiBUZVggZGVmaW5lczogQEFBIEBBRSBATyBAT0UgQEwgKHBsdXMgbG93ZXJjYXNlIHZlcnNpb25zKSBAc3MuCitcZGVmXHF1ZXN0aW9uZG93bns/YH0KK1xkZWZcZXhjbGFtZG93bnshYH0KK1xkZWZcb3JkZntcbGVhdmV2bW9kZVxyYWlzZTFleFxoYm94e1xzZWxlY3Rmb250c1xsbGxzaXplIFx1bmRlcmJhcnthfX19CitcZGVmXG9yZG17XGxlYXZldm1vZGVccmFpc2UxZXhcaGJveHtcc2VsZWN0Zm9udHNcbGxsc2l6ZSBcdW5kZXJiYXJ7b319fQorCislIERvdGxlc3MgaSBhbmQgZG90bGVzcyBqLCB1c2VkIGZvciBhY2NlbnRzLgorXGRlZlxpbWFjcm97aX0KK1xkZWZcam1hY3Jve2p9CitcZGVmXGRvdGxlc3MjMXslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxpbWFjcm8gXHB0ZXhpCisgIFxlbHNlXGlmeFx0ZW1wXGptYWNybyBcagorICBcZWxzZSBcZXJybWVzc2FnZXtAZG90bGVzcyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggaSBvciBqfSUKKyAgXGZpXGZpCit9CisKKyUgVGhlIFxUZVh7fSBsb2dvLCBhcyBpbiBwbGFpbiwgYnV0IHJlc2V0dGluZyB0aGUgc3BhY2luZyBzbyB0aGF0IGEKKyUgcGVyaW9kIGZvbGxvd2luZyBjb3VudHMgYXMgZW5kaW5nIGEgc2VudGVuY2UuICAoSWRlYSBmb3VuZCBpbiBsYXRleC4pCislCitcZWRlZlxUZVh7XFRlWCBcc3BhY2VmYWN0b3I9MTAwMCB9CisKKyUgQExhVGVYe30gbG9nby4gIE5vdCBxdWl0ZSB0aGUgc2FtZSByZXN1bHRzIGFzIHRoZSBkZWZpbml0aW9uIGluCislIGxhdGV4Lmx0eCwgc2luY2Ugd2UgdXNlIGEgZGlmZmVyZW50IGZvbnQgZm9yIHRoZSByYWlzZWQgQTsgaXQncyBtb3N0CislIGNvbnZlbmllbnQgZm9yIHVzIHRvIHVzZSBhbiBleHBsaWNpdGx5IHNtYWxsZXIgZm9udCwgcmF0aGVyIHRoYW4gdXNpbmcKKyUgdGhlIFxzY3JpcHRzdHlsZSBmb250IChzaW5jZSB3ZSBkb24ndCByZXNldCBcc2NyaXB0c3R5bGUgYW5kCislIFxzY3JpcHRzY3JpcHRzdHlsZSkuCislCitcZGVmXExhVGVYeyUKKyAgTFxrZXJuLS4zNmVtCisgIHtcc2V0Ym94MD1caGJveHtUfSUKKyAgIFx2Ym94IHRvIFxodDB7XGhib3h7XHNlbGVjdGZvbnRzXGxsbHNpemUgQX1cdnNzfX0lCisgIFxrZXJuLS4xNWVtCisgIFxUZVgKK30KKworJSBCZSBzdXJlIHdlJ3JlIGluIGhvcml6b250YWwgbW9kZSB3aGVuIGRvaW5nIGEgdGllLCBzaW5jZSB3ZSBtYWtlIHNwYWNlCislIGVxdWl2YWxlbnQgdG8gdGhpcyBpbiBAZXhhbXBsZS1saWtlIGVudmlyb25tZW50cy4gT3RoZXJ3aXNlLCBhIHNwYWNlCislIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIHdpbGwgc3RhcnQgd2l0aCBccGVuYWx0eSAtLSBhbmQKKyUgc2luY2UgXHBlbmFsdHkgaXMgdmFsaWQgaW4gdmVydGljYWwgbW9kZSwgd2UnZCBlbmQgdXAgcHV0dGluZyB0aGUKKyUgcGVuYWx0eSBvbiB0aGUgdmVydGljYWwgbGlzdCBpbnN0ZWFkIG9mIGluIHRoZSBuZXcgcGFyYWdyYXBoLgore1xjYXRjb2RlYEAgPSAxMQorICUgQXZvaWQgdXNpbmcgXEBNIGRpcmVjdGx5LCBiZWNhdXNlIHRoYXQgY2F1c2VzIHRyb3VibGUKKyAlIGlmIHRoZSBkZWZpbml0aW9uIGlzIHdyaXR0ZW4gaW50byBhbiBpbmRleCBmaWxlLgorIFxnbG9iYWxcbGV0XHRpZXBlbmFsdHkgPSBcQE0KKyBcZ2RlZlx0aWV7XGxlYXZldm1vZGVccGVuYWx0eVx0aWVwZW5hbHR5XCB9Cit9CisKKyUgQDogZm9yY2VzIG5vcm1hbCBzaXplIHdoaXRlc3BhY2UgZm9sbG93aW5nLgorXGRlZlw6e1xzcGFjZWZhY3Rvcj0xMDAwIH0KKworJSBAKiBmb3JjZXMgYSBsaW5lIGJyZWFrLgorXGRlZlwqe1xoZmlsXGJyZWFrXGhib3h7fVxpZ25vcmVzcGFjZXN9CisKKyUgQC8gYWxsb3dzIGEgbGluZSBicmVhay4KK1xsZXRcLz1cYWxsb3dicmVhaworCislIEAuIGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBwZXJpb2QuCitcZGVmXC57LlxzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yXHNwYWNlfQorCislIEAhIGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBiYW5nLgorXGRlZlwheyFcc3BhY2VmYWN0b3I9XGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvclxzcGFjZX0KKworJSBAPyBpcyBhbiBlbmQtb2Ytc2VudGVuY2UgcXVlcnkuCitcZGVmXD97P1xzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yXHNwYWNlfQorCislIEBmcmVuY2hzcGFjaW5nIG9ufG9mZiAgc2F5cyB3aGV0aGVyIHRvIHB1dCBleHRyYSBzcGFjZSBhZnRlciBwdW5jdHVhdGlvbi4KKyUgCitcZGVmXG9ud29yZHtvbn0KK1xkZWZcb2Zmd29yZHtvZmZ9CislCitccGFyc2VhcmdkZWZcZnJlbmNoc3BhY2luZ3slCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxvbndvcmQgXHBsYWluZnJlbmNoc3BhY2luZworICBcZWxzZVxpZnhcdGVtcFxvZmZ3b3JkIFxwbGFpbm5vbmZyZW5jaHNwYWNpbmcKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGZyZW5jaHNwYWNpbmcgb3B0aW9uIGBcdGVtcCcsIG11c3QgYmUgb24vb2ZmfSUKKyAgXGZpXGZpCit9CisKKyUgQHcgcHJldmVudHMgYSB3b3JkIGJyZWFrLiAgV2l0aG91dCB0aGUgXGxlYXZldm1vZGUsIEB3IGF0IHRoZQorJSBiZWdpbm5pbmcgb2YgYSBwYXJhZ3JhcGgsIHdoZW4gVGVYIGlzIHN0aWxsIGluIHZlcnRpY2FsIG1vZGUsIHdvdWxkCislIHByb2R1Y2UgYSB3aG9sZSBsaW5lIG9mIG91dHB1dCBpbnN0ZWFkIG9mIHN0YXJ0aW5nIHRoZSBwYXJhZ3JhcGguCitcZGVmXHcjMXtcbGVhdmV2bW9kZVxoYm94eyMxfX0KKworJSBAZ3JvdXAgLi4uIEBlbmQgZ3JvdXAgZm9yY2VzIC4uLiB0byBiZSBhbGwgb24gb25lIHBhZ2UsIGJ5IGVuY2xvc2luZworJSBpdCBpbiBhIFRlWCB2Ym94LiAgV2UgdXNlIFx2dG9wIGluc3RlYWQgb2YgXHZib3ggdG8gY29uc3RydWN0IHRoZSBib3gKKyUgdG8ga2VlcCBpdHMgaGVpZ2h0IHRoYXQgb2YgYSBub3JtYWwgbGluZS4gIEFjY29yZGluZyB0byB0aGUgcnVsZXMgZm9yCislIFx0b3Bza2lwIChwLjExNCBvZiB0aGUgVGVYYm9vayksIHRoZSBnbHVlIGluc2VydGVkIGlzCislIG1heCAoXHRvcHNraXAgLSBcaHQgKGZpcnN0IGl0ZW0pLCAwKS4gIElmIHRoYXQgaGVpZ2h0IGlzIGxhcmdlLAorJSB0aGVyZWZvcmUsIG5vIGdsdWUgaXMgaW5zZXJ0ZWQsIGFuZCB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgaGVhZGxpbmUgYW5kCislIHRoZSB0ZXh0IGlzIHNtYWxsLCB3aGljaCBsb29rcyBiYWQuCislCislIEFub3RoZXIgY29tcGxpY2F0aW9uIGlzIHRoYXQgdGhlIGdyb3VwIG1pZ2h0IGJlIHZlcnkgbGFyZ2UuICBUaGlzIGNhbgorJSBjYXVzZSB0aGUgZ2x1ZSBvbiB0aGUgcHJldmlvdXMgcGFnZSB0byBiZSB1bmR1bHkgc3RyZXRjaGVkLCBiZWNhdXNlIGl0CislIGRvZXMgbm90IGhhdmUgbXVjaCBtYXRlcmlhbC4gIEluIHRoaXMgY2FzZSwgaXQncyBiZXR0ZXIgdG8gYWRkIGFuCislIGV4cGxpY2l0IFx2ZmlsbCBzbyB0aGF0IHRoZSBleHRyYSBzcGFjZSBpcyBhdCB0aGUgYm90dG9tLiAgVGhlCislIHRocmVzaG9sZCBmb3IgZG9pbmcgdGhpcyBpcyBpZiB0aGUgZ3JvdXAgaXMgbW9yZSB0aGFuIFx2ZmlsbGxpbWl0CislIHBlcmNlbnQgb2YgYSBwYWdlIChcdmZpbGxsaW1pdCBjYW4gYmUgY2hhbmdlZCBpbnNpZGUgb2YgQHRleCkuCislCitcbmV3Ym94XGdyb3VwYm94CitcZGVmXHZmaWxsbGltaXR7MC43fQorJQorXGVudmRlZlxncm91cHslCisgIFxpZm51bVxjYXRjb2RlYFxeXk09XGFjdGl2ZSBcZWxzZQorICAgIFxlcnJoZWxwID0gXGdyb3VwaW52YWxpZGhlbHAKKyAgICBcZXJybWVzc2FnZXtAZ3JvdXAgaW52YWxpZCBpbiBjb250ZXh0IHdoZXJlIGZpbGxpbmcgaXMgZW5hYmxlZH0lCisgIFxmaQorICBcc3RhcnRzYXZpbmdpbnNlcnRzCisgICUKKyAgXHNldGJveFxncm91cGJveCA9IFx2dG9wXGJncm91cAorICAgICUgRG8gQGNvbW1lbnQgc2luY2Ugd2UgYXJlIGNhbGxlZCBpbnNpZGUgYW4gZW52aXJvbm1lbnQgc3VjaCBhcworICAgICUgQGV4YW1wbGUsIHdoZXJlIGVhY2ggZW5kLW9mLWxpbmUgaW4gdGhlIGlucHV0IGNhdXNlcyBhbgorICAgICUgZW5kLW9mLWxpbmUgaW4gdGhlIG91dHB1dC4gIFdlIGRvbid0IHdhbnQgdGhlIGVuZC1vZi1saW5lIGFmdGVyCisgICAgJSB0aGUgYEBncm91cCcgdG8gcHV0IGV4dHJhIHNwYWNlIGluIHRoZSBvdXRwdXQuICBTaW5jZSBAZ3JvdXAKKyAgICAlIHNob3VsZCBhcHBlYXIgb24gYSBsaW5lIGJ5IGl0c2VsZiAoYWNjb3JkaW5nIHRvIHRoZSBUZXhpbmZvCisgICAgJSBtYW51YWwpLCB3ZSBkb24ndCB3b3JyeSBhYm91dCBlYXRpbmcgYW55IHVzZXIgdGV4dC4KKyAgICBcY29tbWVudAorfQorJQorJSBUaGUgXHZ0b3AgcHJvZHVjZXMgYSBib3ggd2l0aCBub3JtYWwgaGVpZ2h0IGFuZCBsYXJnZSBkZXB0aDsgdGh1cywgVGVYIHB1dHMKKyUgXGJhc2VsaW5lc2tpcCBnbHVlIGJlZm9yZSBpdCwgYW5kICh3aGVuIHRoZSBuZXh0IGxpbmUgb2YgdGV4dCBpcyBkb25lKQorJSBcbGluZXNraXAgZ2x1ZSBhZnRlciBpdC4gIFRodXMsIHNwYWNlIGJlbG93IGlzIG5vdCBxdWl0ZSBlcXVhbCB0byBzcGFjZQorJSBhYm92ZS4gIEJ1dCBpdCdzIHByZXR0eSBjbG9zZS4KK1xkZWZcRWdyb3VweyUKKyAgICAlIFRvIGdldCBjb3JyZWN0IGludGVybGluZSBzcGFjZSBiZXR3ZWVuIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGdyb3VwCisgICAgJSBhbmQgdGhlIGZpcnN0IGxpbmUgYWZ0ZXJ3YXJkcywgd2UgaGF2ZSB0byBwcm9wYWdhdGUgXHByZXZkZXB0aC4KKyAgICBcZW5kZ3JhZiAlIE5vdCBccGFyLCBhcyBpdCBtYXkgaGF2ZSBiZWVuIHNldCB0byBcbGlzcHBhci4KKyAgICBcZ2xvYmFsXGRpbWVuMSA9IFxwcmV2ZGVwdGgKKyAgXGVncm91cCAgICAgICAgICAgJSBFbmQgdGhlIFx2dG9wLgorICAlIFxkaW1lbjAgaXMgdGhlIHZlcnRpY2FsIHNpemUgb2YgdGhlIGdyb3VwJ3MgYm94LgorICBcZGltZW4wID0gXGh0XGdyb3VwYm94ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGRwXGdyb3VwYm94CisgICUgXGRpbWVuMiBpcyBob3cgbXVjaCBzcGFjZSBpcyBsZWZ0IG9uIHRoZSBwYWdlIChtb3JlIG9yIGxlc3MpLgorICBcZGltZW4yID0gXHBhZ2VoZWlnaHQgICBcYWR2YW5jZVxkaW1lbjIgYnkgLVxwYWdldG90YWwKKyAgJSBpZiB0aGUgZ3JvdXAgZG9lc24ndCBmaXQgb24gdGhlIGN1cnJlbnQgcGFnZSwgYW5kIGl0J3MgYSBiaWcgYmlnCisgICUgZ3JvdXAsIGZvcmNlIGEgcGFnZSBicmVhay4KKyAgXGlmZGltIFxkaW1lbjAgPiBcZGltZW4yCisgICAgXGlmZGltIFxwYWdldG90YWwgPCBcdmZpbGxsaW1pdFxwYWdlaGVpZ2h0CisgICAgICBccGFnZQorICAgIFxmaQorICBcZmkKKyAgXGJveFxncm91cGJveAorICBccHJldmRlcHRoID0gXGRpbWVuMQorICBcY2hlY2tpbnNlcnRzCit9CislCislIFRlWCBwdXRzIGluIGFuIFxlc2NhcGVjaGFyIChpLmUuLCBgQCcpIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlbHAKKyUgbWVzc2FnZSwgc28gdGhpcyBlbmRzIHVwIHByaW50aW5nIGBAZ3JvdXAgY2FuIG9ubHkgLi4uJy4KKyUKK1xuZXdoZWxwXGdyb3VwaW52YWxpZGhlbHB7JQorZ3JvdXAgY2FuIG9ubHkgYmUgdXNlZCBpbiBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZXhhbXBsZSxeXkolCit3aGVyZSBlYWNoIGxpbmUgb2YgaW5wdXQgcHJvZHVjZXMgYSBsaW5lIG9mIG91dHB1dC59CisKKyUgQG5lZWQgc3BhY2UtaW4tbWlscworJSBmb3JjZXMgYSBwYWdlIGJyZWFrIGlmIHRoZXJlIGlzIG5vdCBzcGFjZS1pbi1taWxzIHJlbWFpbmluZy4KKworXG5ld2RpbWVuXG1pbCAgXG1pbD0wLjAwMWluCisKKyUgT2xkIGRlZmluaXRpb24tLWRpZG4ndCB3b3JrLgorJVxwYXJzZWFyZ2RlZlxuZWVke1xwYXIgJQorJSUgVGhpcyBtZXRob2QgdHJpZXMgdG8gbWFrZSBUZVggYnJlYWsgdGhlIHBhZ2UgbmF0dXJhbGx5CislJSBpZiB0aGUgZGVwdGggb2YgdGhlIGJveCBkb2VzIG5vdCBmaXQuCisle1xiYXNlbGluZXNraXA9MHB0JQorJVx2dG9wIHRvICMxXG1pbHtcdmZpbH1ca2VybiAtIzFcbWlsXG5vYnJlYWsKKyVccHJldmRlcHRoPS0xMDAwcHQKKyV9fQorCitccGFyc2VhcmdkZWZcbmVlZHslCisgICUgRW5zdXJlIHZlcnRpY2FsIG1vZGUsIHNvIHdlIGRvbid0IG1ha2UgYSBiaWcgYm94IGluIHRoZSBtaWRkbGUgb2YgYQorICAlIHBhcmFncmFwaC4KKyAgXHBhcgorICAlCisgICUgSWYgdGhlIEBuZWVkIHZhbHVlIGlzIGxlc3MgdGhhbiBvbmUgbGluZSBzcGFjZSwgaXQncyB1c2VsZXNzLgorICBcZGltZW4wID0gIzFcbWlsCisgIFxkaW1lbjIgPSBcaHRcc3RydXRib3gKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IFxkcFxzdHJ1dGJveAorICBcaWZkaW1cZGltZW4wID4gXGRpbWVuMgorICAgICUKKyAgICAlIERvIGEgXHN0cnV0IGp1c3QgdG8gbWFrZSB0aGUgaGVpZ2h0IG9mIHRoaXMgYm94IGJlIG5vcm1hbCwgc28gdGhlCisgICAgJSBub3JtYWwgbGVhZGluZyBpcyBpbnNlcnRlZCByZWxhdGl2ZSB0byB0aGUgcHJlY2VkaW5nIGxpbmUuCisgICAgJSBBbmQgYSBwYWdlIGJyZWFrIGhlcmUgaXMgZmluZS4KKyAgICBcdnRvcCB0byAjMVxtaWx7XHN0cnV0XHZmaWx9JQorICAgICUKKyAgICAlIFRlWCBkb2VzIG5vdCBldmVuIGNvbnNpZGVyIHBhZ2UgYnJlYWtzIGlmIGEgcGVuYWx0eSBhZGRlZCB0byB0aGUKKyAgICAlIG1haW4gdmVydGljYWwgbGlzdCBpcyAxMDAwMCBvciBtb3JlLiAgQnV0IGluIG9yZGVyIHRvIHNlZSBpZiB0aGUKKyAgICAlIGVtcHR5IGJveCB3ZSBqdXN0IGFkZGVkIGZpdHMgb24gdGhlIHBhZ2UsIHdlIG11c3QgbWFrZSBpdCBjb25zaWRlcgorICAgICUgcGFnZSBicmVha3MuICBPbiB0aGUgb3RoZXIgaGFuZCwgd2UgZG9uJ3Qgd2FudCB0byBhY3R1YWxseSBicmVhayB0aGUKKyAgICAlIHBhZ2UgYWZ0ZXIgdGhlIGVtcHR5IGJveC4gIFNvIHdlIHVzZSBhIHBlbmFsdHkgb2YgOTk5OS4KKyAgICAlCisgICAgJSBUaGVyZSBpcyBhbiBleHRyZW1lbHkgc21hbGwgY2hhbmNlIHRoYXQgVGVYIHdpbGwgYWN0dWFsbHkgYnJlYWsgdGhlCisgICAgJSBwYWdlIGF0IHRoaXMgXHBlbmFsdHksIGlmIHRoZXJlIGFyZSBubyBvdGhlciBmZWFzaWJsZSBicmVha3BvaW50cyBpbgorICAgICUgc2lnaHQuICAoSWYgdGhlIHVzZXIgaXMgdXNpbmcgbG90cyBvZiBiaWcgQGdyb3VwIGNvbW1hbmRzLCB3aGljaAorICAgICUgYWxtb3N0LWJ1dC1ub3QtcXVpdGUgZmlsbCB1cCBhIHBhZ2UsIFRlWCB3aWxsIGhhdmUgYSBoYXJkIHRpbWUgZG9pbmcKKyAgICAlIGdvb2QgcGFnZSBicmVha2luZywgZm9yIGV4YW1wbGUuKSAgSG93ZXZlciwgSSBjb3VsZCBub3QgY29uc3RydWN0IGFuCisgICAgJSBleGFtcGxlIHdoZXJlIGEgcGFnZSBicm9rZSBhdCB0aGlzIFxwZW5hbHR5OyBpZiBpdCBoYXBwZW5zIGluIGEgcmVhbAorICAgICUgZG9jdW1lbnQsIHRoZW4gd2UgY2FuIHJlY29uc2lkZXIgb3VyIHN0cmF0ZWd5LgorICAgIFxwZW5hbHR5OTk5OQorICAgICUKKyAgICAlIEJhY2sgdXAgYnkgdGhlIHNpemUgb2YgdGhlIGJveCwgd2hldGhlciB3ZSBkaWQgYSBwYWdlIGJyZWFrIG9yIG5vdC4KKyAgICBca2VybiAtIzFcbWlsCisgICAgJQorICAgICUgRG8gbm90IGFsbG93IGEgcGFnZSBicmVhayByaWdodCBhZnRlciB0aGlzIGtlcm4uCisgICAgXG5vYnJlYWsKKyAgXGZpCit9CisKKyUgQGJyICAgZm9yY2VzIHBhcmFncmFwaCBicmVhayAoYW5kIGlzIHVuZG9jdW1lbnRlZCkuCisKK1xsZXRcYnIgPSBccGFyCisKKyUgQHBhZ2UgZm9yY2VzIHRoZSBzdGFydCBvZiBhIG5ldyBwYWdlLgorJQorXGRlZlxwYWdle1xwYXJcdmZpbGxcc3VwZXJlamVjdH0KKworJSBAZXhkZW50IHRleHQuLi4uCislIG91dHB1dHMgdGV4dCBvbiBzZXBhcmF0ZSBsaW5lIGluIHJvbWFuIGZvbnQsIHN0YXJ0aW5nIGF0IHN0YW5kYXJkIHBhZ2UgbWFyZ2luCisKKyUgVGhpcyByZWNvcmRzIHRoZSBhbW91bnQgb2YgaW5kZW50IGluIHRoZSBpbm5lcm1vc3QgZW52aXJvbm1lbnQuCislIFRoYXQncyBob3cgbXVjaCBcZXhkZW50IHNob3VsZCB0YWtlIG91dC4KK1xuZXdza2lwXGV4ZGVudGFtb3VudAorCislIFRoaXMgZGVmbiBpcyB1c2VkIGluc2lkZSBmaWxsIGVudmlyb25tZW50cyBzdWNoIGFzIEBkZWZ1bi4KK1xwYXJzZWFyZ2RlZlxleGRlbnR7XGhmaWxcYnJlYWtcaGJveHtca2VybiAtXGV4ZGVudGFtb3VudHtccm0jMX19XGhmaWxcYnJlYWt9CisKKyUgVGhpcyBkZWZuIGlzIHVzZWQgaW5zaWRlIG5vZmlsbCBlbnZpcm9ubWVudHMgc3VjaCBhcyBAZXhhbXBsZS4KK1xwYXJzZWFyZ2RlZlxub2ZpbGxleGRlbnR7e1xhZHZhbmNlIFxsZWZ0c2tpcCBieSAtXGV4ZGVudGFtb3VudAorICBcbGVmdGxpbmV7XGhza2lwXGxlZnRza2lwe1xybSMxfX19fQorCislIEBpbm1hcmdpbntXSElDSH17VEVYVH0gcHV0cyBURVhUIGluIHRoZSBXSElDSCBtYXJnaW4gbmV4dCB0byB0aGUgY3VycmVudAorJSBwYXJhZ3JhcGguICBGb3IgbW9yZSBnZW5lcmFsIHB1cnBvc2VzLCB1c2UgdGhlIFxtYXJnaW4gaW5zZXJ0aW9uCislIGNsYXNzLiAgV0hJQ0ggaXMgYGwnIG9yIGByJy4KKyUKK1xuZXdza2lwXGlubWFyZ2luc3BhY2luZyBcaW5tYXJnaW5zcGFjaW5nPTFjbQorXGRlZlxzdHJ1dGRlcHRoe1xkcFxzdHJ1dGJveH0KKyUKK1xkZWZcZG9pbm1hcmdpbiMxIzJ7XHN0cnV0XHZhZGp1c3R7JQorICBcbm9icmVhaworICBca2Vybi1cc3RydXRkZXB0aAorICBcdnRvcCB0byBcc3RydXRkZXB0aHslCisgICAgXGJhc2VsaW5lc2tpcD1cc3RydXRkZXB0aAorICAgIFx2c3MKKyAgICAlIGlmIHlvdSBoYXZlIG11bHRpcGxlIGxpbmVzIG9mIHN0dWZmIHRvIHB1dCBoZXJlLCB5b3UnbGwgbmVlZCB0bworICAgICUgbWFrZSB0aGUgdmJveCB5b3Vyc2VsZiBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZS4KKyAgICBcaWZ4IzFsJQorICAgICAgXGxsYXB7XGlnbm9yZXNwYWNlcyAjMlxoc2tpcFxpbm1hcmdpbnNwYWNpbmd9JQorICAgIFxlbHNlCisgICAgICBccmxhcHtcaHNraXBcaHNpemUgXGhza2lwXGlubWFyZ2luc3BhY2luZyBcaWdub3Jlc3BhY2VzICMyfSUKKyAgICBcZmkKKyAgICBcbnVsbAorICB9JQorfX0KK1xkZWZcaW5sZWZ0bWFyZ2lue1xkb2lubWFyZ2luIGx9CitcZGVmXGlucmlnaHRtYXJnaW57XGRvaW5tYXJnaW4gcn0KKyUKKyUgQGlubWFyZ2lue1RFWFQgWywgUklHSFQtVEVYVF19CislIChpZiBSSUdIVC1URVhUIGlzIGdpdmVuLCB1c2UgVEVYVCBmb3IgbGVmdCBwYWdlLCBSSUdIVC1URVhUIGZvciByaWdodDsKKyUgZWxzZSB1c2UgVEVYVCBmb3IgYm90aCkuCislCitcZGVmXGlubWFyZ2luIzF7XHBhcnNlaW5tYXJnaW4gIzEsLFxmaW5pc2h9CitcZGVmXHBhcnNlaW5tYXJnaW4jMSwjMiwjM1xmaW5pc2h7JSBub3QgcGVyZmVjdCwgYnV0IGJldHRlciB0aGFuIG5vdGhpbmcuCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCisgIFxpZmRpbVx3ZDAgPiAwcHQKKyAgICBcZGVmXGxlZnR0ZXh0eyMxfSUgIGhhdmUgYm90aCB0ZXh0cworICAgIFxkZWZccmlnaHR0ZXh0eyMyfSUKKyAgXGVsc2UKKyAgICBcZGVmXGxlZnR0ZXh0eyMxfSUgIGhhdmUgb25seSBvbmUgdGV4dAorICAgIFxkZWZccmlnaHR0ZXh0eyMxfSUKKyAgXGZpCisgICUKKyAgXGlmb2RkXHBhZ2VubworICAgIFxkZWZcdGVtcHtcaW5yaWdodG1hcmdpblxyaWdodHRleHR9JSBvZGQgcGFnZSAtPiBvdXRzaWRlIGlzIHJpZ2h0IG1hcmdpbgorICBcZWxzZQorICAgIFxkZWZcdGVtcHtcaW5sZWZ0bWFyZ2luXGxlZnR0ZXh0fSUKKyAgXGZpCisgIFx0ZW1wCit9CisKKyUgQGluY2x1ZGUgZmlsZSAgICBpbnNlcnQgdGV4dCBvZiB0aGF0IGZpbGUgYXMgaW5wdXQuCislCitcZGVmXGluY2x1ZGV7XHBhcnNlYXJndXNpbmdcZmlsZW5hbWVjYXRjb2Rlc1xpbmNsdWRlenp6fQorXGRlZlxpbmNsdWRlenp6IzF7JQorICBccHVzaHRoaXNmaWxlc3RhY2sKKyAgXGRlZlx0aGlzZmlsZXsjMX0lCisgIHslCisgICAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKKyAgICBcZGVmXHRlbXB7XGlucHV0ICMxIH0lCisgICAgXGV4cGFuZGFmdGVyCisgIH1cdGVtcAorICBccG9wdGhpc2ZpbGVzdGFjaworfQorXGRlZlxmaWxlbmFtZWNhdGNvZGVzeyUKKyAgXGNhdGNvZGVgXFw9XG90aGVyCisgIFxjYXRjb2RlYH49XG90aGVyCisgIFxjYXRjb2RlYF49XG90aGVyCisgIFxjYXRjb2RlYF89XG90aGVyCisgIFxjYXRjb2RlYHw9XG90aGVyCisgIFxjYXRjb2RlYDw9XG90aGVyCisgIFxjYXRjb2RlYD49XG90aGVyCisgIFxjYXRjb2RlYCs9XG90aGVyCisgIFxjYXRjb2RlYC09XG90aGVyCit9CisKK1xkZWZccHVzaHRoaXNmaWxlc3RhY2t7JQorICBcZXhwYW5kYWZ0ZXJccHVzaHRoaXNmaWxlc3RhY2tYXHBvcHRoaXNmaWxlc3RhY2tcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWHslCisgIFxleHBhbmRhZnRlclxwdXNodGhpc2ZpbGVzdGFja1lcdGhpc2ZpbGVcU3RhY2tUZXJtCit9CitcZGVmXHB1c2h0aGlzZmlsZXN0YWNrWSAjMVxTdGFja1Rlcm0gIzJcU3RhY2tUZXJtIHslCisgIFxnZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGdkZWZcdGhpc2ZpbGV7IzF9XGdkZWZccG9wdGhpc2ZpbGVzdGFja3sjMn19JQorfQorCitcZGVmXHBvcHRoaXNmaWxlc3RhY2t7XGVycnRoaXNmaWxlc3RhY2tlbXB0eX0KK1xkZWZcZXJydGhpc2ZpbGVzdGFja2VtcHR5e1xlcnJtZXNzYWdle0ludGVybmFsIGVycm9yOgorICB0aGUgc3RhY2sgb2YgZmlsZW5hbWVzIGlzIGVtcHR5Ln19CisKK1xkZWZcdGhpc2ZpbGV7fQorCislIEBjZW50ZXIgbGluZQorJSBvdXRwdXRzIHRoYXQgbGluZSwgY2VudGVyZWQuCislCitccGFyc2VhcmdkZWZcY2VudGVyeyUKKyAgXGlmaG1vZGUKKyAgICBcbGV0XG5leHRcY2VudGVySAorICBcZWxzZQorICAgIFxsZXRcbmV4dFxjZW50ZXJWCisgIFxmaQorICBcbmV4dHtcaGZpbCBcaWdub3Jlc3BhY2VzIzFcdW5za2lwIFxoZmlsfSUKK30KK1xkZWZcY2VudGVySCMxeyUKKyAgeyUKKyAgICBcaGZpbFxicmVhaworICAgIFxhZHZhbmNlXGhzaXplIGJ5IC1cbGVmdHNraXAKKyAgICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAorICAgIFxsaW5leyMxfSUKKyAgICBcYnJlYWsKKyAgfSUKK30KK1xkZWZcY2VudGVyViMxe1xsaW5le1xrZXJuXGxlZnRza2lwICMxXGtlcm5ccmlnaHRza2lwfX0KKworJSBAc3AgbiAgIG91dHB1dHMgbiBsaW5lcyBvZiB2ZXJ0aWNhbCBzcGFjZQorCitccGFyc2VhcmdkZWZcc3B7XHZza2lwICMxXGJhc2VsaW5lc2tpcH0KKworJSBAY29tbWVudCAuLi5saW5lIHdoaWNoIGlzIGlnbm9yZWQuLi4KKyUgQGMgaXMgdGhlIHNhbWUgYXMgQGNvbW1lbnQKKyUgQGlnbm9yZSAuLi4gQGVuZCBpZ25vcmUgIGlzIGFub3RoZXIgd2F5IHRvIHdyaXRlIGEgY29tbWVudAorCitcZGVmXGNvbW1lbnR7XGJlZ2luZ3JvdXAgXGNhdGNvZGVgXF5eTT1cb3RoZXIlCitcY2F0Y29kZWBcQD1cb3RoZXIgXGNhdGNvZGVgXHs9XG90aGVyIFxjYXRjb2RlYFx9PVxvdGhlciUKK1xjb21tZW50eHh4fQore1xjYXRjb2RlYFxeXk09XG90aGVyIFxnZGVmXGNvbW1lbnR4eHgjMV5eTXtcZW5kZ3JvdXB9fQorCitcbGV0XGM9XGNvbW1lbnQKKworJSBAcGFyYWdyYXBoaW5kZW50IE5DSEFSUworJSBXZSdsbCB1c2UgZW1zIGZvciBOQ0hBUlMsIGNsb3NlIGVub3VnaC4KKyUgTkNIQVJTIGNhbiBhbHNvIGJlIHRoZSB3b3JkIGBhc2lzJyBvciBgbm9uZScuCislIFdlIGNhbm5vdCBmZWFzaWJseSBpbXBsZW1lbnQgQHBhcmFncmFwaGluZGVudCBhc2lzLCB0aG91Z2guCislCitcZGVmXGFzaXN3b3Jke2FzaXN9ICUgbm8gdHJhbnNsYXRpb24sIHRoZXNlIGFyZSBrZXl3b3JkcworXGRlZlxub25ld29yZHtub25lfQorJQorXHBhcnNlYXJnZGVmXHBhcmFncmFwaGluZGVudHslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxpZnhcdGVtcFxhc2lzd29yZAorICBcZWxzZQorICAgIFxpZnhcdGVtcFxub25ld29yZAorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAwcHQKKyAgICBcZWxzZQorICAgICAgXGRlZmF1bHRwYXJpbmRlbnQgPSAjMWVtCisgICAgXGZpCisgIFxmaQorICBccGFyaW5kZW50ID0gXGRlZmF1bHRwYXJpbmRlbnQKK30KKworJSBAZXhhbXBsZWluZGVudCBOQ0hBUlMKKyUgV2UnbGwgdXNlIGVtcyBmb3IgTkNIQVJTIGxpa2UgQHBhcmFncmFwaGluZGVudC4KKyUgSXQgc2VlbXMgQGV4YW1wbGVpbmRlbnQgYXNpcyBpc24ndCBuZWNlc3NhcnksIGJ1dAorJSBJIHByZXNlcnZlIGl0IHRvIG1ha2UgaXQgc2ltaWxhciB0byBAcGFyYWdyYXBoaW5kZW50LgorXHBhcnNlYXJnZGVmXGV4YW1wbGVpbmRlbnR7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcYXNpc3dvcmQKKyAgXGVsc2UKKyAgICBcaWZ4XHRlbXBcbm9uZXdvcmQKKyAgICAgIFxsaXNwbmFycm93aW5nID0gMHB0CisgICAgXGVsc2UKKyAgICAgIFxsaXNwbmFycm93aW5nID0gIzFlbQorICAgIFxmaQorICBcZmkKK30KKworJSBAZmlyc3RwYXJhZ3JhcGhpbmRlbnQgV09SRAorJSBJZiBXT1JEIGlzIGBub25lJywgdGhlbiBzdXBwcmVzcyBpbmRlbnRhdGlvbiBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoCislIGFmdGVyIGEgc2VjdGlvbiBoZWFkaW5nLiAgSWYgV09SRCBpcyBgaW5zZXJ0JywgdGhlbiBkbyBpbmRlbnQgYXQgc3VjaAorJSBwYXJhZ3JhcGhzLgorJQorJSBUaGUgcGFyYWdyYXBoIGluZGVudGF0aW9uIGlzIHN1cHByZXNzZWQgb3Igbm90IGJ5IGNhbGxpbmcKKyUgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQsIHdoaWNoIHRoZSBzZWN0aW9uaW5nIGNvbW1hbmRzIGRvLgorJSBXZSBzd2l0Y2ggdGhlIGRlZmluaXRpb24gb2YgdGhpcyBiYWNrIGFuZCBmb3J0aCBhY2NvcmRpbmcgdG8gV09SRC4KKyUgQnkgZGVmYXVsdCwgd2Ugc3VwcHJlc3MgaW5kZW50YXRpb24uCislCitcZGVmXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7XGRvc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xkZWZcaW5zZXJ0d29yZHtpbnNlcnR9CislCitccGFyc2VhcmdkZWZcZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcbm9uZXdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBcZG9zdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50CisgIFxlbHNlXGlmeFx0ZW1wXGluc2VydHdvcmQKKyAgICBcbGV0XHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnQgPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGZpcnN0cGFyYWdyYXBoaW5kZW50IG9wdGlvbiBgXHRlbXAnfSUKKyAgXGZpXGZpCit9CisKKyUgSGVyZSBpcyBob3cgd2UgYWN0dWFsbHkgc3VwcHJlc3MgaW5kZW50YXRpb24uICBSZWRlZmluZSBcZXZlcnlwYXIgdG8KKyUgXGtlcm4gYmFja3dhcmRzIGJ5IFxwYXJpbmRlbnQsIGFuZCB0aGVuIHJlc2V0IGl0c2VsZiB0byBlbXB0eS4KKyUKKyUgV2UgYWxzbyBtYWtlIFxpbmRlbnQgaXRzZWxmIG5vdCBhY3R1YWxseSBkbyBhbnl0aGluZyB1bnRpbCB0aGUgbmV4dAorJSBwYXJhZ3JhcGguCislCitcZ2RlZlxkb3N1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2RlZlxpbmRlbnR7JQorICAgIFxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnQKKyAgICBcaW5kZW50CisgIH0lCisgIFxnZGVmXG5vaW5kZW50eyUKKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50CisgICAgXG5vaW5kZW50CisgIH0lCisgIFxnbG9iYWxcZXZlcnlwYXIgPSB7JQorICAgIFxrZXJuIC1ccGFyaW5kZW50CisgICAgXHJlc3RvcmVmaXJzdHBhcmFncmFwaGluZGVudAorICB9JQorfQorCitcZ2RlZlxyZXN0b3JlZmlyc3RwYXJhZ3JhcGhpbmRlbnR7JQorICBcZ2xvYmFsIFxsZXQgXGluZGVudCA9IFxwdGV4aW5kZW50CisgIFxnbG9iYWwgXGxldCBcbm9pbmRlbnQgPSBccHRleG5vaW5kZW50CisgIFxnbG9iYWwgXGV2ZXJ5cGFyID0ge30lCit9CisKKworJSBAYXNpcyBqdXN0IHlpZWxkcyBpdHMgYXJndW1lbnQuICBVc2VkIHdpdGggQHRhYmxlLCBmb3IgZXhhbXBsZS4KKyUKK1xkZWZcYXNpcyMxeyMxfQorCislIEBtYXRoIG91dHB1dHMgaXRzIGFyZ3VtZW50IGluIG1hdGggbW9kZS4KKyUKKyUgT25lIGNvbXBsaWNhdGlvbjogXyB1c3VhbGx5IG1lYW5zIHN1YnNjcmlwdHMsIGJ1dCBpdCBjb3VsZCBhbHNvIG1lYW4KKyUgYW4gYWN0dWFsIF8gY2hhcmFjdGVyLCBhcyBpbiBAbWF0aHtAdmFye3NvbWVfdmFyaWFibGV9ICsgMX0uICBTbyBtYWtlCislIF8gYWN0aXZlLCBhbmQgZGlzdGluZ3Vpc2ggYnkgc2VlaW5nIGlmIHRoZSBjdXJyZW50IGZhbWlseSBpcyBcc2xmYW0sCislIHdoaWNoIGlzIHdoYXQgQHZhciB1c2VzLgoreworICBcY2F0Y29kZWBcXyA9IFxhY3RpdmUKKyAgXGdkZWZcbWF0aHVuZGVyc2NvcmV7JQorICAgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgICBcZGVmX3tcaWZudW1cZmFtPVxzbGZhbSBcX1xlbHNlXHNiXGZpfSUKKyAgfQorfQorJSBBbm90aGVyIGNvbXBsaWNhdGlvbjogd2Ugd2FudCBcXCAoYW5kIEBcKSB0byBvdXRwdXQgYSBcIGNoYXJhY3Rlci4KKyUgRllJLCBwbGFpbi50ZXggdXNlcyBcXCBhcyBhIHRlbXBvcmFyeSBjb250cm9sIHNlcXVlbmNlICh3aHk/KSwgYnV0CislIHRoaXMgaXMgbm90IGFkdmVydGlzZWQgYW5kIHdlIGRvbid0IGNhcmUuICBUZXhpbmZvIGRvZXMgbm90CislIG90aGVyd2lzZSBkZWZpbmUgQFwuCislCislIFRoZSBcbWF0aGNoYXIgaXMgY2xhc3M9MD1vcmRpbmFyeSwgZmFtaWx5PTc9dHRmYW0sIHBvc2l0aW9uPTVDPVwuCitcZGVmXG1hdGhiYWNrc2xhc2h7XGlmbnVtXGZhbT1cdHRmYW0gXG1hdGhjaGFyIjA3NUMgXGVsc2VcYmFja3NsYXNoIFxmaX0KKyUKK1xkZWZcbWF0aHslCisgIFx0ZXgKKyAgXG1hdGh1bmRlcnNjb3JlCisgIFxsZXRcXCA9IFxtYXRoYmFja3NsYXNoCisgIFxtYXRoYWN0aXZlCisgICRcZmluaXNobWF0aAorfQorXGRlZlxmaW5pc2htYXRoIzF7IzEkXGVuZGdyb3VwfSAgJSBDbG9zZSB0aGUgZ3JvdXAgb3BlbmVkIGJ5IFx0ZXguCisKKyUgU29tZSBhY3RpdmUgY2hhcmFjdGVycyAoc3VjaCBhcyA8KSBhcmUgc3BhY2VkIGRpZmZlcmVudGx5IGluIG1hdGguCislIFdlIGhhdmUgdG8gcmVzZXQgdGhlaXIgZGVmaW5pdGlvbnMgaW4gY2FzZSB0aGUgQG1hdGggd2FzIGFuIGFyZ3VtZW50CislIHRvIGEgY29tbWFuZCB3aGljaCBzZXRzIHRoZSBjYXRjb2RlcyAoc3VjaCBhcyBAaXRlbSBvciBAc2VjdGlvbikuCislCit7CisgIFxjYXRjb2RlYF4gPSBcYWN0aXZlCisgIFxjYXRjb2RlYDwgPSBcYWN0aXZlCisgIFxjYXRjb2RlYD4gPSBcYWN0aXZlCisgIFxjYXRjb2RlYCsgPSBcYWN0aXZlCisgIFxnZGVmXG1hdGhhY3RpdmV7JQorICAgIFxsZXReID0gXHB0ZXhoYXQKKyAgICBcbGV0PCA9IFxwdGV4bGVzcworICAgIFxsZXQ+ID0gXHB0ZXhndHIKKyAgICBcbGV0KyA9IFxwdGV4cGx1cworICB9Cit9CisKKyUgQGJ1bGxldCBhbmQgQG1pbnVzIG5lZWQgdGhlIHNhbWUgdHJlYXRtZW50IGFzIEBtYXRoLCBqdXN0IGFib3ZlLgorXGRlZlxidWxsZXR7JFxwdGV4YnVsbGV0JH0KK1xkZWZcbWludXN7JC0kfQorCislIEBkb3Rze30gb3V0cHV0cyBhbiBlbGxpcHNpcyB1c2luZyB0aGUgY3VycmVudCBmb250LgorJSBXZSBkbyAuNWVtIHBlciBwZXJpb2Qgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3BhY2luZyBpbiBhIHR5cGV3cml0ZXIKKyUgZm9udCBhcyB0aHJlZSBhY3R1YWwgcGVyaW9kIGNoYXJhY3RlcnMuCislCitcZGVmXGRvdHN7JQorICBcbGVhdmV2bW9kZQorICBcaGJveCB0byAxLjVlbXslCisgICAgXGhza2lwIDBwdCBwbHVzIDAuMjVmaWwKKyAgICAuXGhmaWwuXGhmaWwuJQorICAgIFxoc2tpcCAwcHQgcGx1cyAwLjVmaWwKKyAgfSUKK30KKworJSBAZW5kZG90c3t9IGlzIGFuIGVuZC1vZi1zZW50ZW5jZSBlbGxpcHNpcy4KKyUKK1xkZWZcZW5kZG90c3slCisgIFxkb3RzCisgIFxzcGFjZWZhY3Rvcj1cZW5kb2ZzZW50ZW5jZXNwYWNlZmFjdG9yCit9CisKKyUgQGNvbW1he30gaXMgc28gY29tbWFzIGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRleHQgd2l0aG91dCBtZXNzaW5nIHVwCislIFRleGluZm8ncyBwYXJzaW5nLgorJQorXGxldFxjb21tYSA9ICwKKworJSBAcmVmaWxsIGlzIGEgbm8tb3AuCitcbGV0XHJlZmlsbD1ccmVsYXgKKworJSBJZiB3b3JraW5nIG9uIGEgbGFyZ2UgZG9jdW1lbnQgaW4gY2hhcHRlcnMsIGl0IGlzIGNvbnZlbmllbnQgdG8KKyUgYmUgYWJsZSB0byBkaXNhYmxlIGluZGV4aW5nLCBjcm9zcy1yZWZlcmVuY2luZywgYW5kIGNvbnRlbnRzLCBmb3IgdGVzdCBydW5zLgorJSBUaGlzIGlzIGRvbmUgd2l0aCBAbm92YWxpZGF0ZSAoYmVmb3JlIEBzZXRmaWxlbmFtZSkuCislCitcbmV3aWZcaWZsaW5rcyBcbGlua3N0cnVlICUgYnkgZGVmYXVsdCB3ZSB3YW50IHRoZSBhdXggZmlsZXMuCitcbGV0XG5vdmFsaWRhdGUgPSBcbGlua3NmYWxzZQorCislIEBzZXRmaWxlbmFtZSBpcyBkb25lIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkgdGV4aW5mbyBmaWxlLgorJSBTbyBvcGVuIGhlcmUgdGhlIGZpbGVzIHdlIG5lZWQgdG8gaGF2ZSBvcGVuIHdoaWxlIHJlYWRpbmcgdGhlIGlucHV0LgorJSBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIG1ha2UgYSAuZm10IGZpbGUgZm9yIHRleGluZm8uCitcZGVmXHNldGZpbGVuYW1leyUKKyAgIFxmaXhiYWNrc2xhc2ggICUgVHVybiBvZmYgaGFjayB0byBzd2FsbG93IGBcaW5wdXQgdGV4aW5mbycuCisgICBcaWZsaW5rcworICAgICBcdHJ5YXV4ZmlsZQorICAgICAlIE9wZW4gdGhlIG5ldyBhdXggZmlsZS4gIFRlWCB3aWxsIGNsb3NlIGl0IGF1dG9tYXRpY2FsbHkgYXQgZXhpdC4KKyAgICAgXGltbWVkaWF0ZVxvcGVub3V0XGF1eGZpbGU9XGpvYm5hbWUuYXV4CisgICBcZmkgJSBcb3BlbmluZGljZXMgbmVlZHMgdG8gZG8gc29tZSB3b3JrIGluIGFueSBjYXNlLgorICAgXG9wZW5pbmRpY2VzCisgICBcbGV0XHNldGZpbGVuYW1lPVxjb21tZW50ICUgSWdub3JlIGV4dHJhIEBzZXRmaWxlbmFtZSBjbWRzLgorICAgJQorICAgJSBJZiB0ZXhpbmZvLmNuZiBpcyBwcmVzZW50IG9uIHRoZSBzeXN0ZW0sIHJlYWQgaXQuCisgICAlIFVzZWZ1bCBmb3Igc2l0ZS13aWRlIEBhZm91cnBhcGVyLCBldGMuCisgICBcb3BlbmluIDEgdGV4aW5mby5jbmYKKyAgIFxpZmVvZiAxIFxlbHNlIFxpbnB1dCB0ZXhpbmZvLmNuZiBcZmkKKyAgIFxjbG9zZWluIDEKKyAgICUKKyAgIFxjb21tZW50ICUgSWdub3JlIHRoZSBhY3R1YWwgZmlsZW5hbWUuCit9CisKKyUgQ2FsbGVkIGZyb20gXHNldGZpbGVuYW1lLgorJQorXGRlZlxvcGVuaW5kaWNlc3slCisgIFxuZXdpbmRleHtjcH0lCisgIFxuZXdjb2RlaW5kZXh7Zm59JQorICBcbmV3Y29kZWluZGV4e3ZyfSUKKyAgXG5ld2NvZGVpbmRleHt0cH0lCisgIFxuZXdjb2RlaW5kZXh7a3l9JQorICBcbmV3Y29kZWluZGV4e3BnfSUKK30KKworJSBAYnllLgorXG91dGVyXGRlZlxieWV7XHBhZ2VhbGlnbm1hY3JvXHRyYWNpbmdzdGF0cz0xXHB0ZXhlbmR9CisKKworXG1lc3NhZ2V7cGRmLH0KKyUgYWRvYmUgYHBvcnRhYmxlJyBkb2N1bWVudCBmb3JtYXQKK1xuZXdjb3VudFx0ZW1wbnVtCitcbmV3Y291bnRcbG5rY291bnQKK1xuZXd0b2tzXGZpbGVuYW1lCitcbmV3Y291bnRcZmlsZW5hbWVsZW5ndGgKK1xuZXdjb3VudFxwZ24KK1xuZXd0b2tzXHRva3NBCitcbmV3dG9rc1x0b2tzQgorXG5ld3Rva3NcdG9rc0MKK1xuZXd0b2tzXHRva3NECitcbmV3Ym94XGJveEEKK1xuZXdjb3VudFxjb3VudEEKK1xuZXdpZlxpZnBkZgorXG5ld2lmXGlmcGRmbWFrZXBhZ2VkZXN0CisKKyUgd2hlbiBwZGZ0ZXggaXMgcnVuIGluIGR2aSBtb2RlLCBccGRmb3V0cHV0IGlzIGRlZmluZWQgKHNvIFxwZGZvdXRwdXQ9MQorJSBjYW4gYmUgc2V0KS4gIFNvIHdlIHRlc3QgZm9yIFxyZWxheCBhbmQgMCBhcyB3ZWxsIGFzIFx1bmRlZmluZWQsCislIGJvcnJvd2VkIGZyb20gaWZwZGYuc3R5LgorXGlmeFxwZGZvdXRwdXRcdW5kZWZpbmVkCitcZWxzZQorICBcaWZ4XHBkZm91dHB1dFxyZWxheAorICBcZWxzZQorICAgIFxpZmNhc2VccGRmb3V0cHV0CisgICAgXGVsc2UKKyAgICAgIFxwZGZ0cnVlCisgICAgXGZpCisgIFxmaQorXGZpCisKKyUgUERGIHVzZXMgUG9zdFNjcmlwdCBzdHJpbmcgY29uc3RhbnRzIGZvciB0aGUgbmFtZXMgb2YgeHJlZiB0YXJnZXRzLAorJSBmb3IgZGlzcGxheSBpbiB0aGUgb3V0bGluZXMsIGFuZCBpbiBvdGhlciBwbGFjZXMuICBUaHVzLCB3ZSBoYXZlIHRvCislIGRvdWJsZSBhbnkgYmFja3NsYXNoZXMuICBPdGhlcndpc2UsIGEgbmFtZSBsaWtlICJcbm9kZSIgd2lsbCBiZQorJSBpbnRlcnByZXRlZCBhcyBhIG5ld2xpbmUgKFxuKSwgZm9sbG93ZWQgYnkgbywgZCwgZS4gIE5vdCBnb29kLgorJSBodHRwOi8vd3d3Lm50Zy5ubC9waXBlcm1haWwvbnRnLXBkZnRleC8yMDA0LUp1bHkvMDAwNjU0Lmh0bWwKKyUgKGFuZCByZWxhdGVkIG1lc3NhZ2VzLCB0aGUgZmluYWwgb3V0Y29tZSBpcyB0aGF0IGl0IGlzIHVwIHRvIHRoZSBUZVgKKyUgdXNlciB0byBkb3VibGUgdGhlIGJhY2tzbGFzaGVzIGFuZCBvdGhlcndpc2UgbWFrZSB0aGUgc3RyaW5nIHZhbGlkLCBzbworJSB0aGF0J3Mgd2hhdCB3ZSBkbykuCisKKyUgZG91YmxlIGFjdGl2ZSBiYWNrc2xhc2hlcy4KKyUgCit7XGNhdGNvZGVgXEA9MCBcY2F0Y29kZWBcXD1cYWN0aXZlCisgQGdkZWZAYWN0aXZlYmFja3NsYXNoZG91YmxleyUKKyAgIEBjYXRjb2RlYEBcPUBhY3RpdmUKKyAgIEBsZXRcPUBkb3VibGViYWNrc2xhc2h9Cit9CisKKyUgVG8gaGFuZGxlIHBhcmVucywgd2UgbXVzdCBhZG9wdCBhIGRpZmZlcmVudCBhcHByb2FjaCwgc2luY2UgcGFyZW5zIGFyZQorJSBub3QgYWN0aXZlIGNoYXJhY3RlcnMuICBoeXBlcnJlZi5kdHggKHdoaWNoIGhhcyB0aGUgc2FtZSBwcm9ibGVtIGFzCislIHVzKSBoYW5kbGVzIGl0IHdpdGggdGhpcyBhbWF6aW5nIG1hY3JvIHRvIHJlcGxhY2UgdG9rZW5zLiAgSSd2ZQorJSB0aW5rZXJlZCB3aXRoIGl0IGEgbGl0dGxlIGZvciB0ZXhpbmZvLCBidXQgaXQncyBkZWZpbml0ZWx5IGZyb20gdGhlcmUuCislIAorJSAjMSBpcyB0aGUgdG9rZW5zIHRvIHJlcGxhY2UuCislICMyIGlzIHRoZSByZXBsYWNlbWVudC4KKyUgIzMgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2Ugd2l0aCB0aGUgc3RyaW5nLgorJSAKK1xkZWZcSHlQc2RTdWJzdCMxIzIjM3slCisgIFxkZWZcSHlQc2RSZXBsYWNlIyMxIzEjIzJcRU5EeyUKKyAgICAjIzElCisgICAgXGlmeFxcIyMyXFwlCisgICAgXGVsc2UKKyAgICAgICMyJQorICAgICAgXEh5UmV0dXJuQWZ0ZXJGaXslCisgICAgICAgIFxIeVBzZFJlcGxhY2UjIzJcRU5ECisgICAgICB9JQorICAgIFxmaQorICB9JQorICBceGRlZiMze1xleHBhbmRhZnRlclxIeVBzZFJlcGxhY2UjMyMxXEVORH0lCit9CitcbG9uZ1xkZWZcSHlSZXR1cm5BZnRlckZpIzFcZml7XGZpIzF9CisKKyUgIzEgaXMgYSBjb250cm9sIHNlcXVlbmNlIGluIHdoaWNoIHRvIGRvIHRoZSByZXBsYWNlbWVudHMuCitcZGVmXGJhY2tzbGFzaHBhcmVucyMxeyUKKyAgXHhkZWYjMXsjMX0lIHJlZGVmaW5lIGl0IGFzIGl0cyBleHBhbnNpb247IHRoZSBkZWZpbml0aW9uIGlzIHNpbXBseQorICAgICAgICAgICAgICUgXGxhc3Rub2RlIHdoZW4gY2FsbGVkIGZyb20gXHNldHJlZiAtPiBccGRmbWtkZXN0LgorICBcSHlQc2RTdWJzdHsofXtccmVhbGJhY2tzbGFzaCh9eyMxfSUKKyAgXEh5UHNkU3Vic3R7KX17XHJlYWxiYWNrc2xhc2gpfXsjMX0lCit9CisKK1xpZnBkZgorICBcaW5wdXQgcGRmY29sb3IKKyAgXHBkZmNhdGFsb2d7L1BhZ2VNb2RlIC9Vc2VPdXRsaW5lc30lCisgIFxkZWZcZG9wZGZpbWFnZSMxIzIjM3slCisgICAgXGRlZlxpbWFnZXdpZHRoeyMyfSUKKyAgICBcZGVmXGltYWdlaGVpZ2h0eyMzfSUKKyAgICAlIHdpdGhvdXQgXGltbWVkaWF0ZSwgcGRmdGV4IHNlZyBmYXVsdHMgd2hlbiB0aGUgc2FtZSBpbWFnZSBpcworICAgICUgaW5jbHVkZWQgdHdpY2UuICAoVmVyc2lvbiAzLjE0MTU5LXByZS0xLjAtdW5vZmZpY2lhbC0yMDAxMDcwNC4pCisgICAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNAorICAgICAgXGltbWVkaWF0ZVxwZGZpbWFnZQorICAgIFxlbHNlCisgICAgICBcaW1tZWRpYXRlXHBkZnhpbWFnZQorICAgIFxmaQorICAgICAgXGlmeFxlbXB0eVxpbWFnZXdpZHRoXGVsc2Ugd2lkdGggXGltYWdld2lkdGggXGZpCisgICAgICBcaWZ4XGVtcHR5XGltYWdlaGVpZ2h0XGVsc2UgaGVpZ2h0IFxpbWFnZWhlaWdodCBcZmkKKyAgICAgIFxpZm51bVxwZGZ0ZXh2ZXJzaW9uPDEzCisgICAgICAgICAjMS5wZGYlCisgICAgICAgXGVsc2UKKyAgICAgICAgIHsjMS5wZGZ9JQorICAgICAgIFxmaQorICAgIFxpZm51bVxwZGZ0ZXh2ZXJzaW9uIDwgMTQgXGVsc2UKKyAgICAgIFxwZGZyZWZ4aW1hZ2UgXHBkZmxhc3R4aW1hZ2UKKyAgICBcZml9CisgIFxkZWZccGRmbWtkZXN0IzF7eyUKKyAgICAlIFdlIGhhdmUgdG8gc2V0IGR1bW1pZXMgc28gY29tbWFuZHMgc3VjaCBhcyBAY29kZSwgYW5kIGNoYXJhY3RlcnMKKyAgICAlIHN1Y2ggYXMgXCwgYXJlbid0IGV4cGFuZGVkIHdoZW4gcHJlc2VudCBpbiBhIHNlY3Rpb24gdGl0bGUuCisgICAgXGF0ZHVtbWllcworICAgIFxhY3RpdmViYWNrc2xhc2hkb3VibGUKKyAgICBcZGVmXHBkZmRlc3RuYW1leyMxfSUKKyAgICBcYmFja3NsYXNocGFyZW5zXHBkZmRlc3RuYW1lCisgICAgXHBkZmRlc3QgbmFtZXtccGRmZGVzdG5hbWV9IHh5eiUKKyAgfX0lCisgICUKKyAgJSB1c2VkIHRvIG1hcmsgdGFyZ2V0IG5hbWVzOyBtdXN0IGJlIGV4cGFuZGFibGUuCisgIFxkZWZccGRmbWtwZ24jMXsjMX0lCisgICUKKyAgXGxldFxsaW5rY29sb3IgPSBcQmx1ZSAgJSB3YXMgQ3lhbiwgYnV0IHRoYXQgc2VlbXMgbGlnaHQ/CisgIFxkZWZcZW5kbGlua3tcQmxhY2tccGRmZW5kbGlua30KKyAgJSBBZGRpbmcgb3V0bGluZXMgdG8gUERGOyBtYWNyb3MgZm9yIGNhbGN1bGF0aW5nIHN0cnVjdHVyZSBvZiBvdXRsaW5lcworICAlIGNvbWUgZnJvbSBQZXRyIE9sc2FrCisgIFxkZWZcZXhwbnVtYmVyIzF7XGV4cGFuZGFmdGVyXGlmeFxjc25hbWUjMVxlbmRjc25hbWVccmVsYXggMCUKKyAgICBcZWxzZSBcY3NuYW1lIzFcZW5kY3NuYW1lIFxmaX0KKyAgXGRlZlxhZHZhbmNlbnVtYmVyIzF7XHRlbXBudW09XGV4cG51bWJlcnsjMX1ccmVsYXgKKyAgICBcYWR2YW5jZVx0ZW1wbnVtIGJ5IDEKKyAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMVxlbmRjc25hbWV7XHRoZVx0ZW1wbnVtfX0KKyAgJQorICAlICMxIGlzIHRoZSBzZWN0aW9uIHRleHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlCisgICUgb3V0bGluZSBieSB0aGUgcGRmIHZpZXdlci4gICMyIGlzIHRoZSBwZGYgZXhwcmVzc2lvbiBmb3IgdGhlIG51bWJlcgorICAlIG9mIHN1YmVudHJpZXMgKG9yIGVtcHR5LCBmb3Igc3Vic3Vic2VjdGlvbnMpLiAgIzMgaXMgdGhlIG5vZGUgdGV4dCwKKyAgJSB3aGljaCBtaWdodCBiZSBlbXB0eSBpZiB0aGlzIHRvYyBlbnRyeSBoYWQgbm8gY29ycmVzcG9uZGluZyBub2RlLgorICAlICM0IGlzIHRoZSBwYWdlIG51bWJlcgorICAlCisgIFxkZWZcZG9wZGZvdXRsaW5lIzEjMiMzIzR7JQorICAgICUgR2VuZXJhdGUgYSBsaW5rIHRvIHRoZSBub2RlIHRleHQgaWYgdGhhdCBleGlzdHM7IGVsc2UsIHVzZSB0aGUKKyAgICAlIHBhZ2UgbnVtYmVyLiAgV2UgY291bGQgZ2VuZXJhdGUgYSBkZXN0aW5hdGlvbiBmb3IgdGhlIHNlY3Rpb24KKyAgICAlIHRleHQgaW4gdGhlIGNhc2Ugd2hlcmUgYSBzZWN0aW9uIGhhcyBubyBub2RlLCBidXQgaXQgZG9lc24ndAorICAgICUgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSwgc2luY2UgbW9zdCBkb2N1bWVudHMgYXJlIG5vcm1hbGx5IHN0cnVjdHVyZWQuCisgICAgXGRlZlxwZGZvdXRsaW5lZGVzdHsjM30lCisgICAgXGlmeFxwZGZvdXRsaW5lZGVzdFxlbXB0eQorICAgICAgXGRlZlxwZGZvdXRsaW5lZGVzdHsjNH0lCisgICAgXGVsc2UKKyAgICAgICUgRG91YmxlZCBiYWNrc2xhc2hlcyBpbiB0aGUgbmFtZS4KKyAgICAgIHtcYWN0aXZlYmFja3NsYXNoZG91YmxlIFx4ZGVmXHBkZm91dGxpbmVkZXN0eyMzfSUKKyAgICAgICBcYmFja3NsYXNocGFyZW5zXHBkZm91dGxpbmVkZXN0fSUKKyAgICBcZmkKKyAgICAlCisgICAgJSBBbHNvIGRvdWJsZSB0aGUgYmFja3NsYXNoZXMgaW4gdGhlIGRpc3BsYXkgc3RyaW5nLgorICAgIHtcYWN0aXZlYmFja3NsYXNoZG91YmxlIFx4ZGVmXHBkZm91dGxpbmV0ZXh0eyMxfSUKKyAgICAgXGJhY2tzbGFzaHBhcmVuc1xwZGZvdXRsaW5ldGV4dH0lCisgICAgJQorICAgIFxwZGZvdXRsaW5lIGdvdG8gbmFtZXtccGRmbWtwZ257XHBkZm91dGxpbmVkZXN0fX0jMntccGRmb3V0bGluZXRleHR9JQorICB9CisgICUKKyAgXGRlZlxwZGZtYWtlb3V0bGluZXN7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICAlIFRoYW5oJ3MgaGFjayAvIHByb3BlciBicmFjZXMgaW4gYm9va21hcmtzCisgICAgICBcZWRlZlxteWxicmFjZXtcaWZ0cnVlIFxzdHJpbmd7XGVsc2V9XGZpfVxsZXRcez1cbXlsYnJhY2UKKyAgICAgIFxlZGVmXG15cmJyYWNle1xpZmZhbHNle1xlbHNlXHN0cmluZ31cZml9XGxldFx9PVxteXJicmFjZQorICAgICAgJQorICAgICAgJSBSZWFkIHRvYyBzaWxlbnRseSwgdG8gZ2V0IGNvdW50cyBvZiBzdWJlbnRyaWVzIGZvciBccGRmb3V0bGluZS4KKyAgICAgIFxkZWZcbnVtY2hhcGVudHJ5IyMxIyMyIyMzIyM0eyUKKwlcZGVmXHRoaXNjaGFwbnVteyMjMn0lCisJXGRlZlx0aGlzc2VjbnVtezB9JQorCVxkZWZcdGhpc3N1YnNlY251bXswfSUKKyAgICAgIH0lCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKwlcYWR2YW5jZW51bWJlcntjaGFwXHRoaXNjaGFwbnVtfSUKKwlcZGVmXHRoaXNzZWNudW17IyMyfSUKKwlcZGVmXHRoaXNzdWJzZWNudW17MH0lCisgICAgICB9JQorICAgICAgXGRlZlxudW1zdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslCisJXGFkdmFuY2VudW1iZXJ7c2VjXHRoaXNzZWNudW19JQorCVxkZWZcdGhpc3N1YnNlY251bXsjIzJ9JQorICAgICAgfSUKKyAgICAgIFxkZWZcbnVtc3Vic3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorCVxhZHZhbmNlbnVtYmVye3N1YnNlY1x0aGlzc3Vic2VjbnVtfSUKKyAgICAgIH0lCisgICAgICBcZGVmXHRoaXNjaGFwbnVtezB9JQorICAgICAgXGRlZlx0aGlzc2VjbnVtezB9JQorICAgICAgXGRlZlx0aGlzc3Vic2VjbnVtezB9JQorICAgICAgJQorICAgICAgJSB1c2UgXGRlZiByYXRoZXIgdGhhbiBcbGV0IGhlcmUgYmVjYXVzZSB3ZSByZWRlZmluZSBcY2hhcGVudHJ5IGV0CisgICAgICAlIGFsLiBhIHNlY29uZCB0aW1lLCBiZWxvdy4KKyAgICAgIFxkZWZcYXBwZW50cnl7XG51bWNoYXBlbnRyeX0lCisgICAgICBcZGVmXGFwcHNlY2VudHJ5e1xudW1zZWNlbnRyeX0lCisgICAgICBcZGVmXGFwcHN1YnNlY2VudHJ5e1xudW1zdWJzZWNlbnRyeX0lCisgICAgICBcZGVmXGFwcHN1YnN1YnNlY2VudHJ5e1xudW1zdWJzdWJzZWNlbnRyeX0lCisgICAgICBcZGVmXHVubmNoYXBlbnRyeXtcbnVtY2hhcGVudHJ5fSUKKyAgICAgIFxkZWZcdW5uc2VjZW50cnl7XG51bXNlY2VudHJ5fSUKKyAgICAgIFxkZWZcdW5uc3Vic2VjZW50cnl7XG51bXN1YnNlY2VudHJ5fSUKKyAgICAgIFxkZWZcdW5uc3Vic3Vic2VjZW50cnl7XG51bXN1YnN1YnNlY2VudHJ5fSUKKyAgICAgIFxyZWFkZGF0YWZpbGV7dG9jfSUKKyAgICAgICUKKyAgICAgICUgUmVhZCB0b2Mgc2Vjb25kIHRpbWUsIHRoaXMgdGltZSBhY3R1YWxseSBwcm9kdWNpbmcgdGhlIG91dGxpbmVzLgorICAgICAgJSBUaGUgYC0nIG1lYW5zIHRha2UgdGhlIFxleHBudW1iZXIgYXMgdGhlIGFic29sdXRlIG51bWJlciBvZgorICAgICAgJSBzdWJlbnRyaWVzLCB3aGljaCB3ZSBjYWxjdWxhdGVkIG9uIG91ciBmaXJzdCByZWFkIG9mIHRoZSAudG9jIGFib3ZlLgorICAgICAgJQorICAgICAgJSBXZSB1c2UgdGhlIG5vZGUgbmFtZXMgYXMgdGhlIGRlc3RpbmF0aW9ucy4KKyAgICAgIFxkZWZcbnVtY2hhcGVudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7Y2hhcCMjMn19eyMjM317IyM0fX0lCisgICAgICBcZGVmXG51bXNlY2VudHJ5IyMxIyMyIyMzIyM0eyUKKyAgICAgICAgXGRvcGRmb3V0bGluZXsjIzF9e2NvdW50LVxleHBudW1iZXJ7c2VjIyMyfX17IyMzfXsjIzR9fSUKKyAgICAgIFxkZWZcbnVtc3Vic2VjZW50cnkjIzEjIzIjIzMjIzR7JQorICAgICAgICBcZG9wZGZvdXRsaW5leyMjMX17Y291bnQtXGV4cG51bWJlcntzdWJzZWMjIzJ9fXsjIzN9eyMjNH19JQorICAgICAgXGRlZlxudW1zdWJzdWJzZWNlbnRyeSMjMSMjMiMjMyMjNHslIGNvdW50IGlzIGFsd2F5cyB6ZXJvCisgICAgICAgIFxkb3BkZm91dGxpbmV7IyMxfXt9eyMjM317IyM0fX0lCisgICAgICAlCisgICAgICAlIFBERiBvdXRsaW5lcyBhcmUgZGlzcGxheWVkIHVzaW5nIHN5c3RlbSBmb250cywgaW5zdGVhZCBvZgorICAgICAgJSBkb2N1bWVudCBmb250cy4gIFRoZXJlZm9yZSB3ZSBjYW5ub3QgdXNlIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAgICUgc2luY2UgdGhlIGVuY29kaW5nIGlzIHVua25vd24uICBGb3IgZXhhbXBsZSwgdGhlIGVvZ29uZWsgZnJvbQorICAgICAgJSBMYXRpbiAyICgweGVhKSBnZXRzIHRyYW5zbGF0ZWQgdG8gYSB8IGNoYXJhY3Rlci4gIEluZm8gZnJvbQorICAgICAgJSBTdGFzemVrIFdhd3J5a2lld2ljeiwgMTkgSmFuIDIwMDQgMDQ6MDk6MjQgKzAxMDAuCisgICAgICAlCisgICAgICAlIHh4IHRvIGRvIHRoaXMgcmlnaHQsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIDgtYml0IGNoYXJhY3RlcnMgdG8KKyAgICAgICUgdGhlaXIgImJlc3QiIGVxdWl2YWxlbnQsIGJhc2VkIG9uIHRoZSBAZG9jdW1lbnRlbmNvZGluZy4gIFJpZ2h0CisgICAgICAlIG5vdywgSSBndWVzcyB3ZSdsbCBqdXN0IGxldCB0aGUgcGRmIHJlYWRlciBoYXZlIGl0cyB3YXkuCisgICAgICBcaW5kZXhub2ZvbnRzCisgICAgICBcc2V0dXBkYXRhZmlsZQorICAgICAgXGNhdGNvZGVgXFw9XGFjdGl2ZSBcb3RoZXJiYWNrc2xhc2gKKyAgICAgIFxpbnB1dCBcam9ibmFtZS50b2MKKyAgICBcZW5kZ3JvdXAKKyAgfQorICAlCisgIFxkZWZcc2tpcHNwYWNlcyMxe1xkZWZcUFB7IzF9XGRlZlxEe3x9JQorICAgIFxpZnhcUFBcRFxsZXRcbmV4dHNwXHJlbGF4CisgICAgXGVsc2VcbGV0XG5leHRzcFxza2lwc3BhY2VzCisgICAgICBcaWZ4XHBcc3BhY2VcZWxzZVxhZGR0b2tlbnN7XGZpbGVuYW1lfXtcUFB9JQorICAgICAgICBcYWR2YW5jZVxmaWxlbmFtZWxlbmd0aCBieSAxCisgICAgICBcZmkKKyAgICBcZmkKKyAgICBcbmV4dHNwfQorICBcZGVmXGdldGZpbGVuYW1lIzF7XGZpbGVuYW1lbGVuZ3RoPTBcZXhwYW5kYWZ0ZXJcc2tpcHNwYWNlcyMxfFxyZWxheH0KKyAgXGlmbnVtXHBkZnRleHZlcnNpb24gPCAxNAorICAgIFxsZXQgXHN0YXJ0bGluayBccGRmYW5ub3RsaW5rCisgIFxlbHNlCisgICAgXGxldCBcc3RhcnRsaW5rIFxwZGZzdGFydGxpbmsKKyAgXGZpCisgICUgbWFrZSBhIGxpdmUgdXJsIGluIHBkZiBvdXRwdXQuCisgIFxkZWZccGRmdXJsIzF7JQorICAgIFxiZWdpbmdyb3VwCisgICAgICAlIGl0IHNlZW1zIHdlIHJlYWxseSBuZWVkIHlldCBhbm90aGVyIHNldCBvZiBkdW1taWVzOyBoYXZlIG5vdAorICAgICAgJSB0cmllZCB0byBmaWd1cmUgb3V0IHdoYXQgZWFjaCBjb21tYW5kIHNob3VsZCBkbyBpbiB0aGUgY29udGV4dAorICAgICAgJSBvZiBAdXJsLiAgZm9yIG5vdywganVzdCBtYWtlIEAvIGEgbm8tb3AsIHRoYXQncyB0aGUgb25seSBvbmUKKyAgICAgICUgcGVvcGxlIGhhdmUgYWN0dWFsbHkgcmVwb3J0ZWQgYSBwcm9ibGVtIHdpdGguCisgICAgICAlIAorICAgICAgXG5vcm1hbHR1cm5vZmZhY3RpdmUKKyAgICAgIFxkZWZcQHtAfSUKKyAgICAgIFxsZXRcLz1cZW1wdHkKKyAgICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgICBcbGVhdmV2bW9kZVxSZWQKKyAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19JQorICAgICAgICB1c2Vyey9TdWJ0eXBlIC9MaW5rIC9BIDw8IC9TIC9VUkkgL1VSSSAoIzEpID4+fSUKKyAgICBcZW5kZ3JvdXB9CisgIFxkZWZccGRmZ2V0dG9rcyMxLntcc2V0Ym94XGJveEE9XGhib3h7XHRva3NBPXsjMS59XHRva3NCPXt9XG1ha2V0b2tzfX0KKyAgXGRlZlxhZGR0b2tlbnMjMSMye1xlZGVmXGFkZHRva3N7XG5vZXhwYW5kIzE9e1x0aGUjMSMyfX1cYWRkdG9rc30KKyAgXGRlZlxhZG4jMXtcYWRkdG9rZW5ze1x0b2tzQ317IzF9XGdsb2JhbFxjb3VudEE9MVxsZXRcbmV4dD1cbWFrZXRva3N9CisgIFxkZWZccG9wdG9rcyMxIzJ8RU5EVE9LU3x7XGxldFxmaXJzdD0jMVx0b2tzRD17IzF9XHRva3NBPXsjMn19CisgIFxkZWZcbWFrZXRva3N7JQorICAgIFxleHBhbmRhZnRlclxwb3B0b2tzXHRoZVx0b2tzQXxFTkRUT0tTfFxyZWxheAorICAgIFxpZnhcZmlyc3QwXGFkbjAKKyAgICBcZWxzZVxpZnhcZmlyc3QxXGFkbjEgXGVsc2VcaWZ4XGZpcnN0MlxhZG4yIFxlbHNlXGlmeFxmaXJzdDNcYWRuMworICAgIFxlbHNlXGlmeFxmaXJzdDRcYWRuNCBcZWxzZVxpZnhcZmlyc3Q1XGFkbjUgXGVsc2VcaWZ4XGZpcnN0NlxhZG42CisgICAgXGVsc2VcaWZ4XGZpcnN0N1xhZG43IFxlbHNlXGlmeFxmaXJzdDhcYWRuOCBcZWxzZVxpZnhcZmlyc3Q5XGFkbjkKKyAgICBcZWxzZQorICAgICAgXGlmbnVtMD1cY291bnRBXGVsc2VcbWFrZWxpbmtcZmkKKyAgICAgIFxpZnhcZmlyc3QuXGxldFxuZXh0PVxkb25lXGVsc2UKKyAgICAgICAgXGxldFxuZXh0PVxtYWtldG9rcworICAgICAgICBcYWRkdG9rZW5ze1x0b2tzQn17XHRoZVx0b2tzRH0KKyAgICAgICAgXGlmeFxmaXJzdCxcYWRkdG9rZW5ze1x0b2tzQn17XHNwYWNlfVxmaQorICAgICAgXGZpCisgICAgXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpCisgICAgXG5leHR9CisgIFxkZWZcbWFrZWxpbmt7XGFkZHRva2Vuc3tcdG9rc0J9JQorICAgIHtcbm9leHBhbmRccGRmbGlua3tcdGhlXHRva3NDfX1cdG9rc0M9e31cZ2xvYmFsXGNvdW50QT0wfQorICBcZGVmXHBkZmxpbmsjMXslCisgICAgXHN0YXJ0bGluayBhdHRyey9Cb3JkZXIgWzAgMCAwXX0gZ290byBuYW1le1xwZGZta3BnbnsjMX19CisgICAgXGxpbmtjb2xvciAjMVxlbmRsaW5rfQorICBcZGVmXGRvbmV7XGVkZWZcc3R7XGdsb2JhbFxub2V4cGFuZFx0b2tzQT17XHRoZVx0b2tzQn19XHN0fQorXGVsc2UKKyAgXGxldFxwZGZta2Rlc3QgPSBcZ29iYmxlCisgIFxsZXRccGRmdXJsID0gXGdvYmJsZQorICBcbGV0XGVuZGxpbmsgPSBccmVsYXgKKyAgXGxldFxsaW5rY29sb3IgPSBccmVsYXgKKyAgXGxldFxwZGZtYWtlb3V0bGluZXMgPSBccmVsYXgKK1xmaSAgJSBcaWZ4XHBkZm91dHB1dAorCisKK1xtZXNzYWdle2ZvbnRzLH0KKworJSBDaGFuZ2UgdGhlIGN1cnJlbnQgZm9udCBzdHlsZSB0byAjMSwgcmVtZW1iZXJpbmcgaXQgaW4gXGN1cmZvbnRzdHlsZS4KKyUgRm9yIG5vdywgd2UgZG8gbm90IGFjY3VtdWxhdGUgZm9udCBzdHlsZXM6IEBie0Bpe2Zvb319IHByaW50cyBmb28gaW4KKyUgaXRhbGljcywgbm90IGJvbGQgaXRhbGljcy4KKyUKK1xkZWZcc2V0Zm9udHN0eWxlIzF7JQorICBcZGVmXGN1cmZvbnRzdHlsZXsjMX0lIG5vdCBhcyBhIGNvbnRyb2wgc2VxdWVuY2UsIGJlY2F1c2Ugd2UgYXJlIFxlZGVmJ2QuCisgIFxjc25hbWUgdGVuIzFcZW5kY3NuYW1lICAlIGNoYW5nZSB0aGUgY3VycmVudCBmb250Cit9CisKKyUgU2VsZWN0ICMxIGZvbnRzIHdpdGggdGhlIGN1cnJlbnQgc3R5bGUuCislCitcZGVmXHNlbGVjdGZvbnRzIzF7XGNzbmFtZSAjMWZvbnRzXGVuZGNzbmFtZSBcY3NuYW1lXGN1cmZvbnRzdHlsZVxlbmRjc25hbWV9CisKK1xkZWZccm17XGZhbT0wIFxzZXRmb250c3R5bGV7cm19fQorXGRlZlxpdHtcZmFtPVxpdGZhbSBcc2V0Zm9udHN0eWxle2l0fX0KK1xkZWZcc2x7XGZhbT1cc2xmYW0gXHNldGZvbnRzdHlsZXtzbH19CitcZGVmXGJme1xmYW09XGJmZmFtIFxzZXRmb250c3R5bGV7YmZ9fVxkZWZcYmZzdHlsZW5hbWV7YmZ9CitcZGVmXHR0e1xmYW09XHR0ZmFtIFxzZXRmb250c3R5bGV7dHR9fQorCislIFRleGluZm8gc29ydCBvZiBzdXBwb3J0cyB0aGUgc2FucyBzZXJpZiBmb250IHN0eWxlLCB3aGljaCBwbGFpbiBUZVggZG9lcyBub3QuCislIFNvIHdlIHNldCB1cCBhIFxzZi4KK1xuZXdmYW1cc2ZmYW0KK1xkZWZcc2Z7XGZhbT1cc2ZmYW0gXHNldGZvbnRzdHlsZXtzZn19CitcbGV0XGxpID0gXHNmICUgU29tZXRpbWVzIHdlIGNhbGwgaXQgXGxpLCBub3QgXHNmLgorCislIFdlIGRvbid0IG5lZWQgbWF0aCBmb3IgdGhpcyBmb250IHN0eWxlLgorXGRlZlx0dHNse1xzZXRmb250c3R5bGV7dHRzbH19CisKKyUgRGVmYXVsdCBsZWFkaW5nLgorXG5ld2RpbWVuXHRleHRsZWFkaW5nICBcdGV4dGxlYWRpbmcgPSAxMy4ycHQKKworJSBTZXQgdGhlIGJhc2VsaW5lc2tpcCB0byAjMSwgYW5kIHRoZSBsaW5lc2tpcCBhbmQgc3RydXQgc2l6ZQorJSBjb3JyZXNwb25kaW5nbHkuICBUaGVyZSBpcyBubyBkZWVwIG1lYW5pbmcgYmVoaW5kIHRoZXNlIG1hZ2ljIG51bWJlcnMKKyUgdXNlZCBhcyBmYWN0b3JzOyB0aGV5IGp1c3QgbWF0Y2ggKGNsb3NlbHkgZW5vdWdoKSB3aGF0IEtudXRoIGRlZmluZWQuCislCitcZGVmXGxpbmVza2lwZmFjdG9yey4wODMzM30KK1xkZWZcc3RydXRoZWlnaHRwZXJjZW50ey43MDgzM30KK1xkZWZcc3RydXRkZXB0aHBlcmNlbnQgey4yOTE2N30KKyUKK1xkZWZcc2V0bGVhZGluZyMxeyUKKyAgXG5vcm1hbGJhc2VsaW5lc2tpcCA9ICMxXHJlbGF4CisgIFxub3JtYWxsaW5lc2tpcCA9IFxsaW5lc2tpcGZhY3Rvclxub3JtYWxiYXNlbGluZXNraXAKKyAgXG5vcm1hbGJhc2VsaW5lcworICBcc2V0Ym94XHN0cnV0Ym94ID1caGJveHslCisgICAgXHZydWxlIHdpZHRoMHB0IGhlaWdodFxzdHJ1dGhlaWdodHBlcmNlbnRcYmFzZWxpbmVza2lwCisgICAgICAgICAgICAgICAgICAgIGRlcHRoIFxzdHJ1dGRlcHRocGVyY2VudCBcYmFzZWxpbmVza2lwCisgIH0lCit9CisKKyUgU2V0IHRoZSBmb250IG1hY3JvICMxIHRvIHRoZSBmb250IG5hbWVkICMyLCBhZGRpbmcgb24gdGhlCislIHNwZWNpZmllZCBmb250IHByZWZpeCAobm9ybWFsbHkgYGNtJykuCislICMzIGlzIHRoZSBmb250J3MgZGVzaWduIHNpemUsICM0IGlzIGEgc2NhbGUgZmFjdG9yCitcZGVmXHNldGZvbnQjMSMyIzMjNHtcZm9udCMxPVxmb250cHJlZml4IzIjMyBzY2FsZWQgIzR9CisKKyUgVXNlIGNtIGFzIHRoZSBkZWZhdWx0IGZvbnQgcHJlZml4LgorJSBUbyBzcGVjaWZ5IHRoZSBmb250IHByZWZpeCwgeW91IG11c3QgZGVmaW5lIFxmb250cHJlZml4CislIGJlZm9yZSB5b3UgcmVhZCBpbiB0ZXhpbmZvLnRleC4KK1xpZnhcZm9udHByZWZpeFx1bmRlZmluZWQKK1xkZWZcZm9udHByZWZpeHtjbX0KK1xmaQorJSBTdXBwb3J0IGZvbnQgZmFtaWxpZXMgdGhhdCBkb24ndCB1c2UgdGhlIHNhbWUgbmFtaW5nIHNjaGVtZSBhcyBDTS4KK1xkZWZccm1zaGFwZXtyfQorXGRlZlxybWJzaGFwZXtieH0gICAgICAgICAgICAgICAld2hlcmUgdGhlIG5vcm1hbCBmYWNlIGlzIGJvbGQKK1xkZWZcYmZzaGFwZXtifQorXGRlZlxieHNoYXBle2J4fQorXGRlZlx0dHNoYXBle3R0fQorXGRlZlx0dGJzaGFwZXt0dH0KK1xkZWZcdHRzbHNoYXBle3NsdHR9CitcZGVmXGl0c2hhcGV7dGl9CitcZGVmXGl0YnNoYXBle2J4dGl9CitcZGVmXHNsc2hhcGV7c2x9CitcZGVmXHNsYnNoYXBle2J4c2x9CitcZGVmXHNmc2hhcGV7c3N9CitcZGVmXHNmYnNoYXBle3NzfQorXGRlZlxzY3NoYXBle2NzY30KK1xkZWZcc2Nic2hhcGV7Y3NjfQorCislIFRleHQgZm9udHMgKDExLjJwdCwgbWFnc3RlcDEpLgorXGRlZlx0ZXh0bm9taW5hbHNpemV7MTFwdH0KK1xlZGVmXG1haW5tYWdzdGVwe1xtYWdzdGVwaGFsZn0KK1xzZXRmb250XHRleHRybVxybXNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0dHRcdHRzaGFwZXsxMH17XG1haW5tYWdzdGVwfQorXHNldGZvbnRcdGV4dGJmXGJmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRpdFxpdHNoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0c2xcc2xzaGFwZXsxMH17XG1haW5tYWdzdGVwfQorXHNldGZvbnRcdGV4dHNmXHNmc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xzZXRmb250XHRleHRzY1xzY3NoYXBlezEwfXtcbWFpbm1hZ3N0ZXB9Citcc2V0Zm9udFx0ZXh0dHRzbFx0dHNsc2hhcGV7MTB9e1xtYWlubWFnc3RlcH0KK1xmb250XHRleHRpPWNtbWkxMCBzY2FsZWQgXG1haW5tYWdzdGVwCitcZm9udFx0ZXh0c3k9Y21zeTEwIHNjYWxlZCBcbWFpbm1hZ3N0ZXAKKworJSBBIGZldyBmb250cyBmb3IgQGRlZnVuIG5hbWVzIGFuZCBhcmdzLgorXHNldGZvbnRcZGVmYmZcYmZzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXHNldGZvbnRcZGVmdHRcdHRzaGFwZXsxMH17XG1hZ3N0ZXAxfQorXHNldGZvbnRcZGVmdHRzbFx0dHNsc2hhcGV7MTB9e1xtYWdzdGVwMX0KK1xkZWZcZGZ7XGxldFx0ZW50dD1cZGVmdHQgXGxldFx0ZW5iZiA9IFxkZWZiZiBcbGV0XHRlbnR0c2w9XGRlZnR0c2wgXGJmfQorCislIEZvbnRzIGZvciBpbmRpY2VzLCBmb290bm90ZXMsIHNtYWxsIGV4YW1wbGVzICg5cHQpLgorXGRlZlxzbWFsbG5vbWluYWxzaXplezlwdH0KK1xzZXRmb250XHNtYWxscm1ccm1zaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGx0dFx0dHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGJmXGJmc2hhcGV7MTB9ezkwMH0KK1xzZXRmb250XHNtYWxsaXRcaXRzaGFwZXs5fXsxMDAwfQorXHNldGZvbnRcc21hbGxzbFxzbHNoYXBlezl9ezEwMDB9Citcc2V0Zm9udFxzbWFsbHNmXHNmc2hhcGV7OX17MTAwMH0KK1xzZXRmb250XHNtYWxsc2Ncc2NzaGFwZXsxMH17OTAwfQorXHNldGZvbnRcc21hbGx0dHNsXHR0c2xzaGFwZXsxMH17OTAwfQorXGZvbnRcc21hbGxpPWNtbWk5CitcZm9udFxzbWFsbHN5PWNtc3k5CisKKyUgRm9udHMgZm9yIHNtYWxsIGV4YW1wbGVzICg4cHQpLgorXGRlZlxzbWFsbGVybm9taW5hbHNpemV7OHB0fQorXHNldGZvbnRcc21hbGxlcnJtXHJtc2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJ0dFx0dHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyYmZcYmZzaGFwZXsxMH17ODAwfQorXHNldGZvbnRcc21hbGxlcml0XGl0c2hhcGV7OH17MTAwMH0KK1xzZXRmb250XHNtYWxsZXJzbFxzbHNoYXBlezh9ezEwMDB9Citcc2V0Zm9udFxzbWFsbGVyc2Zcc2ZzaGFwZXs4fXsxMDAwfQorXHNldGZvbnRcc21hbGxlcnNjXHNjc2hhcGV7MTB9ezgwMH0KK1xzZXRmb250XHNtYWxsZXJ0dHNsXHR0c2xzaGFwZXsxMH17ODAwfQorXGZvbnRcc21hbGxlcmk9Y21taTgKK1xmb250XHNtYWxsZXJzeT1jbXN5OAorCislIEZvbnRzIGZvciB0aXRsZSBwYWdlICgyMC40cHQpOgorXGRlZlx0aXRsZW5vbWluYWxzaXplezIwcHR9Citcc2V0Zm9udFx0aXRsZXJtXHJtYnNoYXBlezEyfXtcbWFnc3RlcDN9Citcc2V0Zm9udFx0aXRsZWl0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXNsXHNsYnNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXR0XHR0YnNoYXBlezEyfXtcbWFnc3RlcDN9Citcc2V0Zm9udFx0aXRsZXR0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDR9Citcc2V0Zm9udFx0aXRsZXNmXHNmYnNoYXBlezE3fXtcbWFnc3RlcDF9CitcbGV0XHRpdGxlYmY9XHRpdGxlcm0KK1xzZXRmb250XHRpdGxlc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwNH0KK1xmb250XHRpdGxlaT1jbW1pMTIgc2NhbGVkIFxtYWdzdGVwMworXGZvbnRcdGl0bGVzeT1jbXN5MTAgc2NhbGVkIFxtYWdzdGVwNAorXGRlZlxhdXRob3JybXtcc2Vjcm19CitcZGVmXGF1dGhvcnR0e1xzZWN0dH0KKworJSBDaGFwdGVyIChhbmQgdW5udW1iZXJlZCkgZm9udHMgKDE3LjI4cHQpLgorXGRlZlxjaGFwbm9taW5hbHNpemV7MTdwdH0KK1xzZXRmb250XGNoYXBybVxybWJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcGl0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2xcc2xic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xzZXRmb250XGNoYXB0dFx0dGJzaGFwZXsxMn17XG1hZ3N0ZXAyfQorXHNldGZvbnRcY2hhcHR0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDN9Citcc2V0Zm9udFxjaGFwc2Zcc2Zic2hhcGV7MTd9ezEwMDB9CitcbGV0XGNoYXBiZj1cY2hhcHJtCitcc2V0Zm9udFxjaGFwc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwM30KK1xmb250XGNoYXBpPWNtbWkxMiBzY2FsZWQgXG1hZ3N0ZXAyCitcZm9udFxjaGFwc3k9Y21zeTEwIHNjYWxlZCBcbWFnc3RlcDMKKworJSBTZWN0aW9uIGZvbnRzICgxNC40cHQpLgorXGRlZlxzZWNub21pbmFsc2l6ZXsxNHB0fQorXHNldGZvbnRcc2Vjcm1ccm1ic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY2l0XGl0YnNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzbFxzbGJzaGFwZXsxMH17XG1hZ3N0ZXAyfQorXHNldGZvbnRcc2VjdHRcdHRic2hhcGV7MTJ9e1xtYWdzdGVwMX0KK1xzZXRmb250XHNlY3R0c2xcdHRzbHNoYXBlezEwfXtcbWFnc3RlcDJ9Citcc2V0Zm9udFxzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXAxfQorXGxldFxzZWNiZlxzZWNybQorXHNldGZvbnRcc2Vjc2Ncc2Nic2hhcGV7MTB9e1xtYWdzdGVwMn0KK1xmb250XHNlY2k9Y21taTEyIHNjYWxlZCBcbWFnc3RlcDEKK1xmb250XHNlY3N5PWNtc3kxMCBzY2FsZWQgXG1hZ3N0ZXAyCisKKyUgU3Vic2VjdGlvbiBmb250cyAoMTMuMTVwdCkuCitcZGVmXHNzZWNub21pbmFsc2l6ZXsxM3B0fQorXHNldGZvbnRcc3NlY3JtXHJtYnNoYXBlezEyfXtcbWFnc3RlcGhhbGZ9Citcc2V0Zm9udFxzc2VjaXRcaXRic2hhcGV7MTB9ezEzMTV9Citcc2V0Zm9udFxzc2Vjc2xcc2xic2hhcGV7MTB9ezEzMTV9Citcc2V0Zm9udFxzc2VjdHRcdHRic2hhcGV7MTJ9e1xtYWdzdGVwaGFsZn0KK1xzZXRmb250XHNzZWN0dHNsXHR0c2xzaGFwZXsxMH17MTMxNX0KK1xzZXRmb250XHNzZWNzZlxzZmJzaGFwZXsxMn17XG1hZ3N0ZXBoYWxmfQorXGxldFxzc2VjYmZcc3NlY3JtCitcc2V0Zm9udFxzc2Vjc2Ncc2Nic2hhcGV7MTB9ezEzMTV9CitcZm9udFxzc2VjaT1jbW1pMTIgc2NhbGVkIFxtYWdzdGVwaGFsZgorXGZvbnRcc3NlY3N5PWNtc3kxMCBzY2FsZWQgMTMxNQorCislIFJlZHVjZWQgZm9udHMgZm9yIEBhY3JvIGluIHRleHQgKDEwcHQpLgorXGRlZlxyZWR1Y2Vkbm9taW5hbHNpemV7MTBwdH0KK1xzZXRmb250XHJlZHVjZWRybVxybXNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHR0XHR0c2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2VkYmZcYmZzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRpdFxpdHNoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHNsXHNsc2hhcGV7MTB9ezEwMDB9Citcc2V0Zm9udFxyZWR1Y2Vkc2Zcc2ZzaGFwZXsxMH17MTAwMH0KK1xzZXRmb250XHJlZHVjZWRzY1xzY3NoYXBlezEwfXsxMDAwfQorXHNldGZvbnRccmVkdWNlZHR0c2xcdHRzbHNoYXBlezEwfXsxMDAwfQorXGZvbnRccmVkdWNlZGk9Y21taTEwCitcZm9udFxyZWR1Y2Vkc3k9Y21zeTEwCisKKyUgSW4gb3JkZXIgZm9yIHRoZSBmb250IGNoYW5nZXMgdG8gYWZmZWN0IG1vc3QgbWF0aCBzeW1ib2xzIGFuZCBsZXR0ZXJzLAorJSB3ZSBoYXZlIHRvIGRlZmluZSB0aGUgXHRleHRmb250IG9mIHRoZSBzdGFuZGFyZCBmYW1pbGllcy4gIFNpbmNlCislIHRleGluZm8gZG9lc24ndCBhbGxvdyBmb3IgcHJvZHVjaW5nIHN1YnNjcmlwdHMgYW5kIHN1cGVyc2NyaXB0cyBleGNlcHQKKyUgaW4gdGhlIG1haW4gdGV4dCwgd2UgZG9uJ3QgYm90aGVyIHRvIHJlc2V0IFxzY3JpcHRmb250IGFuZAorJSBcc2NyaXB0c2NyaXB0Zm9udCAod2hpY2ggd291bGQgYWxzbyByZXF1aXJlIGxvYWRpbmcgYSBsb3QgbW9yZSBmb250cykuCislCitcZGVmXHJlc2V0bWF0aGZvbnRzeyUKKyAgXHRleHRmb250MD1cdGVucm0gXHRleHRmb250MT1cdGVuaSBcdGV4dGZvbnQyPVx0ZW5zeQorICBcdGV4dGZvbnRcaXRmYW09XHRlbml0IFx0ZXh0Zm9udFxzbGZhbT1cdGVuc2wgXHRleHRmb250XGJmZmFtPVx0ZW5iZgorICBcdGV4dGZvbnRcdHRmYW09XHRlbnR0IFx0ZXh0Zm9udFxzZmZhbT1cdGVuc2YKK30KKworJSBUaGUgZm9udC1jaGFuZ2luZyBjb21tYW5kcyByZWRlZmluZSB0aGUgbWVhbmluZ3Mgb2YgXHRlblNUWUxFLCBpbnN0ZWFkCislIG9mIGp1c3QgXFNUWUxFLiAgV2UgZG8gdGhpcyBiZWNhdXNlIFxTVFlMRSBuZWVkcyB0byBhbHNvIHNldCB0aGUKKyUgY3VycmVudCBcZmFtIGZvciBtYXRoIG1vZGUuICBPdXIgXFNUWUxFIChlLmcuLCBccm0pIGNvbW1hbmRzIGhhcmR3aXJlCislIFx0ZW5TVFlMRSB0byBzZXQgdGhlIGN1cnJlbnQgZm9udC4KKyUKKyUgRWFjaCBmb250LWNoYW5naW5nIGNvbW1hbmQgYWxzbyBzZXRzIHRoZSBuYW1lcyBcbHNpemUgKG9uZSBzaXplIGxvd2VyKQorJSBhbmQgXGxsbHNpemUgKHRocmVlIHNpemVzIGxvd2VyKS4gIFRoZXNlIHJlbGF0aXZlIGNvbW1hbmRzIGFyZSB1c2VkIGluCislIHRoZSBMYVRlWCBsb2dvIGFuZCBhY3Jvbnltcy4KKyUKKyUgVGhpcyBhbGwgbmVlZHMgZ2VuZXJhbGl6aW5nLCBiYWRseS4KKyUKK1xkZWZcdGV4dGZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGV4dHJtIFxsZXRcdGVuaXQ9XHRleHRpdCBcbGV0XHRlbnNsPVx0ZXh0c2wKKyAgXGxldFx0ZW5iZj1cdGV4dGJmIFxsZXRcdGVudHQ9XHRleHR0dCBcbGV0XHNtYWxsY2Fwcz1cdGV4dHNjCisgIFxsZXRcdGVuc2Y9XHRleHRzZiBcbGV0XHRlbmk9XHRleHRpIFxsZXRcdGVuc3k9XHRleHRzeQorICBcbGV0XHRlbnR0c2w9XHRleHR0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7dGV4dH0lCisgIFxkZWZcbHNpemV7cmVkdWNlZH1cZGVmXGxsbHNpemV7c21hbGxlcn0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3tcdGV4dGxlYWRpbmd9fQorXGRlZlx0aXRsZWZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cdGl0bGVybSBcbGV0XHRlbml0PVx0aXRsZWl0IFxsZXRcdGVuc2w9XHRpdGxlc2wKKyAgXGxldFx0ZW5iZj1cdGl0bGViZiBcbGV0XHRlbnR0PVx0aXRsZXR0IFxsZXRcc21hbGxjYXBzPVx0aXRsZXNjCisgIFxsZXRcdGVuc2Y9XHRpdGxlc2YgXGxldFx0ZW5pPVx0aXRsZWkgXGxldFx0ZW5zeT1cdGl0bGVzeQorICBcbGV0XHRlbnR0c2w9XHRpdGxldHRzbAorICBcZGVmXGN1cmZvbnRzaXple3RpdGxlfSUKKyAgXGRlZlxsc2l6ZXtjaGFwfVxkZWZcbGxsc2l6ZXtzdWJzZWN9JQorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MjVwdH19CitcZGVmXHRpdGxlZm9udCMxe3tcdGl0bGVmb250c1xybSAjMX19CitcZGVmXGNoYXBmb250c3slCisgIFxsZXRcdGVucm09XGNoYXBybSBcbGV0XHRlbml0PVxjaGFwaXQgXGxldFx0ZW5zbD1cY2hhcHNsCisgIFxsZXRcdGVuYmY9XGNoYXBiZiBcbGV0XHRlbnR0PVxjaGFwdHQgXGxldFxzbWFsbGNhcHM9XGNoYXBzYworICBcbGV0XHRlbnNmPVxjaGFwc2YgXGxldFx0ZW5pPVxjaGFwaSBcbGV0XHRlbnN5PVxjaGFwc3kKKyAgXGxldFx0ZW50dHNsPVxjaGFwdHRzbAorICBcZGVmXGN1cmZvbnRzaXple2NoYXB9JQorICBcZGVmXGxzaXple3NlY31cZGVmXGxsbHNpemV7dGV4dH0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3sxOXB0fX0KK1xkZWZcc2VjZm9udHN7JQorICBcbGV0XHRlbnJtPVxzZWNybSBcbGV0XHRlbml0PVxzZWNpdCBcbGV0XHRlbnNsPVxzZWNzbAorICBcbGV0XHRlbmJmPVxzZWNiZiBcbGV0XHRlbnR0PVxzZWN0dCBcbGV0XHNtYWxsY2Fwcz1cc2Vjc2MKKyAgXGxldFx0ZW5zZj1cc2Vjc2YgXGxldFx0ZW5pPVxzZWNpIFxsZXRcdGVuc3k9XHNlY3N5CisgIFxsZXRcdGVudHRzbD1cc2VjdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3NlY30lCisgIFxkZWZcbHNpemV7c3Vic2VjfVxkZWZcbGxsc2l6ZXtyZWR1Y2VkfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezE2cHR9fQorXGRlZlxzdWJzZWNmb250c3slCisgIFxsZXRcdGVucm09XHNzZWNybSBcbGV0XHRlbml0PVxzc2VjaXQgXGxldFx0ZW5zbD1cc3NlY3NsCisgIFxsZXRcdGVuYmY9XHNzZWNiZiBcbGV0XHRlbnR0PVxzc2VjdHQgXGxldFxzbWFsbGNhcHM9XHNzZWNzYworICBcbGV0XHRlbnNmPVxzc2Vjc2YgXGxldFx0ZW5pPVxzc2VjaSBcbGV0XHRlbnN5PVxzc2Vjc3kKKyAgXGxldFx0ZW50dHNsPVxzc2VjdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3NzZWN9JQorICBcZGVmXGxzaXple3RleHR9XGRlZlxsbGxzaXple3NtYWxsfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezE1cHR9fQorXGxldFxzdWJzdWJzZWNmb250cyA9IFxzdWJzZWNmb250cworXGRlZlxyZWR1Y2VkZm9udHN7JQorICBcbGV0XHRlbnJtPVxyZWR1Y2Vkcm0gXGxldFx0ZW5pdD1ccmVkdWNlZGl0IFxsZXRcdGVuc2w9XHJlZHVjZWRzbAorICBcbGV0XHRlbmJmPVxyZWR1Y2VkYmYgXGxldFx0ZW50dD1ccmVkdWNlZHR0IFxsZXRccmVkdWNlZGNhcHM9XHJlZHVjZWRzYworICBcbGV0XHRlbnNmPVxyZWR1Y2Vkc2YgXGxldFx0ZW5pPVxyZWR1Y2VkaSBcbGV0XHRlbnN5PVxyZWR1Y2Vkc3kKKyAgXGxldFx0ZW50dHNsPVxyZWR1Y2VkdHRzbAorICBcZGVmXGN1cmZvbnRzaXple3JlZHVjZWR9JQorICBcZGVmXGxzaXple3NtYWxsfVxkZWZcbGxsc2l6ZXtzbWFsbGVyfSUKKyAgXHJlc2V0bWF0aGZvbnRzIFxzZXRsZWFkaW5nezEwLjVwdH19CitcZGVmXHNtYWxsZm9udHN7JQorICBcbGV0XHRlbnJtPVxzbWFsbHJtIFxsZXRcdGVuaXQ9XHNtYWxsaXQgXGxldFx0ZW5zbD1cc21hbGxzbAorICBcbGV0XHRlbmJmPVxzbWFsbGJmIFxsZXRcdGVudHQ9XHNtYWxsdHQgXGxldFxzbWFsbGNhcHM9XHNtYWxsc2MKKyAgXGxldFx0ZW5zZj1cc21hbGxzZiBcbGV0XHRlbmk9XHNtYWxsaSBcbGV0XHRlbnN5PVxzbWFsbHN5CisgIFxsZXRcdGVudHRzbD1cc21hbGx0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7c21hbGx9JQorICBcZGVmXGxzaXple3NtYWxsZXJ9XGRlZlxsbGxzaXple3NtYWxsZXJ9JQorICBccmVzZXRtYXRoZm9udHMgXHNldGxlYWRpbmd7MTAuNXB0fX0KK1xkZWZcc21hbGxlcmZvbnRzeyUKKyAgXGxldFx0ZW5ybT1cc21hbGxlcnJtIFxsZXRcdGVuaXQ9XHNtYWxsZXJpdCBcbGV0XHRlbnNsPVxzbWFsbGVyc2wKKyAgXGxldFx0ZW5iZj1cc21hbGxlcmJmIFxsZXRcdGVudHQ9XHNtYWxsZXJ0dCBcbGV0XHNtYWxsY2Fwcz1cc21hbGxlcnNjCisgIFxsZXRcdGVuc2Y9XHNtYWxsZXJzZiBcbGV0XHRlbmk9XHNtYWxsZXJpIFxsZXRcdGVuc3k9XHNtYWxsZXJzeQorICBcbGV0XHRlbnR0c2w9XHNtYWxsZXJ0dHNsCisgIFxkZWZcY3VyZm9udHNpemV7c21hbGxlcn0lCisgIFxkZWZcbHNpemV7c21hbGxlcn1cZGVmXGxsbHNpemV7c21hbGxlcn0lCisgIFxyZXNldG1hdGhmb250cyBcc2V0bGVhZGluZ3s5LjVwdH19CisKKyUgU2V0IHRoZSBmb250cyB0byB1c2Ugd2l0aCB0aGUgQHNtYWxsLi4uIGVudmlyb25tZW50cy4KK1xsZXRcc21hbGxleGFtcGxlZm9udHMgPSBcc21hbGxmb250cworCislIEFib3V0IFxzbWFsbGV4YW1wbGVmb250cy4gIElmIHdlIHVzZSBcc21hbGxmb250cyAoOXB0KSwgQHNtYWxsZXhhbXBsZQorJSBjYW4gZml0IHRoaXMgbWFueSBjaGFyYWN0ZXJzOgorJSAgIDguNXgxMT04NiAgIHNtYWxsYm9vaz03MiAgYTQ9OTAgIGE1PTY5CislIElmIHdlIHVzZSBcc2NyaXB0Zm9udHMgKDhwdCksIHRoZW4gd2UgY2FuIGZpdCB0aGlzIG1hbnkgY2hhcmFjdGVyczoKKyUgICA4LjV4MTE9OTArICBzbWFsbGJvb2s9ODAgIGE0PTkwKyAgYTU9NzcKKyUgRm9yIG1lLCBzdWJqZWN0aXZlbHksIHRoZSBmZXcgZXh0cmEgY2hhcmFjdGVycyB0aGF0IGZpdCBhcmVuJ3Qgd29ydGgKKyUgdGhlIGFkZGl0aW9uYWwgc21hbGxuZXNzIG9mIDhwdC4gIFNvIEknbSBtYWtpbmcgdGhlIGRlZmF1bHQgOXB0LgorJQorJSBCeSB0aGUgd2F5LCBmb3IgY29tcGFyaXNvbiwgaGVyZSdzIHdoYXQgZml0cyB3aXRoIEBleGFtcGxlICgxMHB0KToKKyUgICA4LjV4MTE9NzEgIHNtYWxsYm9vaz02MCAgYTQ9NzUgIGE1PTU4CislCislIEkgd2lzaCB0aGUgVVNBIHVzZWQgQTQgcGFwZXIuCislIC0ta2FybCwgMjRqYW4wMy4KKworCislIFNldCB1cCB0aGUgZGVmYXVsdCBmb250cywgc28gd2UgY2FuIHVzZSB0aGVtIGZvciBjcmVhdGluZyBib3hlcy4KKyUKK1x0ZXh0Zm9udHMgXHJtCisKKyUgRGVmaW5lIHRoZXNlIHNvIHRoZXkgY2FuIGJlIGVhc2lseSBjaGFuZ2VkIGZvciBvdGhlciBmb250cy4KK1xkZWZcYW5nbGVsZWZ0eyRcbGFuZ2xlJH0KK1xkZWZcYW5nbGVyaWdodHskXHJhbmdsZSR9CisKKyUgQ291bnQgZGVwdGggaW4gZm9udC1jaGFuZ2VzLCBmb3IgZXJyb3IgY2hlY2tzCitcbmV3Y291bnRcZm9udGRlcHRoIFxmb250ZGVwdGg9MAorCislIEZvbnRzIGZvciBzaG9ydCB0YWJsZSBvZiBjb250ZW50cy4KK1xzZXRmb250XHNob3J0Y29udHJtXHJtc2hhcGV7MTJ9ezEwMDB9Citcc2V0Zm9udFxzaG9ydGNvbnRiZlxiZnNoYXBlezEwfXtcbWFnc3RlcDF9ICAlIG5vIGNtYjEyCitcc2V0Zm9udFxzaG9ydGNvbnRzbFxzbHNoYXBlezEyfXsxMDAwfQorXHNldGZvbnRcc2hvcnRjb250dHRcdHRzaGFwZXsxMn17MTAwMH0KKworJSUgQWRkIHNjcmliZS1saWtlIGZvbnQgZW52aXJvbm1lbnRzLCBwbHVzIEBsIGZvciBpbmxpbmUgbGlzcCAodXN1YWxseSBzYW5zCislJSBzZXJpZikgYW5kIEBpaSBmb3IgVGVYIGl0YWxpYworCislIFxzbWFydGl0YWxpY3tBUkd9IG91dHB1dHMgYXJnIGluIGl0YWxpY3MsIGZvbGxvd2VkIGJ5IGFuIGl0YWxpYyBjb3JyZWN0aW9uCislIHVubGVzcyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlciBpcyBzdWNoIGFzIG5vdCB0byBuZWVkIG9uZS4KK1xkZWZcc21hcnRpdGFsaWN4e1xpZnhcbmV4dCxcZWxzZVxpZnhcbmV4dC1cZWxzZVxpZnhcbmV4dC5cZWxzZQorICAgICAgICAgICAgICAgICAgICBccHRleHNsYXNoXGZpXGZpXGZpfQorXGRlZlxzbWFydHNsYW50ZWQjMXt7XGlmdXNpbmd0dFx0dHNsXHNsICMxfVxmdXR1cmVsZXRcbmV4dFxzbWFydGl0YWxpY3h9CitcZGVmXHNtYXJ0aXRhbGljIzF7e1xpZnVzaW5ndHRcdHRzbFxpdCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCislIGxpa2UgXHNtYXJ0c2xhbnRlZCBleGNlcHQgdW5jb25kaXRpb25hbGx5IHVzZXMgXHR0c2wuCislIEB2YXIgaXMgc2V0IHRvIHRoaXMgZm9yIGRlZnVuIGFyZ3VtZW50cy4KK1xkZWZcdHRzbGFudGVkIzF7e1x0dHNsICMxfVxmdXR1cmVsZXRcbmV4dFxzbWFydGl0YWxpY3h9CisKKyUgbGlrZSBcc21hcnRzbGFudGVkIGV4Y2VwdCB1bmNvbmRpdGlvbmFsbHkgdXNlIFxzbC4gIFdlIG5ldmVyIHdhbnQKKyUgdHRzbCBmb3IgYm9vayB0aXRsZXMsIGRvIHdlPworXGRlZlxjaXRlIzF7e1xzbCAjMX1cZnV0dXJlbGV0XG5leHRcc21hcnRpdGFsaWN4fQorCitcbGV0XGk9XHNtYXJ0aXRhbGljCitcbGV0XHNsYW50ZWQ9XHNtYXJ0c2xhbnRlZAorXGxldFx2YXI9XHNtYXJ0c2xhbnRlZAorXGxldFxkZm49XHNtYXJ0c2xhbnRlZAorXGxldFxlbXBoPVxzbWFydGl0YWxpYworCislIEBiLCBleHBsaWNpdCBib2xkLgorXGRlZlxiIzF7e1xiZiAjMX19CitcbGV0XHN0cm9uZz1cYgorCislIEBzYW5zc2VyaWYsIGV4cGxpY2l0IHNhbnMuCitcZGVmXHNhbnNzZXJpZiMxe3tcc2YgIzF9fQorCislIFdlIGNhbid0IGp1c3QgdXNlIFxleGh5cGhlbnBlbmFsdHksIGJlY2F1c2UgdGhhdCBvbmx5IGhhcyBlZmZlY3QgYXQKKyUgdGhlIGVuZCBvZiBhIHBhcmFncmFwaC4gIFJlc3RvcmUgbm9ybWFsIGh5cGhlbmF0aW9uIGF0IHRoZSBlbmQgb2YgdGhlCislIGdyb3VwIHdpdGhpbiB3aGljaCBcbm9oeXBoZW5hdGlvbiBpcyBwcmVzdW1hYmx5IGNhbGxlZC4KKyUKK1xkZWZcbm9oeXBoZW5hdGlvbntcaHlwaGVuY2hhclxmb250ID0gLTEgIFxhZnRlcmdyb3VwXHJlc3RvcmVoeXBoZW5hdGlvbn0KK1xkZWZccmVzdG9yZWh5cGhlbmF0aW9ue1xoeXBoZW5jaGFyXGZvbnQgPSBgLSB9CisKKyUgU2V0IHNmY29kZSB0byBub3JtYWwgZm9yIHRoZSBjaGFycyB0aGF0IHVzdWFsbHkgaGF2ZSBhbm90aGVyIHZhbHVlLgorJSBDYW4ndCB1c2UgcGxhaW4ncyBcZnJlbmNoc3BhY2luZyBiZWNhdXNlIGl0IHVzZXMgdGhlIGBceCBub3RhdGlvbiwgYW5kCislIHNvbWV0aW1lcyBceCBoYXMgYW4gYWN0aXZlIGRlZmluaXRpb24gdGhhdCBtZXNzZXMgdGhpbmdzIHVwLgorJQorXGNoYXJkZWZcY29sb25DaGFyID0gYFw6CitcY2hhcmRlZlxjb21tYUNoYXIgPSBgXCwKK1xjaGFyZGVmXGRvdENoYXIgICA9IGBcLgorXGNoYXJkZWZcZXhjbGFtQ2hhcj0gYFwhCitcY2hhcmRlZlxxdWVzdENoYXIgPSBgXD8KK1xjaGFyZGVmXHNlbWlDaGFyICA9IGBcOworJQorXGNhdGNvZGVgQD0xMQorICBcZGVmXHBsYWluZnJlbmNoc3BhY2luZ3slCisgICAgXHNmY29kZVxkb3RDaGFyICA9XEBtIFxzZmNvZGVccXVlc3RDaGFyPVxAbSBcc2Zjb2RlXGV4Y2xhbUNoYXI9XEBtCisgICAgXHNmY29kZVxjb2xvbkNoYXI9XEBtIFxzZmNvZGVcc2VtaUNoYXIgPVxAbSBcc2Zjb2RlXGNvbW1hQ2hhciA9XEBtCisgICAgXGRlZlxlbmRvZnNlbnRlbmNlc3BhY2VmYWN0b3J7MTAwMH0lIGZvciBALiBhbmQgZnJpZW5kcworICB9CisgIFxkZWZccGxhaW5ub25mcmVuY2hzcGFjaW5neyUKKyAgICBcc2Zjb2RlYFwuMzAwMFxzZmNvZGVgXD8zMDAwXHNmY29kZWBcITMwMDAKKyAgICBcc2Zjb2RlYFw6MjAwMFxzZmNvZGVgXDsxNTAwXHNmY29kZWBcLDEyNTAKKyAgICBcZGVmXGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvcnszMDAwfSUgZm9yIEAuIGFuZCBmcmllbmRzCisgIH0KK1xjYXRjb2RlYEA9XG90aGVyCitcZGVmXGVuZG9mc2VudGVuY2VzcGFjZWZhY3RvcnszMDAwfSUgZGVmYXVsdAorCitcZGVmXHQjMXslCisgIHtcdHQgXHJhd2JhY2tzbGFzaCBccGxhaW5mcmVuY2hzcGFjaW5nICMxfSUKKyAgXG51bGwKK30KK1xkZWZcc2FtcCMxe2BcdGNsb3NleyMxfSdcbnVsbH0KK1xzZXRmb250XGtleXJtXHJtc2hhcGV7OH17MTAwMH0KK1xmb250XGtleXN5PWNtc3k5CitcZGVmXGtleSMxe3tca2V5cm1cdGV4dGZvbnQyPVxrZXlzeSBcbGVhdmV2bW9kZVxoYm94eyUKKyAgXHJhaXNlMC40cHRcaGJveHtcYW5nbGVsZWZ0fVxrZXJuLS4wOGVtXHZ0b3B7JQorICAgIFx2Ym94e1xocnVsZVxrZXJuLTAuNHB0CisgICAgIFxoYm94e1xyYWlzZTAuNHB0XGhib3h7XHZwaGFudG9te1xhbmdsZWxlZnR9fSMxfX0lCisgICAgXGtlcm4tMC40cHRcaHJ1bGV9JQorICBca2Vybi0uMDZlbVxyYWlzZTAuNHB0XGhib3h7XGFuZ2xlcmlnaHR9fX19CislIFRoZSBvbGQgZGVmaW5pdGlvbiwgd2l0aCBubyBsb3plbmdlOgorJVxkZWZca2V5ICMxe3tcdHRzbCBcbm9oeXBoZW5hdGlvbiBcdXBwZXJjYXNleyMxfX1cbnVsbH0KK1xkZWZcY3RybCAjMXt7XHR0IFxyYXdiYWNrc2xhc2ggXGhhdH0jMX0KKworJSBAZmlsZSwgQG9wdGlvbiBhcmUgdGhlIHNhbWUgYXMgQHNhbXAuCitcbGV0XGZpbGU9XHNhbXAKK1xsZXRcb3B0aW9uPVxzYW1wCisKKyUgQGNvZGUgaXMgYSBtb2RpZmljYXRpb24gb2YgQHQsCislIHdoaWNoIG1ha2VzIHNwYWNlcyB0aGUgc2FtZSBzaXplIGFzIG5vcm1hbCBpbiB0aGUgc3Vycm91bmRpbmcgdGV4dC4KK1xkZWZcdGNsb3NlIzF7JQorICB7JQorICAgICUgQ2hhbmdlIG5vcm1hbCBpbnRlcndvcmQgc3BhY2UgdG8gYmUgc2FtZSBhcyBmb3IgdGhlIGN1cnJlbnQgZm9udC4KKyAgICBcc3BhY2Vza2lwID0gXGZvbnRkaW1lbjJcZm9udAorICAgICUKKyAgICAlIFN3aXRjaCB0byB0eXBld3JpdGVyLgorICAgIFx0dAorICAgICUKKyAgICAlIEJ1dCBgXCAnIHByb2R1Y2VzIHRoZSBsYXJnZSB0eXBld3JpdGVyIGludGVyd29yZCBzcGFjZS4KKyAgICBcZGVmXCB7e1xzcGFjZXNraXAgPSAwcHR7fSB9fSUKKyAgICAlCisgICAgJSBUdXJuIG9mZiBoeXBoZW5hdGlvbi4KKyAgICBcbm9oeXBoZW5hdGlvbgorICAgICUKKyAgICBccmF3YmFja3NsYXNoCisgICAgXHBsYWluZnJlbmNoc3BhY2luZworICAgICMxJQorICB9JQorICBcbnVsbAorfQorCislIFdlICptdXN0KiB0dXJuIG9uIGh5cGhlbmF0aW9uIGF0IGAtJyBhbmQgYF8nIGluIEBjb2RlLgorJSBPdGhlcndpc2UsIGl0IGlzIHRvbyBoYXJkIHRvIGF2b2lkIG92ZXJmdWxsIGhib3hlcworJSBpbiB0aGUgRW1hY3MgbWFudWFsLCB0aGUgTGlicmFyeSBtYW51YWwsIGV0Yy4KKworJSBVbmZvcnR1bmF0ZWx5LCBUZVggdXNlcyBvbmUgcGFyYW1ldGVyIChcaHlwaGVuY2hhcikgdG8gY29udHJvbAorJSBib3RoIGh5cGhlbmF0aW9uIGF0IC0gYW5kIGh5cGhlbmF0aW9uIHdpdGhpbiB3b3Jkcy4KKyUgV2UgbXVzdCB0aGVyZWZvcmUgdHVybiB0aGVtIGJvdGggb2ZmIChcdGNsb3NlIGRvZXMgdGhhdCkKKyUgYW5kIGFycmFuZ2UgZXhwbGljaXRseSB0byBoeXBoZW5hdGUgYXQgYSBkYXNoLgorJSAgLS0gcm1zLgoreworICBcY2F0Y29kZWBcLT1cYWN0aXZlCisgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgJQorICBcZ2xvYmFsXGRlZlxjb2Rle1xiZWdpbmdyb3VwCisgICAgXGNhdGNvZGVgXC09XGFjdGl2ZSAgXGNhdGNvZGVgXF89XGFjdGl2ZQorICAgIFxpZmFsbG93Y29kZWJyZWFrcworICAgICBcbGV0LVxjb2RlZGFzaAorICAgICBcbGV0X1xjb2RldW5kZXIKKyAgICBcZWxzZQorICAgICBcbGV0LVxyZWFsZGFzaAorICAgICBcbGV0X1xyZWFsdW5kZXIKKyAgICBcZmkKKyAgICBcY29kZXgKKyAgfQorfQorCitcZGVmXHJlYWxkYXNoey19CitcZGVmXGNvZGVkYXNoey1cZGlzY3JldGlvbmFyeXt9e317fX0KK1xkZWZcY29kZXVuZGVyeyUKKyAgJSB0aGlzIGlzIGFsbCBzbyBAbWF0aHtAY29kZXt2YXJfbmFtZX0rMX0gY2FuIHdvcmsuICBJbiBtYXRoIG1vZGUsIF8KKyAgJSBpcyAiYWN0aXZlIiAobWF0aGNvZGUiODAwMCkgYW5kIFxub3JtYWx1bmRlcnNjb3JlIChvciBcY2hhcjk1LCBldGMuKQorICAlIHdpbGwgdGhlcmVmb3JlIGV4cGFuZCB0aGUgYWN0aXZlIGRlZmluaXRpb24gb2YgXywgd2hpY2ggaXMgdXMKKyAgJSAoaW5zaWRlIEBjb2RlIHRoYXQgaXMpLCB0aGVyZWZvcmUgYW4gZW5kbGVzcyBsb29wLgorICBcaWZ1c2luZ3R0e1xpZm1tb2RlCisgICAgICAgICAgICAgICBcbWF0aGNoYXIiMDc1RiAlIGNsYXNzIDA9b3JkaW5hcnksIGZhbWlseSA3PXR0ZmFtLCBwb3MgMHg1Rj1fLgorICAgICAgICAgICAgIFxlbHNlXG5vcm1hbHVuZGVyc2NvcmUgXGZpCisgICAgICAgICAgICAgXGRpc2NyZXRpb25hcnl7fXt9e319JQorICAgICAgICAgICAge1xffSUKK30KK1xkZWZcY29kZXggIzF7XHRjbG9zZXsjMX1cZW5kZ3JvdXB9CisKKyUgQW4gYWRkaXRpb25hbCBjb21wbGljYXRpb246IHRoZSBhYm92ZSB3aWxsIGFsbG93IGJyZWFrcyBhZnRlciwgZS5nLiwKKyUgZWFjaCBvZiB0aGUgZm91ciB1bmRlcnNjb3JlcyBpbiBfX3R5cGVvZl9fLiAgVGhpcyBpcyB1bmRlc2lyYWJsZSBpbgorJSBzb21lIG1hbnVhbHMsIGVzcGVjaWFsbHkgaWYgdGhleSBkb24ndCBoYXZlIGxvbmcgaWRlbnRpZmllcnMgaW4KKyUgZ2VuZXJhbC4gIEBhbGxvd2NvZGVicmVha3MgcHJvdmlkZXMgYSB3YXkgdG8gY29udHJvbCB0aGlzLgorJSAKK1xuZXdpZlxpZmFsbG93Y29kZWJyZWFrcyAgXGFsbG93Y29kZWJyZWFrc3RydWUKKworXGRlZlxrZXl3b3JkdHJ1ZXt0cnVlfQorXGRlZlxrZXl3b3JkZmFsc2V7ZmFsc2V9CisKK1xwYXJzZWFyZ2RlZlxhbGxvd2NvZGVicmVha3N7JQorICBcZGVmXHR4aWFyZ3sjMX0lCisgIFxpZnhcdHhpYXJnXGtleXdvcmR0cnVlCisgICAgXGFsbG93Y29kZWJyZWFrc3RydWUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1xrZXl3b3JkZmFsc2UKKyAgICBcYWxsb3djb2RlYnJlYWtzZmFsc2UKKyAgXGVsc2UKKyAgICBcZXJyaGVscCA9IFxFTXNpbXBsZQorICAgIFxlcnJtZXNzYWdle1Vua25vd24gQGFsbG93Y29kZWJyZWFrcyBvcHRpb24gYFx0eGlhcmcnfSUKKyAgXGZpXGZpCit9CisKKyUgQGtiZCBpcyBsaWtlIEBjb2RlLCBleGNlcHQgdGhhdCBpZiB0aGUgYXJndW1lbnQgaXMganVzdCBvbmUgQGtleSBjb21tYW5kLAorJSB0aGVuIEBrYmQgaGFzIG5vIGVmZmVjdC4KKworJSBAa2JkaW5wdXRzdHlsZSAtLSBhcmcgaXMgYGRpc3RpbmN0JyAoQGtiZCB1c2VzIHNsYW50ZWQgdHR5IGZvbnQgYWx3YXlzKSwKKyUgICBgZXhhbXBsZScgKEBrYmQgdXNlcyB0dHNsIG9ubHkgaW5zaWRlIG9mIEBleGFtcGxlIGFuZCBmcmllbmRzKSwKKyUgICBvciBgY29kZScgKEBrYmQgdXNlcyBub3JtYWwgdHR5IGZvbnQgYWx3YXlzKS4KK1xwYXJzZWFyZ2RlZlxrYmRpbnB1dHN0eWxleyUKKyAgXGRlZlx0eGlhcmd7IzF9JQorICBcaWZ4XHR4aWFyZ1x3b3JkZGlzdGluY3QKKyAgICBcZ2RlZlxrYmRleGFtcGxlZm9udHtcdHRzbH1cZ2RlZlxrYmRmb250e1x0dHNsfSUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1x3b3JkZXhhbXBsZQorICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dHNsfVxnZGVmXGtiZGZvbnR7XHR0fSUKKyAgXGVsc2VcaWZ4XHR4aWFyZ1x3b3JkY29kZQorICAgIFxnZGVmXGtiZGV4YW1wbGVmb250e1x0dH1cZ2RlZlxrYmRmb250e1x0dH0lCisgIFxlbHNlCisgICAgXGVycmhlbHAgPSBcRU1zaW1wbGUKKyAgICBcZXJybWVzc2FnZXtVbmtub3duIEBrYmRpbnB1dHN0eWxlIG9wdGlvbiBgXHR4aWFyZyd9JQorICBcZmlcZmlcZmkKK30KK1xkZWZcd29yZGRpc3RpbmN0e2Rpc3RpbmN0fQorXGRlZlx3b3JkZXhhbXBsZXtleGFtcGxlfQorXGRlZlx3b3JkY29kZXtjb2RlfQorCislIERlZmF1bHQgaXMgYGRpc3RpbmN0LicKK1xrYmRpbnB1dHN0eWxlIGRpc3RpbmN0CisKK1xkZWZceGtleXtca2V5fQorXGRlZlxrYmRmb28jMSMyIzNccGFye1xkZWZcb25leyMxfVxkZWZcdGhyZWV7IzN9XGRlZlx0aHJlZXh7Pz99JQorXGlmeFxvbmVceGtleVxpZnhcdGhyZWV4XHRocmVlIFxrZXl7IzJ9JQorXGVsc2V7XHRjbG9zZXtca2JkZm9udFxsb29rfX1cZmkKK1xlbHNle1x0Y2xvc2V7XGtiZGZvbnRcbG9va319XGZpfQorCislIEZvciBAaW5kaWNhdGV1cmwsIEBlbnYsIEBjb21tYW5kIHF1b3RlcyBzZWVtIHVubmVjZXNzYXJ5LCBzbyB1c2UgXGNvZGUuCitcbGV0XGluZGljYXRldXJsPVxjb2RlCitcbGV0XGVudj1cY29kZQorXGxldFxjb21tYW5kPVxjb2RlCisKKyUgQHVyZWYgKGFiYnJldmlhdGlvbiBmb3IgYHVybHJlZicpIHRha2VzIGFuIG9wdGlvbmFsIChjb21tYS1zZXBhcmF0ZWQpCislIHNlY29uZCBhcmd1bWVudCBzcGVjaWZ5aW5nIHRoZSB0ZXh0IHRvIGRpc3BsYXkgYW5kIGFuIG9wdGlvbmFsIHRoaXJkCislIGFyZyBhcyB0ZXh0IHRvIGRpc3BsYXkgaW5zdGVhZCBvZiAocmF0aGVyIHRoYW4gaW4gYWRkaXRpb24gdG8pIHRoZSB1cmwKKyUgaXRzZWxmLiAgRmlyc3QgKG1hbmRhdG9yeSkgYXJnIGlzIHRoZSB1cmwuICBQZXJoYXBzIGV2ZW50dWFsbHkgcHV0IGluCislIGEgaHlwZXJ0ZXggXHNwZWNpYWwgaGVyZS4KKyUKK1xkZWZcdXJlZiMxe1xkb3VyZWYgIzEsLCxcZmluaXNofQorXGRlZlxkb3VyZWYjMSwjMiwjMywjNFxmaW5pc2h7XGJlZ2luZ3JvdXAKKyAgXHVuc2Vwc3BhY2VzCisgIFxwZGZ1cmx7IzF9JQorICBcc2V0Ym94MCA9IFxoYm94e1xpZ25vcmVzcGFjZXMgIzN9JQorICBcaWZkaW1cd2QwID4gMHB0CisgICAgXHVuaGJveDAgJSB0aGlyZCBhcmcgZ2l2ZW4sIHNob3cgb25seSB0aGF0CisgIFxlbHNlCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMyfSUKKyAgICBcaWZkaW1cd2QwID4gMHB0CisgICAgICBcaWZwZGYKKyAgICAgICAgXHVuaGJveDAgICAgICAgICAgICAgJSBQREY6IDJuZCBhcmcgZ2l2ZW4sIHNob3cgb25seSBpdAorICAgICAgXGVsc2UKKyAgICAgICAgXHVuaGJveDBcIChcY29kZXsjMX0pJSBEVkk6IDJuZCBhcmcgZ2l2ZW4sIHNob3cgYm90aCBpdCBhbmQgdXJsCisgICAgICBcZmkKKyAgICBcZWxzZQorICAgICAgXGNvZGV7IzF9JSBvbmx5IHVybCBnaXZlbiwgc28gc2hvdyBpdAorICAgIFxmaQorICBcZmkKKyAgXGVuZGxpbmsKK1xlbmRncm91cH0KKworJSBAdXJsIHN5bm9ueW0gZm9yIEB1cmVmLCBzaW5jZSB0aGF0J3MgaG93IGV2ZXJ5b25lIHVzZXMgaXQuCislCitcbGV0XHVybD1cdXJlZgorCislIHJtcyBkb2VzIG5vdCBsaWtlIGFuZ2xlIGJyYWNrZXRzIC0ta2FybCwgMTdtYXk5Ny4KKyUgU28gbm93IEBlbWFpbCBpcyBqdXN0IGxpa2UgQHVyZWYsIHVubGVzcyB3ZSBhcmUgcGRmLgorJQorJVxkZWZcZW1haWwjMXtcYW5nbGVsZWZ0e1x0dCAjMX1cYW5nbGVyaWdodH0KK1xpZnBkZgorICBcZGVmXGVtYWlsIzF7XGRvZW1haWwjMSwsXGZpbmlzaH0KKyAgXGRlZlxkb2VtYWlsIzEsIzIsIzNcZmluaXNoe1xiZWdpbmdyb3VwCisgICAgXHVuc2Vwc3BhY2VzCisgICAgXHBkZnVybHttYWlsdG86IzF9JQorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn0lCisgICAgXGlmZGltXHdkMD4wcHRcdW5oYm94MFxlbHNlXGNvZGV7IzF9XGZpCisgICAgXGVuZGxpbmsKKyAgXGVuZGdyb3VwfQorXGVsc2UKKyAgXGxldFxlbWFpbD1cdXJlZgorXGZpCisKKyUgQ2hlY2sgaWYgd2UgYXJlIGN1cnJlbnRseSB1c2luZyBhIHR5cGV3cml0ZXIgZm9udC4gIFNpbmNlIGFsbCB0aGUKKyUgQ29tcHV0ZXIgTW9kZXJuIHR5cGV3cml0ZXIgZm9udHMgaGF2ZSB6ZXJvIGludGVyd29yZCBzdHJldGNoIChhbmQKKyUgc2hyaW5rKSwgYW5kIGl0IGlzIHJlYXNvbmFibGUgdG8gZXhwZWN0IGFsbCB0eXBld3JpdGVyIGZvbnRzIHRvIGhhdmUKKyUgdGhpcyBwcm9wZXJ0eSwgd2UgY2FuIGNoZWNrIHRoYXQgZm9udCBwYXJhbWV0ZXIuCislCitcZGVmXGlmbW9ub3NwYWNle1xpZmRpbVxmb250ZGltZW4zXGZvbnQ9MHB0IH0KKworJSBUeXBlc2V0IGEgZGltZW5zaW9uLCBlLmcuLCBgaW4nIG9yIGBwdCcuICBUaGUgb25seSByZWFzb24gZm9yIHRoZQorJSBhcmd1bWVudCBpcyB0byBtYWtlIHRoZSBpbnB1dCBsb29rIHJpZ2h0OiBAZG1ue3B0fSBpbnN0ZWFkIG9mIEBkbW57fXB0LgorJQorXGRlZlxkbW4jMXtcdGhpbnNwYWNlICMxfQorCitcZGVmXGtiZCMxe1xkZWZcbG9va3sjMX1cZXhwYW5kYWZ0ZXJca2JkZm9vXGxvb2s/P1xwYXJ9CisKKyUgQGwgd2FzIG5ldmVyIGRvY3VtZW50ZWQgdG8gbWVhbiBgYHN3aXRjaCB0byB0aGUgTGlzcCBmb250JycsCislIGFuZCBpdCBpcyBub3QgdXNlZCBhcyBzdWNoIGluIGFueSBtYW51YWwgSSBjYW4gZmluZC4gIFdlIG5lZWQgaXQgZm9yCislIFBvbGlzaCBzdXBwcmVzc2VkLWwuICAtLWthcmwsIDIyc2VwOTYuCislXGRlZlxsIzF7e1xsaSAjMX1cbnVsbH0KKworJSBFeHBsaWNpdCBmb250IGNoYW5nZXM6IEByLCBAc2MsIHVuZG9jdW1lbnRlZCBAaWkuCitcZGVmXHIjMXt7XHJtICMxfX0gICAgICAgICAgICAgICUgcm9tYW4gZm9udAorXGRlZlxzYyMxe3tcc21hbGxjYXBzIzF9fSAgICAgICAlIHNtYWxsY2FwcyBmb250CitcZGVmXGlpIzF7e1xpdCAjMX19ICAgICAgICAgICAgICUgaXRhbGljIGZvbnQKKworJSBAYWNyb255bSBmb3IgIkZCSSIsICJOQVRPIiwgYW5kIHRoZSBsaWtlLgorJSBXZSBwcmludCB0aGlzIG9uZSBwb2ludCBzaXplIHNtYWxsZXIsIHNpbmNlIGl0J3MgaW50ZW5kZWQgZm9yCislIGFsbC11cHBlcmNhc2UuCislIAorXGRlZlxhY3JvbnltIzF7XGRvYWNyb255bSAjMSwsXGZpbmlzaH0KK1xkZWZcZG9hY3JvbnltIzEsIzIsIzNcZmluaXNoeyUKKyAge1xzZWxlY3Rmb250c1xsc2l6ZSAjMX0lCisgIFxkZWZcdGVtcHsjMn0lCisgIFxpZnhcdGVtcFxlbXB0eSBcZWxzZQorICAgIFxzcGFjZSAoe1x1bnNlcHNwYWNlcyBcaWdub3Jlc3BhY2VzIFx0ZW1wIFx1bnNraXB9KSUKKyAgXGZpCit9CisKKyUgQGFiYnIgZm9yICJDb21wdXQuIEouIiBhbmQgdGhlIGxpa2UuCislIE5vIGZvbnQgY2hhbmdlLCBidXQgZG9uJ3QgZG8gZW5kLW9mLXNlbnRlbmNlIHNwYWNpbmcuCislIAorXGRlZlxhYmJyIzF7XGRvYWJiciAjMSwsXGZpbmlzaH0KK1xkZWZcZG9hYmJyIzEsIzIsIzNcZmluaXNoeyUKKyAge1xwbGFpbmZyZW5jaHNwYWNpbmcgIzF9JQorICBcZGVmXHRlbXB7IzJ9JQorICBcaWZ4XHRlbXBcZW1wdHkgXGVsc2UKKyAgICBcc3BhY2UgKHtcdW5zZXBzcGFjZXMgXGlnbm9yZXNwYWNlcyBcdGVtcCBcdW5za2lwfSklCisgIFxmaQorfQorCislIEBwb3VuZHN7fSBpcyBhIHN0ZXJsaW5nIHNpZ24sIHdoaWNoIEtudXRoIHB1dCBpbiB0aGUgQ00gaXRhbGljIGZvbnQuCislCitcZGVmXHBvdW5kc3t7XGl0XCR9fQorCislIEBldXJve30gY29tZXMgZnJvbSBhIHNlcGFyYXRlIGZvbnQsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBzdHlsZS4KKyUgV2UgdXNlIHRoZSBmcmVlIGZleW0qIGZvbnRzIGZyb20gdGhlIGV1cm9zeW0gcGFja2FnZSBieSBIZW5yaWsKKyUgVGhlaWxpbmcsIHdoaWNoIHN1cHBvcnQgcmVndWxhciwgc2xhbnRlZCwgYm9sZCBhbmQgYm9sZCBzbGFudGVkIChhbmQKKyUgIm91dGxpbmVkIiAoYmxhY2tib2FyZCBib2FyZCwgc29ydCBvZikgdmVyc2lvbnMsIHdoaWNoIHdlIGRvbid0IG5lZWQpLgorJSBJdCBpcyBhdmFpbGFibGUgZnJvbSBodHRwOi8vd3d3LmN0YW4ub3JnL3RleC1hcmNoaXZlL2ZvbnRzL2V1cm9zeW0uCislIAorJSBBbHRob3VnaCBvbmx5IHJlZ3VsYXIgaXMgdGhlIHRydWx5IG9mZmljaWFsIEV1cm8gc3ltYm9sLCB3ZSBpZ25vcmUKKyUgdGhhdC4gIFRoZSBFdXJvIGlzIGRlc2lnbmVkIHRvIGJlIHNsaWdodGx5IHRhbGxlciB0aGFuIHRoZSByZWd1bGFyCislIGZvbnQgaGVpZ2h0LgorJSAKKyUgZmV5bXIgLSByZWd1bGFyCislIGZleW1vIC0gc2xhbnRlZAorJSBmZXliciAtIGJvbGQKKyUgZmV5Ym8gLSBib2xkIHNsYW50ZWQKKyUgCislIFRoZXJlIGlzIG5vIGdvb2QgKGZyZWUpIHR5cGV3cml0ZXIgdmVyc2lvbiwgdG8gbXkga25vd2xlZGdlLgorJSBBIGZleW1yMTAgZXVybyBpcyB+Ny4zcHQgd2lkZSwgd2hpbGUgYSBub3JtYWwgY210dDEwIGNoYXIgaXMgfjUuMjVwdCB3aWRlLgorJSBIbW0uCislIAorJSBBbHNvIGRvZXNuJ3Qgd29yayBpbiBtYXRoLiAgRG8gd2UgbmVlZCB0byBkbyBtYXRoIHdpdGggZXVybyBzeW1ib2xzPworJSBIb3BlIG5vdC4KKyUgCislIAorXGRlZlxldXJve3tcZXVyb2ZvbnQgZX19CitcZGVmXGV1cm9mb250eyUKKyAgJSBXZSBzZXQgdGhlIGZvbnQgYXQgZWFjaCBjb21tYW5kLCByYXRoZXIgdGhhbiBwcmVkZWZpbmluZyBpdCBpbgorICAlIFx0ZXh0Zm9udHMgYW5kIHRoZSBvdGhlciBmb250LXN3aXRjaGluZyBjb21tYW5kcywgc28gdGhhdAorICAlIGluc3RhbGxhdGlvbnMgd2hpY2ggbmV2ZXIgbmVlZCB0aGUgc3ltYm9sIGRvbid0IGhhdmUgdG8gaGF2ZSB0aGUKKyAgJSBmb250IGluc3RhbGxlZC4KKyAgJSAKKyAgJSBUaGVyZSBpcyBvbmx5IG9uZSBkZXNpZ25lZCBzaXplIChub21pbmFsIDEwcHQpLCBzbyB3ZSBhbHdheXMgc2NhbGUKKyAgJSB0aGF0IHRvIHRoZSBjdXJyZW50IG5vbWluYWwgc2l6ZS4KKyAgJSAKKyAgJSBCeSB0aGUgd2F5LCBzaW1wbHkgdXNpbmcgImF0IDFlbSIgd29ya3MgZm9yIGNtcjEwIGFuZCB0aGUgbGlrZSwgYnV0CisgICUgZG9lcyBub3Qgd29yayBmb3IgY21ieDEwIGFuZCBvdGhlciBleHRlbmRlZC9zaHJ1bmtlbiBmb250cy4KKyAgJSAKKyAgXGRlZlxldXJvc2l6ZXtcY3NuYW1lXGN1cmZvbnRzaXplIG5vbWluYWxzaXplXGVuZGNzbmFtZX0lCisgICUKKyAgXGlmeFxjdXJmb250c3R5bGVcYmZzdHlsZW5hbWUgCisgICAgJSBib2xkOgorICAgIFxmb250XHRoaXNldXJvZm9udCA9IFxpZnVzaW5naXR7ZmV5Ym8xMH17ZmV5YnIxMH0gYXQgXGV1cm9zaXplCisgIFxlbHNlIAorICAgICUgcmVndWxhcjoKKyAgICBcZm9udFx0aGlzZXVyb2ZvbnQgPSBcaWZ1c2luZ2l0e2ZleW1vMTB9e2ZleW1yMTB9IGF0IFxldXJvc2l6ZQorICBcZmkKKyAgXHRoaXNldXJvZm9udAorfQorCislIEByZWdpc3RlcmVkc3ltYm9sIC0gUiBpbiBhIGNpcmNsZS4gIFRoZSBmb250IGZvciB0aGUgUiBzaG91bGQgcmVhbGx5CislIGJlIHNtYWxsZXIgeWV0LCBidXQgbGxsc2l6ZSBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8gZm9yIG5vdy4KKyUgQWRhcHRlZCBmcm9tIHRoZSBwbGFpbi50ZXggZGVmaW5pdGlvbiBvZiBcY29weXJpZ2h0LgorJQorXGRlZlxyZWdpc3RlcmVkc3ltYm9seyUKKyAgJF57e1xvb2FsaWdue1xoZmlsXHJhaXNlLjA3ZXhcaGJveHtcc2VsZWN0Zm9udHNcbGxsc2l6ZSBSfSUKKyAgICAgICAgICAgICAgIFxoZmlsXGNyY3JcT3JifX0lCisgICAgfSQlCit9CisKKyUgTGF1cmVudCBTaWViZW5tYW5uIHJlcG9ydHMgXE9yYiB1bmRlZmluZWQgd2l0aDoKKyUgIFRleHR1cmVzIDEuNy43IChwcmVsb2FkZWQgZm9ybWF0PXBsYWluIDkzLjEwLjE0KSAgKDY4SykgIDE2IEFQUiAyMDA0IDAyOjM4CislIHNvIHdlJ2xsIGRlZmluZSBpdCBpZiBuZWNlc3NhcnkuCislIAorXGlmeFxPcmJcdW5kZWZpbmVkCitcZGVmXE9yYntcbWF0aGhleGJveDIwRH0KK1xmaQorCisKK1xtZXNzYWdle3BhZ2UgaGVhZGluZ3MsfQorCitcbmV3c2tpcFx0aXRsZXBhZ2V0b3BnbHVlIFx0aXRsZXBhZ2V0b3BnbHVlID0gMS41aW4KK1xuZXdza2lwXHRpdGxlcGFnZWJvdHRvbWdsdWUgXHRpdGxlcGFnZWJvdHRvbWdsdWUgPSAycGMKKworJSBGaXJzdCB0aGUgdGl0bGUgcGFnZS4gIE11c3QgZG8gQHNldHRpdGxlIGJlZm9yZSBAdGl0bGVwYWdlLgorXG5ld2lmXGlmc2VlbmF1dGhvcgorXG5ld2lmXGlmZmluaXNoZWR0aXRsZXBhZ2UKKworJSBEbyBhbiBpbXBsaWNpdCBAY29udGVudHMgb3IgQHNob3J0Y29udGVudHMgYWZ0ZXIgQGVuZCB0aXRsZXBhZ2UgaWYgdGhlCislIHVzZXIgc2F5cyBAc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZSBvciBAc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlLgorJQorXG5ld2lmXGlmc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZQorIFxsZXRcc2V0Y29udGVudHNhZnRlcnRpdGxlcGFnZSA9IFxzZXRjb250ZW50c2FmdGVydGl0bGVwYWdldHJ1ZQorXG5ld2lmXGlmc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgXGxldFxzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UgPSBcc2V0c2hvcnRjb250ZW50c2FmdGVydGl0bGVwYWdldHJ1ZQorCitccGFyc2VhcmdkZWZcc2hvcnR0aXRsZXBhZ2V7XGJlZ2luZ3JvdXBcaGJveHt9XHZza2lwIDEuNWluIFxjaGFwcm0gXGNlbnRlcmxpbmV7IzF9JQorICAgICAgICBcZW5kZ3JvdXBccGFnZVxoYm94e31ccGFnZX0KKworXGVudmRlZlx0aXRsZXBhZ2V7JQorICAlIE9wZW4gb25lIGV4dHJhIGdyb3VwLCBhcyB3ZSB3YW50IHRvIGNsb3NlIGl0IGluIHRoZSBtaWRkbGUgb2YgXEV0aXRsZXBhZ2UuCisgIFxiZWdpbmdyb3VwCisgICAgXHBhcmluZGVudD0wcHQgXHRleHRmb250cworICAgICUgTGVhdmUgc29tZSBzcGFjZSBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHBhZ2UuCisgICAgXHZnbHVlXHRpdGxlcGFnZXRvcGdsdWUKKyAgICAlIE5vIHJ1bGUgYXQgcGFnZSBib3R0b20gdW5sZXNzIHdlIHByaW50IG9uZSBhdCB0aGUgdG9wIHdpdGggQHRpdGxlLgorICAgIFxmaW5pc2hlZHRpdGxlcGFnZXRydWUKKyAgICAlCisgICAgJSBNb3N0IHRpdGxlIGBgcGFnZXMnJyBhcmUgYWN0dWFsbHkgdHdvIHBhZ2VzIGxvbmcsIHdpdGggc3BhY2UKKyAgICAlIGF0IHRoZSB0b3Agb2YgdGhlIHNlY29uZC4gIFdlIGRvbid0IHdhbnQgdGhlIHJhZ2dlZCBsZWZ0IG9uIHRoZSBzZWNvbmQuCisgICAgXGxldFxvbGRwYWdlID0gXHBhZ2UKKyAgICBcZGVmXHBhZ2V7JQorICAgICAgXGlmZmluaXNoZWR0aXRsZXBhZ2VcZWxzZQorCSBcZmluaXNodGl0bGVwYWdlCisgICAgICBcZmkKKyAgICAgIFxsZXRccGFnZSA9IFxvbGRwYWdlCisgICAgICBccGFnZQorICAgICAgXG51bGwKKyAgICB9JQorfQorCitcZGVmXEV0aXRsZXBhZ2V7JQorICAgIFxpZmZpbmlzaGVkdGl0bGVwYWdlXGVsc2UKKwlcZmluaXNodGl0bGVwYWdlCisgICAgXGZpCisgICAgJSBJdCBpcyBpbXBvcnRhbnQgdG8gZG8gdGhlIHBhZ2UgYnJlYWsgYmVmb3JlIGVuZGluZyB0aGUgZ3JvdXAsCisgICAgJSBiZWNhdXNlIHRoZSBoZWFkbGluZSBhbmQgZm9vdGxpbmUgYXJlIG9ubHkgZW1wdHkgaW5zaWRlIHRoZSBncm91cC4KKyAgICAlIElmIHdlIHVzZSB0aGUgbmV3IGRlZmluaXRpb24gb2YgXHBhZ2UsIHdlIGFsd2F5cyBnZXQgYSBibGFuayBwYWdlCisgICAgJSBhZnRlciB0aGUgdGl0bGUgcGFnZSwgd2hpY2ggd2UgY2VydGFpbmx5IGRvbid0IHdhbnQuCisgICAgXG9sZHBhZ2UKKyAgXGVuZGdyb3VwCisgICUKKyAgJSBOZWVkIHRoaXMgYmVmb3JlIHRoZSBcLi4uYWZ0ZXJ0aXRsZXBhZ2UgY2hlY2tzIHNvIHRoYXQgaWYgdGhleSBhcmUKKyAgJSBpbiBlZmZlY3QgdGhlIHRvYyBwYWdlcyB3aWxsIGNvbWUgb3V0IHdpdGggcGFnZSBudW1iZXJzLgorICBcSEVBRElOR1NvbgorICAlCisgICUgSWYgdGhleSB3YW50IHNob3J0LCB0aGV5IGNlcnRhaW5seSB3YW50IGxvbmcgdG9vLgorICBcaWZzZXRzaG9ydGNvbnRlbnRzYWZ0ZXJ0aXRsZXBhZ2UKKyAgICBcc2hvcnRjb250ZW50cworICAgIFxjb250ZW50cworICAgIFxnbG9iYWxcbGV0XHNob3J0Y29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxjb250ZW50cyA9IFxyZWxheAorICBcZmkKKyAgJQorICBcaWZzZXRjb250ZW50c2FmdGVydGl0bGVwYWdlCisgICAgXGNvbnRlbnRzCisgICAgXGdsb2JhbFxsZXRcY29udGVudHMgPSBccmVsYXgKKyAgICBcZ2xvYmFsXGxldFxzaG9ydGNvbnRlbnRzID0gXHJlbGF4CisgIFxmaQorfQorCitcZGVmXGZpbmlzaHRpdGxlcGFnZXslCisgIFx2c2tpcDRwdCBcaHJ1bGUgaGVpZ2h0IDJwdCB3aWR0aCBcaHNpemUKKyAgXHZza2lwXHRpdGxlcGFnZWJvdHRvbWdsdWUKKyAgXGZpbmlzaGVkdGl0bGVwYWdldHJ1ZQorfQorCislJSUgTWFjcm9zIHRvIGJlIHVzZWQgd2l0aGluIEB0aXRsZXBhZ2U6CisKK1xsZXRcc3VidGl0bGVybT1cdGVucm0KK1xkZWZcc3VidGl0bGVmb250e1xzdWJ0aXRsZXJtIFxub3JtYWxiYXNlbGluZXNraXAgPSAxM3B0IFxub3JtYWxiYXNlbGluZXN9CisKK1xkZWZcYXV0aG9yZm9udHtcYXV0aG9ycm0gXG5vcm1hbGJhc2VsaW5lc2tpcCA9IDE2cHQgXG5vcm1hbGJhc2VsaW5lcworCQlcbGV0XHR0PVxhdXRob3J0dH0KKworXHBhcnNlYXJnZGVmXHRpdGxleyUKKyAgXGNoZWNrZW52XHRpdGxlcGFnZQorICBcbGVmdGxpbmV7XHRpdGxlZm9udHNccm0gIzF9CisgICUgcHJpbnQgYSBydWxlIGF0IHRoZSBwYWdlIGJvdHRvbSBhbHNvLgorICBcZmluaXNoZWR0aXRsZXBhZ2VmYWxzZQorICBcdnNraXA0cHQgXGhydWxlIGhlaWdodCA0cHQgd2lkdGggXGhzaXplIFx2c2tpcDRwdAorfQorCitccGFyc2VhcmdkZWZcc3VidGl0bGV7JQorICBcY2hlY2tlbnZcdGl0bGVwYWdlCisgIHtcc3VidGl0bGVmb250IFxyaWdodGxpbmV7IzF9fSUKK30KKworJSBAYXV0aG9yIHNob3VsZCBjb21lIGxhc3QsIGJ1dCBtYXkgY29tZSBtYW55IHRpbWVzLgorJSBJdCBjYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBAcXVvdGF0aW9uLgorJQorXHBhcnNlYXJnZGVmXGF1dGhvcnslCisgIFxkZWZcdGVtcHtccXVvdGF0aW9ufSUKKyAgXGlmeFx0aGlzZW52XHRlbXAKKyAgICBcZGVmXHF1b3RhdGlvbmF1dGhvcnsjMX0lIHByaW50ZWQgaW4gXEVxdW90YXRpb24uCisgIFxlbHNlCisgICAgXGNoZWNrZW52XHRpdGxlcGFnZQorICAgIFxpZnNlZW5hdXRob3JcZWxzZSBcdnNraXAgMHB0IHBsdXMgMWZpbGxsIFxzZWVuYXV0aG9ydHJ1ZSBcZmkKKyAgICB7XGF1dGhvcmZvbnQgXGxlZnRsaW5leyMxfX0lCisgIFxmaQorfQorCisKKyUlJSBTZXQgdXAgcGFnZSBoZWFkaW5ncyBhbmQgZm9vdGluZ3MuCisKK1xsZXRcdGhpc3BhZ2U9XGZvbGlvCisKK1xuZXd0b2tzXGV2ZW5oZWFkbGluZSAgICAlIGhlYWRsaW5lIG9uIGV2ZW4gcGFnZXMKK1xuZXd0b2tzXG9kZGhlYWRsaW5lICAgICAlIGhlYWRsaW5lIG9uIG9kZCBwYWdlcworXG5ld3Rva3NcZXZlbmZvb3RsaW5lICAgICUgZm9vdGxpbmUgb24gZXZlbiBwYWdlcworXG5ld3Rva3Ncb2RkZm9vdGxpbmUgICAgICUgZm9vdGxpbmUgb24gb2RkIHBhZ2VzCisKKyUgTm93IG1ha2UgVGVYIHVzZSB0aG9zZSB2YXJpYWJsZXMKK1xoZWFkbGluZT17e1x0ZXh0Zm9udHNccm0gXGlmb2RkXHBhZ2VubyBcdGhlXG9kZGhlYWRsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVsc2UgXHRoZVxldmVuaGVhZGxpbmUgXGZpfX0KK1xmb290bGluZT17e1x0ZXh0Zm9udHNccm0gXGlmb2RkXHBhZ2VubyBcdGhlXG9kZGZvb3RsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVsc2UgXHRoZVxldmVuZm9vdGxpbmUgXGZpfVxIRUFESU5HU2hvb2t9CitcbGV0XEhFQURJTkdTaG9vaz1ccmVsYXgKKworJSBDb21tYW5kcyB0byBzZXQgdGhvc2UgdmFyaWFibGVzLgorJSBGb3IgZXhhbXBsZSwgdGhpcyBpcyB3aGF0ICBAaGVhZGluZ3Mgb24gIGRvZXMKKyUgQGV2ZW5oZWFkaW5nIEB0aGlzdGl0bGV8QHRoaXNwYWdlfEB0aGlzY2hhcHRlcgorJSBAb2RkaGVhZGluZyBAdGhpc2NoYXB0ZXJ8QHRoaXNwYWdlfEB0aGlzdGl0bGUKKyUgQGV2ZW5mb290aW5nIEB0aGlzZmlsZXx8CislIEBvZGRmb290aW5nIHx8QHRoaXNmaWxlCisKKworXGRlZlxldmVuaGVhZGluZ3tccGFyc2VhcmdcZXZlbmhlYWRpbmd4eHh9CitcZGVmXGV2ZW5oZWFkaW5neHh4ICMxe1xldmVuaGVhZGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcZXZlbmhlYWRpbmd5eXkgIzFcfCMyXHwjM1x8IzRcZmluaXNoeyUKK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtccmxhcHtcY2VudGVybGluZXsjMn19XGxpbmV7IzFcaGZpbCMzfX19CisKK1xkZWZcb2RkaGVhZGluZ3tccGFyc2Vhcmdcb2RkaGVhZGluZ3h4eH0KK1xkZWZcb2RkaGVhZGluZ3h4eCAjMXtcb2RkaGVhZGluZ3l5eSAjMVx8XHxcfFx8XGZpbmlzaH0KK1xkZWZcb2RkaGVhZGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQorXGdsb2JhbFxvZGRoZWFkbGluZT17XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319fQorCitccGFyc2VhcmdkZWZcZXZlcnloZWFkaW5ne1xvZGRoZWFkaW5neHh4eyMxfVxldmVuaGVhZGluZ3h4eHsjMX19JQorCitcZGVmXGV2ZW5mb290aW5ne1xwYXJzZWFyZ1xldmVuZm9vdGluZ3h4eH0KK1xkZWZcZXZlbmZvb3Rpbmd4eHggIzF7XGV2ZW5mb290aW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxldmVuZm9vdGluZ3l5eSAjMVx8IzJcfCMzXHwjNFxmaW5pc2h7JQorXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xybGFwe1xjZW50ZXJsaW5leyMyfX1cbGluZXsjMVxoZmlsIzN9fX0KKworXGRlZlxvZGRmb290aW5ne1xwYXJzZWFyZ1xvZGRmb290aW5neHh4fQorXGRlZlxvZGRmb290aW5neHh4ICMxe1xvZGRmb290aW5neXl5ICMxXHxcfFx8XHxcZmluaXNofQorXGRlZlxvZGRmb290aW5neXl5ICMxXHwjMlx8IzNcfCM0XGZpbmlzaHslCisgIFxnbG9iYWxcb2RkZm9vdGxpbmUgPSB7XHJsYXB7XGNlbnRlcmxpbmV7IzJ9fVxsaW5leyMxXGhmaWwjM319JQorICAlCisgICUgTGVhdmUgc29tZSBzcGFjZSBmb3IgdGhlIGZvb3RsaW5lLiAgSG9wZWZ1bGx5IG9rIHRvIGFzc3VtZQorICAlIEBldmVuZm9vdGluZyB3aWxsIG5vdCBiZSB1c2VkIGJ5IGl0c2VsZi4KKyAgXGdsb2JhbFxhZHZhbmNlXHBhZ2VoZWlnaHQgYnkgLVxiYXNlbGluZXNraXAKKyAgXGdsb2JhbFxhZHZhbmNlXHZzaXplIGJ5IC1cYmFzZWxpbmVza2lwCit9CisKK1xwYXJzZWFyZ2RlZlxldmVyeWZvb3Rpbmd7XG9kZGZvb3Rpbmd4eHh7IzF9XGV2ZW5mb290aW5neHh4eyMxfX0KKworCislIEBoZWFkaW5ncyBkb3VibGUgICAgICB0dXJucyBoZWFkaW5ncyBvbiBmb3IgZG91YmxlLXNpZGVkIHByaW50aW5nLgorJSBAaGVhZGluZ3Mgc2luZ2xlICAgICAgdHVybnMgaGVhZGluZ3Mgb24gZm9yIHNpbmdsZS1zaWRlZCBwcmludGluZy4KKyUgQGhlYWRpbmdzIG9mZiAgICAgICAgIHR1cm5zIHRoZW0gb2ZmLgorJSBAaGVhZGluZ3Mgb24gICAgICAgICAgc2FtZSBhcyBAaGVhZGluZ3MgZG91YmxlLCByZXRhaW5lZCBmb3IgY29tcGF0aWJpbGl0eS4KKyUgQGhlYWRpbmdzIGFmdGVyICAgICAgIHR1cm5zIG9uIGRvdWJsZS1zaWRlZCBoZWFkaW5ncyBhZnRlciB0aGlzIHBhZ2UuCislIEBoZWFkaW5ncyBkb3VibGVhZnRlciB0dXJucyBvbiBkb3VibGUtc2lkZWQgaGVhZGluZ3MgYWZ0ZXIgdGhpcyBwYWdlLgorJSBAaGVhZGluZ3Mgc2luZ2xlYWZ0ZXIgdHVybnMgb24gc2luZ2xlLXNpZGVkIGhlYWRpbmdzIGFmdGVyIHRoaXMgcGFnZS4KKyUgQnkgZGVmYXVsdCwgdGhleSBhcmUgb2ZmIGF0IHRoZSBzdGFydCBvZiBhIGRvY3VtZW50LAorJSBhbmQgdHVybmVkIGBvbicgYWZ0ZXIgQGVuZCB0aXRsZXBhZ2UuCisKK1xkZWZcaGVhZGluZ3MgIzEge1xjc25hbWUgSEVBRElOR1MjMVxlbmRjc25hbWV9CisKK1xkZWZcSEVBRElOR1NvZmZ7JQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xoZmlsfSBcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcaGZpbH0gXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9fQorXEhFQURJTkdTb2ZmCislIFdoZW4gd2UgdHVybiBoZWFkaW5ncyBvbiwgc2V0IHRoZSBwYWdlIG51bWJlciB0byAxLgorJSBGb3IgZG91YmxlLXNpZGVkIHByaW50aW5nLCBwdXQgY3VycmVudCBmaWxlIG5hbWUgaW4gbG93ZXIgbGVmdCBjb3JuZXIsCislIGNoYXB0ZXIgbmFtZSBvbiBpbnNpZGUgdG9wIG9mIHJpZ2h0IGhhbmQgcGFnZXMsIGRvY3VtZW50CislIHRpdGxlIG9uIGluc2lkZSB0b3Agb2YgbGVmdCBoYW5kIHBhZ2VzLCBhbmQgcGFnZSBudW1iZXJzIG9uIG91dHNpZGUgdG9wCislIGVkZ2Ugb2YgYWxsIHBhZ2VzLgorXGRlZlxIRUFESU5HU2RvdWJsZXslCitcZ2xvYmFsXHBhZ2Vubz0xCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcZm9saW9caGZpbFx0aGlzdGl0bGV9fQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBvZGRwYWdlCit9CitcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwcGFnZXIKKworJSBGb3Igc2luZ2xlLXNpZGVkIHByaW50aW5nLCBjaGFwdGVyIHRpdGxlIGdvZXMgYWNyb3NzIHRvcCBsZWZ0IG9mIHBhZ2UsCislIHBhZ2UgbnVtYmVyIG9uIHRvcCByaWdodC4KK1xkZWZcSEVBRElOR1NzaW5nbGV7JQorXGdsb2JhbFxwYWdlbm89MQorXGdsb2JhbFxldmVuZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxvZGRmb290bGluZT17XGhmaWx9CitcZ2xvYmFsXGV2ZW5oZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxvZGRoZWFkbGluZT17XGxpbmV7XHRoaXNjaGFwdGVyXGhmaWxcZm9saW99fQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBwYWdlcgorfQorXGRlZlxIRUFESU5HU29ue1xIRUFESU5HU2RvdWJsZX0KKworXGRlZlxIRUFESU5HU2FmdGVye1xsZXRcSEVBRElOR1Nob29rPVxIRUFESU5HU2RvdWJsZXh9CitcbGV0XEhFQURJTkdTZG91YmxlYWZ0ZXI9XEhFQURJTkdTYWZ0ZXIKK1xkZWZcSEVBRElOR1Nkb3VibGV4eyUKK1xnbG9iYWxcZXZlbmZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcb2RkZm9vdGxpbmU9e1xoZmlsfQorXGdsb2JhbFxldmVuaGVhZGxpbmU9e1xsaW5le1xmb2xpb1xoZmlsXHRoaXN0aXRsZX19CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcG9kZHBhZ2UKK30KKworXGRlZlxIRUFESU5HU3NpbmdsZWFmdGVye1xsZXRcSEVBRElOR1Nob29rPVxIRUFESU5HU3NpbmdsZXh9CitcZGVmXEhFQURJTkdTc2luZ2xleHslCitcZ2xvYmFsXGV2ZW5mb290bGluZT17XGhmaWx9CitcZ2xvYmFsXG9kZGZvb3RsaW5lPXtcaGZpbH0KK1xnbG9iYWxcZXZlbmhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXG9kZGhlYWRsaW5lPXtcbGluZXtcdGhpc2NoYXB0ZXJcaGZpbFxmb2xpb319CitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCit9CisKKyUgU3Vicm91dGluZXMgdXNlZCBpbiBnZW5lcmF0aW5nIGhlYWRpbmdzCislIFRoaXMgcHJvZHVjZXMgRGF5IE1vbnRoIFllYXIgc3R5bGUgb2Ygb3V0cHV0LgorJSBPbmx5IGRlZmluZSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLCBpbiBjYXNlIGEgdHhpLT8/LnRleCBmaWxlIGhhcyBzZXQKKyUgdXAgYSBkaWZmZXJlbnQgZm9ybWF0IChlLmcuLCB0eGktY3MudGV4IGRvZXMgdGhpcykuCitcaWZ4XHRvZGF5XHVuZGVmaW5lZAorXGRlZlx0b2RheXslCisgIFxudW1iZXJcZGF5XHNwYWNlCisgIFxpZmNhc2VcbW9udGgKKyAgXG9yXHB1dHdvcmRNSmFuXG9yXHB1dHdvcmRNRmViXG9yXHB1dHdvcmRNTWFyXG9yXHB1dHdvcmRNQXByCisgIFxvclxwdXR3b3JkTU1heVxvclxwdXR3b3JkTUp1blxvclxwdXR3b3JkTUp1bFxvclxwdXR3b3JkTUF1ZworICBcb3JccHV0d29yZE1TZXBcb3JccHV0d29yZE1PY3Rcb3JccHV0d29yZE1Ob3Zcb3JccHV0d29yZE1EZWMKKyAgXGZpCisgIFxzcGFjZVxudW1iZXJceWVhcn0KK1xmaQorCislIEBzZXR0aXRsZSBsaW5lLi4uICBzcGVjaWZpZXMgdGhlIHRpdGxlIG9mIHRoZSBkb2N1bWVudCwgZm9yIGhlYWRpbmdzLgorJSBJdCBnZW5lcmF0ZXMgbm8gb3V0cHV0IG9mIGl0cyBvd24uCitcZGVmXHRoaXN0aXRsZXtccHV0d29yZE5vVGl0bGV9CitcZGVmXHNldHRpdGxle1xwYXJzZWFyZ3tcZ2RlZlx0aGlzdGl0bGV9fQorCisKK1xtZXNzYWdle3RhYmxlcyx9CislIFRhYmxlcyAtLSBAdGFibGUsIEBmdGFibGUsIEB2dGFibGUsIEBpdGVtKHgpLgorCislIGRlZmF1bHQgaW5kZW50YXRpb24gb2YgdGFibGUgdGV4dAorXG5ld2RpbWVuXHRhYmxlaW5kZW50IFx0YWJsZWluZGVudD0uOGluCislIGRlZmF1bHQgaW5kZW50YXRpb24gb2YgQGl0ZW1pemUgYW5kIEBlbnVtZXJhdGUgdGV4dAorXG5ld2RpbWVuXGl0ZW1pbmRlbnQgIFxpdGVtaW5kZW50PS4zaW4KKyUgbWFyZ2luIGJldHdlZW4gZW5kIG9mIHRhYmxlIGl0ZW0gYW5kIHN0YXJ0IG9mIHRhYmxlIHRleHQuCitcbmV3ZGltZW5caXRlbW1hcmdpbiAgXGl0ZW1tYXJnaW49LjFpbgorCislIHVzZWQgaW50ZXJuYWxseSBmb3IgXGl0ZW1pbmRlbnQgbWludXMgXGl0ZW1tYXJnaW4KK1xuZXdkaW1lblxpdGVtbWF4CisKKyUgTm90ZSBAdGFibGUsIEBmdGFibGUsIGFuZCBAdnRhYmxlIGRlZmluZSBAaXRlbSwgQGl0ZW14LCBldGMuLCB3aXRoCislIHRoZXNlIGRlZnMuCislIFRoZXkgYWxzbyBkZWZpbmUgXGl0ZW1pbmRleAorJSB0byBpbmRleCB0aGUgaXRlbSBuYW1lIGluIHdoYXRldmVyIG1hbm5lciBpcyBkZXNpcmVkIChwZXJoYXBzIG5vbmUpLgorCitcbmV3aWZcaWZpdGVteG5lZWRzbmVnYXRpdmV2c2tpcAorCitcZGVmXGl0ZW14cGFye1xwYXJcaWZpdGVteG5lZWRzbmVnYXRpdmV2c2tpcFxub2JyZWFrXHZza2lwLVxwYXJza2lwXG5vYnJlYWtcZml9CisKK1xkZWZcaW50ZXJuYWxCaXRlbXtcc21hbGxicmVhayBccGFyc2VhcmdcaXRlbXp6en0KK1xkZWZcaW50ZXJuYWxCaXRlbXh7XGl0ZW14cGFyIFxwYXJzZWFyZ1xpdGVtenp6fQorCitcZGVmXGl0ZW16enogIzF7XGJlZ2luZ3JvdXAgJQorICBcYWR2YW5jZVxoc2l6ZSBieSAtXHJpZ2h0c2tpcAorICBcYWR2YW5jZVxoc2l6ZSBieSAtXHRhYmxlaW5kZW50CisgIFxzZXRib3gwPVxoYm94e1xpdGVtaW5kaWNhdGV7IzF9fSUKKyAgXGl0ZW1pbmRleHsjMX0lCisgIFxub2JyZWFrICUgVGhpcyBwcmV2ZW50cyBhIGJyZWFrIGJlZm9yZSBAaXRlbXguCisgICUKKyAgJSBJZiB0aGUgaXRlbSB0ZXh0IGRvZXMgbm90IGZpdCBpbiB0aGUgc3BhY2Ugd2UgaGF2ZSwgcHV0IGl0IG9uIGEgbGluZQorICAlIGJ5IGl0c2VsZiwgYW5kIGRvIG5vdCBhbGxvdyBhIHBhZ2UgYnJlYWsgZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGF0CisgICUgbGluZS4gIFdlIGRvIG5vdCBzdGFydCBhIHBhcmFncmFwaCBoZXJlIGJlY2F1c2UgdGhlbiBpZiB0aGUgbmV4dAorICAlIGNvbW1hbmQgaXMsIGUuZy4sIEBraW5kZXgsIHRoZSB3aGF0c2l0IHdvdWxkIGdldCBwdXQgaW50byB0aGUKKyAgJSBob3Jpem9udGFsIGxpc3Qgb24gYSBsaW5lIGJ5IGl0c2VsZiwgcmVzdWx0aW5nIGluIGV4dHJhIGJsYW5rIHNwYWNlLgorICBcaWZkaW0gXHdkMD5caXRlbW1heAorICAgICUKKyAgICAlIE1ha2UgdGhpcyBhIHBhcmFncmFwaCBzbyB3ZSBnZXQgdGhlIFxwYXJza2lwIGdsdWUgYW5kIHdyYXBwaW5nLAorICAgICUgYnV0IGxlYXZlIGl0IHJhZ2dlZC1yaWdodC4KKyAgICBcYmVnaW5ncm91cAorICAgICAgXGFkdmFuY2VcbGVmdHNraXAgYnktXHRhYmxlaW5kZW50CisgICAgICBcYWR2YW5jZVxoc2l6ZSBieVx0YWJsZWluZGVudAorICAgICAgXGFkdmFuY2VccmlnaHRza2lwIGJ5MHB0IHBsdXMxZmlsCisgICAgICBcbGVhdmV2bW9kZVx1bmhib3gwXHBhcgorICAgIFxlbmRncm91cAorICAgICUKKyAgICAlIFdlJ3JlIGdvaW5nIHRvIGJlIHN0YXJ0aW5nIGEgcGFyYWdyYXBoLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGUKKyAgICAlIFxwYXJza2lwIGdsdWUgLS0gbG9naWNhbGx5IGl0J3MgcGFydCBvZiB0aGUgQGl0ZW0gd2UganVzdCBzdGFydGVkLgorICAgIFxub2JyZWFrIFx2c2tpcC1ccGFyc2tpcAorICAgICUKKyAgICAlIFN0b3AgYSBwYWdlIGJyZWFrIGF0IHRoZSBccGFyc2tpcCBnbHVlIGNvbWluZyB1cC4gIEhvd2V2ZXIsIGlmCisgICAgJSB3aGF0IGZvbGxvd3MgaXMgYW4gZW52aXJvbm1lbnQgc3VjaCBhcyBAZXhhbXBsZSwgdGhlcmUgd2lsbCBiZSBubworICAgICUgXHBhcnNraXAgZ2x1ZTsgdGhlbiB0aGUgbmVnYXRpdmUgdnNraXAgd2UganVzdCBpbnNlcnRlZCB3b3VsZAorICAgICUgY2F1c2UgdGhlIGV4YW1wbGUgYW5kIHRoZSBpdGVtIHRvIGNyYXNoIHRvZ2V0aGVyLiAgU28gd2UgdXNlIHRoaXMKKyAgICAlIGJpemFycmUgdmFsdWUgb2YgMTAwMDEgYXMgYSBzaWduYWwgdG8gXGFib3ZlZW52YnJlYWsgdG8gaW5zZXJ0CisgICAgJSBccGFyc2tpcCBnbHVlIGFmdGVyIGFsbC4gIFNlY3Rpb24gdGl0bGVzIGFyZSBoYW5kbGVkIHRoaXMgd2F5IGFsc28uCisgICAgJSAKKyAgICBccGVuYWx0eSAxMDAwMQorICAgIFxlbmRncm91cAorICAgIFxpdGVteG5lZWRzbmVnYXRpdmV2c2tpcGZhbHNlCisgIFxlbHNlCisgICAgJSBUaGUgaXRlbSB0ZXh0IGZpdHMgaW50byB0aGUgc3BhY2UuICBTdGFydCBhIHBhcmFncmFwaCwgc28gdGhhdCB0aGUKKyAgICAlIGZvbGxvd2luZyB0ZXh0IChpZiBhbnkpIHdpbGwgZW5kIHVwIG9uIHRoZSBzYW1lIGxpbmUuCisgICAgXG5vaW5kZW50CisgICAgJSBEbyB0aGlzIHdpdGgga2VybnMgYW5kIFx1bmhib3ggc28gdGhhdCBpZiB0aGVyZSBpcyBhIGZvb3Rub3RlIGluCisgICAgJSB0aGUgaXRlbSB0ZXh0LCBpdCBjYW4gbWlncmF0ZSB0byB0aGUgbWFpbiB2ZXJ0aWNhbCBsaXN0IGFuZAorICAgICUgZXZlbnR1YWxseSBiZSBwcmludGVkLgorICAgIFxub2JyZWFrXGtlcm4tXHRhYmxlaW5kZW50CisgICAgXGRpbWVuMCA9IFxpdGVtbWF4ICBcYWR2YW5jZVxkaW1lbjAgYnkgXGl0ZW1tYXJnaW4gXGFkdmFuY2VcZGltZW4wIGJ5IC1cd2QwCisgICAgXHVuaGJveDAKKyAgICBcbm9icmVha1xrZXJuXGRpbWVuMAorICAgIFxlbmRncm91cAorICAgIFxpdGVteG5lZWRzbmVnYXRpdmV2c2tpcHRydWUKKyAgXGZpCit9CisKK1xkZWZcaXRlbXtcZXJybWVzc2FnZXtAaXRlbSB3aGlsZSBub3QgaW4gYSBsaXN0IGVudmlyb25tZW50fX0KK1xkZWZcaXRlbXh7XGVycm1lc3NhZ2V7QGl0ZW14IHdoaWxlIG5vdCBpbiBhIGxpc3QgZW52aXJvbm1lbnR9fQorCislIEB0YWJsZSwgQGZ0YWJsZSwgQHZ0YWJsZS4KK1xlbnZkZWZcdGFibGV7JQorICBcbGV0XGl0ZW1pbmRleFxnb2JibGUKKyAgXHRhYmxlY2hlY2t7dGFibGV9JQorfQorXGVudmRlZlxmdGFibGV7JQorICBcZGVmXGl0ZW1pbmRleCAjIzF7XGRvaW5kIHtmbn17XGNvZGV7IyMxfX19JQorICBcdGFibGVjaGVja3tmdGFibGV9JQorfQorXGVudmRlZlx2dGFibGV7JQorICBcZGVmXGl0ZW1pbmRleCAjIzF7XGRvaW5kIHt2cn17XGNvZGV7IyMxfX19JQorICBcdGFibGVjaGVja3t2dGFibGV9JQorfQorXGRlZlx0YWJsZWNoZWNrIzF7JQorICBcaWZudW0gXHRoZVxjYXRjb2RlYFxeXk09XGFjdGl2ZQorICAgIFxlbmRncm91cAorICAgIFxlcnJtZXNzYWdle1RoaXMgY29tbWFuZCB3b24ndCB3b3JrIGluIHRoaXMgY29udGV4dDsgcGVyaGFwcyB0aGUgcHJvYmxlbSBpcworICAgICAgdGhhdCB3ZSBhcmUgXGluZW52aXJvbm1lbnRcdGhpc2Vudn0lCisgICAgXGRlZlxuZXh0e1xkb2lnbm9yZXsjMX19JQorICBcZWxzZQorICAgIFxsZXRcbmV4dFx0YWJsZXgKKyAgXGZpCisgIFxuZXh0Cit9CitcZGVmXHRhYmxleCMxeyUKKyAgXGRlZlxpdGVtaW5kaWNhdGV7IzF9JQorICBccGFyc2VhcmdcdGFibGV5Cit9CitcZGVmXHRhYmxleSMxeyUKKyAgeyUKKyAgICBcbWFrZXZhbHVlZXhwYW5kYWJsZQorICAgIFxlZGVmXHRlbXB7XG5vZXhwYW5kXHRhYmxleiAjMVxzcGFjZVxzcGFjZVxzcGFjZX0lCisgICAgXGV4cGFuZGFmdGVyCisgIH1cdGVtcCBcZW5kdGFibGV6Cit9CitcZGVmXHRhYmxleiAjMSAjMiAjMyAjNFxlbmR0YWJsZXp7JQorICBcYWJvdmVlbnZicmVhaworICBcaWZudW0gMCMxPjAgXGFkdmFuY2UgXGxlZnRza2lwIGJ5ICMxXG1pbCBcZmkKKyAgXGlmbnVtIDAjMj4wIFx0YWJsZWluZGVudD0jMlxtaWwgXGZpCisgIFxpZm51bSAwIzM+MCBcYWR2YW5jZSBccmlnaHRza2lwIGJ5ICMzXG1pbCBcZmkKKyAgXGl0ZW1tYXg9XHRhYmxlaW5kZW50CisgIFxhZHZhbmNlIFxpdGVtbWF4IGJ5IC1caXRlbW1hcmdpbgorICBcYWR2YW5jZSBcbGVmdHNraXAgYnkgXHRhYmxlaW5kZW50CisgIFxleGRlbnRhbW91bnQ9XHRhYmxlaW5kZW50CisgIFxwYXJpbmRlbnQgPSAwcHQKKyAgXHBhcnNraXAgPSBcc21hbGxza2lwYW1vdW50CisgIFxpZmRpbSBccGFyc2tpcD0wcHQgXHBhcnNraXA9MnB0IFxmaQorICBcbGV0XGl0ZW0gPSBcaW50ZXJuYWxCaXRlbQorICBcbGV0XGl0ZW14ID0gXGludGVybmFsQml0ZW14Cit9CitcZGVmXEV0YWJsZXtcZW5kZ3JhZlxhZnRlcmVudmJyZWFrfQorXGxldFxFZnRhYmxlXEV0YWJsZQorXGxldFxFdnRhYmxlXEV0YWJsZQorXGxldFxFaXRlbWl6ZVxFdGFibGUKK1xsZXRcRWVudW1lcmF0ZVxFdGFibGUKKworJSBUaGlzIGlzIHRoZSBjb3VudGVyIHVzZWQgYnkgQGVudW1lcmF0ZSwgd2hpY2ggaXMgcmVhbGx5IEBpdGVtaXplCisKK1xuZXdjb3VudCBcaXRlbW5vCisKK1xlbnZkZWZcaXRlbWl6ZXtccGFyc2VhcmdcZG9pdGVtaXplfQorCitcZGVmXGRvaXRlbWl6ZSMxeyUKKyAgXGFib3ZlZW52YnJlYWsKKyAgXGl0ZW1tYXg9XGl0ZW1pbmRlbnQKKyAgXGFkdmFuY2VcaXRlbW1heCBieSAtXGl0ZW1tYXJnaW4KKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGl0ZW1pbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1caXRlbWluZGVudAorICBccGFyaW5kZW50PTBwdAorICBccGFyc2tpcD1cc21hbGxza2lwYW1vdW50CisgIFxpZmRpbVxwYXJza2lwPTBwdCBccGFyc2tpcD0ycHQgXGZpCisgIFxkZWZcaXRlbWNvbnRlbnRzeyMxfSUKKyAgJSBAaXRlbWl6ZSB3aXRoIG5vIGFyZyBpcyBlcXVpdmFsZW50IHRvIEBpdGVtaXplIEBidWxsZXQuCisgIFxpZnhcaXRlbWNvbnRlbnRzXGVtcHR5XGRlZlxpdGVtY29udGVudHN7XGJ1bGxldH1cZmkKKyAgXGxldFxpdGVtPVxpdGVtaXplaXRlbQorfQorCislIERlZmluaXRpb24gb2YgQGl0ZW0gd2hpbGUgaW5zaWRlIEBpdGVtaXplIGFuZCBAZW51bWVyYXRlLgorJQorXGRlZlxpdGVtaXplaXRlbXslCisgIFxhZHZhbmNlXGl0ZW1ubyBieSAxICAlIGZvciBlbnVtZXJhdGlvbnMKKyAge1xsZXRccGFyPVxlbmRncmFmIFxzbWFsbGJyZWFrfSUgcmVhc29uYWJsZSBwbGFjZSB0byBicmVhaworICB7JQorICAgJSBJZiB0aGUgZG9jdW1lbnQgaGFzIGFuIEBpdGVtaXplIGRpcmVjdGx5IGFmdGVyIGEgc2VjdGlvbiB0aXRsZSwgYQorICAgJSBcbm9icmVhayB3aWxsIGJlIGxhc3Qgb24gdGhlIGxpc3QsIGFuZCBcc2VjdGlvbmhlYWRpbmcgd2lsbCBoYXZlCisgICAlIGRvbmUgYSBcdnNraXAtXHBhcnNraXAuICBJbiB0aGF0IGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gemVybworICAgJSBwYXJza2lwLCBvciB0aGUgaXRlbSB0ZXh0IHdpbGwgY3Jhc2ggd2l0aCB0aGUgaGVhZGluZy4gIE9uIHRoZQorICAgJSBvdGhlciBoYW5kLCB3aGVuIHRoZXJlIGlzIG5vcm1hbCB0ZXh0IHByZWNlZGluZyB0aGUgaXRlbSAoYXMgdGhlcmUKKyAgICUgdXN1YWxseSBpcyksIHdlIGRvIHdhbnQgdG8gemVybyBwYXJza2lwLCBvciB0aGVyZSB3b3VsZCBiZSB0b28gbXVjaAorICAgJSBzcGFjZS4gIEluIHRoYXQgY2FzZSwgd2Ugd29uJ3QgaGF2ZSBhIFxub2JyZWFrIGJlZm9yZS4gIEF0IGxlYXN0CisgICAlIHRoYXQncyB0aGUgdGhlb3J5LgorICAgXGlmbnVtXGxhc3RwZW5hbHR5PDEwMDAwIFxwYXJza2lwPTBpbiBcZmkKKyAgIFxub2luZGVudAorICAgXGhib3ggdG8gMHB0e1xoc3MgXGl0ZW1jb250ZW50cyBca2VyblxpdGVtbWFyZ2lufSUKKyAgIFx2YWRqdXN0e1xwZW5hbHR5IDEyMDB9fSUgbm90IGdvb2QgdG8gYnJlYWsgYWZ0ZXIgZmlyc3QgbGluZSBvZiBpdGVtLgorICBcZmx1c2hjcgorfQorCislIFxzcGxpdG9mZiBUT0tFTlNcZW5kbWFyayBkZWZpbmVzIFxmaXJzdCB0byBiZSB0aGUgZmlyc3QgdG9rZW4gaW4KKyUgVE9LRU5TLCBhbmQgXHJlc3QgdG8gYmUgdGhlIHJlbWFpbmRlci4KKyUKK1xkZWZcc3BsaXRvZmYjMSMyXGVuZG1hcmt7XGRlZlxmaXJzdHsjMX1cZGVmXHJlc3R7IzJ9fSUKKworJSBBbGxvdyBhbiBvcHRpb25hbCBhcmd1bWVudCBvZiBhbiB1cHBlcmNhc2UgbGV0dGVyLCBsb3dlcmNhc2UgbGV0dGVyLAorJSBvciBudW1iZXIsIHRvIHNwZWNpZnkgdGhlIGZpcnN0IGxhYmVsIGluIHRoZSBlbnVtZXJhdGVkIGxpc3QuICBObworJSBhcmd1bWVudCBpcyB0aGUgc2FtZSBhcyBgMScuCislCitcZW52cGFyc2VhcmdkZWZcZW51bWVyYXRle1xlbnVtZXJhdGV5ICMxICBcZW5kZW51bWVyYXRleX0KK1xkZWZcZW51bWVyYXRleSAjMSAjMlxlbmRlbnVtZXJhdGV5eyUKKyAgJSBJZiB3ZSB3ZXJlIGdpdmVuIG5vIGFyZ3VtZW50LCBwcmV0ZW5kIHdlIHdlcmUgZ2l2ZW4gYDEnLgorICBcZGVmXHRoZWFyZ3sjMX0lCisgIFxpZnhcdGhlYXJnXGVtcHR5IFxkZWZcdGhlYXJnezF9XGZpCisgICUKKyAgJSBEZXRlY3QgaWYgdGhlIGFyZ3VtZW50IGlzIGEgc2luZ2xlIHRva2VuLiAgSWYgc28sIGl0IG1pZ2h0IGJlIGEKKyAgJSBsZXR0ZXIuICBPdGhlcndpc2UsIHRoZSBvbmx5IHZhbGlkIHRoaW5nIGl0IGNhbiBiZSBpcyBhIG51bWJlci4KKyAgJSAoV2Ugd2lsbCBhbHdheXMgaGF2ZSBvbmUgdG9rZW4sIGJlY2F1c2Ugb2YgdGhlIHRlc3Qgd2UganVzdCBtYWRlLgorICAlIFRoaXMgaXMgYSBnb29kIHRoaW5nLCBzaW5jZSBcc3BsaXRvZmYgZG9lc24ndCB3b3JrIGdpdmVuIG5vdGhpbmcgYXQKKyAgJSBhbGwgLS0gdGhlIGZpcnN0IHBhcmFtZXRlciBpcyB1bmRlbGltaXRlZC4pCisgIFxleHBhbmRhZnRlclxzcGxpdG9mZlx0aGVhcmdcZW5kbWFyaworICBcaWZ4XHJlc3RcZW1wdHkKKyAgICAlIE9ubHkgb25lIHRva2VuIGluIHRoZSBhcmd1bWVudC4gIEl0IGNvdWxkIHN0aWxsIGJlIGFueXRoaW5nLgorICAgICUgQSBgYGxvd2VyY2FzZSBsZXR0ZXInJyBpcyBvbmUgd2hvc2UgXGxjY29kZSBpcyBub256ZXJvLgorICAgICUgQW4gYGB1cHBlcmNhc2UgbGV0dGVyJycgaXMgb25lIHdob3NlIFxsY2NvZGUgaXMgYm90aCBub256ZXJvLCBhbmQKKyAgICAlICAgbm90IGVxdWFsIHRvIGl0c2VsZi4KKyAgICAlIE90aGVyd2lzZSwgd2UgYXNzdW1lIGl0J3MgYSBudW1iZXIuCisgICAgJQorICAgICUgV2UgbmVlZCB0aGUgXHJlbGF4IGF0IHRoZSBlbmQgb2YgdGhlIFxpZm51bSBsaW5lcyB0byBzdG9wIFRlWCBmcm9tCisgICAgJSBjb250aW51aW5nIHRvIGxvb2sgZm9yIGEgPG51bWJlcj4uCisgICAgJQorICAgIFxpZm51bVxsY2NvZGVcZXhwYW5kYWZ0ZXJgXHRoZWFyZz0wXHJlbGF4CisgICAgICBcbnVtZXJpY2VudW1lcmF0ZSAlIGEgbnVtYmVyICh3ZSBob3BlKQorICAgIFxlbHNlCisgICAgICAlIEl0J3MgYSBsZXR0ZXIuCisgICAgICBcaWZudW1cbGNjb2RlXGV4cGFuZGFmdGVyYFx0aGVhcmc9XGV4cGFuZGFmdGVyYFx0aGVhcmdccmVsYXgKKyAgICAgICAgXGxvd2VyY2FzZWVudW1lcmF0ZSAlIGxvd2VyY2FzZSBsZXR0ZXIKKyAgICAgIFxlbHNlCisgICAgICAgIFx1cHBlcmNhc2VlbnVtZXJhdGUgJSB1cHBlcmNhc2UgbGV0dGVyCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGVsc2UKKyAgICAlIE11bHRpcGxlIHRva2VucyBpbiB0aGUgYXJndW1lbnQuICBXZSBob3BlIGl0J3MgYSBudW1iZXIuCisgICAgXG51bWVyaWNlbnVtZXJhdGUKKyAgXGZpCit9CisKKyUgQW4gQGVudW1lcmF0ZSB3aG9zZSBsYWJlbHMgYXJlIGludGVnZXJzLiAgVGhlIHN0YXJ0aW5nIGludGVnZXIgaXMKKyUgZ2l2ZW4gaW4gXHRoZWFyZy4KKyUKK1xkZWZcbnVtZXJpY2VudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcdGhlYXJnCisgIFxzdGFydGVudW1lcmF0aW9ue1x0aGVcaXRlbW5vfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKGxvd2VyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXGxvd2VyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIGxvd2VyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9JQorICAgIFxmaQorICAgIFxjaGFyXGxjY29kZVxpdGVtbm8KKyAgfSUKK30KKworJSBUaGUgc3RhcnRpbmcgKHVwcGVyY2FzZSkgbGV0dGVyIGlzIGluIFx0aGVhcmcuCitcZGVmXHVwcGVyY2FzZWVudW1lcmF0ZXslCisgIFxpdGVtbm8gPSBcZXhwYW5kYWZ0ZXJgXHRoZWFyZworICBcc3RhcnRlbnVtZXJhdGlvbnslCisgICAgJSBCZSBzdXJlIHdlJ3JlIG5vdCBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYWxwaGFiZXQuCisgICAgXGlmbnVtXGl0ZW1ubz0wCisgICAgICBcZXJybWVzc2FnZXtObyBtb3JlIHVwcGVyY2FzZSBsZXR0ZXJzIGluIEBlbnVtZXJhdGU7IGdldCBhIGJpZ2dlcgorICAgICAgICAgICAgICAgICAgYWxwaGFiZXR9CisgICAgXGZpCisgICAgXGNoYXJcdWNjb2RlXGl0ZW1ubworICB9JQorfQorCislIENhbGwgXGRvaXRlbWl6ZSwgYWRkaW5nIGEgcGVyaW9kIHRvIHRoZSBmaXJzdCBhcmd1bWVudCBhbmQgc3VwcGx5aW5nIHRoZQorJSBjb21tb24gbGFzdCB0d28gYXJndW1lbnRzLiAgQWxzbyBzdWJ0cmFjdCBvbmUgZnJvbSB0aGUgaW5pdGlhbCB2YWx1ZSBpbgorJSBcaXRlbW5vLCBzaW5jZSBAaXRlbSBpbmNyZW1lbnRzIFxpdGVtbm8uCislCitcZGVmXHN0YXJ0ZW51bWVyYXRpb24jMXslCisgIFxhZHZhbmNlXGl0ZW1ubyBieSAtMQorICBcZG9pdGVtaXpleyMxLn1cZmx1c2hjcgorfQorCislIEBhbHBoYWVudW1lcmF0ZSBhbmQgQGNhcHNlbnVtZXJhdGUgYXJlIGFiYnJldmlhdGlvbnMgZm9yIGdpdmluZyBhbiBhcmcKKyUgdG8gQGVudW1lcmF0ZS4KKyUKK1xkZWZcYWxwaGFlbnVtZXJhdGV7XGVudW1lcmF0ZXthfX0KK1xkZWZcY2Fwc2VudW1lcmF0ZXtcZW51bWVyYXRle0F9fQorXGRlZlxFYWxwaGFlbnVtZXJhdGV7XEVlbnVtZXJhdGV9CitcZGVmXEVjYXBzZW51bWVyYXRle1xFZW51bWVyYXRlfQorCisKKyUgQG11bHRpdGFibGUgbWFjcm9zCislIEFteSBIZW5kcmlja3NvbiwgOC8xOC85NCwgMy82Lzk2CislCislIEBtdWx0aXRhYmxlIC4uLiBAZW5kIG11bHRpdGFibGUgd2lsbCBtYWtlIGFzIG1hbnkgY29sdW1ucyBhcyBkZXNpcmVkLgorJSBDb250ZW50cyBvZiBlYWNoIGNvbHVtbiB3aWxsIHdyYXAgYXQgd2lkdGggZ2l2ZW4gaW4gcHJlYW1ibGUuICBXaWR0aAorJSBjYW4gYmUgc3BlY2lmaWVkIGVpdGhlciB3aXRoIHNhbXBsZSB0ZXh0IGdpdmVuIGluIGEgdGVtcGxhdGUgbGluZSwKKyUgb3IgaW4gcGVyY2VudCBvZiBcaHNpemUsIHRoZSBjdXJyZW50IHdpZHRoIG9mIHRleHQgb24gcGFnZS4KKworJSBUYWJsZSBjYW4gY29udGludWUgb3ZlciBwYWdlcyBidXQgd2lsbCBvbmx5IGJyZWFrIGJldHdlZW4gbGluZXMuCisKKyUgVG8gbWFrZSBwcmVhbWJsZToKKyUKKyUgRWl0aGVyIGRlZmluZSB3aWR0aHMgb2YgY29sdW1ucyBpbiB0ZXJtcyBvZiBwZXJjZW50IG9mIFxoc2l6ZToKKyUgICBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4yNSAuMyAuNDUKKyUgICBAaXRlbSAuLi4KKyUKKyUgICBOdW1iZXJzIGZvbGxvd2luZyBAY29sdW1uZnJhY3Rpb25zIGFyZSB0aGUgcGVyY2VudCBvZiB0aGUgdG90YWwKKyUgICBjdXJyZW50IGhzaXplIHRvIGJlIHVzZWQgZm9yIGVhY2ggY29sdW1uLiBZb3UgbWF5IHVzZSBhcyBtYW55CislICAgY29sdW1ucyBhcyBkZXNpcmVkLgorCisKKyUgT3IgdXNlIGEgdGVtcGxhdGU6CislICAgQG11bHRpdGFibGUge0NvbHVtbiAxIHRlbXBsYXRlfSB7Q29sdW1uIDIgdGVtcGxhdGV9IHtDb2x1bW4gMyB0ZW1wbGF0ZX0KKyUgICBAaXRlbSAuLi4KKyUgICB1c2luZyB0aGUgd2lkZXN0IHRlcm0gZGVzaXJlZCBpbiBlYWNoIGNvbHVtbi4KKworJSBFYWNoIG5ldyB0YWJsZSBsaW5lIHN0YXJ0cyB3aXRoIEBpdGVtLCBlYWNoIHN1YnNlcXVlbnQgbmV3IGNvbHVtbgorJSBzdGFydHMgd2l0aCBAdGFiLiBFbXB0eSBjb2x1bW5zIG1heSBiZSBwcm9kdWNlZCBieSBzdXBwbHlpbmcgQHRhYidzCislIHdpdGggbm90aGluZyBiZXR3ZWVuIHRoZW0gZm9yIGFzIG1hbnkgdGltZXMgYXMgZW1wdHkgY29sdW1ucyBhcmUgbmVlZGVkLAorJSBpZSwgQHRhYkB0YWJAdGFiIHdpbGwgcHJvZHVjZSB0d28gZW1wdHkgY29sdW1ucy4KKworJSBAaXRlbSwgQHRhYiBkbyBub3QgbmVlZCB0byBiZSBvbiB0aGVpciBvd24gbGluZXMsIGJ1dCBpdCB3aWxsIG5vdCBodXJ0CislIGlmIHRoZXkgYXJlLgorCislIFNhbXBsZSBtdWx0aXRhYmxlOgorCislICAgQG11bHRpdGFibGUge0NvbHVtbiAxIHRlbXBsYXRlfSB7Q29sdW1uIDIgdGVtcGxhdGV9IHtDb2x1bW4gMyB0ZW1wbGF0ZX0KKyUgICBAaXRlbSBmaXJzdCBjb2wgc3R1ZmYgQHRhYiBzZWNvbmQgY29sIHN0dWZmIEB0YWIgdGhpcmQgY29sCislICAgQGl0ZW0KKyUgICBmaXJzdCBjb2wgc3R1ZmYKKyUgICBAdGFiCislICAgc2Vjb25kIGNvbCBzdHVmZgorJSAgIEB0YWIKKyUgICB0aGlyZCBjb2wKKyUgICBAaXRlbSBmaXJzdCBjb2wgc3R1ZmYgQHRhYiBzZWNvbmQgY29sIHN0dWZmCislICAgQHRhYiBNYW55IHBhcmFncmFwaHMgb2YgdGV4dCBtYXkgYmUgdXNlZCBpbiBhbnkgY29sdW1uLgorJQorJSAgICAgICAgIFRoZXkgd2lsbCB3cmFwIGF0IHRoZSB3aWR0aCBkZXRlcm1pbmVkIGJ5IHRoZSB0ZW1wbGF0ZS4KKyUgICBAaXRlbUB0YWJAdGFiIFRoaXMgd2lsbCBiZSBpbiB0aGlyZCBjb2x1bW4uCislICAgQGVuZCBtdWx0aXRhYmxlCisKKyUgRGVmYXVsdCBkaW1lbnNpb25zIG1heSBiZSByZXNldCBieSB1c2VyLgorJSBAbXVsdGl0YWJsZXBhcnNraXAgaXMgdmVydGljYWwgc3BhY2UgYmV0d2VlbiBwYXJhZ3JhcGhzIGluIHRhYmxlLgorJSBAbXVsdGl0YWJsZXBhcmluZGVudCBpcyBwYXJhZ3JhcGggaW5kZW50IGluIHRhYmxlLgorJSBAbXVsdGl0YWJsZWNvbG1hcmdpbiBpcyBob3Jpem9udGFsIHNwYWNlIHRvIGJlIGxlZnQgYmV0d2VlbiBjb2x1bW5zLgorJSBAbXVsdGl0YWJsZWxpbmVzcGFjZSBpcyBzcGFjZSB0byBsZWF2ZSBiZXR3ZWVuIHRhYmxlIGl0ZW1zLCBiYXNlbGluZQorJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJhc2VsaW5lLgorJSAgIDBwdCBtZWFucyBpdCBkZXBlbmRzIG9uIGN1cnJlbnQgbm9ybWFsIGxpbmUgc3BhY2luZy4KKyUKK1xuZXdza2lwXG11bHRpdGFibGVwYXJza2lwCitcbmV3c2tpcFxtdWx0aXRhYmxlcGFyaW5kZW50CitcbmV3ZGltZW5cbXVsdGl0YWJsZWNvbHNwYWNlCitcbmV3c2tpcFxtdWx0aXRhYmxlbGluZXNwYWNlCitcbXVsdGl0YWJsZXBhcnNraXA9MHB0CitcbXVsdGl0YWJsZXBhcmluZGVudD02cHQKK1xtdWx0aXRhYmxlY29sc3BhY2U9MTJwdAorXG11bHRpdGFibGVsaW5lc3BhY2U9MHB0CisKKyUgTWFjcm9zIHVzZWQgdG8gc2V0IHVwIGhhbGlnbiBwcmVhbWJsZToKKyUKK1xsZXRcZW5kc2V0dXB0YWJsZVxyZWxheAorXGRlZlx4ZW5kc2V0dXB0YWJsZXtcZW5kc2V0dXB0YWJsZX0KK1xsZXRcY29sdW1uZnJhY3Rpb25zXHJlbGF4CitcZGVmXHhjb2x1bW5mcmFjdGlvbnN7XGNvbHVtbmZyYWN0aW9uc30KK1xuZXdpZlxpZnNldHBlcmNlbnQKKworJSAjMSBpcyB0aGUgQGNvbHVtbmZyYWN0aW9uLCB1c3VhbGx5IGEgZGVjaW1hbCBudW1iZXIgbGlrZSAuNSwgYnV0IG1pZ2h0CislIGJlIGp1c3QgMS4gIFdlIGp1c3QgdXNlIGl0LCB3aGF0ZXZlciBpdCBpcy4KKyUKK1xkZWZccGlja3Vwd2hvbGVmcmFjdGlvbiMxIHslCisgIFxnbG9iYWxcYWR2YW5jZVxjb2xjb3VudCBieSAxCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBjb2xcdGhlXGNvbGNvdW50XGVuZGNzbmFtZXsjMVxoc2l6ZX0lCisgIFxzZXR1cHRhYmxlCit9CisKK1xuZXdjb3VudFxjb2xjb3VudAorXGRlZlxzZXR1cHRhYmxlIzF7JQorICBcZGVmXGZpcnN0YXJneyMxfSUKKyAgXGlmeFxmaXJzdGFyZ1x4ZW5kc2V0dXB0YWJsZQorICAgIFxsZXRcZ28gPSBccmVsYXgKKyAgXGVsc2UKKyAgICBcaWZ4XGZpcnN0YXJnXHhjb2x1bW5mcmFjdGlvbnMKKyAgICAgIFxnbG9iYWxcc2V0cGVyY2VudHRydWUKKyAgICBcZWxzZQorICAgICAgXGlmc2V0cGVyY2VudAorICAgICAgICAgXGxldFxnb1xwaWNrdXB3aG9sZWZyYWN0aW9uCisgICAgICBcZWxzZQorICAgICAgICAgXGdsb2JhbFxhZHZhbmNlXGNvbGNvdW50IGJ5IDEKKyAgICAgICAgIFxzZXRib3gwPVxoYm94eyMxXHVuc2tpcFxzcGFjZX0lIEFkZCBhIG5vcm1hbCB3b3JkIHNwYWNlIGFzIGEKKyAgICAgICAgICAgICAgICAgICAlIHNlcGFyYXRvcjsgdHlwaWNhbGx5IHRoYXQgaXMgYWx3YXlzIGluIHRoZSBpbnB1dCwgYW55d2F5LgorICAgICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIGNvbFx0aGVcY29sY291bnRcZW5kY3NuYW1le1x0aGVcd2QwfSUKKyAgICAgIFxmaQorICAgIFxmaQorICAgIFxpZnhcZ29ccGlja3Vwd2hvbGVmcmFjdGlvbgorICAgICAgJSBQdXQgdGhlIGFyZ3VtZW50IGJhY2sgZm9yIHRoZSBccGlja3Vwd2hvbGVmcmFjdGlvbiBjYWxsLCBzbworICAgICAgJSB3ZSdsbCBhbHdheXMgaGF2ZSBhIHBlcmlvZCB0aGVyZSB0byBiZSBwYXJzZWQuCisgICAgICBcZGVmXGdve1xwaWNrdXB3aG9sZWZyYWN0aW9uIzF9JQorICAgIFxlbHNlCisgICAgICBcbGV0XGdvID0gXHNldHVwdGFibGUKKyAgICBcZmklCisgIFxmaQorICBcZ28KK30KKworJSBtdWx0aXRhYmxlLW9ubHkgY29tbWFuZHMuCislCislIEBoZWFkaXRlbSBzdGFydHMgYSBoZWFkaW5nIHJvdywgd2hpY2ggd2UgdHlwZXNldCBpbiBib2xkLgorJSBBc3NpZ25tZW50cyBoYXZlIHRvIGJlIGdsb2JhbCBzaW5jZSB3ZSBhcmUgaW5zaWRlIHRoZSBpbXBsaWNpdCBncm91cAorJSBvZiBhbiBhbGlnbm1lbnQgZW50cnkuICBOb3RlIHRoYXQgXGV2ZXJ5Y3IgcmVzZXRzIFxldmVyeXRhYi4KK1xkZWZcaGVhZGl0ZW17XGNoZWNrZW52XG11bHRpdGFibGUgXGNyY3IgXGdsb2JhbFxldmVyeXRhYj17XGJmfVx0aGVcZXZlcnl0YWJ9JQorJQorJSBBIFx0YWIgdXNlZCB0byBpbmNsdWRlIFxoc2tpcDFzcC4gIEJ1dCB0aGVuIHRoZSBzcGFjZSBpbiBhIHRlbXBsYXRlCislIGxpbmUgaXMgbm90IGVub3VnaC4gIFRoYXQgaXMgYmFkLiAgU28gbGV0J3MgZ28gYmFjayB0byBqdXN0IGAmJyB1bnRpbAorJSB3ZSBlbmNvdW50ZXIgdGhlIHByb2JsZW0gaXQgd2FzIGludGVuZGVkIHRvIHNvbHZlIGFnYWluLgorJQkJCQkJLS1rYXJsLCBuYXRoYW5AYWNtLm9yZywgMjBhcHI5OS4KK1xkZWZcdGFie1xjaGVja2VudlxtdWx0aXRhYmxlICZcdGhlXGV2ZXJ5dGFifSUKKworJSBAbXVsdGl0YWJsZSAuLi4gQGVuZCBtdWx0aXRhYmxlIGRlZmluaXRpb25zOgorJQorXG5ld3Rva3NcZXZlcnl0YWIgICUgaW5zZXJ0IGFmdGVyIGV2ZXJ5IHRhYi4KKyUKK1xlbnZkZWZcbXVsdGl0YWJsZXslCisgIFx2c2tpcFxwYXJza2lwCisgIFxzdGFydHNhdmluZ2luc2VydHMKKyAgJQorICAlIEBpdGVtIHdpdGhpbiBhIG11bHRpdGFibGUgc3RhcnRzIGEgbm9ybWFsIHJvdy4KKyAgJSBXZSB1c2UgXGRlZiBpbnN0ZWFkIG9mIFxsZXQgc28gdGhhdCBpZiBvbmUgb2YgdGhlIG11bHRpdGFibGUgZW50cmllcworICAlIGNvbnRhaW5zIGFuIEBpdGVtaXplLCB3ZSBkb24ndCBjaG9rZSBvbiB0aGUgXGl0ZW0gKHNlZW4gYXMgXGNyY3IgYWthCisgICUgXGVuZHRlbXBsYXRlKSBleHBhbmRpbmcgXGRvaXRlbWl6ZS4KKyAgXGRlZlxpdGVte1xjcmNyfSUKKyAgJQorICBcdG9sZXJhbmNlPTk1MDAKKyAgXGhiYWRuZXNzPTk1MDAKKyAgXHNldG11bHRpdGFibGVzcGFjaW5nCisgIFxwYXJza2lwPVxtdWx0aXRhYmxlcGFyc2tpcAorICBccGFyaW5kZW50PVxtdWx0aXRhYmxlcGFyaW5kZW50CisgIFxvdmVyZnVsbHJ1bGU9MHB0CisgIFxnbG9iYWxcY29sY291bnQ9MAorICAlCisgIFxldmVyeWNyID0geyUKKyAgICBcbm9hbGlnbnslCisgICAgICBcZ2xvYmFsXGV2ZXJ5dGFiPXt9JQorICAgICAgXGdsb2JhbFxjb2xjb3VudD0wICUgUmVzZXQgdGhlIGNvbHVtbiBjb3VudGVyLgorICAgICAgJSBDaGVjayBmb3Igc2F2ZWQgZm9vdG5vdGVzLCBldGMuCisgICAgICBcY2hlY2tpbnNlcnRzCisgICAgICAlIEtlZXBzIHVuZGVyZnVsbCBib3ggbWVzc2FnZXMgb2ZmIHdoZW4gdGFibGUgYnJlYWtzIG92ZXIgcGFnZXMuCisgICAgICAlXGZpbGJyZWFrCisJJSBNYXliZSBzbywgYnV0IGl0IGFsc28gY3JlYXRlcyByZWFsbHkgd2VpcmQgcGFnZSBicmVha3Mgd2hlbiB0aGUKKwklIHRhYmxlIGJyZWFrcyBvdmVyIHBhZ2VzLiBXb3VsZG4ndCBcdmZpbCBiZSBiZXR0ZXI/ICBXYWl0IHVudGlsIHRoZQorCSUgcHJvYmxlbSBtYW5pZmVzdHMgaXRzZWxmLCBzbyBpdCBjYW4gYmUgZml4ZWQgZm9yIHJlYWwgLS1rYXJsLgorICAgIH0lCisgIH0lCisgICUKKyAgXHBhcnNlYXJnXGRvbXVsdGl0YWJsZQorfQorXGRlZlxkb211bHRpdGFibGUjMXslCisgICUgVG8gcGFyc2UgZXZlcnl0aGluZyBiZXR3ZWVuIEBtdWx0aXRhYmxlIGFuZCBAaXRlbToKKyAgXHNldHVwdGFibGUjMSBcZW5kc2V0dXB0YWJsZQorICAlCisgICUgVGhpcyBwcmVhbWJsZSBzZXRzIHVwIGEgZ2VuZXJpYyBjb2x1bW4gZGVmaW5pdGlvbiwgd2hpY2ggd2lsbAorICAlIGJlIHVzZWQgYXMgbWFueSB0aW1lcyBhcyB1c2VyIGNhbGxzIGZvciBjb2x1bW5zLgorICAlIFx2dG9wIHdpbGwgc2V0IGEgc2luZ2xlIGxpbmUgYW5kIHdpbGwgYWxzbyBsZXQgdGV4dCB3cmFwIGFuZAorICAlIGNvbnRpbnVlIGZvciBtYW55IHBhcmFncmFwaHMgaWYgZGVzaXJlZC4KKyAgXGhhbGlnblxiZ3JvdXAgJiUKKyAgICBcZ2xvYmFsXGFkdmFuY2VcY29sY291bnQgYnkgMQorICAgIFxtdWx0aXN0cnV0CisgICAgXHZ0b3B7JQorICAgICAgJSBVc2UgdGhlIGN1cnJlbnQgXGNvbGNvdW50IHRvIGZpbmQgdGhlIGNvcnJlY3QgY29sdW1uIHdpZHRoOgorICAgICAgXGhzaXplPVxleHBhbmRhZnRlclxjc25hbWUgY29sXHRoZVxjb2xjb3VudFxlbmRjc25hbWUKKyAgICAgICUKKyAgICAgICUgSW4gb3JkZXIgdG8ga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIKKyAgICAgICUgd2Ugd2lsbCBhZGQgYSBcbGVmdHNraXAgb2YgXG11bHRpdGFibGVjb2xzcGFjZSB0byBhbGwgY29sdW1ucyBhZnRlcgorICAgICAgJSB0aGUgZmlyc3Qgb25lLgorICAgICAgJQorICAgICAgJSBJZiBhIHRlbXBsYXRlIGhhcyBiZWVuIHVzZWQsIHdlIHdpbGwgYWRkIFxtdWx0aXRhYmxlY29sc3BhY2UKKyAgICAgICUgdG8gdGhlIHdpZHRoIG9mIGVhY2ggdGVtcGxhdGUgZW50cnkuCisgICAgICAlCisgICAgICAlIElmIHRoZSB1c2VyIGhhcyBzZXQgcHJlYW1ibGUgaW4gdGVybXMgb2YgcGVyY2VudCBvZiBcaHNpemUgd2Ugd2lsbAorICAgICAgJSB1c2UgdGhhdCBkaW1lbnNpb24gYXMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4sIGFuZCB0aGUgXGxlZnRza2lwCisgICAgICAlIHdpbGwga2VlcCBlbnRyaWVzIGZyb20gYnVtcGluZyBpbnRvIGVhY2ggb3RoZXIuICBUYWJsZSB3aWxsIHN0YXJ0IGF0CisgICAgICAlIGxlZnQgbWFyZ2luIGFuZCBmaW5hbCBjb2x1bW4gd2lsbCBqdXN0aWZ5IGF0IHJpZ2h0IG1hcmdpbi4KKyAgICAgICUKKyAgICAgICUgTWFrZSBzdXJlIHdlIGRvbid0IGluaGVyaXQgXHJpZ2h0c2tpcCBmcm9tIHRoZSBvdXRlciBlbnZpcm9ubWVudC4KKyAgICAgIFxyaWdodHNraXA9MHB0CisgICAgICBcaWZudW1cY29sY291bnQ9MQorCSUgVGhlIGZpcnN0IGNvbHVtbiB3aWxsIGJlIGluZGVudGVkIHdpdGggdGhlIHN1cnJvdW5kaW5nIHRleHQuCisJXGFkdmFuY2VcaHNpemUgYnlcbGVmdHNraXAKKyAgICAgIFxlbHNlCisJXGlmc2V0cGVyY2VudCBcZWxzZQorCSAgJSBJZiB1c2VyIGhhcyBub3Qgc2V0IHByZWFtYmxlIGluIHRlcm1zIG9mIHBlcmNlbnQgb2YgXGhzaXplCisJICAlIHdlIHdpbGwgYWR2YW5jZSBcaHNpemUgYnkgXG11bHRpdGFibGVjb2xzcGFjZS4KKwkgIFxhZHZhbmNlXGhzaXplIGJ5IFxtdWx0aXRhYmxlY29sc3BhY2UKKwlcZmkKKyAgICAgICAlIEluIGVpdGhlciBjYXNlIHdlIHdpbGwgbWFrZSBcbGVmdHNraXA9XG11bHRpdGFibGVjb2xzcGFjZToKKyAgICAgIFxsZWZ0c2tpcD1cbXVsdGl0YWJsZWNvbHNwYWNlCisgICAgICBcZmkKKyAgICAgICUgSWdub3Jpbmcgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIGF2b2lkcyBhbiBvY2Nhc2lvbmFsIHNwdXJpb3VzCisgICAgICAlIGJsYW5rIGxpbmUsIHdoZW4gVGVYIGRlY2lkZXMgdG8gYnJlYWsgdGhlIGxpbmUgYXQgdGhlIHNwYWNlIGJlZm9yZSB0aGUKKyAgICAgICUgYm94IGZyb20gdGhlIG11bHRpc3RydXQsIHNvIHRoZSBzdHJ1dCBlbmRzIHVwIG9uIGEgbGluZSBieSBpdHNlbGYuCisgICAgICAlIEZvciBleGFtcGxlOgorICAgICAgJSBAbXVsdGl0YWJsZSBAY29sdW1uZnJhY3Rpb25zIC4xMSAuODkKKyAgICAgICUgQGl0ZW0gQGNvZGV7I30KKyAgICAgICUgQHRhYiBMZWdhbCBob2xpZGF5IHdoaWNoIGlzIHZhbGlkIGluIG1ham9yIHBhcnRzIG9mIHRoZSB3aG9sZSBjb3VudHJ5LgorICAgICAgJSBJcyBhdXRvbWF0aWNhbGx5IHByb3ZpZGVkIHdpdGggaGlnaGxpZ2h0aW5nIHNlcXVlbmNlcyByZXNwZWN0aXZlbHkKKyAgICAgICUgbWFya2luZyBjaGFyYWN0ZXJzLgorICAgICAgXG5vaW5kZW50XGlnbm9yZXNwYWNlcyMjXHVuc2tpcFxtdWx0aXN0cnV0CisgICAgfVxjcgorfQorXGRlZlxFbXVsdGl0YWJsZXslCisgIFxjcmNyCisgIFxlZ3JvdXAgJSBlbmQgdGhlIFxoYWxpZ24KKyAgXGdsb2JhbFxzZXRwZXJjZW50ZmFsc2UKK30KKworXGRlZlxzZXRtdWx0aXRhYmxlc3BhY2luZ3slCisgIFxkZWZcbXVsdGlzdHJ1dHtcc3RydXR9JSBqdXN0IHVzZSB0aGUgc3RhbmRhcmQgbGluZSBzcGFjaW5nCisgICUKKyAgJSBDb21wdXRlIFxtdWx0aXRhYmxlbGluZXNwYWNlIChpZiBub3QgZGVmaW5lZCBieSB1c2VyKSBmb3IgdXNlIGluCisgICUgXG11bHRpdGFibGVwYXJza2lwIGNhbGN1bGF0aW9uLiAgV2UgdXNlZCBkZWZpbmUgXG11bHRpc3RydXQgYmFzZWQgb24KKyAgJSB0aGlzLCBidXQgKGlyb25pY2FsbHkpIHRoYXQgY2F1c2VkIHRoZSBzcGFjaW5nIHRvIGJlIG9mZi4KKyAgJSBTZWUgYnVnLXRleGluZm8gcmVwb3J0IGZyb20gV2VybmVyIExlbWJlcmcsIDMxIE9jdCAyMDA0IDEyOjUyOjIwICswMTAwLgorXGlmZGltXG11bHRpdGFibGVsaW5lc3BhY2U9MHB0Citcc2V0Ym94MD1cdmJveHtYfVxnbG9iYWxcbXVsdGl0YWJsZWxpbmVzcGFjZT1cdGhlXGJhc2VsaW5lc2tpcAorXGdsb2JhbFxhZHZhbmNlXG11bHRpdGFibGVsaW5lc3BhY2UgYnktXGh0MAorXGZpCislJSBUZXN0IHRvIHNlZSBpZiBwYXJza2lwIGlzIGxhcmdlciB0aGFuIHNwYWNlIGJldHdlZW4gbGluZXMgb2YKKyUlIHRhYmxlLiBJZiBub3QsIGRvIG5vdGhpbmcuCislJSAgICAgICAgSWYgc28sIHNldCB0byBzYW1lIGRpbWVuc2lvbiBhcyBtdWx0aXRhYmxlbGluZXNwYWNlLgorXGlmZGltXG11bHRpdGFibGVwYXJza2lwPlxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXG11bHRpdGFibGVwYXJza2lwPVxtdWx0aXRhYmxlbGluZXNwYWNlCitcZ2xvYmFsXGFkdmFuY2VcbXVsdGl0YWJsZXBhcnNraXAtN3B0ICUlIHRvIGtlZXAgcGFyc2tpcCBzb21ld2hhdCBzbWFsbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUlIHRoYW4gc2tpcCBiZXR3ZWVuIGxpbmVzIGluIHRoZSB0YWJsZS4KK1xmaSUKK1xpZmRpbVxtdWx0aXRhYmxlcGFyc2tpcD0wcHQKK1xnbG9iYWxcbXVsdGl0YWJsZXBhcnNraXA9XG11bHRpdGFibGVsaW5lc3BhY2UKK1xnbG9iYWxcYWR2YW5jZVxtdWx0aXRhYmxlcGFyc2tpcC03cHQgJSUgdG8ga2VlcCBwYXJza2lwIHNvbWV3aGF0IHNtYWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSUgdGhhbiBza2lwIGJldHdlZW4gbGluZXMgaW4gdGhlIHRhYmxlLgorXGZpfQorCisKK1xtZXNzYWdle2NvbmRpdGlvbmFscyx9CisKKyUgQGlmdGV4LCBAaWZub3Rkb2Nib29rLCBAaWZub3RodG1sLCBAaWZub3RpbmZvLCBAaWZub3RwbGFpbnRleHQsCislIEBpZm5vdHhtbCBhbHdheXMgc3VjY2VlZC4gIFRoZXkgY3VycmVudGx5IGRvIG5vdGhpbmc7IHdlIGRvbid0CislIGF0dGVtcHQgdG8gY2hlY2sgd2hldGhlciB0aGUgY29uZGl0aW9uYWxzIGFyZSBwcm9wZXJseSBuZXN0ZWQuICBCdXQgd2UKKyUgaGF2ZSB0byByZW1lbWJlciB0aGF0IHRoZXkgYXJlIGNvbmRpdGlvbmFscywgc28gdGhhdCBAZW5kIGRvZXNuJ3QKKyUgYXR0ZW1wdCB0byBjbG9zZSBhbiBlbnZpcm9ubWVudCBncm91cC4KKyUKK1xkZWZcbWFrZWNvbmQjMXslCisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lICMxXGVuZGNzbmFtZSA9IFxyZWxheAorICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBpc2NvbmQuIzFcZW5kY3NuYW1lID0gMQorfQorXG1ha2Vjb25ke2lmdGV4fQorXG1ha2Vjb25ke2lmbm90ZG9jYm9va30KK1xtYWtlY29uZHtpZm5vdGh0bWx9CitcbWFrZWNvbmR7aWZub3RpbmZvfQorXG1ha2Vjb25ke2lmbm90cGxhaW50ZXh0fQorXG1ha2Vjb25ke2lmbm90eG1sfQorCislIElnbm9yZSBAaWdub3JlLCBAaWZodG1sLCBAaWZpbmZvLCBhbmQgdGhlIGxpa2UuCislCitcZGVmXGRpcmVudHJ5e1xkb2lnbm9yZXtkaXJlbnRyeX19CitcZGVmXGRvY3VtZW50ZGVzY3JpcHRpb257XGRvaWdub3Jle2RvY3VtZW50ZGVzY3JpcHRpb259fQorXGRlZlxkb2Nib29re1xkb2lnbm9yZXtkb2Nib29rfX0KK1xkZWZcaHRtbHtcZG9pZ25vcmV7aHRtbH19CitcZGVmXGlmZG9jYm9va3tcZG9pZ25vcmV7aWZkb2Nib29rfX0KK1xkZWZcaWZodG1se1xkb2lnbm9yZXtpZmh0bWx9fQorXGRlZlxpZmluZm97XGRvaWdub3Jle2lmaW5mb319CitcZGVmXGlmbm90dGV4e1xkb2lnbm9yZXtpZm5vdHRleH19CitcZGVmXGlmcGxhaW50ZXh0e1xkb2lnbm9yZXtpZnBsYWludGV4dH19CitcZGVmXGlmeG1se1xkb2lnbm9yZXtpZnhtbH19CitcZGVmXGlnbm9yZXtcZG9pZ25vcmV7aWdub3JlfX0KK1xkZWZcbWVudXtcZG9pZ25vcmV7bWVudX19CitcZGVmXHhtbHtcZG9pZ25vcmV7eG1sfX0KKworJSBJZ25vcmUgdGV4dCB1bnRpbCBhIGxpbmUgYEBlbmQgIzEnLCBrZWVwaW5nIHRyYWNrIG9mIG5lc3RlZCBjb25kaXRpb25hbHMuCislCislIEEgY291bnQgdG8gcmVtZW1iZXIgdGhlIGRlcHRoIG9mIG5lc3RpbmcuCitcbmV3Y291bnRcZG9pZ25vcmVjb3VudAorCitcZGVmXGRvaWdub3JlIzF7XGJlZ2luZ3JvdXAKKyAgJSBTY2FuIGluIGBgdmVyYmF0aW0nJyBtb2RlOgorICBcb2JleWxpbmVzCisgIFxjYXRjb2RlYFxAID0gXG90aGVyCisgIFxjYXRjb2RlYFx7ID0gXG90aGVyCisgIFxjYXRjb2RlYFx9ID0gXG90aGVyCisgICUKKyAgJSBNYWtlIHN1cmUgdGhhdCBzcGFjZXMgdHVybiBpbnRvIHRva2VucyB0aGF0IG1hdGNoIHdoYXQgXGRvaWdub3JldGV4dCB3YW50cy4KKyAgXHNwYWNlaXNzcGFjZQorICAlCisgICUgQ291bnQgbnVtYmVyIG9mICMxJ3MgdGhhdCB3ZSd2ZSBzZWVuLgorICBcZG9pZ25vcmVjb3VudCA9IDAKKyAgJQorICAlIFN3YWxsb3cgdGV4dCB1bnRpbCB3ZSByZWFjaCB0aGUgbWF0Y2hpbmcgYEBlbmQgIzEnLgorICBcZG9kb2lnbm9yZXsjMX0lCit9CisKK3sgXGNhdGNvZGVgXz0xMSAlIFdlIHdhbnQgdG8gdXNlIFxfU1RPUF8gd2hpY2ggY2Fubm90IGFwcGVhciBpbiB0ZXhpbmZvIHNvdXJjZS4KKyAgXG9iZXlsaW5lcyAlCisgICUKKyAgXGdkZWZcZG9kb2lnbm9yZSMxeyUKKyAgICAlICMxIGNvbnRhaW5zIHRoZSBjb21tYW5kIG5hbWUgYXMgYSBzdHJpbmcsIGUuZy4sIGBpZmluZm8nLgorICAgICUKKyAgICAlIERlZmluZSBhIGNvbW1hbmQgdG8gZmluZCB0aGUgbmV4dCBgQGVuZCAjMScuCisgICAgXGxvbmdcZGVmXGRvaWdub3JldGV4dCMjMV5eTUBlbmQgIzF7JQorICAgICAgXGRvaWdub3JldGV4dHl5eSMjMV5eTUAjMVxfU1RPUF99JQorICAgICUKKyAgICAlIEFuZCB0aGlzIGNvbW1hbmQgdG8gZmluZCBhbm90aGVyICMxIGNvbW1hbmQsIGF0IHRoZSBiZWdpbm5pbmcgb2YgYQorICAgICUgbGluZS4gIChPdGhlcndpc2UsIHdlIHdvdWxkIGNvbnNpZGVyIGEgbGluZSBgQGMgQGlmc2V0JywgZm9yCisgICAgJSBleGFtcGxlLCB0byBjb3VudCBhcyBhbiBAaWZzZXQgZm9yIG5lc3RpbmcuKQorICAgIFxsb25nXGRlZlxkb2lnbm9yZXRleHR5eXkjIzFeXk1AIzEjIzJcX1NUT1Bfe1xkb2lnbm9yZXl5eXsjIzJ9XF9TVE9QX30lCisgICAgJQorICAgICUgQW5kIG5vdyBleHBhbmQgdGhhdCBjb21tYW5kLgorICAgIFxkb2lnbm9yZXRleHQgXl5NJQorICB9JQorfQorCitcZGVmXGRvaWdub3JleXl5IzF7JQorICBcZGVmXHRlbXB7IzF9JQorICBcaWZ4XHRlbXBcZW1wdHkJCQklIE5vdGhpbmcgZm91bmQuCisgICAgXGxldFxuZXh0XGRvaWdub3JldGV4dHp6egorICBcZWxzZQkJCQkJJSBGb3VuZCBhIG5lc3RlZCBjb25kaXRpb24sIC4uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgMQorICAgIFxsZXRcbmV4dFxkb2lnbm9yZXRleHR5eXkJCSUgLi4uLCBsb29rIGZvciBhbm90aGVyLgorICAgICUgSWYgd2UncmUgaGVyZSwgIzEgZW5kcyB3aXRoIF5eTVxpZmluZm8gKGZvciBleGFtcGxlKS4KKyAgXGZpCisgIFxuZXh0ICMxJSB0aGUgdG9rZW4gXF9TVE9QXyBpcyBwcmVzZW50IGp1c3QgYWZ0ZXIgdGhpcyBtYWNyby4KK30KKworJSBXZSBoYXZlIHRvIHN3YWxsb3cgdGhlIHJlbWFpbmluZyAiXF9TVE9QXyIuCislCitcZGVmXGRvaWdub3JldGV4dHp6eiMxeyUKKyAgXGlmbnVtXGRvaWdub3JlY291bnQgPSAwCSUgV2UgaGF2ZSBqdXN0IGZvdW5kIHRoZSBvdXRlcm1vc3QgQGVuZC4KKyAgICBcbGV0XG5leHRcZW5kZG9pZ25vcmUKKyAgXGVsc2UJCQkJJSBTdGlsbCBpbnNpZGUgYSBuZXN0ZWQgY29uZGl0aW9uLgorICAgIFxhZHZhbmNlXGRvaWdub3JlY291bnQgYnkgLTEKKyAgICBcbGV0XG5leHRcZG9pZ25vcmV0ZXh0ICAgICAgJSBMb29rIGZvciB0aGUgbmV4dCBAZW5kLgorICBcZmkKKyAgXG5leHQKK30KKworJSBGaW5pc2ggb2ZmIGlnbm9yZWQgdGV4dC4KK3sgXG9iZXlsaW5lcyUKKyAgJSBJZ25vcmUgYW55dGhpbmcgYWZ0ZXIgdGhlIGxhc3QgYEBlbmQgIzEnOyB0aGlzIG1hdHRlcnMgaW4gdmVyYmF0aW0KKyAgJSBlbnZpcm9ubWVudHMsIHdoZXJlIG90aGVyd2lzZSB0aGUgbmV3bGluZSBhZnRlciBhbiBpZ25vcmVkIGNvbmRpdGlvbmFsCisgICUgd291bGQgcmVzdWx0IGluIGEgYmxhbmsgbGluZSBpbiB0aGUgb3V0cHV0LgorICBcZ2RlZlxlbmRkb2lnbm9yZSMxXl5Ne1xlbmRncm91cFxpZ25vcmVzcGFjZXN9JQorfQorCisKKyUgQHNldCBWQVIgc2V0cyB0aGUgdmFyaWFibGUgVkFSIHRvIGFuIGVtcHR5IHZhbHVlLgorJSBAc2V0IFZBUiBSRVNULU9GLUxJTkUgc2V0cyBWQVIgdG8gdGhlIHZhbHVlIFJFU1QtT0YtTElORS4KKyUKKyUgU2luY2Ugd2Ugd2FudCB0byBzZXBhcmF0ZSBWQVIgZnJvbSBSRVNULU9GLUxJTkUgKHdoaWNoIG1pZ2h0IGJlCislIGVtcHR5KSwgd2UgY2FuJ3QganVzdCB1c2UgXHBhcnNlYXJnOyB3ZSBoYXZlIHRvIGluc2VydCBhIHNwYWNlIG9mIG91cgorJSBvd24gdG8gZGVsaW1pdCB0aGUgcmVzdCBvZiB0aGUgbGluZSwgYW5kIHRoZW4gdGFrZSBpdCBvdXQgYWdhaW4gaWYgd2UKKyUgZGlkbid0IG5lZWQgaXQuCislIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBccGFyc2Vhcmcgc2V0cyBcY2F0Y29kZWBcID0xMC4KKyUKK1xwYXJzZWFyZ2RlZlxzZXR7XHNldHl5eSMxIFxlbmRzZXR5eXl9CitcZGVmXHNldHl5eSMxICMyXGVuZHNldHl5eXslCisgIHslCisgICAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKKyAgICBcZGVmXHRlbXB7IzJ9JQorICAgIFxlZGVmXG5leHR7XGdkZWZcbWFrZWNzbmFtZXtTRVQjMX19JQorICAgIFxpZnhcdGVtcFxlbXB0eQorICAgICAgXG5leHR7fSUKKyAgICBcZWxzZQorICAgICAgXHNldHp6eiMyXGVuZHNldHp6egorICAgIFxmaQorICB9JQorfQorJSBSZW1vdmUgdGhlIHRyYWlsaW5nIHNwYWNlIFxzZXR4eHggaW5zZXJ0ZWQuCitcZGVmXHNldHp6eiMxIFxlbmRzZXR6enp7XG5leHR7IzF9fQorCislIEBjbGVhciBWQVIgY2xlYXJzIChpLmUuLCB1bnNldHMpIHRoZSB2YXJpYWJsZSBWQVIuCislCitccGFyc2VhcmdkZWZcY2xlYXJ7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZT1ccmVsYXgKKyAgfSUKK30KKworJSBAdmFsdWV7Zm9vfSBnZXRzIHRoZSB0ZXh0IHNhdmVkIGluIHZhcmlhYmxlIGZvby4KK1xkZWZcdmFsdWV7XGJlZ2luZ3JvdXBcbWFrZXZhbHVlZXhwYW5kYWJsZVx2YWx1ZXh4eH0KK1xkZWZcdmFsdWV4eHgjMXtcZXhwYW5kYWJsZXZhbHVleyMxfVxlbmRncm91cH0KK3sKKyAgXGNhdGNvZGVgXC0gPSBcYWN0aXZlIFxjYXRjb2RlYFxfID0gXGFjdGl2ZQorICAlCisgIFxnZGVmXG1ha2V2YWx1ZWV4cGFuZGFibGV7JQorICAgIFxsZXRcdmFsdWUgPSBcZXhwYW5kYWJsZXZhbHVlCisgICAgJSBXZSBkb24ndCB3YW50IHRoZXNlIGNoYXJhY3RlcnMgYWN0aXZlLCAuLi4KKyAgICBcY2F0Y29kZWBcLT1cb3RoZXIgXGNhdGNvZGVgXF89XG90aGVyCisgICAgJSAuLi4sIGJ1dCB3ZSBtaWdodCBlbmQgdXAgd2l0aCBhY3RpdmUgb25lcyBpbiB0aGUgYXJndW1lbnQgaWYKKyAgICAlIHdlJ3JlIGNhbGxlZCBmcm9tIEBjb2RlLCBhcyBAY29kZXtAdmFsdWV7Zm9vLWJhcl99fSwgdGhvdWdoLgorICAgICUgU28gXGxldCB0aGVtIHRvIHRoZWlyIG5vcm1hbCBlcXVpdmFsZW50cy4KKyAgICBcbGV0LVxyZWFsZGFzaCBcbGV0X1xub3JtYWx1bmRlcnNjb3JlCisgIH0KK30KKworJSBXZSBoYXZlIHRoaXMgc3Vicm91dGluZSBzbyB0aGF0IHdlIGNhbiBoYW5kbGUgYXQgbGVhc3Qgc29tZSBAdmFsdWUncworJSBwcm9wZXJseSBpbiBpbmRleGVzICh3ZSBjYWxsIFxtYWtldmFsdWVleHBhbmRhYmxlIGluIFxpbmRleGR1bW1pZXMpLgorJSBUaGUgY29tbWFuZCBoYXMgdG8gYmUgZnVsbHkgZXhwYW5kYWJsZSAoaWYgdGhlIHZhcmlhYmxlIGlzIHNldCksIHNpbmNlCislIHRoZSByZXN1bHQgd2luZHMgdXAgaW4gdGhlIGluZGV4IGZpbGUuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlCislIHZhcmlhYmxlJ3MgdmFsdWUgY29udGFpbnMgb3RoZXIgVGV4aW5mbyBjb21tYW5kcywgaXQncyBhbG1vc3QgY2VydGFpbgorJSBpdCB3aWxsIGZhaWwgKGFsdGhvdWdoIHBlcmhhcHMgd2UgY291bGQgZml4IHRoYXQgd2l0aCBzdWZmaWNpZW50IHdvcmsKKyUgdG8gZG8gYSBvbmUtbGV2ZWwgZXhwYW5zaW9uIG9uIHRoZSByZXN1bHQsIGluc3RlYWQgb2YgY29tcGxldGUpLgorJQorXGRlZlxleHBhbmRhYmxldmFsdWUjMXslCisgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMxXGVuZGNzbmFtZVxyZWxheAorICAgIHtbTm8gdmFsdWUgZm9yIGBgIzEnJ119JQorICAgIFxtZXNzYWdle1ZhcmlhYmxlIGAjMScsIHVzZWQgaW4gQHZhbHVlLCBpcyBub3Qgc2V0Ln0lCisgIFxlbHNlCisgICAgXGNzbmFtZSBTRVQjMVxlbmRjc25hbWUKKyAgXGZpCit9CisKKyUgQGlmc2V0IFZBUiAuLi4gQGVuZCBpZnNldCByZWFkcyB0aGUgYC4uLicgaWZmIFZBUiBoYXMgYmVlbiBkZWZpbmVkCislIHdpdGggQHNldC4KKyUKKyUgVG8gZ2V0IHNwZWNpYWwgdHJlYXRtZW50IG9mIGBAZW5kIGlmc2V0LCcgY2FsbCBcbWFrZW9uZCBhbmQgdGhlIHJlZGVmaW5lLgorJQorXG1ha2Vjb25ke2lmc2V0fQorXGRlZlxpZnNldHtccGFyc2Vhcmd7XGRvaWZzZXR7XGxldFxuZXh0PVxpZnNldGZhaWx9fX0KK1xkZWZcZG9pZnNldCMxIzJ7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXGxldFxuZXh0PVxlbXB0eQorICAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIFNFVCMyXGVuZGNzbmFtZVxyZWxheAorICAgICAgIzElIElmIG5vdCBzZXQsIHJlZGVmaW5lIFxuZXh0LgorICAgIFxmaQorICAgIFxleHBhbmRhZnRlcgorICB9XG5leHQKK30KK1xkZWZcaWZzZXRmYWlse1xkb2lnbm9yZXtpZnNldH19CisKKyUgQGlmY2xlYXIgVkFSIC4uLiBAZW5kIGlmY2xlYXIgcmVhZHMgdGhlIGAuLi4nIGlmZiBWQVIgaGFzIG5ldmVyIGJlZW4KKyUgZGVmaW5lZCB3aXRoIEBzZXQsIG9yIGhhcyBiZWVuIHVuZGVmaW5lZCB3aXRoIEBjbGVhci4KKyUKKyUgVGhlIGBcZWxzZScgaW5zaWRlIHRoZSBgXGRvaWZzZXQnIHBhcmFtZXRlciBpcyBhIHRyaWNrIHRvIHJldXNlIHRoZQorJSBhYm92ZSBjb2RlOiBpZiB0aGUgdmFyaWFibGUgaXMgbm90IHNldCwgZG8gbm90aGluZywgaWYgaXQgaXMgc2V0LAorJSB0aGVuIHJlZGVmaW5lIFxuZXh0IHRvIFxpZmNsZWFyZmFpbC4KKyUKK1xtYWtlY29uZHtpZmNsZWFyfQorXGRlZlxpZmNsZWFye1xwYXJzZWFyZ3tcZG9pZnNldHtcZWxzZSBcbGV0XG5leHQ9XGlmY2xlYXJmYWlsfX19CitcZGVmXGlmY2xlYXJmYWlse1xkb2lnbm9yZXtpZmNsZWFyfX0KKworJSBAZGlyY2F0ZWdvcnkgQ0FURUdPUlkgIC0tIHNwZWNpZnkgYSBjYXRlZ29yeSBvZiB0aGUgZGlyIGZpbGUKKyUgd2hpY2ggdGhpcyBmaWxlIHNob3VsZCBiZWxvbmcgdG8uICBJZ25vcmUgdGhpcyBpbiBUZVguCitcbGV0XGRpcmNhdGVnb3J5PVxjb21tZW50CisKKyUgQGRlZmluaW5mb2VuY2xvc2UuCitcbGV0XGRlZmluZm9lbmNsb3NlPVxjb21tZW50CisKKworXG1lc3NhZ2V7aW5kZXhpbmcsfQorJSBJbmRleCBnZW5lcmF0aW9uIGZhY2lsaXRpZXMKKworJSBEZWZpbmUgXG5ld3dyaXRlIHRvIGJlIGlkZW50aWNhbCB0byBwbGFpbiB0ZXgncyBcbmV3d3JpdGUKKyUgZXhjZXB0IG5vdCBcb3V0ZXIsIHNvIGl0IGNhbiBiZSB1c2VkIHdpdGhpbiBtYWNyb3MgYW5kIFxpZidzLgorXGVkZWZcbmV3d3JpdGV7XG1ha2Vjc25hbWV7cHRleG5ld3dyaXRlfX0KKworJSBcbmV3aW5kZXgge2Zvb30gZGVmaW5lcyBhbiBpbmRleCBuYW1lZCBmb28uCislIEl0IGF1dG9tYXRpY2FsbHkgZGVmaW5lcyBcZm9vaW5kZXggc3VjaCB0aGF0CislIFxmb29pbmRleCAuLi5yZXN0IG9mIGxpbmUuLi4gcHV0cyBhbiBlbnRyeSBpbiB0aGUgaW5kZXggZm9vLgorJSBJdCBhbHNvIGRlZmluZXMgXGZvb2luZGZpbGUgdG8gYmUgdGhlIG51bWJlciBvZiB0aGUgb3V0cHV0IGNoYW5uZWwgZm9yCislIHRoZSBmaWxlIHRoYXQgYWNjdW11bGF0ZXMgdGhpcyBpbmRleC4gIFRoZSBmaWxlJ3MgZXh0ZW5zaW9uIGlzIGZvby4KKyUgVGhlIG5hbWUgb2YgYW4gaW5kZXggc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAyIGNoYXJhY3RlcnMgbG9uZworJSBmb3IgdGhlIHNha2Ugb2Ygdm1zLgorJQorXGRlZlxuZXdpbmRleCMxeyUKKyAgXGlmbGlua3MKKyAgICBcZXhwYW5kYWZ0ZXJcbmV3d3JpdGUgXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWUKKyAgICBcb3Blbm91dCBcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZSBcam9ibmFtZS4jMSAlIE9wZW4gdGhlIGZpbGUKKyAgXGZpCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxaW5kZXhcZW5kY3NuYW1leyUgICAgICUgRGVmaW5lIEAjMWluZGV4CisgICAgXG5vZXhwYW5kXGRvaW5kZXh7IzF9fQorfQorCislIEBkZWZpbmRleCBmb28gID09ICBcbmV3aW5kZXh7Zm9vfQorJQorXGRlZlxkZWZpbmRleHtccGFyc2VhcmdcbmV3aW5kZXh9CisKKyUgRGVmaW5lIEBkZWZjb2RlaW5kZXgsIGxpa2UgQGRlZmluZGV4IGV4Y2VwdCBwdXQgYWxsIGVudHJpZXMgaW4gQGNvZGUuCislCitcZGVmXGRlZmNvZGVpbmRleHtccGFyc2VhcmdcbmV3Y29kZWluZGV4fQorJQorXGRlZlxuZXdjb2RlaW5kZXgjMXslCisgIFxpZmxpbmtzCisgICAgXGV4cGFuZGFmdGVyXG5ld3dyaXRlIFxjc25hbWUjMWluZGZpbGVcZW5kY3NuYW1lCisgICAgXG9wZW5vdXQgXGNzbmFtZSMxaW5kZmlsZVxlbmRjc25hbWUgXGpvYm5hbWUuIzEKKyAgXGZpCisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMxaW5kZXhcZW5kY3NuYW1leyUKKyAgICBcbm9leHBhbmRcZG9jb2RlaW5kZXh7IzF9fSUKK30KKworCislIEBzeW5pbmRleCBmb28gYmFyICAgIG1ha2VzIGluZGV4IGZvbyBmZWVkIGludG8gaW5kZXggYmFyLgorJSBEbyB0aGlzIGluc3RlYWQgb2YgQGRlZmluZGV4IGZvbyBpZiB5b3UgZG9uJ3Qgd2FudCBpdCBhcyBhIHNlcGFyYXRlIGluZGV4LgorJQorJSBAc3luY29kZWluZGV4IGZvbyBiYXIgICBzaW1pbGFyLCBidXQgcHV0IGFsbCBlbnRyaWVzIG1hZGUgZm9yIGluZGV4IGZvbworJSBpbnNpZGUgQGNvZGUuCislCitcZGVmXHN5bmluZGV4IzEgIzIge1xkb3N5bmluZGV4XGRvaW5kZXh7IzF9eyMyfX0KK1xkZWZcc3luY29kZWluZGV4IzEgIzIge1xkb3N5bmluZGV4XGRvY29kZWluZGV4eyMxfXsjMn19CisKKyUgIzEgaXMgXGRvaW5kZXggb3IgXGRvY29kZWluZGV4LCAjMiB0aGUgaW5kZXggZ2V0dGluZyByZWRlZmluZWQgKGZvbyksCislICMzIHRoZSB0YXJnZXQgaW5kZXggKGJhcikuCitcZGVmXGRvc3luaW5kZXgjMSMyIzN7JQorICAlIE9ubHkgZG8gXGNsb3Nlb3V0IGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSBkb25lIGl0LCBlbHNlIHdlJ2xsIGVuZCB1cAorICAlIGNsb3NpbmcgdGhlIHRhcmdldCBpbmRleC4KKyAgXGV4cGFuZGFmdGVyIFxpZnhcY3NuYW1lIGRvbmVzeW5pbmRleCMyXGVuZGNzbmFtZSBcdW5kZWZpbmVkCisgICAgJSBUaGUgXGNsb3Nlb3V0IGhlbHBzIHJlZHVjZSB1bm5lY2Vzc2FyeSBvcGVuIGZpbGVzOyB0aGUgbGltaXQgb24gdGhlCisgICAgJSBBY29ybiBSSVNDIE9TIGlzIGEgbWVyZSAxNiBmaWxlcy4KKyAgICBcZXhwYW5kYWZ0ZXJcY2xvc2VvdXRcY3NuYW1lIzJpbmRmaWxlXGVuZGNzbmFtZQorICAgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lXGRvbmVzeW5pbmRleCMyXGVuZGNzbmFtZSA9IDEKKyAgXGZpCisgICUgcmVkZWZpbmUgXGZvb2luZGZpbGU6CisgIFxleHBhbmRhZnRlclxsZXRcZXhwYW5kYWZ0ZXJcdGVtcFxleHBhbmRhZnRlcj1cY3NuYW1lIzNpbmRmaWxlXGVuZGNzbmFtZQorICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSMyaW5kZmlsZVxlbmRjc25hbWU9XHRlbXAKKyAgJSByZWRlZmluZSBcZm9vaW5kZXg6CisgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSMyaW5kZXhcZW5kY3NuYW1le1xub2V4cGFuZCMxeyMzfX0lCit9CisKKyUgRGVmaW5lIFxkb2luZGV4LCB0aGUgZHJpdmVyIGZvciBhbGwgXGZvb2luZGV4IG1hY3Jvcy4KKyUgQXJndW1lbnQgIzEgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBjYWxsaW5nIFxmb29pbmRleCBtYWNybywKKyUgIGFuZCBpdCBpcyAiZm9vIiwgdGhlIG5hbWUgb2YgdGhlIGluZGV4LgorCislIFxkb2luZGV4IGp1c3QgdXNlcyBccGFyc2Vhcmc7IGl0IGNhbGxzIFxkb2luZCBmb3IgdGhlIGFjdHVhbCB3b3JrLgorJSBUaGlzIGlzIGJlY2F1c2UgXGRvaW5kIGlzIG1vcmUgdXNlZnVsIHRvIGNhbGwgZnJvbSBvdGhlciBtYWNyb3MuCisKKyUgVGhlcmUgaXMgYWxzbyBcZG9zdWJpbmQge2luZGV4fXt0b3BpY317c3VidG9waWN9CislIHdoaWNoIG1ha2VzIGFuIGVudHJ5IGluIGEgdHdvLWxldmVsIGluZGV4IHN1Y2ggYXMgdGhlIG9wZXJhdGlvbiBpbmRleC4KKworXGRlZlxkb2luZGV4IzF7XGVkZWZcaW5kZXhuYW1leyMxfVxwYXJzZWFyZ1xzaW5nbGVpbmRleGVyfQorXGRlZlxzaW5nbGVpbmRleGVyICMxe1xkb2luZHtcaW5kZXhuYW1lfXsjMX19CisKKyUgbGlrZSB0aGUgcHJldmlvdXMgdHdvLCBidXQgdGhleSBwdXQgQGNvZGUgYXJvdW5kIHRoZSBhcmd1bWVudC4KK1xkZWZcZG9jb2RlaW5kZXgjMXtcZWRlZlxpbmRleG5hbWV7IzF9XHBhcnNlYXJnXHNpbmdsZWNvZGVpbmRleGVyfQorXGRlZlxzaW5nbGVjb2RlaW5kZXhlciAjMXtcZG9pbmR7XGluZGV4bmFtZX17XGNvZGV7IzF9fX0KKworJSBUYWtlIGNhcmUgb2YgVGV4aW5mbyBjb21tYW5kcyB0aGF0IGNhbiBhcHBlYXIgaW4gYW4gaW5kZXggZW50cnkuCislIFNpbmNlIHRoZXJlIGFyZSBzb21lIGNvbW1hbmRzIHdlIHdhbnQgdG8gZXhwYW5kLCBhbmQgb3RoZXJzIHdlIGRvbid0LAorJSB3ZSBoYXZlIHRvIGxhYm9yaW91c2x5IHByZXZlbnQgZXhwYW5zaW9uIGZvciB0aG9zZSB0aGF0IHdlIGRvbid0LgorJQorXGRlZlxpbmRleGR1bW1pZXN7JQorICBcZXNjYXBlY2hhciA9IGBcXCAgICAgJSB1c2UgYmFja3NsYXNoIGluIG91dHB1dCBmaWxlcy4KKyAgXGRlZlxAe0B9JSBjaGFuZ2UgdG8gQEAgd2hlbiB3ZSBzd2l0Y2ggdG8gQCBhcyBlc2NhcGUgY2hhciBpbiBpbmRleCBmaWxlcy4KKyAgXGRlZlwge1xyZWFsYmFja3NsYXNoXHNwYWNlIH0lCisgICUgTmVlZCB0aGVzZSBpbiBjYXNlIFx0ZXggaXMgaW4gZWZmZWN0IGFuZCBceyBpcyBhIFxkZWxpbWl0ZXIgYWdhaW4uCisgICUgQnV0IGNhbid0IHVzZSBcbGJyYWNlY21kIGFuZCBccmJyYWNlY21kIGJlY2F1c2UgdGV4aW5kZXggYXNzdW1lcworICAlIGJyYWNlcyBhbmQgYmFja3NsYXNoZXMgYXJlIHVzZWQgb25seSBhcyBkZWxpbWl0ZXJzLgorICBcbGV0XHsgPSBcbXlsYnJhY2UKKyAgXGxldFx9ID0gXG15cmJyYWNlCisgICUKKyAgJSBEbyB0aGUgcmVkZWZpbml0aW9ucy4KKyAgXGNvbW1vbmR1bW1pZXMKK30KKworJSBGb3IgdGhlIGF1eCBhbmQgdG9jIGZpbGVzLCBAIGlzIHRoZSBlc2NhcGUgY2hhcmFjdGVyLiAgU28gd2Ugd2FudCB0bworJSByZWRlZmluZSBldmVyeXRoaW5nIHVzaW5nIEAgYXMgdGhlIGVzY2FwZSBjaGFyYWN0ZXIgKGluc3RlYWQgb2YKKyUgXHJlYWxiYWNrc2xhc2gsIHN0aWxsIHVzZWQgZm9yIGluZGV4IGZpbGVzKS4gIFdoZW4gZXZlcnl0aGluZyB1c2VzIEAsCislIHRoaXMgd2lsbCBiZSBzaW1wbGVyLgorJQorXGRlZlxhdGR1bW1pZXN7JQorICBcZGVmXEB7QEB9JQorICBcZGVmXCB7QCB9JQorICBcbGV0XHsgPSBcbGJyYWNlYXRjbWQKKyAgXGxldFx9ID0gXHJicmFjZWF0Y21kCisgICUKKyAgJSBEbyB0aGUgcmVkZWZpbml0aW9ucy4KKyAgXGNvbW1vbmR1bW1pZXMKKyAgXG90aGVyYmFja3NsYXNoCit9CisKKyUgQ2FsbGVkIGZyb20gXGluZGV4ZHVtbWllcyBhbmQgXGF0ZHVtbWllcy4KKyUKK1xkZWZcY29tbW9uZHVtbWllc3slCisgICUKKyAgJSBcZGVmaW5lZHVtbXl3b3JkIGRlZmluZXMgXCMxIGFzIFxzdHJpbmdcIzFcc3BhY2UsIHRodXMgZWZmZWN0aXZlbHkKKyAgJSBwcmV2ZW50aW5nIGl0cyBleHBhbnNpb24uICBUaGlzIGlzIHVzZWQgb25seSBmb3IgY29udHJvbCUgd29yZHMsCisgICUgbm90IGNvbnRyb2wgbGV0dGVycywgYmVjYXVzZSB0aGUgXHNwYWNlIHdvdWxkIGJlIGluY29ycmVjdCBmb3IKKyAgJSBjb250cm9sIGNoYXJhY3RlcnMsIGJ1dCBpcyBuZWVkZWQgdG8gc2VwYXJhdGUgdGhlIGNvbnRyb2wgd29yZAorICAlIGZyb20gd2hhdGV2ZXIgZm9sbG93cy4KKyAgJQorICAlIEZvciBjb250cm9sIGxldHRlcnMsIHdlIGhhdmUgXGRlZmluZWR1bW15bGV0dGVyLCB3aGljaCBvbWl0cyB0aGUKKyAgJSBzcGFjZS4KKyAgJQorICAlIFRoZXNlIGNhbiBiZSB1c2VkIGJvdGggZm9yIGNvbnRyb2wgd29yZHMgdGhhdCB0YWtlIGFuIGFyZ3VtZW50IGFuZAorICAlIHRob3NlIHRoYXQgZG8gbm90LiAgSWYgaXQgaXMgZm9sbG93ZWQgYnkge2FyZ30gaW4gdGhlIGlucHV0LCB0aGVuCisgICUgdGhhdCB3aWxsIGR1dGlmdWxseSBnZXQgd3JpdHRlbiB0byB0aGUgaW5kZXggKG9yIHdoZXJldmVyKS4KKyAgJQorICBcZGVmXGRlZmluZWR1bW15d29yZCAgIyMxe1xkZWYjIzF7XHN0cmluZyMjMVxzcGFjZX19JQorICBcZGVmXGRlZmluZWR1bW15bGV0dGVyIyMxe1xkZWYjIzF7XHN0cmluZyMjMX19JQorICBcbGV0XGRlZmluZWR1bW15YWNjZW50XGRlZmluZWR1bW15bGV0dGVyCisgICUKKyAgXGNvbW1vbmR1bW1pZXNub2ZvbnRzCisgICUKKyAgXGRlZmluZWR1bW15bGV0dGVyXF8lCisgICUKKyAgJSBOb24tRW5nbGlzaCBsZXR0ZXJzLgorICBcZGVmaW5lZHVtbXl3b3JkXEFBCisgIFxkZWZpbmVkdW1teXdvcmRcQUUKKyAgXGRlZmluZWR1bW15d29yZFxMCisgIFxkZWZpbmVkdW1teXdvcmRcT0UKKyAgXGRlZmluZWR1bW15d29yZFxPCisgIFxkZWZpbmVkdW1teXdvcmRcYWEKKyAgXGRlZmluZWR1bW15d29yZFxhZQorICBcZGVmaW5lZHVtbXl3b3JkXGwKKyAgXGRlZmluZWR1bW15d29yZFxvZQorICBcZGVmaW5lZHVtbXl3b3JkXG8KKyAgXGRlZmluZWR1bW15d29yZFxzcworICBcZGVmaW5lZHVtbXl3b3JkXGV4Y2xhbWRvd24KKyAgXGRlZmluZWR1bW15d29yZFxxdWVzdGlvbmRvd24KKyAgXGRlZmluZWR1bW15d29yZFxvcmRmCisgIFxkZWZpbmVkdW1teXdvcmRcb3JkbQorICAlCisgICUgQWx0aG91Z2ggdGhlc2UgaW50ZXJuYWwgY29tbWFuZHMgc2hvdWxkbid0IHNob3cgdXAsIHNvbWV0aW1lcyB0aGV5IGRvLgorICBcZGVmaW5lZHVtbXl3b3JkXGJmCisgIFxkZWZpbmVkdW1teXdvcmRcZ3RyCisgIFxkZWZpbmVkdW1teXdvcmRcaGF0CisgIFxkZWZpbmVkdW1teXdvcmRcbGVzcworICBcZGVmaW5lZHVtbXl3b3JkXHNmCisgIFxkZWZpbmVkdW1teXdvcmRcc2wKKyAgXGRlZmluZWR1bW15d29yZFx0Y2xvc2UKKyAgXGRlZmluZWR1bW15d29yZFx0dAorICAlCisgIFxkZWZpbmVkdW1teXdvcmRcTGFUZVgKKyAgXGRlZmluZWR1bW15d29yZFxUZVgKKyAgJQorICAlIEFzc29ydGVkIHNwZWNpYWwgY2hhcmFjdGVycy4KKyAgXGRlZmluZWR1bW15d29yZFxidWxsZXQKKyAgXGRlZmluZWR1bW15d29yZFxjb21tYQorICBcZGVmaW5lZHVtbXl3b3JkXGNvcHlyaWdodAorICBcZGVmaW5lZHVtbXl3b3JkXHJlZ2lzdGVyZWRzeW1ib2wKKyAgXGRlZmluZWR1bW15d29yZFxkb3RzCisgIFxkZWZpbmVkdW1teXdvcmRcZW5kZG90cworICBcZGVmaW5lZHVtbXl3b3JkXGVxdWl2CisgIFxkZWZpbmVkdW1teXdvcmRcZXJyb3IKKyAgXGRlZmluZWR1bW15d29yZFxldXJvCisgIFxkZWZpbmVkdW1teXdvcmRcZXhwYW5zaW9uCisgIFxkZWZpbmVkdW1teXdvcmRcbWludXMKKyAgXGRlZmluZWR1bW15d29yZFxwb3VuZHMKKyAgXGRlZmluZWR1bW15d29yZFxwb2ludAorICBcZGVmaW5lZHVtbXl3b3JkXHByaW50CisgIFxkZWZpbmVkdW1teXdvcmRccmVzdWx0CisgICUKKyAgJSBXZSB3YW50IHRvIGRpc2FibGUgYWxsIG1hY3JvcyBzbyB0aGF0IHRoZXkgYXJlIG5vdCBleHBhbmRlZCBieSBcd3JpdGUuCisgIFxtYWNyb2xpc3QKKyAgJQorICBcbm9ybWFsdHVybm9mZmFjdGl2ZQorICAlCisgICUgSGFuZGxlIHNvbWUgY2FzZXMgb2YgQHZhbHVlIC0tIHdoZXJlIGl0IGRvZXMgbm90IGNvbnRhaW4gYW55CisgICUgKG5vbi1mdWxseS1leHBhbmRhYmxlKSBjb21tYW5kcy4KKyAgXG1ha2V2YWx1ZWV4cGFuZGFibGUKK30KKworJSBcY29tbW9uZHVtbWllc25vZm9udHM6IGNvbW1vbiB0byBcY29tbW9uZHVtbWllcyBhbmQgXGluZGV4bm9mb250cy4KKyUKK1xkZWZcY29tbW9uZHVtbWllc25vZm9udHN7JQorICAlIENvbnRyb2wgbGV0dGVycyBhbmQgYWNjZW50cy4KKyAgXGRlZmluZWR1bW15bGV0dGVyXCElCisgIFxkZWZpbmVkdW1teWFjY2VudFwiJQorICBcZGVmaW5lZHVtbXlhY2NlbnRcJyUKKyAgXGRlZmluZWR1bW15bGV0dGVyXColCisgIFxkZWZpbmVkdW1teWFjY2VudFwsJQorICBcZGVmaW5lZHVtbXlsZXR0ZXJcLiUKKyAgXGRlZmluZWR1bW15bGV0dGVyXC8lCisgIFxkZWZpbmVkdW1teWxldHRlclw6JQorICBcZGVmaW5lZHVtbXlhY2NlbnRcPSUKKyAgXGRlZmluZWR1bW15bGV0dGVyXD8lCisgIFxkZWZpbmVkdW1teWFjY2VudFxeJQorICBcZGVmaW5lZHVtbXlhY2NlbnRcYCUKKyAgXGRlZmluZWR1bW15YWNjZW50XH4lCisgIFxkZWZpbmVkdW1teXdvcmRcdQorICBcZGVmaW5lZHVtbXl3b3JkXHYKKyAgXGRlZmluZWR1bW15d29yZFxICisgIFxkZWZpbmVkdW1teXdvcmRcZG90YWNjZW50CisgIFxkZWZpbmVkdW1teXdvcmRccmluZ2FjY2VudAorICBcZGVmaW5lZHVtbXl3b3JkXHRpZWFjY2VudAorICBcZGVmaW5lZHVtbXl3b3JkXHViYXJhY2NlbnQKKyAgXGRlZmluZWR1bW15d29yZFx1ZG90YWNjZW50CisgIFxkZWZpbmVkdW1teXdvcmRcZG90bGVzcworICAlCisgICUgVGV4aW5mbyBmb250IGNvbW1hbmRzLgorICBcZGVmaW5lZHVtbXl3b3JkXGIKKyAgXGRlZmluZWR1bW15d29yZFxpCisgIFxkZWZpbmVkdW1teXdvcmRccgorICBcZGVmaW5lZHVtbXl3b3JkXHNjCisgIFxkZWZpbmVkdW1teXdvcmRcdAorICAlCisgICUgQ29tbWFuZHMgdGhhdCB0YWtlIGFyZ3VtZW50cy4KKyAgXGRlZmluZWR1bW15d29yZFxhY3JvbnltCisgIFxkZWZpbmVkdW1teXdvcmRcY2l0ZQorICBcZGVmaW5lZHVtbXl3b3JkXGNvZGUKKyAgXGRlZmluZWR1bW15d29yZFxjb21tYW5kCisgIFxkZWZpbmVkdW1teXdvcmRcZGZuCisgIFxkZWZpbmVkdW1teXdvcmRcZW1waAorICBcZGVmaW5lZHVtbXl3b3JkXGVudgorICBcZGVmaW5lZHVtbXl3b3JkXGZpbGUKKyAgXGRlZmluZWR1bW15d29yZFxrYmQKKyAgXGRlZmluZWR1bW15d29yZFxrZXkKKyAgXGRlZmluZWR1bW15d29yZFxtYXRoCisgIFxkZWZpbmVkdW1teXdvcmRcb3B0aW9uCisgIFxkZWZpbmVkdW1teXdvcmRccHhyZWYKKyAgXGRlZmluZWR1bW15d29yZFxyZWYKKyAgXGRlZmluZWR1bW15d29yZFxzYW1wCisgIFxkZWZpbmVkdW1teXdvcmRcc3Ryb25nCisgIFxkZWZpbmVkdW1teXdvcmRcdGllCisgIFxkZWZpbmVkdW1teXdvcmRcdXJlZgorICBcZGVmaW5lZHVtbXl3b3JkXHVybAorICBcZGVmaW5lZHVtbXl3b3JkXHZhcgorICBcZGVmaW5lZHVtbXl3b3JkXHZlcmIKKyAgXGRlZmluZWR1bW15d29yZFx3CisgIFxkZWZpbmVkdW1teXdvcmRceHJlZgorfQorCislIFxpbmRleG5vZm9udHMgaXMgdXNlZCB3aGVuIG91dHB1dHRpbmcgdGhlIHN0cmluZ3MgdG8gc29ydCB0aGUgaW5kZXgKKyUgYnksIGFuZCB3aGVuIGNvbnN0cnVjdGluZyBjb250cm9sIHNlcXVlbmNlIG5hbWVzLiAgSXQgZWxpbWluYXRlcyBhbGwKKyUgY29udHJvbCBzZXF1ZW5jZXMgYW5kIGp1c3Qgd3JpdGVzIHdoYXRldmVyIHRoZSBiZXN0IEFTQ0lJIHNvcnQgc3RyaW5nCislIHdvdWxkIGJlIGZvciBhIGdpdmVuIGNvbW1hbmQgKHVzdWFsbHkgaXRzIGFyZ3VtZW50KS4KKyUKK1xkZWZcaW5kZXhub2ZvbnRzeyUKKyAgJSBBY2NlbnQgY29tbWFuZHMgc2hvdWxkIGJlY29tZSBAYXNpcy4KKyAgXGRlZlxkZWZpbmVkdW1teWFjY2VudCMjMXtcbGV0IyMxXGFzaXN9JQorICAlIFdlIGNhbiBqdXN0IGlnbm9yZSBvdGhlciBjb250cm9sIGxldHRlcnMuCisgIFxkZWZcZGVmaW5lZHVtbXlsZXR0ZXIjIzF7XGxldCMjMVxlbXB0eX0lCisgICUgSG9wZWZ1bGx5LCBhbGwgY29udHJvbCB3b3JkcyBjYW4gYmVjb21lIEBhc2lzLgorICBcbGV0XGRlZmluZWR1bW15d29yZFxkZWZpbmVkdW1teWFjY2VudAorICAlCisgIFxjb21tb25kdW1taWVzbm9mb250cworICAlCisgICUgRG9uJ3Qgbm8tb3AgXHR0LCBzaW5jZSBpdCBpc24ndCBhIHVzZXItbGV2ZWwgY29tbWFuZAorICAlIGFuZCBpcyB1c2VkIGluIHRoZSBkZWZpbml0aW9ucyBvZiB0aGUgYWN0aXZlIGNoYXJzIGxpa2UgPCwgPiwgfCwgZXRjLgorICAlIExpa2V3aXNlIHdpdGggdGhlIG90aGVyIHBsYWluIHRleCBmb250IGNvbW1hbmRzLgorICAlXGxldFx0dD1cYXNpcworICAlCisgIFxkZWZcIHsgfSUKKyAgXGRlZlxAe0B9JQorICAlIGhvdyB0byBoYW5kbGUgYnJhY2VzPworICBcZGVmXF97XG5vcm1hbHVuZGVyc2NvcmV9JQorICAlCisgICUgTm9uLUVuZ2xpc2ggbGV0dGVycy4KKyAgXGRlZlxBQXtBQX0lCisgIFxkZWZcQUV7QUV9JQorICBcZGVmXEx7TH0lCisgIFxkZWZcT0V7T0V9JQorICBcZGVmXE97T30lCisgIFxkZWZcYWF7YWF9JQorICBcZGVmXGFle2FlfSUKKyAgXGRlZlxse2x9JQorICBcZGVmXG9le29lfSUKKyAgXGRlZlxve299JQorICBcZGVmXHNze3NzfSUKKyAgXGRlZlxleGNsYW1kb3dueyF9JQorICBcZGVmXHF1ZXN0aW9uZG93bns/fSUKKyAgXGRlZlxvcmRme2F9JQorICBcZGVmXG9yZG17b30lCisgICUKKyAgXGRlZlxMYVRlWHtMYVRlWH0lCisgIFxkZWZcVGVYe1RlWH0lCisgICUKKyAgJSBBc3NvcnRlZCBzcGVjaWFsIGNoYXJhY3RlcnMuCisgICUgKFRoZSBmb2xsb3dpbmcge30gd2lsbCBlbmQgdXAgaW4gdGhlIHNvcnQgc3RyaW5nLCBidXQgdGhhdCdzIG9rLikKKyAgXGRlZlxidWxsZXR7YnVsbGV0fSUKKyAgXGRlZlxjb21tYXssfSUKKyAgXGRlZlxjb3B5cmlnaHR7Y29weXJpZ2h0fSUKKyAgXGRlZlxyZWdpc3RlcmVkc3ltYm9se1J9JQorICBcZGVmXGRvdHN7Li4ufSUKKyAgXGRlZlxlbmRkb3Rzey4uLn0lCisgIFxkZWZcZXF1aXZ7PT19JQorICBcZGVmXGVycm9ye2Vycm9yfSUKKyAgXGRlZlxldXJve2V1cm99JQorICBcZGVmXGV4cGFuc2lvbns9PT59JQorICBcZGVmXG1pbnVzey19JQorICBcZGVmXHBvdW5kc3twb3VuZHN9JQorICBcZGVmXHBvaW50ey59JQorICBcZGVmXHByaW50ey18fSUKKyAgXGRlZlxyZXN1bHR7PT59JQorICAlCisgICUgV2UgbmVlZCB0byBnZXQgcmlkIG9mIGFsbCBtYWNyb3MsIGxlYXZpbmcgb25seSB0aGUgYXJndW1lbnRzIChpZiBwcmVzZW50KS4KKyAgJSBPZiBjb3Vyc2UgdGhpcyBpcyBub3QgbmVhcmx5IGNvcnJlY3QsIGJ1dCBpdCBpcyB0aGUgYmVzdCB3ZSBjYW4gZG8gZm9yIG5vdy4KKyAgJSBtYWtlaW5mbyBkb2VzIG5vdCBleHBhbmQgbWFjcm9zIGluIHRoZSBhcmd1bWVudCB0byBAZGVmZm4sIHdoaWNoIGVuZHMgdXAKKyAgJSB3cml0aW5nIGFuIGluZGV4IGVudHJ5LCBhbmQgdGV4aW5kZXggaXNuJ3QgcHJlcGFyZWQgZm9yIGFuIGluZGV4IHNvcnQgZW50cnkKKyAgJSB0aGF0IHN0YXJ0cyB3aXRoIFwuCisgICUgCisgICUgU2luY2UgbWFjcm8gaW52b2NhdGlvbnMgYXJlIGZvbGxvd2VkIGJ5IGJyYWNlcywgd2UgY2FuIGp1c3QgcmVkZWZpbmUgdGhlbQorICAlIHRvIHRha2UgYSBzaW5nbGUgVGVYIGFyZ3VtZW50LiAgVGhlIGNhc2Ugb2YgYSBtYWNybyBpbnZvY2F0aW9uIHRoYXQKKyAgJSBnb2VzIHRvIGVuZC1vZi1saW5lIGlzIG5vdCBoYW5kbGVkLgorICAlIAorICBcbWFjcm9saXN0Cit9CisKK1xsZXRcaW5kZXhiYWNrc2xhc2g9MCAgJW92ZXJyaWRkZW4gZHVyaW5nIFxwcmludGluZGV4LgorXGxldFxTRVRtYXJnaW5pbmRleD1ccmVsYXggJSBwdXQgaW5kZXggZW50cmllcyBpbiBtYXJnaW4gKHVuZG9jdW1lbnRlZCk/CisKKyUgTW9zdCBpbmRleCBlbnRyaWVzIGdvIHRocm91Z2ggaGVyZSwgYnV0IFxkb3N1YmluZCBpcyB0aGUgZ2VuZXJhbCBjYXNlLgorJSAjMSBpcyB0aGUgaW5kZXggbmFtZSwgIzIgaXMgdGhlIGVudHJ5IHRleHQuCitcZGVmXGRvaW5kIzEjMntcZG9zdWJpbmR7IzF9eyMyfXt9fQorCislIFdvcmtob3JzZSBmb3IgYWxsIFxmb29pbmRleGVzLgorJSAjMSBpcyBuYW1lIG9mIGluZGV4LCAjMiBpcyBzdHVmZiB0byBwdXQgdGhlcmUsICMzIGlzIHN1YmVudHJ5IC0tCislIGVtcHR5IGlmIGNhbGxlZCBmcm9tIFxkb2luZCwgYXMgd2UgdXN1YWxseSBhcmUgKHRoZSBtYWluIGV4Y2VwdGlvbgorJSBpcyB3aXRoIG1vc3QgZGVmdW5zLCB3aGljaCBjYWxsIHVzIGRpcmVjdGx5KS4KKyUKK1xkZWZcZG9zdWJpbmQjMSMyIzN7JQorICBcaWZsaW5rcworICB7JQorICAgICUgU3RvcmUgdGhlIG1haW4gaW5kZXggZW50cnkgdGV4dCAoaW5jbHVkaW5nIHRoZSB0aGlyZCBhcmcpLgorICAgIFx0b2tzMCA9IHsjMn0lCisgICAgJSBJZiB0aGlyZCBhcmcgaXMgcHJlc2VudCwgcHJlY2VkZSBpdCB3aXRoIGEgc3BhY2UuCisgICAgXGRlZlx0aGlyZGFyZ3sjM30lCisgICAgXGlmeFx0aGlyZGFyZ1xlbXB0eSBcZWxzZQorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1x0aGVcdG9rczAgXHNwYWNlICMzfSUKKyAgICBcZmkKKyAgICAlCisgICAgXGVkZWZcd3JpdGV0b3tcY3NuYW1lIzFpbmRmaWxlXGVuZGNzbmFtZX0lCisgICAgJQorICAgIFxpZnZtb2RlCisgICAgICBcZG9zdWJpbmRzYW5pdGl6ZQorICAgIFxlbHNlCisgICAgICBcZG9zdWJpbmR3cml0ZQorICAgIFxmaQorICB9JQorICBcZmkKK30KKworJSBXcml0ZSB0aGUgZW50cnkgaW4gXHRva3MwIHRvIHRoZSBpbmRleCBmaWxlOgorJQorXGRlZlxkb3N1YmluZHdyaXRleyUKKyAgJSBQdXQgdGhlIGluZGV4IGVudHJ5IGluIHRoZSBtYXJnaW4gaWYgZGVzaXJlZC4KKyAgXGlmeFxTRVRtYXJnaW5pbmRleFxyZWxheFxlbHNlCisgICAgXGluc2VydFxtYXJnaW57XGhib3h7XHZydWxlIGhlaWdodDhwdCBkZXB0aDNwdCB3aWR0aDBwdCBcdGhlXHRva3MwfX0lCisgIFxmaQorICAlCisgICUgUmVtZW1iZXIsIHdlIGFyZSB3aXRoaW4gYSBncm91cC4KKyAgXGluZGV4ZHVtbWllcyAlIE11c3QgZG8gdGhpcyBoZXJlLCBzaW5jZSBcYmYsIGV0YyBleHBhbmQgYXQgdGhpcyBzdGFnZQorICBcZGVmXGJhY2tzbGFzaGN1cmZvbnR7XGluZGV4YmFja3NsYXNofSUgXGluZGV4YmFja3NsYXNoIGlzbid0IGRlZmluZWQgbm93CisgICAgICAlIHNvIGl0IHdpbGwgYmUgb3V0cHV0IGFzIGlzOyBhbmQgaXQgd2lsbCBwcmludCBhcyBiYWNrc2xhc2guCisgICUKKyAgJSBQcm9jZXNzIHRoZSBpbmRleCBlbnRyeSB3aXRoIGFsbCBmb250IGNvbW1hbmRzIHR1cm5lZCBvZmYsIHRvCisgICUgZ2V0IHRoZSBzdHJpbmcgdG8gc29ydCBieS4KKyAge1xpbmRleG5vZm9udHMKKyAgIFxlZGVmXHRlbXB7XHRoZVx0b2tzMH0lIG5lZWQgZnVsbCBleHBhbnNpb24KKyAgIFx4ZGVmXGluZGV4c29ydHRtcHtcdGVtcH0lCisgIH0lCisgICUKKyAgJSBTZXQgdXAgdGhlIGNvbXBsZXRlIGluZGV4IGVudHJ5LCB3aXRoIGJvdGggdGhlIHNvcnQga2V5IGFuZAorICAlIHRoZSBvcmlnaW5hbCB0ZXh0LCBpbmNsdWRpbmcgYW55IGZvbnQgY29tbWFuZHMuICBXZSB3cml0ZQorICAlIHRocmVlIGFyZ3VtZW50cyB0byBcZW50cnkgdG8gdGhlIC4/PyBmaWxlIChmb3VyIGluIHRoZQorICAlIHN1YmVudHJ5IGNhc2UpLCB0ZXhpbmRleCByZWR1Y2VzIHRvIHR3byB3aGVuIHdyaXRpbmcgdGhlIC4/P3MKKyAgJSBzb3J0ZWQgcmVzdWx0LgorICBcZWRlZlx0ZW1weyUKKyAgICBcd3JpdGVcd3JpdGV0b3slCisgICAgICBcc3RyaW5nXGVudHJ5e1xpbmRleHNvcnR0bXB9e1xub2V4cGFuZFxmb2xpb317XHRoZVx0b2tzMH19JQorICB9JQorICBcdGVtcAorfQorCislIFRha2UgY2FyZSBvZiB1bndhbnRlZCBwYWdlIGJyZWFrczoKKyUKKyUgSWYgYSBza2lwIGlzIHRoZSBsYXN0IHRoaW5nIG9uIHRoZSBsaXN0IG5vdywgcHJlc2VydmUgaXQKKyUgYnkgYmFja2luZyB1cCBieSBcbGFzdHNraXAsIGRvaW5nIHRoZSBcd3JpdGUsIHRoZW4gaW5zZXJ0aW5nCislIHRoZSBza2lwIGFnYWluLiAgT3RoZXJ3aXNlLCB0aGUgd2hhdHNpdCBnZW5lcmF0ZWQgYnkgdGhlCislIFx3cml0ZSB3aWxsIG1ha2UgXGxhc3Rza2lwIHplcm8uICBUaGUgcmVzdWx0IGlzIHRoYXQgc2VxdWVuY2VzCislIGxpa2UgdGhpczoKKyUgQGVuZCBkZWZ1bgorJSBAdGluZGV4IHdoYXRldmVyCislIEBkZWZ1biAuLi4KKyUgd2lsbCBoYXZlIGV4dHJhIHNwYWNlIGluc2VydGVkLCBiZWNhdXNlIHRoZSBcbWVkYnJlYWsgaW4gdGhlCislIHN0YXJ0IG9mIHRoZSBAZGVmdW4gd29uJ3Qgc2VlIHRoZSBza2lwIGluc2VydGVkIGJ5IHRoZSBAZW5kIG9mCislIHRoZSBwcmV2aW91cyBkZWZ1bi4KKyUKKyUgQnV0IGRvbid0IGRvIGFueSBvZiB0aGlzIGlmIHdlJ3JlIG5vdCBpbiB2ZXJ0aWNhbCBtb2RlLiAgV2UKKyUgZG9uJ3Qgd2FudCB0byBkbyBhIFx2c2tpcCBhbmQgcHJlbWF0dXJlbHkgZW5kIGEgcGFyYWdyYXBoLgorJQorJSBBdm9pZCBwYWdlIGJyZWFrcyBkdWUgdG8gdGhlc2UgZXh0cmEgc2tpcHMsIHRvby4KKyUKKyUgQnV0IHdhaXQsIHRoZXJlIGlzIGEgY2F0Y2ggdGhlcmU6CislIFdlJ2xsIGhhdmUgdG8gY2hlY2sgd2hldGhlciBcbGFzdHNraXAgaXMgemVybyBza2lwLiAgXGlmZGltIGlzIG5vdAorJSBzdWZmaWNpZW50IGZvciB0aGlzIHB1cnBvc2UsIGFzIGl0IGlnbm9yZXMgc3RyZXRjaCBhbmQgc2hyaW5rIHBhcnRzCislIG9mIHRoZSBza2lwLiAgVGhlIG9ubHkgd2F5IHNlZW1zIHRvIGJlIHRvIGNoZWNrIHRoZSB0ZXh0dWFsCislIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBza2lwLgorJQorJSBUaGUgZm9sbG93aW5nIGlzIGFsbW9zdCBsaWtlIFxkZWZcemVyb3NraXBtYWNyb3swLjBwdH0gZXhjZXB0IHRoYXQKKyUgdGhlIGBgcCcnIGFuZCBgYHQnJyBjaGFyYWN0ZXJzIGhhdmUgY2F0Y29kZSBcb3RoZXIsIG5vdCAxMSAobGV0dGVyKS4KKyUKK1xlZGVmXHplcm9za2lwbWFjcm97XGV4cGFuZGFmdGVyXHRoZVxjc25hbWUgekBza2lwXGVuZGNzbmFtZX0KKyUKKyUgLi4uLCByZWFkeSwgR086CislCitcZGVmXGRvc3ViaW5kc2FuaXRpemV7JQorICAlIFxsYXN0c2tpcCBhbmQgXGxhc3RwZW5hbHR5IGNhbm5vdCBib3RoIGJlIG5vbnplcm8gc2ltdWx0YW5lb3VzbHkuCisgIFxza2lwMCA9IFxsYXN0c2tpcAorICBcZWRlZlxsYXN0c2tpcG1hY3Jve1x0aGVcbGFzdHNraXB9JQorICBcY291bnQyNTUgPSBcbGFzdHBlbmFsdHkKKyAgJQorICAlIElmIFxsYXN0c2tpcCBpcyBub256ZXJvLCB0aGF0IG1lYW5zIHRoZSBsYXN0IGl0ZW0gd2FzIGEKKyAgJSBza2lwLiAgQW5kIHNpbmNlIGEgc2tpcCBpcyBkaXNjYXJkYWJsZSwgdGhhdCBtZWFucyB0aGlzCisgICUgLVxza2lwMCBnbHVlIHdlJ3JlIGluc2VydGluZyBpcyBwcmVjZWRlZCBieSBhCisgICUgbm9uLWRpc2NhcmRhYmxlIGl0ZW0sIHRoZXJlZm9yZSBpdCBpcyBub3QgYSBwb3RlbnRpYWwKKyAgJSBicmVha3BvaW50LCB0aGVyZWZvcmUgbm8gXG5vYnJlYWsgbmVlZGVkLgorICBcaWZ4XGxhc3Rza2lwbWFjcm9cemVyb3NraXBtYWNybworICBcZWxzZQorICAgIFx2c2tpcC1cc2tpcDAKKyAgXGZpCisgICUKKyAgXGRvc3ViaW5kd3JpdGUKKyAgJQorICBcaWZ4XGxhc3Rza2lwbWFjcm9cemVyb3NraXBtYWNybworICAgICUgSWYgXGxhc3Rza2lwIHdhcyB6ZXJvLCBwZXJoYXBzIHRoZSBsYXN0IGl0ZW0gd2FzIGEgcGVuYWx0eSwgYW5kCisgICAgJSBwZXJoYXBzIGl0IHdhcyA+PTEwMDAwLCBlLmcuLCBhIFxub2JyZWFrLiAgSW4gdGhhdCBjYXNlLCB3ZSB3YW50CisgICAgJSB0byByZS1pbnNlcnQgdGhlIHNhbWUgcGVuYWx0eSAodmFsdWVzID4xMDAwMCBhcmUgdXNlZCBmb3IgdmFyaW91cworICAgICUgc2lnbmFscyk7IHNpbmNlIHdlIGp1c3QgaW5zZXJ0ZWQgYSBub24tZGlzY2FyZGFibGUgaXRlbSwgYW55CisgICAgJSBmb2xsb3dpbmcgZ2x1ZSAoc3VjaCBhcyBhIFxwYXJza2lwKSB3b3VsZCBiZSBhIGJyZWFrcG9pbnQuICBGb3IgZXhhbXBsZToKKyAgICAlIAorICAgICUgICBAZGVmZm4gZGVmZm4td2hhdGV2ZXIKKyAgICAlICAgQHZpbmRleCBpbmRleC13aGF0ZXZlcgorICAgICUgICBEZXNjcmlwdGlvbi4KKyAgICAlIHdvdWxkIGFsbG93IGEgYnJlYWsgYmV0d2VlbiB0aGUgaW5kZXgtd2hhdGV2ZXIgd2hhdHNpdAorICAgICUgYW5kIHRoZSAiRGVzY3JpcHRpb24uIiBwYXJhZ3JhcGguCisgICAgXGlmbnVtXGNvdW50MjU1Pjk5OTkgXHBlbmFsdHlcY291bnQyNTUgXGZpCisgIFxlbHNlCisgICAgJSBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgd2UgaGFkIGEgbm9uemVybyBcbGFzdHNraXAsCisgICAgJSB0aGlzIG1ha2UtdXAgZ2x1ZSB3b3VsZCBiZSBwcmVjZWRlZCBieSBhIG5vbi1kaXNjYXJkYWJsZSBpdGVtCisgICAgJSAodGhlIHdoYXRzaXQgZnJvbSB0aGUgXHdyaXRlKSwgc28gd2UgbXVzdCBpbnNlcnQgYSBcbm9icmVhay4KKyAgICBcbm9icmVha1x2c2tpcFxza2lwMAorICBcZmkKK30KKworJSBUaGUgaW5kZXggZW50cnkgd3JpdHRlbiBpbiB0aGUgZmlsZSBhY3R1YWxseSBsb29rcyBsaWtlCislICBcZW50cnkge3NvcnRzdHJpbmd9e3BhZ2V9e3RvcGljfQorJSBvcgorJSAgXGVudHJ5IHtzb3J0c3RyaW5nfXtwYWdlfXt0b3BpY317c3VidG9waWN9CislIFRoZSB0ZXhpbmRleCBwcm9ncmFtIHJlYWRzIGluIHRoZXNlIGZpbGVzIGFuZCB3cml0ZXMgZmlsZXMKKyUgY29udGFpbmluZyB0aGVzZSBraW5kcyBvZiBsaW5lczoKKyUgIFxpbml0aWFsIHtjfQorJSAgICAgYmVmb3JlIHRoZSBmaXJzdCB0b3BpYyB3aG9zZSBpbml0aWFsIGlzIGMKKyUgIFxlbnRyeSB7dG9waWN9e3BhZ2VsaXN0fQorJSAgICAgZm9yIGEgdG9waWMgdGhhdCBpcyB1c2VkIHdpdGhvdXQgc3VidG9waWNzCislICBccHJpbWFyeSB7dG9waWN9CislICAgICBmb3IgdGhlIGJlZ2lubmluZyBvZiBhIHRvcGljIHRoYXQgaXMgdXNlZCB3aXRoIHN1YnRvcGljcworJSAgXHNlY29uZGFyeSB7c3VidG9waWN9e3BhZ2VsaXN0fQorJSAgICAgZm9yIGVhY2ggc3VidG9waWMuCisKKyUgRGVmaW5lIHRoZSB1c2VyLWFjY2Vzc2libGUgaW5kZXhpbmcgY29tbWFuZHMKKyUgQGZpbmRleCwgQHZpbmRleCwgQGtpbmRleCwgQGNpbmRleC4KKworXGRlZlxmaW5kZXgge1xmbmluZGV4fQorXGRlZlxraW5kZXgge1xreWluZGV4fQorXGRlZlxjaW5kZXgge1xjcGluZGV4fQorXGRlZlx2aW5kZXgge1x2cmluZGV4fQorXGRlZlx0aW5kZXgge1x0cGluZGV4fQorXGRlZlxwaW5kZXgge1xwZ2luZGV4fQorCitcZGVmXGNpbmRleHN1YiB7XGJlZ2luZ3JvdXBcb2JleWxpbmVzXGNpbmRleHN1Yn0KK3tcb2JleWxpbmVzICUKK1xnZGVmXGNpbmRleHN1YiAiIzEiICMyXl5Ne1xlbmRncm91cCAlCitcZG9zdWJpbmR7Y3B9eyMyfXsjMX19fQorCislIERlZmluZSB0aGUgbWFjcm9zIHVzZWQgaW4gZm9ybWF0dGluZyBvdXRwdXQgb2YgdGhlIHNvcnRlZCBpbmRleCBtYXRlcmlhbC4KKworJSBAcHJpbnRpbmRleCBjYXVzZXMgYSBwYXJ0aWN1bGFyIGluZGV4ICh0aGUgPz9zIGZpbGUpIHRvIGdldCBwcmludGVkLgorJSBJdCBkb2VzIG5vdCBwcmludCBhbnkgY2hhcHRlciBoZWFkaW5nICh1c3VhbGx5IGFuIEB1bm51bWJlcmVkKS4KKyUKK1xwYXJzZWFyZ2RlZlxwcmludGluZGV4e1xiZWdpbmdyb3VwCisgIFxkb2JyZWFrIFxjaGFwaGVhZGluZ3NraXB7MTAwMDB9JQorICAlCisgIFxzbWFsbGZvbnRzIFxybQorICBcdG9sZXJhbmNlID0gOTUwMAorICBcZXZlcnlwYXIgPSB7fSUgZG9uJ3Qgd2FudCB0aGUgXGtlcm5cLXBhcmluZGVudCBmcm9tIGluZGVudGF0aW9uIHN1cHByZXNzaW9uLgorICAlCisgICUgU2VlIGlmIHRoZSBpbmRleCBmaWxlIGV4aXN0cyBhbmQgaXMgbm9uZW1wdHkuCisgICUgQ2hhbmdlIGNhdGNvZGUgb2YgQCBoZXJlIHNvIHRoYXQgaWYgdGhlIGluZGV4IGZpbGUgY29udGFpbnMKKyAgJSBcaW5pdGlhbCB7QH0KKyAgJSBhcyBpdHMgZmlyc3QgbGluZSwgVGVYIGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgbWlzbWF0Y2hlZCBicmFjZXMKKyAgJSAoYmVjYXVzZSBpdCB0aGlua3MgQH0gaXMgYSBjb250cm9sIHNlcXVlbmNlKS4KKyAgXGNhdGNvZGVgXEAgPSAxMQorICBcb3BlbmluIDEgXGpvYm5hbWUuIzFzCisgIFxpZmVvZiAxCisgICAgJSBcZW5kZG91YmxlY29sdW1ucyBnZXRzIGNvbmZ1c2VkIGlmIHRoZXJlIGlzIG5vIHRleHQgaW4gdGhlIGluZGV4LAorICAgICUgYW5kIGl0IGxvc2VzIHRoZSBjaGFwdGVyIHRpdGxlIGFuZCB0aGUgYXV4IGZpbGUgZW50cmllcyBmb3IgdGhlCisgICAgJSBpbmRleC4gIFRoZSBlYXNpZXN0IHdheSB0byBwcmV2ZW50IHRoaXMgcHJvYmxlbSBpcyB0byBtYWtlIHN1cmUKKyAgICAlIHRoZXJlIGlzIHNvbWUgdGV4dC4KKyAgICBccHV0d29yZEluZGV4Tm9uZXhpc3RlbnQKKyAgXGVsc2UKKyAgICAlCisgICAgJSBJZiB0aGUgaW5kZXggZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5LCB0aGVuIFxvcGVuaW4gbGVhdmVzIFxpZmVvZgorICAgICUgZmFsc2UuICBXZSBoYXZlIHRvIG1ha2UgVGVYIHRyeSB0byByZWFkIHNvbWV0aGluZyBmcm9tIHRoZSBmaWxlLCBzbworICAgICUgaXQgY2FuIGRpc2NvdmVyIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIGl0LgorICAgIFxyZWFkIDEgdG8gXHRlbXAKKyAgICBcaWZlb2YgMQorICAgICAgXHB1dHdvcmRJbmRleElzRW1wdHkKKyAgICBcZWxzZQorICAgICAgJSBJbmRleCBmaWxlcyBhcmUgYWxtb3N0IFRleGluZm8gc291cmNlLCBidXQgd2UgdXNlIFwgYXMgdGhlIGVzY2FwZQorICAgICAgJSBjaGFyYWN0ZXIuICBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gdXNlIEAsIGJ1dCB0aGF0J3MgdG9vIGJpZyBhIGNoYW5nZQorICAgICAgJSB0byBtYWtlIHJpZ2h0IG5vdy4KKyAgICAgIFxkZWZcaW5kZXhiYWNrc2xhc2h7XGJhY2tzbGFzaGN1cmZvbnR9JQorICAgICAgXGNhdGNvZGVgXFwgPSAwCisgICAgICBcZXNjYXBlY2hhciA9IGBcXAorICAgICAgXGJlZ2luZG91YmxlY29sdW1ucworICAgICAgXGlucHV0IFxqb2JuYW1lLiMxcworICAgICAgXGVuZGRvdWJsZWNvbHVtbnMKKyAgICBcZmkKKyAgXGZpCisgIFxjbG9zZWluIDEKK1xlbmRncm91cH0KKworJSBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgYnkgdGhlIHNvcnRlZCBpbmRleCBmaWxlIGl0c2VsZi4KKyUgQ2hhbmdlIHRoZW0gdG8gY29udHJvbCB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgaW5kZXguCisKK1xkZWZcaW5pdGlhbCMxe3slCisgICUgU29tZSBtaW5vciBmb250IGNoYW5nZXMgZm9yIHRoZSBzcGVjaWFsIGNoYXJhY3RlcnMuCisgIFxsZXRcdGVudHQ9XHNlY3R0IFxsZXRcdHQ9XHNlY3R0IFxsZXRcc2Y9XHNlY3R0CisgICUKKyAgJSBSZW1vdmUgYW55IGdsdWUgd2UgbWF5IGhhdmUsIHdlJ2xsIGJlIGluc2VydGluZyBvdXIgb3duLgorICBccmVtb3ZlbGFzdHNraXAKKyAgJQorICAlIFdlIGxpa2UgYnJlYWtzIGJlZm9yZSB0aGUgaW5kZXggaW5pdGlhbHMsIHNvIGluc2VydCBhIGJvbnVzLgorICBcbm9icmVhaworICBcdnNraXAgMHB0IHBsdXMgM1xiYXNlbGluZXNraXAKKyAgXHBlbmFsdHkgMAorICBcdnNraXAgMHB0IHBsdXMgLTNcYmFzZWxpbmVza2lwCisgICUKKyAgJSBUeXBlc2V0IHRoZSBpbml0aWFsLiAgTWFraW5nIHRoaXMgYWRkIHVwIHRvIGEgd2hvbGUgbnVtYmVyIG9mCisgICUgYmFzZWxpbmVza2lwcyBpbmNyZWFzZXMgdGhlIGNoYW5jZSBvZiB0aGUgZG90cyBsaW5pbmcgdXAgZnJvbSBjb2x1bW4KKyAgJSB0byBjb2x1bW4uICBJdCBzdGlsbCB3b24ndCBvZnRlbiBiZSBwZXJmZWN0LCBiZWNhdXNlIG9mIHRoZSBzdHJldGNoCisgICUgd2UgbmVlZCBiZWZvcmUgZWFjaCBlbnRyeSwgYnV0IGl0J3MgYmV0dGVyLgorICAlCisgICUgTm8gc2hyaW5rIGJlY2F1c2UgaXQgY29uZnVzZXMgXGJhbGFuY2Vjb2x1bW5zLgorICBcdnNraXAgMS42N1xiYXNlbGluZXNraXAgcGx1cyAuNVxiYXNlbGluZXNraXAKKyAgXGxlZnRsaW5le1xzZWNiZiAjMX0lCisgICUgRG8gb3VyIGJlc3Qgbm90IHRvIGJyZWFrIGFmdGVyIHRoZSBpbml0aWFsLgorICBcbm9icmVhaworICBcdnNraXAgLjMzXGJhc2VsaW5lc2tpcCBwbHVzIC4xXGJhc2VsaW5lc2tpcAorfX0KKworJSBcZW50cnkgdHlwZXNldHMgYSBwYXJhZ3JhcGggY29uc2lzdGluZyBvZiB0aGUgdGV4dCAoIzEpLCBkb3QgbGVhZGVycywgYW5kCislIHRoZW4gcGFnZSBudW1iZXIgKCMyKSBmbHVzaGVkIHRvIHRoZSByaWdodCBtYXJnaW4uICBJdCBpcyB1c2VkIGZvciBpbmRleAorJSBhbmQgdGFibGUgb2YgY29udGVudHMgZW50cmllcy4gIFRoZSBwYXJhZ3JhcGggaXMgaW5kZW50ZWQgYnkgXGxlZnRza2lwLgorJQorJSBBIHN0cmFpZ2h0Zm9yd2FyZCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBzdGFydCBsaWtlIHRoaXM6CislCVxkZWZcZW50cnkjMSMyey4uLgorJSBCdXQgdGhpcyBmcm96ZXMgdGhlIGNhdGNvZGVzIGluIHRoZSBhcmd1bWVudCwgYW5kIGNhbiBjYXVzZSBwcm9ibGVtcyB0bworJSBAY29kZSwgd2hpY2ggc2V0cyAtIGFjdGl2ZS4gIFRoaXMgcHJvYmxlbSB3YXMgZml4ZWQgYnkgYSBrbHVkZ2UtLS0KKyUgYGAtJycgd2FzIGFjdGl2ZSB0aHJvdWdob3V0IHdob2xlIGluZGV4LCBidXQgdGhpcyBpc24ndCByZWFsbHkgcmlnaHQuCislCislIFRoZSByaWdodCBzb2x1dGlvbiBpcyB0byBwcmV2ZW50IFxlbnRyeSBmcm9tIHN3YWxsb3dpbmcgdGhlIHdob2xlIHRleHQuCislICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1rYXNhbCwgMjFub3YwMworXGRlZlxlbnRyeXslCisgIFxiZWdpbmdyb3VwCisgICAgJQorICAgICUgU3RhcnQgYSBuZXcgcGFyYWdyYXBoIGlmIG5lY2Vzc2FyeSwgc28gb3VyIGFzc2lnbm1lbnRzIGJlbG93IGNhbid0CisgICAgJSBhZmZlY3QgcHJldmlvdXMgdGV4dC4KKyAgICBccGFyCisgICAgJQorICAgICUgRG8gbm90IGZpbGwgb3V0IHRoZSBsYXN0IGxpbmUgd2l0aCB3aGl0ZSBzcGFjZS4KKyAgICBccGFyZmlsbHNraXAgPSAwaW4KKyAgICAlCisgICAgJSBObyBleHRyYSBzcGFjZSBhYm92ZSB0aGlzIHBhcmFncmFwaC4KKyAgICBccGFyc2tpcCA9IDBpbgorICAgICUKKyAgICAlIERvIG5vdCBwcmVmZXIgYSBzZXBhcmF0ZSBsaW5lIGVuZGluZyB3aXRoIGEgaHlwaGVuIHRvIGZld2VyIGxpbmVzLgorICAgIFxmaW5hbGh5cGhlbmRlbWVyaXRzID0gMAorICAgICUKKyAgICAlIFxoYW5naW5kZW50IGlzIG9ubHkgcmVsZXZhbnQgd2hlbiB0aGUgZW50cnkgdGV4dCBhbmQgcGFnZSBudW1iZXIKKyAgICAlIGRvbid0IGJvdGggZml0IG9uIG9uZSBsaW5lLiAgSW4gdGhhdCBjYXNlLCBib2Igc3VnZ2VzdHMgc3RhcnRpbmcgdGhlCisgICAgJSBkb3RzIHByZXR0eSBmYXIgb3ZlciBvbiB0aGUgbGluZS4gIFVuZm9ydHVuYXRlbHksIGEgbGFyZ2UKKyAgICAlIGluZGVudGF0aW9uIGxvb2tzIHdyb25nIHdoZW4gdGhlIGVudHJ5IHRleHQgaXRzZWxmIGlzIGJyb2tlbiBhY3Jvc3MKKyAgICAlIGxpbmVzLiAgU28gd2UgdXNlIGEgc21hbGwgaW5kZW50YXRpb24gYW5kIHB1dCB1cCB3aXRoIGxvbmcgbGVhZGVycy4KKyAgICAlCisgICAgJSBcaGFuZ2FmdGVyIGlzIHJlc2V0IHRvIDEgKHdoaWNoIGlzIHRoZSB2YWx1ZSB3ZSB3YW50KSBhdCB0aGUgc3RhcnQKKyAgICAlIG9mIGVhY2ggcGFyYWdyYXBoLCBzbyB3ZSBuZWVkIG5vdCBkbyBhbnl0aGluZyB3aXRoIHRoYXQuCisgICAgXGhhbmdpbmRlbnQgPSAyZW0KKyAgICAlCisgICAgJSBXaGVuIHRoZSBlbnRyeSB0ZXh0IG5lZWRzIHRvIGJlIGJyb2tlbiwganVzdCBmaWxsIG91dCB0aGUgZmlyc3QgbGluZQorICAgICUgd2l0aCBibGFuayBzcGFjZS4KKyAgICBccmlnaHRza2lwID0gMHB0IHBsdXMxZmlsCisgICAgJQorICAgICUgQSBiaXQgb2Ygc3RyZXRjaCBiZWZvcmUgZWFjaCBlbnRyeSBmb3IgdGhlIGJlbmVmaXQgb2YgYmFsYW5jaW5nCisgICAgJSBjb2x1bW5zLgorICAgIFx2c2tpcCAwcHQgcGx1czFwdAorICAgICUKKyAgICAlIFN3YWxsb3cgdGhlIGxlZnQgYnJhY2Ugb2YgdGhlIHRleHQgKGZpcnN0IHBhcmFtZXRlcik6CisgICAgXGFmdGVyYXNzaWdubWVudFxkb2VudHJ5CisgICAgXGxldFx0ZW1wID0KK30KK1xkZWZcZG9lbnRyeXslCisgICAgXGJncm91cCAlIEluc3RlYWQgb2YgdGhlIHN3YWxsb3dlZCBicmFjZS4KKyAgICAgIFxub2luZGVudAorICAgICAgXGFmdGVyZ3JvdXBcZmluaXNoZW50cnkKKyAgICAgICUgQW5kIG5vdyBjb21lcyB0aGUgdGV4dCBvZiB0aGUgZW50cnkuCit9CitcZGVmXGZpbmlzaGVudHJ5IzF7JQorICAgICUgIzEgaXMgdGhlIHBhZ2UgbnVtYmVyLgorICAgICUKKyAgICAlIFRoZSBmb2xsb3dpbmcgaXMga2x1ZGdlZCB0byBub3Qgb3V0cHV0IGEgbGluZSBvZiBkb3RzIGluIHRoZSBpbmRleCBpZgorICAgICUgdGhlcmUgYXJlIG5vIHBhZ2UgbnVtYmVycy4gIFRoZSBuZXh0IHBlcnNvbiB3aG8gYnJlYWtzIHRoaXMgd2lsbCBiZQorICAgICUgY3Vyc2VkIGJ5IGEgVW5peCBkYWVtb24uCisgICAgXGRlZlx0ZW1wYXt7XHJtIH19JQorICAgIFxkZWZcdGVtcGJ7IzF9JQorICAgIFxlZGVmXHRlbXBje1x0ZW1wYX0lCisgICAgXGVkZWZcdGVtcGR7XHRlbXBifSUKKyAgICBcaWZ4XHRlbXBjXHRlbXBkCisgICAgICBcICUKKyAgICBcZWxzZQorICAgICAgJQorICAgICAgJSBJZiB3ZSBtdXN0LCBwdXQgdGhlIHBhZ2UgbnVtYmVyIG9uIGEgbGluZSBvZiBpdHMgb3duLCBhbmQgZmlsbCBvdXQKKyAgICAgICUgdGhpcyBsaW5lIHdpdGggYmxhbmsgc3BhY2UuICAoVGhlIFxoZmlsIGlzIG92ZXJ3aGVsbWVkIHdpdGggdGhlCisgICAgICAlIGZpbGwgbGVhZGVycyBnbHVlIGluIFxpbmRleGRvdGZpbGwgaWYgdGhlIHBhZ2UgbnVtYmVyIGRvZXMgZml0LikKKyAgICAgIFxoZmlsXHBlbmFsdHk1MAorICAgICAgXG51bGxcbm9icmVha1xpbmRleGRvdGZpbGwgJSBIYXZlIGxlYWRlcnMgYmVmb3JlIHRoZSBwYWdlIG51bWJlci4KKyAgICAgICUKKyAgICAgICUgVGhlIGBcICcgaGVyZSBpcyByZW1vdmVkIGJ5IHRoZSBpbXBsaWNpdCBcdW5za2lwIHRoYXQgVGVYIGRvZXMgYXMKKyAgICAgICUgcGFydCBvZiAodGhlIHByaW1pdGl2ZSkgXHBhci4gIFdpdGhvdXQgaXQsIGEgc3B1cmlvdXMgdW5kZXJmdWxsCisgICAgICAlIFxoYm94IGVuc3Vlcy4KKyAgICAgIFxpZnBkZgorCVxwZGZnZXR0b2tzIzEuJQorCVwgXHRoZVx0b2tzQQorICAgICAgXGVsc2UKKwlcICMxJQorICAgICAgXGZpCisgICAgXGZpCisgICAgXHBhcgorICBcZW5kZ3JvdXAKK30KKworJSBMaWtlIFxkb3RmaWxsIGV4Y2VwdCB0YWtlcyBhdCBsZWFzdCAxIGVtLgorXGRlZlxpbmRleGRvdGZpbGx7XGNsZWFkZXJzCisgIFxoYm94eyRcbWF0aHN1cnJvdW5kPTBwdCBcbWtlcm4xLjVtdSAke1xpdCAufSQgXG1rZXJuMS41bXUkfVxoc2tpcCAxZW0gcGx1cyAxZmlsbH0KKworXGRlZlxwcmltYXJ5ICMxe1xsaW5leyMxXGhmaWx9fQorCitcbmV3c2tpcFxzZWNvbmRhcnlpbmRlbnQgXHNlY29uZGFyeWluZGVudD0wLjVjbQorXGRlZlxzZWNvbmRhcnkjMSMye3slCisgIFxwYXJmaWxsc2tpcD0waW4KKyAgXHBhcnNraXA9MGluCisgIFxoYW5naW5kZW50PTFpbgorICBcaGFuZ2FmdGVyPTEKKyAgXG5vaW5kZW50XGhza2lwXHNlY29uZGFyeWluZGVudFxoYm94eyMxfVxpbmRleGRvdGZpbGwKKyAgXGlmcGRmCisgICAgXHBkZmdldHRva3MjMi5cIFx0aGVcdG9rc0EgJSBUaGUgcGFnZSBudW1iZXIgZW5kcyB0aGUgcGFyYWdyYXBoLgorICBcZWxzZQorICAgICMyCisgIFxmaQorICBccGFyCit9fQorCislIERlZmluZSB0d28tY29sdW1uIG1vZGUsIHdoaWNoIHdlIHVzZSB0byB0eXBlc2V0IGluZGV4ZXMuCislIEFkYXB0ZWQgZnJvbSB0aGUgVGVYYm9vaywgcGFnZSA0MTYsIHdoaWNoIGlzIHRvIHNheSwKKyUgdGhlIG1hbm1hYy50ZXggZm9ybWF0IHVzZWQgdG8gcHJpbnQgdGhlIFRlWGJvb2sgaXRzZWxmLgorXGNhdGNvZGVgXEA9MTEKKworXG5ld2JveFxwYXJ0aWFscGFnZQorXG5ld2RpbWVuXGRvdWJsZWNvbHVtbmhzaXplCisKK1xkZWZcYmVnaW5kb3VibGVjb2x1bW5ze1xiZWdpbmdyb3VwICUgZW5kZWQgYnkgXGVuZGRvdWJsZWNvbHVtbnMKKyAgJSBHcmFiIGFueSBzaW5nbGUtY29sdW1uIG1hdGVyaWFsIGFib3ZlIHVzLgorICBcb3V0cHV0ID0geyUKKyAgICAlCisgICAgJSBIZXJlIGlzIGEgcG9zc2liaWxpdHkgbm90IGZvcmVzZWVuIGluIG1hbm1hYzogaWYgd2UgYWNjdW11bGF0ZSBhCisgICAgJSB3aG9sZSBsb3Qgb2YgbWF0ZXJpYWwsIHdlIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIHRoaXMgXG91dHB1dAorICAgICUgcm91dGluZSB0d2ljZSBpbiBhIHJvdyAoc2VlIHRoZSBkb3VibGVjb2wtbG9zZSB0ZXN0LCB3aGljaCBpcworICAgICUgZXNzZW50aWFsbHkgYSBjb3VwbGUgb2YgaW5kZXhlcyB3aXRoIEBzZXRjaGFwdGVybmV3cGFnZSBvZmYpLiAgSW4KKyAgICAlIHRoYXQgY2FzZSB3ZSBqdXN0IHNoaXAgb3V0IHdoYXQgaXMgaW4gXHBhcnRpYWxwYWdlIHdpdGggdGhlIG5vcm1hbAorICAgICUgb3V0cHV0IHJvdXRpbmUuICBHZW5lcmFsbHksIFxwYXJ0aWFscGFnZSB3aWxsIGJlIGVtcHR5IHdoZW4gdGhpcworICAgICUgcnVucyBhbmQgdGhpcyB3aWxsIGJlIGEgbm8tb3AuICBTZWUgdGhlIGluZGV4c3ByZWFkLnRleCB0ZXN0IGNhc2UuCisgICAgXGlmdm9pZFxwYXJ0aWFscGFnZSBcZWxzZQorICAgICAgXG9uZXBhZ2VvdXR7XHBhZ2Vjb250ZW50c1xwYXJ0aWFscGFnZX0lCisgICAgXGZpCisgICAgJQorICAgIFxnbG9iYWxcc2V0Ym94XHBhcnRpYWxwYWdlID0gXHZib3h7JQorICAgICAgJSBVbnZib3ggdGhlIG1haW4gb3V0cHV0IHBhZ2UuCisgICAgICBcdW52Ym94XFBBR0UKKyAgICAgIFxrZXJuLVx0b3Bza2lwIFxrZXJuXGJhc2VsaW5lc2tpcAorICAgIH0lCisgIH0lCisgIFxlamVjdCAlIHJ1biB0aGF0IG91dHB1dCByb3V0aW5lIHRvIHNldCBccGFydGlhbHBhZ2UKKyAgJQorICAlIFVzZSB0aGUgZG91YmxlLWNvbHVtbiBvdXRwdXQgcm91dGluZSBmb3Igc3Vic2VxdWVudCBwYWdlcy4KKyAgXG91dHB1dCA9IHtcZG91YmxlY29sdW1ub3V0fSUKKyAgJQorICAlIENoYW5nZSB0aGUgcGFnZSBzaXplIHBhcmFtZXRlcnMuICBXZSBjb3VsZCBkbyB0aGlzIG9uY2Ugb3V0c2lkZSB0aGlzCisgICUgcm91dGluZSwgaW4gZWFjaCBvZiBAc21hbGxib29rLCBAYWZvdXJwYXBlciwgYW5kIHRoZSBkZWZhdWx0IDguNXgxMQorICAlIGZvcm1hdCwgYnV0IHRoZW4gd2UgcmVwZWF0IHRoZSBzYW1lIGNvbXB1dGF0aW9uLiAgUmVwZWF0aW5nIGEgY291cGxlCisgICUgb2YgYXNzaWdubWVudHMgb25jZSBwZXIgaW5kZXggaXMgY2xlYXJseSBtZWFuaW5nbGVzcyBmb3IgdGhlCisgICUgZXhlY3V0aW9uIHRpbWUsIHNvIHdlIG1heSBhcyB3ZWxsIGRvIGl0IGluIG9uZSBwbGFjZS4KKyAgJQorICAlIEZpcnN0IHdlIGhhbHZlIHRoZSBsaW5lIGxlbmd0aCwgbGVzcyBhIGxpdHRsZSBmb3IgdGhlIGd1dHRlciBiZXR3ZWVuCisgICUgdGhlIGNvbHVtbnMuICBXZSBjb21wdXRlIHRoZSBndXR0ZXIgYmFzZWQgb24gdGhlIGxpbmUgbGVuZ3RoLCBzbyBpdAorICAlIGNoYW5nZXMgYXV0b21hdGljYWxseSB3aXRoIHRoZSBwYXBlciBmb3JtYXQuICBUaGUgbWFnaWMgY29uc3RhbnQKKyAgJSBiZWxvdyBpcyBjaG9zZW4gc28gdGhhdCB0aGUgZ3V0dGVyIGhhcyB0aGUgc2FtZSB2YWx1ZSAod2VsbCwgKy08MXB0KQorICAlIGFzIGl0IGRpZCB3aGVuIHdlIGhhcmQtY29kZWQgaXQuCisgICUKKyAgJSBXZSBwdXQgdGhlIHJlc3VsdCBpbiBhIHNlcGFyYXRlIHJlZ2lzdGVyLCBcZG91YmxlY29sdW1oc2l6ZSwgc28gd2UKKyAgJSBjYW4gcmVzdG9yZSBpdCBpbiBccGFnZXNvZmFyLCBhZnRlciBcaHNpemUgaXRzZWxmIGhhcyAocG90ZW50aWFsbHkpCisgICUgYmVlbiBjbG9iYmVyZWQuCisgICUKKyAgXGRvdWJsZWNvbHVtbmhzaXplID0gXGhzaXplCisgICAgXGFkdmFuY2VcZG91YmxlY29sdW1uaHNpemUgYnkgLS4wNDE1NFxoc2l6ZQorICAgIFxkaXZpZGVcZG91YmxlY29sdW1uaHNpemUgYnkgMgorICBcaHNpemUgPSBcZG91YmxlY29sdW1uaHNpemUKKyAgJQorICAlIERvdWJsZSB0aGUgXHZzaXplIGFzIHdlbGwuICAoV2UgZG9uJ3QgbmVlZCBhIHNlcGFyYXRlIHJlZ2lzdGVyIGhlcmUsCisgICUgc2luY2Ugbm9ib2R5IGNsb2JiZXJzIFx2c2l6ZS4pCisgIFx2c2l6ZSA9IDJcdnNpemUKK30KKworJSBUaGUgZG91YmxlLWNvbHVtbiBvdXRwdXQgcm91dGluZSBmb3IgYWxsIGRvdWJsZS1jb2x1bW4gcGFnZXMgZXhjZXB0CislIHRoZSBsYXN0LgorJQorXGRlZlxkb3VibGVjb2x1bW5vdXR7JQorICBcc3BsaXR0b3Bza2lwPVx0b3Bza2lwIFxzcGxpdG1heGRlcHRoPVxtYXhkZXB0aAorICAlIEdldCB0aGUgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUgZG91YmxlIGNvbHVtbnMgLS0gdGhlIG5vcm1hbAorICAlICh1bmRvdWJsZWQpIHBhZ2UgaGVpZ2h0IG1pbnVzIGFueSBtYXRlcmlhbCBsZWZ0IG92ZXIgZnJvbSB0aGUKKyAgJSBwcmV2aW91cyBwYWdlLgorICBcZGltZW5AID0gXHZzaXplCisgIFxkaXZpZGVcZGltZW5AIGJ5IDIKKyAgXGFkdmFuY2VcZGltZW5AIGJ5IC1caHRccGFydGlhbHBhZ2UKKyAgJQorICAlIGJveDAgd2lsbCBiZSB0aGUgbGVmdC1oYW5kIGNvbHVtbiwgYm94MiB0aGUgcmlnaHQuCisgIFxzZXRib3gwPVx2c3BsaXQyNTUgdG9cZGltZW5AIFxzZXRib3gyPVx2c3BsaXQyNTUgdG9cZGltZW5ACisgIFxvbmVwYWdlb3V0XHBhZ2Vzb2ZhcgorICBcdW52Ym94MjU1CisgIFxwZW5hbHR5XG91dHB1dHBlbmFsdHkKK30KKyUKKyUgUmUtb3V0cHV0IHRoZSBjb250ZW50cyBvZiB0aGUgb3V0cHV0IHBhZ2UgLS0gYW55IHByZXZpb3VzIG1hdGVyaWFsLAorJSBmb2xsb3dlZCBieSB0aGUgdHdvIGJveGVzIHdlIGp1c3Qgc3BsaXQsIGluIGJveDAgYW5kIGJveDIuCitcZGVmXHBhZ2Vzb2ZhcnslCisgIFx1bnZib3hccGFydGlhbHBhZ2UKKyAgJQorICBcaHNpemUgPSBcZG91YmxlY29sdW1uaHNpemUKKyAgXHdkMD1caHNpemUgXHdkMj1caHNpemUKKyAgXGhib3ggdG9ccGFnZXdpZHRoe1xib3gwXGhmaWxcYm94Mn0lCit9CislCislIEFsbCBkb25lIHdpdGggZG91YmxlIGNvbHVtbnMuCitcZGVmXGVuZGRvdWJsZWNvbHVtbnN7JQorICBcb3V0cHV0ID0geyUKKyAgICAlIFNwbGl0IHRoZSBsYXN0IG9mIHRoZSBkb3VibGUtY29sdW1uIG1hdGVyaWFsLiAgTGVhdmUgaXQgb24gdGhlCisgICAgJSBjdXJyZW50IHBhZ2UsIG5vIGF1dG9tYXRpYyBwYWdlIGJyZWFrLgorICAgIFxiYWxhbmNlY29sdW1ucworICAgICUKKyAgICAlIElmIHdlIGVuZCB1cCBzcGxpdHRpbmcgdG9vIG11Y2ggbWF0ZXJpYWwgZm9yIHRoZSBjdXJyZW50IHBhZ2UsCisgICAgJSB0aG91Z2gsIHRoZXJlIHdpbGwgYmUgYW5vdGhlciBwYWdlIGJyZWFrIHJpZ2h0IGFmdGVyIHRoaXMgXG91dHB1dAorICAgICUgaW52b2NhdGlvbiBlbmRzLiAgSGF2aW5nIGNhbGxlZCBcYmFsYW5jZWNvbHVtbnMgb25jZSwgd2UgZG8gbm90CisgICAgJSB3YW50IHRvIGNhbGwgaXQgYWdhaW4uICBUaGVyZWZvcmUsIHJlc2V0IFxvdXRwdXQgdG8gaXRzIG5vcm1hbAorICAgICUgZGVmaW5pdGlvbiByaWdodCBhd2F5LiAgKFdlIGhvcGUgXGJhbGFuY2Vjb2x1bW5zIHdpbGwgbmV2ZXIgYmUKKyAgICAlIGNhbGxlZCBvbiB0byBiYWxhbmNlIHRvbyBtdWNoIG1hdGVyaWFsLCBidXQgaWYgaXQgaXMsIHRoaXMgbWFrZXMKKyAgICAlIHRoZSBvdXRwdXQgc29tZXdoYXQgbW9yZSBwYWxhdGFibGUuKQorICAgIFxnbG9iYWxcb3V0cHV0ID0ge1xvbmVwYWdlb3V0e1xwYWdlY29udGVudHNcUEFHRX19JQorICB9JQorICBcZWplY3QKKyAgXGVuZGdyb3VwICUgc3RhcnRlZCBpbiBcYmVnaW5kb3VibGVjb2x1bW5zCisgICUKKyAgJSBccGFnZWdvYWwgd2FzIHNldCB0byB0aGUgZG91YmxlZCBcdnNpemUgYWJvdmUsIHNpbmNlIHdlIHJlc3RhcnRlZAorICAlIHRoZSBjdXJyZW50IHBhZ2UuICBXZSdyZSBub3cgYmFjayB0byBub3JtYWwgc2luZ2xlLWNvbHVtbgorICAlIHR5cGVzZXR0aW5nLCBzbyByZXNldCBccGFnZWdvYWwgdG8gdGhlIG5vcm1hbCBcdnNpemUgKGFmdGVyIHRoZQorICAlIFxlbmRncm91cCB3aGVyZSBcdnNpemUgZ290IHJlc3RvcmVkKS4KKyAgXHBhZ2Vnb2FsID0gXHZzaXplCit9CislCislIENhbGxlZCBhdCB0aGUgZW5kIG9mIHRoZSBkb3VibGUgY29sdW1uIG1hdGVyaWFsLgorXGRlZlxiYWxhbmNlY29sdW1uc3slCisgIFxzZXRib3gwID0gXHZib3h7XHVudmJveDI1NX0lIGxpa2UgXGJveDI1NSBidXQgbW9yZSBlZmZpY2llbnQsIHNlZSBwLjEyMC4KKyAgXGRpbWVuQCA9IFxodDAKKyAgXGFkdmFuY2VcZGltZW5AIGJ5IFx0b3Bza2lwCisgIFxhZHZhbmNlXGRpbWVuQCBieS1cYmFzZWxpbmVza2lwCisgIFxkaXZpZGVcZGltZW5AIGJ5IDIgJSB0YXJnZXQgdG8gc3BsaXQgdG8KKyAgJWRlYnVnXG1lc3NhZ2V7ZmluYWwgMi1jb2x1bW4gbWF0ZXJpYWwgaGVpZ2h0PVx0aGVcaHQwLCB0YXJnZXQ9XHRoZVxkaW1lbkAufSUKKyAgXHNwbGl0dG9wc2tpcCA9IFx0b3Bza2lwCisgICUgTG9vcCB1bnRpbCB3ZSBnZXQgYSBkZWNlbnQgYnJlYWtwb2ludC4KKyAgeyUKKyAgICBcdmJhZG5lc3MgPSAxMDAwMAorICAgIFxsb29wCisgICAgICBcZ2xvYmFsXHNldGJveDMgPSBcY29weTAKKyAgICAgIFxnbG9iYWxcc2V0Ym94MSA9IFx2c3BsaXQzIHRvIFxkaW1lbkAKKyAgICBcaWZkaW1caHQzPlxkaW1lbkAKKyAgICAgIFxnbG9iYWxcYWR2YW5jZVxkaW1lbkAgYnkgMXB0CisgICAgXHJlcGVhdAorICB9JQorICAlZGVidWdcbWVzc2FnZXtzcGxpdCB0byBcdGhlXGRpbWVuQCwgY29sdW1uIGhlaWdodHM6IFx0aGVcaHQxLCBcdGhlXGh0My59JQorICBcc2V0Ym94MD1cdmJveCB0b1xkaW1lbkB7XHVudmJveDF9JQorICBcc2V0Ym94Mj1cdmJveCB0b1xkaW1lbkB7XHVudmJveDN9JQorICAlCisgIFxwYWdlc29mYXIKK30KK1xjYXRjb2RlYFxAID0gXG90aGVyCisKKworXG1lc3NhZ2V7c2VjdGlvbmluZyx9CislIENoYXB0ZXJzLCBzZWN0aW9ucywgZXRjLgorCislIFx1bm51bWJlcmVkbm8gaXMgYW4gb3h5bW9yb24sIG9mIGNvdXJzZS4gIEJ1dCB3ZSBjb3VudCB0aGUgdW5udW1iZXJlZAorJSBzZWN0aW9ucyBzbyB0aGF0IHdlIGNhbiByZWZlciB0byB0aGVtIHVuYW1iaWd1b3VzbHkgaW4gdGhlIHBkZgorJSBvdXRsaW5lcyBieSB0aGVpciAic2VjdGlvbiBudW1iZXIiLiAgV2UgYXZvaWQgY29sbGlzaW9ucyB3aXRoIGNoYXB0ZXIKKyUgbnVtYmVycyBieSBzdGFydGluZyB0aGVtIGF0IDEwMDAwLiAgKElmIGEgZG9jdW1lbnQgZXZlciBoYXMgMTAwMDAKKyUgY2hhcHRlcnMsIHdlJ3JlIGluIHRyb3VibGUgYW55d2F5LCBJJ20gc3VyZS4pCitcbmV3Y291bnRcdW5udW1iZXJlZG5vIFx1bm51bWJlcmVkbm8gPSAxMDAwMAorXG5ld2NvdW50XGNoYXBubworXG5ld2NvdW50XHNlY25vICAgICAgICBcc2Vjbm89MAorXG5ld2NvdW50XHN1YnNlY25vICAgICBcc3Vic2Vjbm89MAorXG5ld2NvdW50XHN1YnN1YnNlY25vICBcc3Vic3Vic2Vjbm89MAorCislIFRoaXMgY291bnRlciBpcyBmdW5ueSBzaW5jZSBpdCBjb3VudHMgdGhyb3VnaCBjaGFyY29kZXMgb2YgbGV0dGVycyBBLCBCLCAuLi4KK1xuZXdjb3VudFxhcHBlbmRpeG5vICBcYXBwZW5kaXhubyA9IGBcQAorJQorJSBcZGVmXGFwcGVuZGl4bGV0dGVye1xjaGFyXHRoZVxhcHBlbmRpeG5vfQorJSBXZSBkbyB0aGUgZm9sbG93aW5nIHVnbHkgY29uZGl0aW9uYWwgaW5zdGVhZCBvZiB0aGUgYWJvdmUgc2ltcGxlCislIGNvbnN0cnVjdCBmb3IgdGhlIHNha2Ugb2YgcGRmdGV4LCB3aGljaCBuZWVkcyB0aGUgYWN0dWFsCislIGxldHRlciBpbiB0aGUgZXhwYW5zaW9uLCBub3QganVzdCB0eXBlc2V0LgorJQorXGRlZlxhcHBlbmRpeGxldHRlcnslCisgIFxpZm51bVxhcHBlbmRpeG5vPWBBIEElCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEIgQiUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gQyBDJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBEIEQlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEUgRSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gRiBGJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBHIEclCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEggSCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gSSBJJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBKIEolCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YEsgSyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gTCBMJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBNIE0lCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YE4gTiUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gTyBPJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBQIFAlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFEgUSUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gUiBSJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBTIFMlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFQgVCUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gVSBVJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBWIFYlCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFcgVyUKKyAgXGVsc2VcaWZudW1cYXBwZW5kaXhubz1gWCBYJQorICBcZWxzZVxpZm51bVxhcHBlbmRpeG5vPWBZIFklCisgIFxlbHNlXGlmbnVtXGFwcGVuZGl4bm89YFogWiUKKyAgJSBUaGUgXHRoZSBpcyBuZWNlc3NhcnksIGRlc3BpdGUgYXBwZWFyYW5jZXMsIGJlY2F1c2UgXGFwcGVuZGl4bGV0dGVyIGlzCisgICUgZXhwYW5kZWQgd2hpbGUgd3JpdGluZyB0aGUgLnRvYyBmaWxlLiAgXGNoYXJcYXBwZW5kaXhubyBpcyBub3QKKyAgJSBleHBhbmRhYmxlLCB0aHVzIGl0IGlzIHdyaXR0ZW4gbGl0ZXJhbGx5LCB0aHVzIGFsbCBhcHBlbmRpeGVzIGNvbWUgb3V0CisgICUgd2l0aCB0aGUgc2FtZSBsZXR0ZXIgKG9yIEApIGluIHRoZSB0b2Mgd2l0aG91dCBpdC4KKyAgXGVsc2VcY2hhclx0aGVcYXBwZW5kaXhubworICBcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmlcZmkKKyAgXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpXGZpfQorCislIEVhY2ggQGNoYXB0ZXIgZGVmaW5lcyB0aGlzIGFzIHRoZSBuYW1lIG9mIHRoZSBjaGFwdGVyLgorJSBwYWdlIGhlYWRpbmdzIGFuZCBmb290aW5ncyBjYW4gdXNlIGl0LiAgQHNlY3Rpb24gZG9lcyBsaWtld2lzZS4KKyUgSG93ZXZlciwgdGhleSBhcmUgbm90IHJlbGlhYmxlLCBiZWNhdXNlIHdlIGRvbid0IHVzZSBtYXJrcy4KK1xkZWZcdGhpc2NoYXB0ZXJ7fQorXGRlZlx0aGlzc2VjdGlvbnt9CisKK1xuZXdjb3VudFxhYnNzZWNsZXZlbCAlIHVzZWQgdG8gY2FsY3VsYXRlIHByb3BlciBoZWFkaW5nIGxldmVsCitcbmV3Y291bnRcc2VjYmFzZVxzZWNiYXNlPTAgJSBAcmFpc2VzZWN0aW9ucy9AbG93ZXJzZWN0aW9ucyBtb2RpZnkgdGhpcyBjb3VudAorCislIEByYWlzZXNlY3Rpb25zOiB0cmVhdCBAc2VjdGlvbiBhcyBjaGFwdGVyLCBAc3Vic2VjdGlvbiBhcyBzZWN0aW9uLCBldGMuCitcZGVmXHJhaXNlc2VjdGlvbnN7XGdsb2JhbFxhZHZhbmNlXHNlY2Jhc2UgYnkgLTF9CitcbGV0XHVwPVxyYWlzZXNlY3Rpb25zICUgb3JpZ2luYWwgQkZveCBuYW1lCisKKyUgQGxvd2Vyc2VjdGlvbnM6IHRyZWF0IEBjaGFwdGVyIGFzIHNlY3Rpb24sIEBzZWN0aW9uIGFzIHN1YnNlY3Rpb24sIGV0Yy4KK1xkZWZcbG93ZXJzZWN0aW9uc3tcZ2xvYmFsXGFkdmFuY2Vcc2VjYmFzZSBieSAxfQorXGxldFxkb3duPVxsb3dlcnNlY3Rpb25zICUgb3JpZ2luYWwgQkZveCBuYW1lCisKKyUgd2Ugb25seSBoYXZlIHN1YnN1Yi4KK1xjaGFyZGVmXG1heHNlY2xldmVsID0gMworJQorJSBBIG51bWJlcmVkIHNlY3Rpb24gd2l0aGluIGFuIHVubnVtYmVyZWQgY2hhbmdlcyB0byB1bm51bWJlcmVkIHRvby4KKyUgVG8gYWNoaXZlIHRoaXMsIHJlbWVtYmVyIHRoZSAiYmlnZ2VzdCIgdW5udW0uIHNlYy4gd2UgYXJlIGN1cnJlbnRseSBpbjoKK1xjaGFyZGVmXHVubWxldmVsID0gXG1heHNlY2xldmVsCislCislIFRyYWNlIHdoZXRoZXIgdGhlIGN1cnJlbnQgY2hhcHRlciBpcyBhbiBhcHBlbmRpeCBvciBub3Q6CislIFxjaGFwaGVhZHR5cGUgaXMgIk4iIG9yICJBIiwgdW5udW1iZXJlZCBjaGFwdGVycyBhcmUgaWdub3JlZC4KK1xkZWZcY2hhcGhlYWR0eXBle059CisKKyUgQ2hvb3NlIGEgaGVhZGluZyBtYWNybworJSAjMSBpcyBoZWFkaW5nIHR5cGUKKyUgIzIgaXMgaGVhZGluZyBsZXZlbAorJSAjMyBpcyB0ZXh0IGZvciBoZWFkaW5nCitcZGVmXGdlbmhlYWQjMSMyIzN7JQorICAlIENvbXB1dGUgdGhlIGFicy4gc2VjLiBsZXZlbDoKKyAgXGFic3NlY2xldmVsPSMyCisgIFxhZHZhbmNlXGFic3NlY2xldmVsIGJ5IFxzZWNiYXNlCisgICUgTWFrZSBzdXJlIFxhYnNzZWNsZXZlbCBkb2Vzbid0IGZhbGwgb3V0c2lkZSB0aGUgcmFuZ2U6CisgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPCAwCisgICAgXGFic3NlY2xldmVsID0gMAorICBcZWxzZQorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPiAzCisgICAgICBcYWJzc2VjbGV2ZWwgPSAzCisgICAgXGZpCisgIFxmaQorICAlIFRoZSBoZWFkaW5nIHR5cGU6CisgIFxkZWZcaGVhZHR5cGV7IzF9JQorICBcaWYgXGhlYWR0eXBlIFUlCisgICAgXGlmbnVtIFxhYnNzZWNsZXZlbCA8IFx1bm1sZXZlbAorICAgICAgXGNoYXJkZWZcdW5tbGV2ZWwgPSBcYWJzc2VjbGV2ZWwKKyAgICBcZmkKKyAgXGVsc2UKKyAgICAlIENoZWNrIGZvciBhcHBlbmRpeCBzZWN0aW9uczoKKyAgICBcaWZudW0gXGFic3NlY2xldmVsID0gMAorICAgICAgXGVkZWZcY2hhcGhlYWR0eXBle1xoZWFkdHlwZX0lCisgICAgXGVsc2UKKyAgICAgIFxpZiBcaGVhZHR5cGUgQVxpZiBcY2hhcGhlYWR0eXBlIE4lCisJXGVycm1lc3NhZ2V7QGFwcGVuZGl4Li4uIHdpdGhpbiBhIG5vbi1hcHBlbmRpeCBjaGFwdGVyfSUKKyAgICAgIFxmaVxmaQorICAgIFxmaQorICAgICUgQ2hlY2sgZm9yIG51bWJlcmVkIHdpdGhpbiB1bm51bWJlcmVkOgorICAgIFxpZm51bSBcYWJzc2VjbGV2ZWwgPiBcdW5tbGV2ZWwKKyAgICAgIFxkZWZcaGVhZHR5cGV7VX0lCisgICAgXGVsc2UKKyAgICAgIFxjaGFyZGVmXHVubWxldmVsID0gMworICAgIFxmaQorICBcZmkKKyAgJSBOb3cgcHJpbnQgdGhlIGhlYWRpbmc6CisgIFxpZiBcaGVhZHR5cGUgVSUKKyAgICBcaWZjYXNlXGFic3NlY2xldmVsCisJXHVubnVtYmVyZWR6enp7IzN9JQorICAgIFxvciBcdW5udW1iZXJlZHNlY3p6ensjM30lCisgICAgXG9yIFx1bm51bWJlcmVkc3Vic2Vjenp6eyMzfSUKKyAgICBcb3IgXHVubnVtYmVyZWRzdWJzdWJzZWN6enp7IzN9JQorICAgIFxmaQorICBcZWxzZQorICAgIFxpZiBcaGVhZHR5cGUgQSUKKyAgICAgIFxpZmNhc2VcYWJzc2VjbGV2ZWwKKwkgIFxhcHBlbmRpeHp6ensjM30lCisgICAgICBcb3IgXGFwcGVuZGl4c2VjdGlvbnp6ensjM30lCisgICAgICBcb3IgXGFwcGVuZGl4c3Vic2Vjenp6eyMzfSUKKyAgICAgIFxvciBcYXBwZW5kaXhzdWJzdWJzZWN6enp7IzN9JQorICAgICAgXGZpCisgICAgXGVsc2UKKyAgICAgIFxpZmNhc2VcYWJzc2VjbGV2ZWwKKwkgIFxjaGFwdGVyenp6eyMzfSUKKyAgICAgIFxvciBcc2Vjenp6eyMzfSUKKyAgICAgIFxvciBcbnVtYmVyZWRzdWJzZWN6enp7IzN9JQorICAgICAgXG9yIFxudW1iZXJlZHN1YnN1YnNlY3p6ensjM30lCisgICAgICBcZmkKKyAgICBcZmkKKyAgXGZpCisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgYW4gaW50ZXJmYWNlOgorXGRlZlxudW1oZWFke1xnZW5oZWFkIE59CitcZGVmXGFwcGhlYWR7XGdlbmhlYWQgQX0KK1xkZWZcdW5ubWhlYWR7XGdlbmhlYWQgVX0KKworJSBAY2hhcHRlciwgQGFwcGVuZGl4LCBAdW5udW1iZXJlZC4gIEluY3JlbWVudCB0b3AtbGV2ZWwgY291bnRlciwgcmVzZXQKKyUgYWxsIGxvd2VyLWxldmVsIHNlY3Rpb25pbmcgY291bnRlcnMgdG8gemVyby4KKyUKKyUgQWxzbyBzZXQgXGNoYXBsZXZlbHByZWZpeCwgd2hpY2ggd2UgcHJlcGVuZCB0byBAZmxvYXQgc2VxdWVuY2UgbnVtYmVycworJSAoZS5nLiwgZmlndXJlcyksIHEudi4gIEJ5IGRlZmF1bHQgKGJlZm9yZSBhbnkgY2hhcHRlciksIHRoYXQgaXMgZW1wdHkuCitcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorJQorXG91dGVyXHBhcnNlYXJnZGVmXGNoYXB0ZXJ7XG51bWhlYWQweyMxfX0gJSBub3JtYWxseSBudW1oZWFkMCBjYWxscyBjaGFwdGVyenp6CitcZGVmXGNoYXB0ZXJ6enojMXslCisgICUgc2VjdGlvbiByZXNldHRpbmcgaXMgXGdsb2JhbCBpbiBjYXNlIHRoZSBjaGFwdGVyIGlzIGluIGEgZ3JvdXAsIHN1Y2gKKyAgJSBhcyBhbiBAaW5jbHVkZSBmaWxlLgorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVxjaGFwbm8gYnkgMQorICAlCisgICUgVXNlZCBmb3IgXGZsb2F0LgorICBcZ2RlZlxjaGFwbGV2ZWxwcmVmaXh7XHRoZVxjaGFwbm8ufSUKKyAgXHJlc2V0YWxsZmxvYXRub3MKKyAgJQorICBcbWVzc2FnZXtccHV0d29yZENoYXB0ZXJcc3BhY2UgXHRoZVxjaGFwbm99JQorICAlCisgICUgV3JpdGUgdGhlIGFjdHVhbCBoZWFkaW5nLgorICBcY2hhcG1hY3JveyMxfXtZbnVtYmVyZWR9e1x0aGVcY2hhcG5vfSUKKyAgJQorICAlIFNvIEBzZWN0aW9uIGFuZCB0aGUgbGlrZSBhcmUgbnVtYmVyZWQgdW5kZXJuZWF0aCB0aGlzIGNoYXB0ZXIuCisgIFxnbG9iYWxcbGV0XHNlY3Rpb24gPSBcbnVtYmVyZWRzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnNlYworICBcZ2xvYmFsXGxldFxzdWJzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic3Vic2VjCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlxhcHBlbmRpeHtcYXBwaGVhZDB7IzF9fSAlIG5vcm1hbGx5IGFwcGhlYWQwIGNhbGxzIGFwcGVuZGl4enp6CitcZGVmXGFwcGVuZGl4enp6IzF7JQorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVxhcHBlbmRpeG5vIGJ5IDEKKyAgXGdkZWZcY2hhcGxldmVscHJlZml4e1xhcHBlbmRpeGxldHRlci59JQorICBccmVzZXRhbGxmbG9hdG5vcworICAlCisgIFxkZWZcYXBwZW5kaXhudW17XHB1dHdvcmRBcHBlbmRpeFxzcGFjZSBcYXBwZW5kaXhsZXR0ZXJ9JQorICBcbWVzc2FnZXtcYXBwZW5kaXhudW19JQorICAlCisgIFxjaGFwbWFjcm97IzF9e1lhcHBlbmRpeH17XGFwcGVuZGl4bGV0dGVyfSUKKyAgJQorICBcZ2xvYmFsXGxldFxzZWN0aW9uID0gXGFwcGVuZGl4c2VjCisgIFxnbG9iYWxcbGV0XHN1YnNlY3Rpb24gPSBcYXBwZW5kaXhzdWJzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFxhcHBlbmRpeHN1YnN1YnNlYworfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHtcdW5ubWhlYWQweyMxfX0gJSBub3JtYWxseSB1bm5taGVhZDAgY2FsbHMgdW5udW1iZXJlZHp6egorXGRlZlx1bm51bWJlcmVkenp6IzF7JQorICBcZ2xvYmFsXHNlY25vPTAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MAorICAgIFxnbG9iYWxcYWR2YW5jZVx1bm51bWJlcmVkbm8gYnkgMQorICAlCisgICUgU2luY2UgYW4gdW5udW1iZXJlZCBoYXMgbm8gbnVtYmVyLCBubyBwcmVmaXggZm9yIGZpZ3VyZXMuCisgIFxnbG9iYWxcbGV0XGNoYXBsZXZlbHByZWZpeCA9IFxlbXB0eQorICBccmVzZXRhbGxmbG9hdG5vcworICAlCisgICUgVGhpcyB1c2VkIHRvIGJlIHNpbXBseSBcbWVzc2FnZXsjMX0sIGJ1dCBUZVggZnVsbHkgZXhwYW5kcyB0aGUKKyAgJSBhcmd1bWVudCB0byBcbWVzc2FnZS4gIFRoZXJlZm9yZSwgaWYgIzEgY29udGFpbmVkIEAtY29tbWFuZHMsIFRlWAorICAlIGV4cGFuZGVkIHRoZW0uICBGb3IgZXhhbXBsZSwgaW4gYEB1bm51bWJlcmVkIFRoZSBAY2l0ZXtCb29rfScsIFRlWAorICAlIGV4cGFuZGVkIEBjaXRlICh3aGljaCB0dXJucyBvdXQgdG8gY2F1c2UgZXJyb3JzIGJlY2F1c2UgXGNpdGUgaXMgbWVhbnQKKyAgJSB0byBiZSBleGVjdXRlZCwgbm90IGV4cGFuZGVkKS4KKyAgJQorICAlIEFueXdheSwgd2UgZG9uJ3Qgd2FudCB0aGUgZnVsbHktZXhwYW5kZWQgZGVmaW5pdGlvbiBvZiBAY2l0ZSB0byBhcHBlYXIKKyAgJSBhcyBhIHJlc3VsdCBvZiB0aGUgXG1lc3NhZ2UsIHdlIGp1c3Qgd2FudCBgQGNpdGUnIGl0c2VsZi4gIFdlIHVzZQorICAlIFx0aGU8dG9rcyByZWdpc3Rlcj4gdG8gYWNoaWV2ZSB0aGlzOiBUZVggZXhwYW5kcyBcdGhlPHRva3M+IG9ubHkgb25jZSwKKyAgJSBzaW1wbHkgeWllbGRpbmcgdGhlIGNvbnRlbnRzIG9mIDx0b2tzIHJlZ2lzdGVyPi4gIChXZSBhbHNvIGRvIHRoaXMgZm9yCisgICUgdGhlIHRvYyBlbnRyaWVzLikKKyAgXHRva3MwID0geyMxfSUKKyAgXG1lc3NhZ2V7KFx0aGVcdG9rczApfSUKKyAgJQorICBcY2hhcG1hY3JveyMxfXtZbm90aGluZ317XHRoZVx1bm51bWJlcmVkbm99JQorICAlCisgIFxnbG9iYWxcbGV0XHNlY3Rpb24gPSBcdW5udW1iZXJlZHNlYworICBcZ2xvYmFsXGxldFxzdWJzZWN0aW9uID0gXHVubnVtYmVyZWRzdWJzZWMKKyAgXGdsb2JhbFxsZXRcc3Vic3Vic2VjdGlvbiA9IFx1bm51bWJlcmVkc3Vic3Vic2VjCit9CisKKyUgQGNlbnRlcmNoYXAgaXMgbGlrZSBAdW5udW1iZXJlZCwgYnV0IHRoZSBoZWFkaW5nIGlzIGNlbnRlcmVkLgorXG91dGVyXHBhcnNlYXJnZGVmXGNlbnRlcmNoYXB7JQorICAlIFdlbGwsIHdlIGNvdWxkIGRvIHRoZSBmb2xsb3dpbmcgaW4gYSBncm91cCwgYnV0IHRoYXQgd291bGQgYnJlYWsKKyAgJSBhbiBhc3N1bXB0aW9uIHRoYXQgXGNoYXBtYWNybyBpcyBjYWxsZWQgYXQgdGhlIG91dGVybW9zdCBsZXZlbC4KKyAgJSBUaHVzIHdlIGFyZSBzYWZlciB0aGlzIHdheToJCS0ta2FzYWwsIDI0ZmViMDQKKyAgXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBcY2VudGVycGFyYW1ldGVycworICBcdW5ubWhlYWQweyMxfSUKKyAgXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBccmVsYXgKK30KKworJSBAdG9wIGlzIGxpa2UgQHVubnVtYmVyZWQuCitcbGV0XHRvcFx1bm51bWJlcmVkCisKKyUgU2VjdGlvbnMuCitcb3V0ZXJccGFyc2VhcmdkZWZcbnVtYmVyZWRzZWN7XG51bWhlYWQxeyMxfX0gJSBub3JtYWxseSBjYWxscyBzZWN6enoKK1xkZWZcc2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnNlY25vPTAgXGdsb2JhbFxzdWJzdWJzZWNubz0wICBcZ2xvYmFsXGFkdmFuY2Vcc2Vjbm8gYnkgMQorICBcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW51bWJlcmVkfXtcdGhlXGNoYXBuby5cdGhlXHNlY25vfSUKK30KKworXG91dGVyXHBhcnNlYXJnZGVmXGFwcGVuZGl4c2VjdGlvbntcYXBwaGVhZDF7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIGFwcGVuZGl4c2VjdGlvbnp6egorXGRlZlxhcHBlbmRpeHNlY3Rpb256enojMXslCisgIFxnbG9iYWxcc3Vic2Vjbm89MCBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c2VjfXtZYXBwZW5kaXh9e1xhcHBlbmRpeGxldHRlci5cdGhlXHNlY25vfSUKK30KK1xsZXRcYXBwZW5kaXhzZWNcYXBwZW5kaXhzZWN0aW9uCisKK1xvdXRlclxwYXJzZWFyZ2RlZlx1bm51bWJlcmVkc2Vje1x1bm5taGVhZDF7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIHVubnVtYmVyZWRzZWN6enoKK1xkZWZcdW5udW1iZXJlZHNlY3p6eiMxeyUKKyAgXGdsb2JhbFxzdWJzZWNubz0wIFxnbG9iYWxcc3Vic3Vic2Vjbm89MCAgXGdsb2JhbFxhZHZhbmNlXHNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzZWN9e1lub3RoaW5nfXtcdGhlXHVubnVtYmVyZWRuby5cdGhlXHNlY25vfSUKK30KKworJSBTdWJzZWN0aW9ucy4KK1xvdXRlclxwYXJzZWFyZ2RlZlxudW1iZXJlZHN1YnNlY3tcbnVtaGVhZDJ7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIG51bWJlcmVkc3Vic2Vjenp6CitcZGVmXG51bWJlcmVkc3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZbnVtYmVyZWR9e1x0aGVcY2hhcG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlxhcHBlbmRpeHN1YnNlY3tcYXBwaGVhZDJ7IzF9fSAlIG5vcm1hbGx5IGNhbGxzIGFwcGVuZGl4c3Vic2Vjenp6CitcZGVmXGFwcGVuZGl4c3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZYXBwZW5kaXh9JQorICAgICAgICAgICAgICAgICB7XGFwcGVuZGl4bGV0dGVyLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNub30lCit9CisKK1xvdXRlclxwYXJzZWFyZ2RlZlx1bm51bWJlcmVkc3Vic2Vje1x1bm5taGVhZDJ7IzF9fSAlbm9ybWFsbHkgY2FsbHMgdW5udW1iZXJlZHN1YnNlY3p6egorXGRlZlx1bm51bWJlcmVkc3Vic2Vjenp6IzF7JQorICBcZ2xvYmFsXHN1YnN1YnNlY25vPTAgIFxnbG9iYWxcYWR2YW5jZVxzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic2VjfXtZbm90aGluZ30lCisgICAgICAgICAgICAgICAgIHtcdGhlXHVubnVtYmVyZWRuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm99JQorfQorCislIFN1YnN1YnNlY3Rpb25zLgorXG91dGVyXHBhcnNlYXJnZGVmXG51bWJlcmVkc3Vic3Vic2Vje1xudW1oZWFkM3sjMX19ICUgbm9ybWFsbHkgbnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcbnVtYmVyZWRzdWJzdWJzZWN6enojMXslCisgIFxnbG9iYWxcYWR2YW5jZVxzdWJzdWJzZWNubyBieSAxCisgIFxzZWN0aW9uaGVhZGluZ3sjMX17c3Vic3Vic2VjfXtZbnVtYmVyZWR9JQorICAgICAgICAgICAgICAgICB7XHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcYXBwZW5kaXhzdWJzdWJzZWN7XGFwcGhlYWQzeyMxfX0gJSBub3JtYWxseSBhcHBlbmRpeHN1YnN1YnNlY3p6egorXGRlZlxhcHBlbmRpeHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lhcHBlbmRpeH0lCisgICAgICAgICAgICAgICAgIHtcYXBwZW5kaXhsZXR0ZXIuXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vLlx0aGVcc3Vic3Vic2Vjbm99JQorfQorCitcb3V0ZXJccGFyc2VhcmdkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3tcdW5ubWhlYWQzeyMxfX0gJW5vcm1hbGx5IHVubnVtYmVyZWRzdWJzdWJzZWN6enoKK1xkZWZcdW5udW1iZXJlZHN1YnN1YnNlY3p6eiMxeyUKKyAgXGdsb2JhbFxhZHZhbmNlXHN1YnN1YnNlY25vIGJ5IDEKKyAgXHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzdWJzZWN9e1lub3RoaW5nfSUKKyAgICAgICAgICAgICAgICAge1x0aGVcdW5udW1iZXJlZG5vLlx0aGVcc2Vjbm8uXHRoZVxzdWJzZWNuby5cdGhlXHN1YnN1YnNlY25vfSUKK30KKworJSBUaGVzZSBtYWNyb3MgY29udHJvbCB3aGF0IHRoZSBzZWN0aW9uIGNvbW1hbmRzIGRvLCBhY2NvcmRpbmcKKyUgdG8gd2hhdCBraW5kIG9mIGNoYXB0ZXIgd2UgYXJlIGluIChvcmRpbmFyeSwgYXBwZW5kaXgsIG9yIHVubnVtYmVyZWQpLgorJSBEZWZpbmUgdGhlbSBieSBkZWZhdWx0IGZvciBhIG51bWJlcmVkIGNoYXB0ZXIuCitcbGV0XHNlY3Rpb24gPSBcbnVtYmVyZWRzZWMKK1xsZXRcc3Vic2VjdGlvbiA9IFxudW1iZXJlZHN1YnNlYworXGxldFxzdWJzdWJzZWN0aW9uID0gXG51bWJlcmVkc3Vic3Vic2VjCisKKyUgRGVmaW5lIEBtYWpvcmhlYWRpbmcsIEBoZWFkaW5nIGFuZCBAc3ViaGVhZGluZworCislIE5PVEUgb24gdXNlIG9mIFx2Ym94IGZvciBjaGFwdGVyIGhlYWRpbmdzLCBzZWN0aW9uIGhlYWRpbmdzLCBhbmQgc3VjaDoKKyUgICAgICAgMSkgV2UgdXNlIFx2Ym94IHJhdGhlciB0aGFuIHRoZSBlYXJsaWVyIFxsaW5lIHRvIHBlcm1pdAorJSAgICAgICAgICBvdmVybG9uZyBoZWFkaW5ncyB0byBmb2xkLgorJSAgICAgICAyKSBcaHlwaGVucGVuYWx0eSBpcyBzZXQgdG8gMTAwMDAgYmVjYXVzZSBoeXBoZW5hdGlvbiBpbiBhCislICAgICAgICAgIGhlYWRpbmcgaXMgb2Jub3hpb3VzOyB0aGlzIGZvcmJpZHMgaXQuCislICAgICAgIDMpIExpa2V3aXNlLCBoZWFkaW5ncyBsb29rIGJlc3QgaWYgbm8gXHBhcmluZGVudCBpcyB1c2VkLCBhbmQKKyUgICAgICAgICAgaWYganVzdGlmaWNhdGlvbiBpcyBub3QgYXR0ZW1wdGVkLiAgSGVuY2UgXHJhZ2dlZHJpZ2h0LgorCisKK1xkZWZcbWFqb3JoZWFkaW5neyUKKyAge1xhZHZhbmNlXGNoYXBoZWFkaW5nc2tpcCBieSAxMHB0IFxjaGFwYnJlYWsgfSUKKyAgXHBhcnNlYXJnXGNoYXBoZWFkaW5nenp6Cit9CisKK1xkZWZcY2hhcGhlYWRpbmd7XGNoYXBicmVhayBccGFyc2VhcmdcY2hhcGhlYWRpbmd6enp9CitcZGVmXGNoYXBoZWFkaW5nenp6IzF7JQorICB7XGNoYXBmb250cyBcdmJveHtcaHlwaGVucGVuYWx0eT0xMDAwMFx0b2xlcmFuY2U9NTAwMAorICAgICAgICAgICAgICAgICAgICBccGFyaW5kZW50PTBwdFxyYWdnZWRyaWdodAorICAgICAgICAgICAgICAgICAgICBccm0gIzFcaGZpbGx9fSUKKyAgXGJpZ3NraXAgXHBhclxwZW5hbHR5IDIwMFxyZWxheAorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudAorfQorCislIEBoZWFkaW5nLCBAc3ViaGVhZGluZywgQHN1YnN1YmhlYWRpbmcuCitccGFyc2VhcmdkZWZcaGVhZGluZ3tcc2VjdGlvbmhlYWRpbmd7IzF9e3NlY317WW9taXRmcm9tdG9jfXt9CisgIFxzdXBwcmVzc2ZpcnN0cGFyYWdyYXBoaW5kZW50fQorXHBhcnNlYXJnZGVmXHN1YmhlYWRpbmd7XHNlY3Rpb25oZWFkaW5neyMxfXtzdWJzZWN9e1lvbWl0ZnJvbXRvY317fQorICBcc3VwcHJlc3NmaXJzdHBhcmFncmFwaGluZGVudH0KK1xwYXJzZWFyZ2RlZlxzdWJzdWJoZWFkaW5ne1xzZWN0aW9uaGVhZGluZ3sjMX17c3Vic3Vic2VjfXtZb21pdGZyb210b2N9e30KKyAgXHN1cHByZXNzZmlyc3RwYXJhZ3JhcGhpbmRlbnR9CisKKyUgVGhlc2UgbWFjcm9zIGdlbmVyYXRlIGEgY2hhcHRlciwgc2VjdGlvbiwgZXRjLiBoZWFkaW5nIG9ubHkKKyUgKGluY2x1ZGluZyB3aGl0ZXNwYWNlLCBsaW5lYnJlYWtpbmcsIGV0Yy4gYXJvdW5kIGl0KSwKKyUgZ2l2ZW4gYWxsIHRoZSBpbmZvcm1hdGlvbiBpbiBjb252ZW5pZW50LCBwYXJzZWQgZm9ybS4KKworJSUlIEFyZ3MgYXJlIHRoZSBza2lwIGFuZCBwZW5hbHR5ICh1c3VhbGx5IG5lZ2F0aXZlKQorXGRlZlxkb2JyZWFrIzEjMntccGFyXGlmZGltXGxhc3Rza2lwPCMxXHJlbW92ZWxhc3Rza2lwXHBlbmFsdHkjMlx2c2tpcCMxXGZpfQorCislJSUgRGVmaW5lIHBsYWluIGNoYXB0ZXIgc3RhcnRzLCBhbmQgcGFnZSBvbi9vZmYgc3dpdGNoaW5nIGZvciBpdAorJSBQYXJhbWV0ZXIgY29udHJvbGxpbmcgc2tpcCBiZWZvcmUgY2hhcHRlciBoZWFkaW5ncyAoaWYgbmVlZGVkKQorCitcbmV3c2tpcFxjaGFwaGVhZGluZ3NraXAKKworXGRlZlxjaGFwYnJlYWt7XGRvYnJlYWsgXGNoYXBoZWFkaW5nc2tpcCB7LTQwMDB9fQorXGRlZlxjaGFwcGFnZXJ7XHBhclx2ZmlsbFxzdXBlcmVqZWN0fQorXGRlZlxjaGFwb2RkcGFnZXtcY2hhcHBhZ2VyIFxpZm9kZFxwYWdlbm8gXGVsc2UgXGhib3ggdG8gMHB0e30gXGNoYXBwYWdlclxmaX0KKworXGRlZlxzZXRjaGFwdGVybmV3cGFnZSAjMSB7XGNzbmFtZSBDSEFQUEFHIzFcZW5kY3NuYW1lfQorCitcZGVmXENIQVBQQUdvZmZ7JQorXGdsb2JhbFxsZXRcY29udGVudHNhbGlnbm1hY3JvID0gXGNoYXBwYWdlcgorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcGJyZWFrCitcZ2xvYmFsXGxldFxwYWdlYWxpZ25tYWNybz1cY2hhcHBhZ2VyfQorCitcZGVmXENIQVBQQUdvbnslCitcZ2xvYmFsXGxldFxjb250ZW50c2FsaWdubWFjcm8gPSBcY2hhcHBhZ2VyCitcZ2xvYmFsXGxldFxwY2hhcHNlcG1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwcGFnZXIKK1xnbG9iYWxcZGVmXEhFQURJTkdTb257XEhFQURJTkdTc2luZ2xlfX0KKworXGRlZlxDSEFQUEFHb2RkeyUKK1xnbG9iYWxcbGV0XGNvbnRlbnRzYWxpZ25tYWNybyA9IFxjaGFwb2RkcGFnZQorXGdsb2JhbFxsZXRccGNoYXBzZXBtYWNybz1cY2hhcG9kZHBhZ2UKK1xnbG9iYWxcbGV0XHBhZ2VhbGlnbm1hY3JvPVxjaGFwb2RkcGFnZQorXGdsb2JhbFxkZWZcSEVBRElOR1NvbntcSEVBRElOR1Nkb3VibGV9fQorCitcQ0hBUFBBR29uCisKKyUgQ2hhcHRlciBvcGVuaW5nLgorJQorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gdHlwZSAoWW51bWJlcmVkLCBZbm90aGluZywKKyUgWWFwcGVuZGl4LCBZb21pdGZyb210b2MpLCAjMyB0aGUgY2hhcHRlciBudW1iZXIuCislCislIFRvIHRlc3QgYWdhaW5zdCBvdXIgYXJndW1lbnQuCitcZGVmXFlub3RoaW5na2V5d29yZHtZbm90aGluZ30KK1xkZWZcWW9taXRmcm9tdG9ja2V5d29yZHtZb21pdGZyb210b2N9CitcZGVmXFlhcHBlbmRpeGtleXdvcmR7WWFwcGVuZGl4fQorJQorXGRlZlxjaGFwbWFjcm8jMSMyIzN7JQorICBccGNoYXBzZXBtYWNybworICB7JQorICAgIFxjaGFwZm9udHMgXHJtCisgICAgJQorICAgICUgSGF2ZSB0byBkZWZpbmUgXHRoaXNzZWN0aW9uIGJlZm9yZSBjYWxsaW5nIFxkb25vZGVyZWYsIGJlY2F1c2UgdGhlCisgICAgJSB4cmVmIGNvZGUgZXZlbnR1YWxseSB1c2VzIGl0LiAgT24gdGhlIG90aGVyIGhhbmQsIGl0IGhhcyB0byBiZSBjYWxsZWQKKyAgICAlIGFmdGVyIFxwY2hhcHNlcG1hY3JvLCBvciB0aGUgaGVhZGxpbmUgd2lsbCBjaGFuZ2UgdG9vIHNvb24uCisgICAgXGdkZWZcdGhpc3NlY3Rpb257IzF9JQorICAgIFxnZGVmXHRoaXNjaGFwdGVybmFtZXsjMX0lCisgICAgJQorICAgICUgT25seSBpbnNlcnQgdGhlIHNlcGFyYXRpbmcgc3BhY2UgaWYgd2UgaGF2ZSBhIGNoYXB0ZXIvYXBwZW5kaXgKKyAgICAlIG51bWJlciwgYW5kIGRvbid0IHByaW50IHRoZSB1bm51bWJlcmVkIGBgbnVtYmVyJycuCisgICAgXGRlZlx0ZW1wdHlwZXsjMn0lCisgICAgXGlmeFx0ZW1wdHlwZVxZbm90aGluZ2tleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXt1bm5jaGFwfSUKKyAgICAgIFxnZGVmXHRoaXNjaGFwdGVyeyMxfSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWW9taXRmcm9tdG9ja2V5d29yZAorICAgICAgXHNldGJveDAgPSBcaGJveHt9JSBjb250ZW50cyBsaWtlIHVubnVtYmVyZWQsIGJ1dCBubyB0b2MgZW50cnkKKyAgICAgIFxkZWZcdG9jdHlwZXtvbWl0fSUKKyAgICAgIFxnZGVmXHRoaXNjaGFwdGVye30lCisgICAgXGVsc2VcaWZ4XHRlbXB0eXBlXFlhcHBlbmRpeGtleXdvcmQKKyAgICAgIFxzZXRib3gwID0gXGhib3h7XHB1dHdvcmRBcHBlbmRpeHt9ICMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle2FwcH0lCisgICAgICAlIFdlIGRvbid0IHN1YnN0aXR1dGUgdGhlIGFjdHVhbCBjaGFwdGVyIG5hbWUgaW50byBcdGhpc2NoYXB0ZXIKKyAgICAgICUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGl0cyBtYWNyb3MgZXZhbHVhdGVkIG5vdy4gIEFuZCB3ZSBkb24ndAorICAgICAgJSB1c2UgXHRoaXNzZWN0aW9uIGJlY2F1c2UgdGhhdCBjaGFuZ2VzIHdpdGggZWFjaCBzZWN0aW9uLgorICAgICAgJQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRBcHBlbmRpeHt9IFxhcHBlbmRpeGxldHRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIFxub2V4cGFuZFx0aGlzY2hhcHRlcm5hbWV9JQorICAgIFxlbHNlCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyMzXGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle251bWNoYXB9JQorICAgICAgXHhkZWZcdGhpc2NoYXB0ZXJ7XHB1dHdvcmRDaGFwdGVye30gXHRoZVxjaGFwbm86CisgICAgICAgICAgICAgICAgICAgICAgICBcbm9leHBhbmRcdGhpc2NoYXB0ZXJuYW1lfSUKKyAgICBcZmlcZmlcZmkKKyAgICAlCisgICAgJSBXcml0ZSB0aGUgdG9jIGVudHJ5IGZvciB0aGlzIGNoYXB0ZXIuICBNdXN0IGNvbWUgYmVmb3JlIHRoZQorICAgICUgXGRvbm9kZXJlZiwgYmVjYXVzZSB3ZSBpbmNsdWRlIHRoZSBjdXJyZW50IG5vZGUgbmFtZSBpbiB0aGUgdG9jCisgICAgJSBlbnRyeSwgYW5kIFxkb25vZGVyZWYgcmVzZXRzIGl0IHRvIGVtcHR5LgorICAgIFx3cml0ZXRvY2VudHJ5e1x0b2N0eXBlfXsjMX17IzN9JQorICAgICUKKyAgICAlIEZvciBwZGZ0ZXgsIHdlIGhhdmUgdG8gd3JpdGUgb3V0IHRoZSBub2RlIGRlZmluaXRpb24gKGFrYSwgbWFrZQorICAgICUgdGhlIHBkZmRlc3QpIGFmdGVyIGFueSBwYWdlIGJyZWFrLCBidXQgYmVmb3JlIHRoZSBhY3R1YWwgdGV4dCBoYXMKKyAgICAlIGJlZW4gdHlwZXNldC4gIElmIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIHBkZiBvdXRsaW5lIGlzIGFmdGVyIHRoZQorICAgICUgdGV4dCwgdGhlbiBqdW1waW5nIGZyb20gdGhlIG91dGxpbmUgbWF5IHdpbmQgdXAgd2l0aCB0aGUgdGV4dCBub3QKKyAgICAlIGJlaW5nIHZpc2libGUsIGZvciBpbnN0YW5jZSB1bmRlciBoaWdoIG1hZ25pZmljYXRpb24uCisgICAgXGRvbm9kZXJlZnsjMn0lCisgICAgJQorICAgICUgVHlwZXNldCB0aGUgYWN0dWFsIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgXGNlbnRlcnBhcmFtZXRlcnNtYXliZQorICAgICAgICAgIFx1bmhib3gwICMxXHBhcn0lCisgIH0lCisgIFxub2JyZWFrXGJpZ3NraXAgJSBubyBwYWdlIGJyZWFrIGFmdGVyIGEgY2hhcHRlciB0aXRsZQorICBcbm9icmVhaworfQorCislIEBjZW50ZXJjaGFwIC0tIGNlbnRlcmVkIGFuZCB1bm51bWJlcmVkLgorXGxldFxjZW50ZXJwYXJhbWV0ZXJzbWF5YmUgPSBccmVsYXgKK1xkZWZcY2VudGVycGFyYW1ldGVyc3slCisgIFxhZHZhbmNlXHJpZ2h0c2tpcCBieSAzXHJpZ2h0c2tpcAorICBcbGVmdHNraXAgPSBccmlnaHRza2lwCisgIFxwYXJmaWxsc2tpcCA9IDBwdAorfQorCisKKyUgSSBkb24ndCB0aGluayB0aGlzIGNoYXB0ZXIgc3R5bGUgaXMgc3VwcG9ydGVkIGFueSBtb3JlLCBzbyBJJ20gbm90CislIHVwZGF0aW5nIGl0IHdpdGggdGhlIG5ldyBub2RlcmVmIHN0dWZmLiAgV2UnbGwgc2VlLiAgLS1rYXJsLCAxMWF1ZzAzLgorJQorXGRlZlxzZXRjaGFwdGVyc3R5bGUgIzEge1xjc25hbWUgQ0hBUEYjMVxlbmRjc25hbWV9CislCitcZGVmXHVubmNoZm9wZW4gIzF7JQorXGNoYXBvZGRwYWdlIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0XHJhZ2dlZHJpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgIFxybSAjMVxoZmlsbH19XGJpZ3NraXAgXHBhclxub2JyZWFrCit9CitcZGVmXGNoZm9wZW4gIzEjMntcY2hhcG9kZHBhZ2Uge1xjaGFwZm9udHMKK1x2Ym94IHRvIDNpbntcdmZpbCBcaGJveCB0b1xoc2l6ZXtcaGZpbCAjMn0gXGhib3ggdG9caHNpemV7XGhmaWwgIzF9IFx2ZmlsfX0lCitccGFyXHBlbmFsdHkgNTAwMCAlCit9CitcZGVmXGNlbnRlcmNoZm9wZW4gIzF7JQorXGNoYXBvZGRwYWdlIHtcY2hhcGZvbnRzIFx2Ym94e1xoeXBoZW5wZW5hbHR5PTEwMDAwXHRvbGVyYW5jZT01MDAwCisgICAgICAgICAgICAgICAgICAgICAgIFxwYXJpbmRlbnQ9MHB0CisgICAgICAgICAgICAgICAgICAgICAgIFxoZmlsbCB7XHJtICMxfVxoZmlsbH19XGJpZ3NraXAgXHBhclxub2JyZWFrCit9CitcZGVmXENIQVBGb3BlbnslCisgIFxnbG9iYWxcbGV0XGNoYXBtYWNybz1cY2hmb3BlbgorICBcZ2xvYmFsXGxldFxjZW50ZXJjaGFwbWFjcm89XGNlbnRlcmNoZm9wZW59CisKKworJSBTZWN0aW9uIHRpdGxlcy4gIFRoZXNlIG1hY3JvcyBjb21iaW5lIHRoZSBzZWN0aW9uIG51bWJlciBwYXJ0cyBhbmQKKyUgY2FsbCB0aGUgZ2VuZXJpYyBcc2VjdGlvbmhlYWRpbmcgdG8gZG8gdGhlIHByaW50aW5nLgorJQorXG5ld3NraXBcc2VjaGVhZGluZ3NraXAKK1xkZWZcc2VjaGVhZGluZ2JyZWFre1xkb2JyZWFrIFxzZWNoZWFkaW5nc2tpcHstMTAwMH19CisKKyUgU3Vic2VjdGlvbiB0aXRsZXMuCitcbmV3c2tpcFxzdWJzZWNoZWFkaW5nc2tpcAorXGRlZlxzdWJzZWNoZWFkaW5nYnJlYWt7XGRvYnJlYWsgXHN1YnNlY2hlYWRpbmdza2lwey01MDB9fQorCislIFN1YnN1YnNlY3Rpb24gdGl0bGVzLgorXGRlZlxzdWJzdWJzZWNoZWFkaW5nc2tpcHtcc3Vic2VjaGVhZGluZ3NraXB9CitcZGVmXHN1YnN1YnNlY2hlYWRpbmdicmVha3tcc3Vic2VjaGVhZGluZ2JyZWFrfQorCisKKyUgUHJpbnQgYW55IHNpemUsIGFueSB0eXBlLCBzZWN0aW9uIHRpdGxlLgorJQorJSAjMSBpcyB0aGUgdGV4dCwgIzIgaXMgdGhlIHNlY3Rpb24gbGV2ZWwgKHNlYy9zdWJzZWMvc3Vic3Vic2VjKSwgIzMgaXMKKyUgdGhlIHNlY3Rpb24gdHlwZSBmb3IgeHJlZnMgKFludW1iZXJlZCwgWW5vdGhpbmcsIFlhcHBlbmRpeCksICM0IGlzIHRoZQorJSBzZWN0aW9uIG51bWJlci4KKyUKK1xkZWZcc2VjdGlvbmhlYWRpbmcjMSMyIzMjNHslCisgIHslCisgICAgJSBTd2l0Y2ggdG8gdGhlIHJpZ2h0IHNldCBvZiBmb250cy4KKyAgICBcY3NuYW1lICMyZm9udHNcZW5kY3NuYW1lIFxybQorICAgICUKKyAgICAlIEluc2VydCBzcGFjZSBhYm92ZSB0aGUgaGVhZGluZy4KKyAgICBcY3NuYW1lICMyaGVhZGluZ2JyZWFrXGVuZGNzbmFtZQorICAgICUKKyAgICAlIE9ubHkgaW5zZXJ0IHRoZSBzcGFjZSBhZnRlciB0aGUgbnVtYmVyIGlmIHdlIGhhdmUgYSBzZWN0aW9uIG51bWJlci4KKyAgICBcZGVmXHNlY3Rpb25sZXZlbHsjMn0lCisgICAgXGRlZlx0ZW1wdHlwZXsjM30lCisgICAgJQorICAgIFxpZnhcdGVtcHR5cGVcWW5vdGhpbmdrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94e30lCisgICAgICBcZGVmXHRvY3R5cGV7dW5ufSUKKyAgICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZWxzZVxpZnhcdGVtcHR5cGVcWW9taXRmcm9tdG9ja2V5d29yZAorICAgICAgJSBmb3IgQGhlYWRpbmdzIC0tIG5vIHNlY3Rpb24gbnVtYmVyLCBkb24ndCBpbmNsdWRlIGluIHRvYywKKyAgICAgICUgYW5kIGRvbid0IHJlZGVmaW5lIFx0aGlzc2VjdGlvbi4KKyAgICAgIFxzZXRib3gwID0gXGhib3h7fSUKKyAgICAgIFxkZWZcdG9jdHlwZXtvbWl0fSUKKyAgICAgIFxsZXRcc2VjdGlvbmxldmVsPVxlbXB0eQorICAgIFxlbHNlXGlmeFx0ZW1wdHlwZVxZYXBwZW5kaXhrZXl3b3JkCisgICAgICBcc2V0Ym94MCA9IFxoYm94eyM0XGVuc3BhY2V9JQorICAgICAgXGRlZlx0b2N0eXBle2FwcH0lCisgICAgICBcZ2RlZlx0aGlzc2VjdGlvbnsjMX0lCisgICAgXGVsc2UKKyAgICAgIFxzZXRib3gwID0gXGhib3h7IzRcZW5zcGFjZX0lCisgICAgICBcZGVmXHRvY3R5cGV7bnVtfSUKKyAgICAgIFxnZGVmXHRoaXNzZWN0aW9ueyMxfSUKKyAgICBcZmlcZmlcZmkKKyAgICAlCisgICAgJSBXcml0ZSB0aGUgdG9jIGVudHJ5IChiZWZvcmUgXGRvbm9kZXJlZikuICBTZWUgY29tbWVudHMgaW4gXGNoYXBtYWNyby4KKyAgICBcd3JpdGV0b2NlbnRyeXtcdG9jdHlwZVxzZWN0aW9ubGV2ZWx9eyMxfXsjNH0lCisgICAgJQorICAgICUgV3JpdGUgdGhlIG5vZGUgcmVmZXJlbmNlICg9IHBkZiBkZXN0aW5hdGlvbiBmb3IgcGRmdGV4KS4KKyAgICAlIEFnYWluLCBzZWUgY29tbWVudHMgaW4gXGNoYXBtYWNyby4KKyAgICBcZG9ub2RlcmVmeyMzfSUKKyAgICAlCisgICAgJSBJbnRlcmxpbmUgZ2x1ZSB3aWxsIGJlIGluc2VydGVkIHdoZW4gdGhlIHZib3ggaXMgY29tcGxldGVkLgorICAgICUgVGhhdCBnbHVlIHdpbGwgYmUgYSB2YWxpZCBicmVha3BvaW50IGZvciB0aGUgcGFnZSwgc2luY2UgaXQnbGwgYmUKKyAgICAlIHByZWNlZGVkIGJ5IGEgd2hhdHNpdCAodXN1YWxseSBmcm9tIHRoZSBcZG9ub2RlcmVmLCBvciBmcm9tIHRoZQorICAgICUgXHdyaXRldG9jZW50cnkgaWYgdGhlcmUgd2FzIG5vIG5vZGUpLiAgV2UgZG9uJ3Qgd2FudCB0byBhbGxvdyB0aGF0CisgICAgJSBicmVhaywgc2luY2UgdGhlbiB0aGUgd2hhdHNpdHMgY291bGQgZW5kIHVwIG9uIHBhZ2UgbiB3aGlsZSB0aGUKKyAgICAlIHNlY3Rpb24gaXMgb24gcGFnZSBuKzEsIHRodXMgdG9jL2V0Yy4gYXJlIHdyb25nLiAgRGViaWFuIGJ1ZyAyNzYwMDAuCisgICAgXG5vYnJlYWsKKyAgICAlCisgICAgJSBPdXRwdXQgdGhlIGFjdHVhbCBzZWN0aW9uIGhlYWRpbmcuCisgICAgXHZib3h7XGh5cGhlbnBlbmFsdHk9MTAwMDAgXHRvbGVyYW5jZT01MDAwIFxwYXJpbmRlbnQ9MHB0IFxyYWdnZWRyaWdodAorICAgICAgICAgIFxoYW5naW5kZW50PVx3ZDAgICUgemVybyBpZiBubyBzZWN0aW9uIG51bWJlcgorICAgICAgICAgIFx1bmhib3gwICMxfSUKKyAgfSUKKyAgJSBBZGQgZXh0cmEgc3BhY2UgYWZ0ZXIgdGhlIGhlYWRpbmcgLS0gaGFsZiBvZiB3aGF0ZXZlciBjYW1lIGFib3ZlIGl0LgorICAlIERvbid0IGFsbG93IHN0cmV0Y2gsIHRob3VnaC4KKyAgXGtlcm4gLjUgXGNzbmFtZSAjMmhlYWRpbmdza2lwXGVuZGNzbmFtZQorICAlCisgICUgRG8gbm90IGxldCB0aGUga2VybiBiZSBhIHBvdGVudGlhbCBicmVha3BvaW50LCBhcyBpdCB3b3VsZCBiZSBpZiBpdAorICAlIHdhcyBmb2xsb3dlZCBieSBnbHVlLgorICBcbm9icmVhaworICAlCisgICUgV2UnbGwgYWxtb3N0IGNlcnRhaW5seSBzdGFydCBhIHBhcmFncmFwaCBuZXh0LCBzbyBkb24ndCBsZXQgdGhhdAorICAlIGdsdWUgYWNjdW11bGF0ZS4gIChOb3QgYSBicmVha3BvaW50IGJlY2F1c2UgaXQncyBwcmVjZWRlZCBieSBhCisgICUgZGlzY2FyZGFibGUgaXRlbS4pCisgIFx2c2tpcC1ccGFyc2tpcAorICAlIAorICAlIFRoaXMgaXMgcHVyZWx5IHNvIHRoZSBsYXN0IGl0ZW0gb24gdGhlIGxpc3QgaXMgYSBrbm93biBccGVuYWx0eSA+CisgICUgMTAwMDAuICBUaGlzIGlzIHNvIFxzdGFydGRlZnVuIGNhbiBhdm9pZCBhbGxvd2luZyBicmVha3BvaW50cyBhZnRlcgorICAlIHNlY3Rpb24gaGVhZGluZ3MuICBPdGhlcndpc2UsIGl0IHdvdWxkIGluc2VydCBhIHZhbGlkIGJyZWFrcG9pbnQgYmV0d2VlbjoKKyAgJSAKKyAgJSAgIEBzZWN0aW9uIHNlYy13aGF0ZXZlcgorICAlICAgQGRlZmZuIGRlZi13aGF0ZXZlcgorICBccGVuYWx0eSAxMDAwMQorfQorCisKK1xtZXNzYWdle3RvYyx9CislIFRhYmxlIG9mIGNvbnRlbnRzLgorXG5ld3dyaXRlXHRvY2ZpbGUKKworJSBXcml0ZSBhbiBlbnRyeSB0byB0aGUgdG9jIGZpbGUsIG9wZW5pbmcgaXQgaWYgbmVjZXNzYXJ5LgorJSBDYWxsZWQgZnJvbSBAY2hhcHRlciwgZXRjLgorJQorJSBFeGFtcGxlIHVzYWdlOiBcd3JpdGV0b2NlbnRyeXtzZWN9e1NlY3Rpb24gTmFtZX17XHRoZVxjaGFwbm8uXHRoZVxzZWNub30KKyUgV2UgYXBwZW5kIHRoZSBjdXJyZW50IG5vZGUgbmFtZSAoaWYgYW55KSBhbmQgcGFnZSBudW1iZXIgYXMgYWRkaXRpb25hbAorJSBhcmd1bWVudHMgZm9yIHRoZSBce2NoYXAsc2VjLC4uLn1lbnRyeSBtYWNyb3Mgd2hpY2ggd2lsbCBldmVudHVhbGx5CislIHJlYWQgdGhpcy4gIFRoZSBub2RlIG5hbWUgaXMgdXNlZCBpbiB0aGUgcGRmIG91dGxpbmVzIGFzIHRoZQorJSBkZXN0aW5hdGlvbiB0byBqdW1wIHRvLgorJQorJSBXZSBvcGVuIHRoZSAudG9jIGZpbGUgZm9yIHdyaXRpbmcgaGVyZSBpbnN0ZWFkIG9mIGF0IEBzZXRmaWxlbmFtZSAob3IKKyUgYW55IG90aGVyIGZpeGVkIHRpbWUpIHNvIHRoYXQgQGNvbnRlbnRzIGNhbiBiZSBhbnl3aGVyZSBpbiB0aGUgZG9jdW1lbnQuCislIEJ1dCBpZiAjMSBpcyBgb21pdCcsIHRoZW4gd2UgZG9uJ3QgZG8gYW55dGhpbmcuICBUaGlzIGlzIHVzZWQgZm9yIHRoZQorJSB0YWJsZSBvZiBjb250ZW50cyBjaGFwdGVyIG9wZW5pbmdzIHRoZW1zZWx2ZXMuCislCitcbmV3aWZcaWZ0b2NmaWxlb3BlbmVkCitcZGVmXG9taXRrZXl3b3Jke29taXR9JQorJQorXGRlZlx3cml0ZXRvY2VudHJ5IzEjMiMzeyUKKyAgXGVkZWZcd3JpdGV0b2N0eXBleyMxfSUKKyAgXGlmeFx3cml0ZXRvY3R5cGVcb21pdGtleXdvcmQgXGVsc2UKKyAgICBcaWZ0b2NmaWxlb3BlbmVkXGVsc2UKKyAgICAgIFxpbW1lZGlhdGVcb3Blbm91dFx0b2NmaWxlID0gXGpvYm5hbWUudG9jCisgICAgICBcZ2xvYmFsXHRvY2ZpbGVvcGVuZWR0cnVlCisgICAgXGZpCisgICAgJQorICAgIFxpZmxpbmtzCisgICAgICB7XGF0ZHVtbWllcworICAgICAgIFxlZGVmXHRlbXB7JQorICAgICAgICAgXHdyaXRlXHRvY2ZpbGV7QCMxZW50cnl7IzJ9eyMzfXtcbGFzdG5vZGV9e1xub2V4cGFuZFxmb2xpb319fSUKKyAgICAgICBcdGVtcAorICAgICAgfSUKKyAgICBcZmkKKyAgXGZpCisgICUKKyAgJSBUZWxsIFxzaGlwb3V0IHRvIGNyZWF0ZSBhIHBkZiBkZXN0aW5hdGlvbiBvbiBlYWNoIHBhZ2UsIGlmIHdlJ3JlCisgICUgd3JpdGluZyBwZGYuICBUaGVzZSBhcmUgdXNlZCBpbiB0aGUgdGFibGUgb2YgY29udGVudHMuICBXZSBjYW4ndAorICAlIGp1c3Qgd3JpdGUgb25lIG9uIGV2ZXJ5IHBhZ2UgYmVjYXVzZSB0aGUgdGl0bGUgcGFnZXMgYXJlIG51bWJlcmVkCisgICUgMSBhbmQgMiAodGhlIHBhZ2UgbnVtYmVycyBhcmVuJ3QgcHJpbnRlZCksIGFuZCBzbyBhcmUgdGhlIGZpcnN0CisgICUgdHdvIHBhZ2VzIG9mIHRoZSBkb2N1bWVudC4gIFRodXMsIHdlJ2QgaGF2ZSB0d28gZGVzdGluYXRpb25zIG5hbWVkCisgICUgYDEnLCBhbmQgdHdvIG5hbWVkIGAyJy4KKyAgXGlmcGRmIFxnbG9iYWxccGRmbWFrZXBhZ2VkZXN0dHJ1ZSBcZmkKK30KKworCislIFRoZXNlIGNoYXJhY3RlcnMgZG8gbm90IHByaW50IHByb3Blcmx5IGluIHRoZSBDb21wdXRlciBNb2Rlcm4gcm9tYW4KKyUgZm9udHMsIHNvIHdlIG11c3QgdGFrZSBzcGVjaWFsIGNhcmUuICBUaGlzIGlzIG1vcmUgb3IgbGVzcyByZWR1bmRhbnQKKyUgd2l0aCB0aGUgVGV4aW5mbyBpbnB1dCBmb3JtYXQgc2V0dXAgYXQgdGhlIGVuZCBvZiB0aGlzIGZpbGUuCislIAorXGRlZlxhY3RpdmVjYXRjb2Rlc3slCisgIFxjYXRjb2RlYFwiPVxhY3RpdmUKKyAgXGNhdGNvZGVgXCQ9XGFjdGl2ZQorICBcY2F0Y29kZWBcPD1cYWN0aXZlCisgIFxjYXRjb2RlYFw+PVxhY3RpdmUKKyAgXGNhdGNvZGVgXFw9XGFjdGl2ZQorICBcY2F0Y29kZWBcXj1cYWN0aXZlCisgIFxjYXRjb2RlYFxfPVxhY3RpdmUKKyAgXGNhdGNvZGVgXHw9XGFjdGl2ZQorICBcY2F0Y29kZWBcfj1cYWN0aXZlCit9CisKKworJSBSZWFkIHRoZSB0b2MgZmlsZSwgd2hpY2ggaXMgZXNzZW50aWFsbHkgVGV4aW5mbyBpbnB1dC4KK1xkZWZccmVhZHRvY2ZpbGV7JQorICBcc2V0dXBkYXRhZmlsZQorICBcYWN0aXZlY2F0Y29kZXMKKyAgXGlucHV0IFxqb2JuYW1lLnRvYworfQorCitcbmV3c2tpcFxjb250ZW50c3JpZ2h0bWFyZ2luIFxjb250ZW50c3JpZ2h0bWFyZ2luPTFpbgorXG5ld2NvdW50XHNhdmVwYWdlbm8KK1xuZXdjb3VudFxsYXN0bmVnYXRpdmVwYWdlbm8gXGxhc3RuZWdhdGl2ZXBhZ2VubyA9IC0xCisKKyUgUHJlcGFyZSB0byByZWFkIHdoYXQgd2UndmUgd3JpdHRlbiB0byBcdG9jZmlsZS4KKyUKK1xkZWZcc3RhcnRjb250ZW50cyMxeyUKKyAgJSBJZiBAc2V0Y2hhcHRlcm5ld3BhZ2Ugb24sIGFuZCBAaGVhZGluZ3MgZG91YmxlLCB0aGUgY29udGVudHMgc2hvdWxkCisgICUgc3RhcnQgb24gYW4gb2RkIHBhZ2UsIHVubGlrZSBjaGFwdGVycy4gIFRodXMsIHdlIG1haW50YWluCisgICUgXGNvbnRlbnRzYWxpZ25tYWNybyBpbiBwYXJhbGxlbCB3aXRoIFxwYWdlYWxpZ25tYWNyby4KKyAgJSBGcm9tOiBUb3Jiam9ybiBHcmFubHVuZCA8dGVnZUBtYXRlbWF0aWsuc3Uuc2U+CisgIFxjb250ZW50c2FsaWdubWFjcm8KKyAgXGltbWVkaWF0ZVxjbG9zZW91dFx0b2NmaWxlCisgICUKKyAgJSBEb24ndCBuZWVkIHRvIHB1dCBgQ29udGVudHMnIG9yIGBTaG9ydCBDb250ZW50cycgaW4gdGhlIGhlYWRsaW5lLgorICAlIEl0IGlzIGFidW5kYW50bHkgY2xlYXIgd2hhdCB0aGV5IGFyZS4KKyAgXGRlZlx0aGlzY2hhcHRlcnt9JQorICBcY2hhcG1hY3JveyMxfXtZb21pdGZyb210b2N9e30lCisgICUKKyAgXHNhdmVwYWdlbm8gPSBccGFnZW5vCisgIFxiZWdpbmdyb3VwICAgICAgICAgICAgICAgICAgJSBTZXQgdXAgdG8gaGFuZGxlIGNvbnRlbnRzIGZpbGVzIHByb3Blcmx5LgorICAgIFxyYWdnZWRib3R0b20gICAgICAgICAgICAgICUgV29ycnkgbW9yZSBhYm91dCBicmVha3BvaW50cyB0aGFuIHRoZSBib3R0b20uCisgICAgXGFkdmFuY2VcaHNpemUgYnkgLVxjb250ZW50c3JpZ2h0bWFyZ2luICUgRG9uJ3QgdXNlIHRoZSBmdWxsIGxpbmUgbGVuZ3RoLgorICAgICUKKyAgICAlIFJvbWFuIG51bWVyYWxzIGZvciBwYWdlIG51bWJlcnMuCisgICAgXGlmbnVtIFxwYWdlbm8+MCBcZ2xvYmFsXHBhZ2VubyA9IFxsYXN0bmVnYXRpdmVwYWdlbm8gXGZpCit9CisKKworJSBOb3JtYWwgKGxvbmcpIHRvYy4KK1xkZWZcY29udGVudHN7JQorICBcc3RhcnRjb250ZW50c3tccHV0d29yZFRPQ30lCisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICBccmVhZHRvY2ZpbGUKKyAgICBcZmkKKyAgICBcdmZpbGwgXGVqZWN0CisgICAgXGNvbnRlbnRzYWxpZ25tYWNybyAlIGluIGNhc2UgQHNldGNoYXB0ZXJuZXdwYWdlIG9kZCBpcyBpbiBlZmZlY3QKKyAgICBcaWZlb2YgMSBcZWxzZQorICAgICAgXHBkZm1ha2VvdXRsaW5lcworICAgIFxmaQorICAgIFxjbG9zZWluIDEKKyAgXGVuZGdyb3VwCisgIFxsYXN0bmVnYXRpdmVwYWdlbm8gPSBccGFnZW5vCisgIFxnbG9iYWxccGFnZW5vID0gXHNhdmVwYWdlbm8KK30KKworJSBBbmQganVzdCB0aGUgY2hhcHRlcnMuCitcZGVmXHN1bW1hcnljb250ZW50c3slCisgIFxzdGFydGNvbnRlbnRze1xwdXR3b3JkU2hvcnRUT0N9JQorICAgICUKKyAgICBcbGV0XG51bWNoYXBlbnRyeSA9IFxzaG9ydGNoYXBlbnRyeQorICAgIFxsZXRcYXBwZW50cnkgPSBcc2hvcnRjaGFwZW50cnkKKyAgICBcbGV0XHVubmNoYXBlbnRyeSA9IFxzaG9ydHVubmNoYXBlbnRyeQorICAgICUgV2Ugd2FudCBhIHRydWUgcm9tYW4gaGVyZSBmb3IgdGhlIHBhZ2UgbnVtYmVycy4KKyAgICBcc2VjZm9udHMKKyAgICBcbGV0XHJtPVxzaG9ydGNvbnRybSBcbGV0XGJmPVxzaG9ydGNvbnRiZgorICAgIFxsZXRcc2w9XHNob3J0Y29udHNsIFxsZXRcdHQ9XHNob3J0Y29udHR0CisgICAgXHJtCisgICAgXGh5cGhlbnBlbmFsdHkgPSAxMDAwMAorICAgIFxhZHZhbmNlXGJhc2VsaW5lc2tpcCBieSAxcHQgJSBPcGVuIGl0IHVwIGEgbGl0dGxlLgorICAgIFxkZWZcbnVtc2VjZW50cnkjIzEjIzIjIzMjIzR7fQorICAgIFxsZXRcYXBwc2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFxudW1zdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcYXBwc3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXGxldFxudW1zdWJzdWJzZWNlbnRyeSA9IFxudW1zZWNlbnRyeQorICAgIFxsZXRcYXBwc3Vic3Vic2VjZW50cnkgPSBcbnVtc2VjZW50cnkKKyAgICBcbGV0XHVubnN1YnN1YnNlY2VudHJ5ID0gXG51bXNlY2VudHJ5CisgICAgXG9wZW5pbiAxIFxqb2JuYW1lLnRvYworICAgIFxpZmVvZiAxIFxlbHNlCisgICAgICBccmVhZHRvY2ZpbGUKKyAgICBcZmkKKyAgICBcY2xvc2VpbiAxCisgICAgXHZmaWxsIFxlamVjdAorICAgIFxjb250ZW50c2FsaWdubWFjcm8gJSBpbiBjYXNlIEBzZXRjaGFwdGVybmV3cGFnZSBvZGQgaXMgaW4gZWZmZWN0CisgIFxlbmRncm91cAorICBcbGFzdG5lZ2F0aXZlcGFnZW5vID0gXHBhZ2VubworICBcZ2xvYmFsXHBhZ2VubyA9IFxzYXZlcGFnZW5vCit9CitcbGV0XHNob3J0Y29udGVudHMgPSBcc3VtbWFyeWNvbnRlbnRzCisKKyUgVHlwZXNldCB0aGUgbGFiZWwgZm9yIGEgY2hhcHRlciBvciBhcHBlbmRpeCBmb3IgdGhlIHNob3J0IGNvbnRlbnRzLgorJSBUaGUgYXJnIGlzLCBlLmcuLCBgQScgZm9yIGFuIGFwcGVuZGl4LCBvciBgMycgZm9yIGEgY2hhcHRlci4KKyUKK1xkZWZcc2hvcnRjaGFwbGFiZWwjMXslCisgICUgVGhpcyBzcGFjZSBzaG91bGQgYmUgZW5vdWdoLCBzaW5jZSBhIHNpbmdsZSBudW1iZXIgaXMgLjVlbSwgYW5kIHRoZQorICAlIHdpZGVzdCBsZXR0ZXIgKE0pIGlzIDFlbSwgYXQgbGVhc3QgaW4gdGhlIENvbXB1dGVyIE1vZGVybiBmb250cy4KKyAgJSBCdXQgdXNlIFxoc3MganVzdCBpbiBjYXNlLgorICAlIChUaGlzIHNwYWNlIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZXh0cmEgc3BhY2UgdGhhdCBnZXRzIGFkZGVkIGFmdGVyCisgICUgdGhlIGxhYmVsOyB0aGF0IGdldHMgcHV0IGluIGJ5IFxzaG9ydGNoYXBlbnRyeSBhYm92ZS4pCisgICUKKyAgJSBXZSdkIGxpa2UgdG8gcmlnaHQtanVzdGlmeSBjaGFwdGVyIG51bWJlcnMsIGJ1dCB0aGF0IGxvb2tzIHN0cmFuZ2UKKyAgJSB3aXRoIGFwcGVuZGl4IGxldHRlcnMuICBBbmQgcmlnaHQtanVzdGlmeWluZyBudW1iZXJzIGFuZAorICAlIGxlZnQtanVzdGlmeWluZyBsZXR0ZXJzIGxvb2tzIHN0cmFuZ2Ugd2hlbiB0aGVyZSBpcyBsZXNzIHRoYW4gMTAKKyAgJSBjaGFwdGVycy4gIEhhdmUgdG8gcmVhZCB0aGUgd2hvbGUgdG9jIG9uY2UgdG8ga25vdyBob3cgbWFueSBjaGFwdGVycworICAlIHRoZXJlIGFyZSBiZWZvcmUgZGVjaWRpbmcgLi4uCisgIFxoYm94IHRvIDFlbXsjMVxoc3N9JQorfQorCislIFRoZXNlIG1hY3JvcyBnZW5lcmF0ZSBpbmRpdmlkdWFsIGVudHJpZXMgaW4gdGhlIHRhYmxlIG9mIGNvbnRlbnRzLgorJSBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNoYXB0ZXIgb3Igc2VjdGlvbiBuYW1lLgorJSBUaGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgcGFnZSBudW1iZXIuCislIFRoZSBhcmd1bWVudHMgaW4gYmV0d2VlbiBhcmUgdGhlIGNoYXB0ZXIgbnVtYmVyLCBzZWN0aW9uIG51bWJlciwgLi4uCisKKyUgQ2hhcHRlcnMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorXGRlZlxudW1jaGFwZW50cnkjMSMyIzMjNHtcZG9jaGFwZW50cnl7IzJcbGFiZWxzcGFjZSMxfXsjNH19CislCislIENoYXB0ZXJzLCBpbiB0aGUgc2hvcnQgdG9jLgorJSBTZWUgY29tbWVudHMgaW4gXGRvY2hhcGVudHJ5IHJlIHZib3ggYW5kIHJlbGF0ZWQgc2V0dGluZ3MuCitcZGVmXHNob3J0Y2hhcGVudHJ5IzEjMiMzIzR7JQorICBcdG9jZW50cnl7XHNob3J0Y2hhcGxhYmVseyMyfVxsYWJlbHNwYWNlICMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9JQorfQorCislIEFwcGVuZGljZXMsIGluIHRoZSBtYWluIGNvbnRlbnRzLgorJSBOZWVkIHRoZSB3b3JkIEFwcGVuZGl4LCBhbmQgYSBmaXhlZC1zaXplIGJveC4KKyUKK1xkZWZcYXBwZW5kaXhib3gjMXslCisgICUgV2UgdXNlIE0gc2luY2UgaXQncyBwcm9iYWJseSB0aGUgd2lkZXN0IGxldHRlci4KKyAgXHNldGJveDAgPSBcaGJveHtccHV0d29yZEFwcGVuZGl4e30gTX0lCisgIFxoYm94IHRvIFx3ZDB7XHB1dHdvcmRBcHBlbmRpeHt9ICMxXGhzc319CislCitcZGVmXGFwcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5e1xhcHBlbmRpeGJveHsjMn1cbGFiZWxzcGFjZSMxfXsjNH19CisKKyUgVW5udW1iZXJlZCBjaGFwdGVycy4KK1xkZWZcdW5uY2hhcGVudHJ5IzEjMiMzIzR7XGRvY2hhcGVudHJ5eyMxfXsjNH19CitcZGVmXHNob3J0dW5uY2hhcGVudHJ5IzEjMiMzIzR7XHRvY2VudHJ5eyMxfXtcZG9zaG9ydHBhZ2Vub1xiZ3JvdXAjNFxlZ3JvdXB9fQorCislIFNlY3Rpb25zLgorXGRlZlxudW1zZWNlbnRyeSMxIzIjMyM0e1xkb3NlY2VudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorXGxldFxhcHBzZWNlbnRyeT1cbnVtc2VjZW50cnkKK1xkZWZcdW5uc2VjZW50cnkjMSMyIzMjNHtcZG9zZWNlbnRyeXsjMX17IzR9fQorCislIFN1YnNlY3Rpb25zLgorXGRlZlxudW1zdWJzZWNlbnRyeSMxIzIjMyM0e1xkb3N1YnNlY2VudHJ5eyMyXGxhYmVsc3BhY2UjMX17IzR9fQorXGxldFxhcHBzdWJzZWNlbnRyeT1cbnVtc3Vic2VjZW50cnkKK1xkZWZcdW5uc3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzZWNlbnRyeXsjMX17IzR9fQorCislIEFuZCBzdWJzdWJzZWN0aW9ucy4KK1xkZWZcbnVtc3Vic3Vic2VjZW50cnkjMSMyIzMjNHtcZG9zdWJzdWJzZWNlbnRyeXsjMlxsYWJlbHNwYWNlIzF9eyM0fX0KK1xsZXRcYXBwc3Vic3Vic2VjZW50cnk9XG51bXN1YnN1YnNlY2VudHJ5CitcZGVmXHVubnN1YnN1YnNlY2VudHJ5IzEjMiMzIzR7XGRvc3Vic3Vic2VjZW50cnl7IzF9eyM0fX0KKworJSBUaGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgaW5kZW50YXRpb24gb2YgdGhlIHZhcmlvdXMgbGV2ZWxzLgorJSBTYW1lIGFzIFxkZWZhdWx0cGFyaW5kZW50LgorXG5ld2RpbWVuXHRvY2luZGVudCBcdG9jaW5kZW50ID0gMTVwdAorCislIE5vdyBmb3IgdGhlIGFjdHVhbCB0eXBlc2V0dGluZy4gSW4gYWxsIHRoZXNlLCAjMSBpcyB0aGUgdGV4dCBhbmQgIzIgaXMgdGhlCislIHBhZ2UgbnVtYmVyLgorJQorJSBJZiB0aGUgdG9jIGhhcyB0byBiZSBicm9rZW4gb3ZlciBwYWdlcywgd2Ugd2FudCBpdCB0byBiZSBhdCBjaGFwdGVycworJSBpZiBhdCBhbGwgcG9zc2libGU7IGhlbmNlIHRoZSBccGVuYWx0eS4KK1xkZWZcZG9jaGFwZW50cnkjMSMyeyUKKyAgIFxwZW5hbHR5LTMwMCBcdnNraXAxXGJhc2VsaW5lc2tpcCBwbHVzLjMzXGJhc2VsaW5lc2tpcCBtaW51cy4yNVxiYXNlbGluZXNraXAKKyAgIFxiZWdpbmdyb3VwCisgICAgIFxjaGFwZW50cnlmb250cworICAgICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorICAgXGVuZGdyb3VwCisgICBcbm9icmVha1x2c2tpcCAuMjVcYmFzZWxpbmVza2lwIHBsdXMuMVxiYXNlbGluZXNraXAKK30KKworXGRlZlxkb3NlY2VudHJ5IzEjMntcYmVnaW5ncm91cAorICBcc2VjZW50cnlmb250cyBcbGVmdHNraXA9XHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0yXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCitcZGVmXGRvc3Vic3Vic2VjZW50cnkjMSMye1xiZWdpbmdyb3VwCisgIFxzdWJzdWJzZWNlbnRyeWZvbnRzIFxsZWZ0c2tpcD0zXHRvY2luZGVudAorICBcdG9jZW50cnl7IzF9e1xkb3BhZ2Vub1xiZ3JvdXAjMlxlZ3JvdXB9JQorXGVuZGdyb3VwfQorCislIFdlIHVzZSB0aGUgc2FtZSBcZW50cnkgbWFjcm8gYXMgZm9yIHRoZSBpbmRleCBlbnRyaWVzLgorXGxldFx0b2NlbnRyeSA9IFxlbnRyeQorCislIFNwYWNlIGJldHdlZW4gY2hhcHRlciAob3Igd2hhdGV2ZXIpIG51bWJlciBhbmQgdGhlIHRpdGxlLgorXGRlZlxsYWJlbHNwYWNle1xoc2tpcDFlbSBccmVsYXh9CisKK1xkZWZcZG9wYWdlbm8jMXt7XHJtICMxfX0KK1xkZWZcZG9zaG9ydHBhZ2VubyMxe3tccm0gIzF9fQorCitcZGVmXGNoYXBlbnRyeWZvbnRze1xzZWNmb250cyBccm19CitcZGVmXHNlY2VudHJ5Zm9udHN7XHRleHRmb250c30KK1xkZWZcc3Vic2VjZW50cnlmb250c3tcdGV4dGZvbnRzfQorXGRlZlxzdWJzdWJzZWNlbnRyeWZvbnRze1x0ZXh0Zm9udHN9CisKKworXG1lc3NhZ2V7ZW52aXJvbm1lbnRzLH0KKyUgQGZvbyAuLi4gQGVuZCBmb28uCisKKyUgQHBvaW50e30sIEByZXN1bHR7fSwgQGV4cGFuc2lvbnt9LCBAcHJpbnR7fSwgQGVxdWl2e30uCislCislIFNpbmNlIHRoZXNlIGNoYXJhY3RlcnMgYXJlIHVzZWQgaW4gZXhhbXBsZXMsIGl0IHNob3VsZCBiZSBhbiBldmVuIG51bWJlciBvZgorJSBcdHQgd2lkdGhzLiBFYWNoIFx0dCBjaGFyYWN0ZXIgaXMgMWVuLCBzbyB0d28gbWFrZXMgaXQgMWVtLgorJQorXGRlZlxwb2ludHskXHN0YXIkfQorXGRlZlxyZXN1bHR7XGxlYXZldm1vZGVccmFpc2UuMTVleFxoYm94IHRvIDFlbXtcaGZpbCRcUmlnaHRhcnJvdyRcaGZpbH19CitcZGVmXGV4cGFuc2lvbntcbGVhdmV2bW9kZVxyYWlzZS4xZXhcaGJveCB0byAxZW17XGhmaWwkXG1hcHN0byRcaGZpbH19CitcZGVmXHByaW50e1xsZWF2ZXZtb2RlXGxvd2VyLjFleFxoYm94IHRvIDFlbXtcaGZpbCRcZGFzaHYkXGhmaWx9fQorXGRlZlxlcXVpdntcbGVhdmV2bW9kZVxsb3dlci4xZXhcaGJveCB0byAxZW17XGhmaWwkXHB0ZXhlcXVpdiRcaGZpbH19CisKKyUgVGhlIEBlcnJvcnt9IGNvbW1hbmQuCislIEFkYXB0ZWQgZnJvbSB0aGUgVGVYYm9vaydzIFxib3hpdC4KKyUKK1xuZXdib3hcZXJyb3Jib3gKKyUKK3tcdGVudHQgXGdsb2JhbFxkaW1lbjAgPSAzZW19JSBXaWR0aCBvZiB0aGUgYm94LgorXGRpbWVuMiA9IC41NXB0ICUgVGhpY2tuZXNzIG9mIHJ1bGVzCislIFRoZSB0ZXh0LiAoYHInIGlzIG9wZW4gb24gdGhlIHJpZ2h0LCBgZScgc29tZXdoYXQgbGVzcyBzbyBvbiB0aGUgbGVmdC4pCitcc2V0Ym94MCA9IFxoYm94e1xrZXJuLS43NXB0IFx0ZW5zZiBlcnJvclxrZXJuLTEuNXB0fQorJQorXHNldGJveFxlcnJvcmJveD1caGJveCB0byBcZGltZW4we1xoZmlsCisgICBcaHNpemUgPSBcZGltZW4wIFxhZHZhbmNlXGhzaXplIGJ5IC01LjhwdCAlIFNwYWNlIHRvIGxlZnQrcmlnaHQuCisgICBcYWR2YW5jZVxoc2l6ZSBieSAtMlxkaW1lbjIgJSBSdWxlcy4KKyAgIFx2Ym94eyUKKyAgICAgIFxocnVsZSBoZWlnaHRcZGltZW4yCisgICAgICBcaGJveHtcdnJ1bGUgd2lkdGhcZGltZW4yIFxrZXJuM3B0ICAgICAgICAgICUgU3BhY2UgdG8gbGVmdCBvZiB0ZXh0LgorICAgICAgICAgXHZ0b3B7XGtlcm4yLjRwdCBcYm94MCBca2VybjIuNHB0fSUgU3BhY2UgYWJvdmUvYmVsb3cuCisgICAgICAgICBca2VybjNwdFx2cnVsZSB3aWR0aFxkaW1lbjJ9JSBTcGFjZSB0byByaWdodC4KKyAgICAgIFxocnVsZSBoZWlnaHRcZGltZW4yfQorICAgIFxoZmlsfQorJQorXGRlZlxlcnJvcntcbGVhdmV2bW9kZVxsb3dlci43ZXhcY29weVxlcnJvcmJveH0KKworJSBAdGV4IC4uLiBAZW5kIHRleCAgICBlc2NhcGVzIGludG8gcmF3IFRleCB0ZW1wb3JhcmlseS4KKyUgT25lIGV4Y2VwdGlvbjogQCBpcyBzdGlsbCBhbiBlc2NhcGUgY2hhcmFjdGVyLCBzbyB0aGF0IEBlbmQgdGV4IHdvcmtzLgorJSBCdXQgXEAgb3IgQEAgd2lsbCBnZXQgYSBwbGFpbiB0ZXggQCBjaGFyYWN0ZXIuCisKK1xlbnZkZWZcdGV4eyUKKyAgXGNhdGNvZGUgYFxcPTAgXGNhdGNvZGUgYFx7PTEgXGNhdGNvZGUgYFx9PTIKKyAgXGNhdGNvZGUgYFwkPTMgXGNhdGNvZGUgYFwmPTQgXGNhdGNvZGUgYFwjPTYKKyAgXGNhdGNvZGUgYFxePTcgXGNhdGNvZGUgYFxfPTggXGNhdGNvZGUgYFx+PVxhY3RpdmUgXGxldH49XHRpZQorICBcY2F0Y29kZSBgXCU9MTQKKyAgXGNhdGNvZGUgYFwrPVxvdGhlcgorICBcY2F0Y29kZSBgXCI9XG90aGVyCisgIFxjYXRjb2RlIGBcfD1cb3RoZXIKKyAgXGNhdGNvZGUgYFw8PVxvdGhlcgorICBcY2F0Y29kZSBgXD49XG90aGVyCisgIFxlc2NhcGVjaGFyPWBcXAorICAlCisgIFxsZXRcYj1ccHRleGIKKyAgXGxldFxidWxsZXQ9XHB0ZXhidWxsZXQKKyAgXGxldFxjPVxwdGV4YworICBcbGV0XCw9XHB0ZXhjb21tYQorICBcbGV0XC49XHB0ZXhkb3QKKyAgXGxldFxkb3RzPVxwdGV4ZG90cworICBcbGV0XGVxdWl2PVxwdGV4ZXF1aXYKKyAgXGxldFwhPVxwdGV4ZXhjbGFtCisgIFxsZXRcaT1ccHRleGkKKyAgXGxldFxpbmRlbnQ9XHB0ZXhpbmRlbnQKKyAgXGxldFxub2luZGVudD1ccHRleG5vaW5kZW50CisgIFxsZXRcez1ccHRleGxicmFjZQorICBcbGV0XCs9XHRhYmFsaWduCisgIFxsZXRcfT1ccHRleHJicmFjZQorICBcbGV0XC89XHB0ZXhzbGFzaAorICBcbGV0XCo9XHB0ZXhzdGFyCisgIFxsZXRcdD1ccHRleHQKKyAgXGxldFxmcmVuY2hzcGFjaW5nPVxwbGFpbmZyZW5jaHNwYWNpbmcKKyAgJQorICBcZGVmXGVuZGxkb3Rze1xtYXRoaW5uZXJ7XGxkb3RzXGxkb3RzXGxkb3RzXGxkb3RzfX0lCisgIFxkZWZcZW5kZG90c3tccmVsYXhcaWZtbW9kZVxlbmRsZG90c1xlbHNlJFxtYXRoc3Vycm91bmQ9MHB0IFxlbmRsZG90c1wsJFxmaX0lCisgIFxkZWZcQHtAfSUKK30KKyUgVGhlcmUgaXMgbm8gbmVlZCB0byBkZWZpbmUgXEV0ZXguCisKKyUgRGVmaW5lIEBsaXNwIC4uLiBAZW5kIGxpc3AuCislIEBsaXNwIGVudmlyb25tZW50IGZvcm1zIGEgZ3JvdXAgc28gaXQgY2FuIHJlYmluZCB0aGluZ3MsCislIGluY2x1ZGluZyB0aGUgZGVmaW5pdGlvbiBvZiBAZW5kIGxpc3AgKHdoaWNoIG5vcm1hbGx5IGlzIGVycm9uZW91cykuCisKKyUgQW1vdW50IHRvIG5hcnJvdyB0aGUgbWFyZ2lucyBieSBmb3IgQGxpc3AuCitcbmV3c2tpcFxsaXNwbmFycm93aW5nIFxsaXNwbmFycm93aW5nPTAuNGluCisKKyUgVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiB0aGF0IF5eTSBnZXRzIGluc2lkZSBAbGlzcCwgQGV4YW1wbGUsIGFuZCBvdGhlcgorJSBzdWNoIGVudmlyb25tZW50cy4gIFxudWxsIGlzIGJldHRlciB0aGFuIGEgc3BhY2UsIHNpbmNlIGl0IGRvZXNuJ3QKKyUgaGF2ZSBhbnkgd2lkdGguCitcZGVmXGxpc3BwYXJ7XG51bGxcZW5kZ3JhZn0KKworJSBUaGlzIHNwYWNlIGlzIGFsd2F5cyBwcmVzZW50IGFib3ZlIGFuZCBiZWxvdyBlbnZpcm9ubWVudHMuCitcbmV3c2tpcFxlbnZza2lwYW1vdW50IFxlbnZza2lwYW1vdW50ID0gMHB0CisKKyUgTWFrZSBzcGFjaW5nIGFuZCBiZWxvdyBlbnZpcm9ubWVudCBzeW1tZXRyaWNhbC4gIFdlIHVzZSBccGFyc2tpcCBoZXJlCislIHRvIGhlbHAgaW4gZG9pbmcgdGhhdCwgc2luY2UgaW4gQGV4YW1wbGUtbGlrZSBlbnZpcm9ubWVudHMgXHBhcnNraXAKKyUgaXMgcmVzZXQgdG8gemVybzsgdGh1cyB0aGUgXGFmdGVyZW52YnJlYWsgaW5zZXJ0cyBubyBzcGFjZSAtLSBidXQgdGhlCislIHN0YXJ0IG9mIHRoZSBuZXh0IHBhcmFncmFwaCB3aWxsIGluc2VydCBccGFyc2tpcC4KKyUKK1xkZWZcYWJvdmVlbnZicmVha3t7JQorICAlID0xMDAwMCBpbnN0ZWFkIG9mIDwxMDAwMCBiZWNhdXNlIG9mIGEgc3BlY2lhbCBjYXNlIGluIFxpdGVtenp6IGFuZAorICAlIFxzZWN0aW9uaGVhZGluZywgcS52LgorICBcaWZudW0gXGxhc3RwZW5hbHR5PTEwMDAwIFxlbHNlCisgICAgXGFkdmFuY2VcZW52c2tpcGFtb3VudCBieSBccGFyc2tpcAorICAgIFxlbmRncmFmCisgICAgXGlmZGltXGxhc3Rza2lwPFxlbnZza2lwYW1vdW50CisgICAgICBccmVtb3ZlbGFzdHNraXAKKyAgICAgICUgaXQncyBub3QgYSBnb29kIHBsYWNlIHRvIGJyZWFrIGlmIHRoZSBsYXN0IHBlbmFsdHkgd2FzIFxub2JyZWFrCisgICAgICAlIG9yIGJldHRlciAuLi4KKyAgICAgIFxpZm51bVxsYXN0cGVuYWx0eTwxMDAwMCBccGVuYWx0eS01MCBcZmkKKyAgICAgIFx2c2tpcFxlbnZza2lwYW1vdW50CisgICAgXGZpCisgIFxmaQorfX0KKworXGxldFxhZnRlcmVudmJyZWFrID0gXGFib3ZlZW52YnJlYWsKKworJSBcbm9uYXJyb3dpbmcgaXMgYSBmbGFnLiAgSWYgInNldCIsIEBsaXNwIGV0YyBkb24ndCBuYXJyb3cgbWFyZ2luczsgaXQgd2lsbAorJSBhbHNvIGNsZWFyIGl0LCBzbyB0aGF0IGl0cyBlbWJlZGRlZCBlbnZpcm9ubWVudHMgZG8gdGhlIG5hcnJvd2luZyBhZ2Fpbi4KK1xsZXRcbm9uYXJyb3dpbmc9XHJlbGF4CisKKyUgQGNhcnRvdWNoZSAuLi4gQGVuZCBjYXJ0b3VjaGU6IGRyYXcgcmVjdGFuZ2xlIHcvcm91bmRlZCBjb3JuZXJzIGFyb3VuZAorJSBlbnZpcm9ubWVudCBjb250ZW50cy4KK1xmb250XGNpcmNsZT1sY2lyY2xlMTAKK1xuZXdkaW1lblxjaXJjdGhpY2sKK1xuZXdkaW1lblxjYXJ0b3V0ZXJcbmV3ZGltZW5cY2FydGlubmVyCitcbmV3c2tpcFxub3JtYnNraXBcbmV3c2tpcFxub3JtcHNraXBcbmV3c2tpcFxub3JtbHNraXAKK1xjaXJjdGhpY2s9XGZvbnRkaW1lbjhcY2lyY2xlCislCitcZGVmXGN0bHt7XGNpcmNsZVxjaGFyJzAxM1xoc2tpcCAtNnB0fX0lIDZwdCBmcm9tIHBsIGZpbGU6IDEvMmNoYXJ3aWR0aAorXGRlZlxjdHJ7e1xoc2tpcCA2cHRcY2lyY2xlXGNoYXInMDEwfX0KK1xkZWZcY2Jse3tcY2lyY2xlXGNoYXInMDEyXGhza2lwIC02cHR9fQorXGRlZlxjYnJ7e1xoc2tpcCA2cHRcY2lyY2xlXGNoYXInMDExfX0KK1xkZWZcY2FydHRvcHtcaGJveCB0byBcY2FydG91dGVye1xoc2tpcFxsc2tpcAorICAgICAgICBcY3RsXGxlYWRlcnNcaHJ1bGUgaGVpZ2h0XGNpcmN0aGlja1xoZmlsXGN0cgorICAgICAgICBcaHNraXBccnNraXB9fQorXGRlZlxjYXJ0Ym90e1xoYm94IHRvIFxjYXJ0b3V0ZXJ7XGhza2lwXGxza2lwCisgICAgICAgIFxjYmxcbGVhZGVyc1xocnVsZSBoZWlnaHRcY2lyY3RoaWNrXGhmaWxcY2JyCisgICAgICAgIFxoc2tpcFxyc2tpcH19CislCitcbmV3c2tpcFxsc2tpcFxuZXdza2lwXHJza2lwCisKK1xlbnZkZWZcY2FydG91Y2hleyUKKyAgXGlmaG1vZGVccGFyXGZpICAlIGNhbid0IGJlIGluIHRoZSBtaWRzdCBvZiBhIHBhcmFncmFwaC4KKyAgXHN0YXJ0c2F2aW5naW5zZXJ0cworICBcbHNraXA9XGxlZnRza2lwIFxyc2tpcD1ccmlnaHRza2lwCisgIFxsZWZ0c2tpcD0wcHRccmlnaHRza2lwPTBwdCAlIHdlIHdhbnQgdGhlc2UgKm91dHNpZGUqLgorICBcY2FydGlubmVyPVxoc2l6ZSBcYWR2YW5jZVxjYXJ0aW5uZXIgYnktXGxza2lwCisgIFxhZHZhbmNlXGNhcnRpbm5lciBieS1ccnNraXAKKyAgXGNhcnRvdXRlcj1caHNpemUKKyAgXGFkdmFuY2VcY2FydG91dGVyIGJ5IDE4LjRwdAklIGFsbG93IGZvciAzcHQga2VybnMgb24gZWl0aGVyCisJCQkJJSBzaWRlLCBhbmQgZm9yIDZwdCB3YXN0ZSBmcm9tCisJCQkJJSBlYWNoIGNvcm5lciBjaGFyLCBhbmQgcnVsZSB0aGlja25lc3MKKyAgXG5vcm1ic2tpcD1cYmFzZWxpbmVza2lwIFxub3JtcHNraXA9XHBhcnNraXAgXG5vcm1sc2tpcD1cbGluZXNraXAKKyAgJSBGbGFnIHRvIHRlbGwgQGxpc3AsIGV0Yy4sIG5vdCB0byBuYXJyb3cgbWFyZ2luLgorICBcbGV0XG5vbmFycm93aW5nID0gdCUKKyAgXHZib3hcYmdyb3VwCisgICAgICBcYmFzZWxpbmVza2lwPTBwdFxwYXJza2lwPTBwdFxsaW5lc2tpcD0wcHQKKyAgICAgIFxjYXJ0dG9wCisgICAgICBcaGJveFxiZ3JvdXAKKwkgIFxoc2tpcFxsc2tpcAorCSAgXHZydWxlXGtlcm4zcHQKKwkgIFx2Ym94XGJncm91cAorCSAgICAgIFxrZXJuM3B0CisJICAgICAgXGhzaXplPVxjYXJ0aW5uZXIKKwkgICAgICBcYmFzZWxpbmVza2lwPVxub3JtYnNraXAKKwkgICAgICBcbGluZXNraXA9XG5vcm1sc2tpcAorCSAgICAgIFxwYXJza2lwPVxub3JtcHNraXAKKwkgICAgICBcdnNraXAgLVxwYXJza2lwCisJICAgICAgXGNvbW1lbnQgJSBGb3IgZXhwbGFuYXRpb24sIHNlZSB0aGUgZW5kIG9mIFxkZWZcZ3JvdXAuCit9CitcZGVmXEVjYXJ0b3VjaGV7JQorICAgICAgICAgICAgICBcaWZobW9kZVxwYXJcZmkKKwkgICAgICBca2VybjNwdAorCSAgXGVncm91cAorCSAgXGtlcm4zcHRcdnJ1bGUKKwkgIFxoc2tpcFxyc2tpcAorICAgICAgXGVncm91cAorICAgICAgXGNhcnRib3QKKyAgXGVncm91cAorICBcY2hlY2tpbnNlcnRzCit9CisKKworJSBUaGlzIG1hY3JvIGlzIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFsbCB0aGUgQGV4YW1wbGUgdmFyaWFudHMsCislIGluc2lkZSBhIGdyb3VwLgorXGRlZlxub25maWxsc3RhcnR7JQorICBcYWJvdmVlbnZicmVhaworICBcaGZ1enogPSAxMnB0ICUgRG9uJ3QgYmUgZnVzc3kKKyAgXHNlcHNwYWNlcyAlIE1ha2Ugc3BhY2VzIGJlIHdvcmQtc2VwYXJhdG9ycyByYXRoZXIgdGhhbiBzcGFjZSB0b2tlbnMuCisgIFxsZXRccGFyID0gXGxpc3BwYXIgJSBkb24ndCBpZ25vcmUgYmxhbmsgbGluZXMKKyAgXG9iZXlsaW5lcyAlIGVhY2ggbGluZSBvZiBpbnB1dCBpcyBhIGxpbmUgb2Ygb3V0cHV0CisgIFxwYXJza2lwID0gMHB0CisgIFxwYXJpbmRlbnQgPSAwcHQKKyAgXGVtZXJnZW5jeXN0cmV0Y2ggPSAwcHQgJSBkb24ndCB0cnkgdG8gYXZvaWQgb3ZlcmZ1bGwgYm94ZXMKKyAgXGlmeFxub25hcnJvd2luZ1xyZWxheAorICAgIFxhZHZhbmNlIFxsZWZ0c2tpcCBieSBcbGlzcG5hcnJvd2luZworICAgIFxleGRlbnRhbW91bnQ9XGxpc3BuYXJyb3dpbmcKKyAgXGVsc2UKKyAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CisgIFxmaQorICBcbGV0XGV4ZGVudD1cbm9maWxsZXhkZW50Cit9CisKKyUgSWYgeW91IHdhbnQgYWxsIGV4YW1wbGVzIGV0Yy4gc21hbGw6IEBzZXQgZGlzcGVudnNpemUgc21hbGwuCislIElmIHlvdSB3YW50IGV2ZW4gc21hbGwgZXhhbXBsZXMgdGhlIGZ1bGwgc2l6ZTogQHNldCBkaXNwZW52c2l6ZSBub3NtYWxsLgorJSBUaGlzIGFmZmVjdHMgdGhlIGZvbGxvd2luZyBkaXNwbGF5ZWQgZW52aXJvbm1lbnRzOgorJSAgICBAZXhhbXBsZSwgQGRpc3BsYXksIEBmb3JtYXQsIEBsaXNwCislCitcZGVmXHNtYWxsd29yZHtzbWFsbH0KK1xkZWZcbm9zbWFsbHdvcmR7bm9zbWFsbH0KK1xsZXRcU0VUZGlzcGVudnNpemVccmVsYXgKK1xkZWZcc2V0bm9ybWFsZGlzcGVudnslCisgIFxpZnhcU0VUZGlzcGVudnNpemVcc21hbGx3b3JkCisgICAgXHNtYWxsZXhhbXBsZWZvbnRzIFxybQorICBcZmkKK30KK1xkZWZcc2V0c21hbGxkaXNwZW52eyUKKyAgXGlmeFxTRVRkaXNwZW52c2l6ZVxub3NtYWxsd29yZAorICBcZWxzZQorICAgIFxzbWFsbGV4YW1wbGVmb250cyBccm0KKyAgXGZpCit9CisKKyUgV2Ugb2Z0ZW4gZGVmaW5lIHR3byBlbnZpcm9ubWVudHMsIEBmb28gYW5kIEBzbWFsbGZvby4KKyUgTGV0J3MgZG8gaXQgYnkgb25lIGNvbW1hbmQ6CitcZGVmXG1ha2VkaXNwZW52ICMxIzJ7CisgIFxleHBhbmRhZnRlclxlbnZkZWZcY3NuYW1lIzFcZW5kY3NuYW1lIHtcc2V0bm9ybWFsZGlzcGVudiAjMn0KKyAgXGV4cGFuZGFmdGVyXGVudmRlZlxjc25hbWUgc21hbGwjMVxlbmRjc25hbWUge1xzZXRzbWFsbGRpc3BlbnYgIzJ9CisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIEUjMVxlbmRjc25hbWUgXGFmdGVyZW52YnJlYWsKKyAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgRXNtYWxsIzFcZW5kY3NuYW1lIFxhZnRlcmVudmJyZWFrCit9CisKKyUgRGVmaW5lIHR3byBzeW5vbnltczoKK1xkZWZcbWFrZXR3b2Rpc3BlbnZzICMxIzIjM3sKKyAgXG1ha2VkaXNwZW52eyMxfXsjM30KKyAgXG1ha2VkaXNwZW52eyMyfXsjM30KK30KKworJSBAbGlzcDogaW5kZW50ZWQsIG5hcnJvd2VkLCB0eXBld3JpdGVyIGZvbnQ7IEBleGFtcGxlOiBzYW1lIGFzIEBsaXNwLgorJQorJSBAc21hbGxleGFtcGxlIGFuZCBAc21hbGxsaXNwOiB1c2Ugc21hbGxlciBmb250cy4KKyUgT3JpZ2luYWxseSBjb250cmlidXRlZCBieSBQYXZlbEB4ZXJveC4KKyUKK1xtYWtldHdvZGlzcGVudnMge2xpc3B9e2V4YW1wbGV9eyUKKyAgXG5vbmZpbGxzdGFydAorICBcdHQKKyAgXGxldFxrYmRmb250ID0gXGtiZGV4YW1wbGVmb250ICUgQWxsb3cgQGtiZCB0byBkbyBzb21ldGhpbmcgc3BlY2lhbC4KKyAgXGdvYmJsZSAgICAgICAlIGVhdCByZXR1cm4KK30KKworJSBAZGlzcGxheS9Ac21hbGxkaXNwbGF5OiBzYW1lIGFzIEBsaXNwIGV4Y2VwdCBrZWVwIGN1cnJlbnQgZm9udC4KKyUKK1xtYWtlZGlzcGVudiB7ZGlzcGxheX17JQorICBcbm9uZmlsbHN0YXJ0CisgIFxnb2JibGUKK30KKworJSBAZm9ybWF0L0BzbWFsbGZvcm1hdDogc2FtZSBhcyBAZGlzcGxheSBleGNlcHQgZG9uJ3QgbmFycm93IG1hcmdpbnMuCislCitcbWFrZWRpc3BlbnZ7Zm9ybWF0fXslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQorICBcbm9uZmlsbHN0YXJ0CisgIFxnb2JibGUKK30KKworJSBAZmx1c2hsZWZ0OiBzYW1lIGFzIEBmb3JtYXQsIGJ1dCBkb2Vzbid0IG9iZXkgXFNFVGRpc3BlbnZzaXplLgorXGVudmRlZlxmbHVzaGxlZnR7JQorICBcbGV0XG5vbmFycm93aW5nID0gdCUKKyAgXG5vbmZpbGxzdGFydAorICBcZ29iYmxlCit9CitcbGV0XEVmbHVzaGxlZnQgPSBcYWZ0ZXJlbnZicmVhaworCislIEBmbHVzaHJpZ2h0LgorJQorXGVudmRlZlxmbHVzaHJpZ2h0eyUKKyAgXGxldFxub25hcnJvd2luZyA9IHQlCisgIFxub25maWxsc3RhcnQKKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgMHB0IHBsdXMgMWZpbGwKKyAgXGdvYmJsZQorfQorXGxldFxFZmx1c2hyaWdodCA9IFxhZnRlcmVudmJyZWFrCisKKworJSBAcXVvdGF0aW9uIGRvZXMgbm9ybWFsIGxpbmVicmVha2luZyAoaGVuY2Ugd2UgY2FuJ3QgdXNlIFxub25maWxsc3RhcnQpCislIGFuZCBuYXJyb3dzIHRoZSBtYXJnaW5zLiAgV2Uga2VlcCBccGFyc2tpcCBub256ZXJvIGluIGdlbmVyYWwsIHNpbmNlCislIHdlJ3JlIGRvaW5nIG5vcm1hbCBmaWxsaW5nLiAgU28sIHdoZW4gdXNpbmcgXGFib3ZlZW52YnJlYWsgYW5kCislIFxhZnRlcmVudmJyZWFrLCB0ZW1wb3JhcmlseSBtYWtlIFxwYXJza2lwIDAuCislCitcZW52ZGVmXHF1b3RhdGlvbnslCisgIHtccGFyc2tpcD0wcHQgXGFib3ZlZW52YnJlYWt9JSBiZWNhdXNlIFxhYm92ZWVudmJyZWFrIGluc2VydHMgXHBhcnNraXAKKyAgXHBhcmluZGVudD0wcHQKKyAgJQorICAlIEBjYXJ0b3VjaGUgZGVmaW5lcyBcbm9uYXJyb3dpbmcgdG8gaW5oaWJpdCBuYXJyb3dpbmcgYXQgbmV4dCBsZXZlbCBkb3duLgorICBcaWZ4XG5vbmFycm93aW5nXHJlbGF4CisgICAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcYWR2YW5jZVxyaWdodHNraXAgYnkgXGxpc3BuYXJyb3dpbmcKKyAgICBcZXhkZW50YW1vdW50ID0gXGxpc3BuYXJyb3dpbmcKKyAgXGVsc2UKKyAgICBcbGV0XG5vbmFycm93aW5nID0gXHJlbGF4CisgIFxmaQorICBccGFyc2VhcmdccXVvdGF0aW9ubGFiZWwKK30KKworJSBXZSBoYXZlIHJldGFpbmVkIGEgbm9uemVybyBwYXJza2lwIGZvciB0aGUgZW52aXJvbm1lbnQsIHNpbmNlIHdlJ3JlCislIGRvaW5nIG5vcm1hbCBmaWxsaW5nLgorJQorXGRlZlxFcXVvdGF0aW9ueyUKKyAgXHBhcgorICBcaWZ4XHF1b3RhdGlvbmF1dGhvclx1bmRlZmluZWRcZWxzZQorICAgICUgaW5kZW50IGEgYml0LgorICAgIFxsZWZ0bGluZXtca2VybiAyXGxlZnRza2lwIFxzbCAtLS1ccXVvdGF0aW9uYXV0aG9yfSUKKyAgXGZpCisgIHtccGFyc2tpcD0wcHQgXGFmdGVyZW52YnJlYWt9JQorfQorCislIElmIHdlJ3JlIGdpdmVuIGFuIGFyZ3VtZW50LCB0eXBlc2V0IGl0IGluIGJvbGQgd2l0aCBhIGNvbG9uIGFmdGVyLgorXGRlZlxxdW90YXRpb25sYWJlbCMxeyUKKyAgXGRlZlx0ZW1weyMxfSUKKyAgXGlmeFx0ZW1wXGVtcHR5IFxlbHNlCisgICAge1xiZiAjMTogfSUKKyAgXGZpCit9CisKKworJSBMYVRlWC1saWtlIEB2ZXJiYXRpbS4uLkBlbmQgdmVyYmF0aW0gYW5kIEB2ZXJiezxjaGFyPi4uLjxjaGFyPn0KKyUgSWYgd2Ugd2FudCB0byBhbGxvdyBhbnkgPGNoYXI+IGFzIGRlbGltaXRlciwKKyUgd2UgbmVlZCB0aGUgY3VybHkgYnJhY2VzIHNvIHRoYXQgbWFrZWluZm8gc2VlcyB0aGUgQHZlcmIgY29tbWFuZCwgZWc6CislIGBAdmVyYnguLi54JyB3b3VsZCBsb29rIGxpa2UgdGhlICdAdmVyYngnIGNvbW1hbmQuICAtLWphbm5la2VAZ251Lm9yZworJQorJSBbS251dGhdOiBEb25hbGQgRXJ2aW4gS251dGgsIDE5OTYuICBUaGUgVGVYYm9vay4KKyUKKyUgW0tudXRoXSBwLjM0NDsgb25seSB3ZSBuZWVkIHRvIGRvIHRoZSBvdGhlciBjaGFyYWN0ZXJzIFRleGluZm8gc2V0cworJSBhY3RpdmUgdG9vLiAgT3RoZXJ3aXNlLCB0aGV5IGdldCBsb3N0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb24gYQorJSB2ZXJiYXRpbSBsaW5lLgorXGRlZlxkb3NwZWNpYWxzeyUKKyAgXGRvXCBcZG9cXFxkb1x7XGRvXH1cZG9cJFxkb1wmJQorICBcZG9cI1xkb1xeXGRvXF5eS1xkb1xfXGRvXF5eQVxkb1wlXGRvXH4lCisgIFxkb1w8XGRvXD5cZG9cfFxkb1xAXGRvK1xkb1wiJQorfQorJQorJSBbS251dGhdIHAuIDM4MAorXGRlZlx1bmNhdGNvZGVzcGVjaWFsc3slCisgIFxkZWZcZG8jIzF7XGNhdGNvZGVgIyMxPVxvdGhlcn1cZG9zcGVjaWFsc30KKyUKKyUgW0tudXRoXSBwcC4gMzgwLDM4MSwzOTEKKyUgRGlzYWJsZSBTcGFuaXNoIGxpZ2F0dXJlcyA/YCBhbmQgIWAgb2YgXHR0IGZvbnQKK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxgPVxhY3RpdmVcZ2RlZmB7XHJlbGF4XGxxfQorXGVuZGdyb3VwCislCislIFNldHVwIGZvciB0aGUgQHZlcmIgY29tbWFuZC4KKyUKKyUgRWlnaHQgc3BhY2VzIGZvciBhIHRhYgorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgXF5eST1cYWN0aXZlCisgIFxnZGVmXHRhYmVpZ2h0c3BhY2Vze1xjYXRjb2RlYFxeXkk9XGFjdGl2ZVxkZWZeXkl7XCBcIFwgXCBcIFwgXCBcIH19CitcZW5kZ3JvdXAKKyUKK1xkZWZcc2V0dXB2ZXJieyUKKyAgXHR0ICAlIGVhc2llc3QgKGFuZCBjb252ZW50aW9uYWxseSB1c2VkKSBmb250IGZvciB2ZXJiYXRpbQorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZWlnaHRzcGFjZXMKKyAgJSBSZXNwZWN0IGxpbmUgYnJlYWtzLAorICAlIHByaW50IHNwZWNpYWwgc3ltYm9scyBhcyB0aGVtc2VsdmVzLCBhbmQKKyAgJSBtYWtlIGVhY2ggc3BhY2UgY291bnQKKyAgJSBtdXN0IGRvIGluIHRoaXMgb3JkZXI6CisgIFxvYmV5bGluZXMgXHVuY2F0Y29kZXNwZWNpYWxzIFxzZXBzcGFjZXMKK30KKworJSBTZXR1cCBmb3IgdGhlIEB2ZXJiYXRpbSBlbnZpcm9ubWVudAorJQorJSBSZWFsIHRhYiBleHBhbnNpb24KK1xuZXdkaW1lblx0YWJ3IFxzZXRib3gwPVxoYm94e1x0dFxzcGFjZX0gXHRhYnc9OFx3ZDAgJSB0YWIgYW1vdW50CislCitcZGVmXHN0YXJ0dGFiYm94e1xzZXRib3gwPVxoYm94XGJncm91cH0KK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICBcZ2RlZlx0YWJleHBhbmR7JQorICAgIFxjYXRjb2RlYFxeXkk9XGFjdGl2ZQorICAgIFxkZWZeXkl7XGxlYXZldm1vZGVcZWdyb3VwCisgICAgICBcZGltZW4wPVx3ZDAgJSB0aGUgd2lkdGggc28gZmFyLCBvciBzaW5jZSB0aGUgcHJldmlvdXMgdGFiCisgICAgICBcZGl2aWRlXGRpbWVuMCBieVx0YWJ3CisgICAgICBcbXVsdGlwbHlcZGltZW4wIGJ5XHRhYncgJSBjb21wdXRlIHByZXZpb3VzIG11bHRpcGxlIG9mIFx0YWJ3CisgICAgICBcYWR2YW5jZVxkaW1lbjAgYnlcdGFidyAgJSBhZHZhbmNlIHRvIG5leHQgbXVsdGlwbGUgb2YgXHRhYncKKyAgICAgIFx3ZDA9XGRpbWVuMCBcYm94MCBcc3RhcnR0YWJib3gKKyAgICB9JQorICB9CitcZW5kZ3JvdXAKK1xkZWZcc2V0dXB2ZXJiYXRpbXslCisgIFxsZXRcbm9uYXJyb3dpbmcgPSB0JQorICBcbm9uZmlsbHN0YXJ0CisgICUgRWFzaWVzdCAoYW5kIGNvbnZlbnRpb25hbGx5IHVzZWQpIGZvbnQgZm9yIHZlcmJhdGltCisgIFx0dAorICBcZGVmXHBhcntcbGVhdmV2bW9kZVxlZ3JvdXBcYm94MFxlbmRncmFmfSUKKyAgXGNhdGNvZGVgXGA9XGFjdGl2ZQorICBcdGFiZXhwYW5kCisgICUgUmVzcGVjdCBsaW5lIGJyZWFrcywKKyAgJSBwcmludCBzcGVjaWFsIHN5bWJvbHMgYXMgdGhlbXNlbHZlcywgYW5kCisgICUgbWFrZSBlYWNoIHNwYWNlIGNvdW50CisgICUgbXVzdCBkbyBpbiB0aGlzIG9yZGVyOgorICBcb2JleWxpbmVzIFx1bmNhdGNvZGVzcGVjaWFscyBcc2Vwc3BhY2VzCisgIFxldmVyeXBhcntcc3RhcnR0YWJib3h9JQorfQorCislIERvIHRoZSBAdmVyYiBtYWdpYzogdmVyYmF0aW0gdGV4dCBpcyBxdW90ZWQgYnkgdW5pcXVlCislIGRlbGltaXRlciBjaGFyYWN0ZXJzLiAgQmVmb3JlIGZpcnN0IGRlbGltaXRlciBleHBlY3QgYQorJSByaWdodCBicmFjZSwgYWZ0ZXIgbGFzdCBkZWxpbWl0ZXIgZXhwZWN0IGNsb3NpbmcgYnJhY2U6CislCislICAgIFxkZWZcZG92ZXJiJ3snPGNoYXI+IzE8Y2hhcj4nfSd7IzF9CislCislIFtLbnV0aF0gcC4gMzgyOyBvbmx5IGVhdCBvdXRlciB7fQorXGJlZ2luZ3JvdXAKKyAgXGNhdGNvZGVgWz0xXGNhdGNvZGVgXT0yXGNhdGNvZGVgXHs9XG90aGVyXGNhdGNvZGVgXH09XG90aGVyCisgIFxnZGVmXGRvdmVyYnsjMVtcZGVmXG5leHQjIzEjMX1bIyMxXGVuZGdyb3VwXVxuZXh0XQorXGVuZGdyb3VwCislCitcZGVmXHZlcmJ7XGJlZ2luZ3JvdXBcc2V0dXB2ZXJiXGRvdmVyYn0KKyUKKyUKKyUgRG8gdGhlIEB2ZXJiYXRpbSBtYWdpYzogZGVmaW5lIHRoZSBtYWNybyBcZG92ZXJiYXRpbSBzbyB0aGF0CislIHRoZSAoZmlyc3QpIGFyZ3VtZW50IGVuZHMgd2hlbiAnQGVuZCB2ZXJiYXRpbScgaXMgcmVhY2hlZCwgaWU6CislCislICAgICBcZGVmXGRvdmVyYmF0aW0jMUBlbmQgdmVyYmF0aW17IzF9CislCislIEZvciBUZXhpbmZvIGl0J3MgYSBsb3QgZWFzaWVyIHRoYW4gZm9yIExhVGVYLAorJSBiZWNhdXNlIHRleGluZm8ncyBcdmVyYmF0aW0gZG9lc24ndCBzdG9wIGF0ICdcZW5ke3ZlcmJhdGltfSc6CislIHdlIG5lZWQgbm90IHJlZGVmaW5lICdcJywgJ3snIGFuZCAnfScuCislCislIEluc3BpcmVkIGJ5IExhVGVYJ3MgdmVyYmF0aW0gY29tbWFuZCBzZXQgW2xhdGV4Lmx0eF0KKyUKK1xiZWdpbmdyb3VwCisgIFxjYXRjb2RlYFwgPVxhY3RpdmUKKyAgXG9iZXlsaW5lcyAlCisgICUgaWdub3JlIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGZpcnN0IF5eTSwgdGhhdCdzIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQKKyAgJSBvZiB0aGUgQHZlcmJhdGltIGlucHV0IGxpbmUgaXRzZWxmLiAgT3RoZXJ3aXNlIHdlIGdldCBhbiBleHRyYSBibGFuaworICAlIGxpbmUgaW4gdGhlIG91dHB1dC4KKyAgXHhkZWZcZG92ZXJiYXRpbSMxXl5NIzJAZW5kIHZlcmJhdGlteyMyXG5vZXhwYW5kXGVuZFxnb2JibGUgdmVyYmF0aW19JQorICAlIFdlIHJlYWxseSB3YW50IHsuLi5cZW5kIHZlcmJhdGltfSBpbiB0aGUgYm9keSBvZiB0aGUgbWFjcm8sIGJ1dAorICAlIHdpdGhvdXQgdGhlIGFjdGl2ZSBzcGFjZTsgdGh1cyB3ZSBoYXZlIHRvIHVzZSBceGRlZiBhbmQgXGdvYmJsZS4KK1xlbmRncm91cAorJQorXGVudmRlZlx2ZXJiYXRpbXslCisgICAgXHNldHVwdmVyYmF0aW1cZG92ZXJiYXRpbQorfQorXGxldFxFdmVyYmF0aW0gPSBcYWZ0ZXJlbnZicmVhaworCisKKyUgQHZlcmJhdGltaW5jbHVkZSBGSUxFIC0gaW5zZXJ0IHRleHQgb2YgZmlsZSBpbiB2ZXJiYXRpbSBlbnZpcm9ubWVudC4KKyUKK1xkZWZcdmVyYmF0aW1pbmNsdWRle1xwYXJzZWFyZ3VzaW5nXGZpbGVuYW1lY2F0Y29kZXNcZG92ZXJiYXRpbWluY2x1ZGV9CislCitcZGVmXGRvdmVyYmF0aW1pbmNsdWRlIzF7JQorICB7JQorICAgIFxtYWtldmFsdWVleHBhbmRhYmxlCisgICAgXHNldHVwdmVyYmF0aW0KKyAgICBcaW5wdXQgIzEKKyAgICBcYWZ0ZXJlbnZicmVhaworICB9JQorfQorCislIEBjb3B5aW5nIC4uLiBAZW5kIGNvcHlpbmcuCislIFNhdmUgdGhlIHRleHQgYXdheSBmb3IgQGluc2VydGNvcHlpbmcgbGF0ZXIuCislCislIFdlIHNhdmUgdGhlIHVuaW50ZXJwcmV0ZWQgdG9rZW5zLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIGJveC4KKyUgU2F2aW5nIHRoZSB0ZXh0IGluIGEgYm94IHdvdWxkIGJlIG11Y2ggZWFzaWVyLCBidXQgdGhlbiBhbGwgdGhlCislIHR5cGVzZXR0aW5nIGNvbW1hbmRzIChAc21hbGxib29rLCBmb250IGNoYW5nZXMsIGV0Yy4pIGhhdmUgdG8gYmUgZG9uZQorJSBiZWZvcmVoYW5kIC0tIGFuZCBhKSB3ZSB3YW50IEBjb3B5aW5nIHRvIGJlIGRvbmUgZmlyc3QgaW4gdGhlIHNvdXJjZQorJSBmaWxlOyBiKSBsZXR0aW5nIHVzZXJzIGRlZmluZSB0aGUgZnJvbnRtYXR0ZXIgaW4gYXMgZmxleGlibGUgb3JkZXIgYXMKKyUgcG9zc2libGUgaXMgdmVyeSBkZXNpcmFibGUuCislCitcZGVmXGNvcHlpbmd7XGNoZWNrZW52e31cYmVnaW5ncm91cFxzY2FuYXJnY3R4dFxkb2NvcHlpbmd9CitcZGVmXGRvY29weWluZyMxQGVuZCBjb3B5aW5ne1xlbmRncm91cFxkZWZcY29weWluZ3RleHR7IzF9fQorJQorXGRlZlxpbnNlcnRjb3B5aW5neyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBccGFyaW5kZW50ID0gMHB0ICAlIHBhcmFncmFwaCBpbmRlbnRhdGlvbiBsb29rcyB3cm9uZyBvbiB0aXRsZSBwYWdlCisgICAgXHNjYW5leHBcY29weWluZ3RleHQKKyAgXGVuZGdyb3VwCit9CisKK1xtZXNzYWdle2RlZnVucyx9CislIEBkZWZ1biBldGMuCisKK1xuZXdza2lwXGRlZmJvZHlpbmRlbnQgXGRlZmJvZHlpbmRlbnQ9LjRpbgorXG5ld3NraXBcZGVmYXJnc2luZGVudCBcZGVmYXJnc2luZGVudD01MHB0CitcbmV3c2tpcFxkZWZsYXN0YXJnbWFyZ2luIFxkZWZsYXN0YXJnbWFyZ2luPTE4cHQKKworJSBTdGFydCB0aGUgcHJvY2Vzc2luZyBvZiBAZGVmZm46CitcZGVmXHN0YXJ0ZGVmdW57JQorICBcaWZudW1cbGFzdHBlbmFsdHk8MTAwMDAKKyAgICBcbWVkYnJlYWsKKyAgXGVsc2UKKyAgICAlIElmIHRoZXJlIGFyZSB0d28gQGRlZiBjb21tYW5kcyBpbiBhIHJvdywgd2UnbGwgaGF2ZSBhIFxub2JyZWFrLAorICAgICUgd2hpY2ggaXMgdGhlcmUgdG8ga2VlcCB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24gdG9nZXRoZXIgd2l0aCBpdHMKKyAgICAlIGhlYWRlci4gIEJ1dCBpZiB0aGVyZSdzIG5vdGhpbmcgYnV0IGhlYWRlcnMsIHdlIG5lZWQgdG8gYWxsb3cgYQorICAgICUgYnJlYWsgc29tZXdoZXJlLiAgQ2hlY2sgc3BlY2lmaWNhbGx5IGZvciBwZW5hbHR5IDEwMDAyLCBpbnNlcnRlZAorICAgICUgYnkgXGRlZmFyZ3Njb21tb25lbmRpbmcsIGluc3RlYWQgb2YgMTAwMDAsIHNpbmNlIHRoZSBzZWN0aW9uaW5nCisgICAgJSBjb21tYW5kcyBhbHNvIGluc2VydCBhIG5vYnJlYWsgcGVuYWx0eSwgYW5kIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cKKyAgICAlIGEgYnJlYWsgYmV0d2VlbiBhIHNlY3Rpb24gaGVhZGluZyBhbmQgYSBkZWZ1bi4KKyAgICAlIAorICAgIFxpZm51bVxsYXN0cGVuYWx0eT0xMDAwMiBccGVuYWx0eTIwMDAgXGZpCisgICAgJQorICAgICUgU2ltaWxhcmx5LCBhZnRlciBhIHNlY3Rpb24gaGVhZGluZywgZG8gbm90IGFsbG93IGEgYnJlYWsuCisgICAgJSBCdXQgZG8gaW5zZXJ0IHRoZSBnbHVlLgorICAgIFxtZWRza2lwICAlIHByZWNlZGVkIGJ5IGRpc2NhcmRhYmxlIHBlbmFsdHksIHNvIG5vdCBhIGJyZWFrcG9pbnQKKyAgXGZpCisgICUKKyAgXHBhcmluZGVudD0waW4KKyAgXGFkdmFuY2VcbGVmdHNraXAgYnkgXGRlZmJvZHlpbmRlbnQKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorfQorCitcZGVmXGRvZGVmdW54IzF7JQorICAlIEZpcnN0LCBjaGVjayB3aGV0aGVyIHdlIGFyZSBpbiB0aGUgcmlnaHQgZW52aXJvbm1lbnQ6CisgIFxjaGVja2VudiMxJQorICAlCisgICUgQXMgYWJvdmUsIGFsbG93IGxpbmUgYnJlYWsgaWYgd2UgaGF2ZSBtdWx0aXBsZSB4IGhlYWRlcnMgaW4gYSByb3cuCisgICUgSXQncyBub3QgYSBncmVhdCBwbGFjZSwgdGhvdWdoLgorICBcaWZudW1cbGFzdHBlbmFsdHk9MTAwMDIgXHBlbmFsdHkzMDAwIFxmaQorICAlCisgICUgQW5kIG5vdywgaXQncyB0aW1lIHRvIHJldXNlIHRoZSBib2R5IG9mIHRoZSBvcmlnaW5hbCBkZWZ1bjoKKyAgXGV4cGFuZGFmdGVyXGdvYmJsZWRlZnVuIzElCit9CitcZGVmXGdvYmJsZWRlZnVuIzFcc3RhcnRkZWZ1bnt9CisKKyUgXHByaW50ZGVmdW5saW5lIFxkZWZmbmhlYWRlcnt0ZXh0fQorJQorXGRlZlxwcmludGRlZnVubGluZSMxIzJ7JQorICBcYmVnaW5ncm91cAorICAgICUgY2FsbCBcZGVmZm5oZWFkZXI6CisgICAgIzEjMiBcZW5kaGVhZGVyCisgICAgJSBjb21tb24gZW5kaW5nOgorICAgIFxpbnRlcmxpbmVwZW5hbHR5ID0gMTAwMDAKKyAgICBcYWR2YW5jZVxyaWdodHNraXAgYnkgMHB0IHBsdXMgMWZpbAorICAgIFxlbmRncmFmCisgICAgXG5vYnJlYWtcdnNraXAgLVxwYXJza2lwCisgICAgXHBlbmFsdHkgMTAwMDIgICUgc2lnbmFsIHRvIFxzdGFydGRlZnVuIGFuZCBcZG9kZWZ1bngKKyAgICAlIFNvbWUgb2YgdGhlIEBkZWZ1bi10eXBlIHRhZ3MgZG8gbm90IGVuYWJsZSBtYWdpYyBwYXJlbnRoZXNlcywKKyAgICAlIHJlbmRlcmluZyB0aGUgZm9sbG93aW5nIGNoZWNrIHJlZHVuZGFudC4gIEJ1dCB3ZSBkb24ndCBvcHRpbWl6ZS4KKyAgICBcY2hlY2twYXJlbmNvdW50cworICBcZW5kZ3JvdXAKK30KKworXGRlZlxFZGVmdW57XGVuZGdyYWZcbWVkYnJlYWt9CisKKyUgXG1ha2VkZWZ1bntkZWZmbn0gY3JlYXRlcyBcZGVmZm4sIFxkZWZmbnggYW5kIFxFZGVmZm47CislIHRoZSBvbmx5IHRoaW5nIHJlbWFpbm5pZyBpcyB0byBkZWZpbmUgXGRlZmZuaGVhZGVyLgorJQorXGRlZlxtYWtlZGVmdW4jMXslCisgIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIEUjMVxlbmRjc25hbWUgPSBcRWRlZnVuCisgIFxlZGVmXHRlbXB7XG5vZXhwYW5kXGRvbWFrZWRlZnVuCisgICAgXG1ha2Vjc25hbWV7IzF9XG1ha2Vjc25hbWV7IzF4fVxtYWtlY3NuYW1leyMxaGVhZGVyfX0lCisgIFx0ZW1wCit9CisKKyUgXGRvbWFrZWRlZnVuIFxkZWZmbiBcZGVmZm54IFxkZWZmbmhlYWRlcgorJQorJSBEZWZpbmUgXGRlZmZuIGFuZCBcZGVmZm54LCB3aXRob3V0IHBhcmFtZXRlcnMuCislIFxkZWZmbmhlYWRlciBoYXMgdG8gYmUgZGVmaW5lZCBleHBsaWNpdGx5LgorJQorXGRlZlxkb21ha2VkZWZ1biMxIzIjM3slCisgIFxlbnZkZWYjMXslCisgICAgXHN0YXJ0ZGVmdW4KKyAgICBccGFyc2Vhcmd1c2luZ1xhY3RpdmVwYXJlbnN7XHByaW50ZGVmdW5saW5lIzN9JQorICB9JQorICBcZGVmIzJ7XGRvZGVmdW54IzF9JQorICBcZGVmIzMlCit9CisKKyUlJSBVbnR5cGVkIGZ1bmN0aW9uczoKKworJSBAZGVmZm4gY2F0ZWdvcnkgbmFtZSBhcmdzCitcbWFrZWRlZnVue2RlZmZufXtcZGVmZm5nZW5lcmFse319CisKKyUgQGRlZmZuIGNhdGVnb3J5IGNsYXNzIG5hbWUgYXJncworXG1ha2VkZWZ1bntkZWZvcH0jMSB7XGRlZm9wb257IzFcIFxwdXR3b3Jkb259fQorCislIFxkZWZvcG9uIHtjYXRlZ29yeSBvbn1jbGFzcyBuYW1lIGFyZ3MKK1xkZWZcZGVmb3BvbiMxIzIge1xkZWZmbmdlbmVyYWx7XHB1dHdvcmRvblwgXGNvZGV7IzJ9fXsjMVwgXGNvZGV7IzJ9fSB9CisKKyUgXGRlZmZuZ2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IG5hbWUgYXJncworJQorXGRlZlxkZWZmbmdlbmVyYWwjMSMyICMzICM0XGVuZGhlYWRlcnslCisgICUgUmVtZW1iZXIgdGhhdCBcZG9zdWJpbmR7Zm59e2Zvb317fSBpcyBlcXVpdmFsZW50IHRvIFxkb2luZHtmbn17Zm9vfS4KKyAgXGRvc3ViaW5ke2ZufXtcY29kZXsjM319eyMxfSUKKyAgXGRlZm5hbWV7IzJ9e317IzN9XG1hZ2ljYW1wXGRlZnVuYXJnc3sjNFx1bnNraXB9JQorfQorCislJSUgVHlwZWQgZnVuY3Rpb25zOgorCislIEBkZWZ0eXBlZm4gY2F0ZWdvcnkgdHlwZSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHlwZWZufXtcZGVmdHlwZWZuZ2VuZXJhbHt9fQorCislIEBkZWZ0eXBlb3AgY2F0ZWdvcnkgY2xhc3MgdHlwZSBuYW1lIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdHlwZW9wfSMxIHtcZGVmdHlwZW9wb257IzFcIFxwdXR3b3Jkb259fQorCislIFxkZWZ0eXBlb3BvbiB7Y2F0ZWdvcnkgb259Y2xhc3MgdHlwZSBuYW1lIGFyZ3MKK1xkZWZcZGVmdHlwZW9wb24jMSMyIHtcZGVmdHlwZWZuZ2VuZXJhbHtccHV0d29yZG9uXCBcY29kZXsjMn19eyMxXCBcY29kZXsjMn19IH0KKworJSBcZGVmdHlwZWZuZ2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IHR5cGUgbmFtZSBhcmdzCislCitcZGVmXGRlZnR5cGVmbmdlbmVyYWwjMSMyICMzICM0ICM1XGVuZGhlYWRlcnslCisgIFxkb3N1YmluZHtmbn17XGNvZGV7IzR9fXsjMX0lCisgIFxkZWZuYW1leyMyfXsjM317IzR9XGRlZnVuYXJnc3sjNVx1bnNraXB9JQorfQorCislJSUgVHlwZWQgdmFyaWFibGVzOgorCislIEBkZWZ0eXBldnIgY2F0ZWdvcnkgdHlwZSB2YXIgYXJncworXG1ha2VkZWZ1bntkZWZ0eXBldnJ9e1xkZWZ0eXBlY3ZnZW5lcmFse319CisKKyUgQGRlZnR5cGVjdiBjYXRlZ29yeSBjbGFzcyB0eXBlIHZhciBhcmdzCitcbWFrZWRlZnVue2RlZnR5cGVjdn0jMSB7XGRlZnR5cGVjdm9meyMxXCBccHV0d29yZG9mfX0KKworJSBcZGVmdHlwZWN2b2Yge2NhdGVnb3J5IG9mfWNsYXNzIHR5cGUgdmFyIGFyZ3MKK1xkZWZcZGVmdHlwZWN2b2YjMSMyIHtcZGVmdHlwZWN2Z2VuZXJhbHtccHV0d29yZG9mXCBcY29kZXsjMn19eyMxXCBcY29kZXsjMn19IH0KKworJSBcZGVmdHlwZWN2Z2VuZXJhbCB7c3ViaW5kfWNhdGVnb3J5IHR5cGUgdmFyIGFyZ3MKKyUKK1xkZWZcZGVmdHlwZWN2Z2VuZXJhbCMxIzIgIzMgIzQgIzVcZW5kaGVhZGVyeyUKKyAgXGRvc3ViaW5ke3ZyfXtcY29kZXsjNH19eyMxfSUKKyAgXGRlZm5hbWV7IzJ9eyMzfXsjNH1cZGVmdW5hcmdzeyM1XHVuc2tpcH0lCit9CisKKyUlJSBVbnR5cGVkIHZhcmlhYmxlczoKKworJSBAZGVmdnIgY2F0ZWdvcnkgdmFyIGFyZ3MKK1xtYWtlZGVmdW57ZGVmdnJ9IzEge1xkZWZ0eXBldnJoZWFkZXJ7IzF9IHt9IH0KKworJSBAZGVmY3YgY2F0ZWdvcnkgY2xhc3MgdmFyIGFyZ3MKK1xtYWtlZGVmdW57ZGVmY3Z9IzEge1xkZWZjdm9meyMxXCBccHV0d29yZG9mfX0KKworJSBcZGVmY3ZvZiB7Y2F0ZWdvcnkgb2Z9Y2xhc3MgdmFyIGFyZ3MKK1xkZWZcZGVmY3ZvZiMxIzIge1xkZWZ0eXBlY3ZvZnsjMX0jMiB7fSB9CisKKyUlJSBUeXBlOgorJSBAZGVmdHAgY2F0ZWdvcnkgbmFtZSBhcmdzCitcbWFrZWRlZnVue2RlZnRwfSMxICMyICMzXGVuZGhlYWRlcnslCisgIFxkb2luZHt0cH17XGNvZGV7IzJ9fSUKKyAgXGRlZm5hbWV7IzF9e317IzJ9XGRlZnVuYXJnc3sjM1x1bnNraXB9JQorfQorCislIFJlbWFpbmluZyBAZGVmdW4tbGlrZSBzaG9ydGN1dHM6CitcbWFrZWRlZnVue2RlZnVufXtcZGVmZm5oZWFkZXJ7XHB1dHdvcmREZWZmdW5jfSB9CitcbWFrZWRlZnVue2RlZm1hY317XGRlZmZuaGVhZGVye1xwdXR3b3JkRGVmbWFjfSB9CitcbWFrZWRlZnVue2RlZnNwZWN9e1xkZWZmbmhlYWRlcntccHV0d29yZERlZnNwZWN9IH0KK1xtYWtlZGVmdW57ZGVmdHlwZWZ1bn17XGRlZnR5cGVmbmhlYWRlcntccHV0d29yZERlZmZ1bmN9IH0KK1xtYWtlZGVmdW57ZGVmdmFyfXtcZGVmdnJoZWFkZXJ7XHB1dHdvcmREZWZ2YXJ9IH0KK1xtYWtlZGVmdW57ZGVmb3B0fXtcZGVmdnJoZWFkZXJ7XHB1dHdvcmREZWZvcHR9IH0KK1xtYWtlZGVmdW57ZGVmdHlwZXZhcn17XGRlZnR5cGV2cmhlYWRlcntccHV0d29yZERlZnZhcn0gfQorXG1ha2VkZWZ1bntkZWZtZXRob2R9e1xkZWZvcG9uXHB1dHdvcmRNZXRob2Rvbn0KK1xtYWtlZGVmdW57ZGVmdHlwZW1ldGhvZH17XGRlZnR5cGVvcG9uXHB1dHdvcmRNZXRob2Rvbn0KK1xtYWtlZGVmdW57ZGVmaXZhcn17XGRlZmN2b2ZccHV0d29yZEluc3RhbmNlVmFyaWFibGVvZn0KK1xtYWtlZGVmdW57ZGVmdHlwZWl2YXJ9e1xkZWZ0eXBlY3ZvZlxwdXR3b3JkSW5zdGFuY2VWYXJpYWJsZW9mfQorCislIFxkZWZuYW1lLCB3aGljaCBmb3JtYXRzIHRoZSBuYW1lIG9mIHRoZSBAZGVmIChub3QgdGhlIGFyZ3MpLgorJSAjMSBpcyB0aGUgY2F0ZWdvcnksIHN1Y2ggYXMgIkZ1bmN0aW9uIi4KKyUgIzIgaXMgdGhlIHJldHVybiB0eXBlLCBpZiBhbnkuCislICMzIGlzIHRoZSBmdW5jdGlvbiBuYW1lLgorJQorJSBXZSBhcmUgZm9sbG93ZWQgYnkgKGJ1dCBub3QgcGFzc2VkKSB0aGUgYXJndW1lbnRzLCBpZiBhbnkuCislCitcZGVmXGRlZm5hbWUjMSMyIzN7JQorICAlIEdldCB0aGUgdmFsdWVzIG9mIFxsZWZ0c2tpcCBhbmQgXHJpZ2h0c2tpcCBhcyB0aGV5IHdlcmUgb3V0c2lkZSB0aGUgQGRlZi4uLgorICBcYWR2YW5jZVxsZWZ0c2tpcCBieSAtXGRlZmJvZHlpbmRlbnQKKyAgJQorICAlIEhvdyB3ZSdsbCBmb3JtYXQgdGhlIHR5cGUgbmFtZS4gIFB1dHRpbmcgaXQgaW4gYnJhY2tldHMgaGVscHMKKyAgJSBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBib2R5IHRleHQgdGhhdCBtYXkgZW5kIHVwIG9uIHRoZSBuZXh0IGxpbmUKKyAgJSBqdXN0IGJlbG93IGl0LgorICBcZGVmXHRlbXB7IzF9JQorICBcc2V0Ym94MD1caGJveHtca2VyblxkZWZsYXN0YXJnbWFyZ2luIFxpZnhcdGVtcFxlbXB0eVxlbHNlIFtccm1cdGVtcF1cZml9CisgICUKKyAgJSBGaWd1cmUgb3V0IGxpbmUgc2l6ZXMgZm9yIHRoZSBwYXJhZ3JhcGggc2hhcGUuCisgICUgVGhlIGZpcnN0IGxpbmUgbmVlZHMgc3BhY2UgZm9yIFxib3gwOyBidXQgaWYgXHJpZ2h0c2tpcCBpcyBub256ZXJvLAorICAlIHdlIG5lZWQgb25seSBzcGFjZSBmb3IgdGhlIHBhcnQgb2YgXGJveDAgd2hpY2ggZXhjZWVkcyBpdDoKKyAgXGRpbWVuMD1caHNpemUgIFxhZHZhbmNlXGRpbWVuMCBieSAtXHdkMCAgXGFkdmFuY2VcZGltZW4wIGJ5IFxyaWdodHNraXAKKyAgJSBUaGUgY29udGludWF0aW9uczoKKyAgXGRpbWVuMj1caHNpemUgIFxhZHZhbmNlXGRpbWVuMiBieSAtXGRlZmFyZ3NpbmRlbnQKKyAgJSAocGxhaW4udGV4IHNheXMgdGhhdCBcZGltZW4xIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgZ2xvYmFsLikKKyAgXHBhcnNoYXBlIDIgMGluIFxkaW1lbjAgXGRlZmFyZ3NpbmRlbnQgXGRpbWVuMgorICAlCisgICUgUHV0IHRoZSB0eXBlIG5hbWUgdG8gdGhlIHJpZ2h0IG1hcmdpbi4KKyAgXG5vaW5kZW50CisgIFxoYm94IHRvIDBwdHslCisgICAgXGhmaWxcYm94MCBca2Vybi1caHNpemUKKyAgICAlIFxoc2l6ZSBoYXMgdG8gYmUgc2hvcnRlbmVkIHRoaXMgd2F5OgorICAgIFxrZXJuXGxlZnRza2lwCisgICAgJSBJbnRlbnRpb25hbGx5IGRvIG5vdCByZXNwZWN0IFxyaWdodHNraXAsIHNpbmNlIHdlIG5lZWQgdGhlIHNwYWNlLgorICB9JQorICAlCisgICUgQWxsb3cgYWxsIGxpbmVzIHRvIGJlIHVuZGVyZnVsbCB3aXRob3V0IGNvbXBsYWludDoKKyAgXHRvbGVyYW5jZT0xMDAwMCBcaGJhZG5lc3M9MTAwMDAKKyAgXGV4ZGVudGFtb3VudD1cZGVmYm9keWluZGVudAorICB7JQorICAgICUgZGVmdW4gZm9udHMuIFdlIHVzZSB0eXBld3JpdGVyIGJ5IGRlZmF1bHQgKHVzZWQgdG8gYmUgYm9sZCkgYmVjYXVzZToKKyAgICAlIC4gd2UncmUgcHJpbnRpbmcgaWRlbnRpZmllcnMsIHRoZXkgc2hvdWxkIGJlIGluIHR0IGluIHByaW5jaXBsZS4KKyAgICAlIC4gaW4gbGFuZ3VhZ2VzIHdpdGggbWFueSBhY2NlbnRzLCBzdWNoIGFzIEN6ZWNoIG9yIEZyZW5jaCwgaXQncworICAgICUgICBjb21tb24gdG8gbGVhdmUgYWNjZW50cyBvZmYgaWRlbnRpZmllcnMuICBUaGUgcmVzdWx0IGxvb2tzIG9rIGluCisgICAgJSAgIHR0LCBidXQgZXhjZWVkaW5nbHkgc3RyYW5nZSBpbiBybS4KKyAgICAlIC4gd2UgZG9uJ3Qgd2FudCAtLSBhbmQgLS0tIHRvIGJlIHRyZWF0ZWQgYXMgbGlnYXR1cmVzLgorICAgICUgLiB0aGlzIHN0aWxsIGRvZXMgbm90IGZpeCB0aGUgP2AgYW5kICFgIGxpZ2F0dXJlcywgYnV0IHNvIGZhciBubworICAgICUgICBvbmUgaGFzIG1hZGUgaWRlbnRpZmllcnMgdXNpbmcgdGhlbSA6KS4KKyAgICBcZGYgXHR0CisgICAgXGRlZlx0ZW1weyMyfSUgcmV0dXJuIHZhbHVlIHR5cGUKKyAgICBcaWZ4XHRlbXBcZW1wdHlcZWxzZSBcdGNsb3Nle1x0ZW1wfSBcZmkKKyAgICAjMyUgb3V0cHV0IGZ1bmN0aW9uIG5hbWUKKyAgfSUKKyAge1xybVxlbnNraXB9JSBoc2tpcCAwLjUgZW0gb2YgXHRlbnJtCisgICUKKyAgXGJvbGRicmF4CisgICUgYXJndW1lbnRzIHdpbGwgYmUgb3V0cHV0IG5leHQsIGlmIGFueS4KK30KKworJSBQcmludCBhcmd1bWVudHMgaW4gc2xhbnRlZCByb21hbiAobm90IHR0c2wpLCBpbmNvbnNpc3RlbnRseSB3aXRoIHVzaW5nCislIHR0IGZvciB0aGUgbmFtZS4gIFRoaXMgaXMgYmVjYXVzZSBsaXRlcmFsIHRleHQgaXMgc29tZXRpbWVzIG5lZWRlZCBpbgorJSB0aGUgYXJndW1lbnQgbGlzdCAoZ3JvZmYgbWFudWFsKSwgYW5kIHR0c2wgYW5kIHR0IGFyZSBub3QgdmVyeQorJSBkaXN0aW5ndWlzaGFibGUuICBQcmV2ZW50IGh5cGhlbmF0aW9uIGF0IGAtJyBjaGFycy4KKyUKK1xkZWZcZGVmdW5hcmdzIzF7JQorICAlIHVzZSBzbCBieSBkZWZhdWx0IChub3QgdHRzbCksCisgICUgdHQgZm9yIHRoZSBuYW1lcy4KKyAgXGRmIFxzbCBcaHlwaGVuY2hhclxmb250PTAKKyAgJQorICAlIE9uIHRoZSBvdGhlciBoYW5kLCBpZiBhbiBhcmd1bWVudCBoYXMgdHdvIGRhc2hlcyAoZm9yIGluc3RhbmNlKSwgd2UKKyAgJSB3YW50IGEgd2F5IHRvIGdldCB0dHNsLiAgTGV0J3MgdHJ5IEB2YXIgZm9yIHRoYXQuCisgIFxsZXRcdmFyPVx0dHNsYW50ZWQKKyAgIzElCisgIFxzbFxoeXBoZW5jaGFyXGZvbnQ9NDUKK30KKworJSBXZSB3YW50ICgpJltdIHRvIHByaW50IHNwZWNpYWxseSBvbiB0aGUgZGVmdW4gbGluZS4KKyUKK1xkZWZcYWN0aXZlcGFyZW5zeyUKKyAgXGNhdGNvZGVgXCg9XGFjdGl2ZSBcY2F0Y29kZWBcKT1cYWN0aXZlCisgIFxjYXRjb2RlYFxbPVxhY3RpdmUgXGNhdGNvZGVgXF09XGFjdGl2ZQorICBcY2F0Y29kZWBcJj1cYWN0aXZlCit9CisKKyUgTWFrZSBjb250cm9sIHNlcXVlbmNlcyB3aGljaCBhY3QgbGlrZSBub3JtYWwgcGFyZW50aGVzaXMgY2hhcnMuCitcbGV0XGxwYXJlbiA9ICggXGxldFxycGFyZW4gPSApCisKKyUgQmUgc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGEgZGVmaW5pdGlvbiBmb3IgYCgnLCBldGMuICBGb3IgZXhhbXBsZSwKKyUgaWYgdGhlIGZuIG5hbWUgaGFzIHBhcmVucyBpbiBpdCwgXGJvbGRicmF4IHdpbGwgbm90IGJlIGluIGVmZmVjdCB5ZXQsCislIHNvIFRlWCB3b3VsZCBvdGhlcndpc2UgY29tcGxhaW4gYWJvdXQgdW5kZWZpbmVkIGNvbnRyb2wgc2VxdWVuY2UuCit7CisgIFxhY3RpdmVwYXJlbnMKKyAgXGdsb2JhbFxsZXQoPVxscGFyZW4gXGdsb2JhbFxsZXQpPVxycGFyZW4KKyAgXGdsb2JhbFxsZXRbPVxsYnJhY2sgXGdsb2JhbFxsZXRdPVxyYnJhY2sKKyAgXGdsb2JhbFxsZXQmID0gXCYKKworICBcZ2RlZlxib2xkYnJheHtcbGV0KD1cb3BuclxsZXQpPVxjbG5yXGxldFs9XGxicmJcbGV0XT1ccmJyYn0KKyAgXGdkZWZcbWFnaWNhbXB7XGxldCY9XGFtcHJtfQorfQorCitcbmV3Y291bnRccGFyZW5jb3VudAorCislIElmIHdlIGVuY291bnRlciAmZm9vLCB0aGVuIHR1cm4gb24gKCktaGFja2luZyBhZnRlcndhcmRzCitcbmV3aWZcaWZhbXBzZWVuCitcZGVmXGFtcHJtIzEge1xhbXBzZWVudHJ1ZXtcYmZcJiMxIH19CisKK1xkZWZccGFyZW5mb250eyUKKyAgXGlmYW1wc2VlbgorICAgICUgQXQgdGhlIGZpcnN0IGxldmVsLCBwcmludCBwYXJlbnMgaW4gcm9tYW4sCisgICAgJSBvdGhlcndpc2UgdXNlIHRoZSBkZWZhdWx0IGZvbnQuCisgICAgXGlmbnVtIFxwYXJlbmNvdW50PTEgXHJtIFxmaQorICBcZWxzZQorICAgICUgVGhlIFxzZiBwYXJlbnMgKGluIFxib2xkYnJheCkgYWN0dWFsbHkgYXJlIGEgbGl0dGxlIGJvbGRlciB0aGFuCisgICAgJSB0aGUgY29udGFpbmVkIHRleHQuICBUaGlzIGlzIGVzcGVjaWFsbHkgbmVlZGVkIGZvciBbIGFuZCBdIC4KKyAgICBcc2YKKyAgXGZpCit9CitcZGVmXGluZmlyc3RsZXZlbCMxeyUKKyAgXGlmYW1wc2VlbgorICAgIFxpZm51bVxwYXJlbmNvdW50PTEKKyAgICAgICMxJQorICAgIFxmaQorICBcZmkKK30KK1xkZWZcYmZhZnRlcndvcmQjMSB7IzEgXGJmfQorCitcZGVmXG9wbnJ7JQorICBcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAxCisgIHtccGFyZW5mb250KH0lCisgIFxpbmZpcnN0bGV2ZWwgXGJmYWZ0ZXJ3b3JkCit9CitcZGVmXGNsbnJ7JQorICB7XHBhcmVuZm9udCl9JQorICBcaW5maXJzdGxldmVsIFxzbAorICBcZ2xvYmFsXGFkdmFuY2VccGFyZW5jb3VudCBieSAtMQorfQorCitcbmV3Y291bnRcYnJhY2tjb3VudAorXGRlZlxsYnJieyUKKyAgXGdsb2JhbFxhZHZhbmNlXGJyYWNrY291bnQgYnkgMQorICB7XGJmW30lCit9CitcZGVmXHJicmJ7JQorICB7XGJmXX0lCisgIFxnbG9iYWxcYWR2YW5jZVxicmFja2NvdW50IGJ5IC0xCit9CisKK1xkZWZcY2hlY2twYXJlbmNvdW50c3slCisgIFxpZm51bVxwYXJlbmNvdW50PTAgXGVsc2UgXGJhZHBhcmVuY291bnQgXGZpCisgIFxpZm51bVxicmFja2NvdW50PTAgXGVsc2UgXGJhZGJyYWNrY291bnQgXGZpCit9CitcZGVmXGJhZHBhcmVuY291bnR7JQorICBcZXJybWVzc2FnZXtVbmJhbGFuY2VkIHBhcmVudGhlc2VzIGluIEBkZWZ9JQorICBcZ2xvYmFsXHBhcmVuY291bnQ9MAorfQorXGRlZlxiYWRicmFja2NvdW50eyUKKyAgXGVycm1lc3NhZ2V7VW5iYWxhbmNlZCBzcXVhcmUgYnJhY2VzIGluIEBkZWZ9JQorICBcZ2xvYmFsXGJyYWNrY291bnQ9MAorfQorCisKK1xtZXNzYWdle21hY3Jvcyx9CislIEBtYWNyby4KKworJSBUbyBkbyB0aGlzIHJpZ2h0IHdlIG5lZWQgYSBmZWF0dXJlIG9mIGUtVGVYLCBcc2NhbnRva2VucywKKyUgd2hpY2ggd2UgYXJyYW5nZSB0byBlbXVsYXRlIHdpdGggYSB0ZW1wb3JhcnkgZmlsZSBpbiBvcmRpbmFyeSBUZVguCitcaWZ4XGVUZVh2ZXJzaW9uXHVuZGVmaW5lZAorICBcbmV3d3JpdGVcbWFjc2NyaWJibGUKKyAgXGRlZlxzY2FudG9rZW5zIzF7JQorICAgIFx0b2tzMD17IzF9JQorICAgIFxpbW1lZGlhdGVcb3Blbm91dFxtYWNzY3JpYmJsZT1cam9ibmFtZS50bXAKKyAgICBcaW1tZWRpYXRlXHdyaXRlXG1hY3NjcmliYmxle1x0aGVcdG9rczB9JQorICAgIFxpbW1lZGlhdGVcY2xvc2VvdXRcbWFjc2NyaWJibGUKKyAgICBcaW5wdXQgXGpvYm5hbWUudG1wCisgIH0KK1xmaQorCitcZGVmXHNjYW5tYWNybyMxeyUKKyAgXGJlZ2luZ3JvdXAKKyAgICBcbmV3bGluZWNoYXJgXF5eTQorICAgIFxsZXRceGVhdHNwYWNlc1xlYXRzcGFjZXMKKyAgICAlIFVuZG8gY2F0Y29kZSBjaGFuZ2VzIG9mIFxzdGFydGNvbnRlbnRzIGFuZCBcZG9wcmludGluZGV4CisgICAgJSBXaGVuIGNhbGxlZCBmcm9tIEBpbnNlcnRjb3B5aW5nIG9yIChzaG9ydCljYXB0aW9uLCB3ZSBuZWVkIGFjdGl2ZQorICAgICUgYmFja3NsYXNoIHRvIGdldCBpdCBwcmludGVkIGNvcnJlY3RseS4gIFByZXZpb3VzbHksIHdlIGhhZAorICAgICUgXGNhdGNvZGVgXFw9XG90aGVyIGluc3RlYWQuICBXZSdsbCBzZWUgd2hldGhlciBhIHByb2JsZW0gYXBwZWFycworICAgICUgd2l0aCBtYWNybyBleHBhbnNpb24uCQkJCS0ta2FzYWwsIDE5YXVnMDQKKyAgICBcY2F0Y29kZWBcQD0wIFxjYXRjb2RlYFxcPVxhY3RpdmUgXGVzY2FwZWNoYXI9YFxACisgICAgJSAuLi4gYW5kIFxleGFtcGxlCisgICAgXHNwYWNlaXNzcGFjZQorICAgICUKKyAgICAlIEFwcGVuZCBcZW5kaW5wdXQgdG8gbWFrZSBzdXJlIHRoYXQgVGVYIGRvZXMgbm90IHNlZSB0aGUgZW5kaW5nIG5ld2xpbmUuCisgICAgJQorICAgICUgSSd2ZSB2ZXJpZmllZCB0aGF0IGl0IGlzIG5lY2Vzc2FyeSBib3RoIGZvciBlLVRlWCBhbmQgZm9yIG9yZGluYXJ5IFRlWAorICAgICUJCQkJCQkJLS1rYXNhbCwgMjlub3YwMworICAgIFxzY2FudG9rZW5zeyMxXGVuZGlucHV0fSUKKyAgXGVuZGdyb3VwCit9CisKK1xkZWZcc2NhbmV4cCMxeyUKKyAgXGVkZWZcdGVtcHtcbm9leHBhbmRcc2Nhbm1hY3JveyMxfX0lCisgIFx0ZW1wCit9CisKK1xuZXdjb3VudFxwYXJhbW5vICAgJSBDb3VudCBvZiBwYXJhbWV0ZXJzCitcbmV3dG9rc1xtYWNuYW1lICAgICUgTWFjcm8gbmFtZQorXG5ld2lmXGlmcmVjdXJzaXZlICAlIElzIGl0IHJlY3Vyc2l2ZT8KKworJSBMaXN0IG9mIGFsbCBkZWZpbmVkIG1hY3JvcyBpbiB0aGUgZm9ybQorJSAgICBcZGVmaW5lZHVtbXl3b3JkXG1hY3JvMVxkZWZpbmVkdW1teXdvcmRcbWFjcm8yLi4uCislIEN1cnJlbnRseSBpcyBhbHNvIGNvbnRhaW5zIGFsbCBAYWxpYXNlczsgdGhlIGxpc3QgY2FuIGJlIHNwbGl0CislIGlmIHRoZXJlIGlzIGEgbmVlZC4KK1xkZWZcbWFjcm9saXN0e30KKworJSBBZGQgdGhlIG1hY3JvIHRvIFxtYWNyb2xpc3QKK1xkZWZcYWRkdG9tYWNyb2xpc3QjMXtcZXhwYW5kYWZ0ZXIgXGFkZHRvbWFjcm9saXN0eHh4IFxjc25hbWUjMVxlbmRjc25hbWV9CitcZGVmXGFkZHRvbWFjcm9saXN0eHh4IzF7JQorICAgICBcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XG1hY3JvbGlzdFxkZWZpbmVkdW1teXdvcmQjMX0lCisgICAgIFx4ZGVmXG1hY3JvbGlzdHtcdGhlXHRva3MwfSUKK30KKworJSBVdGlsaXR5IHJvdXRpbmVzLgorJSBUaGlzIGRvZXMgXGxldCAjMSA9ICMyLCB3aXRoIFxjc25hbWVzOyB0aGF0IGlzLAorJSAgIFxsZXQgXGNzbmFtZSMxXGVuZGNzbmFtZSA9IFxjc25hbWUjMlxlbmRjc25hbWUKKyUgKGV4Y2VwdCBvZiBjb3Vyc2Ugd2UgaGF2ZSB0byBwbGF5IGV4cGFuc2lvbiBnYW1lcykuCislIAorXGRlZlxjc2xldCMxIzJ7JQorICBcZXhwYW5kYWZ0ZXJcbGV0CisgIFxjc25hbWUjMVxleHBhbmRhZnRlclxlbmRjc25hbWUKKyAgXGNzbmFtZSMyXGVuZGNzbmFtZQorfQorCislIFRyaW0gbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIG9mZiBhIHN0cmluZy4KKyUgQ29uY2VwdHMgZnJvbSBhcm8tYmVuZCBwcm9ibGVtIDE1IChzZWUgQ1RBTikuCit7XGNhdGNvZGVgXEA9MTEKK1xnZGVmXGVhdHNwYWNlcyAjMXtcZXhwYW5kYWZ0ZXJcdHJpbUBcZXhwYW5kYWZ0ZXJ7IzEgfX0KK1xnZGVmXHRyaW1AICMxe1x0cmltQEAgQCMxIEAgIzEgQCBAQH0KK1xnZGVmXHRyaW1AQCAjMUAgIzJAICMzQEB7XHRyaW1AQEBcZW1wdHkgIzIgQH0KK1xkZWZcdW5icmFjZSMxeyMxfQorXHVuYnJhY2V7XGdkZWZcdHJpbUBAQCAjMSB9ICMyQHsjMX0KK30KKworJSBUcmltIGEgc2luZ2xlIHRyYWlsaW5nIF5eTSBvZmYgYSBzdHJpbmcuCit7XGNhdGNvZGVgXF5eTT1cb3RoZXIgXGNhdGNvZGVgXFE9MyUKK1xnZGVmXGVhdGNyICMxe1xlYXRjcmEgIzFRXl5NUX0lCitcZ2RlZlxlYXRjcmEjMV5eTVF7XGVhdGNyYiMxUX0lCitcZ2RlZlxlYXRjcmIjMVEjMlF7IzF9JQorfQorCislIE1hY3JvIGJvZGllcyBhcmUgYWJzb3JiZWQgYXMgYW4gYXJndW1lbnQgaW4gYSBjb250ZXh0IHdoZXJlCislIGFsbCBjaGFyYWN0ZXJzIGFyZSBjYXRjb2RlIDEwLCAxMSBvciAxMiwgZXhjZXB0IFwgd2hpY2ggaXMgYWN0aXZlCislIChhcyBpbiBub3JtYWwgdGV4aW5mbykuIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGFuZ2UgdGhlIGRlZmluaXRpb24gb2YgXC4KKworJSBJdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGhhcmQgQ1JzIHdoZW4gdGhlIG1hY3JvIGlzIGV4ZWN1dGVkLiBUaGlzIGlzCislIGRvbmUgYnkgIG1ha2luZyBeXk0gKFxlbmRsaW5lY2hhcikgY2F0Y29kZSAxMiB3aGVuIHJlYWRpbmcgdGhlIG1hY3JvCislIGJvZHksIGFuZCB0aGVuIG1ha2luZyBpdCB0aGUgXG5ld2xpbmVjaGFyIGluIFxzY2FubWFjcm8uCisKK1xkZWZcc2NhbmN0eHR7JQorICBcY2F0Y29kZWBcIj1cb3RoZXIKKyAgXGNhdGNvZGVgXCs9XG90aGVyCisgIFxjYXRjb2RlYFw8PVxvdGhlcgorICBcY2F0Y29kZWBcPj1cb3RoZXIKKyAgXGNhdGNvZGVgXEA9XG90aGVyCisgIFxjYXRjb2RlYFxePVxvdGhlcgorICBcY2F0Y29kZWBcXz1cb3RoZXIKKyAgXGNhdGNvZGVgXHw9XG90aGVyCisgIFxjYXRjb2RlYFx+PVxvdGhlcgorfQorCitcZGVmXHNjYW5hcmdjdHh0eyUKKyAgXHNjYW5jdHh0CisgIFxjYXRjb2RlYFxcPVxvdGhlcgorICBcY2F0Y29kZWBcXl5NPVxvdGhlcgorfQorCitcZGVmXG1hY3JvYm9keWN0eHR7JQorICBcc2NhbmN0eHQKKyAgXGNhdGNvZGVgXHs9XG90aGVyCisgIFxjYXRjb2RlYFx9PVxvdGhlcgorICBcY2F0Y29kZWBcXl5NPVxvdGhlcgorICBcdXNlbWJvZHliYWNrc2xhc2gKK30KKworXGRlZlxtYWNyb2FyZ2N0eHR7JQorICBcc2NhbmN0eHQKKyAgXGNhdGNvZGVgXFw9XG90aGVyCit9CisKKyUgXG1ib2R5YmFja3NsYXNoIGlzIHRoZSBkZWZpbml0aW9uIG9mIFwgaW4gQG1hY3JvIGJvZGllcy4KKyUgSXQgbWFwcyBcZm9vXCA9PiBcY3NuYW1lIG1hY2FyZy5mb29cZW5kY3NuYW1lID0+ICNOCislIHdoZXJlIE4gaXMgdGhlIG1hY3JvIHBhcmFtZXRlciBudW1iZXIuCislIFdlIGRlZmluZSBcY3NuYW1lIG1hY2FyZy5cZW5kY3NuYW1lIHRvIGJlIFxyZWFsYmFja3NsYXNoLCBzbworJSBcXCBpbiBtYWNybyByZXBsYWNlbWVudCB0ZXh0IGdldHMgeW91IGEgYmFja3NsYXNoLgorCit7XGNhdGNvZGVgQD0wIEBjYXRjb2RlYEBcPUBhY3RpdmUKKyBAZ2RlZkB1c2VtYm9keWJhY2tzbGFzaHtAbGV0XD1AbWJvZHliYWNrc2xhc2h9CisgQGdkZWZAbWJvZHliYWNrc2xhc2gjMVx7QGNzbmFtZSBtYWNhcmcuIzFAZW5kY3NuYW1lfQorfQorXGV4cGFuZGFmdGVyXGRlZlxjc25hbWUgbWFjYXJnLlxlbmRjc25hbWV7XHJlYWxiYWNrc2xhc2h9CisKK1xkZWZcbWFjcm97XHJlY3Vyc2l2ZWZhbHNlXHBhcnNlYXJnXG1hY3JveHh4fQorXGRlZlxybWFjcm97XHJlY3Vyc2l2ZXRydWVccGFyc2VhcmdcbWFjcm94eHh9CisKK1xkZWZcbWFjcm94eHgjMXslCisgIFxnZXRhcmdzeyMxfSUgICAgICAgICAgIG5vdyBcbWFjbmFtZSBpcyB0aGUgbWFjbmFtZSBhbmQgXGFyZ2wgdGhlIGFyZ2xpc3QKKyAgXGlmeFxhcmdsXGVtcHR5ICAgICAgICUgbm8gYXJndW1lbnRzCisgICAgIFxwYXJhbW5vPTAlCisgIFxlbHNlCisgICAgIFxleHBhbmRhZnRlclxwYXJzZW1hcmdkZWYgXGFyZ2w7JQorICBcZmkKKyAgXGlmMVxjc25hbWUgaXNtYWNyby5cdGhlXG1hY25hbWVcZW5kY3NuYW1lCisgICAgIFxtZXNzYWdle1dhcm5pbmc6IHJlZGVmaW5pbmcgXHRoZVxtYWNuYW1lfSUKKyAgXGVsc2UKKyAgICAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgXHRoZVxtYWNuYW1lXGVuZGNzbmFtZSBccmVsYXgKKyAgICAgXGVsc2UgXGVycm1lc3NhZ2V7TWFjcm8gbmFtZSBcdGhlXG1hY25hbWVcc3BhY2UgYWxyZWFkeSBkZWZpbmVkfVxmaQorICAgICBcZ2xvYmFsXGNzbGV0e21hY3NhdmUuXHRoZVxtYWNuYW1lfXtcdGhlXG1hY25hbWV9JQorICAgICBcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgaXNtYWNyby5cdGhlXG1hY25hbWVcZW5kY3NuYW1lPTElCisgICAgIFxhZGR0b21hY3JvbGlzdHtcdGhlXG1hY25hbWV9JQorICBcZmkKKyAgXGJlZ2luZ3JvdXAgXG1hY3JvYm9keWN0eHQKKyAgXGlmcmVjdXJzaXZlIFxleHBhbmRhZnRlclxwYXJzZXJtYWNib2R5CisgIFxlbHNlIFxleHBhbmRhZnRlclxwYXJzZW1hY2JvZHkKKyAgXGZpfQorCitccGFyc2VhcmdkZWZcdW5tYWNyb3slCisgIFxpZjFcY3NuYW1lIGlzbWFjcm8uIzFcZW5kY3NuYW1lCisgICAgXGdsb2JhbFxjc2xldHsjMX17bWFjc2F2ZS4jMX0lCisgICAgXGdsb2JhbFxleHBhbmRhZnRlclxsZXQgXGNzbmFtZSBpc21hY3JvLiMxXGVuZGNzbmFtZT0wJQorICAgICUgUmVtb3ZlIHRoZSBtYWNybyBuYW1lIGZyb20gXG1hY3JvbGlzdDoKKyAgICBcYmVnaW5ncm91cAorICAgICAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUjMVxlbmRjc25hbWUgXHJlbGF4CisgICAgICBcbGV0XGRlZmluZWR1bW15d29yZFx1bm1hY3JvZG8KKyAgICAgIFx4ZGVmXG1hY3JvbGlzdHtcbWFjcm9saXN0fSUKKyAgICBcZW5kZ3JvdXAKKyAgXGVsc2UKKyAgICBcZXJybWVzc2FnZXtNYWNybyAjMSBub3QgZGVmaW5lZH0lCisgIFxmaQorfQorCislIENhbGxlZCBieSBcZG8gZnJvbSBcZG91bm1hY3JvIG9uIGVhY2ggbWFjcm8uICBUaGUgaWRlYSBpcyB0byBvbWl0IGFueQorJSBtYWNybyBkZWZpbml0aW9ucyB0aGF0IGhhdmUgYmVlbiBjaGFuZ2VkIHRvIFxyZWxheC4KKyUKK1xkZWZcdW5tYWNyb2RvIzF7JQorICBcaWZ4ICMxXHJlbGF4CisgICAgJSByZW1vdmUgdGhpcworICBcZWxzZQorICAgIFxub2V4cGFuZFxkZWZpbmVkdW1teXdvcmQgXG5vZXhwYW5kIzElCisgIFxmaQorfQorCislIFRoaXMgbWFrZXMgdXNlIG9mIHRoZSBvYnNjdXJlIGZlYXR1cmUgdGhhdCBpZiB0aGUgbGFzdCB0b2tlbiBvZiBhCislIDxwYXJhbWV0ZXIgbGlzdD4gaXMgIywgdGhlbiB0aGUgcHJlY2VkaW5nIGFyZ3VtZW50IGlzIGRlbGltaXRlZCBieQorJSBhbiBvcGVuaW5nIGJyYWNlLCBhbmQgdGhhdCBvcGVuaW5nIGJyYWNlIGlzIG5vdCBjb25zdW1lZC4KK1xkZWZcZ2V0YXJncyMxe1xnZXRhcmdzeHh4IzF7fX0KK1xkZWZcZ2V0YXJnc3h4eCMxI3tcZ2V0bWFjbmFtZSAjMSBccmVsYXhcZ2V0bWFjYXJnc30KK1xkZWZcZ2V0bWFjbmFtZSAjMSAjMlxyZWxheHtcbWFjbmFtZT17IzF9fQorXGRlZlxnZXRtYWNhcmdzIzF7XGRlZlxhcmdseyMxfX0KKworJSBQYXJzZSB0aGUgb3B0aW9uYWwge3BhcmFtc30gbGlzdC4gIFNldCB1cCBccGFyYW1ubyBhbmQgXHBhcmFtbGlzdAorJSBzbyBcZGVmbWFjcm8ga25vd3Mgd2hhdCB0byBkby4gIERlZmluZSBcbWFjYXJnLmJsYWggZm9yIGVhY2ggYmxhaAorJSBpbiB0aGUgcGFyYW1zIGxpc3QsIHRvIGJlICMjTiB3aGVyZSBOIGlzIHRoZSBwb3NpdGlvbiBpbiB0aGF0IGxpc3QuCislIFRoYXQgZ2V0cyB1c2VkIGJ5IFxtYm9keWJhY2tzbGFzaCAoYWJvdmUpLgorCislIFdlIG5lZWQgdG8gZ2V0IGBtYWNybyBwYXJhbWV0ZXIgY2hhciAjJyBpbnRvIHNldmVyYWwgZGVmaW5pdGlvbnMuCislIFRoZSB0ZWNobmlxdWUgdXNlZCBpcyBzdG9sZW4gZnJvbSBMYVRlWDogIGxldCBcaGFzaCBiZSBzb21ldGhpbmcKKyUgdW5leHBhbmRhYmxlLCBpbnNlcnQgdGhhdCB3aGVyZXZlciB5b3UgbmVlZCBhICMsIGFuZCB0aGVuIHJlZGVmaW5lCislIGl0IHRvICMganVzdCBiZWZvcmUgdXNpbmcgdGhlIHRva2VuIGxpc3QgcHJvZHVjZWQuCislCislIFRoZSBzYW1lIHRlY2huaXF1ZSBpcyB1c2VkIHRvIHByb3RlY3QgXGVhdHNwYWNlcyB0aWxsIGp1c3QgYmVmb3JlCislIHRoZSBtYWNybyBpcyB1c2VkLgorCitcZGVmXHBhcnNlbWFyZ2RlZiMxO3tccGFyYW1ubz0wXGRlZlxwYXJhbWxpc3R7fSUKKyAgICAgICAgXGxldFxoYXNoXHJlbGF4XGxldFx4ZWF0c3BhY2VzXHJlbGF4XHBhcnNlbWFyZ2RlZnh4eCMxLDssfQorXGRlZlxwYXJzZW1hcmdkZWZ4eHgjMSx7JQorICBcaWYjMTtcbGV0XG5leHQ9XHJlbGF4CisgIFxlbHNlIFxsZXRcbmV4dD1ccGFyc2VtYXJnZGVmeHh4CisgICAgXGFkdmFuY2VccGFyYW1ubyBieSAxJQorICAgIFxleHBhbmRhZnRlclxlZGVmXGNzbmFtZSBtYWNhcmcuXGVhdHNwYWNlc3sjMX1cZW5kY3NuYW1lCisgICAgICAgIHtceGVhdHNwYWNlc3tcaGFzaFx0aGVccGFyYW1ub319JQorICAgIFxlZGVmXHBhcmFtbGlzdHtccGFyYW1saXN0XGhhc2hcdGhlXHBhcmFtbm8sfSUKKyAgXGZpXG5leHR9CisKKyUgVGhlc2UgdHdvIGNvbW1hbmRzIHJlYWQgcmVjdXJzaXZlIGFuZCBub25yZWN1cnNpdmUgbWFjcm8gYm9kaWVzLgorJSAoVGhleSdyZSBkaWZmZXJlbnQgc2luY2UgcmVjIGFuZCBub25yZWMgbWFjcm9zIGVuZCBkaWZmZXJlbnRseS4pCisKK1xsb25nXGRlZlxwYXJzZW1hY2JvZHkjMUBlbmQgbWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCitcbG9uZ1xkZWZccGFyc2VybWFjYm9keSMxQGVuZCBybWFjcm8lCit7XHhkZWZcdGVtcHtcZWF0Y3J7IzF9fVxlbmRncm91cFxkZWZtYWNyb30lCisKKyUgVGhpcyBkZWZpbmVzIHRoZSBtYWNybyBpdHNlbGYuIFRoZXJlIGFyZSBzaXggY2FzZXM6IHJlY3Vyc2l2ZSBhbmQKKyUgbm9ucmVjdXJzaXZlIG1hY3JvcyBvZiB6ZXJvLCBvbmUsIGFuZCBtYW55IGFyZ3VtZW50cy4KKyUgTXVjaCBtYWdpYyB3aXRoIFxleHBhbmRhZnRlciBoZXJlLgorJSBceGRlZiBpcyB1c2VkIHNvIHRoYXQgbWFjcm8gZGVmaW5pdGlvbnMgd2lsbCBzdXJ2aXZlIHRoZSBmaWxlCislIHRoZXkncmUgZGVmaW5lZCBpbjsgQGluY2x1ZGUgcmVhZHMgdGhlIGZpbGUgaW5zaWRlIGEgZ3JvdXAuCitcZGVmXGRlZm1hY3JveyUKKyAgXGxldFxoYXNoPSMjJSBjb252ZXJ0IHBsYWNlaG9sZGVycyB0byBtYWNybyBwYXJhbWV0ZXIgY2hhcnMKKyAgXGlmcmVjdXJzaXZlCisgICAgXGlmY2FzZVxwYXJhbW5vCisgICAgJSAwCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxvciAlIDEKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZVxlbmRjc25hbWV7JQorICAgICAgICAgXGJncm91cFxub2V4cGFuZFxtYWNyb2FyZ2N0eHQKKyAgICAgICAgIFxub2V4cGFuZFxicmFjZW9ybGluZQorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lfSUKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgIFxlZ3JvdXBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfX0lCisgICAgXGVsc2UgJSBtYW55CisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHhcZW5kY3NuYW1lIyMxeyUKKyAgICAgICAgICBcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUgIyMxLH0lCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgIFxleHBhbmRhZnRlclx4ZGVmCisgICAgICBcZXhwYW5kYWZ0ZXJcZXhwYW5kYWZ0ZXIKKyAgICAgICAgXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lCisgICAgICAgICAgXHBhcmFtbGlzdHtcZWdyb3VwXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH19JQorICAgIFxmaQorICBcZWxzZQorICAgIFxpZmNhc2VccGFyYW1ubworICAgICUgMAorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgIFxub2V4cGFuZFxub3JlY3Vyc2V7XHRoZVxtYWNuYW1lfSUKKyAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcb3IgJSAxCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWVcZW5kY3NuYW1leyUKKyAgICAgICAgIFxiZ3JvdXBcbm9leHBhbmRcbWFjcm9hcmdjdHh0CisgICAgICAgICBcbm9leHBhbmRcYnJhY2VvcmxpbmUKKyAgICAgICAgIFxleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZX0lCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWVcdGhlXG1hY25hbWUgeHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgXG5vZXhwYW5kXG5vcmVjdXJzZXtcdGhlXG1hY25hbWV9JQorICAgICAgICBcbm9leHBhbmRcc2Nhbm1hY3Jve1x0ZW1wfVxlZ3JvdXB9JQorICAgIFxlbHNlICUgbWFueQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lXGVuZGNzbmFtZXslCisgICAgICAgICBcYmdyb3VwXG5vZXhwYW5kXG1hY3JvYXJnY3R4dAorICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eFxlbmRjc25hbWV9JQorICAgICAgXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lXHRoZVxtYWNuYW1lIHh4XGVuZGNzbmFtZSMjMXslCisgICAgICAgICAgXGV4cGFuZGFmdGVyXG5vZXhwYW5kXGNzbmFtZVx0aGVcbWFjbmFtZSB4eHhcZW5kY3NuYW1lICMjMSx9JQorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcZXhwYW5kYWZ0ZXJceGRlZgorICAgICAgXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyCisgICAgICBcY3NuYW1lXHRoZVxtYWNuYW1lIHh4eFxlbmRjc25hbWUKKyAgICAgIFxwYXJhbWxpc3R7JQorICAgICAgICAgIFxlZ3JvdXAKKyAgICAgICAgICBcbm9leHBhbmRcbm9yZWN1cnNle1x0aGVcbWFjbmFtZX0lCisgICAgICAgICAgXG5vZXhwYW5kXHNjYW5tYWNyb3tcdGVtcH1cZWdyb3VwfSUKKyAgICBcZmkKKyAgXGZpfQorCitcZGVmXG5vcmVjdXJzZSMxe1xiZ3JvdXBcY3NsZXR7IzF9e21hY3NhdmUuIzF9fQorCislIFxicmFjZW9ybGluZSBkZWNpZGVzIHdoZXRoZXIgdGhlIG5leHQgbm9ud2hpdGVzcGFjZSBjaGFyYWN0ZXIgaXMgYQorJSB7LiAgSWYgc28gaXQgcmVhZHMgdXAgdG8gdGhlIGNsb3NpbmcgfSwgaWYgbm90LCBpdCByZWFkcyB0aGUgd2hvbGUKKyUgbGluZS4gIFdoYXRldmVyIHdhcyByZWFkIGlzIHRoZW4gZmVkIHRvIHRoZSBuZXh0IGNvbnRyb2wgc2VxdWVuY2UKKyUgYXMgYW4gYXJndW1lbnQgKGJ5IFxwYXJzZWJyYWNlIG9yIFxwYXJzZWFyZykKK1xkZWZcYnJhY2VvcmxpbmUjMXtcbGV0XG5leHQ9IzFcZnV0dXJlbGV0XG5jaGFyXGJyYWNlb3JsaW5leHh4fQorXGRlZlxicmFjZW9ybGluZXh4eHslCisgIFxpZnhcbmNoYXJcYmdyb3VwXGVsc2UKKyAgICBcZXhwYW5kYWZ0ZXJccGFyc2VhcmcKKyAgXGZpIFxuZXh0fQorCisKKyUgQGFsaWFzLgorJSBXZSBuZWVkIHNvbWUgdHJpY2tlcnkgdG8gcmVtb3ZlIHRoZSBvcHRpb25hbCBzcGFjZXMgYXJvdW5kIHRoZSBlcXVhbAorJSBzaWduLiAgSnVzdCBtYWtlIHRoZW0gYWN0aXZlIGFuZCB0aGVuIGV4cGFuZCB0aGVtIGFsbCB0byBub3RoaW5nLgorXGRlZlxhbGlhc3tccGFyc2Vhcmd1c2luZ1xvYmV5c3BhY2VzXGFsaWFzeHh4fQorXGRlZlxhbGlhc3h4eCAjMXtcYWxpYXN5eXkjMVxyZWxheH0KK1xkZWZcYWxpYXN5eXkgIzE9IzJccmVsYXh7JQorICB7JQorICAgIFxleHBhbmRhZnRlclxsZXRcb2JleWVkc3BhY2U9XGVtcHR5CisgICAgXGFkZHRvbWFjcm9saXN0eyMxfSUKKyAgICBceGRlZlxuZXh0e1xnbG9iYWxcbGV0XG1ha2Vjc25hbWV7IzF9PVxtYWtlY3NuYW1leyMyfX0lCisgIH0lCisgIFxuZXh0Cit9CisKKworXG1lc3NhZ2V7Y3Jvc3MgcmVmZXJlbmNlcyx9CisKK1xuZXd3cml0ZVxhdXhmaWxlCisKK1xuZXdpZlxpZmhhdmV4cmVmcyAgICAlIFRydWUgaWYgeHJlZiB2YWx1ZXMgYXJlIGtub3duLgorXG5ld2lmXGlmd2FybmVkeHJlZnMgICUgVHJ1ZSBpZiB3ZSB3YXJuZWQgb25jZSB0aGF0IHRoZXkgYXJlbid0IGtub3duLgorCislIEBpbmZvcmVmIGlzIHJlbGF0aXZlbHkgc2ltcGxlLgorXGRlZlxpbmZvcmVmICMxe1xpbmZvcmVmenp6ICMxLCwsLCoqfQorXGRlZlxpbmZvcmVmenp6ICMxLCMyLCMzLCM0Kip7XHB1dHdvcmRTZWV7fSBccHV0d29yZEluZm97fSBccHV0d29yZGZpbGV7fSBcZmlsZXtcaWdub3Jlc3BhY2VzICMze319LAorICBub2RlIFxzYW1we1xpZ25vcmVzcGFjZXMjMXt9fX0KKworJSBAbm9kZSdzIG9ubHkgam9iIGluIFRlWCBpcyB0byBkZWZpbmUgXGxhc3Rub2RlLCB3aGljaCBpcyB1c2VkIGluCislIGNyb3NzLXJlZmVyZW5jZXMuICBUaGUgQG5vZGUgbGluZSBtaWdodCBvciBtaWdodCBub3QgaGF2ZSBjb21tYXMsIGFuZAorJSBtaWdodCBvciBtaWdodCBub3QgaGF2ZSBzcGFjZXMgYmVmb3JlIHRoZSBmaXJzdCBjb21tYSwgbGlrZToKKyUgQG5vZGUgZm9vICwgYmFyICwgLi4uCislIFdlIGRvbid0IHdhbnQgc3VjaCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlIG5vZGUgbmFtZS4KKyUKK1xwYXJzZWFyZ2RlZlxub2Rle1xjaGVja2Vudnt9XGRvbm9kZSAjMSAsXGZpbmlzaG5vZGVwYXJzZX0KKyUKKyUgYWxzbyByZW1vdmUgYSB0cmFpbGluZyBjb21tYSwgaW4gY2FzZSBvZiBzb21ldGhpbmcgbGlrZSB0aGlzOgorJSBAbm9kZSBIZWxwLUNyb3NzLCAgLCAgLCBDcm9zcy1yZWZzCitcZGVmXGRvbm9kZSMxICwjMlxmaW5pc2hub2RlcGFyc2V7XGRvZG9ub2RlICMxLFxmaW5pc2hub2RlcGFyc2V9CitcZGVmXGRvZG9ub2RlIzEsIzJcZmluaXNobm9kZXBhcnNle1xnZGVmXGxhc3Rub2RleyMxfX0KKworXGxldFxud25vZGU9XG5vZGUKK1xsZXRcbGFzdG5vZGU9XGVtcHR5CisKKyUgV3JpdGUgYSBjcm9zcy1yZWZlcmVuY2UgZGVmaW5pdGlvbiBmb3IgdGhlIGN1cnJlbnQgbm9kZS4gICMxIGlzIHRoZQorJSB0eXBlIChZbnVtYmVyZWQsIFlhcHBlbmRpeCwgWW5vdGhpbmcpLgorJQorXGRlZlxkb25vZGVyZWYjMXslCisgIFxpZnhcbGFzdG5vZGVcZW1wdHlcZWxzZQorICAgIFxzZXRyZWZ7XGxhc3Rub2RlfXsjMX0lCisgICAgXGdsb2JhbFxsZXRcbGFzdG5vZGU9XGVtcHR5CisgIFxmaQorfQorCislIEBhbmNob3J7TkFNRX0gLS0gZGVmaW5lIHhyZWYgdGFyZ2V0IGF0IGFyYml0cmFyeSBwb2ludC4KKyUKK1xuZXdjb3VudFxzYXZlc2ZyZWdpc3RlcgorJQorXGRlZlxzYXZlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzYXZlc2ZyZWdpc3Rlcj1cc3BhY2VmYWN0b3IgXGZpfQorXGRlZlxyZXN0b3Jlc2Z7XHJlbGF4IFxpZmhtb2RlIFxzcGFjZWZhY3Rvcj1cc2F2ZXNmcmVnaXN0ZXIgXGZpfQorXGRlZlxhbmNob3IjMXtcc2F2ZXNmIFxzZXRyZWZ7IzF9e1lub3RoaW5nfVxyZXN0b3Jlc2YgXGlnbm9yZXNwYWNlc30KKworJSBcc2V0cmVme05BTUV9e1NOVH0gZGVmaW5lcyBhIGNyb3NzLXJlZmVyZW5jZSBwb2ludCBOQU1FIChhIG5vZGUgb3IgYW4KKyUgYW5jaG9yKSwgd2hpY2ggY29uc2lzdHMgb2YgdGhyZWUgcGFydHM6CislIDEpIE5BTUUtdGl0bGUgLSB0aGUgY3VycmVudCBzZWN0aW9uaW5nIG5hbWUgdGFrZW4gZnJvbSBcdGhpc3NlY3Rpb24sCislICAgICAgICAgICAgICAgICBvciB0aGUgYW5jaG9yIG5hbWUuCislIDIpIE5BTUUtc250ICAgLSBzZWN0aW9uIG51bWJlciBhbmQgdHlwZSwgcGFzc2VkIGFzIHRoZSBTTlQgYXJnLCBvcgorJSAgICAgICAgICAgICAgICAgZW1wdHkgZm9yIGFuY2hvcnMuCislIDMpIE5BTUUtcGcgICAgLSB0aGUgcGFnZSBudW1iZXIuCislCislIFRoaXMgaXMgY2FsbGVkIGZyb20gXGRvbm9kZXJlZiwgXGFuY2hvciwgYW5kIFxkb2Zsb2F0LiAgSW4gdGhlIGNhc2Ugb2YKKyUgZmxvYXRzLCB0aGVyZSBpcyBhbiBhZGRpdGlvbmFsIHBhcnQsIHdoaWNoIGlzIG5vdCB3cml0dGVuIGhlcmU6CislIDQpIE5BTUUtbG9mICAgLSB0aGUgdGV4dCBhcyBpdCBzaG91bGQgYXBwZWFyIGluIGEgQGxpc3RvZmZsb2F0cy4KKyUKK1xkZWZcc2V0cmVmIzEjMnslCisgIFxwZGZta2Rlc3R7IzF9JQorICBcaWZsaW5rcworICAgIHslCisgICAgICBcYXRkdW1taWVzICAlIHByZXNlcnZlIGNvbW1hbmRzLCBidXQgZG9uJ3QgZXhwYW5kIHRoZW0KKyAgICAgIFxlZGVmXHdyaXRleHJkZWYjIzEjIzJ7JQorCVx3cml0ZVxhdXhmaWxle0B4cmRlZnsjMS0lICMxIG9mIFxzZXRyZWYsIGV4cGFuZGVkIGJ5IHRoZSBcZWRlZgorCSAgIyMxfXsjIzJ9fSUgdGhlc2UgYXJlIHBhcmFtZXRlcnMgb2YgXHdyaXRleHJkZWYKKyAgICAgIH0lCisgICAgICBcdG9rczAgPSBcZXhwYW5kYWZ0ZXJ7XHRoaXNzZWN0aW9ufSUKKyAgICAgIFxpbW1lZGlhdGUgXHdyaXRleHJkZWZ7dGl0bGV9e1x0aGVcdG9rczAgfSUKKyAgICAgIFxpbW1lZGlhdGUgXHdyaXRleHJkZWZ7c250fXtcY3NuYW1lICMyXGVuZGNzbmFtZX0lIFxZbnVtYmVyZWQgZXRjLgorICAgICAgXHdyaXRleHJkZWZ7cGd9e1xmb2xpb30lIHdpbGwgYmUgd3JpdHRlbiBsYXRlciwgZHVyaW5nIFxzaGlwb3V0CisgICAgfSUKKyAgXGZpCit9CisKKyUgQHhyZWYsIEBweHJlZiwgYW5kIEByZWYgZ2VuZXJhdGUgY3Jvc3MtcmVmZXJlbmNlcy4gIEZvciBceHJlZlgsICMxIGlzCislIHRoZSBub2RlIG5hbWUsICMyIHRoZSBuYW1lIG9mIHRoZSBJbmZvIGNyb3NzLXJlZmVyZW5jZSwgIzMgdGhlIHByaW50ZWQKKyUgbm9kZSBuYW1lLCAjNCB0aGUgbmFtZSBvZiB0aGUgSW5mbyBmaWxlLCAjNSB0aGUgbmFtZSBvZiB0aGUgcHJpbnRlZAorJSBtYW51YWwuICBBbGwgYnV0IHRoZSBub2RlIG5hbWUgY2FuIGJlIG9taXR0ZWQuCislCitcZGVmXHB4cmVmIzF7XHB1dHdvcmRzZWV7fSBceHJlZlhbIzEsLCwsLCwsXX0KK1xkZWZceHJlZiMxe1xwdXR3b3JkU2Vle30gXHhyZWZYWyMxLCwsLCwsLF19CitcZGVmXHJlZiMxe1x4cmVmWFsjMSwsLCwsLCxdfQorXGRlZlx4cmVmWFsjMSwjMiwjMywjNCwjNSwjNl17XGJlZ2luZ3JvdXAKKyAgXHVuc2Vwc3BhY2VzCisgIFxkZWZccHJpbnRlZG1hbnVhbHtcaWdub3Jlc3BhY2VzICM1fSUKKyAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMzfSUKKyAgXHNldGJveDE9XGhib3h7XHByaW50ZWRtYW51YWxcdW5za2lwfSUKKyAgXHNldGJveDA9XGhib3h7XHByaW50ZWRyZWZuYW1lXHVuc2tpcH0lCisgIFxpZmRpbSBcd2QwID0gMHB0CisgICAgJSBObyBwcmludGVkIG5vZGUgbmFtZSB3YXMgZXhwbGljaXRseSBnaXZlbi4KKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGNzbmFtZSBTRVR4cmVmLWF1dG9tYXRpYy1zZWN0aW9uLXRpdGxlXGVuZGNzbmFtZVxyZWxheAorICAgICAgJSBVc2UgdGhlIG5vZGUgbmFtZSBpbnNpZGUgdGhlIHNxdWFyZSBicmFja2V0cy4KKyAgICAgIFxkZWZccHJpbnRlZHJlZm5hbWV7XGlnbm9yZXNwYWNlcyAjMX0lCisgICAgXGVsc2UKKyAgICAgICUgVXNlIHRoZSBhY3R1YWwgY2hhcHRlci9zZWN0aW9uIHRpdGxlIGFwcGVhciBpbnNpZGUKKyAgICAgICUgdGhlIHNxdWFyZSBicmFja2V0cy4gIFVzZSB0aGUgcmVhbCBzZWN0aW9uIHRpdGxlIGlmIHdlIGhhdmUgaXQuCisgICAgICBcaWZkaW0gXHdkMSA+IDBwdAorICAgICAgICAlIEl0IGlzIGluIGFub3RoZXIgbWFudWFsLCBzbyB3ZSBkb24ndCBoYXZlIGl0LgorICAgICAgICBcZGVmXHByaW50ZWRyZWZuYW1le1xpZ25vcmVzcGFjZXMgIzF9JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgICAgJSBXZSBrbm93IHRoZSByZWFsIHRpdGxlIGlmIHdlIGhhdmUgdGhlIHhyZWYgdmFsdWVzLgorICAgICAgICAgIFxkZWZccHJpbnRlZHJlZm5hbWV7XHJlZnh7IzEtdGl0bGV9e319JQorICAgICAgICBcZWxzZQorICAgICAgICAgICUgT3RoZXJ3aXNlIGp1c3QgY29weSB0aGUgSW5mbyBub2RlIG5hbWUuCisgICAgICAgICAgXGRlZlxwcmludGVkcmVmbmFtZXtcaWdub3Jlc3BhY2VzICMxfSUKKyAgICAgICAgXGZpJQorICAgICAgXGZpCisgICAgXGZpCisgIFxmaQorICAlCisgICUgTWFrZSBsaW5rIGluIHBkZiBvdXRwdXQuCisgIFxpZnBkZgorICAgIFxsZWF2ZXZtb2RlCisgICAgXGdldGZpbGVuYW1leyM0fSUKKyAgICB7XHR1cm5vZmZhY3RpdmUKKyAgICAgJSBTZWUgY29tbWVudHMgYXQgXGFjdGl2ZWJhY2tzbGFzaGRvdWJsZS4KKyAgICAge1xhY3RpdmViYWNrc2xhc2hkb3VibGUgXHhkZWZccGRmeHJlZmRlc3R7IzF9JQorICAgICAgXGJhY2tzbGFzaHBhcmVuc1xwZGZ4cmVmZGVzdH0lCisgICAgICUKKyAgICAgXGlmbnVtXGZpbGVuYW1lbGVuZ3RoPjAKKyAgICAgICBcc3RhcnRsaW5rIGF0dHJ7L0JvcmRlciBbMCAwIDBdfSUKKyAgICAgICAgIGdvdG8gZmlsZXtcdGhlXGZpbGVuYW1lLnBkZn0gbmFtZXtccGRmeHJlZmRlc3R9JQorICAgICBcZWxzZQorICAgICAgIFxzdGFydGxpbmsgYXR0cnsvQm9yZGVyIFswIDAgMF19JQorICAgICAgICAgZ290byBuYW1le1xwZGZta3BnbntccGRmeHJlZmRlc3R9fSUKKyAgICAgXGZpCisgICAgfSUKKyAgICBcbGlua2NvbG9yCisgIFxmaQorICAlCisgICUgRmxvYXQgcmVmZXJlbmNlcyBhcmUgcHJpbnRlZCBjb21wbGV0ZWx5IGRpZmZlcmVudGx5OiAiRmlndXJlIDEuMiIKKyAgJSBpbnN0ZWFkIG9mICJbc29tZW5vZGVdLCBwLjMiLiAgV2UgZGlzdGluZ3Vpc2ggdGhlbSBieSB0aGUKKyAgJSBMQUJFTC10aXRsZSBiZWluZyBzZXQgdG8gYSBtYWdpYyBzdHJpbmcuCisgIHslCisgICAgJSBIYXZlIHRvIG90aGVyaWZ5IGV2ZXJ5dGhpbmcgc3BlY2lhbCB0byBhbGxvdyB0aGUgXGNzbmFtZSB0bworICAgICUgaW5jbHVkZSBhbiBfIGluIHRoZSB4cmVmIG5hbWUsIGV0Yy4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBcZXhwYW5kYWZ0ZXJcZ2xvYmFsXGV4cGFuZGFmdGVyXGxldFxleHBhbmRhZnRlclxYdGhpc3JlZnRpdGxlCisgICAgICBcY3NuYW1lIFhSIzEtdGl0bGVcZW5kY3NuYW1lCisgIH0lCisgIFxpZmZsb2F0XFh0aGlzcmVmdGl0bGUKKyAgICAlIElmIHRoZSB1c2VyIHNwZWNpZmllZCB0aGUgcHJpbnQgbmFtZSAodGhpcmQgYXJnKSB0byB0aGUgcmVmLAorICAgICUgcHJpbnQgaXQgaW5zdGVhZCBvZiBvdXIgdXN1YWwgIkZpZ3VyZSAxLjIiLgorICAgIFxpZmRpbVx3ZDAgPSAwcHQKKyAgICAgIFxyZWZ4eyMxLXNudH17fSUKKyAgICBcZWxzZQorICAgICAgXHByaW50ZWRyZWZuYW1lCisgICAgXGZpCisgICAgJQorICAgICUgaWYgdGhlIHVzZXIgYWxzbyBnYXZlIHRoZSBwcmludGVkIG1hbnVhbCBuYW1lIChmaWZ0aCBhcmcpLCBhcHBlbmQKKyAgICAlICJpbiBNQU5VQUxOQU1FIi4KKyAgICBcaWZkaW0gXHdkMSA+IDBwdAorICAgICAgXHNwYWNlIFxwdXR3b3JkaW57fSBcY2l0ZXtccHJpbnRlZG1hbnVhbH0lCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBub2RlL2FuY2hvciAobm9uLWZsb2F0KSByZWZlcmVuY2VzLgorICAgICUKKyAgICAlIElmIHdlIHVzZSBcdW5oYm94MCBhbmQgXHVuaGJveDEgdG8gcHJpbnQgdGhlIG5vZGUgbmFtZXMsIFRlWCBkb2VzIG5vdAorICAgICUgaW5zZXJ0IGVtcHR5IGRpc2NyZXRpb25hcmllcyBhZnRlciBoeXBoZW5zLCB3aGljaCBtZWFucyB0aGF0IGl0IHdpbGwKKyAgICAlIG5vdCBmaW5kIGEgbGluZSBicmVhayBhdCBhIGh5cGhlbiBpbiBhIG5vZGUgbmFtZXMuICBTaW5jZSBzb21lIG1hbnVhbHMKKyAgICAlIGFyZSBiZXN0IHdyaXR0ZW4gd2l0aCBmYWlybHkgbG9uZyBub2RlIG5hbWVzLCBjb250YWluaW5nIGh5cGhlbnMsIHRoaXMKKyAgICAlIGlzIGEgbG9zcy4gIFRoZXJlZm9yZSwgd2UgZ2l2ZSB0aGUgdGV4dCBvZiB0aGUgbm9kZSBuYW1lIGFnYWluLCBzbyBpdAorICAgICUgaXMgYXMgaWYgVGVYIGlzIHNlZWluZyBpdCBmb3IgdGhlIGZpcnN0IHRpbWUuCisgICAgXGlmZGltIFx3ZDEgPiAwcHQKKyAgICAgIFxwdXR3b3Jkc2VjdGlvbnt9IGBgXHByaW50ZWRyZWZuYW1lJycgXHB1dHdvcmRpbnt9IFxjaXRle1xwcmludGVkbWFudWFsfSUKKyAgICBcZWxzZQorICAgICAgJSBfIChmb3IgZXhhbXBsZSkgaGFzIHRvIGJlIHRoZSBjaGFyYWN0ZXIgXyBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoZQorICAgICAgJSBjb250cm9sIHNlcXVlbmNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5vZGUsIGJ1dCBpdCBoYXMgdG8gZXhwYW5kCisgICAgICAlIGludG8gdGhlIHVzdWFsIFxsZWF2ZXZtb2RlLi4uXHZydWxlIHN0dWZmIGZvciBwdXJwb3NlcyBvZgorICAgICAgJSBwcmludGluZy4gU28gd2UgXHR1cm5vZmZhY3RpdmUgZm9yIHRoZSBccmVmeC1zbnQsIGJhY2sgb24gZm9yIHRoZQorICAgICAgJSBwcmludGluZywgYmFjayBvZmYgZm9yIHRoZSBccmVmeC1wZy4KKyAgICAgIHtcdHVybm9mZmFjdGl2ZQorICAgICAgICUgT25seSBvdXRwdXQgYSBmb2xsb3dpbmcgc3BhY2UgaWYgdGhlIC1zbnQgcmVmIGlzIG5vbmVtcHR5OyBmb3IKKyAgICAgICAlIEB1bm51bWJlcmVkIGFuZCBAYW5jaG9yLCBpdCB3b24ndCBiZS4KKyAgICAgICBcc2V0Ym94MiA9IFxoYm94e1xpZ25vcmVzcGFjZXMgXHJlZnh7IzEtc250fXt9fSUKKyAgICAgICBcaWZkaW0gXHdkMiA+IDBwdCBccmVmeHsjMS1zbnR9XHNwYWNlXGZpCisgICAgICB9JQorICAgICAgJSBvdXRwdXQgdGhlIGBbbXlub2RlXScgdmlhIGEgbWFjcm8gc28gaXQgY2FuIGJlIG92ZXJyaWRkZW4uCisgICAgICBceHJlZnByaW50bm9kZW5hbWVccHJpbnRlZHJlZm5hbWUKKyAgICAgICUKKyAgICAgICUgQnV0IHdlIGFsd2F5cyB3YW50IGEgY29tbWEgYW5kIGEgc3BhY2U6CisgICAgICAsXHNwYWNlCisgICAgICAlCisgICAgICAlIG91dHB1dCB0aGUgYHBhZ2UgMycuCisgICAgICBcdHVybm9mZmFjdGl2ZSBccHV0d29yZHBhZ2VcdGllXHJlZnh7IzEtcGd9e30lCisgICAgXGZpCisgIFxmaQorICBcZW5kbGluaworXGVuZGdyb3VwfQorCislIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZyb20gXHhyZWZYIGZvciB0aGUgYFtub2RlbmFtZV0nIHBhcnQgb2YgeHJlZgorJSBvdXRwdXQuICBJdCdzIGEgc2VwYXJhdGUgbWFjcm8gb25seSBzbyBpdCBjYW4gYmUgY2hhbmdlZCBtb3JlIGVhc2lseSwKKyUgc2luY2Ugc3F1YXJlIGJyYWNrZXRzIGRvbid0IHdvcmsgd2VsbCBpbiBzb21lIGRvY3VtZW50cy4gIFBhcnRpY3VsYXJseQorJSBvbmUgdGhhdCBCb2IgaXMgd29ya2luZyBvbiA6KS4KKyUKK1xkZWZceHJlZnByaW50bm9kZW5hbWUjMXtbIzFdfQorCislIFRoaW5ncyByZWZlcnJlZCB0byBieSBcc2V0cmVmLgorJQorXGRlZlxZbm90aGluZ3t9CitcZGVmXFlvbWl0ZnJvbXRvY3t9CitcZGVmXFludW1iZXJlZHslCisgIFxpZm51bVxzZWNubz0wCisgICAgXHB1dHdvcmRDaGFwdGVyQHRpZSBcdGhlXGNoYXBubworICBcZWxzZSBcaWZudW1cc3Vic2Vjbm89MAorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgXHRoZVxjaGFwbm8uXHRoZVxzZWNubworICBcZWxzZSBcaWZudW1cc3Vic3Vic2Vjbm89MAorICAgIFxwdXR3b3JkU2VjdGlvbkB0aWUgXHRoZVxjaGFwbm8uXHRoZVxzZWNuby5cdGhlXHN1YnNlY25vCisgIFxlbHNlCisgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBcdGhlXGNoYXBuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNubworICBcZmlcZmlcZmkKK30KK1xkZWZcWWFwcGVuZGl4eyUKKyAgXGlmbnVtXHNlY25vPTAKKyAgICAgXHB1dHdvcmRBcHBlbmRpeEB0aWUgQGNoYXJcdGhlXGFwcGVuZGl4bm97fSUKKyAgXGVsc2UgXGlmbnVtXHN1YnNlY25vPTAKKyAgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vCisgIFxlbHNlIFxpZm51bVxzdWJzdWJzZWNubz0wCisgICAgXHB1dHdvcmRTZWN0aW9uQHRpZSBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8KKyAgXGVsc2UKKyAgICBccHV0d29yZFNlY3Rpb25AdGllCisgICAgICBAY2hhclx0aGVcYXBwZW5kaXhuby5cdGhlXHNlY25vLlx0aGVcc3Vic2Vjbm8uXHRoZVxzdWJzdWJzZWNubworICBcZmlcZmlcZmkKK30KKworJSBEZWZpbmUgXHJlZnh7TkFNRX17U1VGRklYfSB0byByZWZlcmVuY2UgYSBjcm9zcy1yZWZlcmVuY2Ugc3RyaW5nIG5hbWVkIE5BTUUuCislIElmIGl0cyB2YWx1ZSBpcyBub25lbXB0eSwgU1VGRklYIGlzIG91dHB1dCBhZnRlcndhcmQuCislCitcZGVmXHJlZngjMSMyeyUKKyAgeyUKKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXG90aGVyYmFja3NsYXNoCisgICAgXGV4cGFuZGFmdGVyXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcZXhwYW5kYWZ0ZXJcdGhpc3JlZlgKKyAgICAgIFxjc25hbWUgWFIjMVxlbmRjc25hbWUKKyAgfSUKKyAgXGlmeFx0aGlzcmVmWFxyZWxheAorICAgICUgSWYgbm90IGRlZmluZWQsIHNheSBzb21ldGhpbmcgYXQgbGVhc3QuCisgICAgXGFuZ2xlbGVmdCB1blwtZGVcLWZpbmVkXGFuZ2xlcmlnaHQKKyAgICBcaWZsaW5rcworICAgICAgXGlmaGF2ZXhyZWZzCisgICAgICAgIFxtZXNzYWdle1xsaW5lbnVtYmVyIFVuZGVmaW5lZCBjcm9zcyByZWZlcmVuY2UgYCMxJy59JQorICAgICAgXGVsc2UKKyAgICAgICAgXGlmd2FybmVkeHJlZnNcZWxzZQorICAgICAgICAgIFxnbG9iYWxcd2FybmVkeHJlZnN0cnVlCisgICAgICAgICAgXG1lc3NhZ2V7Q3Jvc3MgcmVmZXJlbmNlIHZhbHVlcyB1bmtub3duOyB5b3UgbXVzdCBydW4gVGVYIGFnYWluLn0lCisgICAgICAgIFxmaQorICAgICAgXGZpCisgICAgXGZpCisgIFxlbHNlCisgICAgJSBJdCdzIGRlZmluZWQsIHNvIGp1c3QgdXNlIGl0LgorICAgIFx0aGlzcmVmWAorICBcZmkKKyAgIzIlIE91dHB1dCB0aGUgc3VmZml4IGluIGFueSBjYXNlLgorfQorCislIFRoaXMgaXMgdGhlIG1hY3JvIGludm9rZWQgYnkgZW50cmllcyBpbiB0aGUgYXV4IGZpbGUuICBVc3VhbGx5IGl0J3MKKyUganVzdCBhIFxkZWYgKHdlIHByZXBlbmQgWFIgdG8gdGhlIGNvbnRyb2wgc2VxdWVuY2UgbmFtZSB0byBhdm9pZAorJSBjb2xsaXNpb25zKS4gIEJ1dCBpZiB0aGlzIGlzIGEgZmxvYXQgdHlwZSwgd2UgaGF2ZSBtb3JlIHdvcmsgdG8gZG8uCislCitcZGVmXHhyZGVmIzEjMnslCisgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBYUiMxXGVuZGNzbmFtZXsjMn0lIHJlbWVtYmVyIHRoaXMgeHJlZiB2YWx1ZS4KKyAgJQorICAlIFdhcyB0aGF0IHhyZWYgY29udHJvbCBzZXF1ZW5jZSB0aGF0IHdlIGp1c3QgZGVmaW5lZCBmb3IgYSBmbG9hdD8KKyAgXGV4cGFuZGFmdGVyXGlmZmxvYXRcY3NuYW1lIFhSIzFcZW5kY3NuYW1lCisgICAgJSBpdCB3YXMgYSBmbG9hdCwgYW5kIHdlIGhhdmUgdGhlIChzYWZlKSBmbG9hdCB0eXBlIGluIFxpZmZsb2F0dHlwZS4KKyAgICBcZXhwYW5kYWZ0ZXJcbGV0XGV4cGFuZGFmdGVyXGZsb2F0bGlzdAorICAgICAgXGNzbmFtZSBmbG9hdGxpc3RcaWZmbG9hdHR5cGVcZW5kY3NuYW1lCisgICAgJQorICAgICUgSXMgdGhpcyB0aGUgZmlyc3QgdGltZSB3ZSd2ZSBzZWVuIHRoaXMgZmxvYXQgdHlwZT8KKyAgICBcZXhwYW5kYWZ0ZXJcaWZ4XGZsb2F0bGlzdFxyZWxheAorICAgICAgXHRva3MwID0ge1xkb30lIHllcywgc28ganVzdCBcZG8KKyAgICBcZWxzZQorICAgICAgJSBoYWQgaXQgYmVmb3JlLCBzbyBwcmVzZXJ2ZSBwcmV2aW91cyBlbGVtZW50cyBpbiBsaXN0LgorICAgICAgXHRva3MwID0gXGV4cGFuZGFmdGVye1xmbG9hdGxpc3RcZG99JQorICAgIFxmaQorICAgICUKKyAgICAlIFJlbWVtYmVyIHRoaXMgeHJlZiBpbiB0aGUgY29udHJvbCBzZXF1ZW5jZSBcZmxvYXRsaXN0RkxPQVRUWVBFLAorICAgICUgZm9yIGxhdGVyIHVzZSBpbiBcbGlzdG9mZmxvYXRzLgorICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSBmbG9hdGxpc3RcaWZmbG9hdHR5cGVcZW5kY3NuYW1le1x0aGVcdG9rczB7IzF9fSUKKyAgXGZpCit9CisKKyUgUmVhZCB0aGUgbGFzdCBleGlzdGluZyBhdXggZmlsZSwgaWYgYW55LiAgTm8gZXJyb3IgaWYgbm9uZSBleGlzdHMuCislCitcZGVmXHRyeWF1eGZpbGV7JQorICBcb3BlbmluIDEgXGpvYm5hbWUuYXV4CisgIFxpZmVvZiAxIFxlbHNlCisgICAgXHJlYWRkYXRhZmlsZXthdXh9JQorICAgIFxnbG9iYWxcaGF2ZXhyZWZzdHJ1ZQorICBcZmkKKyAgXGNsb3NlaW4gMQorfQorCitcZGVmXHNldHVwZGF0YWZpbGV7JQorICBcY2F0Y29kZWBcXl5APVxvdGhlcgorICBcY2F0Y29kZWBcXl5BPVxvdGhlcgorICBcY2F0Y29kZWBcXl5CPVxvdGhlcgorICBcY2F0Y29kZWBcXl5DPVxvdGhlcgorICBcY2F0Y29kZWBcXl5EPVxvdGhlcgorICBcY2F0Y29kZWBcXl5FPVxvdGhlcgorICBcY2F0Y29kZWBcXl5GPVxvdGhlcgorICBcY2F0Y29kZWBcXl5HPVxvdGhlcgorICBcY2F0Y29kZWBcXl5IPVxvdGhlcgorICBcY2F0Y29kZWBcXl5LPVxvdGhlcgorICBcY2F0Y29kZWBcXl5MPVxvdGhlcgorICBcY2F0Y29kZWBcXl5OPVxvdGhlcgorICBcY2F0Y29kZWBcXl5QPVxvdGhlcgorICBcY2F0Y29kZWBcXl5RPVxvdGhlcgorICBcY2F0Y29kZWBcXl5SPVxvdGhlcgorICBcY2F0Y29kZWBcXl5TPVxvdGhlcgorICBcY2F0Y29kZWBcXl5UPVxvdGhlcgorICBcY2F0Y29kZWBcXl5VPVxvdGhlcgorICBcY2F0Y29kZWBcXl5WPVxvdGhlcgorICBcY2F0Y29kZWBcXl5XPVxvdGhlcgorICBcY2F0Y29kZWBcXl5YPVxvdGhlcgorICBcY2F0Y29kZWBcXl5aPVxvdGhlcgorICBcY2F0Y29kZWBcXl5bPVxvdGhlcgorICBcY2F0Y29kZWBcXl5cPVxvdGhlcgorICBcY2F0Y29kZWBcXl5dPVxvdGhlcgorICBcY2F0Y29kZWBcXl5ePVxvdGhlcgorICBcY2F0Y29kZWBcXl5fPVxvdGhlcgorICAlIEl0IHdhcyBzdWdnZXN0ZWQgdG8gc2V0IHRoZSBjYXRjb2RlIG9mIF4gdG8gNywgd2hpY2ggd291bGQgYWxsb3cgXl5lNCBldGMuCisgICUgaW4geHJlZiB0YWdzLCBpLmUuLCBub2RlIG5hbWVzLiAgQnV0IHNpbmNlIF5eZTQgbm90YXRpb24gaXNuJ3QKKyAgJSBzdXBwb3J0ZWQgaW4gdGhlIG1haW4gdGV4dCwgaXQgZG9lc24ndCBzZWVtIGRlc2lyYWJsZS4gIEZ1cnRoZXJtb3JlLAorICAlIHRoYXQgaXMgbm90IGVub3VnaDogZm9yIG5vZGUgbmFtZXMgdGhhdCBhY3R1YWxseSBjb250YWluIGEgXgorICAlIGNoYXJhY3Rlciwgd2Ugd291bGQgZW5kIHVwIHdyaXRpbmcgYSBsaW5lIGxpa2UgdGhpczogJ3hyZGVmIHsnaGF0CisgICUgYi10aXRsZX17J2hhdCBifSBhbmQgXHhyZGVmIGRvZXMgYSBcY3NuYW1lLi4uXGVuZGNzbmFtZSBvbiB0aGUgZmlyc3QKKyAgJSBhcmd1bWVudCwgYW5kIFxoYXQgaXMgbm90IGFuIGV4cGFuZGFibGUgY29udHJvbCBzZXF1ZW5jZS4gIEl0IGNvdWxkCisgICUgYWxsIGJlIHdvcmtlZCBvdXQsIGJ1dCB3aHk/ICBFaXRoZXIgd2Ugc3VwcG9ydCBeXiBvciB3ZSBkb24ndC4KKyAgJQorICAlIFRoZSBvdGhlciBjaGFuZ2UgbmVjZXNzYXJ5IGZvciB0aGlzIHdhcyB0byBkZWZpbmUgXGF1eGhhdDoKKyAgJSBcZGVmXGF1eGhhdHtcZGVmXnsnaGF0IH19JSBleHRyYSBzcGFjZSBzbyBvayBpZiBmb2xsb3dlZCBieSBsZXR0ZXIKKyAgJSBhbmQgdGhlbiB0byBjYWxsIFxhdXhoYXQgaW4gXHNldHEuCisgICUKKyAgXGNhdGNvZGVgXF49XG90aGVyCisgICUKKyAgJSBTcGVjaWFsIGNoYXJhY3RlcnMuICBTaG91bGQgYmUgdHVybmVkIG9mZiBhbnl3YXksIGJ1dC4uLgorICBcY2F0Y29kZWBcfj1cb3RoZXIKKyAgXGNhdGNvZGVgXFs9XG90aGVyCisgIFxjYXRjb2RlYFxdPVxvdGhlcgorICBcY2F0Y29kZWBcIj1cb3RoZXIKKyAgXGNhdGNvZGVgXF89XG90aGVyCisgIFxjYXRjb2RlYFx8PVxvdGhlcgorICBcY2F0Y29kZWBcPD1cb3RoZXIKKyAgXGNhdGNvZGVgXD49XG90aGVyCisgIFxjYXRjb2RlYFwkPVxvdGhlcgorICBcY2F0Y29kZWBcIz1cb3RoZXIKKyAgXGNhdGNvZGVgXCY9XG90aGVyCisgIFxjYXRjb2RlYFwlPVxvdGhlcgorICBcY2F0Y29kZWArPVxvdGhlciAlIGF2b2lkIFwrIGZvciBwYXJhbm9pYSBldmVuIHRob3VnaCB3ZSd2ZSB0dXJuZWQgaXQgb2ZmCisgICUKKyAgJSBUaGlzIGlzIHRvIHN1cHBvcnQgXCBpbiBub2RlIG5hbWVzIGFuZCB0aXRsZXMsIHNpbmNlIHRoZSBcCisgICUgY2hhcmFjdGVycyBlbmQgdXAgaW4gYSBcY3NuYW1lLiAgSXQncyBlYXNpZXIgdGhhbgorICAlIGxlYXZpbmcgaXQgYWN0aXZlIGFuZCBtYWtpbmcgaXRzIGFjdGl2ZSBkZWZpbml0aW9uIGFuIGFjdHVhbCBcCisgICUgY2hhcmFjdGVyLiAgV2hhdCBJIGRvbid0IHVuZGVyc3RhbmQgaXMgd2h5IGl0IHdvcmtzIGluIHRoZSAqdmFsdWUqCisgICUgb2YgdGhlIHhyZGVmLiAgU2VlbXMgbGlrZSBpdCBzaG91bGQgYmUgYSBjYXRjb2RlMTIgXCwgYW5kIHRoYXQKKyAgJSBzaG91bGQgbm90IHR5cGVzZXQgcHJvcGVybHkuICBCdXQgaXQgd29ya3MsIHNvIEknbSBtb3Zpbmcgb24gZm9yCisgICUgbm93LiAgLS1rYXJsLCAxNWphbjA0LgorICBcY2F0Y29kZWBcXD1cb3RoZXIKKyAgJQorICAlIE1ha2UgdGhlIGNoYXJhY3RlcnMgMTI4LTI1NSBiZSBwcmludGluZyBjaGFyYWN0ZXJzLgorICB7JQorICAgIFxjb3VudDE9MTI4CisgICAgXGRlZlxsb29weyUKKyAgICAgIFxjYXRjb2RlXGNvdW50MT1cb3RoZXIKKyAgICAgIFxhZHZhbmNlXGNvdW50MSBieSAxCisgICAgICBcaWZudW0gXGNvdW50MTwyNTYgXGxvb3AgXGZpCisgICAgfSUKKyAgfSUKKyAgJQorICAlIEAgaXMgb3VyIGVzY2FwZSBjaGFyYWN0ZXIgaW4gLmF1eCBmaWxlcywgYW5kIHdlIG5lZWQgYnJhY2VzLgorICBcY2F0Y29kZWBcez0xCisgIFxjYXRjb2RlYFx9PTIKKyAgXGNhdGNvZGVgXEA9MAorfQorCitcZGVmXHJlYWRkYXRhZmlsZSMxeyUKK1xiZWdpbmdyb3VwCisgIFxzZXR1cGRhdGFmaWxlCisgIFxpbnB1dFxqb2JuYW1lLiMxCitcZW5kZ3JvdXB9CisKK1xtZXNzYWdle2luc2VydGlvbnMsfQorJSBpbmNsdWRpbmcgZm9vdG5vdGVzLgorCitcbmV3Y291bnQgXGZvb3Rub3Rlbm8KKworJSBUaGUgdHJhaWxpbmcgc3BhY2UgaW4gdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uIGZvciBzdXBlcmVqZWN0IGlzCislIHZpdGFsIGZvciBwcm9wZXIgZmlsbGluZzsgcGFnZXMgY29tZSBvdXQgdW5hbGlnbmVkIHdoZW4geW91IGRvIGEKKyUgcGFnZWFsaWdubWFjcm8gY2FsbCBpZiB0aGF0IHNwYWNlIGJlZm9yZSB0aGUgY2xvc2luZyBicmFjZSBpcworJSByZW1vdmVkLiAoR2VuZXJhbGx5LCBudW1lcmljIGNvbnN0YW50cyBzaG91bGQgYWx3YXlzIGJlIGZvbGxvd2VkIGJ5IGEKKyUgc3BhY2UgdG8gcHJldmVudCBzdHJhbmdlIGV4cGFuc2lvbiBlcnJvcnMuKQorXGRlZlxzdXBlcmVqZWN0e1xwYXJccGVuYWx0eSAtMjAwMDBcZm9vdG5vdGVubyA9MCB9CisKKyUgQGZvb3Rub3Rlc3R5bGUgaXMgbWVhbmluZ2Z1bCBmb3IgaW5mbyBvdXRwdXQgb25seS4KK1xsZXRcZm9vdG5vdGVzdHlsZT1cY29tbWVudAorCit7XGNhdGNvZGUgYFxAPTExCislCislIEF1dG8tbnVtYmVyIGZvb3Rub3Rlcy4gIE90aGVyd2lzZSBsaWtlIHBsYWluLgorXGdkZWZcZm9vdG5vdGV7JQorICBcbGV0XGluZGVudD1ccHRleGluZGVudAorICBcbGV0XG5vaW5kZW50PVxwdGV4bm9pbmRlbnQKKyAgXGdsb2JhbFxhZHZhbmNlXGZvb3Rub3Rlbm8gYnkgXEBuZQorICBcZWRlZlx0aGlzZm9vdG5veyRee1x0aGVcZm9vdG5vdGVub30kfSUKKyAgJQorICAlIEluIGNhc2UgdGhlIGZvb3Rub3RlIGNvbWVzIGF0IHRoZSBlbmQgb2YgYSBzZW50ZW5jZSwgcHJlc2VydmUgdGhlCisgICUgZXh0cmEgc3BhY2luZyBhZnRlciB3ZSBkbyB0aGUgZm9vdG5vdGUgbnVtYmVyLgorICBcbGV0XEBzZlxlbXB0eQorICBcaWZobW9kZVxlZGVmXEBzZntcc3BhY2VmYWN0b3JcdGhlXHNwYWNlZmFjdG9yfVxwdGV4c2xhc2hcZmkKKyAgJQorICAlIFJlbW92ZSBpbmFkdmVydGVudCBibGFuayBzcGFjZSBiZWZvcmUgdHlwZXNldHRpbmcgdGhlIGZvb3Rub3RlIG51bWJlci4KKyAgXHVuc2tpcAorICBcdGhpc2Zvb3Rub1xAc2YKKyAgXGRvZm9vdG5vdGUKK30lCisKKyUgRG9uJ3QgYm90aGVyIHdpdGggdGhlIHRyaWNrZXJ5IGluIHBsYWluLnRleCB0byBub3QgcmVxdWlyZSB0aGUKKyUgZm9vdG5vdGUgdGV4dCBhcyBhIHBhcmFtZXRlci4gIE91ciBmb290bm90ZXMgZG9uJ3QgbmVlZCB0byBiZSBzbyBnZW5lcmFsLgorJQorJSBPaCB5ZXMsIHRoZXkgZG87IG90aGVyd2lzZSwgQGlmc2V0IChhbmQgYW55dGhpbmcgZWxzZSB0aGF0IHVzZXMKKyUgXHBhcnNlYXJnbGluZSkgZmFpbHMgaW5zaWRlIGZvb3Rub3RlcyBiZWNhdXNlIHRoZSB0b2tlbnMgYXJlIGZpeGVkIHdoZW4KKyUgdGhlIGZvb3Rub3RlIGlzIHJlYWQuICAtLWthcmwsIDE2bm92OTYuCislCitcZ2RlZlxkb2Zvb3Rub3RleyUKKyAgXGluc2VydFxmb290aW5zXGJncm91cAorICAlIFdlIHdhbnQgdG8gdHlwZXNldCB0aGlzIHRleHQgYXMgYSBub3JtYWwgcGFyYWdyYXBoLCBldmVuIGlmIHRoZQorICAlIGZvb3Rub3RlIHJlZmVyZW5jZSBvY2N1cnMgaW4gKGZvciBleGFtcGxlKSBhIGRpc3BsYXkgZW52aXJvbm1lbnQuCisgICUgU28gcmVzZXQgc29tZSBwYXJhbWV0ZXJzLgorICBcaHNpemU9XHBhZ2V3aWR0aAorICBcaW50ZXJsaW5lcGVuYWx0eVxpbnRlcmZvb3Rub3RlbGluZXBlbmFsdHkKKyAgXHNwbGl0dG9wc2tpcFxodFxzdHJ1dGJveCAlIHRvcCBiYXNlbGluZSBmb3IgYnJva2VuIGZvb3Rub3RlcworICBcc3BsaXRtYXhkZXB0aFxkcFxzdHJ1dGJveAorICBcZmxvYXRpbmdwZW5hbHR5XEBNTQorICBcbGVmdHNraXBcekBza2lwCisgIFxyaWdodHNraXBcekBza2lwCisgIFxzcGFjZXNraXBcekBza2lwCisgIFx4c3BhY2Vza2lwXHpAc2tpcAorICBccGFyaW5kZW50XGRlZmF1bHRwYXJpbmRlbnQKKyAgJQorICBcc21hbGxmb250cyBccm0KKyAgJQorICAlIEJlY2F1c2Ugd2UgdXNlIGhhbmdpbmcgaW5kZW50YXRpb24gaW4gZm9vdG5vdGVzLCBhIEBub2luZGVudCBhcHBlYXJzCisgICUgdG8gZXhkZW50IHRoaXMgdGV4dCwgc28gbWFrZSBpdCBiZSBhIG5vLW9wLiAgbWFrZWluZm8gZG9lcyBub3QgdXNlCisgICUgaGFuZ2luZyBpbmRlbnRhdGlvbiBzbyBAbm9pbmRlbnQgY2FuIHN0aWxsIGJlIG5lZWRlZCB3aXRoaW4gZm9vdG5vdGUKKyAgJSB0ZXh0IGFmdGVyIGFuIEBleGFtcGxlIG9yIHRoZSBsaWtlIChub3QgdGhhdCB0aGlzIGlzIGdvb2Qgc3R5bGUpLgorICBcbGV0XG5vaW5kZW50ID0gXHJlbGF4CisgICUKKyAgJSBIYW5nIHRoZSBmb290bm90ZSB0ZXh0IG9mZiB0aGUgbnVtYmVyLiAgVXNlIFxldmVyeXBhciBpbiBjYXNlIHRoZQorICAlIGZvb3Rub3RlIGV4dGVuZHMgZm9yIG1vcmUgdGhhbiBvbmUgcGFyYWdyYXBoLgorICBcZXZlcnlwYXIgPSB7XGhhbmd9JQorICBcdGV4dGluZGVudHtcdGhpc2Zvb3Rub30lCisgICUKKyAgJSBEb24ndCBjcmFzaCBpbnRvIHRoZSBsaW5lIGFib3ZlIHRoZSBmb290bm90ZSB0ZXh0LiAgU2luY2UgdGhpcworICAlIGV4cGFuZHMgaW50byBhIGJveCwgaXQgbXVzdCBjb21lIHdpdGhpbiB0aGUgcGFyYWdyYXBoLCBsZXN0IGl0CisgICUgcHJvdmlkZSBhIHBsYWNlIHdoZXJlIFRlWCBjYW4gc3BsaXQgdGhlIGZvb3Rub3RlLgorICBcZm9vdHN0cnV0CisgIFxmdXR1cmVsZXRcbmV4dFxmb0B0Cit9Cit9JWVuZCBcY2F0Y29kZSBgXEA9MTEKKworJSBJbiBjYXNlIGEgQGZvb3Rub3RlIGFwcGVhcnMgaW4gYSB2Ym94LCBzYXZlIHRoZSBmb290bm90ZSB0ZXh0IGFuZCBjcmVhdGUKKyUgdGhlIHJlYWwgXGluc2VydCBqdXN0IGFmdGVyIHRoZSB2Ym94IGZpbmlzaGVkLiAgT3RoZXJ3aXNlLCB0aGUgaW5zZXJ0aW9uCislIHdvdWxkIGJlIGxvc3QuCislIFNpbWlsYXJpbHksIGlmIGEgQGZvb3Rub3RlIGFwcGVhcnMgaW5zaWRlIGFuIGFsaWdubWVudCwgc2F2ZSB0aGUgZm9vdG5vdGUKKyUgdGV4dCB0byBhIGJveCBhbmQgbWFrZSB0aGUgXGluc2VydCB3aGVuIGEgcm93IG9mIHRoZSB0YWJsZSBpcyBmaW5pc2hlZC4KKyUgQW5kIHRoZSBzYW1lIGNhbiBiZSBkb25lIGZvciBvdGhlciBpbnNlcnQgY2xhc3Nlcy4gIC0ta2FzYWwsIDE2bm92MDMuCisKKyUgUmVwbGFjZSB0aGUgXGluc2VydCBwcmltaXRpdmUgYnkgYSBjaGVhdGluZyBtYWNyby4KKyUgRGVlcGVyIGluc2lkZSwganVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgc2F2ZWQgaW5zZXJ0aW9ucyBhcmUgbm90IHNwaWxsZWQKKyUgb3V0IHByZW1hdHVyZWx5LgorJQorXGRlZlxzdGFydHNhdmluZ2luc2VydHN7JQorICBcaWZ4IFxpbnNlcnRccHRleGluc2VydAorICAgIFxsZXRcaW5zZXJ0XHNhdmVpbnNlcnQKKyAgXGVsc2UKKyAgICBcbGV0XGNoZWNraW5zZXJ0c1xyZWxheAorICBcZmkKK30KKworJSBUaGlzIFxpbnNlcnQgcmVwbGFjZW1lbnQgd29ya3MgZm9yIGJvdGggXGluc2VydFxmb290aW5ze2Zvb30gYW5kCislIFxpbnNlcnRcZm9vdGluc1xiZ3JvdXAgZm9vXGVncm91cCwgYnV0IGl0IGRvZXNuJ3Qgd29yayBmb3IgXGluc2VydDI3e2Zvb30uCislCitcZGVmXHNhdmVpbnNlcnQjMXslCisgIFxlZGVmXG5leHR7XG5vZXhwYW5kXHNhdmV0b2JveCBcbWFrZVNBVkVuYW1lIzF9JQorICBcYWZ0ZXJhc3NpZ25tZW50XG5leHQKKyAgJSBzd2FsbG93IHRoZSBsZWZ0IGJyYWNlCisgIFxsZXRcdGVtcCA9Cit9CitcZGVmXG1ha2VTQVZFbmFtZSMxe1xtYWtlY3NuYW1le1NBVkVcZXhwYW5kYWZ0ZXJcZ29iYmxlXHN0cmluZyMxfX0KK1xkZWZcc2F2ZXRvYm94IzF7XGdsb2JhbFxzZXRib3gjMSA9IFx2Ym94XGJncm91cCBcdW52Ym94IzF9CisKK1xkZWZcY2hlY2tzYXZlaW5zIzF7XGlmdm9pZCMxXGVsc2UgXHBsYWNlc2F2ZWlucyMxXGZpfQorCitcZGVmXHBsYWNlc2F2ZWlucyMxeyUKKyAgXHB0ZXhpbnNlcnQgXGNzbmFtZVxleHBhbmRhZnRlclxnb2JibGVzYXZlXHN0cmluZyMxXGVuZGNzbmFtZQorICAgIHtcYm94IzF9JQorfQorCislIGVhdCBAU0FWRSAtLSBiZXdhcmUsIGFsbCBvZiB0aGVtIGhhdmUgY2F0Y29kZSBcb3RoZXI6Cit7CisgIFxkZWZcZG9zcGVjaWFsc3tcZG8gU1xkbyBBXGRvIFZcZG8gRX0gXHVuY2F0Y29kZXNwZWNpYWxzICAlICA7LSkKKyAgXGdkZWZcZ29iYmxlc2F2ZSBAU0FWRXt9Cit9CisKKyUgaW5pdGlhbGl6YXRpb246CitcZGVmXG5ld3NhdmVpbnMgIzF7JQorICBcZWRlZlxuZXh0e1xub2V4cGFuZFxuZXdzYXZlaW5zWCBcbWFrZVNBVkVuYW1lIzF9JQorICBcbmV4dAorfQorXGRlZlxuZXdzYXZlaW5zWCAjMXslCisgIFxjc25hbWUgbmV3Ym94XGVuZGNzbmFtZSAjMSUKKyAgXGV4cGFuZGFmdGVyXGRlZlxleHBhbmRhZnRlclxjaGVja2luc2VydHNcZXhwYW5kYWZ0ZXJ7XGNoZWNraW5zZXJ0cworICAgIFxjaGVja3NhdmVpbnMgIzF9JQorfQorCislIGluaXRpYWxpemU6CitcbGV0XGNoZWNraW5zZXJ0c1xlbXB0eQorXG5ld3NhdmVpbnNcZm9vdGlucworXG5ld3NhdmVpbnNcbWFyZ2luCisKKworJSBAaW1hZ2UuICBXZSB1c2UgdGhlIG1hY3JvcyBmcm9tIGVwc2YudGV4IHRvIHN1cHBvcnQgdGhpcy4KKyUgSWYgZXBzZi50ZXggaXMgbm90IGluc3RhbGxlZCBhbmQgQGltYWdlIGlzIHVzZWQsIHdlIGNvbXBsYWluLgorJQorJSBDaGVjayBmb3IgYW5kIHJlYWQgZXBzZi50ZXggdXAgZnJvbnQuICBJZiB3ZSByZWFkIGl0IG9ubHkgYXQgQGltYWdlCislIHRpbWUsIHdlIG1pZ2h0IGJlIGluc2lkZSBhIGdyb3VwLCBhbmQgdGhlbiBpdHMgZGVmaW5pdGlvbnMgd291bGQgZ2V0CislIHVuZG9uZSBhbmQgdGhlIG5leHQgaW1hZ2Ugd291bGQgZmFpbC4KK1xvcGVuaW4gMSA9IGVwc2YudGV4CitcaWZlb2YgMSBcZWxzZQorICAlIERvIG5vdCBib3RoZXIgc2hvd2luZyBiYW5uZXIgd2l0aCBlcHNmLnRleCB2Mi43ayAoYXZhaWxhYmxlIGluCisgICUgZG9jL2Vwc2YudGV4IGFuZCBvbiBjdGFuKS4KKyAgXGRlZlxlcHNmYW5ub3VuY2V7XHRva3MwID0gfSUKKyAgXGlucHV0IGVwc2YudGV4CitcZmkKK1xjbG9zZWluIDEKKyUKKyUgV2Ugd2lsbCBvbmx5IGNvbXBsYWluIG9uY2UgYWJvdXQgbGFjayBvZiBlcHNmLnRleC4KK1xuZXdpZlxpZndhcm5lZG5vZXBzZgorXG5ld2hlbHBcbm9lcHNmaGVscHtlcHNmLnRleCBtdXN0IGJlIGluc3RhbGxlZCBmb3IgaW1hZ2VzIHRvCisgIHdvcmsuICBJdCBpcyBhbHNvIGluY2x1ZGVkIGluIHRoZSBUZXhpbmZvIGRpc3RyaWJ1dGlvbiwgb3IgeW91IGNhbiBnZXQKKyAgaXQgZnJvbSBmdHA6Ly90dWcub3JnL3RleC9lcHNmLnRleC59CislCitcZGVmXGltYWdlIzF7JQorICBcaWZ4XGVwc2Zib3hcdW5kZWZpbmVkCisgICAgXGlmd2FybmVkbm9lcHNmIFxlbHNlCisgICAgICBcZXJyaGVscCA9IFxub2Vwc2ZoZWxwCisgICAgICBcZXJybWVzc2FnZXtlcHNmLnRleCBub3QgZm91bmQsIGltYWdlcyB3aWxsIGJlIGlnbm9yZWR9JQorICAgICAgXGdsb2JhbFx3YXJuZWRub2Vwc2Z0cnVlCisgICAgXGZpCisgIFxlbHNlCisgICAgXGltYWdleHh4ICMxLCwsLCxcZmluaXNoCisgIFxmaQorfQorJQorJSBBcmd1bWVudHMgdG8gQGltYWdlOgorJSAjMSBpcyAobWFuZGF0b3J5KSBpbWFnZSBmaWxlbmFtZTsgd2UgdGFjayBvbiAuZXBzIGV4dGVuc2lvbi4KKyUgIzIgaXMgKG9wdGlvbmFsKSB3aWR0aCwgIzMgaXMgKG9wdGlvbmFsKSBoZWlnaHQuCislICM0IGlzIChpZ25vcmVkIG9wdGlvbmFsKSBodG1sIGFsdCB0ZXh0LgorJSAjNSBpcyAoaWdub3JlZCBvcHRpb25hbCkgZXh0ZW5zaW9uLgorJSAjNiBpcyBqdXN0IHRoZSB1c3VhbCBleHRyYSBpZ25vcmVkIGFyZyBmb3IgcGFyc2luZyB0aGlzIHN0dWZmLgorXG5ld2lmXGlmaW1hZ2V2bW9kZQorXGRlZlxpbWFnZXh4eCMxLCMyLCMzLCM0LCM1LCM2XGZpbmlzaHtcYmVnaW5ncm91cAorICBcY2F0Y29kZWBcXl5NID0gNSAgICAgJSBpbiBjYXNlIHdlJ3JlIGluc2lkZSBhbiBleGFtcGxlCisgIFxub3JtYWx0dXJub2ZmYWN0aXZlICAlIGFsbG93IF8gZXQgYWwuIGluIG5hbWVzCisgICUgSWYgdGhlIGltYWdlIGlzIGJ5IGl0c2VsZiwgY2VudGVyIGl0LgorICBcaWZ2bW9kZQorICAgIFxpbWFnZXZtb2RldHJ1ZQorICAgIFxub2JyZWFrXGJpZ3NraXAKKyAgICAlIFVzdWFsbHkgd2UnbGwgaGF2ZSB0ZXh0IGFmdGVyIHRoZSBpbWFnZSB3aGljaCB3aWxsIGluc2VydAorICAgICUgXHBhcnNraXAgZ2x1ZSwgc28gaW5zZXJ0IGl0IGhlcmUgdG9vIHRvIGVxdWFsaXplIHRoZSBzcGFjZQorICAgICUgYWJvdmUgYW5kIGJlbG93LgorICAgIFxub2JyZWFrXHZza2lwXHBhcnNraXAKKyAgICBcbm9icmVhaworICAgIFxsaW5lXGJncm91cAorICBcZmkKKyAgJQorICAlIE91dHB1dCB0aGUgaW1hZ2UuCisgIFxpZnBkZgorICAgIFxkb3BkZmltYWdleyMxfXsjMn17IzN9JQorICBcZWxzZQorICAgICUgXGVwc2Zib3ggaXRzZWxmIHJlc2V0cyBcZXBzZj9zaXplIGF0IGVhY2ggZmlndXJlLgorICAgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxlcHNmeHNpemU9IzJccmVsYXggXGZpCisgICAgXHNldGJveDAgPSBcaGJveHtcaWdub3Jlc3BhY2VzICMzfVxpZmRpbVx3ZDAgPiAwcHQgXGVwc2Z5c2l6ZT0jM1xyZWxheCBcZmkKKyAgICBcZXBzZmJveHsjMS5lcHN9JQorICBcZmkKKyAgJQorICBcaWZpbWFnZXZtb2RlIFxlZ3JvdXAgXGJpZ2JyZWFrIFxmaSAgJSBzcGFjZSBhZnRlciB0aGUgaW1hZ2UKK1xlbmRncm91cH0KKworCislIEBmbG9hdCBGTE9BVFRZUEUsTEFCRUwsTE9DIC4uLiBAZW5kIGZsb2F0IGZvciBkaXNwbGF5ZWQgZmlndXJlcywgdGFibGVzLAorJSBldGMuICBXZSBkb24ndCBhY3R1YWxseSBpbXBsZW1lbnQgZmxvYXRpbmcgeWV0LCB3ZSBhbHdheXMgaW5jbHVkZSB0aGUKKyUgZmxvYXQgImhlcmUiLiAgQnV0IGl0IHNlZW1lZCB0aGUgYmVzdCBuYW1lIGZvciB0aGUgZnV0dXJlLgorJQorXGVudnBhcnNlYXJnZGVmXGZsb2F0e1xlYXRjb21tYXNwYWNlXGVhdGNvbW1hc3BhY2VcZG9mbG9hdCMxLCAsICxcZmluaXNofQorCislIFRoZXJlIG1heSBiZSBhIHNwYWNlIGJlZm9yZSBzZWNvbmQgYW5kL29yIHRoaXJkIHBhcmFtZXRlcjsgZGVsZXRlIGl0LgorXGRlZlxlYXRjb21tYXNwYWNlIzEsIHsjMSx9CisKKyUgIzEgaXMgdGhlIG9wdGlvbmFsIEZMT0FUVFlQRSwgdGhlIHRleHQgbGFiZWwgZm9yIHRoaXMgZmxvYXQsIHR5cGljYWxseQorJSAiRmlndXJlIiwgIlRhYmxlIiwgIkV4YW1wbGUiLCBldGMuICBDYW4ndCBjb250YWluIGNvbW1hcy4gIElmIG9taXR0ZWQsCislIHRoaXMgZmxvYXQgd2lsbCBub3QgYmUgbnVtYmVyZWQgYW5kIGNhbm5vdCBiZSByZWZlcnJlZCB0by4KKyUKKyUgIzIgaXMgdGhlIG9wdGlvbmFsIHhyZWYgbGFiZWwuICBBbHNvIG11c3QgYmUgcHJlc2VudCBmb3IgdGhlIGZsb2F0IHRvCislIGJlIHJlZmVyYWJsZS4KKyUKKyUgIzMgaXMgdGhlIG9wdGlvbmFsIHBvc2l0aW9uaW5nIGFyZ3VtZW50OyBmb3Igbm93LCBpdCBpcyBpZ25vcmVkLiAgSXQKKyUgd2lsbCBzb21laG93IHNwZWNpZnkgdGhlIHBvc2l0aW9ucyBhbGxvd2VkIHRvIGZsb2F0IHRvIChoZXJlLCB0b3AsIGJvdHRvbSkuCislCislIFdlIGtlZXAgYSBzZXBhcmF0ZSBjb3VudGVyIGZvciBlYWNoIEZMT0FUVFlQRSwgd2hpY2ggd2UgcmVzZXQgYXQgZWFjaAorJSBjaGFwdGVyLWxldmVsIGNvbW1hbmQuCitcbGV0XHJlc2V0YWxsZmxvYXRub3M9XGVtcHR5CislCitcZGVmXGRvZmxvYXQjMSwjMiwjMywjNFxmaW5pc2h7JQorICBcbGV0XHRoaXNjYXB0aW9uPVxlbXB0eQorICBcbGV0XHRoaXNzaG9ydGNhcHRpb249XGVtcHR5CisgICUKKyAgJSBkb24ndCBsb3NlIGZvb3Rub3RlcyBpbnNpZGUgQGZsb2F0LgorICAlCisgICUgQkVXQVJFOiB3aGVuIHRoZSBmbG9hdHMgc3RhcnQgZmxvYXQsIHdlIGhhdmUgdG8gaXNzdWUgd2FybmluZyB3aGVuZXZlciBhbgorICAlIGluc2VydCBhcHBlYXJzIGluc2lkZSBhIGZsb2F0IHdoaWNoIGNvdWxkIHBvc3NpYmx5IGZsb2F0LiAtLWthc2FsLCAyNm1heTA0CisgICUKKyAgXHN0YXJ0c2F2aW5naW5zZXJ0cworICAlCisgICUgV2UgY2FuJ3QgYmUgdXNlZCBpbnNpZGUgYSBwYXJhZ3JhcGguCisgIFxwYXIKKyAgJQorICBcdnRvcFxiZ3JvdXAKKyAgICBcZGVmXGZsb2F0dHlwZXsjMX0lCisgICAgXGRlZlxmbG9hdGxhYmVseyMyfSUKKyAgICBcZGVmXGZsb2F0bG9jeyMzfSUgd2UgZG8gbm90aGluZyB3aXRoIHRoaXMgeWV0LgorICAgICUKKyAgICBcaWZ4XGZsb2F0dHlwZVxlbXB0eQorICAgICAgXGxldFxzYWZlZmxvYXR0eXBlPVxlbXB0eQorICAgIFxlbHNlCisgICAgICB7JQorICAgICAgICAlIHRoZSBmbG9hdHR5cGUgbWlnaHQgaGF2ZSBhY2NlbnRzIG9yIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAgICAgJSBidXQgd2UgbmVlZCB0byB1c2UgaXQgaW4gYSBjb250cm9sIHNlcXVlbmNlIG5hbWUuCisgICAgICAgIFxpbmRleG5vZm9udHMKKyAgICAgICAgXHR1cm5vZmZhY3RpdmUKKyAgICAgICAgXHhkZWZcc2FmZWZsb2F0dHlwZXtcZmxvYXR0eXBlfSUKKyAgICAgIH0lCisgICAgXGZpCisgICAgJQorICAgICUgSWYgbGFiZWwgaXMgZ2l2ZW4gYnV0IG5vIHR5cGUsIHdlIGhhbmRsZSB0aGF0IGFzIHRoZSBlbXB0eSB0eXBlLgorICAgIFxpZnhcZmxvYXRsYWJlbFxlbXB0eSBcZWxzZQorICAgICAgJSBXZSB3YW50IGVhY2ggRkxPQVRUWVBFIHRvIGJlIG51bWJlcmVkIHNlcGFyYXRlbHkgKEZpZ3VyZSAxLAorICAgICAgJSBUYWJsZSAxLCBGaWd1cmUgMiwgLi4uKS4gIChBbmQgaWYgbm8gbGFiZWwsIG5vIG51bWJlci4pCisgICAgICAlCisgICAgICBcZXhwYW5kYWZ0ZXJcZ2V0ZmxvYXRub1xjc25hbWVcc2FmZWZsb2F0dHlwZSBmbG9hdG5vXGVuZGNzbmFtZQorICAgICAgXGdsb2JhbFxhZHZhbmNlXGZsb2F0bm8gYnkgMQorICAgICAgJQorICAgICAgeyUKKyAgICAgICAgJSBUaGlzIG1hZ2ljIHZhbHVlIGZvciBcdGhpc3NlY3Rpb24gaXMgb3V0cHV0IGJ5IFxzZXRyZWYgYXMgdGhlCisgICAgICAgICUgWFJFRkxBQkVMLXRpdGxlIHZhbHVlLiAgXHhyZWZYIHVzZXMgaXQgdG8gZGlzdGluZ3Vpc2ggZmxvYXQKKyAgICAgICAgJSBsYWJlbHMgKHdoaWNoIGhhdmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvdXRwdXQgZm9ybWF0KSBmcm9tCisgICAgICAgICUgbm9kZSBhbmQgYW5jaG9yIGxhYmVscy4gIEFuZCBceHJkZWYgdXNlcyBpdCB0byBjb25zdHJ1Y3QgdGhlCisgICAgICAgICUgbGlzdHMgb2YgZmxvYXRzLgorICAgICAgICAlCisgICAgICAgIFxlZGVmXHRoaXNzZWN0aW9ue1xmbG9hdG1hZ2ljPVxzYWZlZmxvYXR0eXBlfSUKKyAgICAgICAgXHNldHJlZntcZmxvYXRsYWJlbH17WWZsb2F0fSUKKyAgICAgIH0lCisgICAgXGZpCisgICAgJQorICAgICUgc3RhcnQgd2l0aCBccGFyc2tpcCBnbHVlLCBJIGd1ZXNzLgorICAgIFx2c2tpcFxwYXJza2lwCisgICAgJQorICAgICUgRG9uJ3Qgc3VwcHJlc3MgaW5kZW50YXRpb24gaWYgYSBmbG9hdCBoYXBwZW5zIHRvIHN0YXJ0IGEgc2VjdGlvbi4KKyAgICBccmVzdG9yZWZpcnN0cGFyYWdyYXBoaW5kZW50Cit9CisKKyUgd2UgaGF2ZSB0aGVzZSBwb3NzaWJpbGl0aWVzOgorJSBAZmxvYXQgRm9vLGxibCAmIEBjYXB0aW9ue0NhcH06IEZvbyAxLjE6IENhcAorJSBAZmxvYXQgRm9vLGxibCAmIG5vIGNhcHRpb246ICAgIEZvbyAxLjEKKyUgQGZsb2F0IEZvbyAmIEBjYXB0aW9ue0NhcH06ICAgICBGb286IENhcAorJSBAZmxvYXQgRm9vICYgbm8gY2FwdGlvbjogICAgICAgIEZvbworJSBAZmxvYXQgLGxibCAmIENhcHRpb257Q2FwfTogICAgIDEuMTogQ2FwCislIEBmbG9hdCAsbGJsICYgbm8gY2FwdGlvbjogICAgICAgMS4xCislIEBmbG9hdCAmIEBjYXB0aW9ue0NhcH06ICAgICAgICAgQ2FwCislIEBmbG9hdCAmIG5vIGNhcHRpb246CislCitcZGVmXEVmbG9hdHslCisgICAgXGxldFxmbG9hdGlkZW50ID0gXGVtcHR5CisgICAgJQorICAgICUgSW4gYWxsIGNhc2VzLCBpZiB3ZSBoYXZlIGEgZmxvYXQgdHlwZSwgaXQgY29tZXMgZmlyc3QuCisgICAgXGlmeFxmbG9hdHR5cGVcZW1wdHkgXGVsc2UgXGRlZlxmbG9hdGlkZW50e1xmbG9hdHR5cGV9XGZpCisgICAgJQorICAgICUgSWYgd2UgaGF2ZSBhbiB4cmVmIGxhYmVsLCB0aGUgbnVtYmVyIGNvbWVzIG5leHQuCisgICAgXGlmeFxmbG9hdGxhYmVsXGVtcHR5IFxlbHNlCisgICAgICBcaWZ4XGZsb2F0dHlwZVxlbXB0eSBcZWxzZSAlIGlmIGFsc28gaGFkIGZsb2F0IHR5cGUsIG5lZWQgdGllIGZpcnN0LgorICAgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1x0aWV9JQorICAgICAgXGZpCisgICAgICAlIHRoZSBudW1iZXIuCisgICAgICBcYXBwZW5kdG9tYWNyb1xmbG9hdGlkZW50e1xjaGFwbGV2ZWxwcmVmaXhcdGhlXGZsb2F0bm99JQorICAgIFxmaQorICAgICUKKyAgICAlIFN0YXJ0IHRoZSBwcmludGVkIGNhcHRpb24gd2l0aCB3aGF0IHdlJ3ZlIGNvbnN0cnVjdGVkIGluCisgICAgJSBcZmxvYXRpZGVudCwgYnV0IGtlZXAgaXQgc2VwYXJhdGU7IHdlIG5lZWQgXGZsb2F0aWRlbnQgYWdhaW4uCisgICAgXGxldFxjYXB0aW9ubGluZSA9IFxmbG9hdGlkZW50CisgICAgJQorICAgIFxpZnhcdGhpc2NhcHRpb25cZW1wdHkgXGVsc2UKKyAgICAgIFxpZnhcZmxvYXRpZGVudFxlbXB0eSBcZWxzZQorCVxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5lezogfSUgaGFkIGlkZW50LCBzbyBuZWVkIGEgY29sb24gYmV0d2VlbgorICAgICAgXGZpCisgICAgICAlCisgICAgICAlIGNhcHRpb24gdGV4dC4KKyAgICAgIFxhcHBlbmR0b21hY3JvXGNhcHRpb25saW5le1xzY2FuZXhwXHRoaXNjYXB0aW9ufSUKKyAgICBcZmkKKyAgICAlCisgICAgJSBJZiB3ZSBoYXZlIGFueXRoaW5nIHRvIHByaW50LCBwcmludCBpdCwgd2l0aCBzcGFjZSBiZWZvcmUuCisgICAgJSBFdmVudHVhbGx5IHRoaXMgbmVlZHMgdG8gYmVjb21lIGFuIFxpbnNlcnQuCisgICAgXGlmeFxjYXB0aW9ubGluZVxlbXB0eSBcZWxzZQorICAgICAgXHZza2lwLjVccGFyc2tpcAorICAgICAgXGNhcHRpb25saW5lCisgICAgICAlCisgICAgICAlIFNwYWNlIGJlbG93IGNhcHRpb24uCisgICAgICBcdnNraXBccGFyc2tpcAorICAgIFxmaQorICAgICUKKyAgICAlIElmIGhhdmUgYW4geHJlZiBsYWJlbCwgd3JpdGUgdGhlIGxpc3Qgb2YgZmxvYXRzIGluZm8uICBEbyB0aGlzCisgICAgJSBhZnRlciB0aGUgY2FwdGlvbiwgdG8gYXZvaWQgY2hhbmNlIG9mIGl0IGJlaW5nIGEgYnJlYWtwb2ludC4KKyAgICBcaWZ4XGZsb2F0bGFiZWxcZW1wdHkgXGVsc2UKKyAgICAgICUgV3JpdGUgdGhlIHRleHQgdGhhdCBnb2VzIGluIHRoZSBsb2YgdG8gdGhlIGF1eCBmaWxlIGFzCisgICAgICAlIFxmbG9hdGxhYmVsLWxvZi4gIEJlc2lkZXMgXGZsb2F0aWRlbnQsIHdlIGluY2x1ZGUgdGhlIHNob3J0CisgICAgICAlIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIHRoZSBmdWxsIGNhcHRpb24gaWYgc3BlY2lmaWVkLCBlbHNlIG5vdGhpbmcuCisgICAgICB7JQorICAgICAgICBcYXRkdW1taWVzCisgICAgICAgICUKKyAgICAgICAgJSBzaW5jZSB3ZSByZWFkIHRoZSBjYXB0aW9uIHRleHQgaW4gdGhlIG1hY3JvIHdvcmxkLCB3aGVyZSBeXk0KKyAgICAgICAgJSBpcyB0dXJuZWQgaW50byBhIG5vcm1hbCBjaGFyYWN0ZXIsIHdlIGhhdmUgdG8gc2NhbiBpdCBiYWNrLCBzbworICAgICAgICAlIHdlIGRvbid0IHdyaXRlIHRoZSBsaXRlcmFsIHRocmVlIGNoYXJhY3RlcnMgIl5eTSIgaW50byB0aGUgYXV4IGZpbGUuCisJXHNjYW5leHB7JQorCSAgXHhkZWZcbm9leHBhbmRcZ3RlbXB7JQorCSAgICBcaWZ4XHRoaXNzaG9ydGNhcHRpb25cZW1wdHkKKwkgICAgICBcdGhpc2NhcHRpb24KKwkgICAgXGVsc2UKKwkgICAgICBcdGhpc3Nob3J0Y2FwdGlvbgorCSAgICBcZmkKKwkgIH0lCisJfSUKKyAgICAgICAgXGltbWVkaWF0ZVx3cml0ZVxhdXhmaWxle0B4cmRlZntcZmxvYXRsYWJlbC1sb2Z9e1xmbG9hdGlkZW50CisJICBcaWZ4XGd0ZW1wXGVtcHR5IFxlbHNlIDogXGd0ZW1wIFxmaX19JQorICAgICAgfSUKKyAgICBcZmkKKyAgXGVncm91cCAgJSBlbmQgb2YgXHZ0b3AKKyAgJQorICAlIHBsYWNlIHRoZSBjYXB0dXJlZCBpbnNlcnRzCisgICUKKyAgJSBCRVdBUkU6IHdoZW4gdGhlIGZsb2F0cyBzdGFydCBmbG9hdGluZywgd2UgaGF2ZSB0byBpc3N1ZSB3YXJuaW5nCisgICUgd2hlbmV2ZXIgYW4gaW5zZXJ0IGFwcGVhcnMgaW5zaWRlIGEgZmxvYXQgd2hpY2ggY291bGQgcG9zc2libHkKKyAgJSBmbG9hdC4gLS1rYXNhbCwgMjZtYXkwNAorICAlCisgIFxjaGVja2luc2VydHMKK30KKworJSBBcHBlbmQgdGhlIHRva2VucyAjMiB0byB0aGUgZGVmaW5pdGlvbiBvZiBtYWNybyAjMSwgbm90IGV4cGFuZGluZyBlaXRoZXIuCislCitcZGVmXGFwcGVuZHRvbWFjcm8jMSMyeyUKKyAgXGV4cGFuZGFmdGVyXGRlZlxleHBhbmRhZnRlciMxXGV4cGFuZGFmdGVyeyMxIzJ9JQorfQorCislIEBjYXB0aW9uLCBAc2hvcnRjYXB0aW9uCislCitcZGVmXGNhcHRpb257XGRvY2FwdGlvblx0aGlzY2FwdGlvbn0KK1xkZWZcc2hvcnRjYXB0aW9ue1xkb2NhcHRpb25cdGhpc3Nob3J0Y2FwdGlvbn0KK1xkZWZcZG9jYXB0aW9ue1xjaGVja2VudlxmbG9hdCBcYmdyb3VwXHNjYW5hcmdjdHh0XGRlZmNhcHRpb259CitcZGVmXGRlZmNhcHRpb24jMSMye1xlZ3JvdXAgXGRlZiMxeyMyfX0KKworJSBUaGUgcGFyYW1ldGVyIGlzIHRoZSBjb250cm9sIHNlcXVlbmNlIGlkZW50aWZ5aW5nIHRoZSBjb3VudGVyIHdlIGFyZQorJSBnb2luZyB0byB1c2UuICBDcmVhdGUgaXQgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQgYXNzaWduIGl0IHRvIFxmbG9hdG5vLgorXGRlZlxnZXRmbG9hdG5vIzF7JQorICBcaWZ4IzFccmVsYXgKKyAgICAgICUgSGF2ZW4ndCBzZWVuIHRoaXMgZmlndXJlIHR5cGUgYmVmb3JlLgorICAgICAgXGNzbmFtZSBuZXdjb3VudFxlbmRjc25hbWUgIzElCisgICAgICAlCisgICAgICAlIFJlbWVtYmVyIHRvIHJlc2V0IHRoaXMgZmxvYXRubyBhdCB0aGUgbmV4dCBjaGFwLgorICAgICAgXGV4cGFuZGFmdGVyXGdkZWZcZXhwYW5kYWZ0ZXJccmVzZXRhbGxmbG9hdG5vcworICAgICAgICBcZXhwYW5kYWZ0ZXJ7XHJlc2V0YWxsZmxvYXRub3MgIzE9MCB9JQorICBcZmkKKyAgXGxldFxmbG9hdG5vIzElCit9CisKKyUgXHNldHJlZiBjYWxscyB0aGlzIHRvIGdldCB0aGUgWFJFRkxBQkVMLXNudCB2YWx1ZS4gIFdlIHdhbnQgYW4gQHhyZWYKKyUgdG8gdGhlIEZMT0FUTEFCRUwgdG8gZXhwYW5kIHRvICJGaWd1cmUgMy4xIi4gIFdlIGNhbGwgXHNldHJlZiB3aGVuIHdlCislIGZpcnN0IHJlYWQgdGhlIEBmbG9hdCBjb21tYW5kLgorJQorXGRlZlxZZmxvYXR7XGZsb2F0dHlwZUB0aWUgXGNoYXBsZXZlbHByZWZpeFx0aGVcZmxvYXRub30lCisKKyUgTWFnaWMgc3RyaW5nIHVzZWQgZm9yIHRoZSBYUkVGTEFCRUwtdGl0bGUgdmFsdWUsIHNvIFx4cmVmWCBjYW4KKyUgZGlzdGluZ3Vpc2ggZmxvYXRzIGZyb20gb3RoZXIgeHJlZiB0eXBlcy4KK1xkZWZcZmxvYXRtYWdpY3shIWZsb2F0ISF9CisKKyUgIzEgaXMgdGhlIGNvbnRyb2wgc2VxdWVuY2Ugd2UgYXJlIHBhc3NlZDsgd2UgZXhwYW5kIGludG8gYSBjb25kaXRpb25hbAorJSB3aGljaCBpcyB0cnVlIGlmICMxIHJlcHJlc2VudHMgYSBmbG9hdCByZWYuICBUaGF0IGlzLCB0aGUgbWFnaWMKKyUgXHRoaXNzZWN0aW9uIHZhbHVlIHdoaWNoIHdlIFxzZXRyZWYgYWJvdmUuCislCitcZGVmXGlmZmxvYXQjMXtcZXhwYW5kYWZ0ZXJcZG9pZmZsb2F0IzE9PVxmaW5pc2h9CislCislICMxIGlzIChtYXliZSkgdGhlIFxmbG9hdG1hZ2ljIHN0cmluZy4gIElmIHNvLCAjMiB3aWxsIGJlIHRoZQorJSAoc2FmZSkgZmxvYXQgdHlwZSBmb3IgdGhpcyBmbG9hdC4gIFdlIHNldCBcaWZmbG9hdHR5cGUgdG8gIzIuCislCitcZGVmXGRvaWZmbG9hdCMxPSMyPSMzXGZpbmlzaHslCisgIFxkZWZcdGVtcHsjMX0lCisgIFxkZWZcaWZmbG9hdHR5cGV7IzJ9JQorICBcaWZ4XHRlbXBcZmxvYXRtYWdpYworfQorCislIEBsaXN0b2ZmbG9hdHMgRkxPQVRUWVBFIC0gcHJpbnQgYSBsaXN0IG9mIGZsb2F0cyBsaWtlIGEgdGFibGUgb2YgY29udGVudHMuCislCitccGFyc2VhcmdkZWZcbGlzdG9mZmxvYXRzeyUKKyAgXGRlZlxmbG9hdHR5cGV7IzF9JSBmbG9hdHR5cGUKKyAgeyUKKyAgICAlIHRoZSBmbG9hdHR5cGUgbWlnaHQgaGF2ZSBhY2NlbnRzIG9yIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycywKKyAgICAlIGJ1dCB3ZSBuZWVkIHRvIHVzZSBpdCBpbiBhIGNvbnRyb2wgc2VxdWVuY2UgbmFtZS4KKyAgICBcaW5kZXhub2ZvbnRzCisgICAgXHR1cm5vZmZhY3RpdmUKKyAgICBceGRlZlxzYWZlZmxvYXR0eXBle1xmbG9hdHR5cGV9JQorICB9JQorICAlCisgICUgXHhyZGVmIHNhdmVzIHRoZSBmbG9hdHMgYXMgYSBcZG8tbGlzdCBpbiBcZmxvYXRsaXN0U0FGRUZMT0FUVFlQRS4KKyAgXGV4cGFuZGFmdGVyXGlmeFxjc25hbWUgZmxvYXRsaXN0XHNhZmVmbG9hdHR5cGVcZW5kY3NuYW1lIFxyZWxheAorICAgIFxpZmhhdmV4cmVmcworICAgICAgJSBpZiB0aGUgdXNlciBzYWlkIEBsaXN0b2ZmbG9hdHMgZm9vIGJ1dCBuZXZlciBAZmxvYXQgZm9vLgorICAgICAgXG1lc3NhZ2V7XGxpbmVudW1iZXIgTm8gYFxzYWZlZmxvYXR0eXBlJyBmbG9hdHMgdG8gbGlzdC59JQorICAgIFxmaQorICBcZWxzZQorICAgIFxiZWdpbmdyb3VwCisgICAgICBcbGVmdHNraXA9XHRvY2luZGVudCAgJSBpbmRlbnQgdGhlc2UgZW50cmllcyBsaWtlIGEgdG9jCisgICAgICBcbGV0XGRvPVxsaXN0b2ZmbG9hdHNkbworICAgICAgXGNzbmFtZSBmbG9hdGxpc3Rcc2FmZWZsb2F0dHlwZVxlbmRjc25hbWUKKyAgICBcZW5kZ3JvdXAKKyAgXGZpCit9CisKKyUgVGhpcyBpcyBjYWxsZWQgb24gZWFjaCBlbnRyeSBpbiBhIGxpc3Qgb2YgZmxvYXRzLiAgV2UncmUgcGFzc2VkIHRoZQorJSB4cmVmIGxhYmVsLCBpbiB0aGUgZm9ybSBMQUJFTC10aXRsZSwgd2hpY2ggaXMgaG93IHdlIHNhdmUgaXQgaW4gdGhlCislIGF1eCBmaWxlLiAgV2Ugc3RyaXAgb2ZmIHRoZSAtdGl0bGUgYW5kIGxvb2sgdXAgXFhSTEFCRUwtbG9mLCB3aGljaAorJSBoYXMgdGhlIHRleHQgd2UncmUgc3VwcG9zZWQgdG8gdHlwZXNldCBoZXJlLgorJQorJSBGaWd1cmVzIHdpdGhvdXQgeHJlZiBsYWJlbHMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIGxpc3QgKHNpbmNlCislIHRoZXkgd29uJ3QgYXBwZWFyIGluIHRoZSBhdXggZmlsZSkuCislCitcZGVmXGxpc3RvZmZsb2F0c2RvIzF7XGxpc3RvZmZsb2F0c2RvZW50cnkjMVxmaW5pc2h9CitcZGVmXGxpc3RvZmZsb2F0c2RvZW50cnkjMS10aXRsZVxmaW5pc2h7eyUKKyAgJSBDYW4ndCBmdWxseSBleHBhbmQgWFIjMS1sb2YgYmVjYXVzZSBpdCBjYW4gY29udGFpbiBhbnl0aGluZy4gIEp1c3QKKyAgJSBwYXNzIHRoZSBjb250cm9sIHNlcXVlbmNlLiAgT24gdGhlIG90aGVyIGhhbmQsIFhSIzEtcGcgaXMganVzdCB0aGUKKyAgJSBwYWdlIG51bWJlciwgYW5kIHdlIHdhbnQgdG8gZnVsbHkgZXhwYW5kIHRoYXQgc28gd2UgY2FuIGdldCBhIGxpbmsKKyAgJSBpbiBwZGYgb3V0cHV0LgorICBcdG9rc0EgPSBcZXhwYW5kYWZ0ZXJ7XGNzbmFtZSBYUiMxLWxvZlxlbmRjc25hbWV9JQorICAlCisgICUgdXNlIHRoZSBzYW1lIFxlbnRyeSBtYWNybyB3ZSB1c2UgdG8gZ2VuZXJhdGUgdGhlIFRPQyBhbmQgaW5kZXguCisgIFxlZGVmXHdyaXRlZW50cnl7XG5vZXhwYW5kXGVudHJ5e1x0aGVcdG9rc0F9e1xjc25hbWUgWFIjMS1wZ1xlbmRjc25hbWV9fSUKKyAgXHdyaXRlZW50cnkKK319CisKK1xtZXNzYWdle2xvY2FsaXphdGlvbix9CislIGFuZCBpMThuLgorCislIEBkb2N1bWVudGxhbmd1YWdlIGlzIHVzdWFsbHkgZ2l2ZW4gdmVyeSBlYXJseSwganVzdCBhZnRlcgorJSBAc2V0ZmlsZW5hbWUuICBJZiBkb25lIHRvbyBsYXRlLCBpdCBtYXkgbm90IG92ZXJyaWRlIGV2ZXJ5dGhpbmcKKyUgcHJvcGVybHkuICBTaW5nbGUgYXJndW1lbnQgaXMgdGhlIGxhbmd1YWdlIGFiYnJldmlhdGlvbi4KKyUgSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBzZXQgdXAgYSBoeXBoZW5hdGlvbiBmaWxlIGhlcmUuCislCitccGFyc2VhcmdkZWZcZG9jdW1lbnRsYW5ndWFnZXslCisgIFx0ZXggJSByZWFkIHR4aS0/Py50ZXggZmlsZSBpbiBwbGFpbiBUZVguCisgICAgJSBSZWFkIHRoZSBmaWxlIGlmIGl0IGV4aXN0cy4KKyAgICBcb3BlbmluIDEgdHhpLSMxLnRleAorICAgIFxpZmVvZiAxCisgICAgICBcZXJyaGVscCA9IFxub2xhbmdoZWxwCisgICAgICBcZXJybWVzc2FnZXtDYW5ub3QgcmVhZCBsYW5ndWFnZSBmaWxlIHR4aS0jMS50ZXh9JQorICAgIFxlbHNlCisgICAgICBcaW5wdXQgdHhpLSMxLnRleAorICAgIFxmaQorICAgIFxjbG9zZWluIDEKKyAgXGVuZGdyb3VwCit9CitcbmV3aGVscFxub2xhbmdoZWxwe1RoZSBnaXZlbiBsYW5ndWFnZSBkZWZpbml0aW9uIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yCitpcyBlbXB0eS4gIE1heWJlIHlvdSBuZWVkIHRvIGluc3RhbGwgaXQ/ICBJbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKK3Nob3VsZCB3b3JrIGlmIG5vd2hlcmUgZWxzZSBkb2VzLn0KKworCislIEBkb2N1bWVudGVuY29kaW5nIHNob3VsZCBjaGFuZ2Ugc29tZXRoaW5nIGluIFRlWCBldmVudHVhbGx5LCBtb3N0CislIGxpa2VseSwgYnV0IGZvciBub3cganVzdCByZWNvZ25pemUgaXQuCitcbGV0XGRvY3VtZW50ZW5jb2RpbmcgPSBcY29tbWVudAorCisKKyUgUGFnZSBzaXplIHBhcmFtZXRlcnMuCislCitcbmV3ZGltZW5cZGVmYXVsdHBhcmluZGVudCBcZGVmYXVsdHBhcmluZGVudCA9IDE1cHQKKworXGNoYXBoZWFkaW5nc2tpcCA9IDE1cHQgcGx1cyA0cHQgbWludXMgMnB0Citcc2VjaGVhZGluZ3NraXAgPSAxMnB0IHBsdXMgM3B0IG1pbnVzIDJwdAorXHN1YnNlY2hlYWRpbmdza2lwID0gOXB0IHBsdXMgMnB0IG1pbnVzIDJwdAorCislIFByZXZlbnQgdW5kZXJmdWxsIHZib3ggZXJyb3IgbWVzc2FnZXMuCitcdmJhZG5lc3MgPSAxMDAwMAorCislIERvbid0IGJlIHNvIGZpbmlja3kgYWJvdXQgdW5kZXJmdWxsIGhib3hlcywgZWl0aGVyLgorXGhiYWRuZXNzID0gMjAwMAorCislIEZvbGxvd2luZyBHZW9yZ2UgQnVzaCwganVzdCBnZXQgcmlkIG9mIHdpZG93cyBhbmQgb3JwaGFucy4KK1x3aWRvd3BlbmFsdHk9MTAwMDAKK1xjbHVicGVuYWx0eT0xMDAwMAorCislIFVzZSBUZVggMy4wJ3MgXGVtZXJnZW5jeXN0cmV0Y2ggdG8gaGVscCBsaW5lIGJyZWFraW5nLCBidXQgaWYgd2UncmUKKyUgdXNpbmcgYW4gb2xkIHZlcnNpb24gb2YgVGVYLCBkb24ndCBkbyBhbnl0aGluZy4gIFdlIHdhbnQgdGhlIGFtb3VudCBvZgorJSBzdHJldGNoIGFkZGVkIHRvIGRlcGVuZCBvbiB0aGUgbGluZSBsZW5ndGgsIGhlbmNlIHRoZSBkZXBlbmRlbmNlIG9uCislIFxoc2l6ZS4gIFdlIGNhbGwgdGhpcyB3aGVuZXZlciB0aGUgcGFwZXIgc2l6ZSBpcyBzZXQuCislCitcZGVmXHNldGVtZXJnZW5jeXN0cmV0Y2h7JQorICBcaWZ4XGVtZXJnZW5jeXN0cmV0Y2hcdGhpc2lzdW5kZWZpbmVkCisgICAgJSBBbGxvdyB1cyB0byBhc3NpZ24gdG8gXGVtZXJnZW5jeXN0cmV0Y2ggYW55d2F5LgorICAgIFxkZWZcZW1lcmdlbmN5c3RyZXRjaHtcZGltZW4wfSUKKyAgXGVsc2UKKyAgICBcZW1lcmdlbmN5c3RyZXRjaCA9IC4xNVxoc2l6ZQorICBcZmkKK30KKworJSBQYXJhbWV0ZXJzIGluIG9yZGVyOiAxKSB0ZXh0aGVpZ2h0OyAyKSB0ZXh0d2lkdGg7CislIDMpIHZvZmZzZXQ7IDQpIGhvZmZzZXQ7IDUpIGJpbmRpbmcgb2Zmc2V0OyA2KSB0b3Bza2lwOworJSA3KSBwaHlzaWNhbCBwYWdlIGhlaWdodDsgOCkgcGh5c2ljYWwgcGFnZSB3aWR0aC4KKyUKKyUgV2UgYWxzbyBjYWxsIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30sIHNvIHRoZSBjYWxsZXIgc2hvdWxkIGRlZmluZQorJSBcdGV4dGxlYWRpbmcuICBUaGUgY2FsbGVyIHNob3VsZCBhbHNvIHNldCBccGFyc2tpcC4KKyUKK1xkZWZcaW50ZXJuYWxwYWdlc2l6ZXMjMSMyIzMjNCM1IzYjNyM4eyUKKyAgXHZvZmZzZXQgPSAjM1xyZWxheAorICBcdG9wc2tpcCA9ICM2XHJlbGF4CisgIFxzcGxpdHRvcHNraXAgPSBcdG9wc2tpcAorICAlCisgIFx2c2l6ZSA9ICMxXHJlbGF4CisgIFxhZHZhbmNlXHZzaXplIGJ5IFx0b3Bza2lwCisgIFxvdXRlcnZzaXplID0gXHZzaXplCisgIFxhZHZhbmNlXG91dGVydnNpemUgYnkgMlx0b3BhbmRib3R0b21tYXJnaW4KKyAgXHBhZ2VoZWlnaHQgPSBcdnNpemUKKyAgJQorICBcaHNpemUgPSAjMlxyZWxheAorICBcb3V0ZXJoc2l6ZSA9IFxoc2l6ZQorICBcYWR2YW5jZVxvdXRlcmhzaXplIGJ5IDAuNWluCisgIFxwYWdld2lkdGggPSBcaHNpemUKKyAgJQorICBcbm9ybWFsb2Zmc2V0ID0gIzRccmVsYXgKKyAgXGJpbmRpbmdvZmZzZXQgPSAjNVxyZWxheAorICAlCisgIFxpZnBkZgorICAgIFxwZGZwYWdlaGVpZ2h0ICM3XHJlbGF4CisgICAgXHBkZnBhZ2V3aWR0aCAjOFxyZWxheAorICBcZmkKKyAgJQorICBcc2V0bGVhZGluZ3tcdGV4dGxlYWRpbmd9CisgICUKKyAgXHBhcmluZGVudCA9IFxkZWZhdWx0cGFyaW5kZW50CisgIFxzZXRlbWVyZ2VuY3lzdHJldGNoCit9CisKKyUgQGxldHRlcnBhcGVyICh0aGUgZGVmYXVsdCkuCitcZGVmXGxldHRlcnBhcGVye3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFx0ZXh0bGVhZGluZyA9IDEzLjJwdAorICAlCisgICUgSWYgcGFnZSBpcyBub3RoaW5nIGJ1dCB0ZXh0LCBtYWtlIGl0IGNvbWUgb3V0IGV2ZW4uCisgIFxpbnRlcm5hbHBhZ2VzaXplc3s0NlxiYXNlbGluZXNraXB9ezZpbn0lCisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17LjI1aW59JQorICAgICAgICAgICAgICAgICAgICB7XGJpbmRpbmdvZmZzZXR9ezM2cHR9JQorICAgICAgICAgICAgICAgICAgICB7MTFpbn17OC41aW59JQorfX0KKworJSBVc2UgQHNtYWxsYm9vayB0byByZXNldCBwYXJhbWV0ZXJzIGZvciA3eDkuMjUgdHJpbSBzaXplLgorXGRlZlxzbWFsbGJvb2t7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDJwdCBwbHVzIDFwdAorICBcdGV4dGxlYWRpbmcgPSAxMnB0CisgICUKKyAgXGludGVybmFscGFnZXNpemVzezcuNWlufXs1aW59JQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9ey4yNWlufSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXsxNnB0fSUKKyAgICAgICAgICAgICAgICAgICAgezkuMjVpbn17N2lufSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuM2luCisgIFx0b2xlcmFuY2UgPSA3MDAKKyAgXGhmdXp6ID0gMXB0CisgIFxjb250ZW50c3JpZ2h0bWFyZ2luID0gMHB0CisgIFxkZWZib2R5aW5kZW50ID0gLjVjbQorfX0KKworJSBVc2UgQHNtYWxsZXJib29rIHRvIHJlc2V0IHBhcmFtZXRlcnMgZm9yIDZ4OSB0cmltIHNpemUuCislIChKdXN0IHRlc3RpbmcsIHBhcmFtZXRlcnMgc3RpbGwgaW4gZmx1eC4pCitcZGVmXHNtYWxsZXJib29re3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAxLjVwdCBwbHVzIDFwdAorICBcdGV4dGxlYWRpbmcgPSAxMnB0CisgICUKKyAgXGludGVybmFscGFnZXNpemVzezcuNGlufXs0Ljhpbn0lCisgICAgICAgICAgICAgICAgICAgIHstLjJpbn17LS40aW59JQorICAgICAgICAgICAgICAgICAgICB7MHB0fXsxNHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezlpbn17NmlufSUKKyAgJQorICBcbGlzcG5hcnJvd2luZyA9IDAuMjVpbgorICBcdG9sZXJhbmNlID0gNzAwCisgIFxoZnV6eiA9IDFwdAorICBcY29udGVudHNyaWdodG1hcmdpbiA9IDBwdAorICBcZGVmYm9keWluZGVudCA9IC40Y20KK319CisKKyUgVXNlIEBhZm91cnBhcGVyIHRvIHByaW50IG9uIEV1cm9wZWFuIEE0IHBhcGVyLgorXGRlZlxhZm91cnBhcGVye3tcZ2xvYmFsZGVmcyA9IDEKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFx0ZXh0bGVhZGluZyA9IDEzLjJwdAorICAlCisgICUgRG91YmxlLXNpZGUgcHJpbnRpbmcgdmlhIHBvc3RzY3JpcHQgb24gTGFzZXJqZXQgNDA1MAorICAlIHByaW50cyBkb3VibGUtc2lkZWQgbmljZWx5IHdoZW4gXGJpbmRpbmdvZmZzZXQ9MTBtbSBhbmQgXGhvZmZzZXQ9LTZtbS4KKyAgJSBUbyBjaGFuZ2UgdGhlIHNldHRpbmdzIGZvciBhIGRpZmZlcmVudCBwcmludGVyIG9yIHNpdHVhdGlvbiwgYWRqdXN0CisgICUgXG5vcm1hbG9mZnNldCB1bnRpbCB0aGUgZnJvbnQtc2lkZSBhbmQgYmFjay1zaWRlIHRleHRzIGFsaWduLiAgVGhlbgorICAlIGRvIHRoZSBzYW1lIGZvciBcYmluZGluZ29mZnNldC4gIFlvdSBjYW4gc2V0IHRoZXNlIGZvciB0ZXN0aW5nIGluCisgICUgeW91ciB0ZXhpbmZvIHNvdXJjZSBmaWxlIGxpa2UgdGhpczoKKyAgJSBAdGV4CisgICUgXGdsb2JhbFxub3JtYWxvZmZzZXQgPSAtNm1tCisgICUgXGdsb2JhbFxiaW5kaW5nb2Zmc2V0ID0gMTBtbQorICAlIEBlbmQgdGV4CisgIFxpbnRlcm5hbHBhZ2VzaXplc3s1MVxiYXNlbGluZXNraXB9ezE2MG1tfQorICAgICAgICAgICAgICAgICAgICB7XHZvZmZzZXR9e1xob2Zmc2V0fSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs0NHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezI5N21tfXsyMTBtbX0lCisgICUKKyAgXHRvbGVyYW5jZSA9IDcwMAorICBcaGZ1enogPSAxcHQKKyAgXGNvbnRlbnRzcmlnaHRtYXJnaW4gPSAwcHQKKyAgXGRlZmJvZHlpbmRlbnQgPSA1bW0KK319CisKKyUgVXNlIEBhZml2ZXBhcGVyIHRvIHByaW50IG9uIEV1cm9wZWFuIEE1IHBhcGVyLgorJSBGcm9tIHJvbWlsZG9AdXJhbm8uaWNlYi51Zm9wLmJyLCAyIEp1bHkgMjAwMC4KKyUgSGUgYWxzbyByZWNvbW1lbmRzIG1ha2luZyBAZXhhbXBsZSBhbmQgQGxpc3AgYmUgc21hbGwuCitcZGVmXGFmaXZlcGFwZXJ7e1xnbG9iYWxkZWZzID0gMQorICBccGFyc2tpcCA9IDJwdCBwbHVzIDFwdCBtaW51cyAwLjFwdAorICBcdGV4dGxlYWRpbmcgPSAxMi41cHQKKyAgJQorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MTYwbW19ezEyMG1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXtcaG9mZnNldH0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17OHB0fSUKKyAgICAgICAgICAgICAgICAgICAgezIxMG1tfXsxNDhtbX0lCisgICUKKyAgXGxpc3BuYXJyb3dpbmcgPSAwLjJpbgorICBcdG9sZXJhbmNlID0gODAwCisgIFxoZnV6eiA9IDEuMnB0CisgIFxjb250ZW50c3JpZ2h0bWFyZ2luID0gMHB0CisgIFxkZWZib2R5aW5kZW50ID0gMm1tCisgIFx0YWJsZWluZGVudCA9IDEybW0KK319CisKKyUgQSBzcGVjaWZpYyB0ZXh0IGxheW91dCwgMjR4MTVjbSBvdmVyYWxsLCBpbnRlbmRlZCBmb3IgQTQgcGFwZXIuCitcZGVmXGFmb3VybGF0ZXh7e1xnbG9iYWxkZWZzID0gMQorICBcYWZvdXJwYXBlcgorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MjM3bW19ezE1MG1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXs0LjZtbX0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17N21tfSUKKyAgICAgICAgICAgICAgICAgICAgezI5N21tfXsyMTBtbX0lCisgICUKKyAgJSBNdXN0IGV4cGxpY2l0bHkgcmVzZXQgdG8gMCBiZWNhdXNlIHdlIGNhbGwgXGFmb3VycGFwZXIuCisgIFxnbG9iYWxkZWZzID0gMAorfX0KKworJSBVc2UgQGFmb3Vyd2lkZSB0byBwcmludCBvbiBBNCBwYXBlciBpbiBsYW5kc2NhcGUgZm9ybWF0LgorXGRlZlxhZm91cndpZGV7e1xnbG9iYWxkZWZzID0gMQorICBcYWZvdXJwYXBlcgorICBcaW50ZXJuYWxwYWdlc2l6ZXN7MjQxbW19ezE2NW1tfSUKKyAgICAgICAgICAgICAgICAgICAge1x2b2Zmc2V0fXstMi45NW1tfSUKKyAgICAgICAgICAgICAgICAgICAge1xiaW5kaW5nb2Zmc2V0fXs3bW19JQorICAgICAgICAgICAgICAgICAgICB7Mjk3bW19ezIxMG1tfSUKKyAgXGdsb2JhbGRlZnMgPSAwCit9fQorCislIEBwYWdlc2l6ZXMgVEVYVEhFSUdIVFssVEVYVFdJRFRIXQorJSBQZXJoYXBzIHdlIHNob3VsZCBhbGxvdyBzZXR0aW5nIHRoZSBtYXJnaW5zLCBcdG9wc2tpcCwgXHBhcnNraXAsCislIGFuZC9vciBsZWFkaW5nLCBhbHNvLiBPciBwZXJoYXBzIHdlIHNob3VsZCBjb21wdXRlIHRoZW0gc29tZWhvdy4KKyUKK1xwYXJzZWFyZ2RlZlxwYWdlc2l6ZXN7XHBhZ2VzaXplc3l5eSAjMSwsXGZpbmlzaH0KK1xkZWZccGFnZXNpemVzeXl5IzEsIzIsIzNcZmluaXNoe3slCisgIFxzZXRib3gwID0gXGhib3h7XGlnbm9yZXNwYWNlcyAjMn1caWZkaW1cd2QwID4gMHB0IFxoc2l6ZT0jMlxyZWxheCBcZmkKKyAgXGdsb2JhbGRlZnMgPSAxCisgICUKKyAgXHBhcnNraXAgPSAzcHQgcGx1cyAycHQgbWludXMgMXB0CisgIFxzZXRsZWFkaW5ne1x0ZXh0bGVhZGluZ30lCisgICUKKyAgXGRpbWVuMCA9ICMxCisgIFxhZHZhbmNlXGRpbWVuMCBieSBcdm9mZnNldAorICAlCisgIFxkaW1lbjIgPSBcaHNpemUKKyAgXGFkdmFuY2VcZGltZW4yIGJ5IFxub3JtYWxvZmZzZXQKKyAgJQorICBcaW50ZXJuYWxwYWdlc2l6ZXN7IzF9e1xoc2l6ZX0lCisgICAgICAgICAgICAgICAgICAgIHtcdm9mZnNldH17XG5vcm1hbG9mZnNldH0lCisgICAgICAgICAgICAgICAgICAgIHtcYmluZGluZ29mZnNldH17NDRwdH0lCisgICAgICAgICAgICAgICAgICAgIHtcZGltZW4wfXtcZGltZW4yfSUKK319CisKKyUgU2V0IGRlZmF1bHQgdG8gbGV0dGVyLgorJQorXGxldHRlcnBhcGVyCisKKworXG1lc3NhZ2V7YW5kIHR1cm5pbmcgb24gdGV4aW5mbyBpbnB1dCBmb3JtYXQufQorCislIERlZmluZSBtYWNyb3MgdG8gb3V0cHV0IHZhcmlvdXMgY2hhcmFjdGVycyB3aXRoIGNhdGNvZGUgZm9yIG5vcm1hbCB0ZXh0LgorXGNhdGNvZGVgXCI9XG90aGVyCitcY2F0Y29kZWBcfj1cb3RoZXIKK1xjYXRjb2RlYFxePVxvdGhlcgorXGNhdGNvZGVgXF89XG90aGVyCitcY2F0Y29kZWBcfD1cb3RoZXIKK1xjYXRjb2RlYFw8PVxvdGhlcgorXGNhdGNvZGVgXD49XG90aGVyCitcY2F0Y29kZWBcKz1cb3RoZXIKK1xjYXRjb2RlYFwkPVxvdGhlcgorXGRlZlxub3JtYWxkb3VibGVxdW90ZXsifQorXGRlZlxub3JtYWx0aWxkZXt+fQorXGRlZlxub3JtYWxjYXJldHtefQorXGRlZlxub3JtYWx1bmRlcnNjb3Jle199CitcZGVmXG5vcm1hbHZlcnRpY2FsYmFye3x9CitcZGVmXG5vcm1hbGxlc3N7PH0KK1xkZWZcbm9ybWFsZ3JlYXRlcns+fQorXGRlZlxub3JtYWxwbHVzeyt9CitcZGVmXG5vcm1hbGRvbGxhcnskfSUkIGZvbnQtbG9jayBmaXgKKworJSBUaGlzIG1hY3JvIGlzIHVzZWQgdG8gbWFrZSBhIGNoYXJhY3RlciBwcmludCBvbmUgd2F5IGluIFx0dAorJSAod2hlcmUgaXQgY2FuIHByb2JhYmx5IGJlIG91dHB1dCBhcy1pcyksIGFuZCBhbm90aGVyIHdheSBpbiBvdGhlciBmb250cywKKyUgd2hlcmUgc29tZXRoaW5nIGhhaXJpZXIgcHJvYmFibHkgbmVlZHMgdG8gYmUgZG9uZS4KKyUKKyUgIzEgaXMgd2hhdCB0byBwcmludCBpZiB3ZSBhcmUgaW5kZWVkIHVzaW5nIFx0dDsgIzIgaXMgd2hhdCB0byBwcmludAorJSBvdGhlcndpc2UuICBTaW5jZSBhbGwgdGhlIENvbXB1dGVyIE1vZGVybiB0eXBld3JpdGVyIGZvbnRzIGhhdmUgemVybworJSBpbnRlcndvcmQgc3RyZXRjaCAoYW5kIHNocmluayksIGFuZCBpdCBpcyByZWFzb25hYmxlIHRvIGV4cGVjdCBhbGwKKyUgdHlwZXdyaXRlciBmb250cyB0byBoYXZlIHRoaXMsIHdlIGNhbiBjaGVjayB0aGF0IGZvbnQgcGFyYW1ldGVyLgorJQorXGRlZlxpZnVzaW5ndHQjMSMye1xpZmRpbSBcZm9udGRpbWVuM1xmb250PTBwdCAjMVxlbHNlICMyXGZpfQorCislIFNhbWUgYXMgYWJvdmUsIGJ1dCBjaGVjayBmb3IgaXRhbGljIGZvbnQuICBBY3R1YWxseSB0aGlzIGFsc28gY2F0Y2hlcworJSBub24taXRhbGljIHNsYW50ZWQgZm9udHMgc2luY2UgaXQgaXMgaW1wb3NzaWJsZSB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20KKyUgaXRhbGljIGZvbnRzLiAgQnV0IHNpbmNlIHRoaXMgaXMgb25seSB1c2VkIGJ5ICQgYW5kIGl0IHVzZXMgXHNsIGFueXdheQorJSB0aGlzIGlzIG5vdCBhIHByb2JsZW0uCitcZGVmXGlmdXNpbmdpdCMxIzJ7XGlmZGltIFxmb250ZGltZW4xXGZvbnQ+MHB0ICMxXGVsc2UgIzJcZml9CisKKyUgVHVybiBvZmYgYWxsIHNwZWNpYWwgY2hhcmFjdGVycyBleGNlcHQgQAorJSAoYW5kIHRob3NlIHdoaWNoIHRoZSB1c2VyIGNhbiB1c2UgYXMgaWYgdGhleSB3ZXJlIG9yZGluYXJ5KS4KKyUgTW9zdCBvZiB0aGVzZSB3ZSBzaW1wbHkgcHJpbnQgZnJvbSB0aGUgXHR0IGZvbnQsIGJ1dCBmb3Igc29tZSwgd2UgY2FuCislIHVzZSBtYXRoIG9yIG90aGVyIHZhcmlhbnRzIHRoYXQgbG9vayBiZXR0ZXIgaW4gbm9ybWFsIHRleHQuCisKK1xjYXRjb2RlYFwiPVxhY3RpdmUKK1xkZWZcYWN0aXZlZG91YmxlcXVvdGV7e1x0dFxjaGFyMzR9fQorXGxldCI9XGFjdGl2ZWRvdWJsZXF1b3RlCitcY2F0Y29kZWBcfj1cYWN0aXZlCitcZGVmfnt7XHR0XGNoYXIxMjZ9fQorXGNoYXJkZWZcaGF0PWBcXgorXGNhdGNvZGVgXF49XGFjdGl2ZQorXGRlZl57e1x0dCBcaGF0fX0KKworXGNhdGNvZGVgXF89XGFjdGl2ZQorXGRlZl97XGlmdXNpbmd0dFxub3JtYWx1bmRlcnNjb3JlXF99CitcbGV0XHJlYWx1bmRlcj1fCislIFN1YnJvdXRpbmUgZm9yIHRoZSBwcmV2aW91cyBtYWNyby4KK1xkZWZcX3tcbGVhdmV2bW9kZSBca2Vybi4wN2VtIFx2Ym94e1xocnVsZSB3aWR0aC4zZW0gaGVpZ2h0LjFleH1ca2VybiAuMDdlbSB9CisKK1xjYXRjb2RlYFx8PVxhY3RpdmUKK1xkZWZ8e3tcdHRcY2hhcjEyNH19CitcY2hhcmRlZiBcbGVzcz1gXDwKK1xjYXRjb2RlYFw8PVxhY3RpdmUKK1xkZWY8e3tcdHQgXGxlc3N9fQorXGNoYXJkZWYgXGd0cj1gXD4KK1xjYXRjb2RlYFw+PVxhY3RpdmUKK1xkZWY+e3tcdHQgXGd0cn19CitcY2F0Y29kZWBcKz1cYWN0aXZlCitcZGVmK3t7XHR0IFxjaGFyIDQzfX0KK1xjYXRjb2RlYFwkPVxhY3RpdmUKK1xkZWYke1xpZnVzaW5naXR7e1xzbFwkfX1cbm9ybWFsZG9sbGFyfSUkIGZvbnQtbG9jayBmaXgKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIGEgZmlsZQorJSBuYW1lIGNhbm5vdCBiZSBhY3RpdmUgdW50aWwgd2UgaGF2ZSBwYXJzZWQgdGhlIGNvbW1hbmQgbGluZS4KKyUgU28gdHVybiB0aGVtIG9mZiBhZ2FpbiwgYW5kIGhhdmUgXGV2ZXJ5am9iIChvciBAc2V0ZmlsZW5hbWUpIHR1cm4gdGhlbSBvbi4KKyUgXG90aGVyaWZ5YWN0aXZlIGlzIGNhbGxlZCBuZWFyIHRoZSBlbmQgb2YgdGhpcyBmaWxlLgorXGRlZlxvdGhlcmlmeWFjdGl2ZXtcY2F0Y29kZWArPVxvdGhlciBcY2F0Y29kZWBcXz1cb3RoZXJ9CisKKyUgVXNlZCBzb21ldGltZXMgdG8gdHVybiBvZmYgKGVmZmVjdGl2ZWx5KSB0aGUgYWN0aXZlIGNoYXJhY3RlcnMgZXZlbiBhZnRlcgorJSBwYXJzaW5nIHRoZW0uCitcZGVmXHR1cm5vZmZhY3RpdmV7JQorICBcbm9ybWFsdHVybm9mZmFjdGl2ZQorICBcb3RoZXJiYWNrc2xhc2gKK30KKworXGNhdGNvZGVgXEA9MAorCislIFxiYWNrc2xhc2hjdXJmb250IG91dHB1dHMgb25lIGJhY2tzbGFzaCBjaGFyYWN0ZXIgaW4gY3VycmVudCBmb250LAorJSBhcyBpbiBcY2hhcmBcXC4KK1xnbG9iYWxcY2hhcmRlZlxiYWNrc2xhc2hjdXJmb250PWBcXAorXGdsb2JhbFxsZXRccmF3YmFja3NsYXNoeHg9XGJhY2tzbGFzaGN1cmZvbnQgICUgbGV0IGV4aXN0aW5nIC4/P3MgZmlsZXMgd29yaworCislIFxyZWFsYmFja3NsYXNoIGlzIGFuIGFjdHVhbCBjaGFyYWN0ZXIgYFwnIHdpdGggY2F0Y29kZSBvdGhlciwgYW5kCislIFxkb3VibGViYWNrc2xhc2ggaXMgdHdvIG9mIHRoZW0gKGZvciB0aGUgcGRmIG91dGxpbmVzKS4KK3tcY2F0Y29kZWBcXD1cb3RoZXIgQGdkZWZAcmVhbGJhY2tzbGFzaHtcfSBAZ2RlZkBkb3VibGViYWNrc2xhc2h7XFx9fQorCislIEluIHRleGluZm8sIGJhY2tzbGFzaCBpcyBhbiBhY3RpdmUgY2hhcmFjdGVyOyBpdCBwcmludHMgdGhlIGJhY2tzbGFzaAorJSBpbiBmaXhlZCB3aWR0aCBmb250LgorXGNhdGNvZGVgXFw9XGFjdGl2ZQorQGRlZkBub3JtYWxiYWNrc2xhc2h7e0B0dEBiYWNrc2xhc2hjdXJmb250fX0KKyUgT24gc3RhcnR1cCwgQGZpeGJhY2tzbGFzaCBhc3NpZ25zOgorJSAgQGxldCBcID0gQG5vcm1hbGJhY2tzbGFzaAorCislIFxyYXdiYWNrc2xhc2ggZGVmaW5lcyBhbiBhY3RpdmUgXCB0byBkbyBcYmFja3NsYXNoY3VyZm9udC4KKyUgXG90aGVyYmFja3NsYXNoIGRlZmluZXMgYW4gYWN0aXZlIFwgdG8gYmUgYSBsaXRlcmFsIGBcJyBjaGFyYWN0ZXIgd2l0aAorJSBjYXRjb2RlIG90aGVyLgorQGdkZWZAcmF3YmFja3NsYXNoe0BsZXRcPUBiYWNrc2xhc2hjdXJmb250fQorQGdkZWZAb3RoZXJiYWNrc2xhc2h7QGxldFw9QHJlYWxiYWNrc2xhc2h9CisKKyUgU2FtZSBhcyBAdHVybm9mZmFjdGl2ZSBleGNlcHQgb3V0cHV0cyBcIGFzIHtcdHRcY2hhcmBcXH0gaW5zdGVhZCBvZgorJSB0aGUgbGl0ZXJhbCBjaGFyYWN0ZXIgYFwnLgorJSAKK0BkZWZAbm9ybWFsdHVybm9mZmFjdGl2ZXslCisgIEBsZXRcPUBub3JtYWxiYWNrc2xhc2gKKyAgQGxldCI9QG5vcm1hbGRvdWJsZXF1b3RlCisgIEBsZXR+PUBub3JtYWx0aWxkZQorICBAbGV0Xj1Abm9ybWFsY2FyZXQKKyAgQGxldF89QG5vcm1hbHVuZGVyc2NvcmUKKyAgQGxldHw9QG5vcm1hbHZlcnRpY2FsYmFyCisgIEBsZXQ8PUBub3JtYWxsZXNzCisgIEBsZXQ+PUBub3JtYWxncmVhdGVyCisgIEBsZXQrPUBub3JtYWxwbHVzCisgIEBsZXQkPUBub3JtYWxkb2xsYXIgJSQgZm9udC1sb2NrIGZpeAorICBAdW5zZXBzcGFjZXMKK30KKworJSBNYWtlIF8gYW5kICsgXG90aGVyIGNoYXJhY3RlcnMsIHRlbXBvcmFyaWx5LgorJSBUaGlzIGlzIGNhbmNlbGVkIGJ5IEBmaXhiYWNrc2xhc2guCitAb3RoZXJpZnlhY3RpdmUKKworJSBJZiBhIC5mbXQgZmlsZSBpcyBiZWluZyB1c2VkLCB3ZSBkb24ndCB3YW50IHRoZSBgXGlucHV0IHRleGluZm8nIHRvIHNob3cgdXAuCislIFRoYXQgaXMgd2hhdCBcZWF0aW5wdXQgaXMgZm9yOyBhZnRlciB0aGF0LCB0aGUgYFwnIHNob3VsZCByZXZlcnQgdG8gcHJpbnRpbmcKKyUgYSBiYWNrc2xhc2guCislCitAZ2RlZkBlYXRpbnB1dCBpbnB1dCB0ZXhpbmZve0BmaXhiYWNrc2xhc2h9CitAZ2xvYmFsQGxldFwgPSBAZWF0aW5wdXQKKworJSBPbiB0aGUgb3RoZXIgaGFuZCwgcGVyaGFwcyB0aGUgZmlsZSBkaWQgbm90IGhhdmUgYSBgXGlucHV0IHRleGluZm8nLiBUaGVuCislIHRoZSBmaXJzdCBgXCcgaW4gdGhlIGZpbGUgd291bGQgY2F1c2UgYW4gZXJyb3IuIFRoaXMgbWFjcm8gdHJpZXMgdG8gZml4CislIHRoYXQsIGFzc3VtaW5nIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIGZpcnN0IGBcJyBjb3VsZCBwbGF1c2libHkgb2NjdXIuCislIEFsc28gdHVybiBiYWNrIG9uIGFjdGl2ZSBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYXBwZWFyIGluIHRoZSBpbnB1dAorJSBmaWxlIG5hbWUsIGluIGNhc2Ugbm90IHVzaW5nIGEgcHJlLWR1bXBlZCBmb3JtYXQuCislCitAZ2RlZkBmaXhiYWNrc2xhc2h7JQorICBAaWZ4XEBlYXRpbnB1dCBAbGV0XCA9IEBub3JtYWxiYWNrc2xhc2ggQGZpCisgIEBjYXRjb2RlYCs9QGFjdGl2ZQorICBAY2F0Y29kZWBAXz1AYWN0aXZlCit9CisKKyUgU2F5IEBmb28sIG5vdCBcZm9vLCBpbiBlcnJvciBtZXNzYWdlcy4KK0Blc2NhcGVjaGFyID0gYEBACisKKyUgVGhlc2UgbG9vayBvayBpbiBhbGwgZm9udHMsIHNvIGp1c3QgbWFrZSB0aGVtIG5vdCBzcGVjaWFsLgorQGNhdGNvZGVgQCYgPSBAb3RoZXIKK0BjYXRjb2RlYEAjID0gQG90aGVyCitAY2F0Y29kZWBAJSA9IEBvdGhlcgorCisKK0BjIExvY2FsIHZhcmlhYmxlczoKK0BjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKK0BjIHBhZ2UtZGVsaW1pdGVyOiAiXlxcXFxtZXNzYWdlIgorQGMgdGltZS1zdGFtcC1zdGFydDogImRlZlxcXFx0ZXhpbmZvdmVyc2lvbnsiCitAYyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKK0BjIHRpbWUtc3RhbXAtZW5kOiAifSIKK0BjIEVuZDoKKworQGMgdmltOnN3PTI6CisKK0BpZ25vcmUKKyAgIGFyY2gtdGFnOiBlMWIzNmUzMi1jOTZlLTQxMzUtYTQxYS0wYjJlZmEyZWExMTUKK0BlbmQgaWdub3JlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V0L3ZmcHJpbnRmLmMgYi9lMmZzcHJvZ3MvbGliL2V0L3ZmcHJpbnRmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTNmY2Q3OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXQvdmZwcmludGYuYwpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAxOTg4IFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtcyBhcmUgcGVybWl0dGVkCisgKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBhcmFncmFwaCBhcmUKKyAqIGR1cGxpY2F0ZWQgaW4gYWxsIHN1Y2ggZm9ybXMgYW5kIHRoYXQgYW55IGRvY3VtZW50YXRpb24sCisgKiBhZHZlcnRpc2luZyBtYXRlcmlhbHMsIGFuZCBvdGhlciBtYXRlcmlhbHMgcmVsYXRlZCB0byBzdWNoCisgKiBkaXN0cmlidXRpb24gYW5kIHVzZSBhY2tub3dsZWRnZSB0aGF0IHRoZSBzb2Z0d2FyZSB3YXMgZGV2ZWxvcGVkCisgKiBieSB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBCZXJrZWxleS4gIFRoZSBuYW1lIG9mIHRoZQorICogVW5pdmVyc2l0eSBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBXSVRIT1VUIEFOWSBFWFBSRVNTIE9SCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVElCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorICovCisKKyNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKK3N0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIyl2ZnByaW50Zi5jCTUuMiAoQmVya2VsZXkpIDYvMjcvODgiOworI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmICFIQVZFX1ZQUklOVEYgJiYgSEFWRV9ET1BSTlQKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHZhcmFyZ3MuaD4KKworaW50Cit2ZnByaW50Zihpb3AsIGZtdCwgYXApCisJRklMRSAqaW9wOworCWNoYXIgKmZtdDsKKwl2YV9saXN0IGFwOworeworCWludCBsZW47CisJY2hhciBsb2NhbGJ1ZltCVUZTSVpdOworCisJaWYgKGlvcC0+X2ZsYWcgJiBfSU9OQkYpIHsKKwkJaW9wLT5fZmxhZyAmPSB+X0lPTkJGOworCQlpb3AtPl9wdHIgPSBpb3AtPl9iYXNlID0gbG9jYWxidWY7CisJCWxlbiA9IF9kb3BybnQoZm10LCBhcCwgaW9wKTsKKwkJKHZvaWQpIGZmbHVzaChpb3ApOworCQlpb3AtPl9mbGFnIHw9IF9JT05CRjsKKwkJaW9wLT5fYmFzZSA9IE5VTEw7CisJCWlvcC0+X2J1ZnNpeiA9IDA7CisJCWlvcC0+X2NudCA9IDA7CisJfSBlbHNlCisJCWxlbiA9IF9kb3BybnQoZm10LCBhcCwgaW9wKTsKKworCXJldHVybiAoZmVycm9yKGlvcCkgPyBFT0YgOiBsZW4pOworfQorI2VuZGlmIC8qICFIQVZFX1ZQUklOVEYgKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL0FuZHJvaWQubWsgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjIzMmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTQxIEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCisKK2xpYmV4dDJmc19zcmNfZmlsZXMgOj0gXAorCWV4dDJfZXJyLmMgXAorCWFsbG9jLmMgXAorCWFsbG9jX3NiLmMgXAorCWFsbG9jX3N0YXRzLmMgXAorCWFsbG9jX3RhYmxlcy5jIFwKKwlhdGV4aXQuYyBcCisJYmFkYmxvY2tzLmMgXAorCWJiX2lub2RlLmMgXAorCWJpdG1hcHMuYyBcCisJYml0b3BzLmMgXAorCWJsa21hcDY0X2JhLmMgXAorCWJsa21hcDY0X3JiLmMgXAorCWJsa251bS5jIFwKKwlibG9jay5jIFwKKwlibWFwLmMgXAorCWNoZWNrX2Rlc2MuYyBcCisJY3JjMTYuYyBcCisJY3JjMzJjLmMgXAorCWNzdW0uYyBcCisJY2xvc2Vmcy5jIFwKKwlkYmxpc3QuYyBcCisJZGJsaXN0X2Rpci5jIFwKKwlkaWdlc3RfZW5jb2RlLmMgXAorCWRpcmJsb2NrLmMgXAorCWRpcmhhc2guYyBcCisJZGlyX2l0ZXJhdGUuYyBcCisJZHVwZnMuYyBcCisJZXhwYW5kZGlyLmMgXAorCWV4dF9hdHRyLmMgXAorCWV4dGVudC5jIFwKKwlmYWxsb2NhdGUuYyBcCisJZmlsZWlvLmMgXAorCWZpbmRkZXYuYyBcCisJZmx1c2hiLmMgXAorCWZyZWVmcy5jIFwKKwlnZW5fYml0bWFwLmMgXAorCWdlbl9iaXRtYXA2NC5jIFwKKwlnZXRfbnVtX2RpcnMuYyBcCisJZ2V0X3BhdGhuYW1lLmMgXAorCWdldHNpemUuYyBcCisJZ2V0c2VjdHNpemUuYyBcCisJaV9ibG9jay5jIFwKKwlpY291bnQuYyBcCisJaW1hZ2VyLmMgXAorCWluZF9ibG9jay5jIFwKKwlpbml0aWFsaXplLmMgXAorCWlubGluZS5jIFwKKwlpbmxpbmVfZGF0YS5jIFwKKwlpbm9kZS5jIFwKKwlpb19tYW5hZ2VyLmMgXAorCWlzbW91bnRlZC5jIFwKKwlsaW5rLmMgXAorCWxsc2Vlay5jIFwKKwlsb29rdXAuYyBcCisJbW1wLmMgXAorCW1rZGlyLmMgXAorCW1ram91cm5hbC5jIFwKKwluYW1laS5jIFwKKwluYXRpdmUuYyBcCisJbmV3ZGlyLmMgXAorCW9wZW5mcy5jIFwKKwlwcm9ncmVzcy5jIFwKKwlwdW5jaC5jIFwKKwlxY293Mi5jIFwKKwlyYnRyZWUuYyBcCisJcmVhZF9iYi5jIFwKKwlyZWFkX2JiX2ZpbGUuYyBcCisJcmVzX2dkdC5jIFwKKwlyd19iaXRtYXBzLmMgXAorCXNoYTI1Ni5jIFwKKwlzaGE1MTIuYyBcCisJc3dhcGZzLmMgXAorCXN5bWxpbmsuYyBcCisJdW5kb19pby5jIFwKKwl1bml4X2lvLmMgXAorCXVubGluay5jIFwKKwl2YWxpZF9ibGsuYyBcCisJdmVyc2lvbi5jCisKKyMgZ2V0IHJpZCBvZiB0aGlzPyEKK2xpYmV4dDJmc19zcmNfZmlsZXMgKz0gdGVzdF9pby5jCisKK2xpYmV4dDJmc19zaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfdXVpZCBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml9lMnAKKworbGliZXh0MmZzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworbGliZXh0MmZzX3N0YXRpY19saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJfY29tX2VyciBcCisJbGliZXh0Ml91dWlkX3N0YXRpYyBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml9lMnAKKworbGliZXh0MmZzX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzIDo9IGxpYmMKKworbGliZXh0MmZzX2NfaW5jbHVkZXMgOj0gZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitsaWJleHQyZnNfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbAorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0MmZzX3NyY19maWxlcykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQobGliZXh0MmZzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxpYmV4dDJmc19zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJmc19jX2luY2x1ZGVzKQorTE9DQUxfRVhQT1JUX0NfSU5DTFVERV9ESVJTIDo9ICQobGliZXh0MmZzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyZnNfY2ZsYWdzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0MmZzX3NyY19maWxlcykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChsaWJleHQyZnNfc3RhdGljX2xpYnJhcmllcykgJChsaWJleHQyZnNfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0MmZzX2NfaW5jbHVkZXMpCitMT0NBTF9FWFBPUlRfQ19JTkNMVURFX0RJUlMgOj0gJChsaWJleHQyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJmc19jZmxhZ3MpICQobGliZXh0MmZzX2NmbGFnc19saW51eCkKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyZnMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJmc19zcmNfZmlsZXMpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkc3VmZml4IC1ob3N0LCAkKGxpYmV4dDJmc19zaGFyZWRfbGlicmFyaWVzKSkKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0VYUE9SVF9DX0lOQ0xVREVfRElSUyA6PSAkKGxpYmV4dDJmc19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobGliZXh0MmZzX2NmbGFncykKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyZnMtaG9zdAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMzY1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDEzODEgQEAKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLi8uLgorbXlfZGlyID0gbGliL2V4dDJmcworSU5TVEFMTCA9IEBJTlNUQUxMQAorREVQRU5EX0NGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzIC1JJChzcmNkaXIpLy4uLy4uL2UyZnNjayAtRERFQlVHRlMKKyMgVGhpcyBuYXN0eW5lc3MgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgamZzX3VzZXIuaCBoYWNrZXJ5OyB3aGVuIHdlIGZpbmFsbHkKKyMgY2xlYW4gdXAgdGhpcyBtZXNzLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIGl0CitERUJVR0ZTX0NGTEFHUyA9IC1JJChzcmNkaXIpLy4uLy4uL2UyZnNjayAkKEFMTF9DRkxBR1MpIC1EREVCVUdGUworCitATUNPTkZJR0AKKworQERFQlVHRlNfQ01UQERFQlVHRlNfTElCX09CSlMgPSBiYl9jb21wYXQubyBpbm9kZV9pby5vIHdyaXRlX2JiX2ZpbGUubworCitNS19DTURTPQlfU1NfRElSX09WRVJSSURFPSQoc3JjZGlyKS8uLi9zcyAuLi9zcy9ta19jbWRzCitDT01QSUxFX0VUPQlfRVRfRElSX09WRVJSSURFPSQoc3JjZGlyKS8uLi9ldCAuLi9ldC9jb21waWxlX2V0CisKK0BSRVNJWkVSX0NNVEBSRVNJWkVfTElCX09CSlMgPSBkdXBmcy5vCitAVEVTVF9JT19DTVRAVEVTVF9JT19MSUJfT0JKUyA9IHRlc3RfaW8ubworQElNQUdFUl9DTVRARTJJTUFHRV9MSUJfT0JKUyA9IGltYWdlci5vCisKK0RFQlVHX09CSlM9IGRlYnVnX2NtZHMubyBleHRlbnRfY21kcy5vIHRzdF9jbWRzLm8gZGVidWdmcy5vIHV0aWwubyBcCisJbmNoZWNrLm8gaWNoZWNrLm8gbHMubyBsc2RlbC5vIGR1bXAubyBzZXRfZmllbGRzLm8gbG9nZHVtcC5vIFwKKwlodHJlZS5vIHVudXNlZC5vIGUyZnJlZWZyYWcubyBmaWxlZnJhZy5vIGV4dGVudF9pbm9kZS5vIHphcC5vIFwKKwl4YXR0cnMubyBxdW90YS5vIHRzdF9saWJleHQyZnMubyBjcmVhdGVfaW5vZGUubyBqb3VybmFsLm8gXAorCXJldm9rZS5vIHJlY292ZXJ5Lm8gZG9fam91cm5hbC5vCisKK0RFQlVHX1NSQ1M9IGRlYnVnX2NtZHMuYyBleHRlbnRfY21kcy5jIHRzdF9jbWRzLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy91dGlsLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9uY2hlY2suYyBcCisJJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2ljaGVjay5jIFwKKwkkKHRvcF9zcmNkaXIpL2RlYnVnZnMvbHMuYyBcCisJJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2xzZGVsLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9kdW1wLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9zZXRfZmllbGRzLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9sb2dkdW1wLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9odHJlZS5jIFwKKwkkKHRvcF9zcmNkaXIpL2RlYnVnZnMvdW51c2VkLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy9maWxlZnJhZy5jIFwKKwkkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZXh0ZW50X2lub2RlLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy96YXAuYyBcCisJJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3F1b3RhLmMgXAorCSQodG9wX3NyY2RpcikvZGVidWdmcy94YXR0cnMuYyBcCisJJCh0b3Bfc3JjZGlyKS9taXNjL2UyZnJlZWZyYWcuYyBcCisJJCh0b3Bfc3JjZGlyKS9taXNjL2NyZWF0ZV9pbm9kZS5jIFwKKwkkKHRvcF9zcmNkaXIpL2RlYnVnZnMvam91cm5hbC5jIFwKKwkkKHRvcF9zcmNkaXIpL2UyZnNjay9yZXZva2UuYyBcCisJJCh0b3Bfc3JjZGlyKS9lMmZzY2svcmVjb3ZlcnkuYyBcCisJJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RvX2pvdXJuYWwuYworCitAVERCX0NNVEBUREJfT0JKPSB0ZGIubworCitPQkpTPSAkKERFQlVHRlNfTElCX09CSlMpICQoUkVTSVpFX0xJQl9PQkpTKSAkKEUySU1BR0VfTElCX09CSlMpIFwKKwkkKFRFU1RfSU9fTElCX09CSlMpIFwKKwlleHQyX2Vyci5vIFwKKwlhbGxvYy5vIFwKKwlhbGxvY19zYi5vIFwKKwlhbGxvY19zdGF0cy5vIFwKKwlhbGxvY190YWJsZXMubyBcCisJYXRleGl0Lm8gXAorCWJhZGJsb2Nrcy5vIFwKKwliYl9pbm9kZS5vIFwKKwliaXRtYXBzLm8gXAorCWJpdG9wcy5vIFwKKwlibGttYXA2NF9iYS5vIFwKKwlibGttYXA2NF9yYi5vIFwKKwlibGtudW0ubyBcCisJYmxvY2subyBcCisJYm1hcC5vIFwKKwljaGVja19kZXNjLm8gXAorCWNsb3NlZnMubyBcCisJY3JjMTYubyBcCisJY3JjMzJjLm8gXAorCWNzdW0ubyBcCisJZGJsaXN0Lm8gXAorCWRibGlzdF9kaXIubyBcCisJZGlyYmxvY2subyBcCisJZGlyaGFzaC5vIFwKKwlkaXJfaXRlcmF0ZS5vIFwKKwlleHBhbmRkaXIubyBcCisJZXh0X2F0dHIubyBcCisJZXh0ZW50Lm8gXAorCWZhbGxvY2F0ZS5vIFwKKwlmaWxlaW8ubyBcCisJZmluZGRldi5vIFwKKwlmbHVzaGIubyBcCisJZnJlZWZzLm8gXAorCWdlbl9iaXRtYXAubyBcCisJZ2VuX2JpdG1hcDY0Lm8gXAorCWdldF9udW1fZGlycy5vIFwKKwlnZXRfcGF0aG5hbWUubyBcCisJZ2V0c2l6ZS5vIFwKKwlnZXRzZWN0c2l6ZS5vIFwKKwlpX2Jsb2NrLm8gXAorCWljb3VudC5vIFwKKwlpbmRfYmxvY2subyBcCisJaW5pdGlhbGl6ZS5vIFwKKwlpbmxpbmUubyBcCisJaW5saW5lX2RhdGEubyBcCisJaW5vZGUubyBcCisJaW9fbWFuYWdlci5vIFwKKwlpc21vdW50ZWQubyBcCisJbGluay5vIFwKKwlsbHNlZWsubyBcCisJbG9va3VwLm8gXAorCW1rZGlyLm8gXAorCW1ram91cm5hbC5vIFwKKwltbXAubyBcCisJbmFtZWkubyBcCisJbmF0aXZlLm8gXAorCW5ld2Rpci5vIFwKKwlvcGVuZnMubyBcCisJcHJvZ3Jlc3MubyBcCisJcHVuY2gubyBcCisJcWNvdzIubyBcCisJcmVhZF9iYi5vIFwKKwlyZWFkX2JiX2ZpbGUubyBcCisJcmVzX2dkdC5vIFwKKwlyd19iaXRtYXBzLm8gXAorCXNoYTUxMi5vIFwKKwlzd2FwZnMubyBcCisJc3ltbGluay5vIFwKKwkkKFREQl9PQkopIFwKKwl1bmRvX2lvLm8gXAorCXVuaXhfaW8ubyBcCisJdW5saW5rLm8gXAorCXZhbGlkX2Jsay5vIFwKKwl2ZXJzaW9uLm8gXAorCXJidHJlZS5vCisKK1NSQ1M9IGV4dDJfZXJyLmMgXAorCSQoc3JjZGlyKS9hbGxvYy5jIFwKKwkkKHNyY2RpcikvYWxsb2Nfc2IuYyBcCisJJChzcmNkaXIpL2FsbG9jX3N0YXRzLmMgXAorCSQoc3JjZGlyKS9hbGxvY190YWJsZXMuYyBcCisJJChzcmNkaXIpL2F0ZXhpdC5jIFwKKwkkKHNyY2RpcikvYmFkYmxvY2tzLmMgXAorCSQoc3JjZGlyKS9iYl9jb21wYXQuYyBcCisJJChzcmNkaXIpL2JiX2lub2RlLmMgXAorCSQoc3JjZGlyKS9iaXRtYXBzLmMgXAorCSQoc3JjZGlyKS9iaXRvcHMuYyBcCisJJChzcmNkaXIpL2Jsa21hcDY0X2JhLmMgXAorCSQoc3JjZGlyKS9ibGttYXA2NF9yYi5jIFwKKwkkKHNyY2RpcikvYmxvY2suYyBcCisJJChzcmNkaXIpL2JtYXAuYyBcCisJJChzcmNkaXIpL2NoZWNrX2Rlc2MuYyBcCisJJChzcmNkaXIpL2Nsb3NlZnMuYyBcCisJJChzcmNkaXIpL2NyYzE2LmMgXAorCSQoc3JjZGlyKS9jcmMzMmMuYyBcCisJJChzcmNkaXIpL2dlbl9jcmMzMmN0YWJsZS5jIFwKKwkkKHNyY2RpcikvY3N1bS5jIFwKKwkkKHNyY2RpcikvZGJsaXN0LmMgXAorCSQoc3JjZGlyKS9kYmxpc3RfZGlyLmMgXAorCSQoc3JjZGlyKS9kaWdlc3RfZW5jb2RlLmMgXAorCSQoc3JjZGlyKS9kaXJibG9jay5jIFwKKwkkKHNyY2RpcikvZGlyaGFzaC5jIFwKKwkkKHNyY2RpcikvZGlyX2l0ZXJhdGUuYyBcCisJJChzcmNkaXIpL2R1cGZzLmMgXAorCSQoc3JjZGlyKS9leHBhbmRkaXIuYyBcCisJJChzcmNkaXIpL2V4dF9hdHRyLmMgXAorCSQoc3JjZGlyKS9leHRlbnQuYyBcCisJJChzcmNkaXIpL2ZpbGVpby5jIFwKKwkkKHNyY2RpcikvZmluZGRldi5jIFwKKwkkKHNyY2RpcikvZmx1c2hiLmMgXAorCSQoc3JjZGlyKS9mcmVlZnMuYyBcCisJJChzcmNkaXIpL2dlbl9iaXRtYXAuYyBcCisJJChzcmNkaXIpL2dlbl9iaXRtYXA2NC5jIFwKKwkkKHNyY2RpcikvZ2V0X251bV9kaXJzLmMgXAorCSQoc3JjZGlyKS9nZXRfcGF0aG5hbWUuYyBcCisJJChzcmNkaXIpL2dldHNpemUuYyBcCisJJChzcmNkaXIpL2dldHNlY3RzaXplLmMgXAorCSQoc3JjZGlyKS9pX2Jsb2NrLmMgXAorCSQoc3JjZGlyKS9pY291bnQuYyBcCisJJChzcmNkaXIpL2luZF9ibG9jay5jIFwKKwkkKHNyY2RpcikvaW5pdGlhbGl6ZS5jIFwKKwkkKHNyY2RpcikvaW5saW5lLmMgXAorCSQoc3JjZGlyKS9pbmxpbmVfZGF0YS5jCVwKKwkkKHNyY2RpcikvaW5vZGUuYyBcCisJJChzcmNkaXIpL2lub2RlX2lvLmMgXAorCSQoc3JjZGlyKS9pbWFnZXIuYyBcCisJJChzcmNkaXIpL2lvX21hbmFnZXIuYyBcCisJJChzcmNkaXIpL2lzbW91bnRlZC5jIFwKKwkkKHNyY2RpcikvbGluay5jIFwKKwkkKHNyY2RpcikvbGxzZWVrLmMgXAorCSQoc3JjZGlyKS9sb29rdXAuYyBcCisJJChzcmNkaXIpL21rZGlyLmMgXAorCSQoc3JjZGlyKS9ta2pvdXJuYWwuYyBcCisJJChzcmNkaXIpL21tcC5jCVwKKwkkKHNyY2RpcikvbmFtZWkuYyBcCisJJChzcmNkaXIpL25hdGl2ZS5jIFwKKwkkKHNyY2RpcikvbmV3ZGlyLmMgXAorCSQoc3JjZGlyKS9vcGVuZnMuYyBcCisJJChzcmNkaXIpL3Byb2dyZXNzLmMgXAorCSQoc3JjZGlyKS9wdW5jaC5jIFwKKwkkKHNyY2RpcikvcWNvdzIuYyBcCisJJChzcmNkaXIpL3JlYWRfYmIuYyBcCisJJChzcmNkaXIpL3JlYWRfYmJfZmlsZS5jIFwKKwkkKHNyY2RpcikvcmVzX2dkdC5jIFwKKwkkKHNyY2RpcikvcndfYml0bWFwcy5jIFwKKwkkKHNyY2Rpcikvc2hhMjU2LmMgXAorCSQoc3JjZGlyKS9zaGE1MTIuYyBcCisJJChzcmNkaXIpL3N3YXBmcy5jIFwKKwkkKHNyY2Rpcikvc3ltbGluay5jIFwKKwkkKHNyY2RpcikvdGRiLmMgXAorCSQoc3JjZGlyKS90ZXN0X2lvLmMgXAorCSQoc3JjZGlyKS90c3RfYmFkYmxvY2tzLmMgXAorCSQoc3JjZGlyKS90c3RfYml0b3BzLmMgXAorCSQoc3JjZGlyKS90c3RfYnl0ZXN3YXAuYyBcCisJJChzcmNkaXIpL3RzdF9nZXRzaXplLmMgXAorCSQoc3JjZGlyKS90c3RfaXNjYW4uYyBcCisJJChzcmNkaXIpL3VuZG9faW8uYyBcCisJJChzcmNkaXIpL3VuaXhfaW8uYyBcCisJJChzcmNkaXIpL3VubGluay5jIFwKKwkkKHNyY2RpcikvdmFsaWRfYmxrLmMgXAorCSQoc3JjZGlyKS92ZXJzaW9uLmMgXAorCSQoc3JjZGlyKS93cml0ZV9iYl9maWxlLmMgXAorCSQoc3JjZGlyKS9yYnRyZWUuYyBcCisJJChzcmNkaXIpL3RzdF9saWJleHQyZnMuYyBcCisJJChERUJVR19TUkNTKQorCitIRklMRVM9IGJpdG9wcy5oIGV4dDJmcy5oIGV4dDJfaW8uaCBleHQyX2ZzLmggZXh0Ml9leHRfYXR0ci5oIGV4dDNfZXh0ZW50cy5oIFwKKwl0ZGIuaCBxY293Mi5oCitIRklMRVNfSU49ICBleHQyX2Vyci5oIGV4dDJfdHlwZXMuaAorCitMSUJSQVJZPSBsaWJleHQyZnMKK0xJQkRJUj0gZXh0MmZzCisKK0VMRl9WRVJTSU9OID0gMi40CitFTEZfU09fVkVSU0lPTiA9IDIKK0VMRl9JTUFHRSA9IGxpYmV4dDJmcworRUxGX01ZRElSID0gZXh0MmZzCitFTEZfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorRUxGX09USEVSX0xJQlMgPSAtbGNvbV9lcnIKKworQlNETElCX1ZFUlNJT04gPSAyLjEKK0JTRExJQl9JTUFHRSA9IGxpYmV4dDJmcworQlNETElCX01ZRElSID0gZXh0MmZzCitCU0RMSUJfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9FTEZACitATUFLRUZJTEVfQlNETElCQAorQE1BS0VGSUxFX1BST0ZJTEVACisKK2FsbDo6IGV4dDJmcy5wYworCisuYy5vOgorCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TVExJQikgLWMgJDwgLW8gJEAKKwkkKFEpICQoQ0hFQ0tfQ01EKSAkKEFMTF9DRkxBR1MpICQ8CisJJChRKSAkKENQUENIRUNLX0NNRCkgJChDUFBGTEFHUykgJDwKK0BQUk9GSUxFX0NNVEAJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU1RMSUIpIC1nIC1wZyAtbyBwcm9maWxlZC8kKi5vIC1jICQ8CitARUxGX0NNVEAJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU0hMSUIpIC1mUElDIC1zaGFyZWQgLW8gZWxmc2hhcmVkLyQqLm8gLWMgJDwKK0BCU0RMSUJfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TSExJQikgJChCU0RMSUJfUElDX0ZMQUcpIC1vIHBpYy8kKi5vIC1jICQ8CisKK0RJU1RGSUxFUz0gTWFrZWZpbGUgKi5jICouaCBpbWFnZQorCitleHQyX2Vyci5ldDogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2V4dDJfZXJyLmV0LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFKSAkKHNyY2RpcikvZXh0Ml9lcnIuZXQuaW4gZXh0Ml9lcnIuZXQKKworZXh0Ml9lcnIuYyBleHQyX2Vyci5oOiBleHQyX2Vyci5ldAorCSQoRSkgIglDT01QSUxFX0VUIGV4dDJfZXJyLmV0IgorCSQoUSkgJChDT01QSUxFX0VUKSBleHQyX2Vyci5ldAorCitleHQyZnMucGM6ICQoc3JjZGlyKS9leHQyZnMucGMuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwkkKEUpICIJQ09ORklHLlNUQVRVUyAkQCIKKwkkKFEpIGNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPWxpYi9leHQyZnMvZXh0MmZzLnBjIC4vY29uZmlnLnN0YXR1cworCit0c3RfYmFkYmxvY2tzOiB0c3RfYmFkYmxvY2tzLm8gJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9iYWRibG9ja3MgdHN0X2JhZGJsb2Nrcy5vICQoQUxMX0xERkxBR1MpIFwKKwkJJChTVEFUSUNfTElCRVhUMkZTKSAkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF9kaWdlc3RfZW5jb2RlOiAkKHNyY2RpcikvZGlnZXN0X2VuY29kZS5jICQoc3JjZGlyKS9leHQyX2ZzLmgKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAkKEFMTF9DRkxBR1MpIC1vIHRzdF9kaWdlc3RfZW5jb2RlIFwKKwkJJChzcmNkaXIpL2RpZ2VzdF9lbmNvZGUuYyAtRFVOSVRURVNUICQoU1lTTElCUykKKwordHN0X2ljb3VudDogJChzcmNkaXIpL2ljb3VudC5jICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBTVEFUSUNfTElCQ09NX0VSUikKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfaWNvdW50ICQoc3JjZGlyKS9pY291bnQuYyAtRERFQlVHIFwKKwkJJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSBcCisJCSQoU1RBVElDX0xJQkVYVDJGUykgJChTVEFUSUNfTElCQ09NX0VSUikgJChTWVNMSUJTKQorCit0c3RfaXNjYW46IHRzdF9pc2Nhbi5vICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBTVEFUSUNfTElCQ09NX0VSUikKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfaXNjYW4gdHN0X2lzY2FuLm8gJChBTExfTERGTEFHUykgXAorCQkkKFNUQVRJQ19MSUJFWFQyRlMpICQoU1RBVElDX0xJQkNPTV9FUlIpICQoU1lTTElCUykKKwordHN0X2dldHNpemU6IHRzdF9nZXRzaXplLm8gJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9nZXRzaXplIHRzdF9nZXRzaXplLm8gJChBTExfTERGTEFHUykgXAorCQkkKFNUQVRJQ19MSUJFWFQyRlMpICQoU1RBVElDX0xJQkNPTV9FUlIpICQoU1lTTElCUykKKwordHN0X2lzbW91bnRlZDogJChzcmNkaXIpL2lzbW91bnRlZC5jICQoU1RBVElDX0xJQkVYVDJGUykgXAorCQkkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9pc21vdW50ZWQgJChzcmNkaXIpL2lzbW91bnRlZC5jIFwKKwkJJChTVEFUSUNfTElCRVhUMkZTKSAtRERFQlVHICQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgXAorCQkkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF9ieXRlc3dhcDogdHN0X2J5dGVzd2FwLm8gJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9ieXRlc3dhcCB0c3RfYnl0ZXN3YXAubyAkKEFMTF9MREZMQUdTKSBcCisJCSQoU1RBVElDX0xJQkVYVDJGUykgJChTVEFUSUNfTElCQ09NX0VSUikgJChTWVNMSUJTKQorCit0c3RfYml0b3BzOiB0c3RfYml0b3BzLm8gJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9iaXRvcHMgdHN0X2JpdG9wcy5vICQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgXAorCQkkKFNUQVRJQ19MSUJFWFQyRlMpICQoU1RBVElDX0xJQkNPTV9FUlIpICQoU1lTTElCUykKKwordHN0X2dldHNlY3RzaXplOiB0c3RfZ2V0c2VjdHNpemUubyAkKFNUQVRJQ19MSUJFWFQyRlMpICQoREVQU1RBVElDX0xJQkNPTV9FUlIpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X3NlY3RnZXRzaXplIHRzdF9nZXRzZWN0c2l6ZS5vICQoQUxMX0xERkxBR1MpIFwKKwkJJChTVEFUSUNfTElCRVhUMkZTKSAkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF90eXBlcy5vOiAkKHNyY2RpcikvdHN0X3R5cGVzLmMgZXh0Ml90eXBlcy5oIAorCit0c3RfdHlwZXM6IHRzdF90eXBlcy5vIGV4dDJfdHlwZXMuaCAKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfdHlwZXMgdHN0X3R5cGVzLm8gJChBTExfTERGTEFHUykgJChTWVNMSUJTKQorCit0c3Rfc3VwZXJfc2l6ZS5vOiAkKHNyY2RpcikvdHN0X3N1cGVyX3NpemUuYyAkKHNyY2RpcikvZXh0Ml9mcy5oCisKK3RzdF9zdXBlcl9zaXplOiB0c3Rfc3VwZXJfc2l6ZS5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X3N1cGVyX3NpemUgdHN0X3N1cGVyX3NpemUubyAkKEFMTF9MREZMQUdTKSAkKFNZU0xJQlMpCisKK3RzdF9mc19zdHJ1Y3QubzogJChzcmNkaXIpL3RzdF9mc19zdHJ1Y3QuYyAkKHNyY2RpcikvZXh0MmZzLmgKKwordHN0X2ZzX3N0cnVjdDogdHN0X2ZzX3N0cnVjdC5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X2ZzX3N0cnVjdCB0c3RfZnNfc3RydWN0Lm8gJChBTExfTERGTEFHUykgJChTWVNMSUJTKQorCit0c3RfaW5vZGVfc2l6ZS5vOiAkKHNyY2RpcikvdHN0X2lub2RlX3NpemUuYyAkKHNyY2RpcikvZXh0Ml9mcy5oCisKK3RzdF9pbm9kZV9zaXplOiB0c3RfaW5vZGVfc2l6ZS5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X2lub2RlX3NpemUgdHN0X2lub2RlX3NpemUubyAkKEFMTF9MREZMQUdTKSAkKFNZU0xJQlMpCisKK3RzdF9zaGEyNTY6ICQoc3JjZGlyKS9zaGEyNTYuYyAkKHNyY2RpcikvZXh0Ml9mcy5oCisJJChFKSAiCUNDICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgJChBTExfQ0ZMQUdTKSAtbyB0c3Rfc2hhMjU2IFwKKwkJJChzcmNkaXIpL3NoYTI1Ni5jIC1EVU5JVFRFU1QgJChTWVNMSUJTKQorCit0c3Rfc2hhNTEyOiAkKHNyY2Rpcikvc2hhNTEyLmMgJChzcmNkaXIpL2V4dDJfZnMuaAorCSQoRSkgIglDQyAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpICQoQUxMX0NGTEFHUykgLW8gdHN0X3NoYTUxMiBcCisJCSQoc3JjZGlyKS9zaGE1MTIuYyAtRFVOSVRURVNUICQoU1lTTElCUykKKworZXh0Ml90ZGJ0b29sOiB0ZGJ0b29sLm8KKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyBleHQyX3RkYnRvb2wgdGRidG9vbC5vIHRkYi5vICQoQUxMX0xERkxBR1MpICQoU1lTTElCUykKKwordHN0X2NtZHMuYyB0c3RfY21kcy5oOiB0c3RfY21kcy5jdAorCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgJChNS19DTURTKSAkKHNyY2RpcikvdHN0X2NtZHMuY3QKKworZGVidWdfY21kcy5jIGRlYnVnX2NtZHMuaDogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnX2NtZHMuY3QKKwkkKEUpICIJTUtfQ01EUyAkPCIKKwkkKFEpICQoTUtfQ01EUykgJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnX2NtZHMuY3QKKworZXh0ZW50X2NtZHMuYyBleHRlbnRfY21kcy5oOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZXh0ZW50X2NtZHMuY3QKKwkkKEUpICIJTUtfQ01EUyAkPCIKKwkkKFEpICQoTUtfQ01EUykgJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2V4dGVudF9jbWRzLmN0CisKK2RlYnVnZnMubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoREVCVUdGU19DRkxBR1MpIC1jICQ8IC1vICRACisKK2V4dGVudF9pbm9kZS5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZXh0ZW50X2lub2RlLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCit1dGlsLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy91dGlsLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCituY2hlY2subzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL25jaGVjay5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChERUJVR0ZTX0NGTEFHUykgLWMgJDwgLW8gJEAKKworaWNoZWNrLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9pY2hlY2suYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoREVCVUdGU19DRkxBR1MpIC1jICQ8IC1vICRACisKK2xzLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9scy5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChERUJVR0ZTX0NGTEFHUykgLWMgJDwgLW8gJEAKKworbHNkZWwubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2xzZGVsLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCitkdW1wLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9kdW1wLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCitzZXRfZmllbGRzLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9zZXRfZmllbGRzLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCitsb2dkdW1wLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9sb2dkdW1wLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCitodHJlZS5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvaHRyZWUuYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoREVCVUdGU19DRkxBR1MpIC1jICQ8IC1vICRACisKK3VudXNlZC5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvdW51c2VkLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCit6YXAubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3phcC5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChERUJVR0ZTX0NGTEFHUykgLWMgJDwgLW8gJEAKKworcXVvdGEubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3F1b3RhLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCitqb3VybmFsLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9qb3VybmFsLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCityZXZva2UubzogJCh0b3Bfc3JjZGlyKS9lMmZzY2svcmV2b2tlLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKERFQlVHRlNfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCityZWNvdmVyeS5vOiAkKHRvcF9zcmNkaXIpL2UyZnNjay9yZWNvdmVyeS5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChERUJVR0ZTX0NGTEFHUykgLWMgJDwgLW8gJEAKKworZG9fam91cm5hbC5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZG9fam91cm5hbC5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChERUJVR0ZTX0NGTEFHUykgLWMgJDwgLW8gJEAKKworeGF0dHJzLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy94YXR0cnMuYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoREVCVUdGU19DRkxBR1MpIC1jICQ8IC1vICRACisKK2UyZnJlZWZyYWcubzogJCh0b3Bfc3JjZGlyKS9taXNjL2UyZnJlZWZyYWcuYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoQUxMX0NGTEFHUykgLURERUJVR0ZTIC1JJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzIC1jICQ8IC1vICRACisKK2NyZWF0ZV9pbm9kZS5vOiAkKHRvcF9zcmNkaXIpL21pc2MvY3JlYXRlX2lub2RlLmMKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpIC1EREVCVUdGUyAtYyAkPCAtbyAkQAorCitmaWxlZnJhZy5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZmlsZWZyYWcuYworCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpICQoQUxMX0NGTEFHUykgLWMgJDwgLW8gJEAKKwordHN0X2xpYmV4dDJmcy5vOiAkKHNyY2RpcikvdHN0X2xpYmV4dDJmcy5jCisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSAkKERFUEVORF9DRkxBR1MpIC1jICQ8IC1vICRACisKK3RzdF9iaXRtYXBzX2NtZC5jOiB0c3RfYml0bWFwc19jbWQuY3QKKwkkKEUpICIJTUtfQ01EUyAkQCIKKwkkKFEpIERJUj0kKHNyY2RpcikgJChNS19DTURTKSAkKHNyY2RpcikvdHN0X2JpdG1hcHNfY21kLmN0CisKK3RzdF9iaXRtYXBzOiB0c3RfYml0bWFwcy5vIHRzdF9iaXRtYXBzX2NtZC5vICQoc3JjZGlyKS9ibGttYXA2NF9yYi5jIFwKKwkJJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJTUykgJChERVBTVEFUSUNfTElCQ09NX0VSUikKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyAkQCB0c3RfYml0bWFwcy5vIHRzdF9iaXRtYXBzX2NtZC5vIFwKKwkJLURERUJVR19SQiAkKHNyY2RpcikvYmxrbWFwNjRfcmIuYyAkKEFMTF9DRkxBR1MpIFwKKwkJJChBTExfTERGTEFHUykgJChTVEFUSUNfTElCRVhUMkZTKSAkKFNUQVRJQ19MSUJTUykgXAorCQkkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF9leHRlbnRzOiAkKHNyY2RpcikvZXh0ZW50LmMgJChERUJVR19PQkpTKSAkKERFUFNUQVRJQ19MSUJTUykgbGliZXh0MmZzLmEgXAorCSQoU1RBVElDX0xJQkUyUCkgJChERVBMSUJVVUlEKSAkKERFUExJQkJMS0lEKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKSBcCisJJChERVBMSUJTVVBQT1JUKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9leHRlbnRzICQoc3JjZGlyKS9leHRlbnQuYyBcCisJCSQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgLURERUJVRyAkKERFQlVHX09CSlMpIFwKKwkJJChTVEFUSUNfTElCU1MpICQoU1RBVElDX0xJQkUyUCkgJChMSUJTVVBQT1JUKSBcCisJCSQoU1RBVElDX0xJQkVYVDJGUykgJChMSUJCTEtJRCkgJChMSUJVVUlEKSBcCisJCSQoU1RBVElDX0xJQkNPTV9FUlIpICQoU1lTTElCUykgLUkgJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzCisKK3RzdF9saWJleHQyZnM6ICQoREVCVUdfT0JKUykgXAorCSQoREVQU1RBVElDX0xJQlNTKSAkKFNUQVRJQ19MSUJFMlApICQoREVQTElCVVVJRCkgbGliZXh0MmZzLmEgXAorCSQoREVQTElCQkxLSUQpICQoREVQU1RBVElDX0xJQkNPTV9FUlIpICQoREVQTElCU1VQUE9SVCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAtbyB0c3RfbGliZXh0MmZzICQoQUxMX0xERkxBR1MpIC1EREVCVUcgJChERUJVR19PQkpTKSBcCisJCSQoU1RBVElDX0xJQlNTKSAkKFNUQVRJQ19MSUJFMlApICQoTElCU1VQUE9SVCkgXAorCQkkKFNUQVRJQ19MSUJFWFQyRlMpICQoTElCQkxLSUQpICQoTElCVVVJRCkgJChMSUJNQUdJQykgXAorCQkkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpIC1JICQodG9wX3NyY2RpcikvZGVidWdmcworCit0c3RfaW5saW5lOiAkKHNyY2RpcikvaW5saW5lLmMgJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRzdF9pbmxpbmUgJChzcmNkaXIpL2lubGluZS5jICQoQUxMX0NGTEFHUykgXAorCQkkKEFMTF9MREZMQUdTKSAtRERFQlVHICQoU1RBVElDX0xJQkVYVDJGUykgXAorCQkkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF9pbmxpbmVfZGF0YTogaW5saW5lX2RhdGEuYyAkKFNUQVRJQ19MSUJFWFQyRlMpICQoREVQU1RBVElDX0xJQkNPTV9FUlIpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X2lubGluZV9kYXRhICQoc3JjZGlyKS9pbmxpbmVfZGF0YS5jICQoQUxMX0NGTEFHUykgXAorCS1EREVCVUcgJChTVEFUSUNfTElCRVhUMkZTKSAkKFNUQVRJQ19MSUJDT01fRVJSKSAkKFNZU0xJQlMpCisKK3RzdF9jc3VtOiBjc3VtLmMgJChTVEFUSUNfTElCRVhUMkZTKSAkKERFUFNUQVRJQ19MSUJDT01fRVJSKSAkKFNUQVRJQ19MSUJFMlApIFwKKwkJJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgLW8gdHN0X2NzdW0gJChzcmNkaXIpL2NzdW0uYyAtRERFQlVHIFwKKwkJJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSAkKFNUQVRJQ19MSUJFWFQyRlMpIFwKKwkJJChTVEFUSUNfTElCQ09NX0VSUikgJChTVEFUSUNfTElCRTJQKSAkKFNZU0xJQlMpCisKK3RzdF9jcmMzMmM6ICQoc3JjZGlyKS9jcmMzMmMuYyAkKFNUQVRJQ19MSUJFWFQyRlMpICQoREVQU1RBVElDX0xJQkNPTV9FUlIpCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAkKEFMTF9DRkxBR1MpIC1vIHRzdF9jcmMzMmMgJChzcmNkaXIpL2NyYzMyYy5jIFwKKwkJLURVTklUVEVTVCAkKFNUQVRJQ19MSUJFWFQyRlMpICQoU1RBVElDX0xJQkNPTV9FUlIpIFwKKwkJJChTWVNMSUJTKQorCitta2pvdXJuYWw6IG1ram91cm5hbC5jICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBMSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIG1ram91cm5hbCAkKHNyY2RpcikvbWtqb3VybmFsLmMgLURERUJVRyBcCisJCSQoU1RBVElDX0xJQkVYVDJGUykgJChMSUJDT01fRVJSKSAkKEFMTF9DRkxBR1MpICQoU1lTTElCUykKKworY2hlY2s6OiB0c3RfYml0b3BzIHRzdF9iYWRibG9ja3MgdHN0X2lzY2FuIHRzdF90eXBlcyB0c3RfaWNvdW50IFwKKyAgICB0c3Rfc3VwZXJfc2l6ZSB0c3RfdHlwZXMgdHN0X2lub2RlX3NpemUgdHN0X2NzdW0gdHN0X2NyYzMyYyB0c3RfYml0bWFwcyBcCisgICAgdHN0X2lubGluZSB0c3RfaW5saW5lX2RhdGEgdHN0X2xpYmV4dDJmcyB0c3Rfc2hhMjU2IHRzdF9zaGE1MTIgXAorICAgIHRzdF9kaWdlc3RfZW5jb2RlCisJJChURVNURU5WKSAuL3RzdF9iaXRvcHMKKwkkKFRFU1RFTlYpIC4vdHN0X2JhZGJsb2NrcworCSQoVEVTVEVOVikgLi90c3RfaXNjYW4KKwkkKFRFU1RFTlYpIC4vdHN0X3R5cGVzCisJJChURVNURU5WKSAuL3RzdF9pY291bnQKKwkkKFRFU1RFTlYpIC4vdHN0X3N1cGVyX3NpemUKKwkkKFRFU1RFTlYpIC4vdHN0X2lub2RlX3NpemUKKwkkKFRFU1RFTlYpIC4vdHN0X2NzdW0KKwkkKFRFU1RFTlYpIC4vdHN0X2lubGluZQorCSQoVEVTVEVOVikgLi90c3RfaW5saW5lX2RhdGEKKwkkKFRFU1RFTlYpIC4vdHN0X2NyYzMyYworCSQoVEVTVEVOVikgLi90c3Rfc2hhMjU2CisJJChURVNURU5WKSAuL3RzdF9zaGE1MTIKKwkkKFRFU1RFTlYpIC4vdHN0X2JpdG1hcHMgLWYgJChzcmNkaXIpL3RzdF9iaXRtYXBzX2NtZHMgPiB0c3RfYml0bWFwc19vdXQKKwlkaWZmICQoc3JjZGlyKS90c3RfYml0bWFwc19leHAgdHN0X2JpdG1hcHNfb3V0CisJJChURVNURU5WKSAuL3RzdF9iaXRtYXBzIC10IDIgLWYgJChzcmNkaXIpL3RzdF9iaXRtYXBzX2NtZHMgPiB0c3RfYml0bWFwc19vdXQKKwlkaWZmICQoc3JjZGlyKS90c3RfYml0bWFwc19leHAgdHN0X2JpdG1hcHNfb3V0CisJJChURVNURU5WKSAuL3RzdF9iaXRtYXBzIC10IDMgLWYgJChzcmNkaXIpL3RzdF9iaXRtYXBzX2NtZHMgPiB0c3RfYml0bWFwc19vdXQKKwlkaWZmICQoc3JjZGlyKS90c3RfYml0bWFwc19leHAgdHN0X2JpdG1hcHNfb3V0CisJJChURVNURU5WKSAuL3RzdF9iaXRtYXBzIC1sIC1mICQoc3JjZGlyKS90c3RfYml0bWFwc19jbWRzID4gdHN0X2JpdG1hcHNfb3V0CisJZGlmZiAkKHNyY2RpcikvdHN0X2JpdG1hcHNfZXhwIHRzdF9iaXRtYXBzX291dAorCSQoVEVTVEVOVikgLi90c3RfZGlnZXN0X2VuY29kZQorCitpbnN0YWxsZGlyczo6CisJJChFKSAiCU1LSU5TVEFMTERJUlMgJChsaWJkaXIpICQoaW5jbHVkZWRpcikvZXh0MmZzIgorCSQoUSkgJChNS0lOU1RBTExESVJTKSAkKERFU1RESVIpJChsaWJkaXIpIFwKKwkJJChERVNURElSKSQoaW5jbHVkZWRpcikvZXh0MmZzICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikKKworaW5zdGFsbDo6IGFsbCAkKEhGSUxFUykgJChIRklMRVNfSU4pIGluc3RhbGxkaXJzIGV4dDJmcy5wYworCSQoRSkgIglJTlNUQUxMX0RBVEEgJChsaWJkaXIpL2xpYmV4dDJmcy5hIgorCSQoUSkgJChJTlNUQUxMX0RBVEEpIGxpYmV4dDJmcy5hICQoREVTVERJUikkKGxpYmRpcikvbGliZXh0MmZzLmEKKwktJChRKSAkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS9saWJleHQyZnMuYQorCSQoUSkgJChDSE1PRCkgJChMSUJNT0RFKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYmV4dDJmcy5hCisJJChRKSBmb3IgaSBpbiAkKEhGSUxFUyk7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKGluY2x1ZGVkaXIpL2V4dDJmcy8kJGkiOyBcCisJCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2V4dDJmcy8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKEhGSUxFU19JTik7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKGluY2x1ZGVkaXIpL2V4dDJmcy8kJGkiOyBcCisJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQoaW5jbHVkZWRpcikvZXh0MmZzLyQkaTsgXAorCWRvbmUKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQocGtnY29uZmlnZGlyKS9leHQyZnMucGMiCisJJChRKSAkKElOU1RBTExfREFUQSkgZXh0MmZzLnBjICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvZXh0MmZzLnBjCisKK3VuaW5zdGFsbDo6CisJJChSTSkgLWYgJChERVNURElSKSQobGliZGlyKS9saWJleHQyZnMuYSBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvZXh0MmZzLnBjCisJJChSTSkgLXJmICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2V4dDJmcyAKKworY2xlYW46OgorCSQoUk0pIC1mIFwjKiAqLnMgKi5vICouYSAqfiAqLmJhayBjb3JlIHByb2ZpbGVkLyogXAorCQl0c3RfYmFkYmxvY2tzIHRzdF9pc2NhbiBleHQyX2Vyci5ldCBleHQyX2Vyci5jIGV4dDJfZXJyLmggXAorCQl0c3RfYnl0ZXN3YXAgdHN0X2lzbW91bnRlZCB0c3RfZ2V0c2l6ZSB0c3Rfc2VjdGdldHNpemUgXAorCQl0c3RfYml0b3BzIHRzdF90eXBlcyB0c3RfaWNvdW50IHRzdF9zdXBlcl9zaXplIHRzdF9jc3VtIFwKKwkJdHN0X2JpdG1hcHMgdHN0X2JpdG1hcHNfb3V0IHRzdF9leHRlbnRzIHRzdF9pbmxpbmUgXAorCQl0c3RfaW5saW5lX2RhdGEgdHN0X2lub2RlX3NpemUgdHN0X2JpdG1hcHNfY21kLmMgXAorCQl0c3RfZGlnZXN0X2VuY29kZSB0c3Rfc2hhMjU2IHRzdF9zaGE1MTIgXAorCQlleHQyX3RkYnRvb2wgbWtqb3VybmFsIGRlYnVnX2NtZHMuYyB0c3RfY21kcy5jIGV4dGVudF9jbWRzLmMgXAorCQkuLi9saWJleHQyZnMuYSAuLi9saWJleHQyZnNfcC5hIC4uL2xpYmV4dDJmc19jaGsuYSBcCisJCWNyYzMyY190YWJsZS5oIGdlbl9jcmMzMmN0YWJsZSB0c3RfY3JjMzJjIHRzdF9saWJleHQyZnMgXAorCQlleHQyZnMucGMgZXh0Ml90eXBlcy5oCisKK21vc3RseWNsZWFuOjogY2xlYW4KK2Rpc3RjbGVhbjo6IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBleHQyX2Vyci5jIGV4dDJfZXJyLmggTWFrZWZpbGUgZXh0MmZzLnBjIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorIworIyBIYWNrIHRvIHBhcmFsbGVsIG1ha2VzIHJlY29nbml6ZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LgorIworJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaDogZXh0Ml9lcnIuaAorCiskKE9CSlMpOiBzdWJkaXJzCisKK2dlbl9jcmMzMmN0YWJsZTogJChzcmNkaXIpL2dlbl9jcmMzMmN0YWJsZS5jCisJJChFKSAiCUNDICRAIgorCSQoUSkgJChCVUlMRF9DQykgJChCVUlMRF9DRkxBR1MpICQoQlVJTERfTERGTEFHUykgLW8gZ2VuX2NyYzMyY3RhYmxlIFwKKwkJJChzcmNkaXIpL2dlbl9jcmMzMmN0YWJsZS5jCisKK2NyYzMyY190YWJsZS5oOiBnZW5fY3JjMzJjdGFibGUKKwkkKEUpICIJR0VOMzJDVEFCTEUgJEAiCisJJChRKSAuL2dlbl9jcmMzMmN0YWJsZSA+IGNyYzMyY190YWJsZS5oCisKKyQodG9wX2J1aWxkZGlyKS8kKG15X2RpcikvZXh0Ml90eXBlcy5oOiAkKHNyY2RpcikvZXh0Ml90eXBlcy5oLmluIFwKKwkJJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwljZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz0kKG15X2RpcikvZXh0Ml90eXBlcy5oIC4vY29uZmlnLnN0YXR1cworCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK2V4dDJfZXJyLm86IGV4dDJfZXJyLmMKK2FsbG9jLm86ICQoc3JjZGlyKS9hbGxvYy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2FsbG9jX3NiLm86ICQoc3JjZGlyKS9hbGxvY19zYi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2FsbG9jX3N0YXRzLm86ICQoc3JjZGlyKS9hbGxvY19zdGF0cy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2FsbG9jX3RhYmxlcy5vOiAkKHNyY2RpcikvYWxsb2NfdGFibGVzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZXh0MmZzUC5oCithdGV4aXQubzogJChzcmNkaXIpL2F0ZXhpdC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2V4dDJmc1AuaAorYmFkYmxvY2tzLm86ICQoc3JjZGlyKS9iYWRibG9ja3MuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCitiYl9jb21wYXQubzogJChzcmNkaXIpL2JiX2NvbXBhdC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK2JiX2lub2RlLm86ICQoc3JjZGlyKS9iYl9pbm9kZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2JpdG1hcHMubzogJChzcmNkaXIpL2JpdG1hcHMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9ibWFwNjQuaAorYml0b3BzLm86ICQoc3JjZGlyKS9iaXRvcHMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitibGttYXA2NF9iYS5vOiAkKHNyY2RpcikvYmxrbWFwNjRfYmEuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9ibWFwNjQuaAorYmxrbWFwNjRfcmIubzogJChzcmNkaXIpL2Jsa21hcDY0X3JiLmMgJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9ibWFwNjQuaCAkKHNyY2RpcikvcmJ0cmVlLmgKK2Jsb2NrLm86ICQoc3JjZGlyKS9ibG9jay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2JtYXAubzogJChzcmNkaXIpL2JtYXAuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCitjaGVja19kZXNjLm86ICQoc3JjZGlyKS9jaGVja19kZXNjLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorY2xvc2Vmcy5vOiAkKHNyY2RpcikvY2xvc2Vmcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK2NyYzE2Lm86ICQoc3JjZGlyKS9jcmMxNi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQoc3JjZGlyKS9jcmMxNi5oCitjcmMzMmMubzogJChzcmNkaXIpL2NyYzMyYy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvY3JjMzJjX2RlZnMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oIGNyYzMyY190YWJsZS5oCitnZW5fY3JjMzJjdGFibGUubzogJChzcmNkaXIpL2dlbl9jcmMzMmN0YWJsZS5jICQoc3JjZGlyKS9jcmMzMmNfZGVmcy5oCitjc3VtLm86ICQoc3JjZGlyKS9jc3VtLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvY3JjMTYuaAorZGJsaXN0Lm86ICQoc3JjZGlyKS9kYmxpc3QuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCitkYmxpc3RfZGlyLm86ICQoc3JjZGlyKS9kYmxpc3RfZGlyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzUC5oIFwKKyAkKHNyY2RpcikvZXh0MmZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaAorZGlnZXN0X2VuY29kZS5vOiAkKHNyY2RpcikvZGlnZXN0X2VuY29kZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCitkaXJibG9jay5vOiAkKHNyY2RpcikvZGlyYmxvY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitkaXJoYXNoLm86ICQoc3JjZGlyKS9kaXJoYXNoLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorZGlyX2l0ZXJhdGUubzogJChzcmNkaXIpL2Rpcl9pdGVyYXRlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzUC5oIFwKKyAkKHNyY2RpcikvZXh0MmZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaAorZHVwZnMubzogJChzcmNkaXIpL2R1cGZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzUC5oIFwKKyAkKHNyY2RpcikvZXh0MmZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaAorZXhwYW5kZGlyLm86ICQoc3JjZGlyKS9leHBhbmRkaXIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9leHQyZnNQLmgKK2V4dF9hdHRyLm86ICQoc3JjZGlyKS9leHRfYXR0ci5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK2V4dGVudC5vOiAkKHNyY2RpcikvZXh0ZW50LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzUC5oIFwKKyAkKHNyY2RpcikvZXh0MmZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZTJpbWFnZS5oCitmaWxlaW8ubzogJChzcmNkaXIpL2ZpbGVpby5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2V4dDJmc1AuaAorZmluZGRldi5vOiAkKHNyY2RpcikvZmluZGRldi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2V4dDJmc1AuaAorZmx1c2hiLm86ICQoc3JjZGlyKS9mbHVzaGIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitmcmVlZnMubzogJChzcmNkaXIpL2ZyZWVmcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK2dlbl9iaXRtYXAubzogJChzcmNkaXIpL2dlbl9iaXRtYXAuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnNQLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCitnZW5fYml0bWFwNjQubzogJChzcmNkaXIpL2dlbl9iaXRtYXA2NC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2JtYXA2NC5oCitnZXRfbnVtX2RpcnMubzogJChzcmNkaXIpL2dldF9udW1fZGlycy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK2dldF9wYXRobmFtZS5vOiAkKHNyY2RpcikvZ2V0X3BhdGhuYW1lLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorZ2V0c2l6ZS5vOiAkKHNyY2RpcikvZ2V0c2l6ZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2dldHNlY3RzaXplLm86ICQoc3JjZGlyKS9nZXRzZWN0c2l6ZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2lfYmxvY2subzogJChzcmNkaXIpL2lfYmxvY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitpY291bnQubzogJChzcmNkaXIpL2ljb3VudC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL3RkYi5oCitpbmRfYmxvY2subzogJChzcmNkaXIpL2luZF9ibG9jay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2luaXRpYWxpemUubzogJChzcmNkaXIpL2luaXRpYWxpemUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitpbmxpbmUubzogJChzcmNkaXIpL2lubGluZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2lubGluZV9kYXRhLm86ICQoc3JjZGlyKS9pbmxpbmVfZGF0YS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2V4dDJmc1AuaAoraW5vZGUubzogJChzcmNkaXIpL2lub2RlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzUC5oIFwKKyAkKHNyY2RpcikvZXh0MmZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZTJpbWFnZS5oCitpbm9kZV9pby5vOiAkKHNyY2RpcikvaW5vZGVfaW8uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitpbWFnZXIubzogJChzcmNkaXIpL2ltYWdlci5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2lvX21hbmFnZXIubzogJChzcmNkaXIpL2lvX21hbmFnZXIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitpc21vdW50ZWQubzogJChzcmNkaXIpL2lzbW91bnRlZC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK2xpbmsubzogJChzcmNkaXIpL2xpbmsuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitsbHNlZWsubzogJChzcmNkaXIpL2xsc2Vlay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmgKK2xvb2t1cC5vOiAkKHNyY2RpcikvbG9va3VwLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorbWtkaXIubzogJChzcmNkaXIpL21rZGlyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZXh0MmZzUC5oCitta2pvdXJuYWwubzogJChzcmNkaXIpL21ram91cm5hbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQyZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2Rpcikva2VybmVsLWpiZC5oICQoc3JjZGlyKS9qZnNfY29tcGF0LmggXAorICQoc3JjZGlyKS9rZXJuZWwtbGlzdC5oCittbXAubzogJChzcmNkaXIpL21tcC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oCituYW1laS5vOiAkKHNyY2RpcikvbmFtZWkuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9leHQyZnNQLmgKK25hdGl2ZS5vOiAkKHNyY2RpcikvbmF0aXZlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorbmV3ZGlyLm86ICQoc3JjZGlyKS9uZXdkaXIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCitvcGVuZnMubzogJChzcmNkaXIpL29wZW5mcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2UyaW1hZ2UuaAorcHJvZ3Jlc3MubzogJChzcmNkaXIpL3Byb2dyZXNzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2V4dDJmc1AuaAorcHVuY2gubzogJChzcmNkaXIpL3B1bmNoLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZXh0MmZzUC5oCitxY293Mi5vOiAkKHNyY2RpcikvcWNvdzIuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvcWNvdzIuaAorcmVhZF9iYi5vOiAkKHNyY2RpcikvcmVhZF9iYi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3JlYWRfYmJfZmlsZS5vOiAkKHNyY2RpcikvcmVhZF9iYl9maWxlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorcmVzX2dkdC5vOiAkKHNyY2RpcikvcmVzX2dkdC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3J3X2JpdG1hcHMubzogJChzcmNkaXIpL3J3X2JpdG1hcHMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9lMmltYWdlLmgKK3NoYTI1Ni5vOiAkKHNyY2Rpcikvc2hhMjU2LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK3NoYTUxMi5vOiAkKHNyY2Rpcikvc2hhNTEyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmgKK3N3YXBmcy5vOiAkKHNyY2Rpcikvc3dhcGZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAorc3ltbGluay5vOiAkKHNyY2Rpcikvc3ltbGluay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3RkYi5vOiAkKHNyY2RpcikvdGRiLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS90ZGIuaAordGVzdF9pby5vOiAkKHNyY2RpcikvdGVzdF9pby5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3RzdF9iYWRibG9ja3MubzogJChzcmNkaXIpL3RzdF9iYWRibG9ja3MuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCit0c3RfYml0b3BzLm86ICQoc3JjZGlyKS90c3RfYml0b3BzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAordHN0X2J5dGVzd2FwLm86ICQoc3JjZGlyKS90c3RfYnl0ZXN3YXAuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCit0c3RfZ2V0c2l6ZS5vOiAkKHNyY2RpcikvdHN0X2dldHNpemUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCit0c3RfaXNjYW4ubzogJChzcmNkaXIpL3RzdF9pc2Nhbi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3VuZG9faW8ubzogJChzcmNkaXIpL3VuZG9faW8uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9leHQyZnNQLmgKK3VuaXhfaW8ubzogJChzcmNkaXIpL3VuaXhfaW8uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCit1bmxpbmsubzogJChzcmNkaXIpL3VubGluay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmgKK3ZhbGlkX2Jsay5vOiAkKHNyY2RpcikvdmFsaWRfYmxrLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaAordmVyc2lvbi5vOiAkKHNyY2RpcikvdmVyc2lvbi5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS92ZXJzaW9uLmgKK3dyaXRlX2JiX2ZpbGUubzogJChzcmNkaXIpL3dyaXRlX2JiX2ZpbGUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDJfZnMuaCAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggJChzcmNkaXIpL2JpdG9wcy5oCityYnRyZWUubzogJChzcmNkaXIpL3JidHJlZS5jICQoc3JjZGlyKS9yYnRyZWUuaAordHN0X2xpYmV4dDJmcy5vOiAkKHNyY2RpcikvdHN0X2xpYmV4dDJmcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmc1AuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2RlYnVnX2NtZHMubzogZGVidWdfY21kcy5jICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitleHRlbnRfY21kcy5vOiBleHRlbnRfY21kcy5jICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCit0c3RfY21kcy5vOiB0c3RfY21kcy5jICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitkZWJ1Z2ZzLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL3ZlcnNpb24uaCBcCisgJChzcmNkaXIpLy4uLy4uL2UyZnNjay9qZnNfdXNlci5oICQoc3JjZGlyKS9rZXJuZWwtamJkLmggXAorICQoc3JjZGlyKS9qZnNfY29tcGF0LmggJChzcmNkaXIpL2tlcm5lbC1saXN0LmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcGxhdXNpYmxlLmgKK3V0aWwubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3V0aWwuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbmNoZWNrLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9uY2hlY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAoraWNoZWNrLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9pY2hlY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbHMubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2xzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2xzZGVsLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9sc2RlbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitkdW1wLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9kdW1wLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK3NldF9maWVsZHMubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3NldF9maWVsZHMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorbG9nZHVtcC5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvbG9nZHVtcC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS8uLi8uLi9lMmZzY2svamZzX3VzZXIuaCBcCisgJChzcmNkaXIpL2tlcm5lbC1qYmQuaCAkKHNyY2RpcikvamZzX2NvbXBhdC5oICQoc3JjZGlyKS9rZXJuZWwtbGlzdC5oCitodHJlZS5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvaHRyZWUuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAordW51c2VkLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy91bnVzZWQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3Mvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfZnMuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9leHQyZnMuaCBcCisgJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorZmlsZWZyYWcubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2ZpbGVmcmFnLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK2V4dGVudF9pbm9kZS5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZXh0ZW50X2lub2RlLmMgXAorICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oIFwKKyAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK3phcC5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvemFwLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9kZWJ1Z2ZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3NzL3NzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHNyY2RpcikvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oICQoc3JjZGlyKS9leHQyX2V4dF9hdHRyLmggXAorICQoc3JjZGlyKS9iaXRvcHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvLi4vbWlzYy9jcmVhdGVfaW5vZGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKK3F1b3RhLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9xdW90YS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCit4YXR0cnMubzogJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL3hhdHRycy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCitlMmZyZWVmcmFnLm86ICQodG9wX3NyY2RpcikvbWlzYy9lMmZyZWVmcmFnLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHNyY2RpcikvZXh0MmZzLmggXAorICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9taXNjL2UyZnJlZWZyYWcuaCBcCisgJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzL2RlYnVnZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvZGVidWdmcy8uLi9taXNjL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaAorY3JlYXRlX2lub2RlLm86ICQodG9wX3NyY2RpcikvbWlzYy9jcmVhdGVfaW5vZGUuYyBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggXAorICQoc3JjZGlyKS9leHQyZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQoc3JjZGlyKS9leHQyX2ZzLmggJChzcmNkaXIpL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oICQoc3JjZGlyKS9iaXRvcHMuaCAkKHNyY2RpcikvZmllbWFwLmggXAorICQodG9wX3NyY2RpcikvbWlzYy9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvbmxzLWVuYWJsZS5oCitqb3VybmFsLm86ICQodG9wX3NyY2RpcikvZGVidWdmcy9qb3VybmFsLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZGVidWdmcy9qb3VybmFsLmggXAorICQoc3JjZGlyKS8uLi8uLi9lMmZzY2svamZzX3VzZXIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQoc3JjZGlyKS9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCBcCisgJChzcmNkaXIpL2JpdG9wcy5oICQoc3JjZGlyKS9rZXJuZWwtamJkLmggJChzcmNkaXIpL2pmc19jb21wYXQuaCBcCisgJChzcmNkaXIpL2tlcm5lbC1saXN0LmgKK3Jldm9rZS5vOiAkKHRvcF9zcmNkaXIpL2UyZnNjay9yZXZva2UuYyAkKHRvcF9zcmNkaXIpL2UyZnNjay9qZnNfdXNlci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2tlcm5lbC1qYmQuaCBcCisgJChzcmNkaXIpL2pmc19jb21wYXQuaCAkKHNyY2Rpcikva2VybmVsLWxpc3QuaAorcmVjb3ZlcnkubzogJCh0b3Bfc3JjZGlyKS9lMmZzY2svcmVjb3ZlcnkuYyAkKHRvcF9zcmNkaXIpL2UyZnNjay9qZnNfdXNlci5oIFwKKyAkKHNyY2RpcikvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJChzcmNkaXIpL2V4dDJmcy5oICQoc3JjZGlyKS9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJChzcmNkaXIpL2V4dDJfZXh0X2F0dHIuaCAkKHNyY2RpcikvYml0b3BzLmggJChzcmNkaXIpL2tlcm5lbC1qYmQuaCBcCisgJChzcmNkaXIpL2pmc19jb21wYXQuaCAkKHNyY2Rpcikva2VybmVsLWxpc3QuaAorZG9fam91cm5hbC5vOiAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZG9fam91cm5hbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2RlYnVnZnMvZGVidWdmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHNyY2RpcikvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJChzcmNkaXIpL2V4dDJmcy5oIFwKKyAkKHNyY2RpcikvZXh0M19leHRlbnRzLmggJChzcmNkaXIpL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHNyY2RpcikvZXh0Ml9leHRfYXR0ci5oIFwKKyAkKHNyY2RpcikvYml0b3BzLmggJCh0b3Bfc3JjZGlyKS9kZWJ1Z2ZzLy4uL21pc2MvY3JlYXRlX2lub2RlLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQoc3JjZGlyKS9rZXJuZWwtamJkLmggXAorICQoc3JjZGlyKS9qZnNfY29tcGF0LmggJChzcmNkaXIpL2tlcm5lbC1saXN0LmggXAorICQodG9wX3NyY2RpcikvZGVidWdmcy9qb3VybmFsLmggJChzcmNkaXIpLy4uLy4uL2UyZnNjay9qZnNfdXNlci5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9NYWtlZmlsZS5wcSBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL01ha2VmaWxlLnBxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDgyYTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9NYWtlZmlsZS5wcQpAQCAtMCwwICsxLDUwIEBACitUT1BTUkM9Li5cLi4KK0xJQk5BTUU9RVhUMi5MSUIKK09CSkZJTEU9RVhUMi5MU1QKKworT0JKUz0gCWFsbG9jLm9iaiBcCisJYWxsb2NfdGFibGVzLm9iaiBcCisJYmFkYmxvY2tzLm9iaiBcCisJYmJfY29tcGF0Lm9iaiBcCisJYmJfaW5vZGUub2JqIFwKKwliaXRtYXBzLm9iaiBcCisJYml0b3BzLm9iaiBcCisJYmxvY2sub2JqIFwKKwlibWFwLm9iaiBcCisJYm1vdmUub2JqIFwKKwljaGVja19kZXNjLm9iaiBcCisJY2xvc2Vmcy5vYmogXAorCWNtcF9iaXRtYXBzLm9iaiBcCisJZGJsaXN0Lm9iaiBcCisJZGJsaXN0X2Rpci5vYmogXAorCWRpcmJsb2NrLm9iaiBcCisJZGlyX2l0ZXJhdGUub2JqIFwKKwlkdXBmcy5vYmogXAorCWV4cGFuZGRpci5vYmogXAorCWZpbGVpby5vYmogXAorCWZyZWVmcy5vYmogXAorCWdldF9wYXRobmFtZS5vYmogXAorCWljb3VudC5vYmogXAorCWluaXRpYWxpemUub2JqIFwKKwlpbmxpbmUub2JqIFwKKwlpbmxpbmVfZGF0YS5vYmogXAorCWlub2RlLm9iaiBcCisJaXNtb3VudGVkLm9iaiBcCisJbGluay5vYmogXAorCWxvb2t1cC5vYmogXAorCW1rZGlyLm9iaiBcCisJbmFtZWkub2JqIFwKKwluYXRpdmUub2JqIFwKKwluZXdkaXIub2JqIFwKKwlvcGVuZnMub2JqIFwKKwlyZWFkX2JiLm9iaiBcCisJcmVhZF9iYl9maWxlLm9iaiBcCisJcnNfYml0bWFwLm9iaiBcCisJcndfYml0bWFwcy5vYmogXAorCXN3YXBmcy5vYmogXAorCXVubGluay5vYmogXAorCXZhbGlkX2Jsay5vYmogXAorCXZlcnNpb24ub2JqCisKKyFpbmNsdWRlICQoVE9QU1JDKVxwb3dlcnF1ZXN0XE1DT05GSUcKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYWxsb2MuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2YWM0YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jLmMKQEAgLTAsMCArMSw1MjYgQEAKKy8qCisgKiBhbGxvYy5jIC0tLSBhbGxvY2F0ZSBuZXcgaW5vZGVzLCBibG9ja3MgZm9yIGV4dDJmcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworI2RlZmluZSBtaW4oYSwgYikgKChhKSA8IChiKSA/IChhKSA6IChiKSkKKworI3VuZGVmIERFQlVHCisKKyNpZmRlZiBERUJVRworIyBkZWZpbmUgZGJnX3ByaW50ZihmLCBhLi4uKSAgZG8ge3ByaW50ZihmLCAjIyBhKTsgZmZsdXNoKHN0ZG91dCk7IH0gd2hpbGUgKDApCisjZWxzZQorIyBkZWZpbmUgZGJnX3ByaW50ZihmLCBhLi4uKQorI2VuZGlmCisKKy8qCisgKiBDbGVhciB0aGUgdW5pbml0IGJsb2NrIGJpdG1hcCBmbGFnIGlmIG5lY2Vzc2FyeQorICovCit2b2lkIGV4dDJmc19jbGVhcl9ibG9ja191bmluaXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlpZiAoZ3JvdXAgPj0gZnMtPmdyb3VwX2Rlc2NfY291bnQgfHwKKwkgICAgIWV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSB8fAorCSAgICAhKGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwgRVhUMl9CR19CTE9DS19VTklOSVQpKSkKKwkJcmV0dXJuOworCisJLyogdW5pbml0IGJsb2NrIGJpdG1hcHMgYXJlIG5vdyBpbml0aWFsaXplZCBpbiByZWFkX2JpdG1hcHMoKSAqLworCisJZXh0MmZzX2JnX2ZsYWdzX2NsZWFyKGZzLCBncm91cCwgRVhUMl9CR19CTE9DS19VTklOSVQpOworCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncm91cCk7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCWV4dDJmc19tYXJrX2JiX2RpcnR5KGZzKTsKK30KKworLyoKKyAqIENoZWNrIGZvciB1bmluaXQgaW5vZGUgYml0bWFwcyBhbmQgZGVhbCB3aXRoIHRoZW0gYXBwcm9wcmlhdGVseQorICovCitzdGF0aWMgdm9pZCBjaGVja19pbm9kZV91bmluaXQoZXh0Ml9maWxzeXMgZnMsIGV4dDJmc19pbm9kZV9iaXRtYXAgbWFwLAorCQkJICBkZ3JwX3QgZ3JvdXApCit7CisJZXh0Ml9pbm9fdAlpLCBpbm87CisKKwlpZiAoZ3JvdXAgPj0gZnMtPmdyb3VwX2Rlc2NfY291bnQgfHwKKwkgICAgIWV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSB8fAorCSAgICAhKGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwgRVhUMl9CR19JTk9ERV9VTklOSVQpKSkKKwkJcmV0dXJuOworCisJaW5vID0gKGdyb3VwICogZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXApICsgMTsKKwlmb3IgKGk9MDsgaSA8IGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwOyBpKyssIGlubysrKQorCQlleHQyZnNfZmFzdF91bm1hcmtfaW5vZGVfYml0bWFwMihtYXAsIGlubyk7CisKKwlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGdyb3VwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCk7CisJLyogTWltaWNzIHdoYXQgdGhlIGtlcm5lbCBkb2VzICovCisJZXh0MmZzX2JnX2ZsYWdzX2NsZWFyKGZzLCBncm91cCwgRVhUMl9CR19CTE9DS19VTklOSVQpOworCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncm91cCk7CisJZXh0MmZzX21hcmtfaWJfZGlydHkoZnMpOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKK30KKworLyoKKyAqIFJpZ2h0IG5vdywganVzdCBzZWFyY2ggZm9yd2FyZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5J3MgYmxvY2sKKyAqIGdyb3VwIHRvIGZpbmQgdGhlIG5leHQgZnJlZSBpbm9kZS4KKyAqCisgKiBTaG91bGQgaGF2ZSBhIHNwZWNpYWwgcG9saWN5IGZvciBkaXJlY3Rvcmllcy4KKyAqLworZXJyY29kZV90IGV4dDJmc19uZXdfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLAorCQkJICAgaW50IG1vZGUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgZXh0MmZzX2lub2RlX2JpdG1hcCBtYXAsIGV4dDJfaW5vX3QgKnJldCkKK3sKKwlleHQyX2lub190CXN0YXJ0X2lub2RlID0gMDsKKwlleHQyX2lub190CWksIGlub19pbl9ncm91cCwgdXB0bywgZmlyc3RfemVybzsKKwllcnJjb2RlX3QJcmV0dmFsOworCWRncnBfdAkJZ3JvdXA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKCFtYXApCisJCW1hcCA9IGZzLT5pbm9kZV9tYXA7CisJaWYgKCFtYXApCisJCXJldHVybiBFWFQyX0VUX05PX0lOT0RFX0JJVE1BUDsKKworCWlmIChkaXIgPiAwKSB7CisJCWdyb3VwID0gKGRpciAtIDEpIC8gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcik7CisJCXN0YXJ0X2lub2RlID0gKGdyb3VwICogRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikpICsgMTsKKwl9CisJaWYgKHN0YXJ0X2lub2RlIDwgRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpKQorCQlzdGFydF9pbm9kZSA9IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKTsKKwlpZiAoc3RhcnRfaW5vZGUgPiBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KQorCQlyZXR1cm4gRVhUMl9FVF9JTk9ERV9BTExPQ19GQUlMOworCWkgPSBzdGFydF9pbm9kZTsKKwlkbyB7CisJCWlub19pbl9ncm91cCA9IChpIC0gMSkgJSBFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKTsKKwkJZ3JvdXAgPSAoaSAtIDEpIC8gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcik7CisKKwkJY2hlY2tfaW5vZGVfdW5pbml0KGZzLCBtYXAsIGdyb3VwKTsKKwkJdXB0byA9IGkgKyAoRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgLSBpbm9faW5fZ3JvdXApOworCQlpZiAoaSA8IHN0YXJ0X2lub2RlICYmIHVwdG8gPj0gc3RhcnRfaW5vZGUpCisJCQl1cHRvID0gc3RhcnRfaW5vZGUgLSAxOworCQlpZiAodXB0byA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpCisJCQl1cHRvID0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudDsKKworCQlyZXR2YWwgPSBleHQyZnNfZmluZF9maXJzdF96ZXJvX2lub2RlX2JpdG1hcDIobWFwLCBpLCB1cHRvLAorCQkJCQkJCSAgICAgICZmaXJzdF96ZXJvKTsKKwkJaWYgKHJldHZhbCA9PSAwKSB7CisJCQlpID0gZmlyc3RfemVybzsKKwkJCWJyZWFrOworCQl9CisJCWlmIChyZXR2YWwgIT0gRU5PRU5UKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5PREVfQUxMT0NfRkFJTDsKKwkJaSA9IHVwdG8gKyAxOworCQlpZiAoaSA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpCisJCQlpID0gRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpOworCX0gd2hpbGUgKGkgIT0gc3RhcnRfaW5vZGUpOworCisJaWYgKGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIobWFwLCBpKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5PREVfQUxMT0NfRkFJTDsKKwkqcmV0ID0gaTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFN0dXBpZCBhbGdvcml0aG0gLS0tIHdlIG5vdyBqdXN0IHNlYXJjaCBmb3J3YXJkIHN0YXJ0aW5nIGZyb20gdGhlCisgKiBnb2FsLiAgU2hvdWxkIHB1dCBpbiBhIHNtYXJ0ZXIgb25lIHNvbWVkYXkuLi4uCisgKi8KK2VycmNvZGVfdCBleHQyZnNfbmV3X2Jsb2NrMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLAorCQkJICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBtYXAsIGJsazY0X3QgKnJldCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWJsazY0X3QJYiA9IDA7CisJZXJyY29kZV90ICgqZ2FiKShleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLCBibGs2NF90ICpyZXQpOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmICghbWFwICYmIGZzLT5nZXRfYWxsb2NfYmxvY2spIHsKKwkJLyoKKwkJICogSW4gY2FzZSB0aGVyZSBhcmUgY2xpZW50cyBvdXQgdGhlcmUgd2hvc2UgZ2V0X2FsbG9jX2Jsb2NrCisJCSAqIGhhbmRsZXJzIGNhbGwgZXh0MmZzX25ld19ibG9jazIgd2l0aCBhIE5VTEwgYmxvY2sgbWFwLAorCQkgKiB0ZW1wb3JhcmlseSBzd2FwIG91dCB0aGUgZnVuY3Rpb24gcG9pbnRlciBzbyB0aGF0IHdlIGRvbid0CisJCSAqIGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wLgorCQkgKi8KKwkJZ2FiID0gZnMtPmdldF9hbGxvY19ibG9jazsKKwkJZnMtPmdldF9hbGxvY19ibG9jayA9IE5VTEw7CisJCXJldHZhbCA9IGdhYihmcywgZ29hbCwgJmIpOworCQlmcy0+Z2V0X2FsbG9jX2Jsb2NrID0gZ2FiOworCQlnb3RvIGFsbG9jYXRlZDsKKwl9CisJaWYgKCFtYXApCisJCW1hcCA9IGZzLT5ibG9ja19tYXA7CisJaWYgKCFtYXApCisJCXJldHVybiBFWFQyX0VUX05PX0JMT0NLX0JJVE1BUDsKKwlpZiAoIWdvYWwgfHwgKGdvYWwgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSkKKwkJZ29hbCA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCWdvYWwgJj0gfkVYVDJGU19DTFVTVEVSX01BU0soZnMpOworCisJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKG1hcCwKKwkJCWdvYWwsIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIDEsICZiKTsKKwlpZiAoKHJldHZhbCA9PSBFTk9FTlQpICYmIChnb2FsICE9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSkKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKG1hcCwKKwkJCWZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrLCBnb2FsIC0gMSwgJmIpOworYWxsb2NhdGVkOgorCWlmIChyZXR2YWwgPT0gRU5PRU5UKQorCQlyZXR1cm4gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlleHQyZnNfY2xlYXJfYmxvY2tfdW5pbml0KGZzLCBleHQyZnNfZ3JvdXBfb2ZfYmxrMihmcywgYikpOworCSpyZXQgPSBiOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX25ld19ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgZ29hbCwKKwkJCSAgIGV4dDJmc19ibG9ja19iaXRtYXAgbWFwLCBibGtfdCAqcmV0KQoreworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCB2YWw7CisJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGdvYWwsIG1hcCwgJnZhbCk7CisJaWYgKCFyZXR2YWwpCisJCSpyZXQgPSAoYmxrX3QpIHZhbDsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB6ZXJvcyBvdXQgdGhlIGFsbG9jYXRlZCBibG9jaywgYW5kIHVwZGF0ZXMgYWxsIG9mIHRoZQorICogYXBwcm9wcmlhdGUgZmlsZXN5c3RlbSByZWNvcmRzLgorICovCitlcnJjb2RlX3QgZXh0MmZzX2FsbG9jX2Jsb2NrMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLAorCQkJICAgICBjaGFyICpibG9ja19idWYsIGJsazY0X3QgKnJldCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCWJsb2NrOworCisJaWYgKGZzLT5nZXRfYWxsb2NfYmxvY2spIHsKKwkJcmV0dmFsID0gKGZzLT5nZXRfYWxsb2NfYmxvY2spKGZzLCBnb2FsLCAmYmxvY2spOworCQlpZiAocmV0dmFsKQorCQkJZ290byBmYWlsOworCX0gZWxzZSB7CisJCWlmICghZnMtPmJsb2NrX21hcCkgeworCQkJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGZzKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBmYWlsOworCQl9CisKKwkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGdvYWwsIDAsICZibG9jayk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKGJsb2NrX2J1ZikgeworCQltZW1zZXQoYmxvY2tfYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsb2NrLCAxLCBibG9ja19idWYpOworCX0gZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBibG9jaywgMSwgTlVMTCwgTlVMTCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBmYWlsOworCisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxvY2ssICsxKTsKKwkqcmV0ID0gYmxvY2s7CisKK2ZhaWw6CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19hbGxvY19ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgZ29hbCwKKwkJCSAgICAgY2hhciAqYmxvY2tfYnVmLCBibGtfdCAqcmV0KQoreworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdAl2YWw7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jX2Jsb2NrMihmcywgZ29hbCwgYmxvY2tfYnVmLCAmdmFsKTsKKwlpZiAoIXJldHZhbCkKKwkJKnJldCA9IChibGtfdCkgdmFsOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBmaW5pc2gsCisJCQkJIGludCBudW0sIGV4dDJmc19ibG9ja19iaXRtYXAgbWFwLCBibGs2NF90ICpyZXQpCit7CisJYmxrNjRfdAliID0gc3RhcnQ7CisJaW50CWNfcmF0aW87CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKCFtYXApCisJCW1hcCA9IGZzLT5ibG9ja19tYXA7CisJaWYgKCFtYXApCisJCXJldHVybiBFWFQyX0VUX05PX0JMT0NLX0JJVE1BUDsKKwlpZiAoIWIpCisJCWIgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlpZiAoIWZpbmlzaCkKKwkJZmluaXNoID0gc3RhcnQ7CisJaWYgKCFudW0pCisJCW51bSA9IDE7CisJY19yYXRpbyA9IDEgPDwgZXh0MmZzX2dldF9iaXRtYXBfZ3JhbnVsYXJpdHkobWFwKTsKKwliICY9IH4oY19yYXRpbyAtIDEpOworCWZpbmlzaCAmPSB+KGNfcmF0aW8gLTEpOworCWRvIHsKKwkJaWYgKGIgKyBudW0gLSAxID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkgeworCQkJaWYgKGZpbmlzaCA+IHN0YXJ0KQorCQkJCXJldHVybiBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUw7CisJCQliID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJCX0KKwkJaWYgKGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlMihtYXAsIGIsIG51bSkpIHsKKwkJCSpyZXQgPSBiOworCQkJcmV0dXJuIDA7CisJCX0KKwkJYiArPSBjX3JhdGlvOworCX0gd2hpbGUgKGIgIT0gZmluaXNoKTsKKwlyZXR1cm4gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2dldF9mcmVlX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgYmxrX3Qgc3RhcnQsIGJsa190IGZpbmlzaCwKKwkJCQkgaW50IG51bSwgZXh0MmZzX2Jsb2NrX2JpdG1hcCBtYXAsIGJsa190ICpyZXQpCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlibGs2NF90IHZhbDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzMihmcywgc3RhcnQsIGZpbmlzaCwgbnVtLCBtYXAsICZ2YWwpOworCWlmKCFyZXR2YWwpCisJCSpyZXQgPSAoYmxrX3QpIHZhbDsKKwlyZXR1cm4gcmV0dmFsOworfQorCit2b2lkIGV4dDJmc19zZXRfYWxsb2NfYmxvY2tfY2FsbGJhY2soZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgICBlcnJjb2RlX3QgKCpmdW5jKShleHQyX2ZpbHN5cyBmcywKKwkJCQkJCSAgICAgICBibGs2NF90IGdvYWwsCisJCQkJCQkgICAgICAgYmxrNjRfdCAqcmV0KSwKKwkJCQkgICAgIGVycmNvZGVfdCAoKipvbGQpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkJICAgICAgIGJsazY0X3QgZ29hbCwKKwkJCQkJCSAgICAgICBibGs2NF90ICpyZXQpKQoreworCWlmICghZnMgfHwgZnMtPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUykKKwkJcmV0dXJuOworCisJaWYgKG9sZCkKKwkJKm9sZCA9IGZzLT5nZXRfYWxsb2NfYmxvY2s7CisKKwlmcy0+Z2V0X2FsbG9jX2Jsb2NrID0gZnVuYzsKK30KKworYmxrNjRfdCBleHQyZnNfZmluZF9pbm9kZV9nb2FsKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGJsazY0X3QgbGJsaykKK3sKKwlkZ3JwX3QJCQlncm91cDsKKwlfX3U4CQkJbG9nX2ZsZXg7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCWV4dDJfZXh0ZW50X2hhbmRsZV90CWhhbmRsZSA9IE5VTEw7CisJZXJyY29kZV90CQllcnI7CisKKwlpZiAoaW5vZGUgPT0gTlVMTCB8fCBleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MyKGZzLCBpbm9kZSkgPT0gMCkKKwkJZ290byBub19ibG9ja3M7CisKKwlpZiAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQlnb3RvIG5vX2Jsb2NrczsKKworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgeworCQllcnIgPSBleHQyZnNfZXh0ZW50X29wZW4yKGZzLCBpbm8sIGlub2RlLCAmaGFuZGxlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gbm9fYmxvY2tzOworCQllcnIgPSBleHQyZnNfZXh0ZW50X2dvdG8yKGhhbmRsZSwgMCwgbGJsayk7CisJCWlmIChlcnIpCisJCQlnb3RvIG5vX2Jsb2NrczsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULCAmZXh0ZW50KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gbm9fYmxvY2tzOworCQlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwkJcmV0dXJuIGV4dGVudC5lX3BibGsgKyAobGJsayAtIGV4dGVudC5lX2xibGspOworCX0KKworCS8qIGJsb2NrIG1hcHBlZCBmaWxlOyBzZWUgaWYgYmxvY2sgemVybyBpcyBtYXBwZWQ/ICovCisJaWYgKGlub2RlLT5pX2Jsb2NrWzBdKQorCQlyZXR1cm4gaW5vZGUtPmlfYmxvY2tbMF07CisKK25vX2Jsb2NrczoKKwlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwlsb2dfZmxleCA9IGZzLT5zdXBlci0+c19sb2dfZ3JvdXBzX3Blcl9mbGV4OworCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2lubyhmcywgaW5vKTsKKwlpZiAobG9nX2ZsZXgpCisJCWdyb3VwID0gZ3JvdXAgJiB+KCgxIDw8IChsb2dfZmxleCkpIC0gMSk7CisJcmV0dXJuIGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGdyb3VwKTsKK30KKworLyoKKyAqIFN0YXJ0aW5nIGF0IF9nb2FsXywgc2NhbiBhcm91bmQgdGhlIGZpbGVzeXN0ZW0gdG8gZmluZCBhIHJ1biBvZiBmcmVlIGJsb2NrcworICogdGhhdCdzIGF0IGxlYXN0IF9sZW5fIGJsb2NrcyBsb25nLiAgUG9zc2libGUgZmxhZ3M6CisgKiAtIEVYVDJfTkVXUkFOR0VfRVhBQ1RfR09BTDogVGhlIHJhbmdlIG9mIGJsb2NrcyBtdXN0IHN0YXJ0IGF0IF9nb2FsXy4KKyAqIC0gRVhUMl9ORVdSQU5HRV9NSU5fTEVOR1RIOiBkbyBub3QgcmV0dXJuIGEgYWxsb2NhdGlvbiBzaG9ydGVyIHRoYW4gX2xlbl8uCisgKiAtIEVYVDJfTkVXUkFOR0VfWkVST19CTE9DS1M6IFplcm8gYmxvY2tzIHBibGsgdG8gcGJsaytwbGVuIGJlZm9yZSByZXR1cm5pbmcuCisgKgorICogVGhlIHN0YXJ0aW5nIGJsb2NrIGlzIHJldHVybmVkIGluIF9wYmxrXyBhbmQgdGhlIGxlbmd0aCBpcyByZXR1cm5lZCB2aWEKKyAqIF9wbGVuXy4gIFRoZSBibG9ja3MgYXJlIG5vdCBtYXJrZWQgaW4gdGhlIGJpdG1hcDsgdGhlIGNhbGxlciBtdXN0IG1hcmsKKyAqIGhvd2V2ZXIgbXVjaCBvZiB0aGUgcmV0dXJuZWQgcnVuIHRoZXkgYWN0dWFsbHkgdXNlLCBob3BlZnVsbHkgdmlhCisgKiBleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2UoKS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSByYW5nZSB0aGF0IGlzIGxvbmdlciB0aGFuIHdoYXQgd2FzIHJlcXVlc3RlZC4KKyAqLworZXJyY29kZV90IGV4dDJmc19uZXdfcmFuZ2UoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgYmxrNjRfdCBnb2FsLAorCQkJICAgYmxrNjRfdCBsZW4sIGV4dDJmc19ibG9ja19iaXRtYXAgbWFwLCBibGs2NF90ICpwYmxrLAorCQkJICAgYmxrNjRfdCAqcGxlbikKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWJsazY0X3Qgc3RhcnQsIGVuZCwgYjsKKwlpbnQgbG9vcGVkID0gMDsKKwlibGs2NF90IG1heF9ibG9ja3MgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJZXJyY29kZV90ICgqbnJmKShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkgYmxrNjRfdCBsZW4sIGJsazY0X3QgKnBibGssIGJsazY0X3QgKnBsZW4pOworCisJZGJnX3ByaW50ZigiJXM6IGZsYWdzPTB4JXggZ29hbD0lbGx1IGxlbj0lbGx1XG4iLCBfX2Z1bmNfXywgZmxhZ3MsCisJCSAgIGdvYWwsIGxlbik7CisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKwlpZiAobGVuID09IDAgfHwgKGZsYWdzICYgfkVYVDJfTkVXUkFOR0VfQUxMX0ZMQUdTKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmICghbWFwICYmIGZzLT5uZXdfcmFuZ2UpIHsKKwkJLyoKKwkJICogSW4gY2FzZSB0aGVyZSBhcmUgY2xpZW50cyBvdXQgdGhlcmUgd2hvc2UgbmV3X3JhbmdlCisJCSAqIGhhbmRsZXJzIGNhbGwgZXh0MmZzX25ld19yYW5nZSB3aXRoIGEgTlVMTCBibG9jayBtYXAsCisJCSAqIHRlbXBvcmFyaWx5IHN3YXAgb3V0IHRoZSBmdW5jdGlvbiBwb2ludGVyIHNvIHRoYXQgd2UgZG9uJ3QKKwkJICogZW5kIHVwIGluIGFuIGluZmluaXRlIGxvb3AuCisJCSAqLworCQlucmYgPSBmcy0+bmV3X3JhbmdlOworCQlmcy0+bmV3X3JhbmdlID0gTlVMTDsKKwkJcmV0dmFsID0gbnJmKGZzLCBmbGFncywgZ29hbCwgbGVuLCBwYmxrLCBwbGVuKTsKKwkJZnMtPm5ld19yYW5nZSA9IG5yZjsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCXN0YXJ0ID0gKnBibGs7CisJCWVuZCA9ICpwYmxrICsgKnBsZW47CisJCWdvdG8gYWxsb2NhdGVkOworCX0KKwlpZiAoIW1hcCkKKwkJbWFwID0gZnMtPmJsb2NrX21hcDsKKwlpZiAoIW1hcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQkxPQ0tfQklUTUFQOworCWlmICghZ29hbCB8fCBnb2FsID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJZ29hbCA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCisJc3RhcnQgPSBnb2FsOworCXdoaWxlICghbG9vcGVkIHx8IHN0YXJ0IDw9IGdvYWwpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKG1hcCwgc3RhcnQsCisJCQkJCQkJICAgICAgbWF4X2Jsb2NrcyAtIDEsCisJCQkJCQkJICAgICAgJnN0YXJ0KTsKKwkJaWYgKHJldHZhbCA9PSBFTk9FTlQpIHsKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBhcmUgbm8gZnJlZSBibG9ja3MgYmV5b25kIHRoZSBzdGFydGluZworCQkJICogcG9pbnQsIHRyeSBzY2FubmluZyB0aGUgd2hvbGUgZmlsZXN5c3RlbSwgdW5sZXNzIHRoZQorCQkJICogdXNlciB0b2xkIHVzIG9ubHkgdG8gYWxsb2NhdGUgZnJvbSBfZ29hbF8sIG9yIGlmCisJCQkgKiB3ZSdyZSBhbHJlYWR5IHNjYW5uaW5nIHRoZSB3aG9sZSBmaWxlc3lzdGVtLgorCQkJICovCisJCQlpZiAoZmxhZ3MgJiBFWFQyX05FV1JBTkdFX0ZJWEVEX0dPQUwgfHwKKwkJCSAgICBzdGFydCA9PSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykKKwkJCQlnb3RvIGZhaWw7CisJCQlzdGFydCA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCQkJY29udGludWU7CisJCX0gZWxzZSBpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisKKwkJaWYgKGZsYWdzICYgRVhUMl9ORVdSQU5HRV9GSVhFRF9HT0FMICYmIHN0YXJ0ICE9IGdvYWwpCisJCQlnb3RvIGZhaWw7CisKKwkJYiA9IG1pbihzdGFydCArIGxlbiAtIDEsIG1heF9ibG9ja3MgLSAxKTsKKwkJcmV0dmFsID0gIGV4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKG1hcCwgc3RhcnQsIGIsCisJCQkJCQkJICAgICAgJmVuZCk7CisJCWlmIChyZXR2YWwgPT0gRU5PRU5UKQorCQkJZW5kID0gYiArIDE7CisJCWVsc2UgaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCisJCWlmICghKGZsYWdzICYgRVhUMl9ORVdSQU5HRV9NSU5fTEVOR1RIKSB8fAorCQkgICAgKGVuZCAtIHN0YXJ0KSA+PSBsZW4pIHsKKwkJCS8qIFN1Y2Nlc3MhICovCisJCQkqcGJsayA9IHN0YXJ0OworCQkJKnBsZW4gPSBlbmQgLSBzdGFydDsKKwkJCWRiZ19wcmludGYoIiVzOiBuZXdfcmFuZ2UgZ29hbD0lbGx1LS0lbGx1ICIKKwkJCQkgICAiYmxrPSVsbHUtLSVsbHUgJWxsdVxuIiwKKwkJCQkgICBfX2Z1bmNfXywgZ29hbCwgZ29hbCArIGxlbiAtIDEsCisJCQkJICAgKnBibGssICpwYmxrICsgKnBsZW4gLSAxLCAqcGxlbik7CithbGxvY2F0ZWQ6CisJCQlmb3IgKGIgPSBzdGFydDsgYiA8IGVuZDsKKwkJCSAgICAgYiArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cCkKKwkJCQlleHQyZnNfY2xlYXJfYmxvY2tfdW5pbml0KGZzLAorCQkJCQkJZXh0MmZzX2dyb3VwX29mX2JsazIoZnMsIGIpKTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJaWYgKGZsYWdzICYgRVhUMl9ORVdSQU5HRV9GSVhFRF9HT0FMKQorCQkJZ290byBmYWlsOworCQlzdGFydCA9IGVuZDsKKwkJaWYgKHN0YXJ0ID49IG1heF9ibG9ja3MpIHsKKwkJCWlmIChsb29wZWQpCisJCQkJZ290byBmYWlsOworCQkJbG9vcGVkID0gMTsKKwkJCXN0YXJ0ID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJCX0KKwl9CisKK2ZhaWw6CisJcmV0dmFsID0gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMOworZXJyb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisKK3ZvaWQgZXh0MmZzX3NldF9uZXdfcmFuZ2VfY2FsbGJhY2soZXh0Ml9maWxzeXMgZnMsCisJZXJyY29kZV90ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgYmxrNjRfdCBnb2FsLAorCQkJICAgICAgIGJsazY0X3QgbGVuLCBibGs2NF90ICpwYmxrLCBibGs2NF90ICpwbGVuKSwKKwllcnJjb2RlX3QgKCoqb2xkKShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkgICAgICAgYmxrNjRfdCBsZW4sIGJsazY0X3QgKnBibGssIGJsazY0X3QgKnBsZW4pKQoreworCWlmICghZnMgfHwgZnMtPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUykKKwkJcmV0dXJuOworCisJaWYgKG9sZCkKKwkJKm9sZCA9IGZzLT5uZXdfcmFuZ2U7CisKKwlmcy0+bmV3X3JhbmdlID0gZnVuYzsKK30KKworZXJyY29kZV90IGV4dDJmc19hbGxvY19yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkgICAgIGJsa190IGxlbiwgYmxrNjRfdCAqcmV0KQoreworCWludCBuZXdyX2ZsYWdzID0gRVhUMl9ORVdSQU5HRV9NSU5fTEVOR1RIOworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCBwbGVuOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKwlpZiAobGVuID09IDAgfHwgKGZsYWdzICYgfkVYVDJfQUxMT0NSQU5HRV9BTExfRkxBR1MpKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJaWYgKGZsYWdzICYgRVhUMl9BTExPQ1JBTkdFX0ZJWEVEX0dPQUwpCisJCW5ld3JfZmxhZ3MgfD0gRVhUMl9ORVdSQU5HRV9GSVhFRF9HT0FMOworCisJcmV0dmFsID0gZXh0MmZzX25ld19yYW5nZShmcywgbmV3cl9mbGFncywgZ29hbCwgbGVuLCBOVUxMLCByZXQsICZwbGVuKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKHBsZW4gPCBsZW4pCisJCXJldHVybiBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUw7CisKKwlpZiAoZmxhZ3MgJiBFWFQyX0FMTE9DUkFOR0VfWkVST19CTE9DS1MpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgKnJldCwgbGVuLCBOVUxMLCBOVUxMKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlKGZzLCAqcmV0LCBsZW4sICsxKTsKKwlyZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYWxsb2Nfc2IuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jX3NiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUzMGI0MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jX3NiLmMKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIGFsbG9jX3NiLmMgLS0tIEFsbG9jYXRlIHRoZSBzdXBlcmJsb2NrIGFuZCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBmb3IgYQorICogbmV3bHkgaW5pdGlhbGl6ZWQgZmlsZXN5c3RlbS4gIFVzZWQgYnkgbWtlMmZzIHdoZW4gaW5pdGlhbGl6aW5nIGEgZmlsZXN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMjAwMyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisvKgorICogVGhpcyBmdW5jdGlvbiByZXNlcnZlcyB0aGUgc3VwZXJibG9jayBhbmQgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMKKyAqIGZvciBhIGdpdmVuIGJsb2NrIGdyb3VwLiAgSXQgY3VycmVudGx5IHJldHVybnMgdGhlIG51bWJlciBvZiBmcmVlCisgKiBibG9ja3MgYXNzdW1pbmcgdGhhdCBpbm9kZSB0YWJsZSBhbmQgYWxsb2NhdGlvbiBiaXRtYXBzIHdpbGwgYmUgaW4KKyAqIHRoZSBncm91cC4gIFRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IHRoZSBjYXNlIHdoZW4gdGhlIGZsZXhfYmcKKyAqIGZlYXR1cmUgaXMgZW5hYmxlZCwgc28gY2FsbGVycyBzaG91bGQgdGFrZSBjYXJlISAgSXQgd2FzIG9ubHkKKyAqIHJlYWxseSBpbnRlbmRlZCBmb3IgdXNlIGJ5IG1rZTJmcywgYW5kIGV2ZW4gdGhlcmUgaXQncyBub3QgdGhhdAorICogdXNlZnVsLiAgSW4gdGhlIGZ1dHVyZSwgd2hlbiB3ZSByZWRvIHRoaXMgZnVuY3Rpb24gZm9yIDY0LWJpdCBibG9jaworICogbnVtYmVycywgd2Ugc2hvdWxkIHByb2JhYmx5IHJldHVybiB0aGUgbnVtYmVyIG9mIGJsb2NrcyB1c2VkIGJ5IHRoZQorICogc3VwZXIgYmxvY2sgYW5kIGdyb3VwIGRlc2NyaXB0b3JzIGluc3RlYWQuCisgKgorICogU2VlIGFsc28gdGhlIGNvbW1lbnQgZm9yIGV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYygpCisgKi8KK2ludCBleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGV4dDJfZmlsc3lzIGZzLAorCQkJCSBkZ3JwX3QgZ3JvdXAsCisJCQkJIGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCkKK3sKKwlibGs2NF90CXN1cGVyX2Jsaywgb2xkX2Rlc2NfYmxrLCBuZXdfZGVzY19ibGs7CisJYmxrX3QJdXNlZF9ibGtzOworCWludAlvbGRfZGVzY19ibG9ja3MsIG51bV9ibG9ja3M7CisKKwlleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MyKGZzLCBncm91cCwgJnN1cGVyX2JsaywKKwkJCQkgICZvbGRfZGVzY19ibGssICZuZXdfZGVzY19ibGssICZ1c2VkX2Jsa3MpOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikpCisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCWVsc2UKKwkJb2xkX2Rlc2NfYmxvY2tzID0KKwkJCWZzLT5kZXNjX2Jsb2NrcyArIGZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJaWYgKHN1cGVyX2JsayB8fCAoZ3JvdXAgPT0gMCkpCisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgc3VwZXJfYmxrKTsKKwlpZiAoKGdyb3VwID09IDApICYmIChmcy0+YmxvY2tzaXplID09IDEwMjQpICYmCisJICAgIEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSA+IDEpCisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgMCk7CisKKwlpZiAob2xkX2Rlc2NfYmxrKSB7CisJCW51bV9ibG9ja3MgPSBvbGRfZGVzY19ibG9ja3M7CisJCWlmIChvbGRfZGVzY19ibGsgKyBudW1fYmxvY2tzID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJCW51bV9ibG9ja3MgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkJCW9sZF9kZXNjX2JsazsKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihibWFwLCBvbGRfZGVzY19ibGssIG51bV9ibG9ja3MpOworCX0KKwlpZiAobmV3X2Rlc2NfYmxrKQorCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIG5ld19kZXNjX2Jsayk7CisKKwludW1fYmxvY2tzID0gZXh0MmZzX2dyb3VwX2Jsb2Nrc19jb3VudChmcywgZ3JvdXApOworCW51bV9ibG9ja3MgLT0gMiArIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICsgdXNlZF9ibGtzOworCisJcmV0dXJuIG51bV9ibG9ja3MgIDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jX3N0YXRzLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9hbGxvY19zdGF0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDlmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9hbGxvY19zdGF0cy5jCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogYWxsb2Nfc3RhdHMuYyAtLS0gVXBkYXRlIGFsbG9jYXRpb24gc3RhdGlzdGljcyBmb3IgZXh0MmZzCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKwordm9pZCBleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBpbnQgaW51c2UsIGludCBpc2RpcikKK3sKKwlpbnQJZ3JvdXAgPSBleHQyZnNfZ3JvdXBfb2ZfaW5vKGZzLCBpbm8pOworCisJaWYgKGlubyA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpIHsKKyNpZm5kZWYgT01JVF9DT01fRVJSCisJCWNvbV9lcnIoImV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIiLCAwLAorCQkJIklsbGVnYWwgaW5vZGUgbnVtYmVyOiAlbHUiLCAodW5zaWduZWQgbG9uZykgaW5vKTsKKyNlbmRpZgorCQlyZXR1cm47CisJfQorCWlmIChpbnVzZSA+IDApCisJCWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoZnMtPmlub2RlX21hcCwgaW5vKTsKKwllbHNlCisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpbm8pOworCWV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXQoZnMsIGdyb3VwLCBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGdyb3VwKSAtIGludXNlKTsKKwlpZiAoaXNkaXIpCisJCWV4dDJmc19iZ191c2VkX2RpcnNfY291bnRfc2V0KGZzLCBncm91cCwgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudChmcywgZ3JvdXApICsgaW51c2UpOworCisJLyogV2UgZG9uJ3Qgc3RyaWN0bHkgbmVlZCB0byBiZSBjbGVhcmluZyB0aGUgdW5pbml0IGZsYWcgaWYgaW51c2UgPCAwCisJICogKGkuZS4gZnJlZWluZyBpbm9kZXMpIGJ1dCBpdCBhbHNvIG1lYW5zIHNvbWV0aGluZyBpcyBiYWQuICovCisJZXh0MmZzX2JnX2ZsYWdzX2NsZWFyKGZzLCBncm91cCwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCWlmIChleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpIHsKKwkJZXh0Ml9pbm9fdCBmaXJzdF91bnVzZWRfaW5vZGUgPQlmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAtCisJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgZ3JvdXApICsKKwkJCWdyb3VwICogZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgKyAxOworCisJCWlmIChpbm8gPj0gZmlyc3RfdW51c2VkX2lub2RlKQorCQkJZXh0MmZzX2JnX2l0YWJsZV91bnVzZWRfc2V0KGZzLCBncm91cCwgZ3JvdXAgKiBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCArIGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwIC0gaW5vKTsKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKwl9CisKKwlmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQgLT0gaW51c2U7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCWV4dDJmc19tYXJrX2liX2RpcnR5KGZzKTsKK30KKwordm9pZCBleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBpbnQgaW51c2UpCit7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCBpbnVzZSwgMCk7Cit9CisKK3ZvaWQgZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibGssIGludCBpbnVzZSkKK3sKKwlpbnQJZ3JvdXAgPSBleHQyZnNfZ3JvdXBfb2ZfYmxrMihmcywgYmxrKTsKKworCWlmIChibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSB7CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCQljb21fZXJyKCJleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMiLCAwLAorCQkJIklsbGVnYWwgYmxvY2sgbnVtYmVyOiAlbHUiLCAodW5zaWduZWQgbG9uZykgYmxrKTsKKyNlbmRpZgorCQlyZXR1cm47CisJfQorCWlmIChpbnVzZSA+IDApCisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgYmxrKTsKKwllbHNlCisJCWV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBibGspOworCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIGdyb3VwLCBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGdyb3VwKSAtIGludXNlKTsKKwlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGdyb3VwLCBFWFQyX0JHX0JMT0NLX1VOSU5JVCk7CisJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKworCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9hZGQoZnMtPnN1cGVyLAorCQkJICAgICAtaW51c2UgKiAoYmxrNjRfdCkgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpKTsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCWlmIChmcy0+YmxvY2tfYWxsb2Nfc3RhdHMpCisJCShmcy0+YmxvY2tfYWxsb2Nfc3RhdHMpKGZzLCAoYmxrNjRfdCkgYmxrLCBpbnVzZSk7Cit9CisKK3ZvaWQgZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGssIGludCBpbnVzZSkKK3sKKwlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBibGssIGludXNlKTsKK30KKwordm9pZCBleHQyZnNfc2V0X2Jsb2NrX2FsbG9jX3N0YXRzX2NhbGxiYWNrKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICB2b2lkICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkJYmxrNjRfdCBibGssCisJCQkJCQkJaW50IGludXNlKSwKKwkJCQkJICAgdm9pZCAoKipvbGQpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkJCWJsazY0X3QgYmxrLAorCQkJCQkJCWludCBpbnVzZSkpCit7CisJaWYgKCFmcyB8fCBmcy0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKQorCQlyZXR1cm47CisJaWYgKG9sZCkKKwkJKm9sZCA9IGZzLT5ibG9ja19hbGxvY19zdGF0czsKKworCWZzLT5ibG9ja19hbGxvY19zdGF0cyA9IGZ1bmM7Cit9CisKK3ZvaWQgZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywKKwkJCQkgICAgYmxrX3QgbnVtLCBpbnQgaW51c2UpCit7CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCWlmIChibGsgKyBudW0gPiBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpIHsKKwkJY29tX2VycigiZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlIiwgMCwKKwkJCSJJbGxlZ2FsIGJsb2NrIHJhbmdlOiAlbGx1ICgldSkgIiwKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIGJsaywgbnVtKTsKKwkJcmV0dXJuOworCX0KKyNlbmRpZgorCWlmIChpbnVzZSA9PSAwKQorCQlyZXR1cm47CisJaWYgKGludXNlID4gMCkgeworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGZzLT5ibG9ja19tYXAsIGJsaywgbnVtKTsKKwkJaW51c2UgPSAxOworCX0gZWxzZSB7CisJCWV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihmcy0+YmxvY2tfbWFwLCBibGssIG51bSk7CisJCWludXNlID0gLTE7CisJfQorCXdoaWxlIChudW0pIHsKKwkJaW50IGdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIoZnMsIGJsayk7CisJCWJsazY0X3QgbGFzdF9ibGsgPSBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jazIoZnMsIGdyb3VwKTsKKwkJYmxrNjRfdCBuID0gbnVtOworCisJCWlmIChibGsgKyBudW0gPiBsYXN0X2JsaykKKwkJCW4gPSBsYXN0X2JsayAtIGJsayArIDE7CisKKwkJZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcywgZ3JvdXAsCisJCQlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGdyb3VwKSAtCisJCQlpbnVzZSpuL0VYVDJGU19DTFVTVEVSX1JBVElPKGZzKSk7CisJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3JvdXAsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKTsKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKwkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X2FkZChmcy0+c3VwZXIsIC1pbnVzZSAqIChibGs2NF90KSBuKTsKKwkJYmxrICs9IG47CisJCW51bSAtPSBuOworCX0KKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCWlmIChmcy0+YmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2UpCisJCShmcy0+YmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2UpKGZzLCBibGssIG51bSwgaW51c2UpOworfQorCit2b2lkIGV4dDJmc19zZXRfYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2VfY2FsbGJhY2soZXh0Ml9maWxzeXMgZnMsCisJdm9pZCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywKKwkJCQkgICAgYmxrX3QgbnVtLCBpbnQgaW51c2UpLAorCXZvaWQgKCoqb2xkKShleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibGssCisJCQkJICAgIGJsa190IG51bSwgaW50IGludXNlKSkKK3sKKwlpZiAoIWZzIHx8IGZzLT5tYWdpYyAhPSBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpCisJCXJldHVybjsKKwlpZiAob2xkKQorCQkqb2xkID0gZnMtPmJsb2NrX2FsbG9jX3N0YXRzX3JhbmdlOworCisJZnMtPmJsb2NrX2FsbG9jX3N0YXRzX3JhbmdlID0gZnVuYzsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jX3RhYmxlcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYWxsb2NfdGFibGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwYjE1YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2FsbG9jX3RhYmxlcy5jCkBAIC0wLDAgKzEsMjU4IEBACisvKgorICogYWxsb2NfdGFibGVzLmMgLS0tIEFsbG9jYXRlIHRhYmxlcyBmb3IgYSBuZXdseSBpbml0aWFsaXplZAorICogZmlsZXN5c3RlbS4gIFVzZWQgYnkgbWtlMmZzIHdoZW4gaW5pdGlhbGl6aW5nIGEgZmlsZXN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworLyoKKyAqIFRoaXMgcm91dGluZSBzZWFyY2hlcyBmb3IgZnJlZSBibG9ja3MgdGhhdCBjYW4gYWxsb2NhdGUgYSBmdWxsCisgKiBncm91cCBvZiBiaXRtYXBzIG9yIGlub2RlIHRhYmxlcyBmb3IgYSBmbGV4YmcgZ3JvdXAuICBSZXR1cm5zIHRoZQorICogYmxvY2sgbnVtYmVyIHdpdGggYSBjb3JyZWN0IG9mZnNldCB3ZXJlIHRoZSBiaXRtYXBzIGFuZCBpbm9kZQorICogdGFibGVzIGNhbiBiZSBhbGxvY2F0ZWQgY29udGlub3VzbHkgYW5kIGluIG9yZGVyLgorICovCitzdGF0aWMgYmxrNjRfdCBmbGV4Ymdfb2Zmc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsIGJsazY0X3Qgc3RhcnRfYmxrLAorCQkJICAgICBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAsIGludCByZW1fZ3JwLAorCQkJICAgICBpbnQgZWxlbV9zaXplKQoreworCWludAkJZmxleGJnLCBmbGV4Ymdfc2l6ZSwgc2l6ZTsKKwlibGs2NF90CQlsYXN0X2JsaywgZmlyc3RfZnJlZSA9IDA7CisJZGdycF90CSAgICAgICAJbGFzdF9ncnA7CisKKwlmbGV4Ymdfc2l6ZSA9IDEgPDwgZnMtPnN1cGVyLT5zX2xvZ19ncm91cHNfcGVyX2ZsZXg7CisJZmxleGJnID0gZ3JvdXAgLyBmbGV4Ymdfc2l6ZTsKKwlzaXplID0gcmVtX2dycCAqIGVsZW1fc2l6ZTsKKworCWlmIChzaXplID4gKGludCkgKGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwIC8gNCkpCisJCXNpemUgPSAoaW50KSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cCAvIDQ7CisKKwkvKgorCSAqIERvbid0IGRvIGEgbG9uZyBzZWFyY2ggaWYgdGhlIHByZXZpb3VzIGJsb2NrIHNlYXJjaCBpcyBzdGlsbCB2YWxpZCwKKwkgKiBidXQgc2tpcCBtaW5vciBvYnN0cnVjdGlvbnMgc3VjaCBhcyBncm91cCBkZXNjcmlwdG9yIGJhY2t1cHMuCisJICovCisJaWYgKHN0YXJ0X2JsayAmJiBzdGFydF9ibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgJiYKKwkgICAgZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIHN0YXJ0X2Jsaywgc3RhcnRfYmxrICsgc2l6ZSwgZWxlbV9zaXplLAorCQkJCSAgICBibWFwLCAmZmlyc3RfZnJlZSkgPT0gMCkKKwkJcmV0dXJuIGZpcnN0X2ZyZWU7CisKKwlzdGFydF9ibGsgPSBleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGZzLCBmbGV4Ymdfc2l6ZSAqIGZsZXhiZyk7CisJbGFzdF9ncnAgPSBncm91cCB8IChmbGV4Ymdfc2l6ZSAtIDEpOworCWlmIChsYXN0X2dycCA+IGZzLT5ncm91cF9kZXNjX2NvdW50LTEpCisJCWxhc3RfZ3JwID0gZnMtPmdyb3VwX2Rlc2NfY291bnQtMTsKKwlsYXN0X2JsayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgbGFzdF9ncnApOworCisJLyogRmluZCB0aGUgZmlyc3QgYXZhaWxhYmxlIGJsb2NrICovCisJaWYgKGV4dDJmc19nZXRfZnJlZV9ibG9ja3MyKGZzLCBzdGFydF9ibGssIGxhc3RfYmxrLCBzaXplLAorCQkJCSAgICBibWFwLCAmZmlyc3RfZnJlZSkgPT0gMCkKKwkJcmV0dXJuIGZpcnN0X2ZyZWU7CisKKwlpZiAoZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIHN0YXJ0X2JsaywgbGFzdF9ibGssIGVsZW1fc2l6ZSwKKwkJCQkgICBibWFwLCAmZmlyc3RfZnJlZSkgPT0gMCkKKwkJcmV0dXJuIGZpcnN0X2ZyZWU7CisKKwlpZiAoZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIDAsIGxhc3RfYmxrLCBlbGVtX3NpemUsIGJtYXAsCisJCQkJICAgICZmaXJzdF9mcmVlKSA9PSAwKQorCQlyZXR1cm4gZmlyc3RfZnJlZTsKKworCXJldHVybiBmaXJzdF9mcmVlOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX2dyb3VwX3RhYmxlKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJICAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJZ3JvdXBfYmxrLCBzdGFydF9ibGssIGxhc3RfYmxrLCBuZXdfYmxrOworCWRncnBfdAkJbGFzdF9ncnAgPSAwOworCWludAkJcmVtX2dycHMgPSAwLCBmbGV4Ymdfc2l6ZSA9IDAsIHRhYmxlX29mZnNldCA9IDA7CisKKwlncm91cF9ibGsgPSBleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGZzLCBncm91cCk7CisJbGFzdF9ibGsgPSBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jazIoZnMsIGdyb3VwKTsKKworCWlmICghYm1hcCkKKwkJYm1hcCA9IGZzLT5ibG9ja19tYXA7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZsZXhfYmcoZnMtPnN1cGVyKSAmJgorCSAgICBmcy0+c3VwZXItPnNfbG9nX2dyb3Vwc19wZXJfZmxleCkgeworCQlmbGV4Ymdfc2l6ZSA9IDEgPDwgZnMtPnN1cGVyLT5zX2xvZ19ncm91cHNfcGVyX2ZsZXg7CisJCWxhc3RfZ3JwID0gZ3JvdXAgfCAoZmxleGJnX3NpemUgLSAxKTsKKwkJaWYgKGxhc3RfZ3JwID4gZnMtPmdyb3VwX2Rlc2NfY291bnQtMSkKKwkJCWxhc3RfZ3JwID0gZnMtPmdyb3VwX2Rlc2NfY291bnQtMTsKKwkJcmVtX2dycHMgPSBsYXN0X2dycCAtIGdyb3VwICsgMTsKKwl9CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBibG9jayBhbmQgaW5vZGUgYml0bWFwcywgaWYgbmVjZXNzYXJ5CisJICovCisJaWYgKGZzLT5zdHJpZGUpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIGdyb3VwX2JsaywgbGFzdF9ibGssCisJCQkJCQkgMSwgYm1hcCwgJnN0YXJ0X2Jsayk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlzdGFydF9ibGsgKz0gZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCXN0YXJ0X2JsayArPSAoKGZzLT5zdHJpZGUgKiBncm91cCkgJQorCQkJICAgICAgKGxhc3RfYmxrIC0gc3RhcnRfYmxrICsgMSkpOworCQlpZiAoc3RhcnRfYmxrID49IGxhc3RfYmxrKQorCQkJc3RhcnRfYmxrID0gZ3JvdXBfYmxrOworCX0gZWxzZQorCQlzdGFydF9ibGsgPSBncm91cF9ibGs7CisKKwlpZiAoZmxleGJnX3NpemUpIHsKKwkJYmxrNjRfdCBwcmV2X2Jsb2NrID0gMDsKKworCQl0YWJsZV9vZmZzZXQgPSBmbGV4Ymdfc2l6ZTsKKwkJaWYgKGdyb3VwICUgZmxleGJnX3NpemUpCisJCQlwcmV2X2Jsb2NrID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGdyb3VwIC0gMSkgKyAxOworCQllbHNlIGlmIChsYXN0X2dycCA9PSBmcy0+Z3JvdXBfZGVzY19jb3VudC0xKSB7CisJCQkvKgorCQkJICogSWYgd2UgYXJlIGFsbG9jYXRpbmcgZm9yIHRoZSBsYXN0IGZsZXhfYmcKKwkJCSAqIGtlZXAgdGhlIG1ldGFkYXRhIHRhYmxlcyBjb250aWd1b3VzCisJCQkgKi8KKwkJCXRhYmxlX29mZnNldCA9IGxhc3RfZ3JwICYgKGZsZXhiZ19zaXplIC0gMSk7CisJCQlpZiAodGFibGVfb2Zmc2V0ID09IDApCisJCQkJdGFibGVfb2Zmc2V0ID0gZmxleGJnX3NpemU7CisJCQllbHNlCisJCQkJdGFibGVfb2Zmc2V0Kys7CisJCX0KKwkJLyogRklYTUU6IFRha2UgYmFja3VwIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIGludG8gYWNjb3VudAorCQkgKiBpZiB0aGUgZmxleGJnIGFsbG9jYXRpb25zIHdpbGwgZ3JvdyB0byBvdmVybGFwIHRoZW0uLi4gKi8KKwkJc3RhcnRfYmxrID0gZmxleGJnX29mZnNldChmcywgZ3JvdXAsIHByZXZfYmxvY2ssIGJtYXAsCisJCQkJCSAgcmVtX2dycHMsIDEpOworCQlsYXN0X2JsayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgbGFzdF9ncnApOworCX0KKworCWlmICghZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGdyb3VwKSkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzMihmcywgc3RhcnRfYmxrLCBsYXN0X2JsaywKKwkJCQkJCSAxLCBibWFwLCAmbmV3X2Jsayk7CisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMKQorCQkJcmV0dmFsID0gZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIGdyb3VwX2JsaywKKwkJCQkJbGFzdF9ibGssIDEsIGJtYXAsICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgbmV3X2Jsayk7CisJCWV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChmcywgZ3JvdXAsIG5ld19ibGspOworCQlpZiAoZmxleGJnX3NpemUpIHsKKwkJCWRncnBfdCBnciA9IGV4dDJmc19ncm91cF9vZl9ibGsyKGZzLCBuZXdfYmxrKTsKKwkJCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIGdyLCBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGdyKSAtIDEpOworCQkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X2FkZChmcy0+c3VwZXIsIC0xKTsKKwkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3IsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKTsKKwkJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncik7CisJCX0KKwl9CisKKwlpZiAoZmxleGJnX3NpemUpIHsKKwkJYmxrNjRfdCBwcmV2X2Jsb2NrID0gMDsKKwkJaWYgKGdyb3VwICUgZmxleGJnX3NpemUpCisJCQlwcmV2X2Jsb2NrID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGdyb3VwIC0gMSkgKyAxOworCQllbHNlCisJCQlwcmV2X2Jsb2NrID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGdyb3VwKSArCisJCQkJdGFibGVfb2Zmc2V0OworCQkvKiBGSVhNRTogVGFrZSBiYWNrdXAgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MgaW50byBhY2NvdW50CisJCSAqIGlmIHRoZSBmbGV4YmcgYWxsb2NhdGlvbnMgd2lsbCBncm93IHRvIG92ZXJsYXAgdGhlbS4uLiAqLworCQlzdGFydF9ibGsgPSBmbGV4Ymdfb2Zmc2V0KGZzLCBncm91cCwgcHJldl9ibG9jaywgYm1hcCwKKwkJCQkJICByZW1fZ3JwcywgMSk7CisJCWxhc3RfYmxrID0gZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGZzLCBsYXN0X2dycCk7CisJfQorCisJaWYgKCFleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgZ3JvdXApKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfZnJlZV9ibG9ja3MyKGZzLCBzdGFydF9ibGssIGxhc3RfYmxrLAorCQkJCQkJIDEsIGJtYXAsICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUwpCisJCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzMihmcywgZ3JvdXBfYmxrLAorCQkJCQkgbGFzdF9ibGssIDEsIGJtYXAsICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgbmV3X2Jsayk7CisJCWV4dDJmc19pbm9kZV9iaXRtYXBfbG9jX3NldChmcywgZ3JvdXAsIG5ld19ibGspOworCQlpZiAoZmxleGJnX3NpemUpIHsKKwkJCWRncnBfdCBnciA9IGV4dDJmc19ncm91cF9vZl9ibGsyKGZzLCBuZXdfYmxrKTsKKwkJCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIGdyLCBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGdyKSAtIDEpOworCQkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X2FkZChmcy0+c3VwZXIsIC0xKTsKKwkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgZ3IsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKTsKKwkJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncik7CisJCX0KKwl9CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBpbm9kZSB0YWJsZQorCSAqLworCWlmIChmbGV4Ymdfc2l6ZSkgeworCQlibGs2NF90IHByZXZfYmxvY2sgPSAwOworCisJCWlmIChncm91cCAlIGZsZXhiZ19zaXplKQorCQkJcHJldl9ibG9jayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGdyb3VwIC0gMSkgKworCQkJCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCQllbHNlCisJCQlwcmV2X2Jsb2NrID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGdyb3VwKSArCisJCQkJdGFibGVfb2Zmc2V0OworCisJCS8qIEZJWE1FOiBUYWtlIGJhY2t1cCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyBpbnRvIGFjY291bnQKKwkJICogaWYgdGhlIGZsZXhiZyBhbGxvY2F0aW9ucyB3aWxsIGdyb3cgdG8gb3ZlcmxhcCB0aGVtLi4uICovCisJCWdyb3VwX2JsayA9IGZsZXhiZ19vZmZzZXQoZnMsIGdyb3VwLCBwcmV2X2Jsb2NrLCBibWFwLAorCQkJCQkgIHJlbV9ncnBzLCBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisJCWxhc3RfYmxrID0gZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGZzLCBsYXN0X2dycCk7CisJfQorCisJaWYgKCFleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBncm91cCkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9mcmVlX2Jsb2NrczIoZnMsIGdyb3VwX2JsaywgbGFzdF9ibGssCisJCQkJCQlmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCwKKwkJCQkJCWJtYXAsICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWlmIChmbGV4Ymdfc2l6ZSkKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0c19yYW5nZShmcywgbmV3X2JsaywKKwkJCQkgICAgICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsICsxKTsKKwkJZWxzZQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihmcy0+YmxvY2tfbWFwLAorCQkJCQluZXdfYmxrLCBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisJCWV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KGZzLCBncm91cCwgbmV3X2Jsayk7CisJfQorCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBncm91cCk7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfdGFibGVzKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJZGdycF90CQlpOworCXN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgcHJvZ3Jlc3M7CisKKwlpZiAoZnMtPnByb2dyZXNzX29wcyAmJiBmcy0+cHJvZ3Jlc3Nfb3BzLT5pbml0KQorCQkoZnMtPnByb2dyZXNzX29wcy0+aW5pdCkoZnMsICZwcm9ncmVzcywgTlVMTCwKKwkJCQkJIGZzLT5ncm91cF9kZXNjX2NvdW50KTsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWlmIChmcy0+cHJvZ3Jlc3Nfb3BzICYmIGZzLT5wcm9ncmVzc19vcHMtPnVwZGF0ZSkKKwkJCShmcy0+cHJvZ3Jlc3Nfb3BzLT51cGRhdGUpKGZzLCAmcHJvZ3Jlc3MsIGkpOworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGUoZnMsIGksIGZzLT5ibG9ja19tYXApOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisJaWYgKGZzLT5wcm9ncmVzc19vcHMgJiYgZnMtPnByb2dyZXNzX29wcy0+Y2xvc2UpCisJCShmcy0+cHJvZ3Jlc3Nfb3BzLT5jbG9zZSkoZnMsICZwcm9ncmVzcywgTlVMTCk7CisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2F0ZXhpdC5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYXRleGl0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNiZTFkNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2F0ZXhpdC5jCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogYXRleGl0LmMgLS0tIENsZWFuIHRoaW5ncyB1cCB3aGVuIHdlIGV4aXQgbm9ybWFsbHkuCisgKgorICogQ29weXJpZ2h0IE9yYWNsZSwgMjAxNAorICogQXV0aG9yIERhcnJpY2sgSi4gV29uZyA8ZGFycmljay53b25nQG9yYWNsZS5jb20+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworc3RydWN0IGV4aXRfZGF0YSB7CisJZXh0Ml9leGl0X2ZuIGZ1bmM7CisJdm9pZCAqZGF0YTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZXhpdF9kYXRhICppdGVtczsKK3N0YXRpYyBzaXplX3QgbnJfaXRlbXM7CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9leGl0KHZvaWQpCit7CisJc3RydWN0IGV4aXRfZGF0YSAqZWQ7CisKKwlmb3IgKGVkID0gaXRlbXMgKyBucl9pdGVtcyAtIDE7IGVkID49IGl0ZW1zOyBlZC0tKSB7CisJCWlmIChlZC0+ZnVuYyA9PSBOVUxMKQorCQkJY29udGludWU7CisJCWVkLT5mdW5jKGVkLT5kYXRhKTsKKwl9CisKKwlleHQyZnNfZnJlZV9tZW0oJml0ZW1zKTsKKwlucl9pdGVtcyA9IDA7Cit9CisKKy8qCisgKiBTY2hlZHVsZSBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhdCAobm9ybWFsKSBwcm9ncmFtIHRlcm1pbmF0aW9uLgorICogSWYgeW91IHdhbnQgdGhpcyB0byBiZSBjYWxsZWQgZHVyaW5nIGEgc2lnbmFsIGV4aXQsIHlvdSBtdXN0IGNhcHR1cmUKKyAqIHRoZSBzaWduYWwgYW5kIGNhbGwgZXhpdCgpIHlvdXJzZWxmIQorICovCitlcnJjb2RlX3QgZXh0MmZzX2FkZF9leGl0X2ZuKGV4dDJfZXhpdF9mbiBmdW5jLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBleGl0X2RhdGEgKmVkLCAqZnJlZV9lZCA9IE5VTEw7CisJc2l6ZV90IHg7CisJZXJyY29kZV90IHJldDsKKworCWlmIChmdW5jID09IE5VTEwpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlmb3IgKHggPSAwLCBlZCA9IGl0ZW1zOyB4IDwgbnJfaXRlbXM7IHgrKywgZWQrKykgeworCQlpZiAoZWQtPmZ1bmMgPT0gZnVuYyAmJiBlZC0+ZGF0YSA9PSBkYXRhKQorCQkJcmV0dXJuIEVYVDJfRVRfRklMRV9FWElTVFM7CisJCWlmIChlZC0+ZnVuYyA9PSBOVUxMKQorCQkJZnJlZV9lZCA9IGVkOworCX0KKworCWlmIChmcmVlX2VkKSB7CisJCWZyZWVfZWQtPmZ1bmMgPSBmdW5jOworCQlmcmVlX2VkLT5kYXRhID0gZGF0YTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKG5yX2l0ZW1zID09IDApIHsKKwkJcmV0ID0gYXRleGl0KGhhbmRsZV9leGl0KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gZXh0MmZzX3Jlc2l6ZV9tZW0oMCwgKG5yX2l0ZW1zICsgMSkgKiBzaXplb2Yoc3RydWN0IGV4aXRfZGF0YSksCisJCQkJJml0ZW1zKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJaXRlbXNbbnJfaXRlbXNdLmZ1bmMgPSBmdW5jOworCWl0ZW1zW25yX2l0ZW1zXS5kYXRhID0gZGF0YTsKKwlucl9pdGVtcysrOworCisJcmV0dXJuIDA7Cit9CisKKy8qIFJlbW92ZSBhIGZ1bmN0aW9uIGZyb20gdGhlIGV4aXQgY2xlYW51cCBsaXN0LiAqLworZXJyY29kZV90IGV4dDJmc19yZW1vdmVfZXhpdF9mbihleHQyX2V4aXRfZm4gZnVuYywgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZXhpdF9kYXRhICplZDsKKwlzaXplX3QgeDsKKworCWlmIChmdW5jID09IE5VTEwpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlmb3IgKHggPSAwLCBlZCA9IGl0ZW1zOyB4IDwgbnJfaXRlbXM7IHgrKywgZWQrKykgeworCQlpZiAoZWQtPmZ1bmMgPT0gTlVMTCkKKwkJCXJldHVybiAwOworCQlpZiAoZWQtPmZ1bmMgPT0gZnVuYyAmJiBlZC0+ZGF0YSA9PSBkYXRhKSB7CisJCQlzaXplX3Qgc3ogPSAobnJfaXRlbXMgLSAoeCArIDEpKSAqCisJCQkJICAgIHNpemVvZihzdHJ1Y3QgZXhpdF9kYXRhKTsKKwkJCW1lbW1vdmUoZWQsIGVkICsgMSwgc3opOworCQkJbWVtc2V0KGl0ZW1zICsgbnJfaXRlbXMgLSAxLCAwLAorCQkJICAgICAgIHNpemVvZihzdHJ1Y3QgZXhpdF9kYXRhKSk7CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JhZGJsb2Nrcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmFkYmxvY2tzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYyMzk4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JhZGJsb2Nrcy5jCkBAIC0wLDAgKzEsMzI4IEBACisvKgorICogYmFkYmxvY2tzLmMgLS0tIHJvdXRpbmVzIHRvIG1hbmlwdWxhdGUgdGhlIGJhZCBibG9jayBzdHJ1Y3R1cmUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIG1ha2luZyBhIGJhZGJsb2NrcyBsaXN0CisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgbWFrZV91MzJfbGlzdChpbnQgc2l6ZSwgaW50IG51bSwgX191MzIgKmxpc3QsCisJCQkgICAgICAgZXh0Ml91MzJfbGlzdCAqcmV0KQoreworCWV4dDJfdTMyX2xpc3QJYmI7CisJZXJyY29kZV90CXJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfdTMyX2xpc3QpLCAmYmIpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJbWVtc2V0KGJiLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfc3RydWN0X3UzMl9saXN0KSk7CisJYmItPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19CQURCTE9DS1NfTElTVDsKKwliYi0+c2l6ZSA9IHNpemUgPyBzaXplIDogMTA7CisJYmItPm51bSA9IG51bTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGJiLT5zaXplLCBzaXplb2YoYmxrX3QpLCAmYmItPmxpc3QpOworCWlmIChyZXR2YWwpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZiYik7CisJCXJldHVybiByZXR2YWw7CisJfQorCWlmIChsaXN0KQorCQltZW1jcHkoYmItPmxpc3QsIGxpc3QsIGJiLT5zaXplICogc2l6ZW9mKGJsa190KSk7CisJZWxzZQorCQltZW1zZXQoYmItPmxpc3QsIDAsIGJiLT5zaXplICogc2l6ZW9mKGJsa190KSk7CisJKnJldCA9IGJiOworCXJldHVybiAwOworfQorCisKKy8qCisgKiBUaGlzIHByb2NlZHVyZSBjcmVhdGVzIGFuIGVtcHR5IHUzMiBsaXN0LgorICovCitlcnJjb2RlX3QgZXh0MmZzX3UzMl9saXN0X2NyZWF0ZShleHQyX3UzMl9saXN0ICpyZXQsIGludCBzaXplKQoreworCXJldHVybiBtYWtlX3UzMl9saXN0KHNpemUsIDAsIDAsIHJldCk7Cit9CisKKy8qCisgKiBUaGlzIHByb2NlZHVyZSBjcmVhdGVzIGFuIGVtcHR5IGJhZGJsb2NrcyBsaXN0LgorICovCitlcnJjb2RlX3QgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2NyZWF0ZShleHQyX2JhZGJsb2Nrc19saXN0ICpyZXQsIGludCBzaXplKQoreworCXJldHVybiBtYWtlX3UzMl9saXN0KHNpemUsIDAsIDAsIChleHQyX2JhZGJsb2Nrc19saXN0ICopIHJldCk7Cit9CisKKworLyoKKyAqIFRoaXMgcHJvY2VkdXJlIGNvcGllcyBhIGJhZGJsb2NrcyBsaXN0CisgKi8KK2VycmNvZGVfdCBleHQyZnNfdTMyX2NvcHkoZXh0Ml91MzJfbGlzdCBzcmMsIGV4dDJfdTMyX2xpc3QgKmRlc3QpCit7CisJZXJyY29kZV90CXJldHZhbDsKKworCXJldHZhbCA9IG1ha2VfdTMyX2xpc3Qoc3JjLT5zaXplLCBzcmMtPm51bSwgc3JjLT5saXN0LCBkZXN0KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCSgqZGVzdCktPmJhZGJsb2Nrc19mbGFncyA9IHNyYy0+YmFkYmxvY2tzX2ZsYWdzOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2JhZGJsb2Nrc19jb3B5KGV4dDJfYmFkYmxvY2tzX2xpc3Qgc3JjLAorCQkJCWV4dDJfYmFkYmxvY2tzX2xpc3QgKmRlc3QpCit7CisJcmV0dXJuIGV4dDJmc191MzJfY29weSgoZXh0Ml91MzJfbGlzdCkgc3JjLAorCQkJICAgICAgIChleHQyX3UzMl9saXN0ICopIGRlc3QpOworfQorCisvKgorICogVGhpcyBwcm9jZWR1cmUgZnJlZXMgYSBiYWRibG9ja3MgbGlzdC4KKyAqCisgKiAobm90ZTogbW92ZWQgdG8gY2xvc2Vmcy5jKQorICovCisKKworLyoKKyAqIFRoaXMgcHJvY2VkdXJlIGFkZHMgYSBibG9jayB0byBhIGJhZGJsb2NrcyBsaXN0LgorICovCitlcnJjb2RlX3QgZXh0MmZzX3UzMl9saXN0X2FkZChleHQyX3UzMl9saXN0IGJiLCBfX3UzMiBibGspCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWksIGo7CisJdW5zaWduZWQgbG9uZwlvbGRfc2l6ZTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoYmIsIEVYVDJfRVRfTUFHSUNfQkFEQkxPQ0tTX0xJU1QpOworCisJaWYgKGJiLT5udW0gPj0gYmItPnNpemUpIHsKKwkJb2xkX3NpemUgPSBiYi0+c2l6ZSAqIHNpemVvZihfX3UzMik7CisJCWJiLT5zaXplICs9IDEwMDsKKwkJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9tZW0ob2xkX3NpemUsIGJiLT5zaXplICogc2l6ZW9mKF9fdTMyKSwKKwkJCQkJICAgJmJiLT5saXN0KTsKKwkJaWYgKHJldHZhbCkgeworCQkJYmItPnNpemUgLT0gMTAwOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCX0KKworCS8qCisJICogQWRkIHNwZWNpYWwgY2FzZSBjb2RlIGZvciBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdAorCSAqLworCWkgPSBiYi0+bnVtLTE7CisJaWYgKChiYi0+bnVtICE9IDApICYmIChiYi0+bGlzdFtpXSA9PSBibGspKQorCQlyZXR1cm4gMDsKKwlpZiAoKGJiLT5udW0gPT0gMCkgfHwgKGJiLT5saXN0W2ldIDwgYmxrKSkgeworCQliYi0+bGlzdFtiYi0+bnVtKytdID0gYmxrOworCQlyZXR1cm4gMDsKKwl9CisKKwlqID0gYmItPm51bTsKKwlmb3IgKGk9MDsgaSA8IGJiLT5udW07IGkrKykgeworCQlpZiAoYmItPmxpc3RbaV0gPT0gYmxrKQorCQkJcmV0dXJuIDA7CisJCWlmIChiYi0+bGlzdFtpXSA+IGJsaykgeworCQkJaiA9IGk7CisJCQlicmVhazsKKwkJfQorCX0KKwlmb3IgKGk9YmItPm51bTsgaSA+IGo7IGktLSkKKwkJYmItPmxpc3RbaV0gPSBiYi0+bGlzdFtpLTFdOworCWJiLT5saXN0W2pdID0gYmxrOworCWJiLT5udW0rKzsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19iYWRibG9ja3NfbGlzdF9hZGQoZXh0Ml9iYWRibG9ja3NfbGlzdCBiYiwgYmxrX3QgYmxrKQoreworCXJldHVybiBleHQyZnNfdTMyX2xpc3RfYWRkKChleHQyX3UzMl9saXN0KSBiYiwgKF9fdTMyKSBibGspOworfQorCisvKgorICogVGhpcyBwcm9jZWR1cmUgZmluZHMgYSBwYXJ0aWN1bGFyIGJsb2NrIGlzIG9uIGEgYmFkYmxvY2tzCisgKiBsaXN0LgorICovCitpbnQgZXh0MmZzX3UzMl9saXN0X2ZpbmQoZXh0Ml91MzJfbGlzdCBiYiwgX191MzIgYmxrKQoreworCWludAlsb3csIGhpZ2gsIG1pZDsKKworCWlmIChiYi0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19CQURCTE9DS1NfTElTVCkKKwkJcmV0dXJuIC0xOworCisJaWYgKGJiLT5udW0gPT0gMCkKKwkJcmV0dXJuIC0xOworCisJbG93ID0gMDsKKwloaWdoID0gYmItPm51bS0xOworCWlmIChibGsgPT0gYmItPmxpc3RbbG93XSkKKwkJcmV0dXJuIGxvdzsKKwlpZiAoYmxrID09IGJiLT5saXN0W2hpZ2hdKQorCQlyZXR1cm4gaGlnaDsKKworCXdoaWxlIChsb3cgPCBoaWdoKSB7CisJCW1pZCA9ICgodW5zaWduZWQpbG93ICsgKHVuc2lnbmVkKWhpZ2gpLzI7CisJCWlmIChtaWQgPT0gbG93IHx8IG1pZCA9PSBoaWdoKQorCQkJYnJlYWs7CisJCWlmIChibGsgPT0gYmItPmxpc3RbbWlkXSkKKwkJCXJldHVybiBtaWQ7CisJCWlmIChibGsgPCBiYi0+bGlzdFttaWRdKQorCQkJaGlnaCA9IG1pZDsKKwkJZWxzZQorCQkJbG93ID0gbWlkOworCX0KKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBUaGlzIHByb2NlZHVyZSB0ZXN0cyB0byBzZWUgaWYgYSBwYXJ0aWN1bGFyIGJsb2NrIGlzIG9uIGEgYmFkYmxvY2tzCisgKiBsaXN0LgorICovCitpbnQgZXh0MmZzX3UzMl9saXN0X3Rlc3QoZXh0Ml91MzJfbGlzdCBiYiwgX191MzIgYmxrKQoreworCWlmIChleHQyZnNfdTMyX2xpc3RfZmluZChiYiwgYmxrKSA8IDApCisJCXJldHVybiAwOworCWVsc2UKKwkJcmV0dXJuIDE7Cit9CisKK2ludCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfdGVzdChleHQyX2JhZGJsb2Nrc19saXN0IGJiLCBibGtfdCBibGspCit7CisJcmV0dXJuIGV4dDJmc191MzJfbGlzdF90ZXN0KChleHQyX3UzMl9saXN0KSBiYiwgKF9fdTMyKSBibGspOworfQorCisKKy8qCisgKiBSZW1vdmUgYSBibG9jayBmcm9tIHRoZSBiYWRibG9jayBsaXN0CisgKi8KK2ludCBleHQyZnNfdTMyX2xpc3RfZGVsKGV4dDJfdTMyX2xpc3QgYmIsIF9fdTMyIGJsaykKK3sKKwlpbnQJcmVtbG9jLCBpOworCisJaWYgKGJiLT5udW0gPT0gMCkKKwkJcmV0dXJuIC0xOworCisJcmVtbG9jID0gZXh0MmZzX3UzMl9saXN0X2ZpbmQoYmIsIGJsayk7CisJaWYgKHJlbWxvYyA8IDApCisJCXJldHVybiAtMTsKKworCWZvciAoaSA9IHJlbWxvYyA7IGkgPCBiYi0+bnVtLTE7IGkrKykKKwkJYmItPmxpc3RbaV0gPSBiYi0+bGlzdFtpKzFdOworCWJiLT5udW0tLTsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfZGVsKGV4dDJfdTMyX2xpc3QgYmIsIF9fdTMyIGJsaykKK3sKKwlleHQyZnNfdTMyX2xpc3RfZGVsKGJiLCBibGspOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGVfYmVnaW4oZXh0Ml91MzJfbGlzdCBiYiwKKwkJCQkJZXh0Ml91MzJfaXRlcmF0ZSAqcmV0KQoreworCWV4dDJfdTMyX2l0ZXJhdGUgaXRlcjsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoYmIsIEVYVDJfRVRfTUFHSUNfQkFEQkxPQ0tTX0xJU1QpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX3N0cnVjdF91MzJfaXRlcmF0ZSksICZpdGVyKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaXRlci0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0JBREJMT0NLU19JVEVSQVRFOworCWl0ZXItPmJiID0gYmI7CisJaXRlci0+cHRyID0gMDsKKwkqcmV0ID0gaXRlcjsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2JlZ2luKGV4dDJfYmFkYmxvY2tzX2xpc3QgYmIsCisJCQkJCSAgICAgIGV4dDJfYmFkYmxvY2tzX2l0ZXJhdGUgKnJldCkKK3sKKwlyZXR1cm4gZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGVfYmVnaW4oKGV4dDJfdTMyX2xpc3QpIGJiLAorCQkJCQkgICAgICAoZXh0Ml91MzJfaXRlcmF0ZSAqKSByZXQpOworfQorCisKK2ludCBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZShleHQyX3UzMl9pdGVyYXRlIGl0ZXIsIF9fdTMyICpibGspCit7CisJZXh0Ml91MzJfbGlzdAliYjsKKworCWlmIChpdGVyLT5tYWdpYyAhPSBFWFQyX0VUX01BR0lDX0JBREJMT0NLU19JVEVSQVRFKQorCQlyZXR1cm4gMDsKKworCWJiID0gaXRlci0+YmI7CisKKwlpZiAoYmItPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfQkFEQkxPQ0tTX0xJU1QpCisJCXJldHVybiAwOworCisJaWYgKGl0ZXItPnB0ciA8IGJiLT5udW0pIHsKKwkJKmJsayA9IGJiLT5saXN0W2l0ZXItPnB0cisrXTsKKwkJcmV0dXJuIDE7CisJfQorCSpibGsgPSAwOworCXJldHVybiAwOworfQorCitpbnQgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGUoZXh0Ml9iYWRibG9ja3NfaXRlcmF0ZSBpdGVyLCBibGtfdCAqYmxrKQoreworCXJldHVybiBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZSgoZXh0Ml91MzJfaXRlcmF0ZSkgaXRlciwKKwkJCQkgICAgICAgKF9fdTMyICopIGJsayk7Cit9CisKKwordm9pZCBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZV9lbmQoZXh0Ml91MzJfaXRlcmF0ZSBpdGVyKQoreworCWlmICghaXRlciB8fCAoaXRlci0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19CQURCTE9DS1NfSVRFUkFURSkpCisJCXJldHVybjsKKworCWl0ZXItPmJiID0gMDsKKwlleHQyZnNfZnJlZV9tZW0oJml0ZXIpOworfQorCit2b2lkIGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChleHQyX2JhZGJsb2Nrc19pdGVyYXRlIGl0ZXIpCit7CisJZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGVfZW5kKChleHQyX3UzMl9pdGVyYXRlKSBpdGVyKTsKK30KKworCitpbnQgZXh0MmZzX3UzMl9saXN0X2VxdWFsKGV4dDJfdTMyX2xpc3QgYmIxLCBleHQyX3UzMl9saXN0IGJiMikKK3sKKwlFWFQyX0NIRUNLX01BR0lDKGJiMSwgRVhUMl9FVF9NQUdJQ19CQURCTE9DS1NfTElTVCk7CisJRVhUMl9DSEVDS19NQUdJQyhiYjIsIEVYVDJfRVRfTUFHSUNfQkFEQkxPQ0tTX0xJU1QpOworCisJaWYgKGJiMS0+bnVtICE9IGJiMi0+bnVtKQorCQlyZXR1cm4gMDsKKworCWlmIChtZW1jbXAoYmIxLT5saXN0LCBiYjItPmxpc3QsIGJiMS0+bnVtICogc2l6ZW9mKGJsa190KSkgIT0gMCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKK2ludCBleHQyZnNfYmFkYmxvY2tzX2VxdWFsKGV4dDJfYmFkYmxvY2tzX2xpc3QgYmIxLCBleHQyX2JhZGJsb2Nrc19saXN0IGJiMikKK3sKKwlyZXR1cm4gZXh0MmZzX3UzMl9saXN0X2VxdWFsKChleHQyX3UzMl9saXN0KSBiYjEsCisJCQkJICAgICAoZXh0Ml91MzJfbGlzdCkgYmIyKTsKK30KKworaW50IGV4dDJmc191MzJfbGlzdF9jb3VudChleHQyX3UzMl9saXN0IGJiKQoreworCXJldHVybiBiYi0+bnVtOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmJfY29tcGF0LmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9iYl9jb21wYXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzM3OTJhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmJfY29tcGF0LmMKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIGJiX2NvbXBhdC5jIC0tLSBjb21wYXRpYmlsaXR5IGJhZGJsb2NrcyByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworZXJyY29kZV90IGJhZGJsb2Nrc19saXN0X2NyZWF0ZShiYWRibG9ja3NfbGlzdCAqcmV0LCBpbnQgc2l6ZSkKK3sKKwlyZXR1cm4gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2NyZWF0ZShyZXQsIHNpemUpOworfQorCit2b2lkIGJhZGJsb2Nrc19saXN0X2ZyZWUoYmFkYmxvY2tzX2xpc3QgYmIpCit7CisJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2ZyZWUoYmIpOworfQorCitlcnJjb2RlX3QgYmFkYmxvY2tzX2xpc3RfYWRkKGJhZGJsb2Nrc19saXN0IGJiLCBibGtfdCBibGspCit7CisJcmV0dXJuIGV4dDJmc19iYWRibG9ja3NfbGlzdF9hZGQoYmIsIGJsayk7Cit9CisKK2ludCBiYWRibG9ja3NfbGlzdF90ZXN0KGJhZGJsb2Nrc19saXN0IGJiLCBibGtfdCBibGspCit7CisJcmV0dXJuIGV4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0KGJiLCBibGspOworfQorCitlcnJjb2RlX3QgYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbihiYWRibG9ja3NfbGlzdCBiYiwKKwkJCQkgICAgICAgYmFkYmxvY2tzX2l0ZXJhdGUgKnJldCkKK3sKKwlyZXR1cm4gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4oYmIsIHJldCk7Cit9CisKK2ludCBiYWRibG9ja3NfbGlzdF9pdGVyYXRlKGJhZGJsb2Nrc19pdGVyYXRlIGl0ZXIsIGJsa190ICpibGspCit7CisJcmV0dXJuIGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKGl0ZXIsIGJsayk7Cit9CisKK3ZvaWQgYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9lbmQoYmFkYmxvY2tzX2l0ZXJhdGUgaXRlcikKK3sKKwlleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9lbmQoaXRlcik7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9iYl9pbm9kZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmJfaW5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGUxMTRiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmJfaW5vZGUuYwpAQCAtMCwwICsxLDI3MCBAQAorLyoKKyAqIGJiX2lub2RlLmMgLS0tIHJvdXRpbmVzIHRvIHVwZGF0ZSB0aGUgYmFkIGJsb2NrIGlub2RlLgorICoKKyAqIFdBUk5JTkc6IFRoaXMgcm91dGluZSBtb2RpZmllcyBhIGxvdCBvZiBzdGF0ZSBpbiB0aGUgZmlsZXN5c3RlbTsgaWYKKyAqIHRoaXMgcm91dGluZSByZXR1cm5zIGFuIGVycm9yLCB0aGUgYmFkIGJsb2NrIGlub2RlIG1heSBiZSBpbiBhbgorICogaW5jb25zaXN0ZW50IHN0YXRlLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitzdHJ1Y3Qgc2V0X2JhZGJsb2NrX3JlY29yZCB7CisJZXh0Ml9iYWRibG9ja3NfaXRlcmF0ZQliYl9pdGVyOworCWludAkJYmFkX2Jsb2NrX2NvdW50OworCWJsa190CQkqaW5kX2Jsb2NrczsKKwlpbnQJCW1heF9pbmRfYmxvY2tzOworCWludAkJaW5kX2Jsb2Nrc19zaXplOworCWludAkJaW5kX2Jsb2Nrc19wdHI7CisJY2hhcgkJKmJsb2NrX2J1ZjsKKwllcnJjb2RlX3QJZXJyOworfTsKKworc3RhdGljIGludCBzZXRfYmFkX2Jsb2NrX3Byb2MoZXh0Ml9maWxzeXMgZnMsIGJsa190ICpibG9ja19uciwKKwkJCSAgICAgIGUyX2Jsa2NudF90IGJsb2NrY250LAorCQkJICAgICAgYmxrX3QgcmVmX2Jsb2NrLCBpbnQgcmVmX29mZnNldCwKKwkJCSAgICAgIHZvaWQgKnByaXZfZGF0YSk7CitzdGF0aWMgaW50IGNsZWFyX2JhZF9ibG9ja19wcm9jKGV4dDJfZmlsc3lzIGZzLCBibGtfdCAqYmxvY2tfbnIsCisJCQkJZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJYmxrX3QgcmVmX2Jsb2NrLCBpbnQgcmVmX29mZnNldCwKKwkJCQl2b2lkICpwcml2X2RhdGEpOworCisvKgorICogR2l2ZW4gYSBiYWQgYmxvY2tzIGJpdG1hcCwgdXBkYXRlIHRoZSBiYWQgYmxvY2tzIGlub2RlIHRvIHJlZmxlY3QKKyAqIHRoZSBtYXAuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfdXBkYXRlX2JiX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2JhZGJsb2Nrc19saXN0IGJiX2xpc3QpCit7CisJZXJyY29kZV90CQkJcmV0dmFsOworCXN0cnVjdCBzZXRfYmFkYmxvY2tfcmVjb3JkIAlyZWM7CisJc3RydWN0IGV4dDJfaW5vZGUJCWlub2RlOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmICghZnMtPmJsb2NrX21hcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQkxPQ0tfQklUTUFQOworCisJbWVtc2V0KCZyZWMsIDAsIHNpemVvZihyZWMpKTsKKwlyZWMubWF4X2luZF9ibG9ja3MgPSAxMDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KHJlYy5tYXhfaW5kX2Jsb2Nrcywgc2l6ZW9mKGJsa190KSwKKwkJCQkmcmVjLmluZF9ibG9ja3MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJbWVtc2V0KHJlYy5pbmRfYmxvY2tzLCAwLCByZWMubWF4X2luZF9ibG9ja3MgKiBzaXplb2YoYmxrX3QpKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmcmVjLmJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCW1lbXNldChyZWMuYmxvY2tfYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwlyZWMuZXJyID0gMDsKKworCS8qCisJICogRmlyc3QgY2xlYXIgdGhlIG9sZCBiYWQgYmxvY2tzICh3aGlsZSBzYXZpbmcgdGhlIGluZGlyZWN0IGJsb2NrcykKKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTIoZnMsIEVYVDJfQkFEX0lOTywKKwkJCQkgICAgICAgQkxPQ0tfRkxBR19ERVBUSF9UUkFWRVJTRSwgMCwKKwkJCQkgICAgICAgY2xlYXJfYmFkX2Jsb2NrX3Byb2MsICZyZWMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwlpZiAocmVjLmVycikgeworCQlyZXR2YWwgPSByZWMuZXJyOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBOb3cgc2V0IHRoZSBiYWQgYmxvY2tzIQorCSAqCisJICogRmlyc3QsIG1hcmsgdGhlIGJhZCBibG9ja3MgYXMgdXNlZC4gIFRoaXMgcHJldmVudHMgYSBiYWQKKwkgKiBibG9jayBmcm9tIGJlaW5nIHVzZWQgYXMgYW4gaW5kaXJlY3RvIGJsb2NrIGZvciB0aGUgYmFkCisJICogYmxvY2sgaW5vZGUgKCEpLgorCSAqLworCWlmIChiYl9saXN0KSB7CisJCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2JlZ2luKGJiX2xpc3QsCisJCQkJCQkJICAgICAmcmVjLmJiX2l0ZXIpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTIoZnMsIEVYVDJfQkFEX0lOTywKKwkJCQkJICAgICAgIEJMT0NLX0ZMQUdfQVBQRU5ELCAwLAorCQkJCQkgICAgICAgc2V0X2JhZF9ibG9ja19wcm9jLCAmcmVjKTsKKwkJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfZW5kKHJlYy5iYl9pdGVyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwkJaWYgKHJlYy5lcnIpIHsKKwkJCXJldHZhbCA9IHJlYy5lcnI7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgYmFkIGJsb2NrIGlub2RlJ3MgbW9kIHRpbWUgYW5kIGJsb2NrIGNvdW50CisJICogZmllbGQuCisJICovCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIEVYVDJfQkFEX0lOTywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlpbm9kZS5pX2F0aW1lID0gaW5vZGUuaV9tdGltZSA9IGZzLT5ub3cgPyBmcy0+bm93IDogdGltZSgwKTsKKwlpZiAoIWlub2RlLmlfY3RpbWUpCisJCWlub2RlLmlfY3RpbWUgPSBmcy0+bm93ID8gZnMtPm5vdyA6IHRpbWUoMCk7CisJZXh0MmZzX2libGtfc2V0KGZzLCAmaW5vZGUsIHJlYy5iYWRfYmxvY2tfY291bnQpOworCXJldHZhbCA9IGV4dDJmc19pbm9kZV9zaXplX3NldChmcywgJmlub2RlLAorCQkJCSAgICAgICByZWMuYmFkX2Jsb2NrX2NvdW50ICogZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBFWFQyX0JBRF9JTk8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCitjbGVhbnVwOgorCWV4dDJmc19mcmVlX21lbSgmcmVjLmluZF9ibG9ja3MpOworCWV4dDJmc19mcmVlX21lbSgmcmVjLmJsb2NrX2J1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgdXBkYXRlX2JiX2lub2RlKCkKKyAqCisgKiBDbGVhciB0aGUgYmFkIGJsb2NrcyBpbiB0aGUgYmFkIGJsb2NrIGlub2RlLCB3aGlsZSBzYXZpbmcgdGhlCisgKiBpbmRpcmVjdCBibG9ja3MuCisgKi8KKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitzdGF0aWMgaW50IGNsZWFyX2JhZF9ibG9ja19wcm9jKGV4dDJfZmlsc3lzIGZzLCBibGtfdCAqYmxvY2tfbnIsCisJCQkJZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkJYmxrX3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQlpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBzZXRfYmFkYmxvY2tfcmVjb3JkICpyZWMgPSAoc3RydWN0IHNldF9iYWRibG9ja19yZWNvcmQgKikKKwkJcHJpdl9kYXRhOworCWVycmNvZGVfdAlyZXR2YWw7CisJdW5zaWduZWQgbG9uZyAJb2xkX3NpemU7CisKKwlpZiAoISpibG9ja19ucikKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIElmIHRoZSBibG9jayBudW1iZXIgaXMgb3V0cmFnZW91cywgY2xlYXIgaXQgYW5kIGlnbm9yZSBpdC4KKwkgKi8KKwlpZiAoKmJsb2NrX25yID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSB8fAorCSAgICAqYmxvY2tfbnIgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgeworCQkqYmxvY2tfbnIgPSAwOworCQlyZXR1cm4gQkxPQ0tfQ0hBTkdFRDsKKwl9CisKKwlpZiAoYmxvY2tjbnQgPCAwKSB7CisJCWlmIChyZWMtPmluZF9ibG9ja3Nfc2l6ZSA+PSByZWMtPm1heF9pbmRfYmxvY2tzKSB7CisJCQlvbGRfc2l6ZSA9IHJlYy0+bWF4X2luZF9ibG9ja3MgKiBzaXplb2YoYmxrX3QpOworCQkJcmVjLT5tYXhfaW5kX2Jsb2NrcyArPSAxMDsKKwkJCXJldHZhbCA9IGV4dDJmc19yZXNpemVfbWVtKG9sZF9zaXplLAorCQkJCSAgIHJlYy0+bWF4X2luZF9ibG9ja3MgKiBzaXplb2YoYmxrX3QpLAorCQkJCSAgICZyZWMtPmluZF9ibG9ja3MpOworCQkJaWYgKHJldHZhbCkgeworCQkJCXJlYy0+bWF4X2luZF9ibG9ja3MgLT0gMTA7CisJCQkJcmVjLT5lcnIgPSByZXR2YWw7CisJCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQkJfQorCQl9CisJCXJlYy0+aW5kX2Jsb2Nrc1tyZWMtPmluZF9ibG9ja3Nfc2l6ZSsrXSA9ICpibG9ja19ucjsKKwl9CisKKwkvKgorCSAqIE1hcmsgdGhlIGJsb2NrIGFzIHVudXNlZCwgYW5kIHVwZGF0ZSBhY2NvdW50aW5nIGluZm9ybWF0aW9uCisJICovCisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgKmJsb2NrX25yLCAtMSk7CisKKwkqYmxvY2tfbnIgPSAwOworCXJldHVybiBCTE9DS19DSEFOR0VEOworfQorCisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHVwZGF0ZV9iYl9pbm9kZSgpCisgKgorICogU2V0IHRoZSBibG9jayBsaXN0IGluIHRoZSBiYWQgYmxvY2sgaW5vZGUsIHVzaW5nIHRoZSBzdXBwbGllZCBiaXRtYXAuCisgKi8KKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitzdGF0aWMgaW50IHNldF9iYWRfYmxvY2tfcHJvYyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgKmJsb2NrX25yLAorCQkJICAgICAgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkgICAgICBibGtfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBzZXRfYmFkYmxvY2tfcmVjb3JkICpyZWMgPSAoc3RydWN0IHNldF9iYWRibG9ja19yZWNvcmQgKikKKwkJcHJpdl9kYXRhOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrX3QJCWJsazsKKworCWlmIChibG9ja2NudCA+PSAwKSB7CisJCS8qCisJCSAqIEdldCB0aGUgbmV4dCBiYWQgYmxvY2suCisJCSAqLworCQlpZiAoIWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKHJlYy0+YmJfaXRlciwgJmJsaykpCisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCXJlYy0+YmFkX2Jsb2NrX2NvdW50Kys7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogQW4gaW5kaXJlY3QgYmxvY2s7IGZldGNoIGEgYmxvY2sgZnJvbSB0aGUKKwkJICogcHJldmlvdXNseSB1c2VkIGluZGlyZWN0IGJsb2NrIGxpc3QuICBUaGUgYmxvY2sKKwkJICogbW9zdCBiZSBub3QgbWFya2VkIGFzIHVzZWQ7IGlmIHNvLCBnZXQgYW5vdGhlciBvbmUuCisJCSAqIElmIHdlIHJ1biBvdXQgb2YgcmVzZXJ2ZWQgaW5kaXJlY3QgYmxvY2tzLCBhbGxvY2F0ZQorCQkgKiBhIG5ldyBvbmUuCisJCSAqLworCXJldHJ5OgorCQlpZiAocmVjLT5pbmRfYmxvY2tzX3B0ciA8IHJlYy0+aW5kX2Jsb2Nrc19zaXplKSB7CisJCQlibGsgPSByZWMtPmluZF9ibG9ja3NbcmVjLT5pbmRfYmxvY2tzX3B0cisrXTsKKwkJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGJsaykpCisJCQkJZ290byByZXRyeTsKKwkJfSBlbHNlIHsKKwkJCXJldHZhbCA9IGV4dDJmc19uZXdfYmxvY2soZnMsIDAsIDAsICZibGspOworCQkJaWYgKHJldHZhbCkgeworCQkJCXJlYy0+ZXJyID0gcmV0dmFsOworCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJCX0KKwkJfQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgYmxrLCAxLCByZWMtPmJsb2NrX2J1Zik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXJlYy0+ZXJyID0gcmV0dmFsOworCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQl9CisJfQorCisJLyoKKwkgKiBVcGRhdGUgYmxvY2sgY291bnRzCisJICovCisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrLCArMSk7CisKKwkqYmxvY2tfbnIgPSBibGs7CisJcmV0dXJuIEJMT0NLX0NIQU5HRUQ7Cit9CisKKworCisKKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9iaXRtYXBzLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9iaXRtYXBzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwMjE5MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JpdG1hcHMuYwpAQCAtMCwwICsxLDMwOCBAQAorLyoKKyAqIGJpdG1hcHMuYyAtLS0gcm91dGluZXMgdG8gcmVhZCwgd3JpdGUsIGFuZCBtYW5pcHVsYXRlIHRoZSBpbm9kZSBhbmQKKyAqIGJsb2NrIGJpdG1hcHMuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorI2luY2x1ZGUgImJtYXA2NC5oIgorCit2b2lkIGV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfZnJlZV9nZW5lcmljX2JtYXAoYml0bWFwKTsKK30KKwordm9pZCBleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXApCit7CisJZXh0MmZzX2ZyZWVfZ2VuZXJpY19ibWFwKGJpdG1hcCk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfY29weV9iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIHNyYywKKwkJCSAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpkZXN0KQoreworCXJldHVybiAoZXh0MmZzX2NvcHlfZ2VuZXJpY19ibWFwKHNyYywgZGVzdCkpOworfQordm9pZCBleHQyZnNfc2V0X2JpdG1hcF9wYWRkaW5nKGV4dDJmc19nZW5lcmljX2JpdG1hcCBtYXApCit7CisJZXh0MmZzX3NldF9nZW5lcmljX2JtYXBfcGFkZGluZyhtYXApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX2lub2RlX2JpdG1hcChleHQyX2ZpbHN5cyBmcywKKwkJCQkgICAgICAgY29uc3QgY2hhciAqZGVzY3IsCisJCQkJICAgICAgIGV4dDJmc19pbm9kZV9iaXRtYXAgKnJldCkKK3sKKwlfX3U2NAkJc3RhcnQsIGVuZCwgcmVhbF9lbmQ7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJZnMtPndyaXRlX2JpdG1hcHMgPSBleHQyZnNfd3JpdGVfYml0bWFwczsKKworCXN0YXJ0ID0gMTsKKwllbmQgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCXJlYWxfZW5kID0gKEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpICogZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCisJLyogQXJlIHdlIHBlcm1pdHRlZCB0byB1c2UgbmV3LXN0eWxlIGJpdG1hcHM/ICovCisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR182NEJJVFMpCisJCXJldHVybiAoZXh0MmZzX2FsbG9jX2dlbmVyaWNfYm1hcChmcywKKwkJCQlFWFQyX0VUX01BR0lDX0lOT0RFX0JJVE1BUDY0LAorCQkJCWZzLT5kZWZhdWx0X2JpdG1hcF90eXBlLAorCQkJCXN0YXJ0LCBlbmQsIHJlYWxfZW5kLCBkZXNjciwgcmV0KSk7CisKKwkvKiBPdGhlcndpc2UsIGNoZWNrIHRvIHNlZSBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgc21hbGwgZW5vdWdoCisJICogdG8gdXNlIG9sZC1zdHlsZSAzMi1iaXQgYml0bWFwcyAqLworCWlmICgoZW5kID4gfjBVKSB8fCAocmVhbF9lbmQgPiB+MFUpKQorCQlyZXR1cm4gRVhUMl9FVF9DQU5UX1VTRV9MRUdBQ1lfQklUTUFQUzsKKworCXJldHVybiAoZXh0MmZzX21ha2VfZ2VuZXJpY19iaXRtYXAoRVhUMl9FVF9NQUdJQ19JTk9ERV9CSVRNQVAsIGZzLAorCQkJCQkgc3RhcnQsIGVuZCwgcmVhbF9lbmQsCisJCQkJCSBkZXNjciwgMCwKKwkJCQkJIChleHQyZnNfZ2VuZXJpY19iaXRtYXAgKikgcmV0KSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgICAgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkgICAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCAqcmV0KQoreworCV9fdTY0CQlzdGFydCwgZW5kLCByZWFsX2VuZDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlmcy0+d3JpdGVfYml0bWFwcyA9IGV4dDJmc193cml0ZV9iaXRtYXBzOworCisJc3RhcnQgPSBFWFQyRlNfQjJDKGZzLCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJZW5kID0gRVhUMkZTX0IyQyhmcywgZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpLTEpOworCXJlYWxfZW5kID0gKChfX3U2NCkgRVhUMl9DTFVTVEVSU19QRVJfR1JPVVAoZnMtPnN1cGVyKQorCQkgICAgKiAoX191NjQpIGZzLT5ncm91cF9kZXNjX2NvdW50KS0xICsgc3RhcnQ7CisKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHXzY0QklUUykKKwkJcmV0dXJuIChleHQyZnNfYWxsb2NfZ2VuZXJpY19ibWFwKGZzLAorCQkJCUVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQNjQsCisJCQkJZnMtPmRlZmF1bHRfYml0bWFwX3R5cGUsCisJCQkJc3RhcnQsIGVuZCwgcmVhbF9lbmQsIGRlc2NyLCByZXQpKTsKKworCWlmICgoZW5kID4gfjBVKSB8fCAocmVhbF9lbmQgPiB+MFUpKQorCQlyZXR1cm4gRVhUMl9FVF9DQU5UX1VTRV9MRUdBQ1lfQklUTUFQUzsKKworCXJldHVybiAoZXh0MmZzX21ha2VfZ2VuZXJpY19iaXRtYXAoRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVAsIGZzLAorCQkJCQkgICBzdGFydCwgZW5kLCByZWFsX2VuZCwKKwkJCQkJICAgZGVzY3IsIDAsCisJCQkJCSAgIChleHQyZnNfZ2VuZXJpY19iaXRtYXAgKikgcmV0KSk7Cit9CisKKy8qCisgKiBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKCkgcmVhbGx5IGFsbG9jYXRlcyBhIHBlci1jbHVzdGVyCisgKiBiaXRtYXAgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiAgVGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYQorICogYmxvY2sgYml0bWFwIHdoaWNoIGlzIHRydWx5IHBlci1ibG9jaywgZXZlbiBpZiBjbHVzdGVycy9iaWdhbGxvYworICogYXJlIGVuYWJsZWQuICBta2UyZnMgYW5kIGUyZnNjayBuZWVkIHRoaXMgZm9yIHRyYWNraW5nIHRoZQorICogYWxsb2NhdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gbWV0YWRhdGEgYmxvY2tzLgorICovCitlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX3N1YmNsdXN0ZXJfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgY29uc3QgY2hhciAqZGVzY3IsCisJCQkJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwICpyZXQpCit7CisJX191NjQJCQlzdGFydCwgZW5kLCByZWFsX2VuZDsKKwlleHQyZnNfZ2VuZXJpY19iaXRtYXAJYm1hcDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlmcy0+d3JpdGVfYml0bWFwcyA9IGV4dDJmc193cml0ZV9iaXRtYXBzOworCisJaWYgKCFmcy0+Y2x1c3Rlcl9yYXRpb19iaXRzKQorCQlyZXR1cm4gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChmcywgZGVzY3IsIHJldCk7CisKKwlpZiAoKGZzLT5mbGFncyAmIEVYVDJfRkxBR182NEJJVFMpID09IDApCisJCXJldHVybiBFWFQyX0VUX0NBTlRfVVNFX0xFR0FDWV9CSVRNQVBTOworCisJc3RhcnQgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwllbmQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciktMTsKKwlyZWFsX2VuZCA9ICgoX191NjQpIEVYVDJfQkxPQ0tTX1BFUl9HUk9VUChmcy0+c3VwZXIpCisJCSAgICAqIChfX3U2NCkgZnMtPmdyb3VwX2Rlc2NfY291bnQpLTEgKyBzdGFydDsKKworCXJldHZhbCA9IGV4dDJmc19hbGxvY19nZW5lcmljX2JtYXAoZnMsIEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQNjQsCisJCQkJCSAgIGZzLT5kZWZhdWx0X2JpdG1hcF90eXBlLCBzdGFydCwKKwkJCQkJICAgZW5kLCByZWFsX2VuZCwgZGVzY3IsICZibWFwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWJtYXAtPmNsdXN0ZXJfYml0cyA9IDA7CisJKnJldCA9IGJtYXA7CisJcmV0dXJuIDA7Cit9CisKK2ludCBleHQyZnNfZ2V0X2JpdG1hcF9ncmFudWxhcml0eShleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm1hcCA9IGJpdG1hcDsKKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChibWFwKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gYm1hcC0+Y2x1c3Rlcl9iaXRzOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2lub2RlX2JpdG1hcF9lbmQoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCWV4dDJfaW5vX3QgZW5kLCBleHQyX2lub190ICpvZW5kKQoreworCV9fdTY0IHRtcF9vZW5kOworCWludCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZnVkZ2VfZ2VuZXJpY19ibWFwX2VuZCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJCSAgICAgICBFWFQyX0VUX0ZVREdFX0lOT0RFX0JJVE1BUF9FTkQsCisJCQkJCSAgICAgICBlbmQsICZ0bXBfb2VuZCk7CisJaWYgKG9lbmQpCisJCSpvZW5kID0gdG1wX29lbmQ7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQlibGtfdCBlbmQsIGJsa190ICpvZW5kKQoreworCXJldHVybiAoZXh0MmZzX2Z1ZGdlX2dlbmVyaWNfYml0bWFwX2VuZChiaXRtYXAsCisJCQkJCQlFWFQyX0VUX01BR0lDX0JMT0NLX0JJVE1BUCwKKwkJCQkJCUVYVDJfRVRfRlVER0VfQkxPQ0tfQklUTUFQX0VORCwKKwkJCQkJCWVuZCwgb2VuZCkpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2Jsb2NrX2JpdG1hcF9lbmQyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgYmxrNjRfdCBlbmQsIGJsazY0X3QgKm9lbmQpCit7CisJcmV0dXJuIChleHQyZnNfZnVkZ2VfZ2VuZXJpY19ibWFwX2VuZChiaXRtYXAsCisJCQkJCSAgICAgIEVYVDJfRVRfRlVER0VfQkxPQ0tfQklUTUFQX0VORCwKKwkJCQkJICAgICAgZW5kLCBvZW5kKSk7Cit9CisKK3ZvaWQgZXh0MmZzX2NsZWFyX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfY2xlYXJfZ2VuZXJpY19ibWFwKGJpdG1hcCk7Cit9CisKK3ZvaWQgZXh0MmZzX2NsZWFyX2Jsb2NrX2JpdG1hcChleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfY2xlYXJfZ2VuZXJpY19ibWFwKGJpdG1hcCk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVzaXplX2lub2RlX2JpdG1hcChfX3UzMiBuZXdfZW5kLCBfX3UzMiBuZXdfcmVhbF9lbmQsCisJCQkJICAgICBleHQyZnNfaW5vZGVfYml0bWFwIGJtYXApCit7CisJcmV0dXJuIChleHQyZnNfcmVzaXplX2dlbmVyaWNfYml0bWFwKEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQLAorCQkJCQkgICAgIG5ld19lbmQsIG5ld19yZWFsX2VuZCwgYm1hcCkpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9pbm9kZV9iaXRtYXAyKF9fdTY0IG5ld19lbmQsIF9fdTY0IG5ld19yZWFsX2VuZCwKKwkJCQkgICAgICBleHQyZnNfaW5vZGVfYml0bWFwIGJtYXApCit7CisJcmV0dXJuIChleHQyZnNfcmVzaXplX2dlbmVyaWNfYm1hcChibWFwLCBuZXdfZW5kLCBuZXdfcmVhbF9lbmQpKTsKK30KKworZXJyY29kZV90IGV4dDJmc19yZXNpemVfYmxvY2tfYml0bWFwKF9fdTMyIG5ld19lbmQsIF9fdTMyIG5ld19yZWFsX2VuZCwKKwkJCQkgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCkKK3sKKwlyZXR1cm4gKGV4dDJmc19yZXNpemVfZ2VuZXJpY19iaXRtYXAoRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVAsCisJCQkJCSAgICAgbmV3X2VuZCwgbmV3X3JlYWxfZW5kLCBibWFwKSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcDIoX191NjQgbmV3X2VuZCwgX191NjQgbmV3X3JlYWxfZW5kLAorCQkJCSAgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCkKK3sKKwlyZXR1cm4gKGV4dDJmc19yZXNpemVfZ2VuZXJpY19ibWFwKGJtYXAsIG5ld19lbmQsIG5ld19yZWFsX2VuZCkpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYm0xLAorCQkJCSAgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgYm0yKQoreworCXJldHVybiAoZXh0MmZzX2NvbXBhcmVfZ2VuZXJpY19ibWFwKEVYVDJfRVRfTkVRX0JMT0NLX0JJVE1BUCwKKwkJCQkJICAgIGJtMSwgYm0yKSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfY29tcGFyZV9pbm9kZV9iaXRtYXAoZXh0MmZzX2lub2RlX2JpdG1hcCBibTEsCisJCQkJICAgICAgZXh0MmZzX2lub2RlX2JpdG1hcCBibTIpCit7CisJcmV0dXJuIChleHQyZnNfY29tcGFyZV9nZW5lcmljX2JtYXAoRVhUMl9FVF9ORVFfSU5PREVfQklUTUFQLAorCQkJCQkgICAgYm0xLCBibTIpKTsKK30KKworZXJyY29kZV90IGV4dDJmc19zZXRfaW5vZGVfYml0bWFwX3JhbmdlKGV4dDJmc19pbm9kZV9iaXRtYXAgYm1hcCwKKwkJCQkJZXh0Ml9pbm9fdCBzdGFydCwgdW5zaWduZWQgaW50IG51bSwKKwkJCQkJdm9pZCAqaW4pCit7CisJcmV0dXJuIChleHQyZnNfc2V0X2dlbmVyaWNfYml0bWFwX3JhbmdlKGJtYXAsCisJCQkJCQlFWFQyX0VUX01BR0lDX0lOT0RFX0JJVE1BUCwKKwkJCQkJCXN0YXJ0LCBudW0sIGluKSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfc2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2lub2RlX2JpdG1hcCBibWFwLAorCQkJCQkgX191NjQgc3RhcnQsIHNpemVfdCBudW0sCisJCQkJCSB2b2lkICppbikKK3sKKwlyZXR1cm4gKGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGJtYXAsIHN0YXJ0LCBudW0sIGluKSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9yYW5nZShleHQyZnNfaW5vZGVfYml0bWFwIGJtYXAsCisJCQkJCWV4dDJfaW5vX3Qgc3RhcnQsIHVuc2lnbmVkIGludCBudW0sCisJCQkJCXZvaWQgKm91dCkKK3sKKwlyZXR1cm4gKGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfcmFuZ2UoYm1hcCwKKwkJCQkJCUVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQLAorCQkJCQkJc3RhcnQsIG51bSwgb3V0KSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2lub2RlX2JpdG1hcCBibWFwLAorCQkJCQkgX191NjQgc3RhcnQsIHNpemVfdCBudW0sCisJCQkJCSB2b2lkICpvdXQpCit7CisJcmV0dXJuIChleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9yYW5nZShibWFwLCBzdGFydCwgbnVtLCBvdXQpKTsKK30KKworZXJyY29kZV90IGV4dDJmc19zZXRfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCwKKwkJCQkJYmxrX3Qgc3RhcnQsIHVuc2lnbmVkIGludCBudW0sCisJCQkJCXZvaWQgKmluKQoreworCXJldHVybiAoZXh0MmZzX3NldF9nZW5lcmljX2JpdG1hcF9yYW5nZShibWFwLAorCQkJCQkJRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVAsCisJCQkJCQlzdGFydCwgbnVtLCBpbikpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3NldF9ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCwKKwkJCQkJIGJsazY0X3Qgc3RhcnQsIHNpemVfdCBudW0sCisJCQkJCSB2b2lkICppbikKK3sKKwlyZXR1cm4gKGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGJtYXAsIHN0YXJ0LCBudW0sIGluKSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAsCisJCQkJCWJsa190IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICpvdXQpCit7CisJcmV0dXJuIChleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX3JhbmdlKGJtYXAsCisJCQkJCQlFWFQyX0VUX01BR0lDX0JMT0NLX0JJVE1BUCwKKwkJCQkJCXN0YXJ0LCBudW0sIG91dCkpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCwKKwkJCQkJIGJsazY0X3Qgc3RhcnQsIHNpemVfdCBudW0sCisJCQkJCSB2b2lkICpvdXQpCit7CisJcmV0dXJuIChleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9yYW5nZShibWFwLCBzdGFydCwgbnVtLCBvdXQpKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JpdG9wcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYml0b3BzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzZDFlOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JpdG9wcy5jCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogYml0b3BzLmMgLS0tIEJpdG1hcCBmcm9iYmluZyBjb2RlLiAgU2VlIGJpdG9wcy5oIGZvciB0aGUgaW5saW5lZAorICogCXJvdXRpbmVzLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKyNpZm5kZWYgX0VYVDJfSEFWRV9BU01fQklUT1BTXworCisvKgorICogRm9yIHRoZSBiZW5lZml0IG9mIHRob3NlIHdobyBhcmUgdHJ5aW5nIHRvIHBvcnQgTGludXggdG8gYW5vdGhlcgorICogYXJjaGl0ZWN0dXJlLCBoZXJlIGFyZSBzb21lIEMtbGFuZ3VhZ2UgZXF1aXZhbGVudHMuICBZb3Ugc2hvdWxkCisgKiByZWNvZGUgdGhlc2UgaW4gdGhlIG5hdGl2ZSBhc3NtZWJseSBsYW5ndWFnZSwgaWYgYXQgYWxsIHBvc3NpYmxlLgorICoKKyAqIEMgbGFuZ3VhZ2UgZXF1aXZhbGVudHMgd3JpdHRlbiBieSBUaGVvZG9yZSBUcydvLCA5LzI2LzkyLgorICogTW9kaWZpZWQgYnkgUGV0ZSBBLiBaYWl0Y2V2IDcvMTQvOTUgdG8gYmUgcG9ydGFibGUgdG8gYmlnIGVuZGlhbgorICogc3lzdGVtcywgYXMgd2VsbCBhcyBub24tMzIgYml0IHN5c3RlbXMuCisgKi8KKworaW50IGV4dDJmc19zZXRfYml0KHVuc2lnbmVkIGludCBucix2b2lkICogYWRkcikKK3sKKwlpbnQJCW1hc2ssIHJldHZhbDsKKwl1bnNpZ25lZCBjaGFyCSpBRERSID0gKHVuc2lnbmVkIGNoYXIgKikgYWRkcjsKKworCUFERFIgKz0gbnIgPj4gMzsKKwltYXNrID0gMSA8PCAobnIgJiAweDA3KTsKKwlyZXR2YWwgPSBtYXNrICYgKkFERFI7CisJKkFERFIgfD0gbWFzazsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgZXh0MmZzX2NsZWFyX2JpdCh1bnNpZ25lZCBpbnQgbnIsIHZvaWQgKiBhZGRyKQoreworCWludAkJbWFzaywgcmV0dmFsOworCXVuc2lnbmVkIGNoYXIJKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCW1hc2sgPSAxIDw8IChuciAmIDB4MDcpOworCXJldHZhbCA9IG1hc2sgJiAqQUREUjsKKwkqQUREUiAmPSB+bWFzazsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgZXh0MmZzX3Rlc3RfYml0KHVuc2lnbmVkIGludCBuciwgY29uc3Qgdm9pZCAqIGFkZHIpCit7CisJaW50CQkJbWFzazsKKwljb25zdCB1bnNpZ25lZCBjaGFyCSpBRERSID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgYWRkcjsKKworCUFERFIgKz0gbnIgPj4gMzsKKwltYXNrID0gMSA8PCAobnIgJiAweDA3KTsKKwlyZXR1cm4gKG1hc2sgJiAqQUREUik7Cit9CisKKyNlbmRpZgkvKiAhX0VYVDJfSEFWRV9BU01fQklUT1BTXyAqLworCit2b2lkIGV4dDJmc193YXJuX2JpdG1hcChlcnJjb2RlX3QgZXJyY29kZSwgdW5zaWduZWQgbG9uZyBhcmcsCisJCQljb25zdCBjaGFyICpkZXNjcmlwdGlvbikKK3sKKyNpZm5kZWYgT01JVF9DT01fRVJSCisJaWYgKGRlc2NyaXB0aW9uKQorCQljb21fZXJyKDAsIGVycmNvZGUsICIjJWx1IGZvciAlcyIsIGFyZywgZGVzY3JpcHRpb24pOworCWVsc2UKKwkJY29tX2VycigwLCBlcnJjb2RlLCAiIyVsdSIsIGFyZyk7CisjZW5kaWYKK30KKworLyoKKyAqIEMtb25seSA2NCBiaXQgb3BzLgorICovCisKK2ludCBleHQyZnNfc2V0X2JpdDY0KF9fdTY0IG5yLCB2b2lkICogYWRkcikKK3sKKwlpbnQJCW1hc2ssIHJldHZhbDsKKwl1bnNpZ25lZCBjaGFyCSpBRERSID0gKHVuc2lnbmVkIGNoYXIgKikgYWRkcjsKKworCUFERFIgKz0gbnIgPj4gMzsKKwltYXNrID0gMSA8PCAobnIgJiAweDA3KTsKKwlyZXR2YWwgPSBtYXNrICYgKkFERFI7CisJKkFERFIgfD0gbWFzazsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgZXh0MmZzX2NsZWFyX2JpdDY0KF9fdTY0IG5yLCB2b2lkICogYWRkcikKK3sKKwlpbnQJCW1hc2ssIHJldHZhbDsKKwl1bnNpZ25lZCBjaGFyCSpBRERSID0gKHVuc2lnbmVkIGNoYXIgKikgYWRkcjsKKworCUFERFIgKz0gbnIgPj4gMzsKKwltYXNrID0gMSA8PCAobnIgJiAweDA3KTsKKwlyZXR2YWwgPSBtYXNrICYgKkFERFI7CisJKkFERFIgJj0gfm1hc2s7CisJcmV0dXJuIHJldHZhbDsKK30KKworaW50IGV4dDJmc190ZXN0X2JpdDY0KF9fdTY0IG5yLCBjb25zdCB2b2lkICogYWRkcikKK3sKKwlpbnQJCQltYXNrOworCWNvbnN0IHVuc2lnbmVkIGNoYXIJKkFERFIgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCW1hc2sgPSAxIDw8IChuciAmIDB4MDcpOworCXJldHVybiAobWFzayAmICpBRERSKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBwb3Bjb3VudDgodW5zaWduZWQgaW50IHcpCit7CisJdW5zaWduZWQgaW50IHJlcyA9IHcgLSAoKHcgPj4gMSkgJiAweDU1KTsKKwlyZXMgPSAocmVzICYgMHgzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMpOworCXJldHVybiAocmVzICsgKHJlcyA+PiA0KSkgJiAweDBGOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHBvcGNvdW50MzIodW5zaWduZWQgaW50IHcpCit7CisJdW5zaWduZWQgaW50IHJlcyA9IHcgLSAoKHcgPj4gMSkgJiAweDU1NTU1NTU1KTsKKwlyZXMgPSAocmVzICYgMHgzMzMzMzMzMykgKyAoKHJlcyA+PiAyKSAmIDB4MzMzMzMzMzMpOworCXJlcyA9IChyZXMgKyAocmVzID4+IDQpKSAmIDB4MEYwRjBGMEY7CisJcmVzID0gcmVzICsgKHJlcyA+PiA4KTsKKwlyZXR1cm4gKHJlcyArIChyZXMgPj4gMTYpKSAmIDB4MDAwMDAwRkY7Cit9CisKK3Vuc2lnbmVkIGludCBleHQyZnNfYml0Y291bnQoY29uc3Qgdm9pZCAqYWRkciwgdW5zaWduZWQgaW50IG5ieXRlcykKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpjcCA9IGFkZHI7CisJY29uc3QgX191MzIgKnA7CisJdW5zaWduZWQgaW50IHJlcyA9IDA7CisKKwl3aGlsZSAoKCgoKHVpbnRwdHJfdCkgY3ApICYgMykgIT0gMCkgJiYgKG5ieXRlcyA+IDApKSB7CisJCXJlcyArPSBwb3Bjb3VudDgoKmNwKyspOworCQluYnl0ZXMtLTsKKwl9CisJcCA9IChjb25zdCBfX3UzMiAqKSBjcDsKKworCXdoaWxlIChuYnl0ZXMgPiA0KSB7CisJCXJlcyArPSBwb3Bjb3VudDMyKCpwKyspOworCQluYnl0ZXMgLT0gNDsKKwl9CisJY3AgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBwOworCisJd2hpbGUgKG5ieXRlcyA+IDApIHsKKwkJcmVzICs9IHBvcGNvdW50OCgqY3ArKyk7CisJCW5ieXRlcy0tOworCX0KKwlyZXR1cm4gcmVzOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYml0b3BzLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9iaXRvcHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzU5NjA4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYml0b3BzLmgKQEAgLTAsMCArMSw3MDMgQEAKKy8qCisgKiBiaXRvcHMuaCAtLS0gQml0bWFwIGZyb2JiaW5nIGNvZGUuICBUaGUgYnl0ZSBzd2FwcGluZyByb3V0aW5lcyBhcmUKKyAqIAlhbHNvIGluY2x1ZGVkIGhlcmUuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjZGVmaW5lIGV4dDJmc19jcHVfdG9fbGU2NCh4KSAoKF9fZm9yY2UgX19sZTY0KWV4dDJmc19zd2FiNjQoKF9fdTY0KSh4KSkpCisjZGVmaW5lIGV4dDJmc19sZTY0X3RvX2NwdSh4KSBleHQyZnNfc3dhYjY0KChfX2ZvcmNlIF9fdTY0KShfX2xlNjQpKHgpKQorI2RlZmluZSBleHQyZnNfY3B1X3RvX2xlMzIoeCkgKChfX2ZvcmNlIF9fbGUzMilleHQyZnNfc3dhYjMyKChfX3UzMikoeCkpKQorI2RlZmluZSBleHQyZnNfbGUzMl90b19jcHUoeCkgZXh0MmZzX3N3YWIzMigoX19mb3JjZSBfX3UzMikoX19sZTMyKSh4KSkKKyNkZWZpbmUgZXh0MmZzX2NwdV90b19sZTE2KHgpICgoX19mb3JjZSBfX2xlMTYpZXh0MmZzX3N3YWIxNigoX191MTYpKHgpKSkKKyNkZWZpbmUgZXh0MmZzX2xlMTZfdG9fY3B1KHgpIGV4dDJmc19zd2FiMTYoKF9fZm9yY2UgX191MTYpKF9fbGUxNikoeCkpCisKKyNkZWZpbmUgZXh0MmZzX2NwdV90b19iZTY0KHgpICgoX19mb3JjZSBfX2JlNjQpKF9fdTY0KSh4KSkKKyNkZWZpbmUgZXh0MmZzX2JlNjRfdG9fY3B1KHgpICgoX19mb3JjZSBfX3U2NCkoX19iZTY0KSh4KSkKKyNkZWZpbmUgZXh0MmZzX2NwdV90b19iZTMyKHgpICgoX19mb3JjZSBfX2JlMzIpKF9fdTMyKSh4KSkKKyNkZWZpbmUgZXh0MmZzX2JlMzJfdG9fY3B1KHgpICgoX19mb3JjZSBfX3UzMikoX19iZTMyKSh4KSkKKyNkZWZpbmUgZXh0MmZzX2NwdV90b19iZTE2KHgpICgoX19mb3JjZSBfX2JlMTYpKF9fdTE2KSh4KSkKKyNkZWZpbmUgZXh0MmZzX2JlMTZfdG9fY3B1KHgpICgoX19mb3JjZSBfX3UxNikoX19iZTE2KSh4KSkKKyNlbHNlCisjZGVmaW5lIGV4dDJmc19jcHVfdG9fbGU2NCh4KSAoKF9fZm9yY2UgX19sZTY0KShfX3U2NCkoeCkpCisjZGVmaW5lIGV4dDJmc19sZTY0X3RvX2NwdSh4KSAoKF9fZm9yY2UgX191NjQpKF9fbGU2NCkoeCkpCisjZGVmaW5lIGV4dDJmc19jcHVfdG9fbGUzMih4KSAoKF9fZm9yY2UgX19sZTMyKShfX3UzMikoeCkpCisjZGVmaW5lIGV4dDJmc19sZTMyX3RvX2NwdSh4KSAoKF9fZm9yY2UgX191MzIpKF9fbGUzMikoeCkpCisjZGVmaW5lIGV4dDJmc19jcHVfdG9fbGUxNih4KSAoKF9fZm9yY2UgX19sZTE2KShfX3UxNikoeCkpCisjZGVmaW5lIGV4dDJmc19sZTE2X3RvX2NwdSh4KSAoKF9fZm9yY2UgX191MTYpKF9fbGUxNikoeCkpCisKKyNkZWZpbmUgZXh0MmZzX2NwdV90b19iZTY0KHgpICgoX19mb3JjZSBfX2JlNjQpZXh0MmZzX3N3YWI2NCgoX191NjQpKHgpKSkKKyNkZWZpbmUgZXh0MmZzX2JlNjRfdG9fY3B1KHgpIGV4dDJmc19zd2FiNjQoKF9fZm9yY2UgX191NjQpKF9fYmU2NCkoeCkpCisjZGVmaW5lIGV4dDJmc19jcHVfdG9fYmUzMih4KSAoKF9fZm9yY2UgX19iZTMyKWV4dDJmc19zd2FiMzIoKF9fdTMyKSh4KSkpCisjZGVmaW5lIGV4dDJmc19iZTMyX3RvX2NwdSh4KSBleHQyZnNfc3dhYjMyKChfX2ZvcmNlIF9fdTMyKShfX2JlMzIpKHgpKQorI2RlZmluZSBleHQyZnNfY3B1X3RvX2JlMTYoeCkgKChfX2ZvcmNlIF9fYmUxNilleHQyZnNfc3dhYjE2KChfX3UxNikoeCkpKQorI2RlZmluZSBleHQyZnNfYmUxNl90b19jcHUoeCkgZXh0MmZzX3N3YWIxNigoX19mb3JjZSBfX3UxNikoX19iZTE2KSh4KSkKKyNlbmRpZgorCisvKgorICogRVhUMkZTIGJpdG1hcCBtYW5pcHVsYXRpb24gcm91dGluZXMuCisgKi8KKworLyogU3VwcG9ydCBmb3Igc2VuZGluZyB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGhlIGlubGluZSBzdWJyb3V0aW5lcyAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKmV4dDJmc19ibG9ja19zdHJpbmc7CitleHRlcm4gY29uc3QgY2hhciAqZXh0MmZzX2lub2RlX3N0cmluZzsKK2V4dGVybiBjb25zdCBjaGFyICpleHQyZnNfbWFya19zdHJpbmc7CitleHRlcm4gY29uc3QgY2hhciAqZXh0MmZzX3VubWFya19zdHJpbmc7CitleHRlcm4gY29uc3QgY2hhciAqZXh0MmZzX3Rlc3Rfc3RyaW5nOworZXh0ZXJuIHZvaWQgZXh0MmZzX3dhcm5fYml0bWFwKGVycmNvZGVfdCBlcnJjb2RlLCB1bnNpZ25lZCBsb25nIGFyZywKKwkJCSAgICAgICBjb25zdCBjaGFyICpkZXNjcmlwdGlvbik7CitleHRlcm4gdm9pZCBleHQyZnNfd2Fybl9iaXRtYXAyKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJaW50IGNvZGUsIHVuc2lnbmVkIGxvbmcgYXJnKTsKKworI2lmZGVmIE5PX0lOTElORV9GVU5DUworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3Rfc2V0X2JpdCh1bnNpZ25lZCBpbnQgbnIsdm9pZCAqIGFkZHIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfY2xlYXJfYml0KHVuc2lnbmVkIGludCBuciwgdm9pZCAqIGFkZHIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3Rfc2V0X2JpdDY0KF9fdTY0IG5yLHZvaWQgKiBhZGRyKTsKK2V4dGVybiB2b2lkIGV4dDJmc19mYXN0X2NsZWFyX2JpdDY0KF9fdTY0IG5yLCB2b2lkICogYWRkcik7CitleHRlcm4gX191MTYgZXh0MmZzX3N3YWIxNihfX3UxNiB2YWwpOworZXh0ZXJuIF9fdTMyIGV4dDJmc19zd2FiMzIoX191MzIgdmFsKTsKK2V4dGVybiBfX3U2NCBleHQyZnNfc3dhYjY0KF9fdTY0IHZhbCk7CisKK2V4dGVybiBpbnQgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLCBibGtfdCBibG9jayk7CitleHRlcm4gaW50IGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBibGtfdCBibG9jayk7CitleHRlcm4gaW50IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcChleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwgYmxrX3QgYmxvY2spOworCitleHRlcm4gaW50IGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwgZXh0Ml9pbm9fdCBpbm9kZSk7CitleHRlcm4gaW50IGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBleHQyX2lub190IGlub2RlKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLCBleHQyX2lub190IGlub2RlKTsKKworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgYmxrX3QgYmxvY2spOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcChleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgIGJsa190IGJsb2NrKTsKK2V4dGVybiBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSBibGtfdCBibG9jayk7CisKK2V4dGVybiB2b2lkIGV4dDJmc19mYXN0X21hcmtfaW5vZGVfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkgIGV4dDJfaW5vX3QgaW5vZGUpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgIGV4dDJfaW5vX3QgaW5vZGUpOworZXh0ZXJuIGludCBleHQyZnNfZmFzdF90ZXN0X2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJIGV4dDJfaW5vX3QgaW5vZGUpOworZXh0ZXJuIGJsa190IGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3N0YXJ0KGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwKTsKK2V4dGVybiBleHQyX2lub190IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3N0YXJ0KGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwKTsKK2V4dGVybiBibGtfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9lbmQoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwKTsKKworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCQlibGtfdCBibG9jaywgaW50IG51bSk7CitleHRlcm4gdm9pZCBleHQyZnNfZmFzdF91bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJICBibGtfdCBibG9jaywgaW50IG51bSk7CitleHRlcm4gaW50IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICAgYmxrX3QgYmxvY2ssIGludCBudW0pOworI2VuZGlmCisKKy8qIFRoZXNlIGZ1bmN0aW9ucyByb3V0aW5lcyBtb3ZlZCB0byBnZW5fYml0bWFwLmMgKi8KK2V4dGVybiB2b2lkIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgYmxrX3QgYmxvY2ssIGludCBudW0pOworZXh0ZXJuIHZvaWQgZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgYmxrX3QgYmxvY2ssIGludCBudW0pOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgYmxrX3QgYmxvY2ssIGludCBudW0pOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXBfcmFuZ2UoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgaW5vX3QgaW5vZGUsIGludCBudW0pOworZXh0ZXJuIGludCBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCQkgX191MzIgYml0bm8pOworZXh0ZXJuIGludCBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgIGJsa190IGJpdG5vKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgICBibGtfdCBiaXRubyk7CitleHRlcm4gaW50IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICBibGtfdCBibG9jaywgaW50IG51bSk7CitleHRlcm4gdm9pZCBleHQyZnNfc2V0X2JpdG1hcF9wYWRkaW5nKGV4dDJmc19nZW5lcmljX2JpdG1hcCBtYXApOworZXh0ZXJuIF9fdTMyIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfc3RhcnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCk7CitleHRlcm4gX191MzIgZXh0MmZzX2dldF9nZW5lcmljX2JpdG1hcF9lbmQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCk7CisKKy8qIDY0LWJpdCB2ZXJzaW9ucyAqLworCisjaWZkZWYgTk9fSU5MSU5FX0ZVTkNTCitleHRlcm4gaW50IGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICBibGs2NF90IGJsb2NrKTsKK2V4dGVybiBpbnQgZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBibGs2NF90IGJsb2NrKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIGJsazY0X3QgYmxvY2spOworCitleHRlcm4gaW50IGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcDIoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICBleHQyX2lub190IGlub2RlKTsKK2V4dGVybiBpbnQgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBleHQyX2lub190IGlub2RlKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIGV4dDJfaW5vX3QgaW5vZGUpOworCitleHRlcm4gdm9pZCBleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgIGJsazY0X3QgYmxvY2spOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgYmxrNjRfdCBibG9jayk7CitleHRlcm4gaW50IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICBibGs2NF90IGJsb2NrKTsKKworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkgICBleHQyX2lub190IGlub2RlKTsKK2V4dGVybiB2b2lkIGV4dDJmc19mYXN0X3VubWFya19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgZXh0Ml9pbm9fdCBpbm9kZSk7CitleHRlcm4gaW50IGV4dDJmc19mYXN0X3Rlc3RfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICBleHQyX2lub190IGlub2RlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJICAgICAgYmxrNjRfdCBzdGFydCwKKwkJCQkJCSAgICAgIGJsazY0X3QgZW5kLAorCQkJCQkJICAgICAgYmxrNjRfdCAqb3V0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkJICAgICAgZXh0Ml9pbm9fdCBzdGFydCwKKwkJCQkJCSAgICAgIGV4dDJfaW5vX3QgZW5kLAorCQkJCQkJICAgICAgZXh0Ml9pbm9fdCAqb3V0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkgICAgIGJsazY0X3Qgc3RhcnQsCisJCQkJCQkgICAgIGJsazY0X3QgZW5kLAorCQkJCQkJICAgICBibGs2NF90ICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF9zZXRfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgICAgIGV4dDJfaW5vX3Qgc3RhcnQsCisJCQkJCQkgICAgICBleHQyX2lub190IGVuZCwKKwkJCQkJCSAgICAgIGV4dDJfaW5vX3QgKm91dCk7CitleHRlcm4gYmxrNjRfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9zdGFydDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfc3RhcnQyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwKTsKK2V4dGVybiBibGs2NF90IGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX2VuZDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCk7CisKK2V4dGVybiBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJYmxrNjRfdCBibG9jaywKKwkJCQkJCXVuc2lnbmVkIGludCBudW0pOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJIGJsazY0X3QgYmxvY2ssCisJCQkJCQkgdW5zaWduZWQgaW50IG51bSk7CitleHRlcm4gdm9pZCBleHQyZnNfZmFzdF91bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgIGJsazY0X3QgYmxvY2ssCisJCQkJCQkgICB1bnNpZ25lZCBpbnQgbnVtKTsKKyNlbmRpZgorCisvKiBUaGVzZSByb3V0aW5lcyBtb3ZlZCB0byBnZW5fYml0bWFwNjQuYyAqLworZXh0ZXJuIHZvaWQgZXh0MmZzX2NsZWFyX2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfZ2VuZXJpY19ibWFwKGVycmNvZGVfdCBuZXEsCisJCQkJCSAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMSwKKwkJCQkJICAgICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm0yKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3BhZGRpbmcoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXApOworZXh0ZXJuIGludCBleHQyZnNfbWFya19nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgYmxrNjRfdCBiaXRubyk7CitleHRlcm4gaW50IGV4dDJmc191bm1hcmtfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICAgYmxrNjRfdCBiaXRubyk7CitleHRlcm4gaW50IGV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICBibGs2NF90IGJpdG5vKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgYmxrNjRfdCBibG9jaywgdW5zaWduZWQgaW50IG51bSk7CitleHRlcm4gX191NjQgZXh0MmZzX2dldF9nZW5lcmljX2JtYXBfc3RhcnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCk7CitleHRlcm4gX191NjQgZXh0MmZzX2dldF9nZW5lcmljX2JtYXBfZW5kKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICBibGs2NF90IGJsb2NrLCB1bnNpZ25lZCBpbnQgbnVtKTsKK2V4dGVybiB2b2lkIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICBibGs2NF90IGJsb2NrLCB1bnNpZ25lZCBpbnQgbnVtKTsKK2V4dGVybiB2b2lkIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgICAgYmxrNjRfdCBibG9jaywgdW5zaWduZWQgaW50IG51bSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkgICAgIF9fdTY0IHN0YXJ0LCBfX3U2NCBlbmQsCisJCQkJCQkgICAgIF9fdTY0ICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF9zZXRfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkgICAgX191NjQgc3RhcnQsIF9fdTY0IGVuZCwKKwkJCQkJCSAgICBfX3U2NCAqb3V0KTsKKworLyoKKyAqIFRoZSBpbmxpbmUgcm91dGluZXMgdGhlbXNlbHZlcy4uLgorICoKKyAqIElmIE5PX0lOTElORV9GVU5DUyBpcyBkZWZpbmVkLCB0aGVuIHdlIHdvbid0IHRyeSB0byBkbyBpbmxpbmUKKyAqIGZ1bmN0aW9ucyBhdCBhbGw7IHRoZXkgd2lsbCBiZSBpbmNsdWRlZCBhcyBub3JtYWwgZnVuY3Rpb25zIGluCisgKiBpbmxpbmUuYworICovCisjaWZkZWYgTk9fSU5MSU5FX0ZVTkNTCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmIChkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9faTQ4Nl9fKSB8fCBcCisJCQkgICBkZWZpbmVkKF9faTU4Nl9fKSkpCisJLyogVGhpcyBwcmV2ZW50cyBiaXRvcHMuYyBmcm9tIHRyeWluZyB0byBpbmNsdWRlIHRoZSBDICovCisJLyogZnVuY3Rpb24gdmVyc2lvbiBvZiB0aGVzZSBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgX0VYVDJfSEFWRV9BU01fQklUT1BTXworI2VuZGlmCisjZW5kaWYgLyogTk9fSU5MSU5FX0ZVTkNTICovCisKKyNpZiAoZGVmaW5lZChJTkNMVURFX0lOTElORV9GVU5DUykgfHwgIWRlZmluZWQoTk9fSU5MSU5FX0ZVTkNTKSkKKyNpZmRlZiBJTkNMVURFX0lOTElORV9GVU5DUworI2lmIChfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwpCisjZGVmaW5lIF9JTkxJTkVfIGV4dGVybiBpbmxpbmUKKyNlbHNlCisjZGVmaW5lIF9JTkxJTkVfIGlubGluZQorI2VuZGlmCisjZWxzZSAvKiAhSU5DTFVERV9JTkxJTkUgRlVOQ1MgKi8KKyNpZiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMKQorI2RlZmluZSBfSU5MSU5FXyBpbmxpbmUKKyNlbHNlIC8qIG5vdCBDOTkgKi8KKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBfSU5MSU5FXyBleHRlcm4gX19pbmxpbmVfXworI2Vsc2UJCQkJLyogRm9yIFdhdGNvbSBDICovCisjZGVmaW5lIF9JTkxJTkVfIGV4dGVybiBpbmxpbmUKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLworI2VuZGlmIC8qIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCAqLworI2VuZGlmIC8qIElOQ0xVREVfSU5MSU5FX0ZVTkNTICovCisKKy8qCisgKiBGYXN0IGJpdCBzZXQvY2xlYXIgZnVuY3Rpb25zIHRoYXQgZG9lc24ndCBuZWVkIHRvIHJldHVybiB0aGUKKyAqIHByZXZpb3VzIGJpdCB2YWx1ZS4KKyAqLworCitfSU5MSU5FXyB2b2lkIGV4dDJmc19mYXN0X3NldF9iaXQodW5zaWduZWQgaW50IG5yLHZvaWQgKiBhZGRyKQoreworCXVuc2lnbmVkIGNoYXIJKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCSpBRERSIHw9ICh1bnNpZ25lZCBjaGFyKSAoMSA8PCAobnIgJiAweDA3KSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfY2xlYXJfYml0KHVuc2lnbmVkIGludCBuciwgdm9pZCAqIGFkZHIpCit7CisJdW5zaWduZWQgY2hhcgkqQUREUiA9ICh1bnNpZ25lZCBjaGFyICopIGFkZHI7CisKKwlBRERSICs9IG5yID4+IDM7CisJKkFERFIgJj0gKHVuc2lnbmVkIGNoYXIpIH4oMSA8PCAobnIgJiAweDA3KSk7Cit9CisKKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF9zZXRfYml0NjQoX191NjQgbnIsIHZvaWQgKiBhZGRyKQoreworCXVuc2lnbmVkIGNoYXIJKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCSpBRERSIHw9ICh1bnNpZ25lZCBjaGFyKSAoMSA8PCAobnIgJiAweDA3KSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfY2xlYXJfYml0NjQoX191NjQgbnIsIHZvaWQgKiBhZGRyKQoreworCXVuc2lnbmVkIGNoYXIJKkFERFIgPSAodW5zaWduZWQgY2hhciAqKSBhZGRyOworCisJQUREUiArPSBuciA+PiAzOworCSpBRERSICY9ICh1bnNpZ25lZCBjaGFyKSB+KDEgPDwgKG5yICYgMHgwNykpOworfQorCisKKyNpZiAoKGRlZmluZWQgX19HTlVDX18pICYmICFkZWZpbmVkKF9FWFQyX1VTRV9DX1ZFUlNJT05TXykgJiYgXAorICAgICAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2k0ODZfXykgfHwgZGVmaW5lZChfX2k1ODZfXykpKQorCisjZGVmaW5lIF9FWFQyX0hBVkVfQVNNX0JJVE9QU18KKyNkZWZpbmUgX0VYVDJfSEFWRV9BU01fU1dBQl8KKworLyoKKyAqIFRoZXNlIGFyZSBkb25lIGJ5IGlubGluZSBhc3NlbWJseSBmb3Igc3BlZWQgcmVhc29ucy4uLi4uCisgKgorICogQWxsIGJpdG9wZXJhdGlvbnMgcmV0dXJuIDAgaWYgdGhlIGJpdCB3YXMgY2xlYXJlZCBiZWZvcmUgdGhlCisgKiBvcGVyYXRpb24gYW5kICE9IDAgaWYgaXQgd2FzIG5vdC4gIEJpdCAwIGlzIHRoZSBMU0Igb2YgYWRkcjsgYml0IDMyCisgKiBpcyB0aGUgTFNCIG9mIChhZGRyKzEpLgorICovCisKKy8qCisgKiBTb21lIGhhY2tzIHRvIGRlZmVhdCBnY2Mgb3Zlci1vcHRpbWl6YXRpb25zLi4KKyAqLworc3RydWN0IF9fZHVtbXlfaCB7IHVuc2lnbmVkIGxvbmcgYVsxMDBdOyB9OworI2RlZmluZSBFWFQyRlNfQUREUiAoKihzdHJ1Y3QgX19kdW1teV9oICopIGFkZHIpCisjZGVmaW5lIEVYVDJGU19DT05TVF9BRERSICgqKGNvbnN0IHN0cnVjdCBfX2R1bW15X2ggKikgYWRkcikKKworX0lOTElORV8gaW50IGV4dDJmc19zZXRfYml0KHVuc2lnbmVkIGludCBuciwgdm9pZCAqIGFkZHIpCit7CisJaW50IG9sZGJpdDsKKworCWFkZHIgPSAodm9pZCAqKSAoKCh1bnNpZ25lZCBjaGFyICopIGFkZHIpICsgKG5yID4+IDMpKTsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygiYnRzbCAlMiwlMVxuXHRzYmJsICUwLCUwIgorCQk6Ij1yIiAob2xkYml0KSwiK20iIChFWFQyRlNfQUREUikKKwkJOiJyIiAobnIgJiA3KSk7CisJcmV0dXJuIG9sZGJpdDsKK30KKworX0lOTElORV8gaW50IGV4dDJmc19jbGVhcl9iaXQodW5zaWduZWQgaW50IG5yLCB2b2lkICogYWRkcikKK3sKKwlpbnQgb2xkYml0OworCisJYWRkciA9ICh2b2lkICopICgoKHVuc2lnbmVkIGNoYXIgKikgYWRkcikgKyAobnIgPj4gMykpOworCV9fYXNtX18gX192b2xhdGlsZV9fKCJidHJsICUyLCUxXG5cdHNiYmwgJTAsJTAiCisJCToiPXIiIChvbGRiaXQpLCIrbSIgKEVYVDJGU19BRERSKQorCQk6InIiIChuciAmIDcpKTsKKwlyZXR1cm4gb2xkYml0OworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX3Rlc3RfYml0KHVuc2lnbmVkIGludCBuciwgY29uc3Qgdm9pZCAqIGFkZHIpCit7CisJaW50IG9sZGJpdDsKKworCWFkZHIgPSAoY29uc3Qgdm9pZCAqKSAoKChjb25zdCB1bnNpZ25lZCBjaGFyICopIGFkZHIpICsgKG5yID4+IDMpKTsKKwlfX2FzbV9fIF9fdm9sYXRpbGVfXygiYnRsICUyLCUxXG5cdHNiYmwgJTAsJTAiCisJCToiPXIiIChvbGRiaXQpCisJCToibSIgKEVYVDJGU19DT05TVF9BRERSKSwiciIgKG5yICYgNykpOworCXJldHVybiBvbGRiaXQ7Cit9CisKK19JTkxJTkVfIF9fdTMyIGV4dDJmc19zd2FiMzIoX191MzIgdmFsKQoreworI2lmZGVmIEVYVDJGU19SRVFVSVJFXzQ4NgorCV9fYXNtX18oImJzd2FwICUwIiA6ICI9ciIgKHZhbCkgOiAiMCIgKHZhbCkpOworI2Vsc2UKKwlfX2FzbV9fKCJ4Y2hnYiAlYjAsJWgwXG5cdCIJLyogc3dhcCBsb3dlciBieXRlcwkqLworCQkicm9ybCAkMTYsJTBcblx0IgkvKiBzd2FwIHdvcmRzCQkqLworCQkieGNoZ2IgJWIwLCVoMCIJCS8qIHN3YXAgaGlnaGVyIGJ5dGVzCSovCisJCToiPXEiICh2YWwpCisJCTogIjAiICh2YWwpKTsKKyNlbmRpZgorCXJldHVybiB2YWw7Cit9CisKK19JTkxJTkVfIF9fdTE2IGV4dDJmc19zd2FiMTYoX191MTYgdmFsKQoreworCV9fYXNtX18oInhjaGdiICViMCwlaDAiCQkvKiBzd2FwIGJ5dGVzCQkqLyBcCisJCTogIj1xIiAodmFsKSBcCisJCTogICIwIiAodmFsKSk7IFwKKwkJcmV0dXJuIHZhbDsKK30KKworI3VuZGVmIEVYVDJGU19BRERSCisKKyNlbmRpZgkvKiBpMzg2ICovCisKKworI2lmICFkZWZpbmVkKF9FWFQyX0hBVkVfQVNNX1NXQUJfKQorCitfSU5MSU5FXyBfX3UxNiBleHQyZnNfc3dhYjE2KF9fdTE2IHZhbCkKK3sKKwlyZXR1cm4gKHZhbCA+PiA4KSB8IChfX3UxNikgKHZhbCA8PCA4KTsKK30KKworX0lOTElORV8gX191MzIgZXh0MmZzX3N3YWIzMihfX3UzMiB2YWwpCit7CisJcmV0dXJuICgodmFsPj4yNCkgfCAoKHZhbD4+OCkmMHhGRjAwKSB8CisJCSgodmFsPDw4KSYweEZGMDAwMCkgfCAodmFsPDwyNCkpOworfQorCisjZW5kaWYgLyogIV9FWFQyX0hBVkVfQVNNX1NXQUIgKi8KKworX0lOTElORV8gX191NjQgZXh0MmZzX3N3YWI2NChfX3U2NCB2YWwpCit7CisJcmV0dXJuIChleHQyZnNfc3dhYjMyKChfX3UzMikgKHZhbCA+PiAzMikpIHwKKwkJKCgoX191NjQpZXh0MmZzX3N3YWIzMih2YWwgJiAweEZGRkZGRkZGVUwpKSA8PCAzMikpOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBibGtfdCBibG9jaykKK3sKKwlyZXR1cm4gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgIGJsb2NrKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgYmxrX3QgYmxvY2spCit7CisJcmV0dXJuIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgICAgYmxvY2spOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgICBibGtfdCBibG9jaykKK3sKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgIGJsb2NrKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgICAgZXh0Ml9pbm9fdCBpbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgIGlub2RlKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkgZXh0Ml9pbm9fdCBpbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJICAgICBpbm9kZSk7Cit9CisKK19JTkxJTkVfIGludCBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICAgIGV4dDJfaW5vX3QgaW5vZGUpCit7CisJcmV0dXJuIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJICBpbm9kZSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICBibGtfdCBibG9jaykKK3sKKwlleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsIGJsb2NrKTsKK30KKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF91bm1hcmtfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICBibGtfdCBibG9jaykKK3sKKwlleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwgYmxvY2spOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICBibGtfdCBibG9jaykKK3sKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgIGJsb2NrKTsKK30KKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF9tYXJrX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgIGV4dDJfaW5vX3QgaW5vZGUpCit7CisJZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLCBpbm9kZSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgICAgZXh0Ml9pbm9fdCBpbm9kZSkKK3sKKwlleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwgaW5vZGUpOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9pbm9kZV9iaXRtYXAoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgIGV4dDJfaW5vX3QgaW5vZGUpCit7CisJcmV0dXJuIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJICBpbm9kZSk7Cit9CisKK19JTkxJTkVfIGJsa190IGV4dDJmc19nZXRfYmxvY2tfYml0bWFwX3N0YXJ0KGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwKQoreworCXJldHVybiBleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX3N0YXJ0KChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCk7Cit9CisKK19JTkxJTkVfIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfc3RhcnQoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXApCit7CisJcmV0dXJuIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfc3RhcnQoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwKTsKK30KKworX0lOTElORV8gYmxrX3QgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfZW5kKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwKQoreworCXJldHVybiBleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX2VuZCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXApOworfQorCitfSU5MSU5FXyBleHQyX2lub190IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX2VuZChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCkKK3sKKwlyZXR1cm4gZXh0MmZzX2dldF9nZW5lcmljX2JpdG1hcF9lbmQoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJIGJsa190IGJsb2NrLCBpbnQgbnVtKQoreworCXJldHVybiBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UoYml0bWFwLCBibG9jaywgbnVtKTsKK30KKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgYmxrX3QgYmxvY2ssIGludCBudW0pCit7CisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlKGJpdG1hcCwgYmxvY2ssIG51bSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgICBibGtfdCBibG9jaywgaW50IG51bSkKK3sKKwlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZShiaXRtYXAsIGJsb2NrLCBudW0pOworfQorCisvKiA2NC1iaXQgdmVyc2lvbnMgKi8KKworX0lOTElORV8gaW50IGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICAgIGJsazY0X3QgYmxvY2spCit7CisJcmV0dXJuIGV4dDJmc19tYXJrX2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJCWJsb2NrKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJIGJsazY0X3QgYmxvY2spCit7CisJcmV0dXJuIGV4dDJmc191bm1hcmtfZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwgYmxvY2spOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgICAgYmxrNjRfdCBibG9jaykKK3sKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJYmxvY2spOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgICAgZXh0Ml9pbm9fdCBpbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX21hcmtfZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJaW5vZGUpOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkgZXh0Ml9pbm9fdCBpbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX3VubWFya19nZW5lcmljX2JtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkgIGlub2RlKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgICAgIGV4dDJfaW5vX3QgaW5vZGUpCit7CisJcmV0dXJuIGV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJCWlub2RlKTsKK30KKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF9tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgYmxrNjRfdCBibG9jaykKK3sKKwlleHQyZnNfbWFya19nZW5lcmljX2JtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLCBibG9jayk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgICBibGs2NF90IGJsb2NrKQoreworCWV4dDJmc191bm1hcmtfZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwgYmxvY2spOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgYmxrNjRfdCBibG9jaykKK3sKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJYmxvY2spOworfQorCitfSU5MSU5FXyB2b2lkIGV4dDJmc19mYXN0X21hcmtfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgICBleHQyX2lub190IGlub2RlKQoreworCWV4dDJmc19tYXJrX2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsIGlub2RlKTsKK30KKworX0lOTElORV8gdm9pZCBleHQyZnNfZmFzdF91bm1hcmtfaW5vZGVfYml0bWFwMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgICAgIGV4dDJfaW5vX3QgaW5vZGUpCit7CisJZXh0MmZzX3VubWFya19nZW5lcmljX2JtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLCBpbm9kZSk7Cit9CisKK19JTkxJTkVfIGludCBleHQyZnNfZmFzdF90ZXN0X2lub2RlX2JpdG1hcDIoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICBleHQyX2lub190IGlub2RlKQoreworCXJldHVybiBleHQyZnNfdGVzdF9nZW5lcmljX2JtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQlpbm9kZSk7Cit9CisKK19JTkxJTkVfIGVycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF96ZXJvX2Jsb2NrX2JpdG1hcDIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkJYmxrNjRfdCBzdGFydCwKKwkJCQkJCQlibGs2NF90IGVuZCwKKwkJCQkJCQlibGs2NF90ICpvdXQpCit7CisJX191NjQgbzsKKwllcnJjb2RlX3QgcnY7CisKKwlydiA9IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fZ2VuZXJpY19ibWFwKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCwKKwkJCQkJCSBzdGFydCwgZW5kLCAmbyk7CisJaWYgKCFydikKKwkJKm91dCA9IG87CisJcmV0dXJuIHJ2OworfQorCitfSU5MSU5FXyBlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19pbm9kZV9iaXRtYXAyKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwLAorCQkJCQkJCWV4dDJfaW5vX3Qgc3RhcnQsCisJCQkJCQkJZXh0Ml9pbm9fdCBlbmQsCisJCQkJCQkJZXh0Ml9pbm9fdCAqb3V0KQoreworCV9fdTY0IG87CisJZXJyY29kZV90IHJ2OworCisJcnYgPSBleHQyZnNfZmluZF9maXJzdF96ZXJvX2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJCQkgc3RhcnQsIGVuZCwgJm8pOworCWlmICghcnYpCisJCSpvdXQgPSAoZXh0Ml9pbm9fdCkgbzsKKwlyZXR1cm4gcnY7Cit9CisKK19JTkxJTkVfIGVycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF9zZXRfYmxvY2tfYml0bWFwMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgICAgICBibGs2NF90IHN0YXJ0LAorCQkJCQkJICAgICAgIGJsazY0X3QgZW5kLAorCQkJCQkJICAgICAgIGJsazY0X3QgKm91dCkKK3sKKwlfX3U2NCBvOworCWVycmNvZGVfdCBydjsKKworCXJ2ID0gZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXAsCisJCQkJCQlzdGFydCwgZW5kLCAmbyk7CisJaWYgKCFydikKKwkJKm91dCA9IG87CisJcmV0dXJuIHJ2OworfQorCitfSU5MSU5FXyBlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2lub2RlX2JpdG1hcDIoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkgICAgICAgZXh0Ml9pbm9fdCBzdGFydCwKKwkJCQkJCSAgICAgICBleHQyX2lub190IGVuZCwKKwkJCQkJCSAgICAgICBleHQyX2lub190ICpvdXQpCit7CisJX191NjQgbzsKKwllcnJjb2RlX3QgcnY7CisKKwlydiA9IGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JtYXAoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYml0bWFwLAorCQkJCQkJc3RhcnQsIGVuZCwgJm8pOworCWlmICghcnYpCisJCSpvdXQgPSAoZXh0Ml9pbm9fdCkgbzsKKwlyZXR1cm4gcnY7Cit9CisKK19JTkxJTkVfIGJsazY0X3QgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfc3RhcnQyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwKQoreworCXJldHVybiBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9zdGFydCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXApOworfQorCitfSU5MSU5FXyBleHQyX2lub190IGV4dDJmc19nZXRfaW5vZGVfYml0bWFwX3N0YXJ0MihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCkKK3sKKwlyZXR1cm4gKGV4dDJfaW5vX3QpIGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3N0YXJ0KChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCk7Cit9CisKK19JTkxJTkVfIGJsazY0X3QgZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfZW5kMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCkKK3sKKwlyZXR1cm4gZXh0MmZzX2dldF9nZW5lcmljX2JtYXBfZW5kKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJpdG1hcCk7Cit9CisKK19JTkxJTkVfIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfZW5kMihleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCkKK3sKKwlyZXR1cm4gKGV4dDJfaW5vX3QpIGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX2VuZCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBiaXRtYXApOworfQorCitfSU5MSU5FXyBpbnQgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJICBibGs2NF90IGJsb2NrLAorCQkJCQkJICB1bnNpZ25lZCBpbnQgbnVtKQoreworCXJldHVybiBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXBfcmFuZ2UyKGJpdG1hcCwgYmxvY2ssIG51bSk7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2Zhc3RfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJICAgYmxrNjRfdCBibG9jaywKKwkJCQkJCSAgIHVuc2lnbmVkIGludCBudW0pCit7CisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihiaXRtYXAsIGJsb2NrLCBudW0pOworfQorCitfSU5MSU5FXyB2b2lkIGV4dDJmc19mYXN0X3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkJICAgICBibGs2NF90IGJsb2NrLAorCQkJCQkJICAgICB1bnNpZ25lZCBpbnQgbnVtKQoreworCWV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihiaXRtYXAsIGJsb2NrLCBudW0pOworfQorCisjdW5kZWYgX0lOTElORV8KKyNlbmRpZgorCisjaWZuZGVmIF9FWFQyX0hBVkVfQVNNX0JJVE9QU18KK2V4dGVybiBpbnQgZXh0MmZzX3NldF9iaXQodW5zaWduZWQgaW50IG5yLHZvaWQgKiBhZGRyKTsKK2V4dGVybiBpbnQgZXh0MmZzX2NsZWFyX2JpdCh1bnNpZ25lZCBpbnQgbnIsIHZvaWQgKiBhZGRyKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfYml0KHVuc2lnbmVkIGludCBuciwgY29uc3Qgdm9pZCAqIGFkZHIpOworI2VuZGlmCisKK2V4dGVybiBpbnQgZXh0MmZzX3NldF9iaXQ2NChfX3U2NCBucix2b2lkICogYWRkcik7CitleHRlcm4gaW50IGV4dDJmc19jbGVhcl9iaXQ2NChfX3U2NCBuciwgdm9pZCAqIGFkZHIpOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF9iaXQ2NChfX3U2NCBuciwgY29uc3Qgdm9pZCAqIGFkZHIpOworZXh0ZXJuIHVuc2lnbmVkIGludCBleHQyZnNfYml0Y291bnQoY29uc3Qgdm9pZCAqYWRkciwgdW5zaWduZWQgaW50IG5ieXRlcyk7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibGttYXA2NF9iYS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmxrbWFwNjRfYmEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzA3YTYxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmxrbWFwNjRfYmEuYwpAQCAtMCwwICsxLDQ5MiBAQAorLyoKKyAqIGJsa21hcDY0X2JhLmMgLS0tIFNpbXBsZSBiaXRhcnJheSBpbXBsZW1lbnRhdGlvbiBmb3IgYml0bWFwcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKyNpbmNsdWRlICJibWFwNjQuaCIKKworLyoKKyAqIFByaXZhdGUgZGF0YSBmb3IgYml0IGFycmF5IGltcGxlbWVudGF0aW9uIG9mIGJpdG1hcCBvcHMuCisgKiBDdXJyZW50bHksIHRoaXMgaXMganVzdCBhIHBvaW50ZXIgdG8gb3VyIGJpZyBmbGF0IGh1bmsgb2YgbWVtb3J5LAorICogZXhhY3RseSBlcXVpdmFsZW50IHRvIHRoZSBvbGQtc2tvb2wgY2hhciAqIGJpdG1hcCBtZW1iZXIuCisgKi8KKworc3RydWN0IGV4dDJmc19iYV9wcml2YXRlX3N0cnVjdCB7CisJY2hhciAqYml0YXJyYXk7Cit9OworCit0eXBlZGVmIHN0cnVjdCBleHQyZnNfYmFfcHJpdmF0ZV9zdHJ1Y3QgKmV4dDJmc19iYV9wcml2YXRlOworCitzdGF0aWMgZXJyY29kZV90IGJhX2FsbG9jX3ByaXZhdGVfZGF0YSAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicDsKKwllcnJjb2RlX3QJcmV0dmFsOworCXNpemVfdAkJc2l6ZTsKKworCS8qCisJICogU2luY2Ugd2Ugb25seSBoYXZlIHRoZSBvbmUgcG9pbnRlciwgd2UgY291bGQganVzdCBzaG92ZSBvdXIKKwkgKiBwcml2YXRlIGRhdGEgaW4gdGhlIHZvaWQgKnByaXZhdGUgZmllbGQgaXRzZWxmLCBidXQgdGhlbgorCSAqIHdlJ2QgaGF2ZSB0byBkbyBhIGZhaXIgYml0IG9mIHJld3JpdGluZyBpZiB3ZSBldmVyIGFkZGVkIGEKKwkgKiBmaWVsZC4gIEknbSBhZ25vc3RpYy4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2YgKGV4dDJmc19iYV9wcml2YXRlKSwgJmJwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJc2l6ZSA9IChzaXplX3QpICgoKGJpdG1hcC0+cmVhbF9lbmQgLSBiaXRtYXAtPnN0YXJ0KSAvIDgpICsgMSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplLCAmYnAtPmJpdGFycmF5KTsKKwlpZiAocmV0dmFsKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYnApOworCQlicCA9IDA7CisJCXJldHVybiByZXR2YWw7CisJfQorCWJpdG1hcC0+cHJpdmF0ZSA9ICh2b2lkICopIGJwOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGJhX25ld19ibWFwKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicDsKKwllcnJjb2RlX3QJcmV0dmFsOworCXNpemVfdAkJc2l6ZTsKKworCXJldHZhbCA9IGJhX2FsbG9jX3ByaXZhdGVfZGF0YSAoYml0bWFwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJYnAgPSAoZXh0MmZzX2JhX3ByaXZhdGUpIGJpdG1hcC0+cHJpdmF0ZTsKKwlzaXplID0gKHNpemVfdCkgKCgoYml0bWFwLT5yZWFsX2VuZCAtIGJpdG1hcC0+c3RhcnQpIC8gOCkgKyAxKTsKKwltZW1zZXQoYnAtPmJpdGFycmF5LCAwLCBzaXplKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBiYV9mcmVlX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgYml0bWFwLT5wcml2YXRlOworCisJaWYgKCFicCkKKwkJcmV0dXJuOworCisJaWYgKGJwLT5iaXRhcnJheSkgeworCQlleHQyZnNfZnJlZV9tZW0gKCZicC0+Yml0YXJyYXkpOworCQlicC0+Yml0YXJyYXkgPSAwOworCX0KKwlleHQyZnNfZnJlZV9tZW0gKCZicCk7CisJYnAgPSAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGJhX2NvcHlfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgc3JjLAorCQkJICAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGRlc3QpCit7CisJZXh0MmZzX2JhX3ByaXZhdGUgc3JjX2JwID0gKGV4dDJmc19iYV9wcml2YXRlKSBzcmMtPnByaXZhdGU7CisJZXh0MmZzX2JhX3ByaXZhdGUgZGVzdF9icDsKKwllcnJjb2RlX3QgcmV0dmFsOworCXNpemVfdCBzaXplOworCisJcmV0dmFsID0gYmFfYWxsb2NfcHJpdmF0ZV9kYXRhIChkZXN0KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZGVzdF9icCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgZGVzdC0+cHJpdmF0ZTsKKworCXNpemUgPSAoc2l6ZV90KSAoKChzcmMtPnJlYWxfZW5kIC0gc3JjLT5zdGFydCkgLyA4KSArIDEpOworCW1lbWNweSAoZGVzdF9icC0+Yml0YXJyYXksIHNyY19icC0+Yml0YXJyYXksIHNpemUpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgYmFfcmVzaXplX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJX191NjQgbmV3X2VuZCwgX191NjQgbmV3X3JlYWxfZW5kKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBibWFwLT5wcml2YXRlOworCWVycmNvZGVfdAlyZXR2YWw7CisJc2l6ZV90CQlzaXplLCBuZXdfc2l6ZTsKKwlfX3U2NAkJYml0bm87CisKKwkvKgorCSAqIElmIHdlJ3JlIGV4cGFuZGluZyB0aGUgYml0bWFwLCBtYWtlIHN1cmUgYWxsIG9mIHRoZSBuZXcKKwkgKiBwYXJ0cyBvZiB0aGUgYml0bWFwIGFyZSB6ZXJvLgorCSAqLworCWlmIChuZXdfZW5kID4gYm1hcC0+ZW5kKSB7CisJCWJpdG5vID0gYm1hcC0+cmVhbF9lbmQ7CisJCWlmIChiaXRubyA+IG5ld19lbmQpCisJCQliaXRubyA9IG5ld19lbmQ7CisJCWZvciAoOyBiaXRubyA+IGJtYXAtPmVuZDsgYml0bm8tLSkKKwkJCWV4dDJmc19jbGVhcl9iaXQ2NChiaXRubyAtIGJtYXAtPnN0YXJ0LCBicC0+Yml0YXJyYXkpOworCX0KKwlpZiAobmV3X3JlYWxfZW5kID09IGJtYXAtPnJlYWxfZW5kKSB7CisJCWJtYXAtPmVuZCA9IG5ld19lbmQ7CisJCXJldHVybiAwOworCX0KKworCXNpemUgPSAoKGJtYXAtPnJlYWxfZW5kIC0gYm1hcC0+c3RhcnQpIC8gOCkgKyAxOworCW5ld19zaXplID0gKChuZXdfcmVhbF9lbmQgLSBibWFwLT5zdGFydCkgLyA4KSArIDE7CisKKwlpZiAoc2l6ZSAhPSBuZXdfc2l6ZSkgeworCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX21lbShzaXplLCBuZXdfc2l6ZSwgJmJwLT5iaXRhcnJheSk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKwlpZiAobmV3X3NpemUgPiBzaXplKQorCQltZW1zZXQoYnAtPmJpdGFycmF5ICsgc2l6ZSwgMCwgbmV3X3NpemUgLSBzaXplKTsKKworCWJtYXAtPmVuZCA9IG5ld19lbmQ7CisJYm1hcC0+cmVhbF9lbmQgPSBuZXdfcmVhbF9lbmQ7CisJcmV0dXJuIDA7CisKK30KKworc3RhdGljIGludCBiYV9tYXJrX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBiaXRtYXAtPnByaXZhdGU7CisJYmxrNjRfdCBiaXRubyA9IChibGs2NF90KSBhcmc7CisKKwlyZXR1cm4gZXh0MmZzX3NldF9iaXQ2NChiaXRubyAtIGJpdG1hcC0+c3RhcnQsIGJwLT5iaXRhcnJheSk7Cit9CisKK3N0YXRpYyBpbnQgYmFfdW5tYXJrX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBiaXRtYXAtPnByaXZhdGU7CisJYmxrNjRfdCBiaXRubyA9IChibGs2NF90KSBhcmc7CisKKwlyZXR1cm4gZXh0MmZzX2NsZWFyX2JpdDY0KGJpdG5vIC0gYml0bWFwLT5zdGFydCwgYnAtPmJpdGFycmF5KTsKK30KKworc3RhdGljIGludCBiYV90ZXN0X2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBiaXRtYXAtPnByaXZhdGU7CisJYmxrNjRfdCBiaXRubyA9IChibGs2NF90KSBhcmc7CisKKwlyZXR1cm4gZXh0MmZzX3Rlc3RfYml0NjQoYml0bm8gLSBiaXRtYXAtPnN0YXJ0LCBicC0+Yml0YXJyYXkpOworfQorCitzdGF0aWMgdm9pZCBiYV9tYXJrX2JtYXBfZXh0ZW50KGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsIF9fdTY0IGFyZywKKwkJCQl1bnNpZ25lZCBpbnQgbnVtKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBiaXRtYXAtPnByaXZhdGU7CisJYmxrNjRfdCBiaXRubyA9IChibGs2NF90KSBhcmc7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspCisJCWV4dDJmc19mYXN0X3NldF9iaXQ2NChiaXRubyArIGkgLSBiaXRtYXAtPnN0YXJ0LCBicC0+Yml0YXJyYXkpOworfQorCitzdGF0aWMgdm9pZCBiYV91bm1hcmtfYm1hcF9leHRlbnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnLAorCQkJCSAgdW5zaWduZWQgaW50IG51bSkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgYml0bWFwLT5wcml2YXRlOworCWJsazY0X3QgYml0bm8gPSAoYmxrNjRfdCkgYXJnOworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKQorCQlleHQyZnNfZmFzdF9jbGVhcl9iaXQ2NChiaXRubyArIGkgLSBiaXRtYXAtPnN0YXJ0LCBicC0+Yml0YXJyYXkpOworfQorCitzdGF0aWMgaW50IGJhX3Rlc3RfY2xlYXJfYm1hcF9leHRlbnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIF9fdTY0IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuKQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKSBiaXRtYXAtPnByaXZhdGU7CisJX191NjQgc3RhcnRfYnl0ZSwgbGVuX2J5dGUgPSBsZW4gPj4gMzsKKwl1bnNpZ25lZCBpbnQgc3RhcnRfYml0LCBsZW5fYml0ID0gbGVuICUgODsKKwl1bnNpZ25lZCBpbnQgZmlyc3RfYml0ID0gMDsKKwl1bnNpZ25lZCBpbnQgbGFzdF9iaXQgID0gMDsKKwlpbnQgbWFya19jb3VudCA9IDA7CisJaW50IG1hcmtfYml0ID0gMDsKKwlpbnQgaTsKKwljb25zdCBjaGFyICpBRERSOworCisJQUREUiA9IGJwLT5iaXRhcnJheTsKKwlzdGFydCAtPSBiaXRtYXAtPnN0YXJ0OworCXN0YXJ0X2J5dGUgPSBzdGFydCA+PiAzOworCXN0YXJ0X2JpdCA9IHN0YXJ0ICUgODsKKworCWlmIChzdGFydF9iaXQgIT0gMCkgeworCQkvKgorCQkgKiBUaGUgY29tcGFyZWQgc3RhcnQgYmxvY2sgbnVtYmVyIG9yIHN0YXJ0IGlub2RlIG51bWJlcgorCQkgKiBpcyBub3QgdGhlIGZpcnN0IGJpdCBpbiBhIGJ5dGUuCisJCSAqLworCQltYXJrX2NvdW50ID0gOCAtIHN0YXJ0X2JpdDsKKwkJaWYgKGxlbiA8IDggLSBzdGFydF9iaXQpIHsKKwkJCW1hcmtfY291bnQgPSAoaW50KWxlbjsKKwkJCW1hcmtfYml0ID0gbGVuICsgc3RhcnRfYml0IC0gMTsKKwkJfSBlbHNlCisJCQltYXJrX2JpdCA9IDc7CisKKwkJZm9yIChpID0gbWFya19jb3VudDsgaSA+IDA7IGktLSwgbWFya19iaXQtLSkKKwkJCWZpcnN0X2JpdCB8PSAxIDw8IG1hcmtfYml0OworCisJCS8qCisJCSAqIENvbXBhcmUgYmxvY2tzIG9yIGlub2RlcyBpbiB0aGUgZmlyc3QgYnl0ZS4KKwkJICogSWYgdGhlcmUgaXMgYW55IG1hcmtlZCBiaXQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLgorCQkgKi8KKwkJaWYgKGZpcnN0X2JpdCAmIEFERFJbc3RhcnRfYnl0ZV0pCisJCQlyZXR1cm4gMDsKKwkJZWxzZSBpZiAobGVuIDw9IDggLSBzdGFydF9iaXQpCisJCQlyZXR1cm4gMTsKKworCQlzdGFydF9ieXRlKys7CisJCWxlbl9iaXQgPSAobGVuIC0gbWFya19jb3VudCkgJSA4OworCQlsZW5fYnl0ZSA9IChsZW4gLSBtYXJrX2NvdW50KSA+PiAzOworCX0KKworCS8qCisJICogVGhlIGNvbXBhcmVkIHN0YXJ0IGJsb2NrIG51bWJlciBvciBzdGFydCBpbm9kZSBudW1iZXIgaXMKKwkgKiB0aGUgZmlyc3QgYml0IGluIGEgYnl0ZS4KKwkgKi8KKwlpZiAobGVuX2JpdCAhPSAwKSB7CisJCS8qCisJCSAqIFRoZSBjb21wYXJlZCBlbmQgYmxvY2sgbnVtYmVyIG9yIGVuZCBpbm9kZSBudW1iZXIgaXMKKwkJICogbm90IHRoZSBsYXN0IGJpdCBpbiBhIGJ5dGUuCisJCSAqLworCQlmb3IgKG1hcmtfYml0ID0gbGVuX2JpdCAtIDE7IG1hcmtfYml0ID49IDA7IG1hcmtfYml0LS0pCisJCQlsYXN0X2JpdCB8PSAxIDw8IG1hcmtfYml0OworCisJCS8qCisJCSAqIENvbXBhcmUgYmxvY2tzIG9yIGlub2RlcyBpbiB0aGUgbGFzdCBieXRlLgorCQkgKiBJZiB0aGVyZSBpcyBhbnkgbWFya2VkIGJpdCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAuCisJCSAqLworCQlpZiAobGFzdF9iaXQgJiBBRERSW3N0YXJ0X2J5dGUgKyBsZW5fYnl0ZV0pCisJCQlyZXR1cm4gMDsKKwkJZWxzZSBpZiAobGVuX2J5dGUgPT0gMCkKKwkJCXJldHVybiAxOworCX0KKworCS8qIENoZWNrIHdoZXRoZXIgYWxsIGJ5dGVzIGFyZSAwICovCisJcmV0dXJuIGV4dDJmc19tZW1faXNfemVybyhBRERSICsgc3RhcnRfYnl0ZSwgbGVuX2J5dGUpOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QgYmFfc2V0X2JtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIF9fdTY0IHN0YXJ0LCBzaXplX3QgbnVtLCB2b2lkICppbikKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgYml0bWFwLT5wcml2YXRlOworCisJbWVtY3B5IChicC0+Yml0YXJyYXkgKyAoc3RhcnQgPj4gMyksIGluLCAobnVtICsgNykgPj4gMyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBiYV9nZXRfYm1hcF9yYW5nZShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgX191NjQgc3RhcnQsIHNpemVfdCBudW0sIHZvaWQgKm91dCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgYml0bWFwLT5wcml2YXRlOworCisJbWVtY3B5IChvdXQsIGJwLT5iaXRhcnJheSArIChzdGFydCA+PiAzKSwgKG51bSArIDcpID4+IDMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGJhX2NsZWFyX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSkgYml0bWFwLT5wcml2YXRlOworCisJbWVtc2V0KGJwLT5iaXRhcnJheSwgMCwKKwkgICAgICAgKHNpemVfdCkgKCgoYml0bWFwLT5yZWFsX2VuZCAtIGJpdG1hcC0+c3RhcnQpIC8gOCkgKyAxKSk7Cit9CisKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUUworc3RhdGljIHZvaWQgYmFfcHJpbnRfc3RhdHMoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmxsdSBCeXRlcyB1c2VkIGJ5IGJpdGFycmF5XG4iLAorCQkoKGJpdG1hcC0+cmVhbF9lbmQgLSBiaXRtYXAtPnN0YXJ0KSA+PiAzKSArIDEgKworCQlzaXplb2Yoc3RydWN0IGV4dDJmc19iYV9wcml2YXRlX3N0cnVjdCkpOworfQorI2Vsc2UKK3N0YXRpYyB2b2lkIGJhX3ByaW50X3N0YXRzKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworfQorI2VuZGlmCisKKy8qIEZpbmQgdGhlIGZpcnN0IHplcm8gYml0IGJldHdlZW4gc3RhcnQgYW5kIGVuZCwgaW5jbHVzaXZlLiAqLworc3RhdGljIGVycmNvZGVfdCBiYV9maW5kX2ZpcnN0X3plcm8oZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgX191NjQgc3RhcnQsIF9fdTY0IGVuZCwgX191NjQgKm91dCkKK3sKKwlleHQyZnNfYmFfcHJpdmF0ZSBicCA9IChleHQyZnNfYmFfcHJpdmF0ZSliaXRtYXAtPnByaXZhdGU7CisJdW5zaWduZWQgbG9uZyBiaXRwb3MgPSBzdGFydCAtIGJpdG1hcC0+c3RhcnQ7CisJdW5zaWduZWQgbG9uZyBjb3VudCA9IGVuZCAtIHN0YXJ0ICsgMTsKKwlpbnQgYnl0ZV9mb3VuZCA9IDA7IC8qIHdoZXRoZXIgYSAhPSAweGZmIGJ5dGUgaGFzIGJlZW4gZm91bmQgKi8KKwljb25zdCB1bnNpZ25lZCBjaGFyICpwb3M7CisJdW5zaWduZWQgbG9uZyBtYXhfbG9vcF9jb3VudCwgaTsKKworCS8qIHNjYW4gYml0cyB1bnRpbCB3ZSBoaXQgYSBieXRlIGJvdW5kYXJ5ICovCisJd2hpbGUgKChiaXRwb3MgJiAweDcpICE9IDAgJiYgY291bnQgPiAwKSB7CisJCWlmICghZXh0MmZzX3Rlc3RfYml0NjQoYml0cG9zLCBicC0+Yml0YXJyYXkpKSB7CisJCQkqb3V0ID0gYml0cG9zICsgYml0bWFwLT5zdGFydDsKKwkJCXJldHVybiAwOworCQl9CisJCWJpdHBvcysrOworCQljb3VudC0tOworCX0KKworCWlmICghY291bnQpCisJCXJldHVybiBFTk9FTlQ7CisKKwlwb3MgPSAoKHVuc2lnbmVkIGNoYXIgKilicC0+Yml0YXJyYXkpICsgKGJpdHBvcyA+PiAzKTsKKwkvKiBzY2FuIGJ5dGVzIHVudGlsIDgtYnl0ZSAoNjQtYml0KSBhbGlnbmVkICovCisJd2hpbGUgKGNvdW50ID49IDggJiYgKCgodWludHB0cl90KXBvcykgJiAweDA3KSkgeworCQlpZiAoKnBvcyAhPSAweGZmKSB7CisJCQlieXRlX2ZvdW5kID0gMTsKKwkJCWJyZWFrOworCQl9CisJCXBvcysrOworCQljb3VudCAtPSA4OworCQliaXRwb3MgKz0gODsKKwl9CisKKwlpZiAoIWJ5dGVfZm91bmQpIHsKKwkJbWF4X2xvb3BfY291bnQgPSBjb3VudCA+PiA2OyAvKiA4LWJ5dGUgYmxvY2tzICovCisJCWkgPSBtYXhfbG9vcF9jb3VudDsKKwkJd2hpbGUgKGkpIHsKKwkJCWlmICgqKChjb25zdCBfX3U2NCAqKXBvcykgIT0gKChfX3U2NCktMSkpCisJCQkJYnJlYWs7CisJCQlwb3MgKz0gODsKKwkJCWktLTsKKwkJfQorCQljb3VudCAtPSA2NCAqIChtYXhfbG9vcF9jb3VudCAtIGkpOworCQliaXRwb3MgKz0gNjQgKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKworCQltYXhfbG9vcF9jb3VudCA9IGNvdW50ID4+IDM7CisJCWkgPSBtYXhfbG9vcF9jb3VudDsKKwkJd2hpbGUgKGkpIHsKKwkJCWlmICgqcG9zICE9IDB4ZmYpIHsKKwkJCQlieXRlX2ZvdW5kID0gMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXBvcysrOworCQkJaS0tOworCQl9CisJCWNvdW50IC09IDggKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKwkJYml0cG9zICs9IDggKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKwl9CisKKwkvKiBIZXJlIGVpdGhlciBjb3VudCA8IDggb3IgYnl0ZV9mb3VuZCA9PSAxLiAqLworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlpZiAoIWV4dDJmc190ZXN0X2JpdDY0KGJpdHBvcywgYnAtPmJpdGFycmF5KSkgeworCQkJKm91dCA9IGJpdHBvcyArIGJpdG1hcC0+c3RhcnQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQliaXRwb3MrKzsKKwl9CisKKwlyZXR1cm4gRU5PRU5UOworfQorCisvKiBGaW5kIHRoZSBmaXJzdCBvbmUgYml0IGJldHdlZW4gc3RhcnQgYW5kIGVuZCwgaW5jbHVzaXZlLiAqLworc3RhdGljIGVycmNvZGVfdCBiYV9maW5kX2ZpcnN0X3NldChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICBfX3U2NCBzdGFydCwgX191NjQgZW5kLCBfX3U2NCAqb3V0KQoreworCWV4dDJmc19iYV9wcml2YXRlIGJwID0gKGV4dDJmc19iYV9wcml2YXRlKWJpdG1hcC0+cHJpdmF0ZTsKKwl1bnNpZ25lZCBsb25nIGJpdHBvcyA9IHN0YXJ0IC0gYml0bWFwLT5zdGFydDsKKwl1bnNpZ25lZCBsb25nIGNvdW50ID0gZW5kIC0gc3RhcnQgKyAxOworCWludCBieXRlX2ZvdW5kID0gMDsgLyogd2hldGhlciBhICE9IDB4ZmYgYnl0ZSBoYXMgYmVlbiBmb3VuZCAqLworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKnBvczsKKwl1bnNpZ25lZCBsb25nIG1heF9sb29wX2NvdW50LCBpOworCisJLyogc2NhbiBiaXRzIHVudGlsIHdlIGhpdCBhIGJ5dGUgYm91bmRhcnkgKi8KKwl3aGlsZSAoKGJpdHBvcyAmIDB4NykgIT0gMCAmJiBjb3VudCA+IDApIHsKKwkJaWYgKGV4dDJmc190ZXN0X2JpdDY0KGJpdHBvcywgYnAtPmJpdGFycmF5KSkgeworCQkJKm91dCA9IGJpdHBvcyArIGJpdG1hcC0+c3RhcnQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCQliaXRwb3MrKzsKKwkJY291bnQtLTsKKwl9CisKKwlpZiAoIWNvdW50KQorCQlyZXR1cm4gRU5PRU5UOworCisJcG9zID0gKCh1bnNpZ25lZCBjaGFyICopYnAtPmJpdGFycmF5KSArIChiaXRwb3MgPj4gMyk7CisJLyogc2NhbiBieXRlcyB1bnRpbCA4LWJ5dGUgKDY0LWJpdCkgYWxpZ25lZCAqLworCXdoaWxlIChjb3VudCA+PSA4ICYmICgoKHVpbnRwdHJfdClwb3MpICYgMHgwNykpIHsKKwkJaWYgKCpwb3MgIT0gMCkgeworCQkJYnl0ZV9mb3VuZCA9IDE7CisJCQlicmVhazsKKwkJfQorCQlwb3MrKzsKKwkJY291bnQgLT0gODsKKwkJYml0cG9zICs9IDg7CisJfQorCisJaWYgKCFieXRlX2ZvdW5kKSB7CisJCW1heF9sb29wX2NvdW50ID0gY291bnQgPj4gNjsgLyogOC1ieXRlIGJsb2NrcyAqLworCQlpID0gbWF4X2xvb3BfY291bnQ7CisJCXdoaWxlIChpKSB7CisJCQlpZiAoKigoY29uc3QgX191NjQgKilwb3MpICE9IDApCisJCQkJYnJlYWs7CisJCQlwb3MgKz0gODsKKwkJCWktLTsKKwkJfQorCQljb3VudCAtPSA2NCAqIChtYXhfbG9vcF9jb3VudCAtIGkpOworCQliaXRwb3MgKz0gNjQgKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKworCQltYXhfbG9vcF9jb3VudCA9IGNvdW50ID4+IDM7CisJCWkgPSBtYXhfbG9vcF9jb3VudDsKKwkJd2hpbGUgKGkpIHsKKwkJCWlmICgqcG9zICE9IDApIHsKKwkJCQlieXRlX2ZvdW5kID0gMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCXBvcysrOworCQkJaS0tOworCQl9CisJCWNvdW50IC09IDggKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKwkJYml0cG9zICs9IDggKiAobWF4X2xvb3BfY291bnQgLSBpKTsKKwl9CisKKwkvKiBIZXJlIGVpdGhlciBjb3VudCA8IDggb3IgYnl0ZV9mb3VuZCA9PSAxLiAqLworCXdoaWxlIChjb3VudC0tID4gMCkgeworCQlpZiAoZXh0MmZzX3Rlc3RfYml0NjQoYml0cG9zLCBicC0+Yml0YXJyYXkpKSB7CisJCQkqb3V0ID0gYml0cG9zICsgYml0bWFwLT5zdGFydDsKKwkJCXJldHVybiAwOworCQl9CisJCWJpdHBvcysrOworCX0KKworCXJldHVybiBFTk9FTlQ7Cit9CisKK3N0cnVjdCBleHQyX2JpdG1hcF9vcHMgZXh0MmZzX2Jsa21hcDY0X2JpdGFycmF5ID0geworCS50eXBlID0gRVhUMkZTX0JNQVA2NF9CSVRBUlJBWSwKKwkubmV3X2JtYXAgPSBiYV9uZXdfYm1hcCwKKwkuZnJlZV9ibWFwID0gYmFfZnJlZV9ibWFwLAorCS5jb3B5X2JtYXAgPSBiYV9jb3B5X2JtYXAsCisJLnJlc2l6ZV9ibWFwID0gYmFfcmVzaXplX2JtYXAsCisJLm1hcmtfYm1hcCA9IGJhX21hcmtfYm1hcCwKKwkudW5tYXJrX2JtYXAgPSBiYV91bm1hcmtfYm1hcCwKKwkudGVzdF9ibWFwID0gYmFfdGVzdF9ibWFwLAorCS50ZXN0X2NsZWFyX2JtYXBfZXh0ZW50ID0gYmFfdGVzdF9jbGVhcl9ibWFwX2V4dGVudCwKKwkubWFya19ibWFwX2V4dGVudCA9IGJhX21hcmtfYm1hcF9leHRlbnQsCisJLnVubWFya19ibWFwX2V4dGVudCA9IGJhX3VubWFya19ibWFwX2V4dGVudCwKKwkuc2V0X2JtYXBfcmFuZ2UgPSBiYV9zZXRfYm1hcF9yYW5nZSwKKwkuZ2V0X2JtYXBfcmFuZ2UgPSBiYV9nZXRfYm1hcF9yYW5nZSwKKwkuY2xlYXJfYm1hcCA9IGJhX2NsZWFyX2JtYXAsCisJLnByaW50X3N0YXRzID0gYmFfcHJpbnRfc3RhdHMsCisJLmZpbmRfZmlyc3RfemVybyA9IGJhX2ZpbmRfZmlyc3RfemVybywKKwkuZmluZF9maXJzdF9zZXQgPSBiYV9maW5kX2ZpcnN0X3NldAorfTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Jsa21hcDY0X3JiLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibGttYXA2NF9yYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlN2UyOWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibGttYXA2NF9yYi5jCkBAIC0wLDAgKzEsOTc2IEBACisvKgorICogYmxrbWFwNjRfcmIuYyAtLS0gU2ltcGxlIHJiLXRyZWUgaW1wbGVtZW50YXRpb24gZm9yIGJpdG1hcHMKKyAqCisgKiAoQykyMDEwIFJlZCBIYXQsIEluYy4sIEx1a2FzIEN6ZXJuZXIgPGxjemVybmVyQHJlZGhhdC5jb20+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorI2luY2x1ZGUgImJtYXA2NC5oIgorI2luY2x1ZGUgInJidHJlZS5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK3N0cnVjdCBibWFwX3JiX2V4dGVudCB7CisJc3RydWN0IHJiX25vZGUgbm9kZTsKKwlfX3U2NCBzdGFydDsKKwlfX3U2NCBjb3VudDsKK307CisKK3N0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSB7CisJc3RydWN0IHJiX3Jvb3Qgcm9vdDsKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKndjdXJzb3I7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpyY3Vyc29yOworCXN0cnVjdCBibWFwX3JiX2V4dGVudCAqcmN1cnNvcl9uZXh0OworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCV9fdTY0IG1hcmtfaGl0OworCV9fdTY0IHRlc3RfaGl0OworI2VuZGlmCit9OworCitpbmxpbmUgc3RhdGljIHN0cnVjdCBibWFwX3JiX2V4dGVudCAqbm9kZV90b19leHRlbnQoc3RydWN0IHJiX25vZGUgKm5vZGUpCit7CisJLyoKKwkgKiBUaGlzIGRlcGVuZHMgb24gdGhlIGZhY3QgdGhlIHN0cnVjdCByYl9ub2RlIGlzIGF0IHRoZQorCSAqIGJlZ2lubmluZyBvZiB0aGUgYm1hcF9yYl9leHRlbnQgc3RydWN0dXJlLiAgV2UgdXNlIHRoaXMKKwkgKiBpbnN0ZWFkIG9mIHRoZSBleHQyZnNfcmJfZW50cnkgbWFjcm8gYmVjYXVzZSBpdCBjYXVzZXMgZ2NjCisJICogLVdhbGwgdG8gZ2VuZXJhdGUgYSBodWdlIGFtb3VudCBvZiBub2lzZS4KKwkgKi8KKwlyZXR1cm4gKHN0cnVjdCBibWFwX3JiX2V4dGVudCAqKSBub2RlOworfQorCitzdGF0aWMgaW50IHJiX2luc2VydF9leHRlbnQoX191NjQgc3RhcnQsIF9fdTY0IGNvdW50LAorCQkJICAgIHN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqKTsKK3N0YXRpYyB2b2lkIHJiX2dldF9uZXdfZXh0ZW50KHN0cnVjdCBibWFwX3JiX2V4dGVudCAqKiwgX191NjQsIF9fdTY0KTsKKworLyogI2RlZmluZSBERUJVR19SQiAqLworCisjaWZkZWYgREVCVUdfUkIKK3N0YXRpYyB2b2lkIHByaW50X3RyZWUoc3RydWN0IHJiX3Jvb3QgKnJvb3QpCit7CisJc3RydWN0IHJiX25vZGUgKm5vZGUgPSBOVUxMOworCXN0cnVjdCBibWFwX3JiX2V4dGVudCAqZXh0OworCisJcHJpbnRmKCJcdFx0XHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworCW5vZGUgPSBleHQyZnNfcmJfZmlyc3Qocm9vdCk7CisJZm9yIChub2RlID0gZXh0MmZzX3JiX2ZpcnN0KHJvb3QpOyBub2RlICE9IE5VTEw7IAorCSAgICAgbm9kZSA9IGV4dDJmc19yYl9uZXh0KG5vZGUpKSB7CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KG5vZGUpOworCQlwcmludGYoIlx0XHRcdC0tPiAoJWxsdSAtPiAlbGx1KVxuIiwKKwkJCWV4dC0+c3RhcnQsIGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KTsKKwl9CisJcHJpbnRmKCJcdFx0XHQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworfQorCitzdGF0aWMgdm9pZCBjaGVja190cmVlKHN0cnVjdCByYl9yb290ICpyb290LCBjb25zdCBjaGFyICptc2cpCit7CisJc3RydWN0IHJiX25vZGUgKm5vZGU7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpleHQsICpvbGQgPSBOVUxMOworCisJZm9yIChub2RlID0gZXh0MmZzX3JiX2ZpcnN0KHJvb3QpOyBub2RlOworCSAgICAgbm9kZSA9IGV4dDJmc19yYl9uZXh0KG5vZGUpKSB7CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KG5vZGUpOworCQlpZiAoZXh0LT5jb3VudCA9PSAwKSB7CisJCQlwcmludGYoIlRyZWUgRXJyb3I6IGNvdW50IGlzIHplcm9cbiIpOworCQkJcHJpbnRmKCJleHRlbnQ6ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIsIGV4dC0+c3RhcnQsCisJCQkJZXh0LT5zdGFydCArIGV4dC0+Y291bnQsIGV4dC0+Y291bnQpOworCQkJZ290byBlcnJfb3V0OworCQl9CisJCWlmIChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCA8IGV4dC0+c3RhcnQpIHsKKwkJCXByaW50ZigiVHJlZSBFcnJvcjogc3RhcnQgb3IgY291bnQgaXMgY3JhenlcbiIpOworCQkJcHJpbnRmKCJleHRlbnQ6ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIsIGV4dC0+c3RhcnQsCisJCQkJZXh0LT5zdGFydCArIGV4dC0+Y291bnQsIGV4dC0+Y291bnQpOworCQkJZ290byBlcnJfb3V0OworCQl9CisKKwkJaWYgKG9sZCkgeworCQkJaWYgKG9sZC0+c3RhcnQgPiBleHQtPnN0YXJ0KSB7CisJCQkJcHJpbnRmKCJUcmVlIEVycm9yOiBzdGFydCBpcyBjcmF6eVxuIik7CisJCQkJcHJpbnRmKCJleHRlbnQ6ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIsCisJCQkJCW9sZC0+c3RhcnQsIG9sZC0+c3RhcnQgKyBvbGQtPmNvdW50LAorCQkJCQlvbGQtPmNvdW50KTsKKwkJCQlwcmludGYoImV4dGVudCBuZXh0OiAlbGx1IC0+ICVsbHUgKCVsbHUpXG4iLAorCQkJCQlleHQtPnN0YXJ0LCBleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCwKKwkJCQkJZXh0LT5jb3VudCk7CisJCQkJZ290byBlcnJfb3V0OworCQkJfQorCQkJaWYgKChvbGQtPnN0YXJ0ICsgb2xkLT5jb3VudCkgPj0gZXh0LT5zdGFydCkgeworCQkJCXByaW50ZigiVHJlZSBFcnJvcjogZXh0ZW50IGlzIGNyYXp5XG4iKTsKKwkJCQlwcmludGYoImV4dGVudDogJWxsdSAtPiAlbGx1ICglbGx1KVxuIiwKKwkJCQkJb2xkLT5zdGFydCwgb2xkLT5zdGFydCArIG9sZC0+Y291bnQsCisJCQkJCW9sZC0+Y291bnQpOworCQkJCXByaW50ZigiZXh0ZW50IG5leHQ6ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIsCisJCQkJCWV4dC0+c3RhcnQsIGV4dC0+c3RhcnQgKyBleHQtPmNvdW50LAorCQkJCQlleHQtPmNvdW50KTsKKwkJCQlnb3RvIGVycl9vdXQ7CisJCQl9CisJCX0KKwkJb2xkID0gZXh0OworCX0KKwlyZXR1cm47CisKK2Vycl9vdXQ6CisJcHJpbnRmKCIlc1xuIiwgbXNnKTsKKwlwcmludF90cmVlKHJvb3QpOworCWV4aXQoMSk7Cit9CisjZWxzZQorI2RlZmluZSBjaGVja190cmVlKHJvb3QsIG1zZykgZG8ge30gd2hpbGUgKDApCisjZGVmaW5lIHByaW50X3RyZWUocm9vdCkgZG8ge30gd2hpbGUgKDApCisjZW5kaWYKKworc3RhdGljIHZvaWQgcmJfZ2V0X25ld19leHRlbnQoc3RydWN0IGJtYXBfcmJfZXh0ZW50ICoqZXh0LCBfX3U2NCBzdGFydCwKKwkJCSAgICAgX191NjQgY291bnQpCit7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpuZXdfZXh0OworCWludCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2YgKHN0cnVjdCBibWFwX3JiX2V4dGVudCksCisJCQkJJm5ld19leHQpOworCWlmIChyZXR2YWwpCisJCWFib3J0KCk7CisKKwluZXdfZXh0LT5zdGFydCA9IHN0YXJ0OworCW5ld19leHQtPmNvdW50ID0gY291bnQ7CisJKmV4dCA9IG5ld19leHQ7Cit9CisKK2lubGluZQorc3RhdGljIHZvaWQgcmJfZnJlZV9leHRlbnQoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICpicCwKKwkJCSAgIHN0cnVjdCBibWFwX3JiX2V4dGVudCAqZXh0KQoreworCWlmIChicC0+d2N1cnNvciA9PSBleHQpCisJCWJwLT53Y3Vyc29yID0gTlVMTDsKKwlpZiAoYnAtPnJjdXJzb3IgPT0gZXh0KQorCQlicC0+cmN1cnNvciA9IE5VTEw7CisJaWYgKGJwLT5yY3Vyc29yX25leHQgPT0gZXh0KQorCQlicC0+cmN1cnNvcl9uZXh0ID0gTlVMTDsKKwlleHQyZnNfZnJlZV9tZW0oJmV4dCk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmJfYWxsb2NfcHJpdmF0ZV9kYXRhIChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKQoreworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisJZXJyY29kZV90CXJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZiAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlKSwgJmJwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJYnAtPnJvb3QgPSBSQl9ST09UOworCWJwLT5yY3Vyc29yID0gTlVMTDsKKwlicC0+cmN1cnNvcl9uZXh0ID0gTlVMTDsKKwlicC0+d2N1cnNvciA9IE5VTEw7CisKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUU19PUFMKKwlicC0+dGVzdF9oaXQgPSAwOworCWJwLT5tYXJrX2hpdCA9IDA7CisjZW5kaWYKKworCWJpdG1hcC0+cHJpdmF0ZSA9ICh2b2lkICopIGJwOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHJiX25ld19ibWFwKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJcmV0dmFsID0gcmJfYWxsb2NfcHJpdmF0ZV9kYXRhIChiaXRtYXApOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcmJfZnJlZV90cmVlKHN0cnVjdCByYl9yb290ICpyb290KQoreworCXN0cnVjdCBibWFwX3JiX2V4dGVudCAqZXh0OworCXN0cnVjdCByYl9ub2RlICpub2RlLCAqbmV4dDsKKworCWZvciAobm9kZSA9IGV4dDJmc19yYl9maXJzdChyb290KTsgbm9kZTsgbm9kZSA9IG5leHQpIHsKKwkJbmV4dCA9IGV4dDJmc19yYl9uZXh0KG5vZGUpOworCQlleHQgPSBub2RlX3RvX2V4dGVudChub2RlKTsKKwkJZXh0MmZzX3JiX2VyYXNlKG5vZGUsIHJvb3QpOworCQlleHQyZnNfZnJlZV9tZW0oJmV4dCk7CisJfQorfQorCitzdGF0aWMgdm9pZCByYl9mcmVlX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKworCXJiX2ZyZWVfdHJlZSgmYnAtPnJvb3QpOworCWV4dDJmc19mcmVlX21lbSgmYnApOworCWJwID0gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCByYl9jb3B5X2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIHNyYywKKwkJCSAgICAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCBkZXN0KQoreworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqc3JjX2JwLCAqZGVzdF9icDsKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKnNyY19leHQsICpkZXN0X2V4dDsKKwlzdHJ1Y3QgcmJfbm9kZSAqZGVzdF9ub2RlLCAqc3JjX25vZGUsICpkZXN0X2xhc3QsICoqbjsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKworCXJldHZhbCA9IHJiX2FsbG9jX3ByaXZhdGVfZGF0YSAoZGVzdCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXNyY19icCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgc3JjLT5wcml2YXRlOworCWRlc3RfYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGRlc3QtPnByaXZhdGU7CisJc3JjX2JwLT5yY3Vyc29yID0gTlVMTDsKKwlkZXN0X2JwLT5yY3Vyc29yID0gTlVMTDsKKworCXNyY19ub2RlID0gZXh0MmZzX3JiX2ZpcnN0KCZzcmNfYnAtPnJvb3QpOworCXdoaWxlIChzcmNfbm9kZSkgeworCQlzcmNfZXh0ID0gbm9kZV90b19leHRlbnQoc3JjX25vZGUpOworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2YgKHN0cnVjdCBibWFwX3JiX2V4dGVudCksCisJCQkJCSZkZXN0X2V4dCk7CisJCWlmIChyZXR2YWwpCisJCQlicmVhazsKKworCQltZW1jcHkoZGVzdF9leHQsIHNyY19leHQsIHNpemVvZihzdHJ1Y3QgYm1hcF9yYl9leHRlbnQpKTsKKworCQlkZXN0X25vZGUgPSAmZGVzdF9leHQtPm5vZGU7CisJCW4gPSAmZGVzdF9icC0+cm9vdC5yYl9ub2RlOworCisJCWRlc3RfbGFzdCA9IE5VTEw7CisJCWlmICgqbikgeworCQkJZGVzdF9sYXN0ID0gZXh0MmZzX3JiX2xhc3QoJmRlc3RfYnAtPnJvb3QpOworCQkJbiA9ICYoZGVzdF9sYXN0KS0+cmJfcmlnaHQ7CisJCX0KKworCQlleHQyZnNfcmJfbGlua19ub2RlKGRlc3Rfbm9kZSwgZGVzdF9sYXN0LCBuKTsKKwkJZXh0MmZzX3JiX2luc2VydF9jb2xvcihkZXN0X25vZGUsICZkZXN0X2JwLT5yb290KTsKKworCQlzcmNfbm9kZSA9IGV4dDJmc19yYl9uZXh0KHNyY19ub2RlKTsKKwl9CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgdm9pZCByYl90cnVuY2F0ZShfX3U2NCBuZXdfbWF4LCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKmV4dDsKKwlzdHJ1Y3QgcmJfbm9kZSAqbm9kZTsKKworCW5vZGUgPSBleHQyZnNfcmJfbGFzdChyb290KTsKKwl3aGlsZSAobm9kZSkgeworCQlleHQgPSBub2RlX3RvX2V4dGVudChub2RlKTsKKworCQlpZiAoKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50IC0gMSkgPD0gbmV3X21heCkKKwkJCWJyZWFrOworCQllbHNlIGlmIChleHQtPnN0YXJ0ID4gbmV3X21heCkgeworCQkJZXh0MmZzX3JiX2VyYXNlKG5vZGUsIHJvb3QpOworCQkJZXh0MmZzX2ZyZWVfbWVtKCZleHQpOworCQkJbm9kZSA9IGV4dDJmc19yYl9sYXN0KHJvb3QpOworCQkJY29udGludWU7CisJCX0gZWxzZQorCQkJZXh0LT5jb3VudCA9IG5ld19tYXggLSBleHQtPnN0YXJ0ICsgMTsKKwl9Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmJfcmVzaXplX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJX191NjQgbmV3X2VuZCwgX191NjQgbmV3X3JlYWxfZW5kKQoreworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYm1hcC0+cHJpdmF0ZTsKKwlicC0+cmN1cnNvciA9IE5VTEw7CisJYnAtPndjdXJzb3IgPSBOVUxMOworCisJcmJfdHJ1bmNhdGUoKChuZXdfZW5kIDwgYm1hcC0+ZW5kKSA/IG5ld19lbmQgOiBibWFwLT5lbmQpIC0gYm1hcC0+c3RhcnQsCisJCSAgICAmYnAtPnJvb3QpOworCisJYm1hcC0+ZW5kID0gbmV3X2VuZDsKKwlibWFwLT5yZWFsX2VuZCA9IG5ld19yZWFsX2VuZDsKKworCWlmIChibWFwLT5lbmQgPCBibWFwLT5yZWFsX2VuZCkKKwkJcmJfaW5zZXJ0X2V4dGVudChibWFwLT5lbmQgKyAxIC0gYm1hcC0+c3RhcnQsCisJCQkJIGJtYXAtPnJlYWxfZW5kIC0gYm1hcC0+ZW5kLCBicCk7CisJcmV0dXJuIDA7CisKK30KKworaW5saW5lIHN0YXRpYyBpbnQKK3JiX3Rlc3RfYml0KHN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnAsIF9fdTY0IGJpdCkKK3sKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKnJjdXJzb3IsICpuZXh0X2V4dCA9IE5VTEw7CisJc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IE5VTEwsICpuZXh0OworCXN0cnVjdCByYl9ub2RlICoqbiA9ICZicC0+cm9vdC5yYl9ub2RlOworCXN0cnVjdCBibWFwX3JiX2V4dGVudCAqZXh0OworCisJcmN1cnNvciA9IGJwLT5yY3Vyc29yOworCWlmICghcmN1cnNvcikKKwkJZ290byBzZWFyY2hfdHJlZTsKKworCWlmIChiaXQgPj0gcmN1cnNvci0+c3RhcnQgJiYgYml0IDwgcmN1cnNvci0+c3RhcnQgKyByY3Vyc29yLT5jb3VudCkgeworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCQlicC0+dGVzdF9oaXQrKzsKKyNlbmRpZgorCQlyZXR1cm4gMTsKKwl9CisKKwluZXh0X2V4dCA9IGJwLT5yY3Vyc29yX25leHQ7CisJaWYgKCFuZXh0X2V4dCkgeworCQluZXh0ID0gZXh0MmZzX3JiX25leHQoJnJjdXJzb3ItPm5vZGUpOworCQlpZiAobmV4dCkKKwkJCW5leHRfZXh0ID0gbm9kZV90b19leHRlbnQobmV4dCk7CisJCWJwLT5yY3Vyc29yX25leHQgPSBuZXh0X2V4dDsKKwl9CisJaWYgKG5leHRfZXh0KSB7CisJCWlmICgoYml0ID49IHJjdXJzb3ItPnN0YXJ0ICsgcmN1cnNvci0+Y291bnQpICYmCisJCSAgICAoYml0IDwgbmV4dF9leHQtPnN0YXJ0KSkgeworI2lmZGVmIEJNQVBfU1RBVFNfT1BTCisJCQlicC0+dGVzdF9oaXQrKzsKKyNlbmRpZgorCQkJcmV0dXJuIDA7CisJCX0KKwl9CisJYnAtPnJjdXJzb3IgPSBOVUxMOworCWJwLT5yY3Vyc29yX25leHQgPSBOVUxMOworCisJcmN1cnNvciA9IGJwLT53Y3Vyc29yOworCWlmICghcmN1cnNvcikKKwkJZ290byBzZWFyY2hfdHJlZTsKKworCWlmIChiaXQgPj0gcmN1cnNvci0+c3RhcnQgJiYgYml0IDwgcmN1cnNvci0+c3RhcnQgKyByY3Vyc29yLT5jb3VudCkKKwkJcmV0dXJuIDE7CisKK3NlYXJjaF90cmVlOgorCisJd2hpbGUgKCpuKSB7CisJCXBhcmVudCA9ICpuOworCQlleHQgPSBub2RlX3RvX2V4dGVudChwYXJlbnQpOworCQlpZiAoYml0IDwgZXh0LT5zdGFydCkKKwkJCW4gPSAmKCpuKS0+cmJfbGVmdDsKKwkJZWxzZSBpZiAoYml0ID49IChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCkpCisJCQluID0gJigqbiktPnJiX3JpZ2h0OworCQllbHNlIHsKKwkJCWJwLT5yY3Vyc29yID0gZXh0OworCQkJYnAtPnJjdXJzb3JfbmV4dCA9IE5VTEw7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCByYl9pbnNlcnRfZXh0ZW50KF9fdTY0IHN0YXJ0LCBfX3U2NCBjb3VudCwKKwkJCSAgICBzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwKQoreworCXN0cnVjdCByYl9yb290ICpyb290ID0gJmJwLT5yb290OworCXN0cnVjdCByYl9ub2RlICpwYXJlbnQgPSBOVUxMLCAqKm4gPSAmcm9vdC0+cmJfbm9kZTsKKwlzdHJ1Y3QgcmJfbm9kZSAqbmV3X25vZGUsICpub2RlLCAqbmV4dDsKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKm5ld19leHQ7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpleHQ7CisJaW50IHJldHZhbCA9IDA7CisKKwlicC0+cmN1cnNvcl9uZXh0ID0gTlVMTDsKKwlleHQgPSBicC0+d2N1cnNvcjsKKwlpZiAoZXh0KSB7CisJCWlmIChzdGFydCA+PSBleHQtPnN0YXJ0ICYmCisJCSAgICBzdGFydCA8PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisjaWZkZWYgRU5BQkxFX0JNQVBfU1RBVFNfT1BTCisJCQlicC0+bWFya19oaXQrKzsKKyNlbmRpZgorCQkJZ290byBnb3RfZXh0ZW50OworCQl9CisJfQorCisJd2hpbGUgKCpuKSB7CisJCXBhcmVudCA9ICpuOworCQlleHQgPSBub2RlX3RvX2V4dGVudChwYXJlbnQpOworCisJCWlmIChzdGFydCA8IGV4dC0+c3RhcnQpIHsKKwkJCW4gPSAmKCpuKS0+cmJfbGVmdDsKKwkJfSBlbHNlIGlmIChzdGFydCA+IChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCkpIHsKKwkJCW4gPSAmKCpuKS0+cmJfcmlnaHQ7CisJCX0gZWxzZSB7Citnb3RfZXh0ZW50OgorCQkJaWYgKChzdGFydCArIGNvdW50KSA8PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKQorCQkJCXJldHVybiAxOworCisJCQlpZiAoKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KSA9PSBzdGFydCkKKwkJCQlyZXR2YWwgPSAwOworCQkJZWxzZQorCQkJCXJldHZhbCA9IDE7CisKKwkJCWNvdW50ICs9IChzdGFydCAtIGV4dC0+c3RhcnQpOworCQkJc3RhcnQgPSBleHQtPnN0YXJ0OworCQkJbmV3X2V4dCA9IGV4dDsKKwkJCW5ld19ub2RlID0gJmV4dC0+bm9kZTsKKworCQkJZ290byBza2lwX2luc2VydDsKKwkJfQorCX0KKworCXJiX2dldF9uZXdfZXh0ZW50KCZuZXdfZXh0LCBzdGFydCwgY291bnQpOworCisJbmV3X25vZGUgPSAmbmV3X2V4dC0+bm9kZTsKKwlleHQyZnNfcmJfbGlua19ub2RlKG5ld19ub2RlLCBwYXJlbnQsIG4pOworCWV4dDJmc19yYl9pbnNlcnRfY29sb3IobmV3X25vZGUsIHJvb3QpOworCWJwLT53Y3Vyc29yID0gbmV3X2V4dDsKKworCW5vZGUgPSBleHQyZnNfcmJfcHJldihuZXdfbm9kZSk7CisJaWYgKG5vZGUpIHsKKwkJZXh0ID0gbm9kZV90b19leHRlbnQobm9kZSk7CisJCWlmICgoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpID09IHN0YXJ0KSB7CisJCQlzdGFydCA9IGV4dC0+c3RhcnQ7CisJCQljb3VudCArPSBleHQtPmNvdW50OworCQkJZXh0MmZzX3JiX2VyYXNlKG5vZGUsIHJvb3QpOworCQkJcmJfZnJlZV9leHRlbnQoYnAsIGV4dCk7CisJCX0KKwl9CisKK3NraXBfaW5zZXJ0OgorCS8qIFNlZSBpZiB3ZSBjYW4gbWVyZ2UgZXh0ZW50IHRvIHRoZSByaWdodCAqLworCWZvciAobm9kZSA9IGV4dDJmc19yYl9uZXh0KG5ld19ub2RlKTsgbm9kZSAhPSBOVUxMOyBub2RlID0gbmV4dCkgeworCQluZXh0ID0gZXh0MmZzX3JiX25leHQobm9kZSk7CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KG5vZGUpOworCisJCWlmICgoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpIDw9IHN0YXJ0KQorCQkJY29udGludWU7CisKKwkJLyogTm8gbW9yZSBtZXJnaW5nICovCisJCWlmICgoc3RhcnQgKyBjb3VudCkgPCBleHQtPnN0YXJ0KQorCQkJYnJlYWs7CisKKwkJLyogZXh0IGlzIGVtYmVkZGVkIGluIG5ld19leHQgaW50ZXJ2YWwgKi8KKwkJaWYgKChzdGFydCArIGNvdW50KSA+PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisJCQlleHQyZnNfcmJfZXJhc2Uobm9kZSwgcm9vdCk7CisJCQlyYl9mcmVlX2V4dGVudChicCwgZXh0KTsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkvKiBtZXJnZSBleHQgd2l0aCBuZXdfZXh0ICovCisJCQljb3VudCArPSAoKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KSAtCisJCQkJICAoc3RhcnQgKyBjb3VudCkpOworCQkJZXh0MmZzX3JiX2VyYXNlKG5vZGUsIHJvb3QpOworCQkJcmJfZnJlZV9leHRlbnQoYnAsIGV4dCk7CisJCQlicmVhazsKKwkJfQorCX0KKworCW5ld19leHQtPnN0YXJ0ID0gc3RhcnQ7CisJbmV3X2V4dC0+Y291bnQgPSBjb3VudDsKKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgcmJfcmVtb3ZlX2V4dGVudChfX3U2NCBzdGFydCwgX191NjQgY291bnQsCisJCQkgICAgc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICpicCkKK3sKKwlzdHJ1Y3QgcmJfcm9vdCAqcm9vdCA9ICZicC0+cm9vdDsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gTlVMTCwgKipuID0gJnJvb3QtPnJiX25vZGU7CisJc3RydWN0IHJiX25vZGUgKm5vZGU7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpleHQ7CisJX191NjQgbmV3X3N0YXJ0LCBuZXdfY291bnQ7CisJaW50IHJldHZhbCA9IDA7CisKKwlpZiAoZXh0MmZzX3JiX2VtcHR5X3Jvb3Qocm9vdCkpCisJCXJldHVybiAwOworCisJd2hpbGUgKCpuKSB7CisJCXBhcmVudCA9ICpuOworCQlleHQgPSBub2RlX3RvX2V4dGVudChwYXJlbnQpOworCQlpZiAoc3RhcnQgPCBleHQtPnN0YXJ0KSB7CisJCQluID0gJigqbiktPnJiX2xlZnQ7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmIChzdGFydCA+PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisJCQluID0gJigqbiktPnJiX3JpZ2h0OworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoKHN0YXJ0ID4gZXh0LT5zdGFydCkgJiYKKwkJICAgIChzdGFydCArIGNvdW50KSA8IChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCkpIHsKKwkJCS8qIFdlIGhhdmUgdG8gc3BsaXQgZXh0ZW50IGludG8gdHdvICovCisJCQluZXdfc3RhcnQgPSBzdGFydCArIGNvdW50OworCQkJbmV3X2NvdW50ID0gKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KSAtIG5ld19zdGFydDsKKworCQkJZXh0LT5jb3VudCA9IHN0YXJ0IC0gZXh0LT5zdGFydDsKKworCQkJcmJfaW5zZXJ0X2V4dGVudChuZXdfc3RhcnQsIG5ld19jb3VudCwgYnApOworCQkJcmV0dXJuIDE7CisJCX0KKworCQlpZiAoKHN0YXJ0ICsgY291bnQpID49IChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCkpIHsKKwkJCWV4dC0+Y291bnQgPSBzdGFydCAtIGV4dC0+c3RhcnQ7CisJCQlyZXR2YWwgPSAxOworCQl9CisKKwkJaWYgKDAgPT0gZXh0LT5jb3VudCkgeworCQkJcGFyZW50ID0gZXh0MmZzX3JiX25leHQoJmV4dC0+bm9kZSk7CisJCQlleHQyZnNfcmJfZXJhc2UoJmV4dC0+bm9kZSwgcm9vdCk7CisJCQlyYl9mcmVlX2V4dGVudChicCwgZXh0KTsKKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKHN0YXJ0ID09IGV4dC0+c3RhcnQpIHsKKwkJCWV4dC0+c3RhcnQgKz0gY291bnQ7CisJCQlleHQtPmNvdW50IC09IGNvdW50OworCQkJcmV0dXJuIDE7CisJCX0KKwl9CisKKwkvKiBTZWUgaWYgd2Ugc2hvdWxkIGRlbGV0ZSBvciB0cnVuY2F0ZSBleHRlbnQgb24gdGhlIHJpZ2h0ICovCisJZm9yICg7IHBhcmVudCAhPSBOVUxMOyBwYXJlbnQgPSBub2RlKSB7CisJCW5vZGUgPSBleHQyZnNfcmJfbmV4dChwYXJlbnQpOworCQlleHQgPSBub2RlX3RvX2V4dGVudChwYXJlbnQpOworCQlpZiAoKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KSA8PSBzdGFydCkKKwkJCWNvbnRpbnVlOworCisJCS8qIE5vIG1vcmUgZXh0ZW50cyB0byBiZSByZW1vdmVkL3RydW5jYXRlZCAqLworCQlpZiAoKHN0YXJ0ICsgY291bnQpIDwgZXh0LT5zdGFydCkKKwkJCWJyZWFrOworCisJCS8qIFRoZSBlbnRpcmUgZXh0ZW50IGlzIHdpdGhpbiB0aGUgcmVnaW9uIHRvIGJlIHJlbW92ZWQgKi8KKwkJaWYgKChzdGFydCArIGNvdW50KSA+PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisJCQlleHQyZnNfcmJfZXJhc2UocGFyZW50LCByb290KTsKKwkJCXJiX2ZyZWVfZXh0ZW50KGJwLCBleHQpOworCQkJcmV0dmFsID0gMTsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkJLyogbW9kaWZ5IHRoZSBsYXN0IGV4dGVudCBpbiByZWlnb24gdG8gYmUgcmVtb3ZlZCAqLworCQkJZXh0LT5jb3VudCAtPSAoKHN0YXJ0ICsgY291bnQpIC0gZXh0LT5zdGFydCk7CisJCQlleHQtPnN0YXJ0ID0gc3RhcnQgKyBjb3VudDsKKwkJCXJldHZhbCA9IDE7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgcmJfbWFya19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsIF9fdTY0IGFyZykKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCWludCByZXR2YWw7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYml0bWFwLT5wcml2YXRlOworCWFyZyAtPSBiaXRtYXAtPnN0YXJ0OworCisJcmV0dmFsID0gcmJfaW5zZXJ0X2V4dGVudChhcmcsIDEsIGJwKTsKKwljaGVja190cmVlKCZicC0+cm9vdCwgX19mdW5jX18pOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgcmJfdW5tYXJrX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKQoreworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisJaW50IHJldHZhbDsKKworCWJwID0gKHN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqKSBiaXRtYXAtPnByaXZhdGU7CisJYXJnIC09IGJpdG1hcC0+c3RhcnQ7CisKKwlyZXR2YWwgPSByYl9yZW1vdmVfZXh0ZW50KGFyZywgMSwgYnApOworCWNoZWNrX3RyZWUoJmJwLT5yb290LCBfX2Z1bmNfXyk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbmxpbmUKK3N0YXRpYyBpbnQgcmJfdGVzdF9ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsIF9fdTY0IGFyZykKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKwlhcmcgLT0gYml0bWFwLT5zdGFydDsKKworCXJldHVybiByYl90ZXN0X2JpdChicCwgYXJnKTsKK30KKworc3RhdGljIHZvaWQgcmJfbWFya19ibWFwX2V4dGVudChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLCBfX3U2NCBhcmcsCisJCQkJdW5zaWduZWQgaW50IG51bSkKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKwlhcmcgLT0gYml0bWFwLT5zdGFydDsKKworCXJiX2luc2VydF9leHRlbnQoYXJnLCBudW0sIGJwKTsKKwljaGVja190cmVlKCZicC0+cm9vdCwgX19mdW5jX18pOworfQorCitzdGF0aWMgdm9pZCByYl91bm1hcmtfYm1hcF9leHRlbnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnLAorCQkJCSAgdW5zaWduZWQgaW50IG51bSkKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKwlhcmcgLT0gYml0bWFwLT5zdGFydDsKKworCXJiX3JlbW92ZV9leHRlbnQoYXJnLCBudW0sIGJwKTsKKwljaGVja190cmVlKCZicC0+cm9vdCwgX19mdW5jX18pOworfQorCitzdGF0aWMgaW50IHJiX3Rlc3RfY2xlYXJfYm1hcF9leHRlbnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIF9fdTY0IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbGVuKQoreworCXN0cnVjdCByYl9ub2RlICpwYXJlbnQgPSBOVUxMLCAqKm47CisJc3RydWN0IHJiX25vZGUgKm5vZGUsICpuZXh0OworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpleHQ7CisJaW50IHJldHZhbCA9IDE7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYml0bWFwLT5wcml2YXRlOworCW4gPSAmYnAtPnJvb3QucmJfbm9kZTsKKwlzdGFydCAtPSBiaXRtYXAtPnN0YXJ0OworCisJaWYgKGxlbiA9PSAwIHx8IGV4dDJmc19yYl9lbXB0eV9yb290KCZicC0+cm9vdCkpCisJCXJldHVybiAxOworCisJLyoKKwkgKiBJZiB3ZSBmaW5kIG5vdGhpbmcsIHdlIHNob3VsZCBleGFtaW5lIHdob2xlIGV4dGVudCwgYnV0CisJICogd2hlbiB3ZSBmaW5kIG1hdGNoLCB0aGUgZXh0ZW50IGlzIG5vdCBjbGVhbiwgdGh1cyBiZSByZXR1cm4KKwkgKiBmYWxzZS4KKwkgKi8KKwl3aGlsZSAoKm4pIHsKKwkJcGFyZW50ID0gKm47CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KHBhcmVudCk7CisJCWlmIChzdGFydCA8IGV4dC0+c3RhcnQpIHsKKwkJCW4gPSAmKCpuKS0+cmJfbGVmdDsKKwkJfSBlbHNlIGlmIChzdGFydCA+PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisJCQluID0gJigqbiktPnJiX3JpZ2h0OworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIFdlIGZvdW5kIGV4dGVudCBpbnQgdGhlIHRyZWUgLT4gZXh0ZW50IGlzIG5vdAorCQkJICogY2xlYW4KKwkJCSAqLworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlub2RlID0gcGFyZW50OworCXdoaWxlIChub2RlKSB7CisJCW5leHQgPSBleHQyZnNfcmJfbmV4dChub2RlKTsKKwkJZXh0ID0gbm9kZV90b19leHRlbnQobm9kZSk7CisJCW5vZGUgPSBuZXh0OworCisJCWlmICgoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpIDw9IHN0YXJ0KQorCQkJY29udGludWU7CisKKwkJLyogTm8gbW9yZSBtZXJnaW5nICovCisJCWlmICgoc3RhcnQgKyBsZW4pIDw9IGV4dC0+c3RhcnQpCisJCQlicmVhazsKKworCQlyZXR2YWwgPSAwOworCQlicmVhazsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCByYl9zZXRfYm1hcF9yYW5nZShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgX191NjQgc3RhcnQsIHNpemVfdCBudW0sIHZvaWQgKmluKQoreworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisJdW5zaWduZWQgY2hhciAqY3AgPSBpbjsKKwlzaXplX3QgaTsKKwlpbnQgZmlyc3Rfc2V0ID0gLTE7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYml0bWFwLT5wcml2YXRlOworCisJZm9yIChpID0gMDsgaSA8IG51bTsgaSsrKSB7CisJCWlmICgoaSAmIDcpID09IDApIHsKKwkJCXVuc2lnbmVkIGNoYXIgYyA9IGNwW2kvOF07CisJCQlpZiAoYyA9PSAweEZGKSB7CisJCQkJaWYgKGZpcnN0X3NldCA9PSAtMSkKKwkJCQkJZmlyc3Rfc2V0ID0gaTsKKwkJCQlpICs9IDc7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAoKGMgPT0gMHgwMCkgJiYgKGZpcnN0X3NldCA9PSAtMSkpIHsKKwkJCQlpICs9IDc7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKwkJaWYgKGV4dDJmc190ZXN0X2JpdChpLCBpbikpIHsKKwkJCWlmIChmaXJzdF9zZXQgPT0gLTEpCisJCQkJZmlyc3Rfc2V0ID0gaTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChmaXJzdF9zZXQgPT0gLTEpCisJCQljb250aW51ZTsKKworCQlyYl9pbnNlcnRfZXh0ZW50KHN0YXJ0ICsgZmlyc3Rfc2V0IC0gYml0bWFwLT5zdGFydCwKKwkJCQkgaSAtIGZpcnN0X3NldCwgYnApOworCQljaGVja190cmVlKCZicC0+cm9vdCwgX19mdW5jX18pOworCQlmaXJzdF9zZXQgPSAtMTsKKwl9CisJaWYgKGZpcnN0X3NldCAhPSAtMSkgeworCQlyYl9pbnNlcnRfZXh0ZW50KHN0YXJ0ICsgZmlyc3Rfc2V0IC0gYml0bWFwLT5zdGFydCwKKwkJCQkgbnVtIC0gZmlyc3Rfc2V0LCBicCk7CisJCWNoZWNrX3RyZWUoJmJwLT5yb290LCBfX2Z1bmNfXyk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmJfZ2V0X2JtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIF9fdTY0IHN0YXJ0LCBzaXplX3QgbnVtLCB2b2lkICpvdXQpCit7CisKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gTlVMTCwgKm5leHQsICoqbjsKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCXN0cnVjdCBibWFwX3JiX2V4dGVudCAqZXh0OworCV9fdTY0IGNvdW50LCBwb3M7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYml0bWFwLT5wcml2YXRlOworCW4gPSAmYnAtPnJvb3QucmJfbm9kZTsKKwlzdGFydCAtPSBiaXRtYXAtPnN0YXJ0OworCisJaWYgKGV4dDJmc19yYl9lbXB0eV9yb290KCZicC0+cm9vdCkpCisJCXJldHVybiAwOworCisJd2hpbGUgKCpuKSB7CisJCXBhcmVudCA9ICpuOworCQlleHQgPSBub2RlX3RvX2V4dGVudChwYXJlbnQpOworCQlpZiAoc3RhcnQgPCBleHQtPnN0YXJ0KSB7CisJCQluID0gJigqbiktPnJiX2xlZnQ7CisJCX0gZWxzZSBpZiAoc3RhcnQgPj0gKGV4dC0+c3RhcnQgKyBleHQtPmNvdW50KSkgeworCQkJbiA9ICYoKm4pLT5yYl9yaWdodDsKKwkJfSBlbHNlCisJCQlicmVhazsKKwl9CisKKwltZW1zZXQob3V0LCAwLCAobnVtICsgNykgPj4gMyk7CisKKwlmb3IgKDsgcGFyZW50ICE9IE5VTEw7IHBhcmVudCA9IG5leHQpIHsKKwkJbmV4dCA9IGV4dDJmc19yYl9uZXh0KHBhcmVudCk7CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KHBhcmVudCk7CisKKwkJcG9zID0gZXh0LT5zdGFydDsKKwkJY291bnQgPSBleHQtPmNvdW50OworCQlpZiAocG9zID49IHN0YXJ0ICsgbnVtKQorCQkJYnJlYWs7CisJCWlmIChwb3MgPCBzdGFydCkgeworCQkJaWYgKHBvcyArIGNvdW50IDwgIHN0YXJ0KQorCQkJCWNvbnRpbnVlOworCQkJY291bnQgLT0gc3RhcnQgLSBwb3M7CisJCQlwb3MgPSBzdGFydDsKKwkJfQorCQlpZiAocG9zICsgY291bnQgPiBzdGFydCArIG51bSkKKwkJCWNvdW50ID0gc3RhcnQgKyBudW0gLSBwb3M7CisKKwkJd2hpbGUgKGNvdW50ID4gMCkgeworCQkJaWYgKChjb3VudCA+PSA4KSAmJgorCQkJICAgICgocG9zIC0gc3RhcnQpICUgOCkgPT0gMCkgeworCQkJCWludCBuYnl0ZXMgPSBjb3VudCA+PiAzOworCQkJCWludCBvZmZzZXQgPSAocG9zIC0gc3RhcnQpID4+IDM7CisKKwkJCQltZW1zZXQoKChjaGFyICopIG91dCkgKyBvZmZzZXQsIDB4RkYsIG5ieXRlcyk7CisJCQkJcG9zICs9IG5ieXRlcyA8PCAzOworCQkJCWNvdW50IC09IG5ieXRlcyA8PCAzOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZXh0MmZzX2Zhc3Rfc2V0X2JpdDY0KChwb3MgLSBzdGFydCksIG91dCk7CisJCQlwb3MrKzsKKwkJCWNvdW50LS07CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHJiX2NsZWFyX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKworCXJiX2ZyZWVfdHJlZSgmYnAtPnJvb3QpOworCWJwLT5yY3Vyc29yID0gTlVMTDsKKwlicC0+cmN1cnNvcl9uZXh0ID0gTlVMTDsKKwlicC0+d2N1cnNvciA9IE5VTEw7CisJY2hlY2tfdHJlZSgmYnAtPnJvb3QsIF9fZnVuY19fKTsKK30KKworc3RhdGljIGVycmNvZGVfdCByYl9maW5kX2ZpcnN0X3plcm8oZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICBfX3U2NCBzdGFydCwgX191NjQgZW5kLCBfX3U2NCAqb3V0KQoreworCXN0cnVjdCByYl9ub2RlICpwYXJlbnQgPSBOVUxMLCAqKm47CisJc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICpicDsKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKmV4dDsKKworCWJwID0gKHN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqKSBiaXRtYXAtPnByaXZhdGU7CisJbiA9ICZicC0+cm9vdC5yYl9ub2RlOworCXN0YXJ0IC09IGJpdG1hcC0+c3RhcnQ7CisJZW5kIC09IGJpdG1hcC0+c3RhcnQ7CisKKwlpZiAoc3RhcnQgPiBlbmQpCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoZXh0MmZzX3JiX2VtcHR5X3Jvb3QoJmJwLT5yb290KSkKKwkJcmV0dXJuIEVOT0VOVDsKKworCXdoaWxlICgqbikgeworCQlwYXJlbnQgPSAqbjsKKwkJZXh0ID0gbm9kZV90b19leHRlbnQocGFyZW50KTsKKwkJaWYgKHN0YXJ0IDwgZXh0LT5zdGFydCkgeworCQkJbiA9ICYoKm4pLT5yYl9sZWZ0OworCQl9IGVsc2UgaWYgKHN0YXJ0ID49IChleHQtPnN0YXJ0ICsgZXh0LT5jb3VudCkpIHsKKwkJCW4gPSAmKCpuKS0+cmJfcmlnaHQ7CisJCX0gZWxzZSBpZiAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQgPD0gZW5kKSB7CisJCQkqb3V0ID0gZXh0LT5zdGFydCArIGV4dC0+Y291bnQgKyBiaXRtYXAtPnN0YXJ0OworCQkJcmV0dXJuIDA7CisJCX0gZWxzZQorCQkJcmV0dXJuIEVOT0VOVDsKKwl9CisKKwkqb3V0ID0gc3RhcnQgKyBiaXRtYXAtPnN0YXJ0OworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHJiX2ZpbmRfZmlyc3Rfc2V0KGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgX191NjQgc3RhcnQsIF9fdTY0IGVuZCwgX191NjQgKm91dCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gTlVMTCwgKipuOworCXN0cnVjdCByYl9ub2RlICpub2RlOworCXN0cnVjdCBleHQyZnNfcmJfcHJpdmF0ZSAqYnA7CisJc3RydWN0IGJtYXBfcmJfZXh0ZW50ICpleHQ7CisKKwlicCA9IChzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKikgYml0bWFwLT5wcml2YXRlOworCW4gPSAmYnAtPnJvb3QucmJfbm9kZTsKKwlzdGFydCAtPSBiaXRtYXAtPnN0YXJ0OworCWVuZCAtPSBiaXRtYXAtPnN0YXJ0OworCisJaWYgKHN0YXJ0ID4gZW5kKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKGV4dDJmc19yYl9lbXB0eV9yb290KCZicC0+cm9vdCkpCisJCXJldHVybiBFTk9FTlQ7CisKKwl3aGlsZSAoKm4pIHsKKwkJcGFyZW50ID0gKm47CisJCWV4dCA9IG5vZGVfdG9fZXh0ZW50KHBhcmVudCk7CisJCWlmIChzdGFydCA8IGV4dC0+c3RhcnQpIHsKKwkJCW4gPSAmKCpuKS0+cmJfbGVmdDsKKwkJfSBlbHNlIGlmIChzdGFydCA+PSAoZXh0LT5zdGFydCArIGV4dC0+Y291bnQpKSB7CisJCQluID0gJigqbiktPnJiX3JpZ2h0OworCQl9IGVsc2UgeworCQkJLyogVGhlIHN0YXJ0IGJpdCBpcyBzZXQgKi8KKwkJCSpvdXQgPSBzdGFydCArIGJpdG1hcC0+c3RhcnQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCW5vZGUgPSBwYXJlbnQ7CisJZXh0ID0gbm9kZV90b19leHRlbnQobm9kZSk7CisJaWYgKGV4dC0+c3RhcnQgPCBzdGFydCkgeworCQlub2RlID0gZXh0MmZzX3JiX25leHQobm9kZSk7CisJCWlmIChub2RlID09IE5VTEwpCisJCQlyZXR1cm4gRU5PRU5UOworCQlleHQgPSBub2RlX3RvX2V4dGVudChub2RlKTsKKwl9CisJaWYgKGV4dC0+c3RhcnQgPD0gZW5kKSB7CisJCSpvdXQgPSBleHQtPnN0YXJ0ICsgYml0bWFwLT5zdGFydDsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBFTk9FTlQ7Cit9CisKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUUworc3RhdGljIHZvaWQgcmJfcHJpbnRfc3RhdHMoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUgKmJwOworCXN0cnVjdCByYl9ub2RlICpub2RlID0gTlVMTDsKKwlzdHJ1Y3QgYm1hcF9yYl9leHRlbnQgKmV4dDsKKwlfX3U2NCBjb3VudCA9IDA7CisJX191NjQgbWF4X3NpemUgPSAwOworCV9fdTY0IG1pbl9zaXplID0gVUxPTkdfTUFYOworCV9fdTY0IHNpemUgPSAwLCBhdmdfc2l6ZSA9IDA7CisJZG91YmxlIGVmZjsKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUU19PUFMKKwlfX3U2NCBtYXJrX2FsbCwgdGVzdF9hbGw7CisJZG91YmxlIG1faGl0ID0gMC4wLCB0X2hpdCA9IDAuMDsKKyNlbmRpZgorCisJYnAgPSAoc3RydWN0IGV4dDJmc19yYl9wcml2YXRlICopIGJpdG1hcC0+cHJpdmF0ZTsKKworCWZvciAobm9kZSA9IGV4dDJmc19yYl9maXJzdCgmYnAtPnJvb3QpOyBub2RlICE9IE5VTEw7CisJICAgICBub2RlID0gZXh0MmZzX3JiX25leHQobm9kZSkpIHsKKwkJZXh0ID0gbm9kZV90b19leHRlbnQobm9kZSk7CisJCWNvdW50Kys7CisJCWlmIChleHQtPmNvdW50ID4gbWF4X3NpemUpCisJCQltYXhfc2l6ZSA9IGV4dC0+Y291bnQ7CisJCWlmIChleHQtPmNvdW50IDwgbWluX3NpemUpCisJCQltaW5fc2l6ZSA9IGV4dC0+Y291bnQ7CisJCXNpemUgKz0gZXh0LT5jb3VudDsKKwl9CisKKwlpZiAoY291bnQpCisJCWF2Z19zaXplID0gc2l6ZSAvIGNvdW50OworCWlmIChtaW5fc2l6ZSA9PSBVTE9OR19NQVgpCisJCW1pbl9zaXplID0gMDsKKwllZmYgPSAoZG91YmxlKSgoY291bnQgKiBzaXplb2Yoc3RydWN0IGJtYXBfcmJfZXh0ZW50KSkgPDwgMykgLworCSAgICAgIChiaXRtYXAtPnJlYWxfZW5kIC0gYml0bWFwLT5zdGFydCk7CisjaWZkZWYgRU5BQkxFX0JNQVBfU1RBVFNfT1BTCisJbWFya19hbGwgPSBiaXRtYXAtPnN0YXRzLm1hcmtfY291bnQgKyBiaXRtYXAtPnN0YXRzLm1hcmtfZXh0X2NvdW50OworCXRlc3RfYWxsID0gYml0bWFwLT5zdGF0cy50ZXN0X2NvdW50ICsgYml0bWFwLT5zdGF0cy50ZXN0X2V4dF9jb3VudDsKKwlpZiAobWFya19hbGwpCisJCW1faGl0ID0gKChkb3VibGUpYnAtPm1hcmtfaGl0IC8gbWFya19hbGwpICogMTAwOworCWlmICh0ZXN0X2FsbCkKKwkJdF9oaXQgPSAoKGRvdWJsZSlicC0+dGVzdF9oaXQgLyB0ZXN0X2FsbCkgKiAxMDA7CisKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmxsdSBjYWNoZSBoaXRzIG9uIHRlc3QgKCUuMmYlJSlcbiIKKwkJIiUxNmxsdSBjYWNoZSBoaXRzIG9uIG1hcmsgKCUuMmYlJSlcbiIsCisJCWJwLT50ZXN0X2hpdCwgdF9oaXQsIGJwLT5tYXJrX2hpdCwgbV9oaXQpOworI2VuZGlmCisJZnByaW50ZihzdGRlcnIsICIlMTZsbHUgZXh0ZW50cyAoJWxsdSBieXRlcylcbiIsCisJCWNvdW50LCAoKGNvdW50ICogc2l6ZW9mKHN0cnVjdCBibWFwX3JiX2V4dGVudCkpICsKKwkJCXNpemVvZihzdHJ1Y3QgZXh0MmZzX3JiX3ByaXZhdGUpKSk7CisgCWZwcmludGYoc3RkZXJyLCAiJTE2bGx1IGJpdHMgbWluaW11bSBzaXplXG4iLAorCQltaW5fc2l6ZSk7CisJZnByaW50ZihzdGRlcnIsICIlMTZsbHUgYml0cyBtYXhpbXVtIHNpemVcbiIKKwkJIiUxNmxsdSBiaXRzIGF2ZXJhZ2Ugc2l6ZVxuIiwKKwkJbWF4X3NpemUsIGF2Z19zaXplKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmxsdSBiaXRzIHNldCBpbiBiaXRtYXAgKG91dCBvZiAlbGx1KVxuIiwgc2l6ZSwKKwkJYml0bWFwLT5yZWFsX2VuZCAtIGJpdG1hcC0+c3RhcnQpOworCWZwcmludGYoc3RkZXJyLAorCQkiJTE2LjRsZiBtZW1vcnkgLyBiaXRtYXAgYml0IG1lbW9yeSByYXRpbyAoYml0YXJyYXkgPSAxKVxuIiwKKwkJZWZmKTsKK30KKyNlbHNlCitzdGF0aWMgdm9pZCByYl9wcmludF9zdGF0cyhleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKK30KKyNlbmRpZgorCitzdHJ1Y3QgZXh0Ml9iaXRtYXBfb3BzIGV4dDJmc19ibGttYXA2NF9yYnRyZWUgPSB7CisJLnR5cGUgPSBFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkubmV3X2JtYXAgPSByYl9uZXdfYm1hcCwKKwkuZnJlZV9ibWFwID0gcmJfZnJlZV9ibWFwLAorCS5jb3B5X2JtYXAgPSByYl9jb3B5X2JtYXAsCisJLnJlc2l6ZV9ibWFwID0gcmJfcmVzaXplX2JtYXAsCisJLm1hcmtfYm1hcCA9IHJiX21hcmtfYm1hcCwKKwkudW5tYXJrX2JtYXAgPSByYl91bm1hcmtfYm1hcCwKKwkudGVzdF9ibWFwID0gcmJfdGVzdF9ibWFwLAorCS50ZXN0X2NsZWFyX2JtYXBfZXh0ZW50ID0gcmJfdGVzdF9jbGVhcl9ibWFwX2V4dGVudCwKKwkubWFya19ibWFwX2V4dGVudCA9IHJiX21hcmtfYm1hcF9leHRlbnQsCisJLnVubWFya19ibWFwX2V4dGVudCA9IHJiX3VubWFya19ibWFwX2V4dGVudCwKKwkuc2V0X2JtYXBfcmFuZ2UgPSByYl9zZXRfYm1hcF9yYW5nZSwKKwkuZ2V0X2JtYXBfcmFuZ2UgPSByYl9nZXRfYm1hcF9yYW5nZSwKKwkuY2xlYXJfYm1hcCA9IHJiX2NsZWFyX2JtYXAsCisJLnByaW50X3N0YXRzID0gcmJfcHJpbnRfc3RhdHMsCisJLmZpbmRfZmlyc3RfemVybyA9IHJiX2ZpbmRfZmlyc3RfemVybywKKwkuZmluZF9maXJzdF9zZXQgPSByYl9maW5kX2ZpcnN0X3NldCwKK307CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibGtudW0uYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Jsa251bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjODA4NDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibGtudW0uYwpAQCAtMCwwICsxLDU0MyBAQAorLyoKKyAqIGJsa251bS5jIC0tLSBGdW5jdGlvbnMgdG8gaGFuZGxlIGJsazY0X3QgYW5kIGhpZ2gvbG93IDY0LWJpdCBibG9jaworICogbnVtYmVyLgorICoKKyAqIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24sIDIwMDcKKyAqIEF1dGhvciBKb3NlIFIuIFNhbnRvcyA8anJzQHVzLmlibS5jb20+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKy8qCisgKiBSZXR1cm4gdGhlIGdyb3VwICMgb2YgYSBibG9jaworICovCitkZ3JwX3QgZXh0MmZzX2dyb3VwX29mX2JsazIoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrKQoreworCXJldHVybiAoYmxrIC0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIC8KKwkJZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGZpcnN0IGJsb2NrIChpbmNsdXNpdmUpIGluIGEgZ3JvdXAKKyAqLworYmxrNjRfdCBleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJcmV0dXJuIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrICsKKwkJRVhUMl9HUk9VUFNfVE9fQkxPQ0tTKGZzLT5zdXBlciwgZ3JvdXApOworfQorCisvKgorICogUmV0dXJuIHRoZSBsYXN0IGJsb2NrIChpbmNsdXNpdmUpIGluIGEgZ3JvdXAKKyAqLworYmxrNjRfdCBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jazIoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlyZXR1cm4gKGdyb3VwID09IGZzLT5ncm91cF9kZXNjX2NvdW50IC0gMSA/CisJCWV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIDEgOgorCQlleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGZzLCBncm91cCkgKworCQkJKGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwIC0gMSkpOworfQorCisvKgorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgYmxvY2tzIGluIGEgZ3JvdXAKKyAqLworaW50IGV4dDJmc19ncm91cF9ibG9ja3NfY291bnQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlpbnQgbnVtX2Jsb2NrczsKKworCWlmIChncm91cCA9PSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIDEpIHsKKwkJbnVtX2Jsb2NrcyA9IChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkJCWZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSAlCisJCQkgICAgICBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwkJaWYgKCFudW1fYmxvY2tzKQorCQkJbnVtX2Jsb2NrcyA9IGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCX0gZWxzZQorCQludW1fYmxvY2tzID0gZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisKKwlyZXR1cm4gbnVtX2Jsb2NrczsKK30KKworLyoKKyAqIFJldHVybiB0aGUgaW5vZGUgZGF0YSBibG9jayBjb3VudAorICovCitibGs2NF90IGV4dDJmc19pbm9kZV9kYXRhX2Jsb2NrczIoZXh0Ml9maWxzeXMgZnMsCisJCQkJCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwlyZXR1cm4gKGlub2RlLT5pX2Jsb2NrcyB8CisJCShleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgPworCQkgKF9fdTY0KSBpbm9kZS0+b3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSA8PCAzMiA6IDApKSAtCisJCShpbm9kZS0+aV9maWxlX2FjbCA/IGZzLT5ibG9ja3NpemUgPj4gOSA6IDApOworfQorCisvKgorICogUmV0dXJuIHRoZSBpbm9kZSBpX2Jsb2NrcyBjb3VudAorICovCitibGs2NF90IGV4dDJmc19pbm9kZV9pX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKwkJCQkJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCXJldHVybiAoaW5vZGUtPmlfYmxvY2tzIHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV9odWdlX2ZpbGUoZnMtPnN1cGVyKSA/CisJCSAoX191NjQpaW5vZGUtPm9zZDIubGludXgyLmxfaV9ibG9ja3NfaGkgPDwgMzIgOiAwKSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGZzIGJsb2NrIGNvdW50CisgKi8KK2JsazY0X3QgZXh0MmZzX2Jsb2Nrc19jb3VudChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIpCit7CisJcmV0dXJuIHN1cGVyLT5zX2Jsb2Nrc19jb3VudCB8CisJCShleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoc3VwZXIpID8KKwkJKF9fdTY0KSBzdXBlci0+c19ibG9ja3NfY291bnRfaGkgPDwgMzIgOiAwKTsKK30KKworLyoKKyAqIFNldCB0aGUgZnMgYmxvY2sgY291bnQKKyAqLwordm9pZCBleHQyZnNfYmxvY2tzX2NvdW50X3NldChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsIGJsazY0X3QgYmxrKQoreworCXN1cGVyLT5zX2Jsb2Nrc19jb3VudCA9IGJsazsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KHN1cGVyKSkKKwkJc3VwZXItPnNfYmxvY2tzX2NvdW50X2hpID0gKF9fdTY0KSBibGsgPj4gMzI7Cit9CisKKy8qCisgKiBBZGQgdG8gdGhlIGN1cnJlbnQgZnMgYmxvY2sgY291bnQKKyAqLwordm9pZCBleHQyZnNfYmxvY2tzX2NvdW50X2FkZChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsIGJsazY0X3QgYmxrKQoreworCWJsazY0X3QgdG1wOworCXRtcCA9IGV4dDJmc19ibG9ja3NfY291bnQoc3VwZXIpICsgYmxrOworCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KHN1cGVyLCB0bXApOworfQorCisvKgorICogUmV0dXJuIHRoZSBmcyByZXNlcnZlZCBibG9jayBjb3VudAorICovCitibGs2NF90IGV4dDJmc19yX2Jsb2Nrc19jb3VudChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIpCit7CisJcmV0dXJuIHN1cGVyLT5zX3JfYmxvY2tzX2NvdW50IHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChzdXBlcikgPworCQkoX191NjQpIHN1cGVyLT5zX3JfYmxvY2tzX2NvdW50X2hpIDw8IDMyIDogMCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIGZzIHJlc2VydmVkIGJsb2NrIGNvdW50CisgKi8KK3ZvaWQgZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsIGJsazY0X3QgYmxrKQoreworCXN1cGVyLT5zX3JfYmxvY2tzX2NvdW50ID0gYmxrOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoc3VwZXIpKQorCQlzdXBlci0+c19yX2Jsb2Nrc19jb3VudF9oaSA9IChfX3U2NCkgYmxrID4+IDMyOworfQorCisvKgorICogQWRkIHRvIHRoZSBjdXJyZW50IHJlc2VydmVkIGZzIGJsb2NrIGNvdW50CisgKi8KK3ZvaWQgZXh0MmZzX3JfYmxvY2tzX2NvdW50X2FkZChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsIGJsazY0X3QgYmxrKQoreworCWJsazY0X3QgdG1wOworCXRtcCA9IGV4dDJmc19yX2Jsb2Nrc19jb3VudChzdXBlcikgKyBibGs7CisJZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChzdXBlciwgdG1wKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgZnMgZnJlZSBibG9jayBjb3VudAorICovCitibGs2NF90IGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIpCit7CisJcmV0dXJuIHN1cGVyLT5zX2ZyZWVfYmxvY2tzX2NvdW50IHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChzdXBlcikgPworCQkoX191NjQpIHN1cGVyLT5zX2ZyZWVfYmxvY2tzX2hpIDw8IDMyIDogMCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIGZzIGZyZWUgYmxvY2sgY291bnQKKyAqLwordm9pZCBleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfc2V0KHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlciwgYmxrNjRfdCBibGspCit7CisJc3VwZXItPnNfZnJlZV9ibG9ja3NfY291bnQgPSBibGs7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChzdXBlcikpCisJCXN1cGVyLT5zX2ZyZWVfYmxvY2tzX2hpID0gKF9fdTY0KSBibGsgPj4gMzI7Cit9CisKKy8qCisgKiBBZGQgdG8gdGhlIGN1cnJlbnQgZnJlZSBmcyBibG9jayBjb3VudAorICovCit2b2lkIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9hZGQoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyLCBibGs2NF90IGJsaykKK3sKKwlibGs2NF90IHRtcDsKKwl0bXAgPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoc3VwZXIpICsgYmxrOworCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoc3VwZXIsIHRtcCk7Cit9CisKKy8qCisgKiBHZXQgYSBwb2ludGVyIHRvIGEgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvci4gIFdlIG5lZWQgdGhlIGV4cGxpY2l0CisgKiBwb2ludGVyIHRvIHRoZSBncm91cCBkZXNjIGZvciBjb2RlIHRoYXQgc3dhcHMgYmxvY2sgZ3JvdXAKKyAqIGRlc2NyaXB0b3JzIGJlZm9yZSB3cml0aW5nIHRoZW0gb3V0LCBhcyBpdCB3YW50cyB0byBtYWtlIGEgY29weSBhbmQKKyAqIGRvIHRoZSBzd2FwIHRoZXJlLgorICovCitzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpleHQyZnNfZ3JvdXBfZGVzYyhleHQyX2ZpbHN5cyBmcywKKwkJCQkJICBzdHJ1Y3Qgb3BhcXVlX2V4dDJfZ3JvdXBfZGVzYyAqZ2RwLAorCQkJCQkgIGRncnBfdCBncm91cCkKK3sKKwlpbnQgZGVzY19zaXplID0gRVhUMl9ERVNDX1NJWkUoZnMtPnN1cGVyKSAmIH43OworCisJcmV0dXJuIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopKChjaGFyICopZ2RwICsgZ3JvdXAgKiBkZXNjX3NpemUpOworfQorCisvKiBEbyB0aGUgc2FtZSBidXQgYXMgYW4gZXh0NCBncm91cCBkZXNjIGZvciBpbnRlcm5hbCB1c2UgaGVyZSAqLworc3RhdGljIHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmV4dDRmc19ncm91cF9kZXNjKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgIHN0cnVjdCBvcGFxdWVfZXh0Ml9ncm91cF9kZXNjICpnZHAsCisJCQkJCSAgZGdycF90IGdyb3VwKQoreworCXJldHVybiAoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqKWV4dDJmc19ncm91cF9kZXNjKGZzLCBnZHAsIGdyb3VwKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYmxvY2sgYml0bWFwIGNoZWNrc3VtIG9mIGEgZ3JvdXAKKyAqLworX191MzIgZXh0MmZzX2Jsb2NrX2JpdG1hcF9jaGVja3N1bShleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKwlfX3UzMiBjc3VtOworCisJZ2RwID0gZXh0NGZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJY3N1bSA9IGdkcC0+YmdfYmxvY2tfYml0bWFwX2NzdW1fbG87CisJaWYgKGZzLT5zdXBlci0+c19kZXNjX3NpemUgPj0gRVhUNF9CR19CTE9DS19CSVRNQVBfQ1NVTV9ISV9MT0NBVElPTikKKwkJY3N1bSB8PSAoKF9fdTMyKWdkcC0+YmdfYmxvY2tfYml0bWFwX2NzdW1faGkgPDwgMTYpOworCXJldHVybiBjc3VtOworfQorCisvKgorICogUmV0dXJuIHRoZSBibG9jayBiaXRtYXAgYmxvY2sgb2YgYSBncm91cAorICovCitibGs2NF90IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwOworCisJZ2RwID0gZXh0NGZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJcmV0dXJuIGdkcC0+YmdfYmxvY2tfYml0bWFwIHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpID8KKwkJIChfX3U2NClnZHAtPmJnX2Jsb2NrX2JpdG1hcF9oaSA8PCAzMiA6IDApOworfQorCisvKgorICogU2V0IHRoZSBibG9jayBiaXRtYXAgYmxvY2sgb2YgYSBncm91cAorICovCit2b2lkIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBibGs2NF90IGJsaykKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2Jsb2NrX2JpdG1hcCA9IGJsazsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpCisJCWdkcC0+YmdfYmxvY2tfYml0bWFwX2hpID0gKF9fdTY0KSBibGsgPj4gMzI7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGlub2RlIGJpdG1hcCBjaGVja3N1bSBvZiBhIGdyb3VwCisgKi8KK19fdTMyIGV4dDJmc19pbm9kZV9iaXRtYXBfY2hlY2tzdW0oZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisJX191MzIgY3N1bTsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCWNzdW0gPSBnZHAtPmJnX2lub2RlX2JpdG1hcF9jc3VtX2xvOworCWlmIChmcy0+c3VwZXItPnNfZGVzY19zaXplID49IEVYVDRfQkdfSU5PREVfQklUTUFQX0NTVU1fSElfRU5EKQorCQljc3VtIHw9ICgoX191MzIpZ2RwLT5iZ19pbm9kZV9iaXRtYXBfY3N1bV9oaSA8PCAxNik7CisJcmV0dXJuIGNzdW07Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGlub2RlIGJpdG1hcCBibG9jayBvZiBhIGdyb3VwCisgKi8KK2JsazY0X3QgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlyZXR1cm4gZ2RwLT5iZ19pbm9kZV9iaXRtYXAgfAorCQkoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikgPworCQkgKF9fdTY0KSBnZHAtPmJnX2lub2RlX2JpdG1hcF9oaSA8PCAzMiA6IDApOworfQorCisvKgorICogU2V0IHRoZSBpbm9kZSBiaXRtYXAgYmxvY2sgb2YgYSBncm91cAorICovCit2b2lkIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBibGs2NF90IGJsaykKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2lub2RlX2JpdG1hcCA9IGJsazsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpCisJCWdkcC0+YmdfaW5vZGVfYml0bWFwX2hpID0gKF9fdTY0KSBibGsgPj4gMzI7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGlub2RlIHRhYmxlIGJsb2NrIG9mIGEgZ3JvdXAKKyAqLworYmxrNjRfdCBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwOworCisJZ2RwID0gZXh0NGZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJcmV0dXJuIGdkcC0+YmdfaW5vZGVfdGFibGUgfAorCQkoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikgPworCQkgKF9fdTY0KSBnZHAtPmJnX2lub2RlX3RhYmxlX2hpIDw8IDMyIDogMCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIGlub2RlIHRhYmxlIGJsb2NrIG9mIGEgZ3JvdXAKKyAqLwordm9pZCBleHQyZnNfaW5vZGVfdGFibGVfbG9jX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBibGs2NF90IGJsaykKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2lub2RlX3RhYmxlID0gYmxrOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJZ2RwLT5iZ19pbm9kZV90YWJsZV9oaSA9IChfX3U2NCkgYmxrID4+IDMyOworfQorCisvKgorICogUmV0dXJuIHRoZSBmcmVlIGJsb2NrcyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK19fdTMyIGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCXJldHVybiBnZHAtPmJnX2ZyZWVfYmxvY2tzX2NvdW50IHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpID8KKwkJIChfX3UzMikgZ2RwLT5iZ19mcmVlX2Jsb2Nrc19jb3VudF9oaSA8PCAxNiA6IDApOworfQorCisvKgorICogU2V0IHRoZSBmcmVlIGJsb2NrcyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK3ZvaWQgZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50X3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBfX3UzMiBuKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCWdkcC0+YmdfZnJlZV9ibG9ja3NfY291bnQgPSBuOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpKQorCQlnZHAtPmJnX2ZyZWVfYmxvY2tzX2NvdW50X2hpID0gKF9fdTMyKSBuID4+IDE2OworfQorCisvKgorICogUmV0dXJuIHRoZSBmcmVlIGlub2RlcyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK19fdTMyIGV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCXJldHVybiBnZHAtPmJnX2ZyZWVfaW5vZGVzX2NvdW50IHwKKwkJKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpID8KKwkJIChfX3UzMikgZ2RwLT5iZ19mcmVlX2lub2Rlc19jb3VudF9oaSA8PCAxNiA6IDApOworfQorCisvKgorICogU2V0IHRoZSBmcmVlIGlub2RlcyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK3ZvaWQgZXh0MmZzX2JnX2ZyZWVfaW5vZGVzX2NvdW50X3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBfX3UzMiBuKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCWdkcC0+YmdfZnJlZV9pbm9kZXNfY291bnQgPSBuOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJZ2RwLT5iZ19mcmVlX2lub2Rlc19jb3VudF9oaSA9IChfX3UzMikgbiA+PiAxNjsKK30KKworLyoKKyAqIFJldHVybiB0aGUgdXNlZCBkaXJzIGNvdW50IG9mIGEgZ3JvdXAKKyAqLworX191MzIgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCXJldHVybiBnZHAtPmJnX3VzZWRfZGlyc19jb3VudCB8CisJCShleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSA/CisJCSAoX191MzIpIGdkcC0+YmdfdXNlZF9kaXJzX2NvdW50X2hpIDw8IDE2IDogMCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIHVzZWQgZGlycyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK3ZvaWQgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudF9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgX191MzIgbikKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX3VzZWRfZGlyc19jb3VudCA9IG47CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpKQorCQlnZHAtPmJnX3VzZWRfZGlyc19jb3VudF9oaSA9IChfX3UzMikgbiA+PiAxNjsKK30KKworLyoKKyAqIFJldHVybiB0aGUgdW51c2VkIGlub2RlcyBjb3VudCBvZiBhIGdyb3VwCisgKi8KK19fdTMyIGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwOworCisJZ2RwID0gZXh0NGZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJcmV0dXJuIGdkcC0+YmdfaXRhYmxlX3VudXNlZCB8CisJCShleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSA/CisJCSAoX191MzIpIGdkcC0+YmdfaXRhYmxlX3VudXNlZF9oaSA8PCAxNiA6IDApOworfQorCisvKgorICogU2V0IHRoZSB1bnVzZWQgaW5vZGVzIGNvdW50IG9mIGEgZ3JvdXAKKyAqLwordm9pZCBleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgX191MzIgbikKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2l0YWJsZV91bnVzZWQgPSBuOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJZ2RwLT5iZ19pdGFibGVfdW51c2VkX2hpID0gKF9fdTMyKSBuID4+IDE2OworfQorCisvKgorICogR2V0IHRoZSBmbGFncyBmb3IgdGhpcyBibG9jayBncm91cAorICovCitfX3UxNiBleHQyZnNfYmdfZmxhZ3MoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlyZXR1cm4gZ2RwLT5iZ19mbGFnczsKK30KKworLyoKKyAqIFplcm8gb3V0IHRoZSBmbGFncyBmb3IgdGhpcyBibG9jayBncm91cAorICovCit2b2lkIGV4dDJmc19iZ19mbGFnc196YXAoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2ZsYWdzID0gMDsKKwlyZXR1cm47Cit9CisKKy8qCisgKiBHZXQgdGhlIHZhbHVlIG9mIGEgcGFydGljdWxhciBmbGFnIGZvciB0aGlzIGJsb2NrIGdyb3VwCisgKi8KK2ludCBleHQyZnNfYmdfZmxhZ3NfdGVzdChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBfX3UxNiBiZ19mbGFnKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCXJldHVybiBnZHAtPmJnX2ZsYWdzICYgYmdfZmxhZzsKK30KKworLyoKKyAqIFNldCBhIGZsYWcgb3Igc2V0IG9mIGZsYWdzIGZvciB0aGlzIGJsb2NrIGdyb3VwCisgKi8KK3ZvaWQgZXh0MmZzX2JnX2ZsYWdzX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBfX3UxNiBiZ19mbGFncykKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlnZHAtPmJnX2ZsYWdzIHw9IGJnX2ZsYWdzOworCXJldHVybjsKK30KKworLyoKKyAqIENsZWFyIGEgZmxhZyBvciBzZXQgb2YgZmxhZ3MgZm9yIHRoaXMgYmxvY2sgZ3JvdXAKKyAqLwordm9pZCBleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgX191MTYgYmdfZmxhZ3MpCit7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwOworCisJZ2RwID0gZXh0NGZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJZ2RwLT5iZ19mbGFncyAmPSB+YmdfZmxhZ3M7CisJcmV0dXJuOworfQorCisvKgorICogR2V0IHRoZSBjaGVja3N1bSBmb3IgdGhpcyBibG9jayBncm91cAorICovCitfX3UxNiBleHQyZnNfYmdfY2hlY2tzdW0oZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA7CisKKwlnZHAgPSBleHQ0ZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKwlyZXR1cm4gZ2RwLT5iZ19jaGVja3N1bTsKK30KKworLyoKKyAqIFNldCB0aGUgY2hlY2tzdW0gZm9yIHRoaXMgYmxvY2sgZ3JvdXAgdG8gYSBwcmV2aW91c2x5IGNhbGN1bGF0ZWQgdmFsdWUKKyAqLwordm9pZCBleHQyZnNfYmdfY2hlY2tzdW1fc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsIF9fdTE2IGNoZWNrc3VtKQoreworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcDsKKworCWdkcCA9IGV4dDRmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCWdkcC0+YmdfY2hlY2tzdW0gPSBjaGVja3N1bTsKKwlyZXR1cm47Cit9CisKKy8qCisgKiBHZXQgdGhlIGFjbCBibG9jayBvZiBhIGZpbGUKKyAqLworYmxrNjRfdCBleHQyZnNfZmlsZV9hY2xfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGNvbnN0IHN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwlibGs2NF90CWJsayA9IGlub2RlLT5pX2ZpbGVfYWNsOworCisJaWYgKGZzICYmIGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpKQorCQlibGsgfD0gKChfX3U2NCkgaW5vZGUtPm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoKSA8PCAzMjsKKwlyZXR1cm4gYmxrOworfQorCisvKgorICogU2V0IHRoZSBhY2wgYmxvY2sgb2YgYSBmaWxlCisgKi8KK3ZvaWQgZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrX3NldChleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJICAgICAgIGJsazY0X3QgYmxrKQoreworCWlub2RlLT5pX2ZpbGVfYWNsID0gYmxrOworCWlmIChmcyAmJiBleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJaW5vZGUtPm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoID0gKF9fdTY0KSBibGsgPj4gMzI7Cit9CisKKy8qCisgKiBTZXQgdGhlIHNpemUgb2YgdGhlIGlub2RlCisgKi8KK2VycmNvZGVfdCBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQlleHQyX29mZjY0X3Qgc2l6ZSkKK3sKKwkvKiBPbmx5IHJlZ3VsYXIgZmlsZXMgZ2V0IHRvIGJlIGxhcmdlciB0aGFuIDRHQiAqLworCWlmICghTElOVVhfU19JU1JFRyhpbm9kZS0+aV9tb2RlKSAmJiAoc2l6ZSA+PiAzMikpCisJCXJldHVybiBFWFQyX0VUX0ZJTEVfVE9PX0JJRzsKKworCS8qIElmIHdlJ3JlIHdyaXRpbmcgYSBsYXJnZSBmaWxlLCBzZXQgdGhlIGxhcmdlX2ZpbGUgZmxhZyAqLworCWlmIChMSU5VWF9TX0lTUkVHKGlub2RlLT5pX21vZGUpICYmCisJICAgIGV4dDJmc19uZWVkc19sYXJnZV9maWxlX2ZlYXR1cmUoc2l6ZSkgJiYKKwkgICAgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbGFyZ2VfZmlsZShmcy0+c3VwZXIpIHx8CisJICAgICBmcy0+c3VwZXItPnNfcmV2X2xldmVsID09IEVYVDJfR09PRF9PTERfUkVWKSkgeworCQlleHQyZnNfc2V0X2ZlYXR1cmVfbGFyZ2VfZmlsZShmcy0+c3VwZXIpOworCQlleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2KGZzKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0KKworCWlub2RlLT5pX3NpemUgPSBzaXplICYgMHhmZmZmZmZmZjsKKwlpbm9kZS0+aV9zaXplX2hpZ2ggPSAoc2l6ZSA+PiAzMik7CisKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYmxvY2suYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Jsb2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxMTI5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Jsb2NrLmMKQEAgLTAsMCArMSw2NTkgQEAKKy8qCisgKiBibG9jay5jIC0tLSBpdGVyYXRlIG92ZXIgYWxsIGJsb2NrcyBpbiBhbiBpbm9kZQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK3N0cnVjdCBibG9ja19jb250ZXh0IHsKKwlleHQyX2ZpbHN5cwlmczsKKwlpbnQgKCpmdW5jKShleHQyX2ZpbHN5cwlmcywKKwkJICAgIGJsazY0X3QJKmJsb2NrbnIsCisJCSAgICBlMl9ibGtjbnRfdAliY291bnQsCisJCSAgICBibGs2NF90CXJlZl9ibGssCisJCSAgICBpbnQJCXJlZl9vZmZzZXQsCisJCSAgICB2b2lkCSpwcml2X2RhdGEpOworCWUyX2Jsa2NudF90CWJjb3VudDsKKwlpbnQJCWJzaXplOworCWludAkJZmxhZ3M7CisJZXJyY29kZV90CWVycmNvZGU7CisJY2hhcgkqaW5kX2J1ZjsKKwljaGFyCSpkaW5kX2J1ZjsKKwljaGFyCSp0aW5kX2J1ZjsKKwl2b2lkCSpwcml2X2RhdGE7Cit9OworCisjZGVmaW5lIGNoZWNrX2Zvcl9yb192aW9sYXRpb25fcmV0dXJuKGN0eCwgcmV0KQkJCQlcCisJZG8gewkJCQkJCQkJXAorCQlpZiAoKChjdHgpLT5mbGFncyAmIEJMT0NLX0ZMQUdfUkVBRF9PTkxZKSAmJgkJXAorCQkgICAgKChyZXQpICYgQkxPQ0tfQ0hBTkdFRCkpIHsJCQkJXAorCQkJKGN0eCktPmVycmNvZGUgPSBFWFQyX0VUX1JPX0JMT0NLX0lURVJBVEU7CVwKKwkJCXJldCB8PSBCTE9DS19BQk9SVCB8IEJMT0NLX0VSUk9SOwkJXAorCQkJcmV0dXJuIHJldDsJCQkJCVwKKwkJfQkJCQkJCQlcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBjaGVja19mb3Jfcm9fdmlvbGF0aW9uX2dvdG8oY3R4LCByZXQsIGxhYmVsKQkJCVwKKwlkbyB7CQkJCQkJCQlcCisJCWlmICgoKGN0eCktPmZsYWdzICYgQkxPQ0tfRkxBR19SRUFEX09OTFkpICYmCQlcCisJCSAgICAoKHJldCkgJiBCTE9DS19DSEFOR0VEKSkgewkJCQlcCisJCQkoY3R4KS0+ZXJyY29kZSA9IEVYVDJfRVRfUk9fQkxPQ0tfSVRFUkFURTsJXAorCQkJcmV0IHw9IEJMT0NLX0FCT1JUIHwgQkxPQ0tfRVJST1I7CQlcCisJCQlnb3RvIGxhYmVsOwkJCQkJXAorCQl9CQkJCQkJCVwKKwl9IHdoaWxlICgwKQorCitzdGF0aWMgaW50IGJsb2NrX2l0ZXJhdGVfaW5kKGJsa190ICppbmRfYmxvY2ssIGJsa190IHJlZl9ibG9jaywKKwkJCSAgICAgaW50IHJlZl9vZmZzZXQsIHN0cnVjdCBibG9ja19jb250ZXh0ICpjdHgpCit7CisJaW50CXJldCA9IDAsIGNoYW5nZWQgPSAwOworCWludAlpLCBmbGFncywgbGltaXQsIG9mZnNldDsKKwlibGtfdAkqYmxvY2tfbnI7CisJYmxrNjRfdAlibGs2NDsKKworCWxpbWl0ID0gY3R4LT5mcy0+YmxvY2tzaXplID4+IDI7CisJaWYgKCEoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UpICYmCisJICAgICEoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREFUQV9PTkxZKSkgeworCQlibGs2NCA9ICppbmRfYmxvY2s7CisJCXJldCA9ICgqY3R4LT5mdW5jKShjdHgtPmZzLCAmYmxrNjQsCisJCQkJICAgQkxPQ0tfQ09VTlRfSU5ELCByZWZfYmxvY2ssCisJCQkJICAgcmVmX29mZnNldCwgY3R4LT5wcml2X2RhdGEpOworCQkqaW5kX2Jsb2NrID0gYmxrNjQ7CisJfQorCWNoZWNrX2Zvcl9yb192aW9sYXRpb25fcmV0dXJuKGN0eCwgcmV0KTsKKwlpZiAoISppbmRfYmxvY2sgfHwgKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQljdHgtPmJjb3VudCArPSBsaW1pdDsKKwkJcmV0dXJuIHJldDsKKwl9CisJaWYgKCppbmRfYmxvY2sgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChjdHgtPmZzLT5zdXBlcikgfHwKKwkgICAgKmluZF9ibG9jayA8IGN0eC0+ZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHsKKwkJY3R4LT5lcnJjb2RlID0gRVhUMl9FVF9CQURfSU5EX0JMT0NLOworCQlyZXQgfD0gQkxPQ0tfRVJST1I7CisJCXJldHVybiByZXQ7CisJfQorCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2luZF9ibG9jayhjdHgtPmZzLCAqaW5kX2Jsb2NrLAorCQkJCQkgICAgIGN0eC0+aW5kX2J1Zik7CisJaWYgKGN0eC0+ZXJyY29kZSkgeworCQlyZXQgfD0gQkxPQ0tfRVJST1I7CisJCXJldHVybiByZXQ7CisJfQorCisJYmxvY2tfbnIgPSAoYmxrX3QgKikgY3R4LT5pbmRfYnVmOworCW9mZnNldCA9IDA7CisJaWYgKGN0eC0+ZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkgeworCQlmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkrKywgY3R4LT5iY291bnQrKywgYmxvY2tfbnIrKykgeworCQkJYmxrNjQgPSAqYmxvY2tfbnI7CisJCQlmbGFncyA9ICgqY3R4LT5mdW5jKShjdHgtPmZzLCAmYmxrNjQsIGN0eC0+YmNvdW50LAorCQkJCQkgICAgICppbmRfYmxvY2ssIG9mZnNldCwKKwkJCQkJICAgICBjdHgtPnByaXZfZGF0YSk7CisJCQkqYmxvY2tfbnIgPSBibGs2NDsKKwkJCWNoYW5nZWQJfD0gZmxhZ3M7CisJCQlpZiAoZmxhZ3MgJiBCTE9DS19BQk9SVCkgeworCQkJCXJldCB8PSBCTE9DS19BQk9SVDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCW9mZnNldCArPSBzaXplb2YoYmxrX3QpOworCQl9CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IGxpbWl0OyBpKyssIGN0eC0+YmNvdW50KyssIGJsb2NrX25yKyspIHsKKwkJCWlmICgqYmxvY2tfbnIgPT0gMCkKKwkJCQlnb3RvIHNraXBfc3BhcnNlOworCQkJYmxrNjQgPSAqYmxvY2tfbnI7CisJCQlmbGFncyA9ICgqY3R4LT5mdW5jKShjdHgtPmZzLCAmYmxrNjQsIGN0eC0+YmNvdW50LAorCQkJCQkgICAgICppbmRfYmxvY2ssIG9mZnNldCwKKwkJCQkJICAgICBjdHgtPnByaXZfZGF0YSk7CisJCQkqYmxvY2tfbnIgPSBibGs2NDsKKwkJCWNoYW5nZWQJfD0gZmxhZ3M7CisJCQlpZiAoZmxhZ3MgJiBCTE9DS19BQk9SVCkgeworCQkJCXJldCB8PSBCTE9DS19BQk9SVDsKKwkJCQlicmVhazsKKwkJCX0KKwkJc2tpcF9zcGFyc2U6CisJCQlvZmZzZXQgKz0gc2l6ZW9mKGJsa190KTsKKwkJfQorCX0KKwljaGVja19mb3Jfcm9fdmlvbGF0aW9uX3JldHVybihjdHgsIGNoYW5nZWQpOworCWlmIChjaGFuZ2VkICYgQkxPQ0tfQ0hBTkdFRCkgeworCQljdHgtPmVycmNvZGUgPSBleHQyZnNfd3JpdGVfaW5kX2Jsb2NrKGN0eC0+ZnMsICppbmRfYmxvY2ssCisJCQkJCQkgICAgICBjdHgtPmluZF9idWYpOworCQlpZiAoY3R4LT5lcnJjb2RlKQorCQkJcmV0IHw9IEJMT0NLX0VSUk9SIHwgQkxPQ0tfQUJPUlQ7CisJfQorCWlmICgoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UpICYmCisJICAgICEoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREFUQV9PTkxZKSAmJgorCSAgICAhKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQlibGs2NCA9ICppbmRfYmxvY2s7CisJCXJldCB8PSAoKmN0eC0+ZnVuYykoY3R4LT5mcywgJmJsazY0LAorCQkJCSAgICBCTE9DS19DT1VOVF9JTkQsIHJlZl9ibG9jaywKKwkJCQkgICAgcmVmX29mZnNldCwgY3R4LT5wcml2X2RhdGEpOworCQkqaW5kX2Jsb2NrID0gYmxrNjQ7CisJfQorCWNoZWNrX2Zvcl9yb192aW9sYXRpb25fcmV0dXJuKGN0eCwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGJsb2NrX2l0ZXJhdGVfZGluZChibGtfdCAqZGluZF9ibG9jaywgYmxrX3QgcmVmX2Jsb2NrLAorCQkJICAgICAgaW50IHJlZl9vZmZzZXQsIHN0cnVjdCBibG9ja19jb250ZXh0ICpjdHgpCit7CisJaW50CXJldCA9IDAsIGNoYW5nZWQgPSAwOworCWludAlpLCBmbGFncywgbGltaXQsIG9mZnNldDsKKwlibGtfdAkqYmxvY2tfbnI7CisJYmxrNjRfdAlibGs2NDsKKworCWxpbWl0ID0gY3R4LT5mcy0+YmxvY2tzaXplID4+IDI7CisJaWYgKCEoY3R4LT5mbGFncyAmIChCTE9DS19GTEFHX0RFUFRIX1RSQVZFUlNFIHwKKwkJCSAgICBCTE9DS19GTEFHX0RBVEFfT05MWSkpKSB7CisJCWJsazY0ID0gKmRpbmRfYmxvY2s7CisJCXJldCA9ICgqY3R4LT5mdW5jKShjdHgtPmZzLCAmYmxrNjQsCisJCQkJICAgQkxPQ0tfQ09VTlRfRElORCwgcmVmX2Jsb2NrLAorCQkJCSAgIHJlZl9vZmZzZXQsIGN0eC0+cHJpdl9kYXRhKTsKKwkJKmRpbmRfYmxvY2sgPSBibGs2NDsKKwl9CisJY2hlY2tfZm9yX3JvX3Zpb2xhdGlvbl9yZXR1cm4oY3R4LCByZXQpOworCWlmICghKmRpbmRfYmxvY2sgfHwgKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQljdHgtPmJjb3VudCArPSBsaW1pdCpsaW1pdDsKKwkJcmV0dXJuIHJldDsKKwl9CisJaWYgKCpkaW5kX2Jsb2NrID49IGV4dDJmc19ibG9ja3NfY291bnQoY3R4LT5mcy0+c3VwZXIpIHx8CisJICAgICpkaW5kX2Jsb2NrIDwgY3R4LT5mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgeworCQljdHgtPmVycmNvZGUgPSBFWFQyX0VUX0JBRF9ESU5EX0JMT0NLOworCQlyZXQgfD0gQkxPQ0tfRVJST1I7CisJCXJldHVybiByZXQ7CisJfQorCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2luZF9ibG9jayhjdHgtPmZzLCAqZGluZF9ibG9jaywKKwkJCQkJICAgICBjdHgtPmRpbmRfYnVmKTsKKwlpZiAoY3R4LT5lcnJjb2RlKSB7CisJCXJldCB8PSBCTE9DS19FUlJPUjsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlibG9ja19uciA9IChibGtfdCAqKSBjdHgtPmRpbmRfYnVmOworCW9mZnNldCA9IDA7CisJaWYgKGN0eC0+ZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkgeworCQlmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkrKywgYmxvY2tfbnIrKykgeworCQkJZmxhZ3MgPSBibG9ja19pdGVyYXRlX2luZChibG9ja19uciwKKwkJCQkJCSAgKmRpbmRfYmxvY2ssIG9mZnNldCwKKwkJCQkJCSAgY3R4KTsKKwkJCWNoYW5nZWQgfD0gZmxhZ3M7CisJCQlpZiAoZmxhZ3MgJiAoQkxPQ0tfQUJPUlQgfCBCTE9DS19FUlJPUikpIHsKKwkJCQlyZXQgfD0gZmxhZ3MgJiAoQkxPQ0tfQUJPUlQgfCBCTE9DS19FUlJPUik7CisJCQkJYnJlYWs7CisJCQl9CisJCQlvZmZzZXQgKz0gc2l6ZW9mKGJsa190KTsKKwkJfQorCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBsaW1pdDsgaSsrLCBibG9ja19ucisrKSB7CisJCQlpZiAoKmJsb2NrX25yID09IDApIHsKKwkJCQljdHgtPmJjb3VudCArPSBsaW1pdDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWZsYWdzID0gYmxvY2tfaXRlcmF0ZV9pbmQoYmxvY2tfbnIsCisJCQkJCQkgICpkaW5kX2Jsb2NrLCBvZmZzZXQsCisJCQkJCQkgIGN0eCk7CisJCQljaGFuZ2VkIHw9IGZsYWdzOworCQkJaWYgKGZsYWdzICYgKEJMT0NLX0FCT1JUIHwgQkxPQ0tfRVJST1IpKSB7CisJCQkJcmV0IHw9IGZsYWdzICYgKEJMT0NLX0FCT1JUIHwgQkxPQ0tfRVJST1IpOworCQkJCWJyZWFrOworCQkJfQorCQkJb2Zmc2V0ICs9IHNpemVvZihibGtfdCk7CisJCX0KKwl9CisJY2hlY2tfZm9yX3JvX3Zpb2xhdGlvbl9yZXR1cm4oY3R4LCBjaGFuZ2VkKTsKKwlpZiAoY2hhbmdlZCAmIEJMT0NLX0NIQU5HRUQpIHsKKwkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX3dyaXRlX2luZF9ibG9jayhjdHgtPmZzLCAqZGluZF9ibG9jaywKKwkJCQkJCSAgICAgIGN0eC0+ZGluZF9idWYpOworCQlpZiAoY3R4LT5lcnJjb2RlKQorCQkJcmV0IHw9IEJMT0NLX0VSUk9SIHwgQkxPQ0tfQUJPUlQ7CisJfQorCWlmICgoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UpICYmCisJICAgICEoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREFUQV9PTkxZKSAmJgorCSAgICAhKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQlibGs2NCA9ICpkaW5kX2Jsb2NrOworCQlyZXQgfD0gKCpjdHgtPmZ1bmMpKGN0eC0+ZnMsICZibGs2NCwKKwkJCQkgICAgQkxPQ0tfQ09VTlRfRElORCwgcmVmX2Jsb2NrLAorCQkJCSAgICByZWZfb2Zmc2V0LCBjdHgtPnByaXZfZGF0YSk7CisJCSpkaW5kX2Jsb2NrID0gYmxrNjQ7CisJfQorCWNoZWNrX2Zvcl9yb192aW9sYXRpb25fcmV0dXJuKGN0eCwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGJsb2NrX2l0ZXJhdGVfdGluZChibGtfdCAqdGluZF9ibG9jaywgYmxrX3QgcmVmX2Jsb2NrLAorCQkJICAgICAgaW50IHJlZl9vZmZzZXQsIHN0cnVjdCBibG9ja19jb250ZXh0ICpjdHgpCit7CisJaW50CXJldCA9IDAsIGNoYW5nZWQgPSAwOworCWludAlpLCBmbGFncywgbGltaXQsIG9mZnNldDsKKwlibGtfdAkqYmxvY2tfbnI7CisJYmxrNjRfdAlibGs2NDsKKworCWxpbWl0ID0gY3R4LT5mcy0+YmxvY2tzaXplID4+IDI7CisJaWYgKCEoY3R4LT5mbGFncyAmIChCTE9DS19GTEFHX0RFUFRIX1RSQVZFUlNFIHwKKwkJCSAgICBCTE9DS19GTEFHX0RBVEFfT05MWSkpKSB7CisJCWJsazY0ID0gKnRpbmRfYmxvY2s7CisJCXJldCA9ICgqY3R4LT5mdW5jKShjdHgtPmZzLCAmYmxrNjQsCisJCQkJICAgQkxPQ0tfQ09VTlRfVElORCwgcmVmX2Jsb2NrLAorCQkJCSAgIHJlZl9vZmZzZXQsIGN0eC0+cHJpdl9kYXRhKTsKKwkJKnRpbmRfYmxvY2sgPSBibGs2NDsKKwl9CisJY2hlY2tfZm9yX3JvX3Zpb2xhdGlvbl9yZXR1cm4oY3R4LCByZXQpOworCWlmICghKnRpbmRfYmxvY2sgfHwgKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQljdHgtPmJjb3VudCArPSBsaW1pdCpsaW1pdCpsaW1pdDsKKwkJcmV0dXJuIHJldDsKKwl9CisJaWYgKCp0aW5kX2Jsb2NrID49IGV4dDJmc19ibG9ja3NfY291bnQoY3R4LT5mcy0+c3VwZXIpIHx8CisJICAgICp0aW5kX2Jsb2NrIDwgY3R4LT5mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgeworCQljdHgtPmVycmNvZGUgPSBFWFQyX0VUX0JBRF9USU5EX0JMT0NLOworCQlyZXQgfD0gQkxPQ0tfRVJST1I7CisJCXJldHVybiByZXQ7CisJfQorCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2luZF9ibG9jayhjdHgtPmZzLCAqdGluZF9ibG9jaywKKwkJCQkJICAgICBjdHgtPnRpbmRfYnVmKTsKKwlpZiAoY3R4LT5lcnJjb2RlKSB7CisJCXJldCB8PSBCTE9DS19FUlJPUjsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlibG9ja19uciA9IChibGtfdCAqKSBjdHgtPnRpbmRfYnVmOworCW9mZnNldCA9IDA7CisJaWYgKGN0eC0+ZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkgeworCQlmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkrKywgYmxvY2tfbnIrKykgeworCQkJZmxhZ3MgPSBibG9ja19pdGVyYXRlX2RpbmQoYmxvY2tfbnIsCisJCQkJCQkgICAqdGluZF9ibG9jaywKKwkJCQkJCSAgIG9mZnNldCwgY3R4KTsKKwkJCWNoYW5nZWQgfD0gZmxhZ3M7CisJCQlpZiAoZmxhZ3MgJiAoQkxPQ0tfQUJPUlQgfCBCTE9DS19FUlJPUikpIHsKKwkJCQlyZXQgfD0gZmxhZ3MgJiAoQkxPQ0tfQUJPUlQgfCBCTE9DS19FUlJPUik7CisJCQkJYnJlYWs7CisJCQl9CisJCQlvZmZzZXQgKz0gc2l6ZW9mKGJsa190KTsKKwkJfQorCX0gZWxzZSB7CisJCWZvciAoaSA9IDA7IGkgPCBsaW1pdDsgaSsrLCBibG9ja19ucisrKSB7CisJCQlpZiAoKmJsb2NrX25yID09IDApIHsKKwkJCQljdHgtPmJjb3VudCArPSBsaW1pdCpsaW1pdDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWZsYWdzID0gYmxvY2tfaXRlcmF0ZV9kaW5kKGJsb2NrX25yLAorCQkJCQkJICAgKnRpbmRfYmxvY2ssCisJCQkJCQkgICBvZmZzZXQsIGN0eCk7CisJCQljaGFuZ2VkIHw9IGZsYWdzOworCQkJaWYgKGZsYWdzICYgKEJMT0NLX0FCT1JUIHwgQkxPQ0tfRVJST1IpKSB7CisJCQkJcmV0IHw9IGZsYWdzICYgKEJMT0NLX0FCT1JUIHwgQkxPQ0tfRVJST1IpOworCQkJCWJyZWFrOworCQkJfQorCQkJb2Zmc2V0ICs9IHNpemVvZihibGtfdCk7CisJCX0KKwl9CisJY2hlY2tfZm9yX3JvX3Zpb2xhdGlvbl9yZXR1cm4oY3R4LCBjaGFuZ2VkKTsKKwlpZiAoY2hhbmdlZCAmIEJMT0NLX0NIQU5HRUQpIHsKKwkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX3dyaXRlX2luZF9ibG9jayhjdHgtPmZzLCAqdGluZF9ibG9jaywKKwkJCQkJCSAgICAgIGN0eC0+dGluZF9idWYpOworCQlpZiAoY3R4LT5lcnJjb2RlKQorCQkJcmV0IHw9IEJMT0NLX0VSUk9SIHwgQkxPQ0tfQUJPUlQ7CisJfQorCWlmICgoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UpICYmCisJICAgICEoY3R4LT5mbGFncyAmIEJMT0NLX0ZMQUdfREFUQV9PTkxZKSAmJgorCSAgICAhKHJldCAmIEJMT0NLX0FCT1JUKSkgeworCQlibGs2NCA9ICp0aW5kX2Jsb2NrOworCQlyZXQgfD0gKCpjdHgtPmZ1bmMpKGN0eC0+ZnMsICZibGs2NCwKKwkJCQkgICAgQkxPQ0tfQ09VTlRfVElORCwgcmVmX2Jsb2NrLAorCQkJCSAgICByZWZfb2Zmc2V0LCBjdHgtPnByaXZfZGF0YSk7CisJCSp0aW5kX2Jsb2NrID0gYmxrNjQ7CisJfQorCWNoZWNrX2Zvcl9yb192aW9sYXRpb25fcmV0dXJuKGN0eCwgcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitlcnJjb2RlX3QgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGV4dDJfZmlsc3lzIGZzLAorCQkJCWV4dDJfaW5vX3QgaW5vLAorCQkJCWludAlmbGFncywKKwkJCQljaGFyICpibG9ja19idWYsCisJCQkJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICBibGs2NF90CSpibG9ja25yLAorCQkJCQkgICAgZTJfYmxrY250X3QJYmxvY2tjbnQsCisJCQkJCSAgICBibGs2NF90CXJlZl9ibGssCisJCQkJCSAgICBpbnQJCXJlZl9vZmZzZXQsCisJCQkJCSAgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJCXZvaWQgKnByaXZfZGF0YSkKK3sKKwlpbnQJaTsKKwlpbnQJciwgcmV0ID0gMDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBibG9ja19jb250ZXh0IGN0eDsKKwlpbnQJbGltaXQ7CisJYmxrNjRfdAlibGs2NDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwljdHguZXJyY29kZSA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKGN0eC5lcnJjb2RlKQorCQlyZXR1cm4gY3R4LmVycmNvZGU7CisKKwkvKgorCSAqIEFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEgaGFzIG5vIGJsb2NrcyBvdmVyIHdoaWNoIHRvCisJICogaXRlcmF0ZSwgc28gcmV0dXJuIGFuIGVycm9yIGNvZGUgaW5kaWNhdGluZyB0aGlzIGZhY3QuCisJICovCisJaWYgKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKQorCQlyZXR1cm4gRVhUMl9FVF9JTkxJTkVfREFUQV9DQU5UX0lURVJBVEU7CisKKwkvKgorCSAqIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGxpbWl0IGxhcmdlIGZpbGVzCisJICovCisJaWYgKGZsYWdzICYgQkxPQ0tfRkxBR19OT19MQVJHRSkgeworCQlpZiAoIUxJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSAmJgorCQkgICAgKGlub2RlLmlfc2l6ZV9oaWdoICE9IDApKQorCQkJcmV0dXJuIEVYVDJfRVRfRklMRV9UT09fQklHOworCX0KKworCWxpbWl0ID0gZnMtPmJsb2Nrc2l6ZSA+PiAyOworCisJY3R4LmZzID0gZnM7CisJY3R4LmZ1bmMgPSBmdW5jOworCWN0eC5wcml2X2RhdGEgPSBwcml2X2RhdGE7CisJY3R4LmZsYWdzID0gZmxhZ3M7CisJY3R4LmJjb3VudCA9IDA7CisJaWYgKGJsb2NrX2J1ZikgeworCQljdHguaW5kX2J1ZiA9IGJsb2NrX2J1ZjsKKwl9IGVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KDMsIGZzLT5ibG9ja3NpemUsICZjdHguaW5kX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKwljdHguZGluZF9idWYgPSBjdHguaW5kX2J1ZiArIGZzLT5ibG9ja3NpemU7CisJY3R4LnRpbmRfYnVmID0gY3R4LmRpbmRfYnVmICsgZnMtPmJsb2Nrc2l6ZTsKKworCS8qCisJICogSXRlcmF0ZSBvdmVyIHRoZSBIVVJEIHRyYW5zbGF0b3IgYmxvY2sgKGlmIHByZXNlbnQpCisJICovCisJaWYgKChmcy0+c3VwZXItPnNfY3JlYXRvcl9vcyA9PSBFWFQyX09TX0hVUkQpICYmCisJICAgICEoZmxhZ3MgJiBCTE9DS19GTEFHX0RBVEFfT05MWSkpIHsKKwkJaWYgKGlub2RlLm9zZDEuaHVyZDEuaF9pX3RyYW5zbGF0b3IpIHsKKwkJCWJsazY0ID0gaW5vZGUub3NkMS5odXJkMS5oX2lfdHJhbnNsYXRvcjsKKwkJCXJldCB8PSAoKmN0eC5mdW5jKShmcywgJmJsazY0LAorCQkJCQkgICBCTE9DS19DT1VOVF9UUkFOU0xBVE9SLAorCQkJCQkgICAwLCAwLCBwcml2X2RhdGEpOworCQkJaW5vZGUub3NkMS5odXJkMS5oX2lfdHJhbnNsYXRvciA9IChibGtfdCkgYmxrNjQ7CisJCQlpZiAocmV0ICYgQkxPQ0tfQUJPUlQpCisJCQkJZ290byBhYm9ydF9leGl0OworCQkJY2hlY2tfZm9yX3JvX3Zpb2xhdGlvbl9nb3RvKCZjdHgsIHJldCwgYWJvcnRfZXhpdCk7CisJCX0KKwl9CisKKwlpZiAoaW5vZGUuaV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgeworCQlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJCXN0cnVjdCBleHQyZnNfZXh0ZW50CWV4dGVudCwgbmV4dDsKKwkJZTJfYmxrY250X3QJCWJsb2NrY250ID0gMDsKKwkJYmxrNjRfdAkJCWJsaywgbmV3X2JsazsKKwkJaW50CQkJb3AgPSBFWFQyX0VYVEVOVF9ST09UOworCQlpbnQJCQl1bmluaXQ7CisJCXVuc2lnbmVkIGludAkJajsKKworCQljdHguZXJyY29kZSA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGlubywgJmlub2RlLCAmaGFuZGxlKTsKKwkJaWYgKGN0eC5lcnJjb2RlKQorCQkJZ290byBhYm9ydF9leGl0OworCisJCXdoaWxlICgxKSB7CisJCQlpZiAob3AgPT0gRVhUMl9FWFRFTlRfQ1VSUkVOVCkKKwkJCQljdHguZXJyY29kZSA9IDA7CisJCQllbHNlCisJCQkJY3R4LmVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIG9wLAorCQkJCQkJCQkmZXh0ZW50KTsKKwkJCWlmIChjdHguZXJyY29kZSkgeworCQkJCWlmIChjdHguZXJyY29kZSAhPSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUKQorCQkJCQlicmVhazsKKwkJCQljdHguZXJyY29kZSA9IDA7CisJCQkJaWYgKCEoZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkpCisJCQkJCWJyZWFrOworCQkJbmV4dF9ibG9ja19zZXQ6CisJCQkJYmxrID0gMDsKKwkJCQlyID0gKCpjdHguZnVuYykoZnMsICZibGssIGJsb2NrY250LAorCQkJCQkJMCwgMCwgcHJpdl9kYXRhKTsKKwkJCQlyZXQgfD0gcjsKKwkJCQljaGVja19mb3Jfcm9fdmlvbGF0aW9uX2dvdG8oJmN0eCwgcmV0LAorCQkJCQkJCSAgICBleHRlbnRfZG9uZSk7CisJCQkJaWYgKHIgJiBCTE9DS19DSEFOR0VEKSB7CisJCQkJCWN0eC5lcnJjb2RlID0KKwkJCQkJCWV4dDJmc19leHRlbnRfc2V0X2JtYXAoaGFuZGxlLAorCQkJCQkJICAgICAgIChibGs2NF90KSBibG9ja2NudCsrLAorCQkJCQkJICAgICAgIChibGs2NF90KSBibGssIDApOworCQkJCQlpZiAoY3R4LmVycmNvZGUgfHwgKHJldCAmIEJMT0NLX0FCT1JUKSkKKwkJCQkJCWJyZWFrOworCQkJCQlpZiAoYmxrKQorCQkJCQkJZ290byBuZXh0X2Jsb2NrX3NldDsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCW9wID0gRVhUMl9FWFRFTlRfTkVYVDsKKwkJCWJsayA9IGV4dGVudC5lX3BibGs7CisJCQlpZiAoIShleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX0xFQUYpKSB7CisJCQkJaWYgKGN0eC5mbGFncyAmIEJMT0NLX0ZMQUdfREFUQV9PTkxZKQorCQkJCQljb250aW51ZTsKKwkJCQlpZiAoKCEoZXh0ZW50LmVfZmxhZ3MgJgorCQkJCSAgICAgICBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpICYmCisJCQkJICAgICAhKGN0eC5mbGFncyAmIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UpKSB8fAorCQkJCSAgICAoKGV4dGVudC5lX2ZsYWdzICYKKwkJCQkgICAgICBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpICYmCisJCQkJICAgICAoY3R4LmZsYWdzICYgQkxPQ0tfRkxBR19ERVBUSF9UUkFWRVJTRSkpKSB7CisJCQkJCXJldCB8PSAoKmN0eC5mdW5jKShmcywgJmJsaywKKwkJCQkJCQkgICAtMSwgMCwgMCwgcHJpdl9kYXRhKTsKKwkJCQkJaWYgKHJldCAmIEJMT0NLX0NIQU5HRUQpIHsKKwkJCQkJCWV4dGVudC5lX3BibGsgPSBibGs7CisJCQkJCQljdHguZXJyY29kZSA9CisJCQkJZXh0MmZzX2V4dGVudF9yZXBsYWNlKGhhbmRsZSwgMCwgJmV4dGVudCk7CisJCQkJCQlpZiAoY3R4LmVycmNvZGUpCisJCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQkJaWYgKHJldCAmIEJMT0NLX0FCT1JUKQorCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJfQorCQkJdW5pbml0ID0gMDsKKwkJCWlmIChleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkKKwkJCQl1bmluaXQgPSBFWFQyX0VYVEVOVF9TRVRfQk1BUF9VTklOSVQ7CisKKwkJCS8qIAorCQkJICogR2V0IHRoZSBuZXh0IGV4dGVudCBiZWZvcmUgd2Ugc3RhcnQgbWVzc2luZworCQkJICogd2l0aCB0aGUgY3VycmVudCBleHRlbnQKKwkJCSAqLworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBvcCwgJm5leHQpOworCisjaWYgMAorCQkJcHJpbnRmKCJsYmxrICVsbHUgcGJsayAlbGx1IGxlbiAlZCBibG9ja2NudCAlbGx1XG4iLAorCQkJICAgICAgIGV4dGVudC5lX2xibGssIGV4dGVudC5lX3BibGssCisJCQkgICAgICAgZXh0ZW50LmVfbGVuLCBibG9ja2NudCk7CisjZW5kaWYKKwkJCWlmIChleHRlbnQuZV9sYmxrICsgZXh0ZW50LmVfbGVuIDw9IChibGs2NF90KSBibG9ja2NudCkKKwkJCQljb250aW51ZTsKKwkJCWlmIChleHRlbnQuZV9sYmxrID4gKGJsazY0X3QpIGJsb2NrY250KQorCQkJCWJsb2NrY250ID0gZXh0ZW50LmVfbGJsazsKKwkJCWogPSBibG9ja2NudCAtIGV4dGVudC5lX2xibGs7CisJCQlibGsgKz0gajsKKwkJCWZvciAoYmxvY2tjbnQgPSBleHRlbnQuZV9sYmxrLCBqID0gMDsKKwkJCSAgICAgaiA8IGV4dGVudC5lX2xlbjsKKwkJCSAgICAgYmxrKyssIGJsb2NrY250KyssIGorKykgeworCQkJCW5ld19ibGsgPSBibGs7CisJCQkJciA9ICgqY3R4LmZ1bmMpKGZzLCAmbmV3X2JsaywgYmxvY2tjbnQsCisJCQkJCQkwLCAwLCBwcml2X2RhdGEpOworCQkJCXJldCB8PSByOworCQkJCWNoZWNrX2Zvcl9yb192aW9sYXRpb25fZ290bygmY3R4LCByZXQsCisJCQkJCQkJICAgIGV4dGVudF9kb25lKTsKKwkJCQlpZiAociAmIEJMT0NLX0NIQU5HRUQpIHsKKwkJCQkJY3R4LmVycmNvZGUgPQorCQkJCQkJZXh0MmZzX2V4dGVudF9zZXRfYm1hcChoYW5kbGUsCisJCQkJCQkgICAgICAgKGJsazY0X3QpIGJsb2NrY250LAorCQkJCQkJICAgICAgIG5ld19ibGssIHVuaW5pdCk7CisJCQkJCWlmIChjdHguZXJyY29kZSkKKwkJCQkJCWdvdG8gZXh0ZW50X2RvbmU7CisJCQkJfQorCQkJCWlmIChyZXQgJiBCTE9DS19BQk9SVCkKKwkJCQkJZ290byBleHRlbnRfZG9uZTsKKwkJCX0KKwkJCWlmIChyZXR2YWwgPT0gMCkgeworCQkJCWV4dGVudCA9IG5leHQ7CisJCQkJb3AgPSBFWFQyX0VYVEVOVF9DVVJSRU5UOworCQkJfQorCQl9CisKKwlleHRlbnRfZG9uZToKKwkJZXh0MmZzX2V4dGVudF9mcmVlKGhhbmRsZSk7CisJCXJldCB8PSBCTE9DS19FUlJPUjsgLyogY3R4LmVycmNvZGUgaXMgYWx3YXlzIHZhbGlkIGhlcmUgKi8KKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBJdGVyYXRlIG92ZXIgbm9ybWFsIGRhdGEgYmxvY2tzCisJICovCisJZm9yIChpID0gMDsgaSA8IEVYVDJfTkRJUl9CTE9DS1MgOyBpKyssIGN0eC5iY291bnQrKykgeworCQlpZiAoaW5vZGUuaV9ibG9ja1tpXSB8fCAoZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkpIHsKKwkJCWJsazY0ID0gaW5vZGUuaV9ibG9ja1tpXTsKKwkJCXJldCB8PSAoKmN0eC5mdW5jKShmcywgJmJsazY0LCBjdHguYmNvdW50LCAwLCBpLCAKKwkJCQkJICAgcHJpdl9kYXRhKTsKKwkJCWlub2RlLmlfYmxvY2tbaV0gPSAoYmxrX3QpIGJsazY0OworCQkJaWYgKHJldCAmIEJMT0NLX0FCT1JUKQorCQkJCWdvdG8gYWJvcnRfZXhpdDsKKwkJfQorCX0KKwljaGVja19mb3Jfcm9fdmlvbGF0aW9uX2dvdG8oJmN0eCwgcmV0LCBhYm9ydF9leGl0KTsKKwlpZiAoaW5vZGUuaV9ibG9ja1tFWFQyX0lORF9CTE9DS10gfHwgKGZsYWdzICYgQkxPQ0tfRkxBR19BUFBFTkQpKSB7CisJCXJldCB8PSBibG9ja19pdGVyYXRlX2luZCgmaW5vZGUuaV9ibG9ja1tFWFQyX0lORF9CTE9DS10sIAorCQkJCQkgMCwgRVhUMl9JTkRfQkxPQ0ssICZjdHgpOworCQlpZiAocmV0ICYgQkxPQ0tfQUJPUlQpCisJCQlnb3RvIGFib3J0X2V4aXQ7CisJfSBlbHNlCisJCWN0eC5iY291bnQgKz0gbGltaXQ7CisJaWYgKGlub2RlLmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSB8fCAoZmxhZ3MgJiBCTE9DS19GTEFHX0FQUEVORCkpIHsKKwkJcmV0IHw9IGJsb2NrX2l0ZXJhdGVfZGluZCgmaW5vZGUuaV9ibG9ja1tFWFQyX0RJTkRfQkxPQ0tdLAorCQkJCQkgIDAsIEVYVDJfRElORF9CTE9DSywgJmN0eCk7CisJCWlmIChyZXQgJiBCTE9DS19BQk9SVCkKKwkJCWdvdG8gYWJvcnRfZXhpdDsKKwl9IGVsc2UKKwkJY3R4LmJjb3VudCArPSBsaW1pdCAqIGxpbWl0OworCWlmIChpbm9kZS5pX2Jsb2NrW0VYVDJfVElORF9CTE9DS10gfHwgKGZsYWdzICYgQkxPQ0tfRkxBR19BUFBFTkQpKSB7CisJCXJldCB8PSBibG9ja19pdGVyYXRlX3RpbmQoJmlub2RlLmlfYmxvY2tbRVhUMl9USU5EX0JMT0NLXSwKKwkJCQkJICAwLCBFWFQyX1RJTkRfQkxPQ0ssICZjdHgpOworCQlpZiAocmV0ICYgQkxPQ0tfQUJPUlQpCisJCQlnb3RvIGFib3J0X2V4aXQ7CisJfQorCithYm9ydF9leGl0OgorCWlmIChyZXQgJiBCTE9DS19DSEFOR0VEKSB7CisJCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCQlpZiAocmV0dmFsKSB7CisJCQlyZXQgfD0gQkxPQ0tfRVJST1I7CisJCQljdHguZXJyY29kZSA9IHJldHZhbDsKKwkJfQorCX0KK2Vycm91dDoKKwlpZiAoIWJsb2NrX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjdHguaW5kX2J1Zik7CisKKwlyZXR1cm4gKHJldCAmIEJMT0NLX0VSUk9SKSA/IGN0eC5lcnJjb2RlIDogMDsKK30KKworLyoKKyAqIEVtdWxhdGUgdGhlIG9sZCBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmdW5jdGlvbiEKKyAqLworCitzdHJ1Y3QgeGxhdGU2NCB7CisJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCSAgICBibGtfdAkqYmxvY2tuciwKKwkJICAgIGUyX2Jsa2NudF90CWJsb2NrY250LAorCQkgICAgYmxrX3QJcmVmX2JsaywKKwkJICAgIGludAkJcmVmX29mZnNldCwKKwkJICAgIHZvaWQJKnByaXZfZGF0YSk7CisJdm9pZCAqcmVhbF9wcml2YXRlOworfTsKKworc3RhdGljIGludCB4bGF0ZTY0X2Z1bmMoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QJKmJsb2NrbnIsCisJCQllMl9ibGtjbnRfdCBibG9ja2NudCwgYmxrNjRfdCByZWZfYmxrLAorCQkJaW50IHJlZl9vZmZzZXQsIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgeGxhdGU2NCAqeGwgPSAoc3RydWN0IHhsYXRlNjQgKikgcHJpdl9kYXRhOworCWludAkJcmV0OworCWJsa190CQlibG9jazMyID0gKmJsb2NrbnI7CisJCisJcmV0ID0gKCp4bC0+ZnVuYykoZnMsICZibG9jazMyLCBibG9ja2NudCwgKGJsa190KSByZWZfYmxrLCByZWZfb2Zmc2V0LAorCQkJICAgICB4bC0+cmVhbF9wcml2YXRlKTsKKwkqYmxvY2tuciA9IGJsb2NrMzI7CisJcmV0dXJuIHJldDsKK30KKworZXJyY29kZV90IGV4dDJmc19ibG9ja19pdGVyYXRlMihleHQyX2ZpbHN5cyBmcywKKwkJCQlleHQyX2lub190IGlubywKKwkJCQlpbnQJZmxhZ3MsCisJCQkJY2hhciAqYmxvY2tfYnVmLAorCQkJCWludCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgYmxrX3QJKmJsb2NrbnIsCisJCQkJCSAgICBlMl9ibGtjbnRfdAlibG9ja2NudCwKKwkJCQkJICAgIGJsa190CXJlZl9ibGssCisJCQkJCSAgICBpbnQJCXJlZl9vZmZzZXQsCisJCQkJCSAgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJCXZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgeGxhdGU2NCB4bDsKKworCXhsLnJlYWxfcHJpdmF0ZSA9IHByaXZfZGF0YTsKKwl4bC5mdW5jID0gZnVuYzsKKworCXJldHVybiBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywgZmxhZ3MsIGJsb2NrX2J1ZiwgCisJCQkJICAgICB4bGF0ZTY0X2Z1bmMsICZ4bCk7Cit9CisKKworc3RydWN0IHhsYXRlIHsKKwlpbnQgKCpmdW5jKShleHQyX2ZpbHN5cwlmcywKKwkJICAgIGJsa190CSpibG9ja25yLAorCQkgICAgaW50CQliY291bnQsCisJCSAgICB2b2lkCSpwcml2X2RhdGEpOworCXZvaWQgKnJlYWxfcHJpdmF0ZTsKK307CisKKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitzdGF0aWMgaW50IHhsYXRlX2Z1bmMoZXh0Ml9maWxzeXMgZnMsIGJsa190ICpibG9ja25yLCBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJICAgICAgYmxrX3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHhsYXRlICp4bCA9IChzdHJ1Y3QgeGxhdGUgKikgcHJpdl9kYXRhOworCisJcmV0dXJuICgqeGwtPmZ1bmMpKGZzLCBibG9ja25yLCAoaW50KSBibG9ja2NudCwgeGwtPnJlYWxfcHJpdmF0ZSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYmxvY2tfaXRlcmF0ZShleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgICBleHQyX2lub190IGlubywKKwkJCSAgICAgICBpbnQJZmxhZ3MsCisJCQkgICAgICAgY2hhciAqYmxvY2tfYnVmLAorCQkJICAgICAgIGludCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICBibGtfdAkqYmxvY2tuciwKKwkJCQkJICAgaW50CWJsb2NrY250LAorCQkJCQkgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJICAgICAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgeGxhdGUgeGw7CisKKwl4bC5yZWFsX3ByaXZhdGUgPSBwcml2X2RhdGE7CisJeGwuZnVuYyA9IGZ1bmM7CisKKwlyZXR1cm4gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUyKGZzLCBpbm8sIEJMT0NLX0ZMQUdfTk9fTEFSR0UgfCBmbGFncywKKwkJCQkgICAgIGJsb2NrX2J1ZiwgeGxhdGVfZnVuYywgJnhsKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYm1hcC5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYm1hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZGE0ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibWFwLmMKQEAgLTAsMCArMSw0NzMgQEAKKy8qCisgKiBibWFwLmMgLS0tIGxvZ2ljYWwgdG8gcGh5c2ljYWwgYmxvY2sgbWFwcGluZworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChOT19JTkxJTkVfRlVOQ1MpCisjZGVmaW5lIF9CTUFQX0lOTElORV8JX19pbmxpbmVfXworI2Vsc2UKKyNkZWZpbmUgX0JNQVBfSU5MSU5FXworI2VuZGlmCisKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2JtYXAoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgIGNoYXIgKmJsb2NrX2J1ZiwgaW50IGJtYXBfZmxhZ3MsCisJCQkgICAgIGJsa190IGJsb2NrLCBibGtfdCAqcGh5c19ibGspOworCisjZGVmaW5lIGlub2RlX2JtYXAoaW5vZGUsIG5yKSAoKGlub2RlKS0+aV9ibG9ja1sobnIpXSkKKworc3RhdGljIF9CTUFQX0lOTElORV8gZXJyY29kZV90IGJsb2NrX2luZF9ibWFwKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MsCisJCQkJCSAgICAgIGJsa190IGluZCwgY2hhciAqYmxvY2tfYnVmLAorCQkJCQkgICAgICBpbnQgKmJsb2Nrc19hbGxvYywKKwkJCQkJICAgICAgYmxrX3QgbnIsIGJsa190ICpyZXRfYmxrKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrX3QJCWI7CisKKwlpZiAoIWluZCkgeworCQlpZiAoZmxhZ3MgJiBCTUFQX1NFVCkKKwkJCXJldHVybiBFWFQyX0VUX1NFVF9CTUFQX05PX0lORDsKKwkJKnJldF9ibGsgPSAwOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2Jsayhmcy0+aW8sIGluZCwgMSwgYmxvY2tfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKGZsYWdzICYgQk1BUF9TRVQpIHsKKwkJYiA9ICpyZXRfYmxrOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQliID0gZXh0MmZzX3N3YWIzMihiKTsKKyNlbmRpZgorCQkoKGJsa190ICopIGJsb2NrX2J1ZilbbnJdID0gYjsKKwkJcmV0dXJuIGlvX2NoYW5uZWxfd3JpdGVfYmxrKGZzLT5pbywgaW5kLCAxLCBibG9ja19idWYpOworCX0KKworCWIgPSAoKGJsa190ICopIGJsb2NrX2J1ZilbbnJdOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJYiA9IGV4dDJmc19zd2FiMzIoYik7CisjZW5kaWYKKworCWlmICghYiAmJiAoZmxhZ3MgJiBCTUFQX0FMTE9DKSkgeworCQliID0gbnIgPyBleHQyZnNfbGUzMl90b19jcHUoKChibGtfdCAqKWJsb2NrX2J1ZilbbnIgLSAxXSkgOiBpbmQ7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY19ibG9jayhmcywgYiwKKwkJCQkJICAgIGJsb2NrX2J1ZiArIGZzLT5ibG9ja3NpemUsICZiKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJKChibGtfdCAqKSBibG9ja19idWYpW25yXSA9IGV4dDJmc19zd2FiMzIoYik7CisjZWxzZQorCQkoKGJsa190ICopIGJsb2NrX2J1ZilbbnJdID0gYjsKKyNlbmRpZgorCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrKGZzLT5pbywgaW5kLCAxLCBibG9ja19idWYpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKworCQkoKmJsb2Nrc19hbGxvYykrKzsKKwl9CisKKwkqcmV0X2JsayA9IGI7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBfQk1BUF9JTkxJTkVfIGVycmNvZGVfdCBibG9ja19kaW5kX2JtYXAoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywKKwkJCQkJICAgICAgIGJsa190IGRpbmQsIGNoYXIgKmJsb2NrX2J1ZiwKKwkJCQkJICAgICAgIGludCAqYmxvY2tzX2FsbG9jLAorCQkJCQkgICAgICAgYmxrX3QgbnIsIGJsa190ICpyZXRfYmxrKQoreworCWJsa190CQliID0gMDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsa190CQlhZGRyX3Blcl9ibG9jazsKKworCWFkZHJfcGVyX2Jsb2NrID0gKGJsa190KSBmcy0+YmxvY2tzaXplID4+IDI7CisKKwlyZXR2YWwgPSBibG9ja19pbmRfYm1hcChmcywgZmxhZ3MgJiB+Qk1BUF9TRVQsIGRpbmQsIGJsb2NrX2J1ZiwKKwkJCQlibG9ja3NfYWxsb2MsIG5yIC8gYWRkcl9wZXJfYmxvY2ssICZiKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCXJldHZhbCA9IGJsb2NrX2luZF9ibWFwKGZzLCBmbGFncywgYiwgYmxvY2tfYnVmLCBibG9ja3NfYWxsb2MsCisJCQkJbnIgJSBhZGRyX3Blcl9ibG9jaywgcmV0X2Jsayk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIF9CTUFQX0lOTElORV8gZXJyY29kZV90IGJsb2NrX3RpbmRfYm1hcChleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLAorCQkJCQkgICAgICAgYmxrX3QgdGluZCwgY2hhciAqYmxvY2tfYnVmLAorCQkJCQkgICAgICAgaW50ICpibG9ja3NfYWxsb2MsCisJCQkJCSAgICAgICBibGtfdCBuciwgYmxrX3QgKnJldF9ibGspCit7CisJYmxrX3QJCWIgPSAwOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrX3QJCWFkZHJfcGVyX2Jsb2NrOworCisJYWRkcl9wZXJfYmxvY2sgPSAoYmxrX3QpIGZzLT5ibG9ja3NpemUgPj4gMjsKKworCXJldHZhbCA9IGJsb2NrX2RpbmRfYm1hcChmcywgZmxhZ3MgJiB+Qk1BUF9TRVQsIHRpbmQsIGJsb2NrX2J1ZiwKKwkJCQkgYmxvY2tzX2FsbG9jLCBuciAvIGFkZHJfcGVyX2Jsb2NrLCAmYik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlyZXR2YWwgPSBibG9ja19pbmRfYm1hcChmcywgZmxhZ3MsIGIsIGJsb2NrX2J1ZiwgYmxvY2tzX2FsbG9jLAorCQkJCW5yICUgYWRkcl9wZXJfYmxvY2ssIHJldF9ibGspOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0ZW50X2JtYXAoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgIGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCSAgICAgY2hhciAqYmxvY2tfYnVmLCBpbnQgYm1hcF9mbGFncywgYmxrNjRfdCBibG9jaywKKwkJCSAgICAgaW50ICpyZXRfZmxhZ3MsIGludCAqYmxvY2tzX2FsbG9jLAorCQkJICAgICBibGs2NF90ICpwaHlzX2Jsayk7CisKK3N0YXRpYyBlcnJjb2RlX3QgaW1wbGllZF9jbHVzdGVyX2FsbG9jKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSAgICAgICBleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJICAgICAgIGJsazY0X3QgbGJsaywgYmxrNjRfdCAqcGh5c19ibGspCit7CisJYmxrNjRfdAliYXNlX2Jsb2NrLCBwYmxvY2sgPSAwOworCWludCBpOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwliYXNlX2Jsb2NrID0gbGJsayAmIH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkvKgorCSAqIEV4Y2VwdCBmb3IgdGhlIGxvZ2ljYWwgYmxvY2sgKGxibGspIHRoYXQgd2FzIHBhc3NlZCBpbiwgc2VhcmNoIGFsbAorCSAqIGJsb2NrcyBpbiB0aGlzIGxvZ2ljYWwgY2x1c3RlciBmb3IgYSBtYXBwaW5nIHRvIGEgcGh5c2ljYWwgY2x1c3Rlci4KKwkgKiBJZiBhbnkgc3VjaCBtYXAgZXhpc3RzLCBjYWxjdWxhdGUgdGhlIHBoeXNpY2FsIGJsb2NrIHRoYXQgbWFwcyB0bworCSAqIHRoZSBsb2dpY2FsIGJsb2NrIGFuZCByZXR1cm4gdGhhdC4KKwkgKgorCSAqIFRoZSBvbGQgY29kZSB3b3VsZG4ndCBldmVuIGxvb2sgaWYgKGJsb2NrICUgY2x1c3Rlcl9yYXRpbykgPT0gMDsKKwkgKiB0aGlzIGlzIGluY29ycmVjdCBpZiB3ZSdyZSBhbGxvY2F0aW5nIGJsb2NrcyBpbiByZXZlcnNlIG9yZGVyLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7IGkrKykgeworCQlpZiAoYmFzZV9ibG9jayArIGkgPT0gbGJsaykKKwkJCWNvbnRpbnVlOworCQlleHRlbnRfYm1hcChmcywgaW5vLCBpbm9kZSwgaGFuZGxlLCAwLCAwLAorCQkJICAgIGJhc2VfYmxvY2sgKyBpLCAwLCAwLCAmcGJsb2NrKTsKKwkJaWYgKHBibG9jaykKKwkJCWJyZWFrOworCX0KKwlpZiAocGJsb2NrID09IDApCisJCXJldHVybiAwOworCSpwaHlzX2JsayA9IHBibG9jayAtIGkgKyAobGJsayAtIGJhc2VfYmxvY2spOworCXJldHVybiAwOworfQorCisvKiBUcnkgdG8gbWFwIGEgbG9naWNhbCBibG9jayB0byBhbiBhbHJlYWR5LWFsbG9jYXRlZCBwaHlzaWNhbCBjbHVzdGVyLiAqLworZXJyY29kZV90IGV4dDJmc19tYXBfY2x1c3Rlcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBibGs2NF90IGxibGssCisJCQkJICAgYmxrNjRfdCAqcGJsaykKK3sKKwlleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGU7CisJZXJyY29kZV90IHJldHZhbDsKKworCS8qIE5lZWQgYmlnYWxsb2MgYW5kIGV4dGVudHMgdG8gYmUgZW5hYmxlZCAqLworCSpwYmxrID0gMDsKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9iaWdhbGxvYyhmcy0+c3VwZXIpIHx8CisJICAgICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGlubywgaW5vZGUsICZoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworCisJcmV0dmFsID0gaW1wbGllZF9jbHVzdGVyX2FsbG9jKGZzLCBpbm8sIGlub2RlLCBoYW5kbGUsIGxibGssIHBibGspOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0MjsKKworb3V0MjoKKwlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKK291dDoKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dGVudF9ibWFwKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJICAgICBleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkgICAgIGNoYXIgKmJsb2NrX2J1ZiwgaW50IGJtYXBfZmxhZ3MsIGJsazY0X3QgYmxvY2ssCisJCQkgICAgIGludCAqcmV0X2ZsYWdzLCBpbnQgKmJsb2Nrc19hbGxvYywKKwkJCSAgICAgYmxrNjRfdCAqcGh5c19ibGspCit7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCXVuc2lnbmVkIGludAkJb2Zmc2V0OworCWVycmNvZGVfdAkJcmV0dmFsID0gMDsKKwlibGs2NF90CQkJYmxrNjQgPSAwOworCWludAkJCWFsbG9jID0gMDsKKwlpbnQJCQlzZXRfZmxhZ3M7CisKKwlzZXRfZmxhZ3MgPSBibWFwX2ZsYWdzICYgQk1BUF9VTklOSVQgPyBFWFQyX0VYVEVOVF9TRVRfQk1BUF9VTklOSVQgOiAwOworCisJaWYgKGJtYXBfZmxhZ3MgJiBCTUFQX1NFVCkgeworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKGhhbmRsZSwgYmxvY2ssCisJCQkJCQkqcGh5c19ibGssIHNldF9mbGFncyk7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIGJsb2NrKTsKKwlpZiAocmV0dmFsKSB7CisJCS8qIElmIHRoZSBleHRlbnQgaXMgbm90IGZvdW5kLCByZXR1cm4gcGh5c19ibGsgPSAwICovCisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9FWFRFTlRfTk9UX0ZPVU5EKQorCQkJZ290byBnb3RfYmxvY2s7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfQ1VSUkVOVCwgJmV4dGVudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlvZmZzZXQgPSBibG9jayAtIGV4dGVudC5lX2xibGs7CisJaWYgKGJsb2NrID49IGV4dGVudC5lX2xibGsgJiYgKG9mZnNldCA8PSBleHRlbnQuZV9sZW4pKSB7CisJCSpwaHlzX2JsayA9IGV4dGVudC5lX3BibGsgKyBvZmZzZXQ7CisJCWlmIChyZXRfZmxhZ3MgJiYgZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpCisJCQkqcmV0X2ZsYWdzIHw9IEJNQVBfUkVUX1VOSU5JVDsKKwl9Citnb3RfYmxvY2s6CisJaWYgKCgqcGh5c19ibGsgPT0gMCkgJiYgKGJtYXBfZmxhZ3MgJiBCTUFQX0FMTE9DKSkgeworCQlpbXBsaWVkX2NsdXN0ZXJfYWxsb2MoZnMsIGlubywgaW5vZGUsIGhhbmRsZSwgYmxvY2ssICZibGs2NCk7CisJCWlmIChibGs2NCkKKwkJCWdvdG8gc2V0X2V4dGVudDsKKwkJcmV0dmFsID0gZXh0ZW50X2JtYXAoZnMsIGlubywgaW5vZGUsIGhhbmRsZSwgYmxvY2tfYnVmLAorCQkJCSAgICAgMCwgYmxvY2stMSwgMCwgYmxvY2tzX2FsbG9jLCAmYmxrNjQpOworCQlpZiAocmV0dmFsKQorCQkJYmxrNjQgPSBleHQyZnNfZmluZF9pbm9kZV9nb2FsKGZzLCBpbm8sIGlub2RlLCBibG9jayk7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY19ibG9jazIoZnMsIGJsazY0LCBibG9ja19idWYsCisJCQkJCSAgICAgJmJsazY0KTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWJsazY0ICY9IH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJYmxrNjQgKz0gRVhUMkZTX0NMVVNURVJfTUFTSyhmcykgJiBibG9jazsKKwkJYWxsb2MrKzsKKwlzZXRfZXh0ZW50OgorCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKGhhbmRsZSwgYmxvY2ssCisJCQkJCQlibGs2NCwgc2V0X2ZsYWdzKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrNjQsIC0xKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJLyogVXBkYXRlIGlub2RlIGFmdGVyIHNldHRpbmcgZXh0ZW50ICovCisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sIGlub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCSpibG9ja3NfYWxsb2MgKz0gYWxsb2M7CisJCSpwaHlzX2JsayA9IGJsazY0OworCX0KKwlyZXR1cm4gMDsKK30KKworaW50IGV4dDJmc19maWxlX2Jsb2NrX29mZnNldF90b29fYmlnKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSAgICAgYmxrNjRfdCBvZmZzZXQpCit7CisJYmxrNjRfdCBhZGRyX3Blcl9ibG9jaywgbWF4X21hcF9ibG9jazsKKworCS8qIEtlcm5lbCBzZWVtcyB0byBjdXQgdXMgb2ZmIGF0IDQyOTQ5NjcyOTQgYmxvY2tzICovCisJaWYgKG9mZnNldCA+PSAoMVVMTCA8PCAzMikgLSAxKQorCQlyZXR1cm4gMTsKKworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkKKwkJcmV0dXJuIDA7CisKKwlhZGRyX3Blcl9ibG9jayA9IGZzLT5ibG9ja3NpemUgPj4gMjsKKwltYXhfbWFwX2Jsb2NrID0gYWRkcl9wZXJfYmxvY2s7CisJbWF4X21hcF9ibG9jayArPSBhZGRyX3Blcl9ibG9jayAqIGFkZHJfcGVyX2Jsb2NrOworCW1heF9tYXBfYmxvY2sgKz0gYWRkcl9wZXJfYmxvY2sgKiBhZGRyX3Blcl9ibG9jayAqIGFkZHJfcGVyX2Jsb2NrOworCW1heF9tYXBfYmxvY2sgKz0gMTI7CisKKwlyZXR1cm4gb2Zmc2V0ID49IG1heF9tYXBfYmxvY2s7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYm1hcDIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCSAgICAgICBjaGFyICpibG9ja19idWYsIGludCBibWFwX2ZsYWdzLCBibGs2NF90IGJsb2NrLAorCQkgICAgICAgaW50ICpyZXRfZmxhZ3MsIGJsazY0X3QgKnBoeXNfYmxrKQoreworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlX2J1ZjsKKwlleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUgPSAwOworCWJsa190IGFkZHJfcGVyX2Jsb2NrOworCWJsa190CWIsIGJsazMyOworCWNoYXIJKmJ1ZiA9IDA7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJaW50CQlibG9ja3NfYWxsb2MgPSAwLCBpbm9kZV9kaXJ0eSA9IDA7CisKKwlpZiAoIShibWFwX2ZsYWdzICYgQk1BUF9TRVQpKQorCQkqcGh5c19ibGsgPSAwOworCisJaWYgKHJldF9mbGFncykKKwkJKnJldF9mbGFncyA9IDA7CisKKwkvKiBSZWFkIGlub2RlIHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKi8KKwlpZiAoIWlub2RlKSB7CisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZV9idWYpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJaW5vZGUgPSAmaW5vZGVfYnVmOworCX0KKwlhZGRyX3Blcl9ibG9jayA9IChibGtfdCkgZnMtPmJsb2Nrc2l6ZSA+PiAyOworCisJaWYgKGV4dDJmc19maWxlX2Jsb2NrX29mZnNldF90b29fYmlnKGZzLCBpbm9kZSwgYmxvY2spKQorCQlyZXR1cm4gRVhUMl9FVF9GSUxFX1RPT19CSUc7CisKKwkvKgorCSAqIElmIGFuIGlub2RlIGhhcyBpbmxpbmUgZGF0YSwgdGhhdCBtZWFucyB0aGF0IGl0IGRvZXNuJ3QgaGF2ZQorCSAqIGFueSBibG9ja3MgYW5kIHdlIHNob3VsZG4ndCBtYXAgYW55IGJsb2NrcyBmb3IgaXQuCisJICovCisJaWYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkKKwkJcmV0dXJuIEVYVDJfRVRfSU5MSU5FX0RBVEFfTk9fQkxPQ0s7CisKKwlpZiAoIWJsb2NrX2J1ZikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KDIsIGZzLT5ibG9ja3NpemUsICZidWYpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJYmxvY2tfYnVmID0gYnVmOworCX0KKworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgeworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X29wZW4yKGZzLCBpbm8sIGlub2RlLCAmaGFuZGxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKwkJcmV0dmFsID0gZXh0ZW50X2JtYXAoZnMsIGlubywgaW5vZGUsIGhhbmRsZSwgYmxvY2tfYnVmLAorCQkJCSAgICAgYm1hcF9mbGFncywgYmxvY2ssIHJldF9mbGFncywKKwkJCQkgICAgICZibG9ja3NfYWxsb2MsIHBoeXNfYmxrKTsKKwkJZ290byBkb25lOworCX0KKworCWlmIChibG9jayA8IEVYVDJfTkRJUl9CTE9DS1MpIHsKKwkJaWYgKGJtYXBfZmxhZ3MgJiBCTUFQX1NFVCkgeworCQkJYiA9ICpwaHlzX2JsazsKKwkJCWlub2RlX2JtYXAoaW5vZGUsIGJsb2NrKSA9IGI7CisJCQlpbm9kZV9kaXJ0eSsrOworCQkJZ290byBkb25lOworCQl9CisKKwkJKnBoeXNfYmxrID0gaW5vZGVfYm1hcChpbm9kZSwgYmxvY2spOworCQliID0gYmxvY2sgPyBpbm9kZV9ibWFwKGlub2RlLCBibG9jayAtIDEpIDoKKwkJCSAgICBleHQyZnNfZmluZF9pbm9kZV9nb2FsKGZzLCBpbm8sIGlub2RlLCBibG9jayk7CisKKwkJaWYgKCgqcGh5c19ibGsgPT0gMCkgJiYgKGJtYXBfZmxhZ3MgJiBCTUFQX0FMTE9DKSkgeworCQkJcmV0dmFsID0gZXh0MmZzX2FsbG9jX2Jsb2NrKGZzLCBiLCBibG9ja19idWYsICZiKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBkb25lOworCQkJaW5vZGVfYm1hcChpbm9kZSwgYmxvY2spID0gYjsKKwkJCWJsb2Nrc19hbGxvYysrOworCQkJKnBoeXNfYmxrID0gYjsKKwkJfQorCQlnb3RvIGRvbmU7CisJfQorCisJLyogSW5kaXJlY3QgYmxvY2sgKi8KKwlibG9jayAtPSBFWFQyX05ESVJfQkxPQ0tTOworCWJsazMyID0gKnBoeXNfYmxrOworCWlmIChibG9jayA8IGFkZHJfcGVyX2Jsb2NrKSB7CisJCWIgPSBpbm9kZV9ibWFwKGlub2RlLCBFWFQyX0lORF9CTE9DSyk7CisJCWlmICghYikgeworCQkJaWYgKCEoYm1hcF9mbGFncyAmIEJNQVBfQUxMT0MpKSB7CisJCQkJaWYgKGJtYXBfZmxhZ3MgJiBCTUFQX1NFVCkKKwkJCQkJcmV0dmFsID0gRVhUMl9FVF9TRVRfQk1BUF9OT19JTkQ7CisJCQkJZ290byBkb25lOworCQkJfQorCisJCQliID0gaW5vZGVfYm1hcChpbm9kZSwgRVhUMl9JTkRfQkxPQ0stMSk7CisgCQkJcmV0dmFsID0gZXh0MmZzX2FsbG9jX2Jsb2NrKGZzLCBiLCBibG9ja19idWYsICZiKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBkb25lOworCQkJaW5vZGVfYm1hcChpbm9kZSwgRVhUMl9JTkRfQkxPQ0spID0gYjsKKwkJCWJsb2Nrc19hbGxvYysrOworCQl9CisJCXJldHZhbCA9IGJsb2NrX2luZF9ibWFwKGZzLCBibWFwX2ZsYWdzLCBiLCBibG9ja19idWYsCisJCQkJCSZibG9ja3NfYWxsb2MsIGJsb2NrLCAmYmxrMzIpOworCQlpZiAocmV0dmFsID09IDApCisJCQkqcGh5c19ibGsgPSBibGszMjsKKwkJZ290byBkb25lOworCX0KKworCS8qIERvdWJseSBpbmRpcmVjdCBibG9jayAgKi8KKwlibG9jayAtPSBhZGRyX3Blcl9ibG9jazsKKwlpZiAoYmxvY2sgPCBhZGRyX3Blcl9ibG9jayAqIGFkZHJfcGVyX2Jsb2NrKSB7CisJCWIgPSBpbm9kZV9ibWFwKGlub2RlLCBFWFQyX0RJTkRfQkxPQ0spOworCQlpZiAoIWIpIHsKKwkJCWlmICghKGJtYXBfZmxhZ3MgJiBCTUFQX0FMTE9DKSkgeworCQkJCWlmIChibWFwX2ZsYWdzICYgQk1BUF9TRVQpCisJCQkJCXJldHZhbCA9IEVYVDJfRVRfU0VUX0JNQVBfTk9fSU5EOworCQkJCWdvdG8gZG9uZTsKKwkJCX0KKworCQkJYiA9IGlub2RlX2JtYXAoaW5vZGUsIEVYVDJfSU5EX0JMT0NLKTsKKyAJCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NfYmxvY2soZnMsIGIsIGJsb2NrX2J1ZiwgJmIpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGRvbmU7CisJCQlpbm9kZV9ibWFwKGlub2RlLCBFWFQyX0RJTkRfQkxPQ0spID0gYjsKKwkJCWJsb2Nrc19hbGxvYysrOworCQl9CisJCXJldHZhbCA9IGJsb2NrX2RpbmRfYm1hcChmcywgYm1hcF9mbGFncywgYiwgYmxvY2tfYnVmLAorCQkJCQkgJmJsb2Nrc19hbGxvYywgYmxvY2ssICZibGszMik7CisJCWlmIChyZXR2YWwgPT0gMCkKKwkJCSpwaHlzX2JsayA9IGJsazMyOworCQlnb3RvIGRvbmU7CisJfQorCisJLyogVHJpcGx5IGluZGlyZWN0IGJsb2NrICovCisJYmxvY2sgLT0gYWRkcl9wZXJfYmxvY2sgKiBhZGRyX3Blcl9ibG9jazsKKwliID0gaW5vZGVfYm1hcChpbm9kZSwgRVhUMl9USU5EX0JMT0NLKTsKKwlpZiAoIWIpIHsKKwkJaWYgKCEoYm1hcF9mbGFncyAmIEJNQVBfQUxMT0MpKSB7CisJCQlpZiAoYm1hcF9mbGFncyAmIEJNQVBfU0VUKQorCQkJCXJldHZhbCA9IEVYVDJfRVRfU0VUX0JNQVBfTk9fSU5EOworCQkJZ290byBkb25lOworCQl9CisKKwkJYiA9IGlub2RlX2JtYXAoaW5vZGUsIEVYVDJfRElORF9CTE9DSyk7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY19ibG9jayhmcywgYiwgYmxvY2tfYnVmLCAmYik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJCWlub2RlX2JtYXAoaW5vZGUsIEVYVDJfVElORF9CTE9DSykgPSBiOworCQlibG9ja3NfYWxsb2MrKzsKKwl9CisJcmV0dmFsID0gYmxvY2tfdGluZF9ibWFwKGZzLCBibWFwX2ZsYWdzLCBiLCBibG9ja19idWYsCisJCQkJICZibG9ja3NfYWxsb2MsIGJsb2NrLCAmYmxrMzIpOworCWlmIChyZXR2YWwgPT0gMCkKKwkJKnBoeXNfYmxrID0gYmxrMzI7Citkb25lOgorCWlmICgqcGh5c19ibGsgJiYgcmV0dmFsID09IDAgJiYgKGJtYXBfZmxhZ3MgJiBCTUFQX1pFUk8pKQorCQlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCAqcGh5c19ibGssIDEsIE5VTEwsIE5VTEwpOworCWlmIChidWYpCisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlpZiAoaGFuZGxlKQorCQlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwlpZiAoKHJldHZhbCA9PSAwKSAmJiAoYmxvY2tzX2FsbG9jIHx8IGlub2RlX2RpcnR5KSkgeworCQlleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCBpbm9kZSwgYmxvY2tzX2FsbG9jKTsKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBpbm8sIGlub2RlKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19ibWFwKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkgICAgICBjaGFyICpibG9ja19idWYsIGludCBibWFwX2ZsYWdzLCBibGtfdCBibG9jaywKKwkJICAgICAgYmxrX3QgKnBoeXNfYmxrKQoreworCWVycmNvZGVfdCByZXQ7CisJYmxrNjRfdAlyZXRfYmxrID0gKnBoeXNfYmxrOworCisJcmV0ID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIGlub2RlLCBibG9ja19idWYsIGJtYXBfZmxhZ3MsIGJsb2NrLAorCQkJICAgIDAsICZyZXRfYmxrKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCWlmIChyZXRfYmxrID49ICgobG9uZyBsb25nKSAxIDw8IDMyKSkKKwkJcmV0dXJuIEVPVkVSRkxPVzsKKwkqcGh5c19ibGsgPSByZXRfYmxrOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYm1hcDY0LmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibWFwNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGM3YTNjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYm1hcDY0LmgKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBibWFwNjQuaCAtLS0gNjQtYml0IGJpdG1hcCBzdHJ1Y3R1cmUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKK3N0cnVjdCBleHQyX2JtYXBfc3RhdGlzdGljcyB7CisJaW50CQl0eXBlOworCXN0cnVjdCB0aW1ldmFsCWNyZWF0ZWQ7CisKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUU19PUFMKKwl1bnNpZ25lZCBsb25nCWNvcHlfY291bnQ7CisJdW5zaWduZWQgbG9uZwlyZXNpemVfY291bnQ7CisJdW5zaWduZWQgbG9uZwltYXJrX2NvdW50OworCXVuc2lnbmVkIGxvbmcJdW5tYXJrX2NvdW50OworCXVuc2lnbmVkIGxvbmcJdGVzdF9jb3VudDsKKwl1bnNpZ25lZCBsb25nCW1hcmtfZXh0X2NvdW50OworCXVuc2lnbmVkIGxvbmcJdW5tYXJrX2V4dF9jb3VudDsKKwl1bnNpZ25lZCBsb25nCXRlc3RfZXh0X2NvdW50OworCXVuc2lnbmVkIGxvbmcJc2V0X3JhbmdlX2NvdW50OworCXVuc2lnbmVkIGxvbmcJZ2V0X3JhbmdlX2NvdW50OworCXVuc2lnbmVkIGxvbmcJY2xlYXJfY291bnQ7CisKKwlibGs2NF90CQlsYXN0X21hcmtlZDsKKwlibGs2NF90CQlsYXN0X3Rlc3RlZDsKKwlibGs2NF90CQltYXJrX2JhY2s7CisJYmxrNjRfdAkJdGVzdF9iYWNrOworCisJdW5zaWduZWQgbG9uZwltYXJrX3NlcTsKKwl1bnNpZ25lZCBsb25nCXRlc3Rfc2VxOworI2VuZGlmIC8qIEVOQUJMRV9CTUFQX1NUQVRTX09QUyAqLworfTsKKworCitzdHJ1Y3QgZXh0MmZzX3N0cnVjdF9nZW5lcmljX2JpdG1hcCB7CisJZXJyY29kZV90CQltYWdpYzsKKwlleHQyX2ZpbHN5cyAJCWZzOworCXN0cnVjdCBleHQyX2JpdG1hcF9vcHMJKmJpdG1hcF9vcHM7CisJaW50CQkJZmxhZ3M7CisJX191NjQJCQlzdGFydCwgZW5kOworCV9fdTY0CQkJcmVhbF9lbmQ7CisJaW50CQkJY2x1c3Rlcl9iaXRzOworCWNoYXIJCQkqZGVzY3JpcHRpb247CisJdm9pZAkJCSpwcml2YXRlOworCWVycmNvZGVfdAkJYmFzZV9lcnJvcl9jb2RlOworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTCisJc3RydWN0IGV4dDJfYm1hcF9zdGF0aXN0aWNzCXN0YXRzOworI2VuZGlmCit9OworCisjZGVmaW5lIEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkgXAorCSgoKGJtYXApLT5tYWdpYyA9PSBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQKSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQKSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQKSkKKworI2RlZmluZSBFWFQyRlNfSVNfNjRfQklUTUFQKGJtYXApIFwKKwkoKChibWFwKS0+bWFnaWMgPT0gRVhUMl9FVF9NQUdJQ19HRU5FUklDX0JJVE1BUDY0KSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQNjQpIHx8IFwKKwkgKChibWFwKS0+bWFnaWMgPT0gRVhUMl9FVF9NQUdJQ19JTk9ERV9CSVRNQVA2NCkpCisKK3N0cnVjdCBleHQyX2JpdG1hcF9vcHMgeworCWludAl0eXBlOworCS8qIEdlbmVyaWMgYm1hcCBvcGVyYXRvcnMgKi8KKwllcnJjb2RlX3QgKCpuZXdfYm1hcCkoZXh0Ml9maWxzeXMgZnMsIGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwKTsKKwl2b2lkCSgqZnJlZV9ibWFwKShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKTsKKwllcnJjb2RlX3QgKCpjb3B5X2JtYXApKGV4dDJmc19nZW5lcmljX2JpdG1hcCBzcmMsCisJCQkgICAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCBkZXN0KTsKKwllcnJjb2RlX3QgKCpyZXNpemVfYm1hcCkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCSAgICAgICBfX3U2NCBuZXdfZW5kLAorCQkJICAgICAgIF9fdTY0IG5ld19yZWFsX2VuZCk7CisJLyogYml0IHNldC90ZXN0IG9wZXJhdG9ycyAqLworCWludAkoKm1hcmtfYm1hcCkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKTsKKwlpbnQJKCp1bm1hcmtfYm1hcCkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnKTsKKwlpbnQJKCp0ZXN0X2JtYXApKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsIF9fdTY0IGFyZyk7CisJdm9pZAkoKm1hcmtfYm1hcF9leHRlbnQpKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsIF9fdTY0IGFyZywKKwkJCQkgICAgdW5zaWduZWQgaW50IG51bSk7CisJdm9pZAkoKnVubWFya19ibWFwX2V4dGVudCkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgX191NjQgYXJnLAorCQkJCSAgICAgIHVuc2lnbmVkIGludCBudW0pOworCWludAkoKnRlc3RfY2xlYXJfYm1hcF9leHRlbnQpKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgX191NjQgYXJnLCB1bnNpZ25lZCBpbnQgbnVtKTsKKwllcnJjb2RlX3QgKCpzZXRfYm1hcF9yYW5nZSkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgX191NjQgc3RhcnQsIHNpemVfdCBudW0sIHZvaWQgKmluKTsKKwllcnJjb2RlX3QgKCpnZXRfYm1hcF9yYW5nZSkoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgX191NjQgc3RhcnQsIHNpemVfdCBudW0sIHZvaWQgKm91dCk7CisJdm9pZCAoKmNsZWFyX2JtYXApKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXApOworCXZvaWQgKCpwcmludF9zdGF0cykoZXh0MmZzX2dlbmVyaWNfYml0bWFwKTsKKworCS8qIEZpbmQgdGhlIGZpcnN0IHplcm8gYml0IGJldHdlZW4gc3RhcnQgYW5kIGVuZCwgaW5jbHVzaXZlLgorCSAqIE1heSBiZSBOVUxMLCBpbiB3aGljaCBjYXNlIGEgZ2VuZXJpYyBmdW5jdGlvbiBpcyB1c2VkLiAqLworCWVycmNvZGVfdCAoKmZpbmRfZmlyc3RfemVybykoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkgICAgIF9fdTY0IHN0YXJ0LCBfX3U2NCBlbmQsIF9fdTY0ICpvdXQpOworCS8qIEZpbmQgdGhlIGZpcnN0IHNldCBiaXQgYmV0d2VlbiBzdGFydCBhbmQgZW5kLCBpbmNsdXNpdmUuCisJICogTWF5IGJlIE5VTEwsIGluIHdoaWNoIGNhc2UgYSBnZW5lcmljIGZ1bmN0aW9uIGlzIHVzZWQuICovCisJZXJyY29kZV90ICgqZmluZF9maXJzdF9zZXQpKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJICAgIF9fdTY0IHN0YXJ0LCBfX3U2NCBlbmQsIF9fdTY0ICpvdXQpOworfTsKKworZXh0ZXJuIHN0cnVjdCBleHQyX2JpdG1hcF9vcHMgZXh0MmZzX2Jsa21hcDY0X2JpdGFycmF5OworZXh0ZXJuIHN0cnVjdCBleHQyX2JpdG1hcF9vcHMgZXh0MmZzX2Jsa21hcDY0X3JidHJlZTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Jtb3ZlLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibW92ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZWE0MDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ibW92ZS5jCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogYm1vdmUuYyAtLS0gTW92ZSBibG9ja3MgYXJvdW5kIHRvIG1ha2Ugd2F5IGZvciBhIHBhcnRpY3VsYXIKKyAqIAlmaWxlc3lzdGVtIHN0cnVjdHVyZS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3N0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdCB7CisJZXh0Ml9pbm9fdAkJaW5vOworCXN0cnVjdCBleHQyX2lub2RlICoJaW5vZGU7CisJZXh0MmZzX2Jsb2NrX2JpdG1hcAlyZXNlcnZlOworCWV4dDJmc19ibG9ja19iaXRtYXAJYWxsb2NfbWFwOworCWVycmNvZGVfdAkJZXJyb3I7CisJY2hhcgkJCSpidWY7CisJaW50CQkJYWRkX2RpcjsKKwlpbnQJCQlmbGFnczsKK307CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCAqYmxvY2tfbnIsCisJCQkgZTJfYmxrY250X3QgYmxvY2tjbnQsIGJsazY0X3QgcmVmX2Jsb2NrLAorCQkJIGludCByZWZfb2Zmc2V0LCB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwYjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJcmV0OworCWJsazY0X3QJCWJsb2NrLCBvcmlnOworCisJcGIgPSAoc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICopIHByaXZfZGF0YTsKKwlibG9jayA9IG9yaWcgPSAqYmxvY2tfbnI7CisJcmV0ID0gMDsKKworCS8qCisJICogTGV0J3Mgc2VlIGlmIHRoaXMgaXMgb25lIHdoaWNoIHdlIG5lZWQgdG8gcmVsb2NhdGUKKwkgKi8KKwlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihwYi0+cmVzZXJ2ZSwgYmxvY2spKSB7CisJCWRvIHsKKwkJCWlmICgrK2Jsb2NrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJCQlibG9jayA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCQkJaWYgKGJsb2NrID09IG9yaWcpIHsKKwkJCQlwYi0+ZXJyb3IgPSBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUw7CisJCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQkJfQorCQl9IHdoaWxlIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHBiLT5yZXNlcnZlLCBibG9jaykgfHwKKwkJCSBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHBiLT5hbGxvY19tYXAsIGJsb2NrKSk7CisKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgb3JpZywgMSwgcGItPmJ1Zik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXBiLT5lcnJvciA9IHJldHZhbDsKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgYmxvY2ssIDEsIHBiLT5idWYpOworCQlpZiAocmV0dmFsKSB7CisJCQlwYi0+ZXJyb3IgPSByZXR2YWw7CisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCX0KKwkJKmJsb2NrX25yID0gYmxvY2s7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocGItPmFsbG9jX21hcCwgYmxvY2spOworCQlyZXQgPSBCTE9DS19DSEFOR0VEOworCQlpZiAocGItPmZsYWdzICYgRVhUMl9CTU9WRV9ERUJVRykKKwkJCXByaW50ZigiaW5vPSV1LCBibG9ja2NudD0lbGxkLCAlbGx1LT4lbGx1XG4iLAorCQkJICAgICAgICh1bnNpZ25lZCkgcGItPmlubywgYmxvY2tjbnQsIAorCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIG9yaWcsCisJCQkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmxvY2spOworCX0KKwlpZiAocGItPmFkZF9kaXIpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2FkZF9kaXJfYmxvY2syKGZzLT5kYmxpc3QsIHBiLT5pbm8sCisJCQkJCSAgICAgICBibG9jaywgYmxvY2tjbnQpOworCQlpZiAocmV0dmFsKSB7CisJCQlwYi0+ZXJyb3IgPSByZXR2YWw7CisJCQlyZXQgfD0gQkxPQ0tfQUJPUlQ7CisJCX0KKwl9CisJcmV0dXJuIHJldDsKK30KKworZXJyY29kZV90IGV4dDJmc19tb3ZlX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCByZXNlcnZlLAorCQkJICAgICBleHQyZnNfYmxvY2tfYml0bWFwIGFsbG9jX21hcCwKKwkJCSAgICAgaW50IGZsYWdzKQoreworCWV4dDJfaW5vX3QJaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCWVycmNvZGVfdAlyZXR2YWw7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHBiOworCWV4dDJfaW5vZGVfc2NhbglzY2FuOworCWNoYXIJCSpibG9ja19idWY7CisKKwlyZXR2YWwgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGZzLCAwLCAmc2Nhbik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXBiLnJlc2VydmUgPSByZXNlcnZlOworCXBiLmVycm9yID0gMDsKKwlwYi5hbGxvY19tYXAgPSBhbGxvY19tYXAgPyBhbGxvY19tYXAgOiBmcy0+YmxvY2tfbWFwOworCXBiLmZsYWdzID0gZmxhZ3M7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KDQsIGZzLT5ibG9ja3NpemUsICZibG9ja19idWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJcGIuYnVmID0gYmxvY2tfYnVmICsgZnMtPmJsb2Nrc2l6ZSAqIDM7CisKKwkvKgorCSAqIElmIEdFVF9EQkxJU1QgaXMgc2V0IGluIHRoZSBmbGFncyBmaWVsZCwgdGhlbiB3ZSBzaG91bGQKKwkgKiBnYXRoZXIgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIHdoaWxlIHdlJ3JlIGRvaW5nIHRoZQorCSAqIGJsb2NrIG1vdmUuCisJICovCisJaWYgKGZsYWdzICYgRVhUMl9CTU9WRV9HRVRfREJMSVNUKSB7CisJCWlmIChmcy0+ZGJsaXN0KSB7CisJCQlleHQyZnNfZnJlZV9kYmxpc3QoZnMtPmRibGlzdCk7CisJCQlmcy0+ZGJsaXN0ID0gTlVMTDsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfaW5pdF9kYmxpc3QoZnMsIDApOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGUoc2NhbiwgJmlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJd2hpbGUgKGlubykgeworCQlpZiAoKGlub2RlLmlfbGlua3NfY291bnQgPT0gMCkgfHwKKwkJICAgICFleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsICZpbm9kZSkpCisJCQlnb3RvIG5leHQ7CisKKwkJcGIuaW5vID0gaW5vOworCQlwYi5pbm9kZSA9ICZpbm9kZTsKKworCQlwYi5hZGRfZGlyID0gKExJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSAmJgorCQkJICAgICAgZmxhZ3MgJiBFWFQyX0JNT1ZFX0dFVF9EQkxJU1QpOworCisJCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLCAwLCBibG9ja19idWYsCisJCQkJCSAgICAgICBwcm9jZXNzX2Jsb2NrLCAmcGIpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJaWYgKHBiLmVycm9yKQorCQkJcmV0dXJuIHBiLmVycm9yOworCisJbmV4dDoKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9uZXh0X2lub2RlKHNjYW4sICZpbm8sICZpbm9kZSk7CisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9CQURfQkxPQ0tfSU5fSU5PREVfVEFCTEUpCisJCQlnb3RvIG5leHQ7CisJfQorCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9icmVsLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9icmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZkZGRkNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2JyZWwuaApAQCAtMCwwICsxLDg2IEBACisvKgorICogYnJlbC5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCitzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0ZV9lbnRyeSB7CisJYmxrNjRfdAluZXc7CisJX19zMTYJb2Zmc2V0OworCV9fdTE2CWZsYWdzOworCXVuaW9uIHsKKwkJYmxrNjRfdAkJYmxvY2tfcmVmOworCQlleHQyX2lub190CWlub2RlX3JlZjsKKwl9IG93bmVyOworfTsKKworI2RlZmluZSBSRUxPQ0FURV9UWVBFX1JFRiAgMHgwMDA3CisjZGVmaW5lIFJFTE9DQVRFX0JMT0NLX1JFRiAweDAwMDEKKyNkZWZpbmUgUkVMT0NBVEVfSU5PREVfUkVGIDB4MDAwMgorCit0eXBlZGVmIHN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRpb25fdGFibGUgKmV4dDJfYnJlbDsKKworc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGlvbl90YWJsZSB7CisJX191MzIJbWFnaWM7CisJY2hhcgkqbmFtZTsKKwlibGs2NF90CWN1cnJlbnQ7CisJdm9pZAkqcHJpdl9kYXRhOworCisJLyoKKwkgKiBBZGQgYSBibG9jayByZWxvY2F0aW9uIGVudHJ5LgorCSAqLworCWVycmNvZGVfdCAoKnB1dCkoZXh0Ml9icmVsIGJyZWwsIGJsazY0X3Qgb2xkLAorCQkJICAgICAgc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGVfZW50cnkgKmVudCk7CisKKwkvKgorCSAqIEdldCBhIGJsb2NrIHJlbG9jYXRpb24gZW50cnkuCisJICovCisJZXJyY29kZV90ICgqZ2V0KShleHQyX2JyZWwgYnJlbCwgYmxrNjRfdCBvbGQsCisJCQkgICAgICBzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0ZV9lbnRyeSAqZW50KTsKKworCS8qCisJICogSW5pdGlhbGl6ZSBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIGJsb2NrIHJlbG9jYXRpb24gZW50cmllcy4KKwkgKi8KKwllcnJjb2RlX3QgKCpzdGFydF9pdGVyKShleHQyX2JyZWwgYnJlbCk7CisKKwkvKgorCSAqIFRoZSBpdGVyYXRvciBmdW5jdGlvbiBmb3IgdGhlIGlub2RlIHJlbG9jYXRpb24gZW50cmllcy4KKwkgKiBSZXR1cm5zIGFuIGlub2RlIG51bWJlciBvZiAwIHdoZW4gb3V0IG9mIGVudHJpZXMuCisJICovCisJZXJyY29kZV90ICgqbmV4dCkoZXh0Ml9icmVsIGJyZWwsIGJsazY0X3QgKm9sZCwKKwkJCSAgc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGVfZW50cnkgKmVudCk7CisKKwkvKgorCSAqIE1vdmUgdGhlIGlub2RlIHJlbG9jYXRpb24gdGFibGUgZnJvbSBvbmUgYmxvY2sgbnVtYmVyIHRvCisJICogYW5vdGhlci4KKwkgKi8KKwllcnJjb2RlX3QgKCptb3ZlKShleHQyX2JyZWwgYnJlbCwgYmxrNjRfdCBvbGQsIGJsa190IG5ldyk7CisKKwkvKgorCSAqIFJlbW92ZSBhIGJsb2NrIHJlbG9jYXRpb24gZW50cnkuCisJICovCisJZXJyY29kZV90ICgqZGVsZXRlKShleHQyX2JyZWwgYnJlbCwgYmxrNjRfdCBvbGQpOworCisKKwkvKgorCSAqIEZyZWUgdGhlIGJsb2NrIHJlbG9jYXRpb24gdGFibGUuCisJICovCisJZXJyY29kZV90ICgqZnJlZSkoZXh0Ml9icmVsIGJyZWwpOworfTsKKworZXJyY29kZV90IGV4dDJmc19icmVsX21lbWFycmF5X2NyZWF0ZShjaGFyICpuYW1lLCBibGs2NF90IG1heF9ibG9jaywKKwkJCQkgICAgZXh0Ml9icmVsICpicmVsKTsKKworI2RlZmluZSBleHQyZnNfYnJlbF9wdXQoYnJlbCwgb2xkLCBlbnQpICgoYnJlbCktPnB1dCgoYnJlbCksIG9sZCwgZW50KSkKKyNkZWZpbmUgZXh0MmZzX2JyZWxfZ2V0KGJyZWwsIG9sZCwgZW50KSAoKGJyZWwpLT5nZXQoKGJyZWwpLCBvbGQsIGVudCkpCisjZGVmaW5lIGV4dDJmc19icmVsX3N0YXJ0X2l0ZXIoYnJlbCkgKChicmVsKS0+c3RhcnRfaXRlcigoYnJlbCkpKQorI2RlZmluZSBleHQyZnNfYnJlbF9uZXh0KGJyZWwsIG9sZCwgZW50KSAoKGJyZWwpLT5uZXh0KChicmVsKSwgb2xkLCBlbnQpKQorI2RlZmluZSBleHQyZnNfYnJlbF9tb3ZlKGJyZWwsIG9sZCwgbmV3KSAoKGJyZWwpLT5tb3ZlKChicmVsKSwgb2xkLCBuZXcpKQorI2RlZmluZSBleHQyZnNfYnJlbF9kZWxldGUoYnJlbCwgb2xkKSAoKGJyZWwpLT5kZWxldGUoKGJyZWwpLCBvbGQpKQorI2RlZmluZSBleHQyZnNfYnJlbF9mcmVlKGJyZWwpICgoYnJlbCktPmZyZWUoKGJyZWwpKSkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvYnJlbF9tYS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvYnJlbF9tYS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMmFmYWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9icmVsX21hLmMKQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBicmVsX21hLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiBUT0RPOiByZXdyaXRlIHRvIG5vdCB1c2UgYSBkaXJlY3QgYXJyYXkhISEgIChGb3J0dW5hdGVseSB0aGlzCisgKiBtb2R1bGUgaXNuJ3QgcmVhbGx5IHVzZWQgeWV0LikKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImJyZWwuaCIKKworc3RhdGljIGVycmNvZGVfdCBibWFfcHV0KGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCwKKwkJCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5ICplbnQpOworc3RhdGljIGVycmNvZGVfdCBibWFfZ2V0KGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCwKKwkJCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5ICplbnQpOworc3RhdGljIGVycmNvZGVfdCBibWFfc3RhcnRfaXRlcihleHQyX2JyZWwgYnJlbCk7CitzdGF0aWMgZXJyY29kZV90IGJtYV9uZXh0KGV4dDJfYnJlbCBicmVsLCBibGs2NF90ICpvbGQsCisJCQkgc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGVfZW50cnkgKmVudCk7CitzdGF0aWMgZXJyY29kZV90IGJtYV9tb3ZlKGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCwgYmxrNjRfdCBuZXcpOworc3RhdGljIGVycmNvZGVfdCBibWFfZGVsZXRlKGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCk7CitzdGF0aWMgZXJyY29kZV90IGJtYV9mcmVlKGV4dDJfYnJlbCBicmVsKTsKKworc3RydWN0IGJyZWxfbWEgeworCV9fdTMyIG1hZ2ljOworCWJsazY0X3QgbWF4X2Jsb2NrOworCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5ICplbnRyaWVzOworfTsKKworZXJyY29kZV90IGV4dDJmc19icmVsX21lbWFycmF5X2NyZWF0ZShjaGFyICpuYW1lLCBibGs2NF90IG1heF9ibG9jaywKKwkJCQkgICAgICBleHQyX2JyZWwgKm5ld19icmVsKQoreworCWV4dDJfYnJlbAkJYnJlbCA9IDA7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgYnJlbF9tYSAJKm1hID0gMDsKKwlzaXplX3QJCXNpemU7CisKKwkqbmV3X2JyZWwgPSAwOworCisJLyoKKwkgKiBBbGxvY2F0ZSBtZW1vcnkgc3RydWN0dXJlcworCSAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0aW9uX3RhYmxlKSwKKwkJCQkmYnJlbCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KGJyZWwsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0aW9uX3RhYmxlKSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4obmFtZSkrMSwgJmJyZWwtPm5hbWUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXN0cmNweShicmVsLT5uYW1lLCBuYW1lKTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgYnJlbF9tYSksICZtYSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KG1hLCAwLCBzaXplb2Yoc3RydWN0IGJyZWxfbWEpKTsKKwlicmVsLT5wcml2X2RhdGEgPSBtYTsKKworCXNpemUgPSAoc2l6ZV90KSAoc2l6ZW9mKHN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5KSAqCisJCQkgKG1heF9ibG9jaysxKSk7CisJcmV0dmFsID0gZXh0MmZzX2dldF9hcnJheShtYXhfYmxvY2srMSwKKwkJc2l6ZW9mKHN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5KSwgJm1hLT5lbnRyaWVzKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwltZW1zZXQobWEtPmVudHJpZXMsIDAsIHNpemUpOworCW1hLT5tYXhfYmxvY2sgPSBtYXhfYmxvY2s7CisKKwkvKgorCSAqIEZpbGwgaW4gdGhlIGJyZWwgZGF0YSBzdHJ1Y3R1cmUKKwkgKi8KKwlicmVsLT5wdXQgPSBibWFfcHV0OworCWJyZWwtPmdldCA9IGJtYV9nZXQ7CisJYnJlbC0+c3RhcnRfaXRlciA9IGJtYV9zdGFydF9pdGVyOworCWJyZWwtPm5leHQgPSBibWFfbmV4dDsKKwlicmVsLT5tb3ZlID0gYm1hX21vdmU7CisJYnJlbC0+ZGVsZXRlID0gYm1hX2RlbGV0ZTsKKwlicmVsLT5mcmVlID0gYm1hX2ZyZWU7CisKKwkqbmV3X2JyZWwgPSBicmVsOworCXJldHVybiAwOworCitlcnJvdXQ6CisJYm1hX2ZyZWUoYnJlbCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCBibWFfcHV0KGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCwKKwkJCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5ICplbnQpCit7CisJc3RydWN0IGJyZWxfbWEgCSptYTsKKworCW1hID0gYnJlbC0+cHJpdl9kYXRhOworCWlmIChvbGQgPiBtYS0+bWF4X2Jsb2NrKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCW1hLT5lbnRyaWVzWyh1bnNpZ25lZClvbGRdID0gKmVudDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBibWFfZ2V0KGV4dDJfYnJlbCBicmVsLCBibGs2NF90IG9sZCwKKwkJCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5ICplbnQpCit7CisJc3RydWN0IGJyZWxfbWEgCSptYTsKKworCW1hID0gYnJlbC0+cHJpdl9kYXRhOworCWlmIChvbGQgPiBtYS0+bWF4X2Jsb2NrKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCWlmIChtYS0+ZW50cmllc1sodW5zaWduZWQpb2xkXS5uZXcgPT0gMCkKKwkJcmV0dXJuIEVOT0VOVDsKKwkqZW50ID0gbWEtPmVudHJpZXNbb2xkXTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBibWFfc3RhcnRfaXRlcihleHQyX2JyZWwgYnJlbCkKK3sKKwlicmVsLT5jdXJyZW50ID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBibWFfbmV4dChleHQyX2JyZWwgYnJlbCwgYmxrNjRfdCAqb2xkLAorCQkJICBzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0ZV9lbnRyeSAqZW50KQoreworCXN0cnVjdCBicmVsX21hIAkqbWE7CisKKwltYSA9IGJyZWwtPnByaXZfZGF0YTsKKwl3aGlsZSAoKyticmVsLT5jdXJyZW50IDwgbWEtPm1heF9ibG9jaykgeworCQlpZiAobWEtPmVudHJpZXNbKHVuc2lnbmVkKWJyZWwtPmN1cnJlbnRdLm5ldyA9PSAwKQorCQkJY29udGludWU7CisJCSpvbGQgPSBicmVsLT5jdXJyZW50OworCQkqZW50ID0gbWEtPmVudHJpZXNbKHVuc2lnbmVkKWJyZWwtPmN1cnJlbnRdOworCQlyZXR1cm4gMDsKKwl9CisJKm9sZCA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgYm1hX21vdmUoZXh0Ml9icmVsIGJyZWwsIGJsazY0X3Qgb2xkLCBibGs2NF90IG5ldykKK3sKKwlzdHJ1Y3QgYnJlbF9tYSAJKm1hOworCisJbWEgPSBicmVsLT5wcml2X2RhdGE7CisJaWYgKChvbGQgPiBtYS0+bWF4X2Jsb2NrKSB8fCAobmV3ID4gbWEtPm1heF9ibG9jaykpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJaWYgKG1hLT5lbnRyaWVzWyh1bnNpZ25lZClvbGRdLm5ldyA9PSAwKQorCQlyZXR1cm4gRU5PRU5UOworCW1hLT5lbnRyaWVzWyh1bnNpZ25lZCluZXddID0gbWEtPmVudHJpZXNbb2xkXTsKKwltYS0+ZW50cmllc1sodW5zaWduZWQpb2xkXS5uZXcgPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGJtYV9kZWxldGUoZXh0Ml9icmVsIGJyZWwsIGJsazY0X3Qgb2xkKQoreworCXN0cnVjdCBicmVsX21hIAkqbWE7CisKKwltYSA9IGJyZWwtPnByaXZfZGF0YTsKKwlpZiAob2xkID4gbWEtPm1heF9ibG9jaykKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwlpZiAobWEtPmVudHJpZXNbKHVuc2lnbmVkKW9sZF0ubmV3ID09IDApCisJCXJldHVybiBFTk9FTlQ7CisJbWEtPmVudHJpZXNbKHVuc2lnbmVkKW9sZF0ubmV3ID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBibWFfZnJlZShleHQyX2JyZWwgYnJlbCkKK3sKKwlzdHJ1Y3QgYnJlbF9tYSAJKm1hOworCisJaWYgKCFicmVsKQorCQlyZXR1cm4gMDsKKworCW1hID0gYnJlbC0+cHJpdl9kYXRhOworCisJaWYgKG1hKSB7CisJCWlmIChtYS0+ZW50cmllcykKKwkJCWV4dDJmc19mcmVlX21lbSgmbWEtPmVudHJpZXMpOworCQlleHQyZnNfZnJlZV9tZW0oJm1hKTsKKwl9CisJaWYgKGJyZWwtPm5hbWUpCisJCWV4dDJmc19mcmVlX21lbSgmYnJlbC0+bmFtZSk7CisJZXh0MmZzX2ZyZWVfbWVtKCZicmVsKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NoZWNrX2Rlc2MuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NoZWNrX2Rlc2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTNmYTk0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvY2hlY2tfZGVzYy5jCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogY2hlY2tfZGVzYy5jIC0tLSBDaGVjayB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgb2YgYW4gZXh0MiBmaWxlc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKy8qCisgKiBUaGlzIHJvdXRpbmUgc2FuaXR5IGNoZWNrcyB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMKKyAqLworZXJyY29kZV90IGV4dDJmc19jaGVja19kZXNjKGV4dDJfZmlsc3lzIGZzKQoreworCWV4dDJmc19ibG9ja19iaXRtYXAgYm1hcDsKKwllcnJjb2RlX3QgcmV0dmFsOworCWRncnBfdCBpOworCWJsazY0X3QgZmlyc3RfYmxvY2sgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlibGs2NF90IGxhc3RfYmxvY2sgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciktMTsKKwlibGs2NF90IGJsaywgYjsKKwl1bnNpZ25lZCBpbnQgajsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlpZiAoRVhUMl9ERVNDX1NJWkUoZnMtPnN1cGVyKSAmIChFWFQyX0RFU0NfU0laRShmcy0+c3VwZXIpIC0gMSkpCisJCXJldHVybiBFWFQyX0VUX0JBRF9ERVNDX1NJWkU7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfc3ViY2x1c3Rlcl9iaXRtYXAoZnMsICJjaGVja19kZXNjIG1hcCIsICZibWFwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspCisJCWV4dDJmc19yZXNlcnZlX3N1cGVyX2FuZF9iZ2QoZnMsIGksIGJtYXApOworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpKSB7CisJCQlmaXJzdF9ibG9jayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGkpOworCQkJbGFzdF9ibG9jayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgaSk7CisJCX0KKworCQkvKgorCQkgKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgaXMgc2FuZQorCQkgKi8KKwkJYmxrID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpOworCQlpZiAoYmxrIDwgZmlyc3RfYmxvY2sgfHwgYmxrID4gbGFzdF9ibG9jayB8fAorCQkgICAgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihibWFwLCBibGspKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0dERVNDX0JBRF9CTE9DS19NQVA7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIGJsayk7CisKKwkJLyoKKwkJICogQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwIGlzIHNhbmUKKwkJICovCisJCWJsayA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKTsKKwkJaWYgKGJsayA8IGZpcnN0X2Jsb2NrIHx8IGJsayA+IGxhc3RfYmxvY2sgfHwKKwkJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoYm1hcCwgYmxrKSkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9HREVTQ19CQURfSU5PREVfTUFQOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihibWFwLCBibGspOworCisJCS8qCisJCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgaW5vZGUgdGFibGUgZm9yIGdyb3VwIGlzIHNhbmUKKwkJICovCisJCWJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQlpZiAoYmxrIDwgZmlyc3RfYmxvY2sgfHwKKwkJICAgICgoYmxrICsgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgLSAxKSA+IGxhc3RfYmxvY2spKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0dERVNDX0JBRF9JTk9ERV9UQUJMRTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWZvciAoaiA9IDAsIGIgPSBibGs7IGogPCBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwkJICAgICBqKyssIGIrKykgeworCQkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoYm1hcCwgYikpIHsKKwkJCQlyZXR2YWwgPSBFWFQyX0VUX0dERVNDX0JBRF9JTk9ERV9UQUJMRTsKKwkJCQlnb3RvIGVycm91dDsKKwkJCX0KKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgYik7CisJCX0KKwl9CitlcnJvdXQ6CisJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGJtYXApOworCXJldHVybiByZXR2YWw7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jbG9zZWZzLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jbG9zZWZzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5ZmEwOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Nsb3NlZnMuYwpAQCAtMCwwICsxLDUwOCBAQAorLyoKKyAqIGNsb3NlZnMuYyAtLS0gY2xvc2UgYW4gZXh0MiBmaWxlc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorCitzdGF0aWMgaW50IHRlc3Rfcm9vdCh1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIpCit7CisJd2hpbGUgKDEpIHsKKwkJaWYgKGEgPCBiKQorCQkJcmV0dXJuIDA7CisJCWlmIChhID09IGIpCisJCQlyZXR1cm4gMTsKKwkJaWYgKGEgJSBiKQorCQkJcmV0dXJuIDA7CisJCWEgPSBhIC8gYjsKKwl9Cit9CisKK2ludCBleHQyZnNfYmdfaGFzX3N1cGVyKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJaWYgKGdyb3VwID09IDApCisJCXJldHVybiAxOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfc3BhcnNlX3N1cGVyMihmcy0+c3VwZXIpKSB7CisJCWlmIChncm91cCA9PSBmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSB8fAorCQkgICAgZ3JvdXAgPT0gZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0pCisJCQlyZXR1cm4gMTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICgoZ3JvdXAgPD0gMSkgfHwgIWV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDE7CisJaWYgKCEoZ3JvdXAgJiAxKSkKKwkJcmV0dXJuIDA7CisJaWYgKHRlc3Rfcm9vdChncm91cCwgMykgfHwgKHRlc3Rfcm9vdChncm91cCwgNSkpIHx8CisJICAgIHRlc3Rfcm9vdChncm91cCwgNykpCisJCXJldHVybiAxOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MyKCkKKyAqIEBmczoJCQlleHQyIGZzIHBvaW50ZXIKKyAqIEBncm91cAkJZ2l2ZW4gYmxvY2sgZ3JvdXAKKyAqIEByZXRfc3VwZXJfYmxrOglpZiAhTlVMTCwgcmV0dXJucyBzdXBlciBibG9jayBsb2NhdGlvbgorICogQHJldF9vbGRfZGVzY19ibGs6CWlmICFOVUxMLCByZXR1cm5zIGxvY2F0aW9uIG9mIHRoZSBvbGQgYmxvY2sKKyAqCQkJZ3JvdXAgZGVzY3JpcHRvcgorICogQHJldF9uZXdfZGVzY19ibGs6CWlmICFOVUxMLCByZXR1cm5zIGxvY2F0aW9uIG9mIG1ldGFfYmcgYmxvY2sKKyAqCQkJZ3JvdXAgZGVzY3JpcHRvcgorICogQHJldF91c2VkX2Jsa3M6CWlmICFOVUxMLCByZXR1cm5zIG51bWJlciBvZiBibG9ja3MgdXNlZCBieQorICoJCQlzdXBlciBibG9jayBhbmQgZ3JvdXBfZGVzY3JpcHRvcnMuCisgKgorICogUmV0dXJucyBlcnJjb2RlX3Qgb2YgMAorICovCitlcnJjb2RlX3QgZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgZGdycF90IGdyb3VwLAorCQkJCQkgICBibGs2NF90ICpyZXRfc3VwZXJfYmxrLAorCQkJCQkgICBibGs2NF90ICpyZXRfb2xkX2Rlc2NfYmxrLAorCQkJCQkgICBibGs2NF90ICpyZXRfbmV3X2Rlc2NfYmxrLAorCQkJCQkgICBibGtfdCAqcmV0X3VzZWRfYmxrcykKK3sKKwlibGs2NF90CWdyb3VwX2Jsb2NrLCBzdXBlcl9ibGsgPSAwLCBvbGRfZGVzY19ibGsgPSAwLCBuZXdfZGVzY19ibGsgPSAwOworCXVuc2lnbmVkIGludCBtZXRhX2JnLCBtZXRhX2JnX3NpemU7CisJYmxrX3QJbnVtYmxvY2tzID0gMDsKKwlibGs2NF90IG9sZF9kZXNjX2Jsb2NrczsKKwlpbnQJaGFzX3N1cGVyOworCisJZ3JvdXBfYmxvY2sgPSBleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGZzLCBncm91cCk7CisJaWYgKGdyb3VwX2Jsb2NrID09IDAgJiYgZnMtPmJsb2Nrc2l6ZSA9PSAxMDI0KQorCQlncm91cF9ibG9jayA9IDE7IC8qIERlYWwgd2l0aCAxMDI0IGJsb2Nrc2l6ZSAmJiBiaWdhbGxvYyAqLworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikpCisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCWVsc2UKKwkJb2xkX2Rlc2NfYmxvY2tzID0KKwkJCWZzLT5kZXNjX2Jsb2NrcyArIGZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJaGFzX3N1cGVyID0gZXh0MmZzX2JnX2hhc19zdXBlcihmcywgZ3JvdXApOworCisJaWYgKGhhc19zdXBlcikgeworCQlzdXBlcl9ibGsgPSBncm91cF9ibG9jazsKKwkJbnVtYmxvY2tzKys7CisJfQorCW1ldGFfYmdfc2l6ZSA9IEVYVDJfREVTQ19QRVJfQkxPQ0soZnMtPnN1cGVyKTsKKwltZXRhX2JnID0gZ3JvdXAgLyBtZXRhX2JnX3NpemU7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikgfHwKKwkgICAgKG1ldGFfYmcgPCBmcy0+c3VwZXItPnNfZmlyc3RfbWV0YV9iZykpIHsKKwkJaWYgKGhhc19zdXBlcikgeworCQkJb2xkX2Rlc2NfYmxrID0gZ3JvdXBfYmxvY2sgKyAxOworCQkJbnVtYmxvY2tzICs9IG9sZF9kZXNjX2Jsb2NrczsKKwkJfQorCX0gZWxzZSB7CisJCWlmICgoKGdyb3VwICUgbWV0YV9iZ19zaXplKSA9PSAwKSB8fAorCQkgICAgKChncm91cCAlIG1ldGFfYmdfc2l6ZSkgPT0gMSkgfHwKKwkJICAgICgoZ3JvdXAgJSBtZXRhX2JnX3NpemUpID09IChtZXRhX2JnX3NpemUtMSkpKSB7CisJCQlpZiAoaGFzX3N1cGVyKQorCQkJCWhhc19zdXBlciA9IDE7CisJCQluZXdfZGVzY19ibGsgPSBncm91cF9ibG9jayArIGhhc19zdXBlcjsKKwkJCW51bWJsb2NrcysrOworCQl9CisJfQorCisJaWYgKHJldF9zdXBlcl9ibGspCisJCSpyZXRfc3VwZXJfYmxrID0gc3VwZXJfYmxrOworCWlmIChyZXRfb2xkX2Rlc2NfYmxrKQorCQkqcmV0X29sZF9kZXNjX2JsayA9IG9sZF9kZXNjX2JsazsKKwlpZiAocmV0X25ld19kZXNjX2JsaykKKwkJKnJldF9uZXdfZGVzY19ibGsgPSBuZXdfZGVzY19ibGs7CisJaWYgKHJldF91c2VkX2Jsa3MpCisJCSpyZXRfdXNlZF9ibGtzID0gbnVtYmxvY2tzOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdXBlcmJsb2NrLCBibG9jayBncm91cAorICogZGVzY3JpcHRvcnMgZm9yIGEgZ2l2ZW4gYmxvY2sgZ3JvdXAuICBJdCBjdXJyZW50bHkgcmV0dXJucyB0aGUKKyAqIG51bWJlciBvZiBmcmVlIGJsb2NrcyBhc3N1bWluZyB0aGF0IGlub2RlIHRhYmxlIGFuZCBhbGxvY2F0aW9uCisgKiBiaXRtYXBzIHdpbGwgYmUgaW4gdGhlIGdyb3VwLiAgVGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIGNhc2UKKyAqIHdoZW4gdGhlIGZsZXhfYmcgZmVhdHVyZSBpcyBlbmFibGVkLCBzbyBjYWxsZXJzIHNob3VsZCB0YWtlIGNhcmUhCisgKiBJdCB3YXMgb25seSByZWFsbHkgaW50ZW5kZWQgZm9yIHVzZSBieSBta2UyZnMsIGFuZCBldmVuIHRoZXJlIGl0J3MKKyAqIG5vdCB0aGF0IHVzZWZ1bC4KKyAqCisgKiBUaGUgZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMigpIGZ1bmN0aW9uIGlzIDY0LWJpdCBibG9jayBudW1iZXIKKyAqIGNhcGFibGUgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBibG9ja3MgdXNlZCBieSBzdXBlciBibG9jayBhbmQKKyAqIGdyb3VwIGRlc2NyaXB0b3JzLgorICovCitpbnQgZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICBkZ3JwX3QgZ3JvdXAsCisJCQkgICAgIGJsa190ICpyZXRfc3VwZXJfYmxrLAorCQkJICAgICBibGtfdCAqcmV0X29sZF9kZXNjX2JsaywKKwkJCSAgICAgYmxrX3QgKnJldF9uZXdfZGVzY19ibGssCisJCQkgICAgIGludCAqcmV0X21ldGFfYmcpCit7CisJYmxrNjRfdCByZXRfc3VwZXJfYmxrMjsKKwlibGs2NF90IHJldF9vbGRfZGVzY19ibGsyOworCWJsazY0X3QgcmV0X25ld19kZXNjX2JsazI7CisJYmxrX3QgcmV0X3VzZWRfYmxrczsKKwlibGtfdCBudW1ibG9ja3M7CisJdW5zaWduZWQgaW50IG1ldGFfYmdfc2l6ZTsKKworCWV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzIoZnMsIGdyb3VwLCAmcmV0X3N1cGVyX2JsazIsCisJCQkJCSZyZXRfb2xkX2Rlc2NfYmxrMiwKKwkJCQkJJnJldF9uZXdfZGVzY19ibGsyLAorCQkJCQkmcmV0X3VzZWRfYmxrcyk7CisKKwludW1ibG9ja3MgPSBleHQyZnNfZ3JvdXBfYmxvY2tzX2NvdW50KGZzLCBncm91cCk7CisKKwlpZiAocmV0X3N1cGVyX2JsaykKKwkJKnJldF9zdXBlcl9ibGsgPSAoYmxrX3QpcmV0X3N1cGVyX2JsazI7CisJaWYgKHJldF9vbGRfZGVzY19ibGspCisJCSpyZXRfb2xkX2Rlc2NfYmxrID0gKGJsa190KXJldF9vbGRfZGVzY19ibGsyOworCWlmIChyZXRfbmV3X2Rlc2NfYmxrKQorCQkqcmV0X25ld19kZXNjX2JsayA9IChibGtfdClyZXRfbmV3X2Rlc2NfYmxrMjsKKwlpZiAocmV0X21ldGFfYmcpIHsKKwkJbWV0YV9iZ19zaXplID0gRVhUMl9ERVNDX1BFUl9CTE9DSyhmcy0+c3VwZXIpOworCQkqcmV0X21ldGFfYmcgPSBncm91cCAvIG1ldGFfYmdfc2l6ZTsKKwl9CisKKwludW1ibG9ja3MgLT0gMiArIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICsgcmV0X3VzZWRfYmxrczsKKworCXJldHVybiBudW1ibG9ja3M7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZvcmNlcyBvdXQgdGhlIHByaW1hcnkgc3VwZXJibG9jay4gIFdlIG5lZWQgdG8gb25seQorICogd3JpdGUgb3V0IHRob3NlIGZpZWxkcyB3aGljaCB3ZSBoYXZlIGNoYW5nZWQsIHNpbmNlIGlmIHRoZQorICogZmlsZXN5c3RlbSBpcyBtb3VudGVkLCBpdCBtYXkgaGF2ZSBjaGFuZ2VkIHNvbWUgb2YgdGhlIG90aGVyCisgKiBmaWVsZHMuCisgKgorICogSXQgdGFrZXMgYXMgaW5wdXQgYSBzdXBlcmJsb2NrIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gYnl0ZSBzd2FwcGVkCisgKiAoaWYgbmVjZXNzYXJ5KS4KKyAqCisgKi8KK3N0YXRpYyBlcnJjb2RlX3Qgd3JpdGVfcHJpbWFyeV9zdXBlcmJsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlcikKK3sKKwlfX3UxNgkJKm9sZF9zdXBlciwgKm5ld19zdXBlcjsKKwlpbnQJCWNoZWNrX2lkeCwgd3JpdGVfaWR4LCBzaXplOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAoIWZzLT5pby0+bWFuYWdlci0+d3JpdGVfYnl0ZSB8fCAhZnMtPm9yaWdfc3VwZXIpIHsKKwlmYWxsYmFjazoKKwkJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIFNVUEVSQkxPQ0tfT0ZGU0VUKTsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIDEsIC1TVVBFUkJMT0NLX1NJWkUsCisJCQkJCSAgICAgIHN1cGVyKTsKKwkJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIGZzLT5ibG9ja3NpemUpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCW9sZF9zdXBlciA9IChfX3UxNiAqKSBmcy0+b3JpZ19zdXBlcjsKKwluZXdfc3VwZXIgPSAoX191MTYgKikgc3VwZXI7CisKKwlmb3IgKGNoZWNrX2lkeCA9IDA7IGNoZWNrX2lkeCA8IFNVUEVSQkxPQ0tfU0laRS8yOyBjaGVja19pZHgrKykgeworCQlpZiAob2xkX3N1cGVyW2NoZWNrX2lkeF0gPT0gbmV3X3N1cGVyW2NoZWNrX2lkeF0pCisJCQljb250aW51ZTsKKwkJd3JpdGVfaWR4ID0gY2hlY2tfaWR4OworCQlmb3IgKGNoZWNrX2lkeCsrOyBjaGVja19pZHggPCBTVVBFUkJMT0NLX1NJWkUvMjsgY2hlY2tfaWR4KyspCisJCQlpZiAob2xkX3N1cGVyW2NoZWNrX2lkeF0gPT0gbmV3X3N1cGVyW2NoZWNrX2lkeF0pCisJCQkJYnJlYWs7CisJCXNpemUgPSAyICogKGNoZWNrX2lkeCAtIHdyaXRlX2lkeCk7CisjaWYgMAorCQlwcmludGYoIldyaXRpbmcgJWQgYnl0ZXMgc3RhcnRpbmcgYXQgJWRcbiIsCisJCSAgICAgICBzaXplLCB3cml0ZV9pZHgqMik7CisjZW5kaWYKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ieXRlKGZzLT5pbywKKwkJCSAgICAgICBTVVBFUkJMT0NLX09GRlNFVCArICgyICogd3JpdGVfaWR4KSwgc2l6ZSwKKwkJCQkJICAgICAgIG5ld19zdXBlciArIHdyaXRlX2lkeCk7CisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9VTklNUExFTUVOVEVEKQorCQkJZ290byBmYWxsYmFjazsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCW1lbWNweShmcy0+b3JpZ19zdXBlciwgc3VwZXIsIFNVUEVSQkxPQ0tfU0laRSk7CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAqIFVwZGF0ZXMgdGhlIHJldmlzaW9uIHRvIEVYVDJfRFlOQU1JQ19SRVYKKyAqLwordm9pZCBleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2KGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGZzLT5zdXBlcjsKKworCWlmIChzYi0+c19yZXZfbGV2ZWwgPiBFWFQyX0dPT0RfT0xEX1JFVikKKwkJcmV0dXJuOworCisJc2ItPnNfcmV2X2xldmVsID0gRVhUMl9EWU5BTUlDX1JFVjsKKwlzYi0+c19maXJzdF9pbm8gPSBFWFQyX0dPT0RfT0xEX0ZJUlNUX0lOTzsKKwlzYi0+c19pbm9kZV9zaXplID0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFOworCS8qIHNfdXVpZCBpcyBoYW5kbGVkIGJ5IGUyZnNjayBhbHJlYWR5ICovCisJLyogb3RoZXIgZmllbGRzIHNob3VsZCBiZSBsZWZ0IGFsb25lICovCit9CisKK3N0YXRpYyBlcnJjb2RlX3Qgd3JpdGVfYmFja3VwX3N1cGVyKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJICAgIGJsazY0X3QgZ3JvdXBfYmxvY2ssCisJCQkJICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlcl9zaGFkb3cpCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlkZ3JwX3QJc2dycCA9IGdyb3VwOworCisJaWYgKHNncnAgPiAoKDEgPDwgMTYpIC0gMSkpCisJCXNncnAgPSAoMSA8PCAxNikgLSAxOworCisJc3VwZXJfc2hhZG93LT5zX2Jsb2NrX2dyb3VwX25yID0gc2dycDsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlleHQyZnNfc3dhcF9zdXBlcihzdXBlcl9zaGFkb3cpOworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV9zZXQoZnMsIHN1cGVyX3NoYWRvdyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHVybiBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgZ3JvdXBfYmxvY2ssIC1TVVBFUkJMT0NLX1NJWkUsCisJCQkJICAgIHN1cGVyX3NoYWRvdyk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZmx1c2goZXh0Ml9maWxzeXMgZnMpCit7CisJcmV0dXJuIGV4dDJmc19mbHVzaDIoZnMsIDApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2ZsdXNoMihleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzKQoreworCWRncnBfdAkJaTsKKwllcnJjb2RlX3QJcmV0dmFsOworCXVuc2lnbmVkIGxvbmcJZnNfc3RhdGU7CisJX191MzIJCWZlYXR1cmVfaW5jb21wYXQ7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyX3NoYWRvdyA9IDA7CisJc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyAqZ3JvdXBfc2hhZG93ID0gMDsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpnZHA7CisJZGdycF90CQlqOworI2VuZGlmCisJY2hhcgkqZ3JvdXBfcHRyOworCWJsazY0X3QJb2xkX2Rlc2NfYmxvY2tzOworCXN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgcHJvZ3Jlc3M7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJZnNfc3RhdGUgPSBmcy0+c3VwZXItPnNfc3RhdGU7CisJZmVhdHVyZV9pbmNvbXBhdCA9IGZzLT5zdXBlci0+c19mZWF0dXJlX2luY29tcGF0OworCisJZnMtPnN1cGVyLT5zX3d0aW1lID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKE5VTEwpOworCWZzLT5zdXBlci0+c19ibG9ja19ncm91cF9uciA9IDA7CisKKwkvKgorCSAqIElmIHRoZSB3cml0ZV9iaXRtYXBzKCkgZnVuY3Rpb24gaXMgcHJlc2VudCwgY2FsbCBpdCB0bworCSAqIGZsdXNoIHRoZSBiaXRtYXBzLiAgVGhpcyBpcyBkb25lIHRoaXMgd2F5IHNvIHRoYXQgYSBzaW1wbGUKKwkgKiBwcm9ncmFtIHRoYXQgZG9lc24ndCBtZXNzIHdpdGggdGhlIGJpdG1hcHMgZG9lc24ndCBuZWVkIHRvCisJICogZHJhZyBpbiB0aGUgYml0bWFwcy5jIGNvZGUuCisJICoKKwkgKiBCaXRtYXAgY2hlY2tzdW1zIGxpdmUgaW4gdGhlIGdyb3VwIGRlc2NyaXB0b3IsIHNvIHRoZQorCSAqIGJpdG1hcHMgbmVlZCB0byBiZSB3cml0dGVuIGJlZm9yZSB0aGUgZGVzY3JpcHRvcnMuCisJICovCisJaWYgKGZzLT53cml0ZV9iaXRtYXBzKSB7CisJCXJldHZhbCA9IGZzLT53cml0ZV9iaXRtYXBzKGZzKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKworCS8qIFByZXBhcmUgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGZvciB3cml0aW5nICovCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJcmV0dmFsID0gRVhUMl9FVF9OT19NRU1PUlk7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oU1VQRVJCTE9DS19TSVpFLCAmc3VwZXJfc2hhZG93KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGZzLT5kZXNjX2Jsb2NrcywgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkgICZncm91cF9zaGFkb3cpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbWNweShzdXBlcl9zaGFkb3csIGZzLT5zdXBlciwgc2l6ZW9mKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrKSk7CisJbWVtY3B5KGdyb3VwX3NoYWRvdywgZnMtPmdyb3VwX2Rlc2MsIChzaXplX3QpIGZzLT5ibG9ja3NpemUgKgorCSAgICAgICBmcy0+ZGVzY19ibG9ja3MpOworCisJLyogc3dhcCB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgKi8KKwlmb3IgKGogPSAwOyBqIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGorKykgeworCQlnZHAgPSBleHQyZnNfZ3JvdXBfZGVzYyhmcywgZ3JvdXBfc2hhZG93LCBqKTsKKwkJZXh0MmZzX3N3YXBfZ3JvdXBfZGVzYzIoZnMsIGdkcCk7CisJfQorI2Vsc2UKKwlzdXBlcl9zaGFkb3cgPSBmcy0+c3VwZXI7CisJZ3JvdXBfc2hhZG93ID0gZXh0MmZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCAwKTsKKyNlbmRpZgorCisJLyoKKwkgKiBTZXQgdGhlIHN0YXRlIG9mIHRoZSBGUyB0byBiZSBub24tdmFsaWQuICAoVGhlIHN0YXRlIGhhcworCSAqIGFscmVhZHkgYmVlbiBiYWNrZWQgdXAgZWFybGllciwgYW5kIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIKKwkgKiB3ZSB3cml0ZSBvdXQgdGhlIGJhY2t1cCBzdXBlcmJsb2Nrcy4pCisJICovCisJZnMtPnN1cGVyLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoZnMtPnN1cGVyKTsKKworCS8qCisJICogSWYgdGhpcyBpcyBhbiBleHRlcm5hbCBqb3VybmFsIGRldmljZSwgZG9uJ3Qgd3JpdGUgb3V0IHRoZQorCSAqIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG9yIGFueSBvZiB0aGUgYmFja3VwIHN1cGVyYmxvY2tzCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2Rldihmcy0+c3VwZXIpKQorCQlnb3RvIHdyaXRlX3ByaW1hcnlfc3VwZXJibG9ja19vbmx5OworCisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIG1hc3RlciBncm91cCBkZXNjcmlwdG9ycywgYW5kIHRoZSBiYWNrdXAKKwkgKiBzdXBlcmJsb2NrcyBhbmQgZ3JvdXAgZGVzY3JpcHRvcnMuCisJICovCisJZ3JvdXBfcHRyID0gKGNoYXIgKikgZ3JvdXBfc2hhZG93OworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhmcy0+c3VwZXIpKSB7CisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCQlpZiAob2xkX2Rlc2NfYmxvY2tzID4gZnMtPmRlc2NfYmxvY2tzKQorCQkJb2xkX2Rlc2NfYmxvY2tzID0gZnMtPmRlc2NfYmxvY2tzOworCX0gZWxzZQorCQlvbGRfZGVzY19ibG9ja3MgPSBmcy0+ZGVzY19ibG9ja3M7CisKKwlpZiAoZnMtPnByb2dyZXNzX29wcyAmJiBmcy0+cHJvZ3Jlc3Nfb3BzLT5pbml0KQorCQkoZnMtPnByb2dyZXNzX29wcy0+aW5pdCkoZnMsICZwcm9ncmVzcywgTlVMTCwKKwkJCQkJIGZzLT5ncm91cF9kZXNjX2NvdW50KTsKKworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJYmxrNjRfdAlzdXBlcl9ibGssIG9sZF9kZXNjX2JsaywgbmV3X2Rlc2NfYmxrOworCisJCWlmIChmcy0+cHJvZ3Jlc3Nfb3BzICYmIGZzLT5wcm9ncmVzc19vcHMtPnVwZGF0ZSkKKwkJCShmcy0+cHJvZ3Jlc3Nfb3BzLT51cGRhdGUpKGZzLCAmcHJvZ3Jlc3MsIGkpOworCQlleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MyKGZzLCBpLCAmc3VwZXJfYmxrLCAmb2xkX2Rlc2NfYmxrLAorCQkJCQkgJm5ld19kZXNjX2JsaywgMCk7CisKKwkJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZKSAmJmkgJiYgc3VwZXJfYmxrKSB7CisJCQlyZXR2YWwgPSB3cml0ZV9iYWNrdXBfc3VwZXIoZnMsIGksIHN1cGVyX2JsaywKKwkJCQkJCSAgICBzdXBlcl9zaGFkb3cpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJfQorCQlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1NVUEVSX09OTFkpCisJCQljb250aW51ZTsKKwkJaWYgKChvbGRfZGVzY19ibGspICYmCisJCSAgICAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFkpIHx8IChpID09IDApKSkgeworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sCisJCQkgICAgICBvbGRfZGVzY19ibGssIG9sZF9kZXNjX2Jsb2NrcywgZ3JvdXBfcHRyKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJaWYgKG5ld19kZXNjX2JsaykgeworCQkJaW50IG1ldGFfYmcgPSBpIC8gRVhUMl9ERVNDX1BFUl9CTE9DSyhmcy0+c3VwZXIpOworCisJCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgbmV3X2Rlc2NfYmxrLAorCQkJCTEsIGdyb3VwX3B0ciArIChtZXRhX2JnKmZzLT5ibG9ja3NpemUpKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKwl9CisKKwlpZiAoZnMtPnByb2dyZXNzX29wcyAmJiBmcy0+cHJvZ3Jlc3Nfb3BzLT5jbG9zZSkKKwkJKGZzLT5wcm9ncmVzc19vcHMtPmNsb3NlKShmcywgJnByb2dyZXNzLCBOVUxMKTsKKword3JpdGVfcHJpbWFyeV9zdXBlcmJsb2NrX29ubHk6CisJLyoKKwkgKiBXcml0ZSBvdXQgbWFzdGVyIHN1cGVyYmxvY2suICBUaGlzIGhhcyB0byBiZSBkb25lCisJICogc2VwYXJhdGVseSwgc2luY2UgaXQgaXMgbG9jYXRlZCBhdCBhIGZpeGVkIGxvY2F0aW9uCisJICogKFNVUEVSQkxPQ0tfT0ZGU0VUKS4gIFdlIGZsdXNoIGFsbCBvdGhlciBwZW5kaW5nIGNoYW5nZXMKKwkgKiBvdXQgdG8gZGlzayBmaXJzdCwganVzdCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9uIHdpdGggYW4KKwkgKiBpbnN5LXRpbnN5IHdpbmRvdy4uLi4KKwkgKi8KKworCWZzLT5zdXBlci0+c19ibG9ja19ncm91cF9uciA9IDA7CisJZnMtPnN1cGVyLT5zX3N0YXRlID0gZnNfc3RhdGU7CisJZnMtPnN1cGVyLT5zX2ZlYXR1cmVfaW5jb21wYXQgPSBmZWF0dXJlX2luY29tcGF0OworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCSpzdXBlcl9zaGFkb3cgPSAqZnMtPnN1cGVyOworCWV4dDJmc19zd2FwX3N1cGVyKHN1cGVyX3NoYWRvdyk7CisjZW5kaWYKKworCXJldHZhbCA9IGV4dDJmc19zdXBlcmJsb2NrX2NzdW1fc2V0KGZzLCBzdXBlcl9zaGFkb3cpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoIShmbGFncyAmIEVYVDJfRkxBR19GTFVTSF9OT19TWU5DKSkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9mbHVzaChmcy0+aW8pOworCXJldHZhbCA9IHdyaXRlX3ByaW1hcnlfc3VwZXJibG9jayhmcywgc3VwZXJfc2hhZG93KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX0RJUlRZOworCisJaWYgKCEoZmxhZ3MgJiBFWFQyX0ZMQUdfRkxVU0hfTk9fU1lOQykpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfZmx1c2goZnMtPmlvKTsKK2Vycm91dDoKKwlmcy0+c3VwZXItPnNfc3RhdGUgPSBmc19zdGF0ZTsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlpZiAoc3VwZXJfc2hhZG93KQorCQlleHQyZnNfZnJlZV9tZW0oJnN1cGVyX3NoYWRvdyk7CisJaWYgKGdyb3VwX3NoYWRvdykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZncm91cF9zaGFkb3cpOworI2VuZGlmCisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19jbG9zZV9mcmVlKGV4dDJfZmlsc3lzICpmc19wdHIpCit7CisJZXJyY29kZV90IHJldDsKKwlleHQyX2ZpbHN5cyBmcyA9ICpmc19wdHI7CisKKwlyZXQgPSBleHQyZnNfY2xvc2UyKGZzLCAwKTsKKwlpZiAocmV0KQorCQlleHQyZnNfZnJlZShmcyk7CisJKmZzX3B0ciA9IE5VTEw7CisJcmV0dXJuIHJldDsKK30KKworZXJyY29kZV90IGV4dDJmc19jbG9zZShleHQyX2ZpbHN5cyBmcykKK3sKKwlyZXR1cm4gZXh0MmZzX2Nsb3NlMihmcywgMCk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfY2xvc2UyKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCW1ldGFfYmxrczsKKwlpb19zdGF0cyBzdGF0cyA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKGZzLT53cml0ZV9iaXRtYXBzKSB7CisJCXJldHZhbCA9IGZzLT53cml0ZV9iaXRtYXBzKGZzKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCWlmIChmcy0+c3VwZXItPnNfa2J5dGVzX3dyaXR0ZW4gJiYKKwkgICAgZnMtPmlvLT5tYW5hZ2VyLT5nZXRfc3RhdHMpCisJCWZzLT5pby0+bWFuYWdlci0+Z2V0X3N0YXRzKGZzLT5pbywgJnN0YXRzKTsKKwlpZiAoc3RhdHMgJiYgc3RhdHMtPmJ5dGVzX3dyaXR0ZW4gJiYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykpIHsKKwkJZnMtPnN1cGVyLT5zX2tieXRlc193cml0dGVuICs9IHN0YXRzLT5ieXRlc193cml0dGVuID4+IDEwOworCQltZXRhX2Jsa3MgPSBmcy0+ZGVzY19ibG9ja3MgKyAxOworCQlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfU1VQRVJfT05MWSkpCisJCQlmcy0+c3VwZXItPnNfa2J5dGVzX3dyaXR0ZW4gKz0gbWV0YV9ibGtzIC8KKwkJCQkoZnMtPmJsb2Nrc2l6ZSAvIDEwMjQpOworCQlpZiAoKGZzLT5mbGFncyAmIEVYVDJfRkxBR19ESVJUWSkgPT0gMCkKKwkJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfU1VQRVJfT05MWSB8IEVYVDJfRkxBR19ESVJUWTsKKwl9CisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19ESVJUWSkgeworCQlyZXR2YWwgPSBleHQyZnNfZmx1c2gyKGZzLCBmbGFncyk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHZhbCA9IGV4dDJmc19tbXBfc3RvcChmcyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWV4dDJmc19mcmVlKGZzKTsKKwlyZXR1cm4gMDsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3JjMTYuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NyYzE2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkZWIyNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NyYzE2LmMKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqICAgICAgY3JjMTYuYworICoKKyAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogVmVyc2lvbiAyLiBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgorCisjaW5jbHVkZSAiY3JjMTYuaCIKKworLyoqIENSQyB0YWJsZSBmb3IgdGhlIENSQy0xNi4gVGhlIHBvbHkgaXMgMHg4MDA1ICh4MTYgKyB4MTUgKyB4MiArIDEpICovCitzdGF0aWMgX191MTYgY29uc3QgY3JjMTZfdGFibGVbMjU2XSA9IHsKKwkweDAwMDAsIDB4QzBDMSwgMHhDMTgxLCAweDAxNDAsIDB4QzMwMSwgMHgwM0MwLCAweDAyODAsIDB4QzI0MSwKKwkweEM2MDEsIDB4MDZDMCwgMHgwNzgwLCAweEM3NDEsIDB4MDUwMCwgMHhDNUMxLCAweEM0ODEsIDB4MDQ0MCwKKwkweENDMDEsIDB4MENDMCwgMHgwRDgwLCAweENENDEsIDB4MEYwMCwgMHhDRkMxLCAweENFODEsIDB4MEU0MCwKKwkweDBBMDAsIDB4Q0FDMSwgMHhDQjgxLCAweDBCNDAsIDB4QzkwMSwgMHgwOUMwLCAweDA4ODAsIDB4Qzg0MSwKKwkweEQ4MDEsIDB4MThDMCwgMHgxOTgwLCAweEQ5NDEsIDB4MUIwMCwgMHhEQkMxLCAweERBODEsIDB4MUE0MCwKKwkweDFFMDAsIDB4REVDMSwgMHhERjgxLCAweDFGNDAsIDB4REQwMSwgMHgxREMwLCAweDFDODAsIDB4REM0MSwKKwkweDE0MDAsIDB4RDRDMSwgMHhENTgxLCAweDE1NDAsIDB4RDcwMSwgMHgxN0MwLCAweDE2ODAsIDB4RDY0MSwKKwkweEQyMDEsIDB4MTJDMCwgMHgxMzgwLCAweEQzNDEsIDB4MTEwMCwgMHhEMUMxLCAweEQwODEsIDB4MTA0MCwKKwkweEYwMDEsIDB4MzBDMCwgMHgzMTgwLCAweEYxNDEsIDB4MzMwMCwgMHhGM0MxLCAweEYyODEsIDB4MzI0MCwKKwkweDM2MDAsIDB4RjZDMSwgMHhGNzgxLCAweDM3NDAsIDB4RjUwMSwgMHgzNUMwLCAweDM0ODAsIDB4RjQ0MSwKKwkweDNDMDAsIDB4RkNDMSwgMHhGRDgxLCAweDNENDAsIDB4RkYwMSwgMHgzRkMwLCAweDNFODAsIDB4RkU0MSwKKwkweEZBMDEsIDB4M0FDMCwgMHgzQjgwLCAweEZCNDEsIDB4MzkwMCwgMHhGOUMxLCAweEY4ODEsIDB4Mzg0MCwKKwkweDI4MDAsIDB4RThDMSwgMHhFOTgxLCAweDI5NDAsIDB4RUIwMSwgMHgyQkMwLCAweDJBODAsIDB4RUE0MSwKKwkweEVFMDEsIDB4MkVDMCwgMHgyRjgwLCAweEVGNDEsIDB4MkQwMCwgMHhFREMxLCAweEVDODEsIDB4MkM0MCwKKwkweEU0MDEsIDB4MjRDMCwgMHgyNTgwLCAweEU1NDEsIDB4MjcwMCwgMHhFN0MxLCAweEU2ODEsIDB4MjY0MCwKKwkweDIyMDAsIDB4RTJDMSwgMHhFMzgxLCAweDIzNDAsIDB4RTEwMSwgMHgyMUMwLCAweDIwODAsIDB4RTA0MSwKKwkweEEwMDEsIDB4NjBDMCwgMHg2MTgwLCAweEExNDEsIDB4NjMwMCwgMHhBM0MxLCAweEEyODEsIDB4NjI0MCwKKwkweDY2MDAsIDB4QTZDMSwgMHhBNzgxLCAweDY3NDAsIDB4QTUwMSwgMHg2NUMwLCAweDY0ODAsIDB4QTQ0MSwKKwkweDZDMDAsIDB4QUNDMSwgMHhBRDgxLCAweDZENDAsIDB4QUYwMSwgMHg2RkMwLCAweDZFODAsIDB4QUU0MSwKKwkweEFBMDEsIDB4NkFDMCwgMHg2QjgwLCAweEFCNDEsIDB4NjkwMCwgMHhBOUMxLCAweEE4ODEsIDB4Njg0MCwKKwkweDc4MDAsIDB4QjhDMSwgMHhCOTgxLCAweDc5NDAsIDB4QkIwMSwgMHg3QkMwLCAweDdBODAsIDB4QkE0MSwKKwkweEJFMDEsIDB4N0VDMCwgMHg3RjgwLCAweEJGNDEsIDB4N0QwMCwgMHhCREMxLCAweEJDODEsIDB4N0M0MCwKKwkweEI0MDEsIDB4NzRDMCwgMHg3NTgwLCAweEI1NDEsIDB4NzcwMCwgMHhCN0MxLCAweEI2ODEsIDB4NzY0MCwKKwkweDcyMDAsIDB4QjJDMSwgMHhCMzgxLCAweDczNDAsIDB4QjEwMSwgMHg3MUMwLCAweDcwODAsIDB4QjA0MSwKKwkweDUwMDAsIDB4OTBDMSwgMHg5MTgxLCAweDUxNDAsIDB4OTMwMSwgMHg1M0MwLCAweDUyODAsIDB4OTI0MSwKKwkweDk2MDEsIDB4NTZDMCwgMHg1NzgwLCAweDk3NDEsIDB4NTUwMCwgMHg5NUMxLCAweDk0ODEsIDB4NTQ0MCwKKwkweDlDMDEsIDB4NUNDMCwgMHg1RDgwLCAweDlENDEsIDB4NUYwMCwgMHg5RkMxLCAweDlFODEsIDB4NUU0MCwKKwkweDVBMDAsIDB4OUFDMSwgMHg5QjgxLCAweDVCNDAsIDB4OTkwMSwgMHg1OUMwLCAweDU4ODAsIDB4OTg0MSwKKwkweDg4MDEsIDB4NDhDMCwgMHg0OTgwLCAweDg5NDEsIDB4NEIwMCwgMHg4QkMxLCAweDhBODEsIDB4NEE0MCwKKwkweDRFMDAsIDB4OEVDMSwgMHg4RjgxLCAweDRGNDAsIDB4OEQwMSwgMHg0REMwLCAweDRDODAsIDB4OEM0MSwKKwkweDQ0MDAsIDB4ODRDMSwgMHg4NTgxLCAweDQ1NDAsIDB4ODcwMSwgMHg0N0MwLCAweDQ2ODAsIDB4ODY0MSwKKwkweDgyMDEsIDB4NDJDMCwgMHg0MzgwLCAweDgzNDEsIDB4NDEwMCwgMHg4MUMxLCAweDgwODEsIDB4NDA0MAorfTsKKworLyoqCisgKiBDb21wdXRlIHRoZSBDUkMtMTYgZm9yIHRoZSBkYXRhIGJ1ZmZlcgorICoKKyAqIEBwYXJhbSBjcmMgICAgIHByZXZpb3VzIENSQyB2YWx1ZQorICogQHBhcmFtIGJ1ZmZlciAgZGF0YSBwb2ludGVyCisgKiBAcGFyYW0gbGVuICAgICBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGJ1ZmZlcgorICogQHJldHVybiAgICAgICAgdGhlIHVwZGF0ZWQgQ1JDIHZhbHVlCisgKi8KK2NyYzE2X3QgZXh0MmZzX2NyYzE2KGNyYzE2X3QgY3JjLCBjb25zdCB2b2lkICpidWZmZXIsIHVuc2lnbmVkIGludCBsZW4pCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAqY3AgPSBidWZmZXI7CisKKwl3aGlsZSAobGVuLS0pCisJCS8qCisJCSAqIGZvciBhbiB1bmtub3duIHJlYXNvbiwgUFBDIHRyZWF0cyBfX3UxNiBhcyBzaWduZWQKKwkJICogYW5kIGtlZXBzIGRvaW5nIHNpZ24gZXh0ZW5zaW9uIG9uIHRoZSB2YWx1ZS4KKwkJICogSW5zdGVhZCwgdXNlIG9ubHkgdGhlIGxvdyAxNiBiaXRzIG9mIGFuIHVuc2lnbmVkCisJCSAqIGludCBmb3IgaG9sZGluZyB0aGUgQ1JDIHZhbHVlIHRvIGF2b2lkIHRoaXMuCisJCSAqLworCQljcmMgPSAoKChjcmMgPj4gOCkgJiAweGZmVSkgXgorCQkgICAgICAgY3JjMTZfdGFibGVbKGNyYyBeICpjcCsrKSAmIDB4ZmZVXSkgJiAweDAwMDBmZmZmVTsKKwlyZXR1cm4gY3JjOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3JjMTYuaCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NyYzE2LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIyZTY4ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NyYzE2LmgKQEAgLTAsMCArMSwyNiBAQAorLyoKKyAqCWNyYzE2LmggLSBDUkMtMTYgcm91dGluZQorICoKKyAqIEltcGxlbWVudHMgdGhlIHN0YW5kYXJkIENSQy0xNjoKKyAqICAgV2lkdGggMTYKKyAqICAgUG9seSAgMHg4MDA1ICh4MTYgKyB4MTUgKyB4MiArIDEpCisgKiAgIEluaXQgIDAKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDUgQmVuIEdhcmRuZXIgPGJnYXJkbmVyQHdhYnRlYy5jb20+CisgKgorICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiBWZXJzaW9uIDIuIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfX0NSQzE2X0gKKyNkZWZpbmUgX19DUkMxNl9ICisKKy8qIGZvciBhbiB1bmtub3duIHJlYXNvbiwgUFBDIHRyZWF0cyBfX3UxNiBhcyBzaWduZWQgYW5kIGtlZXBzIGRvaW5nIHNpZ24KKyAqIGV4dGVuc2lvbiBvbiB0aGUgdmFsdWUuICBJbnN0ZWFkLCB1c2Ugb25seSB0aGUgbG93IDE2IGJpdHMgb2YgYW4KKyAqIHVuc2lnbmVkIGludCBmb3IgaG9sZGluZyB0aGUgQ1JDIHZhbHVlIHRvIGF2b2lkIHRoaXMuCisgKi8KK3R5cGVkZWYgdW5zaWduZWQgaW50IGNyYzE2X3Q7CisKK2V4dGVybiBjcmMxNl90IGV4dDJmc19jcmMxNihjcmMxNl90IGNyYywgY29uc3Qgdm9pZCAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgbGVuKTsKKworI2VuZGlmIC8qIF9fQ1JDMTZfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3JjMzJjLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jcmMzMmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWQwMDUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3JjMzJjLmMKQEAgLTAsMCArMSw5MzIgQEAKKy8qCisgKiBjcmMzMmMuYworICoKKyAqIEF1Z3VzdCAyNiwgMjAxMSBEYXJyaWNrIEouIFdvbmcgPGRqd29uZyBhdCB1cy5pYm0uY29tPgorICogUmV1c2UgQm9iIFBlYXJzb24ncyBzbGljZS1ieS04IGltcGxlbWVudGF0aW9uIGZvciBlMmZzcHJvZ3MuCisgKgorICogSnVseSAyMCwgMjAxMSBCb2IgUGVhcnNvbiA8cnBlYXJzb24gYXQgc3lzdGVtZmFicmljd29ya3MuY29tPgorICogYWRkZWQgc2xpY2UgYnkgOCBhbGdvcml0aG0gdG8gdGhlIGV4aXN0aW5nIGNvbnZlbnRpb25hbCBhbmQKKyAqIHNsaWNlIGJ5IDQgYWxnb3JpdGhtcy4KKyAqCisgKiBPY3QgMTUsIDIwMDAgTWF0dCBEb21zY2ggPE1hdHRfRG9tc2NoQGRlbGwuY29tPgorICogTmljZXIgY3JjMzIgZnVuY3Rpb25zL2RvY3Mgc3VibWl0dGVkIGJ5IGxpbnV4QGhvcml6b24uY29tLiAgVGhhbmtzIQorICogQ29kZSB3YXMgZnJvbSB0aGUgcHVibGljIGRvbWFpbiwgY29weXJpZ2h0IGFiYW5kb25lZC4gIENvZGUgd2FzCisgKiBzdWJzZXF1ZW50bHkgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbCwgdGh1cyB3YXMgcmUtbGljZW5zZWQgdW5kZXIgdGhlCisgKiBHTlUgR1BMIHYyLgorICoKKyAqIE9jdCAxMiwgMjAwMCBNYXR0IERvbXNjaCA8TWF0dF9Eb21zY2hAZGVsbC5jb20+CisgKiBTYW1lIGNyYzMyIGZ1bmN0aW9uIHdhcyB1c2VkIGluIDUgb3RoZXIgcGxhY2VzIGluIHRoZSBrZXJuZWwuCisgKiBJIG1hZGUgb25lIHZlcnNpb24sIGFuZCBkZWxldGVkIHRoZSBvdGhlcnMuCisgKiBUaGVyZSBhcmUgdmFyaW91cyBpbmNhbnRhdGlvbnMgb2YgY3JjMzIoKS4gIFNvbWUgdXNlIGEgc2VlZCBvZiAwIG9yIH4wLgorICogU29tZSB4b3IgYXQgdGhlIGVuZCB3aXRoIH4wLiAgVGhlIGdlbmVyaWMgY3JjMzIoKSBmdW5jdGlvbiB0YWtlcworICogc2VlZCBhcyBhbiBhcmd1bWVudCwgYW5kIGRvZXNuJ3QgeG9yIGF0IHRoZSBlbmQuICBUaGVuIGluZGl2aWR1YWwKKyAqIHVzZXJzIGNhbiBkbyB3aGF0ZXZlciB0aGV5IG5lZWQuCisgKiAgIGRyaXZlcnMvbmV0L3NtYzkxOTQuYyB1c2VzIHNlZWQgfjAsIGRvZXNuJ3QgeG9yIHdpdGggfjAuCisgKiAgIGZzL2pmZnMyIHVzZXMgc2VlZCAwLCBkb2Vzbid0IHhvciB3aXRoIH4wLgorICogICBmcy9wYXJ0aXRpb25zL2VmaS5jIHVzZXMgc2VlZCB+MCwgeG9yJ3Mgd2l0aCB+MC4KKyAqCisgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIFZlcnNpb24gMi4gIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBtb3JlIGRldGFpbHMuCisgKi8KKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2RlZmluZSBtaW4oeCwgeSkJCSgoeCkgPiAoeSkgPyAoeSkgOiAoeCkpCisjZGVmaW5lIF9fQUxJR05fS0VSTkVMX01BU0soeCwgbWFzaykJKCgoeCkgKyAobWFzaykpICYgfihtYXNrKSkKKyNkZWZpbmUgX19BTElHTl9LRVJORUwoeCwgYSkJX19BTElHTl9LRVJORUxfTUFTSyh4LCAoX190eXBlb2ZfXyh4KSkoYSkgLSAxKQorI2RlZmluZSBBTElHTih4LCBhKQkJX19BTElHTl9LRVJORUwoKHgpLCAoYSkpCisjZGVmaW5lIFBUUl9BTElHTihwLCBhKQkJKChfX3R5cGVvZl9fKHApKUFMSUdOKCh1bnNpZ25lZCBsb25nKShwKSwgKGEpKSkKKyNpbmNsdWRlICJjcmMzMmNfZGVmcy5oIgorCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisjZGVmaW5lIF9fY29uc3RhbnRfY3B1X3RvX2xlMzIoeCkgX19fY29uc3RhbnRfc3dhYjMyKCh4KSkKKyNkZWZpbmUgX19jb25zdGFudF9jcHVfdG9fYmUzMih4KSAoeCkKKyNkZWZpbmUgX19iZTMyX3RvX2NwdSh4KSAoeCkKKyNkZWZpbmUgX19jcHVfdG9fYmUzMih4KSAoeCkKKyNkZWZpbmUgX19jcHVfdG9fbGUzMih4KSAoZXh0MmZzX2NwdV90b19sZTMyKCh4KSkpCisjZGVmaW5lIF9fbGUzMl90b19jcHUoeCkgKGV4dDJmc19sZTMyX3RvX2NwdSgoeCkpKQorI2Vsc2UKKyNkZWZpbmUgX19jb25zdGFudF9jcHVfdG9fbGUzMih4KSAoeCkKKyNkZWZpbmUgX19jb25zdGFudF9jcHVfdG9fYmUzMih4KSBfX19jb25zdGFudF9zd2FiMzIoKHgpKQorI2RlZmluZSBfX2JlMzJfdG9fY3B1KHgpIChleHQyZnNfYmUzMl90b19jcHUoKHgpKSkKKyNkZWZpbmUgX19jcHVfdG9fYmUzMih4KSAoZXh0MmZzX2NwdV90b19iZTMyKCh4KSkpCisjZGVmaW5lIF9fY3B1X3RvX2xlMzIoeCkgKHgpCisjZGVmaW5lIF9fbGUzMl90b19jcHUoeCkgKHgpCisjZW5kaWYKKworI2lmIENSQ19MRV9CSVRTID4gOAorIyBkZWZpbmUgdG9sZSh4KSBfX2NvbnN0YW50X2NwdV90b19sZTMyKHgpCisjZWxzZQorIyBkZWZpbmUgdG9sZSh4KSAoeCkKKyNlbmRpZgorCisjaWYgQ1JDX0JFX0JJVFMgPiA4CisjIGRlZmluZSB0b2JlKHgpIF9fY29uc3RhbnRfY3B1X3RvX2JlMzIoeCkKKyNlbHNlCisjIGRlZmluZSB0b2JlKHgpICh4KQorI2VuZGlmCisKKyNpbmNsdWRlICJjcmMzMmNfdGFibGUuaCIKKworI2lmIENSQ19MRV9CSVRTID4gOCB8fCBDUkNfQkVfQklUUyA+IDgKKworLyogaW1wbGVtZW50cyBzbGljaW5nLWJ5LTQgb3Igc2xpY2luZy1ieS04IGFsZ29yaXRobSAqLworc3RhdGljIGlubGluZSB1aW50MzJfdAorY3JjMzJfYm9keSh1aW50MzJfdCBjcmMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKmJ1Ziwgc2l6ZV90IGxlbiwKKwkgICBjb25zdCB1aW50MzJfdCAoKnRhYilbMjU2XSkKK3sKKyMgaWZuZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIERPX0NSQyh4KSAoY3JjID0gdDBbKGNyYyBeICh4KSkgJiAyNTVdIF4gKGNyYyA+PiA4KSkKKyMgIGRlZmluZSBET19DUkM0ICh0M1socSkgJiAyNTVdIF4gdDJbKHEgPj4gOCkgJiAyNTVdIF4gXAorCQkgICB0MVsocSA+PiAxNikgJiAyNTVdIF4gdDBbKHEgPj4gMjQpICYgMjU1XSkKKyMgIGRlZmluZSBET19DUkM4ICh0N1socSkgJiAyNTVdIF4gdDZbKHEgPj4gOCkgJiAyNTVdIF4gXAorCQkgICB0NVsocSA+PiAxNikgJiAyNTVdIF4gdDRbKHEgPj4gMjQpICYgMjU1XSkKKyMgZWxzZQorIyAgZGVmaW5lIERPX0NSQyh4KSAoY3JjID0gdDBbKChjcmMgPj4gMjQpIF4gKHgpKSAmIDI1NV0gXiAoY3JjIDw8IDgpKQorIyAgZGVmaW5lIERPX0NSQzQgKHQwWyhxKSAmIDI1NV0gXiB0MVsocSA+PiA4KSAmIDI1NV0gXiBcCisJCSAgIHQyWyhxID4+IDE2KSAmIDI1NV0gXiB0M1socSA+PiAyNCkgJiAyNTVdKQorIyAgZGVmaW5lIERPX0NSQzggKHQ0WyhxKSAmIDI1NV0gXiB0NVsocSA+PiA4KSAmIDI1NV0gXiBcCisJCSAgIHQ2WyhxID4+IDE2KSAmIDI1NV0gXiB0N1socSA+PiAyNCkgJiAyNTVdKQorIyBlbmRpZgorCWNvbnN0IHVpbnQzMl90ICpiOworCXNpemVfdCByZW1fbGVuOworCWNvbnN0IHVpbnQzMl90ICp0MCA9IHRhYlswXSwgKnQxID0gdGFiWzFdLCAqdDIgPSB0YWJbMl0sICp0MyA9IHRhYlszXTsKKwljb25zdCB1aW50MzJfdCAqdDQgPSB0YWJbNF0sICp0NSA9IHRhYls1XSwgKnQ2ID0gdGFiWzZdLCAqdDcgPSB0YWJbN107CisJdWludDMyX3QgcTsKKworCS8qIEFsaWduIGl0ICovCisJaWYgKHVubGlrZWx5KCh1aW50cHRyX3QpYnVmICYgMyAmJiBsZW4pKSB7CisJCWRvIHsKKwkJCURPX0NSQygqYnVmKyspOworCQl9IHdoaWxlICgoLS1sZW4pICYmICgodWludHB0cl90KWJ1ZikmMyk7CisJfQorCisjIGlmIENSQ19MRV9CSVRTID09IDMyCisJcmVtX2xlbiA9IGxlbiAmIDM7CisJbGVuID0gbGVuID4+IDI7CisjIGVsc2UKKwlyZW1fbGVuID0gbGVuICYgNzsKKwlsZW4gPSBsZW4gPj4gMzsKKyMgZW5kaWYKKworCWIgPSAoY29uc3QgdWludDMyX3QgKilidWY7CisJZm9yICgtLWI7IGxlbjsgLS1sZW4pIHsKKwkJcSA9IGNyYyBeICorK2I7IC8qIHVzZSBwcmUgaW5jcmVtZW50IGZvciBzcGVlZCAqLworIyBpZiBDUkNfTEVfQklUUyA9PSAzMgorCQljcmMgPSBET19DUkM0OworIyBlbHNlCisJCWNyYyA9IERPX0NSQzg7CisJCXEgPSAqKytiOworCQljcmMgXj0gRE9fQ1JDNDsKKyMgZW5kaWYKKwl9CisJbGVuID0gcmVtX2xlbjsKKwkvKiBBbmQgdGhlIGxhc3QgZmV3IGJ5dGVzICovCisJaWYgKGxlbikgeworCQljb25zdCB1aW50OF90ICpwID0gKGNvbnN0IHVpbnQ4X3QgKikoYiArIDEpIC0gMTsKKwkJZG8geworCQkJRE9fQ1JDKCorK3ApOyAvKiB1c2UgcHJlIGluY3JlbWVudCBmb3Igc3BlZWQgKi8KKwkJfSB3aGlsZSAoLS1sZW4pOworCX0KKwlyZXR1cm4gY3JjOworI3VuZGVmIERPX0NSQworI3VuZGVmIERPX0NSQzQKKyN1bmRlZiBET19DUkM4Cit9CisjZW5kaWYKKworLyoqCisgKiBjcmMzMl9sZSgpIC0gQ2FsY3VsYXRlIGJpdHdpc2UgbGl0dGxlLWVuZGlhbiBFdGhlcm5ldCBBVVRPRElOIElJIENSQzMyCisgKiBAY3JjOiBzZWVkIHZhbHVlIGZvciBjb21wdXRhdGlvbi4gIH4wIGZvciBFdGhlcm5ldCwgc29tZXRpbWVzIDAgZm9yCisgKglvdGhlciB1c2VzLCBvciB0aGUgcHJldmlvdXMgY3JjMzIgdmFsdWUgaWYgY29tcHV0aW5nIGluY3JlbWVudGFsbHkuCisgKiBAcDogcG9pbnRlciB0byBidWZmZXIgb3ZlciB3aGljaCBDUkMgaXMgcnVuCisgKiBAbGVuOiBsZW5ndGggb2YgYnVmZmVyIEBwCisgKi8KK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgY3JjMzJfbGVfZ2VuZXJpYyh1aW50MzJfdCBjcmMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCisJCQkJCXNpemVfdCBsZW4sIGNvbnN0IHVpbnQzMl90ICgqdGFiKVsyNTZdLAorCQkJCQl1aW50MzJfdCBwb2x5bm9taWFsIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKyNpZiBDUkNfTEVfQklUUyA9PSAxCisJaW50IGk7CisJd2hpbGUgKGxlbi0tKSB7CisJCWNyYyBePSAqcCsrOworCQlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCQkJY3JjID0gKGNyYyA+PiAxKSBeICgoY3JjICYgMSkgPyBwb2x5bm9taWFsIDogMCk7CisJfQorIyBlbGlmIENSQ19MRV9CSVRTID09IDIKKwl3aGlsZSAobGVuLS0pIHsKKwkJY3JjIF49ICpwKys7CisJCWNyYyA9IChjcmMgPj4gMikgXiB0YWJbMF1bY3JjICYgM107CisJCWNyYyA9IChjcmMgPj4gMikgXiB0YWJbMF1bY3JjICYgM107CisJCWNyYyA9IChjcmMgPj4gMikgXiB0YWJbMF1bY3JjICYgM107CisJCWNyYyA9IChjcmMgPj4gMikgXiB0YWJbMF1bY3JjICYgM107CisJfQorIyBlbGlmIENSQ19MRV9CSVRTID09IDQKKwl3aGlsZSAobGVuLS0pIHsKKwkJY3JjIF49ICpwKys7CisJCWNyYyA9IChjcmMgPj4gNCkgXiB0YWJbMF1bY3JjICYgMTVdOworCQljcmMgPSAoY3JjID4+IDQpIF4gdGFiWzBdW2NyYyAmIDE1XTsKKwl9CisjIGVsaWYgQ1JDX0xFX0JJVFMgPT0gOAorCS8qIGFrYSBTYXJ3YXRlIGFsZ29yaXRobSAqLworCXdoaWxlIChsZW4tLSkgeworCQljcmMgXj0gKnArKzsKKwkJY3JjID0gKGNyYyA+PiA4KSBeIHRhYlswXVtjcmMgJiAyNTVdOworCX0KKyMgZWxzZQorCWNyYyA9IF9fY3B1X3RvX2xlMzIoY3JjKTsKKwljcmMgPSBjcmMzMl9ib2R5KGNyYywgcCwgbGVuLCB0YWIpOworCWNyYyA9IF9fbGUzMl90b19jcHUoY3JjKTsKKyNlbmRpZgorCXJldHVybiBjcmM7Cit9CisKK3VpbnQzMl90IGV4dDJmc19jcmMzMmNfbGUodWludDMyX3QgY3JjLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCBzaXplX3QgbGVuKQoreworCXJldHVybiBjcmMzMl9sZV9nZW5lcmljKGNyYywgcCwgbGVuLCBjcmMzMmN0YWJsZV9sZSwgQ1JDMzJDX1BPTFlfTEUpOworfQorCisvKioKKyAqIGNyYzMyX2JlKCkgLSBDYWxjdWxhdGUgYml0d2lzZSBiaWctZW5kaWFuIEV0aGVybmV0IEFVVE9ESU4gSUkgQ1JDMzIKKyAqIEBjcmM6IHNlZWQgdmFsdWUgZm9yIGNvbXB1dGF0aW9uLiAgfjAgZm9yIEV0aGVybmV0LCBzb21ldGltZXMgMCBmb3IKKyAqCW90aGVyIHVzZXMsIG9yIHRoZSBwcmV2aW91cyBjcmMzMiB2YWx1ZSBpZiBjb21wdXRpbmcgaW5jcmVtZW50YWxseS4KKyAqIEBwOiBwb2ludGVyIHRvIGJ1ZmZlciBvdmVyIHdoaWNoIENSQyBpcyBydW4KKyAqIEBsZW46IGxlbmd0aCBvZiBidWZmZXIgQHAKKyAqLworc3RhdGljIGlubGluZSB1aW50MzJfdCBjcmMzMl9iZV9nZW5lcmljKHVpbnQzMl90IGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAqcCwKKwkJCQkJc2l6ZV90IGxlbiwgY29uc3QgdWludDMyX3QgKCp0YWIpWzI1Nl0sCisJCQkJCXVpbnQzMl90IHBvbHlub21pYWwgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworI2lmIENSQ19CRV9CSVRTID09IDEKKwlpbnQgaTsKKwl3aGlsZSAobGVuLS0pIHsKKwkJY3JjIF49ICpwKysgPDwgMjQ7CisJCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspCisJCQljcmMgPQorCQkJICAgIChjcmMgPDwgMSkgXiAoKGNyYyAmIDB4ODAwMDAwMDApID8gcG9seW5vbWlhbCA6CisJCQkJCSAgMCk7CisJfQorIyBlbGlmIENSQ19CRV9CSVRTID09IDIKKwl3aGlsZSAobGVuLS0pIHsKKwkJY3JjIF49ICpwKysgPDwgMjQ7CisJCWNyYyA9IChjcmMgPDwgMikgXiB0YWJbMF1bY3JjID4+IDMwXTsKKwkJY3JjID0gKGNyYyA8PCAyKSBeIHRhYlswXVtjcmMgPj4gMzBdOworCQljcmMgPSAoY3JjIDw8IDIpIF4gdGFiWzBdW2NyYyA+PiAzMF07CisJCWNyYyA9IChjcmMgPDwgMikgXiB0YWJbMF1bY3JjID4+IDMwXTsKKwl9CisjIGVsaWYgQ1JDX0JFX0JJVFMgPT0gNAorCXdoaWxlIChsZW4tLSkgeworCQljcmMgXj0gKnArKyA8PCAyNDsKKwkJY3JjID0gKGNyYyA8PCA0KSBeIHRhYlswXVtjcmMgPj4gMjhdOworCQljcmMgPSAoY3JjIDw8IDQpIF4gdGFiWzBdW2NyYyA+PiAyOF07CisJfQorIyBlbGlmIENSQ19CRV9CSVRTID09IDgKKwl3aGlsZSAobGVuLS0pIHsKKwkJY3JjIF49ICpwKysgPDwgMjQ7CisJCWNyYyA9IChjcmMgPDwgOCkgXiB0YWJbMF1bY3JjID4+IDI0XTsKKwl9CisjIGVsc2UKKwljcmMgPSBfX2NwdV90b19iZTMyKGNyYyk7CisJY3JjID0gY3JjMzJfYm9keShjcmMsIHAsIGxlbiwgdGFiKTsKKwljcmMgPSBfX2JlMzJfdG9fY3B1KGNyYyk7CisjIGVuZGlmCisJcmV0dXJuIGNyYzsKK30KKwordWludDMyX3QgZXh0MmZzX2NyYzMyX2JlKHVpbnQzMl90IGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAqcCwgc2l6ZV90IGxlbikKK3sKKwlyZXR1cm4gY3JjMzJfYmVfZ2VuZXJpYyhjcmMsIHAsIGxlbiwgY3JjMzJ0YWJsZV9iZSwgQ1JDUE9MWV9CRSk7Cit9CisKKyNpZmRlZiBVTklUVEVTVAorc3RhdGljIHVpbnQ4X3QgdGVzdF9idWZbXSA9IHsKKwkweGQ5LCAweGQ3LCAweDZhLCAweDEzLCAweDNhLCAweGIxLCAweDA1LCAweDQ4LAorCTB4ZGEsIDB4YWQsIDB4MTQsIDB4YmQsIDB4MDMsIDB4M2EsIDB4NTgsIDB4NWUsCisJMHg2ZSwgMHhkMSwgMHg1NiwgMHhjOSwgMHgyZSwgMHhjNCwgMHhjYiwgMHg2YiwKKwkweGU4LCAweDc3LCAweDUyLCAweDM3LCAweDRlLCAweDBmLCAweDU1LCAweGQyLAorCTB4MTIsIDB4NjUsIDB4OTAsIDB4YzIsIDB4NDEsIDB4NDksIDB4ODEsIDB4MDEsCisJMHhmNSwgMHgwMSwgMHhlYiwgMHgyZCwgMHg3OCwgMHg3NCwgMHgyMywgMHg1ZCwKKwkweDg0LCAweDVjLCAweDgxLCAweDkyLCAweDIxLCAweGU5LCAweDhkLCAweDFkLAorCTB4ODksIDB4ZjIsIDB4NGEsIDB4YWMsIDB4ZGQsIDB4ZjksIDB4YWYsIDB4ZWUsCisJMHg0NCwgMHhlNywgMHg2ZSwgMHhlZCwgMHhmYiwgMHhkOCwgMHg4OSwgMHgwZSwKKwkweDk2LCAweDYyLCAweGNkLCAweGE0LCAweDRiLCAweGE5LCAweGU1LCAweDQ1LAorCTB4YjEsIDB4MjksIDB4OWIsIDB4MGYsIDB4ZmMsIDB4YmQsIDB4ODMsIDB4YWIsCisJMHhhOCwgMHg1NCwgMHg5NiwgMHg0NCwgMHgyYywgMHg3ZiwgMHhiYiwgMHhlNywKKwkweDUyLCAweDI5LCAweDA4LCAweGVlLCAweDE0LCAweGM1LCAweGMyLCAweGVjLAorCTB4NWEsIDB4ZWIsIDB4NDAsIDB4NDAsIDB4ZWEsIDB4ZDEsIDB4M2QsIDB4MTUsCisJMHg3MywgMHhhYSwgMHg4YywgMHg3MywgMHhmYywgMHhmMiwgMHgyYiwgMHg0OSwKKwkweDBiLCAweDEzLCAweDk2LCAweGQ5LCAweDhlLCAweDRiLCAweGJjLCAweGUwLAorCTB4ZjQsIDB4ZDIsIDB4ZTAsIDB4MmUsIDB4N2EsIDB4ZjAsIDB4NWQsIDB4MWYsCisJMHhkMiwgMHg5MiwgMHg5NywgMHhlMCwgMHhhYSwgMHg1OSwgMHhhYiwgMHhjOSwKKwkweDVjLCAweGE2LCAweDUxLCAweDFhLCAweGUzLCAweGQ2LCAweDA2LCAweGI5LAorCTB4YWUsIDB4YjgsIDB4NzYsIDB4MzYsIDB4NzksIDB4MzcsIDB4NTIsIDB4ZjYsCisJMHgzNCwgMHhhZiwgMHgyNywgMHgxOSwgMHhlMSwgMHhjMCwgMHgyYiwgMHhkZCwKKwkweDAxLCAweDE1LCAweGNkLCAweGNlLCAweDQ0LCAweGY2LCAweDRjLCAweDE4LAorCTB4OTIsIDB4NjksIDB4YmUsIDB4OGEsIDB4NzYsIDB4MjMsIDB4NTIsIDB4MTMsCisJMHgzZiwgMHhmOSwgMHhlMCwgMHhmNSwgMHgwNiwgMHgyOCwgMHg3YywgMHhjNywKKwkweGYzLCAweDQyLCAweDBmLCAweGRkLCAweDQwLCAweDMzLCAweGY3LCAweDk5LAorCTB4ZTIsIDB4YWQsIDB4MjYsIDB4ZDksIDB4NTMsIDB4MTAsIDB4NzIsIDB4MGMsCisJMHg0ZSwgMHg0MywgMHg0YywgMHg2MSwgMHhmZSwgMHhkOSwgMHhjMSwgMHgxNiwKKwkweGExLCAweDkzLCAweGNhLCAweDNjLCAweDc1LCAweDdmLCAweDA3LCAweDdhLAorCTB4NjUsIDB4YjMsIDB4NTMsIDB4MmEsIDB4NTIsIDB4MDAsIDB4YTAsIDB4NjIsCisJMHhlMCwgMHhhMywgMHgxZiwgMHhhZCwgMHhkNywgMHhiYiwgMHhjMCwgMHg4MywKKwkweDVkLCAweDU0LCAweDg3LCAweDVmLCAweGM4LCAweDJmLCAweGM4LCAweGJmLAorCTB4NjksIDB4MDQsIDB4OTEsIDB4YzgsIDB4YTYsIDB4MWQsIDB4NGQsIDB4NDYsCisJMHg5MSwgMHhmYywgMHgyNiwgMHhmNCwgMHgxNiwgMHhkMSwgMHhhNCwgMHhiZiwKKwkweDVjLCAweGEyLCAweDZjLCAweGRkLCAweGI0LCAweDQwLCAweGYyLCAweDJlLAorCTB4YTIsIDB4YWQsIDB4ZjcsIDB4ZjQsIDB4YTUsIDB4OGEsIDB4M2UsIDB4MjMsCisJMHg2NCwgMHgwOCwgMHhjOCwgMHhhMSwgMHhhMCwgMHhmMCwgMHg1ZCwgMHg3MCwKKwkweGQyLCAweDc3LCAweGZkLCAweGM4LCAweDUwLCAweDgzLCAweDBmLCAweGQ2LAorCTB4MmIsIDB4ZTQsIDB4MWYsIDB4NTIsIDB4MzQsIDB4MzMsIDB4NjgsIDB4ZmQsCisJMHg5MiwgMHhiZSwgMHg5ZiwgMHg5NywgMHg2YiwgMHg4ZCwgMHg4MSwgMHg5MSwKKwkweDBmLCAweGVmLCAweDY1LCAweGM4LCAweDBkLCAweDE1LCAweDAxLCAweDc3LAorCTB4NTgsIDB4YjIsIDB4ZjQsIDB4MWIsIDB4MDYsIDB4N2UsIDB4ZjUsIDB4Y2EsCisJMHgxNSwgMHgyZSwgMHgzOCwgMHhkOCwgMHg4MSwgMHgxYywgMHgxYywgMHhhMCwKKwkweGI2LCAweDEzLCAweDZhLCAweDJiLCAweDcxLCAweDM0LCAweDUyLCAweGQ3LAorCTB4MWQsIDB4YmQsIDB4MzcsIDB4NTksIDB4YmMsIDB4ODYsIDB4MjUsIDB4MmIsCisJMHhhOCwgMHg5MywgMHhjZSwgMHgxYSwgMHgwMywgMHgxNiwgMHhmZSwgMHgwMSwKKwkweDU3LCAweDk5LCAweDI0LCAweDI1LCAweDJjLCAweGIzLCAweGFiLCAweDFlLAorCTB4MmQsIDB4NjUsIDB4MjAsIDB4ODksIDB4MTcsIDB4MDIsIDB4MGUsIDB4MGEsCisJMHhmNSwgMHgxZSwgMHhjNywgMHhmZiwgMHgxZiwgMHg2MSwgMHhhOSwgMHg1NCwKKwkweDE4LCAweGQ0LCAweGJhLCAweDUwLCAweDU3LCAweDAyLCAweGExLCAweGFiLAorCTB4MjIsIDB4MmUsIDB4MDcsIDB4ZWEsIDB4YTksIDB4YTMsIDB4ODMsIDB4NGYsCisJMHgyNywgMHhmNSwgMHhjNSwgMHhlZSwgMHgzYywgMHgzYiwgMHgxMCwgMHhhZCwKKwkweDMyLCAweDJiLCAweDFjLCAweDAzLCAweGNiLCAweGFmLCAweDk4LCAweDgzLAorCTB4NTQsIDB4YzMsIDB4NjgsIDB4NjMsIDB4ZDQsIDB4ZTAsIDB4MGUsIDB4M2MsCisJMHgxYSwgMHg0ZSwgMHhjMCwgMHg4MSwgMHhkMCwgMHhlOCwgMHg2YSwgMHg2MiwKKwkweDZiLCAweDNlLCAweDZmLCAweGM0LCAweGM2LCAweDMzLCAweDRlLCAweDI2LAorCTB4MjEsIDB4ZjUsIDB4MDQsIDB4ZGYsIDB4ZmEsIDB4Y2UsIDB4NDUsIDB4YWYsCisJMHhkYywgMHg1ZSwgMHgxYiwgMHhhZCwgMHg5MywgMHhjYSwgMHhmNSwgMHhjZiwKKwkweGQ3LCAweGVlLCAweDBjLCAweDVjLCAweDVlLCAweGI0LCAweGYwLCAweDkyLAorCTB4ZDIsIDB4ZjIsIDB4ZjAsIDB4YTksIDB4MWUsIDB4YWIsIDB4ODAsIDB4NjgsCisJMHg0NiwgMHhlZiwgMHhjYywgMHgyNiwgMHgwYywgMHg1YywgMHhkZCwgMHg0ZSwKKwkweDgzLCAweGI4LCAweGI5LCAweDUzLCAweDZlLCAweGY4LCAweDkzLCAweDM4LAorCTB4NjcsIDB4YTQsIDB4NDEsIDB4ODcsIDB4NzIsIDB4ZTcsIDB4N2UsIDB4ODYsCisJMHhjOSwgMHg0OSwgMHgwMCwgMHgzMywgMHhiMSwgMHgzOCwgMHg2YywgMHg3MSwKKwkweGQ3LCAweDFkLCAweDhlLCAweDYxLCAweDAxLCAweGI2LCAweDU3LCAweGE5LAorCTB4ZjEsIDB4YWMsIDB4MTUsIDB4YzIsIDB4ODMsIDB4NzcsIDB4Y2EsIDB4NjQsCisJMHhjYSwgMHg3YiwgMHg2YywgMHhhMSwgMHgxMCwgMHgxYiwgMHgxMywgMHhkMCwKKwkweGQzLCAweDllLCAweDllLCAweDEwLCAweDcwLCAweGM4LCAweDFhLCAweGJiLAorCTB4M2YsIDB4MTksIDB4ODYsIDB4YWIsIDB4MDEsIDB4MGUsIDB4ZWEsIDB4MzQsCisJMHgyMiwgMHhlYSwgMHhlMiwgMHgxNSwgMHhiNywgMHhlZCwgMHgyMSwgMHgyMSwKKwkweDc1LCAweGE1LCAweGU3LCAweDA4LCAweGExLCAweDM4LCAweGUwLCAweDkxLAorCTB4MDUsIDB4NjAsIDB4ZWEsIDB4YTcsIDB4NTAsIDB4MjcsIDB4MTgsIDB4MDcsCisJMHg5ZCwgMHhlMCwgMHgxOCwgMHgyYiwgMHhkNCwgMHgwNywgMHg1OSwgMHgwMCwKKwkweGU2LCAweDQ1LCAweDE4LCAweDJhLCAweDMwLCAweDZlLCAweGYzLCAweGI0LAorCTB4ZDAsIDB4ZWYsIDB4YTYsIDB4NWIsIDB4NzEsIDB4YTIsIDB4NWEsIDB4M2IsCisJMHg4OSwgMHg0YywgMHhhZiwgMHgzZiwgMHhjYiwgMHg5ZiwgMHgwMywgMHhmYiwKKwkweDQzLCAweDdjLCAweDZiLCAweGQzLCAweDZhLCAweGVhLCAweGNlLCAweDRhLAorCTB4NWYsIDB4NjQsIDB4YjUsIDB4NjIsIDB4ZGEsIDB4NWQsIDB4MjcsIDB4YjcsCisJMHhiOCwgMHgxMSwgMHhjYSwgMHgzMywgMHgzMCwgMHhlYywgMHg3MCwgMHhmMCwKKwkweDFiLCAweDAzLCAweDUwLCAweGZmLCAweDVlLCAweGE2LCAweDA4LCAweGRlLAorCTB4MzcsIDB4NzAsIDB4YzAsIDB4ODEsIDB4NTUsIDB4NjAsIDB4MTcsIDB4YTEsCisJMHg4NSwgMHhhZSwgMHgyNiwgMHg0NCwgMHhlNCwgMHg2NywgMHgzYywgMHg5MSwKKwkweGZkLCAweGM0LCAweDNkLCAweDk3LCAweDcyLCAweDIzLCAweGYzLCAweDNjLAorCTB4OGYsIDB4ZTAsIDB4ZTIsIDB4ZjIsIDB4MDksIDB4OTYsIDB4MTAsIDB4NjcsCisJMHhiNSwgMHhmZSwgMHhmZiwgMHgzZCwgMHg0YSwgMHhjOCwgMHg2MiwgMHgxMSwKKwkweGE1LCAweDk4LCAweGMxLCAweDJkLCAweDQwLCAweDgyLCAweDg4LCAweDhiLAorCTB4ZTUsIDB4YjAsIDB4NzUsIDB4YmYsIDB4MmYsIDB4YTgsIDB4NmEsIDB4NTUsCisJMHg0OSwgMHgyZSwgMHg5YywgMHgyOSwgMHhkMiwgMHg3YywgMHhiZiwgMHhmMywKKwkweGFhLCAweDNhLCAweDE2LCAweDRhLCAweGE0LCAweDE1LCAweGYzLCAweDQ4LAorCTB4ZGUsIDB4MzgsIDB4MTMsIDB4NDQsIDB4MjYsIDB4MDIsIDB4ZTYsIDB4ZTksCisJMHhhOCwgMHgyNCwgMHg4OSwgMHhiNSwgMHg0MywgMHg5NSwgMHhlNCwgMHg0YywKKwkweGMzLCAweGEwLCAweGRmLCAweGNjLCAweDQyLCAweGY4LCAweDhkLCAweGIwLAorCTB4M2IsIDB4ZWEsIDB4MTAsIDB4YjcsIDB4ZTEsIDB4NDAsIDB4NTQsIDB4YjksCisJMHhhMywgMHgyZCwgMHhmYiwgMHhiNCwgMHg5MSwgMHhjMCwgMHgzZSwgMHg5NCwKKwkweGYxLCAweGExLCAweDNjLCAweGJlLCAweGVmLCAweGI4LCAweDcwLCAweDU1LAorCTB4MGEsIDB4MjYsIDB4OTMsIDB4YmYsIDB4ZTYsIDB4MjEsIDB4OTIsIDB4MzIsCisJMHgzYywgMHgzOSwgMHgyNywgMHg2YSwgMHgyMywgMHg0OCwgMHgwMiwgMHgzNSwKKwkweDNjLCAweGQ0LCAweGNjLCAweDA0LCAweGMwLCAweDRlLCAweGE3LCAweDAyLAorCTB4NjMsIDB4MzcsIDB4YzIsIDB4YjgsIDB4NTYsIDB4MWQsIDB4NTcsIDB4NTcsCisJMHg0MiwgMHgwNCwgMHg4ZCwgMHhlZSwgMHhjZiwgMHg4YiwgMHhjOSwgMHhjMywKKwkweGJhLCAweDNiLCAweDE1LCAweGQ3LCAweGFmLCAweGJmLCAweDllLCAweGNkLAorCTB4NDQsIDB4Y2YsIDB4ZjAsIDB4MDAsIDB4YjcsIDB4M2EsIDB4ZmMsIDB4YTgsCisJMHgxMiwgMHhhYiwgMHgzYSwgMHg2MiwgMHgwMSwgMHgyMSwgMHg0NiwgMHhlOSwKKwkweDFlLCAweDQ4LCAweDM3LCAweGZjLCAweDEzLCAweDRkLCAweGY2LCAweDJhLAorCTB4NzIsIDB4NDAsIDB4NzUsIDB4MzgsIDB4NzEsIDB4ZjIsIDB4MTcsIDB4MjAsCisJMHgyYywgMHhkZCwgMHhjMCwgMHg0OSwgMHhiYywgMHg2MywgMHgzMywgMHhlYSwKKwkweDA2LCAweDc1LCAweDQxLCAweGU3LCAweDVjLCAweDFmLCAweGZiLCAweGY5LAorCTB4NjgsIDB4ODMsIDB4YzIsIDB4NWEsIDB4NGEsIDB4MWUsIDB4NjEsIDB4MDgsCisJMHg1NywgMHhmMywgMHgwMCwgMHhiYSwgMHg3NywgMHg5MiwgMHg2MywgMHhhNSwKKwkweGI3LCAweGZlLCAweDk3LCAweDIyLCAweGRhLCAweDVlLCAweGQzLCAweGFmLAorCTB4YmMsIDB4ODksIDB4MGQsIDB4NGMsIDB4MzcsIDB4YTksIDB4MjcsIDB4NGEsCisJMHg3ZiwgMHhkYiwgMHg4MSwgMHgzOSwgMHgxMSwgMHg4NiwgMHgxMiwgMHhmOSwKKwkweDEwLCAweDUwLCAweGU0LCAweGRiLCAweDcyLCAweGY5LCAweGFlLCAweDEwLAorCTB4N2MsIDB4ZWQsIDB4NTAsIDB4NWMsIDB4NjEsIDB4ZWIsIDB4NDIsIDB4MWUsCisJMHhhNCwgMHhmNCwgMHhmMCwgMHhmYSwgMHg0NSwgMHg0ZCwgMHg5NSwgMHgyYiwKKwkweGQ0LCAweDY3LCAweDRhLCAweGUzLCAweDhhLCAweDE1LCAweDU1LCAweDkyLAorCTB4NzcsIDB4NjQsIDB4OGMsIDB4NTEsIDB4MzgsIDB4ZjksIDB4MjYsIDB4M2UsCisJMHg2OCwgMHhlMiwgMHhhYywgMHhiYiwgMHg2NCwgMHg3NywgMHhlMiwgMHg4MiwKKwkweGE0LCAweDQyLCAweDQxLCAweDM4LCAweGEwLCAweGYwLCAweGM5LCAweGQ4LAorCTB4NmMsIDB4ZTAsIDB4ZWYsIDB4NGMsIDB4ZGEsIDB4YjQsIDB4OTIsIDB4ZWYsCisJMHgxYiwgMHhlMywgMHg5YiwgMHhjMSwgMHg0NCwgMHgzYywgMHhiOSwgMHhiNywKKwkweDM5LCAweGFjLCAweDVjLCAweDMyLCAweDM5LCAweGI0LCAweDIxLCAweDg1LAorCTB4OTMsIDB4YmMsIDB4ZjIsIDB4NTEsIDB4NDMsIDB4YjcsIDB4YWUsIDB4MWUsCisJMHg2MSwgMHg5YywgMHgzOCwgMHg5YywgMHhhYSwgMHhmZiwgMHhkZSwgMHhmYywKKwkweGJmLCAweDg1LCAweGVmLCAweDE3LCAweDM0LCAweDM2LCAweDcxLCAweDVmLAorCTB4MDQsIDB4MTYsIDB4YTYsIDB4OWUsIDB4ZmQsIDB4M2EsIDB4MDMsIDB4ZDgsCisJMHhiZiwgMHg3MSwgMHg3MCwgMHgyMCwgMHg4ZiwgMHg3YywgMHhmYiwgMHhmZiwKKwkweDYxLCAweGUwLCAweGUyLCAweDYwLCAweGE3LCAweGIxLCAweGMwLCAweGUwLAorCTB4ZDksIDB4M2YsIDB4ZGMsIDB4OGQsIDB4NGEsIDB4YTQsIDB4NTIsIDB4NjEsCisJMHhhZiwgMHg5ZCwgMHhkZiwgMHg4YSwgMHgwZCwgMHg0MSwgMHhjMCwgMHgyNSwKKwkweDY4LCAweDEyLCAweDdiLCAweGQ1LCAweGM3LCAweGRiLCAweDY4LCAweDcwLAorCTB4MmQsIDB4N2QsIDB4OTUsIDB4MTIsIDB4MDMsIDB4MjMsIDB4MGMsIDB4ZTgsCisJMHgxNCwgMHg0MSwgMHgxMSwgMHgyOCwgMHhlYywgMHg5ZCwgMHhkMywgMHgyOCwKKwkweDc3LCAweDdhLCAweDNjLCAweDkzLCAweDhlLCAweDVjLCAweDdlLCAweGIzLAorCTB4NDIsIDB4OWEsIDB4MTgsIDB4MjUsIDB4OTMsIDB4YzgsIDB4ZWEsIDB4NDMsCisJMHgxYiwgMHhiZSwgMHhkNSwgMHgyNywgMHhmMSwgMHhkNCwgMHhlMCwgMHgxZSwKKwkweGNlLCAweGM3LCAweGM3LCAweDJjLCAweDI1LCAweDM1LCAweDU4LCAweGI4LAorCTB4NmMsIDB4ZjMsIDB4YTIsIDB4YWQsIDB4ZTcsIDB4NTgsIDB4NDksIDB4NDcsCisJMHhmNywgMHhjYSwgMHhkZSwgMHg4YiwgMHg4MSwgMHhiNywgMHg3NSwgMHhmNCwKKwkweDk1LCAweGE3LCAweDVjLCAweGMzLCAweDJjLCAweDBlLCAweDFjLCAweDUyLAorCTB4OWEsIDB4YzMsIDB4MmEsIDB4MDAsIDB4MjEsIDB4YTcsIDB4NTEsIDB4NmIsCisJMHhmMCwgMHgwNSwgMHg4NywgMHg4YywgMHg0MiwgMHgxYiwgMHhjMywgMHgyZSwKKwkweGEzLCAweDc2LCAweDIyLCAweGQ1LCAweDdmLCAweDU2LCAweDEwLCAweGVmLAorCTB4OTgsIDB4ODUsIDB4NjUsIDB4ODYsIDB4NzEsIDB4ODcsIDB4ZDIsIDB4OGMsCisJMHhjMCwgMHg0NywgMHgyMCwgMHhlOCwgMHhiNSwgMHgxYywgMHhlMywgMHhkZCwKKwkweDNjLCAweDVjLCAweDAzLCAweGJiLCAweDBlLCAweDk3LCAweDNiLCAweGUxLAorCTB4NTYsIDB4OWEsIDB4ZDUsIDB4MGEsIDB4NjMsIDB4ZDUsIDB4MzMsIDB4YWYsCisJMHgzNiwgMHhjYSwgMHhjZiwgMHg4ZiwgMHgwMCwgMHgyOCwgMHhhMywgMHg0NSwKKwkweGI4LCAweGNkLCAweGRlLCAweDczLCAweGQ0LCAweGZhLCAweDJkLCAweDZmLAorCTB4ZGIsIDB4OTMsIDB4YWEsIDB4ZGQsIDB4N2YsIDB4ZDIsIDB4MjIsIDB4OWMsCisJMHg5NiwgMHg0OCwgMHgxZSwgMHhhOCwgMHg2MywgMHhiZSwgMHhiYywgMHgwZCwKKwkweDE0LCAweDNjLCAweDJlLCAweDExLCAweDFmLCAweGQyLCAweGY0LCAweDU3LAorCTB4YjMsIDB4NDcsIDB4ZjgsIDB4YTYsIDB4MWIsIDB4YzMsIDB4YTcsIDB4OTUsCisJMHgyZCwgMHhkNCwgMHhjYSwgMHhiOCwgMHgwZCwgMHhmYiwgMHgwNiwgMHg4NSwKKwkweGRhLCAweDYzLCAweGYwLCAweDNlLCAweDlkLCAweDVlLCAweGVlLCAweGNlLAorCTB4ZWQsIDB4NzQsIDB4MWQsIDB4MmMsIDB4OTcsIDB4M2YsIDB4NzEsIDB4OTUsCisJMHgxMiwgMHgwMywgMHhjNSwgMHg5MiwgMHg0NiwgMHg4NCwgMHgxYiwgMHgwNywKKwkweGU2LCAweGI0LCAweDFkLCAweDNhLCAweGYxLCAweDg5LCAweDkwLCAweDUwLAorCTB4MTAsIDB4MjksIDB4MzQsIDB4YzAsIDB4OTAsIDB4YmUsIDB4NGEsIDB4YTksCisJMHgwZCwgMHhiMCwgMHg3YiwgMHhmYiwgMHgzNSwgMHhlZSwgMHg0ZSwgMHgzNCwKKwkweGVjLCAweDVhLCAweDU4LCAweGJjLCAweGI4LCAweGRhLCAweDM4LCAweDg4LAorCTB4OGMsIDB4NzQsIDB4MWUsIDB4YzksIDB4YWIsIDB4NzgsIDB4MmUsIDB4MmEsCisJMHgxNywgMHg4YSwgMHg0MywgMHgzZCwgMHhhMSwgMHgyYSwgMHg0MSwgMHhiNSwKKwkweGQ2LCAweGU4LCAweDViLCAweGM1LCAweDRhLCAweDFjLCAweDNjLCAweDlmLAorCTB4OGQsIDB4M2EsIDB4NjksIDB4ODgsIDB4ZjgsIDB4ODAsIDB4ZDIsIDB4MTEsCisJMHhmYywgMHg3ZSwgMHg4MCwgMHg4ZSwgMHg3ZiwgMHg4NSwgMHg2NCwgMHg5YywKKwkweDQ2LCAweDU4LCAweGM4LCAweDQ4LCAweDk4LCAweDRiLCAweGY1LCAweDczLAorCTB4M2YsIDB4NDksIDB4Y2UsIDB4NTMsIDB4MmMsIDB4ZDUsIDB4ZmMsIDB4MzMsCisJMHhmMSwgMHg2ZiwgMHhkOCwgMHhlOSwgMHgyZSwgMHg3MCwgMHgyZSwgMHhkYywKKwkweGU1LCAweDQzLCAweDgwLCAweDM4LCAweGYyLCAweDg3LCAweGVkLCAweDg1LAorCTB4ZTQsIDB4M2UsIDB4NDUsIDB4MTQsIDB4MjAsIDB4Y2YsIDB4YTAsIDB4NjEsCisJMHg0ZiwgMHhlOCwgMHhkNywgMHg1YiwgMHhiMywgMHgwZCwgMHgwZSwgMHg0ZSwKKwkweDRkLCAweGNlLCAweGJlLCAweGJhLCAweGFhLCAweDkwLCAweDA5LCAweGNiLAorCTB4NGIsIDB4NWQsIDB4MDgsIDB4ZmYsIDB4NTIsIDB4ZDUsIDB4MjMsIDB4YmMsCisJMHhhZCwgMHg4ZCwgMHhkMywgMHgwNiwgMHg0YSwgMHhhMCwgMHg1MSwgMHg1NiwKKwkweGE3LCAweGQ4LCAweDMzLCAweGFiLCAweGJjLCAweGQwLCAweGRmLCAweDkyLAorCTB4ODcsIDB4MjAsIDB4MmQsIDB4N2IsIDB4NWUsIDB4ZmEsIDB4MzAsIDB4YTcsCisJMHgwNiwgMHgwNiwgMHhlNSwgMHg0ZiwgMHgyYywgMHhiNSwgMHg2MSwgMHhkNywKKwkweDU0LCAweGQzLCAweGRmLCAweGQwLCAweDBhLCAweGIwLCAweDA2LCAweGNlLAorCTB4ZjYsIDB4ODYsIDB4YjcsIDB4OGUsIDB4YWEsIDB4N2IsIDB4NzgsIDB4ZDUsCisJMHhiOSwgMHhlYiwgMHgwNywgMHhhYywgMHg1ZiwgMHhjNSwgMHhkMiwgMHg4YywKKwkweDQwLCAweGUwLCAweDdmLCAweDk4LCAweGQ0LCAweGU1LCAweDRiLCAweGNhLAorCTB4ZmIsIDB4NDcsIDB4ZWYsIDB4ZWYsIDB4YjksIDB4NGQsIDB4NmQsIDB4OGYsCisJMHg4MiwgMHg2OCwgMHg3NCwgMHg4NCwgMHhlMCwgMHgwYSwgMHg5MywgMHgwZiwKKwkweGIyLCAweDAxLCAweGE5LCAweDlmLCAweDY4LCAweDZhLCAweGU4LCAweGY3LAorCTB4ZmIsIDB4MGIsIDB4ZGUsIDB4MTcsIDB4ZTAsIDB4MzAsIDB4MzgsIDB4NTEsCisJMHhiYywgMHgwNywgMHhiOCwgMHgyYywgMHg5MSwgMHgwZiwgMHhjMSwgMHgwZSwKKwkweGE2LCAweGY5LCAweGYwLCAweGQ1LCAweDQ4LCAweDc2LCAweDhhLCAweGRlLAorCTB4NzQsIDB4ZTMsIDB4MzAsIDB4NjUsIDB4NTYsIDB4YjMsIDB4NWMsIDB4ZTIsCisJMHg4OSwgMHg4ZCwgMHhkYSwgMHg4MCwgMHhhZCwgMHgwZiwgMHgyMiwgMHhmYiwKKwkweDI0LCAweDFkLCAweDE2LCAweGRkLCAweDM0LCAweDRiLCAweDkwLCAweDU4LAorCTB4NGUsIDB4MGMsIDB4MTMsIDB4MjgsIDB4Y2YsIDB4MWQsIDB4YTQsIDB4YWEsCisJMHhiNywgMHhmMywgMHhiMSwgMHg2NiwgMHhhZCwgMHgzYiwgMHhjZiwgMHg3OSwKKwkweDEyLCAweDA0LCAweGQ3LCAweDc5LCAweGQ5LCAweDVmLCAweGRmLCAweDg5LAorCTB4YjIsIDB4NWIsIDB4YTcsIDB4OWEsIDB4MjYsIDB4MWUsIDB4NjcsIDB4NDYsCisJMHg3YywgMHg2NiwgMHg5NSwgMHg2NywgMHhlNiwgMHg0NSwgMHg4YiwgMHgxZiwKKwkweDY1LCAweDc5LCAweDlmLCAweDZkLCAweDExLCAweDgxLCAweDE3LCAweDBkLAorCTB4MTEsIDB4YjAsIDB4NWMsIDB4YjQsIDB4YzcsIDB4MjcsIDB4ODcsIDB4YWIsCisJMHg1ZCwgMHgwYSwgMHgxOCwgMHhhZSwgMHg0ZSwgMHgwNiwgMHhhMywgMHgzZCwKKwkweGM3LCAweGIwLCAweDIyLCAweGJhLCAweDAzLCAweGE0LCAweDBmLCAweGU1LAorCTB4MWMsIDB4NzIsIDB4MmEsIDB4MDQsIDB4Y2UsIDB4ODMsIDB4ZTksIDB4ZjMsCisJMHhkNywgMHhjOSwgMHg2NywgMHg2YywgMHgxZSwgMHg2YiwgMHgzYywgMHg5YiwKKwkweDBiLCAweDVlLCAweDZhLCAweGE2LCAweDc5LCAweDBhLCAweGYxLCAweGJlLAorCTB4ZDcsIDB4YjQsIDB4NmYsIDB4NDUsIDB4MWUsIDB4ZmIsIDB4NzgsIDB4OTcsCisJMHhhZiwgMHgzNCwgMHg3NiwgMHg5NSwgMHg1MiwgMHhmNywgMHgzZCwgMHg1ZCwKKwkweDA3LCAweDI4LCAweDU3LCAweDljLCAweDRhLCAweDBmLCAweGNmLCAweDBiLAorCTB4MWIsIDB4YzQsIDB4YzIsIDB4NzIsIDB4ZDcsIDB4NzIsIDB4MzgsIDB4OWIsCisJMHhlYSwgMHhlYiwgMHhlZSwgMHhhZSwgMHgzNCwgMHhjOCwgMHgwMSwgMHhkNywKKwkweGE1LCAweGUzLCAweGNlLCAweDQxLCAweGFkLCAweDAyLCAweDYwLCAweDIzLAorCTB4MTgsIDB4MzYsIDB4YmEsIDB4MTcsIDB4ZmEsIDB4Y2YsIDB4ZTQsIDB4ZGEsCisJMHhkYywgMHhmYywgMHg4MiwgMHhkYywgMHg3YywgMHgxMSwgMHhmNCwgMHhiOCwKKwkweDUyLCAweDVkLCAweGY3LCAweDJmLCAweGM4LCAweGZlLCAweDRhLCAweGU2LAorCTB4YjksIDB4YWYsIDB4NGIsIDB4MTcsIDB4MTgsIDB4OTEsIDB4YzIsIDB4ZmUsCisJMHhkNywgMHgzYSwgMHg3NywgMHgwYywgMHhhMCwgMHg0MywgMHg5YywgMHg2ZiwKKwkweDEzLCAweDA2LCAweGJlLCAweDZlLCAweGUwLCAweDFhLCAweDNjLCAweGYzLAorCTB4ZjUsIDB4Y2MsIDB4NzgsIDB4ZmIsIDB4NWQsIDB4ZDUsIDB4ZGEsIDB4YjcsCisJMHg1OCwgMHhlYSwgMHg4NiwgMHg0MiwgMHg2YiwgMHgzMiwgMHhmZiwgMHhiMiwKKwkweGUyLCAweGVlLCAweDAzLCAweDFmLCAweGY0LCAweGVmLCAweGRiLCAweDUzLAorCTB4NzksIDB4ZDUsIDB4NGUsIDB4YWYsIDB4NjAsIDB4OGUsIDB4MDIsIDB4YzIsCisJMHhjYywgMHgzOSwgMHg5NywgMHg3YiwgMHhmZCwgMHhhMSwgMHhmOCwgMHg3YSwKKwkweDI2LCAweGU4LCAweDU1LCAweGQ2LCAweGE0LCAweDhiLCAweGEwLCAweDFiLAorCTB4MmQsIDB4NjMsIDB4YWEsIDB4NzMsIDB4NzEsIDB4NmUsIDB4YmYsIDB4OGIsCisJMHgzYiwgMHhlMywgMHgxYiwgMHgwZCwgMHhiYiwgMHgyZSwgMHg0NCwgMHgwOSwKKwkweDY0LCAweGFjLCAweGM3LCAweDllLCAweGI1LCAweGM2LCAweDc3LCAweGIwLAorCTB4NzksIDB4YjMsIDB4YWEsIDB4ZmMsIDB4NjcsIDB4NTcsIDB4OWEsIDB4NTAsCisJMHg4MSwgMHgzNywgMHgxNCwgMHg3YywgMHhkNywgMHhhMCwgMHhkNCwgMHg2YSwKKwkweDc5LCAweDg0LCAweDUxLCAweDBlLCAweDk1LCAweDBhLCAweDMwLCAweGEzLAorCTB4NjAsIDB4NTUsIDB4NDgsIDB4MDUsIDB4MTYsIDB4YWUsIDB4NDMsIDB4OTAsCisJMHhkYywgMHg4ZSwgMHgwOSwgMHhiZSwgMHg3OSwgMHhmNiwgMHg5MCwgMHg3NCwKKwkweGY4LCAweDIwLCAweDk2LCAweDRkLCAweGE3LCAweGY1LCAweDFhLCAweDJiLAorCTB4YzcsIDB4MTUsIDB4OWQsIDB4MTgsIDB4ZjcsIDB4OTQsIDB4ODcsIDB4ZjcsCisJMHhmNCwgMHhmYiwgMHgwZCwgMHg2MSwgMHhiNiwgMHhkNywgMHhiZSwgMHgxMCwKKwkweDhlLCAweDQ3LCAweDNjLCAweDEwLCAweDQ0LCAweDkwLCAweDUyLCAweDIxLAorCTB4ODMsIDB4YzAsIDB4ZjUsIDB4OTksIDB4YWEsIDB4YmMsIDB4ZjYsIDB4NTUsCisJMHhhZSwgMHhmNSwgMHhiMiwgMHhhNCwgMHhjZCwgMHg0ZCwgMHhiOSwgMHgzOCwKKwkweDZjLCAweGJjLCAweDgwLCAweGMzLCAweGFkLCAweGY0LCAweDQ2LCAweDMxLAorCTB4MDEsIDB4NTgsIDB4MmQsIDB4ODgsIDB4NTcsIDB4YzMsIDB4MjMsIDB4ZDEsCisJMHg2NCwgMHhjOSwgMHhhMywgMHgyMSwgMHg2YiwgMHg4YiwgMHg4YSwgMHgyMywKKwkweDJjLCAweDRmLCAweGE5LCAweGNkLCAweDY3LCAweGZhLCAweDc3LCAweGFkLAorCTB4YTMsIDB4MTYsIDB4YTIsIDB4ZTUsIDB4MTksIDB4MTQsIDB4NzAsIDB4NDEsCisJMHg1YiwgMHhkYSwgMHgxNCwgMHhkZSwgMHhlMywgMHhlNSwgMHhjMSwgMHgxNSwKKwkweGI0LCAweDc3LCAweGE0LCAweDliLCAweGI4LCAweGIxLCAweDI4LCAweDUxLAorCTB4MzAsIDB4YjQsIDB4ZjEsIDB4ZjMsIDB4ZjgsIDB4NmQsIDB4ZDAsIDB4YzMsCisJMHg4YywgMHg0YywgMHg3NiwgMHhiMCwgMHg5YSwgMHhkZiwgMHhjOCwgMHhiZSwKKwkweGY4LCAweDRhLCAweDYxLCAweDZlLCAweDNlLCAweGQ2LCAweDNjLCAweGU4LAorCTB4ZGUsIDB4NTYsIDB4YTAsIDB4OWMsIDB4MjUsIDB4YmUsIDB4Y2UsIDB4OTMsCisJMHgxZiwgMHg4OCwgMHhmYiwgMHg5YSwgMHgxYSwgMHhlMiwgMHhmZiwgMHg4OCwKKwkweGFkLCAweDEwLCAweGNiLCAweDZjLCAweGQ2LCAweGU3LCAweDM5LCAweDBiLAorCTB4ZTUsIDB4MWEsIDB4MDYsIDB4MDUsIDB4NjQsIDB4NWIsIDB4MGEsIDB4ZGYsCisJMHgyMiwgMHg1OCwgMHhkNywgMHhmYiwgMHg4OCwgMHgxMiwgMHhkZCwgMHhiNywKKwkweDUyLCAweDNhLCAweGM5LCAweGJmLCAweDQ5LCAweGRmLCAweDhjLCAweDg3LAorCTB4OWYsIDB4ODQsIDB4YjUsIDB4MGEsIDB4ZjYsIDB4MDAsIDB4NTIsIDB4YWUsCisJMHg2NywgMHgxMiwgMHgxYSwgMHg4YywgMHg3MSwgMHgxNSwgMHhmNSwgMHhhMSwKKwkweDEzLCAweDM5LCAweGYwLCAweDkxLCAweDdlLCAweDg4LCAweDdjLCAweGIzLAorCTB4OTUsIDB4NTAsIDB4MDIsIDB4YTYsIDB4NjMsIDB4YjUsIDB4NjQsIDB4ZmIsCisJMHg5MCwgMHg4NywgMHg2MSwgMHhlMiwgMHgyNywgMHhhZiwgMHgxMSwgMHgwYywKKwkweDczLCAweDgzLCAweGVmLCAweGE5LCAweDI4LCAweGZlLCAweGM4LCAweDg1LAorCTB4MWEsIDB4M2EsIDB4ZGUsIDB4ZjIsIDB4ZTUsIDB4MjUsIDB4NjQsIDB4NmQsCisJMHhhYSwgMHg0MSwgMHg0YywgMHg4MCwgMHgyZSwgMHg4NCwgMHhmZiwgMHhjMSwKKwkweGMwLCAweDU0LCAweDBjLCAweDI5LCAweDFiLCAweGEzLCAweDA3LCAweDdjLAorCTB4MzMsIDB4NGMsIDB4MTAsIDB4ZjYsIDB4NmYsIDB4NzksIDB4ZGYsIDB4ZDMsCisJMHhmMCwgMHgyNCwgMHg1NywgMHhmMSwgMHg2MCwgMHhlMSwgMHhmMCwgMHhiZCwKKwkweGM0LCAweDFmLCAweGY0LCAweDY3LCAweGQyLCAweGQzLCAweGNjLCAweDZhLAorCTB4MDcsIDB4NzIsIDB4NDQsIDB4MTYsIDB4ODUsIDB4NDYsIDB4ZDAsIDB4NzMsCisJMHg4NywgMHhhOSwgMHhjNywgMHgyZiwgMHhkMSwgMHhmNSwgMHhlYywgMHhlMywKKwkweDI4LCAweGEzLCAweDkzLCAweDRmLCAweGQ3LCAweDc2LCAweGMxLCAweDNjLAorCTB4MGQsIDB4MTMsIDB4MzMsIDB4Y2YsIDB4NWIsIDB4YmQsIDB4NmEsIDB4NTIsCisJMHg0ZSwgMHhlZSwgMHhjOCwgMHg1ZSwgMHhhMSwgMHg1OCwgMHg0YSwgMHgwOCwKKwkweDgxLCAweGQ5LCAweDIzLCAweGNjLCAweGZiLCAweDFjLCAweGIyLCAweGQ4LAorCTB4YTMsIDB4ZTQsIDB4NTMsIDB4ZmUsIDB4ZjQsIDB4NGIsIDB4NDgsIDB4YzEsCisJMHgyMCwgMHhhNCwgMHg5NywgMHhmOCwgMHgzOCwgMHhhMywgMHg2OSwgMHhjMSwKKwkweDExLCAweGYwLCAweGExLCAweDNiLCAweGE5LCAweDlhLCAweDEyLCAweDYxLAorCTB4ZTgsIDB4OGQsIDB4OTksIDB4NDQsIDB4M2YsIDB4OTQsIDB4NzIsIDB4ODIsCisJMHgxOSwgMHg5NiwgMHg2MiwgMHhiMCwgMHhhNiwgMHg2NCwgMHgwNSwgMHgxOSwKKwkweDhmLCAweGQ2LCAweDVkLCAweDA1LCAweGJmLCAweDc5LCAweDllLCAweDlkLAorCTB4ZTQsIDB4OTMsIDB4NGMsIDB4YWQsIDB4NjEsIDB4OGMsIDB4MTgsIDB4ZGEsCisJMHhiNiwgMHgyZSwgMHhiMywgMHhjYSwgMHgxNCwgMHg0ZCwgMHg1MywgMHhhNCwKKwkweDk3LCAweDI3LCAweDEwLCAweDU2LCAweGEyLCAweDY3LCAweDVhLCAweDVhLAorCTB4NWUsIDB4MTMsIDB4YzAsIDB4ZGIsIDB4YTcsIDB4OWYsIDB4NDUsIDB4NWIsCisJMHhlYiwgMHgxYSwgMHgxNCwgMHgwYywgMHg4YywgMHgzOCwgMHg1ZSwgMHg3NywKKwkweDlhLCAweGVjLCAweDc1LCAweDY4LCAweDkzLCAweDY1LCAweDAyLCAweDljLAorCTB4ZmIsIDB4NjIsIDB4NjAsIDB4NDksIDB4ZGQsIDB4YjIsIDB4MmEsIDB4NjcsCisJMHg4NiwgMHhlMywgMHg4YSwgMHg3ZCwgMHg4YywgMHg0NiwgMHg3OCwgMHg4MSwKKwkweDYwLCAweDY5LCAweGYyLCAweDNmLCAweDc0LCAweDExLCAweDM1LCAweGZmLAorCTB4NzcsIDB4YTMsIDB4NjYsIDB4MjAsIDB4ZmMsIDB4OTgsIDB4NGEsIDB4MzUsCisJMHg3YSwgMHg1MiwgMHhlNCwgMHg5MCwgMHgxMywgMHg4MCwgMHhiOSwgMHhhNiwKKwkweDczLCAweDdhLCAweDdkLCAweDY2LCAweDZlLCAweDZiLCAweGI2LCAweDQzLAorCTB4MTAsIDB4ZDUsIDB4OTEsIDB4MmIsIDB4NjYsIDB4ZGQsIDB4ODksIDB4ODcsCisJMHhlMywgMHg4YywgMHg1OCwgMHg1MywgMHgyZiwgMHg0MCwgMHg3NCwgMHg0NSwKKwkweDFiLCAweDc3LCAweDdhLCAweGE0LCAweDQ0LCAweDE5LCAweDc4LCAweGJhLAorCTB4ODcsIDB4MTAsIDB4NDEsIDB4MzEsIDB4MzIsIDB4NWYsIDB4ODcsIDB4NjgsCisJMHhkZSwgMHg0MywgMHg0YSwgMHhlZiwgMHgzMywgMHhiMywgMHgxMSwgMHg4MywKKwkweGE5LCAweGMyLCAweDZmLCAweDhkLCAweDM0LCAweGUyLCAweDk1LCAweDg0LAorCTB4M2EsIDB4NGYsIDB4NmYsIDB4OGMsIDB4MzEsIDB4MWQsIDB4YjYsIDB4ZjUsCisJMHg5NSwgMHgwZCwgMHgwMSwgMHgxMSwgMHgyMCwgMHhkZiwgMHg3MiwgMHhmMywKKwkweDNmLCAweDlhLCAweDMzLCAweGFhLCAweGIxLCAweDA2LCAweDZhLCAweDYzLAorCTB4NDcsIDB4OTEsIDB4MDEsIDB4ZGYsIDB4YjMsIDB4NTQsIDB4MzYsIDB4ZmQsCisJMHgwNiwgMHgyZCwgMHhiOCwgMHgwOCwgMHhlMywgMHhkMywgMHg2NSwgMHhhYywKKwkweDY2LCAweDAzLCAweGVlLCAweGE0LCAweDYzLCAweGJkLCAweGQ0LCAweGNlLAorCTB4YmQsIDB4NzksIDB4YTcsIDB4NDgsIDB4MzgsIDB4YzUsIDB4N2QsIDB4YjUsCisJMHg3MSwgMHg5YSwgMHgzYywgMHgxMSwgMHg3YywgMHg2YywgMHhlMiwgMHg1NCwKKwkweDAyLCAweDVkLCAweDQyLCAweGFiLCAweDI1LCAweDkzLCAweDY2LCAweDAxLAorCTB4MzcsIDB4NzgsIDB4MzUsIDB4NGEsIDB4OGMsIDB4MTksIDB4NGQsIDB4MDAsCisJMHg3NSwgMHg0ZiwgMHhjYywgMHhjMCwgMHgyNiwgMHg4MiwgMHhjMSwgMHgzNSwKKwkweDhjLCAweGM3LCAweGMyLCAweDU5LCAweDAxLCAweDNlLCAweDk4LCAweDIyLAorCTB4ODgsIDB4OWMsIDB4OTAsIDB4NzUsIDB4MDUsIDB4MzMsIDB4MDcsIDB4YjksCisJMHgzOSwgMHg4MSwgMHgzOCwgMHg1OCwgMHgxMCwgMHgyOSwgMHhjZiwgMHhjOCwKKwkweDk4LCAweGIyLCAweDAzLCAweGQ3LCAweDViLCAweGIzLCAweDE4LCAweGJhLAorCTB4MzQsIDB4MGMsIDB4OWYsIDB4YWIsIDB4ZDcsIDB4ZWQsIDB4MjksIDB4ODIsCisJMHg0MSwgMHhlMCwgMHgyMCwgMHg5NywgMHg1NywgMHg5MiwgMHhiMiwgMHhiOCwKKwkweDEwLCAweDJkLCAweDBiLCAweGEyLCAweGM1LCAweDhmLCAweDkwLCAweDZmLAorCTB4ZWQsIDB4MTIsIDB4NTYsIDB4MjUsIDB4YmUsIDB4ZmQsIDB4NzUsIDB4ZjcsCisJMHhiNiwgMHhmOCwgMHg0MCwgMHg2NywgMHgzOSwgMHgxMSwgMHhmYSwgMHgxNSwKKwkweGFlLCAweDZhLCAweDU0LCAweDVmLCAweDMyLCAweDJiLCAweGY4LCAweDQ4LAorCTB4NTUsIDB4YmUsIDB4ODYsIDB4MmYsIDB4NjksIDB4NDgsIDB4NWIsIDB4NWQsCisJMHg0ZCwgMHhiNywgMHgzNSwgMHhhYSwgMHhiNiwgMHg5MSwgMHg4OCwgMHgxOSwKKwkweDk2LCAweDFjLCAweDY4LCAweGY2LCAweDg1LCAweDllLCAweGIzLCAweGIyLAorCTB4YTMsIDB4MzIsIDB4ZDQsIDB4NTIsIDB4NzAsIDB4YjcsIDB4NjIsIDB4ZTMsCisJMHgxNCwgMHhiNiwgMHg3OCwgMHg1ZiwgMHgxYiwgMHgxZCwgMHgwNCwgMHg5YywKKwkweDI2LCAweDBjLCAweDMzLCAweDk0LCAweGIxLCAweDk3LCAweDA4LCAweGRiLAorCTB4MGIsIDB4MzksIDB4MjksIDB4ZDQsIDB4YmMsIDB4NmQsIDB4ZGYsIDB4MDIsCisJMHhjNiwgMHg5OSwgMHhhYiwgMHg5OSwgMHgzMiwgMHhlNSwgMHhjZSwgMHg1MSwKKwkweDRmLCAweGFlLCAweGI4LCAweDhiLCAweGUwLCAweGFmLCAweDA3LCAweGM0LAorCTB4ZjksIDB4NDEsIDB4N2MsIDB4NTksIDB4YTAsIDB4YWMsIDB4NzQsIDB4NGQsCisJMHg3ZSwgMHg0MywgMHg3NywgMHg5YywgMHgwNiwgMHg0OSwgMHg3OSwgMHg4YSwKKwkweDE0LCAweDczLCAweDkzLCAweGE4LCAweDViLCAweDFiLCAweDM0LCAweDI5LAorCTB4NzgsIDB4MDQsIDB4MmYsIDB4ZDcsIDB4MWYsIDB4MTMsIDB4OTAsIDB4ZTAsCisJMHhkZCwgMHgzYiwgMHg0MiwgMHg2YiwgMHg3OSwgMHg2ZSwgMHg1MiwgMHhjNywKKwkweDBmLCAweDM4LCAweGRhLCAweDAxLCAweDJjLCAweDhkLCAweGU2LCAweDk0LAorCTB4NWQsIDB4NTksIDB4MjcsIDB4MWQsIDB4MTAsIDB4NGUsIDB4MTEsIDB4MzYsCisJMHhmYiwgMHg1MywgMHgxNiwgMHgwNSwgMHgyNSwgMHhmMiwgMHg2NCwgMHhkOCwKKwkweGY5LCAweGNkLCAweDVjLCAweGZlLCAweGI0LCAweDE4LCAweDQ0LCAweDgwLAorCTB4MTAsIDB4YmMsIDB4M2QsIDB4ZjMsIDB4MWQsIDB4NWEsIDB4ZjAsIDB4YzEsCisJMHhjMywgMHg1NSwgMHhmZiwgMHg0MSwgMHgzZSwgMHhlMywgMHhlZiwgMHg0NCwKKwkweGIyLCAweGMwLCAweDAxLCAweDE4LCAweGEyLCAweDQ5LCAweDg4LCAweDc4LAorCTB4MGQsIDB4NGMsIDB4YzgsIDB4NzMsIDB4Y2YsIDB4MzAsIDB4ODUsIDB4M2EsCisJMHg4OCwgMHg5MCwgMHgwMSwgMHhjZiwgMHg2OSwgMHg1MywgMHhhMywgMHgxOCwKKwkweDNmLCAweGQ2LCAweGU3LCAweDk0LCAweDE0LCAweGE3LCAweGFlLCAweGNkLAorCTB4NmYsIDB4MTEsIDB4NzIsIDB4ZmUsIDB4MmIsIDB4YjAsIDB4ODEsIDB4NTMsCisJMHhlYSwgMHg2NywgMHhkNiwgMHhlNCwgMHhjYSwgMHg0MiwgMHhhMCwgMHhmOSwKKwkweGIxLCAweGQ0LCAweGI1LCAweDNiLCAweGM5LCAweGYwLCAweDM2LCAweGMxLAorCTB4MWMsIDB4ZjQsIDB4YjEsIDB4ZjYsIDB4ODQsIDB4ZDAsIDB4ODYsIDB4NmMsCisJMHg3NiwgMHg5YSwgMHgwMywgMHhjMiwgMHhiNiwgMHgyZSwgMHg5YSwgMHg0NiwKKwkweGY1LCAweDVmLCAweDJjLCAweDM4LCAweGFjLCAweGFkLCAweDZmLCAweDJlLAorCTB4N2EsIDB4MTgsIDB4MmQsIDB4MjIsIDB4OTUsIDB4NWUsIDB4NWUsIDB4YzksCisJMHg3YSwgMHgwYSwgMHg1NiwgMHhlMSwgMHhjNywgMHgxNSwgMHhmZCwgMHhiZiwKKwkweGZmLCAweGY3LCAweDdlLCAweDg1LCAweDIwLCAweGE5LCAweDhhLCAweDljLAorCTB4YTksIDB4N2QsIDB4ZTgsIDB4ZWQsIDB4ZmMsIDB4N2YsIDB4YmIsIDB4ZjAsCisJMHgwNSwgMHgzZiwgMHhjZSwgMHg0ZiwgMHg0YywgMHhlZSwgMHhhNCwgMHhhMCwKKwkweGNjLCAweDljLCAweDYyLCAweDFlLCAweGQ2LCAweGQwLCAweDMwLCAweDM3LAorCTB4YjgsIDB4OTgsIDB4NTYsIDB4MWQsIDB4YWEsIDB4ZDYsIDB4NWUsIDB4NzMsCisJMHgxMiwgMHhlNCwgMHg4OCwgMHg4MiwgMHg0OCwgMHg2NCwgMHgwNiwgMHhkNywKKwkweDJhLCAweDMxLCAweDUwLCAweDdiLCAweDEwLCAweDE3LCAweGI4LCAweDRjLAorCTB4NWEsIDB4OGQsIDB4ZjEsIDB4ZmMsIDB4ZjEsIDB4MzMsIDB4M2IsIDB4OTgsCisJMHg0MiwgMHgxOCwgMHg1YiwgMHgzNSwgMHg3OCwgMHhjYSwgMHg4ZSwgMHg0MSwKKwkweDUyLCAweGFlLCAweDZkLCAweGUxLCAweGEyLCAweDlkLCAweDViLCAweGJkLAorCTB4ZjMsIDB4NWYsIDB4NDksIDB4YzEsIDB4MjcsIDB4MDYsIDB4YzEsIDB4YWYsCisJMHhjMCwgMHhhMywgMHg5ZCwgMHhmMywgMHgxYywgMHg4ZSwgMHg5MCwgMHg4YSwKKwkweGIwLCAweDY5LCAweGIwLCAweGM1LCAweDExLCAweDBjLCAweDkxLCAweDE0LAorCTB4MWYsIDB4NWUsIDB4MTAsIDB4ZTEsIDB4MWQsIDB4MTQsIDB4MzAsIDB4NTQsCisJMHgxZSwgMHgxNywgMHgzZCwgMHgzMSwgMHg3YiwgMHhiZiwgMHgyZiwgMHg5ZCwKKwkweDZkLCAweDYzLCAweDMyLCAweGYwLCAweDlkLCAweDlmLCAweDk1LCAweDNkLAorCTB4MGIsIDB4ZDIsIDB4NGQsIDB4MTAsIDB4ZTIsIDB4M2YsIDB4NjcsIDB4NjksCisJMHg0MywgMHg5YSwgMHg0YSwgMHgyYywgMHg1NCwgMHg3MSwgMHhhOCwgMHhhMCwKKwkweDllLCAweDlmLCAweDEwLCAweGFmLCAweDFiLCAweGNlLCAweDk5LCAweGUzLAorCTB4MjUsIDB4MzIsIDB4MTAsIDB4NTQsIDB4ODAsIDB4ZmUsIDB4ZGEsIDB4NTcsCisJMHhkMCwgMHhiMiwgMHg5MiwgMHg3ZiwgMHhiYiwgMHg1ZiwgMHhlNywgMHg0ZCwKKwkweDFiLCAweDNkLCAweDQ2LCAweDRkLCAweGU0LCAweDRjLCAweGQ2LCAweGFmLAorCTB4MWEsIDB4MzIsIDB4MTIsIDB4NDAsIDB4YjgsIDB4ODQsIDB4OGUsIDB4ZTQsCisJMHg4MCwgMHhjZSwgMHg3ZSwgMHhjMSwgMHgxMywgMHg4YiwgMHhiMCwgMHhiNywKKwkweDZmLCAweDI0LCAweGJhLCAweDg1LCAweDUwLCAweDgzLCAweGMzLCAweGNmLAorCTB4MTksIDB4YjMsIDB4ZjAsIDB4YzcsIDB4ZWUsIDB4NjgsIDB4YmUsIDB4OWUsCisJMHg2ZCwgMHhiOSwgMHhmYiwgMHhkNSwgMHgyOSwgMHhjZSwgMHg4MiwgMHhjZCwKKwkweDY5LCAweDE2LCAweDY4LCAweDZiLCAweDZhLCAweGY0LCAweDAyLCAweDMyLAorCTB4Y2UsIDB4NjAsIDB4MzcsIDB4MGMsIDB4YjksIDB4MzgsIDB4OTIsIDB4OWMsCisJMHg0MiwgMHhhOSwgMHgwYiwgMHg1MywgMHg5NiwgMHhmZSwgMHgzOSwgMHhjMSwKKwkweDI0LCAweDY1LCAweDliLCAweGNkLCAweGU3LCAweDhkLCAweDM2LCAweDA3LAorCTB4OWYsIDB4MWQsIDB4MzUsIDB4OGUsIDB4ZGMsIDB4NGMsIDB4YjUsIDB4NjgsCisJMHhjNSwgMHhmZCwgMHg0NCwgMHgxOSwgMHhmMiwgMHg2YywgMHg1OSwgMHgxYywKKwkweGIxLCAweDBiLCAweDM1LCAweDQ4LCAweDg2LCAweDFhLCAweDA1LCAweDIyLAorCTB4MDMsIDB4MGMsIDB4MGMsIDB4YTIsIDB4OTIsIDB4OTAsIDB4MzUsIDB4ZmIsCisJMHgzNywgMHg5NCwgMHhjNywgMHgxNSwgMHg4NCwgMHhhZSwgMHhlOCwgMHgwNSwKKwkweGEwLCAweGY3LCAweDMwLCAweDExLCAweDVjLCAweGU0LCAweDVkLCAweDNlLAorCTB4MTIsIDB4NTQsIDB4ODAsIDB4NTQsIDB4NmIsIDB4MDksIDB4OGMsIDB4Y2UsCisJMHg4MCwgMHg1ZSwgMHhhNywgMHhjOCwgMHg2YSwgMHgwYywgMHg1NiwgMHhlMSwKKwkweDE4LCAweDdkLCAweGM5LCAweDM5LCAweGMxLCAweGVmLCAweGUzLCAweDI1LAorCTB4YTAsIDB4OGIsIDB4MmYsIDB4NjAsIDB4M2EsIDB4NDMsIDB4MzksIDB4YTYsCisJMHgyOCwgMHgyOCwgMHg3YiwgMHg0YywgMHg3NywgMHhkNCwgMHg0OSwgMHg2MSwKKwkweDQ2LCAweGU5LCAweDFiLCAweDQ1LCAweGQ2LCAweGIxLCAweDU2LCAweGUxLAorCTB4N2QsIDB4MzQsIDB4Y2QsIDB4MDYsIDB4YjYsIDB4NjcsIDB4OGQsIDB4N2QsCisJMHg3YSwgMHhlMiwgMHhiZSwgMHg2OCwgMHgzNSwgMHhhNiwgMHg3OCwgMHhlNSwKKwkweDQ3LCAweDQ4LCAweGI3LCAweGM3LCAweGRlLCAweGNkLCAweGM5LCAweDA1LAorCTB4YjQsIDB4ZTcsIDB4NTAsIDB4NDgsIDB4ZTEsIDB4NGIsIDB4ZmUsIDB4NzYsCisJMHg3NywgMHhjNiwgMHhmNywgMHg1ZiwgMHhjYiwgMHhjMiwgMHhhOCwgMHhkNywKKwkweGQ2LCAweDhhLCAweGU1LCAweDQ5LCAweGQ5LCAweGNhLCAweDQ1LCAweGY0LAorCTB4ZGEsIDB4Y2QsIDB4MzMsIDB4ZDEsIDB4NTksIDB4MmQsIDB4OWUsIDB4YzEsCisJMHg1YywgMHhlNiwgMHgwMSwgMHgxOCwgMHhiOCwgMHhmMCwgMHg1ZSwgMHhiMSwKKwkweDY5LCAweDk1LCAweDJmLCAweDAyLCAweDJhLCAweGU3LCAweDRhLCAweGQ3LAorCTB4ZDEsIDB4YzMsIDB4ZDUsIDB4NmYsIDB4MTUsIDB4YzgsIDB4ZGMsIDB4MjksCisJMHhkZSwgMHhiOSwgMHgzZiwgMHg4YiwgMHhhNiwgMHhiYywgMHhkZCwgMHgyNSwKKwkweDg0LCAweDM1LCAweDNjLCAweDkwLCAweDJkLCAweGMyLCAweDFlLCAweDk4LAorCTB4OGEsIDB4NTAsIDB4MDksIDB4NzcsIDB4NDIsIDB4ZTksIDB4MzUsIDB4OGEsCisJMHg3YywgMHg5NywgMHhiZiwgMHhlOCwgMHhiZiwgMHg1NiwgMHhkMCwgMHg4YiwKKwkweDY1LCAweGQzLCAweGFmLCAweDFlLCAweDA1LCAweDk0LCAweGZhLCAweGFjLAorCTB4YTgsIDB4MmIsIDB4MjgsIDB4Y2IsIDB4MzcsIDB4M2UsIDB4ZTgsIDB4YmIsCisJMHg2NiwgMHgzYSwgMHhlZCwgMHhiMiwgMHg0OCwgMHgxMCwgMHgwZiwgMHgzYSwKKwkweDVhLCAweGM1LCAweGRiLCAweDI2LCAweDBlLCAweGFhLCAweDVlLCAweDY5LAorCTB4MTUsIDB4ZDYsIDB4ODEsIDB4YWUsIDB4YmQsIDB4ZTYsIDB4MDMsIDB4ZjEsCisJMHhmNiwgMHgzNywgMHhjOCwgMHhkZSwgMHg3MCwgMHgxZiwgMHg2NCwgMHhiOSwKKwkweDVlLCAweGJmLCAweDJlLCAweDRmLCAweGIxLCAweGVhLCAweGEwLCAweDE3LAorCTB4ZTYsIDB4N2MsIDB4ZjksIDB4MmYsIDB4MWUsIDB4ZDgsIDB4NTgsIDB4ZGUsCisJMHhhNywgMHhmMCwgMHg0NiwgMHg1MiwgMHg5NSwgMHhkZiwgMHhhNCwgMHg5NiwKKwkweGQwLCAweGM0LCAweDk3LCAweDJiLCAweDk1LCAweGNkLCAweDVlLCAweDQwLAorCTB4MjMsIDB4NWMsIDB4MTAsIDB4ZWUsIDB4YmEsIDB4NzIsIDB4OWIsIDB4Y2YsCisJMHgwYiwgMHhlOCwgMHgxOCwgMHgzYSwgMHg3MCwgMHhkMiwgMHg1ZSwgMHgwNywKKwkweDY4LCAweDkzLCAweGVmLCAweDRhLCAweDViLCAweDhkLCAweDcyLCAweDQxLAorCTB4NGUsIDB4ZWEsIDB4MzMsIDB4NmEsIDB4MGEsIDB4NWUsIDB4ZmIsIDB4MDIsCisJMHgzZiwgMHhkNCwgMHhlZCwgMHg1YiwgMHhlMCwgMHg0MiwgMHg4NCwgMHhkNCwKKwkweGFhLCAweDg1LCAweGRjLCAweDViLCAweDY3LCAweGVlLCAweDcxLCAweDY3LAorCTB4YmEsIDB4OGUsIDB4ZDIsIDB4YmUsIDB4NjEsIDB4ZGYsIDB4NWEsIDB4MjYsCisJMHhiOSwgMHhmMCwgMHg3NywgMHg4MSwgMHg1MywgMHgyNCwgMHgxNiwgMHhjYiwKKwkweDhjLCAweGI4LCAweDA2LCAweDZlLCAweDY4LCAweGRhLCAweGM4LCAweDJkLAorCTB4MTcsIDB4NTQsIDB4ZGIsIDB4NDYsIDB4Y2IsIDB4ZmQsIDB4MWYsIDB4M2QsCisJMHg5NCwgMHg4MSwgMHgwOSwgMHg0YiwgMHhmYSwgMHhiMSwgMHg0NiwgMHhkOSwKKwkweDExLCAweGEzLCAweGI3LCAweDMxLCAweDljLCAweGQyLCAweDM4LCAweGQ2LAorCTB4YmEsIDB4M2QsIDB4YTMsIDB4NzQsIDB4ZDgsIDB4ZjEsIDB4MjQsIDB4ZTgsCisJMHg5YywgMHhjYiwgMHgxZCwgMHhmOSwgMHg0YSwgMHhmNywgMHhjOCwgMHg0YiwKKwkweGZlLCAweDk3LCAweDdjLCAweGExLCAweDAyLCAweGViLCAweDQwLCAweGMzLAorCTB4ODksIDB4NzEsIDB4MDEsIDB4Y2QsIDB4MzMsIDB4MmEsIDB4YzIsIDB4ODIsCisJMHhjZSwgMHg2MiwgMHg4ZCwgMHg1MywgMHg3YywgMHhkZiwgMHhjZSwgMHhkNywKKwkweGY1LCAweGE4LCAweDRmLCAweGYyLCAweGYyLCAweDJlLCAweGMxLCAweGViLAorCTB4OTcsIDB4OTksIDB4MzcsIDB4M2MsIDB4NTMsIDB4YTYsIDB4YjQsIDB4NDYsCisJMHgwNSwgMHg2NCwgMHg5MiwgMHg4NywgMHgwOCwgMHgzYywgMHgyMywgMHg0YiwKKwkweDlkLCAweDY3LCAweDE4LCAweGY5LCAweGUyLCAweDBiLCAweDFjLCAweDM5LAorCTB4ZDMsIDB4ODcsIDB4NzAsIDB4YzAsIDB4YjksIDB4MWUsIDB4NTIsIDB4MGEsCisJMHgwZiwgMHg0OCwgMHhlMiwgMHhlNywgMHg1MSwgMHg3MiwgMHg5NCwgMHhmNywKKwkweGEzLCAweGRjLCAweGU1LCAweDY2LCAweDMzLCAweDM5LCAweDU0LCAweDA2LAorCTB4NTUsIDB4OTMsIDB4MzAsIDB4ZjksIDB4NWUsIDB4NzYsIDB4OGYsIDB4ZTAsCisJMHg1OSwgMHg0ZCwgMHgwZCwgMHhhNywgMHhmNSwgMHhiZSwgMHhkYiwgMHgyMCwKKwkweGFkLCAweDBkLCAweDc2LCAweDg4LCAweDVmLCAweDljLCAweDdjLCAweDc1LAorCTB4MmYsIDB4MmEsIDB4MGIsIDB4NzksIDB4NmUsIDB4ZDMsIDB4ZTIsIDB4NjYsCisJMHhmNSwgMHg0YSwgMHgyZCwgMHg4NywgMHg4NywgMHg0OSwgMHg4NCwgMHgxNywKKwkweGEyLCAweDYyLCAweDRjLCAweGJiLCAweGU0LCAweDZlLCAweDk4LCAweDEwLAorCTB4YzksIDB4ZmIsIDB4OGEsIDB4MDQsIDB4NjgsIDB4OGQsIDB4MjIsIDB4NjYsCisJMHhhZCwgMHhlYSwgMHgyYSwgMHhjOSwgMHg5NywgMHgyZCwgMHgzYywgMHhiYywKKwkweGQwLCAweDc3LCAweDVmLCAweGU2LCAweGI4LCAweDdmLCAweGU2LCAweGY2LAorCTB4MzksIDB4YmYsIDB4NTYsIDB4MGUsIDB4MjYsIDB4NmQsIDB4YzUsIDB4M2UsCisJMHg1MywgMHgxOSwgMHhkNiwgMHhiNCwgMHg1NywgMHgzNiwgMHhhMywgMHhjNiwKKwkweGQzLCAweDNkLCAweDY2LCAweDc5LCAweDMwLCAweDVjLCAweDE0LCAweDBjLAorCTB4MGYsIDB4M2UsIDB4OTYsIDB4YWUsIDB4OTAsIDB4OTcsIDB4YWIsIDB4MGQsCisJMHg5ZiwgMHhjMywgMHhlNywgMHg2NiwgMHgzZSwgMHhlMCwgMHgzMSwgMHg0MywKKwkweDRiLCAweDAxLCAweGIzLCAweDBlLCAweDllLCAweDhjLCAweDgyLCAweDRhLAorCTB4OGMsIDB4YzcsIDB4NzksIDB4ODUsIDB4ZGYsIDB4NzUsIDB4MGQsIDB4YjQsCisJMHgyYiwgMHgwMywgMHgxNCwgMHhlZiwgMHg3MiwgMHg1OCwgMHhmZCwgMHg2NCwKKwkweGM4LCAweGUzLCAweDBkLCAweDlhLCAweDE0LCAweDZmLCAweDc2LCAweGY5LAorCTB4NDYsIDB4ZDEsIDB4ZDIsIDB4ODEsIDB4YjMsIDB4MTYsIDB4NmUsIDB4YzcsCisJMHg3NiwgMHg4MiwgMHhjZSwgMHhmNCwgMHhlZSwgMHgzMywgMHgwMCwgMHhlNiwKKwkweDc3LCAweGM0LCAweGFkLCAweDRmLCAweDA2LCAweGE3LCAweDQ4LCAweDgwLAorCTB4OWUsIDB4MjEsIDB4NjYsIDB4Y2EsIDB4NzUsIDB4NjksIDB4NTcsIDB4Y2IsCisJMHhmMCwgMHg2NywgMHg2YSwgMHhhYSwgMHg4ZiwgMHg4OCwgMHgxNCwgMHhiZCwKKwkweDY1LCAweDYyLCAweGUyLCAweGFkLCAweGNjLCAweDIyLCAweDg4LCAweDdiLAorCTB4OTQsIDB4YmQsIDB4MGUsIDB4Y2QsIDB4YjYsIDB4NjksIDB4YTIsIDB4Y2IsCisJMHg3ZCwgMHg1NywgMHg1YywgMHhiNCwgMHg5MiwgMHg4MCwgMHgxMywgMHg5OSwKKwkweDg0LCAweGYzLCAweDc5LCAweDBhLCAweDJkLCAweDcwLCAweGE0LCAweGUwLAorCTB4ZGUsIDB4YzYsIDB4MzIsIDB4YjAsIDB4OGEsIDB4NjIsIDB4YjUsIDB4Y2YsCisJMHhmYSwgMHg1ZSwgMHg1YSwgMHg5MiwgMHgzMiwgMHg3ZCwgMHgzNCwgMHgwNywKKwkweGI1LCAweDUyLCAweDNhLCAweGI1LCAweDdkLCAweDBmLCAweGExLCAweGJhLAorCTB4NTYsIDB4ZDAsIDB4MDcsIDB4NzYsIDB4MTEsIDB4ZjIsIDB4YzMsIDB4MzMsCisJMHg5ZCwgMHhiZCwgMHgxMiwgMHgzNSwgMHg1ZSwgMHhmNywgMHgwNSwgMHg4OCwKKwkweDc2LCAweDk0LCAweGE2LCAweGJmLCAweGVkLCAweGI4LCAweGE0LCAweGEyLAorCTB4MGMsIDB4YmUsIDB4MGYsIDB4NmEsIDB4YWYsIDB4ZjMsIDB4MWIsIDB4MzMsCisJMHg0YSwgMHhiNywgMHg2OCwgMHgzZiwgMHhiZSwgMHg5NSwgMHgxMywgMHg5NywKKwkweDBmLCAweDE1LCAweDE3LCAweDFiLCAweDIzLCAweGFhLCAweDA4LCAweDc4LAorCTB4YTYsIDB4NWIsIDB4MDgsIDB4YTIsIDB4OWQsIDB4MDMsIDB4YTgsIDB4YTcsCisJMHgzOSwgMHhkYywgMHhiYywgMHg5YSwgMHg4NSwgMHhmNSwgMHhlNSwgMHg1NSwKKwkweDU5LCAweDNjLCAweGVmLCAweGY5LCAweDNmLCAweDIyLCAweDhlLCAweGY4LAorCTB4ZDgsIDB4M2UsIDB4MDIsIDB4MGIsIDB4ZDgsIDB4NzgsIDB4NGIsIDB4MTUsCisJMHg3ZiwgMHhhYSwgMHgyYywgMHhmZiwgMHhiZSwgMHg3NywgMHgzMywgMHhjNywKKwkweDZhLCAweDEyLCAweGFhLCAweGE0LCAweGJlLCAweGMwLCAweDNiLCAweGNiLAorCTB4MTMsIDB4OWQsIDB4OWMsIDB4NWEsIDB4OWYsIDB4OGEsIDB4NTcsIDB4MzYsCisJMHg0ZiwgMHgwMiwgMHg1YSwgMHhmOCwgMHgxZCwgMHg5NywgMHg3NywgMHg0MywKKwkweGM4LCAweGE1LCAweGI3LCAweDliLCAweDEwLCAweDk4LCAweGZkLCAweDU4LAorCTB4YmYsIDB4NDIsIDB4ZjYsIDB4YmYsIDB4ZmYsIDB4NmMsIDB4NDAsIDB4MTgsCisJMHgxOCwgMHhkZiwgMHhhYywgMHg1NywgMHg3MSwgMHhlYSwgMHhjYywgMHg4ZSwKKwkweGZkLCAweGZlLCAweDEwLCAweGZiLCAweGI5LCAweGZlLCAweGJjLCAweDlhLAorCTB4OWMsIDB4MjcsIDB4ZTQsIDB4MTAsIDB4MTUsIDB4OTQsIDB4NDEsIDB4YTEsCisJMHhjYywgMHhmNiwgMHgyNSwgMHg0OSwgMHg0ZiwgMHg5NiwgMHhjMSwgMHg4YywKKwkweDllLCAweDNlLCAweDE4LCAweDI5LCAweDQ5LCAweDkyLCAweGU3LCAweGZlLAorCTB4MjIsIDB4ZmYsIDB4ZWQsIDB4MDIsIDB4MTYsIDB4OTAsIDB4ZWYsIDB4YWMsCisJMHhlYywgMHg5NSwgMHgxZCwgMHg1YiwgMHg5NCwgMHg5YywgMHhmNiwgMHg3YywKKwkweDFiLCAweDVhLCAweDlkLCAweGIwLCAweDliLCAweDA1LCAweDM2LCAweGJmLAorCTB4ZWYsIDB4ZWMsIDB4NjMsIDB4MzUsIDB4NDAsIDB4MjQsIDB4NDUsIDB4NDAsCisJMHgzMCwgMHgxYSwgMHg5YiwgMHg5MCwgMHhjMywgMHhjMiwgMHhmNywgMHgzNywKKwkweGZiLCAweDA4LCAweDhlLCAweDQ4LCAweDE5LCAweDQ4LCAweGVkLCAweGE4LAorCTB4YTgsIDB4MDQsIDB4NmYsIDB4ZDAsIDB4MzMsIDB4ZTksIDB4YjgsIDB4OGQsCisJMHhlNywgMHgxZSwgMHg1YywgMHg0NywgMHg3NCwgMHhjMCwgMHg2NiwgMHgzMCwKKwkweDRlLCAweGE3LCAweDg2LCAweDczLCAweGYxLCAweGU1LCAweDc4LCAweGE2LAorCTB4ZTAsIDB4YzEsIDB4ZGEsIDB4MTMsIDB4NzIsIDB4MDcsIDB4ODUsIDB4MzQsCisJMHg2MywgMHg5NSwgMHg0OSwgMHgzMCwgMHg0YiwgMHg5ZCwgMHgwMywgMHhmMSwKKwkweDdhLCAweDZiLCAweDkxLCAweGEyLCAweDg1LCAweDQxLCAweGY5LCAweDRhLAorCTB4ZDYsIDB4ZmYsIDB4ZmYsIDB4ODYsIDB4ZjcsIDB4ZjAsIDB4Y2UsIDB4YjksCisJMHgwNywgMHhmMSwgMHg4OCwgMHgwNCwgMHgzMywgMHhhYSwgMHhlYiwgMHg1NCwKKwkweGIyLCAweDFjLCAweDhlLCAweDJlLCAweDdiLCAweDA0LCAweGE4LCAweGNjLAorCTB4MmMsIDB4N2EsIDB4YjMsIDB4YWQsIDB4MWEsIDB4ODksIDB4MzgsIDB4ODksCisJMHhkNywgMHgxMSwgMHgzYSwgMHg4YywgMHhjZiwgMHhlMywgMHhjNSwgMHhiYSwKKwkweGIwLCAweGNjLCAweGM0LCAweGUzLCAweDMzLCAweGYzLCAweDE4LCAweGJhLAorCTB4ZWMsIDB4NTYsIDB4ZDksIDB4MWMsIDB4NDAsIDB4NzAsIDB4MGQsIDB4NGUsCisJMHg5NywgMHgwMSwgMHgyMywgMHhmMywgMHg1YSwgMHhkYywgMHhiZiwgMHg2OCwKKwkweDkzLCAweGMyLCAweDFkLCAweDhhLCAweDk2LCAweGI3LCAweGFjLCAweDE4LAorCTB4NmYsIDB4ZjcsIDB4ODQsIDB4NzEsIDB4MGQsIDB4M2QsIDB4ZjgsIDB4YmEsCisJMHhkZiwgMHhiNiwgMHg4OSwgMHgxZCwgMHg3OCwgMHgxOSwgMHhmMiwgMHg1OSwKKwkweGU5LCAweDE1LCAweDU1LCAweDI5LCAweDczLCAweDUwLCAweDU5LCAweDE0LAorCTB4MDIsIDB4MjEsIDB4MTYsIDB4OGYsIDB4MGYsIDB4ZGYsIDB4YTUsIDB4ZjAsCit9OworCitzdGF0aWMgc3RydWN0IGNyY190ZXN0IHsKKwl1aW50MzJfdCBjcmM7CQkvKiByYW5kb20gc3RhcnRpbmcgY3JjICovCisJdWludDMyX3Qgc3RhcnQ7CQkvKiByYW5kb20gb2Zmc2V0IGluIGJ1ZiAqLworCXVpbnQzMl90IGxlbmd0aDsJLyogcmFuZG9tIGxlbmd0aCBvZiB0ZXN0ICovCisJdWludDMyX3QgY3JjMzJjX2xlOwkvKiBleHBlY3RlZCBjcmMzMmNfbGUgcmVzdWx0ICovCisJdWludDMyX3QgY3JjMzJfYmU7CS8qIGV4cGVjdGVkIGNyYzMyX2JlIHJlc3VsdCAqLworfSB0ZXN0W10gPSB7CisJezB4ZmZmZmZmZmYsIDB4MDAwMDAwMDAsIDB4MDAwMDEwMDAsIDB4MTM5MzRiZWYsIDB4ZDhkZGNkYzN9LAorCXsweGZlNzMyOGVhLCAweDAwMDAwNzYzLCAweDAwMDAwNzE3LCAweGVkMmMwZDcwLCAweGM4NjNhZWY4fSwKKwl7MHg0YzQwNjg0ZSwgMHgwMDAwMDcyMSwgMHgwMDAwMDExZSwgMHhkN2Y0NmNjYywgMHgxNzNhMTFjNH0sCisJezB4NmI0ODdmOTAsIDB4MDAwMDAyNjQsIDB4MDAwMDA3YmMsIDB4NzU5ZTk5MzksIDB4ZDYzMDdjNTZ9LAorCXsweDlmNTgxMGRiLCAweDAwMDAwYWZhLCAweDAwMDAwMjU1LCAweDI2ODUxOTdmLCAweDJlNWM5MjAxfSwKKwl7MHhiMTVjNDc1NSwgMHgwMDAwMGQ1YiwgMHgwMDAwMDJhNCwgMHhkOGZhZGNiNSwgMHhmNjgyYzRiZX0sCisJezB4MDY1MTgyNTMsIDB4MDAwMDBmZmIsIDB4MDAwMDAwMDQsIDB4YWJlZTI0MzMsIDB4M2Q4YWJkZjl9LAorCXsweGQ5ZTcxYzU1LCAweDAwMDAwYTJhLCAweDAwMDAwMjU5LCAweDk2NjgyYWYyLCAweDQ3YjRkMjZjfSwKKwl7MHgwYzFhZTg0MywgMHgwMDAwMGNlNCwgMHgwMDAwMDMxYiwgMHg3YjYzN2M0MywgMHg2MmI0N2U4Yn0sCisJezB4ZWMzY2Q1MTcsIDB4MDAwMDAyZmYsIDB4MDAwMDA1NjYsIDB4NWQ3MTlhNzcsIDB4ZmY1YmM1Yjd9LAorCXsweDc3ODI4ZTk1LCAweDAwMDAwNjdmLCAweDAwMDAwMzhmLCAweDQzZWU1YjZjLCAweDFhMGNmYWNkfSwKKwl7MHhlYzg3YjRlMywgMHgwMDAwMGQxYywgMHgwMDAwMDJlMywgMHgyZGRkMmVlZSwgMHgyNzUxMThhN30sCisJezB4NDEyMTU4YmIsIDB4MDAwMDBlZWUsIDB4MDAwMDAxMTEsIDB4NjdiMzhiYTIsIDB4YTc0ZWNmZjV9LAorCXsweDJlNTJkZTNlLCAweDAwMDAwYzRhLCAweDAwMDAwM2I1LCAweGJjYzVkNjFkLCAweGJkODAwNzA3fSwKKwl7MHg2ZGRhYWU4YiwgMHgwMDAwMGQ5OSwgMHgwMDAwMDI2NiwgMHg4YjUzNTU0NCwgMHhlY2JkZTFhMX0sCisJezB4MDQ5YjZjYjEsIDB4MDAwMDA5YzUsIDB4MDAwMDAwYjAsIDB4ZmMyMmNhYmMsIDB4ZmI3OGViOWZ9LAorCXsweDc3ZDRiOTU0LCAweDAwMDAwMjhhLCAweDAwMDAwN2ZhLCAweDcxZDAwOTIzLCAweDhjMTE2Zjg1fSwKKwl7MHg1ZTE5MjM1NSwgMHgwMDAwMGFjMSwgMHgwMDAwMDFmYSwgMHhiOTY2YjgxYSwgMHg1YWExN2JiZX0sCisJezB4N2Q4MGI3MWQsIDB4MDAwMDAyMTMsIDB4MDAwMDAxZTAsIDB4MmJiYTM3MWEsIDB4YjU5MDZhYTZ9LAorCXsweDAxZjZmMWU0LCAweDAwMDAwMWQ2LCAweDAwMDAwMzk1LCAweGI3ZThhNjQ3LCAweDNhZDExMmIxfSwKKwl7MHgxZGZhYmIxMywgMHgwMDAwMGUxNCwgMHgwMDAwMDFlYiwgMHg1MzkxN2ZiYSwgMHhiYWVlMDMzOX0sCisJezB4YjAwYTQ0NDksIDB4MDAwMDBiZjYsIDB4MDAwMDA0MDksIDB4ZWRlY2I1NzcsIDB4NmYzYTM5Nzl9LAorCXsweDdlY2QzOTgxLCAweDAwMDAwODNmLCAweDAwMDAwMTZiLCAweGVmZWY2MmI5LCAweGUzZTUyZWVkfSwKKwl7MHhmOGYzMzBkMiwgMHgwMDAwMDRiZSwgMHgwMDAwMDc1NywgMHg5MzU3YzlmMywgMHgwODM1YmMxYn0sCisJezB4MDNjMzhhZjIsIDB4MDAwMDBkMjMsIDB4MDAwMDAyZGMsIDB4MzYwZmE4YzAsIDB4MmNhODg1ZTZ9LAorCXsweDY4N2JiNzliLCAweDAwMDAwZjNkLCAweDAwMDAwMGMyLCAweDQ0OGQzYmUyLCAweDc5YmUyZjc4fSwKKwl7MHg2NzEwZjU1MCwgMHgwMDAwMDllOSwgMHgwMDAwMDYwMywgMHhkYmZkMTk5OCwgMHgxZDI1ZjYyN30sCisJezB4ODczMTcxZDEsIDB4MDAwMDA3ODcsIDB4MDAwMDA0ZDUsIDB4YWI3ZjFiNjIsIDB4YTc2YTU2NTZ9LAorCXsweDM3M2IxMzE0LCAweDAwMDAwZjBmLCAweDAwMDAwMGYwLCAweDE4NDA5OGFiLCAweGJhMjczOTc0fSwKKwl7MHg5MGZhZDljZCwgMHgwMDAwMGVhZCwgMHgwMDAwMDE1MiwgMHgyM2NlNTJmZiwgMHhiN2JjOTU4Y30sCisJezB4MTk2NzZmZTcsIDB4MDAwMDAwN2QsIDB4MDAwMDA3MGQsIDB4ZjhhNzZmMWUsIDB4Zjg4MmI2NDR9LAorCXsweDg5ZmFjZDQ1LCAweDAwMDAwNWYzLCAweDAwMDAwNDczLCAweDQzMzFhMDA2LCAweGU5ZGMxMzk2fSwKKwl7MHg2ZjE3Mzc0NywgMHgwMDAwMGZjMywgMHgwMDAwMDAzYywgMHhiMDEyZjA4ZSwgMHhjNmI4ODhlZX0sCisJezB4NGI0NGExMDYsIDB4MDAwMDA3NWEsIDB4MDAwMDAwOGIsIDB4ZjZmN2FjMzgsIDB4NjBjZDJiNzR9LAorCXsweGI2MjBhZDA2LCAweDAwMDAwNzc0LCAweDAwMDAwMTdlLCAweGQzNDU1OGU2LCAweDNhMGE2MTVifSwKKwl7MHg5NzZmMjFlOSwgMHgwMDAwMDhkNywgMHgwMDAwMDM0YSwgMHhlNTMzYWEzYSwgMHhhOTllNjBiZX0sCisJezB4Njg3NjI4YzAsIDB4MDAwMDA2YzUsIDB4MDAwMDA2MWIsIDB4M2E4NDBiMTUsIDB4OWJmY2FlZjJ9LAorCXsweGUyNGFjMTA4LCAweDAwMDAwY2QwLCAweDAwMDAwMzJmLCAweDUxMDEwYWU4LCAweDIwOTU4NjcyfSwKKwl7MHgzNjFjNDRhMywgMHgwMDAwMDMwNCwgMHgwMDAwMDcxOSwgMHhmZDdiZDQ4MSwgMHhkNzBmZjJiMn0sCisJezB4ZDkzZmY5NWUsIDB4MDAwMDBkYjcsIDB4MDAwMDAwOGUsIDB4Y2ZiYmMzMDQsIDB4YWQ3MTZhY2R9LAorCXsweGVkNzUyZDEyLCAweDAwMDAwODgzLCAweDAwMDAwMDkxLCAweDY1YTZjODY4LCAweDk1YzcxYzdifSwKKwl7MHhiNGZmNGI1NCwgMHgwMDAwMDNkMywgMHgwMDAwMDFjMSwgMHhmODI1OTdlNywgMHg0NGI3Zjk5Yn0sCisJezB4MTExYjUyMGYsIDB4MDAwMDA3MDgsIDB4MDAwMDAwZWIsIDB4YzNlMTA5ZjMsIDB4NzFiYzAxZWV9LAorCXsweDYyYzgwNmYyLCAweDAwMDAwYmEzLCAweDAwMDAwNDVjLCAweDg3NGQzYTcyLCAweGM1MzliNzUzfSwKKwl7MHg0MGQ5NzQ3MCwgMHgwMDAwMDVlMSwgMHgwMDAwMDU4ZCwgMHg4N2E5Njg0ZiwgMHhlYTYwNzNhNX0sCisJezB4NDMxMjE3OWMsIDB4MDAwMDAwNTYsIDB4MDAwMDA3MGUsIDB4ODA5YTAwZjUsIDB4MjA5YWVhM2J9LAorCXsweDEzZDVmODRjLCAweDAwMDAwYTJkLCAweDAwMDAwMTA0LCAweGYzZDI3NTc4LCAweGUwODdhOGI2fSwKKwl7MHgxZjMwMmNiMiwgMHgwMDAwMDE1MSwgMHgwMDAwMDAxNCwgMHgxZTE2MjY5MywgMHg5NWU0YjkwZX0sCisJezB4ZTQ5MWRiMjQsIDB4MDAwMDA2MDAsIDB4MDAwMDA2ZjYsIDB4N2ZmMDk2MTUsIDB4Nzc2MTE1MjN9LAorCXsweGY5YTk4MDY5LCAweDAwMDAwMmJhLCAweDAwMDAwMmFkLCAweDAxYWY3Mzg3LCAweGVhOTI1ZmFhfSwKKwl7MHhlOWM0NzdhZCwgMHgwMDAwMDE1ZiwgMHgwMDAwMDc3OCwgMHg2ZmFjZjlhMCwgMHgxMTMwZjczNn0sCisJezB4MzUzZjMyYjIsIDB4MDAwMDA4N2MsIDB4MDAwMDA3ODMsIDB4NmNjOTY0ZWEsIDB4MzI0NTk5OTR9LAorCXsweDc4ZTFiMjRmLCAweDAwMDAwNjUwLCAweDAwMDAwNmE4LCAweGIzYmI3YzI3LCAweDVhNjMyZjc4fSwKKwl7MHg2MWFhNDAwZSwgMHgwMDAwMDA0OSwgMHgwMDAwMDI1NCwgMHhiOGNkMTY4MSwgMHhkZjI2NTJkNX0sCisJezB4Yjg0YjEwYjAsIDB4MDAwMDBmNzMsIDB4MDAwMDAwOGMsIDB4NDA2YTY0NTAsIDB4MzYxOWQzMWJ9LAorCXsweDlmYTk5YzljLCAweDAwMDAwYTdjLCAweDAwMDAwNGQ3LCAweGZiM2QyMWI0LCAweGVhMzFjNzQzfSwKKwl7MHgzZmM5ZWJlMywgMHgwMDAwMGNkOSwgMHgwMDAwMDBkNiwgMHg0MzgwM2Y5YywgMHgxZjc2YTgwOX0sCisJezB4NTI5ODc5Y2QsIDB4MDAwMDAyZjIsIDB4MDAwMDA1OTUsIDB4NzhiNGM2YTYsIDB4NjNiOWI5M2Z9LAorCXsweDNhOTMzMDE5LCAweDAwMDAwNTE2LCAweDAwMDAwMjY2LCAweGRjYjQ1NDM2LCAweDhmOTljOThjfSwKKwl7MHg4ODdiNDk3NywgMHgwMDAwMDIyNywgMHgwMDAwMDM4ZCwgMHhjNWY3YzNkOSwgMHhhZjVlMzA5MX0sCisJezB4NzcwNzQ1ZGUsIDB4MDAwMDA4YzYsIDB4MDAwMDA3MzksIDB4ZjY5MTQ1ZTgsIDB4NTNkMGRjZTF9LAorCXsweDI4YmUzYjQ3LCAweDAwMDAwYzQ2LCAweDAwMDAwMzJiLCAweDc2NGMwMjhmLCAweDEwNmQwOTA1fSwKKwl7MHg1MDEzYTA1MCwgMHgwMDAwMGNmNiwgMHgwMDAwMDMwOSwgMHhlYThmZTE2NCwgMHg2MjE4MGI1N30sCisJezB4MmVjNGM5YmEsIDB4MDAwMDA2ZTgsIDB4MDAwMDA3OGQsIDB4YTM1NTU3YTksIDB4ZjQ0NDMwYTR9LAorCXsweGE5Zjk1MGM5LCAweDAwMDAwZDMzLCAweDAwMDAwMmNjLCAweDQxZWE4NjE4LCAweDU4N2I0ZWIzfSwKKwl7MHg1YjUyMDIyOSwgMHgwMDAwMDdiMiwgMHgwMDAwMDQ4NCwgMHg0NDU2OWYxZiwgMHg5MjQwNmMzMn0sCisJezB4ZDhkY2JiZmMsIDB4MDAwMDAwMmYsIDB4MDAwMDA0OGMsIDB4ZGI4OGFiOGIsIDB4MTNiZmU3MGV9LAorCXsweDI1NTI5NzkyLCAweDAwMDAwZDFkLCAweDAwMDAwMmUyLCAweDIwY2RhNDA0LCAweDE5ZDNiNGU0fSwKKwl7MHg5ZjNmNmQ3MSwgMHgwMDAwMDIzOCwgMHgwMDAwMDc5YSwgMHgwNzIwNDQzZSwgMHgzYzEwNzAyMX0sCisJezB4NjQxMjEyMTUsIDB4MDAwMDA3ZmYsIDB4MDAwMDAzOGYsIDB4NmFhY2ZmMmMsIDB4YjgyZmRjM2V9LAorCXsweGZiNmNkZGUwLCAweDAwMDAwZWY4LCAweDAwMDAwMTA3LCAweGJkNDNhMGYxLCAweGFiMGQzYzFkfSwKKwl7MHgyMjFjOWQ2ZiwgMHgwMDAwMDdiNiwgMHgwMDAwMDE0ZiwgMHhiNjdmODM0YiwgMHgxMzcxYWQwNX0sCisJezB4MDMwZTFkZTQsIDB4MDAwMDA4MzYsIDB4MDAwMDA0YjQsIDB4MGQ2N2QyNmEsIDB4ZTJlNzJkZjF9LAorCXsweGI1NmZhNmNmLCAweDAwMDAwYzA3LCAweDAwMDAwM2Y4LCAweDYwNjAxYWMxLCAweDAzOWRlNzNlfSwKKwl7MHhiNTVjODlmNSwgMHgwMDAwMDk4ZSwgMHgwMDAwMDFkNCwgMHgyNDAwZWZiZSwgMHhmZTM5YTJiYn0sCisJezB4NWU5MGI2ZDUsIDB4MDAwMDA3MGIsIDB4MDAwMDAzZWEsIDB4M2JiNWQ2ZWEsIDB4ZjBmNzk0YTB9LAorCXsweDJhNzA0NWFlLCAweDAwMDAwOTYxLCAweDAwMDAwNjMzLCAweGZjYTg5ZTRiLCAweGU2NmNlNDFjfSwKKwl7MHg4YjM3NGVhOSwgMHgwMDAwMDZiYSwgMHgwMDAwMDc4MCwgMHhiY2UwMzZlZCwgMHg0Y2IyOGVmN30sCisJezB4OGJkOTBiYzksIDB4MDAwMDA1NjIsIDB4MDAwMDAzNjksIDB4Y2IyNmEyNGIsIDB4NDAyMzZkMWR9LAorCXsweDViMWIxNzYyLCAweDAwMDAwMGZkLCAweDAwMDAwNTFhLCAweDMzY2RkYTA3LCAweGMzMmU0MjBhfSwKKwl7MHhhNDE1MzU1NSwgMHgwMDAwMDU4ZiwgMHgwMDAwMDVjNywgMHhiZTUwZWVjYSwgMHg4M2E2N2YzNX0sCisJezB4MGJlMWY5MzEsIDB4MDAwMDA2NTEsIDB4MDAwMDA2NzIsIDB4OTVhMjU3NTMsIDB4ODhmMWFhYzF9LAorCXsweGI3ZTc4NjE4LCAweDAwMDAwYTdmLCAweDAwMDAwMmJiLCAweGUwNmJjYzFjLCAweDc0Mjc0ZjY2fSwKKwl7MHg0YTliYzQxYiwgMHgwMDAwMGU1MSwgMHgwMDAwMDFhZSwgMHg3MDllOGQyYywgMHg1NGVmZjUzNH0sCisJezB4ZmMzNTlkMTMsIDB4MDAwMDA0NDAsIDB4MDAwMDAyZjgsIDB4MGE1ODQ1MWYsIDB4NTVlOTM2M2Z9LAorCXsweDVhYTQ4NjE5LCAweDAwMDAwNmQxLCAweDAwMDAwMjg0LCAweDkyOGVhZDgzLCAweDMxMDQxYzA2fSwKKwl7MHhhNjA5YWZhOCwgMHgwMDAwMDUzZSwgMHgwMDAwMDI3MiwgMHhiMDQ4YzE0MSwgMHg0NzA0ZWZiYX0sCisJezB4M2YxMDhhZmIsIDB4MDAwMDA5NDksIDB4MDAwMDAxNTAsIDB4OWE2YmI1YmMsIDB4NGU0NDMwYzh9LAorCXsweDc5YmVjMmQzLCAweDAwMDAwOGVkLCAweDAwMDAwNzEyLCAweDMyNjkyZDU3LCAweDExZDUyYTdifSwKKwl7MHg5NDI5ZTA2NywgMHgwMDAwMGJjMywgMHgwMDAwMDQzYywgMHg1Mjk1Y2VmZiwgMHgwNDY0MGY0ZH0sCisJezB4YWU1OGI5NmEsIDB4MDAwMDA4MmQsIDB4MDAwMDA3ZDIsIDB4YzJhNjgxYmEsIDB4ZjdjYTRhMmN9LAorCXsweDk1ZGYyNGJlLCAweDAwMDAwOTg1LCAweDAwMDAwNGMxLCAweDNhMjg3NzY1LCAweDJjNGFmMDAzfSwKKwl7MHg1ZTk0OTc2ZiwgMHgwMDAwMDU5NiwgMHgwMDAwMDRlZCwgMHhmZjAwYzQ4OSwgMHg1YWUxMTY4N30sCisJezB4ZjVlNWYxZGUsIDB4MDAwMDBkMzEsIDB4MDAwMDAyY2UsIDB4MzVmMjhlOTEsIDB4MzBkNDc5NTd9LAorCXsweGEyYzIxOWNmLCAweDAwMDAwYTNjLCAweDAwMDAwMzc0LCAweDcwN2QyMWViLCAweDJhMTRhMjU1fSwKKwl7MHhmMjFiNmNlYiwgMHgwMDAwMDkxOSwgMHgwMDAwMDEzNSwgMHgwODQ3ZmI4YiwgMHhjYjhkM2I5M30sCisJezB4YWE5ODg3MjgsIDB4MDAwMDA3ODcsIDB4MDAwMDA3NzEsIDB4ODg1YWVhYTQsIDB4NjUzMWI1MDl9LAorCXsweGFhNWRmYWFjLCAweDAwMDAwM2U1LCAweDAwMDAwNTFiLCAweDUyYzQ4YWI3LCAweGU0M2NjNWU5fSwKKwl7MHgwYTA1Mzk2OCwgMHgwMDAwMGQyYSwgMHgwMDAwMDJkNSwgMHg3YTkwMjU2ZCwgMHg4MDA0NzY1Y30sCisJezB4MTQyMWRjMjAsIDB4MDAwMDBlZWYsIDB4MDAwMDAxMTAsIDB4OTdkNmRhMjQsIDB4MTM3OGY2ZmZ9LAorCXsweGI0N2MyMTY2LCAweDAwMDAwYTZhLCAweDAwMDAwMjA5LCAweGNmZDZjYzUyLCAweDY3NmUxNGE1fSwKKwl7MHg3N2RkMTk1NSwgMHgwMDAwMDBkZSwgMHgwMDAwMDI2NiwgMHhiYTc0YmNhYSwgMHhjNzFiNDI5Y30sCisJezB4NjhhMDNjYzIsIDB4MDAwMDA4MmYsIDB4MDAwMDA3YjAsIDB4NzUyYmQ1ZDgsIDB4MTllZDE0YWF9LAorCXsweDAyMjZiMGEzLCAweDAwMDAwYTVmLCAweDAwMDAwNWEwLCAweDgyZGU0OTcwLCAweGY2NTRkM2VkfSwKKwl7MHg2MzdiZjNiMSwgMHgwMDAwMGQ5MywgMHgwMDAwMDI2YywgMHg1YzcxMTVjYiwgMHgzY2NjYjU3ZX0sCisJezB4M2IxMjBlZGYsIDB4MDAwMDBjMTMsIDB4MDAwMDAzZWMsIDB4ODBkN2QyMGYsIDB4OTIxMzI3OTh9LAorCXsweGUyNDU2NzgwLCAweDAwMDAwMmViLCAweDAwMDAwNjQxLCAweGMwYTVkMjg5LCAweDYxNjBjODdhfSwKKwl7MHg5YjJlNzEyNSwgMHgwMDAwMGMwYywgMHgwMDAwMDNmMywgMHhjYzE1ZjU3ZSwgMHg2ZjAwZjYzN30sCisJezB4MTUzMDMzZWYsIDB4MDAwMDA3ODcsIDB4MDAwMDA2YjYsIDB4M2NkZTQ0M2IsIDB4YjQ2Y2FhNmV9LAorCXsweDE4NDU4YjNmLCAweDAwMDAwNjZjLCAweDAwMDAwNTYxLCAweDlhMmJkOGM2LCAweGI2YzI5MTIxfSwKKwl7MHg0ZmY5ZDRiOSwgMHgwMDAwMGM4ZiwgMHgwMDAwMDMzYSwgMHhkMGVlNmQ2ZCwgMHhjODFjZjM4MH0sCisJezB4ZGY4NGI1ZDksIDB4MDAwMDA4MDIsIDB4MDAwMDAyOWEsIDB4ZGFiMGQ3NGEsIDB4YjI0NjQ1NTl9LAorCXsweDgxZWUxNWRmLCAweDAwMDAwM2NlLCAweDAwMDAwNzI1LCAweDk5NDJlMmRlLCAweDRjY2Y1NzFifSwKKwl7MHg1Yzc2OGUwNCwgMHgwMDAwMGFmZCwgMHgwMDAwMDE2MCwgMHgzNjExMDgzMSwgMHhhZTBiMzA1YX0sCisJezB4ZTVlMTgwOTQsIDB4MDAwMDBiNGIsIDB4MDAwMDAwYTAsIDB4ZmZhM2U0YTcsIDB4NmM4YTRmMDl9LAorCXsweGVkNzI2M2I2LCAweDAwMDAwZDBkLCAweDAwMDAwMmYyLCAweGIwMDA2YTM1LCAweDdlMDRhZjhjfSwKKwl7MHg1YmZkZTdkNywgMHgwMDAwMDZmYiwgMHgwMDAwMDU1NCwgMHhhNDE5M2I3NiwgMHhiM2E5MWQxMn0sCisJezB4NjdmNGE3NDMsIDB4MDAwMDBiODUsIDB4MDAwMDA0N2EsIDB4ZjA1YzhkOGYsIDB4ZmI0NzJmZGZ9LAorCXsweGYxM2JkZjIyLCAweDAwMDAwZmY3LCAweDAwMDAwMDA4LCAweDgxNjM1MWViLCAweGYzNDdmMjM1fSwKKwl7MHgwOGVjYzYwOCwgMHgwMDAwMGQ1ZCwgMHgwMDAwMDA5OCwgMHg5MDQ5Mjc3MiwgMHgwYjdmMTUyMX0sCisJezB4Mjk2ZjUyYmEsIDB4MDAwMDA0ZjksIDB4MDAwMDA3ODgsIDB4NWU1YTQ4OTYsIDB4MWNjNjcwODh9LAorCXsweGJlNDYyNGMyLCAweDAwMDAwNDI3LCAweDAwMDAwNGVmLCAweGNkMjY3Yjk0LCAweDU1MGNhZWZkfSwKKwl7MHg5MDZmN2M3YywgMHgwMDAwMGEwNSwgMHgwMDAwMDAzZiwgMHgwM2ZjZmMzMywgMHg5ZWQ4MmEwMn0sCisJezB4OGY3YjMyM2UsIDB4MDAwMDA0NTgsIDB4MDAwMDA0YzcsIDB4Y2Q0OTY5YzgsIDB4NjMzYzM4YTh9LAorCXsweDg4ZDY1OTNkLCAweDAwMDAwNTk3LCAweDAwMDAwNWI1LCAweGYxOTljZDNiLCAweDA0OTE0NTJmfSwKKwl7MHg5NzhhNzc2OCwgMHgwMDAwMDI2OCwgMHgwMDAwMDFkMywgMHhiMjhjOTViZCwgMHgxYTQyZmU2MX0sCisJezB4ODU3YTYyMWUsIDB4MDAwMDA3YTcsIDB4MDAwMDAzYTgsIDB4ZjRiZjg0YWIsIDB4Y2QwNjk0YzZ9LAorCXsweGIwZTEyMWVmLCAweDAwMDAwNWJlLCAweDAwMDAwNjQ0LCAweDI4NzQ3YzE0LCAweGYwNTEwYzcyfSwKKwl7MCwgMCwgMCwgMCwgMH0sCit9OworCitzdGF0aWMgaW50IHRlc3RfY3JjMzJjKHZvaWQpCit7CisJc3RydWN0IGNyY190ZXN0ICp0ID0gdGVzdDsKKwlpbnQgZmFpbHVyZXMgPSAwOworCisJd2hpbGUgKHQtPmxlbmd0aCkgeworCQl1aW50MzJfdCBiZSwgbGU7CisJCWxlID0gZXh0MmZzX2NyYzMyY19sZSh0LT5jcmMsIHRlc3RfYnVmICsgdC0+c3RhcnQsIHQtPmxlbmd0aCk7CisJCWJlID0gZXh0MmZzX2NyYzMyX2JlKHQtPmNyYywgdGVzdF9idWYgKyB0LT5zdGFydCwgdC0+bGVuZ3RoKTsKKwkJaWYgKGxlICE9IHQtPmNyYzMyY19sZSkgeworCQkJcHJpbnRmKCJUZXN0ICVkIExFIGZhaWxzLCAleCAhPSAleFxuIiwKKwkJCSAgICAgICAoaW50KSAodCAtIHRlc3QpLCBsZSwgdC0+Y3JjMzJjX2xlKTsKKwkJCWZhaWx1cmVzKys7CisJCX0KKwkJaWYgKGJlICE9IHQtPmNyYzMyX2JlKSB7CisJCQlwcmludGYoIlRlc3QgJWQgQkUgZmFpbHMsICV4ICE9ICV4XG4iLAorCQkJICAgICAgIChpbnQpICh0IC0gdGVzdCksIGJlLCB0LT5jcmMzMl9iZSk7CisJCQlmYWlsdXJlcysrOworCQl9CisJCXQrKzsKKwl9CisKKwlyZXR1cm4gZmFpbHVyZXM7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IHJldDsKKworCXJldCA9IHRlc3RfY3JjMzJjKCk7CisJaWYgKCFyZXQpCisJCXByaW50ZigiTm8gZmFpbHVyZXMuXG4iKTsKKworCXJldHVybiByZXQ7Cit9CisjZW5kaWYgLyogVU5JVFRFU1QgKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2NyYzMyY19kZWZzLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jcmMzMmNfZGVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOWEwOWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jcmMzMmNfZGVmcy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBUaGVyZSBhcmUgbXVsdGlwbGUgMTYtYml0IENSQyBwb2x5bm9taWFscyBpbiBjb21tb24gdXNlLCBidXQgdGhpcyBpcworICogKnRoZSogc3RhbmRhcmQgQ1JDLTMyIHBvbHlub21pYWwsIGZpcnN0IHBvcHVsYXJpemVkIGJ5IEV0aGVybmV0LgorICogeF4zMit4XjI2K3heMjMreF4yMit4XjE2K3heMTIreF4xMSt4XjEwK3heOCt4XjcreF41K3heNCt4XjIreF4xK3heMAorICovCisjZGVmaW5lIENSQ1BPTFlfTEUgMHhlZGI4ODMyMAorI2RlZmluZSBDUkNQT0xZX0JFIDB4MDRjMTFkYjcKKworLyoKKyAqIFRoaXMgaXMgdGhlIENSQzMyYyBwb2x5bm9taWFsLCBhcyBvdXRsaW5lZCBieSBDYXN0YWdub2xpLgorICogeF4zMit4XjI4K3heMjcreF4yNit4XjI1K3heMjMreF4yMit4XjIwK3heMTkreF4xOCt4XjE0K3heMTMreF4xMSt4XjEwK3heOSsKKyAqIHheOCt4XjYreF4wCisgKi8KKyNkZWZpbmUgQ1JDMzJDX1BPTFlfTEUgMHg4MkY2M0I3OAorI2RlZmluZSBDUkMzMkNfUE9MWV9CRSAweDFFREM2RjQxCisKKy8qIEhvdyBtYW55IGJpdHMgYXQgYSB0aW1lIHRvIHVzZS4gIFZhbGlkIHZhbHVlcyBhcmUgMSwgMiwgNCwgOCwgMzIgYW5kIDY0LiAqLworLyogRm9yIGxlc3MgcGVyZm9ybWFuY2Utc2Vuc2l0aXZlLCB1c2UgNCAqLworI2lmbmRlZiBDUkNfTEVfQklUUworIyBkZWZpbmUgQ1JDX0xFX0JJVFMgNjQKKyNlbmRpZgorI2lmbmRlZiBDUkNfQkVfQklUUworIyBkZWZpbmUgQ1JDX0JFX0JJVFMgNjQKKyNlbmRpZgorCisvKgorICogTGl0dGxlLWVuZGlhbiBDUkMgY29tcHV0YXRpb24uICBVc2VkIHdpdGggc2VyaWFsIGJpdCBzdHJlYW1zIHNlbnQKKyAqIGxzYml0LWZpcnN0LiAgQmUgc3VyZSB0byB1c2UgY3B1X3RvX2xlMzIoKSB0byBhcHBlbmQgdGhlIGNvbXB1dGVkIENSQy4KKyAqLworI2lmIENSQ19MRV9CSVRTID4gNjQgfHwgQ1JDX0xFX0JJVFMgPCAxIHx8IENSQ19MRV9CSVRTID09IDE2IHx8IFwKKwlDUkNfTEVfQklUUyAmIENSQ19MRV9CSVRTLTEKKyMgZXJyb3IgIkNSQ19MRV9CSVRTIG11c3QgYmUgb25lIG9mIHsxLCAyLCA0LCA4LCAzMiwgNjR9IgorI2VuZGlmCisKKy8qCisgKiBCaWctZW5kaWFuIENSQyBjb21wdXRhdGlvbi4gIFVzZWQgd2l0aCBzZXJpYWwgYml0IHN0cmVhbXMgc2VudAorICogbXNiaXQtZmlyc3QuICBCZSBzdXJlIHRvIHVzZSBjcHVfdG9fYmUzMigpIHRvIGFwcGVuZCB0aGUgY29tcHV0ZWQgQ1JDLgorICovCisjaWYgQ1JDX0JFX0JJVFMgPiA2NCB8fCBDUkNfQkVfQklUUyA8IDEgfHwgQ1JDX0JFX0JJVFMgPT0gMTYgfHwgXAorCUNSQ19CRV9CSVRTICYgQ1JDX0JFX0JJVFMtMQorIyBlcnJvciAiQ1JDX0JFX0JJVFMgbXVzdCBiZSBvbmUgb2YgezEsIDIsIDQsIDgsIDMyLCA2NH0iCisjZW5kaWYKKworCisjZGVmaW5lIF9fX2NvbnN0YW50X3N3YWIzMih4KSBcCisJKCh1aW50MzJfdCkoIFwKKwkJKCgodWludDMyX3QpKHgpICYgKHVpbnQzMl90KTB4MDAwMDAwZmZVTCkgPDwgMjQpIHwgXAorCQkoKCh1aW50MzJfdCkoeCkgJiAodWludDMyX3QpMHgwMDAwZmYwMFVMKSA8PCAgOCkgfCBcCisJCSgoKHVpbnQzMl90KSh4KSAmICh1aW50MzJfdCkweDAwZmYwMDAwVUwpID4+ICA4KSB8IFwKKwkJKCgodWludDMyX3QpKHgpICYgKHVpbnQzMl90KTB4ZmYwMDAwMDBVTCkgPj4gMjQpKSkKKworCisjaWYgKF9fR05VQ19fID49IDMpCisjZGVmaW5lIGxpa2VseSh4KQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAxKQorI2RlZmluZSB1bmxpa2VseSh4KQlfX2J1aWx0aW5fZXhwZWN0KCEhKHgpLCAwKQorI2Vsc2UKKyNkZWZpbmUgbGlrZWx5KHgpCSh4KQorI2RlZmluZSB1bmxpa2VseSh4KQkoeCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3N1bS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvY3N1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZWUwN2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9jc3VtLmMKQEAgLTAsMCArMSwxMDE4IEBACisvKgorICogY3N1bS5jIC0tLSBjaGVja3N1bW1pbmcgb2YgZXh0MyBzdHJ1Y3R1cmVzCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IENsdXN0ZXIgRmlsZSBTeXN0ZW1zLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgYnkgQW5kcmVhcyBEaWxnZXIgPGFkaWxnZXJAY2x1c3RlcmZzLmNvbT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJjcmMxNi5oIgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaWZuZGVmIG9mZnNldG9mCisjZGVmaW5lIG9mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQorI2VuZGlmCisKKyNpZmRlZiBERUJVRworI2RlZmluZSBTVEFUSUMKKyNlbHNlCisjZGVmaW5lIFNUQVRJQyBzdGF0aWMKKyNlbmRpZgorCit2b2lkIGV4dDJmc19pbml0X2NzdW1fc2VlZChleHQyX2ZpbHN5cyBmcykKK3sKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2NzdW1fc2VlZChmcy0+c3VwZXIpKQorCQlmcy0+Y3N1bV9zZWVkID0gZnMtPnN1cGVyLT5zX2NoZWNrc3VtX3NlZWQ7CisJZWxzZSBpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJZnMtPmNzdW1fc2VlZCA9IGV4dDJmc19jcmMzMmNfbGUofjAsIGZzLT5zdXBlci0+c191dWlkLAorCQkJCQkJIHNpemVvZihmcy0+c3VwZXItPnNfdXVpZCkpOworfQorCitzdGF0aWMgX191MzIgZXh0MmZzX21tcF9jc3VtKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgbW1wX3N0cnVjdCAqbW1wKQoreworCWludCBvZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgbW1wX3N0cnVjdCwgbW1wX2NoZWNrc3VtKTsKKworCXJldHVybiBleHQyZnNfY3JjMzJjX2xlKGZzLT5jc3VtX3NlZWQsICh1bnNpZ25lZCBjaGFyICopbW1wLCBvZmZzZXQpOworfQorCitpbnQgZXh0MmZzX21tcF9jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCkKK3sKKwlfX3UzMiBjYWxjdWxhdGVkOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMTsKKworCWNhbGN1bGF0ZWQgPSBleHQyZnNfbW1wX2NzdW0oZnMsIG1tcCk7CisKKwlyZXR1cm4gZXh0MmZzX2xlMzJfdG9fY3B1KG1tcC0+bW1wX2NoZWNrc3VtKSA9PSBjYWxjdWxhdGVkOworfQorCitlcnJjb2RlX3QgZXh0MmZzX21tcF9jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCkKK3sKKwlfX3UzMiBjcmM7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAwOworCisJY3JjID0gZXh0MmZzX21tcF9jc3VtKGZzLCBtbXApOworCW1tcC0+bW1wX2NoZWNrc3VtID0gZXh0MmZzX2NwdV90b19sZTMyKGNyYyk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGV4dDJmc192ZXJpZnlfY3N1bV90eXBlKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpCit7CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMTsKKworCXJldHVybiBzYi0+c19jaGVja3N1bV90eXBlID09IEVYVDJfQ1JDMzJDX0NIS1NVTTsKK30KKworc3RhdGljIF9fdTMyIGV4dDJmc19zdXBlcmJsb2NrX2NzdW0oZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpCit7CisJaW50IG9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrLCBzX2NoZWNrc3VtKTsKKworCXJldHVybiBleHQyZnNfY3JjMzJjX2xlKH4wLCAodW5zaWduZWQgY2hhciAqKXNiLCBvZmZzZXQpOworfQorCisvKiBOT1RFOiBUaGUgaW5wdXQgdG8gdGhpcyBmdW5jdGlvbiBNVVNUIGJlIGluIExFIG9yZGVyICovCitpbnQgZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYikKK3sKKwlfX3UzMiBmbGFnLCBjYWxjdWxhdGVkOworCisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19TV0FQX0JZVEVTKQorCQlmbGFnID0gRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNOworCWVsc2UKKwkJZmxhZyA9IGV4dDJmc19jcHVfdG9fbGUzMihFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX01FVEFEQVRBX0NTVU0pOworCisJaWYgKCFFWFQyX0hBU19ST19DT01QQVRfRkVBVFVSRShmcy0+c3VwZXIsIGZsYWcpKQorCQlyZXR1cm4gMTsKKworCWNhbGN1bGF0ZWQgPSBleHQyZnNfc3VwZXJibG9ja19jc3VtKGZzLCBzYik7CisKKwlyZXR1cm4gZXh0MmZzX2xlMzJfdG9fY3B1KHNiLT5zX2NoZWNrc3VtKSA9PSBjYWxjdWxhdGVkOworfQorCisvKiBOT1RFOiBUaGUgaW5wdXQgdG8gdGhpcyBmdW5jdGlvbiBNVVNUIGJlIGluIExFIG9yZGVyICovCitlcnJjb2RlX3QgZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpCit7CisJX191MzIgZmxhZywgY3JjOworCisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19TV0FQX0JZVEVTKQorCQlmbGFnID0gRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNOworCWVsc2UKKwkJZmxhZyA9IGV4dDJmc19jcHVfdG9fbGUzMihFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX01FVEFEQVRBX0NTVU0pOworCisJaWYgKCFFWFQyX0hBU19ST19DT01QQVRfRkVBVFVSRShmcy0+c3VwZXIsIGZsYWcpKQorCQlyZXR1cm4gMDsKKworCWNyYyA9IGV4dDJmc19zdXBlcmJsb2NrX2NzdW0oZnMsIHNiKTsKKwlzYi0+c19jaGVja3N1bSA9IGV4dDJmc19jcHVfdG9fbGUzMihjcmMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2V4dF9hdHRyX2Jsb2NrX2NzdW0oZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICBleHQyX2lub190IGludW0gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCQkgICAgYmxrNjRfdCBibG9jaywKKwkJCQkJICAgIHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqaGRyLAorCQkJCQkgICAgX191MzIgKmNyYykKK3sKKwljaGFyICpidWYgPSAoY2hhciAqKWhkcjsKKwlfX3UzMiBvbGRfY3JjID0gaGRyLT5oX2NoZWNrc3VtOworCisJaGRyLT5oX2NoZWNrc3VtID0gMDsKKwlibG9jayA9IGV4dDJmc19jcHVfdG9fbGU2NChibG9jayk7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKikmYmxvY2ssCisJCQkJc2l6ZW9mKGJsb2NrKSk7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoKmNyYywgKHVuc2lnbmVkIGNoYXIgKilidWYsIGZzLT5ibG9ja3NpemUpOworCWhkci0+aF9jaGVja3N1bSA9IG9sZF9jcmM7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCSAgICAgIGJsazY0X3QgYmxvY2ssCisJCQkJICAgICAgc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZHIpCit7CisJX191MzIgY2FsY3VsYXRlZDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMTsKKworCXJldHZhbCA9IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtKGZzLCBpbnVtLCBibG9jaywgaGRyLCAmY2FsY3VsYXRlZCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gZXh0MmZzX2xlMzJfdG9fY3B1KGhkci0+aF9jaGVja3N1bSkgPT0gY2FsY3VsYXRlZDsKK30KKworZXJyY29kZV90IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQkgYmxrNjRfdCBibG9jaywKKwkJCQkJIHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqaGRyKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJX191MzIgY3JjOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtKGZzLCBpbnVtLCBibG9jaywgaGRyLCAmY3JjKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWhkci0+aF9jaGVja3N1bSA9IGV4dDJmc19jcHVfdG9fbGUzMihjcmMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgX191MTYgZG9fbm90aGluZzE2KF9fdTE2IHgpCit7CisJcmV0dXJuIHg7Cit9CisKK3N0YXRpYyBfX3UxNiBkaXNrX3RvX2hvc3QxNihfX3UxNiB4KQoreworCXJldHVybiBleHQyZnNfbGUxNl90b19jcHUoeCk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgX19nZXRfZHhfY291bnRsaW1pdChleHQyX2ZpbHN5cyBmcywKKwkJCQkgICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJCSAgICAgc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKmNjLAorCQkJCSAgICAgaW50ICpvZmZzZXQsCisJCQkJICAgICBpbnQgbmVlZF9zd2FiKQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZHA7CisJc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvICpyb290OworCXN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKmM7CisJaW50IGNvdW50X29mZnNldCwgbWF4X3NhbmVfZW50cmllczsKKwl1bnNpZ25lZCBpbnQgcmVjX2xlbjsKKwlfX3UxNiAoKnRyYW5zbGF0ZSkoX191MTYpID0gKG5lZWRfc3dhYiA/IGRpc2tfdG9faG9zdDE2IDogZG9fbm90aGluZzE2KTsKKworCXJlY19sZW4gPSB0cmFuc2xhdGUoZGlyZW50LT5yZWNfbGVuKTsKKworCWlmIChyZWNfbGVuID09IGZzLT5ibG9ja3NpemUgJiYgdHJhbnNsYXRlKGRpcmVudC0+bmFtZV9sZW4pID09IDApCisJCWNvdW50X29mZnNldCA9IDg7CisJZWxzZSBpZiAocmVjX2xlbiA9PSAxMikgeworCQlkcCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikoKChjaGFyICopZGlyZW50KSArIHJlY19sZW4pOworCQlyZWNfbGVuID0gdHJhbnNsYXRlKGRwLT5yZWNfbGVuKTsKKwkJaWYgKHJlY19sZW4gIT0gZnMtPmJsb2Nrc2l6ZSAtIDEyKQorCQkJcmV0dXJuIEVYVDJfRVRfREJfTk9UX0ZPVU5EOworCQlyb290ID0gKHN0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyAqKSgoKGNoYXIgKilkcCArIDEyKSk7CisJCWlmIChyb290LT5yZXNlcnZlZF96ZXJvIHx8CisJCSAgICByb290LT5pbmZvX2xlbmd0aCAhPSBzaXplb2Yoc3RydWN0IGV4dDJfZHhfcm9vdF9pbmZvKSkKKwkJCXJldHVybiBFWFQyX0VUX0RCX05PVF9GT1VORDsKKwkJY291bnRfb2Zmc2V0ID0gMzI7CisJfSBlbHNlCisJCXJldHVybiBFWFQyX0VUX0RCX05PVF9GT1VORDsKKworCWMgPSAoc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqKSgoKGNoYXIgKilkaXJlbnQpICsgY291bnRfb2Zmc2V0KTsKKwltYXhfc2FuZV9lbnRyaWVzID0gKGZzLT5ibG9ja3NpemUgLSBjb3VudF9vZmZzZXQpIC8KKwkJCSAgIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSk7CisJaWYgKGV4dDJmc19sZTE2X3RvX2NwdShjLT5saW1pdCkgPiBtYXhfc2FuZV9lbnRyaWVzIHx8CisJICAgIGV4dDJmc19sZTE2X3RvX2NwdShjLT5jb3VudCkgPiBtYXhfc2FuZV9lbnRyaWVzKQorCQlyZXR1cm4gRVhUMl9FVF9ESVJfTk9fU1BBQ0VfRk9SX0NTVU07CisKKwlpZiAob2Zmc2V0KQorCQkqb2Zmc2V0ID0gY291bnRfb2Zmc2V0OworCWlmIChjYykKKwkJKmNjID0gYzsKKworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2dldF9keF9jb3VudGxpbWl0KGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJCSAgIHN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKipjYywKKwkJCQkgICBpbnQgKm9mZnNldCkKK3sKKwlyZXR1cm4gX19nZXRfZHhfY291bnRsaW1pdChmcywgZGlyZW50LCBjYywgb2Zmc2V0LCAwKTsKK30KKwordm9pZCBleHQyZnNfaW5pdGlhbGl6ZV9kaXJlbnRfdGFpbChleHQyX2ZpbHN5cyBmcywKKwkJCQkgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCAqdCkKK3sKKwltZW1zZXQodCwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKSk7CisJZXh0MmZzX3NldF9yZWNfbGVuKGZzLCBzaXplb2Yoc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwpLAorCQkJICAgKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKXQpOworCXQtPmRldF9yZXNlcnZlZF9uYW1lX2xlbiA9IEVYVDJfRElSX05BTUVfTEVOX0NTVU07Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgX19nZXRfZGlyZW50X3RhaWwoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgKip0dCwKKwkJCQkgICBpbnQgbmVlZF9zd2FiKQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZDsKKwl2b2lkICp0b3A7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgKnQ7CisJdW5zaWduZWQgaW50IHJlY19sZW47CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisJX191MTYgKCp0cmFuc2xhdGUpKF9fdTE2KSA9IChuZWVkX3N3YWIgPyBkaXNrX3RvX2hvc3QxNiA6IGRvX25vdGhpbmcxNik7CisKKwlkID0gZGlyZW50OworCXRvcCA9IEVYVDJfRElSRU5UX1RBSUwoZGlyZW50LCBmcy0+YmxvY2tzaXplKTsKKworCXJlY19sZW4gPSB0cmFuc2xhdGUoZC0+cmVjX2xlbik7CisJd2hpbGUgKHJlY19sZW4gJiYgIShyZWNfbGVuICYgMHgzKSkgeworCQlkID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSgoKGNoYXIgKilkKSArIHJlY19sZW4pOworCQlpZiAoKHZvaWQgKilkID49IHRvcCkKKwkJCWJyZWFrOworCQlyZWNfbGVuID0gdHJhbnNsYXRlKGQtPnJlY19sZW4pOworCX0KKworCWlmIChkICE9IHRvcCkKKwkJcmV0dXJuIEVYVDJfRVRfRElSX05PX1NQQUNFX0ZPUl9DU1VNOworCisJdCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCAqKWQ7CisJaWYgKHQtPmRldF9yZXNlcnZlZF96ZXJvMSB8fAorCSAgICB0cmFuc2xhdGUodC0+ZGV0X3JlY19sZW4pICE9IHNpemVvZihzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCkgfHwKKwkgICAgdHJhbnNsYXRlKHQtPmRldF9yZXNlcnZlZF9uYW1lX2xlbikgIT0gRVhUMl9ESVJfTkFNRV9MRU5fQ1NVTSkKKwkJcmV0dXJuIEVYVDJfRVRfRElSX05PX1NQQUNFX0ZPUl9DU1VNOworCisJaWYgKHR0KQorCQkqdHQgPSB0OworCXJldHVybiByZXR2YWw7Cit9CisKK2ludCBleHQyZnNfZGlyZW50X2hhc190YWlsKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCkKK3sKKwlyZXR1cm4gX19nZXRfZGlyZW50X3RhaWwoZnMsIGRpcmVudCwgTlVMTCwgMCkgPT0gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfZGlyZW50X2NzdW0oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW51bSwKKwkJCQkgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsIF9fdTMyICpjcmMsCisJCQkJICAgIGludCBzaXplKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJY2hhciAqYnVmID0gKGNoYXIgKilkaXJlbnQ7CisJX191MzIgZ2VuOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGludW0sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWludW0gPSBleHQyZnNfY3B1X3RvX2xlMzIoaW51bSk7CisJZ2VuID0gZXh0MmZzX2NwdV90b19sZTMyKGlub2RlLmlfZ2VuZXJhdGlvbik7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKikmaW51bSwKKwkJCQlzaXplb2YoaW51bSkpOworCSpjcmMgPSBleHQyZnNfY3JjMzJjX2xlKCpjcmMsICh1bnNpZ25lZCBjaGFyICopJmdlbiwgc2l6ZW9mKGdlbikpOworCSpjcmMgPSBleHQyZnNfY3JjMzJjX2xlKCpjcmMsICh1bnNpZ25lZCBjaGFyICopYnVmLCBzaXplKTsKKworCXJldHVybiAwOworfQorCitpbnQgZXh0MmZzX2RpcmVudF9jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJICAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQpCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlfX3UzMiBjYWxjdWxhdGVkOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICp0OworCisJcmV0dmFsID0gX19nZXRfZGlyZW50X3RhaWwoZnMsIGRpcmVudCwgJnQsIDEpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAxOworCisJLyoKKwkgKiBUaGUgY2hlY2tzdW0gZmllbGQgaXMgb3ZlcmxhaWQgd2l0aCB0aGUgZGlyZW50LT5uYW1lIGZpZWxkCisJICogc28gdGhlIHN3YXBmcy5jIGZ1bmN0aW9ucyB3b24ndCBjaGFuZ2UgdGhlIGVuZGlhbm5lc3MuCisJICovCisJcmV0dmFsID0gZXh0MmZzX2RpcmVudF9jc3VtKGZzLCBpbnVtLCBkaXJlbnQsICZjYWxjdWxhdGVkLAorCQkJCSAgICAoY2hhciAqKXQgLSAoY2hhciAqKWRpcmVudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIGV4dDJmc19sZTMyX3RvX2NwdSh0LT5kZXRfY2hlY2tzdW0pID09IGNhbGN1bGF0ZWQ7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2RpcmVudF9jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCV9fdTMyIGNyYzsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCAqdDsKKworCXJldHZhbCA9IF9fZ2V0X2RpcmVudF90YWlsKGZzLCBkaXJlbnQsICZ0LCAxKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJLyogc3dhcGZzLmMgZnVuY3Rpb25zIGRvbid0IGNoYW5nZSB0aGUgY2hlY2tzdW0gZW5kaWFubmVzcyAqLworCXJldHZhbCA9IGV4dDJmc19kaXJlbnRfY3N1bShmcywgaW51bSwgZGlyZW50LCAmY3JjLAorCQkJCSAgICAoY2hhciAqKXQgLSAoY2hhciAqKWRpcmVudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwl0LT5kZXRfY2hlY2tzdW0gPSBleHQyZnNfY3B1X3RvX2xlMzIoY3JjKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfZHhfY3N1bShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJCV9fdTMyICpjcmMsIGludCBjb3VudF9vZmZzZXQsIGludCBjb3VudCwKKwkJCQlzdHJ1Y3QgZXh0Ml9keF90YWlsICp0KQoreworCWVycmNvZGVfdCByZXR2YWw7CisJY2hhciAqYnVmID0gKGNoYXIgKilkaXJlbnQ7CisJaW50IHNpemU7CisJX191MzIgb2xkX2NzdW0sIGdlbjsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKworCXNpemUgPSBjb3VudF9vZmZzZXQgKyAoY291bnQgKiBzaXplb2Yoc3RydWN0IGV4dDJfZHhfZW50cnkpKTsKKwlvbGRfY3N1bSA9IHQtPmR0X2NoZWNrc3VtOworCXQtPmR0X2NoZWNrc3VtID0gMDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbnVtLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpbnVtID0gZXh0MmZzX2NwdV90b19sZTMyKGludW0pOworCWdlbiA9IGV4dDJmc19jcHVfdG9fbGUzMihpbm9kZS5pX2dlbmVyYXRpb24pOworCSpjcmMgPSBleHQyZnNfY3JjMzJjX2xlKGZzLT5jc3VtX3NlZWQsICh1bnNpZ25lZCBjaGFyICopJmludW0sCisJCQkJc2l6ZW9mKGludW0pKTsKKwkqY3JjID0gZXh0MmZzX2NyYzMyY19sZSgqY3JjLCAodW5zaWduZWQgY2hhciAqKSZnZW4sIHNpemVvZihnZW4pKTsKKwkqY3JjID0gZXh0MmZzX2NyYzMyY19sZSgqY3JjLCAodW5zaWduZWQgY2hhciAqKWJ1Ziwgc2l6ZSk7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoKmNyYywgKHVuc2lnbmVkIGNoYXIgKil0LAorCQkJCXNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKSk7CisJdC0+ZHRfY2hlY2tzdW0gPSBvbGRfY3N1bTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGV4dDJmc19keF9jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCSBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCkKK3sKKwlfX3UzMiBjYWxjdWxhdGVkOworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqYzsKKwlzdHJ1Y3QgZXh0Ml9keF90YWlsICp0OworCWludCBjb3VudF9vZmZzZXQsIGxpbWl0LCBjb3VudDsKKworCXJldHZhbCA9IF9fZ2V0X2R4X2NvdW50bGltaXQoZnMsIGRpcmVudCwgJmMsICZjb3VudF9vZmZzZXQsIDEpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAxOworCWxpbWl0ID0gZXh0MmZzX2xlMTZfdG9fY3B1KGMtPmxpbWl0KTsKKwljb3VudCA9IGV4dDJmc19sZTE2X3RvX2NwdShjLT5jb3VudCk7CisJaWYgKGNvdW50X29mZnNldCArIChsaW1pdCAqIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSkpID4KKwkgICAgZnMtPmJsb2Nrc2l6ZSAtIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKSkKKwkJcmV0dXJuIDA7CisJLyogaHRyZWUgc3RydWN0cyBhcmUgYWNjZXNzZWQgaW4gTEUgb3JkZXIgKi8KKwl0ID0gKHN0cnVjdCBleHQyX2R4X3RhaWwgKikoKChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKWMpICsgbGltaXQpOworCXJldHZhbCA9IGV4dDJmc19keF9jc3VtKGZzLCBpbnVtLCBkaXJlbnQsICZjYWxjdWxhdGVkLCBjb3VudF9vZmZzZXQsCisJCQkJY291bnQsIHQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAwOworCisJcmV0dXJuIGV4dDJmc19sZTMyX3RvX2NwdSh0LT5kdF9jaGVja3N1bSkgPT0gY2FsY3VsYXRlZDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfZHhfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW51bSwKKwkJCQkgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQpCit7CisJX191MzIgY3JjOworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCXN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKmM7CisJc3RydWN0IGV4dDJfZHhfdGFpbCAqdDsKKwlpbnQgY291bnRfb2Zmc2V0LCBsaW1pdCwgY291bnQ7CisKKwlyZXR2YWwgPSBfX2dldF9keF9jb3VudGxpbWl0KGZzLCBkaXJlbnQsICZjLCAmY291bnRfb2Zmc2V0LCAxKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWxpbWl0ID0gZXh0MmZzX2xlMTZfdG9fY3B1KGMtPmxpbWl0KTsKKwljb3VudCA9IGV4dDJmc19sZTE2X3RvX2NwdShjLT5jb3VudCk7CisJaWYgKGNvdW50X29mZnNldCArIChsaW1pdCAqIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSkpID4KKwkgICAgZnMtPmJsb2Nrc2l6ZSAtIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKSkKKwkJcmV0dXJuIEVYVDJfRVRfRElSX05PX1NQQUNFX0ZPUl9DU1VNOworCXQgPSAoc3RydWN0IGV4dDJfZHhfdGFpbCAqKSgoKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopYykgKyBsaW1pdCk7CisKKwkvKiBodHJlZSBzdHJ1Y3RzIGFyZSBhY2Nlc3NlZCBpbiBMRSBvcmRlciAqLworCXJldHZhbCA9IGV4dDJmc19keF9jc3VtKGZzLCBpbnVtLCBkaXJlbnQsICZjcmMsIGNvdW50X29mZnNldCwgY291bnQsIHQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJdC0+ZHRfY2hlY2tzdW0gPSBleHQyZnNfY3B1X3RvX2xlMzIoY3JjKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgZXh0MmZzX2Rpcl9ibG9ja19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCSBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCkKK3sKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAxOworCisJaWYgKF9fZ2V0X2RpcmVudF90YWlsKGZzLCBkaXJlbnQsIE5VTEwsIDEpID09IDApCisJCXJldHVybiBleHQyZnNfZGlyZW50X2NzdW1fdmVyaWZ5KGZzLCBpbnVtLCBkaXJlbnQpOworCWlmIChfX2dldF9keF9jb3VudGxpbWl0KGZzLCBkaXJlbnQsIE5VTEwsIE5VTEwsIDEpID09IDApCisJCXJldHVybiBleHQyZnNfZHhfY3N1bV92ZXJpZnkoZnMsIGludW0sIGRpcmVudCk7CisKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19kaXJfYmxvY2tfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW51bSwKKwkJCQkgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQpCit7CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCWlmIChfX2dldF9kaXJlbnRfdGFpbChmcywgZGlyZW50LCBOVUxMLCAxKSA9PSAwKQorCQlyZXR1cm4gZXh0MmZzX2RpcmVudF9jc3VtX3NldChmcywgaW51bSwgZGlyZW50KTsKKwlpZiAoX19nZXRfZHhfY291bnRsaW1pdChmcywgZGlyZW50LCBOVUxMLCBOVUxMLCAxKSA9PSAwKQorCQlyZXR1cm4gZXh0MmZzX2R4X2NzdW1fc2V0KGZzLCBpbnVtLCBkaXJlbnQpOworCisJaWYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpCisJCXJldHVybiAwOworCXJldHVybiBFWFQyX0VUX0RJUl9OT19TUEFDRV9GT1JfQ1NVTTsKK30KKworI2RlZmluZSBFWFQzX0VYVEVOVF9UQUlMX09GRlNFVChoZHIpCShzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcikgKyBcCisJKHNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnQpICogZXh0MmZzX2xlMTZfdG9fY3B1KChoZHIpLT5laF9tYXgpKSkKKworc3RhdGljIHN0cnVjdCBleHQzX2V4dGVudF90YWlsICpnZXRfZXh0ZW50X3RhaWwoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqaCkKK3sKKwlyZXR1cm4gKHN0cnVjdCBleHQzX2V4dGVudF90YWlsICopKCgoY2hhciAqKWgpICsKKwkJCQkJICAgRVhUM19FWFRFTlRfVEFJTF9PRkZTRVQoaCkpOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19leHRlbnRfYmxvY2tfY3N1bShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQkgIHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKmVoLAorCQkJCQkgIF9fdTMyICpjcmMpCit7CisJaW50IHNpemU7CisJX191MzIgZ2VuOworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisKKwlzaXplID0gRVhUM19FWFRFTlRfVEFJTF9PRkZTRVQoZWgpICsgb2Zmc2V0b2Yoc3RydWN0IGV4dDNfZXh0ZW50X3RhaWwsCisJCQkJCQkgICAgICBldF9jaGVja3N1bSk7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW51bSwgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWludW0gPSBleHQyZnNfY3B1X3RvX2xlMzIoaW51bSk7CisJZ2VuID0gZXh0MmZzX2NwdV90b19sZTMyKGlub2RlLmlfZ2VuZXJhdGlvbik7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKikmaW51bSwKKwkJCQlzaXplb2YoaW51bSkpOworCSpjcmMgPSBleHQyZnNfY3JjMzJjX2xlKCpjcmMsICh1bnNpZ25lZCBjaGFyICopJmdlbiwgc2l6ZW9mKGdlbikpOworCSpjcmMgPSBleHQyZnNfY3JjMzJjX2xlKCpjcmMsICh1bnNpZ25lZCBjaGFyICopZWgsIHNpemUpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBleHQyZnNfZXh0ZW50X2Jsb2NrX2NzdW1fdmVyaWZ5KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGludW0sCisJCQkJICAgIHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKmVoKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJX191MzIgcHJvdmlkZWQsIGNhbGN1bGF0ZWQ7CisJc3RydWN0IGV4dDNfZXh0ZW50X3RhaWwgKnQgPSBnZXRfZXh0ZW50X3RhaWwoZWgpOworCisJLyoKKwkgKiBUaGUgZXh0ZW50IHRyZWUgc3RydWN0dXJlcyBhcmUgYWNjZXNzZWQgaW4gTEUgb3JkZXIsIHNvIHdlIG11c3QKKwkgKiBzd2FwIHRoZSBjaGVja3N1bSBieXRlcyBoZXJlLgorCSAqLworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDE7CisKKwlwcm92aWRlZCA9IGV4dDJmc19sZTMyX3RvX2NwdSh0LT5ldF9jaGVja3N1bSk7CisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtKGZzLCBpbnVtLCBlaCwgJmNhbGN1bGF0ZWQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAwOworCisJcmV0dXJuIHByb3ZpZGVkID09IGNhbGN1bGF0ZWQ7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X2Jsb2NrX2NzdW1fc2V0KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGludW0sCisJCQkJICAgICAgIHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKmVoKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJX191MzIgY3JjOworCXN0cnVjdCBleHQzX2V4dGVudF90YWlsICp0ID0gZ2V0X2V4dGVudF90YWlsKGVoKTsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFRoZSBleHRlbnQgdHJlZSBzdHJ1Y3R1cmVzIGFyZSBhY2Nlc3NlZCBpbiBMRSBvcmRlciwgc28gd2UgbXVzdAorCSAqIHN3YXAgdGhlIGNoZWNrc3VtIGJ5dGVzIGhlcmUuCisJICovCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtKGZzLCBpbnVtLCBlaCwgJmNyYyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwl0LT5ldF9jaGVja3N1bSA9IGV4dDJmc19jcHVfdG9fbGUzMihjcmMpOworCXJldHVybiByZXR2YWw7Cit9CisKK2ludCBleHQyZnNfaW5vZGVfYml0bWFwX2NzdW1fdmVyaWZ5KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJICAgIGNoYXIgKmJpdG1hcCwgaW50IHNpemUpCit7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwID0gKHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKikKKwkJCWV4dDJmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCV9fdTMyIHByb3ZpZGVkLCBjYWxjdWxhdGVkOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMTsKKwlwcm92aWRlZCA9IGdkcC0+YmdfaW5vZGVfYml0bWFwX2NzdW1fbG87CisJY2FsY3VsYXRlZCA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKiliaXRtYXAsCisJCQkJICAgICAgc2l6ZSk7CisJaWYgKGZzLT5zdXBlci0+c19kZXNjX3NpemUgPj0gRVhUNF9CR19JTk9ERV9CSVRNQVBfQ1NVTV9ISV9FTkQpCisJCXByb3ZpZGVkIHw9IChfX3UzMilnZHAtPmJnX2lub2RlX2JpdG1hcF9jc3VtX2hpIDw8IDE2OworCWVsc2UKKwkJY2FsY3VsYXRlZCAmPSAweEZGRkY7CisKKwlyZXR1cm4gcHJvdmlkZWQgPT0gY2FsY3VsYXRlZDsKK30KKworZXJyY29kZV90IGV4dDJmc19pbm9kZV9iaXRtYXBfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkgICAgICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSkKK3sKKwlfX3UzMiBjcmM7CisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqZ2RwID0gKHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKikKKwkJCWV4dDJmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgZ3JvdXApOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCWNyYyA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKiliaXRtYXAsIHNpemUpOworCWdkcC0+YmdfaW5vZGVfYml0bWFwX2NzdW1fbG8gPSBjcmMgJiAweEZGRkY7CisJaWYgKGZzLT5zdXBlci0+c19kZXNjX3NpemUgPj0gRVhUNF9CR19JTk9ERV9CSVRNQVBfQ1NVTV9ISV9FTkQpCisJCWdkcC0+YmdfaW5vZGVfYml0bWFwX2NzdW1faGkgPSBjcmMgPj4gMTY7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGV4dDJmc19ibG9ja19iaXRtYXBfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkgICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHAgPSAoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyAqKQorCQkJZXh0MmZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBncm91cCk7CisJX191MzIgcHJvdmlkZWQsIGNhbGN1bGF0ZWQ7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAxOworCXByb3ZpZGVkID0gZ2RwLT5iZ19ibG9ja19iaXRtYXBfY3N1bV9sbzsKKwljYWxjdWxhdGVkID0gZXh0MmZzX2NyYzMyY19sZShmcy0+Y3N1bV9zZWVkLCAodW5zaWduZWQgY2hhciAqKWJpdG1hcCwKKwkJCQkgICAgICBzaXplKTsKKwlpZiAoZnMtPnN1cGVyLT5zX2Rlc2Nfc2l6ZSA+PSBFWFQ0X0JHX0JMT0NLX0JJVE1BUF9DU1VNX0hJX0xPQ0FUSU9OKQorCQlwcm92aWRlZCB8PSAoX191MzIpZ2RwLT5iZ19ibG9ja19iaXRtYXBfY3N1bV9oaSA8PCAxNjsKKwllbHNlCisJCWNhbGN1bGF0ZWQgJj0gMHhGRkZGOworCisJcmV0dXJuIHByb3ZpZGVkID09IGNhbGN1bGF0ZWQ7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYmxvY2tfYml0bWFwX2NzdW1fc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJICAgICAgIGNoYXIgKmJpdG1hcCwgaW50IHNpemUpCit7CisJX191MzIgY3JjOworCXN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKmdkcCA9IChzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICopCisJCQlleHQyZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGdyb3VwKTsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwljcmMgPSBleHQyZnNfY3JjMzJjX2xlKGZzLT5jc3VtX3NlZWQsICh1bnNpZ25lZCBjaGFyICopYml0bWFwLCBzaXplKTsKKwlnZHAtPmJnX2Jsb2NrX2JpdG1hcF9jc3VtX2xvID0gY3JjICYgMHhGRkZGOworCWlmIChmcy0+c3VwZXItPnNfZGVzY19zaXplID49IEVYVDRfQkdfQkxPQ0tfQklUTUFQX0NTVU1fSElfTE9DQVRJT04pCisJCWdkcC0+YmdfYmxvY2tfYml0bWFwX2NzdW1faGkgPSBjcmMgPj4gMTY7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfaW5vZGVfY3N1bShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJICAgICAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSwKKwkJCSAgICAgICBfX3UzMiAqY3JjLCBpbnQgaGFzX2hpKQoreworCV9fdTMyIGdlbjsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqZGVzYyA9IGlub2RlOworCXNpemVfdCBzaXplID0gZnMtPnN1cGVyLT5zX2lub2RlX3NpemU7CisJX191MTYgb2xkX2xvOworCV9fdTE2IG9sZF9oaSA9IDA7CisKKwlvbGRfbG8gPSBpbm9kZS0+aV9jaGVja3N1bV9sbzsKKwlpbm9kZS0+aV9jaGVja3N1bV9sbyA9IDA7CisJaWYgKGhhc19oaSkgeworCQlvbGRfaGkgPSBpbm9kZS0+aV9jaGVja3N1bV9oaTsKKwkJaW5vZGUtPmlfY2hlY2tzdW1faGkgPSAwOworCX0KKworCWludW0gPSBleHQyZnNfY3B1X3RvX2xlMzIoaW51bSk7CisJZ2VuID0gaW5vZGUtPmlfZ2VuZXJhdGlvbjsKKwkqY3JjID0gZXh0MmZzX2NyYzMyY19sZShmcy0+Y3N1bV9zZWVkLCAodW5zaWduZWQgY2hhciAqKSZpbnVtLAorCQkJCXNpemVvZihpbnVtKSk7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoKmNyYywgKHVuc2lnbmVkIGNoYXIgKikmZ2VuLCBzaXplb2YoZ2VuKSk7CisJKmNyYyA9IGV4dDJmc19jcmMzMmNfbGUoKmNyYywgKHVuc2lnbmVkIGNoYXIgKilkZXNjLCBzaXplKTsKKworCWlub2RlLT5pX2NoZWNrc3VtX2xvID0gb2xkX2xvOworCWlmIChoYXNfaGkpCisJCWlub2RlLT5pX2NoZWNrc3VtX2hpID0gb2xkX2hpOworCXJldHVybiAwOworfQorCitpbnQgZXh0MmZzX2lub2RlX2NzdW1fdmVyaWZ5KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGludW0sCisJCQkgICAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCV9fdTMyIHByb3ZpZGVkLCBjYWxjdWxhdGVkOworCXVuc2lnbmVkIGludCBpLCBoYXNfaGk7CisJY2hhciAqY3A7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAxOworCisJaGFzX2hpID0gKEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpID4gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICYmCisJCSAgaW5vZGUtPmlfZXh0cmFfaXNpemUgPj0gRVhUNF9JTk9ERV9DU1VNX0hJX0VYVFJBX0VORCk7CisKKwlwcm92aWRlZCA9IGV4dDJmc19sZTE2X3RvX2NwdShpbm9kZS0+aV9jaGVja3N1bV9sbyk7CisJcmV0dmFsID0gZXh0MmZzX2lub2RlX2NzdW0oZnMsIGludW0sIGlub2RlLCAmY2FsY3VsYXRlZCwgaGFzX2hpKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gMDsKKwlpZiAoaGFzX2hpKSB7CisJCV9fdTMyIGhpID0gZXh0MmZzX2xlMTZfdG9fY3B1KGlub2RlLT5pX2NoZWNrc3VtX2hpKTsKKwkJcHJvdmlkZWQgfD0gaGkgPDwgMTY7CisJfSBlbHNlCisJCWNhbGN1bGF0ZWQgJj0gMHhGRkZGOworCisJaWYgKHByb3ZpZGVkID09IGNhbGN1bGF0ZWQpCisJCXJldHVybiAxOworCisJLyoKKwkgKiBJZiB0aGUgY2hlY2tzdW0gZGlkbid0IG1hdGNoLCBpdCdzIHBvc3NpYmxlIGl0IHdhcyBkdWUgdG8KKwkgKiB0aGUgaW5vZGUgYmVpbmcgYWxsIHplcm8ncy4gIEl0J3MgdW5saWtlbHkgdGhpcyBpcyB0aGUKKwkgKiBjYXNlLCBidXQgaXQgY2FuIGhhcHBlbi4gIFNvIGNoZWNrIGZvciBpdCBoZXJlLiAgKFdlIG9ubHkKKwkgKiBjaGVjayB0aGUgYmFzZSBpbm9kZSBzaW5jZSB0aGF0J3MgZ29vZCBlbm91Z2gsIGFuZCBpdCdzIG5vdAorCSAqIHdvcnRoIHRoZSBib3RoZXIgdG8gZmlndXJlIG91dCBob3cgbXVjaCBvZiB0aGUgZXh0ZW5kZWQKKwkgKiBpbm9kZSwgaWYgYW55LCBpcyBwcmVzZW50LikKKwkgKi8KKwlmb3IgKGNwID0gKGNoYXIgKikgaW5vZGUsIGkgPSAwOworCSAgICAgaSA8IHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSk7CisJICAgICBjcCsrLCBpKyspCisJCWlmICgqY3ApCisJCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsJCS8qIElub2RlIG11c3QgaGF2ZSBiZWVuIGFsbCB6ZXJvJ3MgKi8KK30KKworZXJyY29kZV90IGV4dDJmc19pbm9kZV9jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJICAgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJX191MzIgY3JjOworCWludCBoYXNfaGk7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAwOworCisJaGFzX2hpID0gKEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpID4gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICYmCisJCSAgaW5vZGUtPmlfZXh0cmFfaXNpemUgPj0gRVhUNF9JTk9ERV9DU1VNX0hJX0VYVFJBX0VORCk7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5vZGVfY3N1bShmcywgaW51bSwgaW5vZGUsICZjcmMsIGhhc19oaSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpbm9kZS0+aV9jaGVja3N1bV9sbyA9IGV4dDJmc19jcHVfdG9fbGUxNihjcmMgJiAweEZGRkYpOworCWlmIChoYXNfaGkpCisJCWlub2RlLT5pX2NoZWNrc3VtX2hpID0gZXh0MmZzX2NwdV90b19sZTE2KGNyYyA+PiAxNik7CisJcmV0dXJuIDA7Cit9CisKK19fdTE2IGV4dDJmc19ncm91cF9kZXNjX2NzdW0oZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpkZXNjID0gZXh0MmZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLAorCQkJCQkJCSBncm91cCk7CisJc2l6ZV90IG9mZnNldCwgc2l6ZSA9IEVYVDJfREVTQ19TSVpFKGZzLT5zdXBlcik7CisJX191MTYgY3JjID0gMDsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjIHN3YWJkZXNjOworCXNpemVfdCBzYXZlX3NpemUgPSBzaXplOworCWNvbnN0IHNpemVfdCBleHQ0X2JnX3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyk7CisJc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyAqc2F2ZV9kZXNjID0gZGVzYzsKKworCS8qIEhhdmUgdG8gc3dhYiBiYWNrIHRvIGxpdHRsZS1lbmRpYW4gdG8gZG8gdGhlIGNoZWNrc3VtICovCisJaWYgKHNpemUgPiBleHQ0X2JnX3NpemUpCisJCXNpemUgPSBleHQ0X2JnX3NpemU7CisJbWVtY3B5KCZzd2FiZGVzYywgZGVzYywgc2l6ZSk7CisJZXh0MmZzX3N3YXBfZ3JvdXBfZGVzYzIoZnMsIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopICZzd2FiZGVzYyk7CisJZGVzYyA9IChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopICZzd2FiZGVzYzsKKwlncm91cCA9IGV4dDJmc19zd2FiMzIoZ3JvdXApOworI2VuZGlmCisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkgeworCQkvKiBuZXcgbWV0YWRhdGEgY3N1bSBjb2RlICovCisJCV9fdTE2IG9sZF9jcmM7CisJCV9fdTMyIGNyYzMyOworCisJCW9sZF9jcmMgPSBkZXNjLT5iZ19jaGVja3N1bTsKKwkJZGVzYy0+YmdfY2hlY2tzdW0gPSAwOworCQljcmMzMiA9IGV4dDJmc19jcmMzMmNfbGUoZnMtPmNzdW1fc2VlZCwgKHVuc2lnbmVkIGNoYXIgKikmZ3JvdXAsCisJCQkJCSBzaXplb2YoZ3JvdXApKTsKKwkJY3JjMzIgPSBleHQyZnNfY3JjMzJjX2xlKGNyYzMyLCAodW5zaWduZWQgY2hhciAqKWRlc2MsCisJCQkJCSBzaXplKTsKKwkJZGVzYy0+YmdfY2hlY2tzdW0gPSBvbGRfY3JjOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQlpZiAoc2F2ZV9zaXplID4gZXh0NF9iZ19zaXplKQorCQkJY3JjMzIgPSBleHQyZnNfY3JjMzJjX2xlKGNyYzMyLAorCQkJCSAgICAgKHVuc2lnbmVkIGNoYXIgKilzYXZlX2Rlc2MgKyBleHQ0X2JnX3NpemUsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlX3NpemUgLSBleHQ0X2JnX3NpemUpOworI2VuZGlmCisJCWNyYyA9IGNyYzMyICYgMHhGRkZGOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBvbGQgY3JjMTYgY29kZSAqLworCW9mZnNldCA9IG9mZnNldG9mKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MsIGJnX2NoZWNrc3VtKTsKKwljcmMgPSBleHQyZnNfY3JjMTYofjAsIGZzLT5zdXBlci0+c191dWlkLAorCQkJICAgc2l6ZW9mKGZzLT5zdXBlci0+c191dWlkKSk7CisJY3JjID0gZXh0MmZzX2NyYzE2KGNyYywgJmdyb3VwLCBzaXplb2YoZ3JvdXApKTsKKwljcmMgPSBleHQyZnNfY3JjMTYoY3JjLCBkZXNjLCBvZmZzZXQpOworCW9mZnNldCArPSBzaXplb2YoZGVzYy0+YmdfY2hlY2tzdW0pOyAvKiBza2lwIGNoZWNrc3VtICovCisJLyogZm9yIGNoZWNrc3VtIG9mIHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgZG8gdGhlIHJlc3QuLi4qLworCWlmIChvZmZzZXQgPCBzaXplKSB7CisJCWNyYyA9IGV4dDJmc19jcmMxNihjcmMsIChjaGFyICopZGVzYyArIG9mZnNldCwKKwkJCQkgICBzaXplIC0gb2Zmc2V0KTsKKwl9CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJLyoKKwkgKiBJZiB0aGUgc2l6ZSBvZiB0aGUgYmcgZGVzY3JpcHRvciBpcyBncmVhdGVyIHRoYW4gNjQKKwkgKiBieXRlcywgd2hpY2ggaXMgdGhlIHNpemUgb2YgdGhlIHRyYWRpdGlvbmFsIGV4dDQgYmcKKwkgKiBkZXNjcmlwdG9yLCBjaGVja3N1bSB0aGUgcmVzdCBvZiB0aGUgZGVzY3JpcHRvciBoZXJlCisJICovCisJaWYgKHNhdmVfc2l6ZSA+IGV4dDRfYmdfc2l6ZSkKKwkJY3JjID0gZXh0MmZzX2NyYzE2KGNyYywgKGNoYXIgKilzYXZlX2Rlc2MgKyBleHQ0X2JnX3NpemUsCisJCQkJICAgc2F2ZV9zaXplIC0gZXh0NF9iZ19zaXplKTsKKyNlbmRpZgorCitvdXQ6CisJcmV0dXJuIGNyYzsKK30KKworaW50IGV4dDJmc19ncm91cF9kZXNjX2NzdW1fdmVyaWZ5KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJaWYgKGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSAmJgorCSAgICAoZXh0MmZzX2JnX2NoZWNrc3VtKGZzLCBncm91cCkgIT0KKwkgICAgIGV4dDJmc19ncm91cF9kZXNjX2NzdW0oZnMsIGdyb3VwKSkpCisJCXJldHVybiAwOworCisJcmV0dXJuIDE7Cit9CisKK3ZvaWQgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlpZiAoIWV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSkKKwkJcmV0dXJuOworCisJLyogZXh0MmZzX2JnX2NoZWNrc3VtX3NldCgpIHNldHMgdGhlIGFjdHVhbCBjaGVja3N1bSBmaWVsZCBidXQKKwkgKiBkb2VzIG5vdCBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGl0c2VsZi4gKi8KKwlleHQyZnNfYmdfY2hlY2tzdW1fc2V0KGZzLCBncm91cCwgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bShmcywgZ3JvdXApKTsKK30KKworc3RhdGljIF9fdTMyIGZpbmRfbGFzdF9pbm9kZV9pbmdycChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkgICBfX3UzMiBpbm9kZXNfcGVyX2dycCwgZGdycF90IGdycF9ubykKK3sKKwlleHQyX2lub190IGksIHN0YXJ0X2lubywgZW5kX2lubzsKKworCXN0YXJ0X2lubyA9IGdycF9ubyAqIGlub2Rlc19wZXJfZ3JwICsgMTsKKwllbmRfaW5vID0gc3RhcnRfaW5vICsgaW5vZGVzX3Blcl9ncnAgLSAxOworCisJZm9yIChpID0gZW5kX2lubzsgaSA+PSBzdGFydF9pbm87IGktLSkgeworCQlpZiAoZXh0MmZzX2Zhc3RfdGVzdF9pbm9kZV9iaXRtYXAyKGJpdG1hcCwgaSkpCisJCQlyZXR1cm4gaSAtIHN0YXJ0X2lubyArIDE7CisJfQorCXJldHVybiBpbm9kZXNfcGVyX2dycDsKK30KKworLyogdXBkYXRlIHRoZSBiaXRtYXAgZmxhZ3MsIHNldCB0aGUgaXRhYmxlIGhpZ2ggd2F0ZXJtYXJrLCBhbmQgY2FsY3VsYXRlCisgKiBjaGVja3N1bXMgZm9yIHRoZSBncm91cCBkZXNjcmlwdG9ycyAqLworZXJyY29kZV90IGV4dDJmc19zZXRfZ2R0X2NzdW0oZXh0Ml9maWxzeXMgZnMpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gZnMtPnN1cGVyOworCWludCBkaXJ0eSA9IDA7CisJZGdycF90IGk7CisKKwlpZiAoIWZzLT5pbm9kZV9tYXApCisJCXJldHVybiBFWFQyX0VUX05PX0lOT0RFX0JJVE1BUDsKKworCWlmICghZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpKQorCQlyZXR1cm4gMDsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCV9fdTMyIG9sZF9jc3VtID0gZXh0MmZzX2JnX2NoZWNrc3VtKGZzLCBpKTsKKwkJX191MzIgb2xkX3VudXNlZCA9IGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKTsKKwkJX191MzIgb2xkX2ZsYWdzID0gZXh0MmZzX2JnX2ZsYWdzKGZzLCBpKTsKKwkJX191MzIgb2xkX2ZyZWVfaW5vZGVzX2NvdW50ID0gZXh0MmZzX2JnX2ZyZWVfaW5vZGVzX2NvdW50KGZzLCBpKTsKKwkJX191MzIgb2xkX2ZyZWVfYmxvY2tzX2NvdW50ID0gZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBpKTsKKworCQlpZiAob2xkX2ZyZWVfYmxvY2tzX2NvdW50ID09IHNiLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgJiYKKwkJICAgIGkgIT0gZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKQorCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpOworCisJCWlmIChvbGRfZnJlZV9pbm9kZXNfY291bnQgPT0gc2ItPnNfaW5vZGVzX3Blcl9ncm91cCkgeworCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCQkJZXh0MmZzX2JnX2l0YWJsZV91bnVzZWRfc2V0KGZzLCBpLCBzYi0+c19pbm9kZXNfcGVyX2dyb3VwKTsKKwkJfSBlbHNlIHsKKwkJCWludCB1bnVzZWQgPQorCQkJCXNiLT5zX2lub2Rlc19wZXJfZ3JvdXAgLQorCQkJCWZpbmRfbGFzdF9pbm9kZV9pbmdycChmcy0+aW5vZGVfbWFwLAorCQkJCQkJICAgICAgc2ItPnNfaW5vZGVzX3Blcl9ncm91cCwgaSk7CisKKwkJCWV4dDJmc19iZ19mbGFnc19jbGVhcihmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCQkJZXh0MmZzX2JnX2l0YWJsZV91bnVzZWRfc2V0KGZzLCBpLCB1bnVzZWQpOworCQl9CisKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGkpOworCQlpZiAob2xkX2ZsYWdzICE9IGV4dDJmc19iZ19mbGFncyhmcywgaSkpCisJCQlkaXJ0eSA9IDE7CisJCWlmIChvbGRfdW51c2VkICE9IGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKSkKKwkJCWRpcnR5ID0gMTsKKwkJaWYgKG9sZF9jc3VtICE9IGV4dDJmc19iZ19jaGVja3N1bShmcywgaSkpCisJCQlkaXJ0eSA9IDE7CisJfQorCWlmIChkaXJ0eSkKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCXJldHVybiAwOworfQorCisjaWZkZWYgREVCVUcKKyNpbmNsdWRlICJlMnAvZTJwLmgiCisKK3ZvaWQgcHJpbnRfY3N1bShjb25zdCBjaGFyICptc2csIGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJX191MTYgY3JjMSwgY3JjMiwgY3JjMzsKKwlkZ3JwX3Qgc3dhYmdyb3VwOworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgKmRlc2MgPSBleHQyZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsCisJCQkJCQkJIGdyb3VwKTsKKwlzaXplX3Qgc2l6ZSA9IEVYVDJfREVTQ19TSVpFKGZzLT5zdXBlcik7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gZnMtPnN1cGVyOworCWludCBvZmZzZXQgPSBvZmZzZXRvZihzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjLCBiZ19jaGVja3N1bSk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyBzd2FiZGVzYzsKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpzYXZlX2Rlc2MgPSBkZXNjOworCWNvbnN0IHNpemVfdCBleHQ0X2JnX3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYyk7CisJc2l6ZV90IHNhdmVfc2l6ZSA9IHNpemU7CisjZW5kaWYKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCS8qIEhhdmUgdG8gc3dhYiBiYWNrIHRvIGxpdHRsZS1lbmRpYW4gdG8gZG8gdGhlIGNoZWNrc3VtICovCisJaWYgKHNpemUgPiBleHQ0X2JnX3NpemUpCisJCXNpemUgPSBleHQ0X2JnX3NpemU7CisJbWVtY3B5KCZzd2FiZGVzYywgZGVzYywgc2l6ZSk7CisJZXh0MmZzX3N3YXBfZ3JvdXBfZGVzYzIoZnMsIChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopICZzd2FiZGVzYyk7CisJZGVzYyA9IChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopICZzd2FiZGVzYzsKKworCXN3YWJncm91cCA9IGV4dDJmc19zd2FiMzIoZ3JvdXApOworI2Vsc2UKKwlzd2FiZ3JvdXAgPSBncm91cDsKKyNlbmRpZgorCisJY3JjMSA9IGV4dDJmc19jcmMxNih+MCwgc2ItPnNfdXVpZCwgc2l6ZW9mKGZzLT5zdXBlci0+c191dWlkKSk7CisJY3JjMiA9IGV4dDJmc19jcmMxNihjcmMxLCAmc3dhYmdyb3VwLCBzaXplb2Yoc3dhYmdyb3VwKSk7CisJY3JjMyA9IGV4dDJmc19jcmMxNihjcmMyLCBkZXNjLCBvZmZzZXQpOworCW9mZnNldCArPSBzaXplb2YoZGVzYy0+YmdfY2hlY2tzdW0pOyAvKiBza2lwIGNoZWNrc3VtICovCisJLyogZm9yIGNoZWNrc3VtIG9mIHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgZG8gdGhlIHJlc3QuLi4qLworCWlmIChvZmZzZXQgPCBzaXplKQorCQljcmMzID0gZXh0MmZzX2NyYzE2KGNyYzMsIChjaGFyICopZGVzYyArIG9mZnNldCwgc2l6ZSAtIG9mZnNldCk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJaWYgKHNhdmVfc2l6ZSA+IGV4dDRfYmdfc2l6ZSkKKwkJY3JjMyA9IGV4dDJmc19jcmMxNihjcmMzLCAoY2hhciAqKXNhdmVfZGVzYyArIGV4dDRfYmdfc2l6ZSwKKwkJCQkgICAgc2F2ZV9zaXplIC0gZXh0NF9iZ19zaXplKTsKKyNlbmRpZgorCisJcHJpbnRmKCIlcyBVVUlEICVzPSUwNHgsIGdycCAldT0lMDR4OiAlMDR4PSUwNHhcbiIsCisJICAgICAgIG1zZywgZTJwX3V1aWQyc3RyKHNiLT5zX3V1aWQpLCBjcmMxLCBncm91cCwgY3JjMiwgY3JjMywKKwkgICAgICAgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bShmcywgZ3JvdXApKTsKK30KKwordW5zaWduZWQgY2hhciBzYl91dWlkWzE2XSA9IHsgMHg0ZiwgMHgyNSwgMHhlOCwgMHhjZiwgMHhlNywgMHg5NywgMHg0OCwgMHgyMywKKwkJCSAgICAgIDB4YmUsIDB4ZmEsIDB4YTcsIDB4ODgsIDB4NGIsIDB4YWUsIDB4ZWMsIDB4ZGIgfTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHBhcmFtOworCWVycmNvZGVfdAkJcmV0dmFsOworCWV4dDJfZmlsc3lzCQlmczsKKwlpbnQJCQlpOworCV9fdTE2IGNzdW0xLCBjc3VtMiwgY3N1bV9rbm93biA9IDB4ZDNhNDsKKworCW1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihwYXJhbSkpOworCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KCZwYXJhbSwgMzI3NjgpOworI2lmIDAKKwlwYXJhbS5zX2ZlYXR1cmVfaW5jb21wYXQgfD0gRVhUNF9GRUFUVVJFX0lOQ09NUEFUXzY0QklUOworCXBhcmFtLnNfZGVzY19zaXplID0gMTI4OworCWNzdW1fa25vd24gPSAweDViNmU7CisjZW5kaWYKKworCXJldHZhbCA9IGV4dDJmc19pbml0aWFsaXplKCJ0ZXN0IGZzIiwgRVhUMl9GTEFHXzY0QklUUywgJnBhcmFtLAorCQkJCSAgIHRlc3RfaW9fbWFuYWdlciwgJmZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldHVwIiwgcmV0dmFsLAorCQkJIldoaWxlIGluaXRpYWxpemluZyBmaWxlc3lzdGVtIik7CisJCWV4aXQoMSk7CisJfQorCW1lbWNweShmcy0+c3VwZXItPnNfdXVpZCwgc2JfdXVpZCwgMTYpOworCWZzLT5zdXBlci0+c19mZWF0dXJlX3JvX2NvbXBhdCA9IEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU07CisKKwlmb3IgKGk9MDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Nfc2V0KGZzLCBpLCAxMjQpOworCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGksIDEyNSk7CisJCWV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KGZzLCBpLCAxMjYpOworCQlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBpLCAzMTExOSk7CisJCWV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXQoZnMsIGksIDE1NzAxKTsKKwkJZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudF9zZXQoZnMsIGksIDIpOworCQlleHQyZnNfYmdfZmxhZ3NfemFwKGZzLCBpKTsKKwl9OworCisJY3N1bTEgPSBleHQyZnNfZ3JvdXBfZGVzY19jc3VtKGZzLCAwKTsKKwlwcmludF9jc3VtKCJjc3VtMDAwMCIsIGZzLCAwKTsKKworCWlmIChjc3VtMSAhPSBjc3VtX2tub3duKSB7CisJCXByaW50ZigiY2hlY2tzdW0gZm9yIGdyb3VwIDAgc2hvdWxkIGJlICUwNHhcbiIsIGNzdW1fa25vd24pOworCQlleGl0KDEpOworCX0KKwljc3VtMiA9IGV4dDJmc19ncm91cF9kZXNjX2NzdW0oZnMsIDEpOworCXByaW50X2NzdW0oImNzdW0wMDAxIiwgZnMsIDEpOworCWlmIChjc3VtMSA9PSBjc3VtMikgeworCQlwcmludGYoImNoZWNrc3VtcyBmb3IgZGlmZmVyZW50IGdyb3VwcyBzaG91bGRuJ3QgbWF0Y2hcbiIpOworCQlleGl0KDEpOworCX0KKwljc3VtMiA9IGV4dDJmc19ncm91cF9kZXNjX2NzdW0oZnMsIDIpOworCXByaW50X2NzdW0oImNzdW1mZmZmIiwgZnMsIDIpOworCWlmIChjc3VtMSA9PSBjc3VtMikgeworCQlwcmludGYoImNoZWNrc3VtcyBmb3IgZGlmZmVyZW50IGdyb3VwcyBzaG91bGRuJ3QgbWF0Y2hcbiIpOworCQlleGl0KDEpOworCX0KKwlleHQyZnNfYmdfY2hlY2tzdW1fc2V0KGZzLCAwLCBjc3VtMSk7CisJY3N1bTIgPSBleHQyZnNfZ3JvdXBfZGVzY19jc3VtKGZzLCAwKTsKKwlwcmludF9jc3VtKCJjc3VtX3NldCIsIGZzLCAwKTsKKwlpZiAoY3N1bTEgIT0gY3N1bTIpIHsKKwkJcHJpbnRmKCJjaGVja3N1bXMgc2hvdWxkIG5vdCBkZXBlbmQgb24gY2hlY2tzdW0gZmllbGRcbiIpOworCQlleGl0KDEpOworCX0KKwlpZiAoIWV4dDJmc19ncm91cF9kZXNjX2NzdW1fdmVyaWZ5KGZzLCAwKSkgeworCQlwcmludGYoImNoZWNrc3VtcyBzaG91bGQgdmVyaWZ5IGFnYWluc3QgZ2RfY2hlY2tzdW1cbiIpOworCQlleGl0KDEpOworCX0KKwltZW1zZXQoZnMtPnN1cGVyLT5zX3V1aWQsIDB4MzAsIHNpemVvZihmcy0+c3VwZXItPnNfdXVpZCkpOworCXByaW50X2NzdW0oIm5ld191dWlkIiwgZnMsIDApOworCWlmIChleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3ZlcmlmeShmcywgMCkgIT0gMCkgeworCQlwcmludGYoImNoZWNrc3VtcyBmb3IgZGlmZmVyZW50IGZpbGVzeXN0ZW1zIHNob3VsZG4ndCBtYXRjaFxuIik7CisJCWV4aXQoMSk7CisJfQorCWNzdW0xID0gZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bShmcywgMCk7CisJZXh0MmZzX2JnX2NoZWNrc3VtX3NldChmcywgMCwgY3N1bTEpOworCXByaW50X2NzdW0oImNzdW1fbmV3IiwgZnMsIDApOworCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIDAsIDEpOworCWNzdW0yID0gZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bShmcywgMCk7CisJcHJpbnRfY3N1bSgiY3N1bV9ibGsiLCBmcywgMCk7CisJaWYgKGNzdW0xID09IGNzdW0yKSB7CisJCXByaW50ZigiY2hlY2tzdW1zIGZvciBkaWZmZXJlbnQgZGF0YSBzaG91bGRuJ3QgbWF0Y2hcbiIpOworCQlleGl0KDEpOworCX0KKworCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kYmxpc3QuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2RibGlzdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiZGIyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kYmxpc3QuYwpAQCAtMCwwICsxLDQwMyBAQAorLyoKKyAqIGRibGlzdC5jIC0tIGRpcmVjdG9yeSBibG9jayBsaXN0IGZ1bmN0aW9ucworICoKKyAqIENvcHlyaWdodCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgZGlyX2Jsb2NrX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgZGlyX2Jsb2NrX2NtcDIoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CitzdGF0aWMgRVhUMl9RU09SVF9UWVBFICgqc29ydGZ1bmMzMikoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7CisKKy8qCisgKiBoZWxwZXIgZnVuY3Rpb24gZm9yIG1ha2luZyBhIG5ldyBkaXJlY3RvcnkgYmxvY2sgbGlzdCAoZm9yCisgKiBpbml0aWFsaXplIGFuZCBjb3B5KS4KKyAqLworc3RhdGljIGVycmNvZGVfdCBtYWtlX2RibGlzdChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBzaXplLAorCQkJICAgICBleHQyX2lub190IGNvdW50LAorCQkJICAgICBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmxpc3QsCisJCQkgICAgIGV4dDJfZGJsaXN0ICpyZXRfZGJsaXN0KQoreworCWV4dDJfZGJsaXN0CWRibGlzdCA9IE5VTEw7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CW51bV9kaXJzOworCXNpemVfdAkJbGVuOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmICgocmV0X2RibGlzdCA9PSAwKSAmJiBmcy0+ZGJsaXN0ICYmCisJICAgIChmcy0+ZGJsaXN0LT5tYWdpYyA9PSBFWFQyX0VUX01BR0lDX0RCTElTVCkpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX3N0cnVjdF9kYmxpc3QpLCAmZGJsaXN0KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJbWVtc2V0KGRibGlzdCwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX3N0cnVjdF9kYmxpc3QpKTsKKworCWRibGlzdC0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0RCTElTVDsKKwlkYmxpc3QtPmZzID0gZnM7CisJaWYgKHNpemUpCisJCWRibGlzdC0+c2l6ZSA9IHNpemU7CisJZWxzZSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbnVtX2RpcnMoZnMsICZudW1fZGlycyk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJCWRibGlzdC0+c2l6ZSA9IChudW1fZGlycyAqIDIpICsgMTI7CisJfQorCWxlbiA9IChzaXplX3QpIHNpemVvZihzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIpICogZGJsaXN0LT5zaXplOworCWRibGlzdC0+Y291bnQgPSBjb3VudDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGRibGlzdC0+c2l6ZSwgc2l6ZW9mKHN0cnVjdCBleHQyX2RiX2VudHJ5MiksCisJCSZkYmxpc3QtPmxpc3QpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKworCWlmIChsaXN0KQorCQltZW1jcHkoZGJsaXN0LT5saXN0LCBsaXN0LCBsZW4pOworCWVsc2UKKwkJbWVtc2V0KGRibGlzdC0+bGlzdCwgMCwgbGVuKTsKKwlpZiAocmV0X2RibGlzdCkKKwkJKnJldF9kYmxpc3QgPSBkYmxpc3Q7CisJZWxzZQorCQlmcy0+ZGJsaXN0ID0gZGJsaXN0OworCXJldHVybiAwOworY2xlYW51cDoKKwlpZiAoZGJsaXN0KQorCQlleHQyZnNfZnJlZV9tZW0oJmRibGlzdCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIEluaXRpYWxpemUgYSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitlcnJjb2RlX3QgZXh0MmZzX2luaXRfZGJsaXN0KGV4dDJfZmlsc3lzIGZzLCBleHQyX2RibGlzdCAqcmV0X2RibGlzdCkKK3sKKwlleHQyX2RibGlzdAlkYmxpc3Q7CisJZXJyY29kZV90CXJldHZhbDsKKworCXJldHZhbCA9IG1ha2VfZGJsaXN0KGZzLCAwLCAwLCAwLCAmZGJsaXN0KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZGJsaXN0LT5zb3J0ZWQgPSAxOworCWlmIChyZXRfZGJsaXN0KQorCQkqcmV0X2RibGlzdCA9IGRibGlzdDsKKwllbHNlCisJCWZzLT5kYmxpc3QgPSBkYmxpc3Q7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENvcHkgYSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitlcnJjb2RlX3QgZXh0MmZzX2NvcHlfZGJsaXN0KGV4dDJfZGJsaXN0IHNyYywgZXh0Ml9kYmxpc3QgKmRlc3QpCit7CisJZXh0Ml9kYmxpc3QJZGJsaXN0OworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlyZXR2YWwgPSBtYWtlX2RibGlzdChzcmMtPmZzLCBzcmMtPnNpemUsIHNyYy0+Y291bnQsIHNyYy0+bGlzdCwKKwkJCSAgICAgJmRibGlzdCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlkYmxpc3QtPnNvcnRlZCA9IHNyYy0+c29ydGVkOworCSpkZXN0ID0gZGJsaXN0OworCXJldHVybiAwOworfQorCisvKgorICogQ2xvc2UgYSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICoKKyAqIChtb3ZlZCB0byBjbG9zZWZzLmMpCisgKi8KKworCisvKgorICogQWRkIGEgZGlyZWN0b3J5IGJsb2NrIHRvIHRoZSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitlcnJjb2RlX3QgZXh0MmZzX2FkZF9kaXJfYmxvY2syKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJYmxrNjRfdCBibGssIGUyX2Jsa2NudF90IGJsb2NrY250KQoreworCXN0cnVjdCBleHQyX2RiX2VudHJ5MiAJKm5ld19lbnRyeTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwl1bnNpZ25lZCBsb25nCQlvbGRfc2l6ZTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZGJsaXN0LCBFWFQyX0VUX01BR0lDX0RCTElTVCk7CisKKwlpZiAoZGJsaXN0LT5jb3VudCA+PSBkYmxpc3QtPnNpemUpIHsKKwkJb2xkX3NpemUgPSBkYmxpc3QtPnNpemUgKiBzaXplb2Yoc3RydWN0IGV4dDJfZGJfZW50cnkyKTsKKwkJZGJsaXN0LT5zaXplICs9IGRibGlzdC0+c2l6ZSA+IDIwMCA/IGRibGlzdC0+c2l6ZSAvIDIgOiAxMDA7CisJCXJldHZhbCA9IGV4dDJmc19yZXNpemVfbWVtKG9sZF9zaXplLCAoc2l6ZV90KSBkYmxpc3QtPnNpemUgKgorCQkJCQkgICBzaXplb2Yoc3RydWN0IGV4dDJfZGJfZW50cnkyKSwKKwkJCQkJICAgJmRibGlzdC0+bGlzdCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWRibGlzdC0+c2l6ZSA9IG9sZF9zaXplIC8gc2l6ZW9mKHN0cnVjdCBleHQyX2RiX2VudHJ5Mik7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJfQorCW5ld19lbnRyeSA9IGRibGlzdC0+bGlzdCArICggZGJsaXN0LT5jb3VudCsrKTsKKwluZXdfZW50cnktPmJsayA9IGJsazsKKwluZXdfZW50cnktPmlubyA9IGlubzsKKwluZXdfZW50cnktPmJsb2NrY250ID0gYmxvY2tjbnQ7CisKKwlkYmxpc3QtPnNvcnRlZCA9IDA7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIENoYW5nZSB0aGUgZGlyZWN0b3J5IGJsb2NrIHRvIHRoZSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitlcnJjb2RlX3QgZXh0MmZzX3NldF9kaXJfYmxvY2syKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJYmxrNjRfdCBibGssIGUyX2Jsa2NudF90IGJsb2NrY250KQoreworCWRncnBfdAkJCWk7CisKKwlFWFQyX0NIRUNLX01BR0lDKGRibGlzdCwgRVhUMl9FVF9NQUdJQ19EQkxJU1QpOworCisJZm9yIChpPTA7IGkgPCBkYmxpc3QtPmNvdW50OyBpKyspIHsKKwkJaWYgKChkYmxpc3QtPmxpc3RbaV0uaW5vICE9IGlubykgfHwKKwkJICAgIChkYmxpc3QtPmxpc3RbaV0uYmxvY2tjbnQgIT0gYmxvY2tjbnQpKQorCQkJY29udGludWU7CisJCWRibGlzdC0+bGlzdFtpXS5ibGsgPSBibGs7CisJCWRibGlzdC0+c29ydGVkID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBFWFQyX0VUX0RCX05PVF9GT1VORDsKK30KKwordm9pZCBleHQyZnNfZGJsaXN0X3NvcnQyKGV4dDJfZGJsaXN0IGRibGlzdCwKKwkJCSBFWFQyX1FTT1JUX1RZUEUgKCpzb3J0ZnVuYykoY29uc3Qgdm9pZCAqLAorCQkJCQkJICAgICBjb25zdCB2b2lkICopKQoreworCWlmICghc29ydGZ1bmMpCisJCXNvcnRmdW5jID0gZGlyX2Jsb2NrX2NtcDI7CisJcXNvcnQoZGJsaXN0LT5saXN0LCAoc2l6ZV90KSBkYmxpc3QtPmNvdW50LAorCSAgICAgIHNpemVvZihzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIpLCBzb3J0ZnVuYyk7CisJZGJsaXN0LT5zb3J0ZWQgPSAxOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIHRoZSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9pdGVyYXRlMyhleHQyX2RibGlzdCBkYmxpc3QsCisJCQkJIGludCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfaW5mbywKKwkJCQkJICAgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJCSB1bnNpZ25lZCBsb25nIGxvbmcgc3RhcnQsCisJCQkJIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCwKKwkJCQkgdm9pZCAqcHJpdl9kYXRhKQoreworCXVuc2lnbmVkIGxvbmcgbG9uZwlpLCBlbmQ7CisJaW50CQlyZXQ7CisKKwlFWFQyX0NIRUNLX01BR0lDKGRibGlzdCwgRVhUMl9FVF9NQUdJQ19EQkxJU1QpOworCisJZW5kID0gc3RhcnQgKyBjb3VudDsKKwlpZiAoIWRibGlzdC0+c29ydGVkKQorCQlleHQyZnNfZGJsaXN0X3NvcnQyKGRibGlzdCwgMCk7CisJaWYgKGVuZCA+IGRibGlzdC0+Y291bnQpCisJCWVuZCA9IGRibGlzdC0+Y291bnQ7CisJZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworCQlyZXQgPSAoKmZ1bmMpKGRibGlzdC0+ZnMsICZkYmxpc3QtPmxpc3RbaV0sIHByaXZfZGF0YSk7CisJCWlmIChyZXQgJiBEQkxJU1RfQUJPUlQpCisJCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZGJsaXN0X2l0ZXJhdGUyKGV4dDJfZGJsaXN0IGRibGlzdCwKKwkJCQkgaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICAgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYl9pbmZvLAorCQkJCQkgICAgIHZvaWQJKnByaXZfZGF0YSksCisJCQkJIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlyZXR1cm4gZXh0MmZzX2RibGlzdF9pdGVyYXRlMyhkYmxpc3QsIGZ1bmMsIDAsIGRibGlzdC0+Y291bnQsCisJCQkJICAgICAgcHJpdl9kYXRhKTsKK30KKworc3RhdGljIEVYVDJfUVNPUlRfVFlQRSBkaXJfYmxvY2tfY21wMihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfYSA9CisJCShjb25zdCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKikgYTsKKwljb25zdCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmRiX2IgPQorCQkoY29uc3Qgc3RydWN0IGV4dDJfZGJfZW50cnkyICopIGI7CisKKwlpZiAoZGJfYS0+YmxrICE9IGRiX2ItPmJsaykKKwkJcmV0dXJuIChpbnQpIChkYl9hLT5ibGsgLSBkYl9iLT5ibGspOworCisJaWYgKGRiX2EtPmlubyAhPSBkYl9iLT5pbm8pCisJCXJldHVybiAoaW50KSAoZGJfYS0+aW5vIC0gZGJfYi0+aW5vKTsKKworCXJldHVybiAoZGJfYS0+YmxvY2tjbnQgLSBkYl9iLT5ibG9ja2NudCk7Cit9CisKK2JsazY0X3QgZXh0MmZzX2RibGlzdF9jb3VudDIoZXh0Ml9kYmxpc3QgZGJsaXN0KQoreworCXJldHVybiBkYmxpc3QtPmNvdW50OworfQorCitlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9nZXRfbGFzdDIoZXh0Ml9kYmxpc3QgZGJsaXN0LAorCQkJCSAgc3RydWN0IGV4dDJfZGJfZW50cnkyICoqZW50cnkpCit7CisJRVhUMl9DSEVDS19NQUdJQyhkYmxpc3QsIEVYVDJfRVRfTUFHSUNfREJMSVNUKTsKKworCWlmIChkYmxpc3QtPmNvdW50ID09IDApCisJCXJldHVybiBFWFQyX0VUX0RCTElTVF9FTVBUWTsKKworCWlmIChlbnRyeSkKKwkJKmVudHJ5ID0gZGJsaXN0LT5saXN0ICsgKCBkYmxpc3QtPmNvdW50LTEpOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9kcm9wX2xhc3QoZXh0Ml9kYmxpc3QgZGJsaXN0KQoreworCUVYVDJfQ0hFQ0tfTUFHSUMoZGJsaXN0LCBFWFQyX0VUX01BR0lDX0RCTElTVCk7CisKKwlpZiAoZGJsaXN0LT5jb3VudCA9PSAwKQorCQlyZXR1cm4gRVhUMl9FVF9EQkxJU1RfRU1QVFk7CisKKwlkYmxpc3QtPmNvdW50LS07CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMZWdhY3kgMzItYml0IHZlcnNpb25zCisgKi8KKworLyoKKyAqIEFkZCBhIGRpcmVjdG9yeSBibG9jayB0byB0aGUgZGlyZWN0b3J5IGJsb2NrIGxpc3QKKyAqLworZXJyY29kZV90IGV4dDJmc19hZGRfZGlyX2Jsb2NrKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sIGJsa190IGJsaywKKwkJCSAgICAgICBpbnQgYmxvY2tjbnQpCit7CisJcmV0dXJuIGV4dDJmc19hZGRfZGlyX2Jsb2NrMihkYmxpc3QsIGlubywgYmxrLCBibG9ja2NudCk7Cit9CisKKy8qCisgKiBDaGFuZ2UgdGhlIGRpcmVjdG9yeSBibG9jayB0byB0aGUgZGlyZWN0b3J5IGJsb2NrIGxpc3QKKyAqLworZXJyY29kZV90IGV4dDJmc19zZXRfZGlyX2Jsb2NrKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sIGJsa190IGJsaywKKwkJCSAgICAgICBpbnQgYmxvY2tjbnQpCit7CisJcmV0dXJuIGV4dDJmc19zZXRfZGlyX2Jsb2NrMihkYmxpc3QsIGlubywgYmxrLCBibG9ja2NudCk7Cit9CisKK3ZvaWQgZXh0MmZzX2RibGlzdF9zb3J0KGV4dDJfZGJsaXN0IGRibGlzdCwKKwkJCUVYVDJfUVNPUlRfVFlQRSAoKnNvcnRmdW5jKShjb25zdCB2b2lkICosCisJCQkJCQkgICAgY29uc3Qgdm9pZCAqKSkKK3sKKwlpZiAoc29ydGZ1bmMpIHsKKwkJc29ydGZ1bmMzMiA9IHNvcnRmdW5jOworCQlzb3J0ZnVuYyA9IGRpcl9ibG9ja19jbXA7CisJfSBlbHNlCisJCXNvcnRmdW5jID0gZGlyX2Jsb2NrX2NtcDI7CisJcXNvcnQoZGJsaXN0LT5saXN0LCAoc2l6ZV90KSBkYmxpc3QtPmNvdW50LAorCSAgICAgIHNpemVvZihzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIpLCBzb3J0ZnVuYyk7CisJZGJsaXN0LT5zb3J0ZWQgPSAxOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpdGVyYXRlcyBvdmVyIHRoZSBkaXJlY3RvcnkgYmxvY2sgbGlzdAorICovCitzdHJ1Y3QgaXRlcmF0ZV9wYXNzdGhyb3VnaCB7CisJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCSAgICBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeSAqZGJfaW5mbywKKwkJICAgIHZvaWQJKnByaXZfZGF0YSk7CisJdm9pZCAqcHJpdl9kYXRhOworfTsKKworc3RhdGljIGludCBwYXNzdGhyb3VnaF9mdW5jKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfaW5mbywKKwkJCSAgICB2b2lkCSpwcml2X2RhdGEpCit7CisJc3RydWN0IGl0ZXJhdGVfcGFzc3Rocm91Z2ggKnAgPSBwcml2X2RhdGE7CisJc3RydWN0IGV4dDJfZGJfZW50cnkgZGI7CisJaW50IHJldDsKKworCWRiLmlubyA9IGRiX2luZm8tPmlubzsKKwlkYi5ibGsgPSAoYmxrX3QpIGRiX2luZm8tPmJsazsKKwlkYi5ibG9ja2NudCA9IChpbnQpIGRiX2luZm8tPmJsb2NrY250OworCXJldCA9IChwLT5mdW5jKShmcywgJmRiLCBwLT5wcml2X2RhdGEpOworCWRiX2luZm8tPmlubyA9IGRiLmlubzsKKwlkYl9pbmZvLT5ibGsgPSBkYi5ibGs7CisJZGJfaW5mby0+YmxvY2tjbnQgPSBkYi5ibG9ja2NudDsKKwlyZXR1cm4gcmV0OworfQorCitlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9pdGVyYXRlKGV4dDJfZGJsaXN0IGRibGlzdCwKKwkJCQlpbnQgKCpmdW5jKShleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgIHN0cnVjdCBleHQyX2RiX2VudHJ5ICpkYl9pbmZvLAorCQkJCQkgICAgdm9pZAkqcHJpdl9kYXRhKSwKKwkJCQl2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IGl0ZXJhdGVfcGFzc3Rocm91Z2ggcGFzczsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZGJsaXN0LCBFWFQyX0VUX01BR0lDX0RCTElTVCk7CisJcGFzcy5mdW5jID0gZnVuYzsKKwlwYXNzLnByaXZfZGF0YSA9IHByaXZfZGF0YTsKKworCXJldHVybiBleHQyZnNfZGJsaXN0X2l0ZXJhdGUyKGRibGlzdCwgcGFzc3Rocm91Z2hfZnVuYywgJnBhc3MpOworfQorCitzdGF0aWMgRVhUMl9RU09SVF9UWVBFIGRpcl9ibG9ja19jbXAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKK3sKKwljb25zdCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmRiX2EgPQorCQkoY29uc3Qgc3RydWN0IGV4dDJfZGJfZW50cnkyICopIGE7CisJY29uc3Qgc3RydWN0IGV4dDJfZGJfZW50cnkyICpkYl9iID0KKwkJKGNvbnN0IHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqKSBiOworCisJc3RydWN0IGV4dDJfZGJfZW50cnkgYTMyLCBiMzI7CisKKwlhMzIuaW5vID0gZGJfYS0+aW5vOyAgYTMyLmJsayA9IGRiX2EtPmJsazsKKwlhMzIuYmxvY2tjbnQgPSBkYl9hLT5ibG9ja2NudDsKKworCWIzMi5pbm8gPSBkYl9iLT5pbm87ICBiMzIuYmxrID0gZGJfYi0+YmxrOworCWIzMi5ibG9ja2NudCA9IGRiX2ItPmJsb2NrY250OworCisJcmV0dXJuIHNvcnRmdW5jMzIoJmEzMiwgJmIzMik7Cit9CisKK2ludCBleHQyZnNfZGJsaXN0X2NvdW50KGV4dDJfZGJsaXN0IGRibGlzdCkKK3sKKwlyZXR1cm4gZGJsaXN0LT5jb3VudDsKK30KKworZXJyY29kZV90IGV4dDJmc19kYmxpc3RfZ2V0X2xhc3QoZXh0Ml9kYmxpc3QgZGJsaXN0LAorCQkJCSBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeSAqKmVudHJ5KQoreworCXN0YXRpYyBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeSByZXRfZW50cnk7CisJc3RydWN0IGV4dDJfZGJfZW50cnkyICpsYXN0OworCisJRVhUMl9DSEVDS19NQUdJQyhkYmxpc3QsIEVYVDJfRVRfTUFHSUNfREJMSVNUKTsKKworCWlmIChkYmxpc3QtPmNvdW50ID09IDApCisJCXJldHVybiBFWFQyX0VUX0RCTElTVF9FTVBUWTsKKworCWlmICghZW50cnkpCisJCXJldHVybiAwOworCisJbGFzdCA9IGRibGlzdC0+bGlzdCArIGRibGlzdC0+Y291bnQgLTE7CisKKwlyZXRfZW50cnkuaW5vID0gbGFzdC0+aW5vOworCXJldF9lbnRyeS5ibGsgPSBsYXN0LT5ibGs7CisJcmV0X2VudHJ5LmJsb2NrY250ID0gbGFzdC0+YmxvY2tjbnQ7CisJKmVudHJ5ID0gJnJldF9lbnRyeTsKKworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kYmxpc3RfZGlyLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kYmxpc3RfZGlyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0YTNjYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2RibGlzdF9kaXIuYwpAQCAtMCwwICsxLDg4IEBACisvKgorICogZGJsaXN0X2Rpci5jIC0tLSBpdGVyYXRlIGJ5IGRpcmVjdG9yeSBlbnRyeQorICoKKyAqIENvcHlyaWdodCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3N0YXRpYyBpbnQgZGJfZGlyX3Byb2MoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfaW5mbywKKwkJICAgICAgIHZvaWQgKnByaXZfZGF0YSk7CisKK2VycmNvZGVfdCBleHQyZnNfZGJsaXN0X2Rpcl9pdGVyYXRlKGV4dDJfZGJsaXN0IGRibGlzdCwKKwkJCQkgICAgaW50CWZsYWdzLAorCQkJCSAgICBjaGFyCSpibG9ja19idWYsCisJCQkJICAgIGludCAoKmZ1bmMpKGV4dDJfaW5vX3QgZGlyLAorCQkJCQkJaW50CWVudHJ5LAorCQkJCQkJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJCQlpbnQJb2Zmc2V0LAorCQkJCQkJaW50CWJsb2Nrc2l6ZSwKKwkJCQkJCWNoYXIJKmJ1ZiwKKwkJCQkJCXZvaWQJKnByaXZfZGF0YSksCisJCQkJICAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgZGlyX2NvbnRleHQJY3R4OworCisJRVhUMl9DSEVDS19NQUdJQyhkYmxpc3QsIEVYVDJfRVRfTUFHSUNfREJMSVNUKTsKKworCWN0eC5kaXIgPSAwOworCWN0eC5mbGFncyA9IGZsYWdzOworCWlmIChibG9ja19idWYpCisJCWN0eC5idWYgPSBibG9ja19idWY7CisJZWxzZSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGRibGlzdC0+ZnMtPmJsb2Nrc2l6ZSwgJmN0eC5idWYpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisJY3R4LmZ1bmMgPSBmdW5jOworCWN0eC5wcml2X2RhdGEgPSBwcml2X2RhdGE7CisJY3R4LmVycmNvZGUgPSAwOworCisJcmV0dmFsID0gZXh0MmZzX2RibGlzdF9pdGVyYXRlMihkYmxpc3QsIGRiX2Rpcl9wcm9jLCAmY3R4KTsKKworCWlmICghYmxvY2tfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmN0eC5idWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJcmV0dXJuIGN0eC5lcnJjb2RlOworfQorCitzdGF0aWMgaW50IGRiX2Rpcl9wcm9jKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeTIgKmRiX2luZm8sCisJCSAgICAgICB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJc3RydWN0IGRpcl9jb250ZXh0CSpjdHg7CisJaW50CQkJcmV0OworCisJY3R4ID0gKHN0cnVjdCBkaXJfY29udGV4dCAqKSBwcml2X2RhdGE7CisJY3R4LT5kaXIgPSBkYl9pbmZvLT5pbm87CisJY3R4LT5lcnJjb2RlID0gMDsKKworCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBjdHgtPmRpciwgJmlub2RlKTsKKwlpZiAoY3R4LT5lcnJjb2RlKQorCQlyZXR1cm4gREJMSVNUX0FCT1JUOworCWlmIChpbm9kZS5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkKKwkJcmV0ID0gZXh0MmZzX2lubGluZV9kYXRhX2Rpcl9pdGVyYXRlKGZzLCBjdHgtPmRpciwgY3R4KTsKKwllbHNlCisJCXJldCA9IGV4dDJmc19wcm9jZXNzX2Rpcl9ibG9jayhmcywgJmRiX2luZm8tPmJsaywKKwkJCQkJICAgICAgIGRiX2luZm8tPmJsb2NrY250LCAwLCAwLAorCQkJCQkgICAgICAgcHJpdl9kYXRhKTsKKwlpZiAoKHJldCAmIEJMT0NLX0FCT1JUKSAmJiAhY3R4LT5lcnJjb2RlKQorCQlyZXR1cm4gREJMSVNUX0FCT1JUOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZGlnZXN0X2VuY29kZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZGlnZXN0X2VuY29kZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MGIzMDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kaWdlc3RfZW5jb2RlLmMKQEAgLTAsMCArMSwxODYgQEAKKy8qCisgKiBsaWIvZXh0MmZzL2RpZ2VzdF9lbmNvZGUuYworICoKKyAqIEEgZnVuY3Rpb24gdG8gZW5jb2RlIGEgZGlnZXN0IHVzaW5nIDY0IGNoYXJhY3RlcnMgdGhhdCBhcmUgdmFsaWQgaW4gYQorICogZmlsZW5hbWUgcGVyIGV4dDJmcyBydWxlcy4KKyAqCisgKiBXcml0dGVuIGJ5IFVkYXkgU2F2YWdhb25rYXIsIDIwMTQuCisgKgorICogQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICpsb29rdXBfdGFibGUgPQorCSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSssIjsKKworLyoqCisgKiBleHQyZnNfZGlnZXN0X2VuY29kZSgpIC0KKyAqCisgKiBFbmNvZGVzIHRoZSBpbnB1dCBkaWdlc3QgdXNpbmcgY2hhcmFjdGVycyBmcm9tIHRoZSBzZXQgW2EtekEtWjAtOV8rXS4KKyAqIFRoZSBlbmNvZGVkIHN0cmluZyBpcyByb3VnaGx5IDQvMyB0aW1lcyB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgc3RyaW5nLgorICovCitpbnQgZXh0MmZzX2RpZ2VzdF9lbmNvZGUoY29uc3QgY2hhciAqc3JjLCBpbnQgbGVuLCBjaGFyICpkc3QpCit7CisJaW50IGkgPSAwLCBiaXRzID0gMCwgYWMgPSAwOworCWNoYXIgKmNwID0gZHN0OworCisJd2hpbGUgKGkgPCBsZW4pIHsKKwkJYWMgKz0gKCgodW5zaWduZWQgY2hhcikgc3JjW2ldKSA8PCBiaXRzKTsKKwkJYml0cyArPSA4OworCQlkbyB7CisJCQkqY3ArKyA9IGxvb2t1cF90YWJsZVthYyAmIDB4M2ZdOworCQkJYWMgPj49IDY7CisJCQliaXRzIC09IDY7CisJCX0gd2hpbGUgKGJpdHMgPj0gNik7CisJCWkrKzsKKwl9CisJaWYgKGJpdHMpCisJCSpjcCsrID0gbG9va3VwX3RhYmxlW2FjICYgMHgzZl07CisJcmV0dXJuIGNwIC0gZHN0OworfQorCitpbnQgZXh0MmZzX2RpZ2VzdF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCBpbnQgbGVuLCBjaGFyICpkc3QpCit7CisJaW50IGkgPSAwLCBiaXRzID0gMCwgYWMgPSAwOworCWNvbnN0IGNoYXIgKnA7CisJY2hhciAqY3AgPSBkc3Q7CisKKwl3aGlsZSAoaSA8IGxlbikgeworCQlwID0gc3RyY2hyKGxvb2t1cF90YWJsZSwgc3JjW2ldKTsKKwkJaWYgKHAgPT0gTlVMTCB8fCBzcmNbaV0gPT0gMCkKKwkJCXJldHVybiAtMTsKKwkJYWMgKz0gKHAgLSBsb29rdXBfdGFibGUpIDw8IGJpdHM7CisJCWJpdHMgKz0gNjsKKwkJaWYgKGJpdHMgPj0gOCkgeworCQkJKmNwKysgPSBhYyAmIDB4ZmY7CisJCQlhYyA+Pj0gODsKKwkJCWJpdHMgLT0gODsKKwkJfQorCQlpKys7CisJfQorCWlmIChhYykKKwkJcmV0dXJuIC0xOworCXJldHVybiBjcCAtIGRzdDsKK30KKworCisjaWZkZWYgVU5JVFRFU1QKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCXVuc2lnbmVkIGNoYXIgZFszMl07CisJdW5zaWduZWQgaW50IGxlbjsKKwljb25zdCB1bnNpZ25lZCBjaGFyICplZDsKK30gdGVzdHNbXSA9IHsKKwl7IHsgMHhlMywgMHhiMCwgMHhjNCwgMHg0MiwgMHg5OCwgMHhmYywgMHgxYywgMHgxNCwKKwkgICAgMHg5YSwgMHhmYiwgMHhmNCwgMHhjOCwgMHg5OSwgMHg2ZiwgMHhiOSwgMHgyNCwKKwkgICAgMHgyNywgMHhhZSwgMHg0MSwgMHhlNCwgMHg2NCwgMHg5YiwgMHg5MywgMHg0YywKKwkgICAgMHhhNCwgMHg5NSwgMHg5OSwgMHgxYiwgMHg3OCwgMHg1MiwgMHhiOCwgMHg1NSB9LCAzMiwKKwkiakRMeENoSixjUWhtN1RQeVorV3VrY2lyQlJPWmJPSlRrV1ptYmduVTRXRiIKKwl9LAorCXsgeyAweGJhLCAweDc4LCAweDE2LCAweGJmLCAweDhmLCAweDAxLCAweGNmLCAweGVhLAorCSAgICAweDQxLCAweDQxLCAweDQwLCAweGRlLCAweDVkLCAweGFlLCAweDIyLCAweDIzLAorCSAgICAweGIwLCAweDAzLCAweDYxLCAweGEzLCAweDk2LCAweDE3LCAweDdhLCAweDljLAorCSAgICAweGI0LCAweDEwLCAweGZmLCAweDYxLCAweGYyLCAweDAwLCAweDE1LCAweGFkIH0sIDMyLAorCSI2aW5GLCtZQVByZVFCQmszZDVxSWpBN0FoTnFsWG9IbjBDeCxoSlBBVjBLIgorCX0sCisJeyB7IDB4MjQsIDB4OGQsIDB4NmEsIDB4NjEsIDB4ZDIsIDB4MDYsIDB4MzgsIDB4YjgsCisJICAgIDB4ZTUsIDB4YzAsIDB4MjYsIDB4OTMsIDB4MGMsIDB4M2UsIDB4NjAsIDB4MzksCisJICAgIDB4YTMsIDB4M2MsIDB4ZTQsIDB4NTksIDB4NjQsIDB4ZmYsIDB4MjEsIDB4NjcsCisJICAgIDB4ZjYsIDB4ZWMsIDB4ZWQsIDB4ZDQsIDB4MTksIDB4ZGIsIDB4MDYsIDB4YzEgfSwgMzIsCisJImswb2FoSnRCNGdiNUFieWtNNERZNU1LUGtuRlosSHlaMnplN1VueDJHRU0iCisJfSwKKwl7IHsgMHgwMCwgfSwgMSwKKwkiQUEiCisJfSwKKwl7IHsgMHgwMSwgfSwgMSwKKwkiQkEiCisJfSwKKwl7IHsgMHgwMSwgMHgwMiB9LCAyLAorCSJCSUEiCisJfSwKKwl7IHsgMHgwMSwgMHgwMiwgMHgwMyB9LCAzLAorCSJCSXdBIgorCX0sCisJeyB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQgfSwgNCwKKwkiQkl3QUVBIgorCX0sCisJeyB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4ZmYgfSwgNSwKKwkiQkl3QUU4UCIKKwl9LAorCXsgeyAweDAxLCAweDAyLCAweDAzLCAweDA0LCAweGZmLCAweGZlIH0sIDYsCisJIkJJd0FFOHYsIgorCX0sCisJeyB7IDB4MDEsIDB4MDIsIDB4MDMsIDB4MDQsIDB4ZmYsIDB4ZmUsIDB4ZmQgfSwgNywKKwkiQkl3QUU4diw5RCIKKwl9LAorfTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBpLCByZXQsIGxlbiwgbGVuMjsKKwlpbnQgZXJyb3JzID0gMDsKKwl1bnNpZ25lZCBjaGFyIHRtcFsxMDI0XSwgdG1wMlsxMDI0XTsKKworCWlmIChhcmdjID09IDMgJiYgIXN0cmNtcChhcmd2WzFdLCAiZW5jb2RlIikpIHsKKwkJbWVtc2V0KHRtcCwgMCwgc2l6ZW9mKHRtcCkpOworCQlleHQyZnNfZGlnZXN0X2VuY29kZShhcmd2WzJdLCBzdHJsZW4oYXJndlsyXSksIHRtcCk7CisJCXB1dHModG1wKTsKKwkJZXhpdCgwKTsKKwl9CisJaWYgKGFyZ2MgPT0gMyAmJiAhc3RyY21wKGFyZ3ZbMV0sICJkZWNvZGUiKSkgeworCQltZW1zZXQodG1wLCAwLCBzaXplb2YodG1wKSk7CisJCXJldCA9IGV4dDJmc19kaWdlc3RfZGVjb2RlKGFyZ3ZbMl0sIHN0cmxlbihhcmd2WzJdKSwgdG1wKTsKKwkJcHV0cyh0bXApOworCQlmcHJpbnRmKHN0ZGVyciwgInJldHVybmVkICVkXG4iLCByZXQpOworCQlleGl0KDApOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgKGludCkoc2l6ZW9mKHRlc3RzKSAvIHNpemVvZih0ZXN0c1swXSkpOyBpKyspIHsKKwkJbWVtc2V0KHRtcCwgMCwgc2l6ZW9mKHRtcCkpOworCQlyZXQgPSBleHQyZnNfZGlnZXN0X2VuY29kZSh0ZXN0c1tpXS5kLCB0ZXN0c1tpXS5sZW4sIHRtcCk7CisJCWxlbiA9IHN0cmxlbih0bXApOworCQlwcmludGYoIlRlc3QgRGlnZXN0ICVkIChyZXR1cm5lZCAlZCk6ICIsIGksIHJldCk7CisJCWlmIChyZXQgIT0gbGVuKSB7CisJCQlwcmludGYoIkZBSUxFRCByZXR1cm5lZCAlZCwgc3RyaW5nIGxlbmd0aCB3YXMgJWRcbiIsCisJCQkgICAgICAgcmV0LCBsZW4pOworCQkJZXJyb3JzKys7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG1wLCB0ZXN0c1tpXS5lZCkgIT0gMCkgeworCQkJcHJpbnRmKCJGQUlMRUQ6IGdvdCAlcywgZXhwZWN0ZWQgJXNcbiIsIHRtcCwKKwkJCSAgICAgICB0ZXN0c1tpXS5lZCk7CisJCQllcnJvcnMrKzsKKwkJCWNvbnRpbnVlOworCQl9CisJCXJldCA9IGV4dDJmc19kaWdlc3RfZGVjb2RlKHRtcCwgbGVuLCB0bXAyKTsKKwkJaWYgKHJldCAhPSB0ZXN0c1tpXS5sZW4pIHsKKwkJCXByaW50ZigiRkFJTEVEIGRlY29kZSByZXR1cm5lZCAlZCwgZXhwZWN0ZWQgJWRcbiIsCisJCQkgICAgICAgcmV0LCB0ZXN0c1tpXS5sZW4pOworCQkJZXJyb3JzKys7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAobWVtY21wKHRtcDIsIHRlc3RzW2ldLmQsIHJldCkgIT0gMCkgeworCQkJcHV0cygiRkFJTEVEOiBkZWNvZGUgbWlzbWF0Y2hlZCIpOworCQkJZXJyb3JzKys7CisJCQljb250aW51ZTsKKwkJfQorCQlwcmludGYoIk9LXG4iKTsKKwl9CisJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgeworCQltZW1zZXQodG1wLCAwLCBzaXplb2YodG1wKSk7CisJCXJldCA9IGV4dDJmc19kaWdlc3RfZW5jb2RlKGFyZ3ZbaV0sIHN0cmxlbihhcmd2W2ldKSwgdG1wKTsKKwkJbGVuID0gc3RybGVuKHRtcCk7CisJCXByaW50ZigiRGlnZXN0IG9mICclcycgaXMgJyVzJyAocmV0dXJuZWQgJWQsIGxlbmd0aCAlZClcbiIsCisJCSAgICAgICBhcmd2W2ldLCB0bXAsIHJldCwgbGVuKTsKKwl9CisJcmV0dXJuIGVycm9yczsKK30KKworI2VuZGlmIC8qIFVOSVRURVNUICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kaXJfaXRlcmF0ZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZGlyX2l0ZXJhdGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmI3NzY5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZGlyX2l0ZXJhdGUuYwpAQCAtMCwwICsxLDMxMSBAQAorLyoKKyAqIGRpcl9pdGVyYXRlLmMgLS0tIGV4dDJmcyBkaXJlY3RvcnkgaXRlcmF0aW9uIG9wZXJhdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKKyNkZWZpbmUgRVhUNF9NQVhfUkVDX0xFTgkJKCgxPDwxNiktMSkKKworZXJyY29kZV90IGV4dDJmc19nZXRfcmVjX2xlbihleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkgICAgIHVuc2lnbmVkIGludCAqcmVjX2xlbikKK3sKKwl1bnNpZ25lZCBpbnQgbGVuID0gZGlyZW50LT5yZWNfbGVuOworCisJaWYgKGZzLT5ibG9ja3NpemUgPCA2NTUzNikKKwkJKnJlY19sZW4gPSBsZW47CisJZWxzZSBpZiAobGVuID09IEVYVDRfTUFYX1JFQ19MRU4gfHwgbGVuID09IDApCisJCSpyZWNfbGVuID0gZnMtPmJsb2Nrc2l6ZTsKKwllbHNlIAorCQkqcmVjX2xlbiA9IChsZW4gJiA2NTUzMikgfCAoKGxlbiAmIDMpIDw8IDE2KTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19zZXRfcmVjX2xlbihleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgdW5zaWduZWQgaW50IGxlbiwKKwkJCSAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQpCit7CisJaWYgKChsZW4gPiBmcy0+YmxvY2tzaXplKSB8fCAoZnMtPmJsb2Nrc2l6ZSA+ICgxIDw8IDE4KSkgfHwgKGxlbiAmIDMpKQorCQlyZXR1cm4gRUlOVkFMOworCWlmIChsZW4gPCA2NTUzNikgeworCQlkaXJlbnQtPnJlY19sZW4gPSBsZW47CisJCXJldHVybiAwOworCX0KKwlpZiAobGVuID09IGZzLT5ibG9ja3NpemUpIHsKKwkJaWYgKGZzLT5ibG9ja3NpemUgPT0gNjU1MzYpCisJCQlkaXJlbnQtPnJlY19sZW4gPSBFWFQ0X01BWF9SRUNfTEVOOworCQllbHNlIAorCQkJZGlyZW50LT5yZWNfbGVuID0gMDsKKwl9IGVsc2UKKwkJZGlyZW50LT5yZWNfbGVuID0gKGxlbiAmIDY1NTMyKSB8ICgobGVuID4+IDE2KSAmIDMpOworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIHdoZXRoZXIgb3Igbm90IGEgcG90ZW50aWFsIGRlbGV0ZWQKKyAqIGRpcmVjdG9yeSBlbnRyeSBsb29rcyB2YWxpZC4gIFdoYXQgd2UgZG8gaXMgY2hlY2sgdGhlIGRlbGV0ZWQgZW50cnkKKyAqIGFuZCBlYWNoIHN1Y2Nlc3NpdmUgZW50cnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBhbGwgbG9vayB2YWxpZCBhbmQKKyAqIHRoYXQgdGhlIGxhc3QgZGVsZXRlZCBlbnRyeSBlbmRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQKKyAqIHVuZGVsZXRlZCBlbnRyeS4gIFJldHVybnMgMSBpZiB0aGUgZGVsZXRlZCBlbnRyeSBsb29rcyB2YWxpZCwgemVybworICogaWYgbm90IHZhbGlkLgorICovCitzdGF0aWMgaW50IGV4dDJmc192YWxpZGF0ZV9lbnRyeShleHQyX2ZpbHN5cyBmcywgY2hhciAqYnVmLAorCQkJCSB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorCQkJCSB1bnNpZ25lZCBpbnQgZmluYWxfb2Zmc2V0KQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50OworCXVuc2lnbmVkIGludCByZWNfbGVuOworI2RlZmluZSBESVJFTlRfTUlOX0xFTkdUSCAxMgorCisJd2hpbGUgKChvZmZzZXQgPCBmaW5hbF9vZmZzZXQpICYmCisJICAgICAgIChvZmZzZXQgPD0gZnMtPmJsb2Nrc2l6ZSAtIERJUkVOVF9NSU5fTEVOR1RIKSkgeworCQlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopKGJ1ZiArIG9mZnNldCk7CisJCWlmIChleHQyZnNfZ2V0X3JlY19sZW4oZnMsIGRpcmVudCwgJnJlY19sZW4pKQorCQkJcmV0dXJuIDA7CisJCW9mZnNldCArPSByZWNfbGVuOworCQlpZiAoKHJlY19sZW4gPCA4KSB8fAorCQkgICAgKChyZWNfbGVuICUgNCkgIT0gMCkgfHwKKwkJICAgICgoZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpKzgpID4gKGludCkgcmVjX2xlbikpCisJCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIChvZmZzZXQgPT0gZmluYWxfb2Zmc2V0KTsKK30KKworZXJyY29kZV90IGV4dDJmc19kaXJfaXRlcmF0ZTIoZXh0Ml9maWxzeXMgZnMsCisJCQkgICAgICBleHQyX2lub190IGRpciwKKwkJCSAgICAgIGludCBmbGFncywKKwkJCSAgICAgIGNoYXIgKmJsb2NrX2J1ZiwKKwkJCSAgICAgIGludCAoKmZ1bmMpKGV4dDJfaW5vX3QJZGlyLAorCQkJCQkgIGludAkJZW50cnksCisJCQkJCSAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJCSAgaW50CW9mZnNldCwKKwkJCQkJICBpbnQJYmxvY2tzaXplLAorCQkJCQkgIGNoYXIJKmJ1ZiwKKwkJCQkJICB2b2lkCSpwcml2X2RhdGEpLAorCQkJICAgICAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdAkJZGlyX2NvbnRleHQJY3R4OworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2RpcmVjdG9yeShmcywgZGlyKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJY3R4LmRpciA9IGRpcjsKKwljdHguZmxhZ3MgPSBmbGFnczsKKwlpZiAoYmxvY2tfYnVmKQorCQljdHguYnVmID0gYmxvY2tfYnVmOworCWVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmY3R4LmJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKwljdHguZnVuYyA9IGZ1bmM7CisJY3R4LnByaXZfZGF0YSA9IHByaXZfZGF0YTsKKwljdHguZXJyY29kZSA9IDA7CisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBkaXIsIEJMT0NLX0ZMQUdfUkVBRF9PTkxZLCAwLAorCQkJCSAgICAgICBleHQyZnNfcHJvY2Vzc19kaXJfYmxvY2ssICZjdHgpOworCWlmICghYmxvY2tfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmN0eC5idWYpOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9JTkxJTkVfREFUQV9DQU5UX0lURVJBVEUpIHsKKwkJKHZvaWQpIGV4dDJmc19pbmxpbmVfZGF0YV9kaXJfaXRlcmF0ZShmcywgZGlyLCAmY3R4KTsKKwkJcmV0dmFsID0gMDsKKwl9CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlyZXR1cm4gY3R4LmVycmNvZGU7Cit9CisKK3N0cnVjdCB4bGF0ZSB7CisJaW50ICgqZnVuYykoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCSAgICBpbnQJCW9mZnNldCwKKwkJICAgIGludAkJYmxvY2tzaXplLAorCQkgICAgY2hhcgkqYnVmLAorCQkgICAgdm9pZAkqcHJpdl9kYXRhKTsKKwl2b2lkICpyZWFsX3ByaXZhdGU7Cit9OworCitzdGF0aWMgaW50IHhsYXRlX2Z1bmMoZXh0Ml9pbm9fdCBkaXIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBpbnQgZW50cnkgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwgaW50IG9mZnNldCwKKwkJICAgICAgaW50IGJsb2Nrc2l6ZSwgY2hhciAqYnVmLCB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHhsYXRlICp4bCA9IChzdHJ1Y3QgeGxhdGUgKikgcHJpdl9kYXRhOworCisJcmV0dXJuICgqeGwtPmZ1bmMpKGRpcmVudCwgb2Zmc2V0LCBibG9ja3NpemUsIGJ1ZiwgeGwtPnJlYWxfcHJpdmF0ZSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZGlyX2l0ZXJhdGUoZXh0Ml9maWxzeXMgZnMsCisJCQkgICAgIGV4dDJfaW5vX3QgZGlyLAorCQkJICAgICBpbnQgZmxhZ3MsCisJCQkgICAgIGNoYXIgKmJsb2NrX2J1ZiwKKwkJCSAgICAgaW50ICgqZnVuYykoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJCSBpbnQJb2Zmc2V0LAorCQkJCQkgaW50CWJsb2Nrc2l6ZSwKKwkJCQkJIGNoYXIJKmJ1ZiwKKwkJCQkJIHZvaWQJKnByaXZfZGF0YSksCisJCQkgICAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgeGxhdGUgeGw7CisKKwl4bC5yZWFsX3ByaXZhdGUgPSBwcml2X2RhdGE7CisJeGwuZnVuYyA9IGZ1bmM7CisKKwlyZXR1cm4gZXh0MmZzX2Rpcl9pdGVyYXRlMihmcywgZGlyLCBmbGFncywgYmxvY2tfYnVmLAorCQkJCSAgIHhsYXRlX2Z1bmMsICZ4bCk7Cit9CisKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCBpcyBwcml2YXRlIHRvIHRoaXMgbW9kdWxlLiAgVXNlZCBieQorICogZXh0MmZzX2Rpcl9pdGVyYXRlKCkgYW5kIGV4dDJmc19kYmxpc3RfZGlyX2l0ZXJhdGUoKQorICovCitpbnQgZXh0MmZzX3Byb2Nlc3NfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICBibGs2NF90CSpibG9ja25yLAorCQkJICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJCSAgICAgYmxrNjRfdAlyZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICBpbnQJcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIHZvaWQJKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eCA9IChzdHJ1Y3QgZGlyX2NvbnRleHQgKikgcHJpdl9kYXRhOworCXVuc2lnbmVkIGludAlvZmZzZXQgPSAwOworCXVuc2lnbmVkIGludAluZXh0X3JlYWxfZW50cnkgPSAwOworCWludAkJcmV0ID0gMDsKKwlpbnQJCWNoYW5nZWQgPSAwOworCWludAkJZG9fYWJvcnQgPSAwOworCXVuc2lnbmVkIGludAlyZWNfbGVuLCBzaXplLCBidWZsZW47CisJaW50CQllbnRyeTsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudDsKKwlpbnQJCWNzdW1fc2l6ZSA9IDA7CisJaW50CQlpbmxpbmVfZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCWlmIChibG9ja2NudCA8IDApCisJCXJldHVybiAwOworCisJZW50cnkgPSBibG9ja2NudCA/IERJUkVOVF9PVEhFUl9GSUxFIDogRElSRU5UX0RPVF9GSUxFOworCisJLyogSWYgYSBkaXIgaGFzIGlubGluZSBkYXRhLCB3ZSBkb24ndCBuZWVkIHRvIHJlYWQgYmxvY2sgKi8KKwlpbmxpbmVfZGF0YSA9ICEhKGN0eC0+ZmxhZ3MgJiBESVJFTlRfRkxBR19JTkNMVURFX0lOTElORV9EQVRBKTsKKwlpZiAoIWlubGluZV9kYXRhKSB7CisJCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2Rpcl9ibG9jazQoZnMsICpibG9ja25yLCBjdHgtPmJ1ZiwgMCwKKwkJCQkJCSAgICAgIGN0eC0+ZGlyKTsKKwkJaWYgKGN0eC0+ZXJyY29kZSkKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJLyogSWYgd2UgaGFuZGxlIGEgbm9ybWFsIGRpciwgd2UgdHJhdmVyc2UgdGhlIGVudGlyZSBibG9jayAqLworCQlidWZsZW4gPSBmcy0+YmxvY2tzaXplOworCX0gZWxzZSB7CisJCWJ1ZmxlbiA9IGN0eC0+YnVmbGVuOworCX0KKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQljc3VtX3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwpOworCisJd2hpbGUgKG9mZnNldCA8IGJ1ZmxlbiAtIDgpIHsKKwkJZGlyZW50ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAoY3R4LT5idWYgKyBvZmZzZXQpOworCQlpZiAoZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXJlbnQsICZyZWNfbGVuKSkKKwkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJaWYgKCgob2Zmc2V0ICsgcmVjX2xlbikgPiBidWZsZW4pIHx8CisJCSAgICAocmVjX2xlbiA8IDgpIHx8CisJCSAgICAoKHJlY19sZW4gJSA0KSAhPSAwKSB8fAorCQkgICAgKChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkrOCkgPiAoaW50KSByZWNfbGVuKSkgeworCQkJY3R4LT5lcnJjb2RlID0gRVhUMl9FVF9ESVJfQ09SUlVQVEVEOworCQkJcmV0dXJuIEJMT0NLX0FCT1JUOworCQl9CisJCWlmICghZGlyZW50LT5pbm9kZSkgeworCQkJLyoKKwkJCSAqIFdlIGp1c3QgbmVlZCB0byBjaGVjayBtZXRhZGF0YV9jc3VtIHdoZW4gdGhpcworCQkJICogZGlyIGhhc24ndCBpbmxpbmUgZGF0YS4gIFRoYXQgbWVhbnMgdGhhdCAnYnVmbGVuJworCQkJICogc2hvdWxkIGJlIGJsb2Nrc2l6ZS4KKwkJCSAqLworCQkJaWYgKCFpbmxpbmVfZGF0YSAmJgorCQkJICAgIChvZmZzZXQgPT0gYnVmbGVuIC0gY3N1bV9zaXplKSAmJgorCQkJICAgIChkaXJlbnQtPnJlY19sZW4gPT0gY3N1bV9zaXplKSAmJgorCQkJICAgIChkaXJlbnQtPm5hbWVfbGVuID09IEVYVDJfRElSX05BTUVfTEVOX0NTVU0pKSB7CisJCQkJaWYgKCEoY3R4LT5mbGFncyAmIERJUkVOVF9GTEFHX0lOQ0xVREVfQ1NVTSkpCisJCQkJCWdvdG8gbmV4dDsKKwkJCQllbnRyeSA9IERJUkVOVF9DSEVDS1NVTTsKKwkJCX0gZWxzZSBpZiAoIShjdHgtPmZsYWdzICYgRElSRU5UX0ZMQUdfSU5DTFVERV9FTVBUWSkpCisJCQkJZ290byBuZXh0OworCQl9CisKKwkJcmV0ID0gKGN0eC0+ZnVuYykoY3R4LT5kaXIsCisJCQkJICAobmV4dF9yZWFsX2VudHJ5ID4gb2Zmc2V0KSA/CisJCQkJICBESVJFTlRfREVMRVRFRF9GSUxFIDogZW50cnksCisJCQkJICBkaXJlbnQsIG9mZnNldCwKKwkJCQkgIGJ1ZmxlbiwgY3R4LT5idWYsCisJCQkJICBjdHgtPnByaXZfZGF0YSk7CisJCWlmIChlbnRyeSA8IERJUkVOVF9PVEhFUl9GSUxFKQorCQkJZW50cnkrKzsKKworCQlpZiAocmV0ICYgRElSRU5UX0NIQU5HRUQpIHsKKwkJCWlmIChleHQyZnNfZ2V0X3JlY19sZW4oZnMsIGRpcmVudCwgJnJlY19sZW4pKQorCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJCWNoYW5nZWQrKzsKKwkJfQorCQlpZiAocmV0ICYgRElSRU5UX0FCT1JUKSB7CisJCQlkb19hYm9ydCsrOworCQkJYnJlYWs7CisJCX0KK25leHQ6CisgCQlpZiAobmV4dF9yZWFsX2VudHJ5ID09IG9mZnNldCkKKwkJCW5leHRfcmVhbF9lbnRyeSArPSByZWNfbGVuOworCisgCQlpZiAoY3R4LT5mbGFncyAmIERJUkVOVF9GTEFHX0lOQ0xVREVfUkVNT1ZFRCkgeworCQkJc2l6ZSA9IChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgKyAxMSkgJiB+MzsKKworCQkJaWYgKHJlY19sZW4gIT0gc2l6ZSkgIHsKKwkJCQl1bnNpZ25lZCBpbnQgZmluYWxfb2Zmc2V0OworCisJCQkJZmluYWxfb2Zmc2V0ID0gb2Zmc2V0ICsgcmVjX2xlbjsKKwkJCQlvZmZzZXQgKz0gc2l6ZTsKKwkJCQl3aGlsZSAob2Zmc2V0IDwgZmluYWxfb2Zmc2V0ICYmCisJCQkJICAgICAgICFleHQyZnNfdmFsaWRhdGVfZW50cnkoZnMsIGN0eC0+YnVmLAorCQkJCQkJCSAgICAgIG9mZnNldCwKKwkJCQkJCQkgICAgICBmaW5hbF9vZmZzZXQpKQorCQkJCQlvZmZzZXQgKz0gNDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCQlvZmZzZXQgKz0gcmVjX2xlbjsKKwl9CisKKwlpZiAoY2hhbmdlZCkgeworCQlpZiAoIWlubGluZV9kYXRhKSB7CisJCQljdHgtPmVycmNvZGUgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgKmJsb2NrbnIsCisJCQkJCQkJICAgICAgIGN0eC0+YnVmLAorCQkJCQkJCSAgICAgICAwLCBjdHgtPmRpcik7CisJCQlpZiAoY3R4LT5lcnJjb2RlKQorCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJfSBlbHNlIHsKKwkJCS8qCisJCQkgKiByZXR1cm4gQkxPQ0tfSU5MSU5FX0RBVEFfQ0hBTkdFRCB0byBub3RpZnkgY2FsbGVyCisJCQkgKiB0aGF0IGlubGluZSBkYXRhIGhhcyBiZWVuIGNoYW5nZWQuCisJCQkgKi8KKwkJCXJldHZhbCA9IEJMT0NLX0lOTElORV9EQVRBX0NIQU5HRUQ7CisJCX0KKwl9CisJaWYgKGRvX2Fib3J0KQorCQlyZXR1cm4gcmV0dmFsIHwgQkxPQ0tfQUJPUlQ7CisJcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2RpcmJsb2NrLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kaXJibG9jay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YjI3NzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kaXJibG9jay5jCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogZGlyYmxvY2suYyAtLS0gZGlyZWN0b3J5IGJsb2NrIHJvdXRpbmVzLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZGlyX2Jsb2NrNChleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywKKwkJCQkgdm9pZCAqYnVmLCBpbnQgZmxhZ3MgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSBleHQyX2lub190IGlubykKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJY29ycnVwdCA9IDA7CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCBibG9jaywgMSwgYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgJiYKKwkgICAgIWV4dDJmc19kaXJfYmxvY2tfY3N1bV92ZXJpZnkoZnMsIGlubywKKwkJCQkJICAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopYnVmKSkKKwkJY29ycnVwdCA9IDE7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlyZXR2YWwgPSBleHQyZnNfZGlyZW50X3N3YWJfaW4oZnMsIGJ1ZiwgZmxhZ3MpOworI2VuZGlmCisJaWYgKCFyZXR2YWwgJiYgY29ycnVwdCkKKwkJcmV0dmFsID0gRVhUMl9FVF9ESVJfQ1NVTV9JTlZBTElEOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVhZF9kaXJfYmxvY2szKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLAorCQkJCSB2b2lkICpidWYsIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcmV0dXJuIGV4dDJmc19yZWFkX2Rpcl9ibG9jazQoZnMsIGJsb2NrLCBidWYsIGZsYWdzLCAwKTsKK30KKworZXJyY29kZV90IGV4dDJmc19yZWFkX2Rpcl9ibG9jazIoZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsb2NrLAorCQkJCSB2b2lkICpidWYsIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcmV0dXJuIGV4dDJmc19yZWFkX2Rpcl9ibG9jazMoZnMsIGJsb2NrLCBidWYsIGZsYWdzKTsKK30KKworZXJyY29kZV90IGV4dDJmc19yZWFkX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxvY2ssCisJCQkJIHZvaWQgKmJ1ZikKK3sKKwlyZXR1cm4gZXh0MmZzX3JlYWRfZGlyX2Jsb2NrMyhmcywgYmxvY2ssIGJ1ZiwgMCk7Cit9CisKKworZXJyY29kZV90IGV4dDJmc193cml0ZV9kaXJfYmxvY2s0KGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLAorCQkJCSAgdm9pZCAqaW5idWYsIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICBleHQyX2lub190IGlubykKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpidWYgPSBpbmJ1ZjsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZidWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJbWVtY3B5KGJ1ZiwgaW5idWYsIGZzLT5ibG9ja3NpemUpOworCXJldHZhbCA9IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQoZnMsIGJ1ZiwgZmxhZ3MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisjZW5kaWYKKwlyZXR2YWwgPSBleHQyZnNfZGlyX2Jsb2NrX2NzdW1fc2V0KGZzLCBpbm8sCisJCQkJCSAgIChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKilidWYpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworCisJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsb2NrLCAxLCBidWYpOworCitvdXQ6CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworI2VuZGlmCisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9kaXJfYmxvY2szKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLAorCQkJCSAgdm9pZCAqaW5idWYsIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcmV0dXJuIGV4dDJmc193cml0ZV9kaXJfYmxvY2s0KGZzLCBibG9jaywgaW5idWYsIGZsYWdzLCAwKTsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9kaXJfYmxvY2syKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywKKwkJCQkgdm9pZCAqaW5idWYsIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcmV0dXJuIGV4dDJmc193cml0ZV9kaXJfYmxvY2szKGZzLCBibG9jaywgaW5idWYsIGZsYWdzKTsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9kaXJfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsb2NrLAorCQkJCSB2b2lkICppbmJ1ZikKK3sKKwlyZXR1cm4gZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazMoZnMsIGJsb2NrLCBpbmJ1ZiwgMCk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Rpcmhhc2guYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Rpcmhhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGFjOTRlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZGlyaGFzaC5jCkBAIC0wLDAgKzEsMjYxIEBACisvKgorICogZGlyaGFzaC5jIC0tIENhbGN1bGF0ZSB0aGUgaGFzaCBvZiBhIGRpcmVjdG9yeSBlbnRyeQorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMSAgRGFuaWVsIFBoaWxsaXBzCisgKgorICogQ29weXJpZ2h0IChjKSAyMDAyIFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworLyoKKyAqIEtleWVkIDMyLWJpdCBoYXNoIGZ1bmN0aW9uIHVzaW5nIFRFQSBpbiBhIERhdmlzLU1leWVyIGZ1bmN0aW9uCisgKiAgIEgwID0gS2V5CisgKiAgIEhpID0gRSBNaShIaS0xKSArIEhpLTEKKyAqCisgKiAoc2VlIEFwcGxpZWQgQ3J5cHRvZ3JhcGh5LCAybmQgZWRpdGlvbiwgcDQ0OCkuCisgKgorICogSmVyZW15IEZpdHpoYXJkaW5nZSA8amVyZW15QHppcC5jb20uYXU+IDE5OTgKKyAqCisgKiBUaGlzIGNvZGUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHUEwKKyAqLworI2RlZmluZSBERUxUQSAweDlFMzc3OUI5CisKK3N0YXRpYyB2b2lkIFRFQV90cmFuc2Zvcm0oX191MzIgYnVmWzRdLCBfX3UzMiBjb25zdCBpbltdKQoreworCV9fdTMyCXN1bSA9IDA7CisJX191MzIJYjAgPSBidWZbMF0sIGIxID0gYnVmWzFdOworCV9fdTMyCWEgPSBpblswXSwgYiA9IGluWzFdLCBjID0gaW5bMl0sIGQgPSBpblszXTsKKwlpbnQJbiA9IDE2OworCisJZG8geworCQlzdW0gKz0gREVMVEE7CisJCWIwICs9ICgoYjEgPDwgNCkrYSkgXiAoYjErc3VtKSBeICgoYjEgPj4gNSkrYik7CisJCWIxICs9ICgoYjAgPDwgNCkrYykgXiAoYjArc3VtKSBeICgoYjAgPj4gNSkrZCk7CisJfSB3aGlsZSgtLW4pOworCisJYnVmWzBdICs9IGIwOworCWJ1ZlsxXSArPSBiMTsKK30KKworLyogRiwgRyBhbmQgSCBhcmUgYmFzaWMgTUQ0IGZ1bmN0aW9uczogc2VsZWN0aW9uLCBtYWpvcml0eSwgcGFyaXR5ICovCisjZGVmaW5lIEYoeCwgeSwgeikgKCh6KSBeICgoeCkgJiAoKHkpIF4gKHopKSkpCisjZGVmaW5lIEcoeCwgeSwgeikgKCgoeCkgJiAoeSkpICsgKCgoeCkgXiAoeSkpICYgKHopKSkKKyNkZWZpbmUgSCh4LCB5LCB6KSAoKHgpIF4gKHkpIF4gKHopKQorCisvKgorICogVGhlIGdlbmVyaWMgcm91bmQgZnVuY3Rpb24uICBUaGUgYXBwbGljYXRpb24gaXMgc28gc3BlY2lmaWMgdGhhdAorICogd2UgZG9uJ3QgYm90aGVyIHByb3RlY3RpbmcgYWxsIHRoZSBhcmd1bWVudHMgd2l0aCBwYXJlbnMsIGFzIGlzIGdlbmVyYWxseQorICogZ29vZCBtYWNybyBwcmFjdGljZSwgaW4gZmF2b3Igb2YgZXh0cmEgbGVnaWJpbGl0eS4KKyAqIFJvdGF0aW9uIGlzIHNlcGFyYXRlIGZyb20gYWRkaXRpb24gdG8gcHJldmVudCByZWNvbXB1dGF0aW9uCisgKi8KKyNkZWZpbmUgUk9VTkQoZiwgYSwgYiwgYywgZCwgeCwgcykJXAorCShhICs9IGYoYiwgYywgZCkgKyB4LCBhID0gKGEgPDwgcykgfCAoYSA+PiAoMzItcykpKQorI2RlZmluZSBLMSAwCisjZGVmaW5lIEsyIDAxMzI0MDQ3NDYzMVVMCisjZGVmaW5lIEszIDAxNTY2NjM2NTY0MVVMCisKKy8qCisgKiBCYXNpYyBjdXQtZG93biBNRDQgdHJhbnNmb3JtLiAgUmV0dXJucyBvbmx5IDMyIGJpdHMgb2YgcmVzdWx0LgorICovCitzdGF0aWMgdm9pZCBoYWxmTUQ0VHJhbnNmb3JtIChfX3UzMiBidWZbNF0sIF9fdTMyIGNvbnN0IGluW10pCit7CisJX191MzIJYSA9IGJ1ZlswXSwgYiA9IGJ1ZlsxXSwgYyA9IGJ1ZlsyXSwgZCA9IGJ1ZlszXTsKKworCS8qIFJvdW5kIDEgKi8KKwlST1VORChGLCBhLCBiLCBjLCBkLCBpblswXSArIEsxLCAgMyk7CisJUk9VTkQoRiwgZCwgYSwgYiwgYywgaW5bMV0gKyBLMSwgIDcpOworCVJPVU5EKEYsIGMsIGQsIGEsIGIsIGluWzJdICsgSzEsIDExKTsKKwlST1VORChGLCBiLCBjLCBkLCBhLCBpblszXSArIEsxLCAxOSk7CisJUk9VTkQoRiwgYSwgYiwgYywgZCwgaW5bNF0gKyBLMSwgIDMpOworCVJPVU5EKEYsIGQsIGEsIGIsIGMsIGluWzVdICsgSzEsICA3KTsKKwlST1VORChGLCBjLCBkLCBhLCBiLCBpbls2XSArIEsxLCAxMSk7CisJUk9VTkQoRiwgYiwgYywgZCwgYSwgaW5bN10gKyBLMSwgMTkpOworCisJLyogUm91bmQgMiAqLworCVJPVU5EKEcsIGEsIGIsIGMsIGQsIGluWzFdICsgSzIsICAzKTsKKwlST1VORChHLCBkLCBhLCBiLCBjLCBpblszXSArIEsyLCAgNSk7CisJUk9VTkQoRywgYywgZCwgYSwgYiwgaW5bNV0gKyBLMiwgIDkpOworCVJPVU5EKEcsIGIsIGMsIGQsIGEsIGluWzddICsgSzIsIDEzKTsKKwlST1VORChHLCBhLCBiLCBjLCBkLCBpblswXSArIEsyLCAgMyk7CisJUk9VTkQoRywgZCwgYSwgYiwgYywgaW5bMl0gKyBLMiwgIDUpOworCVJPVU5EKEcsIGMsIGQsIGEsIGIsIGluWzRdICsgSzIsICA5KTsKKwlST1VORChHLCBiLCBjLCBkLCBhLCBpbls2XSArIEsyLCAxMyk7CisKKwkvKiBSb3VuZCAzICovCisJUk9VTkQoSCwgYSwgYiwgYywgZCwgaW5bM10gKyBLMywgIDMpOworCVJPVU5EKEgsIGQsIGEsIGIsIGMsIGluWzddICsgSzMsICA5KTsKKwlST1VORChILCBjLCBkLCBhLCBiLCBpblsyXSArIEszLCAxMSk7CisJUk9VTkQoSCwgYiwgYywgZCwgYSwgaW5bNl0gKyBLMywgMTUpOworCVJPVU5EKEgsIGEsIGIsIGMsIGQsIGluWzFdICsgSzMsICAzKTsKKwlST1VORChILCBkLCBhLCBiLCBjLCBpbls1XSArIEszLCAgOSk7CisJUk9VTkQoSCwgYywgZCwgYSwgYiwgaW5bMF0gKyBLMywgMTEpOworCVJPVU5EKEgsIGIsIGMsIGQsIGEsIGluWzRdICsgSzMsIDE1KTsKKworCWJ1ZlswXSArPSBhOworCWJ1ZlsxXSArPSBiOworCWJ1ZlsyXSArPSBjOworCWJ1ZlszXSArPSBkOworfQorCisjdW5kZWYgUk9VTkQKKyN1bmRlZiBGCisjdW5kZWYgRworI3VuZGVmIEgKKyN1bmRlZiBLMQorI3VuZGVmIEsyCisjdW5kZWYgSzMKKworLyogVGhlIG9sZCBsZWdhY3kgaGFzaCAqLworc3RhdGljIGV4dDJfZGlyaGFzaF90IGR4X2hhY2tfaGFzaCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKKwkJCQkgICAgaW50IHVuc2lnbmVkX2ZsYWcpCit7CisJX191MzIgaGFzaCwgaGFzaDAgPSAweDEyYTNmZTJkLCBoYXNoMSA9IDB4MzdhYmU4Zjk7CisJY29uc3QgdW5zaWduZWQgY2hhciAqdWNwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbmFtZTsKKwljb25zdCBzaWduZWQgY2hhciAqc2NwID0gKGNvbnN0IHNpZ25lZCBjaGFyICopIG5hbWU7CisJaW50IGM7CisKKwl3aGlsZSAobGVuLS0pIHsKKwkJaWYgKHVuc2lnbmVkX2ZsYWcpCisJCQljID0gKGludCkgKnVjcCsrOworCQllbHNlCisJCQljID0gKGludCkgKnNjcCsrOworCQloYXNoID0gaGFzaDEgKyAoaGFzaDAgXiAoYyAqIDcxNTIzNzMpKTsKKworCQlpZiAoaGFzaCAmIDB4ODAwMDAwMDApIGhhc2ggLT0gMHg3ZmZmZmZmZjsKKwkJaGFzaDEgPSBoYXNoMDsKKwkJaGFzaDAgPSBoYXNoOworCX0KKwlyZXR1cm4gKGhhc2gwIDw8IDEpOworfQorCitzdGF0aWMgdm9pZCBzdHIyaGFzaGJ1Zihjb25zdCBjaGFyICptc2csIGludCBsZW4sIF9fdTMyICpidWYsIGludCBudW0sCisJCQlpbnQgdW5zaWduZWRfZmxhZykKK3sKKwlfX3UzMglwYWQsIHZhbDsKKwlpbnQJaSwgYzsKKwljb25zdCB1bnNpZ25lZCBjaGFyICp1Y3AgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtc2c7CisJY29uc3Qgc2lnbmVkIGNoYXIgKnNjcCA9IChjb25zdCBzaWduZWQgY2hhciAqKSBtc2c7CisKKwlwYWQgPSAoX191MzIpbGVuIHwgKChfX3UzMilsZW4gPDwgOCk7CisJcGFkIHw9IHBhZCA8PCAxNjsKKworCXZhbCA9IHBhZDsKKwlpZiAobGVuID4gbnVtKjQpCisJCWxlbiA9IG51bSAqIDQ7CisJZm9yIChpPTA7IGkgPCBsZW47IGkrKykgeworCQlpZiAoKGkgJSA0KSA9PSAwKQorCQkJdmFsID0gcGFkOworCQlpZiAodW5zaWduZWRfZmxhZykKKwkJCWMgPSAoaW50KSB1Y3BbaV07CisJCWVsc2UKKwkJCWMgPSAoaW50KSBzY3BbaV07CisKKwkJdmFsID0gYyArICh2YWwgPDwgOCk7CisJCWlmICgoaSAlIDQpID09IDMpIHsKKwkJCSpidWYrKyA9IHZhbDsKKwkJCXZhbCA9IHBhZDsKKwkJCW51bS0tOworCQl9CisJfQorCWlmICgtLW51bSA+PSAwKQorCQkqYnVmKysgPSB2YWw7CisJd2hpbGUgKC0tbnVtID49IDApCisJCSpidWYrKyA9IHBhZDsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGhhc2ggb2YgYSBmaWxlbmFtZS4gIElmIGxlbiBpcyAwIGFuZCBuYW1lIGlzIE5VTEwsIHRoZW4KKyAqIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyIG9yIG5vdCBhIGhhc2ggdmVyc2lvbiBpcworICogc3VwcG9ydGVkLgorICoKKyAqIFRoZSBzZWVkIGlzIGFuIDQgbG9uZ3dvcmQgKDMyIGJpdHMpICJzZWNyZXQiIHdoaWNoIGNhbiBiZSB1c2VkIHRvCisgKiB1bmlxdWlmeSBhIGhhc2guICBJZiB0aGUgc2VlZCBpcyBhbGwgemVybydzLCB0aGVuIHNvbWUgZGVmYXVsdCBzZWVkCisgKiBtYXkgYmUgdXNlZC4KKyAqCisgKiBBIHBhcnRpY3VsYXIgaGFzaCB2ZXJzaW9uIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB0aGUgc2VlZCBpcworICogcmVwcmVzZW50ZWQsIGFuZCB3aGV0aGVyIG9yIG5vdCB0aGUgcmV0dXJuZWQgaGFzaCBpcyAzMiBiaXRzIG9yIDY0CisgKiBiaXRzLiAgMzIgYml0IGhhc2hlcyB3aWxsIHJldHVybiAwIGZvciB0aGUgbWlub3IgaGFzaC4KKyAqLworZXJyY29kZV90IGV4dDJmc19kaXJoYXNoKGludCB2ZXJzaW9uLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGVuLAorCQkJIGNvbnN0IF9fdTMyICpzZWVkLAorCQkJIGV4dDJfZGlyaGFzaF90ICpyZXRfaGFzaCwKKwkJCSBleHQyX2Rpcmhhc2hfdCAqcmV0X21pbm9yX2hhc2gpCit7CisJX191MzIJaGFzaDsKKwlfX3UzMgltaW5vcl9oYXNoID0gMDsKKwljb25zdCBjaGFyCSpwOworCWludAkJaTsKKwlfX3UzMiAJCWluWzhdLCBidWZbNF07CisJaW50CQl1bnNpZ25lZF9mbGFnID0gMDsKKworCS8qIEluaXRpYWxpemUgdGhlIGRlZmF1bHQgc2VlZCBmb3IgdGhlIGhhc2ggY2hlY2tzdW0gZnVuY3Rpb25zICovCisJYnVmWzBdID0gMHg2NzQ1MjMwMTsKKwlidWZbMV0gPSAweGVmY2RhYjg5OworCWJ1ZlsyXSA9IDB4OThiYWRjZmU7CisJYnVmWzNdID0gMHgxMDMyNTQ3NjsKKworCS8qIENoZWNrIHRvIHNlZSBpZiB0aGUgc2VlZCBpcyBhbGwgemVybydzICovCisJaWYgKHNlZWQpIHsKKwkJZm9yIChpPTA7IGkgPCA0OyBpKyspIHsKKwkJCWlmIChzZWVkW2ldKQorCQkJCWJyZWFrOworCQl9CisJCWlmIChpIDwgNCkKKwkJCW1lbWNweShidWYsIHNlZWQsIHNpemVvZihidWYpKTsKKwl9CisKKwlzd2l0Y2ggKHZlcnNpb24pIHsKKwljYXNlIEVYVDJfSEFTSF9MRUdBQ1lfVU5TSUdORUQ6CisJCXVuc2lnbmVkX2ZsYWcrKzsKKwkJLyogZmFsbHRocm91Z2ggKi8KKwljYXNlIEVYVDJfSEFTSF9MRUdBQ1k6CisJCWhhc2ggPSBkeF9oYWNrX2hhc2gobmFtZSwgbGVuLCB1bnNpZ25lZF9mbGFnKTsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0hBU0hfSEFMRl9NRDRfVU5TSUdORUQ6CisJCXVuc2lnbmVkX2ZsYWcrKzsKKwkJLyogZmFsbHRocm91Z2ggKi8KKwljYXNlIEVYVDJfSEFTSF9IQUxGX01ENDoKKwkJcCA9IG5hbWU7CisJCXdoaWxlIChsZW4gPiAwKSB7CisJCQlzdHIyaGFzaGJ1ZihwLCBsZW4sIGluLCA4LCB1bnNpZ25lZF9mbGFnKTsKKwkJCWhhbGZNRDRUcmFuc2Zvcm0oYnVmLCBpbik7CisJCQlsZW4gLT0gMzI7CisJCQlwICs9IDMyOworCQl9CisJCW1pbm9yX2hhc2ggPSBidWZbMl07CisJCWhhc2ggPSBidWZbMV07CisJCWJyZWFrOworCWNhc2UgRVhUMl9IQVNIX1RFQV9VTlNJR05FRDoKKwkJdW5zaWduZWRfZmxhZysrOworCQkvKiBmYWxsdGhyb3VnaCAqLworCWNhc2UgRVhUMl9IQVNIX1RFQToKKwkJcCA9IG5hbWU7CisJCXdoaWxlIChsZW4gPiAwKSB7CisJCQlzdHIyaGFzaGJ1ZihwLCBsZW4sIGluLCA0LCB1bnNpZ25lZF9mbGFnKTsKKwkJCVRFQV90cmFuc2Zvcm0oYnVmLCBpbik7CisJCQlsZW4gLT0gMTY7CisJCQlwICs9IDE2OworCQl9CisJCWhhc2ggPSBidWZbMF07CisJCW1pbm9yX2hhc2ggPSBidWZbMV07CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCSpyZXRfaGFzaCA9IDA7CisJCXJldHVybiBFWFQyX0VUX0RJUkhBU0hfVU5TVVBQOworCX0KKwkqcmV0X2hhc2ggPSBoYXNoICYgfjE7CisJaWYgKHJldF9taW5vcl9oYXNoKQorCQkqcmV0X21pbm9yX2hhc2ggPSBtaW5vcl9oYXNoOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZG9zaW8uYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Rvc2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBjZjI2OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2Rvc2lvLmMKQEAgLTAsMCArMSw0NTkgQEAKKy8qCisgKiBkb3Npby5jIC0tIERpc2sgSS9PIG1vZHVsZSBmb3IgdGhlIGV4dDJmcy9ET1MgbGlicmFyeS4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTcgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTcgTWFyayBIYWJlcnNhY2sKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGJpb3MuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGlvLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfdHlwZXMuaD4KKyNpbmNsdWRlICJ1dGlscy5oIgorI2luY2x1ZGUgImRvc2lvLmgiCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImV4dDJfZXJyLmgiCisjaW5jbHVkZSAiZXh0MmZzL2lvLmgiCisKKy8qCisgKiBTb21lIGhlbHBlciBtYWNyb3MKKyAqLworI2RlZmluZSBMSU5VWF9FWFQyRlMgICAgICAgMHg4MworI2RlZmluZSBMSU5VWF9TV0FQICAgICAgICAgMHg4MgorI2RlZmluZSBXUklURV9FUlIoX21zZ18pIHdyaXRlKDIsIF9tc2dfLCBzdHJsZW4oX21zZ18pKQorI2RlZmluZSBXUklURV9FUlJfUyhfbXNnXykgd3JpdGUoMiwgX21zZ18sIHNpemVvZihfbXNnXykpCisKKy8qCisgKiBFeHBvcnRlZCB2YXJpYWJsZXMKKyAqLwordW5zaWduZWQgbG9uZyAgICAgICAgX2Rpb19lcnJvcjsKK3Vuc2lnbmVkIGxvbmcgICAgICAgIF9kaW9faHdfZXJyb3I7CisKKy8qCisgKiBBcnJheSBvZiBhbGwgb3BlbmVkIHBhcnRpdGlvbnMKKyAqLworc3RhdGljIFBBUlRJVElPTiAgICAgICAgKipwYXJ0aXRpb25zID0gTlVMTDsKK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCAgIG5wYXJ0ID0gMDsgLyogTnVtYmVyIG9mIG1hcHBlZCBwYXJ0aXRpb25zICovCitzdGF0aWMgUEFSVElUSU9OICAgICAgICAqYWN0aXZlID0gTlVMTDsKKworLyoKKyAqIEkvTyBNYW5hZ2VyIHJvdXRpbmUgcHJvdG90eXBlcworICovCitzdGF0aWMgZXJyY29kZV90IGRvc19vcGVuKGNvbnN0IGNoYXIgKmRldiwgaW50IGZsYWdzLCBpb19jaGFubmVsICpjaGFubmVsKTsKK3N0YXRpYyBlcnJjb2RlX3QgZG9zX2Nsb3NlKGlvX2NoYW5uZWwgY2hhbm5lbCk7CitzdGF0aWMgZXJyY29kZV90IGRvc19zZXRfYmxrc2l6ZShpb19jaGFubmVsIGNoYW5uZWwsIGludCBibGtzaXplKTsKK3N0YXRpYyBlcnJjb2RlX3QgZG9zX3JlYWRfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCwgdm9pZCAqYnVmKTsKK3N0YXRpYyBlcnJjb2RlX3QgZG9zX3dyaXRlX2Jsayhpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBjb25zdCB2b2lkICpidWYpOworc3RhdGljIGVycmNvZGVfdCBkb3NfZmx1c2goaW9fY2hhbm5lbCBjaGFubmVsKTsKKworc3RhdGljIHN0cnVjdCBzdHJ1Y3RfaW9fbWFuYWdlciBzdHJ1Y3RfZG9zX21hbmFnZXIgPSB7CisJLm1hZ2ljCQk9IEVYVDJfRVRfTUFHSUNfSU9fTUFOQUdFUiwKKwkubmFtZQkJPSAiRE9TIEkvTyBNYW5hZ2VyIiwKKwkub3BlbgkJPSBkb3Nfb3BlbiwKKwkuY2xvc2UJCT0gZG9zX2Nsb3NlLAorCS5zZXRfYmxrc2l6ZQk9IGRvc19zZXRfYmxrc2l6ZSwKKwkucmVhZF9ibGsJPSBkb3NfcmVhZF9ibGssCisJLndyaXRlX2Jsawk9IGRvc193cml0ZV9ibGssCisJLmZsdXNoCQk9IGRvc19mbHVzaAorfTsKKworaW9fbWFuYWdlciBkb3NfaW9fbWFuYWdlciA9ICZzdHJ1Y3RfZG9zX21hbmFnZXI7CisKKy8qCisgKiBNYWNybyB0YWtlbiBmcm9tIHVuaXhfaW8uYworICovCisvKgorICogRm9yIGNoZWNraW5nIHN0cnVjdHVyZSBtYWdpYyBudW1iZXJzLi4uCisgKi8KKworI2RlZmluZSBFWFQyX0NIRUNLX01BR0lDKHN0cnVjdCwgY29kZSkgXAorICAgICAgICAgIGlmICgoc3RydWN0KS0+bWFnaWMgIT0gKGNvZGUpKSByZXR1cm4gKGNvZGUpCisKKy8qCisgKiBDYWxjdWxhdGVzIGEgQ0hTIGFkZHJlc3Mgb2YgYSBzZWN0b3IgZnJvbSBpdHMgTEJBCisgKiBvZmZzZXQgZm9yIHRoZSBnaXZlbiBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkIGxiYTJjaHModW5zaWduZWQgbG9uZyBsYmFfYWRkciwgQ0hTICpjaHMsIFBBUlRJVElPTiAqcGFydCkKK3sKKyAgdW5zaWduZWQgbG9uZyAgICAgIGFic3M7CisKKyAgY2hzLT5vZmZzZXQgPSBsYmFfYWRkciAmIDB4MDAwMDAxRkY7CisgIGFic3MgPSAobGJhX2FkZHIgPj4gOSkgKyBwYXJ0LT5zdGFydDsKKyAgY2hzLT5jeWwgICAgPSBhYnNzIC8gKHBhcnQtPnNlY3RzICogcGFydC0+aGVhZHMpOworICBjaHMtPmhlYWQgICA9IChhYnNzIC8gcGFydC0+c2VjdHMpICUgcGFydC0+aGVhZHM7CisgIGNocy0+c2VjdG9yID0gKGFic3MgJSBwYXJ0LT5zZWN0cykgKyAxOworfQorCisjaWZkZWYgX19UVVJCT0NfXworI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCisvKgorICogU2NhbnMgdGhlIHBhc3NlZCBwYXJ0aXRpb24gdGFibGUgbG9va2luZyBmb3IgKnBubyBwYXJ0aXRpb24KKyAqIHRoYXQgaGFzIExJTlVYX0VYVDJGUyB0eXBlLgorICoKKyAqIFRPRE86CisgKiBGb3IgcGFydGl0aW9uIG51bWJlcnMgPjUgTGludXggdXNlcyBET1MgZXh0ZW5kZWQgcGFydGl0aW9ucyAtCisgKiBkaXZlIGludG8gdGhlbSBhbiByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZW50cnkuIEFsc28gZGl2ZSBpbnRvCisgKiBleHRlbmRlZCBwYXJ0aXRpb25zIHdoZW4gc2Nhbm5pbmcgZm9yIGEgZmlyc3QgTGludXgvZXh0MmZzLgorICovCitzdGF0aWMgUFRBQkxFX0VOVFJZICpzY2FuX3BhcnRpdGlvbl90YWJsZShQVEFCTEVfRU5UUlkgKnBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHBoeXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpwbm8pCit7CisgIHVuc2lnbmVkICAgICAgICBpOworCisgIGlmKCpwbm8gIT0gMHhGRiAmJiAqcG5vID49IDUpCisgICAgIHJldHVybiBOVUxMOyAvKiBXZSBkb24ndCBzdXBwb3J0IGV4dGVuZGVkIHBhcnRpdGlvbnMgZm9yIG5vdyAqLworCisgIGlmKCpwbm8gIT0gMHhGRikKKyAgeworICAgIGlmKHBlbnRyeVsqcG5vXS50eXBlID09IExJTlVYX0VYVDJGUykKKyAgICAgIHJldHVybiAmcGVudHJ5Wypwbm9dOworICAgIGVsc2UKKyAgICB7CisgICAgICBpZighcGVudHJ5Wypwbm9dLnR5cGUpCisgICAgICAgICpwbm8gPSAweEZFOworICAgICAgZWxzZSBpZihwZW50cnlbKnBub10udHlwZSA9PSBMSU5VWF9TV0FQKQorICAgICAgICAqcG5vID0gMHhGRDsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgfQorCisgIGZvcihpID0gMDsgaSA8IDQ7IGkrKykKKyAgICBpZihwZW50cnlbaV0udHlwZSA9PSBMSU5VWF9FWFQyRlMpCisgICAgeworICAgICAgKnBubyA9IGk7CisgICAgICByZXR1cm4gJnBlbnRyeVtpXTsKKyAgICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBsaWJleHQyZnMgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggSS9PIG1hbmFnZXIKKyAqLworc3RhdGljIGlvX2NoYW5uZWwgYWxsb2NfaW9fY2hhbm5lbChQQVJUSVRJT04gKnBhcnQpCit7CisgIGlvX2NoYW5uZWwgICAgIGlvY2g7CisKKyAgaW9jaCA9IChpb19jaGFubmVsKW1hbGxvYyhzaXplb2Yoc3RydWN0IHN0cnVjdF9pb19jaGFubmVsKSk7CisgIGlmICghaW9jaCkKKwkgIHJldHVybiBOVUxMOworICBtZW1zZXQoaW9jaCwgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCkpOworICBpb2NoLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTDsKKyAgaW9jaC0+bWFuYWdlciA9IGRvc19pb19tYW5hZ2VyOworICBpb2NoLT5uYW1lID0gKGNoYXIgKiltYWxsb2Moc3RybGVuKHBhcnQtPmRldikrMSk7CisgIGlmICghaW9jaC0+bmFtZSkgeworCSAgZnJlZShpb2NoKTsKKwkgIHJldHVybiBOVUxMOworICB9CisgIHN0cmNweShpb2NoLT5uYW1lLCBwYXJ0LT5kZXYpOworICBpb2NoLT5wcml2YXRlX2RhdGEgPSBwYXJ0OworICBpb2NoLT5ibG9ja19zaXplID0gMTAyNDsgLyogVGhlIHNtYWxsZXN0IGV4dDJmcyBibG9jayBzaXplICovCisgIGlvY2gtPnJlYWRfZXJyb3IgPSAwOworICBpb2NoLT53cml0ZV9lcnJvciA9IDA7CisKKyAgcmV0dXJuIGlvY2g7Cit9CisKKyNpZmRlZiBfX1RVUkJPQ19fCisjcHJhZ21hIGFyZ3N1c2VkCisjZW5kaWYKKy8qCisgKiBPcGVuIHRoZSAnbmFtZScgcGFydGl0aW9uLCBpbml0aWFsaXplIGFsbCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmVzCisgKiB3ZSBuZWVkIHRvIGtlZXAgYW5kIGNyZWF0ZSBsaWJleHQyZnMgSS9PIG1hbmFnZXIuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZG9zX29wZW4oY29uc3QgY2hhciAqZGV2LCBpbnQgZmxhZ3MsIGlvX2NoYW5uZWwgKmNoYW5uZWwpCit7CisgIHVuc2lnbmVkIGNoYXIgICp0bXAsIHNlY1s1MTJdOworICBQQVJUSVRJT04gICAgICAqcGFydDsKKyAgUFRBQkxFX0VOVFJZICAgKnBlbnQ7CisgIFBBUlRJVElPTiAgICAgICAgKipuZXdwYXJ0czsKKworICBpZighZGV2KQorICB7CisgICAgX2Rpb19lcnJvciA9IEVSUl9CQURERVY7CisgICAgcmV0dXJuIEVYVDJfRVRfQkFEX0RFVklDRV9OQU1FOworICB9CisKKyAgLyoKKyAgICogRmlyc3QgY2hlY2sgd2hldGhlciB0aGUgZGV2IG5hbWUgaXMgT0sKKyAgICovCisgIHRtcCA9ICh1bnNpZ25lZCBjaGFyKilzdHJyY2hyKGRldiwgJy8nKTsKKyAgaWYoIXRtcCkKKyAgeworICAgIF9kaW9fZXJyb3IgPSBFUlJfQkFEREVWOworICAgIHJldHVybiBFWFQyX0VUX0JBRF9ERVZJQ0VfTkFNRTsKKyAgfQorICAqdG1wID0gMDsKKyAgaWYoc3RyY21wKGRldiwgIi9kZXYiKSkKKyAgeworICAgIF9kaW9fZXJyb3IgPSBFUlJfQkFEREVWOworICAgIHJldHVybiBFWFQyX0VUX0JBRF9ERVZJQ0VfTkFNRTsKKyAgfQorICAqdG1wKysgPSAnLyc7CisKKyAgLyoKKyAgICogQ2hlY2sgd2hldGhlciB0aGUgcGFydGl0aW9uIGRhdGEgaXMgYWxyZWFkeSBpbiBjYWNoZQorICAgKi8KKworICBwYXJ0ID0gKFBBUlRJVElPTiopbWFsbG9jKHNpemVvZihQQVJUSVRJT04pKTsKKyAgaWYgKCFwYXJ0KQorCSAgcmV0dXJuIEVOT01FTTsKKyAgeworICAgIGludCAgIGkgPSAwOworCisgICAgZm9yKDtpIDwgbnBhcnQ7IGkrKykKKyAgICAgIGlmKCFzdHJjbXAocGFydGl0aW9uc1tpXS0+ZGV2LCBkZXYpKQorICAgICAgeworICAgICAgICAvKiBGb3VuZCBpdCEgTWFrZSBpdCB0aGUgYWN0aXZlIG9uZSAqLworICAgICAgICBhY3RpdmUgPSBwYXJ0aXRpb25zW2ldOworICAgICAgICAqY2hhbm5lbCA9IGFsbG9jX2lvX2NoYW5uZWwoYWN0aXZlKTsKKwlpZiAoISpjaGFubmVsKQorCQlyZXR1cm4gRU5PTUVNOworICAgICAgICByZXR1cm4gMDsKKyAgICAgIH0KKyAgfQorCisgIC8qCisgICAqIERyaXZlIG51bWJlciAmIG9wdGlvbmFsbHkgcGFydG4gbnVtYmVyCisgICAqLworICBzd2l0Y2godG1wWzBdKQorICB7CisgICAgY2FzZSAnaCc6CisgICAgY2FzZSAncyc6CisgICAgICBwYXJ0LT5waHlzID0gMHg4MDsKKyAgICAgIHBhcnQtPnBoeXMgKz0gdG91cHBlcih0bXBbMl0pIC0gJ0EnOworICAgICAgLyoKKyAgICAgICAqIERvIHdlIGhhdmUgdGhlIHBhcnRpdGlvbiBudW1iZXI/CisgICAgICAgKi8KKyAgICAgIGlmKHRtcFszXSkKKyAgICAgICAgcGFydC0+cG5vID0gaXNkaWdpdCgoaW50KXRtcFszXSkgPyB0bXBbM10gLSAnMCcgLSAxOiAwOworICAgICAgZWxzZQorICAgICAgICBwYXJ0LT5wbm8gPSAweEZGOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdmJzoKKyAgICAgIGlmKHRtcFsyXSkKKyAgICAgICAgcGFydC0+cGh5cyA9IGlzZGlnaXQoKGludCl0bXBbMl0pID8gdG1wWzJdIC0gJzAnIDogMDsKKyAgICAgIGVsc2UKKyAgICAgICAgcGFydC0+cGh5cyA9IDB4MDA7IC8qIFdlJ2xsIGFzc3VtZSAvZGV2L2ZkMCAqLworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgX2Rpb19lcnJvciA9IEVSUl9CQURERVY7CisgICAgICByZXR1cm4gRU5PREVWOworICB9CisKKyAgaWYocGFydC0+cGh5cyA8IDB4ODApCisgIHsKKyAgICAgLyogV2UgZG9uJ3Qgc3VwcG9ydCBmbG9wcGllcyBmb3Igbm93ICovCisgICAgIF9kaW9fZXJyb3IgPSBFUlJfTk9UU1VQUDsKKyAgICAgcmV0dXJuIEVJTlZBTDsKKyAgfQorCisgIHBhcnQtPmRldiA9IHN0cmR1cChkZXYpOworCisgIC8qCisgICAqIEdldCBkcml2ZSdzIGdlb21ldHJ5CisgICAqLworICBfZGlvX2h3X2Vycm9yID0gYmlvc2Rpc2soRElTS19HRVRfR0VPTUVUUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LT5waHlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogaGVhZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogY3lsaW5kZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIC8qIHNlY3RvciAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgLyoganVzdCBvbmUgc2VjdG9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWMpOworCisgIGlmKCFIV19PSygpKQorICB7CisgICAgX2Rpb19lcnJvciA9IEVSUl9IQVJEV0FSRTsKKyAgICBmcmVlKHBhcnQtPmRldik7CisgICAgZnJlZShwYXJ0KTsKKyAgICByZXR1cm4gRUZBVUxUOworICB9CisKKyAgLyoKKyAgICogQ2FsY3VsYXRlIHRoZSBnZW9tZXRyeQorICAgKi8KKyAgcGFydC0+Y3lscyAgPSAodW5zaWduZWQgc2hvcnQpKCgoc2VjWzBdID4+IDYpIDw8IDgpICsgc2VjWzFdICsgMSk7CisgIHBhcnQtPmhlYWRzID0gc2VjWzNdICsgMTsKKyAgcGFydC0+c2VjdHMgPSBzZWNbMF0gJiAweDNGOworCisgIC8qCisgICAqIE5vdyB0aGF0IHdlIGtub3cgYWxsIHdlIG5lZWQsIGxldCdzIGxvb2sgZm9yIHRoZSBwYXJ0aXRpb24KKyAgICovCisgIF9kaW9faHdfZXJyb3IgPSBiaW9zZGlzayhESVNLX1JFQUQsIHBhcnQtPnBoeXMsIDAsIDAsIDEsIDEsIHNlYyk7CisKKyAgaWYoIUhXX09LKCkpCisgIHsKKyAgICBfZGlvX2Vycm9yID0gRVJSX0hBUkRXQVJFOworICAgIGZyZWUocGFydC0+ZGV2KTsKKyAgICBmcmVlKHBhcnQpOworICAgIHJldHVybiBFRkFVTFQ7CisgIH0KKworICBwZW50ID0gKFBUQUJMRV9FTlRSWSopJnNlY1sweDFCRV07CisgIHBlbnQgPSBzY2FuX3BhcnRpdGlvbl90YWJsZShwZW50LCBwYXJ0LT5waHlzLCAmcGFydC0+cG5vKTsKKworICBpZighcGVudCkKKyAgeworICAgIF9kaW9fZXJyb3IgPSBwYXJ0LT5wbm8gPT0gMHhGRSA/IEVSUl9FTVBUWVBBUlQgOgorICAgICAgICAgICAgICAgICBwYXJ0LT5wbm8gPT0gMHhGRCA/IEVSUl9MSU5VWFNXQVAgOiBFUlJfTk9URVhUMkZTOworICAgIGZyZWUocGFydC0+ZGV2KTsKKyAgICBmcmVlKHBhcnQpOworICAgIHJldHVybiBFTk9ERVY7CisgIH0KKworICAvKgorICAgKiBDYWxjdWxhdGUgdGhlIHJlbWFpbmluZyBmaWd1cmVzCisgICAqLworICB7CisgICAgdW5zaWduZWQgbG9uZyAgICBmc2VjLCBmaGVhZCwgZmN5bDsKKworICAgIGZzZWMgPSAodW5zaWduZWQgbG9uZykocGVudC0+c3RhcnRfc2VjICYgMHgzRik7CisgICAgZmhlYWQgPSAodW5zaWduZWQgbG9uZylwZW50LT5zdGFydF9oZWFkOworICAgIGZjeWwgPSAoKHBlbnQtPnN0YXJ0X3NlYyA+PiA2KSA8PCA4KSArIHBlbnQtPnN0YXJ0X2N5bDsKKyAgICBwYXJ0LT5zdGFydCA9IGZzZWMgKyBmaGVhZCAqIHBhcnQtPnNlY3RzICsgZmN5bCAqCisgICAgICAgICAgICAgICAgICAocGFydC0+aGVhZHMgKiBwYXJ0LT5zZWN0cykgLSAxOworICAgIHBhcnQtPmxlbiA9IHBlbnQtPnNpemU7CisgIH0KKworICAvKgorICAgKiBBZGQgdGhlIHBhcnRpdGlvbiB0byB0aGUgdGFibGUKKyAgICovCisgIG5ld3BhcnRzID0gKFBBUlRJVElPTioqKXJlYWxsb2MocGFydGl0aW9ucywgc2l6ZW9mKFBBUlRJVElPTikgKiBucGFydCk7CisgIGlmICghbmV3cGFydHMpIHsKKwkgIGZyZWUocGFydCk7CisJICByZXR1cm4gRU5PTUVNOworICB9CisgIHBhcnRpdGlvbnMgPSBuZXdwYXJ0czsKKyAgcGFydGl0aW9uc1tucGFydCsrXSA9IGFjdGl2ZSA9IHBhcnQ7CisKKyAgLyoKKyAgICogTm93IGFsbG9jIGFsbCBsaWJlMmZzIHN0cnVjdHVyZXMKKyAgICovCisgICpjaGFubmVsID0gYWxsb2NfaW9fY2hhbm5lbChhY3RpdmUpOworICBpZiAoISpjaGFubmVsKQorCSAgcmV0dXJuIEVOT01FTTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBkb3NfY2xvc2UoaW9fY2hhbm5lbCBjaGFubmVsKQoreworCWZyZWUoY2hhbm5lbC0+bmFtZSk7CisJZnJlZShjaGFubmVsKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGRvc19zZXRfYmxrc2l6ZShpb19jaGFubmVsIGNoYW5uZWwsIGludCBibGtzaXplKQoreworICBjaGFubmVsLT5ibG9ja19zaXplID0gYmxrc2l6ZTsKKworICByZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBkb3NfcmVhZF9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCB2b2lkICpidWYpCit7CisgIFBBUlRJVElPTiAgICAgKnBhcnQ7CisgIHNpemVfdCAgICAgICAgc2l6ZTsKKyAgZXh0Ml9sb2ZmX3QgICBsb2M7CisgIENIUyAgICAgICAgICAgY2hzOworCisgIEVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKyAgcGFydCA9IChQQVJUSVRJT04qKWNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKworICBzaXplID0gKHNpemVfdCkoKGNvdW50IDwgMCkgPyAtY291bnQgOiBjb3VudCAqIGNoYW5uZWwtPmJsb2NrX3NpemUpOworICBsb2MgPSAoZXh0Ml9sb2ZmX3QpIGJsb2NrICogY2hhbm5lbC0+YmxvY2tfc2l6ZTsKKworICBsYmEyY2hzKGxvYywgJmNocywgcGFydCk7CisgIC8qCisgICAqIFBvdGVudGlhbCBidWcgaGVyZToKKyAgICogICBJZiBESkdQUCBpcyB1c2VkIHRoZW4gcmVhZHMgb2YgPjE4IHNlY3RvcnMgd2lsbCBmYWlsIQorICAgKiAgIEhhdmUgdG8gcmV3cml0ZSBiaW9zZGlzay4KKyAgICovCisgIF9kaW9faHdfZXJyb3IgPSBiaW9zZGlzayhESVNLX1JFQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0LT5waHlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzLmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHMuY3lsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzLnNlY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPCA1MTIgPyAxIDogc2l6ZS81MTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYpOworCisgIGlmKCFIV19PSygpKQorICB7CisgICAgX2Rpb19lcnJvciA9IEVSUl9IQVJEV0FSRTsKKyAgICByZXR1cm4gRUZBVUxUOworICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZG9zX3dyaXRlX2Jsayhpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50LCBjb25zdCB2b2lkICpidWYpCit7CisgIFBBUlRJVElPTiAgICAgKnBhcnQ7CisgIHNpemVfdCAgICAgICAgc2l6ZTsKKyAgZXh0Ml9sb2ZmX3QgICBsb2M7CisgIENIUyAgICAgICAgICAgY2hzOworCisgIEVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKyAgcGFydCA9IChQQVJUSVRJT04qKWNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKworICBpZihjb3VudCA9PSAxKQorICAgIHNpemUgPSAoc2l6ZV90KWNoYW5uZWwtPmJsb2NrX3NpemU7CisgIGVsc2UKKyAgeworICAgIGlmIChjb3VudCA8IDApCisgICAgICBzaXplID0gKHNpemVfdCktY291bnQ7CisgICAgZWxzZQorICAgICAgc2l6ZSA9IChzaXplX3QpKGNvdW50ICogY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisgIH0KKworICBsb2MgPSAoZXh0Ml9sb2ZmX3QpYmxvY2sgKiBjaGFubmVsLT5ibG9ja19zaXplOworICBsYmEyY2hzKGxvYywgJmNocywgcGFydCk7CisgIF9kaW9faHdfZXJyb3IgPSBiaW9zZGlzayhESVNLX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydC0+cGh5cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocy5oZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hzLmN5bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNocy5zZWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplIDwgNTEyID8gMSA6IHNpemUvNTEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKWJ1Zik7CisKKyAgaWYoIUhXX09LKCkpCisgIHsKKyAgICBfZGlvX2Vycm9yID0gRVJSX0hBUkRXQVJFOworICAgIHJldHVybiBFRkFVTFQ7CisgIH0KKworICByZXR1cm4gMDsKK30KKworI2lmZGVmIF9fVFVSQk9DX18KKyNwcmFnbWEgYXJnc3VzZWQKKyNlbmRpZgorc3RhdGljIGVycmNvZGVfdCBkb3NfZmx1c2goaW9fY2hhbm5lbCBjaGFubmVsKQoreworICAvKgorICAgKiBObyBidWZmZXJzLCBubyBmbHVzaC4uLgorICAgKi8KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kb3Npby5oIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZG9zaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmE4ZjAzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZG9zaW8uaApAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIHYxLjAKKyAqCisgKiBEaXNrIEkvTyBpbmNsdWRlIGZpbGUgZm9yIHRoZSBleHQyZnMvRE9TIGxpYnJhcnkuCisgKgorICogQ29weXJpZ2h0IChjKSAxOTk3IE1hcmsgSGFiZXJzYWNrCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9fZGlza2lvX2gKKyNkZWZpbmUgX19kaXNraW9faAorI2lmZGVmIF9fVFVSQk9DX18KKyNpZm5kZWYgX19MQVJHRV9fCisjIGVycm9yICJleHQyZnMvRE9TIGxpYnJhcnkgcmVxdWlyZXMgTEFSR0UgbW9kZWwhIgorI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIF9fVFVSQk9DX18KKyNpbmNsdWRlICJtc2Rvcy5oIgorI2VuZGlmCisKKy8qCisgKiBBIGhlbHBlciBzdHJ1Y3R1cmUgdXNlZCBpbiBMQkEgPT4gQ0hTIGNvbnZlcnNpb24KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgc2hvcnQgICAgICAgY3lsOyAgICAgLyogQ3lsaW5kZXIgKG9yIHRyYWNrKSAqLworICB1bnNpZ25lZCBzaG9ydCAgICAgICBoZWFkOworICB1bnNpZ25lZCBzaG9ydCAgICAgICBzZWN0b3I7CisgIHVuc2lnbmVkIHNob3J0ICAgICAgIG9mZnNldDsgIC8qIE9mZnNldCBvZiBieXRlIHdpdGhpbiB0aGUgc2VjdG9yICovCit9IENIUzsKKworLyoKKyAqIEFsbCBwYXJ0aXRpb24gZGF0YSB3ZSBuZWVkIGlzIGhlcmUKKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgY2hhciAgICAgICAgICAgICAgICAgKmRldjsgIC8qIF9MaW51eF8gZGV2aWNlIG5hbWUgKGxpa2UgIi9kZXYvaGRhMSIpICovCisgIHVuc2lnbmVkIGNoYXIgICAgICAgIHBoeXM7ICAvKiBQaHlzaWNhbCBET1MgZHJpdmUgbnVtYmVyICovCisgIHVuc2lnbmVkIGxvbmcgICAgICAgIHN0YXJ0OyAvKiBMQkEgYWRkcmVzcyBvZiBwYXJ0aXRpb24gc3RhcnQgKi8KKyAgdW5zaWduZWQgbG9uZyAgICAgICAgbGVuOyAgIC8qIGxlbmd0aCBvZiBwYXJ0aXRpb24gaW4gc2VjdG9ycyAqLworICB1bnNpZ25lZCBjaGFyICAgICAgICBwbm87ICAgLyogUGFydGl0aW9uIG51bWJlciAocmVhZCBmcm9tICpkZXYpICovCisKKyAgLyogVGhpcyBwYXJ0aXRpb24ncyBkcml2ZSBnZW9tZXRyeSAqLworICB1bnNpZ25lZCBzaG9ydCAgICAgICBjeWxzOworICB1bnNpZ25lZCBzaG9ydCAgICAgICBoZWFkczsKKyAgdW5zaWduZWQgc2hvcnQgICAgICAgc2VjdHM7Cit9IFBBUlRJVElPTjsKKworLyoKKyAqIFBDIHBhcnRpdGlvbiB0YWJsZSBlbnRyeSBmb3JtYXQKKyAqLworI2lmZGVmIF9fREpHUFBfXworI3ByYWdtYSBwYWNrKDEpCisjZW5kaWYKK3R5cGVkZWYgc3RydWN0Cit7CisgIHVuc2lnbmVkIGNoYXIgICAgICAgIGFjdGl2ZTsKKyAgdW5zaWduZWQgY2hhciAgICAgICAgc3RhcnRfaGVhZDsKKyAgdW5zaWduZWQgY2hhciAgICAgICAgc3RhcnRfc2VjOworICB1bnNpZ25lZCBjaGFyICAgICAgICBzdGFydF9jeWw7CisgIHVuc2lnbmVkIGNoYXIgICAgICAgIHR5cGU7CisgIHVuc2lnbmVkIGNoYXIgICAgICAgIGVuZF9oZWFkOworICB1bnNpZ25lZCBjaGFyICAgICAgICBlbmRfc2VjOworICB1bnNpZ25lZCBjaGFyICAgICAgICBlbmRfY3lsOworICB1bnNpZ25lZCBsb25nICAgICAgICBmaXJzdF9zZWNfcmVsOworICB1bnNpZ25lZCBsb25nICAgICAgICBzaXplOworfSBQVEFCTEVfRU5UUlk7CisjaWZkZWYgX19ESkdQUF9fCisjcHJhZ21hIHBhY2soKQorI2VuZGlmCisKKy8qCisgKiBJTlQgMHgxMyBvcGVyYXRpb24gY29kZXMKKyAqLworI2RlZmluZSBESVNLX1JFQUQgICAgICAgICAgMHgwMgorI2RlZmluZSBESVNLX1dSSVRFICAgICAgICAgMHgwMworI2RlZmluZSBESVNLX0dFVF9HRU9NRVRSWSAgMHgwOAorI2RlZmluZSBESVNLX1JFQURZICAgICAgICAgMHgxMAorCisvKgorICogRXJyb3JzIHRvIHB1dCBpbiBfZGlvX2Vycm9yCisgKi8KKyNkZWZpbmUgRVJSX0JBRERFViAgICAgICAgIDB4MDAwMDAwMDFMCisjZGVmaW5lIEVSUl9IQVJEV0FSRSAgICAgICAweDAwMDAwMDAyTAorI2RlZmluZSBFUlJfTk9UU1VQUCAgICAgICAgMHgwMDAwMDAwM0wKKyNkZWZpbmUgRVJSX05PVEVYVDJGUyAgICAgIDB4MDAwMDAwMDRMCisjZGVmaW5lIEVSUl9FTVBUWVBBUlQgICAgICAweDAwMDAwMDA1TAorI2RlZmluZSBFUlJfTElOVVhTV0FQICAgICAgMHgwMDAwMDAwNkwKKworLyoKKyAqIEZ1bmN0aW9ucyBpbiBkaXNraW8uYworICovCisKKy8qCisgKiBWYXJpYWJsZSBjb250YWlucyBsYXN0IG1vZHVsZSdzIGVycm9yCisgKi8KK2V4dGVybiB1bnNpZ25lZCBsb25nICAgICAgICBfZGlvX2Vycm9yOworCisvKgorICogVGhpcyBvbmUgY29udGFpbnMgbGFzdCBoYXJkd2FyZSBlcnJvciAoaWYgX2Rpb19lcnJvciA9PSBFUlJfSEFSRFdBUkUpCisgKi8KK2V4dGVybiB1bnNpZ25lZCBsb25nICAgICAgICBfZGlvX2h3X2Vycm9yOworCisvKgorICogTWFjcm9zIHRvIGNoZWNrIGZvciBkaXNrIGhhcmR3YXJlIGVycm9ycworICovCisjZGVmaW5lIEhXX09LKCkgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgwMCkKKyNkZWZpbmUgSFdfQkFEX0NNRCgpICAgICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDAxKQorI2RlZmluZSBIV19OT19BRERSX01BUksoKSAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4MDIpCisjZGVmaW5lIEhXX1dSSVRFX1BST1QoKSAgICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgwMykKKyNkZWZpbmUgSFdfTk9fU0VDVE9SKCkgICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDA0KQorI2RlZmluZSBIV19SRVNFVF9GQUlMKCkgICAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4MDUpCisjZGVmaW5lIEhXX0RJU0tfQ0hBTkdFRCgpICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgwNikKKyNkZWZpbmUgSFdfRFJJVkVfRkFJTCgpICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDA3KQorI2RlZmluZSBIV19ETUFfT1ZFUlJVTigpICAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4MDgpCisjZGVmaW5lIEhXX0RNQV9CT1VOREFSWSgpICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgwOSkKKyNkZWZpbmUgSFdfQkFEX1NFQ1RPUigpICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDBBKQorI2RlZmluZSBIV19CQURfVFJBQ0soKSAgICAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4MEIpCisjZGVmaW5lIEhXX1VOU1VQUF9UUkFDSygpICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgwQykKKyNkZWZpbmUgSFdfQkFEX0NSQ19FQ0MoKSAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDEwKQorI2RlZmluZSBIV19DUkNfRUNDX0NPUlIoKSAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4MTEpCisjZGVmaW5lIEhXX0NPTlRSX0ZBSUwoKSAgICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHgyMCkKKyNkZWZpbmUgSFdfU0VFS19GQUlMKCkgICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweDQwKQorI2RlZmluZSBIV19BVFRBQ0hfRkFJTCgpICAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4ODApCisjZGVmaW5lIEhXX0RSSVZFX05SRUFEWSgpICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHhBQSkKKyNkZWZpbmUgSFdfVU5ERUZfRVJST1IoKSAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweEJCKQorI2RlZmluZSBIV19XUklURV9GQVVMVCgpICAgICgodW5zaWduZWQgY2hhcilfZGlvX2h3X2Vycm9yID09IDB4Q0MpCisjZGVmaW5lIEhXX1NUQVRVU19FUlJPUigpICAgKCh1bnNpZ25lZCBjaGFyKV9kaW9faHdfZXJyb3IgPT0gMHhFMCkKKyNkZWZpbmUgSFdfU0VOU0VfRkFJTCgpICAgICAoKHVuc2lnbmVkIGNoYXIpX2Rpb19od19lcnJvciA9PSAweEZGKQorCisKKy8qCisgKiBPcGVuIHRoZSBzcGVjaWZpZWQgcGFydGl0aW9uLgorICogU3RyaW5nICdkZXYnIG11c3QgaGF2ZSBhIGZvcm1hdDoKKyAqCisgKiAgL2Rldi97c2R8aGR8ZmR9W1hdCisgKgorICogd2hlcmUsCisgKgorICogIG9ubHkgb25lIG9mIHRoZSBvcHRpb24gaW4gY3VybHkgYnJhY2VzIGNhbiBiZSB1c2VkIGFuZCBYIGlzIGFuIG9wdGlvbmFsCisgKiAgcGFydGl0aW9uIG51bWJlciBmb3IgdGhlIGdpdmVuIGRldmljZS4gSWYgWCBpcyBub3Qgc3BlY2lmaWVkLCBmdW5jdGlvbgorICogIHNjYW5zIHRoZSBkcml2ZSdzIHBhcnRpdGlvbiB0YWJsZSBpbiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBMaW51eCBleHQyZnMKKyAqICBwYXJ0aXRpb24gKHNpZ25hdHVyZSAweDgzKS4gQWxvbmcgdGhlIHdheSBpdCBkaXZlcyBpbnRvIGV2ZXJ5IGV4dGVuZGVkCisgKiAgcGFydGl0aW9uIGVuY291bnRlcmVkLgorICogIFNjYW4gZW5kcyBpZiBlaXRoZXIgKGEpIHRoZXJlIGFyZSBubyBtb3JlIHVzZWQgcGFydGl0aW9uIGVudHJpZXMsIG9yCisgKiAgKGIpIHRoZXJlIGlzIG5vIFh0aCBwYXJ0aXRpb24uCisgKgorICogUm91dGluZSByZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgIT0wIG90aGVyd2lzZS4KKyAqLworaW50IG9wZW5fcGFydGl0aW9uKGNoYXIgKmRldik7CisKKyNlbmRpZiAvKiBfX2Rpc2tpb19oICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9kdXBmcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZHVwZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjcyMWUxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZHVwZnMuYwpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIGR1cGZzLmMgLS0tIGR1cGxpY2F0ZSBhIGV4dDIgZmlsZXN5c3RlbSBoYW5kbGUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTgsIDIwMDEsIDIwMDMsIDIwMDUgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK2VycmNvZGVfdCBleHQyZnNfZHVwX2hhbmRsZShleHQyX2ZpbHN5cyBzcmMsIGV4dDJfZmlsc3lzICpkZXN0KQoreworCWV4dDJfZmlsc3lzCWZzOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKHNyYywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3Qgc3RydWN0X2V4dDJfZmlsc3lzKSwgJmZzKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJKmZzID0gKnNyYzsKKwlmcy0+ZGV2aWNlX25hbWUgPSAwOworCWZzLT5zdXBlciA9IDA7CisJZnMtPm9yaWdfc3VwZXIgPSAwOworCWZzLT5ncm91cF9kZXNjID0gMDsKKwlmcy0+aW5vZGVfbWFwID0gMDsKKwlmcy0+YmxvY2tfbWFwID0gMDsKKwlmcy0+YmFkYmxvY2tzID0gMDsKKwlmcy0+ZGJsaXN0ID0gMDsKKwlmcy0+bW1wX2J1ZiA9IDA7CisJZnMtPm1tcF9jbXAgPSAwOworCWZzLT5tbXBfZmQgPSAtMTsKKworCWlvX2NoYW5uZWxfYnVtcGNvdW50KGZzLT5pbyk7CisJaWYgKGZzLT5pY2FjaGUpCisJCWZzLT5pY2FjaGUtPnJlZmNvdW50Kys7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oc3JjLT5kZXZpY2VfbmFtZSkrMSwgJmZzLT5kZXZpY2VfbmFtZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJc3RyY3B5KGZzLT5kZXZpY2VfbmFtZSwgc3JjLT5kZXZpY2VfbmFtZSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShTVVBFUkJMT0NLX1NJWkUsICZmcy0+c3VwZXIpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbWNweShmcy0+c3VwZXIsIHNyYy0+c3VwZXIsIFNVUEVSQkxPQ0tfU0laRSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShTVVBFUkJMT0NLX1NJWkUsICZmcy0+b3JpZ19zdXBlcik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtY3B5KGZzLT5vcmlnX3N1cGVyLCBzcmMtPm9yaWdfc3VwZXIsIFNVUEVSQkxPQ0tfU0laRSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGZzLT5kZXNjX2Jsb2NrcywgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkmZnMtPmdyb3VwX2Rlc2MpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbWNweShmcy0+Z3JvdXBfZGVzYywgc3JjLT5ncm91cF9kZXNjLAorCSAgICAgICAoc2l6ZV90KSBmcy0+ZGVzY19ibG9ja3MgKiBmcy0+YmxvY2tzaXplKTsKKworCWlmIChzcmMtPmlub2RlX21hcCkgeworCQlyZXR2YWwgPSBleHQyZnNfY29weV9iaXRtYXAoc3JjLT5pbm9kZV9tYXAsICZmcy0+aW5vZGVfbWFwKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKwlpZiAoc3JjLT5ibG9ja19tYXApIHsKKwkJcmV0dmFsID0gZXh0MmZzX2NvcHlfYml0bWFwKHNyYy0+YmxvY2tfbWFwLCAmZnMtPmJsb2NrX21hcCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKHNyYy0+YmFkYmxvY2tzKSB7CisJCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfY29weShzcmMtPmJhZGJsb2NrcywgJmZzLT5iYWRibG9ja3MpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCWlmIChzcmMtPmRibGlzdCkgeworCQlyZXR2YWwgPSBleHQyZnNfY29weV9kYmxpc3Qoc3JjLT5kYmxpc3QsICZmcy0+ZGJsaXN0KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKwlpZiAoc3JjLT5tbXBfYnVmKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNyYy0+YmxvY2tzaXplLCAmZnMtPm1tcF9idWYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJCW1lbWNweShmcy0+bW1wX2J1Ziwgc3JjLT5tbXBfYnVmLCBzcmMtPmJsb2Nrc2l6ZSk7CisJfQorCWlmIChzcmMtPm1tcF9mZCA+PSAwKSB7CisJCWZzLT5tbXBfZmQgPSBkdXAoc3JjLT5tbXBfZmQpOworCQlpZiAoZnMtPm1tcF9mZCA8IDApIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTU1QX09QRU5fRElSRUNUOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwl9CisJaWYgKHNyYy0+bW1wX2NtcCkgeworCQlpbnQgYWxpZ24gPSBleHQyZnNfZ2V0X2Rpb19hbGlnbm1lbnQoc3JjLT5tbXBfZmQpOworCisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtYWxpZ24oc3JjLT5ibG9ja3NpemUsIGFsaWduLAorCQkJCQkgICAgICZmcy0+bW1wX2NtcCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwkJbWVtY3B5KGZzLT5tbXBfY21wLCBzcmMtPm1tcF9jbXAsIHNyYy0+YmxvY2tzaXplKTsKKwl9CisJKmRlc3QgPSBmczsKKwlyZXR1cm4gMDsKK2Vycm91dDoKKwlleHQyZnNfZnJlZShmcyk7CisJcmV0dXJuIHJldHZhbDsKKworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9lMmltYWdlLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9lMmltYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNiMjBjYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2UyaW1hZ2UuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogZTJpbWFnZS5oIC0tLSBoZWFkZXIgZmlsZSBkZXNjcmliaW5nIHRoZSBleHQyIGltYWdlIGZvcm1hdAorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBUaGVvZG9yZSBUcydvLgorICoKKyAqIE5vdGU6IHRoaXMgdXNlcyB0aGUgUE9TSVggSU8gaW50ZXJmYWNlcywgdW5saWtlIG1vc3Qgb2YgdGhlIG90aGVyCisgKiBmdW5jdGlvbnMgaW4gdGhpcyBsaWJyYXJ5LiAgU28gc3VlIG1lLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworc3RydWN0IGV4dDJfaW1hZ2VfaGRyIHsKKwlfX3UzMgltYWdpY19udW1iZXI7CS8qIFRoaXMgbXVzdCBiZSBFWFQyX0VUX01BR0lDX0UySU1BR0UgKi8KKwljaGFyCW1hZ2ljX2Rlc2NyaXB0b3JbMTZdOyAvKiAiRXh0MiBJbWFnZSAxLjAiLCB3LyBudWxsIHBhZGRpbmcgKi8KKwljaGFyCWZzX2hvc3RuYW1lWzY0XTsvKiBIb3N0bmFtZSBvZiBtYWNoaW5lIG9mIGltYWdlICovCisJY2hhcglmc19uZXRhZGRyWzMyXTsJLyogTmV0d29yayBhZGRyZXNzICovCisJX191MzIJZnNfbmV0YWRkcl90eXBlOy8qIDAgPSBJUFY0LCAxID0gSVBWNiwgZXRjLiAqLworCV9fdTMyCWZzX2RldmljZTsJLyogRGV2aWNlIG51bWJlciBvZiBpbWFnZSAqLworCWNoYXIJZnNfZGV2aWNlX25hbWVbNjRdOyAvKiBEZXZpY2UgbmFtZSAqLworCWNoYXIJZnNfdXVpZFsxNl07CS8qIFVVSUQgb2YgZmlsZXN5c3RlbSAqLworCV9fdTMyCWZzX2Jsb2Nrc2l6ZTsJLyogQmxvY2sgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSAqLworCV9fdTMyCWZzX3Jlc2VydmVkWzhdOworCisJX191MzIJaW1hZ2VfZGV2aWNlOwkvKiBEZXZpY2UgbnVtYmVyIG9mIGltYWdlIGZpbGUgKi8KKwlfX3UzMglpbWFnZV9pbm9kZTsJLyogSW5vZGUgbnVtYmVyIG9mIGltYWdlIGZpbGUgKi8KKwlfX3UzMglpbWFnZV90aW1lOwkvKiBUaW1lIG9mIGltYWdlIGNyZWF0aW9uICovCisJX191MzIJaW1hZ2VfcmVzZXJ2ZWRbOF07CisKKwlfX3UzMglvZmZzZXRfc3VwZXI7CS8qIEJ5dGUgb2Zmc2V0IG9mIHRoZSBzYiBhbmQgZGVzY3JpcHRvcnMgKi8KKwlfX3UzMglvZmZzZXRfaW5vZGU7CS8qIEJ5dGUgb2Zmc2V0IG9mIHRoZSBpbm9kZSB0YWJsZSAgKi8KKwlfX3UzMglvZmZzZXRfaW5vZGVtYXA7IC8qIEJ5dGUgb2Zmc2V0IG9mIHRoZSBpbm9kZSBiaXRtYXBzICovCisJX191MzIJb2Zmc2V0X2Jsb2NrbWFwOyAvKiBCeXRlIG9mZnNldCBvZiB0aGUgaW5vZGUgYml0bWFwcyAqLworCV9fdTMyCW9mZnNldF9yZXNlcnZlZFs4XTsKK307CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHBhbmRkaXIuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4cGFuZGRpci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMDIzMTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHBhbmRkaXIuYwpAQCAtMCwwICsxLDE0MCBAQAorLyoKKyAqIGV4cGFuZC5jIC0tLSBleHBhbmQgYW4gZXh0MmZzIGRpcmVjdG9yeQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSAgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworc3RydWN0IGV4cGFuZF9kaXJfc3RydWN0IHsKKwlpbnQJCWRvbmU7CisJaW50CQluZXdibG9ja3M7CisJYmxrNjRfdAkJZ29hbDsKKwllcnJjb2RlX3QJZXJyOworCWV4dDJfaW5vX3QJZGlyOworfTsKKworc3RhdGljIGludCBleHBhbmRfZGlyX3Byb2MoZXh0Ml9maWxzeXMJZnMsCisJCQkgICBibGs2NF90CSpibG9ja25yLAorCQkJICAgZTJfYmxrY250X3QJYmxvY2tjbnQsCisJCQkgICBibGs2NF90CXJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICBpbnQJCXJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgdm9pZAkJKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgZXhwYW5kX2Rpcl9zdHJ1Y3QgKmVzID0gKHN0cnVjdCBleHBhbmRfZGlyX3N0cnVjdCAqKSBwcml2X2RhdGE7CisJYmxrNjRfdAluZXdfYmxrOworCWNoYXIJCSpibG9jazsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKCpibG9ja25yKSB7CisJCWlmIChibG9ja2NudCA+PSAwKQorCQkJZXMtPmdvYWwgPSAqYmxvY2tucjsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChibG9ja2NudCAmJgorCSAgICAoRVhUMkZTX0IyQyhmcywgZXMtPmdvYWwpID09IEVYVDJGU19CMkMoZnMsIGVzLT5nb2FsKzEpKSkKKwkJbmV3X2JsayA9IGVzLT5nb2FsKzE7CisJZWxzZSB7CisJCWVzLT5nb2FsICY9IH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGVzLT5nb2FsLCAwLCAmbmV3X2Jsayk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWVzLT5lcnIgPSByZXR2YWw7CisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCX0KKwkJZXMtPm5ld2Jsb2NrcysrOworCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBuZXdfYmxrLCArMSk7CisJfQorCWlmIChibG9ja2NudCA+IDApIHsKKwkJcmV0dmFsID0gZXh0MmZzX25ld19kaXJfYmxvY2soZnMsIDAsIDAsICZibG9jayk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWVzLT5lcnIgPSByZXR2YWw7CisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCX0KKwkJZXMtPmRvbmUgPSAxOworCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgbmV3X2JsaywgYmxvY2ssIDAsCisJCQkJCQkgZXMtPmRpcik7CisJCWV4dDJmc19mcmVlX21lbSgmYmxvY2spOworCX0gZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBuZXdfYmxrLCAxLCBOVUxMLCBOVUxMKTsKKwlpZiAoYmxvY2tjbnQgPj0gMCkKKwkJZXMtPmdvYWwgPSBuZXdfYmxrOworCWlmIChyZXR2YWwpIHsKKwkJZXMtPmVyciA9IHJldHZhbDsKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCX0KKwkqYmxvY2tuciA9IG5ld19ibGs7CisKKwlpZiAoZXMtPmRvbmUpCisJCXJldHVybiAoQkxPQ0tfQ0hBTkdFRCB8IEJMT0NLX0FCT1JUKTsKKwllbHNlCisJCXJldHVybiBCTE9DS19DSEFOR0VEOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4cGFuZF9kaXIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJc3RydWN0IGV4cGFuZF9kaXJfc3RydWN0IGVzOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmICghKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykpCisJCXJldHVybiBFWFQyX0VUX1JPX0ZJTFNZUzsKKworCWlmICghZnMtPmJsb2NrX21hcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQkxPQ0tfQklUTUFQOworCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2RpcmVjdG9yeShmcywgZGlyKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGRpciwgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZXMuZG9uZSA9IDA7CisJZXMuZXJyID0gMDsKKwllcy5nb2FsID0gZXh0MmZzX2ZpbmRfaW5vZGVfZ29hbChmcywgZGlyLCAmaW5vZGUsIDApOworCWVzLm5ld2Jsb2NrcyA9IDA7CisJZXMuZGlyID0gZGlyOworCisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGZzLCBkaXIsIEJMT0NLX0ZMQUdfQVBQRU5ELAorCQkJCSAgICAgICAwLCBleHBhbmRfZGlyX3Byb2MsICZlcyk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0lOTElORV9EQVRBX0NBTlRfSVRFUkFURSkKKwkJcmV0dXJuIGV4dDJmc19pbmxpbmVfZGF0YV9leHBhbmQoZnMsIGRpcik7CisKKwlpZiAoZXMuZXJyKQorCQlyZXR1cm4gZXMuZXJyOworCWlmICghZXMuZG9uZSkKKwkJcmV0dXJuIEVYVDJfRVRfRVhQQU5EX0RJUl9FUlI7CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgc2l6ZSBhbmQgYmxvY2sgY291bnQgZmllbGRzIGluIHRoZSBpbm9kZS4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgZGlyLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpbm9kZS5pX3NpemUgKz0gZnMtPmJsb2Nrc2l6ZTsKKwlleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCAmaW5vZGUsIGVzLm5ld2Jsb2Nrcyk7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGRpciwgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyX2Vyci5ldC5pbiBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfZXJyLmV0LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOTY5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyX2Vyci5ldC5pbgpAQCAtMCwwICsxLDU0NSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYgVGhlb2RvcmUgVHMnby4gIAorIworIyAlQmVnaW4tSGVhZGVyJQorIyBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisjIExpY2Vuc2UuCisjICVFbmQtSGVhZGVyJQorIworCWVycm9yX3RhYmxlIGV4dDIKKworZWMJRVhUMl9FVF9CQVNFLAorCSJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisKK2VjCUVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUywKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfQkFEQkxPQ0tTX0xJU1QsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorCitlYwlFWFQyX0VUX01BR0lDX0JBREJMT0NLU19JVEVSQVRFLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19JTk9ERV9TQ0FOLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorCitlYwlFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfVU5JWF9JT19DSEFOTkVMLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfSU9fTUFOQUdFUiwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpb19tYW5hZ2VyIHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVAsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19JTk9ERV9CSVRNQVAsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19HRU5FUklDX0JJVE1BUCwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfVEVTVF9JT19DSEFOTkVMLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfREJMSVNULAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGRpcmVjdG9yeSBibG9jayBsaXN0IHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19JQ09VTlQsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKKworZWMJRVhUMl9FVF9NQUdJQ19QUV9JT19DSEFOTkVMLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfRVhUMl9GSUxFLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfTUFHSUNfRTJJTUFHRSwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKKworZWMJRVhUMl9FVF9NQUdJQ19JTk9ERV9JT19DSEFOTkVMLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorCitlYwlFWFQyX0VUX01BR0lDX0VYVEVOVF9IQU5ETEUsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorCitlYwlFWFQyX0VUX0JBRF9NQUdJQywKKwkiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKKworZWMJRVhUMl9FVF9SRVZfVE9PX0hJR0gsCisJIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCisKK2VjCUVYVDJfRVRfUk9fRklMU1lTLAorCSJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKKworZWMJRVhUMl9FVF9HREVTQ19SRUFELAorCSJDYW4ndCByZWFkIGdyb3VwIGRlc2NyaXB0b3JzIgorCitlYwlFWFQyX0VUX0dERVNDX1dSSVRFLAorCSJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKKworZWMJRVhUMl9FVF9HREVTQ19CQURfQkxPQ0tfTUFQLAorCSJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwIgorCitlYwlFWFQyX0VUX0dERVNDX0JBRF9JTk9ERV9NQVAsCisJIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAiCisKK2VjCUVYVDJfRVRfR0RFU0NfQkFEX0lOT0RFX1RBQkxFLAorCSJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCisKK2VjCUVYVDJfRVRfSU5PREVfQklUTUFQX1dSSVRFLAorCSJDYW4ndCB3cml0ZSBhbiBpbm9kZSBiaXRtYXAiCisKK2VjCUVYVDJfRVRfSU5PREVfQklUTUFQX1JFQUQsCisJIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorCitlYwlFWFQyX0VUX0JMT0NLX0JJVE1BUF9XUklURSwKKwkiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCisKK2VjCUVYVDJfRVRfQkxPQ0tfQklUTUFQX1JFQUQsCisJIkNhbid0IHJlYWQgYSBibG9jayBiaXRtYXAiCisKK2VjCUVYVDJfRVRfSU5PREVfVEFCTEVfV1JJVEUsCisJIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorCitlYwlFWFQyX0VUX0lOT0RFX1RBQkxFX1JFQUQsCisJIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCisKK2VjCUVYVDJfRVRfTkVYVF9JTk9ERV9SRUFELAorCSJDYW4ndCByZWFkIG5leHQgaW5vZGUiCisKK2VjCUVYVDJfRVRfVU5FWFBFQ1RFRF9CTE9DS19TSVpFLAorCSJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCisKK2VjCUVYVDJfRVRfRElSX0NPUlJVUFRFRCwKKwkiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorCitlYwlFWFQyX0VUX1NIT1JUX1JFQUQsCisJIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKKworZWMJRVhUMl9FVF9TSE9SVF9XUklURSwKKwkiQXR0ZW1wdCB0byB3cml0ZSBibG9jayB0byBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHdyaXRlIgorCitlYwlFWFQyX0VUX0RJUl9OT19TUEFDRSwKKwkiTm8gZnJlZSBzcGFjZSBpbiB0aGUgZGlyZWN0b3J5IgorCitlYwlFWFQyX0VUX05PX0lOT0RFX0JJVE1BUCwKKwkiSW5vZGUgYml0bWFwIG5vdCBsb2FkZWQiCisKK2VjCUVYVDJfRVRfTk9fQkxPQ0tfQklUTUFQLAorCSJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKKworZWMJRVhUMl9FVF9CQURfSU5PREVfTlVNLAorCSJJbGxlZ2FsIGlub2RlIG51bWJlciIKKworZWMJRVhUMl9FVF9CQURfQkxPQ0tfTlVNLAorCSJJbGxlZ2FsIGJsb2NrIG51bWJlciIKKworZWMJRVhUMl9FVF9FWFBBTkRfRElSX0VSUiwKKwkiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCisKK2VjCUVYVDJfRVRfVE9PU01BTEwsCisJIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKKworZWMJRVhUMl9FVF9CQURfQkxPQ0tfTUFSSywKKwkiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKKworZWMJRVhUMl9FVF9CQURfQkxPQ0tfVU5NQVJLLAorCSJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAiCisKK2VjCUVYVDJfRVRfQkFEX0JMT0NLX1RFU1QsCisJIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCisKK2VjCUVYVDJfRVRfQkFEX0lOT0RFX01BUkssCisJIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCisKK2VjCUVYVDJfRVRfQkFEX0lOT0RFX1VOTUFSSywKKwkiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorCitlYwlFWFQyX0VUX0JBRF9JTk9ERV9URVNULAorCSJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIgorCitlYwlFWFQyX0VUX0ZVREdFX0JMT0NLX0JJVE1BUF9FTkQsCisJIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGJsb2NrIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKKworZWMJRVhUMl9FVF9GVURHRV9JTk9ERV9CSVRNQVBfRU5ELAorCSJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBpbm9kZSBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCisKK2VjCUVYVDJfRVRfQkFEX0lORF9CTE9DSywKKwkiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIgCisKK2VjCUVYVDJfRVRfQkFEX0RJTkRfQkxPQ0ssCisJIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIiAKKworZWMJRVhUMl9FVF9CQURfVElORF9CTE9DSywKKwkiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiIAorCitlYwlFWFQyX0VUX05FUV9CTE9DS19CSVRNQVAsCisJIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKKworZWMJRVhUMl9FVF9ORVFfSU5PREVfQklUTUFQLAorCSJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCisKK2VjCUVYVDJfRVRfQkFEX0RFVklDRV9OQU1FLAorCSJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKKworZWMJRVhUMl9FVF9NSVNTSU5HX0lOT0RFX1RBQkxFLAorCSJBIGJsb2NrIGdyb3VwIGlzIG1pc3NpbmcgYW4gaW5vZGUgdGFibGUiCisKK2VjCUVYVDJfRVRfQ09SUlVQVF9TVVBFUkJMT0NLLAorCSJUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCisKK2VjCUVYVDJfRVRfQkFEX0dFTkVSSUNfTUFSSywKKwkiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorCitlYwlFWFQyX0VUX0JBRF9HRU5FUklDX1VOTUFSSywKKwkiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCisKK2VjCUVYVDJfRVRfQkFEX0dFTkVSSUNfVEVTVCwKKwkiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorCitlYwlFWFQyX0VUX1NZTUxJTktfTE9PUCwKKwkiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorCitlYwlFWFQyX0VUX0NBTExCQUNLX05PVEhBTkRMRUQsCisJIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorCitlYwlFWFQyX0VUX0JBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSwKKwkiVGhlIGlub2RlIGlzIGZyb20gYSBiYWQgYmxvY2sgaW4gdGhlIGlub2RlIHRhYmxlIgorCitlYwlFWFQyX0VUX1VOU1VQUF9GRUFUVVJFLAorCSJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorCitlYwlFWFQyX0VUX1JPX1VOU1VQUF9GRUFUVVJFLAorCSJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKKworZWMJRVhUMl9FVF9MTFNFRUtfRkFJTEVELAorCSJJTyBDaGFubmVsIGZhaWxlZCB0byBzZWVrIG9uIHJlYWQgb3Igd3JpdGUiCisKK2VjCUVYVDJfRVRfTk9fTUVNT1JZLAorCSJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCisKK2VjCUVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVCwKKwkiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorCitlYwlFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUwsCisJIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCisKK2VjCUVYVDJfRVRfSU5PREVfQUxMT0NfRkFJTCwKKwkiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKKworZWMJRVhUMl9FVF9OT19ESVJFQ1RPUlksCisJIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorCitlYwlFWFQyX0VUX1RPT19NQU5ZX1JFRlMsCisJIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCisKK2VjCUVYVDJfRVRfRklMRV9OT1RfRk9VTkQsCisJIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorCitlYwlFWFQyX0VUX0ZJTEVfUk8sCisJIkZpbGUgb3BlbiByZWFkLW9ubHkiCisKK2VjCUVYVDJfRVRfREJfTk9UX0ZPVU5ELAorCSJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCisKK2VjCUVYVDJfRVRfRElSX0VYSVNUUywKKwkiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCisKK2VjCUVYVDJfRVRfVU5JTVBMRU1FTlRFRCwKKwkiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCisKK2VjCUVYVDJfRVRfQ0FOQ0VMX1JFUVVFU1RFRCwKKwkiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorCitlYwlFWFQyX0VUX0ZJTEVfVE9PX0JJRywKKwkiRXh0MiBmaWxlIHRvbyBiaWciCisKK2VjCUVYVDJfRVRfSk9VUk5BTF9OT1RfQkxPQ0ssCisJIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKKworZWMJRVhUMl9FVF9OT19KT1VSTkFMX1NCLAorCSJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIgorCitlYwlFWFQyX0VUX0pPVVJOQUxfVE9PX1NNQUxMLAorCSJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCisKK2VjCUVYVDJfRVRfSk9VUk5BTF9VTlNVUFBfVkVSU0lPTiwKKwkiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorCitlYwlFWFQyX0VUX0xPQURfRVhUX0pPVVJOQUwsCisJIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKKworZWMJRVhUMl9FVF9OT19KT1VSTkFMLAorCSJKb3VybmFsIG5vdCBmb3VuZCIKKworZWMJRVhUMl9FVF9ESVJIQVNIX1VOU1VQUCwKKwkiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCisKK2VjCUVYVDJfRVRfQkFEX0VBX0JMT0NLX05VTSwKKwkiSWxsZWdhbCBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgbnVtYmVyIgorCitlYwlFWFQyX0VUX1RPT19NQU5ZX0lOT0RFUywKKwkiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCisKK2VjCUVYVDJfRVRfTk9UX0lNQUdFX0ZJTEUsCisJIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKKworZWMJRVhUMl9FVF9SRVNfR0RUX0JMT0NLUywKKwkiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCisKK2VjCUVYVDJfRVRfUkVTSVpFX0lOT0RFX0NPUlJVUFQsCisJIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorCitlYwlFWFQyX0VUX1NFVF9CTUFQX05PX0lORCwKKwkiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorCitlYwlFWFQyX0VUX1REQl9TVUNDRVNTLAorCSJUREI6IFN1Y2Nlc3MiCisKK2VjCUVYVDJfRVRfVERCX0VSUl9DT1JSVVBULAorCSJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCisKK2VjCUVYVDJfRVRfVERCX0VSUl9JTywKKwkiVERCOiBJTyBFcnJvciIKKworZWMJRVhUMl9FVF9UREJfRVJSX0xPQ0ssCisJIlREQjogTG9ja2luZyBlcnJvciIKKworZWMJRVhUMl9FVF9UREJfRVJSX09PTSwKKwkiVERCOiBPdXQgb2YgbWVtb3J5IgorCitlYwlFWFQyX0VUX1REQl9FUlJfRVhJU1RTLAorCSJUREI6IFJlY29yZCBleGlzdHMiCisKK2VjCUVYVDJfRVRfVERCX0VSUl9OT0xPQ0ssCisJIlREQjogTG9jayBleGlzdHMgb24gb3RoZXIga2V5cyIKKworZWMJRVhUMl9FVF9UREJfRVJSX0VJTlZBTCwKKwkiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKKworZWMJRVhUMl9FVF9UREJfRVJSX05PRVhJU1QsCisJIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorCitlYwlFWFQyX0VUX1REQl9FUlJfUkRPTkxZLAorCSJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCisKK2VjCUVYVDJfRVRfREJMSVNUX0VNUFRZLAorCSJFeHQyZnMgZGlyZWN0b3J5IGJsb2NrIGxpc3QgaXMgZW1wdHkiCisKK2VjCUVYVDJfRVRfUk9fQkxPQ0tfSVRFUkFURSwKKwkiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKKworZWMJRVhUMl9FVF9NQUdJQ19FWFRFTlRfUEFUSCwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorCitlYwlFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQNjQsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorCitlYwlFWFQyX0VUX01BR0lDX0JMT0NLX0JJVE1BUDY0LAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCisKK2VjCUVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQNjQsCisJIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xMywKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xNCwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNCIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xNSwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xNiwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xNywKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNyIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xOCwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKKworZWMJRVhUMl9FVF9NQUdJQ19SRVNFUlZFRF8xOSwKKwkiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKKworZWMJRVhUMl9FVF9FWFRFTlRfSEVBREVSX0JBRCwKKwkiQ29ycnVwdCBleHRlbnQgaGVhZGVyIgorCitlYwlFWFQyX0VUX0VYVEVOVF9JTkRFWF9CQUQsCisJIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorCitlYwlFWFQyX0VUX0VYVEVOVF9MRUFGX0JBRCwKKwkiQ29ycnVwdCBleHRlbnQiCisKK2VjCUVYVDJfRVRfRVhURU5UX05PX1NQQUNFLAorCSJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCisKK2VjCUVYVDJfRVRfSU5PREVfTk9UX0VYVEVOVCwKKwkiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCisKK2VjCUVYVDJfRVRfRVhURU5UX05PX05FWFQsCisJIk5vICduZXh0JyBleHRlbnQiCisKK2VjCUVYVDJfRVRfRVhURU5UX05PX1BSRVYsCisJIk5vICdwcmV2aW91cycgZXh0ZW50IgorCitlYwlFWFQyX0VUX0VYVEVOVF9OT19VUCwKKwkiTm8gJ3VwJyBleHRlbnQiCisKK2VjCUVYVDJfRVRfRVhURU5UX05PX0RPV04sCisJIk5vICdkb3duJyBleHRlbnQiCisKK2VjCUVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFLAorCSJObyBjdXJyZW50IG5vZGUiCisKK2VjCUVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRCwKKwkiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorCitlYwlFWFQyX0VUX0NBTlRfSU5TRVJUX0VYVEVOVCwKKwkiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCisKK2VjCUVYVDJfRVRfQ0FOVF9TUExJVF9FWFRFTlQsCisJIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKKworZWMJRVhUMl9FVF9FWFRFTlRfTk9UX0ZPVU5ELAorCSJFeHRlbnQgbm90IGZvdW5kIgorCitlYwlFWFQyX0VUX0VYVEVOVF9OT1RfU1VQUE9SVEVELAorCSJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKKworZWMJRVhUMl9FVF9FWFRFTlRfSU5WQUxJRF9MRU5HVEgsCisJIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKKworZWMJRVhUMl9FVF9JT19DSEFOTkVMX05PX1NVUFBPUlRfNjQsCisJIkkvTyBDaGFubmVsIGRvZXMgbm90IHN1cHBvcnQgNjQtYml0IGJsb2NrIG51bWJlcnMiCisKK2VjCUVYVDJfRVRfTk9fTVRBQl9GSUxFLAorCSJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorCitlYwlFWFQyX0VUX0NBTlRfVVNFX0xFR0FDWV9CSVRNQVBTLAorCSJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCisKK2VjCUVYVDJfRVRfTU1QX01BR0lDX0lOVkFMSUQsCisJIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCisKK2VjCUVYVDJfRVRfTU1QX0ZBSUxFRCwKKwkiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKKworZWMJRVhUMl9FVF9NTVBfRlNDS19PTiwKKwkiTU1QOiBmc2NrIGJlaW5nIHJ1biIKKworZWMJRVhUMl9FVF9NTVBfQkFEX0JMT0NLLAorCSJNTVA6IGJsb2NrIG51bWJlciBiZXlvbmQgZmlsZXN5c3RlbSByYW5nZSIKKworZWMJRVhUMl9FVF9NTVBfVU5LTk9XTl9TRVEsCisJIk1NUDogdW5kZXJnb2luZyBhbiB1bmtub3duIG9wZXJhdGlvbiIKKworZWMJRVhUMl9FVF9NTVBfQ0hBTkdFX0FCT1JULAorCSJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorCitlYwlFWFQyX0VUX01NUF9PUEVOX0RJUkVDVCwKKwkiTU1QOiBvcGVuIHdpdGggT19ESVJFQ1QgZmFpbGVkIgorCitlYwlFWFQyX0VUX0JBRF9ERVNDX1NJWkUsCisJIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCisKK2VjCUVYVDJfRVRfSU5PREVfQ1NVTV9JTlZBTElELAorCSJJbm9kZSBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZSIKKworZWMJRVhUMl9FVF9JTk9ERV9CSVRNQVBfQ1NVTV9JTlZBTElELAorCSJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorCitlYwlFWFQyX0VUX0VYVEVOVF9DU1VNX0lOVkFMSUQsCisJIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCisKK2VjCUVYVDJfRVRfRElSX05PX1NQQUNFX0ZPUl9DU1VNLAorCSJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCisKK2VjCUVYVDJfRVRfRElSX0NTVU1fSU5WQUxJRCwKKwkiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKKworZWMJRVhUMl9FVF9FWFRfQVRUUl9DU1VNX0lOVkFMSUQsCisJIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKKworZWMJRVhUMl9FVF9TQl9DU1VNX0lOVkFMSUQsCisJIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKKworZWMJRVhUMl9FVF9VTktOT1dOX0NTVU0sCisJIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorCitlYwlFWFQyX0VUX01NUF9DU1VNX0lOVkFMSUQsCisJIk1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2siCisKK2VjCUVYVDJfRVRfRklMRV9FWElTVFMsCisJIkV4dDIgZmlsZSBhbHJlYWR5IGV4aXN0cyIKKworZWMJRVhUMl9FVF9CTE9DS19CSVRNQVBfQ1NVTV9JTlZBTElELAorCSJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorCitlYwlFWFQyX0VUX0lOTElORV9EQVRBX0NBTlRfSVRFUkFURSwKKwkiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKKworZWMJRVhUMl9FVF9FQV9CQURfTkFNRV9MRU4sCisJIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKKworZWMJRVhUMl9FVF9FQV9CQURfVkFMVUVfU0laRSwKKwkiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKKworZWMJRVhUMl9FVF9CQURfRUFfSEFTSCwKKwkiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKKworZWMJRVhUMl9FVF9CQURfRUFfSEVBREVSLAorCSJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaGFzIGEgYmFkIGhlYWRlciIKKworZWMJRVhUMl9FVF9FQV9LRVlfTk9UX0ZPVU5ELAorCSJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKKworZWMJRVhUMl9FVF9FQV9OT19TUEFDRSwKKwkiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorCitlYwlFWFQyX0VUX01JU1NJTkdfRUFfRkVBVFVSRSwKKwkiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCisKK2VjCUVYVDJfRVRfTk9fSU5MSU5FX0RBVEEsCisJIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKKworZWMJRVhUMl9FVF9JTkxJTkVfREFUQV9OT19CTE9DSywKKwkiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCisKK2VjCUVYVDJfRVRfSU5MSU5FX0RBVEFfTk9fU1BBQ0UsCisJIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCisKK2VjCUVYVDJfRVRfTUFHSUNfRUFfSEFORExFLAorCSJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCisKK2VjCUVYVDJfRVRfSU5PREVfSVNfR0FSQkFHRSwKKwkiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorCitlYwlFWFQyX0VUX0VBX0JBRF9WQUxVRV9PRkZTRVQsCisJIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCisKK2VjCUVYVDJfRVRfSk9VUk5BTF9GTEFHU19XUk9ORywKKwkiSm91cm5hbCBmbGFncyBpbmNvbnNpc3RlbnQiCisKK2VjCUVYVDJfRVRfVU5ET19GSUxFX0NPUlJVUFQsCisJIlVuZG8gZmlsZSBjb3JydXB0IgorCitlYwlFWFQyX0VUX1VORE9fRklMRV9XUk9ORywKKwkiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCisKK2VjCUVYVDJfRVRfRklMRVNZU1RFTV9DT1JSVVBURUQsCisJIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKKworZWMJRVhUMl9FVF9CQURfQ1JDLAorCSJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorCitlYwlFWFQyX0VUX0NPUlJVUFRfSk9VUk5BTF9TQiwKKwkiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorCitlYwlFWFQyX0VUX0lOT0RFX0NPUlJVUFRFRCwKKwkiSW5vZGUgaXMgY29ycnVwdGVkIgorCisJZW5kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJiMGFhYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaApAQCAtMCwwICsxLDczIEBACisvKgorICBGaWxlOiBsaW51eC9leHQyX2V4dF9hdHRyLmgKKworICBPbi1kaXNrIGZvcm1hdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGZvciB0aGUgZXh0MiBmaWxlc3lzdGVtLgorCisgIChDKSAyMDAwIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIDxhLmdydWVuYmFjaGVyQGNvbXB1dGVyLm9yZz4KKyovCisKKyNpZm5kZWYgX0VYVDJfRVhUX0FUVFJfSAorI2RlZmluZSBfRVhUMl9FWFRfQVRUUl9ICisvKiBNYWdpYyB2YWx1ZSBpbiBhdHRyaWJ1dGUgYmxvY2tzICovCisjZGVmaW5lIEVYVDJfRVhUX0FUVFJfTUFHSUNfdjEJCTB4RUEwMTAwMDAKKyNkZWZpbmUgRVhUMl9FWFRfQVRUUl9NQUdJQwkJMHhFQTAyMDAwMAorCisvKiBNYXhpbXVtIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIG9uZSBhdHRyaWJ1dGUgYmxvY2sgKi8KKyNkZWZpbmUgRVhUMl9FWFRfQVRUUl9SRUZDT1VOVF9NQVgJMTAyNAorCitzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgeworCV9fdTMyCWhfbWFnaWM7CS8qIG1hZ2ljIG51bWJlciBmb3IgaWRlbnRpZmljYXRpb24gKi8KKwlfX3UzMgloX3JlZmNvdW50OwkvKiByZWZlcmVuY2UgY291bnQgKi8KKwlfX3UzMgloX2Jsb2NrczsJLyogbnVtYmVyIG9mIGRpc2sgYmxvY2tzIHVzZWQgKi8KKwlfX3UzMgloX2hhc2g7CQkvKiBoYXNoIHZhbHVlIG9mIGFsbCBhdHRyaWJ1dGVzICovCisJX191MzIJaF9jaGVja3N1bTsJLyogY3JjMzJjKHV1aWQraWQreGF0dHJzKSAqLworCQkJCS8qIGlkID0gaW51bSBpZiByZWZjb3VudCA9IDEsIGVsc2UgYmxrbnVtICovCisJX191MzIJaF9yZXNlcnZlZFszXTsJLyogemVybyByaWdodCBub3cgKi8KK307CisKK3N0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5IHsKKwlfX3U4CWVfbmFtZV9sZW47CS8qIGxlbmd0aCBvZiBuYW1lICovCisJX191OAllX25hbWVfaW5kZXg7CS8qIGF0dHJpYnV0ZSBuYW1lIGluZGV4ICovCisJX191MTYJZV92YWx1ZV9vZmZzOwkvKiBvZmZzZXQgaW4gZGlzayBibG9jayBvZiB2YWx1ZSAqLworCV9fdTMyCWVfdmFsdWVfYmxvY2s7CS8qIGRpc2sgYmxvY2sgYXR0cmlidXRlIGlzIHN0b3JlZCBvbiAobi9pKSAqLworCV9fdTMyCWVfdmFsdWVfc2l6ZTsJLyogc2l6ZSBvZiBhdHRyaWJ1dGUgdmFsdWUgKi8KKwlfX3UzMgllX2hhc2g7CQkvKiBoYXNoIHZhbHVlIG9mIG5hbWUgYW5kIHZhbHVlICovCisjaWYgMAorCWNoYXIJZV9uYW1lWzBdOwkvKiBhdHRyaWJ1dGUgbmFtZSAqLworI2VuZGlmCit9OworCisjZGVmaW5lIEVYVDJfRVhUX0FUVFJfUEFEX0JJVFMJCTIKKyNkZWZpbmUgRVhUMl9FWFRfQVRUUl9QQUQJCSgodW5zaWduZWQpIDE8PEVYVDJfRVhUX0FUVFJfUEFEX0JJVFMpCisjZGVmaW5lIEVYVDJfRVhUX0FUVFJfUk9VTkQJCShFWFQyX0VYVF9BVFRSX1BBRC0xKQorI2RlZmluZSBFWFQyX0VYVF9BVFRSX0xFTihuYW1lX2xlbikgXAorCSgoKG5hbWVfbGVuKSArIEVYVDJfRVhUX0FUVFJfUk9VTkQgKyBcCisJc2l6ZW9mKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5KSkgJiB+RVhUMl9FWFRfQVRUUl9ST1VORCkKKyNkZWZpbmUgRVhUMl9FWFRfQVRUUl9ORVhUKGVudHJ5KSBcCisJKCAoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKikoIFwKKwkgIChjaGFyICopKGVudHJ5KSArIEVYVDJfRVhUX0FUVFJfTEVOKChlbnRyeSktPmVfbmFtZV9sZW4pKSApCisjZGVmaW5lIEVYVDJfRVhUX0FUVFJfU0laRShzaXplKSBcCisJKCgoc2l6ZSkgKyBFWFQyX0VYVF9BVFRSX1JPVU5EKSAmIH5FWFQyX0VYVF9BVFRSX1JPVU5EKQorI2RlZmluZSBFWFQyX0VYVF9JU19MQVNUX0VOVFJZKGVudHJ5KSAoKigoX191MzIgKikoZW50cnkpKSA9PSAwVUwpCisjZGVmaW5lIEVYVDJfRVhUX0FUVFJfTkFNRShlbnRyeSkgXAorCSgoKGNoYXIgKikgKGVudHJ5KSkgKyBzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkpKQorI2RlZmluZSBFWFQyX1hBVFRSX0xFTihuYW1lX2xlbikgXAorCSgoKG5hbWVfbGVuKSArIEVYVDJfRVhUX0FUVFJfUk9VTkQgKyBcCisJc2l6ZW9mKHN0cnVjdCBleHQyX3hhdHRyX2VudHJ5KSkgJiB+RVhUMl9FWFRfQVRUUl9ST1VORCkKKyNkZWZpbmUgRVhUMl9YQVRUUl9TSVpFKHNpemUpIFwKKwkoKChzaXplKSArIEVYVDJfRVhUX0FUVFJfUk9VTkQpICYgfkVYVDJfRVhUX0FUVFJfUk9VTkQpCisKKyNpZmRlZiBfX0tFUk5FTF9fCisjIGlmZGVmIENPTkZJR19FWFQyX0ZTX0VYVF9BVFRSCitleHRlcm4gaW50IGV4dDJfZ2V0X2V4dF9hdHRyKHN0cnVjdCBpbm9kZSAqLCBjb25zdCBjaGFyICosIGNoYXIgKiwgc2l6ZV90LCBpbnQpOworZXh0ZXJuIGludCBleHQyX3NldF9leHRfYXR0cihzdHJ1Y3QgaW5vZGUgKiwgY29uc3QgY2hhciAqLCBjaGFyICosIHNpemVfdCwgaW50KTsKK2V4dGVybiB2b2lkIGV4dDJfZXh0X2F0dHJfZnJlZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKK2V4dGVybiB2b2lkIGV4dDJfZXh0X2F0dHJfcHV0X3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpOworZXh0ZXJuIGludCBleHQyX2V4dF9hdHRyX2luaXQodm9pZCk7CitleHRlcm4gdm9pZCBleHQyX2V4dF9hdHRyX2RvbmUodm9pZCk7CisjIGVsc2UKKyMgIGRlZmluZSBleHQyX2dldF9leHRfYXR0ciBOVUxMCisjICBkZWZpbmUgZXh0Ml9zZXRfZXh0X2F0dHIgTlVMTAorIyBlbmRpZgorI2VuZGlmICAvKiBfX0tFUk5FTF9fICovCisjZW5kaWYgIC8qIF9FWFQyX0VYVF9BVFRSX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfZnMuaCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfZnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2E3ZDNhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0Ml9mcy5oCkBAIC0wLDAgKzEsMTEwNCBAQAorLyoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L2V4dDJfZnMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NQorICogUmVteSBDYXJkIChjYXJkQG1hc2kuaWJwLmZyKQorICogTGFib3JhdG9pcmUgTUFTSSAtIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiAgZnJvbQorICoKKyAqICBsaW51eC9pbmNsdWRlL2xpbnV4L21pbml4X2ZzLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAxOTkxLCAxOTkyICBMaW51cyBUb3J2YWxkcworICovCisKKyNpZm5kZWYgX0xJTlVYX0VYVDJfRlNfSAorI2RlZmluZSBfTElOVVhfRVhUMl9GU19ICisKKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgkJLyogQ2hhbmdlZCBmcm9tIGxpbnV4L3R5cGVzLmggKi8KKworLyoKKyAqIFRoZSBzZWNvbmQgZXh0ZW5kZWQgZmlsZXN5c3RlbSBjb25zdGFudHMvc3RydWN0dXJlcworICovCisKKy8qCisgKiBEZWZpbmUgRVhUMkZTX0RFQlVHIHRvIHByb2R1Y2UgZGVidWcgbWVzc2FnZXMKKyAqLworI3VuZGVmIEVYVDJGU19ERUJVRworCisvKgorICogRGVmaW5lIEVYVDJfUFJFQUxMT0NBVEUgdG8gcHJlYWxsb2NhdGUgZGF0YSBibG9ja3MgZm9yIGV4cGFuZGluZyBmaWxlcworICovCisjZGVmaW5lIEVYVDJfUFJFQUxMT0NBVEUKKyNkZWZpbmUgRVhUMl9ERUZBVUxUX1BSRUFMTE9DX0JMT0NLUwk4CisKKy8qCisgKiBUaGUgc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtIHZlcnNpb24KKyAqLworI2RlZmluZSBFWFQyRlNfREFURQkJIjk1LzA4LzA5IgorI2RlZmluZSBFWFQyRlNfVkVSU0lPTgkJIjAuNWIiCisKKy8qCisgKiBTcGVjaWFsIGlub2RlIG51bWJlcnMKKyAqLworI2RlZmluZSBFWFQyX0JBRF9JTk8JCSAxCS8qIEJhZCBibG9ja3MgaW5vZGUgKi8KKyNkZWZpbmUgRVhUMl9ST09UX0lOTwkJIDIJLyogUm9vdCBpbm9kZSAqLworI2RlZmluZSBFWFQ0X1VTUl9RVU9UQV9JTk8JIDMJLyogVXNlciBxdW90YSBpbm9kZSAqLworI2RlZmluZSBFWFQ0X0dSUF9RVU9UQV9JTk8JIDQJLyogR3JvdXAgcXVvdGEgaW5vZGUgKi8KKyNkZWZpbmUgRVhUMl9CT09UX0xPQURFUl9JTk8JIDUJLyogQm9vdCBsb2FkZXIgaW5vZGUgKi8KKyNkZWZpbmUgRVhUMl9VTkRFTF9ESVJfSU5PCSA2CS8qIFVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZSAqLworI2RlZmluZSBFWFQyX1JFU0laRV9JTk8JCSA3CS8qIFJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3JzIGlub2RlICovCisjZGVmaW5lIEVYVDJfSk9VUk5BTF9JTk8JIDgJLyogSm91cm5hbCBpbm9kZSAqLworI2RlZmluZSBFWFQyX0VYQ0xVREVfSU5PCSA5CS8qIFRoZSAiZXhjbHVkZSIgaW5vZGUsIGZvciBzbmFwc2hvdHMgKi8KKyNkZWZpbmUgRVhUNF9SRVBMSUNBX0lOTwkxMAkvKiBVc2VkIGJ5IG5vbi11cHN0cmVhbSBmZWF0dXJlICovCisKKy8qIEZpcnN0IG5vbi1yZXNlcnZlZCBpbm9kZSBmb3Igb2xkIGV4dDIgZmlsZXN5c3RlbXMgKi8KKyNkZWZpbmUgRVhUMl9HT09EX09MRF9GSVJTVF9JTk8JMTEKKworLyoKKyAqIFRoZSBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0gbWFnaWMgbnVtYmVyCisgKi8KKyNkZWZpbmUgRVhUMl9TVVBFUl9NQUdJQwkweEVGNTMKKworI2lmZGVmIF9fS0VSTkVMX18KKyNkZWZpbmUgRVhUMl9TQihzYikJKCYoKHNiKS0+dS5leHQyX3NiKSkKKyNlbHNlCisvKiBBc3N1bWUgdGhhdCB1c2VyIG1vZGUgcHJvZ3JhbXMgYXJlIHBhc3NpbmcgaW4gYW4gZXh0MmZzIHN1cGVyYmxvY2ssIG5vdAorICogYSBrZXJuZWwgc3RydWN0IHN1cGVyX2Jsb2NrLiAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIGNhbGwgdGhlIGZlYXR1cmUtdGVzdAorICogbWFjcm9zIGZyb20gdXNlciBsYW5kLiAqLworI2RlZmluZSBFWFQyX1NCKHNiKQkoc2IpCisjZW5kaWYKKworLyoKKyAqIE1heGltYWwgY291bnQgb2YgbGlua3MgdG8gYSBmaWxlCisgKi8KKyNkZWZpbmUgRVhUMl9MSU5LX01BWAkJNjUwMDAKKworLyoKKyAqIE1hY3JvLWluc3RydWN0aW9ucyB1c2VkIHRvIG1hbmFnZSBzZXZlcmFsIGJsb2NrIHNpemVzCisgKi8KKyNkZWZpbmUgRVhUMl9NSU5fQkxPQ0tfTE9HX1NJWkUJCTEwCS8qIDEwMjQgKi8KKyNkZWZpbmUgRVhUMl9NQVhfQkxPQ0tfTE9HX1NJWkUJCTE2CS8qIDY1NTM2ICovCisjZGVmaW5lIEVYVDJfTUlOX0JMT0NLX1NJWkUJKDEgPDwgRVhUMl9NSU5fQkxPQ0tfTE9HX1NJWkUpCisjZGVmaW5lIEVYVDJfTUFYX0JMT0NLX1NJWkUJKDEgPDwgRVhUMl9NQVhfQkxPQ0tfTE9HX1NJWkUpCisjaWZkZWYgX19LRVJORUxfXworI2RlZmluZSBFWFQyX0JMT0NLX1NJWkUocykJKChzKS0+c19ibG9ja3NpemUpCisjZGVmaW5lIEVYVDJfQkxPQ0tfU0laRV9CSVRTKHMpCSgocyktPnNfYmxvY2tzaXplX2JpdHMpCisjZGVmaW5lIEVYVDJfQUREUl9QRVJfQkxPQ0tfQklUUyhzKQkoRVhUMl9TQihzKS0+YWRkcl9wZXJfYmxvY2tfYml0cykKKyNkZWZpbmUgRVhUMl9JTk9ERV9TSVpFKHMpCShFWFQyX1NCKHMpLT5zX2lub2RlX3NpemUpCisjZGVmaW5lIEVYVDJfRklSU1RfSU5PKHMpCShFWFQyX1NCKHMpLT5zX2ZpcnN0X2lubykKKyNlbHNlCisjZGVmaW5lIEVYVDJfQkxPQ0tfU0laRShzKQkoRVhUMl9NSU5fQkxPQ0tfU0laRSA8PCAocyktPnNfbG9nX2Jsb2NrX3NpemUpCisjZGVmaW5lIEVYVDJfQkxPQ0tfU0laRV9CSVRTKHMpCSgocyktPnNfbG9nX2Jsb2NrX3NpemUgKyAxMCkKKyNkZWZpbmUgRVhUMl9JTk9ERV9TSVpFKHMpCSgoKHMpLT5zX3Jldl9sZXZlbCA9PSBFWFQyX0dPT0RfT0xEX1JFVikgPyBcCisJCQkJIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSA6IChzKS0+c19pbm9kZV9zaXplKQorI2RlZmluZSBFWFQyX0ZJUlNUX0lOTyhzKQkoKChzKS0+c19yZXZfbGV2ZWwgPT0gRVhUMl9HT09EX09MRF9SRVYpID8gXAorCQkJCSBFWFQyX0dPT0RfT0xEX0ZJUlNUX0lOTyA6IChzKS0+c19maXJzdF9pbm8pCisjZW5kaWYKKyNkZWZpbmUgRVhUMl9BRERSX1BFUl9CTE9DSyhzKQkoRVhUMl9CTE9DS19TSVpFKHMpIC8gc2l6ZW9mKF9fdTMyKSkKKworLyoKKyAqIE1hY3JvLWluc3RydWN0aW9ucyB1c2VkIHRvIG1hbmFnZSBhbGxvY2F0aW9uIGNsdXN0ZXJzCisgKi8KKyNkZWZpbmUgRVhUMl9NSU5fQ0xVU1RFUl9MT0dfU0laRQlFWFQyX01JTl9CTE9DS19MT0dfU0laRQorI2RlZmluZSBFWFQyX01BWF9DTFVTVEVSX0xPR19TSVpFCTI5CS8qIDUxMk1CICAqLworI2RlZmluZSBFWFQyX01JTl9DTFVTVEVSX1NJWkUJCUVYVDJfTUlOX0JMT0NLX1NJWkUKKyNkZWZpbmUgRVhUMl9NQVhfQ0xVU1RFUl9TSVpFCQkoMSA8PCBFWFQyX01BWF9DTFVTVEVSX0xPR19TSVpFKQorI2RlZmluZSBFWFQyX0NMVVNURVJfU0laRShzKQkJKEVYVDJfTUlOX0JMT0NLX1NJWkUgPDwgXAorCQkJCQkJKHMpLT5zX2xvZ19jbHVzdGVyX3NpemUpCisjZGVmaW5lIEVYVDJfQ0xVU1RFUl9TSVpFX0JJVFMocykJKChzKS0+c19sb2dfY2x1c3Rlcl9zaXplICsgMTApCisKKy8qCisgKiBNYWNyby1pbnN0cnVjdGlvbnMgdXNlZCB0byBtYW5hZ2UgZnJhZ21lbnRzCisgKgorICogTm90ZTogZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHksIGZvciB0aGUgZHVtcCBwcm9ncmFtLgorICogRXh0Mi8zLzQgd2lsbCBuZXZlciBzdXBwb3J0IGZyYWdtZW50cy4uLi4KKyAqLworI2RlZmluZSBFWFQyX01JTl9GUkFHX1NJWkUgICAgICAgICAgICAgIEVYVDJfTUlOX0JMT0NLX1NJWkUKKyNkZWZpbmUgRVhUMl9NQVhfRlJBR19TSVpFICAgICAgICAgICAgICBFWFQyX01BWF9CTE9DS19TSVpFCisjZGVmaW5lIEVYVDJfTUlOX0ZSQUdfTE9HX1NJWkUgICAgICAgICAgRVhUMl9NSU5fQkxPQ0tfTE9HX1NJWkUKKyNkZWZpbmUgRVhUMl9GUkFHX1NJWkUocykJCUVYVDJfQkxPQ0tfU0laRShzKQorI2RlZmluZSBFWFQyX0ZSQUdTX1BFUl9CTE9DSyhzKQkJMQorCisvKgorICogQUNMIHN0cnVjdHVyZXMKKyAqLworc3RydWN0IGV4dDJfYWNsX2hlYWRlcgkvKiBIZWFkZXIgb2YgQWNjZXNzIENvbnRyb2wgTGlzdHMgKi8KK3sKKwlfX3UzMglhY2xoX3NpemU7CisJX191MzIJYWNsaF9maWxlX2NvdW50OworCV9fdTMyCWFjbGhfYWNsZV9jb3VudDsKKwlfX3UzMglhY2xoX2ZpcnN0X2FjbGU7Cit9OworCitzdHJ1Y3QgZXh0Ml9hY2xfZW50cnkJLyogQWNjZXNzIENvbnRyb2wgTGlzdCBFbnRyeSAqLworeworCV9fdTMyCWFjbGVfc2l6ZTsKKwlfX3UxNglhY2xlX3Blcm1zOwkvKiBBY2Nlc3MgcGVybWlzc2lvbnMgKi8KKwlfX3UxNglhY2xlX3R5cGU7CS8qIFR5cGUgb2YgZW50cnkgKi8KKwlfX3UxNglhY2xlX3RhZzsJLyogVXNlciBvciBncm91cCBpZGVudGl0eSAqLworCV9fdTE2CWFjbGVfcGFkMTsKKwlfX3UzMglhY2xlX25leHQ7CS8qIFBvaW50ZXIgb24gbmV4dCBlbnRyeSBmb3IgdGhlICovCisJCQkJCS8qIHNhbWUgaW5vZGUgb3Igb24gbmV4dCBmcmVlIGVudHJ5ICovCit9OworCisvKgorICogU3RydWN0dXJlIG9mIGEgYmxvY2tzIGdyb3VwIGRlc2NyaXB0b3IKKyAqLworc3RydWN0IGV4dDJfZ3JvdXBfZGVzYworeworCV9fdTMyCWJnX2Jsb2NrX2JpdG1hcDsJLyogQmxvY2tzIGJpdG1hcCBibG9jayAqLworCV9fdTMyCWJnX2lub2RlX2JpdG1hcDsJLyogSW5vZGVzIGJpdG1hcCBibG9jayAqLworCV9fdTMyCWJnX2lub2RlX3RhYmxlOwkJLyogSW5vZGVzIHRhYmxlIGJsb2NrICovCisJX191MTYJYmdfZnJlZV9ibG9ja3NfY291bnQ7CS8qIEZyZWUgYmxvY2tzIGNvdW50ICovCisJX191MTYJYmdfZnJlZV9pbm9kZXNfY291bnQ7CS8qIEZyZWUgaW5vZGVzIGNvdW50ICovCisJX191MTYJYmdfdXNlZF9kaXJzX2NvdW50OwkvKiBEaXJlY3RvcmllcyBjb3VudCAqLworCV9fdTE2CWJnX2ZsYWdzOworCV9fdTMyCWJnX2V4Y2x1ZGVfYml0bWFwX2xvOwkvKiBFeGNsdWRlIGJpdG1hcCBmb3Igc25hcHNob3RzICovCisJX191MTYJYmdfYmxvY2tfYml0bWFwX2NzdW1fbG87LyogY3JjMzJjKHNfdXVpZCtncnBfbnVtK2JpdG1hcCkgTFNCICovCisJX191MTYJYmdfaW5vZGVfYml0bWFwX2NzdW1fbG87LyogY3JjMzJjKHNfdXVpZCtncnBfbnVtK2JpdG1hcCkgTFNCICovCisJX191MTYJYmdfaXRhYmxlX3VudXNlZDsJLyogVW51c2VkIGlub2RlcyBjb3VudCAqLworCV9fdTE2CWJnX2NoZWNrc3VtOwkJLyogY3JjMTYoc191dWlkK2dyb3VwX251bStncm91cF9kZXNjKSovCit9OworCisvKgorICogU3RydWN0dXJlIG9mIGEgYmxvY2tzIGdyb3VwIGRlc2NyaXB0b3IKKyAqLworc3RydWN0IGV4dDRfZ3JvdXBfZGVzYworeworCV9fdTMyCWJnX2Jsb2NrX2JpdG1hcDsJLyogQmxvY2tzIGJpdG1hcCBibG9jayAqLworCV9fdTMyCWJnX2lub2RlX2JpdG1hcDsJLyogSW5vZGVzIGJpdG1hcCBibG9jayAqLworCV9fdTMyCWJnX2lub2RlX3RhYmxlOwkJLyogSW5vZGVzIHRhYmxlIGJsb2NrICovCisJX191MTYJYmdfZnJlZV9ibG9ja3NfY291bnQ7CS8qIEZyZWUgYmxvY2tzIGNvdW50ICovCisJX191MTYJYmdfZnJlZV9pbm9kZXNfY291bnQ7CS8qIEZyZWUgaW5vZGVzIGNvdW50ICovCisJX191MTYJYmdfdXNlZF9kaXJzX2NvdW50OwkvKiBEaXJlY3RvcmllcyBjb3VudCAqLworCV9fdTE2CWJnX2ZsYWdzOwkJLyogRVhUNF9CR19mbGFncyAoSU5PREVfVU5JTklULCBldGMpICovCisJX191MzIJYmdfZXhjbHVkZV9iaXRtYXBfbG87CS8qIEV4Y2x1ZGUgYml0bWFwIGZvciBzbmFwc2hvdHMgKi8KKwlfX3UxNgliZ19ibG9ja19iaXRtYXBfY3N1bV9sbzsvKiBjcmMzMmMoc191dWlkK2dycF9udW0rYml0bWFwKSBMU0IgKi8KKwlfX3UxNgliZ19pbm9kZV9iaXRtYXBfY3N1bV9sbzsvKiBjcmMzMmMoc191dWlkK2dycF9udW0rYml0bWFwKSBMU0IgKi8KKwlfX3UxNgliZ19pdGFibGVfdW51c2VkOwkvKiBVbnVzZWQgaW5vZGVzIGNvdW50ICovCisJX191MTYJYmdfY2hlY2tzdW07CQkvKiBjcmMxNihzYl91dWlkK2dyb3VwK2Rlc2MpICovCisJX191MzIJYmdfYmxvY2tfYml0bWFwX2hpOwkvKiBCbG9ja3MgYml0bWFwIGJsb2NrIE1TQiAqLworCV9fdTMyCWJnX2lub2RlX2JpdG1hcF9oaTsJLyogSW5vZGVzIGJpdG1hcCBibG9jayBNU0IgKi8KKwlfX3UzMgliZ19pbm9kZV90YWJsZV9oaTsJLyogSW5vZGVzIHRhYmxlIGJsb2NrIE1TQiAqLworCV9fdTE2CWJnX2ZyZWVfYmxvY2tzX2NvdW50X2hpOy8qIEZyZWUgYmxvY2tzIGNvdW50IE1TQiAqLworCV9fdTE2CWJnX2ZyZWVfaW5vZGVzX2NvdW50X2hpOy8qIEZyZWUgaW5vZGVzIGNvdW50IE1TQiAqLworCV9fdTE2CWJnX3VzZWRfZGlyc19jb3VudF9oaTsJLyogRGlyZWN0b3JpZXMgY291bnQgTVNCICovCisJX191MTYJYmdfaXRhYmxlX3VudXNlZF9oaTsJLyogVW51c2VkIGlub2RlcyBjb3VudCBNU0IgKi8KKwlfX3UzMgliZ19leGNsdWRlX2JpdG1hcF9oaTsJLyogRXhjbHVkZSBiaXRtYXAgYmxvY2sgTVNCICovCisJX191MTYJYmdfYmxvY2tfYml0bWFwX2NzdW1faGk7LyogY3JjMzJjKHNfdXVpZCtncnBfbnVtK2JpdG1hcCkgTVNCICovCisJX191MTYJYmdfaW5vZGVfYml0bWFwX2NzdW1faGk7LyogY3JjMzJjKHNfdXVpZCtncnBfbnVtK2JpdG1hcCkgTVNCICovCisJX191MzIJYmdfcmVzZXJ2ZWQ7Cit9OworCisjZGVmaW5lIEVYVDRfQkdfSU5PREVfQklUTUFQX0NTVU1fSElfRU5ECVwKKwkob2Zmc2V0b2Yoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYywgYmdfaW5vZGVfYml0bWFwX2NzdW1faGkpICsgXAorCSBzaXplb2YoX191MTYpKQorI2RlZmluZSBFWFQ0X0JHX0JMT0NLX0JJVE1BUF9DU1VNX0hJX0xPQ0FUSU9OCVwKKwkob2Zmc2V0b2Yoc3RydWN0IGV4dDRfZ3JvdXBfZGVzYywgYmdfYmxvY2tfYml0bWFwX2NzdW1faGkpICsgXAorCSBzaXplb2YoX191MTYpKQorCisjZGVmaW5lIEVYVDJfQkdfSU5PREVfVU5JTklUCTB4MDAwMSAvKiBJbm9kZSB0YWJsZS9iaXRtYXAgbm90IGluaXRpYWxpemVkICovCisjZGVmaW5lIEVYVDJfQkdfQkxPQ0tfVU5JTklUCTB4MDAwMiAvKiBCbG9jayBiaXRtYXAgbm90IGluaXRpYWxpemVkICovCisjZGVmaW5lIEVYVDJfQkdfSU5PREVfWkVST0VECTB4MDAwNCAvKiBPbi1kaXNrIGl0YWJsZSBpbml0aWFsaXplZCB0byB6ZXJvICovCisKKy8qCisgKiBEYXRhIHN0cnVjdHVyZXMgdXNlZCBieSB0aGUgZGlyZWN0b3J5IGluZGV4aW5nIGZlYXR1cmUKKyAqCisgKiBOb3RlOiBhbGwgb2YgdGhlIG11bHRpYnl0ZSBpbnRlZ2VyIGZpZWxkcyBhcmUgbGl0dGxlIGVuZGlhbi4KKyAqLworCisvKgorICogTm90ZTogZHhfcm9vdF9pbmZvIGlzIGxhaWQgb3V0IHNvIHRoYXQgaWYgaXQgc2hvdWxkIHNvbWVob3cgZ2V0CisgKiBvdmVybGFpZCBieSBhIGRpcmVudCB0aGUgdHdvIGxvdyBiaXRzIG9mIHRoZSBoYXNoIHZlcnNpb24gd2lsbCBiZQorICogemVyby4gIFRoZXJlZm9yZSwgdGhlIGhhc2ggdmVyc2lvbiBtb2QgNCBzaG91bGQgbmV2ZXIgYmUgMC4KKyAqIFNpbmNlcmVseSwgdGhlIHBhcmFub2lhIGRlcGFydG1lbnQuCisgKi8KK3N0cnVjdCBleHQyX2R4X3Jvb3RfaW5mbyB7CisJX191MzIgcmVzZXJ2ZWRfemVybzsKKwlfX3U4IGhhc2hfdmVyc2lvbjsgLyogMCBub3csIDEgYXQgcmVsZWFzZSAqLworCV9fdTggaW5mb19sZW5ndGg7IC8qIDggKi8KKwlfX3U4IGluZGlyZWN0X2xldmVsczsKKwlfX3U4IHVudXNlZF9mbGFnczsKK307CisKKyNkZWZpbmUgRVhUMl9IQVNIX0xFR0FDWQkJMAorI2RlZmluZSBFWFQyX0hBU0hfSEFMRl9NRDQJCTEKKyNkZWZpbmUgRVhUMl9IQVNIX1RFQQkJCTIKKyNkZWZpbmUgRVhUMl9IQVNIX0xFR0FDWV9VTlNJR05FRAkzIC8qIHJlc2VydmVkIGZvciB1c2Vyc3BhY2UgbGliICovCisjZGVmaW5lIEVYVDJfSEFTSF9IQUxGX01ENF9VTlNJR05FRAk0IC8qIHJlc2VydmVkIGZvciB1c2Vyc3BhY2UgbGliICovCisjZGVmaW5lIEVYVDJfSEFTSF9URUFfVU5TSUdORUQJCTUgLyogcmVzZXJ2ZWQgZm9yIHVzZXJzcGFjZSBsaWIgKi8KKworI2RlZmluZSBFWFQyX0hBU0hfRkxBR19JTkNPTVBBVAkweDEKKworc3RydWN0IGV4dDJfZHhfZW50cnkgeworCV9fbGUzMiBoYXNoOworCV9fbGUzMiBibG9jazsKK307CisKK3N0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgeworCV9fbGUxNiBsaW1pdDsKKwlfX2xlMTYgY291bnQ7Cit9OworCisvKgorICogVGhpcyBnb2VzIGF0IHRoZSBlbmQgb2YgZWFjaCBodHJlZSBibG9jay4KKyAqLworc3RydWN0IGV4dDJfZHhfdGFpbCB7CisJX19sZTMyIGR0X3Jlc2VydmVkOworCV9fbGUzMiBkdF9jaGVja3N1bTsJLyogY3JjMzJjKHV1aWQraW51bStkeGJsb2NrKSAqLworfTsKKworLyoKKyAqIE1hY3JvLWluc3RydWN0aW9ucyB1c2VkIHRvIG1hbmFnZSBncm91cCBkZXNjcmlwdG9ycworICovCisjZGVmaW5lIEVYVDJfTUlOX0RFU0NfU0laRSAgICAgICAgICAgICAzMgorI2RlZmluZSBFWFQyX01JTl9ERVNDX1NJWkVfNjRCSVQgICAgICAgNjQKKyNkZWZpbmUgRVhUMl9NQVhfREVTQ19TSVpFICAgICAgICAgICAgIEVYVDJfTUlOX0JMT0NLX1NJWkUKKyNkZWZpbmUgRVhUMl9ERVNDX1NJWkUocykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgKChFWFQyX1NCKHMpLT5zX2ZlYXR1cmVfaW5jb21wYXQgJiBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQpID8gXAorCShzKS0+c19kZXNjX3NpemUgOiBFWFQyX01JTl9ERVNDX1NJWkUpCisKKyNkZWZpbmUgRVhUMl9CTE9DS1NfUEVSX0dST1VQKHMpCShFWFQyX1NCKHMpLT5zX2Jsb2Nrc19wZXJfZ3JvdXApCisjZGVmaW5lIEVYVDJfSU5PREVTX1BFUl9HUk9VUChzKQkoRVhUMl9TQihzKS0+c19pbm9kZXNfcGVyX2dyb3VwKQorI2RlZmluZSBFWFQyX0NMVVNURVJTX1BFUl9HUk9VUChzKQkoRVhUMl9TQihzKS0+c19jbHVzdGVyc19wZXJfZ3JvdXApCisjZGVmaW5lIEVYVDJfSU5PREVTX1BFUl9CTE9DSyhzKQkoRVhUMl9CTE9DS19TSVpFKHMpL0VYVDJfSU5PREVfU0laRShzKSkKKy8qIGxpbWl0cyBpbXBvc2VkIGJ5IDE2LWJpdCB2YWx1ZSBnZF9mcmVlX3tibG9ja3MsaW5vZGV9X2NvdW50ICovCisjZGVmaW5lIEVYVDJfTUFYX0JMT0NLU19QRVJfR1JPVVAocykJKCgoKHVuc2lnbmVkKSAxIDw8IDE2KSAtIDgpICoJXAorCQkJCQkgKEVYVDJfQ0xVU1RFUl9TSVpFKHMpIC8gXAorCQkJCQkgIEVYVDJfQkxPQ0tfU0laRShzKSkpCisjZGVmaW5lIEVYVDJfTUFYX0NMVVNURVJTX1BFUl9HUk9VUChzKQkoKCh1bnNpZ25lZCkgMSA8PCAxNikgLSA4KQorI2RlZmluZSBFWFQyX01BWF9JTk9ERVNfUEVSX0dST1VQKHMpCSgoKHVuc2lnbmVkKSAxIDw8IDE2KSAtIFwKKwkJCQkJIEVYVDJfSU5PREVTX1BFUl9CTE9DSyhzKSkKKyNpZmRlZiBfX0tFUk5FTF9fCisjZGVmaW5lIEVYVDJfREVTQ19QRVJfQkxPQ0socykJCShFWFQyX1NCKHMpLT5zX2Rlc2NfcGVyX2Jsb2NrKQorI2RlZmluZSBFWFQyX0RFU0NfUEVSX0JMT0NLX0JJVFMocykJKEVYVDJfU0IocyktPnNfZGVzY19wZXJfYmxvY2tfYml0cykKKyNlbHNlCisjZGVmaW5lIEVYVDJfREVTQ19QRVJfQkxPQ0socykJCShFWFQyX0JMT0NLX1NJWkUocykgLyBFWFQyX0RFU0NfU0laRShzKSkKKyNlbmRpZgorCisjZGVmaW5lIEVYVDJfR1JPVVBTX1RPX0JMT0NLUyhzLCBnKSAgICgoYmxrNjRfdCkgRVhUMl9CTE9DS1NfUEVSX0dST1VQKHMpICogXAorCQkJCSAgICAgICAoZykpCisjZGVmaW5lIEVYVDJfR1JPVVBTX1RPX0NMVVNURVJTKHMsIGcpICgoYmxrNjRfdCkgRVhUMl9DTFVTVEVSU19QRVJfR1JPVVAocykgKiBcCisJCQkJICAgICAgIChnKSkKKworLyoKKyAqIENvbnN0YW50cyByZWxhdGl2ZSB0byB0aGUgZGF0YSBibG9ja3MKKyAqLworI2RlZmluZSBFWFQyX05ESVJfQkxPQ0tTCQkxMgorI2RlZmluZSBFWFQyX0lORF9CTE9DSwkJCUVYVDJfTkRJUl9CTE9DS1MKKyNkZWZpbmUgRVhUMl9ESU5EX0JMT0NLCQkJKEVYVDJfSU5EX0JMT0NLICsgMSkKKyNkZWZpbmUgRVhUMl9USU5EX0JMT0NLCQkJKEVYVDJfRElORF9CTE9DSyArIDEpCisjZGVmaW5lIEVYVDJfTl9CTE9DS1MJCQkoRVhUMl9USU5EX0JMT0NLICsgMSkKKworLyoKKyAqIElub2RlIGZsYWdzCisgKi8KKyNkZWZpbmUgRVhUMl9TRUNSTV9GTAkJCTB4MDAwMDAwMDEgLyogU2VjdXJlIGRlbGV0aW9uICovCisjZGVmaW5lIEVYVDJfVU5STV9GTAkJCTB4MDAwMDAwMDIgLyogVW5kZWxldGUgKi8KKyNkZWZpbmUgRVhUMl9DT01QUl9GTAkJCTB4MDAwMDAwMDQgLyogQ29tcHJlc3MgZmlsZSAqLworI2RlZmluZSBFWFQyX1NZTkNfRkwJCQkweDAwMDAwMDA4IC8qIFN5bmNocm9ub3VzIHVwZGF0ZXMgKi8KKyNkZWZpbmUgRVhUMl9JTU1VVEFCTEVfRkwJCTB4MDAwMDAwMTAgLyogSW1tdXRhYmxlIGZpbGUgKi8KKyNkZWZpbmUgRVhUMl9BUFBFTkRfRkwJCQkweDAwMDAwMDIwIC8qIHdyaXRlcyB0byBmaWxlIG1heSBvbmx5IGFwcGVuZCAqLworI2RlZmluZSBFWFQyX05PRFVNUF9GTAkJCTB4MDAwMDAwNDAgLyogZG8gbm90IGR1bXAgZmlsZSAqLworI2RlZmluZSBFWFQyX05PQVRJTUVfRkwJCQkweDAwMDAwMDgwIC8qIGRvIG5vdCB1cGRhdGUgYXRpbWUgKi8KKy8qIFJlc2VydmVkIGZvciBjb21wcmVzc2lvbiB1c2FnZS4uLiAqLworI2RlZmluZSBFWFQyX0RJUlRZX0ZMCQkJMHgwMDAwMDEwMAorI2RlZmluZSBFWFQyX0NPTVBSQkxLX0ZMCQkweDAwMDAwMjAwIC8qIE9uZSBvciBtb3JlIGNvbXByZXNzZWQgY2x1c3RlcnMgKi8KKyNkZWZpbmUgRVhUMl9OT0NPTVBSX0ZMCQkJMHgwMDAwMDQwMCAvKiBBY2Nlc3MgcmF3IGNvbXByZXNzZWQgZGF0YSAqLworCS8qIG5iOiB3YXMgcHJldmlvdXNseSBFWFQyX0VDT01QUl9GTCAqLworI2RlZmluZSBFWFQ0X0VOQ1JZUFRfRkwJCQkweDAwMDAwODAwIC8qIGVuY3J5cHRlZCBpbm9kZSAqLworLyogRW5kIGNvbXByZXNzaW9uIGZsYWdzIC0tLSBtYXliZSBub3QgYWxsIHVzZWQgKi8KKyNkZWZpbmUgRVhUMl9CVFJFRV9GTAkJCTB4MDAwMDEwMDAgLyogYnRyZWUgZm9ybWF0IGRpciAqLworI2RlZmluZSBFWFQyX0lOREVYX0ZMCQkJMHgwMDAwMTAwMCAvKiBoYXNoLWluZGV4ZWQgZGlyZWN0b3J5ICovCisjZGVmaW5lIEVYVDJfSU1BR0lDX0ZMCQkJMHgwMDAwMjAwMAorI2RlZmluZSBFWFQzX0pPVVJOQUxfREFUQV9GTAkJMHgwMDAwNDAwMCAvKiBmaWxlIGRhdGEgc2hvdWxkIGJlIGpvdXJuYWxlZCAqLworI2RlZmluZSBFWFQyX05PVEFJTF9GTAkJCTB4MDAwMDgwMDAgLyogZmlsZSB0YWlsIHNob3VsZCBub3QgYmUgbWVyZ2VkICovCisjZGVmaW5lIEVYVDJfRElSU1lOQ19GTCAJCTB4MDAwMTAwMDAgLyogU3luY2hyb25vdXMgZGlyZWN0b3J5IG1vZGlmaWNhdGlvbnMgKi8KKyNkZWZpbmUgRVhUMl9UT1BESVJfRkwJCQkweDAwMDIwMDAwIC8qIFRvcCBvZiBkaXJlY3RvcnkgaGllcmFyY2hpZXMqLworI2RlZmluZSBFWFQ0X0hVR0VfRklMRV9GTCAgICAgICAgICAgICAgIDB4MDAwNDAwMDAgLyogU2V0IHRvIGVhY2ggaHVnZSBmaWxlICovCisjZGVmaW5lIEVYVDRfRVhURU5UU19GTCAJCTB4MDAwODAwMDAgLyogSW5vZGUgdXNlcyBleHRlbnRzICovCisjZGVmaW5lIEVYVDRfRUFfSU5PREVfRkwJICAgICAgICAweDAwMjAwMDAwIC8qIElub2RlIHVzZWQgZm9yIGxhcmdlIEVBICovCisvKiBFWFQ0X0VPRkJMT0NLU19GTCAweDAwNDAwMDAwIHdhcyBoZXJlICovCisjZGVmaW5lIEZTX05PQ09XX0ZMCQkJMHgwMDgwMDAwMCAvKiBEbyBub3QgY293IGZpbGUgKi8KKyNkZWZpbmUgRVhUNF9TTkFQRklMRV9GTAkJMHgwMTAwMDAwMCAgLyogSW5vZGUgaXMgYSBzbmFwc2hvdCAqLworI2RlZmluZSBFWFQ0X1NOQVBGSUxFX0RFTEVURURfRkwJMHgwNDAwMDAwMCAgLyogU25hcHNob3QgaXMgYmVpbmcgZGVsZXRlZCAqLworI2RlZmluZSBFWFQ0X1NOQVBGSUxFX1NIUlVOS19GTAkJMHgwODAwMDAwMCAgLyogU25hcHNob3Qgc2hyaW5rIGhhcyBjb21wbGV0ZWQgKi8KKyNkZWZpbmUgRVhUNF9JTkxJTkVfREFUQV9GTAkJMHgxMDAwMDAwMCAvKiBJbm9kZSBoYXMgaW5saW5lIGRhdGEgKi8KKyNkZWZpbmUgRVhUNF9QUk9KSU5IRVJJVF9GTAkJMHgyMDAwMDAwMCAvKiBDcmVhdGUgd2l0aCBwYXJlbnRzIHByb2ppZCAqLworI2RlZmluZSBFWFQyX1JFU0VSVkVEX0ZMCQkweDgwMDAwMDAwIC8qIHJlc2VydmVkIGZvciBleHQyIGxpYiAqLworCisjZGVmaW5lIEVYVDJfRkxfVVNFUl9WSVNJQkxFCQkweDIwNEJERkZGIC8qIFVzZXIgdmlzaWJsZSBmbGFncyAqLworI2RlZmluZSBFWFQyX0ZMX1VTRVJfTU9ESUZJQUJMRQkJMHgyMDRCODBGRiAvKiBVc2VyIG1vZGlmaWFibGUgZmxhZ3MgKi8KKworLyoKKyAqIGlvY3RsIGNvbW1hbmRzCisgKi8KKworLyogVXNlZCBmb3Igb25saW5lIHJlc2l6ZSAqLworc3RydWN0IGV4dDJfbmV3X2dyb3VwX2lucHV0IHsKKwlfX3UzMiBncm91cDsJCS8qIEdyb3VwIG51bWJlciBmb3IgdGhpcyBkYXRhICovCisJX191MzIgYmxvY2tfYml0bWFwOwkvKiBBYnNvbHV0ZSBibG9jayBudW1iZXIgb2YgYmxvY2sgYml0bWFwICovCisJX191MzIgaW5vZGVfYml0bWFwOwkvKiBBYnNvbHV0ZSBibG9jayBudW1iZXIgb2YgaW5vZGUgYml0bWFwICovCisJX191MzIgaW5vZGVfdGFibGU7CS8qIEFic29sdXRlIGJsb2NrIG51bWJlciBvZiBpbm9kZSB0YWJsZSBzdGFydCAqLworCV9fdTMyIGJsb2Nrc19jb3VudDsJLyogVG90YWwgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGlzIGdyb3VwICovCisJX191MTYgcmVzZXJ2ZWRfYmxvY2tzOwkvKiBOdW1iZXIgb2YgcmVzZXJ2ZWQgYmxvY2tzIGluIHRoaXMgZ3JvdXAgKi8KKwlfX3UxNiB1bnVzZWQ7CQkvKiBOdW1iZXIgb2YgcmVzZXJ2ZWQgR0RUIGJsb2NrcyBpbiBncm91cCAqLworfTsKKworc3RydWN0IGV4dDRfbmV3X2dyb3VwX2lucHV0IHsKKwlfX3UzMiBncm91cDsJCS8qIEdyb3VwIG51bWJlciBmb3IgdGhpcyBkYXRhICovCisJX191NjQgYmxvY2tfYml0bWFwOwkvKiBBYnNvbHV0ZSBibG9jayBudW1iZXIgb2YgYmxvY2sgYml0bWFwICovCisJX191NjQgaW5vZGVfYml0bWFwOwkvKiBBYnNvbHV0ZSBibG9jayBudW1iZXIgb2YgaW5vZGUgYml0bWFwICovCisJX191NjQgaW5vZGVfdGFibGU7CS8qIEFic29sdXRlIGJsb2NrIG51bWJlciBvZiBpbm9kZSB0YWJsZSBzdGFydCAqLworCV9fdTMyIGJsb2Nrc19jb3VudDsJLyogVG90YWwgbnVtYmVyIG9mIGJsb2NrcyBpbiB0aGlzIGdyb3VwICovCisJX191MTYgcmVzZXJ2ZWRfYmxvY2tzOwkvKiBOdW1iZXIgb2YgcmVzZXJ2ZWQgYmxvY2tzIGluIHRoaXMgZ3JvdXAgKi8KKwlfX3UxNiB1bnVzZWQ7Cit9OworCisjaWZkZWYgX19HTlVfXwkJCS8qIE5lZWRlZCBmb3IgdGhlIEh1cmQgKi8KKyNkZWZpbmUgX0lPVF9leHQyX25ld19ncm91cF9pbnB1dCBfSU9UIChfSU9UUyhfX3UzMiksIDUsIF9JT1RTKF9fdTE2KSwgMiwgMCwgMCkKKyNlbmRpZgorCisjZGVmaW5lIEVYVDJfSU9DX0dFVEZMQUdTCQlfSU9SKCdmJywgMSwgbG9uZykKKyNkZWZpbmUgRVhUMl9JT0NfU0VURkxBR1MJCV9JT1coJ2YnLCAyLCBsb25nKQorI2RlZmluZSBFWFQyX0lPQ19HRVRWRVJTSU9OCQlfSU9SKCd2JywgMSwgbG9uZykKKyNkZWZpbmUgRVhUMl9JT0NfU0VUVkVSU0lPTgkJX0lPVygndicsIDIsIGxvbmcpCisjZGVmaW5lIEVYVDJfSU9DX0dFVFZFUlNJT05fTkVXCQlfSU9SKCdmJywgMywgbG9uZykKKyNkZWZpbmUgRVhUMl9JT0NfU0VUVkVSU0lPTl9ORVcJCV9JT1coJ2YnLCA0LCBsb25nKQorI2RlZmluZSBFWFQyX0lPQ19HUk9VUF9FWFRFTkQJCV9JT1coJ2YnLCA3LCB1bnNpZ25lZCBsb25nKQorI2RlZmluZSBFWFQyX0lPQ19HUk9VUF9BREQJCV9JT1coJ2YnLCA4LHN0cnVjdCBleHQyX25ld19ncm91cF9pbnB1dCkKKyNkZWZpbmUgRVhUNF9JT0NfR1JPVVBfQURECQlfSU9XKCdmJywgOCxzdHJ1Y3QgZXh0NF9uZXdfZ3JvdXBfaW5wdXQpCisjZGVmaW5lIEVYVDRfSU9DX1JFU0laRV9GUwkJX0lPVygnZicsIDE2LCBfX3U2NCkKKworLyoKKyAqIFN0cnVjdHVyZSBvZiBhbiBpbm9kZSBvbiB0aGUgZGlzaworICovCitzdHJ1Y3QgZXh0Ml9pbm9kZSB7CisJX191MTYJaV9tb2RlOwkJLyogRmlsZSBtb2RlICovCisJX191MTYJaV91aWQ7CQkvKiBMb3cgMTYgYml0cyBvZiBPd25lciBVaWQgKi8KKwlfX3UzMglpX3NpemU7CQkvKiBTaXplIGluIGJ5dGVzICovCisJX191MzIJaV9hdGltZTsJLyogQWNjZXNzIHRpbWUgKi8KKwlfX3UzMglpX2N0aW1lOwkvKiBJbm9kZSBjaGFuZ2UgdGltZSAqLworCV9fdTMyCWlfbXRpbWU7CS8qIE1vZGlmaWNhdGlvbiB0aW1lICovCisJX191MzIJaV9kdGltZTsJLyogRGVsZXRpb24gVGltZSAqLworCV9fdTE2CWlfZ2lkOwkJLyogTG93IDE2IGJpdHMgb2YgR3JvdXAgSWQgKi8KKwlfX3UxNglpX2xpbmtzX2NvdW50OwkvKiBMaW5rcyBjb3VudCAqLworCV9fdTMyCWlfYmxvY2tzOwkvKiBCbG9ja3MgY291bnQgKi8KKwlfX3UzMglpX2ZsYWdzOwkvKiBGaWxlIGZsYWdzICovCisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJX191MzIJbF9pX3ZlcnNpb247IC8qIHdhcyBsX2lfcmVzZXJ2ZWQxICovCisJCX0gbGludXgxOworCQlzdHJ1Y3QgeworCQkJX191MzIgIGhfaV90cmFuc2xhdG9yOworCQl9IGh1cmQxOworCX0gb3NkMTsJCQkJLyogT1MgZGVwZW5kZW50IDEgKi8KKwlfX3UzMglpX2Jsb2NrW0VYVDJfTl9CTE9DS1NdOy8qIFBvaW50ZXJzIHRvIGJsb2NrcyAqLworCV9fdTMyCWlfZ2VuZXJhdGlvbjsJLyogRmlsZSB2ZXJzaW9uIChmb3IgTkZTKSAqLworCV9fdTMyCWlfZmlsZV9hY2w7CS8qIEZpbGUgQUNMICovCisJX191MzIJaV9zaXplX2hpZ2g7CS8qIEZvcm1lcmx5IGlfZGlyX2FjbCwgZGlyZWN0b3J5IEFDTCAqLworCV9fdTMyCWlfZmFkZHI7CS8qIEZyYWdtZW50IGFkZHJlc3MgKi8KKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlfX3UxNglsX2lfYmxvY2tzX2hpOworCQkJX191MTYJbF9pX2ZpbGVfYWNsX2hpZ2g7CisJCQlfX3UxNglsX2lfdWlkX2hpZ2g7CS8qIHRoZXNlIDIgZmllbGRzICAgICovCisJCQlfX3UxNglsX2lfZ2lkX2hpZ2g7CS8qIHdlcmUgcmVzZXJ2ZWQyWzBdICovCisJCQlfX3UxNglsX2lfY2hlY2tzdW1fbG87IC8qIGNyYzMyYyh1dWlkK2ludW0raW5vZGUpICovCisJCQlfX3UxNglsX2lfcmVzZXJ2ZWQ7CisJCX0gbGludXgyOworCQlzdHJ1Y3QgeworCQkJX191OAloX2lfZnJhZzsJLyogRnJhZ21lbnQgbnVtYmVyICovCisJCQlfX3U4CWhfaV9mc2l6ZTsJLyogRnJhZ21lbnQgc2l6ZSAqLworCQkJX191MTYJaF9pX21vZGVfaGlnaDsKKwkJCV9fdTE2CWhfaV91aWRfaGlnaDsKKwkJCV9fdTE2CWhfaV9naWRfaGlnaDsKKwkJCV9fdTMyCWhfaV9hdXRob3I7CisJCX0gaHVyZDI7CisJfSBvc2QyOwkJCQkvKiBPUyBkZXBlbmRlbnQgMiAqLworfTsKKworLyoKKyAqIFBlcm1hbmVudCBwYXJ0IG9mIGFuIGxhcmdlIGlub2RlIG9uIHRoZSBkaXNrCisgKi8KK3N0cnVjdCBleHQyX2lub2RlX2xhcmdlIHsKKwlfX3UxNglpX21vZGU7CQkvKiBGaWxlIG1vZGUgKi8KKwlfX3UxNglpX3VpZDsJCS8qIExvdyAxNiBiaXRzIG9mIE93bmVyIFVpZCAqLworCV9fdTMyCWlfc2l6ZTsJCS8qIFNpemUgaW4gYnl0ZXMgKi8KKwlfX3UzMglpX2F0aW1lOwkvKiBBY2Nlc3MgdGltZSAqLworCV9fdTMyCWlfY3RpbWU7CS8qIElub2RlIENoYW5nZSB0aW1lICovCisJX191MzIJaV9tdGltZTsJLyogTW9kaWZpY2F0aW9uIHRpbWUgKi8KKwlfX3UzMglpX2R0aW1lOwkvKiBEZWxldGlvbiBUaW1lICovCisJX191MTYJaV9naWQ7CQkvKiBMb3cgMTYgYml0cyBvZiBHcm91cCBJZCAqLworCV9fdTE2CWlfbGlua3NfY291bnQ7CS8qIExpbmtzIGNvdW50ICovCisJX191MzIJaV9ibG9ja3M7CS8qIEJsb2NrcyBjb3VudCAqLworCV9fdTMyCWlfZmxhZ3M7CS8qIEZpbGUgZmxhZ3MgKi8KKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQlfX3UzMglsX2lfdmVyc2lvbjsgLyogd2FzIGxfaV9yZXNlcnZlZDEgKi8KKwkJfSBsaW51eDE7CisJCXN0cnVjdCB7CisJCQlfX3UzMiAgaF9pX3RyYW5zbGF0b3I7CisJCX0gaHVyZDE7CisJfSBvc2QxOwkJCQkvKiBPUyBkZXBlbmRlbnQgMSAqLworCV9fdTMyCWlfYmxvY2tbRVhUMl9OX0JMT0NLU107LyogUG9pbnRlcnMgdG8gYmxvY2tzICovCisJX191MzIJaV9nZW5lcmF0aW9uOwkvKiBGaWxlIHZlcnNpb24gKGZvciBORlMpICovCisJX191MzIJaV9maWxlX2FjbDsJLyogRmlsZSBBQ0wgKi8KKwlfX3UzMglpX3NpemVfaGlnaDsJLyogRm9ybWVybHkgaV9kaXJfYWNsLCBkaXJlY3RvcnkgQUNMICovCisJX191MzIJaV9mYWRkcjsJLyogRnJhZ21lbnQgYWRkcmVzcyAqLworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCV9fdTE2CWxfaV9ibG9ja3NfaGk7CisJCQlfX3UxNglsX2lfZmlsZV9hY2xfaGlnaDsKKwkJCV9fdTE2CWxfaV91aWRfaGlnaDsJLyogdGhlc2UgMiBmaWVsZHMgICAgKi8KKwkJCV9fdTE2CWxfaV9naWRfaGlnaDsJLyogd2VyZSByZXNlcnZlZDJbMF0gKi8KKwkJCV9fdTE2CWxfaV9jaGVja3N1bV9sbzsgLyogY3JjMzJjKHV1aWQraW51bStpbm9kZSkgKi8KKwkJCV9fdTE2CWxfaV9yZXNlcnZlZDsKKwkJfSBsaW51eDI7CisJCXN0cnVjdCB7CisJCQlfX3U4CWhfaV9mcmFnOwkvKiBGcmFnbWVudCBudW1iZXIgKi8KKwkJCV9fdTgJaF9pX2ZzaXplOwkvKiBGcmFnbWVudCBzaXplICovCisJCQlfX3UxNgloX2lfbW9kZV9oaWdoOworCQkJX191MTYJaF9pX3VpZF9oaWdoOworCQkJX191MTYJaF9pX2dpZF9oaWdoOworCQkJX191MzIJaF9pX2F1dGhvcjsKKwkJfSBodXJkMjsKKwl9IG9zZDI7CQkJCS8qIE9TIGRlcGVuZGVudCAyICovCisJX191MTYJaV9leHRyYV9pc2l6ZTsKKwlfX3UxNglpX2NoZWNrc3VtX2hpOwkvKiBjcmMzMmModXVpZCtpbnVtK2lub2RlKSAqLworCV9fdTMyCWlfY3RpbWVfZXh0cmE7CS8qIGV4dHJhIENoYW5nZSB0aW1lIChuc2VjIDw8IDIgfCBlcG9jaCkgKi8KKwlfX3UzMglpX210aW1lX2V4dHJhOwkvKiBleHRyYSBNb2RpZmljYXRpb24gdGltZSAobnNlYyA8PCAyIHwgZXBvY2gpICovCisJX191MzIJaV9hdGltZV9leHRyYTsJLyogZXh0cmEgQWNjZXNzIHRpbWUgKG5zZWMgPDwgMiB8IGVwb2NoKSAqLworCV9fdTMyCWlfY3J0aW1lOwkvKiBGaWxlIGNyZWF0aW9uIHRpbWUgKi8KKwlfX3UzMglpX2NydGltZV9leHRyYTsJLyogZXh0cmEgRmlsZSBjcmVhdGlvbiB0aW1lIChuc2VjIDw8IDIgfCBlcG9jaCkqLworCV9fdTMyCWlfdmVyc2lvbl9oaTsJLyogaGlnaCAzMiBiaXRzIGZvciA2NC1iaXQgdmVyc2lvbiAqLworCV9fdTMyICAgaV9wcm9qaWQ7ICAgICAgIC8qIFByb2plY3QgSUQgKi8KK307CisKKyNkZWZpbmUgRVhUNF9JTk9ERV9DU1VNX0hJX0VYVFJBX0VORAlcCisJKG9mZnNldG9mKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlLCBpX2NoZWNrc3VtX2hpKSArIHNpemVvZihfX3UxNikgLSBcCisJIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkKKworI2RlZmluZSBFWFQ0X0VQT0NIX0JJVFMgMgorI2RlZmluZSBFWFQ0X0VQT0NIX01BU0sgKCgxIDw8IEVYVDRfRVBPQ0hfQklUUykgLSAxKQorCisjZGVmaW5lIGlfZGlyX2FjbAlpX3NpemVfaGlnaAorCisjZGVmaW5lIGlfY2hlY2tzdW1fbG8Jb3NkMi5saW51eDIubF9pX2NoZWNrc3VtX2xvCisKKyNkZWZpbmUgaW5vZGVfaW5jbHVkZXMoc2l6ZSwgZmllbGQpCQkJXAorICAgICAgIChzaXplID49IChzaXplb2YoKChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKTApLT5maWVsZCkgKyBcCisgICAgICAgICAgICAgICAgIG9mZnNldG9mKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlLCBmaWVsZCkpKQorCisjaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKyNkZWZpbmUgaV9yZXNlcnZlZDEJb3NkMS5saW51eDEubF9pX3Jlc2VydmVkMQorI2RlZmluZSBpX2ZyYWcJCW9zZDIubGludXgyLmxfaV9mcmFnCisjZGVmaW5lIGlfZnNpemUJCW9zZDIubGludXgyLmxfaV9mc2l6ZQorI2RlZmluZSBpX3VpZF9sb3cJaV91aWQKKyNkZWZpbmUgaV9naWRfbG93CWlfZ2lkCisjZGVmaW5lIGlfdWlkX2hpZ2gJb3NkMi5saW51eDIubF9pX3VpZF9oaWdoCisjZGVmaW5lIGlfZ2lkX2hpZ2gJb3NkMi5saW51eDIubF9pX2dpZF9oaWdoCisjZWxzZQorI2lmIGRlZmluZWQoX19HTlVfXykKKworI2RlZmluZSBpX3RyYW5zbGF0b3IJb3NkMS5odXJkMS5oX2lfdHJhbnNsYXRvcgorI2RlZmluZSBpX2ZyYWcJCW9zZDIuaHVyZDIuaF9pX2ZyYWc7CisjZGVmaW5lIGlfZnNpemUJCW9zZDIuaHVyZDIuaF9pX2ZzaXplOworI2RlZmluZSBpX3VpZF9oaWdoCW9zZDIuaHVyZDIuaF9pX3VpZF9oaWdoCisjZGVmaW5lIGlfZ2lkX2hpZ2gJb3NkMi5odXJkMi5oX2lfZ2lkX2hpZ2gKKyNkZWZpbmUgaV9hdXRob3IJb3NkMi5odXJkMi5oX2lfYXV0aG9yCisKKyNlbmRpZiAgLyogX19HTlVfXyAqLworI2VuZGlmCS8qIGRlZmluZWQoX19LRVJORUxfXykgfHwgZGVmaW5lZChfX2xpbnV4X18pICovCisKKyNkZWZpbmUgaW5vZGVfdWlkKGlub2RlKQkoKGlub2RlKS5pX3VpZCB8IChpbm9kZSkub3NkMi5saW51eDIubF9pX3VpZF9oaWdoIDw8IDE2KQorI2RlZmluZSBpbm9kZV9naWQoaW5vZGUpCSgoaW5vZGUpLmlfZ2lkIHwgKGlub2RlKS5vc2QyLmxpbnV4Mi5sX2lfZ2lkX2hpZ2ggPDwgMTYpCisjZGVmaW5lIGlub2RlX3Byb2ppZChpbm9kZSkJKChpbm9kZSkuaV9wcm9qaWQpCisjZGVmaW5lIGV4dDJmc19zZXRfaV91aWRfaGlnaChpbm9kZSx4KSAoKGlub2RlKS5vc2QyLmxpbnV4Mi5sX2lfdWlkX2hpZ2ggPSAoeCkpCisjZGVmaW5lIGV4dDJmc19zZXRfaV9naWRfaGlnaChpbm9kZSx4KSAoKGlub2RlKS5vc2QyLmxpbnV4Mi5sX2lfZ2lkX2hpZ2ggPSAoeCkpCisKK3N0YXRpYyBpbmxpbmUKK3N0cnVjdCBleHQyX2lub2RlICpFWFQyX0lOT0RFKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICpsYXJnZV9pbm9kZSkKK3sKKwlyZXR1cm4gKHN0cnVjdCBleHQyX2lub2RlICopIGxhcmdlX2lub2RlOworfQorCisvKgorICogRmlsZSBzeXN0ZW0gc3RhdGVzCisgKi8KKyNkZWZpbmUgRVhUMl9WQUxJRF9GUwkJCTB4MDAwMQkvKiBVbm1vdW50ZWQgY2xlYW5seSAqLworI2RlZmluZSBFWFQyX0VSUk9SX0ZTCQkJMHgwMDAyCS8qIEVycm9ycyBkZXRlY3RlZCAqLworI2RlZmluZSBFWFQzX09SUEhBTl9GUwkJCTB4MDAwNAkvKiBPcnBoYW5zIGJlaW5nIHJlY292ZXJlZCAqLworCisvKgorICogTWlzYy4gZmlsZXN5c3RlbSBmbGFncworICovCisjZGVmaW5lIEVYVDJfRkxBR1NfU0lHTkVEX0hBU0gJCTB4MDAwMSAgLyogU2lnbmVkIGRpcmhhc2ggaW4gdXNlICovCisjZGVmaW5lIEVYVDJfRkxBR1NfVU5TSUdORURfSEFTSAkweDAwMDIgIC8qIFVuc2lnbmVkIGRpcmhhc2ggaW4gdXNlICovCisjZGVmaW5lIEVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTCQkweDAwMDQJLyogT0sgZm9yIHVzZSBvbiBkZXZlbG9wbWVudCBjb2RlICovCisjZGVmaW5lIEVYVDJfRkxBR1NfSVNfU05BUFNIT1QJCTB4MDAxMAkvKiBUaGlzIGlzIGEgc25hcHNob3QgaW1hZ2UgKi8KKyNkZWZpbmUgRVhUMl9GTEFHU19GSVhfU05BUFNIT1QJCTB4MDAyMAkvKiBTbmFwc2hvdCBpbm9kZXMgY29ycnVwdGVkICovCisjZGVmaW5lIEVYVDJfRkxBR1NfRklYX0VYQ0xVREUJCTB4MDA0MAkvKiBFeGNsdWRlIGJpdG1hcHMgY29ycnVwdGVkICovCisKKy8qCisgKiBNb3VudCBmbGFncworICovCisjZGVmaW5lIEVYVDJfTU9VTlRfQ0hFQ0sJCTB4MDAwMQkvKiBEbyBtb3VudC10aW1lIGNoZWNrcyAqLworI2RlZmluZSBFWFQyX01PVU5UX0dSUElECQkweDAwMDQJLyogQ3JlYXRlIGZpbGVzIHdpdGggZGlyZWN0b3J5J3MgZ3JvdXAgKi8KKyNkZWZpbmUgRVhUMl9NT1VOVF9ERUJVRwkJMHgwMDA4CS8qIFNvbWUgZGVidWdnaW5nIG1lc3NhZ2VzICovCisjZGVmaW5lIEVYVDJfTU9VTlRfRVJST1JTX0NPTlQJCTB4MDAxMAkvKiBDb250aW51ZSBvbiBlcnJvcnMgKi8KKyNkZWZpbmUgRVhUMl9NT1VOVF9FUlJPUlNfUk8JCTB4MDAyMAkvKiBSZW1vdW50IGZzIHJvIG9uIGVycm9ycyAqLworI2RlZmluZSBFWFQyX01PVU5UX0VSUk9SU19QQU5JQwkJMHgwMDQwCS8qIFBhbmljIG9uIGVycm9ycyAqLworI2RlZmluZSBFWFQyX01PVU5UX01JTklYX0RGCQkweDAwODAJLyogTWltaWNzIHRoZSBNaW5peCBzdGF0ZnMgKi8KKyNkZWZpbmUgRVhUMl9NT1VOVF9OT19VSUQzMgkJMHgwMjAwICAvKiBEaXNhYmxlIDMyLWJpdCBVSURzICovCisKKyNkZWZpbmUgY2xlYXJfb3B0KG8sIG9wdCkJCW8gJj0gfkVYVDJfTU9VTlRfIyNvcHQKKyNkZWZpbmUgc2V0X29wdChvLCBvcHQpCQkJbyB8PSBFWFQyX01PVU5UXyMjb3B0CisjZGVmaW5lIHRlc3Rfb3B0KHNiLCBvcHQpCQkoRVhUMl9TQihzYiktPnNfbW91bnRfb3B0ICYgXAorCQkJCQkgRVhUMl9NT1VOVF8jI29wdCkKKy8qCisgKiBNYXhpbWFsIG1vdW50IGNvdW50cyBiZXR3ZWVuIHR3byBmaWxlc3lzdGVtIGNoZWNrcworICovCisjZGVmaW5lIEVYVDJfREZMX01BWF9NTlRfQ09VTlQJCTIwCS8qIEFsbG93IDIwIG1vdW50cyAqLworI2RlZmluZSBFWFQyX0RGTF9DSEVDS0lOVEVSVkFMCQkwCS8qIERvbid0IHVzZSBpbnRlcnZhbCBjaGVjayAqLworCisvKgorICogQmVoYXZpb3VyIHdoZW4gZGV0ZWN0aW5nIGVycm9ycworICovCisjZGVmaW5lIEVYVDJfRVJST1JTX0NPTlRJTlVFCQkxCS8qIENvbnRpbnVlIGV4ZWN1dGlvbiAqLworI2RlZmluZSBFWFQyX0VSUk9SU19STwkJCTIJLyogUmVtb3VudCBmcyByZWFkLW9ubHkgKi8KKyNkZWZpbmUgRVhUMl9FUlJPUlNfUEFOSUMJCTMJLyogUGFuaWMgKi8KKyNkZWZpbmUgRVhUMl9FUlJPUlNfREVGQVVMVAkJRVhUMl9FUlJPUlNfQ09OVElOVUUKKworI2lmIChfX0dOVUNfXyA+PSA0KQorI2RlZmluZSBleHQ0X29mZnNldG9mKFRZUEUsTUVNQkVSKSBfX2J1aWx0aW5fb2Zmc2V0b2YoVFlQRSxNRU1CRVIpCisjZWxzZQorI2RlZmluZSBleHQ0X29mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQorI2VuZGlmCisKKy8qIE1ldGFkYXRhIGNoZWNrc3VtIGFsZ29yaXRobXMgKi8KKyNkZWZpbmUgRVhUMl9DUkMzMkNfQ0hLU1VNCQkxCisKKy8qIEVuY3J5cHRpb24gYWxnb3JpdGhtcywga2V5IHNpemUgYW5kIGtleSByZWZlcmVuY2UgbGVuICovCisjZGVmaW5lIEVYVDRfRU5DUllQVElPTl9NT0RFX0lOVkFMSUQJCTAKKyNkZWZpbmUgRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9YVFMJMQorI2RlZmluZSBFWFQ0X0VOQ1JZUFRJT05fTU9ERV9BRVNfMjU2X0dDTQkyCisjZGVmaW5lIEVYVDRfRU5DUllQVElPTl9NT0RFX0FFU18yNTZfQ0JDCTMKKyNkZWZpbmUgRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9DVFMJNAorCisjZGVmaW5lIEVYVDRfQUVTXzI1Nl9YVFNfS0VZX1NJWkUJCTY0CisjZGVmaW5lIEVYVDRfQUVTXzI1Nl9HQ01fS0VZX1NJWkUJCTMyCisjZGVmaW5lIEVYVDRfQUVTXzI1Nl9DQkNfS0VZX1NJWkUJCTMyCisjZGVmaW5lIEVYVDRfQUVTXzI1Nl9DVFNfS0VZX1NJWkUJCTMyCisjZGVmaW5lIEVYVDRfTUFYX0tFWV9TSVpFCQkJNjQKKworI2RlZmluZSBFWFQ0X0tFWV9ERVNDUklQVE9SX1NJWkUJCTgKKyNkZWZpbmUgRVhUNF9DUllQVE9fQkxPQ0tfU0laRQkJCTE2CisKKy8qIFBhc3N3b3JkIGRlcml2YXRpb24gY29uc3RhbnRzICovCisjZGVmaW5lIEVYVDRfTUFYX1BBU1NQSFJBU0VfU0laRQkJMTAyNAorI2RlZmluZSBFWFQ0X01BWF9TQUxUX1NJWkUJCQkyNTYKKyNkZWZpbmUgRVhUNF9QQktERjJfSVRFUkFUSU9OUwkJCTB4RkZGRgorCisjZGVmaW5lIEVYVDJfTEFCRUxfTEVOCQkJCTE2CisKKy8qCisgKiBQb2xpY3kgcHJvdmlkZWQgdmlhIGFuIGlvY3RsIG9uIHRoZSB0b3Btb3N0IGRpcmVjdG9yeS4gVGhpcworICogc3RydWN0dXJlIGlzIGFsc28gaW4gdGhlIGtlcm5lbC4KKyAqLworc3RydWN0IGV4dDRfZW5jcnlwdGlvbl9wb2xpY3kgeworICBjaGFyIHZlcnNpb247CisgIGNoYXIgY29udGVudHNfZW5jcnlwdGlvbl9tb2RlOworICBjaGFyIGZpbGVuYW1lc19lbmNyeXB0aW9uX21vZGU7CisgIGNoYXIgZmxhZ3M7CisgIGNoYXIgbWFzdGVyX2tleV9kZXNjcmlwdG9yW0VYVDRfS0VZX0RFU0NSSVBUT1JfU0laRV07Cit9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworc3RydWN0IGV4dDRfZW5jcnlwdGlvbl9rZXkgeworICAgICAgICBfX3UzMiBtb2RlOworICAgICAgICBjaGFyIHJhd1tFWFQ0X01BWF9LRVlfU0laRV07CisgICAgICAgIF9fdTMyIHNpemU7Cit9IF9fYXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKKworLyoKKyAqIFN0cnVjdHVyZSBvZiB0aGUgc3VwZXIgYmxvY2sKKyAqLworc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgeworCV9fdTMyCXNfaW5vZGVzX2NvdW50OwkJLyogSW5vZGVzIGNvdW50ICovCisJX191MzIJc19ibG9ja3NfY291bnQ7CQkvKiBCbG9ja3MgY291bnQgKi8KKwlfX3UzMglzX3JfYmxvY2tzX2NvdW50OwkvKiBSZXNlcnZlZCBibG9ja3MgY291bnQgKi8KKwlfX3UzMglzX2ZyZWVfYmxvY2tzX2NvdW50OwkvKiBGcmVlIGJsb2NrcyBjb3VudCAqLworCV9fdTMyCXNfZnJlZV9pbm9kZXNfY291bnQ7CS8qIEZyZWUgaW5vZGVzIGNvdW50ICovCisJX191MzIJc19maXJzdF9kYXRhX2Jsb2NrOwkvKiBGaXJzdCBEYXRhIEJsb2NrICovCisJX191MzIJc19sb2dfYmxvY2tfc2l6ZTsJLyogQmxvY2sgc2l6ZSAqLworCV9fdTMyCXNfbG9nX2NsdXN0ZXJfc2l6ZTsJLyogQWxsb2NhdGlvbiBjbHVzdGVyIHNpemUgKi8KKwlfX3UzMglzX2Jsb2Nrc19wZXJfZ3JvdXA7CS8qICMgQmxvY2tzIHBlciBncm91cCAqLworCV9fdTMyCXNfY2x1c3RlcnNfcGVyX2dyb3VwOwkvKiAjIEZyYWdtZW50cyBwZXIgZ3JvdXAgKi8KKwlfX3UzMglzX2lub2Rlc19wZXJfZ3JvdXA7CS8qICMgSW5vZGVzIHBlciBncm91cCAqLworCV9fdTMyCXNfbXRpbWU7CQkvKiBNb3VudCB0aW1lICovCisJX191MzIJc193dGltZTsJCS8qIFdyaXRlIHRpbWUgKi8KKwlfX3UxNglzX21udF9jb3VudDsJCS8qIE1vdW50IGNvdW50ICovCisJX19zMTYJc19tYXhfbW50X2NvdW50OwkvKiBNYXhpbWFsIG1vdW50IGNvdW50ICovCisJX191MTYJc19tYWdpYzsJCS8qIE1hZ2ljIHNpZ25hdHVyZSAqLworCV9fdTE2CXNfc3RhdGU7CQkvKiBGaWxlIHN5c3RlbSBzdGF0ZSAqLworCV9fdTE2CXNfZXJyb3JzOwkJLyogQmVoYXZpb3VyIHdoZW4gZGV0ZWN0aW5nIGVycm9ycyAqLworCV9fdTE2CXNfbWlub3JfcmV2X2xldmVsOwkvKiBtaW5vciByZXZpc2lvbiBsZXZlbCAqLworCV9fdTMyCXNfbGFzdGNoZWNrOwkJLyogdGltZSBvZiBsYXN0IGNoZWNrICovCisJX191MzIJc19jaGVja2ludGVydmFsOwkvKiBtYXguIHRpbWUgYmV0d2VlbiBjaGVja3MgKi8KKwlfX3UzMglzX2NyZWF0b3Jfb3M7CQkvKiBPUyAqLworCV9fdTMyCXNfcmV2X2xldmVsOwkJLyogUmV2aXNpb24gbGV2ZWwgKi8KKwlfX3UxNglzX2RlZl9yZXN1aWQ7CQkvKiBEZWZhdWx0IHVpZCBmb3IgcmVzZXJ2ZWQgYmxvY2tzICovCisJX191MTYJc19kZWZfcmVzZ2lkOwkJLyogRGVmYXVsdCBnaWQgZm9yIHJlc2VydmVkIGJsb2NrcyAqLworCS8qCisJICogVGhlc2UgZmllbGRzIGFyZSBmb3IgRVhUMl9EWU5BTUlDX1JFViBzdXBlcmJsb2NrcyBvbmx5LgorCSAqCisJICogTm90ZTogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgY29tcGF0aWJsZSBmZWF0dXJlIHNldCBhbmQKKwkgKiB0aGUgaW5jb21wYXRpYmxlIGZlYXR1cmUgc2V0IGlzIHRoYXQgaWYgdGhlcmUgaXMgYSBiaXQgc2V0CisJICogaW4gdGhlIGluY29tcGF0aWJsZSBmZWF0dXJlIHNldCB0aGF0IHRoZSBrZXJuZWwgZG9lc24ndAorCSAqIGtub3cgYWJvdXQsIGl0IHNob3VsZCByZWZ1c2UgdG8gbW91bnQgdGhlIGZpbGVzeXN0ZW0uCisJICoKKwkgKiBlMmZzY2sncyByZXF1aXJlbWVudHMgYXJlIG1vcmUgc3RyaWN0OyBpZiBpdCBkb2Vzbid0IGtub3cKKwkgKiBhYm91dCBhIGZlYXR1cmUgaW4gZWl0aGVyIHRoZSBjb21wYXRpYmxlIG9yIGluY29tcGF0aWJsZQorCSAqIGZlYXR1cmUgc2V0LCBpdCBtdXN0IGFib3J0IGFuZCBub3QgdHJ5IHRvIG1lZGRsZSB3aXRoCisJICogdGhpbmdzIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZC4uLgorCSAqLworCV9fdTMyCXNfZmlyc3RfaW5vOwkJLyogRmlyc3Qgbm9uLXJlc2VydmVkIGlub2RlICovCisJX191MTYgICBzX2lub2RlX3NpemU7CQkvKiBzaXplIG9mIGlub2RlIHN0cnVjdHVyZSAqLworCV9fdTE2CXNfYmxvY2tfZ3JvdXBfbnI7CS8qIGJsb2NrIGdyb3VwICMgb2YgdGhpcyBzdXBlcmJsb2NrICovCisJX191MzIJc19mZWF0dXJlX2NvbXBhdDsJLyogY29tcGF0aWJsZSBmZWF0dXJlIHNldCAqLworCV9fdTMyCXNfZmVhdHVyZV9pbmNvbXBhdDsJLyogaW5jb21wYXRpYmxlIGZlYXR1cmUgc2V0ICovCisJX191MzIJc19mZWF0dXJlX3JvX2NvbXBhdDsJLyogcmVhZG9ubHktY29tcGF0aWJsZSBmZWF0dXJlIHNldCAqLworCV9fdTgJc191dWlkWzE2XTsJCS8qIDEyOC1iaXQgdXVpZCBmb3Igdm9sdW1lICovCisJY2hhcglzX3ZvbHVtZV9uYW1lW0VYVDJfTEFCRUxfTEVOXTsJLyogdm9sdW1lIG5hbWUgKi8KKwljaGFyCXNfbGFzdF9tb3VudGVkWzY0XTsJLyogZGlyZWN0b3J5IHdoZXJlIGxhc3QgbW91bnRlZCAqLworCV9fdTMyCXNfYWxnb3JpdGhtX3VzYWdlX2JpdG1hcDsgLyogRm9yIGNvbXByZXNzaW9uICovCisJLyoKKwkgKiBQZXJmb3JtYW5jZSBoaW50cy4gIERpcmVjdG9yeSBwcmVhbGxvY2F0aW9uIHNob3VsZCBvbmx5CisJICogaGFwcGVuIGlmIHRoZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9QUkVBTExPQyBmbGFnIGlzIG9uLgorCSAqLworCV9fdTgJc19wcmVhbGxvY19ibG9ja3M7CS8qIE5yIG9mIGJsb2NrcyB0byB0cnkgdG8gcHJlYWxsb2NhdGUqLworCV9fdTgJc19wcmVhbGxvY19kaXJfYmxvY2tzOwkvKiBOciB0byBwcmVhbGxvY2F0ZSBmb3IgZGlycyAqLworCV9fdTE2CXNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrczsJLyogUGVyIGdyb3VwIHRhYmxlIGZvciBvbmxpbmUgZ3Jvd3RoICovCisJLyoKKwkgKiBKb3VybmFsaW5nIHN1cHBvcnQgdmFsaWQgaWYgRVhUMl9GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCBzZXQuCisJICovCisJX191OAlzX2pvdXJuYWxfdXVpZFsxNl07CS8qIHV1aWQgb2Ygam91cm5hbCBzdXBlcmJsb2NrICovCisJX191MzIJc19qb3VybmFsX2ludW07CQkvKiBpbm9kZSBudW1iZXIgb2Ygam91cm5hbCBmaWxlICovCisJX191MzIJc19qb3VybmFsX2RldjsJCS8qIGRldmljZSBudW1iZXIgb2Ygam91cm5hbCBmaWxlICovCisJX191MzIJc19sYXN0X29ycGhhbjsJCS8qIHN0YXJ0IG9mIGxpc3Qgb2YgaW5vZGVzIHRvIGRlbGV0ZSAqLworCV9fdTMyCXNfaGFzaF9zZWVkWzRdOwkJLyogSFRSRUUgaGFzaCBzZWVkICovCisJX191OAlzX2RlZl9oYXNoX3ZlcnNpb247CS8qIERlZmF1bHQgaGFzaCB2ZXJzaW9uIHRvIHVzZSAqLworCV9fdTgJc19qbmxfYmFja3VwX3R5cGU7IAkvKiBEZWZhdWx0IHR5cGUgb2Ygam91cm5hbCBiYWNrdXAgKi8KKwlfX3UxNglzX2Rlc2Nfc2l6ZTsJCS8qIEdyb3VwIGRlc2MuIHNpemU6IElOQ09NUEFUXzY0QklUICovCisJX191MzIJc19kZWZhdWx0X21vdW50X29wdHM7CisJX191MzIJc19maXJzdF9tZXRhX2JnOwkvKiBGaXJzdCBtZXRhYmxvY2sgZ3JvdXAgKi8KKwlfX3UzMglzX21rZnNfdGltZTsJCS8qIFdoZW4gdGhlIGZpbGVzeXN0ZW0gd2FzIGNyZWF0ZWQgKi8KKwlfX3UzMglzX2pubF9ibG9ja3NbMTddOyAJLyogQmFja3VwIG9mIHRoZSBqb3VybmFsIGlub2RlICovCisJX191MzIJc19ibG9ja3NfY291bnRfaGk7CS8qIEJsb2NrcyBjb3VudCBoaWdoIDMyYml0cyAqLworCV9fdTMyCXNfcl9ibG9ja3NfY291bnRfaGk7CS8qIFJlc2VydmVkIGJsb2NrcyBjb3VudCBoaWdoIDMyIGJpdHMqLworCV9fdTMyCXNfZnJlZV9ibG9ja3NfaGk7IAkvKiBGcmVlIGJsb2NrcyBjb3VudCAqLworCV9fdTE2CXNfbWluX2V4dHJhX2lzaXplOwkvKiBBbGwgaW5vZGVzIGhhdmUgYXQgbGVhc3QgIyBieXRlcyAqLworCV9fdTE2CXNfd2FudF9leHRyYV9pc2l6ZTsgCS8qIE5ldyBpbm9kZXMgc2hvdWxkIHJlc2VydmUgIyBieXRlcyAqLworCV9fdTMyCXNfZmxhZ3M7CQkvKiBNaXNjZWxsYW5lb3VzIGZsYWdzICovCisJX191MTYgICBzX3JhaWRfc3RyaWRlOwkJLyogUkFJRCBzdHJpZGUgKi8KKwlfX3UxNiAgIHNfbW1wX3VwZGF0ZV9pbnRlcnZhbDsgIC8qICMgc2Vjb25kcyB0byB3YWl0IGluIE1NUCBjaGVja2luZyAqLworCV9fdTY0ICAgc19tbXBfYmxvY2s7ICAgICAgICAgICAgLyogQmxvY2sgZm9yIG11bHRpLW1vdW50IHByb3RlY3Rpb24gKi8KKwlfX3UzMiAgIHNfcmFpZF9zdHJpcGVfd2lkdGg7ICAgIC8qIGJsb2NrcyBvbiBhbGwgZGF0YSBkaXNrcyAoTipzdHJpZGUpKi8KKwlfX3U4CXNfbG9nX2dyb3Vwc19wZXJfZmxleDsJLyogRkxFWF9CRyBncm91cCBzaXplICovCisJX191OCAgICBzX2NoZWNrc3VtX3R5cGU7CS8qIG1ldGFkYXRhIGNoZWNrc3VtIGFsZ29yaXRobSAqLworCV9fdTgJc19lbmNyeXB0aW9uX2xldmVsOwkvKiB2ZXJzaW9uaW5nIGxldmVsIGZvciBlbmNyeXB0aW9uICovCisJX191OAlzX3Jlc2VydmVkX3BhZDsJCS8qIFBhZGRpbmcgdG8gbmV4dCAzMmJpdHMgKi8KKwlfX3U2NAlzX2tieXRlc193cml0dGVuOwkvKiBuciBvZiBsaWZldGltZSBraWxvYnl0ZXMgd3JpdHRlbiAqLworCV9fdTMyCXNfc25hcHNob3RfaW51bTsJLyogSW5vZGUgbnVtYmVyIG9mIGFjdGl2ZSBzbmFwc2hvdCAqLworCV9fdTMyCXNfc25hcHNob3RfaWQ7CQkvKiBzZXF1ZW50aWFsIElEIG9mIGFjdGl2ZSBzbmFwc2hvdCAqLworCV9fdTY0CXNfc25hcHNob3Rfcl9ibG9ja3NfY291bnQ7IC8qIHJlc2VydmVkIGJsb2NrcyBmb3IgYWN0aXZlCisJCQkJCSAgICAgIHNuYXBzaG90J3MgZnV0dXJlIHVzZSAqLworCV9fdTMyCXNfc25hcHNob3RfbGlzdDsJLyogaW5vZGUgbnVtYmVyIG9mIHRoZSBoZWFkIG9mIHRoZSBvbi1kaXNrIHNuYXBzaG90IGxpc3QgKi8KKyNkZWZpbmUgRVhUNF9TX0VSUl9TVEFSVCBleHQ0X29mZnNldG9mKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrLCBzX2Vycm9yX2NvdW50KQorCV9fdTMyCXNfZXJyb3JfY291bnQ7CQkvKiBudW1iZXIgb2YgZnMgZXJyb3JzICovCisJX191MzIJc19maXJzdF9lcnJvcl90aW1lOwkvKiBmaXJzdCB0aW1lIGFuIGVycm9yIGhhcHBlbmVkICovCisJX191MzIJc19maXJzdF9lcnJvcl9pbm87CS8qIGlub2RlIGludm9sdmVkIGluIGZpcnN0IGVycm9yICovCisJX191NjQJc19maXJzdF9lcnJvcl9ibG9jazsJLyogYmxvY2sgaW52b2x2ZWQgb2YgZmlyc3QgZXJyb3IgKi8KKwlfX3U4CXNfZmlyc3RfZXJyb3JfZnVuY1szMl07CS8qIGZ1bmN0aW9uIHdoZXJlIHRoZSBlcnJvciBoYXBwZW5lZCAqLworCV9fdTMyCXNfZmlyc3RfZXJyb3JfbGluZTsJLyogbGluZSBudW1iZXIgd2hlcmUgZXJyb3IgaGFwcGVuZWQgKi8KKwlfX3UzMglzX2xhc3RfZXJyb3JfdGltZTsJLyogbW9zdCByZWNlbnQgdGltZSBvZiBhbiBlcnJvciAqLworCV9fdTMyCXNfbGFzdF9lcnJvcl9pbm87CS8qIGlub2RlIGludm9sdmVkIGluIGxhc3QgZXJyb3IgKi8KKwlfX3UzMglzX2xhc3RfZXJyb3JfbGluZTsJLyogbGluZSBudW1iZXIgd2hlcmUgZXJyb3IgaGFwcGVuZWQgKi8KKwlfX3U2NAlzX2xhc3RfZXJyb3JfYmxvY2s7CS8qIGJsb2NrIGludm9sdmVkIG9mIGxhc3QgZXJyb3IgKi8KKwlfX3U4CXNfbGFzdF9lcnJvcl9mdW5jWzMyXTsJLyogZnVuY3Rpb24gd2hlcmUgdGhlIGVycm9yIGhhcHBlbmVkICovCisjZGVmaW5lIEVYVDRfU19FUlJfRU5EIGV4dDRfb2Zmc2V0b2Yoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2ssIHNfbW91bnRfb3B0cykKKwlfX3U4CXNfbW91bnRfb3B0c1s2NF07CisJX191MzIJc191c3JfcXVvdGFfaW51bTsJLyogaW5vZGUgbnVtYmVyIG9mIHVzZXIgcXVvdGEgZmlsZSAqLworCV9fdTMyCXNfZ3JwX3F1b3RhX2ludW07CS8qIGlub2RlIG51bWJlciBvZiBncm91cCBxdW90YSBmaWxlICovCisJX191MzIJc19vdmVyaGVhZF9ibG9ja3M7CS8qIG92ZXJoZWFkIGJsb2Nrcy9jbHVzdGVycyBpbiBmcyAqLworCV9fdTMyCXNfYmFja3VwX2Jnc1syXTsJLyogSWYgc3BhcnNlX3N1cGVyMiBlbmFibGVkICovCisJX191OAlzX2VuY3J5cHRfYWxnb3NbNF07CS8qIEVuY3J5cHRpb24gYWxnb3JpdGhtcyBpbiB1c2UgICovCisJX191OAlzX2VuY3J5cHRfcHdfc2FsdFsxNl07CS8qIFNhbHQgdXNlZCBmb3Igc3RyaW5nMmtleSBhbGdvcml0aG0gKi8KKwlfX2xlMzIJc19scGZfaW5vOwkJLyogTG9jYXRpb24gb2YgdGhlIGxvc3QrZm91bmQgaW5vZGUgKi8KKwlfX2xlMzIgIHNfcHJqX3F1b3RhX2ludW07CS8qIGlub2RlIGZvciB0cmFja2luZyBwcm9qZWN0IHF1b3RhICovCisJX19sZTMyCXNfY2hlY2tzdW1fc2VlZDsJLyogY3JjMzJjKG9yaWdfdXVpZCkgaWYgY3N1bV9zZWVkIHNldCAqLworCV9fbGUzMglzX3Jlc2VydmVkWzk4XTsJCS8qIFBhZGRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2sgKi8KKwlfX3UzMglzX2NoZWNrc3VtOwkJLyogY3JjMzJjKHN1cGVyYmxvY2spICovCit9OworCisjZGVmaW5lIEVYVDRfU19FUlJfTEVOIChFWFQ0X1NfRVJSX0VORCAtIEVYVDRfU19FUlJfU1RBUlQpCisKKy8qCisgKiBDb2RlcyBmb3Igb3BlcmF0aW5nIHN5c3RlbXMKKyAqLworI2RlZmluZSBFWFQyX09TX0xJTlVYCQkwCisjZGVmaW5lIEVYVDJfT1NfSFVSRAkJMQorI2RlZmluZSBFWFQyX09CU09fT1NfTUFTSVgJMgorI2RlZmluZSBFWFQyX09TX0ZSRUVCU0QJCTMKKyNkZWZpbmUgRVhUMl9PU19MSVRFUwkJNAorCisvKgorICogUmV2aXNpb24gbGV2ZWxzCisgKi8KKyNkZWZpbmUgRVhUMl9HT09EX09MRF9SRVYJMAkvKiBUaGUgZ29vZCBvbGQgKG9yaWdpbmFsKSBmb3JtYXQgKi8KKyNkZWZpbmUgRVhUMl9EWU5BTUlDX1JFVgkxCS8qIFYyIGZvcm1hdCB3LyBkeW5hbWljIGlub2RlIHNpemVzICovCisKKyNkZWZpbmUgRVhUMl9DVVJSRU5UX1JFVglFWFQyX0dPT0RfT0xEX1JFVgorI2RlZmluZSBFWFQyX01BWF9TVVBQX1JFVglFWFQyX0RZTkFNSUNfUkVWCisKKyNkZWZpbmUgRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFIDEyOAorCisvKgorICogSm91cm5hbCBpbm9kZSBiYWNrdXAgdHlwZXMKKyAqLworI2RlZmluZSBFWFQzX0pOTF9CQUNLVVBfQkxPQ0tTCTEKKworLyoKKyAqIEZlYXR1cmUgc2V0IGRlZmluaXRpb25zCisgKi8KKworI2RlZmluZSBFWFQyX0hBU19DT01QQVRfRkVBVFVSRShzYixtYXNrKQkJCVwKKwkoIEVYVDJfU0Ioc2IpLT5zX2ZlYXR1cmVfY29tcGF0ICYgKG1hc2spICkKKyNkZWZpbmUgRVhUMl9IQVNfUk9fQ09NUEFUX0ZFQVRVUkUoc2IsbWFzaykJCQlcCisJKCBFWFQyX1NCKHNiKS0+c19mZWF0dXJlX3JvX2NvbXBhdCAmIChtYXNrKSApCisjZGVmaW5lIEVYVDJfSEFTX0lOQ09NUEFUX0ZFQVRVUkUoc2IsbWFzaykJCQlcCisJKCBFWFQyX1NCKHNiKS0+c19mZWF0dXJlX2luY29tcGF0ICYgKG1hc2spICkKKworI2RlZmluZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9QUkVBTExPQwkweDAwMDEKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0NPTVBBVF9JTUFHSUNfSU5PREVTCTB4MDAwMgorI2RlZmluZSBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMCQkweDAwMDQKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0NPTVBBVF9FWFRfQVRUUgkJMHgwMDA4CisjZGVmaW5lIEVYVDJfRkVBVFVSRV9DT01QQVRfUkVTSVpFX0lOT0RFCTB4MDAxMAorI2RlZmluZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9JTkRFWAkJMHgwMDIwCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9DT01QQVRfTEFaWV9CRwkJMHgwMDQwCisvKiAjZGVmaW5lIEVYVDJfRkVBVFVSRV9DT01QQVRfRVhDTFVERV9JTk9ERQkweDAwODAgbm90IHVzZWQsIGxlZ2FjeSAqLworI2RlZmluZSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0VYQ0xVREVfQklUTUFQCTB4MDEwMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfQ09NUEFUX1NQQVJTRV9TVVBFUjIJMHgwMjAwCisKKworI2RlZmluZSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX1NQQVJTRV9TVVBFUgkweDAwMDEKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFCTB4MDAwMgorLyogI2RlZmluZSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX0JUUkVFX0RJUgkweDAwMDQgbm90IHVzZWQgKi8KKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUJMHgwMDA4CisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0JCTB4MDAxMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0RJUl9OTElOSwkweDAwMjAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9FWFRSQV9JU0laRQkweDAwNDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IQVNfU05BUFNIT1QJMHgwMDgwCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUVVPVEEJCTB4MDEwMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0JJR0FMTE9DCQkweDAyMDAKKy8qCisgKiBNRVRBREFUQV9DU1VNIGltcGxpZXMgR0RUX0NTVU0uICBXaGVuIE1FVEFEQVRBX0NTVU0gaXMgc2V0LCBncm91cAorICogZGVzY3JpcHRvciBjaGVja3N1bXMgdXNlIHRoZSBzYW1lIGFsZ29yaXRobSBhcyBhbGwgb3RoZXIgZGF0YQorICogc3RydWN0dXJlcycgY2hlY2tzdW1zLgorICovCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfTUVUQURBVEFfQ1NVTQkweDA0MDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9SRVBMSUNBCQkweDA4MDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9SRUFET05MWQkJMHgxMDAwCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVAkJMHgyMDAwIC8qIFByb2plY3QgcXVvdGEgKi8KKworCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9DT01QUkVTU0lPTgkweDAwMDEKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0lOQ09NUEFUX0ZJTEVUWVBFCQkweDAwMDIKKyNkZWZpbmUgRVhUM19GRUFUVVJFX0lOQ09NUEFUX1JFQ09WRVIJCTB4MDAwNCAvKiBOZWVkcyByZWNvdmVyeSAqLworI2RlZmluZSBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfSk9VUk5BTF9ERVYJMHgwMDA4IC8qIEpvdXJuYWwgZGV2aWNlICovCisjZGVmaW5lIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9NRVRBX0JHCQkweDAwMTAKKyNkZWZpbmUgRVhUM19GRUFUVVJFX0lOQ09NUEFUX0VYVEVOVFMJCTB4MDA0MAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVQJCTB4MDA4MAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QCQkweDAxMDAKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZMRVhfQkcJCTB4MDIwMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRUFfSU5PREUJCTB4MDQwMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRElSREFUQQkJMHgxMDAwCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1NFRUQJCTB4MjAwMAorI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTEFSR0VESVIJCTB4NDAwMCAvKiA+MkdCIG9yIDMtbHZsIGh0cmVlICovCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9JTkxJTkVfREFUQQkweDgwMDAgLyogZGF0YSBpbiBpbm9kZSAqLworI2RlZmluZSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRU5DUllQVAkJMHgxMDAwMAorCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9DT01QQVRfRlVOQ1MobmFtZSwgdmVyLCBmbGFnbmFtZSkgXAorc3RhdGljIGlubGluZSBpbnQgZXh0MmZzX2hhc19mZWF0dXJlXyMjbmFtZShzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpIFwKK3sgXAorCXJldHVybiAoKEVYVDJfU0Ioc2IpLT5zX2ZlYXR1cmVfY29tcGF0ICYgXAorCQkgRVhUIyN2ZXIjI19GRUFUVVJFX0NPTVBBVF8jI2ZsYWduYW1lKSAhPSAwKTsgXAorfSBcCitzdGF0aWMgaW5saW5lIHZvaWQgZXh0MmZzX3NldF9mZWF0dXJlXyMjbmFtZShzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpIFwKK3sgXAorCUVYVDJfU0Ioc2IpLT5zX2ZlYXR1cmVfY29tcGF0IHw9IFwKKwkJRVhUIyN2ZXIjI19GRUFUVVJFX0NPTVBBVF8jI2ZsYWduYW1lOyBcCit9IFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBleHQyZnNfY2xlYXJfZmVhdHVyZV8jI25hbWUoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKSBcCit7IFwKKwlFWFQyX1NCKHNiKS0+c19mZWF0dXJlX2NvbXBhdCAmPSBcCisJCX5FWFQjI3ZlciMjX0ZFQVRVUkVfQ09NUEFUXyMjZmxhZ25hbWU7IFwKK30KKworI2RlZmluZSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKG5hbWUsIHZlciwgZmxhZ25hbWUpIFwKK3N0YXRpYyBpbmxpbmUgaW50IGV4dDJmc19oYXNfZmVhdHVyZV8jI25hbWUoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKSBcCit7IFwKKwlyZXR1cm4gKChFWFQyX1NCKHNiKS0+c19mZWF0dXJlX3JvX2NvbXBhdCAmIFwKKwkJIEVYVCMjdmVyIyNfRkVBVFVSRV9ST19DT01QQVRfIyNmbGFnbmFtZSkgIT0gMCk7IFwKK30gXAorc3RhdGljIGlubGluZSB2b2lkIGV4dDJmc19zZXRfZmVhdHVyZV8jI25hbWUoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKSBcCit7IFwKKwlFWFQyX1NCKHNiKS0+c19mZWF0dXJlX3JvX2NvbXBhdCB8PSBcCisJCUVYVCMjdmVyIyNfRkVBVFVSRV9ST19DT01QQVRfIyNmbGFnbmFtZTsgXAorfSBcCitzdGF0aWMgaW5saW5lIHZvaWQgZXh0MmZzX2NsZWFyX2ZlYXR1cmVfIyNuYW1lKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYikgXAoreyBcCisJRVhUMl9TQihzYiktPnNfZmVhdHVyZV9yb19jb21wYXQgJj0gXAorCQl+RVhUIyN2ZXIjI19GRUFUVVJFX1JPX0NPTVBBVF8jI2ZsYWduYW1lOyBcCit9CisKKyNkZWZpbmUgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZVTkNTKG5hbWUsIHZlciwgZmxhZ25hbWUpIFwKK3N0YXRpYyBpbmxpbmUgaW50IGV4dDJmc19oYXNfZmVhdHVyZV8jI25hbWUoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKSBcCit7IFwKKwlyZXR1cm4gKChFWFQyX1NCKHNiKS0+c19mZWF0dXJlX2luY29tcGF0ICYgXAorCQkgRVhUIyN2ZXIjI19GRUFUVVJFX0lOQ09NUEFUXyMjZmxhZ25hbWUpICE9IDApOyBcCit9IFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBleHQyZnNfc2V0X2ZlYXR1cmVfIyNuYW1lKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYikgXAoreyBcCisJRVhUMl9TQihzYiktPnNfZmVhdHVyZV9pbmNvbXBhdCB8PSBcCisJCUVYVCMjdmVyIyNfRkVBVFVSRV9JTkNPTVBBVF8jI2ZsYWduYW1lOyBcCit9IFwKK3N0YXRpYyBpbmxpbmUgdm9pZCBleHQyZnNfY2xlYXJfZmVhdHVyZV8jI25hbWUoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKSBcCit7IFwKKwlFWFQyX1NCKHNiKS0+c19mZWF0dXJlX2luY29tcGF0ICY9IFwKKwkJfkVYVCMjdmVyIyNfRkVBVFVSRV9JTkNPTVBBVF8jI2ZsYWduYW1lOyBcCit9CisKK0VYVDRfRkVBVFVSRV9DT01QQVRfRlVOQ1MoZGlyX3ByZWFsbG9jLAkJMiwgRElSX1BSRUFMTE9DKQorRVhUNF9GRUFUVVJFX0NPTVBBVF9GVU5DUyhpbWFnaWNfaW5vZGVzLAkyLCBJTUFHSUNfSU5PREVTKQorRVhUNF9GRUFUVVJFX0NPTVBBVF9GVU5DUyhqb3VybmFsLAkJMywgSEFTX0pPVVJOQUwpCitFWFQ0X0ZFQVRVUkVfQ09NUEFUX0ZVTkNTKHhhdHRyLAkJMiwgRVhUX0FUVFIpCitFWFQ0X0ZFQVRVUkVfQ09NUEFUX0ZVTkNTKHJlc2l6ZV9pbm9kZSwJCTIsIFJFU0laRV9JTk9ERSkKK0VYVDRfRkVBVFVSRV9DT01QQVRfRlVOQ1MoZGlyX2luZGV4LAkJMiwgRElSX0lOREVYKQorRVhUNF9GRUFUVVJFX0NPTVBBVF9GVU5DUyhsYXp5X2JnLAkJMiwgTEFaWV9CRykKK0VYVDRfRkVBVFVSRV9DT01QQVRfRlVOQ1MoZXhjbHVkZV9iaXRtYXAsCTIsIEVYQ0xVREVfQklUTUFQKQorRVhUNF9GRUFUVVJFX0NPTVBBVF9GVU5DUyhzcGFyc2Vfc3VwZXIyLAk0LCBTUEFSU0VfU1VQRVIyKQorCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKHNwYXJzZV9zdXBlciwJMiwgU1BBUlNFX1NVUEVSKQorRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9GVU5DUyhsYXJnZV9maWxlLAkyLCBMQVJHRV9GSUxFKQorRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9GVU5DUyhodWdlX2ZpbGUsCQk0LCBIVUdFX0ZJTEUpCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKGdkdF9jc3VtLAkJNCwgR0RUX0NTVU0pCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKGRpcl9ubGluaywJCTQsIERJUl9OTElOSykKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MoZXh0cmFfaXNpemUsCTQsIEVYVFJBX0lTSVpFKQorRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9GVU5DUyhoYXNfc25hcHNob3QsCTQsIEhBU19TTkFQU0hPVCkKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MocXVvdGEsCQk0LCBRVU9UQSkKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MoYmlnYWxsb2MsCQk0LCBCSUdBTExPQykKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MobWV0YWRhdGFfY3N1bSwJNCwgTUVUQURBVEFfQ1NVTSkKK0VYVDRfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MocmVwbGljYSwJCTQsIFJFUExJQ0EpCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKHJlYWRvbmx5LAkJNCwgUkVBRE9OTFkpCitFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKHByb2plY3QsCQk0LCBQUk9KRUNUKQorCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoY29tcHJlc3Npb24sCTIsIENPTVBSRVNTSU9OKQorRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZVTkNTKGZpbGV0eXBlLAkJMiwgRklMRVRZUEUpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1Moam91cm5hbF9uZWVkc19yZWNvdmVyeSwJMywgUkVDT1ZFUikKK0VYVDRfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhqb3VybmFsX2RldiwJMywgSk9VUk5BTF9ERVYpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MobWV0YV9iZywJCTIsIE1FVEFfQkcpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZXh0ZW50cywJCTMsIEVYVEVOVFMpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoNjRiaXQsCQk0LCA2NEJJVCkKK0VYVDRfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhtbXAsCQk0LCBNTVApCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZmxleF9iZywJCTQsIEZMRVhfQkcpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZWFfaW5vZGUsCQk0LCBFQV9JTk9ERSkKK0VYVDRfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhkaXJkYXRhLAkJNCwgRElSREFUQSkKK0VYVDRfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhjc3VtX3NlZWQsCQk0LCBDU1VNX1NFRUQpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MobGFyZ2VkaXIsCQk0LCBMQVJHRURJUikKK0VYVDRfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhpbmxpbmVfZGF0YSwJNCwgSU5MSU5FX0RBVEEpCitFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoZW5jcnlwdCwJCTQsIEVOQ1JZUFQpCisKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0NPTVBBVF9TVVBQCTAKKyNkZWZpbmUgRVhUMl9GRUFUVVJFX0lOQ09NUEFUX1NVUFAgICAgKEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9GSUxFVFlQRXwgXAorCQkJCSAgICAgICBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QKQorI2RlZmluZSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX1NVUFAJKEVYVDJfRkVBVFVSRV9ST19DT01QQVRfU1BBUlNFX1NVUEVSfCBcCisJCQkJCSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX0xBUkdFX0ZJTEV8IFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LfCBcCisJCQkJCSBFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX0JUUkVFX0RJUikKKworLyoKKyAqIERlZmF1bHQgdmFsdWVzIGZvciB1c2VyIGFuZC9vciBncm91cCB1c2luZyByZXNlcnZlZCBibG9ja3MKKyAqLworI2RlZmluZSBFWFQyX0RFRl9SRVNVSUQJCTAKKyNkZWZpbmUgRVhUMl9ERUZfUkVTR0lECQkwCisKKy8qCisgKiBEZWZhdWx0IG1vdW50IG9wdGlvbnMKKyAqLworI2RlZmluZSBFWFQyX0RFRk1fREVCVUcJCTB4MDAwMQorI2RlZmluZSBFWFQyX0RFRk1fQlNER1JPVVBTCTB4MDAwMgorI2RlZmluZSBFWFQyX0RFRk1fWEFUVFJfVVNFUgkweDAwMDQKKyNkZWZpbmUgRVhUMl9ERUZNX0FDTAkJMHgwMDA4CisjZGVmaW5lIEVYVDJfREVGTV9VSUQxNgkJMHgwMDEwCisjZGVmaW5lIEVYVDNfREVGTV9KTU9ERQkJMHgwMDYwCisjZGVmaW5lIEVYVDNfREVGTV9KTU9ERV9EQVRBCTB4MDAyMAorI2RlZmluZSBFWFQzX0RFRk1fSk1PREVfT1JERVJFRAkweDAwNDAKKyNkZWZpbmUgRVhUM19ERUZNX0pNT0RFX1dCQUNLCTB4MDA2MAorI2RlZmluZSBFWFQ0X0RFRk1fTk9CQVJSSUVSCTB4MDEwMAorI2RlZmluZSBFWFQ0X0RFRk1fQkxPQ0tfVkFMSURJVFkgMHgwMjAwCisjZGVmaW5lIEVYVDRfREVGTV9ESVNDQVJECTB4MDQwMAorI2RlZmluZSBFWFQ0X0RFRk1fTk9ERUxBTExPQwkweDA4MDAKKworLyoKKyAqIFN0cnVjdHVyZSBvZiBhIGRpcmVjdG9yeSBlbnRyeQorICovCisjZGVmaW5lIEVYVDJfTkFNRV9MRU4gMjU1CisKK3N0cnVjdCBleHQyX2Rpcl9lbnRyeSB7CisJX191MzIJaW5vZGU7CQkJLyogSW5vZGUgbnVtYmVyICovCisJX191MTYJcmVjX2xlbjsJCS8qIERpcmVjdG9yeSBlbnRyeSBsZW5ndGggKi8KKwlfX3UxNgluYW1lX2xlbjsJCS8qIE5hbWUgbGVuZ3RoICovCisJY2hhcgluYW1lW0VYVDJfTkFNRV9MRU5dOwkvKiBGaWxlIG5hbWUgKi8KK307CisKKy8qCisgKiBUaGUgbmV3IHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSBlbnRyeS4gIFNpbmNlIEVYVDIgc3RydWN0dXJlcyBhcmUKKyAqIHN0b3JlZCBpbiBpbnRlbCBieXRlIG9yZGVyLCBhbmQgdGhlIG5hbWVfbGVuIGZpZWxkIGNvdWxkIG5ldmVyIGJlCisgKiBiaWdnZXIgdGhhbiAyNTUgY2hhcnMsIGl0J3Mgc2FmZSB0byByZWNsYWltIHRoZSBleHRyYSBieXRlIGZvciB0aGUKKyAqIGZpbGVfdHlwZSBmaWVsZC4KKyAqCisgKiBUaGlzIHN0cnVjdHVyZSBpcyBkZXByZWNhdGVkIGR1ZSB0byBlbmRpYW5pdHkgaXNzdWVzLiBQbGVhc2UgdXNlIHN0cnVjdAorICogZXh0Ml9kaXJfZW50cnkgYW5kIGFjY2Vzc29yIGZ1bmN0aW9ucworICogICBleHQyZnNfZGlyZW50X25hbWVfbGVuCisgKiAgIGV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuCisgKiAgIGV4dDJmc19kaXJlbnRfZmlsZV90eXBlCisgKiAgIGV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZQorICogdG8gZ2V0IGFuZCBzZXQgbmFtZV9sZW4gYW5kIGZpbGVfdHlwZSBmaWVsZHMuCisgKi8KK3N0cnVjdCBleHQyX2Rpcl9lbnRyeV8yIHsKKwlfX3UzMglpbm9kZTsJCQkvKiBJbm9kZSBudW1iZXIgKi8KKwlfX3UxNglyZWNfbGVuOwkJLyogRGlyZWN0b3J5IGVudHJ5IGxlbmd0aCAqLworCV9fdTgJbmFtZV9sZW47CQkvKiBOYW1lIGxlbmd0aCAqLworCV9fdTgJZmlsZV90eXBlOworCWNoYXIJbmFtZVtFWFQyX05BTUVfTEVOXTsJLyogRmlsZSBuYW1lICovCit9OworCisvKgorICogVGhpcyBpcyBhIGJvZ3VzIGRpcmVjdG9yeSBlbnRyeSBhdCB0aGUgZW5kIG9mIGVhY2ggbGVhZiBibG9jayB0aGF0CisgKiByZWNvcmRzIGNoZWNrc3Vtcy4KKyAqLworc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgeworCV9fdTMyCWRldF9yZXNlcnZlZF96ZXJvMTsJLyogUHJldGVuZCB0byBiZSB1bnVzZWQgKi8KKwlfX3UxNglkZXRfcmVjX2xlbjsJCS8qIDEyICovCisJX191MTYJZGV0X3Jlc2VydmVkX25hbWVfbGVuOwkvKiAweERFMDAsIGZha2UgbmFtZWxlbi9maWxldHlwZSAqLworCV9fdTMyCWRldF9jaGVja3N1bTsJCS8qIGNyYzMyYyh1dWlkK2lub2RlK2RpcmVudCkgKi8KK307CisKKy8qCisgKiBFeHQyIGRpcmVjdG9yeSBmaWxlIHR5cGVzLiAgT25seSB0aGUgbG93IDMgYml0cyBhcmUgdXNlZC4gIFRoZQorICogb3RoZXIgYml0cyBhcmUgcmVzZXJ2ZWQgZm9yIG5vdy4KKyAqLworI2RlZmluZSBFWFQyX0ZUX1VOS05PV04JCTAKKyNkZWZpbmUgRVhUMl9GVF9SRUdfRklMRQkxCisjZGVmaW5lIEVYVDJfRlRfRElSCQkyCisjZGVmaW5lIEVYVDJfRlRfQ0hSREVWCQkzCisjZGVmaW5lIEVYVDJfRlRfQkxLREVWCQk0CisjZGVmaW5lIEVYVDJfRlRfRklGTwkJNQorI2RlZmluZSBFWFQyX0ZUX1NPQ0sJCTYKKyNkZWZpbmUgRVhUMl9GVF9TWU1MSU5LCQk3CisKKyNkZWZpbmUgRVhUMl9GVF9NQVgJCTgKKworLyoKKyAqIEFubm95aW5nbHksIGUyZnNwcm9ncyBhbHdheXMgc3dhYjE2cyBleHQyX2Rpcl9lbnRyeS5uYW1lX2xlbiwgc28gd2UKKyAqIGhhdmUgdG8gYnVpbGQgZXh0Ml9kaXJfZW50cnlfdGFpbCB3aXRoIHRoYXQgYXNzdW1wdGlvbiB0b28uICBUaGlzCisgKiBjb25zdGFudCBoZWxwcyB0byBidWlsZCB0aGUgZGlyX2VudHJ5X3RhaWwgdG8gbG9vayBsaWtlIGl0IGhhcyBhbgorICogImludmFsaWQiIGZpbGUgdHlwZS4KKyAqLworI2RlZmluZSBFWFQyX0RJUl9OQU1FX0xFTl9DU1VNCTB4REUwMAorCisvKgorICogRVhUMl9ESVJfUEFEIGRlZmluZXMgdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGJvdW5kYXJpZXMKKyAqCisgKiBOT1RFOiBJdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNAorICovCisjZGVmaW5lIEVYVDJfRElSX0VOVFJZX0hFQURFUl9MRU4JOAorI2RlZmluZSBFWFQyX0RJUl9QQUQJCQk0CisjZGVmaW5lIEVYVDJfRElSX1JPVU5ECQkJKEVYVDJfRElSX1BBRCAtIDEpCisjZGVmaW5lIEVYVDJfRElSX1JFQ19MRU4obmFtZV9sZW4pCSgoKG5hbWVfbGVuKSArIFwKKwkJCQkJICBFWFQyX0RJUl9FTlRSWV9IRUFERVJfTEVOICsgXAorCQkJCQkgIEVYVDJfRElSX1JPVU5EKSAmIFwKKwkJCQkJIH5FWFQyX0RJUl9ST1VORCkKKworLyoKKyAqIENvbnN0YW50cyBmb3IgZXh0NCdzIGV4dGVuZGVkIHRpbWUgZW5jb2RpbmcKKyAqLworI2RlZmluZSBFWFQ0X0VQT0NIX0JJVFMgMgorI2RlZmluZSBFWFQ0X0VQT0NIX01BU0sgKCgxIDw8IEVYVDRfRVBPQ0hfQklUUykgLSAxKQorI2RlZmluZSBFWFQ0X05TRUNfTUFTSyAgKH4wVUwgPDwgRVhUNF9FUE9DSF9CSVRTKQorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCBmb3IgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbi4gSXQgaXMgd3JpdHRlbgorICogaW50byB0aGUgYmxvY2sgbnVtYmVyIHNhdmVkIGluIHRoZSBzX21tcF9ibG9jayBmaWVsZCBpbiB0aGUgc3VwZXJibG9jay4KKyAqIFByb2dyYW1zIHRoYXQgY2hlY2sgTU1QIHNob3VsZCBhc3N1bWUgdGhhdCBpZiBTRVFfRlNDSyAob3IgYW55IHVua25vd24KKyAqIGNvZGUgYWJvdmUgU0VRX01BWCkgaXMgcHJlc2VudCB0aGVuIGl0IGlzIE5PVCBzYWZlIHRvIHVzZSB0aGUgZmlsZXN5c3RlbSwKKyAqIHJlZ2FyZGxlc3Mgb2YgaG93IG9sZCB0aGUgdGltZXN0YW1wIGlzLgorICoKKyAqIFRoZSB0aW1lc3RhbXAgaW4gdGhlIE1NUCBzdHJ1Y3R1cmUgd2lsbCBiZSB1cGRhdGVkIGJ5IGUyZnNjayBhdCBzb21lCisgKiBhcmJpdGFyeSBpbnRlcnZhbHMgKHN0YXJ0IG9mIHBhc3NlcywgYWZ0ZXIgZXZlcnkgZmV3IGdyb3VwcyBvZiBpbm9kZXMKKyAqIGluIHBhc3MxIGFuZCBwYXNzMWIpLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgZTJmc2NrIGlzIHVwZGF0aW5nCisgKiB0aGUgTU1QIGJsb2NrIGluIGEgdGltZWx5IG1hbm5lciwgYW5kIHRoZSB1cGRhdGVzIGl0IGRvZXMgYXJlIHB1cmVseQorICogZm9yIHRoZSBjb252ZW5pZW5jZSBvZiB0aGUgc3lzYWRtaW4gYW5kIG5vdCBmb3IgYXV0b21hdGljIHZhbGlkYXRpb24uCisgKgorICogTm90ZTogT25seSB0aGUgbW1wX3NlcSB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBNTVAgYmxvY2sKKyAqCWlzIGJlaW5nIHVwZGF0ZWQuICBUaGUgbW1wX3RpbWUsIG1tcF9ub2RlbmFtZSwgYW5kIG1tcF9iZGV2bmFtZQorICoJZmllbGRzIGFyZSBvbmx5IGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIGZvciB0aGUgYWRtaW5pc3RyYXRvciwKKyAqCWR1ZSB0byBjbG9jayBza2V3IGJldHdlZW4gbm9kZXMgYW5kIGhvc3RuYW1lIEhBIHNlcnZpY2UgdGFrZW92ZXIuCisgKi8KKyNkZWZpbmUgRVhUNF9NTVBfTUFHSUMgICAgIDB4MDA0RDRENTBVIC8qIEFTQ0lJIGZvciBNTVAgKi8KKyNkZWZpbmUgRVhUNF9NTVBfU0VRX0NMRUFOIDB4RkY0RDRENTBVIC8qIG1tcF9zZXEgdmFsdWUgZm9yIGNsZWFuIHVubW91bnQgKi8KKyNkZWZpbmUgRVhUNF9NTVBfU0VRX0ZTQ0sgIDB4RTI0RDRENTBVIC8qIG1tcF9zZXEgdmFsdWUgd2hlbiBiZWluZyBmc2NrZWQgKi8KKyNkZWZpbmUgRVhUNF9NTVBfU0VRX01BWCAgIDB4RTI0RDRENEZVIC8qIG1heGltdW0gdmFsaWQgbW1wX3NlcSB2YWx1ZSAqLworCisvKiBOb3QgZW5kaWFuLWFubm90YXRlZDsgaXQncyBzd2FwcGVkIGF0IHJlYWQvd3JpdGUgdGltZSAqLworc3RydWN0IG1tcF9zdHJ1Y3QgeworCV9fdTMyCW1tcF9tYWdpYzsJCS8qIE1hZ2ljIG51bWJlciBmb3IgTU1QICovCisJX191MzIJbW1wX3NlcTsJCS8qIFNlcXVlbmNlIG5vLiB1cGRhdGVkIHBlcmlvZGljYWxseSAqLworCV9fdTY0CW1tcF90aW1lOwkJLyogVGltZSBsYXN0IHVwZGF0ZWQgKi8KKwljaGFyCW1tcF9ub2RlbmFtZVs2NF07CS8qIE5vZGUgd2hpY2ggbGFzdCB1cGRhdGVkIE1NUCBibG9jayAqLworCWNoYXIJbW1wX2JkZXZuYW1lWzMyXTsJLyogQmRldiB3aGljaCBsYXN0IHVwZGF0ZWQgTU1QIGJsb2NrICovCisJX191MTYJbW1wX2NoZWNrX2ludGVydmFsOwkvKiBDaGFuZ2VkIG1tcF9jaGVja19pbnRlcnZhbCAqLworCV9fdTE2CW1tcF9wYWQxOworCV9fdTMyCW1tcF9wYWQyWzIyNl07CisJX191MzIJbW1wX2NoZWNrc3VtOwkJLyogY3JjMzJjKHV1aWQrbW1wX2Jsb2NrKSAqLworfTsKKworLyoKKyAqIERlZmF1bHQgaW50ZXJ2YWwgZm9yIE1NUCB1cGRhdGUgaW4gc2Vjb25kcy4KKyAqLworI2RlZmluZSBFWFQ0X01NUF9VUERBVEVfSU5URVJWQUwJNQorCisvKgorICogTWF4aW11bSBpbnRlcnZhbCBmb3IgTU1QIHVwZGF0ZSBpbiBzZWNvbmRzLgorICovCisjZGVmaW5lIEVYVDRfTU1QX01BWF9VUERBVEVfSU5URVJWQUwJMzAwCisKKy8qCisgKiBNaW5pbXVtIGludGVydmFsIGZvciBNTVAgY2hlY2tpbmcgaW4gc2Vjb25kcy4KKyAqLworI2RlZmluZSBFWFQ0X01NUF9NSU5fQ0hFQ0tfSU5URVJWQUwgICAgIDUKKworLyoKKyAqIE1pbmltdW0gc2l6ZSBvZiBpbmxpbmUgZGF0YS4KKyAqLworI2RlZmluZSBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFCSgoc2l6ZW9mKF9fdTMyKSAqIEVYVDJfTl9CTE9DS1MpKQorCisvKgorICogU2l6ZSBvZiBhIHBhcmVudCBpbm9kZSBpbiBpbmxpbmUgZGF0YSBkaXJlY3RvcnkuCisgKi8KKyNkZWZpbmUgRVhUNF9JTkxJTkVfREFUQV9ET1RET1RfU0laRQkoNCkKKworI2VuZGlmCS8qIF9MSU5VWF9FWFQyX0ZTX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfaW8uaCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTA3YjVkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0Ml9pby5oCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogaW8uaCAtLS0gdGhlIEkvTyBtYW5hZ2VyIGFic3RyYWN0aW9uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9FWFQyRlNfRVhUMl9JT19ICisjZGVmaW5lIF9FWFQyRlNfRVhUMl9JT19ICisKKy8qCisgKiBleHQyX2xvZmZfdCBpcyBkZWZpbmVkIGhlcmUgc2luY2UgdW5peF9pby5jIG5lZWRzIGl0LgorICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgfHwgZGVmaW5lZChIQVNfTE9OR19MT05HKQordHlwZWRlZiBsb25nIGxvbmcJZXh0Ml9sb2ZmX3Q7CisjZWxzZQordHlwZWRlZiBsb25nCQlleHQyX2xvZmZfdDsKKyNlbmRpZgorCisvKiBsbHNlZWsuYyAqLworZXh0Ml9sb2ZmX3QgZXh0MmZzX2xsc2VlayAoaW50LCBleHQyX2xvZmZfdCwgaW50KTsKKwordHlwZWRlZiBzdHJ1Y3Qgc3RydWN0X2lvX21hbmFnZXIgKmlvX21hbmFnZXI7Cit0eXBlZGVmIHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCAqaW9fY2hhbm5lbDsKK3R5cGVkZWYgc3RydWN0IHN0cnVjdF9pb19zdGF0cyAqaW9fc3RhdHM7CisKKyNkZWZpbmUgQ0hBTk5FTF9GTEFHU19XUklURVRIUk9VR0gJMHgwMQorI2RlZmluZSBDSEFOTkVMX0ZMQUdTX0RJU0NBUkRfWkVST0VTCTB4MDIKKyNkZWZpbmUgQ0hBTk5FTF9GTEFHU19CTE9DS19ERVZJQ0UJMHgwNAorCisjZGVmaW5lIGlvX2NoYW5uZWxfZGlzY2FyZF96ZXJvZXNfZGF0YShpKSAoaS0+ZmxhZ3MgJiBDSEFOTkVMX0ZMQUdTX0RJU0NBUkRfWkVST0VTKQorCitzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwgeworCWVycmNvZGVfdAltYWdpYzsKKwlpb19tYW5hZ2VyCW1hbmFnZXI7CisJY2hhcgkJKm5hbWU7CisJaW50CQlibG9ja19zaXplOworCWVycmNvZGVfdAkoKnJlYWRfZXJyb3IpKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJCSAgICAgIGludCBjb3VudCwKKwkJCQkgICAgICB2b2lkICpkYXRhLAorCQkJCSAgICAgIHNpemVfdCBzaXplLAorCQkJCSAgICAgIGludCBhY3R1YWxfYnl0ZXNfcmVhZCwKKwkJCQkgICAgICBlcnJjb2RlX3QJZXJyb3IpOworCWVycmNvZGVfdAkoKndyaXRlX2Vycm9yKShpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisJCQkJICAgICAgIGludCBjb3VudCwKKwkJCQkgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKwkJCQkgICAgICAgc2l6ZV90IHNpemUsCisJCQkJICAgICAgIGludCBhY3R1YWxfYnl0ZXNfd3JpdHRlbiwKKwkJCQkgICAgICAgZXJyY29kZV90IGVycm9yKTsKKwlpbnQJCXJlZmNvdW50OworCWludAkJZmxhZ3M7CisJbG9uZwkJcmVzZXJ2ZWRbMTRdOworCXZvaWQJCSpwcml2YXRlX2RhdGE7CisJdm9pZAkJKmFwcF9kYXRhOworCWludAkJYWxpZ247Cit9OworCitzdHJ1Y3Qgc3RydWN0X2lvX3N0YXRzIHsKKwlpbnQJCQludW1fZmllbGRzOworCWludAkJCXJlc2VydmVkOworCXVuc2lnbmVkIGxvbmcgbG9uZwlieXRlc19yZWFkOworCXVuc2lnbmVkIGxvbmcgbG9uZwlieXRlc193cml0dGVuOworfTsKKworc3RydWN0IHN0cnVjdF9pb19tYW5hZ2VyIHsKKwllcnJjb2RlX3QgbWFnaWM7CisJY29uc3QgY2hhciAqbmFtZTsKKwllcnJjb2RlX3QgKCpvcGVuKShjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsIGlvX2NoYW5uZWwgKmNoYW5uZWwpOworCWVycmNvZGVfdCAoKmNsb3NlKShpb19jaGFubmVsIGNoYW5uZWwpOworCWVycmNvZGVfdCAoKnNldF9ibGtzaXplKShpb19jaGFubmVsIGNoYW5uZWwsIGludCBibGtzaXplKTsKKwllcnJjb2RlX3QgKCpyZWFkX2JsaykoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJICAgICAgaW50IGNvdW50LCB2b2lkICpkYXRhKTsKKwllcnJjb2RlX3QgKCp3cml0ZV9ibGspKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCSAgICAgICBpbnQgY291bnQsIGNvbnN0IHZvaWQgKmRhdGEpOworCWVycmNvZGVfdCAoKmZsdXNoKShpb19jaGFubmVsIGNoYW5uZWwpOworCWVycmNvZGVfdCAoKndyaXRlX2J5dGUpKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJaW50IGNvdW50LCBjb25zdCB2b2lkICpkYXRhKTsKKwllcnJjb2RlX3QgKCpzZXRfb3B0aW9uKShpb19jaGFubmVsIGNoYW5uZWwsIGNvbnN0IGNoYXIgKm9wdGlvbiwKKwkJCQljb25zdCBjaGFyICphcmcpOworCWVycmNvZGVfdCAoKmdldF9zdGF0cykoaW9fY2hhbm5lbCBjaGFubmVsLCBpb19zdGF0cyAqaW9fc3RhdHMpOworCWVycmNvZGVfdCAoKnJlYWRfYmxrNjQpKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCQlpbnQgY291bnQsIHZvaWQgKmRhdGEpOworCWVycmNvZGVfdCAoKndyaXRlX2JsazY0KShpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCQkJaW50IGNvdW50LCBjb25zdCB2b2lkICpkYXRhKTsKKwllcnJjb2RlX3QgKCpkaXNjYXJkKShpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KTsKKwllcnJjb2RlX3QgKCpjYWNoZV9yZWFkYWhlYWQpKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCk7CisJZXJyY29kZV90ICgqemVyb291dCkoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCk7CisJbG9uZwlyZXNlcnZlZFsxNF07Cit9OworCisjZGVmaW5lIElPX0ZMQUdfUlcJCTB4MDAwMQorI2RlZmluZSBJT19GTEFHX0VYQ0xVU0lWRQkweDAwMDIKKyNkZWZpbmUgSU9fRkxBR19ESVJFQ1RfSU8JMHgwMDA0CisKKy8qCisgKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMuLi4uCisgKi8KKyNkZWZpbmUgaW9fY2hhbm5lbF9jbG9zZShjKSAJCSgoYyktPm1hbmFnZXItPmNsb3NlKChjKSkpCisjZGVmaW5lIGlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoYyxzKQkoKGMpLT5tYW5hZ2VyLT5zZXRfYmxrc2l6ZSgoYykscykpCisjZGVmaW5lIGlvX2NoYW5uZWxfcmVhZF9ibGsoYyxiLG4sZCkJKChjKS0+bWFuYWdlci0+cmVhZF9ibGsoKGMpLGIsbixkKSkKKyNkZWZpbmUgaW9fY2hhbm5lbF93cml0ZV9ibGsoYyxiLG4sZCkJKChjKS0+bWFuYWdlci0+d3JpdGVfYmxrKChjKSxiLG4sZCkpCisjZGVmaW5lIGlvX2NoYW5uZWxfZmx1c2goYykgCQkoKGMpLT5tYW5hZ2VyLT5mbHVzaCgoYykpKQorI2RlZmluZSBpb19jaGFubmVsX2J1bXBjb3VudChjKQkJKChjKS0+cmVmY291bnQrKykKKworLyogaW9fbWFuYWdlci5jICovCitleHRlcm4gZXJyY29kZV90IGlvX2NoYW5uZWxfc2V0X29wdGlvbnMoaW9fY2hhbm5lbCBjaGFubmVsLAorCQkJCQljb25zdCBjaGFyICpvcHRpb25zKTsKK2V4dGVybiBlcnJjb2RlX3QgaW9fY2hhbm5lbF93cml0ZV9ieXRlKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJICAgICAgIGludCBjb3VudCwgY29uc3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gZXJyY29kZV90IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCQkgICAgICAgaW50IGNvdW50LCB2b2lkICpkYXRhKTsKK2V4dGVybiBlcnJjb2RlX3QgaW9fY2hhbm5lbF93cml0ZV9ibGs2NChpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCQkJaW50IGNvdW50LCBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiBlcnJjb2RlX3QgaW9fY2hhbm5lbF9kaXNjYXJkKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIGxvbmcgY291bnQpOworZXh0ZXJuIGVycmNvZGVfdCBpb19jaGFubmVsX3plcm9vdXQoaW9fY2hhbm5lbCBjaGFubmVsLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCk7CitleHRlcm4gZXJyY29kZV90IGlvX2NoYW5uZWxfYWxsb2NfYnVmKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgICBpbnQgY291bnQsIHZvaWQgKnB0cik7CitleHRlcm4gZXJyY29kZV90IGlvX2NoYW5uZWxfY2FjaGVfcmVhZGFoZWFkKGlvX2NoYW5uZWwgaW8sCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJCSAgICB1bnNpZ25lZCBsb25nIGxvbmcgY291bnQpOworCisvKiB1bml4X2lvLmMgKi8KK2V4dGVybiBpb19tYW5hZ2VyIHVuaXhfaW9fbWFuYWdlcjsKK2V4dGVybiBpb19tYW5hZ2VyIHVuaXhmZF9pb19tYW5hZ2VyOworCisvKiB1bmRvX2lvLmMgKi8KK2V4dGVybiBpb19tYW5hZ2VyIHVuZG9faW9fbWFuYWdlcjsKK2V4dGVybiBlcnJjb2RlX3Qgc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKGlvX21hbmFnZXIgbWFuYWdlcik7CitleHRlcm4gZXJyY29kZV90IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKGNoYXIgKmZpbGVfbmFtZSk7CisKKy8qIHRlc3RfaW8uYyAqLworZXh0ZXJuIGlvX21hbmFnZXIgdGVzdF9pb19tYW5hZ2VyLCB0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlcjsKK2V4dGVybiB2b2lkICgqdGVzdF9pb19jYl9yZWFkX2JsaykKKwkodW5zaWduZWQgbG9uZyBibG9jaywgaW50IGNvdW50LCBlcnJjb2RlX3QgZXJyKTsKK2V4dGVybiB2b2lkICgqdGVzdF9pb19jYl93cml0ZV9ibGspCisJKHVuc2lnbmVkIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycik7CitleHRlcm4gdm9pZCAoKnRlc3RfaW9fY2JfcmVhZF9ibGs2NCkKKwkodW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpOworZXh0ZXJuIHZvaWQgKCp0ZXN0X2lvX2NiX3dyaXRlX2JsazY0KQorCSh1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycik7CitleHRlcm4gdm9pZCAoKnRlc3RfaW9fY2Jfc2V0X2Jsa3NpemUpCisJKGludCBibGtzaXplLCBlcnJjb2RlX3QgZXJyKTsKKworI2VuZGlmIC8qIF9FWFQyRlNfRVhUMl9JT19IICovCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaC5pbiBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2FkYzY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oLmluCkBAIC0wLDAgKzEsMTkyIEBACisvKiAKKyAqIElmIGxpbnV4L3R5cGVzLmggaXMgYWxyZWFkeSBiZWVuIGluY2x1ZGVkLCBhc3N1bWUgaXQgaGFzIGRlZmluZWQKKyAqIGV2ZXJ5dGhpbmcgd2UgbmVlZC4gIChjcm9zcyBmaW5nZXJzKSAgT3RoZXIgaGVhZGVyIGZpbGVzIG1heSBoYXZlIAorICogYWxzbyBkZWZpbmVkIHRoZSB0eXBlcyB0aGF0IHdlIG5lZWQuCisgKi8KKyNpZiAoIWRlZmluZWQoX0xJTlVYX1RZUEVTX0gpICYmICFkZWZpbmVkKF9CTEtJRF9UWVBFU19IKSAmJiBcCisJIWRlZmluZWQoX0VYVDJfVFlQRVNfSCkpCisjZGVmaW5lIF9FWFQyX1RZUEVTX0gKKworQEFTTV9UWVBFU19IRUFERVJACisKKyNpZm5kZWYgSEFWRV9fX1U4CisjZGVmaW5lIEhBVkVfX19VOAorI2lmZGVmIF9fVThfVFlQRURFRgordHlwZWRlZiBfX1U4X1RZUEVERUYgX191ODsKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191ODsKKyNlbmRpZgorI2VuZGlmIC8qIEhBVkVfX19VOCAqLworCisjaWZuZGVmIEhBVkVfX19TOAorI2RlZmluZSBIQVZFX19fUzgKKyNpZmRlZiBfX1M4X1RZUEVERUYKK3R5cGVkZWYgX19TOF9UWVBFREVGIF9fczg7CisjZWxzZQordHlwZWRlZiBzaWduZWQgY2hhciBfX3M4OworI2VuZGlmCisjZW5kaWYgLyogSEFWRV9fX1M4ICovCisKKyNpZm5kZWYgSEFWRV9fX1UxNgorI2RlZmluZSBIQVZFX19fVTE2CisjaWZkZWYgX19VMTZfVFlQRURFRgordHlwZWRlZiBfX1UxNl9UWVBFREVGIF9fdTE2OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9JTlRAID09IDIpCit0eXBlZGVmCXVuc2lnbmVkIGludAlfX3UxNjsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfU0hPUlRAID09IDIpCit0eXBlZGVmCXVuc2lnbmVkIHNob3J0CV9fdTE2OworI2Vsc2UKKyN1bmRlZiBIQVZFX19fVTE2CisgID89PWVycm9yOiB1bmRlZmluZWQgMTYgYml0IHR5cGUKKyNlbmRpZiAvKiBTSVpFT0ZfU0hPUlQgPT0gMiAqLworI2VuZGlmIC8qIFNJWkVPRl9JTlQgPT0gMiAqLworI2VuZGlmIC8qIF9fVTE2X1RZUEVERUYgKi8KKyNlbmRpZiAvKiBIQVZFX19fVTE2ICovCisKKyNpZm5kZWYgSEFWRV9fX1MxNgorI2RlZmluZSBIQVZFX19fUzE2CisjaWZkZWYgX19TMTZfVFlQRURFRgordHlwZWRlZiBfX1MxNl9UWVBFREVGIF9fczE2OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9JTlRAID09IDIpCit0eXBlZGVmCWludAkJX19zMTY7CisjZWxzZQorI2lmIChAU0laRU9GX1NIT1JUQCA9PSAyKQordHlwZWRlZglzaG9ydAkJX19zMTY7CisjZWxzZQorI3VuZGVmIEhBVkVfX19TMTYKKyAgPz09ZXJyb3I6IHVuZGVmaW5lZCAxNiBiaXQgdHlwZQorI2VuZGlmIC8qIFNJWkVPRl9TSE9SVCA9PSAyICovCisjZW5kaWYgLyogU0laRU9GX0lOVCA9PSAyICovCisjZW5kaWYgLyogX19TMTZfVFlQRURFRiAqLworI2VuZGlmIC8qIEhBVkVfX19TMTYgKi8KKworI2lmbmRlZiBIQVZFX19fVTMyCisjZGVmaW5lIEhBVkVfX19VMzIKKyNpZmRlZiBfX1UzMl9UWVBFREVGCit0eXBlZGVmIF9fVTMyX1RZUEVERUYgX191MzI7CisjZWxzZQorI2lmIChAU0laRU9GX0lOVEAgPT0gNCkKK3R5cGVkZWYJdW5zaWduZWQgaW50CV9fdTMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9MT05HQCA9PSA0KQordHlwZWRlZgl1bnNpZ25lZCBsb25nCV9fdTMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9TSE9SVEAgPT0gNCkKK3R5cGVkZWYJdW5zaWduZWQgc2hvcnQJX191MzI7CisjZWxzZQorI3VuZGVmIEhBVkVfX19VMzIKKyA/PT0gZXJyb3I6IHVuZGVmaW5lZCAzMiBiaXQgdHlwZQorI2VuZGlmIC8qIFNJWkVPRl9TSE9SVCA9PSA0ICovCisjZW5kaWYgLyogU0laRU9GX0xPTkcgPT0gNCAqLworI2VuZGlmIC8qIFNJWkVPRl9JTlQgPT0gNCAqLworI2VuZGlmIC8qIF9fVTMyX1RZUEVERUYgKi8KKyNlbmRpZiAvKiBIQVZFX19fVTMyICovCisKKyNpZm5kZWYgSEFWRV9fX1MzMgorI2RlZmluZSBIQVZFX19fUzMyCisjaWZkZWYgX19TMzJfVFlQRURFRgordHlwZWRlZiBfX1MzMl9UWVBFREVGIF9fczMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9JTlRAID09IDQpCit0eXBlZGVmCWludAkJX19zMzI7CisjZWxzZQorI2lmIChAU0laRU9GX0xPTkdAID09IDQpCit0eXBlZGVmCWxvbmcJCV9fczMyOworI2Vsc2UKKyNpZiAoQFNJWkVPRl9TSE9SVEAgPT0gNCkKK3R5cGVkZWYJc2hvcnQJCV9fczMyOworI2Vsc2UKKyN1bmRlZiBIQVZFX19fUzMyCisgPz09IGVycm9yOiB1bmRlZmluZWQgMzIgYml0IHR5cGUKKyNlbmRpZiAvKiBTSVpFT0ZfU0hPUlQgPT0gNCAqLworI2VuZGlmIC8qIFNJWkVPRl9MT05HID09IDQgKi8KKyNlbmRpZiAvKiBTSVpFT0ZfSU5UID09IDQgKi8KKyNlbmRpZiAvKiBfX1MzMl9UWVBFREVGICovCisjZW5kaWYgLyogSEFWRV9fX1MzMiAqLworCisjaWZuZGVmIEhBVkVfX19VNjQKKyNkZWZpbmUgSEFWRV9fX1U2NAorI2lmZGVmIF9fVTY0X1RZUEVERUYKK3R5cGVkZWYgX19VNjRfVFlQRURFRiBfX3U2NDsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfSU5UQCA9PSA4KQordHlwZWRlZiB1bnNpZ25lZCBpbnQJX191NjQ7CisjZWxzZQorI2lmIChAU0laRU9GX0xPTkdfTE9OR0AgPT0gOCkKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nCV9fdTY0OworI2Vsc2UKKyNpZiAoQFNJWkVPRl9MT05HQCA9PSA4KQordHlwZWRlZiB1bnNpZ25lZCBsb25nCV9fdTY0OworI2Vsc2UKKyN1bmRlZiBIQVZFX19fVTY0CisgPz09IGVycm9yOiB1bmRlZmluZWQgNjQgYml0IHR5cGUKKyNlbmRpZiAvKiBTSVpFT0ZfTE9OR19MT05HID09IDggKi8KKyNlbmRpZiAvKiBTSVpFT0ZfTE9ORyA9PSA4ICovCisjZW5kaWYgLyogU0laRU9GX0lOVCA9PSA4ICovCisjZW5kaWYgLyogX19VNjRfVFlQRURFRiAqLworI2VuZGlmIC8qIEhBVkVfX19VNjQgKi8KKworI2lmbmRlZiBIQVZFX19fUzY0CisjZGVmaW5lIEhBVkVfX19TNjQKKyNpZmRlZiBfX1M2NF9UWVBFREVGCit0eXBlZGVmIF9fUzY0X1RZUEVERUYgX19zNjQ7CisjZWxzZQorI2lmIChAU0laRU9GX0lOVEAgPT0gOCkKK3R5cGVkZWYgaW50CQlfX3M2NDsKKyNlbHNlCisjaWYgKEBTSVpFT0ZfTE9OR19MT05HQCA9PSA4KQorI2lmIGRlZmluZWQoX19HTlVDX18pCit0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nCV9fczY0OworI2Vsc2UKK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZwlfX3M2NDsKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLworI2Vsc2UKKyNpZiAoQFNJWkVPRl9MT05HQCA9PSA4KQordHlwZWRlZiBsb25nCQlfX3M2NDsKKyNlbHNlCisjdW5kZWYgSEFWRV9fX1M2NAorID89PSBlcnJvcjogdW5kZWZpbmVkIDY0IGJpdCB0eXBlCisjZW5kaWYgLyogU0laRU9GX0xPTkdfTE9ORyA9PSA4ICovCisjZW5kaWYgLyogU0laRU9GX0xPTkcgPT0gOCAqLworI2VuZGlmIC8qIFNJWkVPRl9JTlQgPT0gOCAqLworI2VuZGlmIC8qIF9fUzY0X1RZUEVERUYgKi8KKyNlbmRpZiAvKiBIQVZFX19fUzY0ICovCisKKyN1bmRlZiBfX1M4X1RZUEVERUYKKyN1bmRlZiBfX1U4X1RZUEVERUYKKyN1bmRlZiBfX1MxNl9UWVBFREVGCisjdW5kZWYgX19VMTZfVFlQRURFRgorI3VuZGVmIF9fUzMyX1RZUEVERUYKKyN1bmRlZiBfX1UzMl9UWVBFREVGCisjdW5kZWYgX19TNjRfVFlQRURFRgorI3VuZGVmIF9fVTY0X1RZUEVERUYKKworI2VuZGlmIC8qIF8qX1RZUEVTX0ggKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCisvKiBlbmRpYW4gY2hlY2tpbmcgc3R1ZmYgKi8KKyNpZm5kZWYgRVhUMl9FTkRJQU5fSF8KKyNkZWZpbmUgRVhUMl9FTkRJQU5fSF8KKworI2lmZGVmIF9fQ0hFQ0tFUl9fCisjZGVmaW5lIF9fYml0d2lzZQkJX19hdHRyaWJ1dGVfXygoYml0d2lzZSkpCisjZGVmaW5lIF9fZm9yY2UJCQlfX2F0dHJpYnV0ZV9fKChmb3JjZSkpCisjZWxzZQorI2RlZmluZSBfX2JpdHdpc2UKKyNkZWZpbmUgX19mb3JjZQorI2VuZGlmCisKK3R5cGVkZWYgX191MTYJX19iaXR3aXNlCV9fbGUxNjsKK3R5cGVkZWYgX191MzIJX19iaXR3aXNlCV9fbGUzMjsKK3R5cGVkZWYgX191NjQJX19iaXR3aXNlCV9fbGU2NDsKK3R5cGVkZWYgX191MTYJX19iaXR3aXNlCV9fYmUxNjsKK3R5cGVkZWYgX191MzIJX19iaXR3aXNlCV9fYmUzMjsKK3R5cGVkZWYgX191NjQJX19iaXR3aXNlCV9fYmU2NDsKKworI2VuZGlmIC8qIEVYVDJfRU5ESUFOX0hfICovCisKK0BQVUJMSUNfQ09ORklHX0hFQURFUkAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJmcy5oIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0MmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmM2M1YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJmcy5oCkBAIC0wLDAgKzEsMTk4MyBAQAorLyoKKyAqIGV4dDJmcy5oIC0tLSBleHQyZnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0VYVDJGU19FWFQyRlNfSAorI2RlZmluZSBfRVhUMkZTX0VYVDJGU19ICisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBFWFQyRlNfQVRUUih4KSBfX2F0dHJpYnV0ZV9fKHgpCisjZWxzZQorI2RlZmluZSBFWFQyRlNfQVRUUih4KQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfVERCCisjZGVmaW5lIEVYVDJGU19OT19UREJfVU5VU0VECisjZWxzZQorI2RlZmluZSBFWFQyRlNfTk9fVERCX1VOVVNFRAlFWFQyRlNfQVRUUigodW51c2VkKSkKKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qCisgKiBOb24tR05VIEMgY29tcGlsZXJzIHdvbid0IG5lY2Vzc2FyaWx5IHVuZGVyc3RhbmQgaW5saW5lCisgKi8KKyNpZiAoIWRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fV0FUQ09NQ19fKSkKKyNkZWZpbmUgTk9fSU5MSU5FX0ZVTkNTCisjZW5kaWYKKworLyoKKyAqIFdoZXJlIHRoZSBtYXN0ZXIgY29weSBvZiB0aGUgc3VwZXJibG9jayBpcyBsb2NhdGVkLCBhbmQgaG93IGJpZworICogc3VwZXJibG9ja3MgYXJlIHN1cHBvc2VkIHRvIGJlLiAgV2UgZGVmaW5lIFNVUEVSQkxPQ0tfU0laRSBiZWNhdXNlCisgKiB0aGUgc2l6ZSBvZiB0aGUgc3VwZXJibG9jayBzdHJ1Y3R1cmUgaXMgbm90IG5lY2Vzc2FyaWx5IHRydXN0d29ydGh5CisgKiAoc29tZSB2ZXJzaW9ucyBoYXZlIHRoZSBwYWRkaW5nIHNldCB1cCBzbyB0aGF0IHRoZSBzdXBlcmJsb2NrIGlzCisgKiAxMDMyIGJ5dGVzIGxvbmcpLgorICovCisjZGVmaW5lIFNVUEVSQkxPQ0tfT0ZGU0VUCTEwMjQKKyNkZWZpbmUgU1VQRVJCTE9DS19TSVpFCQkxMDI0CisKKyNkZWZpbmUgVVVJRF9TVFJfU0laRSAzNworCisvKgorICogVGhlIGxhc3QgZXh0MmZzIHJldmlzaW9uIGxldmVsIHRoYXQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGlzCisgKiBhYmxlIHRvIHN1cHBvcnQuCisgKi8KKyNkZWZpbmUgRVhUMl9MSUJfQ1VSUkVOVF9SRVYJRVhUMl9EWU5BTUlDX1JFVgorCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJlMl90eXBlcy5oIgorI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQzX2V4dGVudHMuaCIKKyNlbHNlCisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfdHlwZXMuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml9mcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9leHQzX2V4dGVudHMuaD4KKyNlbmRpZiAvKiBFWFQyX0ZMQVRfSU5DTFVERVMgKi8KKwordHlwZWRlZiBfX3UzMiBfX2JpdHdpc2UJCWV4dDJfaW5vX3Q7Cit0eXBlZGVmIF9fdTMyIF9fYml0d2lzZQkJYmxrX3Q7Cit0eXBlZGVmIF9fdTY0IF9fYml0d2lzZQkJYmxrNjRfdDsKK3R5cGVkZWYgX191MzIgX19iaXR3aXNlCQlkZ3JwX3Q7Cit0eXBlZGVmIF9fdTMyIF9fYml0d2lzZQkJZXh0Ml9vZmZfdDsKK3R5cGVkZWYgX191NjQgX19iaXR3aXNlCQlleHQyX29mZjY0X3Q7Cit0eXBlZGVmIF9fczY0IF9fYml0d2lzZQkJZTJfYmxrY250X3Q7Cit0eXBlZGVmIF9fdTMyIF9fYml0d2lzZQkJZXh0Ml9kaXJoYXNoX3Q7CisKKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJjb21fZXJyLmgiCisjaW5jbHVkZSAiZXh0Ml9pby5oIgorI2luY2x1ZGUgImV4dDJfZXJyLmgiCisjaW5jbHVkZSAiZXh0Ml9leHRfYXR0ci5oIgorI2Vsc2UKKyNpbmNsdWRlIDxldC9jb21fZXJyLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfaW8uaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml9lcnIuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml9leHRfYXR0ci5oPgorI2VuZGlmCisKKy8qCisgKiBQb3J0YWJpbGl0eSBoZWxwIGZvciBNaWNyb3NvZnQgVmlzdWFsIEMrKworICovCisjaWZkZWYgX01TQ19WRVIKKyNkZWZpbmUgRVhUMl9RU09SVF9UWVBFIGludCBfX2NkZWNsCisjZWxzZQorI2RlZmluZSBFWFQyX1FTT1JUX1RZUEUgaW50CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3Qgc3RydWN0X2V4dDJfZmlsc3lzICpleHQyX2ZpbHN5czsKKworI2RlZmluZSBFWFQyRlNfTUFSS19FUlJPUiAJMAorI2RlZmluZSBFWFQyRlNfVU5NQVJLX0VSUk9SIAkxCisjZGVmaW5lIEVYVDJGU19URVNUX0VSUk9SCTIKKwordHlwZWRlZiBzdHJ1Y3QgZXh0MmZzX3N0cnVjdF9nZW5lcmljX2JpdG1hcCAqZXh0MmZzX2dlbmVyaWNfYml0bWFwOwordHlwZWRlZiBzdHJ1Y3QgZXh0MmZzX3N0cnVjdF9nZW5lcmljX2JpdG1hcCAqZXh0MmZzX2lub2RlX2JpdG1hcDsKK3R5cGVkZWYgc3RydWN0IGV4dDJmc19zdHJ1Y3RfZ2VuZXJpY19iaXRtYXAgKmV4dDJmc19ibG9ja19iaXRtYXA7CisKKyNkZWZpbmUgRVhUMl9GSVJTVF9JTk9ERShzKQlFWFQyX0ZJUlNUX0lOTyhzKQorCisKKy8qCisgKiBCYWRibG9ja3MgbGlzdCBkZWZpbml0aW9ucworICovCisKK3R5cGVkZWYgc3RydWN0IGV4dDJfc3RydWN0X3UzMl9saXN0ICpleHQyX2JhZGJsb2Nrc19saXN0OwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfdTMyX2l0ZXJhdGUgKmV4dDJfYmFkYmxvY2tzX2l0ZXJhdGU7CisKK3R5cGVkZWYgc3RydWN0IGV4dDJfc3RydWN0X3UzMl9saXN0ICpleHQyX3UzMl9saXN0OwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfdTMyX2l0ZXJhdGUgKmV4dDJfdTMyX2l0ZXJhdGU7CisKKy8qIG9sZCAqLwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfdTMyX2xpc3QgKmJhZGJsb2Nrc19saXN0OwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfdTMyX2l0ZXJhdGUgKmJhZGJsb2Nrc19pdGVyYXRlOworCisjZGVmaW5lIEJBREJMT0NLU19GTEFHX0RJUlRZCTEKKworLyoKKyAqIGV4dDJfZGJsaXN0IHN0cnVjdHVyZSBhbmQgYWJzdHJhY3Rpb25zIChzZWUgZGJsaXN0LmMpCisgKi8KK3N0cnVjdCBleHQyX2RiX2VudHJ5MiB7CisJZXh0Ml9pbm9fdAlpbm87CisJYmxrNjRfdAlibGs7CisJZTJfYmxrY250X3QJYmxvY2tjbnQ7Cit9OworCisvKiBZZSBPbGRlIDMyLWJpdCB2ZXJzaW9uICovCitzdHJ1Y3QgZXh0Ml9kYl9lbnRyeSB7CisJZXh0Ml9pbm9fdAlpbm87CisJYmxrX3QJYmxrOworCWludAlibG9ja2NudDsKK307CisKK3R5cGVkZWYgc3RydWN0IGV4dDJfc3RydWN0X2RibGlzdCAqZXh0Ml9kYmxpc3Q7CisKKyNkZWZpbmUgREJMSVNUX0FCT1JUCTEKKworLyoKKyAqIGV4dDJfZmlsZWlvIGRlZmluaXRpb25zCisgKi8KKworI2RlZmluZSBFWFQyX0ZJTEVfV1JJVEUJCTB4MDAwMQorI2RlZmluZSBFWFQyX0ZJTEVfQ1JFQVRFCTB4MDAwMgorCisjZGVmaW5lIEVYVDJfRklMRV9NQVNLCQkweDAwRkYKKworI2RlZmluZSBFWFQyX0ZJTEVfQlVGX0RJUlRZCTB4NDAwMAorI2RlZmluZSBFWFQyX0ZJTEVfQlVGX1ZBTElECTB4MjAwMAorCit0eXBlZGVmIHN0cnVjdCBleHQyX2ZpbGUgKmV4dDJfZmlsZV90OworCisjZGVmaW5lIEVYVDJfU0VFS19TRVQJMAorI2RlZmluZSBFWFQyX1NFRUtfQ1VSCTEKKyNkZWZpbmUgRVhUMl9TRUVLX0VORAkyCisKKy8qCisgKiBGbGFncyBmb3IgdGhlIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSBhbmQgZm9yIGV4dDJmc19vcGVuKCkKKyAqLworI2RlZmluZSBFWFQyX0ZMQUdfUlcJCQkweDAxCisjZGVmaW5lIEVYVDJfRkxBR19DSEFOR0VECQkweDAyCisjZGVmaW5lIEVYVDJfRkxBR19ESVJUWQkJCTB4MDQKKyNkZWZpbmUgRVhUMl9GTEFHX1ZBTElECQkJMHgwOAorI2RlZmluZSBFWFQyX0ZMQUdfSUJfRElSVFkJCTB4MTAKKyNkZWZpbmUgRVhUMl9GTEFHX0JCX0RJUlRZCQkweDIwCisjZGVmaW5lIEVYVDJfRkxBR19TV0FQX0JZVEVTCQkweDQwCisjZGVmaW5lIEVYVDJfRkxBR19TV0FQX0JZVEVTX1JFQUQJMHg4MAorI2RlZmluZSBFWFQyX0ZMQUdfU1dBUF9CWVRFU19XUklURQkweDEwMAorI2RlZmluZSBFWFQyX0ZMQUdfTUFTVEVSX1NCX09OTFkJMHgyMDAKKyNkZWZpbmUgRVhUMl9GTEFHX0ZPUkNFCQkJMHg0MDAKKyNkZWZpbmUgRVhUMl9GTEFHX1NVUEVSX09OTFkJCTB4ODAwCisjZGVmaW5lIEVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSwkweDEwMDAKKyNkZWZpbmUgRVhUMl9GTEFHX0lNQUdFX0ZJTEUJCTB4MjAwMAorI2RlZmluZSBFWFQyX0ZMQUdfRVhDTFVTSVZFCQkweDQwMDAKKyNkZWZpbmUgRVhUMl9GTEFHX1NPRlRTVVBQX0ZFQVRVUkVTCTB4ODAwMAorI2RlZmluZSBFWFQyX0ZMQUdfTk9GUkVFX09OX0VSUk9SCTB4MTAwMDAKKyNkZWZpbmUgRVhUMl9GTEFHXzY0QklUUwkJMHgyMDAwMAorI2RlZmluZSBFWFQyX0ZMQUdfUFJJTlRfUFJPR1JFU1MJMHg0MDAwMAorI2RlZmluZSBFWFQyX0ZMQUdfRElSRUNUX0lPCQkweDgwMDAwCisjZGVmaW5lIEVYVDJfRkxBR19TS0lQX01NUAkJMHgxMDAwMDAKKyNkZWZpbmUgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUwkweDIwMDAwMAorCisvKgorICogU3BlY2lhbCBmbGFnIGluIHRoZSBleHQyIGlub2RlIGlfZmxhZyBmaWVsZCB0aGF0IG1lYW5zIHRoYXQgdGhpcyBpcworICogYSBuZXcgaW5vZGUuICAoU28gdGhhdCBleHQyX3dyaXRlX2lub2RlKCkgY2FuIGNsZWFyIGV4dHJhIGZpZWxkcy4pCisgKi8KKyNkZWZpbmUgRVhUMl9ORVdfSU5PREVfRkwJMHg4MDAwMDAwMAorCisvKgorICogRmxhZ3MgZm9yIG1ram91cm5hbAorICovCisjZGVmaW5lIEVYVDJfTUtKT1VSTkFMX1YxX1NVUEVSCTB4MDAwMDAwMSAvKiBjcmVhdGUgVjEgc3VwZXJibG9jayAoZGVwcmVjYXRlZCkgKi8KKyNkZWZpbmUgRVhUMl9NS0pPVVJOQUxfTEFaWUlOSVQJMHgwMDAwMDAyIC8qIGRvbid0IHplcm8gam91cm5hbCBpbm9kZSBiZWZvcmUgdXNlKi8KKyNkZWZpbmUgRVhUMl9NS0pPVVJOQUxfTk9fTU5UX0NIRUNLIDB4MDAwMDAwNCAvKiBkb24ndCBjaGVjayBtb3VudCBzdGF0dXMgKi8KKworc3RydWN0IG9wYXF1ZV9leHQyX2dyb3VwX2Rlc2M7CisKK3N0cnVjdCBzdHJ1Y3RfZXh0Ml9maWxzeXMgeworCWVycmNvZGVfdAkJCW1hZ2ljOworCWlvX2NoYW5uZWwJCQlpbzsKKwlpbnQJCQkJZmxhZ3M7CisJY2hhciAqCQkJCWRldmljZV9uYW1lOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrCSogCXN1cGVyOworCXVuc2lnbmVkIGludAkJCWJsb2Nrc2l6ZTsKKwlpbnQJCQkJZnJhZ3NpemU7CisJZGdycF90CQkJCWdyb3VwX2Rlc2NfY291bnQ7CisJdW5zaWduZWQgbG9uZwkJCWRlc2NfYmxvY2tzOworCXN0cnVjdCBvcGFxdWVfZXh0Ml9ncm91cF9kZXNjICoJZ3JvdXBfZGVzYzsKKwl1bnNpZ25lZCBpbnQJCQlpbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCWV4dDJmc19pbm9kZV9iaXRtYXAJCWlub2RlX21hcDsKKwlleHQyZnNfYmxvY2tfYml0bWFwCQlibG9ja19tYXA7CisJLyogWFhYIEZJWE1FLTY0OiBub3QgNjQtYml0IHNhZmUsIGJ1dCBub3QgdXNlZD8gKi8KKwllcnJjb2RlX3QgKCpnZXRfYmxvY2tzKShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sIGJsa190ICpibG9ja3MpOworCWVycmNvZGVfdCAoKmNoZWNrX2RpcmVjdG9yeSkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKTsKKwllcnJjb2RlX3QgKCp3cml0ZV9iaXRtYXBzKShleHQyX2ZpbHN5cyBmcyk7CisJZXJyY29kZV90ICgqcmVhZF9pbm9kZSkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSk7CisJZXJyY29kZV90ICgqd3JpdGVfaW5vZGUpKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpOworCWV4dDJfYmFkYmxvY2tzX2xpc3QJCWJhZGJsb2NrczsKKwlleHQyX2RibGlzdAkJCWRibGlzdDsKKwlfX3UzMgkJCQlzdHJpZGU7CS8qIGZvciBta2UyZnMgKi8KKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqCW9yaWdfc3VwZXI7CisJc3RydWN0IGV4dDJfaW1hZ2VfaGRyICoJCWltYWdlX2hlYWRlcjsKKwlfX3UzMgkJCQl1bWFzazsKKwl0aW1lX3QJCQkJbm93OworCWludAkJCQljbHVzdGVyX3JhdGlvX2JpdHM7CisJX191MTYJCQkJZGVmYXVsdF9iaXRtYXBfdHlwZTsKKwlfX3UxNgkJCQlwYWQ7CisJLyoKKwkgKiBSZXNlcnZlZCBmb3IgZnV0dXJlIGV4cGFuc2lvbgorCSAqLworCV9fdTMyCQkJCXJlc2VydmVkWzVdOworCisJLyoKKwkgKiBSZXNlcnZlZCBmb3IgdGhlIHVzZSBvZiB0aGUgY2FsbGluZyBhcHBsaWNhdGlvbi4KKwkgKi8KKwl2b2lkICoJCQkJcHJpdl9kYXRhOworCisJLyoKKwkgKiBJbm9kZSBjYWNoZQorCSAqLworCXN0cnVjdCBleHQyX2lub2RlX2NhY2hlCQkqaWNhY2hlOworCWlvX2NoYW5uZWwJCQlpbWFnZV9pbzsKKworCS8qCisJICogTW9yZSBjYWxsYmFjayBmdW5jdGlvbnMKKwkgKi8KKwllcnJjb2RlX3QgKCpnZXRfYWxsb2NfYmxvY2spKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGdvYWwsCisJCQkJICAgICBibGs2NF90ICpyZXQpOworCXZvaWQgKCpibG9ja19hbGxvY19zdGF0cykoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLCBpbnQgaW51c2UpOworCisJLyoKKwkgKiBCdWZmZXJzIGZvciBNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uKE1NUCkgYmxvY2suCisJICovCisJdm9pZCAqbW1wX2J1ZjsKKwl2b2lkICptbXBfY21wOworCWludCBtbXBfZmQ7CisKKwkvKgorCSAqIFRpbWUgYXQgd2hpY2ggZTJmc2NrIGxhc3QgdXBkYXRlZCB0aGUgTU1QIGJsb2NrLgorCSAqLworCWxvbmcgbW1wX2xhc3Rfd3JpdHRlbjsKKworCS8qIHByb2dyZXNzIG9wZXJhdGlvbiBmdW5jdGlvbnMgKi8KKwlzdHJ1Y3QgZXh0MmZzX3Byb2dyZXNzX29wcyAqcHJvZ3Jlc3Nfb3BzOworCisJLyogUHJlY29tcHV0ZWQgRlMgVVVJRCBjaGVja3N1bSBmb3Igc2VlZGluZyBvdGhlciBjaGVja3N1bXMgKi8KKwlfX3UzMiBjc3VtX3NlZWQ7CisKKwlpb19jaGFubmVsCQkJam91cm5hbF9pbzsKKwljaGFyCQkJCSpqb3VybmFsX25hbWU7CisKKwkvKiBOZXcgYmxvY2sgcmFuZ2UgYWxsb2NhdGlvbiBob29rcyAqLworCWVycmNvZGVfdCAoKm5ld19yYW5nZSkoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgYmxrNjRfdCBnb2FsLAorCQkJICAgICAgIGJsazY0X3QgbGVuLCBibGs2NF90ICpwYmxrLCBibGs2NF90ICpwbGVuKTsKKwl2b2lkICgqYmxvY2tfYWxsb2Nfc3RhdHNfcmFuZ2UpKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywgYmxrX3QgbnVtLAorCQkJCQlpbnQgaW51c2UpOworfTsKKworI2lmIEVYVDJfRkxBVF9JTkNMVURFUworI2luY2x1ZGUgImUyX2JpdG9wcy5oIgorI2Vsc2UKKyNpbmNsdWRlIDxleHQyZnMvYml0b3BzLmg+CisjZW5kaWYKKworLyoKKyAqIDY0LWJpdCBiaXRtYXAgYmFja2VuZCB0eXBlcworICovCisjZGVmaW5lIEVYVDJGU19CTUFQNjRfQklUQVJSQVkJMQorI2RlZmluZSBFWFQyRlNfQk1BUDY0X1JCVFJFRQkyCisjZGVmaW5lIEVYVDJGU19CTUFQNjRfQVVUT0RJUgkzCisKKy8qCisgKiBSZXR1cm4gZmxhZ3MgZm9yIHRoZSBibG9jayBpdGVyYXRvciBmdW5jdGlvbnMKKyAqLworI2RlZmluZSBCTE9DS19DSEFOR0VECQkJMQorI2RlZmluZSBCTE9DS19BQk9SVAkJCTIKKyNkZWZpbmUgQkxPQ0tfRVJST1IJCQk0CisjZGVmaW5lIEJMT0NLX0lOTElORV9EQVRBX0NIQU5HRUQJOAorCisvKgorICogQmxvY2sgaW50ZXJhdGUgZmxhZ3MKKyAqCisgKiBCTE9DS19GTEFHX0FQUEVORCwgb3IgQkxPQ0tfRkxBR19IT0xFLCBpbmRpY2F0ZXMgdGhhdCB0aGUgaW50ZXJhdG9yCisgKiBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGJsb2NrcyB3aGVyZSB0aGUgYmxvY2sgbnVtYmVyIGlzIHplcm8uCisgKiBUaGlzIGlzIHVzZWQgYnkgZXh0MmZzX2V4cGFuZF9kaXIoKSB0byBiZSBhYmxlIHRvIGFkZCBhIG5ldyBibG9jaworICogdG8gYW4gaW5vZGUuICBJdCBjYW4gYWxzbyBiZSB1c2VkIGZvciBwcm9ncmFtcyB0aGF0IHdhbnQgdG8gYmUgYWJsZQorICogdG8gZGVhbCB3aXRoIGZpbGVzIHRoYXQgY29udGFpbiAiaG9sZXMiLgorICoKKyAqIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UgaW5kaWNhdGVzIHRoYXQgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9uIGZvcgorICogdGhlIGluZGlyZWN0LCBkb3VibHkgaW5kaXJlY3QsIGV0Yy4gYmxvY2tzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIKKyAqIGFsbCBvZiB0aGUgYmxvY2tzIGNvbnRhaW5pbmVkIGluIHRoZSBpbmRpcmVjdCBibG9ja3MgYXJlIHByb2Nlc3NlZC4KKyAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSBhcmUgZ29pbmcgdG8gYmUgZGVhbGxvY2F0aW5nIGJsb2NrcyBmcm9tIGFuCisgKiBpbm9kZS4KKyAqCisgKiBCTE9DS19GTEFHX0RBVEFfT05MWSBpbmRpY2F0ZXMgdGhhdCB0aGUgaXRlcmF0b3IgZnVuY3Rpb24gc2hvdWxkIGJlCisgKiBjYWxsZWQgZm9yIGRhdGEgYmxvY2tzIG9ubHkuCisgKgorICogQkxPQ0tfRkxBR19SRUFEX09OTFkgaXMgYSBwcm9taXNlIGJ5IHRoZSBjYWxsZXIgdGhhdCBpdCB3aWxsIG5vdAorICogbW9kaWZ5IHJldHVybmVkIGJsb2NrIG51bWJlci4KKyAqCisgKiBCTE9DS19GTEFHX05PX0xBUkdFIGlzIGZvciBpbnRlcm5hbCB1c2Ugb25seS4gIEl0IGluZm9ybXMKKyAqIGV4dDJmc19ibG9ja19pdGVyYXRlMiB0aGF0IGxhcmdlIGZpbGVzIHdvbid0IGJlIGFjY2VwdGVkLgorICovCisjZGVmaW5lIEJMT0NLX0ZMQUdfQVBQRU5ECTEKKyNkZWZpbmUgQkxPQ0tfRkxBR19IT0xFCQkxCisjZGVmaW5lIEJMT0NLX0ZMQUdfREVQVEhfVFJBVkVSU0UJMgorI2RlZmluZSBCTE9DS19GTEFHX0RBVEFfT05MWQk0CisjZGVmaW5lIEJMT0NLX0ZMQUdfUkVBRF9PTkxZCTgKKworI2RlZmluZSBCTE9DS19GTEFHX05PX0xBUkdFCTB4MTAwMAorCisvKgorICogTWFnaWMgImJsb2NrIGNvdW50IiByZXR1cm4gdmFsdWVzIGZvciB0aGUgYmxvY2sgaXRlcmF0b3IgZnVuY3Rpb24uCisgKi8KKyNkZWZpbmUgQkxPQ0tfQ09VTlRfSU5ECQkoLTEpCisjZGVmaW5lIEJMT0NLX0NPVU5UX0RJTkQJKC0yKQorI2RlZmluZSBCTE9DS19DT1VOVF9USU5ECSgtMykKKyNkZWZpbmUgQkxPQ0tfQ09VTlRfVFJBTlNMQVRPUgkoLTQpCisKKyNpZiAwCisvKgorICogRmxhZ3MgZm9yIGV4dDJmc19tb3ZlX2Jsb2NrcworICovCisjZGVmaW5lIEVYVDJfQk1PVkVfR0VUX0RCTElTVAkweDAwMDEKKyNkZWZpbmUgRVhUMl9CTU9WRV9ERUJVRwkweDAwMDIKKyNlbmRpZgorCisvKgorICogR2VuZXJpYyAobm9uLWZpbGVzeXN0ZW0gbGF5b3V0IHNwZWNpZmljKSBleHRlbnRzIHN0cnVjdHVyZQorICovCisKKyNkZWZpbmUgRVhUMl9FWFRFTlRfRkxBR1NfTEVBRgkJMHgwMDAxCisjZGVmaW5lIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVAkweDAwMDIKKyNkZWZpbmUgRVhUMl9FWFRFTlRfRkxBR1NfU0VDT05EX1ZJU0lUCTB4MDAwNAorCitzdHJ1Y3QgZXh0MmZzX2V4dGVudCB7CisJYmxrNjRfdAllX3BibGs7CQkvKiBmaXJzdCBwaHlzaWNhbCBibG9jayAqLworCWJsazY0X3QJZV9sYmxrOwkJLyogZmlyc3QgbG9naWNhbCBibG9jayBleHRlbnQgY292ZXJzICovCisJX191MzIJZV9sZW47CQkvKiBudW1iZXIgb2YgYmxvY2tzIGNvdmVyZWQgYnkgZXh0ZW50ICovCisJX191MzIJZV9mbGFnczsJLyogZXh0ZW50IGZsYWdzICovCit9OworCit0eXBlZGVmIHN0cnVjdCBleHQyX2V4dGVudF9oYW5kbGUgKmV4dDJfZXh0ZW50X2hhbmRsZV90OwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9leHRlbnRfcGF0aCAqZXh0Ml9leHRlbnRfcGF0aF90OworCisvKgorICogRmxhZ3MgdXNlZCBieSBleHQyZnNfZXh0ZW50X2dldCgpCisgKi8KKyNkZWZpbmUgRVhUMl9FWFRFTlRfQ1VSUkVOVAkweDAwMDAKKyNkZWZpbmUgRVhUMl9FWFRFTlRfTU9WRV9NQVNLCTB4MDAwRgorI2RlZmluZSBFWFQyX0VYVEVOVF9ST09UCTB4MDAwMQorI2RlZmluZSBFWFQyX0VYVEVOVF9MQVNUX0xFQUYJMHgwMDAyCisjZGVmaW5lIEVYVDJfRVhURU5UX0ZJUlNUX1NJQgkweDAwMDMKKyNkZWZpbmUgRVhUMl9FWFRFTlRfTEFTVF9TSUIJMHgwMDA0CisjZGVmaW5lIEVYVDJfRVhURU5UX05FWFRfU0lCCTB4MDAwNQorI2RlZmluZSBFWFQyX0VYVEVOVF9QUkVWX1NJQgkweDAwMDYKKyNkZWZpbmUgRVhUMl9FWFRFTlRfTkVYVF9MRUFGCTB4MDAwNworI2RlZmluZSBFWFQyX0VYVEVOVF9QUkVWX0xFQUYJMHgwMDA4CisjZGVmaW5lIEVYVDJfRVhURU5UX05FWFQJMHgwMDA5CisjZGVmaW5lIEVYVDJfRVhURU5UX1BSRVYJMHgwMDBBCisjZGVmaW5lIEVYVDJfRVhURU5UX1VQCQkweDAwMEIKKyNkZWZpbmUgRVhUMl9FWFRFTlRfRE9XTgkweDAwMEMKKyNkZWZpbmUgRVhUMl9FWFRFTlRfRE9XTl9BTkRfTEFTVCAweDAwMEQKKworLyoKKyAqIEZsYWdzIHVzZWQgYnkgZXh0MmZzX2V4dGVudF9pbnNlcnQoKQorICovCisjZGVmaW5lIEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUgkweDAwMDEgLyogaW5zZXJ0IGFmdGVyIGhhbmRsZSBsb2MnbiAqLworI2RlZmluZSBFWFQyX0VYVEVOVF9JTlNFUlRfTk9TUExJVAkweDAwMDIgLyogaW5zZXJ0IG1heSBub3QgY2F1c2Ugc3BsaXQgKi8KKworLyoKKyAqIEZsYWdzIHVzZWQgYnkgZXh0MmZzX2V4dGVudF9kZWxldGUoKQorICovCisjZGVmaW5lIEVYVDJfRVhURU5UX0RFTEVURV9LRUVQX0VNUFRZCTB4MDAxIC8qIGtlZXAgbm9kZSBpZiBsYXN0IGV4dG50IGdvbmUgKi8KKworLyoKKyAqIEZsYWdzIHVzZWQgYnkgZXh0MmZzX2V4dGVudF9zZXRfYm1hcCgpCisgKi8KKyNkZWZpbmUgRVhUMl9FWFRFTlRfU0VUX0JNQVBfVU5JTklUCTB4MDAwMQorCisvKgorICogRGF0YSBzdHJ1Y3R1cmUgcmV0dXJuZWQgYnkgZXh0MmZzX2V4dGVudF9nZXRfaW5mbygpCisgKi8KK3N0cnVjdCBleHQyX2V4dGVudF9pbmZvIHsKKwlpbnQJCWN1cnJfZW50cnk7CisJaW50CQljdXJyX2xldmVsOworCWludAkJbnVtX2VudHJpZXM7CisJaW50CQltYXhfZW50cmllczsKKwlpbnQJCW1heF9kZXB0aDsKKwlpbnQJCWJ5dGVzX2F2YWlsOworCWJsazY0X3QJCW1heF9sYmxrOworCWJsazY0X3QJCW1heF9wYmxrOworCV9fdTMyCQltYXhfbGVuOworCV9fdTMyCQltYXhfdW5pbml0X2xlbjsKK307CisKKy8qCisgKiBGbGFncyBmb3IgZGlyZWN0b3J5IGJsb2NrIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnVuY3Rpb25zCisgKi8KKyNkZWZpbmUgRVhUMl9ESVJCTE9DS19WMl9TVFJVQ1QJMHgwMDAxCisKKy8qCisgKiBSZXR1cm4gZmxhZ3MgZm9yIHRoZSBkaXJlY3RvcnkgaXRlcmF0b3IgZnVuY3Rpb25zCisgKi8KKyNkZWZpbmUgRElSRU5UX0NIQU5HRUQJMQorI2RlZmluZSBESVJFTlRfQUJPUlQJMgorI2RlZmluZSBESVJFTlRfRVJST1IJMworCisvKgorICogRGlyZWN0b3J5IGl0ZXJhdG9yIGZsYWdzCisgKi8KKworI2RlZmluZSBESVJFTlRfRkxBR19JTkNMVURFX0VNUFRZCTEKKyNkZWZpbmUgRElSRU5UX0ZMQUdfSU5DTFVERV9SRU1PVkVECTIKKyNkZWZpbmUgRElSRU5UX0ZMQUdfSU5DTFVERV9DU1VNCTQKKyNkZWZpbmUgRElSRU5UX0ZMQUdfSU5DTFVERV9JTkxJTkVfREFUQSA4CisKKyNkZWZpbmUgRElSRU5UX0RPVF9GSUxFCQkxCisjZGVmaW5lIERJUkVOVF9ET1RfRE9UX0ZJTEUJMgorI2RlZmluZSBESVJFTlRfT1RIRVJfRklMRQkzCisjZGVmaW5lIERJUkVOVF9ERUxFVEVEX0ZJTEUJNAorI2RlZmluZSBESVJFTlRfQ0hFQ0tTVU0JCTUKKworLyoKKyAqIElub2RlIHNjYW4gZGVmaW5pdGlvbnMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfaW5vZGVfc2NhbiAqZXh0Ml9pbm9kZV9zY2FuOworCisvKgorICogZXh0MmZzX3NjYW4gZmxhZ3MKKyAqLworI2RlZmluZSBFWFQyX1NGX0NIS19CQURCTE9DS1MJMHgwMDAxCisjZGVmaW5lIEVYVDJfU0ZfQkFEX0lOT0RFX0JMSwkweDAwMDIKKyNkZWZpbmUgRVhUMl9TRl9CQURfRVhUUkFfQllURVMJMHgwMDA0CisjZGVmaW5lIEVYVDJfU0ZfU0tJUF9NSVNTSU5HX0lUQUJMRQkweDAwMDgKKyNkZWZpbmUgRVhUMl9TRl9ET19MQVpZCQkweDAwMTAKKyNkZWZpbmUgRVhUMl9TRl9XQVJOX0dBUkJBR0VfSU5PREVTCTB4MDAyMAorCisvKgorICogZXh0MmZzX2NoZWNrX2lmX21vdW50ZWQgZmxhZ3MKKyAqLworI2RlZmluZSBFWFQyX01GX01PVU5URUQJCTEKKyNkZWZpbmUgRVhUMl9NRl9JU1JPT1QJCTIKKyNkZWZpbmUgRVhUMl9NRl9SRUFET05MWQk0CisjZGVmaW5lIEVYVDJfTUZfU1dBUAkJOAorI2RlZmluZSBFWFQyX01GX0JVU1kJCTE2CisKKy8qCisgKiBFeHQyL2xpbnV4IG1vZGUgZmxhZ3MuICBXZSBkZWZpbmUgdGhlbSBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZAorICogdG8gZGVwZW5kIG9uIHRoZSBPUydzIHN5cy9zdGF0LmgsIHNpbmNlIHdlIG1heSBiZSBjb21waWxpbmcgb24gYQorICogbm9uLUxpbnV4IHN5c3RlbS4KKyAqLworI2RlZmluZSBMSU5VWF9TX0lGTVQgIDAwMTcwMDAwCisjZGVmaW5lIExJTlVYX1NfSUZTT0NLIDAxNDAwMDAKKyNkZWZpbmUgTElOVVhfU19JRkxOSwkgMDEyMDAwMAorI2RlZmluZSBMSU5VWF9TX0lGUkVHICAwMTAwMDAwCisjZGVmaW5lIExJTlVYX1NfSUZCTEsgIDAwNjAwMDAKKyNkZWZpbmUgTElOVVhfU19JRkRJUiAgMDA0MDAwMAorI2RlZmluZSBMSU5VWF9TX0lGQ0hSICAwMDIwMDAwCisjZGVmaW5lIExJTlVYX1NfSUZJRk8gIDAwMTAwMDAKKyNkZWZpbmUgTElOVVhfU19JU1VJRCAgMDAwNDAwMAorI2RlZmluZSBMSU5VWF9TX0lTR0lEICAwMDAyMDAwCisjZGVmaW5lIExJTlVYX1NfSVNWVFggIDAwMDEwMDAKKworI2RlZmluZSBMSU5VWF9TX0lSV1hVIDAwNzAwCisjZGVmaW5lIExJTlVYX1NfSVJVU1IgMDA0MDAKKyNkZWZpbmUgTElOVVhfU19JV1VTUiAwMDIwMAorI2RlZmluZSBMSU5VWF9TX0lYVVNSIDAwMTAwCisKKyNkZWZpbmUgTElOVVhfU19JUldYRyAwMDA3MAorI2RlZmluZSBMSU5VWF9TX0lSR1JQIDAwMDQwCisjZGVmaW5lIExJTlVYX1NfSVdHUlAgMDAwMjAKKyNkZWZpbmUgTElOVVhfU19JWEdSUCAwMDAxMAorCisjZGVmaW5lIExJTlVYX1NfSVJXWE8gMDAwMDcKKyNkZWZpbmUgTElOVVhfU19JUk9USCAwMDAwNAorI2RlZmluZSBMSU5VWF9TX0lXT1RIIDAwMDAyCisjZGVmaW5lIExJTlVYX1NfSVhPVEggMDAwMDEKKworI2RlZmluZSBMSU5VWF9TX0lTTE5LKG0pCSgoKG0pICYgTElOVVhfU19JRk1UKSA9PSBMSU5VWF9TX0lGTE5LKQorI2RlZmluZSBMSU5VWF9TX0lTUkVHKG0pCSgoKG0pICYgTElOVVhfU19JRk1UKSA9PSBMSU5VWF9TX0lGUkVHKQorI2RlZmluZSBMSU5VWF9TX0lTRElSKG0pCSgoKG0pICYgTElOVVhfU19JRk1UKSA9PSBMSU5VWF9TX0lGRElSKQorI2RlZmluZSBMSU5VWF9TX0lTQ0hSKG0pCSgoKG0pICYgTElOVVhfU19JRk1UKSA9PSBMSU5VWF9TX0lGQ0hSKQorI2RlZmluZSBMSU5VWF9TX0lTQkxLKG0pCSgoKG0pICYgTElOVVhfU19JRk1UKSA9PSBMSU5VWF9TX0lGQkxLKQorI2RlZmluZSBMSU5VWF9TX0lTRklGTyhtKQkoKChtKSAmIExJTlVYX1NfSUZNVCkgPT0gTElOVVhfU19JRklGTykKKyNkZWZpbmUgTElOVVhfU19JU1NPQ0sobSkJKCgobSkgJiBMSU5VWF9TX0lGTVQpID09IExJTlVYX1NfSUZTT0NLKQorCisvKgorICogZXh0MiBzaXplIG9mIGFuIGlub2RlCisgKi8KKyNkZWZpbmUgRVhUMl9JX1NJWkUoaSkJKChpKS0+aV9zaXplIHwgKChfX3U2NCkgKGkpLT5pX3NpemVfaGlnaCA8PCAzMikpCisKKy8qCisgKiBleHQyX2ljb3VudF90IGFic3RyYWN0aW9uCisgKi8KKyNkZWZpbmUgRVhUMl9JQ09VTlRfT1BUX0lOQ1JFTUVOVAkweDAxCisKK3R5cGVkZWYgc3RydWN0IGV4dDJfaWNvdW50ICpleHQyX2ljb3VudF90OworCisvKgorICogRmxhZ3MgZm9yIGV4dDJmc19ibWFwCisgKi8KKyNkZWZpbmUgQk1BUF9BTExPQwkweDAwMDEKKyNkZWZpbmUgQk1BUF9TRVQJMHgwMDAyCisjZGVmaW5lIEJNQVBfVU5JTklUCTB4MDAwNAorI2RlZmluZSBCTUFQX1pFUk8JMHgwMDA4CisKKy8qCisgKiBSZXR1cm5lZCBmbGFncyBmcm9tIGV4dDJmc19ibWFwCisgKi8KKyNkZWZpbmUgQk1BUF9SRVRfVU5JTklUCTB4MDAwMQorCisvKgorICogRmxhZ3MgZm9yIGltYWdlci5jIGZ1bmN0aW9ucworICovCisjZGVmaW5lIElNQUdFUl9GTEFHX0lOT0RFTUFQCTEKKyNkZWZpbmUgSU1BR0VSX0ZMQUdfU1BBUlNFV1JJVEUJMgorCisvKgorICogRm9yIGNoZWNraW5nIHN0cnVjdHVyZSBtYWdpYyBudW1iZXJzLi4uCisgKi8KKworI2RlZmluZSBFWFQyX0NIRUNLX01BR0lDKHN0cnVjdCwgY29kZSkgXAorCSAgaWYgKChzdHJ1Y3QpLT5tYWdpYyAhPSAoY29kZSkpIHJldHVybiAoY29kZSkKKworLyoKKyAqIEZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkKKyAqLworI2RlZmluZSBFWFQyX0xJQl9GRUFUVVJFX0NPTVBBVF9TVVBQCShFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9QUkVBTExPQ3xcCisJCQkJCSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0lNQUdJQ19JTk9ERVN8XAorCQkJCQkgRVhUM19GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTHxcCisJCQkJCSBFWFQyX0ZFQVRVUkVfQ09NUEFUX1JFU0laRV9JTk9ERXxcCisJCQkJCSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9JTkRFWHxcCisJCQkJCSBFWFQyX0ZFQVRVUkVfQ09NUEFUX0VYVF9BVFRSfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9DT01QQVRfU1BBUlNFX1NVUEVSMikKKworI2lmZGVmIENPTkZJR19NTVAKKyNkZWZpbmUgRVhUNF9MSUJfSU5DT01QQVRfTU1QCQlFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QCisjZWxzZQorI2RlZmluZSBFWFQ0X0xJQl9JTkNPTVBBVF9NTVAJCSgwKQorI2VuZGlmCisKKyNkZWZpbmUgRVhUMl9MSUJfRkVBVFVSRV9JTkNPTVBBVF9TVVBQCShFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEV8XAorCQkJCQkgRVhUM19GRUFUVVJFX0lOQ09NUEFUX0pPVVJOQUxfREVWfFwKKwkJCQkJIEVYVDJfRkVBVFVSRV9JTkNPTVBBVF9NRVRBX0JHfFwKKwkJCQkJIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9SRUNPVkVSfFwKKwkJCQkJIEVYVDNfRkVBVFVSRV9JTkNPTVBBVF9FWFRFTlRTfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9GTEVYX0JHfFwKKwkJCQkJIEVYVDRfTElCX0lOQ09NUEFUX01NUHxcCisJCQkJCSBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfNjRCSVR8XAorCQkJCQkgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0lOTElORV9EQVRBfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9FTkNSWVBUfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1NFRUQpCisKKyNkZWZpbmUgRVhUMl9MSUJfRkVBVFVSRV9ST19DT01QQVRfU1VQUAkoRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9TUEFSU0VfU1VQRVJ8XAorCQkJCQkgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEV8XAorCQkJCQkgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfRVhUUkFfSVNJWkV8XAorCQkJCQkgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9HRFRfQ1NVTXxcCisJCQkJCSBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0JJR0FMTE9DfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUVVPVEF8XAorCQkJCQkgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUkVBRE9OTFkgfFwKKwkJCQkJIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVCkKKworLyoKKyAqIFRoZXNlIGZlYXR1cmVzIGFyZSBvbmx5IGFsbG93ZWQgaWYgRVhUMl9GTEFHX1NPRlRTVVBQX0ZFQVRVUkVTIGlzIHBhc3NlZAorICogdG8gZXh0MmZzX29wZW5mcygpCisgKi8KKyNkZWZpbmUgRVhUMl9MSUJfU09GVFNVUFBfSU5DT01QQVQJKDApCisjZGVmaW5lIEVYVDJfTElCX1NPRlRTVVBQX1JPX0NPTVBBVAkoRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9SRVBMSUNBKQorCisKKy8qIFRyYW5zbGF0ZSBhIGJsb2NrIG51bWJlciB0byBhIGNsdXN0ZXIgbnVtYmVyICovCisjZGVmaW5lIEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKQkoMSA8PCAoZnMpLT5jbHVzdGVyX3JhdGlvX2JpdHMpCisjZGVmaW5lIEVYVDJGU19DTFVTVEVSX01BU0soZnMpCQkoRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpIC0gMSkKKyNkZWZpbmUgRVhUMkZTX0IyQyhmcywgYmxrKQkJKChibGspID4+IChmcyktPmNsdXN0ZXJfcmF0aW9fYml0cykKKy8qIFRyYW5zbGF0ZSBhIGNsdXN0ZXIgbnVtYmVyIHRvIGEgYmxvY2sgbnVtYmVyICovCisjZGVmaW5lIEVYVDJGU19DMkIoZnMsIGNsdXN0ZXIpCQkoKGNsdXN0ZXIpIDw8IChmcyktPmNsdXN0ZXJfcmF0aW9fYml0cykKKy8qIFRyYW5zbGF0ZSAjIG9mIGJsa3MgdG8gIyBvZiBjbHVzdGVycyAqLworI2RlZmluZSBFWFQyRlNfTlVNX0IyQyhmcywgYmxrcykJKCgoYmxrcykgKyBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSkgPj4gXAorCQkJCQkgKGZzKS0+Y2x1c3Rlcl9yYXRpb19iaXRzKQorCisjaWYgZGVmaW5lZChIQVZFX0ZTVEFUNjQpICYmICFkZWZpbmVkKF9fT1NYX0FWQUlMQUJMRV9CVVRfREVQUkVDQVRFRCkKK3R5cGVkZWYgc3RydWN0IHN0YXQ2NCBleHQyZnNfc3RydWN0X3N0YXQ7CisjZWxzZQordHlwZWRlZiBzdHJ1Y3Qgc3RhdCBleHQyZnNfc3RydWN0X3N0YXQ7CisjZW5kaWYKKworLyoKKyAqIEZvciBleHQyZnNfY2xvc2UyKCkgYW5kIGV4dDJmc19mbHVzaDIoKSwgdGhpcyBmbGFnIGFsbG93cyB5b3UgdG8KKyAqIGF2b2lkIHRoZSBmc3luYyBjYWxsLgorICovCisjZGVmaW5lIEVYVDJfRkxBR19GTFVTSF9OT19TWU5DICAgICAgICAgIDEKKworLyoKKyAqIE1vZGlmeSBhbmQgaXRlcmF0ZSBleHRlbmRlZCBhdHRyaWJ1dGVzCisgKi8KK3N0cnVjdCBleHQyX3hhdHRyX2hhbmRsZTsKKyNkZWZpbmUgWEFUVFJfQUJPUlQJMQorI2RlZmluZSBYQVRUUl9DSEFOR0VECTIKKworLyoKKyAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAqLworc3RhdGljIGlubGluZSBpbnQgZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZXh0Ml9maWxzeXMgZnMpCit7CisJcmV0dXJuIGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgfHwKKwkgICAgICAgZXh0MmZzX2hhc19mZWF0dXJlX2dkdF9jc3VtKGZzLT5zdXBlcik7Cit9CisKKy8qIFRoZSBMQVJHRV9GSUxFIGZlYXR1cmUgc2hvdWxkIGJlIHNldCBpZiB3ZSBoYXZlIHN0b3JlZCBmaWxlcyAyR0IrIGluIHNpemUgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGV4dDJmc19uZWVkc19sYXJnZV9maWxlX2ZlYXR1cmUodW5zaWduZWQgbG9uZyBsb25nIGZpbGVfc2l6ZSkKK3sKKwlyZXR1cm4gZmlsZV9zaXplID49IDB4ODAwMDAwMDBVTEw7Cit9CisKKy8qIGFsbG9jLmMgKi8KK2V4dGVybiB2b2lkIGV4dDJmc19jbGVhcl9ibG9ja191bmluaXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19uZXdfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLCBpbnQgbW9kZSwKKwkJCQkgIGV4dDJmc19pbm9kZV9iaXRtYXAgbWFwLCBleHQyX2lub190ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbmV3X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBnb2FsLAorCQkJCSAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBtYXAsIGJsa190ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbmV3X2Jsb2NrMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLAorCQkJCSAgIGV4dDJmc19ibG9ja19iaXRtYXAgbWFwLCBibGs2NF90ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2ZyZWVfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBzdGFydCwKKwkJCQkJYmxrX3QgZmluaXNoLCBpbnQgbnVtLAorCQkJCQlleHQyZnNfYmxvY2tfYml0bWFwIG1hcCwKKwkJCQkJYmxrX3QgKnJldCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfZnJlZV9ibG9ja3MyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IHN0YXJ0LAorCQkJCQkgYmxrNjRfdCBmaW5pc2gsIGludCBudW0sCisJCQkJCSBleHQyZnNfYmxvY2tfYml0bWFwIG1hcCwKKwkJCQkJIGJsazY0X3QgKnJldCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19hbGxvY19ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgZ29hbCwKKwkJCQkgICAgY2hhciAqYmxvY2tfYnVmLCBibGtfdCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jX2Jsb2NrMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBnb2FsLAorCQkJCSAgICAgY2hhciAqYmxvY2tfYnVmLCBibGs2NF90ICpyZXQpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3NldF9hbGxvY19ibG9ja19jYWxsYmFjayhleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgIGVycmNvZGVfdCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkJCSAgICAgIGJsazY0X3QgZ29hbCwKKwkJCQkJCQkgICAgICBibGs2NF90ICpyZXQpLAorCQkJCQkgICAgZXJyY29kZV90ICgqKm9sZCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkJICAgICAgYmxrNjRfdCBnb2FsLAorCQkJCQkJCSAgICAgIGJsazY0X3QgKnJldCkpOworYmxrNjRfdCBleHQyZnNfZmluZF9pbm9kZV9nb2FsKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGJsazY0X3QgbGJsayk7CitleHRlcm4gdm9pZCBleHQyZnNfc2V0X25ld19yYW5nZV9jYWxsYmFjayhleHQyX2ZpbHN5cyBmcywKKwllcnJjb2RlX3QgKCpmdW5jKShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkgICAgICAgYmxrNjRfdCBsZW4sIGJsazY0X3QgKnBibGssIGJsazY0X3QgKnBsZW4pLAorCWVycmNvZGVfdCAoKipvbGQpKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MsIGJsazY0X3QgZ29hbCwKKwkJCSAgICAgICBibGs2NF90IGxlbiwgYmxrNjRfdCAqcGJsaywgYmxrNjRfdCAqcGxlbikpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3NldF9ibG9ja19hbGxvY19zdGF0c19yYW5nZV9jYWxsYmFjayhleHQyX2ZpbHN5cyBmcywKKwl2b2lkICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLAorCQkJCSAgICBibGtfdCBudW0sIGludCBpbnVzZSksCisJdm9pZCAoKipvbGQpKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywKKwkJCQkgICAgYmxrX3QgbnVtLCBpbnQgaW51c2UpKTsKKyNkZWZpbmUgRVhUMl9ORVdSQU5HRV9GSVhFRF9HT0FMCSgweDEpCisjZGVmaW5lIEVYVDJfTkVXUkFOR0VfTUlOX0xFTkdUSAkoMHgyKQorI2RlZmluZSBFWFQyX05FV1JBTkdFX0FMTF9GTEFHUwkJKDB4MykKK2VycmNvZGVfdCBleHQyZnNfbmV3X3JhbmdlKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmxhZ3MsIGJsazY0X3QgZ29hbCwKKwkJCSAgIGJsazY0X3QgbGVuLCBleHQyZnNfYmxvY2tfYml0bWFwIG1hcCwgYmxrNjRfdCAqcGJsaywKKwkJCSAgIGJsazY0X3QgKnBsZW4pOworI2RlZmluZSBFWFQyX0FMTE9DUkFOR0VfRklYRURfR09BTAkoMHgxKQorI2RlZmluZSBFWFQyX0FMTE9DUkFOR0VfWkVST19CTE9DS1MJKDB4MikKKyNkZWZpbmUgRVhUMl9BTExPQ1JBTkdFX0FMTF9GTEFHUwkoMHgzKQorZXJyY29kZV90IGV4dDJmc19hbGxvY19yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBibGs2NF90IGdvYWwsCisJCQkgICAgIGJsa190IGxlbiwgYmxrNjRfdCAqcmV0KTsKKworLyogYWxsb2Nfc2IuYyAqLworZXh0ZXJuIGludCBleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGV4dDJfZmlsc3lzIGZzLAorCQkJCQlkZ3JwX3QgZ3JvdXAsCisJCQkJCWV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCk7CitleHRlcm4gdm9pZCBleHQyZnNfc2V0X2Jsb2NrX2FsbG9jX3N0YXRzX2NhbGxiYWNrKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkJICB2b2lkICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkJICAgICAgIGJsazY0X3QgYmxrLAorCQkJCQkJCSAgICAgICBpbnQgaW51c2UpLAorCQkJCQkJICB2b2lkICgqKm9sZCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkJICAgICAgIGJsazY0X3QgYmxrLAorCQkJCQkJCSAgICAgICBpbnQgaW51c2UpKTsKKworLyogYWxsb2Nfc3RhdHMuYyAqLwordm9pZCBleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBpbnQgaW51c2UpOwordm9pZCBleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBpbnQgaW51c2UsIGludCBpc2Rpcik7Cit2b2lkIGV4dDJmc19ibG9ja19hbGxvY19zdGF0cyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxrLCBpbnQgaW51c2UpOwordm9pZCBleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywgaW50IGludXNlKTsKK3ZvaWQgZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywKKwkJCQkgICAgYmxrX3QgbnVtLCBpbnQgaW51c2UpOworCisvKiBhbGxvY190YWJsZXMuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfdGFibGVzKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX2dyb3VwX3RhYmxlKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJCSAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwKTsKKworLyogYmFkYmxvY2tzLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3UzMl9saXN0X2NyZWF0ZShleHQyX3UzMl9saXN0ICpyZXQsIGludCBzaXplKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3UzMl9saXN0X2FkZChleHQyX3UzMl9saXN0IGJiLCBfX3UzMiBibGspOworZXh0ZXJuIGludCBleHQyZnNfdTMyX2xpc3RfZmluZChleHQyX3UzMl9saXN0IGJiLCBfX3UzMiBibGspOworZXh0ZXJuIGludCBleHQyZnNfdTMyX2xpc3RfdGVzdChleHQyX3UzMl9saXN0IGJiLCBibGtfdCBibGspOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfdTMyX2xpc3RfaXRlcmF0ZV9iZWdpbihleHQyX3UzMl9saXN0IGJiLAorCQkJCQkgICAgICAgZXh0Ml91MzJfaXRlcmF0ZSAqcmV0KTsKK2V4dGVybiBpbnQgZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGUoZXh0Ml91MzJfaXRlcmF0ZSBpdGVyLCBibGtfdCAqYmxrKTsKK2V4dGVybiB2b2lkIGV4dDJmc191MzJfbGlzdF9pdGVyYXRlX2VuZChleHQyX3UzMl9pdGVyYXRlIGl0ZXIpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfdTMyX2NvcHkoZXh0Ml91MzJfbGlzdCBzcmMsIGV4dDJfdTMyX2xpc3QgKmRlc3QpOworZXh0ZXJuIGludCBleHQyZnNfdTMyX2xpc3RfZXF1YWwoZXh0Ml91MzJfbGlzdCBiYjEsIGV4dDJfdTMyX2xpc3QgYmIyKTsKKworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfY3JlYXRlKGV4dDJfYmFkYmxvY2tzX2xpc3QgKnJldCwKKwkJCQkJICAgIGludCBzaXplKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2FkZChleHQyX2JhZGJsb2Nrc19saXN0IGJiLAorCQkJCQkgICBibGtfdCBibGspOworZXh0ZXJuIGludCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfdGVzdChleHQyX2JhZGJsb2Nrc19saXN0IGJiLAorCQkJCSAgICBibGtfdCBibGspOworZXh0ZXJuIGludCBleHQyZnNfdTMyX2xpc3RfZGVsKGV4dDJfdTMyX2xpc3QgYmIsIF9fdTMyIGJsayk7CitleHRlcm4gdm9pZCBleHQyZnNfYmFkYmxvY2tzX2xpc3RfZGVsKGV4dDJfdTMyX2xpc3QgYmIsIF9fdTMyIGJsayk7CitleHRlcm4gZXJyY29kZV90CisJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4oZXh0Ml9iYWRibG9ja3NfbGlzdCBiYiwKKwkJCQkJICAgIGV4dDJfYmFkYmxvY2tzX2l0ZXJhdGUgKnJldCk7CitleHRlcm4gaW50IGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKGV4dDJfYmFkYmxvY2tzX2l0ZXJhdGUgaXRlciwKKwkJCQkJIGJsa190ICpibGspOworZXh0ZXJuIHZvaWQgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfZW5kKGV4dDJfYmFkYmxvY2tzX2l0ZXJhdGUgaXRlcik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19iYWRibG9ja3NfY29weShleHQyX2JhZGJsb2Nrc19saXN0IHNyYywKKwkJCQkgICAgICAgZXh0Ml9iYWRibG9ja3NfbGlzdCAqZGVzdCk7CitleHRlcm4gaW50IGV4dDJmc19iYWRibG9ja3NfZXF1YWwoZXh0Ml9iYWRibG9ja3NfbGlzdCBiYjEsCisJCQkJICBleHQyX2JhZGJsb2Nrc19saXN0IGJiMik7CitleHRlcm4gaW50IGV4dDJmc191MzJfbGlzdF9jb3VudChleHQyX3UzMl9saXN0IGJiKTsKKworLyogYmJfY29tcGF0ICovCitleHRlcm4gZXJyY29kZV90IGJhZGJsb2Nrc19saXN0X2NyZWF0ZShiYWRibG9ja3NfbGlzdCAqcmV0LCBpbnQgc2l6ZSk7CitleHRlcm4gZXJyY29kZV90IGJhZGJsb2Nrc19saXN0X2FkZChiYWRibG9ja3NfbGlzdCBiYiwgYmxrX3QgYmxrKTsKK2V4dGVybiBpbnQgYmFkYmxvY2tzX2xpc3RfdGVzdChiYWRibG9ja3NfbGlzdCBiYiwgYmxrX3QgYmxrKTsKK2V4dGVybiBlcnJjb2RlX3QgYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbihiYWRibG9ja3NfbGlzdCBiYiwKKwkJCQkJICAgICAgYmFkYmxvY2tzX2l0ZXJhdGUgKnJldCk7CitleHRlcm4gaW50IGJhZGJsb2Nrc19saXN0X2l0ZXJhdGUoYmFkYmxvY2tzX2l0ZXJhdGUgaXRlciwgYmxrX3QgKmJsayk7CitleHRlcm4gdm9pZCBiYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChiYWRibG9ja3NfaXRlcmF0ZSBpdGVyKTsKK2V4dGVybiB2b2lkIGJhZGJsb2Nrc19saXN0X2ZyZWUoYmFkYmxvY2tzX2xpc3QgYmIpOworCisvKiBiYl9pbm9kZS5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc191cGRhdGVfYmJfaW5vZGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJCWV4dDJfYmFkYmxvY2tzX2xpc3QgYmJfbGlzdCk7CisKKy8qIGJpdG1hcHMuYyAqLworZXh0ZXJuIHZvaWQgZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jb3B5X2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgc3JjLAorCQkJCSAgICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgKmRlc3QpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfaW5vZGVfYml0bWFwKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2Jsb2NrX2JpdG1hcCAoZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVhZF9pbm9kZV9iaXRtYXAgKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgICAgY29uc3QgY2hhciAqZGVzY3IsCisJCQkJCSAgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgKnJldCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19hbGxvY2F0ZV9zdWJjbHVzdGVyX2JpdG1hcChleHQyX2ZpbHN5cyBmcywKKwkJCQkJCSAgIGNvbnN0IGNoYXIgKmRlc2NyLAorCQkJCQkJICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCAqcmV0KTsKK2V4dGVybiBpbnQgZXh0MmZzX2dldF9iaXRtYXBfZ3JhbnVsYXJpdHkoZXh0MmZzX2Jsb2NrX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkJICAgICAgZXh0MmZzX2lub2RlX2JpdG1hcCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2lub2RlX2JpdG1hcF9lbmQoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgICBleHQyX2lub190IGVuZCwgZXh0Ml9pbm9fdCAqb2VuZCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICAgYmxrX3QgZW5kLCBibGtfdCAqb2VuZCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mdWRnZV9ibG9ja19iaXRtYXBfZW5kMihleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCwKKwkJCQkJIGJsazY0X3QgZW5kLCBibGs2NF90ICpvZW5kKTsKK2V4dGVybiB2b2lkIGV4dDJmc19jbGVhcl9pbm9kZV9iaXRtYXAoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIHZvaWQgZXh0MmZzX2NsZWFyX2Jsb2NrX2JpdG1hcChleHQyZnNfYmxvY2tfYml0bWFwIGJpdG1hcCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZWFkX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfYml0bWFwcyhleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZXNpemVfaW5vZGVfYml0bWFwKF9fdTMyIG5ld19lbmQsIF9fdTMyIG5ld19yZWFsX2VuZCwKKwkJCQkJICAgIGV4dDJmc19pbm9kZV9iaXRtYXAgYm1hcCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZXNpemVfaW5vZGVfYml0bWFwMihfX3U2NCBuZXdfZW5kLAorCQkJCQkgICAgIF9fdTY0IG5ld19yZWFsX2VuZCwKKwkJCQkJICAgICBleHQyZnNfaW5vZGVfYml0bWFwIGJtYXApOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcChfX3UzMiBuZXdfZW5kLCBfX3UzMiBuZXdfcmVhbF9lbmQsCisJCQkJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXApOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcDIoX191NjQgbmV3X2VuZCwKKwkJCQkJICAgICBfX3U2NCBuZXdfcmVhbF9lbmQsCisJCQkJCSAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfYmxvY2tfYml0bWFwKGV4dDJmc19ibG9ja19iaXRtYXAgYm0xLAorCQkJCQkgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgYm0yKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfaW5vZGVfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYm0xLAorCQkJCQkgICAgIGV4dDJmc19pbm9kZV9iaXRtYXAgYm0yKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3NldF9pbm9kZV9iaXRtYXBfcmFuZ2UoZXh0MmZzX2lub2RlX2JpdG1hcCBibWFwLAorCQkJCQlleHQyX2lub190IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICppbik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19zZXRfaW5vZGVfYml0bWFwX3JhbmdlMihleHQyZnNfaW5vZGVfYml0bWFwIGJtYXAsCisJCQkJCSBfX3U2NCBzdGFydCwgc2l6ZV90IG51bSwKKwkJCQkJIHZvaWQgKmluKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfcmFuZ2UoZXh0MmZzX2lub2RlX2JpdG1hcCBibWFwLAorCQkJCQlleHQyX2lub190IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2lub2RlX2JpdG1hcCBibWFwLAorCQkJCQkgX191NjQgc3RhcnQsIHNpemVfdCBudW0sCisJCQkJCSB2b2lkICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfc2V0X2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAsCisJCQkJCWJsa190IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICppbik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19zZXRfYmxvY2tfYml0bWFwX3JhbmdlMihleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAsCisJCQkJCSBibGs2NF90IHN0YXJ0LCBzaXplX3QgbnVtLAorCQkJCQkgdm9pZCAqaW4pOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9yYW5nZShleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAsCisJCQkJCWJsa190IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwLAorCQkJCQkgYmxrNjRfdCBzdGFydCwgc2l6ZV90IG51bSwKKwkJCQkJIHZvaWQgKm91dCk7CisKKy8qIGJsa251bS5jICovCitleHRlcm4gX191MzIgZXh0MmZzX2lub2RlX2JpdG1hcF9jaGVja3N1bShleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiBfX3UzMiBleHQyZnNfYmxvY2tfYml0bWFwX2NoZWNrc3VtKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGRncnBfdCBleHQyZnNfZ3JvdXBfb2ZfYmxrMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCk7CitleHRlcm4gYmxrNjRfdCBleHQyZnNfZ3JvdXBfZmlyc3RfYmxvY2syKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGludCBleHQyZnNfZ3JvdXBfYmxvY2tzX2NvdW50KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzMihleHQyX2ZpbHN5cyBmcywKKwkJCQkJIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSk7CitleHRlcm4gYmxrNjRfdCBleHQyZnNfaW5vZGVfaV9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2Jsb2Nrc19jb3VudChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXQoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyLAorCQkJCSAgICBibGs2NF90IGJsayk7CitleHRlcm4gdm9pZCBleHQyZnNfYmxvY2tzX2NvdW50X2FkZChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsCisJCQkJICAgIGJsazY0X3QgYmxrKTsKK2V4dGVybiBibGs2NF90IGV4dDJmc19yX2Jsb2Nrc19jb3VudChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsCisJCQkJICAgICAgYmxrNjRfdCBibGspOworZXh0ZXJuIHZvaWQgZXh0MmZzX3JfYmxvY2tzX2NvdW50X2FkZChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXIsCisJCQkJICAgICAgYmxrNjRfdCBibGspOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlcik7CitleHRlcm4gdm9pZCBleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfc2V0KHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzdXBlciwKKwkJCQkJIGJsazY0X3QgYmxrKTsKK2V4dGVybiB2b2lkIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9hZGQoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnN1cGVyLAorCQkJCQkgYmxrNjRfdCBibGspOworLyogQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBhY2Nlc3NvciBmdW5jdGlvbnMgKi8KK2V4dGVybiBzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpleHQyZnNfZ3JvdXBfZGVzYyhleHQyX2ZpbHN5cyBmcywKKwkJCQkJICBzdHJ1Y3Qgb3BhcXVlX2V4dDJfZ3JvdXBfZGVzYyAqZ2RwLAorCQkJCQkgIGRncnBfdCBncm91cCk7CitleHRlcm4gYmxrNjRfdCBleHQyZnNfYmxvY2tfYml0bWFwX2NzdW0oZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gYmxrNjRfdCBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLAorCQkJCQlibGs2NF90IGJsayk7CitleHRlcm4gX191MzIgZXh0MmZzX2lub2RlX2JpdG1hcF9jc3VtKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gdm9pZCBleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkJYmxrNjRfdCBibGspOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJICAgICAgIGJsazY0X3QgYmxrKTsKK2V4dGVybiBfX3UzMiBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gdm9pZCBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJCSBfX3UzMiBuKTsKK2V4dGVybiBfX3UzMiBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gdm9pZCBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnRfc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsCisJCQkJCSBfX3UzMiBuKTsKK2V4dGVybiBfX3UzMiBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIHZvaWQgZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudF9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkgICAgICAgX191MzIgbik7CitleHRlcm4gX191MzIgZXh0MmZzX2JnX2l0YWJsZV91bnVzZWQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gdm9pZCBleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkgICAgIF9fdTMyIG4pOworZXh0ZXJuIF9fdTE2IGV4dDJmc19iZ19mbGFncyhleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19iZ19mbGFnc196YXAoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCk7CitleHRlcm4gaW50IGV4dDJmc19iZ19mbGFnc190ZXN0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXAsIF9fdTE2IGJnX2ZsYWcpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2JnX2ZsYWdzX3NldChleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwLCBfX3UxNiBiZ19mbGFncyk7CitleHRlcm4gdm9pZCBleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgX191MTYgYmdfZmxhZ3MpOworZXh0ZXJuIF9fdTE2IGV4dDJmc19iZ19jaGVja3N1bShleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19iZ19jaGVja3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgX191MTYgY2hlY2tzdW0pOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgICAgY29uc3Qgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKTsKK2V4dGVybiB2b2lkIGV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBibGs2NF90IGJsayk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pbm9kZV9zaXplX3NldChleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSAgICAgICBleHQyX29mZjY0X3Qgc2l6ZSk7CisKKy8qIGJsb2NrLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgICAgZXh0Ml9pbm9fdAlpbm8sCisJCQkJICAgICAgaW50CWZsYWdzLAorCQkJCSAgICAgIGNoYXIgKmJsb2NrX2J1ZiwKKwkJCQkgICAgICBpbnQgKCpmdW5jKShleHQyX2ZpbHN5cyBmcywKKwkJCQkJCSAgYmxrX3QJKmJsb2NrbnIsCisJCQkJCQkgIGludAlibG9ja2NudCwKKwkJCQkJCSAgdm9pZAkqcHJpdl9kYXRhKSwKKwkJCQkgICAgICB2b2lkICpwcml2X2RhdGEpOworZXJyY29kZV90IGV4dDJmc19ibG9ja19pdGVyYXRlMihleHQyX2ZpbHN5cyBmcywKKwkJCQlleHQyX2lub190CWlubywKKwkJCQlpbnQJZmxhZ3MsCisJCQkJY2hhciAqYmxvY2tfYnVmLAorCQkJCWludCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgYmxrX3QJKmJsb2NrbnIsCisJCQkJCSAgICBlMl9ibGtjbnRfdAlibG9ja2NudCwKKwkJCQkJICAgIGJsa190CXJlZl9ibGssCisJCQkJCSAgICBpbnQJCXJlZl9vZmZzZXQsCisJCQkJCSAgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJCXZvaWQgKnByaXZfZGF0YSk7CitlcnJjb2RlX3QgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKGV4dDJfZmlsc3lzIGZzLAorCQkJCWV4dDJfaW5vX3QgaW5vLAorCQkJCWludAlmbGFncywKKwkJCQljaGFyICpibG9ja19idWYsCisJCQkJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICBibGs2NF90CSpibG9ja25yLAorCQkJCQkgICAgZTJfYmxrY250X3QJYmxvY2tjbnQsCisJCQkJCSAgICBibGs2NF90CXJlZl9ibGssCisJCQkJCSAgICBpbnQJCXJlZl9vZmZzZXQsCisJCQkJCSAgICB2b2lkCSpwcml2X2RhdGEpLAorCQkJCXZvaWQgKnByaXZfZGF0YSk7CisKKy8qIGJtYXAuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYm1hcChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCSAgICAgY2hhciAqYmxvY2tfYnVmLCBpbnQgYm1hcF9mbGFncywKKwkJCSAgICAgYmxrX3QgYmxvY2ssIGJsa190ICpwaHlzX2Jsayk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19ibWFwMihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgICBjaGFyICpibG9ja19idWYsIGludCBibWFwX2ZsYWdzLCBibGs2NF90IGJsb2NrLAorCQkJICAgICAgaW50ICpyZXRfZmxhZ3MsIGJsazY0X3QgKnBoeXNfYmxrKTsKK2VycmNvZGVfdCBleHQyZnNfbWFwX2NsdXN0ZXJfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwgYmxrNjRfdCBsYmxrLAorCQkJCSAgIGJsazY0X3QgKnBibGspOworCisjaWYgMAorLyogYm1vdmUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbW92ZV9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIGV4dDJmc19ibG9ja19iaXRtYXAgcmVzZXJ2ZSwKKwkJCQkgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBhbGxvY19tYXAsCisJCQkJICAgIGludCBmbGFncyk7CisjZW5kaWYKKworLyogY2hlY2tfZGVzYy5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jaGVja19kZXNjKGV4dDJfZmlsc3lzIGZzKTsKKworLyogY2xvc2Vmcy5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jbG9zZShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jbG9zZTIoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jbG9zZV9mcmVlKGV4dDJfZmlsc3lzICpmcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mbHVzaChleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mbHVzaDIoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncyk7CitleHRlcm4gaW50IGV4dDJmc19iZ19oYXNfc3VwZXIoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cF9ibG9jayk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzIoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIGRncnBfdCBncm91cCwKKwkJCQkgICAgYmxrNjRfdCAqcmV0X3N1cGVyX2JsaywKKwkJCQkgICAgYmxrNjRfdCAqcmV0X29sZF9kZXNjX2JsaywKKwkJCQkgICAgYmxrNjRfdCAqcmV0X25ld19kZXNjX2JsaywKKwkJCQkgICAgYmxrX3QgKnJldF91c2VkX2Jsa3MpOworZXh0ZXJuIGludCBleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIGRncnBfdCBncm91cCwKKwkJCQkgICAgYmxrX3QgKnJldF9zdXBlcl9ibGssCisJCQkJICAgIGJsa190ICpyZXRfb2xkX2Rlc2NfYmxrLAorCQkJCSAgICBibGtfdCAqcmV0X25ld19kZXNjX2JsaywKKwkJCQkgICAgaW50ICpyZXRfbWV0YV9iZyk7CitleHRlcm4gdm9pZCBleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2KGV4dDJfZmlsc3lzIGZzKTsKKworLyogY3JjMzJjLmMgKi8KK2V4dGVybiBfX3UzMiBleHQyZnNfY3JjMzJfYmUoX191MzIgY3JjLCB1bnNpZ25lZCBjaGFyIGNvbnN0ICpwLCBzaXplX3QgbGVuKTsKK2V4dGVybiBfX3UzMiBleHQyZnNfY3JjMzJjX2xlKF9fdTMyIGNyYywgdW5zaWduZWQgY2hhciBjb25zdCAqcCwgc2l6ZV90IGxlbik7CisKKy8qIGNzdW0uYyAqLworZXh0ZXJuIHZvaWQgZXh0MmZzX2luaXRfY3N1bV9zZWVkKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX21tcF9jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCk7CitleHRlcm4gaW50IGV4dDJmc19tbXBfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMsIHN0cnVjdCBtbXBfc3RydWN0ICptbXApOworZXh0ZXJuIGludCBleHQyZnNfdmVyaWZ5X2NzdW1fdHlwZShleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3N1cGVyYmxvY2tfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpOworZXh0ZXJuIGludCBleHQyZnNfc3VwZXJibG9ja19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywKKwkJCQkJIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3NldChleHQyX2ZpbHN5cyBmcywKKwkJCQkJZXh0Ml9pbm9fdCBpbnVtLCBibGs2NF90IGJsb2NrLAorCQkJCQlzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKmhkcik7CitleHRlcm4gaW50IGV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQkgICAgIGJsazY0X3QgYmxvY2ssCisJCQkJCSAgICAgc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZHIpOworI2RlZmluZSBFWFQyX0RJUkVOVF9UQUlMKGJsb2NrLCBibG9ja3NpemUpIFwKKwkoKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICopKCgoY2hhciAqKShibG9jaykpICsgXAorCShibG9ja3NpemUpIC0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKSkpCisKK2V4dGVybiB2b2lkIGV4dDJmc19pbml0aWFsaXplX2RpcmVudF90YWlsKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICp0KTsKK2V4dGVybiBpbnQgZXh0MmZzX2RpcmVudF9oYXNfdGFpbChleHQyX2ZpbHN5cyBmcywKKwkJCQkgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50KTsKK2V4dGVybiBpbnQgZXh0MmZzX2RpcmVudF9jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCSAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQpOworZXh0ZXJuIGludCBleHQyZnNfZGlyX2Jsb2NrX2NzdW1fdmVyaWZ5KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGludW0sCisJCQkJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Rpcl9ibG9ja19jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQkgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfZHhfY291bnRsaW1pdChleHQyX2ZpbHN5cyBmcywKKwkJCQkJICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCQkJICBzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICoqY2MsCisJCQkJCSAgaW50ICpvZmZzZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZXh0ZW50X2Jsb2NrX2NzdW1fc2V0KGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgICBleHQyX2lub190IGludW0sCisJCQkJCSAgICAgIHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKmVoKTsKK2V4dGVybiBpbnQgZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCQkgICBzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICplaCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19ibG9ja19iaXRtYXBfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkJICAgICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSk7CitleHRlcm4gaW50IGV4dDJmc19ibG9ja19iaXRtYXBfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkJICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pbm9kZV9iaXRtYXBfY3N1bV9zZXQoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkJICAgICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSk7CitleHRlcm4gaW50IGV4dDJmc19pbm9kZV9iaXRtYXBfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwKKwkJCQkJICAgY2hhciAqYml0bWFwLCBpbnQgc2l6ZSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pbm9kZV9jc3VtX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbnVtLAorCQkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUpOworZXh0ZXJuIGludCBleHQyZnNfaW5vZGVfY3N1bV92ZXJpZnkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW51bSwKKwkJCQkgICAgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlKTsKK2V4dGVybiB2b2lkIGV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGludCBleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3ZlcmlmeShleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3NldF9nZHRfY3N1bShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gX191MTYgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bShleHQyX2ZpbHN5cyBmcywgZGdycF90IGdyb3VwKTsKKworLyogZGJsaXN0LmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2luaXRfZGJsaXN0KGV4dDJfZmlsc3lzIGZzLCBleHQyX2RibGlzdCAqcmV0X2RibGlzdCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19hZGRfZGlyX2Jsb2NrKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgYmxrX3QgYmxrLCBpbnQgYmxvY2tjbnQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWRkX2Rpcl9ibG9jazIoZXh0Ml9kYmxpc3QgZGJsaXN0LCBleHQyX2lub190IGlubywKKwkJCQkgICAgICAgYmxrNjRfdCBibGssIGUyX2Jsa2NudF90IGJsb2NrY250KTsKK2V4dGVybiB2b2lkIGV4dDJmc19kYmxpc3Rfc29ydChleHQyX2RibGlzdCBkYmxpc3QsCisJCQkgICAgICAgRVhUMl9RU09SVF9UWVBFICgqc29ydGZ1bmMpKGNvbnN0IHZvaWQgKiwKKwkJCQkJCQkgICBjb25zdCB2b2lkICopKTsKK2V4dGVybiB2b2lkIGV4dDJmc19kYmxpc3Rfc29ydDIoZXh0Ml9kYmxpc3QgZGJsaXN0LAorCQkJCUVYVDJfUVNPUlRfVFlQRSAoKnNvcnRmdW5jKShjb25zdCB2b2lkICosCisJCQkJCQkJICAgIGNvbnN0IHZvaWQgKikpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZGJsaXN0X2l0ZXJhdGUoZXh0Ml9kYmxpc3QgZGJsaXN0LAorCWludCAoKmZ1bmMpKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9kYl9lbnRyeSAqZGJfaW5mbywKKwkJICAgIHZvaWQJKnByaXZfZGF0YSksCisJdm9pZCAqcHJpdl9kYXRhKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9pdGVyYXRlMihleHQyX2RibGlzdCBkYmxpc3QsCisJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfaW5mbywKKwkJICAgIHZvaWQJKnByaXZfZGF0YSksCisJdm9pZCAqcHJpdl9kYXRhKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9pdGVyYXRlMyhleHQyX2RibGlzdCBkYmxpc3QsCisJaW50ICgqZnVuYykoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2RiX2VudHJ5MiAqZGJfaW5mbywKKwkJICAgIHZvaWQJKnByaXZfZGF0YSksCisJdW5zaWduZWQgbG9uZyBsb25nIHN0YXJ0LAorCXVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCwKKwl2b2lkICpwcml2X2RhdGEpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfc2V0X2Rpcl9ibG9jayhleHQyX2RibGlzdCBkYmxpc3QsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICAgIGJsa190IGJsaywgaW50IGJsb2NrY250KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3NldF9kaXJfYmxvY2syKGV4dDJfZGJsaXN0IGRibGlzdCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgIGJsazY0X3QgYmxrLCBlMl9ibGtjbnRfdCBibG9ja2NudCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jb3B5X2RibGlzdChleHQyX2RibGlzdCBzcmMsCisJCQkJICAgIGV4dDJfZGJsaXN0ICpkZXN0KTsKK2V4dGVybiBpbnQgZXh0MmZzX2RibGlzdF9jb3VudChleHQyX2RibGlzdCBkYmxpc3QpOworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2RibGlzdF9jb3VudDIoZXh0Ml9kYmxpc3QgZGJsaXN0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9nZXRfbGFzdChleHQyX2RibGlzdCBkYmxpc3QsCisJCQkJCXN0cnVjdCBleHQyX2RiX2VudHJ5ICoqZW50cnkpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZGJsaXN0X2dldF9sYXN0MihleHQyX2RibGlzdCBkYmxpc3QsCisJCQkJCXN0cnVjdCBleHQyX2RiX2VudHJ5MiAqKmVudHJ5KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2RibGlzdF9kcm9wX2xhc3QoZXh0Ml9kYmxpc3QgZGJsaXN0KTsKKworLyogZGJsaXN0X2Rpci5jICovCitleHRlcm4gZXJyY29kZV90CisJZXh0MmZzX2RibGlzdF9kaXJfaXRlcmF0ZShleHQyX2RibGlzdCBkYmxpc3QsCisJCQkJICBpbnQJZmxhZ3MsCisJCQkJICBjaGFyCSpibG9ja19idWYsCisJCQkJICBpbnQgKCpmdW5jKShleHQyX2lub190CWRpciwKKwkJCQkJICAgICAgaW50CQllbnRyeSwKKwkJCQkJICAgICAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJCSAgICAgIGludAlvZmZzZXQsCisJCQkJCSAgICAgIGludAlibG9ja3NpemUsCisJCQkJCSAgICAgIGNoYXIJKmJ1ZiwKKwkJCQkJICAgICAgdm9pZAkqcHJpdl9kYXRhKSwKKwkJCQkgIHZvaWQgKnByaXZfZGF0YSk7CisKKyNpZiAwCisvKiBkaWdlc3RfZW5jb2RlLmMgKi8KKyNkZWZpbmUgRVhUMkZTX0RJR0VTVF9TSVpFIEVYVDJGU19TSEEyNTZfTEVOR1RICitleHRlcm4gaW50IGV4dDJmc19kaWdlc3RfZW5jb2RlKGNvbnN0IGNoYXIgKnNyYywgaW50IGxlbiwgY2hhciAqZHN0KTsKK2V4dGVybiBpbnQgZXh0MmZzX2RpZ2VzdF9kZWNvZGUoY29uc3QgY2hhciAqc3JjLCBpbnQgbGVuLCBjaGFyICpkc3QpOworI2VuZGlmCisKKy8qIGRpcmJsb2NrLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywKKwkJCQkgICAgICAgdm9pZCAqYnVmKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZGlyX2Jsb2NrMihleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxvY2ssCisJCQkJCXZvaWQgKmJ1ZiwgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZGlyX2Jsb2NrMyhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywKKwkJCQkJdm9pZCAqYnVmLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVhZF9kaXJfYmxvY2s0KGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLAorCQkJCQl2b2lkICpidWYsIGludCBmbGFncywgZXh0Ml9pbm9fdCBpbm8pOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywKKwkJCQkJdm9pZCAqYnVmKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazIoZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsb2NrLAorCQkJCQkgdm9pZCAqYnVmLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrMyhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywKKwkJCQkJIHZvaWQgKmJ1ZiwgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazQoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxvY2ssCisJCQkJCSB2b2lkICpidWYsIGludCBmbGFncywgZXh0Ml9pbm9fdCBpbm8pOworCisvKiBkaXJoYXNoLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Rpcmhhc2goaW50IHZlcnNpb24sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sCisJCQkJY29uc3QgX191MzIgKnNlZWQsCisJCQkJZXh0Ml9kaXJoYXNoX3QgKnJldF9oYXNoLAorCQkJCWV4dDJfZGlyaGFzaF90ICpyZXRfbWlub3JfaGFzaCk7CisKKworLyogZGlyX2l0ZXJhdGUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X3JlY19sZW4oZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJCSAgICB1bnNpZ25lZCBpbnQgKnJlY19sZW4pOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfc2V0X3JlY19sZW4oZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIHVuc2lnbmVkIGludCBsZW4sCisJCQkJICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Rpcl9pdGVyYXRlKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICAgZXh0Ml9pbm9fdCBkaXIsCisJCQkgICAgICBpbnQgZmxhZ3MsCisJCQkgICAgICBjaGFyICpibG9ja19idWYsCisJCQkgICAgICBpbnQgKCpmdW5jKShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJCQkJICBpbnQJb2Zmc2V0LAorCQkJCQkgIGludAlibG9ja3NpemUsCisJCQkJCSAgY2hhcgkqYnVmLAorCQkJCQkgIHZvaWQJKnByaXZfZGF0YSksCisJCQkgICAgICB2b2lkICpwcml2X2RhdGEpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZGlyX2l0ZXJhdGUyKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICAgZXh0Ml9pbm9fdCBkaXIsCisJCQkgICAgICBpbnQgZmxhZ3MsCisJCQkgICAgICBjaGFyICpibG9ja19idWYsCisJCQkgICAgICBpbnQgKCpmdW5jKShleHQyX2lub190CWRpciwKKwkJCQkJICBpbnQJZW50cnksCisJCQkJCSAgc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkJCSAgaW50CW9mZnNldCwKKwkJCQkJICBpbnQJYmxvY2tzaXplLAorCQkJCQkgIGNoYXIJKmJ1ZiwKKwkJCQkJICB2b2lkCSpwcml2X2RhdGEpLAorCQkJICAgICAgdm9pZCAqcHJpdl9kYXRhKTsKKworLyogZHVwZnMuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZHVwX2hhbmRsZShleHQyX2ZpbHN5cyBzcmMsIGV4dDJfZmlsc3lzICpkZXN0KTsKKworLyogZXhwYW5kZGlyLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4cGFuZF9kaXIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyKTsKKworLyogZXh0X2F0dHIuYyAqLworZXh0ZXJuIF9fdTMyIGV4dDJmc19leHRfYXR0cl9oYXNoX2VudHJ5KHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICplbnRyeSwKKwkJCQkJdm9pZCAqZGF0YSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZWFkX2V4dF9hdHRyKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywgdm9pZCAqYnVmKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZXh0X2F0dHIyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLAorCQkJCSAgICAgICB2b2lkICpidWYpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVhZF9leHRfYXR0cjMoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxvY2ssCisJCQkJICAgICAgIHZvaWQgKmJ1ZiwgZXh0Ml9pbm9fdCBpbnVtKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2V4dF9hdHRyKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywKKwkJCQkgICAgICAgdm9pZCAqYnVmKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2V4dF9hdHRyMihleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywKKwkJCQkgICAgICAgdm9pZCAqYnVmKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2V4dF9hdHRyMyhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywKKwkJCQkgICAgICAgdm9pZCAqYnVmLCBleHQyX2lub190IGludW0pOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50KGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGssCisJCQkJCSAgIGNoYXIgKmJsb2NrX2J1ZiwKKwkJCQkJICAgaW50IGFkanVzdCwgX191MzIgKm5ld2NvdW50KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLAorCQkJCQkgICBjaGFyICpibG9ja19idWYsCisJCQkJCSAgIGludCBhZGp1c3QsIF9fdTMyICpuZXdjb3VudCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQzKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywKKwkJCQkJICAgY2hhciAqYmxvY2tfYnVmLAorCQkJCQkgICBpbnQgYWRqdXN0LCBfX3UzMiAqbmV3Y291bnQsCisJCQkJCSAgIGV4dDJfaW5vX3QgaW51bSk7CitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyc193cml0ZShzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmhhbmRsZSk7CitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyc19yZWFkKHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaGFuZGxlKTsKK2VycmNvZGVfdCBleHQyZnNfeGF0dHJzX2l0ZXJhdGUoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoLAorCQkJCWludCAoKmZ1bmMpKGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlLAorCQkJCQkgICAgc2l6ZV90IHZhbHVlX2xlbiwgdm9pZCAqZGF0YSksCisJCQkJdm9pZCAqZGF0YSk7CitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyX2dldChzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmgsIGNvbnN0IGNoYXIgKmtleSwKKwkJCSAgIHZvaWQgKip2YWx1ZSwgc2l6ZV90ICp2YWx1ZV9sZW4pOworZXJyY29kZV90IGV4dDJmc194YXR0cl9zZXQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsCisJCQkgICBjb25zdCBjaGFyICprZXksCisJCQkgICBjb25zdCB2b2lkICp2YWx1ZSwKKwkJCSAgIHNpemVfdCB2YWx1ZV9sZW4pOworZXJyY29kZV90IGV4dDJmc194YXR0cl9yZW1vdmUoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsCisJCQkgICAgICBjb25zdCBjaGFyICprZXkpOworZXJyY29kZV90IGV4dDJmc194YXR0cnNfb3BlbihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqKmhhbmRsZSk7CitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyc19jbG9zZShzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKipoYW5kbGUpOworZXJyY29kZV90IGV4dDJmc19mcmVlX2V4dF9hdHRyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUpOworZXJyY29kZV90IGV4dDJmc194YXR0cnNfY291bnQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsIHNpemVfdCAqY291bnQpOworZXJyY29kZV90IGV4dDJmc194YXR0cl9pbm9kZV9tYXhfc2l6ZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgc2l6ZV90ICpzaXplKTsKKworLyogZXh0ZW50LmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9oZWFkZXJfdmVyaWZ5KHZvaWQgKnB0ciwgaW50IHNpemUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZXh0ZW50X29wZW4oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICBleHQyX2V4dGVudF9oYW5kbGVfdCAqaGFuZGxlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9vcGVuMihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkJZXh0Ml9leHRlbnRfaGFuZGxlX3QgKnJldF9oYW5kbGUpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2V4dGVudF9mcmVlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19leHRlbnRfZ2V0KGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCQkgICBpbnQgZmxhZ3MsIHN0cnVjdCBleHQyZnNfZXh0ZW50ICpleHRlbnQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZXh0ZW50X25vZGVfc3BsaXQoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9yZXBsYWNlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwgaW50IGZsYWdzLAorCQkJCSAgICAgICBzdHJ1Y3QgZXh0MmZzX2V4dGVudCAqZXh0ZW50KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9pbnNlcnQoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlLCBpbnQgZmxhZ3MsCisJCQkJICAgICAgc3RydWN0IGV4dDJmc19leHRlbnQgKmV4dGVudCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19leHRlbnRfc2V0X2JtYXAoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlLAorCQkJCQlibGs2NF90IGxvZ2ljYWwsIGJsazY0X3QgcGh5c2ljYWwsCisJCQkJCWludCBmbGFncyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19leHRlbnRfZGVsZXRlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9nZXRfaW5mbyhleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJCXN0cnVjdCBleHQyX2V4dGVudF9pbmZvICppbmZvKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9nb3RvKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCQkgICAgYmxrNjRfdCBibGspOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZXh0ZW50X2dvdG8yKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCQkgICAgIGludCBsZWFmX2xldmVsLCBibGs2NF90IGJsayk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlKTsKK3NpemVfdCBleHQyZnNfbWF4X2V4dGVudF9kZXB0aChleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUpOworCisvKiBmYWxsb2NhdGUuYyAqLworI2RlZmluZSBFWFQyX0ZBTExPQ0FURV9aRVJPX0JMT0NLUwkoMHgxKQorI2RlZmluZSBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUCSgweDIpCisjZGVmaW5lIEVYVDJfRkFMTE9DQVRFX0ZPUkNFX1VOSU5JVAkoMHg0KQorI2RlZmluZSBFWFQyX0ZBTExPQ0FURV9JTklUX0JFWU9ORF9FT0YJKDB4OCkKKyNkZWZpbmUgRVhUMl9GQUxMT0NBVEVfQUxMX0ZMQUdTCSgweEYpCitlcnJjb2RlX3QgZXh0MmZzX2ZhbGxvY2F0ZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBleHQyX2lub190IGlubywKKwkJCSAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwgYmxrNjRfdCBnb2FsLAorCQkJICAgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBsZW4pOworCisvKiBmaWxlaW8uYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9vcGVuMihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSAgIGludCBmbGFncywgZXh0Ml9maWxlX3QgKnJldCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19maWxlX29wZW4oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgaW50IGZsYWdzLCBleHQyX2ZpbGVfdCAqcmV0KTsKK2V4dGVybiBleHQyX2ZpbHN5cyBleHQyZnNfZmlsZV9nZXRfZnMoZXh0Ml9maWxlX3QgZmlsZSk7CitzdHJ1Y3QgZXh0Ml9pbm9kZSAqZXh0MmZzX2ZpbGVfZ2V0X2lub2RlKGV4dDJfZmlsZV90IGZpbGUpOworZXh0ZXJuIGV4dDJfaW5vX3QgZXh0MmZzX2ZpbGVfZ2V0X2lub2RlX251bShleHQyX2ZpbGVfdCBmaWxlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfY2xvc2UoZXh0Ml9maWxlX3QgZmlsZSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19maWxlX2ZsdXNoKGV4dDJfZmlsZV90IGZpbGUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9yZWFkKGV4dDJfZmlsZV90IGZpbGUsIHZvaWQgKmJ1ZiwKKwkJCQkgIHVuc2lnbmVkIGludCB3YW50ZWQsIHVuc2lnbmVkIGludCAqZ290KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfd3JpdGUoZXh0Ml9maWxlX3QgZmlsZSwgY29uc3Qgdm9pZCAqYnVmLAorCQkJCSAgIHVuc2lnbmVkIGludCBuYnl0ZXMsIHVuc2lnbmVkIGludCAqd3JpdHRlbik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19maWxlX2xsc2VlayhleHQyX2ZpbGVfdCBmaWxlLCBfX3U2NCBvZmZzZXQsCisJCQkJICAgaW50IHdoZW5jZSwgX191NjQgKnJldF9wb3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9sc2VlayhleHQyX2ZpbGVfdCBmaWxlLCBleHQyX29mZl90IG9mZnNldCwKKwkJCQkgICBpbnQgd2hlbmNlLCBleHQyX29mZl90ICpyZXRfcG9zKTsKK2VycmNvZGVfdCBleHQyZnNfZmlsZV9nZXRfbHNpemUoZXh0Ml9maWxlX3QgZmlsZSwgX191NjQgKnJldF9zaXplKTsKK2V4dGVybiBleHQyX29mZl90IGV4dDJmc19maWxlX2dldF9zaXplKGV4dDJfZmlsZV90IGZpbGUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9zZXRfc2l6ZShleHQyX2ZpbGVfdCBmaWxlLCBleHQyX29mZl90IHNpemUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmlsZV9zZXRfc2l6ZTIoZXh0Ml9maWxlX3QgZmlsZSwgZXh0Ml9vZmY2NF90IHNpemUpOworCisvKiBmaW5kZGV2LmMgKi8KK2V4dGVybiBjaGFyICpleHQyZnNfZmluZF9ibG9ja19kZXZpY2UoZGV2X3QgZGV2aWNlKTsKKworLyogZmx1c2hiLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3N5bmNfZGV2aWNlKGludCBmZCwgaW50IGZsdXNoYik7CisKKy8qIGZyZWVmcy5jICovCitleHRlcm4gdm9pZCBleHQyZnNfZnJlZShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gdm9pZCBleHQyZnNfZnJlZV9kYmxpc3QoZXh0Ml9kYmxpc3QgZGJsaXN0KTsKK2V4dGVybiB2b2lkIGV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGV4dDJfYmFkYmxvY2tzX2xpc3QgYmIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3UzMl9saXN0X2ZyZWUoZXh0Ml91MzJfbGlzdCBiYik7CisKKy8qIGdlbl9iaXRtYXAuYyAqLworZXh0ZXJuIHZvaWQgZXh0MmZzX2ZyZWVfZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXApOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbWFrZV9nZW5lcmljX2JpdG1hcChlcnJjb2RlX3QgbWFnaWMsIGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgX191MzIgc3RhcnQsIF9fdTMyIGVuZCwKKwkJCQkJICAgIF9fdTMyIHJlYWxfZW5kLAorCQkJCQkgICAgY29uc3QgY2hhciAqZGVzY3IsIGNoYXIgKmluaXRfbWFwLAorCQkJCQkgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfZ2VuZXJpY19iaXRtYXAoX191MzIgc3RhcnQsCisJCQkJCQlfX3UzMiBlbmQsCisJCQkJCQlfX3UzMiByZWFsX2VuZCwKKwkJCQkJCWNvbnN0IGNoYXIgKmRlc2NyLAorCQkJCQkJZXh0MmZzX2dlbmVyaWNfYml0bWFwICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY29weV9nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgc3JjLAorCQkJCQkgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpkZXN0KTsKK2V4dGVybiB2b2lkIGV4dDJmc19jbGVhcl9nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2dlbmVyaWNfYml0bWFwX2VuZChleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSBlcnJjb2RlX3QgbWFnaWMsCisJCQkJCQkgZXJyY29kZV90IG5lcSwKKwkJCQkJCSBleHQyX2lub190IGVuZCwKKwkJCQkJCSBleHQyX2lub190ICpvZW5kKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zZXRfZ2VuZXJpY19iaXRtYXBfcGFkZGluZyhleHQyZnNfZ2VuZXJpY19iaXRtYXAgbWFwKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9nZW5lcmljX2JpdG1hcChlcnJjb2RlX3QgbWFnaWMsCisJCQkJCSAgICAgIF9fdTMyIG5ld19lbmQsCisJCQkJCSAgICAgIF9fdTMyIG5ld19yZWFsX2VuZCwKKwkJCQkJICAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXApOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY29tcGFyZV9nZW5lcmljX2JpdG1hcChlcnJjb2RlX3QgbWFnaWMsIGVycmNvZGVfdCBuZXEsCisJCQkJCSAgICAgICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm0xLAorCQkJCQkgICAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJCQkgZXJyY29kZV90IG1hZ2ljLAorCQkJCQkJIF9fdTMyIHN0YXJ0LCBfX3UzMiBudW0sCisJCQkJCQkgdm9pZCAqb3V0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3NldF9nZW5lcmljX2JpdG1hcF9yYW5nZShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm1hcCwKKwkJCQkJCSBlcnJjb2RlX3QgbWFnaWMsCisJCQkJCQkgX191MzIgc3RhcnQsIF9fdTMyIG51bSwKKwkJCQkJCSB2b2lkICppbik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgICAgICBfX3UzMiBzdGFydCwgX191MzIgZW5kLAorCQkJCQkJICAgICAgIF9fdTMyICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF9zZXRfZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJCSAgICAgICBfX3UzMiBzdGFydCwgX191MzIgZW5kLAorCQkJCQkJICAgICAgIF9fdTMyICpvdXQpOworCisvKiBnZW5fYml0bWFwNjQuYyAqLwordm9pZCBleHQyZnNfZnJlZV9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXApOworZXJyY29kZV90IGV4dDJmc19hbGxvY19nZW5lcmljX2JtYXAoZXh0Ml9maWxzeXMgZnMsIGVycmNvZGVfdCBtYWdpYywKKwkJCQkgICAgaW50IHR5cGUsIF9fdTY0IHN0YXJ0LCBfX3U2NCBlbmQsCisJCQkJICAgIF9fdTY0IHJlYWxfZW5kLAorCQkJCSAgICBjb25zdCBjaGFyICpkZXNjciwKKwkJCQkgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpyZXQpOworZXJyY29kZV90IGV4dDJmc19jb3B5X2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgc3JjLAorCQkJCSAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCAqZGVzdCk7Cit2b2lkIGV4dDJmc19jbGVhcl9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCk7CitlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2dlbmVyaWNfYm1hcF9lbmQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJZXJyY29kZV90IG5lcSwKKwkJCQkJX191NjQgZW5kLCBfX3U2NCAqb2VuZCk7Cit2b2lkIGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3BhZGRpbmcoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXApOworZXJyY29kZV90IGV4dDJmc19yZXNpemVfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwLAorCQkJCSAgICAgX191NjQgbmV3X2VuZCwKKwkJCQkgICAgIF9fdTY0IG5ld19yZWFsX2VuZCk7CitlcnJjb2RlX3QgZXh0MmZzX2NvbXBhcmVfZ2VuZXJpY19ibWFwKGVycmNvZGVfdCBuZXEsCisJCQkJICAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMSwKKwkJCQkgICAgICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm0yKTsKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9yYW5nZShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm1hcCwKKwkJCQkJX191NjQgc3RhcnQsIHVuc2lnbmVkIGludCBudW0sCisJCQkJCXZvaWQgKm91dCk7CitlcnJjb2RlX3QgZXh0MmZzX3NldF9nZW5lcmljX2JtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJCV9fdTY0IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbnVtLAorCQkJCQl2b2lkICppbik7CitlcnJjb2RlX3QgZXh0MmZzX2NvbnZlcnRfc3ViY2x1c3Rlcl9iaXRtYXAoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgIGV4dDJmc19ibG9ja19iaXRtYXAgKmJpdG1hcCk7CisKKy8qIGdldF9udW1fZGlycy5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfbnVtX2RpcnMoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgKnJldF9udW1fZGlycyk7CisKKy8qIGdldHNpemUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2RldmljZV9zaXplKGNvbnN0IGNoYXIgKmZpbGUsIGludCBibG9ja3NpemUsCisJCQkJCWJsa190ICpyZXRibG9ja3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X2RldmljZV9zaXplMihjb25zdCBjaGFyICpmaWxlLCBpbnQgYmxvY2tzaXplLAorCQkJCQlibGs2NF90ICpyZXRibG9ja3MpOworCisvKiBnZXRzZWN0c2l6ZS5jICovCitleHRlcm4gaW50IGV4dDJmc19nZXRfZGlvX2FsaWdubWVudChpbnQgZmQpOworZXJyY29kZV90IGV4dDJmc19nZXRfZGV2aWNlX3NlY3RzaXplKGNvbnN0IGNoYXIgKmZpbGUsIGludCAqc2VjdHNpemUpOworZXJyY29kZV90IGV4dDJmc19nZXRfZGV2aWNlX3BoeXNfc2VjdHNpemUoY29uc3QgY2hhciAqZmlsZSwgaW50ICpzZWN0c2l6ZSk7CisKKy8qIGlfYmxvY2suYyAqLworZXJyY29kZV90IGV4dDJmc19pYmxrX2FkZF9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgYmxrNjRfdCBudW1fYmxvY2tzKTsKK2VycmNvZGVfdCBleHQyZnNfaWJsa19zdWJfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJIGJsazY0X3QgbnVtX2Jsb2Nrcyk7CitlcnJjb2RlX3QgZXh0MmZzX2libGtfc2V0KGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsIGJsazY0X3QgYik7CisKKy8qIGltYWdlci5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pbWFnZV9pbm9kZV93cml0ZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaW1hZ2VfaW5vZGVfcmVhZChleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaW1hZ2Vfc3VwZXJfd3JpdGUoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ltYWdlX3N1cGVyX3JlYWQoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ltYWdlX2JpdG1hcF93cml0ZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaW1hZ2VfYml0bWFwX3JlYWQoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKTsKKworLyogaW5kX2Jsb2NrLmMgKi8KK2VycmNvZGVfdCBleHQyZnNfcmVhZF9pbmRfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsaywgdm9pZCAqYnVmKTsKK2VycmNvZGVfdCBleHQyZnNfd3JpdGVfaW5kX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGssIHZvaWQgKmJ1Zik7CisKKy8qIGluaXRpYWxpemUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaW5pdGlhbGl6ZShjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsCisJCQkJICAgc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnBhcmFtLAorCQkJCSAgIGlvX21hbmFnZXIgbWFuYWdlciwgZXh0Ml9maWxzeXMgKnJldF9mcyk7CisKKy8qIGljb3VudC5jICovCitleHRlcm4gdm9pZCBleHQyZnNfZnJlZV9pY291bnQoZXh0Ml9pY291bnRfdCBpY291bnQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY3JlYXRlX2ljb3VudF90ZGIoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKnRkYl9kaXIsCisJCQkJCSAgaW50IGZsYWdzLCBleHQyX2ljb3VudF90ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY3JlYXRlX2ljb3VudDIoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywKKwkJCQkgICAgICAgdW5zaWduZWQgaW50IHNpemUsCisJCQkJICAgICAgIGV4dDJfaWNvdW50X3QgaGludCwgZXh0Ml9pY291bnRfdCAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9pY291bnQoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywKKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSwKKwkJCQkgICAgICBleHQyX2ljb3VudF90ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaWNvdW50X2ZldGNoKGV4dDJfaWNvdW50X3QgaWNvdW50LCBleHQyX2lub190IGlubywKKwkJCQkgICAgIF9fdTE2ICpyZXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaWNvdW50X2luY3JlbWVudChleHQyX2ljb3VudF90IGljb3VudCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCSBfX3UxNiAqcmV0KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF9kZWNyZW1lbnQoZXh0Ml9pY291bnRfdCBpY291bnQsIGV4dDJfaW5vX3QgaW5vLAorCQkJCQkgX191MTYgKnJldCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pY291bnRfc3RvcmUoZXh0Ml9pY291bnRfdCBpY291bnQsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICAgX191MTYgY291bnQpOworZXh0ZXJuIGV4dDJfaW5vX3QgZXh0MmZzX2dldF9pY291bnRfc2l6ZShleHQyX2ljb3VudF90IGljb3VudCk7CitlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF92YWxpZGF0ZShleHQyX2ljb3VudF90IGljb3VudCwgRklMRSAqKTsKKworLyogaW5saW5lLmMgKi8KKworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X21lbWFsaWduKHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgYWxpZ24sIHZvaWQgKnB0cik7CisKKy8qIGlubGluZV9kYXRhLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2luaXQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX3NpemUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCQkgc2l6ZV90ICpzaXplKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2dldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkJdm9pZCAqYnVmLCBzaXplX3QgKnNpemUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaW5saW5lX2RhdGFfc2V0KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCQl2b2lkICpidWYsIHNpemVfdCBzaXplKTsKKworLyogaW5vZGUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY3JlYXRlX2lub2RlX2NhY2hlKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICB1bnNpZ25lZCBpbnQgY2FjaGVfc2l6ZSk7CitleHRlcm4gdm9pZCBleHQyZnNfZnJlZV9pbm9kZV9jYWNoZShzdHJ1Y3QgZXh0Ml9pbm9kZV9jYWNoZSAqaWNhY2hlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZsdXNoX2ljYWNoZShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKGV4dDJfaW5vZGVfc2NhbiBzY2FuLAorCQkJCQkgICAgZXh0Ml9pbm9fdCAqaW5vLAorCQkJCQkgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCQkgICAgaW50IGJ1ZnNpemUpOworI2RlZmluZSBFWFQyX0lOT0RFX1NDQU5fREVGQVVMVF9CVUZGRVJfQkxPQ0tTCTgKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX29wZW5faW5vZGVfc2NhbihleHQyX2ZpbHN5cyBmcywgaW50IGJ1ZmZlcl9ibG9ja3MsCisJCQkJICBleHQyX2lub2RlX3NjYW4gKnJldF9zY2FuKTsKK2V4dGVybiB2b2lkIGV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKGV4dDJfaW5vZGVfc2NhbiBzY2FuKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2dldF9uZXh0X2lub2RlKGV4dDJfaW5vZGVfc2NhbiBzY2FuLCBleHQyX2lub190ICppbm8sCisJCQkgICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lub2RlX3NjYW5fZ290b19ibG9ja2dyb3VwKGV4dDJfaW5vZGVfc2NhbiBzY2FuLAorCQkJCQkJICAgaW50CWdyb3VwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zZXRfaW5vZGVfY2FsbGJhY2sKKwkoZXh0Ml9pbm9kZV9zY2FuIHNjYW4sCisJIGVycmNvZGVfdCAoKmRvbmVfZ3JvdXApKGV4dDJfZmlsc3lzIGZzLAorCQkJCSBleHQyX2lub2RlX3NjYW4gc2NhbiwKKwkJCQkgZGdycF90IGdyb3VwLAorCQkJCSB2b2lkICogcHJpdl9kYXRhKSwKKwkgdm9pZCAqZG9uZV9ncm91cF9kYXRhKTsKK2V4dGVybiBpbnQgZXh0MmZzX2lub2RlX3NjYW5fZmxhZ3MoZXh0Ml9pbm9kZV9zY2FuIHNjYW4sIGludCBzZXRfZmxhZ3MsCisJCQkJICAgaW50IGNsZWFyX2ZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCXN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsCisJCQkJCWludCBidWZzaXplKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfaW5vZGUgKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSwKKwkJCQkJIGludCBidWZzaXplKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX25ld19pbm9kZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgc3RydWN0IGV4dDJfaW5vZGUgKiBpbm9kZSk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywgYmxrX3QgKmJsb2Nrcyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19jaGVja19kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKTsKKworLyogaW5vZGVfaW8uYyAqLworZXh0ZXJuIGlvX21hbmFnZXIgaW5vZGVfaW9fbWFuYWdlcjsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lub2RlX2lvX2ludGVybihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCWNoYXIgKipuYW1lKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lub2RlX2lvX2ludGVybjIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCQkgY2hhciAqKm5hbWUpOworCisvKiBpc21vdW50ZWQuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY2hlY2tfaWZfbW91bnRlZChjb25zdCBjaGFyICpmaWxlLCBpbnQgKm1vdW50X2ZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NoZWNrX21vdW50X3BvaW50KGNvbnN0IGNoYXIgKmRldmljZSwgaW50ICptb3VudF9mbGFncywKKwkJCQkJICBjaGFyICptdHB0LCBpbnQgbXRsZW4pOworCisvKiBwdW5jaC5jICovCisvKgorICogTk9URTogVGhpcyBmdW5jdGlvbiByZW1vdmVzIGZyb20gYW4gaW5vZGUgdGhlIGJsb2NrcyAic3RhcnQiLCAiZW5kIiwgYW5kCisgKiBldmVyeSBibG9jayBpbiBiZXR3ZWVuLgorICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19wdW5jaChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgICBjaGFyICpibG9ja19idWYsIGJsazY0X3Qgc3RhcnQsCisJCQkgICAgICBibGs2NF90IGVuZCk7CisKKy8qIG5hbWVpLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2xvb2t1cChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgaW50IG5hbWVsZW4sIGNoYXIgKmJ1ZiwgZXh0Ml9pbm9fdCAqaW5vZGUpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbmFtZWkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3Qgcm9vdCwgZXh0Ml9pbm9fdCBjd2QsCisJCQljb25zdCBjaGFyICpuYW1lLCBleHQyX2lub190ICppbm9kZSk7CitlcnJjb2RlX3QgZXh0MmZzX25hbWVpX2ZvbGxvdyhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCByb290LCBleHQyX2lub190IGN3ZCwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGV4dDJfaW5vX3QgKmlub2RlKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2ZvbGxvd19saW5rKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHJvb3QsIGV4dDJfaW5vX3QgY3dkLAorCQkJZXh0Ml9pbm9fdCBpbm9kZSwgZXh0Ml9pbm9fdCAqcmVzX2lub2RlKTsKKworLyogbmF0aXZlLmMgKi8KK2ludCBleHQyZnNfbmF0aXZlX2ZsYWcodm9pZCk7CisKKy8qIG5ld2Rpci5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGRpcl9pbm8sCisJCQkJZXh0Ml9pbm9fdCBwYXJlbnRfaW5vLCBjaGFyICoqYmxvY2spOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfbmV3X2Rpcl9pbmxpbmVfZGF0YShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXJfaW5vLAorCQkJCWV4dDJfaW5vX3QgcGFyZW50X2lubywgX191MzIgKmlibG9jayk7CisKKy8qIG1rZGlyLmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX21rZGlyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHBhcmVudCwgZXh0Ml9pbm9fdCBpbnVtLAorCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSk7CisKKy8qIG1ram91cm5hbC5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc196ZXJvX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxrLCBpbnQgbnVtLAorCQkJCSAgICBibGtfdCAqcmV0X2JsaywgaW50ICpyZXRfY291bnQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfemVyb19ibG9ja3MyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywgaW50IG51bSwKKwkJCQkgICAgIGJsazY0X3QgKnJldF9ibGssIGludCAqcmV0X2NvdW50KTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9qb3VybmFsX3N1cGVyYmxvY2soZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkgIF9fdTMyIG51bV9ibG9ja3MsIGludCBmbGFncywKKwkJCQkJCSAgY2hhciAgKipyZXRfanNiKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FkZF9qb3VybmFsX2RldmljZShleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgZXh0Ml9maWxzeXMgam91cm5hbF9kZXYpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGJsa190IG51bV9ibG9ja3MsCisJCQkJCSAgaW50IGZsYWdzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FkZF9qb3VybmFsX2lub2RlMihleHQyX2ZpbHN5cyBmcywgYmxrX3QgbnVtX2Jsb2NrcywKKwkJCQkJICAgYmxrNjRfdCBnb2FsLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGludCBleHQyZnNfZGVmYXVsdF9qb3VybmFsX3NpemUoX191NjQgbnVtX2Jsb2Nrcyk7CitleHRlcm4gaW50IGV4dDJmc19qb3VybmFsX3NiX3N0YXJ0KGludCBibG9ja3NpemUpOworCisvKiBvcGVuZnMuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsIGludCBzdXBlcmJsb2NrLAorCQkJICAgICB1bnNpZ25lZCBpbnQgYmxvY2tfc2l6ZSwgaW9fbWFuYWdlciBtYW5hZ2VyLAorCQkJICAgICBleHQyX2ZpbHN5cyAqcmV0X2ZzKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX29wZW4yKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmlvX29wdGlvbnMsCisJCQkgICAgICBpbnQgZmxhZ3MsIGludCBzdXBlcmJsb2NrLAorCQkJICAgICAgdW5zaWduZWQgaW50IGJsb2NrX3NpemUsIGlvX21hbmFnZXIgbWFuYWdlciwKKwkJCSAgICAgIGV4dDJfZmlsc3lzICpyZXRfZnMpOworLyoKKyAqIFRoZSBkZ3JwX3QgYXJndW1lbnQgdG8gdGhlc2UgdHdvIGZ1bmN0aW9ucyBpcyBub3QgYWN0dWFsbHkgYSBncm91cCBudW1iZXIKKyAqIGJ1dCBhIGJsb2NrIG51bWJlciBvZmZzZXQgd2l0aGluIGEgZ3JvdXAgdGFibGUhICBDb252ZXJ0IHdpdGggdGhlIGZvcm11bGEKKyAqIChncm91cF9udW1iZXIgLyBncm91cHNfcGVyX2Jsb2NrKS4KKyAqLworZXh0ZXJuIGJsazY0X3QgZXh0MmZzX2Rlc2NyaXB0b3JfYmxvY2tfbG9jMihleHQyX2ZpbHN5cyBmcywKKwkJCQkJYmxrNjRfdCBncm91cF9ibG9jaywgZGdycF90IGkpOworZXh0ZXJuIGJsa190IGV4dDJmc19kZXNjcmlwdG9yX2Jsb2NrX2xvYyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgZ3JvdXBfYmxvY2ssCisJCQkJCSBkZ3JwX3QgaSk7CitlcnJjb2RlX3QgZXh0MmZzX2dldF9kYXRhX2lvKGV4dDJfZmlsc3lzIGZzLCBpb19jaGFubmVsICpvbGRfaW8pOworZXJyY29kZV90IGV4dDJmc19zZXRfZGF0YV9pbyhleHQyX2ZpbHN5cyBmcywgaW9fY2hhbm5lbCBuZXdfaW8pOworZXJyY29kZV90IGV4dDJmc19yZXdyaXRlX3RvX2lvKGV4dDJfZmlsc3lzIGZzLCBpb19jaGFubmVsIG5ld19pbyk7CisKKy8qIGdldF9wYXRobmFtZS5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfcGF0aG5hbWUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBjaGFyICoqbmFtZSk7CisKKy8qIGxpbmsuYyAqLworZXJyY29kZV90IGV4dDJmc19saW5rKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGRpciwgY29uc3QgY2hhciAqbmFtZSwKKwkJICAgICAgZXh0Ml9pbm9fdCBpbm8sIGludCBmbGFncyk7CitlcnJjb2RlX3QgZXh0MmZzX3VubGluayhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQlleHQyX2lub190IGlubywgaW50IGZsYWdzKTsKKworLyogc3ltbGluay5jICovCitlcnJjb2RlX3QgZXh0MmZzX3N5bWxpbmsoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgcGFyZW50LCBleHQyX2lub190IGlubywKKwkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQpOworCisvKiBtbXAuYyAqLworZXJyY29kZV90IGV4dDJmc19tbXBfcmVhZChleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBtbXBfYmxrLCB2b2lkICpidWYpOworZXJyY29kZV90IGV4dDJmc19tbXBfd3JpdGUoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgbW1wX2Jsaywgdm9pZCAqYnVmKTsKK2VycmNvZGVfdCBleHQyZnNfbW1wX2NsZWFyKGV4dDJfZmlsc3lzIGZzKTsKK2VycmNvZGVfdCBleHQyZnNfbW1wX2luaXQoZXh0Ml9maWxzeXMgZnMpOworZXJyY29kZV90IGV4dDJmc19tbXBfc3RhcnQoZXh0Ml9maWxzeXMgZnMpOworZXJyY29kZV90IGV4dDJmc19tbXBfdXBkYXRlKGV4dDJfZmlsc3lzIGZzKTsKK2VycmNvZGVfdCBleHQyZnNfbW1wX3VwZGF0ZTIoZXh0Ml9maWxzeXMgZnMsIGludCBpbW1lZGlhdGVseSk7CitlcnJjb2RlX3QgZXh0MmZzX21tcF9zdG9wKGV4dDJfZmlsc3lzIGZzKTsKK3Vuc2lnbmVkIGV4dDJmc19tbXBfbmV3X3NlcSh2b2lkKTsKKworLyogcmVhZF9iYi5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZWFkX2JiX2lub2RlKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgICAgIGV4dDJfYmFkYmxvY2tzX2xpc3QgKmJiX2xpc3QpOworCisvKiByZWFkX2JiX2ZpbGUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVhZF9iYl9GSUxFMihleHQyX2ZpbHN5cyBmcywgRklMRSAqZiwKKwkJCQkgICAgICBleHQyX2JhZGJsb2Nrc19saXN0ICpiYl9saXN0LAorCQkJCSAgICAgIHZvaWQgKnByaXZfZGF0YSwKKwkJCQkgICAgICB2b2lkICgqaW52YWxpZCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkgICAgICBibGtfdCBibGssCisJCQkJCQkgICAgICBjaGFyICpiYWRzdHIsCisJCQkJCQkgICAgICB2b2lkICpwcml2X2RhdGEpKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX3JlYWRfYmJfRklMRShleHQyX2ZpbHN5cyBmcywgRklMRSAqZiwKKwkJCQkgICAgIGV4dDJfYmFkYmxvY2tzX2xpc3QgKmJiX2xpc3QsCisJCQkJICAgICB2b2lkICgqaW52YWxpZCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkgICAgIGJsa190IGJsaykpOworCisvKiByZXNfZ2R0LmMgKi8KK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9yZXNpemVfaW5vZGUoZXh0Ml9maWxzeXMgZnMpOworCisvKnNoYTI1Ni5jICovCisjZGVmaW5lIEVYVDJGU19TSEEyNTZfTEVOR1RIIDMyCisjaWYgMAorZXh0ZXJuIHZvaWQgZXh0MmZzX3NoYTI1Nihjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBpbl9zaXplLAorCQkgICB1bnNpZ25lZCBjaGFyIG91dFtFWFQyRlNfU0hBMjU2X0xFTkdUSF0pOworI2VuZGlmCisKKy8qIHNoYTUxMi5jICovCisjZGVmaW5lIEVYVDJGU19TSEE1MTJfTEVOR1RIIDY0CitleHRlcm4gdm9pZCBleHQyZnNfc2hhNTEyKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGluX3NpemUsCisJCQkgIHVuc2lnbmVkIGNoYXIgb3V0W0VYVDJGU19TSEE1MTJfTEVOR1RIXSk7CisKKy8qIHN3YXBmcy5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsCisJCQkJCWludCBmbGFncyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19kaXJlbnRfc3dhYl9pbihleHQyX2ZpbHN5cyBmcywgY2hhciAqYnVmLCBpbnQgZmxhZ3MpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZGlyZW50X3N3YWJfb3V0MihleHQyX2ZpbHN5cyBmcywgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwKKwkJCQkJIGludCBmbGFncyk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmJ1ZiwgaW50IGZsYWdzKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zd2FwX2V4dF9hdHRyKGNoYXIgKnRvLCBjaGFyICpmcm9tLCBpbnQgYnVmc2l6ZSwKKwkJCQkgaW50IGhhc19oZWFkZXIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3N3YXBfZXh0X2F0dHJfaGVhZGVyKHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqdG9faGVhZGVyLAorCQkJCQlzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKmZyb21faGRyKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zd2FwX2V4dF9hdHRyX2VudHJ5KHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICp0b19lbnRyeSwKKwkJCQkgICAgICAgc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKmZyb21fZW50cnkpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3N3YXBfc3VwZXIoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzdXBlcik7CitleHRlcm4gdm9pZCBleHQyZnNfc3dhcF9ncm91cF9kZXNjKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgKmdkcCk7CitleHRlcm4gdm9pZCBleHQyZnNfc3dhcF9ncm91cF9kZXNjMihleHQyX2ZpbHN5cywgc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyAqZ2RwKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zd2FwX2lub2RlX2Z1bGwoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICp0LAorCQkJCSAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICpmLCBpbnQgaG9zdG9yZGVyLAorCQkJCSAgIGludCBidWZzaXplKTsKK2V4dGVybiB2b2lkIGV4dDJmc19zd2FwX2lub2RlKGV4dDJfZmlsc3lzIGZzLHN0cnVjdCBleHQyX2lub2RlICp0LAorCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmYsIGludCBob3N0b3JkZXIpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3N3YXBfbW1wKHN0cnVjdCBtbXBfc3RydWN0ICptbXApOworCisvKiB1bml4X2lvLmMgKi8KK2V4dGVybiBpbnQgZXh0MmZzX29wZW5fZmlsZShjb25zdCBjaGFyICpwYXRobmFtZSwgaW50IGZsYWdzLCBtb2RlX3QgbW9kZSk7CitleHRlcm4gaW50IGV4dDJmc19zdGF0KGNvbnN0IGNoYXIgKnBhdGgsIGV4dDJmc19zdHJ1Y3Rfc3RhdCAqYnVmKTsKK2V4dGVybiBpbnQgZXh0MmZzX2ZzdGF0KGludCBmZCwgZXh0MmZzX3N0cnVjdF9zdGF0ICpidWYpOworCisvKiB2YWxpZF9ibGsuYyAqLworZXh0ZXJuIGludCBleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrcyhzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpOworZXh0ZXJuIGludCBleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKTsKKworLyogdmVyc2lvbi5jICovCitleHRlcm4gaW50IGV4dDJmc19wYXJzZV92ZXJzaW9uX3N0cmluZyhjb25zdCBjaGFyICp2ZXJfc3RyaW5nKTsKK2V4dGVybiBpbnQgZXh0MmZzX2dldF9saWJyYXJ5X3ZlcnNpb24oY29uc3QgY2hhciAqKnZlcl9zdHJpbmcsCisJCQkJICAgICAgY29uc3QgY2hhciAqKmRhdGVfc3RyaW5nKTsKKworLyogd3JpdGVfYmJfZmlsZS5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc193cml0ZV9iYl9GSUxFKGV4dDJfYmFkYmxvY2tzX2xpc3QgYmJfbGlzdCwKKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCQkJICAgICAgRklMRSAqZik7CisKKworLyogaW5saW5lIGZ1bmN0aW9ucyAqLworI2lmZGVmIE5PX0lOTElORV9GVU5DUworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfZ2V0X21lbSh1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKnB0cik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfbWVtemVybyh1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKnB0cik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfYXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqcHRyKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2dldF9hcnJheXplcm8odW5zaWduZWQgbG9uZyBjb3VudCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKnB0cik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mcmVlX21lbSh2b2lkICpwdHIpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfcmVzaXplX21lbSh1bnNpZ25lZCBsb25nIG9sZF9zaXplLAorCQkJCSAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqcHRyKTsKK2V4dGVybiB2b2lkIGV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiB2b2lkIGV4dDJmc19tYXJrX2NoYW5nZWQoZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF9jaGFuZ2VkKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiB2b2lkIGV4dDJmc19tYXJrX3ZhbGlkKGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiB2b2lkIGV4dDJmc191bm1hcmtfdmFsaWQoZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIGludCBleHQyZnNfdGVzdF92YWxpZChleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gdm9pZCBleHQyZnNfbWFya19pYl9kaXJ0eShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gdm9pZCBleHQyZnNfbWFya19iYl9kaXJ0eShleHQyX2ZpbHN5cyBmcyk7CitleHRlcm4gaW50IGV4dDJmc190ZXN0X2liX2RpcnR5KGV4dDJfZmlsc3lzIGZzKTsKK2V4dGVybiBpbnQgZXh0MmZzX3Rlc3RfYmJfZGlydHkoZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIGRncnBfdCBleHQyZnNfZ3JvdXBfb2ZfYmxrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGspOworZXh0ZXJuIGRncnBfdCBleHQyZnNfZ3JvdXBfb2ZfaW5vKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubyk7CitleHRlcm4gYmxrX3QgZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGJsa190IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApOworZXh0ZXJuIGJsa190IGV4dDJmc19pbm9kZV9kYXRhX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKwkJCQkgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpOworZXh0ZXJuIHVuc2lnbmVkIGludCBleHQyZnNfZGl2X2NlaWwodW5zaWduZWQgaW50IGEsIHVuc2lnbmVkIGludCBiKTsKK2V4dGVybiBfX3U2NCBleHQyZnNfZGl2NjRfY2VpbChfX3U2NCBhLCBfX3U2NCBiKTsKK2V4dGVybiBpbnQgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihjb25zdCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmVudHJ5KTsKK2V4dGVybiB2b2lkIGV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZW50cnksIGludCBsZW4pOworZXh0ZXJuIGludCBleHQyZnNfZGlyZW50X2ZpbGVfdHlwZShjb25zdCBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmVudHJ5KTsKK2V4dGVybiB2b2lkIGV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmVudHJ5LCBpbnQgdHlwZSk7CitleHRlcm4gc3RydWN0IGV4dDJfaW5vZGUgKmV4dDJmc19pbm9kZShzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqIGxhcmdlX2lub2RlKTsKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqZXh0MmZzX2NvbnN0X2lub2RlKGNvbnN0IHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICogbGFyZ2VfaW5vZGUpOworCisjZW5kaWYKKworLyoKKyAqIFRoZSBhY3R1YWwgaW5saW5lZCBmdW5jdGlvbnMgZGVmaW5pdGlvbnMgdGhlbXNlbHZlcy4uLgorICoKKyAqIElmIE5PX0lOTElORV9GVU5DUyBpcyBkZWZpbmVkLCB0aGVuIHdlIHdvbid0IHRyeSB0byBkbyBpbmxpbmUKKyAqIGZ1bmN0aW9ucyBhdCBhbGwhCisgKi8KKyNpZiAoZGVmaW5lZChJTkNMVURFX0lOTElORV9GVU5DUykgfHwgIWRlZmluZWQoTk9fSU5MSU5FX0ZVTkNTKSkKKyNpZmRlZiBJTkNMVURFX0lOTElORV9GVU5DUworI2RlZmluZSBfSU5MSU5FXyBleHRlcm4KKyNlbHNlCisjaWYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCkKKyNkZWZpbmUgX0lOTElORV8gaW5saW5lCisjZWxzZQorI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIF9JTkxJTkVfIGV4dGVybiBfX2lubGluZV9fCisjZWxzZQkJCQkvKiBGb3IgV2F0Y29tIEMgKi8KKyNkZWZpbmUgX0lOTElORV8gZXh0ZXJuIGlubGluZQorI2VuZGlmIC8qIF9fR05VQ19fICovCisjZW5kaWYgLyogX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMICovCisjZW5kaWYKKworI2lmbmRlZiBFWFQyX0NVU1RPTV9NRU1PUllfUk9VVElORVMKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKy8qCisgKiAgQWxsb2NhdGUgbWVtb3J5LiAgVGhlICdwdHInIGFyZyBtdXN0IHBvaW50IHRvIGEgcG9pbnRlci4KKyAqLworX0lOTElORV8gZXJyY29kZV90IGV4dDJmc19nZXRfbWVtKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqcHRyKQoreworCXZvaWQgKnBwOworCisJcHAgPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCFwcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCW1lbWNweShwdHIsICZwcCwgc2l6ZW9mIChwcCkpOworCXJldHVybiAwOworfQorCitfSU5MSU5FXyBlcnJjb2RlX3QgZXh0MmZzX2dldF9tZW16ZXJvKHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqcHRyKQoreworCXZvaWQgKnBwOworCisJcHAgPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCFwcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCW1lbXNldChwcCwgMCwgc2l6ZSk7CisJbWVtY3B5KHB0ciwgJnBwLCBzaXplb2YocHApKTsKKwlyZXR1cm4gMDsKK30KKworX0lOTElORV8gZXJyY29kZV90IGV4dDJmc19nZXRfYXJyYXkodW5zaWduZWQgbG9uZyBjb3VudCwgdW5zaWduZWQgbG9uZyBzaXplLCB2b2lkICpwdHIpCit7CisJaWYgKGNvdW50ICYmICh+MFVMKS9jb3VudCA8IHNpemUpCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwlyZXR1cm4gZXh0MmZzX2dldF9tZW0oY291bnQqc2l6ZSwgcHRyKTsKK30KKworX0lOTElORV8gZXJyY29kZV90IGV4dDJmc19nZXRfYXJyYXl6ZXJvKHVuc2lnbmVkIGxvbmcgY291bnQsCisJCQkJCXVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9pZCAqcHRyKQoreworCXZvaWQgKnBwOworCisJaWYgKGNvdW50ICYmICh+MFVMKS9jb3VudCA8IHNpemUpCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwlwcCA9IGNhbGxvYyhjb3VudCwgc2l6ZSk7CisJaWYgKCFwcCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCW1lbWNweShwdHIsICZwcCwgc2l6ZW9mKHBwKSk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBGcmVlIG1lbW9yeS4gIFRoZSAncHRyJyBhcmcgbXVzdCBwb2ludCB0byBhIHBvaW50ZXIuCisgKi8KK19JTkxJTkVfIGVycmNvZGVfdCBleHQyZnNfZnJlZV9tZW0odm9pZCAqcHRyKQoreworCXZvaWQgKnA7CisKKwltZW1jcHkoJnAsIHB0ciwgc2l6ZW9mKHApKTsKKwlmcmVlKHApOworCXAgPSAwOworCW1lbWNweShwdHIsICZwLCBzaXplb2YocCkpOworCXJldHVybiAwOworfQorCisvKgorICogIFJlc2l6ZSBtZW1vcnkuICBUaGUgJ3B0cicgYXJnIG11c3QgcG9pbnQgdG8gYSBwb2ludGVyLgorICovCitfSU5MSU5FXyBlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9tZW0odW5zaWduZWQgbG9uZyBFWFQyRlNfQVRUUigodW51c2VkKSkgb2xkX3NpemUsCisJCQkJICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKnB0cikKK3sKKwl2b2lkICpwOworCisJLyogVXNlICJtZW1jcHkiIGZvciBwb2ludGVyIGFzc2lnbm1lbnRzIGhlcmUgdG8gYXZvaWQgcHJvYmxlbXMKKwkgKiB3aXRoIEM5OSBzdHJpY3QgdHlwZSBhbGlhc2luZyBydWxlcy4gKi8KKwltZW1jcHkoJnAsIHB0ciwgc2l6ZW9mKHApKTsKKwlwID0gcmVhbGxvYyhwLCBzaXplKTsKKwlpZiAoIXApCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwltZW1jcHkocHRyLCAmcCwgc2l6ZW9mKHApKTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgkvKiBDdXN0b20gbWVtb3J5IHJvdXRpbmVzICovCisKKy8qCisgKiBNYXJrIGEgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGFzIGRpcnR5CisgKi8KK19JTkxJTkVfIHZvaWQgZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZXh0Ml9maWxzeXMgZnMpCit7CisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19ESVJUWSB8IEVYVDJfRkxBR19DSEFOR0VEOworfQorCisvKgorICogTWFyayBhIGZpbGVzeXN0ZW0gYXMgY2hhbmdlZAorICovCitfSU5MSU5FXyB2b2lkIGV4dDJmc19tYXJrX2NoYW5nZWQoZXh0Ml9maWxzeXMgZnMpCit7CisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19DSEFOR0VEOworfQorCisvKgorICogQ2hlY2sgdG8gc2VlIGlmIGEgZmlsZXN5c3RlbSBoYXMgY2hhbmdlZAorICovCitfSU5MSU5FXyBpbnQgZXh0MmZzX3Rlc3RfY2hhbmdlZChleHQyX2ZpbHN5cyBmcykKK3sKKwlyZXR1cm4gKGZzLT5mbGFncyAmIEVYVDJfRkxBR19DSEFOR0VEKTsKK30KKworLyoKKyAqIE1hcmsgYSBmaWxlc3lzdGVtIGFzIHZhbGlkCisgKi8KK19JTkxJTkVfIHZvaWQgZXh0MmZzX21hcmtfdmFsaWQoZXh0Ml9maWxzeXMgZnMpCit7CisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19WQUxJRDsKK30KKworLyoKKyAqIE1hcmsgYSBmaWxlc3lzdGVtIGFzIE5PVCB2YWxpZAorICovCitfSU5MSU5FXyB2b2lkIGV4dDJmc191bm1hcmtfdmFsaWQoZXh0Ml9maWxzeXMgZnMpCit7CisJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfVkFMSUQ7Cit9CisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgYSBmaWxlc3lzdGVtIGlzIHZhbGlkCisgKi8KK19JTkxJTkVfIGludCBleHQyZnNfdGVzdF92YWxpZChleHQyX2ZpbHN5cyBmcykKK3sKKwlyZXR1cm4gKGZzLT5mbGFncyAmIEVYVDJfRkxBR19WQUxJRCk7Cit9CisKKy8qCisgKiBNYXJrIHRoZSBpbm9kZSBiaXRtYXAgYXMgZGlydHkKKyAqLworX0lOTElORV8gdm9pZCBleHQyZnNfbWFya19pYl9kaXJ0eShleHQyX2ZpbHN5cyBmcykKK3sKKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lCX0RJUlRZIHwgRVhUMl9GTEFHX0NIQU5HRUQ7Cit9CisKKy8qCisgKiBNYXJrIHRoZSBibG9jayBiaXRtYXAgYXMgZGlydHkKKyAqLworX0lOTElORV8gdm9pZCBleHQyZnNfbWFya19iYl9kaXJ0eShleHQyX2ZpbHN5cyBmcykKK3sKKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0JCX0RJUlRZIHwgRVhUMl9GTEFHX0NIQU5HRUQ7Cit9CisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgYSBmaWxlc3lzdGVtJ3MgaW5vZGUgYml0bWFwIGlzIGRpcnR5CisgKi8KK19JTkxJTkVfIGludCBleHQyZnNfdGVzdF9pYl9kaXJ0eShleHQyX2ZpbHN5cyBmcykKK3sKKwlyZXR1cm4gKGZzLT5mbGFncyAmIEVYVDJfRkxBR19JQl9ESVJUWSk7Cit9CisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgYSBmaWxlc3lzdGVtJ3MgYmxvY2sgYml0bWFwIGlzIGRpcnR5CisgKi8KK19JTkxJTkVfIGludCBleHQyZnNfdGVzdF9iYl9kaXJ0eShleHQyX2ZpbHN5cyBmcykKK3sKKwlyZXR1cm4gKGZzLT5mbGFncyAmIEVYVDJfRkxBR19CQl9ESVJUWSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGdyb3VwICMgb2YgYSBibG9jaworICovCitfSU5MSU5FXyBkZ3JwX3QgZXh0MmZzX2dyb3VwX29mX2JsayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxrKQoreworCXJldHVybiBleHQyZnNfZ3JvdXBfb2ZfYmxrMihmcywgYmxrKTsKK30KKy8qCisgKiBSZXR1cm4gdGhlIGdyb3VwICMgb2YgYW4gaW5vZGUgbnVtYmVyCisgKi8KK19JTkxJTkVfIGRncnBfdCBleHQyZnNfZ3JvdXBfb2ZfaW5vKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubykKK3sKKwlyZXR1cm4gKGlubyAtIDEpIC8gZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXA7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGZpcnN0IGJsb2NrIChpbmNsdXNpdmUpIGluIGEgZ3JvdXAKKyAqLworX0lOTElORV8gYmxrX3QgZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBkZ3JwX3QgZ3JvdXApCit7CisJcmV0dXJuIChibGtfdCkgZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywgZ3JvdXApOworfQorCisvKgorICogUmV0dXJuIHRoZSBsYXN0IGJsb2NrIChpbmNsdXNpdmUpIGluIGEgZ3JvdXAKKyAqLworX0lOTElORV8gYmxrX3QgZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCkKK3sKKwlyZXR1cm4gKGJsa190KSBleHQyZnNfZ3JvdXBfbGFzdF9ibG9jazIoZnMsIGdyb3VwKTsKK30KKworX0lOTElORV8gYmxrX3QgZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLAorCQkJCQlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpCit7CisJcmV0dXJuIChibGtfdCkgZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzMihmcywgaW5vZGUpOworfQorCisvKgorICogVGhpcyBpcyBhbiBlZmZpY2llbnQsIG92ZXJmbG93IHNhZmUgd2F5IG9mIGNhbGN1bGF0aW5nIGNlaWwoKDEuMCAqIGEpIC8gYikKKyAqLworX0lOTElORV8gdW5zaWduZWQgaW50IGV4dDJmc19kaXZfY2VpbCh1bnNpZ25lZCBpbnQgYSwgdW5zaWduZWQgaW50IGIpCit7CisJaWYgKCFhKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gKChhIC0gMSkgLyBiKSArIDE7Cit9CisKK19JTkxJTkVfIF9fdTY0IGV4dDJmc19kaXY2NF9jZWlsKF9fdTY0IGEsIF9fdTY0IGIpCit7CisJaWYgKCFhKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gKChhIC0gMSkgLyBiKSArIDE7Cit9CisKK19JTkxJTkVfIGludCBleHQyZnNfZGlyZW50X25hbWVfbGVuKGNvbnN0IHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZW50cnkpCit7CisJcmV0dXJuIGVudHJ5LT5uYW1lX2xlbiAmIDB4ZmY7Cit9CisKK19JTkxJTkVfIHZvaWQgZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oc3RydWN0IGV4dDJfZGlyX2VudHJ5ICplbnRyeSwgaW50IGxlbikKK3sKKwllbnRyeS0+bmFtZV9sZW4gPSAoZW50cnktPm5hbWVfbGVuICYgMHhmZjAwKSB8IChsZW4gJiAweGZmKTsKK30KKworX0lOTElORV8gaW50IGV4dDJmc19kaXJlbnRfZmlsZV90eXBlKGNvbnN0IHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZW50cnkpCit7CisJcmV0dXJuIGVudHJ5LT5uYW1lX2xlbiA+PiA4OworfQorCitfSU5MSU5FXyB2b2lkIGV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmVudHJ5LCBpbnQgdHlwZSkKK3sKKwllbnRyeS0+bmFtZV9sZW4gPSAoZW50cnktPm5hbWVfbGVuICYgMHhmZikgfCAodHlwZSA8PCA4KTsKK30KKworX0lOTElORV8gc3RydWN0IGV4dDJfaW5vZGUgKmV4dDJmc19pbm9kZShzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqIGxhcmdlX2lub2RlKQoreworCS8qIEl0IGlzIGFsd2F5cyBzYWZlIHRvIGNvbnZlcnQgbGFyZ2UgaW5vZGUgdG8gYSBzbWFsbCBpbm9kZSAqLworCXJldHVybiAoc3RydWN0IGV4dDJfaW5vZGUgKikgbGFyZ2VfaW5vZGU7Cit9CisKK19JTkxJTkVfIGNvbnN0IHN0cnVjdCBleHQyX2lub2RlICoKK2V4dDJmc19jb25zdF9pbm9kZShjb25zdCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqIGxhcmdlX2lub2RlKQoreworCS8qIEl0IGlzIGFsd2F5cyBzYWZlIHRvIGNvbnZlcnQgbGFyZ2UgaW5vZGUgdG8gYSBzbWFsbCBpbm9kZSAqLworCXJldHVybiAoY29uc3Qgc3RydWN0IGV4dDJfaW5vZGUgKikgbGFyZ2VfaW5vZGU7Cit9CisKKyN1bmRlZiBfSU5MSU5FXworI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfRVhUMkZTX0VYVDJGU19IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyZnMucGMuaW4gYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyZnMucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhYzg1ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJmcy5wYy5pbgpAQCAtMCwwICsxLDExIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKworTmFtZTogZXh0MmZzCitEZXNjcmlwdGlvbjogRXh0MmZzIGxpYnJhcnkKK1ZlcnNpb246IEBFMkZTUFJPR1NfVkVSU0lPTkAKK1JlcXVpcmVzLnByaXZhdGU6IGNvbV9lcnIKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L2V4dDJmcyAtSSR7aW5jbHVkZWRpcn0KK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZXh0MmZzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyZnNQLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQyZnNQLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlOWQzMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dDJmc1AuaApAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIGV4dDJmc1AuaCAtLS0gcHJpdmF0ZSBoZWFkZXIgZmlsZSBmb3IgZXh0MiBsaWJyYXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKyNkZWZpbmUgRVhUMkZTX01BWF9ORVNURURfTElOS1MgIDgKKworLyoKKyAqIEJhZGJsb2NrcyBsaXN0CisgKi8KK3N0cnVjdCBleHQyX3N0cnVjdF91MzJfbGlzdCB7CisJaW50CW1hZ2ljOworCWludAludW07CisJaW50CXNpemU7CisJX191MzIJKmxpc3Q7CisJaW50CWJhZGJsb2Nrc19mbGFnczsKK307CisKK3N0cnVjdCBleHQyX3N0cnVjdF91MzJfaXRlcmF0ZSB7CisJaW50CQkJbWFnaWM7CisJZXh0Ml91MzJfbGlzdAkJYmI7CisJaW50CQkJcHRyOworfTsKKworCisvKgorICogRGlyZWN0b3J5IGJsb2NrIGl0ZXJhdG9yIGRlZmluaXRpb24KKyAqLworc3RydWN0IGV4dDJfc3RydWN0X2RibGlzdCB7CisJaW50CQkJbWFnaWM7CisJZXh0Ml9maWxzeXMJCWZzOworCXVuc2lnbmVkIGxvbmcgbG9uZwlzaXplOworCXVuc2lnbmVkIGxvbmcgbG9uZwljb3VudDsKKwlpbnQJCQlzb3J0ZWQ7CisJc3RydWN0IGV4dDJfZGJfZW50cnkyICoJbGlzdDsKK307CisKKy8qCisgKiBGb3IgZGlyZWN0b3J5IGl0ZXJhdG9ycworICovCitzdHJ1Y3QgZGlyX2NvbnRleHQgeworCWV4dDJfaW5vX3QJCWRpcjsKKwlpbnQJCWZsYWdzOworCWNoYXIJCSpidWY7CisJdW5zaWduZWQgaW50CWJ1ZmxlbjsKKwlpbnQgKCpmdW5jKShleHQyX2lub190CWRpciwKKwkJICAgIGludAllbnRyeSwKKwkJICAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkgICAgaW50CW9mZnNldCwKKwkJICAgIGludAlibG9ja3NpemUsCisJCSAgICBjaGFyCSpidWYsCisJCSAgICB2b2lkCSpwcml2X2RhdGEpOworCXZvaWQJCSpwcml2X2RhdGE7CisJZXJyY29kZV90CWVycmNvZGU7Cit9OworCisvKgorICogSW5vZGUgY2FjaGUgc3RydWN0dXJlCisgKi8KK3N0cnVjdCBleHQyX2lub2RlX2NhY2hlIHsKKwl2b2lkICoJCQkJYnVmZmVyOworCWJsazY0X3QJCQkJYnVmZmVyX2JsazsKKwlpbnQJCQkJY2FjaGVfbGFzdDsKKwl1bnNpZ25lZCBpbnQJCQljYWNoZV9zaXplOworCWludAkJCQlyZWZjb3VudDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9jYWNoZV9lbnQJKmNhY2hlOworfTsKKworc3RydWN0IGV4dDJfaW5vZGVfY2FjaGVfZW50IHsKKwlleHQyX2lub190CQlpbm87CisJc3RydWN0IGV4dDJfaW5vZGUJKmlub2RlOworfTsKKworLyogRnVuY3Rpb24gcHJvdG90eXBlcyAqLworCitleHRlcm4gaW50IGV4dDJmc19wcm9jZXNzX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyAgCWZzLAorCQkJCSAgICBibGs2NF90CQkqYmxvY2tuciwKKwkJCQkgICAgZTJfYmxrY250X3QJCWJsb2NrY250LAorCQkJCSAgICBibGs2NF90CQlyZWZfYmxvY2ssCisJCQkJICAgIGludAkJCXJlZl9vZmZzZXQsCisJCQkJICAgIHZvaWQJCSpwcml2X2RhdGEpOworCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19pbmxpbmVfZGF0YV9lYV9yZW1vdmUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKTsKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2V4cGFuZChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8pOworZXh0ZXJuIGludCBleHQyZnNfaW5saW5lX2RhdGFfZGlyX2l0ZXJhdGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCSAgdm9pZCAqcHJpdl9kYXRhKTsKKworLyogR2VuZXJpYyBudW1lcmljIHByb2dyZXNzIG1ldGVyICovCisKK3N0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgeworCV9fdTY0CQltYXg7CisJaW50CQlsb2dfbWF4OworCWludAkJc2tpcF9wcm9ncmVzczsKK307CisKKy8qCisgKiBwcm9ncmVzcyBjYWxsYmFjayBmdW5jdGlvbnMKKyAqLworc3RydWN0IGV4dDJmc19wcm9ncmVzc19vcHMgeworCXZvaWQgKCppbml0KShleHQyX2ZpbHN5cyBmcywKKwkJICAgICBzdHJ1Y3QgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfc3RydWN0ICogcHJvZ3Jlc3MsCisJCSAgICAgY29uc3QgY2hhciAqbGFiZWwsIF9fdTY0IG1heCk7CisJdm9pZCAoKnVwZGF0ZSkoZXh0Ml9maWxzeXMgZnMsCisJCSAgICAgICBzdHJ1Y3QgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfc3RydWN0ICogcHJvZ3Jlc3MsCisJCSAgICAgICBfX3U2NCB2YWwpOworCXZvaWQgKCpjbG9zZSkoZXh0Ml9maWxzeXMgZnMsCisJCSAgICAgIHN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgKiBwcm9ncmVzcywKKwkJICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSk7Cit9OworCitleHRlcm4gc3RydWN0IGV4dDJmc19wcm9ncmVzc19vcHMgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfb3BzOworCitleHRlcm4gdm9pZCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19pbml0KGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgc3RydWN0IGV4dDJmc19udW1lcmljX3Byb2dyZXNzX3N0cnVjdCAqIHByb2dyZXNzLAorCQkJCQkgY29uc3QgY2hhciAqbGFiZWwsIF9fdTY0IG1heCk7CitleHRlcm4gdm9pZCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc191cGRhdGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgIHN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgKiBwcm9ncmVzcywKKwkJCQkJICAgX191NjQgdmFsKTsKK2V4dGVybiB2b2lkIGV4dDJmc19udW1lcmljX3Byb2dyZXNzX2Nsb3NlKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgIHN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgKiBwcm9ncmVzcywKKwkJCQkJICBjb25zdCBjaGFyICptZXNzYWdlKTsKKworLyoKKyAqIDY0LWJpdCBiaXRtYXAgc3VwcG9ydAorICovCisKK2V4dGVybiBlcnJjb2RlX3QgZXh0MmZzX2FsbG9jX2dlbmVyaWNfYm1hcChleHQyX2ZpbHN5cyBmcywgZXJyY29kZV90IG1hZ2ljLAorCQkJCQkgICBpbnQgdHlwZSwgX191NjQgc3RhcnQsIF9fdTY0IGVuZCwKKwkJCQkJICAgX191NjQgcmVhbF9lbmQsCisJCQkJCSAgIGNvbnN0IGNoYXIgKiBkZXNjcmlwdGlvbiwKKwkJCQkJICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpibWFwKTsKKworZXh0ZXJuIHZvaWQgZXh0MmZzX2ZyZWVfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwKTsKKworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY29weV9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIHNyYywKKwkJCQkJICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgKmRlc3QpOworCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19yZXNpemVfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwLAorCQkJCQkgICAgX191NjQgbmV3X2VuZCwKKwkJCQkJICAgIF9fdTY0IG5ld19yZWFsX2VuZCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19mdWRnZV9nZW5lcmljX2JtYXBfZW5kKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgICBlcnJjb2RlX3QgbmVxLAorCQkJCQkgICAgICAgX191NjQgZW5kLCBfX3U2NCAqb2VuZCk7CitleHRlcm4gaW50IGV4dDJmc19tYXJrX2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICBfX3U2NCBhcmcpOworZXh0ZXJuIGludCBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICAgIF9fdTY0IGFyZyk7CitleHRlcm4gaW50IGV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCSAgICBfX3U2NCBhcmcpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfc2V0X2dlbmVyaWNfYm1hcF9yYW5nZShleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICAgX191NjQgc3RhcnQsIHVuc2lnbmVkIGludCBudW0sCisJCQkJCSAgICAgICB2b2lkICppbik7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgICAgICBfX3U2NCBzdGFydCwgdW5zaWduZWQgaW50IG51bSwKKwkJCQkJICAgICAgIHZvaWQgKm91dCk7CitleHRlcm4gdm9pZCBleHQyZnNfd2Fybl9iaXRtYXAzMihleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLGNvbnN0IGNoYXIgKmZ1bmMpOworCitleHRlcm4gaW50IGV4dDJmc19tZW1faXNfemVybyhjb25zdCBjaGFyICptZW0sIHNpemVfdCBsZW4pOworCitleHRlcm4gaW50IGV4dDJmc19maWxlX2Jsb2NrX29mZnNldF90b29fYmlnKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCQkgICAgYmxrNjRfdCBvZmZzZXQpOworCisvKiBhdGV4aXQgc3VwcG9ydCAqLwordHlwZWRlZiB2b2lkICgqZXh0Ml9leGl0X2ZuKSh2b2lkICopOworZXJyY29kZV90IGV4dDJmc19hZGRfZXhpdF9mbihleHQyX2V4aXRfZm4gZm4sIHZvaWQgKmRhdGEpOworZXJyY29kZV90IGV4dDJmc19yZW1vdmVfZXhpdF9mbihleHQyX2V4aXRfZm4gZm4sIHZvaWQgKmRhdGEpOwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzNhMzMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmgKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDMsMjAwNCBDbHVzdGVyIEZpbGUgU3lzdGVtcywgSW5jLCBpbmZvQGNsdXN0ZXJmcy5jb20KKyAqIFdyaXR0ZW4gYnkgQWxleCBUb21hcyA8YWxleEBjbHVzdGVyZnMuY29tPgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTElOVVhfRVhUM19FWFRFTlRTCisjZGVmaW5lIF9MSU5VWF9FWFQzX0VYVEVOVFMKKworLyoKKyAqIGV4dDNfaW5vZGUgaGFzIGlfYmxvY2sgYXJyYXkgKHRvdGFsIDYwIGJ5dGVzKQorICogZmlyc3QgNCBieXRlcyBhcmUgdXNlZCB0byBzdG9yZToKKyAqICAtIHRyZWUgZGVwdGggKDAgbWVhbiB0aGVyZSBpcyBubyB0cmVlIHlldC4gYWxsIGV4dGVudHMgaW4gdGhlIGlub2RlKQorICogIC0gbnVtYmVyIG9mIGFsaXZlIGV4dGVudHMgaW4gdGhlIGlub2RlCisgKi8KKworLyoKKyAqIFRoaXMgaXMgZXh0ZW50IHRhaWwgb24tZGlzayBzdHJ1Y3R1cmUuCisgKiBBbGwgb3RoZXIgZXh0ZW50IHN0cnVjdHVyZXMgYXJlIDEyIGJ5dGVzIGxvbmcuICBJdCB0dXJucyBvdXQgdGhhdAorICogYmxvY2tfc2l6ZSAlIDEyID49IDQgZm9yIGF0IGxlYXN0IGFsbCBwb3dlcnMgb2YgMiBncmVhdGVyIHRoYW4gNTEyLCB3aGljaAorICogY292ZXJzIGFsbCB2YWxpZCBleHQ0IGJsb2NrIHNpemVzLiAgVGhlcmVmb3JlLCB0aGlzIHRhaWwgc3RydWN0dXJlIGNhbiBiZQorICogY3JhbW1lZCBpbnRvIHRoZSBlbmQgb2YgdGhlIGJsb2NrIHdpdGhvdXQgaGF2aW5nIHRvIHJlYmFsYW5jZSB0aGUgdHJlZS4KKyAqLworc3RydWN0IGV4dDNfZXh0ZW50X3RhaWwgeworCV9fbGUzMglldF9jaGVja3N1bTsJLyogY3JjMzJjKHV1aWQraW51bStleHRlbnRfYmxvY2spICovCit9OworCisvKgorICogdGhpcyBpcyBleHRlbnQgb24tZGlzayBzdHJ1Y3R1cmUKKyAqIGl0J3MgdXNlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSB0cmVlCisgKi8KK3N0cnVjdCBleHQzX2V4dGVudCB7CisJX19sZTMyCWVlX2Jsb2NrOwkvKiBmaXJzdCBsb2dpY2FsIGJsb2NrIGV4dGVudCBjb3ZlcnMgKi8KKwlfX2xlMTYJZWVfbGVuOwkJLyogbnVtYmVyIG9mIGJsb2NrcyBjb3ZlcmVkIGJ5IGV4dGVudCAqLworCV9fbGUxNgllZV9zdGFydF9oaTsJLyogaGlnaCAxNiBiaXRzIG9mIHBoeXNpY2FsIGJsb2NrICovCisJX19sZTMyCWVlX3N0YXJ0OwkvKiBsb3cgMzIgYmlncyBvZiBwaHlzaWNhbCBibG9jayAqLworfTsKKworLyoKKyAqIHRoaXMgaXMgaW5kZXggb24tZGlzayBzdHJ1Y3R1cmUKKyAqIGl0J3MgdXNlZCBhdCBhbGwgdGhlIGxldmVscywgYnV0IHRoZSBib3R0b20KKyAqLworc3RydWN0IGV4dDNfZXh0ZW50X2lkeCB7CisJX19sZTMyCWVpX2Jsb2NrOwkvKiBpbmRleCBjb3ZlcnMgbG9naWNhbCBibG9ja3MgZnJvbSAnYmxvY2snICovCisJX19sZTMyCWVpX2xlYWY7CS8qIHBvaW50ZXIgdG8gdGhlIHBoeXNpY2FsIGJsb2NrIG9mIHRoZSBuZXh0ICoKKwkJCQkgKiBsZXZlbC4gbGVhZiBvciBuZXh0IGluZGV4IGNvdWxkIGJldCBoZXJlICovCisJX19sZTE2CWVpX2xlYWZfaGk7CS8qIGhpZ2ggMTYgYml0cyBvZiBwaHlzaWNhbCBibG9jayAqLworCV9fbGUxNgllaV91bnVzZWQ7Cit9OworCisvKgorICogZWFjaCBibG9jayAobGVhdmVzIGFuZCBpbmRleGVzKSwgZXZlbiBpbm9kZS1zdG9yZWQgaGFzIGhlYWRlcgorICovCitzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyIHsKKwlfX2xlMTYJZWhfbWFnaWM7CS8qIHByb2JhYmx5IHdpbGwgc3VwcG9ydCBkaWZmZXJlbnQgZm9ybWF0cyAqLworCV9fbGUxNgllaF9lbnRyaWVzOwkvKiBudW1iZXIgb2YgdmFsaWQgZW50cmllcyAqLworCV9fbGUxNgllaF9tYXg7CQkvKiBjYXBhY2l0eSBvZiBzdG9yZSBpbiBlbnRyaWVzICovCisJX19sZTE2CWVoX2RlcHRoOwkvKiBoYXMgdHJlZSByZWFsIHVuZGVybGF5aW5nIGJsb2Nrcz8gKi8KKwlfX2xlMzIJZWhfZ2VuZXJhdGlvbjsJLyogZ2VuZXJhdGlvbiBvZiB0aGUgdHJlZSAqLworfTsKKworI2RlZmluZSBFWFQzX0VYVF9NQUdJQwkJMHhmMzBhCisKKy8qCisgKiBhcnJheSBvZiBleHQzX2V4dF9wYXRoIGNvbnRhaW5zIHBhdGggdG8gc29tZSBleHRlbnQKKyAqIGNyZWF0aW9uL2xvb2t1cCByb3V0aW5lcyB1c2UgaXQgZm9yIHRyYXZlcnNhbC9zcGxpdHRpbmcvZXRjCisgKiB0cnVuY2F0ZSB1c2VzIGl0IHRvIHNpbXVsYXRlIHJlY3Vyc2l2ZSB3YWxraW5nCisgKi8KK3N0cnVjdCBleHQzX2V4dF9wYXRoIHsKKwlfX3UzMgkJCQlwX2Jsb2NrOworCV9fdTE2CQkJCXBfZGVwdGg7CisJc3RydWN0IGV4dDNfZXh0ZW50CQkqcF9leHQ7CisJc3RydWN0IGV4dDNfZXh0ZW50X2lkeAkJKnBfaWR4OworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIJKnBfaGRyOworCXN0cnVjdCBidWZmZXJfaGVhZAkJKnBfYmg7Cit9OworCisvKgorICogRVhUX0lOSVRfTUFYX0xFTiBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYmxvY2tzIHdlIGNhbiBoYXZlIGluIGFuCisgKiBpbml0aWFsaXplZCBleHRlbnQuIFRoaXMgaXMgMl4xNSBhbmQgbm90ICgyXjE2IC0gMSksIHNpbmNlIHdlIHVzZSB0aGUKKyAqIE1TQiBvZiBlZV9sZW4gZmllbGQgaW4gdGhlIGV4dGVudCBkYXRhc3RydWN0dXJlIHRvIHNpZ25pZnkgaWYgdGhpcworICogcGFydGljdWxhciBleHRlbnQgaXMgYW4gaW5pdGlhbGl6ZWQgZXh0ZW50IG9yIGFuIHVuaW5pdGlhbGl6ZWQgKGkuZS4KKyAqIHByZWFsbG9jYXRlZCkuCisgKiBFWFRfVU5JTklUX01BWF9MRU4gaXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJsb2NrcyB3ZSBjYW4gaGF2ZSBpbiBhbgorICogdW5pbml0aWFsaXplZCBleHRlbnQuCisgKiBJZiBlZV9sZW4gaXMgPD0gMHg4MDAwLCBpdCBpcyBhbiBpbml0aWFsaXplZCBleHRlbnQuIE90aGVyd2lzZSwgaXQgaXMgYW4KKyAqIHVuaW5pdGlhbGl6ZWQgb25lLiBJbiBvdGhlciB3b3JkcywgaWYgTVNCIG9mIGVlX2xlbiBpcyBzZXQsIGl0IGlzIGFuCisgKiB1bmluaXRpYWxpemVkIGV4dGVudCB3aXRoIG9ubHkgb25lIHNwZWNpYWwgc2NlbmFyaW8gd2hlbiBlZV9sZW4gPSAweDgwMDAuCisgKiBJbiB0aGlzIGNhc2Ugd2UgY2FuIG5vdCBoYXZlIGFuIHVuaW5pdGlhbGl6ZWQgZXh0ZW50IG9mIHplcm8gbGVuZ3RoIGFuZAorICogdGh1cyB3ZSBtYWtlIGl0IGFzIGEgc3BlY2lhbCBjYXNlIG9mIGluaXRpYWxpemVkIGV4dGVudCB3aXRoIDB4ODAwMCBsZW5ndGguCisgKiBUaGlzIHdheSB3ZSBnZXQgYmV0dGVyIGV4dGVudC10by1ncm91cCBhbGlnbm1lbnQgZm9yIGluaXRpYWxpemVkIGV4dGVudHMuCisgKiBIZW5jZSwgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJsb2NrcyB3ZSBjYW4gaGF2ZSBpbiBhbiAqaW5pdGlhbGl6ZWQqCisgKiBleHRlbnQgaXMgMl4xNSAoMzI3NjgpIGFuZCBpbiBhbiAqdW5pbml0aWFsaXplZCogZXh0ZW50IGlzIDJeMTUtMSAoMzI3NjcpLgorICovCisjZGVmaW5lIEVYVF9JTklUX01BWF9MRU4JKDFVTCA8PCAxNSkKKyNkZWZpbmUgRVhUX1VOSU5JVF9NQVhfTEVOCShFWFRfSU5JVF9NQVhfTEVOIC0gMSkKKyNkZWZpbmUgRVhUX01BWF9FWFRFTlRfTEJMSwkoKChfX3U2NCkgMSA8PCAzMikgLSAxKQorI2RlZmluZSBFWFRfTUFYX0VYVEVOVF9QQkxLCSgoKF9fdTY0KSAxIDw8IDQ4KSAtIDEpCisKKyNkZWZpbmUgRVhUX0ZJUlNUX0VYVEVOVChfX2hkcl9fKSBcCisJKChzdHJ1Y3QgZXh0M19leHRlbnQgKikgKCgoY2hhciAqKSAoX19oZHJfXykpICsJCVwKKwkJCQkgc2l6ZW9mKHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIpKSkKKyNkZWZpbmUgRVhUX0ZJUlNUX0lOREVYKF9faGRyX18pIFwKKwkoKHN0cnVjdCBleHQzX2V4dGVudF9pZHggKikgKCgoY2hhciAqKSAoX19oZHJfXykpICsJXAorCQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIpKSkKKyNkZWZpbmUgRVhUX0hBU19GUkVFX0lOREVYKF9fcGF0aF9fKSBcCisJKGV4dDJmc19sZTE2X3RvX2NwdSgoX19wYXRoX18pLT5wX2hkci0+ZWhfZW50cmllcykgPCBcCisJIGV4dDJmc19sZTE2X3RvX2NwdSgoX19wYXRoX18pLT5wX2hkci0+ZWhfbWF4KSkKKyNkZWZpbmUgRVhUX0xBU1RfRVhURU5UKF9faGRyX18pIFwKKwkoRVhUX0ZJUlNUX0VYVEVOVCgoX19oZHJfXykpICsgXAorCWV4dDJmc19sZTE2X3RvX2NwdSgoX19oZHJfXyktPmVoX2VudHJpZXMpIC0gMSkKKyNkZWZpbmUgRVhUX0xBU1RfSU5ERVgoX19oZHJfXykgXAorCShFWFRfRklSU1RfSU5ERVgoKF9faGRyX18pKSArIFwKKwlleHQyZnNfbGUxNl90b19jcHUoKF9faGRyX18pLT5laF9lbnRyaWVzKSAtIDEpCisjZGVmaW5lIEVYVF9NQVhfRVhURU5UKF9faGRyX18pIFwKKwkoRVhUX0ZJUlNUX0VYVEVOVCgoX19oZHJfXykpICsgXAorCWV4dDJmc19sZTE2X3RvX2NwdSgoX19oZHJfXyktPmVoX21heCkgLSAxKQorI2RlZmluZSBFWFRfTUFYX0lOREVYKF9faGRyX18pIFwKKwkoRVhUX0ZJUlNUX0lOREVYKChfX2hkcl9fKSkgKyBcCisJZXh0MmZzX2xlMTZfdG9fY3B1KChfX2hkcl9fKS0+ZWhfbWF4KSAtIDEpCisKKyNlbmRpZiAvKiBfTElOVVhfRVhUM19FWFRFTlRTICovCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2V4dF9hdHRyLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHRfYXR0ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZmQxMGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHRfYXR0ci5jCkBAIC0wLDAgKzEsMTEzOSBAQAorLyoKKyAqIGV4dF9hdHRyLmMgLS0tIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9ja3MKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDEgQW5kcmVhcyBHcnVlbmJhY2hlciwgPGEuZ3J1ZW5iYWNoZXJAY29tcHV0ZXIub3JnPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJfZXh0X2F0dHIuaCIKKworI2luY2x1ZGUgImV4dDJmcy5oIgorCisjZGVmaW5lIE5BTUVfSEFTSF9TSElGVCA1CisjZGVmaW5lIFZBTFVFX0hBU0hfU0hJRlQgMTYKKworLyoKKyAqIGV4dDJfeGF0dHJfaGFzaF9lbnRyeSgpCisgKgorICogQ29tcHV0ZSB0aGUgaGFzaCBvZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUuCisgKi8KK19fdTMyIGV4dDJmc19leHRfYXR0cl9oYXNoX2VudHJ5KHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICplbnRyeSwgdm9pZCAqZGF0YSkKK3sKKwlfX3UzMiBoYXNoID0gMDsKKwljaGFyICpuYW1lID0gKChjaGFyICopIGVudHJ5KSArIHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSk7CisJaW50IG47CisKKwlmb3IgKG4gPSAwOyBuIDwgZW50cnktPmVfbmFtZV9sZW47IG4rKykgeworCQloYXNoID0gKGhhc2ggPDwgTkFNRV9IQVNIX1NISUZUKSBeCisJCSAgICAgICAoaGFzaCA+PiAoOCpzaXplb2YoaGFzaCkgLSBOQU1FX0hBU0hfU0hJRlQpKSBeCisJCSAgICAgICAqbmFtZSsrOworCX0KKworCS8qIFRoZSBoYXNoIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWQgb24gdGhlIGRhdGEgaW4gbGl0dGxlLWVuZGlhbi4gKi8KKwlpZiAoZW50cnktPmVfdmFsdWVfYmxvY2sgPT0gMCAmJiBlbnRyeS0+ZV92YWx1ZV9zaXplICE9IDApIHsKKwkJX191MzIgKnZhbHVlID0gKF9fdTMyICopZGF0YTsKKwkJZm9yIChuID0gKGVudHJ5LT5lX3ZhbHVlX3NpemUgKyBFWFQyX0VYVF9BVFRSX1JPVU5EKSA+PgorCQkJIEVYVDJfRVhUX0FUVFJfUEFEX0JJVFM7IG47IG4tLSkgeworCQkJaGFzaCA9IChoYXNoIDw8IFZBTFVFX0hBU0hfU0hJRlQpIF4KKwkJCSAgICAgICAoaGFzaCA+PiAoOCpzaXplb2YoaGFzaCkgLSBWQUxVRV9IQVNIX1NISUZUKSkgXgorCQkJICAgICAgIGV4dDJmc19sZTMyX3RvX2NwdSgqdmFsdWUrKyk7CisJCX0KKwl9CisKKwlyZXR1cm4gaGFzaDsKK30KKworc3RhdGljIGVycmNvZGVfdCBjaGVja19leHRfYXR0cl9oZWFkZXIoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXIpCit7CisJaWYgKChoZWFkZXItPmhfbWFnaWMgIT0gRVhUMl9FWFRfQVRUUl9NQUdJQ192MSAmJgorCSAgICAgaGVhZGVyLT5oX21hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUMpIHx8CisJICAgIGhlYWRlci0+aF9ibG9ja3MgIT0gMSkKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0VBX0hFQURFUjsKKworCXJldHVybiAwOworfQorCisjdW5kZWYgTkFNRV9IQVNIX1NISUZUCisjdW5kZWYgVkFMVUVfSEFTSF9TSElGVAorCitlcnJjb2RlX3QgZXh0MmZzX3JlYWRfZXh0X2F0dHIzKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLCB2b2lkICpidWYsCisJCQkJZXh0Ml9pbm9fdCBpbnVtKQoreworCWludAkJY3N1bV9mYWlsZWQgPSAwOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCBibG9jaywgMSwgYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgJiYKKwkgICAgIWV4dDJmc19leHRfYXR0cl9ibG9ja19jc3VtX3ZlcmlmeShmcywgaW51bSwgYmxvY2ssIGJ1ZikpCisJCWNzdW1fZmFpbGVkID0gMTsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCWV4dDJmc19zd2FwX2V4dF9hdHRyKGJ1ZiwgYnVmLCBmcy0+YmxvY2tzaXplLCAxKTsKKyNlbmRpZgorCisJcmV0dmFsID0gY2hlY2tfZXh0X2F0dHJfaGVhZGVyKGJ1Zik7CisJaWYgKHJldHZhbCA9PSAwICYmIGNzdW1fZmFpbGVkKQorCQlyZXR2YWwgPSBFWFQyX0VUX0VYVF9BVFRSX0NTVU1fSU5WQUxJRDsKKworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVhZF9leHRfYXR0cjIoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxvY2ssIHZvaWQgKmJ1ZikKK3sKKwlyZXR1cm4gZXh0MmZzX3JlYWRfZXh0X2F0dHIzKGZzLCBibG9jaywgYnVmLCAwKTsKK30KKworZXJyY29kZV90IGV4dDJmc19yZWFkX2V4dF9hdHRyKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibG9jaywgdm9pZCAqYnVmKQoreworCXJldHVybiBleHQyZnNfcmVhZF9leHRfYXR0cjIoZnMsIGJsb2NrLCBidWYpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2V4dF9hdHRyMyhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywgdm9pZCAqaW5idWYsCisJCQkJIGV4dDJfaW5vX3QgaW51bSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSp3cml0ZV9idWY7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmd3JpdGVfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWV4dDJmc19zd2FwX2V4dF9hdHRyKHdyaXRlX2J1ZiwgaW5idWYsIGZzLT5ibG9ja3NpemUsIDEpOworI2Vsc2UKKwl3cml0ZV9idWYgPSAoY2hhciAqKSBpbmJ1ZjsKKyNlbmRpZgorCisJcmV0dmFsID0gZXh0MmZzX2V4dF9hdHRyX2Jsb2NrX2NzdW1fc2V0KGZzLCBpbnVtLCBibG9jaywKKwkJCShzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKil3cml0ZV9idWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgYmxvY2ssIDEsIHdyaXRlX2J1Zik7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZXh0MmZzX2ZyZWVfbWVtKCZ3cml0ZV9idWYpOworI2VuZGlmCisJaWYgKCFyZXR2YWwpCisJCWV4dDJmc19tYXJrX2NoYW5nZWQoZnMpOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfd3JpdGVfZXh0X2F0dHIyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsb2NrLCB2b2lkICppbmJ1ZikKK3sKKwlyZXR1cm4gZXh0MmZzX3dyaXRlX2V4dF9hdHRyMyhmcywgYmxvY2ssIGluYnVmLCAwKTsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9leHRfYXR0cihleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxvY2ssIHZvaWQgKmluYnVmKQoreworCXJldHVybiBleHQyZnNfd3JpdGVfZXh0X2F0dHIyKGZzLCBibG9jaywgaW5idWYpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBhZGp1c3RzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIEVBIGJsb2NrLgorICovCitlcnJjb2RlX3QgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDMoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLAorCQkJCSAgICBjaGFyICpibG9ja19idWYsIGludCBhZGp1c3QsCisJCQkJICAgIF9fdTMyICpuZXdjb3VudCwgZXh0Ml9pbm9fdCBpbnVtKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXI7CisJY2hhcgkqYnVmID0gMDsKKworCWlmICgoYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkgfHwKKwkgICAgKGJsayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSkKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0VBX0JMT0NLX05VTTsKKworCWlmICghYmxvY2tfYnVmKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZidWYpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJYmxvY2tfYnVmID0gYnVmOworCX0KKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2V4dF9hdHRyMyhmcywgYmxrLCBibG9ja19idWYsIGludW0pOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJaGVhZGVyID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqKSBibG9ja19idWY7CisJaGVhZGVyLT5oX3JlZmNvdW50ICs9IGFkanVzdDsKKwlpZiAobmV3Y291bnQpCisJCSpuZXdjb3VudCA9IGhlYWRlci0+aF9yZWZjb3VudDsKKworCXJldHZhbCA9IGV4dDJmc193cml0ZV9leHRfYXR0cjMoZnMsIGJsaywgYmxvY2tfYnVmLCBpbnVtKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworZXJyb3V0OgorCWlmIChidWYpCisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrLAorCQkJCSAgICBjaGFyICpibG9ja19idWYsIGludCBhZGp1c3QsCisJCQkJICAgIF9fdTMyICpuZXdjb3VudCkKK3sKKwlyZXR1cm4gZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDMoZnMsIGJsaywgYmxvY2tfYnVmLCBhZGp1c3QsCisJCQkJCSAgbmV3Y291bnQsIDApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudChleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxrLAorCQkJCQljaGFyICpibG9ja19idWYsIGludCBhZGp1c3QsCisJCQkJCV9fdTMyICpuZXdjb3VudCkKK3sKKwlyZXR1cm4gZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIoZnMsIGJsaywgYmxvY2tfYnVmLCBhZGp1c3QsCisJCQkJCSAgbmV3Y291bnQpOworfQorCisvKiBNYW5pcHVsYXRlIHRoZSBjb250ZW50cyBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9ucyAqLworc3RydWN0IGV4dDJfeGF0dHIgeworCWNoYXIgKm5hbWU7CisJdm9pZCAqdmFsdWU7CisJc2l6ZV90IHZhbHVlX2xlbjsKK307CisKK3N0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSB7CisJZXJyY29kZV90IG1hZ2ljOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBleHQyX3hhdHRyICphdHRyczsKKwlzaXplX3QgbGVuZ3RoLCBjb3VudDsKKwlleHQyX2lub190IGlubzsKKwlpbnQgZGlydHk7Cit9OworCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc194YXR0cnNfZXhwYW5kKHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaCwKKwkJCQkgICAgICB1bnNpZ25lZCBpbnQgZXhwYW5kYnkpCit7CisJc3RydWN0IGV4dDJfeGF0dHIgKm5ld19hdHRyczsKKwllcnJjb2RlX3QgZXJyOworCisJZXJyID0gZXh0MmZzX2dldF9hcnJheXplcm8oaC0+bGVuZ3RoICsgZXhwYW5kYnksCisJCQkJICAgc2l6ZW9mKHN0cnVjdCBleHQyX3hhdHRyKSwgJm5ld19hdHRycyk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCW1lbWNweShuZXdfYXR0cnMsIGgtPmF0dHJzLCBoLT5sZW5ndGggKiBzaXplb2Yoc3RydWN0IGV4dDJfeGF0dHIpKTsKKwlleHQyZnNfZnJlZV9tZW0oJmgtPmF0dHJzKTsKKwloLT5sZW5ndGggKz0gZXhwYW5kYnk7CisJaC0+YXR0cnMgPSBuZXdfYXR0cnM7CisKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IGVhX25hbWVfaW5kZXggeworCWludCBpbmRleDsKKwljb25zdCBjaGFyICpuYW1lOworfTsKKworLyogS2VlcCB0aGVzZSBuYW1lcyBzb3J0ZWQgaW4gb3JkZXIgb2YgZGVjcmVhc2luZyBzcGVjaWZpY2l0eS4gKi8KK3N0YXRpYyBzdHJ1Y3QgZWFfbmFtZV9pbmRleCBlYV9uYW1lc1tdID0geworCXszLCAic3lzdGVtLnBvc2l4X2FjbF9kZWZhdWx0In0sCisJezIsICJzeXN0ZW0ucG9zaXhfYWNsX2FjY2VzcyJ9LAorCXs4LCAic3lzdGVtLnJpY2hhY2wifSwKKwl7NiwgInNlY3VyaXR5LiJ9LAorCXs0LCAidHJ1c3RlZC4ifSwKKwl7NywgInN5c3RlbS4ifSwKKwl7MSwgInVzZXIuIn0sCisJezAsIE5VTEx9LAorfTsKKworc3RhdGljIGludCBmaW5kX2VhX2luZGV4KGNoYXIgKmZ1bGxuYW1lLCBjaGFyICoqbmFtZSwgaW50ICppbmRleCk7CisKKy8qIFB1c2ggZW1wdHkgYXR0cmlidXRlcyB0byB0aGUgZW5kIGFuZCBpbmxpbmVkYXRhIHRvIHRoZSBmcm9udC4gKi8KK3N0YXRpYyBpbnQgYXR0cl9jb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJY29uc3Qgc3RydWN0IGV4dDJfeGF0dHIgKnhhID0gYSwgKnhiID0gYjsKKwljaGFyICp4YV9zdWZmaXgsICp4Yl9zdWZmaXg7CisJaW50IHhhX2lkeCwgeGJfaWR4OworCWludCBjbXA7CisKKwlpZiAoeGEtPm5hbWUgPT0gTlVMTCkKKwkJcmV0dXJuICsxOworCWVsc2UgaWYgKHhiLT5uYW1lID09IE5VTEwpCisJCXJldHVybiAtMTsKKwllbHNlIGlmICghc3RyY21wKHhhLT5uYW1lLCAic3lzdGVtLmRhdGEiKSkKKwkJcmV0dXJuIC0xOworCWVsc2UgaWYgKCFzdHJjbXAoeGItPm5hbWUsICJzeXN0ZW0uZGF0YSIpKQorCQlyZXR1cm4gKzE7CisKKwkvKgorCSAqIER1cGxpY2F0ZSB0aGUga2VybmVsJ3Mgc29ydGluZyBhbGdvcml0aG0gYmVjYXVzZSB4YXR0ciBibG9ja3MKKwkgKiByZXF1aXJlIHNvcnRlZCBrZXlzLgorCSAqLworCXhhX3N1ZmZpeCA9IHhhLT5uYW1lOworCXhiX3N1ZmZpeCA9IHhiLT5uYW1lOworCXhhX2lkeCA9IHhiX2lkeCA9IDA7CisJZmluZF9lYV9pbmRleCh4YS0+bmFtZSwgJnhhX3N1ZmZpeCwgJnhhX2lkeCk7CisJZmluZF9lYV9pbmRleCh4Yi0+bmFtZSwgJnhiX3N1ZmZpeCwgJnhiX2lkeCk7CisJY21wID0geGFfaWR4IC0geGJfaWR4OworCWlmIChjbXApCisJCXJldHVybiBjbXA7CisJY21wID0gc3RybGVuKHhhX3N1ZmZpeCkgLSBzdHJsZW4oeGJfc3VmZml4KTsKKwlpZiAoY21wKQorCQlyZXR1cm4gY21wOworCWNtcCA9IHN0cmNtcCh4YV9zdWZmaXgsIHhiX3N1ZmZpeCk7CisJcmV0dXJuIGNtcDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmZpbmRfZWFfcHJlZml4KGludCBpbmRleCkKK3sKKwlzdHJ1Y3QgZWFfbmFtZV9pbmRleCAqZTsKKworCWZvciAoZSA9IGVhX25hbWVzOyBlLT5uYW1lOyBlKyspCisJCWlmIChlLT5pbmRleCA9PSBpbmRleCkKKwkJCXJldHVybiBlLT5uYW1lOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQgZmluZF9lYV9pbmRleChjaGFyICpmdWxsbmFtZSwgY2hhciAqKm5hbWUsIGludCAqaW5kZXgpCit7CisJc3RydWN0IGVhX25hbWVfaW5kZXggKmU7CisKKwlmb3IgKGUgPSBlYV9uYW1lczsgZS0+bmFtZTsgZSsrKSB7CisJCWlmIChtZW1jbXAoZnVsbG5hbWUsIGUtPm5hbWUsIHN0cmxlbihlLT5uYW1lKSkgPT0gMCkgeworCQkJKm5hbWUgPSAoY2hhciAqKWZ1bGxuYW1lICsgc3RybGVuKGUtPm5hbWUpOworCQkJKmluZGV4ID0gZS0+aW5kZXg7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19mcmVlX2V4dF9hdHRyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUpCit7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXI7CisJdm9pZCAqYmxvY2tfYnVmID0gTlVMTDsKKwlibGs2NF90IGJsazsKKwllcnJjb2RlX3QgZXJyOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGk7CisKKwkvKiBSZWFkIGlub2RlPyAqLworCWlmIChpbm9kZSA9PSBOVUxMKSB7CisJCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmksCisJCQkJCSAgICAgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlKSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQlpbm9kZSA9ICZpOworCX0KKworCS8qIERvIHdlIGFscmVhZHkgaGF2ZSBhbiBFQSBibG9jaz8gKi8KKwlibGsgPSBleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlKTsKKwlpZiAoYmxrID09IDApCisJCXJldHVybiAwOworCisJLyogRmluZCBibG9jaywgemVybyBpdCwgd3JpdGUgYmFjayAqLworCWlmICgoYmxrIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIHx8CisJICAgIChibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSkgeworCQllcnIgPSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU07CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZibG9ja19idWYpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJZXJyID0gZXh0MmZzX3JlYWRfZXh0X2F0dHIzKGZzLCBibGssIGJsb2NrX2J1ZiwgaW5vKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDI7CisKKwkvKiBXZSBvbmx5IGtub3cgaG93IHRvIGRlYWwgd2l0aCB2MiBFQSBibG9ja3MgKi8KKwloZWFkZXIgPSAoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICopIGJsb2NrX2J1ZjsKKwlpZiAoaGVhZGVyLT5oX21hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUMpIHsKKwkJZXJyID0gRVhUMl9FVF9CQURfRUFfSEVBREVSOworCQlnb3RvIG91dDI7CisJfQorCisJaGVhZGVyLT5oX3JlZmNvdW50LS07CisJZXJyID0gZXh0MmZzX3dyaXRlX2V4dF9hdHRyMyhmcywgYmxrLCBibG9ja19idWYsIGlubyk7CisJaWYgKGVycikKKwkJZ290byBvdXQyOworCisJLyogRXJhc2UgbGluayB0byBibG9jayAqLworCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQoZnMsIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlLCAwKTsKKwlpZiAoaGVhZGVyLT5oX3JlZmNvdW50ID09IDApCisJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgLTEpOworCWVyciA9IGV4dDJmc19pYmxrX3N1Yl9ibG9ja3MoZnMsIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlLCAxKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDI7CisKKwkvKiBXcml0ZSBpbm9kZT8gKi8KKwlpZiAoaW5vZGUgPT0gJmkpIHsKKwkJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmksCisJCQkJCSAgICAgIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSkpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQyOworCX0KKworb3V0MjoKKwlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2J1Zik7CitvdXQ6CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGVycmNvZGVfdCBwcmVwX2VhX2Jsb2NrX2Zvcl93cml0ZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUpCit7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXI7CisJdm9pZCAqYmxvY2tfYnVmID0gTlVMTDsKKwlibGs2NF90IGJsaywgZ29hbDsKKwllcnJjb2RlX3QgZXJyOworCisJLyogRG8gd2UgYWxyZWFkeSBoYXZlIGFuIEVBIGJsb2NrPyAqLworCWJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgKHN0cnVjdCBleHQyX2lub2RlICopaW5vZGUpOworCWlmIChibGsgIT0gMCkgeworCQlpZiAoKGJsayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCQkgICAgKGJsayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKSB7CisJCQllcnIgPSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU07CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWVyciA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZibG9ja19idWYpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJZXJyID0gZXh0MmZzX3JlYWRfZXh0X2F0dHIzKGZzLCBibGssIGJsb2NrX2J1ZiwgaW5vKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0MjsKKworCQkvKiBXZSBvbmx5IGtub3cgaG93IHRvIGRlYWwgd2l0aCB2MiBFQSBibG9ja3MgKi8KKwkJaGVhZGVyID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqKSBibG9ja19idWY7CisJCWlmIChoZWFkZXItPmhfbWFnaWMgIT0gRVhUMl9FWFRfQVRUUl9NQUdJQykgeworCQkJZXJyID0gRVhUMl9FVF9CQURfRUFfSEVBREVSOworCQkJZ290byBvdXQyOworCQl9CisKKwkJLyogU2luZ2xlLXVzZXIgYmxvY2suICBXZSdyZSBkb25lIGhlcmUuICovCisJCWlmIChoZWFkZXItPmhfcmVmY291bnQgPT0gMSkKKwkJCWdvdG8gb3V0MjsKKworCQkvKiBXZSBuZWVkIHRvIENvVyB0aGUgYmxvY2suICovCisJCWhlYWRlci0+aF9yZWZjb3VudC0tOworCQllcnIgPSBleHQyZnNfd3JpdGVfZXh0X2F0dHIzKGZzLCBibGssIGJsb2NrX2J1ZiwgaW5vKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0MjsKKwl9IGVsc2UgeworCQkvKiBObyBibG9jaywgd2UgbXVzdCBpbmNyZW1lbnQgaV9ibG9ja3MgKi8KKwkJZXJyID0gZXh0MmZzX2libGtfYWRkX2Jsb2NrcyhmcywgKHN0cnVjdCBleHQyX2lub2RlICopaW5vZGUsCisJCQkJCSAgICAgMSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwl9CisKKwkvKiBBbGxvY2F0ZSBhIGJsb2NrICovCisJZ29hbCA9IGV4dDJmc19maW5kX2lub2RlX2dvYWwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopaW5vZGUsIDApOworCWVyciA9IGV4dDJmc19hbGxvY19ibG9jazIoZnMsIGdvYWwsIE5VTEwsICZibGspOworCWlmIChlcnIpCisJCWdvdG8gb3V0MjsKKwlleHQyZnNfZmlsZV9hY2xfYmxvY2tfc2V0KGZzLCAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSwgYmxrKTsKK291dDI6CisJaWYgKGJsb2NrX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworb3V0OgorCXJldHVybiBlcnI7Cit9CisKKworc3RhdGljIGVycmNvZGVfdCB3cml0ZV94YXR0cnNfdG9fYnVmZmVyKHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaGFuZGxlLAorCQkJCQlzdHJ1Y3QgZXh0Ml94YXR0ciAqKnBvcywKKwkJCQkJdm9pZCAqZW50cmllc19zdGFydCwKKwkJCQkJdW5zaWduZWQgaW50IHN0b3JhZ2Vfc2l6ZSwKKwkJCQkJdW5zaWduZWQgaW50IHZhbHVlX29mZnNldF9jb3JyZWN0aW9uLAorCQkJCQlpbnQgd3JpdGVfaGFzaCkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0ciAqeCA9ICpwb3M7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKmUgPSBlbnRyaWVzX3N0YXJ0OworCWNoYXIgKmVuZCA9IChjaGFyICopIGVudHJpZXNfc3RhcnQgKyBzdG9yYWdlX3NpemU7CisJY2hhciAqc2hvcnRuYW1lOworCXVuc2lnbmVkIGludCBlbnRyeV9zaXplLCB2YWx1ZV9zaXplOworCWludCBpZHgsIHJldDsKKworCW1lbXNldChlbnRyaWVzX3N0YXJ0LCAwLCBzdG9yYWdlX3NpemUpOworCS8qIEZvciBhbGwgcmVtYWluaW5nIHguLi4gICovCisJZm9yICg7IHggPCBoYW5kbGUtPmF0dHJzICsgaGFuZGxlLT5sZW5ndGg7IHgrKykgeworCQlpZiAoIXgtPm5hbWUpCisJCQljb250aW51ZTsKKworCQkvKiBDYWxjdWxhdGUgaW5kZXggYW5kIHNob3J0bmFtZSBwb3NpdGlvbiAqLworCQlzaG9ydG5hbWUgPSB4LT5uYW1lOworCQlyZXQgPSBmaW5kX2VhX2luZGV4KHgtPm5hbWUsICZzaG9ydG5hbWUsICZpZHgpOworCisJCS8qIENhbGN1bGF0ZSBlbnRyeSBhbmQgdmFsdWUgc2l6ZSAqLworCQllbnRyeV9zaXplID0gKHNpemVvZigqZSkgKyBzdHJsZW4oc2hvcnRuYW1lKSArCisJCQkgICAgICBFWFQyX0VYVF9BVFRSX1BBRCAtIDEpICYKKwkJCSAgICAgfihFWFQyX0VYVF9BVFRSX1BBRCAtIDEpOworCQl2YWx1ZV9zaXplID0gKCh4LT52YWx1ZV9sZW4gKyBFWFQyX0VYVF9BVFRSX1BBRCAtIDEpIC8KKwkJCSAgICAgIEVYVDJfRVhUX0FUVFJfUEFEKSAqIEVYVDJfRVhUX0FUVFJfUEFEOworCisJCS8qCisJCSAqIFdvdWxkIGVudHJ5IGNvbGxpZGUgd2l0aCB2YWx1ZT8KKwkJICogTm90ZSB0aGF0IHdlIG11c3QgbGVhdmUgc3VmZmljaWVudCByb29tIGZvciBhICh1MzIpMCB0bworCQkgKiBtYXJrIHRoZSBlbmQgb2YgdGhlIGVudHJpZXMuCisJCSAqLworCQlpZiAoKGNoYXIgKillICsgZW50cnlfc2l6ZSArIHNpemVvZihfX3UzMikgPiBlbmQgLSB2YWx1ZV9zaXplKQorCQkJYnJlYWs7CisKKwkJLyogRmlsbCBvdXQgZSBhcHByb3ByaWF0ZWx5ICovCisJCWUtPmVfbmFtZV9sZW4gPSBzdHJsZW4oc2hvcnRuYW1lKTsKKwkJZS0+ZV9uYW1lX2luZGV4ID0gKHJldCA/IGlkeCA6IDApOworCQllLT5lX3ZhbHVlX29mZnMgPSBlbmQgLSB2YWx1ZV9zaXplIC0gKGNoYXIgKillbnRyaWVzX3N0YXJ0ICsKKwkJCQl2YWx1ZV9vZmZzZXRfY29ycmVjdGlvbjsKKwkJZS0+ZV92YWx1ZV9ibG9jayA9IDA7CisJCWUtPmVfdmFsdWVfc2l6ZSA9IHgtPnZhbHVlX2xlbjsKKworCQkvKiBTdG9yZSBuYW1lIGFuZCB2YWx1ZSAqLworCQllbmQgLT0gdmFsdWVfc2l6ZTsKKwkJbWVtY3B5KChjaGFyICopZSArIHNpemVvZigqZSksIHNob3J0bmFtZSwgZS0+ZV9uYW1lX2xlbik7CisJCW1lbWNweShlbmQsIHgtPnZhbHVlLCBlLT5lX3ZhbHVlX3NpemUpOworCisJCWlmICh3cml0ZV9oYXNoKQorCQkJZS0+ZV9oYXNoID0gZXh0MmZzX2V4dF9hdHRyX2hhc2hfZW50cnkoZSwgZW5kKTsKKwkJZWxzZQorCQkJZS0+ZV9oYXNoID0gMDsKKworCQllID0gRVhUMl9FWFRfQVRUUl9ORVhUKGUpOworCQkqKF9fdTMyICopZSA9IDA7CisJfQorCSpwb3MgPSB4OworCisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfeGF0dHJzX3dyaXRlKHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaGFuZGxlKQoreworCXN0cnVjdCBleHQyX3hhdHRyICp4OworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZTsKKwljaGFyICpzdGFydCwgKmJsb2NrX2J1ZiA9IE5VTEw7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpoZWFkZXI7CisJX191MzIgZWFfaW5vZGVfbWFnaWM7CisJYmxrNjRfdCBibGs7CisJdW5zaWduZWQgaW50IHN0b3JhZ2Vfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgaTsKKwllcnJjb2RlX3QgZXJyOworCisJRVhUMl9DSEVDS19NQUdJQyhoYW5kbGUsIEVYVDJfRVRfTUFHSUNfRUFfSEFORExFKTsKKwlpID0gRVhUMl9JTk9ERV9TSVpFKGhhbmRsZS0+ZnMtPnN1cGVyKTsKKwlpZiAoaSA8IHNpemVvZigqaW5vZGUpKQorCQlpID0gc2l6ZW9mKCppbm9kZSk7CisJZXJyID0gZXh0MmZzX2dldF9tZW16ZXJvKGksICZpbm9kZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoaGFuZGxlLT5mcywgaGFuZGxlLT5pbm8sCisJCQkJICAgICAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSwKKwkJCQkgICAgIEVYVDJfSU5PREVfU0laRShoYW5kbGUtPmZzLT5zdXBlcikpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJLyogSWYgZXh0cmFfaXNpemUgaXNuJ3Qgc2V0LCB3ZSBuZWVkIHRvIHNldCBpdCBub3cgKi8KKwlpZiAoaW5vZGUtPmlfZXh0cmFfaXNpemUgPT0gMCAmJgorCSAgICBFWFQyX0lOT0RFX1NJWkUoaGFuZGxlLT5mcy0+c3VwZXIpID4gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKSB7CisJCWNoYXIgKnAgPSAoY2hhciAqKWlub2RlOworCQlzaXplX3QgZXh0cmEgPSBoYW5kbGUtPmZzLT5zdXBlci0+c193YW50X2V4dHJhX2lzaXplOworCisJCWlmIChleHRyYSA9PSAwKQorCQkJZXh0cmEgPSBzaXplb2YoX191MzIpOworCQltZW1zZXQocCArIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSwgMCwgZXh0cmEpOworCQlpbm9kZS0+aV9leHRyYV9pc2l6ZSA9IGV4dHJhOworCX0KKwlpZiAoaW5vZGUtPmlfZXh0cmFfaXNpemUgJiAzKSB7CisJCWVyciA9IEVYVDJfRVRfSU5PREVfQ09SUlVQVEVEOworCQlnb3RvIG91dDsKKwl9CisKKwkvKgorCSAqIEZvcmNlIHRoZSBpbmxpbmVkYXRhIGF0dHIgdG8gdGhlIGZyb250IGFuZCB0aGUgZW1wdHkgZW50cmllcworCSAqIHRvIHRoZSBlbmQuCisJICovCisJeCA9IGhhbmRsZS0+YXR0cnM7CisJcXNvcnQoeCwgaGFuZGxlLT5sZW5ndGgsIHNpemVvZihzdHJ1Y3QgZXh0Ml94YXR0ciksIGF0dHJfY29tcGFyZSk7CisKKwkvKiBEb2VzIHRoZSBpbm9kZSBoYXZlIHNwYWNlIGZvciBFQT8gKi8KKwlpZiAoaW5vZGUtPmlfZXh0cmFfaXNpemUgPCBzaXplb2YoaW5vZGUtPmlfZXh0cmFfaXNpemUpIHx8CisJICAgIEVYVDJfSU5PREVfU0laRShoYW5kbGUtPmZzLT5zdXBlcikgPD0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsKKwkJCQkJCSAgaW5vZGUtPmlfZXh0cmFfaXNpemUgKworCQkJCQkJICBzaXplb2YoX191MzIpKQorCQlnb3RvIHdyaXRlX2VhX2Jsb2NrOworCisJLyogV3JpdGUgdGhlIGlub2RlIEVBICovCisJZWFfaW5vZGVfbWFnaWMgPSBFWFQyX0VYVF9BVFRSX01BR0lDOworCW1lbWNweSgoKGNoYXIgKikgaW5vZGUpICsgRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsKKwkgICAgICAgaW5vZGUtPmlfZXh0cmFfaXNpemUsICZlYV9pbm9kZV9tYWdpYywgc2l6ZW9mKF9fdTMyKSk7CisJc3RvcmFnZV9zaXplID0gRVhUMl9JTk9ERV9TSVpFKGhhbmRsZS0+ZnMtPnN1cGVyKSAtCisJCUVYVDJfR09PRF9PTERfSU5PREVfU0laRSAtIGlub2RlLT5pX2V4dHJhX2lzaXplIC0KKwkJc2l6ZW9mKF9fdTMyKTsKKwlzdGFydCA9ICgoY2hhciAqKSBpbm9kZSkgKyBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCQlpbm9kZS0+aV9leHRyYV9pc2l6ZSArIHNpemVvZihfX3UzMik7CisKKwllcnIgPSB3cml0ZV94YXR0cnNfdG9fYnVmZmVyKGhhbmRsZSwgJngsIHN0YXJ0LCBzdG9yYWdlX3NpemUsIDAsIDApOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCit3cml0ZV9lYV9ibG9jazoKKwkvKiBBcmUgd2UgZG9uZT8gKi8KKwlpZiAoeCA+PSBoYW5kbGUtPmF0dHJzICsgaGFuZGxlLT5jb3VudCkKKwkJZ290byBza2lwX2VhX2Jsb2NrOworCisJLyogV3JpdGUgdGhlIEVBIGJsb2NrICovCisJZXJyID0gZXh0MmZzX2dldF9tZW16ZXJvKGhhbmRsZS0+ZnMtPmJsb2Nrc2l6ZSwgJmJsb2NrX2J1Zik7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwlzdG9yYWdlX3NpemUgPSBoYW5kbGUtPmZzLT5ibG9ja3NpemUgLQorCQlzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyKTsKKwlzdGFydCA9IGJsb2NrX2J1ZiArIHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIpOworCisJZXJyID0gd3JpdGVfeGF0dHJzX3RvX2J1ZmZlcihoYW5kbGUsICZ4LCBzdGFydCwgc3RvcmFnZV9zaXplLAorCQkJCSAgICAgc3RhcnQgLSBibG9ja19idWYsIDEpOworCWlmIChlcnIpCisJCWdvdG8gb3V0MjsKKworCWlmICh4IDwgaGFuZGxlLT5hdHRycyArIGhhbmRsZS0+bGVuZ3RoKSB7CisJCWVyciA9IEVYVDJfRVRfRUFfTk9fU1BBQ0U7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBXcml0ZSBhIGhlYWRlciBvbiB0aGUgRUEgYmxvY2sgKi8KKwloZWFkZXIgPSAoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICopIGJsb2NrX2J1ZjsKKwloZWFkZXItPmhfbWFnaWMgPSBFWFQyX0VYVF9BVFRSX01BR0lDOworCWhlYWRlci0+aF9yZWZjb3VudCA9IDE7CisJaGVhZGVyLT5oX2Jsb2NrcyA9IDE7CisKKwkvKiBHZXQgYSBuZXcgYmxvY2sgZm9yIHdyaXRpbmcgKi8KKwllcnIgPSBwcmVwX2VhX2Jsb2NrX2Zvcl93cml0ZShoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywgaW5vZGUpOworCWlmIChlcnIpCisJCWdvdG8gb3V0MjsKKworCS8qIEZpbmFsbHksIHdyaXRlIHRoZSBuZXcgRUEgYmxvY2sgKi8KKwlibGsgPSBleHQyZnNfZmlsZV9hY2xfYmxvY2soaGFuZGxlLT5mcywKKwkJCQkgICAgKHN0cnVjdCBleHQyX2lub2RlICopaW5vZGUpOworCWVyciA9IGV4dDJmc193cml0ZV9leHRfYXR0cjMoaGFuZGxlLT5mcywgYmxrLCBibG9ja19idWYsCisJCQkJICAgICBoYW5kbGUtPmlubyk7CisJaWYgKGVycikKKwkJZ290byBvdXQyOworCitza2lwX2VhX2Jsb2NrOgorCWJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhoYW5kbGUtPmZzLCAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSk7CisJaWYgKCFibG9ja19idWYgJiYgYmxrKSB7CisJCS8qIHhhdHRycyBzaHJ1bmssIGZyZWUgdGhlIGJsb2NrICovCisJCWVyciA9IGV4dDJmc19mcmVlX2V4dF9hdHRyKGhhbmRsZS0+ZnMsIGhhbmRsZS0+aW5vLCBpbm9kZSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwl9CisKKwkvKiBXcml0ZSB0aGUgaW5vZGUgKi8KKwllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywKKwkJCQkgICAgICAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSwKKwkJCQkgICAgICBFWFQyX0lOT0RFX1NJWkUoaGFuZGxlLT5mcy0+c3VwZXIpKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDI7CisKK291dDI6CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworCWhhbmRsZS0+ZGlydHkgPSAwOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmVhZF94YXR0cnNfZnJvbV9idWZmZXIoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsCisJCQkJCSBzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSAqZW50cmllcywKKwkJCQkJIHVuc2lnbmVkIGludCBzdG9yYWdlX3NpemUsCisJCQkJCSBjaGFyICp2YWx1ZV9zdGFydCwKKwkJCQkJIHNpemVfdCAqbnJfcmVhZCkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0ciAqeDsKKwlzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSAqZW50cnksICplbmQ7CisJY29uc3QgY2hhciAqcHJlZml4OworCXVuc2lnbmVkIGludCByZW1haW4sIHByZWZpeF9sZW47CisJZXJyY29kZV90IGVycjsKKwl1bnNpZ25lZCBpbnQgdmFsdWVzX3NpemUgPSBzdG9yYWdlX3NpemUgKworCQkJKChjaGFyICopZW50cmllcyAtIHZhbHVlX3N0YXJ0KTsKKworCXggPSBoYW5kbGUtPmF0dHJzOworCXdoaWxlICh4LT5uYW1lKQorCQl4Kys7CisKKwkvKiBmaW5kIHRoZSBlbmQgKi8KKwllbmQgPSBlbnRyaWVzOworCXJlbWFpbiA9IHN0b3JhZ2Vfc2l6ZTsKKwl3aGlsZSAocmVtYWluID49IHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSkgJiYKKwkgICAgICAgIUVYVDJfRVhUX0lTX0xBU1RfRU5UUlkoZW5kKSkgeworCisJCS8qIGhlYWRlciBlYXRzIHRoaXMgc3BhY2UgKi8KKwkJcmVtYWluIC09IHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSk7CisKKwkJLyogaXMgYXR0cmlidXRlIG5hbWUgdmFsaWQ/ICovCisJCWlmIChFWFQyX0VYVF9BVFRSX1NJWkUoZW5kLT5lX25hbWVfbGVuKSA+IHJlbWFpbikKKwkJCXJldHVybiBFWFQyX0VUX0VBX0JBRF9OQU1FX0xFTjsKKworCQkvKiBhdHRyaWJ1dGUgbGVuIGVhdHMgdGhpcyBzcGFjZSAqLworCQlyZW1haW4gLT0gRVhUMl9FWFRfQVRUUl9TSVpFKGVuZC0+ZV9uYW1lX2xlbik7CisJCWVuZCA9IEVYVDJfRVhUX0FUVFJfTkVYVChlbmQpOworCX0KKworCWVudHJ5ID0gZW50cmllczsKKwlyZW1haW4gPSBzdG9yYWdlX3NpemU7CisJd2hpbGUgKHJlbWFpbiA+PSBzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkpICYmCisJICAgICAgICFFWFQyX0VYVF9JU19MQVNUX0VOVFJZKGVudHJ5KSkgeworCQlfX3UzMiBoYXNoOworCisJCS8qIGhlYWRlciBlYXRzIHRoaXMgc3BhY2UgKi8KKwkJcmVtYWluIC09IHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9lbnRyeSk7CisKKwkJLyogYXR0cmlidXRlIGxlbiBlYXRzIHRoaXMgc3BhY2UgKi8KKwkJcmVtYWluIC09IEVYVDJfRVhUX0FUVFJfU0laRShlbnRyeS0+ZV9uYW1lX2xlbik7CisKKwkJLyogY2hlY2sgdmFsdWUgc2l6ZSAqLworCQlpZiAoZW50cnktPmVfdmFsdWVfc2l6ZSA+IHJlbWFpbikKKwkJCXJldHVybiBFWFQyX0VUX0VBX0JBRF9WQUxVRV9TSVpFOworCisJCWlmIChlbnRyeS0+ZV92YWx1ZV9vZmZzICsgZW50cnktPmVfdmFsdWVfc2l6ZSA+IHZhbHVlc19zaXplKQorCQkJcmV0dXJuIEVYVDJfRVRfRUFfQkFEX1ZBTFVFX09GRlNFVDsKKworCQlpZiAoZW50cnktPmVfdmFsdWVfc2l6ZSA+IDAgJiYKKwkJICAgIHZhbHVlX3N0YXJ0ICsgZW50cnktPmVfdmFsdWVfb2ZmcyA8CisJCSAgICAoY2hhciAqKWVuZCArIHNpemVvZihfX3UzMikpCisJCQlyZXR1cm4gRVhUMl9FVF9FQV9CQURfVkFMVUVfT0ZGU0VUOworCisJCS8qIGVfdmFsdWVfYmxvY2sgbXVzdCBiZSAwIGluIGlub2RlJ3MgZWEgKi8KKwkJaWYgKGVudHJ5LT5lX3ZhbHVlX2Jsb2NrICE9IDApCisJCQlyZXR1cm4gRVhUMl9FVF9CQURfRUFfQkxPQ0tfTlVNOworCisJCWhhc2ggPSBleHQyZnNfZXh0X2F0dHJfaGFzaF9lbnRyeShlbnRyeSwgdmFsdWVfc3RhcnQgKworCQkJCQkJCSBlbnRyeS0+ZV92YWx1ZV9vZmZzKTsKKworCQkvKiBlX2hhc2ggbWF5IGJlIDAgaW4gb2xkZXIgaW5vZGUncyBlYSAqLworCQlpZiAoZW50cnktPmVfaGFzaCAhPSAwICYmIGVudHJ5LT5lX2hhc2ggIT0gaGFzaCkKKwkJCXJldHVybiBFWFQyX0VUX0JBRF9FQV9IQVNIOworCisJCXJlbWFpbiAtPSBlbnRyeS0+ZV92YWx1ZV9zaXplOworCisJCS8qIEFsbG9jYXRlIHNwYWNlIGZvciBtb3JlIGF0dHJzPyAqLworCQlpZiAoeCA9PSBoYW5kbGUtPmF0dHJzICsgaGFuZGxlLT5sZW5ndGgpIHsKKwkJCWVyciA9IGV4dDJmc194YXR0cnNfZXhwYW5kKGhhbmRsZSwgNCk7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybiBlcnI7CisJCQl4ID0gaGFuZGxlLT5hdHRycyArIGhhbmRsZS0+bGVuZ3RoIC0gNDsKKwkJfQorCisJCS8qIEV4dHJhY3QgbmFtZS92YWx1ZSAqLworCQlwcmVmaXggPSBmaW5kX2VhX3ByZWZpeChlbnRyeS0+ZV9uYW1lX2luZGV4KTsKKwkJcHJlZml4X2xlbiA9IChwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDApOworCQllcnIgPSBleHQyZnNfZ2V0X21lbXplcm8oZW50cnktPmVfbmFtZV9sZW4gKyBwcmVmaXhfbGVuICsgMSwKKwkJCQkJICZ4LT5uYW1lKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJCWlmIChwcmVmaXgpCisJCQltZW1jcHkoeC0+bmFtZSwgcHJlZml4LCBwcmVmaXhfbGVuKTsKKwkJaWYgKGVudHJ5LT5lX25hbWVfbGVuKQorCQkJbWVtY3B5KHgtPm5hbWUgKyBwcmVmaXhfbGVuLAorCQkJICAgICAgIChjaGFyICopZW50cnkgKyBzaXplb2YoKmVudHJ5KSwKKwkJCSAgICAgICBlbnRyeS0+ZV9uYW1lX2xlbik7CisKKwkJZXJyID0gZXh0MmZzX2dldF9tZW0oZW50cnktPmVfdmFsdWVfc2l6ZSwgJngtPnZhbHVlKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJCXgtPnZhbHVlX2xlbiA9IGVudHJ5LT5lX3ZhbHVlX3NpemU7CisJCW1lbWNweSh4LT52YWx1ZSwgdmFsdWVfc3RhcnQgKyBlbnRyeS0+ZV92YWx1ZV9vZmZzLAorCQkgICAgICAgZW50cnktPmVfdmFsdWVfc2l6ZSk7CisJCXgrKzsKKwkJKCpucl9yZWFkKSsrOworCQllbnRyeSA9IEVYVDJfRVhUX0FUVFJfTkVYVChlbnRyeSk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHhhdHRyc19mcmVlX2tleXMoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoKQoreworCXN0cnVjdCBleHQyX3hhdHRyICphID0gaC0+YXR0cnM7CisJc2l6ZV90IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaC0+bGVuZ3RoOyBpKyspIHsKKwkJaWYgKGFbaV0ubmFtZSkKKwkJCWV4dDJmc19mcmVlX21lbSgmYVtpXS5uYW1lKTsKKwkJaWYgKGFbaV0udmFsdWUpCisJCQlleHQyZnNfZnJlZV9tZW0oJmFbaV0udmFsdWUpOworCX0KKwloLT5jb3VudCA9IDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfeGF0dHJzX3JlYWQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUpCit7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlOworCXN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqaGVhZGVyOworCV9fdTMyIGVhX2lub2RlX21hZ2ljOworCXVuc2lnbmVkIGludCBzdG9yYWdlX3NpemU7CisJY2hhciAqc3RhcnQsICpibG9ja19idWYgPSBOVUxMOworCWJsazY0X3QgYmxrOworCXNpemVfdCBpOworCWVycmNvZGVfdCBlcnI7CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FQV9IQU5ETEUpOworCWkgPSBFWFQyX0lOT0RFX1NJWkUoaGFuZGxlLT5mcy0+c3VwZXIpOworCWlmIChpIDwgc2l6ZW9mKCppbm9kZSkpCisJCWkgPSBzaXplb2YoKmlub2RlKTsKKwllcnIgPSBleHQyZnNfZ2V0X21lbXplcm8oaSwgJmlub2RlKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywKKwkJCQkgICAgIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlLAorCQkJCSAgICAgRVhUMl9JTk9ERV9TSVpFKGhhbmRsZS0+ZnMtPnN1cGVyKSk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwl4YXR0cnNfZnJlZV9rZXlzKGhhbmRsZSk7CisKKwkvKiBEb2VzIHRoZSBpbm9kZSBoYXZlIHNwYWNlIGZvciBFQT8gKi8KKwlpZiAoaW5vZGUtPmlfZXh0cmFfaXNpemUgPCBzaXplb2YoaW5vZGUtPmlfZXh0cmFfaXNpemUpIHx8CisJICAgIEVYVDJfSU5PREVfU0laRShoYW5kbGUtPmZzLT5zdXBlcikgPD0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsKKwkJCQkJCSAgaW5vZGUtPmlfZXh0cmFfaXNpemUgKworCQkJCQkJICBzaXplb2YoX191MzIpKQorCQlnb3RvIHJlYWRfZWFfYmxvY2s7CisJaWYgKGlub2RlLT5pX2V4dHJhX2lzaXplICYgMykgeworCQllcnIgPSBFWFQyX0VUX0lOT0RFX0NPUlJVUFRFRDsKKwkJZ290byBvdXQ7CisJfQorCisJLyogTG9vayBmb3IgRUEgaW4gdGhlIGlub2RlICovCisJbWVtY3B5KCZlYV9pbm9kZV9tYWdpYywgKChjaGFyICopIGlub2RlKSArIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSArCisJICAgICAgIGlub2RlLT5pX2V4dHJhX2lzaXplLCBzaXplb2YoX191MzIpKTsKKwlpZiAoZWFfaW5vZGVfbWFnaWMgPT0gRVhUMl9FWFRfQVRUUl9NQUdJQykgeworCQlzdG9yYWdlX3NpemUgPSBFWFQyX0lOT0RFX1NJWkUoaGFuZGxlLT5mcy0+c3VwZXIpIC0KKwkJCUVYVDJfR09PRF9PTERfSU5PREVfU0laRSAtIGlub2RlLT5pX2V4dHJhX2lzaXplIC0KKwkJCXNpemVvZihfX3UzMik7CisJCXN0YXJ0ID0gKChjaGFyICopIGlub2RlKSArIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSArCisJCQlpbm9kZS0+aV9leHRyYV9pc2l6ZSArIHNpemVvZihfX3UzMik7CisKKwkJZXJyID0gcmVhZF94YXR0cnNfZnJvbV9idWZmZXIoaGFuZGxlLAorCQkJKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopIHN0YXJ0LCBzdG9yYWdlX3NpemUsCisJCQkJCSAgICAgIHN0YXJ0LCAmaGFuZGxlLT5jb3VudCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwl9CisKK3JlYWRfZWFfYmxvY2s6CisJLyogTG9vayBmb3IgRUEgaW4gYSBzZXBhcmF0ZSBFQSBibG9jayAqLworCWJsayA9IGV4dDJmc19maWxlX2FjbF9ibG9jayhoYW5kbGUtPmZzLCAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSk7CisJaWYgKGJsayAhPSAwKSB7CisJCWlmICgoYmxrIDwgaGFuZGxlLT5mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgfHwKKwkJICAgIChibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChoYW5kbGUtPmZzLT5zdXBlcikpKSB7CisJCQllcnIgPSBFWFQyX0VUX0JBRF9FQV9CTE9DS19OVU07CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWVyciA9IGV4dDJmc19nZXRfbWVtKGhhbmRsZS0+ZnMtPmJsb2Nrc2l6ZSwgJmJsb2NrX2J1Zik7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKworCQllcnIgPSBleHQyZnNfcmVhZF9leHRfYXR0cjMoaGFuZGxlLT5mcywgYmxrLCBibG9ja19idWYsCisJCQkJCSAgICBoYW5kbGUtPmlubyk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDM7CisKKwkJLyogV2Ugb25seSBrbm93IGhvdyB0byBkZWFsIHdpdGggdjIgRUEgYmxvY2tzICovCisJCWhlYWRlciA9IChzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKikgYmxvY2tfYnVmOworCQlpZiAoaGVhZGVyLT5oX21hZ2ljICE9IEVYVDJfRVhUX0FUVFJfTUFHSUMpIHsKKwkJCWVyciA9IEVYVDJfRVRfQkFEX0VBX0hFQURFUjsKKwkJCWdvdG8gb3V0MzsKKwkJfQorCisJCS8qIFJlYWQgRUFzICovCisJCXN0b3JhZ2Vfc2l6ZSA9IGhhbmRsZS0+ZnMtPmJsb2Nrc2l6ZSAtCisJCQlzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyKTsKKwkJc3RhcnQgPSBibG9ja19idWYgKyBzaXplb2Yoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyKTsKKwkJZXJyID0gcmVhZF94YXR0cnNfZnJvbV9idWZmZXIoaGFuZGxlLAorCQkJKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopIHN0YXJ0LCBzdG9yYWdlX3NpemUsCisJCQkJCSAgICAgIGJsb2NrX2J1ZiwgJmhhbmRsZS0+Y291bnQpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQzOworCisJCWV4dDJmc19mcmVlX21lbSgmYmxvY2tfYnVmKTsKKwl9CisKKwlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2J1Zik7CisJZXh0MmZzX2ZyZWVfbWVtKCZpbm9kZSk7CisJcmV0dXJuIDA7CisKK291dDM6CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworCXJldHVybiBlcnI7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfeGF0dHJzX2l0ZXJhdGUoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoLAorCQkJCWludCAoKmZ1bmMpKGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlLAorCQkJCQkgICAgc2l6ZV90IHZhbHVlX2xlbiwgdm9pZCAqZGF0YSksCisJCQkJdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0ciAqeDsKKwlpbnQgcmV0OworCisJRVhUMl9DSEVDS19NQUdJQyhoLCBFWFQyX0VUX01BR0lDX0VBX0hBTkRMRSk7CisJZm9yICh4ID0gaC0+YXR0cnM7IHggPCBoLT5hdHRycyArIGgtPmxlbmd0aDsgeCsrKSB7CisJCWlmICgheC0+bmFtZSkKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IGZ1bmMoeC0+bmFtZSwgeC0+dmFsdWUsIHgtPnZhbHVlX2xlbiwgZGF0YSk7CisJCWlmIChyZXQgJiBYQVRUUl9DSEFOR0VEKQorCQkJaC0+ZGlydHkgPSAxOworCQlpZiAocmV0ICYgWEFUVFJfQUJPUlQpCisJCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc194YXR0cl9nZXQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoLCBjb25zdCBjaGFyICprZXksCisJCQkgICB2b2lkICoqdmFsdWUsIHNpemVfdCAqdmFsdWVfbGVuKQoreworCXN0cnVjdCBleHQyX3hhdHRyICp4OworCWNoYXIgKnZhbDsKKwllcnJjb2RlX3QgZXJyOworCisJRVhUMl9DSEVDS19NQUdJQyhoLCBFWFQyX0VUX01BR0lDX0VBX0hBTkRMRSk7CisJZm9yICh4ID0gaC0+YXR0cnM7IHggPCBoLT5hdHRycyArIGgtPmxlbmd0aDsgeCsrKSB7CisJCWlmICgheC0+bmFtZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChzdHJjbXAoeC0+bmFtZSwga2V5KSA9PSAwKSB7CisJCQllcnIgPSBleHQyZnNfZ2V0X21lbSh4LT52YWx1ZV9sZW4sICZ2YWwpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm4gZXJyOworCQkJbWVtY3B5KHZhbCwgeC0+dmFsdWUsIHgtPnZhbHVlX2xlbik7CisJCQkqdmFsdWUgPSB2YWw7CisJCQkqdmFsdWVfbGVuID0geC0+dmFsdWVfbGVuOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwlyZXR1cm4gRVhUMl9FVF9FQV9LRVlfTk9UX0ZPVU5EOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyX2lub2RlX21heF9zaXplKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgICAgICBzaXplX3QgKnNpemUpCit7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKmVudHJ5OworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZTsKKwlfX3UzMiBlYV9pbm9kZV9tYWdpYzsKKwl1bnNpZ25lZCBpbnQgbWlub2ZmOworCWNoYXIgKnN0YXJ0OworCXNpemVfdCBpOworCWVycmNvZGVfdCBlcnI7CisKKwlpID0gRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisJaWYgKGkgPCBzaXplb2YoKmlub2RlKSkKKwkJaSA9IHNpemVvZigqaW5vZGUpOworCWVyciA9IGV4dDJmc19nZXRfbWVtemVybyhpLCAmaW5vZGUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlLAorCQkJCSAgICAgRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcikpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJLyogRG9lcyB0aGUgaW5vZGUgaGF2ZSBzaXplIGZvciBFQT8gKi8KKwlpZiAoRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcikgPD0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsKKwkJCQkJCSAgaW5vZGUtPmlfZXh0cmFfaXNpemUgKworCQkJCQkJICBzaXplb2YoX191MzIpKSB7CisJCWVyciA9IEVYVDJfRVRfSU5MSU5FX0RBVEFfTk9fU1BBQ0U7CisJCWdvdG8gb3V0OworCX0KKworCW1pbm9mZiA9IEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpIC0gc2l6ZW9mKCppbm9kZSkgLSBzaXplb2YoX191MzIpOworCW1lbWNweSgmZWFfaW5vZGVfbWFnaWMsICgoY2hhciAqKSBpbm9kZSkgKyBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCSAgICAgICBpbm9kZS0+aV9leHRyYV9pc2l6ZSwgc2l6ZW9mKF9fdTMyKSk7CisJaWYgKGVhX2lub2RlX21hZ2ljID09IEVYVDJfRVhUX0FUVFJfTUFHSUMpIHsKKwkJLyogaGFzIHhhdHRycy4gIGNhbGN1bGF0ZSB0aGUgc2l6ZSAqLworCQlzdGFydD0gKChjaGFyICopIGlub2RlKSArIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSArCisJCQlpbm9kZS0+aV9leHRyYV9pc2l6ZSArIHNpemVvZihfX3UzMik7CisJCWVudHJ5ID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopIHN0YXJ0OworCQl3aGlsZSAoIUVYVDJfRVhUX0lTX0xBU1RfRU5UUlkoZW50cnkpKSB7CisJCQlpZiAoIWVudHJ5LT5lX3ZhbHVlX2Jsb2NrICYmIGVudHJ5LT5lX3ZhbHVlX3NpemUpIHsKKwkJCQl1bnNpZ25lZCBpbnQgb2ZmcyA9IGVudHJ5LT5lX3ZhbHVlX29mZnM7CisJCQkJaWYgKG9mZnMgPCBtaW5vZmYpCisJCQkJCW1pbm9mZiA9IG9mZnM7CisJCQl9CisJCQllbnRyeSA9IEVYVDJfRVhUX0FUVFJfTkVYVChlbnRyeSk7CisJCX0KKwkJKnNpemUgPSBtaW5vZmYgLSAoKGNoYXIgKillbnRyeSAtIChjaGFyICopc3RhcnQpIC0gc2l6ZW9mKF9fdTMyKTsKKwl9IGVsc2UgeworCQkvKiBubyB4YXR0ci4gIHJldHVybiBhIG1heGltdW0gc2l6ZSAqLworCQkqc2l6ZSA9IEVYVDJfRVhUX0FUVFJfU0laRShtaW5vZmYgLQorCQkJCQkgICBFWFQyX0VYVF9BVFRSX0xFTihzdHJsZW4oImRhdGEiKSkgLQorCQkJCQkgICBFWFQyX0VYVF9BVFRSX1JPVU5EIC0gc2l6ZW9mKF9fdTMyKSk7CisJfQorCitvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZpbm9kZSk7CisJcmV0dXJuIGVycjsKK30KKworZXJyY29kZV90IGV4dDJmc194YXR0cl9zZXQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsCisJCQkgICBjb25zdCBjaGFyICprZXksCisJCQkgICBjb25zdCB2b2lkICp2YWx1ZSwKKwkJCSAgIHNpemVfdCB2YWx1ZV9sZW4pCit7CisJc3RydWN0IGV4dDJfeGF0dHIgKngsICpsYXN0X2VtcHR5OworCWNoYXIgKm5ld192YWx1ZTsKKwllcnJjb2RlX3QgZXJyOworCisJRVhUMl9DSEVDS19NQUdJQyhoYW5kbGUsIEVYVDJfRVRfTUFHSUNfRUFfSEFORExFKTsKKwlsYXN0X2VtcHR5ID0gTlVMTDsKKwlmb3IgKHggPSBoYW5kbGUtPmF0dHJzOyB4IDwgaGFuZGxlLT5hdHRycyArIGhhbmRsZS0+bGVuZ3RoOyB4KyspIHsKKwkJaWYgKCF4LT5uYW1lKSB7CisJCQlsYXN0X2VtcHR5ID0geDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogUmVwbGFjZSB4YXR0ciAqLworCQlpZiAoc3RyY21wKHgtPm5hbWUsIGtleSkgPT0gMCkgeworCQkJZXJyID0gZXh0MmZzX2dldF9tZW0odmFsdWVfbGVuLCAmbmV3X3ZhbHVlKTsKKwkJCWlmIChlcnIpCisJCQkJcmV0dXJuIGVycjsKKwkJCW1lbWNweShuZXdfdmFsdWUsIHZhbHVlLCB2YWx1ZV9sZW4pOworCQkJZXh0MmZzX2ZyZWVfbWVtKCZ4LT52YWx1ZSk7CisJCQl4LT52YWx1ZSA9IG5ld192YWx1ZTsKKwkJCXgtPnZhbHVlX2xlbiA9IHZhbHVlX2xlbjsKKwkJCWhhbmRsZS0+ZGlydHkgPSAxOworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKiBBZGQgYXR0ciB0byBlbXB0eSBzbG90ICovCisJaWYgKGxhc3RfZW1wdHkpIHsKKwkJZXJyID0gZXh0MmZzX2dldF9tZW0oc3RybGVuKGtleSkgKyAxLCAmbGFzdF9lbXB0eS0+bmFtZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQlzdHJjcHkobGFzdF9lbXB0eS0+bmFtZSwga2V5KTsKKworCQllcnIgPSBleHQyZnNfZ2V0X21lbSh2YWx1ZV9sZW4sICZsYXN0X2VtcHR5LT52YWx1ZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQltZW1jcHkobGFzdF9lbXB0eS0+dmFsdWUsIHZhbHVlLCB2YWx1ZV9sZW4pOworCQlsYXN0X2VtcHR5LT52YWx1ZV9sZW4gPSB2YWx1ZV9sZW47CisJCWhhbmRsZS0+ZGlydHkgPSAxOworCQloYW5kbGUtPmNvdW50Kys7CisJCXJldHVybiAwOworCX0KKworCS8qIEV4cGFuZCBhcnJheSwgYXBwZW5kIHNsb3QgKi8KKwllcnIgPSBleHQyZnNfeGF0dHJzX2V4cGFuZChoYW5kbGUsIDQpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwl4ID0gaGFuZGxlLT5hdHRycyArIGhhbmRsZS0+bGVuZ3RoIC0gNDsKKwllcnIgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oa2V5KSArIDEsICZ4LT5uYW1lKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCXN0cmNweSh4LT5uYW1lLCBrZXkpOworCisJZXJyID0gZXh0MmZzX2dldF9tZW0odmFsdWVfbGVuLCAmeC0+dmFsdWUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJbWVtY3B5KHgtPnZhbHVlLCB2YWx1ZSwgdmFsdWVfbGVuKTsKKwl4LT52YWx1ZV9sZW4gPSB2YWx1ZV9sZW47CisJaGFuZGxlLT5kaXJ0eSA9IDE7CisJaGFuZGxlLT5jb3VudCsrOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3hhdHRyX3JlbW92ZShzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmhhbmRsZSwKKwkJCSAgICAgIGNvbnN0IGNoYXIgKmtleSkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0ciAqeDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoaGFuZGxlLCBFWFQyX0VUX01BR0lDX0VBX0hBTkRMRSk7CisJZm9yICh4ID0gaGFuZGxlLT5hdHRyczsgeCA8IGhhbmRsZS0+YXR0cnMgKyBoYW5kbGUtPmxlbmd0aDsgeCsrKSB7CisJCWlmICgheC0+bmFtZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChzdHJjbXAoeC0+bmFtZSwga2V5KSA9PSAwKSB7CisJCQlleHQyZnNfZnJlZV9tZW0oJngtPm5hbWUpOworCQkJZXh0MmZzX2ZyZWVfbWVtKCZ4LT52YWx1ZSk7CisJCQl4LT52YWx1ZV9sZW4gPSAwOworCQkJaGFuZGxlLT5kaXJ0eSA9IDE7CisJCQloYW5kbGUtPmNvdW50LS07CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCS8qIG5vIGtleSBmb3VuZCwgc3VjY2VzcyEgKi8KKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc194YXR0cnNfb3BlbihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqKmhhbmRsZSkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmg7CisJZXJyY29kZV90IGVycjsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3hhdHRyKGZzLT5zdXBlcikgJiYKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9pbmxpbmVfZGF0YShmcy0+c3VwZXIpKQorCQlyZXR1cm4gRVhUMl9FVF9NSVNTSU5HX0VBX0ZFQVRVUkU7CisKKwllcnIgPSBleHQyZnNfZ2V0X21lbXplcm8oc2l6ZW9mKCpoKSwgJmgpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwloLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfRUFfSEFORExFOworCWgtPmxlbmd0aCA9IDQ7CisJZXJyID0gZXh0MmZzX2dldF9hcnJheXplcm8oaC0+bGVuZ3RoLCBzaXplb2Yoc3RydWN0IGV4dDJfeGF0dHIpLAorCQkJCSAgICZoLT5hdHRycyk7CisJaWYgKGVycikgeworCQlleHQyZnNfZnJlZV9tZW0oJmgpOworCQlyZXR1cm4gZXJyOworCX0KKwloLT5jb3VudCA9IDA7CisJaC0+aW5vID0gaW5vOworCWgtPmZzID0gZnM7CisJKmhhbmRsZSA9IGg7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfeGF0dHJzX2Nsb3NlKHN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqKmhhbmRsZSkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmggPSAqaGFuZGxlOworCWVycmNvZGVfdCBlcnI7CisKKwlFWFQyX0NIRUNLX01BR0lDKGgsIEVYVDJfRVRfTUFHSUNfRUFfSEFORExFKTsKKwlpZiAoaC0+ZGlydHkpIHsKKwkJZXJyID0gZXh0MmZzX3hhdHRyc193cml0ZShoKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCisJeGF0dHJzX2ZyZWVfa2V5cyhoKTsKKwlleHQyZnNfZnJlZV9tZW0oJmgtPmF0dHJzKTsKKwlleHQyZnNfZnJlZV9tZW0oaGFuZGxlKTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc194YXR0cnNfY291bnQoc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGUsIHNpemVfdCAqY291bnQpCit7CisJRVhUMl9DSEVDS19NQUdJQyhoYW5kbGUsIEVYVDJfRVRfTUFHSUNfRUFfSEFORExFKTsKKwkqY291bnQgPSBoYW5kbGUtPmNvdW50OworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0ZW50LmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9leHRlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWNkYWU3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZXh0ZW50LmMKQEAgLTAsMCArMSwxNzQ3IEBACisvKgorICogZXh0ZW50LmMgLS0tIHJvdXRpbmVzIHRvIGltcGxlbWVudCBleHRlbnRzIHN1cHBvcnQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorI2luY2x1ZGUgImUyaW1hZ2UuaCIKKworI3VuZGVmIERFQlVHCisKKy8qCisgKiBEZWZpbml0aW9ucyB0byBiZSBkcm9wcGVkIGluIGxpYi9leHQyZnMvZXh0MmZzLmgKKyAqLworCisvKgorICogUHJpdmF0ZSBkZWZpbml0aW9ucworICovCisKK3N0cnVjdCBleHRlbnRfcGF0aCB7CisJY2hhcgkJKmJ1ZjsKKwlpbnQJCWVudHJpZXM7CisJaW50CQltYXhfZW50cmllczsKKwlpbnQJCWxlZnQ7CisJaW50CQl2aXNpdF9udW07CisJaW50CQlmbGFnczsKKwlibGs2NF90CQllbmRfYmxrOworCXZvaWQJCSpjdXJyOworfTsKKworCitzdHJ1Y3QgZXh0Ml9leHRlbnRfaGFuZGxlIHsKKwllcnJjb2RlX3QJCW1hZ2ljOworCWV4dDJfZmlsc3lzCQlmczsKKwlleHQyX2lub190IAkJaW5vOworCXN0cnVjdCBleHQyX2lub2RlCSppbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZWJ1ZjsKKwlpbnQJCQl0eXBlOworCWludAkJCWxldmVsOworCWludAkJCW1heF9kZXB0aDsKKwlpbnQJCQltYXhfcGF0aHM7CisJc3RydWN0IGV4dGVudF9wYXRoCSpwYXRoOworfTsKKworc3RydWN0IGV4dDJfZXh0ZW50X3BhdGggeworCWVycmNvZGVfdAkJbWFnaWM7CisJaW50CQkJbGVhZl9oZWlnaHQ7CisJYmxrNjRfdAkJCWxibGs7Cit9OworCisvKgorICogIFVzZWZ1bCBEZWJ1Z2dpbmcgc3R1ZmYKKyAqLworCisjaWZkZWYgREVCVUcKK3N0YXRpYyB2b2lkIGRiZ19zaG93X2hlYWRlcihzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICplaCkKK3sKKwlwcmludGYoImhlYWRlcjogbWFnaWM9JXggZW50cmllcz0ldSBtYXg9JXUgZGVwdGg9JXUgZ2VuZXJhdGlvbj0ldVxuIiwKKwkJCWV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfbWFnaWMpLAorCQkJZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9lbnRyaWVzKSwKKwkJCWV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfbWF4KSwKKwkJCWV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZGVwdGgpLAorCQkJZXh0MmZzX2xlMzJfdG9fY3B1KGVoLT5laF9nZW5lcmF0aW9uKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRiZ19zaG93X2luZGV4KHN0cnVjdCBleHQzX2V4dGVudF9pZHggKml4KQoreworCXByaW50ZigiaW5kZXg6IGJsb2NrPSV1IGxlYWY9JXUgbGVhZl9oaT0ldSB1bnVzZWQ9JXVcbiIsCisJCQlleHQyZnNfbGUzMl90b19jcHUoaXgtPmVpX2Jsb2NrKSwKKwkJCWV4dDJmc19sZTMyX3RvX2NwdShpeC0+ZWlfbGVhZiksCisJCQlleHQyZnNfbGUxNl90b19jcHUoaXgtPmVpX2xlYWZfaGkpLAorCQkJZXh0MmZzX2xlMTZfdG9fY3B1KGl4LT5laV91bnVzZWQpKTsKK30KKworc3RhdGljIHZvaWQgZGJnX3Nob3dfZXh0ZW50KHN0cnVjdCBleHQzX2V4dGVudCAqZXgpCit7CisJcHJpbnRmKCJleHRlbnQ6IGJsb2NrPSV1LSV1IGxlbj0ldSBzdGFydD0ldSBzdGFydF9oaT0ldVxuIiwKKwkJCWV4dDJmc19sZTMyX3RvX2NwdShleC0+ZWVfYmxvY2spLAorCQkJZXh0MmZzX2xlMzJfdG9fY3B1KGV4LT5lZV9ibG9jaykgKworCQkJZXh0MmZzX2xlMTZfdG9fY3B1KGV4LT5lZV9sZW4pIC0gMSwKKwkJCWV4dDJmc19sZTE2X3RvX2NwdShleC0+ZWVfbGVuKSwKKwkJCWV4dDJmc19sZTMyX3RvX2NwdShleC0+ZWVfc3RhcnQpLAorCQkJZXh0MmZzX2xlMTZfdG9fY3B1KGV4LT5lZV9zdGFydF9oaSkpOworfQorCitzdGF0aWMgdm9pZCBkYmdfcHJpbnRfZXh0ZW50KGNoYXIgKmRlc2MsIHN0cnVjdCBleHQyZnNfZXh0ZW50ICpleHRlbnQpCit7CisJaWYgKGRlc2MpCisJCXByaW50ZigiJXM6ICIsIGRlc2MpOworCXByaW50ZigiZXh0ZW50OiBsYmxrICVsbHUtLSVsbHUsIGxlbiAldSwgcGJsayAlbGx1LCBmbGFnczogIiwKKwkgICAgICAgZXh0ZW50LT5lX2xibGssIGV4dGVudC0+ZV9sYmxrICsgZXh0ZW50LT5lX2xlbiAtIDEsCisJICAgICAgIGV4dGVudC0+ZV9sZW4sIGV4dGVudC0+ZV9wYmxrKTsKKwlpZiAoZXh0ZW50LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfTEVBRikKKwkJZnB1dHMoIkxFQUYgIiwgc3Rkb3V0KTsKKwlpZiAoZXh0ZW50LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQlmcHV0cygiVU5JTklUICIsIHN0ZG91dCk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1NFQ09ORF9WSVNJVCkKKwkJZnB1dHMoIjJORF9WSVNJVCAiLCBzdGRvdXQpOworCWlmICghZXh0ZW50LT5lX2ZsYWdzKQorCQlmcHV0cygiKG5vbmUpIiwgc3Rkb3V0KTsKKwlmcHV0YygnXG4nLCBzdGRvdXQpOworCit9CisKK3N0YXRpYyB2b2lkIGR1bXBfcGF0aChjb25zdCBjaGFyICp0YWcsIHN0cnVjdCBleHQyX2V4dGVudF9oYW5kbGUgKmhhbmRsZSwKKwkJICAgICAgc3RydWN0IGV4dGVudF9wYXRoICpwYXRoKQoreworCXN0cnVjdCBleHRlbnRfcGF0aCAqcHBwID0gcGF0aDsKKwlwcmludGYoIiVzOiBsZXZlbD0lZFxuIiwgdGFnLCBoYW5kbGUtPmxldmVsKTsKKworCWRvIHsKKwkJcHJpbnRmKCIlczogcGF0aD0lbGQgYnVmPSVwIGVudHJpZXM9JWQgbWF4X2VudHJpZXM9JWQgbGVmdD0lZCAiCisJCSAgICAgICAidmlzaXRfbnVtPSVkIGZsYWdzPTB4JXggZW5kX2Jsaz0lbGx1IGN1cnI9JXAoJWxkKVxuIiwKKwkJICAgICAgIHRhZywgKHBwcCAtIGhhbmRsZS0+cGF0aCksIHBwcC0+YnVmLCBwcHAtPmVudHJpZXMsCisJCSAgICAgICBwcHAtPm1heF9lbnRyaWVzLCBwcHAtPmxlZnQsIHBwcC0+dmlzaXRfbnVtLCBwcHAtPmZsYWdzLAorCQkgICAgICAgcHBwLT5lbmRfYmxrLCBwcHAtPmN1cnIsIHBwcC0+Y3VyciAtICh2b2lkICopcHBwLT5idWYpOworCQlwcmludGYoIiAgIik7CisJCWRiZ19zaG93X2hlYWRlcigoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKXBwcC0+YnVmKTsKKwkJaWYgKHBwcC0+Y3VycikgeworCQkJcHJpbnRmKCIgICIpOworCQkJZGJnX3Nob3dfaW5kZXgocHBwLT5jdXJyKTsKKwkJCXByaW50ZigiICAiKTsKKwkJCWRiZ19zaG93X2V4dGVudChwcHAtPmN1cnIpOworCQl9CisJCXBwcC0tOworCX0gd2hpbGUgKHBwcCA+PSBoYW5kbGUtPnBhdGgpOworCWZmbHVzaChzdGRvdXQpOworCisJcmV0dXJuOworfQorCisjZWxzZQorI2RlZmluZSBkYmdfc2hvd19oZWFkZXIoZWgpIGRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZGJnX3Nob3dfaW5kZXgoaXgpIGRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZGJnX3Nob3dfZXh0ZW50KGV4KSBkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIGRiZ19wcmludF9leHRlbnQoZGVzYywgZXgpIGRvIHsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgZHVtcF9wYXRoKHRhZywgaGFuZGxlLCBwYXRoKSBkbyB7IH0gd2hpbGUgKDApCisjZW5kaWYKKworLyoKKyAqIFZlcmlmeSB0aGUgZXh0ZW50IGhlYWRlciBhcyBiZWluZyBzYW5lCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkodm9pZCAqcHRyLCBpbnQgc2l6ZSkKK3sKKwlpbnQgZWhfbWF4LCBlbnRyeV9zaXplOworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKmVoID0gcHRyOworCisJZGJnX3Nob3dfaGVhZGVyKGVoKTsKKwlpZiAoZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9tYWdpYykgIT0gRVhUM19FWFRfTUFHSUMpCisJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9IRUFERVJfQkFEOworCWlmIChleHQyZnNfbGUxNl90b19jcHUoZWgtPmVoX2VudHJpZXMpID4gZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9tYXgpKQorCQlyZXR1cm4gRVhUMl9FVF9FWFRFTlRfSEVBREVSX0JBRDsKKwlpZiAoZWgtPmVoX2RlcHRoID09IDApCisJCWVudHJ5X3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KTsKKwllbHNlCisJCWVudHJ5X3NpemUgPSBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2lkeCk7CisKKwllaF9tYXggPSAoc2l6ZSAtIHNpemVvZigqZWgpKSAvIGVudHJ5X3NpemU7CisJLyogQWxsb3cgdHdvIGV4dGVudC1zaXplZCBpdGVtcyBhdCB0aGUgZW5kIG9mIHRoZSBibG9jaywgZm9yCisJICogZXh0NF9leHRlbnRfdGFpbCB3aXRoIGNoZWNrc3VtIGluIHRoZSBmdXR1cmUuICovCisJaWYgKChleHQyZnNfbGUxNl90b19jcHUoZWgtPmVoX21heCkgPiBlaF9tYXgpIHx8CisJICAgIChleHQyZnNfbGUxNl90b19jcHUoZWgtPmVoX21heCkgPCAoZWhfbWF4IC0gMikpKQorCQlyZXR1cm4gRVhUMl9FVF9FWFRFTlRfSEVBREVSX0JBRDsKKworCXJldHVybiAwOworfQorCisKKy8qCisgKiBCZWdpbiBmdW5jdGlvbnMgdG8gaGFuZGxlIGFuIGlub2RlJ3MgZXh0ZW50IGluZm9ybWF0aW9uCisgKi8KK3ZvaWQgZXh0MmZzX2V4dGVudF9mcmVlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSkKK3sKKwlpbnQJCQlpOworCisJaWYgKCFoYW5kbGUpCisJCXJldHVybjsKKworCWlmIChoYW5kbGUtPnBhdGgpIHsKKwkJZm9yIChpID0gMTsgaSA8IGhhbmRsZS0+bWF4X3BhdGhzOyBpKyspIHsKKwkJCWlmIChoYW5kbGUtPnBhdGhbaV0uYnVmKQorCQkJCWV4dDJmc19mcmVlX21lbSgmaGFuZGxlLT5wYXRoW2ldLmJ1Zik7CisJCX0KKwkJZXh0MmZzX2ZyZWVfbWVtKCZoYW5kbGUtPnBhdGgpOworCX0KKwlleHQyZnNfZnJlZV9tZW0oJmhhbmRsZSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X29wZW4oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICBleHQyX2V4dGVudF9oYW5kbGVfdCAqcmV0X2hhbmRsZSkKK3sKKwlyZXR1cm4gZXh0MmZzX2V4dGVudF9vcGVuMihmcywgaW5vLCBOVUxMLCByZXRfaGFuZGxlKTsKK30KKworZXJyY29kZV90IGV4dDJmc19leHRlbnRfb3BlbjIoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJICAgIGV4dDJfZXh0ZW50X2hhbmRsZV90ICpyZXRfaGFuZGxlKQoreworCXN0cnVjdCBleHQyX2V4dGVudF9oYW5kbGUJKmhhbmRsZTsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisJaW50CQkJCWk7CisJc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcgkqZWg7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKCFpbm9kZSkKKwkJaWYgKChpbm8gPT0gMCkgfHwgKGlubyA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKQorCQkJcmV0dXJuIEVYVDJfRVRfQkFEX0lOT0RFX05VTTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRlbnRfaGFuZGxlKSwgJmhhbmRsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwltZW1zZXQoaGFuZGxlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfZXh0ZW50X2hhbmRsZSkpOworCisJaGFuZGxlLT5pbm8gPSBpbm87CisJaGFuZGxlLT5mcyA9IGZzOworCisJaWYgKGlub2RlKSB7CisJCWhhbmRsZS0+aW5vZGUgPSBpbm9kZTsKKwl9IGVsc2UgeworCQloYW5kbGUtPmlub2RlID0gJmhhbmRsZS0+aW5vZGVidWY7CisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sIGhhbmRsZS0+aW5vZGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCisJZWggPSAoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKSAmaGFuZGxlLT5pbm9kZS0+aV9ibG9ja1swXTsKKworCWZvciAoaT0wOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKQorCQlpZiAoaGFuZGxlLT5pbm9kZS0+aV9ibG9ja1tpXSkKKwkJCWJyZWFrOworCWlmIChpID49IEVYVDJfTl9CTE9DS1MpIHsKKwkJZWgtPmVoX21hZ2ljID0gZXh0MmZzX2NwdV90b19sZTE2KEVYVDNfRVhUX01BR0lDKTsKKwkJZWgtPmVoX2RlcHRoID0gMDsKKwkJZWgtPmVoX2VudHJpZXMgPSAwOworCQlpID0gKHNpemVvZihoYW5kbGUtPmlub2RlLT5pX2Jsb2NrKSAtIHNpemVvZigqZWgpKSAvCisJCQlzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KTsKKwkJZWgtPmVoX21heCA9IGV4dDJmc19jcHVfdG9fbGUxNihpKTsKKwkJaGFuZGxlLT5pbm9kZS0+aV9mbGFncyB8PSBFWFQ0X0VYVEVOVFNfRkw7CisJfQorCisJaWYgKCEoaGFuZGxlLT5pbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9JTk9ERV9OT1RfRVhURU5UOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoZWgsIHNpemVvZihoYW5kbGUtPmlub2RlLT5pX2Jsb2NrKSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwloYW5kbGUtPm1heF9kZXB0aCA9IGV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZGVwdGgpOworCWhhbmRsZS0+dHlwZSA9IGV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfbWFnaWMpOworCisJaGFuZGxlLT5tYXhfcGF0aHMgPSBoYW5kbGUtPm1heF9kZXB0aCArIDE7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW16ZXJvKGhhbmRsZS0+bWF4X3BhdGhzICoKKwkJCQkgICAgc2l6ZW9mKHN0cnVjdCBleHRlbnRfcGF0aCksCisJCQkJICAgICZoYW5kbGUtPnBhdGgpOworCWhhbmRsZS0+cGF0aFswXS5idWYgPSAoY2hhciAqKSBoYW5kbGUtPmlub2RlLT5pX2Jsb2NrOworCisJaGFuZGxlLT5wYXRoWzBdLmxlZnQgPSBoYW5kbGUtPnBhdGhbMF0uZW50cmllcyA9CisJCWV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZW50cmllcyk7CisJaGFuZGxlLT5wYXRoWzBdLm1heF9lbnRyaWVzID0gZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9tYXgpOworCWhhbmRsZS0+cGF0aFswXS5jdXJyID0gMDsKKwloYW5kbGUtPnBhdGhbMF0uZW5kX2JsayA9CisJCShFWFQyX0lfU0laRShoYW5kbGUtPmlub2RlKSArIGZzLT5ibG9ja3NpemUgLSAxKSA+PgorCQkgRVhUMl9CTE9DS19TSVpFX0JJVFMoZnMtPnN1cGVyKTsKKwloYW5kbGUtPnBhdGhbMF0udmlzaXRfbnVtID0gMTsKKwloYW5kbGUtPmxldmVsID0gMDsKKwloYW5kbGUtPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFOworCisJKnJldF9oYW5kbGUgPSBoYW5kbGU7CisJcmV0dXJuIDA7CisKK2Vycm91dDoKKwlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgKG9wdGlvbmFsbHkpIG1vdmluZyB0aHJvdWdoIHRoZQorICogZXh0ZW50IHRyZWUgYW5kIHRoZW4gcmV0dXJuaW5nIHRoZSBjdXJyZW50IGV4dGVudAorICovCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9nZXQoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlLAorCQkJICAgIGludCBmbGFncywgc3RydWN0IGV4dDJmc19leHRlbnQgKmV4dGVudCkKK3sKKwlzdHJ1Y3QgZXh0ZW50X3BhdGgJKnBhdGgsICpuZXdwYXRoOworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIJKmVoOworCXN0cnVjdCBleHQzX2V4dGVudF9pZHgJCSppeCA9IDA7CisJc3RydWN0IGV4dDNfZXh0ZW50CQkqZXg7CisJZXJyY29kZV90CQkJcmV0dmFsOworCWJsazY0X3QJCQkJYmxrOworCWJsazY0X3QJCQkJZW5kX2JsazsKKwlpbnQJCQkJb3JpZ19vcCwgb3A7CisJaW50CQkJCWZhaWxlZF9jc3VtID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoaGFuZGxlLCBFWFQyX0VUX01BR0lDX0VYVEVOVF9IQU5ETEUpOworCisJaWYgKCFoYW5kbGUtPnBhdGgpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworCW9yaWdfb3AgPSBvcCA9IGZsYWdzICYgRVhUMl9FWFRFTlRfTU9WRV9NQVNLOworCityZXRyeToKKwlwYXRoID0gaGFuZGxlLT5wYXRoICsgaGFuZGxlLT5sZXZlbDsKKwlpZiAoKG9yaWdfb3AgPT0gRVhUMl9FWFRFTlRfTkVYVCkgfHwKKwkgICAgKG9yaWdfb3AgPT0gRVhUMl9FWFRFTlRfTkVYVF9MRUFGKSkgeworCQlpZiAoaGFuZGxlLT5sZXZlbCA8IGhhbmRsZS0+bWF4X2RlcHRoKSB7CisJCQkvKiBpbnRlcmlvciBub2RlICovCisJCQlpZiAocGF0aC0+dmlzaXRfbnVtID09IDApIHsKKwkJCQlwYXRoLT52aXNpdF9udW0rKzsKKwkJCQlvcCA9IEVYVDJfRVhURU5UX0RPV047CisJCQl9IGVsc2UgaWYgKHBhdGgtPmxlZnQgPiAwKQorCQkJCW9wID0gRVhUMl9FWFRFTlRfTkVYVF9TSUI7CisJCQllbHNlIGlmIChoYW5kbGUtPmxldmVsID4gMCkKKwkJCQlvcCA9IEVYVDJfRVhURU5UX1VQOworCQkJZWxzZQorCQkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT19ORVhUOworCQl9IGVsc2UgeworCQkJLyogbGVhZiBub2RlICovCisJCQlpZiAocGF0aC0+bGVmdCA+IDApCisJCQkJb3AgPSBFWFQyX0VYVEVOVF9ORVhUX1NJQjsKKwkJCWVsc2UgaWYgKGhhbmRsZS0+bGV2ZWwgPiAwKQorCQkJCW9wID0gRVhUMl9FWFRFTlRfVVA7CisJCQllbHNlCisJCQkJcmV0dXJuIEVYVDJfRVRfRVhURU5UX05PX05FWFQ7CisJCX0KKwkJaWYgKG9wICE9IEVYVDJfRVhURU5UX05FWFRfU0lCKSB7CisjaWZkZWYgREVCVUdfR0VUX0VYVEVOVAorCQkJcHJpbnRmKCI8PDw8IE9QID0gJXNcbiIsCisJCQkgICAgICAgKG9wID09IEVYVDJfRVhURU5UX0RPV04pID8gImRvd24iIDoKKwkJCSAgICAgICAoKG9wID09IEVYVDJfRVhURU5UX1VQKSA/ICJ1cCIgOiAidW5rbm93biIpKTsKKyNlbmRpZgorCQl9CisJfQorCisJaWYgKChvcmlnX29wID09IEVYVDJfRVhURU5UX1BSRVYpIHx8CisJICAgIChvcmlnX29wID09IEVYVDJfRVhURU5UX1BSRVZfTEVBRikpIHsKKwkJaWYgKGhhbmRsZS0+bGV2ZWwgPCBoYW5kbGUtPm1heF9kZXB0aCkgeworCQkJLyogaW50ZXJpb3Igbm9kZSAqLworCQkJaWYgKHBhdGgtPnZpc2l0X251bSA+IDAgKSB7CisJCQkJLyogcGF0aC0+dmlzaXRfbnVtID0gMDsgKi8KKwkJCQlvcCA9IEVYVDJfRVhURU5UX0RPV05fQU5EX0xBU1Q7CisJCQl9IGVsc2UgaWYgKHBhdGgtPmxlZnQgPCBwYXRoLT5lbnRyaWVzLTEpCisJCQkJb3AgPSBFWFQyX0VYVEVOVF9QUkVWX1NJQjsKKwkJCWVsc2UgaWYgKGhhbmRsZS0+bGV2ZWwgPiAwKQorCQkJCW9wID0gRVhUMl9FWFRFTlRfVVA7CisJCQllbHNlCisJCQkJcmV0dXJuIEVYVDJfRVRfRVhURU5UX05PX1BSRVY7CisJCX0gZWxzZSB7CisJCQkvKiBsZWFmIG5vZGUgKi8KKwkJCWlmIChwYXRoLT5sZWZ0IDwgcGF0aC0+ZW50cmllcy0xKQorCQkJCW9wID0gRVhUMl9FWFRFTlRfUFJFVl9TSUI7CisJCQllbHNlIGlmIChoYW5kbGUtPmxldmVsID4gMCkKKwkJCQlvcCA9IEVYVDJfRVhURU5UX1VQOworCQkJZWxzZQorCQkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT19QUkVWOworCQl9CisJCWlmIChvcCAhPSBFWFQyX0VYVEVOVF9QUkVWX1NJQikgeworI2lmZGVmIERFQlVHX0dFVF9FWFRFTlQKKwkJCXByaW50ZigiPDw8PCBPUCA9ICVzXG4iLAorCQkJICAgICAgIChvcCA9PSBFWFQyX0VYVEVOVF9ET1dOX0FORF9MQVNUKSA/ICJkb3duL2xhc3QiIDoKKwkJCSAgICAgICAoKG9wID09IEVYVDJfRVhURU5UX1VQKSA/ICJ1cCIgOiAidW5rbm93biIpKTsKKyNlbmRpZgorCQl9CisJfQorCisJaWYgKG9yaWdfb3AgPT0gRVhUMl9FWFRFTlRfTEFTVF9MRUFGKSB7CisJCWlmICgoaGFuZGxlLT5sZXZlbCA8IGhhbmRsZS0+bWF4X2RlcHRoKSAmJgorCQkgICAgKHBhdGgtPmxlZnQgPT0gMCkpCisJCQlvcCA9IEVYVDJfRVhURU5UX0RPV047CisJCWVsc2UKKwkJCW9wID0gRVhUMl9FWFRFTlRfTEFTVF9TSUI7CisjaWZkZWYgREVCVUdfR0VUX0VYVEVOVAorCQlwcmludGYoIjw8PDwgT1AgPSAlc1xuIiwKKwkJCSAgIChvcCA9PSBFWFQyX0VYVEVOVF9ET1dOKSA/ICJkb3duIiA6ICJsYXN0X3NpYiIpOworI2VuZGlmCisJfQorCisJc3dpdGNoIChvcCkgeworCWNhc2UgRVhUMl9FWFRFTlRfQ1VSUkVOVDoKKwkJaXggPSBwYXRoLT5jdXJyOworCQlicmVhazsKKwljYXNlIEVYVDJfRVhURU5UX1JPT1Q6CisJCWhhbmRsZS0+bGV2ZWwgPSAwOworCQlwYXRoID0gaGFuZGxlLT5wYXRoICsgaGFuZGxlLT5sZXZlbDsKKwkJLyogZmFsbHRocm91Z2ggKi8KKwljYXNlIEVYVDJfRVhURU5UX0ZJUlNUX1NJQjoKKwkJcGF0aC0+bGVmdCA9IHBhdGgtPmVudHJpZXM7CisJCXBhdGgtPmN1cnIgPSAwOworCQkvKiBmYWxsdGhyb3VnaCAqLworCWNhc2UgRVhUMl9FWFRFTlRfTkVYVF9TSUI6CisJCWlmIChwYXRoLT5sZWZ0IDw9IDApCisJCQlyZXR1cm4gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVDsKKwkJaWYgKHBhdGgtPmN1cnIpIHsKKwkJCWl4ID0gcGF0aC0+Y3VycjsKKwkJCWl4Kys7CisJCX0gZWxzZSB7CisJCQllaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIHBhdGgtPmJ1ZjsKKwkJCWl4ID0gRVhUX0ZJUlNUX0lOREVYKGVoKTsKKwkJfQorCQlwYXRoLT5sZWZ0LS07CisJCXBhdGgtPmN1cnIgPSBpeDsKKwkJcGF0aC0+dmlzaXRfbnVtID0gMDsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VYVEVOVF9QUkVWX1NJQjoKKwkJaWYgKCFwYXRoLT5jdXJyIHx8CisJCSAgICBwYXRoLT5sZWZ0KzEgPj0gcGF0aC0+ZW50cmllcykKKwkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT19QUkVWOworCQlpeCA9IHBhdGgtPmN1cnI7CisJCWl4LS07CisJCXBhdGgtPmN1cnIgPSBpeDsKKwkJcGF0aC0+bGVmdCsrOworCQlpZiAoaGFuZGxlLT5sZXZlbCA8IGhhbmRsZS0+bWF4X2RlcHRoKQorCQkJcGF0aC0+dmlzaXRfbnVtID0gMTsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VYVEVOVF9MQVNUX1NJQjoKKwkJZWggPSAoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKSBwYXRoLT5idWY7CisJCXBhdGgtPmN1cnIgPSBFWFRfTEFTVF9FWFRFTlQoZWgpOworCQlpeCA9IHBhdGgtPmN1cnI7CisJCXBhdGgtPmxlZnQgPSAwOworCQlwYXRoLT52aXNpdF9udW0gPSAwOworCQlicmVhazsKKwljYXNlIEVYVDJfRVhURU5UX1VQOgorCQlpZiAoaGFuZGxlLT5sZXZlbCA8PSAwKQorCQkJcmV0dXJuIEVYVDJfRVRfRVhURU5UX05PX1VQOworCQloYW5kbGUtPmxldmVsLS07CisJCXBhdGgtLTsKKwkJaXggPSBwYXRoLT5jdXJyOworCQlpZiAoKG9yaWdfb3AgPT0gRVhUMl9FWFRFTlRfUFJFVikgfHwKKwkJICAgIChvcmlnX29wID09IEVYVDJfRVhURU5UX1BSRVZfTEVBRikpCisJCQlwYXRoLT52aXNpdF9udW0gPSAwOworCQlicmVhazsKKwljYXNlIEVYVDJfRVhURU5UX0RPV046CisJY2FzZSBFWFQyX0VYVEVOVF9ET1dOX0FORF9MQVNUOgorCQlpZiAoIXBhdGgtPmN1cnIgfHwoaGFuZGxlLT5sZXZlbCA+PSBoYW5kbGUtPm1heF9kZXB0aCkpCisJCQlyZXR1cm4gRVhUMl9FVF9FWFRFTlRfTk9fRE9XTjsKKworCQlpeCA9IHBhdGgtPmN1cnI7CisJCW5ld3BhdGggPSBwYXRoICsgMTsKKwkJaWYgKCFuZXdwYXRoLT5idWYpIHsKKwkJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGhhbmRsZS0+ZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJCSZuZXdwYXRoLT5idWYpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCWJsayA9IGV4dDJmc19sZTMyX3RvX2NwdShpeC0+ZWlfbGVhZikgKworCQkJKChfX3U2NCkgZXh0MmZzX2xlMTZfdG9fY3B1KGl4LT5laV9sZWFmX2hpKSA8PCAzMik7CisJCWlmICgoaGFuZGxlLT5mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSU1BR0VfRklMRSkgJiYKKwkJICAgIChoYW5kbGUtPmZzLT5pbyAhPSBoYW5kbGUtPmZzLT5pbWFnZV9pbykpCisJCQltZW1zZXQobmV3cGF0aC0+YnVmLCAwLCBoYW5kbGUtPmZzLT5ibG9ja3NpemUpOworCQllbHNlIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChoYW5kbGUtPmZzLT5pbywKKwkJCQkJCSAgICAgYmxrLCAxLCBuZXdwYXRoLT5idWYpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCWhhbmRsZS0+bGV2ZWwrKzsKKworCQllaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIG5ld3BhdGgtPmJ1ZjsKKworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoZWgsIGhhbmRsZS0+ZnMtPmJsb2Nrc2l6ZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWhhbmRsZS0+bGV2ZWwtLTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKworCQlpZiAoIShoYW5kbGUtPmZzLT5mbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpICYmCisJCSAgICAhZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtX3ZlcmlmeShoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywKKwkJCQkJCSAgICAgZWgpKQorCQkJZmFpbGVkX2NzdW0gPSAxOworCisJCW5ld3BhdGgtPmxlZnQgPSBuZXdwYXRoLT5lbnRyaWVzID0KKwkJCWV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZW50cmllcyk7CisJCW5ld3BhdGgtPm1heF9lbnRyaWVzID0gZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9tYXgpOworCisJCWlmIChwYXRoLT5sZWZ0ID4gMCkgeworCQkJaXgrKzsKKwkJCW5ld3BhdGgtPmVuZF9ibGsgPSBleHQyZnNfbGUzMl90b19jcHUoaXgtPmVpX2Jsb2NrKTsKKwkJfSBlbHNlCisJCQluZXdwYXRoLT5lbmRfYmxrID0gcGF0aC0+ZW5kX2JsazsKKworCQlwYXRoID0gbmV3cGF0aDsKKwkJaWYgKG9wID09IEVYVDJfRVhURU5UX0RPV04pIHsKKwkJCWl4ID0gRVhUX0ZJUlNUX0lOREVYKChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIGVoKTsKKwkJCXBhdGgtPmN1cnIgPSBpeDsKKwkJCXBhdGgtPmxlZnQgPSBwYXRoLT5lbnRyaWVzIC0gMTsKKwkJCXBhdGgtPnZpc2l0X251bSA9IDA7CisJCX0gZWxzZSB7CisJCQlpeCA9IEVYVF9MQVNUX0lOREVYKChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIGVoKTsKKwkJCXBhdGgtPmN1cnIgPSBpeDsKKwkJCXBhdGgtPmxlZnQgPSAwOworCQkJaWYgKGhhbmRsZS0+bGV2ZWwgPCBoYW5kbGUtPm1heF9kZXB0aCkKKwkJCQlwYXRoLT52aXNpdF9udW0gPSAxOworCQl9CisjaWZkZWYgREVCVUdfR0VUX0VYVEVOVAorCQlwcmludGYoIkRvd24gdG8gbGV2ZWwgJWQvJWQsIGVuZF9ibGs9JWxsdVxuIiwKKwkJCSAgIGhhbmRsZS0+bGV2ZWwsIGhhbmRsZS0+bWF4X2RlcHRoLAorCQkJICAgcGF0aC0+ZW5kX2Jsayk7CisjZW5kaWYKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKwl9CisKKwlpZiAoIWl4KQorCQlyZXR1cm4gRVhUMl9FVF9OT19DVVJSRU5UX05PREU7CisKKwlleHRlbnQtPmVfZmxhZ3MgPSAwOworI2lmZGVmIERFQlVHX0dFVF9FWFRFTlQKKwlwcmludGYoIihMZWZ0ICVkKVxuIiwgcGF0aC0+bGVmdCk7CisjZW5kaWYKKworCWlmIChoYW5kbGUtPmxldmVsID09IGhhbmRsZS0+bWF4X2RlcHRoKSB7CisJCWV4ID0gKHN0cnVjdCBleHQzX2V4dGVudCAqKSBpeDsKKworCQlleHRlbnQtPmVfcGJsayA9IGV4dDJmc19sZTMyX3RvX2NwdShleC0+ZWVfc3RhcnQpICsKKwkJCSgoX191NjQpIGV4dDJmc19sZTE2X3RvX2NwdShleC0+ZWVfc3RhcnRfaGkpIDw8IDMyKTsKKwkJZXh0ZW50LT5lX2xibGsgPSBleHQyZnNfbGUzMl90b19jcHUoZXgtPmVlX2Jsb2NrKTsKKwkJZXh0ZW50LT5lX2xlbiA9IGV4dDJmc19sZTE2X3RvX2NwdShleC0+ZWVfbGVuKTsKKwkJZXh0ZW50LT5lX2ZsYWdzIHw9IEVYVDJfRVhURU5UX0ZMQUdTX0xFQUY7CisJCWlmIChleHRlbnQtPmVfbGVuID4gRVhUX0lOSVRfTUFYX0xFTikgeworCQkJZXh0ZW50LT5lX2xlbiAtPSBFWFRfSU5JVF9NQVhfTEVOOworCQkJZXh0ZW50LT5lX2ZsYWdzIHw9IEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVDsKKwkJfQorCX0gZWxzZSB7CisJCWV4dGVudC0+ZV9wYmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KGl4LT5laV9sZWFmKSArCisJCQkoKF9fdTY0KSBleHQyZnNfbGUxNl90b19jcHUoaXgtPmVpX2xlYWZfaGkpIDw8IDMyKTsKKwkJZXh0ZW50LT5lX2xibGsgPSBleHQyZnNfbGUzMl90b19jcHUoaXgtPmVpX2Jsb2NrKTsKKwkJaWYgKHBhdGgtPmxlZnQgPiAwKSB7CisJCQlpeCsrOworCQkJZW5kX2JsayA9IGV4dDJmc19sZTMyX3RvX2NwdShpeC0+ZWlfYmxvY2spOworCQl9IGVsc2UKKwkJCWVuZF9ibGsgPSBwYXRoLT5lbmRfYmxrOworCisJCWV4dGVudC0+ZV9sZW4gPSBlbmRfYmxrIC0gZXh0ZW50LT5lX2xibGs7CisJfQorCWlmIChwYXRoLT52aXNpdF9udW0pCisJCWV4dGVudC0+ZV9mbGFncyB8PSBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQ7CisKKwlpZiAoKChvcmlnX29wID09IEVYVDJfRVhURU5UX05FWFRfTEVBRikgfHwKKwkgICAgIChvcmlnX29wID09IEVYVDJfRVhURU5UX1BSRVZfTEVBRikpICYmCisJICAgIChoYW5kbGUtPmxldmVsICE9IGhhbmRsZS0+bWF4X2RlcHRoKSkKKwkJZ290byByZXRyeTsKKworCWlmICgob3JpZ19vcCA9PSBFWFQyX0VYVEVOVF9MQVNUX0xFQUYpICYmCisJICAgICgoaGFuZGxlLT5sZXZlbCAhPSBoYW5kbGUtPm1heF9kZXB0aCkgfHwKKwkgICAgIChwYXRoLT5sZWZ0ICE9IDApKSkKKwkJZ290byByZXRyeTsKKworCWlmIChmYWlsZWRfY3N1bSkKKwkJcmV0dXJuIEVYVDJfRVRfRVhURU5UX0NTVU1fSU5WQUxJRDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHVwZGF0ZV9wYXRoKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSkKK3sKKwlibGs2NF90CQkJCWJsazsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisJc3RydWN0IGV4dDNfZXh0ZW50X2lkeAkJKml4OworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIJKmVoOworCisJaWYgKGhhbmRsZS0+bGV2ZWwgPT0gMCkgeworCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoaGFuZGxlLT5mcywgaGFuZGxlLT5pbm8sCisJCQkJCSAgICBoYW5kbGUtPmlub2RlKTsKKwl9IGVsc2UgeworCQlpeCA9IGhhbmRsZS0+cGF0aFtoYW5kbGUtPmxldmVsIC0gMV0uY3VycjsKKwkJYmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KGl4LT5laV9sZWFmKSArCisJCQkoKF9fdTY0KSBleHQyZnNfbGUxNl90b19jcHUoaXgtPmVpX2xlYWZfaGkpIDw8IDMyKTsKKworCQkvKiB0aGVuIHVwZGF0ZSB0aGUgY2hlY2tzdW0gKi8KKwkJZWggPSAoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKQorCQkJCWhhbmRsZS0+cGF0aFtoYW5kbGUtPmxldmVsXS5idWY7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfYmxvY2tfY3N1bV9zZXQoaGFuZGxlLT5mcywgaGFuZGxlLT5pbm8sCisJCQkJCQkgICAgICBlaCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoaGFuZGxlLT5mcy0+aW8sCisJCQkJICAgICAgYmxrLCAxLCBoYW5kbGUtPnBhdGhbaGFuZGxlLT5sZXZlbF0uYnVmKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworI2lmIDAKK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X3NhdmVfcGF0aChleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJICBleHQyX2V4dGVudF9wYXRoX3QgKnJldF9wYXRoKQoreworCWV4dDJfZXh0ZW50X3BhdGhfdAlzYXZlX3BhdGg7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCXN0cnVjdCBleHQyX2V4dGVudF9pbmZvCWluZm87CisJZXJyY29kZV90CQlyZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX0NVUlJFTlQsICZleHRlbnQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldF9pbmZvKGhhbmRsZSwgJmluZm8pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGV4dDJfZXh0ZW50X3BhdGgpLCAmc2F2ZV9wYXRoKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCW1lbXNldChzYXZlX3BhdGgsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRlbnRfcGF0aCkpOworCisJc2F2ZV9wYXRoLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfRVhURU5UX1BBVEg7CisJc2F2ZV9wYXRoLT5sZWFmX2hlaWdodCA9IGluZm8ubWF4X2RlcHRoIC0gaW5mby5jdXJyX2xldmVsIC0gMTsKKwlzYXZlX3BhdGgtPmxibGsgPSBleHRlbnQuZV9sYmxrOworCisJKnJldF9wYXRoID0gc2F2ZV9wYXRoOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9mcmVlX3BhdGgoZXh0Ml9leHRlbnRfcGF0aF90IHBhdGgpCit7CisJRVhUMl9DSEVDS19NQUdJQyhwYXRoLCBFWFQyX0VUX01BR0lDX0VYVEVOVF9QQVRIKTsKKworCWV4dDJmc19mcmVlX21lbSgmcGF0aCk7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworLyoKKyAqIEdvIHRvIHRoZSBub2RlIGF0IGxlYWZfbGV2ZWwgd2hpY2ggY29udGFpbnMgbG9naWNhbCBibG9jayBibGsuCisgKgorICogbGVhZl9sZXZlbCBpcyBoZWlnaHQgZnJvbSB0aGUgbGVhZiBub2RlIGxldmVsLCBpLmUuCisgKiBsZWFmX2xldmVsIDAgaXMgYXQgbGVhZiBub2RlLCBsZWFmX2xldmVsIDEgaXMgMSBhYm92ZSBldGMuCisgKgorICogSWYgImJsayIgaGFzIG5vIG1hcHBpbmcgKGhvbGUpIHRoZW4gaGFuZGxlIGlzIGxlZnQgYXQgbGFzdAorICogZXh0ZW50IGJlZm9yZSBibGsuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X2dvdG8yKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCSAgICAgIGludCBsZWFmX2xldmVsLCBibGs2NF90IGJsaykKK3sKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJZXJyY29kZV90CQlyZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX1JPT1QsICZleHRlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUKQorCQkJcmV0dmFsID0gRVhUMl9FVF9FWFRFTlRfTk9UX0ZPVU5EOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlmIChsZWFmX2xldmVsID4gaGFuZGxlLT5tYXhfZGVwdGgpIHsKKyNpZmRlZiBERUJVRworCQlwcmludGYoImxlYWYgbGV2ZWwgJWQgZ3JlYXRlciB0aGFuIHRyZWUgZGVwdGggJWRcbiIsCisJCQlsZWFmX2xldmVsLCBoYW5kbGUtPm1heF9kZXB0aCk7CisjZW5kaWYKKwkJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKwl9CisKKyNpZmRlZiBERUJVRworCXByaW50ZigiZ290byBleHRlbnQgaW5vICV1LCBsZXZlbCAlZCwgJWxsdVxuIiwgaGFuZGxlLT5pbm8sCisJICAgICAgIGxlYWZfbGV2ZWwsIGJsayk7CisjZW5kaWYKKworI2lmZGVmIERFQlVHX0dPVE9fRVhURU5UUworCWRiZ19wcmludF9leHRlbnQoInJvb3QiLCAmZXh0ZW50KTsKKyNlbmRpZgorCXdoaWxlICgxKSB7CisJCWlmIChoYW5kbGUtPm1heF9kZXB0aCAtIGhhbmRsZS0+bGV2ZWwgPT0gbGVhZl9sZXZlbCkgeworCQkJLyogYmxvY2sgaXMgaW4gdGhpcyAmZXh0ZW50ICovCisJCQlpZiAoKGJsayA+PSBleHRlbnQuZV9sYmxrKSAmJgorCQkJICAgIChibGsgPCBleHRlbnQuZV9sYmxrICsgZXh0ZW50LmVfbGVuKSkKKwkJCQlyZXR1cm4gMDsKKwkJCWlmIChibGsgPCBleHRlbnQuZV9sYmxrKSB7CisJCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJCSAgIEVYVDJfRVhURU5UX1BSRVZfU0lCLAorCQkJCQkJCSAgICZleHRlbnQpOworCQkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT1RfRk9VTkQ7CisJCQl9CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsCisJCQkJCQkgICBFWFQyX0VYVEVOVF9ORVhUX1NJQiwKKwkJCQkJCSAgICZleHRlbnQpOworCQkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUKQorCQkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT1RfRk9VTkQ7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCQljb250aW51ZTsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfTkVYVF9TSUIsCisJCQkJCSAgICZleHRlbnQpOworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfRVhURU5UX05PX05FWFQpCisJCQlnb3RvIGdvX2Rvd247CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisjaWZkZWYgREVCVUdfR09UT19FWFRFTlRTCisJCWRiZ19wcmludF9leHRlbnQoIm5leHQiLCAmZXh0ZW50KTsKKyNlbmRpZgorCQlpZiAoYmxrID09IGV4dGVudC5lX2xibGspCisJCQlnb3RvIGdvX2Rvd247CisJCWlmIChibGsgPiBleHRlbnQuZV9sYmxrKQorCQkJY29udGludWU7CisKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9QUkVWX1NJQiwKKwkJCQkJICAgJmV4dGVudCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisjaWZkZWYgREVCVUdfR09UT19FWFRFTlRTCisJCWRiZ19wcmludF9leHRlbnQoInByZXYiLCAmZXh0ZW50KTsKKyNlbmRpZgorCisJZ29fZG93bjoKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ET1dOLAorCQkJCQkgICAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisKKyNpZmRlZiBERUJVR19HT1RPX0VYVEVOVFMKKwkJZGJnX3ByaW50X2V4dGVudCgiZG93biIsICZleHRlbnQpOworI2VuZGlmCisJfQorfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9nb3RvKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCSAgICAgYmxrNjRfdCBibGspCit7CisJcmV0dXJuIGV4dDJmc19leHRlbnRfZ290bzIoaGFuZGxlLCAwLCBibGspOworfQorCisvKgorICogVHJhdmVyc2UgYmFjayB1cCB0byByb290IGZpeGluZyBwYXJlbnRzIG9mIGN1cnJlbnQgbm9kZSBhcyBuZWVkZWQuCisgKgorICogSWYgd2UgY2hhbmdlZCBzdGFydCBvZiBmaXJzdCBlbnRyeSBpbiBhIG5vZGUsIGZpeCBwYXJlbnQgaW5kZXggc3RhcnQKKyAqIGFuZCBzbyBvbi4KKyAqCisgKiBTYWZlIHRvIGNhbGwgZm9yIGFueSBwb3NpdGlvbiBpbiBub2RlOyBpZiBub3QgYXQgdGhlIGZpcnN0IGVudHJ5LAorICogaXQgd2lsbCBzaW1wbHkgcmV0dXJuLgorICoKKyAqIE5vdGUgYSBzdWJ0bGV0eSBvZiB0aGlzIGZ1bmN0aW9uIC0tIGlmIHRoZXJlIGhhcHBlbiB0byBiZSB0d28gZXh0ZW50cworICogbWFwcGluZyB0aGUgc2FtZSBsYmxrIGFuZCBzb21lb25lIGNhbGxzIGZpeF9wYXJlbnRzIG9uIHRoZSBzZWNvbmQgb2YgdGhlIHR3bworICogZXh0ZW50cywgdGhlIHBvc2l0aW9uIG9mIHRoZSBleHRlbnQgaGFuZGxlIGFmdGVyIHRoZSBjYWxsIHdpbGwgYmUgdGhlIHNlY29uZAorICogZXh0ZW50IGlmIG5vdGhpbmcgaGFwcGVuZWQsIG9yIHRoZSBmaXJzdCBleHRlbnQgaWYgc29tZXRoaW5nIGRpZC4gIEEgY2FsbGVyCisgKiBpbiB0aGlzIHNpdHVhdGlvbiBtdXN0IHVzZSBleHQyZnNfZXh0ZW50X2dvdG8oKSBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uCisgKiBPciBzaW1wbHkgZG9uJ3QgbWFwIHRoZSBzYW1lIGxibGsgd2l0aCB0d28gZXh0ZW50cywgZXZlci4KKyAqLworZXJyY29kZV90IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlKQoreworCWludAkJCQlyZXR2YWwgPSAwOworCWludAkJCQlvcmlnX2hlaWdodDsKKwlibGs2NF90CQkJCXN0YXJ0OworCXN0cnVjdCBleHRlbnRfcGF0aAkJKnBhdGg7CisJc3RydWN0IGV4dDJmc19leHRlbnQJCWV4dGVudDsKKwlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbwkJaW5mbzsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoaGFuZGxlLCBFWFQyX0VUX01BR0lDX0VYVEVOVF9IQU5ETEUpOworCisJaWYgKCEoaGFuZGxlLT5mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwlpZiAoIWhhbmRsZS0+cGF0aCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFOworCisJcGF0aCA9IGhhbmRsZS0+cGF0aCArIGhhbmRsZS0+bGV2ZWw7CisJaWYgKCFwYXRoLT5jdXJyKQorCQlyZXR1cm4gRVhUMl9FVF9OT19DVVJSRU5UX05PREU7CisKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX0NVUlJFTlQsICZleHRlbnQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKworCS8qIG1vZGlmaWVkIG5vZGUncyBzdGFydCBibG9jayAqLworCXN0YXJ0ID0gZXh0ZW50LmVfbGJsazsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXRfaW5mbyhoYW5kbGUsICZpbmZvKSkpCisJCXJldHVybiByZXR2YWw7CisJb3JpZ19oZWlnaHQgPSBpbmZvLm1heF9kZXB0aCAtIGluZm8uY3Vycl9sZXZlbDsKKworCS8qIHRyYXZlcnNlIHVwIHVudGlsIGluZGV4IG5vdCBmaXJzdCwgb3Igc3RhcnRibGsgbWF0Y2hlcywgb3IgdG9wICovCisJd2hpbGUgKGhhbmRsZS0+bGV2ZWwgPiAwICYmCisJICAgICAgIChwYXRoLT5sZWZ0ID09IHBhdGgtPmVudHJpZXMgLSAxKSkgeworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX1VQLCAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKwkJaWYgKGV4dGVudC5lX2xibGsgPT0gc3RhcnQpCisJCQlicmVhazsKKwkJcGF0aCA9IGhhbmRsZS0+cGF0aCArIGhhbmRsZS0+bGV2ZWw7CisJCWV4dGVudC5lX2xlbiArPSAoZXh0ZW50LmVfbGJsayAtIHN0YXJ0KTsKKwkJZXh0ZW50LmVfbGJsayA9IHN0YXJ0OworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKwkJdXBkYXRlX3BhdGgoaGFuZGxlKTsKKwl9CisKKwkvKiBwdXQgaGFuZGxlIGJhY2sgdG8gd2hlcmUgd2Ugc3RhcnRlZCAqLworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290bzIoaGFuZGxlLCBvcmlnX2hlaWdodCwgc3RhcnQpOworZG9uZToKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9yZXBsYWNlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwKKwkJCQlpbnQgZmxhZ3MgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCXN0cnVjdCBleHQyZnNfZXh0ZW50ICpleHRlbnQpCit7CisJc3RydWN0IGV4dGVudF9wYXRoCQkqcGF0aDsKKwlzdHJ1Y3QgZXh0M19leHRlbnRfaWR4CQkqaXg7CisJc3RydWN0IGV4dDNfZXh0ZW50CQkqZXg7CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworCWlmICghKGhhbmRsZS0+ZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fRklMU1lTOworCisJaWYgKCFoYW5kbGUtPnBhdGgpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworCXBhdGggPSBoYW5kbGUtPnBhdGggKyBoYW5kbGUtPmxldmVsOworCWlmICghcGF0aC0+Y3VycikKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFOworCisjaWZkZWYgREVCVUcKKwlwcmludGYoImV4dGVudCByZXBsYWNlOiAldSAiLCBoYW5kbGUtPmlubyk7CisJZGJnX3ByaW50X2V4dGVudCgwLCBleHRlbnQpOworI2VuZGlmCisKKwlpZiAoaGFuZGxlLT5sZXZlbCA9PSBoYW5kbGUtPm1heF9kZXB0aCkgeworCQlleCA9IHBhdGgtPmN1cnI7CisKKwkJZXgtPmVlX2Jsb2NrID0gZXh0MmZzX2NwdV90b19sZTMyKGV4dGVudC0+ZV9sYmxrKTsKKwkJZXgtPmVlX3N0YXJ0ID0gZXh0MmZzX2NwdV90b19sZTMyKGV4dGVudC0+ZV9wYmxrICYgMHhGRkZGRkZGRik7CisJCWV4LT5lZV9zdGFydF9oaSA9IGV4dDJmc19jcHVfdG9fbGUxNihleHRlbnQtPmVfcGJsayA+PiAzMik7CisJCWlmIChleHRlbnQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpIHsKKwkJCWlmIChleHRlbnQtPmVfbGVuID4gRVhUX1VOSU5JVF9NQVhfTEVOKQorCQkJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9JTlZBTElEX0xFTkdUSDsKKwkJCWV4LT5lZV9sZW4gPSBleHQyZnNfY3B1X3RvX2xlMTYoZXh0ZW50LT5lX2xlbiArCisJCQkJCQkJRVhUX0lOSVRfTUFYX0xFTik7CisJCX0gZWxzZSB7CisJCQlpZiAoZXh0ZW50LT5lX2xlbiA+IEVYVF9JTklUX01BWF9MRU4pCisJCQkJcmV0dXJuIEVYVDJfRVRfRVhURU5UX0lOVkFMSURfTEVOR1RIOworCQkJZXgtPmVlX2xlbiA9IGV4dDJmc19jcHVfdG9fbGUxNihleHRlbnQtPmVfbGVuKTsKKwkJfQorCX0gZWxzZSB7CisJCWl4ID0gcGF0aC0+Y3VycjsKKworCQlpeC0+ZWlfbGVhZiA9IGV4dDJmc19jcHVfdG9fbGUzMihleHRlbnQtPmVfcGJsayAmIDB4RkZGRkZGRkYpOworCQlpeC0+ZWlfbGVhZl9oaSA9IGV4dDJmc19jcHVfdG9fbGUxNihleHRlbnQtPmVfcGJsayA+PiAzMik7CisJCWl4LT5laV9ibG9jayA9IGV4dDJmc19jcHVfdG9fbGUzMihleHRlbnQtPmVfbGJsayk7CisJCWl4LT5laV91bnVzZWQgPSAwOworCX0KKwl1cGRhdGVfcGF0aChoYW5kbGUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNwbGl0dGluZ19hdF9lb2Yoc3RydWN0IGV4dDJfZXh0ZW50X2hhbmRsZSAqaGFuZGxlLAorCQkJICAgIHN0cnVjdCBleHRlbnRfcGF0aCAqcGF0aCkKK3sKKwlzdHJ1Y3QgZXh0ZW50X3BhdGggKnBwcCA9IHBhdGg7CisJZHVtcF9wYXRoKF9fZnVuY19fLCBoYW5kbGUsIHBhdGgpOworCisJaWYgKGhhbmRsZS0+bGV2ZWwgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlkbyB7CisJCWlmIChwcHAtPmxlZnQpCisJCQlyZXR1cm4gMDsKKwkJcHBwLS07CisJfSB3aGlsZSAocHBwID49IGhhbmRsZS0+cGF0aCk7CisKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIGFsbG9jYXRlIGEgbmV3IGJsb2NrLCBtb3ZlIGhhbGYgdGhlIGN1cnJlbnQgbm9kZSB0byBpdCwgYW5kIHVwZGF0ZSBwYXJlbnQKKyAqCisgKiBoYW5kbGUgd2lsbCBiZSBsZWZ0IHBvaW50aW5nIGF0IG9yaWdpbmFsIHJlY29yZC4KKyAqLworc3RhdGljIGVycmNvZGVfdCBleHRlbnRfbm9kZV9zcGxpdChleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJICAgaW50IGV4cGFuZF9hbGxvd2VkKQoreworCWVycmNvZGVfdAkJCXJldHZhbCA9IDA7CisJYmxrNjRfdAkJCQluZXdfbm9kZV9wYmxrOworCWJsazY0X3QJCQkJbmV3X25vZGVfc3RhcnQ7CisJYmxrNjRfdAkJCQlvcmlnX2xibGs7CisJYmxrNjRfdAkJCQlnb2FsX2JsayA9IDA7CisJaW50CQkJCW9yaWdfaGVpZ2h0OworCWNoYXIJCQkJKmJsb2NrX2J1ZiA9IE5VTEw7CisJc3RydWN0IGV4dDJmc19leHRlbnQJCWV4dGVudDsKKwlzdHJ1Y3QgZXh0ZW50X3BhdGgJCSpwYXRoLCAqbmV3cGF0aCA9IDA7CisJc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcgkqZWgsICpuZXdlaDsKKwlpbnQJCQkJdG9jb3B5OworCWludAkJCQluZXdfcm9vdCA9IDA7CisJc3RydWN0IGV4dDJfZXh0ZW50X2luZm8JCWluZm87CisJaW50CQkJCW5vX2JhbGFuY2U7CisKKwkvKiBiYXNpYyBzYW5pdHkgKi8KKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworCWlmICghKGhhbmRsZS0+ZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fRklMU1lTOworCisJaWYgKCFoYW5kbGUtPnBhdGgpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworI2lmZGVmIERFQlVHCisJcHJpbnRmKCJzcGxpdHRpbmcgbm9kZSBhdCBsZXZlbCAlZFxuIiwgaGFuZGxlLT5sZXZlbCk7CisjZW5kaWYKKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX0NVUlJFTlQsICZleHRlbnQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oaGFuZGxlLCAmaW5mbyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBkb25lOworCisJLyogc2F2ZSB0aGUgcG9zaXRpb24gd2Ugd2VyZSBvcmlnaW5hbGx5IHNwbGl0dGluZy4uLiAqLworCW9yaWdfaGVpZ2h0ID0gaW5mby5tYXhfZGVwdGggLSBpbmZvLmN1cnJfbGV2ZWw7CisJb3JpZ19sYmxrID0gZXh0ZW50LmVfbGJsazsKKworCS8qIFRyeSB0byBwdXQgdGhlIGluZGV4IGJsb2NrIGJlZm9yZSB0aGUgZmlyc3QgZXh0ZW50ICovCisJcGF0aCA9IGhhbmRsZS0+cGF0aCArIGhhbmRsZS0+bGV2ZWw7CisJZWggPSAoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKSBwYXRoLT5idWY7CisJaWYgKGhhbmRsZS0+bGV2ZWwgPT0gaGFuZGxlLT5tYXhfZGVwdGgpIHsKKwkJc3RydWN0IGV4dDNfZXh0ZW50CSpleDsKKworCQlleCA9IEVYVF9GSVJTVF9FWFRFTlQoZWgpOworCQlnb2FsX2JsayA9IGV4dDJmc19sZTMyX3RvX2NwdShleC0+ZWVfc3RhcnQpICsKKwkJCSgoX191NjQpIGV4dDJmc19sZTE2X3RvX2NwdShleC0+ZWVfc3RhcnRfaGkpIDw8IDMyKTsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgZXh0M19leHRlbnRfaWR4CSppeDsKKworCQlpeCA9IEVYVF9GSVJTVF9JTkRFWChlaCk7CisJCWdvYWxfYmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KGl4LT5laV9sZWFmKSArCisJCQkoKF9fdTY0KSBleHQyZnNfbGUxNl90b19jcHUoaXgtPmVpX2xlYWZfaGkpIDw8IDMyKTsKKwl9CisJZ29hbF9ibGsgLT0gRVhUMkZTX0NMVVNURVJfUkFUSU8oaGFuZGxlLT5mcyk7CisJZ29hbF9ibGsgJj0gfkVYVDJGU19DTFVTVEVSX01BU0soaGFuZGxlLT5mcyk7CisKKwkvKiBJcyB0aGVyZSByb29tIGluIHRoZSBwYXJlbnQgZm9yIGEgbmV3IGVudHJ5PyAqLworCWlmIChoYW5kbGUtPmxldmVsICYmCisJCQkoaGFuZGxlLT5wYXRoW2hhbmRsZS0+bGV2ZWwgLSAxXS5lbnRyaWVzID49CisJCQkgaGFuZGxlLT5wYXRoW2hhbmRsZS0+bGV2ZWwgLSAxXS5tYXhfZW50cmllcykpIHsKKworI2lmZGVmIERFQlVHCisJCXByaW50ZigicGFyZW50IGxldmVsICVkIGZ1bGw7IHNwbGl0dGluZyBpdCB0b29cbiIsCisJCQkJCQkJaGFuZGxlLT5sZXZlbCAtIDEpOworI2VuZGlmCisJCS8qIHNwbGl0IHRoZSBwYXJlbnQgKi8KKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9VUCwgJmV4dGVudCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisKKwkJcmV0dmFsID0gZXh0ZW50X25vZGVfc3BsaXQoaGFuZGxlLCBleHBhbmRfYWxsb3dlZCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisKKwkJLyogZ2V0IGhhbmRsZSBiYWNrIHRvIG91ciBvcmlnaW5hbCBzcGxpdCBwb3NpdGlvbiAqLworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dvdG8yKGhhbmRsZSwgb3JpZ19oZWlnaHQsIG9yaWdfbGJsayk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJfQorCisJLyogQXQgdGhpcyBwb2ludCwgcGFyZW50IHNob3VsZCBoYXZlIHJvb20gZm9yIHRoaXMgc3BsaXQgKi8KKwlwYXRoID0gaGFuZGxlLT5wYXRoICsgaGFuZGxlLT5sZXZlbDsKKwlpZiAoIXBhdGgtPmN1cnIpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworCS8qCisJICogTm9ybWFsbHksIHdlIHRyeSB0byBzcGxpdCBhIGZ1bGwgbm9kZSBpbiBoYWxmLiAgVGhpcyBkb2Vzbid0IHR1cm4KKwkgKiBvdXQgc28gd2VsbCBpZiB3ZSdyZSB0YWNraW5nIGV4dGVudHMgb24gdGhlIGVuZCBvZiB0aGUgZmlsZSBiZWNhdXNlCisJICogdGhlbiB3ZSdyZSBzdHVjayB3aXRoIGEgdHJlZSBvZiBoYWxmLWZ1bGwgZXh0ZW50IGJsb2Nrcy4gIFRoaXMgb2YKKwkgKiBjb3Vyc2UgZG9lc24ndCBhcHBseSB0byB0aGUgcm9vdCBsZXZlbC4KKwkgKi8KKwlub19iYWxhbmNlID0gZXhwYW5kX2FsbG93ZWQgPyBzcGxpdHRpbmdfYXRfZW9mKGhhbmRsZSwgcGF0aCkgOiAwOworCisJLyogZXh0ZW50IGhlYWRlciBvZiB0aGUgY3VycmVudCBub2RlIHdlJ2xsIHNwbGl0ICovCisJZWggPSAoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlciAqKXBhdGgtPmJ1ZjsKKworCS8qIHNwbGl0dGluZyByb290IGxldmVsIG1lYW5zIG1vdmluZyB0aGVtIGFsbCBvdXQgKi8KKwlpZiAoaGFuZGxlLT5sZXZlbCA9PSAwKSB7CisJCW5ld19yb290ID0gMTsKKwkJdG9jb3B5ID0gZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9lbnRyaWVzKTsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW16ZXJvKChoYW5kbGUtPm1heF9wYXRocyArIDEpICoKKwkJCQkJICAgIHNpemVvZihzdHJ1Y3QgZXh0ZW50X3BhdGgpLAorCQkJCQkgICAgJm5ld3BhdGgpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBkb25lOworCX0gZWxzZSB7CisJCWlmIChub19iYWxhbmNlKQorCQkJdG9jb3B5ID0gMTsKKwkJZWxzZQorCQkJdG9jb3B5ID0gZXh0MmZzX2xlMTZfdG9fY3B1KGVoLT5laF9lbnRyaWVzKSAvIDI7CisJfQorCisjaWZkZWYgREVCVUcKKwlwcmludGYoIndpbGwgY29weSBvdXQgJWQgb2YgJWQgZW50cmllcyBhdCBsZXZlbCAlZFxuIiwKKwkJCQl0b2NvcHksIGV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZW50cmllcyksCisJCQkJaGFuZGxlLT5sZXZlbCk7CisjZW5kaWYKKworCWlmICghdG9jb3B5ICYmICFub19iYWxhbmNlKSB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJOb3RoaW5nIHRvIGNvcHkgdG8gbmV3IGJsb2NrIVxuIik7CisjZW5kaWYKKwkJcmV0dmFsID0gRVhUMl9FVF9DQU5UX1NQTElUX0VYVEVOVDsKKwkJZ290byBkb25lOworCX0KKworCS8qIGZpcnN0IHdlIG5lZWQgYSBuZXcgYmxvY2ssIG9yIGNhbiBkbyBub3RoaW5nLiAqLworCWJsb2NrX2J1ZiA9IG1hbGxvYyhoYW5kbGUtPmZzLT5ibG9ja3NpemUpOworCWlmICghYmxvY2tfYnVmKSB7CisJCXJldHZhbCA9IEVOT01FTTsKKwkJZ290byBkb25lOworCX0KKworCWlmICghZ29hbF9ibGspCisJCWdvYWxfYmxrID0gZXh0MmZzX2ZpbmRfaW5vZGVfZ29hbChoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywKKwkJCQkJCSAgaGFuZGxlLT5pbm9kZSwgMCk7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jX2Jsb2NrMihoYW5kbGUtPmZzLCBnb2FsX2JsaywgYmxvY2tfYnVmLAorCQkJCSAgICAmbmV3X25vZGVfcGJsayk7CisJaWYgKHJldHZhbCkKKwkJZ290byBkb25lOworCisjaWZkZWYgREVCVUcKKwlwcmludGYoIndpbGwgY29weSB0byBuZXcgbm9kZSBhdCBibG9jayAlbHVcbiIsCisJICAgICAgICh1bnNpZ25lZCBsb25nKSBuZXdfbm9kZV9wYmxrKTsKKyNlbmRpZgorCisJLyogQ29weSBkYXRhIGludG8gbmV3IGJsb2NrIGJ1ZmZlciAqLworCS8qIEZpcnN0IHRoZSBoZWFkZXIgZm9yIHRoZSBuZXcgYmxvY2suLi4gKi8KKwluZXdlaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIGJsb2NrX2J1ZjsKKwltZW1jcHkobmV3ZWgsIGVoLCBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcikpOworCW5ld2VoLT5laF9lbnRyaWVzID0gZXh0MmZzX2NwdV90b19sZTE2KHRvY29weSk7CisJbmV3ZWgtPmVoX21heCA9IGV4dDJmc19jcHVfdG9fbGUxNigoaGFuZGxlLT5mcy0+YmxvY2tzaXplIC0KKwkJCSBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcikpIC8KKwkJCQlzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KSk7CisKKwkvKiB0aGVuIHRoZSBlbnRyaWVzIGZvciB0aGUgbmV3IGJsb2NrLi4uICovCisJbWVtY3B5KEVYVF9GSVJTVF9JTkRFWChuZXdlaCksCisJCUVYVF9GSVJTVF9JTkRFWChlaCkgKworCQkJKGV4dDJmc19sZTE2X3RvX2NwdShlaC0+ZWhfZW50cmllcykgLSB0b2NvcHkpLAorCQlzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2lkeCkgKiB0b2NvcHkpOworCisJbmV3X25vZGVfc3RhcnQgPSBleHQyZnNfbGUzMl90b19jcHUoRVhUX0ZJUlNUX0lOREVYKG5ld2VoKS0+ZWlfYmxvY2spOworCisJLyogdGhlbiB1cGRhdGUgdGhlIGNoZWNrc3VtICovCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9ibG9ja19jc3VtX3NldChoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywgbmV3ZWgpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKworCS8qIC4uLmFuZCB3cml0ZSB0aGUgbmV3IG5vZGUgYmxvY2sgb3V0IHRvIGRpc2suICovCisJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChoYW5kbGUtPmZzLT5pbywgbmV3X25vZGVfcGJsaywgMSwKKwkJCQkJYmxvY2tfYnVmKTsKKworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKworCS8qIE9LISB3ZSd2ZSBjcmVhdGVkIHRoZSBuZXcgbm9kZTsgbm93IGFkanVzdCB0aGUgdHJlZSAqLworCisJLyogY3VycmVudCBwYXRoIG5vdyBoYXMgZmV3ZXIgYWN0aXZlIGVudHJpZXMsIHdlIGNvcGllZCBzb21lIG91dCAqLworCWlmIChoYW5kbGUtPmxldmVsID09IDApIHsKKwkJbWVtY3B5KG5ld3BhdGgsIHBhdGgsCisJCSAgICAgICBzaXplb2Yoc3RydWN0IGV4dGVudF9wYXRoKSAqIGhhbmRsZS0+bWF4X3BhdGhzKTsKKwkJaGFuZGxlLT5wYXRoID0gbmV3cGF0aDsKKwkJbmV3cGF0aCA9IHBhdGg7CisJCXBhdGggPSBoYW5kbGUtPnBhdGg7CisJCXBhdGgtPmVudHJpZXMgPSAxOworCQlwYXRoLT5sZWZ0ID0gcGF0aC0+bWF4X2VudHJpZXMgLSAxOworCQloYW5kbGUtPm1heF9kZXB0aCsrOworCQloYW5kbGUtPm1heF9wYXRocysrOworCQllaC0+ZWhfZGVwdGggPSBleHQyZnNfY3B1X3RvX2xlMTYoaGFuZGxlLT5tYXhfZGVwdGgpOworCX0gZWxzZSB7CisJCXBhdGgtPmVudHJpZXMgLT0gdG9jb3B5OworCQlwYXRoLT5sZWZ0IC09IHRvY29weTsKKwl9CisKKwllaC0+ZWhfZW50cmllcyA9IGV4dDJmc19jcHVfdG9fbGUxNihwYXRoLT5lbnRyaWVzKTsKKwkvKiB0aGlzIHdyaXRlcyBvdXQgdGhlIG5vZGUsIGluY2wuIHRoZSBtb2RpZmllZCBoZWFkZXIgKi8KKwlyZXR2YWwgPSB1cGRhdGVfcGF0aChoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKworCS8qIG5vdyBnbyB1cCBhbmQgaW5zZXJ0L3JlcGxhY2UgaW5kZXggZm9yIG5ldyBub2RlIHdlIGNyZWF0ZWQgKi8KKwlpZiAobmV3X3Jvb3QpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9GSVJTVF9TSUIsICZleHRlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBkb25lOworCisJCWV4dGVudC5lX2xibGsgPSBuZXdfbm9kZV9zdGFydDsKKwkJZXh0ZW50LmVfcGJsayA9IG5ld19ub2RlX3BibGs7CisJCWV4dGVudC5lX2xlbiA9IGhhbmRsZS0+cGF0aFswXS5lbmRfYmxrIC0gZXh0ZW50LmVfbGJsazsKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9yZXBsYWNlKGhhbmRsZSwgMCwgJmV4dGVudCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJfSBlbHNlIHsKKwkJX191MzIgbmV3X25vZGVfbGVuZ3RoOworCisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfVVAsICZleHRlbnQpOworCQkvKiB3aWxsIGluc2VydCBhZnRlciB0aGlzIG9uZTsgaXQncyBsZW5ndGggaXMgc2hvcnRlciBub3cgKi8KKwkJbmV3X25vZGVfbGVuZ3RoID0gbmV3X25vZGVfc3RhcnQgLSBleHRlbnQuZV9sYmxrOworCQlleHRlbnQuZV9sZW4gLT0gbmV3X25vZGVfbGVuZ3RoOworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKworCQkvKiBub3cgc2V0IHVwIHRoZSBuZXcgZXh0ZW50IGFuZCBpbnNlcnQgaXQgKi8KKwkJZXh0ZW50LmVfbGJsayA9IG5ld19ub2RlX3N0YXJ0OworCQlleHRlbnQuZV9wYmxrID0gbmV3X25vZGVfcGJsazsKKwkJZXh0ZW50LmVfbGVuID0gbmV3X25vZGVfbGVuZ3RoOworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2luc2VydChoYW5kbGUsIEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUiwgJmV4dGVudCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJfQorCisJLyogZ2V0IGhhbmRsZSBiYWNrIHRvIG91ciBvcmlnaW5hbCBwb3NpdGlvbiAqLworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290bzIoaGFuZGxlLCBvcmlnX2hlaWdodCwgb3JpZ19sYmxrKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGRvbmU7CisKKwkvKiBuZXcgbm9kZSBob29rZWQgaW4sIHNvIHVwZGF0ZSBpbm9kZSBibG9jayBjb3VudCAoZG8gdGhpcyBoZXJlPykgKi8KKwlleHQyZnNfaWJsa19hZGRfYmxvY2tzKGhhbmRsZS0+ZnMsIGhhbmRsZS0+aW5vZGUsIDEpOworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShoYW5kbGUtPmZzLCBoYW5kbGUtPmlubywKKwkJCQkgICAgaGFuZGxlLT5pbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBkb25lOworCitkb25lOgorCWlmIChuZXdwYXRoKQorCQlleHQyZnNfZnJlZV9tZW0oJm5ld3BhdGgpOworCWZyZWUoYmxvY2tfYnVmKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZXh0ZW50X25vZGVfc3BsaXQoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlKQoreworCXJldHVybiBleHRlbnRfbm9kZV9zcGxpdChoYW5kbGUsIDApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9pbnNlcnQoZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlLCBpbnQgZmxhZ3MsCisJCQkJICAgICAgc3RydWN0IGV4dDJmc19leHRlbnQgKmV4dGVudCkKK3sKKwlzdHJ1Y3QgZXh0ZW50X3BhdGgJCSpwYXRoOworCXN0cnVjdCBleHQzX2V4dGVudF9pZHgJCSppeDsKKwlzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyCSplaDsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworCWlmICghKGhhbmRsZS0+ZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fRklMU1lTOworCisJaWYgKCFoYW5kbGUtPnBhdGgpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworI2lmZGVmIERFQlVHCisJcHJpbnRmKCJleHRlbnQgaW5zZXJ0OiAldSAiLCBoYW5kbGUtPmlubyk7CisJZGJnX3ByaW50X2V4dGVudCgwLCBleHRlbnQpOworI2VuZGlmCisKKwlwYXRoID0gaGFuZGxlLT5wYXRoICsgaGFuZGxlLT5sZXZlbDsKKworCWlmIChwYXRoLT5lbnRyaWVzID49IHBhdGgtPm1heF9lbnRyaWVzKSB7CisJCWlmIChmbGFncyAmIEVYVDJfRVhURU5UX0lOU0VSVF9OT1NQTElUKSB7CisJCQlyZXR1cm4gRVhUMl9FVF9DQU5UX0lOU0VSVF9FWFRFTlQ7CisJCX0gZWxzZSB7CisjaWZkZWYgREVCVUcKKwkJCXByaW50Zigibm9kZSBmdWxsIChsZXZlbCAlZCkgLSBzcGxpdHRpbmdcbiIsCisJCQkJICAgaGFuZGxlLT5sZXZlbCk7CisjZW5kaWYKKwkJCXJldHZhbCA9IGV4dGVudF9ub2RlX3NwbGl0KGhhbmRsZSwgMSk7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCQlwYXRoID0gaGFuZGxlLT5wYXRoICsgaGFuZGxlLT5sZXZlbDsKKwkJfQorCX0KKworCWVoID0gKHN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIgKikgcGF0aC0+YnVmOworCWlmIChwYXRoLT5jdXJyKSB7CisJCWl4ID0gcGF0aC0+Y3VycjsKKwkJaWYgKGZsYWdzICYgRVhUMl9FWFRFTlRfSU5TRVJUX0FGVEVSKSB7CisJCQlpeCsrOworCQkJcGF0aC0+bGVmdC0tOworCQl9CisJfSBlbHNlIHsKKwkJaXggPSBFWFRfRklSU1RfSU5ERVgoZWgpOworCQlwYXRoLT5sZWZ0ID0gLTE7CisJfQorCisJcGF0aC0+Y3VyciA9IGl4OworCisJaWYgKHBhdGgtPmxlZnQgPj0gMCkKKwkJbWVtbW92ZShpeCArIDEsIGl4LAorCQkJKHBhdGgtPmxlZnQrMSkgKiBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2lkeCkpOworCXBhdGgtPmxlZnQrKzsKKwlwYXRoLT5lbnRyaWVzKys7CisKKwllaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIHBhdGgtPmJ1ZjsKKwllaC0+ZWhfZW50cmllcyA9IGV4dDJmc19jcHVfdG9fbGUxNihwYXRoLT5lbnRyaWVzKTsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsIGV4dGVudCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXR2YWwgPSB1cGRhdGVfcGF0aChoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmV0dXJuIDA7CisKK2Vycm91dDoKKwlleHQyZnNfZXh0ZW50X2RlbGV0ZShoYW5kbGUsIDApOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBTZXRzIHRoZSBwaHlzaWNhbCBibG9jayBmb3IgYSBsb2dpY2FsIGZpbGUgYmxvY2sgaW4gdGhlIGV4dGVudCB0cmVlLgorICoKKyAqIE1heTogbWFwIHVubWFwcGVkLCB1bm1hcCBtYXBwZWQsIG9yIHJlbWFwIG1hcHBlZCBibG9ja3MuCisgKgorICogTWFwcGluZyBhbiB1bm1hcHBlZCBibG9jayBhZGRzIGEgc2luZ2xlLWJsb2NrIGV4dGVudC4KKyAqCisgKiBVbm1hcHBpbmcgZmlyc3Qgb3IgbGFzdCBibG9jayBtb2RpZmllcyBleHRlbnQgaW4tcGxhY2UKKyAqICAtIEJ1dCBtYXkgbmVlZCB0byBmaXggcGFyZW50J3Mgc3RhcnRzIHRvbyBpbiBmaXJzdC1ibG9jayBjYXNlCisgKgorICogTWFwcGluZyBhbnkgdW5tYXBwZWQgYmxvY2sgcmVxdWlyZXMgYWRkaW5nIGEgKHNpbmdsZS1ibG9jaykgZXh0ZW50CisgKiBhbmQgaW5zZXJ0aW5nIGludG8gcHJvcGVyIHBvaW50IGluIHRyZWUuCisgKgorICogTW9kaWZ5aW5nICh1bm1hcHBpbmcgb3IgcmVtYXBwaW5nKSBhIGJsb2NrIGluIHRoZSBtaWRkbGUKKyAqIG9mIGFuIGV4dGVudCByZXF1aXJlcyBzcGxpdHRpbmcgdGhlIGV4dGVudC4KKyAqICAtIFJlbWFwcGluZyBjYXNlIHJlcXVpcmVzIG5ldyBzaW5nbGUtYmxvY2sgZXh0ZW50LgorICoKKyAqIFJlbWFwcGluZyBmaXJzdCBvciBsYXN0IGJsb2NrIGFkZHMgYW4gZXh0ZW50LgorICoKKyAqIFdlIHJlYWxseSBuZWVkIGV4dGVudCBhZGRpbmcgdG8gYmUgc21hcnQgYWJvdXQgbWVyZ2luZy4KKyAqLworCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9zZXRfYm1hcChleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJIGJsazY0X3QgbG9naWNhbCwgYmxrNjRfdCBwaHlzaWNhbCwgaW50IGZsYWdzKQoreworCWVycmNvZGVfdAkJZWMsIHJldHZhbCA9IDA7CisJaW50CQkJbWFwcGVkID0gMTsgLyogbG9naWNhbCBpcyBtYXBwZWQ/ICovCisJaW50CQkJb3JpZ19oZWlnaHQ7CisJaW50CQkJZXh0ZW50X3VuaW5pdCA9IDA7CisJaW50CQkJcHJldl91bmluaXQgPSAwOworCWludAkJCW5leHRfdW5pbml0ID0gMDsKKwlpbnQJCQluZXdfdW5pbml0ID0gMDsKKwlpbnQJCQltYXhfbGVuID0gRVhUX0lOSVRfTUFYX0xFTjsKKwlpbnQJCQloYXNfcHJldiwgaGFzX25leHQ7CisJYmxrNjRfdAkJCW9yaWdfbGJsazsKKwlzdHJ1Y3QgZXh0ZW50X3BhdGgJKnBhdGg7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50LCBuZXh0X2V4dGVudCwgcHJldl9leHRlbnQ7CisJc3RydWN0IGV4dDJmc19leHRlbnQJbmV3ZXh0ZW50OworCXN0cnVjdCBleHQyX2V4dGVudF9pbmZvCWluZm87CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworI2lmZGVmIERFQlVHCisJcHJpbnRmKCJzZXRfYm1hcCBpbm8gJXUgbG9nICVsbGQgcGh5cyAlbGxkIGZsYWdzICVkXG4iLAorCSAgICAgICBoYW5kbGUtPmlubywgbG9naWNhbCwgcGh5c2ljYWwsIGZsYWdzKTsKKyNlbmRpZgorCisJaWYgKCEoaGFuZGxlLT5mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwlpZiAoIWhhbmRsZS0+cGF0aCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFOworCisJcGF0aCA9IGhhbmRsZS0+cGF0aCArIGhhbmRsZS0+bGV2ZWw7CisKKwlpZiAoZmxhZ3MgJiBFWFQyX0VYVEVOVF9TRVRfQk1BUF9VTklOSVQpIHsKKwkJbmV3X3VuaW5pdCA9IDE7CisJCW1heF9sZW4gPSBFWFRfVU5JTklUX01BWF9MRU47CisJfQorCisJLyogaWYgKHJlKW1hcHBpbmcsIHNldCB1cCBuZXcgZXh0ZW50IHRvIGluc2VydCAqLworCWlmIChwaHlzaWNhbCkgeworCQluZXdleHRlbnQuZV9sZW4gPSAxOworCQluZXdleHRlbnQuZV9wYmxrID0gcGh5c2ljYWw7CisJCW5ld2V4dGVudC5lX2xibGsgPSBsb2dpY2FsOworCQluZXdleHRlbnQuZV9mbGFncyA9IEVYVDJfRVhURU5UX0ZMQUdTX0xFQUY7CisJCWlmIChuZXdfdW5pbml0KQorCQkJbmV3ZXh0ZW50LmVfZmxhZ3MgfD0gRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUOworCX0KKworCS8qIHNwZWNpYWwgY2FzZSBpZiB0aGUgZXh0ZW50IHRyZWUgaXMgY29tcGxldGVseSBlbXB0eSAqLworCWlmICgoaGFuZGxlLT5tYXhfZGVwdGggPT0gMCkgJiYgKHBhdGgtPmVudHJpZXMgPT0gMCkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLCAwLCAmbmV3ZXh0ZW50KTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwkvKiBzYXZlIG91ciBvcmlnaW5hbCBsb2NhdGlvbiBpbiB0aGUgZXh0ZW50IHRyZWUgKi8KKwlpZiAoKHJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfQ1VSUkVOVCwKKwkJCQkJJmV4dGVudCkpKSB7CisJCWlmIChyZXR2YWwgIT0gRVhUMl9FVF9OT19DVVJSRU5UX05PREUpCisJCQlyZXR1cm4gcmV0dmFsOworCQltZW1zZXQoJmV4dGVudCwgMCwgc2l6ZW9mKGV4dGVudCkpOworCX0KKwlpZiAoKHJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0X2luZm8oaGFuZGxlLCAmaW5mbykpKQorCQlyZXR1cm4gcmV0dmFsOworCW9yaWdfaGVpZ2h0ID0gaW5mby5tYXhfZGVwdGggLSBpbmZvLmN1cnJfbGV2ZWw7CisJb3JpZ19sYmxrID0gZXh0ZW50LmVfbGJsazsKKworCS8qIGdvIHRvIHRoZSBsb2dpY2FsIHNwb3Qgd2Ugd2FudCB0byAocmUvdW4pbWFwICovCisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nb3RvKGhhbmRsZSwgbG9naWNhbCk7CisJaWYgKHJldHZhbCkgeworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfRVhURU5UX05PVF9GT1VORCkgeworCQkJcmV0dmFsID0gMDsKKwkJCW1hcHBlZCA9IDA7CisJCQlpZiAoIXBoeXNpY2FsKSB7CisjaWZkZWYgREVCVUcKKwkJCQlwcmludGYoImJsb2NrICVsbHUgYWxyZWFkeSB1bm1hcHBlZFxuIiwKKwkJCQkJbG9naWNhbCk7CisjZW5kaWYKKwkJCQlnb3RvIGRvbmU7CisJCQl9CisJCX0gZWxzZQorCQkJZ290byBkb25lOworCX0KKworCS8qCisJICogVGhpcyBtYXkgYmUgdGhlIGV4dGVudCAqYmVmb3JlKiB0aGUgcmVxdWVzdGVkIGxvZ2ljYWwsCisJICogaWYgaXQncyBjdXJyZW50bHkgdW5tYXBwZWQuCisJICoKKwkgKiBHZXQgdGhlIHByZXZpb3VzIGFuZCBuZXh0IGxlYWYgZXh0ZW50cywgaWYgdGhleSBhcmUgcHJlc2VudC4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsIEVYVDJfRVhURU5UX0NVUlJFTlQsICZleHRlbnQpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZG9uZTsKKwlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpCisJCWV4dGVudF91bmluaXQgPSAxOworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfTkVYVF9MRUFGLCAmbmV4dF9leHRlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJaGFzX25leHQgPSAwOworCQlpZiAocmV0dmFsICE9IEVYVDJfRVRfRVhURU5UX05PX05FWFQpCisJCQlnb3RvIGRvbmU7CisJfSBlbHNlIHsKKwkJZGJnX3ByaW50X2V4dGVudCgic2V0X2JtYXA6IG5leHRfZXh0ZW50IiwKKwkJCQkgJm5leHRfZXh0ZW50KTsKKwkJaGFzX25leHQgPSAxOworCQlpZiAobmV4dF9leHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkKKwkJCW5leHRfdW5pbml0ID0gMTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nb3RvKGhhbmRsZSwgbG9naWNhbCk7CisJaWYgKHJldHZhbCAmJiByZXR2YWwgIT0gRVhUMl9FVF9FWFRFTlRfTk9UX0ZPVU5EKQorCQlnb3RvIGRvbmU7CisJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9QUkVWX0xFQUYsICZwcmV2X2V4dGVudCk7CisJaWYgKHJldHZhbCkgeworCQloYXNfcHJldiA9IDA7CisJCWlmIChyZXR2YWwgIT0gRVhUMl9FVF9FWFRFTlRfTk9fUFJFVikKKwkJCWdvdG8gZG9uZTsKKwl9IGVsc2UgeworCQloYXNfcHJldiA9IDE7CisJCWRiZ19wcmludF9leHRlbnQoInNldF9ibWFwOiBwcmV2X2V4dGVudCIsCisJCQkJICZwcmV2X2V4dGVudCk7CisJCWlmIChwcmV2X2V4dGVudC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQkJcHJldl91bmluaXQgPSAxOworCX0KKwlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dvdG8oaGFuZGxlLCBsb2dpY2FsKTsKKwlpZiAocmV0dmFsICYmIHJldHZhbCAhPSBFWFQyX0VUX0VYVEVOVF9OT1RfRk9VTkQpCisJCWdvdG8gZG9uZTsKKworCS8qIGNoZWNrIGlmIGFscmVhZHkgcG9pbnRpbmcgdG8gdGhlIHJlcXVlc3RlZCBwaHlzaWNhbCAqLworCWlmIChtYXBwZWQgJiYgKG5ld191bmluaXQgPT0gZXh0ZW50X3VuaW5pdCkgJiYKKwkgICAgKGV4dGVudC5lX3BibGsgKyAobG9naWNhbCAtIGV4dGVudC5lX2xibGspID09IHBoeXNpY2FsKSkgeworI2lmZGVmIERFQlVHCisJCXByaW50ZigicGh5c2ljYWwgYmxvY2sgKGF0ICVsbHUpIHVuY2hhbmdlZFxuIiwgbG9naWNhbCk7CisjZW5kaWYKKwkJZ290byBkb25lOworCX0KKworCWlmICghbWFwcGVkKSB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJtYXBwaW5nIHVubWFwcGVkIGxvZ2ljYWwgYmxvY2sgJWxsdVxuIiwgbG9naWNhbCk7CisjZW5kaWYKKwkJaWYgKChsb2dpY2FsID09IGV4dGVudC5lX2xibGsgKyBleHRlbnQuZV9sZW4pICYmCisJCSAgICAocGh5c2ljYWwgPT0gZXh0ZW50LmVfcGJsayArIGV4dGVudC5lX2xlbikgJiYKKwkJICAgIChuZXdfdW5pbml0ID09IGV4dGVudF91bmluaXQpICYmCisJCSAgICAoKGludCkgZXh0ZW50LmVfbGVuIDwgbWF4X2xlbi0xKSkgeworCQkJZXh0ZW50LmVfbGVuKys7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJfSBlbHNlIGlmICgobG9naWNhbCA9PSBleHRlbnQuZV9sYmxrIC0gMSkgJiYKKwkJCSAgIChwaHlzaWNhbCA9PSBleHRlbnQuZV9wYmxrIC0gMSkgJiYKKwkJCSAgIChuZXdfdW5pbml0ID09IGV4dGVudF91bmluaXQpICYmCisJCQkgICAoKGludCkgZXh0ZW50LmVfbGVuIDwgbWF4X2xlbiAtIDEpKSB7CisJCQlleHRlbnQuZV9sZW4rKzsKKwkJCWV4dGVudC5lX2xibGstLTsKKwkJCWV4dGVudC5lX3BibGstLTsKKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsICZleHRlbnQpOworCQl9IGVsc2UgaWYgKGhhc19uZXh0ICYmCisJCQkgICAobG9naWNhbCA9PSBuZXh0X2V4dGVudC5lX2xibGsgLSAxKSAmJgorCQkJICAgKHBoeXNpY2FsID09IG5leHRfZXh0ZW50LmVfcGJsayAtIDEpICYmCisJCQkgICAobmV3X3VuaW5pdCA9PSBuZXh0X3VuaW5pdCkgJiYKKwkJCSAgICgoaW50KSBuZXh0X2V4dGVudC5lX2xlbiA8IG1heF9sZW4gLSAxKSkgeworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgRVhUMl9FWFRFTlRfTkVYVF9MRUFGLAorCQkJCQkJICAgJm5leHRfZXh0ZW50KTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBkb25lOworCQkJbmV4dF9leHRlbnQuZV9sZW4rKzsKKwkJCW5leHRfZXh0ZW50LmVfbGJsay0tOworCQkJbmV4dF9leHRlbnQuZV9wYmxrLS07CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmbmV4dF9leHRlbnQpOworCQl9IGVsc2UgaWYgKGxvZ2ljYWwgPCBleHRlbnQuZV9sYmxrKQorCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLCAwLCAmbmV3ZXh0ZW50KTsKKwkJZWxzZQorCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLAorCQkJCSAgICAgIEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUiwgJm5ld2V4dGVudCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoaGFuZGxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKwl9IGVsc2UgaWYgKChsb2dpY2FsID09IGV4dGVudC5lX2xibGspICYmIChleHRlbnQuZV9sZW4gPT0gMSkpICB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCIocmUvdW4pbWFwcGluZyBvbmx5IGJsb2NrIGluIGV4dGVudFxuIik7CisjZW5kaWYKKwkJaWYgKHBoeXNpY2FsKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmbmV3ZXh0ZW50KTsKKwkJfSBlbHNlIHsKKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZGVsZXRlKGhhbmRsZSwgMCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZG9uZTsKKwkJCWVjID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQkJaWYgKGVjICE9IEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFKQorCQkJCXJldHZhbCA9IGVjOworCQl9CisKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZG9uZTsKKwl9IGVsc2UgaWYgKGxvZ2ljYWwgPT0gZXh0ZW50LmVfbGJsayArIGV4dGVudC5lX2xlbiAtIDEpICB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCIocmUvdW4pbWFwcGluZyBsYXN0IGJsb2NrIGluIGV4dGVudFxuIik7CisjZW5kaWYKKwkJaWYgKHBoeXNpY2FsKSB7CisJCQlpZiAoaGFzX25leHQgJiYKKwkJCSAgICAobG9naWNhbCA9PSAobmV4dF9leHRlbnQuZV9sYmxrIC0gMSkpICYmCisJCQkgICAgKHBoeXNpY2FsID09IChuZXh0X2V4dGVudC5lX3BibGsgLSAxKSkgJiYKKwkJCSAgICAobmV3X3VuaW5pdCA9PSBuZXh0X3VuaW5pdCkgJiYKKwkJCSAgICAoKGludCkgbmV4dF9leHRlbnQuZV9sZW4gPCBtYXhfbGVuIC0gMSkpIHsKKwkJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dldChoYW5kbGUsCisJCQkJCUVYVDJfRVhURU5UX05FWFRfTEVBRiwgJm5leHRfZXh0ZW50KTsKKwkJCQlpZiAocmV0dmFsKQorCQkJCQlnb3RvIGRvbmU7CisJCQkJbmV4dF9leHRlbnQuZV9sZW4rKzsKKwkJCQluZXh0X2V4dGVudC5lX2xibGstLTsKKwkJCQluZXh0X2V4dGVudC5lX3BibGstLTsKKwkJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLAorCQkJCQkJCSAgICAgICAmbmV4dF9leHRlbnQpOworCQkJCWlmIChyZXR2YWwpCisJCQkJCWdvdG8gZG9uZTsKKwkJCX0gZWxzZQorCQkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfaW5zZXJ0KGhhbmRsZSwKKwkJCQkgICAgICBFWFQyX0VYVEVOVF9JTlNFUlRfQUZURVIsICZuZXdleHRlbnQpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGRvbmU7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZG9uZTsKKwkJCS8qCisJCQkgKiBOb3cgcG9pbnRpbmcgYXQgaW5zZXJ0ZWQgZXh0ZW50OyBtb3ZlIGJhY2sgdG8gcHJldi4KKwkJCSAqCisJCQkgKiBXZSBjYW5ub3QgdXNlIEVYVDJfRVhURU5UX1BSRVYgdG8gZ28gYmFjazsgbm90ZSB0aGUKKwkJCSAqIHN1YnRsZXR5IGluIHRoZSBjb21tZW50IGZvciBmaXhfcGFyZW50cygpLgorCQkJICovCisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2dvdG8oaGFuZGxlLCBsb2dpY2FsKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBkb25lOworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgRVhUMl9FWFRFTlRfQ1VSUkVOVCwKKwkJCQkJCSAgICZleHRlbnQpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGRvbmU7CisJCX0KKwkJZXh0ZW50LmVfbGVuLS07CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsICZleHRlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBkb25lOworCX0gZWxzZSBpZiAobG9naWNhbCA9PSBleHRlbnQuZV9sYmxrKSB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCIocmUvdW4pbWFwcGluZyBmaXJzdCBibG9jayBpbiBleHRlbnRcbiIpOworI2VuZGlmCisJCWlmIChwaHlzaWNhbCkgeworCQkJaWYgKGhhc19wcmV2ICYmCisJCQkgICAgKGxvZ2ljYWwgPT0gKHByZXZfZXh0ZW50LmVfbGJsayArCisJCQkJCSBwcmV2X2V4dGVudC5lX2xlbikpICYmCisJCQkgICAgKHBoeXNpY2FsID09IChwcmV2X2V4dGVudC5lX3BibGsgKworCQkJCQkgIHByZXZfZXh0ZW50LmVfbGVuKSkgJiYKKwkJCSAgICAobmV3X3VuaW5pdCA9PSBwcmV2X3VuaW5pdCkgJiYKKwkJCSAgICAoKGludCkgcHJldl9leHRlbnQuZV9sZW4gPCBtYXhfbGVuLTEpKSB7CisJCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCAKKwkJCQkJRVhUMl9FWFRFTlRfUFJFVl9MRUFGLCAmcHJldl9leHRlbnQpOworCQkJCWlmIChyZXR2YWwpCisJCQkJCWdvdG8gZG9uZTsKKwkJCQlwcmV2X2V4dGVudC5lX2xlbisrOworCQkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsCisJCQkJCQkJICAgICAgICZwcmV2X2V4dGVudCk7CisJCQl9IGVsc2UKKwkJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2luc2VydChoYW5kbGUsCisJCQkJCQkJICAgICAgMCwgJm5ld2V4dGVudCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZG9uZTsKKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoaGFuZGxlKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBkb25lOworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgRVhUMl9FWFRFTlRfTkVYVF9MRUFGLAorCQkJCQkJICAgJmV4dGVudCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZG9uZTsKKwkJfQorCQlleHRlbnQuZV9wYmxrKys7CisJCWV4dGVudC5lX2xibGsrKzsKKwkJZXh0ZW50LmVfbGVuLS07CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsICZleHRlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBkb25lOworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGRvbmU7CisJfSBlbHNlIHsKKwkJX191MzIJc2F2ZV9sZW5ndGg7CisJCWJsazY0X3QJc2F2ZV9sYmxrOworCQlzdHJ1Y3QgZXh0MmZzX2V4dGVudCBzYXZlX2V4dGVudDsKKwkJZXJyY29kZV90IHIyOworCisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCIocmUvdW4pbWFwcGluZyBpbiBtaWRkbGUgb2YgZXh0ZW50XG4iKTsKKyNlbmRpZgorCQkvKiBuZWVkIHRvIHNwbGl0IHRoaXMgZXh0ZW50OyBsYXRlciAqLworCQlzYXZlX2xibGsgPSBleHRlbnQuZV9sYmxrOworCQlzYXZlX2xlbmd0aCA9IGV4dGVudC5lX2xlbjsKKwkJc2F2ZV9leHRlbnQgPSBleHRlbnQ7CisKKwkJLyogc2hvcnRlbiBwcmUtc3BsaXQgZXh0ZW50ICovCisJCWV4dGVudC5lX2xlbiA9IChsb2dpY2FsIC0gZXh0ZW50LmVfbGJsayk7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsICZleHRlbnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBkb25lOworCQkvKiBpbnNlcnQgb3VyIG5ldyBleHRlbnQsIGlmIGFueSAqLworCQlpZiAocGh5c2ljYWwpIHsKKwkJCS8qIGluc2VydCBuZXcgZXh0ZW50IGFmdGVyIGN1cnJlbnQgKi8KKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfaW5zZXJ0KGhhbmRsZSwKKwkJCQkJRVhUMl9FWFRFTlRfSU5TRVJUX0FGVEVSLCAmbmV3ZXh0ZW50KTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQlyMiA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIHNhdmVfbGJsayk7CisJCQkJaWYgKHIyID09IDApCisJCQkJCSh2b2lkKWV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsCisJCQkJCQkJICAgICAgJnNhdmVfZXh0ZW50KTsKKwkJCQlnb3RvIGRvbmU7CisJCQl9CisJCX0KKwkJLyogYWRkIHBvc3Qtc3BsaXQgZXh0ZW50ICovCisJCWV4dGVudC5lX3BibGsgKz0gZXh0ZW50LmVfbGVuICsgMTsKKwkJZXh0ZW50LmVfbGJsayArPSBleHRlbnQuZV9sZW4gKyAxOworCQlleHRlbnQuZV9sZW4gPSBzYXZlX2xlbmd0aCAtIGV4dGVudC5lX2xlbiAtIDE7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfaW5zZXJ0KGhhbmRsZSwKKwkJCQlFWFQyX0VYVEVOVF9JTlNFUlRfQUZURVIsICZleHRlbnQpOworCQlpZiAocmV0dmFsKSB7CisJCQlpZiAocGh5c2ljYWwpIHsKKwkJCQlyMiA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsCisJCQkJCQkJbmV3ZXh0ZW50LmVfbGJsayk7CisJCQkJaWYgKHIyID09IDApCisJCQkJCSh2b2lkKWV4dDJmc19leHRlbnRfZGVsZXRlKGhhbmRsZSwgMCk7CisJCQl9CisJCQlyMiA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIHNhdmVfbGJsayk7CisJCQlpZiAocjIgPT0gMCkKKwkJCQkodm9pZClleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLAorCQkJCQkJCSAgICAmc2F2ZV9leHRlbnQpOworCQkJZ290byBkb25lOworCQl9CisJfQorCitkb25lOgorCS8qIGdldCBoYW5kbGUgYmFjayB0byBpdHMgcG9zaXRpb24gKi8KKwlpZiAob3JpZ19oZWlnaHQgPiBoYW5kbGUtPm1heF9kZXB0aCkKKwkJb3JpZ19oZWlnaHQgPSBoYW5kbGUtPm1heF9kZXB0aDsgLyogSW4gY2FzZSB3ZSBzaG9ydGVuZWQgdGhlIHRyZWUgKi8KKwlleHQyZnNfZXh0ZW50X2dvdG8yKGhhbmRsZSwgb3JpZ19oZWlnaHQsIG9yaWdfbGJsayk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19leHRlbnRfZGVsZXRlKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSwgaW50IGZsYWdzKQoreworCXN0cnVjdCBleHRlbnRfcGF0aAkJKnBhdGg7CisJY2hhciAJCQkJKmNwOworCXN0cnVjdCBleHQzX2V4dGVudF9oZWFkZXIJKmVoOworCWVycmNvZGVfdAkJCXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworCWlmICghKGhhbmRsZS0+ZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fRklMU1lTOworCisJaWYgKCFoYW5kbGUtPnBhdGgpCisJCXJldHVybiBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERTsKKworI2lmZGVmIERFQlVHCisJeworCQlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisKKwkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULAorCQkJCQkgICAmZXh0ZW50KTsKKwkJaWYgKHJldHZhbCA9PSAwKSB7CisJCQlwcmludGYoImV4dGVudCBkZWxldGUgJXUgIiwgaGFuZGxlLT5pbm8pOworCQkJZGJnX3ByaW50X2V4dGVudCgwLCAmZXh0ZW50KTsKKwkJfQorCX0KKyNlbmRpZgorCisJcGF0aCA9IGhhbmRsZS0+cGF0aCArIGhhbmRsZS0+bGV2ZWw7CisJaWYgKCFwYXRoLT5jdXJyKQorCQlyZXR1cm4gRVhUMl9FVF9OT19DVVJSRU5UX05PREU7CisKKwljcCA9IHBhdGgtPmN1cnI7CisKKwlpZiAocGF0aC0+bGVmdCkgeworCQltZW1tb3ZlKGNwLCBjcCArIHNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnRfaWR4KSwKKwkJCXBhdGgtPmxlZnQgKiBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2lkeCkpOworCQlwYXRoLT5sZWZ0LS07CisJfSBlbHNlIHsKKwkJc3RydWN0IGV4dDNfZXh0ZW50X2lkeAkqaXggPSBwYXRoLT5jdXJyOworCQlpeC0tOworCQlwYXRoLT5jdXJyID0gaXg7CisJfQorCWlmICgtLXBhdGgtPmVudHJpZXMgPT0gMCkKKwkJcGF0aC0+Y3VyciA9IDA7CisKKwkvKiBpZiBub24tcm9vdCBub2RlIGhhcyBubyBlbnRyaWVzIGxlZnQsIHJlbW92ZSBpdCAmIHBhcmVudCBwdHIgdG8gaXQgKi8KKwlpZiAocGF0aC0+ZW50cmllcyA9PSAwICYmIGhhbmRsZS0+bGV2ZWwpIHsKKwkJaWYgKCEoZmxhZ3MgJiBFWFQyX0VYVEVOVF9ERUxFVEVfS0VFUF9FTVBUWSkpIHsKKwkJCXN0cnVjdCBleHQyZnNfZXh0ZW50CWV4dGVudDsKKworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9VUCwKKwkJCQkJCQkJJmV4dGVudCk7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisKKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZGVsZXRlKGhhbmRsZSwgZmxhZ3MpOworCQkJaGFuZGxlLT5pbm9kZS0+aV9ibG9ja3MgLT0KKwkJCQkoaGFuZGxlLT5mcy0+YmxvY2tzaXplICoKKwkJCQkgRVhUMkZTX0NMVVNURVJfUkFUSU8oaGFuZGxlLT5mcykpIC8gNTEyOworCQkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGhhbmRsZS0+ZnMsIGhhbmRsZS0+aW5vLAorCQkJCQkJICAgIGhhbmRsZS0+aW5vZGUpOworCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihoYW5kbGUtPmZzLAorCQkJCQkJICBleHRlbnQuZV9wYmxrLCAtMSk7CisJCX0KKwl9IGVsc2UgeworCQllaCA9IChzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyICopIHBhdGgtPmJ1ZjsKKwkJZWgtPmVoX2VudHJpZXMgPSBleHQyZnNfY3B1X3RvX2xlMTYocGF0aC0+ZW50cmllcyk7CisJCWlmICgocGF0aC0+ZW50cmllcyA9PSAwKSAmJiAoaGFuZGxlLT5sZXZlbCA9PSAwKSkgeworCQkJZWgtPmVoX2RlcHRoID0gMDsKKwkJCWhhbmRsZS0+bWF4X2RlcHRoID0gMDsKKwkJfQorCQlyZXR2YWwgPSB1cGRhdGVfcGF0aChoYW5kbGUpOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2V4dGVudF9nZXRfaW5mbyhleHQyX2V4dGVudF9oYW5kbGVfdCBoYW5kbGUsCisJCQkJIHN0cnVjdCBleHQyX2V4dGVudF9pbmZvICppbmZvKQoreworCXN0cnVjdCBleHRlbnRfcGF0aAkJKnBhdGg7CisKKwlFWFQyX0NIRUNLX01BR0lDKGhhbmRsZSwgRVhUMl9FVF9NQUdJQ19FWFRFTlRfSEFORExFKTsKKworCW1lbXNldChpbmZvLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfZXh0ZW50X2luZm8pKTsKKworCXBhdGggPSBoYW5kbGUtPnBhdGggKyBoYW5kbGUtPmxldmVsOworCWlmIChwYXRoKSB7CisJCWlmIChwYXRoLT5jdXJyKQorCQkJaW5mby0+Y3Vycl9lbnRyeSA9ICgoY2hhciAqKSBwYXRoLT5jdXJyIC0gcGF0aC0+YnVmKSAvCisJCQkJc2l6ZW9mKHN0cnVjdCBleHQzX2V4dGVudF9pZHgpOworCQllbHNlCisJCQlpbmZvLT5jdXJyX2VudHJ5ID0gMDsKKwkJaW5mby0+bnVtX2VudHJpZXMgPSBwYXRoLT5lbnRyaWVzOworCQlpbmZvLT5tYXhfZW50cmllcyA9IHBhdGgtPm1heF9lbnRyaWVzOworCQlpbmZvLT5ieXRlc19hdmFpbCA9IChwYXRoLT5tYXhfZW50cmllcyAtIHBhdGgtPmVudHJpZXMpICoKKwkJCXNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnQpOworCX0KKworCWluZm8tPmN1cnJfbGV2ZWwgPSBoYW5kbGUtPmxldmVsOworCWluZm8tPm1heF9kZXB0aCA9IGhhbmRsZS0+bWF4X2RlcHRoOworCWluZm8tPm1heF9sYmxrID0gRVhUX01BWF9FWFRFTlRfTEJMSzsKKwlpbmZvLT5tYXhfcGJsayA9IEVYVF9NQVhfRVhURU5UX1BCTEs7CisJaW5mby0+bWF4X2xlbiA9IEVYVF9JTklUX01BWF9MRU47CisJaW5mby0+bWF4X3VuaW5pdF9sZW4gPSBFWFRfVU5JTklUX01BWF9MRU47CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1bF9sb2cyKHVuc2lnbmVkIGxvbmcgYXJnKQoreworCWludAlsID0gMDsKKworCWFyZyA+Pj0gMTsKKwl3aGlsZSAoYXJnKSB7CisJCWwrKzsKKwkJYXJnID4+PSAxOworCX0KKwlyZXR1cm4gbDsKK30KKworc2l6ZV90IGV4dDJmc19tYXhfZXh0ZW50X2RlcHRoKGV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZSkKK3sKKwlzaXplX3QgaWJsb2NrX3N6ID0gc2l6ZW9mKCgoc3RydWN0IGV4dDJfaW5vZGUgKilOVUxMKS0+aV9ibG9jayk7CisJc2l6ZV90IGlibG9ja19leHRlbnRzID0gKGlibG9ja19zeiAtIHNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyKSkgLworCQkJCXNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnQpOworCXNpemVfdCBleHRlbnRzX3Blcl9ibG9jayA9IChoYW5kbGUtPmZzLT5ibG9ja3NpemUgLQorCQkJCSAgICBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50X2hlYWRlcikpIC8KKwkJCQkgICBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KTsKKwlzdGF0aWMgdW5zaWduZWQgaW50IGxhc3RfYmxvY2tzaXplID0gMDsKKwlzdGF0aWMgc2l6ZV90IGxhc3RfcmVzdWx0ID0gMDsKKworCWlmIChsYXN0X2Jsb2Nrc2l6ZSAmJiBsYXN0X2Jsb2Nrc2l6ZSA9PSBoYW5kbGUtPmZzLT5ibG9ja3NpemUpCisJCXJldHVybiBsYXN0X3Jlc3VsdDsKKworCWxhc3RfcmVzdWx0ID0gMSArICgodWxfbG9nMihFWFRfTUFYX0VYVEVOVF9MQkxLKSAtIHVsX2xvZzIoaWJsb2NrX2V4dGVudHMpKSAvCisJCSAgICB1bF9sb2cyKGV4dGVudHNfcGVyX2Jsb2NrKSk7CisJbGFzdF9ibG9ja3NpemUgPSBoYW5kbGUtPmZzLT5ibG9ja3NpemU7CisJcmV0dXJuIGxhc3RfcmVzdWx0OworfQorCisjaWZkZWYgREVCVUcKKy8qCisgKiBPdmVycmlkZSBkZWJ1Z2ZzJ3MgcHJvbXB0CisgKi8KK2NvbnN0IGNoYXIgKmRlYnVnX3Byb2dfbmFtZSA9ICJ0c3RfZXh0ZW50cyI7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9mYWxsb2NhdGUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZhbGxvY2F0ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzcwOWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9mYWxsb2NhdGUuYwpAQCAtMCwwICsxLDg1OCBAQAorLyoKKyAqIGZhbGxvY2F0ZS5jIC0tIEFsbG9jYXRlIGxhcmdlIGNodW5rcyBvZiBmaWxlLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBPcmFjbGUuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNkZWZpbmUgbWluKGEsIGIpICgoYSkgPCAoYikgPyAoYSkgOiAoYikpCisKKyN1bmRlZiBERUJVRworCisjaWZkZWYgREVCVUcKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikgIGRvIHtwcmludGYoZiwgIyMgYSk7IGZmbHVzaChzdGRvdXQpOyB9IHdoaWxlICgwKQorI2Vsc2UKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikKKyNlbmRpZgorCisvKgorICogRXh0ZW50LWJhc2VkIGZhbGxvY2F0ZSBjb2RlLgorICoKKyAqIEZpbmQgcnVucyBvZiB1bm1hcHBlZCBsb2dpY2FsIGJsb2NrcyBieSBzdGFydGluZyBhdCBzdGFydCBhbmQgd2Fsa2luZyB0aGUKKyAqIGV4dGVudHMgdW50aWwgd2UgcmVhY2ggdGhlIGVuZCBvZiB0aGUgcmFuZ2Ugd2Ugd2FudC4KKyAqCisgKiBGb3IgZWFjaCBydW4gb2YgdW5tYXBwZWQgYmxvY2tzLCB0cnkgdG8gZmluZCB0aGUgZXh0ZW50cyBvbiBlaXRoZXIgc2lkZSBvZgorICogdGhlIHJhbmdlLiAgSWYgdGhlcmUncyBhIGxlZnQgZXh0ZW50IHRoYXQgY2FuIGdyb3cgYnkgYXQgbGVhc3QgYSBjbHVzdGVyIGFuZAorICogdGhlcmUgYXJlIGxibG9ja3MgYmV0d2VlbiBzdGFydCBhbmQgdGhlIG5leHQgbGNsdXN0ZXIgYWZ0ZXIgc3RhcnQsIHNlZSBpZgorICogdGhlcmUncyBhbiBpbXBsaWVkIGNsdXN0ZXIgYWxsb2NhdGlvbjsgaWYgc28sIHplcm8gdGhlIGJsb2NrcyAoaWYgdGhlIGxlZnQKKyAqIGV4dGVudCBpcyBpbml0aWFsaXplZCkgYW5kIGFkanVzdCB0aGUgZXh0ZW50LiAgRGl0dG8gZm9yIHRoZSBibG9ja3MgYmV0d2VlbgorICogdGhlIGVuZCBvZiB0aGUgbGFzdCBmdWxsIGxjbHVzdGVyIGFuZCBlbmQsIGlmIHRoZXJlJ3MgYSByaWdodCBleHRlbnQuCisgKgorICogVHJ5IHRvIGF0dGFjaCBhcyBtdWNoIGFzIHdlIGNhbiB0byB0aGUgbGVmdCBleHRlbnQsIHRoZW4gdHJ5IHRvIGF0dGFjaCBhcworICogbXVjaCBhcyB3ZSBjYW4gdG8gdGhlIHJpZ2h0IGV4dGVudC4gIEZvciB0aGUgcmVtYWluZGVyLCB0cnkgdG8gYWxsb2NhdGUgdGhlCisgKiB3aG9sZSByYW5nZTsgbWFwIGluIHdoYXRldmVyIHdlIGdldDsgYW5kIHJlcGVhdCB1bnRpbCB3ZSdyZSBkb25lLgorICoKKyAqIFRvIGF0dGFjaCB0byBhIGxlZnQgZXh0ZW50LCBmaWd1cmUgb3V0IHRoZSBtYXhpbXVtIGFtb3VudCB3ZSBjYW4gYWRkIHRvIHRoZQorICogZXh0ZW50IGFuZCB0cnkgdG8gYWxsb2NhdGUgdGhhdCBtdWNoLCBhbmQgYXBwZW5kIGlmIHN1Y2Nlc3NmdWwuICBUbyBhdHRhY2gKKyAqIHRvIGEgcmlnaHQgZXh0ZW50LCBmaWd1cmUgb3V0IHRoZSBtYXggd2UgY2FuIGFkZCB0byB0aGUgZXh0ZW50LCB0cnkgdG8KKyAqIGFsbG9jYXRlIHRoYXQgbXVjaCwgYW5kIHByZXBlbmQgaWYgc3VjY2Vzc2Z1bC4KKyAqCisgKiBXZSBuZWVkIGFuIGFsbG9jX3JhbmdlIGZ1bmN0aW9uIHRoYXQgdGVsbHMgdXMgaG93IG11Y2ggd2UgY2FuIGFsbG9jYXRlIGdpdmVuCisgKiBhIG1heGltdW0gbGVuZ3RoIGFuZCBvbmUgb2YgYSBzdWdnZXN0ZWQgc3RhcnQsIGEgZml4ZWQgc3RhcnQsIG9yIGEgZml4ZWQgZW5kCisgKiBwb2ludC4KKyAqCisgKiBFdmVyeSB0aW1lIHdlIG1vZGlmeSB0aGUgZXh0ZW50IHRyZWUgd2UgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUgYmxvY2sgc3RhdHMuCisgKgorICogQXQgdGhlIGVuZCwgdXBkYXRlIGlfYmxvY2tzIGFuZCBpX3NpemUgYXBwcm9wcmlhdGVseS4KKyAqLworCitzdGF0aWMgdm9pZCBkYmdfcHJpbnRfZXh0ZW50KGNvbnN0IGNoYXIgKmRlc2MgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQljb25zdCBzdHJ1Y3QgZXh0MmZzX2V4dGVudCAqZXh0ZW50IEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKyNpZmRlZiBERUJVRworCWlmIChkZXNjKQorCQlwcmludGYoIiVzOiAiLCBkZXNjKTsKKwlwcmludGYoImV4dGVudDogbGJsayAlbGx1LS0lbGx1LCBsZW4gJXUsIHBibGsgJWxsdSwgZmxhZ3M6ICIsCisJICAgICAgIGV4dGVudC0+ZV9sYmxrLCBleHRlbnQtPmVfbGJsayArIGV4dGVudC0+ZV9sZW4gLSAxLAorCSAgICAgICBleHRlbnQtPmVfbGVuLCBleHRlbnQtPmVfcGJsayk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX0xFQUYpCisJCWZwdXRzKCJMRUFGICIsIHN0ZG91dCk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkKKwkJZnB1dHMoIlVOSU5JVCAiLCBzdGRvdXQpOworCWlmIChleHRlbnQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19TRUNPTkRfVklTSVQpCisJCWZwdXRzKCIyTkRfVklTSVQgIiwgc3Rkb3V0KTsKKwlpZiAoIWV4dGVudC0+ZV9mbGFncykKKwkJZnB1dHMoIihub25lKSIsIHN0ZG91dCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKwlmZmx1c2goc3Rkb3V0KTsKKyNlbmRpZgorfQorCitzdGF0aWMgZXJyY29kZV90IGNsYWltX3JhbmdlKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgIGJsazY0X3QgYmxrLCBibGs2NF90IGxlbikKK3sKKwlibGs2NF90CWNsdXN0ZXJzOworCisJY2x1c3RlcnMgPSAobGVuICsgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpIC0gMSkgLworCQkgICBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlKGZzLCBibGssCisJCQljbHVzdGVycyAqIEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSwgKzEpOworCXJldHVybiBleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCBpbm9kZSwgY2x1c3RlcnMpOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dF9mYWxsb2NfaGVscGVyKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgIGludCBmbGFncywKKwkJCQkgICBleHQyX2lub190IGlubywKKwkJCQkgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJICAgZXh0Ml9leHRlbnRfaGFuZGxlX3QgaGFuZGxlLAorCQkJCSAgIHN0cnVjdCBleHQyZnNfZXh0ZW50ICpsZWZ0X2V4dCwKKwkJCQkgICBzdHJ1Y3QgZXh0MmZzX2V4dGVudCAqcmlnaHRfZXh0LAorCQkJCSAgIGJsazY0X3QgcmFuZ2Vfc3RhcnQsIGJsazY0X3QgcmFuZ2VfbGVuLAorCQkJCSAgIGJsazY0X3QgYWxsb2NfZ29hbCkKK3sKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAluZXdleCwgZXg7CisJaW50CQkJb3A7CisJYmxrNjRfdAkJCWZpbGxhYmxlLCBwYmxrLCBwbGVuLCB4LCB5OworCWJsazY0X3QJCQllb2ZfYmxrID0gMCwgY2x1c3Rlcl9maWxsID0gMDsKKwllcnJjb2RlX3QJCWVycjsKKwlibGtfdAkJCW1heF9leHRlbnRfbGVuLCBtYXhfdW5pbml0X2xlbiwgbWF4X2luaXRfbGVuOworCisjaWZkZWYgREVCVUcKKwlwcmludGYoIiVzOiAiLCBfX2Z1bmNfXyk7CisJaWYgKGxlZnRfZXh0KQorCQlwcmludGYoImxlZnRfZXh0PSVsbHUtLSVsbHUsICIsIGxlZnRfZXh0LT5lX2xibGssCisJCSAgICAgICBsZWZ0X2V4dC0+ZV9sYmxrICsgbGVmdF9leHQtPmVfbGVuIC0gMSk7CisJaWYgKHJpZ2h0X2V4dCkKKwkJcHJpbnRmKCJyaWdodF9leHQ9JWxsdS0tJWxsdSwgIiwgcmlnaHRfZXh0LT5lX2xibGssCisJCSAgICAgICByaWdodF9leHQtPmVfbGJsayArIHJpZ2h0X2V4dC0+ZV9sZW4gLSAxKTsKKwlwcmludGYoInN0YXJ0PSVsbHUgbGVuPSVsbHUsIGdvYWw9JWxsdVxuIiwgcmFuZ2Vfc3RhcnQsIHJhbmdlX2xlbiwKKwkgICAgICAgYWxsb2NfZ29hbCk7CisJZmZsdXNoKHN0ZG91dCk7CisjZW5kaWYKKwkvKiBDYW4ndCBjcmVhdGUgaW5pdGlhbGl6ZWQgZXh0ZW50cyBwYXN0IEVPRj8gKi8KKwlpZiAoIShmbGFncyAmIEVYVDJfRkFMTE9DQVRFX0lOSVRfQkVZT05EX0VPRikpCisJCWVvZl9ibGsgPSBFWFQyX0lfU0laRShpbm9kZSkgLyBmcy0+YmxvY2tzaXplOworCisJLyogVGhlIGFsbG9jYXRpb24gZ29hbCBtdXN0IGJlIGFzIGZhciBpbnRvIGEgY2x1c3RlciBhcyByYW5nZV9zdGFydC4gKi8KKwlhbGxvY19nb2FsID0gKGFsbG9jX2dvYWwgJiB+RVhUMkZTX0NMVVNURVJfTUFTSyhmcykpIHwKKwkJICAgICAocmFuZ2Vfc3RhcnQgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSk7CisKKwltYXhfdW5pbml0X2xlbiA9IEVYVF9VTklOSVRfTUFYX0xFTiAmIH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwltYXhfaW5pdF9sZW4gPSBFWFRfSU5JVF9NQVhfTEVOICYgfkVYVDJGU19DTFVTVEVSX01BU0soZnMpOworCisJLyogV2UgbXVzdCBsZW5ndGhlbiB0aGUgbGVmdCBleHRlbnQgdG8gdGhlIGVuZCBvZiB0aGUgY2x1c3RlciAqLworCWlmIChsZWZ0X2V4dCAmJiBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKSB7CisJCS8qIEhvdyBtYW55IG1vcmUgYmxvY2tzIGNhbiBiZSBhdHRhY2hlZCB0byBsZWZ0X2V4dD8gKi8KKwkJaWYgKGxlZnRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQkJZmlsbGFibGUgPSBtYXhfdW5pbml0X2xlbiAtIGxlZnRfZXh0LT5lX2xlbjsKKwkJZWxzZQorCQkJZmlsbGFibGUgPSBtYXhfaW5pdF9sZW4gLSBsZWZ0X2V4dC0+ZV9sZW47CisKKwkJaWYgKGZpbGxhYmxlID4gcmFuZ2VfbGVuKQorCQkJZmlsbGFibGUgPSByYW5nZV9sZW47CisJCWlmIChmaWxsYWJsZSA9PSAwKQorCQkJZ290byBleHBhbmRfcmlnaHQ7CisKKwkJLyoKKwkJICogSWYgcmFuZ2Vfc3RhcnQgaXNuJ3Qgb24gYSBjbHVzdGVyIGJvdW5kYXJ5LCB0cnkgYW4KKwkJICogaW1wbGllZCBjbHVzdGVyIGFsbG9jYXRpb24gZm9yIGxlZnRfZXh0LgorCQkgKi8KKwkJY2x1c3Rlcl9maWxsID0gRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpIC0KKwkJCSAgICAgICAocmFuZ2Vfc3RhcnQgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSk7CisJCWNsdXN0ZXJfZmlsbCAmPSBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJaWYgKGNsdXN0ZXJfZmlsbCA9PSAwKQorCQkJZ290byBleHBhbmRfcmlnaHQ7CisKKwkJaWYgKGNsdXN0ZXJfZmlsbCA+IGZpbGxhYmxlKQorCQkJY2x1c3Rlcl9maWxsID0gZmlsbGFibGU7CisKKwkJLyogRG9uJ3QgZXhwYW5kIGFuIGluaXRpYWxpemVkIGxlZnRfZXh0IGJleW9uZCBFT0YgKi8KKwkJaWYgKCEoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9JTklUX0JFWU9ORF9FT0YpKSB7CisJCQl4ID0gbGVmdF9leHQtPmVfbGJsayArIGxlZnRfZXh0LT5lX2xlbiAtIDE7CisJCQlkYmdfcHJpbnRmKCIlczogbGVuZD0lbGx1IG5ld2xlbmQ9JWxsdSBlb2ZibGs9JWxsdVxuIiwKKwkJCQkgICBfX2Z1bmNfXywgeCwgeCArIGNsdXN0ZXJfZmlsbCwgZW9mX2Jsayk7CisJCQlpZiAoZW9mX2JsayA+PSB4ICYmIGVvZl9ibGsgPD0geCArIGNsdXN0ZXJfZmlsbCkKKwkJCQljbHVzdGVyX2ZpbGwgPSBlb2ZfYmxrIC0geDsKKwkJCWlmIChjbHVzdGVyX2ZpbGwgPT0gMCkKKwkJCQlnb3RvIGV4cGFuZF9yaWdodDsKKwkJfQorCisJCWVyciA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIGxlZnRfZXh0LT5lX2xibGspOworCQlpZiAoZXJyKQorCQkJZ290byBleHBhbmRfcmlnaHQ7CisJCWxlZnRfZXh0LT5lX2xlbiArPSBjbHVzdGVyX2ZpbGw7CisJCXJhbmdlX3N0YXJ0ICs9IGNsdXN0ZXJfZmlsbDsKKwkJcmFuZ2VfbGVuIC09IGNsdXN0ZXJfZmlsbDsKKwkJYWxsb2NfZ29hbCArPSBjbHVzdGVyX2ZpbGw7CisKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyBjbHVzIGxlZnQrIiwgbGVmdF9leHQpOworCQllcnIgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCBsZWZ0X2V4dCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJLyogWmVybyBibG9ja3MgKi8KKwkJaWYgKCEobGVmdF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpKSB7CisJCQllcnIgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBsZWZ0X2V4dC0+ZV9wYmxrICsKKwkJCQkJCSAgbGVmdF9leHQtPmVfbGVuIC0KKwkJCQkJCSAgY2x1c3Rlcl9maWxsLCBjbHVzdGVyX2ZpbGwsCisJCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJfQorCX0KKworZXhwYW5kX3JpZ2h0OgorCS8qIFdlIG11c3QgbGVuZ3RoZW4gdGhlIHJpZ2h0IGV4dGVudCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjbHVzdGVyICovCisJaWYgKHJpZ2h0X2V4dCAmJiBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKSB7CisJCS8qIEhvdyBtdWNoIGNhbiB3ZSBhdHRhY2ggdG8gcmlnaHRfZXh0PyAqLworCQlpZiAocmlnaHRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQkJZmlsbGFibGUgPSBtYXhfdW5pbml0X2xlbiAtIHJpZ2h0X2V4dC0+ZV9sZW47CisJCWVsc2UKKwkJCWZpbGxhYmxlID0gbWF4X2luaXRfbGVuIC0gcmlnaHRfZXh0LT5lX2xlbjsKKworCQlpZiAoZmlsbGFibGUgPiByYW5nZV9sZW4pCisJCQlmaWxsYWJsZSA9IHJhbmdlX2xlbjsKKwkJaWYgKGZpbGxhYmxlID09IDApCisJCQlnb3RvIHRyeV9tZXJnZTsKKworCQkvKgorCQkgKiBJZiByYW5nZV9lbmQgaXNuJ3Qgb24gYSBjbHVzdGVyIGJvdW5kYXJ5LCB0cnkgYW4gaW1wbGllZAorCQkgKiBjbHVzdGVyIGFsbG9jYXRpb24gZm9yIHJpZ2h0X2V4dC4KKwkJICovCisJCWNsdXN0ZXJfZmlsbCA9IHJpZ2h0X2V4dC0+ZV9sYmxrICYgRVhUMkZTX0NMVVNURVJfTUFTSyhmcyk7CisJCWlmIChjbHVzdGVyX2ZpbGwgPT0gMCkKKwkJCWdvdG8gdHJ5X21lcmdlOworCisJCWVyciA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIHJpZ2h0X2V4dC0+ZV9sYmxrKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCisJCWlmIChjbHVzdGVyX2ZpbGwgPiBmaWxsYWJsZSkKKwkJCWNsdXN0ZXJfZmlsbCA9IGZpbGxhYmxlOworCQlyaWdodF9leHQtPmVfbGJsayAtPSBjbHVzdGVyX2ZpbGw7CisJCXJpZ2h0X2V4dC0+ZV9wYmxrIC09IGNsdXN0ZXJfZmlsbDsKKwkJcmlnaHRfZXh0LT5lX2xlbiArPSBjbHVzdGVyX2ZpbGw7CisJCXJhbmdlX2xlbiAtPSBjbHVzdGVyX2ZpbGw7CisKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyBjbHVzIHJpZ2h0KyIsIHJpZ2h0X2V4dCk7CisJCWVyciA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsIHJpZ2h0X2V4dCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJLyogWmVybyBibG9ja3MgaWYgbmVjZXNzYXJ5ICovCisJCWlmICghKHJpZ2h0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkpIHsKKwkJCWVyciA9IGV4dDJmc196ZXJvX2Jsb2NrczIoZnMsIHJpZ2h0X2V4dC0+ZV9wYmxrLAorCQkJCQkJICBjbHVzdGVyX2ZpbGwsIE5VTEwsIE5VTEwpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJfQorCX0KKwordHJ5X21lcmdlOgorCS8qIE1lcmdlIGJvdGggZXh0ZW50cyB0b2dldGhlciwgcGVyaGFwcz8gKi8KKwlpZiAobGVmdF9leHQgJiYgcmlnaHRfZXh0KSB7CisJCS8qIEFyZSB0aGUgdHdvIGV4dGVudHMgbWVyZ2VhYmxlPyAqLworCQlpZiAoKGxlZnRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSAhPQorCQkgICAgKHJpZ2h0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkpCisJCQlnb3RvIHRyeV9sZWZ0OworCisJCS8qIFVzZXIgcmVxdWlyZXMgaW5pdC91bmluaXQgYnV0IGV4dGVudCBpcyB1bmluaXQvaW5pdC4gKi8KKwkJaWYgKCgoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUKSAmJgorCQkgICAgIChsZWZ0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkpIHx8CisJCSAgICAoKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfRk9SQ0VfVU5JTklUKSAmJgorCQkgICAgICEobGVmdF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpKSkKKwkJCWdvdG8gdHJ5X2xlZnQ7CisKKwkJLyoKKwkJICogU2tpcCBpbml0aWFsaXplZCBleHRlbnQgdW5sZXNzIHVzZXIgd2FudHMgdG8gemVybyBibG9ja3MKKwkJICogb3IgcmVxdWlyZXMgaW5pdCBleHRlbnQuCisJCSAqLworCQlpZiAoIShsZWZ0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkgJiYKKwkJICAgICghKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1MpIHx8CisJCSAgICAgIShmbGFncyAmIEVYVDJfRkFMTE9DQVRFX0ZPUkNFX0lOSVQpKSkKKwkJCWdvdG8gdHJ5X2xlZnQ7CisKKwkJLyogV2lsbCBpdCBldmVuIGZpdD8gKi8KKwkJeCA9IGxlZnRfZXh0LT5lX2xlbiArIHJhbmdlX2xlbiArIHJpZ2h0X2V4dC0+ZV9sZW47CisJCWlmICh4ID4gKGxlZnRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUID8KKwkJCQltYXhfdW5pbml0X2xlbiA6IG1heF9pbml0X2xlbikpCisJCQlnb3RvIHRyeV9sZWZ0OworCisJCWVyciA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIGxlZnRfZXh0LT5lX2xibGspOworCQlpZiAoZXJyKQorCQkJZ290byB0cnlfbGVmdDsKKworCQkvKiBBbGxvY2F0ZSBibG9ja3MgKi8KKwkJeSA9IGxlZnRfZXh0LT5lX3BibGsgKyBsZWZ0X2V4dC0+ZV9sZW47CisJCWVyciA9IGV4dDJmc19uZXdfcmFuZ2UoZnMsIEVYVDJfTkVXUkFOR0VfRklYRURfR09BTCB8CisJCQkJICAgICAgIEVYVDJfTkVXUkFOR0VfTUlOX0xFTkdUSCwgeSwKKwkJCQkgICAgICAgcmlnaHRfZXh0LT5lX3BibGsgLSB5ICsgMSwgTlVMTCwKKwkJCQkgICAgICAgJnBibGssICZwbGVuKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gdHJ5X2xlZnQ7CisJCWlmIChwYmxrICsgcGxlbiAhPSByaWdodF9leHQtPmVfcGJsaykKKwkJCWdvdG8gdHJ5X2xlZnQ7CisJCWVyciA9IGNsYWltX3JhbmdlKGZzLCBpbm9kZSwgcGJsaywgcGxlbik7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKworCQkvKiBNb2RpZnkgZXh0ZW50cyAqLworCQlsZWZ0X2V4dC0+ZV9sZW4gPSB4OworCQlkYmdfcHJpbnRfZXh0ZW50KCJleHRfZmFsbG9jIG1lcmdlIiwgbGVmdF9leHQpOworCQllcnIgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCBsZWZ0X2V4dCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWVyciA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfTkVYVF9MRUFGLCAmbmV3ZXgpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWVyciA9IGV4dDJmc19leHRlbnRfZGVsZXRlKGhhbmRsZSwgMCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCSpyaWdodF9leHQgPSAqbGVmdF9leHQ7CisKKwkJLyogWmVybyBibG9ja3MgKi8KKwkJaWYgKCEobGVmdF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpICYmCisJCSAgICAoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9aRVJPX0JMT0NLUykpIHsKKwkJCWVyciA9IGV4dDJmc196ZXJvX2Jsb2NrczIoZnMsIHJhbmdlX3N0YXJ0LCByYW5nZV9sZW4sCisJCQkJCQkgIE5VTEwsIE5VTEwpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJfQorCisJCXJldHVybiAwOworCX0KKwordHJ5X2xlZnQ6CisJLyogRXh0ZW5kIHRoZSBsZWZ0IGV4dGVudCAqLworCWlmIChsZWZ0X2V4dCkgeworCQkvKiBIb3cgbWFueSBtb3JlIGJsb2NrcyBjYW4gYmUgYXR0YWNoZWQgdG8gbGVmdF9leHQ/ICovCisJCWlmIChsZWZ0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkKKwkJCWZpbGxhYmxlID0gbWF4X3VuaW5pdF9sZW4gLSBsZWZ0X2V4dC0+ZV9sZW47CisJCWVsc2UgaWYgKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1MpCisJCQlmaWxsYWJsZSA9IG1heF9pbml0X2xlbiAtIGxlZnRfZXh0LT5lX2xlbjsKKwkJZWxzZQorCQkJZmlsbGFibGUgPSAwOworCisJCS8qIFVzZXIgcmVxdWlyZXMgaW5pdC91bmluaXQgYnV0IGV4dGVudCBpcyB1bmluaXQvaW5pdC4gKi8KKwkJaWYgKCgoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUKSAmJgorCQkgICAgIChsZWZ0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkpIHx8CisJCSAgICAoKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfRk9SQ0VfVU5JTklUKSAmJgorCQkgICAgICEobGVmdF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpKSkKKwkJCWdvdG8gdHJ5X3JpZ2h0OworCisJCWlmIChmaWxsYWJsZSA+IHJhbmdlX2xlbikKKwkJCWZpbGxhYmxlID0gcmFuZ2VfbGVuOworCisJCS8qIERvbid0IGV4cGFuZCBhbiBpbml0aWFsaXplZCBsZWZ0X2V4dCBiZXlvbmQgRU9GICovCisJCXggPSBsZWZ0X2V4dC0+ZV9sYmxrICsgbGVmdF9leHQtPmVfbGVuIC0gMTsKKwkJaWYgKCEoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9JTklUX0JFWU9ORF9FT0YpKSB7CisJCQlkYmdfcHJpbnRmKCIlczogbGVuZD0lbGx1IG5ld2xlbmQ9JWxsdSBlb2ZibGs9JWxsdVxuIiwKKwkJCQkgICBfX2Z1bmNfXywgeCwgeCArIGZpbGxhYmxlLCBlb2ZfYmxrKTsKKwkJCWlmIChlb2ZfYmxrID49IHggJiYgZW9mX2JsayA8PSB4ICsgZmlsbGFibGUpCisJCQkJZmlsbGFibGUgPSBlb2ZfYmxrIC0geDsKKwkJfQorCisJCWlmIChmaWxsYWJsZSA9PSAwKQorCQkJZ290byB0cnlfcmlnaHQ7CisKKwkJLyogVGVzdCBpZiB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgcmFuZ2UgaXMgYWxyZWFkeSBtYXBwZWQ/ICovCisJCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKSB7CisJCQllcnIgPSBleHQyZnNfbWFwX2NsdXN0ZXJfYmxvY2soZnMsIGlubywgaW5vZGUsCisJCQkJCXggKyBmaWxsYWJsZSwgJnBibGspOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJCWlmIChwYmxrKQorCQkJCWZpbGxhYmxlIC09IDEgKyAoKHggKyBmaWxsYWJsZSkKKwkJCQkJCSAmIEVYVDJGU19DTFVTVEVSX01BU0soZnMpKTsKKwkJCWlmIChmaWxsYWJsZSA9PSAwKQorCQkJCWdvdG8gdHJ5X3JpZ2h0OworCQl9CisKKwkJLyogQWxsb2NhdGUgcmFuZ2Ugb2YgYmxvY2tzICovCisJCXggPSBsZWZ0X2V4dC0+ZV9wYmxrICsgbGVmdF9leHQtPmVfbGVuOworCQllcnIgPSBleHQyZnNfbmV3X3JhbmdlKGZzLCBFWFQyX05FV1JBTkdFX0ZJWEVEX0dPQUwgfAorCQkJCUVYVDJfTkVXUkFOR0VfTUlOX0xFTkdUSCwKKwkJCQl4LCBmaWxsYWJsZSwgTlVMTCwgJnBibGssICZwbGVuKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gdHJ5X3JpZ2h0OworCQllcnIgPSBjbGFpbV9yYW5nZShmcywgaW5vZGUsIHBibGssIHBsZW4pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJLyogTW9kaWZ5IGxlZnRfZXh0ICovCisJCWVyciA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIGxlZnRfZXh0LT5lX2xibGspOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCXJhbmdlX3N0YXJ0ICs9IHBsZW47CisJCXJhbmdlX2xlbiAtPSBwbGVuOworCQlsZWZ0X2V4dC0+ZV9sZW4gKz0gcGxlbjsKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyBsZWZ0KyIsIGxlZnRfZXh0KTsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9yZXBsYWNlKGhhbmRsZSwgMCwgbGVmdF9leHQpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWVyciA9IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoaGFuZGxlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCisJCS8qIFplcm8gYmxvY2tzIGlmIG5lY2Vzc2FyeSAqLworCQlpZiAoIShsZWZ0X2V4dC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkgJiYKKwkJICAgIChmbGFncyAmIEVYVDJfRkFMTE9DQVRFX1pFUk9fQkxPQ0tTKSkgeworCQkJZXJyID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgcGJsaywgcGxlbiwgTlVMTCwgTlVMTCk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gb3V0OworCQl9CisJfQorCit0cnlfcmlnaHQ6CisJLyogRXh0ZW5kIHRoZSByaWdodCBleHRlbnQgKi8KKwlpZiAocmlnaHRfZXh0KSB7CisJCS8qIEhvdyBtdWNoIGNhbiB3ZSBhdHRhY2ggdG8gcmlnaHRfZXh0PyAqLworCQlpZiAocmlnaHRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQkJZmlsbGFibGUgPSBtYXhfdW5pbml0X2xlbiAtIHJpZ2h0X2V4dC0+ZV9sZW47CisJCWVsc2UgaWYgKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1MpCisJCQlmaWxsYWJsZSA9IG1heF9pbml0X2xlbiAtIHJpZ2h0X2V4dC0+ZV9sZW47CisJCWVsc2UKKwkJCWZpbGxhYmxlID0gMDsKKworCQkvKiBVc2VyIHJlcXVpcmVzIGluaXQvdW5pbml0IGJ1dCBleHRlbnQgaXMgdW5pbml0L2luaXQuICovCisJCWlmICgoKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfRk9SQ0VfSU5JVCkgJiYKKwkJICAgICAocmlnaHRfZXh0LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSkgfHwKKwkJICAgICgoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9GT1JDRV9VTklOSVQpICYmCisJCSAgICAgIShyaWdodF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpKSkKKwkJCWdvdG8gdHJ5X2FueXdoZXJlOworCisJCWlmIChmaWxsYWJsZSA+IHJhbmdlX2xlbikKKwkJCWZpbGxhYmxlID0gcmFuZ2VfbGVuOworCQlpZiAoZmlsbGFibGUgPT0gMCkKKwkJCWdvdG8gdHJ5X2FueXdoZXJlOworCisJCS8qIFRlc3QgaWYgdGhlIGxlZnQgZWRnZSBvZiB0aGUgcmFuZ2UgaXMgYWxyZWFkeSBtYXBwZWQ/ICovCisJCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKSB7CisJCQllcnIgPSBleHQyZnNfbWFwX2NsdXN0ZXJfYmxvY2soZnMsIGlubywgaW5vZGUsCisJCQkJCXJpZ2h0X2V4dC0+ZV9sYmxrIC0gZmlsbGFibGUsICZwYmxrKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXQ7CisJCQlpZiAocGJsaykKKwkJCQlmaWxsYWJsZSAtPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgLQorCQkJCQkJKChyaWdodF9leHQtPmVfbGJsayAtIGZpbGxhYmxlKQorCQkJCQkJICYgRVhUMkZTX0NMVVNURVJfTUFTSyhmcykpOworCQkJaWYgKGZpbGxhYmxlID09IDApCisJCQkJZ290byB0cnlfYW55d2hlcmU7CisJCX0KKworCQkvKgorCQkgKiBGSVhNRTogSXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCBoYW5kbGUgYWxsb2NhdGluZyBhCisJCSAqIHZhcmlhYmxlIHJhbmdlIGZyb20gYSBmaXhlZCBlbmQgcG9pbnQgaW5zdGVhZCBvZiBqdXN0CisJCSAqIHNraXBwaW5nIHRvIHRoZSBnZW5lcmFsIGFsbG9jYXRvciBpZiB0aGUgd2hvbGUgcmFuZ2UgaXMKKwkJICogdW5hdmFpbGFibGUuCisJCSAqLworCQllcnIgPSBleHQyZnNfbmV3X3JhbmdlKGZzLCBFWFQyX05FV1JBTkdFX0ZJWEVEX0dPQUwgfAorCQkJCUVYVDJfTkVXUkFOR0VfTUlOX0xFTkdUSCwKKwkJCQlyaWdodF9leHQtPmVfcGJsayAtIGZpbGxhYmxlLAorCQkJCWZpbGxhYmxlLCBOVUxMLCAmcGJsaywgJnBsZW4pOworCQlpZiAoZXJyKQorCQkJZ290byB0cnlfYW55d2hlcmU7CisJCWVyciA9IGNsYWltX3JhbmdlKGZzLCBpbm9kZSwKKwkJCSAgICAgIHBibGsgJiB+RVhUMkZTX0NMVVNURVJfTUFTSyhmcyksCisJCQkgICAgICBwbGVuICsgKHBibGsgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSkpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJLyogTW9kaWZ5IHJpZ2h0X2V4dCAqLworCQllcnIgPSBleHQyZnNfZXh0ZW50X2dvdG8oaGFuZGxlLCByaWdodF9leHQtPmVfbGJsayk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJcmFuZ2VfbGVuIC09IHBsZW47CisJCXJpZ2h0X2V4dC0+ZV9sYmxrIC09IHBsZW47CisJCXJpZ2h0X2V4dC0+ZV9wYmxrIC09IHBsZW47CisJCXJpZ2h0X2V4dC0+ZV9sZW4gKz0gcGxlbjsKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyByaWdodCsiLCByaWdodF9leHQpOworCQllcnIgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCByaWdodF9leHQpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWVyciA9IGV4dDJmc19leHRlbnRfZml4X3BhcmVudHMoaGFuZGxlKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCisJCS8qIFplcm8gYmxvY2tzIGlmIG5lY2Vzc2FyeSAqLworCQlpZiAoIShyaWdodF9leHQtPmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19VTklOSVQpICYmCisJCSAgICAoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9aRVJPX0JMT0NLUykpIHsKKwkJCWVyciA9IGV4dDJmc196ZXJvX2Jsb2NrczIoZnMsIHBibGssCisJCQkJCXBsZW4gKyBjbHVzdGVyX2ZpbGwsIE5VTEwsIE5VTEwpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJfQorCX0KKwordHJ5X2FueXdoZXJlOgorCS8qIFRyeSBpbXBsaWVkIGNsdXN0ZXIgYWxsb2Mgb24gdGhlIGxlZnQgYW5kIHJpZ2h0IGVuZHMgKi8KKwlpZiAocmFuZ2VfbGVuID4gMCAmJiAocmFuZ2Vfc3RhcnQgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSkpIHsKKwkJY2x1c3Rlcl9maWxsID0gRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpIC0KKwkJCSAgICAgICAocmFuZ2Vfc3RhcnQgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSk7CisJCWNsdXN0ZXJfZmlsbCAmPSBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJaWYgKGNsdXN0ZXJfZmlsbCA+IHJhbmdlX2xlbikKKwkJCWNsdXN0ZXJfZmlsbCA9IHJhbmdlX2xlbjsKKwkJbmV3ZXguZV9sYmxrID0gcmFuZ2Vfc3RhcnQ7CisJCWVyciA9IGV4dDJmc19tYXBfY2x1c3Rlcl9ibG9jayhmcywgaW5vLCBpbm9kZSwgbmV3ZXguZV9sYmxrLAorCQkJCQkgICAgICAgJnBibGspOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWlmIChwYmxrID09IDApCisJCQlnb3RvIHRyeV9yaWdodF9pbXBsaWVkOworCQluZXdleC5lX3BibGsgPSBwYmxrOworCQluZXdleC5lX2xlbiA9IGNsdXN0ZXJfZmlsbDsKKwkJbmV3ZXguZV9mbGFncyA9IChmbGFncyAmIEVYVDJfRkFMTE9DQVRFX0ZPUkNFX0lOSVQgPyAwIDoKKwkJCQkgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKTsKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyBpY2x1cyBsZWZ0KyIsICZuZXdleCk7CisJCWV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIG5ld2V4LmVfbGJsayk7CisJCWVyciA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfQ1VSUkVOVCwKKwkJCQkJJmV4KTsKKwkJaWYgKGVyciA9PSBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERSkKKwkJCWV4LmVfbGJsayA9IDA7CisJCWVsc2UgaWYgKGVycikKKwkJCWdvdG8gb3V0OworCisJCWlmIChleC5lX2xibGsgPiBuZXdleC5lX2xibGspCisJCQlvcCA9IDA7IC8qIGluc2VydCBiZWZvcmUgKi8KKwkJZWxzZQorCQkJb3AgPSBFWFQyX0VYVEVOVF9JTlNFUlRfQUZURVI7CisJCWRiZ19wcmludGYoIiVzOiBpbnNlcnRpbmcgJXMgbGJsayAlbGx1IG5ld2V4PSVsbHVcbiIsCisJCQkgICBfX2Z1bmNfXywgb3AgPyAiYWZ0ZXIiIDogImJlZm9yZSIsIGV4LmVfbGJsaywKKwkJCSAgIG5ld2V4LmVfbGJsayk7CisJCWVyciA9IGV4dDJmc19leHRlbnRfaW5zZXJ0KGhhbmRsZSwgb3AsICZuZXdleCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJaWYgKCEobmV3ZXguZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCkgJiYKKwkJICAgIChmbGFncyAmIEVYVDJfRkFMTE9DQVRFX1pFUk9fQkxPQ0tTKSkgeworCQkJZXJyID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgbmV3ZXguZV9wYmxrLAorCQkJCQkJICBuZXdleC5lX2xlbiwgTlVMTCwgTlVMTCk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gb3V0OworCQl9CisKKwkJcmFuZ2Vfc3RhcnQgKz0gY2x1c3Rlcl9maWxsOworCQlyYW5nZV9sZW4gLT0gY2x1c3Rlcl9maWxsOworCX0KKwordHJ5X3JpZ2h0X2ltcGxpZWQ6CisJeSA9IHJhbmdlX3N0YXJ0ICsgcmFuZ2VfbGVuOworCWlmIChyYW5nZV9sZW4gPiAwICYmICh5ICYgRVhUMkZTX0NMVVNURVJfTUFTSyhmcykpKSB7CisJCWNsdXN0ZXJfZmlsbCA9IHkgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJaWYgKGNsdXN0ZXJfZmlsbCA+IHJhbmdlX2xlbikKKwkJCWNsdXN0ZXJfZmlsbCA9IHJhbmdlX2xlbjsKKwkJbmV3ZXguZV9sYmxrID0geSAmIH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwkJZXJyID0gZXh0MmZzX21hcF9jbHVzdGVyX2Jsb2NrKGZzLCBpbm8sIGlub2RlLCBuZXdleC5lX2xibGssCisJCQkJCSAgICAgICAmcGJsayk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKwkJaWYgKHBibGsgPT0gMCkKKwkJCWdvdG8gbm9faW1wbGllZDsKKwkJbmV3ZXguZV9wYmxrID0gcGJsazsKKwkJbmV3ZXguZV9sZW4gPSBjbHVzdGVyX2ZpbGw7CisJCW5ld2V4LmVfZmxhZ3MgPSAoZmxhZ3MgJiBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUID8gMCA6CisJCQkJIEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVCk7CisJCWRiZ19wcmludF9leHRlbnQoImV4dF9mYWxsb2MgaWNsdXMgcmlnaHQrIiwgJm5ld2V4KTsKKwkJZXh0MmZzX2V4dGVudF9nb3RvKGhhbmRsZSwgbmV3ZXguZV9sYmxrKTsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULAorCQkJCQkmZXgpOworCQlpZiAoZXJyID09IEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFKQorCQkJZXguZV9sYmxrID0gMDsKKwkJZWxzZSBpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJaWYgKGV4LmVfbGJsayA+IG5ld2V4LmVfbGJsaykKKwkJCW9wID0gMDsgLyogaW5zZXJ0IGJlZm9yZSAqLworCQllbHNlCisJCQlvcCA9IEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUjsKKwkJZGJnX3ByaW50ZigiJXM6IGluc2VydGluZyAlcyBsYmxrICVsbHUgbmV3ZXg9JWxsdVxuIiwKKwkJCSAgIF9fZnVuY19fLCBvcCA/ICJhZnRlciIgOiAiYmVmb3JlIiwgZXguZV9sYmxrLAorCQkJICAgbmV3ZXguZV9sYmxrKTsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLCBvcCwgJm5ld2V4KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCQllcnIgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKworCQlpZiAoIShuZXdleC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSAmJgorCQkgICAgKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1MpKSB7CisJCQllcnIgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBuZXdleC5lX3BibGssCisJCQkJCQkgIG5ld2V4LmVfbGVuLCBOVUxMLCBOVUxMKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXQ7CisJCX0KKworCQlyYW5nZV9sZW4gLT0gY2x1c3Rlcl9maWxsOworCX0KKworbm9faW1wbGllZDoKKwlpZiAocmFuZ2VfbGVuID09IDApCisJCXJldHVybiAwOworCisJbmV3ZXguZV9sYmxrID0gcmFuZ2Vfc3RhcnQ7CisJaWYgKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfRk9SQ0VfSU5JVCkgeworCQltYXhfZXh0ZW50X2xlbiA9IG1heF9pbml0X2xlbjsKKwkJbmV3ZXguZV9mbGFncyA9IDA7CisJfSBlbHNlIHsKKwkJbWF4X2V4dGVudF9sZW4gPSBtYXhfdW5pbml0X2xlbjsKKwkJbmV3ZXguZV9mbGFncyA9IEVYVDJfRVhURU5UX0ZMQUdTX1VOSU5JVDsKKwl9CisJcGJsayA9IGFsbG9jX2dvYWw7CisJeSA9IHJhbmdlX2xlbjsKKwlmb3IgKHggPSAwOyB4IDwgeTspIHsKKwkJY2x1c3Rlcl9maWxsID0gbmV3ZXguZV9sYmxrICYgRVhUMkZTX0NMVVNURVJfTUFTSyhmcyk7CisJCWZpbGxhYmxlID0gbWluKHJhbmdlX2xlbiArIGNsdXN0ZXJfZmlsbCwgbWF4X2V4dGVudF9sZW4pOworCQllcnIgPSBleHQyZnNfbmV3X3JhbmdlKGZzLCAwLCBwYmxrICYgfkVYVDJGU19DTFVTVEVSX01BU0soZnMpLAorCQkJCSAgICAgICBmaWxsYWJsZSwKKwkJCQkgICAgICAgTlVMTCwgJnBibGssICZwbGVuKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCQllcnIgPSBjbGFpbV9yYW5nZShmcywgaW5vZGUsIHBibGssIHBsZW4pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJLyogQ3JlYXRlIGV4dGVudCAqLworCQluZXdleC5lX3BibGsgPSBwYmxrICsgY2x1c3Rlcl9maWxsOworCQluZXdleC5lX2xlbiA9IHBsZW4gLSBjbHVzdGVyX2ZpbGw7CisJCWRiZ19wcmludF9leHRlbnQoImV4dF9mYWxsb2MgY3JlYXRlIiwgJm5ld2V4KTsKKwkJZXh0MmZzX2V4dGVudF9nb3RvKGhhbmRsZSwgbmV3ZXguZV9sYmxrKTsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULAorCQkJCQkmZXgpOworCQlpZiAoZXJyID09IEVYVDJfRVRfTk9fQ1VSUkVOVF9OT0RFKQorCQkJZXguZV9sYmxrID0gMDsKKwkJZWxzZSBpZiAoZXJyKQorCQkJZ290byBvdXQ7CisKKwkJaWYgKGV4LmVfbGJsayA+IG5ld2V4LmVfbGJsaykKKwkJCW9wID0gMDsgLyogaW5zZXJ0IGJlZm9yZSAqLworCQllbHNlCisJCQlvcCA9IEVYVDJfRVhURU5UX0lOU0VSVF9BRlRFUjsKKwkJZGJnX3ByaW50ZigiJXM6IGluc2VydGluZyAlcyBsYmxrICVsbHUgbmV3ZXg9JWxsdVxuIiwKKwkJCSAgIF9fZnVuY19fLCBvcCA/ICJhZnRlciIgOiAiYmVmb3JlIiwgZXguZV9sYmxrLAorCQkJICAgbmV3ZXguZV9sYmxrKTsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLCBvcCwgJm5ld2V4KTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0OworCQllcnIgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dDsKKworCQlpZiAoIShuZXdleC5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKSAmJgorCQkgICAgKGZsYWdzICYgRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1MpKSB7CisJCQllcnIgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBwYmxrLCBwbGVuLCBOVUxMLCBOVUxMKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXQ7CisJCX0KKworCQkvKiBVcGRhdGUgdmFyaWFibGVzIGF0IGVuZCBvZiBsb29wICovCisJCXggKz0gcGxlbiAtIGNsdXN0ZXJfZmlsbDsKKwkJcmFuZ2VfbGVuIC09IHBsZW4gLSBjbHVzdGVyX2ZpbGw7CisJCW5ld2V4LmVfbGJsayArPSBwbGVuIC0gY2x1c3Rlcl9maWxsOworCQlwYmxrICs9IHBsZW4gLSBjbHVzdGVyX2ZpbGw7CisJCWlmIChwYmxrID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJCXBibGsgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwl9CisKK291dDoKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dGVudF9mYWxsb2NhdGUoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBibGs2NF90IGdvYWwsCisJCQkJICAgICAgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBsZW4pCit7CisJZXh0Ml9leHRlbnRfaGFuZGxlX3QJaGFuZGxlOworCXN0cnVjdCBleHQyZnNfZXh0ZW50CWxlZnRfZXh0ZW50LCByaWdodF9leHRlbnQ7CisJc3RydWN0IGV4dDJmc19leHRlbnQJKmxlZnRfYWRqYWNlbnQsICpyaWdodF9hZGphY2VudDsKKwllcnJjb2RlX3QJCWVycjsKKwlibGs2NF90CQkJcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCA9IDAsIGVuZCwgbmV4dDsKKwlibGs2NF90CQkJY291bnQsIGdvYWxfZGlzdGFuY2U7CisKKwllbmQgPSBzdGFydCArIGxlbiAtIDE7CisJZXJyID0gZXh0MmZzX2V4dGVudF9vcGVuMihmcywgaW5vLCBpbm9kZSwgJmhhbmRsZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCS8qCisJICogRmluZCB0aGUgZXh0ZW50IGNsb3Nlc3QgdG8gdGhlIHN0YXJ0IG9mIHRoZSBhbGxvYyByYW5nZS4gIFdlIGRvbid0CisJICogY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBiZWNhdXNlIF9nb3RvKCkgc2V0cyB0aGUgY3VycmVudCBub2RlIHRvIHRoZQorCSAqIG5leHQtbG93ZXN0IGV4dGVudCBpZiAnc3RhcnQnIGlzIGluIGEgaG9sZTsgb3IgdGhlIG5leHQtaGlnaGVzdAorCSAqIGV4dGVudCBpZiB0aGVyZSBhcmVuJ3QgYW55IGxvd2VyIG9uZXM7IG9yIGRvZXNuJ3Qgc2V0IGEgY3VycmVudCBub2RlCisJICogaWYgdGhlcmUgd2FzIGEgcmVhbCBlcnJvciByZWFkaW5nIHRoZSBleHRlbnQgdHJlZS4gIEluIHRoYXQgY2FzZSwKKwkgKiBfZ2V0KCkgd2lsbCBlcnJvciBvdXQuCisJICovCitzdGFydF9hZ2FpbjoKKwlleHQyZnNfZXh0ZW50X2dvdG8oaGFuZGxlLCBzdGFydCk7CisJZXJyID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULCAmbGVmdF9leHRlbnQpOworCWlmIChlcnIgPT0gRVhUMl9FVF9OT19DVVJSRU5UX05PREUpIHsKKwkJYmxrNjRfdCBtYXhfYmxvY2tzID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCisJCWlmIChnb2FsID09IH4wVUxMKQorCQkJZ29hbCA9IGV4dDJmc19maW5kX2lub2RlX2dvYWwoZnMsIGlubywgaW5vZGUsIHN0YXJ0KTsKKwkJZXJyID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsCisJCQkJCQlnb2FsLCBtYXhfYmxvY2tzIC0gMSwgJmdvYWwpOworCQlnb2FsICs9IHN0YXJ0OworCQllcnIgPSBleHRfZmFsbG9jX2hlbHBlcihmcywgZmxhZ3MsIGlubywgaW5vZGUsIGhhbmRsZSwgTlVMTCwKKwkJCQkJTlVMTCwgc3RhcnQsIGxlbiwgZ29hbCk7CisJCWdvdG8gZXJyb3V0OworCX0gZWxzZSBpZiAoZXJyKQorCQlnb3RvIGVycm91dDsKKworCWRiZ19wcmludF9leHRlbnQoImV4dF9mYWxsb2MgaW5pdGlhbCIsICZsZWZ0X2V4dGVudCk7CisJbmV4dCA9IGxlZnRfZXh0ZW50LmVfbGJsayArIGxlZnRfZXh0ZW50LmVfbGVuOworCWlmIChsZWZ0X2V4dGVudC5lX2xibGsgPiBzdGFydCkgeworCQkvKiBUaGUgbmVhcmVzdCBleHRlbnQgd2UgZm91bmQgd2FzIGJleW9uZCBzdGFydD8/PyAqLworCQlnb2FsID0gbGVmdF9leHRlbnQuZV9wYmxrIC0gKGxlZnRfZXh0ZW50LmVfbGJsayAtIHN0YXJ0KTsKKwkJZXJyID0gZXh0X2ZhbGxvY19oZWxwZXIoZnMsIGZsYWdzLCBpbm8sIGlub2RlLCBoYW5kbGUsIE5VTEwsCisJCQkJCSZsZWZ0X2V4dGVudCwgc3RhcnQsCisJCQkJCWxlZnRfZXh0ZW50LmVfbGJsayAtIHN0YXJ0LCBnb2FsKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyb3V0OworCisJCWdvdG8gc3RhcnRfYWdhaW47CisJfSBlbHNlIGlmIChuZXh0ID49IHN0YXJ0KSB7CisJCXJhbmdlX3N0YXJ0ID0gbmV4dDsKKwkJbGVmdF9hZGphY2VudCA9ICZsZWZ0X2V4dGVudDsKKwl9IGVsc2UgeworCQlyYW5nZV9zdGFydCA9IHN0YXJ0OworCQlsZWZ0X2FkamFjZW50ID0gTlVMTDsKKwl9CisJZ29hbCA9IGxlZnRfZXh0ZW50LmVfcGJsayArIChyYW5nZV9zdGFydCAtIGxlZnRfZXh0ZW50LmVfbGJsayk7CisJZ29hbF9kaXN0YW5jZSA9IHJhbmdlX3N0YXJ0IC0gbmV4dDsKKworCWRvIHsKKwkJZXJyID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ORVhUX0xFQUYsCisJCQkJCSAgICZyaWdodF9leHRlbnQpOworCQlkYmdfcHJpbnRmKCIlczogaW5vPSVkIGdldCBuZXh0ID0lZFxuIiwgX19mdW5jX18sIGlubywKKwkJCSAgIChpbnQpZXJyKTsKKwkJZGJnX3ByaW50X2V4dGVudCgiZXh0X2ZhbGxvYyBuZXh0IiwgJnJpZ2h0X2V4dGVudCk7CisJCS8qIFN0b3AgaWYgd2UndmUgc2VlbiB0aGlzIGV4dGVudCBiZWZvcmUgKi8KKwkJaWYgKCFlcnIgJiYgcmlnaHRfZXh0ZW50LmVfbGJsayA8PSBsZWZ0X2V4dGVudC5lX2xibGspCisJCQllcnIgPSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUOworCisJCWlmIChlcnIgJiYgZXJyICE9IEVYVDJfRVRfRVhURU5UX05PX05FWFQpCisJCQlnb3RvIGVycm91dDsKKwkJaWYgKGVyciA9PSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUIHx8CisJCSAgICByaWdodF9leHRlbnQuZV9sYmxrID4gZW5kICsgMSkgeworCQkJcmFuZ2VfZW5kID0gZW5kOworCQkJcmlnaHRfYWRqYWNlbnQgPSBOVUxMOworCQl9IGVsc2UgeworCQkJLyogSGFuZGxlIHJpZ2h0X2V4dGVudC5lX2xibGsgPD0gZW5kICovCisJCQlyYW5nZV9lbmQgPSByaWdodF9leHRlbnQuZV9sYmxrIC0gMTsKKwkJCXJpZ2h0X2FkamFjZW50ID0gJnJpZ2h0X2V4dGVudDsKKwkJfQorCQlpZiAoZXJyICE9IEVYVDJfRVRfRVhURU5UX05PX05FWFQgJiYKKwkJICAgIGdvYWxfZGlzdGFuY2UgPiAocmFuZ2VfZW5kIC0gcmlnaHRfZXh0ZW50LmVfbGJsaykpIHsKKwkJCWdvYWwgPSByaWdodF9leHRlbnQuZV9wYmxrIC0KKwkJCQkJKHJpZ2h0X2V4dGVudC5lX2xibGsgLSByYW5nZV9zdGFydCk7CisJCQlnb2FsX2Rpc3RhbmNlID0gcmFuZ2VfZW5kIC0gcmlnaHRfZXh0ZW50LmVfbGJsazsKKwkJfQorCisJCWRiZ19wcmludGYoIiVzOiBpbm89JWQgcnN0YXJ0PSVsbHUgcmVuZD0lbGx1XG4iLCBfX2Z1bmNfXywgaW5vLAorCQkJICAgcmFuZ2Vfc3RhcnQsIHJhbmdlX2VuZCk7CisJCWVyciA9IDA7CisJCWlmIChyYW5nZV9zdGFydCA8PSByYW5nZV9lbmQpIHsKKwkJCWNvdW50ID0gcmFuZ2VfZW5kIC0gcmFuZ2Vfc3RhcnQgKyAxOworCQkJZXJyID0gZXh0X2ZhbGxvY19oZWxwZXIoZnMsIGZsYWdzLCBpbm8sIGlub2RlLCBoYW5kbGUsCisJCQkJCQlsZWZ0X2FkamFjZW50LCByaWdodF9hZGphY2VudCwKKwkJCQkJCXJhbmdlX3N0YXJ0LCBjb3VudCwgZ29hbCk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gZXJyb3V0OworCQl9CisKKwkJaWYgKHJhbmdlX2VuZCA9PSBlbmQpCisJCQlicmVhazsKKworCQllcnIgPSBleHQyZnNfZXh0ZW50X2dvdG8oaGFuZGxlLCByaWdodF9leHRlbnQuZV9sYmxrKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyb3V0OworCQluZXh0ID0gcmlnaHRfZXh0ZW50LmVfbGJsayArIHJpZ2h0X2V4dGVudC5lX2xlbjsKKwkJbGVmdF9leHRlbnQgPSByaWdodF9leHRlbnQ7CisJCWxlZnRfYWRqYWNlbnQgPSAmbGVmdF9leHRlbnQ7CisJCXJhbmdlX3N0YXJ0ID0gbmV4dDsKKwkJZ29hbCA9IGxlZnRfZXh0ZW50LmVfcGJsayArIChyYW5nZV9zdGFydCAtIGxlZnRfZXh0ZW50LmVfbGJsayk7CisJCWdvYWxfZGlzdGFuY2UgPSByYW5nZV9zdGFydCAtIG5leHQ7CisJfSB3aGlsZSAocmFuZ2VfZW5kIDwgZW5kKTsKKworZXJyb3V0OgorCWV4dDJmc19leHRlbnRfZnJlZShoYW5kbGUpOworCXJldHVybiBlcnI7Cit9CisKKy8qCisgKiBNYXAgcGh5c2ljYWwgYmxvY2tzIHRvIGEgcmFuZ2Ugb2YgbG9naWNhbCBibG9ja3Mgd2l0aGluIGEgZmlsZS4gIFRoZSByYW5nZQorICogb2YgbG9naWNhbCBibG9ja3MgYXJlIChzdGFydCwgc3RhcnQgKyBsZW4pLiAgSWYgdGhlcmUgYXJlIGFscmVhZHkgZXh0ZW50cywKKyAqIHRoZSBtYXBwaW5ncyB3aWxsIHRyeSB0byBleHRlbmQgdGhlIG1hcHBpbmdzOyBvdGhlcndpc2UsIGl0IHdpbGwgdHJ5IHRvIG1hcAorICogc3RhcnQgYXMgaWYgbG9naWNhbCBibG9jayAwIHBvaW50cyB0byBnb2FsLiAgSWYgZ29hbCBpcyB+MFVMTCwgdGhlbiB0aGUgZ29hbAorICogaXMgY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgaW5vZGUgZ3JvdXAuCisgKgorICogRmxhZ3M6CisgKiAtIEVYVDJfRkFMTE9DQVRFX1pFUk9fQkxPQ0tTOiBaZXJvIHRoZSBibG9ja3MgdGhhdCBhcmUgYWxsb2NhdGVkLgorICogLSBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUOiBDcmVhdGUgb25seSBpbml0aWFsaXplZCBleHRlbnRzLgorICogLSBFWFQyX0ZBTExPQ0FURV9GT1JDRV9VTklOSVQ6IENyZWF0ZSBvbmx5IHVuaW5pdGlhbGl6ZWQgZXh0ZW50cy4KKyAqIC0gRVhUMl9GQUxMT0NBVEVfSU5JVF9CRVlPTkRfRU9GOiBDcmVhdGUgZXh0ZW50cyBiZXlvbmQgRU9GLgorICoKKyAqIElmIG5laXRoZXIgRk9SQ0VfSU5JVCBub3IgRk9SQ0VfVU5JTklUIGFyZSBzcGVjaWZpZWQsIHRoaXMgZnVuY3Rpb24gd2lsbAorICogdHJ5IHRvIGV4cGFuZCBhbnkgZXh0ZW50cyBpdCBmaW5kcywgemVyb2luZyBibG9ja3MgYXMgbmVjZXNzYXJ5LgorICovCitlcnJjb2RlX3QgZXh0MmZzX2ZhbGxvY2F0ZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBleHQyX2lub190IGlubywKKwkJCSAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwgYmxrNjRfdCBnb2FsLAorCQkJICAgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBsZW4pCit7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGVfYnVmOworCWJsazY0X3QJCQlibGssIHg7CisJZXJyY29kZV90CQllcnI7CisKKwlpZiAoKChmbGFncyAmIEVYVDJfRkFMTE9DQVRFX0ZPUkNFX0lOSVQpICYmCisJICAgIChmbGFncyAmIEVYVDJfRkFMTE9DQVRFX0ZPUkNFX1VOSU5JVCkpIHx8CisJICAgKGZsYWdzICYgfkVYVDJfRkFMTE9DQVRFX0FMTF9GTEFHUykpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlpZiAobGVuID4gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQlyZXR1cm4gRVhUMl9FVF9CTE9DS19BTExPQ19GQUlMOworCWVsc2UgaWYgKGxlbiA9PSAwKQorCQlyZXR1cm4gMDsKKworCS8qIFJlYWQgaW5vZGUgc3RydWN0dXJlIGlmIG5lY2Vzc2FyeSAqLworCWlmICghaW5vZGUpIHsKKwkJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlX2J1Zik7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQlpbm9kZSA9ICZpbm9kZV9idWY7CisJfQorCWRiZ19wcmludGYoIiVzOiBpbm89JWQgc3RhcnQ9JWxsdSBsZW49JWxsdSBnb2FsPSVsbHVcbiIsIF9fZnVuY19fLCBpbm8sCisJCSAgIHN0YXJ0LCBsZW4sIGdvYWwpOworCisJaWYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSB7CisJCWVyciA9IGV4dGVudF9mYWxsb2NhdGUoZnMsIGZsYWdzLCBpbm8sIGlub2RlLCBnb2FsLCBzdGFydCwgbGVuKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogWFhYOiBBbGxvY2F0ZSBhIGJ1bmNoIG9mIGJsb2NrcyB0aGUgc2xvdyB3YXkgKi8KKwlmb3IgKGJsayA9IHN0YXJ0OyBibGsgPCBzdGFydCArIGxlbjsgYmxrKyspIHsKKwkJZXJyID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIGlub2RlLCBOVUxMLCAwLCBibGssIDAsICZ4KTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJCWlmICh4KQorCQkJY29udGludWU7CisKKwkJZXJyID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIGlub2RlLCBOVUxMLAorCQkJCSAgIEJNQVBfQUxMT0MgfCBCTUFQX1VOSU5JVCB8IEJNQVBfWkVSTywgYmxrLAorCQkJCSAgIDAsICZ4KTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCitvdXQ6CisJaWYgKGlub2RlID09ICZpbm9kZV9idWYpCisJCWV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCBpbm9kZSk7CisJcmV0dXJuIGVycjsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZpZW1hcC5oIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmllbWFwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMzMWJjMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZpZW1hcC5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBGU19JT0NfRklFTUFQIGlvY3RsIGluZnJhc3RydWN0dXJlLgorICoKKyAqIFNvbWUgcG9ydGlvbnMgY29weXJpZ2h0IChDKSAyMDA3IENsdXN0ZXIgRmlsZSBTeXN0ZW1zLCBJbmMKKyAqCisgKiBBdXRob3JzOiBNYXJrIEZhc2hlaCA8bWZhc2hlaEBzdXNlLmNvbT4KKyAqICAgICAgICAgIEthbHBhayBTaGFoIDxrYWxwYWsuc2hhaEBzdW4uY29tPgorICogICAgICAgICAgQW5kcmVhcyBEaWxnZXIgPGFkaWxnZXJAc3VuLmNvbT4KKyAqLworCisjaWZuZGVmIF9MSU5VWF9GSUVNQVBfSAorI2RlZmluZSBfTElOVVhfRklFTUFQX0gKKworc3RydWN0IGZpZW1hcF9leHRlbnQgeworCV9fdTY0IGZlX2xvZ2ljYWw7ICAvKiBsb2dpY2FsIG9mZnNldCBpbiBieXRlcyBmb3IgdGhlIHN0YXJ0IG9mCisJCQkgICAgKiB0aGUgZXh0ZW50IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZSAqLworCV9fdTY0IGZlX3BoeXNpY2FsOyAvKiBwaHlzaWNhbCBvZmZzZXQgaW4gYnl0ZXMgZm9yIHRoZSBzdGFydAorCQkJICAgICogb2YgdGhlIGV4dGVudCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRpc2sgKi8KKwlfX3U2NCBmZV9sZW5ndGg7ICAgLyogbGVuZ3RoIGluIGJ5dGVzIGZvciB0aGlzIGV4dGVudCAqLworCV9fdTY0IGZlX3Jlc2VydmVkNjRbMl07CisJX191MzIgZmVfZmxhZ3M7ICAgIC8qIEZJRU1BUF9FWFRFTlRfKiBmbGFncyBmb3IgdGhpcyBleHRlbnQgKi8KKwlfX3UzMiBmZV9yZXNlcnZlZFszXTsKK307CisKK3N0cnVjdCBmaWVtYXAgeworCV9fdTY0IGZtX3N0YXJ0OwkJLyogbG9naWNhbCBvZmZzZXQgKGluY2x1c2l2ZSkgYXQKKwkJCQkgKiB3aGljaCB0byBzdGFydCBtYXBwaW5nIChpbikgKi8KKwlfX3U2NCBmbV9sZW5ndGg7CS8qIGxvZ2ljYWwgbGVuZ3RoIG9mIG1hcHBpbmcgd2hpY2gKKwkJCQkgKiB1c2Vyc3BhY2Ugd2FudHMgKGluKSAqLworCV9fdTMyIGZtX2ZsYWdzOwkJLyogRklFTUFQX0ZMQUdfKiBmbGFncyBmb3IgcmVxdWVzdCAoaW4vb3V0KSAqLworCV9fdTMyIGZtX21hcHBlZF9leHRlbnRzOy8qIG51bWJlciBvZiBleHRlbnRzIHRoYXQgd2VyZSBtYXBwZWQgKG91dCkgKi8KKwlfX3UzMiBmbV9leHRlbnRfY291bnQ7ICAvKiBzaXplIG9mIGZtX2V4dGVudHMgYXJyYXkgKGluKSAqLworCV9fdTMyIGZtX3Jlc2VydmVkOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50IGZtX2V4dGVudHNbMF07IC8qIGFycmF5IG9mIG1hcHBlZCBleHRlbnRzIChvdXQpICovCit9OworCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKEZTX0lPQ19GSUVNQVApCisjZGVmaW5lIEZTX0lPQ19GSUVNQVAJX0lPV1IoJ2YnLCAxMSwgc3RydWN0IGZpZW1hcCkKKyNlbmRpZgorCisjZGVmaW5lIEZJRU1BUF9NQVhfT0ZGU0VUCSh+MFVMTCkKKworI2RlZmluZSBGSUVNQVBfRkxBR19TWU5DCTB4MDAwMDAwMDEgLyogc3luYyBmaWxlIGRhdGEgYmVmb3JlIG1hcCAqLworI2RlZmluZSBGSUVNQVBfRkxBR19YQVRUUgkweDAwMDAwMDAyIC8qIG1hcCBleHRlbmRlZCBhdHRyaWJ1dGUgdHJlZSAqLworCisjZGVmaW5lIEZJRU1BUF9GTEFHU19DT01QQVQJKEZJRU1BUF9GTEFHX1NZTkMgfCBGSUVNQVBfRkxBR19YQVRUUikKKworI2RlZmluZSBGSUVNQVBfRVhURU5UX0xBU1QJCTB4MDAwMDAwMDEgLyogTGFzdCBleHRlbnQgaW4gZmlsZS4gKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9VTktOT1dOCQkweDAwMDAwMDAyIC8qIERhdGEgbG9jYXRpb24gdW5rbm93bi4gKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9ERUxBTExPQwkJMHgwMDAwMDAwNCAvKiBMb2NhdGlvbiBzdGlsbCBwZW5kaW5nLgorCQkJCQkJICAgICogU2V0cyBFWFRFTlRfVU5LTk9XTi4gKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9FTkNPREVECQkweDAwMDAwMDA4IC8qIERhdGEgY2FuIG5vdCBiZSByZWFkCisJCQkJCQkgICAgKiB3aGlsZSBmcyBpcyB1bm1vdW50ZWQgKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9EQVRBX0VOQ1JZUFRFRAkweDAwMDAwMDgwIC8qIERhdGEgaXMgZW5jcnlwdGVkIGJ5IGZzLgorCQkJCQkJICAgICogU2V0cyBFWFRFTlRfTk9fQllQQVNTLiAqLworI2RlZmluZSBGSUVNQVBfRVhURU5UX05PVF9BTElHTkVECTB4MDAwMDAxMDAgLyogRXh0ZW50IG9mZnNldHMgbWF5IG5vdCBiZQorCQkJCQkJICAgICogYmxvY2sgYWxpZ25lZC4gKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9EQVRBX0lOTElORQkweDAwMDAwMjAwIC8qIERhdGEgbWl4ZWQgd2l0aCBtZXRhZGF0YS4KKwkJCQkJCSAgICAqIFNldHMgRVhURU5UX05PVF9BTElHTkVELiovCisjZGVmaW5lIEZJRU1BUF9FWFRFTlRfREFUQV9UQUlMCQkweDAwMDAwNDAwIC8qIE11bHRpcGxlIGZpbGVzIGluIGJsb2NrLgorCQkJCQkJICAgICogU2V0cyBFWFRFTlRfTk9UX0FMSUdORUQuKi8KKyNkZWZpbmUgRklFTUFQX0VYVEVOVF9VTldSSVRURU4JCTB4MDAwMDA4MDAgLyogU3BhY2UgYWxsb2NhdGVkLCBidXQKKwkJCQkJCSAgICAqIG5vIGRhdGEgKGkuZS4gemVybykuICovCisjZGVmaW5lIEZJRU1BUF9FWFRFTlRfTUVSR0VECQkweDAwMDAxMDAwIC8qIEZpbGUgZG9lcyBub3QgbmF0aXZlbHkKKwkJCQkJCSAgICAqIHN1cHBvcnQgZXh0ZW50cy4gUmVzdWx0CisJCQkJCQkgICAgKiBtZXJnZWQgZm9yIGVmZmljaWVuY3kuICovCisjZGVmaW5lIEZJRU1BUF9FWFRFTlRfU0hBUkVECQkweDAwMDAyMDAwIC8qIFNwYWNlIHNoYXJlZCB3aXRoIG90aGVyCisJCQkJCQkgICAgKiBmaWxlcy4gKi8KKworI2VuZGlmIC8qIF9MSU5VWF9GSUVNQVBfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmlsZWlvLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9maWxlaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTBhN2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmlsZWlvLmMKQEAgLTAsMCArMSw2MTUgQEAKKy8qCisgKiBmaWxlaW8uYyAtLS0gU2ltcGxlIGZpbGUgSS9PIHJvdXRpbmVzCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3N0cnVjdCBleHQyX2ZpbGUgeworCWVycmNvZGVfdAkJbWFnaWM7CisJZXh0Ml9maWxzeXMgCQlmczsKKwlleHQyX2lub190CQlpbm87CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJaW50IAkJCWZsYWdzOworCV9fdTY0CQkJcG9zOworCWJsazY0X3QJCQlibG9ja25vOworCWJsazY0X3QJCQlwaHlzYmxvY2s7CisJY2hhciAJCQkqYnVmOworfTsKKworI2RlZmluZSBCTUFQX0JVRkZFUiAoZmlsZS0+YnVmICsgZnMtPmJsb2Nrc2l6ZSkKKworZXJyY29kZV90IGV4dDJmc19maWxlX29wZW4yKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkgICAgaW50IGZsYWdzLCBleHQyX2ZpbGVfdCAqcmV0KQoreworCWV4dDJfZmlsZV90IAlmaWxlOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwkvKgorCSAqIERvbid0IGxldCBjYWxsZXIgY3JlYXRlIG9yIG9wZW4gYSBmaWxlIGZvciB3cml0aW5nIGlmIHRoZQorCSAqIGZpbGVzeXN0ZW0gaXMgcmVhZC1vbmx5LgorCSAqLworCWlmICgoZmxhZ3MgJiAoRVhUMl9GSUxFX1dSSVRFIHwgRVhUMl9GSUxFX0NSRUFURSkpICYmCisJICAgICEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkKKwkJcmV0dXJuIEVYVDJfRVRfUk9fRklMU1lTOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX2ZpbGUpLCAmZmlsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldChmaWxlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfZmlsZSkpOworCWZpbGUtPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19FWFQyX0ZJTEU7CisJZmlsZS0+ZnMgPSBmczsKKwlmaWxlLT5pbm8gPSBpbm87CisJZmlsZS0+ZmxhZ3MgPSBmbGFncyAmIEVYVDJfRklMRV9NQVNLOworCisJaWYgKGlub2RlKSB7CisJCW1lbWNweSgmZmlsZS0+aW5vZGUsIGlub2RlLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwl9IGVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmZmlsZS0+aW5vZGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBmYWlsOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkoMywgZnMtPmJsb2Nrc2l6ZSwgJmZpbGUtPmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBmYWlsOworCisJKnJldCA9IGZpbGU7CisJcmV0dXJuIDA7CisKK2ZhaWw6CisJaWYgKGZpbGUtPmJ1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmaWxlLT5idWYpOworCWV4dDJmc19mcmVlX21lbSgmZmlsZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19maWxlX29wZW4oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgaW50IGZsYWdzLCBleHQyX2ZpbGVfdCAqcmV0KQoreworCXJldHVybiBleHQyZnNfZmlsZV9vcGVuMihmcywgaW5vLCBOVUxMLCBmbGFncywgcmV0KTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgZmlsZXN5c3RlbSBoYW5kbGUgb2YgYSBmaWxlIGZyb20gdGhlIHN0cnVjdHVyZQorICovCitleHQyX2ZpbHN5cyBleHQyZnNfZmlsZV9nZXRfZnMoZXh0Ml9maWxlX3QgZmlsZSkKK3sKKwlpZiAoZmlsZS0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19FWFQyX0ZJTEUpCisJCXJldHVybiAwOworCXJldHVybiBmaWxlLT5mczsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcG9pbnRlciB0byB0aGUgaW5vZGUgb2YgYSBmaWxlIGZyb20gdGhlIHN0cnVjdHVyZQorICovCitzdHJ1Y3QgZXh0Ml9pbm9kZSAqZXh0MmZzX2ZpbGVfZ2V0X2lub2RlKGV4dDJfZmlsZV90IGZpbGUpCit7CisJaWYgKGZpbGUtPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfRVhUMl9GSUxFKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gJmZpbGUtPmlub2RlOworfQorCisvKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGlub2RlIG51bWJlciBmcm9tIHRoZSBzdHJ1Y3R1cmUgKi8KK2V4dDJfaW5vX3QgZXh0MmZzX2ZpbGVfZ2V0X2lub2RlX251bShleHQyX2ZpbGVfdCBmaWxlKQoreworCWlmIChmaWxlLT5tYWdpYyAhPSBFWFQyX0VUX01BR0lDX0VYVDJfRklMRSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIGZpbGUtPmlubzsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gZmx1c2hlcyB0aGUgZGlydHkgYmxvY2sgYnVmZmVyIG91dCB0byBkaXNrIGlmCisgKiBuZWNlc3NhcnkuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZmlsZV9mbHVzaChleHQyX2ZpbGVfdCBmaWxlKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9maWxzeXMgZnM7CisJaW50CQlyZXRfZmxhZ3M7CisJYmxrNjRfdAkJZG9udGNhcmU7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZpbGUsIEVYVDJfRVRfTUFHSUNfRVhUMl9GSUxFKTsKKwlmcyA9IGZpbGUtPmZzOworCisJaWYgKCEoZmlsZS0+ZmxhZ3MgJiBFWFQyX0ZJTEVfQlVGX1ZBTElEKSB8fAorCSAgICAhKGZpbGUtPmZsYWdzICYgRVhUMl9GSUxFX0JVRl9ESVJUWSkpCisJCXJldHVybiAwOworCisJLyogSXMgdGhpcyBhbiB1bmluaXQgYmxvY2s/ICovCisJaWYgKGZpbGUtPnBoeXNibG9jayAmJiBmaWxlLT5pbm9kZS5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSB7CisJCXJldHZhbCA9IGV4dDJmc19ibWFwMihmcywgZmlsZS0+aW5vLCAmZmlsZS0+aW5vZGUsIEJNQVBfQlVGRkVSLAorCQkJCSAgICAgIDAsIGZpbGUtPmJsb2Nrbm8sICZyZXRfZmxhZ3MsICZkb250Y2FyZSk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlpZiAocmV0X2ZsYWdzICYgQk1BUF9SRVRfVU5JTklUKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfYm1hcDIoZnMsIGZpbGUtPmlubywgJmZpbGUtPmlub2RlLAorCQkJCQkgICAgICBCTUFQX0JVRkZFUiwgQk1BUF9TRVQsCisJCQkJCSAgICAgIGZpbGUtPmJsb2Nrbm8sIDAsCisJCQkJCSAgICAgICZmaWxlLT5waHlzYmxvY2spOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJfQorCisJLyoKKwkgKiBPSywgdGhlIHBoeXNpY2FsIGJsb2NrIGhhc24ndCBiZWVuIGFsbG9jYXRlZCB5ZXQuCisJICogQWxsb2NhdGUgaXQuCisJICovCisJaWYgKCFmaWxlLT5waHlzYmxvY2spIHsKKwkJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBmaWxlLT5pbm8sICZmaWxlLT5pbm9kZSwKKwkJCQkgICAgIEJNQVBfQlVGRkVSLCBmaWxlLT5pbm8gPyBCTUFQX0FMTE9DIDogMCwKKwkJCQkgICAgIGZpbGUtPmJsb2Nrbm8sIDAsICZmaWxlLT5waHlzYmxvY2spOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgZmlsZS0+cGh5c2Jsb2NrLCAxLCBmaWxlLT5idWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlmaWxlLT5mbGFncyAmPSB+RVhUMl9GSUxFX0JVRl9ESVJUWTsKKworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHN5bmNocm9uaXplcyB0aGUgZmlsZSdzIGJsb2NrIGJ1ZmZlciBhbmQgdGhlIGN1cnJlbnQKKyAqIGZpbGUgcG9zaXRpb24sIHBvc3NpYmx5IGludmFsaWRhdGluZyBibG9jayBidWZmZXIgaWYgbmVjZXNzYXJ5CisgKi8KK3N0YXRpYyBlcnJjb2RlX3Qgc3luY19idWZmZXJfcG9zaXRpb24oZXh0Ml9maWxlX3QgZmlsZSkKK3sKKwlibGs2NF90CWI7CisJZXJyY29kZV90CXJldHZhbDsKKworCWIgPSBmaWxlLT5wb3MgLyBmaWxlLT5mcy0+YmxvY2tzaXplOworCWlmIChiICE9IGZpbGUtPmJsb2Nrbm8pIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbGVfZmx1c2goZmlsZSk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlmaWxlLT5mbGFncyAmPSB+RVhUMl9GSUxFX0JVRl9WQUxJRDsKKwl9CisJZmlsZS0+YmxvY2tubyA9IGI7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGxvYWRzIHRoZSBmaWxlJ3MgYmxvY2sgYnVmZmVyIHdpdGggdmFsaWQgZGF0YSBmcm9tCisgKiB0aGUgZGlzayBhcyBuZWNlc3NhcnkuCisgKgorICogSWYgZG9udGZpbGwgaXMgdHJ1ZSwgdGhlbiBza2lwIGluaXRpYWxpemluZyB0aGUgYnVmZmVyIHNpbmNlIHdlJ3JlCisgKiBnb2luZyB0byBiZSByZXBsYWNpbmcgaXRzIGVudGlyZSBjb250ZW50cyBhbnl3YXkuICBJZiBzZXQsIHRoZW4gdGhlCisgKiBmdW5jdGlvbiBiYXNpY2FsbHkgb25seSBzZXRzIGZpbGUtPnBoeXNibG9jayBhbmQgRVhUMl9GSUxFX0JVRl9WQUxJRAorICovCisjZGVmaW5lIERPTlRGSUxMIDEKK3N0YXRpYyBlcnJjb2RlX3QgbG9hZF9idWZmZXIoZXh0Ml9maWxlX3QgZmlsZSwgaW50IGRvbnRmaWxsKQoreworCWV4dDJfZmlsc3lzCWZzID0gZmlsZS0+ZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCXJldF9mbGFnczsKKworCWlmICghKGZpbGUtPmZsYWdzICYgRVhUMl9GSUxFX0JVRl9WQUxJRCkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBmaWxlLT5pbm8sICZmaWxlLT5pbm9kZSwKKwkJCQkgICAgIEJNQVBfQlVGRkVSLCAwLCBmaWxlLT5ibG9ja25vLCAmcmV0X2ZsYWdzLAorCQkJCSAgICAgJmZpbGUtPnBoeXNibG9jayk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlpZiAoIWRvbnRmaWxsKSB7CisJCQlpZiAoZmlsZS0+cGh5c2Jsb2NrICYmCisJCQkgICAgIShyZXRfZmxhZ3MgJiBCTUFQX1JFVF9VTklOSVQpKSB7CisJCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywKKwkJCQkJCQkgICAgICAgZmlsZS0+cGh5c2Jsb2NrLAorCQkJCQkJCSAgICAgICAxLCBmaWxlLT5idWYpOworCQkJCWlmIChyZXR2YWwpCisJCQkJCXJldHVybiByZXR2YWw7CisJCQl9IGVsc2UKKwkJCQltZW1zZXQoZmlsZS0+YnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwkJfQorCQlmaWxlLT5mbGFncyB8PSBFWFQyX0ZJTEVfQlVGX1ZBTElEOworCX0KKwlyZXR1cm4gMDsKK30KKworCitlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfY2xvc2UoZXh0Ml9maWxlX3QgZmlsZSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJRVhUMl9DSEVDS19NQUdJQyhmaWxlLCBFWFQyX0VUX01BR0lDX0VYVDJfRklMRSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9mbHVzaChmaWxlKTsKKworCWlmIChmaWxlLT5idWYpCisJCWV4dDJmc19mcmVlX21lbSgmZmlsZS0+YnVmKTsKKwlleHQyZnNfZnJlZV9tZW0oJmZpbGUpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworCitzdGF0aWMgZXJyY29kZV90CitleHQyZnNfZmlsZV9yZWFkX2lubGluZV9kYXRhKGV4dDJfZmlsZV90IGZpbGUsIHZvaWQgKmJ1ZiwKKwkJCSAgICAgdW5zaWduZWQgaW50IHdhbnRlZCwgdW5zaWduZWQgaW50ICpnb3QpCit7CisJZXh0Ml9maWxzeXMgZnM7CisJZXJyY29kZV90IHJldHZhbDsKKwl1bnNpZ25lZCBpbnQgY291bnQgPSAwOworCXNpemVfdCBzaXplOworCisJZnMgPSBmaWxlLT5mczsKKwlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfZ2V0KGZzLCBmaWxlLT5pbm8sICZmaWxlLT5pbm9kZSwKKwkJCQkJZmlsZS0+YnVmLCAmc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmIChmaWxlLT5wb3MgPj0gc2l6ZSkKKwkJZ290byBvdXQ7CisKKwljb3VudCA9IHNpemUgLSBmaWxlLT5wb3M7CisJaWYgKGNvdW50ID4gd2FudGVkKQorCQljb3VudCA9IHdhbnRlZDsKKwltZW1jcHkoYnVmLCBmaWxlLT5idWYgKyBmaWxlLT5wb3MsIGNvdW50KTsKKwlmaWxlLT5wb3MgKz0gY291bnQ7CisJYnVmID0gKGNoYXIgKikgYnVmICsgY291bnQ7CisKK291dDoKKwlpZiAoZ290KQorCQkqZ290ID0gY291bnQ7CisJcmV0dXJuIHJldHZhbDsKK30KKworCitlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfcmVhZChleHQyX2ZpbGVfdCBmaWxlLCB2b2lkICpidWYsCisJCQkgICB1bnNpZ25lZCBpbnQgd2FudGVkLCB1bnNpZ25lZCBpbnQgKmdvdCkKK3sKKwlleHQyX2ZpbHN5cwlmczsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwl1bnNpZ25lZCBpbnQJc3RhcnQsIGMsIGNvdW50ID0gMDsKKwlfX3U2NAkJbGVmdDsKKwljaGFyCQkqcHRyID0gKGNoYXIgKikgYnVmOworCisJRVhUMl9DSEVDS19NQUdJQyhmaWxlLCBFWFQyX0VUX01BR0lDX0VYVDJfRklMRSk7CisJZnMgPSBmaWxlLT5mczsKKworCS8qIElmIGFuIGlub2RlIGhhcyBpbmxpbmUgZGF0YSwgdGhpbmdzIGdldCBjb21wbGljYXRlZC4gKi8KKwlpZiAoZmlsZS0+aW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpCisJCXJldHVybiBleHQyZnNfZmlsZV9yZWFkX2lubGluZV9kYXRhKGZpbGUsIGJ1Ziwgd2FudGVkLCBnb3QpOworCisJd2hpbGUgKChmaWxlLT5wb3MgPCBFWFQyX0lfU0laRSgmZmlsZS0+aW5vZGUpKSAmJiAod2FudGVkID4gMCkpIHsKKwkJcmV0dmFsID0gc3luY19idWZmZXJfcG9zaXRpb24oZmlsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGZhaWw7CisJCXJldHZhbCA9IGxvYWRfYnVmZmVyKGZpbGUsIDApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBmYWlsOworCisJCXN0YXJ0ID0gZmlsZS0+cG9zICUgZnMtPmJsb2Nrc2l6ZTsKKwkJYyA9IGZzLT5ibG9ja3NpemUgLSBzdGFydDsKKwkJaWYgKGMgPiB3YW50ZWQpCisJCQljID0gd2FudGVkOworCQlsZWZ0ID0gRVhUMl9JX1NJWkUoJmZpbGUtPmlub2RlKSAtIGZpbGUtPnBvcyA7CisJCWlmIChjID4gbGVmdCkKKwkJCWMgPSBsZWZ0OworCisJCW1lbWNweShwdHIsIGZpbGUtPmJ1ZitzdGFydCwgYyk7CisJCWZpbGUtPnBvcyArPSBjOworCQlwdHIgKz0gYzsKKwkJY291bnQgKz0gYzsKKwkJd2FudGVkIC09IGM7CisJfQorCitmYWlsOgorCWlmIChnb3QpCisJCSpnb3QgPSBjb3VudDsKKwlyZXR1cm4gcmV0dmFsOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QKK2V4dDJmc19maWxlX3dyaXRlX2lubGluZV9kYXRhKGV4dDJfZmlsZV90IGZpbGUsIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCSAgICAgIHVuc2lnbmVkIGludCBuYnl0ZXMsIHVuc2lnbmVkIGludCAqd3JpdHRlbikKK3sKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgcmV0dmFsOworCXVuc2lnbmVkIGludCBjb3VudCA9IDA7CisJc2l6ZV90IHNpemU7CisKKwlmcyA9IGZpbGUtPmZzOworCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9nZXQoZnMsIGZpbGUtPmlubywgJmZpbGUtPmlub2RlLAorCQkJCQlmaWxlLT5idWYsICZzaXplKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKGZpbGUtPnBvcyA8IHNpemUpIHsKKwkJY291bnQgPSBuYnl0ZXMgLSBmaWxlLT5wb3M7CisJCW1lbWNweShmaWxlLT5idWYgKyBmaWxlLT5wb3MsIGJ1ZiwgY291bnQpOworCisJCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9zZXQoZnMsIGZpbGUtPmlubywgJmZpbGUtPmlub2RlLAorCQkJCQkJZmlsZS0+YnVmLCBjb3VudCk7CisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9JTkxJTkVfREFUQV9OT19TUEFDRSkKKwkJCWdvdG8gZXhwYW5kOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKworCQlmaWxlLT5wb3MgKz0gY291bnQ7CisKKwkJLyogVXBkYXRlIGlub2RlIHNpemUgKi8KKwkJaWYgKGNvdW50ICE9IDAgJiYgRVhUMl9JX1NJWkUoJmZpbGUtPmlub2RlKSA8IGZpbGUtPnBvcykgeworCQkJZXJyY29kZV90CXJjOworCisJCQlyYyA9IGV4dDJmc19maWxlX3NldF9zaXplMihmaWxlLCBmaWxlLT5wb3MpOworCQkJaWYgKHJldHZhbCA9PSAwKQorCQkJCXJldHZhbCA9IHJjOworCQl9CisKKwkJaWYgKHdyaXR0ZW4pCisJCQkqd3JpdHRlbiA9IGNvdW50OworCQlyZXR1cm4gMDsKKwl9CisKK2V4cGFuZDoKKwlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfZXhwYW5kKGZzLCBmaWxlLT5pbm8pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJLyoKKwkgKiByZWxvYWQgaW5vZGUgYW5kIHJldHVybiBubyBzcGFjZSBlcnJvcgorCSAqCisJICogWFhYOiBmaWxlLT5pbm9kZSBjb3VsZCBiZSBjb3BpZWQgZnJvbSB0aGUgb3V0c2lkZQorCSAqIGluIGV4dDJmc19maWxlX29wZW4yKCkuICBXZSBoYXZlIG5vIHdheSB0byBtb2RpZnkKKwkgKiB0aGUgb3V0c2lkZSBpbm9kZS4KKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgZmlsZS0+aW5vLCAmZmlsZS0+aW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJcmV0dXJuIEVYVDJfRVRfSU5MSU5FX0RBVEFfTk9fU1BBQ0U7Cit9CisKKworZXJyY29kZV90IGV4dDJmc19maWxlX3dyaXRlKGV4dDJfZmlsZV90IGZpbGUsIGNvbnN0IHZvaWQgKmJ1ZiwKKwkJCSAgICB1bnNpZ25lZCBpbnQgbmJ5dGVzLCB1bnNpZ25lZCBpbnQgKndyaXR0ZW4pCit7CisJZXh0Ml9maWxzeXMJZnM7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJdW5zaWduZWQgaW50CXN0YXJ0LCBjLCBjb3VudCA9IDA7CisJY29uc3QgY2hhcgkqcHRyID0gKGNvbnN0IGNoYXIgKikgYnVmOworCisJRVhUMl9DSEVDS19NQUdJQyhmaWxlLCBFWFQyX0VUX01BR0lDX0VYVDJfRklMRSk7CisJZnMgPSBmaWxlLT5mczsKKworCWlmICghKGZpbGUtPmZsYWdzICYgRVhUMl9GSUxFX1dSSVRFKSkKKwkJcmV0dXJuIEVYVDJfRVRfRklMRV9STzsKKworCS8qIElmIGFuIGlub2RlIGhhcyBpbmxpbmUgZGF0YSwgdGhpbmdzIGdldCBjb21wbGljYXRlZC4gKi8KKwlpZiAoZmlsZS0+aW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbGVfd3JpdGVfaW5saW5lX2RhdGEoZmlsZSwgYnVmLCBuYnl0ZXMsCisJCQkJCQkgICAgICAgd3JpdHRlbik7CisJCWlmIChyZXR2YWwgIT0gRVhUMl9FVF9JTkxJTkVfREFUQV9OT19TUEFDRSkKKwkJCXJldHVybiByZXR2YWw7CisJCS8qIGZhbGwgdGhyb3VnaCB0byByZWFkIGRhdGEgZnJvbSB0aGUgYmxvY2sgKi8KKwkJcmV0dmFsID0gMDsKKwl9CisKKwl3aGlsZSAobmJ5dGVzID4gMCkgeworCQlyZXR2YWwgPSBzeW5jX2J1ZmZlcl9wb3NpdGlvbihmaWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZmFpbDsKKworCQlzdGFydCA9IGZpbGUtPnBvcyAlIGZzLT5ibG9ja3NpemU7CisJCWMgPSBmcy0+YmxvY2tzaXplIC0gc3RhcnQ7CisJCWlmIChjID4gbmJ5dGVzKQorCQkJYyA9IG5ieXRlczsKKworCQkvKgorCQkgKiBXZSBvbmx5IG5lZWQgdG8gZG8gYSByZWFkLW1vZGlmeS11cGRhdGUgY3ljbGUgaWYKKwkJICogd2UncmUgZG9pbmcgYSBwYXJ0aWFsIHdyaXRlLgorCQkgKi8KKwkJcmV0dmFsID0gbG9hZF9idWZmZXIoZmlsZSwgKGMgPT0gZnMtPmJsb2Nrc2l6ZSkpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBmYWlsOworCisJCS8qCisJCSAqIE9LLCB0aGUgcGh5c2ljYWwgYmxvY2sgaGFzbid0IGJlZW4gYWxsb2NhdGVkIHlldC4KKwkJICogQWxsb2NhdGUgaXQuCisJCSAqLworCQlpZiAoIWZpbGUtPnBoeXNibG9jaykgeworCQkJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBmaWxlLT5pbm8sICZmaWxlLT5pbm9kZSwKKwkJCQkJICAgICAgQk1BUF9CVUZGRVIsCisJCQkJCSAgICAgIGZpbGUtPmlubyA/IEJNQVBfQUxMT0MgOiAwLAorCQkJCQkgICAgICBmaWxlLT5ibG9ja25vLCAwLAorCQkJCQkgICAgICAmZmlsZS0+cGh5c2Jsb2NrKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBmYWlsOworCQl9CisKKwkJZmlsZS0+ZmxhZ3MgfD0gRVhUMl9GSUxFX0JVRl9ESVJUWTsKKwkJbWVtY3B5KGZpbGUtPmJ1ZitzdGFydCwgcHRyLCBjKTsKKwkJZmlsZS0+cG9zICs9IGM7CisJCXB0ciArPSBjOworCQljb3VudCArPSBjOworCQluYnl0ZXMgLT0gYzsKKwl9CisKK2ZhaWw6CisJLyogVXBkYXRlIGlub2RlIHNpemUgKi8KKwlpZiAoY291bnQgIT0gMCAmJiBFWFQyX0lfU0laRSgmZmlsZS0+aW5vZGUpIDwgZmlsZS0+cG9zKSB7CisJCWVycmNvZGVfdAlyYzsKKworCQlyYyA9IGV4dDJmc19maWxlX3NldF9zaXplMihmaWxlLCBmaWxlLT5wb3MpOworCQlpZiAocmV0dmFsID09IDApCisJCQlyZXR2YWwgPSByYzsKKwl9CisKKwlpZiAod3JpdHRlbikKKwkJKndyaXR0ZW4gPSBjb3VudDsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfbGxzZWVrKGV4dDJfZmlsZV90IGZpbGUsIF9fdTY0IG9mZnNldCwKKwkJCSAgICBpbnQgd2hlbmNlLCBfX3U2NCAqcmV0X3BvcykKK3sKKwlFWFQyX0NIRUNLX01BR0lDKGZpbGUsIEVYVDJfRVRfTUFHSUNfRVhUMl9GSUxFKTsKKworCWlmICh3aGVuY2UgPT0gRVhUMl9TRUVLX1NFVCkKKwkJZmlsZS0+cG9zID0gb2Zmc2V0OworCWVsc2UgaWYgKHdoZW5jZSA9PSBFWFQyX1NFRUtfQ1VSKQorCQlmaWxlLT5wb3MgKz0gb2Zmc2V0OworCWVsc2UgaWYgKHdoZW5jZSA9PSBFWFQyX1NFRUtfRU5EKQorCQlmaWxlLT5wb3MgPSBFWFQyX0lfU0laRSgmZmlsZS0+aW5vZGUpICsgb2Zmc2V0OworCWVsc2UKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmIChyZXRfcG9zKQorCQkqcmV0X3BvcyA9IGZpbGUtPnBvczsKKworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfbHNlZWsoZXh0Ml9maWxlX3QgZmlsZSwgZXh0Ml9vZmZfdCBvZmZzZXQsCisJCQkgICAgaW50IHdoZW5jZSwgZXh0Ml9vZmZfdCAqcmV0X3BvcykKK3sKKwlfX3U2NAkJbG9mZnNldCwgcmV0X2xvZmZzZXQgPSAwOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlsb2Zmc2V0ID0gb2Zmc2V0OworCXJldHZhbCA9IGV4dDJmc19maWxlX2xsc2VlayhmaWxlLCBsb2Zmc2V0LCB3aGVuY2UsICZyZXRfbG9mZnNldCk7CisJaWYgKHJldF9wb3MpCisJCSpyZXRfcG9zID0gKGV4dDJfb2ZmX3QpIHJldF9sb2Zmc2V0OworCXJldHVybiByZXR2YWw7Cit9CisKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgYWNjb3JkaW5nIHRvIHRoZSBpbm9kZQorICovCitlcnJjb2RlX3QgZXh0MmZzX2ZpbGVfZ2V0X2xzaXplKGV4dDJfZmlsZV90IGZpbGUsIF9fdTY0ICpyZXRfc2l6ZSkKK3sKKwlpZiAoZmlsZS0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19FWFQyX0ZJTEUpCisJCXJldHVybiBFWFQyX0VUX01BR0lDX0VYVDJfRklMRTsKKwkqcmV0X3NpemUgPSBFWFQyX0lfU0laRSgmZmlsZS0+aW5vZGUpOworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBmaWxlLCBhY2NvcmRpbmcgdG8gdGhlIGlub2RlCisgKi8KK2V4dDJfb2ZmX3QgZXh0MmZzX2ZpbGVfZ2V0X3NpemUoZXh0Ml9maWxlX3QgZmlsZSkKK3sKKwlfX3U2NAlzaXplOworCisJaWYgKGV4dDJmc19maWxlX2dldF9sc2l6ZShmaWxlLCAmc2l6ZSkpCisJCXJldHVybiAwOworCWlmICgoc2l6ZSA+PiAzMikgIT0gMCkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIHNpemU7Cit9CisKKy8qIFplcm8gdGhlIHBhcnRzIG9mIHRoZSBsYXN0IGJsb2NrIHRoYXQgYXJlIHBhc3QgRU9GLiAqLworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfZmlsZV96ZXJvX3Bhc3Rfb2Zmc2V0KGV4dDJfZmlsZV90IGZpbGUsCisJCQkJCSAgICAgIGV4dDJfb2ZmNjRfdCBvZmZzZXQpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBmaWxlLT5mczsKKwljaGFyICpiID0gTlVMTDsKKwlleHQyX29mZjY0X3Qgb2ZmID0gb2Zmc2V0ICUgZnMtPmJsb2Nrc2l6ZTsKKwlibGs2NF90IGJsazsKKwlpbnQgcmV0X2ZsYWdzOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAob2ZmID09IDApCisJCXJldHVybiAwOworCisJcmV0dmFsID0gc3luY19idWZmZXJfcG9zaXRpb24oZmlsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCS8qIElzIHRoZXJlIGFuIGluaXRpYWxpemVkIGJsb2NrIGF0IHRoZSBlbmQ/ICovCisJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBmaWxlLT5pbm8sIE5VTEwsIE5VTEwsIDAsCisJCQkgICAgICBvZmZzZXQgLyBmcy0+YmxvY2tzaXplLCAmcmV0X2ZsYWdzLCAmYmxrKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWlmICgoYmxrID09IDApIHx8IChyZXRfZmxhZ3MgJiBCTUFQX1JFVF9VTklOSVQpKQorCQlyZXR1cm4gMDsKKworCS8qIFplcm8gdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2sgKi8KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmYik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCS8qIFJlYWQvemVyby93cml0ZSBibG9jayAqLworCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgMSwgYik7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQ7CisKKwltZW1zZXQoYiArIG9mZiwgMCwgZnMtPmJsb2Nrc2l6ZSAtIG9mZik7CisKKwlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgYmxrLCAxLCBiKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmYik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgdHJ1bmNhdGluZyBpdCBpZiBuZWNlc3NhcnkKKyAqCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZmlsZV9zZXRfc2l6ZTIoZXh0Ml9maWxlX3QgZmlsZSwgZXh0Ml9vZmY2NF90IHNpemUpCit7CisJZXh0Ml9vZmY2NF90CW9sZF9zaXplOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJb2xkX3RydW5jYXRlLCB0cnVuY2F0ZV9ibG9jazsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZmlsZSwgRVhUMl9FVF9NQUdJQ19FWFQyX0ZJTEUpOworCisJaWYgKHNpemUgJiYgZXh0MmZzX2ZpbGVfYmxvY2tfb2Zmc2V0X3Rvb19iaWcoZmlsZS0+ZnMsICZmaWxlLT5pbm9kZSwKKwkJCQkJKHNpemUgLSAxKSAvIGZpbGUtPmZzLT5ibG9ja3NpemUpKQorCQlyZXR1cm4gRVhUMl9FVF9GSUxFX1RPT19CSUc7CisJdHJ1bmNhdGVfYmxvY2sgPSAoKHNpemUgKyBmaWxlLT5mcy0+YmxvY2tzaXplIC0gMSkgPj4KKwkJCSAgRVhUMl9CTE9DS19TSVpFX0JJVFMoZmlsZS0+ZnMtPnN1cGVyKSk7CisJb2xkX3NpemUgPSBFWFQyX0lfU0laRSgmZmlsZS0+aW5vZGUpOworCW9sZF90cnVuY2F0ZSA9ICgob2xkX3NpemUgKyBmaWxlLT5mcy0+YmxvY2tzaXplIC0gMSkgPj4KKwkJICAgICAgRVhUMl9CTE9DS19TSVpFX0JJVFMoZmlsZS0+ZnMtPnN1cGVyKSk7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZmlsZS0+ZnMsICZmaWxlLT5pbm9kZSwgc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmIChmaWxlLT5pbm8pIHsKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZpbGUtPmZzLCBmaWxlLT5pbm8sICZmaWxlLT5pbm9kZSk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHZhbCA9IGV4dDJmc19maWxlX3plcm9fcGFzdF9vZmZzZXQoZmlsZSwgc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmICh0cnVuY2F0ZV9ibG9jayA+PSBvbGRfdHJ1bmNhdGUpCisJCXJldHVybiAwOworCisJcmV0dXJuIGV4dDJmc19wdW5jaChmaWxlLT5mcywgZmlsZS0+aW5vLCAmZmlsZS0+aW5vZGUsIDAsCisJCQkgICAgdHJ1bmNhdGVfYmxvY2ssIH4wVUxMKTsKK30KKworZXJyY29kZV90IGV4dDJmc19maWxlX3NldF9zaXplKGV4dDJfZmlsZV90IGZpbGUsIGV4dDJfb2ZmX3Qgc2l6ZSkKK3sKKwlyZXR1cm4gZXh0MmZzX2ZpbGVfc2V0X3NpemUyKGZpbGUsIHNpemUpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmluZGRldi5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmluZGRldi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMTYwOGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9maW5kZGV2LmMKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBmaW5kZGV2LmMgLS0gdGhpcyByb3V0aW5lIGF0dGVtcHRzIHRvIGZpbmQgYSBwYXJ0aWN1bGFyIGRldmljZSBpbgorICogCS9kZXYKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfTUtERVZfSAorI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorCitzdHJ1Y3QgZGlyX2xpc3QgeworCWNoYXIJKm5hbWU7CisJc3RydWN0IGRpcl9saXN0ICpuZXh0OworfTsKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBlbnRyeSB0byB0aGUgZGlyZWN0b3J5IGxpc3QKKyAqLworc3RhdGljIHZvaWQgYWRkX3RvX2Rpcmxpc3QoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRpcl9saXN0ICoqbGlzdCkKK3sKKwlzdHJ1Y3QgZGlyX2xpc3QgKmRwOworCisJZHAgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBkaXJfbGlzdCkpOworCWlmICghZHApCisJCXJldHVybjsKKwlkcC0+bmFtZSA9IG1hbGxvYyhzdHJsZW4obmFtZSkrMSk7CisJaWYgKCFkcC0+bmFtZSkgeworCQlmcmVlKGRwKTsKKwkJcmV0dXJuOworCX0KKwlzdHJjcHkoZHAtPm5hbWUsIG5hbWUpOworCWRwLT5uZXh0ID0gKmxpc3Q7CisJKmxpc3QgPSBkcDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gZnJlZXMgYSBkaXJlY3RvcnkgbGlzdAorICovCitzdGF0aWMgdm9pZCBmcmVlX2Rpcmxpc3Qoc3RydWN0IGRpcl9saXN0ICoqbGlzdCkKK3sKKwlzdHJ1Y3QgZGlyX2xpc3QgKmRwLCAqbmV4dDsKKworCWZvciAoZHAgPSAqbGlzdDsgZHA7IGRwID0gbmV4dCkgeworCQluZXh0ID0gZHAtPm5leHQ7CisJCWZyZWUoZHAtPm5hbWUpOworCQlmcmVlKGRwKTsKKwl9CisJKmxpc3QgPSAwOworfQorCitzdGF0aWMgaW50IHNjYW5fZGlyKGNoYXIgKmRpcm5hbWUsIGRldl90IGRldmljZSwgc3RydWN0IGRpcl9saXN0ICoqbGlzdCwKKwkJICAgIGNoYXIgKipyZXRfcGF0aCkKK3sKKwlESVIJKmRpcjsKKwlzdHJ1Y3QgZGlyZW50ICpkcDsKKwljaGFyCXBhdGhbMTAyNF0sICpjcDsKKwlpbnQJZGlybGVuOworCXN0cnVjdCBzdGF0IHN0OworCisJZGlybGVuID0gc3RybGVuKGRpcm5hbWUpOworCWlmICgoZGlyID0gb3BlbmRpcihkaXJuYW1lKSkgPT0gTlVMTCkKKwkJcmV0dXJuIGVycm5vOworCWRwID0gcmVhZGRpcihkaXIpOworCXdoaWxlIChkcCkgeworCQlpZiAoZGlybGVuICsgc3RybGVuKGRwLT5kX25hbWUpICsgMiA+PSBzaXplb2YocGF0aCkpCisJCQlnb3RvIHNraXBfdG9fbmV4dDsKKwkJaWYgKGRwLT5kX25hbWVbMF0gPT0gJy4nICYmCisJCSAgICAoKGRwLT5kX25hbWVbMV0gPT0gMCkgfHwKKwkJICAgICAoKGRwLT5kX25hbWVbMV0gPT0gJy4nKSAmJiAoZHAtPmRfbmFtZVsyXSA9PSAwKSkpKQorCQkJZ290byBza2lwX3RvX25leHQ7CisJCXNwcmludGYocGF0aCwgIiVzLyVzIiwgZGlybmFtZSwgZHAtPmRfbmFtZSk7CisJCWlmIChzdGF0KHBhdGgsICZzdCkgPCAwKQorCQkJZ290byBza2lwX3RvX25leHQ7CisJCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKQorCQkJYWRkX3RvX2Rpcmxpc3QocGF0aCwgbGlzdCk7CisJCWlmIChTX0lTQkxLKHN0LnN0X21vZGUpICYmIHN0LnN0X3JkZXYgPT0gZGV2aWNlKSB7CisJCQljcCA9IG1hbGxvYyhzdHJsZW4ocGF0aCkrMSk7CisJCQlpZiAoIWNwKSB7CisJCQkJY2xvc2VkaXIoZGlyKTsKKwkJCQlyZXR1cm4gRU5PTUVNOworCQkJfQorCQkJc3RyY3B5KGNwLCBwYXRoKTsKKwkJCSpyZXRfcGF0aCA9IGNwOworCQkJZ290byBzdWNjZXNzOworCQl9CisJc2tpcF90b19uZXh0OgorCQlkcCA9IHJlYWRkaXIoZGlyKTsKKwl9CitzdWNjZXNzOgorCWNsb3NlZGlyKGRpcik7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZpbmRzIHRoZSBwYXRobmFtZSB0byBhIGJsb2NrIGRldmljZSB3aXRoIGEgZ2l2ZW4KKyAqIGRldmljZSBudW1iZXIuICBJdCByZXR1cm5zIGEgcG9pbnRlciB0byBhbGxvY2F0ZWQgbWVtb3J5IHRvIHRoZQorICogcGF0aG5hbWUgb24gc3VjY2VzcywgYW5kIE5VTEwgb24gZmFpbHVyZS4KKyAqLworY2hhciAqZXh0MmZzX2ZpbmRfYmxvY2tfZGV2aWNlKGRldl90IGRldmljZSkKK3sKKwlzdHJ1Y3QgZGlyX2xpc3QgKmxpc3QgPSAwLCAqbmV3X2xpc3QgPSAwOworCXN0cnVjdCBkaXJfbGlzdCAqY3VycmVudDsKKwljaGFyCSpyZXRfcGF0aCA9IDA7CisJaW50ICAgIGxldmVsID0gMDsKKworCS8qCisJICogQWRkIHRoZSBzdGFydGluZyBkaXJlY3RvcmllcyB0byBzZWFyY2guLi4KKwkgKi8KKwlhZGRfdG9fZGlybGlzdCgiL2RldmljZXMiLCAmbGlzdCk7CisJYWRkX3RvX2Rpcmxpc3QoIi9kZXZmcyIsICZsaXN0KTsKKwlhZGRfdG9fZGlybGlzdCgiL2RldiIsICZsaXN0KTsKKworCXdoaWxlIChsaXN0KSB7CisJCWN1cnJlbnQgPSBsaXN0OworCQlsaXN0ID0gbGlzdC0+bmV4dDsKKyNpZmRlZiBERUJVRworCQlwcmludGYoIlNjYW5uaW5nIGRpcmVjdG9yeSAlc1xuIiwgY3VycmVudC0+bmFtZSk7CisjZW5kaWYKKwkJc2Nhbl9kaXIoY3VycmVudC0+bmFtZSwgZGV2aWNlLCAmbmV3X2xpc3QsICZyZXRfcGF0aCk7CisJCWZyZWUoY3VycmVudC0+bmFtZSk7CisJCWZyZWUoY3VycmVudCk7CisJCWlmIChyZXRfcGF0aCkKKwkJCWJyZWFrOworCQkvKgorCQkgKiBJZiB3ZSdyZSBkb25lIGNoZWNraW5nIGF0IHRoaXMgbGV2ZWwsIGRlc2NlbmQgdG8KKwkJICogdGhlIG5leHQgbGV2ZWwgb2Ygc3ViZGlyZWN0b3JpZXMuIChicmVhZHRoLWZpcnN0KQorCQkgKi8KKwkJaWYgKGxpc3QgPT0gMCkgeworCQkJbGlzdCA9IG5ld19saXN0OworCQkJbmV3X2xpc3QgPSAwOworCQkJLyogQXZvaWQgaW5maW5pdGUgbG9vcCAqLworCQkJaWYgKCsrbGV2ZWwgPj0gRVhUMkZTX01BWF9ORVNURURfTElOS1MpCisJCQkJYnJlYWs7CisJCX0KKwl9CisJZnJlZV9kaXJsaXN0KCZsaXN0KTsKKwlmcmVlX2Rpcmxpc3QoJm5ld19saXN0KTsKKwlyZXR1cm4gcmV0X3BhdGg7Cit9CisKKworI2lmZGVmIERFQlVHCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisJY2hhcgkqZGV2bmFtZSwgKnRtcDsKKwlpbnQJbWFqb3IsIG1pbm9yOworCWRldl90CWRldmljZTsKKwljb25zdCBjaGFyICplcnJtc2cgPSAiQ291bGRuJ3QgcGFyc2UgJXM6ICVzXG4iOworCisJaWYgKChhcmdjICE9IDIpICYmIChhcmdjICE9IDMpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGRldmljZV9udW1iZXJcbiIsIGFyZ3ZbMF0pOworCQlmcHJpbnRmKHN0ZGVyciwgIlx0OiAlcyBtYWpvciBtaW5vclxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChhcmdjID09IDIpIHsKKwkJZGV2aWNlID0gc3RydG91bChhcmd2WzFdLCAmdG1wLCAwKTsKKwkJaWYgKCp0bXApIHsKKwkJCWZwcmludGYoc3RkZXJyLCBlcnJtc2csICJkZXZpY2UgbnVtYmVyIiwgYXJndlsxXSk7CisJCQlleGl0KDEpOworCQl9CisJfSBlbHNlIHsKKwkJbWFqb3IgPSBzdHJ0b3VsKGFyZ3ZbMV0sICZ0bXAsIDApOworCQlpZiAoKnRtcCkgeworCQkJZnByaW50ZihzdGRlcnIsIGVycm1zZywgIm1ham9yIG51bWJlciIsIGFyZ3ZbMV0pOworCQkJZXhpdCgxKTsKKwkJfQorCQltaW5vciA9IHN0cnRvdWwoYXJndlsyXSwgJnRtcCwgMCk7CisJCWlmICgqdG1wKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgZXJybXNnLCAibWlub3IgbnVtYmVyIiwgYXJndlsyXSk7CisJCQlleGl0KDEpOworCQl9CisJCWRldmljZSA9IG1ha2VkZXYobWFqb3IsIG1pbm9yKTsKKwkJcHJpbnRmKCJMb29raW5nIGZvciBkZXZpY2UgMHglMDR4ICglZDolZClcbiIsIGRldmljZSwKKwkJICAgICAgIG1ham9yLCBtaW5vcik7CisJfQorCWRldm5hbWUgPSBleHQyZnNfZmluZF9ibG9ja19kZXZpY2UoZGV2aWNlKTsKKwlpZiAoZGV2bmFtZSkgeworCQlwcmludGYoIkZvdW5kIGRldmljZSEgICVzXG4iLCBkZXZuYW1lKTsKKwkJZnJlZShkZXZuYW1lKTsKKwl9IGVsc2UgeworCQlwcmludGYoIkNvdWxkbid0IGZpbmQgZGV2aWNlLlxuIik7CisJfQorCXJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZsdXNoYi5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZmx1c2hiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4MjFmYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZsdXNoYi5jCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBmbHVzaGIuYyAtLS0gSGlkZXMgc3lzdGVtLWRlcGVuZGVudCBpbmZvcm1hdGlvbiBmb3IgYm90aCBzeW5jaW5nIGEKKyAqIAlkZXZpY2UgdG8gZGlzayBhbmQgdG8gZmx1c2ggYW55IGJ1ZmZlcnMgZnJvbSBkaXNrIGNhY2hlLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX0lPQ1RMX0gKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01PVU5UX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4JCS8qIFRoaXMgbWF5IGRlZmluZSBCTEtGTFNCVUYgKi8KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisvKgorICogRm9yIExpbnV4LCBkZWZpbmUgQkxLRkxTQlVGIGFuZCBGREZMVVNIIGlmIG5lY2Vzc2FyeSwgc2luY2UKKyAqIG5vdCBhbGwgcG9ydGFibGUgaGVhZGVyIGZpbGUgZG9lcyBzbyBmb3IgdXMuICBUaGlzIHJlYWxseSBzaG91bGQgYmUKKyAqIGZpeGVkIGluIHRoZSBnbGliYyBoZWFkZXIgZmlsZXMuICAoUmVjZW50IGdsaWJjcyBhcHBlYXIgdG8gZGVmaW5lCisgKiBCTEtGTFNCVUYgaW4gc3lzL21vdW50LmgsIGJ1dCBGREZMVVNIIHN0aWxsIGRvZXNuJ3Qgc2VlbSB0byBiZQorICogZGVmaW5lZCBhbnl3aGVyZSBwb3J0YWJsZS4pICBVbnRpbCB0aGVuLi4uLgorICovCisjaWZkZWYgX19saW51eF9fCisjaWZuZGVmIEJMS0ZMU0JVRgorI2RlZmluZSBCTEtGTFNCVUYJX0lPKDB4MTIsOTcpCS8qIGZsdXNoIGJ1ZmZlciBjYWNoZSAqLworI2VuZGlmCisjaWZuZGVmIEZERkxVU0gKKyNkZWZpbmUgRkRGTFVTSAkJX0lPKDIsMHg0YikJLyogZmx1c2ggZmxvcHB5IGRpc2sgKi8KKyNlbmRpZgorI2VuZGlmCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgc3luYyBhIGRldmljZS9maWxlLCBhbmQgb3B0aW9uYWxseSBhdHRlbXB0IHRvCisgKiBmbHVzaCB0aGUgYnVmZmVyIGNhY2hlLiAgVGhlIGxhdHRlciBpcyBiYXNpY2FsbHkgb25seSB1c2VmdWwgZm9yCisgKiBzeXN0ZW0gYmVuY2htYXJrcyBhbmQgZm9yIHRvcnR1cmluZyBzeXN0ZW1zIGluIGJ1cm4taW4gdGVzdHMuICA6KQorICovCitlcnJjb2RlX3QgZXh0MmZzX3N5bmNfZGV2aWNlKGludCBmZCwgaW50IGZsdXNoYikKK3sKKwkvKgorCSAqIFdlIGFsd2F5cyBzeW5jIHRoZSBkZXZpY2UgaW4gY2FzZSB3ZSdyZSBydW5uaW5nIG9uIG9sZAorCSAqIGtlcm5lbHMgZm9yIHdoaWNoIHdlIGNhbiBsb3NlIGRhdGEgaWYgd2UgZG9uJ3QuICAoVGhlcmUKKwkgKiBzdGlsbCBpcyBhIHJhY2UgY29uZGl0aW9uIGZvciB0aG9zZSBrZXJuZWxzLCBidXQgdGhpcworCSAqIHJlZHVjZXMgaXQgZ3JlYXRseS4pCisJICovCisJaWYgKGZzeW5jIChmZCkgPT0gLTEpCisJCXJldHVybiBlcnJubzsKKworCWlmIChmbHVzaGIpIHsKKworI2lmZGVmIEJMS0ZMU0JVRgorCQlpZiAoaW9jdGwgKGZkLCBCTEtGTFNCVUYsIDApID09IDApCisJCQlyZXR1cm4gMDsKKyNlbGlmIGRlZmluZWQoX19saW51eF9fKQorI3dhcm5pbmcgQkxLRkxTQlVGIG5vdCBkZWZpbmVkCisjZW5kaWYKKyNpZmRlZiBGREZMVVNICisJCXJldHVybiBpb2N0bChmZCwgRkRGTFVTSCwgMCk7ICAgLyogSW4gY2FzZSB0aGlzIGlzIGEgZmxvcHB5ICovCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKKyN3YXJuaW5nIEZERkxVU0ggbm90IGRlZmluZWQKKyNlbmRpZgorCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZyZWVmcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZnJlZWZzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE5NzQyZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ZyZWVmcy5jCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogZnJlZWZzLmMgLS0tIGZyZWUgYW4gZXh0MiBmaWxlc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3ZvaWQgZXh0MmZzX2ZyZWUoZXh0Ml9maWxzeXMgZnMpCit7CisJaWYgKCFmcyB8fCAoZnMtPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUykpCisJCXJldHVybjsKKwlpZiAoZnMtPmltYWdlX2lvICE9IGZzLT5pbykgeworCQlpZiAoZnMtPmltYWdlX2lvKQorCQkJaW9fY2hhbm5lbF9jbG9zZShmcy0+aW1hZ2VfaW8pOworCX0KKwlpZiAoZnMtPmlvKSB7CisJCWlvX2NoYW5uZWxfY2xvc2UoZnMtPmlvKTsKKwl9CisJaWYgKGZzLT5kZXZpY2VfbmFtZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmcy0+ZGV2aWNlX25hbWUpOworCWlmIChmcy0+c3VwZXIpCisJCWV4dDJmc19mcmVlX21lbSgmZnMtPnN1cGVyKTsKKwlpZiAoZnMtPm9yaWdfc3VwZXIpCisJCWV4dDJmc19mcmVlX21lbSgmZnMtPm9yaWdfc3VwZXIpOworCWlmIChmcy0+Z3JvdXBfZGVzYykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmcy0+Z3JvdXBfZGVzYyk7CisJaWYgKGZzLT5ibG9ja19tYXApCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChmcy0+YmxvY2tfbWFwKTsKKwlpZiAoZnMtPmlub2RlX21hcCkKKwkJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGZzLT5pbm9kZV9tYXApOworCWlmIChmcy0+aW1hZ2VfaGVhZGVyKQorCQlleHQyZnNfZnJlZV9tZW0oJmZzLT5pbWFnZV9oZWFkZXIpOworCisJaWYgKGZzLT5iYWRibG9ja3MpCisJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGZzLT5iYWRibG9ja3MpOworCWZzLT5iYWRibG9ja3MgPSAwOworCisJaWYgKGZzLT5kYmxpc3QpCisJCWV4dDJmc19mcmVlX2RibGlzdChmcy0+ZGJsaXN0KTsKKworCWlmIChmcy0+aWNhY2hlKQorCQlleHQyZnNfZnJlZV9pbm9kZV9jYWNoZShmcy0+aWNhY2hlKTsKKworCWlmIChmcy0+bW1wX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmcy0+bW1wX2J1Zik7CisJaWYgKGZzLT5tbXBfY21wKQorCQlleHQyZnNfZnJlZV9tZW0oJmZzLT5tbXBfY21wKTsKKworCWZzLT5tYWdpYyA9IDA7CisKKwlleHQyZnNfemVyb19ibG9ja3MyKE5VTEwsIDAsIDAsIE5VTEwsIE5VTEwpOworCWV4dDJmc19mcmVlX21lbSgmZnMpOworfQorCisvKgorICogVGhpcyBwcm9jZWR1cmUgZnJlZXMgYSBiYWRibG9ja3MgbGlzdC4KKyAqLwordm9pZCBleHQyZnNfdTMyX2xpc3RfZnJlZShleHQyX3UzMl9saXN0IGJiKQoreworCWlmIChiYi0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19CQURCTE9DS1NfTElTVCkKKwkJcmV0dXJuOworCisJaWYgKGJiLT5saXN0KQorCQlleHQyZnNfZnJlZV9tZW0oJmJiLT5saXN0KTsKKwliYi0+bGlzdCA9IDA7CisJZXh0MmZzX2ZyZWVfbWVtKCZiYik7Cit9CisKK3ZvaWQgZXh0MmZzX2JhZGJsb2Nrc19saXN0X2ZyZWUoZXh0Ml9iYWRibG9ja3NfbGlzdCBiYikKK3sKKwlleHQyZnNfdTMyX2xpc3RfZnJlZSgoZXh0Ml91MzJfbGlzdCkgYmIpOworfQorCisKKy8qCisgKiBGcmVlIGEgZGlyZWN0b3J5IGJsb2NrIGxpc3QKKyAqLwordm9pZCBleHQyZnNfZnJlZV9kYmxpc3QoZXh0Ml9kYmxpc3QgZGJsaXN0KQoreworCWlmICghZGJsaXN0IHx8IChkYmxpc3QtPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfREJMSVNUKSkKKwkJcmV0dXJuOworCisJaWYgKGRibGlzdC0+bGlzdCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZkYmxpc3QtPmxpc3QpOworCWRibGlzdC0+bGlzdCA9IDA7CisJaWYgKGRibGlzdC0+ZnMgJiYgZGJsaXN0LT5mcy0+ZGJsaXN0ID09IGRibGlzdCkKKwkJZGJsaXN0LT5mcy0+ZGJsaXN0ID0gMDsKKwlkYmxpc3QtPm1hZ2ljID0gMDsKKwlleHQyZnNfZnJlZV9tZW0oJmRibGlzdCk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dlbl9iaXRtYXAuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dlbl9iaXRtYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2Q2ZmU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2VuX2JpdG1hcC5jCkBAIC0wLDAgKzEsNjA3IEBACisvKgorICogZ2VuX2JpdG1hcC5jIC0tLSBHZW5lcmljICgzMi1iaXQpIGJpdG1hcCByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorCitzdHJ1Y3QgZXh0MmZzX3N0cnVjdF9nZW5lcmljX2JpdG1hcCB7CisJZXJyY29kZV90CW1hZ2ljOworCWV4dDJfZmlsc3lzIAlmczsKKwlfX3UzMgkJc3RhcnQsIGVuZDsKKwlfX3UzMgkJcmVhbF9lbmQ7CisJY2hhcgkqCWRlc2NyaXB0aW9uOworCWNoYXIJKgliaXRtYXA7CisJZXJyY29kZV90CWJhc2VfZXJyb3JfY29kZTsKKwlfX3UzMgkJcmVzZXJ2ZWRbN107Cit9OworCisjZGVmaW5lIEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkgXAorCSgoKGJtYXApLT5tYWdpYyA9PSBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQKSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQKSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQKSkKKworI2RlZmluZSBFWFQyRlNfSVNfNjRfQklUTUFQKGJtYXApIFwKKwkoKChibWFwKS0+bWFnaWMgPT0gRVhUMl9FVF9NQUdJQ19HRU5FUklDX0JJVE1BUDY0KSB8fCBcCisJICgoYm1hcCktPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQNjQpIHx8IFwKKwkgKChibWFwKS0+bWFnaWMgPT0gRVhUMl9FVF9NQUdJQ19JTk9ERV9CSVRNQVA2NCkpCisKKy8qCisgKiBVc2VkIGJ5IHByZXZpb3VzbHkgaW5saW5lZCBmdW5jdGlvbiwgc28gd2UgaGF2ZSB0byBleHBvcnQgdGhpcyBhbmQKKyAqIG5vdCBjaGFuZ2UgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZQorICovCit2b2lkIGV4dDJmc193YXJuX2JpdG1hcDIoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCSAgICBpbnQgY29kZSwgdW5zaWduZWQgbG9uZyBhcmcpCit7CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCWlmIChiaXRtYXAtPmRlc2NyaXB0aW9uKQorCQljb21fZXJyKDAsIGJpdG1hcC0+YmFzZV9lcnJvcl9jb2RlK2NvZGUsCisJCQkiIyVsdSBmb3IgJXMiLCBhcmcsIGJpdG1hcC0+ZGVzY3JpcHRpb24pOworCWVsc2UKKwkJY29tX2VycigwLCBiaXRtYXAtPmJhc2VfZXJyb3JfY29kZSArIGNvZGUsICIjJWx1IiwgYXJnKTsKKyNlbmRpZgorfQorCitzdGF0aWMgZXJyY29kZV90IGNoZWNrX21hZ2ljKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXApCit7CisJaWYgKCFiaXRtYXAgfHwgISgoYml0bWFwLT5tYWdpYyA9PSBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQKSB8fAorCQkJIChiaXRtYXAtPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQKSB8fAorCQkJIChiaXRtYXAtPm1hZ2ljID09IEVYVDJfRVRfTUFHSUNfQkxPQ0tfQklUTUFQKSkpCisJCXJldHVybiBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX21ha2VfZ2VuZXJpY19iaXRtYXAoZXJyY29kZV90IG1hZ2ljLCBleHQyX2ZpbHN5cyBmcywKKwkJCQkgICAgIF9fdTMyIHN0YXJ0LCBfX3UzMiBlbmQsIF9fdTMyIHJlYWxfZW5kLAorCQkJCSAgICAgY29uc3QgY2hhciAqZGVzY3IsIGNoYXIgKmluaXRfbWFwLAorCQkJCSAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpyZXQpCit7CisJZXh0MmZzX2dlbmVyaWNfYml0bWFwCWJpdG1hcDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzaXplX3QJCQlzaXplOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyZnNfc3RydWN0X2dlbmVyaWNfYml0bWFwKSwKKwkJCQkmYml0bWFwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJYml0bWFwLT5tYWdpYyA9IG1hZ2ljOworCWJpdG1hcC0+ZnMgPSBmczsKKwliaXRtYXAtPnN0YXJ0ID0gc3RhcnQ7CisJYml0bWFwLT5lbmQgPSBlbmQ7CisJYml0bWFwLT5yZWFsX2VuZCA9IHJlYWxfZW5kOworCXN3aXRjaCAobWFnaWMpIHsKKwljYXNlIEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQOgorCQliaXRtYXAtPmJhc2VfZXJyb3JfY29kZSA9IEVYVDJfRVRfQkFEX0lOT0RFX01BUks7CisJCWJyZWFrOworCWNhc2UgRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVA6CisJCWJpdG1hcC0+YmFzZV9lcnJvcl9jb2RlID0gRVhUMl9FVF9CQURfQkxPQ0tfTUFSSzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYml0bWFwLT5iYXNlX2Vycm9yX2NvZGUgPSBFWFQyX0VUX0JBRF9HRU5FUklDX01BUks7CisJfQorCWlmIChkZXNjcikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oZGVzY3IpKzEsICZiaXRtYXAtPmRlc2NyaXB0aW9uKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXApOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlzdHJjcHkoYml0bWFwLT5kZXNjcmlwdGlvbiwgZGVzY3IpOworCX0gZWxzZQorCQliaXRtYXAtPmRlc2NyaXB0aW9uID0gMDsKKworCXNpemUgPSAoc2l6ZV90KSAoKChiaXRtYXAtPnJlYWxfZW5kIC0gYml0bWFwLT5zdGFydCkgLyA4KSArIDEpOworCS8qIFJvdW5kIHVwIHRvIGFsbG93IGZvciB0aGUgQlQgeDg2IGluc3RydWN0aW9uICovCisJc2l6ZSA9IChzaXplICsgNykgJiB+MzsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplLCAmYml0bWFwLT5iaXRtYXApOworCWlmIChyZXR2YWwpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXAtPmRlc2NyaXB0aW9uKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXApOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlmIChpbml0X21hcCkKKwkJbWVtY3B5KGJpdG1hcC0+Yml0bWFwLCBpbml0X21hcCwgc2l6ZSk7CisJZWxzZQorCQltZW1zZXQoYml0bWFwLT5iaXRtYXAsIDAsIHNpemUpOworCSpyZXQgPSBiaXRtYXA7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfYWxsb2NhdGVfZ2VuZXJpY19iaXRtYXAoX191MzIgc3RhcnQsCisJCQkJCSBfX3UzMiBlbmQsCisJCQkJCSBfX3UzMiByZWFsX2VuZCwKKwkJCQkJIGNvbnN0IGNoYXIgKmRlc2NyLAorCQkJCQkgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpyZXQpCit7CisJcmV0dXJuIGV4dDJmc19tYWtlX2dlbmVyaWNfYml0bWFwKEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsIDAsCisJCQkJCSAgc3RhcnQsIGVuZCwgcmVhbF9lbmQsIGRlc2NyLCAwLCByZXQpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2NvcHlfZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIHNyYywKKwkJCQkgICAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCAqZGVzdCkKK3sKKwlyZXR1cm4gKGV4dDJmc19tYWtlX2dlbmVyaWNfYml0bWFwKHNyYy0+bWFnaWMsIHNyYy0+ZnMsCisJCQkJCSAgIHNyYy0+c3RhcnQsIHNyYy0+ZW5kLAorCQkJCQkgICBzcmMtPnJlYWxfZW5kLAorCQkJCQkgICBzcmMtPmRlc2NyaXB0aW9uLCBzcmMtPmJpdG1hcCwKKwkJCQkJICAgZGVzdCkpOworfQorCit2b2lkIGV4dDJmc19mcmVlX2dlbmVyaWNfYml0bWFwKGV4dDJmc19pbm9kZV9iaXRtYXAgYml0bWFwKQoreworCWlmIChjaGVja19tYWdpYyhiaXRtYXApKQorCQlyZXR1cm47CisKKwliaXRtYXAtPm1hZ2ljID0gMDsKKwlpZiAoYml0bWFwLT5kZXNjcmlwdGlvbikgeworCQlleHQyZnNfZnJlZV9tZW0oJmJpdG1hcC0+ZGVzY3JpcHRpb24pOworCQliaXRtYXAtPmRlc2NyaXB0aW9uID0gMDsKKwl9CisJaWYgKGJpdG1hcC0+Yml0bWFwKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYml0bWFwLT5iaXRtYXApOworCQliaXRtYXAtPmJpdG1hcCA9IDA7CisJfQorCWV4dDJmc19mcmVlX21lbSgmYml0bWFwKTsKK30KKworaW50IGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCWJsa190IGJpdG5vKQoreworCWlmICghRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWlmIChFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDMyKGJpdG1hcCwgX19mdW5jX18pOworCQkJcmV0dXJuIGV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcChiaXRtYXAsIGJpdG5vKTsKKwkJfQorI2lmbmRlZiBPTUlUX0NPTV9FUlIKKwkJY29tX2VycigwLCBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQLAorCQkJInRlc3RfYml0bWFwKCVsdSkiLCAodW5zaWduZWQgbG9uZykgYml0bm8pOworI2VuZGlmCisJCXJldHVybiAwOworCX0KKworCWlmICgoYml0bm8gPCBiaXRtYXAtPnN0YXJ0KSB8fCAoYml0bm8gPiBiaXRtYXAtPmVuZCkpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwMihiaXRtYXAsIEVYVDJGU19URVNUX0VSUk9SLCBiaXRubyk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gZXh0MmZzX3Rlc3RfYml0KGJpdG5vIC0gYml0bWFwLT5zdGFydCwgYml0bWFwLT5iaXRtYXApOworfQorCitpbnQgZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJIF9fdTMyIGJpdG5vKQoreworCWlmICghRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWlmIChFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDMyKGJpdG1hcCwgX19mdW5jX18pOworCQkJcmV0dXJuIGV4dDJmc19tYXJrX2dlbmVyaWNfYm1hcChiaXRtYXAsIGJpdG5vKTsKKwkJfQorI2lmbmRlZiBPTUlUX0NPTV9FUlIKKwkJY29tX2VycigwLCBFWFQyX0VUX01BR0lDX0dFTkVSSUNfQklUTUFQLAorCQkJIm1hcmtfYml0bWFwKCVsdSkiLCAodW5zaWduZWQgbG9uZykgYml0bm8pOworI2VuZGlmCisJCXJldHVybiAwOworCX0KKworCWlmICgoYml0bm8gPCBiaXRtYXAtPnN0YXJ0KSB8fCAoYml0bm8gPiBiaXRtYXAtPmVuZCkpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwMihiaXRtYXAsIEVYVDJGU19NQVJLX0VSUk9SLCBiaXRubyk7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gZXh0MmZzX3NldF9iaXQoYml0bm8gLSBiaXRtYXAtPnN0YXJ0LCBiaXRtYXAtPmJpdG1hcCk7Cit9CisKK2ludCBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgIGJsa190IGJpdG5vKQoreworCWlmICghRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWlmIChFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDMyKGJpdG1hcCwgX19mdW5jX18pOworCQkJcmV0dXJuIGV4dDJmc191bm1hcmtfZ2VuZXJpY19ibWFwKGJpdG1hcCwgYml0bm8pOworCQl9CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkibWFya19iaXRtYXAoJWx1KSIsICh1bnNpZ25lZCBsb25nKSBiaXRubyk7CisjZW5kaWYKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKChiaXRubyA8IGJpdG1hcC0+c3RhcnQpIHx8IChiaXRubyA+IGJpdG1hcC0+ZW5kKSkgeworCQlleHQyZnNfd2Fybl9iaXRtYXAyKGJpdG1hcCwgRVhUMkZTX1VOTUFSS19FUlJPUiwgYml0bm8pOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIGV4dDJmc19jbGVhcl9iaXQoYml0bm8gLSBiaXRtYXAtPnN0YXJ0LCBiaXRtYXAtPmJpdG1hcCk7Cit9CisKK19fdTMyIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfc3RhcnQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCkKK3sKKwlpZiAoIUVYVDJGU19JU18zMl9CSVRNQVAoYml0bWFwKSkgeworCQlpZiAoRVhUMkZTX0lTXzY0X0JJVE1BUChiaXRtYXApKSB7CisJCQlleHQyZnNfd2Fybl9iaXRtYXAzMihiaXRtYXAsIF9fZnVuY19fKTsKKwkJCXJldHVybiBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9zdGFydChiaXRtYXApOworCQl9CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkiZ2V0X2JpdG1hcF9zdGFydCIpOworI2VuZGlmCisJCXJldHVybiAwOworCX0KKworCXJldHVybiBiaXRtYXAtPnN0YXJ0OworfQorCitfX3UzMiBleHQyZnNfZ2V0X2dlbmVyaWNfYml0bWFwX2VuZChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKQoreworCWlmICghRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWlmIChFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDMyKGJpdG1hcCwgX19mdW5jX18pOworCQkJcmV0dXJuIGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX2VuZChiaXRtYXApOworCQl9CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkiZ2V0X2JpdG1hcF9lbmQiKTsKKyNlbmRpZgorCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIGJpdG1hcC0+ZW5kOworfQorCit2b2lkIGV4dDJmc19jbGVhcl9nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKQoreworCWlmICghRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWlmIChFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDMyKGJpdG1hcCwgX19mdW5jX18pOworCQkJZXh0MmZzX2NsZWFyX2dlbmVyaWNfYm1hcChiaXRtYXApOworCQkJcmV0dXJuOworCQl9CisjaWZuZGVmIE9NSVRfQ09NX0VSUgorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkiY2xlYXJfZ2VuZXJpY19iaXRtYXAiKTsKKyNlbmRpZgorCQlyZXR1cm47CisJfQorCisJbWVtc2V0KGJpdG1hcC0+Yml0bWFwLCAwLAorCSAgICAgICAoc2l6ZV90KSAoKChiaXRtYXAtPnJlYWxfZW5kIC0gYml0bWFwLT5zdGFydCkgLyA4KSArIDEpKTsKK30KKworZXJyY29kZV90IGV4dDJmc19mdWRnZV9nZW5lcmljX2JpdG1hcF9lbmQoZXh0MmZzX2lub2RlX2JpdG1hcCBiaXRtYXAsCisJCQkJCSAgZXJyY29kZV90IG1hZ2ljLCBlcnJjb2RlX3QgbmVxLAorCQkJCQkgIGV4dDJfaW5vX3QgZW5kLCBleHQyX2lub190ICpvZW5kKQoreworCUVYVDJfQ0hFQ0tfTUFHSUMoYml0bWFwLCBtYWdpYyk7CisKKwlpZiAoZW5kID4gYml0bWFwLT5yZWFsX2VuZCkKKwkJcmV0dXJuIG5lcTsKKwlpZiAob2VuZCkKKwkJKm9lbmQgPSBiaXRtYXAtPmVuZDsKKwliaXRtYXAtPmVuZCA9IGVuZDsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19yZXNpemVfZ2VuZXJpY19iaXRtYXAoZXJyY29kZV90IG1hZ2ljLAorCQkJCSAgICAgICBfX3UzMiBuZXdfZW5kLCBfX3UzMiBuZXdfcmVhbF9lbmQsCisJCQkJICAgICAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJc2l6ZV90CQlzaXplLCBuZXdfc2l6ZTsKKwlfX3UzMgkJYml0bm87CisKKwlpZiAoIWJtYXAgfHwgKGJtYXAtPm1hZ2ljICE9IG1hZ2ljKSkKKwkJcmV0dXJuIG1hZ2ljOworCisJLyoKKwkgKiBJZiB3ZSdyZSBleHBhbmRpbmcgdGhlIGJpdG1hcCwgbWFrZSBzdXJlIGFsbCBvZiB0aGUgbmV3CisJICogcGFydHMgb2YgdGhlIGJpdG1hcCBhcmUgemVyby4KKwkgKi8KKwlpZiAobmV3X2VuZCA+IGJtYXAtPmVuZCkgeworCQliaXRubyA9IGJtYXAtPnJlYWxfZW5kOworCQlpZiAoYml0bm8gPiBuZXdfZW5kKQorCQkJYml0bm8gPSBuZXdfZW5kOworCQlmb3IgKDsgYml0bm8gPiBibWFwLT5lbmQ7IGJpdG5vLS0pCisJCQlleHQyZnNfY2xlYXJfYml0KGJpdG5vIC0gYm1hcC0+c3RhcnQsIGJtYXAtPmJpdG1hcCk7CisJfQorCWlmIChuZXdfcmVhbF9lbmQgPT0gYm1hcC0+cmVhbF9lbmQpIHsKKwkJYm1hcC0+ZW5kID0gbmV3X2VuZDsKKwkJcmV0dXJuIDA7CisJfQorCisJc2l6ZSA9ICgoYm1hcC0+cmVhbF9lbmQgLSBibWFwLT5zdGFydCkgLyA4KSArIDE7CisJbmV3X3NpemUgPSAoKG5ld19yZWFsX2VuZCAtIGJtYXAtPnN0YXJ0KSAvIDgpICsgMTsKKworCWlmIChzaXplICE9IG5ld19zaXplKSB7CisJCXJldHZhbCA9IGV4dDJmc19yZXNpemVfbWVtKHNpemUsIG5ld19zaXplLCAmYm1hcC0+Yml0bWFwKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCWlmIChuZXdfc2l6ZSA+IHNpemUpCisJCW1lbXNldChibWFwLT5iaXRtYXAgKyBzaXplLCAwLCBuZXdfc2l6ZSAtIHNpemUpOworCisJYm1hcC0+ZW5kID0gbmV3X2VuZDsKKwlibWFwLT5yZWFsX2VuZCA9IG5ld19yZWFsX2VuZDsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19jb21wYXJlX2dlbmVyaWNfYml0bWFwKGVycmNvZGVfdCBtYWdpYywgZXJyY29kZV90IG5lcSwKKwkJCQkJZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMSwKKwkJCQkJZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMikKK3sKKwlibGtfdAlpOworCisJaWYgKCFibTEgfHwgYm0xLT5tYWdpYyAhPSBtYWdpYykKKwkJcmV0dXJuIG1hZ2ljOworCWlmICghYm0yIHx8IGJtMi0+bWFnaWMgIT0gbWFnaWMpCisJCXJldHVybiBtYWdpYzsKKworCWlmICgoYm0xLT5zdGFydCAhPSBibTItPnN0YXJ0KSB8fAorCSAgICAoYm0xLT5lbmQgIT0gYm0yLT5lbmQpIHx8CisJICAgIChtZW1jbXAoYm0xLT5iaXRtYXAsIGJtMi0+Yml0bWFwLAorCQkgICAgKHNpemVfdCkgKGJtMS0+ZW5kIC0gYm0xLT5zdGFydCkvOCkpKQorCQlyZXR1cm4gbmVxOworCisJZm9yIChpID0gYm0xLT5lbmQgLSAoKGJtMS0+ZW5kIC0gYm0xLT5zdGFydCkgJSA4KTsgaSA8PSBibTEtPmVuZDsgaSsrKQorCQlpZiAoZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAoYm0xLCBpKSAhPQorCQkgICAgZXh0MmZzX2Zhc3RfdGVzdF9ibG9ja19iaXRtYXAoYm0yLCBpKSkKKwkJCXJldHVybiBuZXE7CisKKwlyZXR1cm4gMDsKK30KKwordm9pZCBleHQyZnNfc2V0X2dlbmVyaWNfYml0bWFwX3BhZGRpbmcoZXh0MmZzX2dlbmVyaWNfYml0bWFwIG1hcCkKK3sKKwlfX3UzMglpLCBqOworCisJLyogUHJvdGVjdCBsb29wIGZyb20gd3JhcC1hcm91bmQgaWYgbWFwLT5yZWFsX2VuZCBpcyBtYXhlZCAqLworCWZvciAoaT1tYXAtPmVuZCsxLCBqID0gaSAtIG1hcC0+c3RhcnQ7CisJICAgICBpIDw9IG1hcC0+cmVhbF9lbmQgJiYgaSA+IG1hcC0+ZW5kOworCSAgICAgaSsrLCBqKyspCisJCWV4dDJmc19zZXRfYml0KGosIG1hcC0+Yml0bWFwKTsKK30KKworZXJyY29kZV90IGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJCSAgZXJyY29kZV90IG1hZ2ljLAorCQkJCQkgIF9fdTMyIHN0YXJ0LCBfX3UzMiBudW0sCisJCQkJCSAgdm9pZCAqb3V0KQoreworCWlmICghYm1hcCB8fCAoYm1hcC0+bWFnaWMgIT0gbWFnaWMpKQorCQlyZXR1cm4gbWFnaWM7CisKKwlpZiAoKHN0YXJ0IDwgYm1hcC0+c3RhcnQpIHx8IChzdGFydCtudW0tMSA+IGJtYXAtPnJlYWxfZW5kKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCW1lbWNweShvdXQsIGJtYXAtPmJpdG1hcCArIChzdGFydCA+PiAzKSwgKG51bSs3KSA+PiAzKTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19zZXRfZ2VuZXJpY19iaXRtYXBfcmFuZ2UoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJCSAgZXJyY29kZV90IG1hZ2ljLAorCQkJCQkgIF9fdTMyIHN0YXJ0LCBfX3UzMiBudW0sCisJCQkJCSAgdm9pZCAqaW4pCit7CisJaWYgKCFibWFwIHx8IChibWFwLT5tYWdpYyAhPSBtYWdpYykpCisJCXJldHVybiBtYWdpYzsKKworCWlmICgoc3RhcnQgPCBibWFwLT5zdGFydCkgfHwgKHN0YXJ0K251bS0xID4gYm1hcC0+cmVhbF9lbmQpKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJbWVtY3B5KGJtYXAtPmJpdG1hcCArIChzdGFydCA+PiAzKSwgaW4sIChudW0rNykgPj4gMyk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDb21wYXJlIEBtZW0gdG8gemVybyBidWZmZXIgYnkgMjU2IGJ5dGVzLgorICogUmV0dXJuIDEgaWYgQG1lbSBpcyB6ZXJvZWQgbWVtb3J5LCBvdGhlcndpc2UgcmV0dXJuIDAuCisgKi8KK2ludCBleHQyZnNfbWVtX2lzX3plcm8oY29uc3QgY2hhciAqbWVtLCBzaXplX3QgbGVuKQoreworCXN0YXRpYyBjb25zdCBjaGFyIHplcm9fYnVmWzI1Nl07CisKKwl3aGlsZSAobGVuID49IHNpemVvZih6ZXJvX2J1ZikpIHsKKwkJaWYgKG1lbWNtcChtZW0sIHplcm9fYnVmLCBzaXplb2YoemVyb19idWYpKSkKKwkJCXJldHVybiAwOworCQlsZW4gLT0gc2l6ZW9mKHplcm9fYnVmKTsKKwkJbWVtICs9IHNpemVvZih6ZXJvX2J1Zik7CisJfQorCS8qIERlYWwgd2l0aCBsZWZ0b3ZlciBieXRlcy4gKi8KKwlpZiAobGVuKQorCQlyZXR1cm4gIW1lbWNtcChtZW0sIHplcm9fYnVmLCBsZW4pOworCXJldHVybiAxOworfQorCisvKgorICogUmV0dXJuIHRydWUgaWYgYWxsIG9mIHRoZSBiaXRzIGluIGEgc3BlY2lmaWVkIHJhbmdlIGFyZSBjbGVhcgorICovCitzdGF0aWMgaW50IGV4dDJmc190ZXN0X2NsZWFyX2dlbmVyaWNfYml0bWFwX3JhbmdlKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkJCQkgIHVuc2lnbmVkIGludCBzdGFydCwKKwkJCQkJCSAgdW5zaWduZWQgaW50IGxlbikKK3sKKwlzaXplX3Qgc3RhcnRfYnl0ZSwgbGVuX2J5dGUgPSBsZW4gPj4gMzsKKwl1bnNpZ25lZCBpbnQgc3RhcnRfYml0LCBsZW5fYml0ID0gbGVuICUgODsKKwlpbnQgZmlyc3RfYml0ID0gMDsKKwlpbnQgbGFzdF9iaXQgID0gMDsKKwlpbnQgbWFya19jb3VudCA9IDA7CisJaW50IG1hcmtfYml0ID0gMDsKKwlpbnQgaTsKKwljb25zdCBjaGFyICpBRERSID0gYml0bWFwLT5iaXRtYXA7CisKKwlzdGFydCAtPSBiaXRtYXAtPnN0YXJ0OworCXN0YXJ0X2J5dGUgPSBzdGFydCA+PiAzOworCXN0YXJ0X2JpdCA9IHN0YXJ0ICUgODsKKworCWlmIChzdGFydF9iaXQgIT0gMCkgeworCQkvKgorCQkgKiBUaGUgY29tcGFyZWQgc3RhcnQgYmxvY2sgbnVtYmVyIG9yIHN0YXJ0IGlub2RlIG51bWJlcgorCQkgKiBpcyBub3QgdGhlIGZpcnN0IGJpdCBpbiBhIGJ5dGUuCisJCSAqLworCQltYXJrX2NvdW50ID0gOCAtIHN0YXJ0X2JpdDsKKwkJaWYgKGxlbiA8IDggLSBzdGFydF9iaXQpIHsKKwkJCW1hcmtfY291bnQgPSAoaW50KWxlbjsKKwkJCW1hcmtfYml0ID0gbGVuICsgc3RhcnRfYml0IC0gMTsKKwkJfSBlbHNlCisJCQltYXJrX2JpdCA9IDc7CisKKwkJZm9yIChpID0gbWFya19jb3VudDsgaSA+IDA7IGktLSwgbWFya19iaXQtLSkKKwkJCWZpcnN0X2JpdCB8PSAxIDw8IG1hcmtfYml0OworCisJCS8qCisJCSAqIENvbXBhcmUgYmxvY2tzIG9yIGlub2RlcyBpbiB0aGUgZmlyc3QgYnl0ZS4KKwkJICogSWYgdGhlcmUgaXMgYW55IG1hcmtlZCBiaXQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAwLgorCQkgKi8KKwkJaWYgKGZpcnN0X2JpdCAmIEFERFJbc3RhcnRfYnl0ZV0pCisJCQlyZXR1cm4gMDsKKwkJZWxzZSBpZiAobGVuIDw9IDggLSBzdGFydF9iaXQpCisJCQlyZXR1cm4gMTsKKworCQlzdGFydF9ieXRlKys7CisJCWxlbl9iaXQgPSAobGVuIC0gbWFya19jb3VudCkgJSA4OworCQlsZW5fYnl0ZSA9IChsZW4gLSBtYXJrX2NvdW50KSA+PiAzOworCX0KKworCS8qCisJICogVGhlIGNvbXBhcmVkIHN0YXJ0IGJsb2NrIG51bWJlciBvciBzdGFydCBpbm9kZSBudW1iZXIgaXMKKwkgKiB0aGUgZmlyc3QgYml0IGluIGEgYnl0ZS4KKwkgKi8KKwlpZiAobGVuX2JpdCAhPSAwKSB7CisJCS8qCisJCSAqIFRoZSBjb21wYXJlZCBlbmQgYmxvY2sgbnVtYmVyIG9yIGVuZCBpbm9kZSBudW1iZXIgaXMKKwkJICogbm90IHRoZSBsYXN0IGJpdCBpbiBhIGJ5dGUuCisJCSAqLworCQlmb3IgKG1hcmtfYml0ID0gbGVuX2JpdCAtIDE7IG1hcmtfYml0ID49IDA7IG1hcmtfYml0LS0pCisJCQlsYXN0X2JpdCB8PSAxIDw8IG1hcmtfYml0OworCisJCS8qCisJCSAqIENvbXBhcmUgYmxvY2tzIG9yIGlub2RlcyBpbiB0aGUgbGFzdCBieXRlLgorCQkgKiBJZiB0aGVyZSBpcyBhbnkgbWFya2VkIGJpdCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDAuCisJCSAqLworCQlpZiAobGFzdF9iaXQgJiBBRERSW3N0YXJ0X2J5dGUgKyBsZW5fYnl0ZV0pCisJCQlyZXR1cm4gMDsKKwkJZWxzZSBpZiAobGVuX2J5dGUgPT0gMCkKKwkJCXJldHVybiAxOworCX0KKworCS8qIENoZWNrIHdoZXRoZXIgYWxsIGJ5dGVzIGFyZSAwICovCisJcmV0dXJuIGV4dDJmc19tZW1faXNfemVybyhBRERSICsgc3RhcnRfYnl0ZSwgbGVuX2J5dGUpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCQkJX191MzIgc3RhcnQsIF9fdTMyIGVuZCwKKwkJCQkJCV9fdTMyICpvdXQpCit7CisJYmxrX3QgYjsKKworCWlmIChzdGFydCA8IGJpdG1hcC0+c3RhcnQgfHwgZW5kID4gYml0bWFwLT5lbmQgfHwgc3RhcnQgPiBlbmQpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwMihiaXRtYXAsIEVYVDJGU19URVNUX0VSUk9SLCBzdGFydCk7CisJCXJldHVybiBFSU5WQUw7CisJfQorCisJd2hpbGUgKHN0YXJ0IDw9IGVuZCkgeworCQliID0gZXh0MmZzX3Rlc3RfYml0KHN0YXJ0IC0gYml0bWFwLT5zdGFydCwgYml0bWFwLT5iaXRtYXApOworCQlpZiAoIWIpIHsKKwkJCSpvdXQgPSBzdGFydDsKKwkJCXJldHVybiAwOworCQl9CisJCXN0YXJ0Kys7CisJfQorCisJcmV0dXJuIEVOT0VOVDsKK30KKworZXJyY29kZV90IGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JpdG1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICAgX191MzIgc3RhcnQsIF9fdTMyIGVuZCwKKwkJCQkJICAgICAgIF9fdTMyICpvdXQpCit7CisJYmxrX3QgYjsKKworCWlmIChzdGFydCA8IGJpdG1hcC0+c3RhcnQgfHwgZW5kID4gYml0bWFwLT5lbmQgfHwgc3RhcnQgPiBlbmQpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwMihiaXRtYXAsIEVYVDJGU19URVNUX0VSUk9SLCBzdGFydCk7CisJCXJldHVybiBFSU5WQUw7CisJfQorCisJd2hpbGUgKHN0YXJ0IDw9IGVuZCkgeworCQliID0gZXh0MmZzX3Rlc3RfYml0KHN0YXJ0IC0gYml0bWFwLT5zdGFydCwgYml0bWFwLT5iaXRtYXApOworCQlpZiAoYikgeworCQkJKm91dCA9IHN0YXJ0OworCQkJcmV0dXJuIDA7CisJCX0KKwkJc3RhcnQrKzsKKwl9CisKKwlyZXR1cm4gRU5PRU5UOworfQorCitpbnQgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgIGJsa190IGJsb2NrLCBpbnQgbnVtKQoreworCUVYVDJfQ0hFQ0tfTUFHSUMoYml0bWFwLCBFWFQyX0VUX01BR0lDX0JMT0NLX0JJVE1BUCk7CisJaWYgKChibG9jayA8IGJpdG1hcC0+c3RhcnQpIHx8IChibG9jaytudW0tMSA+IGJpdG1hcC0+cmVhbF9lbmQpKSB7CisJCWV4dDJmc193YXJuX2JpdG1hcChFWFQyX0VUX0JBRF9CTE9DS19URVNULAorCQkJCSAgIGJsb2NrLCBiaXRtYXAtPmRlc2NyaXB0aW9uKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBleHQyZnNfdGVzdF9jbGVhcl9nZW5lcmljX2JpdG1hcF9yYW5nZSgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKQorCQkJCQkJICAgICAgYml0bWFwLCBibG9jaywgbnVtKTsKK30KKworaW50IGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcF9yYW5nZShleHQyZnNfaW5vZGVfYml0bWFwIGJpdG1hcCwKKwkJCQkgICBpbm9fdCBpbm9kZSwgaW50IG51bSkKK3sKKwlFWFQyX0NIRUNLX01BR0lDKGJpdG1hcCwgRVhUMl9FVF9NQUdJQ19JTk9ERV9CSVRNQVApOworCWlmICgoaW5vZGUgPCBiaXRtYXAtPnN0YXJ0KSB8fCAoaW5vZGUrbnVtLTEgPiBiaXRtYXAtPnJlYWxfZW5kKSkgeworCQlleHQyZnNfd2Fybl9iaXRtYXAoRVhUMl9FVF9CQURfSU5PREVfVEVTVCwKKwkJCQkgICBpbm9kZSwgYml0bWFwLT5kZXNjcmlwdGlvbik7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gZXh0MmZzX3Rlc3RfY2xlYXJfZ2VuZXJpY19iaXRtYXBfcmFuZ2UoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkKKwkJCQkJCSAgICAgIGJpdG1hcCwgaW5vZGUsIG51bSk7Cit9CisKK3ZvaWQgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCSAgICBibGtfdCBibG9jaywgaW50IG51bSkKK3sKKwlpbnQJaTsKKworCWlmICgoYmxvY2sgPCBiaXRtYXAtPnN0YXJ0KSB8fCAoYmxvY2srbnVtLTEgPiBiaXRtYXAtPmVuZCkpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwKEVYVDJfRVRfQkFEX0JMT0NLX01BUkssIGJsb2NrLAorCQkJCSAgIGJpdG1hcC0+ZGVzY3JpcHRpb24pOworCQlyZXR1cm47CisJfQorCWZvciAoaT0wOyBpIDwgbnVtOyBpKyspCisJCWV4dDJmc19mYXN0X3NldF9iaXQoYmxvY2sgKyBpIC0gYml0bWFwLT5zdGFydCwgYml0bWFwLT5iaXRtYXApOworfQorCit2b2lkIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlKGV4dDJmc19ibG9ja19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICAgYmxrX3QgYmxvY2ssIGludCBudW0pCit7CisJaW50CWk7CisKKwlpZiAoKGJsb2NrIDwgYml0bWFwLT5zdGFydCkgfHwgKGJsb2NrK251bS0xID4gYml0bWFwLT5lbmQpKSB7CisJCWV4dDJmc193YXJuX2JpdG1hcChFWFQyX0VUX0JBRF9CTE9DS19VTk1BUkssIGJsb2NrLAorCQkJCSAgIGJpdG1hcC0+ZGVzY3JpcHRpb24pOworCQlyZXR1cm47CisJfQorCWZvciAoaT0wOyBpIDwgbnVtOyBpKyspCisJCWV4dDJmc19mYXN0X2NsZWFyX2JpdChibG9jayArIGkgLSBiaXRtYXAtPnN0YXJ0LAorCQkJCSAgICAgIGJpdG1hcC0+Yml0bWFwKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2VuX2JpdG1hcDY0LmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9nZW5fYml0bWFwNjQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmM3MzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2VuX2JpdG1hcDY0LmMKQEAgLTAsMCArMSw5MDcgQEAKKy8qCisgKiBnZW5fYml0bWFwNjQuYyAtLS0gcm91dGluZXMgdG8gcmVhZCwgd3JpdGUsIGFuZCBtYW5pcHVsYXRlIHRoZSBuZXcgcWlub2RlIGFuZAorICogYmxvY2sgYml0bWFwcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisjaW5jbHVkZSAiYm1hcDY0LmgiCisKKy8qCisgKiBEZXNpZ24gb2YgNjQtYml0IGJpdG1hcHMKKyAqCisgKiBJbiBvcmRlciBtYWludGFpbiBBQkkgY29tcGF0aWJpbGl0eSB3aXRoIHByb2dyYW1zIHRoYXQgZG9uJ3QKKyAqIHVuZGVyc3RhbmQgYWJvdXQgNjQtYml0IGJsb2Nrcy9pbm9kZXMsCisgKiBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKCkgYW5kIGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoKQorICogd2lsbCBjcmVhdGUgb2xkLXN0eWxlIGJpdG1hcHMgdW5sZXNzIHRoZSBhcHBsaWNhdGlvbiBwYXNzZXMgdGhlCisgKiBmbGFnIEVYVDJfRkxBR182NEJJVFMgdG8gZXh0MmZzX29wZW4oKS4gIElmIHRoaXMgZmxhZyBpcworICogcGFzc2VkLCB0aGVuIHdlIGtub3cgdGhlIGFwcGxpY2F0aW9uIGhhcyBiZWVuIHJlY29tcGlsZWQsIHNvIHdlIGNhbgorICogdXNlIHRoZSBuZXctc3R5bGUgYml0bWFwcy4gIElmIGl0IGlzIG5vdCBwYXNzZWQsIHdlIGhhdmUgdG8gcmV0dXJuCisgKiBhbiBlcnJvciBpZiB0cnlpbmcgdG8gb3BlbiBhIGZpbGVzeXN0ZW0gd2hpY2ggbmVlZHMgNjQtYml0IGJpdG1hcHMuCisgKgorICogVGhlIG5ldyBiaXRtYXBzIHVzZSBhIG5ldyBzZXQgb2Ygc3RydWN0dXJlIG1hZ2ljIG51bWJlcnMsIHNvIHRoYXQKKyAqIGJvdGggdGhlIG9sZC1zdHlsZSBhbmQgbmV3LXN0eWxlIGludGVyZmFjZXMgY2FuIGlkZW50aWZ5IHdoaWNoCisgKiB2ZXJzaW9uIG9mIHRoZSBkYXRhIHN0cnVjdHVyZSB3YXMgdXNlZC4gIEJvdGggdGhlIG9sZC1zdHlsZSBhbmQKKyAqIG5ldy1zdHlsZSBpbnRlcmZhY2VzIHdpbGwgc3VwcG9ydCBlaXRoZXIgdHlwZSBvZiBiaXRtYXAsIGFsdGhvdWdoCisgKiBvZiBjb3Vyc2UgNjQtYml0IG9wZXJhdGlvbiB3aWxsIG9ubHkgYmUgcG9zc2libGUgd2hlbiBib3RoIHRoZQorICogbmV3LXN0eWxlIGludGVyZmFjZSBhbmQgdGhlIG5ldy1zdHlsZSBiaXRtYXAgYXJlIHVzZWQuCisgKgorICogRm9yIGV4YW1wbGUsIHRoZSBuZXcgYml0bWFwIGludGVyZmFjZXMgd2lsbCBjaGVjayB0aGUgc3RydWN0dXJlCisgKiBtYWdpYyBudW1iZXJzIGFuZCBzbyB3aWxsIGJlIGFibGUgdG8gZGV0ZWN0IG9sZC1zdHlwZSBiaXRtYXAuICBJZgorICogdGhleSBzZWUgYW4gb2xkLXN0eWxlIGJpdG1hcCwgdGhleSB3aWxsIHBhc3MgaXQgdG8gdGhlIGdlbl9iaXRtYXAuYworICogZnVuY3Rpb25zIGZvciBoYW5kbGluZy4gIFRoZSBzYW1lIHdpbGwgYmUgdHJ1ZSBmb3IgdGhlIG9sZAorICogaW50ZXJmYWNlcyBhcyB3ZWxsLgorICoKKyAqIFRoZSBuZXctc3R5bGUgaW50ZXJmYWNlcyB3aWxsIGhhdmUgc2V2ZXJhbCBkaWZmZXJlbnQgYmFjay1lbmQKKyAqIGltcGxlbWVudGF0aW9ucywgc28gd2UgY2FuIHN1cHBvcnQgZGlmZmVyZW50IGVuY29kaW5ncyB0aGF0IGFyZQorICogYXBwcm9wcmlhdGUgZm9yIGRpZmZlcmVudCBhcHBsaWNhdGlvbnMuICBJbiBnZW5lcmFsIHRoZSBkZWZhdWx0CisgKiBzaG91bGQgYmUgd2hhdGV2ZXIgbWFrZXMgc2Vuc2UsIGFuZCB3aGF0IHRoZSBhcHBsaWNhdGlvbi9saWJyYXJ5CisgKiB3aWxsIHVzZS4gIEhvd2V2ZXIsIGUyZnNjayBtYXkgbmVlZCBzcGVjaWFsaXplZCBpbXBsZW1lbnRhdGlvbnMgZm9yCisgKiBpdHMgb3duIHVzZXMuICBGb3IgZXhhbXBsZSwgd2hlbiBkb2luZyBwYXJlbnQgZGlyZWN0b3J5IHBvaW50ZXIKKyAqIGxvb3AgZGV0ZWN0aW9ucyBpbiBwYXNzIDMsIHRoZSBiaXRtYXAgd2lsbCAqYWx3YXlzKiBiZSBzcGFyc2UsIHNvCisgKiBlMmZzY2sgY2FuIHJlcXVlc3QgYW4gZW5jb2Rpbmcgd2hpY2ggaXMgb3B0aW1pemVkIGZvciB0aGF0LgorICovCisKK3N0YXRpYyB2b2lkIHdhcm5fYml0bWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQlpbnQgY29kZSwgX191NjQgYXJnKQoreworI2lmbmRlZiBPTUlUX0NPTV9FUlIKKwlpZiAoYml0bWFwLT5kZXNjcmlwdGlvbikKKwkJY29tX2VycigwLCBiaXRtYXAtPmJhc2VfZXJyb3JfY29kZStjb2RlLAorCQkJIiMlbGx1IGZvciAlcyIsIGFyZywgYml0bWFwLT5kZXNjcmlwdGlvbik7CisJZWxzZQorCQljb21fZXJyKDAsIGJpdG1hcC0+YmFzZV9lcnJvcl9jb2RlICsgY29kZSwgIiMlbGx1IiwgYXJnKTsKKyNlbmRpZgorfQorCisjaWZkZWYgRU5BQkxFX0JNQVBfU1RBVFNfT1BTCisjZGVmaW5lIElOQ19TVEFUKG1hcCwgbmFtZSkgbWFwLT5zdGF0cy5uYW1lCisjZWxzZQorI2RlZmluZSBJTkNfU1RBVChtYXAsIG5hbWUpIDs7CisjZW5kaWYKKworCitlcnJjb2RlX3QgZXh0MmZzX2FsbG9jX2dlbmVyaWNfYm1hcChleHQyX2ZpbHN5cyBmcywgZXJyY29kZV90IG1hZ2ljLAorCQkJCSAgICBpbnQgdHlwZSwgX191NjQgc3RhcnQsIF9fdTY0IGVuZCwKKwkJCQkgICAgX191NjQgcmVhbF9lbmQsCisJCQkJICAgIGNvbnN0IGNoYXIgKmRlc2NyLAorCQkJCSAgICBleHQyZnNfZ2VuZXJpY19iaXRtYXAgKnJldCkKK3sKKwlleHQyZnNfZ2VuZXJpY19iaXRtYXAJYml0bWFwOworCXN0cnVjdCBleHQyX2JpdG1hcF9vcHMJKm9wczsKKwlleHQyX2lub190IG51bV9kaXJzOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoIXR5cGUpCisJCXR5cGUgPSBFWFQyRlNfQk1BUDY0X0JJVEFSUkFZOworCisJc3dpdGNoICh0eXBlKSB7CisJY2FzZSBFWFQyRlNfQk1BUDY0X0JJVEFSUkFZOgorCQlvcHMgPSAmZXh0MmZzX2Jsa21hcDY0X2JpdGFycmF5OworCQlicmVhazsKKwljYXNlIEVYVDJGU19CTUFQNjRfUkJUUkVFOgorCQlvcHMgPSAmZXh0MmZzX2Jsa21hcDY0X3JidHJlZTsKKwkJYnJlYWs7CisJY2FzZSBFWFQyRlNfQk1BUDY0X0FVVE9ESVI6CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbnVtX2RpcnMoZnMsICZudW1fZGlycyk7CisJCWlmIChyZXR2YWwgfHwgbnVtX2RpcnMgPiAoZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAvIDMyMCkpCisJCQlvcHMgPSAmZXh0MmZzX2Jsa21hcDY0X2JpdGFycmF5OworCQllbHNlCisJCQlvcHMgPSAmZXh0MmZzX2Jsa21hcDY0X3JidHJlZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIEVJTlZBTDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbXplcm8oc2l6ZW9mKHN0cnVjdCBleHQyZnNfc3RydWN0X2dlbmVyaWNfYml0bWFwKSwKKwkJCQkgICAgJmJpdG1hcCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTCisJaWYgKGdldHRpbWVvZmRheSgmYml0bWFwLT5zdGF0cy5jcmVhdGVkLAorCQkJIChzdHJ1Y3QgdGltZXpvbmUgKikgTlVMTCkgPT0gLTEpIHsKKwkJcGVycm9yKCJnZXR0aW1lb2ZkYXkiKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXApOworCQlyZXR1cm4gMTsKKwl9CisJYml0bWFwLT5zdGF0cy50eXBlID0gdHlwZTsKKyNlbmRpZgorCisJLyogWFhYIGZhY3RvciBvdXQsIHJlcGVhdGVkIGluIGNvcHlfYm1hcCAqLworCWJpdG1hcC0+bWFnaWMgPSBtYWdpYzsKKwliaXRtYXAtPmZzID0gZnM7CisJYml0bWFwLT5zdGFydCA9IHN0YXJ0OworCWJpdG1hcC0+ZW5kID0gZW5kOworCWJpdG1hcC0+cmVhbF9lbmQgPSByZWFsX2VuZDsKKwliaXRtYXAtPmJpdG1hcF9vcHMgPSBvcHM7CisJYml0bWFwLT5jbHVzdGVyX2JpdHMgPSAwOworCXN3aXRjaCAobWFnaWMpIHsKKwljYXNlIEVYVDJfRVRfTUFHSUNfSU5PREVfQklUTUFQNjQ6CisJCWJpdG1hcC0+YmFzZV9lcnJvcl9jb2RlID0gRVhUMl9FVF9CQURfSU5PREVfTUFSSzsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VUX01BR0lDX0JMT0NLX0JJVE1BUDY0OgorCQliaXRtYXAtPmJhc2VfZXJyb3JfY29kZSA9IEVYVDJfRVRfQkFEX0JMT0NLX01BUks7CisJCWJpdG1hcC0+Y2x1c3Rlcl9iaXRzID0gZnMtPmNsdXN0ZXJfcmF0aW9fYml0czsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYml0bWFwLT5iYXNlX2Vycm9yX2NvZGUgPSBFWFQyX0VUX0JBRF9HRU5FUklDX01BUks7CisJfQorCWlmIChkZXNjcikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oZGVzY3IpKzEsICZiaXRtYXAtPmRlc2NyaXB0aW9uKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXApOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlzdHJjcHkoYml0bWFwLT5kZXNjcmlwdGlvbiwgZGVzY3IpOworCX0gZWxzZQorCQliaXRtYXAtPmRlc2NyaXB0aW9uID0gMDsKKworCXJldHZhbCA9IGJpdG1hcC0+Yml0bWFwX29wcy0+bmV3X2JtYXAoZnMsIGJpdG1hcCk7CisJaWYgKHJldHZhbCkgeworCQlleHQyZnNfZnJlZV9tZW0oJmJpdG1hcC0+ZGVzY3JpcHRpb24pOworCQlleHQyZnNfZnJlZV9tZW0oJmJpdG1hcCk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJKnJldCA9IGJpdG1hcDsKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTCitzdGF0aWMgdm9pZCBleHQyZnNfcHJpbnRfYm1hcF9zdGF0aXN0aWNzKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXApCit7CisJc3RydWN0IGV4dDJfYm1hcF9zdGF0aXN0aWNzICpzdGF0cyA9ICZiaXRtYXAtPnN0YXRzOworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCWZsb2F0IG1hcmtfc2VxX3BlcmMgPSAwLjAsIHRlc3Rfc2VxX3BlcmMgPSAwLjA7CisJZmxvYXQgbWFya19iYWNrX3BlcmMgPSAwLjAsIHRlc3RfYmFja19wZXJjID0gMC4wOworI2VuZGlmCisJZG91YmxlIGludXNlOworCXN0cnVjdCB0aW1ldmFsIG5vdzsKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCWlmIChzdGF0cy0+dGVzdF9jb3VudCkgeworCQl0ZXN0X3NlcV9wZXJjID0gKChmbG9hdClzdGF0cy0+dGVzdF9zZXEgLworCQkJCSBzdGF0cy0+dGVzdF9jb3VudCkgKiAxMDA7CisJCXRlc3RfYmFja19wZXJjID0gKChmbG9hdClzdGF0cy0+dGVzdF9iYWNrIC8KKwkJCQkgIHN0YXRzLT50ZXN0X2NvdW50KSAqIDEwMDsKKwl9CisKKwlpZiAoc3RhdHMtPm1hcmtfY291bnQpIHsKKwkJbWFya19zZXFfcGVyYyA9ICgoZmxvYXQpc3RhdHMtPm1hcmtfc2VxIC8KKwkJCQkgc3RhdHMtPm1hcmtfY291bnQpICogMTAwOworCQltYXJrX2JhY2tfcGVyYyA9ICgoZmxvYXQpc3RhdHMtPm1hcmtfYmFjayAvCisJCQkJICBzdGF0cy0+bWFya19jb3VudCkgKiAxMDA7CisJfQorI2VuZGlmCisKKwlpZiAoZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgTlVMTCkgPT0gLTEpIHsKKwkJcGVycm9yKCJnZXR0aW1lb2ZkYXkiKTsKKwkJcmV0dXJuOworCX0KKworCWludXNlID0gKGRvdWJsZSkgbm93LnR2X3NlYyArIFwKKwkJKCgoZG91YmxlKSBub3cudHZfdXNlYykgKiAwLjAwMDAwMSk7CisJaW51c2UgLT0gKGRvdWJsZSkgc3RhdHMtPmNyZWF0ZWQudHZfc2VjICsgXAorCQkoKChkb3VibGUpIHN0YXRzLT5jcmVhdGVkLnR2X3VzZWMpICogMC4wMDAwMDEpOworCisJZnByaW50ZihzdGRlcnIsICJcblsrXSAlcyBiaXRtYXAgKHR5cGUgJWQpXG4iLCBiaXRtYXAtPmRlc2NyaXB0aW9uLAorCQlzdGF0cy0+dHlwZSk7CisJZnByaW50ZihzdGRlcnIsICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKyNpZmRlZiBFTkFCTEVfQk1BUF9TVEFUU19PUFMKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmxsdSBiaXRzIGxvbmdcbiIsCisJCWJpdG1hcC0+cmVhbF9lbmQgLSBiaXRtYXAtPnN0YXJ0KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmx1IGNvcHlfYm1hcFxuJTE2bHUgcmVzaXplX2JtYXBcbiIsCisJCXN0YXRzLT5jb3B5X2NvdW50LCBzdGF0cy0+cmVzaXplX2NvdW50KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmx1IG1hcmsgYm1hcFxuJTE2bHUgdW5tYXJrX2JtYXBcbiIsCisJCXN0YXRzLT5tYXJrX2NvdW50LCBzdGF0cy0+dW5tYXJrX2NvdW50KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmx1IHRlc3RfYm1hcFxuJTE2bHUgbWFya19ibWFwX2V4dGVudFxuIiwKKwkJc3RhdHMtPnRlc3RfY291bnQsIHN0YXRzLT5tYXJrX2V4dF9jb3VudCk7CisJZnByaW50ZihzdGRlcnIsICIlMTZsdSB1bm1hcmtfYm1hcF9leHRlbnRcbiIKKwkJIiUxNmx1IHRlc3RfY2xlYXJfYm1hcF9leHRlbnRcbiIsCisJCXN0YXRzLT51bm1hcmtfZXh0X2NvdW50LCBzdGF0cy0+dGVzdF9leHRfY291bnQpOworCWZwcmludGYoc3RkZXJyLCAiJTE2bHUgc2V0X2JtYXBfcmFuZ2VcbiUxNmx1IHNldF9ibWFwX3JhbmdlXG4iLAorCQlzdGF0cy0+c2V0X3JhbmdlX2NvdW50LCBzdGF0cy0+Z2V0X3JhbmdlX2NvdW50KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmx1IGNsZWFyX2JtYXBcbiUxNmx1IGNvbnRpZ3VvdXMgYml0IHRlc3QgKCUuMmYlJSlcbiIsCisJCXN0YXRzLT5jbGVhcl9jb3VudCwgc3RhdHMtPnRlc3Rfc2VxLCB0ZXN0X3NlcV9wZXJjKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiUxNmx1IGNvbnRpZ3VvdXMgYml0IG1hcmsgKCUuMmYlJSlcbiIKKwkJIiUxNmxsdSBiaXRzIHRlc3RlZCBiYWNrd2FyZHMgKCUuMmYlJSlcbiIsCisJCXN0YXRzLT5tYXJrX3NlcSwgbWFya19zZXFfcGVyYywKKwkJc3RhdHMtPnRlc3RfYmFjaywgdGVzdF9iYWNrX3BlcmMpOworCWZwcmludGYoc3RkZXJyLCAiJTE2bGx1IGJpdHMgbWFya2VkIGJhY2t3YXJkcyAoJS4yZiUlKVxuIgorCQkiJTE2LjJmIHNlY29uZHMgaW4gdXNlXG4iLAorCQlzdGF0cy0+bWFya19iYWNrLCBtYXJrX2JhY2tfcGVyYywgaW51c2UpOworI2VuZGlmIC8qIEVOQUJMRV9CTUFQX1NUQVRTX09QUyAqLworfQorI2VuZGlmCisKK3ZvaWQgZXh0MmZzX2ZyZWVfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwKQoreworCWlmICghYm1hcCkKKwkJcmV0dXJuOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkpIHsKKwkJZXh0MmZzX2ZyZWVfZ2VuZXJpY19iaXRtYXAoYm1hcCk7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYm1hcCkpCisJCXJldHVybjsKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTCisJaWYgKGdldGVudigiRTJGU1BST0dTX0JJVE1BUF9TVEFUUyIpKSB7CisJCWV4dDJmc19wcmludF9ibWFwX3N0YXRpc3RpY3MoYm1hcCk7CisJCWJtYXAtPmJpdG1hcF9vcHMtPnByaW50X3N0YXRzKGJtYXApOworCX0KKyNlbmRpZgorCisJYm1hcC0+Yml0bWFwX29wcy0+ZnJlZV9ibWFwKGJtYXApOworCisJaWYgKGJtYXAtPmRlc2NyaXB0aW9uKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYm1hcC0+ZGVzY3JpcHRpb24pOworCQlibWFwLT5kZXNjcmlwdGlvbiA9IDA7CisJfQorCWJtYXAtPm1hZ2ljID0gMDsKKwlleHQyZnNfZnJlZV9tZW0oJmJtYXApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2NvcHlfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBzcmMsCisJCQkJICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwICpkZXN0KQoreworCWNoYXIgKmRlc2NyLCAqbmV3X2Rlc2NyOworCWV4dDJmc19nZW5lcmljX2JpdG1hcAluZXdfYm1hcDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCFzcmMpCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoRVhUMkZTX0lTXzMyX0JJVE1BUChzcmMpKQorCQlyZXR1cm4gZXh0MmZzX2NvcHlfZ2VuZXJpY19iaXRtYXAoc3JjLCBkZXN0KTsKKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChzcmMpKQorCQlyZXR1cm4gRUlOVkFMOworCisJLyogQWxsb2NhdGUgYSBuZXcgYml0bWFwIHN0cnVjdCAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhzaXplb2Yoc3RydWN0IGV4dDJmc19zdHJ1Y3RfZ2VuZXJpY19iaXRtYXApLAorCQkJCSAgICAmbmV3X2JtYXApOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCXNyYy0+c3RhdHMuY29weV9jb3VudCsrOworI2VuZGlmCisjaWZkZWYgRU5BQkxFX0JNQVBfU1RBVFMKKwlpZiAoZ2V0dGltZW9mZGF5KCZuZXdfYm1hcC0+c3RhdHMuY3JlYXRlZCwKKwkJCSAoc3RydWN0IHRpbWV6b25lICopIE5VTEwpID09IC0xKSB7CisJCXBlcnJvcigiZ2V0dGltZW9mZGF5Iik7CisJCWV4dDJmc19mcmVlX21lbSgmbmV3X2JtYXApOworCQlyZXR1cm4gMTsKKwl9CisJbmV3X2JtYXAtPnN0YXRzLnR5cGUgPSBzcmMtPnN0YXRzLnR5cGU7CisjZW5kaWYKKworCS8qIENvcHkgYWxsIHRoZSBoaWdoLWxldmVsIHBhcnRzIG92ZXIgKi8KKwluZXdfYm1hcC0+bWFnaWMgPSBzcmMtPm1hZ2ljOworCW5ld19ibWFwLT5mcyA9IHNyYy0+ZnM7CisJbmV3X2JtYXAtPnN0YXJ0ID0gc3JjLT5zdGFydDsKKwluZXdfYm1hcC0+ZW5kID0gc3JjLT5lbmQ7CisJbmV3X2JtYXAtPnJlYWxfZW5kID0gc3JjLT5yZWFsX2VuZDsKKwluZXdfYm1hcC0+Yml0bWFwX29wcyA9IHNyYy0+Yml0bWFwX29wczsKKwluZXdfYm1hcC0+YmFzZV9lcnJvcl9jb2RlID0gc3JjLT5iYXNlX2Vycm9yX2NvZGU7CisJbmV3X2JtYXAtPmNsdXN0ZXJfYml0cyA9IHNyYy0+Y2x1c3Rlcl9iaXRzOworCisJZGVzY3IgPSBzcmMtPmRlc2NyaXB0aW9uOworCWlmIChkZXNjcikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oZGVzY3IpKzEwLCAmbmV3X2Rlc2NyKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2ZyZWVfbWVtKCZuZXdfYm1hcCk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCXN0cmNweShuZXdfZGVzY3IsICJjb3B5IG9mICIpOworCQlzdHJjYXQobmV3X2Rlc2NyLCBkZXNjcik7CisJCW5ld19ibWFwLT5kZXNjcmlwdGlvbiA9IG5ld19kZXNjcjsKKwl9CisKKwlyZXR2YWwgPSBzcmMtPmJpdG1hcF9vcHMtPmNvcHlfYm1hcChzcmMsIG5ld19ibWFwKTsKKwlpZiAocmV0dmFsKSB7CisJCWV4dDJmc19mcmVlX21lbSgmbmV3X2JtYXAtPmRlc2NyaXB0aW9uKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZuZXdfYm1hcCk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJKmRlc3QgPSBuZXdfYm1hcDsKKworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3Jlc2l6ZV9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtYXAsCisJCQkJICAgICBfX3U2NCBuZXdfZW5kLAorCQkJCSAgICAgX191NjQgbmV3X3JlYWxfZW5kKQoreworCWlmICghYm1hcCkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJtYXApKQorCQlyZXR1cm4gZXh0MmZzX3Jlc2l6ZV9nZW5lcmljX2JpdG1hcChibWFwLT5tYWdpYywgbmV3X2VuZCwKKwkJCQkJCSAgICBuZXdfcmVhbF9lbmQsIGJtYXApOworCisJaWYgKCFFWFQyRlNfSVNfNjRfQklUTUFQKGJtYXApKQorCQlyZXR1cm4gRUlOVkFMOworCisJSU5DX1NUQVQoYm1hcCwgcmVzaXplX2NvdW50KTsKKworCXJldHVybiBibWFwLT5iaXRtYXBfb3BzLT5yZXNpemVfYm1hcChibWFwLCBuZXdfZW5kLCBuZXdfcmVhbF9lbmQpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2Z1ZGdlX2dlbmVyaWNfYm1hcF9lbmQoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJZXJyY29kZV90IG5lcSwKKwkJCQkJX191NjQgZW5kLCBfX3U2NCAqb2VuZCkKK3sKKwlpZiAoIWJpdG1hcCkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJpdG1hcCkpIHsKKwkJZXh0Ml9pbm9fdCB0bXBfb2VuZDsKKwkJaW50IHJldHZhbDsKKworCQlyZXR2YWwgPSBleHQyZnNfZnVkZ2VfZ2VuZXJpY19iaXRtYXBfZW5kKGJpdG1hcCwgYml0bWFwLT5tYWdpYywKKwkJCQkJCQkgbmVxLCBlbmQsICZ0bXBfb2VuZCk7CisJCWlmIChvZW5kKQorCQkJKm9lbmQgPSB0bXBfb2VuZDsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYml0bWFwKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChlbmQgPiBiaXRtYXAtPnJlYWxfZW5kKQorCQlyZXR1cm4gbmVxOworCWlmIChvZW5kKQorCQkqb2VuZCA9IGJpdG1hcC0+ZW5kOworCWJpdG1hcC0+ZW5kID0gZW5kOworCXJldHVybiAwOworfQorCitfX3U2NCBleHQyZnNfZ2V0X2dlbmVyaWNfYm1hcF9zdGFydChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKQoreworCWlmICghYml0bWFwKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYml0bWFwKSkKKwkJcmV0dXJuIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfc3RhcnQoYml0bWFwKTsKKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChiaXRtYXApKQorCQlyZXR1cm4gRUlOVkFMOworCisJcmV0dXJuIGJpdG1hcC0+c3RhcnQ7Cit9CisKK19fdTY0IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX2VuZChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwKQoreworCWlmICghYml0bWFwKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYml0bWFwKSkKKwkJcmV0dXJuIGV4dDJmc19nZXRfZ2VuZXJpY19iaXRtYXBfZW5kKGJpdG1hcCk7CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYml0bWFwKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCXJldHVybiBiaXRtYXAtPmVuZDsKK30KKwordm9pZCBleHQyZnNfY2xlYXJfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXApCit7CisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYml0bWFwKSkKKwkJZXh0MmZzX2NsZWFyX2dlbmVyaWNfYml0bWFwKGJpdG1hcCk7CisJZWxzZQorCQliaXRtYXAtPmJpdG1hcF9vcHMtPmNsZWFyX2JtYXAgKGJpdG1hcCk7Cit9CisKK2ludCBleHQyZnNfbWFya19nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCSAgICAgX191NjQgYXJnKQoreworCWlmICghYml0bWFwKQorCQlyZXR1cm4gMDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJpdG1hcCkpIHsKKwkJaWYgKGFyZyAmIH4weGZmZmZmZmZmVUxMKSB7CisJCQlleHQyZnNfd2Fybl9iaXRtYXAyKGJpdG1hcCwKKwkJCQkJICAgIEVYVDJGU19NQVJLX0VSUk9SLCAweGZmZmZmZmZmKTsKKwkJCXJldHVybiAwOworCQl9CisJCXJldHVybiBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcChiaXRtYXAsIGFyZyk7CisJfQorCisJaWYgKCFFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpCisJCXJldHVybiAwOworCisJYXJnID4+PSBiaXRtYXAtPmNsdXN0ZXJfYml0czsKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCWlmIChhcmcgPT0gYml0bWFwLT5zdGF0cy5sYXN0X21hcmtlZCArIDEpCisJCWJpdG1hcC0+c3RhdHMubWFya19zZXErKzsKKwlpZiAoYXJnIDwgYml0bWFwLT5zdGF0cy5sYXN0X21hcmtlZCkKKwkJYml0bWFwLT5zdGF0cy5tYXJrX2JhY2srKzsKKwliaXRtYXAtPnN0YXRzLmxhc3RfbWFya2VkID0gYXJnOworCWJpdG1hcC0+c3RhdHMubWFya19jb3VudCsrOworI2VuZGlmCisKKwlpZiAoKGFyZyA8IGJpdG1hcC0+c3RhcnQpIHx8IChhcmcgPiBiaXRtYXAtPmVuZCkpIHsKKwkJd2Fybl9iaXRtYXAoYml0bWFwLCBFWFQyRlNfTUFSS19FUlJPUiwgYXJnKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIGJpdG1hcC0+Yml0bWFwX29wcy0+bWFya19ibWFwKGJpdG1hcCwgYXJnKTsKK30KKworaW50IGV4dDJmc191bm1hcmtfZ2VuZXJpY19ibWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBiaXRtYXAsCisJCQkgICAgICAgX191NjQgYXJnKQoreworCWlmICghYml0bWFwKQorCQlyZXR1cm4gMDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJpdG1hcCkpIHsKKwkJaWYgKGFyZyAmIH4weGZmZmZmZmZmVUxMKSB7CisJCQlleHQyZnNfd2Fybl9iaXRtYXAyKGJpdG1hcCwgRVhUMkZTX1VOTUFSS19FUlJPUiwKKwkJCQkJICAgIDB4ZmZmZmZmZmYpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcmV0dXJuIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAoYml0bWFwLCBhcmcpOworCX0KKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChiaXRtYXApKQorCQlyZXR1cm4gMDsKKworCWFyZyA+Pj0gYml0bWFwLT5jbHVzdGVyX2JpdHM7CisKKwlJTkNfU1RBVChiaXRtYXAsIHVubWFya19jb3VudCk7CisKKwlpZiAoKGFyZyA8IGJpdG1hcC0+c3RhcnQpIHx8IChhcmcgPiBiaXRtYXAtPmVuZCkpIHsKKwkJd2Fybl9iaXRtYXAoYml0bWFwLCBFWFQyRlNfVU5NQVJLX0VSUk9SLCBhcmcpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gYml0bWFwLT5iaXRtYXBfb3BzLT51bm1hcmtfYm1hcChiaXRtYXAsIGFyZyk7Cit9CisKK2ludCBleHQyZnNfdGVzdF9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCSAgICAgX191NjQgYXJnKQoreworCWlmICghYml0bWFwKQorCQlyZXR1cm4gMDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJpdG1hcCkpIHsKKwkJaWYgKGFyZyAmIH4weGZmZmZmZmZmVUxMKSB7CisJCQlleHQyZnNfd2Fybl9iaXRtYXAyKGJpdG1hcCwgRVhUMkZTX1RFU1RfRVJST1IsCisJCQkJCSAgICAweGZmZmZmZmZmKTsKKwkJCXJldHVybiAwOworCQl9CisJCXJldHVybiBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcChiaXRtYXAsIGFyZyk7CisJfQorCisJaWYgKCFFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpCisJCXJldHVybiAwOworCisJYXJnID4+PSBiaXRtYXAtPmNsdXN0ZXJfYml0czsKKworI2lmZGVmIEVOQUJMRV9CTUFQX1NUQVRTX09QUworCWJpdG1hcC0+c3RhdHMudGVzdF9jb3VudCsrOworCWlmIChhcmcgPT0gYml0bWFwLT5zdGF0cy5sYXN0X3Rlc3RlZCArIDEpCisJCWJpdG1hcC0+c3RhdHMudGVzdF9zZXErKzsKKwlpZiAoYXJnIDwgYml0bWFwLT5zdGF0cy5sYXN0X3Rlc3RlZCkKKwkJYml0bWFwLT5zdGF0cy50ZXN0X2JhY2srKzsKKwliaXRtYXAtPnN0YXRzLmxhc3RfdGVzdGVkID0gYXJnOworI2VuZGlmCisKKwlpZiAoKGFyZyA8IGJpdG1hcC0+c3RhcnQpIHx8IChhcmcgPiBiaXRtYXAtPmVuZCkpIHsKKwkJd2Fybl9iaXRtYXAoYml0bWFwLCBFWFQyRlNfVEVTVF9FUlJPUiwgYXJnKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIGJpdG1hcC0+Yml0bWFwX29wcy0+dGVzdF9ibWFwKGJpdG1hcCwgYXJnKTsKK30KKworZXJyY29kZV90IGV4dDJmc19zZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwLAorCQkJCQlfX3U2NCBzdGFydCwgdW5zaWduZWQgaW50IG51bSwKKwkJCQkJdm9pZCAqaW4pCit7CisJaWYgKCFibWFwKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkpIHsKKwkJaWYgKChzdGFydCtudW0tMSkgJiB+MHhmZmZmZmZmZlVMTCkgeworCQkJZXh0MmZzX3dhcm5fYml0bWFwMihibWFwLCBFWFQyRlNfVU5NQVJLX0VSUk9SLAorCQkJCQkgICAgMHhmZmZmZmZmZik7CisJCQlyZXR1cm4gRUlOVkFMOworCQl9CisJCXJldHVybiBleHQyZnNfc2V0X2dlbmVyaWNfYml0bWFwX3JhbmdlKGJtYXAsIGJtYXAtPm1hZ2ljLAorCQkJCQkJICAgICAgIHN0YXJ0LCBudW0sIGluKTsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYm1hcCkpCisJCXJldHVybiBFSU5WQUw7CisKKwlJTkNfU1RBVChibWFwLCBzZXRfcmFuZ2VfY291bnQpOworCisJcmV0dXJuIGJtYXAtPmJpdG1hcF9vcHMtPnNldF9ibWFwX3JhbmdlKGJtYXAsIHN0YXJ0LCBudW0sIGluKTsKK30KKworZXJyY29kZV90IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwLAorCQkJCQlfX3U2NCBzdGFydCwgdW5zaWduZWQgaW50IG51bSwKKwkJCQkJdm9pZCAqb3V0KQoreworCWlmICghYm1hcCkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJtYXApKSB7CisJCWlmICgoc3RhcnQrbnVtLTEpICYgfjB4ZmZmZmZmZmZVTEwpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDIoYm1hcCwKKwkJCQkJICAgIEVYVDJGU19VTk1BUktfRVJST1IsIDB4ZmZmZmZmZmYpOworCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCQlyZXR1cm4gZXh0MmZzX2dldF9nZW5lcmljX2JpdG1hcF9yYW5nZShibWFwLCBibWFwLT5tYWdpYywKKwkJCQkJCSAgICAgICBzdGFydCwgbnVtLCBvdXQpOworCX0KKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChibWFwKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCUlOQ19TVEFUKGJtYXAsIGdldF9yYW5nZV9jb3VudCk7CisKKwlyZXR1cm4gYm1hcC0+Yml0bWFwX29wcy0+Z2V0X2JtYXBfcmFuZ2UoYm1hcCwgc3RhcnQsIG51bSwgb3V0KTsKK30KKworZXJyY29kZV90IGV4dDJmc19jb21wYXJlX2dlbmVyaWNfYm1hcChlcnJjb2RlX3QgbmVxLAorCQkJCSAgICAgIGV4dDJmc19nZW5lcmljX2JpdG1hcCBibTEsCisJCQkJICAgICAgZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJtMikKK3sKKwlibGs2NF90CWk7CisKKwlpZiAoIWJtMSB8fCAhYm0yKQorCQlyZXR1cm4gRUlOVkFMOworCWlmIChibTEtPm1hZ2ljICE9IGJtMi0+bWFnaWMpCisJCXJldHVybiBFSU5WQUw7CisKKwkvKiBOb3cgd2Uga25vdyBib3RoIGJpdG1hcHMgaGF2ZSB0aGUgc2FtZSBtYWdpYyAqLworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJtMSkpCisJCXJldHVybiBleHQyZnNfY29tcGFyZV9nZW5lcmljX2JpdG1hcChibTEtPm1hZ2ljLCBuZXEsIGJtMSwgYm0yKTsKKworCWlmICghRVhUMkZTX0lTXzY0X0JJVE1BUChibTEpKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKChibTEtPnN0YXJ0ICE9IGJtMi0+c3RhcnQpIHx8CisJICAgIChibTEtPmVuZCAhPSBibTItPmVuZCkpCisJCXJldHVybiBuZXE7CisKKwlmb3IgKGkgPSBibTEtPmVuZCAtICgoYm0xLT5lbmQgLSBibTEtPnN0YXJ0KSAlIDgpOyBpIDw9IGJtMS0+ZW5kOyBpKyspCisJCWlmIChleHQyZnNfdGVzdF9nZW5lcmljX2JtYXAoYm0xLCBpKSAhPQorCQkgICAgZXh0MmZzX3Rlc3RfZ2VuZXJpY19ibWFwKGJtMiwgaSkpCisJCQlyZXR1cm4gbmVxOworCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgZXh0MmZzX3NldF9nZW5lcmljX2JtYXBfcGFkZGluZyhleHQyZnNfZ2VuZXJpY19iaXRtYXAgYm1hcCkKK3sKKwlfX3U2NAlzdGFydCwgbnVtOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkpIHsKKwkJZXh0MmZzX3NldF9nZW5lcmljX2JpdG1hcF9wYWRkaW5nKGJtYXApOworCQlyZXR1cm47CisJfQorCisJc3RhcnQgPSBibWFwLT5lbmQgKyAxOworCW51bSA9IGJtYXAtPnJlYWxfZW5kIC0gYm1hcC0+ZW5kOworCWJtYXAtPmJpdG1hcF9vcHMtPm1hcmtfYm1hcF9leHRlbnQoYm1hcCwgc3RhcnQsIG51bSk7CisJLyogWFhYIG91Z2h0IHRvIHdhcm4gb24gZXJyb3IgKi8KK30KKworaW50IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwLAorCQkJCSAgICBibGs2NF90IGJsb2NrLCB1bnNpZ25lZCBpbnQgbnVtKQoreworCV9fdTY0CWVuZCA9IGJsb2NrICsgbnVtOworCisJaWYgKCFibWFwKQorCQlyZXR1cm4gRUlOVkFMOworCisJaWYgKG51bSA9PSAxKQorCQlyZXR1cm4gIWV4dDJmc190ZXN0X2dlbmVyaWNfYm1hcCgoZXh0MmZzX2dlbmVyaWNfYml0bWFwKQorCQkJCQkJIGJtYXAsIGJsb2NrKTsKKworCWlmIChFWFQyRlNfSVNfMzJfQklUTUFQKGJtYXApKSB7CisJCWlmICgoYmxvY2srbnVtLTEpICYgfjB4ZmZmZmZmZmZVTEwpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDIoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYm1hcCwKKwkJCQkJICAgIEVYVDJGU19VTk1BUktfRVJST1IsIDB4ZmZmZmZmZmYpOworCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCQlyZXR1cm4gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlKAorCQkJKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYm1hcCwgYmxvY2ssIG51bSk7CisJfQorCisJaWYgKCFFWFQyRlNfSVNfNjRfQklUTUFQKGJtYXApKQorCQlyZXR1cm4gRUlOVkFMOworCisJSU5DX1NUQVQoYm1hcCwgdGVzdF9leHRfY291bnQpOworCisJLyogY29udmVydCB0byBjbHVzdGVycyBpZiBuZWNlc3NhcnkgKi8KKwlibG9jayA+Pj0gYm1hcC0+Y2x1c3Rlcl9iaXRzOworCWVuZCArPSAoMSA8PCBibWFwLT5jbHVzdGVyX2JpdHMpIC0gMTsKKwllbmQgPj49IGJtYXAtPmNsdXN0ZXJfYml0czsKKwludW0gPSBlbmQgLSBibG9jazsKKworCWlmICgoYmxvY2sgPCBibWFwLT5zdGFydCkgfHwgKGJsb2NrK251bS0xID4gYm1hcC0+ZW5kKSkgeworCQlleHQyZnNfd2Fybl9iaXRtYXAoRVhUMl9FVF9CQURfQkxPQ0tfVEVTVCwgYmxvY2ssCisJCQkJICAgYm1hcC0+ZGVzY3JpcHRpb24pOworCQlyZXR1cm4gRUlOVkFMOworCX0KKworCXJldHVybiBibWFwLT5iaXRtYXBfb3BzLT50ZXN0X2NsZWFyX2JtYXBfZXh0ZW50KGJtYXAsIGJsb2NrLCBudW0pOworfQorCit2b2lkIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTIoZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwLAorCQkJCSAgICAgYmxrNjRfdCBibG9jaywgdW5zaWduZWQgaW50IG51bSkKK3sKKwlfX3U2NAllbmQgPSBibG9jayArIG51bTsKKworCWlmICghYm1hcCkKKwkJcmV0dXJuOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkpIHsKKwkJaWYgKChibG9jaytudW0tMSkgJiB+MHhmZmZmZmZmZlVMTCkgeworCQkJZXh0MmZzX3dhcm5fYml0bWFwMigoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBibWFwLAorCQkJCQkgICAgRVhUMkZTX1VOTUFSS19FUlJPUiwgMHhmZmZmZmZmZik7CisJCQlyZXR1cm47CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlKChleHQyZnNfZ2VuZXJpY19iaXRtYXApIGJtYXAsCisJCQkJCSAgICAgICBibG9jaywgbnVtKTsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYm1hcCkpCisJCXJldHVybjsKKworCUlOQ19TVEFUKGJtYXAsIG1hcmtfZXh0X2NvdW50KTsKKworCS8qIGNvbnZlcnQgdG8gY2x1c3RlcnMgaWYgbmVjZXNzYXJ5ICovCisJYmxvY2sgPj49IGJtYXAtPmNsdXN0ZXJfYml0czsKKwllbmQgKz0gKDEgPDwgYm1hcC0+Y2x1c3Rlcl9iaXRzKSAtIDE7CisJZW5kID4+PSBibWFwLT5jbHVzdGVyX2JpdHM7CisJbnVtID0gZW5kIC0gYmxvY2s7CisKKwlpZiAoKGJsb2NrIDwgYm1hcC0+c3RhcnQpIHx8IChibG9jaytudW0tMSA+IGJtYXAtPmVuZCkpIHsKKwkJZXh0MmZzX3dhcm5fYml0bWFwKEVYVDJfRVRfQkFEX0JMT0NLX01BUkssIGJsb2NrLAorCQkJCSAgIGJtYXAtPmRlc2NyaXB0aW9uKTsKKwkJcmV0dXJuOworCX0KKworCWJtYXAtPmJpdG1hcF9vcHMtPm1hcmtfYm1hcF9leHRlbnQoYm1hcCwgYmxvY2ssIG51bSk7Cit9CisKK3ZvaWQgZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCwKKwkJCQkgICAgICAgYmxrNjRfdCBibG9jaywgdW5zaWduZWQgaW50IG51bSkKK3sKKwlfX3U2NAllbmQgPSBibG9jayArIG51bTsKKworCWlmICghYm1hcCkKKwkJcmV0dXJuOworCisJaWYgKEVYVDJGU19JU18zMl9CSVRNQVAoYm1hcCkpIHsKKwkJaWYgKChibG9jaytudW0tMSkgJiB+MHhmZmZmZmZmZlVMTCkgeworCQkJZXh0MmZzX3dhcm5fYml0bWFwMigoZXh0MmZzX2dlbmVyaWNfYml0bWFwKSBibWFwLAorCQkJCQkgICAgRVhUMkZTX1VOTUFSS19FUlJPUiwgMHhmZmZmZmZmZik7CisJCQlyZXR1cm47CisJCX0KKwkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UoKGV4dDJmc19nZW5lcmljX2JpdG1hcCkgYm1hcCwKKwkJCQkJCSBibG9jaywgbnVtKTsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYm1hcCkpCisJCXJldHVybjsKKworCUlOQ19TVEFUKGJtYXAsIHVubWFya19leHRfY291bnQpOworCisJLyogY29udmVydCB0byBjbHVzdGVycyBpZiBuZWNlc3NhcnkgKi8KKwlibG9jayA+Pj0gYm1hcC0+Y2x1c3Rlcl9iaXRzOworCWVuZCArPSAoMSA8PCBibWFwLT5jbHVzdGVyX2JpdHMpIC0gMTsKKwllbmQgPj49IGJtYXAtPmNsdXN0ZXJfYml0czsKKwludW0gPSBlbmQgLSBibG9jazsKKworCWlmICgoYmxvY2sgPCBibWFwLT5zdGFydCkgfHwgKGJsb2NrK251bS0xID4gYm1hcC0+ZW5kKSkgeworCQlleHQyZnNfd2Fybl9iaXRtYXAoRVhUMl9FVF9CQURfQkxPQ0tfVU5NQVJLLCBibG9jaywKKwkJCQkgICBibWFwLT5kZXNjcmlwdGlvbik7CisJCXJldHVybjsKKwl9CisKKwlibWFwLT5iaXRtYXBfb3BzLT51bm1hcmtfYm1hcF9leHRlbnQoYm1hcCwgYmxvY2ssIG51bSk7Cit9CisKK3ZvaWQgZXh0MmZzX3dhcm5fYml0bWFwMzIoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwgY29uc3QgY2hhciAqZnVuYykKK3sKKyNpZm5kZWYgT01JVF9DT01fRVJSCisJaWYgKGJpdG1hcCAmJiBiaXRtYXAtPmRlc2NyaXB0aW9uKQorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkiY2FsbGVkICVzIHdpdGggNjQtYml0IGJpdG1hcCBmb3IgJXMiLCBmdW5jLAorCQkJYml0bWFwLT5kZXNjcmlwdGlvbik7CisJZWxzZQorCQljb21fZXJyKDAsIEVYVDJfRVRfTUFHSUNfR0VORVJJQ19CSVRNQVAsCisJCQkiY2FsbGVkICVzIHdpdGggNjQtYml0IGJpdG1hcCIsIGZ1bmMpOworI2VuZGlmCit9CisKK2VycmNvZGVfdCBleHQyZnNfY29udmVydF9zdWJjbHVzdGVyX2JpdG1hcChleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCAqYml0bWFwKQoreworCWV4dDJmc19ibG9ja19iaXRtYXAJY21hcCwgYm1hcDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlibGs2NF90CQkJaSwgYl9lbmQsIGNfZW5kOworCWludAkJCW4sIHJhdGlvOworCisJYm1hcCA9ICpiaXRtYXA7CisKKwlpZiAoZnMtPmNsdXN0ZXJfcmF0aW9fYml0cyA9PSBleHQyZnNfZ2V0X2JpdG1hcF9ncmFudWxhcml0eShibWFwKSkKKwkJcmV0dXJuIDA7CS8qIE5vdGhpbmcgdG8gZG8gKi8KKworCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoZnMsICJjb252ZXJ0ZWQgY2x1c3RlciBiaXRtYXAiLAorCQkJCQkgICAgICAmY21hcCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWkgPSBibWFwLT5zdGFydDsKKwliX2VuZCA9IGJtYXAtPmVuZDsKKwlibWFwLT5lbmQgPSBibWFwLT5yZWFsX2VuZDsKKwljX2VuZCA9IGNtYXAtPmVuZDsKKwljbWFwLT5lbmQgPSBjbWFwLT5yZWFsX2VuZDsKKwluID0gMDsKKwlyYXRpbyA9IDEgPDwgZnMtPmNsdXN0ZXJfcmF0aW9fYml0czsKKwl3aGlsZSAoaSA8IGJtYXAtPnJlYWxfZW5kKSB7CisJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJtYXAsIGkpKSB7CisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGNtYXAsIGkpOworCQkJaSArPSByYXRpbyAtIG47CisJCQluID0gMDsKKwkJCWNvbnRpbnVlOworCQl9CisJCWkrKzsgbisrOworCQlpZiAobiA+PSByYXRpbykKKwkJCW4gPSAwOworCX0KKwlibWFwLT5lbmQgPSBiX2VuZDsKKwljbWFwLT5lbmQgPSBjX2VuZDsKKwlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAoYm1hcCk7CisJKmJpdG1hcCA9IGNtYXA7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZmluZF9maXJzdF96ZXJvX2dlbmVyaWNfYm1hcChleHQyZnNfZ2VuZXJpY19iaXRtYXAgYml0bWFwLAorCQkJCQkgICAgICBfX3U2NCBzdGFydCwgX191NjQgZW5kLCBfX3U2NCAqb3V0KQoreworCV9fdTY0IGNzdGFydCwgY2VuZCwgY291dDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCFiaXRtYXApCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWJsa190IGJsayA9IDA7CisKKwkJaWYgKCgoc3RhcnQpICYgfjB4ZmZmZmZmZmZVTEwpIHx8CisJCSAgICAoKGVuZCkgJiB+MHhmZmZmZmZmZlVMTCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDIoYml0bWFwLCBFWFQyRlNfVEVTVF9FUlJPUiwgc3RhcnQpOworCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fZ2VuZXJpY19iaXRtYXAoYml0bWFwLCBzdGFydCwKKwkJCQkJCQkgICAgICAgZW5kLCAmYmxrKTsKKwkJaWYgKHJldHZhbCA9PSAwKQorCQkJKm91dCA9IGJsazsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlpZiAoIUVYVDJGU19JU182NF9CSVRNQVAoYml0bWFwKSkKKwkJcmV0dXJuIEVJTlZBTDsKKworCWNzdGFydCA9IHN0YXJ0ID4+IGJpdG1hcC0+Y2x1c3Rlcl9iaXRzOworCWNlbmQgPSBlbmQgPj4gYml0bWFwLT5jbHVzdGVyX2JpdHM7CisKKwlpZiAoY3N0YXJ0IDwgYml0bWFwLT5zdGFydCB8fCBjZW5kID4gYml0bWFwLT5lbmQgfHwgc3RhcnQgPiBlbmQpIHsKKwkJd2Fybl9iaXRtYXAoYml0bWFwLCBFWFQyRlNfVEVTVF9FUlJPUiwgc3RhcnQpOworCQlyZXR1cm4gRUlOVkFMOworCX0KKworCWlmIChiaXRtYXAtPmJpdG1hcF9vcHMtPmZpbmRfZmlyc3RfemVybykgeworCQlyZXR2YWwgPSBiaXRtYXAtPmJpdG1hcF9vcHMtPmZpbmRfZmlyc3RfemVybyhiaXRtYXAsIGNzdGFydCwKKwkJCQkJCQkgICAgIGNlbmQsICZjb3V0KTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJZm91bmQ6CisJCWNvdXQgPDw9IGJpdG1hcC0+Y2x1c3Rlcl9iaXRzOworCQkqb3V0ID0gKGNvdXQgPj0gc3RhcnQpID8gY291dCA6IHN0YXJ0OworCQlyZXR1cm4gMDsKKwl9CisKKwlmb3IgKGNvdXQgPSBjc3RhcnQ7IGNvdXQgPD0gY2VuZDsgY291dCsrKQorCQlpZiAoIWJpdG1hcC0+Yml0bWFwX29wcy0+dGVzdF9ibWFwKGJpdG1hcCwgY291dCkpCisJCQlnb3RvIGZvdW5kOworCisJcmV0dXJuIEVOT0VOVDsKK30KKworZXJyY29kZV90IGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JtYXAoZXh0MmZzX2dlbmVyaWNfYml0bWFwIGJpdG1hcCwKKwkJCQkJICAgICBfX3U2NCBzdGFydCwgX191NjQgZW5kLCBfX3U2NCAqb3V0KQoreworCV9fdTY0IGNzdGFydCwgY2VuZCwgY291dDsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCFiaXRtYXApCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoRVhUMkZTX0lTXzMyX0JJVE1BUChiaXRtYXApKSB7CisJCWJsa190IGJsayA9IDA7CisKKwkJaWYgKCgoc3RhcnQpICYgfjB4ZmZmZmZmZmZVTEwpIHx8CisJCSAgICAoKGVuZCkgJiB+MHhmZmZmZmZmZlVMTCkpIHsKKwkJCWV4dDJmc193YXJuX2JpdG1hcDIoYml0bWFwLCBFWFQyRlNfVEVTVF9FUlJPUiwgc3RhcnQpOworCQkJcmV0dXJuIEVJTlZBTDsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19maW5kX2ZpcnN0X3NldF9nZW5lcmljX2JpdG1hcChiaXRtYXAsIHN0YXJ0LAorCQkJCQkJCSAgICAgIGVuZCwgJmJsayk7CisJCWlmIChyZXR2YWwgPT0gMCkKKwkJCSpvdXQgPSBibGs7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJaWYgKCFFWFQyRlNfSVNfNjRfQklUTUFQKGJpdG1hcCkpCisJCXJldHVybiBFSU5WQUw7CisKKwljc3RhcnQgPSBzdGFydCA+PiBiaXRtYXAtPmNsdXN0ZXJfYml0czsKKwljZW5kID0gZW5kID4+IGJpdG1hcC0+Y2x1c3Rlcl9iaXRzOworCisJaWYgKGNzdGFydCA8IGJpdG1hcC0+c3RhcnQgfHwgY2VuZCA+IGJpdG1hcC0+ZW5kIHx8IHN0YXJ0ID4gZW5kKSB7CisJCXdhcm5fYml0bWFwKGJpdG1hcCwgRVhUMkZTX1RFU1RfRVJST1IsIHN0YXJ0KTsKKwkJcmV0dXJuIEVJTlZBTDsKKwl9CisKKwlpZiAoYml0bWFwLT5iaXRtYXBfb3BzLT5maW5kX2ZpcnN0X3NldCkgeworCQlyZXR2YWwgPSBiaXRtYXAtPmJpdG1hcF9vcHMtPmZpbmRfZmlyc3Rfc2V0KGJpdG1hcCwgY3N0YXJ0LAorCQkJCQkJCSAgICBjZW5kLCAmY291dCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCWZvdW5kOgorCQljb3V0IDw8PSBiaXRtYXAtPmNsdXN0ZXJfYml0czsKKwkJKm91dCA9IChjb3V0ID49IHN0YXJ0KSA/IGNvdXQgOiBzdGFydDsKKwkJcmV0dXJuIDA7CisJfQorCisJZm9yIChjb3V0ID0gY3N0YXJ0OyBjb3V0IDw9IGNlbmQ7IGNvdXQrKykKKwkJaWYgKGJpdG1hcC0+Yml0bWFwX29wcy0+dGVzdF9ibWFwKGJpdG1hcCwgY291dCkpCisJCQlnb3RvIGZvdW5kOworCisJcmV0dXJuIEVOT0VOVDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dlbl9jcmMzMmN0YWJsZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2VuX2NyYzMyY3RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA3NDJlZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dlbl9jcmMzMmN0YWJsZS5jCkBAIC0wLDAgKzEsMTE3IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJjcmMzMmNfZGVmcy5oIgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisKKyNkZWZpbmUgRU5UUklFU19QRVJfTElORSA0CisKKyNpZiBDUkNfTEVfQklUUyA+IDgKKyMgZGVmaW5lIExFX1RBQkxFX1JPV1MgKENSQ19MRV9CSVRTLzgpCisjIGRlZmluZSBMRV9UQUJMRV9TSVpFIDI1NgorI2Vsc2UKKyMgZGVmaW5lIExFX1RBQkxFX1JPV1MgMQorIyBkZWZpbmUgTEVfVEFCTEVfU0laRSAoMSA8PCBDUkNfTEVfQklUUykKKyNlbmRpZgorCisjaWYgQ1JDX0JFX0JJVFMgPiA4CisjIGRlZmluZSBCRV9UQUJMRV9ST1dTIChDUkNfQkVfQklUUy84KQorIyBkZWZpbmUgQkVfVEFCTEVfU0laRSAyNTYKKyNlbHNlCisjIGRlZmluZSBCRV9UQUJMRV9ST1dTIDEKKyMgZGVmaW5lIEJFX1RBQkxFX1NJWkUgKDEgPDwgQ1JDX0JFX0JJVFMpCisjZW5kaWYKKworc3RhdGljIHVpbnQzMl90IGNyYzMydGFibGVfYmVbQkVfVEFCTEVfUk9XU11bMjU2XTsKK3N0YXRpYyB1aW50MzJfdCBjcmMzMmN0YWJsZV9sZVtMRV9UQUJMRV9ST1dTXVsyNTZdOworCisvKioKKyAqIGNyYzMyaW5pdF9sZSgpIC0gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgTEUgdGFibGUgZGF0YQorICoKKyAqIGNyYyBpcyB0aGUgY3JjIG9mIHRoZSBieXRlIGk7IG90aGVyIGVudHJpZXMgYXJlIGZpbGxlZCBpbiBiYXNlZCBvbiB0aGUKKyAqIGZhY3QgdGhhdCBjcmN0YWJsZVtpXmpdID0gY3JjdGFibGVbaV0gXiBjcmN0YWJsZVtqXS4KKyAqCisgKi8KK3N0YXRpYyB2b2lkIGNyYzMyY2luaXRfbGUodm9pZCkKK3sKKwl1bnNpZ25lZCBpLCBqOworCXVpbnQzMl90IGNyYyA9IDE7CisKKwljcmMzMmN0YWJsZV9sZVswXVswXSA9IDA7CisKKwlmb3IgKGkgPSBMRV9UQUJMRV9TSVpFID4+IDE7IGk7IGkgPj49IDEpIHsKKwkJY3JjID0gKGNyYyA+PiAxKSBeICgoY3JjICYgMSkgPyBDUkMzMkNfUE9MWV9MRSA6IDApOworCQlmb3IgKGogPSAwOyBqIDwgTEVfVEFCTEVfU0laRTsgaiArPSAyICogaSkKKwkJCWNyYzMyY3RhYmxlX2xlWzBdW2kgKyBqXSA9IGNyYyBeIGNyYzMyY3RhYmxlX2xlWzBdW2pdOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgTEVfVEFCTEVfU0laRTsgaSsrKSB7CisJCWNyYyA9IGNyYzMyY3RhYmxlX2xlWzBdW2ldOworCQlmb3IgKGogPSAxOyBqIDwgTEVfVEFCTEVfUk9XUzsgaisrKSB7CisJCQljcmMgPSBjcmMzMmN0YWJsZV9sZVswXVtjcmMgJiAweGZmXSBeIChjcmMgPj4gOCk7CisJCQljcmMzMmN0YWJsZV9sZVtqXVtpXSA9IGNyYzsKKwkJfQorCX0KK30KKworLyoqCisgKiBjcmMzMmluaXRfYmUoKSAtIGFsbG9jYXRlIGFuZCBpbml0aWFsaXplIEJFIHRhYmxlIGRhdGEKKyAqLworc3RhdGljIHZvaWQgY3JjMzJpbml0X2JlKHZvaWQpCit7CisJdW5zaWduZWQgaSwgajsKKwl1aW50MzJfdCBjcmMgPSAweDgwMDAwMDAwOworCisJY3JjMzJ0YWJsZV9iZVswXVswXSA9IDA7CisKKwlmb3IgKGkgPSAxOyBpIDwgQkVfVEFCTEVfU0laRTsgaSA8PD0gMSkgeworCQljcmMgPSAoY3JjIDw8IDEpIF4gKChjcmMgJiAweDgwMDAwMDAwKSA/IENSQ1BPTFlfQkUgOiAwKTsKKwkJZm9yIChqID0gMDsgaiA8IGk7IGorKykKKwkJCWNyYzMydGFibGVfYmVbMF1baSArIGpdID0gY3JjIF4gY3JjMzJ0YWJsZV9iZVswXVtqXTsKKwl9CisJZm9yIChpID0gMDsgaSA8IEJFX1RBQkxFX1NJWkU7IGkrKykgeworCQljcmMgPSBjcmMzMnRhYmxlX2JlWzBdW2ldOworCQlmb3IgKGogPSAxOyBqIDwgQkVfVEFCTEVfUk9XUzsgaisrKSB7CisJCQljcmMgPSBjcmMzMnRhYmxlX2JlWzBdWyhjcmMgPj4gMjQpICYgMHhmZl0gXiAoY3JjIDw8IDgpOworCQkJY3JjMzJ0YWJsZV9iZVtqXVtpXSA9IGNyYzsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgb3V0cHV0X3RhYmxlKHVpbnQzMl90ICgqdGFibGUpWzI1Nl0sIGludCByb3dzLCBpbnQgbGVuLCBjaGFyICp0cmFucykKK3sKKwlpbnQgaSwgajsKKworCWZvciAoaiA9IDAgOyBqIDwgcm93czsgaisrKSB7CisJCXByaW50ZigieyIpOworCQlmb3IgKGkgPSAwOyBpIDwgbGVuIC0gMTsgaSsrKSB7CisJCQlpZiAoaSAlIEVOVFJJRVNfUEVSX0xJTkUgPT0gMCkKKwkJCQlwcmludGYoIlxuIik7CisJCQlwcmludGYoIiVzKDB4JTguOHhMKSwgIiwgdHJhbnMsIHRhYmxlW2pdW2ldKTsKKwkJfQorCQlwcmludGYoIiVzKDB4JTguOHhMKX0sXG4iLCB0cmFucywgdGFibGVbal1bbGVuIC0gMV0pOworCX0KK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXByaW50ZigiLyogdGhpcyBmaWxlIGlzIGdlbmVyYXRlZCAtIGRvIG5vdCBlZGl0ICovXG5cbiIpOworCisJaWYgKENSQ19CRV9CSVRTID4gMSkgeworCQljcmMzMmluaXRfYmUoKTsKKwkJcHJpbnRmKCJzdGF0aWMgY29uc3QgdWludDMyX3QgIgorCQkgICAgICAgImNyYzMydGFibGVfYmVbJWRdWyVkXSA9IHsiLAorCQkgICAgICAgQkVfVEFCTEVfUk9XUywgQkVfVEFCTEVfU0laRSk7CisJCW91dHB1dF90YWJsZShjcmMzMnRhYmxlX2JlLCBMRV9UQUJMRV9ST1dTLAorCQkJICAgICBCRV9UQUJMRV9TSVpFLCAidG9iZSIpOworCQlwcmludGYoIn07XG4iKTsKKwl9CisJaWYgKENSQ19MRV9CSVRTID4gMSkgeworCQljcmMzMmNpbml0X2xlKCk7CisJCXByaW50Zigic3RhdGljIGNvbnN0IHVpbnQzMl90ICIKKwkJICAgICAgICJjcmMzMmN0YWJsZV9sZVslZF1bJWRdID0geyIsCisJCSAgICAgICBMRV9UQUJMRV9ST1dTLCBMRV9UQUJMRV9TSVpFKTsKKwkJb3V0cHV0X3RhYmxlKGNyYzMyY3RhYmxlX2xlLCBMRV9UQUJMRV9ST1dTLAorCQkJICAgICBMRV9UQUJMRV9TSVpFLCAidG9sZSIpOworCQlwcmludGYoIn07XG4iKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dldF9udW1fZGlycy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2V0X251bV9kaXJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2NDRmOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dldF9udW1fZGlycy5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBnZXRfbnVtX2RpcnMuYyAtLSBjYWxjdWxhdGUgbnVtYmVyIG9mIGRpcmVjdG9yaWVzCisgKgorICogQ29weXJpZ2h0IDE5OTcgYnkgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworLyoKKyAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkaXJlY3RvcmllcyBpbiB0aGUgZmlsZXN5c3RlbSBhcyByZXBvcnRlZCBieQorICogdGhlIGdyb3VwIGRlc2NyaXB0b3JzLiAgT2YgY291cnNlLCB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgY291bGQgYmUKKyAqIHdyb25nIQorICovCitlcnJjb2RlX3QgZXh0MmZzX2dldF9udW1fZGlycyhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCAqcmV0X251bV9kaXJzKQoreworCWRncnBfdAlpOworCWV4dDJfaW5vX3QJbnVtX2RpcnMsIG1heF9kaXJzOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCW51bV9kaXJzID0gMDsKKwltYXhfZGlycyA9IGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwOworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWlmIChleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGZzLCBpKSA+IG1heF9kaXJzKQorCQkJbnVtX2RpcnMgKz0gbWF4X2RpcnMgLyA4OworCQllbHNlCisJCQludW1fZGlycyArPSBleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50KGZzLCBpKTsKKwl9CisJaWYgKG51bV9kaXJzID4gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCkKKwkJbnVtX2RpcnMgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCisJKnJldF9udW1fZGlycyA9IG51bV9kaXJzOworCisJcmV0dXJuIDA7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dldF9wYXRobmFtZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2V0X3BhdGhuYW1lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM5Yzc2NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dldF9wYXRobmFtZS5jCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogZ2V0X3BhdGhuYW1lLmMgLS0tIGRvIGRpcmVjdHJ5L2lub2RlIC0+IG5hbWUgdHJhbnNsYXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qCisgKgorICogCWV4dDJmc19nZXRfcGF0aG5hbWUoZnMsIGRpciwgaW5vLCBuYW1lKQorICoKKyAqIAlUaGlzIGZ1bmN0aW9uIHRyYW5zbGF0ZXMgdGFrZXMgdHdvIGlub2RlIG51bWJlcnMgaW50byBhCisgKiAJc3RyaW5nLCBwbGFjaW5nIHRoZSByZXN1bHQgaW4gPG5hbWU+LiAgPGRpcj4gaXMgdGhlIGNvbnRhaW5pbmcKKyAqIAlkaXJlY3RvcnkgaW5vZGUsIGFuZCA8aW5vPiBpcyB0aGUgaW5vZGUgbnVtYmVyIGl0c2VsZi4gIElmCisgKiAJPGlubz4gaXMgemVybywgdGhlbiBleHQyZnNfZ2V0X3BhdGhuYW1lIHdpbGwgcmV0dXJuIHBhdGhuYW1lCisgKiAJb2YgdGhlIHRoZSBkaXJlY3RvcnkgPGRpcj4uCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitzdHJ1Y3QgZ2V0X3BhdGhuYW1lX3N0cnVjdCB7CisJZXh0Ml9pbm9fdAlzZWFyY2hfaW5vOworCWV4dDJfaW5vX3QJcGFyZW50OworCWNoYXIJCSpuYW1lOworCWVycmNvZGVfdAllcnJjb2RlOworfTsKKworI2lmZGVmIF9fVFVSQk9DX18KKyAjcHJhZ21hIGFyZ3N1c2VkCisjZW5kaWYKK3N0YXRpYyBpbnQgZ2V0X3BhdGhuYW1lX3Byb2Moc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQsCisJCQkgICAgIGludAlvZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgY2hhcgkqYnVmIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgdm9pZAkqcHJpdl9kYXRhKQoreworCXN0cnVjdCBnZXRfcGF0aG5hbWVfc3RydWN0CSpncDsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisJaW50IG5hbWVfbGVuID0gZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpOworCisJZ3AgPSAoc3RydWN0IGdldF9wYXRobmFtZV9zdHJ1Y3QgKikgcHJpdl9kYXRhOworCisJaWYgKChuYW1lX2xlbiA9PSAyKSAmJiAhc3RybmNtcChkaXJlbnQtPm5hbWUsICIuLiIsIDIpKQorCQlncC0+cGFyZW50ID0gZGlyZW50LT5pbm9kZTsKKwlpZiAoZGlyZW50LT5pbm9kZSA9PSBncC0+c2VhcmNoX2lubykgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShuYW1lX2xlbiArIDEsICZncC0+bmFtZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWdwLT5lcnJjb2RlID0gcmV0dmFsOworCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwkJfQorCQlzdHJuY3B5KGdwLT5uYW1lLCBkaXJlbnQtPm5hbWUsIG5hbWVfbGVuKTsKKwkJZ3AtPm5hbWVbbmFtZV9sZW5dID0gJ1wwJzsKKwkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2dldF9wYXRobmFtZV9pbnQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLAorCQkJCQkgZXh0Ml9pbm9fdCBpbm8sIGludCBtYXhkZXB0aCwKKwkJCQkJIGNoYXIgKmJ1ZiwgY2hhciAqKm5hbWUpCit7CisJc3RydWN0IGdldF9wYXRobmFtZV9zdHJ1Y3QgZ3A7CisJY2hhcgkqcGFyZW50X25hbWUgPSAwLCAqcmV0OworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAoZGlyID09IGlubykgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbSgyLCBuYW1lKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCXN0cmNweSgqbmFtZSwgKGRpciA9PSBFWFQyX1JPT1RfSU5PKSA/ICIvIiA6ICIuIik7CisJCXJldHVybiAwOworCX0KKworCWlmICghZGlyIHx8IChtYXhkZXB0aCA8IDApKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKDQsIG5hbWUpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJc3RyY3B5KCpuYW1lLCAiLi4uIik7CisJCXJldHVybiAwOworCX0KKworCWdwLnNlYXJjaF9pbm8gPSBpbm87CisJZ3AucGFyZW50ID0gMDsKKwlncC5uYW1lID0gMDsKKwlncC5lcnJjb2RlID0gMDsKKworCXJldHZhbCA9IGV4dDJmc19kaXJfaXRlcmF0ZShmcywgZGlyLCAwLCBidWYsIGdldF9wYXRobmFtZV9wcm9jLCAmZ3ApOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9OT19ESVJFQ1RPUlkpIHsKKwkJY2hhciB0bXBbMzJdOworCisJCWlmIChpbm8pCisJCQlzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiPCV1Pi88JXU+IiwgZGlyLCBpbm8pOworCQllbHNlCisJCQlzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiPCV1PiIsIGRpcik7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHN0cmxlbih0bXApKzEsIG5hbWUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCQlzdHJjcHkoKm5hbWUsIHRtcCk7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaWYgKGdwLmVycmNvZGUpIHsKKwkJcmV0dmFsID0gZ3AuZXJyY29kZTsKKwkJZ290byBjbGVhbnVwOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfcGF0aG5hbWVfaW50KGZzLCBncC5wYXJlbnQsIGRpciwgbWF4ZGVwdGgtMSwKKwkJCQkJIGJ1ZiwgJnBhcmVudF9uYW1lKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaWYgKCFpbm8pIHsKKwkJKm5hbWUgPSBwYXJlbnRfbmFtZTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGdwLm5hbWUpCisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHN0cmxlbihwYXJlbnRfbmFtZSkrc3RybGVuKGdwLm5hbWUpKzIsCisJCQkJCSZyZXQpOworCWVsc2UKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc3RybGVuKHBhcmVudF9uYW1lKSs1LCAmcmV0KTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlyZXRbMF0gPSAwOworCWlmIChwYXJlbnRfbmFtZVsxXSkKKwkJc3RyY2F0KHJldCwgcGFyZW50X25hbWUpOworCXN0cmNhdChyZXQsICIvIik7CisJaWYgKGdwLm5hbWUpCisJCXN0cmNhdChyZXQsIGdwLm5hbWUpOworCWVsc2UKKwkJc3RyY2F0KHJldCwgIj8/PyIpOworCSpuYW1lID0gcmV0OworCXJldHZhbCA9IDA7CisKK2NsZWFudXA6CisJZXh0MmZzX2ZyZWVfbWVtKCZwYXJlbnRfbmFtZSk7CisJZXh0MmZzX2ZyZWVfbWVtKCZncC5uYW1lKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2dldF9wYXRobmFtZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXIsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICAgY2hhciAqKm5hbWUpCit7CisJY2hhcgkqYnVmOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAoZGlyID09IGlubykKKwkJaW5vID0gMDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X3BhdGhuYW1lX2ludChmcywgZGlyLCBpbm8sIDMyLCBidWYsIG5hbWUpOworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9nZXRzZWN0c2l6ZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2V0c2VjdHNpemUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTdiZjU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvZ2V0c2VjdHNpemUuYwpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIGdldHNlY3RzaXplLmMgLS0tIGdldCB0aGUgc2VjdG9yIHNpemUgb2YgYSBkZXZpY2UuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk1IFRoZW9kb3JlIFRzJ28uCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgVk13YXJlLCBJbmMuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaWZkZWYgSEFWRV9MSU5VWF9GRF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bGludXgvZmQuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX0lPKQorI2lmICFkZWZpbmVkKEJMS1NTWkdFVCkKKyNkZWZpbmUgQkxLU1NaR0VUICBfSU8oMHgxMiwxMDQpLyogZ2V0IGJsb2NrIGRldmljZSBzZWN0b3Igc2l6ZSAqLworI2VuZGlmCisjaWYgIWRlZmluZWQoQkxLUEJTWkdFVCkKKyNkZWZpbmUgQkxLUEJTWkdFVCBfSU8oMHgxMiwxMjMpLyogZ2V0IGJsb2NrIHBoeXNpY2FsIHNlY3RvciBzaXplICovCisjZW5kaWYKKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisvKgorICogUmV0dXJucyB0aGUgbG9naWNhbCBzZWN0b3Igc2l6ZSBvZiBhIGRldmljZQorICovCitlcnJjb2RlX3QgZXh0MmZzX2dldF9kZXZpY2Vfc2VjdHNpemUoY29uc3QgY2hhciAqZmlsZSwgaW50ICpzZWN0c2l6ZSkKK3sKKwlpbnQJZmQ7CisKKwlmZCA9IGV4dDJmc19vcGVuX2ZpbGUoZmlsZSwgT19SRE9OTFksIDApOworCWlmIChmZCA8IDApCisJCXJldHVybiBlcnJubzsKKworI2lmZGVmIEJMS1NTWkdFVAorCWlmIChpb2N0bChmZCwgQkxLU1NaR0VULCBzZWN0c2l6ZSkgPj0gMCkgeworCQljbG9zZShmZCk7CisJCXJldHVybiAwOworCX0KKyNlbmRpZgorCSpzZWN0c2l6ZSA9IDA7CisJY2xvc2UoZmQpOworCXJldHVybiAwOworfQorCisvKgorICogUmV0dXJuIGRlc2lyZWQgYWxpZ25tZW50IGZvciBkaXJlY3QgSS9PCisgKi8KK2ludCBleHQyZnNfZ2V0X2Rpb19hbGlnbm1lbnQoaW50IGZkKQoreworCWludCBhbGlnbiA9IDA7CisKKyNpZmRlZiBCTEtTU1pHRVQKKwlpZiAoaW9jdGwoZmQsIEJMS1NTWkdFVCwgJmFsaWduKSA8IDApCisJCWFsaWduID0gMDsKKyNlbmRpZgorCisjaWZkZWYgX1NDX1BBR0VTSVpFCisJaWYgKGFsaWduIDw9IDApCisJCWFsaWduID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRQQUdFU0laRQorCWlmIChhbGlnbiA8PSAwKQorCQlhbGlnbiA9IGdldHBhZ2VzaXplKCk7CisjZW5kaWYKKwlpZiAoYWxpZ24gPD0gMCkKKwkJYWxpZ24gPSA0MDk2OworCisJcmV0dXJuIGFsaWduOworfQorCisvKgorICogUmV0dXJucyB0aGUgcGh5c2ljYWwgc2VjdG9yIHNpemUgb2YgYSBkZXZpY2UKKyAqLworZXJyY29kZV90IGV4dDJmc19nZXRfZGV2aWNlX3BoeXNfc2VjdHNpemUoY29uc3QgY2hhciAqZmlsZSwgaW50ICpzZWN0c2l6ZSkKK3sKKwlpbnQJZmQ7CisKKwlmZCA9IGV4dDJmc19vcGVuX2ZpbGUoZmlsZSwgT19SRE9OTFksIDApOworCWlmIChmZCA8IDApCisJCXJldHVybiBlcnJubzsKKworI2lmZGVmIEJMS1BCU1pHRVQKKwlpZiAoaW9jdGwoZmQsIEJMS1BCU1pHRVQsIHNlY3RzaXplKSA+PSAwKSB7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuIDA7CisJfQorI2VuZGlmCisJKnNlY3RzaXplID0gMDsKKwljbG9zZShmZCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9nZXRzaXplLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9nZXRzaXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODljMzNkNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2dldHNpemUuYwpAQCAtMCwwICsxLDMxMiBAQAorLyoKKyAqIGdldHNpemUuYyAtLS0gZ2V0IHRoZSBzaXplIG9mIGEgcGFydGl0aW9uLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NSBUaGVvZG9yZSBUcydvLgorICogQ29weXJpZ2h0IChDKSAyMDAzIFZNd2FyZSwgSW5jLgorICoKKyAqIFdpbmRvd3MgdmVyc2lvbiBvZiBleHQyZnNfZ2V0X2RldmljZV9zaXplIGJ5IENocmlzIExpLCBWTXdhcmUuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9GRF9ICisjaW5jbHVkZSA8bGludXgvZmQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0RJU0tMQUJFTF9ICisjaW5jbHVkZSA8c3lzL2Rpc2tsYWJlbC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfRElTS19ICisjaW5jbHVkZSA8c3lzL2Rpc2suaD4KKyNlbmRpZgorI2lmZGVmIF9fbGludXhfXworI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9JTykgJiYgIWRlZmluZWQoQkxLR0VUU0laRSkKKyNkZWZpbmUgQkxLR0VUU0laRSBfSU8oMHgxMiw5NikJLyogcmV0dXJuIGRldmljZSBzaXplICovCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9JT1IpICYmICFkZWZpbmVkKEJMS0dFVFNJWkU2NCkKKyNkZWZpbmUgQkxLR0VUU0laRTY0IF9JT1IoMHgxMiwxMTQsc2l6ZV90KQkvKiByZXR1cm4gZGV2aWNlIHNpemUgaW4gYnl0ZXMgKHU2NCAqYXJnKSAqLworI2VuZGlmCisKKyNpZmRlZiBBUFBMRV9EQVJXSU4KKyNkZWZpbmUgQkxLR0VUU0laRSBES0lPQ0dFVEJMT0NLQ09VTlQzMgorI2VuZGlmIC8qIEFQUExFX0RBUldJTiAqLworCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisjaWYgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkIChXSU4zMikKKyNpbmNsdWRlICJ3aW5kb3dzLmgiCisjaW5jbHVkZSAid2luaW9jdGwuaCIKKworI2lmIChfV0lOMzJfV0lOTlQgPj0gMHgwNTAwKQorI2RlZmluZSBIQVZFX0dFVF9GSUxFX1NJWkVfRVggMQorI2VuZGlmCisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X2RldmljZV9zaXplKGNvbnN0IGNoYXIgKmZpbGUsIGludCBibG9ja3NpemUsCisJCQkJIGJsa190ICpyZXRibG9ja3MpCit7CisJSEFORExFIGRldjsKKwlQQVJUSVRJT05fSU5GT1JNQVRJT04gcGk7CisJRElTS19HRU9NRVRSWSBnaTsKKwlEV09SRCByZXRieXRlczsKKyNpZmRlZiBIQVZFX0dFVF9GSUxFX1NJWkVfRVgKKwlMQVJHRV9JTlRFR0VSIGZpbGVzaXplOworI2Vsc2UKKwlEV09SRCBmaWxlc2l6ZTsKKyNlbmRpZiAvKiBIQVZFX0dFVF9GSUxFX1NJWkVfRVggKi8KKworCWRldiA9IENyZWF0ZUZpbGUoZmlsZSwgR0VORVJJQ19SRUFELAorCQkJIEZJTEVfU0hBUkVfUkVBRCB8IEZJTEVfU0hBUkVfV1JJVEUgLAorICAgICAgICAgICAgICAgIAkgTlVMTCwgIE9QRU5fRVhJU1RJTkcsIEZJTEVfQVRUUklCVVRFX05PUk1BTCwgIE5VTEwpOworCisJaWYgKGRldiA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKwkJcmV0dXJuIEVCQURGOworCWlmIChEZXZpY2VJb0NvbnRyb2woZGV2LCBJT0NUTF9ESVNLX0dFVF9QQVJUSVRJT05fSU5GTywKKwkJCSAgICAmcGksIHNpemVvZihQQVJUSVRJT05fSU5GT1JNQVRJT04pLAorCQkJICAgICZwaSwgc2l6ZW9mKFBBUlRJVElPTl9JTkZPUk1BVElPTiksCisJCQkgICAgJnJldGJ5dGVzLCBOVUxMKSkgeworCisJCSpyZXRibG9ja3MgPSBwaS5QYXJ0aXRpb25MZW5ndGguUXVhZFBhcnQgLyBibG9ja3NpemU7CisKKwl9IGVsc2UgaWYgKERldmljZUlvQ29udHJvbChkZXYsIElPQ1RMX0RJU0tfR0VUX0RSSVZFX0dFT01FVFJZLAorCQkJCSZnaSwgc2l6ZW9mKERJU0tfR0VPTUVUUlkpLAorCQkJCSZnaSwgc2l6ZW9mKERJU0tfR0VPTUVUUlkpLAorCQkJCSZyZXRieXRlcywgTlVMTCkpIHsKKworCQkqcmV0YmxvY2tzID0gZ2kuQnl0ZXNQZXJTZWN0b3IgKgorCQkJICAgICBnaS5TZWN0b3JzUGVyVHJhY2sgKgorCQkJICAgICBnaS5UcmFja3NQZXJDeWxpbmRlciAqCisJCQkgICAgIGdpLkN5bGluZGVycy5RdWFkUGFydCAvIGJsb2Nrc2l6ZTsKKworI2lmZGVmIEhBVkVfR0VUX0ZJTEVfU0laRV9FWAorCX0gZWxzZSBpZiAoR2V0RmlsZVNpemVFeChkZXYsICZmaWxlc2l6ZSkpIHsKKwkJKnJldGJsb2NrcyA9IGZpbGVzaXplLlF1YWRQYXJ0IC8gYmxvY2tzaXplOworCX0KKyNlbHNlCisJfSBlbHNlIHsKKwkJZmlsZXNpemUgPSBHZXRGaWxlU2l6ZShkZXYsIE5VTEwpOworCQlpZiAoSU5WQUxJRF9GSUxFX1NJWkUgIT0gZmlsZXNpemUpIHsKKwkJCSpyZXRibG9ja3MgPSBmaWxlc2l6ZSAvIGJsb2Nrc2l6ZTsKKwkJfQorCX0KKyNlbmRpZiAvKiBIQVZFX0dFVF9GSUxFX1NJWkVfRVggKi8KKworCUNsb3NlSGFuZGxlKGRldik7CisJcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKK3N0YXRpYyBpbnQgdmFsaWRfb2Zmc2V0IChpbnQgZmQsIGV4dDJfbG9mZl90IG9mZnNldCkKK3sKKwljaGFyIGNoOworCisJaWYgKGV4dDJmc19sbHNlZWsgKGZkLCBvZmZzZXQsIDApIDwgMCkKKwkJcmV0dXJuIDA7CisJaWYgKHJlYWQgKGZkLCAmY2gsIDEpIDwgMSkKKwkJcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYmxvY2tzIGluIGEgcGFydGl0aW9uCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZ2V0X2RldmljZV9zaXplMihjb25zdCBjaGFyICpmaWxlLCBpbnQgYmxvY2tzaXplLAorCQkJCSAgYmxrNjRfdCAqcmV0YmxvY2tzKQoreworCWludAlmZCwgcmMgPSAwOworCXVuc2lnbmVkIGxvbmcgbG9uZyBzaXplNjQ7CisJZXh0Ml9sb2ZmX3QgaGlnaCwgbG93OworCisJZmQgPSBleHQyZnNfb3Blbl9maWxlKGZpbGUsIE9fUkRPTkxZLCAwKTsKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gZXJybm87CisKKyNpZmRlZiBES0lPQ0dFVEJMT0NLQ09VTlQJLyogRm9yIEFwcGxlIERhcndpbiAqLworCWlmIChpb2N0bChmZCwgREtJT0NHRVRCTE9DS0NPVU5ULCAmc2l6ZTY0KSA+PSAwKSB7CisJCSpyZXRibG9ja3MgPSBzaXplNjQgLyAoYmxvY2tzaXplIC8gNTEyKTsKKwkJZ290byBvdXQ7CisJfQorI2VuZGlmCisKKyNpZmRlZiBCTEtHRVRTSVpFNjQKKwl7CisJCWludCB2YWxpZF9ibGtnZXRzaXplNjQgPSAxOworI2lmZGVmIF9fbGludXhfXworCQlzdHJ1Y3QgdXRzbmFtZSB1dDsKKworCQlpZiAoKHVuYW1lKCZ1dCkgPT0gMCkgJiYKKwkJICAgICgodXQucmVsZWFzZVswXSA9PSAnMicpICYmICh1dC5yZWxlYXNlWzFdID09ICcuJykgJiYKKwkJICAgICAodXQucmVsZWFzZVsyXSA8ICc2JykgJiYgKHV0LnJlbGVhc2VbM10gPT0gJy4nKSkpCisJCQl2YWxpZF9ibGtnZXRzaXplNjQgPSAwOworI2VuZGlmCisJCWlmICh2YWxpZF9ibGtnZXRzaXplNjQgJiYKKwkJICAgIGlvY3RsKGZkLCBCTEtHRVRTSVpFNjQsICZzaXplNjQpID49IDApIHsKKwkJCSpyZXRibG9ja3MgPSBzaXplNjQgLyBibG9ja3NpemU7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKyNlbmRpZiAvKiBCTEtHRVRTSVpFNjQgKi8KKworI2lmZGVmIEJMS0dFVFNJWkUKKwl7CisJCXVuc2lnbmVkIGxvbmcJc2l6ZTsKKworCQlpZiAoaW9jdGwoZmQsIEJMS0dFVFNJWkUsICZzaXplKSA+PSAwKSB7CisJCQkqcmV0YmxvY2tzID0gc2l6ZSAvIChibG9ja3NpemUgLyA1MTIpOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisjZW5kaWYKKworI2lmZGVmIEZER0VUUFJNCisJeworCQlzdHJ1Y3QgZmxvcHB5X3N0cnVjdCB0aGlzX2Zsb3BweTsKKworCQlpZiAoaW9jdGwoZmQsIEZER0VUUFJNLCAmdGhpc19mbG9wcHkpID49IDApIHsKKwkJCSpyZXRibG9ja3MgPSB0aGlzX2Zsb3BweS5zaXplIC8gKGJsb2Nrc2l6ZSAvIDUxMik7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKKwl7CisJCWludCBwYXJ0OworCQlzdHJ1Y3QgZGlza2xhYmVsIGxhYjsKKwkJc3RydWN0IHBhcnRpdGlvbiAqcHA7CisJCWNoYXIgY2g7CisKKyNpZiBkZWZpbmVkKERJT0NHTUVESUFTSVpFKQorCQl7CisJCQlvZmZfdCBtczsKKwkJCXVfaW50IGJzOworCQkJaWYgKGlvY3RsKGZkLCBESU9DR01FRElBU0laRSwgJm1zKSA+PSAwKSB7CisJCQkJKnJldGJsb2NrcyA9IG1zIC8gYmxvY2tzaXplOworCQkJCWdvdG8gb3V0OworCQkJfQorCQl9CisjZWxpZiBkZWZpbmVkKERJT0NHRElORk8pCisJCS8qIG9sZCBkaXNrbGFiZWwgaW50ZXJmYWNlICovCisJCXBhcnQgPSBzdHJsZW4oZmlsZSkgLSAxOworCQlpZiAocGFydCA+PSAwKSB7CisJCQljaCA9IGZpbGVbcGFydF07CisJCQlpZiAoaXNkaWdpdChjaCkpCisJCQkJcGFydCA9IDA7CisJCQllbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ2gnKQorCQkJCXBhcnQgPSBjaCAtICdhJzsKKwkJCWVsc2UKKwkJCQlwYXJ0ID0gLTE7CisJCX0KKwkJaWYgKHBhcnQgPj0gMCAmJiAoaW9jdGwoZmQsIERJT0NHRElORk8sIChjaGFyICopJmxhYikgPj0gMCkpIHsKKwkJCXBwID0gJmxhYi5kX3BhcnRpdGlvbnNbcGFydF07CisJCQlpZiAocHAtPnBfc2l6ZSkgeworCQkJCSpyZXRibG9ja3MgPSBwcC0+cF9zaXplIC8gKGJsb2Nrc2l6ZSAvIDUxMik7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0KKyNlbmRpZiAvKiBkZWZpbmVkKERJT0NHKikgKi8KKwl9CisjZW5kaWYgLyogSEFWRV9TWVNfRElTS0xBQkVMX0ggKi8KKworCXsKKwkJZXh0MmZzX3N0cnVjdF9zdGF0IHN0OworCisJCWlmIChleHQyZnNfZnN0YXQoZmQsICZzdCkgPT0gMCkKKwkJCWlmIChTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisJCQkJKnJldGJsb2NrcyA9IHN0LnN0X3NpemUgLyBibG9ja3NpemU7CisJCQkJZ290byBvdXQ7CisJCQl9CisJfQorCisJLyoKKwkgKiBPSywgd2UgY291bGRuJ3QgZmlndXJlIGl0IG91dCBieSB1c2luZyBhIHNwZWNpYWxpemVkIGlvY3RsLAorCSAqIHdoaWNoIGlzIGdlbmVyYWxseSB0aGUgYmVzdCB3YXkuICBTbyBkbyBiaW5hcnkgc2VhcmNoIHRvCisJICogZmluZCB0aGUgc2l6ZSBvZiB0aGUgcGFydGl0aW9uLgorCSAqLworCWxvdyA9IDA7CisJZm9yIChoaWdoID0gMTAyNDsgdmFsaWRfb2Zmc2V0KGZkLCBoaWdoKTsgaGlnaCAqPSAyKQorCQlsb3cgPSBoaWdoOworCXdoaWxlIChsb3cgPCBoaWdoIC0gMSkgeworCQljb25zdCBleHQyX2xvZmZfdCBtaWQgPSAobG93ICsgaGlnaCkgLyAyOworCisJCWlmICh2YWxpZF9vZmZzZXQgKGZkLCBtaWQpKQorCQkJbG93ID0gbWlkOworCQllbHNlCisJCQloaWdoID0gbWlkOworCX0KKwl2YWxpZF9vZmZzZXQoZmQsIDApOworCXNpemU2NCA9IGxvdyArIDE7CisJKnJldGJsb2NrcyA9IHNpemU2NCAvIGJsb2Nrc2l6ZTsKK291dDoKKwljbG9zZShmZCk7CisJcmV0dXJuIHJjOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZShjb25zdCBjaGFyICpmaWxlLCBpbnQgYmxvY2tzaXplLAorCQkJCSBibGtfdCAqcmV0YmxvY2tzKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdAlibG9ja3M7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2RldmljZV9zaXplMihmaWxlLCBibG9ja3NpemUsICZibG9ja3MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJaWYgKGJsb2NrcyA+PSAoMVVMTCA8PCAzMikpCisJCXJldHVybiBFRkJJRzsKKwkqcmV0YmxvY2tzID0gKGJsa190KSBibG9ja3M7CisJcmV0dXJuIDA7Cit9CisKKyNlbmRpZiAvKiBXSU4zMiAqLworCisjaWZkZWYgREVCVUcKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlibGtfdAlibG9ja3M7CisJaW50CXJldHZhbDsKKworCWlmIChhcmdjIDwgMikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBkZXZpY2VcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfZGV2aWNlX3NpemUoYXJndlsxXSwgMTAyNCwgJmJsb2Nrcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCSJ3aGlsZSBjYWxsaW5nIGV4dDJmc19nZXRfZGV2aWNlX3NpemUiKTsKKwkJZXhpdCgxKTsKKwl9CisJcHJpbnRmKCJEZXZpY2UgJXMgaGFzICV1IDFrIGJsb2Nrcy5cbiIsIGFyZ3ZbMV0sIGJsb2Nrcyk7CisJZXhpdCgwKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvaV9ibG9jay5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaV9ibG9jay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZWNmMDIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pX2Jsb2NrLmMKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIGlfYmxvY2suYyAtLS0gTWFuYWdlIHRoZSBpX2Jsb2NrIGZpZWxkIGZvciBpX2Jsb2NrcworICoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitlcnJjb2RlX3QgZXh0MmZzX2libGtfYWRkX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSBibGs2NF90IG51bV9ibG9ja3MpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIGIgPSBpbm9kZS0+aV9ibG9ja3M7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShmcy0+c3VwZXIpKQorCQliICs9ICgobG9uZyBsb25nKSBpbm9kZS0+b3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSkgPDwgMzI7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9odWdlX2ZpbGUoZnMtPnN1cGVyKSB8fAorCSAgICAhKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9IVUdFX0ZJTEVfRkwpKQorCSAgICBudW1fYmxvY2tzICo9IGZzLT5ibG9ja3NpemUgLyA1MTI7CisJbnVtX2Jsb2NrcyAqPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisKKwliICs9IG51bV9ibG9ja3M7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShmcy0+c3VwZXIpKQorCQlpbm9kZS0+b3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSA9IGIgPj4gMzI7CisJZWxzZSBpZiAoYiA+IDB4RkZGRkZGRkYpCisJCXJldHVybiBFT1ZFUkZMT1c7CisJaW5vZGUtPmlfYmxvY2tzID0gYiAmIDB4RkZGRkZGRkY7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfaWJsa19zdWJfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJIGJsazY0X3QgbnVtX2Jsb2NrcykKK3sKKwl1bnNpZ25lZCBsb25nIGxvbmcgYiA9IGlub2RlLT5pX2Jsb2NrczsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikpCisJCWIgKz0gKChsb25nIGxvbmcpIGlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpKSA8PCAzMjsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShmcy0+c3VwZXIpIHx8CisJICAgICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0hVR0VfRklMRV9GTCkpCisJICAgIG51bV9ibG9ja3MgKj0gZnMtPmJsb2Nrc2l6ZSAvIDUxMjsKKwludW1fYmxvY2tzICo9IEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKTsKKworCWlmIChudW1fYmxvY2tzID4gYikKKwkJcmV0dXJuIEVPVkVSRkxPVzsKKworCWIgLT0gbnVtX2Jsb2NrczsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikpCisJCWlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpID0gYiA+PiAzMjsKKwlpbm9kZS0+aV9ibG9ja3MgPSBiICYgMHhGRkZGRkZGRjsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19pYmxrX3NldChleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBibGs2NF90IGIpCit7CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgfHwKKwkgICAgIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfSFVHRV9GSUxFX0ZMKSkKKwkJYiAqPSBmcy0+YmxvY2tzaXplIC8gNTEyOworCWIgKj0gRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpOworCisJaW5vZGUtPmlfYmxvY2tzID0gYiAmIDB4RkZGRkZGRkY7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9odWdlX2ZpbGUoZnMtPnN1cGVyKSkKKwkJaW5vZGUtPm9zZDIubGludXgyLmxfaV9ibG9ja3NfaGkgPSBiID4+IDMyOworCWVsc2UgaWYgKGIgPj4gMzIpCisJCXJldHVybiBFT1ZFUkZMT1c7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pY291bnQuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ljb3VudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NGIxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pY291bnQuYwpAQCAtMCwwICsxLDg3MyBAQAorLyoKKyAqIGljb3VudC5jIC0tLSBhbiBlZmZpY2llbnQgaW5vZGUgY291bnQgYWJzdHJhY3Rpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgInRkYi5oIgorCisvKgorICogVGhlIGRhdGEgc3RvcmFnZSBzdHJhdGVneSB1c2VkIGJ5IGljb3VudCByZWxpZXMgb24gdGhlIG9ic2VydmF0aW9uCisgKiB0aGF0IG1vc3QgaW5vZGUgY291bnRzIGFyZSBlaXRoZXIgemVybyAoZm9yIG5vbi1hbGxvY2F0ZWQgaW5vZGVzKSwKKyAqIG9uZSAoZm9yIG1vc3QgZmlsZXMpLCBhbmQgb25seSBhIGZldyB0aGF0IGFyZSB0d28gb3IgbW9yZQorICogKGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB0aGF0IGFyZSBsaW5rZWQgdG8gbW9yZSB0aGFuIG9uZSBkaXJlY3RvcnkpLgorICoKKyAqIEFsc28sIGUyZnNjayB0ZW5kcyB0byBsb2FkIHRoZSBpY291bnQgZGF0YSBzZXF1ZW50aWFsbHkuCisgKgorICogU28sIHdlIHVzZSBhbiBpbm9kZSBiaXRtYXAgdG8gaW5kaWNhdGUgd2hpY2ggaW5vZGVzIGhhdmUgYSBjb3VudCBvZgorICogb25lLCBhbmQgdGhlbiB1c2UgYSBzb3J0ZWQgbGlzdCB0byBzdG9yZSB0aGUgY291bnRzIGZvciBpbm9kZXMKKyAqIHdoaWNoIGFyZSBncmVhdGVyIHRoYW4gb25lLgorICoKKyAqIFdlIGFsc28gdXNlIGFuIG9wdGlvbmFsIGJpdG1hcCB0byBpbmRpY2F0ZSB3aGljaCBpbm9kZXMgYXJlIGFscmVhZHkKKyAqIGluIHRoZSBzb3J0ZWQgbGlzdCwgdG8gc3BlZWQgdXAgdGhlIHVzZSBvZiB0aGlzIGFic3RyYWN0aW9uIGJ5CisgKiBlMmZzY2sncyBwYXNzIDIuICBQYXNzIDIgaW5jcmVtZW50cyBpbm9kZSBjb3VudHMgYXMgaXQgZmluZHMgdGhlbSwKKyAqIHNvIHRoaXMgZXh0cmEgYml0bWFwIGF2b2lkcyBzZWFyY2hpbmcgdGhlIHNvcnRlZCBsaXN0IHRvIHNlZSBpZiBhCisgKiBwYXJ0aWN1bGFyIGlub2RlIGlzIG9uIHRoZSBzb3J0ZWQgbGlzdCBhbHJlYWR5LgorICovCisKK3N0cnVjdCBleHQyX2ljb3VudF9lbCB7CisJZXh0Ml9pbm9fdAlpbm87CisJX191MzIJCWNvdW50OworfTsKKworc3RydWN0IGV4dDJfaWNvdW50IHsKKwllcnJjb2RlX3QJCW1hZ2ljOworCWV4dDJmc19pbm9kZV9iaXRtYXAJc2luZ2xlOworCWV4dDJmc19pbm9kZV9iaXRtYXAJbXVsdGlwbGU7CisJZXh0Ml9pbm9fdAkJY291bnQ7CisJZXh0Ml9pbm9fdAkJc2l6ZTsKKwlleHQyX2lub190CQludW1faW5vZGVzOworCWV4dDJfaW5vX3QJCWN1cnNvcjsKKwlzdHJ1Y3QgZXh0Ml9pY291bnRfZWwJKmxpc3Q7CisJc3RydWN0IGV4dDJfaWNvdW50X2VsCSpsYXN0X2xvb2t1cDsKKyNpZmRlZiBDT05GSUdfVERCCisJY2hhcgkJCSp0ZGJfZm47CisJVERCX0NPTlRFWFQJCSp0ZGI7CisjZW5kaWYKK307CisKKy8qCisgKiBXZSBub3cgdXNlIGEgMzItYml0IGNvdW50ZXIgZmllbGQgYmVjYXVzZSBpdCBkb2Vzbid0IGNvc3QgdXMKKyAqIGFueXRoaW5nIGV4dHJhIGZvciB0aGUgaW4tbWVtb3J5IGRhdGEgc3RydWN0dXJlLCBkdWUgdG8gYWxpZ25tZW50CisgKiBwYWRkaW5nLiAgQnV0IHRoZXJlJ3Mgbm8gcG9pbnQgY2hhbmdpbmcgdGhlIGludGVyZmFjZSBpZiBtb3N0IG9mCisgKiB0aGUgdGltZSB3ZSBvbmx5IGNhcmUgaWYgdGhlIG51bWJlciBpcyBiaWdnZXIgdGhhbiA2NSwwMDAgb3Igbm90LgorICogU28gdXNlIHRoZSBmb2xsb3dpbmcgdHJhbnNsYXRpb24gZnVuY3Rpb24gdG8gcmV0dXJuIGEgMTYtYml0IGNvdW50LgorICovCisjZGVmaW5lIGljb3VudF8xNl94bGF0ZSh4KSAoKCh4KSA+IDY1NTAwKSA/IDY1NTAwIDogKHgpKQorCit2b2lkIGV4dDJmc19mcmVlX2ljb3VudChleHQyX2ljb3VudF90IGljb3VudCkKK3sKKwlpZiAoIWljb3VudCkKKwkJcmV0dXJuOworCisJaWNvdW50LT5tYWdpYyA9IDA7CisJaWYgKGljb3VudC0+bGlzdCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpY291bnQtPmxpc3QpOworCWlmIChpY291bnQtPnNpbmdsZSkKKwkJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGljb3VudC0+c2luZ2xlKTsKKwlpZiAoaWNvdW50LT5tdWx0aXBsZSkKKwkJZXh0MmZzX2ZyZWVfaW5vZGVfYml0bWFwKGljb3VudC0+bXVsdGlwbGUpOworI2lmZGVmIENPTkZJR19UREIKKwlpZiAoaWNvdW50LT50ZGIpCisJCXRkYl9jbG9zZShpY291bnQtPnRkYik7CisJaWYgKGljb3VudC0+dGRiX2ZuKSB7CisJCXVubGluayhpY291bnQtPnRkYl9mbik7CisJCWZyZWUoaWNvdW50LT50ZGJfZm4pOworCX0KKyNlbmRpZgorCisJZXh0MmZzX2ZyZWVfbWVtKCZpY291bnQpOworfQorCitzdGF0aWMgZXJyY29kZV90IGFsbG9jX2ljb3VudChleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzLCBleHQyX2ljb3VudF90ICpyZXQpCit7CisJZXh0Ml9pY291bnRfdAlpY291bnQ7CisJZXJyY29kZV90CXJldHZhbDsKKworCSpyZXQgPSAwOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX2ljb3VudCksICZpY291bnQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJbWVtc2V0KGljb3VudCwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2ljb3VudCkpOworCisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2lub2RlX2JpdG1hcChmcywgImljb3VudCIsICZpY291bnQtPnNpbmdsZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoZmxhZ3MgJiBFWFQyX0lDT1VOVF9PUFRfSU5DUkVNRU5UKSB7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9pbm9kZV9iaXRtYXAoZnMsICJpY291bnRfaW5jIiwKKwkJCQkJCSAgICAgICZpY291bnQtPm11bHRpcGxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0gZWxzZQorCQlpY291bnQtPm11bHRpcGxlID0gMDsKKworCWljb3VudC0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0lDT1VOVDsKKwlpY291bnQtPm51bV9pbm9kZXMgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCisJKnJldCA9IGljb3VudDsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWV4dDJmc19mcmVlX2ljb3VudChpY291bnQpOworCXJldHVybihyZXR2YWwpOworfQorCisjaWZkZWYgQ09ORklHX1REQgorc3RydWN0IHV1aWQgeworCV9fdTMyCXRpbWVfbG93OworCV9fdTE2CXRpbWVfbWlkOworCV9fdTE2CXRpbWVfaGlfYW5kX3ZlcnNpb247CisJX191MTYJY2xvY2tfc2VxOworCV9fdTgJbm9kZVs2XTsKK307CisKK3N0YXRpYyB2b2lkIHVucGFja191dWlkKHZvaWQgKmluLCBzdHJ1Y3QgdXVpZCAqdXUpCit7CisJX191OAkqcHRyID0gaW47CisJX191MzIJdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdG1wID0gKHRtcCA8PCA4KSB8ICpwdHIrKzsKKwl0bXAgPSAodG1wIDw8IDgpIHwgKnB0cisrOworCXV1LT50aW1lX2xvdyA9IHRtcDsKKworCXRtcCA9ICpwdHIrKzsKKwl0bXAgPSAodG1wIDw8IDgpIHwgKnB0cisrOworCXV1LT50aW1lX21pZCA9IHRtcDsKKworCXRtcCA9ICpwdHIrKzsKKwl0bXAgPSAodG1wIDw8IDgpIHwgKnB0cisrOworCXV1LT50aW1lX2hpX2FuZF92ZXJzaW9uID0gdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPmNsb2NrX3NlcSA9IHRtcDsKKworCW1lbWNweSh1dS0+bm9kZSwgcHRyLCA2KTsKK30KKworc3RhdGljIHZvaWQgdXVpZF91bnBhcnNlKHZvaWQgKnV1LCBjaGFyICpvdXQpCit7CisJc3RydWN0IHV1aWQgdXVpZDsKKworCXVucGFja191dWlkKHV1LCAmdXVpZCk7CisJc3ByaW50ZihvdXQsCisJCSIlMDh4LSUwNHgtJTA0eC0lMDJ4JTAyeC0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorCQl1dWlkLnRpbWVfbG93LCB1dWlkLnRpbWVfbWlkLCB1dWlkLnRpbWVfaGlfYW5kX3ZlcnNpb24sCisJCXV1aWQuY2xvY2tfc2VxID4+IDgsIHV1aWQuY2xvY2tfc2VxICYgMHhGRiwKKwkJdXVpZC5ub2RlWzBdLCB1dWlkLm5vZGVbMV0sIHV1aWQubm9kZVsyXSwKKwkJdXVpZC5ub2RlWzNdLCB1dWlkLm5vZGVbNF0sIHV1aWQubm9kZVs1XSk7Cit9CisjZW5kaWYKKworZXJyY29kZV90IGV4dDJmc19jcmVhdGVfaWNvdW50X3RkYihleHQyX2ZpbHN5cyBmcyBFWFQyRlNfTk9fVERCX1VOVVNFRCwKKwkJCQkgICBjaGFyICp0ZGJfZGlyIEVYVDJGU19OT19UREJfVU5VU0VELAorCQkJCSAgIGludCBmbGFncyBFWFQyRlNfTk9fVERCX1VOVVNFRCwKKwkJCQkgICBleHQyX2ljb3VudF90ICpyZXQgRVhUMkZTX05PX1REQl9VTlVTRUQpCit7CisjaWZkZWYgQ09ORklHX1REQgorCWV4dDJfaWNvdW50X3QJaWNvdW50OworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhciAJCSpmbiwgdXVpZFs0MF07CisJZXh0Ml9pbm9fdAludW1faW5vZGVzOworCW1vZGVfdAkJc2F2ZV91bWFzazsKKwlpbnQJCWZkOworCisJcmV0dmFsID0gYWxsb2NfaWNvdW50KGZzLCBmbGFncywgICZpY291bnQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4odGRiX2RpcikgKyA2NCwgJmZuKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwl1dWlkX3VucGFyc2UoZnMtPnN1cGVyLT5zX3V1aWQsIHV1aWQpOworCXNwcmludGYoZm4sICIlcy8lcy1pY291bnQtWFhYWFhYIiwgdGRiX2RpciwgdXVpZCk7CisJc2F2ZV91bWFzayA9IHVtYXNrKDA3Nyk7CisJZmQgPSBta3N0ZW1wKGZuKTsKKwlpZiAoZmQgPCAwKSB7CisJCXJldHZhbCA9IGVycm5vOworCQlleHQyZnNfZnJlZV9tZW0oJmZuKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCWljb3VudC0+dGRiX2ZuID0gZm47CisJdW1hc2soc2F2ZV91bWFzayk7CisJLyoKKwkgKiBUaGlzIGlzIGFuIG92ZXJlc3RpbWF0ZSBvZiB0aGUgc2l6ZSB0aGF0IHdlIHdpbGwgbmVlZDsgdGhlCisJICogaWRlYWwgdmFsdWUgaXMgdGhlIG51bWJlciBvZiB1c2VkIGlub2RlcyB3aXRoIGEgY291bnQKKwkgKiBncmVhdGVyIHRoYW4gMS4gIE9UT0ggdGhlIHRpbWVzIHdoZW4gd2UgcmVhbGx5IG5lZWQgdGhpcyBpcworCSAqIHdpdGggdGhlIGJhY2t1cCBwcm9ncmFtcyB0aGF0IHVzZSBsb3RzIG9mIGhhcmQgbGlua3MsIGluCisJICogd2hpY2ggY2FzZSB0aGUgbnVtYmVyIG9mIGlub2RlcyBpbiB1c2UgYXBwcm9hY2hlcyB0aGUgaWRlYWwKKwkgKiB2YWx1ZS4KKwkgKi8KKwludW1faW5vZGVzID0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAtIGZzLT5zdXBlci0+c19mcmVlX2lub2Rlc19jb3VudDsKKworCWljb3VudC0+dGRiID0gdGRiX29wZW4oZm4sIG51bV9pbm9kZXMsIFREQl9OT0xPQ0sgfCBUREJfTk9TWU5DLAorCQkJICAgICAgIE9fUkRXUiB8IE9fQ1JFQVQgfCBPX1RSVU5DLCAwNjAwKTsKKwljbG9zZShmZCk7CisJaWYgKGljb3VudC0+dGRiID09IE5VTEwpIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWdvdG8gZXJyb3V0OworCX0KKwkqcmV0ID0gaWNvdW50OworCXJldHVybiAwOworZXJyb3V0OgorCWV4dDJmc19mcmVlX2ljb3VudChpY291bnQpOworCXJldHVybihyZXR2YWwpOworI2Vsc2UKKwlyZXR1cm4gRVhUMl9FVF9VTklNUExFTUVOVEVEOworI2VuZGlmCit9CisKK2VycmNvZGVfdCBleHQyZnNfY3JlYXRlX2ljb3VudDIoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywgdW5zaWduZWQgaW50IHNpemUsCisJCQkJZXh0Ml9pY291bnRfdCBoaW50LCBleHQyX2ljb3VudF90ICpyZXQpCit7CisJZXh0Ml9pY291bnRfdAlpY291bnQ7CisJZXJyY29kZV90CXJldHZhbDsKKwlzaXplX3QJCWJ5dGVzOworCWV4dDJfaW5vX3QJaTsKKworCWlmIChoaW50KSB7CisJCUVYVDJfQ0hFQ0tfTUFHSUMoaGludCwgRVhUMl9FVF9NQUdJQ19JQ09VTlQpOworCQlpZiAoaGludC0+c2l6ZSA+IHNpemUpCisJCQlzaXplID0gKHNpemVfdCkgaGludC0+c2l6ZTsKKwl9CisKKwlyZXR2YWwgPSBhbGxvY19pY291bnQoZnMsIGZsYWdzLCAmaWNvdW50KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKHNpemUpIHsKKwkJaWNvdW50LT5zaXplID0gc2l6ZTsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBGaWd1cmUgb3V0IGhvdyBtYW55IHNwZWNpYWwgY2FzZSBpbm9kZSBjb3VudHMgd2Ugd2lsbAorCQkgKiBoYXZlLiAgV2Uga25vdyB3ZSB3aWxsIG5lZWQgb25lIGZvciBlYWNoIGRpcmVjdG9yeTsKKwkJICogd2UgYWxzbyBuZWVkIHRvIHJlc2VydmUgc29tZSBleHRyYSByb29tIGZvciBmaWxlIGxpbmtzCisJCSAqLworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X251bV9kaXJzKGZzLCAmaWNvdW50LT5zaXplKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQlpY291bnQtPnNpemUgKz0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAvIDUwOworCX0KKworCWJ5dGVzID0gKHNpemVfdCkgKGljb3VudC0+c2l6ZSAqIHNpemVvZihzdHJ1Y3QgZXh0Ml9pY291bnRfZWwpKTsKKyNpZiAwCisJcHJpbnRmKCJJY291bnQgYWxsb2NhdGVkICV1IGVudHJpZXMsICVkIGJ5dGVzLlxuIiwKKwkgICAgICAgaWNvdW50LT5zaXplLCBieXRlcyk7CisjZW5kaWYKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGljb3VudC0+c2l6ZSwgc2l6ZW9mKHN0cnVjdCBleHQyX2ljb3VudF9lbCksCisJCQkgJmljb3VudC0+bGlzdCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KGljb3VudC0+bGlzdCwgMCwgYnl0ZXMpOworCisJaWNvdW50LT5jb3VudCA9IDA7CisJaWNvdW50LT5jdXJzb3IgPSAwOworCisJLyoKKwkgKiBQb3B1bGF0ZSB0aGUgc29ydGVkIGxpc3Qgd2l0aCB0aG9zZSBlbnRyaWVzIHdoaWNoIHdlcmUKKwkgKiBmb3VuZCBpbiB0aGUgaGludCBpY291bnQgKHNpbmNlIHRob3NlIGFyZSBvbmVzIHdoaWNoIHdpbGwKKwkgKiBsaWtlbHkgbmVlZCB0byBiZSBpbiB0aGUgc29ydGVkIGxpc3QgdGhpcyB0aW1lIGFyb3VuZCkuCisJICovCisJaWYgKGhpbnQpIHsKKwkJZm9yIChpPTA7IGkgPCBoaW50LT5jb3VudDsgaSsrKQorCQkJaWNvdW50LT5saXN0W2ldLmlubyA9IGhpbnQtPmxpc3RbaV0uaW5vOworCQlpY291bnQtPmNvdW50ID0gaGludC0+Y291bnQ7CisJfQorCisJKnJldCA9IGljb3VudDsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWV4dDJmc19mcmVlX2ljb3VudChpY291bnQpOworCXJldHVybihyZXR2YWwpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9pY291bnQoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncywKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSwKKwkJCSAgICAgICBleHQyX2ljb3VudF90ICpyZXQpCit7CisJcmV0dXJuIGV4dDJmc19jcmVhdGVfaWNvdW50MihmcywgZmxhZ3MsIHNpemUsIDAsIHJldCk7Cit9CisKKy8qCisgKiBpbnNlcnRfaWNvdW50X2VsKCkgLS0tIEluc2VydCBhIG5ldyBlbnRyeSBpbnRvIHRoZSBzb3J0ZWQgbGlzdCBhdCBhCisgKiAJc3BlY2lmaWVkIHBvc2l0aW9uLgorICovCitzdGF0aWMgc3RydWN0IGV4dDJfaWNvdW50X2VsICppbnNlcnRfaWNvdW50X2VsKGV4dDJfaWNvdW50X3QgaWNvdW50LAorCQkJCQkgICAgZXh0Ml9pbm9fdCBpbm8sIGludCBwb3MpCit7CisJc3RydWN0IGV4dDJfaWNvdW50X2VsIAkqZWw7CisJZXJyY29kZV90CQlyZXR2YWw7CisJZXh0Ml9pbm9fdAkJbmV3X3NpemUgPSAwOworCWludAkJCW51bTsKKworCWlmIChpY291bnQtPmxhc3RfbG9va3VwICYmIGljb3VudC0+bGFzdF9sb29rdXAtPmlubyA9PSBpbm8pCisJCXJldHVybiBpY291bnQtPmxhc3RfbG9va3VwOworCisJaWYgKGljb3VudC0+Y291bnQgPj0gaWNvdW50LT5zaXplKSB7CisJCWlmIChpY291bnQtPmNvdW50KSB7CisJCQluZXdfc2l6ZSA9IGljb3VudC0+bGlzdFsodW5zaWduZWQpaWNvdW50LT5jb3VudC0xXS5pbm87CisJCQluZXdfc2l6ZSA9IChleHQyX2lub190KSAoaWNvdW50LT5jb3VudCAqCisJCQkJKChmbG9hdCkgaWNvdW50LT5udW1faW5vZGVzIC8gbmV3X3NpemUpKTsKKwkJfQorCQlpZiAobmV3X3NpemUgPCAoaWNvdW50LT5zaXplICsgMTAwKSkKKwkJCW5ld19zaXplID0gaWNvdW50LT5zaXplICsgMTAwOworI2lmIDAKKwkJcHJpbnRmKCJSZWFsbG9jYXRpbmcgaWNvdW50ICV1IGVudHJpZXMuLi5cbiIsIG5ld19zaXplKTsKKyNlbmRpZgorCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX21lbSgoc2l6ZV90KSBpY291bnQtPnNpemUgKgorCQkJCQkgICBzaXplb2Yoc3RydWN0IGV4dDJfaWNvdW50X2VsKSwKKwkJCQkJICAgKHNpemVfdCkgbmV3X3NpemUgKgorCQkJCQkgICBzaXplb2Yoc3RydWN0IGV4dDJfaWNvdW50X2VsKSwKKwkJCQkJICAgJmljb3VudC0+bGlzdCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gMDsKKwkJaWNvdW50LT5zaXplID0gbmV3X3NpemU7CisJfQorCW51bSA9IChpbnQpIGljb3VudC0+Y291bnQgLSBwb3M7CisJaWYgKG51bSA8IDApCisJCXJldHVybiAwOwkvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCisJaWYgKG51bSkgeworCQltZW1tb3ZlKCZpY291bnQtPmxpc3RbcG9zKzFdLCAmaWNvdW50LT5saXN0W3Bvc10sCisJCQlzaXplb2Yoc3RydWN0IGV4dDJfaWNvdW50X2VsKSAqIG51bSk7CisJfQorCWljb3VudC0+Y291bnQrKzsKKwllbCA9ICZpY291bnQtPmxpc3RbcG9zXTsKKwllbC0+Y291bnQgPSAwOworCWVsLT5pbm8gPSBpbm87CisJaWNvdW50LT5sYXN0X2xvb2t1cCA9IGVsOworCXJldHVybiBlbDsKK30KKworLyoKKyAqIGdldF9pY291bnRfZWwoKSAtLS0gZ2l2ZW4gYW4gaW5vZGUgbnVtYmVyLCB0cnkgdG8gZmluZCBpY291bnQKKyAqIAlpbmZvcm1hdGlvbiBpbiB0aGUgc29ydGVkIGxpc3QuICBJZiB0aGUgY3JlYXRlIGZsYWcgaXMgc2V0LAorICogCWFuZCB3ZSBjYW4ndCBmaW5kIGFuIGVudHJ5LCBjcmVhdGUgb25lIGluIHRoZSBzb3J0ZWQgbGlzdC4KKyAqLworc3RhdGljIHN0cnVjdCBleHQyX2ljb3VudF9lbCAqZ2V0X2ljb3VudF9lbChleHQyX2ljb3VudF90IGljb3VudCwKKwkJCQkJICAgIGV4dDJfaW5vX3QgaW5vLCBpbnQgY3JlYXRlKQoreworCWludAlsb3csIGhpZ2gsIG1pZDsKKworCWlmICghaWNvdW50IHx8ICFpY291bnQtPmxpc3QpCisJCXJldHVybiAwOworCisJaWYgKGNyZWF0ZSAmJiAoKGljb3VudC0+Y291bnQgPT0gMCkgfHwKKwkJICAgICAgIChpbm8gPiBpY291bnQtPmxpc3RbKHVuc2lnbmVkKWljb3VudC0+Y291bnQtMV0uaW5vKSkpIHsKKwkJcmV0dXJuIGluc2VydF9pY291bnRfZWwoaWNvdW50LCBpbm8sICh1bnNpZ25lZCkgaWNvdW50LT5jb3VudCk7CisJfQorCWlmIChpY291bnQtPmNvdW50ID09IDApCisJCXJldHVybiAwOworCisJaWYgKGljb3VudC0+Y3Vyc29yID49IGljb3VudC0+Y291bnQpCisJCWljb3VudC0+Y3Vyc29yID0gMDsKKwlpZiAoaW5vID09IGljb3VudC0+bGlzdFtpY291bnQtPmN1cnNvcl0uaW5vKQorCQlyZXR1cm4gJmljb3VudC0+bGlzdFtpY291bnQtPmN1cnNvcisrXTsKKyNpZiAwCisJcHJpbnRmKCJOb24tY3Vyc29yIGdldF9pY291bnRfZWw6ICV1XG4iLCBpbm8pOworI2VuZGlmCisJbG93ID0gMDsKKwloaWdoID0gKGludCkgaWNvdW50LT5jb3VudC0xOworCXdoaWxlIChsb3cgPD0gaGlnaCkgeworCQltaWQgPSAoKHVuc2lnbmVkKWxvdyArICh1bnNpZ25lZCloaWdoKSA+PiAxOworCQlpZiAoaW5vID09IGljb3VudC0+bGlzdFttaWRdLmlubykgeworCQkJaWNvdW50LT5jdXJzb3IgPSBtaWQrMTsKKwkJCXJldHVybiAmaWNvdW50LT5saXN0W21pZF07CisJCX0KKwkJaWYgKGlubyA8IGljb3VudC0+bGlzdFttaWRdLmlubykKKwkJCWhpZ2ggPSBtaWQtMTsKKwkJZWxzZQorCQkJbG93ID0gbWlkKzE7CisJfQorCS8qCisJICogSWYgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgZW50cnksIGl0IHNob3VsZCBiZSByaWdodCBhdAorCSAqIGxvdyAod2hlcmUgaGlnaCB3aWxsIGJlIGxlZnQgYXQgbG93LTEpLgorCSAqLworCWlmIChjcmVhdGUpCisJCXJldHVybiBpbnNlcnRfaWNvdW50X2VsKGljb3VudCwgaW5vLCBsb3cpOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHNldF9pbm9kZV9jb3VudChleHQyX2ljb3VudF90IGljb3VudCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIF9fdTMyIGNvdW50KQoreworCXN0cnVjdCBleHQyX2ljb3VudF9lbCAJKmVsOworI2lmZGVmIENPTkZJR19UREIKKwlUREJfREFUQSBrZXksIGRhdGE7CisKKwlpZiAoaWNvdW50LT50ZGIpIHsKKwkJa2V5LmRwdHIgPSAodW5zaWduZWQgY2hhciAqKSAmaW5vOworCQlrZXkuZHNpemUgPSBzaXplb2YoZXh0Ml9pbm9fdCk7CisJCWRhdGEuZHB0ciA9ICh1bnNpZ25lZCBjaGFyICopICZjb3VudDsKKwkJZGF0YS5kc2l6ZSA9IHNpemVvZihfX3UzMik7CisJCWlmIChjb3VudCkgeworCQkJaWYgKHRkYl9zdG9yZShpY291bnQtPnRkYiwga2V5LCBkYXRhLCBUREJfUkVQTEFDRSkpCisJCQkJcmV0dXJuIHRkYl9lcnJvcihpY291bnQtPnRkYikgKworCQkJCQlFWFQyX0VUX1REQl9TVUNDRVNTOworCQl9IGVsc2UgeworCQkJaWYgKHRkYl9kZWxldGUoaWNvdW50LT50ZGIsIGtleSkpCisJCQkJcmV0dXJuIHRkYl9lcnJvcihpY291bnQtPnRkYikgKworCQkJCQlFWFQyX0VUX1REQl9TVUNDRVNTOworCQl9CisJCXJldHVybiAwOworCX0KKyNlbmRpZgorCWVsID0gZ2V0X2ljb3VudF9lbChpY291bnQsIGlubywgMSk7CisJaWYgKCFlbCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCisJZWwtPmNvdW50ID0gY291bnQ7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZ2V0X2lub2RlX2NvdW50KGV4dDJfaWNvdW50X3QgaWNvdW50LCBleHQyX2lub190IGlubywKKwkJCQkgX191MzIgKmNvdW50KQoreworCXN0cnVjdCBleHQyX2ljb3VudF9lbCAJKmVsOworI2lmZGVmIENPTkZJR19UREIKKwlUREJfREFUQSBrZXksIGRhdGE7CisKKwlpZiAoaWNvdW50LT50ZGIpIHsKKwkJa2V5LmRwdHIgPSAodW5zaWduZWQgY2hhciAqKSAmaW5vOworCQlrZXkuZHNpemUgPSBzaXplb2YoZXh0Ml9pbm9fdCk7CisKKwkJZGF0YSA9IHRkYl9mZXRjaChpY291bnQtPnRkYiwga2V5KTsKKwkJaWYgKGRhdGEuZHB0ciA9PSBOVUxMKSB7CisJCQkqY291bnQgPSAwOworCQkJcmV0dXJuIHRkYl9lcnJvcihpY291bnQtPnRkYikgKyBFWFQyX0VUX1REQl9TVUNDRVNTOworCQl9CisKKwkJKmNvdW50ID0gKigoX191MzIgKikgZGF0YS5kcHRyKTsKKwkJZnJlZShkYXRhLmRwdHIpOworCQlyZXR1cm4gMDsKKwl9CisjZW5kaWYKKwllbCA9IGdldF9pY291bnRfZWwoaWNvdW50LCBpbm8sIDApOworCWlmICghZWwpIHsKKwkJKmNvdW50ID0gMDsKKwkJcmV0dXJuIEVOT0VOVDsKKwl9CisKKwkqY291bnQgPSBlbC0+Y291bnQ7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfaWNvdW50X3ZhbGlkYXRlKGV4dDJfaWNvdW50X3QgaWNvdW50LCBGSUxFICpvdXQpCit7CisJZXJyY29kZV90CXJldCA9IDA7CisJdW5zaWduZWQgaW50CWk7CisJY29uc3QgY2hhciAqYmFkID0gImJhZCBpY291bnQiOworCisJRVhUMl9DSEVDS19NQUdJQyhpY291bnQsIEVYVDJfRVRfTUFHSUNfSUNPVU5UKTsKKworCWlmIChpY291bnQtPmNvdW50ID4gaWNvdW50LT5zaXplKSB7CisJCWZwcmludGYob3V0LCAiJXM6IGNvdW50ID4gc2l6ZVxuIiwgYmFkKTsKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwl9CisJZm9yIChpPTE7IGkgPCBpY291bnQtPmNvdW50OyBpKyspIHsKKwkJaWYgKGljb3VudC0+bGlzdFtpLTFdLmlubyA+PSBpY291bnQtPmxpc3RbaV0uaW5vKSB7CisJCQlmcHJpbnRmKG91dCwgIiVzOiBsaXN0WyVkXS5pbm89JXUsIGxpc3RbJWRdLmlubz0ldVxuIiwKKwkJCQliYWQsIGktMSwgaWNvdW50LT5saXN0W2ktMV0uaW5vLAorCQkJCWksIGljb3VudC0+bGlzdFtpXS5pbm8pOworCQkJcmV0ID0gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCQl9CisJfQorCXJldHVybiByZXQ7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfaWNvdW50X2ZldGNoKGV4dDJfaWNvdW50X3QgaWNvdW50LCBleHQyX2lub190IGlubywgX191MTYgKnJldCkKK3sKKwlfX3UzMgl2YWw7CisJRVhUMl9DSEVDS19NQUdJQyhpY291bnQsIEVYVDJfRVRfTUFHSUNfSUNPVU5UKTsKKworCWlmICghaW5vIHx8IChpbm8gPiBpY291bnQtPm51bV9pbm9kZXMpKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJaWYgKGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoaWNvdW50LT5zaW5nbGUsIGlubykpIHsKKwkJKnJldCA9IDE7CisJCXJldHVybiAwOworCX0KKwlpZiAoaWNvdW50LT5tdWx0aXBsZSAmJgorCSAgICAhZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pKSB7CisJCSpyZXQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisJZ2V0X2lub2RlX2NvdW50KGljb3VudCwgaW5vLCAmdmFsKTsKKwkqcmV0ID0gaWNvdW50XzE2X3hsYXRlKHZhbCk7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfaWNvdW50X2luY3JlbWVudChleHQyX2ljb3VudF90IGljb3VudCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICBfX3UxNiAqcmV0KQoreworCV9fdTMyCQkJY3Vycl92YWx1ZTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoaWNvdW50LCBFWFQyX0VUX01BR0lDX0lDT1VOVCk7CisKKwlpZiAoIWlubyB8fCAoaW5vID4gaWNvdW50LT5udW1faW5vZGVzKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGljb3VudC0+c2luZ2xlLCBpbm8pKSB7CisJCS8qCisJCSAqIElmIHRoZSBleGlzdGluZyBjb3VudCBpcyAxLCB0aGVuIHdlIGtub3cgdGhlcmUgaXMKKwkJICogbm8gZW50cnkgaW4gdGhlIGxpc3QuCisJCSAqLworCQlpZiAoc2V0X2lub2RlX2NvdW50KGljb3VudCwgaW5vLCAyKSkKKwkJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwkJY3Vycl92YWx1ZSA9IDI7CisJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPnNpbmdsZSwgaW5vKTsKKwl9IGVsc2UgaWYgKGljb3VudC0+bXVsdGlwbGUpIHsKKwkJLyoKKwkJICogVGhlIGNvdW50IGlzIGVpdGhlciB6ZXJvIG9yIGdyZWF0ZXIgdGhhbiAxOyBpZiB0aGUKKwkJICogaW5vZGUgaXMgc2V0IGluIGljb3VudC0+bXVsdGlwbGUsIHRoZW4gdGhlcmUgc2hvdWxkCisJCSAqIGJlIGFuIGVudHJ5IGluIHRoZSBsaXN0LCBzbyB3ZSBuZWVkIHRvIGZpeCBpdC4KKwkJICovCisJCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGljb3VudC0+bXVsdGlwbGUsIGlubykpIHsKKwkJCWdldF9pbm9kZV9jb3VudChpY291bnQsIGlubywgJmN1cnJfdmFsdWUpOworCQkJY3Vycl92YWx1ZSsrOworCQkJaWYgKHNldF9pbm9kZV9jb3VudChpY291bnQsIGlubywgY3Vycl92YWx1ZSkpCisJCQkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIFRoZSBjb3VudCB3YXMgemVybzsgbWFyayB0aGUgc2luZ2xlIGJpdG1hcAorCQkJICogYW5kIHJldHVybi4KKwkJCSAqLworCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPnNpbmdsZSwgaW5vKTsKKwkJCWlmIChyZXQpCisJCQkJKnJldCA9IDE7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0gZWxzZSB7CisJCS8qCisJCSAqIFRoZSBjb3VudCBpcyBlaXRoZXIgemVybyBvciBncmVhdGVyIHRoYW4gMTsgdHJ5IHRvCisJCSAqIGZpbmQgYW4gZW50cnkgaW4gdGhlIGxpc3QgdG8gZGV0ZXJtaW5lIHdoaWNoLgorCQkgKi8KKwkJZ2V0X2lub2RlX2NvdW50KGljb3VudCwgaW5vLCAmY3Vycl92YWx1ZSk7CisJCWN1cnJfdmFsdWUrKzsKKwkJaWYgKHNldF9pbm9kZV9jb3VudChpY291bnQsIGlubywgY3Vycl92YWx1ZSkpCisJCQlyZXR1cm4gRVhUMl9FVF9OT19NRU1PUlk7CisJfQorCWlmIChpY291bnQtPm11bHRpcGxlKQorCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGljb3VudC0+bXVsdGlwbGUsIGlubyk7CisJaWYgKHJldCkKKwkJKnJldCA9IGljb3VudF8xNl94bGF0ZShjdXJyX3ZhbHVlKTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19pY291bnRfZGVjcmVtZW50KGV4dDJfaWNvdW50X3QgaWNvdW50LCBleHQyX2lub190IGlubywKKwkJCQkgIF9fdTE2ICpyZXQpCit7CisJX191MzIJCQljdXJyX3ZhbHVlOworCisJaWYgKCFpbm8gfHwgKGlubyA+IGljb3VudC0+bnVtX2lub2RlcykpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlFWFQyX0NIRUNLX01BR0lDKGljb3VudCwgRVhUMl9FVF9NQUdJQ19JQ09VTlQpOworCisJaWYgKGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoaWNvdW50LT5zaW5nbGUsIGlubykpIHsKKwkJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGljb3VudC0+c2luZ2xlLCBpbm8pOworCQlpZiAoaWNvdW50LT5tdWx0aXBsZSkKKwkJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pOworCQllbHNlIHsKKwkJCXNldF9pbm9kZV9jb3VudChpY291bnQsIGlubywgMCk7CisJCX0KKwkJaWYgKHJldCkKKwkJCSpyZXQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoaWNvdW50LT5tdWx0aXBsZSAmJgorCSAgICAhZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJZ2V0X2lub2RlX2NvdW50KGljb3VudCwgaW5vLCAmY3Vycl92YWx1ZSk7CisJaWYgKCFjdXJyX3ZhbHVlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCWN1cnJfdmFsdWUtLTsKKwlpZiAoc2V0X2lub2RlX2NvdW50KGljb3VudCwgaW5vLCBjdXJyX3ZhbHVlKSkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCisJaWYgKGN1cnJfdmFsdWUgPT0gMSkKKwkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPnNpbmdsZSwgaW5vKTsKKwlpZiAoKGN1cnJfdmFsdWUgPT0gMCkgJiYgaWNvdW50LT5tdWx0aXBsZSkKKwkJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGljb3VudC0+bXVsdGlwbGUsIGlubyk7CisKKwlpZiAocmV0KQorCQkqcmV0ID0gaWNvdW50XzE2X3hsYXRlKGN1cnJfdmFsdWUpOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2ljb3VudF9zdG9yZShleHQyX2ljb3VudF90IGljb3VudCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgICBfX3UxNiBjb3VudCkKK3sKKwlpZiAoIWlubyB8fCAoaW5vID4gaWNvdW50LT5udW1faW5vZGVzKSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoaWNvdW50LCBFWFQyX0VUX01BR0lDX0lDT1VOVCk7CisKKwlpZiAoY291bnQgPT0gMSkgeworCQlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGljb3VudC0+c2luZ2xlLCBpbm8pOworCQlpZiAoaWNvdW50LT5tdWx0aXBsZSkKKwkJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKGNvdW50ID09IDApIHsKKwkJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGljb3VudC0+c2luZ2xlLCBpbm8pOworCQlpZiAoaWNvdW50LT5tdWx0aXBsZSkgeworCQkJLyoKKwkJCSAqIElmIHRoZSBpY291bnQtPm11bHRpcGxlIGJpdG1hcCBpcyBlbmFibGVkLAorCQkJICogd2UgY2FuIGp1c3QgY2xlYXIgYm90aCBiaXRtYXBzIGFuZCB3ZSdyZSBkb25lCisJCQkgKi8KKwkJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pOworCQl9IGVsc2UKKwkJCXNldF9pbm9kZV9jb3VudChpY291bnQsIGlubywgMCk7CisJCXJldHVybiAwOworCX0KKworCWlmIChzZXRfaW5vZGVfY291bnQoaWNvdW50LCBpbm8sIGNvdW50KSkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPnNpbmdsZSwgaW5vKTsKKwlpZiAoaWNvdW50LT5tdWx0aXBsZSkKKwkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihpY291bnQtPm11bHRpcGxlLCBpbm8pOworCXJldHVybiAwOworfQorCitleHQyX2lub190IGV4dDJmc19nZXRfaWNvdW50X3NpemUoZXh0Ml9pY291bnRfdCBpY291bnQpCit7CisJaWYgKCFpY291bnQgfHwgaWNvdW50LT5tYWdpYyAhPSBFWFQyX0VUX01BR0lDX0lDT1VOVCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gaWNvdW50LT5zaXplOworfQorCisjaWZkZWYgREVCVUcKKworZXh0Ml9maWxzeXMJdGVzdF9mczsKK2V4dDJfaWNvdW50X3QJaWNvdW50OworCisjZGVmaW5lIEVYSVQJCTB4MDAKKyNkZWZpbmUgRkVUQ0gJCTB4MDEKKyNkZWZpbmUgU1RPUkUJCTB4MDIKKyNkZWZpbmUgSU5DUkVNRU5UCTB4MDMKKyNkZWZpbmUgREVDUkVNRU5UCTB4MDQKKworc3RydWN0IHRlc3RfcHJvZ3JhbSB7CisJaW50CQljbWQ7CisJZXh0Ml9pbm9fdAlpbm87CisJX191MTYJCWFyZzsKKwlfX3UxNgkJZXhwZWN0ZWQ7Cit9OworCitzdHJ1Y3QgdGVzdF9wcm9ncmFtIHByb2dbXSA9IHsKKwl7IFNUT1JFLCA0MiwgNDIsIDQyIH0sCisJeyBTVE9SRSwgMSwgIDEsIDEgfSwKKwl7IFNUT1JFLCAyLCAgMiwgMiB9LAorCXsgU1RPUkUsIDMsICAzLCAzIH0sCisJeyBTVE9SRSwgMTAsIDEsIDEgfSwKKwl7IFNUT1JFLCA0MiwgMCwgMCB9LAorCXsgSU5DUkVNRU5ULCA1LCAwLCAxIH0sCisJeyBJTkNSRU1FTlQsIDUsIDAsIDIgfSwKKwl7IElOQ1JFTUVOVCwgNSwgMCwgMyB9LAorCXsgSU5DUkVNRU5ULCA1LCAwLCA0IH0sCisJeyBERUNSRU1FTlQsIDUsIDAsIDMgfSwKKwl7IERFQ1JFTUVOVCwgNSwgMCwgMiB9LAorCXsgREVDUkVNRU5ULCA1LCAwLCAxIH0sCisJeyBERUNSRU1FTlQsIDUsIDAsIDAgfSwKKwl7IEZFVENILCAxMCwgMCwgMSB9LAorCXsgRkVUQ0gsIDEsIDAsIDEgfSwKKwl7IEZFVENILCAyLCAwLCAyIH0sCisJeyBGRVRDSCwgMywgMCwgMyB9LAorCXsgSU5DUkVNRU5ULCAxLCAwLCAyIH0sCisJeyBERUNSRU1FTlQsIDIsIDAsIDEgfSwKKwl7IERFQ1JFTUVOVCwgMiwgMCwgMCB9LAorCXsgRkVUQ0gsIDEyLCAwLCAwIH0sCisJeyBFWElULCAwLCAwLCAwIH0KK307CisKK3N0cnVjdCB0ZXN0X3Byb2dyYW0gZXh0ZW5kZWRbXSA9IHsKKwl7IFNUT1JFLCAxLCAgMSwgMSB9LAorCXsgU1RPUkUsIDIsICAyLCAyIH0sCisJeyBTVE9SRSwgMywgIDMsIDMgfSwKKwl7IFNUT1JFLCA0LCAgNCwgNCB9LAorCXsgU1RPUkUsIDUsICA1LCA1IH0sCisJeyBTVE9SRSwgNiwgIDEsIDEgfSwKKwl7IFNUT1JFLCA3LCAgMiwgMiB9LAorCXsgU1RPUkUsIDgsICAzLCAzIH0sCisJeyBTVE9SRSwgOSwgIDQsIDQgfSwKKwl7IFNUT1JFLCAxMCwgNSwgNSB9LAorCXsgU1RPUkUsIDExLCAxLCAxIH0sCisJeyBTVE9SRSwgMTIsIDIsIDIgfSwKKwl7IFNUT1JFLCAxMywgMywgMyB9LAorCXsgU1RPUkUsIDE0LCA0LCA0IH0sCisJeyBTVE9SRSwgMTUsIDUsIDUgfSwKKwl7IFNUT1JFLCAxNiwgMSwgMSB9LAorCXsgU1RPUkUsIDE3LCAyLCAyIH0sCisJeyBTVE9SRSwgMTgsIDMsIDMgfSwKKwl7IFNUT1JFLCAxOSwgNCwgNCB9LAorCXsgU1RPUkUsIDIwLCA1LCA1IH0sCisJeyBTVE9SRSwgMjEsIDEsIDEgfSwKKwl7IFNUT1JFLCAyMiwgMiwgMiB9LAorCXsgU1RPUkUsIDIzLCAzLCAzIH0sCisJeyBTVE9SRSwgMjQsIDQsIDQgfSwKKwl7IFNUT1JFLCAyNSwgNSwgNSB9LAorCXsgU1RPUkUsIDI2LCAxLCAxIH0sCisJeyBTVE9SRSwgMjcsIDIsIDIgfSwKKwl7IFNUT1JFLCAyOCwgMywgMyB9LAorCXsgU1RPUkUsIDI5LCA0LCA0IH0sCisJeyBTVE9SRSwgMzAsIDUsIDUgfSwKKwl7IEVYSVQsIDAsIDAsIDAgfQorfTsKKworLyoKKyAqIFNldHVwIHRoZSB2YXJpYWJsZXMgZm9yIGRvaW5nIHRoZSBpbm9kZSBzY2FuIHRlc3QuCisgKi8KK3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayBwYXJhbTsKKworCWluaXRpYWxpemVfZXh0Ml9lcnJvcl90YWJsZSgpOworCisJbWVtc2V0KCZwYXJhbSwgMCwgc2l6ZW9mKHBhcmFtKSk7CisJZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXQoJnBhcmFtLCAxMjAwMCk7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5pdGlhbGl6ZSgidGVzdCBmcyIsIEVYVDJfRkxBR182NEJJVFMsICZwYXJhbSwKKwkJCQkgICB0ZXN0X2lvX21hbmFnZXIsICZ0ZXN0X2ZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldHVwIiwgcmV0dmFsLAorCQkJIndoaWxlIGluaXRpYWxpemluZyBmaWxlc3lzdGVtIik7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV90YWJsZXModGVzdF9mcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJzZXR1cCIsIHJldHZhbCwKKwkJCSJ3aGlsZSBhbGxvY2F0aW5nIHRhYmxlcyBmb3IgdGVzdCBmaWxlc3lzdGVtIik7CisJCWV4aXQoMSk7CisJfQorfQorCitpbnQgcnVuX3Rlc3QoaW50IGZsYWdzLCBpbnQgc2l6ZSwgY2hhciAqZGlyLCBzdHJ1Y3QgdGVzdF9wcm9ncmFtICpwcm9nKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pY291bnRfdAlpY291bnQ7CisJc3RydWN0IHRlc3RfcHJvZ3JhbSAqcGM7CisJX191MTYJCXJlc3VsdDsKKwlpbnQJCXByb2JsZW0gPSAwOworCisJaWYgKGRpcikgeworI2lmZGVmIENPTkZJR19UREIKKwkJcmV0dmFsID0gZXh0MmZzX2NyZWF0ZV9pY291bnRfdGRiKHRlc3RfZnMsIGRpciwKKwkJCQkJCSAgZmxhZ3MsICZpY291bnQpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJydW5fdGVzdCIsIHJldHZhbCwKKwkJCQkid2hpbGUgY3JlYXRpbmcgaWNvdW50IHVzaW5nIHRkYiIpOworCQkJZXhpdCgxKTsKKwkJfQorI2Vsc2UKKwkJcHJpbnRmKCJTa2lwcGVkXG4iKTsKKwkJcmV0dXJuIDA7CisjZW5kaWYKKwl9IGVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2ljb3VudDIodGVzdF9mcywgZmxhZ3MsIHNpemUsIDAsCisJCQkJCSAgICAgICAmaWNvdW50KTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigicnVuX3Rlc3QiLCByZXR2YWwsICJ3aGlsZSBjcmVhdGluZyBpY291bnQiKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJZm9yIChwYyA9IHByb2c7IHBjLT5jbWQgIT0gRVhJVDsgcGMrKykgeworCQlzd2l0Y2ggKHBjLT5jbWQpIHsKKwkJY2FzZSBGRVRDSDoKKwkJCXByaW50ZigiaWNvdW50X2ZldGNoKCV1KSA9ICIsIHBjLT5pbm8pOworCQkJYnJlYWs7CisJCWNhc2UgU1RPUkU6CisJCQlyZXR2YWwgPSBleHQyZnNfaWNvdW50X3N0b3JlKGljb3VudCwgcGMtPmlubywgcGMtPmFyZyk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycigicnVuX3Rlc3QiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSBjYWxsaW5nIGljb3VudF9zdG9yZSIpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlwcmludGYoImljb3VudF9zdG9yZSgldSwgJXUpID0gIiwgcGMtPmlubywgcGMtPmFyZyk7CisJCQlicmVhazsKKwkJY2FzZSBJTkNSRU1FTlQ6CisJCQlyZXR2YWwgPSBleHQyZnNfaWNvdW50X2luY3JlbWVudChpY291bnQsIHBjLT5pbm8sIDApOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoInJ1bl90ZXN0IiwgcmV0dmFsLAorCQkJCQkid2hpbGUgY2FsbGluZyBpY291bnRfaW5jcmVtZW50Iik7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCXByaW50ZigiaWNvdW50X2luY3JlbWVudCgldSkgPSAiLCBwYy0+aW5vKTsKKwkJCWJyZWFrOworCQljYXNlIERFQ1JFTUVOVDoKKwkJCXJldHZhbCA9IGV4dDJmc19pY291bnRfZGVjcmVtZW50KGljb3VudCwgcGMtPmlubywgMCk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycigicnVuX3Rlc3QiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSBjYWxsaW5nIGljb3VudF9kZWNyZW1lbnQiKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJcHJpbnRmKCJpY291bnRfZGVjcmVtZW50KCV1KSA9ICIsIHBjLT5pbm8pOworCQkJYnJlYWs7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX2ljb3VudF9mZXRjaChpY291bnQsIHBjLT5pbm8sICZyZXN1bHQpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJydW5fdGVzdCIsIHJldHZhbCwKKwkJCQkid2hpbGUgY2FsbGluZyBpY291bnRfZmV0Y2giKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJcHJpbnRmKCIldSAoJXMpXG4iLCByZXN1bHQsIChyZXN1bHQgPT0gcGMtPmV4cGVjdGVkKSA/CisJCSAgICAgICAiT0siIDogIk5PVCBPSyIpOworCQlpZiAocmVzdWx0ICE9IHBjLT5leHBlY3RlZCkKKwkJCXByb2JsZW0rKzsKKwl9CisJcHJpbnRmKCJpY291bnQgc2l6ZSBpcyAldVxuIiwgZXh0MmZzX2dldF9pY291bnRfc2l6ZShpY291bnQpKTsKKwlyZXR2YWwgPSBleHQyZnNfaWNvdW50X3ZhbGlkYXRlKGljb3VudCwgc3Rkb3V0KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInJ1bl90ZXN0IiwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBpY291bnRfdmFsaWRhdGUiKTsKKwkJZXhpdCgxKTsKKwl9CisJZXh0MmZzX2ZyZWVfaWNvdW50KGljb3VudCk7CisJcmV0dXJuIHByb2JsZW07Cit9CisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBmYWlsZWQgPSAwOworCisJc2V0dXAoKTsKKwlwcmludGYoIlN0YW5kYXJkIGljb3VudCBydW46XG4iKTsKKwlmYWlsZWQgKz0gcnVuX3Rlc3QoMCwgMCwgMCwgcHJvZyk7CisJcHJpbnRmKCJcbk11bHRpcGxlIGJpdG1hcCB0ZXN0OlxuIik7CisJZmFpbGVkICs9IHJ1bl90ZXN0KEVYVDJfSUNPVU5UX09QVF9JTkNSRU1FTlQsIDAsIDAsIHByb2cpOworCXByaW50ZigiXG5SZXNpemluZyBpY291bnQ6XG4iKTsKKwlmYWlsZWQgKz0gcnVuX3Rlc3QoMCwgMywgMCwgZXh0ZW5kZWQpOworCXByaW50ZigiXG5TdGFuZGFyZCBpY291bnQgcnVuIHdpdGggdGRiOlxuIik7CisJZmFpbGVkICs9IHJ1bl90ZXN0KDAsIDAsICIuIiwgcHJvZyk7CisJcHJpbnRmKCJcbk11bHRpcGxlIGJpdG1hcCB0ZXN0IHdpdGggdGRiOlxuIik7CisJZmFpbGVkICs9IHJ1bl90ZXN0KEVYVDJfSUNPVU5UX09QVF9JTkNSRU1FTlQsIDAsICIuIiwgcHJvZyk7CisJaWYgKGZhaWxlZCkKKwkJcHJpbnRmKCJGQUlMRUQhXG4iKTsKKwlyZXR1cm4gZmFpbGVkOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbWFnZXIuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2ltYWdlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NDNjYzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbWFnZXIuYwpAQCAtMCwwICsxLDQxMCBAQAorLyoKKyAqIGltYWdlLmMgLS0tIHdyaXRlcyBvdXQgdGhlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBmaWxlc3lzdGVtIGFzIGEKKyAqIAlmbGF0IGZpbGUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFRoZW9kb3JlIFRzJ28uCisgKgorICogTm90ZTogdGhpcyB1c2VzIHRoZSBQT1NJWCBJTyBpbnRlcmZhY2VzLCB1bmxpa2UgbW9zdCBvZiB0aGUgb3RoZXIKKyAqIGZ1bmN0aW9ucyBpbiB0aGlzIGxpYnJhcnkuICBTbyBzdWUgbWUuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisjaWZuZGVmIEhBVkVfVFlQRV9TU0laRV9UCit0eXBlZGVmIGludCBzc2l6ZV90OworI2VuZGlmCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgMSBpZiB0aGUgc3BlY2lmaWVkIGJsb2NrIGlzIGFsbCB6ZXJvcworICovCitzdGF0aWMgaW50IGNoZWNrX3plcm9fYmxvY2soY2hhciAqYnVmLCBpbnQgYmxvY2tzaXplKQoreworCWNoYXIJKmNwID0gYnVmOworCWludAlsZWZ0ID0gYmxvY2tzaXplOworCisJd2hpbGUgKGxlZnQgPiAwKSB7CisJCWlmICgqY3ArKykKKwkJCXJldHVybiAwOworCQlsZWZ0LS07CisJfQorCXJldHVybiAxOworfQorCisvKgorICogV3JpdGUgdGhlIGlub2RlIHRhYmxlIG91dCBhcyBhIHNpbmdsZSBibG9jay4KKyAqLworI2RlZmluZSBCVUZfQkxPQ0tTCTMyCisKK2VycmNvZGVfdCBleHQyZnNfaW1hZ2VfaW5vZGVfd3JpdGUoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKQoreworCXVuc2lnbmVkIGludAlncm91cCwgbGVmdCwgYywgZDsKKwljaGFyCQkqYnVmLCAqY3A7CisJYmxrNjRfdAkJYmxrOworCXNzaXplX3QJCWFjdHVhbDsKKwllcnJjb2RlX3QJcmV0dmFsOworCW9mZl90CQlyOworCisJYnVmID0gbWFsbG9jKGZzLT5ibG9ja3NpemUgKiBCVUZfQkxPQ0tTKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIEVOT01FTTsKKworCWZvciAoZ3JvdXAgPSAwOyBncm91cCA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBncm91cCsrKSB7CisJCWJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsICh1bnNpZ25lZClncm91cCk7CisJCWlmICghYmxrKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX01JU1NJTkdfSU5PREVfVEFCTEU7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlsZWZ0ID0gZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCXdoaWxlIChsZWZ0KSB7CisJCQljID0gQlVGX0JMT0NLUzsKKwkJCWlmIChjID4gbGVmdCkKKwkJCQljID0gbGVmdDsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgYywgYnVmKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCQljcCA9IGJ1ZjsKKwkJCXdoaWxlIChjKSB7CisJCQkJaWYgKCEoZmxhZ3MgJiBJTUFHRVJfRkxBR19TUEFSU0VXUklURSkpIHsKKwkJCQkJZCA9IGM7CisJCQkJCWdvdG8gc2tpcF9zcGFyc2U7CisJCQkJfQorCQkJCS8qIFNraXAgemVybyBibG9ja3MgKi8KKwkJCQlpZiAoY2hlY2tfemVyb19ibG9jayhjcCwgZnMtPmJsb2Nrc2l6ZSkpIHsKKwkJCQkJYy0tOworCQkJCQlibGsrKzsKKwkJCQkJbGVmdC0tOworCQkJCQljcCArPSBmcy0+YmxvY2tzaXplOworCQkJCQlyID0gbHNlZWsoZmQsIGZzLT5ibG9ja3NpemUsIFNFRUtfQ1VSKTsKKwkJCQkJaWYgKHIgPCAwKSB7CisJCQkJCQlyZXR2YWwgPSBlcnJubzsKKwkJCQkJCWdvdG8gZXJyb3V0OworCQkJCQl9CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQkvKiBGaW5kIG5vbi16ZXJvIGJsb2NrcyAqLworCQkJCWZvciAoZD0xOyBkIDwgYzsgZCsrKSB7CisJCQkJCWlmIChjaGVja196ZXJvX2Jsb2NrKGNwICsgZCpmcy0+YmxvY2tzaXplLCBmcy0+YmxvY2tzaXplKSkKKwkJCQkJCWJyZWFrOworCQkJCX0KKwkJCXNraXBfc3BhcnNlOgorCQkJCWFjdHVhbCA9IHdyaXRlKGZkLCBjcCwgZnMtPmJsb2Nrc2l6ZSAqIGQpOworCQkJCWlmIChhY3R1YWwgPT0gLTEpIHsKKwkJCQkJcmV0dmFsID0gZXJybm87CisJCQkJCWdvdG8gZXJyb3V0OworCQkJCX0KKwkJCQlpZiAoYWN0dWFsICE9IChzc2l6ZV90KSAoZnMtPmJsb2Nrc2l6ZSAqIGQpKSB7CisJCQkJCXJldHZhbCA9IEVYVDJfRVRfU0hPUlRfV1JJVEU7CisJCQkJCWdvdG8gZXJyb3V0OworCQkJCX0KKwkJCQlibGsgKz0gZDsKKwkJCQlsZWZ0IC09IGQ7CisJCQkJY3AgKz0gZnMtPmJsb2Nrc2l6ZSAqIGQ7CisJCQkJYyAtPSBkOworCQkJfQorCQl9CisJfQorCXJldHZhbCA9IDA7CisKK2Vycm91dDoKKwlmcmVlKGJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFJlYWQgaW4gdGhlIGlub2RlIHRhYmxlIGFuZCBzdHVmZiBpdCBpbnRvIHBsYWNlCisgKi8KK2VycmNvZGVfdCBleHQyZnNfaW1hZ2VfaW5vZGVfcmVhZChleHQyX2ZpbHN5cyBmcywgaW50IGZkLAorCQkJCSAgaW50IGZsYWdzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwl1bnNpZ25lZCBpbnQJZ3JvdXAsIGMsIGxlZnQ7CisJY2hhcgkJKmJ1ZjsKKwlibGs2NF90CQlibGs7CisJc3NpemVfdAkJYWN0dWFsOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlidWYgPSBtYWxsb2MoZnMtPmJsb2Nrc2l6ZSAqIEJVRl9CTE9DS1MpOworCWlmICghYnVmKQorCQlyZXR1cm4gRU5PTUVNOworCisJZm9yIChncm91cCA9IDA7IGdyb3VwIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGdyb3VwKyspIHsKKwkJYmxrID0gZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgKHVuc2lnbmVkKWdyb3VwKTsKKwkJaWYgKCFibGspIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfTUlTU0lOR19JTk9ERV9UQUJMRTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWxlZnQgPSBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwkJd2hpbGUgKGxlZnQpIHsKKwkJCWMgPSBCVUZfQkxPQ0tTOworCQkJaWYgKGMgPiBsZWZ0KQorCQkJCWMgPSBsZWZ0OworCQkJYWN0dWFsID0gcmVhZChmZCwgYnVmLCBmcy0+YmxvY2tzaXplICogYyk7CisJCQlpZiAoYWN0dWFsID09IC0xKSB7CisJCQkJcmV0dmFsID0gZXJybm87CisJCQkJZ290byBlcnJvdXQ7CisJCQl9CisJCQlpZiAoYWN0dWFsICE9IChzc2l6ZV90KSAoZnMtPmJsb2Nrc2l6ZSAqIGMpKSB7CisJCQkJcmV0dmFsID0gRVhUMl9FVF9TSE9SVF9SRUFEOworCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsaywgYywgYnVmKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisKKwkJCWJsayArPSBjOworCQkJbGVmdCAtPSBjOworCQl9CisJfQorCXJldHZhbCA9IGV4dDJmc19mbHVzaF9pY2FjaGUoZnMpOworCitlcnJvdXQ6CisJZnJlZShidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBXcml0ZSBvdXQgc3VwZXJibG9jayBhbmQgZ3JvdXAgZGVzY3JpcHRvcnMKKyAqLworZXJyY29kZV90IGV4dDJmc19pbWFnZV9zdXBlcl93cml0ZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLAorCQkJCSAgIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJY2hhcgkJKmJ1ZiwgKmNwOworCXNzaXplX3QJCWFjdHVhbDsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJYnVmID0gbWFsbG9jKGZzLT5ibG9ja3NpemUpOworCWlmICghYnVmKQorCQlyZXR1cm4gRU5PTUVNOworCisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIHN1cGVyYmxvY2sKKwkgKi8KKwltZW1zZXQoYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwltZW1jcHkoYnVmLCBmcy0+c3VwZXIsIFNVUEVSQkxPQ0tfU0laRSk7CisJYWN0dWFsID0gd3JpdGUoZmQsIGJ1ZiwgZnMtPmJsb2Nrc2l6ZSk7CisJaWYgKGFjdHVhbCA9PSAtMSkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJZ290byBlcnJvdXQ7CisJfQorCWlmIChhY3R1YWwgIT0gKHNzaXplX3QpIGZzLT5ibG9ja3NpemUpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9TSE9SVF9XUklURTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBOb3cgd3JpdGUgb3V0IHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycworCSAqLworCWNwID0gKGNoYXIgKikgZnMtPmdyb3VwX2Rlc2M7CisJYWN0dWFsID0gd3JpdGUoZmQsIGNwLCBmcy0+YmxvY2tzaXplICogZnMtPmRlc2NfYmxvY2tzKTsKKwlpZiAoYWN0dWFsID09IC0xKSB7CisJCXJldHZhbCA9IGVycm5vOworCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKGFjdHVhbCAhPSAoc3NpemVfdCkgKGZzLT5ibG9ja3NpemUgKiBmcy0+ZGVzY19ibG9ja3MpKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfU0hPUlRfV1JJVEU7CisJCWdvdG8gZXJyb3V0OworCX0KKworCXJldHZhbCA9IDA7CisKK2Vycm91dDoKKwlmcmVlKGJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFJlYWQgdGhlIHN1cGVyYmxvY2sgYW5kIGdyb3VwIGRlc2NyaXB0b3JzIGFuZCBvdmVyd3JpdGUgdGhlbS4KKyAqLworZXJyY29kZV90IGV4dDJmc19pbWFnZV9zdXBlcl9yZWFkKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsCisJCQkJICBpbnQgZmxhZ3MgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWNoYXIJCSpidWY7CisJc3NpemVfdAkJYWN0dWFsLCBzaXplOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlzaXplID0gZnMtPmJsb2Nrc2l6ZSAqIChmcy0+Z3JvdXBfZGVzY19jb3VudCArIDEpOworCWJ1ZiA9IG1hbGxvYyhzaXplKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIEVOT01FTTsKKworCS8qCisJICogUmVhZCBpdCBhbGwgaW4uCisJICovCisJYWN0dWFsID0gcmVhZChmZCwgYnVmLCBzaXplKTsKKwlpZiAoYWN0dWFsID09IC0xKSB7CisJCXJldHZhbCA9IGVycm5vOworCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKGFjdHVhbCAhPSBzaXplKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfU0hPUlRfUkVBRDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBOb3cgY29weSBpbiB0aGUgc3VwZXJibG9jayBhbmQgZ3JvdXAgZGVzY3JpcHRvcnMKKwkgKi8KKwltZW1jcHkoZnMtPnN1cGVyLCBidWYsIFNVUEVSQkxPQ0tfU0laRSk7CisKKwltZW1jcHkoZnMtPmdyb3VwX2Rlc2MsIGJ1ZiArIGZzLT5ibG9ja3NpemUsCisJICAgICAgIGZzLT5ibG9ja3NpemUgKiBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisKKwlyZXR2YWwgPSAwOworCitlcnJvdXQ6CisJZnJlZShidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBXcml0ZSB0aGUgYmxvY2svaW5vZGUgYml0bWFwcy4KKyAqLworZXJyY29kZV90IGV4dDJmc19pbWFnZV9iaXRtYXBfd3JpdGUoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKQoreworCWV4dDJmc19nZW5lcmljX2JpdG1hcAlibWFwOworCWVycmNvZGVfdAkJcmV0dmFsOworCXNzaXplX3QJCQlhY3R1YWw7CisJc2l6ZV90CQkJYzsKKwlfX3U2NAkJCWl0ciwgY250LCBzaXplLCB0b3RhbF9zaXplOworCWNoYXIJCQlidWZbMTAyNF07CisKKwlpZiAoZmxhZ3MgJiBJTUFHRVJfRkxBR19JTk9ERU1BUCkgeworCQlpZiAoIWZzLT5pbm9kZV9tYXApIHsKKwkJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlX2JpdG1hcChmcyk7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJYm1hcCA9IGZzLT5pbm9kZV9tYXA7CisJCWl0ciA9IDE7CisJCWNudCA9IEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpICogZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJCXNpemUgPSAoRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgLyA4KTsKKwl9IGVsc2UgeworCQlpZiAoIWZzLT5ibG9ja19tYXApIHsKKwkJCXJldHZhbCA9IGV4dDJmc19yZWFkX2Jsb2NrX2JpdG1hcChmcyk7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJYm1hcCA9IGZzLT5ibG9ja19tYXA7CisJCWl0ciA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCQljbnQgPSBFWFQyX0dST1VQU19UT19CTE9DS1MoZnMtPnN1cGVyLCBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisJCXNpemUgPSBFWFQyX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAvIDg7CisJfQorCXRvdGFsX3NpemUgPSBzaXplICogZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisKKwl3aGlsZSAoY250ID4gMCkgeworCQlzaXplID0gc2l6ZW9mKGJ1Zik7CisJCWlmIChzaXplID4gKGNudCA+PiAzKSkKKwkJCXNpemUgPSAoY250ID4+IDMpOworCisJCXJldHZhbCA9IGV4dDJmc19nZXRfZ2VuZXJpY19ibWFwX3JhbmdlKGJtYXAsIGl0ciwKKwkJCQkJCSAgICAgICBzaXplIDw8IDMsIGJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisJCWFjdHVhbCA9IHdyaXRlKGZkLCBidWYsIHNpemUpOworCQlpZiAoYWN0dWFsID09IC0xKQorCQkJcmV0dXJuIGVycm5vOworCQlpZiAoYWN0dWFsICE9IChpbnQpIHNpemUpCisJCQlyZXR1cm4gRVhUMl9FVF9TSE9SVF9SRUFEOworCisJCWl0ciArPSBzaXplIDw8IDM7CisJCWNudCAtPSBzaXplIDw8IDM7CisJfQorCisJc2l6ZSA9IHRvdGFsX3NpemUgJSBmcy0+YmxvY2tzaXplOworCW1lbXNldChidWYsIDAsIHNpemVvZihidWYpKTsKKwlpZiAoc2l6ZSkgeworCQlzaXplID0gZnMtPmJsb2Nrc2l6ZSAtIHNpemU7CisJCXdoaWxlIChzaXplKSB7CisJCQljID0gc2l6ZTsKKwkJCWlmIChjID4gKGludCkgc2l6ZW9mKGJ1ZikpCisJCQkJYyA9IHNpemVvZihidWYpOworCQkJYWN0dWFsID0gd3JpdGUoZmQsIGJ1ZiwgYyk7CisJCQlpZiAoYWN0dWFsIDwgMCkKKwkJCQlyZXR1cm4gZXJybm87CisJCQlpZiAoKHNpemVfdCkgYWN0dWFsICE9IGMpCisJCQkJcmV0dXJuIEVYVDJfRVRfU0hPUlRfV1JJVEU7CisJCQlzaXplIC09IGM7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAqIFJlYWQgdGhlIGJsb2NrL2lub2RlIGJpdG1hcHMuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfaW1hZ2VfYml0bWFwX3JlYWQoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKQoreworCWV4dDJmc19nZW5lcmljX2JpdG1hcAlibWFwOworCWVycmNvZGVfdAkJcmV0dmFsOworCV9fdTY0CQkJaXRyLCBjbnQ7CisJY2hhcgkJCWJ1ZlsxMDI0XTsKKwl1bnNpZ25lZCBpbnQJCXNpemU7CisJc3NpemVfdAkJCWFjdHVhbDsKKworCWlmIChmbGFncyAmIElNQUdFUl9GTEFHX0lOT0RFTUFQKSB7CisJCWlmICghZnMtPmlub2RlX21hcCkgeworCQkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGVfYml0bWFwKGZzKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlibWFwID0gZnMtPmlub2RlX21hcDsKKwkJaXRyID0gMTsKKwkJY250ID0gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgKiBmcy0+Z3JvdXBfZGVzY19jb3VudDsKKwkJc2l6ZSA9IChFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAvIDgpOworCX0gZWxzZSB7CisJCWlmICghZnMtPmJsb2NrX21hcCkgeworCQkJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGZzKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlibWFwID0gZnMtPmJsb2NrX21hcDsKKwkJaXRyID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJCWNudCA9IEVYVDJfR1JPVVBTX1RPX0JMT0NLUyhmcy0+c3VwZXIsIGZzLT5ncm91cF9kZXNjX2NvdW50KTsKKwkJc2l6ZSA9IEVYVDJfQkxPQ0tTX1BFUl9HUk9VUChmcy0+c3VwZXIpIC8gODsKKwl9CisKKwl3aGlsZSAoY250ID4gMCkgeworCQlzaXplID0gc2l6ZW9mKGJ1Zik7CisJCWlmIChzaXplID4gKGNudCA+PiAzKSkKKwkJCXNpemUgPSAoY250ID4+IDMpOworCisJCWFjdHVhbCA9IHJlYWQoZmQsIGJ1Ziwgc2l6ZSk7CisJCWlmIChhY3R1YWwgPT0gLTEpCisJCQlyZXR1cm4gZXJybm87CisJCWlmIChhY3R1YWwgIT0gKGludCkgc2l6ZSkKKwkJCXJldHVybiBFWFQyX0VUX1NIT1JUX1JFQUQ7CisKKwkJcmV0dmFsID0gZXh0MmZzX3NldF9nZW5lcmljX2JtYXBfcmFuZ2UoYm1hcCwgaXRyLAorCQkJCQkJICAgICAgIHNpemUgPDwgMywgYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisKKwkJaXRyICs9IHNpemUgPDwgMzsKKwkJY250IC09IHNpemUgPDwgMzsKKwl9CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmRfYmxvY2suYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2luZF9ibG9jay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhODJhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmRfYmxvY2suYwpAQCAtMCwwICsxLDY3IEBACisvKgorICogaW5kX2Jsb2NrLmMgLS0tIGluZGlyZWN0IGJsb2NrIEkvTyByb3V0aW5lcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKyAqIAkyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IGJ5ICBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK2VycmNvZGVfdCBleHQyZnNfcmVhZF9pbmRfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsaywgdm9pZCAqYnVmKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJYmxrX3QJCSpibG9ja19ucjsKKwlpbnQJCWk7CisJaW50CQlsaW1pdCA9IGZzLT5ibG9ja3NpemUgPj4gMjsKKyNlbmRpZgorCisJaWYgKChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSU1BR0VfRklMRSkgJiYKKwkgICAgKGZzLT5pbyAhPSBmcy0+aW1hZ2VfaW8pKQorCQltZW1zZXQoYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwllbHNlIHsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2Jsayhmcy0+aW8sIGJsaywgMSwgYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCWJsb2NrX25yID0gKGJsa190ICopIGJ1ZjsKKwlmb3IgKGkgPSAwOyBpIDwgbGltaXQ7IGkrKywgYmxvY2tfbnIrKykKKwkJKmJsb2NrX25yID0gZXh0MmZzX3N3YWIzMigqYmxvY2tfbnIpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfd3JpdGVfaW5kX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGssIHZvaWQgKmJ1ZikKK3sKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlibGtfdAkJKmJsb2NrX25yOworCWludAkJaTsKKwlpbnQJCWxpbWl0ID0gZnMtPmJsb2Nrc2l6ZSA+PiAyOworI2VuZGlmCisKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lNQUdFX0ZJTEUpCisJCXJldHVybiAwOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJYmxvY2tfbnIgPSAoYmxrX3QgKikgYnVmOworCWZvciAoaSA9IDA7IGkgPCBsaW1pdDsgaSsrLCBibG9ja19ucisrKQorCQkqYmxvY2tfbnIgPSBleHQyZnNfc3dhYjMyKCpibG9ja19ucik7CisjZW5kaWYKKwlyZXR1cm4gaW9fY2hhbm5lbF93cml0ZV9ibGsoZnMtPmlvLCBibGssIDEsIGJ1Zik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5pdGlhbGl6ZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5pdGlhbGl6ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZjQzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbml0aWFsaXplLmMKQEAgLTAsMCArMSw1NTcgQEAKKy8qCisgKiBpbml0aWFsaXplLmMgLS0tIGluaXRpYWxpemUgYSBmaWxlc3lzdGVtIGhhbmRsZSBnaXZlbiBzdXBlcmJsb2NrCisgKiAJcGFyYW1ldGVycy4gIFVzZWQgYnkgbWtlMmZzIHdoZW4gaW5pdGlhbGl6aW5nIGEgZmlsZXN5c3RlbS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworI2lmIGRlZmluZWQoX19saW51eF9fKSAgICAmJglkZWZpbmVkKEVYVDJfT1NfTElOVVgpCisjZGVmaW5lIENSRUFUT1JfT1MgRVhUMl9PU19MSU5VWAorI2Vsc2UKKyNpZiBkZWZpbmVkKF9fR05VX18pICAgICAmJglkZWZpbmVkKEVYVDJfT1NfSFVSRCkKKyNkZWZpbmUgQ1JFQVRPUl9PUyBFWFQyX09TX0hVUkQKKyNlbHNlCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYJZGVmaW5lZChFWFQyX09TX0ZSRUVCU0QpCisjZGVmaW5lIENSRUFUT1JfT1MgRVhUMl9PU19GUkVFQlNECisjZWxzZQorI2lmIGRlZmluZWQoTElURVMpIAkgICAmJglkZWZpbmVkKEVYVDJfT1NfTElURVMpCisjZGVmaW5lIENSRUFUT1JfT1MgRVhUMl9PU19MSVRFUworI2Vsc2UKKyNkZWZpbmUgQ1JFQVRPUl9PUyBFWFQyX09TX0xJTlVYIC8qIGJ5IGRlZmF1bHQgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKExJVEVTKSAmJiBkZWZpbmVkKEVYVDJfT1NfTElURVMpICovCisjZW5kaWYgLyogZGVmaW5lZChfX0ZyZWVCU0RfXykgJiYgZGVmaW5lZChFWFQyX09TX0ZSRUVCU0QpICovCisjZW5kaWYgLyogZGVmaW5lZChfX0dOVV9fKSAgICAgJiYgZGVmaW5lZChFWFQyX09TX0hVUkQpICovCisjZW5kaWYgLyogZGVmaW5lZChfX2xpbnV4X18pICAgJiYgZGVmaW5lZChFWFQyX09TX0xJTlVYKSAqLworCisvKgorICogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgR0RUIGJsb2NrcyB0byByZXNlcnZlIGZvciBvbmxpbmUgZmlsZXN5c3RlbSBncm93dGguCisgKiBUaGUgYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgR0RUIGJsb2NrcyB3ZSBjYW4gcmVzZXJ2ZSBpcyBkZXRlcm1pbmVkIGJ5CisgKiB0aGUgbnVtYmVyIG9mIGJsb2NrIHBvaW50ZXJzIHRoYXQgY2FuIGZpdCBpbnRvIGEgc2luZ2xlIGJsb2NrLgorICovCitzdGF0aWMgdW5zaWduZWQgaW50IGNhbGNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcyhleHQyX2ZpbHN5cyBmcykKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBmcy0+c3VwZXI7CisJdW5zaWduZWQgbG9uZyBicGcgPSBzYi0+c19ibG9ja3NfcGVyX2dyb3VwOworCXVuc2lnbmVkIGludCBnZHBiID0gRVhUMl9ERVNDX1BFUl9CTE9DSyhzYik7CisJdW5zaWduZWQgbG9uZyBtYXhfYmxvY2tzID0gMHhmZmZmZmZmZjsKKwl1bnNpZ25lZCBsb25nIHJzdl9ncm91cHM7CisJdW5zaWduZWQgaW50IHJzdl9nZGI7CisKKwkvKiBXZSBzZXQgaXQgYXQgMTAyNHggdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSBzaXplLCBvcgorCSAqIHRoZSB1cHBlciBibG9jayBjb3VudCBsaW1pdCAoMl4zMiksIHdoaWNoZXZlciBpcyBsb3dlci4KKwkgKi8KKwlpZiAoZXh0MmZzX2Jsb2Nrc19jb3VudChzYikgPCBtYXhfYmxvY2tzIC8gMTAyNCkKKwkJbWF4X2Jsb2NrcyA9IGV4dDJmc19ibG9ja3NfY291bnQoc2IpICogMTAyNDsKKwkvKgorCSAqIGV4dDJmc19kaXY2NF9jZWlsKCkgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSBtYXhfYmxvY2tzIGlzCisJICogbWF4IF9HRFRfIGJsb2Nrcywgd2hpY2ggaXMgbGltaXRlZCB0byAzMiBiaXRzLgorCSAqLworCXJzdl9ncm91cHMgPSBleHQyZnNfZGl2X2NlaWwobWF4X2Jsb2NrcyAtIHNiLT5zX2ZpcnN0X2RhdGFfYmxvY2ssIGJwZyk7CisJcnN2X2dkYiA9IGV4dDJmc19kaXZfY2VpbChyc3ZfZ3JvdXBzLCBnZHBiKSAtIGZzLT5kZXNjX2Jsb2NrczsKKwlpZiAocnN2X2dkYiA+IEVYVDJfQUREUl9QRVJfQkxPQ0soc2IpKQorCQlyc3ZfZ2RiID0gRVhUMl9BRERSX1BFUl9CTE9DSyhzYik7CisjaWZkZWYgUkVTX0dEVF9ERUJVRworCXByaW50ZigibWF4X2Jsb2NrcyAlbHUsIHJzdl9ncm91cHMgPSAlbHUsIHJzdl9nZGIgPSAldVxuIiwKKwkgICAgICAgbWF4X2Jsb2NrcywgcnN2X2dyb3VwcywgcnN2X2dkYik7CisjZW5kaWYKKworCXJldHVybiByc3ZfZ2RiOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2luaXRpYWxpemUoY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzLAorCQkJICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpwYXJhbSwKKwkJCSAgICBpb19tYW5hZ2VyIG1hbmFnZXIsIGV4dDJfZmlsc3lzICpyZXRfZnMpCit7CisJZXh0Ml9maWxzeXMJZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc3VwZXI7CisJdW5zaWduZWQgaW50CXJlbTsKKwl1bnNpZ25lZCBpbnQJb3ZlcmhlYWQgPSAwOworCXVuc2lnbmVkIGludAlpcGc7CisJZGdycF90CQlpOworCWJsazY0X3QJCWZyZWVfYmxvY2tzOworCWJsa190CQludW1ibG9ja3M7CisJaW50CQlyc3ZfZ2R0OworCWludAkJY3N1bV9mbGFnOworCWludAkJYmlnYWxsb2NfZmxhZzsKKwlpbnQJCWlvX2ZsYWdzOworCWludAkJaGFzX2JnOworCXVuc2lnbmVkCXJlc2VydmVkX2lub3M7CisJY2hhcgkJKmJ1ZiA9IDA7CisJY2hhcgkJYzsKKwlkb3VibGUJCXJlc2VydmVkX3JhdGlvOworCisJaWYgKCFwYXJhbSB8fCAhZXh0MmZzX2Jsb2Nrc19jb3VudChwYXJhbSkpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cyksICZmcyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldChmcywgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfZXh0Ml9maWxzeXMpKTsKKwlmcy0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVM7CisJZnMtPmZsYWdzID0gZmxhZ3MgfCBFWFQyX0ZMQUdfUlc7CisJZnMtPnVtYXNrID0gMDIyOworCWZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gRVhUMkZTX0JNQVA2NF9SQlRSRUU7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19TV0FQX0JZVEVTOworI2VuZGlmCisJaW9fZmxhZ3MgPSBJT19GTEFHX1JXOworCWlmIChmbGFncyAmIEVYVDJfRkxBR19FWENMVVNJVkUpCisJCWlvX2ZsYWdzIHw9IElPX0ZMQUdfRVhDTFVTSVZFOworCWlmIChmbGFncyAmIEVYVDJfRkxBR19ESVJFQ1RfSU8pCisJCWlvX2ZsYWdzIHw9IElPX0ZMQUdfRElSRUNUX0lPOworCXJldHZhbCA9IG1hbmFnZXItPm9wZW4obmFtZSwgaW9fZmxhZ3MsICZmcy0+aW8pOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwlmcy0+aW1hZ2VfaW8gPSBmcy0+aW87CisJZnMtPmlvLT5hcHBfZGF0YSA9IGZzOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHN0cmxlbihuYW1lKSsxLCAmZnMtPmRldmljZV9uYW1lKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlzdHJjcHkoZnMtPmRldmljZV9uYW1lLCBuYW1lKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShTVVBFUkJMT0NLX1NJWkUsICZzdXBlcik7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCWZzLT5zdXBlciA9IHN1cGVyOworCisJbWVtc2V0KHN1cGVyLCAwLCBTVVBFUkJMT0NLX1NJWkUpOworCisjZGVmaW5lIHNldF9maWVsZChmaWVsZCwgZGVmYXVsdCkgKHN1cGVyLT5maWVsZCA9IHBhcmFtLT5maWVsZCA/IFwKKwkJCQkgICBwYXJhbS0+ZmllbGQgOiAoZGVmYXVsdCkpCisjZGVmaW5lIGFzc2lnbl9maWVsZChmaWVsZCkJKHN1cGVyLT5maWVsZCA9IHBhcmFtLT5maWVsZCkKKworCXN1cGVyLT5zX21hZ2ljID0gRVhUMl9TVVBFUl9NQUdJQzsKKwlzdXBlci0+c19zdGF0ZSA9IEVYVDJfVkFMSURfRlM7CisKKwliaWdhbGxvY19mbGFnID0gZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKHBhcmFtKTsKKworCWFzc2lnbl9maWVsZChzX2xvZ19ibG9ja19zaXplKTsKKworCWlmIChiaWdhbGxvY19mbGFnKSB7CisJCXNldF9maWVsZChzX2xvZ19jbHVzdGVyX3NpemUsIHN1cGVyLT5zX2xvZ19ibG9ja19zaXplKzQpOworCQlpZiAoc3VwZXItPnNfbG9nX2Jsb2NrX3NpemUgPiBzdXBlci0+c19sb2dfY2x1c3Rlcl9zaXplKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9IGVsc2UKKwkJc3VwZXItPnNfbG9nX2NsdXN0ZXJfc2l6ZSA9IHN1cGVyLT5zX2xvZ19ibG9ja19zaXplOworCisJc2V0X2ZpZWxkKHNfZmlyc3RfZGF0YV9ibG9jaywgc3VwZXItPnNfbG9nX2NsdXN0ZXJfc2l6ZSA/IDAgOiAxKTsKKwlzZXRfZmllbGQoc19tYXhfbW50X2NvdW50LCAwKTsKKwlzZXRfZmllbGQoc19lcnJvcnMsIEVYVDJfRVJST1JTX0RFRkFVTFQpOworCXNldF9maWVsZChzX2ZlYXR1cmVfY29tcGF0LCAwKTsKKwlzZXRfZmllbGQoc19mZWF0dXJlX2luY29tcGF0LCAwKTsKKwlzZXRfZmllbGQoc19mZWF0dXJlX3JvX2NvbXBhdCwgMCk7CisJc2V0X2ZpZWxkKHNfZGVmYXVsdF9tb3VudF9vcHRzLCAwKTsKKwlzZXRfZmllbGQoc19maXJzdF9tZXRhX2JnLCAwKTsKKwlzZXRfZmllbGQoc19yYWlkX3N0cmlkZSwgMCk7CQkvKiBkZWZhdWx0IHN0cmlkZSBzaXplOiAwICovCisJc2V0X2ZpZWxkKHNfcmFpZF9zdHJpcGVfd2lkdGgsIDApOwkvKiBkZWZhdWx0IHN0cmlwZSB3aWR0aDogMCAqLworCXNldF9maWVsZChzX2xvZ19ncm91cHNfcGVyX2ZsZXgsIDApOworCXNldF9maWVsZChzX2ZsYWdzLCAwKTsKKwlhc3NpZ25fZmllbGQoc19iYWNrdXBfYmdzWzBdKTsKKwlhc3NpZ25fZmllbGQoc19iYWNrdXBfYmdzWzFdKTsKKwlpZiAoc3VwZXItPnNfZmVhdHVyZV9pbmNvbXBhdCAmIH5FWFQyX0xJQl9GRUFUVVJFX0lOQ09NUEFUX1NVUFApIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9VTlNVUFBfRkVBVFVSRTsKKwkJZ290byBjbGVhbnVwOworCX0KKwlpZiAoc3VwZXItPnNfZmVhdHVyZV9yb19jb21wYXQgJiB+RVhUMl9MSUJfRkVBVFVSRV9ST19DT01QQVRfU1VQUCkgeworCQlyZXR2YWwgPSBFWFQyX0VUX1JPX1VOU1VQUF9GRUFUVVJFOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJc2V0X2ZpZWxkKHNfcmV2X2xldmVsLCBFWFQyX0dPT0RfT0xEX1JFVik7CisJaWYgKHN1cGVyLT5zX3Jldl9sZXZlbCA+PSBFWFQyX0RZTkFNSUNfUkVWKSB7CisJCXNldF9maWVsZChzX2ZpcnN0X2lubywgRVhUMl9HT09EX09MRF9GSVJTVF9JTk8pOworCQlzZXRfZmllbGQoc19pbm9kZV9zaXplLCBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUpOworCQlpZiAoc3VwZXItPnNfaW5vZGVfc2l6ZSA+PSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpKSB7CisJCQlpbnQgZXh0cmFfaXNpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpIC0KKwkJCQlFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkU7CisJCQlzZXRfZmllbGQoc19taW5fZXh0cmFfaXNpemUsIGV4dHJhX2lzaXplKTsKKwkJCXNldF9maWVsZChzX3dhbnRfZXh0cmFfaXNpemUsIGV4dHJhX2lzaXplKTsKKwkJfQorCX0gZWxzZSB7CisJCXN1cGVyLT5zX2ZpcnN0X2lubyA9IEVYVDJfR09PRF9PTERfRklSU1RfSU5POworCQlzdXBlci0+c19pbm9kZV9zaXplID0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFOworCX0KKworCXNldF9maWVsZChzX2NoZWNraW50ZXJ2YWwsIDApOworCXN1cGVyLT5zX21rZnNfdGltZSA9IHN1cGVyLT5zX2xhc3RjaGVjayA9IGZzLT5ub3cgPyBmcy0+bm93IDogdGltZShOVUxMKTsKKworCXN1cGVyLT5zX2NyZWF0b3Jfb3MgPSBDUkVBVE9SX09TOworCisJZnMtPmZyYWdzaXplID0gZnMtPmJsb2Nrc2l6ZSA9IEVYVDJfQkxPQ0tfU0laRShzdXBlcik7CisJZnMtPmNsdXN0ZXJfcmF0aW9fYml0cyA9IHN1cGVyLT5zX2xvZ19jbHVzdGVyX3NpemUgLQorCQlzdXBlci0+c19sb2dfYmxvY2tfc2l6ZTsKKworCWlmIChiaWdhbGxvY19mbGFnKSB7CisJCXVuc2lnbmVkIGxvbmcgbG9uZyBicGc7CisKKwkJaWYgKHBhcmFtLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgJiYKKwkJICAgIHBhcmFtLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCAmJgorCQkgICAgKChwYXJhbS0+c19jbHVzdGVyc19wZXJfZ3JvdXAgKiBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykpICE9CisJCSAgICAgcGFyYW0tPnNfYmxvY2tzX3Blcl9ncm91cCkpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCQlpZiAocGFyYW0tPnNfY2x1c3RlcnNfcGVyX2dyb3VwKQorCQkJYXNzaWduX2ZpZWxkKHNfY2x1c3RlcnNfcGVyX2dyb3VwKTsKKwkJZWxzZSBpZiAocGFyYW0tPnNfYmxvY2tzX3Blcl9ncm91cCkKKwkJCXN1cGVyLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCA9IAorCQkJCXBhcmFtLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgLworCQkJCUVYVDJGU19DTFVTVEVSX1JBVElPKGZzKTsKKwkJZWxzZSBpZiAoc3VwZXItPnNfbG9nX2NsdXN0ZXJfc2l6ZSArIDE1IDwgMzIpCisJCQlzdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgPSBmcy0+YmxvY2tzaXplICogODsKKwkJZWxzZQorCQkJc3VwZXItPnNfY2x1c3RlcnNfcGVyX2dyb3VwID0gKGZzLT5ibG9ja3NpemUgLSAxKSAqIDg7CisJCWlmIChzdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXAgPiBFWFQyX01BWF9DTFVTVEVSU19QRVJfR1JPVVAoc3VwZXIpKQorCQkJc3VwZXItPnNfY2x1c3RlcnNfcGVyX2dyb3VwID0gRVhUMl9NQVhfQ0xVU1RFUlNfUEVSX0dST1VQKHN1cGVyKTsKKwkJYnBnID0gRVhUMkZTX0MyQihmcywKKwkJCSh1bnNpZ25lZCBsb25nIGxvbmcpIHN1cGVyLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCk7CisJCWlmIChicGcgPj0gKCgodW5zaWduZWQgbG9uZyBsb25nKSAxKSA8PCAzMikpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCQlzdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwID0gYnBnOworCX0gZWxzZSB7CisJCXNldF9maWVsZChzX2Jsb2Nrc19wZXJfZ3JvdXAsIGZzLT5ibG9ja3NpemUgKiA4KTsKKwkJaWYgKHN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgPiBFWFQyX01BWF9CTE9DS1NfUEVSX0dST1VQKHN1cGVyKSkKKwkJCXN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgPSBFWFQyX01BWF9CTE9DS1NfUEVSX0dST1VQKHN1cGVyKTsKKwkJc3VwZXItPnNfY2x1c3RlcnNfcGVyX2dyb3VwID0gc3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisKKwlleHQyZnNfYmxvY2tzX2NvdW50X3NldChzdXBlciwgZXh0MmZzX2Jsb2Nrc19jb3VudChwYXJhbSkgJgorCQkJCX4oKGJsazY0X3QpIEVYVDJGU19DTFVTVEVSX01BU0soZnMpKSk7CisJZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChzdXBlciwgZXh0MmZzX3JfYmxvY2tzX2NvdW50KHBhcmFtKSk7CisJaWYgKGV4dDJmc19yX2Jsb2Nrc19jb3VudChzdXBlcikgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChwYXJhbSkpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJc2V0X2ZpZWxkKHNfbW1wX3VwZGF0ZV9pbnRlcnZhbCwgMCk7CisKKwkvKgorCSAqIElmIHdlJ3JlIGNyZWF0aW5nIGFuIGV4dGVybmFsIGpvdXJuYWwgZGV2aWNlLCB3ZSBkb24ndCBuZWVkCisJICogdG8gYm90aGVyIHdpdGggdGhlIHJlc3QuCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2RldihzdXBlcikpIHsKKwkJZnMtPmdyb3VwX2Rlc2NfY291bnQgPSAwOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCSpyZXRfZnMgPSBmczsKKwkJcmV0dXJuIDA7CisJfQorCityZXRyeToKKwlmcy0+Z3JvdXBfZGVzY19jb3VudCA9IChkZ3JwX3QpIGV4dDJmc19kaXY2NF9jZWlsKAorCQlleHQyZnNfYmxvY2tzX2NvdW50KHN1cGVyKSAtIHN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2ssCisJCUVYVDJfQkxPQ0tTX1BFUl9HUk9VUChzdXBlcikpOworCWlmIChmcy0+Z3JvdXBfZGVzY19jb3VudCA9PSAwKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfVE9PU01BTEw7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwlzZXRfZmllbGQoc19kZXNjX3NpemUsCisJCSAgZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KHN1cGVyKSA/CisJCSAgRVhUMl9NSU5fREVTQ19TSVpFXzY0QklUIDogMCk7CisKKwlmcy0+ZGVzY19ibG9ja3MgPSBleHQyZnNfZGl2X2NlaWwoZnMtPmdyb3VwX2Rlc2NfY291bnQsCisJCQkJCSAgRVhUMl9ERVNDX1BFUl9CTE9DSyhzdXBlcikpOworCisJaSA9IGZzLT5ibG9ja3NpemUgPj0gNDA5NiA/IDEgOiA0MDk2IC8gZnMtPmJsb2Nrc2l6ZTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoc3VwZXIpICYmCisJICAgIChleHQyZnNfYmxvY2tzX2NvdW50KHN1cGVyKSAvIGkpID4gKDFVTEwgPDwgMzIpKQorCQlzZXRfZmllbGQoc19pbm9kZXNfY291bnQsIH4wVSk7CisJZWxzZQorCQlzZXRfZmllbGQoc19pbm9kZXNfY291bnQsIGV4dDJmc19ibG9ja3NfY291bnQoc3VwZXIpIC8gaSk7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBoYXZlIGF0IGxlYXN0IEVYVDJfRklSU1RfSU5PICsgMSBpbm9kZXMsIHNvCisJICogdGhhdCB3ZSBoYXZlIGVub3VnaCBpbm9kZXMgZm9yIHRoZSBmaWxlc3lzdGVtKCEpCisJICovCisJaWYgKHN1cGVyLT5zX2lub2Rlc19jb3VudCA8IEVYVDJfRklSU1RfSU5PREUoc3VwZXIpKzEpCisJCXN1cGVyLT5zX2lub2Rlc19jb3VudCA9IEVYVDJfRklSU1RfSU5PREUoc3VwZXIpKzE7CisKKwkvKgorCSAqIFRoZXJlIHNob3VsZCBiZSBhdCBsZWFzdCBhcyBtYW55IGlub2RlcyBhcyB0aGUgdXNlcgorCSAqIHJlcXVlc3RlZC4gIEZpZ3VyZSBvdXQgaG93IG1hbnkgaW5vZGVzIHBlciBncm91cCB0aGF0CisJICogc2hvdWxkIGJlLiAgQnV0IG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGFsbG9jYXRlIG1vcmUgdGhhbgorCSAqIG9uZSBiaXRtYXAncyB3b3J0aCBvZiBpbm9kZXMgZWFjaCBncm91cC4KKwkgKi8KKwlpcGcgPSBleHQyZnNfZGl2X2NlaWwoc3VwZXItPnNfaW5vZGVzX2NvdW50LCBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisJaWYgKGlwZyA+IGZzLT5ibG9ja3NpemUgKiA4KSB7CisJCWlmICghYmlnYWxsb2NfZmxhZyAmJiBzdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwID49IDI1NikgeworCQkJLyogVHJ5IGFnYWluIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IHBhcmFtZXRlcnMgKi8KKwkJCXN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXAgLT0gODsKKwkJCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KHN1cGVyLAorCQkJCQkJZXh0MmZzX2Jsb2Nrc19jb3VudChwYXJhbSkpOworCQkJc3VwZXItPnNfY2x1c3RlcnNfcGVyX2dyb3VwID0gc3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwkJCWdvdG8gcmV0cnk7CisJCX0gZWxzZSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX1RPT19NQU5ZX0lOT0RFUzsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCX0KKworCWlmIChpcGcgPiAodW5zaWduZWQpIEVYVDJfTUFYX0lOT0RFU19QRVJfR1JPVVAoc3VwZXIpKQorCQlpcGcgPSBFWFQyX01BWF9JTk9ERVNfUEVSX0dST1VQKHN1cGVyKTsKKworaXBnX3JldHJ5OgorCXN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgPSBpcGc7CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIGlub2RlcyBwZXIgZ3JvdXAgY29tcGxldGVseSBmaWxscworCSAqIHRoZSBpbm9kZSB0YWJsZSBibG9ja3MgaW4gdGhlIGRlc2NyaXB0b3IuICBJZiBub3QsIGFkZCBzb21lCisJICogYWRkaXRpb25hbCBpbm9kZXMvZ3JvdXAuICBXYXN0ZSBub3QsIHdhbnQgbm90Li4uCisJICovCisJZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgPSAoKChzdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwICoKKwkJCQkJRVhUMl9JTk9ERV9TSVpFKHN1cGVyKSkgKworCQkJCSAgICAgICBFWFQyX0JMT0NLX1NJWkUoc3VwZXIpIC0gMSkgLworCQkJCSAgICAgIEVYVDJfQkxPQ0tfU0laRShzdXBlcikpOworCXN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgPSAoKGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICoKKwkJCQkgICAgICBFWFQyX0JMT0NLX1NJWkUoc3VwZXIpKSAvCisJCQkJICAgICBFWFQyX0lOT0RFX1NJWkUoc3VwZXIpKTsKKwkvKgorCSAqIEZpbmFsbHksIG1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIGlub2RlcyBwZXIgZ3JvdXAgaXMgYQorCSAqIG11bHRpcGxlIG9mIDguICBUaGlzIGlzIG5lZWRlZCB0byBzaW1wbGlmeSB0aGUgYml0bWFwCisJICogc3BsaWNpbmcgY29kZS4KKwkgKi8KKwlpZiAoc3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCA8IDgpCisJCXN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgPSA4OworCXN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXAgJj0gfjc7CisJZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgPSAoKChzdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwICoKKwkJCQkJRVhUMl9JTk9ERV9TSVpFKHN1cGVyKSkgKworCQkJCSAgICAgICBFWFQyX0JMT0NLX1NJWkUoc3VwZXIpIC0gMSkgLworCQkJCSAgICAgIEVYVDJfQkxPQ0tfU0laRShzdXBlcikpOworCisJLyoKKwkgKiBhZGp1c3QgaW5vZGUgY291bnQgdG8gcmVmbGVjdCB0aGUgYWRqdXN0ZWQgaW5vZGVzX3Blcl9ncm91cAorCSAqLworCWlmICgoX191NjQpc3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAqIGZzLT5ncm91cF9kZXNjX2NvdW50ID4gfjBVKSB7CisJCWlwZy0tOworCQlnb3RvIGlwZ19yZXRyeTsKKwl9CisJc3VwZXItPnNfaW5vZGVzX2NvdW50ID0gc3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAqCisJCWZzLT5ncm91cF9kZXNjX2NvdW50OworCXN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50ID0gc3VwZXItPnNfaW5vZGVzX2NvdW50OworCisJLyoKKwkgKiBjaGVjayB0aGUgbnVtYmVyIG9mIHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgdGFibGUgYmxvY2tzCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9yZXNpemVfaW5vZGUoc3VwZXIpKQorCQlyc3ZfZ2R0ID0gY2FsY19yZXNlcnZlZF9nZHRfYmxvY2tzKGZzKTsKKwllbHNlCisJCXJzdl9nZHQgPSAwOworCXNldF9maWVsZChzX3Jlc2VydmVkX2dkdF9ibG9ja3MsIHJzdl9nZHQpOworCWlmIChzdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzID4gRVhUMl9BRERSX1BFUl9CTE9DSyhzdXBlcikpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9SRVNfR0RUX0JMT0NLUzsKKwkJZ290byBjbGVhbnVwOworCX0KKworCS8qCisJICogQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBib29ra2VlcGluZyBibG9ja3MgcGVyCisJICogZ3JvdXAuICBJdCBpbmNsdWRlcyB0aGUgc3VwZXJibG9jaywgdGhlIGJsb2NrIGdyb3VwCisJICogZGVzY3JpcHRvcnMsIHRoZSBibG9jayBiaXRtYXAsIHRoZSBpbm9kZSBiaXRtYXAsIHRoZSBpbm9kZQorCSAqIHRhYmxlLCBhbmQgdGhlIHJlc2VydmVkIGdkdCBibG9ja3MuCisJICovCisJb3ZlcmhlYWQgPSAoaW50KSAoMyArIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICsKKwkJCSAgc3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrcyk7CisKKwkvKiBFbmFibGUgbWV0YV9iZyBpZiB3ZSdkIGxvc2UgbW9yZSB0aGFuIDMvNCBvZiBhIEJHIHRvIEdEVCBibG9ja3MuICovCisJaWYgKHN1cGVyLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MgKyBmcy0+ZGVzY19ibG9ja3MgPgorCSAgICBzdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwICogMyAvIDQpCisJCWV4dDJmc19zZXRfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcik7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoZnMtPnN1cGVyKSkKKwkJb3ZlcmhlYWQrKzsKKwllbHNlCisJCW92ZXJoZWFkICs9IGZzLT5kZXNjX2Jsb2NrczsKKworCS8qIFRoaXMgY2FuIG9ubHkgaGFwcGVuIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCB0b28gbWFueSBpbm9kZXMgKi8KKwlpZiAob3ZlcmhlYWQgPiBzdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfVE9PX01BTllfSU5PREVTOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBTZWUgaWYgdGhlIGxhc3QgZ3JvdXAgaXMgYmlnIGVub3VnaCB0byBzdXBwb3J0IHRoZQorCSAqIG5lY2Vzc2FyeSBkYXRhIHN0cnVjdHVyZXMuICBJZiBub3QsIHdlIG5lZWQgdG8gZ2V0IHJpZCBvZgorCSAqIGl0LiAgV2UgbmVlZCB0byByZWNhbGN1bGF0ZSB0aGUgb3ZlcmhlYWQgZm9yIHRoZSBsYXN0IGJsb2NrCisJICogZ3JvdXAsIHNpbmNlIGl0IG1pZ2h0IG9yIG1pZ2h0IG5vdCBoYXZlIGEgc3VwZXJibG9jaworCSAqIGJhY2t1cC4KKwkgKi8KKwlvdmVyaGVhZCA9IChpbnQpICgyICsgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCWhhc19iZyA9IDA7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIyKHN1cGVyKSkgeworCQkvKgorCQkgKiBXZSBoYXZlIHRvIGRvIHRoaXMgbWFudWFsbHkgc2luY2UKKwkJICogc3VwZXItPnNfYmFja3VwX2JncyBoYXNuJ3QgYmVlbiBzZXQgdXAgeWV0LgorCQkgKi8KKwkJaWYgKGZzLT5ncm91cF9kZXNjX2NvdW50ID09IDIpCisJCQloYXNfYmcgPSBwYXJhbS0+c19iYWNrdXBfYmdzWzBdICE9IDA7CisJCWVsc2UKKwkJCWhhc19iZyA9IHBhcmFtLT5zX2JhY2t1cF9iZ3NbMV0gIT0gMDsKKwl9IGVsc2UKKwkJaGFzX2JnID0gZXh0MmZzX2JnX2hhc19zdXBlcihmcywgZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKTsKKwlpZiAoaGFzX2JnKQorCQlvdmVyaGVhZCArPSAxICsgZnMtPmRlc2NfYmxvY2tzICsgc3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrczsKKwlyZW0gPSAoKGV4dDJmc19ibG9ja3NfY291bnQoc3VwZXIpIC0gc3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgJQorCSAgICAgICBzdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKwlpZiAoKGZzLT5ncm91cF9kZXNjX2NvdW50ID09IDEpICYmIHJlbSAmJiAocmVtIDwgb3ZlcmhlYWQpKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfVE9PU01BTEw7CisJCWdvdG8gY2xlYW51cDsKKwl9CisJaWYgKHJlbSAmJiAocmVtIDwgb3ZlcmhlYWQrNTApKSB7CisJCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KHN1cGVyLCBleHQyZnNfYmxvY2tzX2NvdW50KHN1cGVyKSAtCisJCQkJCXJlbSk7CisJCS8qCisJCSAqIElmIGJsb2NrcyBjb3VudCBpcyBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHJlY2FsY3VsYXRlCisJCSAqIHJlc2VydmVkIGJsb2NrcyBjb3VudCBub3QgdG8gZXhjZWVkIDUwJS4KKwkJICovCisJCXJlc2VydmVkX3JhdGlvID0gMTAwLjAgKiBleHQyZnNfcl9ibG9ja3NfY291bnQocGFyYW0pIC8KKwkJCWV4dDJmc19ibG9ja3NfY291bnQocGFyYW0pOworCQlleHQyZnNfcl9ibG9ja3NfY291bnRfc2V0KHN1cGVyLCByZXNlcnZlZF9yYXRpbyAqCisJCQlleHQyZnNfYmxvY2tzX2NvdW50KHN1cGVyKSAvIDEwMC4wKTsKKworCQlnb3RvIHJldHJ5OworCX0KKworCS8qCisJICogQXQgdGhpcyBwb2ludCB3ZSBrbm93IGhvdyBiaWcgdGhlIGZpbGVzeXN0ZW0gd2lsbCBiZS4gIFNvCisJICogd2UgY2FuIGRvIGFueSBhbmQgYWxsIGFsbG9jYXRpb25zIHRoYXQgZGVwZW5kIG9uIHRoZSBibG9jaworCSAqIGNvdW50LgorCSAqLworCisJLyogU2V0IHVwIHRoZSBsb2NhdGlvbnMgb2YgdGhlIGJhY2t1cCBzdXBlcmJsb2NrcyAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfc3BhcnNlX3N1cGVyMihzdXBlcikpIHsKKwkJaWYgKHN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gPj0gZnMtPmdyb3VwX2Rlc2NfY291bnQpCisJCQlzdXBlci0+c19iYWNrdXBfYmdzWzBdID0gZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxOworCQlpZiAoc3VwZXItPnNfYmFja3VwX2Jnc1sxXSA+PSBmcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJCXN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0gPSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIDE7CisJCWlmIChzdXBlci0+c19iYWNrdXBfYmdzWzBdID09IHN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0pCisJCQlzdXBlci0+c19iYWNrdXBfYmdzWzFdID0gMDsKKwkJaWYgKHN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gPiBzdXBlci0+c19iYWNrdXBfYmdzWzFdKSB7CisJCQlfX3UzMiB0ID0gc3VwZXItPnNfYmFja3VwX2Jnc1swXTsKKwkJCXN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gPSBzdXBlci0+c19iYWNrdXBfYmdzWzFdOworCQkJc3VwZXItPnNfYmFja3VwX2Jnc1sxXSA9IHQ7CisJCX0KKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oZnMtPmRldmljZV9uYW1lKSArIDgwLCAmYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlzdHJjcHkoYnVmLCAiYmxvY2sgYml0bWFwIGZvciAiKTsKKwlzdHJjYXQoYnVmLCBmcy0+ZGV2aWNlX25hbWUpOworCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9zdWJjbHVzdGVyX2JpdG1hcChmcywgYnVmLCAmZnMtPmJsb2NrX21hcCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJc3RyY3B5KGJ1ZiwgImlub2RlIGJpdG1hcCBmb3IgIik7CisJc3RyY2F0KGJ1ZiwgZnMtPmRldmljZV9uYW1lKTsKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKGZzLCBidWYsICZmcy0+aW5vZGVfbWFwKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGZzLT5kZXNjX2Jsb2NrcywgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkmZnMtPmdyb3VwX2Rlc2MpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKworCW1lbXNldChmcy0+Z3JvdXBfZGVzYywgMCwgKHNpemVfdCkgZnMtPmRlc2NfYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSk7CisKKwkvKgorCSAqIFJlc2VydmUgdGhlIHN1cGVyYmxvY2sgYW5kIGdyb3VwIGRlc2NyaXB0b3JzIGZvciBlYWNoCisJICogZ3JvdXAsIGFuZCBmaWxsIGluIHRoZSBjb3JyZWN0IGdyb3VwIHN0YXRpc3RpY3MgZm9yIGdyb3VwLgorCSAqIE5vdGUgdGhhdCBhbHRob3VnaCB0aGUgYmxvY2sgYml0bWFwLCBpbm9kZSBiaXRtYXAsIGFuZAorCSAqIGlub2RlIHRhYmxlIGhhdmUgbm90IGJlZW4gYWxsb2NhdGVkIChhbmQgaW4gZmFjdCB3b24ndCBiZQorCSAqIGJ5IHRoaXMgcm91dGluZSksIHRoZXkgYXJlIGFjY291bnRlZCBmb3IgbmV2ZXJ0aGVsZXNzLgorCSAqCisJICogSWYgRkxFWF9CRyBtZXRhLWRhdGEgZ3JvdXBpbmcgaXMgdXNlZCwgb25seSBhY2NvdW50IGZvciB0aGUKKwkgKiBzdXBlcmJsb2NrIGFuZCBncm91cCBkZXNjcmlwdG9ycyAodGhlIGlub2RlIHRhYmxlcyBhbmQKKwkgKiBiaXRtYXBzIHdpbGwgYmUgYWNjb3VudGVkIGZvciB3aGVuIGFsbG9jYXRlZCkuCisJICovCisJZnJlZV9ibG9ja3MgPSAwOworCWNzdW1fZmxhZyA9IGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKTsKKwlyZXNlcnZlZF9pbm9zID0gc3VwZXItPnNfZmlyc3RfaW5vOworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCS8qCisJCSAqIERvbid0IHNldCB0aGUgQkxPQ0tfVU5JTklUIGdyb3VwIGZvciB0aGUgbGFzdCBncm91cAorCQkgKiBiZWNhdXNlIHRoZSBibG9jayBiaXRtYXAgbmVlZHMgdG8gYmUgcGFkZGVkLgorCQkgKi8KKwkJaWYgKGNzdW1fZmxhZykgeworCQkJaWYgKGkgIT0gZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKQorCQkJCWV4dDJmc19iZ19mbGFnc19zZXQoZnMsIGksCisJCQkJCQkgICAgRVhUMl9CR19CTE9DS19VTklOSVQpOworCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCQkJbnVtYmxvY2tzID0gc3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cDsKKwkJCWlmIChyZXNlcnZlZF9pbm9zKSB7CisJCQkJaWYgKG51bWJsb2NrcyA+IHJlc2VydmVkX2lub3MpIHsKKwkJCQkJbnVtYmxvY2tzIC09IHJlc2VydmVkX2lub3M7CisJCQkJCXJlc2VydmVkX2lub3MgPSAwOworCQkJCX0gZWxzZSB7CisJCQkJCXJlc2VydmVkX2lub3MgLT0gbnVtYmxvY2tzOworCQkJCQludW1ibG9ja3MgPSAwOworCQkJCX0KKwkJCX0KKwkJCWV4dDJmc19iZ19pdGFibGVfdW51c2VkX3NldChmcywgaSwgbnVtYmxvY2tzKTsKKwkJfQorCQludW1ibG9ja3MgPSBleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGZzLCBpLCBmcy0+YmxvY2tfbWFwKTsKKwkJaWYgKGZzLT5zdXBlci0+c19sb2dfZ3JvdXBzX3Blcl9mbGV4KQorCQkJbnVtYmxvY2tzICs9IDIgKyBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCQlmcmVlX2Jsb2NrcyArPSBudW1ibG9ja3M7CisJCWV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMsIGksIG51bWJsb2Nrcyk7CisJCWV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXQoZnMsIGksIGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwKTsKKwkJZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudF9zZXQoZnMsIGksIDApOworCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgaSk7CisJfQorCWZyZWVfYmxvY2tzICY9IH5FWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKTsKKwlleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfc2V0KHN1cGVyLCBmcmVlX2Jsb2Nrcyk7CisKKwljID0gKGNoYXIpIDI1NTsKKwlpZiAoKChpbnQpIGMpID09IC0xKSB7CisJCXN1cGVyLT5zX2ZsYWdzIHw9IEVYVDJfRkxBR1NfU0lHTkVEX0hBU0g7CisJfSBlbHNlIHsKKwkJc3VwZXItPnNfZmxhZ3MgfD0gRVhUMl9GTEFHU19VTlNJR05FRF9IQVNIOworCX0KKworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlleHQyZnNfbWFya19iYl9kaXJ0eShmcyk7CisJZXh0MmZzX21hcmtfaWJfZGlydHkoZnMpOworCisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIGZzLT5ibG9ja3NpemUpOworCisJKnJldF9mcyA9IGZzOworCXJldHVybiAwOworY2xlYW51cDoKKwlmcmVlKGJ1Zik7CisJZXh0MmZzX2ZyZWUoZnMpOworCXJldHVybiByZXR2YWw7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmxpbmUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lubGluZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMmFlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmxpbmUuYwpAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIGlubGluZS5jIC0tLSBJbmNsdWRlcyB0aGUgaW5saW5lZCBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgaGVhZGVyCisgKiAJZmlsZXMgYXMgc3RhbmRhbG9uZSBmdW5jdGlvbnMsIGluIGNhc2UgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0KKyAqIAlpcyBjb21waWxlZCB3aXRoIGlubGluaW5nIHR1cm5lZCBvZmYuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9YT1BFTl9TT1VSQ0UKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAJLyogZm9yIHBvc2l4X21lbWFsaWduKCkgKi8KKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9NQUxMT0NfSAorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjZGVmaW5lIElOQ0xVREVfSU5MSU5FX0ZVTkNTCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKy8qCisgKiBXZSB1c2VkIHRvIGRlZmluZSB0aGlzIGFzIGFuIGlubGluZSwgYnV0IHNpbmNlIHdlIGFyZSBub3cgdXNpbmcKKyAqIGF1dG9jb25mLWRlZmluZWQgI2lmZGVmJ3MsIHdlIG5lZWQgdG8gZXhwb3J0IHRoaXMgYXMgYQorICogbGlicmFyeS1wcm92aWRlZCBmdW5jdGlvbiBleGNsdXNpdmVseS4KKyAqLworZXJyY29kZV90IGV4dDJmc19nZXRfbWVtYWxpZ24odW5zaWduZWQgbG9uZyBzaXplLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBhbGlnbiwgdm9pZCAqcHRyKQoreworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCXZvaWQgKipwID0gcHRyOworCisJaWYgKGFsaWduIDwgOCkKKwkJYWxpZ24gPSA4OworI2lmZGVmIEhBVkVfUE9TSVhfTUVNQUxJR04KKwlyZXR2YWwgPSBwb3NpeF9tZW1hbGlnbihwLCBhbGlnbiwgc2l6ZSk7CisJaWYgKHJldHZhbCA9PSBFTk9NRU0pCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKyNlbHNlICAvKiAhSEFWRV9QT1NJWF9NRU1BTElHTiAqLworI2lmZGVmIEhBVkVfTUVNQUxJR04KKwkqcCA9IG1lbWFsaWduKGFsaWduLCBzaXplKTsKKwlpZiAoKnAgPT0gTlVMTCkgeworCQlpZiAoZXJybm8pCisJCQlyZXR1cm4gZXJybm87CisJCWVsc2UKKwkJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwl9CisjZWxzZSAgLyogIUhBVkVfTUVNQUxJR04gKi8KKyNpZmRlZiBIQVZFX1ZBTExPQworCWlmIChhbGlnbiA+IHNpemVvZihsb25nIGxvbmcpKQorCQkqcCA9IHZhbGxvYyhzaXplKTsKKwllbHNlCisjZW5kaWYKKwkJKnAgPSBtYWxsb2Moc2l6ZSk7CisJaWYgKCh1aW50cHRyX3QpICpwICYgKGFsaWduIC0gMSkpIHsKKwkJZnJlZSgqcCk7CisJCSpwID0gMDsKKwl9CisJaWYgKCpwID09IDApCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKyNlbmRpZgkvKiBIQVZFX01FTUFMSUdOICovCisjZW5kaWYJLyogSEFWRV9QT1NJWF9NRU1BTElHTiAqLworCXJldHVybiByZXR2YWw7Cit9CisKKyNpZmRlZiBERUJVRworc3RhdGljIGludCBpc2FsaWduZWQodm9pZCAqcHRyLCB1bnNpZ25lZCBsb25nIGFsaWduKQoreworCXJldHVybiAoKCh1bnNpZ25lZCBsb25nKSBwdHIgJiAoYWxpZ24gLSAxKSkgPT0gMCk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9tZW1hbGlnbih1bnNpZ25lZCBsb25nIGFsaWduKQoreworCXZvaWQgKnB0ciA9IDA7CisJZXJyY29kZV90IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtYWxpZ24oMzIsIGFsaWduLCAmcHRyKTsKKwlpZiAoIXJldHZhbCAmJiAhaXNhbGlnbmVkKHB0ciwgYWxpZ24pKQorCQlyZXR2YWwgPSBFSU5WQUw7CisJZnJlZShwdHIpOworCXByaW50ZigidHN0X21lbWFsaWduKCVsdSkgaXMgJXNcbiIsIGFsaWduLAorCSAgICAgICByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGVyciA9IDA7CisKKwlpZiAodGVzdF9tZW1hbGlnbig0KSkKKwkJZXJyKys7CisJaWYgKHRlc3RfbWVtYWxpZ24oMzIpKQorCQllcnIrKzsKKwlpZiAodGVzdF9tZW1hbGlnbigxMDI0KSkKKwkJZXJyKys7CisJaWYgKHRlc3RfbWVtYWxpZ24oNDA5NikpCisJCWVycisrOworCXJldHVybiBlcnI7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lubGluZV9kYXRhLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmxpbmVfZGF0YS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4N2I4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbmxpbmVfZGF0YS5jCkBAIC0wLDAgKzEsODUxIEBACisvKgorICogaW5saW5lX2RhdGEuYyAtLS0gZGF0YSBpbiBpbm9kZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBaaGVuZyBMaXUgPHdlbnFpbmcubHpAdGFvYmFvLmNvbT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIGxpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4gLyogZm9yIFBBVEhfTUFYICovCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0Ml9leHRfYXR0ci5oIgorCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorCitzdHJ1Y3QgZXh0Ml9pbmxpbmVfZGF0YSB7CisJZXh0Ml9maWxzeXMgZnM7CisJZXh0Ml9pbm9fdCBpbm87CisJc2l6ZV90IGVhX3NpemU7CS8qIHRoZSBzaXplIG9mIGlubGluZSBkYXRhIGluIGVhIGFyZWEgKi8KKwl2b2lkICplYV9kYXRhOworfTsKKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfaW5saW5lX2RhdGFfZWFfc2V0KHN0cnVjdCBleHQyX2lubGluZV9kYXRhICpkYXRhKQoreworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaGFuZGxlOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfeGF0dHJzX29wZW4oZGF0YS0+ZnMsIGRhdGEtPmlubywgJmhhbmRsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc194YXR0cnNfcmVhZChoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCisJcmV0dmFsID0gZXh0MmZzX3hhdHRyX3NldChoYW5kbGUsICJzeXN0ZW0uZGF0YSIsCisJCQkJICBkYXRhLT5lYV9kYXRhLCBkYXRhLT5lYV9zaXplKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycjsKKworCXJldHZhbCA9IGV4dDJmc194YXR0cnNfd3JpdGUoaGFuZGxlKTsKKworZXJyOgorCSh2b2lkKSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoYW5kbGUpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2VhX2dldChzdHJ1Y3QgZXh0Ml9pbmxpbmVfZGF0YSAqZGF0YSkKK3sKKwlzdHJ1Y3QgZXh0Ml94YXR0cl9oYW5kbGUgKmhhbmRsZTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJZGF0YS0+ZWFfc2l6ZSA9IDA7CisJZGF0YS0+ZWFfZGF0YSA9IDA7CisKKwlyZXR2YWwgPSBleHQyZnNfeGF0dHJzX29wZW4oZGF0YS0+ZnMsIGRhdGEtPmlubywgJmhhbmRsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc194YXR0cnNfcmVhZChoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyOworCisJcmV0dmFsID0gZXh0MmZzX3hhdHRyX2dldChoYW5kbGUsICJzeXN0ZW0uZGF0YSIsCisJCQkJICAodm9pZCAqKikmZGF0YS0+ZWFfZGF0YSwgJmRhdGEtPmVhX3NpemUpOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9FQV9LRVlfTk9UX0ZPVU5EKSB7CisJCWRhdGEtPmVhX3NpemUgPSAwOworCQlkYXRhLT5lYV9kYXRhID0gTlVMTDsKKwkJcmV0dmFsID0gMDsKKwl9IGVsc2UgaWYgKHJldHZhbCkKKwkJZ290byBlcnI7CisKK2VycjoKKwkodm9pZCkgZXh0MmZzX3hhdHRyc19jbG9zZSgmaGFuZGxlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2luaXQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKQoreworCXN0cnVjdCBleHQyX2lubGluZV9kYXRhIGRhdGE7CisJY2hhciBlbXB0eVsxXSA9IHsgJ1wwJyB9OworCisJZGF0YS5mcyA9IGZzOworCWRhdGEuaW5vID0gaW5vOworCWRhdGEuZWFfc2l6ZSA9IDA7CisJZGF0YS5lYV9kYXRhID0gZW1wdHk7CisJcmV0dXJuIGV4dDJmc19pbmxpbmVfZGF0YV9lYV9zZXQoJmRhdGEpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX3NpemUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBzaXplX3QgKnNpemUpCit7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJc3RydWN0IGV4dDJfaW5saW5lX2RhdGEgZGF0YTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKCEoaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKQorCQlyZXR1cm4gRVhUMl9FVF9OT19JTkxJTkVfREFUQTsKKworCWRhdGEuZnMgPSBmczsKKwlkYXRhLmlubyA9IGlubzsKKwlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfZWFfZ2V0KCZkYXRhKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJKnNpemUgPSBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFICsgZGF0YS5lYV9zaXplOworCXJldHVybiBleHQyZnNfZnJlZV9tZW0oJmRhdGEuZWFfZGF0YSk7Cit9CisKK2ludCBleHQyZnNfaW5saW5lX2RhdGFfZGlyX2l0ZXJhdGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgZGlyX2NvbnRleHQgKmN0eDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgZGlyZW50OworCXN0cnVjdCBleHQyX2lubGluZV9kYXRhIGRhdGE7CisJaW50IHJldCA9IEJMT0NLX0FCT1JUOworCWUyX2Jsa2NudF90IGJsb2NrY250ID0gMDsKKwljaGFyICpvbGRfYnVmOworCXVuc2lnbmVkIGludCBvbGRfYnVmbGVuOworCWludCBvbGRfZmxhZ3M7CisKKwljdHggPSAoc3RydWN0IGRpcl9jb250ZXh0ICopcHJpdl9kYXRhOworCW9sZF9idWYgPSBjdHgtPmJ1ZjsKKwlvbGRfYnVmbGVuID0gY3R4LT5idWZsZW47CisJb2xkX2ZsYWdzID0gY3R4LT5mbGFnczsKKwljdHgtPmZsYWdzIHw9IERJUkVOVF9GTEFHX0lOQ0xVREVfSU5MSU5FX0RBVEE7CisKKwljdHgtPmVycmNvZGUgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChjdHgtPmVycmNvZGUpCisJCWdvdG8gb3V0OworCisJaWYgKCEoaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKSB7CisJCWN0eC0+ZXJyY29kZSA9IEVYVDJfRVRfTk9fSU5MSU5FX0RBVEE7CisJCWdvdG8gb3V0OworCX0KKworCWlmICghTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKSB7CisJCWN0eC0+ZXJyY29kZSA9IEVYVDJfRVRfTk9fRElSRUNUT1JZOworCQlnb3RvIG91dDsKKwl9CisJcmV0ID0gMDsKKworCS8qIHdlIGZpcnN0IGNoZWNrICcuJyBhbmQgJy4uJyBkaXIgKi8KKwlkaXJlbnQuaW5vZGUgPSBpbm87CisJZGlyZW50Lm5hbWVfbGVuID0gMTsKKwlleHQyZnNfc2V0X3JlY19sZW4oZnMsIEVYVDJfRElSX1JFQ19MRU4oMiksICZkaXJlbnQpOworCWRpcmVudC5uYW1lWzBdID0gJy4nOworCWRpcmVudC5uYW1lWzFdID0gJ1wwJzsKKwljdHgtPmJ1ZiA9IChjaGFyICopJmRpcmVudDsKKwlleHQyZnNfZ2V0X3JlY19sZW4oZnMsICZkaXJlbnQsICZjdHgtPmJ1Zmxlbik7CisJcmV0IHw9IGV4dDJmc19wcm9jZXNzX2Rpcl9ibG9jayhmcywgMCwgYmxvY2tjbnQrKywgMCwgMCwgcHJpdl9kYXRhKTsKKwlpZiAocmV0ICYgQkxPQ0tfQUJPUlQpCisJCWdvdG8gb3V0OworCisJZGlyZW50Lmlub2RlID0gZXh0MmZzX2xlMzJfdG9fY3B1KGlub2RlLmlfYmxvY2tbMF0pOworCWRpcmVudC5uYW1lX2xlbiA9IDI7CisJZXh0MmZzX3NldF9yZWNfbGVuKGZzLCBFWFQyX0RJUl9SRUNfTEVOKDMpLCAmZGlyZW50KTsKKwlkaXJlbnQubmFtZVswXSA9ICcuJzsKKwlkaXJlbnQubmFtZVsxXSA9ICcuJzsKKwlkaXJlbnQubmFtZVsyXSA9ICdcMCc7CisJY3R4LT5idWYgPSAoY2hhciAqKSZkaXJlbnQ7CisJZXh0MmZzX2dldF9yZWNfbGVuKGZzLCAmZGlyZW50LCAmY3R4LT5idWZsZW4pOworCXJldCB8PSBleHQyZnNfcHJvY2Vzc19kaXJfYmxvY2soZnMsIDAsIGJsb2NrY250KyssIDAsIDAsIHByaXZfZGF0YSk7CisJaWYgKHJldCAmIEJMT0NLX0lOTElORV9EQVRBX0NIQU5HRUQpIHsKKwkJZXJyY29kZV90IGVycjsKKworCQlpbm9kZS5pX2Jsb2NrWzBdID0gZXh0MmZzX2NwdV90b19sZTMyKGRpcmVudC5pbm9kZSk7CisJCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCXJldCAmPSB+QkxPQ0tfSU5MSU5FX0RBVEFfQ0hBTkdFRDsKKwl9CisJaWYgKHJldCAmIEJMT0NLX0FCT1JUKQorCQlnb3RvIG91dDsKKworCWN0eC0+YnVmID0gKGNoYXIgKilpbm9kZS5pX2Jsb2NrICsgRVhUNF9JTkxJTkVfREFUQV9ET1RET1RfU0laRTsKKwljdHgtPmJ1ZmxlbiA9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgLSBFWFQ0X0lOTElORV9EQVRBX0RPVERPVF9TSVpFOworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZnMsIGN0eC0+YnVmLCBjdHgtPmJ1ZmxlbiwgMCk7CisJaWYgKGN0eC0+ZXJyY29kZSkgeworCQlyZXQgfD0gQkxPQ0tfQUJPUlQ7CisJCWdvdG8gb3V0OworCX0KKyNlbmRpZgorCXJldCB8PSBleHQyZnNfcHJvY2Vzc19kaXJfYmxvY2soZnMsIDAsIGJsb2NrY250KyssIDAsIDAsIHByaXZfZGF0YSk7CisJaWYgKHJldCAmIEJMT0NLX0lOTElORV9EQVRBX0NIQU5HRUQpIHsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX2RpcmVudF9zd2FiX291dDIoZnMsIGN0eC0+YnVmLAorCQkJCQkJICAgICAgIGN0eC0+YnVmbGVuLCAwKTsKKwkJaWYgKGN0eC0+ZXJyY29kZSkgeworCQkJcmV0IHw9IEJMT0NLX0FCT1JUOworCQkJZ290byBvdXQ7CisJCX0KKyNlbmRpZgorCQljdHgtPmVycmNvZGUgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwkJaWYgKGN0eC0+ZXJyY29kZSkKKwkJCXJldCB8PSBCTE9DS19BQk9SVDsKKwkJcmV0ICY9IH5CTE9DS19JTkxJTkVfREFUQV9DSEFOR0VEOworCX0KKwlpZiAocmV0ICYgQkxPQ0tfQUJPUlQpCisJCWdvdG8gb3V0OworCisJZGF0YS5mcyA9IGZzOworCWRhdGEuaW5vID0gaW5vOworCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19pbmxpbmVfZGF0YV9lYV9nZXQoJmRhdGEpOworCWlmIChjdHgtPmVycmNvZGUpIHsKKwkJcmV0IHw9IEJMT0NLX0FCT1JUOworCQlnb3RvIG91dDsKKwl9CisJaWYgKGRhdGEuZWFfc2l6ZSA8PSAwKQorCQlnb3RvIG91dDE7CisKKwljdHgtPmJ1ZiA9IGRhdGEuZWFfZGF0YTsKKwljdHgtPmJ1ZmxlbiA9IGRhdGEuZWFfc2l6ZTsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwljdHgtPmVycmNvZGUgPSBleHQyZnNfZGlyZW50X3N3YWJfaW4yKGZzLCBjdHgtPmJ1ZiwgY3R4LT5idWZsZW4sIDApOworCWlmIChjdHgtPmVycmNvZGUpIHsKKwkJcmV0IHw9IEJMT0NLX0FCT1JUOworCQlnb3RvIG91dDE7CisJfQorI2VuZGlmCisKKwlyZXQgfD0gZXh0MmZzX3Byb2Nlc3NfZGlyX2Jsb2NrKGZzLCAwLCBibG9ja2NudCsrLCAwLCAwLCBwcml2X2RhdGEpOworCWlmIChyZXQgJiBCTE9DS19JTkxJTkVfREFUQV9DSEFOR0VEKSB7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQyKGZzLCBjdHgtPmJ1ZiwKKwkJCQkJCSAgICAgIGN0eC0+YnVmbGVuLCAwKTsKKwkJaWYgKGN0eC0+ZXJyY29kZSkgeworCQkJcmV0IHw9IEJMT0NLX0FCT1JUOworCQkJZ290byBvdXQxOworCQl9CisjZW5kaWYKKwkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX2lubGluZV9kYXRhX2VhX3NldCgmZGF0YSk7CisJCWlmIChjdHgtPmVycmNvZGUpCisJCQlyZXQgfD0gQkxPQ0tfQUJPUlQ7CisJfQorCitvdXQxOgorCWV4dDJmc19mcmVlX21lbSgmZGF0YS5lYV9kYXRhKTsKK291dDoKKwljdHgtPmJ1ZiA9IG9sZF9idWY7CisJY3R4LT5idWZsZW4gPSBvbGRfYnVmbGVuOworCWN0eC0+ZmxhZ3MgPSBvbGRfZmxhZ3M7CisJcmV0ICY9IH4oQkxPQ0tfQUJPUlQgfCBCTE9DS19JTkxJTkVfREFUQV9DSEFOR0VEKTsKKwlyZXR1cm4gcmV0OworfQorCitlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX2VhX3JlbW92ZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8pCit7CisJc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoYW5kbGU7CisJZXJyY29kZV90IHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc194YXR0cnNfb3BlbihmcywgaW5vLCAmaGFuZGxlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3hhdHRyc19yZWFkKGhhbmRsZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnI7CisKKwlyZXR2YWwgPSBleHQyZnNfeGF0dHJfcmVtb3ZlKGhhbmRsZSwgInN5c3RlbS5kYXRhIik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnI7CisKKwlyZXR2YWwgPSBleHQyZnNfeGF0dHJzX3dyaXRlKGhhbmRsZSk7CisKK2VycjoKKwkodm9pZCkgZXh0MmZzX3hhdHRyc19jbG9zZSgmaGFuZGxlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19pbmxpbmVfZGF0YV9jb252ZXJ0X2RpcihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJCQljaGFyICpiYnVmLCBjaGFyICppYnVmLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpciwgKmRpcjI7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgKnQ7CisJZXJyY29kZV90IHJldHZhbDsKKwlpbnQgb2Zmc2V0OworCXVuc2lnbmVkIGludCByZWNfbGVuOworCWludCBjc3VtX3NpemUgPSAwOworCWludCBmaWxldHlwZSA9IDA7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKworCS8qIENyZWF0ZSAnLicgYW5kICcuLicgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZpbGV0eXBlKGZzLT5zdXBlcikpCisJCWZpbGV0eXBlID0gRVhUMl9GVF9ESVI7CisKKwkvKgorCSAqIFNldCB1cCBlbnRyeSBmb3IgJy4nCisJICovCisJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBiYnVmOworCWRpci0+aW5vZGUgPSBpbm87CisJZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oZGlyLCAxKTsKKwlleHQyZnNfZGlyZW50X3NldF9maWxlX3R5cGUoZGlyLCBmaWxldHlwZSk7CisJZGlyLT5uYW1lWzBdID0gJy4nOworCXJlY19sZW4gPSAoZnMtPmJsb2Nrc2l6ZSAtIGNzdW1fc2l6ZSkgLSBFWFQyX0RJUl9SRUNfTEVOKDEpOworCWRpci0+cmVjX2xlbiA9IEVYVDJfRElSX1JFQ19MRU4oMSk7CisKKwkvKgorCSAqIFNldCB1cCBlbnRyeSBmb3IgJy4uJworCSAqLworCWRpciA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikgKGJidWYgKyBkaXItPnJlY19sZW4pOworCWRpci0+cmVjX2xlbiA9IEVYVDJfRElSX1JFQ19MRU4oMik7CisJZGlyLT5pbm9kZSA9IGV4dDJmc19sZTMyX3RvX2NwdSgoKF9fdTMyICopaWJ1ZilbMF0pOworCWV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuKGRpciwgMik7CisJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpciwgZmlsZXR5cGUpOworCWRpci0+bmFtZVswXSA9ICcuJzsKKwlkaXItPm5hbWVbMV0gPSAnLic7CisKKwkvKgorCSAqIEFqdXN0IHRoZSBsYXN0IHJlY19sZW4KKwkgKi8KKwlvZmZzZXQgPSBFWFQyX0RJUl9SRUNfTEVOKDEpICsgRVhUMl9ESVJfUkVDX0xFTigyKTsKKwlkaXIgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIChiYnVmICsgb2Zmc2V0KTsKKwltZW1jcHkoYmJ1ZiArIG9mZnNldCwgaWJ1ZiArIEVYVDRfSU5MSU5FX0RBVEFfRE9URE9UX1NJWkUsCisJICAgICAgIHNpemUgLSBFWFQ0X0lOTElORV9EQVRBX0RPVERPVF9TSVpFKTsKKwlzaXplICs9IEVYVDJfRElSX1JFQ19MRU4oMSkgKyBFWFQyX0RJUl9SRUNfTEVOKDIpIC0KKwkJRVhUNF9JTkxJTkVfREFUQV9ET1RET1RfU0laRTsKKworCWRvIHsKKwkJZGlyMiA9IGRpcjsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXIsICZyZWNfbGVuKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyOworCQlvZmZzZXQgKz0gcmVjX2xlbjsKKwkJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAoYmJ1ZiArIG9mZnNldCk7CisJfSB3aGlsZSAob2Zmc2V0IDwgc2l6ZSk7CisJcmVjX2xlbiArPSBmcy0+YmxvY2tzaXplIC0gY3N1bV9zaXplIC0gb2Zmc2V0OworCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgcmVjX2xlbiwgZGlyMik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnI7CisKKwlpZiAoY3N1bV9zaXplKSB7CisJCXQgPSBFWFQyX0RJUkVOVF9UQUlMKGJidWYsIGZzLT5ibG9ja3NpemUpOworCQlleHQyZnNfaW5pdGlhbGl6ZV9kaXJlbnRfdGFpbChmcywgdCk7CisJfQorCitlcnI6CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdAorZXh0MmZzX2lubGluZV9kYXRhX2Rpcl9leHBhbmQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBjaGFyICpidWYsIHNpemVfdCBzaXplKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCBibGs7CisJY2hhciAqYmxrX2J1ZjsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhmcy0+YmxvY2tzaXplLCAmYmxrX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCXJldHZhbCA9IGV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZnMsIGJ1ZiArIEVYVDRfSU5MSU5FX0RBVEFfRE9URE9UX1NJWkUsCisJCQkJCXNpemUsIDApOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworI2VuZGlmCisKKwkvKiBBZGp1c3QgdGhlIHJlY19sZW4gKi8KKwlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfY29udmVydF9kaXIoZnMsIGlubywgYmxrX2J1ZiwgYnVmLCBzaXplKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwkvKiBBbGxvY2F0ZSBhIG5ldyBibG9jayAqLworCXJldHZhbCA9IGV4dDJmc19uZXdfYmxvY2syKGZzLCAwLCAwLCAmYmxrKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgYmxrLCBibGtfYnVmLCAwLCBpbm8pOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJLyogVXBkYXRlIGlub2RlICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikpCisJCWlub2RlLT5pX2ZsYWdzIHw9IEVYVDRfRVhURU5UU19GTDsKKwlpbm9kZS0+aV9mbGFncyAmPSB+RVhUNF9JTkxJTkVfREFUQV9GTDsKKwlyZXR2YWwgPSBleHQyZnNfaWJsa19hZGRfYmxvY2tzKGZzLCBpbm9kZSwgMSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJaW5vZGUtPmlfc2l6ZSA9IGZzLT5ibG9ja3NpemU7CisJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIGlub2RlLCAwLCBCTUFQX1NFVCwgMCwgMCwgJmJsayk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBpbm8sIGlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMoZnMsIGJsaywgKzEpOworCitlcnJvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZibGtfYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90CitleHQyZnNfaW5saW5lX2RhdGFfZmlsZV9leHBhbmQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwgY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwlleHQyX2ZpbGVfdCBlMl9maWxlOworCWVycmNvZGVfdCByZXR2YWw7CisKKwkvKiBVcGRhdGUgaW5vZGUgKi8KKwltZW1zZXQoaW5vZGUtPmlfYmxvY2ssIDAsIHNpemVvZihpbm9kZS0+aV9ibG9jaykpOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKSB7CisJCWV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZTsKKworCQlpbm9kZS0+aV9mbGFncyAmPSB+RVhUNF9FWFRFTlRTX0ZMOworCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X29wZW4yKGZzLCBpbm8sIGlub2RlLCAmaGFuZGxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWV4dDJmc19leHRlbnRfZnJlZShoYW5kbGUpOworCX0KKwlpbm9kZS0+aV9mbGFncyAmPSB+RVhUNF9JTkxJTkVfREFUQV9GTDsKKwlpbm9kZS0+aV9zaXplID0gMDsKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgaW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwkvKiBXcml0ZSBvdXQgdGhlIGJsb2NrIGJ1ZmZlciAqLworCXJldHZhbCA9IGV4dDJmc19maWxlX29wZW4oZnMsIGlubywgRVhUMl9GSUxFX1dSSVRFLCAmZTJfZmlsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV93cml0ZShlMl9maWxlLCBidWYsIHNpemUsIDApOworCWV4dDJmc19maWxlX2Nsb3NlKGUyX2ZpbGUpOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfaW5saW5lX2RhdGFfZXhwYW5kKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9pbmxpbmVfZGF0YSBkYXRhOworCWVycmNvZGVfdCByZXR2YWw7CisJc2l6ZV90IGlubGluZV9zaXplOworCWNoYXIgKmlubGluZV9idWYgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmICghKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fSU5MSU5FX0RBVEE7CisKKwlkYXRhLmZzID0gZnM7CisJZGF0YS5pbm8gPSBpbm87CisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2VhX2dldCgmZGF0YSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpbmxpbmVfc2l6ZSA9IGRhdGEuZWFfc2l6ZSArIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkU7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oaW5saW5lX3NpemUsICZpbmxpbmVfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCW1lbWNweShpbmxpbmVfYnVmLCAodm9pZCAqKWlub2RlLmlfYmxvY2ssIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUpOworCWlmIChkYXRhLmVhX3NpemUgPiAwKSB7CisJCW1lbWNweShpbmxpbmVfYnVmICsgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSwKKwkJICAgICAgIGRhdGEuZWFfZGF0YSwgZGF0YS5lYV9zaXplKTsKKwl9CisKKwltZW1zZXQoKHZvaWQgKilpbm9kZS5pX2Jsb2NrLCAwLCBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFKTsKKwkvKgorCSAqIE5PVEU6IFdlIG11c3QgZG8gdGhpcyB3cml0ZSAtPiBlYV9yZW1vdmUgLT4gcmVhZCBjeWNsZSBoZXJlIGJlY2F1c2UKKwkgKiByZW1vdmluZyB0aGUgaW5saW5lIGRhdGEgRUEgY2FuIGZyZWUgdGhlIEVBIGJsb2NrLCB3aGljaCBpcyBhIGNoYW5nZQorCSAqIHRoYXQgb3VyIHN0YWNrIGNvcHkgb2YgdGhlIGlub2RlIHdpbGwgbmV2ZXIgc2VlLiAgSWYgdGhhdCBoYXBwZW5zLAorCSAqIHdlIGNhbiBlbmQgdXAgd2l0aCB0aGUgRUEgYmxvY2sgYW5kIGxibGsgMCBwb2ludGluZyB0byB0aGUgc2FtZQorCSAqIHBibGssIHdoaWNoIGlzIGJhZCBuZXdzLgorCSAqLworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9lYV9yZW1vdmUoZnMsIGlubyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCWlmIChMSU5VWF9TX0lTRElSKGlub2RlLmlfbW9kZSkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2Rpcl9leHBhbmQoZnMsIGlubywgJmlub2RlLAorCQkJCQkJaW5saW5lX2J1ZiwgaW5saW5lX3NpemUpOworCX0gZWxzZSB7CisJCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9maWxlX2V4cGFuZChmcywgaW5vLCAmaW5vZGUsCisJCQkJCQlpbmxpbmVfYnVmLCBpbmxpbmVfc2l6ZSk7CisJfQorCitlcnJvdXQ6CisJaWYgKGlubGluZV9idWYpCisJCWV4dDJmc19mcmVlX21lbSgmaW5saW5lX2J1Zik7CisJZXh0MmZzX2ZyZWVfbWVtKCZkYXRhLmVhX2RhdGEpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBXaGVuIGNhbGxlciB1c2VzIHRoaXMgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlIGlubGluZSBkYXRhLCBpdCBtdXN0CisgKiBhbGxvY2F0ZSBhIGJ1ZmZlciB3aGljaCBoYXMgdGhlIHNpemUgb2YgaW5saW5lIGRhdGEuICBUaGUgc2l6ZSBvZgorICogaW5saW5lIGRhdGEgY2FuIGJlIGtub3cgYnkgZXh0MmZzX2lubGluZV9kYXRhX2dldF9zaXplKCkuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfaW5saW5lX2RhdGFfZ2V0KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSB2b2lkICpidWYsIHNpemVfdCAqc2l6ZSkKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZV9idWY7CisJc3RydWN0IGV4dDJfaW5saW5lX2RhdGEgZGF0YTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCFpbm9kZSkgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmaW5vZGVfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWlub2RlID0gJmlub2RlX2J1ZjsKKwl9CisKKwlkYXRhLmZzID0gZnM7CisJZGF0YS5pbm8gPSBpbm87CisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2VhX2dldCgmZGF0YSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbWNweShidWYsICh2b2lkICopaW5vZGUtPmlfYmxvY2ssIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUpOworCWlmIChkYXRhLmVhX3NpemUgPiAwKQorCQltZW1jcHkoKGNoYXIgKikgYnVmICsgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSwKKwkJICAgICAgIGRhdGEuZWFfZGF0YSwgZGF0YS5lYV9zaXplKTsKKworCWlmIChzaXplKQorCQkqc2l6ZSA9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgKyBkYXRhLmVhX3NpemU7CisJZXh0MmZzX2ZyZWVfbWVtKCZkYXRhLmVhX2RhdGEpOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2lubGluZV9kYXRhX3NldChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZV9idWY7CisJc3RydWN0IGV4dDJfaW5saW5lX2RhdGEgZGF0YTsKKwllcnJjb2RlX3QgcmV0dmFsOworCXNpemVfdCBmcmVlX2VhX3NpemUsIGV4aXN0aW5nX3NpemUsIGZyZWVfaW5vZGVfc2l6ZTsKKworCWlmICghaW5vZGUpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlpbm9kZSA9ICZpbm9kZV9idWY7CisJfQorCisJaWYgKHNpemUgPD0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSkgeworCQlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfZWFfcmVtb3ZlKGZzLCBpbm8pOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJbWVtY3B5KCh2b2lkICopaW5vZGUtPmlfYmxvY2ssIGJ1Ziwgc2l6ZSk7CisJCXJldHVybiBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgaW5vZGUpOworCX0KKworCXJldHZhbCA9IGV4dDJmc194YXR0cl9pbm9kZV9tYXhfc2l6ZShmcywgaW5vLCAmZnJlZV9lYV9zaXplKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX3NpemUoZnMsIGlubywgJmV4aXN0aW5nX3NpemUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoZXhpc3Rpbmdfc2l6ZSA8IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUpCisJCWZyZWVfaW5vZGVfc2l6ZSA9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgLSBleGlzdGluZ19zaXplOworCWVsc2UKKwkJZnJlZV9pbm9kZV9zaXplID0gMDsKKworCWlmIChzaXplICE9IGV4aXN0aW5nX3NpemUgJiYKKwkgICAgc2l6ZSA+IGV4aXN0aW5nX3NpemUgKyBmcmVlX2VhX3NpemUgKyBmcmVlX2lub2RlX3NpemUpCisJCXJldHVybiBFWFQyX0VUX0lOTElORV9EQVRBX05PX1NQQUNFOworCisJbWVtY3B5KCh2b2lkICopaW5vZGUtPmlfYmxvY2ssIGJ1ZiwgRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSk7CisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBpbm8sIGlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWRhdGEuZnMgPSBmczsKKwlkYXRhLmlubyA9IGlubzsKKwlkYXRhLmVhX3NpemUgPSBzaXplIC0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRTsKKwlkYXRhLmVhX2RhdGEgPSAoY2hhciAqKSBidWYgKyBFWFQ0X01JTl9JTkxJTkVfREFUQV9TSVpFOworCXJldHVybiBleHQyZnNfaW5saW5lX2RhdGFfZWFfc2V0KCZkYXRhKTsKK30KKworI2lmZGVmIERFQlVHCisjaW5jbHVkZSAiZTJwL2UycC5oIgorCisvKgorICogVGhlIGxlbmd0aCBvZiBidWZmZXIgaXMgc2V0IHRvIDY0IGJlY2F1c2UgaW4gaW5vZGUncyBpX2Jsb2NrIG1lbWJlciBpdCBvbmx5CisgKiBjYW4gc2F2ZSA2MCBieXRlcy4gIFRodXMgdGhpcyB2YWx1ZSBjYW4gbGV0IHRoZSBkYXRhIGJlaW5nIHNhdmVkIGluIGV4dHJhCisgKiBzcGFjZS4KKyAqLworI2RlZmluZSBCVUZGX1NJWkUgKDY0KQorCitzdGF0aWMgZXJyY29kZV90IGZpbGVfdGVzdChleHQyX2ZpbHN5cyBmcykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlleHQyX2lub190IG5ld2ZpbGU7CisJZXJyY29kZV90IHJldHZhbDsKKwlzaXplX3Qgc2l6ZTsKKwljaGFyICpidWYgPSAwLCAqY21wYnVmID0gMDsKKworCS8qIGNyZWF0ZSBhIG5ldyBmaWxlICovCisJcmV0dmFsID0gZXh0MmZzX25ld19pbm9kZShmcywgMiwgMDEwNzU1LCAwLCAmbmV3ZmlsZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJmaWxlX3Rlc3QiLCByZXR2YWwsICJ3aGlsZSBhbGxvY2FpbmcgYSBuZXcgaW5vZGUiKTsKKwkJcmV0dXJuIDE7CisJfQorCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJaW5vZGUuaV9mbGFncyB8PSBFWFQ0X0lOTElORV9EQVRBX0ZMOworCWlub2RlLmlfc2l6ZSA9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkU7CisJaW5vZGUuaV9tb2RlID0gTElOVVhfU19JRlJFRzsKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfbmV3X2lub2RlKGZzLCBuZXdmaWxlLCAmaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZmlsZV90ZXN0IiwgcmV0dmFsLCAid2hpbGUgd3JpdHRpbmcgYSBuZXcgaW5vZGUiKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2luaXQoZnMsIG5ld2ZpbGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZmlsZV90ZXN0IiwgcmV0dmFsLCAid2hpbGUgaW5pdCAnc3lzdGVtLmRhdGEnIik7CisJCXJldHVybiAxOworCX0KKworCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9zaXplKGZzLCBuZXdmaWxlLCAmc2l6ZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJmaWxlX3Rlc3QiLCByZXR2YWwsICJ3aGlsZSBnZXR0aW5nIHNpemUiKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKHNpemUgIT0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRSkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJ0c3RfaW5saW5lX2RhdGE6IHNpemUgb2YgaW5saW5lIGRhdGEgaXMgd3JvbmdcbiIpOworCQlyZXR1cm4gMTsKKwl9CisKKwlleHQyZnNfZ2V0X21lbShCVUZGX1NJWkUsICZidWYpOworCW1lbXNldChidWYsICdhJywgQlVGRl9TSVpFKTsKKwlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfc2V0KGZzLCBuZXdmaWxlLCAwLCBidWYsIEJVRkZfU0laRSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJmaWxlX3Rlc3QiLCByZXR2YWwsCisJCQkid2hpbGUgc2V0dGluZyBpbmxpbmUgZGF0YSAlcyIsIGJ1Zik7CisJCWdvdG8gZXJyOworCX0KKworCWV4dDJmc19nZXRfbWVtKEJVRkZfU0laRSwgJmNtcGJ1Zik7CisJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2dldChmcywgbmV3ZmlsZSwgMCwgY21wYnVmLCAmc2l6ZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJmaWxlX3Rlc3QiLCByZXR2YWwsICJ3aGlsZSBnZXR0aW5nIGlubGluZSBkYXRhIik7CisJCWdvdG8gZXJyOworCX0KKworCWlmIChzaXplICE9IEJVRkZfU0laRSkgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJ0c3RfaW5saW5lX2RhdGE6IHNpemUgJWx1ICE9IGJ1ZmxlbiAldVxuIiwKKwkJCXNpemUsIEJVRkZfU0laRSk7CisJCXJldHZhbCA9IDE7CisJCWdvdG8gZXJyOworCX0KKworCWlmIChtZW1jbXAoYnVmLCBjbXBidWYsIEJVRkZfU0laRSkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJ0c3RfaW5saW5lX2RhdGE6IGJ1ZiAhPSBjbXBidWZcbiIpOworCQlyZXR2YWwgPSAxOworCQlnb3RvIGVycjsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfcHVuY2goZnMsIG5ld2ZpbGUsIDAsIDAsIDAsIH4wVUxMKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImZpbGVfdGVzdCIsIHJldHZhbCwgIndoaWxlIHRydW5jYXRpbmcgaW5vZGUiKTsKKwkJZ290byBlcnI7CisJfQorCisJLyogcmVsb2FkIGlub2RlIGFuZCBjaGVjayBpc2l6ZSAqLworCWV4dDJmc19yZWFkX2lub2RlKGZzLCBuZXdmaWxlLCAmaW5vZGUpOworCWlmIChpbm9kZS5pX3NpemUgIT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgInRzdF9pbmxpbmVfZGF0YTogaV9zaXplIHNob3VsZCBiZSAwXG4iKTsKKwkJcmV0dmFsID0gMTsKKwl9CisKK2VycjoKKwlpZiAoY21wYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmNtcGJ1Zik7CisJaWYgKGJ1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZGlyX3Rlc3QoZXh0Ml9maWxzeXMgZnMpCit7CisJY29uc3QgY2hhciAqZG90X25hbWUgPSAiLiI7CisJY29uc3QgY2hhciAqc3R1Yl9uYW1lID0gInN0dWIiOworCWNvbnN0IGNoYXIgKnBhcmVudF9uYW1lID0gInRlc3QiOworCWV4dDJfaW5vX3QgcGFyZW50LCBkaXIsIHRtcDsKKwllcnJjb2RlX3QgcmV0dmFsOworCWNoYXIgZGlybmFtZVtQQVRIX01BWF07CisJaW50IGk7CisKKwlyZXR2YWwgPSBleHQyZnNfbWtkaXIoZnMsIDExLCAxMSwgc3R1Yl9uYW1lKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImRpcl90ZXN0IiwgcmV0dmFsLCAid2hpbGUgY3JlYXRpbmcgJXMgZGlyIiwgc3R1Yl9uYW1lKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbWtkaXIoZnMsIDExLCAwLCBwYXJlbnRfbmFtZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJkaXJfdGVzdCIsIHJldHZhbCwKKwkJCSJ3aGlsZSBjcmVhdGluZyAlcyBkaXIiLCBwYXJlbnRfbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2xvb2t1cChmcywgMTEsIHBhcmVudF9uYW1lLCBzdHJsZW4ocGFyZW50X25hbWUpLAorCQkJICAgICAgIDAsICZwYXJlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZGlyX3Rlc3QiLCByZXR2YWwsCisJCQkid2hpbGUgbG9va2luZyB1cCAlcyBkaXIiLCBwYXJlbnRfbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2xvb2t1cChmcywgcGFyZW50LCBkb3RfbmFtZSwgc3RybGVuKGRvdF9uYW1lKSwKKwkJCSAgICAgICAwLCAmdG1wKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImRpcl90ZXN0IiwgcmV0dmFsLAorCQkJIndoaWxlIGxvb2tpbmcgdXAgJXMgZGlyIiwgcGFyZW50X25hbWUpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlmIChwYXJlbnQgIT0gdG1wKSB7CisJCWZwcmludGYoc3RkZXJyLCAidHN0X2lubGluZV9kYXRhOiBwYXJlbnQgKCV1KSAhPSB0bXAgKCV1KVxuIiwKKwkJCXBhcmVudCwgdG1wKTsKKwkJcmV0dXJuIDE7CisJfQorCisJZm9yIChpID0gMCwgZGlyID0gMTM7IGkgPCA0OyBpKyssIGRpcisrKSB7CisJCXRtcCA9IDA7CisJCXNucHJpbnRmKGRpcm5hbWUsIHNpemVvZihkaXJuYW1lKSwgIiVkIiwgaSk7CisJCXJldHZhbCA9IGV4dDJmc19ta2RpcihmcywgcGFyZW50LCAwLCBkaXJuYW1lKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiZGlyX3Rlc3QiLCByZXR2YWwsCisJCQkJIndoaWxlIGNyZWF0aW5nICVzIGRpciIsIGRpcm5hbWUpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19sb29rdXAoZnMsIHBhcmVudCwgZGlybmFtZSwgc3RybGVuKGRpcm5hbWUpLAorCQkJCSAgICAgICAwLCAmdG1wKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiZGlyX3Rlc3QiLCByZXR2YWwsCisJCQkJIndoaWxlIGxvb2tpbmcgdXAgJXMgZGlyIiwgcGFyZW50X25hbWUpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCisJCWlmIChkaXIgIT0gdG1wKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkidHN0X2lubGluZV9kYXRhOiBkaXIgKCV1KSAhPSB0bXAgKCV1KVxuIiwKKwkJCQlkaXIsIHRtcCk7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCXNucHJpbnRmKGRpcm5hbWUsIHNpemVvZihkaXJuYW1lKSwgIiVkIiwgaSk7CisJcmV0dmFsID0gZXh0MmZzX21rZGlyKGZzLCBwYXJlbnQsIDAsIGRpcm5hbWUpOworCWlmIChyZXR2YWwgJiYgcmV0dmFsICE9IEVYVDJfRVRfRElSX05PX1NQQUNFKSB7CisJCWNvbV9lcnIoImRpcl90ZXN0IiwgcmV0dmFsLCAid2hpbGUgY3JlYXRpbmcgJXMgZGlyIiwgZGlybmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIHBhcmVudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJkaXJfdGVzdCIsIHJldHZhbCwgIndoaWxlIGV4cGFuZGluZyAlcyBkaXIiLCBwYXJlbnRfbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJZXh0Ml9maWxzeXMJCWZzOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHBhcmFtOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJLyogc2V0dXAgKi8KKwlpbml0aWFsaXplX2V4dDJfZXJyb3JfdGFibGUoKTsKKworCW1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihwYXJhbSkpOworCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KCZwYXJhbSwgMzI3NjgpOworCXBhcmFtLnNfaW5vZGVzX2NvdW50ID0gMTAwOworCisJcGFyYW0uc19mZWF0dXJlX2luY29tcGF0IHw9IEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9JTkxJTkVfREFUQTsKKwlwYXJhbS5zX3Jldl9sZXZlbCA9IEVYVDJfRFlOQU1JQ19SRVY7CisJcGFyYW0uc19pbm9kZV9zaXplID0gMjU2OworCisJcmV0dmFsID0gZXh0MmZzX2luaXRpYWxpemUoInRlc3QgZnMiLCBFWFQyX0ZMQUdfNjRCSVRTLCAmcGFyYW0sCisJCQkJICAgdGVzdF9pb19tYW5hZ2VyLCAmZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycigic2V0dXAiLCByZXR2YWwsCisJCQkid2hpbGUgaW5pdGlhbGl6aW5nIGZpbGVzeXN0ZW0iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfdGFibGVzKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldHVwIiwgcmV0dmFsLAorCQkJIndoaWxlIGFsbG9jYXRpbmcgdGFibGVzIGZvciB0ZXN0IGZpbGVzeXNtdGUiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBpbml0aWFsaXplIGlub2RlIGNhY2hlICovCisJaWYgKCFmcy0+aWNhY2hlKSB7CisJCWV4dDJfaW5vX3QgZmlyc3RfaW5vID0gRVhUMl9GSVJTVF9JTk8oZnMtPnN1cGVyKTsKKwkJaW50IGk7CisKKwkJLyogd2UganVzdCB3YW50IHRvIGluaXQgaW5vZGUgY2FjaGUuICBTbyBpZ25vcmUgZXJyb3IgKi8KKwkJZXh0MmZzX2NyZWF0ZV9pbm9kZV9jYWNoZShmcywgMTYpOworCQlpZiAoIWZzLT5pY2FjaGUpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJ0c3RfaW5saW5lX2RhdGE6IGluaXQgaW5vZGUgY2FjaGUgZmFpbGVkXG4iKTsKKwkJCWV4aXQoMSk7CisJCX0KKworCQkvKiBzZXR1cCBpbm9kZSBjYWNoZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgZnMtPmljYWNoZS0+Y2FjaGVfc2l6ZTsgaSsrKQorCQkJZnMtPmljYWNoZS0+Y2FjaGVbaV0uaW5vID0gZmlyc3RfaW5vKys7CisJfQorCisJLyogdGVzdCAqLworCWlmIChmaWxlX3Rlc3QoZnMpKSB7CisJCWZwcmludGYoc3RkZXJyLCAidHN0X2lubGluZV9kYXRhKEZJTEUpOiBGQUlMRURcbiIpOworCQlyZXR1cm4gMTsKKwl9CisJcHJpbnRmKCJ0c3RfaW5saW5lX2RhdGEoRklMRSk6IE9LXG4iKTsKKworCWlmIChkaXJfdGVzdChmcykpIHsKKwkJZnByaW50ZihzdGRlcnIsICJ0c3RfaW5saW5lX2RhdGEoRElSKTogRkFJTEVEXG4iKTsKKwkJcmV0dXJuIDE7CisJfQorCXByaW50ZigidHN0X2lubGluZV9kYXRhKERJUik6IE9LXG4iKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbm9kZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5vZGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTdhZDJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5vZGUuYwpAQCAtMCwwICsxLDEwNjEgQEAKKy8qCisgKiBpbm9kZS5jIC0tLSB1dGlsaXR5IHJvdXRpbmVzIHRvIHJlYWQgYW5kIHdyaXRlIGlub2RlcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorI2luY2x1ZGUgImUyaW1hZ2UuaCIKKworI2RlZmluZSBJQkxPQ0tfU1RBVFVTX0NTVU1TX09LCTEKKyNkZWZpbmUgSUJMT0NLX1NUQVRVU19JTlNBTkUJMgorI2RlZmluZSBTQ0FOX0JMT0NLX1NUQVRVUyhzY2FuKQkoKHNjYW4pLT50ZW1wX2J1ZmZlciArIChzY2FuKS0+aW5vZGVfc2l6ZSkKKworc3RydWN0IGV4dDJfc3RydWN0X2lub2RlX3NjYW4geworCWVycmNvZGVfdAkJbWFnaWM7CisJZXh0Ml9maWxzeXMJCWZzOworCWV4dDJfaW5vX3QJCWN1cnJlbnRfaW5vZGU7CisJYmxrNjRfdAkJCWN1cnJlbnRfYmxvY2s7CisJZGdycF90CQkJY3VycmVudF9ncm91cDsKKwlleHQyX2lub190CQlpbm9kZXNfbGVmdDsKKwlibGtfdAkJCWJsb2Nrc19sZWZ0OworCWRncnBfdAkJCWdyb3Vwc19sZWZ0OworCWJsa190CQkJaW5vZGVfYnVmZmVyX2Jsb2NrczsKKwljaGFyICoJCQlpbm9kZV9idWZmZXI7CisJaW50CQkJaW5vZGVfc2l6ZTsKKwljaGFyICoJCQlwdHI7CisJaW50CQkJYnl0ZXNfbGVmdDsKKwljaGFyCQkJKnRlbXBfYnVmZmVyOworCWVycmNvZGVfdAkJKCpkb25lX2dyb3VwKShleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgICAgZXh0Ml9pbm9kZV9zY2FuIHNjYW4sCisJCQkJCSAgICAgIGRncnBfdCBncm91cCwKKwkJCQkJICAgICAgdm9pZCAqIHByaXZfZGF0YSk7CisJdm9pZCAqCQkJZG9uZV9ncm91cF9kYXRhOworCWludAkJCWJhZF9ibG9ja19wdHI7CisJaW50CQkJc2Nhbl9mbGFnczsKKwlpbnQJCQlyZXNlcnZlZFs2XTsKK307CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgZmx1c2hlcyB0aGUgaWNhY2hlLCBpZiBpdCBleGlzdHMuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfZmx1c2hfaWNhY2hlKGV4dDJfZmlsc3lzIGZzKQoreworCXVuc2lnbmVkCWk7CisKKwlpZiAoIWZzLT5pY2FjaGUpCisJCXJldHVybiAwOworCisJZm9yIChpPTA7IGkgPCBmcy0+aWNhY2hlLT5jYWNoZV9zaXplOyBpKyspCisJCWZzLT5pY2FjaGUtPmNhY2hlW2ldLmlubyA9IDA7CisKKwlmcy0+aWNhY2hlLT5idWZmZXJfYmxrID0gMDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZyZWUgdGhlIGlub2RlIGNhY2hlIHN0cnVjdHVyZQorICovCit2b2lkIGV4dDJmc19mcmVlX2lub2RlX2NhY2hlKHN0cnVjdCBleHQyX2lub2RlX2NhY2hlICppY2FjaGUpCit7CisJdW5zaWduZWQgaTsKKworCWlmICgtLWljYWNoZS0+cmVmY291bnQpCisJCXJldHVybjsKKwlpZiAoaWNhY2hlLT5idWZmZXIpCisJCWV4dDJmc19mcmVlX21lbSgmaWNhY2hlLT5idWZmZXIpOworCWZvciAoaSA9IDA7IGkgPCBpY2FjaGUtPmNhY2hlX3NpemU7IGkrKykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpY2FjaGUtPmNhY2hlW2ldLmlub2RlKTsKKwlpZiAoaWNhY2hlLT5jYWNoZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpY2FjaGUtPmNhY2hlKTsKKwlpY2FjaGUtPmJ1ZmZlcl9ibGsgPSAwOworCWV4dDJmc19mcmVlX21lbSgmaWNhY2hlKTsKK30KKworZXJyY29kZV90IGV4dDJmc19jcmVhdGVfaW5vZGVfY2FjaGUoZXh0Ml9maWxzeXMgZnMsIHVuc2lnbmVkIGludCBjYWNoZV9zaXplKQoreworCXVuc2lnbmVkCWk7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmIChmcy0+aWNhY2hlKQorCQlyZXR1cm4gMDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfY2FjaGUpLCAmZnMtPmljYWNoZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldChmcy0+aWNhY2hlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfY2FjaGUpKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmZnMtPmljYWNoZS0+YnVmZmVyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCWZzLT5pY2FjaGUtPmJ1ZmZlcl9ibGsgPSAwOworCWZzLT5pY2FjaGUtPmNhY2hlX2xhc3QgPSAtMTsKKwlmcy0+aWNhY2hlLT5jYWNoZV9zaXplID0gY2FjaGVfc2l6ZTsKKwlmcy0+aWNhY2hlLT5yZWZjb3VudCA9IDE7CisJcmV0dmFsID0gZXh0MmZzX2dldF9hcnJheShmcy0+aWNhY2hlLT5jYWNoZV9zaXplLAorCQkJCSAgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX2NhY2hlX2VudCksCisJCQkJICAmZnMtPmljYWNoZS0+Y2FjaGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJZm9yIChpID0gMDsgaSA8IGZzLT5pY2FjaGUtPmNhY2hlX3NpemU7IGkrKykgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSwKKwkJCQkJJmZzLT5pY2FjaGUtPmNhY2hlW2ldLmlub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKworCWV4dDJmc19mbHVzaF9pY2FjaGUoZnMpOworCXJldHVybiAwOworZXJyb3V0OgorCWV4dDJmc19mcmVlX2lub2RlX2NhY2hlKGZzLT5pY2FjaGUpOworCWZzLT5pY2FjaGUgPSAwOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGV4dDJfZmlsc3lzIGZzLCBpbnQgYnVmZmVyX2Jsb2NrcywKKwkJCQkgZXh0Ml9pbm9kZV9zY2FuICpyZXRfc2NhbikKK3sKKwlleHQyX2lub2RlX3NjYW4Jc2NhbjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWVycmNvZGVfdCAoKnNhdmVfZ2V0X2Jsb2NrcykoZXh0Ml9maWxzeXMgZiwgZXh0Ml9pbm9fdCBpbm8sIGJsa190ICpibG9ja3MpOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCS8qCisJICogSWYgZnMtPmJhZGJsb2NrcyBpc24ndCBzZXQsIHRoZW4gc2V0IGl0IC0tLSBzaW5jZSB0aGUgaW5vZGUKKwkgKiBzY2FubmluZyBmdW5jdGlvbnMgcmVxdWlyZSBpdC4KKwkgKi8KKwlpZiAoZnMtPmJhZGJsb2NrcyA9PSAwKSB7CisJCS8qCisJCSAqIFRlbXBvcmFybHkgc2F2ZSBmcy0+Z2V0X2Jsb2NrcyBhbmQgc2V0IGl0IHRvIHplcm8sCisJCSAqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGUyZnNjaydzLgorCQkgKi8KKwkJc2F2ZV9nZXRfYmxvY2tzID0gZnMtPmdldF9ibG9ja3M7CisJCWZzLT5nZXRfYmxvY2tzID0gMDsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmJfaW5vZGUoZnMsICZmcy0+YmFkYmxvY2tzKTsKKwkJaWYgKHJldHZhbCAmJiBmcy0+YmFkYmxvY2tzKSB7CisJCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZShmcy0+YmFkYmxvY2tzKTsKKwkJCWZzLT5iYWRibG9ja3MgPSAwOworCQl9CisJCWZzLT5nZXRfYmxvY2tzID0gc2F2ZV9nZXRfYmxvY2tzOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9zdHJ1Y3RfaW5vZGVfc2NhbiksICZzY2FuKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCW1lbXNldChzY2FuLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfc3RydWN0X2lub2RlX3NjYW4pKTsKKworCXNjYW4tPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19JTk9ERV9TQ0FOOworCXNjYW4tPmZzID0gZnM7CisJc2Nhbi0+aW5vZGVfc2l6ZSA9IEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpOworCXNjYW4tPmJ5dGVzX2xlZnQgPSAwOworCXNjYW4tPmN1cnJlbnRfZ3JvdXAgPSAwOworCXNjYW4tPmdyb3Vwc19sZWZ0ID0gZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxOworCXNjYW4tPmlub2RlX2J1ZmZlcl9ibG9ja3MgPSBidWZmZXJfYmxvY2tzID8gYnVmZmVyX2Jsb2NrcyA6CisJCQkJICAgIEVYVDJfSU5PREVfU0NBTl9ERUZBVUxUX0JVRkZFUl9CTE9DS1M7CisJc2Nhbi0+Y3VycmVudF9ibG9jayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2Moc2Nhbi0+ZnMsCisJCQkJCQkgICAgIHNjYW4tPmN1cnJlbnRfZ3JvdXApOworCXNjYW4tPmlub2Rlc19sZWZ0ID0gRVhUMl9JTk9ERVNfUEVSX0dST1VQKHNjYW4tPmZzLT5zdXBlcik7CisJc2Nhbi0+YmxvY2tzX2xlZnQgPSBzY2FuLT5mcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwlpZiAoZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpKSB7CisJCV9fdTMyIHVudXNlZCA9IGV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBzY2FuLT5jdXJyZW50X2dyb3VwKTsKKwkJaWYgKHNjYW4tPmlub2Rlc19sZWZ0ID4gdW51c2VkKQorCQkJc2Nhbi0+aW5vZGVzX2xlZnQgLT0gdW51c2VkOworCQllbHNlCisJCQlzY2FuLT5pbm9kZXNfbGVmdCA9IDA7CisJCXNjYW4tPmJsb2Nrc19sZWZ0ID0KKwkJCShzY2FuLT5pbm9kZXNfbGVmdCArCisJCQkgKGZzLT5ibG9ja3NpemUgLyBzY2FuLT5pbm9kZV9zaXplIC0gMSkpICoKKwkJCXNjYW4tPmlub2RlX3NpemUgLyBmcy0+YmxvY2tzaXplOworCX0KKwlyZXR2YWwgPSBpb19jaGFubmVsX2FsbG9jX2J1Zihmcy0+aW8sIHNjYW4tPmlub2RlX2J1ZmZlcl9ibG9ja3MsCisJCQkJICAgICAgJnNjYW4tPmlub2RlX2J1ZmZlcik7CisJc2Nhbi0+ZG9uZV9ncm91cCA9IDA7CisJc2Nhbi0+ZG9uZV9ncm91cF9kYXRhID0gMDsKKwlzY2FuLT5iYWRfYmxvY2tfcHRyID0gMDsKKwlpZiAocmV0dmFsKSB7CisJCWV4dDJmc19mcmVlX21lbSgmc2Nhbik7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNjYW4tPmlub2RlX3NpemUgKyBzY2FuLT5pbm9kZV9idWZmZXJfYmxvY2tzLAorCQkJCSZzY2FuLT50ZW1wX2J1ZmZlcik7CisJaWYgKHJldHZhbCkgeworCQlleHQyZnNfZnJlZV9tZW0oJnNjYW4tPmlub2RlX2J1ZmZlcik7CisJCWV4dDJmc19mcmVlX21lbSgmc2Nhbik7CisJCXJldHVybiByZXR2YWw7CisJfQorCW1lbXNldChTQ0FOX0JMT0NLX1NUQVRVUyhzY2FuKSwgMCwgc2Nhbi0+aW5vZGVfYnVmZmVyX2Jsb2Nrcyk7CisJaWYgKHNjYW4tPmZzLT5iYWRibG9ja3MgJiYgc2Nhbi0+ZnMtPmJhZGJsb2Nrcy0+bnVtKQorCQlzY2FuLT5zY2FuX2ZsYWdzIHw9IEVYVDJfU0ZfQ0hLX0JBREJMT0NLUzsKKwlpZiAoZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpKQorCQlzY2FuLT5zY2FuX2ZsYWdzIHw9IEVYVDJfU0ZfRE9fTEFaWTsKKwkqcmV0X3NjYW4gPSBzY2FuOworCXJldHVybiAwOworfQorCit2b2lkIGV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKGV4dDJfaW5vZGVfc2NhbiBzY2FuKQoreworCWlmICghc2NhbiB8fCAoc2Nhbi0+bWFnaWMgIT0gRVhUMl9FVF9NQUdJQ19JTk9ERV9TQ0FOKSkKKwkJcmV0dXJuOworCisJZXh0MmZzX2ZyZWVfbWVtKCZzY2FuLT5pbm9kZV9idWZmZXIpOworCXNjYW4tPmlub2RlX2J1ZmZlciA9IE5VTEw7CisJZXh0MmZzX2ZyZWVfbWVtKCZzY2FuLT50ZW1wX2J1ZmZlcik7CisJc2Nhbi0+dGVtcF9idWZmZXIgPSBOVUxMOworCWV4dDJmc19mcmVlX21lbSgmc2Nhbik7CisJcmV0dXJuOworfQorCit2b2lkIGV4dDJmc19zZXRfaW5vZGVfY2FsbGJhY2soZXh0Ml9pbm9kZV9zY2FuIHNjYW4sCisJCQkgICAgICAgZXJyY29kZV90ICgqZG9uZV9ncm91cCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCQkgICAgICAgZXh0Ml9pbm9kZV9zY2FuIHNjYW4sCisJCQkJCQkgICAgICAgZGdycF90IGdyb3VwLAorCQkJCQkJICAgICAgIHZvaWQgKiBwcml2X2RhdGEpLAorCQkJICAgICAgIHZvaWQgKmRvbmVfZ3JvdXBfZGF0YSkKK3sKKwlpZiAoIXNjYW4gfHwgKHNjYW4tPm1hZ2ljICE9IEVYVDJfRVRfTUFHSUNfSU5PREVfU0NBTikpCisJCXJldHVybjsKKworCXNjYW4tPmRvbmVfZ3JvdXAgPSBkb25lX2dyb3VwOworCXNjYW4tPmRvbmVfZ3JvdXBfZGF0YSA9IGRvbmVfZ3JvdXBfZGF0YTsKK30KKworaW50IGV4dDJmc19pbm9kZV9zY2FuX2ZsYWdzKGV4dDJfaW5vZGVfc2NhbiBzY2FuLCBpbnQgc2V0X2ZsYWdzLAorCQkJICAgIGludCBjbGVhcl9mbGFncykKK3sKKwlpbnQJb2xkX2ZsYWdzOworCisJaWYgKCFzY2FuIHx8IChzY2FuLT5tYWdpYyAhPSBFWFQyX0VUX01BR0lDX0lOT0RFX1NDQU4pKQorCQlyZXR1cm4gMDsKKworCW9sZF9mbGFncyA9IHNjYW4tPnNjYW5fZmxhZ3M7CisJc2Nhbi0+c2Nhbl9mbGFncyAmPSB+Y2xlYXJfZmxhZ3M7CisJc2Nhbi0+c2Nhbl9mbGFncyB8PSBzZXRfZmxhZ3M7CisJcmV0dXJuIG9sZF9mbGFnczsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGV4dDJmc19nZXRfbmV4dF9pbm9kZSB3aGVuIGl0IG5lZWRzIHRvCisgKiBnZXQgcmVhZHkgdG8gcmVhZCBpbiBhIG5ldyBibG9ja2dyb3VwLgorICovCitzdGF0aWMgZXJyY29kZV90IGdldF9uZXh0X2Jsb2NrZ3JvdXAoZXh0Ml9pbm9kZV9zY2FuIHNjYW4pCit7CisJZXh0Ml9maWxzeXMgZnMgPSBzY2FuLT5mczsKKworCXNjYW4tPmN1cnJlbnRfZ3JvdXArKzsKKwlzY2FuLT5ncm91cHNfbGVmdC0tOworCisJc2Nhbi0+Y3VycmVudF9ibG9jayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2Moc2Nhbi0+ZnMsCisJCQkJCQkgICAgIHNjYW4tPmN1cnJlbnRfZ3JvdXApOworCXNjYW4tPmN1cnJlbnRfaW5vZGUgPSBzY2FuLT5jdXJyZW50X2dyb3VwICoKKwkJRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcik7CisKKwlzY2FuLT5ieXRlc19sZWZ0ID0gMDsKKwlzY2FuLT5pbm9kZXNfbGVmdCA9IEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpOworCXNjYW4tPmJsb2Nrc19sZWZ0ID0gZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJaWYgKGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSkgeworCQlfX3UzMiB1bnVzZWQgPSBleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgc2Nhbi0+Y3VycmVudF9ncm91cCk7CisJCWlmIChzY2FuLT5pbm9kZXNfbGVmdCA+IHVudXNlZCkKKwkJCXNjYW4tPmlub2Rlc19sZWZ0IC09IHVudXNlZDsKKwkJZWxzZQorCQkJc2Nhbi0+aW5vZGVzX2xlZnQgPSAwOworCQlzY2FuLT5ibG9ja3NfbGVmdCA9CisJCQkoc2Nhbi0+aW5vZGVzX2xlZnQgKworCQkJIChmcy0+YmxvY2tzaXplIC8gc2Nhbi0+aW5vZGVfc2l6ZSAtIDEpKSAqCisJCQlzY2FuLT5pbm9kZV9zaXplIC8gZnMtPmJsb2Nrc2l6ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19pbm9kZV9zY2FuX2dvdG9fYmxvY2tncm91cChleHQyX2lub2RlX3NjYW4gc2NhbiwKKwkJCQkJICAgIGludAlncm91cCkKK3sKKwlzY2FuLT5jdXJyZW50X2dyb3VwID0gZ3JvdXAgLSAxOworCXNjYW4tPmdyb3Vwc19sZWZ0ID0gc2Nhbi0+ZnMtPmdyb3VwX2Rlc2NfY291bnQgLSBncm91cDsKKwlyZXR1cm4gZ2V0X25leHRfYmxvY2tncm91cChzY2FuKTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGdldF9uZXh0X2Jsb2NrcygpIHRvIGNoZWNrIGZvciBiYWQKKyAqIGJsb2NrcyBpbiB0aGUgaW5vZGUgdGFibGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgYmFkYmxvY2tzX2xpc3QtPmxpc3QgaXMgc29ydGVkIGluCisgKiBpbmNyZWFzaW5nIG9yZGVyLgorICovCitzdGF0aWMgZXJyY29kZV90IGNoZWNrX2Zvcl9pbm9kZV9iYWRfYmxvY2tzKGV4dDJfaW5vZGVfc2NhbiBzY2FuLAorCQkJCQkgICAgYmxrNjRfdCAqbnVtX2Jsb2NrcykKK3sKKwlibGs2NF90CWJsayA9IHNjYW4tPmN1cnJlbnRfYmxvY2s7CisJYmFkYmxvY2tzX2xpc3QJYmIgPSBzY2FuLT5mcy0+YmFkYmxvY2tzOworCisJLyoKKwkgKiBJZiB0aGUgaW5vZGUgdGFibGUgaXMgbWlzc2luZywgdGhlbiBvYnZpb3VzbHkgdGhlcmUgYXJlIG5vCisJICogYmFkIGJsb2Nrcy4gIDotKQorCSAqLworCWlmIChibGsgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIElmIHRoZSBjdXJyZW50IGJsb2NrIGlzIGdyZWF0ZXIgdGhhbiB0aGUgYmFkIGJsb2NrIGxpc3RlZAorCSAqIGluIHRoZSBiYWQgYmxvY2sgbGlzdCwgdGhlbiBhZHZhbmNlIHRoZSBwb2ludGVyIHVudGlsIHRoaXMKKwkgKiBpcyBubyBsb25nZXIgdGhlIGNhc2UuICBJZiB3ZSBydW4gb3V0IG9mIGJhZCBibG9ja3MsIHRoZW4KKwkgKiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBtb3JlIGNoZWNraW5nIQorCSAqLworCXdoaWxlIChibGsgPiBiYi0+bGlzdFtzY2FuLT5iYWRfYmxvY2tfcHRyXSkgeworCQlpZiAoKytzY2FuLT5iYWRfYmxvY2tfcHRyID49IGJiLT5udW0pIHsKKwkJCXNjYW4tPnNjYW5fZmxhZ3MgJj0gfkVYVDJfU0ZfQ0hLX0JBREJMT0NLUzsKKwkJCXJldHVybiAwOworCQl9CisJfQorCisJLyoKKwkgKiBJZiB0aGUgY3VycmVudCBibG9jayBpcyBlcXVhbCB0byB0aGUgYmFkIGJsb2NrIGxpc3RlZCBpbgorCSAqIHRoZSBiYWQgYmxvY2sgbGlzdCwgdGhlbiBoYW5kbGUgdGhhdCBvbmUgYmxvY2sgc3BlY2lhbGx5LgorCSAqIChXZSBjb3VsZCB0cnkgdG8gaGFuZGxlIHJ1bnMgb2YgYmFkIGJsb2NrcywgYnV0IHRoYXQKKwkgKiBvbmx5IGluY3JlYXNlcyBDUFUgZWZmaWNpZW5jeSBieSBhIHNtYWxsIGFtb3VudCwgYXQgdGhlCisJICogZXhwZW5zZSBvZiBhIGh1Z2UgZXhwZW5zZSBvZiBjb2RlIGNvbXBsZXhpdHksIGFuZCBmb3IgYW4KKwkgKiB1bmNvbW1vbiBjYXNlIGF0IHRoYXQuKQorCSAqLworCWlmIChibGsgPT0gYmItPmxpc3Rbc2Nhbi0+YmFkX2Jsb2NrX3B0cl0pIHsKKwkJc2Nhbi0+c2Nhbl9mbGFncyB8PSBFWFQyX1NGX0JBRF9JTk9ERV9CTEs7CisJCSpudW1fYmxvY2tzID0gMTsKKwkJaWYgKCsrc2Nhbi0+YmFkX2Jsb2NrX3B0ciA+PSBiYi0+bnVtKQorCQkJc2Nhbi0+c2Nhbl9mbGFncyAmPSB+RVhUMl9TRl9DSEtfQkFEQkxPQ0tTOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKgorCSAqIElmIHRoZXJlIGlzIGEgYmFkIGJsb2NrIGluIHRoZSByYW5nZSB0aGF0IHdlJ3JlIGFib3V0IHRvCisJICogcmVhZCBpbiwgYWRqdXN0IHRoZSBudW1iZXIgb2YgYmxvY2tzIHRvIHJlYWQgc28gdGhhdCB3ZSB3ZQorCSAqIGRvbid0IHJlYWQgaW4gdGhlIGJhZCBibG9jay4gIChUaGVuIHRoZSBuZXh0IGJsb2NrIHRvIHJlYWQKKwkgKiB3aWxsIGJlIHRoZSBiYWQgYmxvY2ssIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlIGFib3ZlIGNhc2UuKQorCSAqLworCWlmICgoYmxrICsgKm51bV9ibG9ja3MpID4gYmItPmxpc3Rbc2Nhbi0+YmFkX2Jsb2NrX3B0cl0pCisJCSpudW1fYmxvY2tzID0gKGludCkgKGJiLT5saXN0W3NjYW4tPmJhZF9ibG9ja19wdHJdIC0gYmxrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGJsb2NrX21hcF9sb29rc19pbnNhbmUoZXh0Ml9maWxzeXMgZnMsCisJCQkJICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUpCit7CisJdW5zaWduZWQgaW50IGksIGJhZDsKKworCS8qIFdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiBibG9jayBtYXBwZWQgZmlsZXMsIGRpcnMsIGFuZCBzeW1saW5rcyAqLworCWlmICgoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSB8fAorCSAgICAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKQorCQlyZXR1cm4gMDsKKwlpZiAoIUxJTlVYX1NfSVNSRUcoaW5vZGUtPmlfbW9kZSkgJiYKKwkgICAgIUxJTlVYX1NfSVNMTksoaW5vZGUtPmlfbW9kZSkgJiYKKwkgICAgIUxJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkpCisJCXJldHVybiAwOworCWlmIChMSU5VWF9TX0lTTE5LKGlub2RlLT5pX21vZGUpICYmCisJICAgIEVYVDJfSV9TSVpFKGlub2RlKSA8PSBzaXplb2YoaW5vZGUtPmlfYmxvY2spKQorCQlyZXR1cm4gMDsKKworCS8qIFVudXNlZCBpbm9kZXMgcHJvYmFibHkgYXJlbid0IGluc2FuZSAqLworCWlmIChpbm9kZS0+aV9saW5rc19jb3VudCA9PSAwKQorCQlyZXR1cm4gMDsKKworCS8qIFNlZSBpZiBtb3JlIHRoYW4gaGFsZiB0aGUgYmxvY2sgbWFwcyBhcmUgaW5zYW5lICovCisJZm9yIChpID0gMCwgYmFkID0gMDsgaSA8IEVYVDJfTl9CTE9DS1M7IGkrKykKKwkJaWYgKGlub2RlLT5pX2Jsb2NrW2ldICE9IDAgJiYKKwkJICAgIChpbm9kZS0+aV9ibG9ja1tpXSA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrIHx8CisJCSAgICAgaW5vZGUtPmlfYmxvY2tbaV0gPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSkKKwkJCWJhZCsrOworCXJldHVybiBiYWQgPiBFWFQyX05fQkxPQ0tTIC8gMjsKK30KKworc3RhdGljIGludCBleHRlbnRfaGVhZF9sb29rc19pbnNhbmUoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlKQoreworCWlmICghKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSB8fAorCSAgICBleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoaW5vZGUtPmlfYmxvY2ssCisJCQkJCXNpemVvZihpbm9kZS0+aV9ibG9jaykpID09IDApCisJCXJldHVybiAwOworCXJldHVybiAxOworfQorCisvKgorICogQ2hlY2sgYWxsIHRoZSBpbm9kZXMgdGhhdCB3ZSBqdXN0IHJlYWQgaW50byB0aGUgYnVmZmVyLiAgUmVjb3JkIHdoYXQgd2UKKyAqIGZpbmQgaGVyZSAtLSBjdXJyZW50bHksIHdlIGNhbiBvYnNlcnZlIHRoYXQgYWxsIGNoZWNrc3VtcyBhcmUgb2s7IG1vcmUKKyAqIHRoYW4gaGFsZiB0aGUgaW5vZGVzIGFyZSBpbnNhbmU7IG9yIG5vIGNvbmNsdXNpb25zIGF0IGFsbC4KKyAqLworc3RhdGljIHZvaWQgY2hlY2tfaW5vZGVfYmxvY2tfc2FuaXR5KGV4dDJfaW5vZGVfc2NhbiBzY2FuLCBibGs2NF90IG51bV9ibG9ja3MpCit7CisJZXh0Ml9pbm9fdAlpbm8sIGlub2Rlc190b19zY2FuOworCXVuc2lnbmVkIGludAliYWRuZXNzLCBjaGVja3N1bV9mYWlsdXJlczsKKwl1bnNpZ25lZCBpbnQJaW5vZGVzX2luX2J1ZiwgaW5vZGVzX3Blcl9ibG9jazsKKwljaGFyCQkqcDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGU7CisJY2hhcgkJKmJsb2NrX3N0YXR1czsKKwl1bnNpZ25lZCBpbnQJYmxrLCBiYWRfY3N1bTsKKworCWlmICghKHNjYW4tPnNjYW5fZmxhZ3MgJiBFWFQyX1NGX1dBUk5fR0FSQkFHRV9JTk9ERVMpKQorCQlyZXR1cm47CisKKwlpbm9kZXNfdG9fc2NhbiA9IHNjYW4tPmlub2Rlc19sZWZ0OworCWlub2Rlc19pbl9idWYgPSBudW1fYmxvY2tzICogc2Nhbi0+ZnMtPmJsb2Nrc2l6ZSAvIHNjYW4tPmlub2RlX3NpemU7CisJaWYgKGlub2Rlc190b19zY2FuID4gaW5vZGVzX2luX2J1ZikKKwkJaW5vZGVzX3RvX3NjYW4gPSBpbm9kZXNfaW5fYnVmOworCisJcCA9IChjaGFyICopIHNjYW4tPmlub2RlX2J1ZmZlcjsKKwlpbm8gPSBzY2FuLT5jdXJyZW50X2lub2RlICsgMTsKKwljaGVja3N1bV9mYWlsdXJlcyA9IGJhZG5lc3MgPSAwOworCWJsb2NrX3N0YXR1cyA9IFNDQU5fQkxPQ0tfU1RBVFVTKHNjYW4pOworCW1lbXNldChibG9ja19zdGF0dXMsIDAsIHNjYW4tPmlub2RlX2J1ZmZlcl9ibG9ja3MpOworCWlub2Rlc19wZXJfYmxvY2sgPSBFWFQyX0lOT0RFU19QRVJfQkxPQ0soc2Nhbi0+ZnMtPnN1cGVyKTsKKworCWlmIChpbm9kZXNfcGVyX2Jsb2NrIDwgMikKKwkJcmV0dXJuOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJaWYgKGV4dDJmc19nZXRfbWVtKEVYVDJfSU5PREVfU0laRShzY2FuLT5mcy0+c3VwZXIpLCAmaW5vZGUpKQorCQlyZXR1cm47CisjZW5kaWYKKworCXdoaWxlIChpbm9kZXNfdG9fc2NhbiA+IDApIHsKKwkJYmxrID0gKHAgLSAoY2hhciAqKXNjYW4tPmlub2RlX2J1ZmZlcikgLyBzY2FuLT5mcy0+YmxvY2tzaXplOworCQliYWRfY3N1bSA9IGV4dDJmc19pbm9kZV9jc3VtX3ZlcmlmeShzY2FuLT5mcywgaW5vLAorCQkJCShzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBwKSA9PSAwOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWV4dDJmc19zd2FwX2lub2RlX2Z1bGwoc2Nhbi0+ZnMsCisJCQkgICAgICAgKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGlub2RlLAorCQkJICAgICAgIChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBwLAorCQkJICAgICAgIDAsIEVYVDJfSU5PREVfU0laRShzY2FuLT5mcy0+c3VwZXIpKTsKKyNlbHNlCisJCWlub2RlID0gKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIHA7CisjZW5kaWYKKworCQkvKiBJcyB0aGlzIGlub2RlIGluc2FuZT8gKi8KKwkJaWYgKGJhZF9jc3VtKSB7CisJCQljaGVja3N1bV9mYWlsdXJlcysrOworCQkJYmFkbmVzcysrOworCQl9IGVsc2UgaWYgKGV4dGVudF9oZWFkX2xvb2tzX2luc2FuZShpbm9kZSkgfHwKKwkJCSAgIGJsb2NrX21hcF9sb29rc19pbnNhbmUoc2Nhbi0+ZnMsIGlub2RlKSkKKwkJCWJhZG5lc3MrKzsKKworCQkvKiBJZiBtb3JlIHRoYW4gaGFsZiBhcmUgaW5zYW5lLCBkZWNsYXJlIHRoZSB3aG9sZSBibG9jayBiYWQgKi8KKwkJaWYgKGJhZG5lc3MgPiBpbm9kZXNfcGVyX2Jsb2NrIC8gMikgeworCQkJdW5zaWduZWQgaW50IGlub19hZGo7CisKKwkJCWJsb2NrX3N0YXR1c1tibGtdIHw9IElCTE9DS19TVEFUVVNfSU5TQU5FOworCQkJaW5vX2FkaiA9IGlub2Rlc19wZXJfYmxvY2sgLQorCQkJCQkJKChpbm8gLSAxKSAlIGlub2Rlc19wZXJfYmxvY2spOworCQkJaWYgKGlub19hZGogPiBpbm9kZXNfdG9fc2NhbikKKwkJCQlpbm9fYWRqID0gaW5vZGVzX3RvX3NjYW47CisJCQlpbm9kZXNfdG9fc2NhbiAtPSBpbm9fYWRqOworCQkJcCArPSBzY2FuLT5pbm9kZV9zaXplICogaW5vX2FkajsKKwkJCWlubyArPSBpbm9fYWRqOworCQkJY2hlY2tzdW1fZmFpbHVyZXMgPSBiYWRuZXNzID0gMDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKChpbm8gJSBpbm9kZXNfcGVyX2Jsb2NrKSA9PSAwKSB7CisJCQlpZiAoY2hlY2tzdW1fZmFpbHVyZXMgPT0gMCkKKwkJCQlibG9ja19zdGF0dXNbYmxrXSB8PSBJQkxPQ0tfU1RBVFVTX0NTVU1TX09LOworCQkJY2hlY2tzdW1fZmFpbHVyZXMgPSBiYWRuZXNzID0gMDsKKwkJfQorCQlpbm9kZXNfdG9fc2Nhbi0tOworCQlwICs9IHNjYW4tPmlub2RlX3NpemU7CisJCWlubysrOworCX07CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlleHQyZnNfZnJlZV9tZW0oJmlub2RlKTsKKyNlbmRpZgorfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZXh0MmZzX2dldF9uZXh0X2lub2RlIHdoZW4gaXQgbmVlZHMgdG8KKyAqIHJlYWQgaW4gbW9yZSBibG9ja3MgZnJvbSB0aGUgY3VycmVudCBibG9ja2dyb3VwJ3MgaW5vZGUgdGFibGUuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZ2V0X25leHRfYmxvY2tzKGV4dDJfaW5vZGVfc2NhbiBzY2FuKQoreworCWJsazY0X3QJCW51bV9ibG9ja3M7CisJZXJyY29kZV90CXJldHZhbDsKKworCS8qCisJICogRmlndXJlIG91dCBob3cgbWFueSBibG9ja3MgdG8gcmVhZDsgd2UgcmVhZCBhdCBtb3N0CisJICogaW5vZGVfYnVmZmVyX2Jsb2NrcywgYW5kIHBlcmhhcHMgbGVzcyBpZiB0aGVyZSBhcmVuJ3QgdGhhdAorCSAqIG1hbnkgYmxvY2tzIGxlZnQgdG8gcmVhZC4KKwkgKi8KKwludW1fYmxvY2tzID0gc2Nhbi0+aW5vZGVfYnVmZmVyX2Jsb2NrczsKKwlpZiAobnVtX2Jsb2NrcyA+IHNjYW4tPmJsb2Nrc19sZWZ0KQorCQludW1fYmxvY2tzID0gc2Nhbi0+YmxvY2tzX2xlZnQ7CisKKwkvKgorCSAqIElmIHRoZSBwYXN0IGJsb2NrICJyZWFkIiB3YXMgYSBiYWQgYmxvY2ssIHRoZW4gbWFyayB0aGUKKwkgKiBsZWZ0LW92ZXIgZXh0cmEgYnl0ZXMgYXMgYWxzbyBiZWluZyBiYWQuCisJICovCisJaWYgKHNjYW4tPnNjYW5fZmxhZ3MgJiBFWFQyX1NGX0JBRF9JTk9ERV9CTEspIHsKKwkJaWYgKHNjYW4tPmJ5dGVzX2xlZnQpCisJCQlzY2FuLT5zY2FuX2ZsYWdzIHw9IEVYVDJfU0ZfQkFEX0VYVFJBX0JZVEVTOworCQlzY2FuLT5zY2FuX2ZsYWdzICY9IH5FWFQyX1NGX0JBRF9JTk9ERV9CTEs7CisJfQorCisJLyoKKwkgKiBEbyBpbm9kZSBiYWQgYmxvY2sgcHJvY2Vzc2luZywgaWYgbmVjZXNzYXJ5LgorCSAqLworCWlmIChzY2FuLT5zY2FuX2ZsYWdzICYgRVhUMl9TRl9DSEtfQkFEQkxPQ0tTKSB7CisJCXJldHZhbCA9IGNoZWNrX2Zvcl9pbm9kZV9iYWRfYmxvY2tzKHNjYW4sICZudW1fYmxvY2tzKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJaWYgKChzY2FuLT5zY2FuX2ZsYWdzICYgRVhUMl9TRl9CQURfSU5PREVfQkxLKSB8fAorCSAgICAoc2Nhbi0+Y3VycmVudF9ibG9jayA9PSAwKSkgeworCQltZW1zZXQoc2Nhbi0+aW5vZGVfYnVmZmVyLCAwLAorCQkgICAgICAgKHNpemVfdCkgbnVtX2Jsb2NrcyAqIHNjYW4tPmZzLT5ibG9ja3NpemUpOworCX0gZWxzZSB7CisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChzY2FuLT5mcy0+aW8sCisJCQkJCSAgICAgc2Nhbi0+Y3VycmVudF9ibG9jaywKKwkJCQkJICAgICAoaW50KSBudW1fYmxvY2tzLAorCQkJCQkgICAgIHNjYW4tPmlub2RlX2J1ZmZlcik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gRVhUMl9FVF9ORVhUX0lOT0RFX1JFQUQ7CisJfQorCWNoZWNrX2lub2RlX2Jsb2NrX3Nhbml0eShzY2FuLCBudW1fYmxvY2tzKTsKKworCXNjYW4tPnB0ciA9IHNjYW4tPmlub2RlX2J1ZmZlcjsKKwlzY2FuLT5ieXRlc19sZWZ0ID0gbnVtX2Jsb2NrcyAqIHNjYW4tPmZzLT5ibG9ja3NpemU7CisKKwlzY2FuLT5ibG9ja3NfbGVmdCAtPSBudW1fYmxvY2tzOworCWlmIChzY2FuLT5jdXJyZW50X2Jsb2NrKQorCQlzY2FuLT5jdXJyZW50X2Jsb2NrICs9IG51bV9ibG9ja3M7CisKKwlyZXR1cm4gMDsKK30KKworI2lmIDAKKy8qCisgKiBSZXR1cm5zIDEgaWYgdGhlIGVudGlyZSBpbm9kZV9idWZmZXIgaGFzIGEgbm9uLXplcm8gc2l6ZSBhbmQKKyAqIGNvbnRhaW5zIGFsbCB6ZXJvcy4gIChOb3QganVzdCBkZWxldGVkIGlub2Rlcywgc2luY2UgdGhhdCBtZWFucworICogdGhhdCBwYXJ0IG9mIHRoZSBpbm9kZSB0YWJsZSB3YXMgdXNlZCBhdCBvbmUgcG9pbnQ7IHdlIHdhbnQgYWxsCisgKiB6ZXJvcywgd2hpY2ggbWVhbnMgdGhhdCB0aGUgaW5vZGUgdGFibGUgaXMgcHJpc3RpbmUuKQorICovCitzdGF0aWMgaW5saW5lIGludCBpc19lbXB0eV9zY2FuKGV4dDJfaW5vZGVfc2NhbiBzY2FuKQoreworCWludAlpOworCisJaWYgKHNjYW4tPmJ5dGVzX2xlZnQgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGk9MDsgaSA8IHNjYW4tPmJ5dGVzX2xlZnQ7IGkrKykKKwkJaWYgKHNjYW4tPnB0cltpXSkKKwkJCXJldHVybiAwOworCXJldHVybiAxOworfQorI2VuZGlmCisKK2VycmNvZGVfdCBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbChleHQyX2lub2RlX3NjYW4gc2NhbiwgZXh0Ml9pbm9fdCAqaW5vLAorCQkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBpbnQgYnVmc2l6ZSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJZXh0cmFfYnl0ZXMgPSAwOworCWludAkJbGVuZ3RoOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlCSppcHRyID0gKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopaW5vZGU7CisJY2hhcgkJKmlibG9ja19zdGF0dXM7CisJdW5zaWduZWQgaW50CWlibGs7CisKKwlFWFQyX0NIRUNLX01BR0lDKHNjYW4sIEVYVDJfRVRfTUFHSUNfSU5PREVfU0NBTik7CisJbGVuZ3RoID0gRVhUMl9JTk9ERV9TSVpFKHNjYW4tPmZzLT5zdXBlcik7CisJaWJsb2NrX3N0YXR1cyA9IFNDQU5fQkxPQ0tfU1RBVFVTKHNjYW4pOworCisJLyoKKwkgKiBEbyB3ZSBuZWVkIHRvIHN0YXJ0IHJlYWRpbmcgYSBuZXcgYmxvY2sgZ3JvdXA/CisJICovCisJaWYgKHNjYW4tPmlub2Rlc19sZWZ0IDw9IDApIHsKKwlmb3JjZV9uZXdfZ3JvdXA6CisJCWlmIChzY2FuLT5kb25lX2dyb3VwKSB7CisJCQlyZXR2YWwgPSAoc2Nhbi0+ZG9uZV9ncm91cCkKKwkJCQkoc2Nhbi0+ZnMsIHNjYW4sIHNjYW4tPmN1cnJlbnRfZ3JvdXAsCisJCQkJIHNjYW4tPmRvbmVfZ3JvdXBfZGF0YSk7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJaWYgKHNjYW4tPmdyb3Vwc19sZWZ0IDw9IDApIHsKKwkJCSppbm8gPSAwOworCQkJcmV0dXJuIDA7CisJCX0KKwkJcmV0dmFsID0gZ2V0X25leHRfYmxvY2tncm91cChzY2FuKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCS8qCisJICogVGhlc2UgY2hlY2tzIGFyZSBkb25lIG91dHNpZGUgdGhlIGFib3ZlIGlmIHN0YXRlbWVudCBzbworCSAqIHRoZXkgY2FuIGJlIGRvbmUgZm9yIGJsb2NrIGdyb3VwICMwLgorCSAqLworCWlmICgoc2Nhbi0+c2Nhbl9mbGFncyAmIEVYVDJfU0ZfRE9fTEFaWSkgJiYKKwkgICAgKGV4dDJmc19iZ19mbGFnc190ZXN0KHNjYW4tPmZzLCBzY2FuLT5jdXJyZW50X2dyb3VwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCkKKwkgICAgICkpCisJCWdvdG8gZm9yY2VfbmV3X2dyb3VwOworCWlmIChzY2FuLT5pbm9kZXNfbGVmdCA9PSAwKQorCQlnb3RvIGZvcmNlX25ld19ncm91cDsKKwlpZiAoc2Nhbi0+Y3VycmVudF9ibG9jayA9PSAwKSB7CisJCWlmIChzY2FuLT5zY2FuX2ZsYWdzICYgRVhUMl9TRl9TS0lQX01JU1NJTkdfSVRBQkxFKSB7CisJCQlnb3RvIGZvcmNlX25ld19ncm91cDsKKwkJfSBlbHNlCisJCQlyZXR1cm4gRVhUMl9FVF9NSVNTSU5HX0lOT0RFX1RBQkxFOworCX0KKworCisJLyoKKwkgKiBIYXZlIHdlIHJ1biBvdXQgb2Ygc3BhY2UgaW4gdGhlIGlub2RlIGJ1ZmZlcj8gIElmIHNvLCB3ZQorCSAqIG5lZWQgdG8gcmVhZCBpbiBtb3JlIGJsb2Nrcy4KKwkgKi8KKwlpZiAoc2Nhbi0+Ynl0ZXNfbGVmdCA8IHNjYW4tPmlub2RlX3NpemUpIHsKKwkJbWVtY3B5KHNjYW4tPnRlbXBfYnVmZmVyLCBzY2FuLT5wdHIsIHNjYW4tPmJ5dGVzX2xlZnQpOworCQlleHRyYV9ieXRlcyA9IHNjYW4tPmJ5dGVzX2xlZnQ7CisKKwkJcmV0dmFsID0gZ2V0X25leHRfYmxvY2tzKHNjYW4pOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKyNpZiAwCisJCS8qCisJCSAqIFhYWCB0ZXN0ICBOZWVkIGNoZWNrIGZvciB1c2VkIGlub2RlIHNvbWVob3cuCisJCSAqIChOb3RlOiB0aGlzIGlzIGhhcmQuKQorCQkgKi8KKwkJaWYgKGlzX2VtcHR5X3NjYW4oc2NhbikpCisJCQlnb3RvIGZvcmNlX25ld19ncm91cDsKKyNlbmRpZgorCX0KKworCWlmIChidWZzaXplIDwgbGVuZ3RoKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGxlbmd0aCwgJmlwdHIpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSAwOworCWlibGsgPSBzY2FuLT5jdXJyZW50X2lub2RlICUgRVhUMl9JTk9ERVNfUEVSX0dST1VQKHNjYW4tPmZzLT5zdXBlcikgLworCQkJCUVYVDJfSU5PREVTX1BFUl9CTE9DSyhzY2FuLT5mcy0+c3VwZXIpICUKKwkJCQlzY2FuLT5pbm9kZV9idWZmZXJfYmxvY2tzOworCWlmIChleHRyYV9ieXRlcykgeworCQltZW1jcHkoc2Nhbi0+dGVtcF9idWZmZXIrZXh0cmFfYnl0ZXMsIHNjYW4tPnB0ciwKKwkJICAgICAgIHNjYW4tPmlub2RlX3NpemUgLSBleHRyYV9ieXRlcyk7CisJCXNjYW4tPnB0ciArPSBzY2FuLT5pbm9kZV9zaXplIC0gZXh0cmFfYnl0ZXM7CisJCXNjYW4tPmJ5dGVzX2xlZnQgLT0gc2Nhbi0+aW5vZGVfc2l6ZSAtIGV4dHJhX2J5dGVzOworCisJCS8qIFZlcmlmeSB0aGUgaW5vZGUgY2hlY2tzdW0uICovCisJCWlmICghKGlibG9ja19zdGF0dXNbaWJsa10gJiBJQkxPQ0tfU1RBVFVTX0NTVU1TX09LKSAmJgorCQkgICAgIShzY2FuLT5mcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSAmJgorCQkgICAgIWV4dDJmc19pbm9kZV9jc3VtX3ZlcmlmeShzY2FuLT5mcywgc2Nhbi0+Y3VycmVudF9pbm9kZSArIDEsCisJCQkJKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopc2Nhbi0+dGVtcF9idWZmZXIpKQorCQkJcmV0dmFsID0gRVhUMl9FVF9JTk9ERV9DU1VNX0lOVkFMSUQ7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJbWVtc2V0KGlwdHIsIDAsIGxlbmd0aCk7CisJCWV4dDJmc19zd2FwX2lub2RlX2Z1bGwoc2Nhbi0+ZnMsCisJCQkgICAgICAgKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGlwdHIsCisJCQkgICAgICAgKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIHNjYW4tPnRlbXBfYnVmZmVyLAorCQkJICAgICAgIDAsIGxlbmd0aCk7CisjZWxzZQorCQltZW1jcHkoaXB0ciwgc2Nhbi0+dGVtcF9idWZmZXIsIGxlbmd0aCk7CisjZW5kaWYKKwkJaWYgKHNjYW4tPnNjYW5fZmxhZ3MgJiBFWFQyX1NGX0JBRF9FWFRSQV9CWVRFUykKKwkJCXJldHZhbCA9IEVYVDJfRVRfQkFEX0JMT0NLX0lOX0lOT0RFX1RBQkxFOworCQlzY2FuLT5zY2FuX2ZsYWdzICY9IH5FWFQyX1NGX0JBRF9FWFRSQV9CWVRFUzsKKwl9IGVsc2UgeworCQkvKiBWZXJpZnkgdGhlIGlub2RlIGNoZWNrc3VtLiAqLworCQlpZiAoIShpYmxvY2tfc3RhdHVzW2libGtdICYgSUJMT0NLX1NUQVRVU19DU1VNU19PSykgJiYKKwkJICAgICEoc2Nhbi0+ZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgJiYKKwkJICAgICFleHQyZnNfaW5vZGVfY3N1bV92ZXJpZnkoc2Nhbi0+ZnMsIHNjYW4tPmN1cnJlbnRfaW5vZGUgKyAxLAorCQkJCShzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKXNjYW4tPnB0cikpCisJCQlyZXR2YWwgPSBFWFQyX0VUX0lOT0RFX0NTVU1fSU5WQUxJRDsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCQltZW1zZXQoaXB0ciwgMCwgbGVuZ3RoKTsKKwkJZXh0MmZzX3N3YXBfaW5vZGVfZnVsbChzY2FuLT5mcywKKwkJCQkoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKikgaXB0ciwKKwkJCQkoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKikgc2Nhbi0+cHRyLAorCQkJCTAsIGxlbmd0aCk7CisjZWxzZQorCQltZW1jcHkoaXB0ciwgc2Nhbi0+cHRyLCBsZW5ndGgpOworI2VuZGlmCisJCXNjYW4tPnB0ciArPSBzY2FuLT5pbm9kZV9zaXplOworCQlzY2FuLT5ieXRlc19sZWZ0IC09IHNjYW4tPmlub2RlX3NpemU7CisJCWlmIChzY2FuLT5zY2FuX2ZsYWdzICYgRVhUMl9TRl9CQURfSU5PREVfQkxLKQorCQkJcmV0dmFsID0gRVhUMl9FVF9CQURfQkxPQ0tfSU5fSU5PREVfVEFCTEU7CisJfQorCWlmICgoaWJsb2NrX3N0YXR1c1tpYmxrXSAmIElCTE9DS19TVEFUVVNfSU5TQU5FKSAmJgorCSAgICAocmV0dmFsID09IDAgfHwgcmV0dmFsID09IEVYVDJfRVRfSU5PREVfQ1NVTV9JTlZBTElEKSkKKwkJcmV0dmFsID0gRVhUMl9FVF9JTk9ERV9JU19HQVJCQUdFOworCisJc2Nhbi0+aW5vZGVzX2xlZnQtLTsKKwlzY2FuLT5jdXJyZW50X2lub2RlKys7CisJKmlubyA9IHNjYW4tPmN1cnJlbnRfaW5vZGU7CisJaWYgKGlwdHIgIT0gKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopaW5vZGUpIHsKKwkJbWVtY3B5KGlub2RlLCBpcHRyLCBidWZzaXplKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpcHRyKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19nZXRfbmV4dF9pbm9kZShleHQyX2lub2RlX3NjYW4gc2NhbiwgZXh0Ml9pbm9fdCAqaW5vLAorCQkJCXN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX2dldF9uZXh0X2lub2RlX2Z1bGwoc2NhbiwgaW5vLCBpbm9kZSwKKwkJCQkJCXNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworfQorCisvKgorICogRnVuY3Rpb25zIHRvIHJlYWQgYW5kIHdyaXRlIGEgc2luZ2xlIGlub2RlLgorICovCitlcnJjb2RlX3QgZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsIGludCBidWZzaXplKQoreworCWJsazY0X3QJCWJsb2NrX25yOworCXVuc2lnbmVkIGxvbmcgCWdyb3VwLCBibG9jaywgb2Zmc2V0OworCWNoYXIgCQkqcHRyOworCWVycmNvZGVfdAlyZXR2YWw7CisJdW5zaWduZWQJaTsKKwlpbnQJCWNsZW4sIGlub2Rlc19wZXJfYmxvY2s7CisJaW9fY2hhbm5lbAlpbzsKKwlpbnQJCWxlbmd0aCA9IEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlCSppcHRyOworCWludAkJY2FjaGVfc2xvdCwgZmFpbF9jc3VtOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCS8qIENoZWNrIHRvIHNlZSBpZiB1c2VyIGhhcyBhbiBvdmVycmlkZSBmdW5jdGlvbiAqLworCWlmIChmcy0+cmVhZF9pbm9kZSAmJgorCSAgICAoKGJ1ZnNpemUgPT0gc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSkgfHwKKwkgICAgIChFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSA9PSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKSkpIHsKKwkJcmV0dmFsID0gKGZzLT5yZWFkX2lub2RlKShmcywgaW5vLCBpbm9kZSk7CisJCWlmIChyZXR2YWwgIT0gRVhUMl9FVF9DQUxMQkFDS19OT1RIQU5ETEVEKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisJaWYgKChpbm8gPT0gMCkgfHwgKGlubyA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKQorCQlyZXR1cm4gRVhUMl9FVF9CQURfSU5PREVfTlVNOworCS8qIENyZWF0ZSBpbm9kZSBjYWNoZSBpZiBub3QgcHJlc2VudCAqLworCWlmICghZnMtPmljYWNoZSkgeworCQlyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2lub2RlX2NhY2hlKGZzLCA0KTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCS8qIENoZWNrIHRvIHNlZSBpZiBpdCdzIGluIHRoZSBpbm9kZSBjYWNoZSAqLworCWZvciAoaSA9IDA7IGkgPCBmcy0+aWNhY2hlLT5jYWNoZV9zaXplOyBpKyspIHsKKwkJaWYgKGZzLT5pY2FjaGUtPmNhY2hlW2ldLmlubyA9PSBpbm8pIHsKKwkJCW1lbWNweShpbm9kZSwgZnMtPmljYWNoZS0+Y2FjaGVbaV0uaW5vZGUsCisJCQkgICAgICAgKGJ1ZnNpemUgPiBsZW5ndGgpID8gbGVuZ3RoIDogYnVmc2l6ZSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lNQUdFX0ZJTEUpIHsKKwkJaW5vZGVzX3Blcl9ibG9jayA9IGZzLT5ibG9ja3NpemUgLyBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKwkJYmxvY2tfbnIgPSBmcy0+aW1hZ2VfaGVhZGVyLT5vZmZzZXRfaW5vZGUgLyBmcy0+YmxvY2tzaXplOworCQlibG9ja19uciArPSAoaW5vIC0gMSkgLyBpbm9kZXNfcGVyX2Jsb2NrOworCQlvZmZzZXQgPSAoKGlubyAtIDEpICUgaW5vZGVzX3Blcl9ibG9jaykgKgorCQkJRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisJCWlvID0gZnMtPmltYWdlX2lvOworCX0gZWxzZSB7CisJCWdyb3VwID0gKGlubyAtIDEpIC8gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcik7CisJCWlmIChncm91cCA+IGZzLT5ncm91cF9kZXNjX2NvdW50KQorCQkJcmV0dXJuIEVYVDJfRVRfQkFEX0lOT0RFX05VTTsKKwkJb2Zmc2V0ID0gKChpbm8gLSAxKSAlIEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpKSAqCisJCQlFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKwkJYmxvY2sgPSBvZmZzZXQgPj4gRVhUMl9CTE9DS19TSVpFX0JJVFMoZnMtPnN1cGVyKTsKKwkJaWYgKCFleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCAodW5zaWduZWQpIGdyb3VwKSkKKwkJCXJldHVybiBFWFQyX0VUX01JU1NJTkdfSU5PREVfVEFCTEU7CisJCWJsb2NrX25yID0gZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgZ3JvdXApICsKKwkJCWJsb2NrOworCQlpbyA9IGZzLT5pbzsKKwl9CisJb2Zmc2V0ICY9IChFWFQyX0JMT0NLX1NJWkUoZnMtPnN1cGVyKSAtIDEpOworCisJY2FjaGVfc2xvdCA9IChmcy0+aWNhY2hlLT5jYWNoZV9sYXN0ICsgMSkgJSBmcy0+aWNhY2hlLT5jYWNoZV9zaXplOworCWlwdHIgPSAoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKilmcy0+aWNhY2hlLT5jYWNoZVtjYWNoZV9zbG90XS5pbm9kZTsKKworCXB0ciA9IChjaGFyICopIGlwdHI7CisJd2hpbGUgKGxlbmd0aCkgeworCQljbGVuID0gbGVuZ3RoOworCQlpZiAoKG9mZnNldCArIGxlbmd0aCkgPiBmcy0+YmxvY2tzaXplKQorCQkJY2xlbiA9IGZzLT5ibG9ja3NpemUgLSBvZmZzZXQ7CisKKwkJaWYgKGJsb2NrX25yICE9IGZzLT5pY2FjaGUtPmJ1ZmZlcl9ibGspIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChpbywgYmxvY2tfbnIsIDEsCisJCQkJCQkgICAgIGZzLT5pY2FjaGUtPmJ1ZmZlcik7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCQlmcy0+aWNhY2hlLT5idWZmZXJfYmxrID0gYmxvY2tfbnI7CisJCX0KKworCQltZW1jcHkocHRyLCAoKGNoYXIgKikgZnMtPmljYWNoZS0+YnVmZmVyKSArICh1bnNpZ25lZCkgb2Zmc2V0LAorCQkgICAgICAgY2xlbik7CisKKwkJb2Zmc2V0ID0gMDsKKwkJbGVuZ3RoIC09IGNsZW47CisJCXB0ciArPSBjbGVuOworCQlibG9ja19ucisrOworCX0KKwlsZW5ndGggPSBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKworCS8qIFZlcmlmeSB0aGUgaW5vZGUgY2hlY2tzdW0uICovCisJZmFpbF9jc3VtID0gIWV4dDJmc19pbm9kZV9jc3VtX3ZlcmlmeShmcywgaW5vLCBpcHRyKTsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCWV4dDJmc19zd2FwX2lub2RlX2Z1bGwoZnMsIChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBpcHRyLAorCQkJICAgICAgIChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBpcHRyLAorCQkJICAgICAgIDAsIGxlbmd0aCk7CisjZW5kaWYKKworCS8qIFVwZGF0ZSB0aGUgaW5vZGUgY2FjaGUgYm9va2tlZXBpbmcgKi8KKwlpZiAoIWZhaWxfY3N1bSkgeworCQlmcy0+aWNhY2hlLT5jYWNoZV9sYXN0ID0gY2FjaGVfc2xvdDsKKwkJZnMtPmljYWNoZS0+Y2FjaGVbY2FjaGVfc2xvdF0uaW5vID0gaW5vOworCX0KKwltZW1jcHkoaW5vZGUsIGlwdHIsIChidWZzaXplID4gbGVuZ3RoKSA/IGxlbmd0aCA6IGJ1ZnNpemUpOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykgJiYgZmFpbF9jc3VtKQorCQlyZXR1cm4gRVhUMl9FVF9JTk9ERV9DU1VNX0lOVkFMSUQ7CisKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19yZWFkX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqIGlub2RlKQoreworCXJldHVybiBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIGlub2RlLAorCQkJCQlzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgIHN0cnVjdCBleHQyX2lub2RlICogaW5vZGUsIGludCBidWZzaXplKQoreworCWJsazY0X3QgYmxvY2tfbnI7CisJdW5zaWduZWQgbG9uZyBncm91cCwgYmxvY2ssIG9mZnNldDsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqd19pbm9kZTsKKwljaGFyICpwdHI7CisJdW5zaWduZWQgaTsKKwlpbnQgY2xlbjsKKwlpbnQgbGVuZ3RoID0gRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJLyogQ2hlY2sgdG8gc2VlIGlmIHVzZXIgcHJvdmlkZWQgYW4gb3ZlcnJpZGUgZnVuY3Rpb24gKi8KKwlpZiAoZnMtPndyaXRlX2lub2RlKSB7CisJCXJldHZhbCA9IChmcy0+d3JpdGVfaW5vZGUpKGZzLCBpbm8sIGlub2RlKTsKKwkJaWYgKHJldHZhbCAhPSBFWFQyX0VUX0NBTExCQUNLX05PVEhBTkRMRUQpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlmICgoaW5vID09IDApIHx8IChpbm8gPiBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KSkKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0lOT0RFX05VTTsKKworCS8qIFByZXBhcmUgb3VyIHNoYWRvdyBidWZmZXIgZm9yIHJlYWQvbW9kaWZ5L2J5dGVzd2FwL3dyaXRlICovCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0obGVuZ3RoLCAmd19pbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmIChidWZzaXplIDwgbGVuZ3RoKSB7CisJCWludCBvbGRfZmxhZ3MgPSBmcy0+ZmxhZ3M7CisJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sCisJCQkJCQkoc3RydWN0IGV4dDJfaW5vZGUgKil3X2lub2RlLAorCQkJCQkJbGVuZ3RoKTsKKwkJZnMtPmZsYWdzID0gKG9sZF9mbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpIHwKKwkJCSAgICAoZnMtPmZsYWdzICYgfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCisJLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBpbm9kZSBjYWNoZSBuZWVkcyB0byBiZSB1cGRhdGVkICovCisJaWYgKGZzLT5pY2FjaGUpIHsKKwkJZm9yIChpPTA7IGkgPCBmcy0+aWNhY2hlLT5jYWNoZV9zaXplOyBpKyspIHsKKwkJCWlmIChmcy0+aWNhY2hlLT5jYWNoZVtpXS5pbm8gPT0gaW5vKSB7CisJCQkJbWVtY3B5KGZzLT5pY2FjaGUtPmNhY2hlW2ldLmlub2RlLCBpbm9kZSwKKwkJCQkgICAgICAgKGJ1ZnNpemUgPiBsZW5ndGgpID8gbGVuZ3RoIDogYnVmc2l6ZSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9IGVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2lub2RlX2NhY2hlKGZzLCA0KTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKwltZW1jcHkod19pbm9kZSwgaW5vZGUsIChidWZzaXplID4gbGVuZ3RoKSA/IGxlbmd0aCA6IGJ1ZnNpemUpOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX1JPX0ZJTFNZUzsKKwkJZ290byBlcnJvdXQ7CisJfQorCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZXh0MmZzX3N3YXBfaW5vZGVfZnVsbChmcywgd19pbm9kZSwgd19pbm9kZSwgMSwgbGVuZ3RoKTsKKyNlbmRpZgorCisJcmV0dmFsID0gZXh0MmZzX2lub2RlX2NzdW1fc2V0KGZzLCBpbm8sIHdfaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJZ3JvdXAgPSAoaW5vIC0gMSkgLyBFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKTsKKwlvZmZzZXQgPSAoKGlubyAtIDEpICUgRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikpICoKKwkJRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisJYmxvY2sgPSBvZmZzZXQgPj4gRVhUMl9CTE9DS19TSVpFX0JJVFMoZnMtPnN1cGVyKTsKKwlpZiAoIWV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsICh1bnNpZ25lZCkgZ3JvdXApKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfTUlTU0lOR19JTk9ERV9UQUJMRTsKKwkJZ290byBlcnJvdXQ7CisJfQorCWJsb2NrX25yID0gZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgKHVuc2lnbmVkKSBncm91cCkgKyBibG9jazsKKworCW9mZnNldCAmPSAoRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcikgLSAxKTsKKworCXB0ciA9IChjaGFyICopIHdfaW5vZGU7CisKKwl3aGlsZSAobGVuZ3RoKSB7CisJCWNsZW4gPSBsZW5ndGg7CisJCWlmICgob2Zmc2V0ICsgbGVuZ3RoKSA+IGZzLT5ibG9ja3NpemUpCisJCQljbGVuID0gZnMtPmJsb2Nrc2l6ZSAtIG9mZnNldDsKKworCQlpZiAoZnMtPmljYWNoZS0+YnVmZmVyX2JsayAhPSBibG9ja19ucikgeworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgYmxvY2tfbnIsIDEsCisJCQkJCQkgICAgIGZzLT5pY2FjaGUtPmJ1ZmZlcik7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCQkJZnMtPmljYWNoZS0+YnVmZmVyX2JsayA9IGJsb2NrX25yOworCQl9CisKKworCQltZW1jcHkoKGNoYXIgKikgZnMtPmljYWNoZS0+YnVmZmVyICsgKHVuc2lnbmVkKSBvZmZzZXQsCisJCSAgICAgICBwdHIsIGNsZW4pOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCBibG9ja19uciwgMSwKKwkJCQkJICAgICAgZnMtPmljYWNoZS0+YnVmZmVyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCisJCW9mZnNldCA9IDA7CisJCXB0ciArPSBjbGVuOworCQlsZW5ndGggLT0gY2xlbjsKKwkJYmxvY2tfbnIrKzsKKwl9CisKKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0NIQU5HRUQ7CitlcnJvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZ3X2lub2RlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCXJldHVybiBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgaW5vLCBpbm9kZSwKKwkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2hlbiB3cml0aW5nIGEgbmV3IGlub2RlLiAgSXQgbWFrZXMKKyAqIHN1cmUgdGhhdCBleHRyYSBwYXJ0IG9mIGxhcmdlIGlub2RlcyBpcyBpbml0aWFsaXplZCBwcm9wZXJseS4KKyAqLworZXJyY29kZV90IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpCit7CisJc3RydWN0IGV4dDJfaW5vZGUJKmJ1ZjsKKwlpbnQgCQkJc2l6ZSA9IEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlCSpsYXJnZV9pbm9kZTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlfX3UzMiAJCQl0ID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKE5VTEwpOworCisJaWYgKCFpbm9kZS0+aV9jdGltZSkKKwkJaW5vZGUtPmlfY3RpbWUgPSB0OworCWlmICghaW5vZGUtPmlfbXRpbWUpCisJCWlub2RlLT5pX210aW1lID0gdDsKKwlpZiAoIWlub2RlLT5pX2F0aW1lKQorCQlpbm9kZS0+aV9hdGltZSA9IHQ7CisKKwlpZiAoc2l6ZSA9PSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKQorCQlyZXR1cm4gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgaW5vZGUsCisJCQkJCSAgICAgICBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKworCWJ1ZiA9IG1hbGxvYyhzaXplKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIEVOT01FTTsKKworCW1lbXNldChidWYsIDAsIHNpemUpOworCSpidWYgPSAqaW5vZGU7CisKKwlsYXJnZV9pbm9kZSA9IChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqKSBidWY7CisJbGFyZ2VfaW5vZGUtPmlfZXh0cmFfaXNpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpIC0KKwkJRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFOworCWlmICghbGFyZ2VfaW5vZGUtPmlfY3J0aW1lKQorCQlsYXJnZV9pbm9kZS0+aV9jcnRpbWUgPSB0OworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgYnVmLCBzaXplKTsKKwlmcmVlKGJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworCitlcnJjb2RlX3QgZXh0MmZzX2dldF9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBibGtfdCAqYmxvY2tzKQoreworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCWludAkJCWk7CisJZXJyY29kZV90CQlyZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKGlubyA+IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpCisJCXJldHVybiBFWFQyX0VUX0JBRF9JTk9ERV9OVU07CisKKwlpZiAoZnMtPmdldF9ibG9ja3MpIHsKKwkJaWYgKCEoKmZzLT5nZXRfYmxvY2tzKShmcywgaW5vLCBibG9ja3MpKQorCQkJcmV0dXJuIDA7CisJfQorCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlmb3IgKGk9MDsgaSA8IEVYVDJfTl9CTE9DS1M7IGkrKykKKwkJYmxvY2tzW2ldID0gaW5vZGUuaV9ibG9ja1tpXTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19jaGVja19kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKQoreworCXN0cnVjdAlleHQyX2lub2RlCWlub2RlOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmIChpbm8gPiBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50KQorCQlyZXR1cm4gRVhUMl9FVF9CQURfSU5PREVfTlVNOworCisJaWYgKGZzLT5jaGVja19kaXJlY3RvcnkpIHsKKwkJcmV0dmFsID0gKGZzLT5jaGVja19kaXJlY3RvcnkpKGZzLCBpbm8pOworCQlpZiAocmV0dmFsICE9IEVYVDJfRVRfQ0FMTEJBQ0tfTk9USEFORExFRCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAoIUxJTlVYX1NfSVNESVIoaW5vZGUuaV9tb2RlKSkKKwkJcmV0dXJuIEVYVDJfRVRfTk9fRElSRUNUT1JZOworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pbm9kZV9pby5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5vZGVfaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2Q5NGM4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW5vZGVfaW8uYwpAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqIGlub2RlX2lvLmMgLS0tIFRoaXMgaXMgYWxsb3dzIGFuIGlub2RlIGluIGFuIGV4dDIgZmlsZXN5c3RlbSBpbWFnZQorICogCXRvIGJlIGFjY2Vzc2VkIHZpYSB0aGUgSS9PIG1hbmFnZXIgaW50ZXJmYWNlLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworLyoKKyAqIEZvciBjaGVja2luZyBzdHJ1Y3R1cmUgbWFnaWMgbnVtYmVycy4uLgorICovCisKKyNkZWZpbmUgRVhUMl9DSEVDS19NQUdJQyhzdHJ1Y3QsIGNvZGUpIFwKKwkgIGlmICgoc3RydWN0KS0+bWFnaWMgIT0gKGNvZGUpKSByZXR1cm4gKGNvZGUpCisKK3N0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgeworCWludAkJCQltYWdpYzsKKwljaGFyCQkJCW5hbWVbMzJdOworCWV4dDJfZmlsZV90CQkJZmlsZTsKKwlleHQyX2ZpbHN5cwkJCWZzOworCWV4dDJfaW5vX3QgCQkJaW5vOworCXN0cnVjdCBleHQyX2lub2RlCQlpbm9kZTsKKwlpbnQJCQkJZmxhZ3M7CisJc3RydWN0IGlub2RlX3ByaXZhdGVfZGF0YQkqbmV4dDsKK307CisKKyNkZWZpbmUgQ0hBTk5FTF9IQVNfSU5PREUJMHg4MDAwCisKK3N0YXRpYyBzdHJ1Y3QgaW5vZGVfcHJpdmF0ZV9kYXRhICp0b3BfaW50ZXJuOworc3RhdGljIGludCBpbm9fdW5pcXVlID0gMDsKKworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncywgaW9fY2hhbm5lbCAqY2hhbm5lbCk7CitzdGF0aWMgZXJyY29kZV90IGlub2RlX2Nsb3NlKGlvX2NoYW5uZWwgY2hhbm5lbCk7CitzdGF0aWMgZXJyY29kZV90IGlub2RlX3NldF9ibGtzaXplKGlvX2NoYW5uZWwgY2hhbm5lbCwgaW50IGJsa3NpemUpOworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9yZWFkX2Jsayhpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisJCQkgICAgICAgaW50IGNvdW50LCB2b2lkICpkYXRhKTsKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfd3JpdGVfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCQlpbnQgY291bnQsIGNvbnN0IHZvaWQgKmRhdGEpOworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9mbHVzaChpb19jaGFubmVsIGNoYW5uZWwpOworc3RhdGljIGVycmNvZGVfdCBpbm9kZV93cml0ZV9ieXRlKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJaW50IHNpemUsIGNvbnN0IHZvaWQgKmRhdGEpOworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9yZWFkX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgdm9pZCAqZGF0YSk7CitzdGF0aWMgZXJyY29kZV90IGlub2RlX3dyaXRlX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgY29uc3Qgdm9pZCAqZGF0YSk7CisKK3N0YXRpYyBzdHJ1Y3Qgc3RydWN0X2lvX21hbmFnZXIgc3RydWN0X2lub2RlX21hbmFnZXIgPSB7CisJLm1hZ2ljCQk9IEVYVDJfRVRfTUFHSUNfSU9fTUFOQUdFUiwKKwkubmFtZQkJPSAiSW5vZGUgSS9PIE1hbmFnZXIiLAorCS5vcGVuCQk9IGlub2RlX29wZW4sCisJLmNsb3NlCQk9IGlub2RlX2Nsb3NlLAorCS5zZXRfYmxrc2l6ZQk9IGlub2RlX3NldF9ibGtzaXplLAorCS5yZWFkX2Jsawk9IGlub2RlX3JlYWRfYmxrLAorCS53cml0ZV9ibGsJPSBpbm9kZV93cml0ZV9ibGssCisJLmZsdXNoCQk9IGlub2RlX2ZsdXNoLAorCS53cml0ZV9ieXRlCT0gaW5vZGVfd3JpdGVfYnl0ZSwKKwkucmVhZF9ibGs2NAk9IGlub2RlX3JlYWRfYmxrNjQsCisJLndyaXRlX2JsazY0CT0gaW5vZGVfd3JpdGVfYmxrNjQKK307CisKK2lvX21hbmFnZXIgaW5vZGVfaW9fbWFuYWdlciA9ICZzdHJ1Y3RfaW5vZGVfbWFuYWdlcjsKKworZXJyY29kZV90IGV4dDJmc19pbm9kZV9pb19pbnRlcm4yKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgIGNoYXIgKipuYW1lKQoreworCXN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgCSpkYXRhOworCWVycmNvZGVfdAkJCXJldHZhbDsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEpLAorCQkJCSAgICAgJmRhdGEpKSkKKwkJcmV0dXJuIHJldHZhbDsKKwlkYXRhLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfSU5PREVfSU9fQ0hBTk5FTDsKKwlzcHJpbnRmKGRhdGEtPm5hbWUsICIldTolZCIsIGlubywgaW5vX3VuaXF1ZSsrKTsKKwlkYXRhLT5maWxlID0gMDsKKwlkYXRhLT5mcyA9IGZzOworCWRhdGEtPmlubyA9IGlubzsKKwlkYXRhLT5mbGFncyA9IDA7CisJaWYgKGlub2RlKSB7CisJCW1lbWNweSgmZGF0YS0+aW5vZGUsIGlub2RlLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwkJZGF0YS0+ZmxhZ3MgfD0gQ0hBTk5FTF9IQVNfSU5PREU7CisJfQorCWRhdGEtPm5leHQgPSB0b3BfaW50ZXJuOworCXRvcF9pbnRlcm4gPSBkYXRhOworCSpuYW1lID0gZGF0YS0+bmFtZTsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19pbm9kZV9pb19pbnRlcm4oZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSBjaGFyICoqbmFtZSkKK3sKKwlyZXR1cm4gZXh0MmZzX2lub2RlX2lvX2ludGVybjIoZnMsIGlubywgTlVMTCwgbmFtZSk7Cit9CisKKworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncywgaW9fY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlpb19jaGFubmVsCWlvID0gTlVMTDsKKwlzdHJ1Y3QgaW5vZGVfcHJpdmF0ZV9kYXRhICpwcmV2LCAqZGF0YSA9IE5VTEw7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCW9wZW5fZmxhZ3M7CisKKwlpZiAobmFtZSA9PSAwKQorCQlyZXR1cm4gRVhUMl9FVF9CQURfREVWSUNFX05BTUU7CisKKwlmb3IgKGRhdGEgPSB0b3BfaW50ZXJuLCBwcmV2ID0gTlVMTDsgZGF0YTsKKwkgICAgIHByZXYgPSBkYXRhLCBkYXRhID0gZGF0YS0+bmV4dCkKKwkJaWYgKHN0cmNtcChuYW1lLCBkYXRhLT5uYW1lKSA9PSAwKQorCQkJYnJlYWs7CisJaWYgKCFkYXRhKQorCQlyZXR1cm4gRU5PRU5UOworCWlmIChwcmV2KQorCQlwcmV2LT5uZXh0ID0gZGF0YS0+bmV4dDsKKwllbHNlCisJCXRvcF9pbnRlcm4gPSBkYXRhLT5uZXh0OworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCksICZpbyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCW1lbXNldChpbywgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCkpOworCisJaW8tPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMOworCWlvLT5tYW5hZ2VyID0gaW5vZGVfaW9fbWFuYWdlcjsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4obmFtZSkrMSwgJmlvLT5uYW1lKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlzdHJjcHkoaW8tPm5hbWUsIG5hbWUpOworCWlvLT5wcml2YXRlX2RhdGEgPSBkYXRhOworCWlvLT5ibG9ja19zaXplID0gMTAyNDsKKwlpby0+cmVhZF9lcnJvciA9IDA7CisJaW8tPndyaXRlX2Vycm9yID0gMDsKKwlpby0+cmVmY291bnQgPSAxOworCisJb3Blbl9mbGFncyA9IChmbGFncyAmIElPX0ZMQUdfUlcpID8gRVhUMl9GSUxFX1dSSVRFIDogMDsKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9vcGVuMihkYXRhLT5mcywgZGF0YS0+aW5vLAorCQkJCSAgIChkYXRhLT5mbGFncyAmIENIQU5ORUxfSEFTX0lOT0RFKSA/CisJCQkJICAgJmRhdGEtPmlub2RlIDogMCwgb3Blbl9mbGFncywKKwkJCQkgICAmZGF0YS0+ZmlsZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJKmNoYW5uZWwgPSBpbzsKKwlyZXR1cm4gMDsKKworY2xlYW51cDoKKwlpZiAoaW8gJiYgaW8tPm5hbWUpCisJCWV4dDJmc19mcmVlX21lbSgmaW8tPm5hbWUpOworCWlmIChkYXRhKQorCQlleHQyZnNfZnJlZV9tZW0oJmRhdGEpOworCWlmIChpbykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpbyk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9jbG9zZShpb19jaGFubmVsIGNoYW5uZWwpCit7CisJc3RydWN0IGlub2RlX3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19JTk9ERV9JT19DSEFOTkVMKTsKKworCWlmICgtLWNoYW5uZWwtPnJlZmNvdW50ID4gMCkKKwkJcmV0dXJuIDA7CisKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9jbG9zZShkYXRhLT5maWxlKTsKKworCWV4dDJmc19mcmVlX21lbSgmY2hhbm5lbC0+cHJpdmF0ZV9kYXRhKTsKKwlpZiAoY2hhbm5lbC0+bmFtZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjaGFubmVsLT5uYW1lKTsKKwlleHQyZnNfZnJlZV9tZW0oJmNoYW5uZWwpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfc2V0X2Jsa3NpemUoaW9fY2hhbm5lbCBjaGFubmVsLCBpbnQgYmxrc2l6ZSkKK3sKKwlzdHJ1Y3QgaW5vZGVfcHJpdmF0ZV9kYXRhICpkYXRhOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IGlub2RlX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX0lOT0RFX0lPX0NIQU5ORUwpOworCisJY2hhbm5lbC0+YmxvY2tfc2l6ZSA9IGJsa3NpemU7CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9yZWFkX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgdm9pZCAqYnVmKQoreworCXN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19JTk9ERV9JT19DSEFOTkVMKTsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX2ZpbGVfbHNlZWsoZGF0YS0+ZmlsZSwKKwkJCQkJYmxvY2sgKiBjaGFubmVsLT5ibG9ja19zaXplLAorCQkJCQlFWFQyX1NFRUtfU0VULCAwKSkpCisJCXJldHVybiByZXR2YWw7CisKKwljb3VudCA9IChjb3VudCA8IDApID8gLWNvdW50IDogKGNvdW50ICogY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisKKwlyZXR1cm4gZXh0MmZzX2ZpbGVfcmVhZChkYXRhLT5maWxlLCBidWYsIGNvdW50LCAwKTsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbm9kZV9yZWFkX2Jsayhpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisJCQkgICAgICAgaW50IGNvdW50LCB2b2lkICpidWYpCit7CisJcmV0dXJuIGlub2RlX3JlYWRfYmxrNjQoY2hhbm5lbCwgYmxvY2ssIGNvdW50LCBidWYpOworfQorCitzdGF0aWMgZXJyY29kZV90IGlub2RlX3dyaXRlX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19JTk9ERV9JT19DSEFOTkVMKTsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX2ZpbGVfbHNlZWsoZGF0YS0+ZmlsZSwKKwkJCQkJYmxvY2sgKiBjaGFubmVsLT5ibG9ja19zaXplLAorCQkJCQlFWFQyX1NFRUtfU0VULCAwKSkpCisJCXJldHVybiByZXR2YWw7CisKKwljb3VudCA9IChjb3VudCA8IDApID8gLWNvdW50IDogKGNvdW50ICogY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisKKwlyZXR1cm4gZXh0MmZzX2ZpbGVfd3JpdGUoZGF0YS0+ZmlsZSwgYnVmLCBjb3VudCwgMCk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfd3JpdGVfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCQlpbnQgY291bnQsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlyZXR1cm4gaW5vZGVfd3JpdGVfYmxrNjQoY2hhbm5lbCwgYmxvY2ssIGNvdW50LCBidWYpOworfQorCitzdGF0aWMgZXJyY29kZV90IGlub2RlX3dyaXRlX2J5dGUoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQkgaW50IHNpemUsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3QgaW5vZGVfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IGlub2RlX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX0lOT0RFX0lPX0NIQU5ORUwpOworCisJaWYgKChyZXR2YWwgPSBleHQyZnNfZmlsZV9sc2VlayhkYXRhLT5maWxlLCBvZmZzZXQsCisJCQkJCUVYVDJfU0VFS19TRVQsIDApKSkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHVybiBleHQyZnNfZmlsZV93cml0ZShkYXRhLT5maWxlLCBidWYsIHNpemUsIDApOworfQorCisvKgorICogRmx1c2ggZGF0YSBidWZmZXJzIHRvIGRpc2suCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfZmx1c2goaW9fY2hhbm5lbCBjaGFubmVsKQoreworCXN0cnVjdCBpbm9kZV9wcml2YXRlX2RhdGEgKmRhdGE7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgaW5vZGVfcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfSU5PREVfSU9fQ0hBTk5FTCk7CisKKwlyZXR1cm4gZXh0MmZzX2ZpbGVfZmx1c2goZGF0YS0+ZmlsZSk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lvX21hbmFnZXIuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lvX21hbmFnZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzk1ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaW9fbWFuYWdlci5jCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogaW9fbWFuYWdlci5jIC0tLSB0aGUgSS9PIG1hbmFnZXIgYWJzdHJhY3Rpb24KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK2VycmNvZGVfdCBpb19jaGFubmVsX3NldF9vcHRpb25zKGlvX2NoYW5uZWwgY2hhbm5lbCwgY29uc3QgY2hhciAqb3B0cykKK3sKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKwljaGFyICpuZXh0LCAqcHRyLCAqb3B0aW9ucywgKmFyZzsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKworCWlmICghb3B0cykKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWNoYW5uZWwtPm1hbmFnZXItPnNldF9vcHRpb24pCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlvcHRpb25zID0gbWFsbG9jKHN0cmxlbihvcHRzKSsxKTsKKwlpZiAoIW9wdGlvbnMpCisJCXJldHVybiBFWFQyX0VUX05PX01FTU9SWTsKKwlzdHJjcHkob3B0aW9ucywgb3B0cyk7CisJcHRyID0gb3B0aW9uczsKKworCXdoaWxlIChwdHIgJiYgKnB0cikgeworCQluZXh0ID0gc3RyY2hyKHB0ciwgJyYnKTsKKwkJaWYgKG5leHQpCisJCQkqbmV4dCsrID0gMDsKKworCQlhcmcgPSBzdHJjaHIocHRyLCAnPScpOworCQlpZiAoYXJnKQorCQkJKmFyZysrID0gMDsKKworCQlyZXR2YWwgPSAoY2hhbm5lbC0+bWFuYWdlci0+c2V0X29wdGlvbikoY2hhbm5lbCwgcHRyLCBhcmcpOworCQlpZiAocmV0dmFsKQorCQkJYnJlYWs7CisJCXB0ciA9IG5leHQ7CisJfQorCWZyZWUob3B0aW9ucyk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGlvX2NoYW5uZWxfd3JpdGVfYnl0ZShpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAorCQkJCWludCBjb3VudCwgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY2hhbm5lbC0+bWFuYWdlci0+d3JpdGVfYnl0ZSkKKwkJcmV0dXJuIGNoYW5uZWwtPm1hbmFnZXItPndyaXRlX2J5dGUoY2hhbm5lbCwgb2Zmc2V0LAorCQkJCQkJICAgIGNvdW50LCBkYXRhKTsKKworCXJldHVybiBFWFQyX0VUX1VOSU1QTEVNRU5URUQ7Cit9CisKK2VycmNvZGVfdCBpb19jaGFubmVsX3JlYWRfYmxrNjQoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJIGludCBjb3VudCwgdm9pZCAqZGF0YSkKK3sKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY2hhbm5lbC0+bWFuYWdlci0+cmVhZF9ibGs2NCkKKwkJcmV0dXJuIChjaGFubmVsLT5tYW5hZ2VyLT5yZWFkX2JsazY0KShjaGFubmVsLCBibG9jaywKKwkJCQkJCSAgICAgIGNvdW50LCBkYXRhKTsKKworCWlmICgoYmxvY2sgPj4gMzIpICE9IDApCisJCXJldHVybiBFWFQyX0VUX0lPX0NIQU5ORUxfTk9fU1VQUE9SVF82NDsKKworCXJldHVybiAoY2hhbm5lbC0+bWFuYWdlci0+cmVhZF9ibGspKGNoYW5uZWwsICh1bnNpZ25lZCBsb25nKSBibG9jaywKKwkJCQkJICAgICBjb3VudCwgZGF0YSk7Cit9CisKK2VycmNvZGVfdCBpb19jaGFubmVsX3dyaXRlX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCSBpbnQgY291bnQsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCisJaWYgKGNoYW5uZWwtPm1hbmFnZXItPndyaXRlX2JsazY0KQorCQlyZXR1cm4gKGNoYW5uZWwtPm1hbmFnZXItPndyaXRlX2JsazY0KShjaGFubmVsLCBibG9jaywKKwkJCQkJCSAgICAgICBjb3VudCwgZGF0YSk7CisKKwlpZiAoKGJsb2NrID4+IDMyKSAhPSAwKQorCQlyZXR1cm4gRVhUMl9FVF9JT19DSEFOTkVMX05PX1NVUFBPUlRfNjQ7CisKKwlyZXR1cm4gKGNoYW5uZWwtPm1hbmFnZXItPndyaXRlX2JsaykoY2hhbm5lbCwgKHVuc2lnbmVkIGxvbmcpIGJsb2NrLAorCQkJCQkgICAgIGNvdW50LCBkYXRhKTsKK30KKworZXJyY29kZV90IGlvX2NoYW5uZWxfZGlzY2FyZChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKworCWlmIChjaGFubmVsLT5tYW5hZ2VyLT5kaXNjYXJkKQorCQlyZXR1cm4gKGNoYW5uZWwtPm1hbmFnZXItPmRpc2NhcmQpKGNoYW5uZWwsIGJsb2NrLCBjb3VudCk7CisKKwlyZXR1cm4gRVhUMl9FVF9VTklNUExFTUVOVEVEOworfQorCitlcnJjb2RlX3QgaW9fY2hhbm5lbF96ZXJvb3V0KGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICB1bnNpZ25lZCBsb25nIGxvbmcgY291bnQpCit7CisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCisJaWYgKGNoYW5uZWwtPm1hbmFnZXItPnplcm9vdXQpCisJCXJldHVybiAoY2hhbm5lbC0+bWFuYWdlci0+emVyb291dCkoY2hhbm5lbCwgYmxvY2ssIGNvdW50KTsKKworCXJldHVybiBFWFQyX0VUX1VOSU1QTEVNRU5URUQ7Cit9CisKK2VycmNvZGVfdCBpb19jaGFubmVsX2FsbG9jX2J1Zihpb19jaGFubmVsIGlvLCBpbnQgY291bnQsIHZvaWQgKnB0cikKK3sKKwlzaXplX3QJc2l6ZTsKKworCWlmIChjb3VudCA9PSAwKQorCQlzaXplID0gaW8tPmJsb2NrX3NpemU7CisJZWxzZSBpZiAoY291bnQgPiAwKQorCQlzaXplID0gaW8tPmJsb2NrX3NpemUgKiBjb3VudDsKKwllbHNlCisJCXNpemUgPSAtY291bnQ7CisKKwlpZiAoaW8tPmFsaWduKQorCQlyZXR1cm4gZXh0MmZzX2dldF9tZW1hbGlnbihzaXplLCBpby0+YWxpZ24sIHB0cik7CisJZWxzZQorCQlyZXR1cm4gZXh0MmZzX2dldF9tZW0oc2l6ZSwgcHRyKTsKK30KKworZXJyY29kZV90IGlvX2NoYW5uZWxfY2FjaGVfcmVhZGFoZWFkKGlvX2NoYW5uZWwgaW8sIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCQkgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCkKK3sKKwlpZiAoIWlvLT5tYW5hZ2VyLT5jYWNoZV9yZWFkYWhlYWQpCisJCXJldHVybiBFWFQyX0VUX09QX05PVF9TVVBQT1JURUQ7CisKKwlyZXR1cm4gaW8tPm1hbmFnZXItPmNhY2hlX3JlYWRhaGVhZChpbywgYmxvY2ssIGNvdW50KTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lyZWwuaCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lyZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWFhMmQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaXJlbC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogaXJlbC5oCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCitzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWZlcmVuY2UgeworCWJsazY0X3QJYmxvY2s7CisJX191MTYgb2Zmc2V0OworfTsKKworc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgeworCWV4dDJfaW5vX3QJbmV3OworCWV4dDJfaW5vX3QJb3JpZzsKKwlfX3UxNgkJZmxhZ3M7CisJX191MTYJCW1heF9yZWZzOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0aW9uX3RhYmxlICpleHQyX2lyZWw7CisKK3N0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRpb25fdGFibGUgeworCV9fdTMyCW1hZ2ljOworCWNoYXIJKm5hbWU7CisJZXh0Ml9pbm9fdAljdXJyZW50OworCXZvaWQJKnByaXZfZGF0YTsKKworCS8qCisJICogQWRkIGFuIGlub2RlIHJlbG9jYXRpb24gZW50cnkuCisJICovCisJZXJyY29kZV90ICgqcHV0KShleHQyX2lyZWwgaXJlbCwgZXh0Ml9pbm9fdCBvbGQsCisJCQkgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50KTsKKwkvKgorCSAqIEdldCBhbiBpbm9kZSByZWxvY2F0aW9uIGVudHJ5LgorCSAqLworCWVycmNvZGVfdCAoKmdldCkoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb2xkLAorCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudCk7CisKKwkvKgorCSAqIEdldCBhbiBpbm9kZSByZWxvY2F0aW9uIGVudHJ5IGJ5IGl0cyBvcmlnaW5hbCBpbm9kZSBudW1iZXIKKwkgKi8KKwllcnJjb2RlX3QgKCpnZXRfYnlfb3JpZykoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb3JpZywgZXh0Ml9pbm9fdCAqb2xkLAorCQkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50KTsKKworCS8qCisJICogSW5pdGlhbGl6ZSBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlIGlub2RlIHJlbG9jYXRpb24gZW50cmllcy4KKwkgKi8KKwllcnJjb2RlX3QgKCpzdGFydF9pdGVyKShleHQyX2lyZWwgaXJlbCk7CisKKwkvKgorCSAqIFRoZSBpdGVyYXRvciBmdW5jdGlvbiBmb3IgdGhlIGlub2RlIHJlbG9jYXRpb24gZW50cmllcy4KKwkgKiBSZXR1cm5zIGFuIGlub2RlIG51bWJlciBvZiAwIHdoZW4gb3V0IG9mIGVudHJpZXMuCisJICovCisJZXJyY29kZV90ICgqbmV4dCkoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgKm9sZCwKKwkJCSAgc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudCk7CisKKwkvKgorCSAqIEFkZCBhbiBpbm9kZSByZWZlcmVuY2UgKGkuZS4sIG5vdGUgdGhlIGZhY3QgdGhhdCBhCisJICogcGFydGljdWxhciBibG9jay9vZmZzZXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYW4gaW5vZGUpCisJICovCisJZXJyY29kZV90ICgqYWRkX3JlZikoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgaW5vLAorCQkJICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWZlcmVuY2UgKnJlZik7CisKKwkvKgorCSAqIEluaXRpYWxpemUgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZSBpbm9kZSByZWZlcmVuY2VzIGZvciBhCisJICogcGFydGljdWxhciBpbm9kZS4KKwkgKi8KKwllcnJjb2RlX3QgKCpzdGFydF9pdGVyX3JlZikoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgaW5vKTsKKworCS8qCisJICogVGhlIGl0ZXJhdG9yIGZ1bmN0aW9uIGZvciB0aGUgaW5vZGUgcmVmZXJlbmNlcyBmb3IgYW4KKwkgKiBpbm9kZS4gIFRoZSByZWZlcmVuY2VzIGZvciBvbmx5IG9uZSBpbm9kZSBjYW4gYmUgaW50ZXJhdG9yCisJICogb3ZlciBhdCBhIHRpbWUsIGFzIHRoZSBpdGVyYXRvciBzdGF0ZSBpcyBzdG9yZWQgaW4gZXh0Ml9pcmVsLgorCSAqLworCWVycmNvZGVfdCAoKm5leHRfcmVmKShleHQyX2lyZWwgaXJlbCwKKwkJCSAgICAgIHN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSAqcmVmKTsKKworCS8qCisJICogTW92ZSB0aGUgaW5vZGUgcmVsb2NhdGlvbiB0YWJsZSBmcm9tIG9uZSBpbm9kZSBudW1iZXIgdG8KKwkgKiBhbm90aGVyLiAgTm90ZSB0aGF0IHRoZSBpbm9kZSByZWZlcmVuY2VzIGFsc28gbXVzdCBtb3ZlLgorCSAqLworCWVycmNvZGVfdCAoKm1vdmUpKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCwgZXh0Ml9pbm9fdCBuZXcpOworCisJLyoKKwkgKiBSZW1vdmUgYW4gaW5vZGUgcmVsb2NhdGlvbiBlbnRyeSwgYWxvbmcgd2l0aCBhbGwgb2YgdGhlCisJICogaW5vZGUgcmVmZXJlbmNlcy4KKwkgKi8KKwllcnJjb2RlX3QgKCpkZWxldGUpKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCk7CisKKwkvKgorCSAqIEZyZWUgdGhlIGlub2RlIHJlbG9jYXRpb24gdGFibGUuCisJICovCisJZXJyY29kZV90ICgqZnJlZSkoZXh0Ml9pcmVsIGlyZWwpOworfTsKKworZXJyY29kZV90IGV4dDJmc19pcmVsX21lbWFycmF5X2NyZWF0ZShjaGFyICpuYW1lLCBleHQyX2lub190IG1heF9pbm9kZSwKKwkJCQkgICAgZXh0Ml9pcmVsICppcmVsKTsKKworI2RlZmluZSBleHQyZnNfaXJlbF9wdXQoaXJlbCwgb2xkLCBlbnQpICgoaXJlbCktPnB1dCgoaXJlbCksIG9sZCwgZW50KSkKKyNkZWZpbmUgZXh0MmZzX2lyZWxfZ2V0KGlyZWwsIG9sZCwgZW50KSAoKGlyZWwpLT5nZXQoKGlyZWwpLCBvbGQsIGVudCkpCisjZGVmaW5lIGV4dDJmc19pcmVsX2dldF9ieV9vcmlnKGlyZWwsIG9yaWcsIG9sZCwgZW50KSBcCisJCQkoKGlyZWwpLT5nZXRfYnlfb3JpZygoaXJlbCksIG9yaWcsIG9sZCwgZW50KSkKKyNkZWZpbmUgZXh0MmZzX2lyZWxfc3RhcnRfaXRlcihpcmVsKSAoKGlyZWwpLT5zdGFydF9pdGVyKChpcmVsKSkpCisjZGVmaW5lIGV4dDJmc19pcmVsX25leHQoaXJlbCwgb2xkLCBlbnQpICgoaXJlbCktPm5leHQoKGlyZWwpLCBvbGQsIGVudCkpCisjZGVmaW5lIGV4dDJmc19pcmVsX2FkZF9yZWYoaXJlbCwgaW5vLCByZWYpICgoaXJlbCktPmFkZF9yZWYoKGlyZWwpLCBpbm8sIHJlZikpCisjZGVmaW5lIGV4dDJmc19pcmVsX3N0YXJ0X2l0ZXJfcmVmKGlyZWwsIGlubykgKChpcmVsKS0+c3RhcnRfaXRlcl9yZWYoKGlyZWwpLCBpbm8pKQorI2RlZmluZSBleHQyZnNfaXJlbF9uZXh0X3JlZihpcmVsLCByZWYpICgoaXJlbCktPm5leHRfcmVmKChpcmVsKSwgcmVmKSkKKyNkZWZpbmUgZXh0MmZzX2lyZWxfbW92ZShpcmVsLCBvbGQsIG5ldykgKChpcmVsKS0+bW92ZSgoaXJlbCksIG9sZCwgbmV3KSkKKyNkZWZpbmUgZXh0MmZzX2lyZWxfZGVsZXRlKGlyZWwsIG9sZCkgKChpcmVsKS0+ZGVsZXRlKChpcmVsKSwgb2xkKSkKKyNkZWZpbmUgZXh0MmZzX2lyZWxfZnJlZShpcmVsKSAoKGlyZWwpLT5mcmVlKChpcmVsKSkpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pcmVsX21hLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pcmVsX21hLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY0YjdlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2lyZWxfbWEuYwpAQCAtMCwwICsxLDM3NyBAQAorLyoKKyAqIGlyZWxfbWEuYworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiaXJlbC5oIgorCitzdGF0aWMgZXJyY29kZV90IGltYV9wdXQoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb2xkLAorCQkJIHN0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRlX2VudHJ5ICplbnQpOworc3RhdGljIGVycmNvZGVfdCBpbWFfZ2V0KGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCwKKwkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50KTsKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX2dldF9ieV9vcmlnKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9yaWcsIGV4dDJfaW5vX3QgKm9sZCwKKwkJCQkgc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudCk7CitzdGF0aWMgZXJyY29kZV90IGltYV9zdGFydF9pdGVyKGV4dDJfaXJlbCBpcmVsKTsKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX25leHQoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgKm9sZCwKKwkJCSAgc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudCk7CitzdGF0aWMgZXJyY29kZV90IGltYV9hZGRfcmVmKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IGlubywKKwkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGVfcmVmZXJlbmNlICpyZWYpOworc3RhdGljIGVycmNvZGVfdCBpbWFfc3RhcnRfaXRlcl9yZWYoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgaW5vKTsKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX25leHRfcmVmKGV4dDJfaXJlbCBpcmVsLCBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWZlcmVuY2UgKnJlZik7CitzdGF0aWMgZXJyY29kZV90IGltYV9tb3ZlKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCwgZXh0Ml9pbm9fdCBuZXcpOworc3RhdGljIGVycmNvZGVfdCBpbWFfZGVsZXRlKGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCk7CitzdGF0aWMgZXJyY29kZV90IGltYV9mcmVlKGV4dDJfaXJlbCBpcmVsKTsKKworLyoKKyAqIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgc3RvcmVzIHRoZSBhcnJheSBvZiBpbm9kZSByZWZlcmVuY2VzOyB0aGVyZSBpcworICogYSBzdHJ1Y3R1cmUgZm9yIGVhY2ggaW5vZGUuCisgKi8KK3N0cnVjdCBpbm9kZV9yZWZlcmVuY2VfZW50cnkgeworCV9fdTE2IG51bTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWZlcmVuY2UgKnJlZnM7Cit9OworCitzdHJ1Y3QgaXJlbF9tYSB7CisJX191MzIgbWFnaWM7CisJZXh0Ml9pbm9fdCBtYXhfaW5vZGU7CisJZXh0Ml9pbm9fdCByZWZfY3VycmVudDsKKwlpbnQgICByZWZfaXRlcjsKKwlleHQyX2lub190CSpvcmlnX21hcDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50cmllczsKKwlzdHJ1Y3QgaW5vZGVfcmVmZXJlbmNlX2VudHJ5ICpyZWZfZW50cmllczsKK307CisKK2VycmNvZGVfdCBleHQyZnNfaXJlbF9tZW1hcnJheV9jcmVhdGUoY2hhciAqbmFtZSwgZXh0Ml9pbm9fdCBtYXhfaW5vZGUsCisJCQkJICAgICAgZXh0Ml9pcmVsICpuZXdfaXJlbCkKK3sKKwlleHQyX2lyZWwJCWlyZWwgPSAwOworCWVycmNvZGVfdAlyZXR2YWw7CisJc3RydWN0IGlyZWxfbWEgCSptYSA9IDA7CisJc2l6ZV90CQlzaXplOworCisJKm5ld19pcmVsID0gMDsKKworCS8qCisJICogQWxsb2NhdGUgbWVtb3J5IHN0cnVjdHVyZXMKKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGlvbl90YWJsZSksCisJCQkJJmlyZWwpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbXNldChpcmVsLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGlvbl90YWJsZSkpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc3RybGVuKG5hbWUpKzEsICZpcmVsLT5uYW1lKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlzdHJjcHkoaXJlbC0+bmFtZSwgbmFtZSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGlyZWxfbWEpLCAmbWEpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbXNldChtYSwgMCwgc2l6ZW9mKHN0cnVjdCBpcmVsX21hKSk7CisJaXJlbC0+cHJpdl9kYXRhID0gbWE7CisKKwlzaXplID0gKHNpemVfdCkgKHNpemVvZihleHQyX2lub190KSAqIChtYXhfaW5vZGUrMSkpOworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkobWF4X2lub2RlKzEsIHNpemVvZihleHQyX2lub190KSwKKwkJJm1hLT5vcmlnX21hcCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KG1hLT5vcmlnX21hcCwgMCwgc2l6ZSk7CisKKwlzaXplID0gKHNpemVfdCkgKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSkgKgorCQkJIChtYXhfaW5vZGUrMSkpOworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkoKG1heF9pbm9kZSsxLAorCQlzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkpLCAmbWEtPmVudHJpZXMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCW1lbXNldChtYS0+ZW50cmllcywgMCwgc2l6ZSk7CisKKwlzaXplID0gKHNpemVfdCkgKHNpemVvZihzdHJ1Y3QgaW5vZGVfcmVmZXJlbmNlX2VudHJ5KSAqCisJCQkgKG1heF9pbm9kZSsxKSk7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0obWF4X2lub2RlKzEsCisJCXNpemVvZihzdHJ1Y3QgaW5vZGVfcmVmZXJlbmNlX2VudHJ5KSwgJm1hLT5yZWZfZW50cmllcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJbWVtc2V0KG1hLT5yZWZfZW50cmllcywgMCwgc2l6ZSk7CisJbWEtPm1heF9pbm9kZSA9IG1heF9pbm9kZTsKKworCS8qCisJICogRmlsbCBpbiB0aGUgaXJlbCBkYXRhIHN0cnVjdHVyZQorCSAqLworCWlyZWwtPnB1dCA9IGltYV9wdXQ7CisJaXJlbC0+Z2V0ID0gaW1hX2dldDsKKwlpcmVsLT5nZXRfYnlfb3JpZyA9IGltYV9nZXRfYnlfb3JpZzsKKwlpcmVsLT5zdGFydF9pdGVyID0gaW1hX3N0YXJ0X2l0ZXI7CisJaXJlbC0+bmV4dCA9IGltYV9uZXh0OworCWlyZWwtPmFkZF9yZWYgPSBpbWFfYWRkX3JlZjsKKwlpcmVsLT5zdGFydF9pdGVyX3JlZiA9IGltYV9zdGFydF9pdGVyX3JlZjsKKwlpcmVsLT5uZXh0X3JlZiA9IGltYV9uZXh0X3JlZjsKKwlpcmVsLT5tb3ZlID0gaW1hX21vdmU7CisJaXJlbC0+ZGVsZXRlID0gaW1hX2RlbGV0ZTsKKwlpcmVsLT5mcmVlID0gaW1hX2ZyZWU7CisKKwkqbmV3X2lyZWwgPSBpcmVsOworCXJldHVybiAwOworCitlcnJvdXQ6CisJaW1hX2ZyZWUoaXJlbCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbWFfcHV0KGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCwKKwkJCXN0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRlX2VudHJ5ICplbnQpCit7CisJc3RydWN0IGlub2RlX3JlZmVyZW5jZV9lbnRyeQkqcmVmX2VudDsKKwlzdHJ1Y3QgaXJlbF9tYSAJCQkqbWE7CisJZXJyY29kZV90CQkJcmV0dmFsOworCXNpemVfdAkJCQlzaXplLCBvbGRfc2l6ZTsKKworCW1hID0gaXJlbC0+cHJpdl9kYXRhOworCWlmIChvbGQgPiBtYS0+bWF4X2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJLyoKKwkgKiBGb3JjZSB0aGUgb3JpZyBmaWVsZCB0byB0aGUgY29ycmVjdCB2YWx1ZTsgdGhlIGFwcGxpY2F0aW9uCisJICogcHJvZ3JhbSBzaG91bGRuJ3QgYmUgbWVzc2luZyB3aXRoIHRoaXMgZmllbGQuCisJICovCisJaWYgKG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXS5uZXcgPT0gMCkKKwkJZW50LT5vcmlnID0gb2xkOworCWVsc2UKKwkJZW50LT5vcmlnID0gbWEtPmVudHJpZXNbKHVuc2lnbmVkKSBvbGRdLm9yaWc7CisKKwkvKgorCSAqIElmIG1heF9yZWZzIGhhcyBjaGFuZ2VkLCByZWFsbG9jYXRlIHRoZSByZWZzIGFycmF5CisJICovCisJcmVmX2VudCA9IG1hLT5yZWZfZW50cmllcyArICh1bnNpZ25lZCkgb2xkOworCWlmIChyZWZfZW50LT5yZWZzICYmIGVudC0+bWF4X3JlZnMgIT0KKwkgICAgbWEtPmVudHJpZXNbKHVuc2lnbmVkKSBvbGRdLm1heF9yZWZzKSB7CisJCXNpemUgPSAoc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSkgKiBlbnQtPm1heF9yZWZzKTsKKwkJb2xkX3NpemUgPSAoc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSkgKgorCQkJICAgIG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXS5tYXhfcmVmcyk7CisJCXJldHZhbCA9IGV4dDJmc19yZXNpemVfbWVtKG9sZF9zaXplLCBzaXplLCAmcmVmX2VudC0+cmVmcyk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKworCW1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXSA9ICplbnQ7CisJbWEtPm9yaWdfbWFwWyh1bnNpZ25lZCkgZW50LT5vcmlnXSA9IG9sZDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbWFfZ2V0KGV4dDJfaXJlbCBpcmVsLCBleHQyX2lub190IG9sZCwKKwkJCXN0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRlX2VudHJ5ICplbnQpCit7CisJc3RydWN0IGlyZWxfbWEgCSptYTsKKworCW1hID0gaXJlbC0+cHJpdl9kYXRhOworCWlmIChvbGQgPiBtYS0+bWF4X2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCWlmIChtYS0+ZW50cmllc1sodW5zaWduZWQpIG9sZF0ubmV3ID09IDApCisJCXJldHVybiBFTk9FTlQ7CisJKmVudCA9IG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbWFfZ2V0X2J5X29yaWcoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb3JpZywgZXh0Ml9pbm9fdCAqb2xkLAorCQkJc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudCkKK3sKKwlzdHJ1Y3QgaXJlbF9tYSAJKm1hOworCWV4dDJfaW5vX3QJaW5vOworCisJbWEgPSBpcmVsLT5wcml2X2RhdGE7CisJaWYgKG9yaWcgPiBtYS0+bWF4X2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCWlubyA9IG1hLT5vcmlnX21hcFsodW5zaWduZWQpIG9yaWddOworCWlmIChpbm8gPT0gMCkKKwkJcmV0dXJuIEVOT0VOVDsKKwkqb2xkID0gaW5vOworCSplbnQgPSBtYS0+ZW50cmllc1sodW5zaWduZWQpIGlub107CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX3N0YXJ0X2l0ZXIoZXh0Ml9pcmVsIGlyZWwpCit7CisJaXJlbC0+Y3VycmVudCA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX25leHQoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3QgKm9sZCwKKwkJCSBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50KQoreworCXN0cnVjdCBpcmVsX21hIAkqbWE7CisKKwltYSA9IGlyZWwtPnByaXZfZGF0YTsKKwl3aGlsZSAoKytpcmVsLT5jdXJyZW50IDwgbWEtPm1heF9pbm9kZSkgeworCQlpZiAobWEtPmVudHJpZXNbKHVuc2lnbmVkKSBpcmVsLT5jdXJyZW50XS5uZXcgPT0gMCkKKwkJCWNvbnRpbnVlOworCQkqb2xkID0gaXJlbC0+Y3VycmVudDsKKwkJKmVudCA9IG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgaXJlbC0+Y3VycmVudF07CisJCXJldHVybiAwOworCX0KKwkqb2xkID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBpbWFfYWRkX3JlZihleHQyX2lyZWwgaXJlbCwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIHN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSAqcmVmKQoreworCXN0cnVjdCBpcmVsX21hIAkqbWE7CisJc2l6ZV90CQlzaXplOworCXN0cnVjdCBpbm9kZV9yZWZlcmVuY2VfZW50cnkgKnJlZl9lbnQ7CisJc3RydWN0IGV4dDJfaW5vZGVfcmVsb2NhdGVfZW50cnkgKmVudDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCW1hID0gaXJlbC0+cHJpdl9kYXRhOworCWlmIChpbm8gPiBtYS0+bWF4X2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJcmVmX2VudCA9IG1hLT5yZWZfZW50cmllcyArICh1bnNpZ25lZCkgaW5vOworCWVudCA9IG1hLT5lbnRyaWVzICsgKHVuc2lnbmVkKSBpbm87CisKKwkvKgorCSAqIElmIHRoZSBpbm9kZSByZWZlcmVuY2UgYXJyYXkgZG9lc24ndCBleGlzdCwgY3JlYXRlIGl0LgorCSAqLworCWlmIChyZWZfZW50LT5yZWZzID09IDApIHsKKwkJc2l6ZSA9IChzaXplX3QpICgoc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSkgKgorCQkJCSAgZW50LT5tYXhfcmVmcykpOworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGVudC0+bWF4X3JlZnMsCisJCQlzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfcmVmZXJlbmNlKSwgJnJlZl9lbnQtPnJlZnMpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJbWVtc2V0KHJlZl9lbnQtPnJlZnMsIDAsIHNpemUpOworCQlyZWZfZW50LT5udW0gPSAwOworCX0KKworCWlmIChyZWZfZW50LT5udW0gPj0gZW50LT5tYXhfcmVmcykKKwkJcmV0dXJuIEVYVDJfRVRfVE9PX01BTllfUkVGUzsKKworCXJlZl9lbnQtPnJlZnNbKHVuc2lnbmVkKSByZWZfZW50LT5udW0rK10gPSAqcmVmOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGltYV9zdGFydF9pdGVyX3JlZihleHQyX2lyZWwgaXJlbCwgZXh0Ml9pbm9fdCBpbm8pCit7CisJc3RydWN0IGlyZWxfbWEgCSptYTsKKworCW1hID0gaXJlbC0+cHJpdl9kYXRhOworCWlmIChpbm8gPiBtYS0+bWF4X2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCWlmIChtYS0+ZW50cmllc1sodW5zaWduZWQpIGlub10ubmV3ID09IDApCisJCXJldHVybiBFTk9FTlQ7CisJbWEtPnJlZl9jdXJyZW50ID0gaW5vOworCW1hLT5yZWZfaXRlciA9IDA7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX25leHRfcmVmKGV4dDJfaXJlbCBpcmVsLAorCQkJICAgICAgc3RydWN0IGV4dDJfaW5vZGVfcmVmZXJlbmNlICpyZWYpCit7CisJc3RydWN0IGlyZWxfbWEgCSptYTsKKwlzdHJ1Y3QgaW5vZGVfcmVmZXJlbmNlX2VudHJ5ICpyZWZfZW50OworCisJbWEgPSBpcmVsLT5wcml2X2RhdGE7CisKKwlyZWZfZW50ID0gbWEtPnJlZl9lbnRyaWVzICsgbWEtPnJlZl9jdXJyZW50OworCisJaWYgKChyZWZfZW50LT5yZWZzID09IE5VTEwpIHx8CisJICAgIChtYS0+cmVmX2l0ZXIgPj0gcmVmX2VudC0+bnVtKSkgeworCQlyZWYtPmJsb2NrID0gMDsKKwkJcmVmLT5vZmZzZXQgPSAwOworCQlyZXR1cm4gMDsKKwl9CisJKnJlZiA9IHJlZl9lbnQtPnJlZnNbbWEtPnJlZl9pdGVyKytdOworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBlcnJjb2RlX3QgaW1hX21vdmUoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb2xkLCBleHQyX2lub190IG5ldykKK3sKKwlzdHJ1Y3QgaXJlbF9tYSAJKm1hOworCisJbWEgPSBpcmVsLT5wcml2X2RhdGE7CisJaWYgKChvbGQgPiBtYS0+bWF4X2lub2RlKSB8fCAobmV3ID4gbWEtPm1heF9pbm9kZSkpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJaWYgKG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXS5uZXcgPT0gMCkKKwkJcmV0dXJuIEVOT0VOVDsKKworCW1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgbmV3XSA9IG1hLT5lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXTsKKwlpZiAobWEtPnJlZl9lbnRyaWVzWyh1bnNpZ25lZCkgbmV3XS5yZWZzKQorCQlleHQyZnNfZnJlZV9tZW0oJm1hLT5yZWZfZW50cmllc1sodW5zaWduZWQpIG5ld10ucmVmcyk7CisJbWEtPnJlZl9lbnRyaWVzWyh1bnNpZ25lZCkgbmV3XSA9IG1hLT5yZWZfZW50cmllc1sodW5zaWduZWQpIG9sZF07CisKKwltYS0+ZW50cmllc1sodW5zaWduZWQpIG9sZF0ubmV3ID0gMDsKKwltYS0+cmVmX2VudHJpZXNbKHVuc2lnbmVkKSBvbGRdLm51bSA9IDA7CisJbWEtPnJlZl9lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXS5yZWZzID0gMDsKKworCW1hLT5vcmlnX21hcFttYS0+ZW50cmllc1tuZXddLm9yaWddID0gbmV3OworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGltYV9kZWxldGUoZXh0Ml9pcmVsIGlyZWwsIGV4dDJfaW5vX3Qgb2xkKQoreworCXN0cnVjdCBpcmVsX21hIAkqbWE7CisKKwltYSA9IGlyZWwtPnByaXZfZGF0YTsKKwlpZiAob2xkID4gbWEtPm1heF9pbm9kZSkKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwlpZiAobWEtPmVudHJpZXNbKHVuc2lnbmVkKSBvbGRdLm5ldyA9PSAwKQorCQlyZXR1cm4gRU5PRU5UOworCisJbWEtPmVudHJpZXNbb2xkXS5uZXcgPSAwOworCWlmIChtYS0+cmVmX2VudHJpZXNbKHVuc2lnbmVkKSBvbGRdLnJlZnMpCisJCWV4dDJmc19mcmVlX21lbSgmbWEtPnJlZl9lbnRyaWVzWyh1bnNpZ25lZCkgb2xkXS5yZWZzKTsKKwltYS0+b3JpZ19tYXBbbWEtPmVudHJpZXNbKHVuc2lnbmVkKSBvbGRdLm9yaWddID0gMDsKKworCW1hLT5yZWZfZW50cmllc1sodW5zaWduZWQpIG9sZF0ubnVtID0gMDsKKwltYS0+cmVmX2VudHJpZXNbKHVuc2lnbmVkKSBvbGRdLnJlZnMgPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGltYV9mcmVlKGV4dDJfaXJlbCBpcmVsKQoreworCXN0cnVjdCBpcmVsX21hIAkqbWE7CisJZXh0Ml9pbm9fdAlpbm87CisKKwlpZiAoIWlyZWwpCisJCXJldHVybiAwOworCisJbWEgPSBpcmVsLT5wcml2X2RhdGE7CisKKwlpZiAobWEpIHsKKwkJaWYgKG1hLT5vcmlnX21hcCkKKwkJCWV4dDJmc19mcmVlX21lbSgmbWEtPm9yaWdfbWFwKTsKKwkJaWYgKG1hLT5lbnRyaWVzKQorCQkJZXh0MmZzX2ZyZWVfbWVtKCZtYS0+ZW50cmllcyk7CisJCWlmIChtYS0+cmVmX2VudHJpZXMpIHsKKwkJCWZvciAoaW5vID0gMDsgaW5vIDw9IG1hLT5tYXhfaW5vZGU7IGlubysrKSB7CisJCQkJaWYgKG1hLT5yZWZfZW50cmllc1sodW5zaWduZWQpIGlub10ucmVmcykKKwkJCQkJZXh0MmZzX2ZyZWVfbWVtKCZtYS0+cmVmX2VudHJpZXNbKHVuc2lnbmVkKSBpbm9dLnJlZnMpOworCQkJfQorCQkJZXh0MmZzX2ZyZWVfbWVtKCZtYS0+cmVmX2VudHJpZXMpOworCQl9CisJCWV4dDJmc19mcmVlX21lbSgmbWEpOworCX0KKwlpZiAoaXJlbC0+bmFtZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpcmVsLT5uYW1lKTsKKwlleHQyZnNfZnJlZV9tZW0oJmlyZWwpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvaXNtb3VudGVkLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9pc21vdW50ZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2FjMGYxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvaXNtb3VudGVkLmMKQEAgLTAsMCArMSw0NjMgQEAKKy8qCisgKiBpc21vdW50ZWQuYyAtLS0gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmaWxlc3lzdGVtIHdhcyBtb3VudGVkCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk1LDE5OTYsMTk5NywxOTk4LDE5OTksMjAwMCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyogZGVmaW5lIEJTRF9TT1VSQ0UgdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgbWFqb3IoKSBtYWNybyAqLworI2lmbmRlZiBfQlNEX1NPVVJDRQorI2RlZmluZSBfQlNEX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9ERUZBVUxUX1NPVVJDRQorI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UJLyogc2luY2UgZ2xpYmMgMi4yMCBfU1ZJRF9TT1VSQ0UgaXMgZGVwcmVjYXRlZCAqLworI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2lmZGVmIEhBVkVfTElOVVhfRkRfSAorI2luY2x1ZGUgPGxpbnV4L2ZkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJTlVYX0xPT1BfSAorI2luY2x1ZGUgPGxpbnV4L2xvb3AuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBIQVZFX0xJTlVYX01BSk9SX0gKKyNpbmNsdWRlIDxsaW51eC9tYWpvci5oPgorI2VuZGlmIC8qIEhBVkVfTElOVVhfTUFKT1JfSCAqLworI2VuZGlmIC8qIEhBVkVfTElOVVhfTE9PUF9IICovCisjaWZkZWYgSEFWRV9NTlRFTlRfSAorI2luY2x1ZGUgPG1udGVudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRNTlRJTkZPCisjaW5jbHVkZSA8cGF0aHMuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKyNlbmRpZiAvKiBIQVZFX0dFVE1OVElORk8gKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisjaWZkZWYgSEFWRV9TRVRNTlRFTlQKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgYSByZWd1bGFyIGZpbGUgaXMgbW91bnRlZC4KKyAqIElmIC9ldGMvbXRhYi8gaXMgYSBzeW1saW5rIG9mIC9wcm9jL21vdW50cywgeW91IHdpbGwgbmVlZCB0aGUgZm9sbG93aW5nIGNoZWNrCisgKiBiZWNhdXNlIHRoZSBuYW1lIGluIC9wcm9jL21vdW50cyBpcyBhIGxvb3BiYWNrIGRldmljZSBub3QgYSByZWd1bGFyIGZpbGUuCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfbG9vcF9tb3VudGVkKGNvbnN0IGNoYXIgKm1udF9mc25hbWUsIGRldl90IG1udF9yZGV2LAorCQkJCWRldl90IGZpbGVfZGV2LCBpbm9fdCBmaWxlX2lubykKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfTE9PUF9IKSAmJiBkZWZpbmVkKEhBVkVfTElOVVhfTUFKT1JfSCkKKwlzdHJ1Y3QgbG9vcF9pbmZvNjQgbG9vcGluZm87CisJaW50IGxvb3BfZmQsIHJldDsKKworCWlmIChtYWpvcihtbnRfcmRldikgPT0gTE9PUF9NQUpPUikgeworCQlsb29wX2ZkID0gb3BlbihtbnRfZnNuYW1lLCBPX1JET05MWSk7CisJCWlmIChsb29wX2ZkIDwgMCkKKwkJCXJldHVybiAtMTsKKworCQlyZXQgPSBpb2N0bChsb29wX2ZkLCBMT09QX0dFVF9TVEFUVVM2NCwgJmxvb3BpbmZvKTsKKwkJY2xvc2UobG9vcF9mZCk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIC0xOworCisJCWlmIChmaWxlX2RldiA9PSBsb29waW5mby5sb19kZXZpY2UgJiYKKwkJCQlmaWxlX2lubyA9PSBsb29waW5mby5sb19pbm9kZSkKKwkJCXJldHVybiAxOworCX0KKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTElOVVhfTE9PUF9IKSAmJiBkZWZpbmVkKEhBVkVfTElOVVhfTUFKT1JfSCkgKi8KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCBjaGVja3MgYSBmaWxlIGluIC9ldGMvbXRhYiBmb3JtYXQgdG8gc2VlIGlmIGEKKyAqIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gIFJldHVybnMgYW4gZXJyb3IgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdAorICogb3IgY2FuJ3QgYmUgb3BlbmVkLgorICovCitzdGF0aWMgZXJyY29kZV90IGNoZWNrX21udGVudF9maWxlKGNvbnN0IGNoYXIgKm10YWJfZmlsZSwgY29uc3QgY2hhciAqZmlsZSwKKwkJCQkgICBpbnQgKm1vdW50X2ZsYWdzLCBjaGFyICptdHB0LCBpbnQgbXRsZW4pCit7CisJc3RydWN0IG1udGVudCAJKm1udDsKKwlzdHJ1Y3Qgc3RhdAlzdF9idWY7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJZGV2X3QJCWZpbGVfZGV2PTAsIGZpbGVfcmRldj0wOworCWlub190CQlmaWxlX2lubz0wOworCUZJTEUgCQkqZjsKKwlpbnQJCWZkOworCisJKm1vdW50X2ZsYWdzID0gMDsKKworCWlmICgoZiA9IHNldG1udGVudCAobXRhYl9maWxlLCAiciIpKSA9PSBOVUxMKSB7CisJCWlmIChlcnJubyA9PSBFTk9FTlQpIHsKKwkJCWlmIChnZXRlbnYoIkVYVDJGU19OT19NVEFCX09LIikpCisJCQkJcmV0dXJuIDA7CisJCQllbHNlCisJCQkJcmV0dXJuIEVYVDJfRVRfTk9fTVRBQl9GSUxFOworCQl9CisJCXJldHVybiBlcnJubzsKKwl9CisJaWYgKHN0YXQoZmlsZSwgJnN0X2J1ZikgPT0gMCkgeworCQlpZiAoU19JU0JMSyhzdF9idWYuc3RfbW9kZSkpIHsKKyNpZm5kZWYgX19HTlVfXyAvKiBUaGUgR05VIGh1cmQgaXMgYnJva2VuIHdpdGggcmVzcGVjdCB0byBzdGF0IGRldmljZXMgKi8KKwkJCWZpbGVfcmRldiA9IHN0X2J1Zi5zdF9yZGV2OworI2VuZGlmCS8qIF9fR05VX18gKi8KKwkJfSBlbHNlIHsKKwkJCWZpbGVfZGV2ID0gc3RfYnVmLnN0X2RldjsKKwkJCWZpbGVfaW5vID0gc3RfYnVmLnN0X2lubzsKKwkJfQorCX0KKwl3aGlsZSAoKG1udCA9IGdldG1udGVudCAoZikpICE9IE5VTEwpIHsKKwkJaWYgKG1udC0+bW50X2ZzbmFtZVswXSAhPSAnLycpCisJCQljb250aW51ZTsKKwkJaWYgKHN0cmNtcChmaWxlLCBtbnQtPm1udF9mc25hbWUpID09IDApCisJCQlicmVhazsKKwkJaWYgKHN0YXQobW50LT5tbnRfZnNuYW1lLCAmc3RfYnVmKSA9PSAwKSB7CisJCQlpZiAoU19JU0JMSyhzdF9idWYuc3RfbW9kZSkpIHsKKyNpZm5kZWYgX19HTlVfXworCQkJCWlmIChmaWxlX3JkZXYgJiYgKGZpbGVfcmRldiA9PSBzdF9idWYuc3RfcmRldikpCisJCQkJCWJyZWFrOworCQkJCWlmIChjaGVja19sb29wX21vdW50ZWQobW50LT5tbnRfZnNuYW1lLAorCQkJCQkJc3RfYnVmLnN0X3JkZXYsIGZpbGVfZGV2LAorCQkJCQkJZmlsZV9pbm8pID09IDEpCisJCQkJCWJyZWFrOworI2VuZGlmCS8qIF9fR05VX18gKi8KKwkJCX0gZWxzZSB7CisJCQkJaWYgKGZpbGVfZGV2ICYmICgoZmlsZV9kZXYgPT0gc3RfYnVmLnN0X2RldikgJiYKKwkJCQkJCSAoZmlsZV9pbm8gPT0gc3RfYnVmLnN0X2lubykpKQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCWlmIChtbnQgPT0gMCkgeworI2lmbmRlZiBfX0dOVV9fIC8qIFRoZSBHTlUgaHVyZCBpcyBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHN0YXQgZGV2aWNlcyAqLworCQkvKgorCQkgKiBEbyBhbiBleHRyYSBjaGVjayB0byBzZWUgaWYgdGhpcyBpcyB0aGUgcm9vdCBkZXZpY2UuICBXZQorCQkgKiBjYW4ndCB0cnVzdCAvZXRjL210YWIsIGFuZCAvcHJvYy9tb3VudHMgd2lsbCBvbmx5IGxpc3QKKwkJICogL2Rldi9yb290IGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLiAgQXJnaC4gIEluc3RlYWQgd2UKKwkJICogY2hlY2sgaWYgdGhlIGdpdmVuIGRldmljZSBoYXMgdGhlIHNhbWUgbWFqb3IvbWlub3IgbnVtYmVyCisJCSAqIGFzIHRoZSBkZXZpY2UgdGhhdCB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgb24uCisJCSAqLworCQlpZiAoZmlsZV9yZGV2ICYmIHN0YXQoIi8iLCAmc3RfYnVmKSA9PSAwKSB7CisJCQlpZiAoc3RfYnVmLnN0X2RldiA9PSBmaWxlX3JkZXYpIHsKKwkJCQkqbW91bnRfZmxhZ3MgPSBFWFQyX01GX01PVU5URUQ7CisJCQkJaWYgKG10cHQpCisJCQkJCXN0cm5jcHkobXRwdCwgIi8iLCBtdGxlbik7CisJCQkJZ290byBpc19yb290OworCQkJfQorCQl9CisjZW5kaWYJLyogX19HTlVfXyAqLworCQlnb3RvIGVycm91dDsKKwl9CisjaWZuZGVmIF9fR05VX18gLyogVGhlIEdOVSBodXJkIGlzIGRlZmljaWVudDsgd2hhdCBlbHNlIGlzIG5ldz8gKi8KKwkvKiBWYWxpZGF0ZSB0aGUgZW50cnkgaW4gY2FzZSAvZXRjL210YWIgaXMgb3V0IG9mIGRhdGUgKi8KKwkvKgorCSAqIFdlIG5lZWQgdG8gYmUgcGFyYW5vaWQsIGJlY2F1c2Ugc29tZSBicm9rZW4gZGlzdHJpYnV0aW9ucworCSAqIChyZWFkOiBTbGFja3dhcmUpIGRvbid0IGluaXRpYWxpemUgL2V0Yy9tdGFiIGJlZm9yZSBjaGVja2luZworCSAqIGFsbCBvZiB0aGUgbm9uLXJvb3QgZmlsZXN5c3RlbXMgb24gdGhlIGRpc2suCisJICovCisJaWYgKHN0YXQobW50LT5tbnRfZGlyLCAmc3RfYnVmKSA8IDApIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWlmIChyZXR2YWwgPT0gRU5PRU5UKSB7CisjaWZkZWYgREVCVUcKKwkJCXByaW50ZigiQm9ndXMgZW50cnkgaW4gJXMhICAoJXMgZG9lcyBub3QgZXhpc3QpXG4iLAorCQkJICAgICAgIG10YWJfZmlsZSwgbW50LT5tbnRfZGlyKTsKKyNlbmRpZiAvKiBERUJVRyAqLworCQkJcmV0dmFsID0gMDsKKwkJfQorCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKGZpbGVfcmRldiAmJiAoc3RfYnVmLnN0X2RldiAhPSBmaWxlX3JkZXYpKSB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJCb2d1cyBlbnRyeSBpbiAlcyEgICglcyBub3QgbW91bnRlZCBvbiAlcylcbiIsCisJCSAgICAgICBtdGFiX2ZpbGUsIGZpbGUsIG1udC0+bW50X2Rpcik7CisjZW5kaWYgLyogREVCVUcgKi8KKwkJZ290byBlcnJvdXQ7CisJfQorI2VuZGlmIC8qIF9fR05VX18gKi8KKwkqbW91bnRfZmxhZ3MgPSBFWFQyX01GX01PVU5URUQ7CisKKyNpZmRlZiBNTlRPUFRfUk8KKwkvKiBDaGVjayB0byBzZWUgaWYgdGhlIHJvIG9wdGlvbiBpcyBzZXQgKi8KKwlpZiAoaGFzbW50b3B0KG1udCwgTU5UT1BUX1JPKSkKKwkJKm1vdW50X2ZsYWdzIHw9IEVYVDJfTUZfUkVBRE9OTFk7CisjZW5kaWYKKworCWlmIChtdHB0KQorCQlzdHJuY3B5KG10cHQsIG1udC0+bW50X2RpciwgbXRsZW4pOworCS8qCisJICogQ2hlY2sgdG8gc2VlIGlmIHdlJ3JlIHJlZmVycmluZyB0byB0aGUgcm9vdCBmaWxlc3lzdGVtLgorCSAqIElmIHNvLCBkbyBhIG1hbnVhbCBjaGVjayB0byBzZWUgaWYgd2UgY2FuIG9wZW4gL2V0Yy9tdGFiCisJICogcmVhZC93cml0ZSwgc2luY2UgaWYgdGhlIHJvb3QgaXMgbW91bnRlZCByZWFkL29ubHksIHRoZQorCSAqIGNvbnRlbnRzIG9mIC9ldGMvbXRhYiBtYXkgbm90IGJlIGFjY3VyYXRlLgorCSAqLworCWlmICghc3RyY21wKG1udC0+bW50X2RpciwgIi8iKSkgeworaXNfcm9vdDoKKyNkZWZpbmUgVEVTVF9GSUxFICIvLmlzbW91bnQtdGVzdC1maWxlIgorCQkqbW91bnRfZmxhZ3MgfD0gRVhUMl9NRl9JU1JPT1Q7CisJCWZkID0gb3BlbihURVNUX0ZJTEUsIE9fUkRXUnxPX0NSRUFULCAwNjAwKTsKKwkJaWYgKGZkIDwgMCkgeworCQkJaWYgKGVycm5vID09IEVST0ZTKQorCQkJCSptb3VudF9mbGFncyB8PSBFWFQyX01GX1JFQURPTkxZOworCQl9IGVsc2UKKwkJCWNsb3NlKGZkKTsKKwkJKHZvaWQpIHVubGluayhURVNUX0ZJTEUpOworCX0KKwlyZXR2YWwgPSAwOworZXJyb3V0OgorCWVuZG1udGVudCAoZik7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCBjaGVja19tbnRlbnQoY29uc3QgY2hhciAqZmlsZSwgaW50ICptb3VudF9mbGFncywKKwkJCSAgICAgIGNoYXIgKm10cHQsIGludCBtdGxlbikKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisjaWZkZWYgREVCVUcKKwlyZXR2YWwgPSBjaGVja19tbnRlbnRfZmlsZSgiL3RtcC9tdGFiIiwgZmlsZSwgbW91bnRfZmxhZ3MsCisJCQkJICAgbXRwdCwgbXRsZW4pOworCWlmIChyZXR2YWwgPT0gMCkKKwkJcmV0dXJuIDA7CisjZW5kaWYgLyogREVCVUcgKi8KKyNpZmRlZiBfX2xpbnV4X18KKwlyZXR2YWwgPSBjaGVja19tbnRlbnRfZmlsZSgiL3Byb2MvbW91bnRzIiwgZmlsZSwgbW91bnRfZmxhZ3MsCisJCQkJICAgbXRwdCwgbXRsZW4pOworCWlmIChyZXR2YWwgPT0gMCAmJiAoKm1vdW50X2ZsYWdzICE9IDApKQorCQlyZXR1cm4gMDsKKyNlbmRpZiAvKiBfX2xpbnV4X18gKi8KKyNpZiBkZWZpbmVkKE1PVU5URUQpIHx8IGRlZmluZWQoX1BBVEhfTU9VTlRFRCkKKyNpZm5kZWYgTU9VTlRFRAorI2RlZmluZSBNT1VOVEVEIF9QQVRIX01PVU5URUQKKyNlbmRpZiAvKiBNT1VOVEVEICovCisJcmV0dmFsID0gY2hlY2tfbW50ZW50X2ZpbGUoTU9VTlRFRCwgZmlsZSwgbW91bnRfZmxhZ3MsIG10cHQsIG10bGVuKTsKKwlyZXR1cm4gcmV0dmFsOworI2Vsc2UKKwkqbW91bnRfZmxhZ3MgPSAwOworCXJldHVybiAwOworI2VuZGlmIC8qIGRlZmluZWQoTU9VTlRFRCkgfHwgZGVmaW5lZChfUEFUSF9NT1VOVEVEKSAqLworfQorCisjZWxzZQorI2lmIGRlZmluZWQoSEFWRV9HRVRNTlRJTkZPKQorCitzdGF0aWMgZXJyY29kZV90IGNoZWNrX2dldG1udGluZm8oY29uc3QgY2hhciAqZmlsZSwgaW50ICptb3VudF9mbGFncywKKwkJCQkgIGNoYXIgKm10cHQsIGludCBtdGxlbikKK3sKKwlzdHJ1Y3Qgc3RhdGZzICptcDsKKyAgICAgICAgaW50ICAgIGxlbiwgbjsKKyAgICAgICAgY29uc3QgIGNoYXIgICAqczE7CisJY2hhcgkqczI7CisKKyAgICAgICAgbiA9IGdldG1udGluZm8oJm1wLCBNTlRfTk9XQUlUKTsKKyAgICAgICAgaWYgKG4gPT0gMCkKKwkJcmV0dXJuIGVycm5vOworCisgICAgICAgIGxlbiA9IHNpemVvZihfUEFUSF9ERVYpIC0gMTsKKyAgICAgICAgczEgPSBmaWxlOworICAgICAgICBpZiAoc3RybmNtcChfUEFUSF9ERVYsIHMxLCBsZW4pID09IDApCisgICAgICAgICAgICAgICAgczEgKz0gbGVuOworCisJKm1vdW50X2ZsYWdzID0gMDsKKyAgICAgICAgd2hpbGUgKC0tbiA+PSAwKSB7CisgICAgICAgICAgICAgICAgczIgPSBtcC0+Zl9tbnRmcm9tbmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoc3RybmNtcChfUEFUSF9ERVYsIHMyLCBsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMyICs9IGxlbiAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAqczIgPSAncic7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoczEsIHMyKSA9PSAwIHx8IHN0cmNtcChzMSwgJnMyWzFdKSA9PSAwKSB7CisJCQkqbW91bnRfZmxhZ3MgPSBFWFQyX01GX01PVU5URUQ7CisJCQlicmVhazsKKwkJfQorICAgICAgICAgICAgICAgICsrbXA7CisJfQorCWlmIChtdHB0KQorCQlzdHJuY3B5KG10cHQsIG1wLT5mX21udG9ubmFtZSwgbXRsZW4pOworCXJldHVybiAwOworfQorI2VuZGlmIC8qIEhBVkVfR0VUTU5USU5GTyAqLworI2VuZGlmIC8qIEhBVkVfU0VUTU5URU5UICovCisKKy8qCisgKiBDaGVjayB0byBzZWUgaWYgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBzd2FwIGRldmljZS4KKyAqLworc3RhdGljIGludCBpc19zd2FwX2RldmljZShjb25zdCBjaGFyICpmaWxlKQoreworCUZJTEUJCSpmOworCWNoYXIJCWJ1ZlsxMDI0XSwgKmNwOworCWRldl90CQlmaWxlX2RldjsKKwlzdHJ1Y3Qgc3RhdAlzdF9idWY7CisJaW50CQlyZXQgPSAwOworCisJZmlsZV9kZXYgPSAwOworI2lmbmRlZiBfX0dOVV9fIC8qIFRoZSBHTlUgaHVyZCBpcyBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHN0YXQgZGV2aWNlcyAqLworCWlmICgoc3RhdChmaWxlLCAmc3RfYnVmKSA9PSAwKSAmJgorCSAgICBTX0lTQkxLKHN0X2J1Zi5zdF9tb2RlKSkKKwkJZmlsZV9kZXYgPSBzdF9idWYuc3RfcmRldjsKKyNlbmRpZgkvKiBfX0dOVV9fICovCisKKwlpZiAoIShmID0gZm9wZW4oIi9wcm9jL3N3YXBzIiwgInIiKSkpCisJCXJldHVybiAwOworCS8qIFNraXAgdGhlIGZpcnN0IGxpbmUgKi8KKwlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpKQorCQlnb3RvIGxlYXZlOworCWlmICgqYnVmICYmIHN0cm5jbXAoYnVmLCAiRmlsZW5hbWVcdCIsIDkpKQorCQkvKiBMaW51eCA8PTIuNi4xOSBjb250YWluZWQgYSBidWcgaW4gdGhlIC9wcm9jL3N3YXBzCisJCSAqIGNvZGUgd2hlcmUgdGhlIGhlYWRlciB3b3VsZCBub3QgYmUgZGlzcGxheWVkCisJCSAqLworCQlnb3RvIHZhbGlkX2ZpcnN0X2xpbmU7CisKKwl3aGlsZSAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKK3ZhbGlkX2ZpcnN0X2xpbmU6CisJCWlmICgoY3AgPSBzdHJjaHIoYnVmLCAnICcpKSAhPSBOVUxMKQorCQkJKmNwID0gMDsKKwkJaWYgKChjcCA9IHN0cmNocihidWYsICdcdCcpKSAhPSBOVUxMKQorCQkJKmNwID0gMDsKKwkJaWYgKHN0cmNtcChidWYsIGZpbGUpID09IDApIHsKKwkJCXJldCsrOworCQkJYnJlYWs7CisJCX0KKyNpZm5kZWYgX19HTlVfXworCQlpZiAoZmlsZV9kZXYgJiYgKHN0YXQoYnVmLCAmc3RfYnVmKSA9PSAwKSAmJgorCQkgICAgU19JU0JMSyhzdF9idWYuc3RfbW9kZSkgJiYKKwkJICAgIGZpbGVfZGV2ID09IHN0X2J1Zi5zdF9yZGV2KSB7CisJCQlyZXQrKzsKKwkJCWJyZWFrOworCQl9CisjZW5kaWYgCS8qIF9fR05VX18gKi8KKwl9CisKK2xlYXZlOgorCWZjbG9zZShmKTsKKwlyZXR1cm4gcmV0OworfQorCisKKy8qCisgKiBleHQyZnNfY2hlY2tfbW91bnRfcG9pbnQoKSBmaWxscyBkZXRlcm1pbmVzIGlmIHRoZSBkZXZpY2UgaXMKKyAqIG1vdW50ZWQgb3Igb3RoZXJ3aXNlIGJ1c3ksIGFuZCBmaWxscyBpbiBtb3VudF9mbGFncyB3aXRoIG9uZSBvcgorICogbW9yZSBvZiB0aGUgZm9sbG93aW5nIGZsYWdzOiBFWFQyX01GX01PVU5URUQsIEVYVDJfTUZfSVNST09ULAorICogRVhUMl9NRl9SRUFET05MWSwgRVhUMl9NRl9TV0FQLCBhbmQgRVhUMl9NRl9CVVNZLiAgSWYgbXRwdCBpcworICogbm9uLU5VTEwsIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRldmljZSBpcyBtb3VudGVkIGlzIGNvcGllZCB0bworICogd2hlcmUgbXRwdCBpcyBwb2ludGluZywgdXAgdG8gbXRsZW4gY2hhcmFjdGVycy4KKyAqLworI2lmZGVmIF9fVFVSQk9DX18KKyAjcHJhZ21hIGFyZ3N1c2VkCisjZW5kaWYKK2VycmNvZGVfdCBleHQyZnNfY2hlY2tfbW91bnRfcG9pbnQoY29uc3QgY2hhciAqZGV2aWNlLCBpbnQgKm1vdW50X2ZsYWdzLAorCQkJCSAgY2hhciAqbXRwdCwgaW50IG10bGVuKQoreworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJaWYgKGdldGVudigiRVhUMkZTX1BSRVRFTkRfUk9fTU9VTlQiKSkgeworCQkqbW91bnRfZmxhZ3MgPSBFWFQyX01GX01PVU5URUQgfCBFWFQyX01GX1JFQURPTkxZOworCQlpZiAoZ2V0ZW52KCJFWFQyRlNfUFJFVEVORF9ST09URlMiKSkKKwkJCSptb3VudF9mbGFncyA9IEVYVDJfTUZfSVNST09UOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKGdldGVudigiRVhUMkZTX1BSRVRFTkRfUldfTU9VTlQiKSkgeworCQkqbW91bnRfZmxhZ3MgPSBFWFQyX01GX01PVU5URUQ7CisJCWlmIChnZXRlbnYoIkVYVDJGU19QUkVURU5EX1JPT1RGUyIpKQorCQkJKm1vdW50X2ZsYWdzID0gRVhUMl9NRl9JU1JPT1Q7CisJCXJldHVybiAwOworCX0KKworCWlmIChpc19zd2FwX2RldmljZShkZXZpY2UpKSB7CisJCSptb3VudF9mbGFncyA9IEVYVDJfTUZfTU9VTlRFRCB8IEVYVDJfTUZfU1dBUDsKKwkJc3RybmNweShtdHB0LCAiPHN3YXA+IiwgbXRsZW4pOworCX0gZWxzZSB7CisjaWZkZWYgSEFWRV9TRVRNTlRFTlQKKwkJcmV0dmFsID0gY2hlY2tfbW50ZW50KGRldmljZSwgbW91bnRfZmxhZ3MsIG10cHQsIG10bGVuKTsKKyNlbHNlCisjaWZkZWYgSEFWRV9HRVRNTlRJTkZPCisJCXJldHZhbCA9IGNoZWNrX2dldG1udGluZm8oZGV2aWNlLCBtb3VudF9mbGFncywgbXRwdCwgbXRsZW4pOworI2Vsc2UKKyNpZmRlZiBfX0dOVUNfXworICN3YXJuaW5nICJDYW4ndCB1c2UgZ2V0bW50ZW50IG9yIGdldG1udGluZm8gdG8gY2hlY2sgZm9yIG1vdW50ZWQgZmlsZXN5c3RlbXMhIgorI2VuZGlmCisJCSptb3VudF9mbGFncyA9IDA7CisjZW5kaWYgLyogSEFWRV9HRVRNTlRJTkZPICovCisjZW5kaWYgLyogSEFWRV9TRVRNTlRFTlQgKi8KKwl9CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworI2lmZGVmIF9fbGludXhfXyAvKiBUaGlzIG9ubHkgd29ya3Mgb24gTGludXggMi42KyBzeXN0ZW1zICovCisJeworCQlzdHJ1Y3Qgc3RhdCBzdF9idWY7CisKKwkJaWYgKHN0YXQoZGV2aWNlLCAmc3RfYnVmKSA9PSAwICYmIFNfSVNCTEsoc3RfYnVmLnN0X21vZGUpKSB7CisJCQlpbnQgZmQgPSBvcGVuKGRldmljZSwgT19SRE9OTFkgfCBPX0VYQ0wpOworCisJCQlpZiAoZmQgPj0gMCkKKwkJCQljbG9zZShmZCk7CisJCQllbHNlIGlmIChlcnJubyA9PSBFQlVTWSkKKwkJCQkqbW91bnRfZmxhZ3MgfD0gRVhUMl9NRl9CVVNZOworCQl9CisJfQorI2VuZGlmCisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGV4dDJmc19jaGVja19pZl9tb3VudGVkKCkgc2V0cyB0aGUgbW91bnRfZmxhZ3MgRVhUMl9NRl9NT1VOVEVELAorICogRVhUMl9NRl9SRUFET05MWSwgYW5kIEVYVDJfTUZfUk9PVAorICoKKyAqLworZXJyY29kZV90IGV4dDJmc19jaGVja19pZl9tb3VudGVkKGNvbnN0IGNoYXIgKmZpbGUsIGludCAqbW91bnRfZmxhZ3MpCit7CisJcmV0dXJuIGV4dDJmc19jaGVja19tb3VudF9wb2ludChmaWxlLCBtb3VudF9mbGFncywgTlVMTCwgMCk7Cit9CisKKyNpZmRlZiBERUJVRworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAlyZXR2YWwsIG1vdW50X2ZsYWdzOworCWNoYXIJbW50cHRbODBdOworCisJaWYgKGFyZ2MgPCAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGRldmljZVxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCisJYWRkX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKwltbnRwdFswXSA9IDA7CisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX21vdW50X3BvaW50KGFyZ3ZbMV0sICZtb3VudF9mbGFncywKKwkJCQkJICBtbnRwdCwgc2l6ZW9mKG1udHB0KSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCSJ3aGlsZSBjYWxsaW5nIGV4dDJmc19jaGVja19pZl9tb3VudGVkIik7CisJCWV4aXQoMSk7CisJfQorCXByaW50ZigiRGV2aWNlICVzIHJlcG9ydHMgZmxhZ3MgJTAyeFxuIiwgYXJndlsxXSwgbW91bnRfZmxhZ3MpOworCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfQlVTWSkKKwkJcHJpbnRmKCJcdCVzIGlzIGFwcGFyZW50bHkgaW4gdXNlLlxuIiwgYXJndlsxXSk7CisJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKQorCQlwcmludGYoIlx0JXMgaXMgbW91bnRlZC5cbiIsIGFyZ3ZbMV0pOworCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfU1dBUCkKKwkJcHJpbnRmKCJcdCVzIGlzIGEgc3dhcCBkZXZpY2UuXG4iLCBhcmd2WzFdKTsKKwlpZiAobW91bnRfZmxhZ3MgJiBFWFQyX01GX1JFQURPTkxZKQorCQlwcmludGYoIlx0JXMgaXMgcmVhZC1vbmx5LlxuIiwgYXJndlsxXSk7CisJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9JU1JPT1QpCisJCXByaW50ZigiXHQlcyBpcyB0aGUgcm9vdCBmaWxlc3lzdGVtLlxuIiwgYXJndlsxXSk7CisJaWYgKG1udHB0WzBdKQorCQlwcmludGYoIlx0JXMgaXMgbW91bnRlZCBvbiAlcy5cbiIsIGFyZ3ZbMV0sIG1udHB0KTsKKwlleGl0KDApOworfQorI2VuZGlmIC8qIERFQlVHICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9qZnNfY29tcGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhMDU5NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2pmc19jb21wYXQuaApAQCAtMCwwICsxLDEwMyBAQAorCisjaWZuZGVmIF9KRlNfQ09NUEFUX0gKKyNkZWZpbmUgX0pGU19DT01QQVRfSAorCisjaW5jbHVkZSAia2VybmVsLWxpc3QuaCIKKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisKKyNkZWZpbmUgcHJpbnRrIHByaW50ZgorI2RlZmluZSBLRVJOX0VSUiAiIgorI2RlZmluZSBLRVJOX0RFQlVHICIiCisKKyNkZWZpbmUgUkVBRCAwCisjZGVmaW5lIFdSSVRFIDEKKworI2RlZmluZSBjcHVfdG9fYmUzMihuKSBodG9ubChuKQorI2RlZmluZSBiZTMyX3RvX2NwdShuKSBudG9obChuKQorI2RlZmluZSBjcHVfdG9fYmUxNihuKSBodG9ucyhuKQorI2RlZmluZSBiZTE2X3RvX2NwdShuKSBudG9ocyhuKQorCit0eXBlZGVmIHVuc2lnbmVkIGludCB0aWRfdDsKK3R5cGVkZWYgc3RydWN0IGpvdXJuYWxfcyBqb3VybmFsX3Q7Cit0eXBlZGVmIHN0cnVjdCBrZGV2X3MgKmtkZXZfdDsKKworc3RydWN0IGJ1ZmZlcl9oZWFkOworc3RydWN0IGlub2RlOworCisjZGVmaW5lIEdGUF9LRVJORUwJMAorI2RlZmluZSBKRlNfVEFHX1NJWkUzMglKQkRfVEFHX1NJWkUzMgorI2RlZmluZSBKRlNfQkFSUklFUgkwCit0eXBlZGVmIF9fdTY0IHU2NDsKKyNkZWZpbmUgSkZTX0NSQzMyX0NIS1NVTQlKQkQyX0NSQzMyX0NIS1NVTQorI2RlZmluZSBKRlNfQ1JDMzJfQ0hLU1VNX1NJWkUJSkJEMl9DUkMzMl9DSEtTVU1fU0laRQorI2RlZmluZSBwdXRfYmgoeCkJYnJlbHNlKHgpCisjZGVmaW5lIGJlNjRfdG9fY3B1KHgpCWV4dDJmc19iZTY0X3RvX2NwdSh4KQorCitzdGF0aWMgaW5saW5lIF9fdTMyIGpiZDJfY2hrc3VtKGpvdXJuYWxfdCAqaiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJX191MzIgY3JjLCBjb25zdCB2b2lkICphZGRyZXNzLAorCQkJCXVuc2lnbmVkIGludCBsZW5ndGgpCit7CisJcmV0dXJuIGV4dDJmc19jcmMzMmNfbGUoY3JjLCBhZGRyZXNzLCBsZW5ndGgpOworfQorI2RlZmluZSBjcmMzMl9iZSh4LCB5LCB6KQlleHQyZnNfY3JjMzJfYmUoKHgpLCAoeSksICh6KSkKKyNkZWZpbmUgc3Bpbl9sb2NrX2luaXQoeCkKKyNkZWZpbmUgc3Bpbl9sb2NrKHgpCisjZGVmaW5lIHNwaW5fdW5sb2NrKHgpCisjZGVmaW5lIHlpZWxkKCkKKyNkZWZpbmUgU0xBQl9IV0NBQ0hFX0FMSUdOCTAKKyNkZWZpbmUgU0xBQl9URU1QT1JBUlkJCTAKKyNkZWZpbmUgS01FTV9DQUNIRShfX3N0cnVjdCwgX19mbGFncykga21lbV9jYWNoZV9jcmVhdGUoI19fc3RydWN0LFwKKyAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IF9fc3RydWN0KSwgX19hbGlnbm9mX18oc3RydWN0IF9fc3RydWN0KSxcCisgICAgICAgICAgICAgICAgKF9fZmxhZ3MpLCBOVUxMKQorCisjZGVmaW5lIGJsa2Rldl9pc3N1ZV9mbHVzaChrZGV2LCBhLCBiKQlzeW5jX2Jsb2NrZGV2KGtkZXYpCisjZGVmaW5lIGlzX3Bvd2VyX29mXzIoeCkJKCh4KSAhPSAwICYmICgoKHgpICYgKCh4KSAtIDEpKSA9PSAwKSkKKworc3RydWN0IGpvdXJuYWxfcworeworCXVuc2lnbmVkIGxvbmcJCWpfZmxhZ3M7CisJaW50CQkJal9lcnJubzsKKwlzdHJ1Y3QgYnVmZmVyX2hlYWQgKglqX3NiX2J1ZmZlcjsKKwlzdHJ1Y3Qgam91cm5hbF9zdXBlcmJsb2NrX3MgKmpfc3VwZXJibG9jazsKKwlpbnQJCQlqX2Zvcm1hdF92ZXJzaW9uOworCXVuc2lnbmVkIGxvbmcJCWpfaGVhZDsKKwl1bnNpZ25lZCBsb25nCQlqX3RhaWw7CisJdW5zaWduZWQgbG9uZwkJal9mcmVlOworCXVuc2lnbmVkIGxvbmcJCWpfZmlyc3QsIGpfbGFzdDsKKwlrZGV2X3QJCQlqX2RldjsKKwlrZGV2X3QJCQlqX2ZzX2RldjsKKwlpbnQJCQlqX2Jsb2Nrc2l6ZTsKKwl1bnNpZ25lZCBpbnQJCWpfYmxrX29mZnNldDsKKwl1bnNpZ25lZCBpbnQJCWpfbWF4bGVuOworCXN0cnVjdCBpbm9kZSAqCQlqX2lub2RlOworCXRpZF90CQkJal90YWlsX3NlcXVlbmNlOworCXRpZF90CQkJal90cmFuc2FjdGlvbl9zZXF1ZW5jZTsKKwlfX3U4CQkJal91dWlkWzE2XTsKKwlzdHJ1Y3QgamJkMl9yZXZva2VfdGFibGVfcyAqal9yZXZva2U7CisJc3RydWN0IGpiZDJfcmV2b2tlX3RhYmxlX3MgKmpfcmV2b2tlX3RhYmxlWzJdOworCXRpZF90CQkJal9mYWlsZWRfY29tbWl0OworCV9fdTMyCQkJal9jc3VtX3NlZWQ7Cit9OworCisjZGVmaW5lIEpfQVNTRVJUKGFzc2VydCkJCQkJCQlcCisJZG8geyBpZiAoIShhc3NlcnQpKSB7CQkJCQkJXAorCQlwcmludGYgKCJBc3NlcnRpb24gZmFpbHVyZSBpbiAlcygpIGF0ICVzIGxpbmUgJWQ6ICIJXAorCQkJIlwiJXNcIlxuIiwJCQkJCVwKKwkJCV9fRlVOQ1RJT05fXywgX19GSUxFX18sIF9fTElORV9fLCAjIGFzc2VydCk7CVwKKwkJZmF0YWxfZXJyb3IoZTJmc2NrX2dsb2JhbF9jdHgsIDApOwkJCVwKKwl9IH0gd2hpbGUgKDApCisKKyNkZWZpbmUgaXNfam91cm5hbF9hYm9ydCh4KSAwCisKKyNkZWZpbmUgQlVGRkVSX1RSQUNFKGJoLCBpbmZvKQlkbyB7fSB3aGlsZSAoMCkKKworLyogTmVlZCB0aGlzIHNvIHdlIGNhbiBjb21waWxlIHdpdGggY29uZmlndXJlIC0tZW5hYmxlLWdjYy13YWxsICovCisjaWZkZWYgTk9fSU5MSU5FX0ZVTkNTCisjZGVmaW5lIGlubGluZQorI2VuZGlmCisKKyNlbmRpZiAvKiBfSkZTX0NPTVBBVF9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9qZnNfZGF0LmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9qZnNfZGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI3NzhjNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2pmc19kYXQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogamZzX2RhdC5oIC0tLSBzdHJpcHBlZCBkb3duIGhlYWRlciBmaWxlIHdoaWNoIG9ubHkgY29udGFpbnMgdGhlIEpGUworICogCW9uLWRpc2sgZGF0YSBzdHJ1Y3R1cmVzCisgKi8KKworI2RlZmluZSBKRlNfTUFHSUNfTlVNQkVSIDB4YzAzYjM5OThVIC8qIFRoZSBmaXJzdCA0IGJ5dGVzIG9mIC9kZXYvcmFuZG9tISAqLworCisvKgorICogT24tZGlzayBzdHJ1Y3R1cmVzCisgKi8KKworLyoKKyAqIERlc2NyaXB0b3IgYmxvY2sgdHlwZXM6CisgKi8KKworI2RlZmluZSBKRlNfREVTQ1JJUFRPUl9CTE9DSwkxCisjZGVmaW5lIEpGU19DT01NSVRfQkxPQ0sJMgorI2RlZmluZSBKRlNfU1VQRVJCTE9DSwkJMworCisvKgorICogU3RhbmRhcmQgaGVhZGVyIGZvciBhbGwgZGVzY3JpcHRvciBibG9ja3M6CisgKi8KK3R5cGVkZWYgc3RydWN0IGpvdXJuYWxfaGVhZGVyX3MKK3sKKwlfX3UzMgkJaF9tYWdpYzsKKwlfX3UzMgkJaF9ibG9ja3R5cGU7CisJX191MzIJCWhfc2VxdWVuY2U7Cit9IGpvdXJuYWxfaGVhZGVyX3Q7CisKKworLyoKKyAqIFRoZSBibG9jayB0YWc6IHVzZWQgdG8gZGVzY3JpYmUgYSBzaW5nbGUgYnVmZmVyIGluIHRoZSBqb3VybmFsCisgKi8KK3R5cGVkZWYgc3RydWN0IGpvdXJuYWxfYmxvY2tfdGFnX3MKK3sKKwlfX3UzMgkJdF9ibG9ja25yOwkvKiBUaGUgb24tZGlzayBibG9jayBudW1iZXIgKi8KKwlfX3UzMgkJdF9mbGFnczsJLyogU2VlIGJlbG93ICovCit9IGpvdXJuYWxfYmxvY2tfdGFnX3Q7CisKKy8qIERlZmluaXRpb25zIGZvciB0aGUgam91cm5hbCB0YWcgZmxhZ3Mgd29yZDogKi8KKyNkZWZpbmUgSkZTX0ZMQUdfRVNDQVBFCQkxCS8qIG9uLWRpc2sgYmxvY2sgaXMgZXNjYXBlZCAqLworI2RlZmluZSBKRlNfRkxBR19TQU1FX1VVSUQJMgkvKiBibG9jayBoYXMgc2FtZSB1dWlkIGFzIHByZXZpb3VzICovCisjZGVmaW5lIEpGU19GTEFHX0RFTEVURUQJNAkvKiBibG9jayBkZWxldGVkIGJ5IHRoaXMgdHJhbnNhY3Rpb24gKi8KKyNkZWZpbmUgSkZTX0ZMQUdfTEFTVF9UQUcJOAkvKiBsYXN0IHRhZyBpbiB0aGlzIGRlc2NyaXB0b3IgYmxvY2sgKi8KKworCisvKgorICogVGhlIGpvdXJuYWwgc3VwZXJibG9jaworICovCit0eXBlZGVmIHN0cnVjdCBqb3VybmFsX3N1cGVyYmxvY2tfcworeworCWpvdXJuYWxfaGVhZGVyX3Qgc19oZWFkZXI7CisKKwkvKiBTdGF0aWMgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgam91cm5hbCAqLworCV9fdTMyCQlzX2Jsb2Nrc2l6ZTsJLyogam91cm5hbCBkZXZpY2UgYmxvY2tzaXplICovCisJX191MzIJCXNfbWF4bGVuOwkvKiB0b3RhbCBibG9ja3MgaW4gam91cm5hbCBmaWxlICovCisJX191MzIJCXNfZmlyc3Q7CS8qIGZpcnN0IGJsb2NrIG9mIGxvZyBpbmZvcm1hdGlvbiAqLworCisJLyogRHluYW1pYyBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBsb2cgKi8KKwlfX3UzMgkJc19zZXF1ZW5jZTsJLyogZmlyc3QgY29tbWl0IElEIGV4cGVjdGVkIGluIGxvZyAqLworCV9fdTMyCQlzX3N0YXJ0OwkvKiBibG9ja25yIG9mIHN0YXJ0IG9mIGxvZyAqLworCit9IGpvdXJuYWxfc3VwZXJibG9ja190OworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9rZXJuZWwtamJkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc1MDdiNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2tlcm5lbC1qYmQuaApAQCAtMCwwICsxLDQ2MSBAQAorLyoKKyAqIGxpbnV4L2luY2x1ZGUvbGludXgvamJkLmgKKyAqCisgKiBXcml0dGVuIGJ5IFN0ZXBoZW4gQy4gVHdlZWRpZSA8c2N0QHJlZGhhdC5jb20+CisgKgorICogQ29weXJpZ2h0IDE5OTgtMjAwMCBSZWQgSGF0LCBJbmMgLS0tIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgTGludXgga2VybmVsIGFuZCBpcyBtYWRlIGF2YWlsYWJsZSB1bmRlcgorICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLCBvciBhdCB5b3VyCisgKiBvcHRpb24sIGFueSBsYXRlciB2ZXJzaW9uLCBpbmNvcnBvcmF0ZWQgaGVyZWluIGJ5IHJlZmVyZW5jZS4KKyAqCisgKiBEZWZpbml0aW9ucyBmb3IgdHJhbnNhY3Rpb24gZGF0YSBzdHJ1Y3R1cmVzIGZvciB0aGUgYnVmZmVyIGNhY2hlCisgKiBmaWxlc3lzdGVtIGpvdXJuYWxpbmcgc3VwcG9ydC4KKyAqLworCisjaWZuZGVmIF9MSU5VWF9KQkRfSAorI2RlZmluZSBfTElOVVhfSkJEX0gKKworI2luY2x1ZGUgImpmc19jb21wYXQuaCIKKyNkZWZpbmUgSkZTX0RFQlVHCisjZGVmaW5lIGpmc19kZWJ1ZyBqYmRfZGVidWcKKworI2lmbmRlZiBfX0dOVUNfXworI2RlZmluZSBfX0ZVTkNUSU9OX18gIiIKKyNlbmRpZgorCisjZGVmaW5lIGpvdXJuYWxfb29tX3JldHJ5IDEKKworI2lmZGVmIF9fU1REQ19fCisjaWZkZWYgQ09ORklHX0pCRF9ERUJVRworLyoKKyAqIERlZmluZSBKQkRfRVhQRU5TSVZFX0NIRUNLSU5HIHRvIGVuYWJsZSBtb3JlIGV4cGVuc2l2ZSBpbnRlcm5hbAorICogY29uc2lzdGVuY3kgY2hlY2tzLiAgQnkgZGVmYXVsdCB3ZSBkb24ndCBkbyB0aGlzIHVubGVzcworICogQ09ORklHX0pCRF9ERUJVRyBpcyBvbi4KKyAqLworI2RlZmluZSBKQkRfRVhQRU5TSVZFX0NIRUNLSU5HCitleHRlcm4gaW50IGpvdXJuYWxfZW5hYmxlX2RlYnVnOworCisjZGVmaW5lIGpiZF9kZWJ1ZyhuLCBmLCBhLi4uKQkJCQkJCVwKKwlkbyB7CQkJCQkJCQlcCisJCWlmICgobikgPD0gam91cm5hbF9lbmFibGVfZGVidWcpIHsJCQlcCisJCQlwcmludGsgKEtFUk5fREVCVUcgIiglcywgJWQpOiAlczogIiwJCVwKKwkJCQlfX0ZJTEVfXywgX19MSU5FX18sIF9fRlVOQ1RJT05fXyk7CVwKKwkJICAJcHJpbnRrIChmLCAjIyBhKTsJCQkJXAorCQl9CQkJCQkJCVwKKwl9IHdoaWxlICgwKQorI2Vsc2UKKyNpZmRlZiBfX0dOVUNfXworI2lmIGRlZmluZWQoX19LRVJORUxfXykgfHwgIWRlZmluZWQoQ09ORklHX0pCRF9ERUJVRykKKyNkZWZpbmUgamJkX2RlYnVnKGYsIGEuLi4pCS8qKi8KKyNlbHNlCitleHRlcm4gaW50IGpvdXJuYWxfZW5hYmxlX2RlYnVnOworI2RlZmluZSBqYmRfZGVidWcobiwgZiwgYS4uLikJCQkJCQlcCisJZG8gewkJCQkJCQkJXAorCQlpZiAoKG4pIDw9IGpvdXJuYWxfZW5hYmxlX2RlYnVnKSB7CQkJXAorCQkJcHJpbnRmKCIoJXMsICVkKTogJXM6ICIsCQkJXAorCQkJCV9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18pOwkJXAorCQkJcHJpbnRmKGYsICMjIGEpOwkJCQlcCisJCX0JCQkJCQkJXAorCX0gd2hpbGUgKDApCisjZW5kaWYgLypfX0tFUk5FTF9fICovCisjZWxzZQorI2RlZmluZSBqYmRfZGVidWcoZiwgLi4uKQkvKiovCisjZW5kaWYKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgamJkX2RlYnVnKHgpCQkvKiBBSVggZG9lc24ndCBkbyBTVERDICovCisjZW5kaWYKKworZXh0ZXJuIHZvaWQgKiBfX2piZF9rbWFsbG9jIChjaGFyICp3aGVyZSwgc2l6ZV90IHNpemUsIGludCBmbGFncywgaW50IHJldHJ5KTsKKyNkZWZpbmUgamJkX2ttYWxsb2Moc2l6ZSwgZmxhZ3MpIFwKKwlfX2piZF9rbWFsbG9jKF9fRlVOQ1RJT05fXywgKHNpemUpLCAoZmxhZ3MpLCBqb3VybmFsX29vbV9yZXRyeSkKKyNkZWZpbmUgamJkX3JlcF9rbWFsbG9jKHNpemUsIGZsYWdzKSBcCisJX19qYmRfa21hbGxvYyhfX0ZVTkNUSU9OX18sIChzaXplKSwgKGZsYWdzKSwgMSkKKworI2RlZmluZSBKRlNfTUlOX0pPVVJOQUxfQkxPQ0tTIDEwMjQKKworLyoKKyAqIEludGVybmFsIHN0cnVjdHVyZXMgdXNlZCBieSB0aGUgbG9nZ2luZyBtZWNoYW5pc206CisgKi8KKworI2RlZmluZSBKRlNfTUFHSUNfTlVNQkVSIDB4YzAzYjM5OThVIC8qIFRoZSBmaXJzdCA0IGJ5dGVzIG9mIC9kZXYvcmFuZG9tISAqLworCisvKgorICogT24tZGlzayBzdHJ1Y3R1cmVzCisgKi8KKworLyoKKyAqIERlc2NyaXB0b3IgYmxvY2sgdHlwZXM6CisgKi8KKworI2RlZmluZSBKRlNfREVTQ1JJUFRPUl9CTE9DSwkxCisjZGVmaW5lIEpGU19DT01NSVRfQkxPQ0sJMgorI2RlZmluZSBKRlNfU1VQRVJCTE9DS19WMQkzCisjZGVmaW5lIEpGU19TVVBFUkJMT0NLX1YyCTQKKyNkZWZpbmUgSkZTX1JFVk9LRV9CTE9DSwk1CisKKy8qCisgKiBTdGFuZGFyZCBoZWFkZXIgZm9yIGFsbCBkZXNjcmlwdG9yIGJsb2NrczoKKyAqLwordHlwZWRlZiBzdHJ1Y3Qgam91cm5hbF9oZWFkZXJfcworeworCV9fdTMyCQloX21hZ2ljOworCV9fdTMyCQloX2Jsb2NrdHlwZTsKKwlfX3UzMgkJaF9zZXF1ZW5jZTsKK30gam91cm5hbF9oZWFkZXJfdDsKKworLyoKKyAqIENoZWNrc3VtIHR5cGVzLgorICovCisjZGVmaW5lIEpCRDJfQ1JDMzJfQ0hLU1VNICAgMQorI2RlZmluZSBKQkQyX01ENV9DSEtTVU0gICAgIDIKKyNkZWZpbmUgSkJEMl9TSEExX0NIS1NVTSAgICAzCisjZGVmaW5lIEpCRDJfQ1JDMzJDX0NIS1NVTSAgNAorCisjZGVmaW5lIEpCRDJfQ1JDMzJfQ0hLU1VNX1NJWkUgNAorCisjZGVmaW5lIEpCRDJfQ0hFQ0tTVU1fQllURVMgKDMyIC8gc2l6ZW9mKF9fdTMyKSkKKy8qCisgKiBDb21taXQgYmxvY2sgaGVhZGVyIGZvciBzdG9yaW5nIHRyYW5zYWN0aW9uYWwgY2hlY2tzdW1zOgorICoKKyAqIE5PVEU6IElmIEZFQVRVUkVfQ09NUEFUX0NIRUNLU1VNIChjaGVja3N1bSB2MSkgaXMgc2V0LCB0aGUgaF9jaGtzdW0qCisgKiBmaWVsZHMgYXJlIHVzZWQgdG8gc3RvcmUgYSBjaGVja3N1bSBvZiB0aGUgZGVzY3JpcHRvciBhbmQgZGF0YSBibG9ja3MuCisgKgorICogSWYgRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1YyIChjaGVja3N1bSB2MikgaXMgc2V0LCB0aGVuIHRoZSBoX2Noa3N1bQorICogZmllbGQgaXMgdXNlZCB0byBzdG9yZSBjcmMzMmModXVpZCtjb21taXRfYmxvY2spLiAgRWFjaCBqb3VybmFsIG1ldGFkYXRhCisgKiBibG9jayBnZXRzIGl0cyBvd24gY2hlY2tzdW0sIGFuZCBkYXRhIGJsb2NrIGNoZWNrc3VtcyBhcmUgc3RvcmVkIGluCisgKiBqb3VybmFsX2Jsb2NrX3RhZyAoaW4gdGhlIGRlc2NyaXB0b3IpLiAgVGhlIG90aGVyIGhfY2hrc3VtKiBmaWVsZHMgYXJlCisgKiBub3QgdXNlZC4KKyAqCisgKiBJZiBGRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjMgaXMgc2V0LCB0aGUgZGVzY3JpcHRvciBibG9jayB1c2VzCisgKiBqb3VybmFsX2Jsb2NrX3RhZzNfdCB0byBzdG9yZSBhIGZ1bGwgMzItYml0IGNoZWNrc3VtLiAgRXZlcnl0aGluZyBlbHNlCisgKiBpcyB0aGUgc2FtZSBhcyB2Mi4KKyAqCisgKiBDaGVja3N1bSB2MSwgdjIsIGFuZCB2MyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIGZlYXR1cmVzLgorICovCitzdHJ1Y3QgY29tbWl0X2hlYWRlciB7CisJX191MzIJCWhfbWFnaWM7CisJX191MzIJCWhfYmxvY2t0eXBlOworCV9fdTMyCQloX3NlcXVlbmNlOworCXVuc2lnbmVkIGNoYXIJaF9jaGtzdW1fdHlwZTsKKwl1bnNpZ25lZCBjaGFyCWhfY2hrc3VtX3NpemU7CisJdW5zaWduZWQgY2hhcgloX3BhZGRpbmdbMl07CisJX191MzIJCWhfY2hrc3VtW0pCRDJfQ0hFQ0tTVU1fQllURVNdOworCV9fdTY0CQloX2NvbW1pdF9zZWM7CisJX191MzIJCWhfY29tbWl0X25zZWM7Cit9OworCisvKgorICogVGhlIGJsb2NrIHRhZzogdXNlZCB0byBkZXNjcmliZSBhIHNpbmdsZSBidWZmZXIgaW4gdGhlIGpvdXJuYWwKKyAqLwordHlwZWRlZiBzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWczX3MKK3sKKwlfX3UzMgkJdF9ibG9ja25yOwkvKiBUaGUgb24tZGlzayBibG9jayBudW1iZXIgKi8KKwlfX3UzMgkJdF9mbGFnczsJLyogU2VlIGJlbG93ICovCisJX191MzIJCXRfYmxvY2tucl9oaWdoOyAvKiBtb3N0LXNpZ25pZmljYW50IGhpZ2ggMzJiaXRzLiAqLworCV9fdTMyCQl0X2NoZWNrc3VtOwkvKiBjcmMzMmModXVpZCtzZXErYmxvY2spICovCit9IGpvdXJuYWxfYmxvY2tfdGFnM190OworCit0eXBlZGVmIHN0cnVjdCBqb3VybmFsX2Jsb2NrX3RhZ19zCit7CisJX191MzIJCXRfYmxvY2tucjsJLyogVGhlIG9uLWRpc2sgYmxvY2sgbnVtYmVyICovCisJX191MTYJCXRfY2hlY2tzdW07CS8qIHRydW5jYXRlZCBjcmMzMmModXVpZCtzZXErYmxvY2spICovCisJX191MTYJCXRfZmxhZ3M7CS8qIFNlZSBiZWxvdyAqLworCV9fdTMyCQl0X2Jsb2NrbnJfaGlnaDsgLyogbW9zdC1zaWduaWZpY2FudCBoaWdoIDMyYml0cy4gKi8KK30gam91cm5hbF9ibG9ja190YWdfdDsKKworLyogVGFpbCBvZiBkZXNjcmlwdG9yIGJsb2NrLCBmb3IgY2hlY2tzdW1taW5nICovCitzdHJ1Y3Qgam91cm5hbF9ibG9ja190YWlsIHsKKwlfX2JlMzIJCXRfY2hlY2tzdW07Cit9OworCisvKgorICogVGhlIHJldm9rZSBkZXNjcmlwdG9yOiB1c2VkIG9uIGRpc2sgdG8gZGVzY3JpYmUgYSBzZXJpZXMgb2YgYmxvY2tzIHRvCisgKiBiZSByZXZva2VkIGZyb20gdGhlIGxvZworICovCit0eXBlZGVmIHN0cnVjdCBqb3VybmFsX3Jldm9rZV9oZWFkZXJfcworeworCWpvdXJuYWxfaGVhZGVyX3Qgcl9oZWFkZXI7CisJaW50CQkgcl9jb3VudDsJLyogQ291bnQgb2YgYnl0ZXMgdXNlZCBpbiB0aGUgYmxvY2sgKi8KK30gam91cm5hbF9yZXZva2VfaGVhZGVyX3Q7CisKKy8qIFRhaWwgb2YgcmV2b2tlIGJsb2NrLCBmb3IgY2hlY2tzdW1taW5nICovCitzdHJ1Y3Qgam91cm5hbF9yZXZva2VfdGFpbCB7CisJX19iZTMyCQlyX2NoZWNrc3VtOworfTsKKworLyogRGVmaW5pdGlvbnMgZm9yIHRoZSBqb3VybmFsIHRhZyBmbGFncyB3b3JkOiAqLworI2RlZmluZSBKRlNfRkxBR19FU0NBUEUJCTEJLyogb24tZGlzayBibG9jayBpcyBlc2NhcGVkICovCisjZGVmaW5lIEpGU19GTEFHX1NBTUVfVVVJRAkyCS8qIGJsb2NrIGhhcyBzYW1lIHV1aWQgYXMgcHJldmlvdXMgKi8KKyNkZWZpbmUgSkZTX0ZMQUdfREVMRVRFRAk0CS8qIGJsb2NrIGRlbGV0ZWQgYnkgdGhpcyB0cmFuc2FjdGlvbiAqLworI2RlZmluZSBKRlNfRkxBR19MQVNUX1RBRwk4CS8qIGxhc3QgdGFnIGluIHRoaXMgZGVzY3JpcHRvciBibG9jayAqLworCisKKyNkZWZpbmUgVVVJRF9TSVpFIDE2CisjZGVmaW5lIEpGU19VU0VSU19NQVggNDgKKyNkZWZpbmUgSkZTX1VTRVJTX1NJWkUgKFVVSURfU0laRSAqIEpGU19VU0VSU19NQVgpCisvKgorICogVGhlIGpvdXJuYWwgc3VwZXJibG9jay4gIEFsbCBmaWVsZHMgYXJlIGluIGJpZy1lbmRpYW4gYnl0ZSBvcmRlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgam91cm5hbF9zdXBlcmJsb2NrX3MKK3sKKy8qIDB4MDAwMCAqLworCWpvdXJuYWxfaGVhZGVyX3Qgc19oZWFkZXI7CisKKy8qIDB4MDAwQyAqLworCS8qIFN0YXRpYyBpbmZvcm1hdGlvbiBkZXNjcmliaW5nIHRoZSBqb3VybmFsICovCisJX191MzIJc19ibG9ja3NpemU7CQkvKiBqb3VybmFsIGRldmljZSBibG9ja3NpemUgKi8KKwlfX3UzMglzX21heGxlbjsJCS8qIHRvdGFsIGJsb2NrcyBpbiBqb3VybmFsIGZpbGUgKi8KKwlfX3UzMglzX2ZpcnN0OwkJLyogZmlyc3QgYmxvY2sgb2YgbG9nIGluZm9ybWF0aW9uICovCisKKy8qIDB4MDAxOCAqLworCS8qIER5bmFtaWMgaW5mb3JtYXRpb24gZGVzY3JpYmluZyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgbG9nICovCisJX191MzIJc19zZXF1ZW5jZTsJCS8qIGZpcnN0IGNvbW1pdCBJRCBleHBlY3RlZCBpbiBsb2cgKi8KKwlfX3UzMglzX3N0YXJ0OwkJLyogYmxvY2tuciBvZiBzdGFydCBvZiBsb2cgKi8KKworLyogMHgwMDIwICovCisJLyogRXJyb3IgdmFsdWUsIGFzIHNldCBieSBqb3VybmFsX2Fib3J0KCkuICovCisJX19zMzIJc19lcnJubzsKKworLyogMHgwMDI0ICovCisJLyogUmVtYWluaW5nIGZpZWxkcyBhcmUgb25seSB2YWxpZCBpbiBhIHZlcnNpb24tMiBzdXBlcmJsb2NrICovCisJX191MzIJc19mZWF0dXJlX2NvbXBhdDsgCS8qIGNvbXBhdGlibGUgZmVhdHVyZSBzZXQgKi8KKwlfX3UzMglzX2ZlYXR1cmVfaW5jb21wYXQ7IAkvKiBpbmNvbXBhdGlibGUgZmVhdHVyZSBzZXQgKi8KKwlfX3UzMglzX2ZlYXR1cmVfcm9fY29tcGF0OyAJLyogcmVhZG9ubHktY29tcGF0aWJsZSBmZWF0dXJlIHNldCAqLworLyogMHgwMDMwICovCisJX191OAlzX3V1aWRbMTZdOwkJLyogMTI4LWJpdCB1dWlkIGZvciBqb3VybmFsICovCisKKy8qIDB4MDA0MCAqLworCV9fdTMyCXNfbnJfdXNlcnM7CQkvKiBOciBvZiBmaWxlc3lzdGVtcyBzaGFyaW5nIGxvZyAqLworCisJX191MzIJc19keW5zdXBlcjsJCS8qIEJsb2NrbnIgb2YgZHluYW1pYyBzdXBlcmJsb2NrIGNvcHkqLworCisvKiAweDAwNDggKi8KKwlfX3UzMglzX21heF90cmFuc2FjdGlvbjsJLyogTGltaXQgb2Ygam91cm5hbCBibG9ja3MgcGVyIHRyYW5zLiovCisJX191MzIJc19tYXhfdHJhbnNfZGF0YTsJLyogTGltaXQgb2YgZGF0YSBibG9ja3MgcGVyIHRyYW5zLiAqLworCisvKiAweDAwNTAgKi8KKwlfX3U4CXNfY2hlY2tzdW1fdHlwZTsJLyogY2hlY2tzdW0gdHlwZSAqLworCV9fdTgJc19wYWRkaW5nMlszXTsKKwlfX3UzMglzX3BhZGRpbmdbNDJdOworCV9fdTMyCXNfY2hlY2tzdW07CQkvKiBjcmMzMmMoc3VwZXJibG9jaykgKi8KKworLyogMHgwMTAwICovCisJX191OAlzX3VzZXJzW0pGU19VU0VSU19TSVpFXTsJCS8qIGlkcyBvZiBhbGwgZnMnZXMgc2hhcmluZyB0aGUgbG9nICovCisKKy8qIDB4MDQwMCAqLworfSBqb3VybmFsX3N1cGVyYmxvY2tfdDsKKworI2RlZmluZSBKRlNfSEFTX0NPTVBBVF9GRUFUVVJFKGosbWFzaykJCQkJCVwKKwkoKGopLT5qX2Zvcm1hdF92ZXJzaW9uID49IDIgJiYJCQkJCVwKKwkgKChqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfY29tcGF0ICYgZXh0MmZzX2NwdV90b19iZTMyKChtYXNrKSkpKQorI2RlZmluZSBKRlNfSEFTX1JPX0NPTVBBVF9GRUFUVVJFKGosbWFzaykJCQkJXAorCSgoaiktPmpfZm9ybWF0X3ZlcnNpb24gPj0gMiAmJgkJCQkJXAorCSAoKGopLT5qX3N1cGVyYmxvY2stPnNfZmVhdHVyZV9yb19jb21wYXQgJiBleHQyZnNfY3B1X3RvX2JlMzIoKG1hc2spKSkpCisjZGVmaW5lIEpGU19IQVNfSU5DT01QQVRfRkVBVFVSRShqLG1hc2spCQkJCVwKKwkoKGopLT5qX2Zvcm1hdF92ZXJzaW9uID49IDIgJiYJCQkJCVwKKwkgKChqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfaW5jb21wYXQgJiBleHQyZnNfY3B1X3RvX2JlMzIoKG1hc2spKSkpCisKKyNkZWZpbmUgSkZTX0ZFQVRVUkVfQ09NUEFUX0NIRUNLU1VNCQkweDAwMDAwMDAxCisKKyNkZWZpbmUgSkZTX0ZFQVRVUkVfSU5DT01QQVRfUkVWT0tFCQkweDAwMDAwMDAxCisjZGVmaW5lIEpGU19GRUFUVVJFX0lOQ09NUEFUXzY0QklUCQkweDAwMDAwMDAyCisjZGVmaW5lIEpGU19GRUFUVVJFX0lOQ09NUEFUX0FTWU5DX0NPTU1JVAkweDAwMDAwMDA0CisjZGVmaW5lIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjIJCTB4MDAwMDAwMDgKKyNkZWZpbmUgSkZTX0ZFQVRVUkVfSU5DT01QQVRfQ1NVTV9WMwkJMHgwMDAwMDAxMAorCisvKiBGZWF0dXJlcyBrbm93biB0byB0aGlzIGtlcm5lbCB2ZXJzaW9uOiAqLworI2RlZmluZSBKRlNfS05PV05fQ09NUEFUX0ZFQVRVUkVTCTAKKyNkZWZpbmUgSkZTX0tOT1dOX1JPQ09NUEFUX0ZFQVRVUkVTCTAKKyNkZWZpbmUgSkZTX0tOT1dOX0lOQ09NUEFUX0ZFQVRVUkVTCShKRlNfRkVBVFVSRV9JTkNPTVBBVF9SRVZPS0V8XAorCQkJCQkgSkZTX0ZFQVRVUkVfSU5DT01QQVRfQVNZTkNfQ09NTUlUfFwKKwkJCQkJIEpGU19GRUFUVVJFX0lOQ09NUEFUXzY0QklUfFwKKwkJCQkJIEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjJ8XAorCQkJCQkgSkZTX0ZFQVRVUkVfSU5DT01QQVRfQ1NVTV9WMykKKworI2lmZGVmIE5PX0lOTElORV9GVU5DUworZXh0ZXJuIHNpemVfdCBqb3VybmFsX3RhZ19ieXRlcyhqb3VybmFsX3QgKmpvdXJuYWwpOworZXh0ZXJuIGludCBqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWxfdCAqam91cm5hbCk7CitleHRlcm4gaW50IHRpZF9ndCh0aWRfdCB4LCB0aWRfdCB5KSBFWFQyRlNfQVRUUigodW51c2VkKSk7CitleHRlcm4gaW50IHRpZF9nZXEodGlkX3QgeCwgdGlkX3QgeSkgRVhUMkZTX0FUVFIoKHVudXNlZCkpOworI2VuZGlmCisKKyNpZiAoZGVmaW5lZChFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MpIHx8ICFkZWZpbmVkKE5PX0lOTElORV9GVU5DUykpCisjaWZkZWYgRTJGU0NLX0lOQ0xVREVfSU5MSU5FX0ZVTkNTCisjaWYgKF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCkKKyNkZWZpbmUgX0lOTElORV8gZXh0ZXJuIGlubGluZQorI2Vsc2UKKyNkZWZpbmUgX0lOTElORV8gaW5saW5lCisjZW5kaWYKKyNlbHNlIC8qICFFMkZTQ0tfSU5DTFVERV9JTkxJTkUgRlVOQ1MgKi8KKyNpZiAoX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMKQorI2RlZmluZSBfSU5MSU5FXyBpbmxpbmUKKyNlbHNlIC8qIG5vdCBDOTkgKi8KKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBfSU5MSU5FXyBleHRlcm4gX19pbmxpbmVfXworI2Vsc2UJCQkJLyogRm9yIFdhdGNvbSBDICovCisjZGVmaW5lIF9JTkxJTkVfIGV4dGVybiBpbmxpbmUKKyNlbmRpZiAvKiBfX0dOVUNfXyAqLworI2VuZGlmIC8qIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTCAqLworI2VuZGlmIC8qIElOQ0xVREVfSU5MSU5FX0ZVTkNTICovCisKKy8qIGpvdXJuYWwgZmVhdHVyZSBwcmVkaWNhdGUgZnVuY3Rpb25zICovCisjZGVmaW5lIEpGU19GRUFUVVJFX0NPTVBBVF9GVU5DUyhuYW1lLCBmbGFnbmFtZSkgXAorX0lOTElORV8gaW50IGpmc19oYXNfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorX0lOTElORV8gaW50IGpmc19oYXNfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKSBcCit7IFwKKwlyZXR1cm4gKChqKS0+al9mb3JtYXRfdmVyc2lvbiA+PSAyICYmIFwKKwkJKChqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfY29tcGF0ICYgXAorCQkgZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0NPTVBBVF8jI2ZsYWduYW1lKSkgIT0gMCk7IFwKK30gXAorX0lOTElORV8gdm9pZCBqZnNfc2V0X2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7IFwKK19JTkxJTkVfIHZvaWQgamZzX3NldF9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopIFwKK3sgXAorCShqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfY29tcGF0IHw9IFwKKwkJZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0NPTVBBVF8jI2ZsYWduYW1lKTsgXAorfSBcCitfSU5MSU5FXyB2b2lkIGpmc19jbGVhcl9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopOyBcCitfSU5MSU5FXyB2b2lkIGpmc19jbGVhcl9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopIFwKK3sgXAorCShqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfY29tcGF0ICY9IFwKKwkJfmV4dDJmc19jcHVfdG9fYmUzMihKRlNfRkVBVFVSRV9DT01QQVRfIyNmbGFnbmFtZSk7IFwKK30KKworI2RlZmluZSBKRlNfRkVBVFVSRV9ST19DT01QQVRfRlVOQ1MobmFtZSwgZmxhZ25hbWUpIFwKK19JTkxJTkVfIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7CVwKK19JTkxJTkVfIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaikgXAoreyBcCisJcmV0dXJuICgoaiktPmpfZm9ybWF0X3ZlcnNpb24gPj0gMiAmJiBcCisJCSgoaiktPmpfc3VwZXJibG9jay0+c19mZWF0dXJlX3JvX2NvbXBhdCAmIFwKKwkJIGV4dDJmc19jcHVfdG9fYmUzMihKRlNfRkVBVFVSRV9ST19DT01QQVRfIyNmbGFnbmFtZSkpICE9IDApOyBcCit9IFwKK19JTkxJTkVfIHZvaWQgamZzX3NldF9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopOyBcCitfSU5MSU5FXyB2b2lkIGpmc19zZXRfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKSBcCit7IFwKKwkoaiktPmpfc3VwZXJibG9jay0+c19mZWF0dXJlX3JvX2NvbXBhdCB8PSBcCisJCWV4dDJmc19jcHVfdG9fYmUzMihKRlNfRkVBVFVSRV9ST19DT01QQVRfIyNmbGFnbmFtZSk7IFwKK30gXAorX0lOTElORV8gdm9pZCBqZnNfY2xlYXJfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorX0lOTElORV8gdm9pZCBqZnNfY2xlYXJfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKSBcCit7IFwKKwkoaiktPmpfc3VwZXJibG9jay0+c19mZWF0dXJlX3JvX2NvbXBhdCAmPSBcCisJCX5leHQyZnNfY3B1X3RvX2JlMzIoSkZTX0ZFQVRVUkVfUk9fQ09NUEFUXyMjZmxhZ25hbWUpOyBcCit9CisKKyNkZWZpbmUgSkZTX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MobmFtZSwgZmxhZ25hbWUpIFwKK19JTkxJTkVfIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7IFwKK19JTkxJTkVfIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaikgXAoreyBcCisJcmV0dXJuICgoaiktPmpfZm9ybWF0X3ZlcnNpb24gPj0gMiAmJiBcCisJCSgoaiktPmpfc3VwZXJibG9jay0+c19mZWF0dXJlX2luY29tcGF0ICYgXAorCQkgZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0lOQ09NUEFUXyMjZmxhZ25hbWUpKSAhPSAwKTsgXAorfSBcCitfSU5MSU5FXyB2b2lkIGpmc19zZXRfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorX0lOTElORV8gdm9pZCBqZnNfc2V0X2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaikgXAoreyBcCisJKGopLT5qX3N1cGVyYmxvY2stPnNfZmVhdHVyZV9pbmNvbXBhdCB8PSBcCisJCWV4dDJmc19jcHVfdG9fYmUzMihKRlNfRkVBVFVSRV9JTkNPTVBBVF8jI2ZsYWduYW1lKTsgXAorfSBcCitfSU5MSU5FXyB2b2lkIGpmc19jbGVhcl9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopOyBcCitfSU5MSU5FXyB2b2lkIGpmc19jbGVhcl9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopIFwKK3sgXAorCShqKS0+al9zdXBlcmJsb2NrLT5zX2ZlYXR1cmVfaW5jb21wYXQgJj0gXAorCQl+ZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0lOQ09NUEFUXyMjZmxhZ25hbWUpOyBcCit9CisKKyNlbHNlCisjZGVmaW5lIEpGU19GRUFUVVJFX0NPTVBBVF9GVU5DUyhuYW1lLCBmbGFnbmFtZSkgXAorZXh0ZXJuIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7IFwKK2V4dGVybiB2b2lkIGpmc19zZXRfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorZXh0ZXJuIHZvaWQgamZzX2NsZWFyX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7CisKKyNkZWZpbmUgSkZTX0ZFQVRVUkVfUk9fQ09NUEFUX0ZVTkNTKG5hbWUsIGZsYWduYW1lKSBcCitleHRlcm4gaW50IGpmc19oYXNfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorZXh0ZXJuIHZvaWQgamZzX3NldF9mZWF0dXJlXyMjbmFtZShqb3VybmFsX3QgKmopOyBcCitleHRlcm4gdm9pZCBqZnNfY2xlYXJfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsKKworI2RlZmluZSBKRlNfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhuYW1lLCBmbGFnbmFtZSkgXAorZXh0ZXJuIGludCBqZnNfaGFzX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7IFwKK2V4dGVybiB2b2lkIGpmc19zZXRfZmVhdHVyZV8jI25hbWUoam91cm5hbF90ICpqKTsgXAorZXh0ZXJuIHZvaWQgamZzX2NsZWFyX2ZlYXR1cmVfIyNuYW1lKGpvdXJuYWxfdCAqaik7CisKKyNlbmRpZiAvKiAoZGVmaW5lZChFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MpIHx8ICFkZWZpbmVkKE5PX0lOTElORV9GVU5DUykpICovCisKK0pGU19GRUFUVVJFX0NPTVBBVF9GVU5DUyhjaGVja3N1bSwJCUNIRUNLU1VNKQorCitKRlNfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhyZXZva2UsCQlSRVZPS0UpCitKRlNfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyg2NGJpdCwJCTY0QklUKQorSkZTX0ZFQVRVUkVfSU5DT01QQVRfRlVOQ1MoYXN5bmNfY29tbWl0LAlBU1lOQ19DT01NSVQpCitKRlNfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhjc3VtMiwJCUNTVU1fVjIpCitKRlNfRkVBVFVSRV9JTkNPTVBBVF9GVU5DUyhjc3VtMywJCUNTVU1fVjMpCisKKyNpZiAoZGVmaW5lZChFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MpIHx8ICFkZWZpbmVkKE5PX0lOTElORV9GVU5DUykpCisvKgorICogaGVscGVyIGZ1bmN0aW9ucyB0byBkZWFsIHdpdGggMzIgb3IgNjRiaXQgYmxvY2sgbnVtYmVycy4KKyAqLworX0lOTElORV8gc2l6ZV90IGpvdXJuYWxfdGFnX2J5dGVzKGpvdXJuYWxfdCAqam91cm5hbCkKK3sKKwlzaXplX3Qgc3o7CisKKwlpZiAoamZzX2hhc19mZWF0dXJlX2NzdW0zKGpvdXJuYWwpKQorCQlyZXR1cm4gc2l6ZW9mKGpvdXJuYWxfYmxvY2tfdGFnM190KTsKKworCXN6ID0gc2l6ZW9mKGpvdXJuYWxfYmxvY2tfdGFnX3QpOworCisJaWYgKGpmc19oYXNfZmVhdHVyZV9jc3VtMihqb3VybmFsKSkKKwkJc3ogKz0gc2l6ZW9mKF9fdTE2KTsKKworCWlmIChqZnNfaGFzX2ZlYXR1cmVfNjRiaXQoam91cm5hbCkpCisJCXJldHVybiBzejsKKworCXJldHVybiBzeiAtIHNpemVvZihfX3UzMik7Cit9CisKK19JTkxJTkVfIGludCBqb3VybmFsX2hhc19jc3VtX3Yyb3IzKGpvdXJuYWxfdCAqam91cm5hbCkKK3sKKwlpZiAoamZzX2hhc19mZWF0dXJlX2NzdW0yKGpvdXJuYWwpIHx8IGpmc19oYXNfZmVhdHVyZV9jc3VtMyhqb3VybmFsKSkKKwkJcmV0dXJuIDE7CisKKwlyZXR1cm4gMDsKK30KKworLyogQ29tcGFyaXNvbiBmdW5jdGlvbnMgZm9yIHRyYW5zYWN0aW9uIElEczogcGVyZm9ybSBjb21wYXJpc29ucyB1c2luZworICogbW9kdWxvIGFyaXRobWV0aWMgc28gdGhhdCB0aGV5IHdvcmsgb3ZlciBzZXF1ZW5jZSBudW1iZXIgd3JhcHMuICovCisKK19JTkxJTkVfIGludCB0aWRfZ3QodGlkX3QgeCwgdGlkX3QgeSkKK3sKKwlpbnQgZGlmZmVyZW5jZSA9ICh4IC0geSk7CisJcmV0dXJuIChkaWZmZXJlbmNlID4gMCk7Cit9CisKK19JTkxJTkVfIGludCB0aWRfZ2VxKHRpZF90IHgsIHRpZF90IHkpCit7CisJaW50IGRpZmZlcmVuY2UgPSAoeCAtIHkpOworCXJldHVybiAoZGlmZmVyZW5jZSA+PSAwKTsKK30KKyNlbmRpZiAvKiAoZGVmaW5lZChFMkZTQ0tfSU5DTFVERV9JTkxJTkVfRlVOQ1MpIHx8ICFkZWZpbmVkKE5PX0lOTElORV9GVU5DUykpICovCisKKyN1bmRlZiBfSU5MSU5FXworCitleHRlcm4gaW50IGpvdXJuYWxfYmxvY2tzX3Blcl9wYWdlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOworCisvKgorICogRGVmaW5pdGlvbnMgd2hpY2ggYXVnbWVudCB0aGUgYnVmZmVyX2hlYWQgbGF5ZXIKKyAqLworCisvKiBqb3VybmFsaW5nIGJ1ZmZlciB0eXBlcyAqLworI2RlZmluZSBCSl9Ob25lCQkwCS8qIE5vdCBqb3VybmFsZWQgKi8KKyNkZWZpbmUgQkpfU3luY0RhdGEJMQkvKiBOb3JtYWwgZGF0YTogZmx1c2ggYmVmb3JlIGNvbW1pdCAqLworI2RlZmluZSBCSl9Bc3luY0RhdGEJMgkvKiB3cml0ZXBhZ2UgZGF0YTogd2FpdCBvbiBpdCBiZWZvcmUgY29tbWl0ICovCisjZGVmaW5lIEJKX01ldGFkYXRhCTMJLyogTm9ybWFsIGpvdXJuYWxlZCBtZXRhZGF0YSAqLworI2RlZmluZSBCSl9Gb3JnZXQJNAkvKiBCdWZmZXIgc3VwZXJjZWRlZCBieSB0aGlzIHRyYW5zYWN0aW9uICovCisjZGVmaW5lIEJKX0lPCQk1CS8qIEJ1ZmZlciBpcyBmb3IgdGVtcG9yYXJ5IElPIHVzZSAqLworI2RlZmluZSBCSl9TaGFkb3cJNgkvKiBCdWZmZXIgY29udGVudHMgYmVpbmcgc2hhZG93ZWQgdG8gdGhlIGxvZyAqLworI2RlZmluZSBCSl9Mb2dDdGwJNwkvKiBCdWZmZXIgY29udGFpbnMgbG9nIGRlc2NyaXB0b3JzICovCisjZGVmaW5lIEJKX1Jlc2VydmVkCTgJLyogQnVmZmVyIGlzIHJlc2VydmVkIGZvciBhY2Nlc3MgYnkgam91cm5hbCAqLworI2RlZmluZSBCSl9UeXBlcwk5CisKK2V4dGVybiBpbnQgamJkX2Jsb2Nrc19wZXJfcGFnZShzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKKworI2VuZGlmCS8qIF9MSU5VWF9KQkRfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMva2VybmVsLWxpc3QuaCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFmNGY2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmgKQEAgLTAsMCArMSwxMDkgQEAKKyNpZm5kZWYgX0xJTlVYX0xJU1RfSAorI2RlZmluZSBfTElOVVhfTElTVF9ICisKKy8qCisgKiBTaW1wbGUgZG91Ymx5IGxpbmtlZCBsaXN0IGltcGxlbWVudGF0aW9uLgorICoKKyAqIFNvbWUgb2YgdGhlIGludGVybmFsIGZ1bmN0aW9ucyAoIl9feHh4IikgYXJlIHVzZWZ1bCB3aGVuCisgKiBtYW5pcHVsYXRpbmcgd2hvbGUgbGlzdHMgcmF0aGVyIHRoYW4gc2luZ2xlIGVudHJpZXMsIGFzCisgKiBzb21ldGltZXMgd2UgYWxyZWFkeSBrbm93IHRoZSBuZXh0L3ByZXYgZW50cmllcyBhbmQgd2UgY2FuCisgKiBnZW5lcmF0ZSBiZXR0ZXIgY29kZSBieSB1c2luZyB0aGVtIGRpcmVjdGx5IHJhdGhlciB0aGFuCisgKiB1c2luZyB0aGUgZ2VuZXJpYyBzaW5nbGUtZW50cnkgcm91dGluZXMuCisgKi8KKworc3RydWN0IGxpc3RfaGVhZCB7CisJc3RydWN0IGxpc3RfaGVhZCAqbmV4dCwgKnByZXY7Cit9OworCisjZGVmaW5lIExJU1RfSEVBRF9JTklUKG5hbWUpIHsgJihuYW1lKSwgJihuYW1lKSB9CisKKyNkZWZpbmUgSU5JVF9MSVNUX0hFQUQocHRyKSBkbyB7IFwKKwkocHRyKS0+bmV4dCA9IChwdHIpOyAocHRyKS0+cHJldiA9IChwdHIpOyBcCit9IHdoaWxlICgwKQorCisjaWYgKCFkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX1dBVENPTUNfXykpCisjZGVmaW5lIF9faW5saW5lX18KKyNlbmRpZgorCisvKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGJldHdlZW4gdHdvIGtub3duIGNvbnNlY3V0aXZlIGVudHJpZXMuCisgKgorICogVGhpcyBpcyBvbmx5IGZvciBpbnRlcm5hbCBsaXN0IG1hbmlwdWxhdGlvbiB3aGVyZSB3ZSBrbm93CisgKiB0aGUgcHJldi9uZXh0IGVudHJpZXMgYWxyZWFkeSEKKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKiBuZXcsCisJc3RydWN0IGxpc3RfaGVhZCAqIHByZXYsCisJc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCit7CisJbmV4dC0+cHJldiA9IG5ldzsKKwluZXctPm5leHQgPSBuZXh0OworCW5ldy0+cHJldiA9IHByZXY7CisJcHJldi0+bmV4dCA9IG5ldzsKK30KKworLyoKKyAqIEluc2VydCBhIG5ldyBlbnRyeSBhZnRlciB0aGUgc3BlY2lmaWVkIGhlYWQuLgorICovCitzdGF0aWMgX19pbmxpbmVfXyB2b2lkIGxpc3RfYWRkKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlfX2xpc3RfYWRkKG5ldywgaGVhZCwgaGVhZC0+bmV4dCk7Cit9CisKKy8qCisgKiBJbnNlcnQgYSBuZXcgZW50cnkgYXQgdGhlIHRhaWwKKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBsaXN0X2FkZF90YWlsKHN0cnVjdCBsaXN0X2hlYWQgKm5ldywgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlfX2xpc3RfYWRkKG5ldywgaGVhZC0+cHJldiwgaGVhZCk7Cit9CisKKy8qCisgKiBEZWxldGUgYSBsaXN0IGVudHJ5IGJ5IG1ha2luZyB0aGUgcHJldi9uZXh0IGVudHJpZXMKKyAqIHBvaW50IHRvIGVhY2ggb3RoZXIuCisgKgorICogVGhpcyBpcyBvbmx5IGZvciBpbnRlcm5hbCBsaXN0IG1hbmlwdWxhdGlvbiB3aGVyZSB3ZSBrbm93CisgKiB0aGUgcHJldi9uZXh0IGVudHJpZXMgYWxyZWFkeSEKKyAqLworc3RhdGljIF9faW5saW5lX18gdm9pZCBfX2xpc3RfZGVsKHN0cnVjdCBsaXN0X2hlYWQgKiBwcmV2LAorCQkJCSAgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCit7CisJbmV4dC0+cHJldiA9IHByZXY7CisJcHJldi0+bmV4dCA9IG5leHQ7Cit9CisKK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCit7CisJX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOworfQorCitzdGF0aWMgX19pbmxpbmVfXyBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cit9CisKKy8qCisgKiBTcGxpY2UgaW4gImxpc3QiIGludG8gImhlYWQiCisgKi8KK3N0YXRpYyBfX2lubGluZV9fIHZvaWQgbGlzdF9zcGxpY2Uoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICpmaXJzdCA9IGxpc3QtPm5leHQ7CisKKwlpZiAoZmlyc3QgIT0gbGlzdCkgeworCQlzdHJ1Y3QgbGlzdF9oZWFkICpsYXN0ID0gbGlzdC0+cHJldjsKKwkJc3RydWN0IGxpc3RfaGVhZCAqYXQgPSBoZWFkLT5uZXh0OworCisJCWZpcnN0LT5wcmV2ID0gaGVhZDsKKwkJaGVhZC0+bmV4dCA9IGZpcnN0OworCisJCWxhc3QtPm5leHQgPSBhdDsKKwkJYXQtPnByZXYgPSBsYXN0OworCX0KK30KKworI2RlZmluZSBsaXN0X2VudHJ5KHB0ciwgdHlwZSwgbWVtYmVyKSBcCisJKCh0eXBlICopKChjaGFyICopKHB0ciktKHVuc2lnbmVkIGxvbmcpKCYoKHR5cGUgKikwKS0+bWVtYmVyKSkpCisKKyNkZWZpbmUgbGlzdF9mb3JfZWFjaChwb3MsIGhlYWQpIFwKKyAgICAgICAgZm9yIChwb3MgPSAoaGVhZCktPm5leHQ7IHBvcyAhPSAoaGVhZCk7IHBvcyA9IHBvcy0+bmV4dCkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9saW5rLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9saW5rLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkYzg4NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2xpbmsuYwpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIGxpbmsuYyAtLS0gY3JlYXRlIGxpbmtzIGluIGEgZXh0MmZzIGRpcmVjdG9yeQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK3N0cnVjdCBsaW5rX3N0cnVjdCAgeworCWV4dDJfZmlsc3lzCWZzOworCWNvbnN0IGNoYXIJKm5hbWU7CisJaW50CQluYW1lbGVuOworCWV4dDJfaW5vX3QJaW5vZGU7CisJaW50CQlmbGFnczsKKwlpbnQJCWRvbmU7CisJdW5zaWduZWQgaW50CWJsb2Nrc2l6ZTsKKwllcnJjb2RlX3QJZXJyOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYjsKK307CisKK3N0YXRpYyBpbnQgbGlua19wcm9jKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkgICAgIGludAlvZmZzZXQsCisJCSAgICAgaW50CWJsb2Nrc2l6ZSwKKwkJICAgICBjaGFyCSpidWYsCisJCSAgICAgdm9pZAkqcHJpdl9kYXRhKQoreworCXN0cnVjdCBsaW5rX3N0cnVjdCAqbHMgPSAoc3RydWN0IGxpbmtfc3RydWN0ICopIHByaXZfZGF0YTsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKm5leHQ7CisJdW5zaWduZWQgaW50IHJlY19sZW4sIG1pbl9yZWNfbGVuLCBjdXJyX3JlY19sZW47CisJaW50IHJldCA9IDA7CisJaW50IGNzdW1fc2l6ZSA9IDA7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgKnQ7CisKKwlpZiAobHMtPmRvbmUpCisJCXJldHVybiBESVJFTlRfQUJPUlQ7CisKKwlyZWNfbGVuID0gRVhUMl9ESVJfUkVDX0xFTihscy0+bmFtZWxlbik7CisKKwlscy0+ZXJyID0gZXh0MmZzX2dldF9yZWNfbGVuKGxzLT5mcywgZGlyZW50LCAmY3Vycl9yZWNfbGVuKTsKKwlpZiAobHMtPmVycikKKwkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShscy0+ZnMtPnN1cGVyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKwkvKgorCSAqIFNlZSBpZiB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeSBlbnRyeSAoaWYgYW55KSBpcyB1bnVzZWQ7CisJICogaWYgc28sIGFic29yYiBpdCBpbnRvIHRoaXMgb25lLgorCSAqLworCW5leHQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIChidWYgKyBvZmZzZXQgKyBjdXJyX3JlY19sZW4pOworCWlmICgob2Zmc2V0ICsgKGludCkgY3Vycl9yZWNfbGVuIDwgYmxvY2tzaXplIC0gKDggKyBjc3VtX3NpemUpKSAmJgorCSAgICAobmV4dC0+aW5vZGUgPT0gMCkgJiYKKwkgICAgKG9mZnNldCArIChpbnQpIGN1cnJfcmVjX2xlbiArIChpbnQpIG5leHQtPnJlY19sZW4gPD0gYmxvY2tzaXplKSkgeworCQljdXJyX3JlY19sZW4gKz0gbmV4dC0+cmVjX2xlbjsKKwkJbHMtPmVyciA9IGV4dDJmc19zZXRfcmVjX2xlbihscy0+ZnMsIGN1cnJfcmVjX2xlbiwgZGlyZW50KTsKKwkJaWYgKGxzLT5lcnIpCisJCQlyZXR1cm4gRElSRU5UX0FCT1JUOworCQlyZXQgPSBESVJFTlRfQ0hBTkdFRDsKKwl9CisKKwkvKgorCSAqIFNpbmNlIGV4dDJmc19saW5rIGJsb3dzIGF3YXkgaHRyZWUgZGF0YSwgd2UgbmVlZCB0byBiZQorCSAqIGNhcmVmdWwgLS0gaWYgbWV0YWRhdGFfY3N1bSBpcyBlbmFibGVkIGFuZCB3ZSdyZSBwYXNzZWQgaW4KKwkgKiBhIGRpcmVudCB0aGF0IGNvbnRhaW5zIGh0cmVlIGRhdGEsIHdlIG5lZWQgdG8gY3JlYXRlIHRoZQorCSAqIGZha2UgZW50cnkgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2sgdGhhdCBoaWRlcyB0aGUgY2hlY2tzdW0uCisJICovCisKKwkvKiBEZS1jb252ZXJ0IGEgZHhfbm9kZSBibG9jayAqLworCWlmIChjc3VtX3NpemUgJiYKKwkgICAgY3Vycl9yZWNfbGVuID09IGxzLT5mcy0+YmxvY2tzaXplICYmCisJICAgICFkaXJlbnQtPmlub2RlKSB7CisJCWN1cnJfcmVjX2xlbiAtPSBjc3VtX3NpemU7CisJCWxzLT5lcnIgPSBleHQyZnNfc2V0X3JlY19sZW4obHMtPmZzLCBjdXJyX3JlY19sZW4sIGRpcmVudCk7CisJCWlmIChscy0+ZXJyKQorCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwkJdCA9IEVYVDJfRElSRU5UX1RBSUwoYnVmLCBscy0+ZnMtPmJsb2Nrc2l6ZSk7CisJCWV4dDJmc19pbml0aWFsaXplX2RpcmVudF90YWlsKGxzLT5mcywgdCk7CisJCXJldCA9IERJUkVOVF9DSEFOR0VEOworCX0KKworCS8qIERlLWNvbnZlcnQgYSBkeF9yb290IGJsb2NrICovCisJaWYgKGNzdW1fc2l6ZSAmJgorCSAgICBjdXJyX3JlY19sZW4gPT0gbHMtPmZzLT5ibG9ja3NpemUgLSBFWFQyX0RJUl9SRUNfTEVOKDEpICYmCisJICAgIG9mZnNldCA9PSBFWFQyX0RJUl9SRUNfTEVOKDEpICYmCisJICAgIGRpcmVudC0+bmFtZVswXSA9PSAnLicgJiYgZGlyZW50LT5uYW1lWzFdID09ICcuJykgeworCQljdXJyX3JlY19sZW4gLT0gY3N1bV9zaXplOworCQlscy0+ZXJyID0gZXh0MmZzX3NldF9yZWNfbGVuKGxzLT5mcywgY3Vycl9yZWNfbGVuLCBkaXJlbnQpOworCQlpZiAobHMtPmVycikKKwkJCXJldHVybiBESVJFTlRfQUJPUlQ7CisJCXQgPSBFWFQyX0RJUkVOVF9UQUlMKGJ1ZiwgbHMtPmZzLT5ibG9ja3NpemUpOworCQlleHQyZnNfaW5pdGlhbGl6ZV9kaXJlbnRfdGFpbChscy0+ZnMsIHQpOworCQlyZXQgPSBESVJFTlRfQ0hBTkdFRDsKKwl9CisKKwkvKgorCSAqIElmIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgdXNlZCwgc2VlIGlmIHdlIGNhbiBzcGxpdCB0aGUKKwkgKiBkaXJlY3RvcnkgZW50cnkgdG8gbWFrZSByb29tIGZvciB0aGUgbmV3IG5hbWUuICBJZiBzbywKKwkgKiB0cnVuY2F0ZSBpdCBhbmQgcmV0dXJuLgorCSAqLworCWlmIChkaXJlbnQtPmlub2RlKSB7CisJCW1pbl9yZWNfbGVuID0gRVhUMl9ESVJfUkVDX0xFTihleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkpOworCQlpZiAoY3Vycl9yZWNfbGVuIDwgKG1pbl9yZWNfbGVuICsgcmVjX2xlbikpCisJCQlyZXR1cm4gcmV0OworCQlyZWNfbGVuID0gY3Vycl9yZWNfbGVuIC0gbWluX3JlY19sZW47CisJCWxzLT5lcnIgPSBleHQyZnNfc2V0X3JlY19sZW4obHMtPmZzLCBtaW5fcmVjX2xlbiwgZGlyZW50KTsKKwkJaWYgKGxzLT5lcnIpCisJCQlyZXR1cm4gRElSRU5UX0FCT1JUOworCQluZXh0ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSAoYnVmICsgb2Zmc2V0ICsKKwkJCQkJCSAgZGlyZW50LT5yZWNfbGVuKTsKKwkJbmV4dC0+aW5vZGUgPSAwOworCQlleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbihuZXh0LCAwKTsKKwkJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKG5leHQsIDApOworCQlscy0+ZXJyID0gZXh0MmZzX3NldF9yZWNfbGVuKGxzLT5mcywgcmVjX2xlbiwgbmV4dCk7CisJCWlmIChscy0+ZXJyKQorCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwkJcmV0dXJuIERJUkVOVF9DSEFOR0VEOworCX0KKworCS8qCisJICogSWYgd2UgZ2V0IHRoaXMgZmFyLCB0aGVuIHRoZSBkaXJlY3RvcnkgZW50cnkgaXMgbm90IHVzZWQuCisJICogU2VlIGlmIHdlIGNhbiBmaXQgdGhlIHJlcXVlc3QgZW50cnkgaW4uICBJZiBzbywgZG8gaXQuCisJICovCisJaWYgKGN1cnJfcmVjX2xlbiA8IHJlY19sZW4pCisJCXJldHVybiByZXQ7CisJZGlyZW50LT5pbm9kZSA9IGxzLT5pbm9kZTsKKwlleHQyZnNfZGlyZW50X3NldF9uYW1lX2xlbihkaXJlbnQsIGxzLT5uYW1lbGVuKTsKKwlzdHJuY3B5KGRpcmVudC0+bmFtZSwgbHMtPm5hbWUsIGxzLT5uYW1lbGVuKTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZpbGV0eXBlKGxzLT5zYikpCisJCWV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShkaXJlbnQsIGxzLT5mbGFncyAmIDB4Nyk7CisKKwlscy0+ZG9uZSsrOworCXJldHVybiBESVJFTlRfQUJPUlR8RElSRU5UX0NIQU5HRUQ7Cit9CisKKy8qCisgKiBOb3RlOiB0aGUgbG93IDMgYml0cyBvZiB0aGUgZmxhZ3MgZmllbGQgYXJlIHVzZWQgYXMgdGhlIGRpcmVjdG9yeQorICogZW50cnkgZmlsZXR5cGUuCisgKi8KKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitlcnJjb2RlX3QgZXh0MmZzX2xpbmsoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgZGlyLCBjb25zdCBjaGFyICpuYW1lLAorCQkgICAgICBleHQyX2lub190IGlubywgaW50IGZsYWdzKQoreworCWVycmNvZGVfdAkJcmV0dmFsOworCXN0cnVjdCBsaW5rX3N0cnVjdAlsczsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwlscy5mcyA9IGZzOworCWxzLm5hbWUgPSBuYW1lOworCWxzLm5hbWVsZW4gPSBuYW1lID8gc3RybGVuKG5hbWUpIDogMDsKKwlscy5pbm9kZSA9IGlubzsKKwlscy5mbGFncyA9IGZsYWdzOworCWxzLmRvbmUgPSAwOworCWxzLnNiID0gZnMtPnN1cGVyOworCWxzLmJsb2Nrc2l6ZSA9IGZzLT5ibG9ja3NpemU7CisJbHMuZXJyID0gMDsKKworCXJldHZhbCA9IGV4dDJmc19kaXJfaXRlcmF0ZShmcywgZGlyLCBESVJFTlRfRkxBR19JTkNMVURFX0VNUFRZLAorCQkJCSAgICAwLCBsaW5rX3Byb2MsICZscyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAobHMuZXJyKQorCQlyZXR1cm4gbHMuZXJyOworCisJaWYgKCFscy5kb25lKQorCQlyZXR1cm4gRVhUMl9FVF9ESVJfTk9fU1BBQ0U7CisKKwlpZiAoKHJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBkaXIsICZpbm9kZSkpICE9IDApCisJCXJldHVybiByZXR2YWw7CisKKwkvKgorCSAqIElmIHRoaXMgZnVuY3Rpb24gY2hhbmdlcyB0byBwcmVzZXJ2ZSB0aGUgaHRyZWUsIHJlbW92ZSB0aGUKKwkgKiB0d28gaHVua3MgaW4gbGlua19wcm9jIHRoYXQgc2hvdmUgY2hlY2tzdW0gdGFpbHMgaW50byB0aGUKKwkgKiBmb3JtZXIgZHhfcm9vdC9keF9ub2RlIGJsb2Nrcy4KKwkgKi8KKwlpZiAoaW5vZGUuaV9mbGFncyAmIEVYVDJfSU5ERVhfRkwpIHsKKwkJaW5vZGUuaV9mbGFncyAmPSB+RVhUMl9JTkRFWF9GTDsKKwkJaWYgKChyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGRpciwgJmlub2RlKSkgIT0gMCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9sbHNlZWsuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2xsc2Vlay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyMmEwZDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9sbHNlZWsuYwpAQCAtMCwwICsxLDE0NSBAQAorLyoKKyAqIGxsc2Vlay5jIC0tIHN0dWIgY2FsbGluZyB0aGUgbGxzZWVrIHN5c3RlbSBjYWxsCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIF9fTVNET1NfXworI2luY2x1ZGUgPGlvLmg+CisjZW5kaWYKKyNpbmNsdWRlICJldC9jb21fZXJyLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfaW8uaCIKKworI2lmZGVmIF9fbGludXhfXworCisjaWYgZGVmaW5lZChIQVZFX0xTRUVLNjQpICYmIGRlZmluZWQoSEFWRV9MU0VFSzY0X1BST1RPVFlQRSkKKworI2RlZmluZSBteV9sbHNlZWsgbHNlZWs2NAorCisjZWxzZQorI2lmIGRlZmluZWQoSEFWRV9MTFNFRUspCisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKworI2lmbmRlZiBIQVZFX0xMU0VFS19QUk9UT1RZUEUKK2V4dGVybiBsb25nIGxvbmcgbGxzZWVrIChpbnQgZmQsIGxvbmcgbG9uZyBvZmZzZXQsIGludCBvcmlnaW4pOworI2VuZGlmCisKKyNkZWZpbmUgbXlfbGxzZWVrIGxsc2VlaworCisjZWxzZQkvKiAhIEhBVkVfTExTRUVLICovCisKKyNpZiBTSVpFT0ZfTE9ORyA9PSBTSVpFT0ZfTE9OR19MT05HCisKKyNkZWZpbmUgbXlfbGxzZWVrIGxzZWVrCisKKyNlbHNlIC8qIFNJWkVPRl9MT05HICE9IFNJWkVPRl9MT05HX0xPTkcgKi8KKworI2luY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPgorCisjaWZuZGVmIF9fTlJfX2xsc2VlaworI2RlZmluZSBfX05SX19sbHNlZWsgICAgICAgICAgICAxNDAKKyNlbmRpZgorCisjaWZuZGVmIF9faTM4Nl9fCitzdGF0aWMgaW50IF9sbHNlZWsgKHVuc2lnbmVkIGludCwgdW5zaWduZWQgbG9uZywKKwkJICAgdW5zaWduZWQgbG9uZywgZXh0Ml9sb2ZmX3QgKiwgdW5zaWduZWQgaW50KTsKKworc3RhdGljIF9zeXNjYWxsNShpbnQsX2xsc2Vlayx1bnNpZ25lZCBpbnQsZmQsdW5zaWduZWQgbG9uZyxvZmZzZXRfaGlnaCwKKwkJIHVuc2lnbmVkIGxvbmcsIG9mZnNldF9sb3csZXh0Ml9sb2ZmX3QgKixyZXN1bHQsCisJCSB1bnNpZ25lZCBpbnQsIG9yaWdpbikKKyNlbmRpZgorCitzdGF0aWMgZXh0Ml9sb2ZmX3QgbXlfbGxzZWVrIChpbnQgZmQsIGV4dDJfbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikKK3sKKwlleHQyX2xvZmZfdCByZXN1bHQ7CisJaW50IHJldHZhbDsKKworI2lmbmRlZiBfX2kzODZfXworCXJldHZhbCA9IF9sbHNlZWsoZmQsICgodW5zaWduZWQgbG9uZyBsb25nKSBvZmZzZXQpID4+IDMyLAorI2Vsc2UKKwlyZXR2YWwgPSBzeXNjYWxsKF9fTlJfX2xsc2VlaywgZmQsICh1bnNpZ25lZCBsb25nIGxvbmcpIChvZmZzZXQgPj4gMzIpLAorI2VuZGlmCisJCQkgICgodW5zaWduZWQgbG9uZyBsb25nKSBvZmZzZXQpICYgMHhmZmZmZmZmZiwKKwkJCSZyZXN1bHQsIG9yaWdpbik7CisJcmV0dXJuIChyZXR2YWwgPT0gLTEgPyAoZXh0Ml9sb2ZmX3QpIHJldHZhbCA6IHJlc3VsdCk7Cit9CisKKyNlbmRpZgkvKiBTSVpFX0xPTkcgPT0gU0laRU9GX0xPTkdfTE9ORyAqLworCisjZW5kaWYgLyogSEFWRV9MTFNFRUsgKi8KKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfTFNFRUs2NCkgJiYgZGVmaW5lZChIQVZFX0xTRUVLNjRfUFJPVE9UWVBFKSAqLworCitleHQyX2xvZmZfdCBleHQyZnNfbGxzZWVrIChpbnQgZmQsIGV4dDJfbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikKK3sKKyNpZiBTSVpFT0ZfT0ZGX1QgPj0gU0laRU9GX0xPTkdfTE9ORworCXJldHVybiBteV9sbHNlZWsgKGZkLCBvZmZzZXQsIG9yaWdpbik7CisjZWxzZQorCWV4dDJfbG9mZl90IHJlc3VsdDsKKwlzdGF0aWMgaW50IGRvX2NvbXBhdCA9IDA7CisKKwlpZiAoZG9fY29tcGF0KQorCQlnb3RvIGZhbGxiYWNrOworCisJcmVzdWx0ID0gbXlfbGxzZWVrIChmZCwgb2Zmc2V0LCBvcmlnaW4pOworCWlmIChyZXN1bHQgPT0gLTEgJiYgZXJybm8gPT0gRU5PU1lTKSB7CisJCS8qCisJCSAqIEp1c3QgaW4gY2FzZSB0aGlzIGNvZGUgcnVucyBvbiB0b3Agb2YgYW4gb2xkIGtlcm5lbAorCQkgKiB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBsbHNlZWsgc3lzdGVtIGNhbGwKKwkJICovCisJCWRvX2NvbXBhdCsrOworCWZhbGxiYWNrOgorCQlpZiAob2Zmc2V0IDwgKChleHQyX2xvZmZfdCkgMSA8PCAoKHNpemVvZihvZmZfdCkqOCkgLTEpKSkKKwkJCXJldHVybiBsc2VlayhmZCwgKG9mZl90KSBvZmZzZXQsIG9yaWdpbik7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiByZXN1bHQ7CisjZW5kaWYKK30KKworI2Vsc2UgLyogIWxpbnV4ICovCisKKyNpZm5kZWYgRUlOVkFMCisjZGVmaW5lIEVJTlZBTCBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQKKyNlbmRpZgorCitleHQyX2xvZmZfdCBleHQyZnNfbGxzZWVrIChpbnQgZmQsIGV4dDJfbG9mZl90IG9mZnNldCwgaW50IG9yaWdpbikKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTFNFRUs2NCkgJiYgZGVmaW5lZChIQVZFX0xTRUVLNjRfUFJPVE9UWVBFKQorCXJldHVybiBsc2VlazY0IChmZCwgb2Zmc2V0LCBvcmlnaW4pOworI2Vsc2UKKwlpZiAoKHNpemVvZihvZmZfdCkgPCBzaXplb2YoZXh0Ml9sb2ZmX3QpKSAmJgorCSAgICAob2Zmc2V0ID49ICgoZXh0Ml9sb2ZmX3QpIDEgPDwgKChzaXplb2Yob2ZmX3QpKjgpIC0xKSkpKSB7CisJCWVycm5vID0gRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQorCXJldHVybiBsc2VlayAoZmQsIChvZmZfdCkgb2Zmc2V0LCBvcmlnaW4pOworI2VuZGlmCit9CisKKyNlbmRpZiAJLyogbGludXggKi8KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9sb29rdXAuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL2xvb2t1cC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZDgwMmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9sb29rdXAuYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogbG9va3VwLmMgLS0tIGV4dDJmcyBkaXJlY3RvcnkgbG9va3VwIG9wZXJhdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTQsIDE5OTUgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitzdHJ1Y3QgbG9va3VwX3N0cnVjdCAgeworCWNvbnN0IGNoYXIJKm5hbWU7CisJaW50CQlsZW47CisJZXh0Ml9pbm9fdAkqaW5vZGU7CisJaW50CQlmb3VuZDsKK307CisKKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitzdGF0aWMgaW50IGxvb2t1cF9wcm9jKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkgICAgICAgaW50CW9mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgIGNoYXIJKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgICB2b2lkCSpwcml2X2RhdGEpCit7CisJc3RydWN0IGxvb2t1cF9zdHJ1Y3QgKmxzID0gKHN0cnVjdCBsb29rdXBfc3RydWN0ICopIHByaXZfZGF0YTsKKworCWlmIChscy0+bGVuICE9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSkKKwkJcmV0dXJuIDA7CisJaWYgKHN0cm5jbXAobHMtPm5hbWUsIGRpcmVudC0+bmFtZSwgZXh0MmZzX2RpcmVudF9uYW1lX2xlbihkaXJlbnQpKSkKKwkJcmV0dXJuIDA7CisJKmxzLT5pbm9kZSA9IGRpcmVudC0+aW5vZGU7CisJbHMtPmZvdW5kKys7CisJcmV0dXJuIERJUkVOVF9BQk9SVDsKK30KKworCitlcnJjb2RlX3QgZXh0MmZzX2xvb2t1cChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXIsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQlpbnQgbmFtZWxlbiwgY2hhciAqYnVmLCBleHQyX2lub190ICppbm9kZSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBsb29rdXBfc3RydWN0IGxzOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWxzLm5hbWUgPSBuYW1lOworCWxzLmxlbiA9IG5hbWVsZW47CisJbHMuaW5vZGUgPSBpbm9kZTsKKwlscy5mb3VuZCA9IDA7CisKKwlyZXR2YWwgPSBleHQyZnNfZGlyX2l0ZXJhdGUoZnMsIGRpciwgMCwgYnVmLCBsb29rdXBfcHJvYywgJmxzKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dXJuIChscy5mb3VuZCkgPyAwIDogRVhUMl9FVF9GSUxFX05PVF9GT1VORDsKK30KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ta2Rpci5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbWtkaXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTYzYWFkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbWtkaXIuYwpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIG1rZGlyLmMgLS0tIG1ha2UgYSBkaXJlY3RvcnkgaW4gdGhlIGZpbGVzeXN0ZW0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKKyNpZm5kZWYgRVhUMl9GVF9ESVIKKyNkZWZpbmUgRVhUMl9GVF9ESVIJCTIKKyNlbmRpZgorCitlcnJjb2RlX3QgZXh0MmZzX21rZGlyKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHBhcmVudCwgZXh0Ml9pbm9fdCBpbnVtLAorCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGUJcGFyZW50X2lub2RlLCBpbm9kZTsKKwlleHQyX2lub190CQlpbm8gPSBpbnVtOworCWV4dDJfaW5vX3QJCXNjcmF0Y2hfaW5vOworCWJsazY0X3QJCQlibGs7CisJY2hhcgkJCSpibG9jayA9IDA7CisJaW50CQkJaW5saW5lX2RhdGEgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCS8qCisJICogQ3JlYXRlIGEgbmV3IGRpciB3aXRoIGlubGluZSBkYXRhIGlmZiB0aGlzIGZlYXR1cmUgaXMgZW5hYmxlZAorCSAqIGFuZCBpbm8gPj0gRVhUMl9GSVJTVF9JTk8uCisJICovCisJaWYgKCghaW5vIHx8IGlubyA+PSBFWFQyX0ZJUlNUX0lOTyhmcy0+c3VwZXIpKSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoZnMtPnN1cGVyKSkKKwkJaW5saW5lX2RhdGEgPSAxOworCisJLyoKKwkgKiBBbGxvY2F0ZSBhbiBpbm9kZSwgaWYgbmVjZXNzYXJ5CisJICovCisJaWYgKCFpbm8pIHsKKwkJcmV0dmFsID0gZXh0MmZzX25ld19pbm9kZShmcywgcGFyZW50LCBMSU5VWF9TX0lGRElSIHwgMDc1NSwKKwkJCQkJICAwLCAmaW5vKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKgorCSAqIEFsbG9jYXRlIGEgZGF0YSBibG9jayBmb3IgdGhlIGRpcmVjdG9yeQorCSAqLworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCWlmICghaW5saW5lX2RhdGEpIHsKKwkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGV4dDJmc19maW5kX2lub2RlX2dvYWwoZnMsIGlubywKKwkJCQkJCQkJICAgICAgJmlub2RlLAorCQkJCQkJCQkgICAgICAwKSwKKwkJCQkJICAgTlVMTCwgJmJsayk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgYSBzY3JhdGNoIHRlbXBsYXRlIGZvciB0aGUgZGlyZWN0b3J5CisJICovCisJaWYgKGlubGluZV9kYXRhKQorCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Rpcl9pbmxpbmVfZGF0YShmcywgaW5vLCBwYXJlbnQsCisJCQkJCQkgICAgaW5vZGUuaV9ibG9jayk7CisJZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Rpcl9ibG9jayhmcywgaW5vLCBwYXJlbnQsICZibG9jayk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJLyoKKwkgKiBHZXQgdGhlIHBhcmVudCdzIGlub2RlLCBpZiBuZWNlc3NhcnkKKwkgKi8KKwlpZiAocGFyZW50ICE9IGlubykgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgcGFyZW50LCAmcGFyZW50X2lub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9IGVsc2UKKwkJbWVtc2V0KCZwYXJlbnRfaW5vZGUsIDAsIHNpemVvZihwYXJlbnRfaW5vZGUpKTsKKworCS8qCisJICogQ3JlYXRlIHRoZSBpbm9kZSBzdHJ1Y3R1cmUuLi4uCisJICovCisJaW5vZGUuaV9tb2RlID0gTElOVVhfU19JRkRJUiB8ICgwNzc3ICYgfmZzLT51bWFzayk7CisJaW5vZGUuaV91aWQgPSBpbm9kZS5pX2dpZCA9IDA7CisJaWYgKGlubGluZV9kYXRhKSB7CisJCWlub2RlLmlfZmxhZ3MgfD0gRVhUNF9JTkxJTkVfREFUQV9GTDsKKwkJaW5vZGUuaV9zaXplID0gRVhUNF9NSU5fSU5MSU5FX0RBVEFfU0laRTsKKwl9IGVsc2UgeworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKSkKKwkJCWlub2RlLmlfZmxhZ3MgfD0gRVhUNF9FWFRFTlRTX0ZMOworCQllbHNlCisJCQlpbm9kZS5pX2Jsb2NrWzBdID0gYmxrOworCQlpbm9kZS5pX3NpemUgPSBmcy0+YmxvY2tzaXplOworCQlleHQyZnNfaWJsa19zZXQoZnMsICZpbm9kZSwgMSk7CisJfQorCWlub2RlLmlfbGlua3NfY291bnQgPSAyOworCisJLyoKKwkgKiBXcml0ZSBvdXQgdGhlIGlub2RlIGFuZCBpbm9kZSBkYXRhIGJsb2NrLiAgVGhlIGlub2RlIGdlbmVyYXRpb24KKwkgKiBudW1iZXIgaXMgYXNzaWduZWQgYnkgd3JpdGVfbmV3X2lub2RlLCB3aGljaCBtZWFucyB0aGF0IHRoZSBjYWxsCisJICogdG8gd3JpdGVfZGlyX2Jsb2NrIG11c3QgY29tZSBhZnRlciB0aGF0LgorCSAqLworCXJldHZhbCA9IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaWYgKGlubGluZV9kYXRhKSB7CisJCS8qIGluaXQgInN5c3RlbS5kYXRhIiBmb3IgbmV3IGRpciAqLworCQlyZXR2YWwgPSBleHQyZnNfaW5saW5lX2RhdGFfaW5pdChmcywgaW5vKTsKKwl9IGVsc2UgeworCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgYmxrLCBibG9jaywgMCwgaW5vKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKSkgeworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9vcGVuMihmcywgaW5vLCAmaW5vZGUsICZoYW5kbGUpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGNsZWFudXA7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3NldF9ibWFwKGhhbmRsZSwgMCwgYmxrLCAwKTsKKwkJCWV4dDJmc19leHRlbnRfZnJlZShoYW5kbGUpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9CisKKwkvKgorCSAqIExpbmsgdGhlIGRpcmVjdG9yeSBpbnRvIHRoZSBmaWxlc3lzdGVtIGhpZXJhcmNoeQorCSAqLworCWlmIChuYW1lKSB7CisJCXJldHZhbCA9IGV4dDJmc19sb29rdXAoZnMsIHBhcmVudCwgbmFtZSwgc3RybGVuKG5hbWUpLCAwLAorCQkJCSAgICAgICAmc2NyYXRjaF9pbm8pOworCQlpZiAoIXJldHZhbCkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9ESVJfRVhJU1RTOworCQkJbmFtZSA9IDA7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwkJaWYgKHJldHZhbCAhPSBFWFQyX0VUX0ZJTEVfTk9UX0ZPVU5EKQorCQkJZ290byBjbGVhbnVwOworCQlyZXR2YWwgPSBleHQyZnNfbGluayhmcywgcGFyZW50LCBuYW1lLCBpbm8sIEVYVDJfRlRfRElSKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSBwYXJlbnQgaW5vZGUncyBjb3VudHMKKwkgKi8KKwlpZiAocGFyZW50ICE9IGlubykgeworCQkvKiByZWxvYWQgcGFyZW50IGlub2RlIGR1ZSB0byBpbmxpbmUgZGF0YSAqLworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgcGFyZW50LCAmcGFyZW50X2lub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwkJcGFyZW50X2lub2RlLmlfbGlua3NfY291bnQrKzsKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBwYXJlbnQsICZwYXJlbnRfaW5vZGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0KKworCS8qCisJICogVXBkYXRlIGFjY291bnRpbmcuLi4uCisJICovCisJaWYgKCFpbmxpbmVfZGF0YSkKKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrLCArMSk7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgaW5vLCArMSwgMSk7CisKK2NsZWFudXA6CisJaWYgKGJsb2NrKQorCQlleHQyZnNfZnJlZV9tZW0oJmJsb2NrKTsKKwlyZXR1cm4gcmV0dmFsOworCit9CisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvbWtqb3VybmFsLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9ta2pvdXJuYWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjc4MjkxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbWtqb3VybmFsLmMKQEAgLTAsMCArMSw1ODcgQEAKKy8qCisgKiBta2pvdXJuYWwuYyAtLS0gbWFrZSBhIGpvdXJuYWwgZm9yIGEgZmlsZXN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworI2luY2x1ZGUgImtlcm5lbC1qYmQuaCIKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gYXV0b21hdGljYWxseSBzZXRzIHVwIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgYW5kCisgKiByZXR1cm5zIGl0IGFzIGFuIGFsbG9jYXRlZCBibG9jay4KKyAqLworZXJyY29kZV90IGV4dDJmc19jcmVhdGVfam91cm5hbF9zdXBlcmJsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJCQkgICBfX3UzMiBudW1fYmxvY2tzLCBpbnQgZmxhZ3MsCisJCQkJCSAgIGNoYXIgICoqcmV0X2pzYikKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlqb3VybmFsX3N1cGVyYmxvY2tfdAkqanNiOworCisJaWYgKG51bV9ibG9ja3MgPCBKRlNfTUlOX0pPVVJOQUxfQkxPQ0tTKQorCQlyZXR1cm4gRVhUMl9FVF9KT1VSTkFMX1RPT19TTUFMTDsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmpzYikpKQorCQlyZXR1cm4gcmV0dmFsOworCisJbWVtc2V0IChqc2IsIDAsIGZzLT5ibG9ja3NpemUpOworCisJanNiLT5zX2hlYWRlci5oX21hZ2ljID0gaHRvbmwoSkZTX01BR0lDX05VTUJFUik7CisJaWYgKGZsYWdzICYgRVhUMl9NS0pPVVJOQUxfVjFfU1VQRVIpCisJCWpzYi0+c19oZWFkZXIuaF9ibG9ja3R5cGUgPSBodG9ubChKRlNfU1VQRVJCTE9DS19WMSk7CisJZWxzZQorCQlqc2ItPnNfaGVhZGVyLmhfYmxvY2t0eXBlID0gaHRvbmwoSkZTX1NVUEVSQkxPQ0tfVjIpOworCWpzYi0+c19ibG9ja3NpemUgPSBodG9ubChmcy0+YmxvY2tzaXplKTsKKwlqc2ItPnNfbWF4bGVuID0gaHRvbmwobnVtX2Jsb2Nrcyk7CisJanNiLT5zX25yX3VzZXJzID0gaHRvbmwoMSk7CisJanNiLT5zX2ZpcnN0ID0gaHRvbmwoMSk7CisJanNiLT5zX3NlcXVlbmNlID0gaHRvbmwoMSk7CisJbWVtY3B5KGpzYi0+c191dWlkLCBmcy0+c3VwZXItPnNfdXVpZCwgc2l6ZW9mKGZzLT5zdXBlci0+c191dWlkKSk7CisJLyoKKwkgKiBJZiB3ZSdyZSBjcmVhdGluZyBhbiBleHRlcm5hbCBqb3VybmFsIGRldmljZSwgd2UgbmVlZCB0bworCSAqIGFkanVzdCB0aGVzZSBmaWVsZHMuCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2Rldihmcy0+c3VwZXIpKSB7CisJCWpzYi0+c19ucl91c2VycyA9IDA7CisJCWpzYi0+c19maXJzdCA9IGh0b25sKGV4dDJmc19qb3VybmFsX3NiX3N0YXJ0KGZzLT5ibG9ja3NpemUpICsgMSk7CisJfQorCisJKnJldF9qc2IgPSAoY2hhciAqKSBqc2I7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdyaXRlcyBhIGpvdXJuYWwgdXNpbmcgUE9TSVggcm91dGluZXMuICBJdCBpcyB1c2VkCisgKiBmb3IgY3JlYXRpbmcgZXh0ZXJuYWwgam91cm5hbHMgYW5kIGNyZWF0aW5nIGpvdXJuYWxzIG9uIGxpdmUKKyAqIGZpbGVzeXN0ZW1zLgorICovCitzdGF0aWMgZXJyY29kZV90IHdyaXRlX2pvdXJuYWxfZmlsZShleHQyX2ZpbHN5cyBmcywgY2hhciAqZmlsZW5hbWUsCisJCQkJICAgIGJsa190IG51bV9ibG9ja3MsIGludCBmbGFncykKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpidWYgPSAwOworCWludAkJZmQsIHJldF9zaXplOworCWJsa190CQlpOworCisJaWYgKChyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2pvdXJuYWxfc3VwZXJibG9jayhmcywgbnVtX2Jsb2NrcywgZmxhZ3MsCisJCQkJCQkgICAgICAgJmJ1ZikpKQorCQlyZXR1cm4gcmV0dmFsOworCisJLyogT3BlbiB0aGUgZGV2aWNlIG9yIGpvdXJuYWwgZmlsZSAqLworCWlmICgoZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1dST05MWSkpIDwgMCkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJZ290byBlcnJmcmVlOworCX0KKworCS8qIFdyaXRlIHRoZSBzdXBlcmJsb2NrIG91dCAqLworCXJldHZhbCA9IEVYVDJfRVRfU0hPUlRfV1JJVEU7CisJcmV0X3NpemUgPSB3cml0ZShmZCwgYnVmLCBmcy0+YmxvY2tzaXplKTsKKwlpZiAocmV0X3NpemUgPCAwKSB7CisJCXJldHZhbCA9IGVycm5vOworCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKHJldF9zaXplICE9IChpbnQpIGZzLT5ibG9ja3NpemUpCisJCWdvdG8gZXJyb3V0OworCW1lbXNldChidWYsIDAsIGZzLT5ibG9ja3NpemUpOworCisJaWYgKGZsYWdzICYgRVhUMl9NS0pPVVJOQUxfTEFaWUlOSVQpCisJCWdvdG8gc3VjY2VzczsKKworCWZvciAoaSA9IDE7IGkgPCBudW1fYmxvY2tzOyBpKyspIHsKKwkJcmV0X3NpemUgPSB3cml0ZShmZCwgYnVmLCBmcy0+YmxvY2tzaXplKTsKKwkJaWYgKHJldF9zaXplIDwgMCkgeworCQkJcmV0dmFsID0gZXJybm87CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlpZiAocmV0X3NpemUgIT0gKGludCkgZnMtPmJsb2Nrc2l6ZSkKKwkJCWdvdG8gZXJyb3V0OworCX0KKworc3VjY2VzczoKKwlyZXR2YWwgPSAwOworZXJyb3V0OgorCWNsb3NlKGZkKTsKK2VycmZyZWU6CisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB3aGljaCB6ZXJvcyBvdXQgX251bV8gYmxvY2tzIHN0YXJ0aW5nIGF0CisgKiBfYmxrXy4gIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHRoZSBkZXRhaWxzIG9mIHRoZSBlcnJvciBpcyByZXR1cm5lZAorICogdmlhIF9yZXRfYmxrXyBhbmQgX3JldF9jb3VudF8gaWYgdGhleSBhcmUgbm9uLU5VTEwgcG9pbnRlcnMuCisgKiBSZXR1cm5zIDAgb24gc3VjY2VzcywgYW5kIGFuIGVycm9yIGNvZGUgb24gYW4gZXJyb3IuCisgKgorICogQXMgYSBzcGVjaWFsIGNhc2UsIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBOVUxMLCB0aGVuIGl0IHdpbGwKKyAqIGF0dGVtcHQgdG8gZnJlZSB0aGUgc3RhdGljIHplcm9pemluZyBidWZmZXIuICAoVGhpcyBpcyB0byBrZWVwCisgKiBwcm9ncmFtcyB0aGF0IGNoZWNrIGZvciBtZW1vcnkgbGVha3MgaGFwcHkuKQorICovCisjZGVmaW5lIE1BWF9TVFJJREVfTEVOR1RIICg0MTk0MzA0IC8gKGludCkgZnMtPmJsb2Nrc2l6ZSkKK2VycmNvZGVfdCBleHQyZnNfemVyb19ibG9ja3MyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGJsaywgaW50IG51bSwKKwkJCSAgICAgIGJsazY0X3QgKnJldF9ibGssIGludCAqcmV0X2NvdW50KQoreworCWludAkJaiwgY291bnQ7CisJc3RhdGljIHZvaWQJKmJ1ZjsKKwlzdGF0aWMgaW50CXN0cmlkZV9sZW5ndGg7CisJZXJyY29kZV90CXJldHZhbDsKKworCS8qIElmIGZzIGlzIG51bGwsIGNsZWFuIHVwIHRoZSBzdGF0aWMgYnVmZmVyIGFuZCByZXR1cm4gKi8KKwlpZiAoIWZzKSB7CisJCWlmIChidWYpIHsKKwkJCWZyZWUoYnVmKTsKKwkJCWJ1ZiA9IDA7CisJCQlzdHJpZGVfbGVuZ3RoID0gMDsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBEZWFsIHdpdGggemVyb2luZyBsZXNzIHRoYW4gMSBibG9jayAqLworCWlmIChudW0gPD0gMCkKKwkJcmV0dXJuIDA7CisKKwkvKiBUcnkgYSB6ZXJvIG91dCBjb21tYW5kLCBpZiBzdXBwb3J0ZWQgKi8KKwlyZXR2YWwgPSBpb19jaGFubmVsX3plcm9vdXQoZnMtPmlvLCBibGssIG51bSk7CisJaWYgKHJldHZhbCA9PSAwKQorCQlyZXR1cm4gMDsKKworCS8qIEFsbG9jYXRlIHRoZSB6ZXJvaXppbmcgYnVmZmVyIGlmIG5lY2Vzc2FyeSAqLworCWlmIChudW0gPiBzdHJpZGVfbGVuZ3RoICYmIHN0cmlkZV9sZW5ndGggPCBNQVhfU1RSSURFX0xFTkdUSCkgeworCQl2b2lkICpwOworCQlpbnQgbmV3X3N0cmlkZSA9IG51bTsKKworCQlpZiAobmV3X3N0cmlkZSA+IE1BWF9TVFJJREVfTEVOR1RIKQorCQkJbmV3X3N0cmlkZSA9IE1BWF9TVFJJREVfTEVOR1RIOworCQlwID0gcmVhbGxvYyhidWYsIGZzLT5ibG9ja3NpemUgKiBuZXdfc3RyaWRlKTsKKwkJaWYgKCFwKQorCQkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCQlidWYgPSBwOworCQlzdHJpZGVfbGVuZ3RoID0gbmV3X3N0cmlkZTsKKwkJbWVtc2V0KGJ1ZiwgMCwgZnMtPmJsb2Nrc2l6ZSAqIHN0cmlkZV9sZW5ndGgpOworCX0KKwkvKiBPSywgZG8gdGhlIHdyaXRlIGxvb3AgKi8KKwlqPTA7CisJd2hpbGUgKGogPCBudW0pIHsKKwkJaWYgKGJsayAlIHN0cmlkZV9sZW5ndGgpIHsKKwkJCWNvdW50ID0gc3RyaWRlX2xlbmd0aCAtIChibGsgJSBzdHJpZGVfbGVuZ3RoKTsKKwkJCWlmIChjb3VudCA+IChudW0gLSBqKSkKKwkJCQljb3VudCA9IG51bSAtIGo7CisJCX0gZWxzZSB7CisJCQljb3VudCA9IG51bSAtIGo7CisJCQlpZiAoY291bnQgPiBzdHJpZGVfbGVuZ3RoKQorCQkJCWNvdW50ID0gc3RyaWRlX2xlbmd0aDsKKwkJfQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgYmxrLCBjb3VudCwgYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJaWYgKHJldF9jb3VudCkKKwkJCQkqcmV0X2NvdW50ID0gY291bnQ7CisJCQlpZiAocmV0X2JsaykKKwkJCQkqcmV0X2JsayA9IGJsazsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJaiArPSBjb3VudDsgYmxrICs9IGNvdW50OworCX0KKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc196ZXJvX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgYmxrX3QgYmxrLCBpbnQgbnVtLAorCQkJICAgICBibGtfdCAqcmV0X2JsaywgaW50ICpyZXRfY291bnQpCit7CisJYmxrNjRfdCByZXRfYmxrMjsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgYmxrLCBudW0sICZyZXRfYmxrMiwgcmV0X2NvdW50KTsKKwlpZiAocmV0dmFsKQorCQkqcmV0X2JsayA9IChibGtfdCkgcmV0X2JsazI7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIENhbGN1bGF0ZSB0aGUgaW5pdGlhbCBnb2FsIGJsb2NrIHRvIGJlIHJvdWdobHkgYXQgdGhlIG1pZGRsZSBvZiB0aGUKKyAqIGZpbGVzeXN0ZW0uICBQaWNrIGEgZ3JvdXAgdGhhdCBoYXMgdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGZyZWUKKyAqIGJsb2Nrcy4KKyAqLworc3RhdGljIGJsazY0X3QgZ2V0X21pZHBvaW50X2pvdXJuYWxfYmxvY2soZXh0Ml9maWxzeXMgZnMpCit7CisJZGdycF90CWdyb3VwLCBzdGFydCwgZW5kLCBpLCBsb2dfZmxleDsKKworCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIoZnMsIChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkJCQkgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spIC8gMik7CisJbG9nX2ZsZXggPSAxIDw8IGZzLT5zdXBlci0+c19sb2dfZ3JvdXBzX3Blcl9mbGV4OworCWlmIChmcy0+c3VwZXItPnNfbG9nX2dyb3Vwc19wZXJfZmxleCAmJiAoZ3JvdXAgPiBsb2dfZmxleCkpIHsKKwkJZ3JvdXAgPSBncm91cCAmIH4obG9nX2ZsZXggLSAxKTsKKwkJd2hpbGUgKChncm91cCA8IGZzLT5ncm91cF9kZXNjX2NvdW50KSAmJgorCQkgICAgICAgZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBncm91cCkgPT0gMCkKKwkJCWdyb3VwKys7CisJCWlmIChncm91cCA9PSBmcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJCWdyb3VwID0gMDsKKwkJc3RhcnQgPSBncm91cDsKKwl9IGVsc2UKKwkJc3RhcnQgPSAoZ3JvdXAgPiAwKSA/IGdyb3VwLTEgOiBncm91cDsKKwllbmQgPSAoKGdyb3VwKzEpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQpID8gZ3JvdXArMSA6IGdyb3VwOworCWdyb3VwID0gc3RhcnQ7CisJZm9yIChpID0gc3RhcnQgKyAxOyBpIDw9IGVuZDsgaSsrKQorCQlpZiAoZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBpKSA+CisJCSAgICBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGdyb3VwKSkKKwkJCWdyb3VwID0gaTsKKwlyZXR1cm4gZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywgZ3JvdXApOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgam91cm5hbCB1c2luZyBkaXJlY3QgSS9PIHJvdXRpbmVzLgorICovCitzdGF0aWMgZXJyY29kZV90IHdyaXRlX2pvdXJuYWxfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3Qgam91cm5hbF9pbm8sCisJCQkJICAgICBibGtfdCBudW1fYmxvY2tzLCBibGs2NF90IGdvYWwsIGludCBmbGFncykKK3sKKwljaGFyCQkJKmJ1ZjsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwl1bnNpZ25lZCBsb25nIGxvbmcJaW5vZGVfc2l6ZTsKKwlpbnQJCQlmYWxsb2NfZmxhZ3MgPSBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUOworCWJsazY0X3QJCQl6YmxrOworCisJaWYgKChyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2pvdXJuYWxfc3VwZXJibG9jayhmcywgbnVtX2Jsb2NrcywgZmxhZ3MsCisJCQkJCQkgICAgICAgJmJ1ZikpKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKChyZXR2YWwgPSBleHQyZnNfcmVhZF9iaXRtYXBzKGZzKSkpCisJCWdvdG8gb3V0MjsKKworCWlmICgocmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGpvdXJuYWxfaW5vLCAmaW5vZGUpKSkKKwkJZ290byBvdXQyOworCisJaWYgKGlub2RlLmlfYmxvY2tzID4gMCkgeworCQlyZXR2YWwgPSBFRVhJU1Q7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlpZiAoZ29hbCA9PSB+MFVMTCkKKwkJZ29hbCA9IGdldF9taWRwb2ludF9qb3VybmFsX2Jsb2NrKGZzKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKQorCQlpbm9kZS5pX2ZsYWdzIHw9IEVYVDRfRVhURU5UU19GTDsKKworCWlmICghKGZsYWdzICYgRVhUMl9NS0pPVVJOQUxfTEFaWUlOSVQpKQorCQlmYWxsb2NfZmxhZ3MgfD0gRVhUMl9GQUxMT0NBVEVfWkVST19CTE9DS1M7CisKKwlpbm9kZV9zaXplID0gKHVuc2lnbmVkIGxvbmcgbG9uZylmcy0+YmxvY2tzaXplICogbnVtX2Jsb2NrczsKKwlpbm9kZS5pX210aW1lID0gaW5vZGUuaV9jdGltZSA9IGZzLT5ub3cgPyBmcy0+bm93IDogdGltZSgwKTsKKwlpbm9kZS5pX2xpbmtzX2NvdW50ID0gMTsKKwlpbm9kZS5pX21vZGUgPSBMSU5VWF9TX0lGUkVHIHwgMDYwMDsKKwlyZXR2YWwgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsICZpbm9kZSwgaW5vZGVfc2l6ZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQyOworCisJcmV0dmFsID0gZXh0MmZzX2ZhbGxvY2F0ZShmcywgZmFsbG9jX2ZsYWdzLCBqb3VybmFsX2lubywKKwkJCQkgICZpbm9kZSwgZ29hbCwgMCwgbnVtX2Jsb2Nrcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQyOworCisJaWYgKChyZXR2YWwgPSBleHQyZnNfd3JpdGVfbmV3X2lub2RlKGZzLCBqb3VybmFsX2lubywgJmlub2RlKSkpCisJCWdvdG8gb3V0MjsKKworCXJldHZhbCA9IGV4dDJmc19ibWFwMihmcywgam91cm5hbF9pbm8sICZpbm9kZSwgTlVMTCwgMCwgMCwgTlVMTCwgJnpibGspOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0MjsKKworCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCB6YmxrLCAxLCBidWYpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0MjsKKworCW1lbWNweShmcy0+c3VwZXItPnNfam5sX2Jsb2NrcywgaW5vZGUuaV9ibG9jaywgRVhUMl9OX0JMT0NLUyo0KTsKKwlmcy0+c3VwZXItPnNfam5sX2Jsb2Nrc1sxNV0gPSBpbm9kZS5pX3NpemVfaGlnaDsKKwlmcy0+c3VwZXItPnNfam5sX2Jsb2Nrc1sxNl0gPSBpbm9kZS5pX3NpemU7CisJZnMtPnN1cGVyLT5zX2pubF9iYWNrdXBfdHlwZSA9IEVYVDNfSk5MX0JBQ0tVUF9CTE9DS1M7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCitvdXQyOgorCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogRmluZCBhIHJlYXNvbmFibGUgam91cm5hbCBmaWxlIHNpemUgKGluIGJsb2NrcykgZ2l2ZW4gdGhlIG51bWJlciBvZiBibG9ja3MKKyAqIGluIHRoZSBmaWxlc3lzdGVtLiAgRm9yIHZlcnkgc21hbGwgZmlsZXN5c3RlbXMsIGl0IGlzIG5vdCByZWFzb25hYmxlIHRvCisgKiBoYXZlIGEgam91cm5hbCB0aGF0IGZpbGxzIG1vcmUgdGhhbiBoYWxmIG9mIHRoZSBmaWxlc3lzdGVtLgorICoKKyAqIG4uYi4gY29tbWVudHMgYXNzdW1lIDRrIGJsb2NrcworICovCitpbnQgZXh0MmZzX2RlZmF1bHRfam91cm5hbF9zaXplKF9fdTY0IG51bV9ibG9ja3MpCit7CisJaWYgKG51bV9ibG9ja3MgPCAyMDQ4KQorCQlyZXR1cm4gLTE7CisJaWYgKG51bV9ibG9ja3MgPCAzMjc2OCkJCS8qIDEyOCBNQiAqLworCQlyZXR1cm4gKDEwMjQpOwkJCS8qIDQgTUIgKi8KKwlpZiAobnVtX2Jsb2NrcyA8IDI1NioxMDI0KQkvKiAxIEdCICovCisJCXJldHVybiAoNDA5Nik7CQkJLyogMTYgTUIgKi8KKwlpZiAobnVtX2Jsb2NrcyA8IDUxMioxMDI0KQkvKiAyIEdCICovCisJCXJldHVybiAoODE5Mik7CQkJLyogMzIgTUIgKi8KKwlpZiAobnVtX2Jsb2NrcyA8IDQwOTYqMTAyNCkJLyogMTYgR0IgKi8KKwkJcmV0dXJuICgxNjM4NCk7CQkJLyogNjQgTUIgKi8KKwlpZiAobnVtX2Jsb2NrcyA8IDgxOTIqMTAyNCkJLyogMzIgR0IgKi8KKwkJcmV0dXJuICgzMjc2OCk7CQkJLyogMTI4IE1CICovCisJaWYgKG51bV9ibG9ja3MgPCAxNjM4NCoxMDI0KQkvKiA2NCBHQiAqLworCQlyZXR1cm4gKDY1NTM2KTsJCQkvKiAyNTYgTUIgKi8KKwlpZiAobnVtX2Jsb2NrcyA8IDMyNzY4KjEwMjQpCS8qIDEyOCBHQiAqLworCQlyZXR1cm4gKDEzMTA3Mik7CQkvKiA1MTIgTUIgKi8KKwlyZXR1cm4gMjYyMTQ0OwkJCQkvKiAxIEdCICovCit9CisKK2ludCBleHQyZnNfam91cm5hbF9zYl9zdGFydChpbnQgYmxvY2tzaXplKQoreworCWlmIChibG9ja3NpemUgPT0gRVhUMl9NSU5fQkxPQ0tfU0laRSkKKwkJcmV0dXJuIDI7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBqb3VybmFsIGRldmljZSB0byBhIGZpbGVzeXN0ZW0KKyAqLworZXJyY29kZV90IGV4dDJmc19hZGRfam91cm5hbF9kZXZpY2UoZXh0Ml9maWxzeXMgZnMsIGV4dDJfZmlsc3lzIGpvdXJuYWxfZGV2KQoreworCXN0cnVjdCBzdGF0CXN0OworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJYnVmW1NVUEVSQkxPQ0tfU0laRV07CisJam91cm5hbF9zdXBlcmJsb2NrX3QJKmpzYjsKKwlpbnQJCXN0YXJ0OworCV9fdTMyCQlpLCBucl91c2VyczsKKworCS8qIE1ha2Ugc3VyZSB0aGUgZGV2aWNlIGV4aXN0cyBhbmQgaXMgYSBibG9jayBkZXZpY2UgKi8KKwlpZiAoc3RhdChqb3VybmFsX2Rldi0+ZGV2aWNlX25hbWUsICZzdCkgPCAwKQorCQlyZXR1cm4gZXJybm87CisKKwlpZiAoIVNfSVNCTEsoc3Quc3RfbW9kZSkpCisJCXJldHVybiBFWFQyX0VUX0pPVVJOQUxfTk9UX0JMT0NLOyAvKiBNdXN0IGJlIGEgYmxvY2sgZGV2aWNlICovCisKKwkvKiBHZXQgdGhlIGpvdXJuYWwgc3VwZXJibG9jayAqLworCXN0YXJ0ID0gZXh0MmZzX2pvdXJuYWxfc2Jfc3RhcnQoam91cm5hbF9kZXYtPmJsb2Nrc2l6ZSk7CisJaWYgKChyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoam91cm5hbF9kZXYtPmlvLCBzdGFydCwKKwkJCQkJICAgIC1TVVBFUkJMT0NLX1NJWkUsCisJCQkJCSAgICBidWYpKSkKKwkJcmV0dXJuIHJldHZhbDsKKworCWpzYiA9IChqb3VybmFsX3N1cGVyYmxvY2tfdCAqKSBidWY7CisJaWYgKChqc2ItPnNfaGVhZGVyLmhfbWFnaWMgIT0gKHVuc2lnbmVkKSBudG9obChKRlNfTUFHSUNfTlVNQkVSKSkgfHwKKwkgICAgKGpzYi0+c19oZWFkZXIuaF9ibG9ja3R5cGUgIT0gKHVuc2lnbmVkKSBudG9obChKRlNfU1VQRVJCTE9DS19WMikpKQorCQlyZXR1cm4gRVhUMl9FVF9OT19KT1VSTkFMX1NCOworCisJaWYgKG50b2hsKGpzYi0+c19ibG9ja3NpemUpICE9ICh1bnNpZ25lZCBsb25nKSBmcy0+YmxvY2tzaXplKQorCQlyZXR1cm4gRVhUMl9FVF9VTkVYUEVDVEVEX0JMT0NLX1NJWkU7CisKKwkvKiBDaGVjayBhbmQgc2VlIGlmIHRoaXMgZmlsZXN5c3RlbSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkICovCisJbnJfdXNlcnMgPSBudG9obChqc2ItPnNfbnJfdXNlcnMpOworCWZvciAoaT0wOyBpIDwgbnJfdXNlcnM7IGkrKykgeworCQlpZiAobWVtY21wKGZzLT5zdXBlci0+c191dWlkLAorCQkJICAgJmpzYi0+c191c2Vyc1tpKjE2XSwgMTYpID09IDApCisJCQlicmVhazsKKwl9CisJaWYgKGkgPj0gbnJfdXNlcnMpIHsKKwkJbWVtY3B5KCZqc2ItPnNfdXNlcnNbbnJfdXNlcnMqMTZdLAorCQkgICAgICAgZnMtPnN1cGVyLT5zX3V1aWQsIDE2KTsKKwkJanNiLT5zX25yX3VzZXJzID0gaHRvbmwobnJfdXNlcnMrMSk7CisJfQorCisJLyogV3JpdGViYWNrIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgKi8KKwlpZiAoKHJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoam91cm5hbF9kZXYtPmlvLCBzdGFydCwKKwkJCQkJICAgIC1TVVBFUkJMT0NLX1NJWkUsIGJ1ZikpKQorCQlyZXR1cm4gcmV0dmFsOworCisJZnMtPnN1cGVyLT5zX2pvdXJuYWxfaW51bSA9IDA7CisJZnMtPnN1cGVyLT5zX2pvdXJuYWxfZGV2ID0gc3Quc3RfcmRldjsKKwltZW1jcHkoZnMtPnN1cGVyLT5zX2pvdXJuYWxfdXVpZCwganNiLT5zX3V1aWQsCisJICAgICAgIHNpemVvZihmcy0+c3VwZXItPnNfam91cm5hbF91dWlkKSk7CisJbWVtc2V0KGZzLT5zdXBlci0+c19qbmxfYmxvY2tzLCAwLCBzaXplb2YoZnMtPnN1cGVyLT5zX2pubF9ibG9ja3MpKTsKKwlleHQyZnNfc2V0X2ZlYXR1cmVfam91cm5hbChmcy0+c3VwZXIpOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gYWRkcyBhIGpvdXJuYWwgaW5vZGUgdG8gYSBmaWxlc3lzdGVtLCB1c2luZyBlaXRoZXIKKyAqIFBPU0lYIHJvdXRpbmVzIGlmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQsIG9yIHVzaW5nIGRpcmVjdCBJL08KKyAqIGZ1bmN0aW9ucyBpZiBpdCBpcyBub3QuCisgKi8KK2VycmNvZGVfdCBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGUyKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBudW1fYmxvY2tzLAorCQkJCSAgICBibGs2NF90IGdvYWwsIGludCBmbGFncykKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlleHQyX2lub190CQlqb3VybmFsX2lubzsKKwlzdHJ1Y3Qgc3RhdAkJc3Q7CisJY2hhcgkJCWpmaWxlWzEwMjRdOworCWludAkJCW1vdW50X2ZsYWdzOworCWludAkJCWZkID0gLTE7CisKKwlpZiAoZmxhZ3MgJiBFWFQyX01LSk9VUk5BTF9OT19NTlRfQ0hFQ0spCisJCW1vdW50X2ZsYWdzID0gMDsKKwllbHNlIGlmICgocmV0dmFsID0gZXh0MmZzX2NoZWNrX21vdW50X3BvaW50KGZzLT5kZXZpY2VfbmFtZSwKKwkJCQkJCSAgICAmbW91bnRfZmxhZ3MsCisJCQkJCQkgICAgamZpbGUsIHNpemVvZihqZmlsZSktMTApKSkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworI2lmIEhBVkVfRVhUMl9JT0NUTFMKKwkJaW50IGYgPSAwOworI2VuZGlmCisJCXN0cmNhdChqZmlsZSwgIi8uam91cm5hbCIpOworCisJCS8qCisJCSAqIElmIC4uLi8uam91cm5hbCBhbHJlYWR5IGV4aXN0cywgbWFrZSBzdXJlIGFueQorCQkgKiBpbW11dGFibGUgb3IgYXBwZW5kLW9ubHkgZmxhZ3MgYXJlIGNsZWFyZWQuCisJCSAqLworI2lmIGRlZmluZWQoSEFWRV9DSEZMQUdTKSAmJiBkZWZpbmVkKFVGX05PRFVNUCkKKwkJKHZvaWQpIGNoZmxhZ3MgKGpmaWxlLCAwKTsKKyNlbHNlCisjaWYgSEFWRV9FWFQyX0lPQ1RMUworCQlmZCA9IG9wZW4oamZpbGUsIE9fUkRPTkxZKTsKKwkJaWYgKGZkID49IDApIHsKKwkJCXJldHZhbCA9IGlvY3RsKGZkLCBFWFQyX0lPQ19TRVRGTEFHUywgJmYpOworCQkJY2xvc2UoZmQpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisjZW5kaWYKKyNlbmRpZgorCisJCS8qIENyZWF0ZSB0aGUgam91cm5hbCBmaWxlICovCisJCWlmICgoZmQgPSBvcGVuKGpmaWxlLCBPX0NSRUFUfE9fV1JPTkxZLCAwNjAwKSkgPCAwKQorCQkJcmV0dXJuIGVycm5vOworCisJCS8qIE5vdGUgdGhhdCB3ZSBjYW4ndCBkbyBsYXp5IGpvdXJuYWwgaW5pdGlhbGl6YXRpb24gZm9yIG1vdW50ZWQKKwkJICogZmlsZXN5c3RlbXMsIHNpbmNlIHRoZSB6ZXJvIHdyaXRpbmcgaXMgYWxzbyBhbGxvY2F0aW5nIHRoZQorCQkgKiBqb3VybmFsIGJsb2Nrcy4gIFdlIGNvdWxkIHVzZSBmYWxsb2NhdGUsIGJ1dCBub3QgYWxsIGtlcm5lbHMKKwkJICogc3VwcG9ydCB0aGF0LCBhbmQgY3JlYXRpbmcgYSBqb3VybmFsIG9uIGEgbW91bnRlZCBleHQyCisJCSAqIGZpbGVzeXN0ZW1zIGlzIGV4dHJlbWVseSByYXJlIHRoZXNlIGRheXMuLi4gIElnbm9yZSBpdC4gKi8KKwkJZmxhZ3MgJj0gfkVYVDJfTUtKT1VSTkFMX0xBWllJTklUOworCisJCWlmICgocmV0dmFsID0gd3JpdGVfam91cm5hbF9maWxlKGZzLCBqZmlsZSwgbnVtX2Jsb2NrcywgZmxhZ3MpKSkKKwkJCWdvdG8gZXJyb3V0OworCisJCS8qIEdldCBpbm9kZSBudW1iZXIgb2YgdGhlIGpvdXJuYWwgZmlsZSAqLworCQlpZiAoZnN0YXQoZmQsICZzdCkgPCAwKSB7CisJCQlyZXR2YWwgPSBlcnJubzsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisKKyNpZiBkZWZpbmVkKEhBVkVfQ0hGTEFHUykgJiYgZGVmaW5lZChVRl9OT0RVTVApCisJCXJldHZhbCA9IGZjaGZsYWdzIChmZCwgVUZfTk9EVU1QfFVGX0lNTVVUQUJMRSk7CisjZWxzZQorI2lmIEhBVkVfRVhUMl9JT0NUTFMKKwkJaWYgKGlvY3RsKGZkLCBFWFQyX0lPQ19HRVRGTEFHUywgJmYpIDwgMCkgeworCQkJcmV0dmFsID0gZXJybm87CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlmIHw9IEVYVDJfTk9EVU1QX0ZMIHwgRVhUMl9JTU1VVEFCTEVfRkw7CisJCXJldHZhbCA9IGlvY3RsKGZkLCBFWFQyX0lPQ19TRVRGTEFHUywgJmYpOworI2VuZGlmCisjZW5kaWYKKwkJaWYgKHJldHZhbCkgeworCQkJcmV0dmFsID0gZXJybm87CisJCQlnb3RvIGVycm91dDsKKwkJfQorCisJCWlmIChjbG9zZShmZCkgPCAwKSB7CisJCQlyZXR2YWwgPSBlcnJubzsKKwkJCWZkID0gLTE7CisJCQlnb3RvIGVycm91dDsKKwkJfQorCQlqb3VybmFsX2lubyA9IHN0LnN0X2lubzsKKwkJbWVtc2V0KGZzLT5zdXBlci0+c19qbmxfYmxvY2tzLCAwLAorCQkgICAgICAgc2l6ZW9mKGZzLT5zdXBlci0+c19qbmxfYmxvY2tzKSk7CisJfSBlbHNlIHsKKwkJaWYgKChtb3VudF9mbGFncyAmIEVYVDJfTUZfQlVTWSkgJiYKKwkJICAgICEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0VYQ0xVU0lWRSkpIHsKKwkJCXJldHZhbCA9IEVCVVNZOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJam91cm5hbF9pbm8gPSBFWFQyX0pPVVJOQUxfSU5POworCQlpZiAoKHJldHZhbCA9IHdyaXRlX2pvdXJuYWxfaW5vZGUoZnMsIGpvdXJuYWxfaW5vLAorCQkJCQkJICBudW1fYmxvY2tzLCBnb2FsLCBmbGFncykpKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlmcy0+c3VwZXItPnNfam91cm5hbF9pbnVtID0gam91cm5hbF9pbm87CisJZnMtPnN1cGVyLT5zX2pvdXJuYWxfZGV2ID0gMDsKKwltZW1zZXQoZnMtPnN1cGVyLT5zX2pvdXJuYWxfdXVpZCwgMCwKKwkgICAgICAgc2l6ZW9mKGZzLT5zdXBlci0+c19qb3VybmFsX3V1aWQpKTsKKwlleHQyZnNfc2V0X2ZlYXR1cmVfam91cm5hbChmcy0+c3VwZXIpOworCisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCXJldHVybiAwOworZXJyb3V0OgorCWlmIChmZCA+PSAwKQorCQljbG9zZShmZCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90IGV4dDJmc19hZGRfam91cm5hbF9pbm9kZShleHQyX2ZpbHN5cyBmcywgYmxrX3QgbnVtX2Jsb2NrcywgaW50IGZsYWdzKQoreworCXJldHVybiBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGUyKGZzLCBudW1fYmxvY2tzLCB+MFVMTCwgZmxhZ3MpOworfQorCisKKyNpZmRlZiBERUJVRworbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyCQkqZGV2aWNlX25hbWU7CisJZXh0Ml9maWxzeXMJZnM7CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgZmlsZXN5c3RlbVxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCWRldmljZV9uYW1lID0gYXJndlsxXTsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuIChkZXZpY2VfbmFtZSwgRVhUMl9GTEFHX1JXLCAwLCAwLAorCQkJICAgICAgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBvcGVuaW5nICVzIiwgZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19hZGRfam91cm5hbF9pbm9kZShmcywgSkZTX01JTl9KT1VSTkFMX0JMT0NLUywgMCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIGFkZGluZyBqb3VybmFsIHRvICVzIiwKKwkJCWRldmljZV9uYW1lKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2ZsdXNoKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCXByaW50ZigiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuXG4iKTsKKwl9CisJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwlleGl0KDApOworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL21tcC5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbW1wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3NzFkZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL21tcC5jCkBAIC0wLDAgKzEsNDY0IEBACisvKgorICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiAoTU1QKS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgV2hhbWNsb3VkLCBJbmMuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9HTlVfU09VUkNFCisjZGVmaW5lIF9HTlVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0RFRkFVTFRfU09VUkNFCisjZGVmaW5lIF9ERUZBVUxUX1NPVVJDRQkvKiBzaW5jZSBnbGliYyAyLjIwIF9TVklEX1NPVVJDRSBpcyBkZXByZWNhdGVkICovCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorCisjaWZuZGVmIE9fRElSRUNUCisjZGVmaW5lIE9fRElSRUNUIDAKKyNlbmRpZgorCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKyNpZm5kZWYgQ09ORklHX01NUAorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCisjZW5kaWYKKworZXJyY29kZV90IGV4dDJmc19tbXBfcmVhZChleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBtbXBfYmxrLCB2b2lkICpidWYpCit7CisjaWZkZWYgQ09ORklHX01NUAorCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfY21wOworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCisJaWYgKChtbXBfYmxrIDw9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCSAgICAobW1wX2JsayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKQorCQlyZXR1cm4gRVhUMl9FVF9NTVBfQkFEX0JMT0NLOworCisJLyogZXh0MmZzX29wZW4oKSByZXNlcnZlcyBmZDAsMSwyIHRvIGF2b2lkIHN0ZGlvIGNvbGxpc2lvbiwgc28gY2hlY2tpbmcKKwkgKiBtbXBfZmQgPD0gMCBpcyBPSyB0byB2YWxpZGF0ZSB0aGF0IHRoZSBmZCBpcyB2YWxpZC4gIFRoaXMgb3BlbnMgaXRzCisJICogb3duIGZkIHRvIHJlYWQgdGhlIE1NUCBibG9jayB0byBlbnN1cmUgdGhhdCBpdCBpcyB1c2luZyBPX0RJUkVDVCwKKwkgKiByZWdhcmRsZXNzIG9mIGhvdyB0aGUgaW9fbWFuYWdlciBpcyBkb2luZyByZWFkcywgdG8gYXZvaWQgY2FjaGluZyBvZgorCSAqIHRoZSBNTVAgYmxvY2sgYnkgdGhlIGlvX21hbmFnZXIgb3IgdGhlIFZNLiAgSXQgbmVlZHMgdG8gYmUgZnJlc2guICovCisJaWYgKGZzLT5tbXBfZmQgPD0gMCkgeworCQlmcy0+bW1wX2ZkID0gb3Blbihmcy0+ZGV2aWNlX25hbWUsIE9fUkRXUiB8IE9fRElSRUNUKTsKKwkJaWYgKGZzLT5tbXBfZmQgPCAwKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX01NUF9PUEVOX0RJUkVDVDsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJaWYgKGZzLT5tbXBfY21wID09IE5VTEwpIHsKKwkJaW50IGFsaWduID0gZXh0MmZzX2dldF9kaW9fYWxpZ25tZW50KGZzLT5tbXBfZmQpOworCisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtYWxpZ24oZnMtPmJsb2Nrc2l6ZSwgYWxpZ24sCisJCQkJCSAgICAgJmZzLT5tbXBfY21wKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJaWYgKChibGs2NF90KSBleHQyZnNfbGxzZWVrKGZzLT5tbXBfZmQsIG1tcF9ibGsgKiBmcy0+YmxvY2tzaXplLAorCQkJCSAgICBTRUVLX1NFVCkgIT0KKwkgICAgbW1wX2JsayAqIGZzLT5ibG9ja3NpemUpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9MTFNFRUtfRkFJTEVEOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAocmVhZChmcy0+bW1wX2ZkLCBmcy0+bW1wX2NtcCwgZnMtPmJsb2Nrc2l6ZSkgIT0gZnMtPmJsb2Nrc2l6ZSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX1NIT1JUX1JFQUQ7CisJCWdvdG8gb3V0OworCX0KKworCW1tcF9jbXAgPSBmcy0+bW1wX2NtcDsKKworCWlmICghKGZzLT5mbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpICYmCisJICAgICFleHQyZnNfbW1wX2NzdW1fdmVyaWZ5KGZzLCBtbXBfY21wKSkKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfQ1NVTV9JTlZBTElEOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZXh0MmZzX3N3YXBfbW1wKG1tcF9jbXApOworI2VuZGlmCisKKwlpZiAoYnVmICE9IE5VTEwgJiYgYnVmICE9IGZzLT5tbXBfY21wKQorCQltZW1jcHkoYnVmLCBmcy0+bW1wX2NtcCwgZnMtPmJsb2Nrc2l6ZSk7CisKKwlpZiAobW1wX2NtcC0+bW1wX21hZ2ljICE9IEVYVDRfTU1QX01BR0lDKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfTU1QX01BR0lDX0lOVkFMSUQ7CisJCWdvdG8gb3V0OworCX0KKworb3V0OgorCXJldHVybiByZXR2YWw7CisjZWxzZQorCXJldHVybiBFWFQyX0VUX09QX05PVF9TVVBQT1JURUQ7CisjZW5kaWYKK30KKworZXJyY29kZV90IGV4dDJmc19tbXBfd3JpdGUoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgbW1wX2Jsaywgdm9pZCAqYnVmKQoreworI2lmZGVmIENPTkZJR19NTVAKKwlzdHJ1Y3QgbW1wX3N0cnVjdCAqbW1wX3MgPSBidWY7CisJc3RydWN0IHRpbWV2YWwgdHY7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisKKwlnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKwltbXBfcy0+bW1wX3RpbWUgPSB0di50dl9zZWM7CisJZnMtPm1tcF9sYXN0X3dyaXR0ZW4gPSB0di50dl9zZWM7CisKKwlpZiAoZnMtPnN1cGVyLT5zX21tcF9ibG9jayA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrIHx8CisJICAgIGZzLT5zdXBlci0+c19tbXBfYmxvY2sgPiBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpCisJCXJldHVybiBFWFQyX0VUX01NUF9CQURfQkxPQ0s7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlleHQyZnNfc3dhcF9tbXAobW1wX3MpOworI2VuZGlmCisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX2NzdW1fc2V0KGZzLCBtbXBfcyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCS8qIEkgd2FzIHRlbXB0ZWQgdG8gbWFrZSB0aGlzIHVzZSBPX0RJUkVDVCBhbmQgdGhlIG1tcF9mZCwgYnV0CisJICogdGhpcyBjYXVzZWQgbm8gZW5kIG9mIGdyaWVmLCB3aGlsZSBsZWF2aW5nIGl0IGFzLWlzIHdvcmtzLiAqLworCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCBtbXBfYmxrLCAtKGludClzaXplb2Yoc3RydWN0IG1tcF9zdHJ1Y3QpLCBidWYpOworCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZXh0MmZzX3N3YXBfbW1wKG1tcF9zKTsKKyNlbmRpZgorCisJLyogTWFrZSBzdXJlIHRoZSBibG9jayBnZXRzIHRvIGRpc2sgcXVpY2tseSAqLworCWlvX2NoYW5uZWxfZmx1c2goZnMtPmlvKTsKKwlyZXR1cm4gcmV0dmFsOworI2Vsc2UKKwlyZXR1cm4gRVhUMl9FVF9PUF9OT1RfU1VQUE9SVEVEOworI2VuZGlmCit9CisKKyNpZmRlZiBIQVZFX1NSQU5ET00KKyNkZWZpbmUgc3JhbmQoeCkJc3JhbmRvbSh4KQorI2RlZmluZSByYW5kKCkJCXJhbmRvbSgpCisjZW5kaWYKKwordW5zaWduZWQgZXh0MmZzX21tcF9uZXdfc2VxKHZvaWQpCit7CisjaWZkZWYgQ09ORklHX01NUAorCXVuc2lnbmVkIG5ld19zZXE7CisJc3RydWN0IHRpbWV2YWwgdHY7CisKKwlnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKwlzcmFuZCgoZ2V0cGlkKCkgPDwgMTYpIF4gZ2V0dWlkKCkgXiB0di50dl9zZWMgXiB0di50dl91c2VjKTsKKworCWdldHRpbWVvZmRheSgmdHYsIDApOworCS8qIENyYW5rIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciBhIGZldyB0aW1lcyAqLworCWZvciAobmV3X3NlcSA9ICh0di50dl9zZWMgXiB0di50dl91c2VjKSAmIDB4MUY7IG5ld19zZXEgPiAwOyBuZXdfc2VxLS0pCisJCXJhbmQoKTsKKworCWRvIHsKKwkJbmV3X3NlcSA9IHJhbmQoKTsKKwl9IHdoaWxlIChuZXdfc2VxID4gRVhUNF9NTVBfU0VRX01BWCk7CisKKwlyZXR1cm4gbmV3X3NlcTsKKyNlbHNlCisJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKyNlbmRpZgorfQorCisjaWZkZWYgQ09ORklHX01NUAorc3RhdGljIGVycmNvZGVfdCBleHQyZnNfbW1wX3Jlc2V0KGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfcyA9IE5VTEw7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisKKwlpZiAoZnMtPm1tcF9idWYgPT0gTlVMTCkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmZnMtPm1tcF9idWYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJfQorCisJbWVtc2V0KGZzLT5tbXBfYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwltbXBfcyA9IGZzLT5tbXBfYnVmOworCisJbW1wX3MtPm1tcF9tYWdpYyA9IEVYVDRfTU1QX01BR0lDOworCW1tcF9zLT5tbXBfc2VxID0gRVhUNF9NTVBfU0VRX0NMRUFOOworCW1tcF9zLT5tbXBfdGltZSA9IDA7CisjaWYgX0JTRF9TT1VSQ0UgfHwgX1hPUEVOX1NPVVJDRSA+PSA1MDAKKwlnZXRob3N0bmFtZShtbXBfcy0+bW1wX25vZGVuYW1lLCBzaXplb2YobW1wX3MtPm1tcF9ub2RlbmFtZSkpOworI2Vsc2UKKwltbXBfcy0+bW1wX25vZGVuYW1lWzBdID0gJ1wwJzsKKyNlbmRpZgorCXN0cm5jcHkobW1wX3MtPm1tcF9iZGV2bmFtZSwgZnMtPmRldmljZV9uYW1lLAorCQlzaXplb2YobW1wX3MtPm1tcF9iZGV2bmFtZSkpOworCisJbW1wX3MtPm1tcF9jaGVja19pbnRlcnZhbCA9IGZzLT5zdXBlci0+c19tbXBfdXBkYXRlX2ludGVydmFsOworCWlmIChtbXBfcy0+bW1wX2NoZWNrX2ludGVydmFsIDwgRVhUNF9NTVBfTUlOX0NIRUNLX0lOVEVSVkFMKQorCQltbXBfcy0+bW1wX2NoZWNrX2ludGVydmFsID0gRVhUNF9NTVBfTUlOX0NIRUNLX0lOVEVSVkFMOworCisJcmV0dmFsID0gZXh0MmZzX21tcF93cml0ZShmcywgZnMtPnN1cGVyLT5zX21tcF9ibG9jaywgZnMtPm1tcF9idWYpOworb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisjZW5kaWYKKworZXJyY29kZV90IGV4dDJmc19tbXBfdXBkYXRlKGV4dDJfZmlsc3lzIGZzKQoreworCXJldHVybiBleHQyZnNfbW1wX3VwZGF0ZTIoZnMsIDApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX21tcF9jbGVhcihleHQyX2ZpbHN5cyBmcykKK3sKKyNpZmRlZiBDT05GSUdfTU1QCisJZXJyY29kZV90IHJldHZhbCA9IDA7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3Jlc2V0KGZzKTsKKworCXJldHVybiByZXR2YWw7CisjZWxzZQorCXJldHVybiBFWFQyX0VUX09QX05PVF9TVVBQT1JURUQ7CisjZW5kaWYKK30KKworZXJyY29kZV90IGV4dDJmc19tbXBfaW5pdChleHQyX2ZpbHN5cyBmcykKK3sKKyNpZmRlZiBDT05GSUdfTU1QCisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gZnMtPnN1cGVyOworCWJsazY0X3QgbW1wX2Jsb2NrOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCA9PSAwKQorCQlzYi0+c19tbXBfdXBkYXRlX2ludGVydmFsID0gRVhUNF9NTVBfVVBEQVRFX0lOVEVSVkFMOworCS8qIFRoaXMgaXMgcHJvYmFibHkgZXhjZXNzaXZlbHkgbGFyZ2UsIGJ1dCB3aG8ga25vd3M/ICovCisJZWxzZSBpZiAoc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCA+IEVYVDRfTU1QX01BWF9VUERBVEVfSU5URVJWQUwpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlpZiAoZnMtPm1tcF9idWYgPT0gTlVMTCkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmZnMtPm1tcF9idWYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2FsbG9jX2Jsb2NrMihmcywgMCwgZnMtPm1tcF9idWYsICZtbXBfYmxvY2spOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworCisJc2ItPnNfbW1wX2Jsb2NrID0gbW1wX2Jsb2NrOworCisJcmV0dmFsID0gZXh0MmZzX21tcF9yZXNldChmcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQ7CisKK291dDoKKwlyZXR1cm4gcmV0dmFsOworI2Vsc2UKKwlyZXR1cm4gRVhUMl9FVF9PUF9OT1RfU1VQUE9SVEVEOworI2VuZGlmCit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCB0aGUgZnMgaXMgbm90IG1vdW50ZWQgb3IgYmVpbmcgZnNjaydlZCB3aGlsZSBvcGVuaW5nIHRoZSBmcy4KKyAqLworZXJyY29kZV90IGV4dDJmc19tbXBfc3RhcnQoZXh0Ml9maWxzeXMgZnMpCit7CisjaWZkZWYgQ09ORklHX01NUAorCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfczsKKwl1bnNpZ25lZCBzZXE7CisJdW5zaWduZWQgaW50IG1tcF9jaGVja19pbnRlcnZhbDsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKworCWlmIChmcy0+bW1wX2J1ZiA9PSBOVUxMKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZmcy0+bW1wX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG1tcF9lcnJvcjsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3JlYWQoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIGZzLT5tbXBfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG1tcF9lcnJvcjsKKworCW1tcF9zID0gZnMtPm1tcF9idWY7CisKKwltbXBfY2hlY2tfaW50ZXJ2YWwgPSBmcy0+c3VwZXItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbDsKKwlpZiAobW1wX2NoZWNrX2ludGVydmFsIDwgRVhUNF9NTVBfTUlOX0NIRUNLX0lOVEVSVkFMKQorCQltbXBfY2hlY2tfaW50ZXJ2YWwgPSBFWFQ0X01NUF9NSU5fQ0hFQ0tfSU5URVJWQUw7CisKKwlzZXEgPSBtbXBfcy0+bW1wX3NlcTsKKwlpZiAoc2VxID09IEVYVDRfTU1QX1NFUV9DTEVBTikKKwkJZ290byBjbGVhbl9zZXE7CisJaWYgKHNlcSA9PSBFWFQ0X01NUF9TRVFfRlNDSykgeworCQlyZXR2YWwgPSBFWFQyX0VUX01NUF9GU0NLX09OOworCQlnb3RvIG1tcF9lcnJvcjsKKwl9CisKKwlpZiAoc2VxID4gRVhUNF9NTVBfU0VRX0ZTQ0spIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfVU5LTk9XTl9TRVE7CisJCWdvdG8gbW1wX2Vycm9yOworCX0KKworCS8qCisJICogSWYgY2hlY2tfaW50ZXJ2YWwgaW4gTU1QIGJsb2NrIGlzIGxhcmdlciwgdXNlIHRoYXQgaW5zdGVhZCBvZgorCSAqIGNoZWNrX2ludGVydmFsIGZyb20gdGhlIHN1cGVyYmxvY2suCisJICovCisJaWYgKG1tcF9zLT5tbXBfY2hlY2tfaW50ZXJ2YWwgPiBtbXBfY2hlY2tfaW50ZXJ2YWwpCisJCW1tcF9jaGVja19pbnRlcnZhbCA9IG1tcF9zLT5tbXBfY2hlY2tfaW50ZXJ2YWw7CisKKwlzbGVlcCgyICogbW1wX2NoZWNrX2ludGVydmFsICsgMSk7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3JlYWQoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIGZzLT5tbXBfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG1tcF9lcnJvcjsKKworCWlmIChzZXEgIT0gbW1wX3MtPm1tcF9zZXEpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfRkFJTEVEOworCQlnb3RvIG1tcF9lcnJvcjsKKwl9CisKK2NsZWFuX3NlcToKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlnb3RvIG1tcF9lcnJvcjsKKworCW1tcF9zLT5tbXBfc2VxID0gc2VxID0gZXh0MmZzX21tcF9uZXdfc2VxKCk7CisjaWYgX0JTRF9TT1VSQ0UgfHwgX1hPUEVOX1NPVVJDRSA+PSA1MDAKKwlnZXRob3N0bmFtZShtbXBfcy0+bW1wX25vZGVuYW1lLCBzaXplb2YobW1wX3MtPm1tcF9ub2RlbmFtZSkpOworI2Vsc2UKKwlzdHJjcHkobW1wX3MtPm1tcF9ub2RlbmFtZSwgInVua25vd24gaG9zdCIpOworI2VuZGlmCisJc3RybmNweShtbXBfcy0+bW1wX2JkZXZuYW1lLCBmcy0+ZGV2aWNlX25hbWUsCisJCXNpemVvZihtbXBfcy0+bW1wX2JkZXZuYW1lKSk7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3dyaXRlKGZzLCBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrLCBmcy0+bW1wX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBtbXBfZXJyb3I7CisKKwlzbGVlcCgyICogbW1wX2NoZWNrX2ludGVydmFsICsgMSk7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3JlYWQoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIGZzLT5tbXBfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG1tcF9lcnJvcjsKKworCWlmIChzZXEgIT0gbW1wX3MtPm1tcF9zZXEpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfRkFJTEVEOworCQlnb3RvIG1tcF9lcnJvcjsKKwl9CisKKwltbXBfcy0+bW1wX3NlcSA9IEVYVDRfTU1QX1NFUV9GU0NLOworCXJldHZhbCA9IGV4dDJmc19tbXBfd3JpdGUoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIGZzLT5tbXBfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG1tcF9lcnJvcjsKKworCXJldHVybiAwOworCittbXBfZXJyb3I6CisJcmV0dXJuIHJldHZhbDsKKyNlbHNlCisJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKyNlbmRpZgorfQorCisvKgorICogQ2xlYXIgdGhlIE1NUCB1c2FnZSBpbiB0aGUgZmlsZXN5c3RlbS4gIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbgorICogZXJyb3IgRVhUMl9FVF9NTVBfQ0hBTkdFX0FCT1JUIGl0IG1lYW5zIHRoZSBmaWxlc3lzdGVtIHdhcyBtb2RpZmllZAorICogYnkgc29tZSBvdGhlciBwcm9jZXNzIHdoaWxlIGluIHVzZSwgYW5kIGNoYW5nZXMgc2hvdWxkIGJlIGRyb3BwZWQsIG9yCisgKiByaXNrIGZpbGVzeXN0ZW0gY29ycnVwdGlvbi4KKyAqLworZXJyY29kZV90IGV4dDJmc19tbXBfc3RvcChleHQyX2ZpbHN5cyBmcykKK3sKKyNpZmRlZiBDT05GSUdfTU1QCisJc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCwgKm1tcF9jbXA7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tbXAoZnMtPnN1cGVyKSB8fAorCSAgICAhKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykgfHwgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19TS0lQX01NUCkpCisJCWdvdG8gbW1wX2Vycm9yOworCisJcmV0dmFsID0gZXh0MmZzX21tcF9yZWFkKGZzLCBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrLCBmcy0+bW1wX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBtbXBfZXJyb3I7CisKKwkvKiBDaGVjayBpZiB0aGUgTU1QIGJsb2NrIGlzIG5vdCBjaGFuZ2VkLiAqLworCW1tcCA9IGZzLT5tbXBfYnVmOworCW1tcF9jbXAgPSBmcy0+bW1wX2NtcDsKKwlpZiAobWVtY21wKG1tcCwgbW1wX2NtcCwgc2l6ZW9mKCptbXBfY21wKSkpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9NTVBfQ0hBTkdFX0FCT1JUOworCQlnb3RvIG1tcF9lcnJvcjsKKwl9CisKKwltbXBfY21wLT5tbXBfc2VxID0gRVhUNF9NTVBfU0VRX0NMRUFOOworCXJldHZhbCA9IGV4dDJmc19tbXBfd3JpdGUoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIGZzLT5tbXBfY21wKTsKKworbW1wX2Vycm9yOgorCWlmIChmcy0+bW1wX2ZkID4gMCkgeworCQljbG9zZShmcy0+bW1wX2ZkKTsKKwkJZnMtPm1tcF9mZCA9IC0xOworCX0KKworCXJldHVybiByZXR2YWw7CisjZWxzZQorCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21tcChmcy0+c3VwZXIpIHx8CisJICAgICEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSB8fCAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1NLSVBfTU1QKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gRVhUMl9FVF9PUF9OT1RfU1VQUE9SVEVEOworI2VuZGlmCit9CisKKyNkZWZpbmUgRVhUMl9NSU5fTU1QX1VQREFURV9JTlRFUlZBTCA2MAorCisvKgorICogVXBkYXRlIHRoZSBvbi1kaXNrIG1tcCBidWZmZXIsIGFmdGVyIGNoZWNraW5nIHRoYXQgaXQgaGFzbid0IGJlZW4gY2hhbmdlZC4KKyAqLworZXJyY29kZV90IGV4dDJmc19tbXBfdXBkYXRlMihleHQyX2ZpbHN5cyBmcywgaW50IGltbWVkaWF0ZWx5KQoreworI2lmZGVmIENPTkZJR19NTVAKKwlzdHJ1Y3QgbW1wX3N0cnVjdCAqbW1wLCAqbW1wX2NtcDsKKwlzdHJ1Y3QgdGltZXZhbCB0djsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX21tcChmcy0+c3VwZXIpIHx8CisJICAgICEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSB8fCAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1NLSVBfTU1QKSkKKwkJcmV0dXJuIDA7CisKKwlnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKwlpZiAoIWltbWVkaWF0ZWx5ICYmCisJICAgIHR2LnR2X3NlYyAtIGZzLT5tbXBfbGFzdF93cml0dGVuIDwgRVhUMl9NSU5fTU1QX1VQREFURV9JTlRFUlZBTCkKKwkJcmV0dXJuIDA7CisKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3JlYWQoZnMsIGZzLT5zdXBlci0+c19tbXBfYmxvY2ssIE5VTEwpOworCWlmIChyZXR2YWwpCisJCWdvdG8gbW1wX2Vycm9yOworCisJbW1wID0gZnMtPm1tcF9idWY7CisJbW1wX2NtcCA9IGZzLT5tbXBfY21wOworCisJaWYgKG1lbWNtcChtbXAsIG1tcF9jbXAsIHNpemVvZigqbW1wX2NtcCkpKQorCQlyZXR1cm4gRVhUMl9FVF9NTVBfQ0hBTkdFX0FCT1JUOworCisJbW1wLT5tbXBfdGltZSA9IHR2LnR2X3NlYzsKKwltbXAtPm1tcF9zZXEgPSBFWFQ0X01NUF9TRVFfRlNDSzsKKwlyZXR2YWwgPSBleHQyZnNfbW1wX3dyaXRlKGZzLCBmcy0+c3VwZXItPnNfbW1wX2Jsb2NrLCBmcy0+bW1wX2J1Zik7CisKK21tcF9lcnJvcjoKKwlyZXR1cm4gcmV0dmFsOworI2Vsc2UKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tbXAoZnMtPnN1cGVyKSB8fAorCSAgICAhKGZzLT5mbGFncyAmIEVYVDJfRkxBR19SVykgfHwgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19TS0lQX01NUCkpCisJCXJldHVybiAwOworCisJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKyNlbmRpZgorfQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL25hbWVpLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9uYW1laS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwN2FlY2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9uYW1laS5jCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogbmFtZWkuYyAtLS0gZXh0MmZzIGRpcmVjdG9yeSBsb29rdXAgb3BlcmF0aW9ucworICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NCwgMTk5NSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKy8qICNkZWZpbmUgTkFNRUlfREVCVUcgKi8KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK3N0YXRpYyBlcnJjb2RlX3Qgb3Blbl9uYW1laShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCByb290LCBleHQyX2lub190IGJhc2UsCisJCQkgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIHNpemVfdCBwYXRobGVuLCBpbnQgZm9sbG93LAorCQkJICAgIGludCBsaW5rX2NvdW50LCBjaGFyICpidWYsIGV4dDJfaW5vX3QgKnJlc19pbm9kZSk7CisKK3N0YXRpYyBlcnJjb2RlX3QgZm9sbG93X2xpbmsoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3Qgcm9vdCwgZXh0Ml9pbm9fdCBkaXIsCisJCQkgICAgIGV4dDJfaW5vX3QgaW5vZGUsIGludCBsaW5rX2NvdW50LAorCQkJICAgICBjaGFyICpidWYsIGV4dDJfaW5vX3QgKnJlc19pbm9kZSkKK3sKKwljaGFyICpwYXRobmFtZTsKKwljaGFyICpidWZmZXIgPSAwOworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGUgZWk7CisJYmxrNjRfdCBibGs7CisKKyNpZmRlZiBOQU1FSV9ERUJVRworCXByaW50ZigiZm9sbG93X2xpbms6IHJvb3Q9JWx1LCBkaXI9JWx1LCBpbm9kZT0lbHUsIGxjPSVkXG4iLAorCSAgICAgICByb290LCBkaXIsIGlub2RlLCBsaW5rX2NvdW50KTsKKworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUgKGZzLCBpbm9kZSwgJmVpKTsKKwlpZiAocmV0dmFsKSByZXR1cm4gcmV0dmFsOworCWlmICghTElOVVhfU19JU0xOSyAoZWkuaV9tb2RlKSkgeworCQkqcmVzX2lub2RlID0gaW5vZGU7CisJCXJldHVybiAwOworCX0KKwlpZiAobGlua19jb3VudCsrID49IEVYVDJGU19NQVhfTkVTVEVEX0xJTktTKQorCQlyZXR1cm4gRVhUMl9FVF9TWU1MSU5LX0xPT1A7CisKKwlpZiAoZXh0MmZzX2lub2RlX2RhdGFfYmxvY2tzKGZzLCZlaSkpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBpbm9kZSwgJmVpLCBOVUxMLCAwLCAwLCBOVUxMLCAmYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1ZmZlcik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgMSwgYnVmZmVyKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2ZyZWVfbWVtKCZidWZmZXIpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlwYXRobmFtZSA9IGJ1ZmZlcjsKKwl9IGVsc2UKKwkJcGF0aG5hbWUgPSAoY2hhciAqKSYoZWkuaV9ibG9ja1swXSk7CisJcmV0dmFsID0gb3Blbl9uYW1laShmcywgcm9vdCwgZGlyLCBwYXRobmFtZSwgZWkuaV9zaXplLCAxLAorCQkJICAgIGxpbmtfY291bnQsIGJ1ZiwgcmVzX2lub2RlKTsKKwlpZiAoYnVmZmVyKQorCQlleHQyZnNfZnJlZV9tZW0oJmJ1ZmZlcik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSBpbnRlcnByZXRzIGEgcGF0aG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQKKyAqIGRpcmVjdG9yeSBhbmQgdGhlIHJvb3QgZGlyZWN0b3J5LCBhbmQgcmV0dXJucyB0aGUgaW5vZGUgb2YgdGhlCisgKiBjb250YWluaW5nIGRpcmVjdG9yeSwgYW5kIGEgcG9pbnRlciB0byB0aGUgZmlsZW5hbWUgb2YgdGhlIGZpbGUKKyAqIChwb2ludGluZyBpbnRvIHRoZSBwYXRobmFtZSkgYW5kIHRoZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lLgorICovCitzdGF0aWMgZXJyY29kZV90IGRpcl9uYW1laShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCByb290LCBleHQyX2lub190IGRpciwKKwkJCSAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgcGF0aGxlbiwKKwkJCSAgIGludCBsaW5rX2NvdW50LCBjaGFyICpidWYsCisJCQkgICBjb25zdCBjaGFyICoqbmFtZSwgaW50ICpuYW1lbGVuLAorCQkJICAgZXh0Ml9pbm9fdCAqcmVzX2lub2RlKQoreworCWNoYXIgYzsKKwljb25zdCBjaGFyICp0aGlzbmFtZTsKKwlpbnQgbGVuOworCWV4dDJfaW5vX3QgaW5vZGU7CisJZXJyY29kZV90IHJldHZhbDsKKworCWlmICgoYyA9ICpwYXRobmFtZSkgPT0gJy8nKSB7CisgICAgICAgIAlkaXIgPSByb290OworCQlwYXRobmFtZSsrOworCQlwYXRobGVuLS07CisJfQorCXdoaWxlICgxKSB7CisgICAgICAgIAl0aGlzbmFtZSA9IHBhdGhuYW1lOworCQlmb3IgKGxlbj0wOyAtLXBhdGhsZW4gPj0gMDtsZW4rKykgeworCQkJYyA9ICoocGF0aG5hbWUrKyk7CisJCQlpZiAoYyA9PSAnLycpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKHBhdGhsZW4gPCAwKQorCQkJYnJlYWs7CisJCXJldHZhbCA9IGV4dDJmc19sb29rdXAgKGZzLCBkaXIsIHRoaXNuYW1lLCBsZW4sIGJ1ZiwgJmlub2RlKTsKKwkJaWYgKHJldHZhbCkgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgCXJldHZhbCA9IGZvbGxvd19saW5rIChmcywgcm9vdCwgZGlyLCBpbm9kZSwKKwkJCQkgICAgICBsaW5rX2NvdW50LCBidWYsICZkaXIpOworICAgICAgICAJaWYgKHJldHZhbCkgcmV0dXJuIHJldHZhbDsKKyAgICAJfQorCSpuYW1lID0gdGhpc25hbWU7CisJKm5hbWVsZW4gPSBsZW47CisJKnJlc19pbm9kZSA9IGRpcjsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBvcGVuX25hbWVpKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHJvb3QsIGV4dDJfaW5vX3QgYmFzZSwKKwkJCSAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgc2l6ZV90IHBhdGhsZW4sIGludCBmb2xsb3csCisJCQkgICAgaW50IGxpbmtfY291bnQsIGNoYXIgKmJ1ZiwgZXh0Ml9pbm9fdCAqcmVzX2lub2RlKQoreworCWNvbnN0IGNoYXIgKmJhc2VfbmFtZTsKKwlpbnQgbmFtZWxlbjsKKwlleHQyX2lub190IGRpciwgaW5vZGU7CisJZXJyY29kZV90IHJldHZhbDsKKworI2lmZGVmIE5BTUVJX0RFQlVHCisJcHJpbnRmKCJvcGVuX25hbWVpOiByb290PSVsdSwgZGlyPSVsdSwgcGF0aD0lKnMsIGxjPSVkXG4iLAorCSAgICAgICByb290LCBiYXNlLCBwYXRobGVuLCBwYXRobmFtZSwgbGlua19jb3VudCk7CisjZW5kaWYKKwlyZXR2YWwgPSBkaXJfbmFtZWkoZnMsIHJvb3QsIGJhc2UsIHBhdGhuYW1lLCBwYXRobGVuLAorCQkJICAgbGlua19jb3VudCwgYnVmLCAmYmFzZV9uYW1lLCAmbmFtZWxlbiwgJmRpcik7CisJaWYgKHJldHZhbCkgcmV0dXJuIHJldHZhbDsKKwlpZiAoIW5hbWVsZW4pIHsgICAgICAgICAgICAgICAgICAgICAvKiBzcGVjaWFsIGNhc2U6ICcvdXNyLycgZXRjICovCisJCSpyZXNfaW5vZGU9ZGlyOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2xvb2t1cCAoZnMsIGRpciwgYmFzZV9uYW1lLCBuYW1lbGVuLCBidWYsICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAoZm9sbG93KSB7CisJCXJldHZhbCA9IGZvbGxvd19saW5rKGZzLCByb290LCBkaXIsIGlub2RlLCBsaW5rX2NvdW50LAorCQkJCSAgICAgYnVmLCAmaW5vZGUpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisjaWZkZWYgTkFNRUlfREVCVUcKKwlwcmludGYoIm9wZW5fbmFtZWk6IChsaW5rX2NvdW50PSVkKSByZXR1cm5zICVsdVxuIiwKKwkgICAgICAgbGlua19jb3VudCwgaW5vZGUpOworI2VuZGlmCisJKnJlc19pbm9kZSA9IGlub2RlOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX25hbWVpKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHJvb3QsIGV4dDJfaW5vX3QgY3dkLAorCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwgZXh0Ml9pbm9fdCAqaW5vZGUpCit7CisJY2hhciAqYnVmOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IG9wZW5fbmFtZWkoZnMsIHJvb3QsIGN3ZCwgbmFtZSwgc3RybGVuKG5hbWUpLCAwLCAwLAorCQkJICAgIGJ1ZiwgaW5vZGUpOworCisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfbmFtZWlfZm9sbG93KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHJvb3QsIGV4dDJfaW5vX3QgY3dkLAorCQkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgZXh0Ml9pbm9fdCAqaW5vZGUpCit7CisJY2hhciAqYnVmOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IG9wZW5fbmFtZWkoZnMsIHJvb3QsIGN3ZCwgbmFtZSwgc3RybGVuKG5hbWUpLCAxLCAwLAorCQkJICAgIGJ1ZiwgaW5vZGUpOworCisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZm9sbG93X2xpbmsoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3Qgcm9vdCwgZXh0Ml9pbm9fdCBjd2QsCisJCQlleHQyX2lub190IGlub2RlLCBleHQyX2lub190ICpyZXNfaW5vZGUpCit7CisJY2hhciAqYnVmOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGZvbGxvd19saW5rKGZzLCByb290LCBjd2QsIGlub2RlLCAwLCBidWYsIHJlc19pbm9kZSk7CisKKwlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvbmF0aXZlLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9uYXRpdmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTNlMGM4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbmF0aXZlLmMKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIG5hdGl2ZS5jIC0tLSByZXR1cm5zIHRoZSBleHQyX2ZsYWcgZm9yIGEgbmF0aXZlIGJ5dGUgb3JkZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitpbnQgZXh0MmZzX25hdGl2ZV9mbGFnKHZvaWQpCit7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJcmV0dXJuIEVYVDJfRkxBR19TV0FQX0JZVEVTOworI2Vsc2UKKwlyZXR1cm4gMDsKKyNlbmRpZgorfQorCisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvbmV3ZGlyLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9uZXdkaXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjQ3Mjg1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbmV3ZGlyLmMKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiBuZXdkaXIuYyAtLS0gY3JlYXRlIGEgbmV3IGRpcmVjdG9yeSBibG9jaworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKyNpZm5kZWYgRVhUMl9GVF9ESVIKKyNkZWZpbmUgRVhUMl9GVF9ESVIJCTIKKyNlbmRpZgorCisvKgorICogQ3JlYXRlIG5ldyBkaXJlY3RvcnkgYmxvY2sKKyAqLworZXJyY29kZV90IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGRpcl9pbm8sCisJCQkgICAgICAgZXh0Ml9pbm9fdCBwYXJlbnRfaW5vLCBjaGFyICoqYmxvY2spCit7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5IAkqZGlyID0gTlVMTDsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwljaGFyCQkJKmJ1ZjsKKwlpbnQJCQlyZWNfbGVuOworCWludAkJCWZpbGV0eXBlID0gMDsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbAkqdDsKKwlpbnQJCQljc3VtX3NpemUgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZidWYpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJbWVtc2V0KGJ1ZiwgMCwgZnMtPmJsb2Nrc2l6ZSk7CisJZGlyID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBidWY7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKworCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgZnMtPmJsb2Nrc2l6ZSAtIGNzdW1fc2l6ZSwgZGlyKTsKKwlpZiAocmV0dmFsKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlpZiAoZGlyX2lubykgeworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZpbGV0eXBlKGZzLT5zdXBlcikpCisJCQlmaWxldHlwZSA9IEVYVDJfRlRfRElSOworCQkvKgorCQkgKiBTZXQgdXAgZW50cnkgZm9yICcuJworCQkgKi8KKwkJZGlyLT5pbm9kZSA9IGRpcl9pbm87CisJCWV4dDJmc19kaXJlbnRfc2V0X25hbWVfbGVuKGRpciwgMSk7CisJCWV4dDJmc19kaXJlbnRfc2V0X2ZpbGVfdHlwZShkaXIsIGZpbGV0eXBlKTsKKwkJZGlyLT5uYW1lWzBdID0gJy4nOworCQlyZWNfbGVuID0gKGZzLT5ibG9ja3NpemUgLSBjc3VtX3NpemUpIC0gRVhUMl9ESVJfUkVDX0xFTigxKTsKKwkJZGlyLT5yZWNfbGVuID0gRVhUMl9ESVJfUkVDX0xFTigxKTsKKworCQkvKgorCQkgKiBTZXQgdXAgZW50cnkgZm9yICcuLicKKwkJICovCisJCWRpciA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikgKGJ1ZiArIGRpci0+cmVjX2xlbik7CisJCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgcmVjX2xlbiwgZGlyKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlkaXItPmlub2RlID0gcGFyZW50X2lubzsKKwkJZXh0MmZzX2RpcmVudF9zZXRfbmFtZV9sZW4oZGlyLCAyKTsKKwkJZXh0MmZzX2RpcmVudF9zZXRfZmlsZV90eXBlKGRpciwgZmlsZXR5cGUpOworCQlkaXItPm5hbWVbMF0gPSAnLic7CisJCWRpci0+bmFtZVsxXSA9ICcuJzsKKworCX0KKworCWlmIChjc3VtX3NpemUpIHsKKwkJdCA9IEVYVDJfRElSRU5UX1RBSUwoYnVmLCBmcy0+YmxvY2tzaXplKTsKKwkJZXh0MmZzX2luaXRpYWxpemVfZGlyZW50X3RhaWwoZnMsIHQpOworCX0KKwkqYmxvY2sgPSBidWY7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBDcmVhdGUgbmV3IGRpcmVjdG9yeSBvbiBpbmxpbmUgZGF0YQorICovCitlcnJjb2RlX3QgZXh0MmZzX25ld19kaXJfaW5saW5lX2RhdGEoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgICBleHQyX2lub190IGRpcl9pbm8gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgICAgZXh0Ml9pbm9fdCBwYXJlbnRfaW5vLCBfX3UzMiAqaWJsb2NrKQoreworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAJKmRpciA9IE5VTEw7CisJZXJyY29kZV90CQlyZXR2YWw7CisJaW50CQkJcmVjX2xlbjsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlpYmxvY2tbMF0gPSBleHQyZnNfY3B1X3RvX2xlMzIocGFyZW50X2lubyk7CisKKwlkaXIgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopKChjaGFyICopaWJsb2NrICsKKwkJCQkJRVhUNF9JTkxJTkVfREFUQV9ET1RET1RfU0laRSk7CisJZGlyLT5pbm9kZSA9IDA7CisJcmVjX2xlbiA9IEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUgLSBFWFQ0X0lOTElORV9EQVRBX0RPVERPVF9TSVpFOworCXJldHZhbCA9IGV4dDJmc19zZXRfcmVjX2xlbihmcywgcmVjX2xlbiwgZGlyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorCXJldHZhbCA9IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQyKGZzLCAoY2hhciAqKWRpciwgcmVjX2xlbiwgMCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisjZW5kaWYKKworZXJyb3V0OgorCXJldHVybiByZXR2YWw7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9udF9pby5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbnRfaW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGQxNmFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvbnRfaW8uYwpAQCAtMCwwICsxLDE0OTQgQEAKKy8qCisgKiBudF9pby5jIC0tLSBUaGlzIGlzIHRoZSBOdCBJL08gaW50ZXJmYWNlIHRvIHRoZSBJL08gbWFuYWdlci4KKyAqCisgKiBJbXBsZW1lbnRzIGEgb25lLWJsb2NrIHdyaXRlLXRocm91Z2ggY2FjaGUuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1IFRoZW9kb3JlIFRzJ28uCisgKiBDb3B5cmlnaHQgKEMpIDE5OTggQW5kcmV5IFNoZWRlbCAoYW5kcmV5c0Bucy5jci5jeWNvLmNvbSkKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworCisvLworLy8gSSBuZWVkIHNvbWUgd2FybmluZ3MgdG8gZGlzYWJsZS4uLgorLy8KKworCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NTE0KSAvLyB1bnJlZmVyZW5jZWQgaW5saW5lIGZ1bmN0aW9uIGhhcyBiZWVuIHJlbW92ZWQKKyNwcmFnbWEgd2FybmluZyhwdXNoLDQpCisKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMDEpIC8vIG5vbnN0YW5kYXJkIGV4dGVuc2lvbiB1c2VkIDogbmFtZWxlc3Mgc3RydWN0L3VuaW9uKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDIxNCkgLy8gbm9uc3RhbmRhcmQgZXh0ZW5zaW9uIHVzZWQgOiBiaXQgZmllbGQgdHlwZXMgb3RoZXIgdGhhbiBpbnQKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMTUpIC8vIG5hbWVkIHR5cGUgZGVmaW5pdGlvbiBpbiBwYXJlbnRoZXNlcworCisjaW5jbHVkZSA8bnRkZGsuaD4KKyNpbmNsdWRlIDxudGRkZGlzay5oPgorI2luY2x1ZGUgPG50c3RhdHVzLmg+CisKKyNwcmFnbWEgd2FybmluZyhwb3ApCisKKworLy8KKy8vIFNvbWUgbmF0aXZlIEFQSXMuCisvLworCitOVFNZU0FQSQorVUxPTkcKK05UQVBJCitSdGxOdFN0YXR1c1RvRG9zRXJyb3IoCisgICAgSU4gTlRTVEFUVVMgU3RhdHVzCisgICApOworCitOVFNZU0FQSQorTlRTVEFUVVMKK05UQVBJCitOdENsb3NlKAorICAgIElOIEhBTkRMRSBIYW5kbGUKKyAgICk7CisKKworTlRTWVNBUEkKK05UU1RBVFVTCitOVEFQSQorTnRPcGVuRmlsZSgKKyAgICBPVVQgUEhBTkRMRSBGaWxlSGFuZGxlLAorICAgIElOIEFDQ0VTU19NQVNLIERlc2lyZWRBY2Nlc3MsCisgICAgSU4gUE9CSkVDVF9BVFRSSUJVVEVTIE9iamVjdEF0dHJpYnV0ZXMsCisgICAgT1VUIFBJT19TVEFUVVNfQkxPQ0sgSW9TdGF0dXNCbG9jaywKKyAgICBJTiBVTE9ORyBTaGFyZUFjY2VzcywKKyAgICBJTiBVTE9ORyBPcGVuT3B0aW9ucworICAgICk7CisKK05UU1lTQVBJCitOVFNUQVRVUworTlRBUEkKK050Rmx1c2hCdWZmZXJzRmlsZSgKKyAgICBJTiBIQU5ETEUgRmlsZUhhbmRsZSwKKyAgICBPVVQgUElPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrCisgICApOworCisKK05UU1lTQVBJCitOVFNUQVRVUworTlRBUEkKK050UmVhZEZpbGUoCisgICAgSU4gSEFORExFIEZpbGVIYW5kbGUsCisgICAgSU4gSEFORExFIEV2ZW50IE9QVElPTkFMLAorICAgIElOIFBJT19BUENfUk9VVElORSBBcGNSb3V0aW5lIE9QVElPTkFMLAorICAgIElOIFBWT0lEIEFwY0NvbnRleHQgT1BUSU9OQUwsCisgICAgT1VUIFBJT19TVEFUVVNfQkxPQ0sgSW9TdGF0dXNCbG9jaywKKyAgICBPVVQgUFZPSUQgQnVmZmVyLAorICAgIElOIFVMT05HIExlbmd0aCwKKyAgICBJTiBQTEFSR0VfSU5URUdFUiBCeXRlT2Zmc2V0IE9QVElPTkFMLAorICAgIElOIFBVTE9ORyBLZXkgT1BUSU9OQUwKKyAgICApOworCitOVFNZU0FQSQorTlRTVEFUVVMKK05UQVBJCitOdFdyaXRlRmlsZSgKKyAgICBJTiBIQU5ETEUgRmlsZUhhbmRsZSwKKyAgICBJTiBIQU5ETEUgRXZlbnQgT1BUSU9OQUwsCisgICAgSU4gUElPX0FQQ19ST1VUSU5FIEFwY1JvdXRpbmUgT1BUSU9OQUwsCisgICAgSU4gUFZPSUQgQXBjQ29udGV4dCBPUFRJT05BTCwKKyAgICBPVVQgUElPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrLAorICAgIElOIFBWT0lEIEJ1ZmZlciwKKyAgICBJTiBVTE9ORyBMZW5ndGgsCisgICAgSU4gUExBUkdFX0lOVEVHRVIgQnl0ZU9mZnNldCBPUFRJT05BTCwKKyAgICBJTiBQVUxPTkcgS2V5IE9QVElPTkFMCisgICAgKTsKKworTlRTWVNBUEkKK05UU1RBVFVTCitOVEFQSQorTnREZXZpY2VJb0NvbnRyb2xGaWxlKAorICAgIElOIEhBTkRMRSBGaWxlSGFuZGxlLAorICAgIElOIEhBTkRMRSBFdmVudCBPUFRJT05BTCwKKyAgICBJTiBQSU9fQVBDX1JPVVRJTkUgQXBjUm91dGluZSBPUFRJT05BTCwKKyAgICBJTiBQVk9JRCBBcGNDb250ZXh0IE9QVElPTkFMLAorICAgIE9VVCBQSU9fU1RBVFVTX0JMT0NLIElvU3RhdHVzQmxvY2ssCisgICAgSU4gVUxPTkcgSW9Db250cm9sQ29kZSwKKyAgICBJTiBQVk9JRCBJbnB1dEJ1ZmZlciBPUFRJT05BTCwKKyAgICBJTiBVTE9ORyBJbnB1dEJ1ZmZlckxlbmd0aCwKKyAgICBPVVQgUFZPSUQgT3V0cHV0QnVmZmVyIE9QVElPTkFMLAorICAgIElOIFVMT05HIE91dHB1dEJ1ZmZlckxlbmd0aAorICAgICk7CisKK05UU1lTQVBJCitOVFNUQVRVUworTlRBUEkKK050RnNDb250cm9sRmlsZSgKKyAgICBJTiBIQU5ETEUgRmlsZUhhbmRsZSwKKyAgICBJTiBIQU5ETEUgRXZlbnQgT1BUSU9OQUwsCisgICAgSU4gUElPX0FQQ19ST1VUSU5FIEFwY1JvdXRpbmUgT1BUSU9OQUwsCisgICAgSU4gUFZPSUQgQXBjQ29udGV4dCBPUFRJT05BTCwKKyAgICBPVVQgUElPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrLAorICAgIElOIFVMT05HIElvQ29udHJvbENvZGUsCisgICAgSU4gUFZPSUQgSW5wdXRCdWZmZXIgT1BUSU9OQUwsCisgICAgSU4gVUxPTkcgSW5wdXRCdWZmZXJMZW5ndGgsCisgICAgT1VUIFBWT0lEIE91dHB1dEJ1ZmZlciBPUFRJT05BTCwKKyAgICBJTiBVTE9ORyBPdXRwdXRCdWZmZXJMZW5ndGgKKyAgICApOworCisKK05UU1lTQVBJCitOVFNUQVRVUworTlRBUEkKK050RGVsYXlFeGVjdXRpb24oCisgICAgSU4gQk9PTEVBTiBBbGVydGFibGUsCisgICAgSU4gUExBUkdFX0lOVEVHRVIgSW50ZXJ2YWwKKyAgICApOworCisKKyNkZWZpbmUgRlNDVExfTE9DS19WT0xVTUUgICAgICAgICAgICAgICBDVExfQ09ERShGSUxFX0RFVklDRV9GSUxFX1NZU1RFTSwgNiwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisjZGVmaW5lIEZTQ1RMX1VOTE9DS19WT0xVTUUgICAgICAgICAgICAgQ1RMX0NPREUoRklMRV9ERVZJQ0VfRklMRV9TWVNURU0sIDcsIE1FVEhPRF9CVUZGRVJFRCwgRklMRV9BTllfQUNDRVNTKQorI2RlZmluZSBGU0NUTF9ESVNNT1VOVF9WT0xVTUUgICAgICAgICAgIENUTF9DT0RFKEZJTEVfREVWSUNFX0ZJTEVfU1lTVEVNLCA4LCBNRVRIT0RfQlVGRkVSRUQsIEZJTEVfQU5ZX0FDQ0VTUykKKyNkZWZpbmUgRlNDVExfSVNfVk9MVU1FX01PVU5URUQgICAgICAgICBDVExfQ09ERShGSUxFX0RFVklDRV9GSUxFX1NZU1RFTSwxMCwgTUVUSE9EX0JVRkZFUkVELCBGSUxFX0FOWV9BQ0NFU1MpCisKKworLy8KKy8vIHVzZWZ1bCBtYWNyb3MKKy8vCisKKyNkZWZpbmUgQm9vbGVhbkZsYWdPbihGbGFncyxTaW5nbGVGbGFnKSAoKEJPT0xFQU4pKCgoKEZsYWdzKSAmIChTaW5nbGVGbGFnKSkgIT0gMCkpKQorCisKKy8vCisvLyBJbmNsdWRlIFdpbjMyIGVycm9yIGNvZGVzLgorLy8KKworI2luY2x1ZGUgPHdpbmVycm9yLmg+CisKKy8vCisvLyBzdGFuZGFyZCBzdHVmZgorLy8KKworI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8bWFsbG9jLmg+CisKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9lcnIuaCIKKworCisKKworLy8KKy8vIEZvciBjaGVja2luZyBzdHJ1Y3R1cmUgbWFnaWMgbnVtYmVycy4uLgorLy8KKworCisjZGVmaW5lIEVYVDJfQ0hFQ0tfTUFHSUMoc3RydWN0LCBjb2RlKSBcCisJICBpZiAoKHN0cnVjdCktPm1hZ2ljICE9IChjb2RlKSkgcmV0dXJuIChjb2RlKQorCisjZGVmaW5lIEVYVDJfRVRfTUFHSUNfTlRfSU9fQ0hBTk5FTCAgMHgxMGVkCisKKworLy8KKy8vIFByaXZhdGUgZGF0YSBibG9jaworLy8KKwordHlwZWRlZiBzdHJ1Y3QgX05UX1BSSVZBVEVfREFUQSB7CisJaW50CSAgIG1hZ2ljOworCUhBTkRMRSBIYW5kbGU7CisJaW50CSAgIEZsYWdzOworCVBDSEFSICBCdWZmZXI7CisJX191MzIgIEJ1ZmZlckJsb2NrTnVtYmVyOworCVVMT05HICBCdWZmZXJTaXplOworCUJPT0xFQU4gT3BlbmVkUmVhZG9ubHk7CisJQk9PTEVBTiBXcml0dGVuOworfU5UX1BSSVZBVEVfREFUQSwgKlBOVF9QUklWQVRFX0RBVEE7CisKKworCisvLworLy8gU3RhbmRhcmQgaW50ZXJmYWNlIHByb3RvdHlwZXMKKy8vCisKK3N0YXRpYyBlcnJjb2RlX3QgbnRfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsIGlvX2NoYW5uZWwgKmNoYW5uZWwpOworc3RhdGljIGVycmNvZGVfdCBudF9jbG9zZShpb19jaGFubmVsIGNoYW5uZWwpOworc3RhdGljIGVycmNvZGVfdCBudF9zZXRfYmxrc2l6ZShpb19jaGFubmVsIGNoYW5uZWwsIGludCBibGtzaXplKTsKK3N0YXRpYyBlcnJjb2RlX3QgbnRfcmVhZF9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJICAgICAgIGludCBjb3VudCwgdm9pZCAqZGF0YSk7CitzdGF0aWMgZXJyY29kZV90IG50X3dyaXRlX2Jsayhpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2ssCisJCQkJaW50IGNvdW50LCBjb25zdCB2b2lkICpkYXRhKTsKK3N0YXRpYyBlcnJjb2RlX3QgbnRfZmx1c2goaW9fY2hhbm5lbCBjaGFubmVsKTsKKworc3RhdGljIHN0cnVjdCBzdHJ1Y3RfaW9fbWFuYWdlciBzdHJ1Y3RfbnRfbWFuYWdlciA9IHsKKwkubWFnaWMJCT0gRVhUMl9FVF9NQUdJQ19JT19NQU5BR0VSLAorCS5uYW1lCQk9ICJOVCBJL08gTWFuYWdlciIsCisJLm9wZW4JCT0gbnRfb3BlbiwKKwkuY2xvc2UJCT0gbnRfY2xvc2UsCisJLnNldF9ibGtzaXplCT0gbnRfc2V0X2Jsa3NpemUsCisJLnJlYWRfYmxrCT0gbnRfcmVhZF9ibGssCisJLndyaXRlX2Jsawk9IG50X3dyaXRlX2JsaywKKwkuZmx1c2gJCT0gbnRfZmx1c2gKK307CisKKy8vCisvLyBmdW5jdGlvbiB0byBnZXQgQVBJCisvLworCitpb19tYW5hZ2VyIG50X2lvX21hbmFnZXIoKQoreworCXJldHVybiAmc3RydWN0X250X21hbmFnZXI7Cit9CisKKworCisKKworLy8KKy8vIFRoaXMgaXMgYSBjb2RlIHRvIGNvbnZlcnQgV2luMzIgZXJyb3JzIHRvIHVuaXggZXJybm8KKy8vCisKK3R5cGVkZWYgc3RydWN0IHsKKwlVTE9ORyBXaW5FcnJvcjsKKwlpbnQgZXJybm9jb2RlOworfUVSUk9SX0VOVFJZOworCitzdGF0aWMgRVJST1JfRU5UUlkgRXJyb3JUYWJsZVtdID0geworICAgICAgICB7ICBFUlJPUl9JTlZBTElEX0ZVTkNUSU9OLCAgICAgICBFSU5WQUwgICAgfSwKKyAgICAgICAgeyAgRVJST1JfRklMRV9OT1RfRk9VTkQsICAgICAgICAgRU5PRU5UICAgIH0sCisgICAgICAgIHsgIEVSUk9SX1BBVEhfTk9UX0ZPVU5ELCAgICAgICAgIEVOT0VOVCAgICB9LAorICAgICAgICB7ICBFUlJPUl9UT09fTUFOWV9PUEVOX0ZJTEVTLCAgICBFTUZJTEUgICAgfSwKKyAgICAgICAgeyAgRVJST1JfQUNDRVNTX0RFTklFRCwgICAgICAgICAgRUFDQ0VTICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0lOVkFMSURfSEFORExFLCAgICAgICAgIEVCQURGICAgICB9LAorICAgICAgICB7ICBFUlJPUl9BUkVOQV9UUkFTSEVELCAgICAgICAgICBFTk9NRU0gICAgfSwKKyAgICAgICAgeyAgRVJST1JfTk9UX0VOT1VHSF9NRU1PUlksICAgICAgRU5PTUVNICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0lOVkFMSURfQkxPQ0ssICAgICAgICAgIEVOT01FTSAgICB9LAorICAgICAgICB7ICBFUlJPUl9CQURfRU5WSVJPTk1FTlQsICAgICAgICBFMkJJRyAgICAgfSwKKyAgICAgICAgeyAgRVJST1JfQkFEX0ZPUk1BVCwgICAgICAgICAgICAgRU5PRVhFQyAgIH0sCisgICAgICAgIHsgIEVSUk9SX0lOVkFMSURfQUNDRVNTLCAgICAgICAgIEVJTlZBTCAgICB9LAorICAgICAgICB7ICBFUlJPUl9JTlZBTElEX0RBVEEsICAgICAgICAgICBFSU5WQUwgICAgfSwKKyAgICAgICAgeyAgRVJST1JfSU5WQUxJRF9EUklWRSwgICAgICAgICAgRU5PRU5UICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0NVUlJFTlRfRElSRUNUT1JZLCAgICAgIEVBQ0NFUyAgICB9LAorICAgICAgICB7ICBFUlJPUl9OT1RfU0FNRV9ERVZJQ0UsICAgICAgICBFWERFViAgICAgfSwKKyAgICAgICAgeyAgRVJST1JfTk9fTU9SRV9GSUxFUywgICAgICAgICAgRU5PRU5UICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0xPQ0tfVklPTEFUSU9OLCAgICAgICAgIEVBQ0NFUyAgICB9LAorICAgICAgICB7ICBFUlJPUl9CQURfTkVUUEFUSCwgICAgICAgICAgICBFTk9FTlQgICAgfSwKKyAgICAgICAgeyAgRVJST1JfTkVUV09SS19BQ0NFU1NfREVOSUVELCAgRUFDQ0VTICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0JBRF9ORVRfTkFNRSwgICAgICAgICAgIEVOT0VOVCAgICB9LAorICAgICAgICB7ICBFUlJPUl9GSUxFX0VYSVNUUywgICAgICAgICAgICBFRVhJU1QgICAgfSwKKyAgICAgICAgeyAgRVJST1JfQ0FOTk9UX01BS0UsICAgICAgICAgICAgRUFDQ0VTICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0ZBSUxfSTI0LCAgICAgICAgICAgICAgIEVBQ0NFUyAgICB9LAorICAgICAgICB7ICBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUiwgICAgICBFSU5WQUwgICAgfSwKKyAgICAgICAgeyAgRVJST1JfTk9fUFJPQ19TTE9UUywgICAgICAgICAgRUFHQUlOICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0RSSVZFX0xPQ0tFRCwgICAgICAgICAgIEVBQ0NFUyAgICB9LAorICAgICAgICB7ICBFUlJPUl9CUk9LRU5fUElQRSwgICAgICAgICAgICBFUElQRSAgICAgfSwKKyAgICAgICAgeyAgRVJST1JfRElTS19GVUxMLCAgICAgICAgICAgICAgRU5PU1BDICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0lOVkFMSURfVEFSR0VUX0hBTkRMRSwgIEVCQURGICAgICB9LAorICAgICAgICB7ICBFUlJPUl9JTlZBTElEX0hBTkRMRSwgICAgICAgICBFSU5WQUwgICAgfSwKKyAgICAgICAgeyAgRVJST1JfV0FJVF9OT19DSElMRFJFTiwgICAgICAgRUNISUxEICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0NISUxEX05PVF9DT01QTEVURSwgICAgIEVDSElMRCAgICB9LAorICAgICAgICB7ICBFUlJPUl9ESVJFQ1RfQUNDRVNTX0hBTkRMRSwgICBFQkFERiAgICAgfSwKKyAgICAgICAgeyAgRVJST1JfTkVHQVRJVkVfU0VFSywgICAgICAgICAgRUlOVkFMICAgIH0sCisgICAgICAgIHsgIEVSUk9SX1NFRUtfT05fREVWSUNFLCAgICAgICAgIEVBQ0NFUyAgICB9LAorICAgICAgICB7ICBFUlJPUl9ESVJfTk9UX0VNUFRZLCAgICAgICAgICBFTk9URU1QVFkgfSwKKyAgICAgICAgeyAgRVJST1JfTk9UX0xPQ0tFRCwgICAgICAgICAgICAgRUFDQ0VTICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0JBRF9QQVRITkFNRSwgICAgICAgICAgIEVOT0VOVCAgICB9LAorICAgICAgICB7ICBFUlJPUl9NQVhfVEhSRFNfUkVBQ0hFRCwgICAgICBFQUdBSU4gICAgfSwKKyAgICAgICAgeyAgRVJST1JfTE9DS19GQUlMRUQsICAgICAgICAgICAgRUFDQ0VTICAgIH0sCisgICAgICAgIHsgIEVSUk9SX0FMUkVBRFlfRVhJU1RTLCAgICAgICAgIEVFWElTVCAgICB9LAorICAgICAgICB7ICBFUlJPUl9GSUxFTkFNRV9FWENFRF9SQU5HRSwgICBFTk9FTlQgICAgfSwKKyAgICAgICAgeyAgRVJST1JfTkVTVElOR19OT1RfQUxMT1dFRCwgICAgRUFHQUlOICAgIH0sCisgICAgICAgIHsgIEVSUk9SX05PVF9FTk9VR0hfUVVPVEEsICAgICAgIEVOT01FTSAgICB9Cit9OworCisKKworCitzdGF0aWMKK3Vuc2lnbmVkCitfTWFwRG9zRXJyb3IgKAorICAgIElOIFVMT05HIFdpbkVycm9yCisgICApCit7CisJaW50IGk7CisKKwkvLworCS8vIExvb2t1cAorCS8vCisKKwlmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihFcnJvclRhYmxlKS9zaXplb2YoRXJyb3JUYWJsZVswXSkpOyArK2kpCisJeworCQlpZiAoV2luRXJyb3IgPT0gRXJyb3JUYWJsZVtpXS5XaW5FcnJvcikKKwkJeworCQkJcmV0dXJuIEVycm9yVGFibGVbaV0uZXJybm9jb2RlOworCQl9CisJfQorCisJLy8KKwkvLyBub3QgaW4gdGFibGUuIENoZWNrIHJhbmdlcworCS8vCisKKwlpZiAoKFdpbkVycm9yID49IEVSUk9SX1dSSVRFX1BST1RFQ1QpICYmCisJCShXaW5FcnJvciA8PSBFUlJPUl9TSEFSSU5HX0JVRkZFUl9FWENFRURFRCkpCisJeworCQlyZXR1cm4gRUFDQ0VTOworCX0KKwllbHNlIGlmICgoV2luRXJyb3IgPj0gRVJST1JfSU5WQUxJRF9TVEFSVElOR19DT0RFU0VHKSAmJgorCQkJIChXaW5FcnJvciA8PSBFUlJPUl9JTkZMT09QX0lOX1JFTE9DX0NIQUlOKSkKKwl7CisJCXJldHVybiBFTk9FWEVDOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gRUlOVkFMOworCX0KK30KKworCisKKworCisKKworLy8KKy8vIEZ1bmN0aW9uIHRvIG1hcCBOVCBzdGF0dXMgdG8gZG9zIGVycm9yLgorLy8KKworc3RhdGljCitfX2lubGluZQordW5zaWduZWQKK19NYXBOdFN0YXR1cygKKyAgICBJTiBOVFNUQVRVUyBTdGF0dXMKKyAgICkKK3sKKwlyZXR1cm4gX01hcERvc0Vycm9yKFJ0bE50U3RhdHVzVG9Eb3NFcnJvcihTdGF0dXMpKTsKK30KKworCisKKworCisvLworLy8gSGVscGVyIGZ1bmN0aW9ucyB0byBtYWtlIHRoaW5ncyBlYXN5ZXIKKy8vCisKK3N0YXRpYworTlRTVEFUVVMKK19PcGVuTnROYW1lKAorICAgIElOIFBDU1RSIE5hbWUsCisgICAgSU4gQk9PTEVBTiBSZWFkb25seSwKKyAgICBPVVQgUEhBTkRMRSBIYW5kbGUsCisgICAgT1VUIFBCT09MRUFOIE9wZW5lZFJlYWRvbmx5IE9QVElPTkFMCisgICApCit7CisJVU5JQ09ERV9TVFJJTkcgVW5pY29kZVN0cmluZzsKKwlBTlNJX1NUUklORyAgICBBbnNpU3RyaW5nOworCVdDSEFSIEJ1ZmZlcls1MTJdOworCU5UU1RBVFVTIFN0YXR1czsKKwlPQkpFQ1RfQVRUUklCVVRFUyBPYmplY3RBdHRyaWJ1dGVzOworCUlPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrOworCisJLy8KKwkvLyBNYWtlIFVuaWNvZGUgbmFtZSBmcm9tIGlubHV0IHN0cmluZworCS8vCisKKwlVbmljb2RlU3RyaW5nLkJ1ZmZlciA9ICZCdWZmZXJbMF07CisJVW5pY29kZVN0cmluZy5MZW5ndGggPSAwOworCVVuaWNvZGVTdHJpbmcuTWF4aW11bUxlbmd0aCA9IHNpemVvZihCdWZmZXIpOyAvLyBpbiBieXRlcyEhIQorCisJUnRsSW5pdEFuc2lTdHJpbmcoJkFuc2lTdHJpbmcsIE5hbWUpOworCisJU3RhdHVzID0gUnRsQW5zaVN0cmluZ1RvVW5pY29kZVN0cmluZygmVW5pY29kZVN0cmluZywgJkFuc2lTdHJpbmcsIEZBTFNFKTsKKworCWlmKCFOVF9TVUNDRVNTKFN0YXR1cykpCisJeworCQlyZXR1cm4gU3RhdHVzOyAvLyBVbnBhcHBhYmxlIGNoYXJhY3Rlcj8KKwl9CisKKwkvLworCS8vIEluaXRpYWxpemUgb2JqZWN0CisJLy8KKworCUluaXRpYWxpemVPYmplY3RBdHRyaWJ1dGVzKCZPYmplY3RBdHRyaWJ1dGVzLAorCQkJCQkJCSAgICZVbmljb2RlU3RyaW5nLAorCQkJCQkJCSAgIE9CSl9DQVNFX0lOU0VOU0lUSVZFLAorCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgTlVMTCApOworCisJLy8KKwkvLyBUcnkgdG8gb3BlbiBpdCBpbiBpbml0aWFsIG1vZGUKKwkvLworCisJaWYoQVJHVU1FTlRfUFJFU0VOVChPcGVuZWRSZWFkb25seSkpCisJeworCQkqT3BlbmVkUmVhZG9ubHkgPSBSZWFkb25seTsKKwl9CisKKworCVN0YXR1cyA9IE50T3BlbkZpbGUoSGFuZGxlLAorCQkJCQkJU1lOQ0hST05JWkUgfCBGSUxFX1JFQURfREFUQSB8IChSZWFkb25seSA/IDAgOiBGSUxFX1dSSVRFX0RBVEEpLAorCQkJCQkJJk9iamVjdEF0dHJpYnV0ZXMsCisJCQkJCQkmSW9TdGF0dXNCbG9jaywKKwkJCQkJCUZJTEVfU0hBUkVfV1JJVEUgfCBGSUxFX1NIQVJFX1JFQUQsCisJCQkJCQlGSUxFX1NZTkNIUk9OT1VTX0lPX05PTkFMRVJUKTsKKworCWlmKCFOVF9TVUNDRVNTKFN0YXR1cykpCisJeworCQkvLworCQkvLyBNYXliZSB3YXMganVzdCBtb3VudGVkPyB3YWl0IDAuNSBzZWMgYW5kIHJldHJ5LgorCQkvLworCisJCUxBUkdFX0lOVEVHRVIgSW50ZXJ2YWw7CisJCUludGVydmFsLlF1YWRQYXJ0ID0gLTUwMDAwMDA7IC8vIDAuNSBzZWMuIGZyb20gbm93CisKKwkJTnREZWxheUV4ZWN1dGlvbihGQUxTRSwgJkludGVydmFsKTsKKworCQlTdGF0dXMgPSBOdE9wZW5GaWxlKEhhbmRsZSwKKwkJCQkJCQlTWU5DSFJPTklaRSB8IEZJTEVfUkVBRF9EQVRBIHwgKFJlYWRvbmx5ID8gMCA6IEZJTEVfV1JJVEVfREFUQSksCisJCQkJCQkJJk9iamVjdEF0dHJpYnV0ZXMsCisJCQkJCQkJJklvU3RhdHVzQmxvY2ssCisJCQkJCQkJRklMRV9TSEFSRV9XUklURSB8IEZJTEVfU0hBUkVfUkVBRCwKKwkJCQkJCQlGSUxFX1NZTkNIUk9OT1VTX0lPX05PTkFMRVJUKTsKKworCQkvLworCQkvLyBUcnkgdG8gc2F0aXNmeSBtb2RlCisJCS8vCisKKwkJaWYoKFNUQVRVU19BQ0NFU1NfREVOSUVEID09IFN0YXR1cykgJiYgIVJlYWRvbmx5KQorCQl7CisJCQlpZihBUkdVTUVOVF9QUkVTRU5UKE9wZW5lZFJlYWRvbmx5KSkKKwkJCXsKKwkJCQkqT3BlbmVkUmVhZG9ubHkgPSBUUlVFOworCQkJfQorCisJCQlTdGF0dXMgPSBOdE9wZW5GaWxlKEhhbmRsZSwKKwkJCQkJCQlTWU5DSFJPTklaRSB8IEZJTEVfUkVBRF9EQVRBLAorCQkJCQkJCSZPYmplY3RBdHRyaWJ1dGVzLAorCQkJCQkJCSZJb1N0YXR1c0Jsb2NrLAorCQkJCQkJCUZJTEVfU0hBUkVfV1JJVEUgfCBGSUxFX1NIQVJFX1JFQUQsCisJCQkJCQkJRklMRV9TWU5DSFJPTk9VU19JT19OT05BTEVSVCk7CisJCX0KKwl9CisKKworCisJLy8KKwkvLyBkb25lCisJLy8KKworCXJldHVybiBTdGF0dXM7Cit9CisKKworc3RhdGljCitOVFNUQVRVUworX09wZW5Ecml2ZUxldHRlcigKKyAgICBJTiBDSEFSIExldHRlciwKKyAgICBJTiBCT09MRUFOIFJlYWRPbmx5LAorICAgIE9VVCBQSEFORExFIEhhbmRsZSwKKyAgICBPVVQgUEJPT0xFQU4gT3BlbmVkUmVhZG9ubHkgT1BUSU9OQUwKKyAgICkKK3sKKwlDSEFSIEJ1ZmZlclsxMDBdOworCisJc3ByaW50ZihCdWZmZXIsICJcXERvc0RldmljZXNcXCVjOiIsIExldHRlcik7CisKKwlyZXR1cm4gX09wZW5OdE5hbWUoQnVmZmVyLCBSZWFkT25seSwgSGFuZGxlLCBPcGVuZWRSZWFkb25seSk7Cit9CisKKworLy8KKy8vIEZsdXNoIGRldmljZQorLy8KKworc3RhdGljCitfX2lubGluZQorTlRTVEFUVVMKK19GbHVzaERyaXZlKAorCQlJTiBIQU5ETEUgSGFuZGxlCisJCSkKK3sKKwlJT19TVEFUVVNfQkxPQ0sgSW9TdGF0dXNCbG9jazsKKwlyZXR1cm4gTnRGbHVzaEJ1ZmZlcnNGaWxlKEhhbmRsZSwgJklvU3RhdHVzQmxvY2spOworfQorCisKKy8vCisvLyBsb2NrIGRyaXZlCisvLworCitzdGF0aWMKK19faW5saW5lCitOVFNUQVRVUworX0xvY2tEcml2ZSgKKwkJSU4gSEFORExFIEhhbmRsZQorCQkpCit7CisJSU9fU1RBVFVTX0JMT0NLIElvU3RhdHVzQmxvY2s7CisJcmV0dXJuIE50RnNDb250cm9sRmlsZShIYW5kbGUsIDAsIDAsIDAsICZJb1N0YXR1c0Jsb2NrLCBGU0NUTF9MT0NLX1ZPTFVNRSwgMCwgMCwgMCwgMCk7Cit9CisKKworLy8KKy8vIHVubG9jayBkcml2ZQorLy8KKworc3RhdGljCitfX2lubGluZQorTlRTVEFUVVMKK19VbmxvY2tEcml2ZSgKKwlJTiBIQU5ETEUgSGFuZGxlCisJKQoreworCUlPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrOworCXJldHVybiBOdEZzQ29udHJvbEZpbGUoSGFuZGxlLCAwLCAwLCAwLCAmSW9TdGF0dXNCbG9jaywgRlNDVExfVU5MT0NLX1ZPTFVNRSwgMCwgMCwgMCwgMCk7Cit9CisKK3N0YXRpYworX19pbmxpbmUKK05UU1RBVFVTCitfRGlzbW91bnREcml2ZSgKKwlJTiBIQU5ETEUgSGFuZGxlCisJKQoreworCUlPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrOworCXJldHVybiBOdEZzQ29udHJvbEZpbGUoSGFuZGxlLCAwLCAwLCAwLCAmSW9TdGF0dXNCbG9jaywgRlNDVExfRElTTU9VTlRfVk9MVU1FLCAwLCAwLCAwLCAwKTsKK30KKworCisvLworLy8gaXMgbW91bnRlZAorLy8KKworc3RhdGljCitfX2lubGluZQorQk9PTEVBTgorX0lzTW91bnRlZCgKKwlJTiBIQU5ETEUgSGFuZGxlCisJKQoreworCUlPX1NUQVRVU19CTE9DSyBJb1N0YXR1c0Jsb2NrOworCU5UU1RBVFVTIFN0YXR1czsKKwlTdGF0dXMgPSBOdEZzQ29udHJvbEZpbGUoSGFuZGxlLCAwLCAwLCAwLCAmSW9TdGF0dXNCbG9jaywgRlNDVExfSVNfVk9MVU1FX01PVU5URUQsIDAsIDAsIDAsIDApOworCXJldHVybiAoQk9PTEVBTikoU1RBVFVTX1NVQ0NFU1MgPT0gU3RhdHVzKTsKK30KKworCitzdGF0aWMKK19faW5saW5lCitOVFNUQVRVUworX0Nsb3NlRGlzaygKKwkJSU4gSEFORExFIEhhbmRsZQorCQkpCit7CisJcmV0dXJuIE50Q2xvc2UoSGFuZGxlKTsKK30KKworCisKKworLy8KKy8vIE1ha2UgTlQgbmFtZSBmcm9tIGFueSByZWNvZ25pemVkIG5hbWUKKy8vCisKK3N0YXRpYworUENTVFIKK19Ob3JtYWxpemVEZXZpY2VOYW1lKAorICAgIElOIFBDU1RSIERldmljZSwKKyAgICBJTiBQU1RSIE5vcm1hbGl6ZWREZXZpY2VOYW1lQnVmZmVyCisgICApCit7CisJaW50IFBhcnRpdGlvbk51bWJlciA9IC0xOworCVVDSEFSIERpc2tOdW1iZXI7CisJUFNUUiBwOworCisKKwkvLworCS8vIERvIG5vdCB0cnkgdG8gcGFyc2UgTlQgbmFtZQorCS8vCisKKwlpZignXFwnID09ICpEZXZpY2UpCisJCXJldHVybiBEZXZpY2U7CisKKworCisJLy8KKwkvLyBTdHJpcCBsZWFkaW5nICcvZGV2LycgaWYgYW55CisJLy8KKworCWlmKCgnLycgPT0gKihEZXZpY2UpKSAmJgorCQkoJ2QnID09ICooRGV2aWNlICsgMSkpICYmCisJCSgnZScgPT0gKihEZXZpY2UgKyAyKSkgJiYKKwkJKCd2JyA9PSAqKERldmljZSArIDMpKSAmJgorCQkoJy8nID09ICooRGV2aWNlICsgNCkpKQorCXsKKwkJRGV2aWNlICs9IDU7CisJfQorCisJaWYoJ1wwJyA9PSAqRGV2aWNlKQorCXsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisKKwkvLworCS8vIGZvcm1zOiBoZGFbbl0sIGZkW25dCisJLy8KKworCWlmKCdkJyAhPSAqKERldmljZSArIDEpKQorCXsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaWYoJ2gnID09ICpEZXZpY2UpCisJeworCQlpZigoKihEZXZpY2UgKyAyKSA8ICdhJykgfHwgKCooRGV2aWNlICsgMikgPiAoJ2EnICsgOSkpIHx8CisJCSAgICgoKihEZXZpY2UgKyAzKSAhPSAnXDAnKSAmJgorCQkJKCgqKERldmljZSArIDQpICE9ICdcMCcpIHx8CisJCQkgKCgqKERldmljZSArIDMpIDwgJzAnKSB8fCAoKihEZXZpY2UgKyAzKSA+ICc5JykpCisJCQkpCisJCSAgICkKKwkJICApCisJCXsKKwkJCXJldHVybiBOVUxMOworCQl9CisKKwkJRGlza051bWJlciA9IChVQ0hBUikoKihEZXZpY2UgKyAyKSAtICdhJyk7CisKKwkJaWYoKihEZXZpY2UgKyAzKSAhPSAnXDAnKQorCQl7CisJCQlQYXJ0aXRpb25OdW1iZXIgPSAoKihEZXZpY2UgKyAzKSAtICcwJyk7CisJCX0KKworCX0KKwllbHNlIGlmKCdmJyA9PSAqRGV2aWNlKQorCXsKKwkJLy8KKwkJLy8gMy1kIGxldHRlZCBzaG91bGQgYmUgYSBkaWdpdC4KKwkJLy8KKworCQlpZigoKihEZXZpY2UgKyAzKSAhPSAnXDAnKSB8fAorCQkgICAoKihEZXZpY2UgKyAyKSA8ICcwJykgfHwgKCooRGV2aWNlICsgMikgPiAnOScpKQorCQl7CisJCQlyZXR1cm4gTlVMTDsKKwkJfQorCisJCURpc2tOdW1iZXIgPSAoVUNIQVIpKCooRGV2aWNlICsgMikgLSAnMCcpOworCisJfQorCWVsc2UKKwl7CisJCS8vCisJCS8vIGludmFsaWQgcHJlZml4CisJCS8vCisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisKKworCS8vCisJLy8gUHJlZml4CisJLy8KKworCXN0cmNweShOb3JtYWxpemVkRGV2aWNlTmFtZUJ1ZmZlciwgIlxcRGV2aWNlXFwiKTsKKworCS8vCisJLy8gTWVkaWEgbmFtZQorCS8vCisKKwlzd2l0Y2goKkRldmljZSkKKwl7CisKKwljYXNlICdmJzoKKwkJc3RyY2F0KE5vcm1hbGl6ZWREZXZpY2VOYW1lQnVmZmVyLCAiRmxvcHB5MCIpOworCQlicmVhazsKKworCWNhc2UgJ2gnOgorCQlzdHJjYXQoTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIsICJIYXJkZGlzazAiKTsKKwkJYnJlYWs7CisJfQorCisKKwlwID0gTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIgKyBzdHJsZW4oTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIpIC0gMTsKKwkqcCA9IChDSEFSKSgqcCArIERpc2tOdW1iZXIpOworCisKKwkvLworCS8vIFBhcnRpdGlvbiBuci4KKwkvLworCisJaWYoUGFydGl0aW9uTnVtYmVyID49IDApCisJeworCQlzdHJjYXQoTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIsICJcXFBhcnRpdGlvbjAiKTsKKworCQlwID0gTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIgKyBzdHJsZW4oTm9ybWFsaXplZERldmljZU5hbWVCdWZmZXIpIC0gMTsKKwkJKnAgPSAoQ0hBUikoKnAgKyBQYXJ0aXRpb25OdW1iZXIpOworCX0KKworCisJcmV0dXJuIE5vcm1hbGl6ZWREZXZpY2VOYW1lQnVmZmVyOworfQorCisKKworCitzdGF0aWMKK1ZPSUQKK19HZXREZXZpY2VTaXplKAorICAgIElOIEhBTkRMRSBoLAorICAgIE9VVCB1bnNpZ25lZCBfX2ludDY0ICpGc1NpemUKKyAgICkKK3sKKwlQQVJUSVRJT05fSU5GT1JNQVRJT04gcGk7CisJRElTS19HRU9NRVRSWSBnaTsKKwlOVFNUQVRVUyBTdGF0dXM7CisJSU9fU1RBVFVTX0JMT0NLIElvU3RhdHVzQmxvY2s7CisKKwkvLworCS8vIFplcm8gaXQKKwkvLworCisJKkZzU2l6ZSA9IDA7CisKKwkvLworCS8vIENhbGwgZHJpdmVyCisJLy8KKworCVJ0bFplcm9NZW1vcnkoJnBpLCBzaXplb2YoUEFSVElUSU9OX0lORk9STUFUSU9OKSk7CisKKwlTdGF0dXMgPSBOdERldmljZUlvQ29udHJvbEZpbGUoCisJCWgsIE5VTEwsIE5VTEwsIE5VTEwsICZJb1N0YXR1c0Jsb2NrLCBJT0NUTF9ESVNLX0dFVF9QQVJUSVRJT05fSU5GTywKKwkJJnBpLCBzaXplb2YoUEFSVElUSU9OX0lORk9STUFUSU9OKSwKKwkJJnBpLCBzaXplb2YoUEFSVElUSU9OX0lORk9STUFUSU9OKSk7CisKKworCWlmKE5UX1NVQ0NFU1MoU3RhdHVzKSkKKwl7CisJCSpGc1NpemUgPSBwaS5QYXJ0aXRpb25MZW5ndGguUXVhZFBhcnQ7CisJfQorCWVsc2UgaWYoU1RBVFVTX0lOVkFMSURfREVWSUNFX1JFUVVFU1QgPT0gU3RhdHVzKQorCXsKKwkJLy8KKwkJLy8gTm8gcGFydGl0aW9uczogZ2V0IGRldmljZSBpbmZvLgorCQkvLworCisJCVJ0bFplcm9NZW1vcnkoJmdpLCBzaXplb2YoRElTS19HRU9NRVRSWSkpOworCisJCVN0YXR1cyA9IE50RGV2aWNlSW9Db250cm9sRmlsZSgKKwkJCQloLCBOVUxMLCBOVUxMLCBOVUxMLCAmSW9TdGF0dXNCbG9jaywgSU9DVExfRElTS19HRVRfRFJJVkVfR0VPTUVUUlksCisJCQkJJmdpLCBzaXplb2YoRElTS19HRU9NRVRSWSksCisJCQkJJmdpLCBzaXplb2YoRElTS19HRU9NRVRSWSkpOworCisKKwkJaWYoTlRfU1VDQ0VTUyhTdGF0dXMpKQorCQl7CisJCQkqRnNTaXplID0KKwkJCQlnaS5CeXRlc1BlclNlY3RvciAqCisJCQkJZ2kuU2VjdG9yc1BlclRyYWNrICoKKwkJCQlnaS5UcmFja3NQZXJDeWxpbmRlciAqCisJCQkJZ2kuQ3lsaW5kZXJzLlF1YWRQYXJ0OworCQl9CisKKwl9Cit9CisKKworCisvLworLy8gT3BlbiBkZXZpY2UgYnkgbmFtZS4KKy8vCisKK3N0YXRpYworQk9PTEVBTgorX0V4dDJPcGVuRGV2aWNlKAorICAgIElOIFBDU1RSIE5hbWUsCisgICAgSU4gQk9PTEVBTiBSZWFkT25seSwKKyAgICBPVVQgUEhBTkRMRSBIYW5kbGUsCisgICAgT1VUIFBCT09MRUFOIE9wZW5lZFJlYWRvbmx5IE9QVElPTkFMLAorICAgIE9VVCB1bnNpZ25lZCAqRXJybm8gT1BUSU9OQUwKKyAgICkKK3sKKwlDSEFSIE5vcm1hbGl6ZWREZXZpY2VOYW1lWzUxMl07CisJTlRTVEFUVVMgU3RhdHVzOworCisJaWYoTlVMTCA9PSBOYW1lKQorCXsKKwkJLy8KKwkJLy8gU2V0IG5vdCBmb3VuZAorCQkvLworCisJCWlmKEFSR1VNRU5UX1BSRVNFTlQoRXJybm8pKQorCQkJKkVycm5vID0gRU5PRU5UOworCisJCXJldHVybiBGQUxTRTsKKwl9CisKKworCWlmKCgoKCpOYW1lKSB8IDB4MjApID49ICdhJykgJiYgKCgoKk5hbWUpIHwgMHgyMCkgPD0gJ3onKSAmJgorCQkoJzonID09ICooTmFtZSArIDEpKSAmJiAoJ1wwJyA9PSAqKE5hbWUgKyAyKSkpCisJeworCQlTdGF0dXMgPSBfT3BlbkRyaXZlTGV0dGVyKCpOYW1lLCBSZWFkT25seSwgSGFuZGxlLCBPcGVuZWRSZWFkb25seSk7CisJfQorCWVsc2UKKwl7CisJCS8vCisJCS8vIE1ha2UgbmFtZQorCQkvLworCisJCU5hbWUgPSBfTm9ybWFsaXplRGV2aWNlTmFtZShOYW1lLCBOb3JtYWxpemVkRGV2aWNlTmFtZSk7CisKKwkJaWYoTlVMTCA9PSBOYW1lKQorCQl7CisJCQkvLworCQkJLy8gU2V0IG5vdCBmb3VuZAorCQkJLy8KKworCQkJaWYoQVJHVU1FTlRfUFJFU0VOVChFcnJubykpCisJCQkJKkVycm5vID0gRU5PRU5UOworCisJCQlyZXR1cm4gRkFMU0U7CisJCX0KKworCQkvLworCQkvLyBUcnkgdG8gb3BlbiBpdAorCQkvLworCisJCVN0YXR1cyA9IF9PcGVuTnROYW1lKE5hbWUsIFJlYWRPbmx5LCBIYW5kbGUsIE9wZW5lZFJlYWRvbmx5KTsKKwl9CisKKworCWlmKCFOVF9TVUNDRVNTKFN0YXR1cykpCisJeworCQlpZihBUkdVTUVOVF9QUkVTRU5UKEVycm5vKSkKKwkJCSpFcnJubyA9IF9NYXBOdFN0YXR1cyhTdGF0dXMpOworCisJCXJldHVybiBGQUxTRTsKKwl9CisKKwlyZXR1cm4gVFJVRTsKK30KKworCisvLworLy8gUmF3IGJsb2NrIGlvLiBTZXRzIGRvcyBlcnJubworLy8KKworc3RhdGljCitCT09MRUFOCitfQmxvY2tJbygKKyAgICBJTiBIQU5ETEUgSGFuZGxlLAorICAgIElOIExBUkdFX0lOVEVHRVIgT2Zmc2V0LAorICAgIElOIFVMT05HIEJ5dGVzLAorICAgIElOIE9VVCBQQ0hBUiBCdWZmZXIsCisgICAgSU4gQk9PTEVBTiBSZWFkLAorICAgIE9VVCB1bnNpZ25lZCogRXJybm8KKyAgICkKK3sKKwlJT19TVEFUVVNfQkxPQ0sgSW9TdGF0dXNCbG9jazsKKwlOVFNUQVRVUyBTdGF0dXM7CisKKwkvLworCS8vIFNob3VsZCBiZSBhbGlnbmVkCisJLy8KKworCUFTU0VSVCgwID09IChCeXRlcyAlIDUxMikpOworCUFTU0VSVCgwID09IChPZmZzZXQuTG93UGFydCAlIDUxMikpOworCisKKwkvLworCS8vIHBlcmZvcm0gaW8KKwkvLworCisJaWYoUmVhZCkKKwl7CisJCVN0YXR1cyA9IE50UmVhZEZpbGUoSGFuZGxlLCBOVUxMLCBOVUxMLCBOVUxMLAorCQkJJklvU3RhdHVzQmxvY2ssIEJ1ZmZlciwgQnl0ZXMsICZPZmZzZXQsIE5VTEwpOworCX0KKwllbHNlCisJeworCQlTdGF0dXMgPSBOdFdyaXRlRmlsZShIYW5kbGUsIE5VTEwsIE5VTEwsIE5VTEwsCisJCQkmSW9TdGF0dXNCbG9jaywgQnVmZmVyLCBCeXRlcywgJk9mZnNldCwgTlVMTCk7CisJfQorCisKKwkvLworCS8vIHRyYW5zbGF0ZSBlcnJvcgorCS8vCisKKwlpZihOVF9TVUNDRVNTKFN0YXR1cykpCisJeworCQkqRXJybm8gPSAwOworCQlyZXR1cm4gVFJVRTsKKwl9CisKKwkqRXJybm8gPSBfTWFwTnRTdGF0dXMoU3RhdHVzKTsKKworCXJldHVybiBGQUxTRTsKK30KKworCisKK19faW5saW5lCitCT09MRUFOCitfUmF3V3JpdGUoCisgICAgSU4gSEFORExFIEhhbmRsZSwKKyAgICBJTiBMQVJHRV9JTlRFR0VSIE9mZnNldCwKKyAgICBJTiBVTE9ORyBCeXRlcywKKyAgICBPVVQgY29uc3QgQ0hBUiogQnVmZmVyLAorICAgIE9VVCB1bnNpZ25lZCogRXJybm8KKyAgICkKK3sKKwlyZXR1cm4gX0Jsb2NrSW8oSGFuZGxlLCBPZmZzZXQsIEJ5dGVzLCAoUENIQVIpQnVmZmVyLCBGQUxTRSwgRXJybm8pOworfQorCitfX2lubGluZQorQk9PTEVBTgorX1Jhd1JlYWQoCisgICAgSU4gSEFORExFIEhhbmRsZSwKKyAgICBJTiBMQVJHRV9JTlRFR0VSIE9mZnNldCwKKyAgICBJTiBVTE9ORyBCeXRlcywKKyAgICBJTiBQQ0hBUiBCdWZmZXIsCisgICAgT1VUIHVuc2lnbmVkKiBFcnJubworICAgKQoreworCXJldHVybiBfQmxvY2tJbyhIYW5kbGUsIE9mZnNldCwgQnl0ZXMsIEJ1ZmZlciwgVFJVRSwgRXJybm8pOworfQorCisKKworX19pbmxpbmUKK0JPT0xFQU4KK19TZXRQYXJ0VHlwZSgKKyAgICBJTiBIQU5ETEUgSGFuZGxlLAorICAgIElOIFVDSEFSIFR5cGUKKyAgICkKK3sKKwlJT19TVEFUVVNfQkxPQ0sgSW9TdGF0dXNCbG9jazsKKwlyZXR1cm4gU1RBVFVTX1NVQ0NFU1MgPT0gTnREZXZpY2VJb0NvbnRyb2xGaWxlKAorCQkJCQkJCQkJCQkJICAgSGFuZGxlLCBOVUxMLCBOVUxMLCBOVUxMLCAmSW9TdGF0dXNCbG9jaywgSU9DVExfRElTS19TRVRfUEFSVElUSU9OX0lORk8sCisJCQkJCQkJCQkJCQkgICAmVHlwZSwgc2l6ZW9mKFR5cGUpLAorCQkJCQkJCQkJCQkJICAgTlVMTCwgMCk7Cit9CisKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLSBpbnRlcmZhY2UgcGFydAorCisvLworLy8gSW50ZXJmYWNlIGZ1bmN0aW9ucy4KKy8vIElzX21vdW50ZWQgaXMgc2V0IHRvIDEgaWYgdGhlIGRldmljZSBpcyBtb3VudGVkLCAwIG90aGVyd2lzZQorLy8KKworZXJyY29kZV90CitleHQyZnNfY2hlY2tfaWZfbW91bnRlZChjb25zdCBjaGFyICpmaWxlLCBpbnQgKm1vdW50X2ZsYWdzKQoreworCUhBTkRMRSBoOworCUJPT0xFQU4gUmVhZG9ubHk7CisKKwkqbW91bnRfZmxhZ3MgPSAwOworCisJaWYoIV9FeHQyT3BlbkRldmljZShmaWxlLCBUUlVFLCAmaCwgJlJlYWRvbmx5LCBOVUxMKSkKKwl7CisJCXJldHVybiAwOworCX0KKworCisJX190cnl7CisJCSptb3VudF9mbGFncyAmPSBfSXNNb3VudGVkKGgpID8gRVhUMl9NRl9NT1VOVEVEIDogMDsKKwl9CisJX19maW5hbGx5eworCQlfQ2xvc2VEaXNrKGgpOworCX0KKworCXJldHVybiAwOworfQorCisKKworLy8KKy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBibG9ja3MgaW4gYSBwYXJ0aXRpb24KKy8vCisKK3N0YXRpYyBfX2ludDY0IEZzU2l6ZSA9IDA7CitzdGF0aWMgY2hhciBrbm93bmRldmljZVsxMDI0XSA9ICIiOworCisKK2VycmNvZGVfdAorZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZShjb25zdCBjaGFyICpmaWxlLCBpbnQgYmxvY2tzaXplLAorCQkJCSBibGtfdCAqcmV0YmxvY2tzKQoreworCUhBTkRMRSBoOworCUJPT0xFQU4gUmVhZG9ubHk7CisKKwlpZigoMCA9PSBGc1NpemUpIHx8ICgwICE9IHN0cmNtcChrbm93bmRldmljZSwgZmlsZSkpKQorCXsKKworCQlpZighX0V4dDJPcGVuRGV2aWNlKGZpbGUsIFRSVUUsICZoLCAmUmVhZG9ubHksIE5VTEwpKQorCQl7CisJCQlyZXR1cm4gMDsKKwkJfQorCisKKwkJX190cnl7CisKKwkJCS8vCisJCQkvLyBHZXQgc2l6ZQorCQkJLy8KKworCQkJX0dldERldmljZVNpemUoaCwgJkZzU2l6ZSk7CisJCQlzdHJjcHkoa25vd25kZXZpY2UsIGZpbGUpOworCQl9CisJCV9fZmluYWxseXsKKwkJCV9DbG9zZURpc2soaCk7CisJCX0KKworCX0KKworCSpyZXRibG9ja3MgPSAoYmxrX3QpKHVuc2lnbmVkIF9faW50NjQpKEZzU2l6ZSAvIGJsb2Nrc2l6ZSk7CisJVU5SRUZFUkVOQ0VEX1BBUkFNRVRFUihmaWxlKTsKKwlyZXR1cm4gMDsKK30KKworCisKKworCisKKy8vCisvLyBUYWJsZSBlbGVtZW50cworLy8KKworCitzdGF0aWMKK2VycmNvZGVfdAorbnRfb3Blbihjb25zdCBjaGFyICpuYW1lLCBpbnQgZmxhZ3MsIGlvX2NoYW5uZWwgKmNoYW5uZWwpCit7CisJaW9fY2hhbm5lbCAgICAgIGlvID0gTlVMTDsKKwlQTlRfUFJJVkFURV9EQVRBIE50RGF0YSA9IE5VTEw7CisJZXJyY29kZV90IEVycm5vID0gMDsKKworCS8vCisJLy8gQ2hlY2sgbmFtZQorCS8vCisKKwlpZiAoTlVMTCA9PSBuYW1lKQorCXsKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0RFVklDRV9OQU1FOworCX0KKworCV9fdHJ5eworCisJCS8vCisJCS8vIEFsbG9jYXRlIGNoYW5uZWwgaGFuZGxlCisJCS8vCisKKwkJaW8gPSAoaW9fY2hhbm5lbCkgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwpKTsKKworCQlpZiAoTlVMTCA9PSBpbykKKwkJeworCQkJRXJybm8gPSBFTk9NRU07CisJCQlfX2xlYXZlOworCQl9CisKKwkJUnRsWmVyb01lbW9yeShpbywgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCkpOworCQlpby0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUw7CisKKwkJTnREYXRhID0gKFBOVF9QUklWQVRFX0RBVEEpbWFsbG9jKHNpemVvZihOVF9QUklWQVRFX0RBVEEpKTsKKworCQlpZiAoTlVMTCA9PSBOdERhdGEpCisJCXsKKwkJCUVycm5vID0gRU5PTUVNOworCQkJX19sZWF2ZTsKKwkJfQorCisKKwkJaW8tPm1hbmFnZXIgPSBudF9pb19tYW5hZ2VyKCk7CisJCWlvLT5uYW1lID0gbWFsbG9jKHN0cmxlbihuYW1lKSArIDEpOworCQlpZiAoTlVMTCA9PSBpby0+bmFtZSkKKwkJeworCQkJRXJybm8gPSBFTk9NRU07CisJCQlfX2xlYXZlOworCQl9CisKKwkJc3RyY3B5KGlvLT5uYW1lLCBuYW1lKTsKKwkJaW8tPnByaXZhdGVfZGF0YSA9IE50RGF0YTsKKwkJaW8tPmJsb2NrX3NpemUgPSAxMDI0OworCQlpby0+cmVhZF9lcnJvciA9IDA7CisJCWlvLT53cml0ZV9lcnJvciA9IDA7CisJCWlvLT5yZWZjb3VudCA9IDE7CisKKwkJLy8KKwkJLy8gSW5pdGlhbGl6ZSBkYXRhCisJCS8vCisKKwkJUnRsWmVyb01lbW9yeShOdERhdGEsIHNpemVvZihOVF9QUklWQVRFX0RBVEEpKTsKKworCQlOdERhdGEtPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19OVF9JT19DSEFOTkVMOworCQlOdERhdGEtPkJ1ZmZlckJsb2NrTnVtYmVyID0gMHhmZmZmZmZmZjsKKwkJTnREYXRhLT5CdWZmZXJTaXplID0gMTAyNDsKKwkJTnREYXRhLT5CdWZmZXIgPSBtYWxsb2MoTnREYXRhLT5CdWZmZXJTaXplKTsKKworCQlpZiAoTlVMTCA9PSBOdERhdGEtPkJ1ZmZlcikKKwkJeworCQkJRXJybm8gPSBFTk9NRU07CisJCQlfX2xlYXZlOworCQl9CisKKwkJLy8KKwkJLy8gT3BlbiBpdAorCQkvLworCisJCWlmKCFfRXh0Mk9wZW5EZXZpY2UobmFtZSwgKEJPT0xFQU4pIUJvb2xlYW5GbGFnT24oZmxhZ3MsIEVYVDJfRkxBR19SVyksICZOdERhdGEtPkhhbmRsZSwgJk50RGF0YS0+T3BlbmVkUmVhZG9ubHksICZFcnJubykpCisJCXsKKwkJCV9fbGVhdmU7CisJCX0KKworCisJCS8vCisJCS8vIGdldCBzaXplCisJCS8vCisKKwkJX0dldERldmljZVNpemUoTnREYXRhLT5IYW5kbGUsICZGc1NpemUpOworCQlzdHJjcHkoa25vd25kZXZpY2UsIG5hbWUpOworCisKKwkJLy8KKwkJLy8gTG9jay9kaXNtb3VudAorCQkvLworCisJCWlmKCFOVF9TVUNDRVNTKF9Mb2NrRHJpdmUoTnREYXRhLT5IYW5kbGUpKSAvKnx8ICFOVF9TVUNDRVNTKF9EaXNtb3VudERyaXZlKE50RGF0YS0+SGFuZGxlKSkqLykKKwkJeworCQkJTnREYXRhLT5PcGVuZWRSZWFkb25seSA9IFRSVUU7CisJCX0KKworCQkvLworCQkvLyBEb25lCisJCS8vCisKKwkJKmNoYW5uZWwgPSBpbzsKKworCisJfQorCV9fZmluYWxseXsKKworCQlpZigwICE9IEVycm5vKQorCQl7CisJCQkvLworCQkJLy8gQ2xlYW51cAorCQkJLy8KKworCQkJaWYgKE5VTEwgIT0gaW8pCisJCQl7CisJCQkJZnJlZShpby0+bmFtZSk7CisJCQkJZnJlZShpbyk7CisJCQl9CisKKwkJCWlmIChOVUxMICE9IE50RGF0YSkKKwkJCXsKKwkJCQlpZihOVUxMICE9IE50RGF0YS0+SGFuZGxlKQorCQkJCXsKKwkJCQkJX1VubG9ja0RyaXZlKE50RGF0YS0+SGFuZGxlKTsKKwkJCQkJX0Nsb3NlRGlzayhOdERhdGEtPkhhbmRsZSk7CisJCQkJfQorCisJCQkJZnJlZShOdERhdGEtPkJ1ZmZlcik7CisJCQkJZnJlZShOdERhdGEpOworCQkJfQorCQl9CisJfQorCisJcmV0dXJuIEVycm5vOworfQorCisKKy8vCisvLyBDbG9zZSBhcGkKKy8vCisKK3N0YXRpYworZXJyY29kZV90CitudF9jbG9zZShpb19jaGFubmVsIGNoYW5uZWwpCit7CisJUE5UX1BSSVZBVEVfREFUQSBOdERhdGEgPSBOVUxMOworCisJaWYoTlVMTCA9PSBjaGFubmVsKQorCXsKKwkJcmV0dXJuIDA7CisJfQorCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCU50RGF0YSA9IChQTlRfUFJJVkFURV9EQVRBKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhOdERhdGEsIEVYVDJfRVRfTUFHSUNfTlRfSU9fQ0hBTk5FTCk7CisKKwlpZiAoLS1jaGFubmVsLT5yZWZjb3VudCA+IDApCisJeworCQlyZXR1cm4gMDsKKwl9CisKKwlmcmVlKGNoYW5uZWwtPm5hbWUpOworCWZyZWUoY2hhbm5lbCk7CisKKwlpZiAoTlVMTCAhPSBOdERhdGEpCisJeworCQlpZihOVUxMICE9IE50RGF0YS0+SGFuZGxlKQorCQl7CisJCQlfRGlzbW91bnREcml2ZShOdERhdGEtPkhhbmRsZSk7CisJCQlfVW5sb2NrRHJpdmUoTnREYXRhLT5IYW5kbGUpOworCQkJX0Nsb3NlRGlzayhOdERhdGEtPkhhbmRsZSk7CisJCX0KKworCQlmcmVlKE50RGF0YS0+QnVmZmVyKTsKKwkJZnJlZShOdERhdGEpOworCX0KKworCXJldHVybiAwOworfQorCisKKworLy8KKy8vIHNldCBibG9jayBzaXplCisvLworCitzdGF0aWMKK2VycmNvZGVfdAorbnRfc2V0X2Jsa3NpemUoaW9fY2hhbm5lbCBjaGFubmVsLCBpbnQgYmxrc2l6ZSkKK3sKKwlQTlRfUFJJVkFURV9EQVRBIE50RGF0YSA9IE5VTEw7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJTnREYXRhID0gKFBOVF9QUklWQVRFX0RBVEEpIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKE50RGF0YSwgRVhUMl9FVF9NQUdJQ19OVF9JT19DSEFOTkVMKTsKKworCWlmIChjaGFubmVsLT5ibG9ja19zaXplICE9IGJsa3NpemUpCisJeworCQljaGFubmVsLT5ibG9ja19zaXplID0gYmxrc2l6ZTsKKworCQlmcmVlKE50RGF0YS0+QnVmZmVyKTsKKwkJTnREYXRhLT5CdWZmZXJCbG9ja051bWJlciA9IDB4ZmZmZmZmZmY7CisJCU50RGF0YS0+QnVmZmVyU2l6ZSA9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisJCUFTU0VSVCgwID09IChOdERhdGEtPkJ1ZmZlclNpemUgJSA1MTIpKTsKKworCQlOdERhdGEtPkJ1ZmZlciA9IG1hbGxvYyhOdERhdGEtPkJ1ZmZlclNpemUpOworCisJCWlmIChOVUxMID09IE50RGF0YS0+QnVmZmVyKQorCQl7CisJCQlyZXR1cm4gRU5PTUVNOworCQl9CisKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisvLworLy8gcmVhZCBibG9jaworLy8KKworc3RhdGljCitlcnJjb2RlX3QKK250X3JlYWRfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCSAgICAgICBpbnQgY291bnQsIHZvaWQgKmJ1ZikKK3sKKwlQVk9JRCBCdWZmZXJUb1JlYWQ7CisJVUxPTkcgU2l6ZVRvUmVhZDsKKwlVTE9ORyBTaXplOworCUxBUkdFX0lOVEVHRVIgT2Zmc2V0OworCVBOVF9QUklWQVRFX0RBVEEgTnREYXRhID0gTlVMTDsKKwl1bnNpZ25lZCBFcnJubyA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJTnREYXRhID0gKFBOVF9QUklWQVRFX0RBVEEpIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKE50RGF0YSwgRVhUMl9FVF9NQUdJQ19OVF9JT19DSEFOTkVMKTsKKworCS8vCisJLy8gSWYgaXQncyBpbiB0aGUgY2FjaGUsIHVzZSBpdCEKKwkvLworCisJaWYgKCgxID09IGNvdW50KSAmJgorCQkoYmxvY2sgPT0gTnREYXRhLT5CdWZmZXJCbG9ja051bWJlcikgJiYKKwkJKE50RGF0YS0+QnVmZmVyQmxvY2tOdW1iZXIgIT0gMHhmZmZmZmZmZikpCisJeworCQltZW1jcHkoYnVmLCBOdERhdGEtPkJ1ZmZlciwgY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCXJldHVybiAwOworCX0KKworCVNpemUgPSAoY291bnQgPCAwKSA/IChVTE9ORykoLWNvdW50KSA6IChVTE9ORykoY291bnQgKiBjaGFubmVsLT5ibG9ja19zaXplKTsKKworCU9mZnNldC5RdWFkUGFydCA9IGJsb2NrICogY2hhbm5lbC0+YmxvY2tfc2l6ZTsKKworCS8vCisJLy8gSWYgbm90IGZpdCB0byB0aGUgYmxvY2sKKwkvLworCisJaWYoU2l6ZSA8PSBOdERhdGEtPkJ1ZmZlclNpemUpCisJeworCQkvLworCQkvLyBVcGRhdGUgdGhlIGNhY2hlCisJCS8vCisKKwkJTnREYXRhLT5CdWZmZXJCbG9ja051bWJlciA9IGJsb2NrOworCQlCdWZmZXJUb1JlYWQgPSBOdERhdGEtPkJ1ZmZlcjsKKwkJU2l6ZVRvUmVhZCA9IE50RGF0YS0+QnVmZmVyU2l6ZTsKKwl9CisJZWxzZQorCXsKKwkJU2l6ZVRvUmVhZCA9IFNpemU7CisJCUJ1ZmZlclRvUmVhZCA9IGJ1ZjsKKwkJQVNTRVJUKDAgPT0gKFNpemVUb1JlYWQgJSBjaGFubmVsLT5ibG9ja19zaXplKSk7CisJfQorCisJaWYoIV9SYXdSZWFkKE50RGF0YS0+SGFuZGxlLCBPZmZzZXQsIFNpemVUb1JlYWQsIEJ1ZmZlclRvUmVhZCwgJkVycm5vKSkKKwl7CisKKwkJaWYgKGNoYW5uZWwtPnJlYWRfZXJyb3IpCisJCXsKKwkJCXJldHVybiAoY2hhbm5lbC0+cmVhZF9lcnJvcikoY2hhbm5lbCwgYmxvY2ssIGNvdW50LCBidWYsCisJCQkJCSAgICAgICBTaXplLCAwLCBFcnJubyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlyZXR1cm4gRXJybm87CisJCX0KKwl9CisKKworCWlmKEJ1ZmZlclRvUmVhZCAhPSBidWYpCisJeworCQlBU1NFUlQoU2l6ZSA8PSBTaXplVG9SZWFkKTsKKwkJbWVtY3B5KGJ1ZiwgQnVmZmVyVG9SZWFkLCBTaXplKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisvLworLy8gd3JpdGUgYmxvY2sKKy8vCisKK3N0YXRpYworZXJyY29kZV90CitudF93cml0ZV9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJCWludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCVVMT05HIFNpemVUb1dyaXRlOworCUxBUkdFX0lOVEVHRVIgT2Zmc2V0OworCVBOVF9QUklWQVRFX0RBVEEgTnREYXRhID0gTlVMTDsKKwl1bnNpZ25lZCBFcnJubyA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJTnREYXRhID0gKFBOVF9QUklWQVRFX0RBVEEpIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKE50RGF0YSwgRVhUMl9FVF9NQUdJQ19OVF9JT19DSEFOTkVMKTsKKworCWlmKE50RGF0YS0+T3BlbmVkUmVhZG9ubHkpCisJeworCQlyZXR1cm4gRUFDQ0VTOworCX0KKworCWlmIChjb3VudCA9PSAxKQorCXsKKwkJU2l6ZVRvV3JpdGUgPSBjaGFubmVsLT5ibG9ja19zaXplOworCX0KKwllbHNlCisJeworCQlOdERhdGEtPkJ1ZmZlckJsb2NrTnVtYmVyID0gMHhmZmZmZmZmZjsKKworCQlpZiAoY291bnQgPCAwKQorCQl7CisJCQlTaXplVG9Xcml0ZSA9IChVTE9ORykoLWNvdW50KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCVNpemVUb1dyaXRlID0gKFVMT05HKShjb3VudCAqIGNoYW5uZWwtPmJsb2NrX3NpemUpOworCQl9CisJfQorCisKKwlBU1NFUlQoMCA9PSAoU2l6ZVRvV3JpdGUgJSA1MTIpKTsKKwlPZmZzZXQuUXVhZFBhcnQgPSBibG9jayAqIGNoYW5uZWwtPmJsb2NrX3NpemU7CisKKwlpZighX1Jhd1dyaXRlKE50RGF0YS0+SGFuZGxlLCBPZmZzZXQsIFNpemVUb1dyaXRlLCBidWYsICZFcnJubykpCisJeworCQlpZiAoY2hhbm5lbC0+d3JpdGVfZXJyb3IpCisJCXsKKwkJCXJldHVybiAoY2hhbm5lbC0+d3JpdGVfZXJyb3IpKGNoYW5uZWwsIGJsb2NrLCBjb3VudCwgYnVmLAorCQkJCQkJU2l6ZVRvV3JpdGUsIDAsIEVycm5vKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXJldHVybiBFcnJubzsKKwkJfQorCX0KKworCisJLy8KKwkvLyBTdGFzaCBhIGNvcHkuCisJLy8KKworCWlmKFNpemVUb1dyaXRlID49IE50RGF0YS0+QnVmZmVyU2l6ZSkKKwl7CisJCU50RGF0YS0+QnVmZmVyQmxvY2tOdW1iZXIgPSBibG9jazsKKwkJbWVtY3B5KE50RGF0YS0+QnVmZmVyLCBidWYsIE50RGF0YS0+QnVmZmVyU2l6ZSk7CisJfQorCisJTnREYXRhLT5Xcml0dGVuID0gVFJVRTsKKworCXJldHVybiAwOworCit9CisKKworCisvLworLy8gRmx1c2ggZGF0YSBidWZmZXJzIHRvIGRpc2suICBTaW5jZSB3ZSBhcmUgY3VycmVudGx5IHVzaW5nIGEKKy8vIHdyaXRlLXRocm91Z2ggY2FjaGUsIHRoaXMgaXMgYSBuby1vcC4KKy8vCisKK3N0YXRpYworZXJyY29kZV90CitudF9mbHVzaChpb19jaGFubmVsIGNoYW5uZWwpCit7CisJUE5UX1BSSVZBVEVfREFUQSBOdERhdGEgPSBOVUxMOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCU50RGF0YSA9IChQTlRfUFJJVkFURV9EQVRBKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhOdERhdGEsIEVYVDJfRVRfTUFHSUNfTlRfSU9fQ0hBTk5FTCk7CisKKwlpZihOdERhdGEtPk9wZW5lZFJlYWRvbmx5KQorCXsKKwkJcmV0dXJuIDA7IC8vIEVBQ0NFU1M7CisJfQorCisKKwkvLworCS8vIEZsdXNoIGZpbGUgYnVmZmVycy4KKwkvLworCisJX0ZsdXNoRHJpdmUoTnREYXRhLT5IYW5kbGUpOworCisKKwkvLworCS8vIFRlc3QgYW5kIGNvcnJlY3QgcGFydGl0aW9uIHR5cGUuCisJLy8KKworCWlmKE50RGF0YS0+V3JpdHRlbikKKwl7CisJCV9TZXRQYXJ0VHlwZShOdERhdGEtPkhhbmRsZSwgMHg4Myk7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvb3BlbmZzLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9vcGVuZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTM5ZTAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvb3BlbmZzLmMKQEAgLTAsMCArMSw1MjggQEAKKy8qCisgKiBvcGVuZnMuYyAtLS0gb3BlbiBhbiBleHQyIGZpbGVzeXN0ZW0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisKKworI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImUyaW1hZ2UuaCIKKworYmxrNjRfdCBleHQyZnNfZGVzY3JpcHRvcl9ibG9ja19sb2MyKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGdyb3VwX2Jsb2NrLAorCQkJCSAgICAgZGdycF90IGkpCit7CisJaW50CWJnOworCWludAloYXNfc3VwZXIgPSAwLCBncm91cF96ZXJvX2FkanVzdCA9IDA7CisJYmxrNjRfdAlyZXRfYmxrOworCisJLyoKKwkgKiBPbiBhIGJpZ2FsbG9jIEZTIHdpdGggMUsgYmxvY2tzLCBibG9jayAwIGlzIHJlc2VydmVkIGZvciBub24tZXh0NAorCSAqIHN0dWZmLCBzbyBhZGp1c3QgZm9yIHRoYXQgaWYgd2UncmUgYmVpbmcgYXNrZWQgZm9yIGdyb3VwIDAuCisJICovCisJaWYgKGkgPT0gMCAmJiBmcy0+YmxvY2tzaXplID09IDEwMjQgJiYgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpID4gMSkKKwkJZ3JvdXBfemVyb19hZGp1c3QgPSAxOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhmcy0+c3VwZXIpIHx8CisJICAgIChpIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmcpKQorCQlyZXR1cm4gZ3JvdXBfYmxvY2sgKyBpICsgMSArIGdyb3VwX3plcm9fYWRqdXN0OworCisJYmcgPSBFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcikgKiBpOworCWlmIChleHQyZnNfYmdfaGFzX3N1cGVyKGZzLCBiZykpCisJCWhhc19zdXBlciA9IDE7CisJcmV0X2JsayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGJnKTsKKwkvKgorCSAqIElmIGdyb3VwX2Jsb2NrIGlzIG5vdCB0aGUgbm9ybWFsIHZhbHVlLCB3ZSdyZSB0cnlpbmcgdG8gdXNlCisJICogdGhlIGJhY2t1cCBncm91cCBkZXNjcmlwdG9ycyBhbmQgc3VwZXJibG9jayAtLS0gc28gdXNlIHRoZQorCSAqIGFsdGVybmF0ZSBsb2NhdGlvbiBvZiB0aGUgc2Vjb25kIGJsb2NrIGdyb3VwIGluIHRoZQorCSAqIG1ldGFibG9jayBncm91cC4gIElkZWFsbHkgd2Ugc2hvdWxkIGJlIHRlc3RpbmcgZWFjaCBiZworCSAqIGRlc2NyaXB0b3IgYmxvY2sgaW5kaXZpZHVhbGx5IGZvciBjb3JyZWN0bmVzcywgYnV0IHdlIGRvbid0CisJICogaGF2ZSB0aGUgaW5mcmFzdHJ1Y3R1cmUgaW4gcGxhY2UgdG8gZG8gdGhhdC4KKwkgKi8KKwlpZiAoZ3JvdXBfYmxvY2sgIT0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgJiYKKwkgICAgKChyZXRfYmxrICsgaGFzX3N1cGVyICsgZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXApIDwKKwkgICAgIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpIHsKKwkJcmV0X2JsayArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKworCQkvKgorCQkgKiBJZiB3ZSdyZSBnb2luZyB0byBqdW1wIGZvcndhcmQgYSBibG9jayBncm91cCwgbWFrZSBzdXJlCisJCSAqIHRoYXQgd2UgYWRqdXN0IGhhc19zdXBlciB0byBhY2NvdW50IGZvciB0aGUgbmV4dCBncm91cCdzCisJCSAqIGJhY2t1cCBzdXBlcmJsb2NrIChvciBsYWNrIHRoZXJlb2YpLgorCQkgKi8KKwkJaWYgKGV4dDJmc19iZ19oYXNfc3VwZXIoZnMsIGJnICsgMSkpCisJCQloYXNfc3VwZXIgPSAxOworCQllbHNlCisJCQloYXNfc3VwZXIgPSAwOworCX0KKwlyZXR1cm4gcmV0X2JsayArIGhhc19zdXBlciArIGdyb3VwX3plcm9fYWRqdXN0OworfQorCitibGtfdCBleHQyZnNfZGVzY3JpcHRvcl9ibG9ja19sb2MoZXh0Ml9maWxzeXMgZnMsIGJsa190IGdyb3VwX2Jsb2NrLCBkZ3JwX3QgaSkKK3sKKwlyZXR1cm4gZXh0MmZzX2Rlc2NyaXB0b3JfYmxvY2tfbG9jMihmcywgZ3JvdXBfYmxvY2ssIGkpOworfQorCitlcnJjb2RlX3QgZXh0MmZzX29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzLCBpbnQgc3VwZXJibG9jaywKKwkJICAgICAgdW5zaWduZWQgaW50IGJsb2NrX3NpemUsIGlvX21hbmFnZXIgbWFuYWdlciwKKwkJICAgICAgZXh0Ml9maWxzeXMgKnJldF9mcykKK3sKKwlyZXR1cm4gZXh0MmZzX29wZW4yKG5hbWUsIDAsIGZsYWdzLCBzdXBlcmJsb2NrLCBibG9ja19zaXplLAorCQkJICAgIG1hbmFnZXIsIHJldF9mcyk7Cit9CisKKy8qCisgKiAgTm90ZTogaWYgc3VwZXJibG9jayBpcyBub24temVybywgYmxvY2stc2l6ZSBtdXN0IGFsc28gYmUgbm9uLXplcm8uCisgKiAJU3VwZXJibG9jayBhbmQgYmxvY2tfc2l6ZSBjYW4gYmUgemVybyB0byB1c2UgdGhlIGRlZmF1bHQgc2l6ZS4KKyAqCisgKiBWYWxpZCBmbGFncyBmb3IgZXh0MmZzX29wZW4oKQorICoKKyAqIAlFWFQyX0ZMQUdfUlcJLSBPcGVuIHRoZSBmaWxlc3lzdGVtIGZvciByZWFkL3dyaXRlLgorICogCUVYVDJfRkxBR19GT1JDRSAtIE9wZW4gdGhlIGZpbGVzeXN0ZW0gZXZlbiBpZiBzb21lIG9mIHRoZQorICoJCQkJZmVhdHVyZXMgYXJlbid0IHN1cHBvcnRlZC4KKyAqCUVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSyAtIE9wZW4gYW4gZXh0MyBqb3VybmFsIGRldmljZQorICoJRVhUMl9GTEFHX1NLSVBfTU1QIC0gT3BlbiB3aXRob3V0IG11bHRpLW1vdW50IHByb3RlY3Rpb24gY2hlY2suCisgKglFWFQyX0ZMQUdfNjRCSVRTIC0gQWxsb3cgNjQtYml0IGJpdGZpZWxkcyAobmVlZGVkIGZvciBsYXJnZQorICoJCQkJZmlsZXN5c3RlbXMpCisgKi8KK2VycmNvZGVfdCBleHQyZnNfb3BlbjIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqaW9fb3B0aW9ucywKKwkJICAgICAgIGludCBmbGFncywgaW50IHN1cGVyYmxvY2ssCisJCSAgICAgICB1bnNpZ25lZCBpbnQgYmxvY2tfc2l6ZSwgaW9fbWFuYWdlciBtYW5hZ2VyLAorCQkgICAgICAgZXh0Ml9maWxzeXMgKnJldF9mcykKK3sKKwlleHQyX2ZpbHN5cwlmczsKKwllcnJjb2RlX3QJcmV0dmFsOworCXVuc2lnbmVkIGxvbmcJaSwgZmlyc3RfbWV0YV9iZzsKKwlfX3UzMgkJZmVhdHVyZXM7CisJdW5zaWduZWQgaW50CWJsb2Nrc19wZXJfZ3JvdXAsIGlvX2ZsYWdzOworCWJsazY0X3QJCWdyb3VwX2Jsb2NrLCBibGs7CisJY2hhcgkJKmRlc3QsICpjcDsKKwlpbnQJCWdyb3VwX3plcm9fYWRqdXN0ID0gMDsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwl1bnNpZ25lZCBpbnQJZ3JvdXBzX3Blcl9ibG9jazsKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpnZHA7CisJaW50CQlqOworI2VuZGlmCisKKwlFWFQyX0NIRUNLX01BR0lDKG1hbmFnZXIsIEVYVDJfRVRfTUFHSUNfSU9fTUFOQUdFUik7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cyksICZmcyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldChmcywgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfZXh0Ml9maWxzeXMpKTsKKwlmcy0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVM7CisJZnMtPmZsYWdzID0gZmxhZ3M7CisJLyogZG9uJ3Qgb3ZlcndyaXRlIHNiIGJhY2t1cHMgdW5sZXNzIGZsYWcgaXMgZXhwbGljaXRseSBjbGVhcmVkICovCisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKwlmcy0+dW1hc2sgPSAwMjI7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc3RybGVuKG5hbWUpKzEsICZmcy0+ZGV2aWNlX25hbWUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwlzdHJjcHkoZnMtPmRldmljZV9uYW1lLCBuYW1lKTsKKwljcCA9IHN0cmNocihmcy0+ZGV2aWNlX25hbWUsICc/Jyk7CisJaWYgKCFpb19vcHRpb25zICYmIGNwKSB7CisJCSpjcCsrID0gMDsKKwkJaW9fb3B0aW9ucyA9IGNwOworCX0KKworCWlvX2ZsYWdzID0gMDsKKwlpZiAoZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpCisJCWlvX2ZsYWdzIHw9IElPX0ZMQUdfUlc7CisJaWYgKGZsYWdzICYgRVhUMl9GTEFHX0VYQ0xVU0lWRSkKKwkJaW9fZmxhZ3MgfD0gSU9fRkxBR19FWENMVVNJVkU7CisJaWYgKGZsYWdzICYgRVhUMl9GTEFHX0RJUkVDVF9JTykKKwkJaW9fZmxhZ3MgfD0gSU9fRkxBR19ESVJFQ1RfSU87CisJcmV0dmFsID0gbWFuYWdlci0+b3Blbihmcy0+ZGV2aWNlX25hbWUsIGlvX2ZsYWdzLCAmZnMtPmlvKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaWYgKGlvX29wdGlvbnMgJiYKKwkgICAgKHJldHZhbCA9IGlvX2NoYW5uZWxfc2V0X29wdGlvbnMoZnMtPmlvLCBpb19vcHRpb25zKSkpCisJCWdvdG8gY2xlYW51cDsKKwlmcy0+aW1hZ2VfaW8gPSBmcy0+aW87CisJZnMtPmlvLT5hcHBfZGF0YSA9IGZzOworCXJldHZhbCA9IGlvX2NoYW5uZWxfYWxsb2NfYnVmKGZzLT5pbywgLVNVUEVSQkxPQ0tfU0laRSwgJmZzLT5zdXBlcik7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCWlmIChmbGFncyAmIEVYVDJfRkxBR19JTUFHRV9GSUxFKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbWFnZV9oZHIpLAorCQkJCQkmZnMtPmltYWdlX2hlYWRlcik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGsoZnMtPmlvLCAwLAorCQkJCQkgICAgIC0oaW50KXNpemVvZihzdHJ1Y3QgZXh0Ml9pbWFnZV9oZHIpLAorCQkJCQkgICAgIGZzLT5pbWFnZV9oZWFkZXIpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCQlpZiAoZnMtPmltYWdlX2hlYWRlci0+bWFnaWNfbnVtYmVyICE9IEVYVDJfRVRfTUFHSUNfRTJJTUFHRSkKKwkJCXJldHVybiBFWFQyX0VUX01BR0lDX0UySU1BR0U7CisJCXN1cGVyYmxvY2sgPSAxOworCQlibG9ja19zaXplID0gZnMtPmltYWdlX2hlYWRlci0+ZnNfYmxvY2tzaXplOworCX0KKworCS8qCisJICogSWYgdGhlIHVzZXIgc3BlY2lmaWVzIGEgc3BlY2lmaWMgYmxvY2sgIyBmb3IgdGhlCisJICogc3VwZXJibG9jaywgdGhlbiBoZS9zaGUgbXVzdCBhbHNvIHNwZWNpZnkgdGhlIGJsb2NrIHNpemUhCisJICogT3RoZXJ3aXNlLCByZWFkIHRoZSBtYXN0ZXIgc3VwZXJibG9jayBsb2NhdGVkIGF0IG9mZnNldAorCSAqIFNVUEVSQkxPQ0tfT0ZGU0VUIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwYXJ0aXRpb24uCisJICoKKwkgKiBOb3RlOiB3ZSBvbmx5IHNhdmUgYSBiYWNrdXAgY29weSBvZiB0aGUgc3VwZXJibG9jayBpZiB3ZQorCSAqIGFyZSByZWFkaW5nIHRoZSBzdXBlcmJsb2NrIGZyb20gdGhlIHByaW1hcnkgc3VwZXJibG9jayBsb2NhdGlvbi4KKwkgKi8KKwlpZiAoc3VwZXJibG9jaykgeworCQlpZiAoIWJsb2NrX3NpemUpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCQlpb19jaGFubmVsX3NldF9ibGtzaXplKGZzLT5pbywgYmxvY2tfc2l6ZSk7CisJCWdyb3VwX2Jsb2NrID0gc3VwZXJibG9jazsKKwkJZnMtPm9yaWdfc3VwZXIgPSAwOworCX0gZWxzZSB7CisJCWlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoZnMtPmlvLCBTVVBFUkJMT0NLX09GRlNFVCk7CisJCXN1cGVyYmxvY2sgPSAxOworCQlncm91cF9ibG9jayA9IDA7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKFNVUEVSQkxPQ0tfU0laRSwgJmZzLT5vcmlnX3N1cGVyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9CisJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2Jsayhmcy0+aW8sIHN1cGVyYmxvY2ssIC1TVVBFUkJMT0NLX1NJWkUsCisJCQkJICAgICBmcy0+c3VwZXIpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwlpZiAoZnMtPm9yaWdfc3VwZXIpCisJCW1lbWNweShmcy0+b3JpZ19zdXBlciwgZnMtPnN1cGVyLCBTVVBFUkJMT0NLX1NJWkUpOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykpIHsKKwkJcmV0dmFsID0gMDsKKwkJaWYgKCFleHQyZnNfdmVyaWZ5X2NzdW1fdHlwZShmcywgZnMtPnN1cGVyKSkKKwkJCXJldHZhbCA9IEVYVDJfRVRfVU5LTk9XTl9DU1VNOworCQlpZiAoIWV4dDJmc19zdXBlcmJsb2NrX2NzdW1fdmVyaWZ5KGZzLCBmcy0+c3VwZXIpKQorCQkJcmV0dmFsID0gRVhUMl9FVF9TQl9DU1VNX0lOVkFMSUQ7CisJfQorCisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19TV0FQX0JZVEVTOworCWV4dDJmc19zd2FwX3N1cGVyKGZzLT5zdXBlcik7CisjZWxzZQorCWlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfU1dBUF9CWVRFUykgeworCQlyZXR2YWwgPSBFWFQyX0VUX1VOSU1QTEVNRU5URUQ7CisJCWdvdG8gY2xlYW51cDsKKwl9CisjZW5kaWYKKworCWlmIChmcy0+c3VwZXItPnNfbWFnaWMgIT0gRVhUMl9TVVBFUl9NQUdJQykKKwkJcmV0dmFsID0gRVhUMl9FVF9CQURfTUFHSUM7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJaWYgKGZzLT5zdXBlci0+c19yZXZfbGV2ZWwgPiBFWFQyX0xJQl9DVVJSRU5UX1JFVikgeworCQlyZXR2YWwgPSBFWFQyX0VUX1JFVl9UT09fSElHSDsKKwkJZ290byBjbGVhbnVwOworCX0KKworCS8qCisJICogQ2hlY2sgZm9yIGZlYXR1cmUgc2V0IGluY29tcGF0aWJpbGl0eQorCSAqLworCWlmICghKGZsYWdzICYgRVhUMl9GTEFHX0ZPUkNFKSkgeworCQlmZWF0dXJlcyA9IGZzLT5zdXBlci0+c19mZWF0dXJlX2luY29tcGF0OworI2lmZGVmIEVYVDJfTElCX1NPRlRTVVBQX0lOQ09NUEFUCisJCWlmIChmbGFncyAmIEVYVDJfRkxBR19TT0ZUU1VQUF9GRUFUVVJFUykKKwkJCWZlYXR1cmVzICY9IH5FWFQyX0xJQl9TT0ZUU1VQUF9JTkNPTVBBVDsKKyNlbmRpZgorCQlpZiAoZmVhdHVyZXMgJiB+RVhUMl9MSUJfRkVBVFVSRV9JTkNPTVBBVF9TVVBQKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX1VOU1VQUF9GRUFUVVJFOworCQkJZ290byBjbGVhbnVwOworCQl9CisKKwkJZmVhdHVyZXMgPSBmcy0+c3VwZXItPnNfZmVhdHVyZV9yb19jb21wYXQ7CisjaWZkZWYgRVhUMl9MSUJfU09GVFNVUFBfUk9fQ09NUEFUCisJCWlmIChmbGFncyAmIEVYVDJfRkxBR19TT0ZUU1VQUF9GRUFUVVJFUykKKwkJCWZlYXR1cmVzICY9IH5FWFQyX0xJQl9TT0ZUU1VQUF9ST19DT01QQVQ7CisjZW5kaWYKKwkJaWYgKChmbGFncyAmIEVYVDJfRkxBR19SVykgJiYKKwkJICAgIChmZWF0dXJlcyAmIH5FWFQyX0xJQl9GRUFUVVJFX1JPX0NPTVBBVF9TVVBQKSkgeworCQkJcmV0dmFsID0gRVhUMl9FVF9ST19VTlNVUFBfRkVBVFVSRTsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCisJCWlmICghKGZsYWdzICYgRVhUMl9GTEFHX0pPVVJOQUxfREVWX09LKSAmJgorCQkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfZGV2KGZzLT5zdXBlcikpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkU7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9CisKKwlpZiAoKGZzLT5zdXBlci0+c19sb2dfYmxvY2tfc2l6ZSArIEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFKSA+CisJICAgIEVYVDJfTUFYX0JMT0NLX0xPR19TSVpFKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfQ09SUlVQVF9TVVBFUkJMT0NLOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBiaWdhbGxvYyByZXF1aXJlcyBjbHVzdGVyLWF3YXJlIGJpdGZpZWxkIG9wZXJhdGlvbnMsIHdoaWNoIGF0IHRoZQorCSAqIG1vbWVudCBtZWFucyB3ZSBuZWVkIEVYVDJfRkxBR182NEJJVFMuCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9iaWdhbGxvYyhmcy0+c3VwZXIpICYmCisJICAgICEoZmxhZ3MgJiBFWFQyX0ZMQUdfNjRCSVRTKSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX0NBTlRfVVNFX0xFR0FDWV9CSVRNQVBTOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSAmJgorCSAgICAoZnMtPnN1cGVyLT5zX2xvZ19ibG9ja19zaXplICE9IGZzLT5zdXBlci0+c19sb2dfY2x1c3Rlcl9zaXplKSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX0NPUlJVUFRfU1VQRVJCTE9DSzsKKwkJZ290byBjbGVhbnVwOworCX0KKwlmcy0+ZnJhZ3NpemUgPSBmcy0+YmxvY2tzaXplID0gRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcik7CisJaWYgKEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpIDwgRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfQ09SUlVQVF9TVVBFUkJMT0NLOworCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyogRW5mb3JjZSB0aGUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdChmcy0+c3VwZXIpKSB7CisJCWlmIChmcy0+c3VwZXItPnNfZGVzY19zaXplIDwgRVhUMl9NSU5fREVTQ19TSVpFXzY0QklUKSB7CisJCQlyZXR2YWwgPSBFWFQyX0VUX0JBRF9ERVNDX1NJWkU7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoZnMtPnN1cGVyLT5zX2Rlc2Nfc2l6ZSAmJgorCQkgICAgZnMtPnN1cGVyLT5zX2Rlc2Nfc2l6ZSAhPSBFWFQyX01JTl9ERVNDX1NJWkUpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfQkFEX0RFU0NfU0laRTsKKwkJCWdvdG8gY2xlYW51cDsKKwkJfQorCX0KKworCWZzLT5jbHVzdGVyX3JhdGlvX2JpdHMgPSBmcy0+c3VwZXItPnNfbG9nX2NsdXN0ZXJfc2l6ZSAtCisJCWZzLT5zdXBlci0+c19sb2dfYmxvY2tfc2l6ZTsKKwlpZiAoRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikgIT0KKwkgICAgRVhUMl9DTFVTVEVSU19QRVJfR1JPVVAoZnMtPnN1cGVyKSA8PCBmcy0+Y2x1c3Rlcl9yYXRpb19iaXRzKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfQ09SUlVQVF9TVVBFUkJMT0NLOworCQlnb3RvIGNsZWFudXA7CisJfQorCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwID0gKChFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAqCisJCQkJICAgICAgIEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpICsKKwkJCQkgICAgICAgRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcikgLSAxKSAvCisJCQkJICAgICAgRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcikpOworCWlmIChibG9ja19zaXplKSB7CisJCWlmIChibG9ja19zaXplICE9IGZzLT5ibG9ja3NpemUpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfVU5FWFBFQ1RFRF9CTE9DS19TSVpFOworCQkJZ290byBjbGVhbnVwOworCQl9CisJfQorCS8qCisJICogU2V0IHRoZSBibG9ja3NpemUgdG8gdGhlIGZpbGVzeXN0ZW0ncyBibG9ja3NpemUuCisJICovCisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIGZzLT5ibG9ja3NpemUpOworCisJLyoKKwkgKiBJZiB0aGlzIGlzIGFuIGV4dGVybmFsIGpvdXJuYWwgZGV2aWNlLCBkb24ndCB0cnkgdG8gcmVhZAorCSAqIHRoZSBncm91cCBkZXNjcmlwdG9ycywgYmVjYXVzZSB0aGV5J3JlIG5vdCB0aGVyZS4KKwkgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfZGV2KGZzLT5zdXBlcikpIHsKKwkJZnMtPmdyb3VwX2Rlc2NfY291bnQgPSAwOworCQkqcmV0X2ZzID0gZnM7CisJCXJldHVybiAwOworCX0KKworCWlmIChFWFQyX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSA9PSAwKSB7CisJCXJldHZhbCA9IEVYVDJfRVRfQ09SUlVQVF9TVVBFUkJMT0NLOworCQlnb3RvIGNsZWFudXA7CisJfQorCS8qIFByZWNvbXB1dGUgdGhlIEZTIFVVSUQgdG8gc2VlZCBvdGhlciBjaGVja3N1bXMgKi8KKwlleHQyZnNfaW5pdF9jc3VtX3NlZWQoZnMpOworCisJLyoKKwkgKiBSZWFkIGdyb3VwIGRlc2NyaXB0b3JzCisJICovCisJYmxvY2tzX3Blcl9ncm91cCA9IEVYVDJfQkxPQ0tTX1BFUl9HUk9VUChmcy0+c3VwZXIpOworCWlmIChibG9ja3NfcGVyX2dyb3VwID09IDAgfHwKKwkgICAgYmxvY2tzX3Blcl9ncm91cCA+IEVYVDJfTUFYX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKSB8fAorCSAgICBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCA+IEVYVDJfTUFYX0lOT0RFU19QRVJfR1JPVVAoZnMtPnN1cGVyKSB8fAorICAgICAgICAgICBFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcikgPT0gMCB8fAorICAgICAgICAgICBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9DT1JSVVBUX1NVUEVSQkxPQ0s7CisJCWdvdG8gY2xlYW51cDsKKwl9CisJZnMtPmdyb3VwX2Rlc2NfY291bnQgPSBleHQyZnNfZGl2NjRfY2VpbChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkJCQkJIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrLAorCQkJCQkJIGJsb2Nrc19wZXJfZ3JvdXApOworCWlmIChmcy0+Z3JvdXBfZGVzY19jb3VudCAqIEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpICE9CisJICAgIGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9DT1JSVVBUX1NVUEVSQkxPQ0s7CisJCWdvdG8gY2xlYW51cDsKKwl9CisJZnMtPmRlc2NfYmxvY2tzID0gZXh0MmZzX2Rpdl9jZWlsKGZzLT5ncm91cF9kZXNjX2NvdW50LAorCQkJCQkgIEVYVDJfREVTQ19QRVJfQkxPQ0soZnMtPnN1cGVyKSk7CisJcmV0dmFsID0gZXh0MmZzX2dldF9hcnJheShmcy0+ZGVzY19ibG9ja3MsIGZzLT5ibG9ja3NpemUsCisJCQkJJmZzLT5ncm91cF9kZXNjKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaWYgKCFncm91cF9ibG9jaykKKwkJZ3JvdXBfYmxvY2sgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwkvKgorCSAqIE9uIGEgRlMgd2l0aCBhIDFLIGJsb2Nrc2l6ZSwgYmxvY2sgMCBpcyByZXNlcnZlZCBmb3IgYm9vdGxvYWRlcnMKKwkgKiBzbyB3ZSBtdXN0IGluY3JlbWVudCBibG9jayBudW1iZXJzIHRvIGFueSBncm91cCAwIGl0ZW1zLgorCSAqCisJICogSG93ZXZlciwgd2UgY2Fubm90IHRvdWNoIGdyb3VwX2Jsb2NrIGRpcmVjdGx5IGJlY2F1c2UgaW4gdGhlIG1ldGFfYmcKKwkgKiBjYXNlLCB0aGUgZXh0MmZzX2Rlc2NyaXB0b3JfYmxvY2tfbG9jMigpIGZ1bmN0aW9uIHdpbGwgaW50ZXJwcmV0CisJICogZ3JvdXBfYmxvY2sgIT0gc19maXJzdF9kYXRhX2Jsb2NrIHRvIG1lYW4gdGhhdCB3ZSB3YW50IHRvIGFjY2VzcyB0aGUKKwkgKiBiYWNrdXAgZ3JvdXAgZGVzY3JpcHRvcnMuICBUaGlzIGlzIG5vdCB3aGF0IHdlIHdhbnQgaWYgdGhlIGNhbGxlcgorCSAqIHNldCBzdXBlcmJsb2NrID09IDAgKGkuZS4gYXV0by1kZXRlY3QgdGhlIHN1cGVyYmxvY2spLCB3aGljaCBpcworCSAqIHdoYXQncyBnb2luZyBvbiBoZXJlLgorCSAqLworCWlmIChncm91cF9ibG9jayA9PSAwICYmIGZzLT5ibG9ja3NpemUgPT0gMTAyNCkKKwkJZ3JvdXBfemVyb19hZGp1c3QgPSAxOworCWRlc3QgPSAoY2hhciAqKSBmcy0+Z3JvdXBfZGVzYzsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwlncm91cHNfcGVyX2Jsb2NrID0gRVhUMl9ERVNDX1BFUl9CTE9DSyhmcy0+c3VwZXIpOworI2VuZGlmCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikpIHsKKwkJZmlyc3RfbWV0YV9iZyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCQlpZiAoZmlyc3RfbWV0YV9iZyA+IGZzLT5kZXNjX2Jsb2NrcykKKwkJCWZpcnN0X21ldGFfYmcgPSBmcy0+ZGVzY19ibG9ja3M7CisJfSBlbHNlCisJCWZpcnN0X21ldGFfYmcgPSBmcy0+ZGVzY19ibG9ja3M7CisJaWYgKGZpcnN0X21ldGFfYmcpIHsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2Jsayhmcy0+aW8sIGdyb3VwX2Jsb2NrICsKKwkJCQkJICAgICBncm91cF96ZXJvX2FkanVzdCArIDEsCisJCQkJCSAgICAgZmlyc3RfbWV0YV9iZywgZGVzdCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWdkcCA9IChzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICopIGRlc3Q7CisJCWZvciAoaj0wOyBqIDwgZ3JvdXBzX3Blcl9ibG9jaypmaXJzdF9tZXRhX2JnOyBqKyspIHsKKwkJCWdkcCA9IGV4dDJmc19ncm91cF9kZXNjKGZzLCBmcy0+Z3JvdXBfZGVzYywgaik7CisJCQlleHQyZnNfc3dhcF9ncm91cF9kZXNjMihmcywgZ2RwKTsKKwkJfQorI2VuZGlmCisJCWRlc3QgKz0gZnMtPmJsb2Nrc2l6ZSpmaXJzdF9tZXRhX2JnOworCX0KKwlmb3IgKGk9Zmlyc3RfbWV0YV9iZyA7IGkgPCBmcy0+ZGVzY19ibG9ja3M7IGkrKykgeworCQlibGsgPSBleHQyZnNfZGVzY3JpcHRvcl9ibG9ja19sb2MyKGZzLCBncm91cF9ibG9jaywgaSk7CisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgMSwgZGVzdCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCWZvciAoaj0wOyBqIDwgZ3JvdXBzX3Blcl9ibG9jazsgaisrKSB7CisJCQlnZHAgPSBleHQyZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsCisJCQkJCQlpICogZ3JvdXBzX3Blcl9ibG9jayArIGopOworCQkJZXh0MmZzX3N3YXBfZ3JvdXBfZGVzYzIoZnMsIGdkcCk7CisJCX0KKyNlbmRpZgorCQlkZXN0ICs9IGZzLT5ibG9ja3NpemU7CisJfQorCisJZnMtPnN0cmlkZSA9IGZzLT5zdXBlci0+c19yYWlkX3N0cmlkZTsKKworCS8qCisJICogSWYgcmVjb3ZlcnkgaXMgZnJvbSBiYWNrdXAgc3VwZXJibG9jaywgQ2xlYXIgX1VOSU5JTlQgZmxhZ3MgJgorCSAqIHJlc2V0IGJnX2l0YWJsZV91bnVzZWQgdG8gemVybworCSAqLworCWlmIChzdXBlcmJsb2NrID4gMSAmJiBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpIHsKKwkJZGdycF90IGdyb3VwOworCisJCWZvciAoZ3JvdXAgPSAwOyBncm91cCA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBncm91cCsrKSB7CisJCQlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGdyb3VwLCBFWFQyX0JHX0JMT0NLX1VOSU5JVCk7CisJCQlleHQyZnNfYmdfZmxhZ3NfY2xlYXIoZnMsIGdyb3VwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCk7CisJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZF9zZXQoZnMsIGdyb3VwLCAwKTsKKwkJCS8qIFRoZSBjaGVja3N1bSB3aWxsIGJlIHJlc2V0IGxhdGVyLCBidXQgZml4IGl0IGhlcmUKKwkJCSAqIGFueXdheSB0byBhdm9pZCBwcmludGluZyBhIGxvdCBvZiBzcHVyaW91cyBlcnJvcnMuICovCisJCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgZ3JvdXApOworCQl9CisJCWlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpCisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tbXAoZnMtPnN1cGVyKSAmJgorCSAgICAhKGZsYWdzICYgRVhUMl9GTEFHX1NLSVBfTU1QKSAmJgorCSAgICAoZmxhZ3MgJiAoRVhUMl9GTEFHX1JXIHwgRVhUMl9GTEFHX0VYQ0xVU0lWRSkpKSB7CisJCXJldHZhbCA9IGV4dDJmc19tbXBfc3RhcnQoZnMpOworCQlpZiAocmV0dmFsKSB7CisJCQlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX1NLSVBfTU1QOyAvKiBqdXN0IGRvIGNsZWFudXAgKi8KKwkJCWV4dDJmc19tbXBfc3RvcChmcyk7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwl9CisKKwlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19OT0ZSRUVfT05fRVJST1I7CisJKnJldF9mcyA9IGZzOworCisJcmV0dXJuIDA7CitjbGVhbnVwOgorCWlmICghKGZsYWdzICYgRVhUMl9GTEFHX05PRlJFRV9PTl9FUlJPUikpIHsKKwkJZXh0MmZzX2ZyZWUoZnMpOworCQlmcyA9IE5VTEw7CisJfQorCSpyZXRfZnMgPSBmczsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogU2V0L2dldCB0aGUgZmlsZXN5c3RlbSBkYXRhIEkvTyBjaGFubmVsLgorICoKKyAqIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSB2YWxpZCBpZiBFWFQyX0ZMQUdfSU1BR0VfRklMRSBpcyB0cnVlLgorICovCitlcnJjb2RlX3QgZXh0MmZzX2dldF9kYXRhX2lvKGV4dDJfZmlsc3lzIGZzLCBpb19jaGFubmVsICpvbGRfaW8pCit7CisJaWYgKChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSU1BR0VfRklMRSkgPT0gMCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9UX0lNQUdFX0ZJTEU7CisJaWYgKG9sZF9pbykgeworCQkqb2xkX2lvID0gKGZzLT5pbWFnZV9pbyA9PSBmcy0+aW8pID8gMCA6IGZzLT5pbzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfc2V0X2RhdGFfaW8oZXh0Ml9maWxzeXMgZnMsIGlvX2NoYW5uZWwgbmV3X2lvKQoreworCWlmICgoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lNQUdFX0ZJTEUpID09IDApCisJCXJldHVybiBFWFQyX0VUX05PVF9JTUFHRV9GSUxFOworCWZzLT5pbyA9IG5ld19pbyA/IG5ld19pbyA6IGZzLT5pbWFnZV9pbzsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IGV4dDJmc19yZXdyaXRlX3RvX2lvKGV4dDJfZmlsc3lzIGZzLCBpb19jaGFubmVsIG5ld19pbykKK3sKKwllcnJjb2RlX3QgZXJyOworCisJaWYgKChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSU1BR0VfRklMRSkgPT0gMCkKKwkJcmV0dXJuIEVYVDJfRVRfTk9UX0lNQUdFX0ZJTEU7CisJZXJyID0gaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShuZXdfaW8sIGZzLT5ibG9ja3NpemUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJaWYgKChuZXdfaW8gPT0gZnMtPmltYWdlX2lvKSB8fCAobmV3X2lvID09IGZzLT5pbykpCisJCXJldHVybiAwOworCWlmICgoZnMtPmltYWdlX2lvICE9IGZzLT5pbykgJiYKKwkgICAgZnMtPmltYWdlX2lvKQorCQlpb19jaGFubmVsX2Nsb3NlKGZzLT5pbWFnZV9pbyk7CisJaWYgKGZzLT5pbykKKwkJaW9fY2hhbm5lbF9jbG9zZShmcy0+aW8pOworCWZzLT5pbyA9IGZzLT5pbWFnZV9pbyA9IG5ld19pbzsKKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0RJUlRZIHwgRVhUMl9GTEFHX1JXIHwKKwkJRVhUMl9GTEFHX0JCX0RJUlRZIHwgRVhUMl9GTEFHX0lCX0RJUlRZOworCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX0lNQUdFX0ZJTEU7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9wcm9ncmVzcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcHJvZ3Jlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzU1NmIxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcHJvZ3Jlc3MuYwpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIHByb2dyZXNzLmMgLSBOdW1lcmljIHByb2dyZXNzIG1ldGVyCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorICogCTIwMDMsIDIwMDQsIDIwMDUgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKKyNpbmNsdWRlIDx0aW1lLmg+CisKK3N0YXRpYyBjaGFyIHNwYWNlc1s4MF0sIGJhY2tzcGFjZXNbODBdOworc3RhdGljIHRpbWVfdCBsYXN0X3VwZGF0ZTsKKworc3RydWN0IGV4dDJmc19wcm9ncmVzc19vcHMgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfb3BzID0geworCS5pbml0CQk9IGV4dDJmc19udW1lcmljX3Byb2dyZXNzX2luaXQsCisJLnVwZGF0ZQkJPSBleHQyZnNfbnVtZXJpY19wcm9ncmVzc191cGRhdGUsCisJLmNsb3NlCQk9IGV4dDJmc19udW1lcmljX3Byb2dyZXNzX2Nsb3NlLAorfTsKKworc3RhdGljIGludCBpbnRfbG9nMTAodW5zaWduZWQgaW50IGFyZykKK3sKKwlpbnQJbDsKKworCWZvciAobD0wOyBhcmcgOyBsKyspCisJCWFyZyA9IGFyZyAvIDEwOworCXJldHVybiBsOworfQorCit2b2lkIGV4dDJmc19udW1lcmljX3Byb2dyZXNzX2luaXQoZXh0Ml9maWxzeXMgZnMsCisJCQkJICBzdHJ1Y3QgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfc3RydWN0ICogcHJvZ3Jlc3MsCisJCQkJICBjb25zdCBjaGFyICpsYWJlbCwgX191NjQgbWF4KQoreworCS8qCisJICogVGhlIFBSSU5UX1BST0dSRVNTIGZsYWcgdHVybnMgb24gb3Igb2ZmIEFMTAorCSAqIHByb2dyZXNzLXJlbGF0ZWQgbWVzc2FnZXMsIHdoZXJlYXMgdGhlIFNLSVBfUFJPR1JFU1MKKwkgKiBlbnZpcm9ubWVudCB2YXJpYWJsZSBwcmludHMgdGhlIHN0YXJ0IGFuZCBlbmQgbWVzc2FnZXMgYnV0CisJICogbm90IHRoZSBudW1lcmljIGNvdW50ZG93biBpbiB0aGUgbWlkZGxlLgorCSAqLworCWlmICghKGZzLT5mbGFncyAmIEVYVDJfRkxBR19QUklOVF9QUk9HUkVTUykpCisJCXJldHVybjsKKworCW1lbXNldChzcGFjZXMsICcgJywgc2l6ZW9mKHNwYWNlcyktMSk7CisJc3BhY2VzW3NpemVvZihzcGFjZXMpLTFdID0gMDsKKwltZW1zZXQoYmFja3NwYWNlcywgJ1xiJywgc2l6ZW9mKGJhY2tzcGFjZXMpLTEpOworCWJhY2tzcGFjZXNbc2l6ZW9mKGJhY2tzcGFjZXMpLTFdID0gMDsKKworCW1lbXNldChwcm9ncmVzcywgMCwgc2l6ZW9mKCpwcm9ncmVzcykpOworCWlmIChnZXRlbnYoIkUyRlNQUk9HU19TS0lQX1BST0dSRVNTIikpCisJCXByb2dyZXNzLT5za2lwX3Byb2dyZXNzKys7CisKKworCS8qCisJICogRmlndXJlIG91dCBob3cgbWFueSBkaWdpdHMgd2UgbmVlZAorCSAqLworCXByb2dyZXNzLT5tYXggPSBtYXg7CisJcHJvZ3Jlc3MtPmxvZ19tYXggPSBpbnRfbG9nMTAobWF4KTsKKworCWlmIChsYWJlbCkgeworCQlmcHV0cyhsYWJlbCwgc3Rkb3V0KTsKKwkJZmZsdXNoKHN0ZG91dCk7CisJfQorCWxhc3RfdXBkYXRlID0gMDsKK30KKwordm9pZCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc191cGRhdGUoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgIHN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgKiBwcm9ncmVzcywKKwkJCQkgICAgX191NjQgdmFsKQoreworCXRpbWVfdCBub3c7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUFJJTlRfUFJPR1JFU1MpKQorCQlyZXR1cm47CisJaWYgKHByb2dyZXNzLT5za2lwX3Byb2dyZXNzKQorCQlyZXR1cm47CisJbm93ID0gdGltZSgwKTsKKwlpZiAobm93ID09IGxhc3RfdXBkYXRlKQorCQlyZXR1cm47CisJbGFzdF91cGRhdGUgPSBub3c7CisKKwlwcmludGYoIiUqbGx1LyUqbGx1IiwgcHJvZ3Jlc3MtPmxvZ19tYXgsIHZhbCwKKwkgICAgICAgcHJvZ3Jlc3MtPmxvZ19tYXgsIHByb2dyZXNzLT5tYXgpOworCWZwcmludGYoc3Rkb3V0LCAiJS4qcyIsICgyKnByb2dyZXNzLT5sb2dfbWF4KSsxLCBiYWNrc3BhY2VzKTsKK30KKwordm9pZCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19jbG9zZShleHQyX2ZpbHN5cyBmcywKKwkJCQkgICBzdHJ1Y3QgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfc3RydWN0ICogcHJvZ3Jlc3MsCisJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUFJJTlRfUFJPR1JFU1MpKQorCQlyZXR1cm47CisJZnByaW50ZihzdGRvdXQsICIlLipzIiwgKDIqcHJvZ3Jlc3MtPmxvZ19tYXgpKzEsIHNwYWNlcyk7CisJZnByaW50ZihzdGRvdXQsICIlLipzIiwgKDIqcHJvZ3Jlc3MtPmxvZ19tYXgpKzEsIGJhY2tzcGFjZXMpOworCWlmIChtZXNzYWdlKQorCQlmcHV0cyhtZXNzYWdlLCBzdGRvdXQpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvcHVuY2guYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3B1bmNoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcwNGJmMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3B1bmNoLmMKQEAgLTAsMCArMSw1MDkgQEAKKy8qCisgKiBwdW5jaC5jIC0tLSBkZWFsbG9jYXRlIGJsb2NrcyBhbGxvY2F0ZWQgdG8gYW4gaW5vZGUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiZXh0MmZzUC5oIgorCisjdW5kZWYgUFVOQ0hfREVCVUcKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIGlmIHRoZSBzcGVjaWZpZWQgYmxvY2sgaXMgYWxsIHplcm9zCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfemVyb19ibG9jayhjaGFyICpidWYsIGludCBibG9ja3NpemUpCit7CisJY2hhcgkqY3AgPSBidWY7CisJaW50CWxlZnQgPSBibG9ja3NpemU7CisKKwl3aGlsZSAobGVmdCA+IDApIHsKKwkJaWYgKCpjcCsrKQorCQkJcmV0dXJuIDA7CisJCWxlZnQtLTsKKwl9CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUaGlzIGNsZXZlciByZWN1cnNpdmUgZnVuY3Rpb24gaGFuZGxlcyBpX2Jsb2Nrc1tdIGFzIHdlbGwgYXMKKyAqIGluZGlyZWN0LCBkb3VibGUgaW5kaXJlY3QsIGFuZCB0cmlwbGUgaW5kaXJlY3QgYmxvY2tzLiAgSXQgaXRlcmF0ZXMKKyAqIG92ZXIgdGhlIGVudHJpZXMgaW4gdGhlIGlfYmxvY2tzIGFycmF5IG9yIGluZGlyZWN0IGJsb2NrcywgYW5kIGZvcgorICogZWFjaCBvbmUsIHdpbGwgcmVjdXJzaXZlbHkgaGFuZGxlIGFueSBpbmRpcmVjdCBibG9ja3MgYW5kIHRoZW4KKyAqIGZyZWVzIGFuZCBkZWFsbG9jYXRlcyB0aGUgYmxvY2tzLgorICovCitzdGF0aWMgZXJyY29kZV90IGluZF9wdW5jaChleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJICAgY2hhciAqYmxvY2tfYnVmLCBibGtfdCAqcCwgaW50IGxldmVsLAorCQkJICAgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBjb3VudCwgaW50IG1heCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsa190CQliOworCWludAkJaTsKKwlibGs2NF90CQlvZmZzZXQsIGluY3I7CisJaW50CQlmcmVlZCA9IDA7CisKKyNpZmRlZiBQVU5DSF9ERUJVRworCXByaW50ZigiRW50ZXJpbmcgaW5kX3B1bmNoLCBsZXZlbCAlZCwgc3RhcnQgJWxsdSwgY291bnQgJWxsdSwgIgorCSAgICAgICAibWF4ICVkXG4iLCBsZXZlbCwgc3RhcnQsIGNvdW50LCBtYXgpOworI2VuZGlmCisJaW5jciA9IDFVTEwgPDwgKChFWFQyX0JMT0NLX1NJWkVfQklUUyhmcy0+c3VwZXIpIC0gMikgKiBsZXZlbCk7CisJZm9yIChpID0gMCwgb2Zmc2V0ID0gMDsgaSA8IG1heDsgaSsrLCBwKyssIG9mZnNldCArPSBpbmNyKSB7CisJCWlmIChvZmZzZXQgPj0gc3RhcnQgKyBjb3VudCkKKwkJCWJyZWFrOworCQlpZiAoKnAgPT0gMCB8fCAob2Zmc2V0K2luY3IpIDw9IHN0YXJ0KQorCQkJY29udGludWU7CisJCWIgPSAqcDsKKwkJaWYgKGxldmVsID4gMCkgeworCQkJYmxrX3Qgc3RhcnQyOworI2lmZGVmIFBVTkNIX0RFQlVHCisJCQlwcmludGYoIlJlYWRpbmcgaW5kaXJlY3QgYmxvY2sgJXVcbiIsIGIpOworI2VuZGlmCisJCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbmRfYmxvY2soZnMsIGIsIGJsb2NrX2J1Zik7CisJCQlpZiAocmV0dmFsKQorCQkJCXJldHVybiByZXR2YWw7CisJCQlzdGFydDIgPSAoc3RhcnQgPiBvZmZzZXQpID8gc3RhcnQgLSBvZmZzZXQgOiAwOworCQkJcmV0dmFsID0gaW5kX3B1bmNoKGZzLCBpbm9kZSwgYmxvY2tfYnVmICsgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJICAgKGJsa190ICopIGJsb2NrX2J1ZiwgbGV2ZWwgLSAxLAorCQkJCQkgICBzdGFydDIsIGNvdW50IC0gb2Zmc2V0LAorCQkJCQkgICBmcy0+YmxvY2tzaXplID4+IDIpOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2luZF9ibG9jayhmcywgYiwgYmxvY2tfYnVmKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJcmV0dXJuIHJldHZhbDsKKwkJCWlmICghY2hlY2tfemVyb19ibG9jayhibG9ja19idWYsIGZzLT5ibG9ja3NpemUpKQorCQkJCWNvbnRpbnVlOworCQl9CisjaWZkZWYgUFVOQ0hfREVCVUcKKwkJcHJpbnRmKCJGcmVlaW5nIGJsb2NrICV1IChvZmZzZXQgJWxsdSlcbiIsIGIsIG9mZnNldCk7CisjZW5kaWYKKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzKGZzLCBiLCAtMSk7CisJCSpwID0gMDsKKwkJZnJlZWQrKzsKKwl9CisjaWZkZWYgUFVOQ0hfREVCVUcKKwlwcmludGYoIkZyZWVkICVkIGJsb2Nrc1xuIiwgZnJlZWQpOworI2VuZGlmCisJcmV0dXJuIGV4dDJmc19pYmxrX3N1Yl9ibG9ja3MoZnMsIGlub2RlLCBmcmVlZCk7Cit9CisKKyNkZWZpbmUgQkxLX1RfTUFYICgoYmxrX3QpfjBVTEwpCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19wdW5jaF9pbmQoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgIGNoYXIgKmJsb2NrX2J1ZiwgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBlbmQpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCSpidWYgPSAwOworCWludAkJCWxldmVsOworCWludAkJCW51bSA9IEVYVDJfTkRJUl9CTE9DS1M7CisJYmxrX3QJCQkqYnAgPSBpbm9kZS0+aV9ibG9jazsKKwlibGtfdAkJCWFkZHJfcGVyX2Jsb2NrOworCWJsazY0X3QJCQltYXggPSBFWFQyX05ESVJfQkxPQ0tTOworCWJsa190CQkJY291bnQ7CisKKwkvKiBDaGVjayBzdGFydC9lbmQgZG9uJ3Qgb3ZlcmZsb3cgdGhlIDJeMzItMSBpbmRpcmVjdCBibG9jayBsaW1pdCAqLworCWlmIChzdGFydCA+IEJMS19UX01BWCkKKwkJcmV0dXJuIDA7CisJaWYgKGVuZCA+PSBCTEtfVF9NQVggfHwgZW5kIC0gc3RhcnQgKyAxID49IEJMS19UX01BWCkKKwkJY291bnQgPSBCTEtfVF9NQVggLSBzdGFydDsKKwllbHNlCisJCWNvdW50ID0gZW5kIC0gc3RhcnQgKyAxOworCisJaWYgKCFibG9ja19idWYpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9hcnJheSgzLCBmcy0+YmxvY2tzaXplLCAmYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWJsb2NrX2J1ZiA9IGJ1ZjsKKwl9CisKKwlhZGRyX3Blcl9ibG9jayA9IChibGtfdClmcy0+YmxvY2tzaXplID4+IDI7CisKKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPCA0OyBsZXZlbCsrLCBtYXggKj0gKGJsazY0X3QpYWRkcl9wZXJfYmxvY2spIHsKKyNpZmRlZiBQVU5DSF9ERUJVRworCQlwcmludGYoIk1haW4gbG9vcCBsZXZlbCAlZCwgc3RhcnQgJWxsdSBjb3VudCAldSAiCisJCSAgICAgICAibWF4ICVsbHUgbnVtICVkXG4iLCBsZXZlbCwgc3RhcnQsIGNvdW50LCBtYXgsIG51bSk7CisjZW5kaWYKKwkJaWYgKHN0YXJ0IDwgbWF4KSB7CisJCQlyZXR2YWwgPSBpbmRfcHVuY2goZnMsIGlub2RlLCBibG9ja19idWYsIGJwLCBsZXZlbCwKKwkJCQkJICAgc3RhcnQsIGNvdW50LCBudW0pOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJCWlmIChjb3VudCA+IG1heCkKKwkJCQljb3VudCAtPSBtYXggLSBzdGFydDsKKwkJCWVsc2UKKwkJCQlicmVhazsKKwkJCXN0YXJ0ID0gMDsKKwkJfSBlbHNlCisJCQlzdGFydCAtPSBtYXg7CisJCWJwICs9IG51bTsKKwkJaWYgKGxldmVsID09IDApIHsKKwkJCW51bSA9IDE7CisJCQltYXggPSAxOworCQl9CisJfQorCXJldHZhbCA9IDA7CitlcnJvdXQ6CisJaWYgKGJ1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisjdW5kZWYgQkxLX1RfTUFYCisKKyNpZmRlZiBQVU5DSF9ERUJVRworCisjZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikgIHByaW50ZihmLCAjIyBhKQorCitzdGF0aWMgdm9pZCBkYmdfcHJpbnRfZXh0ZW50KGNoYXIgKmRlc2MsIHN0cnVjdCBleHQyZnNfZXh0ZW50ICpleHRlbnQpCit7CisJaWYgKGRlc2MpCisJCXByaW50ZigiJXM6ICIsIGRlc2MpOworCXByaW50ZigiZXh0ZW50OiBsYmxrICVsbHUtLSVsbHUsIGxlbiAldSwgcGJsayAlbGx1LCBmbGFnczogIiwKKwkgICAgICAgZXh0ZW50LT5lX2xibGssIGV4dGVudC0+ZV9sYmxrICsgZXh0ZW50LT5lX2xlbiAtIDEsCisJICAgICAgIGV4dGVudC0+ZV9sZW4sIGV4dGVudC0+ZV9wYmxrKTsKKwlpZiAoZXh0ZW50LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfTEVBRikKKwkJZnB1dHMoIkxFQUYgIiwgc3Rkb3V0KTsKKwlpZiAoZXh0ZW50LT5lX2ZsYWdzICYgRVhUMl9FWFRFTlRfRkxBR1NfVU5JTklUKQorCQlmcHV0cygiVU5JTklUICIsIHN0ZG91dCk7CisJaWYgKGV4dGVudC0+ZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1NFQ09ORF9WSVNJVCkKKwkJZnB1dHMoIjJORF9WSVNJVCAiLCBzdGRvdXQpOworCWlmICghZXh0ZW50LT5lX2ZsYWdzKQorCQlmcHV0cygiKG5vbmUpIiwgc3Rkb3V0KTsKKwlmcHV0YygnXG4nLCBzdGRvdXQpOworCit9CisjZWxzZQorI2RlZmluZSBkYmdfcHJpbnRfZXh0ZW50KGRlc2MsIGV4KQlkbyB7IH0gd2hpbGUgKDApCisjZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikJCWRvIHsgfSB3aGlsZSAoMCkKKyNlbmRpZgorCisvKiBGcmVlIGEgcmFuZ2Ugb2YgYmxvY2tzLCByZXNwZWN0aW5nIGNsdXN0ZXIgYm91bmRhcmllcyAqLworc3RhdGljIGVycmNvZGVfdCBwdW5jaF9leHRlbnRfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJCQkgICAgIGJsazY0X3QgbGZyZWVfc3RhcnQsIGJsazY0X3QgZnJlZV9zdGFydCwKKwkJCQkgICAgIF9fdTMyIGZyZWVfY291bnQsIGludCAqZnJlZWQpCit7CisJYmxrNjRfdAkJcGJsazsKKwlpbnQJCWZyZWVkX25vdyA9IDA7CisJX191MzIJCWNsdXN0ZXJfZnJlZWQ7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisKKwkvKiBObyBiaWdhbGxvYz8gIEp1c3QgZnJlZSBlYWNoIGJsb2NrLiAqLworCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPT0gMSkgeworCQkqZnJlZWQgKz0gZnJlZV9jb3VudDsKKwkJd2hpbGUgKGZyZWVfY291bnQtLSA+IDApCisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBmcmVlX3N0YXJ0KyssIC0xKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwkvKgorCSAqIFRyeSB0byBmcmVlIHVwIHRvIHRoZSBuZXh0IGNsdXN0ZXIgYm91bmRhcnkuICBXZSBhc3N1bWUgdGhhdCBhbGwKKwkgKiBibG9ja3MgaW4gYSBsb2dpY2FsIGNsdXN0ZXIgbWFwIHRvIGJsb2NrcyBmcm9tIHRoZSBzYW1lIHBoeXNpY2FsCisJICogY2x1c3RlciwgYW5kIHRoYXQgdGhlIG9mZnNldHMgd2l0aGluIHRoZSBbcGxdY2x1c3RlcnMgbWF0Y2guCisJICovCisJaWYgKGZyZWVfc3RhcnQgJiBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSkgeworCQlyZXR2YWwgPSBleHQyZnNfbWFwX2NsdXN0ZXJfYmxvY2soZnMsIGlubywgaW5vZGUsCisJCQkJCQkgIGxmcmVlX3N0YXJ0LCAmcGJsayk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwkJaWYgKCFwYmxrKSB7CisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBmcmVlX3N0YXJ0LCAtMSk7CisJCQlmcmVlZF9ub3crKzsKKwkJfQorCQljbHVzdGVyX2ZyZWVkID0gRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpIC0KKwkJCShmcmVlX3N0YXJ0ICYgRVhUMkZTX0NMVVNURVJfTUFTSyhmcykpOworCQlpZiAoY2x1c3Rlcl9mcmVlZCA+IGZyZWVfY291bnQpCisJCQljbHVzdGVyX2ZyZWVkID0gZnJlZV9jb3VudDsKKwkJZnJlZV9jb3VudCAtPSBjbHVzdGVyX2ZyZWVkOworCQlmcmVlX3N0YXJ0ICs9IGNsdXN0ZXJfZnJlZWQ7CisJCWxmcmVlX3N0YXJ0ICs9IGNsdXN0ZXJfZnJlZWQ7CisJfQorCisJLyogRnJlZSB3aG9sZSBjbHVzdGVycyBmcm9tIHRoZSBtaWRkbGUgb2YgdGhlIHJhbmdlLiAqLworCXdoaWxlIChmcmVlX2NvdW50ID4gMCAmJiBmcmVlX2NvdW50ID49ICh1bnNpZ25lZCkgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpKSB7CisJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGZyZWVfc3RhcnQsIC0xKTsKKwkJZnJlZWRfbm93Kys7CisJCWNsdXN0ZXJfZnJlZWQgPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisJCWZyZWVfY291bnQgLT0gY2x1c3Rlcl9mcmVlZDsKKwkJZnJlZV9zdGFydCArPSBjbHVzdGVyX2ZyZWVkOworCQlsZnJlZV9zdGFydCArPSBjbHVzdGVyX2ZyZWVkOworCX0KKworCS8qIFRyeSB0byBmcmVlIHRoZSBsYXN0IGNsdXN0ZXIuICovCisJaWYgKGZyZWVfY291bnQgPiAwKSB7CisJCXJldHZhbCA9IGV4dDJmc19tYXBfY2x1c3Rlcl9ibG9jayhmcywgaW5vLCBpbm9kZSwKKwkJCQkJCSAgbGZyZWVfc3RhcnQsICZwYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQlpZiAoIXBibGspIHsKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGZyZWVfc3RhcnQsIC0xKTsKKwkJCWZyZWVkX25vdysrOworCQl9CisJfQorCitlcnJvdXQ6CisJKmZyZWVkICs9IGZyZWVkX25vdzsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19wdW5jaF9leHRlbnQoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLAorCQkJCSAgICAgYmxrNjRfdCBzdGFydCwgYmxrNjRfdCBlbmQpCit7CisJZXh0Ml9leHRlbnRfaGFuZGxlX3QJaGFuZGxlID0gMDsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJZXJyY29kZV90CQlyZXR2YWw7CisJYmxrNjRfdAkJCWZyZWVfc3RhcnQsIG5leHQsIGxmcmVlX3N0YXJ0OworCV9fdTMyCQkJZnJlZV9jb3VudCwgbmV3bGVuOworCWludAkJCWZyZWVkID0gMDsKKwlpbnQJCQlvcDsKKworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGlubywgaW5vZGUsICZoYW5kbGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJLyoKKwkgKiBGaW5kIHRoZSBleHRlbnQgY2xvc2VzdCB0byB0aGUgc3RhcnQgb2YgdGhlIHB1bmNoIHJhbmdlLiAgV2UgZG9uJ3QKKwkgKiBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIGJlY2F1c2UgX2dvdG8oKSBzZXRzIHRoZSBjdXJyZW50IG5vZGUgdG8gdGhlCisJICogbmV4dC1sb3dlc3QgZXh0ZW50IGlmICdzdGFydCcgaXMgaW4gYSBob2xlLCBhbmQgZG9lc24ndCBzZXQgYQorCSAqIGN1cnJlbnQgbm9kZSBpZiB0aGVyZSB3YXMgYSByZWFsIGVycm9yIHJlYWRpbmcgdGhlIGV4dGVudCB0cmVlLgorCSAqIEluIHRoYXQgY2FzZSwgX2dldCgpIHdpbGwgZXJyb3Igb3V0LgorCSAqCisJICogTm90ZTogSWYgX2dldCgpIHJldHVybnMgJ25vIGN1cnJlbnQgbm9kZScsIHRoYXQgc2ltcGx5IG1lYW5zIHRoYXQKKwkgKiB0aGVyZSBhcmVuJ3QgYW55IGJsb2NrcyBtYXBwZWQgcGFzdCB0aGlzIHBvaW50IGluIHRoZSBmaWxlLCBzbyB3ZSdyZQorCSAqIGRvbmUuCisJICovCisJZXh0MmZzX2V4dGVudF9nb3RvKGhhbmRsZSwgc3RhcnQpOworCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgRVhUMl9FWFRFTlRfQ1VSUkVOVCwgJmV4dGVudCk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERSkgeworCQlyZXR2YWwgPSAwOworCQlnb3RvIGVycm91dDsKKwl9IGVsc2UgaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJd2hpbGUgKDEpIHsKKwkJb3AgPSBFWFQyX0VYVEVOVF9ORVhUX0xFQUY7CisJCWRiZ19wcmludF9leHRlbnQoIm1haW4gbG9vcCIsICZleHRlbnQpOworCQluZXh0ID0gZXh0ZW50LmVfbGJsayArIGV4dGVudC5lX2xlbjsKKwkJZGJnX3ByaW50Zigic3RhcnQgJWxsdSwgZW5kICVsbHUsIG5leHQgJWxsdVxuIiwKKwkJCSAgICh1bnNpZ25lZCBsb25nIGxvbmcpIHN0YXJ0LAorCQkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgZW5kLAorCQkJICAgKHVuc2lnbmVkIGxvbmcgbG9uZykgbmV4dCk7CisJCWlmIChzdGFydCA8PSBleHRlbnQuZV9sYmxrKSB7CisJCQkvKgorCQkJICogSGF2ZSB3ZSBpdGVyYXRlZCBwYXN0IHRoZSBlbmQgb2YgdGhlIHB1bmNoIHJlZ2lvbj8KKwkJCSAqIElmIHNvLCB3ZSBjYW4gc3RvcC4KKwkJCSAqLworCQkJaWYgKGVuZCA8IGV4dGVudC5lX2xibGspCisJCQkJYnJlYWs7CisJCQlkYmdfcHJpbnRmKCJDYXNlICMlZFxuIiwgMSk7CisJCQkvKiBTdGFydCBvZiBkZWxldGVkIHJlZ2lvbiBiZWZvcmUgZXh0ZW50OyAKKwkJCSAgIGFkanVzdCBiZWdpbm5pbmcgb2YgZXh0ZW50ICovCisJCQlmcmVlX3N0YXJ0ID0gZXh0ZW50LmVfcGJsazsKKwkJCWxmcmVlX3N0YXJ0ID0gZXh0ZW50LmVfbGJsazsKKwkJCWlmIChuZXh0ID4gZW5kKQorCQkJCWZyZWVfY291bnQgPSBlbmQgLSBleHRlbnQuZV9sYmxrICsgMTsKKwkJCWVsc2UKKwkJCQlmcmVlX2NvdW50ID0gZXh0ZW50LmVfbGVuOworCQkJZXh0ZW50LmVfbGVuIC09IGZyZWVfY291bnQ7CisJCQlleHRlbnQuZV9sYmxrICs9IGZyZWVfY291bnQ7CisJCQlleHRlbnQuZV9wYmxrICs9IGZyZWVfY291bnQ7CisJCX0gZWxzZSBpZiAoZW5kID49IG5leHQtMSkgeworCQkJLyoKKwkJCSAqIElzIHRoZSBwdW5jaCByZWdpb24gYmV5b25kIHRoaXMgZXh0ZW50PyAgVGhpcyBjYW4KKwkJCSAqIGhhcHBlbiBpZiBzdGFydCBpcyBhbHJlYWR5IGluc2lkZSBhIGhvbGUuICBUcnkgdG8KKwkJCSAqIGFkdmFuY2UgdG8gdGhlIG5leHQgZXh0ZW50IGlmIHRoaXMgaXMgdGhlIGNhc2UuCisJCQkgKi8KKwkJCWlmIChzdGFydCA+PSBuZXh0KQorCQkJCWdvdG8gbmV4dF9leHRlbnQ7CisJCQkvKiBFbmQgb2YgZGVsZXRlZCByZWdpb24gYWZ0ZXIgZXh0ZW50OworCQkJICAgYWRqdXN0IGVuZCBvZiBleHRlbnQgKi8KKwkJCWRiZ19wcmludGYoIkNhc2UgIyVkXG4iLCAyKTsKKwkJCW5ld2xlbiA9IHN0YXJ0IC0gZXh0ZW50LmVfbGJsazsKKwkJCWZyZWVfc3RhcnQgPSBleHRlbnQuZV9wYmxrICsgbmV3bGVuOworCQkJbGZyZWVfc3RhcnQgPSBleHRlbnQuZV9sYmxrICsgbmV3bGVuOworCQkJZnJlZV9jb3VudCA9IGV4dGVudC5lX2xlbiAtIG5ld2xlbjsKKwkJCWV4dGVudC5lX2xlbiA9IG5ld2xlbjsKKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBleHQyZnNfZXh0ZW50CW5ld2V4OworCisJCQlkYmdfcHJpbnRmKCJDYXNlICMlZFxuIiwgMyk7CisJCQkvKiBUaGUgaGFyZCBjYXNlOyB3ZSBuZWVkIHRvIHNwbGl0IHRoZSBleHRlbnQgKi8KKwkJCW5ld2V4LmVfcGJsayA9IGV4dGVudC5lX3BibGsgKworCQkJCShlbmQgKyAxIC0gZXh0ZW50LmVfbGJsayk7CisJCQluZXdleC5lX2xibGsgPSBlbmQgKyAxOworCQkJbmV3ZXguZV9sZW4gPSBuZXh0IC0gZW5kIC0gMTsKKwkJCW5ld2V4LmVfZmxhZ3MgPSBleHRlbnQuZV9mbGFnczsKKworCQkJZXh0ZW50LmVfbGVuID0gc3RhcnQgLSBleHRlbnQuZV9sYmxrOworCQkJZnJlZV9zdGFydCA9IGV4dGVudC5lX3BibGsgKyBleHRlbnQuZV9sZW47CisJCQlsZnJlZV9zdGFydCA9IGV4dGVudC5lX2xibGsgKyBleHRlbnQuZV9sZW47CisJCQlmcmVlX2NvdW50ID0gZW5kIC0gc3RhcnQgKyAxOworCisJCQlkYmdfcHJpbnRfZXh0ZW50KCJpbnNlcnRpbmciLCAmbmV3ZXgpOworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9pbnNlcnQoaGFuZGxlLAorCQkJCQlFWFQyX0VYVEVOVF9JTlNFUlRfQUZURVIsICZuZXdleCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9maXhfcGFyZW50cyhoYW5kbGUpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJCS8qCisJCQkgKiBOb3cgcG9pbnRpbmcgYXQgaW5zZXJ0ZWQgZXh0ZW50OyBzbyBnbyBiYWNrLgorCQkJICoKKwkJCSAqIFdlIGNhbm5vdCB1c2UgRVhUMl9FWFRFTlRfUFJFViB0byBnbyBiYWNrOyBub3RlIHRoZQorCQkJICogc3VidGxldHkgaW4gdGhlIGNvbW1lbnQgZm9yIGZpeF9wYXJlbnRzKCkuCisJCQkgKi8KKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIGV4dGVudC5lX2xibGspOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJfSAKKwkJaWYgKGV4dGVudC5lX2xlbikgeworCQkJZGJnX3ByaW50X2V4dGVudCgicmVwbGFjaW5nIiwgJmV4dGVudCk7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCX0gZWxzZSB7CisJCQlzdHJ1Y3QgZXh0MmZzX2V4dGVudAluZXdleDsKKwkJCWJsazY0X3QJCQlvbGRfbGJsaywgbmV4dF9sYmxrOworCQkJZGJnX3ByaW50ZigiZGVsZXRpbmcgY3VycmVudCBleHRlbnQlc1xuIiwgIiIpOworCisJCQkvKgorCQkJICogU2F2ZSB0aGUgbG9jYXRpb24gb2YgdGhlIG5leHQgbGVhZiwgdGhlbiBzbGlwCisJCQkgKiBiYWNrIHRvIHRoZSBjdXJyZW50IGV4dGVudC4KKwkJCSAqLworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9DVVJSRU5ULAorCQkJCQkJICAgJm5ld2V4KTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCQlvbGRfbGJsayA9IG5ld2V4LmVfbGJsazsKKworCQkJcmV0dmFsID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgRVhUMl9FWFRFTlRfTkVYVF9MRUFGLAorCQkJCQkJICAgJm5ld2V4KTsKKwkJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVCkKKwkJCQluZXh0X2xibGsgPSBvbGRfbGJsazsKKwkJCWVsc2UgaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJCWVsc2UKKwkJCQluZXh0X2xibGsgPSBuZXdleC5lX2xibGs7CisKKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIG9sZF9sYmxrKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisKKwkJCS8qIE5vdyBkZWxldGUgdGhlIGV4dGVudC4gKi8KKwkJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZGVsZXRlKGhhbmRsZSwgMCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCisJCQlyZXR2YWwgPSBleHQyZnNfZXh0ZW50X2ZpeF9wYXJlbnRzKGhhbmRsZSk7CisJCQlpZiAocmV0dmFsICYmIHJldHZhbCAhPSBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERSkKKwkJCQlnb3RvIGVycm91dDsKKwkJCXJldHZhbCA9IDA7CisKKwkJCS8qCisJCQkgKiBKdW1wIGZvcndhcmQgdG8gdGhlIG5leHQgZXh0ZW50LiAgSWYgdGhlcmUgYXJlCisJCQkgKiBlcnJvcnMsIHRoZSBleHQyZnNfZXh0ZW50X2dldCBkb3duIGJlbG93IHdpbGwKKwkJCSAqIGNhcHR1cmUgdGhlbSBmb3IgdXMuCisJCQkgKi8KKwkJCSh2b2lkKWV4dDJmc19leHRlbnRfZ290byhoYW5kbGUsIG5leHRfbGJsayk7CisJCQlvcCA9IEVYVDJfRVhURU5UX0NVUlJFTlQ7CisJCX0KKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQlkYmdfcHJpbnRmKCJGcmVlIHN0YXJ0ICVsbHUsIGZyZWUgY291bnQgPSAldVxuIiwKKwkJICAgICAgIGZyZWVfc3RhcnQsIGZyZWVfY291bnQpOworCQlyZXR2YWwgPSBwdW5jaF9leHRlbnRfYmxvY2tzKGZzLCBpbm8sIGlub2RlLCBsZnJlZV9zdGFydCwKKwkJCQkJICAgICBmcmVlX3N0YXJ0LCBmcmVlX2NvdW50LCAmZnJlZWQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJbmV4dF9leHRlbnQ6CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfZ2V0KGhhbmRsZSwgb3AsCisJCQkJCSAgICZleHRlbnQpOworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfRVhURU5UX05PX05FWFQgfHwKKwkJICAgIHJldHZhbCA9PSBFWFQyX0VUX05PX0NVUlJFTlRfTk9ERSkKKwkJCWJyZWFrOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCWRiZ19wcmludGYoIkZyZWVkICVkIGJsb2Nrc1xuIiwgZnJlZWQpOworCXJldHZhbCA9IGV4dDJmc19pYmxrX3N1Yl9ibG9ja3MoZnMsIGlub2RlLCBmcmVlZCk7CitlcnJvdXQ6CisJZXh0MmZzX2V4dGVudF9mcmVlKGhhbmRsZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKwkKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX3B1bmNoX2lubGluZV9kYXRhKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkJICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUsCisJCQkJCSAgYmxrNjRfdCBzdGFydCwKKwkJCQkJICBibGs2NF90IGVuZCBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJZXJyY29kZV90IHJldHZhbDsKKworCS8qCisJICogSW4gbGliZXh0MmZzIGV4dDJmc19wdW5jaCBpcyBiYXNlZCBvbiBibG9jayB1bml0LiAgU28gdGhhdAorCSAqIG1lYW5zIHRoYXQgaWYgc3RhcnQgPiAwIHdlIGRvbid0IG5lZWQgdG8gZG8gbm90aGluZy4gIER1ZQorCSAqIHRvIHRoaXMgd2Ugd2lsbCByZW1vdmUgYWxsIGlubGluZSBkYXRhIGluIGV4dDJmc19wdW5jaCgpCisJICogbm93LgorCSAqLworCWlmIChzdGFydCA+IDApCisJCXJldHVybiAwOworCisJbWVtc2V0KChjaGFyICopaW5vZGUtPmlfYmxvY2ssIDAsIEVYVDRfTUlOX0lOTElORV9EQVRBX1NJWkUpOworCWlub2RlLT5pX3NpemUgPSAwOworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCBpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHVybiBleHQyZnNfaW5saW5lX2RhdGFfZWFfcmVtb3ZlKGZzLCBpbm8pOworfQorCisvKgorICogRGVhbGxvY2F0ZSBhbGwgbG9naWNhbCBfYmxvY2tzXyBzdGFydGluZyBhdCBzdGFydCB0byBlbmQsIGluY2x1c2l2ZS4KKyAqIElmIGVuZCBpcyB+MFVMTCwgdGhlbiB0aGlzIGlzIGVmZmVjdGl2ZWx5IHRydW5jYXRlLgorICovCitlcnJjb2RlX3QgZXh0MmZzX3B1bmNoKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJICAgICAgIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSwKKwkJICAgICAgIGNoYXIgKmJsb2NrX2J1ZiwgYmxrNjRfdCBzdGFydCwKKwkJICAgICAgIGJsazY0X3QgZW5kKQoreworCWVycmNvZGVfdAkJcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlX2J1ZjsKKworCWlmIChzdGFydCA+IGVuZCkKKwkJcmV0dXJuIEVJTlZBTDsKKworCS8qIFJlYWQgaW5vZGUgc3RydWN0dXJlIGlmIG5lY2Vzc2FyeSAqLworCWlmICghaW5vZGUpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlpbm9kZSA9ICZpbm9kZV9idWY7CisJfQorCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpCisJCXJldHVybiBleHQyZnNfcHVuY2hfaW5saW5lX2RhdGEoZnMsIGlubywgaW5vZGUsIHN0YXJ0LCBlbmQpOworCWVsc2UgaWYgKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKQorCQlyZXR2YWwgPSBleHQyZnNfcHVuY2hfZXh0ZW50KGZzLCBpbm8sIGlub2RlLCBzdGFydCwgZW5kKTsKKwllbHNlCisJCXJldHZhbCA9IGV4dDJmc19wdW5jaF9pbmQoZnMsIGlub2RlLCBibG9ja19idWYsIHN0YXJ0LCBlbmQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKyNpZmRlZiBQVU5DSF9ERUJVRworCXByaW50ZigiJXU6IHdyaXRlIGlub2RlIHNpemUgbm93ICV1IGJsb2NrcyAldVxuIiwKKwkJaW5vLCBpbm9kZS0+aV9zaXplLCBpbm9kZS0+aV9ibG9ja3MpOworI2VuZGlmCisJcmV0dXJuIGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCBpbm9kZSk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9xY293Mi5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcWNvdzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDM3ZjkzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcWNvdzIuYwpAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIHFjb3cyLmMgLS0tIEZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBxY293MiBmb3JtYXR0ZWQgZGlzayBpbWFnZXMuICBUaGlzCisgKiBmb3JtYXQgaXMgdXNlZCBvcmlnaW5hbGx5IGJ5IFFFTVUgZm9yIHZpcnR1YWwgbWFjaGluZXMsIGFuZCBzdG9yZXMgdGhlCisgKiBmaWxlc3lzdGVtIGRhdGEgb24gZGlzayBpbiBhIHBhY2tlZCBmb3JtYXQgdG8gYXZvaWQgY3JlYXRpbmcgc3BhcnNlCisgKiBpbWFnZSBmaWxlcyB0aGF0IG5lZWQgbG90cyBvZiBzZWVraW5nIHRvIHJlYWQgYW5kIHdyaXRlLgorICoKKyAqIFRoZSBxY293MiBmb3JtYXQgc3VwcG9ydHMgemxpYiBjb21wcmVzc2lvbiwgYnV0IHRoYXQgaXMgbm90IHlldAorICogaW1wbGVtZW50ZWQuCisgKgorICogSXQgaXMgcG9zc2libGUgdG8gZGlyZWN0bHkgbW91bnQgYSBxY293MiBpbWFnZSB1c2luZyBxZW11LW5iZDoKKyAqCisgKiBbcm9vdF0jIG1vZHByb2JlIG5iZCBtYXhfcGFydD02MworICogW3Jvb3RdIyBxZW11LW5iZCAtYyAvZGV2L25iZDAgaW1hZ2UuaW1nCisgKiBbcm9vdF0jIG1vdW50IC9kZXYvbmJkMHAxIC9tbnQvcWVtdQorICoKKyAqIEZvcm1hdCBkZXRhaWxzIGF0IGh0dHA6Ly9wZW9wbGUuZ25vbWUub3JnL35tYXJrbWMvcWNvdy1pbWFnZS1mb3JtYXQuaHRtbAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBSZWQgSGF0LCBJbmMuLCBMdWthcyBDemVybmVyIDxsY3plcm5lckByZWRoYXQuY29tPgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGdycC5oPgorI2luY2x1ZGUgPHB3ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgInFjb3cyLmgiCisKKy8qIEZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBxY293MiBpbWFnZSBpbnRvIHJhdyBpbWFnZSAqLworCitzdHJ1Y3QgZXh0Ml9xY293Ml9oZHIgKnFjb3cyX3JlYWRfaGVhZGVyKGludCBmZCkKK3sKKwl2b2lkICpidWZmZXIgPSBOVUxMOworCXN0cnVjdCBleHQyX3Fjb3cyX2hkciAqaGRyID0gTlVMTDsKKwlzaXplX3Qgc2l6ZTsKKwllcnJjb2RlX3QgcmV0OworCisJcmV0ID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2hkciksICZidWZmZXIpOworCWlmIChyZXQpCisJCXJldHVybiBOVUxMOworCW1lbXNldChidWZmZXIsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9xY293Ml9oZHIpKTsKKworCWlmIChleHQyZnNfbGxzZWVrKGZkLCAwLCBTRUVLX1NFVCA8IDApKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYnVmZmVyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJc2l6ZSA9IHJlYWQoZmQsIGJ1ZmZlciwgc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2hkcikpOworCWlmIChzaXplICE9IHNpemVvZihzdHJ1Y3QgZXh0Ml9xY293Ml9oZHIpKSB7CisJCWV4dDJmc19mcmVlX21lbSgmYnVmZmVyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJaGRyID0gKHN0cnVjdCBleHQyX3Fjb3cyX2hkciAqKShidWZmZXIpOworCisJaWYgKChleHQyZnNfYmUzMl90b19jcHUoaGRyLT5tYWdpYykgIT0gUUNPV19NQUdJQykgfHwKKwkgICAgKGV4dDJmc19iZTMyX3RvX2NwdShoZHItPnZlcnNpb24pICE9IDIpKSB7CisJCWV4dDJmc19mcmVlX21lbSgmaGRyKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIGhkcjsKK30KKworc3RhdGljIGludCBxY293Ml9yZWFkX2wxX3RhYmxlKHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWcpCit7CisJaW50IGZkID0gaW1nLT5mZDsKKwlzaXplX3Qgc2l6ZSwgbDFfc2l6ZSA9IGltZy0+bDFfc2l6ZSAqIHNpemVvZihibGs2NF90KTsKKwlibGs2NF90ICp0YWJsZTsKKwllcnJjb2RlX3QgcmV0OworCisJcmV0ID0gZXh0MmZzX2dldF9tZW16ZXJvKGwxX3NpemUsICZ0YWJsZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChleHQyZnNfbGxzZWVrKGZkLCBpbWctPmwxX29mZnNldCwgU0VFS19TRVQpIDwgMCkgeworCQlleHQyZnNfZnJlZV9tZW0oJnRhYmxlKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKworCXNpemUgPSByZWFkKGZkLCB0YWJsZSwgbDFfc2l6ZSk7CisJaWYgKHNpemUgIT0gbDFfc2l6ZSkgeworCQlleHQyZnNfZnJlZV9tZW0oJnRhYmxlKTsKKwkJcmV0dXJuIGVycm5vOworCX0KKworCWltZy0+bDFfdGFibGUgPSB0YWJsZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHFjb3cyX3JlYWRfbDJfdGFibGUoc3RydWN0IGV4dDJfcWNvdzJfaW1hZ2UgKmltZywKKwkJCSAgICAgICBleHQyX29mZjY0X3Qgb2Zmc2V0LCBibGs2NF90ICoqbDJfdGFibGUpCit7CisJaW50IGZkID0gaW1nLT5mZDsKKwlzaXplX3Qgc2l6ZTsKKworCWFzc2VydCgqbDJfdGFibGUpOworCisJaWYgKGV4dDJmc19sbHNlZWsoZmQsIG9mZnNldCwgU0VFS19TRVQpIDwgMCkKKwkJcmV0dXJuIGVycm5vOworCisJc2l6ZSA9IHJlYWQoZmQsICpsMl90YWJsZSwgaW1nLT5jbHVzdGVyX3NpemUpOworCWlmIChzaXplICE9IGltZy0+Y2x1c3Rlcl9zaXplKQorCQlyZXR1cm4gZXJybm87CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBxY293Ml9jb3B5X2RhdGEoaW50IGZkaW4sIGludCBmZG91dCwgZXh0Ml9vZmY2NF90IG9mZl9pbiwKKwkJCSAgIGV4dDJfb2ZmNjRfdCBvZmZfb3V0LCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzaXplX3Qgc2l6ZTsKKworCWFzc2VydChidWYpOworCisJaWYgKGV4dDJmc19sbHNlZWsoZmRvdXQsIG9mZl9vdXQsIFNFRUtfU0VUKSA8IDApCisJCXJldHVybiBlcnJubzsKKworCWlmIChleHQyZnNfbGxzZWVrKGZkaW4sIG9mZl9pbiwgU0VFS19TRVQpIDwgMCkKKwkJcmV0dXJuIGVycm5vOworCisJc2l6ZSA9IHJlYWQoZmRpbiwgYnVmLCBjb3VudCk7CisJaWYgKHNpemUgIT0gY291bnQpCisJCXJldHVybiBlcnJubzsKKworCXNpemUgPSB3cml0ZShmZG91dCwgYnVmLCBjb3VudCk7CisJaWYgKHNpemUgIT0gY291bnQpCisJCXJldHVybiBlcnJubzsKKworCXJldHVybiAwOworfQorCisKK2ludCBxY293Ml93cml0ZV9yYXdfaW1hZ2UoaW50IHFjb3cyX2ZkLCBpbnQgcmF3X2ZkLAorCQkJICAgICAgc3RydWN0IGV4dDJfcWNvdzJfaGRyICpoZHIpCit7CisJc3RydWN0IGV4dDJfcWNvdzJfaW1hZ2UgaW1nOworCWVycmNvZGVfdCByZXQgPSAwOworCXVuc2lnbmVkIGludCBsMV9pbmRleCwgbDJfaW5kZXg7CisJZXh0Ml9vZmY2NF90IG9mZnNldDsKKwlibGs2NF90ICpsMV90YWJsZSwgKmwyX3RhYmxlID0gTlVMTDsKKwl2b2lkICpjb3B5X2J1ZiA9IE5VTEw7CisJc2l6ZV90IHNpemU7CisKKwlpZiAoaGRyLT5jcnlwdF9tZXRob2QpCisJCXJldHVybiAtUUNPV19FTkNSWVBURUQ7CisKKwlpbWcuZmQgPSBxY293Ml9mZDsKKwlpbWcuaGRyID0gaGRyOworCWltZy5sMl9jYWNoZSA9IE5VTEw7CisJaW1nLmwxX3RhYmxlID0gTlVMTDsKKwlpbWcuY2x1c3Rlcl9iaXRzID0gZXh0MmZzX2JlMzJfdG9fY3B1KGhkci0+Y2x1c3Rlcl9iaXRzKTsKKwlpbWcuY2x1c3Rlcl9zaXplID0gMSA8PCBpbWcuY2x1c3Rlcl9iaXRzOworCWltZy5sMV9zaXplID0gZXh0MmZzX2JlMzJfdG9fY3B1KGhkci0+bDFfc2l6ZSk7CisJaW1nLmwxX29mZnNldCA9IGV4dDJmc19iZTY0X3RvX2NwdShoZHItPmwxX3RhYmxlX29mZnNldCk7CisJaW1nLmwyX3NpemUgPSAxIDw8IChpbWcuY2x1c3Rlcl9iaXRzIC0gMyk7CisJaW1nLmltYWdlX3NpemUgPSBleHQyZnNfYmU2NF90b19jcHUoaGRyLT5zaXplKTsKKworCisJcmV0ID0gZXh0MmZzX2dldF9tZW16ZXJvKGltZy5jbHVzdGVyX3NpemUsICZsMl90YWJsZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlyZXQgPSBleHQyZnNfZ2V0X21lbXplcm8oMSA8PCBpbWcuY2x1c3Rlcl9iaXRzLCAmY29weV9idWYpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJaWYgKGV4dDJmc19sbHNlZWsocmF3X2ZkLCAwLCBTRUVLX1NFVCkgPCAwKSB7CisJCXJldCA9IGVycm5vOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSBxY293Ml9yZWFkX2wxX3RhYmxlKCZpbWcpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJbDFfdGFibGUgPSBpbWcubDFfdGFibGU7CisJLyogV2FsayB0aHJvdWdoIGwxIHRhYmxlICovCisJZm9yIChsMV9pbmRleCA9IDA7IGwxX2luZGV4IDwgaW1nLmwxX3NpemU7IGwxX2luZGV4KyspIHsKKwkJZXh0Ml9vZmY2NF90IG9mZl9vdXQ7CisKKwkJb2Zmc2V0ID0gZXh0MmZzX2JlNjRfdG9fY3B1KGwxX3RhYmxlW2wxX2luZGV4XSkgJgorCQkJIH5RQ09XX09GTEFHX0NPUElFRDsKKworCQlpZiAoKG9mZnNldCA+IGltZy5pbWFnZV9zaXplKSB8fAorCQkgICAgKG9mZnNldCA8PSAwKSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChvZmZzZXQgJiBRQ09XX09GTEFHX0NPTVBSRVNTRUQpIHsKKwkJCXJldCA9IC1RQ09XX0NPTVBSRVNTRUQ7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCXJldCA9IHFjb3cyX3JlYWRfbDJfdGFibGUoJmltZywgb2Zmc2V0LCAmbDJfdGFibGUpOworCQlpZiAocmV0KQorCQkJYnJlYWs7CisKKwkJLyogV2FsayB0aHJvdWdoIGwyIHRhYmxlIGFuZCBjb3B5IGRhdGEgYmxvY2tzIGludG8gcmF3IGltYWdlICovCisJCWZvciAobDJfaW5kZXggPSAwOyBsMl9pbmRleCA8IGltZy5sMl9zaXplOyBsMl9pbmRleCsrKSB7CisJCQlvZmZzZXQgPSBleHQyZnNfYmU2NF90b19jcHUobDJfdGFibGVbbDJfaW5kZXhdKSAmCisJCQkJIH5RQ09XX09GTEFHX0NPUElFRDsKKworCQkJaWYgKG9mZnNldCA9PSAwKQorCQkJCWNvbnRpbnVlOworCisJCQlvZmZfb3V0ID0gKGwxX2luZGV4ICogaW1nLmwyX3NpemUpICsKKwkJCQkgIGwyX2luZGV4OworCQkJb2ZmX291dCA8PD0gaW1nLmNsdXN0ZXJfYml0czsKKwkJCXJldCA9IHFjb3cyX2NvcHlfZGF0YShxY293Ml9mZCwgcmF3X2ZkLCBvZmZzZXQsCisJCQkJCW9mZl9vdXQsIGNvcHlfYnVmLCBpbWcuY2x1c3Rlcl9zaXplKTsKKwkJCWlmIChyZXQpCisJCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwkvKiBSZXNpemUgdGhlIG91dHB1dCBpbWFnZSB0byB0aGUgZmlsZXN5c3RlbSBzaXplICovCisJaWYgKGV4dDJmc19sbHNlZWsocmF3X2ZkLCBpbWcuaW1hZ2Vfc2l6ZSAtIDEsIFNFRUtfU0VUKSA8IDApIHsKKwkJcmV0ID0gZXJybm87CisJCWdvdG8gb3V0OworCX0KKworCSgoY2hhciAqKWNvcHlfYnVmKVswXSA9IDA7CisJc2l6ZSA9IHdyaXRlKHJhd19mZCwgY29weV9idWYsIDEpOworCWlmIChzaXplICE9IDEpIHsKKwkJcmV0ID0gZXJybm87CisJCWdvdG8gb3V0OworCX0KKworb3V0OgorCWlmIChjb3B5X2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjb3B5X2J1Zik7CisJaWYgKGltZy5sMV90YWJsZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpbWcubDFfdGFibGUpOworCWlmIChsMl90YWJsZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZsMl90YWJsZSk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3Fjb3cyLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9xY293Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTBlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9xY293Mi5oCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogcWNvdzIuaCAtLS0gc3RydWN0dXJlcyBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgcWNvdzIuYyB0byBnZW5lcmF0ZQorICogcWNvdzIgZm9ybWF0dGVkIGRpc2sgaW1hZ2VzLiAgVGhpcyBmb3JtYXQgaXMgdXNlZCBvcmlnaW5hbGx5IGJ5IFFFTVUKKyAqIGZvciB2aXJ0dWFsIG1hY2hpbmVzLCBhbmQgc3RvcmVzIHRoZSBmaWxlc3lzdGVtIGRhdGEgb24gZGlzayBpbiBhCisgKiBwYWNrZWQgZm9ybWF0IHRvIGF2b2lkIGNyZWF0aW5nIHNwYXJzZSBpbWFnZSBmaWxlcyB0aGF0IG5lZWQgbG90cyBvZgorICogc2Vla2luZyB0byByZWFkIGFuZCB3cml0ZS4KKyAqCisgKiBUaGUgcWNvdzIgZm9ybWF0IHN1cHBvcnRzIHpsaWIgY29tcHJlc3Npb24sIGJ1dCB0aGF0IGlzIG5vdCB5ZXQKKyAqIGltcGxlbWVudGVkLgorICoKKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGRpcmVjdGx5IG1vdW50IGEgcWNvdzIgaW1hZ2UgdXNpbmcgcWVtdS1uYmQ6CisgKgorICogW3Jvb3RdIyBtb2Rwcm9iZSBuYmQgbWF4X3BhcnQ9NjMKKyAqIFtyb290XSMgcWVtdS1uYmQgLWMgL2Rldi9uYmQwIGltYWdlLmltZworICogW3Jvb3RdIyBtb3VudCAvZGV2L25iZDBwMSAvbW50L3FlbXUKKyAqCisgKiBGb3JtYXQgZGV0YWlscyBhdCBodHRwOi8vcGVvcGxlLmdub21lLm9yZy9+bWFya21jL3Fjb3ctaW1hZ2UtZm9ybWF0Lmh0bWwKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmVkIEhhdCwgSW5jLiwgTHVrYXMgQ3plcm5lciA8bGN6ZXJuZXJAcmVkaGF0LmNvbT4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qIE51bWJlciBvZiBsMiB0YWJsZXMgaW4gbWVtb3J5IGJlZm9yZSB3cml0ZWJhY2sgKi8KKyNkZWZpbmUgTDJfQ0FDSEVfUFJFQUxMT0MJNTEyCisKKworI2RlZmluZSBRQ09XX01BR0lDICgoJ1EnIDw8IDI0KSB8ICgnRicgPDwgMTYpIHwgKCdJJyA8PCA4KSB8IDB4ZmIpCisjZGVmaW5lIFFDT1dfVkVSU0lPTgkJMgorI2RlZmluZSBRQ09XX09GTEFHX0NPUElFRAkoMUxMIDw8IDYzKQorI2RlZmluZSBRQ09XX09GTEFHX0NPTVBSRVNTRUQJKDFMTCA8PCA2MikKKworI2RlZmluZSBRQ09XX0NPTVBSRVNTRUQJCTEKKyNkZWZpbmUgUUNPV19FTkNSWVBURUQJCTIKKworc3RydWN0IGV4dDJfcWNvdzJfaGRyIHsKKwlfX3UzMgltYWdpYzsKKwlfX3UzMgl2ZXJzaW9uOworCisJX191NjQJYmFja2luZ19maWxlX29mZnNldDsKKwlfX3UzMgliYWNraW5nX2ZpbGVfc2l6ZTsKKworCV9fdTMyCWNsdXN0ZXJfYml0czsKKwlfX3U2NAlzaXplOworCV9fdTMyCWNyeXB0X21ldGhvZDsKKworCV9fdTMyCWwxX3NpemU7CisJX191NjQJbDFfdGFibGVfb2Zmc2V0OworCisJX191NjQJcmVmY291bnRfdGFibGVfb2Zmc2V0OworCV9fdTMyCXJlZmNvdW50X3RhYmxlX2NsdXN0ZXJzOworCisJX191MzIJbmJfc25hcHNob3RzOworCV9fdTY0CXNuYXBzaG90c19vZmZzZXQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlIEwyX0NBQ0hFX0hFQUQ7CisKK3N0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlIHsKKwlfX3UzMgkJbDFfaW5kZXg7CisJX191NjQJCW9mZnNldDsKKwlfX3U2NAkJKmRhdGE7CisJTDJfQ0FDSEVfSEVBRAkqbmV4dDsKK307CisKK3N0cnVjdCBleHQyX3Fjb3cyX2wyX2NhY2hlIHsKKwlMMl9DQUNIRV9IRUFECSp1c2VkX2hlYWQ7CisJTDJfQ0FDSEVfSEVBRAkqdXNlZF90YWlsOworCUwyX0NBQ0hFX0hFQUQJKmZyZWVfaGVhZDsKKwlfX3UzMgkJZnJlZTsKKwlfX3UzMgkJY291bnQ7CisJX191NjQJCW5leHRfb2Zmc2V0OworfTsKKworc3RydWN0IGV4dDJfcWNvdzJfcmVmY291bnQgeworCV9fdTY0CSpyZWZjb3VudF90YWJsZTsKKwlfX3U2NAlyZWZjb3VudF90YWJsZV9vZmZzZXQ7CisJX191NjQJcmVmY291bnRfYmxvY2tfb2Zmc2V0OworCisJX191MzIJcmVmY291bnRfdGFibGVfY2x1c3RlcnM7CisJX191MzIJcmVmY291bnRfdGFibGVfaW5kZXg7CisJX191MzIJcmVmY291bnRfYmxvY2tfaW5kZXg7CisKKwlfX3UxNgkqcmVmY291bnRfYmxvY2s7Cit9OworCitzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSB7CisJaW50CWZkOworCXN0cnVjdAlleHQyX3Fjb3cyX2hkcgkJKmhkcjsKKwlzdHJ1Y3QJZXh0Ml9xY293Ml9sMl9jYWNoZQkqbDJfY2FjaGU7CisJc3RydWN0CWV4dDJfcWNvdzJfcmVmY291bnQJcmVmY291bnQ7CisJX191MzIJY2x1c3Rlcl9zaXplOworCV9fdTMyCWNsdXN0ZXJfYml0czsKKwlfX3UzMglsMV9zaXplOworCV9fdTMyCWwyX3NpemU7CisKKwlfX3U2NAkqbDFfdGFibGU7CisJX191NjQJbDJfb2Zmc2V0OworCV9fdTY0CWwxX29mZnNldDsKKwlfX3U2NAlpbWFnZV9zaXplOworfTsKKworLyogRnVuY3Rpb24gcHJvdG90eXBlcyAqLworCisvKiBxY293Mi5jICovCisKKy8qIEZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBxY293MiBpbWFnZSBpbnRvIHJhdyBpbWFnZSAqLworc3RydWN0IGV4dDJfcWNvdzJfaGRyICpxY293Ml9yZWFkX2hlYWRlcihpbnQpOworaW50IHFjb3cyX3dyaXRlX3Jhd19pbWFnZShpbnQsIGludCwgc3RydWN0IGV4dDJfcWNvdzJfaGRyICopOworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yYnRyZWUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3JidHJlZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MzkzMDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yYnRyZWUuYwpAQCAtMCwwICsxLDQ1MSBAQAorLyoKKyAgUmVkIEJsYWNrIFRyZWVzCisgIChDKSAxOTk5ICBBbmRyZWEgQXJjYW5nZWxpIDxhbmRyZWFAc3VzZS5kZT4KKyAgKEMpIDIwMDIgIERhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFkZWFkLm9yZz4KKworICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisgIGxpbnV4L2xpYi9yYnRyZWUuYworKi8KKworI2luY2x1ZGUgInJidHJlZS5oIgorCitzdGF0aWMgdm9pZCBfX3JiX3JvdGF0ZV9sZWZ0KHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqcmlnaHQgPSBub2RlLT5yYl9yaWdodDsKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKTsKKworCWlmICgobm9kZS0+cmJfcmlnaHQgPSByaWdodC0+cmJfbGVmdCkpCisJCWV4dDJmc19yYl9zZXRfcGFyZW50KHJpZ2h0LT5yYl9sZWZ0LCBub2RlKTsKKwlyaWdodC0+cmJfbGVmdCA9IG5vZGU7CisKKwlleHQyZnNfcmJfc2V0X3BhcmVudChyaWdodCwgcGFyZW50KTsKKworCWlmIChwYXJlbnQpCisJeworCQlpZiAobm9kZSA9PSBwYXJlbnQtPnJiX2xlZnQpCisJCQlwYXJlbnQtPnJiX2xlZnQgPSByaWdodDsKKwkJZWxzZQorCQkJcGFyZW50LT5yYl9yaWdodCA9IHJpZ2h0OworCX0KKwllbHNlCisJCXJvb3QtPnJiX25vZGUgPSByaWdodDsKKwlleHQyZnNfcmJfc2V0X3BhcmVudChub2RlLCByaWdodCk7Cit9CisKK3N0YXRpYyB2b2lkIF9fcmJfcm90YXRlX3JpZ2h0KHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqbGVmdCA9IG5vZGUtPnJiX2xlZnQ7CisJc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQobm9kZSk7CisKKwlpZiAoKG5vZGUtPnJiX2xlZnQgPSBsZWZ0LT5yYl9yaWdodCkpCisJCWV4dDJmc19yYl9zZXRfcGFyZW50KGxlZnQtPnJiX3JpZ2h0LCBub2RlKTsKKwlsZWZ0LT5yYl9yaWdodCA9IG5vZGU7CisKKwlleHQyZnNfcmJfc2V0X3BhcmVudChsZWZ0LCBwYXJlbnQpOworCisJaWYgKHBhcmVudCkKKwl7CisJCWlmIChub2RlID09IHBhcmVudC0+cmJfcmlnaHQpCisJCQlwYXJlbnQtPnJiX3JpZ2h0ID0gbGVmdDsKKwkJZWxzZQorCQkJcGFyZW50LT5yYl9sZWZ0ID0gbGVmdDsKKwl9CisJZWxzZQorCQlyb290LT5yYl9ub2RlID0gbGVmdDsKKwlleHQyZnNfcmJfc2V0X3BhcmVudChub2RlLCBsZWZ0KTsKK30KKwordm9pZCBleHQyZnNfcmJfaW5zZXJ0X2NvbG9yKHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50LCAqZ3BhcmVudDsKKworCXdoaWxlICgocGFyZW50ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKSkgJiYgZXh0MmZzX3JiX2lzX3JlZChwYXJlbnQpKQorCXsKKwkJZ3BhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQocGFyZW50KTsKKworCQlpZiAocGFyZW50ID09IGdwYXJlbnQtPnJiX2xlZnQpCisJCXsKKwkJCXsKKwkJCQlyZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdW5jbGUgPSBncGFyZW50LT5yYl9yaWdodDsKKwkJCQlpZiAodW5jbGUgJiYgZXh0MmZzX3JiX2lzX3JlZCh1bmNsZSkpCisJCQkJeworCQkJCQlleHQyZnNfcmJfc2V0X2JsYWNrKHVuY2xlKTsKKwkJCQkJZXh0MmZzX3JiX3NldF9ibGFjayhwYXJlbnQpOworCQkJCQlleHQyZnNfcmJfc2V0X3JlZChncGFyZW50KTsKKwkJCQkJbm9kZSA9IGdwYXJlbnQ7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCX0KKworCQkJaWYgKHBhcmVudC0+cmJfcmlnaHQgPT0gbm9kZSkKKwkJCXsKKwkJCQlyZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdG1wOworCQkJCV9fcmJfcm90YXRlX2xlZnQocGFyZW50LCByb290KTsKKwkJCQl0bXAgPSBwYXJlbnQ7CisJCQkJcGFyZW50ID0gbm9kZTsKKwkJCQlub2RlID0gdG1wOworCQkJfQorCisJCQlleHQyZnNfcmJfc2V0X2JsYWNrKHBhcmVudCk7CisJCQlleHQyZnNfcmJfc2V0X3JlZChncGFyZW50KTsKKwkJCV9fcmJfcm90YXRlX3JpZ2h0KGdwYXJlbnQsIHJvb3QpOworCQl9IGVsc2UgeworCQkJeworCQkJCXJlZ2lzdGVyIHN0cnVjdCByYl9ub2RlICp1bmNsZSA9IGdwYXJlbnQtPnJiX2xlZnQ7CisJCQkJaWYgKHVuY2xlICYmIGV4dDJmc19yYl9pc19yZWQodW5jbGUpKQorCQkJCXsKKwkJCQkJZXh0MmZzX3JiX3NldF9ibGFjayh1bmNsZSk7CisJCQkJCWV4dDJmc19yYl9zZXRfYmxhY2socGFyZW50KTsKKwkJCQkJZXh0MmZzX3JiX3NldF9yZWQoZ3BhcmVudCk7CisJCQkJCW5vZGUgPSBncGFyZW50OworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CisKKwkJCWlmIChwYXJlbnQtPnJiX2xlZnQgPT0gbm9kZSkKKwkJCXsKKwkJCQlyZWdpc3RlciBzdHJ1Y3QgcmJfbm9kZSAqdG1wOworCQkJCV9fcmJfcm90YXRlX3JpZ2h0KHBhcmVudCwgcm9vdCk7CisJCQkJdG1wID0gcGFyZW50OworCQkJCXBhcmVudCA9IG5vZGU7CisJCQkJbm9kZSA9IHRtcDsKKwkJCX0KKworCQkJZXh0MmZzX3JiX3NldF9ibGFjayhwYXJlbnQpOworCQkJZXh0MmZzX3JiX3NldF9yZWQoZ3BhcmVudCk7CisJCQlfX3JiX3JvdGF0ZV9sZWZ0KGdwYXJlbnQsIHJvb3QpOworCQl9CisJfQorCisJZXh0MmZzX3JiX3NldF9ibGFjayhyb290LT5yYl9ub2RlKTsKK30KKworc3RhdGljIHZvaWQgX19yYl9lcmFzZV9jb2xvcihzdHJ1Y3QgcmJfbm9kZSAqbm9kZSwgc3RydWN0IHJiX25vZGUgKnBhcmVudCwKKwkJCSAgICAgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCit7CisJc3RydWN0IHJiX25vZGUgKm90aGVyOworCisJd2hpbGUgKCghbm9kZSB8fCBleHQyZnNfcmJfaXNfYmxhY2sobm9kZSkpICYmIG5vZGUgIT0gcm9vdC0+cmJfbm9kZSkKKwl7CisJCWlmIChwYXJlbnQtPnJiX2xlZnQgPT0gbm9kZSkKKwkJeworCQkJb3RoZXIgPSBwYXJlbnQtPnJiX3JpZ2h0OworCQkJaWYgKGV4dDJmc19yYl9pc19yZWQob3RoZXIpKQorCQkJeworCQkJCWV4dDJmc19yYl9zZXRfYmxhY2sob3RoZXIpOworCQkJCWV4dDJmc19yYl9zZXRfcmVkKHBhcmVudCk7CisJCQkJX19yYl9yb3RhdGVfbGVmdChwYXJlbnQsIHJvb3QpOworCQkJCW90aGVyID0gcGFyZW50LT5yYl9yaWdodDsKKwkJCX0KKwkJCWlmICgoIW90aGVyLT5yYl9sZWZ0IHx8IGV4dDJmc19yYl9pc19ibGFjayhvdGhlci0+cmJfbGVmdCkpICYmCisJCQkgICAgKCFvdGhlci0+cmJfcmlnaHQgfHwgZXh0MmZzX3JiX2lzX2JsYWNrKG90aGVyLT5yYl9yaWdodCkpKQorCQkJeworCQkJCWV4dDJmc19yYl9zZXRfcmVkKG90aGVyKTsKKwkJCQlub2RlID0gcGFyZW50OworCQkJCXBhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQobm9kZSk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaWYgKCFvdGhlci0+cmJfcmlnaHQgfHwgZXh0MmZzX3JiX2lzX2JsYWNrKG90aGVyLT5yYl9yaWdodCkpCisJCQkJeworCQkJCQlleHQyZnNfcmJfc2V0X2JsYWNrKG90aGVyLT5yYl9sZWZ0KTsKKwkJCQkJZXh0MmZzX3JiX3NldF9yZWQob3RoZXIpOworCQkJCQlfX3JiX3JvdGF0ZV9yaWdodChvdGhlciwgcm9vdCk7CisJCQkJCW90aGVyID0gcGFyZW50LT5yYl9yaWdodDsKKwkJCQl9CisJCQkJZXh0MmZzX3JiX3NldF9jb2xvcihvdGhlciwgZXh0MmZzX3JiX2NvbG9yKHBhcmVudCkpOworCQkJCWV4dDJmc19yYl9zZXRfYmxhY2socGFyZW50KTsKKwkJCQlleHQyZnNfcmJfc2V0X2JsYWNrKG90aGVyLT5yYl9yaWdodCk7CisJCQkJX19yYl9yb3RhdGVfbGVmdChwYXJlbnQsIHJvb3QpOworCQkJCW5vZGUgPSByb290LT5yYl9ub2RlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJb3RoZXIgPSBwYXJlbnQtPnJiX2xlZnQ7CisJCQlpZiAoZXh0MmZzX3JiX2lzX3JlZChvdGhlcikpCisJCQl7CisJCQkJZXh0MmZzX3JiX3NldF9ibGFjayhvdGhlcik7CisJCQkJZXh0MmZzX3JiX3NldF9yZWQocGFyZW50KTsKKwkJCQlfX3JiX3JvdGF0ZV9yaWdodChwYXJlbnQsIHJvb3QpOworCQkJCW90aGVyID0gcGFyZW50LT5yYl9sZWZ0OworCQkJfQorCQkJaWYgKCghb3RoZXItPnJiX2xlZnQgfHwgZXh0MmZzX3JiX2lzX2JsYWNrKG90aGVyLT5yYl9sZWZ0KSkgJiYKKwkJCSAgICAoIW90aGVyLT5yYl9yaWdodCB8fCBleHQyZnNfcmJfaXNfYmxhY2sob3RoZXItPnJiX3JpZ2h0KSkpCisJCQl7CisJCQkJZXh0MmZzX3JiX3NldF9yZWQob3RoZXIpOworCQkJCW5vZGUgPSBwYXJlbnQ7CisJCQkJcGFyZW50ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoIW90aGVyLT5yYl9sZWZ0IHx8IGV4dDJmc19yYl9pc19ibGFjayhvdGhlci0+cmJfbGVmdCkpCisJCQkJeworCQkJCQlleHQyZnNfcmJfc2V0X2JsYWNrKG90aGVyLT5yYl9yaWdodCk7CisJCQkJCWV4dDJmc19yYl9zZXRfcmVkKG90aGVyKTsKKwkJCQkJX19yYl9yb3RhdGVfbGVmdChvdGhlciwgcm9vdCk7CisJCQkJCW90aGVyID0gcGFyZW50LT5yYl9sZWZ0OworCQkJCX0KKwkJCQlleHQyZnNfcmJfc2V0X2NvbG9yKG90aGVyLCBleHQyZnNfcmJfY29sb3IocGFyZW50KSk7CisJCQkJZXh0MmZzX3JiX3NldF9ibGFjayhwYXJlbnQpOworCQkJCWV4dDJmc19yYl9zZXRfYmxhY2sob3RoZXItPnJiX2xlZnQpOworCQkJCV9fcmJfcm90YXRlX3JpZ2h0KHBhcmVudCwgcm9vdCk7CisJCQkJbm9kZSA9IHJvb3QtPnJiX25vZGU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJaWYgKG5vZGUpCisJCWV4dDJmc19yYl9zZXRfYmxhY2sobm9kZSk7Cit9CisKK3ZvaWQgZXh0MmZzX3JiX2VyYXNlKHN0cnVjdCByYl9ub2RlICpub2RlLCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqY2hpbGQsICpwYXJlbnQ7CisJaW50IGNvbG9yOworCisJaWYgKCFub2RlLT5yYl9sZWZ0KQorCQljaGlsZCA9IG5vZGUtPnJiX3JpZ2h0OworCWVsc2UgaWYgKCFub2RlLT5yYl9yaWdodCkKKwkJY2hpbGQgPSBub2RlLT5yYl9sZWZ0OworCWVsc2UKKwl7CisJCXN0cnVjdCByYl9ub2RlICpvbGQgPSBub2RlLCAqbGVmdDsKKworCQlub2RlID0gbm9kZS0+cmJfcmlnaHQ7CisJCXdoaWxlICgobGVmdCA9IG5vZGUtPnJiX2xlZnQpICE9IE5VTEwpCisJCQlub2RlID0gbGVmdDsKKworCQlpZiAoZXh0MmZzX3JiX3BhcmVudChvbGQpKSB7CisJCQlpZiAoZXh0MmZzX3JiX3BhcmVudChvbGQpLT5yYl9sZWZ0ID09IG9sZCkKKwkJCQlleHQyZnNfcmJfcGFyZW50KG9sZCktPnJiX2xlZnQgPSBub2RlOworCQkJZWxzZQorCQkJCWV4dDJmc19yYl9wYXJlbnQob2xkKS0+cmJfcmlnaHQgPSBub2RlOworCQl9IGVsc2UKKwkJCXJvb3QtPnJiX25vZGUgPSBub2RlOworCisJCWNoaWxkID0gbm9kZS0+cmJfcmlnaHQ7CisJCXBhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQobm9kZSk7CisJCWNvbG9yID0gZXh0MmZzX3JiX2NvbG9yKG5vZGUpOworCisJCWlmIChwYXJlbnQgPT0gb2xkKSB7CisJCQlwYXJlbnQgPSBub2RlOworCQl9IGVsc2UgeworCQkJaWYgKGNoaWxkKQorCQkJCWV4dDJmc19yYl9zZXRfcGFyZW50KGNoaWxkLCBwYXJlbnQpOworCQkJcGFyZW50LT5yYl9sZWZ0ID0gY2hpbGQ7CisKKwkJCW5vZGUtPnJiX3JpZ2h0ID0gb2xkLT5yYl9yaWdodDsKKwkJCWV4dDJmc19yYl9zZXRfcGFyZW50KG9sZC0+cmJfcmlnaHQsIG5vZGUpOworCQl9CisKKwkJbm9kZS0+cmJfcGFyZW50X2NvbG9yID0gb2xkLT5yYl9wYXJlbnRfY29sb3I7CisJCW5vZGUtPnJiX2xlZnQgPSBvbGQtPnJiX2xlZnQ7CisJCWV4dDJmc19yYl9zZXRfcGFyZW50KG9sZC0+cmJfbGVmdCwgbm9kZSk7CisKKwkJZ290byBjb2xvcjsKKwl9CisKKwlwYXJlbnQgPSBleHQyZnNfcmJfcGFyZW50KG5vZGUpOworCWNvbG9yID0gZXh0MmZzX3JiX2NvbG9yKG5vZGUpOworCisJaWYgKGNoaWxkKQorCQlleHQyZnNfcmJfc2V0X3BhcmVudChjaGlsZCwgcGFyZW50KTsKKwlpZiAocGFyZW50KQorCXsKKwkJaWYgKHBhcmVudC0+cmJfbGVmdCA9PSBub2RlKQorCQkJcGFyZW50LT5yYl9sZWZ0ID0gY2hpbGQ7CisJCWVsc2UKKwkJCXBhcmVudC0+cmJfcmlnaHQgPSBjaGlsZDsKKwl9CisJZWxzZQorCQlyb290LT5yYl9ub2RlID0gY2hpbGQ7CisKKyBjb2xvcjoKKwlpZiAoY29sb3IgPT0gUkJfQkxBQ0spCisJCV9fcmJfZXJhc2VfY29sb3IoY2hpbGQsIHBhcmVudCwgcm9vdCk7Cit9CisKK3N0YXRpYyB2b2lkIGV4dDJmc19yYl9hdWdtZW50X3BhdGgoc3RydWN0IHJiX25vZGUgKm5vZGUsIHJiX2F1Z21lbnRfZiBmdW5jLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCByYl9ub2RlICpwYXJlbnQ7CisKK3VwOgorCWZ1bmMobm9kZSwgZGF0YSk7CisJcGFyZW50ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKTsKKwlpZiAoIXBhcmVudCkKKwkJcmV0dXJuOworCisJaWYgKG5vZGUgPT0gcGFyZW50LT5yYl9sZWZ0ICYmIHBhcmVudC0+cmJfcmlnaHQpCisJCWZ1bmMocGFyZW50LT5yYl9yaWdodCwgZGF0YSk7CisJZWxzZSBpZiAocGFyZW50LT5yYl9sZWZ0KQorCQlmdW5jKHBhcmVudC0+cmJfbGVmdCwgZGF0YSk7CisKKwlub2RlID0gcGFyZW50OworCWdvdG8gdXA7Cit9CisKKy8qCisgKiBhZnRlciBpbnNlcnRpbmcgQG5vZGUgaW50byB0aGUgdHJlZSwgdXBkYXRlIHRoZSB0cmVlIHRvIGFjY291bnQgZm9yCisgKiBib3RoIHRoZSBuZXcgZW50cnkgYW5kIGFueSBkYW1hZ2UgZG9uZSBieSByZWJhbGFuY2UKKyAqLwordm9pZCBleHQyZnNfcmJfYXVnbWVudF9pbnNlcnQoc3RydWN0IHJiX25vZGUgKm5vZGUsIHJiX2F1Z21lbnRfZiBmdW5jLCB2b2lkICpkYXRhKQoreworCWlmIChub2RlLT5yYl9sZWZ0KQorCQlub2RlID0gbm9kZS0+cmJfbGVmdDsKKwllbHNlIGlmIChub2RlLT5yYl9yaWdodCkKKwkJbm9kZSA9IG5vZGUtPnJiX3JpZ2h0OworCisJZXh0MmZzX3JiX2F1Z21lbnRfcGF0aChub2RlLCBmdW5jLCBkYXRhKTsKK30KKworLyoKKyAqIGJlZm9yZSByZW1vdmluZyB0aGUgbm9kZSwgZmluZCB0aGUgZGVlcGVzdCBub2RlIG9uIHRoZSByZWJhbGFuY2UgcGF0aAorICogdGhhdCB3aWxsIHN0aWxsIGJlIHRoZXJlIGFmdGVyIEBub2RlIGdldHMgcmVtb3ZlZAorICovCitzdHJ1Y3QgcmJfbm9kZSAqZXh0MmZzX3JiX2F1Z21lbnRfZXJhc2VfYmVnaW4oc3RydWN0IHJiX25vZGUgKm5vZGUpCit7CisJc3RydWN0IHJiX25vZGUgKmRlZXBlc3Q7CisKKwlpZiAoIW5vZGUtPnJiX3JpZ2h0ICYmICFub2RlLT5yYl9sZWZ0KQorCQlkZWVwZXN0ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKTsKKwllbHNlIGlmICghbm9kZS0+cmJfcmlnaHQpCisJCWRlZXBlc3QgPSBub2RlLT5yYl9sZWZ0OworCWVsc2UgaWYgKCFub2RlLT5yYl9sZWZ0KQorCQlkZWVwZXN0ID0gbm9kZS0+cmJfcmlnaHQ7CisJZWxzZSB7CisJCWRlZXBlc3QgPSBleHQyZnNfcmJfbmV4dChub2RlKTsKKwkJaWYgKGRlZXBlc3QtPnJiX3JpZ2h0KQorCQkJZGVlcGVzdCA9IGRlZXBlc3QtPnJiX3JpZ2h0OworCQllbHNlIGlmIChleHQyZnNfcmJfcGFyZW50KGRlZXBlc3QpICE9IG5vZGUpCisJCQlkZWVwZXN0ID0gZXh0MmZzX3JiX3BhcmVudChkZWVwZXN0KTsKKwl9CisKKwlyZXR1cm4gZGVlcGVzdDsKK30KKworLyoKKyAqIGFmdGVyIHJlbW92YWwsIHVwZGF0ZSB0aGUgdHJlZSB0byBhY2NvdW50IGZvciB0aGUgcmVtb3ZlZCBlbnRyeQorICogYW5kIGFueSByZWJhbGFuY2UgZGFtYWdlLgorICovCit2b2lkIGV4dDJmc19yYl9hdWdtZW50X2VyYXNlX2VuZChzdHJ1Y3QgcmJfbm9kZSAqbm9kZSwgcmJfYXVnbWVudF9mIGZ1bmMsIHZvaWQgKmRhdGEpCit7CisJaWYgKG5vZGUpCisJCWV4dDJmc19yYl9hdWdtZW50X3BhdGgobm9kZSwgZnVuYywgZGF0YSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGZpcnN0IG5vZGUgKGluIHNvcnQgb3JkZXIpIG9mIHRoZSB0cmVlLgorICovCitzdHJ1Y3QgcmJfbm9kZSAqZXh0MmZzX3JiX2ZpcnN0KGNvbnN0IHN0cnVjdCByYl9yb290ICpyb290KQoreworCXN0cnVjdCByYl9ub2RlCSpuOworCisJbiA9IHJvb3QtPnJiX25vZGU7CisJaWYgKCFuKQorCQlyZXR1cm4gTlVMTDsKKwl3aGlsZSAobi0+cmJfbGVmdCkKKwkJbiA9IG4tPnJiX2xlZnQ7CisJcmV0dXJuIG47Cit9CisKK3N0cnVjdCByYl9ub2RlICpleHQyZnNfcmJfbGFzdChjb25zdCBzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlzdHJ1Y3QgcmJfbm9kZQkqbjsKKworCW4gPSByb290LT5yYl9ub2RlOworCWlmICghbikKKwkJcmV0dXJuIE5VTEw7CisJd2hpbGUgKG4tPnJiX3JpZ2h0KQorCQluID0gbi0+cmJfcmlnaHQ7CisJcmV0dXJuIG47Cit9CisKK3N0cnVjdCByYl9ub2RlICpleHQyZnNfcmJfbmV4dChzdHJ1Y3QgcmJfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50OworCisJaWYgKGV4dDJmc19yYl9wYXJlbnQobm9kZSkgPT0gbm9kZSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBJZiB3ZSBoYXZlIGEgcmlnaHQtaGFuZCBjaGlsZCwgZ28gZG93biBhbmQgdGhlbiBsZWZ0IGFzIGZhcgorCSAgIGFzIHdlIGNhbi4gKi8KKwlpZiAobm9kZS0+cmJfcmlnaHQpIHsKKwkJbm9kZSA9IG5vZGUtPnJiX3JpZ2h0OworCQl3aGlsZSAobm9kZS0+cmJfbGVmdCkKKwkJCW5vZGU9bm9kZS0+cmJfbGVmdDsKKwkJcmV0dXJuIChzdHJ1Y3QgcmJfbm9kZSAqKW5vZGU7CisJfQorCisJLyogTm8gcmlnaHQtaGFuZCBjaGlsZHJlbi4gIEV2ZXJ5dGhpbmcgZG93biBhbmQgbGVmdCBpcworCSAgIHNtYWxsZXIgdGhhbiB1cywgc28gYW55ICduZXh0JyBub2RlIG11c3QgYmUgaW4gdGhlIGdlbmVyYWwKKwkgICBkaXJlY3Rpb24gb2Ygb3VyIHBhcmVudC4gR28gdXAgdGhlIHRyZWU7IGFueSB0aW1lIHRoZQorCSAgIGFuY2VzdG9yIGlzIGEgcmlnaHQtaGFuZCBjaGlsZCBvZiBpdHMgcGFyZW50LCBrZWVwIGdvaW5nCisJICAgdXAuIEZpcnN0IHRpbWUgaXQncyBhIGxlZnQtaGFuZCBjaGlsZCBvZiBpdHMgcGFyZW50LCBzYWlkCisJICAgcGFyZW50IGlzIG91ciAnbmV4dCcgbm9kZS4gKi8KKwl3aGlsZSAoKHBhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQobm9kZSkpICYmIG5vZGUgPT0gcGFyZW50LT5yYl9yaWdodCkKKwkJbm9kZSA9IHBhcmVudDsKKworCXJldHVybiBwYXJlbnQ7Cit9CisKK3N0cnVjdCByYl9ub2RlICpleHQyZnNfcmJfcHJldihzdHJ1Y3QgcmJfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqcGFyZW50OworCisJaWYgKGV4dDJmc19yYl9wYXJlbnQobm9kZSkgPT0gbm9kZSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBJZiB3ZSBoYXZlIGEgbGVmdC1oYW5kIGNoaWxkLCBnbyBkb3duIGFuZCB0aGVuIHJpZ2h0IGFzIGZhcgorCSAgIGFzIHdlIGNhbi4gKi8KKwlpZiAobm9kZS0+cmJfbGVmdCkgeworCQlub2RlID0gbm9kZS0+cmJfbGVmdDsKKwkJd2hpbGUgKG5vZGUtPnJiX3JpZ2h0KQorCQkJbm9kZT1ub2RlLT5yYl9yaWdodDsKKwkJcmV0dXJuIChzdHJ1Y3QgcmJfbm9kZSAqKW5vZGU7CisJfQorCisJLyogTm8gbGVmdC1oYW5kIGNoaWxkcmVuLiBHbyB1cCB0aWxsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hpY2gKKwkgICBpcyBhIHJpZ2h0LWhhbmQgY2hpbGQgb2YgaXRzIHBhcmVudCAqLworCXdoaWxlICgocGFyZW50ID0gZXh0MmZzX3JiX3BhcmVudChub2RlKSkgJiYgbm9kZSA9PSBwYXJlbnQtPnJiX2xlZnQpCisJCW5vZGUgPSBwYXJlbnQ7CisKKwlyZXR1cm4gcGFyZW50OworfQorCit2b2lkIGV4dDJmc19yYl9yZXBsYWNlX25vZGUoc3RydWN0IHJiX25vZGUgKnZpY3RpbSwgc3RydWN0IHJiX25vZGUgKm5ldywKKwkJCSAgc3RydWN0IHJiX3Jvb3QgKnJvb3QpCit7CisJc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IGV4dDJmc19yYl9wYXJlbnQodmljdGltKTsKKworCS8qIFNldCB0aGUgc3Vycm91bmRpbmcgbm9kZXMgdG8gcG9pbnQgdG8gdGhlIHJlcGxhY2VtZW50ICovCisJaWYgKHBhcmVudCkgeworCQlpZiAodmljdGltID09IHBhcmVudC0+cmJfbGVmdCkKKwkJCXBhcmVudC0+cmJfbGVmdCA9IG5ldzsKKwkJZWxzZQorCQkJcGFyZW50LT5yYl9yaWdodCA9IG5ldzsKKwl9IGVsc2UgeworCQlyb290LT5yYl9ub2RlID0gbmV3OworCX0KKwlpZiAodmljdGltLT5yYl9sZWZ0KQorCQlleHQyZnNfcmJfc2V0X3BhcmVudCh2aWN0aW0tPnJiX2xlZnQsIG5ldyk7CisJaWYgKHZpY3RpbS0+cmJfcmlnaHQpCisJCWV4dDJmc19yYl9zZXRfcGFyZW50KHZpY3RpbS0+cmJfcmlnaHQsIG5ldyk7CisKKwkvKiBDb3B5IHRoZSBwb2ludGVycy9jb2xvdXIgZnJvbSB0aGUgdmljdGltIHRvIHRoZSByZXBsYWNlbWVudCAqLworCSpuZXcgPSAqdmljdGltOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvcmJ0cmVlLmggYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yYnRyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzY3YTkwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcmJ0cmVlLmgKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgIFJlZCBCbGFjayBUcmVlcworICAoQykgMTk5OSAgQW5kcmVhIEFyY2FuZ2VsaSA8YW5kcmVhQHN1c2UuZGU+CisKKyAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworICBsaW51eC9pbmNsdWRlL2xpbnV4L3JidHJlZS5oCisKKyAgVG8gdXNlIHJidHJlZXMgeW91J2xsIGhhdmUgdG8gaW1wbGVtZW50IHlvdXIgb3duIGluc2VydCBhbmQgc2VhcmNoIGNvcmVzLgorICBUaGlzIHdpbGwgYXZvaWQgdXMgdG8gdXNlIGNhbGxiYWNrcyBhbmQgdG8gZHJvcCBkcmFtbWF0aWNhbGx5IHBlcmZvcm1hbmNlcy4KKyAgSSBrbm93IGl0J3Mgbm90IHRoZSBjbGVhbmVyIHdheSwgIGJ1dCBpbiBDIChub3QgaW4gQysrKSB0byBnZXQKKyAgcGVyZm9ybWFuY2VzIGFuZCBnZW5lcmljaXR5Li4uCisKKyAgU29tZSBleGFtcGxlIG9mIGluc2VydCBhbmQgc2VhcmNoIGZvbGxvd3MgaGVyZS4gVGhlIHNlYXJjaCBpcyBhIHBsYWluCisgIG5vcm1hbCBzZWFyY2ggb3ZlciBhbiBvcmRlcmVkIHRyZWUuIFRoZSBpbnNlcnQgaW5zdGVhZCBtdXN0IGJlIGltcGxlbWVudGVkCisgIGluIHR3byBzdGVwczogRmlyc3QsIHRoZSBjb2RlIG11c3QgaW5zZXJ0IHRoZSBlbGVtZW50IGluIG9yZGVyIGFzIGEgcmVkIGxlYWYKKyAgaW4gdGhlIHRyZWUsIGFuZCB0aGVuIHRoZSBzdXBwb3J0IGxpYnJhcnkgZnVuY3Rpb24gcmJfaW5zZXJ0X2NvbG9yKCkgbXVzdAorICBiZSBjYWxsZWQuIFN1Y2ggZnVuY3Rpb24gd2lsbCBkbyB0aGUgbm90IHRyaXZpYWwgd29yayB0byByZWJhbGFuY2UgdGhlCisgIHJidHJlZSwgaWYgbmVjZXNzYXJ5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqIHJiX3NlYXJjaF9wYWdlX2NhY2hlKHN0cnVjdCBpbm9kZSAqIGlub2RlLAorCQkJCQkJIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KQoreworCXN0cnVjdCByYl9ub2RlICogbiA9IGlub2RlLT5pX3JiX3BhZ2VfY2FjaGUucmJfbm9kZTsKKwlzdHJ1Y3QgcGFnZSAqIHBhZ2U7CisKKwl3aGlsZSAobikKKwl7CisJCXBhZ2UgPSByYl9lbnRyeShuLCBzdHJ1Y3QgcGFnZSwgcmJfcGFnZV9jYWNoZSk7CisKKwkJaWYgKG9mZnNldCA8IHBhZ2UtPm9mZnNldCkKKwkJCW4gPSBuLT5yYl9sZWZ0OworCQllbHNlIGlmIChvZmZzZXQgPiBwYWdlLT5vZmZzZXQpCisJCQluID0gbi0+cmJfcmlnaHQ7CisJCWVsc2UKKwkJCXJldHVybiBwYWdlOworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqIF9fcmJfaW5zZXJ0X3BhZ2VfY2FjaGUoc3RydWN0IGlub2RlICogaW5vZGUsCisJCQkJCQkgICB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQkJCSAgIHN0cnVjdCByYl9ub2RlICogbm9kZSkKK3sKKwlzdHJ1Y3QgcmJfbm9kZSAqKiBwID0gJmlub2RlLT5pX3JiX3BhZ2VfY2FjaGUucmJfbm9kZTsKKwlzdHJ1Y3QgcmJfbm9kZSAqIHBhcmVudCA9IE5VTEw7CisJc3RydWN0IHBhZ2UgKiBwYWdlOworCisJd2hpbGUgKCpwKQorCXsKKwkJcGFyZW50ID0gKnA7CisJCXBhZ2UgPSByYl9lbnRyeShwYXJlbnQsIHN0cnVjdCBwYWdlLCByYl9wYWdlX2NhY2hlKTsKKworCQlpZiAob2Zmc2V0IDwgcGFnZS0+b2Zmc2V0KQorCQkJcCA9ICYoKnApLT5yYl9sZWZ0OworCQllbHNlIGlmIChvZmZzZXQgPiBwYWdlLT5vZmZzZXQpCisJCQlwID0gJigqcCktPnJiX3JpZ2h0OworCQllbHNlCisJCQlyZXR1cm4gcGFnZTsKKwl9CisKKwlyYl9saW5rX25vZGUobm9kZSwgcGFyZW50LCBwKTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBwYWdlICogcmJfaW5zZXJ0X3BhZ2VfY2FjaGUoc3RydWN0IGlub2RlICogaW5vZGUsCisJCQkJCQkgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJCQkgc3RydWN0IHJiX25vZGUgKiBub2RlKQoreworCXN0cnVjdCBwYWdlICogcmV0OworCWlmICgocmV0ID0gX19yYl9pbnNlcnRfcGFnZV9jYWNoZShpbm9kZSwgb2Zmc2V0LCBub2RlKSkpCisJCWdvdG8gb3V0OworCXJiX2luc2VydF9jb2xvcihub2RlLCAmaW5vZGUtPmlfcmJfcGFnZV9jYWNoZSk7Cisgb3V0OgorCXJldHVybiByZXQ7Cit9CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworI2lmbmRlZglfTElOVVhfUkJUUkVFX0gKKyNkZWZpbmUJX0xJTlVYX1JCVFJFRV9ICisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI3VuZGVmIG9mZnNldG9mCisjaWZkZWYgX19jb21waWxlcl9vZmZzZXRvZgorI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19jb21waWxlcl9vZmZzZXRvZihUWVBFLE1FTUJFUikKKyNlbHNlCisjZGVmaW5lIG9mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQorI2VuZGlmCisKKyNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKSAoewkJCVwKKwljb25zdCBfX3R5cGVvZl9fKCAoKHR5cGUgKikwKS0+bWVtYmVyICkgKl9fbXB0ciA9IChwdHIpOwlcCisJKHR5cGUgKikoIChjaGFyICopX19tcHRyIC0gb2Zmc2V0b2YodHlwZSxtZW1iZXIpICk7fSkKKworc3RydWN0IHJiX25vZGUKK3sKKwl1aW50cHRyX3QgIHJiX3BhcmVudF9jb2xvcjsKKyNkZWZpbmUJUkJfUkVECQkwCisjZGVmaW5lCVJCX0JMQUNLCTEKKwlzdHJ1Y3QgcmJfbm9kZSAqcmJfcmlnaHQ7CisJc3RydWN0IHJiX25vZGUgKnJiX2xlZnQ7Cit9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoc2l6ZW9mKGxvbmcpKSkpOworICAgIC8qIFRoZSBhbGlnbm1lbnQgbWlnaHQgc2VlbSBwb2ludGxlc3MsIGJ1dCBhbGxlZ2VkbHkgQ1JJUyBuZWVkcyBpdCAqLworCitzdHJ1Y3QgcmJfcm9vdAoreworCXN0cnVjdCByYl9ub2RlICpyYl9ub2RlOworfTsKKworCisjZGVmaW5lIGV4dDJmc19yYl9wYXJlbnQocikgICAoKHN0cnVjdCByYl9ub2RlICopKChyKS0+cmJfcGFyZW50X2NvbG9yICYgfjMpKQorI2RlZmluZSBleHQyZnNfcmJfY29sb3IocikgICAoKHIpLT5yYl9wYXJlbnRfY29sb3IgJiAxKQorI2RlZmluZSBleHQyZnNfcmJfaXNfcmVkKHIpICAgKCFleHQyZnNfcmJfY29sb3IocikpCisjZGVmaW5lIGV4dDJmc19yYl9pc19ibGFjayhyKSBleHQyZnNfcmJfY29sb3IocikKKyNkZWZpbmUgZXh0MmZzX3JiX3NldF9yZWQocikgIGRvIHsgKHIpLT5yYl9wYXJlbnRfY29sb3IgJj0gfjE7IH0gd2hpbGUgKDApCisjZGVmaW5lIGV4dDJmc19yYl9zZXRfYmxhY2socikgIGRvIHsgKHIpLT5yYl9wYXJlbnRfY29sb3IgfD0gMTsgfSB3aGlsZSAoMCkKKworc3RhdGljIGlubGluZSB2b2lkIGV4dDJmc19yYl9zZXRfcGFyZW50KHN0cnVjdCByYl9ub2RlICpyYiwgc3RydWN0IHJiX25vZGUgKnApCit7CisJcmItPnJiX3BhcmVudF9jb2xvciA9IChyYi0+cmJfcGFyZW50X2NvbG9yICYgMykgfCAodWludHB0cl90KXA7Cit9CitzdGF0aWMgaW5saW5lIHZvaWQgZXh0MmZzX3JiX3NldF9jb2xvcihzdHJ1Y3QgcmJfbm9kZSAqcmIsIGludCBjb2xvcikKK3sKKwlyYi0+cmJfcGFyZW50X2NvbG9yID0gKHJiLT5yYl9wYXJlbnRfY29sb3IgJiB+MSkgfCBjb2xvcjsKK30KKworI2RlZmluZSBSQl9ST09UCShzdHJ1Y3QgcmJfcm9vdCkgeyBOVUxMLCB9CisjZGVmaW5lCWV4dDJmc19yYl9lbnRyeShwdHIsIHR5cGUsIG1lbWJlcikgY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKQorCitzdGF0aWMgaW5saW5lIGludCBleHQyZnNfcmJfZW1wdHlfcm9vdChzdHJ1Y3QgcmJfcm9vdCAqcm9vdCkKK3sKKwlyZXR1cm4gcm9vdC0+cmJfbm9kZSA9PSBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIGludCBleHQyZnNfcmJfZW1wdHlfbm9kZShzdHJ1Y3QgcmJfbm9kZSAqbm9kZSkKK3sKKwlyZXR1cm4gZXh0MmZzX3JiX3BhcmVudChub2RlKSA9PSBub2RlOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZXh0MmZzX3JiX2NsZWFyX25vZGUoc3RydWN0IHJiX25vZGUgKm5vZGUpCit7CisJZXh0MmZzX3JiX3NldF9wYXJlbnQobm9kZSwgbm9kZSk7Cit9CisKK2V4dGVybiB2b2lkIGV4dDJmc19yYl9pbnNlcnRfY29sb3Ioc3RydWN0IHJiX25vZGUgKiwgc3RydWN0IHJiX3Jvb3QgKik7CitleHRlcm4gdm9pZCBleHQyZnNfcmJfZXJhc2Uoc3RydWN0IHJiX25vZGUgKiwgc3RydWN0IHJiX3Jvb3QgKik7CisKK3R5cGVkZWYgdm9pZCAoKnJiX2F1Z21lbnRfZikoc3RydWN0IHJiX25vZGUgKm5vZGUsIHZvaWQgKmRhdGEpOworCitleHRlcm4gdm9pZCBleHQyZnNfcmJfYXVnbWVudF9pbnNlcnQoc3RydWN0IHJiX25vZGUgKm5vZGUsCisJCQkgICAgICByYl9hdWdtZW50X2YgZnVuYywgdm9pZCAqZGF0YSk7CitleHRlcm4gc3RydWN0IHJiX25vZGUgKmV4dDJmc19yYl9hdWdtZW50X2VyYXNlX2JlZ2luKHN0cnVjdCByYl9ub2RlICpub2RlKTsKK2V4dGVybiB2b2lkIGV4dDJmc19yYl9hdWdtZW50X2VyYXNlX2VuZChzdHJ1Y3QgcmJfbm9kZSAqbm9kZSwKKwkJCQkgcmJfYXVnbWVudF9mIGZ1bmMsIHZvaWQgKmRhdGEpOworCisvKiBGaW5kIGxvZ2ljYWwgbmV4dCBhbmQgcHJldmlvdXMgbm9kZXMgaW4gYSB0cmVlICovCitleHRlcm4gc3RydWN0IHJiX25vZGUgKmV4dDJmc19yYl9uZXh0KHN0cnVjdCByYl9ub2RlICopOworZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpleHQyZnNfcmJfcHJldihzdHJ1Y3QgcmJfbm9kZSAqKTsKK2V4dGVybiBzdHJ1Y3QgcmJfbm9kZSAqZXh0MmZzX3JiX2ZpcnN0KGNvbnN0IHN0cnVjdCByYl9yb290ICopOworZXh0ZXJuIHN0cnVjdCByYl9ub2RlICpleHQyZnNfcmJfbGFzdChjb25zdCBzdHJ1Y3QgcmJfcm9vdCAqKTsKKworLyogRmFzdCByZXBsYWNlbWVudCBvZiBhIHNpbmdsZSBub2RlIHdpdGhvdXQgcmVtb3ZlL3JlYmFsYW5jZS9hZGQvcmViYWxhbmNlICovCitleHRlcm4gdm9pZCBleHQyZnNfcmJfcmVwbGFjZV9ub2RlKHN0cnVjdCByYl9ub2RlICp2aWN0aW0sIHN0cnVjdCByYl9ub2RlICpuZXcsCisJCQkJIHN0cnVjdCByYl9yb290ICpyb290KTsKKworc3RhdGljIGlubGluZSB2b2lkIGV4dDJmc19yYl9saW5rX25vZGUoc3RydWN0IHJiX25vZGUgKiBub2RlLAorCQkJCSAgICAgc3RydWN0IHJiX25vZGUgKiBwYXJlbnQsCisJCQkJICAgICBzdHJ1Y3QgcmJfbm9kZSAqKiByYl9saW5rKQoreworCW5vZGUtPnJiX3BhcmVudF9jb2xvciA9ICh1aW50cHRyX3QpcGFyZW50OworCW5vZGUtPnJiX2xlZnQgPSBub2RlLT5yYl9yaWdodCA9IE5VTEw7CisKKwkqcmJfbGluayA9IG5vZGU7Cit9CisKKyNlbmRpZgkvKiBfTElOVVhfUkJUUkVFX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3JlYWRfYmIuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3JlYWRfYmIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNThiN2NiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcmVhZF9iYi5jCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogcmVhZF9iYiAtLS0gcmVhZCB0aGUgYmFkIGJsb2NrcyBpbm9kZQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitzdHJ1Y3QgcmVhZF9iYl9yZWNvcmQgeworCWV4dDJfYmFkYmxvY2tzX2xpc3QJYmJfbGlzdDsKKwllcnJjb2RlX3QJZXJyOworfTsKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgZXh0MmZzX3JlYWRfYmJfaW5vZGUoKQorICovCisjaWZkZWYgX19UVVJCT0NfXworICNwcmFnbWEgYXJnc3VzZWQKKyNlbmRpZgorc3RhdGljIGludCBtYXJrX2JhZF9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrX3QgKmJsb2NrX25yLAorCQkJICBlMl9ibGtjbnRfdCBibG9ja2NudCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgIGJsa190IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgIGludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCByZWFkX2JiX3JlY29yZCAqcmIgPSAoc3RydWN0IHJlYWRfYmJfcmVjb3JkICopIHByaXZfZGF0YTsKKworCWlmIChibG9ja2NudCA8IDApCisJCXJldHVybiAwOworCisJaWYgKCgqYmxvY2tfbnIgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgfHwKKwkgICAgKCpibG9ja19uciA+PSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpKQorCQlyZXR1cm4gMDsJLyogSWdub3JlIGlsbGVnYWwgYmxvY2tzICovCisKKwlyYi0+ZXJyID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2FkZChyYi0+YmJfbGlzdCwgKmJsb2NrX25yKTsKKwlpZiAocmItPmVycikKKwkJcmV0dXJuIEJMT0NLX0FCT1JUOworCXJldHVybiAwOworfQorCisvKgorICogUmVhZHMgdGhlIGN1cnJlbnQgYmFkIGJsb2NrcyBmcm9tIHRoZSBiYWQgYmxvY2tzIGlub2RlLgorICovCitlcnJjb2RlX3QgZXh0MmZzX3JlYWRfYmJfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfYmFkYmxvY2tzX2xpc3QgKmJiX2xpc3QpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgcmVhZF9iYl9yZWNvcmQgcmI7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJYmxrX3QJbnVtYmxvY2tzOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCWlmICghKmJiX2xpc3QpIHsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIEVYVDJfQkFEX0lOTywgJmlub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCW51bWJsb2NrcyA9IGlub2RlLmlfYmxvY2tzOworCQlpZiAoIShleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgJiYKKwkJICAgICAgKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0hVR0VfRklMRV9GTCkpKQorCQkJbnVtYmxvY2tzID0gbnVtYmxvY2tzIC8gKGZzLT5ibG9ja3NpemUgLyA1MTIpOworCQludW1ibG9ja3MgKz0gMjA7CisJCWlmIChudW1ibG9ja3MgPCA1MCkKKwkJCW51bWJsb2NrcyA9IDUwOworCQlpZiAobnVtYmxvY2tzID4gNTAwMDApCisJCQludW1ibG9ja3MgPSA1MDA7CisJCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9jcmVhdGUoYmJfbGlzdCwgbnVtYmxvY2tzKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJcmIuYmJfbGlzdCA9ICpiYl9saXN0OworCXJiLmVyciA9IDA7CisJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUyKGZzLCBFWFQyX0JBRF9JTk8sIEJMT0NLX0ZMQUdfUkVBRF9PTkxZLAorCQkJCSAgICAgICAwLCBtYXJrX2JhZF9ibG9jaywgJnJiKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dXJuIHJiLmVycjsKK30KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yZWFkX2JiX2ZpbGUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3JlYWRfYmJfZmlsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMWFkMWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yZWFkX2JiX2ZpbGUuYwpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIHJlYWRfYmJfZmlsZS5jIC0tLSByZWFkIGEgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gYSBGSUxFICoKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDIwMDAgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworLyoKKyAqIFJlYWRzIGEgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gIGEgRklMRSAqCisgKi8KK2VycmNvZGVfdCBleHQyZnNfcmVhZF9iYl9GSUxFMihleHQyX2ZpbHN5cyBmcywgRklMRSAqZiwKKwkJCSAgICAgICBleHQyX2JhZGJsb2Nrc19saXN0ICpiYl9saXN0LAorCQkJICAgICAgIHZvaWQgKnByaXZfZGF0YSwKKwkJCSAgICAgICB2b2lkICgqaW52YWxpZCkoZXh0Ml9maWxzeXMgZnMsCisJCQkJCSAgICAgICBibGtfdCBibGssCisJCQkJCSAgICAgICBjaGFyICpiYWRzdHIsCisJCQkJCSAgICAgICB2b2lkICpwcml2X2RhdGEpKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJYmxvY2tubzsKKwlpbnQJCWNvdW50OworCWNoYXIJCWJ1ZlsxMjhdOworCisJaWYgKGZzKQorCQlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKCEqYmJfbGlzdCkgeworCQlyZXR2YWwgPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfY3JlYXRlKGJiX2xpc3QsIDEwKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJd2hpbGUgKCFmZW9mIChmKSkgeworCQlpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikgPT0gTlVMTCkKKwkJCWJyZWFrOworCQljb3VudCA9IHNzY2FuZihidWYsICIlbGx1IiwgJmJsb2Nrbm8pOworCQlpZiAoY291bnQgPD0gMCkKKwkJCWNvbnRpbnVlOworCQkvKiBCYWRibG9ja3MgaXNuJ3QgZ29pbmcgdG8gYmUgdXBkYXRlZCBmb3IgNjRiaXQgKi8KKwkJaWYgKGJsb2Nrbm8gPj4gMzIpCisJCQlyZXR1cm4gRU9WRVJGTE9XOworCQlpZiAoZnMgJiYKKwkJICAgICgoYmxvY2tubyA8IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSB8fAorCQkgICAgIChibG9ja25vID49IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpKSB7CisJCQlpZiAoaW52YWxpZCkKKwkJCQkoaW52YWxpZCkoZnMsIGJsb2Nrbm8sIGJ1ZiwgcHJpdl9kYXRhKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9hZGQoKmJiX2xpc3QsIGJsb2Nrbm8pOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBjb21wYXRfc3RydWN0IHsKKwl2b2lkICgqaW52YWxpZCkoZXh0Ml9maWxzeXMsIGJsa190KTsKK307CisKK3N0YXRpYyB2b2lkIGNhbGxfY29tcGF0X2ludmFsaWQoZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsaywKKwkJCQljaGFyICpiYWRzdHIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCXZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgY29tcGF0X3N0cnVjdCAqc3Q7CisKKwlzdCA9IChzdHJ1Y3QgY29tcGF0X3N0cnVjdCAqKSBwcml2X2RhdGE7CisJaWYgKHN0LT5pbnZhbGlkKQorCQkoc3QtPmludmFsaWQpKGZzLCBibGspOworfQorCisKKy8qCisgKiBSZWFkcyBhIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tICBhIEZJTEUgKgorICovCitlcnJjb2RlX3QgZXh0MmZzX3JlYWRfYmJfRklMRShleHQyX2ZpbHN5cyBmcywgRklMRSAqZiwKKwkJCSAgICAgIGV4dDJfYmFkYmxvY2tzX2xpc3QgKmJiX2xpc3QsCisJCQkgICAgICB2b2lkICgqaW52YWxpZCkoZXh0Ml9maWxzeXMgZnMsIGJsa190IGJsaykpCit7CisJc3RydWN0IGNvbXBhdF9zdHJ1Y3Qgc3Q7CisKKwlzdC5pbnZhbGlkID0gaW52YWxpZDsKKworCXJldHVybiBleHQyZnNfcmVhZF9iYl9GSUxFMihmcywgZiwgYmJfbGlzdCwgJnN0LAorCQkJCSAgICBjYWxsX2NvbXBhdF9pbnZhbGlkKTsKK30KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yZXNfZ2R0LmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yZXNfZ2R0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFhOWNmOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3Jlc19nZHQuYwpAQCAtMCwwICsxLDIzOSBAQAorLyoKKyAqIHJlc19nZHQuYyAtLS0gcmVzZXJ2ZSBibG9ja3MgZm9yIGdyb3dpbmcgdGhlIGdyb3VwIGRlc2NyaXB0b3IgdGFibGUKKyAqICAgICAgICAgICAgICAgZHVyaW5nIG9ubGluZSByZXNpemluZy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDIgQW5kcmVhcyBEaWxnZXIKKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKy8qCisgKiBJdGVyYXRlIHRocm91Z2ggdGhlIGdyb3VwcyB3aGljaCBob2xkIEJBQ0tVUCBzdXBlcmJsb2NrL0dEVCBjb3BpZXMgaW4gYW4KKyAqIGV4dDMgZmlsZXN5c3RlbS4gIFRoZSBjb3VudGVycyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gMSwgNSwgYW5kIDcgYmVmb3JlCisgKiBjYWxsaW5nIHRoaXMgZm9yIHRoZSBmaXJzdCB0aW1lLiAgSW4gYSBzcGFyc2UgZmlsZXN5c3RlbSBpdCB3aWxsIGJlIHRoZQorICogc2VxdWVuY2Ugb2YgcG93ZXJzIG9mIDMsIDUsIGFuZCA3OiAxLCAzLCA1LCA3LCA5LCAyNSwgMjcsIDQ5LCA4MSwgLi4uCisgKiBGb3IgYSBub24tc3BhcnNlIGZpbGVzeXN0ZW0gaXQgd2lsbCBiZSBldmVyeSBncm91cDogMSwgMiwgMywgNCwgLi4uCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgbGlzdF9iYWNrdXBzKGV4dDJfZmlsc3lzIGZzLCB1bnNpZ25lZCBpbnQgKnRocmVlLAorCQkJCSB1bnNpZ25lZCBpbnQgKmZpdmUsIHVuc2lnbmVkIGludCAqc2V2ZW4pCit7CisJdW5zaWduZWQgaW50ICptaW4gPSB0aHJlZTsKKwlpbnQgbXVsdCA9IDM7CisJdW5zaWduZWQgaW50IHJldDsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfc3BhcnNlX3N1cGVyMihmcy0+c3VwZXIpKSB7CisJCWlmICgqbWluID09IDEpIHsKKwkJCSptaW4gKz0gMTsKKwkJCWlmIChmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSkKKwkJCQlyZXR1cm4gZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMF07CisJCX0KKwkJaWYgKCptaW4gPT0gMikgeworCQkJKm1pbiArPSAxOworCQkJaWYgKGZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdKQorCQkJCXJldHVybiBmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXTsKKwkJfQorCQlyZXR1cm4gZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJfQorCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3NwYXJzZV9zdXBlcihmcy0+c3VwZXIpKSB7CisJCXJldCA9ICptaW47CisJCSptaW4gKz0gMTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoKmZpdmUgPCAqbWluKSB7CisJCW1pbiA9IGZpdmU7CisJCW11bHQgPSA1OworCX0KKwlpZiAoKnNldmVuIDwgKm1pbikgeworCQltaW4gPSBzZXZlbjsKKwkJbXVsdCA9IDc7CisJfQorCisJcmV0ID0gKm1pbjsKKwkqbWluICo9IG11bHQ7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB0aGUgcmVzZXJ2ZWQgYmxvY2tzIGhhdmUgYWxyZWFkeSBiZWVuIG1hcmtlZCBpbi11c2UKKyAqIGR1cmluZyBleHQyZnNfaW5pdGlhbGl6ZSgpLCBzbyB0aGF0IHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgZm9yIG90aGVyCisgKiB1c2VzIGJlZm9yZSB3ZSBjYW4gYWRkIHRoZW0gdG8gdGhlIHJlc2l6ZSBpbm9kZSAod2hpY2ggaGFzIHRvIGNvbWUKKyAqIGFmdGVyIHRoZSBjcmVhdGlvbiBvZiB0aGUgaW5vZGUgdGFibGUpLgorICovCitlcnJjb2RlX3QgZXh0MmZzX2NyZWF0ZV9yZXNpemVfaW5vZGUoZXh0Ml9maWxzeXMgZnMpCit7CisJZXJyY29kZV90CQlyZXR2YWwsIHJldHZhbDI7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sJKnNiOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCV9fdTMyCQkJKmRpbmRpcl9idWYsICpnZHRfYnVmOworCXVuc2lnbmVkIGxvbmcgbG9uZwlhcGIsIGlub2RlX3NpemU7CisJLyogRklYTUUtNjQgLSBjYW4ndCBkZWFsIHdpdGggZXh0ZW50cyAqLworCWJsa190CQkJZGluZGlyX2JsaywgcnN2X29mZiwgZ2R0X29mZiwgZ2R0X2JsazsKKwlpbnQJCQlkaW5kaXJfZGlydHkgPSAwLCBpbm9kZV9kaXJ0eSA9IDAsIHNiX2JsayA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJc2IgPSBmcy0+c3VwZXI7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KDIsIGZzLT5ibG9ja3NpemUsICZkaW5kaXJfYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWdkdF9idWYgPSAoX191MzIgKikoKGNoYXIgKilkaW5kaXJfYnVmICsgZnMtPmJsb2Nrc2l6ZSk7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgRVhUMl9SRVNJWkVfSU5PLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0X2ZyZWU7CisKKwkvKgorCSAqIEZpbGUgc3lzdGVtcyB3aXRoIGEgYmxvY2tzaXplIG9mIDEwMjQgYW5kIGJpZ2FsbG9jIGhhdmUKKwkgKiBzYi0+c19maXJzdF9kYXRhX2Jsb2NrIG9mIDA7IHlldCB0aGUgc3VwZXJibG9jayBpcyBzdGlsbCBhdAorCSAqIGJsb2NrICMxLiAgV2UgY29tcGVuc2F0ZSBmb3IgaXQgaGVyZS4KKwkgKi8KKwlzYl9ibGsgPSBzYi0+c19maXJzdF9kYXRhX2Jsb2NrOworCWlmIChmcy0+YmxvY2tzaXplID09IDEwMjQgJiYgc2JfYmxrID09IDApCisJCXNiX2JsayA9IDE7CisKKwkvKiBNYXhpbXVtIHBvc3NpYmxlIGZpbGUgc2l6ZSAod2UgZG9ubHkgdXNlIHRoZSBkaW5kaXJlY3QgYmxvY2tzKSAqLworCWFwYiA9IEVYVDJfQUREUl9QRVJfQkxPQ0soc2IpOworCWlmICgoZGluZGlyX2JsayA9IGlub2RlLmlfYmxvY2tbRVhUMl9ESU5EX0JMT0NLXSkpIHsKKyNpZmRlZiBSRVNfR0RUX0RFQlVHCisJCXByaW50ZigicmVhZGluZyBHRFQgZGluZGlyICV1XG4iLCBkaW5kaXJfYmxrKTsKKyNlbmRpZgorCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbmRfYmxvY2soZnMsIGRpbmRpcl9ibGssIGRpbmRpcl9idWYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXRfaW5vZGU7CisJfSBlbHNlIHsKKwkJYmxrX3QgZ29hbCA9IHNiX2JsayArIGZzLT5kZXNjX2Jsb2NrcyArCisJCQlzYi0+c19yZXNlcnZlZF9nZHRfYmxvY2tzICsgMiArCisJCQlmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NfYmxvY2soZnMsIGdvYWwsIDAsICZkaW5kaXJfYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gb3V0X2ZyZWU7CisJCWlub2RlLmlfbW9kZSA9IExJTlVYX1NfSUZSRUcgfCAwNjAwOworCQlpbm9kZS5pX2xpbmtzX2NvdW50ID0gMTsKKwkJaW5vZGUuaV9ibG9ja1tFWFQyX0RJTkRfQkxPQ0tdID0gZGluZGlyX2JsazsKKwkJZXh0MmZzX2libGtfc2V0KGZzLCAmaW5vZGUsIDEpOworCQltZW1zZXQoZGluZGlyX2J1ZiwgMCwgZnMtPmJsb2Nrc2l6ZSk7CisjaWZkZWYgUkVTX0dEVF9ERUJVRworCQlwcmludGYoImFsbG9jYXRlZCBHRFQgZGluZGlyICV1XG4iLCBkaW5kaXJfYmxrKTsKKyNlbmRpZgorCQlkaW5kaXJfZGlydHkgPSBpbm9kZV9kaXJ0eSA9IDE7CisJCWlub2RlX3NpemUgPSBhcGIqYXBiICsgYXBiICsgRVhUMl9ORElSX0JMT0NLUzsKKwkJaW5vZGVfc2l6ZSAqPSBmcy0+YmxvY2tzaXplOworCQlyZXR2YWwgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsICZpbm9kZSwgaW5vZGVfc2l6ZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dF9mcmVlOworCQlpbm9kZS5pX2N0aW1lID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCX0KKworCWZvciAocnN2X29mZiA9IDAsIGdkdF9vZmYgPSBmcy0+ZGVzY19ibG9ja3MsCisJICAgICBnZHRfYmxrID0gc2JfYmxrICsgMSArIGZzLT5kZXNjX2Jsb2NrczsKKwkgICAgIHJzdl9vZmYgPCBzYi0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCSAgICAgcnN2X29mZisrLCBnZHRfb2ZmKyssIGdkdF9ibGsrKykgeworCQl1bnNpZ25lZCBpbnQgdGhyZWUgPSAxLCBmaXZlID0gNSwgc2V2ZW4gPSA3OworCQl1bnNpZ25lZCBpbnQgZ3JwLCBsYXN0ID0gMDsKKwkJaW50IGdkdF9kaXJ0eSA9IDA7CisKKwkJZ2R0X29mZiAlPSBhcGI7CisJCWlmICghZGluZGlyX2J1ZltnZHRfb2ZmXSkgeworCQkJLyogRklYTUUgWFhYIFhYWAorCQkJYmxrX3QgbmV3X2JsazsKKworCQkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jayhmcywgZ2R0X2JsaywgMCwgJm5ld19ibGspOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIG91dF9mcmVlOworCQkJaWYgKG5ld19ibGsgIT0gZ2R0X2JsaykgeworCQkJCS8vIFhYWCBmcmVlIGJsb2NrCisJCQkJcmV0dmFsID0gLTE7IC8vIFhYWAorCQkJfQorCQkJKi8KKwkJCWdkdF9kaXJ0eSA9IGRpbmRpcl9kaXJ0eSA9IGlub2RlX2RpcnR5ID0gMTsKKwkJCW1lbXNldChnZHRfYnVmLCAwLCBmcy0+YmxvY2tzaXplKTsKKwkJCWRpbmRpcl9idWZbZ2R0X29mZl0gPSBnZHRfYmxrOworCQkJZXh0MmZzX2libGtfYWRkX2Jsb2NrcyhmcywgJmlub2RlLCAxKTsKKyNpZmRlZiBSRVNfR0RUX0RFQlVHCisJCQlwcmludGYoImFkZGVkIHByaW1hcnkgR0RUIGJsb2NrICV1IGF0ICV1WyV1XVxuIiwKKwkJCSAgICAgICBnZHRfYmxrLCBkaW5kaXJfYmxrLCBnZHRfb2ZmKTsKKyNlbmRpZgorCQl9IGVsc2UgaWYgKGRpbmRpcl9idWZbZ2R0X29mZl0gPT0gZ2R0X2JsaykgeworI2lmZGVmIFJFU19HRFRfREVCVUcKKwkJCXByaW50ZigicmVhZGluZyBwcmltYXJ5IEdEVCBibG9jayAldVxuIiwgZ2R0X2Jsayk7CisjZW5kaWYKKwkJCXJldHZhbCA9IGV4dDJmc19yZWFkX2luZF9ibG9jayhmcywgZ2R0X2JsaywgZ2R0X2J1Zik7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gb3V0X2RpbmRpcjsKKwkJfSBlbHNlIHsKKyNpZmRlZiBSRVNfR0RUX0RFQlVHCisJCQlwcmludGYoImJhZCBwcmltYXJ5IEdEVCAldSAhPSAldSBhdCAldVsldV1cbiIsCisJCQkgICAgICAgZGluZGlyX2J1ZltnZHRfb2ZmXSwgZ2R0X2JsayxkaW5kaXJfYmxrLGdkdF9vZmYpOworI2VuZGlmCisJCQlyZXR2YWwgPSBFWFQyX0VUX1JFU0laRV9JTk9ERV9DT1JSVVBUOworCQkJZ290byBvdXRfZGluZGlyOworCQl9CisKKwkJd2hpbGUgKChncnAgPSBsaXN0X2JhY2t1cHMoZnMsICZ0aHJlZSwgJmZpdmUsICZzZXZlbikpIDwKKwkJICAgICAgIGZzLT5ncm91cF9kZXNjX2NvdW50KSB7CisJCQlibGtfdCBleHBlY3QgPSBnZHRfYmxrICsgZ3JwICogc2ItPnNfYmxvY2tzX3Blcl9ncm91cDsKKworCQkJaWYgKCFnZHRfYnVmW2xhc3RdKSB7CisjaWZkZWYgUkVTX0dEVF9ERUJVRworCQkJCXByaW50ZigiYWRkZWQgYmFja3VwIEdEVCAldSBncnAgJXVAJXVbJXVdXG4iLAorCQkJCSAgICAgICBleHBlY3QsIGdycCwgZ2R0X2JsaywgbGFzdCk7CisjZW5kaWYKKwkJCQlnZHRfYnVmW2xhc3RdID0gZXhwZWN0OworCQkJCWV4dDJmc19pYmxrX2FkZF9ibG9ja3MoZnMsICZpbm9kZSwgMSk7CisJCQkJZ2R0X2RpcnR5ID0gaW5vZGVfZGlydHkgPSAxOworCQkJfSBlbHNlIGlmIChnZHRfYnVmW2xhc3RdICE9IGV4cGVjdCkgeworI2lmZGVmIFJFU19HRFRfREVCVUcKKwkJCQlwcmludGYoImJhZCBiYWNrdXAgR0RUICV1ICE9ICV1IGF0ICV1WyV1XVxuIiwKKwkJCQkgICAgICAgZ2R0X2J1ZltsYXN0XSwgZXhwZWN0LCBnZHRfYmxrLCBsYXN0KTsKKyNlbmRpZgorCQkJCXJldHZhbCA9IEVYVDJfRVRfUkVTSVpFX0lOT0RFX0NPUlJVUFQ7CisJCQkJZ290byBvdXRfZGluZGlyOworCQkJfQorCQkJbGFzdCsrOworCQl9CisJCWlmIChnZHRfZGlydHkpIHsKKyNpZmRlZiBSRVNfR0RUX0RFQlVHCisJCQlwcmludGYoIndyaXRpbmcgcHJpbWFyeSBHRFQgYmxvY2sgJXVcbiIsIGdkdF9ibGspOworI2VuZGlmCisJCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5kX2Jsb2NrKGZzLCBnZHRfYmxrLCBnZHRfYnVmKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBvdXRfZGluZGlyOworCQl9CisJfQorCitvdXRfZGluZGlyOgorCWlmIChkaW5kaXJfZGlydHkpIHsKKwkJcmV0dmFsMiA9IGV4dDJmc193cml0ZV9pbmRfYmxvY2soZnMsIGRpbmRpcl9ibGssIGRpbmRpcl9idWYpOworCQlpZiAoIXJldHZhbCkKKwkJCXJldHZhbCA9IHJldHZhbDI7CisJfQorb3V0X2lub2RlOgorI2lmZGVmIFJFU19HRFRfREVCVUcKKwlwcmludGYoImlub2RlLmlfYmxvY2tzID0gJXUsIGlfc2l6ZSA9ICV1XG4iLCBpbm9kZS5pX2Jsb2NrcywKKwkgICAgICAgaW5vZGUuaV9zaXplKTsKKyNlbmRpZgorCWlmIChpbm9kZV9kaXJ0eSkgeworCQlpbm9kZS5pX2F0aW1lID0gaW5vZGUuaV9tdGltZSA9IGZzLT5ub3cgPyBmcy0+bm93IDogdGltZSgwKTsKKwkJcmV0dmFsMiA9IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZnMsIEVYVDJfUkVTSVpFX0lOTywgJmlub2RlKTsKKwkJaWYgKCFyZXR2YWwpCisJCQlyZXR2YWwgPSByZXR2YWwyOworCX0KK291dF9mcmVlOgorCWV4dDJmc19mcmVlX21lbSgmZGluZGlyX2J1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvcndfYml0bWFwcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvcndfYml0bWFwcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlNTkzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9yd19iaXRtYXBzLmMKQEAgLTAsMCArMSw0MzAgQEAKKy8qCisgKiByd19iaXRtYXBzLmMgLS0tIHJvdXRpbmVzIHRvIHJlYWQgYW5kIHdyaXRlIHRoZSAgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk0LCAxOTk2IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisjaW5jbHVkZSAiZTJpbWFnZS5oIgorCitzdGF0aWMgZXJyY29kZV90IHdyaXRlX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMsIGludCBkb19pbm9kZSwgaW50IGRvX2Jsb2NrKQoreworCWRncnBfdCAJCWk7CisJdW5zaWduZWQgaW50CWo7CisJaW50CQlibG9ja19uYnl0ZXMsIGlub2RlX25ieXRlczsKKwl1bnNpZ25lZCBpbnQJbmJpdHM7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyCQkqYmxvY2tfYnVmID0gTlVMTCwgKmlub2RlX2J1ZiA9IE5VTEw7CisJaW50CQljc3VtX2ZsYWc7CisJYmxrNjRfdAkJYmxrOworCWJsazY0X3QJCWJsa19pdHIgPSBFWFQyRlNfQjJDKGZzLCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJZXh0Ml9pbm9fdAlpbm9faXRyID0gMTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoZnMsIEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUyk7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwljc3VtX2ZsYWcgPSBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcyk7CisKKwlpbm9kZV9uYnl0ZXMgPSBibG9ja19uYnl0ZXMgPSAwOworCWlmIChkb19ibG9jaykgeworCQlibG9ja19uYnl0ZXMgPSBFWFQyX0NMVVNURVJTX1BFUl9HUk9VUChmcy0+c3VwZXIpIC8gODsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9hbGxvY19idWYoZnMtPmlvLCAwLCAmYmxvY2tfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQltZW1zZXQoYmxvY2tfYnVmLCAweGZmLCBmcy0+YmxvY2tzaXplKTsKKwl9CisJaWYgKGRvX2lub2RlKSB7CisJCWlub2RlX25ieXRlcyA9IChzaXplX3QpCisJCQkoKEVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpKzcpIC8gOCk7CisJCXJldHZhbCA9IGlvX2NoYW5uZWxfYWxsb2NfYnVmKGZzLT5pbywgMCwgJmlub2RlX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwkJbWVtc2V0KGlub2RlX2J1ZiwgMHhmZiwgZnMtPmJsb2Nrc2l6ZSk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJaWYgKCFkb19ibG9jaykKKwkJCWdvdG8gc2tpcF9ibG9ja19iaXRtYXA7CisKKwkJaWYgKGNzdW1fZmxhZyAmJiBleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpCisJCSAgICApCisJCQlnb3RvIHNraXBfdGhpc19ibG9ja19iaXRtYXA7CisKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfcmFuZ2UyKGZzLT5ibG9ja19tYXAsCisJCQkJYmxrX2l0ciwgYmxvY2tfbmJ5dGVzIDw8IDMsIGJsb2NrX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKworCQlpZiAoaSA9PSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIDEpIHsKKwkJCS8qIEZvcmNlIGJpdG1hcCBwYWRkaW5nIGZvciB0aGUgbGFzdCBncm91cCAqLworCQkJbmJpdHMgPSBFWFQyRlNfTlVNX0IyQyhmcywKKwkJCQkoKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKQorCQkJCSAgLSAoX191NjQpIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKQorCQkJCSAlIChfX3U2NCkgRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikpKTsKKwkJCWlmIChuYml0cykKKwkJCQlmb3IgKGogPSBuYml0czsgaiA8IGZzLT5ibG9ja3NpemUgKiA4OyBqKyspCisJCQkJCWV4dDJmc19zZXRfYml0KGosIGJsb2NrX2J1Zik7CisJCX0KKworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfYml0bWFwX2NzdW1fc2V0KGZzLCBpLCBibG9ja19idWYsCisJCQkJCQkgICAgICBibG9ja19uYnl0ZXMpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGkpOworCisJCWJsayA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKTsKKwkJaWYgKGJsaykgeworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsaywgMSwKKwkJCQkJCQlibG9ja19idWYpOworCQkJaWYgKHJldHZhbCkgeworCQkJCXJldHZhbCA9IEVYVDJfRVRfQkxPQ0tfQklUTUFQX1dSSVRFOworCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQl9CisJc2tpcF90aGlzX2Jsb2NrX2JpdG1hcDoKKwkJYmxrX2l0ciArPSBibG9ja19uYnl0ZXMgPDwgMzsKKwlza2lwX2Jsb2NrX2JpdG1hcDoKKworCQlpZiAoIWRvX2lub2RlKQorCQkJY29udGludWU7CisKKwkJaWYgKGNzdW1fZmxhZyAmJiBleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpCisJCSAgICApCisJCQlnb3RvIHNraXBfdGhpc19pbm9kZV9iaXRtYXA7CisKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9pbm9kZV9iaXRtYXBfcmFuZ2UyKGZzLT5pbm9kZV9tYXAsCisJCQkJaW5vX2l0ciwgaW5vZGVfbmJ5dGVzIDw8IDMsIGlub2RlX2J1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKworCQlyZXR2YWwgPSBleHQyZnNfaW5vZGVfYml0bWFwX2NzdW1fc2V0KGZzLCBpLCBpbm9kZV9idWYsCisJCQkJCQkgICAgICBpbm9kZV9uYnl0ZXMpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBpKTsKKworCQlibGsgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCWlmIChibGspIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCBibGssIDEsCisJCQkJCQkgICAgICBpbm9kZV9idWYpOworCQkJaWYgKHJldHZhbCkgeworCQkJCXJldHZhbCA9IEVYVDJfRVRfSU5PREVfQklUTUFQX1dSSVRFOworCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQl9CisJc2tpcF90aGlzX2lub2RlX2JpdG1hcDoKKwkJaW5vX2l0ciArPSBpbm9kZV9uYnl0ZXMgPDwgMzsKKworCX0KKwlpZiAoZG9fYmxvY2spIHsKKwkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfQkJfRElSVFk7CisJCWV4dDJmc19mcmVlX21lbSgmYmxvY2tfYnVmKTsKKwl9CisJaWYgKGRvX2lub2RlKSB7CisJCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX0lCX0RJUlRZOworCQlleHQyZnNfZnJlZV9tZW0oJmlub2RlX2J1Zik7CisJfQorCXJldHVybiAwOworZXJyb3V0OgorCWlmIChpbm9kZV9idWYpCisJCWV4dDJmc19mcmVlX21lbSgmaW5vZGVfYnVmKTsKKwlpZiAoYmxvY2tfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2J1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCBtYXJrX3VuaW5pdF9iZ19ncm91cF9ibG9ja3MoZXh0Ml9maWxzeXMgZnMpCit7CisJZGdycF90CQkJaTsKKwlibGs2NF90CQkJYmxrOworCWV4dDJmc19ibG9ja19iaXRtYXAJYm1hcCA9IGZzLT5ibG9ja19tYXA7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlpZiAoIWV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBpLCBFWFQyX0JHX0JMT0NLX1VOSU5JVCkpCisJCQljb250aW51ZTsKKworCQlleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGZzLCBpLCBibWFwKTsKKworCQkvKgorCQkgKiBNYXJrIHRoZSBibG9ja3MgdXNlZCBmb3IgdGhlIGlub2RlIHRhYmxlCisJCSAqLworCQlibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKTsKKwkJaWYgKGJsaykKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTIoYm1hcCwgYmxrLAorCQkJCQkJZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCisJCS8qCisJCSAqIE1hcmsgYmxvY2sgdXNlZCBmb3IgdGhlIGJsb2NrIGJpdG1hcAorCQkgKi8KKwkJYmxrID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpOworCQlpZiAoYmxrKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihibWFwLCBibGspOworCisJCS8qCisJCSAqIE1hcmsgYmxvY2sgdXNlZCBmb3IgdGhlIGlub2RlIGJpdG1hcAorCQkgKi8KKwkJYmxrID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpOworCQlpZiAoYmxrKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihibWFwLCBibGspOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCByZWFkX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMsIGludCBkb19pbm9kZSwgaW50IGRvX2Jsb2NrKQoreworCWRncnBfdCBpOworCWNoYXIgKmJsb2NrX2JpdG1hcCA9IDAsICppbm9kZV9iaXRtYXAgPSAwOworCWNoYXIgKmJ1ZjsKKwllcnJjb2RlX3QgcmV0dmFsOworCWludCBibG9ja19uYnl0ZXMgPSBFWFQyX0NMVVNURVJTX1BFUl9HUk9VUChmcy0+c3VwZXIpIC8gODsKKwlpbnQgaW5vZGVfbmJ5dGVzID0gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgLyA4OworCWludCBjc3VtX2ZsYWc7CisJdW5zaWduZWQgaW50CWNudDsKKwlibGs2NF90CWJsazsKKwlibGs2NF90CWJsa19pdHIgPSBFWFQyRlNfQjJDKGZzLCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJYmxrNjRfdCAgIGJsa19jbnQ7CisJZXh0Ml9pbm9fdCBpbm9faXRyID0gMTsKKwlleHQyX2lub190IGlub19jbnQ7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKChibG9ja19uYnl0ZXMgPiAoaW50KSBmcy0+YmxvY2tzaXplKSB8fAorCSAgICAoaW5vZGVfbmJ5dGVzID4gKGludCkgZnMtPmJsb2Nrc2l6ZSkpCisJCXJldHVybiBFWFQyX0VUX0NPUlJVUFRfU1VQRVJCTE9DSzsKKworCWZzLT53cml0ZV9iaXRtYXBzID0gZXh0MmZzX3dyaXRlX2JpdG1hcHM7CisKKwljc3VtX2ZsYWcgPSBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcyk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4oZnMtPmRldmljZV9uYW1lKSArIDgwLCAmYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWlmIChkb19ibG9jaykgeworCQlpZiAoZnMtPmJsb2NrX21hcCkKKwkJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChmcy0+YmxvY2tfbWFwKTsKKwkJc3RyY3B5KGJ1ZiwgImJsb2NrIGJpdG1hcCBmb3IgIik7CisJCXN0cmNhdChidWYsIGZzLT5kZXZpY2VfbmFtZSk7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoZnMsIGJ1ZiwgJmZzLT5ibG9ja19tYXApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCQlyZXR2YWwgPSBpb19jaGFubmVsX2FsbG9jX2J1Zihmcy0+aW8sIDAsICZibG9ja19iaXRtYXApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0gZWxzZQorCQlibG9ja19uYnl0ZXMgPSAwOworCWlmIChkb19pbm9kZSkgeworCQlpZiAoZnMtPmlub2RlX21hcCkKKwkJCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcChmcy0+aW5vZGVfbWFwKTsKKwkJc3RyY3B5KGJ1ZiwgImlub2RlIGJpdG1hcCBmb3IgIik7CisJCXN0cmNhdChidWYsIGZzLT5kZXZpY2VfbmFtZSk7CisJCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9pbm9kZV9iaXRtYXAoZnMsIGJ1ZiwgJmZzLT5pbm9kZV9tYXApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCQlyZXR2YWwgPSBpb19jaGFubmVsX2FsbG9jX2J1Zihmcy0+aW8sIDAsICZpbm9kZV9iaXRtYXApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0gZWxzZQorCQlpbm9kZV9uYnl0ZXMgPSAwOworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKworCWlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfSU1BR0VfRklMRSkgeworCQlibGsgPSAoZnMtPmltYWdlX2hlYWRlci0+b2Zmc2V0X2lub2RlbWFwIC8gZnMtPmJsb2Nrc2l6ZSk7CisJCWlub19jbnQgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCQl3aGlsZSAoaW5vZGVfbmJ5dGVzID4gMCkgeworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbWFnZV9pbywgYmxrKyssCisJCQkJCQkgICAgIDEsIGlub2RlX2JpdG1hcCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gY2xlYW51cDsKKwkJCWNudCA9IGZzLT5ibG9ja3NpemUgPDwgMzsKKwkJCWlmIChjbnQgPiBpbm9fY250KQorCQkJCWNudCA9IGlub19jbnQ7CisJCQlyZXR2YWwgPSBleHQyZnNfc2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZnMtPmlub2RlX21hcCwKKwkJCQkJICAgICAgIGlub19pdHIsIGNudCwgaW5vZGVfYml0bWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBjbGVhbnVwOworCQkJaW5vX2l0ciArPSBmcy0+YmxvY2tzaXplIDw8IDM7CisJCQlpbm9fY250IC09IGZzLT5ibG9ja3NpemUgPDwgMzsKKwkJCWlub2RlX25ieXRlcyAtPSBmcy0+YmxvY2tzaXplOworCQl9CisJCWJsayA9IChmcy0+aW1hZ2VfaGVhZGVyLT5vZmZzZXRfYmxvY2ttYXAgLworCQkgICAgICAgZnMtPmJsb2Nrc2l6ZSk7CisJCWJsa19jbnQgPSBFWFQyX0dST1VQU19UT19DTFVTVEVSUyhmcy0+c3VwZXIsCisJCQkJCQkgIGZzLT5ncm91cF9kZXNjX2NvdW50KTsKKwkJd2hpbGUgKGJsb2NrX25ieXRlcyA+IDApIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW1hZ2VfaW8sIGJsaysrLAorCQkJCQkJICAgICAxLCBibG9ja19iaXRtYXApOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGNsZWFudXA7CisJCQljbnQgPSBmcy0+YmxvY2tzaXplIDw8IDM7CisJCQlpZiAoY250ID4gYmxrX2NudCkKKwkJCQljbnQgPSBibGtfY250OworCQkJcmV0dmFsID0gZXh0MmZzX3NldF9ibG9ja19iaXRtYXBfcmFuZ2UyKGZzLT5ibG9ja19tYXAsCisJCQkJICAgICAgIGJsa19pdHIsIGNudCwgYmxvY2tfYml0bWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBjbGVhbnVwOworCQkJYmxrX2l0ciArPSBmcy0+YmxvY2tzaXplIDw8IDM7CisJCQlibGtfY250IC09IGZzLT5ibG9ja3NpemUgPDwgMzsKKwkJCWJsb2NrX25ieXRlcyAtPSBmcy0+YmxvY2tzaXplOworCQl9CisJCWdvdG8gc3VjY2Vzc19jbGVhbnVwOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWlmIChibG9ja19iaXRtYXApIHsKKwkJCWJsayA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKTsKKwkJCWlmIChjc3VtX2ZsYWcgJiYKKwkJCSAgICBleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpICYmCisJCQkgICAgZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV92ZXJpZnkoZnMsIGkpKQorCQkJCWJsayA9IDA7CisJCQlpZiAoYmxrKSB7CisJCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgYmxrLAorCQkJCQkJCSAgICAgICAxLCBibG9ja19iaXRtYXApOworCQkJCWlmIChyZXR2YWwpIHsKKwkJCQkJcmV0dmFsID0gRVhUMl9FVF9CTE9DS19CSVRNQVBfUkVBRDsKKwkJCQkJZ290byBjbGVhbnVwOworCQkJCX0KKwkJCQkvKiB2ZXJpZnkgYmxvY2sgYml0bWFwIGNoZWNrc3VtICovCisJCQkJaWYgKCEoZnMtPmZsYWdzICYKKwkJCQkgICAgICBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSAmJgorCQkJCSAgICAhZXh0MmZzX2Jsb2NrX2JpdG1hcF9jc3VtX3ZlcmlmeShmcywgaSwKKwkJCQkJCWJsb2NrX2JpdG1hcCwgYmxvY2tfbmJ5dGVzKSkgeworCQkJCQlyZXR2YWwgPQorCQkJCQlFWFQyX0VUX0JMT0NLX0JJVE1BUF9DU1VNX0lOVkFMSUQ7CisJCQkJCWdvdG8gY2xlYW51cDsKKwkJCQl9CisJCQl9IGVsc2UKKwkJCQltZW1zZXQoYmxvY2tfYml0bWFwLCAwLCBibG9ja19uYnl0ZXMpOworCQkJY250ID0gYmxvY2tfbmJ5dGVzIDw8IDM7CisJCQlyZXR2YWwgPSBleHQyZnNfc2V0X2Jsb2NrX2JpdG1hcF9yYW5nZTIoZnMtPmJsb2NrX21hcCwKKwkJCQkJICAgICAgIGJsa19pdHIsIGNudCwgYmxvY2tfYml0bWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBjbGVhbnVwOworCQkJYmxrX2l0ciArPSBibG9ja19uYnl0ZXMgPDwgMzsKKwkJfQorCQlpZiAoaW5vZGVfYml0bWFwKSB7CisJCQlibGsgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCQlpZiAoY3N1bV9mbGFnICYmCisJCQkgICAgZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGksIEVYVDJfQkdfSU5PREVfVU5JTklUKSAmJgorCQkJICAgIGV4dDJmc19ncm91cF9kZXNjX2NzdW1fdmVyaWZ5KGZzLCBpKSkKKwkJCQlibGsgPSAwOworCQkJaWYgKGJsaykgeworCQkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywKKwkJCQkJCQkgICAgICAgMSwgaW5vZGVfYml0bWFwKTsKKwkJCQlpZiAocmV0dmFsKSB7CisJCQkJCXJldHZhbCA9IEVYVDJfRVRfSU5PREVfQklUTUFQX1JFQUQ7CisJCQkJCWdvdG8gY2xlYW51cDsKKwkJCQl9CisKKwkJCQkvKiB2ZXJpZnkgaW5vZGUgYml0bWFwIGNoZWNrc3VtICovCisJCQkJaWYgKCEoZnMtPmZsYWdzICYKKwkJCQkgICAgICBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTKSAmJgorCQkJCSAgICAhZXh0MmZzX2lub2RlX2JpdG1hcF9jc3VtX3ZlcmlmeShmcywgaSwKKwkJCQkJCWlub2RlX2JpdG1hcCwgaW5vZGVfbmJ5dGVzKSkgeworCQkJCQlyZXR2YWwgPQorCQkJCQlFWFQyX0VUX0lOT0RFX0JJVE1BUF9DU1VNX0lOVkFMSUQ7CisJCQkJCWdvdG8gY2xlYW51cDsKKwkJCQl9CisJCQl9IGVsc2UKKwkJCQltZW1zZXQoaW5vZGVfYml0bWFwLCAwLCBpbm9kZV9uYnl0ZXMpOworCQkJY250ID0gaW5vZGVfbmJ5dGVzIDw8IDM7CisJCQlyZXR2YWwgPSBleHQyZnNfc2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZnMtPmlub2RlX21hcCwKKwkJCQkJICAgICAgIGlub19pdHIsIGNudCwgaW5vZGVfYml0bWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBjbGVhbnVwOworCQkJaW5vX2l0ciArPSBpbm9kZV9uYnl0ZXMgPDwgMzsKKwkJfQorCX0KKworCS8qIE1hcmsgZ3JvdXAgYmxvY2tzIGZvciBhbnkgQkxPQ0tfVU5JTklUIGdyb3VwcyAqLworCWlmIChkb19ibG9jaykgeworCQlyZXR2YWwgPSBtYXJrX3VuaW5pdF9iZ19ncm91cF9ibG9ja3MoZnMpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0KKworc3VjY2Vzc19jbGVhbnVwOgorCWlmIChpbm9kZV9iaXRtYXApCisJCWV4dDJmc19mcmVlX21lbSgmaW5vZGVfYml0bWFwKTsKKwlpZiAoYmxvY2tfYml0bWFwKQorCQlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2JpdG1hcCk7CisJcmV0dXJuIDA7CisKK2NsZWFudXA6CisJaWYgKGRvX2Jsb2NrKSB7CisJCWV4dDJmc19mcmVlX21lbSgmZnMtPmJsb2NrX21hcCk7CisJCWZzLT5ibG9ja19tYXAgPSAwOworCX0KKwlpZiAoZG9faW5vZGUpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmcy0+aW5vZGVfbWFwKTsKKwkJZnMtPmlub2RlX21hcCA9IDA7CisJfQorCWlmIChpbm9kZV9iaXRtYXApCisJCWV4dDJmc19mcmVlX21lbSgmaW5vZGVfYml0bWFwKTsKKwlpZiAoYmxvY2tfYml0bWFwKQorCQlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2JpdG1hcCk7CisJaWYgKGJ1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVhZF9pbm9kZV9iaXRtYXAoZXh0Ml9maWxzeXMgZnMpCit7CisJcmV0dXJuIHJlYWRfYml0bWFwcyhmcywgMSwgMCk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcmVhZF9ibG9ja19iaXRtYXAoZXh0Ml9maWxzeXMgZnMpCit7CisJcmV0dXJuIHJlYWRfYml0bWFwcyhmcywgMCwgMSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfd3JpdGVfaW5vZGVfYml0bWFwKGV4dDJfZmlsc3lzIGZzKQoreworCXJldHVybiB3cml0ZV9iaXRtYXBzKGZzLCAxLCAwKTsKK30KKworZXJyY29kZV90IGV4dDJmc193cml0ZV9ibG9ja19iaXRtYXAgKGV4dDJfZmlsc3lzIGZzKQoreworCXJldHVybiB3cml0ZV9iaXRtYXBzKGZzLCAwLCAxKTsKK30KKworZXJyY29kZV90IGV4dDJmc19yZWFkX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMpCit7CisJaWYgKGZzLT5pbm9kZV9tYXAgJiYgZnMtPmJsb2NrX21hcCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gcmVhZF9iaXRtYXBzKGZzLCAhZnMtPmlub2RlX21hcCwgIWZzLT5ibG9ja19tYXApOworfQorCitlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMpCit7CisJaW50IGRvX2lub2RlID0gZnMtPmlub2RlX21hcCAmJiBleHQyZnNfdGVzdF9pYl9kaXJ0eShmcyk7CisJaW50IGRvX2Jsb2NrID0gZnMtPmJsb2NrX21hcCAmJiBleHQyZnNfdGVzdF9iYl9kaXJ0eShmcyk7CisKKwlpZiAoIWRvX2lub2RlICYmICFkb19ibG9jaykKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gd3JpdGVfYml0bWFwcyhmcywgZG9faW5vZGUsIGRvX2Jsb2NrKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3NoYTI1Ni5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvc2hhMjU2LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzYzMzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3NoYTI1Ni5jCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogc2hhMjU2LmMgLS0tIFRoZSBzaDI1NiBhbGdvcml0aG0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgU2FtIEhvY2V2YXIgPHNhbUBob2NldmFyLm5ldD4KKyAqIChjb3BpZWQgZnJvbSBsaWJ0b21jcnlwdCBhbmQgdGhlbiByZWxpY2Vuc2VkIHVuZGVyIEdQTHYyKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK3N0YXRpYyBjb25zdCBfX3UzMiBLWzY0XSA9IHsKKyAgICAweDQyOGEyZjk4VUwsIDB4NzEzNzQ0OTFVTCwgMHhiNWMwZmJjZlVMLCAweGU5YjVkYmE1VUwsIDB4Mzk1NmMyNWJVTCwKKyAgICAweDU5ZjExMWYxVUwsIDB4OTIzZjgyYTRVTCwgMHhhYjFjNWVkNVVMLCAweGQ4MDdhYTk4VUwsIDB4MTI4MzViMDFVTCwKKyAgICAweDI0MzE4NWJlVUwsIDB4NTUwYzdkYzNVTCwgMHg3MmJlNWQ3NFVMLCAweDgwZGViMWZlVUwsIDB4OWJkYzA2YTdVTCwKKyAgICAweGMxOWJmMTc0VUwsIDB4ZTQ5YjY5YzFVTCwgMHhlZmJlNDc4NlVMLCAweDBmYzE5ZGM2VUwsIDB4MjQwY2ExY2NVTCwKKyAgICAweDJkZTkyYzZmVUwsIDB4NGE3NDg0YWFVTCwgMHg1Y2IwYTlkY1VMLCAweDc2Zjk4OGRhVUwsIDB4OTgzZTUxNTJVTCwKKyAgICAweGE4MzFjNjZkVUwsIDB4YjAwMzI3YzhVTCwgMHhiZjU5N2ZjN1VMLCAweGM2ZTAwYmYzVUwsIDB4ZDVhNzkxNDdVTCwKKyAgICAweDA2Y2E2MzUxVUwsIDB4MTQyOTI5NjdVTCwgMHgyN2I3MGE4NVVMLCAweDJlMWIyMTM4VUwsIDB4NGQyYzZkZmNVTCwKKyAgICAweDUzMzgwZDEzVUwsIDB4NjUwYTczNTRVTCwgMHg3NjZhMGFiYlVMLCAweDgxYzJjOTJlVUwsIDB4OTI3MjJjODVVTCwKKyAgICAweGEyYmZlOGExVUwsIDB4YTgxYTY2NGJVTCwgMHhjMjRiOGI3MFVMLCAweGM3NmM1MWEzVUwsIDB4ZDE5MmU4MTlVTCwKKyAgICAweGQ2OTkwNjI0VUwsIDB4ZjQwZTM1ODVVTCwgMHgxMDZhYTA3MFVMLCAweDE5YTRjMTE2VUwsIDB4MWUzNzZjMDhVTCwKKyAgICAweDI3NDg3NzRjVUwsIDB4MzRiMGJjYjVVTCwgMHgzOTFjMGNiM1VMLCAweDRlZDhhYTRhVUwsIDB4NWI5Y2NhNGZVTCwKKyAgICAweDY4MmU2ZmYzVUwsIDB4NzQ4ZjgyZWVVTCwgMHg3OGE1NjM2ZlVMLCAweDg0Yzg3ODE0VUwsIDB4OGNjNzAyMDhVTCwKKyAgICAweDkwYmVmZmZhVUwsIDB4YTQ1MDZjZWJVTCwgMHhiZWY5YTNmN1VMLCAweGM2NzE3OGYyVUwKK307CisKKy8qIFZhcmlvdXMgbG9naWNhbCBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgQ2goeCx5LHopICAgICAgICh6IF4gKHggJiAoeSBeIHopKSkKKyNkZWZpbmUgTWFqKHgseSx6KSAgICAgICgoKHggfCB5KSAmIHopIHwgKHggJiB5KSkgCisjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1JjKCh4KSwobikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSYweEZGRkZGRkZGVUwpPj4obikpCisjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyKSBeIFMoeCwgMTMpIF4gUyh4LCAyMikpCisjZGVmaW5lIFNpZ21hMSh4KSAgICAgICAoUyh4LCA2KSBeIFMoeCwgMTEpIF4gUyh4LCAyNSkpCisjZGVmaW5lIEdhbW1hMCh4KSAgICAgICAoUyh4LCA3KSBeIFMoeCwgMTgpIF4gUih4LCAzKSkKKyNkZWZpbmUgR2FtbWExKHgpICAgICAgIChTKHgsIDE3KSBeIFMoeCwgMTkpIF4gUih4LCAxMCkpCisjZGVmaW5lIFJPUmMoeCwgeSkgKCAoKCgoX191MzIpKHgpJjB4RkZGRkZGRkZVTCk+PihfX3UzMikoKHkpJjMxKSkgfCAoKF9fdTMyKSh4KTw8KF9fdTMyKSgzMi0oKHkpJjMxKSkpKSAmIDB4RkZGRkZGRkZVTCkKKworI2RlZmluZSBSTkQoYSxiLGMsZCxlLGYsZyxoLGkpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgdDAgPSBoICsgU2lnbWExKGUpICsgQ2goZSwgZiwgZykgKyBLW2ldICsgV1tpXTsgICBcCisgICAgIHQxID0gU2lnbWEwKGEpICsgTWFqKGEsIGIsIGMpOyAgICAgICAgICAgICAgICAgICAgXAorICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgaCAgPSB0MCArIHQxOworCisjZGVmaW5lIFNUT1JFNjRIKHgsIHkpIFwKKwlkbyB7IFwKKwkJKHkpWzBdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjU2KSYyNTUpO1wKKwkJKHkpWzFdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjQ4KSYyNTUpO1wKKwkJKHkpWzJdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjQwKSYyNTUpO1wKKwkJKHkpWzNdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjMyKSYyNTUpO1wKKwkJKHkpWzRdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjI0KSYyNTUpO1wKKwkJKHkpWzVdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjE2KSYyNTUpO1wKKwkJKHkpWzZdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjgpJjI1NSk7XAorCQkoeSlbN10gPSAodW5zaWduZWQgY2hhcikoKHgpJjI1NSk7IH0gd2hpbGUoMCkKKworI2RlZmluZSBTVE9SRTMySCh4LCB5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAoeSlbMF0gPSAodW5zaWduZWQgY2hhcikoKCh4KT4+MjQpJjI1NSk7ICh5KVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj4xNikmMjU1KTsgICBcCisgICAgICAgKHkpWzJdID0gKHVuc2lnbmVkIGNoYXIpKCgoeCk+PjgpJjI1NSk7ICh5KVszXSA9ICh1bnNpZ25lZCBjaGFyKSgoeCkmMjU1KTsgfSB3aGlsZSgwKQorCisjZGVmaW5lIExPQUQzMkgoeCwgeSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7IHggPSAoKF9fdTMyKSgoeSlbMF0gJiAyNTUpPDwyNCkgfCBcCisgICAgICAgICAgICgoX191MzIpKCh5KVsxXSAmIDI1NSk8PDE2KSB8IFwKKyAgICAgICAgICAgKChfX3UzMikoKHkpWzJdICYgMjU1KTw8OCkgIHwgXAorICAgICAgICAgICAoKF9fdTMyKSgoeSlbM10gJiAyNTUpKTsgfSB3aGlsZSgwKQorCitzdHJ1Y3Qgc2hhMjU2X3N0YXRlIHsKKyAgICBfX3U2NCBsZW5ndGg7CisgICAgX191MzIgc3RhdGVbOF0sIGN1cmxlbjsKKyAgICB1bnNpZ25lZCBjaGFyIGJ1Zls2NF07Cit9OworCisvKiBUaGlzIGlzIGEgaGlnaGx5IHNpbXBsaWZpZWQgdmVyc2lvbiBmcm9tIGxpYnRvbWNyeXB0ICovCitzdHJ1Y3QgaGFzaF9zdGF0ZSB7CisJc3RydWN0IHNoYTI1Nl9zdGF0ZSBzaGEyNTY7Cit9OworCitzdGF0aWMgdm9pZCBzaGEyNTZfY29tcHJlc3Moc3RydWN0IGhhc2hfc3RhdGUgKiBtZCwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmKQoreworICAgIF9fdTMyIFNbOF0sIFdbNjRdLCB0MCwgdDE7CisgICAgX191MzIgdDsKKyAgICBpbnQgaTsKKworICAgIC8qIGNvcHkgc3RhdGUgaW50byBTICovCisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBTW2ldID0gbWQtPnNoYTI1Ni5zdGF0ZVtpXTsKKyAgICB9CisKKyAgICAvKiBjb3B5IHRoZSBzdGF0ZSBpbnRvIDUxMi1iaXRzIGludG8gV1swLi4xNV0gKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgeworICAgICAgICBMT0FEMzJIKFdbaV0sIGJ1ZiArICg0KmkpKTsKKyAgICB9CisKKyAgICAvKiBmaWxsIFdbMTYuLjYzXSAqLworICAgIGZvciAoaSA9IDE2OyBpIDwgNjQ7IGkrKykgeworICAgICAgICBXW2ldID0gR2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgR2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl07CisgICAgfSAgICAgICAgCisKKyAgICAvKiBDb21wcmVzcyAqLworICAgICBmb3IgKGkgPSAwOyBpIDwgNjQ7ICsraSkgeworICAgICAgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxpKTsKKyAgICAgICAgIHQgPSBTWzddOyBTWzddID0gU1s2XTsgU1s2XSA9IFNbNV07IFNbNV0gPSBTWzRdOyAKKyAgICAgICAgIFNbNF0gPSBTWzNdOyBTWzNdID0gU1syXTsgU1syXSA9IFNbMV07IFNbMV0gPSBTWzBdOyBTWzBdID0gdDsKKyAgICAgfSAgCisKKyAgICAvKiBmZWVkYmFjayAqLworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgbWQtPnNoYTI1Ni5zdGF0ZVtpXSA9IG1kLT5zaGEyNTYuc3RhdGVbaV0gKyBTW2ldOworICAgIH0KK30KKworc3RhdGljIHZvaWQgc2hhMjU2X2luaXQoc3RydWN0IGhhc2hfc3RhdGUgKiBtZCkKK3sKKyAgICBtZC0+c2hhMjU2LmN1cmxlbiA9IDA7CisgICAgbWQtPnNoYTI1Ni5sZW5ndGggPSAwOworICAgIG1kLT5zaGEyNTYuc3RhdGVbMF0gPSAweDZBMDlFNjY3VUw7CisgICAgbWQtPnNoYTI1Ni5zdGF0ZVsxXSA9IDB4QkI2N0FFODVVTDsKKyAgICBtZC0+c2hhMjU2LnN0YXRlWzJdID0gMHgzQzZFRjM3MlVMOworICAgIG1kLT5zaGEyNTYuc3RhdGVbM10gPSAweEE1NEZGNTNBVUw7CisgICAgbWQtPnNoYTI1Ni5zdGF0ZVs0XSA9IDB4NTEwRTUyN0ZVTDsKKyAgICBtZC0+c2hhMjU2LnN0YXRlWzVdID0gMHg5QjA1Njg4Q1VMOworICAgIG1kLT5zaGEyNTYuc3RhdGVbNl0gPSAweDFGODNEOUFCVUw7CisgICAgbWQtPnNoYTI1Ni5zdGF0ZVs3XSA9IDB4NUJFMENEMTlVTDsKK30KKworI2RlZmluZSBNSU4oeCwgeSkgKCAoKHgpPCh5KSk/KHgpOih5KSApCisjZGVmaW5lIFNIQTI1Nl9CTE9DS1NJWkUgNjQKK3N0YXRpYyB2b2lkIHNoYTI1Nl9wcm9jZXNzKHN0cnVjdCBoYXNoX3N0YXRlICogbWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGlubGVuKQoreworICAgIHVuc2lnbmVkIGxvbmcgbjsKKworICAgIHdoaWxlIChpbmxlbiA+IDApIHsKKwkgICAgaWYgKG1kLT5zaGEyNTYuY3VybGVuID09IDAgJiYgaW5sZW4gPj0gU0hBMjU2X0JMT0NLU0laRSkgeworCQkgICAgc2hhMjU2X2NvbXByZXNzKG1kLCBpbik7CisJCSAgICBtZC0+c2hhMjU2Lmxlbmd0aCArPSBTSEEyNTZfQkxPQ0tTSVpFICogODsKKwkJICAgIGluICs9IFNIQTI1Nl9CTE9DS1NJWkU7CisJCSAgICBpbmxlbiAtPSBTSEEyNTZfQkxPQ0tTSVpFOworCSAgICB9IGVsc2UgeworCQkgICAgbiA9IE1JTihpbmxlbiwgKFNIQTI1Nl9CTE9DS1NJWkUgLSBtZC0+c2hhMjU2LmN1cmxlbikpOworCQkgICAgbWVtY3B5KG1kLT5zaGEyNTYuYnVmICsgbWQtPnNoYTI1Ni5jdXJsZW4sIGluLCAoc2l6ZV90KW4pOworCQkgICAgbWQtPnNoYTI1Ni5jdXJsZW4gKz0gbjsKKwkJICAgIGluICs9IG47CisJCSAgICBpbmxlbiAtPSBuOworCQkgICAgaWYgKG1kLT5zaGEyNTYuY3VybGVuID09IFNIQTI1Nl9CTE9DS1NJWkUpIHsKKwkJCSAgICBzaGEyNTZfY29tcHJlc3MobWQsIG1kLT5zaGEyNTYuYnVmKTsKKwkJCSAgICBtZC0+c2hhMjU2Lmxlbmd0aCArPSA4KlNIQTI1Nl9CTE9DS1NJWkU7CisJCQkgICAgbWQtPnNoYTI1Ni5jdXJsZW4gPSAwOworCQkgICAgfQorCSAgICB9CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHNoYTI1Nl9kb25lKHN0cnVjdCBoYXNoX3N0YXRlICogbWQsIHVuc2lnbmVkIGNoYXIgKm91dCkKK3sKKyAgICBpbnQgaTsKKworICAgIC8qIGluY3JlYXNlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgKi8KKyAgICBtZC0+c2hhMjU2Lmxlbmd0aCArPSBtZC0+c2hhMjU2LmN1cmxlbiAqIDg7CisKKyAgICAvKiBhcHBlbmQgdGhlICcxJyBiaXQgKi8KKyAgICBtZC0+c2hhMjU2LmJ1ZlttZC0+c2hhMjU2LmN1cmxlbisrXSA9ICh1bnNpZ25lZCBjaGFyKTB4ODA7CisKKyAgICAvKiBpZiB0aGUgbGVuZ3RoIGlzIGN1cnJlbnRseSBhYm92ZSA1NiBieXRlcyB3ZSBhcHBlbmQgemVyb3MKKyAgICAgKiB0aGVuIGNvbXByZXNzLiAgVGhlbiB3ZSBjYW4gZmFsbCBiYWNrIHRvIHBhZGRpbmcgemVyb3MgYW5kIGxlbmd0aAorICAgICAqIGVuY29kaW5nIGxpa2Ugbm9ybWFsLgorICAgICAqLworICAgIGlmIChtZC0+c2hhMjU2LmN1cmxlbiA+IDU2KSB7CisgICAgICAgIHdoaWxlIChtZC0+c2hhMjU2LmN1cmxlbiA8IDY0KSB7CisgICAgICAgICAgICBtZC0+c2hhMjU2LmJ1ZlttZC0+c2hhMjU2LmN1cmxlbisrXSA9ICh1bnNpZ25lZCBjaGFyKTA7CisgICAgICAgIH0KKyAgICAgICAgc2hhMjU2X2NvbXByZXNzKG1kLCBtZC0+c2hhMjU2LmJ1Zik7CisgICAgICAgIG1kLT5zaGEyNTYuY3VybGVuID0gMDsKKyAgICB9CisKKyAgICAvKiBwYWQgdXB0byA1NiBieXRlcyBvZiB6ZXJvZXMgKi8KKyAgICB3aGlsZSAobWQtPnNoYTI1Ni5jdXJsZW4gPCA1NikgeworICAgICAgICBtZC0+c2hhMjU2LmJ1ZlttZC0+c2hhMjU2LmN1cmxlbisrXSA9ICh1bnNpZ25lZCBjaGFyKTA7CisgICAgfQorCisgICAgLyogc3RvcmUgbGVuZ3RoICovCisgICAgU1RPUkU2NEgobWQtPnNoYTI1Ni5sZW5ndGgsIG1kLT5zaGEyNTYuYnVmKzU2KTsKKyAgICBzaGEyNTZfY29tcHJlc3MobWQsIG1kLT5zaGEyNTYuYnVmKTsKKworICAgIC8qIGNvcHkgb3V0cHV0ICovCisgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworICAgICAgICBTVE9SRTMySChtZC0+c2hhMjU2LnN0YXRlW2ldLCBvdXQrKDQqaSkpOworICAgIH0KK30KKwordm9pZCBleHQyZnNfc2hhMjU2KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25lZCBsb25nIGluX3NpemUsCisJCSAgIHVuc2lnbmVkIGNoYXIgb3V0W0VYVDJGU19TSEEyNTZfTEVOR1RIXSkKK3sKKwlzdHJ1Y3QgaGFzaF9zdGF0ZSBtZDsKKworCXNoYTI1Nl9pbml0KCZtZCk7CisJc2hhMjU2X3Byb2Nlc3MoJm1kLCBpbiwgaW5fc2l6ZSk7CisJc2hhMjU2X2RvbmUoJm1kLCBvdXQpOworfQorCisjaWZkZWYgVU5JVFRFU1QKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCWNoYXIgKm1zZzsKKwl1bnNpZ25lZCBjaGFyIGhhc2hbMzJdOworfSB0ZXN0c1tdID0geworCXsgIiIsCisJICB7IDB4ZTMsIDB4YjAsIDB4YzQsIDB4NDIsIDB4OTgsIDB4ZmMsIDB4MWMsIDB4MTQsCisJICAgIDB4OWEsIDB4ZmIsIDB4ZjQsIDB4YzgsIDB4OTksIDB4NmYsIDB4YjksIDB4MjQsCisJICAgIDB4MjcsIDB4YWUsIDB4NDEsIDB4ZTQsIDB4NjQsIDB4OWIsIDB4OTMsIDB4NGMsCisJICAgIDB4YTQsIDB4OTUsIDB4OTksIDB4MWIsIDB4NzgsIDB4NTIsIDB4YjgsIDB4NTUgfQorCX0sCisJeyAiYWJjIiwKKwkgIHsgMHhiYSwgMHg3OCwgMHgxNiwgMHhiZiwgMHg4ZiwgMHgwMSwgMHhjZiwgMHhlYSwKKwkgICAgMHg0MSwgMHg0MSwgMHg0MCwgMHhkZSwgMHg1ZCwgMHhhZSwgMHgyMiwgMHgyMywKKwkgICAgMHhiMCwgMHgwMywgMHg2MSwgMHhhMywgMHg5NiwgMHgxNywgMHg3YSwgMHg5YywKKwkgICAgMHhiNCwgMHgxMCwgMHhmZiwgMHg2MSwgMHhmMiwgMHgwMCwgMHgxNSwgMHhhZCB9CisJfSwKKwl7ICJhYmNkYmNkZWNkZWZkZWZnZWZnaGZnaGlnaGlqaGlqa2lqa2xqa2xta2xtbmxtbm9tbm9wbm9wcSIsCisJICB7IDB4MjQsIDB4OGQsIDB4NmEsIDB4NjEsIDB4ZDIsIDB4MDYsIDB4MzgsIDB4YjgsCisJICAgIDB4ZTUsIDB4YzAsIDB4MjYsIDB4OTMsIDB4MGMsIDB4M2UsIDB4NjAsIDB4MzksCisJICAgIDB4YTMsIDB4M2MsIDB4ZTQsIDB4NTksIDB4NjQsIDB4ZmYsIDB4MjEsIDB4NjcsCisJICAgIDB4ZjYsIDB4ZWMsIDB4ZWQsIDB4ZDQsIDB4MTksIDB4ZGIsIDB4MDYsIDB4YzEgfQorCX0sCit9OworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGk7CisJaW50IGVycm9ycyA9IDA7CisJdW5zaWduZWQgY2hhciB0bXBbMzJdOworCXN0cnVjdCBoYXNoX3N0YXRlIG1kOworCisJZm9yIChpID0gMDsgaSA8IChpbnQpKHNpemVvZih0ZXN0cykgLyBzaXplb2YodGVzdHNbMF0pKTsgaSsrKSB7CisJCXVuc2lnbmVkIGNoYXIgKm1zZyA9ICh1bnNpZ25lZCBjaGFyICopIHRlc3RzW2ldLm1zZzsKKwkJaW50IGxlbiA9IHN0cmxlbih0ZXN0c1tpXS5tc2cpOworCisJCWV4dDJmc19zaGEyNTYobXNnLCBsZW4sIHRtcCk7CisJCXByaW50ZigiU0hBMjU2IHRlc3QgbWVzc2FnZSAlZDogIiwgaSk7CisJCWlmIChtZW1jbXAodG1wLCB0ZXN0c1tpXS5oYXNoLCAzMikgIT0gMCkgeworCQkJcHJpbnRmKCJGQUlMRURcbiIpOworCQkJZXJyb3JzKys7CisJCX0gZWxzZQorCQkJcHJpbnRmKCJPS1xuIik7CisJfQorCXJldHVybiBlcnJvcnM7Cit9CisKKyNlbmRpZiAvKiBVTklUVEVTVCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvc2hhNTEyLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy9zaGE1MTIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTEzMDUzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvc2hhNTEyLmMKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBzaGE1MTIuYyAtLS0gVGhlIHNoYTUxMiBhbGdvcml0aG0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgU2FtIEhvY2V2YXIgPHNhbUBob2NldmFyLm5ldD4KKyAqIChjb3BpZWQgZnJvbSBsaWJ0b21jcnlwdCBhbmQgdGhlbiByZWxpY2Vuc2VkIHVuZGVyIEdQTHYyKQorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKy8qIHRoZSBLIGFycmF5ICovCisjZGVmaW5lIENPTlNUNjQobikgbgorc3RhdGljIGNvbnN0IF9fdTY0IEtbODBdID0geworCUNPTlNUNjQoMHg0MjhhMmY5OGQ3MjhhZTIyKSwgQ09OU1Q2NCgweDcxMzc0NDkxMjNlZjY1Y2QpLAorCUNPTlNUNjQoMHhiNWMwZmJjZmVjNGQzYjJmKSwgQ09OU1Q2NCgweGU5YjVkYmE1ODE4OWRiYmMpLAorCUNPTlNUNjQoMHgzOTU2YzI1YmYzNDhiNTM4KSwgQ09OU1Q2NCgweDU5ZjExMWYxYjYwNWQwMTkpLAorCUNPTlNUNjQoMHg5MjNmODJhNGFmMTk0ZjliKSwgQ09OU1Q2NCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpLAorCUNPTlNUNjQoMHhkODA3YWE5OGEzMDMwMjQyKSwgQ09OU1Q2NCgweDEyODM1YjAxNDU3MDZmYmUpLAorCUNPTlNUNjQoMHgyNDMxODViZTRlZTRiMjhjKSwgQ09OU1Q2NCgweDU1MGM3ZGMzZDVmZmI0ZTIpLAorCUNPTlNUNjQoMHg3MmJlNWQ3NGYyN2I4OTZmKSwgQ09OU1Q2NCgweDgwZGViMWZlM2IxNjk2YjEpLAorCUNPTlNUNjQoMHg5YmRjMDZhNzI1YzcxMjM1KSwgQ09OU1Q2NCgweGMxOWJmMTc0Y2Y2OTI2OTQpLAorCUNPTlNUNjQoMHhlNDliNjljMTllZjE0YWQyKSwgQ09OU1Q2NCgweGVmYmU0Nzg2Mzg0ZjI1ZTMpLAorCUNPTlNUNjQoMHgwZmMxOWRjNjhiOGNkNWI1KSwgQ09OU1Q2NCgweDI0MGNhMWNjNzdhYzljNjUpLAorCUNPTlNUNjQoMHgyZGU5MmM2ZjU5MmIwMjc1KSwgQ09OU1Q2NCgweDRhNzQ4NGFhNmVhNmU0ODMpLAorCUNPTlNUNjQoMHg1Y2IwYTlkY2JkNDFmYmQ0KSwgQ09OU1Q2NCgweDc2Zjk4OGRhODMxMTUzYjUpLAorCUNPTlNUNjQoMHg5ODNlNTE1MmVlNjZkZmFiKSwgQ09OU1Q2NCgweGE4MzFjNjZkMmRiNDMyMTApLAorCUNPTlNUNjQoMHhiMDAzMjdjODk4ZmIyMTNmKSwgQ09OU1Q2NCgweGJmNTk3ZmM3YmVlZjBlZTQpLAorCUNPTlNUNjQoMHhjNmUwMGJmMzNkYTg4ZmMyKSwgQ09OU1Q2NCgweGQ1YTc5MTQ3OTMwYWE3MjUpLAorCUNPTlNUNjQoMHgwNmNhNjM1MWUwMDM4MjZmKSwgQ09OU1Q2NCgweDE0MjkyOTY3MGEwZTZlNzApLAorCUNPTlNUNjQoMHgyN2I3MGE4NTQ2ZDIyZmZjKSwgQ09OU1Q2NCgweDJlMWIyMTM4NWMyNmM5MjYpLAorCUNPTlNUNjQoMHg0ZDJjNmRmYzVhYzQyYWVkKSwgQ09OU1Q2NCgweDUzMzgwZDEzOWQ5NWIzZGYpLAorCUNPTlNUNjQoMHg2NTBhNzM1NDhiYWY2M2RlKSwgQ09OU1Q2NCgweDc2NmEwYWJiM2M3N2IyYTgpLAorCUNPTlNUNjQoMHg4MWMyYzkyZTQ3ZWRhZWU2KSwgQ09OU1Q2NCgweDkyNzIyYzg1MTQ4MjM1M2IpLAorCUNPTlNUNjQoMHhhMmJmZThhMTRjZjEwMzY0KSwgQ09OU1Q2NCgweGE4MWE2NjRiYmM0MjMwMDEpLAorCUNPTlNUNjQoMHhjMjRiOGI3MGQwZjg5NzkxKSwgQ09OU1Q2NCgweGM3NmM1MWEzMDY1NGJlMzApLAorCUNPTlNUNjQoMHhkMTkyZTgxOWQ2ZWY1MjE4KSwgQ09OU1Q2NCgweGQ2OTkwNjI0NTU2NWE5MTApLAorCUNPTlNUNjQoMHhmNDBlMzU4NTU3NzEyMDJhKSwgQ09OU1Q2NCgweDEwNmFhMDcwMzJiYmQxYjgpLAorCUNPTlNUNjQoMHgxOWE0YzExNmI4ZDJkMGM4KSwgQ09OU1Q2NCgweDFlMzc2YzA4NTE0MWFiNTMpLAorCUNPTlNUNjQoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSwgQ09OU1Q2NCgweDM0YjBiY2I1ZTE5YjQ4YTgpLAorCUNPTlNUNjQoMHgzOTFjMGNiM2M1Yzk1YTYzKSwgQ09OU1Q2NCgweDRlZDhhYTRhZTM0MThhY2IpLAorCUNPTlNUNjQoMHg1YjljY2E0Zjc3NjNlMzczKSwgQ09OU1Q2NCgweDY4MmU2ZmYzZDZiMmI4YTMpLAorCUNPTlNUNjQoMHg3NDhmODJlZTVkZWZiMmZjKSwgQ09OU1Q2NCgweDc4YTU2MzZmNDMxNzJmNjApLAorCUNPTlNUNjQoMHg4NGM4NzgxNGExZjBhYjcyKSwgQ09OU1Q2NCgweDhjYzcwMjA4MWE2NDM5ZWMpLAorCUNPTlNUNjQoMHg5MGJlZmZmYTIzNjMxZTI4KSwgQ09OU1Q2NCgweGE0NTA2Y2ViZGU4MmJkZTkpLAorCUNPTlNUNjQoMHhiZWY5YTNmN2IyYzY3OTE1KSwgQ09OU1Q2NCgweGM2NzE3OGYyZTM3MjUzMmIpLAorCUNPTlNUNjQoMHhjYTI3M2VjZWVhMjY2MTljKSwgQ09OU1Q2NCgweGQxODZiOGM3MjFjMGMyMDcpLAorCUNPTlNUNjQoMHhlYWRhN2RkNmNkZTBlYjFlKSwgQ09OU1Q2NCgweGY1N2Q0ZjdmZWU2ZWQxNzgpLAorCUNPTlNUNjQoMHgwNmYwNjdhYTcyMTc2ZmJhKSwgQ09OU1Q2NCgweDBhNjM3ZGM1YTJjODk4YTYpLAorCUNPTlNUNjQoMHgxMTNmOTgwNGJlZjkwZGFlKSwgQ09OU1Q2NCgweDFiNzEwYjM1MTMxYzQ3MWIpLAorCUNPTlNUNjQoMHgyOGRiNzdmNTIzMDQ3ZDg0KSwgQ09OU1Q2NCgweDMyY2FhYjdiNDBjNzI0OTMpLAorCUNPTlNUNjQoMHgzYzllYmUwYTE1YzliZWJjKSwgQ09OU1Q2NCgweDQzMWQ2N2M0OWMxMDBkNGMpLAorCUNPTlNUNjQoMHg0Y2M1ZDRiZWNiM2U0MmI2KSwgQ09OU1Q2NCgweDU5N2YyOTljZmM2NTdlMmEpLAorCUNPTlNUNjQoMHg1ZmNiNmZhYjNhZDZmYWVjKSwgQ09OU1Q2NCgweDZjNDQxOThjNGE0NzU4MTcpCit9OworI2RlZmluZSBDaCh4LHkseikgICAgICAgKHogXiAoeCAmICh5IF4geikpKQorI2RlZmluZSBNYWooeCx5LHopICAgICAgKCgoeCB8IHkpICYgeikgfCAoeCAmIHkpKQorI2RlZmluZSBTKHgsIG4pICAgICAgICAgUk9SNjRjKHgsIG4pCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSZDT05TVDY0KDB4RkZGRkZGRkZGRkZGRkZGRikpPj4oKF9fdTY0KW4pKQorI2RlZmluZSBTaWdtYTAoeCkgICAgICAgKFMoeCwgMjgpIF4gUyh4LCAzNCkgXiBTKHgsIDM5KSkKKyNkZWZpbmUgU2lnbWExKHgpICAgICAgIChTKHgsIDE0KSBeIFMoeCwgMTgpIF4gUyh4LCA0MSkpCisjZGVmaW5lIEdhbW1hMCh4KSAgICAgICAoUyh4LCAxKSBeIFMoeCwgOCkgXiBSKHgsIDcpKQorI2RlZmluZSBHYW1tYTEoeCkgICAgICAgKFMoeCwgMTkpIF4gUyh4LCA2MSkgXiBSKHgsIDYpKQorI2RlZmluZSBSTkQoYSxiLGMsZCxlLGYsZyxoLGkpXAorCQl0MCA9IGggKyBTaWdtYTEoZSkgKyBDaChlLCBmLCBnKSArIEtbaV0gKyBXW2ldO1wKKwkJdDEgPSBTaWdtYTAoYSkgKyBNYWooYSwgYiwgYyk7XAorCQlkICs9IHQwO1wKKwkJaCAgPSB0MCArIHQxOworI2RlZmluZSBTVE9SRTY0SCh4LCB5KSBcCisJZG8geyBcCisJCSh5KVswXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj41NikmMjU1KTtcCisJCSh5KVsxXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj40OCkmMjU1KTtcCisJCSh5KVsyXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj40MCkmMjU1KTtcCisJCSh5KVszXSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj4zMikmMjU1KTtcCisJCSh5KVs0XSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj4yNCkmMjU1KTtcCisJCSh5KVs1XSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj4xNikmMjU1KTtcCisJCSh5KVs2XSA9ICh1bnNpZ25lZCBjaGFyKSgoKHgpPj44KSYyNTUpO1wKKwkJKHkpWzddID0gKHVuc2lnbmVkIGNoYXIpKCh4KSYyNTUpOyB9IHdoaWxlKDApCisKKyNkZWZpbmUgTE9BRDY0SCh4LCB5KVwKKwlkbyB7eCA9IFwKKwkJKCgoX191NjQpKCh5KVswXSAmIDI1NSkpIDw8IDU2KSB8XAorCQkoKChfX3U2NCkoKHkpWzFdICYgMjU1KSkgPDwgNDgpIHxcCisJCSgoKF9fdTY0KSgoeSlbMl0gJiAyNTUpKSA8PCA0MCkgfFwKKwkJKCgoX191NjQpKCh5KVszXSAmIDI1NSkpIDw8IDMyKSB8XAorCQkoKChfX3U2NCkoKHkpWzRdICYgMjU1KSkgPDwgMjQpIHxcCisJCSgoKF9fdTY0KSgoeSlbNV0gJiAyNTUpKSA8PCAxNikgfFwKKwkJKCgoX191NjQpKCh5KVs2XSAmIDI1NSkpIDw8IDgpIHxcCisJCSgoKF9fdTY0KSgoeSlbN10gJiAyNTUpKSk7XAorCX0gd2hpbGUoMCkKKworI2RlZmluZSBST1I2NGMoeCwgeSkgXAorICAgICggKCgoKHgpJkNPTlNUNjQoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigoX191NjQpKHkpJkNPTlNUNjQoNjMpKSkgfCBcCisgICAgICAoKHgpPDwoKF9fdTY0KSg2NC0oKHkpJkNPTlNUNjQoNjMpKSkpKSkgJiBDT05TVDY0KDB4RkZGRkZGRkZGRkZGRkZGRikpCisKK3N0cnVjdCBzaGE1MTJfc3RhdGUgeworCV9fdTY0ICBsZW5ndGgsIHN0YXRlWzhdOworCXVuc2lnbmVkIGxvbmcgY3VybGVuOworCXVuc2lnbmVkIGNoYXIgYnVmWzEyOF07Cit9OworCisvKiBUaGlzIGlzIGEgaGlnaGx5IHNpbXBsaWZpZWQgdmVyc2lvbiBmcm9tIGxpYnRvbWNyeXB0ICovCitzdHJ1Y3QgaGFzaF9zdGF0ZSB7CisJc3RydWN0IHNoYTUxMl9zdGF0ZSBzaGE1MTI7Cit9OworCitzdGF0aWMgdm9pZCBzaGE1MTJfY29tcHJlc3Moc3RydWN0IGhhc2hfc3RhdGUgKiBtZCwgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmKQoreworCV9fdTY0IFNbOF0sIFdbODBdLCB0MCwgdDE7CisJaW50IGk7CisKKwkvKiBjb3B5IHN0YXRlIGludG8gUyAqLworCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKwkJU1tpXSA9IG1kLT5zaGE1MTIuc3RhdGVbaV07CisJfQorCisJLyogY29weSB0aGUgc3RhdGUgaW50byAxMDI0LWJpdHMgaW50byBXWzAuLjE1XSAqLworCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisJCUxPQUQ2NEgoV1tpXSwgYnVmICsgKDgqaSkpOworCX0KKworCS8qIGZpbGwgV1sxNi4uNzldICovCisJZm9yIChpID0gMTY7IGkgPCA4MDsgaSsrKSB7CisJCVdbaV0gPSBHYW1tYTEoV1tpIC0gMl0pICsgV1tpIC0gN10gKworCQkJR2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl07CisJfQorCisJZm9yIChpID0gMDsgaSA8IDgwOyBpICs9IDgpIHsKKwkJUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxpKzApOworCQlSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLGkrMSk7CisJCVJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0saSsyKTsKKwkJUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxpKzMpOworCQlSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLGkrNCk7CisJCVJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0saSs1KTsKKwkJUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxpKzYpOworCQlSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLGkrNyk7CisJfQorCisJIC8qIGZlZWRiYWNrICovCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQltZC0+c2hhNTEyLnN0YXRlW2ldID0gbWQtPnNoYTUxMi5zdGF0ZVtpXSArIFNbaV07CisJfQorfQorCitzdGF0aWMgdm9pZCBzaGE1MTJfaW5pdChzdHJ1Y3QgaGFzaF9zdGF0ZSAqIG1kKQoreworCW1kLT5zaGE1MTIuY3VybGVuID0gMDsKKwltZC0+c2hhNTEyLmxlbmd0aCA9IDA7CisJbWQtPnNoYTUxMi5zdGF0ZVswXSA9IENPTlNUNjQoMHg2YTA5ZTY2N2YzYmNjOTA4KTsKKwltZC0+c2hhNTEyLnN0YXRlWzFdID0gQ09OU1Q2NCgweGJiNjdhZTg1ODRjYWE3M2IpOworCW1kLT5zaGE1MTIuc3RhdGVbMl0gPSBDT05TVDY0KDB4M2M2ZWYzNzJmZTk0ZjgyYik7CisJbWQtPnNoYTUxMi5zdGF0ZVszXSA9IENPTlNUNjQoMHhhNTRmZjUzYTVmMWQzNmYxKTsKKwltZC0+c2hhNTEyLnN0YXRlWzRdID0gQ09OU1Q2NCgweDUxMGU1MjdmYWRlNjgyZDEpOworCW1kLT5zaGE1MTIuc3RhdGVbNV0gPSBDT05TVDY0KDB4OWIwNTY4OGMyYjNlNmMxZik7CisJbWQtPnNoYTUxMi5zdGF0ZVs2XSA9IENPTlNUNjQoMHgxZjgzZDlhYmZiNDFiZDZiKTsKKwltZC0+c2hhNTEyLnN0YXRlWzddID0gQ09OU1Q2NCgweDViZTBjZDE5MTM3ZTIxNzkpOworfQorCitzdGF0aWMgdm9pZCBzaGE1MTJfZG9uZShzdHJ1Y3QgaGFzaF9zdGF0ZSAqIG1kLCB1bnNpZ25lZCBjaGFyICpvdXQpCit7CisJaW50IGk7CisKKwkvKiBpbmNyZWFzZSB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlICovCisJbWQtPnNoYTUxMi5sZW5ndGggKz0gbWQtPnNoYTUxMi5jdXJsZW4gKiBDT05TVDY0KDgpOworCisJLyogYXBwZW5kIHRoZSAnMScgYml0ICovCisJbWQtPnNoYTUxMi5idWZbbWQtPnNoYTUxMi5jdXJsZW4rK10gPSAodW5zaWduZWQgY2hhcikweDgwOworCisJLyogaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgYWJvdmUgMTEyIGJ5dGVzIHdlIGFwcGVuZCB6ZXJvcyB0aGVuCisJICogY29tcHJlc3MuIFRoZW4gd2UgY2FuIGZhbGwgYmFjayB0byBwYWRkaW5nIHplcm9zIGFuZCBsZW5ndGggZW5jb2RpbmcKKwkgKiBsaWtlIG5vcm1hbC4gKi8KKwlpZiAobWQtPnNoYTUxMi5jdXJsZW4gPiAxMTIpIHsKKwkJd2hpbGUgKG1kLT5zaGE1MTIuY3VybGVuIDwgMTI4KSB7CisJCQltZC0+c2hhNTEyLmJ1ZlttZC0+c2hhNTEyLmN1cmxlbisrXSA9ICh1bnNpZ25lZCBjaGFyKTA7CisJCX0KKwkJc2hhNTEyX2NvbXByZXNzKG1kLCBtZC0+c2hhNTEyLmJ1Zik7CisJCW1kLT5zaGE1MTIuY3VybGVuID0gMDsKKwl9CisKKwkvKiBwYWQgdXB0byAxMjAgYnl0ZXMgb2YgemVyb2VzIG5vdGU6IHRoYXQgZnJvbSAxMTIgdG8gMTIwIGlzIHRoZSA2NCBNU0IKKwkgKiBvZiB0aGUgbGVuZ3RoLiBXZSBhc3N1bWUgdGhhdCB5b3Ugd29uJ3QgaGFzaCA+IDJeNjQgYml0cyBvZiBkYXRhLiAqLworCXdoaWxlIChtZC0+c2hhNTEyLmN1cmxlbiA8IDEyMCkgeworCQltZC0+c2hhNTEyLmJ1ZlttZC0+c2hhNTEyLmN1cmxlbisrXSA9ICh1bnNpZ25lZCBjaGFyKTA7CisJfQorCisJLyogc3RvcmUgbGVuZ3RoICovCisJU1RPUkU2NEgobWQtPnNoYTUxMi5sZW5ndGgsIG1kLT5zaGE1MTIuYnVmICsgMTIwKTsKKwlzaGE1MTJfY29tcHJlc3MobWQsIG1kLT5zaGE1MTIuYnVmKTsKKworCS8qIGNvcHkgb3V0cHV0ICovCisJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgeworCQlTVE9SRTY0SChtZC0+c2hhNTEyLnN0YXRlW2ldLCBvdXQrKDggKiBpKSk7CisJfQorfQorCisjZGVmaW5lIE1JTih4LCB5KSAoICgoeCk8KHkpKT8oeCk6KHkpICkKKyNkZWZpbmUgU0hBNTEyX0JMT0NLU0laRSAxMjgKK3N0YXRpYyB2b2lkIHNoYTUxMl9wcm9jZXNzKHN0cnVjdCBoYXNoX3N0YXRlICogbWQsCisJCQkgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgaW5sZW4pCit7CisJdW5zaWduZWQgbG9uZyBuOworCisJd2hpbGUgKGlubGVuID4gMCkgeworCQlpZiAobWQtPnNoYTUxMi5jdXJsZW4gPT0gMCAmJiBpbmxlbiA+PSBTSEE1MTJfQkxPQ0tTSVpFKSB7CisJCQlzaGE1MTJfY29tcHJlc3MobWQsIGluKTsKKwkJCW1kLT5zaGE1MTIubGVuZ3RoICs9IFNIQTUxMl9CTE9DS1NJWkUgKiA4OworCQkJaW4gKz0gU0hBNTEyX0JMT0NLU0laRTsKKwkJCWlubGVuIC09IFNIQTUxMl9CTE9DS1NJWkU7CisJCX0gZWxzZSB7CisJCQluID0gTUlOKGlubGVuLCAoU0hBNTEyX0JMT0NLU0laRSAtIG1kLT5zaGE1MTIuY3VybGVuKSk7CisJCQltZW1jcHkobWQtPnNoYTUxMi5idWYgKyBtZC0+c2hhNTEyLmN1cmxlbiwKKwkJCSAgICAgICBpbiwgKHNpemVfdCluKTsKKwkJCW1kLT5zaGE1MTIuY3VybGVuICs9IG47CisJCQlpbiArPSBuOworCQkJaW5sZW4gLT0gbjsKKwkJCWlmIChtZC0+c2hhNTEyLmN1cmxlbiA9PSBTSEE1MTJfQkxPQ0tTSVpFKSB7CisJCQkJc2hhNTEyX2NvbXByZXNzKG1kLCBtZC0+c2hhNTEyLmJ1Zik7CisJCQkJbWQtPnNoYTUxMi5sZW5ndGggKz0gU0hBNTEyX0JMT0NLU0laRSAqIDg7CisJCQkJbWQtPnNoYTUxMi5jdXJsZW4gPSAwOworCQkJfQorCQl9CisJfQorfQorCit2b2lkIGV4dDJmc19zaGE1MTIoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVkIGxvbmcgaW5fc2l6ZSwKKwkJICAgdW5zaWduZWQgY2hhciBvdXRbRVhUMkZTX1NIQTUxMl9MRU5HVEhdKQoreworCXN0cnVjdCBoYXNoX3N0YXRlIG1kOworCisJc2hhNTEyX2luaXQoJm1kKTsKKwlzaGE1MTJfcHJvY2VzcygmbWQsIGluLCBpbl9zaXplKTsKKwlzaGE1MTJfZG9uZSgmbWQsIG91dCk7Cit9CisKKyNpZmRlZiBVTklUVEVTVAorc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJY2hhciAqbXNnOworCXVuc2lnbmVkIGNoYXIgaGFzaFs2NF07Cit9IHRlc3RzW10gPSB7CisJeyAiIiwKKwkgIHsgMHhjZiwgMHg4MywgMHhlMSwgMHgzNSwgMHg3ZSwgMHhlZiwgMHhiOCwgMHhiZCwKKwkgICAgMHhmMSwgMHg1NCwgMHgyOCwgMHg1MCwgMHhkNiwgMHg2ZCwgMHg4MCwgMHgwNywKKwkgICAgMHhkNiwgMHgyMCwgMHhlNCwgMHgwNSwgMHgwYiwgMHg1NywgMHgxNSwgMHhkYywKKwkgICAgMHg4MywgMHhmNCwgMHhhOSwgMHgyMSwgMHhkMywgMHg2YywgMHhlOSwgMHhjZSwKKwkgICAgMHg0NywgMHhkMCwgMHhkMSwgMHgzYywgMHg1ZCwgMHg4NSwgMHhmMiwgMHhiMCwKKwkgICAgMHhmZiwgMHg4MywgMHgxOCwgMHhkMiwgMHg4NywgMHg3ZSwgMHhlYywgMHgyZiwKKwkgICAgMHg2MywgMHhiOSwgMHgzMSwgMHhiZCwgMHg0NywgMHg0MSwgMHg3YSwgMHg4MSwKKwkgICAgMHhhNSwgMHgzOCwgMHgzMiwgMHg3YSwgMHhmOSwgMHgyNywgMHhkYSwgMHgzZSB9CisJfSwKKwl7ICJhYmMiLAorCSAgeyAweGRkLCAweGFmLCAweDM1LCAweGExLCAweDkzLCAweDYxLCAweDdhLCAweGJhLAorCSAgICAweGNjLCAweDQxLCAweDczLCAweDQ5LCAweGFlLCAweDIwLCAweDQxLCAweDMxLAorCSAgICAweDEyLCAweGU2LCAweGZhLCAweDRlLCAweDg5LCAweGE5LCAweDdlLCAweGEyLAorCSAgICAweDBhLCAweDllLCAweGVlLCAweGU2LCAweDRiLCAweDU1LCAweGQzLCAweDlhLAorCSAgICAweDIxLCAweDkyLCAweDk5LCAweDJhLCAweDI3LCAweDRmLCAweGMxLCAweGE4LAorCSAgICAweDM2LCAweGJhLCAweDNjLCAweDIzLCAweGEzLCAweGZlLCAweGViLCAweGJkLAorCSAgICAweDQ1LCAweDRkLCAweDQ0LCAweDIzLCAweDY0LCAweDNjLCAweGU4LCAweDBlLAorCSAgICAweDJhLCAweDlhLCAweGM5LCAweDRmLCAweGE1LCAweDRjLCAweGE0LCAweDlmIH0KKwl9LAorCXsgImFiY2RlZmdoYmNkZWZnaGljZGVmZ2hpamRlZmdoaWprZWZnaGlqa2xmZ2hpamtsbWdoaWprbG1uaGlqa2xtbm9pamtsbW5vcGprbG1ub3Bxa2xtbm9wcXJsbW5vcHFyc21ub3BxcnN0bm9wcXJzdHUiLAorCSAgeyAweDhlLCAweDk1LCAweDliLCAweDc1LCAweGRhLCAweGUzLCAweDEzLCAweGRhLAorCSAgICAweDhjLCAweGY0LCAweGY3LCAweDI4LCAweDE0LCAweGZjLCAweDE0LCAweDNmLAorCSAgICAweDhmLCAweDc3LCAweDc5LCAweGM2LCAweGViLCAweDlmLCAweDdmLCAweGExLAorCSAgICAweDcyLCAweDk5LCAweGFlLCAweGFkLCAweGI2LCAweDg4LCAweDkwLCAweDE4LAorCSAgICAweDUwLCAweDFkLCAweDI4LCAweDllLCAweDQ5LCAweDAwLCAweGY3LCAweGU0LAorCSAgICAweDMzLCAweDFiLCAweDk5LCAweGRlLCAweGM0LCAweGI1LCAweDQzLCAweDNhLAorCSAgICAweGM3LCAweGQzLCAweDI5LCAweGVlLCAweGI2LCAweGRkLCAweDI2LCAweDU0LAorCSAgICAweDVlLCAweDk2LCAweGU1LCAweDViLCAweDg3LCAweDRiLCAweGU5LCAweDA5IH0KKwl9LAorfTsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBpOworCWludCBlcnJvcnMgPSAwOworCXVuc2lnbmVkIGNoYXIgdG1wWzY0XTsKKwlzdHJ1Y3QgaGFzaF9zdGF0ZSBtZDsKKworCWZvciAoaSA9IDA7IGkgPCAoaW50KShzaXplb2YodGVzdHMpIC8gc2l6ZW9mKHRlc3RzWzBdKSk7IGkrKykgeworCQl1bnNpZ25lZCBjaGFyICptc2cgPSAodW5zaWduZWQgY2hhciAqKSB0ZXN0c1tpXS5tc2c7CisJCWludCBsZW4gPSBzdHJsZW4odGVzdHNbaV0ubXNnKTsKKworCQlleHQyZnNfc2hhNTEyKG1zZywgbGVuLCB0bXApOworCQlwcmludGYoIlNIQTUxMiB0ZXN0IG1lc3NhZ2UgJWQ6ICIsIGkpOworCQlpZiAobWVtY21wKHRtcCwgdGVzdHNbaV0uaGFzaCwgNjQpICE9IDApIHsKKwkJCXByaW50ZigiRkFJTEVEXG4iKTsKKwkJCWVycm9ycysrOworCQl9IGVsc2UKKwkJCXByaW50ZigiT0tcbiIpOworCX0KKwlyZXR1cm4gZXJyb3JzOworfQorCisjZW5kaWYgLyogVU5JVFRFU1QgKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3N3YXBmcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvc3dhcGZzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYzZmM1NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3N3YXBmcy5jCkBAIC0wLDAgKzEsNDQ3IEBACisvKgorICogc3dhcGZzLmMgLS0tIHN3YXAgZXh0MiBmaWxlc3lzdGVtIGRhdGEgc3RydWN0dXJlcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMjAwMiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgPGV4dDJmcy9leHQyX2V4dF9hdHRyLmg+CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KK3ZvaWQgZXh0MmZzX3N3YXBfc3VwZXIoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKiBzYikKK3sKKyAgCWludCBpOworCXNiLT5zX2lub2Rlc19jb3VudCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfaW5vZGVzX2NvdW50KTsKKwlzYi0+c19ibG9ja3NfY291bnQgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2Jsb2Nrc19jb3VudCk7CisJc2ItPnNfcl9ibG9ja3NfY291bnQgPSBleHQyZnNfc3dhYjMyKHNiLT5zX3JfYmxvY2tzX2NvdW50KTsKKwlzYi0+c19mcmVlX2Jsb2Nrc19jb3VudCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfZnJlZV9ibG9ja3NfY291bnQpOworCXNiLT5zX2ZyZWVfaW5vZGVzX2NvdW50ID0gZXh0MmZzX3N3YWIzMihzYi0+c19mcmVlX2lub2Rlc19jb3VudCk7CisJc2ItPnNfZmlyc3RfZGF0YV9ibG9jayA9IGV4dDJmc19zd2FiMzIoc2ItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJc2ItPnNfbG9nX2Jsb2NrX3NpemUgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2xvZ19ibG9ja19zaXplKTsKKwlzYi0+c19sb2dfY2x1c3Rlcl9zaXplID0gZXh0MmZzX3N3YWIzMihzYi0+c19sb2dfY2x1c3Rlcl9zaXplKTsKKwlzYi0+c19ibG9ja3NfcGVyX2dyb3VwID0gZXh0MmZzX3N3YWIzMihzYi0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKwlzYi0+c19jbHVzdGVyc19wZXJfZ3JvdXAgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2NsdXN0ZXJzX3Blcl9ncm91cCk7CisJc2ItPnNfaW5vZGVzX3Blcl9ncm91cCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfaW5vZGVzX3Blcl9ncm91cCk7CisJc2ItPnNfbXRpbWUgPSBleHQyZnNfc3dhYjMyKHNiLT5zX210aW1lKTsKKwlzYi0+c193dGltZSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfd3RpbWUpOworCXNiLT5zX21udF9jb3VudCA9IGV4dDJmc19zd2FiMTYoc2ItPnNfbW50X2NvdW50KTsKKwlzYi0+c19tYXhfbW50X2NvdW50ID0gZXh0MmZzX3N3YWIxNihzYi0+c19tYXhfbW50X2NvdW50KTsKKwlzYi0+c19tYWdpYyA9IGV4dDJmc19zd2FiMTYoc2ItPnNfbWFnaWMpOworCXNiLT5zX3N0YXRlID0gZXh0MmZzX3N3YWIxNihzYi0+c19zdGF0ZSk7CisJc2ItPnNfZXJyb3JzID0gZXh0MmZzX3N3YWIxNihzYi0+c19lcnJvcnMpOworCXNiLT5zX21pbm9yX3Jldl9sZXZlbCA9IGV4dDJmc19zd2FiMTYoc2ItPnNfbWlub3JfcmV2X2xldmVsKTsKKwlzYi0+c19sYXN0Y2hlY2sgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2xhc3RjaGVjayk7CisJc2ItPnNfY2hlY2tpbnRlcnZhbCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfY2hlY2tpbnRlcnZhbCk7CisJc2ItPnNfY3JlYXRvcl9vcyA9IGV4dDJmc19zd2FiMzIoc2ItPnNfY3JlYXRvcl9vcyk7CisJc2ItPnNfcmV2X2xldmVsID0gZXh0MmZzX3N3YWIzMihzYi0+c19yZXZfbGV2ZWwpOworCXNiLT5zX2RlZl9yZXN1aWQgPSBleHQyZnNfc3dhYjE2KHNiLT5zX2RlZl9yZXN1aWQpOworCXNiLT5zX2RlZl9yZXNnaWQgPSBleHQyZnNfc3dhYjE2KHNiLT5zX2RlZl9yZXNnaWQpOworCXNiLT5zX2ZpcnN0X2lubyA9IGV4dDJmc19zd2FiMzIoc2ItPnNfZmlyc3RfaW5vKTsKKwlzYi0+c19pbm9kZV9zaXplID0gZXh0MmZzX3N3YWIxNihzYi0+c19pbm9kZV9zaXplKTsKKwlzYi0+c19ibG9ja19ncm91cF9uciA9IGV4dDJmc19zd2FiMTYoc2ItPnNfYmxvY2tfZ3JvdXBfbnIpOworCXNiLT5zX2ZlYXR1cmVfY29tcGF0ID0gZXh0MmZzX3N3YWIzMihzYi0+c19mZWF0dXJlX2NvbXBhdCk7CisJc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCk7CisJc2ItPnNfZmVhdHVyZV9yb19jb21wYXQgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2ZlYXR1cmVfcm9fY29tcGF0KTsKKwlzYi0+c19hbGdvcml0aG1fdXNhZ2VfYml0bWFwID0gZXh0MmZzX3N3YWIzMihzYi0+c19hbGdvcml0aG1fdXNhZ2VfYml0bWFwKTsKKwlzYi0+c19yZXNlcnZlZF9nZHRfYmxvY2tzID0gZXh0MmZzX3N3YWIxNihzYi0+c19yZXNlcnZlZF9nZHRfYmxvY2tzKTsKKwlzYi0+c19qb3VybmFsX2ludW0gPSBleHQyZnNfc3dhYjMyKHNiLT5zX2pvdXJuYWxfaW51bSk7CisJc2ItPnNfam91cm5hbF9kZXYgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2pvdXJuYWxfZGV2KTsKKwlzYi0+c19sYXN0X29ycGhhbiA9IGV4dDJmc19zd2FiMzIoc2ItPnNfbGFzdF9vcnBoYW4pOworCXNiLT5zX2Rlc2Nfc2l6ZSA9IGV4dDJmc19zd2FiMTYoc2ItPnNfZGVzY19zaXplKTsKKwlzYi0+c19kZWZhdWx0X21vdW50X29wdHMgPSBleHQyZnNfc3dhYjMyKHNiLT5zX2RlZmF1bHRfbW91bnRfb3B0cyk7CisJc2ItPnNfZmlyc3RfbWV0YV9iZyA9IGV4dDJmc19zd2FiMzIoc2ItPnNfZmlyc3RfbWV0YV9iZyk7CisJc2ItPnNfbWtmc190aW1lID0gZXh0MmZzX3N3YWIzMihzYi0+c19ta2ZzX3RpbWUpOworCXNiLT5zX2Jsb2Nrc19jb3VudF9oaSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfYmxvY2tzX2NvdW50X2hpKTsKKwlzYi0+c19yX2Jsb2Nrc19jb3VudF9oaSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfcl9ibG9ja3NfY291bnRfaGkpOworCXNiLT5zX2ZyZWVfYmxvY2tzX2hpID0gZXh0MmZzX3N3YWIzMihzYi0+c19mcmVlX2Jsb2Nrc19oaSk7CisJc2ItPnNfbWluX2V4dHJhX2lzaXplID0gZXh0MmZzX3N3YWIxNihzYi0+c19taW5fZXh0cmFfaXNpemUpOworCXNiLT5zX3dhbnRfZXh0cmFfaXNpemUgPSBleHQyZnNfc3dhYjE2KHNiLT5zX3dhbnRfZXh0cmFfaXNpemUpOworCXNiLT5zX2ZsYWdzID0gZXh0MmZzX3N3YWIzMihzYi0+c19mbGFncyk7CisJc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCA9IGV4dDJmc19zd2FiMTYoc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCk7CisJc2ItPnNfbW1wX2Jsb2NrID0gZXh0MmZzX3N3YWI2NChzYi0+c19tbXBfYmxvY2spOworCXNiLT5zX2tieXRlc193cml0dGVuID0gZXh0MmZzX3N3YWI2NChzYi0+c19rYnl0ZXNfd3JpdHRlbik7CisJc2ItPnNfc25hcHNob3RfaW51bSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfc25hcHNob3RfaW51bSk7CisJc2ItPnNfc25hcHNob3RfaWQgPSBleHQyZnNfc3dhYjMyKHNiLT5zX3NuYXBzaG90X2lkKTsKKwlzYi0+c19zbmFwc2hvdF9yX2Jsb2Nrc19jb3VudCA9CisJCWV4dDJmc19zd2FiNjQoc2ItPnNfc25hcHNob3Rfcl9ibG9ja3NfY291bnQpOworCXNiLT5zX3NuYXBzaG90X2xpc3QgPSBleHQyZnNfc3dhYjMyKHNiLT5zX3NuYXBzaG90X2xpc3QpOworCXNiLT5zX3Vzcl9xdW90YV9pbnVtID0gZXh0MmZzX3N3YWIzMihzYi0+c191c3JfcXVvdGFfaW51bSk7CisJc2ItPnNfZ3JwX3F1b3RhX2ludW0gPSBleHQyZnNfc3dhYjMyKHNiLT5zX2dycF9xdW90YV9pbnVtKTsKKwlzYi0+c19vdmVyaGVhZF9ibG9ja3MgPSBleHQyZnNfc3dhYjMyKHNiLT5zX292ZXJoZWFkX2Jsb2Nrcyk7CisJc2ItPnNfY2hlY2tzdW0gPSBleHQyZnNfc3dhYjMyKHNiLT5zX2NoZWNrc3VtKTsKKworCWZvciAoaT0wOyBpIDwgNDsgaSsrKQorCQlzYi0+c19oYXNoX3NlZWRbaV0gPSBleHQyZnNfc3dhYjMyKHNiLT5zX2hhc2hfc2VlZFtpXSk7CisKKwkvKiBpZiBqb3VybmFsIGJhY2t1cCBpcyBmb3IgYSB2YWxpZCBleHRlbnQtYmFzZWQgam91cm5hbC4uLiAqLworCWlmIChleHQyZnNfZXh0ZW50X2hlYWRlcl92ZXJpZnkoc2ItPnNfam5sX2Jsb2NrcywKKwkJCQkJc2l6ZW9mKHNiLT5zX2pubF9ibG9ja3MpKSA9PSAwKSB7CisJCS8qIC4uLiBzd2FwIG9ubHkgdGhlIGpvdXJuYWwgaV9zaXplIGFuZCBpX3NpemVfaGlnaCwKKwkJICogYW5kIHRoZSBleHRlbnQgZGF0YSBpcyBub3Qgc3dhcHBlZCBvbiByZWFkICovCisJCWkgPSAxNTsKKwl9IGVsc2UgeworCQkvKiBkaXJlY3QvaW5kaXJlY3Qgam91cm5hbDogc3dhcCBpdCBhbGwgKi8KKwkJaSA9IDA7CisJfQorCWZvciAoOyBpIDwgMTc7IGkrKykKKwkJc2ItPnNfam5sX2Jsb2Nrc1tpXSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfam5sX2Jsb2Nrc1tpXSk7CisJc2ItPnNfYmFja3VwX2Jnc1swXSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfYmFja3VwX2Jnc1swXSk7CisJc2ItPnNfYmFja3VwX2Jnc1sxXSA9IGV4dDJmc19zd2FiMzIoc2ItPnNfYmFja3VwX2Jnc1sxXSk7CisJc2ItPnNfY2hlY2tzdW1fc2VlZCA9IGV4dDJmc19zd2FiMzIoc2ItPnNfY2hlY2tzdW1fc2VlZCk7Cit9CisKK3ZvaWQgZXh0MmZzX3N3YXBfZ3JvdXBfZGVzYzIoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgKmdkcCkKK3sKKwlzdHJ1Y3QgZXh0NF9ncm91cF9kZXNjICpnZHA0ID0gKHN0cnVjdCBleHQ0X2dyb3VwX2Rlc2MgKilnZHA7CisKKwkvKiBEbyB0aGUgMzItYml0IHBhcnRzIGZpcnN0ICovCisJZ2RwLT5iZ19ibG9ja19iaXRtYXAgPSBleHQyZnNfc3dhYjMyKGdkcC0+YmdfYmxvY2tfYml0bWFwKTsKKwlnZHAtPmJnX2lub2RlX2JpdG1hcCA9IGV4dDJmc19zd2FiMzIoZ2RwLT5iZ19pbm9kZV9iaXRtYXApOworCWdkcC0+YmdfaW5vZGVfdGFibGUgPSBleHQyZnNfc3dhYjMyKGdkcC0+YmdfaW5vZGVfdGFibGUpOworCWdkcC0+YmdfZnJlZV9ibG9ja3NfY291bnQgPSBleHQyZnNfc3dhYjE2KGdkcC0+YmdfZnJlZV9ibG9ja3NfY291bnQpOworCWdkcC0+YmdfZnJlZV9pbm9kZXNfY291bnQgPSBleHQyZnNfc3dhYjE2KGdkcC0+YmdfZnJlZV9pbm9kZXNfY291bnQpOworCWdkcC0+YmdfdXNlZF9kaXJzX2NvdW50ID0gZXh0MmZzX3N3YWIxNihnZHAtPmJnX3VzZWRfZGlyc19jb3VudCk7CisJZ2RwLT5iZ19mbGFncyA9IGV4dDJmc19zd2FiMTYoZ2RwLT5iZ19mbGFncyk7CisJZ2RwLT5iZ19leGNsdWRlX2JpdG1hcF9sbyA9IGV4dDJmc19zd2FiMzIoZ2RwLT5iZ19leGNsdWRlX2JpdG1hcF9sbyk7CisJZ2RwLT5iZ19ibG9ja19iaXRtYXBfY3N1bV9sbyA9CisJCWV4dDJmc19zd2FiMTYoZ2RwLT5iZ19ibG9ja19iaXRtYXBfY3N1bV9sbyk7CisJZ2RwLT5iZ19pbm9kZV9iaXRtYXBfY3N1bV9sbyA9CisJCWV4dDJmc19zd2FiMTYoZ2RwLT5iZ19pbm9kZV9iaXRtYXBfY3N1bV9sbyk7CisJZ2RwLT5iZ19pdGFibGVfdW51c2VkID0gZXh0MmZzX3N3YWIxNihnZHAtPmJnX2l0YWJsZV91bnVzZWQpOworCWdkcC0+YmdfY2hlY2tzdW0gPSBleHQyZnNfc3dhYjE2KGdkcC0+YmdfY2hlY2tzdW0pOworCS8qIElmIHdlJ3JlIDMyLWJpdCwgd2UncmUgZG9uZSAqLworCWlmIChmcyA9PSBOVUxMIHx8IEVYVDJfREVTQ19TSVpFKGZzLT5zdXBlcikgPCBFWFQyX01JTl9ERVNDX1NJWkVfNjRCSVQpCisJCXJldHVybjsKKworCS8qIFN3YXAgdGhlIDY0LWJpdCBwYXJ0cyAqLworCWdkcDQtPmJnX2Jsb2NrX2JpdG1hcF9oaSA9IGV4dDJmc19zd2FiMzIoZ2RwNC0+YmdfYmxvY2tfYml0bWFwX2hpKTsKKwlnZHA0LT5iZ19pbm9kZV9iaXRtYXBfaGkgPSBleHQyZnNfc3dhYjMyKGdkcDQtPmJnX2lub2RlX2JpdG1hcF9oaSk7CisJZ2RwNC0+YmdfaW5vZGVfdGFibGVfaGkgPSBleHQyZnNfc3dhYjMyKGdkcDQtPmJnX2lub2RlX3RhYmxlX2hpKTsKKwlnZHA0LT5iZ19mcmVlX2Jsb2Nrc19jb3VudF9oaSA9CisJCWV4dDJmc19zd2FiMTYoZ2RwNC0+YmdfZnJlZV9ibG9ja3NfY291bnRfaGkpOworCWdkcDQtPmJnX2ZyZWVfaW5vZGVzX2NvdW50X2hpID0KKwkJZXh0MmZzX3N3YWIxNihnZHA0LT5iZ19mcmVlX2lub2Rlc19jb3VudF9oaSk7CisJZ2RwNC0+YmdfdXNlZF9kaXJzX2NvdW50X2hpID0KKwkJZXh0MmZzX3N3YWIxNihnZHA0LT5iZ191c2VkX2RpcnNfY291bnRfaGkpOworCWdkcDQtPmJnX2l0YWJsZV91bnVzZWRfaGkgPSBleHQyZnNfc3dhYjE2KGdkcDQtPmJnX2l0YWJsZV91bnVzZWRfaGkpOworCWdkcDQtPmJnX2V4Y2x1ZGVfYml0bWFwX2hpID0gZXh0MmZzX3N3YWIxNihnZHA0LT5iZ19leGNsdWRlX2JpdG1hcF9oaSk7CisJZ2RwNC0+YmdfYmxvY2tfYml0bWFwX2NzdW1faGkgPQorCQlleHQyZnNfc3dhYjE2KGdkcDQtPmJnX2Jsb2NrX2JpdG1hcF9jc3VtX2hpKTsKKwlnZHA0LT5iZ19pbm9kZV9iaXRtYXBfY3N1bV9oaSA9CisJCWV4dDJmc19zd2FiMTYoZ2RwNC0+YmdfaW5vZGVfYml0bWFwX2NzdW1faGkpOworfQorCit2b2lkIGV4dDJmc19zd2FwX2dyb3VwX2Rlc2Moc3RydWN0IGV4dDJfZ3JvdXBfZGVzYyAqZ2RwKQoreworCWV4dDJmc19zd2FwX2dyb3VwX2Rlc2MyKDAsIGdkcCk7Cit9CisKKwordm9pZCBleHQyZnNfc3dhcF9leHRfYXR0cl9oZWFkZXIoc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICp0b19oZWFkZXIsCisJCQkJIHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqZnJvbV9oZWFkZXIpCit7CisJaW50IG47CisKKwl0b19oZWFkZXItPmhfbWFnaWMgICAgPSBleHQyZnNfc3dhYjMyKGZyb21faGVhZGVyLT5oX21hZ2ljKTsKKwl0b19oZWFkZXItPmhfYmxvY2tzICAgPSBleHQyZnNfc3dhYjMyKGZyb21faGVhZGVyLT5oX2Jsb2Nrcyk7CisJdG9faGVhZGVyLT5oX3JlZmNvdW50ID0gZXh0MmZzX3N3YWIzMihmcm9tX2hlYWRlci0+aF9yZWZjb3VudCk7CisJdG9faGVhZGVyLT5oX2hhc2ggICAgID0gZXh0MmZzX3N3YWIzMihmcm9tX2hlYWRlci0+aF9oYXNoKTsKKwl0b19oZWFkZXItPmhfY2hlY2tzdW0gPSBleHQyZnNfc3dhYjMyKGZyb21faGVhZGVyLT5oX2NoZWNrc3VtKTsKKwlmb3IgKG4gPSAwOyBuIDwgMzsgbisrKQorCQl0b19oZWFkZXItPmhfcmVzZXJ2ZWRbbl0gPQorCQkJZXh0MmZzX3N3YWIzMihmcm9tX2hlYWRlci0+aF9yZXNlcnZlZFtuXSk7Cit9CisKK3ZvaWQgZXh0MmZzX3N3YXBfZXh0X2F0dHJfZW50cnkoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKnRvX2VudHJ5LAorCQkJCXN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICpmcm9tX2VudHJ5KQoreworCXRvX2VudHJ5LT5lX3ZhbHVlX29mZnMgID0gZXh0MmZzX3N3YWIxNihmcm9tX2VudHJ5LT5lX3ZhbHVlX29mZnMpOworCXRvX2VudHJ5LT5lX3ZhbHVlX2Jsb2NrID0gZXh0MmZzX3N3YWIzMihmcm9tX2VudHJ5LT5lX3ZhbHVlX2Jsb2NrKTsKKwl0b19lbnRyeS0+ZV92YWx1ZV9zaXplICA9IGV4dDJmc19zd2FiMzIoZnJvbV9lbnRyeS0+ZV92YWx1ZV9zaXplKTsKKwl0b19lbnRyeS0+ZV9oYXNoCT0gZXh0MmZzX3N3YWIzMihmcm9tX2VudHJ5LT5lX2hhc2gpOworfQorCit2b2lkIGV4dDJmc19zd2FwX2V4dF9hdHRyKGNoYXIgKnRvLCBjaGFyICpmcm9tLCBpbnQgYnVmc2l6ZSwgaW50IGhhc19oZWFkZXIpCit7CisJc3RydWN0IGV4dDJfZXh0X2F0dHJfaGVhZGVyICpmcm9tX2hlYWRlciA9CisJCShzdHJ1Y3QgZXh0Ml9leHRfYXR0cl9oZWFkZXIgKilmcm9tOworCXN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqdG9faGVhZGVyID0KKwkJKHN0cnVjdCBleHQyX2V4dF9hdHRyX2hlYWRlciAqKXRvOworCXN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICpmcm9tX2VudHJ5LCAqdG9fZW50cnk7CisJY2hhciAqZnJvbV9lbmQgPSAoY2hhciAqKWZyb21faGVhZGVyICsgYnVmc2l6ZTsKKworCWlmICh0b19oZWFkZXIgIT0gZnJvbV9oZWFkZXIpCisJCW1lbWNweSh0b19oZWFkZXIsIGZyb21faGVhZGVyLCBidWZzaXplKTsKKworCWlmIChoYXNfaGVhZGVyKSB7CisJCWV4dDJmc19zd2FwX2V4dF9hdHRyX2hlYWRlcih0b19oZWFkZXIsIGZyb21faGVhZGVyKTsKKworCQlmcm9tX2VudHJ5ID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopKGZyb21faGVhZGVyKzEpOworCQl0b19lbnRyeSAgID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopKHRvX2hlYWRlcisxKTsKKwl9IGVsc2UgeworCQlmcm9tX2VudHJ5ID0gKHN0cnVjdCBleHQyX2V4dF9hdHRyX2VudHJ5ICopZnJvbV9oZWFkZXI7CisJCXRvX2VudHJ5ICAgPSAoc3RydWN0IGV4dDJfZXh0X2F0dHJfZW50cnkgKil0b19oZWFkZXI7CisJfQorCisJd2hpbGUgKChjaGFyICopZnJvbV9lbnRyeSA8IGZyb21fZW5kICYmCisJICAgICAgIChjaGFyICopRVhUMl9FWFRfQVRUUl9ORVhUKGZyb21fZW50cnkpIDw9IGZyb21fZW5kICYmCisJICAgICAgICooX191MzIgKilmcm9tX2VudHJ5KSB7CisJCWV4dDJmc19zd2FwX2V4dF9hdHRyX2VudHJ5KHRvX2VudHJ5LCBmcm9tX2VudHJ5KTsKKwkJZnJvbV9lbnRyeSA9IEVYVDJfRVhUX0FUVFJfTkVYVChmcm9tX2VudHJ5KTsKKwkJdG9fZW50cnkgICA9IEVYVDJfRVhUX0FUVFJfTkVYVCh0b19lbnRyeSk7CisJfQorfQorCit2b2lkIGV4dDJmc19zd2FwX2lub2RlX2Z1bGwoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICp0LAorCQkJICAgIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICpmLCBpbnQgaG9zdG9yZGVyLAorCQkJICAgIGludCBidWZzaXplKQoreworCXVuc2lnbmVkIGksIGhhc19kYXRhX2Jsb2NrcywgZXh0cmFfaXNpemUsIGF0dHJfbWFnaWM7CisJaW50IGhhc19leHRlbnRzID0gMDsKKwlpbnQgaGFzX2lubGluZV9kYXRhID0gMDsKKwlpbnQgaXNsbmsgPSAwOworCWludCBpbm9kZV9zaXplOworCV9fdTMyICplYWYsICplYXQ7CisKKwlpZiAoaG9zdG9yZGVyICYmIExJTlVYX1NfSVNMTksoZi0+aV9tb2RlKSkKKwkJaXNsbmsgPSAxOworCXQtPmlfbW9kZSA9IGV4dDJmc19zd2FiMTYoZi0+aV9tb2RlKTsKKwlpZiAoIWhvc3RvcmRlciAmJiBMSU5VWF9TX0lTTE5LKHQtPmlfbW9kZSkpCisJCWlzbG5rID0gMTsKKwl0LT5pX3VpZCA9IGV4dDJmc19zd2FiMTYoZi0+aV91aWQpOworCXQtPmlfc2l6ZSA9IGV4dDJmc19zd2FiMzIoZi0+aV9zaXplKTsKKwl0LT5pX2F0aW1lID0gZXh0MmZzX3N3YWIzMihmLT5pX2F0aW1lKTsKKwl0LT5pX2N0aW1lID0gZXh0MmZzX3N3YWIzMihmLT5pX2N0aW1lKTsKKwl0LT5pX210aW1lID0gZXh0MmZzX3N3YWIzMihmLT5pX210aW1lKTsKKwl0LT5pX2R0aW1lID0gZXh0MmZzX3N3YWIzMihmLT5pX2R0aW1lKTsKKwl0LT5pX2dpZCA9IGV4dDJmc19zd2FiMTYoZi0+aV9naWQpOworCXQtPmlfbGlua3NfY291bnQgPSBleHQyZnNfc3dhYjE2KGYtPmlfbGlua3NfY291bnQpOworCXQtPmlfZmlsZV9hY2wgPSBleHQyZnNfc3dhYjMyKGYtPmlfZmlsZV9hY2wpOworCWlmIChob3N0b3JkZXIpCisJCWhhc19kYXRhX2Jsb2NrcyA9IGV4dDJmc19pbm9kZV9kYXRhX2Jsb2NrcyhmcywKKwkJCQkJICAgKHN0cnVjdCBleHQyX2lub2RlICopIGYpOworCXQtPmlfYmxvY2tzID0gZXh0MmZzX3N3YWIzMihmLT5pX2Jsb2Nrcyk7CisJaWYgKCFob3N0b3JkZXIpCisJCWhhc19kYXRhX2Jsb2NrcyA9IGV4dDJmc19pbm9kZV9kYXRhX2Jsb2NrcyhmcywKKwkJCQkJICAgKHN0cnVjdCBleHQyX2lub2RlICopIHQpOworCWlmIChob3N0b3JkZXIgJiYgKGYtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKQorCQloYXNfZXh0ZW50cyA9IDE7CisJaWYgKGhvc3RvcmRlciAmJiAoZi0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpKQorCQloYXNfaW5saW5lX2RhdGEgPSAxOworCXQtPmlfZmxhZ3MgPSBleHQyZnNfc3dhYjMyKGYtPmlfZmxhZ3MpOworCWlmICghaG9zdG9yZGVyICYmICh0LT5pX2ZsYWdzICYgRVhUNF9FWFRFTlRTX0ZMKSkKKwkJaGFzX2V4dGVudHMgPSAxOworCWlmICghaG9zdG9yZGVyICYmICh0LT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkpCisJCWhhc19pbmxpbmVfZGF0YSA9IDE7CisJdC0+aV9kaXJfYWNsID0gZXh0MmZzX3N3YWIzMihmLT5pX2Rpcl9hY2wpOworCS8qCisJICogRXh0ZW50IGRhdGEgYW5kIGlubGluZSBkYXRhIGFyZSBzd2FwcGVkIG9uIGFjY2Vzcywgbm90IGhlcmUKKwkgKi8KKwlpZiAoIWhhc19leHRlbnRzICYmICFoYXNfaW5saW5lX2RhdGEgJiYgKCFpc2xuayB8fCBoYXNfZGF0YV9ibG9ja3MpKSB7CisJCWZvciAoaSA9IDA7IGkgPCBFWFQyX05fQkxPQ0tTOyBpKyspCisJCQl0LT5pX2Jsb2NrW2ldID0gZXh0MmZzX3N3YWIzMihmLT5pX2Jsb2NrW2ldKTsKKwl9IGVsc2UgaWYgKHQgIT0gZikgeworCQlmb3IgKGkgPSAwOyBpIDwgRVhUMl9OX0JMT0NLUzsgaSsrKQorCQkJdC0+aV9ibG9ja1tpXSA9IGYtPmlfYmxvY2tbaV07CisJfQorCXQtPmlfZ2VuZXJhdGlvbiA9IGV4dDJmc19zd2FiMzIoZi0+aV9nZW5lcmF0aW9uKTsKKwl0LT5pX2ZhZGRyID0gZXh0MmZzX3N3YWIzMihmLT5pX2ZhZGRyKTsKKworCXN3aXRjaCAoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MpIHsKKwljYXNlIEVYVDJfT1NfTElOVVg6CisJCXQtPm9zZDEubGludXgxLmxfaV92ZXJzaW9uID0KKwkJCWV4dDJmc19zd2FiMzIoZi0+b3NkMS5saW51eDEubF9pX3ZlcnNpb24pOworCQl0LT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpID0KKwkJCWV4dDJmc19zd2FiMTYoZi0+b3NkMi5saW51eDIubF9pX2Jsb2Nrc19oaSk7CisJCXQtPm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoID0KKwkJCWV4dDJmc19zd2FiMTYoZi0+b3NkMi5saW51eDIubF9pX2ZpbGVfYWNsX2hpZ2gpOworCQl0LT5vc2QyLmxpbnV4Mi5sX2lfdWlkX2hpZ2ggPQorCQkgIGV4dDJmc19zd2FiMTYgKGYtPm9zZDIubGludXgyLmxfaV91aWRfaGlnaCk7CisJCXQtPm9zZDIubGludXgyLmxfaV9naWRfaGlnaCA9CisJCSAgZXh0MmZzX3N3YWIxNiAoZi0+b3NkMi5saW51eDIubF9pX2dpZF9oaWdoKTsKKwkJdC0+b3NkMi5saW51eDIubF9pX2NoZWNrc3VtX2xvID0KKwkJCWV4dDJmc19zd2FiMTYoZi0+b3NkMi5saW51eDIubF9pX2NoZWNrc3VtX2xvKTsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX09TX0hVUkQ6CisJCXQtPm9zZDEuaHVyZDEuaF9pX3RyYW5zbGF0b3IgPQorCQkgIGV4dDJmc19zd2FiMzIgKGYtPm9zZDEuaHVyZDEuaF9pX3RyYW5zbGF0b3IpOworCQl0LT5vc2QyLmh1cmQyLmhfaV9mcmFnID0gZi0+b3NkMi5odXJkMi5oX2lfZnJhZzsKKwkJdC0+b3NkMi5odXJkMi5oX2lfZnNpemUgPSBmLT5vc2QyLmh1cmQyLmhfaV9mc2l6ZTsKKwkJdC0+b3NkMi5odXJkMi5oX2lfbW9kZV9oaWdoID0KKwkJICBleHQyZnNfc3dhYjE2IChmLT5vc2QyLmh1cmQyLmhfaV9tb2RlX2hpZ2gpOworCQl0LT5vc2QyLmh1cmQyLmhfaV91aWRfaGlnaCA9CisJCSAgZXh0MmZzX3N3YWIxNiAoZi0+b3NkMi5odXJkMi5oX2lfdWlkX2hpZ2gpOworCQl0LT5vc2QyLmh1cmQyLmhfaV9naWRfaGlnaCA9CisJCSAgZXh0MmZzX3N3YWIxNiAoZi0+b3NkMi5odXJkMi5oX2lfZ2lkX2hpZ2gpOworCQl0LT5vc2QyLmh1cmQyLmhfaV9hdXRob3IgPQorCQkgIGV4dDJmc19zd2FiMzIgKGYtPm9zZDIuaHVyZDIuaF9pX2F1dGhvcik7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWJyZWFrOworCX0KKworCWlmIChidWZzaXplIDwgKGludCkgKHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkgKyBzaXplb2YoX191MTYpKSkKKwkJcmV0dXJuOyAvKiBubyBpX2V4dHJhX2lzaXplIGZpZWxkICovCisKKwlpZiAoaG9zdG9yZGVyKQorCQlleHRyYV9pc2l6ZSA9IGYtPmlfZXh0cmFfaXNpemU7CisJdC0+aV9leHRyYV9pc2l6ZSA9IGV4dDJmc19zd2FiMTYoZi0+aV9leHRyYV9pc2l6ZSk7CisJaWYgKCFob3N0b3JkZXIpCisJCWV4dHJhX2lzaXplID0gdC0+aV9leHRyYV9pc2l6ZTsKKwlpZiAoZXh0cmFfaXNpemUgPiBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSAtCisJCQkJc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSkgeworCQkvKiB0aGlzIGlzIGVycm9yIGNhc2U6IGlfZXh0cmFfc2l6ZSBpcyB0b28gbGFyZ2UgKi8KKwkJcmV0dXJuOworCX0KKwlpZiAoZXh0cmFfaXNpemUgJiAzKQorCQlyZXR1cm47CQkvKiBJbGxlZ2FsIGlub2RlIGV4dHJhX2lzaXplICovCisKKwlpbm9kZV9zaXplID0gRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFICsgZXh0cmFfaXNpemU7CisJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfY2hlY2tzdW1faGkpKQorCQl0LT5pX2NoZWNrc3VtX2hpID0gZXh0MmZzX3N3YWIxNihmLT5pX2NoZWNrc3VtX2hpKTsKKwlpZiAoaW5vZGVfaW5jbHVkZXMoaW5vZGVfc2l6ZSwgaV9jdGltZV9leHRyYSkpCisJCXQtPmlfY3RpbWVfZXh0cmEgPSBleHQyZnNfc3dhYjMyKGYtPmlfY3RpbWVfZXh0cmEpOworCWlmIChpbm9kZV9pbmNsdWRlcyhpbm9kZV9zaXplLCBpX210aW1lX2V4dHJhKSkKKwkJdC0+aV9tdGltZV9leHRyYSA9IGV4dDJmc19zd2FiMzIoZi0+aV9tdGltZV9leHRyYSk7CisJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfYXRpbWVfZXh0cmEpKQorCQl0LT5pX2F0aW1lX2V4dHJhID0gZXh0MmZzX3N3YWIzMihmLT5pX2F0aW1lX2V4dHJhKTsKKwlpZiAoaW5vZGVfaW5jbHVkZXMoaW5vZGVfc2l6ZSwgaV9jcnRpbWUpKQorCQl0LT5pX2NydGltZSA9IGV4dDJmc19zd2FiMzIoZi0+aV9jcnRpbWUpOworCWlmIChpbm9kZV9pbmNsdWRlcyhpbm9kZV9zaXplLCBpX2NydGltZV9leHRyYSkpCisJCXQtPmlfY3J0aW1lX2V4dHJhID0gZXh0MmZzX3N3YWIzMihmLT5pX2NydGltZV9leHRyYSk7CisJaWYgKGlub2RlX2luY2x1ZGVzKGlub2RlX3NpemUsIGlfdmVyc2lvbl9oaSkpCisJCXQtPmlfdmVyc2lvbl9oaSA9IGV4dDJmc19zd2FiMzIoZi0+aV92ZXJzaW9uX2hpKTsKKwlpZiAoaW5vZGVfaW5jbHVkZXMoaW5vZGVfc2l6ZSwgaV9wcm9qaWQpKQorICAgICAgICAgICAgICAgIHQtPmlfcHJvamlkID0gZXh0MmZzX3N3YWIxNihmLT5pX3Byb2ppZCk7CisKKwlpID0gc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSArIGV4dHJhX2lzaXplICsgc2l6ZW9mKF9fdTMyKTsKKwlpZiAoYnVmc2l6ZSA8IChpbnQpIGkpCisJCXJldHVybjsgLyogbm8gc3BhY2UgZm9yIEVBIG1hZ2ljICovCisKKwllYWYgPSAoX191MzIgKikgKCgoY2hhciAqKSBmKSArIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkgKworCQkJCQlleHRyYV9pc2l6ZSk7CisKKwlhdHRyX21hZ2ljID0gKmVhZjsKKwlpZiAoIWhvc3RvcmRlcikKKwkJYXR0cl9tYWdpYyA9IGV4dDJmc19zd2FiMzIoYXR0cl9tYWdpYyk7CisKKwlpZiAoYXR0cl9tYWdpYyAhPSBFWFQyX0VYVF9BVFRSX01BR0lDKQorCQlyZXR1cm47IC8qIGl0IHNlZW1zIG5vIG1hZ2ljIGhlcmUgKi8KKworCWVhdCA9IChfX3UzMiAqKSAoKChjaGFyICopIHQpICsgc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlKSArCisJCQkJCWV4dHJhX2lzaXplKTsKKwkqZWF0ID0gZXh0MmZzX3N3YWIzMigqZWFmKTsKKworCS8qIGNvbnZlcnQgRUEocykgKi8KKwlleHQyZnNfc3dhcF9leHRfYXR0cigoY2hhciAqKSAoZWF0ICsgMSksIChjaGFyICopIChlYWYgKyAxKSwKKwkJCSAgICAgYnVmc2l6ZSAtIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkgLQorCQkJICAgICBleHRyYV9pc2l6ZSAtIHNpemVvZihfX3UzMiksIDApOworCit9CisKK3ZvaWQgZXh0MmZzX3N3YXBfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBleHQyX2lub2RlICp0LAorCQkgICAgICAgc3RydWN0IGV4dDJfaW5vZGUgKmYsIGludCBob3N0b3JkZXIpCit7CisJZXh0MmZzX3N3YXBfaW5vZGVfZnVsbChmcywgKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIHQsCisJCQkJKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICopIGYsIGhvc3RvcmRlciwKKwkJCQlzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKK30KKwordm9pZCBleHQyZnNfc3dhcF9tbXAoc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCkKK3sKKwltbXAtPm1tcF9tYWdpYyA9IGV4dDJmc19zd2FiMzIobW1wLT5tbXBfbWFnaWMpOworCW1tcC0+bW1wX3NlcSA9IGV4dDJmc19zd2FiMzIobW1wLT5tbXBfc2VxKTsKKwltbXAtPm1tcF90aW1lID0gZXh0MmZzX3N3YWI2NChtbXAtPm1tcF90aW1lKTsKKwltbXAtPm1tcF9jaGVja19pbnRlcnZhbCA9IGV4dDJmc19zd2FiMTYobW1wLT5tbXBfY2hlY2tfaW50ZXJ2YWwpOworCW1tcC0+bW1wX2NoZWNrc3VtID0gZXh0MmZzX3N3YWIzMihtbXAtPm1tcF9jaGVja3N1bSk7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfZGlyZW50X3N3YWJfaW4oZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmJ1ZiwgaW50IGZsYWdzKQoreworCXJldHVybiBleHQyZnNfZGlyZW50X3N3YWJfaW4yKGZzLCBidWYsIGZzLT5ibG9ja3NpemUsIGZsYWdzKTsKK30KKworZXJyY29kZV90IGV4dDJmc19kaXJlbnRfc3dhYl9pbjIoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmJ1ZiwKKwkJCQkgc2l6ZV90IHNpemUsIGludCBmbGFncykKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpwLCAqZW5kOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50OworCXVuc2lnbmVkIGludAluYW1lX2xlbiwgcmVjX2xlbjsKKworCXAgPSAoY2hhciAqKSBidWY7CisJZW5kID0gKGNoYXIgKikgYnVmICsgc2l6ZTsKKwl3aGlsZSAocCA8IGVuZC04KSB7CisJCWRpcmVudCA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikgcDsKKwkJZGlyZW50LT5pbm9kZSA9IGV4dDJmc19zd2FiMzIoZGlyZW50LT5pbm9kZSk7CisJCWRpcmVudC0+cmVjX2xlbiA9IGV4dDJmc19zd2FiMTYoZGlyZW50LT5yZWNfbGVuKTsKKwkJZGlyZW50LT5uYW1lX2xlbiA9IGV4dDJmc19zd2FiMTYoZGlyZW50LT5uYW1lX2xlbik7CisJCW5hbWVfbGVuID0gZGlyZW50LT5uYW1lX2xlbjsKKwkJaWYgKGZsYWdzICYgRVhUMl9ESVJCTE9DS19WMl9TVFJVQ1QpCisJCQlkaXJlbnQtPm5hbWVfbGVuID0gZXh0MmZzX3N3YWIxNihkaXJlbnQtPm5hbWVfbGVuKTsKKwkJcmV0dmFsID0gZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkaXJlbnQsICZyZWNfbGVuKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWlmICgocmVjX2xlbiA8IDgpIHx8IChyZWNfbGVuICUgNCkpIHsKKwkJCXJlY19sZW4gPSA4OworCQkJcmV0dmFsID0gRVhUMl9FVF9ESVJfQ09SUlVQVEVEOworCQl9IGVsc2UgaWYgKCgobmFtZV9sZW4gJiAweEZGKSArIDgpID4gcmVjX2xlbikKKwkJCXJldHZhbCA9IEVYVDJfRVRfRElSX0NPUlJVUFRFRDsKKwkJcCArPSByZWNfbGVuOworCX0KKworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QgZXh0MmZzX2RpcmVudF9zd2FiX291dChleHQyX2ZpbHN5cyBmcywgY2hhciAqYnVmLCBpbnQgZmxhZ3MpCit7CisJcmV0dXJuIGV4dDJmc19kaXJlbnRfc3dhYl9vdXQyKGZzLCBidWYsIGZzLT5ibG9ja3NpemUsIGZsYWdzKTsKK30KKworZXJyY29kZV90IGV4dDJmc19kaXJlbnRfc3dhYl9vdXQyKGV4dDJfZmlsc3lzIGZzLCBjaGFyICpidWYsCisJCQkJICBzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJKnAsICplbmQ7CisJdW5zaWduZWQgaW50CXJlY19sZW47CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkaXJlbnQ7CisKKwlwID0gYnVmOworCWVuZCA9IGJ1ZiArIHNpemU7CisJd2hpbGUgKHAgPCBlbmQpIHsKKwkJZGlyZW50ID0gKHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqKSBwOworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X3JlY19sZW4oZnMsIGRpcmVudCwgJnJlY19sZW4pOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJaWYgKChyZWNfbGVuIDwgOCkgfHwKKwkJICAgIChyZWNfbGVuICUgNCkpIHsKKwkJCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwkJCXJldHVybiBFWFQyX0VUX0RJUl9DT1JSVVBURUQ7CisJCX0KKwkJcCArPSByZWNfbGVuOworCQlkaXJlbnQtPmlub2RlID0gZXh0MmZzX3N3YWIzMihkaXJlbnQtPmlub2RlKTsKKwkJZGlyZW50LT5yZWNfbGVuID0gZXh0MmZzX3N3YWIxNihkaXJlbnQtPnJlY19sZW4pOworCQlkaXJlbnQtPm5hbWVfbGVuID0gZXh0MmZzX3N3YWIxNihkaXJlbnQtPm5hbWVfbGVuKTsKKworCQlpZiAoZmxhZ3MgJiBFWFQyX0RJUkJMT0NLX1YyX1NUUlVDVCkKKwkJCWRpcmVudC0+bmFtZV9sZW4gPSBleHQyZnNfc3dhYjE2KGRpcmVudC0+bmFtZV9sZW4pOworCX0KKworCXJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3N5bWxpbmsuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3N5bWxpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTZmOWE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvc3ltbGluay5jCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogc3ltbGluay5jIC0tLSBtYWtlIGEgc3ltbGluayBpbiB0aGUgZmlsZXN5c3RlbSwgYmFzZWQgb24gbWtkaXIuYworICoKKyAqIENvcHlyaWdodCAoYykgMjAxMiwgSW50ZWwgQ29ycG9yYXRpb24uCisgKiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitlcnJjb2RlX3QgZXh0MmZzX3N5bWxpbmsoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgcGFyZW50LCBleHQyX2lub190IGlubywKKwkJCSBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisJZXh0Ml9pbm9fdAkJc2NyYXRjaF9pbm87CisJYmxrNjRfdAkJCWJsazsKKwlpbnQJCQlmYXN0bGluaywgaW5saW5lbGluazsKKwl1bnNpZ25lZCBpbnQJCXRhcmdldF9sZW47CisJY2hhcgkJCSpibG9ja19idWYgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhmcywgRVhUMl9FVF9NQUdJQ19FWFQyRlNfRklMU1lTKTsKKworCS8qIFRoZSBMaW51eCBrZXJuZWwgZG9lc24ndCBhbGxvdyBmb3IgbGlua3MgbG9uZ2VyIHRoYW4gYSBibG9jayAqLworCXRhcmdldF9sZW4gPSBzdHJubGVuKHRhcmdldCwgZnMtPmJsb2Nrc2l6ZSArIDEpOworCWlmICh0YXJnZXRfbGVuID4gZnMtPmJsb2Nrc2l6ZSkgeworCQlyZXR2YWwgPSBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKgorCSAqIEFsbG9jYXRlIGEgZGF0YSBibG9jayBmb3Igc2xvdyBsaW5rcworCSAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUrMSwgJmJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCW1lbXNldChibG9ja19idWYsIDAsIGZzLT5ibG9ja3NpemUrMSk7CisJc3RybmNweShibG9ja19idWYsIHRhcmdldCwgZnMtPmJsb2Nrc2l6ZSk7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwlmYXN0bGluayA9ICh0YXJnZXRfbGVuIDwgc2l6ZW9mKGlub2RlLmlfYmxvY2spKTsKKwlpZiAoIWZhc3RsaW5rKSB7CisJCXJldHZhbCA9IGV4dDJmc19uZXdfYmxvY2syKGZzLCBleHQyZnNfZmluZF9pbm9kZV9nb2FsKGZzLCBpbm8sCisJCQkJCQkJCSAgICAgICZpbm9kZSwKKwkJCQkJCQkJICAgICAgMCksCisJCQkJCSAgIE5VTEwsICZibGspOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0KKworCS8qCisJICogQWxsb2NhdGUgYW4gaW5vZGUsIGlmIG5lY2Vzc2FyeQorCSAqLworCWlmICghaW5vKSB7CisJCXJldHZhbCA9IGV4dDJmc19uZXdfaW5vZGUoZnMsIHBhcmVudCwgTElOVVhfU19JRkxOSyB8IDA3NTUsCisJCQkJCSAgMCwgJmlubyk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgdGhlIGlub2RlIHN0cnVjdHVyZS4uLi4KKwkgKi8KKwlpbm9kZS5pX21vZGUgPSBMSU5VWF9TX0lGTE5LIHwgMDc3NzsKKwlpbm9kZS5pX3VpZCA9IGlub2RlLmlfZ2lkID0gMDsKKwlpbm9kZS5pX2xpbmtzX2NvdW50ID0gMTsKKwlleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsICZpbm9kZSwgdGFyZ2V0X2xlbik7CisJLyogVGhlIHRpbWUgZmllbGRzIGFyZSBzZXQgYnkgZXh0MmZzX3dyaXRlX25ld19pbm9kZSgpICovCisKKwlpbmxpbmVsaW5rID0gIWZhc3RsaW5rICYmCisJCSAgICAgZXh0MmZzX2hhc19mZWF0dXJlX2lubGluZV9kYXRhKGZzLT5zdXBlcikgJiYKKwkJICAgICAodGFyZ2V0X2xlbiA8IGZzLT5ibG9ja3NpemUpOworCWlmIChmYXN0bGluaykgeworCQkvKiBGYXN0IHN5bWxpbmtzLCB0YXJnZXQgc3RvcmVkIGluIGlub2RlICovCisJCXN0cmNweSgoY2hhciAqKSZpbm9kZS5pX2Jsb2NrLCB0YXJnZXQpOworCX0gZWxzZSBpZiAoaW5saW5lbGluaykgeworCQkvKiBUcnkgaW5zZXJ0aW5nIGFuIGlubGluZSBkYXRhIHN5bWxpbmsgKi8KKwkJaW5vZGUuaV9mbGFncyB8PSBFWFQ0X0lOTElORV9EQVRBX0ZMOworCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfbmV3X2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJCXJldHZhbCA9IGV4dDJmc19pbmxpbmVfZGF0YV9zZXQoZnMsIGlubywgJmlub2RlLCBibG9ja19idWYsCisJCQkJCQl0YXJnZXRfbGVuKTsKKwkJaWYgKHJldHZhbCkgeworCQkJaW5vZGUuaV9mbGFncyAmPSB+RVhUNF9JTkxJTkVfREFUQV9GTDsKKwkJCWlubGluZWxpbmsgPSAwOworCQkJZ290byBuZWVkX2Jsb2NrOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJfSBlbHNlIHsKK25lZWRfYmxvY2s6CisJCS8qIFNsb3cgc3ltbGlua3MsIHRhcmdldCBzdG9yZWQgaW4gdGhlIGZpcnN0IGJsb2NrICovCisJCWV4dDJmc19pYmxrX3NldChmcywgJmlub2RlLCAxKTsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikpIHsKKwkJCS8qCisJCQkgKiBUaGUgZXh0ZW50IGJtYXAgaXMgc2V0dXAgYWZ0ZXIgdGhlIGlub2RlIGFuZCBibG9jaworCQkJICogaGF2ZSBiZWVuIHdyaXR0ZW4gb3V0IGJlbG93LgorCQkJICovCisJCQlpbm9kZS5pX2ZsYWdzIHw9IEVYVDRfRVhURU5UU19GTDsKKwkJfQorCX0KKworCS8qCisJICogV3JpdGUgb3V0IHRoZSBpbm9kZSBhbmQgaW5vZGUgZGF0YSBibG9jay4gIFRoZSBpbm9kZSBnZW5lcmF0aW9uCisJICogbnVtYmVyIGlzIGFzc2lnbmVkIGJ5IHdyaXRlX25ld19pbm9kZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUKKwkgKiBvcGVyYXRpb25zIHVzaW5nIGlubyBtdXN0IGNvbWUgYWZ0ZXIgaXQuCisJICovCisJaWYgKGlubGluZWxpbmspCisJCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWVsc2UKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKworCWlmICghZmFzdGxpbmsgJiYgIWlubGluZWxpbmspIHsKKwkJcmV0dmFsID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sICZpbm9kZSwgTlVMTCwgQk1BUF9TRVQsIDAsIE5VTEwsCisJCQkJICAgICAgJmJsayk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIGJsaywgMSwgYmxvY2tfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9CisKKwkvKgorCSAqIExpbmsgdGhlIHN5bWxpbmsgaW50byB0aGUgZmlsZXN5c3RlbSBoaWVyYXJjaHkKKwkgKi8KKwlpZiAobmFtZSkgeworCQlyZXR2YWwgPSBleHQyZnNfbG9va3VwKGZzLCBwYXJlbnQsIG5hbWUsIHN0cmxlbihuYW1lKSwgMCwKKwkJCQkgICAgICAgJnNjcmF0Y2hfaW5vKTsKKwkJaWYgKCFyZXR2YWwpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfRklMRV9FWElTVFM7CisJCQlnb3RvIGNsZWFudXA7CisJCX0KKwkJaWYgKHJldHZhbCAhPSBFWFQyX0VUX0ZJTEVfTk9UX0ZPVU5EKQorCQkJZ290byBjbGVhbnVwOworCQlyZXR2YWwgPSBleHQyZnNfbGluayhmcywgcGFyZW50LCBuYW1lLCBpbm8sIEVYVDJfRlRfU1lNTElOSyk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJfQorCisJLyoKKwkgKiBVcGRhdGUgYWNjb3VudGluZy4uLi4KKwkgKi8KKwlpZiAoIWZhc3RsaW5rICYmICFpbmxpbmVsaW5rKQorCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBibGssICsxKTsKKwlleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGZzLCBpbm8sICsxLCAwKTsKKworY2xlYW51cDoKKwlpZiAoYmxvY2tfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmJsb2NrX2J1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2YzQ4NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi5jCkBAIC0wLDAgKzEsNDE1NiBAQAorLyoKK1VSTDogc3ZuOi8vc3ZuYW5vbi5zYW1iYS5vcmcvc2FtYmEvYnJhbmNoZXMvU0FNQkFfNF8wL3NvdXJjZS9saWIvdGRiL2NvbW1vbgorUmV2OiAyMzU5MAorTGFzdCBDaGFuZ2VkIERhdGU6IDIwMDctMDYtMjIgMTM6MzY6MTAgLTA0MDAgKEZyaSwgMjIgSnVuIDIwMDcpCisqLworIC8qCisgICB0cml2aWFsIGRhdGFiYXNlIGxpYnJhcnkgLSBzdGFuZGFsb25lIHZlcnNpb24KKworICAgQ29weXJpZ2h0IChDKSBBbmRyZXcgVHJpZGdlbGwgICAgICAgICAgICAgIDE5OTktMjAwNQorICAgQ29weXJpZ2h0IChDKSBKZXJlbXkgQWxsaXNvbiAgICAgICAgICAgICAgIDIwMDAtMjAwNgorICAgQ29weXJpZ2h0IChDKSBQYXVsIGBSdXN0eScgUnVzc2VsbCAgICAgICAgIDIwMDAKKworICAgICAqKiBOT1RFISBUaGUgZm9sbG93aW5nIExHUEwgbGljZW5zZSBhcHBsaWVzIHRvIHRoZSB0ZGIKKyAgICAgKiogbGlicmFyeS4gVGhpcyBkb2VzIE5PVCBpbXBseSB0aGF0IGFsbCBvZiBTYW1iYSBpcyByZWxlYXNlZAorICAgICAqKiB1bmRlciB0aGUgTEdQTAorCisgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyovCisKKyNpZmRlZiBDT05GSUdfU1RBTkRfQUxPTkUKKyNkZWZpbmUgSEFWRV9NTUFQCisjZGVmaW5lIEhBVkVfU1RSRFVQCisjZGVmaW5lIEhBVkVfU1lTX01NQU5fSAorI2RlZmluZSBIQVZFX1VUSU1FX0gKKyNkZWZpbmUgSEFWRV9VVElNRQorI2VuZGlmCisjaWZuZGVmIF9fRnJlZUJTRF9fCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmZGVmIEhBVkVfVVRJTUVfSAorI2luY2x1ZGUgPHV0aW1lLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2lmZGVmIEhBVkVfU1lTX01NQU5fSAorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjZW5kaWYKKworI2lmbmRlZiBNQVBfRklMRQorI2RlZmluZSBNQVBfRklMRSAwCisjZW5kaWYKKworI2lmbmRlZiBNQVBfRkFJTEVECisjZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkICopLTEpCisjZW5kaWYKKworI2lmbmRlZiBIQVZFX1NUUkRVUAorI2RlZmluZSBzdHJkdXAgcmVwX3N0cmR1cAorc3RhdGljIGNoYXIgKnJlcF9zdHJkdXAoY29uc3QgY2hhciAqcykKK3sKKwljaGFyICpyZXQ7CisJaW50IGxlbmd0aDsKKwlpZiAoIXMpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFsZW5ndGgpCisJCWxlbmd0aCA9IHN0cmxlbihzKTsKKworCXJldCA9IG1hbGxvYyhsZW5ndGggKyAxKTsKKwlpZiAocmV0KSB7CisJCXN0cm5jcHkocmV0LCBzLCBsZW5ndGgpOworCQlyZXRbbGVuZ3RoXSA9ICdcMCc7CisJfQorCXJldHVybiByZXQ7Cit9CisjZW5kaWYKKworI2lmbmRlZiBQUklOVEZfQVRUUklCVVRFCisjaWYgKF9fR05VQ19fID49IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAxICkKKy8qKiBVc2UgZ2NjIGF0dHJpYnV0ZSB0byBjaGVjayBwcmludGYgZm5zLiAgYTEgaXMgdGhlIDEtYmFzZWQgaW5kZXggb2YKKyAqIHRoZSBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgZm9ybWF0LCBhbmQgYTIgdGhlIGluZGV4IG9mIHRoZSBmaXJzdAorICogYXJndW1lbnQuIE5vdGUgdGhhdCBzb21lIGdjYyAyLnggdmVyc2lvbnMgZG9uJ3QgaGFuZGxlIHRoaXMKKyAqIHByb3Blcmx5ICoqLworI2RlZmluZSBQUklOVEZfQVRUUklCVVRFKGExLCBhMikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoX19wcmludGZfXywgYTEsIGEyKSkpCisjZWxzZQorI2RlZmluZSBQUklOVEZfQVRUUklCVVRFKGExLCBhMikKKyNlbmRpZgorI2VuZGlmCisKK3R5cGVkZWYgaW50IGJvb2w7CisKKyNpbmNsdWRlICJ0ZGIuaCIKKworc3RhdGljIFREQl9EQVRBIHRkYl9udWxsOworCisjaWZuZGVmIHUzMgorI2RlZmluZSB1MzIgdW5zaWduZWQKKyNlbmRpZgorCit0eXBlZGVmIHUzMiB0ZGJfbGVuX3Q7Cit0eXBlZGVmIHUzMiB0ZGJfb2ZmX3Q7CisKKyNpZm5kZWYgb2Zmc2V0b2YKKyNkZWZpbmUgb2Zmc2V0b2YodCxmKSAoKHVuc2lnbmVkIGludCkmKCh0ICopMCktPmYpCisjZW5kaWYKKworI2RlZmluZSBUREJfTUFHSUNfRk9PRCAiVERCIGZpbGVcbiIKKyNkZWZpbmUgVERCX1ZFUlNJT04gKDB4MjYwMTE5NjcgKyA2KQorI2RlZmluZSBUREJfTUFHSUMgKDB4MjYwMTE5OTlVKQorI2RlZmluZSBUREJfRlJFRV9NQUdJQyAoflREQl9NQUdJQykKKyNkZWZpbmUgVERCX0RFQURfTUFHSUMgKDB4RkVFMURFQUQpCisjZGVmaW5lIFREQl9SRUNPVkVSWV9NQUdJQyAoMHhmNTNiYzBlN1UpCisjZGVmaW5lIFREQl9BTElHTk1FTlQgNAorI2RlZmluZSBNSU5fUkVDX1NJWkUgKDIqc2l6ZW9mKHN0cnVjdCBsaXN0X3N0cnVjdCkgKyBUREJfQUxJR05NRU5UKQorI2RlZmluZSBERUZBVUxUX0hBU0hfU0laRSAxMzEKKyNkZWZpbmUgRlJFRUxJU1RfVE9QIChzaXplb2Yoc3RydWN0IHRkYl9oZWFkZXIpKQorI2RlZmluZSBUREJfQUxJR04oeCxhKSAoKCh4KSArIChhKS0xKSAmIH4oKGEpLTEpKQorI2RlZmluZSBUREJfQllURVJFVih4KSAoKCgoKHgpJjB4ZmYpPDwyNCl8KCh4KSYweEZGMDApPDw4KXwoKCh4KT4+OCkmMHhGRjAwKXwoKHgpPj4yNCkpCisjZGVmaW5lIFREQl9ERUFEKHIpICgociktPm1hZ2ljID09IFREQl9ERUFEX01BR0lDKQorI2RlZmluZSBUREJfQkFEX01BR0lDKHIpICgociktPm1hZ2ljICE9IFREQl9NQUdJQyAmJiAhVERCX0RFQUQocikpCisjZGVmaW5lIFREQl9IQVNIX1RPUChoYXNoKSAoRlJFRUxJU1RfVE9QICsgKEJVQ0tFVChoYXNoKSsxKSpzaXplb2YodGRiX29mZl90KSkKKyNkZWZpbmUgVERCX0hBU0hUQUJMRV9TSVpFKHRkYikgKCh0ZGItPmhlYWRlci5oYXNoX3NpemUrMSkqc2l6ZW9mKHRkYl9vZmZfdCkpCisjZGVmaW5lIFREQl9EQVRBX1NUQVJUKGhhc2hfc2l6ZSkgVERCX0hBU0hfVE9QKGhhc2hfc2l6ZS0xKQorI2RlZmluZSBUREJfUkVDT1ZFUllfSEVBRCBvZmZzZXRvZihzdHJ1Y3QgdGRiX2hlYWRlciwgcmVjb3Zlcnlfc3RhcnQpCisjZGVmaW5lIFREQl9TRVFOVU1fT0ZTICAgIG9mZnNldG9mKHN0cnVjdCB0ZGJfaGVhZGVyLCBzZXF1ZW5jZV9udW1iZXIpCisjZGVmaW5lIFREQl9QQURfQllURSAweDQyCisjZGVmaW5lIFREQl9QQURfVTMyICAweDQyNDI0MjQyCisKKy8qIE5CIGFzc3VtZXMgdGhlcmUgaXMgYSBsb2NhbCB2YXJpYWJsZSBjYWxsZWQgInRkYiIgdGhhdCBpcyB0aGUKKyAqIGN1cnJlbnQgY29udGV4dCwgYWxzbyB0YWtlcyBkb3VibHktcGFyZW50aGVzaXplZCBwcmludC1zdHlsZQorICogYXJndW1lbnQuICovCisjZGVmaW5lIFREQl9MT0coeCkgdGRiLT5sb2cubG9nX2ZuIHgKKworLyogbG9jayBvZmZzZXRzICovCisjZGVmaW5lIEdMT0JBTF9MT0NLICAgICAgMAorI2RlZmluZSBBQ1RJVkVfTE9DSyAgICAgIDQKKyNkZWZpbmUgVFJBTlNBQ1RJT05fTE9DSyA4CisKKy8qIGZyZWUgbWVtb3J5IGlmIHRoZSBwb2ludGVyIGlzIHZhbGlkIGFuZCB6ZXJvIHRoZSBwb2ludGVyICovCisjaWZuZGVmIFNBRkVfRlJFRQorI2RlZmluZSBTQUZFX0ZSRUUoeCkgZG8geyBpZiAoKHgpICE9IE5VTEwpIHtmcmVlKHgpOyAoeCk9TlVMTDt9IH0gd2hpbGUoMCkKKyNlbmRpZgorCisjZGVmaW5lIEJVQ0tFVChoYXNoKSAoKGhhc2gpICUgdGRiLT5oZWFkZXIuaGFzaF9zaXplKQorCisjZGVmaW5lIERPQ09OVigpICh0ZGItPmZsYWdzICYgVERCX0NPTlZFUlQpCisjZGVmaW5lIENPTlZFUlQoeCkgKERPQ09OVigpID8gdGRiX2NvbnZlcnQoJngsIHNpemVvZih4KSkgOiAmeCkKKworCisvKiB0aGUgYm9keSBvZiB0aGUgZGF0YWJhc2UgaXMgbWFkZSBvZiBvbmUgbGlzdF9zdHJ1Y3QgZm9yIHRoZSBmcmVlIHNwYWNlCisgICBwbHVzIGEgc2VwYXJhdGUgZGF0YSBsaXN0IGZvciBlYWNoIGhhc2ggdmFsdWUgKi8KK3N0cnVjdCBsaXN0X3N0cnVjdCB7CisJdGRiX29mZl90IG5leHQ7IC8qIG9mZnNldCBvZiB0aGUgbmV4dCByZWNvcmQgaW4gdGhlIGxpc3QgKi8KKwl0ZGJfbGVuX3QgcmVjX2xlbjsgLyogdG90YWwgYnl0ZSBsZW5ndGggb2YgcmVjb3JkICovCisJdGRiX2xlbl90IGtleV9sZW47IC8qIGJ5dGUgbGVuZ3RoIG9mIGtleSAqLworCXRkYl9sZW5fdCBkYXRhX2xlbjsgLyogYnl0ZSBsZW5ndGggb2YgZGF0YSAqLworCXUzMiBmdWxsX2hhc2g7IC8qIHRoZSBmdWxsIDMyIGJpdCBoYXNoIG9mIHRoZSBrZXkgKi8KKwl1MzIgbWFnaWM7ICAgLyogdHJ5IHRvIGNhdGNoIGVycm9ycyAqLworCS8qIHRoZSBmb2xsb3dpbmcgdW5pb24gaXMgaW1wbGllZDoKKwkJdW5pb24geworCQkJY2hhciByZWNvcmRbcmVjX2xlbl07CisJCQlzdHJ1Y3QgeworCQkJCWNoYXIga2V5W2tleV9sZW5dOworCQkJCWNoYXIgZGF0YVtkYXRhX2xlbl07CisJCQl9CisJCQl1MzIgdG90YWxzaXplOyAodGFpbGVyKQorCQl9CisJKi8KK307CisKKworLyogdGhpcyBpcyBzdG9yZWQgYXQgdGhlIGZyb250IG9mIGV2ZXJ5IGRhdGFiYXNlICovCitzdHJ1Y3QgdGRiX2hlYWRlciB7CisJY2hhciBtYWdpY19mb29kWzMyXTsgLyogZm9yIC9ldGMvbWFnaWMgKi8KKwl1MzIgdmVyc2lvbjsgLyogdmVyc2lvbiBvZiB0aGUgY29kZSAqLworCXUzMiBoYXNoX3NpemU7IC8qIG51bWJlciBvZiBoYXNoIGVudHJpZXMgKi8KKwl0ZGJfb2ZmX3Qgcndsb2NrczsgLyogb2Jzb2xldGUgLSBrZXB0IHRvIGRldGVjdCBvbGQgZm9ybWF0cyAqLworCXRkYl9vZmZfdCByZWNvdmVyeV9zdGFydDsgLyogb2Zmc2V0IG9mIHRyYW5zYWN0aW9uIHJlY292ZXJ5IHJlZ2lvbiAqLworCXRkYl9vZmZfdCBzZXF1ZW5jZV9udW1iZXI7IC8qIHVzZWQgd2hlbiBUREJfU0VRTlVNIGlzIHNldCAqLworCXRkYl9vZmZfdCByZXNlcnZlZFsyOV07Cit9OworCitzdHJ1Y3QgdGRiX2xvY2tfdHlwZSB7CisJaW50IGxpc3Q7CisJdTMyIGNvdW50OworCXUzMiBsdHlwZTsKK307CisKK3N0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayB7CisJc3RydWN0IHRkYl90cmF2ZXJzZV9sb2NrICpuZXh0OworCXUzMiBvZmY7CisJdTMyIGhhc2g7CisJaW50IGxvY2tfcnc7Cit9OworCisKK3N0cnVjdCB0ZGJfbWV0aG9kcyB7CisJaW50ICgqdGRiX3JlYWQpKHN0cnVjdCB0ZGJfY29udGV4dCAqLCB0ZGJfb2ZmX3QgLCB2b2lkICosIHRkYl9sZW5fdCAsIGludCApOworCWludCAoKnRkYl93cml0ZSkoc3RydWN0IHRkYl9jb250ZXh0ICosIHRkYl9vZmZfdCwgY29uc3Qgdm9pZCAqLCB0ZGJfbGVuX3QpOworCXZvaWQgKCpuZXh0X2hhc2hfY2hhaW4pKHN0cnVjdCB0ZGJfY29udGV4dCAqLCB1MzIgKik7CisJaW50ICgqdGRiX29vYikoc3RydWN0IHRkYl9jb250ZXh0ICosIHRkYl9vZmZfdCAsIGludCApOworCWludCAoKnRkYl9leHBhbmRfZmlsZSkoc3RydWN0IHRkYl9jb250ZXh0ICosIHRkYl9vZmZfdCAsIHRkYl9vZmZfdCApOworCWludCAoKnRkYl9icmxvY2spKHN0cnVjdCB0ZGJfY29udGV4dCAqLCB0ZGJfb2ZmX3QgLCBpbnQsIGludCwgaW50LCBzaXplX3QpOworfTsKKworc3RydWN0IHRkYl9jb250ZXh0IHsKKwljaGFyICpuYW1lOyAvKiB0aGUgbmFtZSBvZiB0aGUgZGF0YWJhc2UgKi8KKwl2b2lkICptYXBfcHRyOyAvKiB3aGVyZSBpdCBpcyBjdXJyZW50bHkgbWFwcGVkICovCisJaW50IGZkOyAvKiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGRhdGFiYXNlICovCisJdGRiX2xlbl90IG1hcF9zaXplOyAvKiBob3cgbXVjaCBzcGFjZSBoYXMgYmVlbiBtYXBwZWQgKi8KKwlpbnQgcmVhZF9vbmx5OyAvKiBvcGVuZWQgcmVhZC1vbmx5ICovCisJaW50IHRyYXZlcnNlX3JlYWQ7IC8qIHJlYWQtb25seSB0cmF2ZXJzYWwgKi8KKwlzdHJ1Y3QgdGRiX2xvY2tfdHlwZSBnbG9iYWxfbG9jazsKKwlpbnQgbnVtX2xvY2tyZWNzOworCXN0cnVjdCB0ZGJfbG9ja190eXBlICpsb2NrcmVjczsgLyogb25seSByZWFsIGxvY2tzLCBhbGwgd2l0aCBjb3VudD4wICovCisJZW51bSBUREJfRVJST1IgZWNvZGU7IC8qIGVycm9yIGNvZGUgZm9yIGxhc3QgdGRiIGVycm9yICovCisJc3RydWN0IHRkYl9oZWFkZXIgaGVhZGVyOyAvKiBhIGNhY2hlZCBjb3B5IG9mIHRoZSBoZWFkZXIgKi8KKwl1MzIgZmxhZ3M7IC8qIHRoZSBmbGFncyBwYXNzZWQgdG8gdGRiX29wZW4gKi8KKwlzdHJ1Y3QgdGRiX3RyYXZlcnNlX2xvY2sgdHJhdmxvY2tzOyAvKiBjdXJyZW50IHRyYXZlcnNhbCBsb2NrcyAqLworCXN0cnVjdCB0ZGJfY29udGV4dCAqbmV4dDsgLyogYWxsIHRkYnMgdG8gYXZvaWQgbXVsdGlwbGUgb3BlbnMgKi8KKwlkZXZfdCBkZXZpY2U7CS8qIHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyB0ZGIgKi8KKwlpbm9fdCBpbm9kZTsJLyogdW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIHRkYiAqLworCXN0cnVjdCB0ZGJfbG9nZ2luZ19jb250ZXh0IGxvZzsKKwl1bnNpZ25lZCBpbnQgKCpoYXNoX2ZuKShUREJfREFUQSAqa2V5KTsKKwlpbnQgb3Blbl9mbGFnczsgLyogZmxhZ3MgdXNlZCBpbiB0aGUgb3BlbiAtIG5lZWRlZCBieSByZW9wZW4gKi8KKwl1bnNpZ25lZCBpbnQgbnVtX2xvY2tzOyAvKiBudW1iZXIgb2YgY2hhaW4gbG9ja3MgaGVsZCAqLworCWNvbnN0IHN0cnVjdCB0ZGJfbWV0aG9kcyAqbWV0aG9kczsKKwlzdHJ1Y3QgdGRiX3RyYW5zYWN0aW9uICp0cmFuc2FjdGlvbjsKKwlpbnQgcGFnZV9zaXplOworCWludCBtYXhfZGVhZF9yZWNvcmRzOworCWJvb2wgaGF2ZV90cmFuc2FjdGlvbl9sb2NrOworCXRkYl9sZW5fdCByZWFsX21hcF9zaXplOyAvKiBob3cgbXVjaCBzcGFjZSBoYXMgYmVlbiBtYXBwZWQgKi8KK307CisKKworLyoKKyAgaW50ZXJuYWwgcHJvdG90eXBlcworKi8KK3N0YXRpYyBpbnQgdGRiX211bm1hcChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitzdGF0aWMgdm9pZCB0ZGJfbW1hcChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitzdGF0aWMgaW50IHRkYl9sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgbGlzdCwgaW50IGx0eXBlKTsKK3N0YXRpYyBpbnQgdGRiX3VubG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGxpc3QsIGludCBsdHlwZSk7CitzdGF0aWMgaW50IHRkYl9icmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIGludCByd190eXBlLCBpbnQgbGNrX3R5cGUsIGludCBwcm9iZSwgc2l6ZV90IGxlbik7CitzdGF0aWMgaW50IHRkYl90cmFuc2FjdGlvbl9sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgbHR5cGUpOworc3RhdGljIGludCB0ZGJfdHJhbnNhY3Rpb25fdW5sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK3N0YXRpYyBpbnQgdGRiX2JybG9ja191cGdyYWRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBzaXplX3QgbGVuKTsKK3N0YXRpYyBpbnQgdGRiX3dyaXRlX2xvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKTsKK3N0YXRpYyBpbnQgdGRiX3dyaXRlX3VubG9ja19yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYpOworc3RhdGljIGludCB0ZGJfb2ZzX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9vZmZfdCAqZCk7CitzdGF0aWMgaW50IHRkYl9vZnNfd3JpdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9vZmZfdCAqZCk7CitzdGF0aWMgdm9pZCAqdGRiX2NvbnZlcnQodm9pZCAqYnVmLCB1MzIgc2l6ZSk7CitzdGF0aWMgaW50IHRkYl9mcmVlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYyk7CitzdGF0aWMgdGRiX29mZl90IHRkYl9hbGxvY2F0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX2xlbl90IGxlbmd0aCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworc3RhdGljIGludCB0ZGJfb2ZzX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9vZmZfdCAqZCk7CitzdGF0aWMgaW50IHRkYl9vZnNfd3JpdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9vZmZfdCAqZCk7CitzdGF0aWMgaW50IHRkYl9sb2NrX3JlY29yZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZik7CitzdGF0aWMgaW50IHRkYl91bmxvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKTsKK3N0YXRpYyBpbnQgdGRiX3JlY19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYyk7CitzdGF0aWMgaW50IHRkYl9yZWNfd3JpdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKK3N0YXRpYyBpbnQgdGRiX2RvX2RlbGV0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IHJlY19wdHIsIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKK3N0YXRpYyB1bnNpZ25lZCBjaGFyICp0ZGJfYWxsb2NfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX2xlbl90IGxlbik7CitzdGF0aWMgaW50IHRkYl9wYXJzZV9kYXRhKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXksCisJCSAgIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9sZW5fdCBsZW4sCisJCSAgIGludCAoKnBhcnNlcikoVERCX0RBVEEga2V5LCBUREJfREFUQSBkYXRhLAorCQkJCSB2b2lkICpwcml2YXRlX2RhdGEpLAorCQkgICB2b2lkICpwcml2YXRlX2RhdGEpOworc3RhdGljIHRkYl9vZmZfdCB0ZGJfZmluZF9sb2NrX2hhc2goc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSwgdTMyIGhhc2gsIGludCBsb2NrdHlwZSwKKwkJCSAgIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKK3N0YXRpYyB2b2lkIHRkYl9pb19pbml0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK3N0YXRpYyBpbnQgdGRiX2V4cGFuZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IHNpemUpOworc3RhdGljIGludCB0ZGJfcmVjX2ZyZWVfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwKKwkJICAgICAgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworCisKKy8qIGZpbGU6IGVycm9yLmMgKi8KKworZW51bSBUREJfRVJST1IgdGRiX2Vycm9yKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiB0ZGItPmVjb2RlOworfQorCitzdGF0aWMgc3RydWN0IHRkYl9lcnJuYW1lIHsKKwllbnVtIFREQl9FUlJPUiBlY29kZTsgY29uc3QgY2hhciAqZXN0cmluZzsKK30gZW1hcFtdID0geyB7VERCX1NVQ0NFU1MsICJTdWNjZXNzIn0sCisJICAgICB7VERCX0VSUl9DT1JSVVBULCAiQ29ycnVwdCBkYXRhYmFzZSJ9LAorCSAgICAge1REQl9FUlJfSU8sICJJTyBFcnJvciJ9LAorCSAgICAge1REQl9FUlJfTE9DSywgIkxvY2tpbmcgZXJyb3IifSwKKwkgICAgIHtUREJfRVJSX09PTSwgIk91dCBvZiBtZW1vcnkifSwKKwkgICAgIHtUREJfRVJSX0VYSVNUUywgIlJlY29yZCBleGlzdHMifSwKKwkgICAgIHtUREJfRVJSX05PTE9DSywgIkxvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMifSwKKwkgICAgIHtUREJfRVJSX0VJTlZBTCwgIkludmFsaWQgcGFyYW1ldGVyIn0sCisJICAgICB7VERCX0VSUl9OT0VYSVNULCAiUmVjb3JkIGRvZXMgbm90IGV4aXN0In0sCisJICAgICB7VERCX0VSUl9SRE9OTFksICJ3cml0ZSBub3QgcGVybWl0dGVkIn0gfTsKKworLyogRXJyb3Igc3RyaW5nIGZvciB0aGUgbGFzdCB0ZGIgZXJyb3IgKi8KK2NvbnN0IGNoYXIgKnRkYl9lcnJvcnN0cihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwl1MzIgaTsKKwlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGVtYXApIC8gc2l6ZW9mKHN0cnVjdCB0ZGJfZXJybmFtZSk7IGkrKykKKwkJaWYgKHRkYi0+ZWNvZGUgPT0gZW1hcFtpXS5lY29kZSkKKwkJCXJldHVybiBlbWFwW2ldLmVzdHJpbmc7CisJcmV0dXJuICJJbnZhbGlkIGVycm9yIGNvZGUiOworfQorCisvKiBmaWxlOiBsb2NrLmMgKi8KKworI2RlZmluZSBUREJfTUFSS19MT0NLIDB4ODAwMDAwMDAKKworLyogYSBieXRlIHJhbmdlIGxvY2tpbmcgZnVuY3Rpb24gLSByZXR1cm4gMCBvbiBzdWNjZXNzCisgICB0aGlzIGZ1bmN0aW9ucyBsb2Nrcy91bmxvY2tzIDEgYnl0ZSBhdCB0aGUgc3BlY2lmaWVkIG9mZnNldC4KKworICAgT24gZXJyb3IsIGVycm5vIGlzIGFsc28gc2V0IHNvIHRoYXQgZXJyb3JzIGFyZSBwYXNzZWQgYmFjayBwcm9wZXJseQorICAgdGhyb3VnaCB0ZGJfb3BlbigpLgorCisgICBub3RlIHRoYXQgYSBsZW4gb2YgemVybyBtZWFucyBsb2NrIHRvIGVuZCBvZiBmaWxlCisqLworaW50IHRkYl9icmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsCisJICAgICAgIGludCByd190eXBlLCBpbnQgbGNrX3R5cGUsIGludCBwcm9iZSwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgZmxvY2sgZmw7CisJaW50IHJldDsKKworCWlmICh0ZGItPmZsYWdzICYgVERCX05PTE9DSykgeworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoKHJ3X3R5cGUgPT0gRl9XUkxDSykgJiYgKHRkYi0+cmVhZF9vbmx5IHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfUkRPTkxZOworCQlyZXR1cm4gLTE7CisJfQorCisJZmwubF90eXBlID0gcndfdHlwZTsKKwlmbC5sX3doZW5jZSA9IFNFRUtfU0VUOworCWZsLmxfc3RhcnQgPSBvZmZzZXQ7CisJZmwubF9sZW4gPSBsZW47CisJZmwubF9waWQgPSAwOworCisJZG8geworCQlyZXQgPSBmY250bCh0ZGItPmZkLGxja190eXBlLCZmbCk7CisJfSB3aGlsZSAocmV0ID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKKworCWlmIChyZXQgPT0gLTEpIHsKKwkJLyogR2VuZXJpYyBsb2NrIGVycm9yLiBlcnJubyBzZXQgYnkgZmNudGwuCisJCSAqIEVBR0FJTiBpcyBhbiBleHBlY3RlZCByZXR1cm4gZnJvbSBub24tYmxvY2tpbmcKKwkJICogbG9ja3MuICovCisJCWlmICghcHJvYmUgJiYgbGNrX3R5cGUgIT0gRl9TRVRMSykgeworCQkJLyogRW5zdXJlIGVycm9yIGNvZGUgaXMgc2V0IGZvciBsb2cgZnVuIHRvIGV4YW1pbmUuICovCisJCQl0ZGItPmVjb2RlID0gVERCX0VSUl9MT0NLOworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfVFJBQ0UsInRkYl9icmxvY2sgZmFpbGVkIChmZD0lZCkgYXQgb2Zmc2V0ICVkIHJ3X3R5cGU9JWQgbGNrX3R5cGU9JWQgbGVuPSVkXG4iLAorCQkJCSB0ZGItPmZkLCBvZmZzZXQsIHJ3X3R5cGUsIGxja190eXBlLCAoaW50KWxlbikpOworCQl9CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0xPQ0ssIC0xKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAgdXBncmFkZSBhIHJlYWQgbG9jayB0byBhIHdyaXRlIGxvY2suIFRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBpbiBhCisgIHNwZWNpYWwgd2F5IGFzIHNvbWUgT1NlcyAoc3VjaCBhcyBzb2xhcmlzKSBoYXZlIHRvbyBjb25zZXJ2YXRpdmUKKyAgZGVhZGxvY2sgZGV0ZWN0aW9uIGFuZCBjbGFpbSBhIGRlYWRsb2NrIHdoZW4gcHJvZ3Jlc3MgY2FuIGJlCisgIG1hZGUuIEZvciB0aG9zZSBPU2VzIHdlIG1heSBsb29wIGZvciBhIHdoaWxlLgorKi8KK2ludCB0ZGJfYnJsb2NrX3VwZ3JhZGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHNpemVfdCBsZW4pCit7CisJaW50IGNvdW50ID0gMTAwMDsKKwl3aGlsZSAoY291bnQtLSkgeworCQlzdHJ1Y3QgdGltZXZhbCB0djsKKwkJaWYgKHRkYl9icmxvY2sodGRiLCBvZmZzZXQsIEZfV1JMQ0ssIEZfU0VUTEtXLCAxLCBsZW4pID09IDApIHsKKwkJCXJldHVybiAwOworCQl9CisJCWlmIChlcnJubyAhPSBFREVBRExLKSB7CisJCQlicmVhazsKKwkJfQorCQkvKiBzbGVlcCBmb3IgYXMgc2hvcnQgYSB0aW1lIGFzIHdlIGNhbiAtIG1vcmUgcG9ydGFibGUgdGhhbiB1c2xlZXAoKSAqLworCQl0di50dl9zZWMgPSAwOworCQl0di50dl91c2VjID0gMTsKKwkJc2VsZWN0KDAsIE5VTEwsIE5VTEwsIE5VTEwsICZ0dik7CisJfQorCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX1RSQUNFLCJ0ZGJfYnJsb2NrX3VwZ3JhZGUgZmFpbGVkIGF0IG9mZnNldCAlZFxuIiwgb2Zmc2V0KSk7CisJcmV0dXJuIC0xOworfQorCisKKy8qIGxvY2sgYSBsaXN0IGluIHRoZSBkYXRhYmFzZS4gbGlzdCAtMSBpcyB0aGUgYWxsb2MgbGlzdCAqLworc3RhdGljIGludCBfdGRiX2xvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBsaXN0LCBpbnQgbHR5cGUsIGludCBvcCkKK3sKKwlzdHJ1Y3QgdGRiX2xvY2tfdHlwZSAqbmV3X2xjazsKKwlpbnQgaTsKKwlib29sIG1hcmtfbG9jayA9ICgobHR5cGUgJiBUREJfTUFSS19MT0NLKSA9PSBUREJfTUFSS19MT0NLKTsKKworCWx0eXBlICY9IH5UREJfTUFSS19MT0NLOworCisJLyogYSBnbG9iYWwgbG9jayBhbGxvd3MgdXMgdG8gYXZvaWQgcGVyIGNoYWluIGxvY2tzICovCisJaWYgKHRkYi0+Z2xvYmFsX2xvY2suY291bnQgJiYKKwkgICAgKGx0eXBlID09IHRkYi0+Z2xvYmFsX2xvY2subHR5cGUgfHwgbHR5cGUgPT0gRl9SRExDSykpIHsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHRkYi0+Z2xvYmFsX2xvY2suY291bnQpIHsKKwkJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfTE9DSywgLTEpOworCX0KKworCWlmIChsaXN0IDwgLTEgfHwgbGlzdCA+PSAoaW50KXRkYi0+aGVhZGVyLmhhc2hfc2l6ZSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwidGRiX2xvY2s6IGludmFsaWQgbGlzdCAlZCBmb3IgbHR5cGU9JWRcbiIsCisJCQkgICBsaXN0LCBsdHlwZSkpOworCQlyZXR1cm4gLTE7CisJfQorCWlmICh0ZGItPmZsYWdzICYgVERCX05PTE9DSykKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGk9MDsgaTx0ZGItPm51bV9sb2NrcmVjczsgaSsrKSB7CisJCWlmICh0ZGItPmxvY2tyZWNzW2ldLmxpc3QgPT0gbGlzdCkgeworCQkJaWYgKHRkYi0+bG9ja3JlY3NbaV0uY291bnQgPT0gMCkgeworCQkJCS8qCisJCQkJICogQ2FuJ3QgaGFwcGVuLCBzZWUgdGRiX3VubG9jaygpLiBJdCBzaG91bGQKKwkJCQkgKiBiZSBhbiBhc3NlcnQuCisJCQkJICovCisJCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfbG9jazogIgorCQkJCQkgImxjay0+Y291bnQgPT0gMCBmb3IgbGlzdCAlZCIsIGxpc3QpKTsKKwkJCX0KKwkJCS8qCisJCQkgKiBKdXN0IGluY3JlbWVudCB0aGUgaW4tbWVtb3J5IHN0cnVjdCwgcG9zaXggbG9ja3MKKwkJCSAqIGRvbid0IHN0YWNrLgorCQkJICovCisJCQl0ZGItPmxvY2tyZWNzW2ldLmNvdW50Kys7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKworCW5ld19sY2sgPSAoc3RydWN0IHRkYl9sb2NrX3R5cGUgKilyZWFsbG9jKAorCQl0ZGItPmxvY2tyZWNzLAorCQlzaXplb2YoKnRkYi0+bG9ja3JlY3MpICogKHRkYi0+bnVtX2xvY2tyZWNzKzEpKTsKKwlpZiAobmV3X2xjayA9PSBOVUxMKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlyZXR1cm4gLTE7CisJfQorCXRkYi0+bG9ja3JlY3MgPSBuZXdfbGNrOworCisJLyogU2luY2UgZmNudGwgbG9ja3MgZG9uJ3QgbmVzdCwgd2UgZG8gYSBsb2NrIGZvciB0aGUgZmlyc3Qgb25lLAorCSAgIGFuZCBzaW1wbHkgYnVtcCB0aGUgY291bnQgZm9yIGZ1dHVyZSBvbmVzICovCisJaWYgKCFtYXJrX2xvY2sgJiYKKwkgICAgdGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYixGUkVFTElTVF9UT1ArNCpsaXN0LCBsdHlwZSwgb3AsCisJCQkJICAgICAwLCAxKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJdGRiLT5udW1fbG9ja3MrKzsKKworCXRkYi0+bG9ja3JlY3NbdGRiLT5udW1fbG9ja3JlY3NdLmxpc3QgPSBsaXN0OworCXRkYi0+bG9ja3JlY3NbdGRiLT5udW1fbG9ja3JlY3NdLmNvdW50ID0gMTsKKwl0ZGItPmxvY2tyZWNzW3RkYi0+bnVtX2xvY2tyZWNzXS5sdHlwZSA9IGx0eXBlOworCXRkYi0+bnVtX2xvY2tyZWNzICs9IDE7CisKKwlyZXR1cm4gMDsKK30KKworLyogbG9jayBhIGxpc3QgaW4gdGhlIGRhdGFiYXNlLiBsaXN0IC0xIGlzIHRoZSBhbGxvYyBsaXN0ICovCitpbnQgdGRiX2xvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBsaXN0LCBpbnQgbHR5cGUpCit7CisJaW50IHJldDsKKwlyZXQgPSBfdGRiX2xvY2sodGRiLCBsaXN0LCBsdHlwZSwgRl9TRVRMS1cpOworCWlmIChyZXQpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfbG9jayBmYWlsZWQgb24gbGlzdCAlZCAiCisJCQkgImx0eXBlPSVkICglcylcbiIsICBsaXN0LCBsdHlwZSwgc3RyZXJyb3IoZXJybm8pKSk7CisJfQorCXJldHVybiByZXQ7Cit9CisKKy8qIGxvY2sgYSBsaXN0IGluIHRoZSBkYXRhYmFzZS4gbGlzdCAtMSBpcyB0aGUgYWxsb2MgbGlzdC4gbm9uLWJsb2NraW5nIGxvY2sgKi8KK2ludCB0ZGJfbG9ja19ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGxpc3QsIGludCBsdHlwZSkKK3sKKwlyZXR1cm4gX3RkYl9sb2NrKHRkYiwgbGlzdCwgbHR5cGUsIEZfU0VUTEspOworfQorCisKKy8qIHVubG9jayB0aGUgZGF0YWJhc2U6IHJldHVybnMgdm9pZCBiZWNhdXNlIGl0J3MgdG9vIGxhdGUgZm9yIGVycm9ycy4gKi8KKwkvKiBjaGFuZ2VkIHRvIHJldHVybiBpbnQgaXQgbWF5IGJlIGludGVyZXN0aW5nIHRvIGtub3cgdGhlcmUKKwkgICBoYXMgYmVlbiBhbiBlcnJvciAgLS1zaW1vICovCitpbnQgdGRiX3VubG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGxpc3QsIGludCBsdHlwZSkKK3sKKwlpbnQgcmV0ID0gLTE7CisJaW50IGk7CisJc3RydWN0IHRkYl9sb2NrX3R5cGUgKmxjayA9IE5VTEw7CisJYm9vbCBtYXJrX2xvY2sgPSAoKGx0eXBlICYgVERCX01BUktfTE9DSykgPT0gVERCX01BUktfTE9DSyk7CisKKwlsdHlwZSAmPSB+VERCX01BUktfTE9DSzsKKworCS8qIGEgZ2xvYmFsIGxvY2sgYWxsb3dzIHVzIHRvIGF2b2lkIHBlciBjaGFpbiBsb2NrcyAqLworCWlmICh0ZGItPmdsb2JhbF9sb2NrLmNvdW50ICYmCisJICAgIChsdHlwZSA9PSB0ZGItPmdsb2JhbF9sb2NrLmx0eXBlIHx8IGx0eXBlID09IEZfUkRMQ0spKSB7CisJCXJldHVybiAwOworCX0KKworCWlmICh0ZGItPmdsb2JhbF9sb2NrLmNvdW50KSB7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0xPQ0ssIC0xKTsKKwl9CisKKwlpZiAodGRiLT5mbGFncyAmIFREQl9OT0xPQ0spCisJCXJldHVybiAwOworCisJLyogU2FuaXR5IGNoZWNrcyAqLworCWlmIChsaXN0IDwgLTEgfHwgbGlzdCA+PSAoaW50KXRkYi0+aGVhZGVyLmhhc2hfc2l6ZSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl91bmxvY2s6IGxpc3QgJWQgaW52YWxpZCAoJWQpXG4iLCBsaXN0LCB0ZGItPmhlYWRlci5oYXNoX3NpemUpKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlmb3IgKGk9MDsgaTx0ZGItPm51bV9sb2NrcmVjczsgaSsrKSB7CisJCWlmICh0ZGItPmxvY2tyZWNzW2ldLmxpc3QgPT0gbGlzdCkgeworCQkJbGNrID0gJnRkYi0+bG9ja3JlY3NbaV07CisJCQlicmVhazsKKwkJfQorCX0KKworCWlmICgobGNrID09IE5VTEwpIHx8IChsY2stPmNvdW50ID09IDApKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX3VubG9jazogY291bnQgaXMgMFxuIikpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKGxjay0+Y291bnQgPiAxKSB7CisJCWxjay0+Y291bnQtLTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBUaGlzIGxvY2sgaGFzIGNvdW50PT0xIGxlZnQsIHNvIHdlIG5lZWQgdG8gdW5sb2NrIGl0IGluIHRoZQorCSAqIGtlcm5lbC4gV2UgZG9uJ3QgYm90aGVyIHdpdGggZGVjcmVtZW50aW5nIHRoZSBpbi1tZW1vcnkgYXJyYXkKKwkgKiBlbGVtZW50LCB3ZSdyZSBhYm91dCB0byBvdmVyd3JpdGUgaXQgd2l0aCB0aGUgbGFzdCBhcnJheSBlbGVtZW50CisJICogYW55d2F5LgorCSAqLworCisJaWYgKG1hcmtfbG9jaykgeworCQlyZXQgPSAwOworCX0gZWxzZSB7CisJCXJldCA9IHRkYi0+bWV0aG9kcy0+dGRiX2JybG9jayh0ZGIsIEZSRUVMSVNUX1RPUCs0Kmxpc3QsIEZfVU5MQ0ssCisJCQkJCSAgICAgICBGX1NFVExLVywgMCwgMSk7CisJfQorCXRkYi0+bnVtX2xvY2tzLS07CisKKwkvKgorCSAqIFNocmluayB0aGUgYXJyYXkgYnkgb3ZlcndyaXRpbmcgdGhlIGVsZW1lbnQganVzdCB1bmxvY2tlZCB3aXRoIHRoZQorCSAqIGxhc3QgYXJyYXkgZWxlbWVudC4KKwkgKi8KKworCWlmICh0ZGItPm51bV9sb2NrcmVjcyA+IDEpIHsKKwkJKmxjayA9IHRkYi0+bG9ja3JlY3NbdGRiLT5udW1fbG9ja3JlY3MtMV07CisJfQorCXRkYi0+bnVtX2xvY2tyZWNzIC09IDE7CisKKwkvKgorCSAqIFdlIGRvbid0IGJvdGhlciB3aXRoIHJlYWxsb2Mgd2hlbiB0aGUgYXJyYXkgc2hyaW5rcywgYnV0IGlmIHdlIGhhdmUKKwkgKiBhIGNvbXBsZXRlbHkgaWRsZSB0ZGIgd2Ugc2hvdWxkIGdldCByaWQgb2YgdGhlIGxvY2tlZCBhcnJheS4KKwkgKi8KKworCWlmICh0ZGItPm51bV9sb2NrcmVjcyA9PSAwKSB7CisJCVNBRkVfRlJFRSh0ZGItPmxvY2tyZWNzKTsKKwl9CisKKwlpZiAocmV0KQorCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl91bmxvY2s6IEFuIGVycm9yIG9jY3VycmVkIHVubG9ja2luZyFcbiIpKTsKKwlyZXR1cm4gcmV0OworfQorCisvKgorICBnZXQgdGhlIHRyYW5zYWN0aW9uIGxvY2sKKyAqLworaW50IHRkYl90cmFuc2FjdGlvbl9sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgbHR5cGUpCit7CisJaWYgKHRkYi0+aGF2ZV90cmFuc2FjdGlvbl9sb2NrIHx8IHRkYi0+Z2xvYmFsX2xvY2suY291bnQpIHsKKwkJcmV0dXJuIDA7CisJfQorCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9icmxvY2sodGRiLCBUUkFOU0FDVElPTl9MT0NLLCBsdHlwZSwKKwkJCQkgICAgIEZfU0VUTEtXLCAwLCAxKSA9PSAtMSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl90cmFuc2FjdGlvbl9sb2NrOiBmYWlsZWQgdG8gZ2V0IHRyYW5zYWN0aW9uIGxvY2tcbiIpKTsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfTE9DSzsKKwkJcmV0dXJuIC0xOworCX0KKwl0ZGItPmhhdmVfdHJhbnNhY3Rpb25fbG9jayA9IDE7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgIHJlbGVhc2UgdGhlIHRyYW5zYWN0aW9uIGxvY2sKKyAqLworaW50IHRkYl90cmFuc2FjdGlvbl91bmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJaW50IHJldDsKKwlpZiAoIXRkYi0+aGF2ZV90cmFuc2FjdGlvbl9sb2NrKSB7CisJCXJldHVybiAwOworCX0KKwlyZXQgPSB0ZGItPm1ldGhvZHMtPnRkYl9icmxvY2sodGRiLCBUUkFOU0FDVElPTl9MT0NLLCBGX1VOTENLLCBGX1NFVExLVywgMCwgMSk7CisJaWYgKHJldCA9PSAwKSB7CisJCXRkYi0+aGF2ZV90cmFuc2FjdGlvbl9sb2NrID0gMDsKKwl9CisJcmV0dXJuIHJldDsKK30KKworCisKKworLyogbG9jay91bmxvY2sgZW50aXJlIGRhdGFiYXNlICovCitzdGF0aWMgaW50IF90ZGJfbG9ja2FsbChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGx0eXBlLCBpbnQgb3ApCit7CisJYm9vbCBtYXJrX2xvY2sgPSAoKGx0eXBlICYgVERCX01BUktfTE9DSykgPT0gVERCX01BUktfTE9DSyk7CisKKwlsdHlwZSAmPSB+VERCX01BUktfTE9DSzsKKworCS8qIFRoZXJlIGFyZSBubyBsb2NrcyBvbiByZWFkLW9ubHkgZGJzICovCisJaWYgKHRkYi0+cmVhZF9vbmx5IHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkKKwkJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfTE9DSywgLTEpOworCisJaWYgKHRkYi0+Z2xvYmFsX2xvY2suY291bnQgJiYgdGRiLT5nbG9iYWxfbG9jay5sdHlwZSA9PSBsdHlwZSkgeworCQl0ZGItPmdsb2JhbF9sb2NrLmNvdW50Kys7CisJCXJldHVybiAwOworCX0KKworCWlmICh0ZGItPmdsb2JhbF9sb2NrLmNvdW50KSB7CisJCS8qIGEgZ2xvYmFsIGxvY2sgb2YgYSBkaWZmZXJlbnQgdHlwZSBleGlzdHMgKi8KKwkJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfTE9DSywgLTEpOworCX0KKworCWlmICh0ZGItPm51bV9sb2NrcyAhPSAwKSB7CisJCS8qIGNhbid0IGNvbWJpbmUgZ2xvYmFsIGFuZCBjaGFpbiBsb2NrcyAqLworCQlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9MT0NLLCAtMSk7CisJfQorCisJaWYgKCFtYXJrX2xvY2sgJiYKKwkgICAgdGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYiwgRlJFRUxJU1RfVE9QLCBsdHlwZSwgb3AsCisJCQkJICAgICAwLCA0KnRkYi0+aGVhZGVyLmhhc2hfc2l6ZSkpIHsKKwkJaWYgKG9wID09IEZfU0VUTEtXKSB7CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl9sb2NrYWxsIGZhaWxlZCAoJXMpXG4iLCBzdHJlcnJvcihlcnJubykpKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJdGRiLT5nbG9iYWxfbG9jay5jb3VudCA9IDE7CisJdGRiLT5nbG9iYWxfbG9jay5sdHlwZSA9IGx0eXBlOworCisJcmV0dXJuIDA7Cit9CisKKworCisvKiB1bmxvY2sgZW50aXJlIGRiICovCitzdGF0aWMgaW50IF90ZGJfdW5sb2NrYWxsKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgbHR5cGUpCit7CisJYm9vbCBtYXJrX2xvY2sgPSAoKGx0eXBlICYgVERCX01BUktfTE9DSykgPT0gVERCX01BUktfTE9DSyk7CisKKwlsdHlwZSAmPSB+VERCX01BUktfTE9DSzsKKworCS8qIFRoZXJlIGFyZSBubyBsb2NrcyBvbiByZWFkLW9ubHkgZGJzICovCisJaWYgKHRkYi0+cmVhZF9vbmx5IHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkgeworCQlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9MT0NLLCAtMSk7CisJfQorCisJaWYgKHRkYi0+Z2xvYmFsX2xvY2subHR5cGUgIT0gbHR5cGUgfHwgdGRiLT5nbG9iYWxfbG9jay5jb3VudCA9PSAwKSB7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0xPQ0ssIC0xKTsKKwl9CisKKwlpZiAodGRiLT5nbG9iYWxfbG9jay5jb3VudCA+IDEpIHsKKwkJdGRiLT5nbG9iYWxfbG9jay5jb3VudC0tOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoIW1hcmtfbG9jayAmJgorCSAgICB0ZGItPm1ldGhvZHMtPnRkYl9icmxvY2sodGRiLCBGUkVFTElTVF9UT1AsIEZfVU5MQ0ssIEZfU0VUTEtXLAorCQkJCSAgICAgMCwgNCp0ZGItPmhlYWRlci5oYXNoX3NpemUpKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX3VubG9ja2FsbCBmYWlsZWQgKCVzKVxuIiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwl0ZGItPmdsb2JhbF9sb2NrLmNvdW50ID0gMDsKKwl0ZGItPmdsb2JhbF9sb2NrLmx0eXBlID0gMDsKKworCXJldHVybiAwOworfQorCisvKiBsb2NrIGVudGlyZSBkYXRhYmFzZSB3aXRoIHdyaXRlIGxvY2sgKi8KK2ludCB0ZGJfbG9ja2FsbChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlyZXR1cm4gX3RkYl9sb2NrYWxsKHRkYiwgRl9XUkxDSywgRl9TRVRMS1cpOworfQorCisvKiBsb2NrIGVudGlyZSBkYXRhYmFzZSB3aXRoIHdyaXRlIGxvY2sgLSBtYXJrIG9ubHkgKi8KK2ludCB0ZGJfbG9ja2FsbF9tYXJrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiBfdGRiX2xvY2thbGwodGRiLCBGX1dSTENLIHwgVERCX01BUktfTE9DSywgRl9TRVRMS1cpOworfQorCisvKiB1bmxvY2sgZW50aXJlIGRhdGFiYXNlIHdpdGggd3JpdGUgbG9jayAtIHVubWFyayBvbmx5ICovCitpbnQgdGRiX2xvY2thbGxfdW5tYXJrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiBfdGRiX3VubG9ja2FsbCh0ZGIsIEZfV1JMQ0sgfCBUREJfTUFSS19MT0NLKTsKK30KKworLyogbG9jayBlbnRpcmUgZGF0YWJhc2Ugd2l0aCB3cml0ZSBsb2NrIC0gbm9uYmxvY2tpbmcgdmFyaWVudCAqLworaW50IHRkYl9sb2NrYWxsX25vbmJsb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiBfdGRiX2xvY2thbGwodGRiLCBGX1dSTENLLCBGX1NFVExLKTsKK30KKworLyogdW5sb2NrIGVudGlyZSBkYXRhYmFzZSB3aXRoIHdyaXRlIGxvY2sgKi8KK2ludCB0ZGJfdW5sb2NrYWxsKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiBfdGRiX3VubG9ja2FsbCh0ZGIsIEZfV1JMQ0spOworfQorCisvKiBsb2NrIGVudGlyZSBkYXRhYmFzZSB3aXRoIHJlYWQgbG9jayAqLworaW50IHRkYl9sb2NrYWxsX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJcmV0dXJuIF90ZGJfbG9ja2FsbCh0ZGIsIEZfUkRMQ0ssIEZfU0VUTEtXKTsKK30KKworLyogbG9jayBlbnRpcmUgZGF0YWJhc2Ugd2l0aCByZWFkIGxvY2sgLSBub25ibG9jayB2YXJpZW50ICovCitpbnQgdGRiX2xvY2thbGxfcmVhZF9ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlyZXR1cm4gX3RkYl9sb2NrYWxsKHRkYiwgRl9SRExDSywgRl9TRVRMSyk7Cit9CisKKy8qIHVubG9jayBlbnRpcmUgZGF0YWJhc2Ugd2l0aCByZWFkIGxvY2sgKi8KK2ludCB0ZGJfdW5sb2NrYWxsX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJcmV0dXJuIF90ZGJfdW5sb2NrYWxsKHRkYiwgRl9SRExDSyk7Cit9CisKKy8qIGxvY2svdW5sb2NrIG9uZSBoYXNoIGNoYWluLiBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgdG8gcmVkdWNlCisgICBjb250ZW50aW9uIC0gaXQgY2Fubm90IGd1YXJhbnRlZSBob3cgbWFueSByZWNvcmRzIHdpbGwgYmUgbG9ja2VkICovCitpbnQgdGRiX2NoYWlubG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KQoreworCXJldHVybiB0ZGJfbG9jayh0ZGIsIEJVQ0tFVCh0ZGItPmhhc2hfZm4oJmtleSkpLCBGX1dSTENLKTsKK30KKworLyogbG9jay91bmxvY2sgb25lIGhhc2ggY2hhaW4sIG5vbi1ibG9ja2luZy4gVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkCisgICB0byByZWR1Y2UgY29udGVudGlvbiAtIGl0IGNhbm5vdCBndWFyYW50ZWUgaG93IG1hbnkgcmVjb3JkcyB3aWxsIGJlCisgICBsb2NrZWQgKi8KK2ludCB0ZGJfY2hhaW5sb2NrX25vbmJsb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpCit7CisJcmV0dXJuIHRkYl9sb2NrX25vbmJsb2NrKHRkYiwgQlVDS0VUKHRkYi0+aGFzaF9mbigma2V5KSksIEZfV1JMQ0spOworfQorCisvKiBtYXJrIGEgY2hhaW4gYXMgbG9ja2VkIHdpdGhvdXQgYWN0dWFsbHkgbG9ja2luZyBpdC4gV2FybmluZyEgdXNlIHdpdGggZ3JlYXQgY2F1dGlvbiEgKi8KK2ludCB0ZGJfY2hhaW5sb2NrX21hcmsoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSkKK3sKKwlyZXR1cm4gdGRiX2xvY2sodGRiLCBCVUNLRVQodGRiLT5oYXNoX2ZuKCZrZXkpKSwgRl9XUkxDSyB8IFREQl9NQVJLX0xPQ0spOworfQorCisvKiB1bm1hcmsgYSBjaGFpbiBhcyBsb2NrZWQgd2l0aG91dCBhY3R1YWxseSBsb2NraW5nIGl0LiBXYXJuaW5nISB1c2Ugd2l0aCBncmVhdCBjYXV0aW9uISAqLworaW50IHRkYl9jaGFpbmxvY2tfdW5tYXJrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpCit7CisJcmV0dXJuIHRkYl91bmxvY2sodGRiLCBCVUNLRVQodGRiLT5oYXNoX2ZuKCZrZXkpKSwgRl9XUkxDSyB8IFREQl9NQVJLX0xPQ0spOworfQorCitpbnQgdGRiX2NoYWludW5sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpCit7CisJcmV0dXJuIHRkYl91bmxvY2sodGRiLCBCVUNLRVQodGRiLT5oYXNoX2ZuKCZrZXkpKSwgRl9XUkxDSyk7Cit9CisKK2ludCB0ZGJfY2hhaW5sb2NrX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSkKK3sKKwlyZXR1cm4gdGRiX2xvY2sodGRiLCBCVUNLRVQodGRiLT5oYXNoX2ZuKCZrZXkpKSwgRl9SRExDSyk7Cit9CisKK2ludCB0ZGJfY2hhaW51bmxvY2tfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KQoreworCXJldHVybiB0ZGJfdW5sb2NrKHRkYiwgQlVDS0VUKHRkYi0+aGFzaF9mbigma2V5KSksIEZfUkRMQ0spOworfQorCisKKworLyogcmVjb3JkIGxvY2sgc3RvcHMgZGVsZXRlIHVuZGVybmVhdGggKi8KK2ludCB0ZGJfbG9ja19yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYpCit7CisJcmV0dXJuIG9mZiA/IHRkYi0+bWV0aG9kcy0+dGRiX2JybG9jayh0ZGIsIG9mZiwgRl9SRExDSywgRl9TRVRMS1csIDAsIDEpIDogMDsKK30KKworLyoKKyAgV3JpdGUgbG9ja3Mgb3ZlcnJpZGUgb3VyIG93biBmY250bCByZWFkbG9ja3MsIHNvIGNoZWNrIGl0IGhlcmUuCisgIE5vdGUgdGhpcyBpcyBtZWFudCB0byBiZSBGX1NFVExLLCAqbm90KiBGX1NFVExLVywgYXMgaXQncyBub3QKKyAgYW4gZXJyb3IgdG8gZmFpbCB0byBnZXQgdGhlIGxvY2sgaGVyZS4KKyovCitpbnQgdGRiX3dyaXRlX2xvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKQoreworCXN0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayAqaTsKKwlmb3IgKGkgPSAmdGRiLT50cmF2bG9ja3M7IGk7IGkgPSBpLT5uZXh0KQorCQlpZiAoaS0+b2ZmID09IG9mZikKKwkJCXJldHVybiAtMTsKKwlyZXR1cm4gdGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYiwgb2ZmLCBGX1dSTENLLCBGX1NFVExLLCAxLCAxKTsKK30KKworLyoKKyAgTm90ZSB0aGlzIGlzIG1lYW50IHRvIGJlIEZfU0VUTEssICpub3QqIEZfU0VUTEtXLCBhcyBpdCdzIG5vdAorICBhbiBlcnJvciB0byBmYWlsIHRvIGdldCB0aGUgbG9jayBoZXJlLgorKi8KK2ludCB0ZGJfd3JpdGVfdW5sb2NrX3JlY29yZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZikKK3sKKwlyZXR1cm4gdGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYiwgb2ZmLCBGX1VOTENLLCBGX1NFVExLLCAwLCAxKTsKK30KKworLyogZmNudGwgbG9ja3MgZG9uJ3Qgc3RhY2s6IGF2b2lkIHVubG9ja2luZyBzb21lb25lIGVsc2UncyAqLworaW50IHRkYl91bmxvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKQoreworCXN0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayAqaTsKKwl1MzIgY291bnQgPSAwOworCisJaWYgKG9mZiA9PSAwKQorCQlyZXR1cm4gMDsKKwlmb3IgKGkgPSAmdGRiLT50cmF2bG9ja3M7IGk7IGkgPSBpLT5uZXh0KQorCQlpZiAoaS0+b2ZmID09IG9mZikKKwkJCWNvdW50Kys7CisJcmV0dXJuIChjb3VudCA9PSAxID8gdGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYiwgb2ZmLCBGX1VOTENLLCBGX1NFVExLVywgMCwgMSkgOiAwKTsKK30KKworLyogZmlsZTogaW8uYyAqLworCisvKiBjaGVjayBmb3IgYW4gb3V0IG9mIGJvdW5kcyBhY2Nlc3MgLSBpZiBpdCBpcyBvdXQgb2YgYm91bmRzIHRoZW4KKyAgIHNlZSBpZiB0aGUgZGF0YWJhc2UgaGFzIGJlZW4gZXhwYW5kZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBleHBhbmQKKyAgIGlmIG5lY2Vzc2FyeQorICAgbm90ZSB0aGF0ICJsZW4iIGlzIHRoZSBtaW5pbXVtIGxlbmd0aCBuZWVkZWQgZm9yIHRoZSBkYgorKi8KK3N0YXRpYyBpbnQgdGRiX29vYihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IGxlbiwgaW50IHByb2JlKQoreworCXN0cnVjdCBzdGF0IHN0OworCWlmIChsZW4gPD0gdGRiLT5tYXBfc2l6ZSkKKwkJcmV0dXJuIDA7CisJaWYgKHRkYi0+ZmxhZ3MgJiBUREJfSU5URVJOQUwpIHsKKwkJaWYgKCFwcm9iZSkgeworCQkJLyogRW5zdXJlIGVjb2RlIGlzIHNldCBmb3IgbG9nIGZuLiAqLworCQkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwidGRiX29vYiBsZW4gJWQgYmV5b25kIGludGVybmFsIG1hbGxvYyBzaXplICVkXG4iLAorCQkJCSAoaW50KWxlbiwgKGludCl0ZGItPm1hcF9zaXplKSk7CisJCX0KKwkJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfSU8sIC0xKTsKKwl9CisKKwlpZiAoZnN0YXQodGRiLT5mZCwgJnN0KSA9PSAtMSkgeworCQlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9JTywgLTEpOworCX0KKworCWlmIChzdC5zdF9zaXplIDwgKHNpemVfdClsZW4pIHsKKwkJaWYgKCFwcm9iZSkgeworCQkJLyogRW5zdXJlIGVjb2RlIGlzIHNldCBmb3IgbG9nIGZuLiAqLworCQkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwidGRiX29vYiBsZW4gJWQgYmV5b25kIGVvZiBhdCAlZFxuIiwKKwkJCQkgKGludClsZW4sIChpbnQpc3Quc3Rfc2l6ZSkpOworCQl9CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0lPLCAtMSk7CisJfQorCisJLyogVW5tYXAsIHVwZGF0ZSBzaXplLCByZW1hcCAqLworCWlmICh0ZGJfbXVubWFwKHRkYikgPT0gLTEpCisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0lPLCAtMSk7CisJdGRiLT5tYXBfc2l6ZSA9IHN0LnN0X3NpemU7CisJdGRiX21tYXAodGRiKTsKKwlyZXR1cm4gMDsKK30KKworLyogd3JpdGUgYSBsdW1wIG9mIGRhdGEgYXQgYSBzcGVjaWZpZWQgb2Zmc2V0ICovCitzdGF0aWMgaW50IHRkYl93cml0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwKKwkJICAgICBjb25zdCB2b2lkICpidWYsIHRkYl9sZW5fdCBsZW4pCit7CisJaWYgKGxlbiA9PSAwKSB7CisJCXJldHVybiAwOworCX0KKworCWlmICh0ZGItPnJlYWRfb25seSB8fCB0ZGItPnRyYXZlcnNlX3JlYWQpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfUkRPTkxZOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX29vYih0ZGIsIG9mZiArIGxlbiwgMCkgIT0gMCkKKwkJcmV0dXJuIC0xOworCisJaWYgKHRkYi0+bWFwX3B0cikgeworCQltZW1jcHkob2ZmICsgKGNoYXIgKil0ZGItPm1hcF9wdHIsIGJ1ZiwgbGVuKTsKKwl9IGVsc2UgaWYgKHB3cml0ZSh0ZGItPmZkLCBidWYsIGxlbiwgb2ZmKSAhPSAoc3NpemVfdClsZW4pIHsKKwkJLyogRW5zdXJlIGVjb2RlIGlzIHNldCBmb3IgbG9nIGZuLiAqLworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsInRkYl93cml0ZSBmYWlsZWQgYXQgJWQgbGVuPSVkICglcylcbiIsCisJCQkgICBvZmYsIGxlbiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0lPLCAtMSk7CisJfQorCXJldHVybiAwOworfQorCisvKiBFbmRpYW4gY29udmVyc2lvbjogd2Ugb25seSBldmVyIGRlYWwgd2l0aCA0IGJ5dGUgcXVhbnRpdGllcyAqLwordm9pZCAqdGRiX2NvbnZlcnQodm9pZCAqYnVmLCB1MzIgc2l6ZSkKK3sKKwl1MzIgaSwgKnAgPSAodTMyICopYnVmOworCWZvciAoaSA9IDA7IGkgPCBzaXplIC8gNDsgaSsrKQorCQlwW2ldID0gVERCX0JZVEVSRVYocFtpXSk7CisJcmV0dXJuIGJ1ZjsKK30KKworCisvKiByZWFkIGEgbHVtcCBvZiBkYXRhIGF0IGEgc3BlY2lmaWVkIG9mZnNldCwgbWF5YmUgY29udmVydCAqLworc3RhdGljIGludCB0ZGJfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwgdm9pZCAqYnVmLAorCQkgICAgdGRiX2xlbl90IGxlbiwgaW50IGN2KQoreworCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9vb2IodGRiLCBvZmYgKyBsZW4sIDApICE9IDApIHsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICh0ZGItPm1hcF9wdHIpIHsKKwkJbWVtY3B5KGJ1Ziwgb2ZmICsgKGNoYXIgKil0ZGItPm1hcF9wdHIsIGxlbik7CisJfSBlbHNlIHsKKwkJc3NpemVfdCByZXQgPSBwcmVhZCh0ZGItPmZkLCBidWYsIGxlbiwgb2ZmKTsKKwkJaWYgKHJldCAhPSAoc3NpemVfdClsZW4pIHsKKwkJCS8qIEVuc3VyZSBlY29kZSBpcyBzZXQgZm9yIGxvZyBmbi4gKi8KKwkJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsInRkYl9yZWFkIGZhaWxlZCBhdCAlZCAiCisJCQkJICJsZW49JWQgcmV0PSVkICglcykgbWFwX3NpemU9JWRcbiIsCisJCQkJIChpbnQpb2ZmLCAoaW50KWxlbiwgKGludClyZXQsIHN0cmVycm9yKGVycm5vKSwKKwkJCQkgKGludCl0ZGItPm1hcF9zaXplKSk7CisJCQlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9JTywgLTEpOworCQl9CisJfQorCWlmIChjdikgeworCQl0ZGJfY29udmVydChidWYsIGxlbik7CisJfQorCXJldHVybiAwOworfQorCisKKworLyoKKyAgZG8gYW4gdW5sb2NrZWQgc2NhbiBvZiB0aGUgaGFzaCB0YWJsZSBoZWFkcyB0byBmaW5kIHRoZSBuZXh0IG5vbi16ZXJvIGhlYWQuIFRoZSB2YWx1ZQorICB3aWxsIHRoZW4gYmUgY29uZmlybWVkIHdpdGggdGhlIGxvY2sgaGVsZAorKi8KK3N0YXRpYyB2b2lkIHRkYl9uZXh0X2hhc2hfY2hhaW4oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHUzMiAqY2hhaW4pCit7CisJdTMyIGggPSAqY2hhaW47CisJaWYgKHRkYi0+bWFwX3B0cikgeworCQlmb3IgKDtoIDwgdGRiLT5oZWFkZXIuaGFzaF9zaXplO2grKykgeworCQkJaWYgKDAgIT0gKih1MzIgKikoVERCX0hBU0hfVE9QKGgpICsgKHVuc2lnbmVkIGNoYXIgKil0ZGItPm1hcF9wdHIpKSB7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9IGVsc2UgeworCQl1MzIgb2ZmPTA7CisJCWZvciAoO2ggPCB0ZGItPmhlYWRlci5oYXNoX3NpemU7aCsrKSB7CisJCQlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX0hBU0hfVE9QKGgpLCAmb2ZmKSAhPSAwIHx8IG9mZiAhPSAwKSB7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisJKCpjaGFpbikgPSBoOworfQorCisKK2ludCB0ZGJfbXVubWFwKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCWlmICh0ZGItPmZsYWdzICYgVERCX0lOVEVSTkFMKQorCQlyZXR1cm4gMDsKKworI2lmZGVmIEhBVkVfTU1BUAorCWlmICh0ZGItPm1hcF9wdHIpIHsKKwkJaW50IHJldCA9IG11bm1hcCh0ZGItPm1hcF9wdHIsIHRkYi0+cmVhbF9tYXBfc2l6ZSk7CisJCWlmIChyZXQgIT0gMCkKKwkJCXJldHVybiByZXQ7CisJCXRkYi0+cmVhbF9tYXBfc2l6ZSA9IDA7CisJfQorI2VuZGlmCisJdGRiLT5tYXBfcHRyID0gTlVMTDsKKwlyZXR1cm4gMDsKK30KKwordm9pZCB0ZGJfbW1hcChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlpZiAodGRiLT5mbGFncyAmIFREQl9JTlRFUk5BTCkKKwkJcmV0dXJuOworCisjaWZkZWYgSEFWRV9NTUFQCisJaWYgKCEodGRiLT5mbGFncyAmIFREQl9OT01NQVApKSB7CisJCXRkYi0+bWFwX3B0ciA9IG1tYXAoTlVMTCwgdGRiLT5tYXBfc2l6ZSwKKwkJCQkgICAgUFJPVF9SRUFEfCh0ZGItPnJlYWRfb25seT8gMDpQUk9UX1dSSVRFKSwKKwkJCQkgICAgTUFQX1NIQVJFRHxNQVBfRklMRSwgdGRiLT5mZCwgMCk7CisKKwkJLyoKKwkJICogTkIuIFdoZW4gbW1hcCBmYWlscyBpdCByZXR1cm5zIE1BUF9GQUlMRUQgKk5PVCogTlVMTCAhISEhCisJCSAqLworCisJCWlmICh0ZGItPm1hcF9wdHIgPT0gTUFQX0ZBSUxFRCkgeworCQkJdGRiLT5yZWFsX21hcF9zaXplID0gMDsKKwkJCXRkYi0+bWFwX3B0ciA9IE5VTEw7CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19XQVJOSU5HLCAidGRiX21tYXAgZmFpbGVkIGZvciBzaXplICVkICglcylcbiIsCisJCQkJIHRkYi0+bWFwX3NpemUsIHN0cmVycm9yKGVycm5vKSkpOworCQl9CisJCXRkYi0+cmVhbF9tYXBfc2l6ZSA9IHRkYi0+bWFwX3NpemU7CisJfSBlbHNlIHsKKwkJdGRiLT5tYXBfcHRyID0gTlVMTDsKKwl9CisjZWxzZQorCXRkYi0+bWFwX3B0ciA9IE5VTEw7CisjZW5kaWYKK30KKworLyogZXhwYW5kIGEgZmlsZS4gIHdlIHByZWZlciB0byB1c2UgZnRydW5jYXRlLCBhcyB0aGF0IGlzIHdoYXQgcG9zaXgKKyAgc2F5cyB0byB1c2UgZm9yIG1tYXAgZXhwYW5zaW9uICovCitzdGF0aWMgaW50IHRkYl9leHBhbmRfZmlsZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IHNpemUsIHRkYl9vZmZfdCBhZGRpdGlvbikKK3sKKwljaGFyIGJ1ZlsxMDI0XTsKKworCWlmICh0ZGItPnJlYWRfb25seSB8fCB0ZGItPnRyYXZlcnNlX3JlYWQpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfUkRPTkxZOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKGZ0cnVuY2F0ZSh0ZGItPmZkLCBzaXplK2FkZGl0aW9uKSA9PSAtMSkgeworCQljaGFyIGIgPSAwOworCQlpZiAocHdyaXRlKHRkYi0+ZmQsICAmYiwgMSwgKHNpemUrYWRkaXRpb24pIC0gMSkgIT0gMSkgeworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJleHBhbmRfZmlsZSB0byAlZCBmYWlsZWQgKCVzKVxuIiwKKwkJCQkgc2l6ZSthZGRpdGlvbiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwl9CisKKwkvKiBub3cgZmlsbCB0aGUgZmlsZSB3aXRoIHNvbWV0aGluZy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlCisJICAgZmlsZSBpc24ndCBzcGFyc2UsIHdoaWNoIHdvdWxkIGJlIHZlcnkgYmFkIGlmIHdlIHJhbiBvdXQgb2YKKwkgICBkaXNrLiBUaGlzIG11c3QgYmUgZG9uZSB3aXRoIHdyaXRlLCBub3QgdmlhIG1tYXAgKi8KKwltZW1zZXQoYnVmLCBUREJfUEFEX0JZVEUsIHNpemVvZihidWYpKTsKKwl3aGlsZSAoYWRkaXRpb24pIHsKKwkJaW50IG4gPSBhZGRpdGlvbj5zaXplb2YoYnVmKT9zaXplb2YoYnVmKTphZGRpdGlvbjsKKwkJaW50IHJldCA9IHB3cml0ZSh0ZGItPmZkLCBidWYsIG4sIHNpemUpOworCQlpZiAocmV0ICE9IG4pIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAiZXhwYW5kX2ZpbGUgd3JpdGUgb2YgJWQgZmFpbGVkICglcylcbiIsCisJCQkJICAgbiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJYWRkaXRpb24gLT0gbjsKKwkJc2l6ZSArPSBuOworCX0KKwlyZXR1cm4gMDsKK30KKworCisvKiBleHBhbmQgdGhlIGRhdGFiYXNlIGF0IGxlYXN0IHNpemUgYnl0ZXMgYnkgZXhwYW5kaW5nIHRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGFuZCBkb2luZyB0aGUgbW1hcCBhZ2FpbiBpZiBuZWNlc3NhcnkgKi8KK2ludCB0ZGJfZXhwYW5kKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgc2l6ZSkKK3sKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCXRkYl9vZmZfdCBvZmZzZXQ7CisKKwlpZiAodGRiX2xvY2sodGRiLCAtMSwgRl9XUkxDSykgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJsb2NrIGZhaWxlZCBpbiB0ZGJfZXhwYW5kXG4iKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiBtdXN0IGtub3cgYWJvdXQgYW55IHByZXZpb3VzIGV4cGFuc2lvbnMgYnkgYW5vdGhlciBwcm9jZXNzICovCisJdGRiLT5tZXRob2RzLT50ZGJfb29iKHRkYiwgdGRiLT5tYXBfc2l6ZSArIDEsIDEpOworCisJLyogYWx3YXlzIG1ha2Ugcm9vbSBmb3IgYXQgbGVhc3QgMTAgbW9yZSByZWNvcmRzLCBhbmQgcm91bmQKKyAgICAgICAgICAgdGhlIGRhdGFiYXNlIHVwIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHBhZ2Ugc2l6ZSAqLworCXNpemUgPSBUREJfQUxJR04odGRiLT5tYXBfc2l6ZSArIHNpemUqMTAsIHRkYi0+cGFnZV9zaXplKSAtIHRkYi0+bWFwX3NpemU7CisKKwlpZiAoISh0ZGItPmZsYWdzICYgVERCX0lOVEVSTkFMKSkKKwkJdGRiX211bm1hcCh0ZGIpOworCisJLyoKKwkgKiBXZSBtdXN0IGVuc3VyZSB0aGUgZmlsZSBpcyB1bm1hcHBlZCBiZWZvcmUgZG9pbmcgdGhpcworCSAqIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSB3aXRoIHN5c3RlbXMgbGlrZSBPcGVuQlNEIHdoZXJlCisJICogd3JpdGVzIGFuZCBtbWFwcyBhcmUgbm90IGNvbnNpc3RlbnQuCisJICovCisKKwkvKiBleHBhbmQgdGhlIGZpbGUgaXRzZWxmICovCisJaWYgKCEodGRiLT5mbGFncyAmIFREQl9JTlRFUk5BTCkpIHsKKwkJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX2V4cGFuZF9maWxlKHRkYiwgdGRiLT5tYXBfc2l6ZSwgc2l6ZSkgIT0gMCkKKwkJCWdvdG8gZmFpbDsKKwl9CisKKwl0ZGItPm1hcF9zaXplICs9IHNpemU7CisKKwlpZiAodGRiLT5mbGFncyAmIFREQl9JTlRFUk5BTCkgeworCQljaGFyICpuZXdfbWFwX3B0ciA9IChjaGFyICopcmVhbGxvYyh0ZGItPm1hcF9wdHIsCisJCQkJCQkgICAgdGRiLT5tYXBfc2l6ZSk7CisJCWlmICghbmV3X21hcF9wdHIpIHsKKwkJCXRkYi0+bWFwX3NpemUgLT0gc2l6ZTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCQl0ZGItPm1hcF9wdHIgPSBuZXdfbWFwX3B0cjsKKwl9IGVsc2UgeworCQkvKgorCQkgKiBXZSBtdXN0IGVuc3VyZSB0aGUgZmlsZSBpcyByZW1hcHBlZCBiZWZvcmUgYWRkaW5nIHRoZSBzcGFjZQorCQkgKiB0byBlbnN1cmUgY29uc2lzdGVuY3kgd2l0aCBzeXN0ZW1zIGxpa2UgT3BlbkJTRCB3aGVyZQorCQkgKiB3cml0ZXMgYW5kIG1tYXBzIGFyZSBub3QgY29uc2lzdGVudC4KKwkJICovCisKKwkJLyogV2UncmUgb2sgaWYgdGhlIG1tYXAgZmFpbHMgYXMgd2UnbGwgZmFsbGJhY2sgdG8gcmVhZC93cml0ZSAqLworCQl0ZGJfbW1hcCh0ZGIpOworCX0KKworCS8qIGZvcm0gYSBuZXcgZnJlZWxpc3QgcmVjb3JkICovCisJbWVtc2V0KCZyZWMsJ1wwJyxzaXplb2YocmVjKSk7CisJcmVjLnJlY19sZW4gPSBzaXplIC0gc2l6ZW9mKHJlYyk7CisKKwkvKiBsaW5rIGl0IGludG8gdGhlIGZyZWUgbGlzdCAqLworCW9mZnNldCA9IHRkYi0+bWFwX3NpemUgLSBzaXplOworCWlmICh0ZGJfZnJlZSh0ZGIsIG9mZnNldCwgJnJlYykgPT0gLTEpCisJCWdvdG8gZmFpbDsKKworCXRkYl91bmxvY2sodGRiLCAtMSwgRl9XUkxDSyk7CisJcmV0dXJuIDA7CisgZmFpbDoKKwl0ZGJfdW5sb2NrKHRkYiwgLTEsIEZfV1JMQ0spOworCXJldHVybiAtMTsKK30KKworLyogcmVhZC93cml0ZSBhIHRkYl9vZmZfdCAqLworaW50IHRkYl9vZnNfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX29mZl90ICpkKQoreworCXJldHVybiB0ZGItPm1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgb2Zmc2V0LCAoY2hhciopZCwgc2l6ZW9mKCpkKSwgRE9DT05WKCkpOworfQorCitpbnQgdGRiX29mc193cml0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX29mZl90ICpkKQoreworCXRkYl9vZmZfdCBvZmYgPSAqZDsKKwlyZXR1cm4gdGRiLT5tZXRob2RzLT50ZGJfd3JpdGUodGRiLCBvZmZzZXQsIENPTlZFUlQob2ZmKSwgc2l6ZW9mKCpkKSk7Cit9CisKKworLyogcmVhZCBhIGx1bXAgb2YgZGF0YSwgYWxsb2NhdGluZyB0aGUgc3BhY2UgZm9yIGl0ICovCit1bnNpZ25lZCBjaGFyICp0ZGJfYWxsb2NfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX2xlbl90IGxlbikKK3sKKwl1bnNpZ25lZCBjaGFyICpidWY7CisKKwkvKiBzb21lIHN5c3RlbXMgZG9uJ3QgbGlrZSB6ZXJvIGxlbmd0aCBtYWxsb2MgKi8KKwlpZiAobGVuID09IDApIHsKKwkJbGVuID0gMTsKKwl9CisKKwlpZiAoIShidWYgPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhsZW4pKSkgeworCQkvKiBFbnN1cmUgZWNvZGUgaXMgc2V0IGZvciBsb2cgZm4uICovCisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX09PTTsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsInRkYl9hbGxvY19yZWFkIG1hbGxvYyBmYWlsZWQgbGVuPSVkICglcylcbiIsCisJCQkgICBsZW4sIHN0cmVycm9yKGVycm5vKSkpOworCQlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9PT00sIGJ1Zik7CisJfQorCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgb2Zmc2V0LCBidWYsIGxlbiwgMCkgPT0gLTEpIHsKKwkJU0FGRV9GUkVFKGJ1Zik7CisJCXJldHVybiBOVUxMOworCX0KKwlyZXR1cm4gYnVmOworfQorCisvKiBHaXZlIGEgcGllY2Ugb2YgdGRiIGRhdGEgdG8gYSBwYXJzZXIgKi8KKworaW50IHRkYl9wYXJzZV9kYXRhKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXksCisJCSAgIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9sZW5fdCBsZW4sCisJCSAgIGludCAoKnBhcnNlcikoVERCX0RBVEEga2V5LCBUREJfREFUQSBkYXRhLAorCQkJCSB2b2lkICpwcml2YXRlX2RhdGEpLAorCQkgICB2b2lkICpwcml2YXRlX2RhdGEpCit7CisJVERCX0RBVEEgZGF0YTsKKwlpbnQgcmVzdWx0OworCisJZGF0YS5kc2l6ZSA9IGxlbjsKKworCWlmICgodGRiLT50cmFuc2FjdGlvbiA9PSBOVUxMKSAmJiAodGRiLT5tYXBfcHRyICE9IE5VTEwpKSB7CisJCS8qCisJCSAqIE9wdGltaXplIGJ5IGF2b2lkaW5nIHRoZSBtYWxsb2MvbWVtY3B5L2ZyZWUsIHBvaW50IHRoZQorCQkgKiBwYXJzZXIgZGlyZWN0bHkgYXQgdGhlIG1tYXAgYXJlYS4KKwkJICovCisJCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9vb2IodGRiLCBvZmZzZXQrbGVuLCAwKSAhPSAwKSB7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJZGF0YS5kcHRyID0gb2Zmc2V0ICsgKHVuc2lnbmVkIGNoYXIgKil0ZGItPm1hcF9wdHI7CisJCXJldHVybiBwYXJzZXIoa2V5LCBkYXRhLCBwcml2YXRlX2RhdGEpOworCX0KKworCWlmICghKGRhdGEuZHB0ciA9IHRkYl9hbGxvY19yZWFkKHRkYiwgb2Zmc2V0LCBsZW4pKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJcmVzdWx0ID0gcGFyc2VyKGtleSwgZGF0YSwgcHJpdmF0ZV9kYXRhKTsKKwlmcmVlKGRhdGEuZHB0cik7CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyogcmVhZC93cml0ZSBhIHJlY29yZCAqLworaW50IHRkYl9yZWNfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCit7CisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX3JlYWQodGRiLCBvZmZzZXQsIHJlYywgc2l6ZW9mKCpyZWMpLERPQ09OVigpKSA9PSAtMSkKKwkJcmV0dXJuIC0xOworCWlmIChUREJfQkFEX01BR0lDKHJlYykpIHsKKwkJLyogRW5zdXJlIGVjb2RlIGlzIHNldCBmb3IgbG9nIGZuLiAqLworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9DT1JSVVBUOworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwidGRiX3JlY19yZWFkIGJhZCBtYWdpYyAweCV4IGF0IG9mZnNldD0lZFxuIiwgcmVjLT5tYWdpYywgb2Zmc2V0KSk7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0NPUlJVUFQsIC0xKTsKKwl9CisJcmV0dXJuIHRkYi0+bWV0aG9kcy0+dGRiX29vYih0ZGIsIHJlYy0+bmV4dCtzaXplb2YoKnJlYyksIDApOworfQorCitpbnQgdGRiX3JlY193cml0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCit7CisJc3RydWN0IGxpc3Rfc3RydWN0IHIgPSAqcmVjOworCXJldHVybiB0ZGItPm1ldGhvZHMtPnRkYl93cml0ZSh0ZGIsIG9mZnNldCwgQ09OVkVSVChyKSwgc2l6ZW9mKHIpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB0ZGJfbWV0aG9kcyBpb19tZXRob2RzID0geworCXRkYl9yZWFkLAorCXRkYl93cml0ZSwKKwl0ZGJfbmV4dF9oYXNoX2NoYWluLAorCXRkYl9vb2IsCisJdGRiX2V4cGFuZF9maWxlLAorCXRkYl9icmxvY2sKK307CisKKy8qCisgIGluaXRpYWxpc2UgdGhlIGRlZmF1bHQgbWV0aG9kcyB0YWJsZQorKi8KK3ZvaWQgdGRiX2lvX2luaXQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJdGRiLT5tZXRob2RzID0gJmlvX21ldGhvZHM7Cit9CisKKy8qIGZpbGU6IHRyYW5zYWN0aW9uLmMgKi8KKworLyoKKyAgdHJhbnNhY3Rpb24gZGVzaWduOgorCisgIC0gb25seSBhbGxvdyBhIHNpbmdsZSB0cmFuc2FjdGlvbiBhdCBhIHRpbWUgcGVyIGRhdGFiYXNlLiBUaGlzIG1ha2VzCisgICAgdXNpbmcgdGhlIHRyYW5zYWN0aW9uIEFQSSBzaW1wbGVyLCBhcyBvdGhlcndpc2UgdGhlIGNhbGxlciB3b3VsZAorICAgIGhhdmUgdG8gY29wZSB3aXRoIHRlbXBvcmFyeSBmYWlsdXJlcyBpbiB0cmFuc2FjdGlvbnMgdGhhdCBjb25mbGljdAorICAgIHdpdGggb3RoZXIgY3VycmVudCB0cmFuc2FjdGlvbnMKKworICAtIGtlZXAgdGhlIHRyYW5zYWN0aW9uIHJlY292ZXJ5IGluZm9ybWF0aW9uIGluIHRoZSBzYW1lIGZpbGUgYXMgdGhlCisgICAgZGF0YWJhc2UsIHVzaW5nIGEgc3BlY2lhbCAndHJhbnNhY3Rpb24gcmVjb3ZlcnknIHJlY29yZCBwb2ludGVkIGF0CisgICAgYnkgdGhlIGhlYWRlci4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHRyYSBqb3VybmFsIGZpbGVzIGFzCisgICAgdXNlZCBieSBzb21lIG90aGVyIGRhdGFiYXNlcworCisgIC0gZHluYW1pY2FsbHkgYWxsb2NhdGVkIHRoZSB0cmFuc2FjdGlvbiByZWNvdmVyIHJlY29yZCwgcmUtdXNpbmcgaXQKKyAgICBmb3Igc3Vic2VxdWVudCB0cmFuc2FjdGlvbnMuIElmIGEgbGFyZ2VyIHJlY29yZCBpcyBuZWVkZWQgdGhlbgorICAgIHRkYl9mcmVlKCkgdGhlIG9sZCByZWNvcmQgdG8gcGxhY2UgaXQgb24gdGhlIG5vcm1hbCB0ZGIgZnJlZWxpc3QKKyAgICBiZWZvcmUgYWxsb2NhdGluZyB0aGUgbmV3IHJlY29yZAorCisgIC0gZHVyaW5nIHRyYW5zYWN0aW9ucywga2VlcCBhIGxpbmtlZCBsaXN0IG9mIHdyaXRlcyBhbGwgdGhhdCBoYXZlCisgICAgYmVlbiBwZXJmb3JtZWQgYnkgaW50ZXJjZXB0aW5nIGFsbCB0ZGJfd3JpdGUoKSBjYWxscy4gVGhlIGhvb2tlZAorICAgIHRyYW5zYWN0aW9uIHZlcnNpb25zIG9mIHRkYl9yZWFkKCkgYW5kIHRkYl93cml0ZSgpIGNoZWNrIHRoaXMKKyAgICBsaW5rZWQgbGlzdCBhbmQgdHJ5IHRvIHVzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgaW4gcHJlZmVyZW5jZQorICAgIHRvIHRoZSByZWFsIGRhdGFiYXNlLgorCisgIC0gZG9uJ3QgYWxsb3cgYW55IGxvY2tzIHRvIGJlIGhlbGQgd2hlbiBhIHRyYW5zYWN0aW9uIHN0YXJ0cywKKyAgICBvdGhlcndpc2Ugd2UgY2FuIGVuZCB1cCB3aXRoIGRlYWRsb2NrIChwbHVzIGxhY2sgb2YgbG9jayBuZXN0aW5nCisgICAgaW4gcG9zaXggbG9ja3Mgd291bGQgbWVhbiB0aGUgbG9jayBpcyBsb3N0KQorCisgIC0gaWYgdGhlIGNhbGxlciBnYWlucyBhIGxvY2sgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbiBidXQgZG9lc24ndAorICAgIHJlbGVhc2UgaXQgdGhlbiBmYWlsIHRoZSBjb21taXQKKworICAtIGFsbG93IGZvciBuZXN0ZWQgY2FsbHMgdG8gdGRiX3RyYW5zYWN0aW9uX3N0YXJ0KCksIHJlLXVzaW5nIHRoZQorICAgIGV4aXN0aW5nIHRyYW5zYWN0aW9uIHJlY29yZC4gSWYgdGhlIGlubmVyIHRyYW5zYWN0aW9uIGlzIGNhbmNlbGxlZAorICAgIHRoZW4gYSBzdWJzZXF1ZW50IGNvbW1pdCB3aWxsIGZhaWwKKworICAtIGtlZXAgYSBtaXJyb3JlZCBjb3B5IG9mIHRoZSB0ZGIgaGFzaCBjaGFpbiBoZWFkcyB0byBhbGxvdyBmb3IgdGhlCisgICAgZmFzdCBoYXNoIGhlYWRzIHNjYW4gb24gdHJhdmVyc2UsIHVwZGF0aW5nIHRoZSBtaXJyb3JlZCBjb3B5IGluCisgICAgdGhlIHRyYW5zYWN0aW9uIHZlcnNpb24gb2YgdGRiX3dyaXRlCisKKyAgLSBhbGxvdyBjYWxsZXJzIHRvIG1peCB0cmFuc2FjdGlvbiBhbmQgbm9uLXRyYW5zYWN0aW9uIHVzZSBvZiB0ZGIsCisgICAgYWx0aG91Z2ggb25jZSBhIHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQgdGhlbiBhbiBleGNsdXNpdmUgbG9jayBpcworICAgIGdhaW5lZCB1bnRpbCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9yIGNhbmNlbGxlZAorCisgIC0gdGhlIGNvbW1pdCBzdGF0ZWd5IGludm9sdmVzIGZpcnN0IHNhdmluZyBhd2F5IGFsbCBtb2RpZmllZCBkYXRhCisgICAgaW50byBhIGxpbmVhcmlzZWQgYnVmZmVyIGluIHRoZSB0cmFuc2FjdGlvbiByZWNvdmVyeSBhcmVhLCB0aGVuCisgICAgbWFya2luZyB0aGUgdHJhbnNhY3Rpb24gcmVjb3ZlcnkgYXJlYSB3aXRoIGEgbWFnaWMgdmFsdWUgdG8KKyAgICBpbmRpY2F0ZSBhIHZhbGlkIHJlY292ZXJ5IHJlY29yZC4gSW4gdG90YWwgNCBmc3luYy9tc3luYyBjYWxscyBhcmUKKyAgICBuZWVkZWQgcGVyIGNvbW1pdCB0byBwcmV2ZW50IHJhY2UgY29uZGl0aW9ucy4gSXQgbWlnaHQgYmUgcG9zc2libGUKKyAgICB0byByZWR1Y2UgdGhpcyB0byAzIG9yIGV2ZW4gMiB3aXRoIHNvbWUgbW9yZSB3b3JrLgorCisgIC0gY2hlY2sgZm9yIGEgdmFsaWQgcmVjb3ZlcnkgcmVjb3JkIG9uIG9wZW4gb2YgdGhlIHRkYiwgd2hpbGUgdGhlCisgICAgZ2xvYmFsIGxvY2sgaXMgaGVsZC4gQXV0b21hdGljYWxseSByZWNvdmVyIGZyb20gdGhlIHRyYW5zYWN0aW9uCisgICAgcmVjb3ZlcnkgYXJlYSBpZiBuZWVkZWQsIHRoZW4gY29udGludWUgd2l0aCB0aGUgb3BlbiBhcworICAgIHVzdWFsLiBUaGlzIGFsbG93cyBmb3Igc21vb3RoIGNyYXNoIHJlY292ZXJ5IHdpdGggbm8gYWRtaW5pc3RyYXRvcgorICAgIGludGVydmVudGlvbi4KKworICAtIGlmIFREQl9OT1NZTkMgaXMgcGFzc2VkIHRvIGZsYWdzIGluIHRkYl9vcGVuIHRoZW4gdHJhbnNhY3Rpb25zIGFyZQorICAgIHN0aWxsIGF2YWlsYWJsZSwgYnV0IG5vIHRyYW5zYWN0aW9uIHJlY292ZXJ5IGFyZWEgaXMgdXNlZCBhbmQgbm8KKyAgICBmc3luYy9tc3luYyBjYWxscyBhcmUgbWFkZS4KKworKi8KKworc3RydWN0IHRkYl90cmFuc2FjdGlvbl9lbCB7CisJc3RydWN0IHRkYl90cmFuc2FjdGlvbl9lbCAqbmV4dCwgKnByZXY7CisJdGRiX29mZl90IG9mZnNldDsKKwl0ZGJfbGVuX3QgbGVuZ3RoOworCXVuc2lnbmVkIGNoYXIgKmRhdGE7Cit9OworCisvKgorICBob2xkIHRoZSBjb250ZXh0IG9mIGFueSBjdXJyZW50IHRyYW5zYWN0aW9uCisqLworc3RydWN0IHRkYl90cmFuc2FjdGlvbiB7CisJLyogd2Uga2VlcCBhIG1pcnJvcmVkIGNvcHkgb2YgdGhlIHRkYiBoYXNoIGhlYWRzIGhlcmUgc28KKwkgICB0ZGJfbmV4dF9oYXNoX2NoYWluKCkgY2FuIG9wZXJhdGUgZWZmaWNpZW50bHkgKi8KKwl1MzIgKmhhc2hfaGVhZHM7CisKKwkvKiB0aGUgb3JpZ2luYWwgaW8gbWV0aG9kcyAtIHVzZWQgdG8gZG8gSU9zIHRvIHRoZSByZWFsIGRiICovCisJY29uc3Qgc3RydWN0IHRkYl9tZXRob2RzICppb19tZXRob2RzOworCisJLyogdGhlIGxpc3Qgb2YgdHJhbnNhY3Rpb24gZWxlbWVudHMuIFdlIHVzZSBhIGRvdWJseSBsaW5rZWQKKwkgICBsaXN0IHdpdGggYSBsYXN0IHBvaW50ZXIgdG8gYWxsb3cgdXMgdG8ga2VlcCB0aGUgbGlzdAorCSAgIG9yZGVyZWQsIHdpdGggZmlyc3QgZWxlbWVudCBhdCB0aGUgZnJvbnQgb2YgdGhlIGxpc3QuIEl0CisJICAgbmVlZHMgdG8gYmUgZG91Ymx5IGxpbmtlZCBhcyB0aGUgcmVhZC93cml0ZSB0cmF2ZXJzYWxzIG5lZWQKKwkgICB0byBiZSBiYWNrd2FyZHMsIHdoaWxlIHRoZSBjb21taXQgbmVlZHMgdG8gYmUgZm9yd2FyZHMgKi8KKwlzdHJ1Y3QgdGRiX3RyYW5zYWN0aW9uX2VsICplbGVtZW50cywgKmVsZW1lbnRzX2xhc3Q7CisKKwkvKiBub24temVybyB3aGVuIGFuIGludGVybmFsIHRyYW5zYWN0aW9uIGVycm9yIGhhcworCSAgIG9jY3VycmVkLiBBbGwgd3JpdGUgb3BlcmF0aW9ucyB3aWxsIHRoZW4gZmFpbCB1bnRpbCB0aGUKKwkgICB0cmFuc2FjdGlvbiBpcyBlbmRlZCAqLworCWludCB0cmFuc2FjdGlvbl9lcnJvcjsKKworCS8qIHdoZW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24gd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIGFueQorCSAgIG5lc3RlZCB0ZGJfdHJhbnNhY3Rpb25fc3RhcnQoKSBjYWxscywgYXMgdGhlc2UgYXJlIGFsbG93ZWQsCisJICAgYnV0IGRvbid0IGNyZWF0ZSBhIG5ldyB0cmFuc2FjdGlvbiAqLworCWludCBuZXN0aW5nOworCisJLyogb2xkIGZpbGUgc2l6ZSBiZWZvcmUgdHJhbnNhY3Rpb24gKi8KKwl0ZGJfbGVuX3Qgb2xkX21hcF9zaXplOworfTsKKworCisvKgorICByZWFkIHdoaWxlIGluIGEgdHJhbnNhY3Rpb24uIFdlIG5lZWQgdG8gY2hlY2sgZmlyc3QgaWYgdGhlIGRhdGEgaXMgaW4gb3VyIGxpc3QKKyAgb2YgdHJhbnNhY3Rpb24gZWxlbWVudHMsIHRoZW4gaWYgbm90IGRvIGEgcmVhbCByZWFkCisqLworc3RhdGljIGludCB0cmFuc2FjdGlvbl9yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmLCB2b2lkICpidWYsCisJCQkgICAgdGRiX2xlbl90IGxlbiwgaW50IGN2KQoreworCXN0cnVjdCB0ZGJfdHJhbnNhY3Rpb25fZWwgKmVsOworCisJLyogd2UgbmVlZCB0byB3YWxrIHRoZSBsaXN0IGJhY2t3YXJkcyB0byBnZXQgdGhlIG1vc3QgcmVjZW50IGRhdGEgKi8KKwlmb3IgKGVsPXRkYi0+dHJhbnNhY3Rpb24tPmVsZW1lbnRzX2xhc3Q7ZWw7ZWw9ZWwtPnByZXYpIHsKKwkJdGRiX2xlbl90IHBhcnRpYWw7CisKKwkJaWYgKG9mZitsZW4gPD0gZWwtPm9mZnNldCkgeworCQkJY29udGludWU7CisJCX0KKwkJaWYgKG9mZiA+PSBlbC0+b2Zmc2V0ICsgZWwtPmxlbmd0aCkgeworCQkJY29udGludWU7CisJCX0KKworCQkvKiBhbiBvdmVybGFwcGluZyByZWFkIC0gbmVlZHMgdG8gYmUgc3BsaXQgaW50byB1cCB0bworCQkgICAyIHJlYWRzIGFuZCBhIG1lbWNweSAqLworCQlpZiAob2ZmIDwgZWwtPm9mZnNldCkgeworCQkJcGFydGlhbCA9IGVsLT5vZmZzZXQgLSBvZmY7CisJCQlpZiAodHJhbnNhY3Rpb25fcmVhZCh0ZGIsIG9mZiwgYnVmLCBwYXJ0aWFsLCBjdikgIT0gMCkgeworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKwkJCWxlbiAtPSBwYXJ0aWFsOworCQkJb2ZmICs9IHBhcnRpYWw7CisJCQlidWYgPSAodm9pZCAqKShwYXJ0aWFsICsgKGNoYXIgKilidWYpOworCQl9CisJCWlmIChvZmYgKyBsZW4gPD0gZWwtPm9mZnNldCArIGVsLT5sZW5ndGgpIHsKKwkJCXBhcnRpYWwgPSBsZW47CisJCX0gZWxzZSB7CisJCQlwYXJ0aWFsID0gZWwtPm9mZnNldCArIGVsLT5sZW5ndGggLSBvZmY7CisJCX0KKwkJbWVtY3B5KGJ1ZiwgZWwtPmRhdGEgKyAob2ZmIC0gZWwtPm9mZnNldCksIHBhcnRpYWwpOworCQlpZiAoY3YpIHsKKwkJCXRkYl9jb252ZXJ0KGJ1ZiwgbGVuKTsKKwkJfQorCQlsZW4gLT0gcGFydGlhbDsKKwkJb2ZmICs9IHBhcnRpYWw7CisJCWJ1ZiA9ICh2b2lkICopKHBhcnRpYWwgKyAoY2hhciAqKWJ1Zik7CisKKwkJaWYgKGxlbiAhPSAwICYmIHRyYW5zYWN0aW9uX3JlYWQodGRiLCBvZmYsIGJ1ZiwgbGVuLCBjdikgIT0gMCkgeworCQkJZ290byBmYWlsOworCQl9CisKKwkJcmV0dXJuIDA7CisJfQorCisJLyogaXRzIG5vdCBpbiB0aGUgdHJhbnNhY3Rpb24gZWxlbWVudHMgLSBkbyBhIHJlYWwgcmVhZCAqLworCXJldHVybiB0ZGItPnRyYW5zYWN0aW9uLT5pb19tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIG9mZiwgYnVmLCBsZW4sIGN2KTsKKworZmFpbDoKKwlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRyYW5zYWN0aW9uX3JlYWQ6IGZhaWxlZCBhdCBvZmY9JWQgbGVuPSVkXG4iLCBvZmYsIGxlbikpOworCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCXRkYi0+dHJhbnNhY3Rpb24tPnRyYW5zYWN0aW9uX2Vycm9yID0gMTsKKwlyZXR1cm4gLTE7Cit9CisKKworLyoKKyAgd3JpdGUgd2hpbGUgaW4gYSB0cmFuc2FjdGlvbgorKi8KK3N0YXRpYyBpbnQgdHJhbnNhY3Rpb25fd3JpdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYsCisJCQkgICAgIGNvbnN0IHZvaWQgKmJ1ZiwgdGRiX2xlbl90IGxlbikKK3sKKwlzdHJ1Y3QgdGRiX3RyYW5zYWN0aW9uX2VsICplbCwgKmJlc3RfZWw9TlVMTDsKKworCWlmIChsZW4gPT0gMCkgeworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBpZiB0aGUgd3JpdGUgaXMgdG8gYSBoYXNoIGhlYWQsIHRoZW4gdXBkYXRlIHRoZSB0cmFuc2FjdGlvbgorCSAgIGhhc2ggaGVhZHMgKi8KKwlpZiAobGVuID09IHNpemVvZih0ZGJfb2ZmX3QpICYmIG9mZiA+PSBGUkVFTElTVF9UT1AgJiYKKwkgICAgb2ZmIDwgRlJFRUxJU1RfVE9QK1REQl9IQVNIVEFCTEVfU0laRSh0ZGIpKSB7CisJCXUzMiBjaGFpbiA9IChvZmYtRlJFRUxJU1RfVE9QKSAvIHNpemVvZih0ZGJfb2ZmX3QpOworCQltZW1jcHkoJnRkYi0+dHJhbnNhY3Rpb24tPmhhc2hfaGVhZHNbY2hhaW5dLCBidWYsIGxlbik7CisJfQorCisJLyogZmlyc3Qgc2VlIGlmIHdlIGNhbiByZXBsYWNlIGFuIGV4aXN0aW5nIGVudHJ5ICovCisJZm9yIChlbD10ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50c19sYXN0O2VsO2VsPWVsLT5wcmV2KSB7CisJCXRkYl9sZW5fdCBwYXJ0aWFsOworCisJCWlmIChiZXN0X2VsID09IE5VTEwgJiYgb2ZmID09IGVsLT5vZmZzZXQrZWwtPmxlbmd0aCkgeworCQkJYmVzdF9lbCA9IGVsOworCQl9CisKKwkJaWYgKG9mZitsZW4gPD0gZWwtPm9mZnNldCkgeworCQkJY29udGludWU7CisJCX0KKwkJaWYgKG9mZiA+PSBlbC0+b2Zmc2V0ICsgZWwtPmxlbmd0aCkgeworCQkJY29udGludWU7CisJCX0KKworCQkvKiBhbiBvdmVybGFwcGluZyB3cml0ZSAtIG5lZWRzIHRvIGJlIHNwbGl0IGludG8gdXAgdG8KKwkJICAgMiB3cml0ZXMgYW5kIGEgbWVtY3B5ICovCisJCWlmIChvZmYgPCBlbC0+b2Zmc2V0KSB7CisJCQlwYXJ0aWFsID0gZWwtPm9mZnNldCAtIG9mZjsKKwkJCWlmICh0cmFuc2FjdGlvbl93cml0ZSh0ZGIsIG9mZiwgYnVmLCBwYXJ0aWFsKSAhPSAwKSB7CisJCQkJZ290byBmYWlsOworCQkJfQorCQkJbGVuIC09IHBhcnRpYWw7CisJCQlvZmYgKz0gcGFydGlhbDsKKwkJCWJ1ZiA9IChjb25zdCB2b2lkICopKHBhcnRpYWwgKyAoY29uc3QgY2hhciAqKWJ1Zik7CisJCX0KKwkJaWYgKG9mZiArIGxlbiA8PSBlbC0+b2Zmc2V0ICsgZWwtPmxlbmd0aCkgeworCQkJcGFydGlhbCA9IGxlbjsKKwkJfSBlbHNlIHsKKwkJCXBhcnRpYWwgPSBlbC0+b2Zmc2V0ICsgZWwtPmxlbmd0aCAtIG9mZjsKKwkJfQorCQltZW1jcHkoZWwtPmRhdGEgKyAob2ZmIC0gZWwtPm9mZnNldCksIGJ1ZiwgcGFydGlhbCk7CisJCWxlbiAtPSBwYXJ0aWFsOworCQlvZmYgKz0gcGFydGlhbDsKKwkJYnVmID0gKGNvbnN0IHZvaWQgKikocGFydGlhbCArIChjb25zdCBjaGFyICopYnVmKTsKKworCQlpZiAobGVuICE9IDAgJiYgdHJhbnNhY3Rpb25fd3JpdGUodGRiLCBvZmYsIGJ1ZiwgbGVuKSAhPSAwKSB7CisJCQlnb3RvIGZhaWw7CisJCX0KKworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBzZWUgaWYgd2UgY2FuIGFwcGVuZCB0aGUgbmV3IGVudHJ5IHRvIGFuIGV4aXN0aW5nIGVudHJ5ICovCisJaWYgKGJlc3RfZWwgJiYgYmVzdF9lbC0+b2Zmc2V0ICsgYmVzdF9lbC0+bGVuZ3RoID09IG9mZiAmJgorCSAgICAob2ZmK2xlbiA8IHRkYi0+dHJhbnNhY3Rpb24tPm9sZF9tYXBfc2l6ZSB8fAorCSAgICAgb2ZmID4gdGRiLT50cmFuc2FjdGlvbi0+b2xkX21hcF9zaXplKSkgeworCQl1bnNpZ25lZCBjaGFyICpkYXRhID0gYmVzdF9lbC0+ZGF0YTsKKwkJZWwgPSBiZXN0X2VsOworCQllbC0+ZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopcmVhbGxvYyhlbC0+ZGF0YSwKKwkJCQkJCSAgICBlbC0+bGVuZ3RoICsgbGVuKTsKKwkJaWYgKGVsLT5kYXRhID09IE5VTEwpIHsKKwkJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX09PTTsKKwkJCXRkYi0+dHJhbnNhY3Rpb24tPnRyYW5zYWN0aW9uX2Vycm9yID0gMTsKKwkJCWVsLT5kYXRhID0gZGF0YTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlpZiAoYnVmKSB7CisJCQltZW1jcHkoZWwtPmRhdGEgKyBlbC0+bGVuZ3RoLCBidWYsIGxlbik7CisJCX0gZWxzZSB7CisJCQltZW1zZXQoZWwtPmRhdGEgKyBlbC0+bGVuZ3RoLCBUREJfUEFEX0JZVEUsIGxlbik7CisJCX0KKwkJZWwtPmxlbmd0aCArPSBsZW47CisJCXJldHVybiAwOworCX0KKworCS8qIGFkZCBhIG5ldyBlbnRyeSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0ICovCisJZWwgPSAoc3RydWN0IHRkYl90cmFuc2FjdGlvbl9lbCAqKW1hbGxvYyhzaXplb2YoKmVsKSk7CisJaWYgKGVsID09IE5VTEwpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfT09NOworCQl0ZGItPnRyYW5zYWN0aW9uLT50cmFuc2FjdGlvbl9lcnJvciA9IDE7CisJCXJldHVybiAtMTsKKwl9CisJZWwtPm5leHQgPSBOVUxMOworCWVsLT5wcmV2ID0gdGRiLT50cmFuc2FjdGlvbi0+ZWxlbWVudHNfbGFzdDsKKwllbC0+b2Zmc2V0ID0gb2ZmOworCWVsLT5sZW5ndGggPSBsZW47CisJZWwtPmRhdGEgPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhsZW4pOworCWlmIChlbC0+ZGF0YSA9PSBOVUxMKSB7CisJCWZyZWUoZWwpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9PT007CisJCXRkYi0+dHJhbnNhY3Rpb24tPnRyYW5zYWN0aW9uX2Vycm9yID0gMTsKKwkJcmV0dXJuIC0xOworCX0KKwlpZiAoYnVmKSB7CisJCW1lbWNweShlbC0+ZGF0YSwgYnVmLCBsZW4pOworCX0gZWxzZSB7CisJCW1lbXNldChlbC0+ZGF0YSwgVERCX1BBRF9CWVRFLCBsZW4pOworCX0KKwlpZiAoZWwtPnByZXYpIHsKKwkJZWwtPnByZXYtPm5leHQgPSBlbDsKKwl9IGVsc2UgeworCQl0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cyA9IGVsOworCX0KKwl0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50c19sYXN0ID0gZWw7CisJcmV0dXJuIDA7CisKK2ZhaWw6CisJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0cmFuc2FjdGlvbl93cml0ZTogZmFpbGVkIGF0IG9mZj0lZCBsZW49JWRcbiIsIG9mZiwgbGVuKSk7CisJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJdGRiLT50cmFuc2FjdGlvbi0+dHJhbnNhY3Rpb25fZXJyb3IgPSAxOworCXJldHVybiAtMTsKK30KKworLyoKKyAgYWNjZWxlcmF0ZWQgaGFzaCBjaGFpbiBoZWFkIHNlYXJjaCwgdXNpbmcgdGhlIGNhY2hlZCBoYXNoIGhlYWRzCisqLworc3RhdGljIHZvaWQgdHJhbnNhY3Rpb25fbmV4dF9oYXNoX2NoYWluKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB1MzIgKmNoYWluKQoreworCXUzMiBoID0gKmNoYWluOworCWZvciAoO2ggPCB0ZGItPmhlYWRlci5oYXNoX3NpemU7aCsrKSB7CisJCS8qIHRoZSArMSB0YWtlcyBhY2NvdW50IG9mIHRoZSBmcmVlbGlzdCAqLworCQlpZiAoMCAhPSB0ZGItPnRyYW5zYWN0aW9uLT5oYXNoX2hlYWRzW2grMV0pIHsKKwkJCWJyZWFrOworCQl9CisJfQorCSgqY2hhaW4pID0gaDsKK30KKworLyoKKyAgb3V0IG9mIGJvdW5kcyBjaGVjayBkdXJpbmcgYSB0cmFuc2FjdGlvbgorKi8KK3N0YXRpYyBpbnQgdHJhbnNhY3Rpb25fb29iKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3QgbGVuLCBpbnQgcHJvYmUpCit7CisJaWYgKGxlbiA8PSB0ZGItPm1hcF9zaXplKSB7CisJCXJldHVybiAwOworCX0KKwlyZXR1cm4gVERCX0VSUkNPREUoVERCX0VSUl9JTywgLTEpOworfQorCisvKgorICB0cmFuc2FjdGlvbiB2ZXJzaW9uIG9mIHRkYl9leHBhbmQoKS4KKyovCitzdGF0aWMgaW50IHRyYW5zYWN0aW9uX2V4cGFuZF9maWxlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgc2l6ZSwKKwkJCQkgICB0ZGJfb2ZmX3QgYWRkaXRpb24pCit7CisJLyogYWRkIGEgd3JpdGUgdG8gdGhlIHRyYW5zYWN0aW9uIGVsZW1lbnRzLCBzbyBzdWJzZXF1ZW50CisJICAgcmVhZHMgc2VlIHRoZSB6ZXJvIGRhdGEgKi8KKwlpZiAodHJhbnNhY3Rpb25fd3JpdGUodGRiLCBzaXplLCBOVUxMLCBhZGRpdGlvbikgIT0gMCkgeworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qCisgIGJybG9jayBkdXJpbmcgYSB0cmFuc2FjdGlvbiAtIGlnbm9yZSB0aGVtCisqLworc3RhdGljIGludCB0cmFuc2FjdGlvbl9icmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsCisJCQkgICAgICBpbnQgcndfdHlwZSwgaW50IGxja190eXBlLCBpbnQgcHJvYmUsIHNpemVfdCBsZW4pCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGRiX21ldGhvZHMgdHJhbnNhY3Rpb25fbWV0aG9kcyA9IHsKKwl0cmFuc2FjdGlvbl9yZWFkLAorCXRyYW5zYWN0aW9uX3dyaXRlLAorCXRyYW5zYWN0aW9uX25leHRfaGFzaF9jaGFpbiwKKwl0cmFuc2FjdGlvbl9vb2IsCisJdHJhbnNhY3Rpb25fZXhwYW5kX2ZpbGUsCisJdHJhbnNhY3Rpb25fYnJsb2NrCit9OworCisKKy8qCisgIHN0YXJ0IGEgdGRiIHRyYW5zYWN0aW9uLiBObyB0b2tlbiBpcyByZXR1cm5lZCwgYXMgb25seSBhIHNpbmdsZQorICB0cmFuc2FjdGlvbiBpcyBhbGxvd2VkIHRvIGJlIHBlbmRpbmcgcGVyIHRkYl9jb250ZXh0CisqLworaW50IHRkYl90cmFuc2FjdGlvbl9zdGFydChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwkvKiBzb21lIHNhbml0eSBjaGVja3MgKi8KKwlpZiAodGRiLT5yZWFkX29ubHkgfHwgKHRkYi0+ZmxhZ3MgJiBUREJfSU5URVJOQUwpIHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl90cmFuc2FjdGlvbl9zdGFydDogY2Fubm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gYSByZWFkLW9ubHkgb3IgaW50ZXJuYWwgZGJcbiIpKTsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfRUlOVkFMOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogY29wZSB3aXRoIG5lc3RlZCB0ZGJfdHJhbnNhY3Rpb25fc3RhcnQoKSBjYWxscyAqLworCWlmICh0ZGItPnRyYW5zYWN0aW9uICE9IE5VTEwpIHsKKwkJdGRiLT50cmFuc2FjdGlvbi0+bmVzdGluZysrOworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19UUkFDRSwgInRkYl90cmFuc2FjdGlvbl9zdGFydDogbmVzdGluZyAlZFxuIiwKKwkJCSB0ZGItPnRyYW5zYWN0aW9uLT5uZXN0aW5nKSk7CisJCXJldHVybiAwOworCX0KKworCWlmICh0ZGItPm51bV9sb2NrcyAhPSAwIHx8IHRkYi0+Z2xvYmFsX2xvY2suY291bnQpIHsKKwkJLyogdGhlIGNhbGxlciBtdXN0IG5vdCBoYXZlIGFueSBsb2NrcyB3aGVuIHN0YXJ0aW5nIGEKKwkJICAgdHJhbnNhY3Rpb24gYXMgb3RoZXJ3aXNlIHdlJ2xsIGJlIHNjcmV3ZWQgYnkgbGFjaworCQkgICBvZiBuZXN0ZWQgbG9ja3MgaW4gcG9zaXggKi8KKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfdHJhbnNhY3Rpb25fc3RhcnQ6IGNhbm5vdCBzdGFydCBhIHRyYW5zYWN0aW9uIHdpdGggbG9ja3MgaGVsZFxuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9MT0NLOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHRkYi0+dHJhdmxvY2tzLm5leHQgIT0gTlVMTCkgeworCQkvKiB5b3UgY2Fubm90IHVzZSB0cmFuc2FjdGlvbnMgaW5zaWRlIGEgdHJhdmVyc2UgKGFsdGhvdWdoIHlvdSBjYW4gdXNlCisJCSAgIHRyYXZlcnNlIGluc2lkZSBhIHRyYW5zYWN0aW9uKSBhcyBvdGhlcndpc2UgeW91IGNhbiBlbmQgdXAgd2l0aAorCQkgICBkZWFkbG9jayAqLworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl90cmFuc2FjdGlvbl9zdGFydDogY2Fubm90IHN0YXJ0IGEgdHJhbnNhY3Rpb24gd2l0aGluIGEgdHJhdmVyc2VcbiIpKTsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfTE9DSzsKKwkJcmV0dXJuIC0xOworCX0KKworCXRkYi0+dHJhbnNhY3Rpb24gPSAoc3RydWN0IHRkYl90cmFuc2FjdGlvbiAqKQorCQljYWxsb2Moc2l6ZW9mKHN0cnVjdCB0ZGJfdHJhbnNhY3Rpb24pLCAxKTsKKwlpZiAodGRiLT50cmFuc2FjdGlvbiA9PSBOVUxMKSB7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX09PTTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIGdldCB0aGUgdHJhbnNhY3Rpb24gd3JpdGUgbG9jay4gVGhpcyBpcyBhIGJsb2NraW5nIGxvY2suIEFzCisJICAgZGlzY3Vzc2VkIHdpdGggVm9sa2VyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2Ygd2F5cyB3ZSBjb3VsZAorCSAgIG1ha2UgdGhpcyBhc3luYywgd2hpY2ggd2Ugd2lsbCBwcm9iYWJseSBkbyBpbiB0aGUgZnV0dXJlICovCisJaWYgKHRkYl90cmFuc2FjdGlvbl9sb2NrKHRkYiwgRl9XUkxDSykgPT0gLTEpIHsKKwkJU0FGRV9GUkVFKHRkYi0+dHJhbnNhY3Rpb24pOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogZ2V0IGEgcmVhZCBsb2NrIGZyb20gdGhlIGZyZWVsaXN0IHRvIHRoZSBlbmQgb2YgZmlsZS4gVGhpcworCSAgIGlzIHVwZ3JhZGVkIHRvIGEgd3JpdGUgbG9jayBkdXJpbmcgdGhlIGNvbW1pdCAqLworCWlmICh0ZGJfYnJsb2NrKHRkYiwgRlJFRUxJU1RfVE9QLCBGX1JETENLLCBGX1NFVExLVywgMCwgMCkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfdHJhbnNhY3Rpb25fc3RhcnQ6IGZhaWxlZCB0byBnZXQgaGFzaCBsb2Nrc1xuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9MT0NLOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogc2V0dXAgYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlIGhlYWRzIHNvIHRoZSBoYXNoIHNjYW4gaW4KKwkgICB0cmF2ZXJzZSBjYW4gYmUgZmFzdCAqLworCXRkYi0+dHJhbnNhY3Rpb24tPmhhc2hfaGVhZHMgPSAodTMyICopCisJCWNhbGxvYyh0ZGItPmhlYWRlci5oYXNoX3NpemUrMSwgc2l6ZW9mKHUzMikpOworCWlmICh0ZGItPnRyYW5zYWN0aW9uLT5oYXNoX2hlYWRzID09IE5VTEwpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfT09NOworCQlnb3RvIGZhaWw7CisJfQorCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgRlJFRUxJU1RfVE9QLCB0ZGItPnRyYW5zYWN0aW9uLT5oYXNoX2hlYWRzLAorCQkJCSAgIFREQl9IQVNIVEFCTEVfU0laRSh0ZGIpLCAwKSAhPSAwKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX3N0YXJ0OiBmYWlsZWQgdG8gcmVhZCBoYXNoIGhlYWRzXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogbWFrZSBzdXJlIHdlIGtub3cgYWJvdXQgYW55IGZpbGUgZXhwYW5zaW9ucyBhbHJlYWR5IGRvbmUgYnkKKwkgICBhbnlvbmUgZWxzZSAqLworCXRkYi0+bWV0aG9kcy0+dGRiX29vYih0ZGIsIHRkYi0+bWFwX3NpemUgKyAxLCAxKTsKKwl0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemUgPSB0ZGItPm1hcF9zaXplOworCisJLyogZmluYWxseSBob29rIHRoZSBpbyBtZXRob2RzLCByZXBsYWNpbmcgdGhlbSB3aXRoCisJICAgdHJhbnNhY3Rpb24gc3BlY2lmaWMgbWV0aG9kcyAqLworCXRkYi0+dHJhbnNhY3Rpb24tPmlvX21ldGhvZHMgPSB0ZGItPm1ldGhvZHM7CisJdGRiLT5tZXRob2RzID0gJnRyYW5zYWN0aW9uX21ldGhvZHM7CisKKwkvKiBieSBjYWxsaW5nIHRoaXMgdHJhbnNhY3Rpb24gd3JpdGUgaGVyZSwgd2UgZW5zdXJlIHRoYXQgd2UgZG9uJ3QgZ3JvdyB0aGUKKwkgICB0cmFuc2FjdGlvbiBsaW5rZWQgbGlzdCBkdWUgdG8gaGFzaCB0YWJsZSB1cGRhdGVzICovCisJaWYgKHRyYW5zYWN0aW9uX3dyaXRlKHRkYiwgRlJFRUxJU1RfVE9QLCB0ZGItPnRyYW5zYWN0aW9uLT5oYXNoX2hlYWRzLAorCQkJICAgICAgVERCX0hBU0hUQUJMRV9TSVpFKHRkYikpICE9IDApIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fc3RhcnQ6IGZhaWxlZCB0byBwcmltZSBoYXNoIHRhYmxlXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQl0ZGItPm1ldGhvZHMgPSB0ZGItPnRyYW5zYWN0aW9uLT5pb19tZXRob2RzOworCQlnb3RvIGZhaWw7CisJfQorCisJcmV0dXJuIDA7CisKK2ZhaWw6CisJdGRiX2JybG9jayh0ZGIsIEZSRUVMSVNUX1RPUCwgRl9VTkxDSywgRl9TRVRMS1csIDAsIDApOworCXRkYl90cmFuc2FjdGlvbl91bmxvY2sodGRiKTsKKwlTQUZFX0ZSRUUodGRiLT50cmFuc2FjdGlvbi0+aGFzaF9oZWFkcyk7CisJU0FGRV9GUkVFKHRkYi0+dHJhbnNhY3Rpb24pOworCXJldHVybiAtMTsKK30KKworCisvKgorICBjYW5jZWwgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24KKyovCitpbnQgdGRiX3RyYW5zYWN0aW9uX2NhbmNlbChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlpZiAodGRiLT50cmFuc2FjdGlvbiA9PSBOVUxMKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX3RyYW5zYWN0aW9uX2NhbmNlbDogbm8gdHJhbnNhY3Rpb25cbiIpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICh0ZGItPnRyYW5zYWN0aW9uLT5uZXN0aW5nICE9IDApIHsKKwkJdGRiLT50cmFuc2FjdGlvbi0+dHJhbnNhY3Rpb25fZXJyb3IgPSAxOworCQl0ZGItPnRyYW5zYWN0aW9uLT5uZXN0aW5nLS07CisJCXJldHVybiAwOworCX0KKworCXRkYi0+bWFwX3NpemUgPSB0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemU7CisKKwkvKiBmcmVlIGFsbCB0aGUgdHJhbnNhY3Rpb24gZWxlbWVudHMgKi8KKwl3aGlsZSAodGRiLT50cmFuc2FjdGlvbi0+ZWxlbWVudHMpIHsKKwkJc3RydWN0IHRkYl90cmFuc2FjdGlvbl9lbCAqZWwgPSB0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50czsKKwkJdGRiLT50cmFuc2FjdGlvbi0+ZWxlbWVudHMgPSBlbC0+bmV4dDsKKwkJZnJlZShlbC0+ZGF0YSk7CisJCWZyZWUoZWwpOworCX0KKworCS8qIHJlbW92ZSBhbnkgZ2xvYmFsIGxvY2sgY3JlYXRlZCBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uICovCisJaWYgKHRkYi0+Z2xvYmFsX2xvY2suY291bnQgIT0gMCkgeworCQl0ZGJfYnJsb2NrKHRkYiwgRlJFRUxJU1RfVE9QLCBGX1VOTENLLCBGX1NFVExLVywgMCwgNCp0ZGItPmhlYWRlci5oYXNoX3NpemUpOworCQl0ZGItPmdsb2JhbF9sb2NrLmNvdW50ID0gMDsKKwl9CisKKwkvKiByZW1vdmUgYW55IGxvY2tzIGNyZWF0ZWQgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbiAqLworCWlmICh0ZGItPm51bV9sb2NrcyAhPSAwKSB7CisJCWludCBpOworCQlmb3IgKGk9MDtpPHRkYi0+bnVtX2xvY2tyZWNzO2krKykgeworCQkJdGRiX2JybG9jayh0ZGIsRlJFRUxJU1RfVE9QKzQqdGRiLT5sb2NrcmVjc1tpXS5saXN0LAorCQkJCSAgIEZfVU5MQ0ssRl9TRVRMS1csIDAsIDEpOworCQl9CisJCXRkYi0+bnVtX2xvY2tzID0gMDsKKwkJdGRiLT5udW1fbG9ja3JlY3MgPSAwOworCQlTQUZFX0ZSRUUodGRiLT5sb2NrcmVjcyk7CisJfQorCisJLyogcmVzdG9yZSB0aGUgbm9ybWFsIGlvIG1ldGhvZHMgKi8KKwl0ZGItPm1ldGhvZHMgPSB0ZGItPnRyYW5zYWN0aW9uLT5pb19tZXRob2RzOworCisJdGRiX2JybG9jayh0ZGIsIEZSRUVMSVNUX1RPUCwgRl9VTkxDSywgRl9TRVRMS1csIDAsIDApOworCXRkYl90cmFuc2FjdGlvbl91bmxvY2sodGRiKTsKKwlTQUZFX0ZSRUUodGRiLT50cmFuc2FjdGlvbi0+aGFzaF9oZWFkcyk7CisJU0FGRV9GUkVFKHRkYi0+dHJhbnNhY3Rpb24pOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgIHN5bmMgdG8gZGlzaworKi8KK3N0YXRpYyBpbnQgdHJhbnNhY3Rpb25fc3luYyhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX2xlbl90IGxlbmd0aCkKK3sKKwlpZiAoZnN5bmModGRiLT5mZCkgIT0gMCkgeworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb246IGZzeW5jIGZhaWxlZFxuIikpOworCQlyZXR1cm4gLTE7CisJfQorI2lmIGRlZmluZWQoSEFWRV9NU1lOQykgJiYgZGVmaW5lZChNU19TWU5DKQorCWlmICh0ZGItPm1hcF9wdHIpIHsKKwkJdGRiX29mZl90IG1vZmZzZXQgPSBvZmZzZXQgJiB+KHRkYi0+cGFnZV9zaXplLTEpOworCQlpZiAobXN5bmMobW9mZnNldCArIChjaGFyICopdGRiLT5tYXBfcHRyLAorCQkJICBsZW5ndGggKyAob2Zmc2V0IC0gbW9mZnNldCksIE1TX1NZTkMpICE9IDApIHsKKwkJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb246IG1zeW5jIGZhaWxlZCAtICVzXG4iLAorCQkJCSBzdHJlcnJvcihlcnJubykpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKyNlbmRpZgorCXJldHVybiAwOworfQorCisKKy8qCisgIHdvcmsgb3V0IGhvdyBtdWNoIHNwYWNlIHRoZSBsaW5lYXJpc2VkIHJlY292ZXJ5IGRhdGEgd2lsbCBjb25zdW1lCisqLworc3RhdGljIHRkYl9sZW5fdCB0ZGJfcmVjb3Zlcnlfc2l6ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlzdHJ1Y3QgdGRiX3RyYW5zYWN0aW9uX2VsICplbDsKKwl0ZGJfbGVuX3QgcmVjb3Zlcnlfc2l6ZSA9IDA7CisKKwlyZWNvdmVyeV9zaXplID0gc2l6ZW9mKHUzMik7CisJZm9yIChlbD10ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cztlbDtlbD1lbC0+bmV4dCkgeworCQlpZiAoZWwtPm9mZnNldCA+PSB0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemUpIHsKKwkJCWNvbnRpbnVlOworCQl9CisJCXJlY292ZXJ5X3NpemUgKz0gMipzaXplb2YodGRiX29mZl90KSArIGVsLT5sZW5ndGg7CisJfQorCisJcmV0dXJuIHJlY292ZXJ5X3NpemU7Cit9CisKKy8qCisgIGFsbG9jYXRlIHRoZSByZWNvdmVyeSBhcmVhLCBvciB1c2UgYW4gZXhpc3RpbmcgcmVjb3ZlcnkgYXJlYSBpZiBpdCBpcworICBsYXJnZSBlbm91Z2gKKyovCitzdGF0aWMgaW50IHRkYl9yZWNvdmVyeV9hbGxvY2F0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwKKwkJCQkgdGRiX2xlbl90ICpyZWNvdmVyeV9zaXplLAorCQkJCSB0ZGJfb2ZmX3QgKnJlY292ZXJ5X29mZnNldCwKKwkJCQkgdGRiX2xlbl90ICpyZWNvdmVyeV9tYXhfc2l6ZSkKK3sKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCWNvbnN0IHN0cnVjdCB0ZGJfbWV0aG9kcyAqbWV0aG9kcyA9IHRkYi0+dHJhbnNhY3Rpb24tPmlvX21ldGhvZHM7CisJdGRiX29mZl90IHJlY292ZXJ5X2hlYWQ7CisKKwlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX1JFQ09WRVJZX0hFQUQsICZyZWNvdmVyeV9oZWFkKSA9PSAtMSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9yZWNvdmVyeV9hbGxvY2F0ZTogZmFpbGVkIHRvIHJlYWQgcmVjb3ZlcnkgaGVhZFxuIikpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmVjLnJlY19sZW4gPSAwOworCisJaWYgKHJlY292ZXJ5X2hlYWQgIT0gMCAmJgorCSAgICBtZXRob2RzLT50ZGJfcmVhZCh0ZGIsIHJlY292ZXJ5X2hlYWQsICZyZWMsIHNpemVvZihyZWMpLCBET0NPTlYoKSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfcmVjb3ZlcnlfYWxsb2NhdGU6IGZhaWxlZCB0byByZWFkIHJlY292ZXJ5IHJlY29yZFxuIikpOworCQlyZXR1cm4gLTE7CisJfQorCisJKnJlY292ZXJ5X3NpemUgPSB0ZGJfcmVjb3Zlcnlfc2l6ZSh0ZGIpOworCisJaWYgKHJlY292ZXJ5X2hlYWQgIT0gMCAmJiAqcmVjb3Zlcnlfc2l6ZSA8PSByZWMucmVjX2xlbikgeworCQkvKiBpdCBmaXRzIGluIHRoZSBleGlzdGluZyBhcmVhICovCisJCSpyZWNvdmVyeV9tYXhfc2l6ZSA9IHJlYy5yZWNfbGVuOworCQkqcmVjb3Zlcnlfb2Zmc2V0ID0gcmVjb3ZlcnlfaGVhZDsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogd2UgbmVlZCB0byBmcmVlIHVwIHRoZSBvbGQgcmVjb3ZlcnkgYXJlYSwgdGhlbiBhbGxvY2F0ZSBhCisJICAgbmV3IG9uZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLiBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZQorCSAgIHRkYl9hbGxvY2F0ZSgpIHRvIGFsbG9jYXRlIHRoZSBuZXcgb25lIGFzIHRoYXQgbWlnaHQgcmV0dXJuCisJICAgdXMgYW4gYXJlYSB0aGF0IGlzIGJlaW5nIGN1cnJlbnRseSB1c2VkIChhcyBvZiB0aGUgc3RhcnQgb2YKKwkgICB0aGUgdHJhbnNhY3Rpb24pICovCisJaWYgKHJlY292ZXJ5X2hlYWQgIT0gMCkgeworCQlpZiAodGRiX2ZyZWUodGRiLCByZWNvdmVyeV9oZWFkLCAmcmVjKSA9PSAtMSkgeworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfcmVjb3ZlcnlfYWxsb2NhdGU6IGZhaWxlZCB0byBmcmVlIHByZXZpb3VzIHJlY292ZXJ5IGFyZWFcbiIpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCS8qIHRoZSB0ZGJfZnJlZSgpIGNhbGwgbWlnaHQgaGF2ZSBpbmNyZWFzZWQgdGhlIHJlY292ZXJ5IHNpemUgKi8KKwkqcmVjb3Zlcnlfc2l6ZSA9IHRkYl9yZWNvdmVyeV9zaXplKHRkYik7CisKKwkvKiByb3VuZCB1cCB0byBhIG11bHRpcGxlIG9mIHBhZ2Ugc2l6ZSAqLworCSpyZWNvdmVyeV9tYXhfc2l6ZSA9IFREQl9BTElHTihzaXplb2YocmVjKSArICpyZWNvdmVyeV9zaXplLCB0ZGItPnBhZ2Vfc2l6ZSkgLSBzaXplb2YocmVjKTsKKwkqcmVjb3Zlcnlfb2Zmc2V0ID0gdGRiLT5tYXBfc2l6ZTsKKwlyZWNvdmVyeV9oZWFkID0gKnJlY292ZXJ5X29mZnNldDsKKworCWlmIChtZXRob2RzLT50ZGJfZXhwYW5kX2ZpbGUodGRiLCB0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemUsCisJCQkJICAgICAodGRiLT5tYXBfc2l6ZSAtIHRkYi0+dHJhbnNhY3Rpb24tPm9sZF9tYXBfc2l6ZSkgKworCQkJCSAgICAgc2l6ZW9mKHJlYykgKyAqcmVjb3ZlcnlfbWF4X3NpemUpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3JlY292ZXJ5X2FsbG9jYXRlOiBmYWlsZWQgdG8gY3JlYXRlIHJlY292ZXJ5IGFyZWFcbiIpKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIHJlbWFwIHRoZSBmaWxlIChpZiB1c2luZyBtbWFwKSAqLworCW1ldGhvZHMtPnRkYl9vb2IodGRiLCB0ZGItPm1hcF9zaXplICsgMSwgMSk7CisKKwkvKiB3ZSBoYXZlIHRvIHJlc2V0IHRoZSBvbGQgbWFwIHNpemUgc28gdGhhdCB3ZSBkb24ndCB0cnkgdG8gZXhwYW5kIHRoZSBmaWxlCisJICAgYWdhaW4gaW4gdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCwgd2hpY2ggd291bGQgZGVzdHJveSB0aGUgcmVjb3ZlcnkgYXJlYSAqLworCXRkYi0+dHJhbnNhY3Rpb24tPm9sZF9tYXBfc2l6ZSA9IHRkYi0+bWFwX3NpemU7CisKKwkvKiB3cml0ZSB0aGUgcmVjb3ZlcnkgaGVhZGVyIG9mZnNldCBhbmQgc3luYyAtIHdlIGNhbiBzeW5jIHdpdGhvdXQgYSByYWNlIGhlcmUKKwkgICBhcyB0aGUgbWFnaWMgcHRyIGluIHRoZSByZWNvdmVyeSByZWNvcmQgaGFzIG5vdCBiZWVuIHNldCAqLworCUNPTlZFUlQocmVjb3ZlcnlfaGVhZCk7CisJaWYgKG1ldGhvZHMtPnRkYl93cml0ZSh0ZGIsIFREQl9SRUNPVkVSWV9IRUFELAorCQkJICAgICAgICZyZWNvdmVyeV9oZWFkLCBzaXplb2YodGRiX29mZl90KSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfcmVjb3ZlcnlfYWxsb2NhdGU6IGZhaWxlZCB0byB3cml0ZSByZWNvdmVyeSBoZWFkXG4iKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCisvKgorICBzZXR1cCB0aGUgcmVjb3ZlcnkgZGF0YSB0aGF0IHdpbGwgYmUgdXNlZCBvbiBhIGNyYXNoIGR1cmluZyBjb21taXQKKyovCitzdGF0aWMgaW50IHRyYW5zYWN0aW9uX3NldHVwX3JlY292ZXJ5KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLAorCQkJCSAgICAgIHRkYl9vZmZfdCAqbWFnaWNfb2Zmc2V0KQoreworCXN0cnVjdCB0ZGJfdHJhbnNhY3Rpb25fZWwgKmVsOworCXRkYl9sZW5fdCByZWNvdmVyeV9zaXplOworCXVuc2lnbmVkIGNoYXIgKmRhdGEsICpwOworCWNvbnN0IHN0cnVjdCB0ZGJfbWV0aG9kcyAqbWV0aG9kcyA9IHRkYi0+dHJhbnNhY3Rpb24tPmlvX21ldGhvZHM7CisJc3RydWN0IGxpc3Rfc3RydWN0ICpyZWM7CisJdGRiX29mZl90IHJlY292ZXJ5X29mZnNldCwgcmVjb3ZlcnlfbWF4X3NpemU7CisJdGRiX29mZl90IG9sZF9tYXBfc2l6ZSA9IHRkYi0+dHJhbnNhY3Rpb24tPm9sZF9tYXBfc2l6ZTsKKwl1MzIgbWFnaWMsIHRhaWxlcjsKKworCS8qCisJICBjaGVjayB0aGF0IHRoZSByZWNvdmVyeSBhcmVhIGhhcyBlbm91Z2ggc3BhY2UKKwkqLworCWlmICh0ZGJfcmVjb3ZlcnlfYWxsb2NhdGUodGRiLCAmcmVjb3Zlcnlfc2l6ZSwKKwkJCQkgICZyZWNvdmVyeV9vZmZzZXQsICZyZWNvdmVyeV9tYXhfc2l6ZSkgPT0gLTEpIHsKKwkJcmV0dXJuIC0xOworCX0KKworCWRhdGEgPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhyZWNvdmVyeV9zaXplICsgc2l6ZW9mKCpyZWMpKTsKKwlpZiAoZGF0YSA9PSBOVUxMKSB7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX09PTTsKKwkJcmV0dXJuIC0xOworCX0KKworCXJlYyA9IChzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKilkYXRhOworCW1lbXNldChyZWMsIDAsIHNpemVvZigqcmVjKSk7CisKKwlyZWMtPm1hZ2ljICAgID0gMDsKKwlyZWMtPmRhdGFfbGVuID0gcmVjb3Zlcnlfc2l6ZTsKKwlyZWMtPnJlY19sZW4gID0gcmVjb3ZlcnlfbWF4X3NpemU7CisJcmVjLT5rZXlfbGVuICA9IG9sZF9tYXBfc2l6ZTsKKwlDT05WRVJUKHJlYyk7CisKKwkvKiBidWlsZCB0aGUgcmVjb3ZlcnkgZGF0YSBpbnRvIGEgc2luZ2xlIGJsb2IgdG8gYWxsb3cgdXMgdG8gZG8gYSBzaW5nbGUKKwkgICBsYXJnZSB3cml0ZSwgd2hpY2ggc2hvdWxkIGJlIG1vcmUgZWZmaWNpZW50ICovCisJcCA9IGRhdGEgKyBzaXplb2YoKnJlYyk7CisJZm9yIChlbD10ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cztlbDtlbD1lbC0+bmV4dCkgeworCQlpZiAoZWwtPm9mZnNldCA+PSBvbGRfbWFwX3NpemUpIHsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChlbC0+b2Zmc2V0ICsgZWwtPmxlbmd0aCA+IHRkYi0+dHJhbnNhY3Rpb24tPm9sZF9tYXBfc2l6ZSkgeworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fc2V0dXBfcmVjb3Zlcnk6IHRyYW5zYWN0aW9uIGRhdGEgb3ZlciBuZXcgcmVnaW9uIGJvdW5kYXJ5XG4iKSk7CisJCQlmcmVlKGRhdGEpOworCQkJdGRiLT5lY29kZSA9IFREQl9FUlJfQ09SUlVQVDsKKwkJCXJldHVybiAtMTsKKwkJfQorCQltZW1jcHkocCwgJmVsLT5vZmZzZXQsIDQpOworCQltZW1jcHkocCs0LCAmZWwtPmxlbmd0aCwgNCk7CisJCWlmIChET0NPTlYoKSkgeworCQkJdGRiX2NvbnZlcnQocCwgOCk7CisJCX0KKwkJLyogdGhlIHJlY292ZXJ5IGFyZWEgY29udGFpbnMgdGhlIG9sZCBkYXRhLCBub3QgdGhlCisJCSAgIG5ldyBkYXRhLCBzbyB3ZSBoYXZlIHRvIGNhbGwgdGhlIG9yaWdpbmFsIHRkYl9yZWFkCisJCSAgIG1ldGhvZCB0byBnZXQgaXQgKi8KKwkJaWYgKG1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgZWwtPm9mZnNldCwgcCArIDgsIGVsLT5sZW5ndGgsIDApICE9IDApIHsKKwkJCWZyZWUoZGF0YSk7CisJCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlwICs9IDggKyBlbC0+bGVuZ3RoOworCX0KKworCS8qIGFuZCB0aGUgdGFpbGVyICovCisJdGFpbGVyID0gc2l6ZW9mKCpyZWMpICsgcmVjb3ZlcnlfbWF4X3NpemU7CisJbWVtY3B5KHAsICZ0YWlsZXIsIDQpOworCUNPTlZFUlQocCk7CisKKwkvKiB3cml0ZSB0aGUgcmVjb3ZlcnkgZGF0YSB0byB0aGUgcmVjb3ZlcnkgYXJlYSAqLworCWlmIChtZXRob2RzLT50ZGJfd3JpdGUodGRiLCByZWNvdmVyeV9vZmZzZXQsIGRhdGEsIHNpemVvZigqcmVjKSArIHJlY292ZXJ5X3NpemUpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX3NldHVwX3JlY292ZXJ5OiBmYWlsZWQgdG8gd3JpdGUgcmVjb3ZlcnkgZGF0YVxuIikpOworCQlmcmVlKGRhdGEpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIGFzIHdlIGRvbid0IGhhdmUgb3JkZXJlZCB3cml0ZXMsIHdlIGhhdmUgdG8gc3luYyB0aGUgcmVjb3ZlcnkKKwkgICBkYXRhIGJlZm9yZSB3ZSB1cGRhdGUgdGhlIG1hZ2ljIHRvIGluZGljYXRlIHRoYXQgdGhlIHJlY292ZXJ5CisJICAgZGF0YSBpcyBwcmVzZW50ICovCisJaWYgKHRyYW5zYWN0aW9uX3N5bmModGRiLCByZWNvdmVyeV9vZmZzZXQsIHNpemVvZigqcmVjKSArIHJlY292ZXJ5X3NpemUpID09IC0xKSB7CisJCWZyZWUoZGF0YSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlmcmVlKGRhdGEpOworCisJbWFnaWMgPSBUREJfUkVDT1ZFUllfTUFHSUM7CisJQ09OVkVSVChtYWdpYyk7CisKKwkqbWFnaWNfb2Zmc2V0ID0gcmVjb3Zlcnlfb2Zmc2V0ICsgb2Zmc2V0b2Yoc3RydWN0IGxpc3Rfc3RydWN0LCBtYWdpYyk7CisKKwlpZiAobWV0aG9kcy0+dGRiX3dyaXRlKHRkYiwgKm1hZ2ljX29mZnNldCwgJm1hZ2ljLCBzaXplb2YobWFnaWMpKSA9PSAtMSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmFuc2FjdGlvbl9zZXR1cF9yZWNvdmVyeTogZmFpbGVkIHRvIHdyaXRlIHJlY292ZXJ5IG1hZ2ljXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogZW5zdXJlIHRoZSByZWNvdmVyeSBtYWdpYyBtYXJrZXIgaXMgb24gZGlzayAqLworCWlmICh0cmFuc2FjdGlvbl9zeW5jKHRkYiwgKm1hZ2ljX29mZnNldCwgc2l6ZW9mKG1hZ2ljKSkgPT0gLTEpIHsKKwkJcmV0dXJuIC0xOworCX0KKworCXJldHVybiAwOworfQorCisvKgorICBjb21taXQgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24KKyovCitpbnQgdGRiX3RyYW5zYWN0aW9uX2NvbW1pdChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwljb25zdCBzdHJ1Y3QgdGRiX21ldGhvZHMgKm1ldGhvZHM7CisJdGRiX29mZl90IG1hZ2ljX29mZnNldCA9IDA7CisJdTMyIHplcm8gPSAwOworCisJaWYgKHRkYi0+dHJhbnNhY3Rpb24gPT0gTlVMTCkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl90cmFuc2FjdGlvbl9jb21taXQ6IG5vIHRyYW5zYWN0aW9uXG4iKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAodGRiLT50cmFuc2FjdGlvbi0+dHJhbnNhY3Rpb25fZXJyb3IpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCXRkYl90cmFuc2FjdGlvbl9jYW5jZWwodGRiKTsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfdHJhbnNhY3Rpb25fY29tbWl0OiB0cmFuc2FjdGlvbiBlcnJvciBwZW5kaW5nXG4iKSk7CisJCXJldHVybiAtMTsKKwl9CisKKwlpZiAodGRiLT50cmFuc2FjdGlvbi0+bmVzdGluZyAhPSAwKSB7CisJCXRkYi0+dHJhbnNhY3Rpb24tPm5lc3RpbmctLTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogY2hlY2sgZm9yIGEgbnVsbCB0cmFuc2FjdGlvbiAqLworCWlmICh0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cyA9PSBOVUxMKSB7CisJCXRkYl90cmFuc2FjdGlvbl9jYW5jZWwodGRiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJbWV0aG9kcyA9IHRkYi0+dHJhbnNhY3Rpb24tPmlvX21ldGhvZHM7CisKKwkvKiBpZiB0aGVyZSBhcmUgYW55IGxvY2tzIHBlbmRpbmcgdGhlbiB0aGUgY2FsbGVyIGhhcyBub3QKKwkgICBuZXN0ZWQgdGhlaXIgbG9ja3MgcHJvcGVybHksIHNvIGZhaWwgdGhlIHRyYW5zYWN0aW9uICovCisJaWYgKHRkYi0+bnVtX2xvY2tzIHx8IHRkYi0+Z2xvYmFsX2xvY2suY291bnQpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfTE9DSzsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfdHJhbnNhY3Rpb25fY29tbWl0OiBsb2NrcyBwZW5kaW5nIG9uIGNvbW1pdFxuIikpOworCQl0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsKHRkYik7CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiB1cGdyYWRlIHRoZSBtYWluIHRyYW5zYWN0aW9uIGxvY2sgcmVnaW9uIHRvIGEgd3JpdGUgbG9jayAqLworCWlmICh0ZGJfYnJsb2NrX3VwZ3JhZGUodGRiLCBGUkVFTElTVF9UT1AsIDApID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX3RyYW5zYWN0aW9uX3N0YXJ0OiBmYWlsZWQgdG8gdXBncmFkZSBoYXNoIGxvY2tzXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0xPQ0s7CisJCXRkYl90cmFuc2FjdGlvbl9jYW5jZWwodGRiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIGdldCB0aGUgZ2xvYmFsIGxvY2sgLSB0aGlzIHByZXZlbnRzIG5ldyB1c2VycyBhdHRhY2hpbmcgdG8gdGhlIGRhdGFiYXNlCisJICAgZHVyaW5nIHRoZSBjb21taXQgKi8KKwlpZiAodGRiX2JybG9jayh0ZGIsIEdMT0JBTF9MT0NLLCBGX1dSTENLLCBGX1NFVExLVywgMCwgMSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfdHJhbnNhY3Rpb25fY29tbWl0OiBmYWlsZWQgdG8gZ2V0IGdsb2JhbCBsb2NrXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0xPQ0s7CisJCXRkYl90cmFuc2FjdGlvbl9jYW5jZWwodGRiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICghKHRkYi0+ZmxhZ3MgJiBUREJfTk9TWU5DKSkgeworCQkvKiB3cml0ZSB0aGUgcmVjb3ZlcnkgZGF0YSB0byB0aGUgZW5kIG9mIHRoZSBmaWxlICovCisJCWlmICh0cmFuc2FjdGlvbl9zZXR1cF9yZWNvdmVyeSh0ZGIsICZtYWdpY19vZmZzZXQpID09IC0xKSB7CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmFuc2FjdGlvbl9jb21taXQ6IGZhaWxlZCB0byBzZXR1cCByZWNvdmVyeSBkYXRhXG4iKSk7CisJCQl0ZGJfYnJsb2NrKHRkYiwgR0xPQkFMX0xPQ0ssIEZfVU5MQ0ssIEZfU0VUTEtXLCAwLCAxKTsKKwkJCXRkYl90cmFuc2FjdGlvbl9jYW5jZWwodGRiKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCS8qIGV4cGFuZCB0aGUgZmlsZSB0byB0aGUgbmV3IHNpemUgaWYgbmVlZGVkICovCisJaWYgKHRkYi0+bWFwX3NpemUgIT0gdGRiLT50cmFuc2FjdGlvbi0+b2xkX21hcF9zaXplKSB7CisJCWlmIChtZXRob2RzLT50ZGJfZXhwYW5kX2ZpbGUodGRiLCB0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemUsCisJCQkJCSAgICAgdGRiLT5tYXBfc2l6ZSAtCisJCQkJCSAgICAgdGRiLT50cmFuc2FjdGlvbi0+b2xkX21hcF9zaXplKSA9PSAtMSkgeworCQkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmFuc2FjdGlvbl9jb21taXQ6IGV4cGFuc2lvbiBmYWlsZWRcbiIpKTsKKwkJCXRkYl9icmxvY2sodGRiLCBHTE9CQUxfTE9DSywgRl9VTkxDSywgRl9TRVRMS1csIDAsIDEpOworCQkJdGRiX3RyYW5zYWN0aW9uX2NhbmNlbCh0ZGIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCXRkYi0+bWFwX3NpemUgPSB0ZGItPnRyYW5zYWN0aW9uLT5vbGRfbWFwX3NpemU7CisJCW1ldGhvZHMtPnRkYl9vb2IodGRiLCB0ZGItPm1hcF9zaXplICsgMSwgMSk7CisJfQorCisJLyogcGVyZm9ybSBhbGwgdGhlIHdyaXRlcyAqLworCXdoaWxlICh0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cykgeworCQlzdHJ1Y3QgdGRiX3RyYW5zYWN0aW9uX2VsICplbCA9IHRkYi0+dHJhbnNhY3Rpb24tPmVsZW1lbnRzOworCisJCWlmIChtZXRob2RzLT50ZGJfd3JpdGUodGRiLCBlbC0+b2Zmc2V0LCBlbC0+ZGF0YSwgZWwtPmxlbmd0aCkgPT0gLTEpIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX2NvbW1pdDogd3JpdGUgZmFpbGVkIGR1cmluZyBjb21taXRcbiIpKTsKKworCQkJLyogd2UndmUgb3ZlcndyaXR0ZW4gcGFydCBvZiB0aGUgZGF0YSBhbmQKKwkJCSAgIHBvc3NpYmx5IGV4cGFuZGVkIHRoZSBmaWxlLCBzbyB3ZSBuZWVkIHRvCisJCQkgICBydW4gdGhlIGNyYXNoIHJlY292ZXJ5IGNvZGUgKi8KKwkJCXRkYi0+bWV0aG9kcyA9IG1ldGhvZHM7CisJCQl0ZGJfdHJhbnNhY3Rpb25fcmVjb3Zlcih0ZGIpOworCisJCQl0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsKHRkYik7CisJCQl0ZGJfYnJsb2NrKHRkYiwgR0xPQkFMX0xPQ0ssIEZfVU5MQ0ssIEZfU0VUTEtXLCAwLCAxKTsKKworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fY29tbWl0OiB3cml0ZSBmYWlsZWRcbiIpKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQl0ZGItPnRyYW5zYWN0aW9uLT5lbGVtZW50cyA9IGVsLT5uZXh0OworCQlmcmVlKGVsLT5kYXRhKTsKKwkJZnJlZShlbCk7CisJfQorCisJaWYgKCEodGRiLT5mbGFncyAmIFREQl9OT1NZTkMpKSB7CisJCS8qIGVuc3VyZSB0aGUgbmV3IGRhdGEgaXMgb24gZGlzayAqLworCQlpZiAodHJhbnNhY3Rpb25fc3luYyh0ZGIsIDAsIHRkYi0+bWFwX3NpemUpID09IC0xKSB7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQkvKiByZW1vdmUgdGhlIHJlY292ZXJ5IG1hcmtlciAqLworCQlpZiAobWV0aG9kcy0+dGRiX3dyaXRlKHRkYiwgbWFnaWNfb2Zmc2V0LCAmemVybywgNCkgPT0gLTEpIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX2NvbW1pdDogZmFpbGVkIHRvIHJlbW92ZSByZWNvdmVyeSBtYWdpY1xuIikpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJLyogZW5zdXJlIHRoZSByZWNvdmVyeSBtYXJrZXIgaGFzIGJlZW4gcmVtb3ZlZCBvbiBkaXNrICovCisJCWlmICh0cmFuc2FjdGlvbl9zeW5jKHRkYiwgbWFnaWNfb2Zmc2V0LCA0KSA9PSAtMSkgeworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJdGRiX2JybG9jayh0ZGIsIEdMT0JBTF9MT0NLLCBGX1VOTENLLCBGX1NFVExLVywgMCwgMSk7CisKKwkvKgorCSAgVE9ETzogbWF5YmUgd3JpdGUgdG8gc29tZSBkdW1teSBoZHIgZmllbGQsIG9yIHdyaXRlIHRvIG1hZ2ljCisJICBvZmZzZXQgd2l0aG91dCBtbWFwLCBiZWZvcmUgdGhlIGxhc3Qgc3luYywgaW5zdGVhZCBvZiB0aGUKKwkgIHV0aW1lKCkgY2FsbAorCSovCisKKwkvKiBvbiBzb21lIHN5c3RlbXMgKGxpa2UgTGludXggMi42LngpIGNoYW5nZXMgdmlhIG1tYXAvbXN5bmMKKwkgICBkb24ndCBjaGFuZ2UgdGhlIG10aW1lIG9mIHRoZSBmaWxlLCB0aGlzIG1lYW5zIHRoZSBmaWxlIG1heQorCSAgIG5vdCBiZSBiYWNrZWQgdXAgKGFzIHRkYiByb3VuZGluZyB0byBibG9jayBzaXplcyBtZWFucyB0aGF0CisJICAgZmlsZSBzaXplIGNoYW5nZXMgYXJlIHF1aXRlIHJhcmUgdG9vKS4gVGhlIGZvbGxvd2luZyBmb3JjZXMKKwkgICBtdGltZSBjaGFuZ2VzIHdoZW4gYSB0cmFuc2FjdGlvbiBjb21wbGV0ZXMgKi8KKyNpZmRlZiBIQVZFX1VUSU1FCisJdXRpbWUodGRiLT5uYW1lLCBOVUxMKTsKKyNlbmRpZgorCisJLyogdXNlIGEgdHJhbnNhY3Rpb24gY2FuY2VsIHRvIGZyZWUgbWVtb3J5IGFuZCByZW1vdmUgdGhlCisJICAgdHJhbnNhY3Rpb24gbG9ja3MgKi8KKwl0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsKHRkYik7CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAgcmVjb3ZlciBmcm9tIGFuIGFib3J0ZWQgdHJhbnNhY3Rpb24uIE11c3QgYmUgY2FsbGVkIHdpdGggZXhjbHVzaXZlCisgIGRhdGFiYXNlIHdyaXRlIGFjY2VzcyBhbHJlYWR5IGVzdGFibGlzaGVkIChpbmNsdWRpbmcgdGhlIGdsb2JhbAorICBsb2NrIHRvIHByZXZlbnQgbmV3IHByb2Nlc3NlcyBhdHRhY2hpbmcpCisqLworaW50IHRkYl90cmFuc2FjdGlvbl9yZWNvdmVyKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXRkYl9vZmZfdCByZWNvdmVyeV9oZWFkLCByZWNvdmVyeV9lb2Y7CisJdW5zaWduZWQgY2hhciAqZGF0YSwgKnA7CisJdTMyIHplcm8gPSAwOworCXN0cnVjdCBsaXN0X3N0cnVjdCByZWM7CisKKwkvKiBmaW5kIHRoZSByZWNvdmVyeSBhcmVhICovCisJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIFREQl9SRUNPVkVSWV9IRUFELCAmcmVjb3ZlcnlfaGVhZCkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogZmFpbGVkIHRvIHJlYWQgcmVjb3ZlcnkgaGVhZFxuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChyZWNvdmVyeV9oZWFkID09IDApIHsKKwkJLyogd2UgaGF2ZSBuZXZlciBhbGxvY2F0ZWQgYSByZWNvdmVyeSByZWNvcmQgKi8KKwkJcmV0dXJuIDA7CisJfQorCisJLyogcmVhZCB0aGUgcmVjb3ZlcnkgcmVjb3JkICovCisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX3JlYWQodGRiLCByZWNvdmVyeV9oZWFkLCAmcmVjLAorCQkJCSAgIHNpemVvZihyZWMpLCBET0NPTlYoKSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogZmFpbGVkIHRvIHJlYWQgcmVjb3ZlcnkgcmVjb3JkXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHJlYy5tYWdpYyAhPSBUREJfUkVDT1ZFUllfTUFHSUMpIHsKKwkJLyogdGhlcmUgaXMgbm8gdmFsaWQgcmVjb3ZlcnkgZGF0YSAqLworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAodGRiLT5yZWFkX29ubHkpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogYXR0ZW1wdCB0byByZWNvdmVyIHJlYWQgb25seSBkYXRhYmFzZVxuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9DT1JSVVBUOworCQlyZXR1cm4gLTE7CisJfQorCisJcmVjb3ZlcnlfZW9mID0gcmVjLmtleV9sZW47CisKKwlkYXRhID0gKHVuc2lnbmVkIGNoYXIgKiltYWxsb2MocmVjLmRhdGFfbGVuKTsKKwlpZiAoZGF0YSA9PSBOVUxMKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX3JlY292ZXI6IGZhaWxlZCB0byBhbGxvY2F0ZSByZWNvdmVyeSBkYXRhXG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX09PTTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIHJlYWQgdGhlIGZ1bGwgcmVjb3ZlcnkgZGF0YSAqLworCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgcmVjb3ZlcnlfaGVhZCArIHNpemVvZihyZWMpLCBkYXRhLAorCQkJCSAgIHJlYy5kYXRhX2xlbiwgMCkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogZmFpbGVkIHRvIHJlYWQgcmVjb3ZlcnkgZGF0YVxuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIHJlY292ZXIgdGhlIGZpbGUgZGF0YSAqLworCXAgPSBkYXRhOworCXdoaWxlIChwKzggPCBkYXRhICsgcmVjLmRhdGFfbGVuKSB7CisJCXUzMiBvZnMsIGxlbjsKKwkJaWYgKERPQ09OVigpKSB7CisJCQl0ZGJfY29udmVydChwLCA4KTsKKwkJfQorCQltZW1jcHkoJm9mcywgcCwgNCk7CisJCW1lbWNweSgmbGVuLCBwKzQsIDQpOworCisJCWlmICh0ZGItPm1ldGhvZHMtPnRkYl93cml0ZSh0ZGIsIG9mcywgcCs4LCBsZW4pID09IC0xKSB7CisJCQlmcmVlKGRhdGEpOworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogZmFpbGVkIHRvIHJlY292ZXIgJWQgYnl0ZXMgYXQgb2Zmc2V0ICVkXG4iLCBsZW4sIG9mcykpOworCQkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcCArPSA4ICsgbGVuOworCX0KKworCWZyZWUoZGF0YSk7CisKKwlpZiAodHJhbnNhY3Rpb25fc3luYyh0ZGIsIDAsIHRkYi0+bWFwX3NpemUpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX3JlY292ZXI6IGZhaWxlZCB0byBzeW5jIHJlY292ZXJ5XG4iKSk7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQlyZXR1cm4gLTE7CisJfQorCisJLyogaWYgdGhlIHJlY292ZXJ5IGFyZWEgaXMgYWZ0ZXIgdGhlIHJlY292ZXJlZCBlb2YgdGhlbiByZW1vdmUgaXQgKi8KKwlpZiAocmVjb3ZlcnlfZW9mIDw9IHJlY292ZXJ5X2hlYWQpIHsKKwkJaWYgKHRkYl9vZnNfd3JpdGUodGRiLCBUREJfUkVDT1ZFUllfSEVBRCwgJnplcm8pID09IC0xKSB7CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmFuc2FjdGlvbl9yZWNvdmVyOiBmYWlsZWQgdG8gcmVtb3ZlIHJlY292ZXJ5IGhlYWRcbiIpKTsKKwkJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0lPOworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJLyogcmVtb3ZlIHRoZSByZWNvdmVyeSBtYWdpYyAqLworCWlmICh0ZGJfb2ZzX3dyaXRlKHRkYiwgcmVjb3ZlcnlfaGVhZCArIG9mZnNldG9mKHN0cnVjdCBsaXN0X3N0cnVjdCwgbWFnaWMpLAorCQkJICAmemVybykgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcjogZmFpbGVkIHRvIHJlbW92ZSByZWNvdmVyeSBtYWdpY1xuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIHJlZHVjZSB0aGUgZmlsZSBzaXplIHRvIHRoZSBvbGQgc2l6ZSAqLworCXRkYl9tdW5tYXAodGRiKTsKKwlpZiAoZnRydW5jYXRlKHRkYi0+ZmQsIHJlY292ZXJ5X2VvZikgIT0gMCkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmFuc2FjdGlvbl9yZWNvdmVyOiBmYWlsZWQgdG8gcmVkdWNlIHRvIHJlY292ZXJ5IHNpemVcbiIpKTsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfSU87CisJCXJldHVybiAtMTsKKwl9CisJdGRiLT5tYXBfc2l6ZSA9IHJlY292ZXJ5X2VvZjsKKwl0ZGJfbW1hcCh0ZGIpOworCisJaWYgKHRyYW5zYWN0aW9uX3N5bmModGRiLCAwLCByZWNvdmVyeV9lb2YpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3RyYW5zYWN0aW9uX3JlY292ZXI6IGZhaWxlZCB0byBzeW5jMiByZWNvdmVyeVxuIikpOworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9JTzsKKwkJcmV0dXJuIC0xOworCX0KKworCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX1RSQUNFLCAidGRiX3RyYW5zYWN0aW9uX3JlY292ZXI6IHJlY292ZXJlZCAlZCBieXRlIGRhdGFiYXNlXG4iLAorCQkgcmVjb3ZlcnlfZW9mKSk7CisKKwkvKiBhbGwgZG9uZSAqLworCXJldHVybiAwOworfQorCisvKiBmaWxlOiBmcmVlbGlzdC5jICovCisKKy8qIHJlYWQgYSBmcmVlbGlzdCByZWNvcmQgYW5kIGNoZWNrIGZvciBzaW1wbGUgZXJyb3JzICovCitzdGF0aWMgaW50IHRkYl9yZWNfZnJlZV9yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmLCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYykKK3sKKwlpZiAodGRiLT5tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIG9mZiwgcmVjLCBzaXplb2YoKnJlYyksRE9DT05WKCkpID09IC0xKQorCQlyZXR1cm4gLTE7CisKKwlpZiAocmVjLT5tYWdpYyA9PSBUREJfTUFHSUMpIHsKKwkJLyogdGhpcyBoYXBwZW5zIHdoZW4gYSBhcHAgaXMgc2hvd2Rvd24gd2hpbGUgZGVsZXRpbmcgYSByZWNvcmQgLSB3ZSBzaG91bGQKKwkJICAgbm90IGNvbXBsZXRlbHkgZmFpbCB3aGVuIHRoaXMgaGFwcGVucyAqLworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19XQVJOSU5HLCAidGRiX3JlY19mcmVlX3JlYWQgbm9uLWZyZWUgbWFnaWMgMHgleCBhdCBvZmZzZXQ9JWQgLSBmaXhpbmdcbiIsCisJCQkgcmVjLT5tYWdpYywgb2ZmKSk7CisJCXJlYy0+bWFnaWMgPSBUREJfRlJFRV9NQUdJQzsKKwkJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX3dyaXRlKHRkYiwgb2ZmLCByZWMsIHNpemVvZigqcmVjKSkgPT0gLTEpCisJCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHJlYy0+bWFnaWMgIT0gVERCX0ZSRUVfTUFHSUMpIHsKKwkJLyogRW5zdXJlIGVjb2RlIGlzIHNldCBmb3IgbG9nIGZuLiAqLworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9DT1JSVVBUOworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19XQVJOSU5HLCAidGRiX3JlY19mcmVlX3JlYWQgYmFkIG1hZ2ljIDB4JXggYXQgb2Zmc2V0PSVkXG4iLAorCQkJICAgcmVjLT5tYWdpYywgb2ZmKSk7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX0NPUlJVUFQsIC0xKTsKKwl9CisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX29vYih0ZGIsIHJlYy0+bmV4dCtzaXplb2YoKnJlYyksIDApICE9IDApCisJCXJldHVybiAtMTsKKwlyZXR1cm4gMDsKK30KKworCisKKy8qIFJlbW92ZSBhbiBlbGVtZW50IGZyb20gdGhlIGZyZWVsaXN0LiAgTXVzdCBoYXZlIGFsbG9jIGxvY2suICovCitzdGF0aWMgaW50IHJlbW92ZV9mcm9tX2ZyZWVsaXN0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmLCB0ZGJfb2ZmX3QgbmV4dCkKK3sKKwl0ZGJfb2ZmX3QgbGFzdF9wdHIsIGk7CisKKwkvKiByZWFkIGluIHRoZSBmcmVlbGlzdCB0b3AgKi8KKwlsYXN0X3B0ciA9IEZSRUVMSVNUX1RPUDsKKwl3aGlsZSAodGRiX29mc19yZWFkKHRkYiwgbGFzdF9wdHIsICZpKSAhPSAtMSAmJiBpICE9IDApIHsKKwkJaWYgKGkgPT0gb2ZmKSB7CisJCQkvKiBXZSd2ZSBmb3VuZCBpdCEgKi8KKwkJCXJldHVybiB0ZGJfb2ZzX3dyaXRlKHRkYiwgbGFzdF9wdHIsICZuZXh0KTsKKwkJfQorCQkvKiBGb2xsb3cgY2hhaW4gKG5leHQgb2Zmc2V0IGlzIGF0IHN0YXJ0IG9mIHJlY29yZCkgKi8KKwkJbGFzdF9wdHIgPSBpOworCX0KKwlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwicmVtb3ZlX2Zyb21fZnJlZWxpc3Q6IG5vdCBvbiBsaXN0IGF0IG9mZj0lZFxuIiwgb2ZmKSk7CisJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfQ09SUlVQVCwgLTEpOworfQorCisKKy8qIHVwZGF0ZSBhIHJlY29yZCB0YWlsZXIgKG11c3QgaG9sZCBhbGxvY2F0aW9uIGxvY2spICovCitzdGF0aWMgaW50IHVwZGF0ZV90YWlsZXIoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsCisJCQkgY29uc3Qgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCit7CisJdGRiX29mZl90IHRvdGFsc2l6ZTsKKworCS8qIE9mZnNldCBvZiB0YWlsZXIgZnJvbSByZWNvcmQgaGVhZGVyICovCisJdG90YWxzaXplID0gc2l6ZW9mKCpyZWMpICsgcmVjLT5yZWNfbGVuOworCXJldHVybiB0ZGJfb2ZzX3dyaXRlKHRkYiwgb2Zmc2V0ICsgdG90YWxzaXplIC0gc2l6ZW9mKHRkYl9vZmZfdCksCisJCQkgJnRvdGFsc2l6ZSk7Cit9CisKKy8qIEFkZCBhbiBlbGVtZW50IGludG8gdGhlIGZyZWVsaXN0LiBNZXJnZSBhZGphY2VudCByZWNvcmRzIGlmCisgICBuZWNjZXNzYXJ5LiAqLworaW50IHRkYl9mcmVlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYykKK3sKKwl0ZGJfb2ZmX3QgcmlnaHQsIGxlZnQ7CisKKwkvKiBBbGxvY2F0aW9uIGFuZCB0YWlsZXIgbG9jayAqLworCWlmICh0ZGJfbG9jayh0ZGIsIC0xLCBGX1dSTENLKSAhPSAwKQorCQlyZXR1cm4gLTE7CisKKwkvKiBzZXQgYW4gaW5pdGlhbCB0YWlsZXIsIHNvIGlmIHdlIGZhaWwgd2UgZG9uJ3QgbGVhdmUgYSBib2d1cyByZWNvcmQgKi8KKwlpZiAodXBkYXRlX3RhaWxlcih0ZGIsIG9mZnNldCwgcmVjKSAhPSAwKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX2ZyZWU6IHVwZGF0ZV90YWlsZXIgZmFpbGVkIVxuIikpOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogTG9vayByaWdodCBmaXJzdCAoSSdtIGFuIEF1c3RyYWxpYW4sIGRhbW1pdCkgKi8KKwlyaWdodCA9IG9mZnNldCArIHNpemVvZigqcmVjKSArIHJlYy0+cmVjX2xlbjsKKwlpZiAocmlnaHQgKyBzaXplb2YoKnJlYykgPD0gdGRiLT5tYXBfc2l6ZSkgeworCQlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcjsKKworCQlpZiAodGRiLT5tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIHJpZ2h0LCAmciwgc2l6ZW9mKHIpLCBET0NPTlYoKSkgPT0gLTEpIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX2ZyZWU6IHJpZ2h0IHJlYWQgZmFpbGVkIGF0ICV1XG4iLCByaWdodCkpOworCQkJZ290byBsZWZ0OworCQl9CisKKwkJLyogSWYgaXQncyBmcmVlLCBleHBhbmQgdG8gaW5jbHVkZSBpdC4gKi8KKwkJaWYgKHIubWFnaWMgPT0gVERCX0ZSRUVfTUFHSUMpIHsKKwkJCWlmIChyZW1vdmVfZnJvbV9mcmVlbGlzdCh0ZGIsIHJpZ2h0LCByLm5leHQpID09IC0xKSB7CisJCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfZnJlZTogcmlnaHQgZnJlZSBmYWlsZWQgYXQgJXVcbiIsIHJpZ2h0KSk7CisJCQkJZ290byBsZWZ0OworCQkJfQorCQkJcmVjLT5yZWNfbGVuICs9IHNpemVvZihyKSArIHIucmVjX2xlbjsKKwkJfQorCX0KKworbGVmdDoKKwkvKiBMb29rIGxlZnQgKi8KKwlsZWZ0ID0gb2Zmc2V0IC0gc2l6ZW9mKHRkYl9vZmZfdCk7CisJaWYgKGxlZnQgPiBUREJfREFUQV9TVEFSVCh0ZGItPmhlYWRlci5oYXNoX3NpemUpKSB7CisJCXN0cnVjdCBsaXN0X3N0cnVjdCBsOworCQl0ZGJfb2ZmX3QgbGVmdHNpemU7CisKKwkJLyogUmVhZCBpbiB0YWlsZXIgYW5kIGp1bXAgYmFjayB0byBoZWFkZXIgKi8KKwkJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIGxlZnQsICZsZWZ0c2l6ZSkgPT0gLTEpIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX2ZyZWU6IGxlZnQgb2Zmc2V0IHJlYWQgZmFpbGVkIGF0ICV1XG4iLCBsZWZ0KSk7CisJCQlnb3RvIHVwZGF0ZTsKKwkJfQorCisJCS8qIGl0IGNvdWxkIGJlIHVuaW5pdGlhbGlzZWQgZGF0YSAqLworCQlpZiAobGVmdHNpemUgPT0gMCB8fCBsZWZ0c2l6ZSA9PSBUREJfUEFEX1UzMikgeworCQkJZ290byB1cGRhdGU7CisJCX0KKworCQlsZWZ0ID0gb2Zmc2V0IC0gbGVmdHNpemU7CisKKwkJLyogTm93IHJlYWQgaW4gcmVjb3JkICovCisJCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9yZWFkKHRkYiwgbGVmdCwgJmwsIHNpemVvZihsKSwgRE9DT05WKCkpID09IC0xKSB7CisJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9mcmVlOiBsZWZ0IHJlYWQgZmFpbGVkIGF0ICV1ICgldSlcbiIsIGxlZnQsIGxlZnRzaXplKSk7CisJCQlnb3RvIHVwZGF0ZTsKKwkJfQorCisJCS8qIElmIGl0J3MgZnJlZSwgZXhwYW5kIHRvIGluY2x1ZGUgaXQuICovCisJCWlmIChsLm1hZ2ljID09IFREQl9GUkVFX01BR0lDKSB7CisJCQlpZiAocmVtb3ZlX2Zyb21fZnJlZWxpc3QodGRiLCBsZWZ0LCBsLm5leHQpID09IC0xKSB7CisJCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfZnJlZTogbGVmdCBmcmVlIGZhaWxlZCBhdCAldVxuIiwgbGVmdCkpOworCQkJCWdvdG8gdXBkYXRlOworCQkJfSBlbHNlIHsKKwkJCQlvZmZzZXQgPSBsZWZ0OworCQkJCXJlYy0+cmVjX2xlbiArPSBsZWZ0c2l6ZTsKKwkJCX0KKwkJfQorCX0KKwordXBkYXRlOgorCWlmICh1cGRhdGVfdGFpbGVyKHRkYiwgb2Zmc2V0LCByZWMpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX2ZyZWU6IHVwZGF0ZV90YWlsZXIgZmFpbGVkIGF0ICV1XG4iLCBvZmZzZXQpKTsKKwkJZ290byBmYWlsOworCX0KKworCS8qIE5vdywgcHJlcGVuZCB0byBmcmVlIGxpc3QgKi8KKwlyZWMtPm1hZ2ljID0gVERCX0ZSRUVfTUFHSUM7CisKKwlpZiAodGRiX29mc19yZWFkKHRkYiwgRlJFRUxJU1RfVE9QLCAmcmVjLT5uZXh0KSA9PSAtMSB8fAorCSAgICB0ZGJfcmVjX3dyaXRlKHRkYiwgb2Zmc2V0LCByZWMpID09IC0xIHx8CisJICAgIHRkYl9vZnNfd3JpdGUodGRiLCBGUkVFTElTVF9UT1AsICZvZmZzZXQpID09IC0xKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX2ZyZWUgcmVjb3JkIHdyaXRlIGZhaWxlZCBhdCBvZmZzZXQ9JWRcbiIsIG9mZnNldCkpOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogQW5kIHdlJ3JlIGRvbmUuICovCisJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwlyZXR1cm4gMDsKKworIGZhaWw6CisJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwlyZXR1cm4gLTE7Cit9CisKKworLyoKKyAgIHRoZSBjb3JlIG9mIHRkYl9hbGxvY2F0ZSAtIGNhbGxlZCB3aGVuIHdlIGhhdmUgZGVjaWRlZCB3aGljaAorICAgZnJlZSBsaXN0IGVudHJ5IHRvIHVzZQorICovCitzdGF0aWMgdGRiX29mZl90IHRkYl9hbGxvY2F0ZV9vZnMoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9sZW5fdCBsZW5ndGgsIHRkYl9vZmZfdCByZWNfcHRyLAorCQkJCXN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjLCB0ZGJfb2ZmX3QgbGFzdF9wdHIpCit7CisJc3RydWN0IGxpc3Rfc3RydWN0IG5ld3JlYzsKKwl0ZGJfb2ZmX3QgbmV3cmVjX3B0cjsKKworCW1lbXNldCgmbmV3cmVjLCAnXDAnLCBzaXplb2YobmV3cmVjKSk7CisKKwkvKiBmb3VuZCBpdCAtIG5vdyBwb3NzaWJseSBzcGxpdCBpdCB1cCAgKi8KKwlpZiAocmVjLT5yZWNfbGVuID4gbGVuZ3RoICsgTUlOX1JFQ19TSVpFKSB7CisJCS8qIExlbmd0aCBvZiBsZWZ0IHBpZWNlICovCisJCWxlbmd0aCA9IFREQl9BTElHTihsZW5ndGgsIFREQl9BTElHTk1FTlQpOworCisJCS8qIFJpZ2h0IHBpZWNlIHRvIGdvIG9uIGZyZWUgbGlzdCAqLworCQluZXdyZWMucmVjX2xlbiA9IHJlYy0+cmVjX2xlbiAtIChzaXplb2YoKnJlYykgKyBsZW5ndGgpOworCQluZXdyZWNfcHRyID0gcmVjX3B0ciArIHNpemVvZigqcmVjKSArIGxlbmd0aDsKKworCQkvKiBBbmQgbGVmdCByZWNvcmQgaXMgc2hvcnRlbmVkICovCisJCXJlYy0+cmVjX2xlbiA9IGxlbmd0aDsKKwl9IGVsc2UgeworCQluZXdyZWNfcHRyID0gMDsKKwl9CisKKwkvKiBSZW1vdmUgYWxsb2NhdGVkIHJlY29yZCBmcm9tIHRoZSBmcmVlIGxpc3QgKi8KKwlpZiAodGRiX29mc193cml0ZSh0ZGIsIGxhc3RfcHRyLCAmcmVjLT5uZXh0KSA9PSAtMSkgeworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBVcGRhdGUgaGVhZGVyOiBkbyB0aGlzIGJlZm9yZSB3ZSBkcm9wIGFsbG9jCisJICAgbG9jaywgb3RoZXJ3aXNlIHRkYl9mcmVlKCkgbWlnaHQgdHJ5IHRvCisJICAgbWVyZ2Ugd2l0aCB1cywgdGhpbmtpbmcgd2UncmUgZnJlZS4KKwkgICAoVGhhbmtzIEplcmVteSBBbGxpc29uKS4gKi8KKwlyZWMtPm1hZ2ljID0gVERCX01BR0lDOworCWlmICh0ZGJfcmVjX3dyaXRlKHRkYiwgcmVjX3B0ciwgcmVjKSA9PSAtMSkgeworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBEaWQgd2UgY3JlYXRlIG5ldyBibG9jaz8gKi8KKwlpZiAobmV3cmVjX3B0cikgeworCQkvKiBVcGRhdGUgYWxsb2NhdGVkIHJlY29yZCB0YWlsZXIgKHdlCisJCSAgIHNob3J0ZW5lZCBpdCkuICovCisJCWlmICh1cGRhdGVfdGFpbGVyKHRkYiwgcmVjX3B0ciwgcmVjKSA9PSAtMSkgeworCQkJcmV0dXJuIDA7CisJCX0KKworCQkvKiBGcmVlIG5ldyByZWNvcmQgKi8KKwkJaWYgKHRkYl9mcmVlKHRkYiwgbmV3cmVjX3B0ciwgJm5ld3JlYykgPT0gLTEpIHsKKwkJCXJldHVybiAwOworCQl9CisJfQorCisJLyogYWxsIGRvbmUgLSByZXR1cm4gdGhlIG5ldyByZWNvcmQgb2Zmc2V0ICovCisJcmV0dXJuIHJlY19wdHI7Cit9CisKKy8qIGFsbG9jYXRlIHNvbWUgc3BhY2UgZnJvbSB0aGUgZnJlZSBsaXN0LiBUaGUgb2Zmc2V0IHJldHVybmVkIHBvaW50cworICAgdG8gYSB1bmNvbm5lY3RlZCBsaXN0X3N0cnVjdCB3aXRoaW4gdGhlIGRhdGFiYXNlIHdpdGggcm9vbSBmb3IgYXQKKyAgIGxlYXN0IGxlbmd0aCBieXRlcyBvZiB0b3RhbCBkYXRhCisKKyAgIDAgaXMgcmV0dXJuZWQgaWYgdGhlIHNwYWNlIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWQKKyAqLwordGRiX29mZl90IHRkYl9hbGxvY2F0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX2xlbl90IGxlbmd0aCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCit7CisJdGRiX29mZl90IHJlY19wdHIsIGxhc3RfcHRyLCBuZXdyZWNfcHRyOworCXN0cnVjdCB7CisJCXRkYl9vZmZfdCByZWNfcHRyLCBsYXN0X3B0cjsKKwkJdGRiX2xlbl90IHJlY19sZW47CisJfSBiZXN0Zml0OworCisJaWYgKHRkYl9sb2NrKHRkYiwgLTEsIEZfV1JMQ0spID09IC0xKQorCQlyZXR1cm4gMDsKKworCS8qIEV4dHJhIGJ5dGVzIHJlcXVpcmVkIGZvciB0YWlsZXIgKi8KKwlsZW5ndGggKz0gc2l6ZW9mKHRkYl9vZmZfdCk7CisKKyBhZ2FpbjoKKwlsYXN0X3B0ciA9IEZSRUVMSVNUX1RPUDsKKworCS8qIHJlYWQgaW4gdGhlIGZyZWVsaXN0IHRvcCAqLworCWlmICh0ZGJfb2ZzX3JlYWQodGRiLCBGUkVFTElTVF9UT1AsICZyZWNfcHRyKSA9PSAtMSkKKwkJZ290byBmYWlsOworCisJYmVzdGZpdC5yZWNfcHRyID0gMDsKKwliZXN0Zml0Lmxhc3RfcHRyID0gMDsKKwliZXN0Zml0LnJlY19sZW4gPSAwOworCisJLyoKKwkgICB0aGlzIGlzIGEgYmVzdCBmaXQgYWxsb2NhdGlvbiBzdHJhdGVneS4gT3JpZ2luYWxseSB3ZSB1c2VkCisJICAgYSBmaXJzdCBmaXQgc3RyYXRlZ3ksIGJ1dCBpdCBzdWZmZXJlZCBmcm9tIG1hc3NpdmUgZnJhZ21lbnRhdGlvbgorCSAgIGlzc3VlcyB3aGVuIGZhY2VkIHdpdGggYSBzbG93bHkgaW5jcmVhc2luZyByZWNvcmQgc2l6ZS4KKwkgKi8KKwl3aGlsZSAocmVjX3B0cikgeworCQlpZiAodGRiX3JlY19mcmVlX3JlYWQodGRiLCByZWNfcHRyLCByZWMpID09IC0xKSB7CisJCQlnb3RvIGZhaWw7CisJCX0KKworCQlpZiAocmVjLT5yZWNfbGVuID49IGxlbmd0aCkgeworCQkJaWYgKGJlc3RmaXQucmVjX3B0ciA9PSAwIHx8CisJCQkgICAgcmVjLT5yZWNfbGVuIDwgYmVzdGZpdC5yZWNfbGVuKSB7CisJCQkJYmVzdGZpdC5yZWNfbGVuID0gcmVjLT5yZWNfbGVuOworCQkJCWJlc3RmaXQucmVjX3B0ciA9IHJlY19wdHI7CisJCQkJYmVzdGZpdC5sYXN0X3B0ciA9IGxhc3RfcHRyOworCQkJCS8qIGNvbnNpZGVyIGEgZml0IHRvIGJlIGdvb2QgZW5vdWdoIGlmCisJCQkJICAgd2UgYXJlbid0IHdhc3RpbmcgbW9yZSB0aGFuIGhhbGYKKwkJCQkgICB0aGUgc3BhY2UgKi8KKwkJCQlpZiAoYmVzdGZpdC5yZWNfbGVuIDwgMipsZW5ndGgpIHsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLyogbW92ZSB0byB0aGUgbmV4dCByZWNvcmQgKi8KKwkJbGFzdF9wdHIgPSByZWNfcHRyOworCQlyZWNfcHRyID0gcmVjLT5uZXh0OworCX0KKworCWlmIChiZXN0Zml0LnJlY19wdHIgIT0gMCkgeworCQlpZiAodGRiX3JlY19mcmVlX3JlYWQodGRiLCBiZXN0Zml0LnJlY19wdHIsIHJlYykgPT0gLTEpIHsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCW5ld3JlY19wdHIgPSB0ZGJfYWxsb2NhdGVfb2ZzKHRkYiwgbGVuZ3RoLCBiZXN0Zml0LnJlY19wdHIsIHJlYywgYmVzdGZpdC5sYXN0X3B0cik7CisJCXRkYl91bmxvY2sodGRiLCAtMSwgRl9XUkxDSyk7CisJCXJldHVybiBuZXdyZWNfcHRyOworCX0KKworCS8qIHdlIGRpZG4ndCBmaW5kIGVub3VnaCBzcGFjZS4gU2VlIGlmIHdlIGNhbiBleHBhbmQgdGhlCisJICAgZGF0YWJhc2UgYW5kIGlmIHdlIGNhbiB0aGVuIHRyeSBhZ2FpbiAqLworCWlmICh0ZGJfZXhwYW5kKHRkYiwgbGVuZ3RoICsgc2l6ZW9mKCpyZWMpKSA9PSAwKQorCQlnb3RvIGFnYWluOworIGZhaWw6CisJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwlyZXR1cm4gMDsKK30KKworLyogZmlsZTogZnJlZWxpc3RjaGVjay5jICovCisKKy8qIENoZWNrIHRoZSBmcmVlbGlzdCBpcyBnb29kIGFuZCBjb250YWlucyBubyBsb29wcy4KKyAgIFZlcnkgbWVtb3J5IGludGVuc2l2ZSAtIG9ubHkgZG8gdGhpcyBhcyBhIGNvbnNpc3RlbmN5CisgICBjaGVja2VyLiBIZWggaGVoIC0gdXNlcyBhbiBpbiBtZW1vcnkgdGRiIGFzIHRoZSBzdG9yYWdlCisgICBmb3IgdGhlICJzZWVuIiByZWNvcmQgbGlzdC4gRm9yIHNvbWUgcmVhc29uIHRoaXMgc3RyaWtlcworICAgbWUgYXMgZXh0cmVtZWx5IGNsZXZlciBhcyBJIGRvbid0IGhhdmUgdG8gd3JpdGUgYW5vdGhlciB0cmVlCisgICBkYXRhIHN0cnVjdHVyZSBpbXBsZW1lbnRhdGlvbiA6LSkuCisgKi8KKworc3RhdGljIGludCBzZWVuX2luc2VydChzdHJ1Y3QgdGRiX2NvbnRleHQgKm1lbV90ZGIsIHRkYl9vZmZfdCByZWNfcHRyKQoreworCVREQl9EQVRBIGtleSwgZGF0YTsKKworCW1lbXNldCgmZGF0YSwgJ1wwJywgc2l6ZW9mKGRhdGEpKTsKKwlrZXkuZHB0ciA9ICh1bnNpZ25lZCBjaGFyICopJnJlY19wdHI7CisJa2V5LmRzaXplID0gc2l6ZW9mKHJlY19wdHIpOworCXJldHVybiB0ZGJfc3RvcmUobWVtX3RkYiwga2V5LCBkYXRhLCBUREJfSU5TRVJUKTsKK30KKworaW50IHRkYl92YWxpZGF0ZV9mcmVlbGlzdChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50ICpwbnVtX2VudHJpZXMpCit7CisJc3RydWN0IHRkYl9jb250ZXh0ICptZW1fdGRiID0gTlVMTDsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCXRkYl9vZmZfdCByZWNfcHRyLCBsYXN0X3B0cjsKKwlpbnQgcmV0ID0gLTE7CisKKwkqcG51bV9lbnRyaWVzID0gMDsKKworCW1lbV90ZGIgPSB0ZGJfb3BlbigiZmx2YWwiLCB0ZGItPmhlYWRlci5oYXNoX3NpemUsCisJCQkJVERCX0lOVEVSTkFMLCBPX1JEV1IsIDA2MDApOworCWlmICghbWVtX3RkYikgeworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHRkYl9sb2NrKHRkYiwgLTEsIEZfV1JMQ0spID09IC0xKSB7CisJCXRkYl9jbG9zZShtZW1fdGRiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJbGFzdF9wdHIgPSBGUkVFTElTVF9UT1A7CisKKwkvKiBTdG9yZSB0aGUgRlJFRUxJU1RfVE9QIHJlY29yZC4gKi8KKwlpZiAoc2Vlbl9pbnNlcnQobWVtX3RkYiwgbGFzdF9wdHIpID09IC0xKSB7CisJCXJldCA9IFREQl9FUlJDT0RFKFREQl9FUlJfQ09SUlVQVCwgLTEpOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogcmVhZCBpbiB0aGUgZnJlZWxpc3QgdG9wICovCisJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIEZSRUVMSVNUX1RPUCwgJnJlY19wdHIpID09IC0xKSB7CisJCWdvdG8gZmFpbDsKKwl9CisKKwl3aGlsZSAocmVjX3B0cikgeworCisJCS8qIElmIHdlIGNhbid0IHN0b3JlIHRoaXMgcmVjb3JkICh3ZSd2ZSBzZWVuIGl0CisJCSAgIGJlZm9yZSkgdGhlbiB0aGUgZnJlZSBsaXN0IGhhcyBhIGxvb3AgYW5kIG11c3QKKwkJICAgYmUgY29ycnVwdC4gKi8KKworCQlpZiAoc2Vlbl9pbnNlcnQobWVtX3RkYiwgcmVjX3B0cikpIHsKKwkJCXJldCA9IFREQl9FUlJDT0RFKFREQl9FUlJfQ09SUlVQVCwgLTEpOworCQkJZ290byBmYWlsOworCQl9CisKKwkJaWYgKHRkYl9yZWNfZnJlZV9yZWFkKHRkYiwgcmVjX3B0ciwgJnJlYykgPT0gLTEpIHsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCisJCS8qIG1vdmUgdG8gdGhlIG5leHQgcmVjb3JkICovCisJCWxhc3RfcHRyID0gcmVjX3B0cjsKKwkJcmVjX3B0ciA9IHJlYy5uZXh0OworCQkqcG51bV9lbnRyaWVzICs9IDE7CisJfQorCisJcmV0ID0gMDsKKworICBmYWlsOgorCisJdGRiX2Nsb3NlKG1lbV90ZGIpOworCXRkYl91bmxvY2sodGRiLCAtMSwgRl9XUkxDSyk7CisJcmV0dXJuIHJldDsKK30KKworLyogZmlsZTogdHJhdmVyc2UuYyAqLworCisvKiBVc2VzIHRyYXZlcnNlIGxvY2s6IDAgPSBmaW5pc2gsIC0xID0gZXJyb3IsIG90aGVyID0gcmVjb3JkIG9mZnNldCAqLworc3RhdGljIGludCB0ZGJfbmV4dF9sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBzdHJ1Y3QgdGRiX3RyYXZlcnNlX2xvY2sgKnRsb2NrLAorCQkJIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKQoreworCWludCB3YW50X25leHQgPSAodGxvY2stPm9mZiAhPSAwKTsKKworCS8qIExvY2sgZWFjaCBjaGFpbiBmcm9tIHRoZSBzdGFydCBvbmUuICovCisJZm9yICg7IHRsb2NrLT5oYXNoIDwgdGRiLT5oZWFkZXIuaGFzaF9zaXplOyB0bG9jay0+aGFzaCsrKSB7CisJCWlmICghdGxvY2stPm9mZiAmJiB0bG9jay0+aGFzaCAhPSAwKSB7CisJCQkvKiB0aGlzIGlzIGFuIG9wdGltaXNhdGlvbiBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlCisJCQkgICB0aGUgaGFzaCBjaGFpbiBpcyBlbXB0eSwgd2hpY2ggaXMgcGFydGljdWxhcmx5CisJCQkgICBjb21tb24gZm9yIHRoZSB1c2Ugb2YgdGRiIHdpdGggbGRiLCB3aGVyZSBsYXJnZQorCQkJICAgaGFzaGVzIGFyZSB1c2VkLiBJbiB0aGF0IGNhc2Ugd2Ugc3BlbmQgbW9zdCBvZiBvdXIKKwkJCSAgIHRpbWUgaW4gdGRiX2JybG9jaygpLCBsb2NraW5nIGVtcHR5IGhhc2ggY2hhaW5zLgorCisJCQkgICBUbyBhdm9pZCB0aGlzLCB3ZSBkbyBhbiB1bmxvY2tlZCBwcmUtY2hlY2sgdG8gc2VlCisJCQkgICBpZiB0aGUgaGFzaCBjaGFpbiBpcyBlbXB0eSBiZWZvcmUgc3RhcnRpbmcgdG8gbG9vaworCQkJICAgaW5zaWRlIGl0LiBJZiBpdCBpcyBlbXB0eSB0aGVuIHdlIGNhbiBhdm9pZCB0aGF0CisJCQkgICBoYXNoIGNoYWluLiBJZiBpdCBpc24ndCBlbXB0eSB0aGVuIHdlIGNhbid0IGJlbGlldmUKKwkJCSAgIHRoZSB2YWx1ZSB3ZSBnZXQgYmFjaywgYXMgd2UgcmVhZCBpdCB3aXRob3V0IGEKKwkJCSAgIGxvY2ssIHNvIGluc3RlYWQgd2UgZ2V0IHRoZSBsb2NrIGFuZCByZS1mZXRjaCB0aGUKKwkJCSAgIHZhbHVlIGJlbG93LgorCisJCQkgICBOb3RpY2UgdGhhdCBub3QgZG9pbmcgdGhpcyBvcHRpbWlzYXRpb24gb24gdGhlCisJCQkgICBmaXJzdCBoYXNoIGNoYWluIGlzIGNyaXRpY2FsLiBXZSBtdXN0IGd1YXJhbnRlZQorCQkJICAgdGhhdCB3ZSBoYXZlIGRvbmUgYXQgbGVhc3Qgb25lIGZjbnRsIGxvY2sgYXQgdGhlCisJCQkgICBzdGFydCBvZiBhIHNlYXJjaCB0byBndWFyYW50ZWUgdGhhdCBtZW1vcnkgaXMKKwkJCSAgIGNvaGVyZW50IG9uIFNNUCBzeXN0ZW1zLiBJZiByZWNvcmRzIGFyZSBhZGRlZCBieQorCQkJICAgb3RoZXJzIGR1cmluZyB0aGUgc2VhcmNoIHRoZW4gdGhhdHMgT0ssIGFuZCB3ZQorCQkJICAgY291bGQgcG9zc2libHkgbWlzcyB0aG9zZSB3aXRoIHRoaXMgdHJpY2ssIGJ1dCB3ZQorCQkJICAgY291bGQgbWlzcyB0aGVtIGFueXdheSB3aXRob3V0IHRoaXMgdHJpY2ssIHNvIHRoZQorCQkJICAgc2VtYW50aWNzIGRvbid0IGNoYW5nZS4KKworCQkJICAgV2l0aCBhIG5vbi1pbmRleGVkIGxkYiBzZWFyY2ggdGhpcyB0cmljayBnYWlucyB1cyBhCisJCQkgICBmYWN0b3Igb2YgYXJvdW5kIDgwIGluIHNwZWVkIG9uIGEgbGludXggMi42LngKKwkJCSAgIHN5c3RlbSAodGVzdGluZyB1c2luZyBsZGJ0ZXN0KS4KKwkJCSovCisJCQl0ZGItPm1ldGhvZHMtPm5leHRfaGFzaF9jaGFpbih0ZGIsICZ0bG9jay0+aGFzaCk7CisJCQlpZiAodGxvY2stPmhhc2ggPT0gdGRiLT5oZWFkZXIuaGFzaF9zaXplKSB7CisJCQkJY29udGludWU7CisJCQl9CisJCX0KKworCQlpZiAodGRiX2xvY2sodGRiLCB0bG9jay0+aGFzaCwgdGxvY2stPmxvY2tfcncpID09IC0xKQorCQkJcmV0dXJuIC0xOworCisJCS8qIE5vIHByZXZpb3VzIHJlY29yZD8gIFN0YXJ0IGF0IHRvcCBvZiBjaGFpbi4gKi8KKwkJaWYgKCF0bG9jay0+b2ZmKSB7CisJCQlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX0hBU0hfVE9QKHRsb2NrLT5oYXNoKSwKKwkJCQkgICAgICZ0bG9jay0+b2ZmKSA9PSAtMSkKKwkJCQlnb3RvIGZhaWw7CisJCX0gZWxzZSB7CisJCQkvKiBPdGhlcndpc2UgdW5sb2NrIHRoZSBwcmV2aW91cyByZWNvcmQuICovCisJCQlpZiAodGRiX3VubG9ja19yZWNvcmQodGRiLCB0bG9jay0+b2ZmKSAhPSAwKQorCQkJCWdvdG8gZmFpbDsKKwkJfQorCisJCWlmICh3YW50X25leHQpIHsKKwkJCS8qIFdlIGhhdmUgb2Zmc2V0IG9mIG9sZCByZWNvcmQ6IGdyYWIgbmV4dCAqLworCQkJaWYgKHRkYl9yZWNfcmVhZCh0ZGIsIHRsb2NrLT5vZmYsIHJlYykgPT0gLTEpCisJCQkJZ290byBmYWlsOworCQkJdGxvY2stPm9mZiA9IHJlYy0+bmV4dDsKKwkJfQorCisJCS8qIEl0ZXJhdGUgdGhyb3VnaCBjaGFpbiAqLworCQl3aGlsZSggdGxvY2stPm9mZikgeworCQkJdGRiX29mZl90IGN1cnJlbnQ7CisJCQlpZiAodGRiX3JlY19yZWFkKHRkYiwgdGxvY2stPm9mZiwgcmVjKSA9PSAtMSkKKwkJCQlnb3RvIGZhaWw7CisKKwkJCS8qIERldGVjdCBpbmZpbml0ZSBsb29wcy4gRnJvbSAiU2hsb21pIFlhYWtvYm92aWNoIiA8U2hsb21pQGV4YW5ldC5jb20+LiAqLworCQkJaWYgKHRsb2NrLT5vZmYgPT0gcmVjLT5uZXh0KSB7CisJCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfbmV4dF9sb2NrOiBsb29wIGRldGVjdGVkLlxuIikpOworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKworCQkJaWYgKCFUREJfREVBRChyZWMpKSB7CisJCQkJLyogV29vaG9vOiB3ZSBmb3VuZCBvbmUhICovCisJCQkJaWYgKHRkYl9sb2NrX3JlY29yZCh0ZGIsIHRsb2NrLT5vZmYpICE9IDApCisJCQkJCWdvdG8gZmFpbDsKKwkJCQlyZXR1cm4gdGxvY2stPm9mZjsKKwkJCX0KKworCQkJLyogVHJ5IHRvIGNsZWFuIGRlYWQgb25lcyBmcm9tIG9sZCB0cmF2ZXJzZXMgKi8KKwkJCWN1cnJlbnQgPSB0bG9jay0+b2ZmOworCQkJdGxvY2stPm9mZiA9IHJlYy0+bmV4dDsKKwkJCWlmICghKHRkYi0+cmVhZF9vbmx5IHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkgJiYKKwkJCSAgICB0ZGJfZG9fZGVsZXRlKHRkYiwgY3VycmVudCwgcmVjKSAhPSAwKQorCQkJCWdvdG8gZmFpbDsKKwkJfQorCQl0ZGJfdW5sb2NrKHRkYiwgdGxvY2stPmhhc2gsIHRsb2NrLT5sb2NrX3J3KTsKKwkJd2FudF9uZXh0ID0gMDsKKwl9CisJLyogV2UgZmluaXNoZWQgaXRlcmF0aW9uIHdpdGhvdXQgZmluZGluZyBhbnl0aGluZyAqLworCXJldHVybiBUREJfRVJSQ09ERShUREJfU1VDQ0VTUywgMCk7CisKKyBmYWlsOgorCXRsb2NrLT5vZmYgPSAwOworCWlmICh0ZGJfdW5sb2NrKHRkYiwgdGxvY2stPmhhc2gsIHRsb2NrLT5sb2NrX3J3KSAhPSAwKQorCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9uZXh0X2xvY2s6IE9uIGVycm9yIHVubG9jayBmYWlsZWQhXG4iKSk7CisJcmV0dXJuIC0xOworfQorCisvKiB0cmF2ZXJzZSB0aGUgZW50aXJlIGRhdGFiYXNlIC0gY2FsbGluZyBmbih0ZGIsIGtleSwgZGF0YSkgb24gZWFjaCBlbGVtZW50LgorICAgcmV0dXJuIC0xIG9uIGVycm9yIG9yIHRoZSByZWNvcmQgY291bnQgdHJhdmVyc2VkCisgICBpZiBmbiBpcyBOVUxMIHRoZW4gaXQgaXMgbm90IGNhbGxlZAorICAgYSBub24temVybyByZXR1cm4gdmFsdWUgZnJvbSBmbigpIGluZGljYXRlcyB0aGF0IHRoZSB0cmF2ZXJzYWwgc2hvdWxkIHN0b3AKKyAgKi8KK3N0YXRpYyBpbnQgdGRiX3RyYXZlcnNlX2ludGVybmFsKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLAorCQkJCSB0ZGJfdHJhdmVyc2VfZnVuYyBmbiwgdm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJCSBzdHJ1Y3QgdGRiX3RyYXZlcnNlX2xvY2sgKnRsKQoreworCVREQl9EQVRBIGtleSwgZGJ1ZjsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCWludCByZXQsIGNvdW50ID0gMDsKKworCS8qIFRoaXMgd2FzIGluIHRoZSBpbml0aWFsaXphdG9uLCBhYm92ZSwgYnV0IHRoZSBJUklYIGNvbXBpbGVyCisJICogZGlkIG5vdCBsaWtlIGl0LiAgY3JoCisJICovCisJdGwtPm5leHQgPSB0ZGItPnRyYXZsb2Nrcy5uZXh0OworCisJLyogZmNudGwgbG9ja3MgZG9uJ3Qgc3RhY2s6IGJld2FyZSB0cmF2ZXJzZSBpbnNpZGUgdHJhdmVyc2UgKi8KKwl0ZGItPnRyYXZsb2Nrcy5uZXh0ID0gdGw7CisKKwkvKiB0ZGJfbmV4dF9sb2NrIHBsYWNlcyBsb2NrcyBvbiB0aGUgcmVjb3JkIHJldHVybmVkLCBhbmQgaXRzIGNoYWluICovCisJd2hpbGUgKChyZXQgPSB0ZGJfbmV4dF9sb2NrKHRkYiwgdGwsICZyZWMpKSA+IDApIHsKKwkJY291bnQrKzsKKwkJLyogbm93IHJlYWQgdGhlIGZ1bGwgcmVjb3JkICovCisJCWtleS5kcHRyID0gdGRiX2FsbG9jX3JlYWQodGRiLCB0bC0+b2ZmICsgc2l6ZW9mKHJlYyksCisJCQkJCSAgcmVjLmtleV9sZW4gKyByZWMuZGF0YV9sZW4pOworCQlpZiAoIWtleS5kcHRyKSB7CisJCQlyZXQgPSAtMTsKKwkJCWlmICh0ZGJfdW5sb2NrKHRkYiwgdGwtPmhhc2gsIHRsLT5sb2NrX3J3KSAhPSAwKQorCQkJCWdvdG8gb3V0OworCQkJaWYgKHRkYl91bmxvY2tfcmVjb3JkKHRkYiwgdGwtPm9mZikgIT0gMCkKKwkJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmF2ZXJzZToga2V5LmRwdHIgPT0gTlVMTCBhbmQgdW5sb2NrX3JlY29yZCBmYWlsZWQhXG4iKSk7CisJCQlnb3RvIG91dDsKKwkJfQorCQlrZXkuZHNpemUgPSByZWMua2V5X2xlbjsKKwkJZGJ1Zi5kcHRyID0ga2V5LmRwdHIgKyByZWMua2V5X2xlbjsKKwkJZGJ1Zi5kc2l6ZSA9IHJlYy5kYXRhX2xlbjsKKworCQkvKiBEcm9wIGNoYWluIGxvY2ssIGNhbGwgb3V0ICovCisJCWlmICh0ZGJfdW5sb2NrKHRkYiwgdGwtPmhhc2gsIHRsLT5sb2NrX3J3KSAhPSAwKSB7CisJCQlyZXQgPSAtMTsKKwkJCVNBRkVfRlJFRShrZXkuZHB0cik7CisJCQlnb3RvIG91dDsKKwkJfQorCQlpZiAoZm4gJiYgZm4odGRiLCBrZXksIGRidWYsIHByaXZhdGVfZGF0YSkpIHsKKwkJCS8qIFRoZXkgd2FudCB1cyB0byB0ZXJtaW5hdGUgdHJhdmVyc2FsICovCisJCQlyZXQgPSBjb3VudDsKKwkJCWlmICh0ZGJfdW5sb2NrX3JlY29yZCh0ZGIsIHRsLT5vZmYpICE9IDApIHsKKwkJCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl90cmF2ZXJzZTogdW5sb2NrX3JlY29yZCBmYWlsZWQhXG4iKSk7OworCQkJCXJldCA9IC0xOworCQkJfQorCQkJU0FGRV9GUkVFKGtleS5kcHRyKTsKKwkJCWdvdG8gb3V0OworCQl9CisJCVNBRkVfRlJFRShrZXkuZHB0cik7CisJfQorb3V0OgorCXRkYi0+dHJhdmxvY2tzLm5leHQgPSB0bC0+bmV4dDsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIC0xOworCWVsc2UKKwkJcmV0dXJuIGNvdW50OworfQorCisKKy8qCisgIGEgd3JpdGUgc3R5bGUgdHJhdmVyc2UgLSB0ZW1wb3JhcmlseSBtYXJrcyB0aGUgZGIgcmVhZCBvbmx5CisqLworaW50IHRkYl90cmF2ZXJzZV9yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLAorCQkgICAgICB0ZGJfdHJhdmVyc2VfZnVuYyBmbiwgdm9pZCAqcHJpdmF0ZV9kYXRhKQoreworCXN0cnVjdCB0ZGJfdHJhdmVyc2VfbG9jayB0bCA9IHsgTlVMTCwgMCwgMCwgRl9SRExDSyB9OworCWludCByZXQ7CisKKwkvKiB3ZSBuZWVkIHRvIGdldCBhIHJlYWQgbG9jayBvbiB0aGUgdHJhbnNhY3Rpb24gbG9jayBoZXJlIHRvCisJICAgY29wZSB3aXRoIHRoZSBsb2NrIG9yZGVyaW5nIHNlbWFudGljcyBvZiBzb2xhcmlzMTAgKi8KKwlpZiAodGRiX3RyYW5zYWN0aW9uX2xvY2sodGRiLCBGX1JETENLKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJdGRiLT50cmF2ZXJzZV9yZWFkKys7CisJcmV0ID0gdGRiX3RyYXZlcnNlX2ludGVybmFsKHRkYiwgZm4sIHByaXZhdGVfZGF0YSwgJnRsKTsKKwl0ZGItPnRyYXZlcnNlX3JlYWQtLTsKKworCXRkYl90cmFuc2FjdGlvbl91bmxvY2sodGRiKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qCisgIGEgd3JpdGUgc3R5bGUgdHJhdmVyc2UgLSBuZWVkcyB0byBnZXQgdGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8KKyAgcHJldmVudCBkZWFkbG9ja3MKKyovCitpbnQgdGRiX3RyYXZlcnNlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLAorCQkgdGRiX3RyYXZlcnNlX2Z1bmMgZm4sIHZvaWQgKnByaXZhdGVfZGF0YSkKK3sKKwlzdHJ1Y3QgdGRiX3RyYXZlcnNlX2xvY2sgdGwgPSB7IE5VTEwsIDAsIDAsIEZfV1JMQ0sgfTsKKwlpbnQgcmV0OworCisJaWYgKHRkYi0+cmVhZF9vbmx5IHx8IHRkYi0+dHJhdmVyc2VfcmVhZCkgeworCQlyZXR1cm4gdGRiX3RyYXZlcnNlX3JlYWQodGRiLCBmbiwgcHJpdmF0ZV9kYXRhKTsKKwl9CisKKwlpZiAodGRiX3RyYW5zYWN0aW9uX2xvY2sodGRiLCBGX1dSTENLKSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0ID0gdGRiX3RyYXZlcnNlX2ludGVybmFsKHRkYiwgZm4sIHByaXZhdGVfZGF0YSwgJnRsKTsKKworCXRkYl90cmFuc2FjdGlvbl91bmxvY2sodGRiKTsKKworCXJldHVybiByZXQ7Cit9CisKKworLyogZmluZCB0aGUgZmlyc3QgZW50cnkgaW4gdGhlIGRhdGFiYXNlIGFuZCByZXR1cm4gaXRzIGtleSAqLworVERCX0RBVEEgdGRiX2ZpcnN0a2V5KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCVREQl9EQVRBIGtleTsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCisJLyogcmVsZWFzZSBhbnkgb2xkIGxvY2sgKi8KKwlpZiAodGRiX3VubG9ja19yZWNvcmQodGRiLCB0ZGItPnRyYXZsb2Nrcy5vZmYpICE9IDApCisJCXJldHVybiB0ZGJfbnVsbDsKKwl0ZGItPnRyYXZsb2Nrcy5vZmYgPSB0ZGItPnRyYXZsb2Nrcy5oYXNoID0gMDsKKwl0ZGItPnRyYXZsb2Nrcy5sb2NrX3J3ID0gRl9SRExDSzsKKworCS8qIEdyYWIgZmlyc3QgcmVjb3JkOiBsb2NrcyBjaGFpbiBhbmQgcmV0dXJuZWQgcmVjb3JkLiAqLworCWlmICh0ZGJfbmV4dF9sb2NrKHRkYiwgJnRkYi0+dHJhdmxvY2tzLCAmcmVjKSA8PSAwKQorCQlyZXR1cm4gdGRiX251bGw7CisJLyogbm93IHJlYWQgdGhlIGtleSAqLworCWtleS5kc2l6ZSA9IHJlYy5rZXlfbGVuOworCWtleS5kcHRyID10ZGJfYWxsb2NfcmVhZCh0ZGIsdGRiLT50cmF2bG9ja3Mub2ZmK3NpemVvZihyZWMpLGtleS5kc2l6ZSk7CisKKwkvKiBVbmxvY2sgdGhlIGhhc2ggY2hhaW4gb2YgdGhlIHJlY29yZCB3ZSBqdXN0IHJlYWQuICovCisJaWYgKHRkYl91bmxvY2sodGRiLCB0ZGItPnRyYXZsb2Nrcy5oYXNoLCB0ZGItPnRyYXZsb2Nrcy5sb2NrX3J3KSAhPSAwKQorCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9maXJzdGtleTogZXJyb3Igb2NjdXJyZWQgd2hpbGUgdGRiX3VubG9ja2luZyFcbiIpKTsKKwlyZXR1cm4ga2V5OworfQorCisvKiBmaW5kIHRoZSBuZXh0IGVudHJ5IGluIHRoZSBkYXRhYmFzZSwgcmV0dXJuaW5nIGl0cyBrZXkgKi8KK1REQl9EQVRBIHRkYl9uZXh0a2V5KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBvbGRrZXkpCit7CisJdTMyIG9sZGhhc2g7CisJVERCX0RBVEEga2V5ID0gdGRiX251bGw7CisJc3RydWN0IGxpc3Rfc3RydWN0IHJlYzsKKwl1bnNpZ25lZCBjaGFyICprID0gTlVMTDsKKworCS8qIElzIGxvY2tlZCBrZXkgdGhlIG9sZCBrZXk/ICBJZiBzbywgdHJhdmVyc2Ugd2lsbCBiZSByZWxpYWJsZS4gKi8KKwlpZiAodGRiLT50cmF2bG9ja3Mub2ZmKSB7CisJCWlmICh0ZGJfbG9jayh0ZGIsdGRiLT50cmF2bG9ja3MuaGFzaCx0ZGItPnRyYXZsb2Nrcy5sb2NrX3J3KSkKKwkJCXJldHVybiB0ZGJfbnVsbDsKKwkJaWYgKHRkYl9yZWNfcmVhZCh0ZGIsIHRkYi0+dHJhdmxvY2tzLm9mZiwgJnJlYykgPT0gLTEKKwkJICAgIHx8ICEoayA9IHRkYl9hbGxvY19yZWFkKHRkYix0ZGItPnRyYXZsb2Nrcy5vZmYrc2l6ZW9mKHJlYyksCisJCQkJCSAgICByZWMua2V5X2xlbikpCisJCSAgICB8fCBtZW1jbXAoaywgb2xka2V5LmRwdHIsIG9sZGtleS5kc2l6ZSkgIT0gMCkgeworCQkJLyogTm8sIGl0IHdhc24ndDogdW5sb2NrIGl0IGFuZCBzdGFydCBmcm9tIHNjcmF0Y2ggKi8KKwkJCWlmICh0ZGJfdW5sb2NrX3JlY29yZCh0ZGIsIHRkYi0+dHJhdmxvY2tzLm9mZikgIT0gMCkgeworCQkJCVNBRkVfRlJFRShrKTsKKwkJCQlyZXR1cm4gdGRiX251bGw7CisJCQl9CisJCQlpZiAodGRiX3VubG9jayh0ZGIsIHRkYi0+dHJhdmxvY2tzLmhhc2gsIHRkYi0+dHJhdmxvY2tzLmxvY2tfcncpICE9IDApIHsKKwkJCQlTQUZFX0ZSRUUoayk7CisJCQkJcmV0dXJuIHRkYl9udWxsOworCQkJfQorCQkJdGRiLT50cmF2bG9ja3Mub2ZmID0gMDsKKwkJfQorCisJCVNBRkVfRlJFRShrKTsKKwl9CisKKwlpZiAoIXRkYi0+dHJhdmxvY2tzLm9mZikgeworCQkvKiBObyBwcmV2aW91cyBlbGVtZW50OiBkbyBub3JtYWwgZmluZCwgYW5kIGxvY2sgcmVjb3JkICovCisJCXRkYi0+dHJhdmxvY2tzLm9mZiA9IHRkYl9maW5kX2xvY2tfaGFzaCh0ZGIsIG9sZGtleSwgdGRiLT5oYXNoX2ZuKCZvbGRrZXkpLCB0ZGItPnRyYXZsb2Nrcy5sb2NrX3J3LCAmcmVjKTsKKwkJaWYgKCF0ZGItPnRyYXZsb2Nrcy5vZmYpCisJCQlyZXR1cm4gdGRiX251bGw7CisJCXRkYi0+dHJhdmxvY2tzLmhhc2ggPSBCVUNLRVQocmVjLmZ1bGxfaGFzaCk7CisJCWlmICh0ZGJfbG9ja19yZWNvcmQodGRiLCB0ZGItPnRyYXZsb2Nrcy5vZmYpICE9IDApIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX25leHRrZXk6IGxvY2tfcmVjb3JkIGZhaWxlZCAoJXMpIVxuIiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCQlyZXR1cm4gdGRiX251bGw7CisJCX0KKwl9CisJb2xkaGFzaCA9IHRkYi0+dHJhdmxvY2tzLmhhc2g7CisKKwkvKiBHcmFiIG5leHQgcmVjb3JkOiBsb2NrcyBjaGFpbiBhbmQgcmV0dXJuZWQgcmVjb3JkLAorCSAgIHVubG9ja3Mgb2xkIHJlY29yZCAqLworCWlmICh0ZGJfbmV4dF9sb2NrKHRkYiwgJnRkYi0+dHJhdmxvY2tzLCAmcmVjKSA+IDApIHsKKwkJa2V5LmRzaXplID0gcmVjLmtleV9sZW47CisJCWtleS5kcHRyID0gdGRiX2FsbG9jX3JlYWQodGRiLCB0ZGItPnRyYXZsb2Nrcy5vZmYrc2l6ZW9mKHJlYyksCisJCQkJCSAga2V5LmRzaXplKTsKKwkJLyogVW5sb2NrIHRoZSBjaGFpbiBvZiB0aGlzIG5ldyByZWNvcmQgKi8KKwkJaWYgKHRkYl91bmxvY2sodGRiLCB0ZGItPnRyYXZsb2Nrcy5oYXNoLCB0ZGItPnRyYXZsb2Nrcy5sb2NrX3J3KSAhPSAwKQorCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfbmV4dGtleTogV0FSTklORyB0ZGJfdW5sb2NrIGZhaWxlZCFcbiIpKTsKKwl9CisJLyogVW5sb2NrIHRoZSBjaGFpbiBvZiBvbGQgcmVjb3JkICovCisJaWYgKHRkYl91bmxvY2sodGRiLCBCVUNLRVQob2xkaGFzaCksIHRkYi0+dHJhdmxvY2tzLmxvY2tfcncpICE9IDApCisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX25leHRrZXk6IFdBUk5JTkcgdGRiX3VubG9jayBmYWlsZWQhXG4iKSk7CisJcmV0dXJuIGtleTsKK30KKworLyogZmlsZTogZHVtcC5jICovCisKK3N0YXRpYyB0ZGJfb2ZmX3QgdGRiX2R1bXBfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgaGFzaCwKKwkJCQkgdGRiX29mZl90IG9mZnNldCkKK3sKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCXRkYl9vZmZfdCB0YWlsZXJfb2ZzLCB0YWlsZXI7CisKKwlpZiAodGRiLT5tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIG9mZnNldCwgKGNoYXIgKikmcmVjLAorCQkJCSAgIHNpemVvZihyZWMpLCBET0NPTlYoKSkgPT0gLTEpIHsKKwkJcHJpbnRmKCJFUlJPUjogZmFpbGVkIHRvIHJlYWQgcmVjb3JkIGF0ICV1XG4iLCBvZmZzZXQpOworCQlyZXR1cm4gMDsKKwl9CisKKwlwcmludGYoIiByZWM6IGhhc2g9JWQgb2Zmc2V0PTB4JTA4eCBuZXh0PTB4JTA4eCByZWNfbGVuPSVkICIKKwkgICAgICAgImtleV9sZW49JWQgZGF0YV9sZW49JWQgZnVsbF9oYXNoPTB4JXggbWFnaWM9MHgleFxuIiwKKwkgICAgICAgaGFzaCwgb2Zmc2V0LCByZWMubmV4dCwgcmVjLnJlY19sZW4sIHJlYy5rZXlfbGVuLCByZWMuZGF0YV9sZW4sCisJICAgICAgIHJlYy5mdWxsX2hhc2gsIHJlYy5tYWdpYyk7CisKKwl0YWlsZXJfb2ZzID0gb2Zmc2V0ICsgc2l6ZW9mKHJlYykgKyByZWMucmVjX2xlbiAtIHNpemVvZih0ZGJfb2ZmX3QpOworCisJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIHRhaWxlcl9vZnMsICZ0YWlsZXIpID09IC0xKSB7CisJCXByaW50ZigiRVJST1I6IGZhaWxlZCB0byByZWFkIHRhaWxlciBhdCAldVxuIiwgdGFpbGVyX29mcyk7CisJCXJldHVybiByZWMubmV4dDsKKwl9CisKKwlpZiAodGFpbGVyICE9IHJlYy5yZWNfbGVuICsgc2l6ZW9mKHJlYykpIHsKKwkJcHJpbnRmKCJFUlJPUjogdGFpbGVyIGRvZXMgbm90IG1hdGNoIHJlY29yZCEgdGFpbGVyPSV1IHRvdGFsc2l6ZT0ldVxuIiwKKwkJCQkodW5zaWduZWQgaW50KXRhaWxlciwgKHVuc2lnbmVkIGludCkocmVjLnJlY19sZW4gKyBzaXplb2YocmVjKSkpOworCX0KKwlyZXR1cm4gcmVjLm5leHQ7Cit9CisKK3N0YXRpYyBpbnQgdGRiX2R1bXBfY2hhaW4oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBpKQoreworCXRkYl9vZmZfdCByZWNfcHRyLCB0b3A7CisKKwl0b3AgPSBUREJfSEFTSF9UT1AoaSk7CisKKwlpZiAodGRiX2xvY2sodGRiLCBpLCBGX1dSTENLKSAhPSAwKQorCQlyZXR1cm4gLTE7CisKKwlpZiAodGRiX29mc19yZWFkKHRkYiwgdG9wLCAmcmVjX3B0cikgPT0gLTEpCisJCXJldHVybiB0ZGJfdW5sb2NrKHRkYiwgaSwgRl9XUkxDSyk7CisKKwlpZiAocmVjX3B0cikKKwkJcHJpbnRmKCJoYXNoPSVkXG4iLCBpKTsKKworCXdoaWxlIChyZWNfcHRyKSB7CisJCXJlY19wdHIgPSB0ZGJfZHVtcF9yZWNvcmQodGRiLCBpLCByZWNfcHRyKTsKKwl9CisKKwlyZXR1cm4gdGRiX3VubG9jayh0ZGIsIGksIEZfV1JMQ0spOworfQorCit2b2lkIHRkYl9kdW1wX2FsbChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlpbnQgaTsKKwlmb3IgKGk9MDtpPHRkYi0+aGVhZGVyLmhhc2hfc2l6ZTtpKyspIHsKKwkJdGRiX2R1bXBfY2hhaW4odGRiLCBpKTsKKwl9CisJcHJpbnRmKCJmcmVlbGlzdDpcbiIpOworCXRkYl9kdW1wX2NoYWluKHRkYiwgLTEpOworfQorCitpbnQgdGRiX3ByaW50ZnJlZWxpc3Qoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJaW50IHJldDsKKwlsb25nIHRvdGFsX2ZyZWUgPSAwOworCXRkYl9vZmZfdCBvZmZzZXQsIHJlY19wdHI7CisJc3RydWN0IGxpc3Rfc3RydWN0IHJlYzsKKworCWlmICgocmV0ID0gdGRiX2xvY2sodGRiLCAtMSwgRl9XUkxDSykpICE9IDApCisJCXJldHVybiByZXQ7CisKKwlvZmZzZXQgPSBGUkVFTElTVF9UT1A7CisKKwkvKiByZWFkIGluIHRoZSBmcmVlbGlzdCB0b3AgKi8KKwlpZiAodGRiX29mc19yZWFkKHRkYiwgb2Zmc2V0LCAmcmVjX3B0cikgPT0gLTEpIHsKKwkJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcHJpbnRmKCJmcmVlbGlzdCB0b3A9WzB4JTA4eF1cbiIsIHJlY19wdHIgKTsKKwl3aGlsZSAocmVjX3B0cikgeworCQlpZiAodGRiLT5tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIHJlY19wdHIsIChjaGFyICopJnJlYywKKwkJCQkJICAgc2l6ZW9mKHJlYyksIERPQ09OVigpKSA9PSAtMSkgeworCQkJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWlmIChyZWMubWFnaWMgIT0gVERCX0ZSRUVfTUFHSUMpIHsKKwkJCXByaW50ZigiYmFkIG1hZ2ljIDB4JTA4eCBpbiBmcmVlIGxpc3RcbiIsIHJlYy5tYWdpYyk7CisJCQl0ZGJfdW5sb2NrKHRkYiwgLTEsIEZfV1JMQ0spOworCQkJcmV0dXJuIC0xOworCQl9CisKKwkJcHJpbnRmKCJlbnRyeSBvZmZzZXQ9WzB4JTA4eF0sIHJlYy5yZWNfbGVuID0gWzB4JTA4eCAoJWQpXSAoZW5kID0gMHglMDh4KVxuIiwKKwkJICAgICAgIHJlY19wdHIsIHJlYy5yZWNfbGVuLCByZWMucmVjX2xlbiwgcmVjX3B0ciArIHJlYy5yZWNfbGVuKTsKKwkJdG90YWxfZnJlZSArPSByZWMucmVjX2xlbjsKKworCQkvKiBtb3ZlIHRvIHRoZSBuZXh0IHJlY29yZCAqLworCQlyZWNfcHRyID0gcmVjLm5leHQ7CisJfQorCXByaW50ZigidG90YWwgcmVjX2xlbiA9IFsweCUwOHggKCVkKV1cbiIsIChpbnQpdG90YWxfZnJlZSwKKyAgICAgICAgICAgICAgIChpbnQpdG90YWxfZnJlZSk7CisKKwlyZXR1cm4gdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKK30KKworLyogZmlsZTogdGRiLmMgKi8KKworLyoKKyAgbm9uLWJsb2NraW5nIGluY3JlbWVudCBvZiB0aGUgdGRiIHNlcXVlbmNlIG51bWJlciBpZiB0aGUgdGRiIGhhcyBiZWVuIG9wZW5lZCB1c2luZworICB0aGUgVERCX1NFUU5VTSBmbGFnCisqLwordm9pZCB0ZGJfaW5jcmVtZW50X3NlcW51bV9ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwl0ZGJfb2ZmX3Qgc2VxbnVtPTA7CisKKwlpZiAoISh0ZGItPmZsYWdzICYgVERCX1NFUU5VTSkpIHsKKwkJcmV0dXJuOworCX0KKworCS8qIHdlIGlnbm9yZSBlcnJvcnMgZnJvbSB0aGlzLCBhcyB3ZSBoYXZlIG5vIHNhbmUgd2F5IG9mCisJICAgZGVhbGluZyB3aXRoIHRoZW0uCisJKi8KKwl0ZGJfb2ZzX3JlYWQodGRiLCBUREJfU0VRTlVNX09GUywgJnNlcW51bSk7CisJc2VxbnVtKys7CisJdGRiX29mc193cml0ZSh0ZGIsIFREQl9TRVFOVU1fT0ZTLCAmc2VxbnVtKTsKK30KKworLyoKKyAgaW5jcmVtZW50IHRoZSB0ZGIgc2VxdWVuY2UgbnVtYmVyIGlmIHRoZSB0ZGIgaGFzIGJlZW4gb3BlbmVkIHVzaW5nCisgIHRoZSBUREJfU0VRTlVNIGZsYWcKKyovCitzdGF0aWMgdm9pZCB0ZGJfaW5jcmVtZW50X3NlcW51bShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlpZiAoISh0ZGItPmZsYWdzICYgVERCX1NFUU5VTSkpIHsKKwkJcmV0dXJuOworCX0KKworCWlmICh0ZGJfYnJsb2NrKHRkYiwgVERCX1NFUU5VTV9PRlMsIEZfV1JMQ0ssIEZfU0VUTEtXLCAxLCAxKSAhPSAwKSB7CisJCXJldHVybjsKKwl9CisKKwl0ZGJfaW5jcmVtZW50X3NlcW51bV9ub25ibG9jayh0ZGIpOworCisJdGRiX2JybG9jayh0ZGIsIFREQl9TRVFOVU1fT0ZTLCBGX1VOTENLLCBGX1NFVExLVywgMSwgMSk7Cit9CisKK3N0YXRpYyBpbnQgdGRiX2tleV9jb21wYXJlKFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGF0YSwgdm9pZCAqcHJpdmF0ZV9kYXRhKQoreworCXJldHVybiBtZW1jbXAoZGF0YS5kcHRyLCBrZXkuZHB0ciwgZGF0YS5kc2l6ZSk7Cit9CisKKy8qIFJldHVybnMgMCBvbiBmYWlsLiAgT24gc3VjY2VzcywgcmV0dXJuIG9mZnNldCBvZiByZWNvcmQsIGFuZCBmaWxscworICAgaW4gcmVjICovCitzdGF0aWMgdGRiX29mZl90IHRkYl9maW5kKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXksIHUzMiBoYXNoLAorCQkJc3RydWN0IGxpc3Rfc3RydWN0ICpyKQoreworCXRkYl9vZmZfdCByZWNfcHRyOworCisJLyogcmVhZCBpbiB0aGUgaGFzaCB0b3AgKi8KKwlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX0hBU0hfVE9QKGhhc2gpLCAmcmVjX3B0cikgPT0gLTEpCisJCXJldHVybiAwOworCisJLyoga2VlcCBsb29raW5nIHVudGlsIHdlIGZpbmQgdGhlIHJpZ2h0IHJlY29yZCAqLworCXdoaWxlIChyZWNfcHRyKSB7CisJCWlmICh0ZGJfcmVjX3JlYWQodGRiLCByZWNfcHRyLCByKSA9PSAtMSkKKwkJCXJldHVybiAwOworCisJCWlmICghVERCX0RFQUQocikgJiYgaGFzaD09ci0+ZnVsbF9oYXNoCisJCSAgICAmJiBrZXkuZHNpemU9PXItPmtleV9sZW4KKwkJICAgICYmIHRkYl9wYXJzZV9kYXRhKHRkYiwga2V5LCByZWNfcHRyICsgc2l6ZW9mKCpyKSwKKwkJCQkgICAgICByLT5rZXlfbGVuLCB0ZGJfa2V5X2NvbXBhcmUsCisJCQkJICAgICAgTlVMTCkgPT0gMCkgeworCQkJcmV0dXJuIHJlY19wdHI7CisJCX0KKwkJcmVjX3B0ciA9IHItPm5leHQ7CisJfQorCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX05PRVhJU1QsIDApOworfQorCisvKiBBcyB0ZGJfZmluZCwgYnV0IGlmIHlvdSBzdWNjZWVkLCBrZWVwIHRoZSBsb2NrICovCit0ZGJfb2ZmX3QgdGRiX2ZpbmRfbG9ja19oYXNoKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXksIHUzMiBoYXNoLCBpbnQgbG9ja3R5cGUsCisJCQkgICBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYykKK3sKKwl1MzIgcmVjX3B0cjsKKworCWlmICh0ZGJfbG9jayh0ZGIsIEJVQ0tFVChoYXNoKSwgbG9ja3R5cGUpID09IC0xKQorCQlyZXR1cm4gMDsKKwlpZiAoIShyZWNfcHRyID0gdGRiX2ZpbmQodGRiLCBrZXksIGhhc2gsIHJlYykpKQorCQl0ZGJfdW5sb2NrKHRkYiwgQlVDS0VUKGhhc2gpLCBsb2NrdHlwZSk7CisJcmV0dXJuIHJlY19wdHI7Cit9CisKKworLyogdXBkYXRlIGFuIGVudHJ5IGluIHBsYWNlIC0gdGhpcyBvbmx5IHdvcmtzIGlmIHRoZSBuZXcgZGF0YSBzaXplCisgICBpcyA8PSB0aGUgb2xkIGRhdGEgc2l6ZSBhbmQgdGhlIGtleSBleGlzdHMuCisgICBvbiBmYWlsdXJlIHJldHVybiAtMS4KKyovCitzdGF0aWMgaW50IHRkYl91cGRhdGVfaGFzaChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCB1MzIgaGFzaCwgVERCX0RBVEEgZGJ1ZikKK3sKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCXRkYl9vZmZfdCByZWNfcHRyOworCisJLyogZmluZCBlbnRyeSAqLworCWlmICghKHJlY19wdHIgPSB0ZGJfZmluZCh0ZGIsIGtleSwgaGFzaCwgJnJlYykpKQorCQlyZXR1cm4gLTE7CisKKwkvKiBtdXN0IGJlIGxvbmcgZW5vdWdoIGtleSwgZGF0YSBhbmQgdGFpbGVyICovCisJaWYgKHJlYy5yZWNfbGVuIDwga2V5LmRzaXplICsgZGJ1Zi5kc2l6ZSArIHNpemVvZih0ZGJfb2ZmX3QpKSB7CisJCXRkYi0+ZWNvZGUgPSBUREJfU1VDQ0VTUzsgLyogTm90IHJlYWxseSBhbiBlcnJvciAqLworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX3dyaXRlKHRkYiwgcmVjX3B0ciArIHNpemVvZihyZWMpICsgcmVjLmtleV9sZW4sCisJCSAgICAgIGRidWYuZHB0ciwgZGJ1Zi5kc2l6ZSkgPT0gLTEpCisJCXJldHVybiAtMTsKKworCWlmIChkYnVmLmRzaXplICE9IHJlYy5kYXRhX2xlbikgeworCQkvKiB1cGRhdGUgc2l6ZSAqLworCQlyZWMuZGF0YV9sZW4gPSBkYnVmLmRzaXplOworCQlyZXR1cm4gdGRiX3JlY193cml0ZSh0ZGIsIHJlY19wdHIsICZyZWMpOworCX0KKworCXJldHVybiAwOworfQorCisvKiBmaW5kIGFuIGVudHJ5IGluIHRoZSBkYXRhYmFzZSBnaXZlbiBhIGtleSAqLworLyogSWYgYW4gZW50cnkgZG9lc24ndCBleGlzdCB0ZGJfZXJyIHdpbGwgYmUgc2V0IHRvCisgKiBUREJfRVJSX05PRVhJU1QuIElmIGEga2V5IGhhcyBubyBkYXRhIGF0dGFjaGVkCisgKiB0aGVuIHRoZSBUREJfREFUQSB3aWxsIGhhdmUgemVybyBsZW5ndGggYnV0CisgKiBhIG5vbi16ZXJvIHBvaW50ZXIKKyAqLworVERCX0RBVEEgdGRiX2ZldGNoKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpCit7CisJdGRiX29mZl90IHJlY19wdHI7CisJc3RydWN0IGxpc3Rfc3RydWN0IHJlYzsKKwlUREJfREFUQSByZXQ7CisJdTMyIGhhc2g7CisKKwkvKiBmaW5kIHdoaWNoIGhhc2ggYnVja2V0IGl0IGlzIGluICovCisJaGFzaCA9IHRkYi0+aGFzaF9mbigma2V5KTsKKwlpZiAoIShyZWNfcHRyID0gdGRiX2ZpbmRfbG9ja19oYXNoKHRkYixrZXksaGFzaCxGX1JETENLLCZyZWMpKSkKKwkJcmV0dXJuIHRkYl9udWxsOworCisJcmV0LmRwdHIgPSB0ZGJfYWxsb2NfcmVhZCh0ZGIsIHJlY19wdHIgKyBzaXplb2YocmVjKSArIHJlYy5rZXlfbGVuLAorCQkJCSAgcmVjLmRhdGFfbGVuKTsKKwlyZXQuZHNpemUgPSByZWMuZGF0YV9sZW47CisJdGRiX3VubG9jayh0ZGIsIEJVQ0tFVChyZWMuZnVsbF9oYXNoKSwgRl9SRExDSyk7CisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIEZpbmQgYW4gZW50cnkgaW4gdGhlIGRhdGFiYXNlIGFuZCBoYW5kIHRoZSByZWNvcmQncyBkYXRhIHRvIGEgcGFyc2luZworICogZnVuY3Rpb24uIFRoZSBwYXJzaW5nIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIHVuZGVyIHRoZSBjaGFpbiByZWFkIGxvY2ssIHNvIGl0CisgKiBzaG91bGQgYmUgZmFzdCBhbmQgc2hvdWxkIG5vdCBibG9jayBvbiBvdGhlciBzeXNjYWxscy4KKyAqCisgKiBET05UIENBTEwgT1RIRVIgVERCIENBTExTIEZST00gVEhFIFBBUlNFUiwgVEhJUyBNSUdIVCBMRUFEIFRPIFNFR0ZBVUxUUy4KKyAqCisgKiBGb3IgbW1hcHBlZCB0ZGIncyB0aGF0IGRvIG5vdCBoYXZlIGEgdHJhbnNhY3Rpb24gb3BlbiBpdCBwb2ludHMgdGhlIHBhcnNpbmcKKyAqIGZ1bmN0aW9uIGRpcmVjdGx5IGF0IHRoZSBtbWFwIGFyZWEsIGl0IGF2b2lkcyB0aGUgbWFsbG9jL21lbWNweSBpbiB0aGlzCisgKiBjYXNlLiBJZiBhIHRyYW5zYWN0aW9uIGlzIG9wZW4gb3Igbm8gbW1hcCBpcyBhdmFpbGFibGUsIGl0IGhhcyB0byBkbworICogbWFsbG9jL3JlYWQvcGFyc2UvZnJlZS4KKyAqCisgKiBUaGlzIGlzIGludGVyZXN0aW5nIGZvciBhbGwgcmVhZGVycyBvZiBwb3RlbnRpYWxseSBsYXJnZSBkYXRhIHN0cnVjdHVyZXMgaW4KKyAqIHRoZSB0ZGIgcmVjb3JkcywgbGRiIGluZGV4ZXMgYmVpbmcgb25lIGV4YW1wbGUuCisgKi8KKworaW50IHRkYl9wYXJzZV9yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSwKKwkJICAgICBpbnQgKCpwYXJzZXIpKFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGF0YSwKKwkJCQkgICB2b2lkICpwcml2YXRlX2RhdGEpLAorCQkgICAgIHZvaWQgKnByaXZhdGVfZGF0YSkKK3sKKwl0ZGJfb2ZmX3QgcmVjX3B0cjsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCWludCByZXQ7CisJdTMyIGhhc2g7CisKKwkvKiBmaW5kIHdoaWNoIGhhc2ggYnVja2V0IGl0IGlzIGluICovCisJaGFzaCA9IHRkYi0+aGFzaF9mbigma2V5KTsKKworCWlmICghKHJlY19wdHIgPSB0ZGJfZmluZF9sb2NrX2hhc2godGRiLGtleSxoYXNoLEZfUkRMQ0ssJnJlYykpKSB7CisJCXJldHVybiBUREJfRVJSQ09ERShUREJfRVJSX05PRVhJU1QsIDApOworCX0KKworCXJldCA9IHRkYl9wYXJzZV9kYXRhKHRkYiwga2V5LCByZWNfcHRyICsgc2l6ZW9mKHJlYykgKyByZWMua2V5X2xlbiwKKwkJCSAgICAgcmVjLmRhdGFfbGVuLCBwYXJzZXIsIHByaXZhdGVfZGF0YSk7CisKKwl0ZGJfdW5sb2NrKHRkYiwgQlVDS0VUKHJlYy5mdWxsX2hhc2gpLCBGX1JETENLKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qIGNoZWNrIGlmIGFuIGVudHJ5IGluIHRoZSBkYXRhYmFzZSBleGlzdHMKKworICAgbm90ZSB0aGF0IDEgaXMgcmV0dXJuZWQgaWYgdGhlIGtleSBpcyBmb3VuZCBhbmQgMCBpcyByZXR1cm5lZCBpZiBub3QgZm91bmQKKyAgIHRoaXMgZG9lc24ndCBtYXRjaCB0aGUgY29udmVudGlvbnMgaW4gdGhlIHJlc3Qgb2YgdGhpcyBtb2R1bGUsIGJ1dCBpcworICAgY29tcGF0aWJsZSB3aXRoIGdkYm0KKyovCitzdGF0aWMgaW50IHRkYl9leGlzdHNfaGFzaChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCB1MzIgaGFzaCkKK3sKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCisJaWYgKHRkYl9maW5kX2xvY2tfaGFzaCh0ZGIsIGtleSwgaGFzaCwgRl9SRExDSywgJnJlYykgPT0gMCkKKwkJcmV0dXJuIDA7CisJdGRiX3VubG9jayh0ZGIsIEJVQ0tFVChyZWMuZnVsbF9oYXNoKSwgRl9SRExDSyk7CisJcmV0dXJuIDE7Cit9CisKK2ludCB0ZGJfZXhpc3RzKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpCit7CisJdTMyIGhhc2ggPSB0ZGItPmhhc2hfZm4oJmtleSk7CisJcmV0dXJuIHRkYl9leGlzdHNfaGFzaCh0ZGIsIGtleSwgaGFzaCk7Cit9CisKKy8qIGFjdHVhbGx5IGRlbGV0ZSBhbiBlbnRyeSBpbiB0aGUgZGF0YWJhc2UgZ2l2ZW4gdGhlIG9mZnNldCAqLworaW50IHRkYl9kb19kZWxldGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCByZWNfcHRyLCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QqcmVjKQoreworCXRkYl9vZmZfdCBsYXN0X3B0ciwgaTsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgbGFzdHJlYzsKKworCWlmICh0ZGItPnJlYWRfb25seSB8fCB0ZGItPnRyYXZlcnNlX3JlYWQpIHJldHVybiAtMTsKKworCWlmICh0ZGJfd3JpdGVfbG9ja19yZWNvcmQodGRiLCByZWNfcHRyKSA9PSAtMSkgeworCQkvKiBTb21lb25lIHRyYXZlcnNpbmcgaGVyZTogbWFyayBpdCBhcyBkZWFkICovCisJCXJlYy0+bWFnaWMgPSBUREJfREVBRF9NQUdJQzsKKwkJcmV0dXJuIHRkYl9yZWNfd3JpdGUodGRiLCByZWNfcHRyLCByZWMpOworCX0KKwlpZiAodGRiX3dyaXRlX3VubG9ja19yZWNvcmQodGRiLCByZWNfcHRyKSAhPSAwKQorCQlyZXR1cm4gLTE7CisKKwkvKiBmaW5kIHByZXZpb3VzIHJlY29yZCBpbiBoYXNoIGNoYWluICovCisJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIFREQl9IQVNIX1RPUChyZWMtPmZ1bGxfaGFzaCksICZpKSA9PSAtMSkKKwkJcmV0dXJuIC0xOworCWZvciAobGFzdF9wdHIgPSAwOyBpICE9IHJlY19wdHI7IGxhc3RfcHRyID0gaSwgaSA9IGxhc3RyZWMubmV4dCkKKwkJaWYgKHRkYl9yZWNfcmVhZCh0ZGIsIGksICZsYXN0cmVjKSA9PSAtMSkKKwkJCXJldHVybiAtMTsKKworCS8qIHVubGluayBpdDogbmV4dCBwdHIgaXMgYXQgc3RhcnQgb2YgcmVjb3JkLiAqLworCWlmIChsYXN0X3B0ciA9PSAwKQorCQlsYXN0X3B0ciA9IFREQl9IQVNIX1RPUChyZWMtPmZ1bGxfaGFzaCk7CisJaWYgKHRkYl9vZnNfd3JpdGUodGRiLCBsYXN0X3B0ciwgJnJlYy0+bmV4dCkgPT0gLTEpCisJCXJldHVybiAtMTsKKworCS8qIHJlY292ZXIgdGhlIHNwYWNlICovCisJaWYgKHRkYl9mcmVlKHRkYiwgcmVjX3B0ciwgcmVjKSA9PSAtMSkKKwkJcmV0dXJuIC0xOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRkYl9jb3VudF9kZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB1MzIgaGFzaCkKK3sKKwlpbnQgcmVzID0gMDsKKwl0ZGJfb2ZmX3QgcmVjX3B0cjsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCisJLyogcmVhZCBpbiB0aGUgaGFzaCB0b3AgKi8KKwlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX0hBU0hfVE9QKGhhc2gpLCAmcmVjX3B0cikgPT0gLTEpCisJCXJldHVybiAwOworCisJd2hpbGUgKHJlY19wdHIpIHsKKwkJaWYgKHRkYl9yZWNfcmVhZCh0ZGIsIHJlY19wdHIsICZyZWMpID09IC0xKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKHJlYy5tYWdpYyA9PSBUREJfREVBRF9NQUdJQykgeworCQkJcmVzICs9IDE7CisJCX0KKwkJcmVjX3B0ciA9IHJlYy5uZXh0OworCX0KKwlyZXR1cm4gcmVzOworfQorCisvKgorICogUHVyZ2UgYWxsIERFQUQgcmVjb3JkcyBmcm9tIGEgaGFzaCBjaGFpbgorICovCitzdGF0aWMgaW50IHRkYl9wdXJnZV9kZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB1MzIgaGFzaCkKK3sKKwlpbnQgcmVzID0gLTE7CisJc3RydWN0IGxpc3Rfc3RydWN0IHJlYzsKKwl0ZGJfb2ZmX3QgcmVjX3B0cjsKKworCWlmICh0ZGJfbG9jayh0ZGIsIC0xLCBGX1dSTENLKSA9PSAtMSkgeworCQlyZXR1cm4gLTE7CisJfQorCisJLyogcmVhZCBpbiB0aGUgaGFzaCB0b3AgKi8KKwlpZiAodGRiX29mc19yZWFkKHRkYiwgVERCX0hBU0hfVE9QKGhhc2gpLCAmcmVjX3B0cikgPT0gLTEpCisJCWdvdG8gZmFpbDsKKworCXdoaWxlIChyZWNfcHRyKSB7CisJCXRkYl9vZmZfdCBuZXh0OworCisJCWlmICh0ZGJfcmVjX3JlYWQodGRiLCByZWNfcHRyLCAmcmVjKSA9PSAtMSkgeworCQkJZ290byBmYWlsOworCQl9CisKKwkJbmV4dCA9IHJlYy5uZXh0OworCisJCWlmIChyZWMubWFnaWMgPT0gVERCX0RFQURfTUFHSUMKKwkJICAgICYmIHRkYl9kb19kZWxldGUodGRiLCByZWNfcHRyLCAmcmVjKSA9PSAtMSkgeworCQkJZ290byBmYWlsOworCQl9CisJCXJlY19wdHIgPSBuZXh0OworCX0KKwlyZXMgPSAwOworIGZhaWw6CisJdGRiX3VubG9jayh0ZGIsIC0xLCBGX1dSTENLKTsKKwlyZXR1cm4gcmVzOworfQorCisvKiBkZWxldGUgYW4gZW50cnkgaW4gdGhlIGRhdGFiYXNlIGdpdmVuIGEga2V5ICovCitzdGF0aWMgaW50IHRkYl9kZWxldGVfaGFzaChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCB1MzIgaGFzaCkKK3sKKwl0ZGJfb2ZmX3QgcmVjX3B0cjsKKwlzdHJ1Y3QgbGlzdF9zdHJ1Y3QgcmVjOworCWludCByZXQ7CisKKwlpZiAodGRiLT5tYXhfZGVhZF9yZWNvcmRzICE9IDApIHsKKworCQkvKgorCQkgKiBBbGxvdyBmb3Igc29tZSBkZWFkIHJlY29yZHMgcGVyIGhhc2ggY2hhaW4sIG1haW5seSBmb3IKKwkJICogdGRiJ3Mgd2l0aCBhIHZlcnkgaGlnaCBjcmVhdGUvZGVsZXRlIHJhdGUgbGlrZSBsb2NraW5nLnRkYi4KKwkJICovCisKKwkJaWYgKHRkYl9sb2NrKHRkYiwgQlVDS0VUKGhhc2gpLCBGX1dSTENLKSA9PSAtMSkKKwkJCXJldHVybiAtMTsKKworCQlpZiAodGRiX2NvdW50X2RlYWQodGRiLCBoYXNoKSA+PSB0ZGItPm1heF9kZWFkX3JlY29yZHMpIHsKKwkJCS8qCisJCQkgKiBEb24ndCBsZXQgdGhlIHBlci1jaGFpbiBmcmVlbGlzdCBncm93IHRvbyBsYXJnZSwKKwkJCSAqIGRlbGV0ZSBhbGwgZXhpc3RpbmcgZGVhZCByZWNvcmRzCisJCQkgKi8KKwkJCXRkYl9wdXJnZV9kZWFkKHRkYiwgaGFzaCk7CisJCX0KKworCQlpZiAoIShyZWNfcHRyID0gdGRiX2ZpbmQodGRiLCBrZXksIGhhc2gsICZyZWMpKSkgeworCQkJdGRiX3VubG9jayh0ZGIsIEJVQ0tFVChoYXNoKSwgRl9XUkxDSyk7CisJCQlyZXR1cm4gLTE7CisJCX0KKworCQkvKgorCQkgKiBKdXN0IG1hcmsgdGhlIHJlY29yZCBhcyBkZWFkLgorCQkgKi8KKwkJcmVjLm1hZ2ljID0gVERCX0RFQURfTUFHSUM7CisJCXJldCA9IHRkYl9yZWNfd3JpdGUodGRiLCByZWNfcHRyLCAmcmVjKTsKKwl9CisJZWxzZSB7CisJCWlmICghKHJlY19wdHIgPSB0ZGJfZmluZF9sb2NrX2hhc2godGRiLCBrZXksIGhhc2gsIEZfV1JMQ0ssCisJCQkJCQkgICAmcmVjKSkpCisJCQlyZXR1cm4gLTE7CisKKwkJcmV0ID0gdGRiX2RvX2RlbGV0ZSh0ZGIsIHJlY19wdHIsICZyZWMpOworCX0KKworCWlmIChyZXQgPT0gMCkgeworCQl0ZGJfaW5jcmVtZW50X3NlcW51bSh0ZGIpOworCX0KKworCWlmICh0ZGJfdW5sb2NrKHRkYiwgQlVDS0VUKHJlYy5mdWxsX2hhc2gpLCBGX1dSTENLKSAhPSAwKQorCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19XQVJOSU5HLCAidGRiX2RlbGV0ZTogV0FSTklORyB0ZGJfdW5sb2NrIGZhaWxlZCFcbiIpKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgdGRiX2RlbGV0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KQoreworCXUzMiBoYXNoID0gdGRiLT5oYXNoX2ZuKCZrZXkpOworCXJldHVybiB0ZGJfZGVsZXRlX2hhc2godGRiLCBrZXksIGhhc2gpOworfQorCisvKgorICogU2VlIGlmIHdlIGhhdmUgYSBkZWFkIHJlY29yZCBhcm91bmQgd2l0aCBlbm91Z2ggc3BhY2UKKyAqLworc3RhdGljIHRkYl9vZmZfdCB0ZGJfZmluZF9kZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB1MzIgaGFzaCwKKwkJCSAgICAgICBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnIsIHRkYl9sZW5fdCBsZW5ndGgpCit7CisJdGRiX29mZl90IHJlY19wdHI7CisKKwkvKiByZWFkIGluIHRoZSBoYXNoIHRvcCAqLworCWlmICh0ZGJfb2ZzX3JlYWQodGRiLCBUREJfSEFTSF9UT1AoaGFzaCksICZyZWNfcHRyKSA9PSAtMSkKKwkJcmV0dXJuIDA7CisKKwkvKiBrZWVwIGxvb2tpbmcgdW50aWwgd2UgZmluZCB0aGUgcmlnaHQgcmVjb3JkICovCisJd2hpbGUgKHJlY19wdHIpIHsKKwkJaWYgKHRkYl9yZWNfcmVhZCh0ZGIsIHJlY19wdHIsIHIpID09IC0xKQorCQkJcmV0dXJuIDA7CisKKwkJaWYgKFREQl9ERUFEKHIpICYmIHItPnJlY19sZW4gPj0gbGVuZ3RoKSB7CisJCQkvKgorCQkJICogRmlyc3QgZml0IGZvciBzaW1wbGUgY29kaW5nLCBUT0RPOiBjaGFuZ2UgdG8gYmVzdAorCQkJICogZml0CisJCQkgKi8KKwkJCXJldHVybiByZWNfcHRyOworCQl9CisJCXJlY19wdHIgPSByLT5uZXh0OworCX0KKwlyZXR1cm4gMDsKK30KKworLyogc3RvcmUgYW4gZWxlbWVudCBpbiB0aGUgZGF0YWJhc2UsIHJlcGxhY2luZyBhbnkgZXhpc3RpbmcgZWxlbWVudAorICAgd2l0aCB0aGUgc2FtZSBrZXkKKworICAgcmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZQorKi8KK2ludCB0ZGJfc3RvcmUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGJ1ZiwgaW50IGZsYWcpCit7CisJc3RydWN0IGxpc3Rfc3RydWN0IHJlYzsKKwl1MzIgaGFzaDsKKwl0ZGJfb2ZmX3QgcmVjX3B0cjsKKwljaGFyICpwID0gTlVMTDsKKwlpbnQgcmV0ID0gLTE7CisKKwlpZiAodGRiLT5yZWFkX29ubHkgfHwgdGRiLT50cmF2ZXJzZV9yZWFkKSB7CisJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX1JET05MWTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIGZpbmQgd2hpY2ggaGFzaCBidWNrZXQgaXQgaXMgaW4gKi8KKwloYXNoID0gdGRiLT5oYXNoX2ZuKCZrZXkpOworCWlmICh0ZGJfbG9jayh0ZGIsIEJVQ0tFVChoYXNoKSwgRl9XUkxDSykgPT0gLTEpCisJCXJldHVybiAtMTsKKworCS8qIGNoZWNrIGZvciBpdCBleGlzdGluZywgb24gaW5zZXJ0LiAqLworCWlmIChmbGFnID09IFREQl9JTlNFUlQpIHsKKwkJaWYgKHRkYl9leGlzdHNfaGFzaCh0ZGIsIGtleSwgaGFzaCkpIHsKKwkJCXRkYi0+ZWNvZGUgPSBUREJfRVJSX0VYSVNUUzsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCX0gZWxzZSB7CisJCS8qIGZpcnN0IHRyeSBpbi1wbGFjZSB1cGRhdGUsIG9uIG1vZGlmeSBvciByZXBsYWNlLiAqLworCQlpZiAodGRiX3VwZGF0ZV9oYXNoKHRkYiwga2V5LCBoYXNoLCBkYnVmKSA9PSAwKSB7CisJCQlnb3RvIGRvbmU7CisJCX0KKwkJaWYgKHRkYi0+ZWNvZGUgPT0gVERCX0VSUl9OT0VYSVNUICYmCisJCSAgICBmbGFnID09IFREQl9NT0RJRlkpIHsKKwkJCS8qIGlmIHRoZSByZWNvcmQgZG9lc24ndCBleGlzdCBhbmQgd2UgYXJlIGluIFREQl9NT0RJRlkgbW9kZSB0aGVuCisJCQkgd2Ugc2hvdWxkIGZhaWwgdGhlIHN0b3JlICovCisJCQlnb3RvIGZhaWw7CisJCX0KKwl9CisJLyogcmVzZXQgdGhlIGVycm9yIGNvZGUgcG90ZW50aWFsbHkgc2V0IGJ5IHRoZSB0ZGJfdXBkYXRlKCkgKi8KKwl0ZGItPmVjb2RlID0gVERCX1NVQ0NFU1M7CisKKwkvKiBkZWxldGUgYW55IGV4aXN0aW5nIHJlY29yZCAtIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2UgZG9uJ3QKKyAgICAgICAgICAgY2FyZS4gIERvaW5nIHRoaXMgZmlyc3QgcmVkdWNlcyBmcmFnbWVudGF0aW9uLCBhbmQgYXZvaWRzCisgICAgICAgICAgIGNvYWxlc2Npbmcgd2l0aCBgYWxsb2NhdGVkJyBibG9jayBiZWZvcmUgaXQncyB1cGRhdGVkLiAqLworCWlmIChmbGFnICE9IFREQl9JTlNFUlQpCisJCXRkYl9kZWxldGVfaGFzaCh0ZGIsIGtleSwgaGFzaCk7CisKKwkvKiBDb3B5IGtleSt2YWx1ZSAqYmVmb3JlKiBhbGxvY2F0aW5nIGZyZWUgc3BhY2UgaW4gY2FzZSBtYWxsb2MKKwkgICBmYWlscyBhbmQgd2UgYXJlIGxlZnQgd2l0aCBhIGRlYWQgc3BvdCBpbiB0aGUgdGRiLiAqLworCisJaWYgKCEocCA9IChjaGFyICopbWFsbG9jKGtleS5kc2l6ZSArIGRidWYuZHNpemUpKSkgeworCQl0ZGItPmVjb2RlID0gVERCX0VSUl9PT007CisJCWdvdG8gZmFpbDsKKwl9CisKKwltZW1jcHkocCwga2V5LmRwdHIsIGtleS5kc2l6ZSk7CisJaWYgKGRidWYuZHNpemUpCisJCW1lbWNweShwK2tleS5kc2l6ZSwgZGJ1Zi5kcHRyLCBkYnVmLmRzaXplKTsKKworCWlmICh0ZGItPm1heF9kZWFkX3JlY29yZHMgIT0gMCkgeworCQkvKgorCQkgKiBBbGxvdyBmb3Igc29tZSBkZWFkIHJlY29yZHMgcGVyIGhhc2ggY2hhaW4sIGxvb2sgaWYgd2UgY2FuCisJCSAqIGZpbmQgb25lIHRoYXQgY2FuIGhvbGQgdGhlIG5ldyByZWNvcmQuIFdlIG5lZWQgZW5vdWdoIHNwYWNlCisJCSAqIGZvciBrZXksIGRhdGEgYW5kIHRhaWxlci4gSWYgd2UgZmluZCBvbmUsIHdlIGRvbid0IGhhdmUgdG8KKwkJICogY29uc3VsdCB0aGUgY2VudHJhbCBmcmVlbGlzdC4KKwkJICovCisJCXJlY19wdHIgPSB0ZGJfZmluZF9kZWFkKAorCQkJdGRiLCBoYXNoLCAmcmVjLAorCQkJa2V5LmRzaXplICsgZGJ1Zi5kc2l6ZSArIHNpemVvZih0ZGJfb2ZmX3QpKTsKKworCQlpZiAocmVjX3B0ciAhPSAwKSB7CisJCQlyZWMua2V5X2xlbiA9IGtleS5kc2l6ZTsKKwkJCXJlYy5kYXRhX2xlbiA9IGRidWYuZHNpemU7CisJCQlyZWMuZnVsbF9oYXNoID0gaGFzaDsKKwkJCXJlYy5tYWdpYyA9IFREQl9NQUdJQzsKKwkJCWlmICh0ZGJfcmVjX3dyaXRlKHRkYiwgcmVjX3B0ciwgJnJlYykgPT0gLTEKKwkJCSAgICB8fCB0ZGItPm1ldGhvZHMtPnRkYl93cml0ZSgKKwkJCQkgICAgdGRiLCByZWNfcHRyICsgc2l6ZW9mKHJlYyksCisJCQkJICAgIHAsIGtleS5kc2l6ZSArIGRidWYuZHNpemUpID09IC0xKSB7CisJCQkJZ290byBmYWlsOworCQkJfQorCQkJZ290byBkb25lOworCQl9CisJfQorCisJLyoKKwkgKiBXZSBoYXZlIHRvIGFsbG9jYXRlIHNvbWUgc3BhY2UgZnJvbSB0aGUgZnJlZWxpc3QsIHNvIHRoaXMgbWVhbnMgd2UKKwkgKiBoYXZlIHRvIGxvY2sgaXQuIFVzZSB0aGUgY2hhbmNlIHRvIHB1cmdlIGFsbCB0aGUgREVBRCByZWNvcmRzIGZyb20KKwkgKiB0aGUgaGFzaCBjaGFpbiB1bmRlciB0aGUgZnJlZWxpc3QgbG9jay4KKwkgKi8KKworCWlmICh0ZGJfbG9jayh0ZGIsIC0xLCBGX1dSTENLKSA9PSAtMSkgeworCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKCh0ZGItPm1heF9kZWFkX3JlY29yZHMgIT0gMCkKKwkgICAgJiYgKHRkYl9wdXJnZV9kZWFkKHRkYiwgaGFzaCkgPT0gLTEpKSB7CisJCXRkYl91bmxvY2sodGRiLCAtMSwgRl9XUkxDSyk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiB3ZSBoYXZlIHRvIGFsbG9jYXRlIHNvbWUgc3BhY2UgKi8KKwlyZWNfcHRyID0gdGRiX2FsbG9jYXRlKHRkYiwga2V5LmRzaXplICsgZGJ1Zi5kc2l6ZSwgJnJlYyk7CisKKwl0ZGJfdW5sb2NrKHRkYiwgLTEsIEZfV1JMQ0spOworCisJaWYgKHJlY19wdHIgPT0gMCkgeworCQlnb3RvIGZhaWw7CisJfQorCisJLyogUmVhZCBoYXNoIHRvcCBpbnRvIG5leHQgcHRyICovCisJaWYgKHRkYl9vZnNfcmVhZCh0ZGIsIFREQl9IQVNIX1RPUChoYXNoKSwgJnJlYy5uZXh0KSA9PSAtMSkKKwkJZ290byBmYWlsOworCisJcmVjLmtleV9sZW4gPSBrZXkuZHNpemU7CisJcmVjLmRhdGFfbGVuID0gZGJ1Zi5kc2l6ZTsKKwlyZWMuZnVsbF9oYXNoID0gaGFzaDsKKwlyZWMubWFnaWMgPSBUREJfTUFHSUM7CisKKwkvKiB3cml0ZSBvdXQgYW5kIHBvaW50IHRoZSB0b3Agb2YgdGhlIGhhc2ggY2hhaW4gYXQgaXQgKi8KKwlpZiAodGRiX3JlY193cml0ZSh0ZGIsIHJlY19wdHIsICZyZWMpID09IC0xCisJICAgIHx8IHRkYi0+bWV0aG9kcy0+dGRiX3dyaXRlKHRkYiwgcmVjX3B0citzaXplb2YocmVjKSwgcCwga2V5LmRzaXplK2RidWYuZHNpemUpPT0tMQorCSAgICB8fCB0ZGJfb2ZzX3dyaXRlKHRkYiwgVERCX0hBU0hfVE9QKGhhc2gpLCAmcmVjX3B0cikgPT0gLTEpIHsKKwkJLyogTmVlZCB0byB0ZGJfdW5hbGxvY2F0ZSgpIGhlcmUgKi8KKwkJZ290byBmYWlsOworCX0KKworIGRvbmU6CisJcmV0ID0gMDsKKyBmYWlsOgorCWlmIChyZXQgPT0gMCkgeworCQl0ZGJfaW5jcmVtZW50X3NlcW51bSh0ZGIpOworCX0KKworCVNBRkVfRlJFRShwKTsKKwl0ZGJfdW5sb2NrKHRkYiwgQlVDS0VUKGhhc2gpLCBGX1dSTENLKTsKKwlyZXR1cm4gcmV0OworfQorCisKKy8qIEFwcGVuZCB0byBhbiBlbnRyeS4gQ3JlYXRlIGlmIG5vdCBleGlzdC4gKi8KK2ludCB0ZGJfYXBwZW5kKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXksIFREQl9EQVRBIG5ld19kYnVmKQoreworCXUzMiBoYXNoOworCVREQl9EQVRBIGRidWY7CisJaW50IHJldCA9IC0xOworCisJLyogZmluZCB3aGljaCBoYXNoIGJ1Y2tldCBpdCBpcyBpbiAqLworCWhhc2ggPSB0ZGItPmhhc2hfZm4oJmtleSk7CisJaWYgKHRkYl9sb2NrKHRkYiwgQlVDS0VUKGhhc2gpLCBGX1dSTENLKSA9PSAtMSkKKwkJcmV0dXJuIC0xOworCisJZGJ1ZiA9IHRkYl9mZXRjaCh0ZGIsIGtleSk7CisKKwlpZiAoZGJ1Zi5kcHRyID09IE5VTEwpIHsKKwkJZGJ1Zi5kcHRyID0gKHVuc2lnbmVkIGNoYXIgKiltYWxsb2MobmV3X2RidWYuZHNpemUpOworCX0gZWxzZSB7CisJCXVuc2lnbmVkIGNoYXIgKm5ld19kcHRyID0gKHVuc2lnbmVkIGNoYXIgKilyZWFsbG9jKGRidWYuZHB0ciwKKwkJCQkJCSAgICAgZGJ1Zi5kc2l6ZSArIG5ld19kYnVmLmRzaXplKTsKKwkJaWYgKG5ld19kcHRyID09IE5VTEwpIHsKKwkJCWZyZWUoZGJ1Zi5kcHRyKTsKKwkJfQorCQlkYnVmLmRwdHIgPSBuZXdfZHB0cjsKKwl9CisKKwlpZiAoZGJ1Zi5kcHRyID09IE5VTEwpIHsKKwkJdGRiLT5lY29kZSA9IFREQl9FUlJfT09NOworCQlnb3RvIGZhaWxlZDsKKwl9CisKKwltZW1jcHkoZGJ1Zi5kcHRyICsgZGJ1Zi5kc2l6ZSwgbmV3X2RidWYuZHB0ciwgbmV3X2RidWYuZHNpemUpOworCWRidWYuZHNpemUgKz0gbmV3X2RidWYuZHNpemU7CisKKwlyZXQgPSB0ZGJfc3RvcmUodGRiLCBrZXksIGRidWYsIDApOworCitmYWlsZWQ6CisJdGRiX3VubG9jayh0ZGIsIEJVQ0tFVChoYXNoKSwgRl9XUkxDSyk7CisJU0FGRV9GUkVFKGRidWYuZHB0cik7CisJcmV0dXJuIHJldDsKK30KKworCisvKgorICByZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgdGRiIGZpbGUKKyAgdXNlZnVsIGZvciBleHRlcm5hbCBsb2dnaW5nIGZ1bmN0aW9ucworKi8KK2NvbnN0IGNoYXIgKnRkYl9uYW1lKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiB0ZGItPm5hbWU7Cit9CisKKy8qCisgIHJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdXNlZCBieSB0ZGIsIG9yIC0xCisgIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgcm91dGluZXMgdGhhdCB3YW50IHRvIGNoZWNrIHRoZSBkZXZpY2UvaW5vZGUKKyAgb2YgdGhlIGZkCisqLworaW50IHRkYl9mZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYikKK3sKKwlyZXR1cm4gdGRiLT5mZDsKK30KKworLyoKKyAgcmV0dXJuIHRoZSBjdXJyZW50IGxvZ2dpbmcgZnVuY3Rpb24KKyAgdXNlZnVsIGZvciBleHRlcm5hbCB0ZGIgcm91dGluZXMgdGhhdCB3aXNoIHRvIGxvZyB0ZGIgZXJyb3JzCisqLwordGRiX2xvZ19mdW5jIHRkYl9sb2dfZm4oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJcmV0dXJuIHRkYi0+bG9nLmxvZ19mbjsKK30KKworCisvKgorICBnZXQgdGhlIHRkYiBzZXF1ZW5jZSBudW1iZXIuIE9ubHkgbWFrZXMgc2Vuc2UgaWYgdGhlIHdyaXRlcnMgb3BlbmVkCisgIHdpdGggVERCX1NFUU5VTSBzZXQuIE5vdGUgdGhhdCB0aGlzIHNlcXVlbmNlIG51bWJlciB3aWxsIHdyYXAgcXVpdGUKKyAgcXVpY2tseSwgc28gaXQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgYSAnaGFzIHNvbWV0aGluZyBjaGFuZ2VkJworICB0ZXN0LCBub3QgZm9yIGNvZGUgdGhhdCByZWxpZXMgb24gdGhlIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgY2hhbmdlcworICBtYWRlLiBJZiB5b3Ugd2FudCBhIGNvdW50ZXIgdGhlbiB1c2UgYSB0ZGIgcmVjb3JkLgorCisgIFRoZSBhaW0gb2YgdGhpcyBzZXF1ZW5jZSBudW1iZXIgaXMgdG8gYWxsb3cgZm9yIGEgdmVyeSBsaWdodHdlaWdodAorICB0ZXN0IG9mIGEgcG9zc2libGUgdGRiIGNoYW5nZS4KKyovCitpbnQgdGRiX2dldF9zZXFudW0oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJdGRiX29mZl90IHNlcW51bT0wOworCisJdGRiX29mc19yZWFkKHRkYiwgVERCX1NFUU5VTV9PRlMsICZzZXFudW0pOworCXJldHVybiBzZXFudW07Cit9CisKK2ludCB0ZGJfaGFzaF9zaXplKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiB0ZGItPmhlYWRlci5oYXNoX3NpemU7Cit9CisKK3NpemVfdCB0ZGJfbWFwX3NpemUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJcmV0dXJuIHRkYi0+bWFwX3NpemU7Cit9CisKK2ludCB0ZGJfZ2V0X2ZsYWdzKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXJldHVybiB0ZGItPmZsYWdzOworfQorCisKKy8qCisgIGVuYWJsZSBzZXF1ZW5jZSBudW1iZXIgaGFuZGxpbmcgb24gYW4gb3BlbiB0ZGIKKyovCit2b2lkIHRkYl9lbmFibGVfc2VxbnVtKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXRkYi0+ZmxhZ3MgfD0gVERCX1NFUU5VTTsKK30KKworLyogZmlsZTogb3Blbi5jICovCisKKy8qIGFsbCBjb250ZXh0cywgdG8gZW5zdXJlIG5vIGRvdWJsZS1vcGVucyAoZmNudGwgbG9ja3MgZG9uJ3QgbmVzdCEpICovCitzdGF0aWMgc3RydWN0IHRkYl9jb250ZXh0ICp0ZGJzID0gTlVMTDsKKworCisvKiBUaGlzIGlzIGZyb20gYSBoYXNoIGFsZ29yaXRobSBzdWdnZXN0ZWQgYnkgUm9naWVyIFdvbGZmICovCitzdGF0aWMgdW5zaWduZWQgaW50IGRlZmF1bHRfdGRiX2hhc2goVERCX0RBVEEgKmtleSkKK3sKKwl1MzIgdmFsdWU7CS8qIFVzZWQgdG8gY29tcHV0ZSB0aGUgaGFzaCB2YWx1ZS4gICovCisJdTMyICAgaTsJLyogVXNlZCB0byBjeWNsZSB0aHJvdWdoIHJhbmRvbSB2YWx1ZXMuICovCisKKwkvKiBTZXQgdGhlIGluaXRpYWwgdmFsdWUgZnJvbSB0aGUga2V5IHNpemUuICovCisJZm9yICh2YWx1ZSA9IDAsIGk9MDsgaSA8IGtleS0+ZHNpemU7IGkrKykKKwkJdmFsdWUgPSB2YWx1ZSAqIDI1NiArIGtleS0+ZHB0cltpXSArICh2YWx1ZSA+PiAyNCkgKiAyNDE7CisKKwlyZXR1cm4gdmFsdWU7Cit9CisKKworLyogaW5pdGlhbGlzZSBhIG5ldyBkYXRhYmFzZSB3aXRoIGEgc3BlY2lmaWVkIGhhc2ggc2l6ZSAqLworc3RhdGljIGludCB0ZGJfbmV3X2RhdGFiYXNlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgaGFzaF9zaXplKQoreworCXN0cnVjdCB0ZGJfaGVhZGVyICpuZXdkYjsKKwlpbnQgc2l6ZSwgcmV0ID0gLTE7CisKKwkvKiBXZSBtYWtlIGl0IHVwIGluIG1lbW9yeSwgdGhlbiB3cml0ZSBpdCBvdXQgaWYgbm90IGludGVybmFsICovCisJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdGRiX2hlYWRlcikgKyAoaGFzaF9zaXplKzEpKnNpemVvZih0ZGJfb2ZmX3QpOworCWlmICghKG5ld2RiID0gKHN0cnVjdCB0ZGJfaGVhZGVyICopY2FsbG9jKHNpemUsIDEpKSkKKwkJcmV0dXJuIFREQl9FUlJDT0RFKFREQl9FUlJfT09NLCAtMSk7CisKKwkvKiBGaWxsIGluIHRoZSBoZWFkZXIgKi8KKwluZXdkYi0+dmVyc2lvbiA9IFREQl9WRVJTSU9OOworCW5ld2RiLT5oYXNoX3NpemUgPSBoYXNoX3NpemU7CisJaWYgKHRkYi0+ZmxhZ3MgJiBUREJfSU5URVJOQUwpIHsKKwkJdGRiLT5tYXBfc2l6ZSA9IHNpemU7CisJCXRkYi0+bWFwX3B0ciA9IChjaGFyICopbmV3ZGI7CisJCW1lbWNweSgmdGRiLT5oZWFkZXIsIG5ld2RiLCBzaXplb2YodGRiLT5oZWFkZXIpKTsKKwkJLyogQ29udmVydCB0aGUgYG9uZGlzaycgdmVyc2lvbiBpZiBhc2tlZC4gKi8KKwkJQ09OVkVSVCgqbmV3ZGIpOworCQlyZXR1cm4gMDsKKwl9CisJaWYgKGxzZWVrKHRkYi0+ZmQsIDAsIFNFRUtfU0VUKSA9PSAtMSkKKwkJZ290byBmYWlsOworCisJaWYgKGZ0cnVuY2F0ZSh0ZGItPmZkLCAwKSA9PSAtMSkKKwkJZ290byBmYWlsOworCisJLyogVGhpcyBjcmVhdGVzIGFuIGVuZGlhbi1jb252ZXJ0ZWQgaGVhZGVyLCBhcyBpZiByZWFkIGZyb20gZGlzayAqLworCUNPTlZFUlQoKm5ld2RiKTsKKwltZW1jcHkoJnRkYi0+aGVhZGVyLCBuZXdkYiwgc2l6ZW9mKHRkYi0+aGVhZGVyKSk7CisJLyogRG9uJ3QgZW5kaWFuLWNvbnZlcnQgdGhlIG1hZ2ljIGZvb2QhICovCisJbWVtY3B5KG5ld2RiLT5tYWdpY19mb29kLCBUREJfTUFHSUNfRk9PRCwgc3RybGVuKFREQl9NQUdJQ19GT09EKSsxKTsKKwlpZiAod3JpdGUodGRiLT5mZCwgbmV3ZGIsIHNpemUpICE9IHNpemUpIHsKKwkJcmV0ID0gLTE7CisJfSBlbHNlIHsKKwkJcmV0ID0gMDsKKwl9CisKKyAgZmFpbDoKKwlTQUZFX0ZSRUUobmV3ZGIpOworCXJldHVybiByZXQ7Cit9CisKKworCitzdGF0aWMgaW50IHRkYl9hbHJlYWR5X29wZW4oZGV2X3QgZGV2aWNlLAorCQkJICAgIGlub190IGlubykKK3sKKwlzdHJ1Y3QgdGRiX2NvbnRleHQgKmk7CisKKwlmb3IgKGkgPSB0ZGJzOyBpOyBpID0gaS0+bmV4dCkgeworCQlpZiAoaS0+ZGV2aWNlID09IGRldmljZSAmJiBpLT5pbm9kZSA9PSBpbm8pIHsKKwkJCXJldHVybiAxOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qIG9wZW4gdGhlIGRhdGFiYXNlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkKKworICAgVGhlIG9wZW5fZmxhZ3MgYW5kIG1vZGUgYXJlIHBhc3NlZCBzdHJhaWdodCB0byB0aGUgb3BlbiBjYWxsIG9uIHRoZQorICAgZGF0YWJhc2UgZmlsZS4gQSBmbGFncyB2YWx1ZSBvZiBPX1dST05MWSBpcyBpbnZhbGlkLiBUaGUgaGFzaCBzaXplCisgICBpcyBhZHZpc29yeSwgdXNlIHplcm8gZm9yIGEgZGVmYXVsdCB2YWx1ZS4KKworICAgUmV0dXJuIGlzIE5VTEwgb24gZXJyb3IsIGluIHdoaWNoIGNhc2UgZXJybm8gaXMgYWxzbyBzZXQuICBEb24ndAorICAgdHJ5IHRvIGNhbGwgdGRiX2Vycm9yIG9yIHRkYl9lcnJuYW1lLCBqdXN0IGRvIHN0cmVycm9yKGVycm5vKS4KKworICAgQHBhcmFtIG5hbWUgbWF5IGJlIE5VTEwgZm9yIGludGVybmFsIGRhdGFiYXNlcy4gKi8KK3N0cnVjdCB0ZGJfY29udGV4dCAqdGRiX29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IGhhc2hfc2l6ZSwgaW50IHRkYl9mbGFncywKKwkJICAgICAgaW50IG9wZW5fZmxhZ3MsIG1vZGVfdCBtb2RlKQoreworCXJldHVybiB0ZGJfb3Blbl9leChuYW1lLCBoYXNoX3NpemUsIHRkYl9mbGFncywgb3Blbl9mbGFncywgbW9kZSwgTlVMTCwgTlVMTCk7Cit9CisKKy8qIGEgZGVmYXVsdCBsb2dnaW5nIGZ1bmN0aW9uICovCitzdGF0aWMgdm9pZCBudWxsX2xvZ19mbihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgZW51bSB0ZGJfZGVidWdfbGV2ZWwgbGV2ZWwsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBQUklOVEZfQVRUUklCVVRFKDMsIDQpOworc3RhdGljIHZvaWQgbnVsbF9sb2dfZm4oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGVudW0gdGRiX2RlYnVnX2xldmVsIGxldmVsLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKK30KKworCitzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYl9vcGVuX2V4KGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNoX3NpemUsIGludCB0ZGJfZmxhZ3MsCisJCQkJaW50IG9wZW5fZmxhZ3MsIG1vZGVfdCBtb2RlLAorCQkJCWNvbnN0IHN0cnVjdCB0ZGJfbG9nZ2luZ19jb250ZXh0ICpsb2dfY3R4LAorCQkJCXRkYl9oYXNoX2Z1bmMgaGFzaF9mbikKK3sKKwlzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYjsKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwlpbnQgcmV2ID0gMCwgbG9ja2VkID0gMDsKKwl1bnNpZ25lZCBjaGFyICp2cDsKKwl1MzIgdmVydGVzdDsKKworCWlmICghKHRkYiA9IChzdHJ1Y3QgdGRiX2NvbnRleHQgKiljYWxsb2MoMSwgc2l6ZW9mICp0ZGIpKSkgeworCQkvKiBDYW4ndCBsb2cgdGhpcyAqLworCQllcnJubyA9IEVOT01FTTsKKwkJZ290byBmYWlsOworCX0KKwl0ZGJfaW9faW5pdCh0ZGIpOworCXRkYi0+ZmQgPSAtMTsKKwl0ZGItPm5hbWUgPSBOVUxMOworCXRkYi0+bWFwX3B0ciA9IE5VTEw7CisJdGRiLT5mbGFncyA9IHRkYl9mbGFnczsKKwl0ZGItPm9wZW5fZmxhZ3MgPSBvcGVuX2ZsYWdzOworCWlmIChsb2dfY3R4KSB7CisJCXRkYi0+bG9nID0gKmxvZ19jdHg7CisJfSBlbHNlIHsKKwkJdGRiLT5sb2cubG9nX2ZuID0gbnVsbF9sb2dfZm47CisJCXRkYi0+bG9nLmxvZ19wcml2YXRlID0gTlVMTDsKKwl9CisJdGRiLT5oYXNoX2ZuID0gaGFzaF9mbiA/IGhhc2hfZm4gOiBkZWZhdWx0X3RkYl9oYXNoOworCisJLyogY2FjaGUgdGhlIHBhZ2Ugc2l6ZSAqLworCXRkYi0+cGFnZV9zaXplID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworCWlmICh0ZGItPnBhZ2Vfc2l6ZSA8PSAwKSB7CisJCXRkYi0+cGFnZV9zaXplID0gMHgyMDAwOworCX0KKworCWlmICgob3Blbl9mbGFncyAmIE9fQUNDTU9ERSkgPT0gT19XUk9OTFkpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfb3Blbl9leDogY2FuJ3Qgb3BlbiB0ZGIgJXMgd3JpdGUtb25seVxuIiwKKwkJCSBuYW1lKSk7CisJCWVycm5vID0gRUlOVkFMOworCQlnb3RvIGZhaWw7CisJfQorCisJaWYgKGhhc2hfc2l6ZSA9PSAwKQorCQloYXNoX3NpemUgPSBERUZBVUxUX0hBU0hfU0laRTsKKwlpZiAoKG9wZW5fZmxhZ3MgJiBPX0FDQ01PREUpID09IE9fUkRPTkxZKSB7CisJCXRkYi0+cmVhZF9vbmx5ID0gMTsKKwkJLyogcmVhZCBvbmx5IGRhdGFiYXNlcyBkb24ndCBkbyBsb2NraW5nIG9yIGNsZWFyIGlmIGZpcnN0ICovCisJCXRkYi0+ZmxhZ3MgfD0gVERCX05PTE9DSzsKKwkJdGRiLT5mbGFncyAmPSB+VERCX0NMRUFSX0lGX0ZJUlNUOworCX0KKworCS8qIGludGVybmFsIGRhdGFiYXNlcyBkb24ndCBtbWFwIG9yIGxvY2ssIGFuZCBzdGFydCBvZmYgY2xlYXJlZCAqLworCWlmICh0ZGItPmZsYWdzICYgVERCX0lOVEVSTkFMKSB7CisJCXRkYi0+ZmxhZ3MgfD0gKFREQl9OT0xPQ0sgfCBUREJfTk9NTUFQKTsKKwkJdGRiLT5mbGFncyAmPSB+VERCX0NMRUFSX0lGX0ZJUlNUOworCQlpZiAodGRiX25ld19kYXRhYmFzZSh0ZGIsIGhhc2hfc2l6ZSkgIT0gMCkgeworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfb3Blbl9leDogdGRiX25ld19kYXRhYmFzZSBmYWlsZWQhIikpOworCQkJZ290byBmYWlsOworCQl9CisJCWdvdG8gaW50ZXJuYWw7CisJfQorCisJaWYgKCh0ZGItPmZkID0gb3BlbihuYW1lLCBvcGVuX2ZsYWdzLCBtb2RlKSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfV0FSTklORywgInRkYl9vcGVuX2V4OiBjb3VsZCBub3Qgb3BlbiBmaWxlICVzOiAlc1xuIiwKKwkJCSBuYW1lLCBzdHJlcnJvcihlcnJubykpKTsKKwkJZ290byBmYWlsOwkvKiBlcnJubyBzZXQgYnkgb3BlbigyKSAqLworCX0KKworCS8qIGVuc3VyZSB0aGVyZSBpcyBvbmx5IG9uZSBwcm9jZXNzIGluaXRpYWxpc2luZyBhdCBvbmNlICovCisJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX2JybG9jayh0ZGIsIEdMT0JBTF9MT0NLLCBGX1dSTENLLCBGX1NFVExLVywgMCwgMSkgPT0gLTEpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfb3Blbl9leDogZmFpbGVkIHRvIGdldCBnbG9iYWwgbG9jayBvbiAlczogJXNcbiIsCisJCQkgbmFtZSwgc3RyZXJyb3IoZXJybm8pKSk7CisJCWdvdG8gZmFpbDsJLyogZXJybm8gc2V0IGJ5IHRkYl9icmxvY2sgKi8KKwl9CisKKwkvKiB3ZSBuZWVkIHRvIHplcm8gZGF0YWJhc2UgaWYgd2UgYXJlIHRoZSBvbmx5IG9uZSB3aXRoIGl0IG9wZW4gKi8KKwlpZiAoKHRkYl9mbGFncyAmIFREQl9DTEVBUl9JRl9GSVJTVCkgJiYKKwkgICAgKGxvY2tlZCA9ICh0ZGItPm1ldGhvZHMtPnRkYl9icmxvY2sodGRiLCBBQ1RJVkVfTE9DSywgRl9XUkxDSywgRl9TRVRMSywgMCwgMSkgPT0gMCkpKSB7CisJCW9wZW5fZmxhZ3MgfD0gT19DUkVBVDsKKwkJaWYgKGZ0cnVuY2F0ZSh0ZGItPmZkLCAwKSA9PSAtMSkgeworCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfb3Blbl9leDogIgorCQkJCSAiZmFpbGVkIHRvIHRydW5jYXRlICVzOiAlc1xuIiwKKwkJCQkgbmFtZSwgc3RyZXJyb3IoZXJybm8pKSk7CisJCQlnb3RvIGZhaWw7IC8qIGVycm5vIHNldCBieSBmdHJ1bmNhdGUgKi8KKwkJfQorCX0KKworCWlmIChyZWFkKHRkYi0+ZmQsICZ0ZGItPmhlYWRlciwgc2l6ZW9mKHRkYi0+aGVhZGVyKSkgIT0gc2l6ZW9mKHRkYi0+aGVhZGVyKQorCSAgICB8fCBzdHJjbXAodGRiLT5oZWFkZXIubWFnaWNfZm9vZCwgVERCX01BR0lDX0ZPT0QpICE9IDAKKwkgICAgfHwgKHRkYi0+aGVhZGVyLnZlcnNpb24gIT0gVERCX1ZFUlNJT04KKwkJJiYgIShyZXYgPSAodGRiLT5oZWFkZXIudmVyc2lvbj09VERCX0JZVEVSRVYoVERCX1ZFUlNJT04pKSkpKSB7CisJCS8qIGl0cyBub3QgYSB2YWxpZCBkYXRhYmFzZSAtIHBvc3NpYmx5IGluaXRpYWxpc2UgaXQgKi8KKwkJaWYgKCEob3Blbl9mbGFncyAmIE9fQ1JFQVQpIHx8IHRkYl9uZXdfZGF0YWJhc2UodGRiLCBoYXNoX3NpemUpID09IC0xKSB7CisJCQllcnJubyA9IEVJTzsgLyogaWUgYmFkIGZvcm1hdCBvciBzb21ldGhpbmcgKi8KKwkJCWdvdG8gZmFpbDsKKwkJfQorCQlyZXYgPSAodGRiLT5mbGFncyAmIFREQl9DT05WRVJUKTsKKwl9CisJdnAgPSAodW5zaWduZWQgY2hhciAqKSZ0ZGItPmhlYWRlci52ZXJzaW9uOworCXZlcnRlc3QgPSAoKCh1MzIpdnBbMF0pIDw8IDI0KSB8ICgoKHUzMil2cFsxXSkgPDwgMTYpIHwKKwkJICAoKCh1MzIpdnBbMl0pIDw8IDgpIHwgKHUzMil2cFszXTsKKwl0ZGItPmZsYWdzIHw9ICh2ZXJ0ZXN0PT1UREJfVkVSU0lPTikgPyBUREJfQklHRU5ESUFOIDogMDsKKwlpZiAoIXJldikKKwkJdGRiLT5mbGFncyAmPSB+VERCX0NPTlZFUlQ7CisJZWxzZSB7CisJCXRkYi0+ZmxhZ3MgfD0gVERCX0NPTlZFUlQ7CisJCXRkYl9jb252ZXJ0KCZ0ZGItPmhlYWRlciwgc2l6ZW9mKHRkYi0+aGVhZGVyKSk7CisJfQorCWlmIChmc3RhdCh0ZGItPmZkLCAmc3QpID09IC0xKQorCQlnb3RvIGZhaWw7CisKKwlpZiAodGRiLT5oZWFkZXIucndsb2NrcyAhPSAwKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX29wZW5fZXg6IHNwaW5sb2NrcyBubyBsb25nZXIgc3VwcG9ydGVkXG4iKSk7CisJCWdvdG8gZmFpbDsKKwl9CisKKwkvKiBJcyBpdCBhbHJlYWR5IGluIHRoZSBvcGVuIGxpc3Q/ICBJZiBzbywgZmFpbC4gKi8KKwlpZiAodGRiX2FscmVhZHlfb3BlbihzdC5zdF9kZXYsIHN0LnN0X2lubykpIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfb3Blbl9leDogIgorCQkJICIlcyAoJWQsJWQpIGlzIGFscmVhZHkgb3BlbiBpbiB0aGlzIHByb2Nlc3NcbiIsCisJCQkgbmFtZSwgKGludClzdC5zdF9kZXYsIChpbnQpc3Quc3RfaW5vKSk7CisJCWVycm5vID0gRUJVU1k7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlpZiAoISh0ZGItPm5hbWUgPSAoY2hhciAqKXN0cmR1cChuYW1lKSkpIHsKKwkJZXJybm8gPSBFTk9NRU07CisJCWdvdG8gZmFpbDsKKwl9CisKKwl0ZGItPm1hcF9zaXplID0gc3Quc3Rfc2l6ZTsKKwl0ZGItPmRldmljZSA9IHN0LnN0X2RldjsKKwl0ZGItPmlub2RlID0gc3Quc3RfaW5vOworCXRkYi0+bWF4X2RlYWRfcmVjb3JkcyA9IDA7CisJdGRiX21tYXAodGRiKTsKKwlpZiAobG9ja2VkKSB7CisJCWlmICh0ZGItPm1ldGhvZHMtPnRkYl9icmxvY2sodGRiLCBBQ1RJVkVfTE9DSywgRl9VTkxDSywgRl9TRVRMSywgMCwgMSkgPT0gLTEpIHsKKwkJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0VSUk9SLCAidGRiX29wZW5fZXg6ICIKKwkJCQkgImZhaWxlZCB0byB0YWtlIEFDVElWRV9MT0NLIG9uICVzOiAlc1xuIiwKKwkJCQkgbmFtZSwgc3RyZXJyb3IoZXJybm8pKSk7CisJCQlnb3RvIGZhaWw7CisJCX0KKworCX0KKworCS8qIFdlIGFsd2F5cyBuZWVkIHRvIGRvIHRoaXMgaWYgdGhlIENMRUFSX0lGX0ZJUlNUIGZsYWcgaXMgc2V0LCBldmVuIGlmCisJICAgd2UgZGlkbid0IGdldCB0aGUgaW5pdGlhbCBleGNsdXNpdmUgbG9jayBhcyB3ZSBuZWVkIHRvIGxldCBhbGwgb3RoZXIKKwkgICB1c2VycyBrbm93IHdlJ3JlIHVzaW5nIGl0LiAqLworCisJaWYgKHRkYl9mbGFncyAmIFREQl9DTEVBUl9JRl9GSVJTVCkgeworCQkvKiBsZWF2ZSB0aGlzIGxvY2sgaW4gcGxhY2UgdG8gaW5kaWNhdGUgaXQncyBpbiB1c2UgKi8KKwkJaWYgKHRkYi0+bWV0aG9kcy0+dGRiX2JybG9jayh0ZGIsIEFDVElWRV9MT0NLLCBGX1JETENLLCBGX1NFVExLVywgMCwgMSkgPT0gLTEpCisJCQlnb3RvIGZhaWw7CisJfQorCisJLyogaWYgbmVlZGVkLCBydW4gcmVjb3ZlcnkgKi8KKwlpZiAodGRiX3RyYW5zYWN0aW9uX3JlY292ZXIodGRiKSA9PSAtMSkgeworCQlnb3RvIGZhaWw7CisJfQorCisgaW50ZXJuYWw6CisJLyogSW50ZXJuYWwgKG1lbW9yeS1vbmx5KSBkYXRhYmFzZXMgc2tpcCBhbGwgdGhlIGNvZGUgYWJvdmUgdG8KKwkgKiBkbyB3aXRoIGRpc2sgZmlsZXMsIGFuZCByZXN1bWUgaGVyZSBieSByZWxlYXNpbmcgdGhlaXIKKwkgKiBnbG9iYWwgbG9jayBhbmQgaG9va2luZyBpbnRvIHRoZSBhY3RpdmUgbGlzdC4gKi8KKwlpZiAodGRiLT5tZXRob2RzLT50ZGJfYnJsb2NrKHRkYiwgR0xPQkFMX0xPQ0ssIEZfVU5MQ0ssIEZfU0VUTEtXLCAwLCAxKSA9PSAtMSkKKwkJZ290byBmYWlsOworCXRkYi0+bmV4dCA9IHRkYnM7CisJdGRicyA9IHRkYjsKKwlyZXR1cm4gdGRiOworCisgZmFpbDoKKwl7IGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKwlpZiAoIXRkYikKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAodGRiLT5tYXBfcHRyKSB7CisJCWlmICh0ZGItPmZsYWdzICYgVERCX0lOVEVSTkFMKQorCQkJU0FGRV9GUkVFKHRkYi0+bWFwX3B0cik7CisJCWVsc2UKKwkJCXRkYl9tdW5tYXAodGRiKTsKKwl9CisJU0FGRV9GUkVFKHRkYi0+bmFtZSk7CisJaWYgKHRkYi0+ZmQgIT0gLTEpCisJCWlmIChjbG9zZSh0ZGItPmZkKSAhPSAwKQorCQkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfb3Blbl9leDogZmFpbGVkIHRvIGNsb3NlIHRkYi0+ZmQgb24gZXJyb3IhXG4iKSk7CisJU0FGRV9GUkVFKHRkYik7CisJZXJybm8gPSBzYXZlX2Vycm5vOworCXJldHVybiBOVUxMOworCX0KK30KKworLyoKKyAqIFNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGVhZCByZWNvcmRzIHBlciBoYXNoIGNoYWluCisgKi8KKwordm9pZCB0ZGJfc2V0X21heF9kZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBpbnQgbWF4X2RlYWQpCit7CisJdGRiLT5tYXhfZGVhZF9yZWNvcmRzID0gbWF4X2RlYWQ7Cit9CisKKy8qKgorICogQ2xvc2UgYSBkYXRhYmFzZS4KKyAqCisgKiBAcmV0dXJucyAtMSBmb3IgZXJyb3I7IDAgZm9yIHN1Y2Nlc3MuCisgKiovCitpbnQgdGRiX2Nsb3NlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXN0cnVjdCB0ZGJfY29udGV4dCAqKmk7CisJaW50IHJldCA9IDA7CisKKwlpZiAodGRiLT50cmFuc2FjdGlvbikgeworCQl0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsKHRkYik7CisJfQorCisJaWYgKHRkYi0+bWFwX3B0cikgeworCQlpZiAodGRiLT5mbGFncyAmIFREQl9JTlRFUk5BTCkKKwkJCVNBRkVfRlJFRSh0ZGItPm1hcF9wdHIpOworCQllbHNlCisJCQl0ZGJfbXVubWFwKHRkYik7CisJfQorCVNBRkVfRlJFRSh0ZGItPm5hbWUpOworCWlmICh0ZGItPmZkICE9IC0xKQorCQlyZXQgPSBjbG9zZSh0ZGItPmZkKTsKKwlTQUZFX0ZSRUUodGRiLT5sb2NrcmVjcyk7CisKKwkvKiBSZW1vdmUgZnJvbSBjb250ZXh0cyBsaXN0ICovCisJZm9yIChpID0gJnRkYnM7ICppOyBpID0gJigqaSktPm5leHQpIHsKKwkJaWYgKCppID09IHRkYikgeworCQkJKmkgPSB0ZGItPm5leHQ7CisJCQlicmVhazsKKwkJfQorCX0KKworCW1lbXNldCh0ZGIsIDAsIHNpemVvZigqdGRiKSk7CisJU0FGRV9GUkVFKHRkYik7CisKKwlyZXR1cm4gcmV0OworfQorCisvKiByZWdpc3RlciBhIGxvZ2luZyBmdW5jdGlvbiAqLwordm9pZCB0ZGJfc2V0X2xvZ2dpbmdfZnVuY3Rpb24oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGRiX2xvZ2dpbmdfY29udGV4dCAqbG9nX2N0eCkKK3sKKyAgICAgICAgdGRiLT5sb2cgPSAqbG9nX2N0eDsKK30KKwordm9pZCAqdGRiX2dldF9sb2dnaW5nX3ByaXZhdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJcmV0dXJuIHRkYi0+bG9nLmxvZ19wcml2YXRlOworfQorCisvKiByZW9wZW4gYSB0ZGIgLSB0aGlzIGNhbiBiZSB1c2VkIGFmdGVyIGEgZm9yayB0byBlbnN1cmUgdGhhdCB3ZSBoYXZlIGFuIGluZGVwZW5kZW50CisgICBzZWVrIHBvaW50ZXIgZnJvbSBvdXIgcGFyZW50IGFuZCB0byByZS1lc3RhYmxpc2ggbG9ja3MgKi8KK2ludCB0ZGJfcmVvcGVuKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKQoreworCXN0cnVjdCBzdGF0IHN0OworCisJaWYgKHRkYi0+ZmxhZ3MgJiBUREJfSU5URVJOQUwpIHsKKwkJcmV0dXJuIDA7IC8qIE5vdGhpbmcgdG8gZG8uICovCisJfQorCisJaWYgKHRkYi0+bnVtX2xvY2tzICE9IDAgfHwgdGRiLT5nbG9iYWxfbG9jay5jb3VudCkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19FUlJPUiwgInRkYl9yZW9wZW46IHJlb3BlbiBub3QgYWxsb3dlZCB3aXRoIGxvY2tzIGhlbGRcbiIpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICh0ZGItPnRyYW5zYWN0aW9uICE9IDApIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRVJST1IsICJ0ZGJfcmVvcGVuOiByZW9wZW4gbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb25cbiIpKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICh0ZGJfbXVubWFwKHRkYikgIT0gMCkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9yZW9wZW46IG11bm1hcCBmYWlsZWQgKCVzKVxuIiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCWdvdG8gZmFpbDsKKwl9CisJaWYgKGNsb3NlKHRkYi0+ZmQpICE9IDApCisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3Jlb3BlbjogV0FSTklORyBjbG9zaW5nIHRkYi0+ZmQgZmFpbGVkIVxuIikpOworCXRkYi0+ZmQgPSBvcGVuKHRkYi0+bmFtZSwgdGRiLT5vcGVuX2ZsYWdzICYgfihPX0NSRUFUfE9fVFJVTkMpLCAwKTsKKwlpZiAodGRiLT5mZCA9PSAtMSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9yZW9wZW46IG9wZW4gZmFpbGVkICglcylcbiIsIHN0cmVycm9yKGVycm5vKSkpOworCQlnb3RvIGZhaWw7CisJfQorCWlmICgodGRiLT5mbGFncyAmIFREQl9DTEVBUl9JRl9GSVJTVCkgJiYKKwkgICAgKHRkYi0+bWV0aG9kcy0+dGRiX2JybG9jayh0ZGIsIEFDVElWRV9MT0NLLCBGX1JETENLLCBGX1NFVExLVywgMCwgMSkgPT0gLTEpKSB7CisJCVREQl9MT0coKHRkYiwgVERCX0RFQlVHX0ZBVEFMLCAidGRiX3Jlb3BlbjogZmFpbGVkIHRvIG9idGFpbiBhY3RpdmUgbG9ja1xuIikpOworCQlnb3RvIGZhaWw7CisJfQorCWlmIChmc3RhdCh0ZGItPmZkLCAmc3QpICE9IDApIHsKKwkJVERCX0xPRygodGRiLCBUREJfREVCVUdfRkFUQUwsICJ0ZGJfcmVvcGVuOiBmc3RhdCBmYWlsZWQgKCVzKVxuIiwgc3RyZXJyb3IoZXJybm8pKSk7CisJCWdvdG8gZmFpbDsKKwl9CisJaWYgKHN0LnN0X2lubyAhPSB0ZGItPmlub2RlIHx8IHN0LnN0X2RldiAhPSB0ZGItPmRldmljZSkgeworCQlUREJfTE9HKCh0ZGIsIFREQl9ERUJVR19GQVRBTCwgInRkYl9yZW9wZW46IGZpbGUgZGV2L2lub2RlIGhhcyBjaGFuZ2VkIVxuIikpOworCQlnb3RvIGZhaWw7CisJfQorCXRkYl9tbWFwKHRkYik7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwl0ZGJfY2xvc2UodGRiKTsKKwlyZXR1cm4gLTE7Cit9CisKKy8qIHJlb3BlbiBhbGwgdGRiJ3MgKi8KK2ludCB0ZGJfcmVvcGVuX2FsbChpbnQgcGFyZW50X2xvbmdsaXZlZCkKK3sKKwlzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYjsKKworCWZvciAodGRiPXRkYnM7IHRkYjsgdGRiID0gdGRiLT5uZXh0KSB7CisJCS8qCisJCSAqIElmIHRoZSBwYXJlbnQgaXMgbG9uZ2xpdmVkIChpZS4gYQorCQkgKiBwYXJlbnQgZGFlbW9uIGFyY2hpdGVjdHVyZSksIHdlIGtub3cKKwkJICogaXQgd2lsbCBrZWVwIGl0J3MgYWN0aXZlIGxvY2sgb24gYQorCQkgKiB0ZGIgb3BlbmVkIHdpdGggQ0xFQVJfSUZfRklSU1QuIFRodXMKKwkJICogZm9yIGNoaWxkIHByb2Nlc3NlcyB3ZSBkb24ndCBoYXZlIHRvCisJCSAqIGFkZCBhbiBhY3RpdmUgbG9jay4gVGhpcyBpcyBlc3NlbnRpYWwKKwkJICogdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiBzeXN0ZW1zIHRoYXQKKwkJICoga2VlcCBQT1NJWCBsb2NrcyBhcyBhIG5vbi1zY2FsYWJsZSBkYXRhCisJCSAqIHN0cnVjdHVyZSBpbiB0aGUga2VybmVsLgorCQkgKi8KKwkJaWYgKHBhcmVudF9sb25nbGl2ZWQpIHsKKwkJCS8qIEVuc3VyZSBubyBjbGVhci1pZi1maXJzdC4gKi8KKwkJCXRkYi0+ZmxhZ3MgJj0gflREQl9DTEVBUl9JRl9GSVJTVDsKKwkJfQorCisJCWlmICh0ZGJfcmVvcGVuKHRkYikgIT0gMCkKKwkJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoqCisgKiBGbHVzaCBhIGRhdGFiYXNlIGZpbGUgZnJvbSB0aGUgcGFnZSBjYWNoZS4KKyAqKi8KK2ludCB0ZGJfZmx1c2goc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpCit7CisJaWYgKHRkYi0+ZmQgIT0gLTEpCisJCXJldHVybiBmc3luYyh0ZGItPmZkKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi5oIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0MDg2YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi5oCkBAIC0wLDAgKzEsMjE1IEBACisjaWZuZGVmIF9fVERCX0hfXworI2RlZmluZSBfX1REQl9IX18KKworLyoKKyAgIFVuaXggU01CL0NJRlMgaW1wbGVtZW50YXRpb24uCisKKyAgIHRyaXZpYWwgZGF0YWJhc2UgbGlicmFyeQorCisgICBDb3B5cmlnaHQgKEMpIEFuZHJldyBUcmlkZ2VsbCAxOTk5LTIwMDQKKworICAgICAqKiBOT1RFISBUaGUgZm9sbG93aW5nIExHUEwgbGljZW5zZSBhcHBsaWVzIHRvIHRoZSB0ZGIKKyAgICAgKiogbGlicmFyeS4gVGhpcyBkb2VzIE5PVCBpbXBseSB0aGF0IGFsbCBvZiBTYW1iYSBpcyByZWxlYXNlZAorICAgICAqKiB1bmRlciB0aGUgTEdQTAorCisgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyovCisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworLyogZmxhZ3MgdG8gdGRiX3N0b3JlKCkgKi8KKyNkZWZpbmUgVERCX1JFUExBQ0UgMQorI2RlZmluZSBUREJfSU5TRVJUIDIKKyNkZWZpbmUgVERCX01PRElGWSAzCisKKy8qIGZsYWdzIGZvciB0ZGJfb3BlbigpICovCisjZGVmaW5lIFREQl9ERUZBVUxUIDAgLyoganVzdCBhIHJlYWRhYmlsaXR5IHBsYWNlIGhvbGRlciAqLworI2RlZmluZSBUREJfQ0xFQVJfSUZfRklSU1QgMQorI2RlZmluZSBUREJfSU5URVJOQUwgMiAvKiBkb24ndCBzdG9yZSBvbiBkaXNrICovCisjZGVmaW5lIFREQl9OT0xPQ0sgICA0IC8qIGRvbid0IGRvIGFueSBsb2NraW5nICovCisjZGVmaW5lIFREQl9OT01NQVAgICA4IC8qIGRvbid0IHVzZSBtbWFwICovCisjZGVmaW5lIFREQl9DT05WRVJUIDE2IC8qIGNvbnZlcnQgZW5kaWFuIChpbnRlcm5hbCB1c2UpICovCisjZGVmaW5lIFREQl9CSUdFTkRJQU4gMzIgLyogaGVhZGVyIGlzIGJpZy1lbmRpYW4gKGludGVybmFsIHVzZSkgKi8KKyNkZWZpbmUgVERCX05PU1lOQyAgIDY0IC8qIGRvbid0IHVzZSBzeW5jaHJvbm91cyB0cmFuc2FjdGlvbnMgKi8KKyNkZWZpbmUgVERCX1NFUU5VTSAgIDEyOCAvKiBtYWludGFpbiBhIHNlcXVlbmNlIG51bWJlciAqLworCisjZGVmaW5lIFREQl9FUlJDT0RFKGNvZGUsIHJldCkgKCh0ZGItPmVjb2RlID0gKGNvZGUpKSwgcmV0KQorCisvKiBlcnJvciBjb2RlcyAqLworZW51bSBUREJfRVJST1Ige1REQl9TVUNDRVNTPTAsIFREQl9FUlJfQ09SUlVQVCwgVERCX0VSUl9JTywgVERCX0VSUl9MT0NLLAorCQlUREJfRVJSX09PTSwgVERCX0VSUl9FWElTVFMsIFREQl9FUlJfTk9MT0NLLCBUREJfRVJSX0xPQ0tfVElNRU9VVCwKKwkJVERCX0VSUl9OT0VYSVNULCBUREJfRVJSX0VJTlZBTCwgVERCX0VSUl9SRE9OTFl9OworCisvKiBkZWJ1Z2dpbmcgdXNlcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBsZXZlbHMgKi8KK2VudW0gdGRiX2RlYnVnX2xldmVsIHtUREJfREVCVUdfRkFUQUwgPSAwLCBUREJfREVCVUdfRVJST1IsCisJCSAgICAgIFREQl9ERUJVR19XQVJOSU5HLCBUREJfREVCVUdfVFJBQ0V9OworCit0eXBlZGVmIHN0cnVjdCBUREJfREFUQSB7CisJdW5zaWduZWQgY2hhciAqZHB0cjsKKwlzaXplX3QgZHNpemU7Cit9IFREQl9EQVRBOworCisjaWZuZGVmIFBSSU5URl9BVFRSSUJVVEUKKyNpZiAoX19HTlVDX18gPj0gMykKKy8qKiBVc2UgZ2NjIGF0dHJpYnV0ZSB0byBjaGVjayBwcmludGYgZm5zLiAgYTEgaXMgdGhlIDEtYmFzZWQgaW5kZXggb2YKKyAqIHRoZSBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgZm9ybWF0LCBhbmQgYTIgdGhlIGluZGV4IG9mIHRoZSBmaXJzdAorICogYXJndW1lbnQuIE5vdGUgdGhhdCBzb21lIGdjYyAyLnggdmVyc2lvbnMgZG9uJ3QgaGFuZGxlIHRoaXMKKyAqIHByb3Blcmx5ICoqLworI2RlZmluZSBQUklOVEZfQVRUUklCVVRFKGExLCBhMikgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAoX19wcmludGZfXywgYTEsIGEyKSkpCisjZWxzZQorI2RlZmluZSBQUklOVEZfQVRUUklCVVRFKGExLCBhMikKKyNlbmRpZgorI2VuZGlmCisKKy8qIGV4dDJmcyB0ZGIgcmVuYW1lcyAqLworI2RlZmluZSB0ZGJfb3BlbiBleHQyZnNfdGRiX29wZW4KKyNkZWZpbmUgdGRiX29wZW5fZXggZXh0MmZzX3RkYl9vcGVuX2V4CisjZGVmaW5lIHRkYl9zZXRfbWF4X2RlYWQgZXh0MmZzX3RkYl9zZXRfbWF4X2RlYWQKKyNkZWZpbmUgdGRiX3Jlb3BlbiBleHQyZnNfdGRiX3Jlb3BlbgorI2RlZmluZSB0ZGJfcmVvcGVuX2FsbCBleHQyZnNfdGRiX3Jlb3Blbl9hbGwKKyNkZWZpbmUgdGRiX3NldF9sb2dnaW5nX2Z1bmN0aW9uIGV4dDJmc190ZGJfc2V0X2xvZ2dpbmdfZnVuY3Rpb24KKyNkZWZpbmUgdGRiX2Vycm9yIGV4dDJmc190ZGJfZXJyb3IKKyNkZWZpbmUgdGRiX2Vycm9yc3RyIGV4dDJmc190ZGJfZXJyb3JzdHIKKyNkZWZpbmUgdGRiX2ZldGNoIGV4dDJmc190ZGJfZmV0Y2gKKyNkZWZpbmUgdGRiX3BhcnNlX3JlY29yZCBleHQyZnNfdGRiX3BhcnNlX3JlY29yZAorI2RlZmluZSB0ZGJfZGVsZXRlIGV4dDJmc190ZGJfZGVsZXRlCisjZGVmaW5lIHRkYl9zdG9yZSBleHQyZnNfdGRiX3N0b3JlCisjZGVmaW5lIHRkYl9hcHBlbmQgZXh0MmZzX3RkYl9hcHBlbmQKKyNkZWZpbmUgdGRiX2Nsb3NlIGV4dDJmc190ZGJfY2xvc2UKKyNkZWZpbmUgdGRiX2ZpcnN0a2V5IGV4dDJmc190ZGJfZmlyc3RrZXkKKyNkZWZpbmUgdGRiX25leHRrZXkgZXh0MmZzX3RkYl9uZXh0a2V5CisjZGVmaW5lIHRkYl90cmF2ZXJzZSBleHQyZnNfdGRiX3RyYXZlcnNlCisjZGVmaW5lIHRkYl90cmF2ZXJzZV9yZWFkIGV4dDJmc190ZGJfdHJhdmVyc2VfcmVhZAorI2RlZmluZSB0ZGJfZXhpc3RzIGV4dDJmc190ZGJfZXhpc3RzCisjZGVmaW5lIHRkYl9sb2NrYWxsIGV4dDJmc190ZGJfbG9ja2FsbAorI2RlZmluZSB0ZGJfdW5sb2NrYWxsIGV4dDJmc190ZGJfdW5sb2NrYWxsCisjZGVmaW5lIHRkYl9sb2NrYWxsX3JlYWQgZXh0MmZzX3RkYl9sb2NrYWxsX3JlYWQKKyNkZWZpbmUgdGRiX3VubG9ja2FsbF9yZWFkIGV4dDJmc190ZGJfdW5sb2NrYWxsX3JlYWQKKyNkZWZpbmUgdGRiX25hbWUgZXh0MmZzX3RkYl9uYW1lCisjZGVmaW5lIHRkYl9mZCBleHQyZnNfdGRiX2ZkCisjZGVmaW5lIHRkYl9sb2dfZm4gZXh0MmZzX3RkYl9sb2dfZm4KKyNkZWZpbmUgdGRiX2dldF9sb2dnaW5nX3ByaXZhdGUgZXh0MmZzX3RkYl9nZXRfbG9nZ2luZ19wcml2YXRlCisjZGVmaW5lIHRkYl90cmFuc2FjdGlvbl9zdGFydCBleHQyZnNfdGRiX3RyYW5zYWN0aW9uX3N0YXJ0CisjZGVmaW5lIHRkYl90cmFuc2FjdGlvbl9jb21taXQgZXh0MmZzX3RkYl90cmFuc2FjdGlvbl9jb21taXQKKyNkZWZpbmUgdGRiX3RyYW5zYWN0aW9uX2NhbmNlbCBleHQyZnNfdGRiX3RyYW5zYWN0aW9uX2NhbmNlbAorI2RlZmluZSB0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlciBleHQyZnNfdGRiX3RyYW5zYWN0aW9uX3JlY292ZXIKKyNkZWZpbmUgdGRiX2dldF9zZXFudW0gZXh0MmZzX3RkYl9nZXRfc2VxbnVtCisjZGVmaW5lIHRkYl9oYXNoX3NpemUgZXh0MmZzX3RkYl9oYXNoX3NpemUKKyNkZWZpbmUgdGRiX21hcF9zaXplIGV4dDJmc190ZGJfbWFwX3NpemUKKyNkZWZpbmUgdGRiX2dldF9mbGFncyBleHQyZnNfdGRiX2dldF9mbGFncworI2RlZmluZSB0ZGJfY2hhaW5sb2NrIGV4dDJmc190ZGJfY2hhaW5sb2NrCisjZGVmaW5lIHRkYl9jaGFpbnVubG9jayBleHQyZnNfdGRiX2NoYWludW5sb2NrCisjZGVmaW5lIHRkYl9jaGFpbmxvY2tfcmVhZCBleHQyZnNfdGRiX2NoYWlubG9ja19yZWFkCisjZGVmaW5lIHRkYl9jaGFpbnVubG9ja19yZWFkIGV4dDJmc190ZGJfY2hhaW51bmxvY2tfcmVhZAorI2RlZmluZSB0ZGJfZHVtcF9hbGwgZXh0MmZzX3RkYl9kdW1wX2FsbAorI2RlZmluZSB0ZGJfcHJpbnRmcmVlbGlzdCBleHQyZnNfdGRiX3ByaW50ZnJlZWxpc3QKKyNkZWZpbmUgdGRiX3ZhbGlkYXRlX2ZyZWVsaXN0IGV4dDJmc190ZGJfdmFsaWRhdGVfZnJlZWxpc3QKKyNkZWZpbmUgdGRiX2NoYWlubG9ja19tYXJrIGV4dDJmc190ZGJfY2hhaW5sb2NrX21hcmsKKyNkZWZpbmUgdGRiX2NoYWlubG9ja19ub25ibG9jayBleHQyZnNfdGRiX2NoYWlubG9ja19ub25ibG9jaworI2RlZmluZSB0ZGJfY2hhaW5sb2NrX3VubWFyayBleHQyZnNfdGRiX2NoYWlubG9ja191bm1hcmsKKyNkZWZpbmUgdGRiX2VuYWJsZV9zZXFudW0gZXh0MmZzX3RkYl9lbmFibGVfc2VxbnVtCisjZGVmaW5lIHRkYl9pbmNyZW1lbnRfc2VxbnVtX25vbmJsb2NrIGV4dDJmc190ZGJfaW5jcmVtZW50X3NlcW51bV9ub25ibG9jaworI2RlZmluZSB0ZGJfbG9ja19ub25ibG9jayBleHQyZnNfdGRiX2xvY2tfbm9uYmxvY2sKKyNkZWZpbmUgdGRiX2xvY2thbGxfbWFyayBleHQyZnNfdGRiX2xvY2thbGxfbWFyaworI2RlZmluZSB0ZGJfbG9ja2FsbF9ub25ibG9jayBleHQyZnNfdGRiX2xvY2thbGxfbm9uYmxvY2sKKyNkZWZpbmUgdGRiX2xvY2thbGxfcmVhZF9ub25ibG9jayBleHQyZnNfdGRiX2xvY2thbGxfcmVhZF9ub25ibG9jaworI2RlZmluZSB0ZGJfbG9ja2FsbF91bm1hcmsgZXh0MmZzX3RkYl9sb2NrYWxsX3VubWFyaworI2RlZmluZSB0ZGJfZmx1c2ggZXh0MmZzX3RkYl9mbHVzaAorCisvKiB0aGlzIGlzIHRoZSBjb250ZXh0IHN0cnVjdHVyZSB0aGF0IGlzIHJldHVybmVkIGZyb20gYSBkYiBvcGVuICovCit0eXBlZGVmIHN0cnVjdCB0ZGJfY29udGV4dCBUREJfQ09OVEVYVDsKKwordHlwZWRlZiBpbnQgKCp0ZGJfdHJhdmVyc2VfZnVuYykoc3RydWN0IHRkYl9jb250ZXh0ICosIFREQl9EQVRBLCBUREJfREFUQSwgdm9pZCAqKTsKK3R5cGVkZWYgdm9pZCAoKnRkYl9sb2dfZnVuYykoc3RydWN0IHRkYl9jb250ZXh0ICosIGVudW0gdGRiX2RlYnVnX2xldmVsLCBjb25zdCBjaGFyICosIC4uLikgUFJJTlRGX0FUVFJJQlVURSgzLCA0KTsKK3R5cGVkZWYgdW5zaWduZWQgaW50ICgqdGRiX2hhc2hfZnVuYykoVERCX0RBVEEgKmtleSk7CisKK3N0cnVjdCB0ZGJfbG9nZ2luZ19jb250ZXh0IHsKKyAgICAgICAgdGRiX2xvZ19mdW5jIGxvZ19mbjsKKyAgICAgICAgdm9pZCAqbG9nX3ByaXZhdGU7Cit9OworCitzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYl9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNoX3NpemUsIGludCB0ZGJfZmxhZ3MsCisJCSAgICAgIGludCBvcGVuX2ZsYWdzLCBtb2RlX3QgbW9kZSk7CitzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYl9vcGVuX2V4KGNvbnN0IGNoYXIgKm5hbWUsIGludCBoYXNoX3NpemUsIGludCB0ZGJfZmxhZ3MsCisJCQkgaW50IG9wZW5fZmxhZ3MsIG1vZGVfdCBtb2RlLAorCQkJIGNvbnN0IHN0cnVjdCB0ZGJfbG9nZ2luZ19jb250ZXh0ICpsb2dfY3R4LAorCQkJIHRkYl9oYXNoX2Z1bmMgaGFzaF9mbik7Cit2b2lkIHRkYl9zZXRfbWF4X2RlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBtYXhfZGVhZCk7CisKK2ludCB0ZGJfcmVvcGVuKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfcmVvcGVuX2FsbChpbnQgcGFyZW50X2xvbmdsaXZlZCk7Cit2b2lkIHRkYl9zZXRfbG9nZ2luZ19mdW5jdGlvbihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgY29uc3Qgc3RydWN0IHRkYl9sb2dnaW5nX2NvbnRleHQgKmxvZ19jdHgpOworZW51bSBUREJfRVJST1IgdGRiX2Vycm9yKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2NvbnN0IGNoYXIgKnRkYl9lcnJvcnN0cihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitUREJfREFUQSB0ZGJfZmV0Y2goc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSk7CitpbnQgdGRiX3BhcnNlX3JlY29yZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LAorCQkgICAgIGludCAoKnBhcnNlcikoVERCX0RBVEEga2V5LCBUREJfREFUQSBkYXRhLAorCQkJCSAgIHZvaWQgKnByaXZhdGVfZGF0YSksCisJCSAgICAgdm9pZCAqcHJpdmF0ZV9kYXRhKTsKK2ludCB0ZGJfZGVsZXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpOworaW50IHRkYl9zdG9yZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCBpbnQgZmxhZyk7CitpbnQgdGRiX2FwcGVuZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBuZXdfZGJ1Zik7CitpbnQgdGRiX2Nsb3NlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK1REQl9EQVRBIHRkYl9maXJzdGtleShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitUREJfREFUQSB0ZGJfbmV4dGtleShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KTsKK2ludCB0ZGJfdHJhdmVyc2Uoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl90cmF2ZXJzZV9mdW5jIGZuLCB2b2lkICopOworaW50IHRkYl90cmF2ZXJzZV9yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfdHJhdmVyc2VfZnVuYyBmbiwgdm9pZCAqKTsKK2ludCB0ZGJfZXhpc3RzKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpOworaW50IHRkYl9sb2NrYWxsKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfbG9ja2FsbF9ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX3VubG9ja2FsbChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX2xvY2thbGxfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX2xvY2thbGxfcmVhZF9ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX3VubG9ja2FsbF9yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfbG9ja2FsbF9tYXJrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfbG9ja2FsbF91bm1hcmsoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworY29uc3QgY2hhciAqdGRiX25hbWUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworaW50IHRkYl9mZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7Cit0ZGJfbG9nX2Z1bmMgdGRiX2xvZ19mbihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7Cit2b2lkICp0ZGJfZ2V0X2xvZ2dpbmdfcHJpdmF0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX3RyYW5zYWN0aW9uX3N0YXJ0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfdHJhbnNhY3Rpb25fY29tbWl0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlcihzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX2dldF9zZXFudW0oc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworaW50IHRkYl9oYXNoX3NpemUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworc2l6ZV90IHRkYl9tYXBfc2l6ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CitpbnQgdGRiX2dldF9mbGFncyhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7Cit2b2lkIHRkYl9lbmFibGVfc2VxbnVtKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK3ZvaWQgdGRiX2luY3JlbWVudF9zZXFudW1fbm9uYmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworaW50IHRkYl9mbHVzaChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CisKKy8qIExvdyBsZXZlbCBsb2NraW5nIGZ1bmN0aW9uczogdXNlIHdpdGggY2FyZSAqLworaW50IHRkYl9jaGFpbmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSk7CitpbnQgdGRiX2NoYWlubG9ja19ub25ibG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KTsKK2ludCB0ZGJfY2hhaW51bmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSk7CitpbnQgdGRiX2NoYWlubG9ja19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpOworaW50IHRkYl9jaGFpbnVubG9ja19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCBUREJfREFUQSBrZXkpOworaW50IHRkYl9jaGFpbmxvY2tfbWFyayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KTsKK2ludCB0ZGJfY2hhaW5sb2NrX3VubWFyayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5KTsKKworLyogRGVidWcgZnVuY3Rpb25zLiBOb3QgdXNlZCBpbiBwcm9kdWN0aW9uLiAqLwordm9pZCB0ZGJfZHVtcF9hbGwoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworaW50IHRkYl9wcmludGZyZWVsaXN0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKK2ludCB0ZGJfdmFsaWRhdGVfZnJlZWxpc3Qoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCAqcG51bV9lbnRyaWVzKTsKKworI2lmZGVmICBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiB0ZGIuaCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL2J1aWxkLXRkYiBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9idWlsZC10ZGIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWNjMThmNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9idWlsZC10ZGIKQEAgLTAsMCArMSwzNCBAQAorIyEvYmluL3NoCisjCisjIFRoaXMgZmlsZSBjcmVhdGVzIGEgc3RhbmQtYWxvbmUgVERCIGJhc2VkIG9uIGEgc2V0IG9mIHNvdXJjZXMgZnJvbSAKKyMgU2FtYmEKKworI0JBU0VfRElSPS91c3IvcHJvamVjdHMvc2FtYmEvc2FtYmEtNC4wLjB0cDQvc291cmNlL2xpYi90ZGIKK0JBU0VfRElSPS91c3IvcHJvamVjdHMvc2FtYmEvdGRiCisKK3JtIC1yZiAucGMKKworRklMRVM9ImVycm9yLmMgbG9jay5jIGlvLmMgdHJhbnNhY3Rpb24uYyBmcmVlbGlzdC5jIFwKKwlmcmVlbGlzdGNoZWNrLmMgdHJhdmVyc2UuYyBkdW1wLmMgdGRiLmMgb3Blbi5jIgorCisoY2QgJEJBU0VfRElSL2NvbW1vbjsgc3ZuIGluZm8gKSA+IC5zdm5pbmZvCitlY2hvICIvKiIgPiB0ZGIuYworZ3JlcCBeVVJMIC5zdm5pbmZvID4+IHRkYi5jCitncmVwICJeTGFzdCBDaGFuZ2VkIFJldiIgLnN2bmluZm8gfCBzZWQgLWUgJ3MvTGFzdCBDaGFuZ2VkIC8vJyA+PiB0ZGIuYworZ3JlcCAiXkxhc3QgQ2hhbmdlZCBEYXRlIiAuc3ZuaW5mbyA+PiB0ZGIuYworZWNobyAiKi8iID4+IHRkYi5jCisKK2NhdCAkQkFTRV9ESVIvY29tbW9uL3RkYl9wcml2YXRlLmggPj4gdGRiLmMKK2ZvciBpIGluICRGSUxFUzsgZG8KKwlpZiBbIGB0YWlsIC1uIDEgdGRiLmMgfCB3YyAtY2AgLWd0IDEgXTsgdGhlbgorCQlwcmludGYgIlxuIiA+PiB0ZGIuYworCWZpCisJZWNobyAiLyogZmlsZTogJGkgKi8iID4+IHRkYi5jCisJc2VkIC1lICcxLC8jaW5jbHVkZSAidGRiX3ByaXZhdGUuaCIvZCcgPCAkQkFTRV9ESVIvY29tbW9uLyRpID4+IHRkYi5jCitkb25lCisKK2NwICRCQVNFX0RJUi9pbmNsdWRlL3RkYi5oIC4KK2NwICRCQVNFX0RJUi90b29scy90ZGJ0b29sLmMgLgorCitxdWlsdCBwdXNoIC1hCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL2NvcHlyaWdodCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL2NvcHlyaWdodApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWQxZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvY29weXJpZ2h0CkBAIC0wLDAgKzEsMjAgQEAKK0luZGV4OiB0ZGJzYS90ZGIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHRkYnNhLm9yaWcvdGRiLmMKKysrKyB0ZGJzYS90ZGIuYworQEAgLTQsMTEgKzQsMTEgQEAgUmV2OiAyMzM3MQorIExhc3QgQ2hhbmdlZCBEYXRlOiAyMDA3LTA2LTA2IDIwOjE0OjA2IC0wNDAwIChXZWQsIDA2IEp1biAyMDA3KQorICovCisgIC8qIAorLSAgIFVuaXggU01CL0NJRlMgaW1wbGVtZW50YXRpb24uCisrICAgdHJpdmlhbCBkYXRhYmFzZSBsaWJyYXJ5IC0gc3RhbmRhbG9uZSB2ZXJzaW9uCisgCistICAgdHJpdmlhbCBkYXRhYmFzZSBsaWJyYXJ5IC0gcHJpdmF0ZSBpbmNsdWRlcworLQorLSAgIENvcHlyaWdodCAoQykgQW5kcmV3IFRyaWRnZWxsICAgICAgICAgICAgICAyMDA1CisrICAgQ29weXJpZ2h0IChDKSBBbmRyZXcgVHJpZGdlbGwgICAgICAgICAgICAgIDE5OTktMjAwNQorKyAgIENvcHlyaWdodCAoQykgSmVyZW15IEFsbGlzb24gICAgICAgICAgICAgICAyMDAwLTIwMDYKKysgICBDb3B5cmlnaHQgKEMpIFBhdWwgYFJ1c3R5JyBSdXNzZWxsICAgICAgICAgMjAwMAorICAgIAorICAgICAgKiogTk9URSEgVGhlIGZvbGxvd2luZyBMR1BMIGxpY2Vuc2UgYXBwbGllcyB0byB0aGUgdGRiCisgICAgICAqKiBsaWJyYXJ5LiBUaGlzIGRvZXMgTk9UIGltcGx5IHRoYXQgYWxsIG9mIFNhbWJhIGlzIHJlbGVhc2VkCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9leHQydGRiLXJlbmFtZSBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL2V4dDJ0ZGItcmVuYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1YmYwODUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9leHQydGRiLXJlbmFtZQpAQCAtMCwwICsxLDY1IEBACitJbmRleDogdGRiL3RkYi5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGRiLm9yaWcvdGRiLmgKKysrKyB0ZGIvdGRiLmgKK0BAIC03Niw2ICs3Niw2MCBAQCB0eXBlZGVmIHN0cnVjdCBUREJfREFUQSB7CisgI2VuZGlmCisgI2VuZGlmCisgCisrLyogZXh0MmZzIHRkYiByZW5hbWVzICovCisrI2RlZmluZSB0ZGJfb3BlbiBleHQyZnNfdGRiX29wZW4KKysjZGVmaW5lIHRkYl9vcGVuX2V4IGV4dDJmc190ZGJfb3Blbl9leAorKyNkZWZpbmUgdGRiX3NldF9tYXhfZGVhZCBleHQyZnNfdGRiX3NldF9tYXhfZGVhZAorKyNkZWZpbmUgdGRiX3Jlb3BlbiBleHQyZnNfdGRiX3Jlb3BlbgorKyNkZWZpbmUgdGRiX3Jlb3Blbl9hbGwgZXh0MmZzX3RkYl9yZW9wZW5fYWxsCisrI2RlZmluZSB0ZGJfc2V0X2xvZ2dpbmdfZnVuY3Rpb24gZXh0MmZzX3RkYl9zZXRfbG9nZ2luZ19mdW5jdGlvbgorKyNkZWZpbmUgdGRiX2Vycm9yIGV4dDJmc190ZGJfZXJyb3IKKysjZGVmaW5lIHRkYl9lcnJvcnN0ciBleHQyZnNfdGRiX2Vycm9yc3RyCisrI2RlZmluZSB0ZGJfZmV0Y2ggZXh0MmZzX3RkYl9mZXRjaAorKyNkZWZpbmUgdGRiX3BhcnNlX3JlY29yZCBleHQyZnNfdGRiX3BhcnNlX3JlY29yZAorKyNkZWZpbmUgdGRiX2RlbGV0ZSBleHQyZnNfdGRiX2RlbGV0ZQorKyNkZWZpbmUgdGRiX3N0b3JlIGV4dDJmc190ZGJfc3RvcmUKKysjZGVmaW5lIHRkYl9hcHBlbmQgZXh0MmZzX3RkYl9hcHBlbmQKKysjZGVmaW5lIHRkYl9jbG9zZSBleHQyZnNfdGRiX2Nsb3NlCisrI2RlZmluZSB0ZGJfZmlyc3RrZXkgZXh0MmZzX3RkYl9maXJzdGtleQorKyNkZWZpbmUgdGRiX25leHRrZXkgZXh0MmZzX3RkYl9uZXh0a2V5CisrI2RlZmluZSB0ZGJfdHJhdmVyc2UgZXh0MmZzX3RkYl90cmF2ZXJzZQorKyNkZWZpbmUgdGRiX3RyYXZlcnNlX3JlYWQgZXh0MmZzX3RkYl90cmF2ZXJzZV9yZWFkCisrI2RlZmluZSB0ZGJfZXhpc3RzIGV4dDJmc190ZGJfZXhpc3RzCisrI2RlZmluZSB0ZGJfbG9ja2FsbCBleHQyZnNfdGRiX2xvY2thbGwKKysjZGVmaW5lIHRkYl91bmxvY2thbGwgZXh0MmZzX3RkYl91bmxvY2thbGwKKysjZGVmaW5lIHRkYl9sb2NrYWxsX3JlYWQgZXh0MmZzX3RkYl9sb2NrYWxsX3JlYWQKKysjZGVmaW5lIHRkYl91bmxvY2thbGxfcmVhZCBleHQyZnNfdGRiX3VubG9ja2FsbF9yZWFkCisrI2RlZmluZSB0ZGJfbmFtZSBleHQyZnNfdGRiX25hbWUKKysjZGVmaW5lIHRkYl9mZCBleHQyZnNfdGRiX2ZkCisrI2RlZmluZSB0ZGJfbG9nX2ZuIGV4dDJmc190ZGJfbG9nX2ZuCisrI2RlZmluZSB0ZGJfZ2V0X2xvZ2dpbmdfcHJpdmF0ZSBleHQyZnNfdGRiX2dldF9sb2dnaW5nX3ByaXZhdGUKKysjZGVmaW5lIHRkYl90cmFuc2FjdGlvbl9zdGFydCBleHQyZnNfdGRiX3RyYW5zYWN0aW9uX3N0YXJ0CisrI2RlZmluZSB0ZGJfdHJhbnNhY3Rpb25fY29tbWl0IGV4dDJmc190ZGJfdHJhbnNhY3Rpb25fY29tbWl0CisrI2RlZmluZSB0ZGJfdHJhbnNhY3Rpb25fY2FuY2VsIGV4dDJmc190ZGJfdHJhbnNhY3Rpb25fY2FuY2VsCisrI2RlZmluZSB0ZGJfdHJhbnNhY3Rpb25fcmVjb3ZlciBleHQyZnNfdGRiX3RyYW5zYWN0aW9uX3JlY292ZXIKKysjZGVmaW5lIHRkYl9nZXRfc2VxbnVtIGV4dDJmc190ZGJfZ2V0X3NlcW51bQorKyNkZWZpbmUgdGRiX2hhc2hfc2l6ZSBleHQyZnNfdGRiX2hhc2hfc2l6ZQorKyNkZWZpbmUgdGRiX21hcF9zaXplIGV4dDJmc190ZGJfbWFwX3NpemUKKysjZGVmaW5lIHRkYl9nZXRfZmxhZ3MgZXh0MmZzX3RkYl9nZXRfZmxhZ3MKKysjZGVmaW5lIHRkYl9jaGFpbmxvY2sgZXh0MmZzX3RkYl9jaGFpbmxvY2sKKysjZGVmaW5lIHRkYl9jaGFpbnVubG9jayBleHQyZnNfdGRiX2NoYWludW5sb2NrCisrI2RlZmluZSB0ZGJfY2hhaW5sb2NrX3JlYWQgZXh0MmZzX3RkYl9jaGFpbmxvY2tfcmVhZAorKyNkZWZpbmUgdGRiX2NoYWludW5sb2NrX3JlYWQgZXh0MmZzX3RkYl9jaGFpbnVubG9ja19yZWFkCisrI2RlZmluZSB0ZGJfZHVtcF9hbGwgZXh0MmZzX3RkYl9kdW1wX2FsbAorKyNkZWZpbmUgdGRiX3ByaW50ZnJlZWxpc3QgZXh0MmZzX3RkYl9wcmludGZyZWVsaXN0CisrI2RlZmluZSB0ZGJfdmFsaWRhdGVfZnJlZWxpc3QgZXh0MmZzX3RkYl92YWxpZGF0ZV9mcmVlbGlzdAorKyNkZWZpbmUgdGRiX2NoYWlubG9ja19tYXJrIGV4dDJmc190ZGJfY2hhaW5sb2NrX21hcmsKKysjZGVmaW5lIHRkYl9jaGFpbmxvY2tfbm9uYmxvY2sgZXh0MmZzX3RkYl9jaGFpbmxvY2tfbm9uYmxvY2sKKysjZGVmaW5lIHRkYl9jaGFpbmxvY2tfdW5tYXJrIGV4dDJmc190ZGJfY2hhaW5sb2NrX3VubWFyaworKyNkZWZpbmUgdGRiX2VuYWJsZV9zZXFudW0gZXh0MmZzX3RkYl9lbmFibGVfc2VxbnVtCisrI2RlZmluZSB0ZGJfaW5jcmVtZW50X3NlcW51bV9ub25ibG9jayBleHQyZnNfdGRiX2luY3JlbWVudF9zZXFudW1fbm9uYmxvY2sKKysjZGVmaW5lIHRkYl9sb2NrX25vbmJsb2NrIGV4dDJmc190ZGJfbG9ja19ub25ibG9jaworKyNkZWZpbmUgdGRiX2xvY2thbGxfbWFyayBleHQyZnNfdGRiX2xvY2thbGxfbWFyaworKyNkZWZpbmUgdGRiX2xvY2thbGxfbm9uYmxvY2sgZXh0MmZzX3RkYl9sb2NrYWxsX25vbmJsb2NrCisrI2RlZmluZSB0ZGJfbG9ja2FsbF9yZWFkX25vbmJsb2NrIGV4dDJmc190ZGJfbG9ja2FsbF9yZWFkX25vbmJsb2NrCisrI2RlZmluZSB0ZGJfbG9ja2FsbF91bm1hcmsgZXh0MmZzX3RkYl9sb2NrYWxsX3VubWFyaworKworIC8qIHRoaXMgaXMgdGhlIGNvbnRleHQgc3RydWN0dXJlIHRoYXQgaXMgcmV0dXJuZWQgZnJvbSBhIGRiIG9wZW4gKi8KKyB0eXBlZGVmIHN0cnVjdCB0ZGJfY29udGV4dCBUREJfQ09OVEVYVDsKKyAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL3JlcGxhY2UtaW5jbHVkZXMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9yZXBsYWNlLWluY2x1ZGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZDBkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9yZXBsYWNlLWluY2x1ZGVzCkBAIC0wLDAgKzEsOTIgQEAKK0luZGV4OiB0ZGIvdGRiLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0ZGIub3JpZy90ZGIuYworKysrIHRkYi90ZGIuYworQEAgLTI5LDExICsyOSw4MiBAQCBMYXN0IENoYW5nZWQgRGF0ZTogMjAwNy0wNi0yMiAxMzozNjoxMCAtCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorICovCisgCistI2luY2x1ZGUgInJlcGxhY2UuaCIKKy0jaW5jbHVkZSAic3lzdGVtL2ZpbGVzeXMuaCIKKy0jaW5jbHVkZSAic3lzdGVtL3RpbWUuaCIKKy0jaW5jbHVkZSAic3lzdGVtL3NobWVtLmgiCistI2luY2x1ZGUgInN5c3RlbS9zZWxlY3QuaCIKKysjaWZkZWYgQ09ORklHX1NUQU5EX0FMT05FCisrI2RlZmluZSBIQVZFX01NQVAKKysjZGVmaW5lIEhBVkVfU1RSRFVQCisrI2RlZmluZSBIQVZFX1NZU19NTUFOX0gKKysjZGVmaW5lIEhBVkVfVVRJTUVfSAorKyNkZWZpbmUgSEFWRV9VVElNRQorKyNlbmRpZgorKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA1MDAKKysKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpZmRlZiBIQVZFX1NZU19TRUxFQ1RfSAorKyNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CisrI2VuZGlmCisrI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisrI2lmZGVmIEhBVkVfVVRJTUVfSAorKyNpbmNsdWRlIDx1dGltZS5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKworKyNpZmRlZiBIQVZFX1NZU19NTUFOX0gKKysjaW5jbHVkZSA8c3lzL21tYW4uaD4KKysjZW5kaWYKKysKKysjaWZuZGVmIE1BUF9GSUxFCisrI2RlZmluZSBNQVBfRklMRSAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBNQVBfRkFJTEVECisrI2RlZmluZSBNQVBfRkFJTEVEICgodm9pZCAqKS0xKQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9TVFJEVVAKKysjZGVmaW5lIHN0cmR1cCByZXBfc3RyZHVwCisrc3RhdGljIGNoYXIgKnJlcF9zdHJkdXAoY29uc3QgY2hhciAqcykKKyt7CisrCWNoYXIgKnJldDsKKysJaW50IGxlbmd0aDsKKysJaWYgKCFzKQorKwkJcmV0dXJuIE5VTEw7CisrCisrCWlmICghbGVuZ3RoKQorKwkJbGVuZ3RoID0gc3RybGVuKHMpOworKworKwlyZXQgPSBtYWxsb2MobGVuZ3RoICsgMSk7CisrCWlmIChyZXQpIHsKKysJCXN0cm5jcHkocmV0LCBzLCBsZW5ndGgpOworKwkJcmV0W2xlbmd0aF0gPSAnXDAnOworKwl9CisrCXJldHVybiByZXQ7CisrfQorKyNlbmRpZgorKworKyNpZm5kZWYgUFJJTlRGX0FUVFJJQlVURQorKyNpZiAoX19HTlVDX18gPj0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDEgKQorKy8qKiBVc2UgZ2NjIGF0dHJpYnV0ZSB0byBjaGVjayBwcmludGYgZm5zLiAgYTEgaXMgdGhlIDEtYmFzZWQgaW5kZXggb2YKKysgKiB0aGUgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCwgYW5kIGEyIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QKKysgKiBhcmd1bWVudC4gTm90ZSB0aGF0IHNvbWUgZ2NjIDIueCB2ZXJzaW9ucyBkb24ndCBoYW5kbGUgdGhpcworKyAqIHByb3Blcmx5ICoqLworKyNkZWZpbmUgUFJJTlRGX0FUVFJJQlVURShhMSwgYTIpIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKF9fcHJpbnRmX18sIGExLCBhMikpKQorKyNlbHNlCisrI2RlZmluZSBQUklOVEZfQVRUUklCVVRFKGExLCBhMikKKysjZW5kaWYKKysjZW5kaWYKKysKKyt0eXBlZGVmIGludCBib29sOworKworICNpbmNsdWRlICJ0ZGIuaCIKKyAKKyAjaWZuZGVmIHUzMgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvc2VyaWVzIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvc2VyaWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyMmI5MjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9zZXJpZXMKQEAgLTAsMCArMSw2IEBACitjb3B5cmlnaHQKK3JlcGxhY2UtaW5jbHVkZXMKK3N0YXRpYy1wcm90b3R5cGVzCitzdGF0aWMtZnVuY3Rpb25zCit0ZGJ0b29sLWluY2x1ZGVzCitleHQydGRiLXJlbmFtZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvc3RhdGljLWZ1bmN0aW9ucyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL3N0YXRpYy1mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIwZmJlZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL3N0YXRpYy1mdW5jdGlvbnMKQEAgLTAsMCArMSwxMyBAQAorSW5kZXg6IHRkYnNhL3RkYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGRic2Eub3JpZy90ZGIuYworKysrIHRkYnNhL3RkYi5jCitAQCAtMjI1NCw3ICsyMjU0LDcgQEAgaW50IHRkYl90cmFuc2FjdGlvbl9yZWNvdmVyKHN0cnVjdCB0ZGJfYworIC8qIGZpbGU6IGZyZWVsaXN0LmMgKi8KKyAKKyAvKiByZWFkIGEgZnJlZWxpc3QgcmVjb3JkIGFuZCBjaGVjayBmb3Igc2ltcGxlIGVycm9ycyAqLworLWludCB0ZGJfcmVjX2ZyZWVfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCisrc3RhdGljIGludCB0ZGJfcmVjX2ZyZWVfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpCisgeworIAlpZiAodGRiLT5tZXRob2RzLT50ZGJfcmVhZCh0ZGIsIG9mZiwgcmVjLCBzaXplb2YoKnJlYyksRE9DT05WKCkpID09IC0xKQorIAkJcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvc3RhdGljLXByb3RvdHlwZXMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy9zdGF0aWMtcHJvdG90eXBlcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhhZjYxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRiL3BhdGNoZXMvc3RhdGljLXByb3RvdHlwZXMKQEAgLTAsMCArMSw3MiBAQAorSW5kZXg6IHRkYnNhL3RkYi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGRic2Eub3JpZy90ZGIuYworKysrIHRkYnNhL3RkYi5jCitAQCAtMjUxLDM5ICsyNTEsMzkgQEAgc3RydWN0IHRkYl9jb250ZXh0IHsKKyAvKgorICAgaW50ZXJuYWwgcHJvdG90eXBlcworICovCistaW50IHRkYl9tdW5tYXAoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworLXZvaWQgdGRiX21tYXAoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworLWludCB0ZGJfbG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGxpc3QsIGludCBsdHlwZSk7CistaW50IHRkYl91bmxvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBsaXN0LCBpbnQgbHR5cGUpOworLWludCB0ZGJfYnJsb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBpbnQgcndfdHlwZSwgaW50IGxja190eXBlLCBpbnQgcHJvYmUsIHNpemVfdCBsZW4pOworLWludCB0ZGJfdHJhbnNhY3Rpb25fbG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGx0eXBlKTsKKy1pbnQgdGRiX3RyYW5zYWN0aW9uX3VubG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7CistaW50IHRkYl9icmxvY2tfdXBncmFkZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc2l6ZV90IGxlbik7CistaW50IHRkYl93cml0ZV9sb2NrX3JlY29yZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZik7CistaW50IHRkYl93cml0ZV91bmxvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKTsKKy1pbnQgdGRiX29mc19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworLWludCB0ZGJfb2ZzX3dyaXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworLXZvaWQgKnRkYl9jb252ZXJ0KHZvaWQgKmJ1ZiwgdTMyIHNpemUpOworLWludCB0ZGJfZnJlZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworLXRkYl9vZmZfdCB0ZGJfYWxsb2NhdGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9sZW5fdCBsZW5ndGgsIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKKy1pbnQgdGRiX29mc19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworLWludCB0ZGJfb2ZzX3dyaXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworLWludCB0ZGJfbG9ja19yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYpOworLWludCB0ZGJfdW5sb2NrX3JlY29yZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZik7CistaW50IHRkYl9yZWNfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworLWludCB0ZGJfcmVjX3dyaXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYyk7CistaW50IHRkYl9kb19kZWxldGUoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCByZWNfcHRyLCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYyk7CistdW5zaWduZWQgY2hhciAqdGRiX2FsbG9jX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9sZW5fdCBsZW4pOworLWludCB0ZGJfcGFyc2VfZGF0YShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LAorK3N0YXRpYyBpbnQgdGRiX211bm1hcChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7Cisrc3RhdGljIHZvaWQgdGRiX21tYXAoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIpOworK3N0YXRpYyBpbnQgdGRiX2xvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBsaXN0LCBpbnQgbHR5cGUpOworK3N0YXRpYyBpbnQgdGRiX3VubG9jayhzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgaW50IGxpc3QsIGludCBsdHlwZSk7Cisrc3RhdGljIGludCB0ZGJfYnJsb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCBpbnQgcndfdHlwZSwgaW50IGxja190eXBlLCBpbnQgcHJvYmUsIHNpemVfdCBsZW4pOworK3N0YXRpYyBpbnQgdGRiX3RyYW5zYWN0aW9uX2xvY2soc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIGludCBsdHlwZSk7Cisrc3RhdGljIGludCB0ZGJfdHJhbnNhY3Rpb25fdW5sb2NrKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKKytzdGF0aWMgaW50IHRkYl9icmxvY2tfdXBncmFkZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc2l6ZV90IGxlbik7Cisrc3RhdGljIGludCB0ZGJfd3JpdGVfbG9ja19yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYpOworK3N0YXRpYyBpbnQgdGRiX3dyaXRlX3VubG9ja19yZWNvcmQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmYpOworK3N0YXRpYyBpbnQgdGRiX29mc19yZWFkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworK3N0YXRpYyBpbnQgdGRiX29mc193cml0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgdGRiX29mZl90ICpkKTsKKytzdGF0aWMgdm9pZCAqdGRiX2NvbnZlcnQodm9pZCAqYnVmLCB1MzIgc2l6ZSk7Cisrc3RhdGljIGludCB0ZGJfZnJlZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworK3N0YXRpYyB0ZGJfb2ZmX3QgdGRiX2FsbG9jYXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfbGVuX3QgbGVuZ3RoLCBzdHJ1Y3QgbGlzdF9zdHJ1Y3QgKnJlYyk7Cisrc3RhdGljIGludCB0ZGJfb2ZzX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9vZmZfdCAqZCk7Cisrc3RhdGljIGludCB0ZGJfb2ZzX3dyaXRlKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2Zmc2V0LCB0ZGJfb2ZmX3QgKmQpOworK3N0YXRpYyBpbnQgdGRiX2xvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKTsKKytzdGF0aWMgaW50IHRkYl91bmxvY2tfcmVjb3JkKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgb2ZmKTsKKytzdGF0aWMgaW50IHRkYl9yZWNfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworK3N0YXRpYyBpbnQgdGRiX3JlY193cml0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZnNldCwgc3RydWN0IGxpc3Rfc3RydWN0ICpyZWMpOworK3N0YXRpYyBpbnQgdGRiX2RvX2RlbGV0ZShzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IHJlY19wdHIsIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKKytzdGF0aWMgdW5zaWduZWQgY2hhciAqdGRiX2FsbG9jX3JlYWQoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9sZW5fdCBsZW4pOworK3N0YXRpYyBpbnQgdGRiX3BhcnNlX2RhdGEoc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSwKKyAJCSAgIHRkYl9vZmZfdCBvZmZzZXQsIHRkYl9sZW5fdCBsZW4sCisgCQkgICBpbnQgKCpwYXJzZXIpKFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGF0YSwKKyAJCQkJIHZvaWQgKnByaXZhdGVfZGF0YSksCisgCQkgICB2b2lkICpwcml2YXRlX2RhdGEpOworLXRkYl9vZmZfdCB0ZGJfZmluZF9sb2NrX2hhc2goc3RydWN0IHRkYl9jb250ZXh0ICp0ZGIsIFREQl9EQVRBIGtleSwgdTMyIGhhc2gsIGludCBsb2NrdHlwZSwKKytzdGF0aWMgdGRiX29mZl90IHRkYl9maW5kX2xvY2tfaGFzaChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgVERCX0RBVEEga2V5LCB1MzIgaGFzaCwgaW50IGxvY2t0eXBlLAorIAkJCSAgIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKKy12b2lkIHRkYl9pb19pbml0KHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiKTsKKy1pbnQgdGRiX2V4cGFuZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IHNpemUpOworLWludCB0ZGJfcmVjX2ZyZWVfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwKKytzdGF0aWMgdm9pZCB0ZGJfaW9faW5pdChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYik7Cisrc3RhdGljIGludCB0ZGJfZXhwYW5kKHN0cnVjdCB0ZGJfY29udGV4dCAqdGRiLCB0ZGJfb2ZmX3Qgc2l6ZSk7Cisrc3RhdGljIGludCB0ZGJfcmVjX2ZyZWVfcmVhZChzdHJ1Y3QgdGRiX2NvbnRleHQgKnRkYiwgdGRiX29mZl90IG9mZiwKKyAJCSAgICAgIHN0cnVjdCBsaXN0X3N0cnVjdCAqcmVjKTsKKyAKKyAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RkYi9wYXRjaGVzL3RkYnRvb2wtaW5jbHVkZXMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy90ZGJ0b29sLWluY2x1ZGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzZjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGIvcGF0Y2hlcy90ZGJ0b29sLWluY2x1ZGVzCkBAIC0wLDAgKzEsMzAgQEAKK0luZGV4OiB0ZGJzYS90ZGJ0b29sLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB0ZGJzYS5vcmlnL3RkYnRvb2wuYworKysrIHRkYnNhL3RkYnRvb2wuYworQEAgLTIxLDEwICsyMSwyMSBAQAorICAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorICovCisgCistI2luY2x1ZGUgInJlcGxhY2UuaCIKKy0jaW5jbHVkZSAic3lzdGVtL2xvY2FsZS5oIgorLSNpbmNsdWRlICJzeXN0ZW0vdGltZS5oIgorLSNpbmNsdWRlICJzeXN0ZW0vZmlsZXN5cy5oIgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDx0aW1lLmg+CisrI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisrI2luY2x1ZGUgPHN5cy90aW1lLmg+CisrI2luY2x1ZGUgPGN0eXBlLmg+CisrI2luY2x1ZGUgPHNpZ25hbC5oPgorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysKKyAjaW5jbHVkZSAidGRiLmgiCisgCisgc3RhdGljIGludCBkb19jb21tYW5kKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRidG9vbC5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdGRidG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYWMwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZGJ0b29sLmMKQEAgLTAsMCArMSw2MjEgQEAKKy8qCisgICBVbml4IFNNQi9DSUZTIGltcGxlbWVudGF0aW9uLgorICAgU2FtYmEgZGF0YWJhc2UgZnVuY3Rpb25zCisgICBDb3B5cmlnaHQgKEMpIEFuZHJldyBUcmlkZ2VsbCAgICAgICAgICAgICAgMTk5OS0yMDAwCisgICBDb3B5cmlnaHQgKEMpIFBhdWwgYFJ1c3R5JyBSdXNzZWxsCQkgICAyMDAwCisgICBDb3B5cmlnaHQgKEMpIEplcmVteSBBbGxpc29uCQkJICAgMjAwMAorICAgQ29weXJpZ2h0IChDKSBBbmRyZXcgRXNoICAgICAgICAgICAgICAgICAgICAgICAgMjAwMQorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisKKyNpbmNsdWRlICJ0ZGIuaCIKKworc3RhdGljIGludCBkb19jb21tYW5kKHZvaWQpOworY29uc3QgY2hhciAqY21kbmFtZTsKK2NoYXIgKmFyZzEsICphcmcyOworc2l6ZV90IGFyZzFsZW4sIGFyZzJsZW47CitpbnQgYkl0ZXJhdGUgPSAwOworY2hhciAqbGluZTsKK1REQl9EQVRBIGl0ZXJhdGVfa2J1ZjsKK2NoYXIgY21kbGluZVsxMDI0XTsKKworZW51bSBjb21tYW5kcyB7CisJQ01EX0NSRUFURV9UREIsCisJQ01EX09QRU5fVERCLAorCUNNRF9FUkFTRSwKKwlDTURfRFVNUCwKKwlDTURfSU5TRVJULAorCUNNRF9NT1ZFLAorCUNNRF9TVE9SRSwKKwlDTURfU0hPVywKKwlDTURfS0VZUywKKwlDTURfSEVYS0VZUywKKwlDTURfREVMRVRFLAorCUNNRF9MSVNUX0hBU0hfRlJFRSwKKwlDTURfTElTVF9GUkVFLAorCUNNRF9JTkZPLAorCUNNRF9GSVJTVCwKKwlDTURfTkVYVCwKKwlDTURfU1lTVEVNLAorCUNNRF9RVUlULAorCUNNRF9IRUxQCit9OworCit0eXBlZGVmIHN0cnVjdCB7CisJY29uc3QgY2hhciAqbmFtZTsKKwllbnVtIGNvbW1hbmRzIGNtZDsKK30gQ09NTUFORF9UQUJMRTsKKworQ09NTUFORF9UQUJMRSBjbWRfdGFibGVbXSA9IHsKKwl7ImNyZWF0ZSIsCUNNRF9DUkVBVEVfVERCfSwKKwl7Im9wZW4iLAlDTURfT1BFTl9UREJ9LAorCXsiZXJhc2UiLAlDTURfRVJBU0V9LAorCXsiZHVtcCIsCUNNRF9EVU1QfSwKKwl7Imluc2VydCIsCUNNRF9JTlNFUlR9LAorCXsibW92ZSIsCUNNRF9NT1ZFfSwKKwl7InN0b3JlIiwJQ01EX1NUT1JFfSwKKwl7InNob3ciLAlDTURfU0hPV30sCisJeyJrZXlzIiwJQ01EX0tFWVN9LAorCXsiaGV4a2V5cyIsCUNNRF9IRVhLRVlTfSwKKwl7ImRlbGV0ZSIsCUNNRF9ERUxFVEV9LAorCXsibGlzdCIsCUNNRF9MSVNUX0hBU0hfRlJFRX0sCisJeyJmcmVlIiwJQ01EX0xJU1RfRlJFRX0sCisJeyJpbmZvIiwJQ01EX0lORk99LAorCXsiZmlyc3QiLAlDTURfRklSU1R9LAorCXsiMSIsCQlDTURfRklSU1R9LAorCXsibmV4dCIsCUNNRF9ORVhUfSwKKwl7Im4iLAkJQ01EX05FWFR9LAorCXsicXVpdCIsCUNNRF9RVUlUfSwKKwl7InEiLAkJQ01EX1FVSVR9LAorCXsiISIsCQlDTURfU1lTVEVNfSwKKwl7TlVMTCwJCUNNRF9IRUxQfQorfTsKKworLyogYSB0ZGIgdG9vbCBmb3IgbWFuaXB1bGF0aW5nIGEgdGRiIGRhdGFiYXNlICovCisKK3N0YXRpYyBUREJfQ09OVEVYVCAqdGRiOworCitzdGF0aWMgaW50IHByaW50X3JlYyhUREJfQ09OVEVYVCAqdGhlX3RkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCB2b2lkICpzdGF0ZSk7CitzdGF0aWMgaW50IHByaW50X2tleShUREJfQ09OVEVYVCAqdGhlX3RkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCB2b2lkICpzdGF0ZSk7CitzdGF0aWMgaW50IHByaW50X2hleGtleShUREJfQ09OVEVYVCAqdGhlX3RkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCB2b2lkICpzdGF0ZSk7CisKK3N0YXRpYyB2b2lkIHByaW50X2FzYyhjb25zdCBjaGFyICpidWYsaW50IGxlbikKK3sKKwlpbnQgaTsKKworCS8qIFdlJ3JlIHByb2JhYmx5IHByaW50aW5nIEFTQ0lJIHN0cmluZ3Mgc28gZG9uJ3QgdHJ5IHRvIGRpc3BsYXkKKwkgICB0aGUgdHJhaWxpbmcgTlVMTCBjaGFyYWN0ZXIuICovCisKKwlpZiAoYnVmW2xlbiAtIDFdID09IDApCisJICAgICAgICBsZW4tLTsKKworCWZvciAoaT0wO2k8bGVuO2krKykKKwkJcHJpbnRmKCIlYyIsaXNwcmludChidWZbaV0pP2J1ZltpXTonLicpOworfQorCitzdGF0aWMgdm9pZCBwcmludF9kYXRhKGNvbnN0IGNoYXIgKmJ1ZixpbnQgbGVuKQoreworCWludCBpPTA7CisJaWYgKGxlbjw9MCkgcmV0dXJuOworCXByaW50ZigiWyUwM1hdICIsaSk7CisJZm9yIChpPTA7aTxsZW47KSB7CisJCXByaW50ZigiJTAyWCAiLChpbnQpYnVmW2ldKTsKKwkJaSsrOworCQlpZiAoaSU4ID09IDApIHByaW50ZigiICIpOworCQlpZiAoaSUxNiA9PSAwKSB7CisJCQlwcmludF9hc2MoJmJ1ZltpLTE2XSw4KTsgcHJpbnRmKCIgIik7CisJCQlwcmludF9hc2MoJmJ1ZltpLThdLDgpOyBwcmludGYoIlxuIik7CisJCQlpZiAoaTxsZW4pIHByaW50ZigiWyUwM1hdICIsaSk7CisJCX0KKwl9CisJaWYgKGklMTYpIHsKKwkJaW50IG47CisKKwkJbiA9IDE2IC0gKGklMTYpOworCQlwcmludGYoIiAiKTsKKwkJaWYgKG4+OCkgcHJpbnRmKCIgIik7CisJCXdoaWxlIChuLS0pIHByaW50ZigiICAgIik7CisKKwkJbiA9IGklMTY7CisJCWlmIChuID4gOCkgbiA9IDg7CisJCXByaW50X2FzYygmYnVmW2ktKGklMTYpXSxuKTsgcHJpbnRmKCIgIik7CisJCW4gPSAoaSUxNikgLSBuOworCQlpZiAobj4wKSBwcmludF9hc2MoJmJ1ZltpLW5dLG4pOworCQlwcmludGYoIlxuIik7CisJfQorfQorCitzdGF0aWMgdm9pZCBoZWxwKHZvaWQpCit7CisJcHJpbnRmKCJcbiIKKyJ0ZGJ0b29sOiBcbiIKKyIgIGNyZWF0ZSAgICBkYm5hbWUgICAgIDogY3JlYXRlIGEgZGF0YWJhc2VcbiIKKyIgIG9wZW4gICAgICBkYm5hbWUgICAgIDogb3BlbiBhbiBleGlzdGluZyBkYXRhYmFzZVxuIgorIiAgZXJhc2UgICAgICAgICAgICAgICAgOiBlcmFzZSB0aGUgZGF0YWJhc2VcbiIKKyIgIGR1bXAgICAgICAgICAgICAgICAgIDogZHVtcCB0aGUgZGF0YWJhc2UgYXMgc3RyaW5nc1xuIgorIiAga2V5cyAgICAgICAgICAgICAgICAgOiBkdW1wIHRoZSBkYXRhYmFzZSBrZXlzIGFzIHN0cmluZ3NcbiIKKyIgIGhleGtleXMgICAgICAgICAgICAgIDogZHVtcCB0aGUgZGF0YWJhc2Uga2V5cyBhcyBoZXggdmFsdWVzXG4iCisiICBpbmZvICAgICAgICAgICAgICAgICA6IHByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgZGF0YWJhc2VcbiIKKyIgIGluc2VydCAgICBrZXkgIGRhdGEgIDogaW5zZXJ0IGEgcmVjb3JkXG4iCisiICBtb3ZlICAgICAga2V5ICBmaWxlICA6IG1vdmUgYSByZWNvcmQgdG8gYSBkZXN0aW5hdGlvbiB0ZGJcbiIKKyIgIHN0b3JlICAgICBrZXkgIGRhdGEgIDogc3RvcmUgYSByZWNvcmQgKHJlcGxhY2UpXG4iCisiICBzaG93ICAgICAga2V5ICAgICAgICA6IHNob3cgYSByZWNvcmQgYnkga2V5XG4iCisiICBkZWxldGUgICAga2V5ICAgICAgICA6IGRlbGV0ZSBhIHJlY29yZCBieSBrZXlcbiIKKyIgIGxpc3QgICAgICAgICAgICAgICAgIDogcHJpbnQgdGhlIGRhdGFiYXNlIGhhc2ggdGFibGUgYW5kIGZyZWVsaXN0XG4iCisiICBmcmVlICAgICAgICAgICAgICAgICA6IHByaW50IHRoZSBkYXRhYmFzZSBmcmVlbGlzdFxuIgorIiAgISBjb21tYW5kICAgICAgICAgICAgOiBleGVjdXRlIHN5c3RlbSBjb21tYW5kXG4iCisiICAxIHwgZmlyc3QgICAgICAgICAgICA6IHByaW50IHRoZSBmaXJzdCByZWNvcmRcbiIKKyIgIG4gfCBuZXh0ICAgICAgICAgICAgIDogcHJpbnQgdGhlIG5leHQgcmVjb3JkXG4iCisiICBxIHwgcXVpdCAgICAgICAgICAgICA6IHRlcm1pbmF0ZVxuIgorIiAgXFxuICAgICAgICAgICAgICAgICAgIDogcmVwZWF0ICduZXh0JyBjb21tYW5kXG4iCisiXG4iKTsKK30KKworc3RhdGljIHZvaWQgdGVycm9yKGNvbnN0IGNoYXIgKndoeSkKK3sKKwlwcmludGYoIiVzXG4iLCB3aHkpOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfdGRiKGNvbnN0IGNoYXIgKnRkYm5hbWUpCit7CisJaWYgKHRkYikgdGRiX2Nsb3NlKHRkYik7CisJdGRiID0gdGRiX29wZW4odGRibmFtZSwgMCwgVERCX0NMRUFSX0lGX0ZJUlNULAorCQkgICAgICAgT19SRFdSIHwgT19DUkVBVCB8IE9fVFJVTkMsIDA2MDApOworCWlmICghdGRiKSB7CisJCXByaW50ZigiQ291bGQgbm90IGNyZWF0ZSAlczogJXNcbiIsIHRkYm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBvcGVuX3RkYihjb25zdCBjaGFyICp0ZGJuYW1lKQoreworCWlmICh0ZGIpIHRkYl9jbG9zZSh0ZGIpOworCXRkYiA9IHRkYl9vcGVuKHRkYm5hbWUsIDAsIDAsIE9fUkRXUiwgMDYwMCk7CisJaWYgKCF0ZGIpIHsKKwkJcHJpbnRmKCJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIHRkYm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBpbnNlcnRfdGRiKGNoYXIgKmtleW5hbWUsIHNpemVfdCBrZXlsZW4sIGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhbGVuKQoreworCVREQl9EQVRBIGtleSwgZGJ1ZjsKKworCWlmICgoa2V5bmFtZSA9PSBOVUxMKSB8fCAoa2V5bGVuID09IDApKSB7CisJCXRlcnJvcigibmVlZCBrZXkiKTsKKwkJcmV0dXJuOworCX0KKworCWtleS5kcHRyID0gKHVuc2lnbmVkIGNoYXIgKilrZXluYW1lOworCWtleS5kc2l6ZSA9IGtleWxlbjsKKwlkYnVmLmRwdHIgPSAodW5zaWduZWQgY2hhciAqKWRhdGE7CisJZGJ1Zi5kc2l6ZSA9IGRhdGFsZW47CisKKwlpZiAodGRiX3N0b3JlKHRkYiwga2V5LCBkYnVmLCBUREJfSU5TRVJUKSA9PSAtMSkgeworCQl0ZXJyb3IoImluc2VydCBmYWlsZWQiKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHN0b3JlX3RkYihjaGFyICprZXluYW1lLCBzaXplX3Qga2V5bGVuLCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YWxlbikKK3sKKwlUREJfREFUQSBrZXksIGRidWY7CisKKwlpZiAoKGtleW5hbWUgPT0gTlVMTCkgfHwgKGtleWxlbiA9PSAwKSkgeworCQl0ZXJyb3IoIm5lZWQga2V5Iik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoKGRhdGEgPT0gTlVMTCkgfHwgKGRhdGFsZW4gPT0gMCkpIHsKKwkJdGVycm9yKCJuZWVkIGRhdGEiKTsKKwkJcmV0dXJuOworCX0KKworCWtleS5kcHRyID0gKHVuc2lnbmVkIGNoYXIgKilrZXluYW1lOworCWtleS5kc2l6ZSA9IGtleWxlbjsKKwlkYnVmLmRwdHIgPSAodW5zaWduZWQgY2hhciAqKWRhdGE7CisJZGJ1Zi5kc2l6ZSA9IGRhdGFsZW47CisKKwlwcmludGYoIlN0b3Jpbmcga2V5OlxuIik7CisJcHJpbnRfcmVjKHRkYiwga2V5LCBkYnVmLCBOVUxMKTsKKworCWlmICh0ZGJfc3RvcmUodGRiLCBrZXksIGRidWYsIFREQl9SRVBMQUNFKSA9PSAtMSkgeworCQl0ZXJyb3IoInN0b3JlIGZhaWxlZCIpOworCX0KK30KKworc3RhdGljIHZvaWQgc2hvd190ZGIoY2hhciAqa2V5bmFtZSwgc2l6ZV90IGtleWxlbikKK3sKKwlUREJfREFUQSBrZXksIGRidWY7CisKKwlpZiAoKGtleW5hbWUgPT0gTlVMTCkgfHwgKGtleWxlbiA9PSAwKSkgeworCQl0ZXJyb3IoIm5lZWQga2V5Iik7CisJCXJldHVybjsKKwl9CisKKwlrZXkuZHB0ciA9ICh1bnNpZ25lZCBjaGFyICopa2V5bmFtZTsKKwlrZXkuZHNpemUgPSBrZXlsZW47CisKKwlkYnVmID0gdGRiX2ZldGNoKHRkYiwga2V5KTsKKwlpZiAoIWRidWYuZHB0cikgeworCSAgICB0ZXJyb3IoImZldGNoIGZhaWxlZCIpOworCSAgICByZXR1cm47CisJfQorCisJcHJpbnRfcmVjKHRkYiwga2V5LCBkYnVmLCBOVUxMKTsKKworCWZyZWUoIGRidWYuZHB0ciApOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBkZWxldGVfdGRiKGNoYXIgKmtleW5hbWUsIHNpemVfdCBrZXlsZW4pCit7CisJVERCX0RBVEEga2V5OworCisJaWYgKChrZXluYW1lID09IE5VTEwpIHx8IChrZXlsZW4gPT0gMCkpIHsKKwkJdGVycm9yKCJuZWVkIGtleSIpOworCQlyZXR1cm47CisJfQorCisJa2V5LmRwdHIgPSAodW5zaWduZWQgY2hhciAqKWtleW5hbWU7CisJa2V5LmRzaXplID0ga2V5bGVuOworCisJaWYgKHRkYl9kZWxldGUodGRiLCBrZXkpICE9IDApIHsKKwkJdGVycm9yKCJkZWxldGUgZmFpbGVkIik7CisJfQorfQorCitzdGF0aWMgdm9pZCBtb3ZlX3JlYyhjaGFyICprZXluYW1lLCBzaXplX3Qga2V5bGVuLCBjaGFyKiB0ZGJuYW1lKQoreworCVREQl9EQVRBIGtleSwgZGJ1ZjsKKwlUREJfQ09OVEVYVCAqZHN0X3RkYjsKKworCWlmICgoa2V5bmFtZSA9PSBOVUxMKSB8fCAoa2V5bGVuID09IDApKSB7CisJCXRlcnJvcigibmVlZCBrZXkiKTsKKwkJcmV0dXJuOworCX0KKworCWlmICggIXRkYm5hbWUgKSB7CisJCXRlcnJvcigibmVlZCBkZXN0aW5hdGlvbiB0ZGIgbmFtZSIpOworCQlyZXR1cm47CisJfQorCisJa2V5LmRwdHIgPSAodW5zaWduZWQgY2hhciAqKWtleW5hbWU7CisJa2V5LmRzaXplID0ga2V5bGVuOworCisJZGJ1ZiA9IHRkYl9mZXRjaCh0ZGIsIGtleSk7CisJaWYgKCFkYnVmLmRwdHIpIHsKKwkJdGVycm9yKCJmZXRjaCBmYWlsZWQiKTsKKwkJcmV0dXJuOworCX0KKworCXByaW50X3JlYyh0ZGIsIGtleSwgZGJ1ZiwgTlVMTCk7CisKKwlkc3RfdGRiID0gdGRiX29wZW4odGRibmFtZSwgMCwgMCwgT19SRFdSLCAwNjAwKTsKKwlpZiAoICFkc3RfdGRiICkgeworCQl0ZXJyb3IoInVuYWJsZSB0byBvcGVuIGRlc3RpbmF0aW9uIHRkYiIpOworCQlyZXR1cm47CisJfQorCisJaWYgKCB0ZGJfc3RvcmUoIGRzdF90ZGIsIGtleSwgZGJ1ZiwgVERCX1JFUExBQ0UgKSA9PSAtMSApIHsKKwkJdGVycm9yKCJmYWlsZWQgdG8gbW92ZSByZWNvcmQiKTsKKwl9CisJZWxzZQorCQlwcmludGYoInJlY29yZCBtb3ZlZFxuIik7CisKKwl0ZGJfY2xvc2UoIGRzdF90ZGIgKTsKKworCXJldHVybjsKK30KKworc3RhdGljIGludCBwcmludF9yZWMoVERCX0NPTlRFWFQgKnRoZV90ZGIsIFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGJ1Ziwgdm9pZCAqc3RhdGUpCit7CisJcHJpbnRmKCJcbmtleSAlZCBieXRlc1xuIiwgKGludClrZXkuZHNpemUpOworCXByaW50X2FzYygoY29uc3QgY2hhciAqKWtleS5kcHRyLCBrZXkuZHNpemUpOworCXByaW50ZigiXG5kYXRhICVkIGJ5dGVzXG4iLCAoaW50KWRidWYuZHNpemUpOworCXByaW50X2RhdGEoKGNvbnN0IGNoYXIgKilkYnVmLmRwdHIsIGRidWYuZHNpemUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByaW50X2tleShUREJfQ09OVEVYVCAqdGhlX3RkYiwgVERCX0RBVEEga2V5LCBUREJfREFUQSBkYnVmLCB2b2lkICpzdGF0ZSkKK3sKKwlwcmludGYoImtleSAlZCBieXRlczogIiwgKGludClrZXkuZHNpemUpOworCXByaW50X2FzYygoY29uc3QgY2hhciAqKWtleS5kcHRyLCBrZXkuZHNpemUpOworCXByaW50ZigiXG4iKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBwcmludF9oZXhrZXkoVERCX0NPTlRFWFQgKnRoZV90ZGIsIFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGJ1Ziwgdm9pZCAqc3RhdGUpCit7CisJcHJpbnRmKCJrZXkgJWQgYnl0ZXNcbiIsIChpbnQpa2V5LmRzaXplKTsKKwlwcmludF9kYXRhKChjb25zdCBjaGFyICopa2V5LmRwdHIsIGtleS5kc2l6ZSk7CisJcHJpbnRmKCJcbiIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHRvdGFsX2J5dGVzOworCitzdGF0aWMgaW50IHRyYXZlcnNlX2ZuKFREQl9DT05URVhUICp0aGVfdGRiLCBUREJfREFUQSBrZXksIFREQl9EQVRBIGRidWYsIHZvaWQgKnN0YXRlKQoreworCXRvdGFsX2J5dGVzICs9IGRidWYuZHNpemU7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGluZm9fdGRiKHZvaWQpCit7CisJaW50IGNvdW50OworCXRvdGFsX2J5dGVzID0gMDsKKwlpZiAoKGNvdW50ID0gdGRiX3RyYXZlcnNlKHRkYiwgdHJhdmVyc2VfZm4sIE5VTEwpKSA9PSAtMSkKKwkJcHJpbnRmKCJFcnJvciA9ICVzXG4iLCB0ZGJfZXJyb3JzdHIodGRiKSk7CisJZWxzZQorCQlwcmludGYoIiVkIHJlY29yZHMgdG90YWxsaW5nICVkIGJ5dGVzXG4iLCBjb3VudCwgdG90YWxfYnl0ZXMpOworfQorCitzdGF0aWMgY2hhciAqdGRiX2dldGxpbmUoY29uc3QgY2hhciAqcHJvbXB0KQoreworCXN0YXRpYyBjaGFyIHRoaXNsaW5lWzEwMjRdOworCWNoYXIgKnA7CisJZnB1dHMocHJvbXB0LCBzdGRvdXQpOworCXRoaXNsaW5lWzBdID0gMDsKKwlwID0gZmdldHModGhpc2xpbmUsIHNpemVvZih0aGlzbGluZSktMSwgc3RkaW4pOworCWlmIChwKSBwID0gc3RyY2hyKHAsICdcbicpOworCWlmIChwKSAqcCA9IDA7CisJcmV0dXJuIHA/dGhpc2xpbmU6TlVMTDsKK30KKworc3RhdGljIGludCBkb19kZWxldGVfZm4oVERCX0NPTlRFWFQgKnRoZV90ZGIsIFREQl9EQVRBIGtleSwgVERCX0RBVEEgZGJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnN0YXRlKQoreworICAgIHJldHVybiB0ZGJfZGVsZXRlKHRoZV90ZGIsIGtleSk7Cit9CisKK3N0YXRpYyB2b2lkIGZpcnN0X3JlY29yZChUREJfQ09OVEVYVCAqdGhlX3RkYiwgVERCX0RBVEEgKnBrZXkpCit7CisJVERCX0RBVEEgZGJ1ZjsKKwkqcGtleSA9IHRkYl9maXJzdGtleSh0aGVfdGRiKTsKKworCWRidWYgPSB0ZGJfZmV0Y2godGhlX3RkYiwgKnBrZXkpOworCWlmICghZGJ1Zi5kcHRyKSB0ZXJyb3IoImZldGNoIGZhaWxlZCIpOworCWVsc2UgeworCQlwcmludF9yZWModGhlX3RkYiwgKnBrZXksIGRidWYsIE5VTEwpOworCX0KK30KKworc3RhdGljIHZvaWQgbmV4dF9yZWNvcmQoVERCX0NPTlRFWFQgKnRoZV90ZGIsIFREQl9EQVRBICpwa2V5KQoreworCVREQl9EQVRBIGRidWY7CisJKnBrZXkgPSB0ZGJfbmV4dGtleSh0aGVfdGRiLCAqcGtleSk7CisKKwlkYnVmID0gdGRiX2ZldGNoKHRoZV90ZGIsICpwa2V5KTsKKwlpZiAoIWRidWYuZHB0cikKKwkJdGVycm9yKCJmZXRjaCBmYWlsZWQiKTsKKwllbHNlCisJCXByaW50X3JlYyh0aGVfdGRiLCAqcGtleSwgZGJ1ZiwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbnQgZG9fY29tbWFuZCh2b2lkKQoreworCUNPTU1BTkRfVEFCTEUgKmN0cCA9IGNtZF90YWJsZTsKKwllbnVtIGNvbW1hbmRzIG15Y21kID0gQ01EX0hFTFA7CisJaW50IGNtZF9sZW47CisKKwlpZiAoY21kbmFtZSAmJiBzdHJsZW4oY21kbmFtZSkgPT0gMCkgeworCSAgICBteWNtZCA9IENNRF9ORVhUOworCX0gZWxzZSB7CisJICAgIHdoaWxlIChjdHAtPm5hbWUpIHsKKwkJY21kX2xlbiA9IHN0cmxlbihjdHAtPm5hbWUpOworCQlpZiAoc3RybmNtcChjdHAtPm5hbWUsY21kbmFtZSxjbWRfbGVuKSA9PSAwKSB7CisJCQlteWNtZCA9IGN0cC0+Y21kOworCQkJYnJlYWs7CisJCX0KKwkJY3RwKys7CisJICAgIH0KKwl9CisKKwlzd2l0Y2ggKG15Y21kKSB7CisJY2FzZSBDTURfQ1JFQVRFX1REQjoKKyAgICAgICAgICAgIGJJdGVyYXRlID0gMDsKKyAgICAgICAgICAgIGNyZWF0ZV90ZGIoYXJnMSk7CisJICAgIHJldHVybiAwOworCWNhc2UgQ01EX09QRU5fVERCOgorICAgICAgICAgICAgYkl0ZXJhdGUgPSAwOworICAgICAgICAgICAgb3Blbl90ZGIoYXJnMSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKwljYXNlIENNRF9TWVNURU06CisJICAgIC8qIFNoZWxsIGNvbW1hbmQgKi8KKwkgICAgc3lzdGVtKGFyZzEpOworCSAgICByZXR1cm4gMDsKKwljYXNlIENNRF9RVUlUOgorCSAgICByZXR1cm4gMTsKKwlkZWZhdWx0OgorCSAgICAvKiBhbGwgdGhlIHJlc3QgcmVxdWlyZSBhIG9wZW4gZGF0YWJhc2UgKi8KKwkgICAgaWYgKCF0ZGIpIHsKKwkJYkl0ZXJhdGUgPSAwOworCQl0ZXJyb3IoImRhdGFiYXNlIG5vdCBvcGVuIik7CisJCWhlbHAoKTsKKwkJcmV0dXJuIDA7CisJICAgIH0KKwkgICAgc3dpdGNoIChteWNtZCkgeworCSAgICBjYXNlIENNRF9FUkFTRToKKwkJYkl0ZXJhdGUgPSAwOworCQl0ZGJfdHJhdmVyc2UodGRiLCBkb19kZWxldGVfZm4sIE5VTEwpOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfRFVNUDoKKwkJYkl0ZXJhdGUgPSAwOworCQl0ZGJfdHJhdmVyc2UodGRiLCBwcmludF9yZWMsIE5VTEwpOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfSU5TRVJUOgorCQliSXRlcmF0ZSA9IDA7CisJCWluc2VydF90ZGIoYXJnMSwgYXJnMWxlbixhcmcyLGFyZzJsZW4pOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfTU9WRToKKwkJYkl0ZXJhdGUgPSAwOworCQltb3ZlX3JlYyhhcmcxLGFyZzFsZW4sYXJnMik7CisJCXJldHVybiAwOworCSAgICBjYXNlIENNRF9TVE9SRToKKwkJYkl0ZXJhdGUgPSAwOworCQlzdG9yZV90ZGIoYXJnMSxhcmcxbGVuLGFyZzIsYXJnMmxlbik7CisJCXJldHVybiAwOworCSAgICBjYXNlIENNRF9TSE9XOgorCQliSXRlcmF0ZSA9IDA7CisJCXNob3dfdGRiKGFyZzEsIGFyZzFsZW4pOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfS0VZUzoKKwkJdGRiX3RyYXZlcnNlKHRkYiwgcHJpbnRfa2V5LCBOVUxMKTsKKwkJcmV0dXJuIDA7CisJICAgIGNhc2UgQ01EX0hFWEtFWVM6CisJCXRkYl90cmF2ZXJzZSh0ZGIsIHByaW50X2hleGtleSwgTlVMTCk7CisJCXJldHVybiAwOworCSAgICBjYXNlIENNRF9ERUxFVEU6CisJCWJJdGVyYXRlID0gMDsKKwkJZGVsZXRlX3RkYihhcmcxLGFyZzFsZW4pOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfTElTVF9IQVNIX0ZSRUU6CisJCXRkYl9kdW1wX2FsbCh0ZGIpOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfTElTVF9GUkVFOgorCQl0ZGJfcHJpbnRmcmVlbGlzdCh0ZGIpOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfSU5GTzoKKwkJaW5mb190ZGIoKTsKKwkJcmV0dXJuIDA7CisJICAgIGNhc2UgQ01EX0ZJUlNUOgorCQliSXRlcmF0ZSA9IDE7CisJCWZpcnN0X3JlY29yZCh0ZGIsICZpdGVyYXRlX2tidWYpOworCQlyZXR1cm4gMDsKKwkgICAgY2FzZSBDTURfTkVYVDoKKwkgICAgICAgaWYgKGJJdGVyYXRlKQorCQkgIG5leHRfcmVjb3JkKHRkYiwgJml0ZXJhdGVfa2J1Zik7CisJCXJldHVybiAwOworCSAgICBjYXNlIENNRF9IRUxQOgorCQloZWxwKCk7CisJCXJldHVybiAwOworICAgICAgICAgICAgY2FzZSBDTURfQ1JFQVRFX1REQjoKKyAgICAgICAgICAgIGNhc2UgQ01EX09QRU5fVERCOgorICAgICAgICAgICAgY2FzZSBDTURfU1lTVEVNOgorICAgICAgICAgICAgY2FzZSBDTURfUVVJVDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIHVuaGFuZGxlZCBjb21tYW5kcy4gIGNhc2VzIGluY2x1ZGVkIGhlcmUgdG8gYXZvaWQgY29tcGlsZXIKKyAgICAgICAgICAgICAgICAgKiB3YXJuaW5ncy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKwkgICAgfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgY2hhciAqY29udmVydF9zdHJpbmcoY2hhciAqaW5zdHJpbmcsIHNpemVfdCAqc2l6ZXApCit7CisgICAgc2l6ZV90IGxlbmd0aCA9IDA7CisgICAgY2hhciAqb3V0cCwgKmlucDsKKyAgICBjaGFyIHRlbXBbM107CisKKworICAgIG91dHAgPSBpbnAgPSBpbnN0cmluZzsKKworICAgIHdoaWxlICgqaW5wKSB7CisJaWYgKCppbnAgPT0gJ1xcJykgeworCSAgICBpbnArKzsKKwkgICAgaWYgKCppbnAgJiYgc3RyY2hyKCIwMTIzNDU2Nzg5YWJjZGVmQUJDREVGIiwoaW50KSppbnApKSB7CisJCXRlbXBbMF0gPSAqaW5wKys7CisJCXRlbXBbMV0gPSAnXDAnOworCQlpZiAoKmlucCAmJiBzdHJjaHIoIjAxMjM0NTY3ODlhYmNkZWZBQkNERUYiLChpbnQpKmlucCkpIHsKKwkJICAgIHRlbXBbMV0gPSAqaW5wKys7CisJCSAgICB0ZW1wWzJdID0gJ1wwJzsKKwkJfQorCQkqb3V0cCsrID0gKGNoYXIpc3RydG9sKChjb25zdCBjaGFyICopdGVtcCxOVUxMLDE2KTsKKwkgICAgfSBlbHNlIHsKKwkJKm91dHArKyA9ICppbnArKzsKKwkgICAgfQorCX0gZWxzZSB7CisJICAgICpvdXRwKysgPSAqaW5wKys7CisJfQorCWxlbmd0aCsrOworICAgIH0KKyAgICAqc2l6ZXAgPSBsZW5ndGg7CisgICAgcmV0dXJuIGluc3RyaW5nOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGNtZG5hbWUgPSAiIjsKKyAgICBhcmcxID0gTlVMTDsKKyAgICBhcmcxbGVuID0gMDsKKyAgICBhcmcyID0gTlVMTDsKKyAgICBhcmcybGVuID0gMDsKKworICAgIGlmIChhcmd2WzFdKSB7CisJY21kbmFtZSA9ICJvcGVuIjsKKwlhcmcxID0gYXJndlsxXTsKKyAgICAgICAgZG9fY29tbWFuZCgpOworCWNtZG5hbWUgPSAgIiI7CisJYXJnMSA9IE5VTEw7CisgICAgfQorCisgICAgc3dpdGNoIChhcmdjKSB7CisJY2FzZSAxOgorCWNhc2UgMjoKKwkgICAgLyogSW50ZXJhY3RpdmUgbW9kZSAqLworCSAgICB3aGlsZSAoKGNtZG5hbWUgPSB0ZGJfZ2V0bGluZSgidGRiPiAiKSkpIHsKKwkJYXJnMiA9IGFyZzEgPSBOVUxMOworCQlpZiAoKGFyZzEgPSBzdHJjaHIoKGNvbnN0IGNoYXIgKiljbWRuYW1lLCcgJykpICE9IE5VTEwpIHsKKwkJICAgIGFyZzErKzsKKwkJICAgIGFyZzIgPSBhcmcxOworCQkgICAgd2hpbGUgKCphcmcyKSB7CisJCQlpZiAoKmFyZzIgPT0gJyAnKSB7CisJCQkgICAgKmFyZzIrKyA9ICdcMCc7CisJCQkgICAgYnJlYWs7CisJCQl9CisJCQlpZiAoKCphcmcyKysgPT0gJ1xcJykgJiYgKCphcmcyID09ICcgJykpIHsKKwkJCSAgICBhcmcyKys7CisJCQl9CisJCSAgICB9CisJCX0KKwkJaWYgKGFyZzEpIGFyZzEgPSBjb252ZXJ0X3N0cmluZyhhcmcxLCZhcmcxbGVuKTsKKwkJaWYgKGFyZzIpIGFyZzIgPSBjb252ZXJ0X3N0cmluZyhhcmcyLCZhcmcybGVuKTsKKwkJaWYgKGRvX2NvbW1hbmQoKSkgYnJlYWs7CisJICAgIH0KKwkgICAgYnJlYWs7CisJY2FzZSA1OgorCSAgICBhcmcyID0gY29udmVydF9zdHJpbmcoYXJndls0XSwmYXJnMmxlbik7CisJY2FzZSA0OgorCSAgICBhcmcxID0gY29udmVydF9zdHJpbmcoYXJndlszXSwmYXJnMWxlbik7CisJY2FzZSAzOgorCSAgICBjbWRuYW1lID0gYXJndlsyXTsKKwlkZWZhdWx0OgorCSAgICBkb19jb21tYW5kKCk7CisJICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICh0ZGIpIHRkYl9jbG9zZSh0ZGIpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZXN0X2lvLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90ZXN0X2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjNTBkMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3Rlc3RfaW8uYwpAQCAtMCwwICsxLDU0OSBAQAorLyoKKyAqIHRlc3RfaW8uYyAtLS0gVGhpcyBpcyB0aGUgVGVzdCBJL08gaW50ZXJmYWNlLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1BSQ1RMX0gKKyNpbmNsdWRlIDxzeXMvcHJjdGwuaD4KKyNlbHNlCisjZGVmaW5lIFBSX0dFVF9EVU1QQUJMRSAzCisjZW5kaWYKKyNpZiAoIWRlZmluZWQoSEFWRV9QUkNUTCkgJiYgZGVmaW5lZChsaW51eCkpCisjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisvKgorICogRm9yIGNoZWNraW5nIHN0cnVjdHVyZSBtYWdpYyBudW1iZXJzLi4uCisgKi8KKworI2RlZmluZSBFWFQyX0NIRUNLX01BR0lDKHN0cnVjdCwgY29kZSkgXAorCSAgaWYgKChzdHJ1Y3QpLT5tYWdpYyAhPSAoY29kZSkpIHJldHVybiAoY29kZSkKKworc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhIHsKKwlpbnQJbWFnaWM7CisJaW9fY2hhbm5lbCByZWFsOworCWludCBmbGFnczsKKwlGSUxFICpvdXRmaWxlOworCXVuc2lnbmVkIGxvbmcgYmxvY2s7CisJaW50IHJlYWRfYWJvcnRfY291bnQsIHdyaXRlX2Fib3J0X2NvdW50OworCXZvaWQgKCpyZWFkX2JsaykodW5zaWduZWQgbG9uZyBibG9jaywgaW50IGNvdW50LCBlcnJjb2RlX3QgZXJyKTsKKwl2b2lkICgqd3JpdGVfYmxrKSh1bnNpZ25lZCBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpOworCXZvaWQgKCpzZXRfYmxrc2l6ZSkoaW50IGJsa3NpemUsIGVycmNvZGVfdCBlcnIpOworCXZvaWQgKCp3cml0ZV9ieXRlKSh1bnNpZ25lZCBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpOworCXZvaWQgKCpyZWFkX2JsazY0KSh1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycik7CisJdm9pZCAoKndyaXRlX2JsazY0KSh1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycik7Cit9OworCisvKgorICogVGhlc2UgZ2xvYmFsIHZhcmlhYmxlIGNhbiBiZSBzZXQgYnkgdGhlIHRlc3QgcHJvZ3JhbSBhcworICogbmVjZXNzYXJ5ICpiZWZvcmUqIGNhbGxpbmcgdGVzdF9vcGVuCisgKi8KK2lvX21hbmFnZXIgdGVzdF9pb19iYWNraW5nX21hbmFnZXIgPSAwOwordm9pZCAoKnRlc3RfaW9fY2JfcmVhZF9ibGspCisJKHVuc2lnbmVkIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycikgPSAwOwordm9pZCAoKnRlc3RfaW9fY2Jfd3JpdGVfYmxrKQorCSh1bnNpZ25lZCBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpID0gMDsKK3ZvaWQgKCp0ZXN0X2lvX2NiX3JlYWRfYmxrNjQpCisJKHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywgaW50IGNvdW50LCBlcnJjb2RlX3QgZXJyKSA9IDA7Cit2b2lkICgqdGVzdF9pb19jYl93cml0ZV9ibGs2NCkKKwkodW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpID0gMDsKK3ZvaWQgKCp0ZXN0X2lvX2NiX3NldF9ibGtzaXplKQorCShpbnQgYmxrc2l6ZSwgZXJyY29kZV90IGVycikgPSAwOwordm9pZCAoKnRlc3RfaW9fY2Jfd3JpdGVfYnl0ZSkKKwkodW5zaWduZWQgbG9uZyBibG9jaywgaW50IGNvdW50LCBlcnJjb2RlX3QgZXJyKSA9IDA7CisKKy8qCisgKiBUZXN0IGZsYWdzCisgKi8KKyNkZWZpbmUgVEVTVF9GTEFHX1JFQUQJCQkweDAxCisjZGVmaW5lIFRFU1RfRkxBR19XUklURQkJCTB4MDIKKyNkZWZpbmUgVEVTVF9GTEFHX1NFVF9CTEtTSVpFCQkweDA0CisjZGVmaW5lIFRFU1RfRkxBR19GTFVTSAkJCTB4MDgKKyNkZWZpbmUgVEVTVF9GTEFHX0RVTVAJCQkweDEwCisjZGVmaW5lIFRFU1RfRkxBR19TRVRfT1BUSU9OCQkweDIwCisjZGVmaW5lIFRFU1RfRkxBR19ESVNDQVJECQkweDQwCisjZGVmaW5lIFRFU1RfRkxBR19SRUFEQUhFQUQJCTB4ODAKKyNkZWZpbmUgVEVTVF9GTEFHX1pFUk9PVVQJCTB4MTAwCisKK3N0YXRpYyB2b2lkIHRlc3RfZHVtcF9ibG9jayhpb19jaGFubmVsIGNoYW5uZWwsCisJCQkgICAgc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhLAorCQkJICAgIHVuc2lnbmVkIGxvbmcgYmxvY2ssIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpjcDsKKwlGSUxFICpmID0gZGF0YS0+b3V0ZmlsZTsKKwlpbnQJaTsKKwl1bnNpZ25lZCBsb25nCWNrc3VtID0gMDsKKworCWZvciAoaT0wLCBjcCA9IGJ1ZjsgaSA8IGNoYW5uZWwtPmJsb2NrX3NpemU7IGkrKywgY3ArKykgeworCQlja3N1bSArPSAqY3A7CisJfQorCWZwcmludGYoZiwgIkNvbnRlbnRzIG9mIGJsb2NrICVsdSwgY2hlY2tzdW0gJTA4bHU6IFxuIiwgYmxvY2ssIGNrc3VtKTsKKwlmb3IgKGk9MCwgY3AgPSBidWY7IGkgPCBjaGFubmVsLT5ibG9ja19zaXplOyBpKyssIGNwKyspIHsKKwkJaWYgKChpICUgMTYpID09IDApCisJCQlmcHJpbnRmKGYsICIlMDR4OiAiLCBpKTsKKwkJZnByaW50ZihmLCAiJTAyeCVjIiwgKmNwLCAoKGkgJSAxNikgPT0gMTUpID8gJ1xuJyA6ICcgJyk7CisJfQorfQorCisvKgorICogRmx1c2ggZGF0YSBidWZmZXJzIHRvIGRpc2suCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9mbHVzaChpb19jaGFubmVsIGNoYW5uZWwpCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhCSpkYXRhOworCWVycmNvZGVfdAkJCXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKiljaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9mbHVzaChkYXRhLT5yZWFsKTsKKworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19GTFVTSCkKKwkJZnByaW50ZihkYXRhLT5vdXRmaWxlLCAiVGVzdF9pbzogZmx1c2goKSByZXR1cm5lZCAlc1xuIiwKKwkJCXJldHZhbCA/IGVycm9yX21lc3NhZ2UocmV0dmFsKSA6ICJPSyIpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHZvaWQgdGVzdF9hYm9ydChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgYmxvY2spCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhOworCUZJTEUgKmY7CisKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJZiA9IGRhdGEtPm91dGZpbGU7CisJdGVzdF9mbHVzaChjaGFubmVsKTsKKworCWZwcmludGYoZiwgIkFib3J0aW5nIGR1ZSB0byBJL08gdG8gYmxvY2sgJWx1XG4iLCBibG9jayk7CisJZmZsdXNoKGYpOworCWFib3J0KCk7Cit9CisKK3N0YXRpYyBjaGFyICpzYWZlX2dldGVudihjb25zdCBjaGFyICphcmcpCit7CisJaWYgKChnZXR1aWQoKSAhPSBnZXRldWlkKCkpIHx8IChnZXRnaWQoKSAhPSBnZXRlZ2lkKCkpKQorCQlyZXR1cm4gTlVMTDsKKyNpZiBIQVZFX1BSQ1RMCisJaWYgKHByY3RsKFBSX0dFVF9EVU1QQUJMRSwgMCwgMCwgMCwgMCkgPT0gMCkKKwkJcmV0dXJuIE5VTEw7CisjZWxzZQorI2lmIChkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKFNZU19wcmN0bCkpCisJaWYgKHN5c2NhbGwoU1lTX3ByY3RsLCBQUl9HRVRfRFVNUEFCTEUsIDAsIDAsIDAsIDApID09IDApCisJCXJldHVybiBOVUxMOworI2VuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TRUNVUkVfR0VURU5WKQorCXJldHVybiBzZWN1cmVfZ2V0ZW52KGFyZyk7CisjZWxpZiBkZWZpbmVkKEhBVkVfX19TRUNVUkVfR0VURU5WKQorCXJldHVybiBfX3NlY3VyZV9nZXRlbnYoYXJnKTsKKyNlbHNlCisJcmV0dXJuIGdldGVudihhcmcpOworI2VuZGlmCit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncywgaW9fY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlpb19jaGFubmVsCWlvID0gTlVMTDsKKwlzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKmRhdGEgPSBOVUxMOworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJKnZhbHVlOworCisJaWYgKG5hbWUgPT0gMCkKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX0RFVklDRV9OQU1FOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwpLCAmaW8pOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwltZW1zZXQoaW8sIDAsIHNpemVvZihzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwpKTsKKwlpby0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUw7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSksICZkYXRhKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisJaW8tPm1hbmFnZXIgPSB0ZXN0X2lvX21hbmFnZXI7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc3RybGVuKG5hbWUpKzEsICZpby0+bmFtZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJc3RyY3B5KGlvLT5uYW1lLCBuYW1lKTsKKwlpby0+cHJpdmF0ZV9kYXRhID0gZGF0YTsKKwlpby0+YmxvY2tfc2l6ZSA9IDEwMjQ7CisJaW8tPnJlYWRfZXJyb3IgPSAwOworCWlvLT53cml0ZV9lcnJvciA9IDA7CisJaW8tPnJlZmNvdW50ID0gMTsKKworCW1lbXNldChkYXRhLCAwLCBzaXplb2Yoc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhKSk7CisJZGF0YS0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTDsKKwlpZiAodGVzdF9pb19iYWNraW5nX21hbmFnZXIpIHsKKwkJcmV0dmFsID0gdGVzdF9pb19iYWNraW5nX21hbmFnZXItPm9wZW4obmFtZSwgZmxhZ3MsCisJCQkJCQkgICAgICAgJmRhdGEtPnJlYWwpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBjbGVhbnVwOworCX0gZWxzZSB7CisJCWRhdGEtPnJlYWwgPSAwOworCX0KKwlkYXRhLT5yZWFkX2JsayA9CXRlc3RfaW9fY2JfcmVhZF9ibGs7CisJZGF0YS0+d3JpdGVfYmxrID0JdGVzdF9pb19jYl93cml0ZV9ibGs7CisJZGF0YS0+c2V0X2Jsa3NpemUgPQl0ZXN0X2lvX2NiX3NldF9ibGtzaXplOworCWRhdGEtPndyaXRlX2J5dGUgPQl0ZXN0X2lvX2NiX3dyaXRlX2J5dGU7CisJZGF0YS0+cmVhZF9ibGs2NCA9CXRlc3RfaW9fY2JfcmVhZF9ibGs2NDsKKwlkYXRhLT53cml0ZV9ibGs2NCA9CXRlc3RfaW9fY2Jfd3JpdGVfYmxrNjQ7CisKKwlkYXRhLT5vdXRmaWxlID0gTlVMTDsKKwlpZiAoKHZhbHVlID0gc2FmZV9nZXRlbnYoIlRFU1RfSU9fTE9HRklMRSIpKSAhPSBOVUxMKQorCQlkYXRhLT5vdXRmaWxlID0gZm9wZW4odmFsdWUsICJ3Iik7CisJaWYgKCFkYXRhLT5vdXRmaWxlKQorCQlkYXRhLT5vdXRmaWxlID0gc3RkZXJyOworCisJZGF0YS0+ZmxhZ3MgPSAwOworCWlmICgodmFsdWUgPSBzYWZlX2dldGVudigiVEVTVF9JT19GTEFHUyIpKSAhPSBOVUxMKQorCQlkYXRhLT5mbGFncyA9IHN0cnRvdWwodmFsdWUsIE5VTEwsIDApOworCisJZGF0YS0+YmxvY2sgPSAwOworCWlmICgodmFsdWUgPSBzYWZlX2dldGVudigiVEVTVF9JT19CTE9DSyIpKSAhPSBOVUxMKQorCQlkYXRhLT5ibG9jayA9IHN0cnRvdWwodmFsdWUsIE5VTEwsIDApOworCisJZGF0YS0+cmVhZF9hYm9ydF9jb3VudCA9IDA7CisJaWYgKCh2YWx1ZSA9IHNhZmVfZ2V0ZW52KCJURVNUX0lPX1JFQURfQUJPUlQiKSkgIT0gTlVMTCkKKwkJZGF0YS0+cmVhZF9hYm9ydF9jb3VudCA9IHN0cnRvdWwodmFsdWUsIE5VTEwsIDApOworCisJZGF0YS0+d3JpdGVfYWJvcnRfY291bnQgPSAwOworCWlmICgodmFsdWUgPSBzYWZlX2dldGVudigiVEVTVF9JT19XUklURV9BQk9SVCIpKSAhPSBOVUxMKQorCQlkYXRhLT53cml0ZV9hYm9ydF9jb3VudCA9IHN0cnRvdWwodmFsdWUsIE5VTEwsIDApOworCisJaWYgKGRhdGEtPnJlYWwpCisJCWlvLT5hbGlnbiA9IGRhdGEtPnJlYWwtPmFsaWduOworCisJKmNoYW5uZWwgPSBpbzsKKwlyZXR1cm4gMDsKKworY2xlYW51cDoKKwlpZiAoaW8pCisJCWV4dDJmc19mcmVlX21lbSgmaW8pOworCWlmIChkYXRhKQorCQlleHQyZnNfZnJlZV9tZW0oJmRhdGEpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9jbG9zZShpb19jaGFubmVsIGNoYW5uZWwpCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVEVTVF9JT19DSEFOTkVMKTsKKworCWlmICgtLWNoYW5uZWwtPnJlZmNvdW50ID4gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9jbG9zZShkYXRhLT5yZWFsKTsKKworCWlmIChkYXRhLT5vdXRmaWxlICYmIGRhdGEtPm91dGZpbGUgIT0gc3RkZXJyKQorCQlmY2xvc2UoZGF0YS0+b3V0ZmlsZSk7CisKKwlleHQyZnNfZnJlZV9tZW0oJmNoYW5uZWwtPnByaXZhdGVfZGF0YSk7CisJaWYgKGNoYW5uZWwtPm5hbWUpCisJCWV4dDJmc19mcmVlX21lbSgmY2hhbm5lbC0+bmFtZSk7CisJZXh0MmZzX2ZyZWVfbWVtKCZjaGFubmVsKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3Rfc2V0X2Jsa3NpemUoaW9fY2hhbm5lbCBjaGFubmVsLCBpbnQgYmxrc2l6ZSkKK3sKKwlzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19URVNUX0lPX0NIQU5ORUwpOworCisJaWYgKGRhdGEtPnJlYWwpIHsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShkYXRhLT5yZWFsLCBibGtzaXplKTsKKwkJY2hhbm5lbC0+YWxpZ24gPSBkYXRhLT5yZWFsLT5hbGlnbjsKKwl9CisJaWYgKGRhdGEtPnNldF9ibGtzaXplKQorCQlkYXRhLT5zZXRfYmxrc2l6ZShibGtzaXplLCByZXR2YWwpOworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19TRVRfQkxLU0laRSkKKwkJZnByaW50ZihkYXRhLT5vdXRmaWxlLAorCQkJIlRlc3RfaW86IHNldF9ibGtzaXplKCVkKSByZXR1cm5lZCAlc1xuIiwKKwkJCWJsa3NpemUsIHJldHZhbCA/IGVycm9yX21lc3NhZ2UocmV0dmFsKSA6ICJPSyIpOworCWNoYW5uZWwtPmJsb2NrX3NpemUgPSBibGtzaXplOworCXJldHVybiByZXR2YWw7Cit9CisKKworc3RhdGljIGVycmNvZGVfdCB0ZXN0X3JlYWRfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCSAgICAgICBpbnQgY291bnQsIHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19URVNUX0lPX0NIQU5ORUwpOworCisJaWYgKGRhdGEtPnJlYWwpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGsoZGF0YS0+cmVhbCwgYmxvY2ssIGNvdW50LCBidWYpOworCWlmIChkYXRhLT5yZWFkX2JsaykKKwkJZGF0YS0+cmVhZF9ibGsoYmxvY2ssIGNvdW50LCByZXR2YWwpOworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19SRUFEKQorCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsCisJCQkiVGVzdF9pbzogcmVhZF9ibGsoJWx1LCAlZCkgcmV0dXJuZWQgJXNcbiIsCisJCQlibG9jaywgY291bnQsIHJldHZhbCA/IGVycm9yX21lc3NhZ2UocmV0dmFsKSA6ICJPSyIpOworCWlmIChkYXRhLT5ibG9jayAmJiBkYXRhLT5ibG9jayA9PSBibG9jaykgeworCQlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfRFVNUCkKKwkJCXRlc3RfZHVtcF9ibG9jayhjaGFubmVsLCBkYXRhLCBibG9jaywgYnVmKTsKKwkJaWYgKC0tZGF0YS0+cmVhZF9hYm9ydF9jb3VudCA9PSAwKQorCQkJdGVzdF9hYm9ydChjaGFubmVsLCBibG9jayk7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF93cml0ZV9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJICAgICAgIGludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGsoZGF0YS0+cmVhbCwgYmxvY2ssIGNvdW50LCBidWYpOworCWlmIChkYXRhLT53cml0ZV9ibGspCisJCWRhdGEtPndyaXRlX2JsayhibG9jaywgY291bnQsIHJldHZhbCk7CisJaWYgKGRhdGEtPmZsYWdzICYgVEVTVF9GTEFHX1dSSVRFKQorCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsCisJCQkiVGVzdF9pbzogd3JpdGVfYmxrKCVsdSwgJWQpIHJldHVybmVkICVzXG4iLAorCQkJYmxvY2ssIGNvdW50LCByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlpZiAoZGF0YS0+YmxvY2sgJiYgZGF0YS0+YmxvY2sgPT0gYmxvY2spIHsKKwkJaWYgKGRhdGEtPmZsYWdzICYgVEVTVF9GTEFHX0RVTVApCisJCQl0ZXN0X2R1bXBfYmxvY2soY2hhbm5lbCwgZGF0YSwgYmxvY2ssIGJ1Zik7CisJCWlmICgtLWRhdGEtPndyaXRlX2Fib3J0X2NvdW50ID09IDApCisJCQl0ZXN0X2Fib3J0KGNoYW5uZWwsIGJsb2NrKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCB0ZXN0X3JlYWRfYmxrNjQoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkgICAgICAgaW50IGNvdW50LCB2b2lkICpidWYpCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVEVTVF9JT19DSEFOTkVMKTsKKworCWlmIChkYXRhLT5yZWFsKQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZGF0YS0+cmVhbCwgYmxvY2ssIGNvdW50LCBidWYpOworCWlmIChkYXRhLT5yZWFkX2JsazY0KQorCQlkYXRhLT5yZWFkX2JsazY0KGJsb2NrLCBjb3VudCwgcmV0dmFsKTsKKwlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfUkVBRCkKKwkJZnByaW50ZihkYXRhLT5vdXRmaWxlLAorCQkJIlRlc3RfaW86IHJlYWRfYmxrNjQoJWxsdSwgJWQpIHJldHVybmVkICVzXG4iLAorCQkJYmxvY2ssIGNvdW50LCByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlpZiAoZGF0YS0+YmxvY2sgJiYgZGF0YS0+YmxvY2sgPT0gYmxvY2spIHsKKwkJaWYgKGRhdGEtPmZsYWdzICYgVEVTVF9GTEFHX0RVTVApCisJCQl0ZXN0X2R1bXBfYmxvY2soY2hhbm5lbCwgZGF0YSwgYmxvY2ssIGJ1Zik7CisJCWlmICgtLWRhdGEtPnJlYWRfYWJvcnRfY291bnQgPT0gMCkKKwkJCXRlc3RfYWJvcnQoY2hhbm5lbCwgYmxvY2spOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3Rfd3JpdGVfYmxrNjQoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkgICAgICAgaW50IGNvdW50LCBjb25zdCB2b2lkICpidWYpCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVEVTVF9JT19DSEFOTkVMKTsKKworCWlmIChkYXRhLT5yZWFsKQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGRhdGEtPnJlYWwsIGJsb2NrLCBjb3VudCwgYnVmKTsKKwlpZiAoZGF0YS0+d3JpdGVfYmxrNjQpCisJCWRhdGEtPndyaXRlX2JsazY0KGJsb2NrLCBjb3VudCwgcmV0dmFsKTsKKwlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfV1JJVEUpCisJCWZwcmludGYoZGF0YS0+b3V0ZmlsZSwKKwkJCSJUZXN0X2lvOiB3cml0ZV9ibGs2NCglbGx1LCAlZCkgcmV0dXJuZWQgJXNcbiIsCisJCQlibG9jaywgY291bnQsIHJldHZhbCA/IGVycm9yX21lc3NhZ2UocmV0dmFsKSA6ICJPSyIpOworCWlmIChkYXRhLT5ibG9jayAmJiBkYXRhLT5ibG9jayA9PSBibG9jaykgeworCQlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfRFVNUCkKKwkJCXRlc3RfZHVtcF9ibG9jayhjaGFubmVsLCBkYXRhLCBibG9jaywgYnVmKTsKKwkJaWYgKC0tZGF0YS0+d3JpdGVfYWJvcnRfY291bnQgPT0gMCkKKwkJCXRlc3RfYWJvcnQoY2hhbm5lbCwgYmxvY2spOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3Rfd3JpdGVfYnl0ZShpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LAorCQkJICAgICAgIGludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCAmJiBkYXRhLT5yZWFsLT5tYW5hZ2VyLT53cml0ZV9ieXRlKQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2J5dGUoZGF0YS0+cmVhbCwgb2Zmc2V0LCBjb3VudCwgYnVmKTsKKwlpZiAoZGF0YS0+d3JpdGVfYnl0ZSkKKwkJZGF0YS0+d3JpdGVfYnl0ZShvZmZzZXQsIGNvdW50LCByZXR2YWwpOworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19XUklURSkKKwkJZnByaW50ZihkYXRhLT5vdXRmaWxlLAorCQkJIlRlc3RfaW86IHdyaXRlX2J5dGUoJWx1LCAlZCkgcmV0dXJuZWQgJXNcbiIsCisJCQlvZmZzZXQsIGNvdW50LCByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3Rfc2V0X29wdGlvbihpb19jaGFubmVsIGNoYW5uZWwsIGNvbnN0IGNoYXIgKm9wdGlvbiwKKwkJCQkgY29uc3QgY2hhciAqYXJnKQoreworCXN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19TRVRfT1BUSU9OKQorCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsICJUZXN0X2lvOiBzZXRfb3B0aW9uKCVzLCAlcykgIiwKKwkJCW9wdGlvbiwgYXJnKTsKKwlpZiAoZGF0YS0+cmVhbCAmJiBkYXRhLT5yZWFsLT5tYW5hZ2VyLT5zZXRfb3B0aW9uKSB7CisJCXJldHZhbCA9IChkYXRhLT5yZWFsLT5tYW5hZ2VyLT5zZXRfb3B0aW9uKShkYXRhLT5yZWFsLAorCQkJCQkJCSAgIG9wdGlvbiwgYXJnKTsKKwkJaWYgKGRhdGEtPmZsYWdzICYgVEVTVF9GTEFHX1NFVF9PUFRJT04pCisJCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsICJyZXR1cm5lZCAlc1xuIiwKKwkJCQlyZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwl9IGVsc2UgeworCQlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfU0VUX09QVElPTikKKwkJCWZwcmludGYoZGF0YS0+b3V0ZmlsZSwgIm5vdCBpbXBsZW1lbnRlZFxuIik7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9nZXRfc3RhdHMoaW9fY2hhbm5lbCBjaGFubmVsLCBpb19zdGF0cyAqc3RhdHMpCit7CisJc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHRlc3RfcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVEVTVF9JT19DSEFOTkVMKTsKKworCWlmIChkYXRhLT5yZWFsICYmIGRhdGEtPnJlYWwtPm1hbmFnZXItPmdldF9zdGF0cykgeworCQlyZXR2YWwgPSAoZGF0YS0+cmVhbC0+bWFuYWdlci0+Z2V0X3N0YXRzKShkYXRhLT5yZWFsLCBzdGF0cyk7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdGVzdF9kaXNjYXJkKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCXN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9kaXNjYXJkKGRhdGEtPnJlYWwsIGJsb2NrLCBjb3VudCk7CisJaWYgKGRhdGEtPmZsYWdzICYgVEVTVF9GTEFHX0RJU0NBUkQpCisJCWZwcmludGYoZGF0YS0+b3V0ZmlsZSwKKwkJCSJUZXN0X2lvOiBkaXNjYXJkKCVsbHUsICVsbHUpIHJldHVybmVkICVzXG4iLAorCQkJYmxvY2ssIGNvdW50LCByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3RfY2FjaGVfcmVhZGFoZWFkKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCXN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB0ZXN0X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1RFU1RfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9jYWNoZV9yZWFkYWhlYWQoZGF0YS0+cmVhbCwgYmxvY2ssIGNvdW50KTsKKwlpZiAoZGF0YS0+ZmxhZ3MgJiBURVNUX0ZMQUdfUkVBREFIRUFEKQorCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsCisJCQkiVGVzdF9pbzogcmVhZGFoZWFkKCVsbHUsICVsbHUpIHJldHVybmVkICVzXG4iLAorCQkJYmxvY2ssIGNvdW50LCByZXR2YWwgPyBlcnJvcl9tZXNzYWdlKHJldHZhbCkgOiAiT0siKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHRlc3RfemVyb291dChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCkKK3sKKwlzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdGVzdF9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19URVNUX0lPX0NIQU5ORUwpOworCisJaWYgKGRhdGEtPnJlYWwpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfemVyb291dChkYXRhLT5yZWFsLCBibG9jaywgY291bnQpOworCWlmIChkYXRhLT5mbGFncyAmIFRFU1RfRkxBR19aRVJPT1VUKQorCQlmcHJpbnRmKGRhdGEtPm91dGZpbGUsCisJCQkiVGVzdF9pbzogemVyb291dCglbGx1LCAlbGx1KSByZXR1cm5lZCAlc1xuIiwKKwkJCWJsb2NrLCBjb3VudCwgcmV0dmFsID8gZXJyb3JfbWVzc2FnZShyZXR2YWwpIDogIk9LIik7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHN0cnVjdCBzdHJ1Y3RfaW9fbWFuYWdlciBzdHJ1Y3RfdGVzdF9tYW5hZ2VyID0geworCS5tYWdpYwkJPSBFWFQyX0VUX01BR0lDX0lPX01BTkFHRVIsCisJLm5hbWUJCT0gIlRlc3QgSS9PIE1hbmFnZXIiLAorCS5vcGVuCQk9IHRlc3Rfb3BlbiwKKwkuY2xvc2UJCT0gdGVzdF9jbG9zZSwKKwkuc2V0X2Jsa3NpemUJPSB0ZXN0X3NldF9ibGtzaXplLAorCS5yZWFkX2Jsawk9IHRlc3RfcmVhZF9ibGssCisJLndyaXRlX2Jsawk9IHRlc3Rfd3JpdGVfYmxrLAorCS5mbHVzaAkJPSB0ZXN0X2ZsdXNoLAorCS53cml0ZV9ieXRlCT0gdGVzdF93cml0ZV9ieXRlLAorCS5zZXRfb3B0aW9uCT0gdGVzdF9zZXRfb3B0aW9uLAorCS5nZXRfc3RhdHMJPSB0ZXN0X2dldF9zdGF0cywKKwkucmVhZF9ibGs2NAk9IHRlc3RfcmVhZF9ibGs2NCwKKwkud3JpdGVfYmxrNjQJPSB0ZXN0X3dyaXRlX2JsazY0LAorCS5kaXNjYXJkCT0gdGVzdF9kaXNjYXJkLAorCS5jYWNoZV9yZWFkYWhlYWQJPSB0ZXN0X2NhY2hlX3JlYWRhaGVhZCwKKwkuemVyb291dAk9IHRlc3RfemVyb291dCwKK307CisKK2lvX21hbmFnZXIgdGVzdF9pb19tYW5hZ2VyID0gJnN0cnVjdF90ZXN0X21hbmFnZXI7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfYmFkYmxvY2tzLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfYmFkYmxvY2tzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY4NWYzMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iYWRibG9ja3MuYwpAQCAtMCwwICsxLDM2MCBAQAorLyoKKyAqIFRoaXMgdGVzdGluZyBwcm9ncmFtIG1ha2VzIHN1cmUgdGhlIGJhZGJsb2NrcyBpbXBsZW1lbnRhdGlvbiB3b3Jrcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisjZGVmaW5lIEFERF9CTEsJMHgwMDAxCisjZGVmaW5lIERFTF9CTEsJMHgwMDAyCisKK2Jsa190IHRlc3QxW10gPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAwIH07CitibGtfdCB0ZXN0MltdID0geyAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDMsIDIsIDEsIDAgfTsKK2Jsa190IHRlc3QzW10gPSB7IDMsIDEsIDQsIDUsIDksIDIsIDcsIDEwLCA1LCA2LCAxMCwgOCwgMCB9OworYmxrX3QgdGVzdDRbXSA9IHsgMjAsIDUwLCAxMiwgMTcsIDEzLCAyLCA2NiwgMjMsIDU2LCAwIH07CitibGtfdCB0ZXN0NGFbXSA9IHsKKwkyMCwgMSwKKwk1MCwgMSwKKwkzLCAwLAorCTE3LCAxLAorCTE4LCAwLAorCTE2LCAwLAorCTExLCAwLAorCTEyLCAxLAorCTEzLCAxLAorCTE0LCAwLAorCTgwLCAwLAorCTQ1LCAwLAorCTY2LCAxLAorCTAgfTsKK2Jsa190IHRlc3Q1W10gPSB7IDMxLCAyMCwgMTcsIDUxLCAyMywgMSwgNTYsIDU3LCAwIH07CitibGtfdCB0ZXN0NWFbXSA9IHsKKwk1MCwgQUREX0JMSywKKwk1MSwgREVMX0JMSywKKwk1NywgREVMX0JMSywKKwk2NiwgQUREX0JMSywKKwkzMSwgREVMX0JMSywKKwkxMiwgQUREX0JMSywKKwkyLCBBRERfQkxLLAorCTEzLCBBRERfQkxLLAorCTEsIERFTF9CTEssCisJMAorCX07CisKKworc3RhdGljIGludCB0ZXN0X2ZhaWwgPSAwOworc3RhdGljIGludCB0ZXN0X2V4cGVjdGVkX2ZhaWwgPSAwOworCitzdGF0aWMgZXJyY29kZV90IGNyZWF0ZV90ZXN0X2xpc3QoYmxrX3QgKnZlYywgYmFkYmxvY2tzX2xpc3QgKnJldCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWJhZGJsb2Nrc19saXN0CWJiOworCWludAkJaTsKKworCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9jcmVhdGUoJmJiLCA1KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImNyZWF0ZV90ZXN0X2xpc3QiLCByZXR2YWwsICJ3aGlsZSBjcmVhdGluZyBsaXN0Iik7CisJCXJldHVybiByZXR2YWw7CisJfQorCWZvciAoaT0wOyB2ZWNbaV07IGkrKykgeworCQlyZXR2YWwgPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfYWRkKGJiLCB2ZWNbaV0pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJjcmVhdGVfdGVzdF9saXN0IiwgcmV0dmFsLAorCQkJCSJ3aGlsZSBhZGRpbmcgdGVzdCB2ZWN0b3IgJWQiLCBpKTsKKwkJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGJiKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwl9CisJKnJldCA9IGJiOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwcmludF9saXN0KGJhZGJsb2Nrc19saXN0IGJiLCBpbnQgdmVyaWZ5KQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmFkYmxvY2tzX2l0ZXJhdGUJaXRlcjsKKwlibGtfdAkJCWJsazsKKwlpbnQJCQlpLCBvazsKKworCXJldHZhbCA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2JlZ2luKGJiLCAmaXRlcik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJwcmludF9saXN0IiwgcmV0dmFsLCAid2hpbGUgc2V0dGluZyB1cCBpdGVyYXRvciIpOworCQlyZXR1cm47CisJfQorCW9rID0gaSA9IDE7CisJd2hpbGUgKGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKGl0ZXIsICZibGspKSB7CisJCXByaW50ZigiJXUgIiwgYmxrKTsKKwkJaWYgKGkrKyAhPSBibGspCisJCQlvayA9IDA7CisJfQorCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChpdGVyKTsKKwlpZiAodmVyaWZ5KSB7CisJCWlmIChvaykKKwkJCXByaW50ZigiLS0tIE9LIik7CisJCWVsc2UgeworCQkJcHJpbnRmKCItLS0gTk9UIE9LIik7CisJCQl0ZXN0X2ZhaWwrKzsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgdmFsaWRhdGVfdGVzdF9zZXEoYmFkYmxvY2tzX2xpc3QgYmIsIGJsa190ICp2ZWMpCit7CisJaW50CWksIG1hdGNoLCBvazsKKworCWZvciAoaSA9IDA7IHZlY1tpXTsgaSArPSAyKSB7CisJCW1hdGNoID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X3Rlc3QoYmIsIHZlY1tpXSk7CisJCWlmIChtYXRjaCA9PSB2ZWNbaSsxXSkKKwkJCW9rID0gMTsKKwkJZWxzZSB7CisJCQlvayA9IDA7CisJCQl0ZXN0X2ZhaWwrKzsKKwkJfQorCQlwcmludGYoIlx0YmxvY2sgJXUgaXMgJXMgLS0tICVzXG4iLCB2ZWNbaV0sCisJCSAgICAgICBtYXRjaCA/ICJwcmVzZW50IiA6ICJhYnNlbnQiLAorCQkgICAgICAgb2sgPyAiT0siIDogIk5PVCBPSyIpOworCX0KK30KKworc3RhdGljIHZvaWQgZG9fdGVzdF9zZXEoYmFkYmxvY2tzX2xpc3QgYmIsIGJsa190ICp2ZWMpCit7CisJaW50CWksIG1hdGNoOworCisJZm9yIChpID0gMDsgdmVjW2ldOyBpICs9IDIpIHsKKwkJc3dpdGNoICh2ZWNbaSsxXSkgeworCQljYXNlIEFERF9CTEs6CisJCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfYWRkKGJiLCB2ZWNbaV0pOworCQkJbWF0Y2ggPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfdGVzdChiYiwgdmVjW2ldKTsKKwkJCXByaW50ZigiQWRkaW5nIGJsb2NrICV1IC0tLSBub3cgJXNcbiIsIHZlY1tpXSwKKwkJCSAgICAgICBtYXRjaCA/ICJwcmVzZW50IiA6ICJhYnNlbnQiKTsKKwkJCWlmICghbWF0Y2gpIHsKKwkJCQlwcmludGYoIkZBSUxVUkUhXG4iKTsKKwkJCQl0ZXN0X2ZhaWwrKzsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIERFTF9CTEs6CisJCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfZGVsKGJiLCB2ZWNbaV0pOworCQkJbWF0Y2ggPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfdGVzdChiYiwgdmVjW2ldKTsKKwkJCXByaW50ZigiUmVtb3ZpbmcgYmxvY2sgJXUgLS0tIG5vdyAlc1xuIiwgdmVjW2ldLAorCQkJICAgICAgIGV4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0KGJiLCB2ZWNbaV0pID8KKwkJCSAgICAgICAicHJlc2VudCIgOiAiYWJzZW50Iik7CisJCQlpZiAobWF0Y2gpIHsKKwkJCQlwcmludGYoIkZBSUxVUkUhXG4iKTsKKwkJCQl0ZXN0X2ZhaWwrKzsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQorfQorCisKK2ludCBmaWxlX3Rlc3QoYmFkYmxvY2tzX2xpc3QgYmIpCit7CisJYmFkYmxvY2tzX2xpc3QgbmV3X2JiID0gMDsKKwllcnJjb2RlX3QJcmV0dmFsOworCUZJTEUJKmY7CisKKwlmID0gdG1wZmlsZSgpOworCWlmICghZikgeworCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgdGVtcCBmaWxlOiAlc1xuIiwKKwkJCWVycm9yX21lc3NhZ2UoZXJybm8pKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHZhbCA9IGV4dDJmc193cml0ZV9iYl9GSUxFKGJiLCAwLCBmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImZpbGVfdGVzdCIsIHJldHZhbCwgIndoaWxlIHdyaXRpbmcgYmFkIGJsb2NrcyIpOworCQlyZXR1cm4gMTsKKwl9CisKKwlyZXdpbmQoZik7CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmJfRklMRTIoMCwgZiwgJm5ld19iYiwgMCwgMCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJmaWxlX3Rlc3QiLCByZXR2YWwsICJ3aGlsZSByZWFkaW5nIGJhZCBibG9ja3MiKTsKKwkJcmV0dXJuIDE7CisJfQorCWZjbG9zZShmKTsKKworCWlmIChleHQyZnNfYmFkYmxvY2tzX2VxdWFsKGJiLCBuZXdfYmIpKSB7CisJCXByaW50ZigiQmxvY2sgYml0bWFwIG1hdGNoZWQgYWZ0ZXIgcmVhZGluZyBhbmQgd3JpdGluZy5cbiIpOworCX0gZWxzZSB7CisJCXByaW50ZigiQmxvY2sgYml0bWFwIE5PVCBtYXRjaGVkLlxuIik7CisJCXRlc3RfZmFpbCsrOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaW52YWxpZF9wcm9jKGV4dDJfZmlsc3lzIGZzLCBibGtfdCBibGspCit7CisJaWYgKGJsayA9PSAzNDUwMCkgeworCQlwcmludGYoIkV4cGVjdGVkIGludmFsaWQgYmxvY2tcbiIpOworCQl0ZXN0X2V4cGVjdGVkX2ZhaWwrKzsKKwl9IGVsc2UgeworCQlwcmludGYoIkludmFsaWQgYmxvY2sgIzogJXVcbiIsIGJsayk7CisJCXRlc3RfZmFpbCsrOworCX0KK30KKworaW50IGZpbGVfdGVzdF9pbnZhbGlkKGJhZGJsb2Nrc19saXN0IGJiKQoreworCWJhZGJsb2Nrc19saXN0IG5ld19iYiA9IDA7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2ZpbHN5cyAJZnM7CisJRklMRQkqZjsKKworCWZzID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3RydWN0X2V4dDJfZmlsc3lzKSk7CisJbWVtc2V0KGZzLCAwLCBzaXplb2Yoc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cykpOworCWZzLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfRVhUMkZTX0ZJTFNZUzsKKwlmcy0+c3VwZXIgPSBtYWxsb2MoU1VQRVJCTE9DS19TSVpFKTsKKwltZW1zZXQoZnMtPnN1cGVyLCAwLCBTVVBFUkJMT0NLX1NJWkUpOworCWZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrID0gMTsKKwlleHQyZnNfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsIDEwMCk7CisKKwlmID0gdG1wZmlsZSgpOworCWlmICghZikgeworCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIG9wZW5pbmcgdGVtcCBmaWxlOiAlc1xuIiwKKwkJCWVycm9yX21lc3NhZ2UoZXJybm8pKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHZhbCA9IGV4dDJmc193cml0ZV9iYl9GSUxFKGJiLCAwLCBmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImZpbGVfdGVzdCIsIHJldHZhbCwgIndoaWxlIHdyaXRpbmcgYmFkIGJsb2NrcyIpOworCQlyZXR1cm4gMTsKKwl9CisJZnByaW50ZihmLCAiMzQ1MDBcbiIpOworCisJcmV3aW5kKGYpOworCXRlc3RfZXhwZWN0ZWRfZmFpbCA9IDA7CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmJfRklMRShmcywgZiwgJm5ld19iYiwgaW52YWxpZF9wcm9jKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImZpbGVfdGVzdCIsIHJldHZhbCwgIndoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyIpOworCQlyZXR1cm4gMTsKKwl9CisJZmNsb3NlKGYpOworCWlmICghdGVzdF9leHBlY3RlZF9mYWlsKSB7CisJCXByaW50ZigiRXhwZWN0ZWQgdGVzdCBmYWlsdXJlIGRpZG4ndCBoYXBwZW4hXG4iKTsKKwkJdGVzdF9mYWlsKys7CisJfQorCisKKwlpZiAoZXh0MmZzX2JhZGJsb2Nrc19lcXVhbChiYiwgbmV3X2JiKSkgeworCQlwcmludGYoIkJsb2NrIGJpdG1hcCBtYXRjaGVkIGFmdGVyIHJlYWRpbmcgYW5kIHdyaXRpbmcuXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoIkJsb2NrIGJpdG1hcCBOT1QgbWF0Y2hlZC5cbiIpOworCQl0ZXN0X2ZhaWwrKzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwliYWRibG9ja3NfbGlzdCBiYjEsIGJiMiwgYmIzLCBiYjQsIGJiNTsKKwlpbnQJZXF1YWw7CisJZXJyY29kZV90CXJldHZhbDsKKworCWFkZF9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisKKwliYjEgPSBiYjIgPSBiYjMgPSBiYjQgPSBiYjUgPSAwOworCisJcHJpbnRmKCJ0ZXN0MTogIik7CisJcmV0dmFsID0gY3JlYXRlX3Rlc3RfbGlzdCh0ZXN0MSwgJmJiMSk7CisJaWYgKHJldHZhbCA9PSAwKQorCQlwcmludF9saXN0KGJiMSwgMSk7CisJcHJpbnRmKCJcbiIpOworCisJcHJpbnRmKCJ0ZXN0MjogIik7CisJcmV0dmFsID0gY3JlYXRlX3Rlc3RfbGlzdCh0ZXN0MiwgJmJiMik7CisJaWYgKHJldHZhbCA9PSAwKQorCQlwcmludF9saXN0KGJiMiwgMSk7CisJcHJpbnRmKCJcbiIpOworCisJcHJpbnRmKCJ0ZXN0MzogIik7CisJcmV0dmFsID0gY3JlYXRlX3Rlc3RfbGlzdCh0ZXN0MywgJmJiMyk7CisJaWYgKHJldHZhbCA9PSAwKQorCQlwcmludF9saXN0KGJiMywgMSk7CisJcHJpbnRmKCJcbiIpOworCisJcHJpbnRmKCJ0ZXN0NDogIik7CisJcmV0dmFsID0gY3JlYXRlX3Rlc3RfbGlzdCh0ZXN0NCwgJmJiNCk7CisJaWYgKHJldHZhbCA9PSAwKSB7CisJCXByaW50X2xpc3QoYmI0LCAwKTsKKwkJcHJpbnRmKCJcbiIpOworCQl2YWxpZGF0ZV90ZXN0X3NlcShiYjQsIHRlc3Q0YSk7CisJfQorCXByaW50ZigiXG4iKTsKKworCXByaW50ZigidGVzdDU6ICIpOworCXJldHZhbCA9IGNyZWF0ZV90ZXN0X2xpc3QodGVzdDUsICZiYjUpOworCWlmIChyZXR2YWwgPT0gMCkgeworCQlwcmludF9saXN0KGJiNSwgMCk7CisJCXByaW50ZigiXG4iKTsKKwkJZG9fdGVzdF9zZXEoYmI1LCB0ZXN0NWEpOworCQlwcmludGYoIkFmdGVyIHRlc3Q1IHNlcXVlbmNlOiAiKTsKKwkJcHJpbnRfbGlzdChiYjUsIDApOworCQlwcmludGYoIlxuIik7CisJfQorCXByaW50ZigiXG4iKTsKKworCWlmIChiYjEgJiYgYmIyICYmIGJiMyAmJiBiYjQgJiYgYmI1KSB7CisJCXByaW50ZigiQ29tcGFyaXNvbiB0ZXN0czpcbiIpOworCQllcXVhbCA9IGV4dDJmc19iYWRibG9ja3NfZXF1YWwoYmIxLCBiYjIpOworCQlwcmludGYoImJiMSBhbmQgYmIyIGFyZSAlc2VxdWFsLlxuIiwgZXF1YWwgPyAiIiA6ICJOT1QgIik7CisJCWlmIChlcXVhbCkKKwkJCXRlc3RfZmFpbCsrOworCisJCWVxdWFsID0gZXh0MmZzX2JhZGJsb2Nrc19lcXVhbChiYjEsIGJiMyk7CisJCXByaW50ZigiYmIxIGFuZCBiYjMgYXJlICVzZXF1YWwuXG4iLCBlcXVhbCA/ICIiIDogIk5PVCAiKTsKKwkJaWYgKCFlcXVhbCkKKwkJCXRlc3RfZmFpbCsrOworCisJCWVxdWFsID0gZXh0MmZzX2JhZGJsb2Nrc19lcXVhbChiYjEsIGJiNCk7CisJCXByaW50ZigiYmIxIGFuZCBiYjQgYXJlICVzZXF1YWwuXG4iLCBlcXVhbCA/ICIiIDogIk5PVCAiKTsKKwkJaWYgKGVxdWFsKQorCQkJdGVzdF9mYWlsKys7CisKKwkJZXF1YWwgPSBleHQyZnNfYmFkYmxvY2tzX2VxdWFsKGJiNCwgYmI1KTsKKwkJcHJpbnRmKCJiYjQgYW5kIGJiNSBhcmUgJXNlcXVhbC5cbiIsIGVxdWFsID8gIiIgOiAiTk9UICIpOworCQlpZiAoIWVxdWFsKQorCQkJdGVzdF9mYWlsKys7CisJCXByaW50ZigiXG4iKTsKKwl9CisKKwlmaWxlX3Rlc3QoYmI0KTsKKworCWZpbGVfdGVzdF9pbnZhbGlkKGJiNCk7CisKKwlpZiAodGVzdF9mYWlsID09IDApCisJCXByaW50ZigiZXh0MmZzIGxpYnJhcnkgYmFkYmxvY2tzIHRlc3RzIGNoZWNrcyBvdXQgT0shXG4iKTsKKworCWlmIChiYjEpCisJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGJiMSk7CisJaWYgKGJiMikKKwkJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2ZyZWUoYmIyKTsKKwlpZiAoYmIzKQorCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZShiYjMpOworCWlmIChiYjQpCisJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGJiNCk7CisKKwlyZXR1cm4gdGVzdF9mYWlsOworCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfYml0bWFwcy5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzRmYjdhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHMuYwpAQCAtMCwwICsxLDcxNCBAQAorLyoKKyAqIHRzdF9iaXRtYXBzLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSAic3Mvc3MuaCIKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnNQLmgiCisKK2V4dGVybiBzc19yZXF1ZXN0X3RhYmxlIHRzdF9iaXRtYXBzX2NtZHM7CisKK3N0YXRpYyBjaGFyIHN1YnN5c3RlbV9uYW1lW10gPSAidHN0X2JpdG1hcHMiOworc3RhdGljIGNoYXIgdmVyc2lvbltdID0gIjEuMCI7CisKK2V4dDJfZmlsc3lzCXRlc3RfZnM7CitpbnQJCWV4aXRfc3RhdHVzID0gMDsKKworc3RhdGljIGludCBzb3VyY2VfZmlsZShjb25zdCBjaGFyICpjbWRfZmlsZSwgaW50IHNjaV9pZHgpCit7CisJRklMRQkJKmY7CisJY2hhcgkJYnVmWzI1Nl07CisJY2hhcgkJKmNwOworCWludAkJcmV0dmFsOworCWludCAJCW5vZWNobzsKKworCWlmIChzdHJjbXAoY21kX2ZpbGUsICItIikgPT0gMCkKKwkJZiA9IHN0ZGluOworCWVsc2UgeworCQlmID0gZm9wZW4oY21kX2ZpbGUsICJyIik7CisJCWlmICghZikgeworCQkJcGVycm9yKGNtZF9maWxlKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJZmZsdXNoKHN0ZG91dCk7CisJZmZsdXNoKHN0ZGVycik7CisJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CisJc2V0YnVmKHN0ZGVyciwgTlVMTCk7CisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCWlmIChidWZbMF0gPT0gJyMnKQorCQkJY29udGludWU7CisJCW5vZWNobyA9IDA7CisJCWlmIChidWZbMF0gPT0gJy0nKSB7CisJCQlub2VjaG8gPSAxOworCQkJYnVmWzBdID0gJyAnOworCQl9CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xuJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xyJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCWlmICghbm9lY2hvKQorCQkJcHJpbnRmKCIlczogJXNcbiIsIHN1YnN5c3RlbV9uYW1lLCBidWYpOworCQlyZXR2YWwgPSBzc19leGVjdXRlX2xpbmUoc2NpX2lkeCwgYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgYnVmKTsKKwkJCWV4aXRfc3RhdHVzKys7CisJCX0KKwl9CisJcmV0dXJuIGV4aXRfc3RhdHVzOworfQorCisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlc2V0cyB0aGUgbGliYyBnZXRvcHQoKSBmdW5jdGlvbiwgd2hpY2gga2VlcHMKKyAqIGludGVybmFsIHN0YXRlLiAgQmFkIGRlc2lnbiEgIFN0dXBpZCBsaWJjIEFQSSBkZXNpZ25lcnMhICBObworICogYmlzY3VpdCEKKyAqCisgKiBCU0QtZGVyaXZlZCBnZXRvcHQoKSBmdW5jdGlvbnMgcmVxdWlyZSB0aGF0IG9wdGluZCBiZSByZXNldCB0byAxIGluCisgKiBvcmRlciB0byByZXNldCBnZXRvcHQoKSBzdGF0ZS4gIFRoaXMgdXNlZCB0byBiZSBnZW5lcmFsbHkgYWNjZXB0ZWQKKyAqIHdheSBvZiByZXNldHRpbmcgZ2V0b3B0KCkuICBIb3dldmVyLCBnbGliYydzIGdldG9wdCgpCisgKiBoYXMgYWRkaXRpb25hbCBnZXRvcHQoKSBzdGF0ZSBiZXlvbmQgb3B0aW5kLCBhbmQgcmVxdWlyZXMgdGhhdAorICogb3B0aW5kIGJlIHNldCB6ZXJvIHRvIHJlc2V0IGl0cyBzdGF0ZS4gIFNvIHRoZSB1bmZvcnR1bmF0ZSBzdGF0ZSBvZgorICogYWZmYWlycyBpcyB0aGF0IEJTRC1kZXJpdmVkIHZlcnNpb25zIG9mIGdldG9wdCgpIG1pc2JlaGF2ZSBpZgorICogb3B0aW5kIGlzIHNldCB0byAwIGluIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLCBhbmQgZ2xpYmMncyBnZXRvcHQoKQorICogd2lsbCBjb3JlIGR1bXAgaWYgb3B0aW5kIGlzIHNldCAxIGluIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLgorICoKKyAqIE1vcmUgbW9kZXJuIHZlcnNpb25zIG9mIEJTRCByZXF1aXJlIHRoYXQgb3B0cmVzZXQgYmUgc2V0IHRvIDEgaW4KKyAqIG9yZGVyIHRvIHJlc2V0IGdldG9wdCgpLiAgIFNpZ2guICBTdGFuZGFyZHMsIGFueW9uZT8KKyAqCisgKiBXZSBoaWRlIHRoZSBoYWlyIGhlcmUuCisgKi8KK3ZvaWQgcmVzZXRfZ2V0b3B0KHZvaWQpCit7CisjaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19saW51eF9fKQorCW9wdGluZCA9IDA7CisjZWxzZQorCW9wdGluZCA9IDE7CisjZW5kaWYKKyNpZmRlZiBIQVZFX09QVFJFU0VUCisJb3B0cmVzZXQgPSAxOwkJLyogTWFrZXMgQlNEIGdldG9wdCBoYXBweSAqLworI2VuZGlmCit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHN0cmluZyB0byBhbiB1bnNpZ25lZCBsb25nLCBwcmludGluZworICogYW4gZXJyb3IgbWVzc2FnZSBpZiBpdCBmYWlscywgYW5kIHJldHVybmluZyBzdWNjZXNzIG9yIGZhaWx1cmUgaW4gZXJyLgorICovCit1bnNpZ25lZCBsb25nIHBhcnNlX3Vsb25nKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqY21kLAorCQkJICBjb25zdCBjaGFyICpkZXNjciwgaW50ICplcnIpCit7CisJY2hhcgkJKnRtcDsKKwl1bnNpZ25lZCBsb25nCXJldDsKKworCXJldCA9IHN0cnRvdWwoc3RyLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCA9PSAwKSB7CisJCWlmIChlcnIpCisJCQkqZXJyID0gMDsKKwkJcmV0dXJuIHJldDsKKwl9CisJY29tX2VycihjbWQsIDAsICJCYWQgJXMgLSAlcyIsIGRlc2NyLCBzdHIpOworCWlmIChlcnIpCisJCSplcnIgPSAxOworCWVsc2UKKwkJZXhpdCgxKTsKKwlyZXR1cm4gMDsKK30KKworCitpbnQgY2hlY2tfZnNfb3BlbihjaGFyICpuYW1lKQoreworCWlmICghdGVzdF9mcykgeworCQljb21fZXJyKG5hbWUsIDAsICJGaWxlc3lzdGVtIG5vdCBvcGVuIik7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc2V0dXBfZmlsZXN5c3RlbShjb25zdCBjaGFyICpuYW1lLAorCQkJICAgICB1bnNpZ25lZCBpbnQgYmxvY2tzLCB1bnNpZ25lZCBpbnQgaW5vZGVzLAorCQkJICAgICB1bnNpZ25lZCBpbnQgdHlwZSwgaW50IGZsYWdzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHBhcmFtOworCWVycmNvZGVfdCByZXR2YWw7CisKKwltZW1zZXQoJnBhcmFtLCAwLCBzaXplb2YocGFyYW0pKTsKKwlleHQyZnNfYmxvY2tzX2NvdW50X3NldCgmcGFyYW0sIGJsb2Nrcyk7CisJcGFyYW0uc19pbm9kZXNfY291bnQgPSBpbm9kZXM7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5pdGlhbGl6ZSgidGVzdCBmcyIsIGZsYWdzLCAmcGFyYW0sCisJCQkJICAgdGVzdF9pb19tYW5hZ2VyLCAmdGVzdF9mcyk7CisKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCAid2hpbGUgaW5pdGlhbGl6aW5nIGZpbGVzeXN0ZW0iKTsKKwkJcmV0dXJuOworCX0KKwl0ZXN0X2ZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gdHlwZTsKKwlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAodGVzdF9mcy0+YmxvY2tfbWFwKTsKKwl0ZXN0X2ZzLT5ibG9ja19tYXAgPSAwOworCWV4dDJmc19mcmVlX2lub2RlX2JpdG1hcCh0ZXN0X2ZzLT5pbm9kZV9tYXApOworCXRlc3RfZnMtPmlub2RlX21hcCA9IDA7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcCh0ZXN0X2ZzLCAiYmxvY2sgYml0bWFwIiwKKwkJCQkJICAgICAgJnRlc3RfZnMtPmJsb2NrX21hcCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKG5hbWUsIHJldHZhbCwgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIik7CisJCWdvdG8gZXJyb3V0OworCX0KKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKHRlc3RfZnMsICJpbm9kZSBiaXRtYXAiLAorCQkJCQkgICAgICAmdGVzdF9mcy0+aW5vZGVfbWFwKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAiKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCXJldHVybjsKKworZXJyb3V0OgorCWV4dDJmc19jbG9zZV9mcmVlKCZ0ZXN0X2ZzKTsKK30KKwordm9pZCBzZXR1cF9jbWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAkJYywgZXJyOworCXVuc2lnbmVkIGludAlibG9ja3MgPSAxMjg7CisJdW5zaWduZWQgaW50CWlub2RlcyA9IDA7CisJdW5zaWduZWQgaW50CXR5cGUgPSBFWFQyRlNfQk1BUDY0X0JJVEFSUkFZOworCWludAkJZmxhZ3MgPSBFWFQyX0ZMQUdfNjRCSVRTOworCisJaWYgKHRlc3RfZnMpCisJCWV4dDJmc19jbG9zZV9mcmVlKCZ0ZXN0X2ZzKTsKKworCXJlc2V0X2dldG9wdCgpOworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYjppOmx0OiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2InOgorCQkJYmxvY2tzID0gcGFyc2VfdWxvbmcob3B0YXJnLCBhcmd2WzBdLAorCQkJCQkgICAgICJudW1iZXIgb2YgYmxvY2tzIiwgJmVycik7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybjsKKwkJCWJyZWFrOworCQljYXNlICdpJzoKKwkJCWlub2RlcyA9IHBhcnNlX3Vsb25nKG9wdGFyZywgYXJndlswXSwKKwkJCQkJICAgICAibnVtYmVyIG9mIGJsb2NrcyIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm47CisJCQlicmVhazsKKwkJY2FzZSAnbCc6CS8qIExlZ2FjeSBiaXRtYXBzICovCisJCQlmbGFncyA9IDA7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQl0eXBlID0gcGFyc2VfdWxvbmcob3B0YXJnLCBhcmd2WzBdLAorCQkJCQkgICAiYml0bWFwIGJhY2tlbmQgdHlwZSIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm47CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHVzYWdlOiBzZXR1cCBbLWIgYmxvY2tzXSAiCisJCQkJIlstaSBpbm9kZXNdIFstdCB0eXBlXVxuIiwgYXJndlswXSk7CisJCQlyZXR1cm47CisJCX0KKwl9CisJc2V0dXBfZmlsZXN5c3RlbShhcmd2WzBdLCBibG9ja3MsIGlub2RlcywgdHlwZSwgZmxhZ3MpOworfQorCit2b2lkIGNsb3NlX2NtZChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWV4dDJmc19jbG9zZV9mcmVlKCZ0ZXN0X2ZzKTsKK30KKworCit2b2lkIGR1bXBfYml0bWFwKGV4dDJmc19nZW5lcmljX2JpdG1hcCBibWFwLCB1bnNpZ25lZCBpbnQgc3RhcnQsIHVuc2lnbmVkIG51bSkKK3sKKwl1bnNpZ25lZCBjaGFyCSpidWY7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWksIGxlbiA9IChudW0gLSBzdGFydCArIDcpIC8gODsKKworCWJ1ZiA9IG1hbGxvYyhsZW4pOworCWlmICghYnVmKSB7CisJCWNvbV9lcnIoImR1bXBfYml0bWFwIiwgMCwgImNvdWxkbid0IGFsbG9jYXRlIGJ1ZmZlciIpOworCQlyZXR1cm47CisJfQorCW1lbXNldChidWYsIDAsIGxlbik7CisJcmV0dmFsID0gZXh0MmZzX2dldF9nZW5lcmljX2JtYXBfcmFuZ2UoYm1hcCwgKF9fdTY0KSBzdGFydCwgbnVtLCBidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZHVtcF9iaXRtYXAiLCByZXR2YWwsIAorCQkJIndoaWxlIGNhbGxpbmcgZXh0MmZzX2dlbmVyaWNfYm1hcF9yYW5nZSIpOworCQlmcmVlKGJ1Zik7CisJCXJldHVybjsKKwl9CisJZm9yIChpPTA7IGkgPCBsZW47IGkrKykKKwkJcHJpbnRmKCIlMDJ4IiwgYnVmW2ldKTsKKwlwcmludGYoIlxuIik7CisJcHJpbnRmKCJiaXRzIHNldDogJXVcbiIsIGV4dDJmc19iaXRjb3VudChidWYsIGxlbikpOworCWZyZWUoYnVmKTsKK30KKwordm9pZCBkdW1wX2lub2RlX2JpdG1hcF9jbWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlwcmludGYoImlub2RlIGJpdG1hcDogIik7CisJZHVtcF9iaXRtYXAodGVzdF9mcy0+aW5vZGVfbWFwLCAxLCB0ZXN0X2ZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpOworfQorCQordm9pZCBkdW1wX2Jsb2NrX2JpdG1hcF9jbWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlwcmludGYoImJsb2NrIGJpdG1hcDogIik7CisJZHVtcF9iaXRtYXAodGVzdF9mcy0+YmxvY2tfbWFwLCB0ZXN0X2ZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrLAorCQkgICAgdGVzdF9mcy0+c3VwZXItPnNfYmxvY2tzX2NvdW50KTsKK30KKwkKK3ZvaWQgZG9fc2V0YihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGludCBibG9jaywgbnVtOworCWludCBlcnI7CisJaW50IHRlc3RfcmVzdWx0LCBvcF9yZXN1bHQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMiAmJiBhcmdjICE9IDMpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IHNldGIgPGJsb2NrPiBbbnVtXSIpOworCQlyZXR1cm47CisJfQorCisJYmxvY2sgPSBwYXJzZV91bG9uZyhhcmd2WzFdLCBhcmd2WzBdLCAiYmxvY2siLCAmZXJyKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA9PSAzKSB7CisJCW51bSA9IHBhcnNlX3Vsb25nKGFyZ3ZbMl0sIGFyZ3ZbMF0sICJudW0iLCAmZXJyKTsKKwkJaWYgKGVycikKKwkJCXJldHVybjsKKworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKHRlc3RfZnMtPmJsb2NrX21hcCwKKwkJCQkJCWJsb2NrLCBudW0pOworCQlwcmludGYoIk1hcmtpbmcgYmxvY2tzICV1IHRvICV1XG4iLCBibG9jaywgYmxvY2sgKyBudW0gLSAxKTsKKwkJcmV0dXJuOworCX0KKworCXRlc3RfcmVzdWx0ID0gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMih0ZXN0X2ZzLT5ibG9ja19tYXAsIGJsb2NrKTsKKwlvcF9yZXN1bHQgPSBleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKHRlc3RfZnMtPmJsb2NrX21hcCwgYmxvY2spOworCXByaW50ZigiU2V0dGluZyBibG9jayAldSwgd2FzICVzIGJlZm9yZVxuIiwgYmxvY2ssIG9wX3Jlc3VsdCA/CisJICAgICAgICJzZXQiIDogImNsZWFyIik7CisJaWYgKCF0ZXN0X3Jlc3VsdCAhPSAhb3BfcmVzdWx0KQorCQljb21fZXJyKGFyZ3ZbMF0sIDAsICIqRVJST1IqIHRlc3RfcmVzdWx0IGRpZmZlcmVudCEgKCVkLCAlZCkiLAorCQkJdGVzdF9yZXN1bHQsIG9wX3Jlc3VsdCk7Cit9CisKK3ZvaWQgZG9fY2xlYXJiKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgaW50IGJsb2NrLCBudW07CisJaW50IGVycjsKKwlpbnQgdGVzdF9yZXN1bHQsIG9wX3Jlc3VsdDsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyAhPSAyICYmIGFyZ2MgIT0gMykgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogY2xlYXJiIDxibG9jaz4gW251bV0iKTsKKwkJcmV0dXJuOworCX0KKworCWJsb2NrID0gcGFyc2VfdWxvbmcoYXJndlsxXSwgYXJndlswXSwgImJsb2NrIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPT0gMykgeworCQludW0gPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAibnVtIiwgJmVycik7CisJCWlmIChlcnIpCisJCQlyZXR1cm47CisKKwkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKHRlc3RfZnMtPmJsb2NrX21hcCwKKwkJCQkJCWJsb2NrLCBudW0pOworCQlwcmludGYoIkNsZWFyaW5nIGJsb2NrcyAldSB0byAldVxuIiwgYmxvY2ssIGJsb2NrICsgbnVtIC0gMSk7CisJCXJldHVybjsKKwl9CisKKwl0ZXN0X3Jlc3VsdCA9IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIodGVzdF9mcy0+YmxvY2tfbWFwLCBibG9jayk7CisJb3BfcmVzdWx0ID0gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKHRlc3RfZnMtPmJsb2NrX21hcCwgYmxvY2spOworCXByaW50ZigiQ2xlYXJpbmcgYmxvY2sgJXUsIHdhcyAlcyBiZWZvcmVcbiIsIGJsb2NrLCBvcF9yZXN1bHQgPworCSAgICAgICAic2V0IiA6ICJjbGVhciIpOworCWlmICghdGVzdF9yZXN1bHQgIT0gIW9wX3Jlc3VsdCkKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiKkVSUk9SKiB0ZXN0X3Jlc3VsdCBkaWZmZXJlbnQhICglZCwgJWQpIiwKKwkJCXRlc3RfcmVzdWx0LCBvcF9yZXN1bHQpOworfQorCit2b2lkIGRvX3Rlc3RiKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgaW50IGJsb2NrLCBudW07CisJaW50IGVycjsKKwlpbnQgdGVzdF9yZXN1bHQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMiAmJiBhcmdjICE9IDMpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IHRlc3RiIDxibG9jaz4gW251bV0iKTsKKwkJcmV0dXJuOworCX0KKworCWJsb2NrID0gcGFyc2VfdWxvbmcoYXJndlsxXSwgYXJndlswXSwgImJsb2NrIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPT0gMykgeworCQludW0gPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAibnVtIiwgJmVycik7CisJCWlmIChlcnIpCisJCQlyZXR1cm47CisKKwkJdGVzdF9yZXN1bHQgPQorCQkJZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwX3JhbmdlMih0ZXN0X2ZzLT5ibG9ja19tYXAsCisJCQkJCQkJYmxvY2ssIG51bSk7CisJCXByaW50ZigiQmxvY2tzICV1IHRvICV1IGFyZSAlc2FsbCBjbGVhci5cbiIsCisJCSAgICAgICBibG9jaywgYmxvY2sgKyBudW0gLSAxLCB0ZXN0X3Jlc3VsdCA/ICIiIDogIk5PVCAiKTsKKwkJcmV0dXJuOworCX0KKworCXRlc3RfcmVzdWx0ID0gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMih0ZXN0X2ZzLT5ibG9ja19tYXAsIGJsb2NrKTsKKwlwcmludGYoIkJsb2NrICV1IGlzICVzXG4iLCBibG9jaywgdGVzdF9yZXN1bHQgPyAic2V0IiA6ICJjbGVhciIpOworfQorCit2b2lkIGRvX2ZmemIoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKKwlpbnQgZXJyOworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCBvdXQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMyAmJiBhcmdjICE9IDMpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IGZmemIgPHN0YXJ0PiA8ZW5kPiIpOworCQlyZXR1cm47CisJfQorCisJc3RhcnQgPSBwYXJzZV91bG9uZyhhcmd2WzFdLCBhcmd2WzBdLCAic3RhcnQiLCAmZXJyKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwllbmQgPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAiZW5kIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKHRlc3RfZnMtPmJsb2NrX21hcCwKKwkJCQkJCSAgICAgIHN0YXJ0LCBlbmQsICZvdXQpOworCWlmIChyZXR2YWwpIHsKKwkJcHJpbnRmKCJleHQyZnNfZmluZF9maXJzdF96ZXJvX2Jsb2NrX2JpdG1hcDIoKSByZXR1cm5lZCAlc1xuIiwKKwkJICAgICAgIGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJGaXJzdCB1bm1hcmtlZCBibG9jayBpcyAlbGx1XG4iLCBvdXQpOworfQorCit2b2lkIGRvX2Zmc2IoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKKwlpbnQgZXJyOworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCBvdXQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMyAmJiBhcmdjICE9IDMpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IGZmc2IgPHN0YXJ0PiA8ZW5kPiIpOworCQlyZXR1cm47CisJfQorCisJc3RhcnQgPSBwYXJzZV91bG9uZyhhcmd2WzFdLCBhcmd2WzBdLCAic3RhcnQiLCAmZXJyKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwllbmQgPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAiZW5kIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIodGVzdF9mcy0+YmxvY2tfbWFwLAorCQkJCQkJICAgICAgc3RhcnQsIGVuZCwgJm91dCk7CisJaWYgKHJldHZhbCkgeworCQlwcmludGYoImV4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKCkgcmV0dXJuZWQgJXNcbiIsCisJCSAgICAgICBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQlyZXR1cm47CisJfQorCXByaW50ZigiRmlyc3QgbWFya2VkIGJsb2NrIGlzICVsbHVcbiIsIG91dCk7Cit9CisKKwordm9pZCBkb196ZXJvYihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlwcmludGYoIkNsZWFyaW5nIGJsb2NrIGJpdG1hcC5cbiIpOworCWV4dDJmc19jbGVhcl9ibG9ja19iaXRtYXAodGVzdF9mcy0+YmxvY2tfbWFwKTsKK30KKwordm9pZCBkb19zZXRpKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgaW50IGlub2RlOworCWludCBlcnI7CisJaW50IHRlc3RfcmVzdWx0LCBvcF9yZXN1bHQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMikgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogc2V0aSA8aW5vZGU+Iik7CisJCXJldHVybjsKKwl9CisKKwlpbm9kZSA9IHBhcnNlX3Vsb25nKGFyZ3ZbMV0sIGFyZ3ZbMF0sICJpbm9kZSIsICZlcnIpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCXRlc3RfcmVzdWx0ID0gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMih0ZXN0X2ZzLT5pbm9kZV9tYXAsIGlub2RlKTsKKwlvcF9yZXN1bHQgPSBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKHRlc3RfZnMtPmlub2RlX21hcCwgaW5vZGUpOworCXByaW50ZigiU2V0dGluZyBpbm9kZSAldSwgd2FzICVzIGJlZm9yZVxuIiwgaW5vZGUsIG9wX3Jlc3VsdCA/CisJICAgICAgICJzZXQiIDogImNsZWFyIik7CisJaWYgKCF0ZXN0X3Jlc3VsdCAhPSAhb3BfcmVzdWx0KSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIipFUlJPUiogdGVzdF9yZXN1bHQgZGlmZmVyZW50ISAoJWQsICVkKSIsCisJCQl0ZXN0X3Jlc3VsdCwgb3BfcmVzdWx0KTsKKwkJZXhpdF9zdGF0dXMrKzsKKwl9Cit9CisKK3ZvaWQgZG9fY2xlYXJpKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgaW50IGlub2RlOworCWludCBlcnI7CisJaW50IHRlc3RfcmVzdWx0LCBvcF9yZXN1bHQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMikgeworCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogY2xlYXJiIDxpbm9kZT4iKTsKKwkJcmV0dXJuOworCX0KKworCWlub2RlID0gcGFyc2VfdWxvbmcoYXJndlsxXSwgYXJndlswXSwgImlub2RlIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJdGVzdF9yZXN1bHQgPSBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKHRlc3RfZnMtPmlub2RlX21hcCwgaW5vZGUpOworCW9wX3Jlc3VsdCA9IGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMih0ZXN0X2ZzLT5pbm9kZV9tYXAsIGlub2RlKTsKKwlwcmludGYoIkNsZWFyaW5nIGlub2RlICV1LCB3YXMgJXMgYmVmb3JlXG4iLCBpbm9kZSwgb3BfcmVzdWx0ID8KKwkgICAgICAgInNldCIgOiAiY2xlYXIiKTsKKwlpZiAoIXRlc3RfcmVzdWx0ICE9ICFvcF9yZXN1bHQpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiKkVSUk9SKiB0ZXN0X3Jlc3VsdCBkaWZmZXJlbnQhICglZCwgJWQpIiwKKwkJCXRlc3RfcmVzdWx0LCBvcF9yZXN1bHQpOworCQlleGl0X3N0YXR1cysrOworCX0KK30KKwordm9pZCBkb190ZXN0aShpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGludCBpbm9kZTsKKwlpbnQgZXJyOworCWludCB0ZXN0X3Jlc3VsdDsKKworCWlmIChjaGVja19mc19vcGVuKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyAhPSAyKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiB0ZXN0YiA8aW5vZGU+Iik7CisJCXJldHVybjsKKwl9CisKKwlpbm9kZSA9IHBhcnNlX3Vsb25nKGFyZ3ZbMV0sIGFyZ3ZbMF0sICJpbm9kZSIsICZlcnIpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCXRlc3RfcmVzdWx0ID0gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMih0ZXN0X2ZzLT5pbm9kZV9tYXAsIGlub2RlKTsKKwlwcmludGYoIklub2RlICV1IGlzICVzXG4iLCBpbm9kZSwgdGVzdF9yZXN1bHQgPyAic2V0IiA6ICJjbGVhciIpOworfQorCit2b2lkIGRvX2ZmemkoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwl1bnNpZ25lZCBpbnQgc3RhcnQsIGVuZDsKKwlpbnQgZXJyOworCWVycmNvZGVfdCByZXR2YWw7CisJZXh0Ml9pbm9fdCBvdXQ7CisKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgIT0gMyAmJiBhcmdjICE9IDMpIHsKKwkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IGZmemkgPHN0YXJ0PiA8ZW5kPiIpOworCQlyZXR1cm47CisJfQorCisJc3RhcnQgPSBwYXJzZV91bG9uZyhhcmd2WzFdLCBhcmd2WzBdLCAic3RhcnQiLCAmZXJyKTsKKwlpZiAoZXJyKQorCQlyZXR1cm47CisKKwllbmQgPSBwYXJzZV91bG9uZyhhcmd2WzJdLCBhcmd2WzBdLCAiZW5kIiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19pbm9kZV9iaXRtYXAyKHRlc3RfZnMtPmlub2RlX21hcCwKKwkJCQkJCSAgICAgIHN0YXJ0LCBlbmQsICZvdXQpOworCWlmIChyZXR2YWwpIHsKKwkJcHJpbnRmKCJleHQyZnNfZmluZF9maXJzdF96ZXJvX2lub2RlX2JpdG1hcDIoKSByZXR1cm5lZCAlc1xuIiwKKwkJICAgICAgIGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJGaXJzdCB1bm1hcmtlZCBpbm9kZSBpcyAldVxuIiwgb3V0KTsKK30KKwordm9pZCBkb19mZnNpKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJdW5zaWduZWQgaW50IHN0YXJ0LCBlbmQ7CisJaW50IGVycjsKKwllcnJjb2RlX3QgcmV0dmFsOworCWV4dDJfaW5vX3Qgb3V0OworCisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjICE9IDMgJiYgYXJnYyAhPSAzKSB7CisJCWNvbV9lcnIoYXJndlswXSwgMCwgIlVzYWdlOiBmZnNpIDxzdGFydD4gPGVuZD4iKTsKKwkJcmV0dXJuOworCX0KKworCXN0YXJ0ID0gcGFyc2VfdWxvbmcoYXJndlsxXSwgYXJndlswXSwgInN0YXJ0IiwgJmVycik7CisJaWYgKGVycikKKwkJcmV0dXJuOworCisJZW5kID0gcGFyc2VfdWxvbmcoYXJndlsyXSwgYXJndlswXSwgImVuZCIsICZlcnIpOworCWlmIChlcnIpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19maW5kX2ZpcnN0X3NldF9pbm9kZV9iaXRtYXAyKHRlc3RfZnMtPmlub2RlX21hcCwKKwkJCQkJCSAgICAgc3RhcnQsIGVuZCwgJm91dCk7CisJaWYgKHJldHZhbCkgeworCQlwcmludGYoImV4dDJmc19maW5kX2ZpcnN0X3NldF9pbm9kZV9iaXRtYXAyKCkgcmV0dXJuZWQgJXNcbiIsCisJCSAgICAgICBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQlyZXR1cm47CisJfQorCXByaW50ZigiRmlyc3QgbWFya2VkIGlub2RlIGlzICV1XG4iLCBvdXQpOworfQorCit2b2lkIGRvX3plcm9pKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaWYgKGNoZWNrX2ZzX29wZW4oYXJndlswXSkpCisJCXJldHVybjsKKworCXByaW50ZigiQ2xlYXJpbmcgaW5vZGUgYml0bWFwLlxuIik7CisJZXh0MmZzX2NsZWFyX2lub2RlX2JpdG1hcCh0ZXN0X2ZzLT5pbm9kZV9tYXApOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJdW5zaWduZWQgaW50CWJsb2NrcyA9IDEyODsKKwl1bnNpZ25lZCBpbnQJaW5vZGVzID0gMDsKKwl1bnNpZ25lZCBpbnQJdHlwZSA9IEVYVDJGU19CTUFQNjRfQklUQVJSQVk7CisJaW50CQljLCBlcnIsIGNvZGU7CisJY2hhcgkJKnJlcXVlc3QgPSAoY2hhciAqKU5VTEw7CisJY2hhcgkJKmNtZF9maWxlID0gMDsKKwlpbnQJCXNjaV9pZHg7CisJaW50CQlmbGFncyA9IEVYVDJfRkxBR182NEJJVFM7CisKKwlhZGRfZXJyb3JfdGFibGUoJmV0X3NzX2Vycm9yX3RhYmxlKTsKKwlhZGRfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImI6aTpsdDpSOmY6IikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnYic6CisJCQlibG9ja3MgPSBwYXJzZV91bG9uZyhvcHRhcmcsIGFyZ3ZbMF0sCisJCQkJCSAgICAgIm51bWJlciBvZiBibG9ja3MiLCAmZXJyKTsKKwkJCWlmIChlcnIpCisJCQkJZXhpdCgxKTsKKwkJCWJyZWFrOworCQljYXNlICdpJzoKKwkJCWlub2RlcyA9IHBhcnNlX3Vsb25nKG9wdGFyZywgYXJndlswXSwKKwkJCQkJICAgICAibnVtYmVyIG9mIGJsb2NrcyIsICZlcnIpOworCQkJaWYgKGVycikKKwkJCQlleGl0KDEpOworCQkJYnJlYWs7CisJCWNhc2UgJ2wnOgkvKiBMZWdhY3kgYml0bWFwcyAqLworCQkJZmxhZ3MgPSAwOworCQkJYnJlYWs7CisJCWNhc2UgJ3QnOgorCQkJdHlwZSA9IHBhcnNlX3Vsb25nKG9wdGFyZywgYXJndlswXSwKKwkJCQkJICAgImJpdG1hcCBiYWNrZW5kIHR5cGUiLCAmZXJyKTsKKwkJCWlmIChlcnIpCisJCQkJZXhpdCgxKTsKKwkJCWJyZWFrOworCQljYXNlICdSJzoKKwkJCXJlcXVlc3QgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQljbWRfZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6ICVzIFstUiByZXF1ZXN0XSAiCisJCQkJIlstZiBjbWRfZmlsZV0iLCBzdWJzeXN0ZW1fbmFtZSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJc2NpX2lkeCA9IHNzX2NyZWF0ZV9pbnZvY2F0aW9uKHN1YnN5c3RlbV9uYW1lLCB2ZXJzaW9uLAorCQkJCSAgICAgICAoY2hhciAqKU5VTEwsICZ0c3RfYml0bWFwc19jbWRzLCAmY29kZSk7CisJaWYgKGNvZGUpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIGNvZGUsICJjcmVhdGluZyBpbnZvY2F0aW9uIik7CisJCWV4aXQoMSk7CisJfQorCisJKHZvaWQpIHNzX2FkZF9yZXF1ZXN0X3RhYmxlIChzY2lfaWR4LCAmc3Nfc3RkX3JlcXVlc3RzLCAxLCAmY29kZSk7CisJaWYgKGNvZGUpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIGNvZGUsICJhZGRpbmcgc3RhbmRhcmQgcmVxdWVzdHMiKTsKKwkJZXhpdCAoMSk7CisJfQorCisJcHJpbnRmKCIlcyAlcy4gIFR5cGUgJz8nIGZvciBhIGxpc3Qgb2YgY29tbWFuZHMuXG5cbiIsCisJICAgICAgIHN1YnN5c3RlbV9uYW1lLCB2ZXJzaW9uKTsKKworCXNldHVwX2ZpbGVzeXN0ZW0oYXJndlswXSwgYmxvY2tzLCBpbm9kZXMsIHR5cGUsIGZsYWdzKTsKKworCWlmIChyZXF1ZXN0KSB7CisJCWNvZGUgPSBzc19leGVjdXRlX2xpbmUoc2NpX2lkeCwgcmVxdWVzdCk7CisJCWlmIChjb2RlKSB7CisJCQlzc19wZXJyb3Ioc2NpX2lkeCwgY29kZSwgcmVxdWVzdCk7CisJCQlleGl0X3N0YXR1cysrOworCQl9CisJfSBlbHNlIGlmIChjbWRfZmlsZSkgeworCQlleGl0X3N0YXR1cyA9IHNvdXJjZV9maWxlKGNtZF9maWxlLCBzY2lfaWR4KTsKKwl9IGVsc2UgeworCQlzc19saXN0ZW4oc2NpX2lkeCk7CisJfQorCisJZXhpdChleGl0X3N0YXR1cyk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRtYXBzX2NtZC5jdCBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRtYXBzX2NtZC5jdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2I3ZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHNfY21kLmN0CkBAIC0wLDAgKzEsNTEgQEAKK2NvbW1hbmRfdGFibGUgdHN0X2JpdG1hcHNfY21kczsKKworcmVxdWVzdCBzZXR1cF9jbWQsICJTZXR1cCBmaWxlIHN5c3RlbSIsCisJc2V0dXA7CisKK3JlcXVlc3QgY2xvc2VfY21kLCAiQ2xvc2UgZmlsZSBzeXN0ZW0iLAorCWNsb3NlOworCityZXF1ZXN0IGR1bXBfaW5vZGVfYml0bWFwX2NtZCwgIkR1bXAgdGhlIGlub2RlIGJpdG1hcCIsCisJZHVtcF9pbm9kZV9iaXRtYXAsIGR1bXBfaWI7CisKK3JlcXVlc3QgZHVtcF9ibG9ja19iaXRtYXBfY21kLCAiRHVtcCB0aGUgYmxvY2sgYml0bWFwIiwKKwlkdW1wX2Jsb2NrX2JpdG1hcCwgZHVtcF9iYjsKKworcmVxdWVzdCBkb19zZXRiLCAiU2V0IGJsb2NrIiwKKwlzZXRfYmxvY2ssIHNldGI7CisKK3JlcXVlc3QgZG9fY2xlYXJiLCAiQ2xlYXIgYmxvY2siLAorCWNsZWFyX2Jsb2NrLCBjbGVhcmI7CisKK3JlcXVlc3QgZG9fdGVzdGIsICJUZXN0IGJsb2NrIiwKKwl0ZXN0X2Jsb2NrLCB0ZXN0YjsKKworcmVxdWVzdCBkb19mZnpiLCAiRmluZCBmaXJzdCB6ZXJvIGJsb2NrIiwKKwlmaW5kX2ZpcnN0X3plcm9fYmxvY2ssIGZmemI7CisKK3JlcXVlc3QgZG9fZmZzYiwgIkZpbmQgZmlyc3Qgc2V0IGJsb2NrIiwKKwlmaW5kX2ZpcnN0X3NldF9ibG9jaywgZmZzYjsKKworcmVxdWVzdCBkb196ZXJvYiwgIkNsZWFyIGJsb2NrIGJpdG1hcCIsCisJY2xlYXJfYmxvY2tfYml0bWFwLCB6ZXJvYjsKKworcmVxdWVzdCBkb19zZXRpLCAiU2V0IGlub2RlIiwKKwlzZXRfaW5vZGUsIHNldGk7CisKK3JlcXVlc3QgZG9fY2xlYXJpLCAiQ2xlYXIgaW5vZGUiLAorCWNsZWFyX2lub2RlLCBjbGVhcmk7CisKK3JlcXVlc3QgZG9fdGVzdGksICJUZXN0IGlub2RlIiwKKwl0ZXN0X2lub2RlLCB0ZXN0aTsKKworcmVxdWVzdCBkb19mZnppLCAiRmluZCBmaXJzdCB6ZXJvIGlub2RlIiwKKwlmaW5kX2ZpcnN0X3plcm9faW5vZGUsIGZmemk7CisKK3JlcXVlc3QgZG9fZmZzaSwgIkZpbmQgZmlyc3Qgc2V0IGlub2RlIiwKKwlmaW5kX2ZpcnN0X3NldF9pbm9kZSwgZmZzaTsKKworcmVxdWVzdCBkb196ZXJvaSwgIkNsZWFyIGlub2RlIGJpdG1hcCIsCisJY2xlYXJfaW5vZGVfYml0bWFwLCB6ZXJvaTsKKworZW5kOwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHNfY21kcyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRtYXBzX2NtZHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ5MjU5MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRtYXBzX2NtZHMKQEAgLTAsMCArMSwxNDggQEAKK3NldGIgMTIKK3NldGIgMTIKK2NsZWFyYiAxMgorY2xlYXJiIDEyCitzZXRiIDEyCitzZXRiIDE0CitzZXRiIDE2Cit0ZXN0YiAxMwordGVzdGIgMTUKK3Rlc3RiIDEyCit0ZXN0YiAxNAorc2V0YiAxMworc2V0YiAxNQordGVzdGIgMTIKK3Rlc3RiIDExCit0ZXN0YiAxNQordGVzdGIgMTYKK2R1bXBfYmIKK2ZmemIgMTEgMTYKK2ZmemIgMTIgMTYKK2ZmemIgMTIgMjAKK2Zmc2IgMCAxMjcKK2Zmc2IgMSAxMjgKK2Zmc2IgMSAxMjcKK2Zmc2IgMSAxMAorZmZzYiAxIDExCitmZnNiIDEyIDEyCitmZnNiIDEzIDEyCitmZnNiIDEyIDE1CitjbGVhcmIgMTMKK2ZmemIgMTIgMjAKK2Zmc2IgMTMgMTgKK3NldGIgMTMKK2NsZWFyYiAxMiA3Cit0ZXN0YiAxMiA3CitzZXRiIDE1Cit0ZXN0YiAxMiA3CitjbGVhcmIgMTUKK3Rlc3RiIDEyIDcKK3NldGIgMTIgNworZHVtcF9iYgorc2V0aSAyCitzZXRpIDUKK3NldGkgNAorc2V0aSAzCitzZXRpIDQKK3NldGkgNQordGVzdGkgNgordGVzdGkgMQorZHVtcF9pYgorZmZ6aSAxIDYKK2ZmemkgMiA1CitmZnppIDIgNgorZmZzaSAwIDMxCitmZnNpIDEgMzMKK2Zmc2kgMSAzMgorZmZzaSAyIDMyCitmZnNpIDYgMzIKK2NsZWFyaSA0CitmZnppIDIgNgorZmZzaSA0IDMyCitmZnNpIDUgMzIKK3plcm9pCit0ZXN0aSA1CitzZXRpIDUKK3NldGkgNQorY2xlYXJpIDUKK2NsZWFyaSA1Cit0ZXN0aSAxNwordGVzdGkgNgordGVzdGkgNAorY2xlYXJiIDcgMTIKK2R1bXBfYmIKK3NldGIgMQorZHVtcF9iYgorc2V0YiAyCitkdW1wX2JiCitzZXRiIDMKK2R1bXBfYmIKK3NldGIgNAorZHVtcF9iYgorc2V0YiA1CitkdW1wX2JiCitzZXRiIDYKK2R1bXBfYmIKK3NldGIgNworZHVtcF9iYgorc2V0YiA4CitkdW1wX2JiCitzZXRiIDEwCitzZXRiIDEyCitzZXRiIDE0CitzZXRiIDE3CitzZXRiIDE5CitzZXRiIDI0CitzZXRiIDI2CitzZXRiIDI3CitzZXRiIDMwCitzZXRiIDMxCitzZXRiIDMyCitzZXRiIDM1CitzZXRiIDM5CitzZXRiIDQwCitzZXRiIDQ0CitzZXRiIDQ2CitzZXRiIDQ3CitzZXRiIDQ5CitzZXRiIDUxCitzZXRiIDUyCitjbGVhcmIgMgorY2xlYXJiIDMKK2NsZWFyYiA3CitkdW1wX2JiCitmZnNiIDE0IDEyNworZmZzYiAxNSAxMjcKK2Zmc2IgMzYgMTI3CitmZnNiIDMyIDEyNworZmZzYiA1MiAxMjcKK2Zmc2IgNTMgMTI3CitmZnNiIDQ2IDEyNworZmZzYiA0NSAxMjcKK2Zmc2IgNDEgMTI3CitmZnNiIDIwIDEyNworZmZzYiAxIDEyNworZmZzYiAyIDEyNworZmZzYiAzIDEyNworZmZzYiA0IDEyNworZmZzYiA1IDEyNworZmZzYiA2IDEyNworZmZzYiA3IDEyNworZmZzYiA4IDEyNworZmZ6YiAxIDEyNworZmZ6YiAyIDEyNworZmZ6YiAzIDEyNworZmZ6YiA0IDEyNworZmZ6YiA1IDEyNworZmZ6YiA2IDEyNworZmZ6YiA3IDEyNworZmZ6YiA4IDEyNworZmZ6YiA0NSAxMjcKK2ZmemIgNDYgMTI3CitmZnpiIDQ3IDEyNworZmZ6YiA0OCAxMjcKK2ZmemIgNDkgMTI3CitmZnpiIDUwIDEyNworZmZ6YiA1MSAxMjcKK3F1aXQKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHNfZXhwIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG1hcHNfZXhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMjI2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfYml0bWFwc19leHAKQEAgLTAsMCArMSwzMDkgQEAKK3RzdF9iaXRtYXBzIDEuMC4gIFR5cGUgJz8nIGZvciBhIGxpc3Qgb2YgY29tbWFuZHMuCisKK3RzdF9iaXRtYXBzOiBzZXRiIDEyCitTZXR0aW5nIGJsb2NrIDEyLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAxMgorU2V0dGluZyBibG9jayAxMiwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiBjbGVhcmIgMTIKK0NsZWFyaW5nIGJsb2NrIDEyLCB3YXMgc2V0IGJlZm9yZQordHN0X2JpdG1hcHM6IGNsZWFyYiAxMgorQ2xlYXJpbmcgYmxvY2sgMTIsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDEyCitTZXR0aW5nIGJsb2NrIDEyLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAxNAorU2V0dGluZyBibG9jayAxNCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgMTYKK1NldHRpbmcgYmxvY2sgMTYsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiB0ZXN0YiAxMworQmxvY2sgMTMgaXMgY2xlYXIKK3RzdF9iaXRtYXBzOiB0ZXN0YiAxNQorQmxvY2sgMTUgaXMgY2xlYXIKK3RzdF9iaXRtYXBzOiB0ZXN0YiAxMgorQmxvY2sgMTIgaXMgc2V0Cit0c3RfYml0bWFwczogdGVzdGIgMTQKK0Jsb2NrIDE0IGlzIHNldAordHN0X2JpdG1hcHM6IHNldGIgMTMKK1NldHRpbmcgYmxvY2sgMTMsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDE1CitTZXR0aW5nIGJsb2NrIDE1LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogdGVzdGIgMTIKK0Jsb2NrIDEyIGlzIHNldAordHN0X2JpdG1hcHM6IHRlc3RiIDExCitCbG9jayAxMSBpcyBjbGVhcgordHN0X2JpdG1hcHM6IHRlc3RiIDE1CitCbG9jayAxNSBpcyBzZXQKK3RzdF9iaXRtYXBzOiB0ZXN0YiAxNgorQmxvY2sgMTYgaXMgc2V0Cit0c3RfYml0bWFwczogZHVtcF9iYgorYmxvY2sgYml0bWFwOiAwMGY4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorYml0cyBzZXQ6IDUKK3RzdF9iaXRtYXBzOiBmZnpiIDExIDE2CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyAxMQordHN0X2JpdG1hcHM6IGZmemIgMTIgMTYKK2V4dDJmc19maW5kX2ZpcnN0X3plcm9fYmxvY2tfYml0bWFwMigpIHJldHVybmVkIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3RzdF9iaXRtYXBzOiBmZnpiIDEyIDIwCitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyAxNwordHN0X2JpdG1hcHM6IGZmc2IgMCAxMjcKK2V4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKCkgcmV0dXJuZWQgSW52YWxpZCBhcmd1bWVudAordHN0X2JpdG1hcHM6IGZmc2IgMSAxMjgKK2V4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKCkgcmV0dXJuZWQgSW52YWxpZCBhcmd1bWVudAordHN0X2JpdG1hcHM6IGZmc2IgMSAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyAxMgordHN0X2JpdG1hcHM6IGZmc2IgMSAxMAorZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIoKSByZXR1cm5lZCBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit0c3RfYml0bWFwczogZmZzYiAxIDExCitleHQyZnNfZmluZF9maXJzdF9zZXRfYmxvY2tfYml0bWFwMigpIHJldHVybmVkIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3RzdF9iaXRtYXBzOiBmZnNiIDEyIDEyCitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgMTIKK3RzdF9iaXRtYXBzOiBmZnNiIDEzIDEyCitleHQyZnNfZmluZF9maXJzdF9zZXRfYmxvY2tfYml0bWFwMigpIHJldHVybmVkIEludmFsaWQgYXJndW1lbnQKK3RzdF9iaXRtYXBzOiBmZnNiIDEyIDE1CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgMTIKK3RzdF9iaXRtYXBzOiBjbGVhcmIgMTMKK0NsZWFyaW5nIGJsb2NrIDEzLCB3YXMgc2V0IGJlZm9yZQordHN0X2JpdG1hcHM6IGZmemIgMTIgMjAKK0ZpcnN0IHVubWFya2VkIGJsb2NrIGlzIDEzCit0c3RfYml0bWFwczogZmZzYiAxMyAxOAorRmlyc3QgbWFya2VkIGJsb2NrIGlzIDE0Cit0c3RfYml0bWFwczogc2V0YiAxMworU2V0dGluZyBibG9jayAxMywgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IGNsZWFyYiAxMiA3CitDbGVhcmluZyBibG9ja3MgMTIgdG8gMTgKK3RzdF9iaXRtYXBzOiB0ZXN0YiAxMiA3CitCbG9ja3MgMTIgdG8gMTggYXJlIGFsbCBjbGVhci4KK3RzdF9iaXRtYXBzOiBzZXRiIDE1CitTZXR0aW5nIGJsb2NrIDE1LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogdGVzdGIgMTIgNworQmxvY2tzIDEyIHRvIDE4IGFyZSBOT1QgYWxsIGNsZWFyLgordHN0X2JpdG1hcHM6IGNsZWFyYiAxNQorQ2xlYXJpbmcgYmxvY2sgMTUsIHdhcyBzZXQgYmVmb3JlCit0c3RfYml0bWFwczogdGVzdGIgMTIgNworQmxvY2tzIDEyIHRvIDE4IGFyZSBhbGwgY2xlYXIuCit0c3RfYml0bWFwczogc2V0YiAxMiA3CitNYXJraW5nIGJsb2NrcyAxMiB0byAxOAordHN0X2JpdG1hcHM6IGR1bXBfYmIKK2Jsb2NrIGJpdG1hcDogMDBmODAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2JpdHMgc2V0OiA3Cit0c3RfYml0bWFwczogc2V0aSAyCitTZXR0aW5nIGlub2RlIDIsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRpIDUKK1NldHRpbmcgaW5vZGUgNSwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGkgNAorU2V0dGluZyBpbm9kZSA0LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0aSAzCitTZXR0aW5nIGlub2RlIDMsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRpIDQKK1NldHRpbmcgaW5vZGUgNCwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRpIDUKK1NldHRpbmcgaW5vZGUgNSwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiB0ZXN0aSA2CitJbm9kZSA2IGlzIGNsZWFyCit0c3RfYml0bWFwczogdGVzdGkgMQorSW5vZGUgMSBpcyBjbGVhcgordHN0X2JpdG1hcHM6IGR1bXBfaWIKK2lub2RlIGJpdG1hcDogMWUwMDAwMDAKK2JpdHMgc2V0OiA0Cit0c3RfYml0bWFwczogZmZ6aSAxIDYKK0ZpcnN0IHVubWFya2VkIGlub2RlIGlzIDEKK3RzdF9iaXRtYXBzOiBmZnppIDIgNQorZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19pbm9kZV9iaXRtYXAyKCkgcmV0dXJuZWQgTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQordHN0X2JpdG1hcHM6IGZmemkgMiA2CitGaXJzdCB1bm1hcmtlZCBpbm9kZSBpcyA2Cit0c3RfYml0bWFwczogZmZzaSAwIDMxCitleHQyZnNfZmluZF9maXJzdF9zZXRfaW5vZGVfYml0bWFwMigpIHJldHVybmVkIEludmFsaWQgYXJndW1lbnQKK3RzdF9iaXRtYXBzOiBmZnNpIDEgMzMKK2V4dDJmc19maW5kX2ZpcnN0X3NldF9pbm9kZV9iaXRtYXAyKCkgcmV0dXJuZWQgSW52YWxpZCBhcmd1bWVudAordHN0X2JpdG1hcHM6IGZmc2kgMSAzMgorRmlyc3QgbWFya2VkIGlub2RlIGlzIDIKK3RzdF9iaXRtYXBzOiBmZnNpIDIgMzIKK0ZpcnN0IG1hcmtlZCBpbm9kZSBpcyAyCit0c3RfYml0bWFwczogZmZzaSA2IDMyCitleHQyZnNfZmluZF9maXJzdF9zZXRfaW5vZGVfYml0bWFwMigpIHJldHVybmVkIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKK3RzdF9iaXRtYXBzOiBjbGVhcmkgNAorQ2xlYXJpbmcgaW5vZGUgNCwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiBmZnppIDIgNgorRmlyc3QgdW5tYXJrZWQgaW5vZGUgaXMgNAordHN0X2JpdG1hcHM6IGZmc2kgNCAzMgorRmlyc3QgbWFya2VkIGlub2RlIGlzIDUKK3RzdF9iaXRtYXBzOiBmZnNpIDUgMzIKK0ZpcnN0IG1hcmtlZCBpbm9kZSBpcyA1Cit0c3RfYml0bWFwczogemVyb2kKK0NsZWFyaW5nIGlub2RlIGJpdG1hcC4KK3RzdF9iaXRtYXBzOiB0ZXN0aSA1CitJbm9kZSA1IGlzIGNsZWFyCit0c3RfYml0bWFwczogc2V0aSA1CitTZXR0aW5nIGlub2RlIDUsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRpIDUKK1NldHRpbmcgaW5vZGUgNSwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiBjbGVhcmkgNQorQ2xlYXJpbmcgaW5vZGUgNSwgd2FzIHNldCBiZWZvcmUKK3RzdF9iaXRtYXBzOiBjbGVhcmkgNQorQ2xlYXJpbmcgaW5vZGUgNSwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHRlc3RpIDE3CitJbm9kZSAxNyBpcyBjbGVhcgordHN0X2JpdG1hcHM6IHRlc3RpIDYKK0lub2RlIDYgaXMgY2xlYXIKK3RzdF9iaXRtYXBzOiB0ZXN0aSA0CitJbm9kZSA0IGlzIGNsZWFyCit0c3RfYml0bWFwczogY2xlYXJiIDcgMTIKK0NsZWFyaW5nIGJsb2NrcyA3IHRvIDE4Cit0c3RfYml0bWFwczogZHVtcF9iYgorYmxvY2sgYml0bWFwOiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorYml0cyBzZXQ6IDAKK3RzdF9iaXRtYXBzOiBzZXRiIDEKK1NldHRpbmcgYmxvY2sgMSwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IGR1bXBfYmIKK2Jsb2NrIGJpdG1hcDogMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2JpdHMgc2V0OiAxCit0c3RfYml0bWFwczogc2V0YiAyCitTZXR0aW5nIGJsb2NrIDIsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBkdW1wX2JiCitibG9jayBiaXRtYXA6IDAzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitiaXRzIHNldDogMgordHN0X2JpdG1hcHM6IHNldGIgMworU2V0dGluZyBibG9jayAzLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogZHVtcF9iYgorYmxvY2sgYml0bWFwOiAwNzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorYml0cyBzZXQ6IDMKK3RzdF9iaXRtYXBzOiBzZXRiIDQKK1NldHRpbmcgYmxvY2sgNCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IGR1bXBfYmIKK2Jsb2NrIGJpdG1hcDogMGYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2JpdHMgc2V0OiA0Cit0c3RfYml0bWFwczogc2V0YiA1CitTZXR0aW5nIGJsb2NrIDUsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBkdW1wX2JiCitibG9jayBiaXRtYXA6IDFmMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitiaXRzIHNldDogNQordHN0X2JpdG1hcHM6IHNldGIgNgorU2V0dGluZyBibG9jayA2LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogZHVtcF9iYgorYmxvY2sgYml0bWFwOiAzZjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorYml0cyBzZXQ6IDYKK3RzdF9iaXRtYXBzOiBzZXRiIDcKK1NldHRpbmcgYmxvY2sgNywgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IGR1bXBfYmIKK2Jsb2NrIGJpdG1hcDogN2YwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKK2JpdHMgc2V0OiA3Cit0c3RfYml0bWFwczogc2V0YiA4CitTZXR0aW5nIGJsb2NrIDgsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBkdW1wX2JiCitibG9jayBiaXRtYXA6IGZmMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCitiaXRzIHNldDogOAordHN0X2JpdG1hcHM6IHNldGIgMTAKK1NldHRpbmcgYmxvY2sgMTAsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDEyCitTZXR0aW5nIGJsb2NrIDEyLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAxNAorU2V0dGluZyBibG9jayAxNCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgMTcKK1NldHRpbmcgYmxvY2sgMTcsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDE5CitTZXR0aW5nIGJsb2NrIDE5LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAyNAorU2V0dGluZyBibG9jayAyNCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgMjYKK1NldHRpbmcgYmxvY2sgMjYsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDI3CitTZXR0aW5nIGJsb2NrIDI3LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAzMAorU2V0dGluZyBibG9jayAzMCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgMzEKK1NldHRpbmcgYmxvY2sgMzEsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDMyCitTZXR0aW5nIGJsb2NrIDMyLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiAzNQorU2V0dGluZyBibG9jayAzNSwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgMzkKK1NldHRpbmcgYmxvY2sgMzksIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDQwCitTZXR0aW5nIGJsb2NrIDQwLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiA0NAorU2V0dGluZyBibG9jayA0NCwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgNDYKK1NldHRpbmcgYmxvY2sgNDYsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDQ3CitTZXR0aW5nIGJsb2NrIDQ3LCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogc2V0YiA0OQorU2V0dGluZyBibG9jayA0OSwgd2FzIGNsZWFyIGJlZm9yZQordHN0X2JpdG1hcHM6IHNldGIgNTEKK1NldHRpbmcgYmxvY2sgNTEsIHdhcyBjbGVhciBiZWZvcmUKK3RzdF9iaXRtYXBzOiBzZXRiIDUyCitTZXR0aW5nIGJsb2NrIDUyLCB3YXMgY2xlYXIgYmVmb3JlCit0c3RfYml0bWFwczogY2xlYXJiIDIKK0NsZWFyaW5nIGJsb2NrIDIsIHdhcyBzZXQgYmVmb3JlCit0c3RfYml0bWFwczogY2xlYXJiIDMKK0NsZWFyaW5nIGJsb2NrIDMsIHdhcyBzZXQgYmVmb3JlCit0c3RfYml0bWFwczogY2xlYXJiIDcKK0NsZWFyaW5nIGJsb2NrIDcsIHdhcyBzZXQgYmVmb3JlCit0c3RfYml0bWFwczogZHVtcF9iYgorYmxvY2sgYml0bWFwOiBiOTJhODVlNmM0NjgwZDAwMDAwMDAwMDAwMDAwMDAwMAorYml0cyBzZXQ6IDI1Cit0c3RfYml0bWFwczogZmZzYiAxNCAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyAxNAordHN0X2JpdG1hcHM6IGZmc2IgMTUgMTI3CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgMTcKK3RzdF9iaXRtYXBzOiBmZnNiIDM2IDEyNworRmlyc3QgbWFya2VkIGJsb2NrIGlzIDM5Cit0c3RfYml0bWFwczogZmZzYiAzMiAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyAzMgordHN0X2JpdG1hcHM6IGZmc2IgNTIgMTI3CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgNTIKK3RzdF9iaXRtYXBzOiBmZnNiIDUzIDEyNworZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIoKSByZXR1cm5lZCBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit0c3RfYml0bWFwczogZmZzYiA0NiAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyA0NgordHN0X2JpdG1hcHM6IGZmc2IgNDUgMTI3CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgNDYKK3RzdF9iaXRtYXBzOiBmZnNiIDQxIDEyNworRmlyc3QgbWFya2VkIGJsb2NrIGlzIDQ0Cit0c3RfYml0bWFwczogZmZzYiAyMCAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyAyNAordHN0X2JpdG1hcHM6IGZmc2IgMSAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyAxCit0c3RfYml0bWFwczogZmZzYiAyIDEyNworRmlyc3QgbWFya2VkIGJsb2NrIGlzIDQKK3RzdF9iaXRtYXBzOiBmZnNiIDMgMTI3CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgNAordHN0X2JpdG1hcHM6IGZmc2IgNCAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyA0Cit0c3RfYml0bWFwczogZmZzYiA1IDEyNworRmlyc3QgbWFya2VkIGJsb2NrIGlzIDUKK3RzdF9iaXRtYXBzOiBmZnNiIDYgMTI3CitGaXJzdCBtYXJrZWQgYmxvY2sgaXMgNgordHN0X2JpdG1hcHM6IGZmc2IgNyAxMjcKK0ZpcnN0IG1hcmtlZCBibG9jayBpcyA4Cit0c3RfYml0bWFwczogZmZzYiA4IDEyNworRmlyc3QgbWFya2VkIGJsb2NrIGlzIDgKK3RzdF9iaXRtYXBzOiBmZnpiIDEgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyAyCit0c3RfYml0bWFwczogZmZ6YiAyIDEyNworRmlyc3QgdW5tYXJrZWQgYmxvY2sgaXMgMgordHN0X2JpdG1hcHM6IGZmemIgMyAxMjcKK0ZpcnN0IHVubWFya2VkIGJsb2NrIGlzIDMKK3RzdF9iaXRtYXBzOiBmZnpiIDQgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA3Cit0c3RfYml0bWFwczogZmZ6YiA1IDEyNworRmlyc3QgdW5tYXJrZWQgYmxvY2sgaXMgNwordHN0X2JpdG1hcHM6IGZmemIgNiAxMjcKK0ZpcnN0IHVubWFya2VkIGJsb2NrIGlzIDcKK3RzdF9iaXRtYXBzOiBmZnpiIDcgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA3Cit0c3RfYml0bWFwczogZmZ6YiA4IDEyNworRmlyc3QgdW5tYXJrZWQgYmxvY2sgaXMgOQordHN0X2JpdG1hcHM6IGZmemIgNDUgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA0NQordHN0X2JpdG1hcHM6IGZmemIgNDYgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA0OAordHN0X2JpdG1hcHM6IGZmemIgNDcgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA0OAordHN0X2JpdG1hcHM6IGZmemIgNDggMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA0OAordHN0X2JpdG1hcHM6IGZmemIgNDkgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA1MAordHN0X2JpdG1hcHM6IGZmemIgNTAgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA1MAordHN0X2JpdG1hcHM6IGZmemIgNTEgMTI3CitGaXJzdCB1bm1hcmtlZCBibG9jayBpcyA1MwordHN0X2JpdG1hcHM6IHF1aXQKK3RzdF9iaXRtYXBzOiAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRvcHMuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9iaXRvcHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDcxNDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2JpdG9wcy5jCkBAIC0wLDAgKzEsMjk0IEBACisvKgorICogVGhpcyB0ZXN0aW5nIHByb2dyYW0gbWFrZXMgc3VyZSB0aGUgYml0b3BzIGZ1bmN0aW9ucyB3b3JrCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCit1bnNpZ25lZCBjaGFyIGJpdGFycmF5W10gPSB7CisJMHg4MCwgMHhGMCwgMHg0MCwgMHg0MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDEwLCAweDIwLCAweDAwLCAweDAwCisJfTsKKworaW50IGJpdHNfbGlzdFtdID0geworCTcsIDEyLCAxMywgMTQsMTUsIDIyLCAzMCwgNjgsIDc3LCAtMSwKK307CisKKyNkZWZpbmUgQklHX1RFU1RfQklUICAgKCgodW5zaWduZWQpIDEgPDwgMzEpICsgNDIpCisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAlpLCBqLCBzaXplOworCXVuc2lnbmVkIGNoYXIgdGVzdGFycmF5WzEyXTsKKwl1bnNpZ25lZCBjaGFyICpiaWdhcnJheTsKKworCXNpemUgPSBzaXplb2YoYml0YXJyYXkpKjg7CisjaWYgMAorCWkgPSBleHQyZnNfZmluZF9maXJzdF9iaXRfc2V0KGJpdGFycmF5LCBzaXplKTsKKwl3aGlsZSAoaSA8IHNpemUpIHsKKwkJcHJpbnRmKCJCaXQgc2V0OiAlZFxuIiwgaSk7CisJCWkgPSBleHQyZnNfZmluZF9uZXh0X2JpdF9zZXQoYml0YXJyYXksIHNpemUsIGkrMSk7CisJfQorI2VuZGlmCisKKwkvKiBUZXN0IHRlc3RfYml0ICovCisJZm9yIChpPTAsaj0wOyBpIDwgc2l6ZTsgaSsrKSB7CisJCWlmIChleHQyZnNfdGVzdF9iaXQoaSwgYml0YXJyYXkpKSB7CisJCQlpZiAoYml0c19saXN0W2pdID09IGkpIHsKKwkJCQlqKys7CisJCQl9IGVsc2UgeworCQkJCXByaW50ZigiQml0ICVkIHNldCwgbm90IGV4cGVjdGVkXG4iLCBpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKGJpdHNfbGlzdFtqXSA9PSBpKSB7CisJCQkJcHJpbnRmKCJFeHBlY3RlZCBiaXQgJWQgdG8gYmUgY2xlYXIuXG4iLCBpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9CisJfQorCXByaW50ZigiZXh0MmZzX3Rlc3RfYml0IGFwcGVhcnMgdG8gYmUgY29ycmVjdFxuIik7CisKKwkvKiBUZXN0IGV4dDJmc19zZXRfYml0ICovCisJbWVtc2V0KHRlc3RhcnJheSwgMCwgc2l6ZW9mKHRlc3RhcnJheSkpOworCWZvciAoaT0wOyBiaXRzX2xpc3RbaV0gPiAwOyBpKyspIHsKKwkJZXh0MmZzX3NldF9iaXQoYml0c19saXN0W2ldLCB0ZXN0YXJyYXkpOworCX0KKwlpZiAobWVtY21wKHRlc3RhcnJheSwgYml0YXJyYXksIHNpemVvZih0ZXN0YXJyYXkpKSA9PSAwKSB7CisJCXByaW50ZigiZXh0MmZzX3NldF9iaXQgdGVzdCBzdWNjZWVkZWQuXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoImV4dDJmc19zZXRfYml0IHRlc3QgZmFpbGVkLlxuIik7CisJCWZvciAoaT0wOyBpIDwgc2l6ZW9mKHRlc3RhcnJheSk7IGkrKykgeworCQkJcHJpbnRmKCIlMDJ4ICIsIHRlc3RhcnJheVtpXSk7CisJCX0KKwkJcHJpbnRmKCJcbiIpOworCQlleGl0KDEpOworCX0KKwlmb3IgKGk9MDsgYml0c19saXN0W2ldID4gMDsgaSsrKSB7CisJCWV4dDJmc19jbGVhcl9iaXQoYml0c19saXN0W2ldLCB0ZXN0YXJyYXkpOworCX0KKwlmb3IgKGk9MDsgaSA8IHNpemVvZih0ZXN0YXJyYXkpOyBpKyspIHsKKwkJaWYgKHRlc3RhcnJheVtpXSkgeworCQkJcHJpbnRmKCJleHQyZnNfY2xlYXJfYml0IGZhaWxlZCwgIgorCQkJICAgICAgICJ0ZXN0YXJyYXlbJWRdIGlzICVkXG4iLCBpLCB0ZXN0YXJyYXlbaV0pOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlwcmludGYoImV4dDJmc19jbGVhcl9iaXQgdGVzdCBzdWNjZWVkLlxuIik7CisKKworCS8qIERvIGJpZ2FycmF5IHRlc3QgKi8KKwliaWdhcnJheSA9IG1hbGxvYygxIDw8IDI5KTsKKwlpZiAoIWJpZ2FycmF5KSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggbWVtb3J5IVxuIik7CisJCWV4aXQoMSk7CisJfQorCisgICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSA9IDA7CisKKwlleHQyZnNfc2V0X2JpdChCSUdfVEVTVF9CSVQsIGJpZ2FycmF5KTsKKwlwcmludGYoImJpZyBiaXQgbnVtYmVyICgldSkgdGVzdDogJWQsIGV4cGVjdGVkICVkXG4iLCBCSUdfVEVTVF9CSVQsCisJICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSwgKDEgPDwgKEJJR19URVNUX0JJVCAmIDcpKSk7CisJaWYgKGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSAhPSAoMSA8PCAoQklHX1RFU1RfQklUICYgNykpKQorCQlleGl0KDEpOworCisJZXh0MmZzX2NsZWFyX2JpdChCSUdfVEVTVF9CSVQsIGJpZ2FycmF5KTsKKworCXByaW50ZigiYmlnIGJpdCBudW1iZXIgKCV1KSB0ZXN0OiAlZCwgZXhwZWN0ZWQgMFxuIiwgQklHX1RFU1RfQklULAorCSAgICAgICBiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10pOworCWlmIChiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10gIT0gMCkKKwkJZXhpdCgxKTsKKworCXByaW50ZigiZXh0MmZzX3NldF9iaXQgYmlnX3Rlc3Qgc3VjY2Vzc2Z1bFxuIik7CisKKworCS8qIE5vdyB0ZXN0IGV4dDJmc19mYXN0X3NldF9iaXQgKi8KKwltZW1zZXQodGVzdGFycmF5LCAwLCBzaXplb2YodGVzdGFycmF5KSk7CisJZm9yIChpPTA7IGJpdHNfbGlzdFtpXSA+IDA7IGkrKykgeworCQlleHQyZnNfZmFzdF9zZXRfYml0KGJpdHNfbGlzdFtpXSwgdGVzdGFycmF5KTsKKwl9CisJaWYgKG1lbWNtcCh0ZXN0YXJyYXksIGJpdGFycmF5LCBzaXplb2YodGVzdGFycmF5KSkgPT0gMCkgeworCQlwcmludGYoImV4dDJmc19mYXN0X3NldF9iaXQgdGVzdCBzdWNjZWVkZWQuXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoImV4dDJmc19mYXN0X3NldF9iaXQgdGVzdCBmYWlsZWQuXG4iKTsKKwkJZm9yIChpPTA7IGkgPCBzaXplb2YodGVzdGFycmF5KTsgaSsrKSB7CisJCQlwcmludGYoIiUwMnggIiwgdGVzdGFycmF5W2ldKTsKKwkJfQorCQlwcmludGYoIlxuIik7CisJCWV4aXQoMSk7CisJfQorCWZvciAoaT0wOyBiaXRzX2xpc3RbaV0gPiAwOyBpKyspIHsKKwkJZXh0MmZzX2NsZWFyX2JpdChiaXRzX2xpc3RbaV0sIHRlc3RhcnJheSk7CisJfQorCWZvciAoaT0wOyBpIDwgc2l6ZW9mKHRlc3RhcnJheSk7IGkrKykgeworCQlpZiAodGVzdGFycmF5W2ldKSB7CisJCQlwcmludGYoImV4dDJmc19jbGVhcl9iaXQgZmFpbGVkLCAiCisJCQkgICAgICAgInRlc3RhcnJheVslZF0gaXMgJWRcbiIsIGksIHRlc3RhcnJheVtpXSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCXByaW50ZigiZXh0MmZzX2NsZWFyX2JpdCB0ZXN0IHN1Y2NlZWQuXG4iKTsKKworCisgICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSA9IDA7CisKKwlleHQyZnNfZmFzdF9zZXRfYml0KEJJR19URVNUX0JJVCwgYmlnYXJyYXkpOworCXByaW50ZigiYmlnIGJpdCBudW1iZXIgKCV1KSB0ZXN0OiAlZCwgZXhwZWN0ZWQgJWRcbiIsIEJJR19URVNUX0JJVCwKKwkgICAgICAgYmlnYXJyYXlbQklHX1RFU1RfQklUID4+IDNdLCAoMSA8PCAoQklHX1RFU1RfQklUICYgNykpKTsKKwlpZiAoYmlnYXJyYXlbQklHX1RFU1RfQklUID4+IDNdICE9ICgxIDw8IChCSUdfVEVTVF9CSVQgJiA3KSkpCisJCWV4aXQoMSk7CisKKwlleHQyZnNfZmFzdF9jbGVhcl9iaXQoQklHX1RFU1RfQklULCBiaWdhcnJheSk7CisKKwlwcmludGYoImJpZyBiaXQgbnVtYmVyICgldSkgdGVzdDogJWQsIGV4cGVjdGVkIDBcbiIsIEJJR19URVNUX0JJVCwKKwkgICAgICAgYmlnYXJyYXlbQklHX1RFU1RfQklUID4+IDNdKTsKKwlpZiAoYmlnYXJyYXlbQklHX1RFU1RfQklUID4+IDNdICE9IDApCisJCWV4aXQoMSk7CisKKwlwcmludGYoImV4dDJmc19mYXN0X3NldF9iaXQgYmlnX3Rlc3Qgc3VjY2Vzc2Z1bFxuIik7CisKKwkvKiBSZXBlYXQgZm9yZWdvaW5nIHRlc3RzIGZvciA2NC1iaXQgYml0b3BzICovCisKKwkvKiBUZXN0IHRlc3RfYml0ICovCisJZm9yIChpPTAsaj0wOyBpIDwgc2l6ZTsgaSsrKSB7CisJCWlmIChleHQyZnNfdGVzdF9iaXQ2NChpLCBiaXRhcnJheSkpIHsKKwkJCWlmIChiaXRzX2xpc3Rbal0gPT0gaSkgeworCQkJCWorKzsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCI2NC1iaXQ6IEJpdCAlZCBzZXQsIG5vdCBleHBlY3RlZFxuIiwKKwkJCQkgICAgICAgaSk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChiaXRzX2xpc3Rbal0gPT0gaSkgeworCQkJCXByaW50ZigiNjQtYml0OiAiCisJCQkJICAgICAgICJFeHBlY3RlZCBiaXQgJWQgdG8gYmUgY2xlYXIuXG4iLCBpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9CisJfQorCXByaW50ZigiNjQtYml0OiBleHQyZnNfdGVzdF9iaXQgYXBwZWFycyB0byBiZSBjb3JyZWN0XG4iKTsKKworCS8qIFRlc3QgZXh0MmZzX3NldF9iaXQgKi8KKwltZW1zZXQodGVzdGFycmF5LCAwLCBzaXplb2YodGVzdGFycmF5KSk7CisJZm9yIChpPTA7IGJpdHNfbGlzdFtpXSA+IDA7IGkrKykgeworCQlleHQyZnNfc2V0X2JpdDY0KGJpdHNfbGlzdFtpXSwgdGVzdGFycmF5KTsKKwl9CisJaWYgKG1lbWNtcCh0ZXN0YXJyYXksIGJpdGFycmF5LCBzaXplb2YodGVzdGFycmF5KSkgPT0gMCkgeworCQlwcmludGYoIjY0LWJpdDogZXh0MmZzX3NldF9iaXQgdGVzdCBzdWNjZWVkZWQuXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoIjY0LWJpdDogZXh0MmZzX3NldF9iaXQgdGVzdCBmYWlsZWQuXG4iKTsKKwkJZm9yIChpPTA7IGkgPCBzaXplb2YodGVzdGFycmF5KTsgaSsrKSB7CisJCQlwcmludGYoIiUwMnggIiwgdGVzdGFycmF5W2ldKTsKKwkJfQorCQlwcmludGYoIlxuIik7CisJCWV4aXQoMSk7CisJfQorCWZvciAoaT0wOyBiaXRzX2xpc3RbaV0gPiAwOyBpKyspIHsKKwkJZXh0MmZzX2NsZWFyX2JpdDY0KGJpdHNfbGlzdFtpXSwgdGVzdGFycmF5KTsKKwl9CisJZm9yIChpPTA7IGkgPCBzaXplb2YodGVzdGFycmF5KTsgaSsrKSB7CisJCWlmICh0ZXN0YXJyYXlbaV0pIHsKKwkJCXByaW50ZigiNjQtYml0OiBleHQyZnNfY2xlYXJfYml0IGZhaWxlZCwgIgorCQkJICAgICAgICJ0ZXN0YXJyYXlbJWRdIGlzICVkXG4iLCBpLCB0ZXN0YXJyYXlbaV0pOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlwcmludGYoIjY0LWJpdDogZXh0MmZzX2NsZWFyX2JpdCB0ZXN0IHN1Y2NlZWQuXG4iKTsKKworCS8qIERvIGJpZ2FycmF5IHRlc3QgKi8KKwliaWdhcnJheSA9IG1hbGxvYygxIDw8IDI5KTsKKwlpZiAoIWJpZ2FycmF5KSB7CisJCWZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHNjcmF0Y2ggbWVtb3J5IVxuIik7CisJCWV4aXQoMSk7CisJfQorCisgICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSA9IDA7CisKKwlleHQyZnNfc2V0X2JpdDY0KEJJR19URVNUX0JJVCwgYmlnYXJyYXkpOworCXByaW50ZigiNjQtYml0OiBiaWcgYml0IG51bWJlciAoJXUpIHRlc3Q6ICVkLCBleHBlY3RlZCAlZFxuIiwKKwkgICAgICAgQklHX1RFU1RfQklULCBiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10sCisJICAgICAgICgxIDw8IChCSUdfVEVTVF9CSVQgJiA3KSkpOworCWlmIChiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10gIT0gKDEgPDwgKEJJR19URVNUX0JJVCAmIDcpKSkKKwkJZXhpdCgxKTsKKworCWV4dDJmc19jbGVhcl9iaXQ2NChCSUdfVEVTVF9CSVQsIGJpZ2FycmF5KTsKKworCXByaW50ZigiNjQtYml0OiBiaWcgYml0IG51bWJlciAoJXUpIHRlc3Q6ICVkLCBleHBlY3RlZCAwXG4iLAorCSAgICAgICBCSUdfVEVTVF9CSVQsCisJICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSk7CisJaWYgKGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSAhPSAwKQorCQlleGl0KDEpOworCisJcHJpbnRmKCI2NC1iaXQ6IGV4dDJmc19zZXRfYml0IGJpZ190ZXN0IHN1Y2Nlc3NmdWxcbiIpOworCisJLyogTm93IHRlc3QgZXh0MmZzX2Zhc3Rfc2V0X2JpdCAqLworCW1lbXNldCh0ZXN0YXJyYXksIDAsIHNpemVvZih0ZXN0YXJyYXkpKTsKKwlmb3IgKGk9MDsgYml0c19saXN0W2ldID4gMDsgaSsrKSB7CisJCWV4dDJmc19mYXN0X3NldF9iaXQ2NChiaXRzX2xpc3RbaV0sIHRlc3RhcnJheSk7CisJfQorCWlmIChtZW1jbXAodGVzdGFycmF5LCBiaXRhcnJheSwgc2l6ZW9mKHRlc3RhcnJheSkpID09IDApIHsKKwkJcHJpbnRmKCI2NC1iaXQ6IGV4dDJmc19mYXN0X3NldF9iaXQgdGVzdCBzdWNjZWVkZWQuXG4iKTsKKwl9IGVsc2UgeworCQlwcmludGYoIjY0LWJpdDogZXh0MmZzX2Zhc3Rfc2V0X2JpdCB0ZXN0IGZhaWxlZC5cbiIpOworCQlmb3IgKGk9MDsgaSA8IHNpemVvZih0ZXN0YXJyYXkpOyBpKyspIHsKKwkJCXByaW50ZigiJTAyeCAiLCB0ZXN0YXJyYXlbaV0pOworCQl9CisJCXByaW50ZigiXG4iKTsKKwkJZXhpdCgxKTsKKwl9CisJZm9yIChpPTA7IGJpdHNfbGlzdFtpXSA+IDA7IGkrKykgeworCQlleHQyZnNfY2xlYXJfYml0NjQoYml0c19saXN0W2ldLCB0ZXN0YXJyYXkpOworCX0KKwlmb3IgKGk9MDsgaSA8IHNpemVvZih0ZXN0YXJyYXkpOyBpKyspIHsKKwkJaWYgKHRlc3RhcnJheVtpXSkgeworCQkJcHJpbnRmKCI2NC1iaXQ6IGV4dDJmc19jbGVhcl9iaXQgZmFpbGVkLCAiCisJCQkgICAgICAgInRlc3RhcnJheVslZF0gaXMgJWRcbiIsIGksIHRlc3RhcnJheVtpXSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCXByaW50ZigiNjQtYml0OiBleHQyZnNfY2xlYXJfYml0IHRlc3Qgc3VjY2VlZC5cbiIpOworCisgICAgICAgIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSA9IDA7CisKKwlleHQyZnNfZmFzdF9zZXRfYml0NjQoQklHX1RFU1RfQklULCBiaWdhcnJheSk7CisJcHJpbnRmKCI2NC1iaXQ6IGJpZyBiaXQgbnVtYmVyICgldSkgdGVzdDogJWQsIGV4cGVjdGVkICVkXG4iLAorCSAgICAgICBCSUdfVEVTVF9CSVQsIGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSwKKwkgICAgICAgKDEgPDwgKEJJR19URVNUX0JJVCAmIDcpKSk7CisJaWYgKGJpZ2FycmF5W0JJR19URVNUX0JJVCA+PiAzXSAhPSAoMSA8PCAoQklHX1RFU1RfQklUICYgNykpKQorCQlleGl0KDEpOworCisJZXh0MmZzX2Zhc3RfY2xlYXJfYml0NjQoQklHX1RFU1RfQklULCBiaWdhcnJheSk7CisKKwlwcmludGYoIjY0LWJpdDogYmlnIGJpdCBudW1iZXIgKCV1KSB0ZXN0OiAlZCwgZXhwZWN0ZWQgMFxuIiwKKwkgICAgICAgQklHX1RFU1RfQklULCBiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10pOworCWlmIChiaWdhcnJheVtCSUdfVEVTVF9CSVQgPj4gM10gIT0gMCkKKwkJZXhpdCgxKTsKKworCXByaW50ZigiNjQtYml0OiBleHQyZnNfZmFzdF9zZXRfYml0IGJpZ190ZXN0IHN1Y2Nlc3NmdWxcbiIpOworCisJZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9ieXRlc3dhcC5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2J5dGVzd2FwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUwMGNhZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9ieXRlc3dhcC5jCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBUaGlzIHRlc3RpbmcgcHJvZ3JhbSBtYWtlcyBzdXJlIHRoZSBieXRlc3dhcCBmdW5jdGlvbnMgd29yaworICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK19fdTE2IHRlc3QxW10gPSB7CisJMHgwMDAxLCAweDAxMDAsCisJMHgxMjM0LCAweDM0MTIsCisJMHhmZjAwLCAweDAwZmYsCisJMHg0MDAwLCAweDAwNDAsCisJMHhmZWZmLCAweGZmZmUsCisJMHgwMDAwLCAweDAwMDAKKwl9OworCitfX3UzMiB0ZXN0MltdID0geworCTB4MDAwMDAwMDEsIDB4MDEwMDAwMDAsCisJMHg4MDAwMDAwMCwgMHgwMDAwMDA4MCwKKwkweDEyMzQ1Njc4LCAweDc4NTYzNDEyLAorCTB4ZmZmZjAwMDAsIDB4MDAwMGZmZmYsCisJMHgwMGZmMDAwMCwgMHgwMDAwZmYwMCwKKwkweGZmMDAwMDAwLCAweDAwMDAwMGZmLAorCTB4MDAwMDAwMDAsIDB4MDAwMDAwMDAKKwl9OworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CWk7CisJaW50CWVycm9ycyA9IDA7CisKKwlwcmludGYoIlRlc3RpbmcgZXh0MmZzX3N3YWIxNlxuIik7CisJaT0wOworCWRvIHsKKwkJcHJpbnRmKCJzd2FiMTYoMHglMDR4KSA9IDB4JTA0eFxuIiwgdGVzdDFbaV0sCisJCSAgICAgICBleHQyZnNfc3dhYjE2KHRlc3QxW2ldKSk7CisJCWlmIChleHQyZnNfc3dhYjE2KHRlc3QxW2ldKSAhPSB0ZXN0MVtpKzFdKSB7CisJCQlwcmludGYoIkVycm9yISEhICAgJTA0eCAhPSAlMDR4XG4iLAorCQkJICAgICAgIGV4dDJmc19zd2FiMTYodGVzdDFbaV0pLCB0ZXN0MVtpKzFdKTsKKwkJCWVycm9ycysrOworCQl9CisJCWlmIChleHQyZnNfc3dhYjE2KHRlc3QxW2krMV0pICE9IHRlc3QxW2ldKSB7CisJCQlwcmludGYoIkVycm9yISEhICAgJTA0eCAhPSAlMDR4XG4iLAorCQkJICAgICAgIGV4dDJmc19zd2FiMTYodGVzdDFbaSsxXSksIHRlc3QxW2ldKTsKKwkJCWVycm9ycysrOworCQl9CisJCWkgKz0gMjsKKwl9IHdoaWxlICh0ZXN0MVtpXSAhPSAwKTsKKworCXByaW50ZigiVGVzdGluZyBleHQyZnNfc3dhYjMyXG4iKTsKKwlpID0gMDsKKwlkbyB7CisJCXByaW50Zigic3dhYjMyKDB4JTA4eCkgPSAweCUwOHhcbiIsIHRlc3QyW2ldLAorCQkgICAgICAgZXh0MmZzX3N3YWIzMih0ZXN0MltpXSkpOworCQlpZiAoZXh0MmZzX3N3YWIzMih0ZXN0MltpXSkgIT0gdGVzdDJbaSsxXSkgeworCQkJcHJpbnRmKCJFcnJvciEhISAgICUwNHggIT0gJTA0eFxuIiwKKwkJCSAgICAgICBleHQyZnNfc3dhYjMyKHRlc3QyW2ldKSwgdGVzdDJbaSsxXSk7CisJCQllcnJvcnMrKzsKKwkJfQorCQlpZiAoZXh0MmZzX3N3YWIzMih0ZXN0MltpKzFdKSAhPSB0ZXN0MltpXSkgeworCQkJcHJpbnRmKCJFcnJvciEhISAgICUwNHggIT0gJTA0eFxuIiwKKwkJCSAgICAgICBleHQyZnNfc3dhYjMyKHRlc3QyW2krMV0pLCB0ZXN0MltpXSk7CisJCQllcnJvcnMrKzsKKwkJfQorCQlpICs9IDI7CisJfSB3aGlsZSAodGVzdDJbaV0gIT0gMCk7CisKKwlpZiAoIWVycm9ycykKKwkJcHJpbnRmKCJObyBlcnJvcnMgZm91bmQgaW4gdGhlIGJ5dGVzd2FwIGltcGxlbWVudGF0aW9uIVxuIik7CisKKwlyZXR1cm4gZXJyb3JzOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2NtZHMuY3QgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfY21kcy5jdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWE4NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2NtZHMuY3QKQEAgLTAsMCArMSw2IEBACitjb21tYW5kX3RhYmxlIGxpYmV4dDJmc19jbWRzOworCityZXF1ZXN0IGRvX2Jsb2NrX2l0ZXJhdGUsICJibG9ja19pdGVyYXRlIiwKKwlibG9ja19pdGVyYXRlOworCitlbmQ7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfZnNfc3RydWN0LmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfZnNfc3RydWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY0NGRmMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9mc19zdHJ1Y3QuYwpAQCAtMCwwICsxLDgxIEBACisvKgorICogVGhpcyB0ZXN0aW5nIHByb2dyYW0gY2hlY2tzIHRoZSBvZmZzZXQgb2YgdGhlIGV4dDJfZmlsc3lzIHN0cnVjdHVyZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJleHQyZnMuaCIKKworc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cyBmczsKKworI2lmbmRlZiBvZmZzZXRvZgorI2RlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICBfX2J1aWx0aW5fb2Zmc2V0b2YgKHR5cGUsIG1lbWJlcikKKyNlbmRpZgorI2RlZmluZSBjaGVja19maWVsZCh4KSBjdXJfb2Zmc2V0ID0gZG9fZmllbGQoI3gsIHNpemVvZihmcy54KSwJCVwKKwkJCQkJb2Zmc2V0b2Yoc3RydWN0IHN0cnVjdF9leHQyX2ZpbHN5cywgeCksIFwKKwkJCQkJY3VyX29mZnNldCkKKworc3RhdGljIGludCBkb19maWVsZChjb25zdCBjaGFyICpmaWVsZCwgc2l6ZV90IHNpemUsIGludCBvZmZzZXQsIGludCBjdXJfb2Zmc2V0KQoreworCWlmIChvZmZzZXQgIT0gY3VyX29mZnNldCkgeworCQlwcmludGYoIlx0KHBhZGRpbmcgJWQgYnl0ZXM/KVxuIiwgb2Zmc2V0IC0gY3VyX29mZnNldCk7CisJfQorCXByaW50ZigiJThkICUtMzBzICUzdVxuIiwgb2Zmc2V0LCBmaWVsZCwgKHVuc2lnbmVkKSBzaXplKTsKKwlyZXR1cm4gb2Zmc2V0ICsgc2l6ZTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworI2lmIChfX0dOVUNfXyA+PSA0KQorCWludCBjdXJfb2Zmc2V0ID0gMDsKKworCXByaW50ZigiJThzICUtMzBzICUzc1xuIiwgIm9mZnNldCIsICJmaWVsZCIsICJzaXplIik7CisJY2hlY2tfZmllbGQobWFnaWMpOworCWNoZWNrX2ZpZWxkKGlvKTsKKwljaGVja19maWVsZChmbGFncyk7CisJY2hlY2tfZmllbGQoZGV2aWNlX25hbWUpOworCWNoZWNrX2ZpZWxkKHN1cGVyKTsKKwljaGVja19maWVsZChibG9ja3NpemUpOworCWNoZWNrX2ZpZWxkKGZyYWdzaXplKTsKKwljaGVja19maWVsZChncm91cF9kZXNjX2NvdW50KTsKKwljaGVja19maWVsZChkZXNjX2Jsb2Nrcyk7CisJY2hlY2tfZmllbGQoZ3JvdXBfZGVzYyk7CisJY2hlY2tfZmllbGQoaW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisJY2hlY2tfZmllbGQoaW5vZGVfbWFwKTsKKwljaGVja19maWVsZChibG9ja19tYXApOworCWNoZWNrX2ZpZWxkKGdldF9ibG9ja3MpOworCWNoZWNrX2ZpZWxkKGNoZWNrX2RpcmVjdG9yeSk7CisJY2hlY2tfZmllbGQod3JpdGVfYml0bWFwcyk7CisJY2hlY2tfZmllbGQocmVhZF9pbm9kZSk7CisJY2hlY2tfZmllbGQod3JpdGVfaW5vZGUpOworCWNoZWNrX2ZpZWxkKGJhZGJsb2Nrcyk7CisJY2hlY2tfZmllbGQoZGJsaXN0KTsKKwljaGVja19maWVsZChzdHJpZGUpOworCWNoZWNrX2ZpZWxkKG9yaWdfc3VwZXIpOworCWNoZWNrX2ZpZWxkKGltYWdlX2hlYWRlcik7CisJY2hlY2tfZmllbGQodW1hc2spOworCWNoZWNrX2ZpZWxkKG5vdyk7CisJY2hlY2tfZmllbGQoY2x1c3Rlcl9yYXRpb19iaXRzKTsKKwljaGVja19maWVsZChyZXNlcnZlZCk7CisJY2hlY2tfZmllbGQocHJpdl9kYXRhKTsKKwljaGVja19maWVsZChpY2FjaGUpOworCWNoZWNrX2ZpZWxkKGltYWdlX2lvKTsKKwljaGVja19maWVsZChnZXRfYWxsb2NfYmxvY2spOworCWNoZWNrX2ZpZWxkKGJsb2NrX2FsbG9jX3N0YXRzKTsKKwljaGVja19maWVsZChtbXBfYnVmKTsKKwljaGVja19maWVsZChtbXBfY21wKTsKKwljaGVja19maWVsZChtbXBfZmQpOworCWNoZWNrX2ZpZWxkKG1tcF9sYXN0X3dyaXR0ZW4pOworCXByaW50ZigiRW5kaW5nIG9mZnNldCBpcyAlZFxuXG4iLCBjdXJfb2Zmc2V0KTsKKyNlbmRpZgorCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfZ2V0c2VjdHNpemUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9nZXRzZWN0c2l6ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YjIzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfZ2V0c2VjdHNpemUuYwpAQCAtMCwwICsxLDU0IEBACisvKgorICogdHN0X2dldHNpemUuYyAtLS0gdGhpcyBmdW5jdGlvbiB0ZXN0cyB0aGUgZ2V0c2l6ZSBmdW5jdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQJbHNlY3RzaXplLCBwc2VjdHNpemU7CisJaW50CXJldHZhbDsKKworCWlmIChhcmdjIDwgMikgeworCQlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBkZXZpY2VcbiIsIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfZGV2aWNlX3NlY3RzaXplKGFyZ3ZbMV0sICZsc2VjdHNpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsCisJCQkid2hpbGUgY2FsbGluZyBleHQyZnNfZ2V0X2RldmljZV9zZWN0c2l6ZSIpOworCQlleGl0KDEpOworCX0KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2RldmljZV9waHlzX3NlY3RzaXplKGFyZ3ZbMV0sICZwc2VjdHNpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsCisJCQkid2hpbGUgY2FsbGluZyBleHQyZnNfZ2V0X2RldmljZV9waHlzX3NlY3RzaXplIik7CisJCWV4aXQoMSk7CisJfQorCXByaW50ZigiRGV2aWNlICVzIGhhcyBsb2dpY2FsL3BoeXNpY2FsIHNlY3RvciBzaXplIG9mICVkLyVkLlxuIiwKKwkgICAgICAgYXJndlsxXSwgbHNlY3RzaXplLCBwc2VjdHNpemUpOworCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfZ2V0c2l6ZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2dldHNpemUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWMyZWExCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2dldHNpemUuYwpAQCAtMCwwICsxLDQ2IEBACisvKgorICogdHN0X2dldHNpemUuYyAtLS0gdGhpcyBmdW5jdGlvbiB0ZXN0cyB0aGUgZ2V0c2l6ZSBmdW5jdGlvbgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlibGtfdAkJYmxvY2tzOworCisJaWYgKGFyZ2MgPCAyKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMgZGV2aWNlXG4iLCBhcmd2WzBdKTsKKwkJZXhpdCgxKTsKKwl9CisJYWRkX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X2RldmljZV9zaXplKGFyZ3ZbMV0sIDEwMjQsICZibG9ja3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBnZXR0aW5nIGRldmljZSBzaXplIik7CisJCWV4aXQoMSk7CisJfQorCXByaW50ZigiJXMgaXMgZGV2aWNlIGhhcyAldSBibG9ja3MuXG4iLCBhcmd2WzFdLCBibG9ja3MpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2lub2RlX3NpemUuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9pbm9kZV9zaXplLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1ZDE2NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9pbm9kZV9zaXplLmMKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIFRoaXMgdGVzdGluZyBwcm9ncmFtIG1ha2VzIHN1cmUgdGhlIGV4dDJfaW5vZGUgc3RydWN0dXJlIGlzIDEwMjQgYnl0ZXMgbG9uZworICoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisKK3N0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCisjaWZuZGVmIG9mZnNldG9mCisjZGVmaW5lIG9mZnNldG9mKHR5cGUsIG1lbWJlcikgIF9fYnVpbHRpbl9vZmZzZXRvZih0eXBlLCBtZW1iZXIpCisjZW5kaWYKKworI2RlZmluZSBjaGVja19maWVsZCh4LCBzKSBjdXJfb2Zmc2V0ID0gZG9fZmllbGQoI3gsIHMsIHNpemVvZihpbm9kZS54KSwJICAgICAgIFwKKwkJCQkJb2Zmc2V0b2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UsIHgpLCAgXAorCQkJCQljdXJfb2Zmc2V0KQorCitzdGF0aWMgaW50IGRvX2ZpZWxkKGNvbnN0IGNoYXIgKmZpZWxkLCB1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBjdXJfc2l6ZSwKKwkJICAgIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY3VyX29mZnNldCkKK3sKKwlpZiAoc2l6ZSAhPSBjdXJfc2l6ZSkgeworCQlwcmludGYoImVycm9yOiAlcyBzaXplICV1IHNob3VsZCBiZSAldVxuIiwKKwkJICAgICAgIGZpZWxkLCBjdXJfc2l6ZSwgc2l6ZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChvZmZzZXQgIT0gY3VyX29mZnNldCkgeworCQlwcmludGYoImVycm9yOiAlcyBvZmZzZXQgJXUgc2hvdWxkIGJlICV1XG4iLAorCQkgICAgICAgZmllbGQsIGN1cl9vZmZzZXQsIG9mZnNldCk7CisJCWV4aXQoMSk7CisJfQorCXByaW50ZigiJThkICUtMzBzICUzdVxuIiwgb2Zmc2V0LCBmaWVsZCwgKHVuc2lnbmVkKSBzaXplKTsKKwlyZXR1cm4gb2Zmc2V0ICsgc2l6ZTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworI2lmIChfX0dOVUNfXyA+PSA0KQorCWludCBjdXJfb2Zmc2V0ID0gMDsKKworCXByaW50ZigiJThzICUtMzBzICUzc1xuIiwgIm9mZnNldCIsICJmaWVsZCIsICJzaXplIik7CisJY2hlY2tfZmllbGQoaV9tb2RlLCAyKTsKKwljaGVja19maWVsZChpX3VpZCwgMik7CisJY2hlY2tfZmllbGQoaV9zaXplLCA0KTsKKwljaGVja19maWVsZChpX2F0aW1lLCA0KTsKKwljaGVja19maWVsZChpX2N0aW1lLCA0KTsKKwljaGVja19maWVsZChpX210aW1lLCA0KTsKKwljaGVja19maWVsZChpX2R0aW1lLCA0KTsKKwljaGVja19maWVsZChpX2dpZCwgMik7CisJY2hlY2tfZmllbGQoaV9saW5rc19jb3VudCwgMik7CisJY2hlY2tfZmllbGQoaV9ibG9ja3MsIDQpOworCWNoZWNrX2ZpZWxkKGlfZmxhZ3MsIDQpOworCWNoZWNrX2ZpZWxkKG9zZDEubGludXgxLmxfaV92ZXJzaW9uLCA0KTsKKwljaGVja19maWVsZChpX2Jsb2NrLCAxNSAqIDQpOworCWNoZWNrX2ZpZWxkKGlfZ2VuZXJhdGlvbiwgNCk7CisJY2hlY2tfZmllbGQoaV9maWxlX2FjbCwgNCk7CisJY2hlY2tfZmllbGQoaV9zaXplX2hpZ2gsIDQpOworCWNoZWNrX2ZpZWxkKGlfZmFkZHIsIDQpOworCWNoZWNrX2ZpZWxkKG9zZDIubGludXgyLmxfaV9ibG9ja3NfaGksIDIpOworCWNoZWNrX2ZpZWxkKG9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoLCAyKTsKKwljaGVja19maWVsZChvc2QyLmxpbnV4Mi5sX2lfdWlkX2hpZ2gsIDIpOworCWNoZWNrX2ZpZWxkKG9zZDIubGludXgyLmxfaV9naWRfaGlnaCwgMik7CisJY2hlY2tfZmllbGQob3NkMi5saW51eDIubF9pX2NoZWNrc3VtX2xvLCAyKTsKKwljaGVja19maWVsZChvc2QyLmxpbnV4Mi5sX2lfcmVzZXJ2ZWQsIDIpOworCWRvX2ZpZWxkKCJTbWFsbCBpbm9kZSBlbmQiLCAwLCAwLCBjdXJfb2Zmc2V0LCAxMjgpOworCWNoZWNrX2ZpZWxkKGlfZXh0cmFfaXNpemUsIDIpOworCWNoZWNrX2ZpZWxkKGlfY2hlY2tzdW1faGksIDIpOworCWNoZWNrX2ZpZWxkKGlfY3RpbWVfZXh0cmEsIDQpOworCWNoZWNrX2ZpZWxkKGlfbXRpbWVfZXh0cmEsIDQpOworCWNoZWNrX2ZpZWxkKGlfYXRpbWVfZXh0cmEsIDQpOworCWNoZWNrX2ZpZWxkKGlfY3J0aW1lLCA0KTsKKwljaGVja19maWVsZChpX2NydGltZV9leHRyYSwgNCk7CisJY2hlY2tfZmllbGQoaV92ZXJzaW9uX2hpLCA0KTsKKwljaGVja19maWVsZChpX3Byb2ppZCwgNCk7CisJLyogVGhpcyBzaXplIHdpbGwgY2hhbmdlIGFzIG5ldyBmaWVsZHMgYXJlIGFkZGVkICovCisJZG9fZmllbGQoIkxhcmdlIGlub2RlIGVuZCIsIDAsIDAsIGN1cl9vZmZzZXQsIHNpemVvZihpbm9kZSkpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfaXNjYW4uYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9pc2Nhbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwYmZiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfaXNjYW4uYwpAQCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIHRzdF9pbm9kZS5jIC0tLSB0aGlzIGZ1bmN0aW9uIHRlc3RzIHRoZSBpbm9kZSBzY2FuIGZ1bmN0aW9uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk2IGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworYmxrNjRfdCB0ZXN0X3ZlY1tdID0geyA4LCAxMiwgMjQsIDM0LCA0MywgNDQsIDEwMCwgMCB9OworCitleHQyX2ZpbHN5cwl0ZXN0X2ZzOworZXh0MmZzX2Jsb2NrX2JpdG1hcCBiYWRfYmxvY2tfbWFwLCB0b3VjaGVkX21hcDsKK2V4dDJmc19pbm9kZV9iaXRtYXAgYmFkX2lub2RlX21hcDsKK2JhZGJsb2Nrc19saXN0CXRlc3RfYmFkYmxvY2tzOworCitpbnQgZmlyc3Rfbm9fY29tbWEgPSAxOworaW50IGZhaWxlZCA9IDA7CisKK3N0YXRpYyB2b2lkIGlzY2FuX3Rlc3RfcmVhZF9ibGs2NCh1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssIGludCBjb3VudCwgZXJyY29kZV90IGVycikKK3sKKwlpbnQJaTsKKworCWlmIChmaXJzdF9ub19jb21tYSkKKwkJZmlyc3Rfbm9fY29tbWEgPSAwOworCWVsc2UKKwkJcHJpbnRmKCIsICIpOworCisJaWYgKGNvdW50ID4gMSkKKwkJcHJpbnRmKCIlbGx1LSVsbHUiLCBibG9jaywgYmxvY2srY291bnQtMSk7CisJZWxzZQorCQlwcmludGYoIiVsbHUiLCBibG9jayk7CisKKwlmb3IgKGk9MDsgaSA8IGNvdW50OyBpKyssIGJsb2NrKyspIHsKKwkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIodG91Y2hlZF9tYXAsIGJsb2NrKSkgeworCQkJcHJpbnRmKCJcbkR1cGxpY2F0ZSBibG9jaz8hPyAtLS0gJWxsdVxuIiwgYmxvY2spOworCQkJZmFpbGVkKys7CisJCQlmaXJzdF9ub19jb21tYSA9IDE7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMih0b3VjaGVkX21hcCwgYmxvY2spOworCX0KK30KKworc3RhdGljIHZvaWQgaXNjYW5fdGVzdF9yZWFkX2Jsayh1bnNpZ25lZCBsb25nIGJsb2NrLCBpbnQgY291bnQsIGVycmNvZGVfdCBlcnIpCit7CisJaXNjYW5fdGVzdF9yZWFkX2JsazY0KGJsb2NrLCBjb3VudCwgZXJyKTsKK30KKworLyoKKyAqIFNldHVwIHRoZSB2YXJpYWJsZXMgZm9yIGRvaW5nIHRoZSBpbm9kZSBzY2FuIHRlc3QuCisgKi8KK3N0YXRpYyB2b2lkIHNldHVwKHZvaWQpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWk7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgcGFyYW07CisKKwlpbml0aWFsaXplX2V4dDJfZXJyb3JfdGFibGUoKTsKKworCW1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihwYXJhbSkpOworCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KCZwYXJhbSwgMTIwMDApOworCisKKwl0ZXN0X2lvX2NiX3JlYWRfYmxrID0gaXNjYW5fdGVzdF9yZWFkX2JsazsKKwl0ZXN0X2lvX2NiX3JlYWRfYmxrNjQgPSBpc2Nhbl90ZXN0X3JlYWRfYmxrNjQ7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5pdGlhbGl6ZSgidGVzdCBmcyIsIEVYVDJfRkxBR182NEJJVFMsICZwYXJhbSwKKwkJCQkgICB0ZXN0X2lvX21hbmFnZXIsICZ0ZXN0X2ZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldHVwIiwgcmV0dmFsLAorCQkJIldoaWxlIGluaXRpYWxpemluZyBmaWxlc3lzdGVtIik7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV90YWJsZXModGVzdF9mcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJzZXR1cCIsIHJldHZhbCwKKwkJCSJXaGlsZSBhbGxvY2F0aW5nIHRhYmxlcyBmb3IgdGVzdCBmaWxlc3lzdGVtIik7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAodGVzdF9mcywgImJhZCBibG9jayBtYXAiLAorCQkJCQkgICAgICAmYmFkX2Jsb2NrX21hcCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJzZXR1cCIsIHJldHZhbCwKKwkJCSJXaGlsZSBhbGxvY2F0aW5nIGJhZF9ibG9jayBiaXRtYXAiKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcCh0ZXN0X2ZzLCAidG91Y2hlZCBtYXAiLAorCQkJCQkgICAgICAmdG91Y2hlZF9tYXApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycigic2V0dXAiLCByZXR2YWwsCisJCQkiV2hpbGUgYWxsb2NhdGluZyB0b3VjaGVkIGJsb2NrIGJpdG1hcCIpOworCQlleGl0KDEpOworCX0KKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfaW5vZGVfYml0bWFwKHRlc3RfZnMsICJiYWQgaW5vZGUgbWFwIiwKKwkJCQkJICAgICAgJmJhZF9pbm9kZV9tYXApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycigic2V0dXAiLCByZXR2YWwsCisJCQkiV2hpbGUgYWxsb2NhdGluZyBiYWQgaW5vZGUgYml0bWFwIik7CisJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2NyZWF0ZSgmdGVzdF9iYWRibG9ja3MsIDUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycigic2V0dXAiLCByZXR2YWwsICJ3aGlsZSBjcmVhdGluZyBiYWRibG9ja3MgbGlzdCIpOworCQlleGl0KDEpOworCX0KKwlmb3IgKGk9MDsgdGVzdF92ZWNbaV07IGkrKykgeworCQlyZXR2YWwgPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfYWRkKHRlc3RfYmFkYmxvY2tzLCB0ZXN0X3ZlY1tpXSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoInNldHVwIiwgcmV0dmFsLAorCQkJCSJ3aGlsZSBhZGRpbmcgdGVzdCB2ZWN0b3IgJWQiLCBpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihiYWRfYmxvY2tfbWFwLCB0ZXN0X3ZlY1tpXSk7CisJfQorCXRlc3RfZnMtPmJhZGJsb2NrcyA9IHRlc3RfYmFkYmxvY2tzOworfQorCisvKgorICogSXRlcmF0ZSB1c2luZyBpbm9kZV9zY2FuCisgKi8KK3N0YXRpYyB2b2lkIGl0ZXJhdGUodm9pZCkKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlleHQyX2lub2RlX3NjYW4Jc2NhbjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaW5vOworCisJcmV0dmFsID0gZXh0MmZzX29wZW5faW5vZGVfc2Nhbih0ZXN0X2ZzLCA4LCAmc2Nhbik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJpdGVyYXRlIiwgcmV0dmFsLCAiV2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIik7CisJCWV4aXQoMSk7CisJfQorCXByaW50ZigiUmVhZGluZyBibG9ja3M6ICIpOworCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiaXRlcmF0ZSIsIHJldHZhbCwgIndoaWxlIHJlYWRpbmcgZmlyc3QgaW5vZGUiKTsKKwkJZXhpdCgxKTsKKwl9CisJd2hpbGUgKGlubykgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGUoc2NhbiwgJmlubywgJmlub2RlKTsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9CTE9DS19JTl9JTk9ERV9UQUJMRSkgeworCQkJZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwMihiYWRfaW5vZGVfbWFwLCBpbm8pOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiaXRlcmF0ZSIsIHJldHZhbCwKKwkJCQkid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIik7CisJCQlleGl0KDEpOworCQl9CisJfQorCXByaW50ZigiXG4iKTsKKwlleHQyZnNfY2xvc2VfaW5vZGVfc2NhbihzY2FuKTsKK30KKworLyoKKyAqIFZlcmlmeSB0aGUgdG91Y2hlZCBtYXAKKyAqLworc3RhdGljIHZvaWQgY2hlY2tfbWFwKHZvaWQpCit7CisJaW50CWksIGosIGZpcnN0PTE7CisJYmxrNjRfdAlibGs7CisKKwlmb3IgKGk9MDsgdGVzdF92ZWNbaV07IGkrKykgeworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMih0b3VjaGVkX21hcCwgdGVzdF92ZWNbaV0pKSB7CisJCQlwcmludGYoIkJhZCBibG9jayB3YXMgdG91Y2hlZCAtLS0gJWxsdVxuIiwgdGVzdF92ZWNbaV0pOworCQkJZmFpbGVkKys7CisJCQlmaXJzdF9ub19jb21tYSA9IDE7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMih0b3VjaGVkX21hcCwgdGVzdF92ZWNbaV0pOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgdGVzdF9mcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWZvciAoaj0wLCBibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKHRlc3RfZnMsIGkpOworCQkgICAgIGogPCB0ZXN0X2ZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCQkgICAgIGorKywgYmxrKyspIHsKKwkJCWlmICghZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMih0b3VjaGVkX21hcCwgYmxrKSAmJgorCQkJICAgICFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJhZF9ibG9ja19tYXAsIGJsaykpIHsKKwkJCQlwcmludGYoIk1pc3NpbmcgYmxvY2sgLS0tICVsbHVcbiIsIGJsayk7CisJCQkJZmFpbGVkKys7CisJCQl9CisJCX0KKwl9CisJcHJpbnRmKCJCYWQgaW5vZGVzOiAiKTsKKwlmb3IgKGk9MTsgaSA8PSB0ZXN0X2ZzLT5zdXBlci0+c19pbm9kZXNfY291bnQ7IGkrKykgeworCQlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihiYWRfaW5vZGVfbWFwLCBpKSkgeworCQkJaWYgKGZpcnN0KQorCQkJCWZpcnN0ID0gMDsKKwkJCWVsc2UKKwkJCQlwcmludGYoIiwgIik7CisJCQlwcmludGYoIiV1IiwgaSk7CisJCX0KKwl9CisJcHJpbnRmKCJcbiIpOworfQorCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzZXR1cCgpOworCWl0ZXJhdGUoKTsKKwljaGVja19tYXAoKTsKKwlpZiAoIWZhaWxlZCkKKwkJcHJpbnRmKCJJbm9kZSBzY2FuIHRlc3RlZCBPSyFcbiIpOworCXJldHVybiBmYWlsZWQ7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9saWJleHQyZnMuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9saWJleHQyZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTBiZmYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdHN0X2xpYmV4dDJmcy5jCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiB0c3RfbGliZXh0MmZzLmMKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworI2luY2x1ZGUgInNzL3NzLmgiCisjaW5jbHVkZSAiZGVidWdmcy5oIgorCisvKgorICogSG9vayBpbiBuZXcgY29tbWFuZHMgaW50byBkZWJ1Z2ZzCisgKiBPdmVycmlkZSBkZWJ1Z2ZzJ3MgcHJvbXB0CisgKi8KK2NvbnN0IGNoYXIgKmRlYnVnX3Byb2dfbmFtZSA9ICJ0c3RfbGliZXh0MmZzIjsKK2V4dGVybiBzc19yZXF1ZXN0X3RhYmxlIGxpYmV4dDJmc19jbWRzOworc3NfcmVxdWVzdF90YWJsZSAqZXh0cmFfY21kcyA9ICZsaWJleHQyZnNfY21kczsKKworc3RhdGljIGludCBwcmludF9ibG9ja3NfcHJvYyhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIGJsazY0X3QgKmJsb2NrbnIsIGUyX2Jsa2NudF90IGJsb2NrY250LAorCQkJICAgICBibGs2NF90IHJlZl9ibG9jaywgaW50IHJlZl9vZmZzZXQsCisJCQkgICAgIHZvaWQgKnByaXZhdGUgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCXByaW50ZigiJTZsbGQgJThsbHUgKCVkICVsbHUpXG4iLCAobG9uZyBsb25nKSBibG9ja2NudCwKKwkgICAgICAgKHVuc2lnbmVkIGxvbmcgbG9uZykqYmxvY2tuciwgcmVmX29mZnNldCwgcmVmX2Jsb2NrKTsKKwlyZXR1cm4gMDsKK30KKworCit2b2lkIGRvX2Jsb2NrX2l0ZXJhdGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gImJsb2NrX2l0ZXJhdGUgPGZpbGU+IDxmbGFncyI7CisJZXh0Ml9pbm9fdAlpbm87CisJaW50CQllcnIgPSAwOworCWludAkJZmxhZ3MgPSAwOworCisJaWYgKGNvbW1vbl9hcmdzX3Byb2Nlc3MoYXJnYywgYXJndiwgMiwgMywgYXJndlswXSwgdXNhZ2UsIDApKQorCQlyZXR1cm47CisKKwlpbm8gPSBzdHJpbmdfdG9faW5vZGUoYXJndlsxXSk7CisJaWYgKCFpbm8pCisJCXJldHVybjsKKworCWlmIChhcmdjID4gMikgeworCQlmbGFncyA9IHBhcnNlX3Vsb25nKGFyZ3ZbMl0sIGFyZ3ZbMF0sICJmbGFncyIsICZlcnIpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuOworCX0KKwlmbGFncyB8PSBCTE9DS19GTEFHX1JFQURfT05MWTsKKworCWV4dDJmc19ibG9ja19pdGVyYXRlMyhjdXJyZW50X2ZzLCBpbm8sIGZsYWdzLCBOVUxMLAorCQkJICAgICAgcHJpbnRfYmxvY2tzX3Byb2MsIE5VTEwpOworCXB1dGMoJ1xuJywgc3Rkb3V0KTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF9zdXBlcl9zaXplLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3Rfc3VwZXJfc2l6ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZGFjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3Rfc3VwZXJfc2l6ZS5jCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogVGhpcyB0ZXN0aW5nIHByb2dyYW0gbWFrZXMgc3VyZSBzdXBlcmJsb2NrIHNpemUgaXMgMTAyNCBieXRlcyBsb25nCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKworI2RlZmluZSBzYl9zdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jaworI2RlZmluZSBzYl9zdHJ1Y3RfbmFtZSAiZXh0Ml9zdXBlcl9ibG9jayIKKworc3RydWN0IHNiX3N0cnVjdCBzYjsKKworI2lmbmRlZiBvZmZzZXRvZgorI2RlZmluZSBvZmZzZXRvZih0eXBlLCBtZW1iZXIpICBfX2J1aWx0aW5fb2Zmc2V0b2YgKHR5cGUsIG1lbWJlcikKKyNlbmRpZgorCisjZGVmaW5lIGNoZWNrX2ZpZWxkKHgsIHMpIGN1cl9vZmZzZXQgPSBkb19maWVsZCgjeCwgcywgc2l6ZW9mKHNiLngpLAkgICAgICAgXAorCQkJCQkJb2Zmc2V0b2Yoc3RydWN0IHNiX3N0cnVjdCwgeCksIFwKKwkJCQkJCWN1cl9vZmZzZXQpCisKK3N0YXRpYyBpbnQgZG9fZmllbGQoY29uc3QgY2hhciAqZmllbGQsIHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGN1cl9zaXplLAorCQkgICAgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjdXJfb2Zmc2V0KQoreworCWlmIChzaXplICE9IGN1cl9zaXplKSB7CisJCXByaW50ZigiZXJyb3I6ICVzIHNpemUgJXUgc2hvdWxkIGJlICV1XG4iLAorCQkgICAgICAgZmllbGQsIGN1cl9zaXplLCBzaXplKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKG9mZnNldCAhPSBjdXJfb2Zmc2V0KSB7CisJCXByaW50ZigiZXJyb3I6ICVzIG9mZnNldCAldSBzaG91bGQgYmUgJXVcbiIsCisJCSAgICAgICBmaWVsZCwgY3VyX29mZnNldCwgb2Zmc2V0KTsKKwkJZXhpdCgxKTsKKwl9CisJcHJpbnRmKCIlOGQgJS0zMHMgJTN1XG4iLCBvZmZzZXQsIGZpZWxkLCBzaXplKTsKKwlyZXR1cm4gb2Zmc2V0ICsgc2l6ZTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworI2lmIChfX0dOVUNfXyA+PSA0KQorCWludCBjdXJfb2Zmc2V0ID0gMDsKKworCXByaW50ZigiJThzICUtMzBzICUzc1xuIiwgIm9mZnNldCIsICJmaWVsZCIsICJzaXplIik7CisJY2hlY2tfZmllbGQoc19pbm9kZXNfY291bnQsIDQpOworCWNoZWNrX2ZpZWxkKHNfYmxvY2tzX2NvdW50LCA0KTsKKwljaGVja19maWVsZChzX3JfYmxvY2tzX2NvdW50LCA0KTsKKwljaGVja19maWVsZChzX2ZyZWVfYmxvY2tzX2NvdW50LCA0KTsKKwljaGVja19maWVsZChzX2ZyZWVfaW5vZGVzX2NvdW50LCA0KTsKKwljaGVja19maWVsZChzX2ZpcnN0X2RhdGFfYmxvY2ssIDQpOworCWNoZWNrX2ZpZWxkKHNfbG9nX2Jsb2NrX3NpemUsIDQpOworCWNoZWNrX2ZpZWxkKHNfbG9nX2NsdXN0ZXJfc2l6ZSwgNCk7CisJY2hlY2tfZmllbGQoc19ibG9ja3NfcGVyX2dyb3VwLCA0KTsKKwljaGVja19maWVsZChzX2NsdXN0ZXJzX3Blcl9ncm91cCwgNCk7CisJY2hlY2tfZmllbGQoc19pbm9kZXNfcGVyX2dyb3VwLCA0KTsKKwljaGVja19maWVsZChzX210aW1lLCA0KTsKKwljaGVja19maWVsZChzX3d0aW1lLCA0KTsKKwljaGVja19maWVsZChzX21udF9jb3VudCwgMik7CisJY2hlY2tfZmllbGQoc19tYXhfbW50X2NvdW50LCAyKTsKKwljaGVja19maWVsZChzX21hZ2ljLCAyKTsKKwljaGVja19maWVsZChzX3N0YXRlLCAyKTsKKwljaGVja19maWVsZChzX2Vycm9ycywgMik7CisJY2hlY2tfZmllbGQoc19taW5vcl9yZXZfbGV2ZWwsIDIpOworCWNoZWNrX2ZpZWxkKHNfbGFzdGNoZWNrLCA0KTsKKwljaGVja19maWVsZChzX2NoZWNraW50ZXJ2YWwsIDQpOworCWNoZWNrX2ZpZWxkKHNfY3JlYXRvcl9vcywgNCk7CisJY2hlY2tfZmllbGQoc19yZXZfbGV2ZWwsIDQpOworCWNoZWNrX2ZpZWxkKHNfZGVmX3Jlc3VpZCwgMik7CisJY2hlY2tfZmllbGQoc19kZWZfcmVzZ2lkLCAyKTsKKwljaGVja19maWVsZChzX2ZpcnN0X2lubywgNCk7CisJY2hlY2tfZmllbGQoc19pbm9kZV9zaXplLCAyKTsKKwljaGVja19maWVsZChzX2Jsb2NrX2dyb3VwX25yLCAyKTsKKwljaGVja19maWVsZChzX2ZlYXR1cmVfY29tcGF0LCA0KTsKKwljaGVja19maWVsZChzX2ZlYXR1cmVfaW5jb21wYXQsIDQpOworCWNoZWNrX2ZpZWxkKHNfZmVhdHVyZV9yb19jb21wYXQsIDQpOworCWNoZWNrX2ZpZWxkKHNfdXVpZCwgMTYpOworCWNoZWNrX2ZpZWxkKHNfdm9sdW1lX25hbWUsIDE2KTsKKwljaGVja19maWVsZChzX2xhc3RfbW91bnRlZCwgNjQpOworCWNoZWNrX2ZpZWxkKHNfYWxnb3JpdGhtX3VzYWdlX2JpdG1hcCwgNCk7CisJY2hlY2tfZmllbGQoc19wcmVhbGxvY19ibG9ja3MsIDEpOworCWNoZWNrX2ZpZWxkKHNfcHJlYWxsb2NfZGlyX2Jsb2NrcywgMSk7CisJY2hlY2tfZmllbGQoc19yZXNlcnZlZF9nZHRfYmxvY2tzLCAyKTsKKwljaGVja19maWVsZChzX2pvdXJuYWxfdXVpZCwgMTYpOworCWNoZWNrX2ZpZWxkKHNfam91cm5hbF9pbnVtLCA0KTsKKwljaGVja19maWVsZChzX2pvdXJuYWxfZGV2LCA0KTsKKwljaGVja19maWVsZChzX2xhc3Rfb3JwaGFuLCA0KTsKKwljaGVja19maWVsZChzX2hhc2hfc2VlZCwgNCAqIDQpOworCWNoZWNrX2ZpZWxkKHNfZGVmX2hhc2hfdmVyc2lvbiwgMSk7CisJY2hlY2tfZmllbGQoc19qbmxfYmFja3VwX3R5cGUsIDEpOworCWNoZWNrX2ZpZWxkKHNfZGVzY19zaXplLCAyKTsKKwljaGVja19maWVsZChzX2RlZmF1bHRfbW91bnRfb3B0cywgNCk7CisJY2hlY2tfZmllbGQoc19maXJzdF9tZXRhX2JnLCA0KTsKKwljaGVja19maWVsZChzX21rZnNfdGltZSwgNCk7CisJY2hlY2tfZmllbGQoc19qbmxfYmxvY2tzLCAxNyAqIDQpOworCWNoZWNrX2ZpZWxkKHNfYmxvY2tzX2NvdW50X2hpLCA0KTsKKwljaGVja19maWVsZChzX3JfYmxvY2tzX2NvdW50X2hpLCA0KTsKKwljaGVja19maWVsZChzX2ZyZWVfYmxvY2tzX2hpLCA0KTsKKwljaGVja19maWVsZChzX21pbl9leHRyYV9pc2l6ZSwgMik7CisJY2hlY2tfZmllbGQoc193YW50X2V4dHJhX2lzaXplLCAyKTsKKwljaGVja19maWVsZChzX2ZsYWdzLCA0KTsKKwljaGVja19maWVsZChzX3JhaWRfc3RyaWRlLCAyKTsKKwljaGVja19maWVsZChzX21tcF91cGRhdGVfaW50ZXJ2YWwsIDIpOworCWNoZWNrX2ZpZWxkKHNfbW1wX2Jsb2NrLCA4KTsKKwljaGVja19maWVsZChzX3JhaWRfc3RyaXBlX3dpZHRoLCA0KTsKKwljaGVja19maWVsZChzX2xvZ19ncm91cHNfcGVyX2ZsZXgsIDEpOworCWNoZWNrX2ZpZWxkKHNfY2hlY2tzdW1fdHlwZSwgMSk7CisJY2hlY2tfZmllbGQoc19lbmNyeXB0aW9uX2xldmVsLCAxKTsKKwljaGVja19maWVsZChzX3Jlc2VydmVkX3BhZCwgMSk7CisJY2hlY2tfZmllbGQoc19rYnl0ZXNfd3JpdHRlbiwgOCk7CisJY2hlY2tfZmllbGQoc19zbmFwc2hvdF9pbnVtLCA0KTsKKwljaGVja19maWVsZChzX3NuYXBzaG90X2lkLCA0KTsKKwljaGVja19maWVsZChzX3NuYXBzaG90X3JfYmxvY2tzX2NvdW50LCA4KTsKKwljaGVja19maWVsZChzX3NuYXBzaG90X2xpc3QsIDQpOworCWNoZWNrX2ZpZWxkKHNfZXJyb3JfY291bnQsIDQpOworCWNoZWNrX2ZpZWxkKHNfZmlyc3RfZXJyb3JfdGltZSwgNCk7CisJY2hlY2tfZmllbGQoc19maXJzdF9lcnJvcl9pbm8sIDQpOworCWNoZWNrX2ZpZWxkKHNfZmlyc3RfZXJyb3JfYmxvY2ssIDgpOworCWNoZWNrX2ZpZWxkKHNfZmlyc3RfZXJyb3JfZnVuYywgMzIpOworCWNoZWNrX2ZpZWxkKHNfZmlyc3RfZXJyb3JfbGluZSwgNCk7CisJY2hlY2tfZmllbGQoc19sYXN0X2Vycm9yX3RpbWUsIDQpOworCWNoZWNrX2ZpZWxkKHNfbGFzdF9lcnJvcl9pbm8sIDQpOworCWNoZWNrX2ZpZWxkKHNfbGFzdF9lcnJvcl9saW5lLCA0KTsKKwljaGVja19maWVsZChzX2xhc3RfZXJyb3JfYmxvY2ssIDgpOworCWNoZWNrX2ZpZWxkKHNfbGFzdF9lcnJvcl9mdW5jLCAzMik7CisJY2hlY2tfZmllbGQoc19tb3VudF9vcHRzLCA2NCk7CisJY2hlY2tfZmllbGQoc191c3JfcXVvdGFfaW51bSwgNCk7CisJY2hlY2tfZmllbGQoc19ncnBfcXVvdGFfaW51bSwgNCk7CisJY2hlY2tfZmllbGQoc19vdmVyaGVhZF9ibG9ja3MsIDQpOworCWNoZWNrX2ZpZWxkKHNfYmFja3VwX2JncywgOCk7CisJY2hlY2tfZmllbGQoc19lbmNyeXB0X2FsZ29zLCA0KTsKKwljaGVja19maWVsZChzX2VuY3J5cHRfcHdfc2FsdCwgMTYpOworCWNoZWNrX2ZpZWxkKHNfbHBmX2lubywgNCk7CisJY2hlY2tfZmllbGQoc19wcmpfcXVvdGFfaW51bSwgNCk7CisJY2hlY2tfZmllbGQoc19jaGVja3N1bV9zZWVkLCA0KTsKKwljaGVja19maWVsZChzX3Jlc2VydmVkLCA5OCAqIDQpOworCWNoZWNrX2ZpZWxkKHNfY2hlY2tzdW0sIDQpOworCWRvX2ZpZWxkKCJTdXBlcmJsb2NrIGVuZCIsIDAsIDAsIGN1cl9vZmZzZXQsIDEwMjQpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfdHlwZXMuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3RzdF90eXBlcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNDExMjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy90c3RfdHlwZXMuYwpAQCAtMCwwICsxLDY0IEBACisvKgorICogVGhpcyB0ZXN0aW5nIHByb2dyYW0gbWFrZXMgc3VyZSB0aGUgZXh0Ml90eXBlcyBoZWFkZXIgZmlsZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml90eXBlcy5oIgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaWYgKHNpemVvZihfX3U4KSAhPSAxKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fdTgpIGlzICVkIHNob3VsZCBiZSAxXG4iLAorCQkgICAgICAgKGludClzaXplb2YoX191OCkpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fczgpICE9IDEpIHsKKwkJcHJpbnRmKCJTaXplb2YoX3M4KSBpcyAlZCBzaG91bGQgYmUgMVxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fczgpKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHNpemVvZihfX3UxNikgIT0gMikgeworCQlwcmludGYoIlNpemVvZihfX3UxNikgaXMgJWQgc2hvdWxkIGJlIDJcbiIsCisJCSAgICAgICAoaW50KXNpemVvZihfX3UxNikpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fczE2KSAhPSAyKSB7CisJCXByaW50ZigiU2l6ZW9mKF9fczE2KSBpcyAlZCBzaG91bGQgYmUgMlxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fczE2KSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzaXplb2YoX191MzIpICE9IDQpIHsKKwkJcHJpbnRmKCJTaXplb2YoX191MzIpIGlzICVkIHNob3VsZCBiZSA0XG4iLAorCQkgICAgICAgKGludClzaXplb2YoX191MzIpKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHNpemVvZihfX3MzMikgIT0gNCkgeworCQlwcmludGYoIlNpemVvZihfX3MzMikgaXMgJWQgc2hvdWxkIGJlIDRcbiIsCisJCSAgICAgICAoaW50KXNpemVvZihfX3MzMikpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2l6ZW9mKF9fdTY0KSAhPSA4KSB7CisJCXByaW50ZigiU2l6ZW9mKF9fdTY0KSBpcyAlZCBzaG91bGQgYmUgOFxuIiwKKwkJICAgICAgIChpbnQpc2l6ZW9mKF9fdTY0KSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzaXplb2YoX19zNjQpICE9IDgpIHsKKwkJcHJpbnRmKCJTaXplb2YoX19zNjQpIGlzICVkIHNob3VsZCBiZSA4XG4iLAorCQkgICAgICAgKGludClzaXplb2YoX19zNjQpKTsKKwkJZXhpdCgxKTsKKwl9CisJcHJpbnRmKCJUaGUgZXh0Ml90eXBlcy5oIHR5cGVzIGFyZSBjb3JyZWN0LlxuIik7CisJZXhpdCgwKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdW5kb19pby5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdW5kb19pby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3NmQ1YjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy91bmRvX2lvLmMKQEAgLTAsMCArMSwxMTA0IEBACisvKgorICogdW5kb19pby5jIC0tLSBUaGlzIGlzIHRoZSB1bmRvIGlvIG1hbmFnZXIgdGhhdCBjb3BpZXMgdGhlIG9sZCBkYXRhIHRoYXQKKyAqIGNvcGllcyB0aGUgb2xkIGRhdGEgYmVpbmcgb3ZlcndyaXR0ZW4gaW50byBhIHRkYiBkYXRhYmFzZQorICoKKyAqIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24sIDIwMDcKKyAqIEF1dGhvciBBbmVlc2ggS3VtYXIgSy5WIDxhbmVlc2gua3VtYXJAbGludXgudm5ldC5pYm0uY29tPgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBfX2xpbnV4X18KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImV4dDJmc1AuaCIKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIEFUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgQVRUUih4KQorI2VuZGlmCisKKyN1bmRlZiBERUJVRworCisjaWZkZWYgREVCVUcKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikgIGRvIHtwcmludGYoZiwgIyMgYSk7IGZmbHVzaChzdGRvdXQpOyB9IHdoaWxlICgwKQorI2Vsc2UKKyMgZGVmaW5lIGRiZ19wcmludGYoZiwgYS4uLikKKyNlbmRpZgorCisvKgorICogRm9yIGNoZWNraW5nIHN0cnVjdHVyZSBtYWdpYyBudW1iZXJzLi4uCisgKi8KKworI2RlZmluZSBFWFQyX0NIRUNLX01BR0lDKHN0cnVjdCwgY29kZSkgXAorCSAgaWYgKChzdHJ1Y3QpLT5tYWdpYyAhPSAoY29kZSkpIHJldHVybiAoY29kZSkKKy8qCisgKiBVbmRvIGZpbGUgZm9ybWF0OiBUaGUgZmlsZSBpcyBjdXQgdXAgaW50byB1bmRvX2hlYWRlci5ibG9ja19zaXplIGJsb2Nrcy4KKyAqIFRoZSBmaXJzdCBibG9jayBjb250YWlucyB0aGUgaGVhZGVyLgorICogVGhlIHNlY29uZCBibG9jayBjb250YWlucyB0aGUgc3VwZXJibG9jay4KKyAqIFRoZXJlIGlzIHRoZW4gYSByZXBlYXRpbmcgc2VyaWVzIG9mIGJsb2NrcyBhcyBmb2xsb3dzOgorICogICBBIGtleSBibG9jaywgd2hpY2ggY29udGFpbnMgdW5kb19rZXlzIHRvIG1hcCB0aGUgZm9sbG93aW5nIGRhdGEgYmxvY2tzLgorICogICBEYXRhIGJsb2NrcworICogKE5vdGUgdGhhdCB0aGVyZSBhcmUgcG9pbnRlcnMgdG8gdGhlIGZpcnN0IGtleSBibG9jayBhbmQgdGhlIHNiLCBzbyB0aGlzCisgKiBvcmRlciBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkuKQorICovCisjZGVmaW5lIEUyVU5ET19NQUdJQyAiRTJVTkRPMDIiCisjZGVmaW5lIEtFWUJMT0NLX01BR0lDIDB4Q0FERUNBREUKKworI2RlZmluZSBFMlVORE9fU1RBVEVfRklOSVNIRUQJMHgxCS8qIHVuZG8gZmlsZSBpcyBjb21wbGV0ZSAqLworCisjZGVmaW5lIEUyVU5ET19NSU5fQkxPQ0tfU0laRQkxMDI0CS8qIHVuZG8gYmxvY2tzIGFyZSBubyBsZXNzIHRoYW4gMUtCICovCisjZGVmaW5lIEUyVU5ET19NQVhfQkxPQ0tfU0laRQkxMDQ4NTc2CS8qIHVuZG8gYmxvY2tzIGFyZSBubyBtb3JlIHRoYW4gMU1CICovCisKK3N0cnVjdCB1bmRvX2hlYWRlciB7CisJY2hhciBtYWdpY1s4XTsJCS8qICJFMlVORE8wMiIgKi8KKwlfX2xlNjQgbnVtX2tleXM7CS8qIGhvdyBtYW55IGtleXM/ICovCisJX19sZTY0IHN1cGVyX29mZnNldDsJLyogd2hlcmUgaW4gdGhlIGZpbGUgaXMgdGhlIHN1cGVyYmxvY2sgY29weT8gKi8KKwlfX2xlNjQga2V5X29mZnNldDsJLyogd2hlcmUgZG8gdGhlIGtleS9kYXRhIGJsb2NrIGNodW5rcyBzdGFydD8gKi8KKwlfX2xlMzIgYmxvY2tfc2l6ZTsJLyogYmxvY2sgc2l6ZSBvZiB0aGUgdW5kbyBmaWxlICovCisJX19sZTMyIGZzX2Jsb2NrX3NpemU7CS8qIGJsb2NrIHNpemUgb2YgdGhlIHRhcmdldCBkZXZpY2UgKi8KKwlfX2xlMzIgc2JfY3JjOwkJLyogY3JjMzJjIG9mIHRoZSBzdXBlcmJsb2NrICovCisJX19sZTMyIHN0YXRlOwkJLyogZTJ1bmRvIHN0YXRlIGZsYWdzICovCisJX19sZTMyIGZfY29tcGF0OwkvKiBjb21wYXRpYmxlIGZlYXR1cmVzICovCisJX19sZTMyIGZfaW5jb21wYXQ7CS8qIGluY29tcGF0aWJsZSBmZWF0dXJlcyAobm9uZSBzbyBmYXIpICovCisJX19sZTMyIGZfcm9jb21wYXQ7CS8qIHJvIGNvbXBhdGlibGUgZmVhdHVyZXMgKG5vbmUgc28gZmFyKSAqLworCV9fbGUzMiBwYWQzMjsJCS8qIHBhZGRpbmcgZm9yIGZzX29mZnNldCAqLworCV9fbGU2NCBmc19vZmZzZXQ7CS8qIGZpbGVzeXN0ZW0gb2Zmc2V0ICovCisJX191OCBwYWRkaW5nWzQzNl07CS8qIHBhZGRpbmcgKi8KKwlfX2xlMzIgaGVhZGVyX2NyYzsJLyogY3JjMzJjIG9mIHRoaXMgaGVhZGVyIChidXQgbm90IHRoaXMgZmllbGQpICovCit9OworCisjZGVmaW5lIEUyVU5ET19NQVhfRVhURU5UX0JMT0NLUwk1MTIJLyogbWF4IGV4dGVudCBzaXplLCBpbiBibG9ja3MgKi8KKworc3RydWN0IHVuZG9fa2V5IHsKKwlfX2xlNjQgZnNibGs7CQkvKiB3aGVyZSBpbiB0aGUgZnMgZG9lcyB0aGUgYmxvY2sgZ28gKi8KKwlfX2xlMzIgYmxrX2NyYzsJCS8qIGNyYzMyYyBvZiB0aGUgYmxvY2sgKi8KKwlfX2xlMzIgc2l6ZTsJCS8qIGhvdyBtYW55IGJ5dGVzIGluIHRoaXMgYmxvY2s/ICovCit9OworCitzdHJ1Y3QgdW5kb19rZXlfYmxvY2sgeworCV9fbGUzMiBtYWdpYzsJCS8qIEtFWUJMT0NLX01BR0lDIG51bWJlciAqLworCV9fbGUzMiBjcmM7CQkvKiBibG9jayBjaGVja3N1bSAqLworCV9fbGU2NCByZXNlcnZlZDsJLyogemVybyAqLworCisjaWYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCisJc3RydWN0IHVuZG9fa2V5IGtleXNbXTsJCS8qIGtleXMsIHdoaWNoIGNvbWUgaW1tZWRpYXRlbHkgYWZ0ZXIgKi8KKyNlbHNlCisJc3RydWN0IHVuZG9fa2V5IGtleXNbMF07CS8qIGtleXMsIHdoaWNoIGNvbWUgaW1tZWRpYXRlbHkgYWZ0ZXIgKi8KKyNlbmRpZgorfTsKKworc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhIHsKKwlpbnQJbWFnaWM7CisKKwkvKiB0aGUgdW5kbyBmaWxlIGlvIGNoYW5uZWwgKi8KKwlpb19jaGFubmVsIHVuZG9fZmlsZTsKKwlibGs2NF90IHVuZG9fYmxrX251bTsJCQkvKiBuZXh0IGZyZWUgYmxvY2sgKi8KKwlibGs2NF90IGtleV9ibGtfbnVtOwkJCS8qIGN1cnJlbnQga2V5IGJsb2NrIGxvY2F0aW9uICovCisJYmxrNjRfdCBzdXBlcl9ibGtfbnVtOwkJCS8qIHN1cGVyYmxvY2sgbG9jYXRpb24gKi8KKwlibGs2NF90IGZpcnN0X2tleV9ibGs7CQkJLyogZmlyc3Qga2V5IGJsb2NrIGxvY2F0aW9uICovCisJc3RydWN0IHVuZG9fa2V5X2Jsb2NrICprZXliOworCXNpemVfdCBudW1fa2V5cywga2V5c19pbl9ibG9jazsKKworCS8qIFRoZSBiYWNraW5nIGlvIGNoYW5uZWwgKi8KKwlpb19jaGFubmVsIHJlYWw7CisKKwl1bnNpZ25lZCBsb25nIGxvbmcgdGRiX2RhdGFfc2l6ZTsKKwlpbnQgdGRiX3dyaXR0ZW47CisKKwkvKiB0byBzdXBwb3J0IG9mZnNldCBpbiB1bml4IEkvTyBtYW5hZ2VyICovCisJZXh0Ml9sb2ZmX3Qgb2Zmc2V0OworCisJZXh0MmZzX2Jsb2NrX2JpdG1hcCB3cml0dGVuX2Jsb2NrX21hcDsKKwlzdHJ1Y3Qgc3RydWN0X2V4dDJfZmlsc3lzIGZha2VfZnM7CisJY2hhciAqdGRiX2ZpbGU7CisJc3RydWN0IHVuZG9faGVhZGVyIGhkcjsKK307CisjZGVmaW5lIEtFWVNfUEVSX0JMT0NLKGQpICgoKGQpLT50ZGJfZGF0YV9zaXplIC8gc2l6ZW9mKHN0cnVjdCB1bmRvX2tleSkpIC0gMSkKKworI2RlZmluZSBFMlVORE9fRkVBVFVSRV9DT01QQVRfRlNfT0ZGU0VUIDB4MQkvKiB0aGUgZmlsZXN5c3RlbSBvZmZzZXQgKi8KKworc3RhdGljIGlubGluZSB2b2lkIGUydW5kb19zZXRfZmVhdHVyZV9mc19vZmZzZXQoc3RydWN0IHVuZG9faGVhZGVyICpoZWFkZXIpIHsKKwloZWFkZXItPmZfY29tcGF0IHw9IGV4dDJmc19sZTMyX3RvX2NwdShFMlVORE9fRkVBVFVSRV9DT01QQVRfRlNfT0ZGU0VUKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGUydW5kb19jbGVhcl9mZWF0dXJlX2ZzX29mZnNldChzdHJ1Y3QgdW5kb19oZWFkZXIgKmhlYWRlcikgeworCWhlYWRlci0+Zl9jb21wYXQgJj0gfmV4dDJmc19sZTMyX3RvX2NwdShFMlVORE9fRkVBVFVSRV9DT01QQVRfRlNfT0ZGU0VUKTsKK30KKworc3RhdGljIGlvX21hbmFnZXIgdW5kb19pb19iYWNraW5nX21hbmFnZXI7CitzdGF0aWMgY2hhciAqdGRiX2ZpbGU7CitzdGF0aWMgaW50IGFjdHVhbF9zaXplOworCitlcnJjb2RlX3Qgc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKGlvX21hbmFnZXIgbWFuYWdlcikKK3sKKwkvKgorCSAqIFdlIG1heSB3YW50IHRvIGRvIHNvbWUgdmFsaWRhdGlvbiBsYXRlcgorCSAqLworCXVuZG9faW9fYmFja2luZ19tYW5hZ2VyID0gbWFuYWdlcjsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKGNoYXIgKmZpbGVfbmFtZSkKK3sKKwl0ZGJfZmlsZSA9IHN0cmR1cChmaWxlX25hbWUpOworCisJaWYgKHRkYl9maWxlID09IE5VTEwpIHsKKwkJcmV0dXJuIEVYVDJfRVRfTk9fTUVNT1JZOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHdyaXRlX3VuZG9faW5kZXhlcyhzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGEsIGludCBmbHVzaCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHN1cGVyOworCWlvX2NoYW5uZWwgY2hhbm5lbDsKKwlpbnQgYmxvY2tfc2l6ZTsKKwlfX3UzMiBzYl9jcmMsIGhkcl9jcmM7CisKKwkvKiBTcGl0IG91dCBhIGtleSBibG9jaywgaWYgdGhlcmUncyBhbnkgZGF0YSAqLworCWlmIChkYXRhLT5rZXlzX2luX2Jsb2NrKSB7CisJCWRhdGEtPmtleWItPm1hZ2ljID0gZXh0MmZzX2NwdV90b19sZTMyKEtFWUJMT0NLX01BR0lDKTsKKwkJZGF0YS0+a2V5Yi0+Y3JjID0gMDsKKwkJZGF0YS0+a2V5Yi0+Y3JjID0gZXh0MmZzX2NwdV90b19sZTMyKAorCQkJCQkgZXh0MmZzX2NyYzMyY19sZSh+MCwKKwkJCQkJICh1bnNpZ25lZCBjaGFyICopZGF0YS0+a2V5YiwKKwkJCQkJIGRhdGEtPnRkYl9kYXRhX3NpemUpKTsKKwkJZGJnX3ByaW50ZigiV3JpdGluZyBrZXlibG9jayB0byBibGsgJWxsdVxuIiwgZGF0YS0+a2V5X2Jsa19udW0pOworCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGRhdGEtPnVuZG9fZmlsZSwKKwkJCQkJCWRhdGEtPmtleV9ibGtfbnVtLAorCQkJCQkJMSwgZGF0YS0+a2V5Yik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQkvKiBNb3ZlIG9uIHRvIHRoZSBuZXh0IGtleSBibG9jayBpZiBpdCdzIGZ1bGwuICovCisJCWlmIChkYXRhLT5rZXlzX2luX2Jsb2NrID09IEtFWVNfUEVSX0JMT0NLKGRhdGEpKSB7CisJCQltZW1zZXQoZGF0YS0+a2V5YiwgMCwgZGF0YS0+dGRiX2RhdGFfc2l6ZSk7CisJCQlkYXRhLT5rZXlzX2luX2Jsb2NrID0gMDsKKwkJCWRhdGEtPmtleV9ibGtfbnVtID0gZGF0YS0+dW5kb19ibGtfbnVtOworCQkJZGF0YS0+dW5kb19ibGtfbnVtKys7CisJCX0KKwl9CisKKwkvKiBQcmVwYXJlIHN1cGVyYmxvY2sgZm9yIHdyaXRlICovCisJY2hhbm5lbCA9IGRhdGEtPnJlYWw7CisJYmxvY2tfc2l6ZSA9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisKKwlpb19jaGFubmVsX3NldF9ibGtzaXplKGNoYW5uZWwsIFNVUEVSQkxPQ0tfT0ZGU0VUKTsKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoY2hhbm5lbCwgMSwgLVNVUEVSQkxPQ0tfU0laRSwgJnN1cGVyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9vdXQ7CisJc2JfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKikmc3VwZXIsIFNVUEVSQkxPQ0tfU0laRSk7CisJc3VwZXIuc19tYWdpYyA9IH5zdXBlci5zX21hZ2ljOworCisJLyogV3JpdGUgdGhlIHVuZG8gaGVhZGVyIHRvIGRpc2suICovCisJbWVtY3B5KGRhdGEtPmhkci5tYWdpYywgRTJVTkRPX01BR0lDLCBzaXplb2YoZGF0YS0+aGRyLm1hZ2ljKSk7CisJZGF0YS0+aGRyLm51bV9rZXlzID0gZXh0MmZzX2NwdV90b19sZTY0KGRhdGEtPm51bV9rZXlzKTsKKwlkYXRhLT5oZHIuc3VwZXJfb2Zmc2V0ID0gZXh0MmZzX2NwdV90b19sZTY0KGRhdGEtPnN1cGVyX2Jsa19udW0pOworCWRhdGEtPmhkci5rZXlfb2Zmc2V0ID0gZXh0MmZzX2NwdV90b19sZTY0KGRhdGEtPmZpcnN0X2tleV9ibGspOworCWRhdGEtPmhkci5mc19ibG9ja19zaXplID0gZXh0MmZzX2NwdV90b19sZTMyKGJsb2NrX3NpemUpOworCWRhdGEtPmhkci5zYl9jcmMgPSBleHQyZnNfY3B1X3RvX2xlMzIoc2JfY3JjKTsKKwlkYXRhLT5oZHIuZnNfb2Zmc2V0ID0gZXh0MmZzX2NwdV90b19sZTY0KGRhdGEtPm9mZnNldCk7CisJaWYgKGRhdGEtPm9mZnNldCkKKwkJZTJ1bmRvX3NldF9mZWF0dXJlX2ZzX29mZnNldCgmZGF0YS0+aGRyKTsKKwllbHNlCisJCWUydW5kb19jbGVhcl9mZWF0dXJlX2ZzX29mZnNldCgmZGF0YS0+aGRyKTsKKwloZHJfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKikmZGF0YS0+aGRyLAorCQkJCSAgIHNpemVvZihkYXRhLT5oZHIpIC0KKwkJCQkgICBzaXplb2YoZGF0YS0+aGRyLmhlYWRlcl9jcmMpKTsKKwlkYXRhLT5oZHIuaGVhZGVyX2NyYyA9IGV4dDJmc19jcHVfdG9fbGUzMihoZHJfY3JjKTsKKwlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGRhdGEtPnVuZG9fZmlsZSwgMCwKKwkJCQkJLShpbnQpc2l6ZW9mKGRhdGEtPmhkciksCisJCQkJCSZkYXRhLT5oZHIpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyX291dDsKKworCS8qCisJICogUmVjb3JkIHRoZSBlbnRpcmUgc3VwZXJibG9jayAoaW4gRlMgYnl0ZSBvcmRlcikgc28gdGhhdCB3ZSBjYW4ndAorCSAqIGFwcGx5IGUydW5kbyBmaWxlcyB0byB0aGUgd3JvbmcgRlMgb3Igb3V0IG9mIG9yZGVyLgorCSAqLworCWRiZ19wcmludGYoIldyaXRpbmcgc3VwZXJibG9jayB0byBibG9jayAlbGx1XG4iLCBkYXRhLT5zdXBlcl9ibGtfbnVtKTsKKwlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGRhdGEtPnVuZG9fZmlsZSwgZGF0YS0+c3VwZXJfYmxrX251bSwKKwkJCQkJLVNVUEVSQkxPQ0tfU0laRSwgJnN1cGVyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9vdXQ7CisKKwlpZiAoZmx1c2gpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfZmx1c2goZGF0YS0+dW5kb19maWxlKTsKK2Vycl9vdXQ6CisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShjaGFubmVsLCBibG9ja19zaXplKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fc2V0dXBfdGRiKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqZGF0YSkKK3sKKwlpbnQgaTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKGRhdGEtPnRkYl93cml0dGVuID09IDEpCisJCXJldHVybiAwOworCisJZGF0YS0+dGRiX3dyaXR0ZW4gPSAxOworCisJLyogTWFrZSBhIGJpdG1hcCB0byB0cmFjayB3aGF0IHdlJ3ZlIHdyaXR0ZW4gKi8KKwltZW1zZXQoJmRhdGEtPmZha2VfZnMsIDAsIHNpemVvZihkYXRhLT5mYWtlX2ZzKSk7CisJZGF0YS0+ZmFrZV9mcy5ibG9ja3NpemUgPSBkYXRhLT50ZGJfZGF0YV9zaXplOworCXJldHZhbCA9IGV4dDJmc19hbGxvY19nZW5lcmljX2JtYXAoJmRhdGEtPmZha2VfZnMsCisJCQkJRVhUMl9FVF9NQUdJQ19CTE9DS19CSVRNQVA2NCwKKwkJCQlFWFQyRlNfQk1BUDY0X1JCVFJFRSwKKwkJCQkwLCB+MVVMTCwgfjFVTEwsCisJCQkJInVuZG8gYmxvY2sgbWFwIiwgJmRhdGEtPndyaXR0ZW5fYmxvY2tfbWFwKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJLyogQWxsb2NhdGUga2V5IGJsb2NrICovCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZGF0YS0+dGRiX2RhdGFfc2l6ZSwgJmRhdGEtPmtleWIpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJZGF0YS0+a2V5X2Jsa19udW0gPSBkYXRhLT5maXJzdF9rZXlfYmxrOworCisJLyogUmVjb3JkIGJsb2NrIHNpemUgKi8KKwlkYmdfcHJpbnRmKCJVbmRvIGJsb2NrIHNpemUgJWxsdVxuIiwgZGF0YS0+dGRiX2RhdGFfc2l6ZSk7CisJZGJnX3ByaW50ZigiS2V5cyBwZXIgYmxvY2sgJWxsdVxuIiwgS0VZU19QRVJfQkxPQ0soZGF0YSkpOworCWRhdGEtPmhkci5ibG9ja19zaXplID0gZXh0MmZzX2NwdV90b19sZTMyKGRhdGEtPnRkYl9kYXRhX3NpemUpOworCWlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoZGF0YS0+dW5kb19maWxlLCBkYXRhLT50ZGJfZGF0YV9zaXplKTsKKworCS8qIEVuc3VyZSB0aGF0IHdlIGhhdmUgc3BhY2UgZm9yIGhlYWRlciBibG9ja3MgKi8KKwlmb3IgKGkgPSAwOyBpIDw9IDI7IGkrKykgeworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZGF0YS0+dW5kb19maWxlLCBpLCAxLAorCQkJCQkgICAgICAgZGF0YS0+a2V5Yik7CisJCWlmIChyZXR2YWwpCisJCQltZW1zZXQoZGF0YS0+a2V5YiwgMCwgZGF0YS0+dGRiX2RhdGFfc2l6ZSk7CisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZGF0YS0+dW5kb19maWxlLCBpLCAxLAorCQkJCQkJZGF0YS0+a2V5Yik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlyZXR2YWwgPSBpb19jaGFubmVsX2ZsdXNoKGRhdGEtPnVuZG9fZmlsZSk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKwltZW1zZXQoZGF0YS0+a2V5YiwgMCwgZGF0YS0+dGRiX2RhdGFfc2l6ZSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5kb193cml0ZV90ZGIoaW9fY2hhbm5lbCBjaGFubmVsLAorCQkJCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywgaW50IGNvdW50KQorCit7CisJaW50IHNpemUsIHN6OworCXVuc2lnbmVkIGxvbmcgbG9uZyBibG9ja19udW0sIGJhY2tpbmdfYmxrX251bTsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKwlleHQyX2xvZmZfdCBvZmZzZXQ7CisJc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICpkYXRhOworCXVuc2lnbmVkIGNoYXIgKnJlYWRfcHRyOworCXVuc2lnbmVkIGxvbmcgbG9uZyBlbmRfYmxvY2s7CisJdW5zaWduZWQgbG9uZyBsb25nIGRhdGFfc2l6ZTsKKwlzdHJ1Y3QgdW5kb19rZXkgKmtleTsKKwlfX3UzMiBibGtfY3JjOworCisJZGF0YSA9IChzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCisJaWYgKGRhdGEtPnVuZG9fZmlsZSA9PSBOVUxMKSB7CisJCS8qCisJCSAqIFRyYW5zYWN0aW9uIGRhdGFiYXNlIG5vdCBpbml0aWFsaXplZAorCQkgKi8KKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGNvdW50ID09IDEpCisJCXNpemUgPSBjaGFubmVsLT5ibG9ja19zaXplOworCWVsc2UgeworCQlpZiAoY291bnQgPCAwKQorCQkJc2l6ZSA9IC1jb3VudDsKKwkJZWxzZQorCQkJc2l6ZSA9IGNvdW50ICogY2hhbm5lbC0+YmxvY2tfc2l6ZTsKKwl9CisKKwlyZXR2YWwgPSB1bmRvX3NldHVwX3RkYihkYXRhKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCS8qCisJICogRGF0YSBpcyBzdG9yZWQgaW4gdGRiIGRhdGFiYXNlIGFzIGJsb2NrcyBvZiB0ZGJfZGF0YV9zaXplIHNpemUKKwkgKiBUaGlzIGhlbHBzIGluIGVmZmljaWVudCBsb29rdXAgZnVydGhlci4KKwkgKgorCSAqIFdlIGRpdmlkZSB0aGUgZGlzayB0byBibG9ja3Mgb2YgdGRiX2RhdGFfc2l6ZS4KKwkgKi8KKwlvZmZzZXQgPSAoYmxvY2sgKiBjaGFubmVsLT5ibG9ja19zaXplKSArIGRhdGEtPm9mZnNldCA7CisJYmxvY2tfbnVtID0gb2Zmc2V0IC8gZGF0YS0+dGRiX2RhdGFfc2l6ZTsKKwllbmRfYmxvY2sgPSAob2Zmc2V0ICsgc2l6ZSAtIDEpIC8gZGF0YS0+dGRiX2RhdGFfc2l6ZTsKKworCXdoaWxlIChibG9ja19udW0gPD0gZW5kX2Jsb2NrKSB7CisJCV9fdTMyIGtleXN6OworCisJCS8qCisJCSAqIENoZWNrIGlmIHdlIGhhdmUgdGhlIHJlY29yZCBhbHJlYWR5CisJCSAqLworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihkYXRhLT53cml0dGVuX2Jsb2NrX21hcCwKKwkJCQkJCSAgIGJsb2NrX251bSkpIHsKKwkJCS8qIFRyeSB0aGUgbmV4dCBibG9jayAqLworCQkJYmxvY2tfbnVtKys7CisJCQljb250aW51ZTsKKwkJfQorCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGRhdGEtPndyaXR0ZW5fYmxvY2tfbWFwLCBibG9ja19udW0pOworCisJCS8qCisJCSAqIFJlYWQgb25lIGJsb2NrIHVzaW5nIHRoZSBiYWNraW5nIEkvTyBtYW5hZ2VyCisJCSAqIFRoZSBiYWNraW5nIEkvTyBtYW5hZ2VyIGJsb2NrIHNpemUgbWF5IGJlCisJCSAqIGRpZmZlcmVudCBmcm9tIHRoZSB0ZGJfZGF0YV9zaXplLgorCQkgKiBBbHNvIHdlIG5lZWQgdG8gcmVjYWxjdWF0ZSB0aGUgYmxvY2sgbnVtYmVyIHdpdGggcmVzcGVjdAorCQkgKiB0byB0aGUgYmFja2luZyBJL08gbWFuYWdlci4KKwkJICovCisJCW9mZnNldCA9IGJsb2NrX251bSAqIGRhdGEtPnRkYl9kYXRhX3NpemUgKworCQkJCShkYXRhLT5vZmZzZXQgJSBkYXRhLT50ZGJfZGF0YV9zaXplKTsKKwkJYmFja2luZ19ibGtfbnVtID0gKG9mZnNldCAtIGRhdGEtPm9mZnNldCkgLyBjaGFubmVsLT5ibG9ja19zaXplOworCisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGRhdGEtPnRkYl9kYXRhX3NpemUsICZyZWFkX3B0cik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKworCQltZW1zZXQocmVhZF9wdHIsIDAsIGRhdGEtPnRkYl9kYXRhX3NpemUpOworCQlhY3R1YWxfc2l6ZSA9IDA7CisJCWlmICgoZGF0YS0+dGRiX2RhdGFfc2l6ZSAlIGNoYW5uZWwtPmJsb2NrX3NpemUpID09IDApCisJCQlzeiA9IGRhdGEtPnRkYl9kYXRhX3NpemUgLyBjaGFubmVsLT5ibG9ja19zaXplOworCQllbHNlCisJCQlzeiA9IC1kYXRhLT50ZGJfZGF0YV9zaXplOworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZGF0YS0+cmVhbCwgYmFja2luZ19ibGtfbnVtLAorCQkJCQkgICAgIHN6LCByZWFkX3B0cik7CisJCWlmIChyZXR2YWwpIHsKKwkJCWlmIChyZXR2YWwgIT0gRVhUMl9FVF9TSE9SVF9SRUFEKSB7CisJCQkJZnJlZShyZWFkX3B0cik7CisJCQkJcmV0dXJuIHJldHZhbDsKKwkJCX0KKwkJCS8qCisJCQkgKiBzaG9ydCByZWFkIHNvIHVwZGF0ZSB0aGUgcmVjb3JkIHNpemUKKwkJCSAqIGFjY29yZGluZ2x5CisJCQkgKi8KKwkJCWRhdGFfc2l6ZSA9IGFjdHVhbF9zaXplOworCQl9IGVsc2UgeworCQkJZGF0YV9zaXplID0gZGF0YS0+dGRiX2RhdGFfc2l6ZTsKKwkJfQorCQlpZiAoZGF0YV9zaXplID09IDApIHsKKwkJCWZyZWUocmVhZF9wdHIpOworCQkJYmxvY2tfbnVtKys7CisJCQljb250aW51ZTsKKwkJfQorCQlkYmdfcHJpbnRmKCJSZWFkICVsbHUgYnl0ZXMgZnJvbSBGUyBibG9jayAlbGx1IChibGs9JWxsdSBjbnQ9JWxsdSlcbiIsCisJCSAgICAgICBkYXRhX3NpemUsIGJhY2tpbmdfYmxrX251bSwgYmxvY2ssIGRhdGEtPnRkYl9kYXRhX3NpemUpOworCQlpZiAoKGRhdGFfc2l6ZSAlIGRhdGEtPnVuZG9fZmlsZS0+YmxvY2tfc2l6ZSkgPT0gMCkKKwkJCXN6ID0gZGF0YV9zaXplIC8gZGF0YS0+dW5kb19maWxlLT5ibG9ja19zaXplOworCQllbHNlCisJCQlzeiA9IC1kYXRhX3NpemU7OworCQkvKiBleHRlbmQgdGhpcyBrZXk/ICovCisJCWlmIChkYXRhLT5rZXlzX2luX2Jsb2NrKSB7CisJCQlrZXkgPSBkYXRhLT5rZXliLT5rZXlzICsgZGF0YS0+a2V5c19pbl9ibG9jayAtIDE7CisJCQlrZXlzeiA9IGV4dDJmc19sZTMyX3RvX2NwdShrZXktPnNpemUpOworCQl9IGVsc2UgeworCQkJa2V5ID0gTlVMTDsKKwkJCWtleXN6ID0gMDsKKwkJfQorCQlpZiAoa2V5ICE9IE5VTEwgJiYKKwkJICAgIChleHQyZnNfbGU2NF90b19jcHUoa2V5LT5mc2JsaykgKiBjaGFubmVsLT5ibG9ja19zaXplICsKKwkJICAgICBjaGFubmVsLT5ibG9ja19zaXplIC0gMSArCisJCSAgICAga2V5c3opIC8gY2hhbm5lbC0+YmxvY2tfc2l6ZSA9PSBiYWNraW5nX2Jsa19udW0gJiYKKwkJICAgIEUyVU5ET19NQVhfRVhURU5UX0JMT0NLUyAqIGRhdGEtPnRkYl9kYXRhX3NpemUgPgorCQkgICAga2V5c3ogKyBkYXRhX3NpemUpIHsKKwkJCWJsa19jcmMgPSBleHQyZnNfbGUzMl90b19jcHUoa2V5LT5ibGtfY3JjKTsKKwkJCWJsa19jcmMgPSBleHQyZnNfY3JjMzJjX2xlKGJsa19jcmMsIHJlYWRfcHRyLCBkYXRhX3NpemUpOworCQkJa2V5LT5ibGtfY3JjID0gZXh0MmZzX2NwdV90b19sZTMyKGJsa19jcmMpOworCQkJa2V5LT5zaXplID0gZXh0MmZzX2NwdV90b19sZTMyKGtleXN6ICsgZGF0YV9zaXplKTsKKwkJfSBlbHNlIHsKKwkJCWRhdGEtPm51bV9rZXlzKys7CisJCQlrZXkgPSBkYXRhLT5rZXliLT5rZXlzICsgZGF0YS0+a2V5c19pbl9ibG9jazsKKwkJCWRhdGEtPmtleXNfaW5fYmxvY2srKzsKKwkJCWtleS0+ZnNibGsgPSBleHQyZnNfY3B1X3RvX2xlNjQoYmFja2luZ19ibGtfbnVtKTsKKwkJCWJsa19jcmMgPSBleHQyZnNfY3JjMzJjX2xlKH4wLCByZWFkX3B0ciwgZGF0YV9zaXplKTsKKwkJCWtleS0+YmxrX2NyYyA9IGV4dDJmc19jcHVfdG9fbGUzMihibGtfY3JjKTsKKwkJCWtleS0+c2l6ZSA9IGV4dDJmc19jcHVfdG9fbGUzMihkYXRhX3NpemUpOworCQl9CisJCWRiZ19wcmludGYoIldyaXRpbmcgYmxvY2sgJWxsdSB0byBvZmZzZXQgJWxsdSBzaXplICVkIGtleSAlenVcbiIsCisJCSAgICAgICBibG9ja19udW0sCisJCSAgICAgICBkYXRhLT51bmRvX2Jsa19udW0sCisJCSAgICAgICBzeiwgZGF0YS0+bnVtX2tleXMgLSAxKTsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChkYXRhLT51bmRvX2ZpbGUsCisJCQkJCWRhdGEtPnVuZG9fYmxrX251bSwgc3osIHJlYWRfcHRyKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZnJlZShyZWFkX3B0cik7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCWRhdGEtPnVuZG9fYmxrX251bSsrOworCQlmcmVlKHJlYWRfcHRyKTsKKworCQkvKiBXcml0ZSBvdXQgdGhlIGtleSBibG9jayAqLworCQlyZXR2YWwgPSB3cml0ZV91bmRvX2luZGV4ZXMoZGF0YSwgMCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisJCS8qIE5leHQgYmxvY2sgKi8KKwkJYmxvY2tfbnVtKys7CisJfQorCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bmRvX2lvX3JlYWRfZXJyb3IoaW9fY2hhbm5lbCBjaGFubmVsIEFUVFIoKHVudXNlZCkpLAorCQkJCSAgICB1bnNpZ25lZCBsb25nIGJsb2NrIEFUVFIoKHVudXNlZCkpLAorCQkJCSAgICBpbnQgY291bnQgQVRUUigodW51c2VkKSksCisJCQkJICAgIHZvaWQgKmRhdGEgQVRUUigodW51c2VkKSksCisJCQkJICAgIHNpemVfdCBzaXplIEFUVFIoKHVudXNlZCkpLAorCQkJCSAgICBpbnQgYWN0dWFsLAorCQkJCSAgICBlcnJjb2RlX3QgZXJyb3IgQVRUUigodW51c2VkKSkpCit7CisJYWN0dWFsX3NpemUgPSBhY3R1YWw7CisJcmV0dXJuIGVycm9yOworfQorCitzdGF0aWMgdm9pZCB1bmRvX2Vycl9oYW5kbGVyX2luaXQoaW9fY2hhbm5lbCBjaGFubmVsKQoreworCWNoYW5uZWwtPnJlYWRfZXJyb3IgPSB1bmRvX2lvX3JlYWRfZXJyb3I7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfZmlsZXN5c3RlbShzdHJ1Y3QgdW5kb19oZWFkZXIgKmhkciwgaW9fY2hhbm5lbCB1bmRvX2ZpbGUsCisJCQkgICAgdW5zaWduZWQgaW50IGJsb2Nrc2l6ZSwgYmxrNjRfdCBzdXBlcl9ibG9jaywKKwkJCSAgICBpb19jaGFubmVsIGNoYW5uZWwpCit7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgc3VwZXIsICpzYjsKKwljaGFyICpidWY7CisJX191MzIgc2JfY3JjOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpb19jaGFubmVsX3NldF9ibGtzaXplKGNoYW5uZWwsIFNVUEVSQkxPQ0tfT0ZGU0VUKTsKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoY2hhbm5lbCwgMSwgLVNVUEVSQkxPQ0tfU0laRSwgJnN1cGVyKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJLyoKKwkgKiBDb21wYXJlIHRoZSBGUyBhbmQgdGhlIHVuZG8gZmlsZSBzdXBlcmJsb2NrIHNvIHRoYXQgd2UgZG9uJ3QKKwkgKiBhcHBlbmQgdG8gc29tZXRoaW5nIHRoYXQgZG9lc24ndCBtYXRjaCB0aGlzIEZTLgorCSAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQodW5kb19maWxlLCBzdXBlcl9ibG9jaywKKwkJCQkgICAgICAgLVNVUEVSQkxPQ0tfU0laRSwgYnVmKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKwlzYiA9IChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKWJ1ZjsKKwlzYi0+c19tYWdpYyA9IH5zYi0+c19tYWdpYzsKKwlpZiAobWVtY21wKCZzdXBlciwgYnVmLCBzaXplb2Yoc3VwZXIpKSkgeworCQlyZXR2YWwgPSAtMTsKKwkJZ290byBvdXQ7CisJfQorCXNiX2NyYyA9IGV4dDJmc19jcmMzMmNfbGUofjAsICh1bnNpZ25lZCBjaGFyICopYnVmLCBTVVBFUkJMT0NLX1NJWkUpOworCWlmIChleHQyZnNfbGUzMl90b19jcHUoaGRyLT5zYl9jcmMpICE9IHNiX2NyYykgeworCQlyZXR2YWwgPSAtMTsKKwkJZ290byBvdXQ7CisJfQorCitvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBUcnkgdG8gcmUtb3BlbiB0aGUgdW5kbyBmaWxlLCBzbyB0aGF0IHdlIGNhbiByZXN1bWUgd2hlcmUgd2UgbGVmdCBvZmYuCisgKiBUaGF0IHdheSwgdGhlIHVzZXIgY2FuIHBhc3MgdGhlIHNhbWUgdW5kbyBmaWxlIHRvIHZhcmlvdXMgcHJvZ3JhbXMgYXMKKyAqIHBhcnQgb2YgYW4gRlMgdXBncmFkZSBpbnN0ZWFkIG9mIGhhdmluZyB0byBjcmVhdGUgbXVsdGlwbGUgZmlsZXMgYW5kCisgKiB0aGVuIGFwcGx5IHRoZW0gaW4gY29ycmVjdCBvcmRlci4KKyAqLworc3RhdGljIGVycmNvZGVfdCB0cnlfcmVvcGVuX3VuZG9fZmlsZShpbnQgdW5kb19mZCwKKwkJCQkgICAgICBzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IHVuZG9faGVhZGVyIGhkcjsKKwlzdHJ1Y3QgdW5kb19rZXkgKmRrZXk7CisJZXh0MmZzX3N0cnVjdF9zdGF0IHN0YXRidWY7CisJdW5zaWduZWQgaW50IGJsb2Nrc2l6ZSwgZnNfYmxvY2tzaXplOworCWJsazY0X3Qgc3VwZXJfYmxvY2ssIGxibGs7CisJc2l6ZV90IG51bV9rZXlzLCBrZXlzX3Blcl9ibG9jaywgaTsKKwlfX3UzMiBoZHJfY3JjLCBrZXlfY3JjOworCWVycmNvZGVfdCByZXR2YWw7CisKKwkvKiBaZXJvIHNpemUgYWxyZWFkeT8gKi8KKwlyZXR2YWwgPSBleHQyZnNfZnN0YXQodW5kb19mZCwgJnN0YXRidWYpOworCWlmIChyZXR2YWwpCisJCWdvdG8gYmFkX2ZpbGU7CisJaWYgKHN0YXRidWYuc3Rfc2l6ZSA9PSAwKQorCQlnb3RvIG91dDsKKworCS8qIGNoZWNrIHRoZSBmaWxlIGhlYWRlciAqLworCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChkYXRhLT51bmRvX2ZpbGUsIDAsIC0oaW50KXNpemVvZihoZHIpLAorCQkJCSAgICAgICAmaGRyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGJhZF9maWxlOworCisJaWYgKG1lbWNtcChoZHIubWFnaWMsIEUyVU5ET19NQUdJQywKKwkJICAgIHNpemVvZihoZHIubWFnaWMpKSkKKwkJZ290byBiYWRfZmlsZTsKKwloZHJfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKikmaGRyLAorCQkJCSAgIHNpemVvZihzdHJ1Y3QgdW5kb19oZWFkZXIpIC0KKwkJCQkgICBzaXplb2YoX191MzIpKTsKKwlpZiAoZXh0MmZzX2xlMzJfdG9fY3B1KGhkci5oZWFkZXJfY3JjKSAhPSBoZHJfY3JjKQorCQlnb3RvIGJhZF9maWxlOworCWJsb2Nrc2l6ZSA9IGV4dDJmc19sZTMyX3RvX2NwdShoZHIuYmxvY2tfc2l6ZSk7CisJZnNfYmxvY2tzaXplID0gZXh0MmZzX2xlMzJfdG9fY3B1KGhkci5mc19ibG9ja19zaXplKTsKKwlpZiAoYmxvY2tzaXplID4gRTJVTkRPX01BWF9CTE9DS19TSVpFIHx8CisJICAgIGJsb2Nrc2l6ZSA8IEUyVU5ET19NSU5fQkxPQ0tfU0laRSB8fAorCSAgICAhYmxvY2tzaXplIHx8ICFmc19ibG9ja3NpemUpCisJCWdvdG8gYmFkX2ZpbGU7CisJc3VwZXJfYmxvY2sgPSBleHQyZnNfbGU2NF90b19jcHUoaGRyLnN1cGVyX29mZnNldCk7CisJbnVtX2tleXMgPSBleHQyZnNfbGU2NF90b19jcHUoaGRyLm51bV9rZXlzKTsKKwlpb19jaGFubmVsX3NldF9ibGtzaXplKGRhdGEtPnVuZG9fZmlsZSwgYmxvY2tzaXplKTsKKwkvKgorCSAqIERvIG5vdCBjb21wYXJlIGhkci5mX2NvbXBhdCB3aXRoIHRoZSBhdmFpbGFibGUgY29tcGF0aWJsZQorCSAqIGZlYXR1cmVzIHNldCwgYmVjYXVzZSBhICJtaXNzaW5nIiBjb21wYXRpYmxlIGZlYXR1cmUgc2hvdWxkCisJICogbm90IGNhdXNlIGFueSBwcm9ibGVtcy4KKwkgKi8KKwlpZiAoaGRyLmZfaW5jb21wYXQgfHwgaGRyLmZfcm9jb21wYXQpCisJCWdvdG8gYmFkX2ZpbGU7CisKKwkvKiBTdXBlcmJsb2NrIG1hdGNoZXMgdGhpcyBGUz8gKi8KKwlpZiAoY2hlY2tfZmlsZXN5c3RlbSgmaGRyLCBkYXRhLT51bmRvX2ZpbGUsIGJsb2Nrc2l6ZSwgc3VwZXJfYmxvY2ssCisJCQkgICAgIGRhdGEtPnJlYWwpICE9IDApIHsKKwkJcmV0dmFsID0gRVhUMl9FVF9VTkRPX0ZJTEVfV1JPTkc7CisJCWdvdG8gb3V0OworCX0KKworCS8qIFRyeSB0byBzZXQgb3Vyc2VsdmVzIHVwICovCisJZGF0YS0+dGRiX2RhdGFfc2l6ZSA9IGJsb2Nrc2l6ZTsKKwlyZXR2YWwgPSB1bmRvX3NldHVwX3RkYihkYXRhKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGJhZF9maWxlOworCWRhdGEtPm51bV9rZXlzID0gbnVtX2tleXM7CisJZGF0YS0+c3VwZXJfYmxrX251bSA9IHN1cGVyX2Jsb2NrOworCWRhdGEtPmZpcnN0X2tleV9ibGsgPSBleHQyZnNfbGU2NF90b19jcHUoaGRyLmtleV9vZmZzZXQpOworCisJLyogbG9hZCB0aGUgd3JpdHRlbiBibG9jayBtYXAgKi8KKwlrZXlzX3Blcl9ibG9jayA9IEtFWVNfUEVSX0JMT0NLKGRhdGEpOworCWxibGsgPSBkYXRhLT5maXJzdF9rZXlfYmxrOworCWRiZ19wcmludGYoIm5yX2tleXM9JWx1LCBrcGI9JXp1LCBibGtzej0ldVxuIiwKKwkJICAgbnVtX2tleXMsIGtleXNfcGVyX2Jsb2NrLCBibG9ja3NpemUpOworCWZvciAoaSA9IDA7IGkgPCBudW1fa2V5czsgaSArPSBrZXlzX3Blcl9ibG9jaykgeworCQlzaXplX3QgaiwgbWF4X2o7CisJCV9fbGUzMiBjcmM7CisKKwkJZGF0YS0+a2V5X2Jsa19udW0gPSBsYmxrOworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZGF0YS0+dW5kb19maWxlLAorCQkJCQkgICAgICAgbGJsaywgMSwgZGF0YS0+a2V5Yik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGJhZF9rZXlfcmVwbGF5OworCisJCS8qIGNoZWNrIGtleXMgKi8KKwkJaWYgKGV4dDJmc19sZTMyX3RvX2NwdShkYXRhLT5rZXliLT5tYWdpYykgIT0gS0VZQkxPQ0tfTUFHSUMpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfVU5ET19GSUxFX0NPUlJVUFQ7CisJCQlnb3RvIGJhZF9rZXlfcmVwbGF5OworCQl9CisJCWNyYyA9IGRhdGEtPmtleWItPmNyYzsKKwkJZGF0YS0+a2V5Yi0+Y3JjID0gMDsKKwkJa2V5X2NyYyA9IGV4dDJmc19jcmMzMmNfbGUofjAsICh1bnNpZ25lZCBjaGFyICopZGF0YS0+a2V5YiwKKwkJCQkJICAgYmxvY2tzaXplKTsKKwkJaWYgKGV4dDJmc19sZTMyX3RvX2NwdShjcmMpICE9IGtleV9jcmMpIHsKKwkJCXJldHZhbCA9IEVYVDJfRVRfVU5ET19GSUxFX0NPUlJVUFQ7CisJCQlnb3RvIGJhZF9rZXlfcmVwbGF5OworCQl9CisKKwkJLyogbG9hZCBrZXlzIGZyb20ga2V5IGJsb2NrICovCisJCWxibGsrKzsKKwkJbWF4X2ogPSBkYXRhLT5udW1fa2V5cyAtIGk7CisJCWlmIChtYXhfaiA+IGtleXNfcGVyX2Jsb2NrKQorCQkJbWF4X2ogPSBrZXlzX3Blcl9ibG9jazsKKwkJZm9yIChqID0gMCwgZGtleSA9IGRhdGEtPmtleWItPmtleXM7CisJCSAgICAgaiA8IG1heF9qOworCQkgICAgIGorKywgZGtleSsrKSB7CisJCQlibGs2NF90IGZzYmxrID0gZXh0MmZzX2xlNjRfdG9fY3B1KGRrZXktPmZzYmxrKTsKKwkJCWJsazY0X3QgdW5kb19ibGsgPSBmc2JsayAqIGZzX2Jsb2Nrc2l6ZSAvIGJsb2Nrc2l6ZTsKKwkJCXNpemVfdCBzaXplID0gZXh0MmZzX2xlMzJfdG9fY3B1KGRrZXktPnNpemUpOworCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGRhdGEtPndyaXR0ZW5fYmxvY2tfbWFwLAorCQkJCQkgdW5kb19ibGssCisJCQkJCShzaXplICsgYmxvY2tzaXplIC0gMSkgLyBibG9ja3NpemUpOworCQkJbGJsayArPSAoc2l6ZSArIGJsb2Nrc2l6ZSAtIDEpIC8gYmxvY2tzaXplOworCQkJZGF0YS0+dW5kb19ibGtfbnVtID0gbGJsazsKKwkJCWRhdGEtPmtleXNfaW5fYmxvY2sgPSBqICsgMTsKKwkJfQorCX0KKwlkYmdfcHJpbnRmKCJSZW9wZW4gdW5kbywga2V5YmxrPSVsbHUgdW5kb2Jsaz0lbGx1IG5ya2V5cz0lenUga2liPSV6dVxuIiwKKwkJICAgZGF0YS0+a2V5X2Jsa19udW0sIGRhdGEtPnVuZG9fYmxrX251bSwgZGF0YS0+bnVtX2tleXMsCisJCSAgIGRhdGEtPmtleXNfaW5fYmxvY2spOworCisJZGF0YS0+aGRyLnN0YXRlID0gaGRyLnN0YXRlICYgfkUyVU5ET19TVEFURV9GSU5JU0hFRDsKKwlkYXRhLT5oZHIuZl9jb21wYXQgPSBoZHIuZl9jb21wYXQ7CisJZGF0YS0+aGRyLmZfaW5jb21wYXQgPSBoZHIuZl9pbmNvbXBhdDsKKwlkYXRhLT5oZHIuZl9yb2NvbXBhdCA9IGhkci5mX3JvY29tcGF0OworCXJldHVybiByZXR2YWw7CisKK2JhZF9rZXlfcmVwbGF5OgorCWRhdGEtPmtleV9ibGtfbnVtID0gZGF0YS0+dW5kb19ibGtfbnVtID0gMDsKKwlkYXRhLT5rZXlzX2luX2Jsb2NrID0gMDsKKwlleHQyZnNfZnJlZV9tZW0oJmRhdGEtPmtleWIpOworCWV4dDJmc19mcmVlX2dlbmVyaWNfYml0bWFwKGRhdGEtPndyaXR0ZW5fYmxvY2tfbWFwKTsKKwlkYXRhLT50ZGJfd3JpdHRlbiA9IDA7CisJZ290byBvdXQ7CitiYWRfZmlsZToKKwlyZXR2YWwgPSBFWFQyX0VUX1VORE9fRklMRV9DT1JSVVBUOworb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIHVuZG9fYXRleGl0KHZvaWQgKnApCit7CisJc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICpkYXRhID0gcDsKKwllcnJjb2RlX3QgZXJyOworCisJZXJyID0gd3JpdGVfdW5kb19pbmRleGVzKGRhdGEsIDEpOworCWlvX2NoYW5uZWxfY2xvc2UoZGF0YS0+dW5kb19maWxlKTsKKworCWNvbV9lcnIoZGF0YS0+dGRiX2ZpbGUsIGVyciwgIndoaWxlIGZvcmNlLWNsb3NpbmcgdW5kbyBmaWxlIik7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5kb19vcGVuKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmbGFncywgaW9fY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlpb19jaGFubmVsCWlvID0gTlVMTDsKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGEgPSBOVUxMOworCWludAkJdW5kb19mZCA9IC0xOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAobmFtZSA9PSAwKQorCQlyZXR1cm4gRVhUMl9FVF9CQURfREVWSUNFX05BTUU7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCksICZpbyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCW1lbXNldChpbywgMCwgc2l6ZW9mKHN0cnVjdCBzdHJ1Y3RfaW9fY2hhbm5lbCkpOworCWlvLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTDsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhKSwgJmRhdGEpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKworCWlvLT5tYW5hZ2VyID0gdW5kb19pb19tYW5hZ2VyOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHN0cmxlbihuYW1lKSsxLCAmaW8tPm5hbWUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKworCXN0cmNweShpby0+bmFtZSwgbmFtZSk7CisJaW8tPnByaXZhdGVfZGF0YSA9IGRhdGE7CisJaW8tPmJsb2NrX3NpemUgPSAxMDI0OworCWlvLT5yZWFkX2Vycm9yID0gMDsKKwlpby0+d3JpdGVfZXJyb3IgPSAwOworCWlvLT5yZWZjb3VudCA9IDE7CisKKwltZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSkpOworCWRhdGEtPm1hZ2ljID0gRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUw7CisJZGF0YS0+c3VwZXJfYmxrX251bSA9IDE7CisJZGF0YS0+Zmlyc3Rfa2V5X2JsayA9IDI7CisJZGF0YS0+dW5kb19ibGtfbnVtID0gMzsKKworCWlmICh1bmRvX2lvX2JhY2tpbmdfbWFuYWdlcikgeworCQlyZXR2YWwgPSB1bmRvX2lvX2JhY2tpbmdfbWFuYWdlci0+b3BlbihuYW1lLCBmbGFncywKKwkJCQkJCSAgICAgICAmZGF0YS0+cmVhbCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisKKwkJZGF0YS0+dGRiX2ZpbGUgPSBzdHJkdXAodGRiX2ZpbGUpOworCQlpZiAoZGF0YS0+dGRiX2ZpbGUgPT0gTlVMTCkKKwkJCWdvdG8gY2xlYW51cDsKKwkJdW5kb19mZCA9IGV4dDJmc19vcGVuX2ZpbGUoZGF0YS0+dGRiX2ZpbGUsIE9fUkRXUiB8IE9fQ1JFQVQsCisJCQkJCSAgIDA2MDApOworCQlpZiAodW5kb19mZCA8IDApCisJCQlnb3RvIGNsZWFudXA7CisKKwkJcmV0dmFsID0gdW5kb19pb19iYWNraW5nX21hbmFnZXItPm9wZW4oZGF0YS0+dGRiX2ZpbGUsCisJCQkJCQkgICAgICAgSU9fRkxBR19SVywKKwkJCQkJCSAgICAgICAmZGF0YS0+dW5kb19maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gY2xlYW51cDsKKwl9IGVsc2UgeworCQlkYXRhLT5yZWFsID0gTlVMTDsKKwkJZGF0YS0+dW5kb19maWxlID0gTlVMTDsKKwl9CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJaW8tPmZsYWdzID0gKGlvLT5mbGFncyAmIH5DSEFOTkVMX0ZMQUdTX0RJU0NBUkRfWkVST0VTKSB8CisJCQkgICAgKGRhdGEtPnJlYWwtPmZsYWdzICYgQ0hBTk5FTF9GTEFHU19ESVNDQVJEX1pFUk9FUyk7CisKKwkvKgorCSAqIHNldHVwIGVyciBoYW5kbGVyIGZvciByZWFkIHNvIHRoYXQgd2Uga25vdworCSAqIHdoZW4gdGhlIGJhY2tpbmcgbWFuYWdlciBmYWlscyBkbyBzaG9ydCByZWFkCisJICovCisJaWYgKGRhdGEtPnJlYWwpCisJCXVuZG9fZXJyX2hhbmRsZXJfaW5pdChkYXRhLT5yZWFsKTsKKworCWlmIChkYXRhLT51bmRvX2ZpbGUpIHsKKwkJcmV0dmFsID0gdHJ5X3Jlb3Blbl91bmRvX2ZpbGUodW5kb19mZCwgZGF0YSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGNsZWFudXA7CisJfQorCXJldHZhbCA9IGV4dDJmc19hZGRfZXhpdF9mbih1bmRvX2F0ZXhpdCwgZGF0YSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBjbGVhbnVwOworCisJKmNoYW5uZWwgPSBpbzsKKwlpZiAodW5kb19mZCA+PSAwKQorCQljbG9zZSh1bmRvX2ZkKTsKKwlyZXR1cm4gcmV0dmFsOworCitjbGVhbnVwOgorCWV4dDJmc19yZW1vdmVfZXhpdF9mbih1bmRvX2F0ZXhpdCwgZGF0YSk7CisJaWYgKHVuZG9fZmQgPj0gMCkKKwkJY2xvc2UodW5kb19mZCk7CisJaWYgKGRhdGEgJiYgZGF0YS0+dW5kb19maWxlKQorCQlpb19jaGFubmVsX2Nsb3NlKGRhdGEtPnVuZG9fZmlsZSk7CisJaWYgKGRhdGEgJiYgZGF0YS0+dGRiX2ZpbGUpCisJCWZyZWUoZGF0YS0+dGRiX2ZpbGUpOworCWlmIChkYXRhICYmIGRhdGEtPnJlYWwpCisJCWlvX2NoYW5uZWxfY2xvc2UoZGF0YS0+cmVhbCk7CisJaWYgKGRhdGEpCisJCWV4dDJmc19mcmVlX21lbSgmZGF0YSk7CisJaWYgKGlvKQorCQlleHQyZnNfZnJlZV9tZW0oJmlvKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fY2xvc2UoaW9fY2hhbm5lbCBjaGFubmVsKQoreworCXN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJZXJyLCByZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVU5JWF9JT19DSEFOTkVMKTsKKworCWlmICgtLWNoYW5uZWwtPnJlZmNvdW50ID4gMCkKKwkJcmV0dXJuIDA7CisJLyogQmVmb3JlIGNsb3Npbmcgd3JpdGUgdGhlIGZpbGUgc3lzdGVtIGlkZW50aXR5ICovCisJaWYgKCFnZXRlbnYoIlVORE9fSU9fU0lNVUxBVEVfVU5GSU5JU0hFRCIpKQorCQlkYXRhLT5oZHIuc3RhdGUgPSBleHQyZnNfY3B1X3RvX2xlMzIoRTJVTkRPX1NUQVRFX0ZJTklTSEVEKTsKKwllcnIgPSB3cml0ZV91bmRvX2luZGV4ZXMoZGF0YSwgMSk7CisJZXh0MmZzX3JlbW92ZV9leGl0X2ZuKHVuZG9fYXRleGl0LCBkYXRhKTsKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9jbG9zZShkYXRhLT5yZWFsKTsKKwlpZiAoZGF0YS0+dGRiX2ZpbGUpCisJCWZyZWUoZGF0YS0+dGRiX2ZpbGUpOworCWlmIChkYXRhLT51bmRvX2ZpbGUpCisJCWlvX2NoYW5uZWxfY2xvc2UoZGF0YS0+dW5kb19maWxlKTsKKwlleHQyZnNfZnJlZV9tZW0oJmRhdGEtPmtleWIpOworCWlmIChkYXRhLT53cml0dGVuX2Jsb2NrX21hcCkKKwkJZXh0MmZzX2ZyZWVfZ2VuZXJpY19iaXRtYXAoZGF0YS0+d3JpdHRlbl9ibG9ja19tYXApOworCWV4dDJmc19mcmVlX21lbSgmY2hhbm5lbC0+cHJpdmF0ZV9kYXRhKTsKKwlpZiAoY2hhbm5lbC0+bmFtZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjaGFubmVsLT5uYW1lKTsKKwlleHQyZnNfZnJlZV9tZW0oJmNoYW5uZWwpOworCisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fc2V0X2Jsa3NpemUoaW9fY2hhbm5lbCBjaGFubmVsLCBpbnQgYmxrc2l6ZSkKK3sKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CQlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVU5JWF9JT19DSEFOTkVMKTsKKworCWlmIChibGtzaXplID4gRTJVTkRPX01BWF9CTE9DS19TSVpFIHx8IGJsa3NpemUgPCBFMlVORE9fTUlOX0JMT0NLX1NJWkUpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShkYXRhLT5yZWFsLCBibGtzaXplKTsKKwkvKgorCSAqIFNldCB0aGUgYmxvY2sgc2l6ZSB1c2VkIGZvciB0ZGIKKwkgKi8KKwlpZiAoIWRhdGEtPnRkYl9kYXRhX3NpemUgfHwgIWRhdGEtPnRkYl93cml0dGVuKQorCQlkYXRhLT50ZGJfZGF0YV9zaXplID0gYmxrc2l6ZTsKKwljaGFubmVsLT5ibG9ja19zaXplID0gYmxrc2l6ZTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fcmVhZF9ibGs2NChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgICBpbnQgY291bnQsIHZvaWQgKmJ1ZikKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisJaWYgKGRhdGEtPnJlYWwpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChkYXRhLT5yZWFsLCBibG9jaywgY291bnQsIGJ1Zik7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fcmVhZF9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJICAgICAgIGludCBjb3VudCwgdm9pZCAqYnVmKQoreworCXJldHVybiB1bmRvX3JlYWRfYmxrNjQoY2hhbm5lbCwgYmxvY2ssIGNvdW50LCBidWYpOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fd3JpdGVfYmxrNjQoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJaW50IGNvdW50LCBjb25zdCB2b2lkICpidWYpCit7CisJc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCisJRVhUMl9DSEVDS19NQUdJQyhjaGFubmVsLCBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUwpOworCWRhdGEgPSAoc3RydWN0IHVuZG9fcHJpdmF0ZV9kYXRhICopIGNoYW5uZWwtPnByaXZhdGVfZGF0YTsKKwlFWFQyX0NIRUNLX01BR0lDKGRhdGEsIEVYVDJfRVRfTUFHSUNfVU5JWF9JT19DSEFOTkVMKTsKKwkvKgorCSAqIEZpcnN0IHdyaXRlIHRoZSBleGlzdGluZyBjb250ZW50IGludG8gZGF0YWJhc2UKKwkgKi8KKwlyZXR2YWwgPSB1bmRvX3dyaXRlX3RkYihjaGFubmVsLCBibG9jaywgY291bnQpOworCWlmIChyZXR2YWwpCisJCSByZXR1cm4gcmV0dmFsOworCWlmIChkYXRhLT5yZWFsKQorCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGRhdGEtPnJlYWwsIGJsb2NrLCBjb3VudCwgYnVmKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5kb193cml0ZV9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIGJsb2NrLAorCQkJCWludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCXJldHVybiB1bmRvX3dyaXRlX2JsazY0KGNoYW5uZWwsIGJsb2NrLCBjb3VudCwgYnVmKTsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bmRvX3dyaXRlX2J5dGUoaW9fY2hhbm5lbCBjaGFubmVsLCB1bnNpZ25lZCBsb25nIG9mZnNldCwKKwkJCQkgaW50IHNpemUsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJZXh0Ml9sb2ZmX3QJbG9jYXRpb247CisJdW5zaWduZWQgbG9uZyBibGtfbnVtLCBjb3VudDs7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisJbG9jYXRpb24gPSBvZmZzZXQgKyBkYXRhLT5vZmZzZXQ7CisJYmxrX251bSA9IGxvY2F0aW9uL2NoYW5uZWwtPmJsb2NrX3NpemU7CisJLyoKKwkgKiB0aGUgc2l6ZSBzcGVjaWZpZWQgbWF5IHNwcmVhZCBhY3Jvc3MgbXVsdGlwbGUgYmxvY2tzCisJICogYWxzbyBtYWtlIHN1cmUgd2UgYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCBibG9jayBzdGFydAorCSAqIG9mZnNldCBmb3IgdGRiIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBiYWNraW5nIEkvTyBtYW5hZ2VyCisJICogZHVlIHRvIHBvc3NpYmxlIGRpZmZlcmVudCBibG9jayBzaXplCisJICovCisJY291bnQgPSAoc2l6ZSArIChsb2NhdGlvbiAlIGNoYW5uZWwtPmJsb2NrX3NpemUpICsKKwkJCWNoYW5uZWwtPmJsb2NrX3NpemUgIC0xKS9jaGFubmVsLT5ibG9ja19zaXplOworCXJldHZhbCA9IHVuZG9fd3JpdGVfdGRiKGNoYW5uZWwsIGJsa19udW0sIGNvdW50KTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCWlmIChkYXRhLT5yZWFsICYmIGRhdGEtPnJlYWwtPm1hbmFnZXItPndyaXRlX2J5dGUpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYnl0ZShkYXRhLT5yZWFsLCBvZmZzZXQsIHNpemUsIGJ1Zik7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fZGlzY2FyZChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCkKK3sKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJaW50IGljb3VudDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY291bnQgPiBJTlRfTUFYKQorCQlyZXR1cm4gRVhUMl9FVF9VTklNUExFTUVOVEVEOworCWljb3VudCA9IGNvdW50OworCisJLyoKKwkgKiBGaXJzdCB3cml0ZSB0aGUgZXhpc3RpbmcgY29udGVudCBpbnRvIGRhdGFiYXNlCisJICovCisJcmV0dmFsID0gdW5kb193cml0ZV90ZGIoY2hhbm5lbCwgYmxvY2ssIGljb3VudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9kaXNjYXJkKGRhdGEtPnJlYWwsIGJsb2NrLCBjb3VudCk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9femVyb291dChpb19jaGFubmVsIGNoYW5uZWwsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9jaywKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCkKK3sKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJaW50IGljb3VudDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY291bnQgPiBJTlRfTUFYKQorCQlyZXR1cm4gRVhUMl9FVF9VTklNUExFTUVOVEVEOworCWljb3VudCA9IGNvdW50OworCisJLyoKKwkgKiBGaXJzdCB3cml0ZSB0aGUgZXhpc3RpbmcgY29udGVudCBpbnRvIGRhdGFiYXNlCisJICovCisJcmV0dmFsID0gdW5kb193cml0ZV90ZGIoY2hhbm5lbCwgYmxvY2ssIGljb3VudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF96ZXJvb3V0KGRhdGEtPnJlYWwsIGJsb2NrLCBjb3VudCk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fY2FjaGVfcmVhZGFoZWFkKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCQkgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2ssCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCXN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9jYWNoZV9yZWFkYWhlYWQoZGF0YS0+cmVhbCwgYmxvY2ssIGNvdW50KTsKKworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBGbHVzaCBkYXRhIGJ1ZmZlcnMgdG8gZGlzay4KKyAqLworc3RhdGljIGVycmNvZGVfdCB1bmRvX2ZsdXNoKGlvX2NoYW5uZWwgY2hhbm5lbCkKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwlzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKmRhdGE7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisJaWYgKGRhdGEtPnJlYWwpCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfZmx1c2goZGF0YS0+cmVhbCk7CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fc2V0X29wdGlvbihpb19jaGFubmVsIGNoYW5uZWwsIGNvbnN0IGNoYXIgKm9wdGlvbiwKKwkJCQkgY29uc3QgY2hhciAqYXJnKQoreworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCXN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqZGF0YTsKKwl1bnNpZ25lZCBsb25nIHRtcDsKKwljaGFyICplbmQ7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5kb19wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisJaWYgKCFzdHJjbXAob3B0aW9uLCAidGRiX2RhdGFfc2l6ZSIpKSB7CisJCWlmICghYXJnKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCQl0bXAgPSBzdHJ0b3VsKGFyZywgJmVuZCwgMCk7CisJCWlmICgqZW5kKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJaWYgKHRtcCA+IEUyVU5ET19NQVhfQkxPQ0tfU0laRSB8fCB0bXAgPCBFMlVORE9fTUlOX0JMT0NLX1NJWkUpCisJCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCQlpZiAoIWRhdGEtPnRkYl9kYXRhX3NpemUgfHwgIWRhdGEtPnRkYl93cml0dGVuKSB7CisJCQlkYXRhLT50ZGJfd3JpdHRlbiA9IC0xOworCQkJZGF0YS0+dGRiX2RhdGFfc2l6ZSA9IHRtcDsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisJLyoKKwkgKiBOZWVkIHRvIHN1cHBvcnQgb2Zmc2V0IG9wdGlvbiB0byB3b3JrIHdpdGgKKwkgKiBVbml4IEkvTyBtYW5hZ2VyCisJICovCisJaWYgKGRhdGEtPnJlYWwgJiYgZGF0YS0+cmVhbC0+bWFuYWdlci0+c2V0X29wdGlvbikgeworCQlyZXR2YWwgPSBkYXRhLT5yZWFsLT5tYW5hZ2VyLT5zZXRfb3B0aW9uKGRhdGEtPnJlYWwsCisJCQkJCQkJb3B0aW9uLCBhcmcpOworCX0KKwlpZiAoIXJldHZhbCAmJiAhc3RyY21wKG9wdGlvbiwgIm9mZnNldCIpKSB7CisJCWlmICghYXJnKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCQl0bXAgPSBzdHJ0b3VsKGFyZywgJmVuZCwgMCk7CisJCWlmICgqZW5kKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJZGF0YS0+b2Zmc2V0ID0gdG1wOworCX0KKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuZG9fZ2V0X3N0YXRzKGlvX2NoYW5uZWwgY2hhbm5lbCwgaW9fc3RhdHMgKnN0YXRzKQoreworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCXN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqZGF0YTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bmRvX3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZGF0YS0+cmVhbCkKKwkJcmV0dmFsID0gKGRhdGEtPnJlYWwtPm1hbmFnZXItPmdldF9zdGF0cykoZGF0YS0+cmVhbCwgc3RhdHMpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHN0cnVjdCBzdHJ1Y3RfaW9fbWFuYWdlciBzdHJ1Y3RfdW5kb19tYW5hZ2VyID0geworCS5tYWdpYwkJPSBFWFQyX0VUX01BR0lDX0lPX01BTkFHRVIsCisJLm5hbWUJCT0gIlVuZG8gSS9PIE1hbmFnZXIiLAorCS5vcGVuCQk9IHVuZG9fb3BlbiwKKwkuY2xvc2UJCT0gdW5kb19jbG9zZSwKKwkuc2V0X2Jsa3NpemUJPSB1bmRvX3NldF9ibGtzaXplLAorCS5yZWFkX2Jsawk9IHVuZG9fcmVhZF9ibGssCisJLndyaXRlX2Jsawk9IHVuZG9fd3JpdGVfYmxrLAorCS5mbHVzaAkJPSB1bmRvX2ZsdXNoLAorCS53cml0ZV9ieXRlCT0gdW5kb193cml0ZV9ieXRlLAorCS5zZXRfb3B0aW9uCT0gdW5kb19zZXRfb3B0aW9uLAorCS5nZXRfc3RhdHMJPSB1bmRvX2dldF9zdGF0cywKKwkucmVhZF9ibGs2NAk9IHVuZG9fcmVhZF9ibGs2NCwKKwkud3JpdGVfYmxrNjQJPSB1bmRvX3dyaXRlX2JsazY0LAorCS5kaXNjYXJkCT0gdW5kb19kaXNjYXJkLAorCS56ZXJvb3V0CT0gdW5kb196ZXJvb3V0LAorCS5jYWNoZV9yZWFkYWhlYWQJPSB1bmRvX2NhY2hlX3JlYWRhaGVhZCwKK307CisKK2lvX21hbmFnZXIgdW5kb19pb19tYW5hZ2VyID0gJnN0cnVjdF91bmRvX21hbmFnZXI7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy91bml4X2lvLmMgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy91bml4X2lvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE4ZDJjYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3VuaXhfaW8uYwpAQCAtMCwwICsxLDExNDMgQEAKKy8qCisgKiB1bml4X2lvLmMgLS0tIFRoaXMgaXMgdGhlIFVuaXggKHdlbGwsIHJlYWxseSBQT1NJWCkgaW1wbGVtZW50YXRpb24KKyAqCW9mIHRoZSBJL08gbWFuYWdlci4KKyAqCisgKiBJbXBsZW1lbnRzIGEgb25lLWJsb2NrIHdyaXRlLXRocm91Z2ggY2FjaGUuCisgKgorICogSW5jbHVkZXMgc3VwcG9ydCBmb3IgV2luZG93cyBOVCBzdXBwb3J0IHVuZGVyIEN5Z3dpbi4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCisgKgkyMDAyIGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pICYmICFkZWZpbmVkKF9fT3BlbkJTRF9fKQorI2RlZmluZSBfWE9QRU5fU09VUkNFIDYwMAorI2RlZmluZSBfREFSV0lOX0NfU09VUkNFCisjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZmRlZiBfX2xpbnV4X18KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1JFU09VUkNFX0gKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNlbmRpZgorI2lmIEhBVkVfTElOVVhfRkFMTE9DX0gKKyNpbmNsdWRlIDxsaW51eC9mYWxsb2MuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX0lPKSAmJiAhZGVmaW5lZChCTEtST0dFVCkKKyNkZWZpbmUgQkxLUk9HRVQgICBfSU8oMHgxMiwgOTQpIC8qIEdldCByZWFkLW9ubHkgc3RhdHVzICgwID0gcmVhZF93cml0ZSkuICAqLworI2VuZGlmCisKKyN1bmRlZiBBTElHTl9ERUJVRworCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCisvKgorICogRm9yIGNoZWNraW5nIHN0cnVjdHVyZSBtYWdpYyBudW1iZXJzLi4uCisgKi8KKworI2RlZmluZSBFWFQyX0NIRUNLX01BR0lDKHN0cnVjdCwgY29kZSkgXAorCSAgaWYgKChzdHJ1Y3QpLT5tYWdpYyAhPSAoY29kZSkpIHJldHVybiAoY29kZSkKKworc3RydWN0IHVuaXhfY2FjaGUgeworCWNoYXIJCQkqYnVmOworCXVuc2lnbmVkIGxvbmcgbG9uZwlibG9jazsKKwlpbnQJCQlhY2Nlc3NfdGltZTsKKwl1bnNpZ25lZAkJZGlydHk6MTsKKwl1bnNpZ25lZAkJaW5fdXNlOjE7Cit9OworCisjZGVmaW5lIENBQ0hFX1NJWkUgOAorI2RlZmluZSBXUklURV9ESVJFQ1RfU0laRSA0CS8qIE11c3QgYmUgc21hbGxlciB0aGFuIENBQ0hFX1NJWkUgKi8KKyNkZWZpbmUgUkVBRF9ESVJFQ1RfU0laRSA0CS8qIFNob3VsZCBiZSBzbWFsbGVyIHRoYW4gQ0FDSEVfU0laRSAqLworCitzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgeworCWludAltYWdpYzsKKwlpbnQJZGV2OworCWludAlmbGFnczsKKwlpbnQJYWxpZ247CisJaW50CWFjY2Vzc190aW1lOworCWV4dDJfbG9mZl90IG9mZnNldDsKKwlzdHJ1Y3QgdW5peF9jYWNoZSBjYWNoZVtDQUNIRV9TSVpFXTsKKwl2b2lkCSpib3VuY2U7CisJc3RydWN0IHN0cnVjdF9pb19zdGF0cyBpb19zdGF0czsKK307CisKKyNkZWZpbmUgSVNfQUxJR05FRChuLCBhbGlnbikgKCgoKHVpbnRwdHJfdCkgbikgJiBcCisJCQkgICAgICAgKCh1aW50cHRyX3QpICgoYWxpZ24pLTEpKSkgPT0gMCkKKworc3RhdGljIGVycmNvZGVfdCB1bml4X2dldF9zdGF0cyhpb19jaGFubmVsIGNoYW5uZWwsIGlvX3N0YXRzICpzdGF0cykKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoc3RhdHMpCisJCSpzdGF0cyA9ICZkYXRhLT5pb19zdGF0czsKKworCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBIZXJlIGFyZSB0aGUgcmF3IEkvTyBmdW5jdGlvbnMKKyAqLworc3RhdGljIGVycmNvZGVfdCByYXdfcmVhZF9ibGsoaW9fY2hhbm5lbCBjaGFubmVsLAorCQkJICAgICAgc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgaW50IGNvdW50LCB2b2lkICpidWZ2KQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJc3NpemVfdAkJc2l6ZTsKKwlleHQyX2xvZmZfdAlsb2NhdGlvbjsKKwlpbnQJCWFjdHVhbCA9IDA7CisJdW5zaWduZWQgY2hhcgkqYnVmID0gYnVmdjsKKworCXNpemUgPSAoY291bnQgPCAwKSA/IC1jb3VudCA6IGNvdW50ICogY2hhbm5lbC0+YmxvY2tfc2l6ZTsKKwlkYXRhLT5pb19zdGF0cy5ieXRlc19yZWFkICs9IHNpemU7CisJbG9jYXRpb24gPSAoKGV4dDJfbG9mZl90KSBibG9jayAqIGNoYW5uZWwtPmJsb2NrX3NpemUpICsgZGF0YS0+b2Zmc2V0OworCisjaWZkZWYgSEFWRV9QUkVBRDY0CisJLyogVHJ5IGFuIGFsaWduZWQgcHJlYWQgKi8KKwlpZiAoKGNoYW5uZWwtPmFsaWduID09IDApIHx8CisJICAgIChJU19BTElHTkVEKGJ1ZiwgY2hhbm5lbC0+YWxpZ24pICYmCisJICAgICBJU19BTElHTkVEKHNpemUsIGNoYW5uZWwtPmFsaWduKSkpIHsKKwkJYWN0dWFsID0gcHJlYWQ2NChkYXRhLT5kZXYsIGJ1Ziwgc2l6ZSwgbG9jYXRpb24pOworCQlpZiAoYWN0dWFsID09IHNpemUpCisJCQlyZXR1cm4gMDsKKwl9CisjZWxpZiBIQVZFX1BSRUFECisJLyogVHJ5IGFuIGFsaWduZWQgcHJlYWQgKi8KKwlpZiAoKHNpemVvZihvZmZfdCkgPj0gc2l6ZW9mKGV4dDJfbG9mZl90KSkgJiYKKwkgICAgKChjaGFubmVsLT5hbGlnbiA9PSAwKSB8fAorCSAgICAgKElTX0FMSUdORUQoYnVmLCBjaGFubmVsLT5hbGlnbikgJiYKKwkgICAgICBJU19BTElHTkVEKHNpemUsIGNoYW5uZWwtPmFsaWduKSkpKSB7CisJCWFjdHVhbCA9IHByZWFkKGRhdGEtPmRldiwgYnVmLCBzaXplLCBsb2NhdGlvbik7CisJCWlmIChhY3R1YWwgPT0gc2l6ZSkKKwkJCXJldHVybiAwOworCX0KKyNlbmRpZiAvKiBIQVZFX1BSRUFEICovCisKKwlpZiAoZXh0MmZzX2xsc2VlayhkYXRhLT5kZXYsIGxvY2F0aW9uLCBTRUVLX1NFVCkgIT0gbG9jYXRpb24pIHsKKwkJcmV0dmFsID0gZXJybm8gPyBlcnJubyA6IEVYVDJfRVRfTExTRUVLX0ZBSUxFRDsKKwkJZ290byBlcnJvcl9vdXQ7CisJfQorCWlmICgoY2hhbm5lbC0+YWxpZ24gPT0gMCkgfHwKKwkgICAgKElTX0FMSUdORUQoYnVmLCBjaGFubmVsLT5hbGlnbikgJiYKKwkgICAgIElTX0FMSUdORUQoc2l6ZSwgY2hhbm5lbC0+YWxpZ24pKSkgeworCQlhY3R1YWwgPSByZWFkKGRhdGEtPmRldiwgYnVmLCBzaXplKTsKKwkJaWYgKGFjdHVhbCAhPSBzaXplKSB7CisJCXNob3J0X3JlYWQ6CisJCQlpZiAoYWN0dWFsIDwgMCkKKwkJCQlhY3R1YWwgPSAwOworCQkJcmV0dmFsID0gRVhUMl9FVF9TSE9SVF9SRUFEOworCQkJZ290byBlcnJvcl9vdXQ7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisjaWZkZWYgQUxJR05fREVCVUcKKwlwcmludGYoInJhd19yZWFkX2JsazogT19ESVJFQ1QgZmFsbGJhY2s6ICVwICVsdVxuIiwgYnVmLAorCSAgICAgICAodW5zaWduZWQgbG9uZykgc2l6ZSk7CisjZW5kaWYKKworCS8qCisJICogVGhlIGJ1ZmZlciBvciBzaXplIHdoaWNoIHdlJ3JlIHRyeWluZyB0byByZWFkIGlzbid0IGFsaWduZWQKKwkgKiB0byB0aGUgT19ESVJFQ1QgcnVsZXMsIHNvIHdlIG5lZWQgdG8gZG8gdGhpcyB0aGUgaGFyZCB3YXkuLi4KKwkgKi8KKwl3aGlsZSAoc2l6ZSA+IDApIHsKKwkJYWN0dWFsID0gcmVhZChkYXRhLT5kZXYsIGRhdGEtPmJvdW5jZSwgY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCWlmIChhY3R1YWwgIT0gY2hhbm5lbC0+YmxvY2tfc2l6ZSkKKwkJCWdvdG8gc2hvcnRfcmVhZDsKKwkJYWN0dWFsID0gc2l6ZTsKKwkJaWYgKHNpemUgPiBjaGFubmVsLT5ibG9ja19zaXplKQorCQkJYWN0dWFsID0gY2hhbm5lbC0+YmxvY2tfc2l6ZTsKKwkJbWVtY3B5KGJ1ZiwgZGF0YS0+Ym91bmNlLCBhY3R1YWwpOworCQlzaXplIC09IGFjdHVhbDsKKwkJYnVmICs9IGFjdHVhbDsKKwl9CisJcmV0dXJuIDA7CisKK2Vycm9yX291dDoKKwltZW1zZXQoKGNoYXIgKikgYnVmK2FjdHVhbCwgMCwgc2l6ZS1hY3R1YWwpOworCWlmIChjaGFubmVsLT5yZWFkX2Vycm9yKQorCQlyZXR2YWwgPSAoY2hhbm5lbC0+cmVhZF9lcnJvcikoY2hhbm5lbCwgYmxvY2ssIGNvdW50LCBidWYsCisJCQkJCSAgICAgICBzaXplLCBhY3R1YWwsIHJldHZhbCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCByYXdfd3JpdGVfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwKKwkJCSAgICAgICBzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKmRhdGEsCisJCQkgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgIGludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmdikKK3sKKwlzc2l6ZV90CQlzaXplOworCWV4dDJfbG9mZl90CWxvY2F0aW9uOworCWludAkJYWN0dWFsID0gMDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZiA9IGJ1ZnY7CisKKwlpZiAoY291bnQgPT0gMSkKKwkJc2l6ZSA9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisJZWxzZSB7CisJCWlmIChjb3VudCA8IDApCisJCQlzaXplID0gLWNvdW50OworCQllbHNlCisJCQlzaXplID0gY291bnQgKiBjaGFubmVsLT5ibG9ja19zaXplOworCX0KKwlkYXRhLT5pb19zdGF0cy5ieXRlc193cml0dGVuICs9IHNpemU7CisKKwlsb2NhdGlvbiA9ICgoZXh0Ml9sb2ZmX3QpIGJsb2NrICogY2hhbm5lbC0+YmxvY2tfc2l6ZSkgKyBkYXRhLT5vZmZzZXQ7CisKKyNpZmRlZiBIQVZFX1BXUklURTY0CisJLyogVHJ5IGFuIGFsaWduZWQgcHdyaXRlICovCisJaWYgKChjaGFubmVsLT5hbGlnbiA9PSAwKSB8fAorCSAgICAoSVNfQUxJR05FRChidWYsIGNoYW5uZWwtPmFsaWduKSAmJgorCSAgICAgSVNfQUxJR05FRChzaXplLCBjaGFubmVsLT5hbGlnbikpKSB7CisJCWFjdHVhbCA9IHB3cml0ZTY0KGRhdGEtPmRldiwgYnVmLCBzaXplLCBsb2NhdGlvbik7CisJCWlmIChhY3R1YWwgPT0gc2l6ZSkKKwkJCXJldHVybiAwOworCX0KKyNlbGlmIEhBVkVfUFdSSVRFCisJLyogVHJ5IGFuIGFsaWduZWQgcHdyaXRlICovCisJaWYgKChzaXplb2Yob2ZmX3QpID49IHNpemVvZihleHQyX2xvZmZfdCkpICYmCisJICAgICgoY2hhbm5lbC0+YWxpZ24gPT0gMCkgfHwKKwkgICAgIChJU19BTElHTkVEKGJ1ZiwgY2hhbm5lbC0+YWxpZ24pICYmCisJICAgICAgSVNfQUxJR05FRChzaXplLCBjaGFubmVsLT5hbGlnbikpKSkgeworCQlhY3R1YWwgPSBwd3JpdGUoZGF0YS0+ZGV2LCBidWYsIHNpemUsIGxvY2F0aW9uKTsKKwkJaWYgKGFjdHVhbCA9PSBzaXplKQorCQkJcmV0dXJuIDA7CisJfQorI2VuZGlmIC8qIEhBVkVfUFdSSVRFICovCisKKwlpZiAoZXh0MmZzX2xsc2VlayhkYXRhLT5kZXYsIGxvY2F0aW9uLCBTRUVLX1NFVCkgIT0gbG9jYXRpb24pIHsKKwkJcmV0dmFsID0gZXJybm8gPyBlcnJubyA6IEVYVDJfRVRfTExTRUVLX0ZBSUxFRDsKKwkJZ290byBlcnJvcl9vdXQ7CisJfQorCisJaWYgKChjaGFubmVsLT5hbGlnbiA9PSAwKSB8fAorCSAgICAoSVNfQUxJR05FRChidWYsIGNoYW5uZWwtPmFsaWduKSAmJgorCSAgICAgSVNfQUxJR05FRChzaXplLCBjaGFubmVsLT5hbGlnbikpKSB7CisJCWFjdHVhbCA9IHdyaXRlKGRhdGEtPmRldiwgYnVmLCBzaXplKTsKKwkJaWYgKGFjdHVhbCAhPSBzaXplKSB7CisJCXNob3J0X3dyaXRlOgorCQkJcmV0dmFsID0gRVhUMl9FVF9TSE9SVF9XUklURTsKKwkJCWdvdG8gZXJyb3Jfb3V0OworCQl9CisJCXJldHVybiAwOworCX0KKworI2lmZGVmIEFMSUdOX0RFQlVHCisJcHJpbnRmKCJyYXdfd3JpdGVfYmxrOiBPX0RJUkVDVCBmYWxsYmFjazogJXAgJWx1XG4iLCBidWYsCisJICAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplKTsKKyNlbmRpZgorCS8qCisJICogVGhlIGJ1ZmZlciBvciBzaXplIHdoaWNoIHdlJ3JlIHRyeWluZyB0byB3cml0ZSBpc24ndCBhbGlnbmVkCisJICogdG8gdGhlIE9fRElSRUNUIHJ1bGVzLCBzbyB3ZSBuZWVkIHRvIGRvIHRoaXMgdGhlIGhhcmQgd2F5Li4uCisJICovCisJd2hpbGUgKHNpemUgPiAwKSB7CisJCWlmIChzaXplIDwgY2hhbm5lbC0+YmxvY2tfc2l6ZSkgeworCQkJYWN0dWFsID0gcmVhZChkYXRhLT5kZXYsIGRhdGEtPmJvdW5jZSwKKwkJCQkgICAgICBjaGFubmVsLT5ibG9ja19zaXplKTsKKwkJCWlmIChhY3R1YWwgIT0gY2hhbm5lbC0+YmxvY2tfc2l6ZSkgeworCQkJCXJldHZhbCA9IEVYVDJfRVRfU0hPUlRfUkVBRDsKKwkJCQlnb3RvIGVycm9yX291dDsKKwkJCX0KKwkJfQorCQlhY3R1YWwgPSBzaXplOworCQlpZiAoc2l6ZSA+IGNoYW5uZWwtPmJsb2NrX3NpemUpCisJCQlhY3R1YWwgPSBjaGFubmVsLT5ibG9ja19zaXplOworCQltZW1jcHkoZGF0YS0+Ym91bmNlLCBidWYsIGFjdHVhbCk7CisJCWlmIChleHQyZnNfbGxzZWVrKGRhdGEtPmRldiwgbG9jYXRpb24sIFNFRUtfU0VUKSAhPSBsb2NhdGlvbikgeworCQkJcmV0dmFsID0gZXJybm8gPyBlcnJubyA6IEVYVDJfRVRfTExTRUVLX0ZBSUxFRDsKKwkJCWdvdG8gZXJyb3Jfb3V0OworCQl9CisJCWFjdHVhbCA9IHdyaXRlKGRhdGEtPmRldiwgZGF0YS0+Ym91bmNlLCBjaGFubmVsLT5ibG9ja19zaXplKTsKKwkJaWYgKGFjdHVhbCAhPSBjaGFubmVsLT5ibG9ja19zaXplKQorCQkJZ290byBzaG9ydF93cml0ZTsKKwkJc2l6ZSAtPSBhY3R1YWw7CisJCWJ1ZiArPSBhY3R1YWw7CisJfQorCXJldHVybiAwOworCitlcnJvcl9vdXQ6CisJaWYgKGNoYW5uZWwtPndyaXRlX2Vycm9yKQorCQlyZXR2YWwgPSAoY2hhbm5lbC0+d3JpdGVfZXJyb3IpKGNoYW5uZWwsIGJsb2NrLCBjb3VudCwgYnVmLAorCQkJCQkJc2l6ZSwgYWN0dWFsLCByZXR2YWwpOworCXJldHVybiByZXR2YWw7Cit9CisKKworLyoKKyAqIEhlcmUgd2UgaW1wbGVtZW50IHRoZSBjYWNoZSBmdW5jdGlvbnMKKyAqLworCisvKiBBbGxvY2F0ZSB0aGUgY2FjaGUgYnVmZmVycyAqLworc3RhdGljIGVycmNvZGVfdCBhbGxvY19jYWNoZShpb19jaGFubmVsIGNoYW5uZWwsCisJCQkgICAgIHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YSkKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgdW5peF9jYWNoZQkqY2FjaGU7CisJaW50CQkJaTsKKworCWRhdGEtPmFjY2Vzc190aW1lID0gMDsKKwlmb3IgKGk9MCwgY2FjaGUgPSBkYXRhLT5jYWNoZTsgaSA8IENBQ0hFX1NJWkU7IGkrKywgY2FjaGUrKykgeworCQljYWNoZS0+YmxvY2sgPSAwOworCQljYWNoZS0+YWNjZXNzX3RpbWUgPSAwOworCQljYWNoZS0+ZGlydHkgPSAwOworCQljYWNoZS0+aW5fdXNlID0gMDsKKwkJaWYgKGNhY2hlLT5idWYpCisJCQlleHQyZnNfZnJlZV9tZW0oJmNhY2hlLT5idWYpOworCQlyZXR2YWwgPSBpb19jaGFubmVsX2FsbG9jX2J1ZihjaGFubmVsLCAwLCAmY2FjaGUtPmJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKwlpZiAoY2hhbm5lbC0+YWxpZ24pIHsKKwkJaWYgKGRhdGEtPmJvdW5jZSkKKwkJCWV4dDJmc19mcmVlX21lbSgmZGF0YS0+Ym91bmNlKTsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9hbGxvY19idWYoY2hhbm5lbCwgMCwgJmRhdGEtPmJvdW5jZSk7CisJfQorCXJldHVybiByZXR2YWw7Cit9CisKKy8qIEZyZWUgdGhlIGNhY2hlIGJ1ZmZlcnMgKi8KK3N0YXRpYyB2b2lkIGZyZWVfY2FjaGUoc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhKQoreworCXN0cnVjdCB1bml4X2NhY2hlCSpjYWNoZTsKKwlpbnQJCQlpOworCisJZGF0YS0+YWNjZXNzX3RpbWUgPSAwOworCWZvciAoaT0wLCBjYWNoZSA9IGRhdGEtPmNhY2hlOyBpIDwgQ0FDSEVfU0laRTsgaSsrLCBjYWNoZSsrKSB7CisJCWNhY2hlLT5ibG9jayA9IDA7CisJCWNhY2hlLT5hY2Nlc3NfdGltZSA9IDA7CisJCWNhY2hlLT5kaXJ0eSA9IDA7CisJCWNhY2hlLT5pbl91c2UgPSAwOworCQlpZiAoY2FjaGUtPmJ1ZikKKwkJCWV4dDJmc19mcmVlX21lbSgmY2FjaGUtPmJ1Zik7CisJfQorCWlmIChkYXRhLT5ib3VuY2UpCisJCWV4dDJmc19mcmVlX21lbSgmZGF0YS0+Ym91bmNlKTsKK30KKworI2lmbmRlZiBOT19JT19DQUNIRQorLyoKKyAqIFRyeSB0byBmaW5kIGEgYmxvY2sgaW4gdGhlIGNhY2hlLiAgSWYgdGhlIGJsb2NrIGlzIG5vdCBmb3VuZCwgYW5kCisgKiBlbGRlc3QgaXMgYSBub24temVybyBwb2ludGVyLCB0aGVuIGZpbGwgaW4gZWxkZXN0IHdpdGggdGhlIGNhY2hlCisgKiBlbnRyeSB0byB0aGF0IHNob3VsZCBiZSByZXVzZWQuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgdW5peF9jYWNoZSAqZmluZF9jYWNoZWRfYmxvY2soc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhLAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCQkgICAgc3RydWN0IHVuaXhfY2FjaGUgKiplbGRlc3QpCit7CisJc3RydWN0IHVuaXhfY2FjaGUJKmNhY2hlLCAqdW51c2VkX2NhY2hlLCAqb2xkZXN0X2NhY2hlOworCWludAkJCWk7CisKKwl1bnVzZWRfY2FjaGUgPSBvbGRlc3RfY2FjaGUgPSAwOworCWZvciAoaT0wLCBjYWNoZSA9IGRhdGEtPmNhY2hlOyBpIDwgQ0FDSEVfU0laRTsgaSsrLCBjYWNoZSsrKSB7CisJCWlmICghY2FjaGUtPmluX3VzZSkgeworCQkJaWYgKCF1bnVzZWRfY2FjaGUpCisJCQkJdW51c2VkX2NhY2hlID0gY2FjaGU7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoY2FjaGUtPmJsb2NrID09IGJsb2NrKSB7CisJCQljYWNoZS0+YWNjZXNzX3RpbWUgPSArK2RhdGEtPmFjY2Vzc190aW1lOworCQkJcmV0dXJuIGNhY2hlOworCQl9CisJCWlmICghb2xkZXN0X2NhY2hlIHx8CisJCSAgICAoY2FjaGUtPmFjY2Vzc190aW1lIDwgb2xkZXN0X2NhY2hlLT5hY2Nlc3NfdGltZSkpCisJCQlvbGRlc3RfY2FjaGUgPSBjYWNoZTsKKwl9CisJaWYgKGVsZGVzdCkKKwkJKmVsZGVzdCA9ICh1bnVzZWRfY2FjaGUpID8gdW51c2VkX2NhY2hlIDogb2xkZXN0X2NhY2hlOworCXJldHVybiAwOworfQorCisvKgorICogUmV1c2UgYSBwYXJ0aWN1bGFyIGNhY2hlIGVudHJ5IGZvciBhbm90aGVyIGJsb2NrLgorICovCitzdGF0aWMgdm9pZCByZXVzZV9jYWNoZShpb19jaGFubmVsIGNoYW5uZWwsIHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YSwKKwkJIHN0cnVjdCB1bml4X2NhY2hlICpjYWNoZSwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrKQoreworCWlmIChjYWNoZS0+ZGlydHkgJiYgY2FjaGUtPmluX3VzZSkKKwkJcmF3X3dyaXRlX2JsayhjaGFubmVsLCBkYXRhLCBjYWNoZS0+YmxvY2ssIDEsIGNhY2hlLT5idWYpOworCisJY2FjaGUtPmluX3VzZSA9IDE7CisJY2FjaGUtPmRpcnR5ID0gMDsKKwljYWNoZS0+YmxvY2sgPSBibG9jazsKKwljYWNoZS0+YWNjZXNzX3RpbWUgPSArK2RhdGEtPmFjY2Vzc190aW1lOworfQorCisvKgorICogRmx1c2ggYWxsIG9mIHRoZSBibG9ja3MgaW4gdGhlIGNhY2hlCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZmx1c2hfY2FjaGVkX2Jsb2Nrcyhpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJICAgICBzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKmRhdGEsCisJCQkJICAgICBpbnQgaW52YWxpZGF0ZSkKKworeworCXN0cnVjdCB1bml4X2NhY2hlCSpjYWNoZTsKKwllcnJjb2RlX3QJCXJldHZhbCwgcmV0dmFsMjsKKwlpbnQJCQlpOworCisJcmV0dmFsMiA9IDA7CisJZm9yIChpPTAsIGNhY2hlID0gZGF0YS0+Y2FjaGU7IGkgPCBDQUNIRV9TSVpFOyBpKyssIGNhY2hlKyspIHsKKwkJaWYgKCFjYWNoZS0+aW5fdXNlKQorCQkJY29udGludWU7CisKKwkJaWYgKGludmFsaWRhdGUpCisJCQljYWNoZS0+aW5fdXNlID0gMDsKKworCQlpZiAoIWNhY2hlLT5kaXJ0eSkKKwkJCWNvbnRpbnVlOworCisJCXJldHZhbCA9IHJhd193cml0ZV9ibGsoY2hhbm5lbCwgZGF0YSwKKwkJCQkgICAgICAgY2FjaGUtPmJsb2NrLCAxLCBjYWNoZS0+YnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHZhbDIgPSByZXR2YWw7CisJCWVsc2UKKwkJCWNhY2hlLT5kaXJ0eSA9IDA7CisJfQorCXJldHVybiByZXR2YWwyOworfQorI2VuZGlmIC8qIE5PX0lPX0NBQ0hFICovCisKKyNpZmRlZiBfX2xpbnV4X18KKyNpZm5kZWYgQkxLRElTQ0FSRFpFUk9FUworI2RlZmluZSBCTEtESVNDQVJEWkVST0VTIF9JTygweDEyLDEyNCkKKyNlbmRpZgorI2VuZGlmCisKK2ludCBleHQyZnNfb3Blbl9maWxlKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBpbnQgZmxhZ3MsIG1vZGVfdCBtb2RlKQoreworCWlmIChtb2RlKQorI2lmIGRlZmluZWQoSEFWRV9PUEVONjQpICYmICFkZWZpbmVkKF9fT1NYX0FWQUlMQUJMRV9CVVRfREVQUkVDQVRFRCkKKwkJcmV0dXJuIG9wZW42NChwYXRobmFtZSwgZmxhZ3MsIG1vZGUpOworCWVsc2UKKwkJcmV0dXJuIG9wZW42NChwYXRobmFtZSwgZmxhZ3MpOworI2Vsc2UKKwkJcmV0dXJuIG9wZW4ocGF0aG5hbWUsIGZsYWdzLCBtb2RlKTsKKwllbHNlCisJCXJldHVybiBvcGVuKHBhdGhuYW1lLCBmbGFncyk7CisjZW5kaWYKK30KKworaW50IGV4dDJmc19zdGF0KGNvbnN0IGNoYXIgKnBhdGgsIGV4dDJmc19zdHJ1Y3Rfc3RhdCAqYnVmKQoreworI2lmIGRlZmluZWQoSEFWRV9GU1RBVDY0KSAmJiAhZGVmaW5lZChfX09TWF9BVkFJTEFCTEVfQlVUX0RFUFJFQ0FURUQpCisJcmV0dXJuIHN0YXQ2NChwYXRoLCBidWYpOworI2Vsc2UKKwlyZXR1cm4gc3RhdChwYXRoLCBidWYpOworI2VuZGlmCit9CisKK2ludCBleHQyZnNfZnN0YXQoaW50IGZkLCBleHQyZnNfc3RydWN0X3N0YXQgKmJ1ZikKK3sKKyNpZiBkZWZpbmVkKEhBVkVfRlNUQVQ2NCkgJiYgIWRlZmluZWQoX19PU1hfQVZBSUxBQkxFX0JVVF9ERVBSRUNBVEVEKQorCXJldHVybiBmc3RhdDY0KGZkLCBidWYpOworI2Vsc2UKKwlyZXR1cm4gZnN0YXQoZmQsIGJ1Zik7CisjZW5kaWYKK30KKworCitzdGF0aWMgZXJyY29kZV90IHVuaXhfb3Blbl9jaGFubmVsKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmZCwKKwkJCQkgICBpbnQgZmxhZ3MsIGlvX2NoYW5uZWwgKmNoYW5uZWwsCisJCQkJICAgaW9fbWFuYWdlciBpb19tZ3IpCit7CisJaW9fY2hhbm5lbAlpbyA9IE5VTEw7CisJc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhID0gTlVMTDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJmc19zdHJ1Y3Rfc3RhdCBzdDsKKyNpZmRlZiBfX2xpbnV4X18KKwlzdHJ1Y3QJCXV0c25hbWUgdXQ7CisjZW5kaWYKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwpLCAmaW8pOworCWlmIChyZXR2YWwpCisJCWdvdG8gY2xlYW51cDsKKwltZW1zZXQoaW8sIDAsIHNpemVvZihzdHJ1Y3Qgc3RydWN0X2lvX2NoYW5uZWwpKTsKKwlpby0+bWFnaWMgPSBFWFQyX0VUX01BR0lDX0lPX0NIQU5ORUw7CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSksICZkYXRhKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlpby0+bWFuYWdlciA9IGlvX21ncjsKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4obmFtZSkrMSwgJmlvLT5uYW1lKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGNsZWFudXA7CisKKwlzdHJjcHkoaW8tPm5hbWUsIG5hbWUpOworCWlvLT5wcml2YXRlX2RhdGEgPSBkYXRhOworCWlvLT5ibG9ja19zaXplID0gMTAyNDsKKwlpby0+cmVhZF9lcnJvciA9IDA7CisJaW8tPndyaXRlX2Vycm9yID0gMDsKKwlpby0+cmVmY291bnQgPSAxOworCisJbWVtc2V0KGRhdGEsIDAsIHNpemVvZihzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEpKTsKKwlkYXRhLT5tYWdpYyA9IEVYVDJfRVRfTUFHSUNfVU5JWF9JT19DSEFOTkVMOworCWRhdGEtPmlvX3N0YXRzLm51bV9maWVsZHMgPSAyOworCWRhdGEtPmZsYWdzID0gZmxhZ3M7CisJZGF0YS0+ZGV2ID0gZmQ7CisKKyNpZiBkZWZpbmVkKE9fRElSRUNUKQorCWlmIChmbGFncyAmIElPX0ZMQUdfRElSRUNUX0lPKQorCQlpby0+YWxpZ24gPSBleHQyZnNfZ2V0X2Rpb19hbGlnbm1lbnQoZGF0YS0+ZGV2KTsKKyNlbGlmIGRlZmluZWQoRl9OT0NBQ0hFKQorCWlmIChmbGFncyAmIElPX0ZMQUdfRElSRUNUX0lPKQorCQlpby0+YWxpZ24gPSA0MDk2OworI2VuZGlmCisKKwkvKgorCSAqIElmIHRoZSBkZXZpY2UgaXMgcmVhbGx5IGEgYmxvY2sgZGV2aWNlLCB0aGVuIHNldCB0aGUKKwkgKiBhcHByb3ByaWF0ZSBmbGFnLCBvdGhlcndpc2Ugd2UgY2FuIHNldCBESVNDQVJEX1pFUk9FUyBmbGFnCisJICogYmVjYXVzZSB3ZSBhcmUgZ29pbmcgdG8gdXNlIHB1bmNoIGhvbGUgaW5zdGVhZCBvZiBkaXNjYXJkCisJICogYW5kIGlmIGl0IHN1Y2NlZWQsIHN1YnNlcXVlbnQgcmVhZCBmcm9tIHNwYXJzZSBhcmVhIHJldHVybnMKKwkgKiB6ZXJvLgorCSAqLworCWlmIChleHQyZnNfZnN0YXQoZGF0YS0+ZGV2LCAmc3QpID09IDApIHsKKwkJaWYgKFNfSVNCTEsoc3Quc3RfbW9kZSkpCisJCQlpby0+ZmxhZ3MgfD0gQ0hBTk5FTF9GTEFHU19CTE9DS19ERVZJQ0U7CisJCWVsc2UKKwkJCWlvLT5mbGFncyB8PSBDSEFOTkVMX0ZMQUdTX0RJU0NBUkRfWkVST0VTOworCX0KKworI2lmZGVmIEJMS0RJU0NBUkRaRVJPRVMKKwl7CisJCWludCB6ZXJvZXMgPSAwOworCQlpZiAoaW9jdGwoZGF0YS0+ZGV2LCBCTEtESVNDQVJEWkVST0VTLCAmemVyb2VzKSA9PSAwICYmCisJCSAgICB6ZXJvZXMpCisJCQlpby0+ZmxhZ3MgfD0gQ0hBTk5FTF9GTEFHU19ESVNDQVJEX1pFUk9FUzsKKwl9CisjZW5kaWYKKworI2lmIGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCisJLyoKKwkgKiBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIHJlcXVpcmUgdGhhdCB0aGUgYnVmZmVycyBiZSBhbGlnbmVkLAorCSAqIHJlZ2FyZGxlc3Mgb2YgT19ESVJFQ1QKKwkgKi8KKwlpZiAoIWlvLT5hbGlnbikKKwkJaW8tPmFsaWduID0gNTEyOworI2VuZGlmCisKKworCWlmICgocmV0dmFsID0gYWxsb2NfY2FjaGUoaW8sIGRhdGEpKSkKKwkJZ290byBjbGVhbnVwOworCisjaWZkZWYgQkxLUk9HRVQKKwlpZiAoZmxhZ3MgJiBJT19GTEFHX1JXKSB7CisJCWludCBlcnJvcjsKKwkJaW50IHJlYWRvbmx5ID0gMDsKKworCQkvKiBJcyB0aGUgYmxvY2sgZGV2aWNlIGFjdHVhbGx5IHdyaXRhYmxlPyAqLworCQllcnJvciA9IGlvY3RsKGRhdGEtPmRldiwgQkxLUk9HRVQsICZyZWFkb25seSk7CisJCWlmICghZXJyb3IgJiYgcmVhZG9ubHkpIHsKKwkJCXJldHZhbCA9IEVQRVJNOworCQkJZ290byBjbGVhbnVwOworCQl9CisJfQorI2VuZGlmCisKKyNpZmRlZiBfX2xpbnV4X18KKyN1bmRlZiBSTElNX0lORklOSVRZCisjaWYgKGRlZmluZWQoX19hbHBoYV9fKSB8fCAoKGRlZmluZWQoX19zcGFyY19fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSkgJiYgKFNJWkVPRl9MT05HID09IDQpKSkKKyNkZWZpbmUgUkxJTV9JTkZJTklUWQkoKHVuc2lnbmVkIGxvbmcpKH4wVUw+PjEpKQorI2Vsc2UKKyNkZWZpbmUgUkxJTV9JTkZJTklUWSAgKH4wVUwpCisjZW5kaWYKKwkvKgorCSAqIFdvcmsgYXJvdW5kIGEgYnVnIGluIDIuNC4xMC0yLjQuMTgga2VybmVscyB3aGVyZSB3cml0ZXMgdG8KKwkgKiBibG9jayBkZXZpY2VzIGFyZSB3cm9uZ2x5IGdldHRpbmcgaGl0IGJ5IHRoZSBmaWxlc2l6ZQorCSAqIGxpbWl0LiAgVGhpcyB3b3JrYXJvdW5kIGlzbid0IHBlcmZlY3QsIHNpbmNlIGl0IHdvbid0IHdvcmsKKwkgKiBpZiBnbGliYyB3YXNuJ3QgYnVpbHQgYWdhaW5zdCAyLjIgaGVhZGVyIGZpbGVzLiAgKFNpZ2guKQorCSAqCisJICovCisJaWYgKChmbGFncyAmIElPX0ZMQUdfUlcpICYmCisJICAgICh1bmFtZSgmdXQpID09IDApICYmCisJICAgICgodXQucmVsZWFzZVswXSA9PSAnMicpICYmICh1dC5yZWxlYXNlWzFdID09ICcuJykgJiYKKwkgICAgICh1dC5yZWxlYXNlWzJdID09ICc0JykgJiYgKHV0LnJlbGVhc2VbM10gPT0gJy4nKSAmJgorCSAgICAgKHV0LnJlbGVhc2VbNF0gPT0gJzEnKSAmJiAodXQucmVsZWFzZVs1XSA+PSAnMCcpICYmCisJICAgICAodXQucmVsZWFzZVs1XSA8ICc4JykpICYmCisJICAgIChleHQyZnNfZnN0YXQoZGF0YS0+ZGV2LCAmc3QpID09IDApICYmCisJICAgIChTX0lTQkxLKHN0LnN0X21vZGUpKSkgeworCQlzdHJ1Y3QgcmxpbWl0CXJsaW07CisKKwkJcmxpbS5ybGltX2N1ciA9IHJsaW0ucmxpbV9tYXggPSAodW5zaWduZWQgbG9uZykgUkxJTV9JTkZJTklUWTsKKwkJc2V0cmxpbWl0KFJMSU1JVF9GU0laRSwgJnJsaW0pOworCQlnZXRybGltaXQoUkxJTUlUX0ZTSVpFLCAmcmxpbSk7CisJCWlmICgoKHVuc2lnbmVkIGxvbmcpIHJsaW0ucmxpbV9jdXIpIDwKKwkJICAgICgodW5zaWduZWQgbG9uZykgcmxpbS5ybGltX21heCkpIHsKKwkJCXJsaW0ucmxpbV9jdXIgPSBybGltLnJsaW1fbWF4OworCQkJc2V0cmxpbWl0KFJMSU1JVF9GU0laRSwgJnJsaW0pOworCQl9CisJfQorI2VuZGlmCisJKmNoYW5uZWwgPSBpbzsKKwlyZXR1cm4gMDsKKworY2xlYW51cDoKKwlpZiAoZGF0YSkgeworCQlpZiAoZGF0YS0+ZGV2ID49IDApCisJCQljbG9zZShkYXRhLT5kZXYpOworCQlmcmVlX2NhY2hlKGRhdGEpOworCQlleHQyZnNfZnJlZV9tZW0oJmRhdGEpOworCX0KKwlpZiAoaW8pIHsKKwkJaWYgKGlvLT5uYW1lKSB7CisJCQlleHQyZnNfZnJlZV9tZW0oJmlvLT5uYW1lKTsKKwkJfQorCQlleHQyZnNfZnJlZV9tZW0oJmlvKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4ZmRfb3Blbihjb25zdCBjaGFyICpzdHJfZmQsIGludCBmbGFncywKKwkJCSAgICAgaW9fY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlpbnQgZmQ7CisJaW50IGZkX2ZsYWdzOworCisJZmQgPSBhdG9pKHN0cl9mZCk7CisJZmRfZmxhZ3MgPSBmY250bChmZCwgRl9HRVRGRCk7CisJaWYgKGZkX2ZsYWdzID09IC0xKQorCQlyZXR1cm4gLUVCQURGOworCisJZmxhZ3MgPSAwOworCWlmIChmZF9mbGFncyAmIE9fUkRXUikKKwkJZmxhZ3MgfD0gSU9fRkxBR19SVzsKKwlpZiAoZmRfZmxhZ3MgJiBPX0VYQ0wpCisJCWZsYWdzIHw9IElPX0ZMQUdfRVhDTFVTSVZFOworI2lmIGRlZmluZWQoT19ESVJFQ1QpCisJaWYgKGZkX2ZsYWdzICYgT19ESVJFQ1QpCisJCWZsYWdzIHw9IElPX0ZMQUdfRElSRUNUX0lPOworI2VuZGlmCisKKwlyZXR1cm4gdW5peF9vcGVuX2NoYW5uZWwoc3RyX2ZkLCBmZCwgZmxhZ3MsIGNoYW5uZWwsIHVuaXhmZF9pb19tYW5hZ2VyKTsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4X29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzLAorCQkJICAgaW9fY2hhbm5lbCAqY2hhbm5lbCkKK3sKKwlpbnQgZmQgPSAtMTsKKwlpbnQgb3Blbl9mbGFnczsKKworCWlmIChuYW1lID09IDApCisJCXJldHVybiBFWFQyX0VUX0JBRF9ERVZJQ0VfTkFNRTsKKworCW9wZW5fZmxhZ3MgPSAoZmxhZ3MgJiBJT19GTEFHX1JXKSA/IE9fUkRXUiA6IE9fUkRPTkxZOworCWlmIChmbGFncyAmIElPX0ZMQUdfRVhDTFVTSVZFKQorCQlvcGVuX2ZsYWdzIHw9IE9fRVhDTDsKKyNpZiBkZWZpbmVkKE9fRElSRUNUKQorCWlmIChmbGFncyAmIElPX0ZMQUdfRElSRUNUX0lPKQorCQlvcGVuX2ZsYWdzIHw9IE9fRElSRUNUOworI2VuZGlmCisJZmQgPSBleHQyZnNfb3Blbl9maWxlKG5hbWUsIG9wZW5fZmxhZ3MsIDApOworCWlmIChmZCA8IDApCisJCXJldHVybiBlcnJubzsKKyNpZiBkZWZpbmVkKEZfTk9DQUNIRSkgJiYgIWRlZmluZWQoSU9fRElSRUNUKQorCWlmIChmbGFncyAmIElPX0ZMQUdfRElSRUNUX0lPKSB7CisJCWlmIChmY250bChmZCwgRl9OT0NBQ0hFLCAxKSA8IDApCisJCQlyZXR1cm4gZXJybm87CisJfQorI2VuZGlmCisJcmV0dXJuIHVuaXhfb3Blbl9jaGFubmVsKG5hbWUsIGZkLCBmbGFncywgY2hhbm5lbCwgdW5peF9pb19tYW5hZ2VyKTsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4X2Nsb3NlKGlvX2NoYW5uZWwgY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKmRhdGE7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisJaWYgKC0tY2hhbm5lbC0+cmVmY291bnQgPiAwKQorCQlyZXR1cm4gMDsKKworI2lmbmRlZiBOT19JT19DQUNIRQorCXJldHZhbCA9IGZsdXNoX2NhY2hlZF9ibG9ja3MoY2hhbm5lbCwgZGF0YSwgMCk7CisjZW5kaWYKKworCWlmIChjbG9zZShkYXRhLT5kZXYpIDwgMCkKKwkJcmV0dmFsID0gZXJybm87CisJZnJlZV9jYWNoZShkYXRhKTsKKworCWV4dDJmc19mcmVlX21lbSgmY2hhbm5lbC0+cHJpdmF0ZV9kYXRhKTsKKwlpZiAoY2hhbm5lbC0+bmFtZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjaGFubmVsLT5uYW1lKTsKKwlleHQyZnNfZnJlZV9tZW0oJmNoYW5uZWwpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5peF9zZXRfYmxrc2l6ZShpb19jaGFubmVsIGNoYW5uZWwsIGludCBibGtzaXplKQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY2hhbm5lbC0+YmxvY2tfc2l6ZSAhPSBibGtzaXplKSB7CisjaWZuZGVmIE5PX0lPX0NBQ0hFCisJCWlmICgocmV0dmFsID0gZmx1c2hfY2FjaGVkX2Jsb2NrcyhjaGFubmVsLCBkYXRhLCAwKSkpCisJCQlyZXR1cm4gcmV0dmFsOworI2VuZGlmCisKKwkJY2hhbm5lbC0+YmxvY2tfc2l6ZSA9IGJsa3NpemU7CisJCWZyZWVfY2FjaGUoZGF0YSk7CisJCWlmICgocmV0dmFsID0gYWxsb2NfY2FjaGUoY2hhbm5lbCwgZGF0YSkpKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5peF9yZWFkX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgIGludCBjb3VudCwgdm9pZCAqYnVmKQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgdW5peF9jYWNoZSAqY2FjaGUsICpyZXVzZVtSRUFEX0RJUkVDVF9TSVpFXTsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpjcDsKKwlpbnQJCWksIGo7CisKKwlFWFQyX0NIRUNLX01BR0lDKGNoYW5uZWwsIEVYVDJfRVRfTUFHSUNfSU9fQ0hBTk5FTCk7CisJZGF0YSA9IChzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKikgY2hhbm5lbC0+cHJpdmF0ZV9kYXRhOworCUVYVDJfQ0hFQ0tfTUFHSUMoZGF0YSwgRVhUMl9FVF9NQUdJQ19VTklYX0lPX0NIQU5ORUwpOworCisjaWZkZWYgTk9fSU9fQ0FDSEUKKwlyZXR1cm4gcmF3X3JlYWRfYmxrKGNoYW5uZWwsIGRhdGEsIGJsb2NrLCBjb3VudCwgYnVmKTsKKyNlbHNlCisJLyoKKwkgKiBJZiB3ZSdyZSBkb2luZyBhbiBvZGQtc2l6ZWQgcmVhZCBvciBhIHZlcnkgbGFyZ2UgcmVhZCwKKwkgKiBmbHVzaCBvdXQgdGhlIGNhY2hlIGFuZCB0aGVuIGRvIGEgZGlyZWN0IHJlYWQuCisJICovCisJaWYgKGNvdW50IDwgMCB8fCBjb3VudCA+IFdSSVRFX0RJUkVDVF9TSVpFKSB7CisJCWlmICgocmV0dmFsID0gZmx1c2hfY2FjaGVkX2Jsb2NrcyhjaGFubmVsLCBkYXRhLCAwKSkpCisJCQlyZXR1cm4gcmV0dmFsOworCQlyZXR1cm4gcmF3X3JlYWRfYmxrKGNoYW5uZWwsIGRhdGEsIGJsb2NrLCBjb3VudCwgYnVmKTsKKwl9CisKKwljcCA9IGJ1ZjsKKwl3aGlsZSAoY291bnQgPiAwKSB7CisJCS8qIElmIGl0J3MgaW4gdGhlIGNhY2hlLCB1c2UgaXQhICovCisJCWlmICgoY2FjaGUgPSBmaW5kX2NhY2hlZF9ibG9jayhkYXRhLCBibG9jaywgJnJldXNlWzBdKSkpIHsKKyNpZmRlZiBERUJVRworCQkJcHJpbnRmKCJVc2luZyBjYWNoZWQgYmxvY2sgJWx1XG4iLCBibG9jayk7CisjZW5kaWYKKwkJCW1lbWNweShjcCwgY2FjaGUtPmJ1ZiwgY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCQljb3VudC0tOworCQkJYmxvY2srKzsKKwkJCWNwICs9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoY291bnQgPT0gMSkgeworCQkJLyoKKwkJCSAqIFNwZWNpYWwgY2FzZSB3aGVyZSB3ZSByZWFkIGRpcmVjdGx5IGludG8gdGhlCisJCQkgKiBjYWNoZSBidWZmZXI7IGltcG9ydGFudCBpbiB0aGUgT19ESVJFQ1QgY2FzZQorCQkJICovCisJCQljYWNoZSA9IHJldXNlWzBdOworCQkJcmV1c2VfY2FjaGUoY2hhbm5lbCwgZGF0YSwgY2FjaGUsIGJsb2NrKTsKKwkJCWlmICgocmV0dmFsID0gcmF3X3JlYWRfYmxrKGNoYW5uZWwsIGRhdGEsIGJsb2NrLCAxLAorCQkJCQkJICAgY2FjaGUtPmJ1ZikpKSB7CisJCQkJY2FjaGUtPmluX3VzZSA9IDA7CisJCQkJcmV0dXJuIHJldHZhbDsKKwkJCX0KKwkJCW1lbWNweShjcCwgY2FjaGUtPmJ1ZiwgY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCQlyZXR1cm4gMDsKKwkJfQorCisJCS8qCisJCSAqIEZpbmQgdGhlIG51bWJlciBvZiB1bmNhY2hlZCBibG9ja3Mgc28gd2UgY2FuIGRvIGEKKwkJICogc2luZ2xlIHJlYWQgcmVxdWVzdAorCQkgKi8KKwkJZm9yIChpPTE7IGkgPCBjb3VudDsgaSsrKQorCQkJaWYgKGZpbmRfY2FjaGVkX2Jsb2NrKGRhdGEsIGJsb2NrK2ksICZyZXVzZVtpXSkpCisJCQkJYnJlYWs7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJSZWFkaW5nICVkIGJsb2NrcyBzdGFydGluZyBhdCAlbHVcbiIsIGksIGJsb2NrKTsKKyNlbmRpZgorCQlpZiAoKHJldHZhbCA9IHJhd19yZWFkX2JsayhjaGFubmVsLCBkYXRhLCBibG9jaywgaSwgY3ApKSkKKwkJCXJldHVybiByZXR2YWw7CisKKwkJLyogU2F2ZSB0aGUgcmVzdWx0cyBpbiB0aGUgY2FjaGUgKi8KKwkJZm9yIChqPTA7IGogPCBpOyBqKyspIHsKKwkJCWNvdW50LS07CisJCQljYWNoZSA9IHJldXNlW2pdOworCQkJcmV1c2VfY2FjaGUoY2hhbm5lbCwgZGF0YSwgY2FjaGUsIGJsb2NrKyspOworCQkJbWVtY3B5KGNhY2hlLT5idWYsIGNwLCBjaGFubmVsLT5ibG9ja19zaXplKTsKKwkJCWNwICs9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisJCX0KKwl9CisJcmV0dXJuIDA7CisjZW5kaWYgLyogTk9fSU9fQ0FDSEUgKi8KK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4X3JlYWRfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCSAgICAgICBpbnQgY291bnQsIHZvaWQgKmJ1ZikKK3sKKwlyZXR1cm4gdW5peF9yZWFkX2JsazY0KGNoYW5uZWwsIGJsb2NrLCBjb3VudCwgYnVmKTsKK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4X3dyaXRlX2JsazY0KGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCWludCBjb3VudCwgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgdW5peF9jYWNoZSAqY2FjaGUsICpyZXVzZTsKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwljb25zdCBjaGFyCSpjcDsKKwlpbnQJCXdyaXRldGhyb3VnaDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKyNpZmRlZiBOT19JT19DQUNIRQorCXJldHVybiByYXdfd3JpdGVfYmxrKGNoYW5uZWwsIGRhdGEsIGJsb2NrLCBjb3VudCwgYnVmKTsKKyNlbHNlCisJLyoKKwkgKiBJZiB3ZSdyZSBkb2luZyBhbiBvZGQtc2l6ZWQgd3JpdGUgb3IgYSB2ZXJ5IGxhcmdlIHdyaXRlLAorCSAqIGZsdXNoIG91dCB0aGUgY2FjaGUgY29tcGxldGVseSBhbmQgdGhlbiBkbyBhIGRpcmVjdCB3cml0ZS4KKwkgKi8KKwlpZiAoY291bnQgPCAwIHx8IGNvdW50ID4gV1JJVEVfRElSRUNUX1NJWkUpIHsKKwkJaWYgKChyZXR2YWwgPSBmbHVzaF9jYWNoZWRfYmxvY2tzKGNoYW5uZWwsIGRhdGEsIDEpKSkKKwkJCXJldHVybiByZXR2YWw7CisJCXJldHVybiByYXdfd3JpdGVfYmxrKGNoYW5uZWwsIGRhdGEsIGJsb2NrLCBjb3VudCwgYnVmKTsKKwl9CisKKwkvKgorCSAqIEZvciBhIG1vZGVyYXRlLXNpemVkIG11bHRpLWJsb2NrIHdyaXRlLCBmaXJzdCBmb3JjZSBhIHdyaXRlCisJICogaWYgd2UncmUgaW4gd3JpdGUtdGhyb3VnaCBjYWNoZSBtb2RlLCBhbmQgdGhlbiBmaWxsIHRoZQorCSAqIGNhY2hlIHdpdGggdGhlIGJsb2Nrcy4KKwkgKi8KKwl3cml0ZXRocm91Z2ggPSBjaGFubmVsLT5mbGFncyAmIENIQU5ORUxfRkxBR1NfV1JJVEVUSFJPVUdIOworCWlmICh3cml0ZXRocm91Z2gpCisJCXJldHZhbCA9IHJhd193cml0ZV9ibGsoY2hhbm5lbCwgZGF0YSwgYmxvY2ssIGNvdW50LCBidWYpOworCisJY3AgPSBidWY7CisJd2hpbGUgKGNvdW50ID4gMCkgeworCQljYWNoZSA9IGZpbmRfY2FjaGVkX2Jsb2NrKGRhdGEsIGJsb2NrLCAmcmV1c2UpOworCQlpZiAoIWNhY2hlKSB7CisJCQljYWNoZSA9IHJldXNlOworCQkJcmV1c2VfY2FjaGUoY2hhbm5lbCwgZGF0YSwgY2FjaGUsIGJsb2NrKTsKKwkJfQorCQlpZiAoY2FjaGUtPmJ1ZiAhPSBjcCkKKwkJCW1lbWNweShjYWNoZS0+YnVmLCBjcCwgY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCWNhY2hlLT5kaXJ0eSA9ICF3cml0ZXRocm91Z2g7CisJCWNvdW50LS07CisJCWJsb2NrKys7CisJCWNwICs9IGNoYW5uZWwtPmJsb2NrX3NpemU7CisJfQorCXJldHVybiByZXR2YWw7CisjZW5kaWYgLyogTk9fSU9fQ0FDSEUgKi8KK30KKworc3RhdGljIGVycmNvZGVfdCB1bml4X2NhY2hlX3JlYWRhaGVhZChpb19jaGFubmVsIGNoYW5uZWwsCisJCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjb3VudCkKK3sKKyNpZmRlZiBQT1NJWF9GQURWX1dJTExORUVECisJc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhOworCisJZGF0YSA9IChzdHJ1Y3QgdW5peF9wcml2YXRlX2RhdGEgKiljaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisJcmV0dXJuIHBvc2l4X2ZhZHZpc2UoZGF0YS0+ZGV2LAorCQkJICAgICAoZXh0Ml9sb2ZmX3QpYmxvY2sgKiBjaGFubmVsLT5ibG9ja19zaXplICsgZGF0YS0+b2Zmc2V0LAorCQkJICAgICAoZXh0Ml9sb2ZmX3QpY291bnQgKiBjaGFubmVsLT5ibG9ja19zaXplLAorCQkJICAgICBQT1NJWF9GQURWX1dJTExORUVEKTsKKyNlbHNlCisJcmV0dXJuIEVYVDJfRVRfT1BfTk9UX1NVUFBPUlRFRDsKKyNlbmRpZgorfQorCitzdGF0aWMgZXJyY29kZV90IHVuaXhfd3JpdGVfYmxrKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBibG9jaywKKwkJCQlpbnQgY291bnQsIGNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlyZXR1cm4gdW5peF93cml0ZV9ibGs2NChjaGFubmVsLCBibG9jaywgY291bnQsIGJ1Zik7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgdW5peF93cml0ZV9ieXRlKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBvZmZzZXQsCisJCQkJIGludCBzaXplLCBjb25zdCB2b2lkICpidWYpCit7CisJc3RydWN0IHVuaXhfcHJpdmF0ZV9kYXRhICpkYXRhOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCXNzaXplX3QJCWFjdHVhbDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY2hhbm5lbC0+YWxpZ24gIT0gMCkgeworI2lmZGVmIEFMSUdOX0RFQlVHCisJCXByaW50ZigidW5peF93cml0ZV9ieXRlOiBPX0RJUkVDVCBmYWxsYmFja1xuIik7CisjZW5kaWYKKwkJcmV0dXJuIEVYVDJfRVRfVU5JTVBMRU1FTlRFRDsKKwl9CisKKyNpZm5kZWYgTk9fSU9fQ0FDSEUKKwkvKgorCSAqIEZsdXNoIG91dCB0aGUgY2FjaGUgY29tcGxldGVseQorCSAqLworCWlmICgocmV0dmFsID0gZmx1c2hfY2FjaGVkX2Jsb2NrcyhjaGFubmVsLCBkYXRhLCAxKSkpCisJCXJldHVybiByZXR2YWw7CisjZW5kaWYKKworCWlmIChsc2VlayhkYXRhLT5kZXYsIG9mZnNldCArIGRhdGEtPm9mZnNldCwgU0VFS19TRVQpIDwgMCkKKwkJcmV0dXJuIGVycm5vOworCisJYWN0dWFsID0gd3JpdGUoZGF0YS0+ZGV2LCBidWYsIHNpemUpOworCWlmIChhY3R1YWwgIT0gc2l6ZSkKKwkJcmV0dXJuIEVYVDJfRVRfU0hPUlRfV1JJVEU7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZsdXNoIGRhdGEgYnVmZmVycyB0byBkaXNrLgorICovCitzdGF0aWMgZXJyY29kZV90IHVuaXhfZmx1c2goaW9fY2hhbm5lbCBjaGFubmVsKQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKyNpZm5kZWYgTk9fSU9fQ0FDSEUKKwlyZXR2YWwgPSBmbHVzaF9jYWNoZWRfYmxvY2tzKGNoYW5uZWwsIGRhdGEsIDApOworI2VuZGlmCisJZnN5bmMoZGF0YS0+ZGV2KTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IHVuaXhfc2V0X29wdGlvbihpb19jaGFubmVsIGNoYW5uZWwsIGNvbnN0IGNoYXIgKm9wdGlvbiwKKwkJCQkgY29uc3QgY2hhciAqYXJnKQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgdG1wOworCWNoYXIgKmVuZDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoIXN0cmNtcChvcHRpb24sICJvZmZzZXQiKSkgeworCQlpZiAoIWFyZykKKwkJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwkJdG1wID0gc3RydG91bGwoYXJnLCAmZW5kLCAwKTsKKwkJaWYgKCplbmQpCisJCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCQlkYXRhLT5vZmZzZXQgPSB0bXA7CisJCWlmIChkYXRhLT5vZmZzZXQgPCAwKQorCQkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7Cit9CisKKyNpZiBkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoQkxLRElTQ0FSRCkKKyNkZWZpbmUgQkxLRElTQ0FSRAkJX0lPKDB4MTIsMTE5KQorI2VuZGlmCisKK3N0YXRpYyBlcnJjb2RlX3QgdW5peF9kaXNjYXJkKGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwlpbnQJCXJldDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoY2hhbm5lbC0+ZmxhZ3MgJiBDSEFOTkVMX0ZMQUdTX0JMT0NLX0RFVklDRSkgeworI2lmZGVmIEJMS0RJU0NBUkQKKwkJX191NjQgcmFuZ2VbMl07CisKKwkJcmFuZ2VbMF0gPSAoX191NjQpKGJsb2NrKSAqIGNoYW5uZWwtPmJsb2NrX3NpemUgKyBkYXRhLT5vZmZzZXQ7CisJCXJhbmdlWzFdID0gKF9fdTY0KShjb3VudCkgKiBjaGFubmVsLT5ibG9ja19zaXplOworCisJCXJldCA9IGlvY3RsKGRhdGEtPmRldiwgQkxLRElTQ0FSRCwgJnJhbmdlKTsKKyNlbHNlCisJCWdvdG8gdW5pbXBsZW1lbnRlZDsKKyNlbmRpZgorCX0gZWxzZSB7CisjaWYgZGVmaW5lZChIQVZFX0ZBTExPQ0FURSkgJiYgZGVmaW5lZChGQUxMT0NfRkxfUFVOQ0hfSE9MRSkKKwkJLyoKKwkJICogSWYgd2UgYXJlIG5vdCBvbiBibG9jayBkZXZpY2UsIHRyeSB0byB1c2UgcHVuY2ggaG9sZQorCQkgKiB0byByZWNsYWltIGZyZWUgc3BhY2UuCisJCSAqLworCQlyZXQgPSBmYWxsb2NhdGUoZGF0YS0+ZGV2LAorCQkJCUZBTExPQ19GTF9QVU5DSF9IT0xFIHwgRkFMTE9DX0ZMX0tFRVBfU0laRSwKKwkJCQkob2ZmX3QpKGJsb2NrKSAqIGNoYW5uZWwtPmJsb2NrX3NpemUgKyBkYXRhLT5vZmZzZXQsCisJCQkJKG9mZl90KShjb3VudCkgKiBjaGFubmVsLT5ibG9ja19zaXplKTsKKyNlbHNlCisJCWdvdG8gdW5pbXBsZW1lbnRlZDsKKyNlbmRpZgorCX0KKwlpZiAocmV0IDwgMCkgeworCQlpZiAoZXJybm8gPT0gRU9QTk9UU1VQUCkKKwkJCWdvdG8gdW5pbXBsZW1lbnRlZDsKKwkJcmV0dXJuIGVycm5vOworCX0KKwlyZXR1cm4gMDsKK3VuaW1wbGVtZW50ZWQ6CisJcmV0dXJuIEVYVDJfRVRfVU5JTVBMRU1FTlRFRDsKK30KKworLyogcGFyYW1ldGVycyBtaWdodCBub3QgYmUgdXNlZCBpZiBPUyBkb2Vzbid0IHN1cHBvcnQgemVyb291dCAqLworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLXBhcmFtZXRlciIKK3N0YXRpYyBlcnJjb2RlX3QgdW5peF96ZXJvb3V0KGlvX2NoYW5uZWwgY2hhbm5lbCwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2NrLAorCQkJICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGNvdW50KQoreworCXN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqZGF0YTsKKwlpbnQJCXJldDsKKworCUVYVDJfQ0hFQ0tfTUFHSUMoY2hhbm5lbCwgRVhUMl9FVF9NQUdJQ19JT19DSEFOTkVMKTsKKwlkYXRhID0gKHN0cnVjdCB1bml4X3ByaXZhdGVfZGF0YSAqKSBjaGFubmVsLT5wcml2YXRlX2RhdGE7CisJRVhUMl9DSEVDS19NQUdJQyhkYXRhLCBFWFQyX0VUX01BR0lDX1VOSVhfSU9fQ0hBTk5FTCk7CisKKwlpZiAoZ2V0ZW52KCJVTklYX0lPX05PWkVST09VVCIpKQorCQlnb3RvIHVuaW1wbGVtZW50ZWQ7CisKKwlpZiAoY2hhbm5lbC0+ZmxhZ3MgJiBDSEFOTkVMX0ZMQUdTX0JMT0NLX0RFVklDRSkgeworCQkvKiBOb3QgaW1wbGVtZW50ZWQgdW50aWwgdGhlIEJMS1pFUk9PVVQgbWVzcyBpcyBmaXhlZCAqLworCQlnb3RvIHVuaW1wbGVtZW50ZWQ7CisJfSBlbHNlIHsKKwkJLyogUmVndWxhciBmaWxlLCB0cnkgdG8gdXNlIHRydW5jYXRlL3B1bmNoL3plcm8uICovCisJCXN0cnVjdCBzdGF0IHN0YXRidWY7CisKKwkJaWYgKGNvdW50ID09IDApCisJCQlyZXR1cm4gMDsKKwkJLyoKKwkJICogSWYgd2UncmUgdHJ5aW5nIHRvIHplcm8gYSByYW5nZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGZpbGUsCisJCSAqIGV4dGVuZCB0aGUgZmlsZSBzaXplLCB0aGVuIHRydW5jYXRlIGV2ZXJ5dGhpbmcuCisJCSAqLworCQlyZXQgPSBmc3RhdChkYXRhLT5kZXYsICZzdGF0YnVmKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyOworCQlpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZykgc3RhdGJ1Zi5zdF9zaXplIDwKKwkJCShibG9jayArIGNvdW50KSAqIGNoYW5uZWwtPmJsb2NrX3NpemUgKyBkYXRhLT5vZmZzZXQpIHsKKwkJCXJldCA9IGZ0cnVuY2F0ZShkYXRhLT5kZXYsCisJCQkJCShibG9jayArIGNvdW50KSAqIGNoYW5uZWwtPmJsb2NrX3NpemUgKyBkYXRhLT5vZmZzZXQpOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIGVycjsKKwkJfQorI2lmIGRlZmluZWQoSEFWRV9GQUxMT0NBVEUpICYmIChkZWZpbmVkKEZBTExPQ19GTF9aRVJPX1JBTkdFKSB8fCBcCisJKGRlZmluZWQoRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmIGRlZmluZWQoRkFMTE9DX0ZMX0tFRVBfU0laRSkpKQorI2lmIGRlZmluZWQoRkFMTE9DX0ZMX1BVTkNIX0hPTEUpICYmIGRlZmluZWQoRkFMTE9DX0ZMX0tFRVBfU0laRSkKKwkJcmV0ID0gZmFsbG9jYXRlKGRhdGEtPmRldiwKKwkJCQlGQUxMT0NfRkxfUFVOQ0hfSE9MRSB8IEZBTExPQ19GTF9LRUVQX1NJWkUsCisJCQkJKG9mZl90KShibG9jaykgKiBjaGFubmVsLT5ibG9ja19zaXplICsgZGF0YS0+b2Zmc2V0LAorCQkJCShvZmZfdCkoY291bnQpICogY2hhbm5lbC0+YmxvY2tfc2l6ZSk7CisJCWlmIChyZXQgPT0gMCkKKwkJCWdvdG8gZXJyOworI2VuZGlmCisjaWZkZWYgRkFMTE9DX0ZMX1pFUk9fUkFOR0UKKwkJcmV0ID0gZmFsbG9jYXRlKGRhdGEtPmRldiwKKwkJCQlGQUxMT0NfRkxfWkVST19SQU5HRSwKKwkJCQkob2ZmX3QpKGJsb2NrKSAqIGNoYW5uZWwtPmJsb2NrX3NpemUgKyBkYXRhLT5vZmZzZXQsCisJCQkJKG9mZl90KShjb3VudCkgKiBjaGFubmVsLT5ibG9ja19zaXplKTsKKyNlbmRpZgorI2Vsc2UKKwkJZ290byB1bmltcGxlbWVudGVkOworI2VuZGlmIC8qIEhBVkVfRkFMTE9DQVRFICYmIChaRVJPX1JBTkdFIHx8IChQVU5DSF9IT0xFICYmIEtFRVBfU0laRSkpICovCisJfQorZXJyOgorCWlmIChyZXQgPCAwKSB7CisJCWlmIChlcnJubyA9PSBFT1BOT1RTVVBQKQorCQkJZ290byB1bmltcGxlbWVudGVkOworCQlyZXR1cm4gZXJybm87CisJfQorCXJldHVybiAwOwordW5pbXBsZW1lbnRlZDoKKwlyZXR1cm4gRVhUMl9FVF9VTklNUExFTUVOVEVEOworfQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKworc3RhdGljIHN0cnVjdCBzdHJ1Y3RfaW9fbWFuYWdlciBzdHJ1Y3RfdW5peF9tYW5hZ2VyID0geworCS5tYWdpYwkJPSBFWFQyX0VUX01BR0lDX0lPX01BTkFHRVIsCisJLm5hbWUJCT0gIlVuaXggSS9PIE1hbmFnZXIiLAorCS5vcGVuCQk9IHVuaXhfb3BlbiwKKwkuY2xvc2UJCT0gdW5peF9jbG9zZSwKKwkuc2V0X2Jsa3NpemUJPSB1bml4X3NldF9ibGtzaXplLAorCS5yZWFkX2Jsawk9IHVuaXhfcmVhZF9ibGssCisJLndyaXRlX2Jsawk9IHVuaXhfd3JpdGVfYmxrLAorCS5mbHVzaAkJPSB1bml4X2ZsdXNoLAorCS53cml0ZV9ieXRlCT0gdW5peF93cml0ZV9ieXRlLAorCS5zZXRfb3B0aW9uCT0gdW5peF9zZXRfb3B0aW9uLAorCS5nZXRfc3RhdHMJPSB1bml4X2dldF9zdGF0cywKKwkucmVhZF9ibGs2NAk9IHVuaXhfcmVhZF9ibGs2NCwKKwkud3JpdGVfYmxrNjQJPSB1bml4X3dyaXRlX2JsazY0LAorCS5kaXNjYXJkCT0gdW5peF9kaXNjYXJkLAorCS5jYWNoZV9yZWFkYWhlYWQJPSB1bml4X2NhY2hlX3JlYWRhaGVhZCwKKwkuemVyb291dAk9IHVuaXhfemVyb291dCwKK307CisKK2lvX21hbmFnZXIgdW5peF9pb19tYW5hZ2VyID0gJnN0cnVjdF91bml4X21hbmFnZXI7CisKK3N0YXRpYyBzdHJ1Y3Qgc3RydWN0X2lvX21hbmFnZXIgc3RydWN0X3VuaXhmZF9tYW5hZ2VyID0geworCS5tYWdpYwkJPSBFWFQyX0VUX01BR0lDX0lPX01BTkFHRVIsCisJLm5hbWUJCT0gIlVuaXggZmQgSS9PIE1hbmFnZXIiLAorCS5vcGVuCQk9IHVuaXhmZF9vcGVuLAorCS5jbG9zZQkJPSB1bml4X2Nsb3NlLAorCS5zZXRfYmxrc2l6ZQk9IHVuaXhfc2V0X2Jsa3NpemUsCisJLnJlYWRfYmxrCT0gdW5peF9yZWFkX2JsaywKKwkud3JpdGVfYmxrCT0gdW5peF93cml0ZV9ibGssCisJLmZsdXNoCQk9IHVuaXhfZmx1c2gsCisJLndyaXRlX2J5dGUJPSB1bml4X3dyaXRlX2J5dGUsCisJLnNldF9vcHRpb24JPSB1bml4X3NldF9vcHRpb24sCisJLmdldF9zdGF0cwk9IHVuaXhfZ2V0X3N0YXRzLAorCS5yZWFkX2JsazY0CT0gdW5peF9yZWFkX2JsazY0LAorCS53cml0ZV9ibGs2NAk9IHVuaXhfd3JpdGVfYmxrNjQsCisJLmRpc2NhcmQJPSB1bml4X2Rpc2NhcmQsCisJLmNhY2hlX3JlYWRhaGVhZAk9IHVuaXhfY2FjaGVfcmVhZGFoZWFkLAorCS56ZXJvb3V0CT0gdW5peF96ZXJvb3V0LAorfTsKKworaW9fbWFuYWdlciB1bml4ZmRfaW9fbWFuYWdlciA9ICZzdHJ1Y3RfdW5peGZkX21hbmFnZXI7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy91bmxpbmsuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3VubGluay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYjI3ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy91bmxpbmsuYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIHVubGluay5jIC0tLSBkZWxldGUgbGlua3MgaW4gYSBleHQyZnMgZGlyZWN0b3J5CisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworc3RydWN0IGxpbmtfc3RydWN0ICB7CisJY29uc3QgY2hhcgkqbmFtZTsKKwlpbnQJCW5hbWVsZW47CisJZXh0Ml9pbm9fdAlpbm9kZTsKKwlpbnQJCWZsYWdzOworCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqcHJldjsKKwlpbnQJCWRvbmU7Cit9OworCisjaWZkZWYgX19UVVJCT0NfXworICNwcmFnbWEgYXJnc3VzZWQKKyNlbmRpZgorc3RhdGljIGludCB1bmxpbmtfcHJvYyhzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJICAgICBpbnQJb2Zmc2V0LAorCQkgICAgIGludAlibG9ja3NpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIGNoYXIJKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgdm9pZAkqcHJpdl9kYXRhKQoreworCXN0cnVjdCBsaW5rX3N0cnVjdCAqbHMgPSAoc3RydWN0IGxpbmtfc3RydWN0ICopIHByaXZfZGF0YTsKKwlzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKnByZXY7CisKKwlwcmV2ID0gbHMtPnByZXY7CisJbHMtPnByZXYgPSBkaXJlbnQ7CisKKwlpZiAobHMtPm5hbWUpIHsKKwkJaWYgKGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSAhPSBscy0+bmFtZWxlbikKKwkJCXJldHVybiAwOworCQlpZiAoc3RybmNtcChscy0+bmFtZSwgZGlyZW50LT5uYW1lLCBleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkpKQorCQkJcmV0dXJuIDA7CisJfQorCWlmIChscy0+aW5vZGUpIHsKKwkJaWYgKGRpcmVudC0+aW5vZGUgIT0gbHMtPmlub2RlKQorCQkJcmV0dXJuIDA7CisJfSBlbHNlIHsKKwkJaWYgKCFkaXJlbnQtPmlub2RlKQorCQkJcmV0dXJuIDA7CisJfQorCisJaWYgKG9mZnNldCkKKwkJcHJldi0+cmVjX2xlbiArPSBkaXJlbnQtPnJlY19sZW47CisJZWxzZQorCQlkaXJlbnQtPmlub2RlID0gMDsKKwlscy0+ZG9uZSsrOworCXJldHVybiBESVJFTlRfQUJPUlR8RElSRU5UX0NIQU5HRUQ7Cit9CisKKyNpZmRlZiBfX1RVUkJPQ19fCisgI3ByYWdtYSBhcmdzdXNlZAorI2VuZGlmCitlcnJjb2RlX3QgZXh0MmZzX3VubGluayhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBkaXIsCisJCQljb25zdCBjaGFyICpuYW1lLCBleHQyX2lub190IGlubywKKwkJCWludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgbGlua19zdHJ1Y3QgbHM7CisKKwlFWFQyX0NIRUNLX01BR0lDKGZzLCBFWFQyX0VUX01BR0lDX0VYVDJGU19GSUxTWVMpOworCisJaWYgKCFuYW1lICYmICFpbm8pCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gRVhUMl9FVF9ST19GSUxTWVM7CisKKwlscy5uYW1lID0gbmFtZTsKKwlscy5uYW1lbGVuID0gbmFtZSA/IHN0cmxlbihuYW1lKSA6IDA7CisJbHMuaW5vZGUgPSBpbm87CisJbHMuZmxhZ3MgPSAwOworCWxzLmRvbmUgPSAwOworCWxzLnByZXYgPSAwOworCisJcmV0dmFsID0gZXh0MmZzX2Rpcl9pdGVyYXRlKGZzLCBkaXIsIERJUkVOVF9GTEFHX0lOQ0xVREVfRU1QVFksCisJCQkJICAgIDAsIHVubGlua19wcm9jLCAmbHMpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR1cm4gKGxzLmRvbmUpID8gMCA6IEVYVDJfRVRfRElSX05PX1NQQUNFOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL2V4dDJmcy92YWxpZF9ibGsuYyBiL2UyZnNwcm9ncy9saWIvZXh0MmZzL3ZhbGlkX2Jsay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNWQ5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy92YWxpZF9ibGsuYwpAQCAtMCwwICsxLDY4IEBACisvKgorICogdmFsaWRfYmxrLmMgLS0tIGRvZXMgdGhlIGlub2RlIGhhdmUgdmFsaWQgYmxvY2tzPworICoKKyAqIENvcHlyaWdodCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgImV4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMuaCIKKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIGlmIHRoZSBpbm9kZSdzIGJsb2NrIGVudHJpZXMgYWN0dWFsbHkKKyAqIGNvbnRhaW4gYmxvY2sgZW50cmllcy4KKyAqLworaW50IGV4dDJmc19pbm9kZV9oYXNfdmFsaWRfYmxvY2tzMihleHQyX2ZpbHN5cyBmcywgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCS8qCisJICogT25seSBkaXJlY3RvcmllcywgcmVndWxhciBmaWxlcywgYW5kIHNvbWUgc3ltYm9saWMgbGlua3MKKwkgKiBoYXZlIHZhbGlkIGJsb2NrIGVudHJpZXMuCisJICovCisJaWYgKCFMSU5VWF9TX0lTRElSKGlub2RlLT5pX21vZGUpICYmICFMSU5VWF9TX0lTUkVHKGlub2RlLT5pX21vZGUpICYmCisJICAgICFMSU5VWF9TX0lTTE5LKGlub2RlLT5pX21vZGUpKQorCQlyZXR1cm4gMDsKKworCS8qCisJICogSWYgdGhlIHN5bWJvbGljIGxpbmsgaXMgYSAiZmFzdCBzeW1saW5rIiwgdGhlbiB0aGUgc3ltbGluaworCSAqIHRhcmdldCBpcyBzdG9yZWQgaW4gdGhlIGJsb2NrIGVudHJpZXMuCisJICovCisJaWYgKExJTlVYX1NfSVNMTksgKGlub2RlLT5pX21vZGUpKSB7CisJCWlmIChleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIGlub2RlKSA9PSAwKSB7CisJCQkvKiBXaXRoIG5vIEVBIGJsb2NrLCB3ZSBjYW4gcmVseSBvbiBpX2Jsb2NrcyAqLworCQkJaWYgKGlub2RlLT5pX2Jsb2NrcyA9PSAwKQorCQkJCXJldHVybiAwOworCQl9IGVsc2UgeworCQkJLyogV2l0aCBhbiBFQSBibG9jaywgbGlmZSBnZXRzIG1vcmUgdHJpY2t5ICovCisJCQlpZiAoaW5vZGUtPmlfc2l6ZSA+PSBFWFQyX05fQkxPQ0tTKjQpCisJCQkJcmV0dXJuIDE7IC8qIGRlZmluaXRlbHkgdXNpbmcgaV9ibG9ja1tdICovCisJCQlpZiAoaW5vZGUtPmlfc2l6ZSA+IDQgJiYgaW5vZGUtPmlfYmxvY2tbMV0gPT0gMCkKKwkJCQlyZXR1cm4gMTsgLyogZGVmaW5pdGVseSB1c2luZyBpX2Jsb2NrW10gKi8KKwkJCXJldHVybiAwOyAvKiBQcm9iYWJseSBhIGZhc3Qgc3ltbGluayAqLworCQl9CisJfQorCisJLyoKKwkgKiBJZiB0aGlzIGlub2RlIGhhcyBpbmxpbmUgZGF0YSwgaXQgc2hvdWxkbid0IGhhdmUgdmFsaWQgYmxvY2sKKwkgKiBlbnRyaWVzLgorCSAqLworCWlmIChpbm9kZS0+aV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpCisJCXJldHVybiAwOworCXJldHVybiAxOworfQorCitpbnQgZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3Moc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCXJldHVybiBleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoTlVMTCwgaW5vZGUpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvdmVyc2lvbi5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvdmVyc2lvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YzhhY2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy92ZXJzaW9uLmMKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIHZlcnNpb24uYyAtLS0gUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIHRoZSBleHQyIGxpYnJhcnkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKKyNpbmNsdWRlICJleHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzLmgiCisKKyNpbmNsdWRlICIuLi8uLi92ZXJzaW9uLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICpsaWJfdmVyc2lvbiA9IEUyRlNQUk9HU19WRVJTSU9OOworc3RhdGljIGNvbnN0IGNoYXIgKmxpYl9kYXRlID0gRTJGU1BST0dTX0RBVEU7CisKK2ludCBleHQyZnNfcGFyc2VfdmVyc2lvbl9zdHJpbmcoY29uc3QgY2hhciAqdmVyX3N0cmluZykKK3sKKwljb25zdCBjaGFyICpjcDsKKwlpbnQgdmVyc2lvbiA9IDAsIGRvdF9jb3VudCA9IDA7CisKKwlmb3IgKGNwID0gdmVyX3N0cmluZzsgKmNwOyBjcCsrKSB7CisJCWlmICgqY3AgPT0gJy4nKSB7CisJCQlpZiAoZG90X2NvdW50KyspCisJCQkJYnJlYWs7CisJCQllbHNlCisJCQkJY29udGludWU7CisJCX0KKwkJaWYgKCFpc2RpZ2l0KCpjcCkpCisJCQlicmVhazsKKwkJdmVyc2lvbiA9ICh2ZXJzaW9uICogMTApICsgKCpjcCAtICcwJyk7CisJfQorCXJldHVybiB2ZXJzaW9uOworfQorCisKK2ludCBleHQyZnNfZ2V0X2xpYnJhcnlfdmVyc2lvbihjb25zdCBjaGFyICoqdmVyX3N0cmluZywKKwkJCSAgICAgICBjb25zdCBjaGFyICoqZGF0ZV9zdHJpbmcpCit7CisJaWYgKHZlcl9zdHJpbmcpCisJCSp2ZXJfc3RyaW5nID0gbGliX3ZlcnNpb247CisJaWYgKGRhdGVfc3RyaW5nKQorCQkqZGF0ZV9zdHJpbmcgPSBsaWJfZGF0ZTsKKworCXJldHVybiBleHQyZnNfcGFyc2VfdmVyc2lvbl9zdHJpbmcobGliX3ZlcnNpb24pOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9leHQyZnMvd3JpdGVfYmJfZmlsZS5jIGIvZTJmc3Byb2dzL2xpYi9leHQyZnMvd3JpdGVfYmJfZmlsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MzQzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2V4dDJmcy93cml0ZV9iYl9maWxlLmMKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIHdyaXRlX2JiX2ZpbGUuYyAtLS0gd3JpdGUgYSBsaXN0IG9mIGJhZCBibG9ja3MgdG8gYSBGSUxFICoKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkKKyAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorCitlcnJjb2RlX3QgZXh0MmZzX3dyaXRlX2JiX0ZJTEUoZXh0Ml9iYWRibG9ja3NfbGlzdCBiYl9saXN0LAorCQkJICAgICAgIHVuc2lnbmVkIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICAgRklMRSAqZikKK3sKKwliYWRibG9ja3NfaXRlcmF0ZQliYl9pdGVyOworCWJsa190CQkJYmxrOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4oYmJfbGlzdCwgJmJiX2l0ZXIpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwl3aGlsZSAoZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGUoYmJfaXRlciwgJmJsaykpIHsKKwkJZnByaW50ZihmLCAiJXVcbiIsIGJsayk7CisJfQorCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChiYl9pdGVyKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvZnBvcGVuLmMgYi9lMmZzcHJvZ3MvbGliL2Zwb3Blbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYWYyMDgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL2Zwb3Blbi5jCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogZnBvcGVuLmMgLS0tIHVubGlrZSB0aGUgbGliYyBwb3BlbiwgaXQgZGlyZWN0bHkgZXhlY3V0ZXMgdGhlCisgKiBjb21tYW5kIGluc3RlYWQgb2YgY2FsbCBvdXQgdG8gdGhlIHNoZWxsLgorICoKKyAqIENvcHlyaWdodCBUaGVvZG9yZSBUcydvLCAxOTk2LTE5OTkuCisgKgorICogUGVybWlzc2lvbiB0byB1c2UgdGhpcyBmaWxlIGlzIGdyYW50ZWQgZm9yIGFueSBwdXJwb3NlcywgYXMgbG9uZyBhcworICogdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIGtlcHQgaW50YWN0IGFuZCB0aGUgYXV0aG9yIGlzIG5vdCBoZWxkCisgKiBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHJlc3VsdGluZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBwcm9ncmFtLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQUxMIE9GCisgKiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVAorICogT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisgKiBVU0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKKyNkZWZpbmUgTUFYX0FSR1YgMjU2CisKK2V4dGVybiBGSUxFICpmcG9wZW4oY29uc3QgY2hhciAqY21kLCBjb25zdCBjaGFyICptb2RlKTsKKworRklMRSAqZnBvcGVuKGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqbW9kZSkKK3sKKwljaGFyCSphcmd2W01BWF9BUkdWXTsKKwlpbnQJaSA9IDA7CisJY2hhcgkqYnVmLCAqcHJvZyA9IDA7CisJY2hhcgkqcDsKKwlpbnQJZG9fc3RkaW4sIGRvX3N0ZGVyciA9IDA7CisJaW50CWZkc1syXTsKKwlwaWRfdAlwaWQ7CisKKwlpZiAoIW1vZGUpIHsKKwkJZXJybm8gPSBFRkFVTFQ7CisJCXJldHVybiBOVUxMOworCX0KKworCXN3aXRjaCAoKm1vZGUpIHsKKwljYXNlICdyJzoKKwkJZG9fc3RkaW4gPSAwOworCQlicmVhazsKKwljYXNlICd3JzoKKwkJZG9fc3RkaW4gPSAxOworCQlicmVhazsKKwlkZWZhdWx0OgorCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIE5VTEw7CisJfQorCXN3aXRjaCAoKihtb2RlKzEpKSB7CisJY2FzZSAnJic6CisJCWRvX3N0ZGVyciA9IDE7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgdGhlIGFyZ3YgdmVjdG9yLi4uLgorCSAqLworCWJ1ZiA9IG1hbGxvYyhzdHJsZW4oY21kKSsxKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIE5VTEw7CisJc3RyY3B5KGJ1ZiwgY21kKTsKKwlwID0gYnVmOworCXdoaWxlIChwICYmICpwKSB7CisJCWlmIChpc3NwYWNlKCpwKSkgeworCQkJcCsrOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGkgPT0gMCkKKwkJCXByb2cgPSBwOworCQlhcmd2W2krK10gPSBwOworCQlwID0gc3RyY2hyKHAsICcgJyk7CisJCWlmIChwKQorCQkJKnArKyA9IDA7CisJfQorCisJYXJndltpXSA9IDA7CisKKwkvKgorCSAqIEdldCB0aGUgcGlwZQorCSAqLworCWlmIChwaXBlKGZkcykgPCAwKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEZvcmsgYW5kIGV4ZWN1dGUgdGhlIGNvcnJlY3QgcHJvZ3JhbS4gKi8KKwlpZiAoKHBpZCA9IGZvcmsoKSkgPCAwKSB7CisJCXBlcnJvcigiZm9yayIpOworCQlyZXR1cm4gTlVMTDsKKwl9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CisJCWlmIChkb19zdGRpbikgeworCQkJY2xvc2UoZmRzWzFdKTsKKwkJCWR1cDIoZmRzWzBdLCAwKTsKKwkJfSBlbHNlIHsKKwkJCWNsb3NlKGZkc1swXSk7CisJCQlkdXAyKGZkc1sxXSwgMSk7CisJCQlpZiAoZG9fc3RkZXJyKQorCQkJCWR1cDIoZmRzWzFdLCAyKTsKKwkJfQorCQkodm9pZCkgZXhlY3ZwKHByb2csIGFyZ3YpOworCQlwZXJyb3IocHJvZyk7CisJCWV4aXQoMSk7CisJfQorCXJldHVybiBmZG9wZW4oZG9fc3RkaW4gPyBmZHNbMV0gOiBmZHNbMF0sIG1vZGUpOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL0FuZHJvaWQubWsgYi9lMmZzcHJvZ3MvbGliL3NzL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5YWNjYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvQW5kcm9pZC5tawpAQCAtMCwwICsxLDYwIEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCisKK2xpYmV4dDJfc3Nfc3JjX2ZpbGVzIDo9IFwKKwlzc19lcnIuYyBcCisJc3RkX3Jxcy5jIFwKKwlpbnZvY2F0aW9uLmMgaGVscC5jIFwKKwlleGVjdXRlX2NtZC5jIFwKKwlsaXN0ZW4uYyBcCisJcGFyc2UuYyBcCisJZXJyb3IuYyBcCisJcHJvbXB0LmMgXAorCXJlcXVlc3RfdGJsLmMgXAorCWxpc3RfcnFzLmMgXAorCXBhZ2VyLmMgXAorCXJlcXVlc3RzLmMgXAorCWRhdGEuYyBcCisJZ2V0X3JlYWRsaW5lLmMKKworbGliZXh0Ml9zc19jX2luY2x1ZGVzIDo9IGV4dGVybmFsL2UyZnNwcm9ncy9saWIKKworbGliZXh0Ml9zc19jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2xpYmV4dDJfc3Nfc2hhcmVkX2xpYnJhcmllcyA6PSBcCisJbGliZXh0Ml9jb21fZXJyCisKK2xpYmV4dDJfc3Nfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9zc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9zc19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobGliZXh0Ml9zc19jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQobGliZXh0Ml9zc19zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChsaWJleHQyX3NzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfc3MKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfc3Nfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJfc3NfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfc3NfY2ZsYWdzKQorTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSBsaWJjCitMT0NBTF9NT0RVTEUgOj0gbGliZXh0Ml9zcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9zc19zcmNfZmlsZXMpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkc3VmZml4IC1ob3N0LCAkKGxpYmV4dDJfc3Nfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9zc19jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobGliZXh0Ml9zc19jZmxhZ3MpCitMT0NBTF9NT0RVTEUgOj0gbGliZXh0Ml9zcy1ob3N0CitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9TSEFSRURfTElCUkFSWSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvbGliL3NzL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTUzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMjMyIEBACisjCisjIE1ha2VmaWxlIGZvciBsaWIvc3MKKyMKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uLy4uCitteV9kaXIgPSBsaWIvc3MKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0RMT1BFTl9MSUIgPSBARExPUEVOX0xJQkAKKworQE1DT05GSUdACisKK0xJQlJBUlk9IGxpYnNzCitMSUJESVI9IHNzCisKK0VMRl9WRVJTSU9OID0gMi4wCitFTEZfU09fVkVSU0lPTiA9IDIKK0VMRl9JTUFHRSA9IGxpYnNzCitFTEZfTVlESVIgPSBzcworRUxGX0lOU1RBTExfRElSID0gJChyb290X2xpYmRpcikKK0VMRl9PVEhFUl9MSUJTID0gLWxjb21fZXJyICQoRExPUEVOX0xJQikKKworQlNETElCX1ZFUlNJT04gPSAxLjAKK0JTRExJQl9JTUFHRSA9IGxpYnNzCitCU0RMSUJfTVlESVIgPSBzcworQlNETElCX0lOU1RBTExfRElSID0gJChyb290X2xpYmRpcikKKworVEFHUz1ldGFncworTUtfQ01EUz0JX1NTX0RJUl9PVkVSUklERT0kKHNyY2RpcikgLi9ta19jbWRzCitDT01QSUxFX0VUPQlfRVRfRElSX09WRVJSSURFPSQoc3JjZGlyKS8uLi9ldCAuLi9ldC9jb21waWxlX2V0CisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NUTElCKSAtYyAkPAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorQFBST0ZJTEVfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TVExJQikgLWcgLXBnIC1vIHByb2ZpbGVkLyQqLm8gLWMgJDwKK0BFTEZfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TSExJQikgLURTSEFSRURfRUxGX0xJQiAtZlBJQyAtc2hhcmVkIC1vIGVsZnNoYXJlZC8kKi5vIC1jICQ8CitAQlNETElCX0NNVEAJJChRKSAkKENDKSAkKEFMTF9DRkxBR1NfU0hMSUIpICQoQlNETElCX1BJQ19GTEFHKSAtbyBwaWMvJCoubyAtYyAkPAorCisjIGZvciB0aGUgbGlicmFyeQorCisjIHdpdGggc3NfZXJyLm8gZmlyc3QsIHNzX2Vyci5oIHNob3VsZCBnZXQgcmVidWlsdCBmaXJzdCB0b28uICBzaG91bGQgbm90CisjIGJlIHJlbHlpbmcgb24gdGhpcywgdGhvdWdoLgorT0JKUz0Jc3NfZXJyLm8gXAorCXN0ZF9ycXMubyBcCisJaW52b2NhdGlvbi5vIGhlbHAubyBcCisJZXhlY3V0ZV9jbWQubyBsaXN0ZW4ubyBwYXJzZS5vIGVycm9yLm8gcHJvbXB0Lm8gXAorCXJlcXVlc3RfdGJsLm8gbGlzdF9ycXMubyBwYWdlci5vIHJlcXVlc3RzLm8gXAorCWRhdGEubyBnZXRfcmVhZGxpbmUubworCitTUkNTPQkkKHNyY2RpcikvaW52b2NhdGlvbi5jICQoc3JjZGlyKS9oZWxwLmMgXAorCSQoc3JjZGlyKS9leGVjdXRlX2NtZC5jICQoc3JjZGlyKS9saXN0ZW4uYyAkKHNyY2RpcikvcGFyc2UuYyBcCisJJChzcmNkaXIpL2Vycm9yLmMgJChzcmNkaXIpL3Byb21wdC5jICQoc3JjZGlyKS9yZXF1ZXN0X3RibC5jIFwKKwkkKHNyY2RpcikvbGlzdF9ycXMuYyAkKHNyY2RpcikvcGFnZXIuYyAkKHNyY2RpcikvcmVxdWVzdHMuYyBcCisJJChzcmNkaXIpL2RhdGEuYyAkKHNyY2RpcikvZ2V0X3JlYWRsaW5lLmMKKworYWxsOjogbWtfY21kcworCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9FTEZACitATUFLRUZJTEVfQlNETElCQAorQE1BS0VGSUxFX1BST0ZJTEVACisKK0NPREU9ICQoU1JDUykgJChNS0NNRFNGSUxFUykKKworTUtDTURTT0JKUz0JbWtfY21kcy5vIHV0aWxzLm8gb3B0aW9ucy5vIGN0LnRhYi5vIGNtZF90YmwubGV4Lm8KKworTUtDTURTRklMRVM9CW1rX2NtZHMuYyB1dGlscy5jIG9wdGlvbnMuYyBjdC55IGNtZF90YmwubGV4LmwKKworTUtDTURTQ1NSQ1M9CW1rX2NtZHMuYyB1dGlscy5jIG9wdGlvbnMuYyBjdC50YWIuYyBjbWRfdGJsLmxleC5jCisKKworSEZJTEVTPQlzcy5oIHNzX2ludGVybmFsLmgKK1NIQVJFX0ZJTEVTPSBjdF9jLmF3ayBjdF9jLnNlZAorCitJTlNUQUxMX0hGSUxFUz0Jc3MuaCAKKworIyBmb3IgJ3RhZ3MnIGFuZCBkZXBlbmRlbmNpZXMKKworQ0ZJTEVTPQkkKFNSQ1MpICQoTUtDTURTQ1NSQ1MpIHRlc3Rfc3MuYworCisjIGZvciBidWlsZGluZyBhcmNoaXZlcworCitGSUxFUz0JJChTUkNTKSAkKE1LQ01EU0ZJTEVTKSAkKEhGSUxFUykgXAorCXNzX2Vyci5ldCBzdGRfcnFzLmN0IE1ha2VmaWxlIFwKKwl0ZXN0X3NzLmMgc3MgCisKK2FsbDo6CWxpYnNzLmEgc3MucGMgIyBsaWJzc19wLmEgbGludAorCitzdGRfcnFzLmM6IHN0ZF9ycXMuY3QgbWtfY21kcworCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgRElSPSQoc3JjZGlyKSAkKE1LX0NNRFMpICQoc3JjZGlyKS9zdGRfcnFzLmN0CisKK3N0ZF9ycXMubzogc3NfZXJyLmgKKwordGVzdF9jbWQuYzogdGVzdF9jbWQuY3QgbWtfY21kcworCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgRElSPSQoc3JjZGlyKSAkKE1LX0NNRFMpICQoc3JjZGlyKS90ZXN0X2NtZC5jdAorCitzc19lcnIuYyBzc19lcnIuaDogc3NfZXJyLmV0CisJJChFKSAiCUNPTVBJTEVfRVQgc3NfZXJyLmV0IgorCSQoUSkgJChDT01QSUxFX0VUKSAkKHNyY2Rpcikvc3NfZXJyLmV0CisKK2N0LnRhYi5jIGN0LnRhYi5oOiBjdC55CisJJChSTSkgLWYgY3QudGFiLiogeS4qCisJJChZQUNDKSAtZCAkKHNyY2RpcikvY3QueQorCSQoTVYpIC1mIHkudGFiLmMgY3QudGFiLmMKKwkkKE1WKSAtZiB5LnRhYi5oIGN0LnRhYi5oCisKKyNsaWJzcy5vOgkkKE9CSlMpCisjCSQoTEQpIC1yIC1zIC1vICRAICQoT0JKUykKKyMJJChDSE1PRCkgLXggJEAKKworbWtfY21kczogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL21rX2NtZHMuc2guaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEUpICQoc3JjZGlyKS9ta19jbWRzLnNoLmluIG1rX2NtZHMKKwkkKFEpICQoQ0hNT0QpICt4IG1rX2NtZHMKKworc3MucGM6ICQoc3JjZGlyKS9zcy5wYy5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCSQoRSkgIglDT05GSUcuU1RBVFVTICRAIgorCSQoUSkgY2QgJCh0b3BfYnVpbGRkaXIpOyBDT05GSUdfRklMRVM9bGliL3NzL3NzLnBjIC4vY29uZmlnLnN0YXR1cworCitpbnN0YWxsZGlyczo6CisJJChFKSAiCU1LSU5TVEFMTERJUlMgJChsaWJkaXIpICQoaW5jbHVkZWRpcikvc3MgJChkYXRhZGlyKS9zcyAkKGJpbmRpcikiCisJJChRKSAkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKGxpYmRpcikgXAorCQkkKERFU1RESVIpJChpbmNsdWRlZGlyKS9zcyAkKERFU1RESVIpJChkYXRhZGlyKS9zcyBcCisJCSQoREVTVERJUikkKGJpbmRpcikgJChERVNURElSKSQocGtnY29uZmlnZGlyKQorCitpbnN0YWxsOjogbGlic3MuYSAkKElOU1RBTExfSEZJTEVTKSBpbnN0YWxsZGlycyBzc19lcnIuaCBta19jbWRzIHNzLnBjCisJJChFKSAiCUlOU1RBTExfREFUQSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnNzLmEiCisJJChRKSAkKElOU1RBTExfREFUQSkgbGlic3MuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnNzLmEKKwktJChRKSAkKFJBTkxJQikgJChERVNURElSKSQobGliZGlyKS9saWJzcy5hCisJJChRKSAkKENITU9EKSAkKExJQk1PREUpICQoREVTVERJUikkKGxpYmRpcikvbGlic3MuYQorCSQoUSkgJChSTSkgLWYgJChERVNURElSKSQoaW5jbHVkZWRpcikvc3MvKgorCSQoUSkgZm9yIGkgaW4gJChJTlNUQUxMX0hGSUxFUyk7IGRvIFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9zcy8kJGkiOyBcCisJCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRpICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3NzLyQkaTsgXAorCWRvbmUKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQoaW5jbHVkZWRpcikvc3Mvc3NfZXJyLmgiCisJJChRKSAkKElOU1RBTExfREFUQSkgc3NfZXJyLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvc3Mvc3NfZXJyLmgKKwkkKFEpIGZvciBpIGluICQoU0hBUkVfRklMRVMpOyBkbyBcCisJCWVjaG8gIglJTlNUQUxMX0RBVEEgJChERVNURElSKSQoZGF0YWRpcikvc3MvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkaSAkKERFU1RESVIpJChkYXRhZGlyKS9zcy8kJGk7IFwKKwlkb25lCisJJChFKSAiCUlOU1RBTEwgJChiaW5kaXIpL21rX2NtZHMiCisJJChRKSAkKElOU1RBTEwpIG1rX2NtZHMgJChERVNURElSKSQoYmluZGlyKS9ta19jbWRzCisJJChFKSAiCUlOU1RBTExfREFUQSAkKG1hbjFkaXIpL21rX2NtZHMuMSIKKwkkKFEpICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvbWtfY21kcy4xICQoREVTVERJUikkKG1hbjFkaXIpL21rX2NtZHMuMQorCSQoRSkgIglJTlNUQUxMX0RBVEEgJChwa2djb25maWdkaXIpL3NzLnBjIgorCSQoUSkgJChJTlNUQUxMX0RBVEEpIHNzLnBjICQoREVTVERJUikkKHBrZ2NvbmZpZ2Rpcikvc3MucGMKKwordW5pbnN0YWxsOjoKKwkkKFJNKSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYnNzLmEgJChERVNURElSKSQoYmluZGlyKS9ta19jbWRzIFwKKwkJJChERVNURElSKSQocGtnY29uZmlnZGlyKS9zcy5wYyBcCisJCSQoREVTVERJUikkKG1hbjFkaXIpL21rX2NtZHMuMSAKKwkkKFJNKSAtcmYgJChERVNURElSKSQoaW5jbHVkZWRpcikvc3MgJChERVNURElSKSQoZGF0YWRpcikvc3MKKwordGVzdF9zczogdGVzdF9zcy5vIHRlc3RfY21kLm8gJChERVBMSUJTUykgJChERVBMSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vICRAIHRlc3Rfc3MubyB0ZXN0X2NtZC5vICQoQUxMX0NGTEFHUykgJChBTExfTERGTEFHUykgXAorCQkkKExJQlNTKSAkKExJQkNPTV9FUlIpICQoU1lTTElCUykKKworY2hlY2s6OiBhbGwgdGVzdF9zcworCSQoRSkgIglSVU4gVEVTVCB0ZXN0X3NzIgorCS1AKCQoVEVTVEVOVikgLi90ZXN0X3NzIC1mICQoc3JjZGlyKS90ZXN0X3NjcmlwdCA+IHRlc3Rfb3V0IDI+JjE7IGV4aXQgMCkKKwkkKFEpIGlmIGRpZmYgdGVzdF9vdXQgJChzcmNkaXIpL3Rlc3Rfc2NyaXB0X2V4cGVjdGVkID4gdGVzdC5kaWZmOyB0aGVuIFwKKwkJdHJ1ZSA7IGVsc2UgZWNobyAiUmVncmVzc2lvbiB0ZXN0IGZvciBzcyBsaWJyYXJ5IGZhaWxlZCEiOyBleGl0IDEgOyBmaQorCitjbGVhbjo6CisJJChSTSkgLWYgLi4vbGlic3MuYSBsaWJzcy5hIG1rX2NtZHMgc3NfZXJyLmggc3NfZXJyLmMgc3RkX3Jxcy5jIFwKKwkJdHN0X2NtZHMuYyB0ZXN0X3NzIHRlc3Rfb3V0IHRlc3QuZGlmZiAqLm8gKn4gXCMqICouYmFrIGNvcmUgXAorCQl0ZXN0X2NtZC5jIHNzLnBjCisKK21vc3RseWNsZWFuOjogY2xlYW4KK2Rpc3RjbGVhbjo6IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBNYWtlZmlsZSBzcy5wYyBcCisJCSQoc3JjZGlyKS9UQUdTICQoc3JjZGlyKS9NYWtlZmlsZS5pbi5vbGQKKworIworIyBIYWNrIHRvIHBhcmFsbGVsIG1ha2VzIHJlY29nbml6ZSBkZXBlbmRlbmNpZXMgY29ycmVjdGx5LgorIworJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaDogc3NfZXJyLmgKKworJChPQkpTKTogc3ViZGlycworCisjICsrKyBEZXBlbmRlbmN5IGxpbmUgZWF0ZXIgKysrCisjIAorIyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMgZm9sbG93LiAgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHNlY3Rpb24gaW4KKyMgdGhlIE1ha2VmaWxlLmluIGZpbGUKKyMKK2ludm9jYXRpb24ubzogJChzcmNkaXIpL2ludm9jYXRpb24uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3NzX2ludGVybmFsLmggJChzcmNkaXIpL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitoZWxwLm86ICQoc3JjZGlyKS9oZWxwLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9zc19pbnRlcm5hbC5oICQoc3JjZGlyKS9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaAorZXhlY3V0ZV9jbWQubzogJChzcmNkaXIpL2V4ZWN1dGVfY21kLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9zc19pbnRlcm5hbC5oICQoc3JjZGlyKS9zcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaAorbGlzdGVuLm86ICQoc3JjZGlyKS9saXN0ZW4uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3NzX2ludGVybmFsLmggJChzcmNkaXIpL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitwYXJzZS5vOiAkKHNyY2RpcikvcGFyc2UuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3NzX2ludGVybmFsLmggJChzcmNkaXIpL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitlcnJvci5vOiAkKHNyY2RpcikvZXJyb3IuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCAkKHRvcF9idWlsZGRpcikvbGliL3NzL3NzX2Vyci5oCitwcm9tcHQubzogJChzcmNkaXIpL3Byb21wdC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKK3JlcXVlc3RfdGJsLm86ICQoc3JjZGlyKS9yZXF1ZXN0X3RibC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKK2xpc3RfcnFzLm86ICQoc3JjZGlyKS9saXN0X3Jxcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKK3BhZ2VyLm86ICQoc3JjZGlyKS9wYWdlci5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKK3JlcXVlc3RzLm86ICQoc3JjZGlyKS9yZXF1ZXN0cy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKK2RhdGEubzogJChzcmNkaXIpL2RhdGEuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3NzX2ludGVybmFsLmggJChzcmNkaXIpL3NzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitnZXRfcmVhZGxpbmUubzogJChzcmNkaXIpL2dldF9yZWFkbGluZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2Rpcikvc3NfaW50ZXJuYWwuaCAkKHNyY2Rpcikvc3MuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9zcy9zc19lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvY3RfYy5hd2sgYi9lMmZzcHJvZ3MvbGliL3NzL2N0X2MuYXdrCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NDI0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL2N0X2MuYXdrCkBAIC0wLDAgKzEsNzUgQEAKKy9eY29tbWFuZF90YWJsZSAvIHsKKwljbWR0YmwgPSAkMjsKKwlwcmludGYgIi8qICVzLmMgLSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tICVzLmN0ICovXG4iLCBcCisJCXJvb3RuYW1lLCByb290bmFtZSA+IG91dGZpbGUKKwlwcmludCAiI2luY2x1ZGUgPHNzL3NzLmg+IiA+IG91dGZpbGUKKwlwcmludCAiIiA+b3V0ZmlsZQorfQorCQorL15CT1IkLyB7CisJY21kbnVtKysKKwlvcHRpb25zID0gMAorCWNtZHRhYiA9ICIiCisJcHJpbnRmICJzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IHNzdSUwNWRbXSA9IHtcbiIsIGNtZG51bSA+IG91dGZpbGUKK30KKworL15zdWIvIHsKKwlzdWJyID0gc3Vic3RyKCQwLCA2LCBsZW5ndGgoJDApLTUpCit9CisKKy9eaGxwLyB7CisJaGVscCA9IHN1YnN0cigkMCwgNiwgbGVuZ3RoKCQwKS01KQorfQorCisvXmNtZC8geworCWNtZCA9IHN1YnN0cigkMCwgNiwgbGVuZ3RoKCQwKS01KQorCXByaW50ZiAiJXNcIiVzXCIsXG4iLCBjbWR0YWIsIGNtZCA+IG91dGZpbGUKKwljbWR0YWIgPSAiICAgICIKK30KKworL15vcHQvIHsKKwlvcHQgPSBzdWJzdHIoJDAsIDYsIGxlbmd0aCgkMCktNSkKKwlpZiAob3B0ID09ICJkb250X2xpc3QiKSB7CisJCW9wdGlvbnMgKz0gMQorCX0KKwlpZiAob3B0ID09ICJkb250X3N1bW1hcml6ZSIpIHsKKwkJb3B0aW9ucyArPSAyCisJfQorfQorCisvXkVPUi8geworCXByaW50ICIgICAgKGNoYXIgY29uc3QgKikwIiA+IG91dGZpbGUKKwlwcmludCAifTsiID4gb3V0ZmlsZSAKKwlwcmludGYgImV4dGVybiB2b2lkICVzIF9fU1NfUFJPVE87XG4iLCBzdWJyID4gb3V0ZmlsZQorCSMgV29yayBhcm91bmQgYSBidWcgaW4gZ2F3ayAzLjAuNQorCWF3a19idWcgPSBjbWRudW0KKwlzdWJyX3RhYlthd2tfYnVnXSA9IHN1YnIKKwlvcHRpb25zX3RhYlthd2tfYnVnXSA9IG9wdGlvbnMKKwloZWxwX3RhYlthd2tfYnVnXSA9IGhlbHAKK30KKworL15bMC05XS8geworCWxpbmVudW0gPSAkMTsKK30KKworL15FUlJPUi8geworCWVycm9yID0gc3Vic3RyKCQwLCA4LCBsZW5ndGgoJDApLTcpCisJcHJpbnRmICJFcnJvciBpbiBsaW5lICVkOiAlc1xuIiwgbGluZW51bSwgZXJyb3IKKwlwcmludCAiI19fRVJST1JfSU5fRklMRV9fIiA+IG91dGZpbGUKK30KKworRU5EIHsKKwlwcmludGYgInN0YXRpYyBzc19yZXF1ZXN0X2VudHJ5IHNzdSUwNWRbXSA9IHtcbiIsIGNtZG51bSsxID4gb3V0ZmlsZQorCWZvciAoaT0xOyBpIDw9IGNtZG51bTsgaSsrKSB7CisJCXByaW50ZiAiICAgIHsgc3N1JTA1ZCxcbiIsIGkgPiBvdXRmaWxlCisJCXByaW50ZiAiICAgICAgJXMsXG4iLCBzdWJyX3RhYltpXSA+IG91dGZpbGUKKwkJcHJpbnRmICIgICAgICBcIiVzXCIsXG4iLCBoZWxwX3RhYltpXSA+IG91dGZpbGUKKwkJcHJpbnRmICIgICAgICAlZCB9LFxuIiwgb3B0aW9uc190YWJbaV0gPiBvdXRmaWxlCisJfQorCXByaW50ICIgICAgeyAwLCAwLCAwLCAwIH0iID4gb3V0ZmlsZQorCXByaW50ICJ9OyIgPiBvdXRmaWxlCisJcHJpbnQgIiIgPiBvdXRmaWxlCisJcHJpbnRmICJzc19yZXF1ZXN0X3RhYmxlICVzID0geyAyLCBzc3UlMDVkIH07XG4iLCBcCisJCWNtZHRibCwgY21kbnVtKzEgPiBvdXRmaWxlCit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvY3RfYy5zZWQgYi9lMmZzcHJvZ3MvbGliL3NzL2N0X2Muc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNjQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL2N0X2Muc2VkCkBAIC0wLDAgKzEsMTYwIEBACisjCisjIFRoaXMgc2NyaXB0IHBhcnNlcyBhIGNvbW1hbmRfdGFibGUgZmlsZSBpbnRvIHNvbWV0aGluZyB3aGljaCBpcyBhIGJpdCAKKyMgZWFzaWVyIGZvciBhbiBhd2sgc2NyaXB0IHRvIHVuZGVyc3RhbmQuCisjCisjIElucHV0IHN5bnRheDogYSAuY3QgZmlsZQorIworIyBPdXRwdXQgc3ludGF4OgorIyAoZm9yIHRoZSBjb21tYW5kX3RhYmxlIGxpbmUpCisjCWNvbW1hbmRfdGFibGUgIDxjb21tYW5kX3RhYmxlPgorIworIyhmb3IgZWFjaCByZXF1ZXN0IGRlZmluaXRpb24pCisjCUJPUgorIwlzdWI6IDxzdWJyb3V0aW5lIG5hbWU+CisjCWhscDogPGhlbHAgdGV4dD4KKyMJY21kOiA8Y29tbWFuZD4KKyMJb3B0OiA8b3B0aW9uPgorIwlFT1IKKyMgKHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lICdjbWQnIG9yICdvcHQnIGxpbmUKKyMKKyMgQSBudW1iZXIgc2VudCB0byB0aGUgb3V0cHV0IHJlcHJlc2VudHMgYSBwYXJzZSBlcnJvciAtLS0gaXQgd2lsbCBiZSAKKyMgZm9sbG93ZWQgYnkgdGhlIG5leHQgbGluZSB3aGljaCB3aWxsIGhhdmUgdGhlIGZvcm06CisjCUVSUk9SOiA8ZXJyb3IgdGV4dD4KKyMKKyMgVGhlIGRlc2lnbiBvZiB0aGlzIG91dHB1dCBzeW50YXggaXMgc3VjaCB0aGF0IGl0IHNob3VsZCBiZSBlYXN5IGZvcgorIyBhbiBhd2sgc2NyaXB0IHRvIHBhcnNlLgorCisjCisjIFRoZSBmaXJzdCBzZWN0aW9uIG9mIHRoaXMgc2NyaXB0IGlzIGp1c3QgdG8gY2Fubm9pY2FsaXplIHRoZSBmaWxlLiAgCisjIEl0IHJlbW92ZXMgY29tbWVudHMsIGFuZCBwdXRzIGVhY2ggY29tbWFuZF90YWJsZSByZXF1ZXN0IG9udG8gYSBzaW5nbGUKKyMgbGluZQorIworOkZJUlNUCit5LwkvIC8KK3MvXiAqLy8KK3MvIy4qJC8vCisvOyAqJC8heworTgoreS8JLyAvCitzL1xuICovIC8KK2JGSVJTVAorfQorcy8sICovLCAvZworIworIyBOb3cgd2UgdGFrZSBjYXJlIG9mIHNvbWUgc3ludGF0aWMgc3VnYXIuLi4uLgorIworL151bmltcGxlbWVudGVkLyB7CisJcy9edW5pbXBsZW1lbnRlZCBbQS1aYS16XzAtOV0qL3JlcXVlc3Qgc3NfdW5pbXBsZW1lbnRlZC8KKwlzLzsvLCAoZG9udF9saXN0LCBkb250X3N1bW1hcml6ZSk7LworfQorL151bmtub3duLyB7CisJcy9edW5rbm93biAvcmVxdWVzdCBzc191bmtub3duLCAiIiwgLworfQorIworIyBEaXNwYXRjaCBiYXNlZCBvbiB0aGUga2V5d29yZC4uLi4gIGlsbGVnYWwga2V5d29yZHMgYXJlIHByZWZpeGVkIGJ5IEVSUk9SOgorIyBhbmQgYXJlIGhhbmRsZWQgYnkgdGhlIGF3ayBzY3JpcHQuCisjCisvXmNvbW1hbmRfdGFibGUgL2JDTUQKKy9ecmVxdWVzdCAvYlJFUVVFU1QKKy9eZW5kOy9iRU5ECitzLyAuKi8vCitzL14vRVJST1I6IHVua25vd24ga2V5d29yZDogLworPQorYgorIworIyBIYW5kbGUgdGhlIGNvbW1hbmRfdGFibGUga2V5d29yZAorIworOkNNRAorcy87JC8vCitwCitkCitiCisjCisjIEhhbmRsZSB0aGUgcmVxdWVzdCBrZXl3b3JkIC0tLSB0aGlzIGlzIHRoZSBoZWFydCBvZiB0aGUgc2VkIHNjcmlwdC4KKyMgCis6UkVRVUVTVAorcy9ecmVxdWVzdCAqLy8KK2gKK2lcCitCT1IKKyMgRmlyc3QsIHBhcnNlIG91dCB0aGUgc3Vicm91dGluZSBuYW1lCitzL14vc3ViOiAvCitzLywuKi8vCitwCisjIE5leHQsIHBhcnNlIG91dCB0aGUgaGVscCBtZXNzYWdlLCBiZWluZyBjYXJlZnVsIHRvIGhhbmRsZSBhIHF1b3RlZCBzdHJpbmcKK2cKK3MvXlteLF0qLCAqLy8KK2gKKy9eIi8geworCXMvXiIvLworCXMvIi4qLy8KKwl4CisJcy9eIlteIl0qIiwgKi8vCisJeAorCWIgRU1JVEhMUAorfQorcy9bXmEtekEtWjAtOV0uKi8vCit4CitzL1thLXpBLVowLTldKiwgKi8vCit4Cis6RU1JVEhMUAorcy9eL2hscDogLworcAorIyBOZXh0IHRha2UgY2FyZSBvZiB0aGUgY29tbWFuZCBuYW1lcworOkNNRExJU1QKK2cKKy9eKC9iIE9QVElPTlMKKy9eOy9iIEVPUgorL14iLyB7CisJcy9eIi8vCisJcy8iLiovLworCXgKKwlzL14iW14iXSoiLy8KKwlzLywgKi8vCisJeAorCWIgRU1JVFJFUQorfQorcy9bXkEtWmEtel8wLTldLiovLworeAorcy9bQS1aYS16XzAtOV0qLy8KK3MvLCAqLy8KK3gKKzpFTUlUUkVRCitzL14vY21kOiAvCitwCitiIENNRExJU1QKKyMKKyMgSGVyZSB3ZSBwYXJzZSB0aGUgbGlzdCBvZiBvcHRpb25zLgorIworOiBPUFRJT05TCitnCitzL14oLy8KK2gKKzogT1BUTElTVAorL14pLyBiIEVPUgorL15bXkEtWmEtel8wLTldLyB7CisJPQorCWNcCitFUlJPUjogcGFyc2UgZXJyb3IgaW4gb3B0aW9ucyBsaXN0Cit9CitzL1teQS1aYS16XzAtOV0uKi8vCit4CitzL1tBLVphLXpfMC05XSovLworcy8sICovLworeAorcy9eL29wdDogLworcAorZworYiBPUFRMSVNUCis6IEVPUgorY1wKK0VPUlwKKworZAorYgorIworIyBIYW5kbGUgdGhlIGVuZCBrZXl3b3JkIC0tLSBpdCdzIGJhc2ljYWxseSBpZ25vcmVkLgorIworOkVORAorZAorYgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zcy9kYXRhLmMgYi9lMmZzcHJvZ3MvbGliL3NzL2RhdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODI0NWJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9kYXRhLmMKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4LCAxOTg5IE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKyAqIChTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQpCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSAic3NfaW50ZXJuYWwuaCIKKworc3NfZGF0YSAqKl9zc190YWJsZSA9IChzc19kYXRhICoqKU5VTEw7CitjaGFyICpfc3NfcGFnZXJfbmFtZSA9IChjaGFyICopTlVMTDsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvZXJyb3IuYyBiL2UyZnNwcm9ncy9saWIvc3MvZXJyb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDM0NWE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9lcnJvci5jCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk4NywgMTk4OCwgMTk4OSBieSBNSVQgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nCisgKiBCb2FyZAorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlIHVzZWQgaW4KKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKKyAqIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBhbmQgdGhlCisgKiBNLkkuVC4gUy5JLlAuQi4gbWFrZSBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dAorICogZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgInNzX2ludGVybmFsLmgiCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworY2hhciAqc3NfbmFtZShpbnQgc2NpX2lkeCkKK3sKKyAgICByZWdpc3RlciBjaGFyICpyZXRfdmFsOworICAgIHJlZ2lzdGVyIHNzX2RhdGEgKmluZm9wOworCisgICAgaW5mb3AgPSBzc19pbmZvKHNjaV9pZHgpOworICAgIGlmIChpbmZvcC0+Y3VycmVudF9yZXF1ZXN0ID09IChjaGFyIGNvbnN0ICopTlVMTCkgeworCXJldF92YWwgPSBtYWxsb2MoKHVuc2lnbmVkKQorCQkJIChzdHJsZW4oaW5mb3AtPnN1YnN5c3RlbV9uYW1lKSsxKQorCQkJICogc2l6ZW9mKGNoYXIpKTsKKwlpZiAocmV0X3ZhbCA9PSAoY2hhciAqKU5VTEwpCisJICAgIHJldHVybigoY2hhciAqKU5VTEwpOworCXN0cmNweShyZXRfdmFsLCBpbmZvcC0+c3Vic3lzdGVtX25hbWUpOworCXJldHVybihyZXRfdmFsKTsKKyAgICB9CisgICAgZWxzZSB7CisJcmVnaXN0ZXIgY2hhciAqY3A7CisJcmVnaXN0ZXIgY2hhciBjb25zdCAqY3AxOworCXJldF92YWwgPSBtYWxsb2MoKHVuc2lnbmVkKXNpemVvZihjaGFyKSAqCisJCQkgKHN0cmxlbihpbmZvcC0+c3Vic3lzdGVtX25hbWUpKworCQkJICBzdHJsZW4oaW5mb3AtPmN1cnJlbnRfcmVxdWVzdCkrCisJCQkgIDQpKTsKKwljcCA9IHJldF92YWw7CisJY3AxID0gaW5mb3AtPnN1YnN5c3RlbV9uYW1lOworCXdoaWxlICgqY3AxKQorCSAgICAqY3ArKyA9ICpjcDErKzsKKwkqY3ArKyA9ICcgJzsKKwkqY3ArKyA9ICcoJzsKKwljcDEgPSBpbmZvcC0+Y3VycmVudF9yZXF1ZXN0OworCXdoaWxlICgqY3AxKQorCSAgICAqY3ArKyA9ICpjcDErKzsKKwkqY3ArKyA9ICcpJzsKKwkqY3AgPSAnXDAnOworCXJldHVybihyZXRfdmFsKTsKKyAgICB9Cit9CisKK3ZvaWQgc3NfZXJyb3IgKGludCBzY2lfaWR4LCBsb25nIGNvZGUsIGNvbnN0IGNoYXIgKiBmbXQsIC4uLikKK3sKKyAgICByZWdpc3RlciBjaGFyICp3aG9hbWk7CisgICAgdmFfbGlzdCBwdmFyOworCisgICAgdmFfc3RhcnQgKHB2YXIsIGZtdCk7CisgICAgd2hvYW1pID0gc3NfbmFtZSAoc2NpX2lkeCk7CisgICAgY29tX2Vycl92YSAod2hvYW1pLCBjb2RlLCBmbXQsIHB2YXIpOworICAgIGZyZWUgKHdob2FtaSk7CisgICAgdmFfZW5kKHB2YXIpOworfQorCit2b2lkIHNzX3BlcnJvcihpbnQgc2NpX2lkeCwgbG9uZyBjb2RlLCBjaGFyIGNvbnN0ICptc2cpIC8qIGZvciBjb21wYXRpYmlsaXR5ICovCit7CisgICAgc3NfZXJyb3IgKHNjaV9pZHgsIGNvZGUsICIlcyIsIG1zZyk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL2V4ZWN1dGVfY21kLmMgYi9lMmZzcHJvZ3MvbGliL3NzL2V4ZWN1dGVfY21kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0M2E0NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvZXhlY3V0ZV9jbWQuYwpAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4LCAxOTg5IGJ5IE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFTX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2Vsc2UKK2V4dGVybiBpbnQgZXJybm87CisjZW5kaWYKKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK3N0YXRpYyBpbnQgY2hlY2tfcmVxdWVzdF90YWJsZSBQUk9UT1RZUEUoKHNzX3JlcXVlc3RfdGFibGUgKnJxdGJsLCBpbnQgYXJnYywKKwkJCQkJICBjaGFyICphcmd2W10sIGludCBzY2lfaWR4KSk7CitzdGF0aWMgaW50IHJlYWxseV9leGVjdXRlX2NvbW1hbmQgUFJPVE9UWVBFKChpbnQgc2NpX2lkeCwgaW50IGFyZ2MsCisJCQkJCSAgICAgY2hhciAqKmFyZ3ZbXSkpOworCisvKgorICogZ2V0X3JlcXVlc3QodGJsLCBpZHgpCisgKgorICogRnVuY3Rpb246CisgKiAgICAgIEdldHMgdGhlIGlkeCd0aCByZXF1ZXN0IGZyb20gdGhlIHJlcXVlc3QgdGFibGUgcG9pbnRlZCB0bworICogICAgICBieSB0YmwuCisgKiBBcmd1bWVudHM6CisgKiAgICAgIHRibCAoc3NfcmVxdWVzdF90YWJsZSAqKQorICogICAgICAgICAgICAgIHBvaW50ZXIgdG8gcmVxdWVzdCB0YWJsZQorICogICAgICBpZHggKGludCkKKyAqICAgICAgICAgICAgICBpbmRleCBpbnRvIHRhYmxlCisgKiBSZXR1cm5zOgorICogICAgICAoc3NfcmVxdWVzdF9lbnRyeSAqKQorICogICAgICAgICAgICAgIHBvaW50ZXIgdG8gcmVxdWVzdCB0YWJsZSBlbnRyeQorICogTm90ZXM6CisgKiAgICAgIEhhcyBiZWVuIHJlcGxhY2VkIGJ5IGEgbWFjcm8uCisgKi8KKworI2lmZGVmIF9fU0FCRVJfXworLyogc2lnaC4gIHNhYmVyIHdvbid0IGRlYWwgd2l0aCBwb2ludGVyLXRvLWNvbnN0LXN0cnVjdCAqLworc3RhdGljIHN0cnVjdCBfc3NfcmVxdWVzdF9lbnRyeSAqIGdldF9yZXF1ZXN0ICh0YmwsIGlkeCkKKyAgICBzc19yZXF1ZXN0X3RhYmxlICogdGJsOworICAgIGludCBpZHg7Cit7CisgICAgc3RydWN0IF9zc19yZXF1ZXN0X3RhYmxlICp0YmwxID0gKHN0cnVjdCBfc3NfcmVxdWVzdF90YWJsZSAqKSB0Ymw7CisgICAgc3RydWN0IF9zc19yZXF1ZXN0X2VudHJ5ICplID0gKHN0cnVjdCBfc3NfcmVxdWVzdF9lbnRyeSAqKSB0YmwxLT5yZXF1ZXN0czsKKyAgICByZXR1cm4gZSArIGlkeDsKK30KKyNlbHNlCisjZGVmaW5lIGdldF9yZXF1ZXN0KHRibCxpZHgpICAgICgodGJsKSAtPiByZXF1ZXN0cyArIChpZHgpKQorI2VuZGlmCisKKy8qCisgKiBjaGVja19yZXF1ZXN0X3RhYmxlKHJxdGJsLCBhcmdjLCBhcmd2LCBzY2lfaWR4KQorICoKKyAqIEZ1bmN0aW9uOgorICogICAgICBJZiB0aGUgY29tbWFuZCBzdHJpbmcgaW4gYXJndlswXSBpcyBpbiB0aGUgcmVxdWVzdCB0YWJsZSwgZXhlY3V0ZQorICogICAgICB0aGUgY29tbWFuZHMgYW5kIHJldHVybiBlcnJvciBjb2RlIDAuICBPdGhlcndpc2UsIHJldHVybiBlcnJvcgorICogICAgICBjb2RlIHNzX2V0X2NvbW1hbmRfbm90X2ZvdW5kLgorICogQXJndW1lbnRzOgorICogICAgICBycXRibCAoc3NfcmVxdWVzdF90YWJsZSAqKQorICogICAgICAgICAgICAgIHBvaW50ZXIgdG8gcmVxdWVzdCB0YWJsZQorICogICAgICBhcmdjIChpbnQpCisgKiAgICAgICAgICAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ3ZbXQorICogICAgICBhcmd2IChjaGFyICpbXSkKKyAqICAgICAgICAgICAgICBhcmd1bWVudCBzdHJpbmcgYXJyYXkKKyAqICAgICAgc2NpX2lkeCAoaW50KQorICogICAgICAgICAgICAgIHNzLWludGVybmFsIGluZGV4IGZvciBzdWJzeXN0ZW0gY29udHJvbCBpbmZvIHN0cnVjdHVyZQorICogUmV0dXJuczoKKyAqICAgICAgKGludCkKKyAqICAgICAgICAgICAgICB6ZXJvIGlmIGNvbW1hbmQgZm91bmQsIHNzX2V0X2NvbW1hbmRfbm90X2ZvdW5kIG90aGVyd2lzZQorICogTm90ZXM6CisgKi8KKworc3RhdGljIGludCBjaGVja19yZXF1ZXN0X3RhYmxlKHJlZ2lzdGVyIHNzX3JlcXVlc3RfdGFibGUgKnJxdGJsLCBpbnQgYXJnYywKKwkJCSAgICAgICBjaGFyICphcmd2W10sIGludCBzY2lfaWR4KQoreworI2lmZGVmIF9fU0FCRVJfXworICAgIHN0cnVjdCBfc3NfcmVxdWVzdF9lbnRyeSAqcmVxdWVzdDsKKyNlbHNlCisgICAgcmVnaXN0ZXIgc3NfcmVxdWVzdF9lbnRyeSAqcmVxdWVzdDsKKyNlbmRpZgorICAgIHJlZ2lzdGVyIHNzX2RhdGEgKmluZm87CisgICAgcmVnaXN0ZXIgY2hhciBjb25zdCAqIGNvbnN0ICogbmFtZTsKKyAgICBjaGFyICpzdHJpbmcgPSBhcmd2WzBdOworICAgIGludCBpOworCisgICAgaW5mbyA9IHNzX2luZm8oc2NpX2lkeCk7CisgICAgaW5mby0+YXJnYyA9IGFyZ2M7CisgICAgaW5mby0+YXJndiA9IGFyZ3Y7CisgICAgZm9yIChpID0gMDsgKHJlcXVlc3QgPSBnZXRfcmVxdWVzdChycXRibCwgaSkpLT5jb21tYW5kX25hbWVzOyBpKyspIHsKKwlmb3IgKG5hbWUgPSByZXF1ZXN0LT5jb21tYW5kX25hbWVzOyAqbmFtZTsgbmFtZSsrKQorCSAgICBpZiAoIXN0cmNtcCgqbmFtZSwgc3RyaW5nKSkgeworCQlpbmZvLT5jdXJyZW50X3JlcXVlc3QgPSByZXF1ZXN0LT5jb21tYW5kX25hbWVzWzBdOworCQkocmVxdWVzdC0+ZnVuY3Rpb24pKGFyZ2MsIChjb25zdCBjaGFyICpjb25zdCAqKSBhcmd2LAorCQkJCSAgICBzY2lfaWR4LGluZm8tPmluZm9fcHRyKTsKKwkJaW5mby0+Y3VycmVudF9yZXF1ZXN0ID0gKGNoYXIgKilOVUxMOworCQlyZXR1cm4oMCk7CisJICAgIH0KKyAgICB9CisgICAgcmV0dXJuKFNTX0VUX0NPTU1BTkRfTk9UX0ZPVU5EKTsKK30KKworLyoKKyAqIHJlYWxseV9leGVjdXRlX2NvbW1hbmQoc2NpX2lkeCwgYXJnYywgYXJndikKKyAqCisgKiBGdW5jdGlvbjoKKyAqICAgICAgRmlsbHMgaW4gdGhlIGFyZ2MsIGFyZ3YgdmFsdWVzIGluIHRoZSBzdWJzeXN0ZW0gZW50cnkgYW5kCisgKiAgICAgIGNhbGwgdGhlIGFwcHJvcHJpYXRlIHJvdXRpbmUuCisgKiBBcmd1bWVudHM6CisgKiAgICAgIHNjaV9pZHggKGludCkKKyAqICAgICAgICAgICAgICBzcy1pbnRlcm5hbCBpbmRleCBmb3Igc3Vic3lzdGVtIGNvbnRyb2wgaW5mbyBzdHJ1Y3R1cmUKKyAqICAgICAgYXJnYyAoaW50KQorICogICAgICAgICAgICAgIG51bWJlciBvZiBhcmd1bWVudHMgaW4gYXJndW1lbnQgbGlzdAorICogICAgICBhcmd2IChjaGFyICoqW10pCisgKiAgICAgICAgICAgICAgcG9pbnRlciB0byBwYXJzZWQgYXJndW1lbnQgbGlzdCAobWF5IGJlIHJlYWxsb2NhdGVkCisgKiAgICAgICAgICAgICAgb24gYWJicmV2IGV4cGFuc2lvbikKKyAqCisgKiBSZXR1cm5zOgorICogICAgICAoaW50KQorICogICAgICAgICAgICAgIFplcm8gaWYgc3VjY2Vzc2Z1bCwgc3NfZXRfY29tbWFuZF9ub3RfZm91bmQgb3RoZXJ3aXNlLgorICogTm90ZXM6CisgKi8KKworc3RhdGljIGludCByZWFsbHlfZXhlY3V0ZV9jb21tYW5kKGludCBzY2lfaWR4LCBpbnQgYXJnYywgY2hhciAqKmFyZ3ZbXSkKK3sKKyAgICByZWdpc3RlciBzc19yZXF1ZXN0X3RhYmxlICoqcnF0Ymw7CisgICAgcmVnaXN0ZXIgc3NfZGF0YSAqaW5mbzsKKworICAgIGluZm8gPSBzc19pbmZvKHNjaV9pZHgpOworCisgICAgZm9yIChycXRibCA9IGluZm8tPnJxdF90YWJsZXM7ICpycXRibDsgcnF0YmwrKykgeworICAgICAgICBpZiAoY2hlY2tfcmVxdWVzdF90YWJsZSAoKnJxdGJsLCBhcmdjLCAqYXJndiwgc2NpX2lkeCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybigwKTsKKyAgICB9CisgICAgcmV0dXJuKFNTX0VUX0NPTU1BTkRfTk9UX0ZPVU5EKTsKK30KKworLyoKKyAqIHNzX2V4ZWN1dGVfY29tbWFuZChzY2lfaWR4LCBhcmd2KQorICoKKyAqIEZ1bmN0aW9uOgorICoJRXhlY3V0ZXMgYSBwYXJzZWQgY29tbWFuZCBsaXN0IHdpdGhpbiB0aGUgc3Vic3lzdGVtLgorICogQXJndW1lbnRzOgorICoJc2NpX2lkeCAoaW50KQorICoJCXNzLWludGVybmFsIGluZGV4IGZvciBzdWJzeXN0ZW0gY29udHJvbCBpbmZvIHN0cnVjdHVyZQorICoJYXJndiAoY2hhciAqW10pCisgKgkJcGFyc2VkIGFyZ3VtZW50IGxpc3QKKyAqIFJldHVybnM6CisgKgkoaW50KQorICoJCVplcm8gaWYgc3VjY2Vzc2Z1bCwgc3NfZXRfY29tbWFuZF9ub3RfZm91bmQgb3RoZXJ3aXNlLgorICogTm90ZXM6CisgKi8KKworaW50IHNzX2V4ZWN1dGVfY29tbWFuZChpbnQgc2NpX2lkeCwgcmVnaXN0ZXIgY2hhciAqYXJndltdKQoreworCXJlZ2lzdGVyIGludCBpLCBhcmdjOworCWNoYXIgKiphcmdwOworCisJYXJnYyA9IDA7CisJZm9yIChhcmdwID0gYXJndjsgKmFyZ3A7IGFyZ3ArKykKKwkJYXJnYysrOworCWFyZ3AgPSAoY2hhciAqKiltYWxsb2MoKGFyZ2MrMSkqc2l6ZW9mKGNoYXIgKikpOworCWZvciAoaSA9IDA7IGkgPD0gYXJnYzsgaSsrKQorCQlhcmdwW2ldID0gYXJndltpXTsKKwlpID0gcmVhbGx5X2V4ZWN1dGVfY29tbWFuZChzY2lfaWR4LCBhcmdjLCAmYXJncCk7CisJZnJlZShhcmdwKTsKKwlyZXR1cm4oaSk7Cit9CisKKy8qCisgKiBzc19leGVjdXRlX2xpbmUoc2NpX2lkeCwgbGluZV9wdHIpCisgKgorICogRnVuY3Rpb246CisgKiAgICAgIFBhcnNlcyBhbmQgZXhlY3V0ZXMgYSBjb21tYW5kIGxpbmUgd2l0aGluIGEgc3Vic3lzdGVtLgorICogQXJndW1lbnRzOgorICogICAgICBzY2lfaWR4IChpbnQpCisgKiAgICAgICAgICAgICAgc3MtaW50ZXJuYWwgaW5kZXggZm9yIHN1YnN5c3RlbSBjb250cm9sIGluZm8gc3RydWN0dXJlCisgKiAgICAgIGxpbmVfcHRyIChjaGFyICopCisgKiAgICAgICAgICAgICAgUG9pbnRlciB0byBjb21tYW5kIGxpbmUgdG8gYmUgcGFyc2VkLgorICogUmV0dXJuczoKKyAqICAgICAgKGludCkKKyAqICAgICAgCUVycm9yIGNvZGUuCisgKiBOb3RlczoKKyAqLworCitpbnQgc3NfZXhlY3V0ZV9saW5lKGludCBzY2lfaWR4LCBjaGFyICpsaW5lX3B0cikKK3sKKyAgICBjaGFyICoqYXJndjsKKyAgICBpbnQgYXJnYywgcmV0OworCisgICAgLyogZmx1c2ggbGVhZGluZyB3aGl0ZXNwYWNlICovCisgICAgd2hpbGUgKGxpbmVfcHRyWzBdID09ICcgJyB8fCBsaW5lX3B0clswXSA9PSAnXHQnKQorICAgICAgICBsaW5lX3B0cisrOworCisgICAgLyogY2hlY2sgaWYgaXQgc2hvdWxkIGJlIHNlbnQgdG8gb3BlcmF0aW5nIHN5c3RlbSBmb3IgZXhlY3V0aW9uICovCisgICAgaWYgKCpsaW5lX3B0ciA9PSAnIScpIHsKKyAgICAgICAgaWYgKHNzX2luZm8oc2NpX2lkeCktPmZsYWdzLmVzY2FwZV9kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybiBTU19FVF9FU0NBUEVfRElTQUJMRUQ7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGluZV9wdHIrKzsKKyAgICAgICAgICAgIHJldHVybiAoc3lzdGVtKGxpbmVfcHRyKSA8IDApID8gZXJybm8gOiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogcGFyc2UgaXQgKi8KKyAgICBhcmd2ID0gc3NfcGFyc2Uoc2NpX2lkeCwgbGluZV9wdHIsICZhcmdjKTsKKyAgICBpZiAoYXJnYyA9PSAwKSB7CisJZnJlZShhcmd2KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogbG9vayBpdCB1cCBpbiB0aGUgcmVxdWVzdCB0YWJsZXMsIGV4ZWN1dGUgaWYgZm91bmQgKi8KKyAgICByZXQgPSByZWFsbHlfZXhlY3V0ZV9jb21tYW5kIChzY2lfaWR4LCBhcmdjLCAmYXJndik7CisKKyAgICBmcmVlKGFyZ3YpOworCisgICAgcmV0dXJuKHJldCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL2dldF9yZWFkbGluZS5jIGIvZTJmc3Byb2dzL2xpYi9zcy9nZXRfcmVhZGxpbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzY1YmUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9nZXRfcmVhZGxpbmUuYwpAQCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDAzIGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFTX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorI2RlZmluZQlzaXplCXNpemVvZihzc19kYXRhICopCisjaWZkZWYgSEFWRV9ETE9QRU4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0RMT1BFTgorc3RhdGljIHZvaWQgc3NfcmVsZWFzZV9yZWFkbGluZShzc19kYXRhICppbmZvKQoreworCWlmICghaW5mby0+cmVhZGxpbmVfaGFuZGxlKQorCQlyZXR1cm47CisKKwlpbmZvLT5yZWFkbGluZSA9IDA7CisJaW5mby0+YWRkX2hpc3RvcnkgPSAwOworCWluZm8tPnJlZGlzcGxheSA9IDA7CisJaW5mby0+cmxfY29tcGxldGlvbl9tYXRjaGVzID0gMDsKKwlkbGNsb3NlKGluZm8tPnJlYWRsaW5lX2hhbmRsZSk7CisJaW5mby0+cmVhZGxpbmVfaGFuZGxlID0gMDsKK30KKyNlbmRpZgorCisvKiBMaWJyYXJpZXMgd2Ugd2lsbCB0cnkgdG8gdXNlIGZvciByZWFkbGluZS9lZGl0bGluZSBmdW5jdGlvbmFsaXR5ICovCisjZGVmaW5lIERFRkFVTFRfTElCUEFUSCAibGlicmVhZGxpbmUuc28uNjpsaWJyZWFkbGluZS5zby41OmxpYnJlYWRsaW5lLnNvLjQ6bGlicmVhZGxpbmUuc286bGliZWRpdC5zby4yOmxpYmVkaXQuc286bGliZWRpdGxpbmUuc28uMDpsaWJlZGl0bGluZS5zbyIKKworI2lmZGVmIEhBVkVfRExPUEVOCit2b2lkIHNzX2dldF9yZWFkbGluZShpbnQgc2NpX2lkeCkKK3sKKwl2b2lkCSpoYW5kbGUgPSBOVUxMOworCXNzX2RhdGEgKmluZm8gPSBzc19pbmZvKHNjaV9pZHgpOworCWNvbnN0IGNoYXIgKip0LCAqbGlicGF0aCA9IDA7CisJY2hhcgkqdG1wLCAqY3AsICpuZXh0OworCWNoYXIgKiooKipjb21wbGV0aW9uX2Z1bmMpKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOworCisJaWYgKGluZm8tPnJlYWRsaW5lX2hhbmRsZSkKKwkJcmV0dXJuOworCisJbGlicGF0aCA9IHNzX3NhZmVfZ2V0ZW52KCJTU19SRUFETElORV9QQVRIIik7CisJaWYgKCFsaWJwYXRoKQorCQlsaWJwYXRoID0gREVGQVVMVF9MSUJQQVRIOworCWlmICgqbGlicGF0aCA9PSAwIHx8ICFzdHJjbXAobGlicGF0aCwgIm5vbmUiKSkKKwkJcmV0dXJuOworCisJdG1wID0gbWFsbG9jKHN0cmxlbihsaWJwYXRoKSsxKTsKKwlpZiAoIXRtcCkKKwkJcmV0dXJuOworCXN0cmNweSh0bXAsIGxpYnBhdGgpOworCWZvciAoY3AgPSB0bXA7IGNwOyBjcCA9IG5leHQpIHsKKwkJbmV4dCA9IHN0cmNocihjcCwgJzonKTsKKwkJaWYgKG5leHQpCisJCQkqbmV4dCsrID0gMDsKKwkJaWYgKCpjcCA9PSAwKQorCQkJY29udGludWU7CisJCWlmICgoaGFuZGxlID0gZGxvcGVuKGNwLCBSVExEX05PVykpKSB7CisJCQkvKiBwcmludGYoIlVzaW5nICVzIGZvciByZWFkbGluZSBsaWJyYXJ5XG4iLCBjcCk7ICovCisJCQlicmVhazsKKwkJfQorCX0KKwlmcmVlKHRtcCk7CisJaWYgKCFoYW5kbGUpCisJCXJldHVybjsKKworCWluZm8tPnJlYWRsaW5lX2hhbmRsZSA9IGhhbmRsZTsKKwlpbmZvLT5yZWFkbGluZSA9IChjaGFyICooKikoY29uc3QgY2hhciAqKSkKKwkJZGxzeW0oaGFuZGxlLCAicmVhZGxpbmUiKTsKKwlpbmZvLT5hZGRfaGlzdG9yeSA9ICh2b2lkICgqKShjb25zdCBjaGFyICopKQorCQlkbHN5bShoYW5kbGUsICJhZGRfaGlzdG9yeSIpOworCWluZm8tPnJlZGlzcGxheSA9ICh2b2lkICgqKSh2b2lkKSkKKwkJZGxzeW0oaGFuZGxlLCAicmxfZm9yY2VkX3VwZGF0ZV9kaXNwbGF5Iik7CisJaW5mby0+cmxfY29tcGxldGlvbl9tYXRjaGVzID0gKGNoYXIgKiooKikoY29uc3QgY2hhciAqLAorCQkJCSAgICBjaGFyICooKikoY29uc3QgY2hhciAqLCBpbnQpKSkKKwkJZGxzeW0oaGFuZGxlLCAicmxfY29tcGxldGlvbl9tYXRjaGVzIik7CisJaWYgKCh0ID0gZGxzeW0oaGFuZGxlLCAicmxfcmVhZGxpbmVfbmFtZSIpKSAhPSBOVUxMKQorCQkqdCA9IGluZm8tPnN1YnN5c3RlbV9uYW1lOworCWlmICgoY29tcGxldGlvbl9mdW5jID0KKwkgICAgIGRsc3ltKGhhbmRsZSwgInJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uIikpICE9IE5VTEwpCisJCSpjb21wbGV0aW9uX2Z1bmMgPSBzc19ybF9jb21wbGV0aW9uOworCWluZm8tPnJlYWRsaW5lX3NodXRkb3duID0gc3NfcmVsZWFzZV9yZWFkbGluZTsKK30KKyNlbHNlCit2b2lkIHNzX2dldF9yZWFkbGluZShpbnQgc2NpX2lkeCBfX1NTX0FUVFIoKHVudXNlZCkpKQoreworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL2hlbHAuYyBiL2UyZnNwcm9ncy9saWIvc3MvaGVscC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDQ0MDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL2hlbHAuYwpAQCAtMCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbHNlCitleHRlcm4gaW50IGVycm5vOworI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorI2lmZGVmIE5FRURfU1lTX0ZDTlRMX0gKKy8qIGp1c3QgZm9yIE9fKiAqLworI2luY2x1ZGUgPHN5cy9mY250bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfV0FJVF9ICisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgInNzX2ludGVybmFsLmgiCisKK3ZvaWQgc3NfaGVscChpbnQgYXJnYywgY2hhciBjb25zdCAqIGNvbnN0ICphcmd2LCBpbnQgc2NpX2lkeCwgcG9pbnRlciBpbmZvX3B0cikKK3sKKyAgICBjaGFyICpidWZmZXI7CisgICAgY2hhciBjb25zdCAqcmVxdWVzdF9uYW1lOworICAgIGludCBjb2RlOworICAgIGludCBmZCwgY2hpbGQ7CisgICAgcmVnaXN0ZXIgaW50IGlkeDsKKyAgICByZWdpc3RlciBzc19kYXRhICppbmZvOworCisgICAgcmVxdWVzdF9uYW1lID0gc3NfY3VycmVudF9yZXF1ZXN0KHNjaV9pZHgsICZjb2RlKTsKKyAgICBpZiAoY29kZSAhPSAwKSB7CisJc3NfcGVycm9yKHNjaV9pZHgsIGNvZGUsICIiKTsKKwlyZXR1cm47CQkvKiBubyBzc19hYm9ydF9saW5lLCBpZiBpbnZhbGlkIGludm9jYXRpb24gKi8KKyAgICB9CisgICAgaWYgKGFyZ2MgPT0gMSkgeworCXNzX2xpc3RfcmVxdWVzdHMoYXJnYywgYXJndiwgc2NpX2lkeCwgaW5mb19wdHIpOworCXJldHVybjsKKyAgICB9CisgICAgZWxzZSBpZiAoYXJnYyAhPSAyKSB7CisJLyogc2hvdWxkIGRvIHNvbWV0aGluZyBiZXR0ZXIgdGhhbiB0aGlzICovCisJYnVmZmVyID0gbWFsbG9jKDgwKzIqc3RybGVuKHJlcXVlc3RfbmFtZSkpOworCWlmICghYnVmZmVyKSB7CisJCXNzX3BlcnJvcihzY2lfaWR4LCAwLAorCQkJICAiY291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHByaW50IHVzYWdlIG1lc3NhZ2UiKTsKKwkJcmV0dXJuOworCX0KKwlzcHJpbnRmKGJ1ZmZlciwgInVzYWdlOlxuXHQlcyBbdG9waWN8Y29tbWFuZF1cbm9yXHQlc1xuIiwKKwkJcmVxdWVzdF9uYW1lLCByZXF1ZXN0X25hbWUpOworCXNzX3BlcnJvcihzY2lfaWR4LCAwLCBidWZmZXIpOworCWZyZWUoYnVmZmVyKTsKKwlyZXR1cm47CisgICAgfQorICAgIGluZm8gPSBzc19pbmZvKHNjaV9pZHgpOworICAgIGlmIChpbmZvLT5pbmZvX2RpcnMgPT0gKGNoYXIgKiopTlVMTCkgeworCXNzX3BlcnJvcihzY2lfaWR4LCBTU19FVF9OT19JTkZPX0RJUiwgKGNoYXIgKilOVUxMKTsKKwlyZXR1cm47CisgICAgfQorICAgIGlmIChpbmZvLT5pbmZvX2RpcnNbMF0gPT0gKGNoYXIgKilOVUxMKSB7CisJc3NfcGVycm9yKHNjaV9pZHgsIFNTX0VUX05PX0lORk9fRElSLCAoY2hhciAqKU5VTEwpOworCXJldHVybjsKKyAgICB9CisgICAgZm9yIChmZCA9IC0xLCBpZHggPSAwOyBpbmZvLT5pbmZvX2RpcnNbaWR4XSAhPSAoY2hhciAqKU5VTEw7IGlkeCsrKSB7CisgICAgICAgIGJ1ZmZlciA9IG1hbGxvYyhzdHJsZW4gKGluZm8tPmluZm9fZGlyc1tpZHhdKSArIDEgKworCQkJc3RybGVuIChhcmd2WzFdKSArIDYpOworCWlmICghYnVmZmVyKSB7CisJICAgIHNzX3BlcnJvcihzY2lfaWR4LCAwLAorCQkgICAgICAiY291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBoZWxwIGZpbGVuYW1lIik7CisJICAgIHJldHVybjsKKwl9CisJKHZvaWQpIHN0cmNweShidWZmZXIsIGluZm8tPmluZm9fZGlyc1tpZHhdKTsKKwkodm9pZCkgc3RyY2F0KGJ1ZmZlciwgIi8iKTsKKwkodm9pZCkgc3RyY2F0KGJ1ZmZlciwgYXJndlsxXSk7CisJKHZvaWQpIHN0cmNhdChidWZmZXIsICIuaW5mbyIpOworCWZkID0gb3BlbihidWZmZXIsIE9fUkRPTkxZKTsKKwlmcmVlKGJ1ZmZlcik7CisJaWYgKGZkID49IDApCisJICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoZmQgPCAwKSB7CisjZGVmaW5lIE1TRyAiTm8gaW5mbyBmb3VuZCBmb3IgIgorICAgICAgICBjaGFyICpidWYgPSBtYWxsb2Moc3RybGVuIChNU0cpICsgc3RybGVuIChhcmd2WzFdKSArIDEpOworCXN0cmNweShidWYsIE1TRyk7CisJc3RyY2F0KGJ1ZiwgYXJndlsxXSk7CisJc3NfcGVycm9yKHNjaV9pZHgsIDAsIGJ1Zik7CisJZnJlZShidWYpOworCXJldHVybjsKKyAgICB9CisgICAgc3dpdGNoIChjaGlsZCA9IGZvcmsoKSkgeworICAgIGNhc2UgLTE6CisJc3NfcGVycm9yKHNjaV9pZHgsIGVycm5vLCAiQ2FuJ3QgZm9yayBmb3IgcGFnZXIiKTsKKwkodm9pZCkgY2xvc2UoZmQpOworCXJldHVybjsKKyAgICBjYXNlIDA6CisJKHZvaWQpIGR1cDIoZmQsIDApOyAvKiBwdXQgZmlsZSBvbiBzdGRpbiAqLworCXNzX3BhZ2Vfc3RkaW4oKTsKKyAgICBkZWZhdWx0OgorCSh2b2lkKSBjbG9zZShmZCk7IC8qIHdoYXQgY2FuIHdlIGRvIGlmIGl0IGZhaWxzPyAqLworCXdoaWxlICh3YWl0KE5VTEwpICE9IGNoaWxkKSB7CisJICAgIC8qIGRvIG5vdGhpbmcgaWYgd3JvbmcgcGlkICovCisJfTsKKyAgICB9Cit9CisKKyNpZm5kZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPHN5cy9kaXIuaD4KKyNlbHNlCisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZW5kaWYKKwordm9pZCBzc19hZGRfaW5mb19kaXIoaW50IHNjaV9pZHgsIGNoYXIgKmluZm9fZGlyLCBpbnQgKmNvZGVfcHRyKQoreworICAgIHJlZ2lzdGVyIHNzX2RhdGEgKmluZm87CisgICAgRElSICpkOworICAgIGludCBuX2RpcnM7CisgICAgcmVnaXN0ZXIgY2hhciAqKmRpcnM7CisKKyAgICBpbmZvID0gc3NfaW5mbyhzY2lfaWR4KTsKKyAgICBpZiAoaW5mb19kaXIgPT0gTlVMTCB8fCAqaW5mb19kaXIgPT0gJ1wwJykgeworCSpjb2RlX3B0ciA9IFNTX0VUX05PX0lORk9fRElSOworCXJldHVybjsKKyAgICB9CisgICAgaWYgKChkID0gb3BlbmRpcihpbmZvX2RpcikpID09IChESVIgKilOVUxMKSB7CisJKmNvZGVfcHRyID0gZXJybm87CisJcmV0dXJuOworICAgIH0KKyAgICBjbG9zZWRpcihkKTsKKyAgICBkaXJzID0gaW5mby0+aW5mb19kaXJzOworICAgIGZvciAobl9kaXJzID0gMDsgZGlyc1tuX2RpcnNdICE9IChjaGFyICopTlVMTDsgbl9kaXJzKyspCisJOwkJLyogZ2V0IG51bWJlciBvZiBub24tTlVMTCBkaXIgZW50cmllcyAqLworICAgIGRpcnMgPSAoY2hhciAqKilyZWFsbG9jKChjaGFyICopZGlycywKKwkJCSAgICAodW5zaWduZWQpKG5fZGlycyArIDIpKnNpemVvZihjaGFyICopKTsKKyAgICBpZiAoZGlycyA9PSAoY2hhciAqKilOVUxMKSB7CisJaW5mby0+aW5mb19kaXJzID0gKGNoYXIgKiopTlVMTDsKKwkqY29kZV9wdHIgPSBlcnJubzsKKwlyZXR1cm47CisgICAgfQorICAgIGluZm8tPmluZm9fZGlycyA9IGRpcnM7CisgICAgZGlyc1tuX2RpcnMgKyAxXSA9IChjaGFyICopTlVMTDsKKyAgICBkaXJzW25fZGlyc10gPSBtYWxsb2MoKHVuc2lnbmVkKXN0cmxlbihpbmZvX2RpcikrMSk7CisgICAgc3RyY3B5KGRpcnNbbl9kaXJzXSwgaW5mb19kaXIpOworICAgICpjb2RlX3B0ciA9IDA7Cit9CisKK3ZvaWQgc3NfZGVsZXRlX2luZm9fZGlyKGludCBzY2lfaWR4LCBjaGFyICppbmZvX2RpciwgaW50ICpjb2RlX3B0cikKK3sKKyAgICByZWdpc3RlciBjaGFyICoqaV9kOworICAgIHJlZ2lzdGVyIGNoYXIgKippbmZvX2RpcnM7CisKKyAgICBpbmZvX2RpcnMgPSBzc19pbmZvKHNjaV9pZHgpLT5pbmZvX2RpcnM7CisgICAgZm9yIChpX2QgPSBpbmZvX2RpcnM7ICppX2Q7IGlfZCsrKSB7CisJaWYgKCFzdHJjbXAoKmlfZCwgaW5mb19kaXIpKSB7CisJICAgIHdoaWxlICgqaV9kKSB7CisJCSppX2QgPSAqKGlfZCsxKTsKKwkJaV9kKys7CisJICAgIH0KKwkgICAgKmNvZGVfcHRyID0gMDsKKwkgICAgcmV0dXJuOworCX0KKyAgICB9CisgICAgKmNvZGVfcHRyID0gU1NfRVRfTk9fSU5GT19ESVI7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL2ludm9jYXRpb24uYyBiL2UyZnNwcm9ncy9saWIvc3MvaW52b2NhdGlvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1N2U3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL2ludm9jYXRpb24uYwpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFTX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorI2RlZmluZQlzaXplCXNpemVvZihzc19kYXRhICopCisjaWZkZWYgSEFWRV9ETE9QRU4KKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KKworaW50IHNzX2NyZWF0ZV9pbnZvY2F0aW9uKGNvbnN0IGNoYXIgKnN1YnN5c3RlbV9uYW1lLCBjb25zdCBjaGFyICp2ZXJzaW9uX3N0cmluZywKKwkJCSB2b2lkICppbmZvX3B0ciwgc3NfcmVxdWVzdF90YWJsZSAqcmVxdWVzdF90YWJsZV9wdHIsCisJCQkgaW50ICpjb2RlX3B0cikKK3sKKwlyZWdpc3RlciBpbnQgc2NpX2lkeDsKKwlyZWdpc3RlciBzc19kYXRhICpuZXdfdGFibGU7CisJcmVnaXN0ZXIgc3NfZGF0YSAqKnRhYmxlOworCisJKmNvZGVfcHRyID0gMDsKKwl0YWJsZSA9IF9zc190YWJsZTsKKwluZXdfdGFibGUgPSAoc3NfZGF0YSAqKSBtYWxsb2Moc2l6ZW9mKHNzX2RhdGEpKTsKKworCWlmICh0YWJsZSA9PSAoc3NfZGF0YSAqKikgTlVMTCkgeworCQl0YWJsZSA9IChzc19kYXRhICoqKSBtYWxsb2MoMiAqIHNpemUpOworCQl0YWJsZVswXSA9IHRhYmxlWzFdID0gKHNzX2RhdGEgKilOVUxMOworCX0KKwlpbml0aWFsaXplX3NzX2Vycm9yX3RhYmxlICgpOworCisJZm9yIChzY2lfaWR4ID0gMTsgdGFibGVbc2NpX2lkeF0gIT0gKHNzX2RhdGEgKilOVUxMOyBzY2lfaWR4KyspCisJCTsKKwl0YWJsZSA9IChzc19kYXRhICoqKSByZWFsbG9jKChjaGFyICopdGFibGUsCisJCQkJICAgICAoKHVuc2lnbmVkKXNjaV9pZHgrMikqc2l6ZSk7CisJaWYgKHRhYmxlID09IE5VTEwpIHsKKwkJKmNvZGVfcHRyID0gRU5PTUVNOworCQlmcmVlKG5ld190YWJsZSk7CisJCXJldHVybiAwOworCX0KKwl0YWJsZVtzY2lfaWR4KzFdID0gKHNzX2RhdGEgKikgTlVMTDsKKwl0YWJsZVtzY2lfaWR4XSA9IG5ld190YWJsZTsKKworCW5ld190YWJsZS0+c3Vic3lzdGVtX25hbWUgPSBzdWJzeXN0ZW1fbmFtZTsKKwluZXdfdGFibGUtPnN1YnN5c3RlbV92ZXJzaW9uID0gdmVyc2lvbl9zdHJpbmc7CisJbmV3X3RhYmxlLT5hcmd2ID0gKGNoYXIgKiopTlVMTDsKKwluZXdfdGFibGUtPmN1cnJlbnRfcmVxdWVzdCA9IChjaGFyICopTlVMTDsKKwluZXdfdGFibGUtPmluZm9fZGlycyA9IChjaGFyICoqKW1hbGxvYyhzaXplb2YoY2hhciAqKSk7CisJKm5ld190YWJsZS0+aW5mb19kaXJzID0gKGNoYXIgKilOVUxMOworCW5ld190YWJsZS0+aW5mb19wdHIgPSBpbmZvX3B0cjsKKwluZXdfdGFibGUtPnByb21wdCA9IG1hbGxvYygodW5zaWduZWQpc3RybGVuKHN1YnN5c3RlbV9uYW1lKSs0KTsKKwlzdHJjcHkobmV3X3RhYmxlLT5wcm9tcHQsIHN1YnN5c3RlbV9uYW1lKTsKKwlzdHJjYXQobmV3X3RhYmxlLT5wcm9tcHQsICI6ICAiKTsKKyNpZmRlZiBzaWxseQorCW5ld190YWJsZS0+YWJicmV2X2luZm8gPSBzc19hYmJyZXZfaW5pdGlhbGl6ZSgiL2V0Yy9wYXNzd2QiLCBjb2RlX3B0cik7CisjZWxzZQorCW5ld190YWJsZS0+YWJicmV2X2luZm8gPSBOVUxMOworI2VuZGlmCisJbmV3X3RhYmxlLT5mbGFncy5lc2NhcGVfZGlzYWJsZWQgPSAwOworCW5ld190YWJsZS0+ZmxhZ3MuYWJicmV2c19kaXNhYmxlZCA9IDA7CisJbmV3X3RhYmxlLT5ycXRfdGFibGVzID0KKwkJKHNzX3JlcXVlc3RfdGFibGUgKiopIGNhbGxvYygyLCBzaXplb2Yoc3NfcmVxdWVzdF90YWJsZSAqKSk7CisJKihuZXdfdGFibGUtPnJxdF90YWJsZXMpID0gcmVxdWVzdF90YWJsZV9wdHI7CisJKihuZXdfdGFibGUtPnJxdF90YWJsZXMrMSkgPSAoc3NfcmVxdWVzdF90YWJsZSAqKSBOVUxMOworCisJbmV3X3RhYmxlLT5yZWFkbGluZV9oYW5kbGUgPSAwOworCW5ld190YWJsZS0+cmVhZGxpbmVfc2h1dGRvd24gPSAwOworCW5ld190YWJsZS0+cmVhZGxpbmUgPSAwOworCW5ld190YWJsZS0+YWRkX2hpc3RvcnkgPSAwOworCW5ld190YWJsZS0+cmVkaXNwbGF5ID0gMDsKKwluZXdfdGFibGUtPnJsX2NvbXBsZXRpb25fbWF0Y2hlcyA9IDA7CisJX3NzX3RhYmxlID0gdGFibGU7CisjaWYgZGVmaW5lZChIQVZFX0RMT1BFTikgJiYgZGVmaW5lZChTSEFSRURfRUxGX0xJQikKKwlzc19nZXRfcmVhZGxpbmUoc2NpX2lkeCk7CisjZW5kaWYKKwlyZXR1cm4oc2NpX2lkeCk7Cit9CisKK3ZvaWQKK3NzX2RlbGV0ZV9pbnZvY2F0aW9uKGludCBzY2lfaWR4KQoreworCXJlZ2lzdGVyIHNzX2RhdGEgKnQ7CisJaW50IGlnbm9yZWRfY29kZTsKKworCXQgPSBzc19pbmZvKHNjaV9pZHgpOworCWZyZWUodC0+cHJvbXB0KTsKKwlmcmVlKHQtPnJxdF90YWJsZXMpOworCXdoaWxlKHQtPmluZm9fZGlyc1swXSAhPSAoY2hhciAqKU5VTEwpCisJCXNzX2RlbGV0ZV9pbmZvX2RpcihzY2lfaWR4LCB0LT5pbmZvX2RpcnNbMF0sICZpZ25vcmVkX2NvZGUpOworCWZyZWUodC0+aW5mb19kaXJzKTsKKyNpZiBkZWZpbmVkKEhBVkVfRExPUEVOKSAmJiBkZWZpbmVkKFNIQVJFRF9FTEZfTElCKQorCWlmICh0LT5yZWFkbGluZV9zaHV0ZG93bikKKwkJKCp0LT5yZWFkbGluZV9zaHV0ZG93bikodCk7CisjZW5kaWYKKwlmcmVlKHQpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zcy9saXN0X3Jxcy5jIGIvZTJmc3Byb2dzL2xpYi9zcy9saXN0X3Jxcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyMWEzODMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL2xpc3RfcnFzLmMKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInNzX2ludGVybmFsLmgiCisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c2V0am1wLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKwordHlwZWRlZiB2b2lkIHNpZ3JldF90OworCit2b2lkIHNzX2xpc3RfcmVxdWVzdHMoaW50IGFyZ2MgX19TU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2IF9fU1NfQVRUUigodW51c2VkKSksCisJCSAgICAgIGludCBzY2lfaWR4LCB2b2lkICppbmZvcCBfX1NTX0FUVFIoKHVudXNlZCkpKQoreworICAgIHNzX3JlcXVlc3RfZW50cnkgKmVudHJ5OworICAgIGNoYXIgY29uc3QgKiBjb25zdCAqbmFtZTsKKyAgICBpbnQgaSwgc3BhY2luZzsKKyAgICBzc19yZXF1ZXN0X3RhYmxlICoqdGFibGU7CisKKyAgICBGSUxFICpvdXRwdXQ7CisgICAgaW50IGZkOworICAgIHNpZ3NldF90IG9tYXNrLCBpZ21hc2s7CisgICAgc2lncmV0X3QgKCpmdW5jKShpbnQpOworI2lmbmRlZiBOT19GT1JLCisgICAgaW50IHdhaXRiOworI2VuZGlmCisKKyAgICBzaWdlbXB0eXNldCgmaWdtYXNrKTsKKyAgICBzaWdhZGRzZXQoJmlnbWFzaywgU0lHSU5UKTsKKyAgICBzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZpZ21hc2ssICZvbWFzayk7CisgICAgZnVuYyA9IHNpZ25hbChTSUdJTlQsIFNJR19JR04pOworICAgIGZkID0gc3NfcGFnZXJfY3JlYXRlKCk7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBwZXJyb3IoInNzX3BhZ2VyX2NyZWF0ZSIpOworICAgICAgICAodm9pZCkgc2lnbmFsKFNJR0lOVCwgZnVuYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgb3V0cHV0ID0gZmRvcGVuKGZkLCAidyIpOworICAgIHNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb21hc2ssIChzaWdzZXRfdCAqKSAwKTsKKworICAgIGZwcmludGYgKG91dHB1dCwgIkF2YWlsYWJsZSAlcyByZXF1ZXN0czpcblxuIiwKKwkgICAgIHNzX2luZm8gKHNjaV9pZHgpIC0+IHN1YnN5c3RlbV9uYW1lKTsKKworICAgIGZvciAodGFibGUgPSBzc19pbmZvKHNjaV9pZHgpLT5ycXRfdGFibGVzOyAqdGFibGU7IHRhYmxlKyspIHsKKyAgICAgICAgZW50cnkgPSAoKnRhYmxlKS0+cmVxdWVzdHM7CisgICAgICAgIGZvciAoOyBlbnRyeS0+Y29tbWFuZF9uYW1lczsgZW50cnkrKykgeworICAgICAgICAgICAgc3BhY2luZyA9IC0yOworICAgICAgICAgICAgaWYgKGVudHJ5LT5mbGFncyAmIFNTX09QVF9ET05UX0xJU1QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmb3IgKG5hbWUgPSBlbnRyeS0+Y29tbWFuZF9uYW1lczsgKm5hbWU7IG5hbWUrKykgeworICAgICAgICAgICAgICAgIGludCBsZW4gPSBzdHJsZW4oKm5hbWUpOworICAgICAgICAgICAgICAgIGZwdXRzKCpuYW1lLCBvdXRwdXQpOworICAgICAgICAgICAgICAgIHNwYWNpbmcgKz0gbGVuICsgMjsKKyAgICAgICAgICAgICAgICBpZiAobmFtZVsxXSkgeworICAgICAgICAgICAgICAgICAgICBmcHV0cygiLCAiLCBvdXRwdXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcGFjaW5nID4gMjMpIHsKKyAgICAgICAgICAgICAgICBmcHV0YygnXG4nLCBvdXRwdXQpOworICAgICAgICAgICAgICAgIHNwYWNpbmcgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1IC0gc3BhY2luZzsgaSsrKQorICAgICAgICAgICAgICAgIGZwdXRjKCcgJywgb3V0cHV0KTsKKyAgICAgICAgICAgIGZwdXRzKGVudHJ5LT5pbmZvX3N0cmluZywgb3V0cHV0KTsKKyAgICAgICAgICAgIGZwdXRjKCdcbicsIG91dHB1dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZmNsb3NlKG91dHB1dCk7CisjaWZuZGVmIE5PX0ZPUksKKyAgICB3YWl0KCZ3YWl0Yik7CisjZW5kaWYKKyAgICAodm9pZCkgc2lnbmFsKFNJR0lOVCwgZnVuYyk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL2xpc3Rlbi5jIGIvZTJmc3Byb2dzL2xpYi9zcy9saXN0ZW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTc4YzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9saXN0ZW4uYwpAQCAtMCwwICsxLDIwMCBAQAorLyoKKyAqIExpc3RlbmVyIGxvb3AgZm9yIHN1YnN5c3RlbSBsaWJyYXJ5IGxpYnNzLmEuCisgKgorICoJJEhlYWRlciQKKyAqCSRMb2NrZXIkCisgKgorICogQ29weXJpZ2h0IDE5ODcsIDE5ODggYnkgTUlUIFN0dWRlbnQgSW5mb3JtYXRpb24gUHJvY2Vzc2luZyBCb2FyZAorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlIHVzZWQgaW4KKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKKyAqIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBhbmQgdGhlCisgKiBNLkkuVC4gUy5JLlAuQi4gbWFrZSBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dAorICogZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c2V0am1wLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisKK3R5cGVkZWYgdm9pZCBzaWdyZXRfdDsKKworc3RhdGljIHNzX2RhdGEgKmN1cnJlbnRfaW5mbzsKK3N0YXRpYyBqbXBfYnVmIGxpc3Rlbl9qbXBiOworc3RhdGljIHNpZ3JldF90ICgqc2lnX2NvbnQpKGludCk7CisKK3N0YXRpYyBzaWdyZXRfdCBwcmludF9wcm9tcHQoaW50IHNpZyBfX1NTX0FUVFIoKHVudXNlZCkpKQoreworICAgIGlmIChjdXJyZW50X2luZm8tPnJlZGlzcGxheSkKKwkgICAgKCpjdXJyZW50X2luZm8tPnJlZGlzcGxheSkoKTsKKyAgICBlbHNlIHsKKwkgICAgKHZvaWQpIGZwdXRzKGN1cnJlbnRfaW5mby0+cHJvbXB0LCBzdGRvdXQpOworCSAgICAodm9pZCkgZmZsdXNoKHN0ZG91dCk7CisgICAgfQorfQorCitzdGF0aWMgc2lncmV0X3QgbGlzdGVuX2ludF9oYW5kbGVyKGludCBzaWcgX19TU19BVFRSKCh1bnVzZWQpKSkKK3sKKyAgICBwdXRjKCdcbicsIHN0ZG91dCk7CisgICAgc2lnbmFsKFNJR0lOVCwgbGlzdGVuX2ludF9oYW5kbGVyKTsKKyAgICBsb25nam1wKGxpc3Rlbl9qbXBiLCAxKTsKK30KKworaW50IHNzX2xpc3RlbiAoaW50IHNjaV9pZHgpCit7CisgICAgY2hhciAqY3A7CisgICAgc3NfZGF0YSAqaW5mbzsKKyAgICBzaWdyZXRfdCAoKnNpZ19pbnQpKGludCksICgqb2xkX3NpZ19jb250KShpbnQpOworICAgIGNoYXIgaW5wdXRbQlVGU0laXTsKKyAgICBzaWdzZXRfdCBvbWFzaywgaWdtYXNrOworICAgIGludCBjb2RlOworICAgIGptcF9idWYgb2xkX2ptcGI7CisgICAgc3NfZGF0YSAqb2xkX2luZm8gPSBjdXJyZW50X2luZm87CisgICAgY2hhciAqbGluZTsKKworICAgIGN1cnJlbnRfaW5mbyA9IGluZm8gPSBzc19pbmZvKHNjaV9pZHgpOworICAgIHNpZ19jb250ID0gKHNpZ3JldF90ICgqKShpbnQpKSAwOworICAgIGluZm8tPmFib3J0ID0gMDsKKyAgICBzaWdlbXB0eXNldCgmaWdtYXNrKTsKKyAgICBzaWdhZGRzZXQoJmlnbWFzaywgU0lHSU5UKTsKKyAgICBzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZpZ21hc2ssICZvbWFzayk7CisgICAgbWVtY3B5KG9sZF9qbXBiLCBsaXN0ZW5fam1wYiwgc2l6ZW9mKGptcF9idWYpKTsKKyAgICBzaWdfaW50ID0gc2lnbmFsKFNJR0lOVCwgbGlzdGVuX2ludF9oYW5kbGVyKTsKKyAgICBzZXRqbXAobGlzdGVuX2ptcGIpOworICAgIHNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCAmb21hc2ssIChzaWdzZXRfdCAqKSAwKTsKKworICAgIHdoaWxlKCFpbmZvLT5hYm9ydCkgeworCW9sZF9zaWdfY29udCA9IHNpZ19jb250OworCXNpZ19jb250ID0gc2lnbmFsKFNJR0NPTlQsIHByaW50X3Byb21wdCk7CisJaWYgKHNpZ19jb250ID09IHByaW50X3Byb21wdCkKKwkgICAgc2lnX2NvbnQgPSBvbGRfc2lnX2NvbnQ7CisJaWYgKGluZm8tPnJlYWRsaW5lKSB7CisJCWxpbmUgPSAoKmluZm8tPnJlYWRsaW5lKShjdXJyZW50X2luZm8tPnByb21wdCk7CisJfSBlbHNlIHsKKwkJcHJpbnRfcHJvbXB0KDApOworCQlpZiAoZmdldHMoaW5wdXQsIEJVRlNJWiwgc3RkaW4pID09IGlucHV0KQorCQkJbGluZSA9IGlucHV0OworCQllbHNlCisJCQlsaW5lID0gTlVMTDsKKworCQlpbnB1dFtCVUZTSVotMV0gPSAwOworCX0KKwlpZiAobGluZSA9PSBOVUxMKSB7CisJCWNvZGUgPSBTU19FVF9FT0Y7CisJCSh2b2lkKSBzaWduYWwoU0lHQ09OVCwgc2lnX2NvbnQpOworCQlnb3RvIGVncmVzczsKKwl9CisKKwljcCA9IHN0cmNocihsaW5lLCAnXG4nKTsKKwlpZiAoY3ApIHsKKwkgICAgKmNwID0gJ1wwJzsKKwkgICAgaWYgKGNwID09IGxpbmUpCisJCWNvbnRpbnVlOworCX0KKwkodm9pZCkgc2lnbmFsKFNJR0NPTlQsIHNpZ19jb250KTsKKwlpZiAoaW5mby0+YWRkX2hpc3RvcnkpCisJCSgqaW5mby0+YWRkX2hpc3RvcnkpKGxpbmUpOworCisJY29kZSA9IHNzX2V4ZWN1dGVfbGluZSAoc2NpX2lkeCwgbGluZSk7CisJaWYgKGNvZGUgPT0gU1NfRVRfQ09NTUFORF9OT1RfRk9VTkQpIHsKKwkgICAgcmVnaXN0ZXIgY2hhciAqYyA9IGxpbmU7CisJICAgIHdoaWxlICgqYyA9PSAnICcgfHwgKmMgPT0gJ1x0JykKKwkJYysrOworCSAgICBjcCA9IHN0cmNociAoYywgJyAnKTsKKwkgICAgaWYgKGNwKQorCQkqY3AgPSAnXDAnOworCSAgICBjcCA9IHN0cmNociAoYywgJ1x0Jyk7CisJICAgIGlmIChjcCkKKwkJKmNwID0gJ1wwJzsKKwkgICAgc3NfZXJyb3IgKHNjaV9pZHgsIDAsCisJCSAgICAiVW5rbm93biByZXF1ZXN0IFwiJXNcIi4gIFR5cGUgXCI/XCIgZm9yIGEgcmVxdWVzdCBsaXN0LiIsCisJCSAgICAgICBjKTsKKwl9CisJaWYgKGluZm8tPnJlYWRsaW5lKQorCQlmcmVlKGxpbmUpOworICAgIH0KKyAgICBjb2RlID0gMDsKK2VncmVzczoKKyAgICAodm9pZCkgc2lnbmFsKFNJR0lOVCwgc2lnX2ludCk7CisgICAgbWVtY3B5KGxpc3Rlbl9qbXBiLCBvbGRfam1wYiwgc2l6ZW9mKGptcF9idWYpKTsKKyAgICBjdXJyZW50X2luZm8gPSBvbGRfaW5mbzsKKyAgICByZXR1cm4gY29kZTsKK30KKwordm9pZCBzc19hYm9ydF9zdWJzeXN0ZW0oaW50IHNjaV9pZHgsIGludCBjb2RlKQoreworICAgIHNzX2luZm8oc2NpX2lkeCktPmFib3J0ID0gMTsKKyAgICBzc19pbmZvKHNjaV9pZHgpLT5leGl0X3N0YXR1cyA9IGNvZGU7CisKK30KKwordm9pZCBzc19xdWl0KGludCBhcmdjIF9fU1NfQVRUUigodW51c2VkKSksCisJICAgICBjb25zdCBjaGFyICogY29uc3QgKmFyZ3YgX19TU19BVFRSKCh1bnVzZWQpKSwKKwkgICAgIGludCBzY2lfaWR4LCBwb2ludGVyIGluZm9wIF9fU1NfQVRUUigodW51c2VkKSkpCit7CisgICAgc3NfYWJvcnRfc3Vic3lzdGVtKHNjaV9pZHgsIDApOworfQorCisjaWZkZWYgSEFWRV9ETE9QRU4KKyNkZWZpbmUgZ2V0X3JlcXVlc3QodGJsLGlkeCkgICAgKCh0YmwpIC0+IHJlcXVlc3RzICsgKGlkeCkpCisKK3N0YXRpYyBjaGFyICpjbWRfZ2VuZXJhdG9yKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGF0ZSkKK3sKKwlzdGF0aWMgaW50CWxlbjsKKwlzdGF0aWMgc3NfcmVxdWVzdF90YWJsZSAqKnJxdGJsOworCXN0YXRpYyBpbnQJY3Vycl9ycXQ7CisJc3RhdGljIGNoYXIgY29uc3QgKiBjb25zdCAqIG5hbWU7CisJc3NfcmVxdWVzdF9lbnRyeSAqcmVxdWVzdDsKKwljaGFyCQkqcmV0OworCisJaWYgKHN0YXRlID09IDApIHsKKwkJbGVuID0gc3RybGVuKHRleHQpOworCQlycXRibCA9IGN1cnJlbnRfaW5mby0+cnF0X3RhYmxlczsKKwkJaWYgKCFycXRibCB8fCAhKnJxdGJsKQorCQkJcmV0dXJuIDA7CisJCWN1cnJfcnF0ID0gMDsKKwkJbmFtZSA9IDA7CisJfQorCisJd2hpbGUgKDEpIHsKKwkJaWYgKCFuYW1lIHx8ICEqbmFtZSkgeworCQkJcmVxdWVzdCA9IGdldF9yZXF1ZXN0KCpycXRibCwgY3Vycl9ycXQrKyk7CisJCQluYW1lID0gcmVxdWVzdC0+Y29tbWFuZF9uYW1lczsKKwkJCWlmICghbmFtZSkgeworCQkJCXJxdGJsKys7CisJCQkJaWYgKCpycXRibCkgeworCQkJCQljdXJyX3JxdCA9IDA7CisJCQkJCWNvbnRpbnVlOworCQkJCX0gZWxzZQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAoc3RybmNtcCgqbmFtZSwgdGV4dCwgbGVuKSA9PSAwKSB7CisJCQlyZXQgPSBtYWxsb2Moc3RybGVuKCpuYW1lKSsxKTsKKwkJCWlmIChyZXQpCisJCQkJc3RyY3B5KHJldCwgKm5hbWUpOworCQkJbmFtZSsrOworCQkJcmV0dXJuIHJldDsKKwkJfQorCQluYW1lKys7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2NoYXIgKipzc19ybF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBzdGFydCwKKwkJCWludCBlbmQgX19TU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlpZiAoKHN0YXJ0ID09IDApICYmIGN1cnJlbnRfaW5mby0+cmxfY29tcGxldGlvbl9tYXRjaGVzKQorCQlyZXR1cm4gKCpjdXJyZW50X2luZm8tPnJsX2NvbXBsZXRpb25fbWF0Y2hlcykKKwkJCSh0ZXh0LCBjbWRfZ2VuZXJhdG9yKTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL21pdC1zaXBiLWNvcHlyaWdodC5oIGIvZTJmc3Byb2dzL2xpYi9zcy9taXQtc2lwYi1jb3B5cmlnaHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmNmYzM4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9taXQtc2lwYi1jb3B5cmlnaHQuaApAQCAtMCwwICsxLDE5IEBACisvKgorCitDb3B5cmlnaHQgMTk4NyBieSB0aGUgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCisJb2YgdGhlIE1hc3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKKworUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMKK2hlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlCithcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQKK3RoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwKK2FuZCB0aGF0IHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlCit1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbgorb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4KK00uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dAordGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMKK3Byb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisKKyovCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvbWtfY21kcy4xIGIvZTJmc3Byb2dzL2xpYi9zcy9ta19jbWRzLjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE2ZTQ4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvbWtfY21kcy4xCkBAIC0wLDAgKzEsNTkgQEAKKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDMgVGhlb2RvcmUgVHMnbworLlwiCisuVEggTUtfQ01EUyAxICIyMDAzIiBFMkZTUFJPR1MKKy5TSCBOQU1FCitta19jbWRzIFwtIGVycm9yIHRhYmxlIGNvbXBpbGVyCisuU0ggU1lOT1BTSVMKKy5CIG1rX2NtZHMKK2ZpbGUKKy5TSCBERVNDUklQVElPTgorLkIgTWtfY21kcworY29udmVydHMgYSB0YWJsZSBsaXN0aW5nIGNvbW1hbmQgbmFtZXMgYW5kIGFzc29jaWF0ZWQgaGVscCBtZXNzYWdlcworaW50byBhIEMgc291cmNlIGZpbGUgc3VpdGFibGUgZm9yIHVzZSB3aXRoIHRoZQorLklSIHNzICgzKQorbGlicmFyeS4KKworVGhlIHNvdXJjZSBmaWxlIG5hbWUgbXVzdCBlbmQgd2l0aCBhIHN1ZmZpeCBvZiBgYC5jdCcnOyB0aGUgZmlsZQorY29uc2lzdHMgb2YgYSBkZWNsYXJhdGlvbiBzdXBwbHlpbmcgdGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQgdGFibGU6CisKKy5CIGNvbW1hbmRfdGFibGUKKy5JIG5hbWUKKworZm9sbG93ZWQgYnkgZW50cmllcyBvZiB0aGUgZm9ybToKKworWworLkIgcmVxdWVzdAorfAorLkIgdW5pbXBsZW1lbnRlZAorXSAKKy5JIG5hbWUsCisiCisuSSBzdHJpbmcKKyJbLCBhYmJyZXZdLi4uOworCithbmQgYSBmaW5hbAorCisuQiBlbmQKKwordG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgdGFibGUuCisKK0EgQyBzb3VyY2UgZmlsZSBpcyBnZW5lcmF0ZWQgd2hpY2ggc2hvdWxkIGJlIGNvbXBpbGVkIGFuZCBsaW5rZWQKK3dpdGggdGhlIG9iamVjdCBmaWxlcyB1c2UgdGhlIHNzIGxpYnJhcnkuICAgCisKK0EgYGAjJycgaW4gdGhlIHNvdXJjZSBmaWxlIGlzIHRyZWF0ZWQgYXMgYSBjb21tZW50IGNoYXJhY3RlciwgYW5kIGFsbAorcmVtYWluaW5nIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgc291cmNlIGxpbmUgd2lsbCBiZSBpZ25vcmVkLgorCisuU0ggQlVHUworCitTaW5jZSB0aGUgb3JpZ2luYWwKKy5CIG1rX2NtZHMKK3VzZXMgYSB2ZXJ5IHNpbXBsZSBwYXJzZXIgYmFzZWQgb24KKy5JUiB5YWNjICgxKSwgCithbmQgdGhpcyBjdXJyZW50IHZlcnNpb24gb2YgCisuQiBta19jbWRzCit1c2VzIGFuIGF3ay9zZWQgY29tYmluYXRpb24gb2Ygc2NyaXB0cywgCitpdHMgZXJyb3IgcmVjb3ZlcnkgbGVhdmVzIG11Y2ggdG8gYmUgZGVzaXJlZC4KKworLlNIICJTRUUgQUxTTyIKK3NzICgzKQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL21rX2NtZHMuc2guaW4gYi9lMmZzcHJvZ3MvbGliL3NzL21rX2NtZHMuc2guaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFiYzE5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvbWtfY21kcy5zaC5pbgpAQCAtMCwwICsxLDU3IEBACisjIS9iaW4vc2gKKyMKKyMKKworZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAorRElSPUBkYXRhZGlyQC9zcworQVdLPUBBV0tACitTRUQ9QFNFREAKKworZm9yIGFzX3ZhciBpbiBcCisgIExBTkcgTEFOR1VBR0UgTENfQUREUkVTUyBMQ19BTEwgTENfQ09MTEFURSBMQ19DVFlQRSBMQ19JREVOVElGSUNBVElPTiBcCisgIExDX01FQVNVUkVNRU5UIExDX01FU1NBR0VTIExDX01PTkVUQVJZIExDX05BTUUgTENfTlVNRVJJQyBMQ19QQVBFUiBcCisgIExDX1RFTEVQSE9ORSBMQ19USU1FCitkbworICBpZiAoc2V0ICt4OyB0ZXN0IC16ICJgKGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcikgMj4mMWAiKTsgdGhlbgorICAgIGV2YWwgJGFzX3Zhcj1DOyBleHBvcnQgJGFzX3ZhcgorICBlbHNlCisgICAgJGFzX3Vuc2V0ICRhc192YXIKKyAgZmkKK2RvbmUKKworaWYgdGVzdCAieCQxIiA9IHggOyB0aGVuCisgICAgZWNobyAiVXNhZ2U6IG1rX2NtZHMgZmlsZSIKKyAgICBleGl0IDEKK2ZpCisKK2lmIHRlc3QgLW4gIiRfU1NfRElSX09WRVJSSURFIiA7IHRoZW4KKyAgICBESVI9IiRfU1NfRElSX09WRVJSSURFIjsKK2ZpCisKK2lmIHRlc3QgISAtZiAkRElSL2N0X2Muc2VkIHx8IHRlc3QgISAtZiAkRElSL2N0X2MuYXdrIDsgdGhlbgorICAgIGVjaG8gIm1rX2NtZHM6IENvdWxkbid0IGZpbmQgbWtfY21kcydzIHRlbXBsYXRlIGZpbGVzLiIKKyAgICBleGl0IDEKK2ZpCisKK0ZJTEU9IiQxIgorUk9PVD1gZWNobyAkMSB8IHNlZCAtZSBzLy5jdCQvL2AKK0JBU0U9YGJhc2VuYW1lICIkUk9PVCJgCitUTVA9ImN0JCQuYyIKKworaWYgdGVzdCAhIC1mICIkRklMRSIgOyB0aGVuCisgICAgZWNobyAibWtfY21kczogJEZJTEU6IEZpbGUgbm90IGZvdW5kIgorICAgIGV4aXQgMTsKK2ZpCisKKyR7U0VEfSAtZiAiJHtESVJ9L2N0X2Muc2VkIiAgIiR7RklMRX0iIFwKKwl8ICR7QVdLfSAtZiAiJHtESVJ9L2N0X2MuYXdrIiAicm9vdG5hbWU9JHtST09UfSIgIm91dGZpbGU9JHtUTVB9IiAtCisKK2lmIGdyZXAgIl4jX19FUlJPUl9JTl9GSUxFIiAiJHtUTVB9IiA+IC9kZXYvbnVsbDsgdGhlbgorCXJtICIke1RNUH0iCisJZXhpdCAxCitlbHNlCisJcm0gLWYgIiR7QkFTRX0uYyIKKwltdiAtZiAiJHtUTVB9IiAiJHtCQVNFfS5jIgorCWNobW9kIGEtdyAiJHtCQVNFfS5jIgorCWV4aXQgMAorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvcGFnZXIuYyBiL2UyZnNwcm9ncy9saWIvc3MvcGFnZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWI4ODk5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9wYWdlci5jCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogUGFnZXI6IFJvdXRpbmVzIHRvIGNyZWF0ZSBhICJtb3JlIiBydW5uaW5nIG91dCBvZiBhIHBhcnRpY3VsYXIgZmlsZQorICogZGVzY3JpcHRvci4KKyAqCisgKiBDb3B5cmlnaHQgMTk4NywgMTk4OCBieSBNSVQgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZWxzZQorZXh0ZXJuIGludCBlcnJubzsKKyNlbmRpZgorCisjaW5jbHVkZSAic3NfaW50ZXJuYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaWZkZWYgSEFWRV9TWVNfUFJDVExfSAorI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorI2Vsc2UKKyNkZWZpbmUgUFJfR0VUX0RVTVBBQkxFIDMKKyNlbmRpZgorI2lmICghZGVmaW5lZChIQVZFX1BSQ1RMKSAmJiBkZWZpbmVkKGxpbnV4KSkKKyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorI2VuZGlmCisKK3N0YXRpYyBjaGFyIE1PUkVbXSA9ICJtb3JlIjsKK2V4dGVybiBjaGFyICpnZXRlbnYgUFJPVE9UWVBFKChjb25zdCBjaGFyICopKTsKKworY2hhciAqc3Nfc2FmZV9nZXRlbnYoY29uc3QgY2hhciAqYXJnKQoreworCWlmICgoZ2V0dWlkKCkgIT0gZ2V0ZXVpZCgpKSB8fCAoZ2V0Z2lkKCkgIT0gZ2V0ZWdpZCgpKSkKKwkJcmV0dXJuIE5VTEw7CisjaWYgSEFWRV9QUkNUTAorCWlmIChwcmN0bChQUl9HRVRfRFVNUEFCTEUsIDAsIDAsIDAsIDApID09IDApCisJCXJldHVybiBOVUxMOworI2Vsc2UKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChTWVNfcHJjdGwpKQorCWlmIChzeXNjYWxsKFNZU19wcmN0bCwgUFJfR0VUX0RVTVBBQkxFLCAwLCAwLCAwLCAwKSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gc2VjdXJlX2dldGVudihhcmcpOworI2VsaWYgZGVmaW5lZChIQVZFX19fU0VDVVJFX0dFVEVOVikKKwlyZXR1cm4gX19zZWN1cmVfZ2V0ZW52KGFyZyk7CisjZWxzZQorCXJldHVybiBnZXRlbnYoYXJnKTsKKyNlbmRpZgorfQorCisvKgorICogdGhpcyBuZWVkcyBhICpsb3QqIG9mIHdvcmsuLi4uCisgKgorICogcnVuIGluIHNhbWUgcHJvY2VzcworICogaGFuZGxlIFNJR0lOVCBzZW5zaWJseQorICogYWxsb3cgZmluZXIgY29udHJvbCAtLSBwdXQtcGFnZS1icmVhay1oZXJlCisgKi8KKworI2lmbmRlZiBOT19GT1JLCitpbnQgc3NfcGFnZXJfY3JlYXRlKHZvaWQpCit7CisJaW50IGZpbGVkZXNbMl07CisKKwlpZiAocGlwZShmaWxlZGVzKSAhPSAwKQorCQlyZXR1cm4oLTEpOworCisJc3dpdGNoKGZvcmsoKSkgeworCWNhc2UgLTE6CisJCXJldHVybigtMSk7CisJY2FzZSAwOgorCQkvKgorCQkgKiBDaGlsZDsgZHVwIHJlYWQgaGFsZiB0byAwLCBjbG9zZSBhbGwgYnV0IDAsIDEsIGFuZCAyCisJCSAqLworCQlpZiAoZHVwMihmaWxlZGVzWzBdLCAwKSA9PSAtMSkKKwkJCWV4aXQoMSk7CisJCXNzX3BhZ2Vfc3RkaW4oKTsKKwlkZWZhdWx0OgorCQkvKgorCQkgKiBQYXJlbnQ6ICBjbG9zZSAicmVhZCIgc2lkZSBvZiBwaXBlLCByZXR1cm4KKwkJICogIndyaXRlIiBzaWRlLgorCQkgKi8KKwkJKHZvaWQpIGNsb3NlKGZpbGVkZXNbMF0pOworCQlyZXR1cm4oZmlsZWRlc1sxXSk7CisJfQorfQorI2Vsc2UgLyogZG9uJ3QgZm9yayAqLworaW50IHNzX3BhZ2VyX2NyZWF0ZSgpCit7CisgICAgaW50IGZkOworICAgIGZkID0gb3BlbigiL2Rldi90dHkiLCBPX1dST05MWSwgMCk7CisgICAgcmV0dXJuIGZkOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQgd3JpdGVfYWxsKGludCBmZCwgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3NpemVfdCByZXQ7CisJaW50IGMgPSAwOworCisJd2hpbGUgKGNvdW50ID4gMCkgeworCQlyZXQgPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVJTlRSKSkKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQljb3VudCAtPSByZXQ7CisJCWJ1ZiArPSByZXQ7CisJCWMgKz0gcmV0OworCX0KKwlyZXR1cm4gYzsKK30KKwordm9pZCBzc19wYWdlX3N0ZGluKHZvaWQpCit7CisJaW50IGk7CisJc2lnc2V0X3QgbWFzazsKKworCWZvciAoaSA9IDM7IGkgPCAzMjsgaSsrKQorCQkodm9pZCkgY2xvc2UoaSk7CisJKHZvaWQpIHNpZ25hbChTSUdJTlQsIFNJR19ERkwpOworCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgMCwgJm1hc2spOworCXNpZ2RlbHNldCgmbWFzaywgU0lHSU5UKTsKKwlzaWdwcm9jbWFzayhTSUdfU0VUTUFTSywgJm1hc2ssIDApOworCWlmIChfc3NfcGFnZXJfbmFtZSA9PSAoY2hhciAqKU5VTEwpIHsKKwkJaWYgKChfc3NfcGFnZXJfbmFtZSA9IHNzX3NhZmVfZ2V0ZW52KCJQQUdFUiIpKSA9PSAoY2hhciAqKU5VTEwpCisJCQlfc3NfcGFnZXJfbmFtZSA9IE1PUkU7CisJfQorCSh2b2lkKSBleGVjbHAoX3NzX3BhZ2VyX25hbWUsIF9zc19wYWdlcl9uYW1lLCAoY2hhciAqKSBOVUxMKTsKKwl7CisJCS8qIG1pbmltYWwgcmVjb3ZlcnkgaWYgcGFnZXIgcHJvZ3JhbSBpc24ndCBmb3VuZCAqLworCQljaGFyIGJ1Zls4MF07CisJCXJlZ2lzdGVyIGludCBuOworCQl3aGlsZSAoKG4gPSByZWFkKDAsIGJ1ZiwgODApKSA+IDApCisJCQl3cml0ZV9hbGwoMSwgYnVmLCBuKTsKKwl9CisJZXhpdChlcnJubyk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3BhcnNlLmMgYi9lMmZzcHJvZ3MvbGliL3NzL3BhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M2YzY3OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvcGFyc2UuYwpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFTX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorCitlbnVtIHBhcnNlX21vZGUgeyBXSElURVNQQUNFLCBUT0tFTiwgUVVPVEVEX1NUUklORyB9OworCisvKgorICogcGFyc2UobGluZV9wdHIsIGFyZ2NfcHRyKQorICoKKyAqIEZ1bmN0aW9uOgorICogICAgICBQYXJzZXMgbGluZSwgZGl2aWRpbmcgYXQgd2hpdGVzcGFjZSwgaW50byB0b2tlbnMsIHJldHVybnMKKyAqICAgICAgdGhlICJhcmdjIiBhbmQgImFyZ3YiIHZhbHVlcy4KKyAqIEFyZ3VtZW50czoKKyAqICAgICAgbGluZV9wdHIgKGNoYXIgKikKKyAqICAgICAgICAgICAgICBQb2ludGVyIHRvIHRleHQgc3RyaW5nIHRvIGJlIHBhcnNlZC4KKyAqICAgICAgYXJnY19wdHIgKGludCAqKQorICogICAgICAgICAgICAgIFdoZXJlIHRvIHB1dCB0aGUgImFyZ2MiIChudW1iZXIgb2YgdG9rZW5zKSB2YWx1ZS4KKyAqIFJldHVybnM6CisgKiAgICAgIGFyZ3YgKGNoYXIgKiopCisgKiAgICAgICAgICAgICAgU2VyaWVzIG9mIHBvaW50ZXJzIHRvIHBhcnNlZCB0b2tlbnMuCisgKi8KKworI2RlZmluZSBORVdfQVJHVihvbGQsbikgKGNoYXIgKiopcmVhbGxvYygoY2hhciAqKW9sZCxcCisJCQkJCSAodW5zaWduZWQpKG4rMikqc2l6ZW9mKGNoYXIqKSkKKworY2hhciAqKnNzX3BhcnNlKGludCBzY2lfaWR4LCByZWdpc3RlciBjaGFyICpsaW5lX3B0ciwgaW50ICphcmdjX3B0cikKK3sKKyAgICByZWdpc3RlciBjaGFyICoqYXJndiwgKipuZXdfYXJndiwgKmNwOworICAgIHJlZ2lzdGVyIGludCBhcmdjOworICAgIHJlZ2lzdGVyIGVudW0gcGFyc2VfbW9kZSBwYXJzZV9tb2RlOworCisgICAgYXJndiA9IChjaGFyICoqKSBtYWxsb2MgKHNpemVvZihjaGFyICopKTsKKyAgICBpZiAoYXJndiA9PSAoY2hhciAqKilOVUxMKSB7CisJc3NfZXJyb3Ioc2NpX2lkeCwgZXJybm8sICJDYW4ndCBhbGxvY2F0ZSBzdG9yYWdlIik7CisJKmFyZ2NfcHRyID0gMDsKKwlyZXR1cm4oYXJndik7CisgICAgfQorICAgICphcmd2ID0gKGNoYXIgKilOVUxMOworCisgICAgYXJnYyA9IDA7CisKKyAgICBwYXJzZV9tb2RlID0gV0hJVEVTUEFDRTsJLyogZmx1c2hpbmcgd2hpdGVzcGFjZSAqLworICAgIGNwID0gbGluZV9wdHI7CQkvKiBjcCBpcyBmb3Igb3V0cHV0ICovCisgICAgd2hpbGUgKDEpIHsKKyNpZmRlZiBERUJVRworCXsKKwkgICAgcHJpbnRmICgiY2hhcmFjdGVyIGAlYycsIG1vZGUgJWRcbiIsICpsaW5lX3B0ciwgcGFyc2VfbW9kZSk7CisJfQorI2VuZGlmCisJd2hpbGUgKHBhcnNlX21vZGUgPT0gV0hJVEVTUEFDRSkgeworCSAgICBpZiAoKmxpbmVfcHRyID09ICdcMCcpCisJCWdvdG8gZW5kX29mX2xpbmU7CisJICAgIGlmICgqbGluZV9wdHIgPT0gJyAnIHx8ICpsaW5lX3B0ciA9PSAnXHQnKSB7CisJCWxpbmVfcHRyKys7CisJCWNvbnRpbnVlOworCSAgICB9CisJICAgIGlmICgqbGluZV9wdHIgPT0gJyInKSB7CisJCS8qIGdvIHRvIHF1b3RlZC1zdHJpbmcgbW9kZSAqLworCQlwYXJzZV9tb2RlID0gUVVPVEVEX1NUUklORzsKKwkJY3AgPSBsaW5lX3B0cisrOworCQluZXdfYXJndiA9IE5FV19BUkdWIChhcmd2LCBhcmdjKTsKKwkJaWYgKG5ld19hcmd2ID09IE5VTEwpIHsKKwkJCWZyZWUoYXJndik7CisJCQkqYXJnY19wdHIgPSAwOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwkJYXJndiA9IG5ld19hcmd2OworCQlhcmd2W2FyZ2MrK10gPSBjcDsKKwkJYXJndlthcmdjXSA9IE5VTEw7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCS8qIHJhbmRvbS10b2tlbiBtb2RlICovCisJCXBhcnNlX21vZGUgPSBUT0tFTjsKKwkJY3AgPSBsaW5lX3B0cjsKKwkJbmV3X2FyZ3YgPSBORVdfQVJHViAoYXJndiwgYXJnYyk7CisJCWlmIChuZXdfYXJndiA9PSBOVUxMKSB7CisJCQlmcmVlKGFyZ3YpOworCQkJKmFyZ2NfcHRyID0gMDsKKwkJCXJldHVybiBOVUxMOworCQl9CisJCWFyZ3YgPSBuZXdfYXJndjsKKwkJYXJndlthcmdjKytdID0gbGluZV9wdHI7CisJCWFyZ3ZbYXJnY10gPSBOVUxMOworCSAgICB9CisJfQorCXdoaWxlIChwYXJzZV9tb2RlID09IFRPS0VOKSB7CisJICAgIGlmICgqbGluZV9wdHIgPT0gJ1wwJykgeworCQkqY3ArKyA9ICdcMCc7CisJCWdvdG8gZW5kX29mX2xpbmU7CisJICAgIH0KKwkgICAgZWxzZSBpZiAoKmxpbmVfcHRyID09ICcgJyB8fCAqbGluZV9wdHIgPT0gJ1x0JykgeworCQkqY3ArKyA9ICdcMCc7CisJCWxpbmVfcHRyKys7CisJCXBhcnNlX21vZGUgPSBXSElURVNQQUNFOworCSAgICB9CisJICAgIGVsc2UgaWYgKCpsaW5lX3B0ciA9PSAnIicpIHsKKwkJbGluZV9wdHIrKzsKKwkJcGFyc2VfbW9kZSA9IFFVT1RFRF9TVFJJTkc7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCSpjcCsrID0gKmxpbmVfcHRyKys7CisJICAgIH0KKwl9CisJd2hpbGUgKHBhcnNlX21vZGUgPT0gUVVPVEVEX1NUUklORykgeworCSAgICBpZiAoKmxpbmVfcHRyID09ICdcMCcpIHsKKwkJc3NfZXJyb3IgKHNjaV9pZHgsIDAsCisJCQkgICJVbmJhbGFuY2VkIHF1b3RlcyBpbiBjb21tYW5kIGxpbmUiKTsKKwkJZnJlZSAoYXJndik7CisJCSphcmdjX3B0ciA9IDA7CisJCXJldHVybiBOVUxMOworCSAgICB9CisJICAgIGVsc2UgaWYgKCpsaW5lX3B0ciA9PSAnIicpIHsKKwkJaWYgKCorK2xpbmVfcHRyID09ICciJykgeworCQkgICAgKmNwKysgPSAnIic7CisJCSAgICBsaW5lX3B0cisrOworCQl9CisJCWVsc2UgeworCQkgICAgcGFyc2VfbW9kZSA9IFRPS0VOOworCQl9CisJICAgIH0KKwkgICAgZWxzZSB7CisJCSpjcCsrID0gKmxpbmVfcHRyKys7CisJICAgIH0KKwl9CisgICAgfQorZW5kX29mX2xpbmU6CisgICAgKmFyZ2NfcHRyID0gYXJnYzsKKyNpZmRlZiBERUJVRworICAgIHsKKwlpbnQgaTsKKwlwcmludGYgKCJhcmdjID0gJWRcbiIsIGFyZ2MpOworCWZvciAoaSA9IDA7IGkgPD0gYXJnYzsgaSsrKQorCSAgICBwcmludGYgKCJcdGFyZ3ZbJTJkXSA9IGAlcydcbiIsIGksCisJCSAgICBhcmd2W2ldID8gYXJndltpXSA6ICI8TlVMTD4iKTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4oYXJndik7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3Byb21wdC5jIGIvZTJmc3Byb2dzL2xpYi9zcy9wcm9tcHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTZjMmEwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9wcm9tcHQuYwpAQCAtMCwwICsxLDMxIEBACisvKgorICogcHJvbXB0LmM6IFJvdXRpbmVzIGZvciByZXRyaWV2aW5nIGFuZCBzZXR0aW5nIGEgcHJvbXB0LgorICoKKyAqICRIZWFkZXIkCisgKiAkTG9ja2VyJAorICoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJzc19pbnRlcm5hbC5oIgorCit2b2lkIHNzX3NldF9wcm9tcHQoaW50IHNjaV9pZHgsIGNoYXIgKm5ld19wcm9tcHQpCit7CisgICAgIHNzX2luZm8oc2NpX2lkeCktPnByb21wdCA9IG5ld19wcm9tcHQ7Cit9CisKK2NoYXIgKnNzX2dldF9wcm9tcHQoaW50IHNjaV9pZHgpCit7CisgICAgIHJldHVybihzc19pbmZvKHNjaV9pZHgpLT5wcm9tcHQpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zcy9yZXF1ZXN0X3RibC5jIGIvZTJmc3Byb2dzL2xpYi9zcy9yZXF1ZXN0X3RibC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNWNiMjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL3JlcXVlc3RfdGJsLmMKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSAic3NfaW50ZXJuYWwuaCIKKworI2RlZmluZSBzc3J0IHNzX3JlcXVlc3RfdGFibGUJLyogZm9yIHNvbWUgcmVhZGFibGUgY29kZS4uLiAqLworCit2b2lkIHNzX2FkZF9yZXF1ZXN0X3RhYmxlKGludCBzY2lfaWR4LCBzc3J0ICpycXRibF9wdHIsIGludCBwb3NpdGlvbiwgaW50ICpjb2RlX3B0cikKK3sKKwlyZWdpc3RlciBzc19kYXRhICppbmZvOworCXJlZ2lzdGVyIGludCBpLCBzaXplOworCXNzcnQgKip0OworCisJaW5mbyA9IHNzX2luZm8oc2NpX2lkeCk7CisJZm9yIChzaXplPTA7IGluZm8tPnJxdF90YWJsZXNbc2l6ZV0gIT0gKHNzcnQgKilOVUxMOyBzaXplKyspCisJCTsKKwkvKiBzaXplID09IEMgc3Vic2NyaXB0IG9mIE5VTEwgPT0gI2VsZW1lbnRzICovCisJc2l6ZSArPSAyOwkJLyogbmV3IGVsZW1lbnQsIGFuZCBOVUxMICovCisJdCA9IChzc3J0ICoqKXJlYWxsb2MoaW5mby0+cnF0X3RhYmxlcywgKHVuc2lnbmVkKXNpemUqc2l6ZW9mKHNzcnQgKikpOworCWlmICh0ID09IChzc3J0ICoqKU5VTEwpIHsKKwkJKmNvZGVfcHRyID0gZXJybm87CisJCXJldHVybjsKKwl9CisJaW5mby0+cnF0X3RhYmxlcyA9IHQ7CisJaWYgKHBvc2l0aW9uID4gc2l6ZSAtIDIpCisJCXBvc2l0aW9uID0gc2l6ZSAtIDI7CisKKwlpZiAoc2l6ZSA+IDEpCisJCWZvciAoaSA9IHNpemUgLSAyOyBpID49IHBvc2l0aW9uOyBpLS0pCisJCQlpbmZvLT5ycXRfdGFibGVzW2krMV0gPSBpbmZvLT5ycXRfdGFibGVzW2ldOworCisJaW5mby0+cnF0X3RhYmxlc1twb3NpdGlvbl0gPSBycXRibF9wdHI7CisJaW5mby0+cnF0X3RhYmxlc1tzaXplLTFdID0gKHNzcnQgKilOVUxMOworCSpjb2RlX3B0ciA9IDA7Cit9CisKK3ZvaWQgc3NfZGVsZXRlX3JlcXVlc3RfdGFibGUoaW50IHNjaV9pZHgsIHNzcnQgKnJxdGJsX3B0ciwgaW50ICpjb2RlX3B0cikKK3sKKyAgICAgcmVnaXN0ZXIgc3NfZGF0YSAqaW5mbzsKKyAgICAgcmVnaXN0ZXIgc3NydCAqKnJ0MSwgKipydDI7CisKKyAgICAgKmNvZGVfcHRyID0gU1NfRVRfVEFCTEVfTk9UX0ZPVU5EOworICAgICBpbmZvID0gc3NfaW5mbyhzY2lfaWR4KTsKKyAgICAgcnQxID0gaW5mby0+cnF0X3RhYmxlczsKKyAgICAgZm9yIChydDIgPSBydDE7ICpydDE7IHJ0MSsrKSB7CisJICBpZiAoKnJ0MSAhPSBycXRibF9wdHIpIHsKKwkgICAgICAgKnJ0MisrID0gKnJ0MTsKKwkgICAgICAgKmNvZGVfcHRyID0gMDsKKwkgIH0KKyAgICAgfQorICAgICAqcnQyID0gKHNzcnQgKilOVUxMOworICAgICByZXR1cm47Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3JlcXVlc3RzLmMgYi9lMmZzcHJvZ3MvbGliL3NzL3JlcXVlc3RzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNjZTVkMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3MvcmVxdWVzdHMuYwpAQCAtMCwwICsxLDY2IEBACisvKgorICogVmFyaW91cyBtaW5vciByb3V0aW5lcy4uLgorICoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4LCAxOTg5IGJ5IE1JVAorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kCisgKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBuYW1lcyBvZiBNLkkuVC4gYW5kIHRoZSBNLkkuVC4gUy5JLlAuQi4gbm90IGJlIHVzZWQgaW4KKyAqIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUKKyAqIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBhbmQgdGhlCisgKiBNLkkuVC4gUy5JLlAuQi4gbWFrZSBubyByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mCisgKiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dAorICogZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgInNzX2ludGVybmFsLmgiCisKKyNkZWZpbmUJREVDTEFSRShuYW1lKSB2b2lkIG5hbWUoaW50IGFyZ2MsY29uc3QgY2hhciAqIGNvbnN0ICphcmd2LCBcCisJCQkJaW50IHNjaV9pZHgsIHZvaWQgKmluZm9wKQorCisvKgorICogc3Nfc2VsZl9pZGVudGlmeSAtLSBhc3NpZ25lZCBieSBkZWZhdWx0IHRvIHRoZSAiLiIgcmVxdWVzdAorICovCit2b2lkIHNzX3NlbGZfaWRlbnRpZnkoaW50IGFyZ2MgX19TU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2IF9fU1NfQVRUUigodW51c2VkKSksCisJCSAgICAgIGludCBzY2lfaWR4LCB2b2lkICppbmZvcCBfX1NTX0FUVFIoKHVudXNlZCkpKQoreworICAgICByZWdpc3RlciBzc19kYXRhICppbmZvID0gc3NfaW5mbyhzY2lfaWR4KTsKKyAgICAgcHJpbnRmKCIlcyB2ZXJzaW9uICVzXG4iLCBpbmZvLT5zdWJzeXN0ZW1fbmFtZSwKKwkgICAgaW5mby0+c3Vic3lzdGVtX3ZlcnNpb24pOworfQorCisvKgorICogc3Nfc3Vic3lzdGVtX25hbWUgLS0gcHJpbnQgbmFtZSBvZiBzdWJzeXN0ZW0KKyAqLwordm9pZCBzc19zdWJzeXN0ZW1fbmFtZShpbnQgYXJnYyBfX1NTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2IF9fU1NfQVRUUigodW51c2VkKSksCisJCSAgICAgICBpbnQgc2NpX2lkeCwKKwkJICAgICAgIHZvaWQgKmluZm9wIF9fU1NfQVRUUigodW51c2VkKSkpCit7CisgICAgIHByaW50ZigiJXNcbiIsIHNzX2luZm8oc2NpX2lkeCktPnN1YnN5c3RlbV9uYW1lKTsKK30KKworLyoKKyAqIHNzX3N1YnN5c3RlbV92ZXJzaW9uIC0tIHByaW50IHZlcnNpb24gb2Ygc3Vic3lzdGVtCisgKi8KK3ZvaWQgc3Nfc3Vic3lzdGVtX3ZlcnNpb24oaW50IGFyZ2MgX19TU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2IF9fU1NfQVRUUigodW51c2VkKSksCisJCQkgIGludCBzY2lfaWR4LAorCQkJICB2b2lkICppbmZvcCBfX1NTX0FUVFIoKHVudXNlZCkpKQoreworICAgICBwcmludGYoIiVzXG4iLCBzc19pbmZvKHNjaV9pZHgpLT5zdWJzeXN0ZW1fdmVyc2lvbik7Cit9CisKKy8qCisgKiBzc191bmltcGxlbWVudGVkIC0tIHJvdXRpbmUgbm90IGltcGxlbWVudGVkIChzaG91bGQgYmUKKyAqIHNldCB1cCBhcyAoZG9udF9saXN0LGRvbnRfc3VtbWFyaXplKSkKKyAqLwordm9pZCBzc191bmltcGxlbWVudGVkKGludCBhcmdjIF9fU1NfQVRUUigodW51c2VkKSksCisJCSAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqYXJndiBfX1NTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBpbnQgc2NpX2lkeCwgdm9pZCAqaW5mb3AgX19TU19BVFRSKCh1bnVzZWQpKSkKK3sKKyAgICAgc3NfcGVycm9yKHNjaV9pZHgsIFNTX0VUX1VOSU1QTEVNRU5URUQsICIiKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3Mvc3MuaCBiL2UyZnNwcm9ncy9saWIvc3Mvc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzMzZmZjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9zcy5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMTk4NywgMTk4OCBieSBNSVQgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisgKgorICogVGhpcyBxdW90ZSBpcyBqdXN0IHRvbyBnb29kIHRvIG5vdCBwYXNzIG9uOgorICoKKyAqIAkiQlRXLCBJIHdvdWxkIGhhdmUgcmVqZWN0ZWQgdGhlIG5hbWUgU3RvcnkgU2VydmVyIGJlY2F1c2UgaXRzCisgKiAJaW5pdGlhbHMgYXJlIFNTLCB0aGUgbmFtZSBvZiB0aGUgc2VjcmV0IHBvbGljZSBpbiBOYXppCisgKiAJR2VybWFueSwgcHJvYmFibHkgdGhlIG1vc3QgZGVzcGlzZWQgcGFpciBvZiBsZXR0ZXJzIGluIHdlc3Rlcm4KKyAqIAljdWx0dXJlLiIgIC0tLSBodHRwOi8vc2NyaXB0aW5nbmV3c2FyY2hpdmUudXNlcmxhbmQuY29tLzE5OTkvMTIvMTMKKyAqCisgKiBMZXQgbm8gb25lIHNheSBwb2xpdGljYWwgY29ycmVjdG5lc3MgaXNuJ3QgZGVhZC4uLi4KKyAqLworCisjaWZuZGVmIF9zc19oCisjZGVmaW5lIF9zc19oIF9fRklMRV9fCisKKyNpbmNsdWRlIDxzcy9zc19lcnIuaD4KKworI2RlZmluZSBfX1NTX0NPTlNUIGNvbnN0CisjZGVmaW5lIF9fU1NfUFJPVE8gKGludCwgY29uc3QgY2hhciAqIGNvbnN0ICosIGludCwgdm9pZCAqKQorCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgX19TU19BVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIF9fU1NfQVRUUih4KQorI2VuZGlmCisKKwordHlwZWRlZiBfX1NTX0NPTlNUIHN0cnVjdCBfc3NfcmVxdWVzdF9lbnRyeSB7CisgICAgX19TU19DT05TVCBjaGFyICogX19TU19DT05TVCAqY29tbWFuZF9uYW1lczsgLyogd2hhdGV2ZXIgKi8KKyAgICB2b2lkICgqIF9fU1NfQ09OU1QgZnVuY3Rpb24pIF9fU1NfUFJPVE87IC8qIGZvbyAqLworICAgIF9fU1NfQ09OU1QgY2hhciAqIF9fU1NfQ09OU1QgaW5mb19zdHJpbmc7CS8qIE5VTEwgKi8KKyAgICBpbnQgZmxhZ3M7CQkJLyogMCAqLworfSBzc19yZXF1ZXN0X2VudHJ5OworCit0eXBlZGVmIF9fU1NfQ09OU1Qgc3RydWN0IF9zc19yZXF1ZXN0X3RhYmxlIHsKKyAgICBpbnQgdmVyc2lvbjsKKyAgICBzc19yZXF1ZXN0X2VudHJ5ICpyZXF1ZXN0czsKK30gc3NfcmVxdWVzdF90YWJsZTsKKworI2RlZmluZSBTU19SUVRfVEJMX1YyCTIKKwordHlwZWRlZiBzdHJ1Y3QgX3NzX3JwX29wdGlvbnMgewkvKiBERUZBVUxUIFZBTFVFUyAqLworICAgIGludCB2ZXJzaW9uOwkJLyogU1NfUlBfVjEgKi8KKyAgICB2b2lkICgqdW5rbm93bikgX19TU19QUk9UTzsJLyogY2FsbCBmb3IgdW5rbm93biBjb21tYW5kICovCisgICAgaW50IGFsbG93X3N1c3BlbmQ7CisgICAgaW50IGNhdGNoX2ludDsKK30gc3NfcnBfb3B0aW9uczsKKworI2RlZmluZSBTU19SUF9WMSAxCisKKyNkZWZpbmUgU1NfT1BUX0RPTlRfTElTVAkweDAwMDEKKyNkZWZpbmUgU1NfT1BUX0RPTlRfU1VNTUFSSVpFCTB4MDAwMgorCit2b2lkIHNzX2hlbHAgX19TU19QUk9UTzsKKyNpZiAwCitjaGFyICpzc19jdXJyZW50X3JlcXVlc3QoKTsJLyogVGhpcyBpcyBhY3R1YWxseSBhIG1hY3JvICovCisjZW5kaWYKKworY2hhciAqc3NfbmFtZShpbnQgc2NpX2lkeCk7Cit2b2lkIHNzX2Vycm9yIChpbnQsIGxvbmcsIGNoYXIgY29uc3QgKiwgLi4uKQorCV9fU1NfQVRUUigoZm9ybWF0KHByaW50ZiwgMywgNCkpKTsKK3ZvaWQgc3NfcGVycm9yIChpbnQsIGxvbmcsIGNoYXIgY29uc3QgKik7CisKK2ludCBzc19jcmVhdGVfaW52b2NhdGlvbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdm9pZCAqLAorCQkJIHNzX3JlcXVlc3RfdGFibGUgKiwgaW50ICopOwordm9pZCBzc19kZWxldGVfaW52b2NhdGlvbihpbnQpOworaW50IHNzX2xpc3RlbihpbnQpOworaW50IHNzX2V4ZWN1dGVfbGluZShpbnQsIGNoYXIgKik7Cit2b2lkIHNzX2FkZF9yZXF1ZXN0X3RhYmxlKGludCwgc3NfcmVxdWVzdF90YWJsZSAqLCBpbnQsIGludCAqKTsKK3ZvaWQgc3NfZGVsZXRlX3JlcXVlc3RfdGFibGUoaW50LCBzc19yZXF1ZXN0X3RhYmxlICosIGludCAqKTsKK3ZvaWQgc3NfYWJvcnRfc3Vic3lzdGVtKGludCBzY2lfaWR4LCBpbnQgY29kZSk7Cit2b2lkIHNzX3F1aXQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBjb25zdCAqYXJndiwgaW50IHNjaV9pZHgsIHZvaWQgKmluZm9wKTsKK3ZvaWQgc3Nfc2VsZl9pZGVudGlmeShpbnQgYXJnYywgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2LCBpbnQgc2NpX2lkeCwgdm9pZCAqaW5mb3ApOwordm9pZCBzc19zdWJzeXN0ZW1fbmFtZShpbnQgYXJnYywgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2LAorCQkgICAgICAgaW50IHNjaV9pZHgsIHZvaWQgKmluZm9wKTsKK3ZvaWQgc3Nfc3Vic3lzdGVtX3ZlcnNpb24oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBjb25zdCAqYXJndiwKKwkJCSAgaW50IHNjaV9pZHgsIHZvaWQgKmluZm9wKTsKK3ZvaWQgc3NfdW5pbXBsZW1lbnRlZChpbnQgYXJnYywgY29uc3QgY2hhciAqIGNvbnN0ICphcmd2LAorCQkgICAgICBpbnQgc2NpX2lkeCwgdm9pZCAqaW5mb3ApOwordm9pZCBzc19zZXRfcHJvbXB0KGludCBzY2lfaWR4LCBjaGFyICpuZXdfcHJvbXB0KTsKK2NoYXIgKnNzX2dldF9wcm9tcHQoaW50IHNjaV9pZHgpOwordm9pZCBzc19nZXRfcmVhZGxpbmUoaW50IHNjaV9pZHgpOworY2hhciAqc3Nfc2FmZV9nZXRlbnYoY29uc3QgY2hhciAqYXJnKTsKKworZXh0ZXJuIHNzX3JlcXVlc3RfdGFibGUgc3Nfc3RkX3JlcXVlc3RzOworI2VuZGlmIC8qIF9zc19oICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3NzLnBjLmluIGIvZTJmc3Byb2dzL2xpYi9zcy9zcy5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzllY2NiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9zcy5wYy5pbgpAQCAtMCwwICsxLDEyIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKworTmFtZTogc3MKK0Rlc2NyaXB0aW9uOiBTdWJzeXN0ZW0gY29tbWFuZCBwYXJzaW5nIGxpYnJhcnkKK1ZlcnNpb246IEBFMkZTUFJPR1NfVkVSU0lPTkAKK1JlcXVpcmVzLnByaXZhdGU6IGNvbV9lcnIKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9L3NzIC1JJHtpbmNsdWRlZGlyfQorTGliczogLUwke2xpYmRpcn0gLWxzcworTGlicy5wcml2YXRlOiBARExPUEVOX0xJQkAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3Mvc3NfZXJyLmV0IGIvZTJmc3Byb2dzL2xpYi9zcy9zc19lcnIuZXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBlOWRmYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3Mvc3NfZXJyLmV0CkBAIC0wLDAgKzEsMzkgQEAKKwllcnJvcl90YWJsZSBzcworCitlYwlTU19FVF9TVUJTWVNURU1fQUJPUlRFRCwKKwkiU3Vic3lzdGVtIGFib3J0ZWQiCisKK2VjCVNTX0VUX1ZFUlNJT05fTUlTTUFUQ0gsCisJIlZlcnNpb24gbWlzbWF0Y2giCisKK2VjCVNTX0VUX05VTExfSU5WLAorCSJObyBjdXJyZW50IGludm9jYXRpb24iCisKK2VjCVNTX0VUX05PX0lORk9fRElSLAorCSJObyBpbmZvIGRpcmVjdG9yeSIKKworZWMJU1NfRVRfQ09NTUFORF9OT1RfRk9VTkQsCisJIkNvbW1hbmQgbm90IGZvdW5kIgorCitlYwlTU19FVF9MSU5FX0FCT1JURUQsCisJIkNvbW1hbmQgbGluZSBhYm9ydGVkIgorCitlYwlTU19FVF9FT0YsCisJIkVuZC1vZi1maWxlIHJlYWNoZWQiCisKK2VjCVNTX0VUX1BFUk1JU1NJT05fREVOSUVELAorCSJQZXJtaXNzaW9uIGRlbmllZCIKKworZWMJU1NfRVRfVEFCTEVfTk9UX0ZPVU5ELAorCSJSZXF1ZXN0IHRhYmxlIG5vdCBmb3VuZCIKKworZWMJU1NfRVRfTk9fSEVMUF9GSUxFLAorCSJObyBpbmZvIGF2YWlsYWJsZSIKKworZWMJU1NfRVRfRVNDQVBFX0RJU0FCTEVELAorCSJTaGVsbCBlc2NhcGVzIGFyZSBkaXNhYmxlZCIKKworZWMJU1NfRVRfVU5JTVBMRU1FTlRFRCwKKwkiU29ycnksIHRoaXMgcmVxdWVzdCBpcyBub3QgeWV0IGltcGxlbWVudGVkIgorCisJZW5kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3NzX2ludGVybmFsLmggYi9lMmZzcHJvZ3MvbGliL3NzL3NzX2ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhNmJlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3Mvc3NfaW50ZXJuYWwuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHlyaWdodCAxOTg3LCAxOTg4IGJ5IE1JVCBTdHVkZW50IEluZm9ybWF0aW9uIFByb2Nlc3NpbmcgQm9hcmQKKyAqCisgKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAorICogaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgbmFtZXMgb2YgTS5JLlQuIGFuZCB0aGUgTS5JLlQuIFMuSS5QLkIuIG5vdCBiZSB1c2VkIGluCisgKiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlCisgKiB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gYW5kIHRoZQorICogTS5JLlQuIFMuSS5QLkIuIG1ha2Ugbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZgorICogdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQKKyAqIGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KKyAqLworCisjaWZuZGVmIF9zc19zc19pbnRlcm5hbF9oCisjZGVmaW5lIF9zc19zc19pbnRlcm5hbF9oIF9fRklMRV9fCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworI2RlZmluZSBQUk9UT1RZUEUocCkgcAordHlwZWRlZiB2b2lkICogcG9pbnRlcjsKKworI2luY2x1ZGUgInNzLmgiCisKK3R5cGVkZWYgY2hhciBCT09MOworCit0eXBlZGVmIHN0cnVjdCBfc3NfYWJicmV2X2VudHJ5IHsKKyAgICBjaGFyICpuYW1lOwkJCS8qIGFiYnJldiBuYW1lICovCisgICAgY2hhciAqKmFiYnJldjsJCS8qIG5ldyB0b2tlbnMgdG8gaW5zZXJ0ICovCisgICAgdW5zaWduZWQgaW50IGJlZ2lubmluZ19vZl9saW5lIDogMTsKK30gc3NfYWJicmV2X2VudHJ5OworCit0eXBlZGVmIHN0cnVjdCBfc3NfYWJicmV2X2xpc3QgeworICAgIGludCBuX2FiYnJldnM7CisgICAgc3NfYWJicmV2X2VudHJ5ICpmaXJzdF9hYmJyZXY7Cit9IHNzX2FiYnJldl9saXN0OworCit0eXBlZGVmIHN0cnVjdCB7CisvKiAgICBjaGFyICpwYXRoOyAqLworICAgIHNzX2FiYnJldl9saXN0IGFiYnJldnNbMTI3XTsKK30gc3NfYWJicmV2X2luZm87CisKK3R5cGVkZWYgc3RydWN0IF9zc19kYXRhIHsJLyogaW5pdCB2YWx1ZXMgKi8KKyAgICAvKiB0aGlzIHN1YnN5c3RlbSAqLworICAgIGNvbnN0IGNoYXIgKnN1YnN5c3RlbV9uYW1lOworICAgIGNvbnN0IGNoYXIgKnN1YnN5c3RlbV92ZXJzaW9uOworICAgIC8qIGN1cnJlbnQgcmVxdWVzdCBpbmZvICovCisgICAgaW50IGFyZ2M7CisgICAgY2hhciAqKmFyZ3Y7CQkvKiBhcmcgbGlzdCAqLworICAgIGNoYXIgY29uc3QgKmN1cnJlbnRfcmVxdWVzdDsgLyogcHJpbWFyeSBuYW1lICovCisgICAgLyogaW5mbyBkaXJlY3RvcnkgZm9yICdoZWxwJyAqLworICAgIGNoYXIgKippbmZvX2RpcnM7CisgICAgLyogdG8gYmUgZXh0cmFjdGVkIGJ5IHN1YnJvdXRpbmVzICovCisgICAgcG9pbnRlciBpbmZvX3B0cjsJCS8qICh2b2lkICopIE5VTEwgKi8KKyAgICAvKiBmb3Igc3NfbGlzdGVuIHByb2Nlc3NpbmcgKi8KKyAgICBjaGFyICpwcm9tcHQ7CisgICAgc3NfcmVxdWVzdF90YWJsZSAqKnJxdF90YWJsZXM7CisgICAgc3NfYWJicmV2X2luZm8gKmFiYnJldl9pbmZvOworICAgIHN0cnVjdCB7CisJdW5zaWduZWQgaW50ICBlc2NhcGVfZGlzYWJsZWQgOiAxLAorCQkgICAgICBhYmJyZXZzX2Rpc2FibGVkIDogMTsKKyAgICB9IGZsYWdzOworICAgIC8qCisgICAgICogRHluYW1pYyB1c2FnZSBvZiByZWFkbGluZSBsaWJyYXJ5IGlmIHByZXNlbnQKKyAgICAgKi8KKyAgICB2b2lkICpyZWFkbGluZV9oYW5kbGU7CisgICAgdm9pZCAoKnJlYWRsaW5lX3NodXRkb3duKShzdHJ1Y3QgX3NzX2RhdGEgKmluZm8pOworICAgIGNoYXIgKigqcmVhZGxpbmUpKGNvbnN0IGNoYXIgKik7CisgICAgdm9pZCAoKmFkZF9oaXN0b3J5KShjb25zdCBjaGFyICopOworICAgIHZvaWQgKCpyZWRpc3BsYXkpKHZvaWQpOworICAgIGNoYXIgKiooKnJsX2NvbXBsZXRpb25fbWF0Y2hlcykoY29uc3QgY2hhciAqLAorCQkJCSAgICBjaGFyICooKmNvbXBsZXRlcikoY29uc3QgY2hhciAqLCBpbnQpKTsKKyAgICAvKiB0byBnZXQgb3V0ICovCisgICAgaW50IGFib3J0OwkJCS8qIGV4aXQgc3Vic3lzdGVtICovCisgICAgaW50IGV4aXRfc3RhdHVzOworfSBzc19kYXRhOworCisjZGVmaW5lIENVUlJFTlRfU1NfVkVSU0lPTiAxCisKKyNkZWZpbmUJc3NfaW5mbyhzY2lfaWR4KQkoX3NzX3RhYmxlW3NjaV9pZHhdKQorI2RlZmluZQlzc19jdXJyZW50X3JlcXVlc3Qoc2NpX2lkeCxjb2RlX3B0cikJXAorICAgICAoKmNvZGVfcHRyPTAsc3NfaW5mbyhzY2lfaWR4KS0+Y3VycmVudF9yZXF1ZXN0KQordm9pZCBzc19hZGRfaW5mb19kaXIgKGludCBzY2lfaWR4LCBjaGFyICppbmZvX2RpciwgaW50ICpjb2RlX3B0cik7Cit2b2lkIHNzX2RlbGV0ZV9pbmZvX2RpciAoaW50IHNjaV9pZHgsIGNoYXIgKmluZm9fZGlyLCBpbnQgKmNvZGVfcHRyKTsKK2ludCBzc19leGVjdXRlX2xpbmUoaW50IHNjaV9pZHgsIGNoYXIgKmxpbmVfcHRyKTsKK2NoYXIgKipzc19wYXJzZShpbnQgc2NpX2lkeCwgY2hhciAqbGluZV9wdHIsIGludCAqYXJnY19wdHIpOworc3NfYWJicmV2X2luZm8gKnNzX2FiYnJldl9pbml0aWFsaXplKGNoYXIgKiwgaW50ICopOwordm9pZCBzc19wYWdlX3N0ZGluKHZvaWQpOwordm9pZCBzc19saXN0X3JlcXVlc3RzKGludCwgY2hhciBjb25zdCAqIGNvbnN0ICosIGludCwgcG9pbnRlcik7CitpbnQgc3NfZXhlY3V0ZV9jb21tYW5kKGludCBzY2lfaWR4LCBjaGFyICphcmd2W10pOworaW50IHNzX3BhZ2VyX2NyZWF0ZSh2b2lkKTsKK2NoYXIgKnNzX3NhZmVfZ2V0ZW52KGNvbnN0IGNoYXIgKmFyZyk7CitjaGFyICoqc3NfcmxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpOworCitleHRlcm4gc3NfZGF0YSAqKl9zc190YWJsZTsKK2V4dGVybiBjaGFyICpzc19ldF9tc2dzW107CitleHRlcm4gY2hhciAqX3NzX3BhZ2VyX25hbWU7CisKKyNpZmRlZiBVU0VfU0lHUFJPQ01BU0sKKy8qIGZha2Ugc2lnbWFzaywgc2lnYmxvY2ssIHNpZ3NldG1hc2sgKi8KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNkZWZpbmUgc2lnbWFzayh4KSAoMUw8PCh4KS0xKQorI2RlZmluZSBzaWdzZXRtYXNrKHgpIHNpZ3Byb2NtYXNrKFNJR19TRVRNQVNLLCZ4LE5VTEwpCitzdGF0aWMgaW50IF9mYWtlX3NpZ3N0b3JlOworI2RlZmluZSBzaWdibG9jayh4KSAoX2Zha2Vfc2lnc3RvcmU9eCxzaWdwcm9jbWFzayhTSUdfQkxPQ0ssJl9mYWtlX3NpZ3N0b3JlLDApKQorI2VuZGlmCisjZW5kaWYgLyogX3NzX2ludGVybmFsX2ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3Mvc3RkX3Jxcy5jdCBiL2UyZnNwcm9ncy9saWIvc3Mvc3RkX3Jxcy5jdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDAyODhhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy9zdGRfcnFzLmN0CkBAIC0wLDAgKzEsNDYgQEAKKwljb21tYW5kX3RhYmxlCXNzX3N0ZF9yZXF1ZXN0czsKKworCXJlcXVlc3QJc3Nfc2VsZl9pZGVudGlmeSwgIklkZW50aWZ5IHRoZSBzdWJzeXN0ZW0uIiwKKwkJIi4iLAorCQkoZG9udF9saXN0LCBkb250X3N1bW1hcml6ZSk7CisKKwlyZXF1ZXN0CXNzX2hlbHAsICJEaXNwbGF5IGluZm8gb24gY29tbWFuZCBvciB0b3BpYy4iLAorCQloZWxwOworCisJdW5pbXBsZW1lbnRlZAorCQlzc19saXN0X2hlbHAsCisJCSJMaXN0IHRvcGljcyBmb3Igd2hpY2ggaGVscCBpcyBhdmFpbGFibGUuIiwKKwkJbGlzdF9oZWxwLCBsaDsKKworCXJlcXVlc3QJc3NfbGlzdF9yZXF1ZXN0cywgIkxpc3QgYXZhaWxhYmxlIGNvbW1hbmRzLiIsCisJCWxpc3RfcmVxdWVzdHMsIGxyLCAiPyI7CisKKwlyZXF1ZXN0CXNzX3F1aXQsICJMZWF2ZSB0aGUgc3Vic3lzdGVtLiIsCisJCXF1aXQsIHE7CisKKwl1bmltcGxlbWVudGVkCisJCXNzX2FiYnJldiwKKwkJIkVuYWJsZS9kaXNhYmxlIGFiYnJldmlhdGlvbiBwcm9jZXNzaW5nIG9mIHJlcXVlc3QgbGluZXMuIiwKKwkJYWJicmV2LCBhYjsKKworCXVuaW1wbGVtZW50ZWQKKwkJc3NfZXhlY3V0ZSwKKwkJIkV4ZWN1dGUgYSBVTklYIGNvbW1hbmQgbGluZS4iLAorCQlleGVjdXRlLCBlOworCisJdW5pbXBsZW1lbnRlZAorCQlzc19zdW1tYXJpemVfcmVxdWVzdHMsCisJCSJQcm9kdWNlIGEgbGlzdCBvZiB0aGUgbW9zdCBjb21tb25seSB1c2VkIHJlcXVlc3RzLiIsCisJCSI/IjsKKwkJCisJcmVxdWVzdAlzc19zdWJzeXN0ZW1fbmFtZSwKKwkJIlJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHN1YnN5c3RlbS4iLAorCQlzdWJzeXN0ZW1fbmFtZSwKKwkJKGRvbnRfbGlzdCk7CisKKwlyZXF1ZXN0CXNzX3N1YnN5c3RlbV92ZXJzaW9uLAorCQkiUmV0dXJuIHRoZSB2ZXJzaW9uIG9mIHRoaXMgc3Vic3lzdGVtLiIsCisJCXN1YnN5c3RlbV92ZXJzaW9uLAorCQkoZG9udF9saXN0KTsKKworCWVuZDsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvdGVzdF9jbWQuY3QgYi9lMmZzcHJvZ3MvbGliL3NzL3Rlc3RfY21kLmN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNDlmNzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL3Rlc3RfY21kLmN0CkBAIC0wLDAgKzEsNiBAQAorY29tbWFuZF90YWJsZSB0ZXN0X2NtZHM7CisKK3JlcXVlc3QgdGVzdF9jbWQsICJUZXN0IGNvbW1hbmQiLAorCXRlc3RfY21kLCB0ZXN0OworCitlbmQ7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3NzL3Rlc3Rfc2NyaXB0IGIvZTJmc3Byb2dzL2xpYi9zcy90ZXN0X3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWY3ZmRjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy90ZXN0X3NjcmlwdApAQCAtMCwwICsxLDggQEAKK3Rlc3QKK3Rlc3QgZm9vIGJhciBxdXV4Cit0ZXN0IGJhciBxdXV4CitxdXV4IGJhcgorcXV1eAordGVzdCBxdXV4CitxdWl0Cit0ZXN0IGZvbyBiYXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3MvdGVzdF9zY3JpcHRfZXhwZWN0ZWQgYi9lMmZzcHJvZ3MvbGliL3NzL3Rlc3Rfc2NyaXB0X2V4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0M2Y4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3NzL3Rlc3Rfc2NyaXB0X2V4cGVjdGVkCkBAIC0wLDAgKzEsMjIgQEAKK3Rlc3Rfc3MgMS4wLiAgVHlwZSAnPycgZm9yIGEgbGlzdCBvZiBjb21tYW5kcy4KKwordGVzdF9pY291bnQ6IHRlc3QKK0hlbGxvLCB3b3JsZCEKK0FyZ3M6IAordGVzdF9pY291bnQ6IHRlc3QgZm9vIGJhciBxdXV4CitIZWxsbywgd29ybGQhCitBcmdzOiAnZm9vJywgJ2JhcicsICdxdXV4JwordGVzdF9pY291bnQ6IHRlc3QgYmFyIHF1dXgKK0hlbGxvLCB3b3JsZCEKK0FyZ3M6ICdiYXInLCAncXV1eCcKK3Rlc3RfaWNvdW50OiBxdXV4IGJhcgordGVzdF9zczogQ29tbWFuZCBub3QgZm91bmQgcXV1eAordGVzdF9pY291bnQ6IHF1dXgKK3Rlc3Rfc3M6IENvbW1hbmQgbm90IGZvdW5kIHF1dXgKK3Rlc3RfaWNvdW50OiB0ZXN0IHF1dXgKK0hlbGxvLCB3b3JsZCEKK0FyZ3M6ICdxdXV4JwordGVzdF9pY291bnQ6IHF1aXQKK3Rlc3RfaWNvdW50OiB0ZXN0IGZvbyBiYXIKK0hlbGxvLCB3b3JsZCEKK0FyZ3M6ICdmb28nLCAnYmFyJwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zcy90ZXN0X3NzLmMgYi9lMmZzcHJvZ3MvbGliL3NzL3Rlc3Rfc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2NhOTlmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zcy90ZXN0X3NzLmMKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiB0ZXN0X3NzLmMKKyAqCisgKiBDb3B5cmlnaHQgMTk4NywgMTk4OCBieSBNSVQgU3R1ZGVudCBJbmZvcm1hdGlvbiBQcm9jZXNzaW5nIEJvYXJkCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdAorICogdGhlIG5hbWVzIG9mIE0uSS5ULiBhbmQgdGhlIE0uSS5ULiBTLkkuUC5CLiBub3QgYmUgdXNlZCBpbgorICogYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZQorICogd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIGFuZCB0aGUKKyAqIE0uSS5ULiBTLkkuUC5CLiBtYWtlIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YKKyAqIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0CisgKiBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJzcy5oIgorCitleHRlcm4gc3NfcmVxdWVzdF90YWJsZSB0ZXN0X2NtZHM7CisKKyNkZWZpbmUgVFJVRSAxCisjZGVmaW5lIEZBTFNFIDAKKworc3RhdGljIGNoYXIgc3Vic3lzdGVtX25hbWVbXSA9ICJ0ZXN0X3NzIjsKK3N0YXRpYyBjaGFyIHZlcnNpb25bXSA9ICIxLjAiOworCitzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc2NpX2lkeCkKK3sKKwlGSUxFCQkqZjsKKwljaGFyCQlidWZbMjU2XTsKKwljaGFyCQkqY3A7CisJaW50CQlleGl0X3N0YXR1cyA9IDA7CisJaW50CQlyZXR2YWw7CisJaW50IAkJbm9lY2hvOworCisJaWYgKHN0cmNtcChjbWRfZmlsZSwgIi0iKSA9PSAwKQorCQlmID0gc3RkaW47CisJZWxzZSB7CisJCWYgPSBmb3BlbihjbWRfZmlsZSwgInIiKTsKKwkJaWYgKCFmKSB7CisJCQlwZXJyb3IoY21kX2ZpbGUpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlmZmx1c2goc3Rkb3V0KTsKKwlmZmx1c2goc3RkZXJyKTsKKwlzZXRidWYoc3Rkb3V0LCBOVUxMKTsKKwlzZXRidWYoc3RkZXJyLCBOVUxMKTsKKwl3aGlsZSAoIWZlb2YoZikpIHsKKwkJaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpID09IE5VTEwpCisJCQlicmVhazsKKwkJaWYgKGJ1ZlswXSA9PSAnIycpCisJCQljb250aW51ZTsKKwkJbm9lY2hvID0gMDsKKwkJaWYgKGJ1ZlswXSA9PSAnLScpIHsKKwkJCW5vZWNobyA9IDE7CisJCQlidWZbMF0gPSAnICc7CisJCX0KKwkJY3AgPSBzdHJjaHIoYnVmLCAnXG4nKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJY3AgPSBzdHJjaHIoYnVmLCAnXHInKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJaWYgKCFub2VjaG8pCisJCQlwcmludGYoInRlc3RfaWNvdW50OiAlc1xuIiwgYnVmKTsKKwkJcmV0dmFsID0gc3NfZXhlY3V0ZV9saW5lKHNjaV9pZHgsIGJ1Zik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXNzX3BlcnJvcihzY2lfaWR4LCByZXR2YWwsIGJ1Zik7CisJCQlleGl0X3N0YXR1cysrOworCQl9CisJfQorCXJldHVybiBleGl0X3N0YXR1czsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludCBjLCBjb2RlOworCWNoYXIgKnJlcXVlc3QgPSAoY2hhciAqKU5VTEw7CisJY2hhcgkJKmNtZF9maWxlID0gMDsKKwlpbnQgc2NpX2lkeDsKKwlpbnQgZXhpdF9zdGF0dXMgPSAwOworCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAid1I6ZjoiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdSJzoKKwkJCXJlcXVlc3QgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQljbWRfZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY29tX2Vycihhcmd2WzBdLCAwLCAiVXNhZ2U6IHRlc3Rfc3MgWy1SIHJlcXVlc3RdICIKKwkJCQkiWy1mIGNtZF9maWxlXSIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCXNjaV9pZHggPSBzc19jcmVhdGVfaW52b2NhdGlvbihzdWJzeXN0ZW1fbmFtZSwgdmVyc2lvbiwKKwkJCQkgICAgICAgKGNoYXIgKilOVUxMLCAmdGVzdF9jbWRzLCAmY29kZSk7CisJaWYgKGNvZGUpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIGNvZGUsICJjcmVhdGluZyBpbnZvY2F0aW9uIik7CisJCWV4aXQoMSk7CisJfQorCisJKHZvaWQpIHNzX2FkZF9yZXF1ZXN0X3RhYmxlIChzY2lfaWR4LCAmc3Nfc3RkX3JlcXVlc3RzLCAxLCAmY29kZSk7CisJaWYgKGNvZGUpIHsKKwkJc3NfcGVycm9yIChzY2lfaWR4LCBjb2RlLCAiYWRkaW5nIHN0YW5kYXJkIHJlcXVlc3RzIik7CisJCWV4aXQgKDEpOworCX0KKworCXByaW50ZigidGVzdF9zcyAlcy4gIFR5cGUgJz8nIGZvciBhIGxpc3Qgb2YgY29tbWFuZHMuXG5cbiIsCisJICAgICAgIHZlcnNpb24pOworCisJaWYgKHJlcXVlc3QpIHsKKwkJY29kZSA9IHNzX2V4ZWN1dGVfbGluZShzY2lfaWR4LCByZXF1ZXN0KTsKKwkJaWYgKGNvZGUpIHsKKwkJCXNzX3BlcnJvcihzY2lfaWR4LCBjb2RlLCByZXF1ZXN0KTsKKwkJCWV4aXRfc3RhdHVzKys7CisJCX0KKwl9IGVsc2UgaWYgKGNtZF9maWxlKSB7CisJCWV4aXRfc3RhdHVzID0gc291cmNlX2ZpbGUoY21kX2ZpbGUsIHNjaV9pZHgpOworCX0gZWxzZSB7CisJCXNzX2xpc3RlbihzY2lfaWR4KTsKKwl9CisKKwlleGl0KGV4aXRfc3RhdHVzKTsKK30KKworCit2b2lkIHRlc3RfY21kIChhcmdjLCBhcmd2KQorICAgIGludCBhcmdjOworICAgIGNoYXIgKiphcmd2OworeworICAgIHByaW50ZigiSGVsbG8sIHdvcmxkIVxuIik7CisgICAgcHJpbnRmKCJBcmdzOiAiKTsKKyAgICB3aGlsZSAoKythcmd2LCAtLWFyZ2MpIHsKKwlwcmludGYoIiclcyciLCAqYXJndik7CisJaWYgKGFyZ2MgPiAxKQorCSAgICBmcHV0cygiLCAiLCBzdGRvdXQpOworICAgIH0KKyAgICBwdXRjaGFyICgnXG4nKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9BbmRyb2lkLm1rIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QyMDU2ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsNTcgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKKworbGliZXh0Ml9xdW90YV9zcmNfZmlsZXMgOj0gXAorCWRpY3QuYyBcCisJbWtxdW90YS5jIFwKKwlwYXJzZV9xdHlwZS5jIFwKKwlwbGF1c2libGUuYyBcCisJcHJvZmlsZS5jIFwKKwlwcm9maWxlX2hlbHBlcnMuYyBcCisJcHJvZl9lcnIuYyBcCisJcXVvdGFpby5jIFwKKwlxdW90YWlvX3RyZWUuYyBcCisJcXVvdGFpb192Mi5jCisKK2xpYmV4dDJfcXVvdGFfY19pbmNsdWRlcyA6PSBleHRlcm5hbC9lMmZzcHJvZ3MvbGliCisKK2xpYmV4dDJfcXVvdGFfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbAorCitsaWJleHQyX3F1b3RhX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliZXh0MmZzIGxpYmV4dDJfY29tX2VyciBsaWJleHQyX2Jsa2lkCisKK2xpYmV4dDJfcXVvdGFfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml9xdW90YV9zcmNfZmlsZXMpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxpYmV4dDJfcXVvdGFfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml9xdW90YV9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobGliZXh0Ml9xdW90YV9jZmxhZ3MpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSBsaWJjICQobGliZXh0Ml9xdW90YV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfcXVvdGEKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworbGliZXh0Ml9xdW90YV9zdGF0aWNfbGlicmFyaWVzIDo9IGxpYmV4dDJmcyBsaWJleHQyX2NvbV9lcnIKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfcXVvdGFfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJfcXVvdGFfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfcXVvdGFfY2ZsYWdzKQorTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSBsaWJjICQobGliZXh0Ml9xdW90YV9zdGF0aWNfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfcXVvdGEKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfcXVvdGFfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxpYmV4dDJfcXVvdGFfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfcXVvdGFfY2ZsYWdzKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfcXVvdGEtaG9zdAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChhZGRzdWZmaXggLWhvc3QsICQobGliZXh0Ml9xdW90YV9zaGFyZWRfbGlicmFyaWVzKSkKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEyYmEyNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9NYWtlZmlsZS5pbgpAQCAtMCwwICsxLDE1OCBAQAorIyBNYWtlZmlsZSBmb3IgZTJmc3Byb2cncyBpbnRlcm5hbCBzdXBwb3J0CisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLi8uLgorbXlfZGlyID0gbGliL3N1cHBvcnQKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK2FsbDo6CisKK09CSlM9CQlta3F1b3RhLm8gXAorCQlwbGF1c2libGUubyBcCisJCXByb2ZpbGUubyBcCisJCXBhcnNlX3F0eXBlLm8gXAorCQlwcm9maWxlX2hlbHBlcnMubyBcCisJCXByb2ZfZXJyLm8gXAorCQlxdW90YWlvLm8gXAorCQlxdW90YWlvX3YyLm8gXAorCQlxdW90YWlvX3RyZWUubyBcCisJCWRpY3QubworCitTUkNTPQkJJChzcmNkaXIpL2FyZ3ZfcGFyc2UuYyBcCisJCSQoc3JjZGlyKS9ta3F1b3RhLmMgXAorCQkkKHNyY2RpcikvcGFyc2VfcXR5cGUuYyBcCisJCSQoc3JjZGlyKS9wbGF1c2libGUuYyBcCisJCSQoc3JjZGlyKS9wcm9maWxlLmMgXAorCQkkKHNyY2RpcikvcHJvZmlsZV9oZWxwZXJzLmMgXAorCQlwcm9mX2Vyci5jIFwKKwkJJChzcmNkaXIpL3F1b3RhaW8uYyBcCisJCSQoc3JjZGlyKS9xdW90YWlvX3RyZWUuYyBcCisJCSQoc3JjZGlyKS9xdW90YWlvX3YyLmMgXAorCQkkKHNyY2RpcikvZGljdC5jCisKK0xJQlJBUlk9IGxpYnN1cHBvcnQKK0xJQkRJUj0gc3VwcG9ydAorCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9QUk9GSUxFQAorCitDT01QSUxFX0VUPQlfRVRfRElSX09WRVJSSURFPSQoc3JjZGlyKS8uLi9ldCAuLi9ldC9jb21waWxlX2V0CisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTKSAtYyAkPCAtbyAkQAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorQFBST0ZJTEVfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHUykgLWcgLXBnIC1vIHByb2ZpbGVkLyQqLm8gLWMgJDwKKworaW5zdGFsbGRpcnM6OgorCitpbnN0YWxsOjogYWxsCisKK3VuaW5zdGFsbDo6CisKK3Byb2ZfZXJyLmMgcHJvZl9lcnIuaDogcHJvZl9lcnIuZXQKKwkkKEUpICIJQ09NUElMRV9FVCBwcm9mX2Vyci5ldCIKKwkkKFEpICQoQ09NUElMRV9FVCkgJChzcmNkaXIpL3Byb2ZfZXJyLmV0CisKK3Rlc3RfcHJvZmlsZTogJChzcmNkaXIpL3Byb2ZpbGUuYyBwcm9maWxlX2hlbHBlcnMubyBhcmd2X3BhcnNlLm8gXAorCQlwcm9mX2Vyci5vIHByb2ZpbGUuaCAkKERFUFNUQVRJQ19MSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpIC1vIHRlc3RfcHJvZmlsZSAtRERFQlVHX1BST0dSQU0gJChzcmNkaXIpL3Byb2ZpbGUuYyBwcm9mX2Vyci5vIFwKKwkJcHJvZmlsZV9oZWxwZXJzLm8gYXJndl9wYXJzZS5vICQoU1RBVElDX0xJQkNPTV9FUlIpIFwKKwkJJChBTExfQ0ZMQUdTKQorCitjbGVhbjo6CisJJChSTSkgLWYgXCMqICoucyAqLm8gKi5hICp+ICouYmFrIGNvcmUgcHJvZmlsZWQvKiBcCisJCS4uL2xpYnN1cHBvcnQuYSAuLi9saWJzdXBwb3J0X3AuYSAkKFNNQU5QQUdFUykgXAorCQlwcm9mX2Vyci5jIHByb2ZfZXJyLmggdGVzdF9wcm9maWxlCisKKyNjaGVjazo6IHRzdF91dWlkCisjCUxEX0xJQlJBUllfUEFUSD0kKExJQikgRFlMRF9MSUJSQVJZX1BBVEg9JChMSUIpIC4vdHN0X3V1aWQKKworbW9zdGx5Y2xlYW46OiBjbGVhbgorZGlzdGNsZWFuOjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorCisjCisjIEhhY2sgdG8gcGFyYWxsZWwgbWFrZXMgcmVjb2duaXplIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkuCisjCisuLi8uLi9saWIvbGlic3VwcG9ydC5hOiBsaWJzdXBwb3J0LmEKKy4uLy4uL2xpYi9saWJzdXBwb3J0LnNvOiBpbWFnZQorLi4vLi4vbGliL2xpYnN1cHBvcnQuZHlsaWI6IGltYWdlCisKKyQoT0JKUyk6CisKKyMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysKKyMgCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpbgorIyB0aGUgTWFrZWZpbGUuaW4gZmlsZQorIworYXJndl9wYXJzZS5vOiAkKHNyY2RpcikvYXJndl9wYXJzZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvYXJndl9wYXJzZS5oCitta3F1b3RhLm86ICQoc3JjZGlyKS9ta3F1b3RhLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHNyY2RpcikvcXVvdGFpby5oICQoc3JjZGlyKS9kcWJsa192Mi5oIFwKKyAkKHNyY2RpcikvcXVvdGFpb190cmVlLmggJChzcmNkaXIpL3F1b3RhaW9fdjIuaCAkKHNyY2RpcikvY29tbW9uLmggXAorICQoc3JjZGlyKS9kaWN0LmgKK3BhcnNlX3F0eXBlLm86ICQoc3JjZGlyKS9wYXJzZV9xdHlwZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvcXVvdGFpby5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvZHFibGtfdjIuaCAkKHNyY2RpcikvcXVvdGFpb190cmVlLmgKK3BsYXVzaWJsZS5vOiAkKHNyY2RpcikvcGxhdXNpYmxlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9wbGF1c2libGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJChzcmNkaXIpL25scy1lbmFibGUuaAorcHJvZmlsZS5vOiAkKHNyY2RpcikvcHJvZmlsZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQoc3JjZGlyKS9wcm9maWxlLmggcHJvZl9lcnIuaAorcHJvZmlsZV9oZWxwZXJzLm86ICQoc3JjZGlyKS9wcm9maWxlX2hlbHBlcnMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHNyY2RpcikvcHJvZmlsZS5oICQoc3JjZGlyKS9wcm9maWxlX2hlbHBlcnMuaCBwcm9mX2Vyci5oCitwcm9mX2Vyci5vOiBwcm9mX2Vyci5jCitxdW90YWlvLm86ICQoc3JjZGlyKS9xdW90YWlvLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9jb21tb24uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9xdW90YWlvLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvZHFibGtfdjIuaCAkKHNyY2RpcikvcXVvdGFpb190cmVlLmgKK3F1b3RhaW9fdHJlZS5vOiAkKHNyY2RpcikvcXVvdGFpb190cmVlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9jb21tb24uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9xdW90YWlvX3RyZWUuaCBcCisgJChzcmNkaXIpL3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS9kcWJsa192Mi5oCitxdW90YWlvX3YyLm86ICQoc3JjZGlyKS9xdW90YWlvX3YyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9jb21tb24uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oICQoc3JjZGlyKS9xdW90YWlvX3YyLmggXAorICQoc3JjZGlyKS9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvZHFibGtfdjIuaCAkKHNyY2RpcikvcXVvdGFpb190cmVlLmgKK2RpY3QubzogJChzcmNkaXIpL2RpY3QuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2RpY3QuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L2FyZ3ZfcGFyc2UuYyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9hcmd2X3BhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyZjYzNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9hcmd2X3BhcnNlLmMKQEAgLTAsMCArMSwxNjYgQEAKKy8qCisgKiBhcmd2X3BhcnNlLmMgLS0tIHV0aWxpdHkgZnVuY3Rpb24gZm9yIHBhcnNpbmcgYSBzdHJpbmcgaW50byBhCisgKiAJYXJnYywgYXJndiBhcnJheS4KKyAqCisgKiBUaGlzIGZpbGUgZGVmaW5lcyBhIGZ1bmN0aW9uIGFyZ3ZfcGFyc2UoKSB3aGljaCBwYXJzaW5nIGEKKyAqIHBhc3NlZC1pbiBzdHJpbmcsIGhhbmRsaW5nIGRvdWJsZSBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzLCBhbmQKKyAqIGNyZWF0ZXMgYW4gYWxsb2NhdGVkIGFyZ3YgdmVjdG9yIHdoaWNoIGNhbiBiZSBmcmVlZCB1c2luZyB0aGUKKyAqIGFyZ3ZfZnJlZSgpIGZ1bmN0aW9uLgorICoKKyAqIFNlZSBhcmd2X3BhcnNlLmggZm9yIHRoZSBmb3JtYWwgZGVmaW5pdGlvbiBvZiB0aGUgZnVuY3Rpb25zLgorICoKKyAqIENvcHlyaWdodCAxOTk5IGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IKKyAqIGFueSBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQKKyAqIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwKKyAqIGNvcGllcy4gIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEVPRE9SRSBUUydPIChUSEUKKyAqIEFVVEhPUikgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCisgKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuCisgKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCwKKyAqIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUgorICogUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKyAqIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IKKyAqIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuICAoSXNuJ3QKKyAqIGl0IHNpY2sgdGhhdCB0aGUgVS5TLiBjdWx0dXJlIG9mIGxhd3N1aXQtaGFwcHkgbGF3eWVycyByZXF1aXJlcworICogdGhpcyBraW5kIG9mIGRpc2NsYWltZXI/KQorICoKKyAqIFZlcnNpb24gMS4xLCBtb2RpZmllZCAyLzI3LzE5OTkKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJhcmd2X3BhcnNlLmgiCisKKyNkZWZpbmUgU1RBVEVfV0hJVEVTUEFDRQkxCisjZGVmaW5lIFNUQVRFX1RPS0VOCQkyCisjZGVmaW5lIFNUQVRFX1FVT1RFRAkJMworCisvKgorICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuCisgKi8KK2ludCBhcmd2X3BhcnNlKGNoYXIgKmluX2J1ZiwgaW50ICpyZXRfYXJnYywgY2hhciAqKipyZXRfYXJndikKK3sKKwlpbnQJYXJnYyA9IDAsIG1heF9hcmdjID0gMDsKKwljaGFyIAkqKmFyZ3YsICoqbmV3X2FyZ3YsICpidWYsIGNoOworCWNoYXIJKmNwID0gMCwgKm91dGNwID0gMDsKKwlpbnQJc3RhdGUgPSBTVEFURV9XSElURVNQQUNFOworCisJYnVmID0gbWFsbG9jKHN0cmxlbihpbl9idWYpKzEpOworCWlmICghYnVmKQorCQlyZXR1cm4gLTE7CisKKwltYXhfYXJnYyA9IDA7IGFyZ2MgPSAwOyBhcmd2ID0gMDsKKwlvdXRjcCA9IGJ1ZjsKKwlmb3IgKGNwID0gaW5fYnVmOyAoY2ggPSAqY3ApOyBjcCsrKSB7CisJCWlmIChzdGF0ZSA9PSBTVEFURV9XSElURVNQQUNFKSB7CisJCQlpZiAoaXNzcGFjZSgoaW50KSBjaCkpCisJCQkJY29udGludWU7CisJCQkvKiBOb3Qgd2hpdGVzcGFjZSwgc28gc3RhcnQgYSBuZXcgdG9rZW4gKi8KKwkJCXN0YXRlID0gU1RBVEVfVE9LRU47CisJCQlpZiAoYXJnYyA+PSBtYXhfYXJnYykgeworCQkJCW1heF9hcmdjICs9IDM7CisJCQkJbmV3X2FyZ3YgPSByZWFsbG9jKGFyZ3YsCisJCQkJCQkgIChtYXhfYXJnYysxKSpzaXplb2YoY2hhciAqKSk7CisJCQkJaWYgKCFuZXdfYXJndikgeworCQkJCQlmcmVlKGFyZ3YpOworCQkJCQlmcmVlKGJ1Zik7CisJCQkJCXJldHVybiAtMTsKKwkJCQl9CisJCQkJYXJndiA9IG5ld19hcmd2OworCQkJfQorCQkJYXJndlthcmdjKytdID0gb3V0Y3A7CisJCX0KKwkJaWYgKHN0YXRlID09IFNUQVRFX1FVT1RFRCkgeworCQkJaWYgKGNoID09ICciJykKKwkJCQlzdGF0ZSA9IFNUQVRFX1RPS0VOOworCQkJZWxzZQorCQkJCSpvdXRjcCsrID0gY2g7CisJCQljb250aW51ZTsKKwkJfQorCQkvKiBNdXN0IGJlIHByb2Nlc3NpbmcgY2hhcmFjdGVycyBpbiBhIHdvcmQgKi8KKwkJaWYgKGlzc3BhY2UoKGludCkgY2gpKSB7CisJCQkvKgorCQkJICogVGVybWluYXRlIHRoZSBjdXJyZW50IHdvcmQgYW5kIHN0YXJ0CisJCQkgKiBsb29raW5nIGZvciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IHdvcmQuCisJCQkgKi8KKwkJCSpvdXRjcCsrID0gMDsKKwkJCXN0YXRlID0gU1RBVEVfV0hJVEVTUEFDRTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChjaCA9PSAnIicpIHsKKwkJCXN0YXRlID0gU1RBVEVfUVVPVEVEOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGNoID09ICdcXCcpIHsKKwkJCWNoID0gKisrY3A7CisJCQlzd2l0Y2ggKGNoKSB7CisJCQljYXNlICdcMCc6CisJCQkJY2ggPSAnXFwnOyBjcC0tOyBicmVhazsKKwkJCWNhc2UgJ24nOgorCQkJCWNoID0gJ1xuJzsgYnJlYWs7CisJCQljYXNlICd0JzoKKwkJCQljaCA9ICdcdCc7IGJyZWFrOworCQkJY2FzZSAnYic6CisJCQkJY2ggPSAnXGInOyBicmVhazsKKwkJCX0KKwkJfQorCQkqb3V0Y3ArKyA9IGNoOworCX0KKwlpZiAoc3RhdGUgIT0gU1RBVEVfV0hJVEVTUEFDRSkKKwkJKm91dGNwKysgPSAnXDAnOworCWlmIChhcmd2ID09IDApIHsKKwkJYXJndiA9IG1hbGxvYyhzaXplb2YoY2hhciAqKSk7CisJCWZyZWUoYnVmKTsKKwl9CisJYXJndlthcmdjXSA9IDA7CisJaWYgKHJldF9hcmdjKQorCQkqcmV0X2FyZ2MgPSBhcmdjOworCWlmIChyZXRfYXJndikKKwkJKnJldF9hcmd2ID0gYXJndjsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBhcmd2X2ZyZWUoY2hhciAqKmFyZ3YpCit7CisJZnJlZSgqYXJndik7CisJZnJlZShhcmd2KTsKK30KKworI2lmZGVmIERFQlVHCisvKgorICogRm9yIGRlYnVnZ2luZworICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CWFjLCByZXQ7CisJY2hhcgkqKmF2LCAqKmNwcDsKKwljaGFyCWJ1ZlsyNTZdOworCisJd2hpbGUgKCFmZW9mKHN0ZGluKSkgeworCQlpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pID09IE5VTEwpCisJCQlicmVhazsKKwkJcmV0ID0gYXJndl9wYXJzZShidWYsICZhYywgJmF2KTsKKwkJaWYgKHJldCAhPSAwKSB7CisJCQlwcmludGYoIkFyZ3ZfcGFyc2UgcmV0dXJuZWQgJWQhXG4iLCByZXQpOworCQkJY29udGludWU7CisJCX0KKwkJcHJpbnRmKCJBcmd2X3BhcnNlIHJldHVybmVkICVkIGFyZ3VtZW50cy4uLlxuIiwgYWMpOworCQlmb3IgKGNwcCA9IGF2OyAqY3BwOyBjcHArKykgeworCQkJaWYgKGNwcCAhPSBhdikKKwkJCQlwcmludGYoIiwgIik7CisJCQlwcmludGYoIiclcyciLCAqY3BwKTsKKwkJfQorCQlwcmludGYoIlxuIik7CisJCWFyZ3ZfZnJlZShhdik7CisJfQorCWV4aXQoMCk7Cit9CisjZW5kaWYgLyogREVCVUcgKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9hcmd2X3BhcnNlLmggYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvYXJndl9wYXJzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2ZjQ1NjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvYXJndl9wYXJzZS5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBhcmd2X3BhcnNlLmggLS0tIGhlYWRlciBmaWxlIGZvciB0aGUgYXJndiBwYXJzZXIuCisgKgorICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGludGVyZmFjZSBmb3IgdGhlIGZ1bmN0aW9ucyBhcmd2X3BhcnNlKCkgYW5kCisgKiBhcmd2X2ZyZWUoKS4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGludCBhcmd2X3BhcnNlKGNoYXIgKmluX2J1ZiwgaW50ICpyZXRfYXJnYywgY2hhciAqKipyZXRfYXJndikKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGFzIGl0cyBmaXJzdCBhcmd1bWVudCBhIHN0cmluZyB3aGljaCBpdCB3aWxsCisgKiBwYXJzZSBpbnRvIGFuIGFyZ3YgYXJndW1lbnQgdmVjdG9yLCB3aXRoIGVhY2ggd2hpdGUtc3BhY2Ugc2VwYXJhdGVkCisgKiB3b3JkIHBsYWNlZCBpbnRvIGl0cyBvd24gc2xvdCBpbiB0aGUgYXJndi4gIFRoaXMgZnVuY3Rpb24gaGFuZGxlcworICogZG91YmxlIHF1b3RlcyBhbmQgYmFja3NsYXNoZXMgc28gdGhhdCB0aGUgcGFyc2VkIHdvcmRzIGNhbiBjb250YWluCisgKiBzcGVjaWFsIGNoYXJhY3RlcnMuICAgVGhlIGNvdW50IG9mIHRoZSBudW1iZXIgd29yZHMgZm91bmQgaW4gdGhlCisgKiBwYXJzZWQgc3RyaW5nLCBhcyB3ZWxsIGFzIHRoZSBhcmd1bWVudCB2ZWN0b3IsIGFyZSByZXR1cm5lZCBpbnRvCisgKiByZXRfYXJnYyBhbmQgcmV0X2FyZ3YsIHJlc3BlY3RpdmVseS4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogZXh0ZXJuIHZvaWQgYXJndl9mcmVlKGNoYXIgKiphcmd2KTsKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIHRoZSBhcmd1bWVudCB2ZWN0b3IgY3JlYXRlZCBieSBhcmd2X3BhcnNlKCkuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBDb3B5cmlnaHQgMTk5OSBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yCisgKiBhbnkgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0CisgKiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsCisgKiBjb3BpZXMuICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgVEhFT0RPUkUgVFMnTyAoVEhFCisgKiBBVVRIT1IpIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAorICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsCisgKiBJTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIKKyAqIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OCisgKiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SCisgKiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLiAgKElzbid0CisgKiBpdCBzaWNrIHRoYXQgdGhlIFUuUy4gY3VsdHVyZSBvZiBsYXdzdWl0LWhhcHB5IGxhd3llcnMgcmVxdWlyZXMKKyAqIHRoaXMga2luZCBvZiBkaXNjbGFpbWVyPykKKyAqCisgKiBWZXJzaW9uIDEuMSwgbW9kaWZpZWQgMi8yNy8xOTk5CisgKi8KKworZXh0ZXJuIGludCBhcmd2X3BhcnNlKGNoYXIgKmluX2J1ZiwgaW50ICpyZXRfYXJnYywgY2hhciAqKipyZXRfYXJndik7CitleHRlcm4gdm9pZCBhcmd2X2ZyZWUoY2hhciAqKmFyZ3YpOwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L2NvbW1vbi5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTc1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvY29tbW9uLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqCisgKglWYXJpb3VzIHRoaW5ncyBjb21tb24gZm9yIGFsbCB1dGlsaXRpZXMKKyAqCisgKi8KKworI2lmbmRlZiBfX1FVT1RBX0NPTU1PTl9IX18KKyNkZWZpbmUgX19RVU9UQV9DT01NT05fSF9fCisKKyNpZiBFWFQyX0ZMQVRfSU5DTFVERVMKKyNpbmNsdWRlICJlMl90eXBlcy5oIgorI2Vsc2UKKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgorI2VuZGlmIC8qIEVYVDJfRkxBVF9JTkNMVURFUyAqLworCisvKiAjZGVmaW5lIERFQlVHX1FVT1RBIDEgKi8KKworI2lmbmRlZiBfX2F0dHJpYnV0ZV9fCisjIGlmICFkZWZpbmVkIF9fR05VQ19fIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDgpIHx8IF9fU1RSSUNUX0FOU0lfXworIyAgZGVmaW5lIF9fYXR0cmlidXRlX18oeCkKKyMgZW5kaWYKKyNlbmRpZgorCisjZGVmaW5lIGxvZ19lcnIoZm9ybWF0LCBhcmcgLi4uKQkJCQkJXAorCWZwcmludGYoc3RkZXJyLCAiW0VSUk9SXSAlczolZDolczo6ICIgZm9ybWF0ICJcbiIsCQlcCisJCV9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18sICMjIGFyZykKKworI2lmZGVmIERFQlVHX1FVT1RBCisjIGRlZmluZSBsb2dfZGVidWcoZm9ybWF0LCBhcmcgLi4uKQkJCQkJXAorCWZwcmludGYoc3RkZXJyLCAiW0RFQlVHXSAlczolZDolczo6ICIgZm9ybWF0ICJcbiIsCQlcCisJCV9fRklMRV9fLCBfX0xJTkVfXywgX19mdW5jX18sICMjIGFyZykKKyNlbHNlCisjIGRlZmluZSBsb2dfZGVidWcoLi4uKQorI2VuZGlmCisKKyNlbmRpZiAvKiBfX1FVT1RBX0NPTU1PTl9IX18gKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9kaWN0LmMgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvZGljdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNWMxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvZGljdC5jCkBAIC0wLDAgKzEsMTUzMSBAQAorLyoKKyAqIERpY3Rpb25hcnkgQWJzdHJhY3QgRGF0YSBUeXBlCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgS2F6IEt5bGhla3UgPGthekBhc2hpLmZvb3RwcmludHMubmV0PgorICoKKyAqIEZyZWUgU29mdHdhcmUgTGljZW5zZToKKyAqCisgKiBBbGwgcmlnaHRzIGFyZSByZXNlcnZlZCBieSB0aGUgYXV0aG9yLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKyAqIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBmcmVlbHkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUsCisgKiBwb3NzaWJseSBpbiBleGNoYW5nZSBmb3IgYSBmZWUsIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMKKyAqIGludGFjdC4gUGVybWlzc2lvbiBpcyBhbHNvIGdyYW50ZWQgdG8gYWRhcHQgdGhpcyBzb2Z0d2FyZSB0byBwcm9kdWNlCisgKiBkZXJpdmF0aXZlIHdvcmtzLCBhcyBsb25nIGFzIHRoZSBtb2RpZmllZCB2ZXJzaW9ucyBjYXJyeSB0aGlzIGNvcHlyaWdodAorICogbm90aWNlIGFuZCBhZGRpdGlvbmFsIG5vdGljZXMgc3RhdGluZyB0aGF0IHRoZSB3b3JrIGhhcyBiZWVuIG1vZGlmaWVkLgorICogVGhpcyBzb3VyY2UgY29kZSBtYXkgYmUgdHJhbnNsYXRlZCBpbnRvIGV4ZWN1dGFibGUgZm9ybSBhbmQgaW5jb3Jwb3JhdGVkCisgKiBpbnRvIHByb3ByaWV0YXJ5IHNvZnR3YXJlOyB0aGVyZSBpcyBubyByZXF1aXJlbWVudCBmb3Igc3VjaCBzb2Z0d2FyZSB0bworICogY29udGFpbiBhIGNvcHlyaWdodCBub3RpY2UgcmVsYXRlZCB0byB0aGlzIHNvdXJjZS4KKyAqCisgKiAkSWQ6IGRpY3QuYyx2IDEuNDAuMi43IDIwMDAvMTEvMTMgMDE6MzY6NDQga2F6IEV4cCAkCisgKiAkTmFtZToga2F6bGliXzFfMjAgJAorICovCisKKyNkZWZpbmUgRElDVF9OT0RFQlVHCisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBFWFQyRlNfQVRUUih4KSBfX2F0dHJpYnV0ZV9fKHgpCisjZWxzZQorI2RlZmluZSBFWFQyRlNfQVRUUih4KQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpZmRlZiBESUNUX05PREVCVUcKKyNkZWZpbmUgZGljdF9hc3NlcnQoeCkKKyNlbHNlCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjZGVmaW5lIGRpY3RfYXNzZXJ0KHgpIGFzc2VydCh4KQorI2VuZGlmCisjZGVmaW5lIERJQ1RfSU1QTEVNRU5UQVRJT04KKyNpbmNsdWRlICJkaWN0LmgiCisKKyNpZmRlZiBLQVpMSUJfUkNTSUQKK3N0YXRpYyBjb25zdCBjaGFyIHJjc2lkW10gPSAiJElkOiBkaWN0LmMsdiAxLjQwLjIuNyAyMDAwLzExLzEzIDAxOjM2OjQ0IGtheiBFeHAgJCI7CisjZW5kaWYKKworLyoKKyAqIFRoZXNlIG1hY3JvcyBwcm92aWRlIHNob3J0IGNvbnZlbmllbnQgbmFtZXMgZm9yIHN0cnVjdHVyZSBtZW1iZXJzLAorICogd2hpY2ggYXJlIGVtYmVsbGlzaGVkIHdpdGggZGljdF8gcHJlZml4ZXMgc28gdGhhdCB0aGV5IGFyZQorICogcHJvcGVybHkgY29uZmluZWQgdG8gdGhlIGRvY3VtZW50ZWQgbmFtZXNwYWNlLiBJdCdzIGxlZ2FsIGZvciBhCisgKiBwcm9ncmFtIHdoaWNoIHVzZXMgZGljdCB0byBkZWZpbmUsIGZvciBpbnN0YW5jZSwgYSBtYWNybyBjYWxsZWQgYGBwYXJlbnQnJy4KKyAqIFN1Y2ggYSBtYWNybyB3b3VsZCBpbnRlcmZlcmUgd2l0aCB0aGUgZG5vZGVfdCBzdHJ1Y3QgZGVmaW5pdGlvbi4KKyAqIEluIGdlbmVyYWwsIGhpZ2hseSBwb3J0YWJsZSBhbmQgcmV1c2FibGUgQyBtb2R1bGVzIHdoaWNoIGV4cG9zZSB0aGVpcgorICogc3RydWN0dXJlcyBuZWVkIHRvIGNvbmZpbmUgc3RydWN0dXJlIG1lbWJlciBuYW1lcyB0byB3ZWxsLWRlZmluZWQgc3BhY2VzLgorICogVGhlIHJlc3VsdGluZyBpZGVudGlmaWVycyBhcmVuJ3QgbmVjZXNzYXJpbHkgY29udmVuaWVudCB0byB1c2UsIG5vcgorICogcmVhZGFibGUsIGluIHRoZSBpbXBsZW1lbnRhdGlvbiwgaG93ZXZlciEKKyAqLworCisjZGVmaW5lIGxlZnQgZGljdF9sZWZ0CisjZGVmaW5lIHJpZ2h0IGRpY3RfcmlnaHQKKyNkZWZpbmUgcGFyZW50IGRpY3RfcGFyZW50CisjZGVmaW5lIGNvbG9yIGRpY3RfY29sb3IKKyNkZWZpbmUga2V5IGRpY3Rfa2V5CisjZGVmaW5lIGRhdGEgZGljdF9kYXRhCisKKyNkZWZpbmUgbmlsbm9kZSBkaWN0X25pbG5vZGUKKyNkZWZpbmUgbm9kZWNvdW50IGRpY3Rfbm9kZWNvdW50CisjZGVmaW5lIG1heGNvdW50IGRpY3RfbWF4Y291bnQKKyNkZWZpbmUgY29tcGFyZSBkaWN0X2NvbXBhcmUKKyNkZWZpbmUgYWxsb2Nub2RlIGRpY3RfYWxsb2Nub2RlCisjZGVmaW5lIGZyZWVub2RlIGRpY3RfZnJlZW5vZGUKKyNkZWZpbmUgY29udGV4dCBkaWN0X2NvbnRleHQKKyNkZWZpbmUgZHVwZXMgZGljdF9kdXBlcworCisjZGVmaW5lIGRpY3RwdHIgZGljdF9kaWN0cHRyCisKKyNkZWZpbmUgZGljdF9yb290KEQpICgoRCktPm5pbG5vZGUubGVmdCkKKyNkZWZpbmUgZGljdF9uaWwoRCkgKCYoRCktPm5pbG5vZGUpCisjZGVmaW5lIERJQ1RfREVQVEhfTUFYIDY0CisKK3N0YXRpYyBkbm9kZV90ICpkbm9kZV9hbGxvYyh2b2lkICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGRub2RlX2ZyZWUoZG5vZGVfdCAqbm9kZSwgdm9pZCAqY29udGV4dCk7CisKKy8qCisgKiBQZXJmb3JtIGEgYGBsZWZ0IHJvdGF0aW9uJycgYWRqdXN0bWVudCBvbiB0aGUgdHJlZS4gIFRoZSBnaXZlbiBub2RlIFAgYW5kCisgKiBpdHMgcmlnaHQgY2hpbGQgQyBhcmUgcmVhcnJhbmdlZCBzbyB0aGF0IHRoZSBQIGluc3RlYWQgYmVjb21lcyB0aGUgbGVmdAorICogY2hpbGQgb2YgQy4gICBUaGUgbGVmdCBzdWJ0cmVlIG9mIEMgaXMgaW5oZXJpdGVkIGFzIHRoZSBuZXcgcmlnaHQgc3VidHJlZQorICogZm9yIFAuICBUaGUgb3JkZXJpbmcgb2YgdGhlIGtleXMgd2l0aGluIHRoZSB0cmVlIGlzIHRodXMgcHJlc2VydmVkLgorICovCisKK3N0YXRpYyB2b2lkIHJvdGF0ZV9sZWZ0KGRub2RlX3QgKnVwcGVyKQoreworICAgIGRub2RlX3QgKmxvd2VyLCAqbG93bGVmdCwgKnVwcGFyZW50OworCisgICAgbG93ZXIgPSB1cHBlci0+cmlnaHQ7CisgICAgdXBwZXItPnJpZ2h0ID0gbG93bGVmdCA9IGxvd2VyLT5sZWZ0OworICAgIGxvd2xlZnQtPnBhcmVudCA9IHVwcGVyOworCisgICAgbG93ZXItPnBhcmVudCA9IHVwcGFyZW50ID0gdXBwZXItPnBhcmVudDsKKworICAgIC8qIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIHJvb3Qgbm9kZSBoZXJlIGJlY2F1c2Ugcm9vdC0+cGFyZW50IGlzCisgICAgICAgdGhlIHNlbnRpbmVsIG5pbCBub2RlLCBhbmQgcm9vdC0+cGFyZW50LT5sZWZ0IHBvaW50cyBiYWNrIHRvIHJvb3QgKi8KKworICAgIGlmICh1cHBlciA9PSB1cHBhcmVudC0+bGVmdCkgeworCXVwcGFyZW50LT5sZWZ0ID0gbG93ZXI7CisgICAgfSBlbHNlIHsKKwlkaWN0X2Fzc2VydCAodXBwZXIgPT0gdXBwYXJlbnQtPnJpZ2h0KTsKKwl1cHBhcmVudC0+cmlnaHQgPSBsb3dlcjsKKyAgICB9CisKKyAgICBsb3dlci0+bGVmdCA9IHVwcGVyOworICAgIHVwcGVyLT5wYXJlbnQgPSBsb3dlcjsKK30KKworLyoKKyAqIFRoaXMgb3BlcmF0aW9uIGlzIHRoZSBgYG1pcnJvcicnIGltYWdlIG9mIHJvdGF0ZV9sZWZ0LiBJdCBpcworICogdGhlIHNhbWUgcHJvY2VkdXJlLCBidXQgd2l0aCBsZWZ0IGFuZCByaWdodCBpbnRlcmNoYW5nZWQuCisgKi8KKworc3RhdGljIHZvaWQgcm90YXRlX3JpZ2h0KGRub2RlX3QgKnVwcGVyKQoreworICAgIGRub2RlX3QgKmxvd2VyLCAqbG93cmlnaHQsICp1cHBhcmVudDsKKworICAgIGxvd2VyID0gdXBwZXItPmxlZnQ7CisgICAgdXBwZXItPmxlZnQgPSBsb3dyaWdodCA9IGxvd2VyLT5yaWdodDsKKyAgICBsb3dyaWdodC0+cGFyZW50ID0gdXBwZXI7CisKKyAgICBsb3dlci0+cGFyZW50ID0gdXBwYXJlbnQgPSB1cHBlci0+cGFyZW50OworCisgICAgaWYgKHVwcGVyID09IHVwcGFyZW50LT5yaWdodCkgeworCXVwcGFyZW50LT5yaWdodCA9IGxvd2VyOworICAgIH0gZWxzZSB7CisJZGljdF9hc3NlcnQgKHVwcGVyID09IHVwcGFyZW50LT5sZWZ0KTsKKwl1cHBhcmVudC0+bGVmdCA9IGxvd2VyOworICAgIH0KKworICAgIGxvd2VyLT5yaWdodCA9IHVwcGVyOworICAgIHVwcGVyLT5wYXJlbnQgPSBsb3dlcjsKK30KKworLyoKKyAqIERvIGEgcG9zdG9yZGVyIHRyYXZlcnNhbCBvZiB0aGUgdHJlZSByb290ZWQgYXQgdGhlIHNwZWNpZmllZAorICogbm9kZSBhbmQgZnJlZSBldmVyeXRoaW5nIHVuZGVyIGl0LiAgVXNlZCBieSBkaWN0X2ZyZWUoKS4KKyAqLworCitzdGF0aWMgdm9pZCBmcmVlX25vZGVzKGRpY3RfdCAqZGljdCwgZG5vZGVfdCAqbm9kZSwgZG5vZGVfdCAqbmlsKQoreworICAgIGlmIChub2RlID09IG5pbCkKKwlyZXR1cm47CisgICAgZnJlZV9ub2RlcyhkaWN0LCBub2RlLT5sZWZ0LCBuaWwpOworICAgIGZyZWVfbm9kZXMoZGljdCwgbm9kZS0+cmlnaHQsIG5pbCk7CisgICAgZGljdC0+ZnJlZW5vZGUobm9kZSwgZGljdC0+Y29udGV4dCk7Cit9CisKKy8qCisgKiBUaGlzIHByb2NlZHVyZSBwZXJmb3JtcyBhIHZlcmlmaWNhdGlvbiB0aGF0IHRoZSBnaXZlbiBzdWJ0cmVlIGlzIGEgYmluYXJ5CisgKiBzZWFyY2ggdHJlZS4gSXQgcGVyZm9ybXMgYW4gaW5vcmRlciB0cmF2ZXJzYWwgb2YgdGhlIHRyZWUgdXNpbmcgdGhlCisgKiBkaWN0X25leHQoKSBzdWNjZXNzb3IgZnVuY3Rpb24sIHZlcmlmeWluZyB0aGF0IHRoZSBrZXkgb2YgZWFjaCBub2RlIGlzCisgKiBzdHJpY3RseSBsb3dlciB0aGFuIHRoYXQgb2YgaXRzIHN1Y2Nlc3NvciwgaWYgZHVwbGljYXRlcyBhcmUgbm90IGFsbG93ZWQsCisgKiBvciBsb3dlciBvciBlcXVhbCBpZiBkdXBsaWNhdGVzIGFyZSBhbGxvd2VkLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGZvcgorICogZGVidWdnaW5nIHB1cnBvc2VzLgorICovCisjaWZuZGVmIERJQ1RfTk9ERUJVRworc3RhdGljIGludCB2ZXJpZnlfYmludHJlZShkaWN0X3QgKmRpY3QpCit7CisgICAgZG5vZGVfdCAqZmlyc3QsICpuZXh0OworCisgICAgZmlyc3QgPSBkaWN0X2ZpcnN0KGRpY3QpOworCisgICAgaWYgKGRpY3QtPmR1cGVzKSB7CisJd2hpbGUgKGZpcnN0ICYmIChuZXh0ID0gZGljdF9uZXh0KGRpY3QsIGZpcnN0KSkpIHsKKwkgICAgaWYgKGRpY3QtPmNvbXBhcmUoZmlyc3QtPmtleSwgbmV4dC0+a2V5KSA+IDApCisJCXJldHVybiAwOworCSAgICBmaXJzdCA9IG5leHQ7CisJfQorICAgIH0gZWxzZSB7CisJd2hpbGUgKGZpcnN0ICYmIChuZXh0ID0gZGljdF9uZXh0KGRpY3QsIGZpcnN0KSkpIHsKKwkgICAgaWYgKGRpY3QtPmNvbXBhcmUoZmlyc3QtPmtleSwgbmV4dC0+a2V5KSA+PSAwKQorCQlyZXR1cm4gMDsKKwkgICAgZmlyc3QgPSBuZXh0OworCX0KKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHJlY3Vyc2l2ZWx5IHZlcmlmaWVzIHRoYXQgdGhlIGdpdmVuIGJpbmFyeSBzdWJ0cmVlIHNhdGlzZmllcworICogdGhyZWUgb2YgdGhlIHJlZCBibGFjayBwcm9wZXJ0aWVzLiBJdCBjaGVja3MgdGhhdCBldmVyeSByZWQgbm9kZSBoYXMgb25seQorICogYmxhY2sgY2hpbGRyZW4uIEl0IG1ha2VzIHN1cmUgdGhhdCBlYWNoIG5vZGUgaXMgZWl0aGVyIHJlZCBvciBibGFjay4gQW5kIGl0CisgKiBjaGVja3MgdGhhdCBldmVyeSBwYXRoIGhhcyB0aGUgc2FtZSBjb3VudCBvZiBibGFjayBub2RlcyBmcm9tIHJvb3QgdG8gbGVhZi4KKyAqIEl0IHJldHVybnMgdGhlIGJsYWNraGVpZ2h0IG9mIHRoZSBnaXZlbiBzdWJ0cmVlOyB0aGlzIGFsbG93cyBibGFja2hlaWdodHMgdG8KKyAqIGJlIGNvbXB1dGVkIHJlY3Vyc2l2ZWx5IGFuZCBjb21wYXJlZCBmb3IgbGVmdCBhbmQgcmlnaHQgc2libGluZ3MgZm9yCisgKiBtaXNtYXRjaGVzLiBJdCBkb2VzIG5vdCBjaGVjayBmb3IgZXZlcnkgbmlsIG5vZGUgYmVpbmcgYmxhY2ssIGJlY2F1c2UgdGhlcmUKKyAqIGlzIG9ubHkgb25lIHNlbnRpbmVsIG5pbCBub2RlLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdGhlCisgKiBibGFjayBoZWlnaHQgb2YgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoZSBub2RlIGBgcm9vdCcnLCBvciB6ZXJvIGlmIHRoZQorICogc3VidHJlZSBpcyBub3QgcmVkLWJsYWNrLgorICovCisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdmVyaWZ5X3JlZGJsYWNrKGRub2RlX3QgKm5pbCwgZG5vZGVfdCAqcm9vdCkKK3sKKyAgICB1bnNpZ25lZCBoZWlnaHRfbGVmdCwgaGVpZ2h0X3JpZ2h0OworCisgICAgaWYgKHJvb3QgIT0gbmlsKSB7CisJaGVpZ2h0X2xlZnQgPSB2ZXJpZnlfcmVkYmxhY2sobmlsLCByb290LT5sZWZ0KTsKKwloZWlnaHRfcmlnaHQgPSB2ZXJpZnlfcmVkYmxhY2sobmlsLCByb290LT5yaWdodCk7CisJaWYgKGhlaWdodF9sZWZ0ID09IDAgfHwgaGVpZ2h0X3JpZ2h0ID09IDApCisJICAgIHJldHVybiAwOworCWlmIChoZWlnaHRfbGVmdCAhPSBoZWlnaHRfcmlnaHQpCisJICAgIHJldHVybiAwOworCWlmIChyb290LT5jb2xvciA9PSBkbm9kZV9yZWQpIHsKKwkgICAgaWYgKHJvb3QtPmxlZnQtPmNvbG9yICE9IGRub2RlX2JsYWNrKQorCQlyZXR1cm4gMDsKKwkgICAgaWYgKHJvb3QtPnJpZ2h0LT5jb2xvciAhPSBkbm9kZV9ibGFjaykKKwkJcmV0dXJuIDA7CisJICAgIHJldHVybiBoZWlnaHRfbGVmdDsKKwl9CisJaWYgKHJvb3QtPmNvbG9yICE9IGRub2RlX2JsYWNrKQorCSAgICByZXR1cm4gMDsKKwlyZXR1cm4gaGVpZ2h0X2xlZnQgKyAxOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIENvbXB1dGUgdGhlIGFjdHVhbCBjb3VudCBvZiBub2RlcyBieSB0cmF2ZXJzaW5nIHRoZSB0cmVlIGFuZAorICogcmV0dXJuIGl0LiBUaGlzIGNvdWxkIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIHN0b3JlZCBjb3VudCB0bworICogZGV0ZWN0IGEgbWlzbWF0Y2guCisgKi8KKworc3RhdGljIGRpY3Rjb3VudF90IHZlcmlmeV9ub2RlX2NvdW50KGRub2RlX3QgKm5pbCwgZG5vZGVfdCAqcm9vdCkKK3sKKyAgICBpZiAocm9vdCA9PSBuaWwpCisJcmV0dXJuIDA7CisgICAgZWxzZQorCXJldHVybiAxICsgdmVyaWZ5X25vZGVfY291bnQobmlsLCByb290LT5sZWZ0KQorCSAgICArIHZlcmlmeV9ub2RlX2NvdW50KG5pbCwgcm9vdC0+cmlnaHQpOworfQorI2VuZGlmCisKKy8qCisgKiBWZXJpZnkgdGhhdCB0aGUgdHJlZSBjb250YWlucyB0aGUgZ2l2ZW4gbm9kZS4gVGhpcyBpcyBkb25lIGJ5CisgKiB0cmF2ZXJzaW5nIGFsbCBvZiB0aGUgbm9kZXMgYW5kIGNvbXBhcmluZyB0aGVpciBwb2ludGVycyB0byB0aGUKKyAqIGdpdmVuIHBvaW50ZXIuIFJldHVybnMgMSBpZiB0aGUgbm9kZSBpcyBmb3VuZCwgb3RoZXJ3aXNlCisgKiByZXR1cm5zIHplcm8uIEl0IGlzIGludGVuZGVkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCisgKi8KKworc3RhdGljIGludCB2ZXJpZnlfZGljdF9oYXNfbm9kZShkbm9kZV90ICpuaWwsIGRub2RlX3QgKnJvb3QsIGRub2RlX3QgKm5vZGUpCit7CisgICAgaWYgKHJvb3QgIT0gbmlsKSB7CisJcmV0dXJuIHJvb3QgPT0gbm9kZQorCQl8fCB2ZXJpZnlfZGljdF9oYXNfbm9kZShuaWwsIHJvb3QtPmxlZnQsIG5vZGUpCisJCXx8IHZlcmlmeV9kaWN0X2hhc19ub2RlKG5pbCwgcm9vdC0+cmlnaHQsIG5vZGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworCisjaWZkZWYgRTJGU0NLX05PVFVTRUQKKy8qCisgKiBEeW5hbWljYWxseSBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIGRpY3Rpb25hcnkgb2JqZWN0LgorICovCisKK2RpY3RfdCAqZGljdF9jcmVhdGUoZGljdGNvdW50X3QgbWF4Y291bnQsIGRpY3RfY29tcF90IGNvbXApCit7CisgICAgZGljdF90ICpuZXcgPSBtYWxsb2Moc2l6ZW9mICpuZXcpOworCisgICAgaWYgKG5ldykgeworCW5ldy0+Y29tcGFyZSA9IGNvbXA7CisJbmV3LT5hbGxvY25vZGUgPSBkbm9kZV9hbGxvYzsKKwluZXctPmZyZWVub2RlID0gZG5vZGVfZnJlZTsKKwluZXctPmNvbnRleHQgPSBOVUxMOworCW5ldy0+bm9kZWNvdW50ID0gMDsKKwluZXctPm1heGNvdW50ID0gbWF4Y291bnQ7CisJbmV3LT5uaWxub2RlLmxlZnQgPSAmbmV3LT5uaWxub2RlOworCW5ldy0+bmlsbm9kZS5yaWdodCA9ICZuZXctPm5pbG5vZGU7CisJbmV3LT5uaWxub2RlLnBhcmVudCA9ICZuZXctPm5pbG5vZGU7CisJbmV3LT5uaWxub2RlLmNvbG9yID0gZG5vZGVfYmxhY2s7CisJbmV3LT5kdXBlcyA9IDA7CisgICAgfQorICAgIHJldHVybiBuZXc7Cit9CisjZW5kaWYgLyogRTJGU0NLX05PVFVTRUQgKi8KKworLyoKKyAqIFNlbGVjdCBhIGRpZmZlcmVudCBzZXQgb2Ygbm9kZSBhbGxvY2F0b3Igcm91dGluZXMuCisgKi8KKwordm9pZCBkaWN0X3NldF9hbGxvY2F0b3IoZGljdF90ICpkaWN0LCBkbm9kZV9hbGxvY190IGFsLAorCWRub2RlX2ZyZWVfdCBmciwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBkaWN0X2Fzc2VydCAoZGljdF9jb3VudChkaWN0KSA9PSAwKTsKKyAgICBkaWN0X2Fzc2VydCAoKGFsID09IE5VTEwgJiYgZnIgPT0gTlVMTCkgfHwgKGFsICE9IE5VTEwgJiYgZnIgIT0gTlVMTCkpOworCisgICAgZGljdC0+YWxsb2Nub2RlID0gYWwgPyBhbCA6IGRub2RlX2FsbG9jOworICAgIGRpY3QtPmZyZWVub2RlID0gZnIgPyBmciA6IGRub2RlX2ZyZWU7CisgICAgZGljdC0+Y29udGV4dCA9IGNvbnRleHQ7Cit9CisKKyNpZmRlZiBFMkZTQ0tfTk9UVVNFRAorLyoKKyAqIEZyZWUgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGljdGlvbmFyeSBvYmplY3QuIFJlbW92aW5nIHRoZSBub2RlcworICogZnJvbSB0aGUgdHJlZSBiZWZvcmUgZGVsZXRpbmcgaXQgaXMgcmVxdWlyZWQuCisgKi8KKwordm9pZCBkaWN0X2Rlc3Ryb3koZGljdF90ICpkaWN0KQoreworICAgIGRpY3RfYXNzZXJ0IChkaWN0X2lzZW1wdHkoZGljdCkpOworICAgIGZyZWUoZGljdCk7Cit9CisjZW5kaWYKKworLyoKKyAqIEZyZWUgYWxsIHRoZSBub2RlcyBpbiB0aGUgZGljdGlvbmFyeSBieSB1c2luZyB0aGUgZGljdGlvbmFyeSdzCisgKiBpbnN0YWxsZWQgZnJlZSByb3V0aW5lLiBUaGUgZGljdGlvbmFyeSBpcyBlbXB0aWVkLgorICovCisKK3ZvaWQgZGljdF9mcmVlX25vZGVzKGRpY3RfdCAqZGljdCkKK3sKKyAgICBkbm9kZV90ICpuaWwgPSBkaWN0X25pbChkaWN0KSwgKnJvb3QgPSBkaWN0X3Jvb3QoZGljdCk7CisgICAgZnJlZV9ub2RlcyhkaWN0LCByb290LCBuaWwpOworICAgIGRpY3QtPm5vZGVjb3VudCA9IDA7CisgICAgZGljdC0+bmlsbm9kZS5sZWZ0ID0gJmRpY3QtPm5pbG5vZGU7CisgICAgZGljdC0+bmlsbm9kZS5yaWdodCA9ICZkaWN0LT5uaWxub2RlOworfQorCisjaWZkZWYgRTJGU0NLX05PVFVTRUQKKy8qCisgKiBPYnNvbGVzY2VudCBmdW5jdGlvbiwgZXF1aXZhbGVudCB0byBkaWN0X2ZyZWVfbm9kZXMKKyAqLwordm9pZCBkaWN0X2ZyZWUoZGljdF90ICpkaWN0KQoreworI2lmZGVmIEtBWkxJQl9PQlNPTEVTQ0VOVF9ERUJVRworICAgIGRpY3RfYXNzZXJ0ICgiY2FsbCB0byBvYnNvbGVzY2VudCBmdW5jdGlvbiBkaWN0X2ZyZWUoKSIgJiYgMCk7CisjZW5kaWYKKyAgICBkaWN0X2ZyZWVfbm9kZXMoZGljdCk7Cit9CisjZW5kaWYKKworLyoKKyAqIEluaXRpYWxpemUgYSB1c2VyLXN1cHBsaWVkIGRpY3Rpb25hcnkgb2JqZWN0LgorICovCisKK2RpY3RfdCAqZGljdF9pbml0KGRpY3RfdCAqZGljdCwgZGljdGNvdW50X3QgbWF4Y291bnQsIGRpY3RfY29tcF90IGNvbXApCit7CisgICAgZGljdC0+Y29tcGFyZSA9IGNvbXA7CisgICAgZGljdC0+YWxsb2Nub2RlID0gZG5vZGVfYWxsb2M7CisgICAgZGljdC0+ZnJlZW5vZGUgPSBkbm9kZV9mcmVlOworICAgIGRpY3QtPmNvbnRleHQgPSBOVUxMOworICAgIGRpY3QtPm5vZGVjb3VudCA9IDA7CisgICAgZGljdC0+bWF4Y291bnQgPSBtYXhjb3VudDsKKyAgICBkaWN0LT5uaWxub2RlLmxlZnQgPSAmZGljdC0+bmlsbm9kZTsKKyAgICBkaWN0LT5uaWxub2RlLnJpZ2h0ID0gJmRpY3QtPm5pbG5vZGU7CisgICAgZGljdC0+bmlsbm9kZS5wYXJlbnQgPSAmZGljdC0+bmlsbm9kZTsKKyAgICBkaWN0LT5uaWxub2RlLmNvbG9yID0gZG5vZGVfYmxhY2s7CisgICAgZGljdC0+ZHVwZXMgPSAwOworICAgIHJldHVybiBkaWN0OworfQorCisjaWZkZWYgRTJGU0NLX05PVFVTRUQKKy8qCisgKiBJbml0aWFsaXplIGEgZGljdGlvbmFyeSBpbiB0aGUgbGlrZW5lc3Mgb2YgYW5vdGhlciBkaWN0aW9uYXJ5CisgKi8KKwordm9pZCBkaWN0X2luaXRfbGlrZShkaWN0X3QgKmRpY3QsIGNvbnN0IGRpY3RfdCAqdGVtcGxhdGUpCit7CisgICAgZGljdC0+Y29tcGFyZSA9IHRlbXBsYXRlLT5jb21wYXJlOworICAgIGRpY3QtPmFsbG9jbm9kZSA9IHRlbXBsYXRlLT5hbGxvY25vZGU7CisgICAgZGljdC0+ZnJlZW5vZGUgPSB0ZW1wbGF0ZS0+ZnJlZW5vZGU7CisgICAgZGljdC0+Y29udGV4dCA9IHRlbXBsYXRlLT5jb250ZXh0OworICAgIGRpY3QtPm5vZGVjb3VudCA9IDA7CisgICAgZGljdC0+bWF4Y291bnQgPSB0ZW1wbGF0ZS0+bWF4Y291bnQ7CisgICAgZGljdC0+bmlsbm9kZS5sZWZ0ID0gJmRpY3QtPm5pbG5vZGU7CisgICAgZGljdC0+bmlsbm9kZS5yaWdodCA9ICZkaWN0LT5uaWxub2RlOworICAgIGRpY3QtPm5pbG5vZGUucGFyZW50ID0gJmRpY3QtPm5pbG5vZGU7CisgICAgZGljdC0+bmlsbm9kZS5jb2xvciA9IGRub2RlX2JsYWNrOworICAgIGRpY3QtPmR1cGVzID0gdGVtcGxhdGUtPmR1cGVzOworCisgICAgZGljdF9hc3NlcnQgKGRpY3Rfc2ltaWxhcihkaWN0LCB0ZW1wbGF0ZSkpOworfQorCisvKgorICogUmVtb3ZlIGFsbCBub2RlcyBmcm9tIHRoZSBkaWN0aW9uYXJ5ICh3aXRob3V0IGZyZWVpbmcgdGhlbSBpbiBhbnkgd2F5KS4KKyAqLworCitzdGF0aWMgdm9pZCBkaWN0X2NsZWFyKGRpY3RfdCAqZGljdCkKK3sKKyAgICBkaWN0LT5ub2RlY291bnQgPSAwOworICAgIGRpY3QtPm5pbG5vZGUubGVmdCA9ICZkaWN0LT5uaWxub2RlOworICAgIGRpY3QtPm5pbG5vZGUucmlnaHQgPSAmZGljdC0+bmlsbm9kZTsKKyAgICBkaWN0LT5uaWxub2RlLnBhcmVudCA9ICZkaWN0LT5uaWxub2RlOworICAgIGRpY3RfYXNzZXJ0IChkaWN0LT5uaWxub2RlLmNvbG9yID09IGRub2RlX2JsYWNrKTsKK30KKyNlbmRpZiAvKiBFMkZTQ0tfTk9UVVNFRCAqLworCisKKy8qCisgKiBWZXJpZnkgdGhlIGludGVncml0eSBvZiB0aGUgZGljdGlvbmFyeSBzdHJ1Y3R1cmUuICBUaGlzIGlzIHByb3ZpZGVkIGZvcgorICogZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhc3NlcnQgc3RhdGVtZW50cy4gICBKdXN0IGJlY2F1c2UKKyAqIHRoaXMgZnVuY3Rpb24gc3VjY2VlZHMgZG9lc24ndCBtZWFuIHRoYXQgdGhlIHRyZWUgaXMgbm90IGNvcnJ1cHQuIENlcnRhaW4KKyAqIGNvcnJ1cHRpb25zIGluIHRoZSB0cmVlIG1heSBzaW1wbHkgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLgorICovCisjaWZuZGVmIERJQ1RfTk9ERUJVRworaW50IGRpY3RfdmVyaWZ5KGRpY3RfdCAqZGljdCkKK3sKKyAgICBkbm9kZV90ICpuaWwgPSBkaWN0X25pbChkaWN0KSwgKnJvb3QgPSBkaWN0X3Jvb3QoZGljdCk7CisKKyAgICAvKiBjaGVjayB0aGF0IHRoZSBzZW50aW5lbCBub2RlIGFuZCByb290IG5vZGUgYXJlIGJsYWNrICovCisgICAgaWYgKHJvb3QtPmNvbG9yICE9IGRub2RlX2JsYWNrKQorCXJldHVybiAwOworICAgIGlmIChuaWwtPmNvbG9yICE9IGRub2RlX2JsYWNrKQorCXJldHVybiAwOworICAgIGlmIChuaWwtPnJpZ2h0ICE9IG5pbCkKKwlyZXR1cm4gMDsKKyAgICAvKiBuaWwtPmxlZnQgaXMgdGhlIHJvb3Qgbm9kZTsgY2hlY2sgdGhhdCBpdHMgcGFyZW50IHBvaW50ZXIgaXMgbmlsICovCisgICAgaWYgKG5pbC0+bGVmdC0+cGFyZW50ICE9IG5pbCkKKwlyZXR1cm4gMDsKKyAgICAvKiBwZXJmb3JtIGEgd2VhayB0ZXN0IHRoYXQgdGhlIHRyZWUgaXMgYSBiaW5hcnkgc2VhcmNoIHRyZWUgKi8KKyAgICBpZiAoIXZlcmlmeV9iaW50cmVlKGRpY3QpKQorCXJldHVybiAwOworICAgIC8qIHZlcmlmeSB0aGF0IHRoZSB0cmVlIGlzIGEgcmVkLWJsYWNrIHRyZWUgKi8KKyAgICBpZiAoIXZlcmlmeV9yZWRibGFjayhuaWwsIHJvb3QpKQorCXJldHVybiAwOworICAgIGlmICh2ZXJpZnlfbm9kZV9jb3VudChuaWwsIHJvb3QpICE9IGRpY3RfY291bnQoZGljdCkpCisJcmV0dXJuIDA7CisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYgLyogRElDVF9OT0RFQlVHICovCisKKyNpZmRlZiBFMkZTQ0tfTk9UVVNFRAorLyoKKyAqIERldGVybWluZSB3aGV0aGVyIHR3byBkaWN0aW9uYXJpZXMgYXJlIHNpbWlsYXI6IGhhdmUgdGhlIHNhbWUgY29tcGFyaXNvbiBhbmQKKyAqIGFsbG9jYXRvciBmdW5jdGlvbnMsIGFuZCBzYW1lIHN0YXR1cyBhcyB0byB3aGV0aGVyIGR1cGxpY2F0ZXMgYXJlIGFsbG93ZWQuCisgKi8KK2ludCBkaWN0X3NpbWlsYXIoY29uc3QgZGljdF90ICpsZWZ0LCBjb25zdCBkaWN0X3QgKnJpZ2h0KQoreworICAgIGlmIChsZWZ0LT5jb21wYXJlICE9IHJpZ2h0LT5jb21wYXJlKQorCXJldHVybiAwOworCisgICAgaWYgKGxlZnQtPmFsbG9jbm9kZSAhPSByaWdodC0+YWxsb2Nub2RlKQorCXJldHVybiAwOworCisgICAgaWYgKGxlZnQtPmZyZWVub2RlICE9IHJpZ2h0LT5mcmVlbm9kZSkKKwlyZXR1cm4gMDsKKworICAgIGlmIChsZWZ0LT5jb250ZXh0ICE9IHJpZ2h0LT5jb250ZXh0KQorCXJldHVybiAwOworCisgICAgaWYgKGxlZnQtPmR1cGVzICE9IHJpZ2h0LT5kdXBlcykKKwlyZXR1cm4gMDsKKworICAgIHJldHVybiAxOworfQorI2VuZGlmIC8qIEUyRlNDS19OT1RVU0VEICovCisKKy8qCisgKiBMb2NhdGUgYSBub2RlIGluIHRoZSBkaWN0aW9uYXJ5IGhhdmluZyB0aGUgZ2l2ZW4ga2V5LgorICogSWYgdGhlIG5vZGUgaXMgbm90IGZvdW5kLCBhIG51bGwgYSBwb2ludGVyIGlzIHJldHVybmVkIChyYXRoZXIgdGhhbgorICogYSBwb2ludGVyIHRoYXQgZGljdGlvbmFyeSdzIG5pbCBzZW50aW5lbCBub2RlKSwgb3RoZXJ3aXNlIGEgcG9pbnRlciB0byB0aGUKKyAqIGxvY2F0ZWQgbm9kZSBpcyByZXR1cm5lZC4KKyAqLworCitkbm9kZV90ICpkaWN0X2xvb2t1cChkaWN0X3QgKmRpY3QsIGNvbnN0IHZvaWQgKmtleSkKK3sKKyAgICBkbm9kZV90ICpyb290ID0gZGljdF9yb290KGRpY3QpOworICAgIGRub2RlX3QgKm5pbCA9IGRpY3RfbmlsKGRpY3QpOworICAgIGRub2RlX3QgKnNhdmVkOworICAgIGludCByZXN1bHQ7CisKKyAgICAvKiBzaW1wbGUgYmluYXJ5IHNlYXJjaCBhZGFwdGVkIGZvciB0cmVlcyB0aGF0IGNvbnRhaW4gZHVwbGljYXRlIGtleXMgKi8KKworICAgIHdoaWxlIChyb290ICE9IG5pbCkgeworCXJlc3VsdCA9IGRpY3QtPmNvbXBhcmUoa2V5LCByb290LT5rZXkpOworCWlmIChyZXN1bHQgPCAwKQorCSAgICByb290ID0gcm9vdC0+bGVmdDsKKwllbHNlIGlmIChyZXN1bHQgPiAwKQorCSAgICByb290ID0gcm9vdC0+cmlnaHQ7CisJZWxzZSB7CisJICAgIGlmICghZGljdC0+ZHVwZXMpIHsJLyogbm8gZHVwbGljYXRlcywgcmV0dXJuIG1hdGNoCQkqLworCQlyZXR1cm4gcm9vdDsKKwkgICAgfSBlbHNlIHsJCS8qIGNvdWxkIGJlIGR1cGVzLCBmaW5kIGxlZnRtb3N0IG9uZQkqLworCQlkbyB7CisJCSAgICBzYXZlZCA9IHJvb3Q7CisJCSAgICByb290ID0gcm9vdC0+bGVmdDsKKwkJICAgIHdoaWxlIChyb290ICE9IG5pbCAmJiBkaWN0LT5jb21wYXJlKGtleSwgcm9vdC0+a2V5KSkKKwkJCXJvb3QgPSByb290LT5yaWdodDsKKwkJfSB3aGlsZSAocm9vdCAhPSBuaWwpOworCQlyZXR1cm4gc2F2ZWQ7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNpZmRlZiBFMkZTQ0tfTk9UVVNFRAorLyoKKyAqIExvb2sgZm9yIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvd2VzdCBrZXkgdGhhdCBpcyBlcXVhbCB0byBvcgorICogZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBrZXkuICBJZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUsIHJldHVybiBudWxsLgorICovCisKK2Rub2RlX3QgKmRpY3RfbG93ZXJfYm91bmQoZGljdF90ICpkaWN0LCBjb25zdCB2b2lkICprZXkpCit7CisgICAgZG5vZGVfdCAqcm9vdCA9IGRpY3Rfcm9vdChkaWN0KTsKKyAgICBkbm9kZV90ICpuaWwgPSBkaWN0X25pbChkaWN0KTsKKyAgICBkbm9kZV90ICp0ZW50YXRpdmUgPSAwOworCisgICAgd2hpbGUgKHJvb3QgIT0gbmlsKSB7CisJaW50IHJlc3VsdCA9IGRpY3QtPmNvbXBhcmUoa2V5LCByb290LT5rZXkpOworCisJaWYgKHJlc3VsdCA+IDApIHsKKwkgICAgcm9vdCA9IHJvb3QtPnJpZ2h0OworCX0gZWxzZSBpZiAocmVzdWx0IDwgMCkgeworCSAgICB0ZW50YXRpdmUgPSByb290OworCSAgICByb290ID0gcm9vdC0+bGVmdDsKKwl9IGVsc2UgeworCSAgICBpZiAoIWRpY3QtPmR1cGVzKSB7CisJICAgIAlyZXR1cm4gcm9vdDsKKwkgICAgfSBlbHNlIHsKKwkJdGVudGF0aXZlID0gcm9vdDsKKwkJcm9vdCA9IHJvb3QtPmxlZnQ7CisJICAgIH0KKwl9CisgICAgfQorCisgICAgcmV0dXJuIHRlbnRhdGl2ZTsKK30KKworLyoKKyAqIExvb2sgZm9yIHRoZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdyZWF0ZXN0IGtleSB0aGF0IGlzIGVxdWFsIHRvIG9yCisgKiBsb3dlciB0aGFuIHRoZSBnaXZlbiBrZXkuICBJZiB0aGVyZSBpcyBubyBzdWNoIG5vZGUsIHJldHVybiBudWxsLgorICovCisKK2Rub2RlX3QgKmRpY3RfdXBwZXJfYm91bmQoZGljdF90ICpkaWN0LCBjb25zdCB2b2lkICprZXkpCit7CisgICAgZG5vZGVfdCAqcm9vdCA9IGRpY3Rfcm9vdChkaWN0KTsKKyAgICBkbm9kZV90ICpuaWwgPSBkaWN0X25pbChkaWN0KTsKKyAgICBkbm9kZV90ICp0ZW50YXRpdmUgPSAwOworCisgICAgd2hpbGUgKHJvb3QgIT0gbmlsKSB7CisJaW50IHJlc3VsdCA9IGRpY3QtPmNvbXBhcmUoa2V5LCByb290LT5rZXkpOworCisJaWYgKHJlc3VsdCA8IDApIHsKKwkgICAgcm9vdCA9IHJvb3QtPmxlZnQ7CisJfSBlbHNlIGlmIChyZXN1bHQgPiAwKSB7CisJICAgIHRlbnRhdGl2ZSA9IHJvb3Q7CisJICAgIHJvb3QgPSByb290LT5yaWdodDsKKwl9IGVsc2UgeworCSAgICBpZiAoIWRpY3QtPmR1cGVzKSB7CisJICAgIAlyZXR1cm4gcm9vdDsKKwkgICAgfSBlbHNlIHsKKwkJdGVudGF0aXZlID0gcm9vdDsKKwkJcm9vdCA9IHJvb3QtPnJpZ2h0OworCSAgICB9CisJfQorICAgIH0KKworICAgIHJldHVybiB0ZW50YXRpdmU7Cit9CisjZW5kaWYKKworLyoKKyAqIEluc2VydCBhIG5vZGUgaW50byB0aGUgZGljdGlvbmFyeS4gVGhlIG5vZGUgc2hvdWxkIGhhdmUgYmVlbgorICogaW5pdGlhbGl6ZWQgd2l0aCBhIGRhdGEgZmllbGQuIEFsbCBvdGhlciBmaWVsZHMgYXJlIGlnbm9yZWQuCisgKiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGluc2VydCBpbnRvCisgKiBhIGRpY3Rpb25hcnkgdGhhdCBpcyBhbHJlYWR5IGZ1bGwgKGZvciB3aGljaCB0aGUgZGljdF9pc2Z1bGwoKQorICogZnVuY3Rpb24gcmV0dXJucyB0cnVlKS4KKyAqLworCit2b2lkIGRpY3RfaW5zZXJ0KGRpY3RfdCAqZGljdCwgZG5vZGVfdCAqbm9kZSwgY29uc3Qgdm9pZCAqa2V5KQoreworICAgIGRub2RlX3QgKndoZXJlID0gZGljdF9yb290KGRpY3QpLCAqbmlsID0gZGljdF9uaWwoZGljdCk7CisgICAgZG5vZGVfdCAqcGFyZW50ID0gbmlsLCAqdW5jbGUsICpncmFuZHBhOworICAgIGludCByZXN1bHQgPSAtMTsKKworICAgIG5vZGUtPmtleSA9IGtleTsKKworICAgIGRpY3RfYXNzZXJ0ICghZGljdF9pc2Z1bGwoZGljdCkpOworICAgIGRpY3RfYXNzZXJ0ICghZGljdF9jb250YWlucyhkaWN0LCBub2RlKSk7CisgICAgZGljdF9hc3NlcnQgKCFkbm9kZV9pc19pbl9hX2RpY3Qobm9kZSkpOworCisgICAgLyogYmFzaWMgYmluYXJ5IHRyZWUgaW5zZXJ0ICovCisKKyAgICB3aGlsZSAod2hlcmUgIT0gbmlsKSB7CisJcGFyZW50ID0gd2hlcmU7CisJcmVzdWx0ID0gZGljdC0+Y29tcGFyZShrZXksIHdoZXJlLT5rZXkpOworCS8qIHRyYXAgYXR0ZW1wdHMgYXQgZHVwbGljYXRlIGtleSBpbnNlcnRpb24gdW5sZXNzIGl0J3MgZXhwbGljaXRseSBhbGxvd2VkICovCisJZGljdF9hc3NlcnQgKGRpY3QtPmR1cGVzIHx8IHJlc3VsdCAhPSAwKTsKKwlpZiAocmVzdWx0IDwgMCkKKwkgICAgd2hlcmUgPSB3aGVyZS0+bGVmdDsKKwllbHNlCisJICAgIHdoZXJlID0gd2hlcmUtPnJpZ2h0OworICAgIH0KKworICAgIGRpY3RfYXNzZXJ0ICh3aGVyZSA9PSBuaWwpOworCisgICAgaWYgKHJlc3VsdCA8IDApCisJcGFyZW50LT5sZWZ0ID0gbm9kZTsKKyAgICBlbHNlCisJcGFyZW50LT5yaWdodCA9IG5vZGU7CisKKyAgICBub2RlLT5wYXJlbnQgPSBwYXJlbnQ7CisgICAgbm9kZS0+bGVmdCA9IG5pbDsKKyAgICBub2RlLT5yaWdodCA9IG5pbDsKKworICAgIGRpY3QtPm5vZGVjb3VudCsrOworCisgICAgLyogcmVkIGJsYWNrIGFkanVzdG1lbnRzICovCisKKyAgICBub2RlLT5jb2xvciA9IGRub2RlX3JlZDsKKworICAgIHdoaWxlIChwYXJlbnQtPmNvbG9yID09IGRub2RlX3JlZCkgeworCWdyYW5kcGEgPSBwYXJlbnQtPnBhcmVudDsKKwlpZiAocGFyZW50ID09IGdyYW5kcGEtPmxlZnQpIHsKKwkgICAgdW5jbGUgPSBncmFuZHBhLT5yaWdodDsKKwkgICAgaWYgKHVuY2xlLT5jb2xvciA9PSBkbm9kZV9yZWQpIHsJLyogcmVkIHBhcmVudCwgcmVkIHVuY2xlICovCisJCXBhcmVudC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwkJdW5jbGUtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCWdyYW5kcGEtPmNvbG9yID0gZG5vZGVfcmVkOworCQlub2RlID0gZ3JhbmRwYTsKKwkJcGFyZW50ID0gZ3JhbmRwYS0+cGFyZW50OworCSAgICB9IGVsc2UgewkJCQkvKiByZWQgcGFyZW50LCBibGFjayB1bmNsZSAqLworCSAgICAJaWYgKG5vZGUgPT0gcGFyZW50LT5yaWdodCkgeworCQkgICAgcm90YXRlX2xlZnQocGFyZW50KTsKKwkJICAgIHBhcmVudCA9IG5vZGU7CisJCSAgICBkaWN0X2Fzc2VydCAoZ3JhbmRwYSA9PSBwYXJlbnQtPnBhcmVudCk7CisJCSAgICAvKiByb3RhdGlvbiBiZXR3ZWVuIHBhcmVudCBhbmQgY2hpbGQgcHJlc2VydmVzIGdyYW5kcGEgKi8KKwkJfQorCQlwYXJlbnQtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCWdyYW5kcGEtPmNvbG9yID0gZG5vZGVfcmVkOworCQlyb3RhdGVfcmlnaHQoZ3JhbmRwYSk7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNlIHsgCS8qIHN5bW1ldHJpYyBjYXNlczogcGFyZW50ID09IHBhcmVudC0+cGFyZW50LT5yaWdodCAqLworCSAgICB1bmNsZSA9IGdyYW5kcGEtPmxlZnQ7CisJICAgIGlmICh1bmNsZS0+Y29sb3IgPT0gZG5vZGVfcmVkKSB7CisJCXBhcmVudC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwkJdW5jbGUtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCWdyYW5kcGEtPmNvbG9yID0gZG5vZGVfcmVkOworCQlub2RlID0gZ3JhbmRwYTsKKwkJcGFyZW50ID0gZ3JhbmRwYS0+cGFyZW50OworCSAgICB9IGVsc2UgeworCSAgICAJaWYgKG5vZGUgPT0gcGFyZW50LT5sZWZ0KSB7CisJCSAgICByb3RhdGVfcmlnaHQocGFyZW50KTsKKwkJICAgIHBhcmVudCA9IG5vZGU7CisJCSAgICBkaWN0X2Fzc2VydCAoZ3JhbmRwYSA9PSBwYXJlbnQtPnBhcmVudCk7CisJCX0KKwkJcGFyZW50LT5jb2xvciA9IGRub2RlX2JsYWNrOworCQlncmFuZHBhLT5jb2xvciA9IGRub2RlX3JlZDsKKwkJcm90YXRlX2xlZnQoZ3JhbmRwYSk7CisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0KKworICAgIGRpY3Rfcm9vdChkaWN0KS0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKworICAgIGRpY3RfYXNzZXJ0IChkaWN0X3ZlcmlmeShkaWN0KSk7Cit9CisKKyNpZmRlZiBFMkZTQ0tfTk9UVVNFRAorLyoKKyAqIERlbGV0ZSB0aGUgZ2l2ZW4gbm9kZSBmcm9tIHRoZSBkaWN0aW9uYXJ5LiBJZiB0aGUgZ2l2ZW4gbm9kZSBkb2VzIG5vdCBiZWxvbmcKKyAqIHRvIHRoZSBnaXZlbiBkaWN0aW9uYXJ5LCB1bmRlZmluZWQgYmVoYXZpb3IgcmVzdWx0cy4gIEEgcG9pbnRlciB0byB0aGUKKyAqIGRlbGV0ZWQgbm9kZSBpcyByZXR1cm5lZC4KKyAqLworCitkbm9kZV90ICpkaWN0X2RlbGV0ZShkaWN0X3QgKmRpY3QsIGRub2RlX3QgKmRlbGV0ZSkKK3sKKyAgICBkbm9kZV90ICpuaWwgPSBkaWN0X25pbChkaWN0KSwgKmNoaWxkLCAqZGVscGFyZW50ID0gZGVsZXRlLT5wYXJlbnQ7CisKKyAgICAvKiBiYXNpYyBkZWxldGlvbiAqLworCisgICAgZGljdF9hc3NlcnQgKCFkaWN0X2lzZW1wdHkoZGljdCkpOworICAgIGRpY3RfYXNzZXJ0IChkaWN0X2NvbnRhaW5zKGRpY3QsIGRlbGV0ZSkpOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgbm9kZSBiZWluZyBkZWxldGVkIGhhcyB0d28gY2hpbGRyZW4sIHRoZW4gd2UgcmVwbGFjZSBpdCB3aXRoIGl0cworICAgICAqIHN1Y2Nlc3NvciAoaS5lLiB0aGUgbGVmdG1vc3Qgbm9kZSBpbiB0aGUgcmlnaHQgc3VidHJlZS4pIEJ5IGRvaW5nIHRoaXMsCisgICAgICogd2UgYXZvaWQgdGhlIHRyYWRpdGlvbmFsIGFsZ29yaXRobSB1bmRlciB3aGljaCB0aGUgc3VjY2Vzc29yJ3Mga2V5IGFuZAorICAgICAqIHZhbHVlICpvbmx5KiBtb3ZlIHRvIHRoZSBkZWxldGVkIG5vZGUgYW5kIHRoZSBzdWNjZXNzb3IgaXMgc3BsaWNlZCBvdXQKKyAgICAgKiBmcm9tIHRoZSB0cmVlLiBXZSBjYW5ub3QgdXNlIHRoaXMgYXBwcm9hY2ggYmVjYXVzZSB0aGUgdXNlciBtYXkgaG9sZAorICAgICAqIHBvaW50ZXJzIHRvIHRoZSBzdWNjZXNzb3IsIG9yIG5vZGVzIG1heSBiZSBpbmV4dHJpY2FibHkgdGllZCB0byBzb21lCisgICAgICogb3RoZXIgc3RydWN0dXJlcyBieSB3YXkgb2YgZW1iZWRkaW5nLCBldGMuIFNvIHdlIG11c3Qgc3BsaWNlIG91dCB0aGUKKyAgICAgKiBub2RlIHdlIGFyZSBnaXZlbiwgbm90IHNvbWUgb3RoZXIgbm9kZSwgYW5kIG11c3Qgbm90IG1vdmUgY29udGVudHMgZnJvbQorICAgICAqIG9uZSBub2RlIHRvIGFub3RoZXIgYmVoaW5kIHRoZSB1c2VyJ3MgYmFjay4KKyAgICAgKi8KKworICAgIGlmIChkZWxldGUtPmxlZnQgIT0gbmlsICYmIGRlbGV0ZS0+cmlnaHQgIT0gbmlsKSB7CisJZG5vZGVfdCAqbmV4dCA9IGRpY3RfbmV4dChkaWN0LCBkZWxldGUpOworCWRub2RlX3QgKm5leHRwYXJlbnQgPSBuZXh0LT5wYXJlbnQ7CisJZG5vZGVfY29sb3JfdCBuZXh0Y29sb3IgPSBuZXh0LT5jb2xvcjsKKworCWRpY3RfYXNzZXJ0IChuZXh0ICE9IG5pbCk7CisJZGljdF9hc3NlcnQgKG5leHQtPnBhcmVudCAhPSBuaWwpOworCWRpY3RfYXNzZXJ0IChuZXh0LT5sZWZ0ID09IG5pbCk7CisKKwkvKgorCSAqIEZpcnN0LCBzcGxpY2Ugb3V0IHRoZSBzdWNjZXNzb3IgZnJvbSB0aGUgdHJlZSBjb21wbGV0ZWx5LCBieQorCSAqIG1vdmluZyB1cCBpdHMgcmlnaHQgY2hpbGQgaW50byBpdHMgcGxhY2UuCisJICovCisKKwljaGlsZCA9IG5leHQtPnJpZ2h0OworCWNoaWxkLT5wYXJlbnQgPSBuZXh0cGFyZW50OworCisJaWYgKG5leHRwYXJlbnQtPmxlZnQgPT0gbmV4dCkgeworCSAgICBuZXh0cGFyZW50LT5sZWZ0ID0gY2hpbGQ7CisJfSBlbHNlIHsKKwkgICAgZGljdF9hc3NlcnQgKG5leHRwYXJlbnQtPnJpZ2h0ID09IG5leHQpOworCSAgICBuZXh0cGFyZW50LT5yaWdodCA9IGNoaWxkOworCX0KKworCS8qCisJICogTm93IHRoYXQgdGhlIHN1Y2Nlc3NvciBoYXMgYmVlbiBleHRyaWNhdGVkIGZyb20gdGhlIHRyZWUsIGluc3RhbGwgaXQKKwkgKiBpbiBwbGFjZSBvZiB0aGUgbm9kZSB0aGF0IHdlIHdhbnQgZGVsZXRlZC4KKwkgKi8KKworCW5leHQtPnBhcmVudCA9IGRlbHBhcmVudDsKKwluZXh0LT5sZWZ0ID0gZGVsZXRlLT5sZWZ0OworCW5leHQtPnJpZ2h0ID0gZGVsZXRlLT5yaWdodDsKKwluZXh0LT5sZWZ0LT5wYXJlbnQgPSBuZXh0OworCW5leHQtPnJpZ2h0LT5wYXJlbnQgPSBuZXh0OworCW5leHQtPmNvbG9yID0gZGVsZXRlLT5jb2xvcjsKKwlkZWxldGUtPmNvbG9yID0gbmV4dGNvbG9yOworCisJaWYgKGRlbHBhcmVudC0+bGVmdCA9PSBkZWxldGUpIHsKKwkgICAgZGVscGFyZW50LT5sZWZ0ID0gbmV4dDsKKwl9IGVsc2UgeworCSAgICBkaWN0X2Fzc2VydCAoZGVscGFyZW50LT5yaWdodCA9PSBkZWxldGUpOworCSAgICBkZWxwYXJlbnQtPnJpZ2h0ID0gbmV4dDsKKwl9CisKKyAgICB9IGVsc2UgeworCWRpY3RfYXNzZXJ0IChkZWxldGUgIT0gbmlsKTsKKwlkaWN0X2Fzc2VydCAoZGVsZXRlLT5sZWZ0ID09IG5pbCB8fCBkZWxldGUtPnJpZ2h0ID09IG5pbCk7CisKKwljaGlsZCA9IChkZWxldGUtPmxlZnQgIT0gbmlsKSA/IGRlbGV0ZS0+bGVmdCA6IGRlbGV0ZS0+cmlnaHQ7CisKKwljaGlsZC0+cGFyZW50ID0gZGVscGFyZW50ID0gZGVsZXRlLT5wYXJlbnQ7CisKKwlpZiAoZGVsZXRlID09IGRlbHBhcmVudC0+bGVmdCkgeworCSAgICBkZWxwYXJlbnQtPmxlZnQgPSBjaGlsZDsKKwl9IGVsc2UgeworCSAgICBkaWN0X2Fzc2VydCAoZGVsZXRlID09IGRlbHBhcmVudC0+cmlnaHQpOworCSAgICBkZWxwYXJlbnQtPnJpZ2h0ID0gY2hpbGQ7CisJfQorICAgIH0KKworICAgIGRlbGV0ZS0+cGFyZW50ID0gTlVMTDsKKyAgICBkZWxldGUtPnJpZ2h0ID0gTlVMTDsKKyAgICBkZWxldGUtPmxlZnQgPSBOVUxMOworCisgICAgZGljdC0+bm9kZWNvdW50LS07CisKKyAgICBkaWN0X2Fzc2VydCAodmVyaWZ5X2JpbnRyZWUoZGljdCkpOworCisgICAgLyogcmVkLWJsYWNrIGFkanVzdG1lbnRzICovCisKKyAgICBpZiAoZGVsZXRlLT5jb2xvciA9PSBkbm9kZV9ibGFjaykgeworCWRub2RlX3QgKnBhcmVudCwgKnNpc3RlcjsKKworCWRpY3Rfcm9vdChkaWN0KS0+Y29sb3IgPSBkbm9kZV9yZWQ7CisKKwl3aGlsZSAoY2hpbGQtPmNvbG9yID09IGRub2RlX2JsYWNrKSB7CisJICAgIHBhcmVudCA9IGNoaWxkLT5wYXJlbnQ7CisJICAgIGlmIChjaGlsZCA9PSBwYXJlbnQtPmxlZnQpIHsKKwkJc2lzdGVyID0gcGFyZW50LT5yaWdodDsKKwkJZGljdF9hc3NlcnQgKHNpc3RlciAhPSBuaWwpOworCQlpZiAoc2lzdGVyLT5jb2xvciA9PSBkbm9kZV9yZWQpIHsKKwkJICAgIHNpc3Rlci0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwkJICAgIHBhcmVudC0+Y29sb3IgPSBkbm9kZV9yZWQ7CisJCSAgICByb3RhdGVfbGVmdChwYXJlbnQpOworCQkgICAgc2lzdGVyID0gcGFyZW50LT5yaWdodDsKKwkJICAgIGRpY3RfYXNzZXJ0IChzaXN0ZXIgIT0gbmlsKTsKKwkJfQorCQlpZiAoc2lzdGVyLT5sZWZ0LT5jb2xvciA9PSBkbm9kZV9ibGFjaworCQkJJiYgc2lzdGVyLT5yaWdodC0+Y29sb3IgPT0gZG5vZGVfYmxhY2spIHsKKwkJICAgIHNpc3Rlci0+Y29sb3IgPSBkbm9kZV9yZWQ7CisJCSAgICBjaGlsZCA9IHBhcmVudDsKKwkJfSBlbHNlIHsKKwkJICAgIGlmIChzaXN0ZXItPnJpZ2h0LT5jb2xvciA9PSBkbm9kZV9ibGFjaykgeworCQkJZGljdF9hc3NlcnQgKHNpc3Rlci0+bGVmdC0+Y29sb3IgPT0gZG5vZGVfcmVkKTsKKwkJCXNpc3Rlci0+bGVmdC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwkJCXNpc3Rlci0+Y29sb3IgPSBkbm9kZV9yZWQ7CisJCQlyb3RhdGVfcmlnaHQoc2lzdGVyKTsKKwkJCXNpc3RlciA9IHBhcmVudC0+cmlnaHQ7CisJCQlkaWN0X2Fzc2VydCAoc2lzdGVyICE9IG5pbCk7CisJCSAgICB9CisJCSAgICBzaXN0ZXItPmNvbG9yID0gcGFyZW50LT5jb2xvcjsKKwkJICAgIHNpc3Rlci0+cmlnaHQtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCSAgICBwYXJlbnQtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCSAgICByb3RhdGVfbGVmdChwYXJlbnQpOworCQkgICAgYnJlYWs7CisJCX0KKwkgICAgfSBlbHNlIHsJLyogc3ltbWV0cmljIGNhc2U6IGNoaWxkID09IGNoaWxkLT5wYXJlbnQtPnJpZ2h0ICovCisJCWRpY3RfYXNzZXJ0IChjaGlsZCA9PSBwYXJlbnQtPnJpZ2h0KTsKKwkJc2lzdGVyID0gcGFyZW50LT5sZWZ0OworCQlkaWN0X2Fzc2VydCAoc2lzdGVyICE9IG5pbCk7CisJCWlmIChzaXN0ZXItPmNvbG9yID09IGRub2RlX3JlZCkgeworCQkgICAgc2lzdGVyLT5jb2xvciA9IGRub2RlX2JsYWNrOworCQkgICAgcGFyZW50LT5jb2xvciA9IGRub2RlX3JlZDsKKwkJICAgIHJvdGF0ZV9yaWdodChwYXJlbnQpOworCQkgICAgc2lzdGVyID0gcGFyZW50LT5sZWZ0OworCQkgICAgZGljdF9hc3NlcnQgKHNpc3RlciAhPSBuaWwpOworCQl9CisJCWlmIChzaXN0ZXItPnJpZ2h0LT5jb2xvciA9PSBkbm9kZV9ibGFjaworCQkJJiYgc2lzdGVyLT5sZWZ0LT5jb2xvciA9PSBkbm9kZV9ibGFjaykgeworCQkgICAgc2lzdGVyLT5jb2xvciA9IGRub2RlX3JlZDsKKwkJICAgIGNoaWxkID0gcGFyZW50OworCQl9IGVsc2UgeworCQkgICAgaWYgKHNpc3Rlci0+bGVmdC0+Y29sb3IgPT0gZG5vZGVfYmxhY2spIHsKKwkJCWRpY3RfYXNzZXJ0IChzaXN0ZXItPnJpZ2h0LT5jb2xvciA9PSBkbm9kZV9yZWQpOworCQkJc2lzdGVyLT5yaWdodC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwkJCXNpc3Rlci0+Y29sb3IgPSBkbm9kZV9yZWQ7CisJCQlyb3RhdGVfbGVmdChzaXN0ZXIpOworCQkJc2lzdGVyID0gcGFyZW50LT5sZWZ0OworCQkJZGljdF9hc3NlcnQgKHNpc3RlciAhPSBuaWwpOworCQkgICAgfQorCQkgICAgc2lzdGVyLT5jb2xvciA9IHBhcmVudC0+Y29sb3I7CisJCSAgICBzaXN0ZXItPmxlZnQtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCSAgICBwYXJlbnQtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisJCSAgICByb3RhdGVfcmlnaHQocGFyZW50KTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwl9CisKKwljaGlsZC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKwlkaWN0X3Jvb3QoZGljdCktPmNvbG9yID0gZG5vZGVfYmxhY2s7CisgICAgfQorCisgICAgZGljdF9hc3NlcnQgKGRpY3RfdmVyaWZ5KGRpY3QpKTsKKworICAgIHJldHVybiBkZWxldGU7Cit9CisjZW5kaWYgLyogRTJGU0NLX05PVFVTRUQgKi8KKworLyoKKyAqIEFsbG9jYXRlIGEgbm9kZSB1c2luZyB0aGUgZGljdGlvbmFyeSdzIGFsbG9jYXRvciByb3V0aW5lLCBnaXZlIGl0CisgKiB0aGUgZGF0YSBpdGVtLgorICovCisKK2ludCBkaWN0X2FsbG9jX2luc2VydChkaWN0X3QgKmRpY3QsIGNvbnN0IHZvaWQgKmtleSwgdm9pZCAqZGF0YSkKK3sKKyAgICBkbm9kZV90ICpub2RlID0gZGljdC0+YWxsb2Nub2RlKGRpY3QtPmNvbnRleHQpOworCisgICAgaWYgKG5vZGUpIHsKKwlkbm9kZV9pbml0KG5vZGUsIGRhdGEpOworCWRpY3RfaW5zZXJ0KGRpY3QsIG5vZGUsIGtleSk7CisJcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRTJGU0NLX05PVFVTRUQKK3ZvaWQgZGljdF9kZWxldGVfZnJlZShkaWN0X3QgKmRpY3QsIGRub2RlX3QgKm5vZGUpCit7CisgICAgZGljdF9kZWxldGUoZGljdCwgbm9kZSk7CisgICAgZGljdC0+ZnJlZW5vZGUobm9kZSwgZGljdC0+Y29udGV4dCk7Cit9CisjZW5kaWYKKworLyoKKyAqIFJldHVybiB0aGUgbm9kZSB3aXRoIHRoZSBsb3dlc3QgKGxlZnRtb3N0KSBrZXkuIElmIHRoZSBkaWN0aW9uYXJ5IGlzIGVtcHR5CisgKiAodGhhdCBpcywgZGljdF9pc2VtcHR5KGRpY3QpIHJldHVybnMgMSkgYSBudWxsIHBvaW50ZXIgaXMgcmV0dXJuZWQuCisgKi8KKworZG5vZGVfdCAqZGljdF9maXJzdChkaWN0X3QgKmRpY3QpCit7CisgICAgZG5vZGVfdCAqbmlsID0gZGljdF9uaWwoZGljdCksICpyb290ID0gZGljdF9yb290KGRpY3QpLCAqbGVmdDsKKworICAgIGlmIChyb290ICE9IG5pbCkKKwl3aGlsZSAoKGxlZnQgPSByb290LT5sZWZ0KSAhPSBuaWwpCisJICAgIHJvb3QgPSBsZWZ0OworCisgICAgcmV0dXJuIChyb290ID09IG5pbCkgPyBOVUxMIDogcm9vdDsKK30KKworLyoKKyAqIFJldHVybiB0aGUgbm9kZSB3aXRoIHRoZSBoaWdoZXN0IChyaWdodG1vc3QpIGtleS4gSWYgdGhlIGRpY3Rpb25hcnkgaXMgZW1wdHkKKyAqICh0aGF0IGlzLCBkaWN0X2lzZW1wdHkoZGljdCkgcmV0dXJucyAxKSBhIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZC4KKyAqLworCitkbm9kZV90ICpkaWN0X2xhc3QoZGljdF90ICpkaWN0KQoreworICAgIGRub2RlX3QgKm5pbCA9IGRpY3RfbmlsKGRpY3QpLCAqcm9vdCA9IGRpY3Rfcm9vdChkaWN0KSwgKnJpZ2h0OworCisgICAgaWYgKHJvb3QgIT0gbmlsKQorCXdoaWxlICgocmlnaHQgPSByb290LT5yaWdodCkgIT0gbmlsKQorCSAgICByb290ID0gcmlnaHQ7CisKKyAgICByZXR1cm4gKHJvb3QgPT0gbmlsKSA/IE5VTEwgOiByb290OworfQorCisvKgorICogUmV0dXJuIHRoZSBnaXZlbiBub2RlJ3Mgc3VjY2Vzc29yIG5vZGUtLS10aGUgbm9kZSB3aGljaCBoYXMgdGhlCisgKiBuZXh0IGtleSBpbiB0aGUgdGhlIGxlZnQgdG8gcmlnaHQgb3JkZXJpbmcuIElmIHRoZSBub2RlIGhhcworICogbm8gc3VjY2Vzc29yLCBhIG51bGwgcG9pbnRlciBpcyByZXR1cm5lZCByYXRoZXIgdGhhbiBhIHBvaW50ZXIgdG8KKyAqIHRoZSBuaWwgbm9kZS4KKyAqLworCitkbm9kZV90ICpkaWN0X25leHQoZGljdF90ICpkaWN0LCBkbm9kZV90ICpjdXJyKQoreworICAgIGRub2RlX3QgKm5pbCA9IGRpY3RfbmlsKGRpY3QpLCAqcGFyZW50LCAqbGVmdDsKKworICAgIGlmIChjdXJyLT5yaWdodCAhPSBuaWwpIHsKKwljdXJyID0gY3Vyci0+cmlnaHQ7CisJd2hpbGUgKChsZWZ0ID0gY3Vyci0+bGVmdCkgIT0gbmlsKQorCSAgICBjdXJyID0gbGVmdDsKKwlyZXR1cm4gY3VycjsKKyAgICB9CisKKyAgICBwYXJlbnQgPSBjdXJyLT5wYXJlbnQ7CisKKyAgICB3aGlsZSAocGFyZW50ICE9IG5pbCAmJiBjdXJyID09IHBhcmVudC0+cmlnaHQpIHsKKwljdXJyID0gcGFyZW50OworCXBhcmVudCA9IGN1cnItPnBhcmVudDsKKyAgICB9CisKKyAgICByZXR1cm4gKHBhcmVudCA9PSBuaWwpID8gTlVMTCA6IHBhcmVudDsKK30KKworLyoKKyAqIFJldHVybiB0aGUgZ2l2ZW4gbm9kZSdzIHByZWRlY2Vzc29yLCBpbiB0aGUga2V5IG9yZGVyLgorICogVGhlIG5pbCBzZW50aW5lbCBub2RlIGlzIHJldHVybmVkIGlmIHRoZXJlIGlzIG5vIHByZWRlY2Vzc29yLgorICovCisKK2Rub2RlX3QgKmRpY3RfcHJldihkaWN0X3QgKmRpY3QsIGRub2RlX3QgKmN1cnIpCit7CisgICAgZG5vZGVfdCAqbmlsID0gZGljdF9uaWwoZGljdCksICpwYXJlbnQsICpyaWdodDsKKworICAgIGlmIChjdXJyLT5sZWZ0ICE9IG5pbCkgeworCWN1cnIgPSBjdXJyLT5sZWZ0OworCXdoaWxlICgocmlnaHQgPSBjdXJyLT5yaWdodCkgIT0gbmlsKQorCSAgICBjdXJyID0gcmlnaHQ7CisJcmV0dXJuIGN1cnI7CisgICAgfQorCisgICAgcGFyZW50ID0gY3Vyci0+cGFyZW50OworCisgICAgd2hpbGUgKHBhcmVudCAhPSBuaWwgJiYgY3VyciA9PSBwYXJlbnQtPmxlZnQpIHsKKwljdXJyID0gcGFyZW50OworCXBhcmVudCA9IGN1cnItPnBhcmVudDsKKyAgICB9CisKKyAgICByZXR1cm4gKHBhcmVudCA9PSBuaWwpID8gTlVMTCA6IHBhcmVudDsKK30KKwordm9pZCBkaWN0X2FsbG93X2R1cGVzKGRpY3RfdCAqZGljdCkKK3sKKyAgICBkaWN0LT5kdXBlcyA9IDE7Cit9CisKKyN1bmRlZiBkaWN0X2NvdW50CisjdW5kZWYgZGljdF9pc2VtcHR5CisjdW5kZWYgZGljdF9pc2Z1bGwKKyN1bmRlZiBkbm9kZV9nZXQKKyN1bmRlZiBkbm9kZV9wdXQKKyN1bmRlZiBkbm9kZV9nZXRrZXkKKworZGljdGNvdW50X3QgZGljdF9jb3VudChkaWN0X3QgKmRpY3QpCit7CisgICAgcmV0dXJuIGRpY3QtPm5vZGVjb3VudDsKK30KKworaW50IGRpY3RfaXNlbXB0eShkaWN0X3QgKmRpY3QpCit7CisgICAgcmV0dXJuIGRpY3QtPm5vZGVjb3VudCA9PSAwOworfQorCitpbnQgZGljdF9pc2Z1bGwoZGljdF90ICpkaWN0KQoreworICAgIHJldHVybiBkaWN0LT5ub2RlY291bnQgPT0gZGljdC0+bWF4Y291bnQ7Cit9CisKK2ludCBkaWN0X2NvbnRhaW5zKGRpY3RfdCAqZGljdCwgZG5vZGVfdCAqbm9kZSkKK3sKKyAgICByZXR1cm4gdmVyaWZ5X2RpY3RfaGFzX25vZGUoZGljdF9uaWwoZGljdCksIGRpY3Rfcm9vdChkaWN0KSwgbm9kZSk7Cit9CisKK3N0YXRpYyBkbm9kZV90ICpkbm9kZV9hbGxvYyh2b2lkICpjb250ZXh0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKyAgICByZXR1cm4gbWFsbG9jKHNpemVvZiAqZG5vZGVfYWxsb2MoTlVMTCkpOworfQorCitzdGF0aWMgdm9pZCBkbm9kZV9mcmVlKGRub2RlX3QgKm5vZGUsIHZvaWQgKmNvbnRleHQgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworICAgIGZyZWUobm9kZSk7Cit9CisKK2Rub2RlX3QgKmRub2RlX2NyZWF0ZSh2b2lkICpkYXRhKQoreworICAgIGRub2RlX3QgKm5ldyA9IG1hbGxvYyhzaXplb2YgKm5ldyk7CisgICAgaWYgKG5ldykgeworCW5ldy0+ZGF0YSA9IGRhdGE7CisJbmV3LT5wYXJlbnQgPSBOVUxMOworCW5ldy0+bGVmdCA9IE5VTEw7CisJbmV3LT5yaWdodCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBuZXc7Cit9CisKK2Rub2RlX3QgKmRub2RlX2luaXQoZG5vZGVfdCAqZG5vZGUsIHZvaWQgKmRhdGEpCit7CisgICAgZG5vZGUtPmRhdGEgPSBkYXRhOworICAgIGRub2RlLT5wYXJlbnQgPSBOVUxMOworICAgIGRub2RlLT5sZWZ0ID0gTlVMTDsKKyAgICBkbm9kZS0+cmlnaHQgPSBOVUxMOworICAgIHJldHVybiBkbm9kZTsKK30KKwordm9pZCBkbm9kZV9kZXN0cm95KGRub2RlX3QgKmRub2RlKQoreworICAgIGRpY3RfYXNzZXJ0ICghZG5vZGVfaXNfaW5fYV9kaWN0KGRub2RlKSk7CisgICAgZnJlZShkbm9kZSk7Cit9CisKK3ZvaWQgKmRub2RlX2dldChkbm9kZV90ICpkbm9kZSkKK3sKKyAgICByZXR1cm4gZG5vZGUtPmRhdGE7Cit9CisKK2NvbnN0IHZvaWQgKmRub2RlX2dldGtleShkbm9kZV90ICpkbm9kZSkKK3sKKyAgICByZXR1cm4gZG5vZGUtPmtleTsKK30KKworI2lmZGVmIEUyRlNDS19OT1RVU0VECit2b2lkIGRub2RlX3B1dChkbm9kZV90ICpkbm9kZSwgdm9pZCAqZGF0YSkKK3sKKyAgICBkbm9kZS0+ZGF0YSA9IGRhdGE7Cit9CisjZW5kaWYKKworI2lmbmRlZiBESUNUX05PREVCVUcKK2ludCBkbm9kZV9pc19pbl9hX2RpY3QoZG5vZGVfdCAqZG5vZGUpCit7CisgICAgcmV0dXJuIChkbm9kZS0+cGFyZW50ICYmIGRub2RlLT5sZWZ0ICYmIGRub2RlLT5yaWdodCk7Cit9CisjZW5kaWYKKworI2lmZGVmIEUyRlNDS19OT1RVU0VECit2b2lkIGRpY3RfcHJvY2VzcyhkaWN0X3QgKmRpY3QsIHZvaWQgKmNvbnRleHQsIGRub2RlX3Byb2Nlc3NfdCBmdW5jdGlvbikKK3sKKyAgICBkbm9kZV90ICpub2RlID0gZGljdF9maXJzdChkaWN0KSwgKm5leHQ7CisKKyAgICB3aGlsZSAobm9kZSAhPSBOVUxMKSB7CisJLyogY2hlY2sgZm9yIGNhbGxiYWNrIGZ1bmN0aW9uIGRlbGV0aW5nCSovCisJLyogdGhlIG5leHQgbm9kZSBmcm9tIHVuZGVyIHVzCQkqLworCWRpY3RfYXNzZXJ0IChkaWN0X2NvbnRhaW5zKGRpY3QsIG5vZGUpKTsKKwluZXh0ID0gZGljdF9uZXh0KGRpY3QsIG5vZGUpOworCWZ1bmN0aW9uKGRpY3QsIG5vZGUsIGNvbnRleHQpOworCW5vZGUgPSBuZXh0OworICAgIH0KK30KKworc3RhdGljIHZvaWQgbG9hZF9iZWdpbl9pbnRlcm5hbChkaWN0X2xvYWRfdCAqbG9hZCwgZGljdF90ICpkaWN0KQoreworICAgIGxvYWQtPmRpY3RwdHIgPSBkaWN0OworICAgIGxvYWQtPm5pbG5vZGUubGVmdCA9ICZsb2FkLT5uaWxub2RlOworICAgIGxvYWQtPm5pbG5vZGUucmlnaHQgPSAmbG9hZC0+bmlsbm9kZTsKK30KKwordm9pZCBkaWN0X2xvYWRfYmVnaW4oZGljdF9sb2FkX3QgKmxvYWQsIGRpY3RfdCAqZGljdCkKK3sKKyAgICBkaWN0X2Fzc2VydCAoZGljdF9pc2VtcHR5KGRpY3QpKTsKKyAgICBsb2FkX2JlZ2luX2ludGVybmFsKGxvYWQsIGRpY3QpOworfQorCit2b2lkIGRpY3RfbG9hZF9uZXh0KGRpY3RfbG9hZF90ICpsb2FkLCBkbm9kZV90ICpuZXdub2RlLCBjb25zdCB2b2lkICprZXkpCit7CisgICAgZGljdF90ICpkaWN0ID0gbG9hZC0+ZGljdHB0cjsKKyAgICBkbm9kZV90ICpuaWwgPSAmbG9hZC0+bmlsbm9kZTsKKworICAgIGRpY3RfYXNzZXJ0ICghZG5vZGVfaXNfaW5fYV9kaWN0KG5ld25vZGUpKTsKKyAgICBkaWN0X2Fzc2VydCAoZGljdC0+bm9kZWNvdW50IDwgZGljdC0+bWF4Y291bnQpOworCisjaWZuZGVmIERJQ1RfTk9ERUJVRworICAgIGlmIChkaWN0LT5ub2RlY291bnQgPiAwKSB7CisJaWYgKGRpY3QtPmR1cGVzKQorCSAgICBkaWN0X2Fzc2VydCAoZGljdC0+Y29tcGFyZShuaWwtPmxlZnQtPmtleSwga2V5KSA8PSAwKTsKKwllbHNlCisJICAgIGRpY3RfYXNzZXJ0IChkaWN0LT5jb21wYXJlKG5pbC0+bGVmdC0+a2V5LCBrZXkpIDwgMCk7CisgICAgfQorI2VuZGlmCisKKyAgICBuZXdub2RlLT5rZXkgPSBrZXk7CisgICAgbmlsLT5yaWdodC0+bGVmdCA9IG5ld25vZGU7CisgICAgbmlsLT5yaWdodCA9IG5ld25vZGU7CisgICAgbmV3bm9kZS0+bGVmdCA9IG5pbDsKKyAgICBkaWN0LT5ub2RlY291bnQrKzsKK30KKwordm9pZCBkaWN0X2xvYWRfZW5kKGRpY3RfbG9hZF90ICpsb2FkKQoreworICAgIGRpY3RfdCAqZGljdCA9IGxvYWQtPmRpY3RwdHI7CisgICAgZG5vZGVfdCAqdHJlZVtESUNUX0RFUFRIX01BWF0gPSB7IDAgfTsKKyAgICBkbm9kZV90ICpjdXJyLCAqZGljdG5pbCA9IGRpY3RfbmlsKGRpY3QpLCAqbG9hZG5pbCA9ICZsb2FkLT5uaWxub2RlLCAqbmV4dDsKKyAgICBkbm9kZV90ICpjb21wbGV0ZSA9IDA7CisgICAgZGljdGNvdW50X3QgZnVsbGNvdW50ID0gRElDVENPVU5UX1RfTUFYLCBub2RlY291bnQgPSBkaWN0LT5ub2RlY291bnQ7CisgICAgZGljdGNvdW50X3QgYm90cm93Y291bnQ7CisgICAgdW5zaWduZWQgYmFzZWxldmVsID0gMCwgbGV2ZWwgPSAwLCBpOworCisgICAgZGljdF9hc3NlcnQgKGRub2RlX3JlZCA9PSAwICYmIGRub2RlX2JsYWNrID09IDEpOworCisgICAgd2hpbGUgKGZ1bGxjb3VudCA+PSBub2RlY291bnQgJiYgZnVsbGNvdW50KQorCWZ1bGxjb3VudCA+Pj0gMTsKKworICAgIGJvdHJvd2NvdW50ID0gbm9kZWNvdW50IC0gZnVsbGNvdW50OworCisgICAgZm9yIChjdXJyID0gbG9hZG5pbC0+bGVmdDsgY3VyciAhPSBsb2FkbmlsOyBjdXJyID0gbmV4dCkgeworCW5leHQgPSBjdXJyLT5sZWZ0OworCisJaWYgKGNvbXBsZXRlID09IE5VTEwgJiYgYm90cm93Y291bnQtLSA9PSAwKSB7CisJICAgIGRpY3RfYXNzZXJ0IChiYXNlbGV2ZWwgPT0gMCk7CisJICAgIGRpY3RfYXNzZXJ0IChsZXZlbCA9PSAwKTsKKwkgICAgYmFzZWxldmVsID0gbGV2ZWwgPSAxOworCSAgICBjb21wbGV0ZSA9IHRyZWVbMF07CisKKwkgICAgaWYgKGNvbXBsZXRlICE9IDApIHsKKwkJdHJlZVswXSA9IDA7CisJCWNvbXBsZXRlLT5yaWdodCA9IGRpY3RuaWw7CisJCXdoaWxlICh0cmVlW2xldmVsXSAhPSAwKSB7CisJCSAgICB0cmVlW2xldmVsXS0+cmlnaHQgPSBjb21wbGV0ZTsKKwkJICAgIGNvbXBsZXRlLT5wYXJlbnQgPSB0cmVlW2xldmVsXTsKKwkJICAgIGNvbXBsZXRlID0gdHJlZVtsZXZlbF07CisJCSAgICB0cmVlW2xldmVsKytdID0gMDsKKwkJfQorCSAgICB9CisJfQorCisJaWYgKGNvbXBsZXRlID09IE5VTEwpIHsKKwkgICAgY3Vyci0+bGVmdCA9IGRpY3RuaWw7CisJICAgIGN1cnItPnJpZ2h0ID0gZGljdG5pbDsKKwkgICAgY3Vyci0+Y29sb3IgPSBsZXZlbCAlIDI7CisJICAgIGNvbXBsZXRlID0gY3VycjsKKworCSAgICBkaWN0X2Fzc2VydCAobGV2ZWwgPT0gYmFzZWxldmVsKTsKKwkgICAgd2hpbGUgKHRyZWVbbGV2ZWxdICE9IDApIHsKKwkJdHJlZVtsZXZlbF0tPnJpZ2h0ID0gY29tcGxldGU7CisJCWNvbXBsZXRlLT5wYXJlbnQgPSB0cmVlW2xldmVsXTsKKwkJY29tcGxldGUgPSB0cmVlW2xldmVsXTsKKwkJdHJlZVtsZXZlbCsrXSA9IDA7CisJICAgIH0KKwl9IGVsc2UgeworCSAgICBjdXJyLT5sZWZ0ID0gY29tcGxldGU7CisJICAgIGN1cnItPmNvbG9yID0gKGxldmVsICsgMSkgJSAyOworCSAgICBjb21wbGV0ZS0+cGFyZW50ID0gY3VycjsKKwkgICAgdHJlZVtsZXZlbF0gPSBjdXJyOworCSAgICBjb21wbGV0ZSA9IDA7CisJICAgIGxldmVsID0gYmFzZWxldmVsOworCX0KKyAgICB9CisKKyAgICBpZiAoY29tcGxldGUgPT0gTlVMTCkKKwljb21wbGV0ZSA9IGRpY3RuaWw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgRElDVF9ERVBUSF9NQVg7IGkrKykgeworCWlmICh0cmVlW2ldICE9IDApIHsKKwkgICAgdHJlZVtpXS0+cmlnaHQgPSBjb21wbGV0ZTsKKwkgICAgY29tcGxldGUtPnBhcmVudCA9IHRyZWVbaV07CisJICAgIGNvbXBsZXRlID0gdHJlZVtpXTsKKwl9CisgICAgfQorCisgICAgZGljdG5pbC0+Y29sb3IgPSBkbm9kZV9ibGFjazsKKyAgICBkaWN0bmlsLT5yaWdodCA9IGRpY3RuaWw7CisgICAgY29tcGxldGUtPnBhcmVudCA9IGRpY3RuaWw7CisgICAgY29tcGxldGUtPmNvbG9yID0gZG5vZGVfYmxhY2s7CisgICAgZGljdF9yb290KGRpY3QpID0gY29tcGxldGU7CisKKyAgICBkaWN0X2Fzc2VydCAoZGljdF92ZXJpZnkoZGljdCkpOworfQorCit2b2lkIGRpY3RfbWVyZ2UoZGljdF90ICpkZXN0LCBkaWN0X3QgKnNvdXJjZSkKK3sKKyAgICBkaWN0X2xvYWRfdCBsb2FkOworICAgIGRub2RlX3QgKmxlZnRub2RlID0gZGljdF9maXJzdChkZXN0KSwgKnJpZ2h0bm9kZSA9IGRpY3RfZmlyc3Qoc291cmNlKTsKKworICAgIGRpY3RfYXNzZXJ0IChkaWN0X3NpbWlsYXIoZGVzdCwgc291cmNlKSk7CisKKyAgICBpZiAoc291cmNlID09IGRlc3QpCisJcmV0dXJuOworCisgICAgZGVzdC0+bm9kZWNvdW50ID0gMDsKKyAgICBsb2FkX2JlZ2luX2ludGVybmFsKCZsb2FkLCBkZXN0KTsKKworICAgIGZvciAoOzspIHsKKwlpZiAobGVmdG5vZGUgIT0gTlVMTCAmJiByaWdodG5vZGUgIT0gTlVMTCkgeworCSAgICBpZiAoZGVzdC0+Y29tcGFyZShsZWZ0bm9kZS0+a2V5LCByaWdodG5vZGUtPmtleSkgPCAwKQorCQlnb3RvIGNvcHlsZWZ0OworCSAgICBlbHNlCisJCWdvdG8gY29weXJpZ2h0OworCX0gZWxzZSBpZiAobGVmdG5vZGUgIT0gTlVMTCkgeworCSAgICBnb3RvIGNvcHlsZWZ0OworCX0gZWxzZSBpZiAocmlnaHRub2RlICE9IE5VTEwpIHsKKwkgICAgZ290byBjb3B5cmlnaHQ7CisJfSBlbHNlIHsKKwkgICAgZGljdF9hc3NlcnQgKGxlZnRub2RlID09IE5VTEwgJiYgcmlnaHRub2RlID09IE5VTEwpOworCSAgICBicmVhazsKKwl9CisKKyAgICBjb3B5bGVmdDoKKwl7CisJICAgIGRub2RlX3QgKm5leHQgPSBkaWN0X25leHQoZGVzdCwgbGVmdG5vZGUpOworI2lmbmRlZiBESUNUX05PREVCVUcKKwkgICAgbGVmdG5vZGUtPmxlZnQgPSBOVUxMOwkvKiBzdXBwcmVzcyBhc3NlcnRpb24gaW4gZGljdF9sb2FkX25leHQgKi8KKyNlbmRpZgorCSAgICBkaWN0X2xvYWRfbmV4dCgmbG9hZCwgbGVmdG5vZGUsIGxlZnRub2RlLT5rZXkpOworCSAgICBsZWZ0bm9kZSA9IG5leHQ7CisJICAgIGNvbnRpbnVlOworCX0KKworICAgIGNvcHlyaWdodDoKKwl7CisJICAgIGRub2RlX3QgKm5leHQgPSBkaWN0X25leHQoc291cmNlLCByaWdodG5vZGUpOworI2lmbmRlZiBESUNUX05PREVCVUcKKwkgICAgcmlnaHRub2RlLT5sZWZ0ID0gTlVMTDsKKyNlbmRpZgorCSAgICBkaWN0X2xvYWRfbmV4dCgmbG9hZCwgcmlnaHRub2RlLCByaWdodG5vZGUtPmtleSk7CisJICAgIHJpZ2h0bm9kZSA9IG5leHQ7CisJICAgIGNvbnRpbnVlOworCX0KKyAgICB9CisKKyAgICBkaWN0X2NsZWFyKHNvdXJjZSk7CisgICAgZGljdF9sb2FkX2VuZCgmbG9hZCk7Cit9CisjZW5kaWYgLyogRTJGU0NLX05PVFVTRUQgKi8KKworI2lmZGVmIEtBWkxJQl9URVNUX01BSU4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKwordHlwZWRlZiBjaGFyIGlucHV0X3RbMjU2XTsKKworc3RhdGljIGludCB0b2tlbml6ZShjaGFyICpzdHJpbmcsIC4uLikKK3sKKyAgICBjaGFyICoqdG9rcHRyOworICAgIHZhX2xpc3QgYXJnbGlzdDsKKyAgICBpbnQgdG9rY291bnQgPSAwOworCisgICAgdmFfc3RhcnQoYXJnbGlzdCwgc3RyaW5nKTsKKyAgICB0b2twdHIgPSB2YV9hcmcoYXJnbGlzdCwgY2hhciAqKik7CisgICAgd2hpbGUgKHRva3B0cikgeworCXdoaWxlICgqc3RyaW5nICYmIGlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpzdHJpbmcpKQorCSAgICBzdHJpbmcrKzsKKwlpZiAoISpzdHJpbmcpCisJICAgIGJyZWFrOworCSp0b2twdHIgPSBzdHJpbmc7CisJd2hpbGUgKCpzdHJpbmcgJiYgIWlzc3BhY2UoKHVuc2lnbmVkIGNoYXIpICpzdHJpbmcpKQorCSAgICBzdHJpbmcrKzsKKwl0b2twdHIgPSB2YV9hcmcoYXJnbGlzdCwgY2hhciAqKik7CisJdG9rY291bnQrKzsKKwlpZiAoISpzdHJpbmcpCisJICAgIGJyZWFrOworCSpzdHJpbmcrKyA9IDA7CisgICAgfQorICAgIHZhX2VuZChhcmdsaXN0KTsKKworICAgIHJldHVybiB0b2tjb3VudDsKK30KKworc3RhdGljIGludCBjb21wYXJlZihjb25zdCB2b2lkICprZXkxLCBjb25zdCB2b2lkICprZXkyKQoreworICAgIHJldHVybiBzdHJjbXAoa2V5MSwga2V5Mik7Cit9CisKK3N0YXRpYyBjaGFyICpkdXBzdHJpbmcoY2hhciAqc3RyKQoreworICAgIGludCBzeiA9IHN0cmxlbihzdHIpICsgMTsKKyAgICBjaGFyICpuZXcgPSBtYWxsb2Moc3opOworICAgIGlmIChuZXcpCisJbWVtY3B5KG5ldywgc3RyLCBzeik7CisgICAgcmV0dXJuIG5ldzsKK30KKworc3RhdGljIGRub2RlX3QgKm5ld19ub2RlKHZvaWQgKmMpCit7CisgICAgc3RhdGljIGRub2RlX3QgZmV3WzVdOworICAgIHN0YXRpYyBpbnQgY291bnQ7CisKKyAgICBpZiAoY291bnQgPCA1KQorCXJldHVybiBmZXcgKyBjb3VudCsrOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGRlbF9ub2RlKGRub2RlX3QgKm4sIHZvaWQgKmMpCit7Cit9CisKK3N0YXRpYyBpbnQgcHJvbXB0ID0gMDsKKworc3RhdGljIHZvaWQgY29uc3RydWN0KGRpY3RfdCAqZCkKK3sKKyAgICBpbnB1dF90IGluOworICAgIGludCBkb25lID0gMDsKKyAgICBkaWN0X2xvYWRfdCBkbDsKKyAgICBkbm9kZV90ICpkbjsKKyAgICBjaGFyICp0b2sxLCAqdG9rMiwgKnZhbDsKKyAgICBjb25zdCBjaGFyICprZXk7CisgICAgY2hhciAqaGVscCA9CisJInAgICAgICAgICAgICAgICAgICAgICAgdHVybiBwcm9tcHQgb25cbiIKKwkicSAgICAgICAgICAgICAgICAgICAgICBmaW5pc2ggY29uc3RydWN0aW9uXG4iCisJImEgPGtleT4gPHZhbD4gICAgICAgICAgYWRkIG5ldyBlbnRyeVxuIjsKKworICAgIGlmICghZGljdF9pc2VtcHR5KGQpKQorCXB1dHMoIndhcm5pbmc6IGRpY3Rpb25hcnkgbm90IGVtcHR5ISIpOworCisgICAgZGljdF9sb2FkX2JlZ2luKCZkbCwgZCk7CisKKyAgICB3aGlsZSAoIWRvbmUpIHsKKwlpZiAocHJvbXB0KQorCSAgICBwdXRjaGFyKCc+Jyk7CisJZmZsdXNoKHN0ZG91dCk7CisKKwlpZiAoIWZnZXRzKGluLCBzaXplb2YoaW5wdXRfdCksIHN0ZGluKSkKKwkgICAgYnJlYWs7CisKKwlzd2l0Y2ggKGluWzBdKSB7CisJICAgIGNhc2UgJz8nOgorCQlwdXRzKGhlbHApOworCQlicmVhazsKKwkgICAgY2FzZSAncCc6CisJCXByb21wdCA9IDE7CisJCWJyZWFrOworCSAgICBjYXNlICdxJzoKKwkJZG9uZSA9IDE7CisJCWJyZWFrOworCSAgICBjYXNlICdhJzoKKwkJaWYgKHRva2VuaXplKGluKzEsICZ0b2sxLCAmdG9rMiwgKGNoYXIgKiopIDApICE9IDIpIHsKKwkJICAgIHB1dHMoIndoYXQ/Iik7CisJCSAgICBicmVhazsKKwkJfQorCQlrZXkgPSBkdXBzdHJpbmcodG9rMSk7CisJCXZhbCA9IGR1cHN0cmluZyh0b2syKTsKKwkJZG4gPSBkbm9kZV9jcmVhdGUodmFsKTsKKworCQlpZiAoIWtleSB8fCAhdmFsIHx8ICFkbikgeworCQkgICAgcHV0cygib3V0IG9mIG1lbW9yeSIpOworCQkgICAgZnJlZSgodm9pZCAqKSBrZXkpOworCQkgICAgZnJlZSh2YWwpOworCQkgICAgaWYgKGRuKQorCQkJZG5vZGVfZGVzdHJveShkbik7CisJCX0KKworCQlkaWN0X2xvYWRfbmV4dCgmZGwsIGRuLCBrZXkpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJcHV0Y2hhcignPycpOworCQlwdXRjaGFyKCdcbicpOworCQlicmVhazsKKwl9CisgICAgfQorCisgICAgZGljdF9sb2FkX2VuZCgmZGwpOworfQorCitpbnQgbWFpbih2b2lkKQoreworICAgIGlucHV0X3QgaW47CisgICAgZGljdF90IGRhcnJheVsxMF07CisgICAgZGljdF90ICpkID0gJmRhcnJheVswXTsKKyAgICBkbm9kZV90ICpkbjsKKyAgICBpbnQgaTsKKyAgICBjaGFyICp0b2sxLCAqdG9rMiwgKnZhbDsKKyAgICBjb25zdCBjaGFyICprZXk7CisKKyAgICBjaGFyICpoZWxwID0KKwkiYSA8a2V5PiA8dmFsPiAgICAgICAgICBhZGQgdmFsdWUgdG8gZGljdGlvbmFyeVxuIgorCSJkIDxrZXk+ICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZSBmcm9tIGRpY3Rpb25hcnlcbiIKKwkibCA8a2V5PiAgICAgICAgICAgICAgICBsb29rdXAgdmFsdWUgaW4gZGljdGlvbmFyeVxuIgorCSIoIDxrZXk+ICAgICAgICAgICAgICAgIGxvb2t1cCBsb3dlciBib3VuZFxuIgorCSIpIDxrZXk+ICAgICAgICAgICAgICAgIGxvb2t1cCB1cHBlciBib3VuZFxuIgorCSIjIDxudW0+ICAgICAgICAgICAgICAgIHN3aXRjaCB0byBhbHRlcm5hdGUgZGljdGlvbmFyeSAoMC05KVxuIgorCSJqIDxudW0+IDxudW0+ICAgICAgICAgIG1lcmdlIHR3byBkaWN0aW9uYXJpZXNcbiIKKwkiZiAgICAgICAgICAgICAgICAgICAgICBmcmVlIHRoZSB3aG9sZSBkaWN0aW9uYXJ5XG4iCisJImsgICAgICAgICAgICAgICAgICAgICAgYWxsb3cgZHVwbGljYXRlIGtleXNcbiIKKwkiYyAgICAgICAgICAgICAgICAgICAgICBzaG93IG51bWJlciBvZiBlbnRyaWVzXG4iCisJInQgICAgICAgICAgICAgICAgICAgICAgZHVtcCB3aG9sZSBkaWN0aW9uYXJ5IGluIHNvcnQgb3JkZXJcbiIKKwkibSAgICAgICAgICAgICAgICAgICAgICBtYWtlIGRpY3Rpb25hcnkgb3V0IG9mIHNvcnRlZCBpdGVtc1xuIgorCSJwICAgICAgICAgICAgICAgICAgICAgIHR1cm4gcHJvbXB0IG9uXG4iCisJInMgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIHRvIG5vbi1mdW5jdGlvbmluZyBhbGxvY2F0b3JcbiIKKwkicSAgICAgICAgICAgICAgICAgICAgICBxdWl0IjsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgZGFycmF5IC8gc2l6ZW9mICpkYXJyYXk7IGkrKykKKwlkaWN0X2luaXQoJmRhcnJheVtpXSwgRElDVENPVU5UX1RfTUFYLCBjb21wYXJlZik7CisKKyAgICBmb3IgKDs7KSB7CisJaWYgKHByb21wdCkKKwkgICAgcHV0Y2hhcignPicpOworCWZmbHVzaChzdGRvdXQpOworCisJaWYgKCFmZ2V0cyhpbiwgc2l6ZW9mKGlucHV0X3QpLCBzdGRpbikpCisJICAgIGJyZWFrOworCisJc3dpdGNoKGluWzBdKSB7CisJICAgIGNhc2UgJz8nOgorCQlwdXRzKGhlbHApOworCQlicmVhazsKKwkgICAgY2FzZSAnYSc6CisJCWlmICh0b2tlbml6ZShpbisxLCAmdG9rMSwgJnRvazIsIChjaGFyICoqKSAwKSAhPSAyKSB7CisJCSAgICBwdXRzKCJ3aGF0PyIpOworCQkgICAgYnJlYWs7CisJCX0KKwkJa2V5ID0gZHVwc3RyaW5nKHRvazEpOworCQl2YWwgPSBkdXBzdHJpbmcodG9rMik7CisKKwkJaWYgKCFrZXkgfHwgIXZhbCkgeworCQkgICAgcHV0cygib3V0IG9mIG1lbW9yeSIpOworCQkgICAgZnJlZSgodm9pZCAqKSBrZXkpOworCQkgICAgZnJlZSh2YWwpOworCQl9CisKKwkJaWYgKCFkaWN0X2FsbG9jX2luc2VydChkLCBrZXksIHZhbCkpIHsKKwkJICAgIHB1dHMoImRpY3RfYWxsb2NfaW5zZXJ0IGZhaWxlZCIpOworCQkgICAgZnJlZSgodm9pZCAqKSBrZXkpOworCQkgICAgZnJlZSh2YWwpOworCQkgICAgYnJlYWs7CisJCX0KKwkJYnJlYWs7CisJICAgIGNhc2UgJ2QnOgorCQlpZiAodG9rZW5pemUoaW4rMSwgJnRvazEsIChjaGFyICoqKSAwKSAhPSAxKSB7CisJCSAgICBwdXRzKCJ3aGF0PyIpOworCQkgICAgYnJlYWs7CisJCX0KKwkJZG4gPSBkaWN0X2xvb2t1cChkLCB0b2sxKTsKKwkJaWYgKCFkbikgeworCQkgICAgcHV0cygiZGljdF9sb29rdXAgZmFpbGVkIik7CisJCSAgICBicmVhazsKKwkJfQorCQl2YWwgPSBkbm9kZV9nZXQoZG4pOworCQlrZXkgPSBkbm9kZV9nZXRrZXkoZG4pOworCQlkaWN0X2RlbGV0ZV9mcmVlKGQsIGRuKTsKKworCQlmcmVlKHZhbCk7CisJCWZyZWUoKHZvaWQgKikga2V5KTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2YnOgorCQlkaWN0X2ZyZWUoZCk7CisJCWJyZWFrOworCSAgICBjYXNlICdsJzoKKwkgICAgY2FzZSAnKCc6CisJICAgIGNhc2UgJyknOgorCQlpZiAodG9rZW5pemUoaW4rMSwgJnRvazEsIChjaGFyICoqKSAwKSAhPSAxKSB7CisJCSAgICBwdXRzKCJ3aGF0PyIpOworCQkgICAgYnJlYWs7CisJCX0KKwkJZG4gPSAwOworCQlzd2l0Y2ggKGluWzBdKSB7CisJCWNhc2UgJ2wnOgorCQkgICAgZG4gPSBkaWN0X2xvb2t1cChkLCB0b2sxKTsKKwkJICAgIGJyZWFrOworCQljYXNlICcoJzoKKwkJICAgIGRuID0gZGljdF9sb3dlcl9ib3VuZChkLCB0b2sxKTsKKwkJICAgIGJyZWFrOworCQljYXNlICcpJzoKKwkJICAgIGRuID0gZGljdF91cHBlcl9ib3VuZChkLCB0b2sxKTsKKwkJICAgIGJyZWFrOworCQl9CisJCWlmICghZG4pIHsKKwkJICAgIHB1dHMoImxvb2t1cCBmYWlsZWQiKTsKKwkJICAgIGJyZWFrOworCQl9CisJCXZhbCA9IGRub2RlX2dldChkbik7CisJCXB1dHModmFsKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ20nOgorCQljb25zdHJ1Y3QoZCk7CisJCWJyZWFrOworCSAgICBjYXNlICdrJzoKKwkJZGljdF9hbGxvd19kdXBlcyhkKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ2MnOgorCQlwcmludGYoIiVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIGRpY3RfY291bnQoZCkpOworCQlicmVhazsKKwkgICAgY2FzZSAndCc6CisJCWZvciAoZG4gPSBkaWN0X2ZpcnN0KGQpOyBkbjsgZG4gPSBkaWN0X25leHQoZCwgZG4pKSB7CisJCSAgICBwcmludGYoIiVzXHQlc1xuIiwgKGNoYXIgKikgZG5vZGVfZ2V0a2V5KGRuKSwKKwkJCSAgICAoY2hhciAqKSBkbm9kZV9nZXQoZG4pKTsKKwkJfQorCQlicmVhazsKKwkgICAgY2FzZSAncSc6CisJCWV4aXQoMCk7CisJCWJyZWFrOworCSAgICBjYXNlICdcMCc6CisJCWJyZWFrOworCSAgICBjYXNlICdwJzoKKwkJcHJvbXB0ID0gMTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJ3MnOgorCQlkaWN0X3NldF9hbGxvY2F0b3IoZCwgbmV3X25vZGUsIGRlbF9ub2RlLCBOVUxMKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgJyMnOgorCQlpZiAodG9rZW5pemUoaW4rMSwgJnRvazEsIChjaGFyICoqKSAwKSAhPSAxKSB7CisJCSAgICBwdXRzKCJ3aGF0PyIpOworCQkgICAgYnJlYWs7CisJCX0gZWxzZSB7CisJCSAgICBpbnQgZGljdG51bSA9IGF0b2kodG9rMSk7CisJCSAgICBpZiAoZGljdG51bSA8IDAgfHwgZGljdG51bSA+IDkpIHsKKwkJCXB1dHMoImludmFsaWQgbnVtYmVyIik7CisJCQlicmVhazsKKwkJICAgIH0KKwkJICAgIGQgPSAmZGFycmF5W2RpY3RudW1dOworCQl9CisJCWJyZWFrOworCSAgICBjYXNlICdqJzoKKwkJaWYgKHRva2VuaXplKGluKzEsICZ0b2sxLCAmdG9rMiwgKGNoYXIgKiopIDApICE9IDIpIHsKKwkJICAgIHB1dHMoIndoYXQ/Iik7CisJCSAgICBicmVhazsKKwkJfSBlbHNlIHsKKwkJICAgIGludCBkaWN0MSA9IGF0b2kodG9rMSksIGRpY3QyID0gYXRvaSh0b2syKTsKKwkJICAgIGlmIChkaWN0MSA8IDAgfHwgZGljdDEgPiA5IHx8IGRpY3QyIDwgMCB8fCBkaWN0MiA+IDkpIHsKKwkJCXB1dHMoImludmFsaWQgbnVtYmVyIik7CisJCQlicmVhazsKKwkJICAgIH0KKwkJICAgIGRpY3RfbWVyZ2UoJmRhcnJheVtkaWN0MV0sICZkYXJyYXlbZGljdDJdKTsKKwkJfQorCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJcHV0Y2hhcignPycpOworCQlwdXRjaGFyKCdcbicpOworCQlicmVhazsKKwl9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L2RpY3QuaCBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9kaWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4MDc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9kaWN0LmgKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBEaWN0aW9uYXJ5IEFic3RyYWN0IERhdGEgVHlwZQorICogQ29weXJpZ2h0IChDKSAxOTk3IEtheiBLeWxoZWt1IDxrYXpAYXNoaS5mb290cHJpbnRzLm5ldD4KKyAqCisgKiBGcmVlIFNvZnR3YXJlIExpY2Vuc2U6CisgKgorICogQWxsIHJpZ2h0cyBhcmUgcmVzZXJ2ZWQgYnkgdGhlIGF1dGhvciwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnM6CisgKiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gZnJlZWx5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlLAorICogcG9zc2libHkgaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzCisgKiBpbnRhY3QuIFBlcm1pc3Npb24gaXMgYWxzbyBncmFudGVkIHRvIGFkYXB0IHRoaXMgc29mdHdhcmUgdG8gcHJvZHVjZQorICogZGVyaXZhdGl2ZSB3b3JrcywgYXMgbG9uZyBhcyB0aGUgbW9kaWZpZWQgdmVyc2lvbnMgY2FycnkgdGhpcyBjb3B5cmlnaHQKKyAqIG5vdGljZSBhbmQgYWRkaXRpb25hbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGUgd29yayBoYXMgYmVlbiBtb2RpZmllZC4KKyAqIFRoaXMgc291cmNlIGNvZGUgbWF5IGJlIHRyYW5zbGF0ZWQgaW50byBleGVjdXRhYmxlIGZvcm0gYW5kIGluY29ycG9yYXRlZAorICogaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZTsgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgZm9yIHN1Y2ggc29mdHdhcmUgdG8KKyAqIGNvbnRhaW4gYSBjb3B5cmlnaHQgbm90aWNlIHJlbGF0ZWQgdG8gdGhpcyBzb3VyY2UuCisgKgorICogJElkOiBkaWN0LmgsdiAxLjIyLjIuNiAyMDAwLzExLzEzIDAxOjM2OjQ0IGtheiBFeHAgJAorICogJE5hbWU6IGthemxpYl8xXzIwICQKKyAqLworCisjaWZuZGVmIERJQ1RfSAorI2RlZmluZSBESUNUX0gKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorI2lmZGVmIEtBWkxJQl9TSURFRUZGRUNUX0RFQlVHCisjaW5jbHVkZSAic2Z4LmgiCisjZW5kaWYKKworLyoKKyAqIEJsdXJiIGZvciBpbmNsdXNpb24gaW50byBDKysgdHJhbnNsYXRpb24gdW5pdHMKKyAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBkaWN0Y291bnRfdDsKKyNkZWZpbmUgRElDVENPVU5UX1RfTUFYIFVMT05HX01BWAorCisvKgorICogVGhlIGRpY3Rpb25hcnkgaXMgaW1wbGVtZW50ZWQgYXMgYSByZWQtYmxhY2sgdHJlZQorICovCisKK3R5cGVkZWYgZW51bSB7IGRub2RlX3JlZCwgZG5vZGVfYmxhY2sgfSBkbm9kZV9jb2xvcl90OworCit0eXBlZGVmIHN0cnVjdCBkbm9kZV90IHsKKyNpZiBkZWZpbmVkKERJQ1RfSU1QTEVNRU5UQVRJT04pIHx8ICFkZWZpbmVkKEtBWkxJQl9PUEFRVUVfREVCVUcpCisgICAgc3RydWN0IGRub2RlX3QgKmRpY3RfbGVmdDsKKyAgICBzdHJ1Y3QgZG5vZGVfdCAqZGljdF9yaWdodDsKKyAgICBzdHJ1Y3QgZG5vZGVfdCAqZGljdF9wYXJlbnQ7CisgICAgZG5vZGVfY29sb3JfdCBkaWN0X2NvbG9yOworICAgIGNvbnN0IHZvaWQgKmRpY3Rfa2V5OworICAgIHZvaWQgKmRpY3RfZGF0YTsKKyNlbHNlCisgICAgaW50IGRpY3RfZHVtbXk7CisjZW5kaWYKK30gZG5vZGVfdDsKKwordHlwZWRlZiBpbnQgKCpkaWN0X2NvbXBfdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwordHlwZWRlZiBkbm9kZV90ICooKmRub2RlX2FsbG9jX3QpKHZvaWQgKik7Cit0eXBlZGVmIHZvaWQgKCpkbm9kZV9mcmVlX3QpKGRub2RlX3QgKiwgdm9pZCAqKTsKKwordHlwZWRlZiBzdHJ1Y3QgZGljdF90IHsKKyNpZiBkZWZpbmVkKERJQ1RfSU1QTEVNRU5UQVRJT04pIHx8ICFkZWZpbmVkKEtBWkxJQl9PUEFRVUVfREVCVUcpCisgICAgZG5vZGVfdCBkaWN0X25pbG5vZGU7CisgICAgZGljdGNvdW50X3QgZGljdF9ub2RlY291bnQ7CisgICAgZGljdGNvdW50X3QgZGljdF9tYXhjb3VudDsKKyAgICBkaWN0X2NvbXBfdCBkaWN0X2NvbXBhcmU7CisgICAgZG5vZGVfYWxsb2NfdCBkaWN0X2FsbG9jbm9kZTsKKyAgICBkbm9kZV9mcmVlX3QgZGljdF9mcmVlbm9kZTsKKyAgICB2b2lkICpkaWN0X2NvbnRleHQ7CisgICAgaW50IGRpY3RfZHVwZXM7CisjZWxzZQorICAgIGludCBkaWN0X2R1bW1teTsKKyNlbmRpZgorfSBkaWN0X3Q7CisKK3R5cGVkZWYgdm9pZCAoKmRub2RlX3Byb2Nlc3NfdCkoZGljdF90ICosIGRub2RlX3QgKiwgdm9pZCAqKTsKKwordHlwZWRlZiBzdHJ1Y3QgZGljdF9sb2FkX3QgeworI2lmIGRlZmluZWQoRElDVF9JTVBMRU1FTlRBVElPTikgfHwgIWRlZmluZWQoS0FaTElCX09QQVFVRV9ERUJVRykKKyAgICBkaWN0X3QgKmRpY3RfZGljdHB0cjsKKyAgICBkbm9kZV90IGRpY3Rfbmlsbm9kZTsKKyNlbHNlCisgICAgaW50IGRpY3RfZHVtbW15OworI2VuZGlmCit9IGRpY3RfbG9hZF90OworCitleHRlcm4gZGljdF90ICpkaWN0X2NyZWF0ZShkaWN0Y291bnRfdCwgZGljdF9jb21wX3QpOworZXh0ZXJuIHZvaWQgZGljdF9zZXRfYWxsb2NhdG9yKGRpY3RfdCAqLCBkbm9kZV9hbGxvY190LCBkbm9kZV9mcmVlX3QsIHZvaWQgKik7CitleHRlcm4gdm9pZCBkaWN0X2Rlc3Ryb3koZGljdF90ICopOworZXh0ZXJuIHZvaWQgZGljdF9mcmVlX25vZGVzKGRpY3RfdCAqKTsKK2V4dGVybiB2b2lkIGRpY3RfZnJlZShkaWN0X3QgKik7CitleHRlcm4gZGljdF90ICpkaWN0X2luaXQoZGljdF90ICosIGRpY3Rjb3VudF90LCBkaWN0X2NvbXBfdCk7CitleHRlcm4gdm9pZCBkaWN0X2luaXRfbGlrZShkaWN0X3QgKiwgY29uc3QgZGljdF90ICopOworZXh0ZXJuIGludCBkaWN0X3ZlcmlmeShkaWN0X3QgKik7CitleHRlcm4gaW50IGRpY3Rfc2ltaWxhcihjb25zdCBkaWN0X3QgKiwgY29uc3QgZGljdF90ICopOworZXh0ZXJuIGRub2RlX3QgKmRpY3RfbG9va3VwKGRpY3RfdCAqLCBjb25zdCB2b2lkICopOworZXh0ZXJuIGRub2RlX3QgKmRpY3RfbG93ZXJfYm91bmQoZGljdF90ICosIGNvbnN0IHZvaWQgKik7CitleHRlcm4gZG5vZGVfdCAqZGljdF91cHBlcl9ib3VuZChkaWN0X3QgKiwgY29uc3Qgdm9pZCAqKTsKK2V4dGVybiB2b2lkIGRpY3RfaW5zZXJ0KGRpY3RfdCAqLCBkbm9kZV90ICosIGNvbnN0IHZvaWQgKik7CitleHRlcm4gZG5vZGVfdCAqZGljdF9kZWxldGUoZGljdF90ICosIGRub2RlX3QgKik7CitleHRlcm4gaW50IGRpY3RfYWxsb2NfaW5zZXJ0KGRpY3RfdCAqLCBjb25zdCB2b2lkICosIHZvaWQgKik7CitleHRlcm4gdm9pZCBkaWN0X2RlbGV0ZV9mcmVlKGRpY3RfdCAqLCBkbm9kZV90ICopOworZXh0ZXJuIGRub2RlX3QgKmRpY3RfZmlyc3QoZGljdF90ICopOworZXh0ZXJuIGRub2RlX3QgKmRpY3RfbGFzdChkaWN0X3QgKik7CitleHRlcm4gZG5vZGVfdCAqZGljdF9uZXh0KGRpY3RfdCAqLCBkbm9kZV90ICopOworZXh0ZXJuIGRub2RlX3QgKmRpY3RfcHJldihkaWN0X3QgKiwgZG5vZGVfdCAqKTsKK2V4dGVybiBkaWN0Y291bnRfdCBkaWN0X2NvdW50KGRpY3RfdCAqKTsKK2V4dGVybiBpbnQgZGljdF9pc2VtcHR5KGRpY3RfdCAqKTsKK2V4dGVybiBpbnQgZGljdF9pc2Z1bGwoZGljdF90ICopOworZXh0ZXJuIGludCBkaWN0X2NvbnRhaW5zKGRpY3RfdCAqLCBkbm9kZV90ICopOworZXh0ZXJuIHZvaWQgZGljdF9hbGxvd19kdXBlcyhkaWN0X3QgKik7CitleHRlcm4gaW50IGRub2RlX2lzX2luX2FfZGljdChkbm9kZV90ICopOworZXh0ZXJuIGRub2RlX3QgKmRub2RlX2NyZWF0ZSh2b2lkICopOworZXh0ZXJuIGRub2RlX3QgKmRub2RlX2luaXQoZG5vZGVfdCAqLCB2b2lkICopOworZXh0ZXJuIHZvaWQgZG5vZGVfZGVzdHJveShkbm9kZV90ICopOworZXh0ZXJuIHZvaWQgKmRub2RlX2dldChkbm9kZV90ICopOworZXh0ZXJuIGNvbnN0IHZvaWQgKmRub2RlX2dldGtleShkbm9kZV90ICopOworZXh0ZXJuIHZvaWQgZG5vZGVfcHV0KGRub2RlX3QgKiwgdm9pZCAqKTsKK2V4dGVybiB2b2lkIGRpY3RfcHJvY2VzcyhkaWN0X3QgKiwgdm9pZCAqLCBkbm9kZV9wcm9jZXNzX3QpOworZXh0ZXJuIHZvaWQgZGljdF9sb2FkX2JlZ2luKGRpY3RfbG9hZF90ICosIGRpY3RfdCAqKTsKK2V4dGVybiB2b2lkIGRpY3RfbG9hZF9uZXh0KGRpY3RfbG9hZF90ICosIGRub2RlX3QgKiwgY29uc3Qgdm9pZCAqKTsKK2V4dGVybiB2b2lkIGRpY3RfbG9hZF9lbmQoZGljdF9sb2FkX3QgKik7CitleHRlcm4gdm9pZCBkaWN0X21lcmdlKGRpY3RfdCAqLCBkaWN0X3QgKik7CisKKyNpZiBkZWZpbmVkKERJQ1RfSU1QTEVNRU5UQVRJT04pIHx8ICFkZWZpbmVkKEtBWkxJQl9PUEFRVUVfREVCVUcpCisjaWZkZWYgS0FaTElCX1NJREVFRkZFQ1RfREVCVUcKKyNkZWZpbmUgZGljdF9pc2Z1bGwoRCkgKFNGWF9DSEVDSyhEKS0+ZGljdF9ub2RlY291bnQgPT0gKEQpLT5kaWN0X21heGNvdW50KQorI2Vsc2UKKyNkZWZpbmUgZGljdF9pc2Z1bGwoRCkgKChEKS0+ZGljdF9ub2RlY291bnQgPT0gKEQpLT5kaWN0X21heGNvdW50KQorI2VuZGlmCisjZGVmaW5lIGRpY3RfY291bnQoRCkgKChEKS0+ZGljdF9ub2RlY291bnQpCisjZGVmaW5lIGRpY3RfaXNlbXB0eShEKSAoKEQpLT5kaWN0X25vZGVjb3VudCA9PSAwKQorI2RlZmluZSBkbm9kZV9nZXQoTikgKChOKS0+ZGljdF9kYXRhKQorI2RlZmluZSBkbm9kZV9nZXRrZXkoTikgKChOKS0+ZGljdF9rZXkpCisjZGVmaW5lIGRub2RlX3B1dChOLCBYKSAoKE4pLT5kaWN0X2RhdGEgPSAoWCkpCisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9kcWJsa192Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjUxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvZHFibGtfdjIuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogSGVhZGVyIGZpbGUgZm9yIGRpc2sgZm9ybWF0IG9mIG5ldyBxdW90YWZpbGUgZm9ybWF0CisgKgorICogSmFuIEthcmEgPGphY2tAc3VzZS5jej4gLSBzcG9uc29yZWQgYnkgU3VTRSBDUgorICovCisKKyNpZm5kZWYgX19RVU9UQV9EUUJMS19WMl9IX18KKyNkZWZpbmUgX19RVU9UQV9EUUJMS19WMl9IX18KKworI2luY2x1ZGUgInF1b3RhaW9fdHJlZS5oIgorCisvKiBTdHJ1Y3R1cmUgZm9yIGZvcm1hdCBzcGVjaWZpYyBpbmZvcm1hdGlvbiAqLworc3RydWN0IHYyX21lbV9kcWluZm8geworCXN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvIGRxaV9xdHJlZTsKKwl1bnNpZ25lZCBpbnQgZHFpX2ZsYWdzOwkJLyogRmxhZ3Mgc2V0IGluIHF1b3RhZmlsZSAqLworCXVuc2lnbmVkIGludCBkcWlfdXNlZF9lbnRyaWVzOwkvKiBOdW1iZXIgb2YgZW50cmllcyBpbiBmaWxlIC0KKwkJCQkJICAgdXBkYXRlZCBieSBzY2FuX2RxdW90cyAqLworCXVuc2lnbmVkIGludCBkcWlfZGF0YV9ibG9ja3M7CS8qIE51bWJlciBvZiBkYXRhIGJsb2NrcyBpbiBmaWxlIC0KKwkJCQkJICAgdXBkYXRlZCBieSBzY2FuX2RxdW90cyAqLworfTsKKworc3RydWN0IHYyX21lbV9kcWJsayB7CisJbG9uZyBsb25nIGRxYl9vZmY7CS8qIE9mZnNldCBvZiBkcXVvdCBpbiBmaWxlICovCit9OworCitzdHJ1Y3QgcXVvdGFmaWxlX29wczsJCS8qIFdpbGwgYmUgZGVmaW5lZCBsYXRlciBpbiBxdW90YWlvLmggKi8KKworLyogT3BlcmF0aW9ucyBhYm92ZSB0aGlzIGZvcm1hdCAqLworZXh0ZXJuIHN0cnVjdCBxdW90YWZpbGVfb3BzIHF1b3RhZmlsZV9vcHNfMjsKKworI2VuZGlmICAvKiBfX1FVT1RBX0RRQkxLX1YyX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L21rcXVvdGEuYyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9ta3F1b3RhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQwN2M3NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9ta3F1b3RhLmMKQEAgLTAsMCArMSw3MDAgQEAKKy8qCisgKiBta3F1b3RhLmMgLS0tIGNyZWF0ZSBxdW90YSBmaWxlcyBmb3IgYSBmaWxlc3lzdGVtCisgKgorICogQWRpdHlhIEthbGkgPGFkaXR5YWthbGlAZ29vZ2xlLmNvbT4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiZTJwL2UycC5oIgorCisjaW5jbHVkZSAicXVvdGFpby5oIgorI2luY2x1ZGUgInF1b3RhaW9fdjIuaCIKKyNpbmNsdWRlICJxdW90YWlvX3RyZWUuaCIKKyNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlICJkaWN0LmgiCisKKy8qIE5lZWRlZCBmb3IgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2YoaW50KSAhPSBzaXplb2Yodm9pZCAqKSAqLworI2RlZmluZSBVSU5UX1RPX1ZPSURQVFIodmFsKSAgKCh2b2lkICopKGludHB0cl90KSh2YWwpKQorI2RlZmluZSBWT0lEUFRSX1RPX1VJTlQocHRyKSAgKCh1bnNpZ25lZCBpbnQpKGludHB0cl90KShwdHIpKQorCisjaWYgREVCVUdfUVVPVEEKK3N0YXRpYyB2b2lkIHByaW50X2lub2RlKHN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwlpZiAoIWlub2RlKQorCQlyZXR1cm47CisKKwlmcHJpbnRmKHN0ZGVyciwgIiAgaV9tb2RlID0gJWRcbiIsIGlub2RlLT5pX21vZGUpOworCWZwcmludGYoc3RkZXJyLCAiICBpX3VpZCA9ICVkXG4iLCBpbm9kZS0+aV91aWQpOworCWZwcmludGYoc3RkZXJyLCAiICBpX3NpemUgPSAlZFxuIiwgaW5vZGUtPmlfc2l6ZSk7CisJZnByaW50ZihzdGRlcnIsICIgIGlfYXRpbWUgPSAlZFxuIiwgaW5vZGUtPmlfYXRpbWUpOworCWZwcmludGYoc3RkZXJyLCAiICBpX2N0aW1lID0gJWRcbiIsIGlub2RlLT5pX2N0aW1lKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiAgaV9tdGltZSA9ICVkXG4iLCBpbm9kZS0+aV9tdGltZSk7CisJZnByaW50ZihzdGRlcnIsICIgIGlfZHRpbWUgPSAlZFxuIiwgaW5vZGUtPmlfZHRpbWUpOworCWZwcmludGYoc3RkZXJyLCAiICBpX2dpZCA9ICVkXG4iLCBpbm9kZS0+aV9naWQpOworCWZwcmludGYoc3RkZXJyLCAiICBpX2xpbmtzX2NvdW50ID0gJWRcbiIsIGlub2RlLT5pX2xpbmtzX2NvdW50KTsKKwlmcHJpbnRmKHN0ZGVyciwgIiAgaV9ibG9ja3MgPSAlZFxuIiwgaW5vZGUtPmlfYmxvY2tzKTsKKwlmcHJpbnRmKHN0ZGVyciwgIiAgaV9mbGFncyA9ICVkXG4iLCBpbm9kZS0+aV9mbGFncyk7CisKKwlyZXR1cm47Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2RxdW90KGNvbnN0IGNoYXIgKmRlc2MsIHN0cnVjdCBkcXVvdCAqZHEpCit7CisJaWYgKGRlc2MpCisJCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIGRlc2MpOworCWZwcmludGYoc3RkZXJyLCAiJXUgJWxsZDolbGxkOiVsbGQgJWxsZDolbGxkOiVsbGRcbiIsCisJCWRxLT5kcV9pZCwgZHEtPmRxX2RxYi5kcWJfY3Vyc3BhY2UsCisJCWRxLT5kcV9kcWIuZHFiX2Jzb2Z0bGltaXQsIGRxLT5kcV9kcWIuZHFiX2JoYXJkbGltaXQsCisJCWRxLT5kcV9kcWIuZHFiX2N1cmlub2RlcywKKwkJZHEtPmRxX2RxYi5kcWJfaXNvZnRsaW1pdCwgZHEtPmRxX2RxYi5kcWJfaWhhcmRsaW1pdCk7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgcHJpbnRfZHF1b3QoY29uc3QgY2hhciAqZGVzYyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQlzdHJ1Y3QgZHF1b3QgKmRxIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKK30KKyNlbmRpZgorCisvKgorICogUmV0dXJucyAwIGlmIG5vdCBhYmxlIHRvIGZpbmQgdGhlIHF1b3RhIGZpbGUsIG90aGVyd2lzZSByZXR1cm5zIGl0cworICogaW5vZGUgbnVtYmVyLgorICovCitpbnQgcXVvdGFfZmlsZV9leGlzdHMoZXh0Ml9maWxzeXMgZnMsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSkKK3sKKwljaGFyIHFmX25hbWVbMjU2XTsKKwllcnJjb2RlX3QgcmV0OworCWV4dDJfaW5vX3QgaW5vOworCisJaWYgKHF0eXBlID49IE1BWFFVT1RBUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlxdW90YV9nZXRfcWZfbmFtZShxdHlwZSwgUUZNVF9WRlNfVjEsIHFmX25hbWUpOworCisJcmV0ID0gZXh0MmZzX2xvb2t1cChmcywgRVhUMl9ST09UX0lOTywgcWZfbmFtZSwgc3RybGVuKHFmX25hbWUpLCAwLAorCQkJICAgICZpbm8pOworCWlmIChyZXQpCisJCXJldHVybiAwOworCisJcmV0dXJuIGlubzsKK30KKworLyoKKyAqIFNldCB0aGUgdmFsdWUgZm9yIHJlc2VydmVkIHF1b3RhIGlub2RlIG51bWJlciBmaWVsZCBpbiBzdXBlcmJsb2NrLgorICovCit2b2lkIHF1b3RhX3NldF9zYl9pbnVtKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywgZW51bSBxdW90YV90eXBlIHF0eXBlKQoreworCWV4dDJfaW5vX3QgKmludW1wOworCisJaW51bXAgPSBxdW90YV9zYl9pbnVtcChmcy0+c3VwZXIsIHF0eXBlKTsKKworCWxvZ19kZWJ1Zygic2V0dGluZyBxdW90YSBpbm8gaW4gc3VwZXJibG9jazogaW5vPSV1LCB0eXBlPSVkIiwgaW5vLAorCQkgcXR5cGUpOworCSppbnVtcCA9IGlubzsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7Cit9CisKK2VycmNvZGVfdCBxdW90YV9yZW1vdmVfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSkKK3sKKwlleHQyX2lub190IHFmX2lubzsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYml0bWFwcyhmcyk7CisJaWYgKHJldHZhbCkgeworCQlsb2dfZGVidWcoIkNvdWxkbid0IHJlYWQgYml0bWFwczogJXMiLCBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXFmX2lubyA9ICpxdW90YV9zYl9pbnVtcChmcy0+c3VwZXIsIHF0eXBlKTsKKwlpZiAocWZfaW5vID09IDApCisJCXJldHVybiAwOworCXJldHZhbCA9IHF1b3RhX2lub2RlX3RydW5jYXRlKGZzLCBxZl9pbm8pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJaWYgKHFmX2lubyA+PSBFWFQyX0ZJUlNUX0lOT0RFKGZzLT5zdXBlcikpIHsKKwkJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIHFmX2lubywgJmlub2RlKTsKKwkJaWYgKCFyZXR2YWwpIHsKKwkJCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCQkJZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBxZl9pbm8sICZpbm9kZSk7CisJCX0KKwkJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgcWZfaW5vLCAtMSwgMCk7CisJCWV4dDJmc19tYXJrX2liX2RpcnR5KGZzKTsKKworCX0KKwlxdW90YV9zZXRfc2JfaW51bShmcywgMCwgcXR5cGUpOworCisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX1NVUEVSX09OTFk7CisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2JpdG1hcHMoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJbG9nX2RlYnVnKCJDb3VsZG4ndCB3cml0ZSBiaXRtYXBzOiAlcyIsIGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9kcXVvdHMoZGljdF90ICpkaWN0LCBzdHJ1Y3QgcXVvdGFfaGFuZGxlICpxaCkKK3sKKwlkbm9kZV90CQkqbjsKKwlzdHJ1Y3QgZHF1b3QJKmRxOworCisJZm9yIChuID0gZGljdF9maXJzdChkaWN0KTsgbjsgbiA9IGRpY3RfbmV4dChkaWN0LCBuKSkgeworCQlkcSA9IGRub2RlX2dldChuKTsKKwkJaWYgKGRxKSB7CisJCQlwcmludF9kcXVvdCgid3JpdGUiLCBkcSk7CisJCQlkcS0+ZHFfaCA9IHFoOworCQkJdXBkYXRlX2dyYWNlX3RpbWVzKGRxKTsKKwkJCXFoLT5xaF9vcHMtPmNvbW1pdF9kcXVvdChkcSk7CisJCX0KKwl9Cit9CisKK2VycmNvZGVfdCBxdW90YV93cml0ZV9pbm9kZShxdW90YV9jdHhfdCBxY3R4LCB1bnNpZ25lZCBpbnQgcXR5cGVfYml0cykKK3sKKwlpbnQJCXJldHZhbCA9IDA7CisJZW51bSBxdW90YV90eXBlCXF0eXBlOworCWRpY3RfdAkJKmRpY3Q7CisJZXh0Ml9maWxzeXMJZnM7CisJc3RydWN0IHF1b3RhX2hhbmRsZSAqaCA9IE5VTEw7CisJaW50CQlmbXQgPSBRRk1UX1ZGU19WMTsKKworCWlmICghcWN0eCkKKwkJcmV0dXJuIDA7CisKKwlmcyA9IHFjdHgtPmZzOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgcXVvdGFfaGFuZGxlKSwgJmgpOworCWlmIChyZXR2YWwpIHsKKwkJbG9nX2RlYnVnKCJVbmFibGUgdG8gYWxsb2NhdGUgcXVvdGEgaGFuZGxlOiAlcyIsCisJCQllcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iaXRtYXBzKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWxvZ19kZWJ1ZygiQ291bGRuJ3QgcmVhZCBiaXRtYXBzOiAlcyIsIGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCWdvdG8gb3V0OworCX0KKworCWZvciAocXR5cGUgPSAwOyBxdHlwZSA8IE1BWFFVT1RBUzsgcXR5cGUrKykgeworCQlpZiAoKCgxIDw8IHF0eXBlKSAmIHF0eXBlX2JpdHMpID09IDApCisJCQljb250aW51ZTsKKworCQlkaWN0ID0gcWN0eC0+cXVvdGFfZGljdFtxdHlwZV07CisJCWlmICghZGljdCkKKwkJCWNvbnRpbnVlOworCisJCXJldHZhbCA9IHF1b3RhX2ZpbGVfY3JlYXRlKGgsIGZzLCBxdHlwZSwgZm10KTsKKwkJaWYgKHJldHZhbCA8IDApIHsKKwkJCWxvZ19kZWJ1ZygiQ2Fubm90IGluaXRpYWxpemUgaW8gb24gcXVvdGFmaWxlIik7CisJCQljb250aW51ZTsKKwkJfQorCisJCXdyaXRlX2RxdW90cyhkaWN0LCBoKTsKKwkJcmV0dmFsID0gcXVvdGFfZmlsZV9jbG9zZShxY3R4LCBoKTsKKwkJaWYgKHJldHZhbCA8IDApIHsKKwkJCWxvZ19lcnIoIkNhbm5vdCBmaW5pc2ggSU8gb24gbmV3IHF1b3RhZmlsZTogJXMiLAorCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCQlpZiAoaC0+cWhfcWYuZTJfZmlsZSkKKwkJCQlleHQyZnNfZmlsZV9jbG9zZShoLT5xaF9xZi5lMl9maWxlKTsKKwkJCSh2b2lkKSBxdW90YV9pbm9kZV90cnVuY2F0ZShmcywgaC0+cWhfcWYuaW5vKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogU2V0IHF1b3RhIGlub2RlIG51bWJlcnMgaW4gc3VwZXJibG9jay4gKi8KKwkJcXVvdGFfc2V0X3NiX2ludW0oZnMsIGgtPnFoX3FmLmlubywgcXR5cGUpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCWV4dDJmc19tYXJrX2JiX2RpcnR5KGZzKTsKKwkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfU1VQRVJfT05MWTsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfYml0bWFwcyhmcyk7CisJaWYgKHJldHZhbCkgeworCQlsb2dfZGVidWcoIkNvdWxkbid0IHdyaXRlIGJpdG1hcHM6ICVzIiwgZXJyb3JfbWVzc2FnZShyZXR2YWwpKTsKKwkJZ290byBvdXQ7CisJfQorb3V0OgorCWlmIChoKQorCQlleHQyZnNfZnJlZV9tZW0oJmgpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBjb21wdXRpbmcgcXVvdGEgaW4gbWVtb3J5LiAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIGludCBkaWN0X3VpbnRfY21wKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCit7CisJdW5zaWduZWQgaW50CWMsIGQ7CisKKwljID0gVk9JRFBUUl9UT19VSU5UKGEpOworCWQgPSBWT0lEUFRSX1RPX1VJTlQoYik7CisKKwlpZiAoYyA9PSBkKQorCQlyZXR1cm4gMDsKKwllbHNlIGlmIChjID4gZCkKKwkJcmV0dXJuIDE7CisJZWxzZQorCQlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbmxpbmUgcWlkX3QgZ2V0X3FpZChzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSkKK3sKKwl1bnNpZ25lZCBpbnQgaW5vZGVfc2l6ZTsKKworCXN3aXRjaCAocXR5cGUpIHsKKwljYXNlIFVTUlFVT1RBOgorCQlyZXR1cm4gaW5vZGVfdWlkKCppbm9kZSk7CisJY2FzZSBHUlBRVU9UQToKKwkJcmV0dXJuIGlub2RlX2dpZCgqaW5vZGUpOworCWNhc2UgUFJKUVVPVEE6CisJCWlub2RlX3NpemUgPSBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKworCQkJaW5vZGUtPmlfZXh0cmFfaXNpemU7CisJCWlmIChpbm9kZV9pbmNsdWRlcyhpbm9kZV9zaXplLCBpX3Byb2ppZCkpCisJCQlyZXR1cm4gaW5vZGVfcHJvamlkKCppbm9kZSk7CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHF1b3RhX2Rub2RlX2ZyZWUoZG5vZGVfdCAqbm9kZSwKKwkJCSAgICAgdm9pZCAqY29udGV4dCBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJdm9pZCAqcHRyID0gbm9kZSA/IGRub2RlX2dldChub2RlKSA6IDA7CisKKwlleHQyZnNfZnJlZV9tZW0oJnB0cik7CisJZnJlZShub2RlKTsKK30KKworLyoKKyAqIFNldCB1cCB0aGUgcXVvdGEgdHJhY2tpbmcgZGF0YSBzdHJ1Y3R1cmVzLgorICovCitlcnJjb2RlX3QgcXVvdGFfaW5pdF9jb250ZXh0KHF1b3RhX2N0eF90ICpxY3R4LCBleHQyX2ZpbHN5cyBmcywKKwkJCSAgICAgdW5zaWduZWQgaW50IHF0eXBlX2JpdHMpCit7CisJZXJyY29kZV90IGVycjsKKwlkaWN0X3QJKmRpY3Q7CisJcXVvdGFfY3R4X3QgY3R4OworCWVudW0gcXVvdGFfdHlwZQlxdHlwZTsKKworCWVyciA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgcXVvdGFfY3R4KSwgJmN0eCk7CisJaWYgKGVycikgeworCQlsb2dfZGVidWcoIkZhaWxlZCB0byBhbGxvY2F0ZSBxdW90YSBjb250ZXh0Iik7CisJCXJldHVybiBlcnI7CisJfQorCisJbWVtc2V0KGN0eCwgMCwgc2l6ZW9mKHN0cnVjdCBxdW90YV9jdHgpKTsKKwlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspIHsKKwkJY3R4LT5xdW90YV9maWxlW3F0eXBlXSA9IE5VTEw7CisJCWlmICgoKDEgPDwgcXR5cGUpICYgcXR5cGVfYml0cykgPT0gMCkKKwkJCWNvbnRpbnVlOworCQllcnIgPSBleHQyZnNfZ2V0X21lbShzaXplb2YoZGljdF90KSwgJmRpY3QpOworCQlpZiAoZXJyKSB7CisJCQlsb2dfZGVidWcoIkZhaWxlZCB0byBhbGxvY2F0ZSBkaWN0aW9uYXJ5Iik7CisJCQlxdW90YV9yZWxlYXNlX2NvbnRleHQoJmN0eCk7CisJCQlyZXR1cm4gZXJyOworCQl9CisJCWN0eC0+cXVvdGFfZGljdFtxdHlwZV0gPSBkaWN0OworCQlkaWN0X2luaXQoZGljdCwgRElDVENPVU5UX1RfTUFYLCBkaWN0X3VpbnRfY21wKTsKKwkJZGljdF9zZXRfYWxsb2NhdG9yKGRpY3QsIE5VTEwsIHF1b3RhX2Rub2RlX2ZyZWUsIE5VTEwpOworCX0KKworCWN0eC0+ZnMgPSBmczsKKwkqcWN0eCA9IGN0eDsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBxdW90YV9yZWxlYXNlX2NvbnRleHQocXVvdGFfY3R4X3QgKnFjdHgpCit7CisJZXJyY29kZV90IGVycjsKKwlkaWN0X3QJKmRpY3Q7CisJZW51bSBxdW90YV90eXBlCXF0eXBlOworCXF1b3RhX2N0eF90IGN0eDsKKworCWlmICghcWN0eCkKKwkJcmV0dXJuOworCisJY3R4ID0gKnFjdHg7CisJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKSB7CisJCWRpY3QgPSBjdHgtPnF1b3RhX2RpY3RbcXR5cGVdOworCQljdHgtPnF1b3RhX2RpY3RbcXR5cGVdID0gMDsKKwkJaWYgKGRpY3QpIHsKKwkJCWRpY3RfZnJlZV9ub2RlcyhkaWN0KTsKKwkJCWZyZWUoZGljdCk7CisJCX0KKwkJaWYgKGN0eC0+cXVvdGFfZmlsZVtxdHlwZV0pIHsKKwkJCWVyciA9IHF1b3RhX2ZpbGVfY2xvc2UoY3R4LCBjdHgtPnF1b3RhX2ZpbGVbcXR5cGVdKTsKKwkJCWlmIChlcnIpIHsKKwkJCQlsb2dfZXJyKCJDYW5ub3QgY2xvc2UgcXVvdGFmaWxlOiAlcyIsCisJCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCQkJZXh0MmZzX2ZyZWVfbWVtKCZjdHgtPnF1b3RhX2ZpbGVbcXR5cGVdKTsKKwkJCX0KKwkJfQorCX0KKwkqcWN0eCA9IE5VTEw7CisJZnJlZShjdHgpOworfQorCitzdGF0aWMgc3RydWN0IGRxdW90ICpnZXRfZHEoZGljdF90ICpkaWN0LCBfX3UzMiBrZXkpCit7CisJc3RydWN0IGRxdW90CSpkcTsKKwlkbm9kZV90CQkqbjsKKworCW4gPSBkaWN0X2xvb2t1cChkaWN0LCBVSU5UX1RPX1ZPSURQVFIoa2V5KSk7CisJaWYgKG4pCisJCWRxID0gZG5vZGVfZ2V0KG4pOworCWVsc2UgeworCQlpZiAoZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBkcXVvdCksICZkcSkpIHsKKwkJCWxvZ19lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBkcXVvdCIpOworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwkJbWVtc2V0KGRxLCAwLCBzaXplb2Yoc3RydWN0IGRxdW90KSk7CisJCWRpY3RfYWxsb2NfaW5zZXJ0KGRpY3QsIFVJTlRfVE9fVk9JRFBUUihrZXkpLCBkcSk7CisJCWRxLT5kcV9pZCA9IGtleTsKKwl9CisJcmV0dXJuIGRxOworfQorCisKKy8qCisgKiBDYWxsZWQgdG8gdXBkYXRlIHRoZSBibG9ja3MgdXNlZCBieSBhIHBhcnRpY3VsYXIgaW5vZGUKKyAqLwordm9pZCBxdW90YV9kYXRhX2FkZChxdW90YV9jdHhfdCBxY3R4LCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUsCisJCSAgICBleHQyX2lub190IGlubyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICBxc2l6ZV90IHNwYWNlKQoreworCXN0cnVjdCBkcXVvdAkqZHE7CisJZGljdF90CQkqZGljdDsKKwllbnVtIHF1b3RhX3R5cGUJcXR5cGU7CisKKwlpZiAoIXFjdHgpCisJCXJldHVybjsKKworCWxvZ19kZWJ1ZygiQUREX0RBVEE6IElub2RlOiAldSwgVUlEL0dJRDogJXUvJXUsIHNwYWNlOiAlbGQiLCBpbm8sCisJCQlpbm9kZV91aWQoKmlub2RlKSwKKwkJCWlub2RlX2dpZCgqaW5vZGUpLCBzcGFjZSk7CisJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKSB7CisJCWRpY3QgPSBxY3R4LT5xdW90YV9kaWN0W3F0eXBlXTsKKwkJaWYgKGRpY3QpIHsKKwkJCWRxID0gZ2V0X2RxKGRpY3QsIGdldF9xaWQoaW5vZGUsIHF0eXBlKSk7CisJCQlpZiAoZHEpCisJCQkJZHEtPmRxX2RxYi5kcWJfY3Vyc3BhY2UgKz0gc3BhY2U7CisJCX0KKwl9Cit9CisKKy8qCisgKiBDYWxsZWQgdG8gcmVtb3ZlIHNvbWUgYmxvY2tzIHVzZWQgYnkgYSBwYXJ0aWN1bGFyIGlub2RlCisgKi8KK3ZvaWQgcXVvdGFfZGF0YV9zdWIocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlLAorCQkgICAgZXh0Ml9pbm9fdCBpbm8gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgcXNpemVfdCBzcGFjZSkKK3sKKwlzdHJ1Y3QgZHF1b3QJKmRxOworCWRpY3RfdAkJKmRpY3Q7CisJZW51bSBxdW90YV90eXBlCXF0eXBlOworCisJaWYgKCFxY3R4KQorCQlyZXR1cm47CisKKwlsb2dfZGVidWcoIlNVQl9EQVRBOiBJbm9kZTogJXUsIFVJRC9HSUQ6ICV1LyV1LCBzcGFjZTogJWxkIiwgaW5vLAorCQkJaW5vZGVfdWlkKCppbm9kZSksCisJCQlpbm9kZV9naWQoKmlub2RlKSwgc3BhY2UpOworCWZvciAocXR5cGUgPSAwOyBxdHlwZSA8IE1BWFFVT1RBUzsgcXR5cGUrKykgeworCQlkaWN0ID0gcWN0eC0+cXVvdGFfZGljdFtxdHlwZV07CisJCWlmIChkaWN0KSB7CisJCQlkcSA9IGdldF9kcShkaWN0LCBnZXRfcWlkKGlub2RlLCBxdHlwZSkpOworCQkJZHEtPmRxX2RxYi5kcWJfY3Vyc3BhY2UgLT0gc3BhY2U7CisJCX0KKwl9Cit9CisKKy8qCisgKiBDYWxsZWQgdG8gY291bnQgdGhlIGZpbGVzIHVzZWQgYnkgYW4gaW5vZGUncyB1c2VyL2dyb3VwCisgKi8KK3ZvaWQgcXVvdGFfZGF0YV9pbm9kZXMocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlLAorCQkgICAgICAgZXh0Ml9pbm9fdCBpbm8gRVhUMkZTX0FUVFIoKHVudXNlZCkpLCBpbnQgYWRqdXN0KQoreworCXN0cnVjdCBkcXVvdAkqZHE7CisJZGljdF90CQkqZGljdDsKKwllbnVtIHF1b3RhX3R5cGUJcXR5cGU7CisKKwlpZiAoIXFjdHgpCisJCXJldHVybjsKKworCWxvZ19kZWJ1ZygiQURKX0lOT0RFOiBJbm9kZTogJXUsIFVJRC9HSUQ6ICV1LyV1LCBhZGp1c3Q6ICVkIiwgaW5vLAorCQkJaW5vZGVfdWlkKCppbm9kZSksCisJCQlpbm9kZV9naWQoKmlub2RlKSwgYWRqdXN0KTsKKwlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspIHsKKwkJZGljdCA9IHFjdHgtPnF1b3RhX2RpY3RbcXR5cGVdOworCQlpZiAoZGljdCkgeworCQkJZHEgPSBnZXRfZHEoZGljdCwgZ2V0X3FpZChpbm9kZSwgcXR5cGUpKTsKKwkJCWRxLT5kcV9kcWIuZHFiX2N1cmlub2RlcyArPSBhZGp1c3Q7CisJCX0KKwl9Cit9CisKK2VycmNvZGVfdCBxdW90YV9jb21wdXRlX3VzYWdlKHF1b3RhX2N0eF90IHFjdHgpCit7CisJZXh0Ml9maWxzeXMgZnM7CisJZXh0Ml9pbm9fdCBpbm87CisJZXJyY29kZV90IHJldDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGU7CisJaW50IGlub2RlX3NpemU7CisJcXNpemVfdCBzcGFjZTsKKwlleHQyX2lub2RlX3NjYW4gc2NhbjsKKworCWlmICghcWN0eCkKKwkJcmV0dXJuIDA7CisKKwlmcyA9IHFjdHgtPmZzOworCXJldCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0KSB7CisJCWxvZ19lcnIoIndoaWxlIG9wZW5pbmcgaW5vZGUgc2Nhbi4gcmV0PSVsZCIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCWlub2RlX3NpemUgPSBmcy0+c3VwZXItPnNfaW5vZGVfc2l6ZTsKKwlpbm9kZSA9IG1hbGxvYyhpbm9kZV9zaXplKTsKKwlpZiAoIWlub2RlKQorCQlyZXR1cm4gRU5PTUVNOworCXdoaWxlICgxKSB7CisJCXJldCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKHNjYW4sICZpbm8sCisJCQkJCQkgRVhUMl9JTk9ERShpbm9kZSksIGlub2RlX3NpemUpOworCQlpZiAocmV0KSB7CisJCQlsb2dfZXJyKCJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUuIHJldD0lbGQiLCByZXQpOworCQkJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJCQlmcmVlKGlub2RlKTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwkJaWYgKGlubyA9PSAwKQorCQkJYnJlYWs7CisJCWlmIChpbm9kZS0+aV9saW5rc19jb3VudCAmJgorCQkgICAgKGlubyA9PSBFWFQyX1JPT1RfSU5PIHx8CisJCSAgICAgaW5vID49IEVYVDJfRklSU1RfSU5PREUoZnMtPnN1cGVyKSkpIHsKKwkJCXNwYWNlID0gZXh0MmZzX2lub2RlX2lfYmxvY2tzKGZzLAorCQkJCQkJICAgICAgRVhUMl9JTk9ERShpbm9kZSkpIDw8IDk7CisJCQlxdW90YV9kYXRhX2FkZChxY3R4LCBpbm9kZSwgaW5vLCBzcGFjZSk7CisJCQlxdW90YV9kYXRhX2lub2RlcyhxY3R4LCBpbm9kZSwgaW5vLCArMSk7CisJCX0KKwl9CisKKwlleHQyZnNfY2xvc2VfaW5vZGVfc2NhbihzY2FuKTsKKwlmcmVlKGlub2RlKTsKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IHNjYW5fZHF1b3RzX2RhdGEgeworCWRpY3RfdAkJKnF1b3RhX2RpY3Q7CisJaW50ICAgICAgICAgICAgIHVwZGF0ZV9saW1pdHM7IC8qIHVwZGF0ZSBsaW1pdHMgZnJvbSBkaXNrICovCisJaW50CQl1cGRhdGVfdXNhZ2U7CisJaW50CQl1c2FnZV9pc19pbmNvbnNpc3RlbnQ7Cit9OworCitzdGF0aWMgaW50IHNjYW5fZHF1b3RzX2NhbGxiYWNrKHN0cnVjdCBkcXVvdCAqZHF1b3QsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IHNjYW5fZHF1b3RzX2RhdGEgKnNjYW5fZGF0YSA9IGNiX2RhdGE7CisJZGljdF90ICpxdW90YV9kaWN0ID0gc2Nhbl9kYXRhLT5xdW90YV9kaWN0OworCXN0cnVjdCBkcXVvdCAqZHE7CisKKwlkcSA9IGdldF9kcShxdW90YV9kaWN0LCBkcXVvdC0+ZHFfaWQpOworCWRxLT5kcV9pZCA9IGRxdW90LT5kcV9pZDsKKwlkcS0+ZHFfZmxhZ3MgfD0gRFFGX1NFRU47CisKKwlwcmludF9kcXVvdCgibWVtIiwgZHEpOworCXByaW50X2RxdW90KCJkc2siLCBkcXVvdCk7CisKKwkvKiBDaGVjayBpZiB0aGVyZSBpcyBpbmNvbnNpc3RhbmN5LiAqLworCWlmIChkcS0+ZHFfZHFiLmRxYl9jdXJzcGFjZSAhPSBkcXVvdC0+ZHFfZHFiLmRxYl9jdXJzcGFjZSB8fAorCSAgICBkcS0+ZHFfZHFiLmRxYl9jdXJpbm9kZXMgIT0gZHF1b3QtPmRxX2RxYi5kcWJfY3VyaW5vZGVzKSB7CisJCXNjYW5fZGF0YS0+dXNhZ2VfaXNfaW5jb25zaXN0ZW50ID0gMTsKKwkJZnByaW50ZihzdGRlcnIsICJbUVVPVEEgV0FSTklOR10gVXNhZ2UgaW5jb25zaXN0ZW50IGZvciBJRCAlZDoiCisJCQkiYWN0dWFsICglbGx1LCAlbGx1KSAhPSBleHBlY3RlZCAoJWxsdSwgJWxsdSlcbiIsCisJCQlkcS0+ZHFfaWQsIChsb25nIGxvbmcpZHEtPmRxX2RxYi5kcWJfY3Vyc3BhY2UsCisJCQkobG9uZyBsb25nKWRxLT5kcV9kcWIuZHFiX2N1cmlub2RlcywKKwkJCShsb25nIGxvbmcpZHF1b3QtPmRxX2RxYi5kcWJfY3Vyc3BhY2UsCisJCQkobG9uZyBsb25nKWRxdW90LT5kcV9kcWIuZHFiX2N1cmlub2Rlcyk7CisJfQorCisJaWYgKHNjYW5fZGF0YS0+dXBkYXRlX2xpbWl0cykgeworCQlkcS0+ZHFfZHFiLmRxYl9paGFyZGxpbWl0ID0gZHF1b3QtPmRxX2RxYi5kcWJfaWhhcmRsaW1pdDsKKwkJZHEtPmRxX2RxYi5kcWJfaXNvZnRsaW1pdCA9IGRxdW90LT5kcV9kcWIuZHFiX2lzb2Z0bGltaXQ7CisJCWRxLT5kcV9kcWIuZHFiX2JoYXJkbGltaXQgPSBkcXVvdC0+ZHFfZHFiLmRxYl9iaGFyZGxpbWl0OworCQlkcS0+ZHFfZHFiLmRxYl9ic29mdGxpbWl0ID0gZHF1b3QtPmRxX2RxYi5kcWJfYnNvZnRsaW1pdDsKKwl9CisKKwlpZiAoc2Nhbl9kYXRhLT51cGRhdGVfdXNhZ2UpIHsKKwkJZHEtPmRxX2RxYi5kcWJfY3Vyc3BhY2UgPSBkcXVvdC0+ZHFfZHFiLmRxYl9jdXJzcGFjZTsKKwkJZHEtPmRxX2RxYi5kcWJfY3VyaW5vZGVzID0gZHF1b3QtPmRxX2RxYi5kcWJfY3VyaW5vZGVzOworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogUmVhZCBhbGwgZHF1b3RzIGZyb20gcXVvdGEgZmlsZSBpbnRvIG1lbW9yeQorICovCitzdGF0aWMgZXJyY29kZV90IHF1b3RhX3JlYWRfYWxsX2RxdW90cyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpxaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RhX2N0eF90IHFjdHgsIGludCB1cGRhdGVfbGltaXRzKQoreworCXN0cnVjdCBzY2FuX2RxdW90c19kYXRhIHNjYW5fZGF0YTsKKworCXNjYW5fZGF0YS5xdW90YV9kaWN0ID0gcWN0eC0+cXVvdGFfZGljdFtxaC0+cWhfdHlwZV07CisJc2Nhbl9kYXRhLnVwZGF0ZV9saW1pdHMgPSB1cGRhdGVfbGltaXRzOworCXNjYW5fZGF0YS51cGRhdGVfdXNhZ2UgPSAwOworCisJcmV0dXJuIHFoLT5xaF9vcHMtPnNjYW5fZHF1b3RzKHFoLCBzY2FuX2RxdW90c19jYWxsYmFjaywgJnNjYW5fZGF0YSk7Cit9CisKKy8qCisgKiBXcml0ZSBhbGwgbWVtb3J5IGRxdW90cyBpbnRvIHF1b3RhIGZpbGUKKyAqLworI2lmIDAgLyogY3VycmVudGx5IHVudXNlZCwgYnV0IG1heSBiZSB1c2VmdWwgaW4gdGhlIGZ1dHVyZT8gKi8KK3N0YXRpYyBlcnJjb2RlX3QgcXVvdGFfd3JpdGVfYWxsX2RxdW90cyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpxaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdW90YV9jdHhfdCBxY3R4KQoreworCWVycmNvZGVfdCBlcnI7CisKKwllcnIgPSBleHQyZnNfcmVhZF9iaXRtYXBzKHFjdHgtPmZzKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCXdyaXRlX2RxdW90cyhxY3R4LT5xdW90YV9kaWN0W3FoLT5xaF90eXBlXSwgcWgpOworCWV4dDJmc19tYXJrX2JiX2RpcnR5KHFjdHgtPmZzKTsKKwlxY3R4LT5mcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworCWV4dDJmc193cml0ZV9iaXRtYXBzKHFjdHgtPmZzKTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisvKgorICogVXBkYXRlcyB0aGUgaW4tbWVtb3J5IHF1b3RhIGxpbWl0cyBmcm9tIHRoZSBnaXZlbiBxdW90YSBpbm9kZS4KKyAqLworZXJyY29kZV90IHF1b3RhX3VwZGF0ZV9saW1pdHMocXVvdGFfY3R4X3QgcWN0eCwgZXh0Ml9pbm9fdCBxZl9pbm8sCisJCQkgICAgICBlbnVtIHF1b3RhX3R5cGUgcXR5cGUpCit7CisJc3RydWN0IHF1b3RhX2hhbmRsZSAqcWg7CisJZXJyY29kZV90IGVycjsKKworCWlmICghcWN0eCkKKwkJcmV0dXJuIDA7CisKKwllcnIgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IHF1b3RhX2hhbmRsZSksICZxaCk7CisJaWYgKGVycikgeworCQlsb2dfZGVidWcoIlVuYWJsZSB0byBhbGxvY2F0ZSBxdW90YSBoYW5kbGUiKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwllcnIgPSBxdW90YV9maWxlX29wZW4ocWN0eCwgcWgsIHFmX2lubywgcXR5cGUsIC0xLCAwKTsKKwlpZiAoZXJyKSB7CisJCWxvZ19kZWJ1ZygiT3BlbiBxdW90YSBmaWxlIGZhaWxlZCIpOworCQlnb3RvIG91dDsKKwl9CisKKwlxdW90YV9yZWFkX2FsbF9kcXVvdHMocWgsIHFjdHgsIDEpOworCisJZXJyID0gcXVvdGFfZmlsZV9jbG9zZShxY3R4LCBxaCk7CisJaWYgKGVycikgeworCQlsb2dfZGVidWcoIkNhbm5vdCBmaW5pc2ggSU8gb24gbmV3IHF1b3RhZmlsZTogJXMiLAorCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJaWYgKHFoLT5xaF9xZi5lMl9maWxlKQorCQkJZXh0MmZzX2ZpbGVfY2xvc2UocWgtPnFoX3FmLmUyX2ZpbGUpOworCX0KK291dDoKKwlleHQyZnNfZnJlZV9tZW0oJnFoKTsKKwlyZXR1cm4gZXJyOworfQorCisvKgorICogQ29tcGFyZXMgdGhlIG1lYXN1cmVkIHF1b3RhIGluIHFjdHgtPnF1b3RhX2RpY3Qgd2l0aCB0aGF0IGluIHRoZSBxdW90YSBpbm9kZQorICogb24gZGlzayBhbmQgdXBkYXRlcyB0aGUgbGltaXRzIGluIHFjdHgtPnF1b3RhX2RpY3QuICd1c2FnZV9pbmNvbnNpc3RlbnQnIGlzCisgKiBzZXQgdG8gMSBpZiB0aGUgc3VwcGxpZWQgYW5kIG9uLWRpc2sgcXVvdGEgdXNhZ2UgdmFsdWVzIGFyZSBub3QgaWRlbnRpY2FsLgorICovCitlcnJjb2RlX3QgcXVvdGFfY29tcGFyZV9hbmRfdXBkYXRlKHF1b3RhX2N0eF90IHFjdHgsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSwKKwkJCQkgICBpbnQgKnVzYWdlX2luY29uc2lzdGVudCkKK3sKKwlzdHJ1Y3QgcXVvdGFfaGFuZGxlIHFoOworCXN0cnVjdCBzY2FuX2RxdW90c19kYXRhIHNjYW5fZGF0YTsKKwlzdHJ1Y3QgZHF1b3QgKmRxOworCWRub2RlX3QgKm47CisJZGljdF90ICpkaWN0ID0gcWN0eC0+cXVvdGFfZGljdFtxdHlwZV07CisJZXJyY29kZV90IGVyciA9IDA7CisKKwlpZiAoIWRpY3QpCisJCWdvdG8gb3V0OworCisJZXJyID0gcXVvdGFfZmlsZV9vcGVuKHFjdHgsICZxaCwgMCwgcXR5cGUsIC0xLCAwKTsKKwlpZiAoZXJyKSB7CisJCWxvZ19kZWJ1ZygiT3BlbiBxdW90YSBmaWxlIGZhaWxlZCIpOworCQlnb3RvIG91dDsKKwl9CisKKwlzY2FuX2RhdGEucXVvdGFfZGljdCA9IHFjdHgtPnF1b3RhX2RpY3RbcXR5cGVdOworCXNjYW5fZGF0YS51cGRhdGVfbGltaXRzID0gMTsKKwlzY2FuX2RhdGEudXBkYXRlX3VzYWdlID0gMDsKKwlzY2FuX2RhdGEudXNhZ2VfaXNfaW5jb25zaXN0ZW50ID0gMDsKKwllcnIgPSBxaC5xaF9vcHMtPnNjYW5fZHF1b3RzKCZxaCwgc2Nhbl9kcXVvdHNfY2FsbGJhY2ssICZzY2FuX2RhdGEpOworCWlmIChlcnIpIHsKKwkJbG9nX2RlYnVnKCJFcnJvciBzY2FubmluZyBkcXVvdHMiKTsKKwkJZ290byBvdXRfY2xvc2VfcWg7CisJfQorCisJZm9yIChuID0gZGljdF9maXJzdChkaWN0KTsgbjsgbiA9IGRpY3RfbmV4dChkaWN0LCBuKSkgeworCQlkcSA9IGRub2RlX2dldChuKTsKKwkJaWYgKCFkcSkKKwkJCWNvbnRpbnVlOworCQlpZiAoKGRxLT5kcV9mbGFncyAmIERRRl9TRUVOKSA9PSAwKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIltRVU9UQSBXQVJOSU5HXSAiCisJCQkJIk1pc3NpbmcgcXVvdGEgZW50cnkgSUQgJWRcbiIsIGRxLT5kcV9pZCk7CisJCQlzY2FuX2RhdGEudXNhZ2VfaXNfaW5jb25zaXN0ZW50ID0gMTsKKwkJfQorCX0KKwkqdXNhZ2VfaW5jb25zaXN0ZW50ID0gc2Nhbl9kYXRhLnVzYWdlX2lzX2luY29uc2lzdGVudDsKKworb3V0X2Nsb3NlX3FoOgorCWVyciA9IHF1b3RhX2ZpbGVfY2xvc2UocWN0eCwgJnFoKTsKKwlpZiAoZXJyKSB7CisJCWxvZ19kZWJ1ZygiQ2Fubm90IGNsb3NlIHF1b3RhZmlsZTogJXMiLCBlcnJvcl9tZXNzYWdlKGVycm5vKSk7CisJCWlmIChxaC5xaF9xZi5lMl9maWxlKQorCQkJZXh0MmZzX2ZpbGVfY2xvc2UocWgucWhfcWYuZTJfZmlsZSk7CisJfQorb3V0OgorCXJldHVybiBlcnI7Cit9CisKK2ludCBwYXJzZV9xdW90YV9vcHRzKGNvbnN0IGNoYXIgKm9wdHMsIGludCAoKmZ1bmMpKGNoYXIgKikpCit7CisJY2hhcgkqYnVmLCAqdG9rZW4sICpuZXh0LCAqcDsKKwlpbnQJbGVuOworCWludAlyZXQgPSAwOworCisJbGVuID0gc3RybGVuKG9wdHMpOworCWJ1ZiA9IG1hbGxvYyhsZW4gKyAxKTsKKwlpZiAoIWJ1ZikgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJc3RyY3B5KGJ1Ziwgb3B0cyk7CisJZm9yICh0b2tlbiA9IGJ1ZjsgdG9rZW4gJiYgKnRva2VuOyB0b2tlbiA9IG5leHQpIHsKKwkJcCA9IHN0cmNocih0b2tlbiwgJywnKTsKKwkJbmV4dCA9IDA7CisJCWlmIChwKSB7CisJCQkqcCA9IDA7CisJCQluZXh0ID0gcCArIDE7CisJCX0KKwkJcmV0ID0gZnVuYyh0b2tlbik7CisJCWlmIChyZXQpCisJCQlicmVhazsKKwl9CisJZnJlZShidWYpOworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvbmxzLWVuYWJsZS5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjYyYzAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaApAQCAtMCwwICsxLDIxIEBACisjaWYgZGVmaW5lZChFTkFCTEVfTkxTKSAmJiAhZGVmaW5lZChERUJVR0ZTKQorI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyNkZWZpbmUgXyhhKSAoZ2V0dGV4dCAoYSkpCisjaWZkZWYgZ2V0dGV4dF9ub29wCisjZGVmaW5lIE5fKGEpIGdldHRleHRfbm9vcCAoYSkKKyNlbHNlCisjZGVmaW5lIE5fKGEpIChhKQorI2VuZGlmCisjZGVmaW5lIFBfKHNpbmd1bGFyLCBwbHVyYWwsIG4pIChuZ2V0dGV4dCAoc2luZ3VsYXIsIHBsdXJhbCwgbikpCisjaWZuZGVmIE5MU19DQVRfTkFNRQorI2RlZmluZSBOTFNfQ0FUX05BTUUgImUyZnNwcm9ncyIKKyNlbmRpZgorI2lmbmRlZiBMT0NBTEVESVIKKyNkZWZpbmUgTE9DQUxFRElSICIvdXNyL3NoYXJlL2xvY2FsZSIKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgXyhhKSAoYSkKKyNkZWZpbmUgTl8oYSkgYQorI2RlZmluZSBQXyhzaW5ndWxhciwgcGx1cmFsLCBuKSAoKG4pID09IDEgPyAoc2luZ3VsYXIpIDogKHBsdXJhbCkpCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wYXJzZV9xdHlwZS5jIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3BhcnNlX3F0eXBlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4NjM5ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wYXJzZV9xdHlwZS5jCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBwYXJzZV9xdHlwZS5jCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAicXVvdGFpby5oIgorCisjZGVmaW5lIFBBUlNFX0RFTElNICI6LCIKKworaW50IHBhcnNlX3F1b3RhX3R5cGVzKGNvbnN0IGNoYXIgKmluX3N0ciwgdW5zaWduZWQgaW50ICpxdHlwZV9iaXRzLAorCQkgICAgICBjaGFyICoqZXJyX3Rva2VuKQoreworCWNoYXIJKmJ1ZiwgKnRva2VuLCAqbmV4dCwgKnRtcDsKKwl1bnNpZ25lZCBpbnQgcXR5cGUgPSAqcXR5cGVfYml0czsKKwlpbnQJbGVuLCByZXQgPSAwOworCisJaWYgKCFpbl9zdHIpCisJCXJldHVybiAwOworCisJbGVuID0gc3RybGVuKGluX3N0cik7CisJYnVmID0gbWFsbG9jKGxlbiArIDEpOworCWlmICghYnVmKQorCQlyZXR1cm4gRU5PTUVNOworCXN0cmNweShidWYsIGluX3N0cik7CisKKwlmb3IgKHRva2VuID0gYnVmLCBuZXh0ID0gc3RydG9rX3IoYnVmLCBQQVJTRV9ERUxJTSwgJnRtcCk7CisJICAgICB0b2tlbiAmJiAqdG9rZW47IHRva2VuID0gbmV4dCkgeworCQlpbnQJbm90ID0gMDsKKwkJY2hhcgkqcCA9IHRva2VuOworCisJCWlmICgqcCA9PSAnXicpIHsKKwkJCW5vdCA9IDE7CisJCQlwKys7CisJCX0KKwkJaWYgKCFzdHJjbXAocCwgInVzciIpIHx8ICFzdHJjbXAocCwgInVzcnF1b3RhIikpIHsKKwkJCWlmIChub3QpCisJCQkJcXR5cGUgJj0gflFVT1RBX1VTUl9CSVQ7CisJCQllbHNlCisJCQkJcXR5cGUgfD0gUVVPVEFfVVNSX0JJVDsKKwkJfSBlbHNlIGlmICghc3RyY21wKHAsICJncnAiKSB8fCAhc3RyY21wKHAsICJncnBxdW90YSIpKSB7CisJCQlpZiAobm90KQorCQkJCXF0eXBlICY9IH5RVU9UQV9HUlBfQklUOworCQkJZWxzZQorCQkJCXF0eXBlIHw9IFFVT1RBX0dSUF9CSVQ7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChwLCAicHJqIikgfHwgIXN0cmNtcChwLCAicHJqcXVvdGEiKSkgeworCQkJaWYgKG5vdCkKKwkJCQlxdHlwZSAmPSB+UVVPVEFfUFJKX0JJVDsKKwkJCWVsc2UKKwkJCQlxdHlwZSB8PSBRVU9UQV9QUkpfQklUOworCQl9IGVsc2UgeworCQkJaWYgKGVycl90b2tlbikgeworCQkJCSplcnJfdG9rZW4gPSBtYWxsb2Moc3RybGVuKHRva2VuKSArIDEpOworCQkJCWlmICgqZXJyX3Rva2VuKQorCQkJCQlzdHJjcHkoKmVycl90b2tlbiwgdG9rZW4pOworCQkJfQorCQkJcmV0ID0gRUlOVkFMOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJcHJpbnRmKCJ3b3JkOiAlc1xuIiwgdG9rZW4pOworCQluZXh0ID0gc3RydG9rX3IoTlVMTCwgUEFSU0VfREVMSU0sICZ0bXApOworCX0KKwkqcXR5cGVfYml0cyA9IHF0eXBlOworZXJyb3V0OgorCWZyZWUoYnVmKTsKKwlyZXR1cm4gcmV0OworfQorCisjaWYgMAoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXVuc2lnbmVkIGludCBxdHlwZV9iaXRzID0gMDsKKwlpbnQgcmV0OworCWNoYXIgKmVycl90b2tlbiA9IDA7CisKKwlyZXQgPSBwYXJzZV9xdW90YV90eXBlcyhhcmd2WzFdLCAmcXR5cGVfYml0cywgJmVycl90b2tlbik7CisJcHJpbnRmKCJwYXJzZV9xdW90YV90eXBlcyByZXR1cm5zICVkLCAlZFxuIiwgcmV0LCBxdHlwZV9iaXRzKTsKKwlpZiAoZXJyX3Rva2VuKQorCQlwcmludGYoImVycl90b2tlbiBpcyAlc1xuIiwgZXJyX3Rva2VuKTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3BsYXVzaWJsZS5jIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3BsYXVzaWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMGM0YmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcGxhdXNpYmxlLmMKQEAgLTAsMCArMSwyODAgQEAKKy8qCisgKiBwbGF1c2libGUuYyAtLS0gRmlndXJlIG91dCBpZiBhIHBhdGhuYW1lIGlzIGV4dCogb3Igc29tZXRoaW5nIGVsc2UuCisgKgorICogQ29weXJpZ2h0IDIwMTQsIE9yYWNsZSwgSW5jLgorICoKKyAqIFNvbWUgcGFydHMgYXJlOgorICogQ29weXJpZ2h0IDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorI2lmbmRlZiBfTEFSR0VGSUxFNjRfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTUFHSUNfSAorI2luY2x1ZGUgPG1hZ2ljLmg+CisjZW5kaWYKKyNpbmNsdWRlICJwbGF1c2libGUuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAibmxzLWVuYWJsZS5oIgorI2luY2x1ZGUgImJsa2lkL2Jsa2lkLmgiCisKKyNpZmRlZiBIQVZFX01BR0lDX0gKK3N0YXRpYyBtYWdpY190ICgqZGxfbWFnaWNfb3BlbikoaW50KTsKK3N0YXRpYyBjb25zdCBjaGFyICooKmRsX21hZ2ljX2ZpbGUpKG1hZ2ljX3QsIGNvbnN0IGNoYXIgKik7CitzdGF0aWMgaW50ICgqZGxfbWFnaWNfbG9hZCkobWFnaWNfdCwgY29uc3QgY2hhciAqKTsKK3N0YXRpYyB2b2lkICgqZGxfbWFnaWNfY2xvc2UpKG1hZ2ljX3QpOworCisjaWZkZWYgSEFWRV9ETE9QRU4KKyNpbmNsdWRlIDxkbGZjbi5oPgorCitzdGF0aWMgdm9pZCAqbWFnaWNfaGFuZGxlOworCitzdGF0aWMgaW50IG1hZ2ljX2xpYnJhcnlfYXZhaWxhYmxlKHZvaWQpCit7CisJaWYgKCFtYWdpY19oYW5kbGUpIHsKKwkJbWFnaWNfaGFuZGxlID0gZGxvcGVuKCJsaWJtYWdpYy5zby4xIiwgUlRMRF9OT1cpOworCQlpZiAoIW1hZ2ljX2hhbmRsZSkKKwkJCXJldHVybiAwOworCisJCWRsX21hZ2ljX29wZW4gPSAobWFnaWNfdCAoKikoaW50KSkKKwkJCWRsc3ltKG1hZ2ljX2hhbmRsZSwgIm1hZ2ljX29wZW4iKTsKKwkJZGxfbWFnaWNfZmlsZSA9IChjb25zdCBjaGFyICooKikobWFnaWNfdCwgY29uc3QgY2hhciAqKSkKKwkJCWRsc3ltKG1hZ2ljX2hhbmRsZSwgIm1hZ2ljX2ZpbGUiKTsKKwkJZGxfbWFnaWNfbG9hZCA9IChpbnQgKCopKG1hZ2ljX3QsIGNvbnN0IGNoYXIgKikpCisJCQlkbHN5bShtYWdpY19oYW5kbGUsICJtYWdpY19sb2FkIik7CisJCWRsX21hZ2ljX2Nsb3NlID0gKHZvaWQgKCopKG1hZ2ljX3QpKQorCQkJZGxzeW0obWFnaWNfaGFuZGxlLCAibWFnaWNfY2xvc2UiKTsKKwl9CisKKwlpZiAoIWRsX21hZ2ljX29wZW4gfHwgIWRsX21hZ2ljX2ZpbGUgfHwKKwkgICAgIWRsX21hZ2ljX2xvYWQgfHwgIWRsX21hZ2ljX2Nsb3NlKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKyNlbHNlCitzdGF0aWMgaW50IG1hZ2ljX2xpYnJhcnlfYXZhaWxhYmxlKHZvaWQpCit7CisJZGxfbWFnaWNfb3BlbiA9IG1hZ2ljX29wZW47CisJZGxfbWFnaWNfZmlsZSA9IG1hZ2ljX2ZpbGU7CisJZGxfbWFnaWNfbG9hZCA9IG1hZ2ljX2xvYWQ7CisJZGxfbWFnaWNfY2xvc2UgPSBtYWdpY19jbG9zZTsKKworCXJldHVybiAxOworfQorI2VuZGlmCisjZW5kaWYKKworc3RhdGljIHZvaWQgcHJpbnRfZXh0Ml9pbmZvKGNvbnN0IGNoYXIgKmRldmljZSkKKworeworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrCSpzYjsKKwlleHQyX2ZpbHN5cwkJZnM7CisJZXJyY29kZV90CQlyZXR2YWw7CisJdGltZV90CQkJdG07CisJY2hhcgkJCWJ1Zls4MF07CisKKwlyZXR2YWwgPSBleHQyZnNfb3BlbjIoZGV2aWNlLCAwLCBFWFQyX0ZMQUdfNjRCSVRTLCAwLCAwLAorCQkJICAgICAgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCWlmIChyZXR2YWwpCisJCXJldHVybjsKKwlzYiA9IGZzLT5zdXBlcjsKKworCWlmIChzYi0+c19tdGltZSkgeworCQl0bSA9IHNiLT5zX210aW1lOworCQlpZiAoc2ItPnNfbGFzdF9tb3VudGVkWzBdKSB7CisJCQltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisJCQlzdHJuY3B5KGJ1Ziwgc2ItPnNfbGFzdF9tb3VudGVkLAorCQkJCXNpemVvZihzYi0+c19sYXN0X21vdW50ZWQpKTsKKwkJCXByaW50ZihfKCJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIpLCBidWYsCisJCQkgICAgICAgY3RpbWUoJnRtKSk7CisJCX0gZWxzZQorCQkJcHJpbnRmKF8oIlx0bGFzdCBtb3VudGVkIG9uICVzIiksIGN0aW1lKCZ0bSkpOworCX0gZWxzZSBpZiAoc2ItPnNfbWtmc190aW1lKSB7CisJCXRtID0gc2ItPnNfbWtmc190aW1lOworCQlwcmludGYoXygiXHRjcmVhdGVkIG9uICVzIiksIGN0aW1lKCZ0bSkpOworCX0gZWxzZSBpZiAoc2ItPnNfd3RpbWUpIHsKKwkJdG0gPSBzYi0+c193dGltZTsKKwkJcHJpbnRmKF8oIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIpLCBjdGltZSgmdG0pKTsKKwl9CisJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKK30KKworLyoKKyAqIHJldHVybiAxIGlmIHRoZXJlIGlzIG5vIHBhcnRpdGlvbiB0YWJsZSwgMCBpZiBhIHBhcnRpdGlvbiB0YWJsZSBpcworICogZGV0ZWN0ZWQsIGFuZCAtMSBvbiBhbiBlcnJvci4KKyAqLworI2lmZGVmIEhBVkVfQkxLSURfUFJPQkVfRU5BQkxFX1BBUlRJVElPTlMKK3N0YXRpYyBpbnQgY2hlY2tfcGFydGl0aW9uX3RhYmxlKGNvbnN0IGNoYXIgKmRldmljZSkKK3sKKwlibGtpZF9wcm9iZSBwcjsKKwljb25zdCBjaGFyICp2YWx1ZTsKKwlpbnQgcmV0OworCisJcHIgPSBibGtpZF9uZXdfcHJvYmVfZnJvbV9maWxlbmFtZShkZXZpY2UpOworCWlmICghcHIpCisJCXJldHVybiAtMTsKKworCXJldCA9IGJsa2lkX3Byb2JlX2VuYWJsZV9wYXJ0aXRpb25zKHByLCAxKTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXQgPSBibGtpZF9wcm9iZV9lbmFibGVfc3VwZXJibG9ja3MocHIsIDApOworCWlmIChyZXQgPCAwKQorCQlnb3RvIGVycm91dDsKKworCXJldCA9IGJsa2lkX2RvX2Z1bGxwcm9iZShwcik7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZXJyb3V0OworCisJcmV0ID0gYmxraWRfcHJvYmVfbG9va3VwX3ZhbHVlKHByLCAiUFRUWVBFIiwgJnZhbHVlLCBOVUxMKTsKKwlpZiAocmV0ID09IDApCisJCWZwcmludGYoc3RkZXJyLCBfKCJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIiksCisJCQl2YWx1ZSwgZGV2aWNlKTsKKwllbHNlCisJCXJldCA9IDE7CisKK2Vycm91dDoKKwlibGtpZF9mcmVlX3Byb2JlKHByKTsKKwlyZXR1cm4gcmV0OworfQorI2Vsc2UKK3N0YXRpYyBpbnQgY2hlY2tfcGFydGl0aW9uX3RhYmxlKGNvbnN0IGNoYXIgKmRldmljZSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJcmV0dXJuIC0xOworfQorI2VuZGlmCisKKy8qCisgKiByZXR1cm4gMSBpZiB0aGUgZGV2aWNlIGxvb2tzIHBsYXVzaWJsZSwgY3JlYXRpbmcgdGhlIGZpbGUgaWYgbmVjZXNzYXJ5CisgKi8KK2ludCBjaGVja19wbGF1c2liaWxpdHkoY29uc3QgY2hhciAqZGV2aWNlLCBpbnQgZmxhZ3MsIGludCAqcmV0X2lzX2RldikKK3sKKwlpbnQgZmQsIHJldCwgaXNfZGV2ID0gMDsKKwlleHQyZnNfc3RydWN0X3N0YXQgczsKKwlpbnQgZmwgPSBPX1JET05MWTsKKwlibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisJY2hhciAqZnNfdHlwZSA9IE5VTEw7CisJY2hhciAqZnNfbGFiZWwgPSBOVUxMOworCisJZmQgPSBleHQyZnNfb3Blbl9maWxlKGRldmljZSwgZmwsIDA2NjYpOworCWlmICgoZmQgPCAwKSAmJiAoZXJybm8gPT0gRU5PRU5UKSAmJiAoZmxhZ3MgJiBOT19TSVpFKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vICIKKwkJCQkgICJzaXplIHdhcyBzcGVjaWZpZWQuXG4iKSwgZGV2aWNlKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKChmZCA8IDApICYmIChlcnJubyA9PSBFTk9FTlQpICYmIChmbGFncyAmIENSRUFURV9GSUxFKSkgeworCQlmbCB8PSBPX0NSRUFUOworCQlmZCA9IGV4dDJmc19vcGVuX2ZpbGUoZGV2aWNlLCBmbCwgMDY2Nik7CisJCWlmIChmZCA+PSAwICYmIChmbGFncyAmIFZFUkJPU0VfQ1JFQVRFKSkKKwkJCXByaW50ZihfKCJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIpLCBkZXZpY2UpOworCX0KKwlpZiAoZmQgPCAwKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIpLAorCQkJZGV2aWNlLCBlcnJvcl9tZXNzYWdlKGVycm5vKSk7CisJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQlmcHV0cyhfKCJcblRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgIgorCQkJCSJkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIiksIHN0ZGVycik7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGV4dDJmc19mc3RhdChmZCwgJnMpIDwgMCkgeworCQlwZXJyb3IoInN0YXQiKTsKKwkJZXhpdCgxKTsKKwl9CisJY2xvc2UoZmQpOworCisJaWYgKFNfSVNCTEsocy5zdF9tb2RlKSkKKwkJaXNfZGV2ID0gMTsKKyNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKKwkvKiBPbiBGcmVlQlNELCBhbGwgZGlzayBkZXZpY2VzIGFyZSBjaGFyYWN0ZXIgc3BlY2lhbHMgKi8KKwlpZiAoU19JU0NIUihzLnN0X21vZGUpKQorCQlpc19kZXYgPSAxOworI2VuZGlmCisJaWYgKHJldF9pc19kZXYpCisJCSpyZXRfaXNfZGV2ID0gaXNfZGV2OworCisJaWYgKChmbGFncyAmIENIRUNLX0JMT0NLX0RFVikgJiYgIWlzX2RldikgeworCQlwcmludGYoXygiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iKSwgZGV2aWNlKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyoKKwkgKiBOb3RlOiB3ZSB1c2UgdGhlIG9sZGVyLXN0eWxlIGJsa2lkIEFQSSdzIGhlcmUgYmVjYXVzZSB3ZQorCSAqIHdhbnQgYXMgbXVjaCBmdW5jdGlvbmFsaXR5IHRvIGJlIGF2YWlsYWJsZSB3aGVuIHVzaW5nIHRoZQorCSAqIGludGVybmFsIGJsa2lkIGxpYnJhcnksIHdoZW4gZTJmc3Byb2dzIGlzIGNvbXBpbGVkIGZvcgorCSAqIG5vbi1MaW51eCBzeXN0ZW1zIHRoYXQgd2lsbCBwcm9iYWJseSBub3QgaGF2ZSB0aGUgbGlicmFyaWVzCisJICogZnJvbSB1dGlsLWxpbnV4IGF2YWlsYWJsZS4gIFdlIG9ubHkgdXNlIHRoZSBuZXdlcgorCSAqIGJsa2lkLXByb2JlIGludGVyZmFjZXMgdG8gYWNjZXNzIGZ1bmN0aW9uYWxpdHkgbm90CisJICogYXZhaWxhYmxlIGluIHRoZSBvcmlnaW5hbCBibGtpZCBsaWJyYXJ5LgorCSAqLworCWlmICgoZmxhZ3MgJiBDSEVDS19GU19FWElTVCkgJiYgYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgTlVMTCkgPj0gMCkgeworCQlmc190eXBlID0gYmxraWRfZ2V0X3RhZ192YWx1ZShjYWNoZSwgIlRZUEUiLCBkZXZpY2UpOworCQlpZiAoZnNfdHlwZSkKKwkJCWZzX2xhYmVsID0gYmxraWRfZ2V0X3RhZ192YWx1ZShjYWNoZSwgIkxBQkVMIiwgZGV2aWNlKTsKKwkJYmxraWRfcHV0X2NhY2hlKGNhY2hlKTsKKwl9CisKKwlpZiAoZnNfdHlwZSkgeworCQlpZiAoZnNfbGFiZWwpCisJCQlwcmludGYoXygiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSAiCisJCQkJICJsYWJlbGxlZCAnJXMnXG4iKSwgZGV2aWNlLCBmc190eXBlLCBmc19sYWJlbCk7CisJCWVsc2UKKwkJCXByaW50ZihfKCIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iKSwgZGV2aWNlLAorCQkJICAgICAgIGZzX3R5cGUpOworCQlpZiAoc3RybmNtcChmc190eXBlLCAiZXh0IiwgMykgPT0gMCkKKwkJCXByaW50X2V4dDJfaW5mbyhkZXZpY2UpOworCQlmcmVlKGZzX3R5cGUpOworCQlmcmVlKGZzX2xhYmVsKTsKKwkJcmV0dXJuIDA7CisJfQorCisjaWZkZWYgSEFWRV9NQUdJQ19ICisJaWYgKChmbGFncyAmIENIRUNLX0ZTX0VYSVNUKSAmJgorCSAgICAhZ2V0ZW52KCJFMkZTUFJPR1NfTElCTUFHSUNfU1VQUFJFU1MiKSAmJgorCSAgICBtYWdpY19saWJyYXJ5X2F2YWlsYWJsZSgpKSB7CisJCWNvbnN0IGNoYXIgKm1zZzsKKwkJbWFnaWNfdCBtYWc7CisJCWludCBoYXNfbWFnaWMgPSAwOworCisJCW1hZyA9IGRsX21hZ2ljX29wZW4oTUFHSUNfUkFXIHwgTUFHSUNfU1lNTElOSyB8IE1BR0lDX0RFVklDRVMgfAorCQkJCSAgICBNQUdJQ19FUlJPUiB8IE1BR0lDX05PX0NIRUNLX0VMRiB8CisJCQkJICAgIE1BR0lDX05PX0NIRUNLX0NPTVBSRVNTKTsKKwkJZGxfbWFnaWNfbG9hZChtYWcsIE5VTEwpOworCisJCW1zZyA9IGRsX21hZ2ljX2ZpbGUobWFnLCBkZXZpY2UpOworCQlpZiAobXNnICYmIHN0cmNtcChtc2csICJkYXRhIikgJiYgc3RyY21wKG1zZywgImVtcHR5IikpIHsKKwkJCXByaW50ZihfKCIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIpLCBkZXZpY2UsIG1zZyk7CisJCQloYXNfbWFnaWMgPSAxOworCQl9CisKKwkJZGxfbWFnaWNfY2xvc2UobWFnKTsKKwkJcmV0dXJuICFoYXNfbWFnaWM7CisJfQorI2VuZGlmCisKKwlyZXQgPSBjaGVja19wYXJ0aXRpb25fdGFibGUoZGV2aWNlKTsKKwlpZiAocmV0ID49IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3BsYXVzaWJsZS5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3BsYXVzaWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5NGU0YjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcGxhdXNpYmxlLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIHBsYXVzaWJsZS5oIC0tLSBoZWFkZXIgZmlsZSBkZWZpbmluZyBwcm90b3R5cGVzIGZvciBoZWxwZXIgZnVuY3Rpb25zCisgKiB1c2VkIGJ5IHR1bmUyZnMgYW5kIG1rZTJmcworICoKKyAqIENvcHlyaWdodCAyMDE0IGJ5IE9yYWNsZSwgSW5jLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBQTEFVU0lCTEVfSF8KKyNkZWZpbmUgUExBVVNJQkxFX0hfCisKKy8qCisgKiBGbGFncyBmb3IgY2hlY2tfcGxhdXNpYmlsaXR5KCkKKyAqLworI2RlZmluZSBDSEVDS19CTE9DS19ERVYJMHgwMDAxCisjZGVmaW5lIENSRUFURV9GSUxFCTB4MDAwMgorI2RlZmluZSBDSEVDS19GU19FWElTVAkweDAwMDQKKyNkZWZpbmUgVkVSQk9TRV9DUkVBVEUJMHgwMDA4CisjZGVmaW5lIE5PX1NJWkUJCTB4MDAxMAorCitleHRlcm4gaW50IGNoZWNrX3BsYXVzaWJpbGl0eShjb25zdCBjaGFyICpkZXZpY2UsIGludCBmbGFncywKKwkJCSAgICAgIGludCAqcmV0X2lzX2Rldik7CisKKyNlbmRpZiAvKiBQTEFVU0lCTEVfSF8gKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9mX2Vyci5ldCBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9mX2Vyci5ldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTMxNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3Byb2ZfZXJyLmV0CkBAIC0wLDAgKzEsNjYgQEAKK2Vycm9yX3RhYmxlIHByb2YKKworZXJyb3JfY29kZQlQUk9GX1ZFUlNJT04sCSJQcm9maWxlIHZlcnNpb24gMC4wIgorCisjCisjIGdlbmVyYXRlZCBieSBwcm9mX3RyZWUuYworIworZXJyb3JfY29kZQlQUk9GX01BR0lDX05PREUsCSJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorZXJyb3JfY29kZQlQUk9GX05PX1NFQ1RJT04sCSJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorZXJyb3JfY29kZQlQUk9GX05PX1JFTEFUSU9OLAkiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCitlcnJvcl9jb2RlCVBST0ZfQUREX05PVF9TRUNUSU9OLCAKKwkiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCitlcnJvcl9jb2RlCVBST0ZfU0VDVElPTl9XSVRIX1ZBTFVFLCAKKwkiQSBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIGhhcyBhIG5vbi16ZXJvIHZhbHVlIgorZXJyb3JfY29kZQlQUk9GX0JBRF9MSU5LX0xJU1QsIAkiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK2Vycm9yX2NvZGUJUFJPRl9CQURfR1JPVVBfTFZMLCAJIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCitlcnJvcl9jb2RlCVBST0ZfQkFEX1BBUkVOVF9QVFIsIAkKKwkiQmFkIHBhcmVudCBwb2ludGVyIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK2Vycm9yX2NvZGUJUFJPRl9NQUdJQ19JVEVSQVRPUiwJIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorZXJyb3JfY29kZQlQUk9GX1NFVF9TRUNUSU9OX1ZBTFVFLAkiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK2Vycm9yX2NvZGUJUFJPRl9FSU5WQUwsCQkiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorZXJyb3JfY29kZQlQUk9GX1JFQURfT05MWSwJCSJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKKworIworIyBnZW5lcmF0ZWQgYnkgcHJvZl9wYXJzZS5jCisjCisKK2Vycm9yX2NvZGUJUFJPRl9TRUNUSU9OX05PVE9QLCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorZXJyb3JfY29kZQlQUk9GX1NFQ1RJT05fU1lOVEFYLCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCitlcnJvcl9jb2RlCVBST0ZfUkVMQVRJT05fU1lOVEFYLCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCitlcnJvcl9jb2RlCVBST0ZfRVhUUkFfQ0JSQUNFLCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorZXJyb3JfY29kZQlQUk9GX01JU1NJTkdfT0JSQUNFLCAiTWlzc2luZyBvcGVuIGJyYWNlIGluIHByb2ZpbGUiCisKKyMKKyMgZ2VuZXJhdGVkIGJ5IHByb2ZfaW5pdC5jCisjIAorZXJyb3JfY29kZQlQUk9GX01BR0lDX1BST0ZJTEUsCSJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorZXJyb3JfY29kZQlQUk9GX01BR0lDX1NFQ1RJT04sCSJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCitlcnJvcl9jb2RlCVBST0ZfVE9QU0VDVElPTl9JVEVSX05PU1VQUCwKKwkiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCitlcnJvcl9jb2RlCVBST0ZfSU5WQUxJRF9TRUNUSU9OLAkiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorZXJyb3JfY29kZQlQUk9GX0VORF9PRl9TRUNUSU9OUywJIk5vIG1vcmUgc2VjdGlvbnMiCitlcnJvcl9jb2RlCVBST0ZfQkFEX05BTUVTRVQsCSJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK2Vycm9yX2NvZGUJUFJPRl9OT19QUk9GSUxFLAkiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCisKKyMKKyMgZ2VuZXJhdGVkIGJ5IHByb2ZfZmlsZS5jCisjCitlcnJvcl9jb2RlICAgICAgUFJPRl9NQUdJQ19GSUxFLAkiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorZXJyb3JfY29kZQlQUk9GX0ZBSUxfT1BFTiwJCSJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKKworIworIyBnZW5lcmF0ZWQgYnkgcHJvZl9zZXQuYworIworZXJyb3JfY29kZQlQUk9GX0VYSVNUUywJCSJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorCisjCisjIGdlbmVyYXRlZCBieSBwcm9mX2dldC5jCisjCitlcnJvcl9jb2RlCVBST0ZfQkFEX0JPT0xFQU4sCQkiSW52YWxpZCBib29sZWFuIHZhbHVlIgorZXJyb3JfY29kZQlQUk9GX0JBRF9JTlRFR0VSLAkJIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKKworZXJyb3JfY29kZQlQUk9GX01BR0lDX0ZJTEVfREFUQSwgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorCisKK2VuZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU5YTJkOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlLmMKQEAgLTAsMCArMSwxOTA2IEBACisvKgorICogcHJvZmlsZS5jIC0tIEEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gZmlsZSBwYXJzaW5nICJsaWJyYXJ5IGluIGEgZmlsZSIKKyAqCisgKiBUaGUgcHJvZmlsZSBsaWJyYXJ5IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbyBpbiAxOTk1CisgKiBmb3IgdXNlIGluIHRoZSBNSVQgS2VyYmVyb3MgdjUgbGlicmFyeS4gIEl0IGhhcyBiZWVuCisgKiBtb2RpZmllZC9lbmhhbmNlZC9idWctZml4ZWQgb3ZlciB0aW1lIGJ5IG90aGVyIG1lbWJlcnMgb2YgdGhlIE1JVAorICogS2VyYmVyb3MgdGVhbS4gIFRoaXMgdmVyc2lvbiB3YXMgb3JpZ2luYWxseSB0YWtlbiBmcm9tIHRoZSBLZXJiZXJvcworICogdjUgZGlzdHJpYnV0aW9uLCB2ZXJzaW9uIDEuNC4yLCBhbmQgcmFkaWNhbGx5IHNpbXBsaWZpZWQgZm9yIHVzZSBpbgorICogZTJmc3Byb2dzLiAgKFN1cHBvcnQgZm9yIGxvY2tpbmcgZm9yIG11bHRpLXRocmVhZGVkIG9wZXJhdGlvbnMsCisgKiBiZWluZyBhYmxlIHRvIG1vZGlmeSBhbmQgdXBkYXRlIHRoZSBjb25maWd1cmF0aW9uIGZpbGUKKyAqIHByb2dyYW1tYXRpY2FsbHksIGFuZCBNYWMvV2luZG93cyBwb3J0YWJpbGl0eSBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAqIEl0IGhhcyBiZWVuIGZvbGRlZCBpbnRvIGEgc2luZ2xlIEMgc291cmNlIGZpbGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8KKyAqIGZvbGQgaW50byBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtLikKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICoKKyAqIENvcHlyaWdodCAoQykgMTk4NS0yMDA1IGJ5IHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogRXhwb3J0IG9mIHRoaXMgc29mdHdhcmUgZnJvbSB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIG1heSByZXF1aXJlCisgKiBhIHNwZWNpZmljIGxpY2Vuc2UgZnJvbSB0aGUgVW5pdGVkIFN0YXRlcyBHb3Zlcm5tZW50LiAgSXQgaXMgdGhlCisgKiByZXNwb25zaWJpbGl0eSBvZiBhbnkgcGVyc29uIG9yIG9yZ2FuaXphdGlvbiBjb250ZW1wbGF0aW5nIGV4cG9ydCB0bworICogb2J0YWluIHN1Y2ggYSBsaWNlbnNlIGJlZm9yZSBleHBvcnRpbmcuCisgKgorICogV0lUSElOIFRIQVQgQ09OU1RSQUlOVCwgcGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kCisgKiBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQKKyAqIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQKKyAqIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQKKyAqIHRoZSBuYW1lIG9mIE0uSS5ULiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZworICogdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCisgKiBwZXJtaXNzaW9uLiAgRnVydGhlcm1vcmUgaWYgeW91IG1vZGlmeSB0aGlzIHNvZnR3YXJlIHlvdSBtdXN0IGxhYmVsCisgKiB5b3VyIHNvZnR3YXJlIGFzIG1vZGlmaWVkIHNvZnR3YXJlIGFuZCBub3QgZGlzdHJpYnV0ZSBpdCBpbiBzdWNoIGEKKyAqIGZhc2hpb24gdGhhdCBpdCBtaWdodCBiZSBjb25mdXNlZCB3aXRoIHRoZSBvcmlnaW5hbCBNSVQgc29mdHdhcmUuCisgKiBNLkkuVC4gbWFrZXMgbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlCisgKiBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisgKiB3YXJyYW50eS4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRJQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpZmRlZiBIQVZFX1BXRF9ICisjaW5jbHVkZSA8cHdkLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGV0L2NvbV9lcnIuaD4KKyNpbmNsdWRlICJwcm9maWxlLmgiCisjaW5jbHVkZSAicHJvZl9lcnIuaCIKKworI3VuZGVmIFNUQVRfT05DRV9QRVJfU0VDT05ECisjdW5kZWYgSEFWRV9TVEFUCisKKy8qCisgKiBwcm9mX2ludC5oCisgKi8KKwordHlwZWRlZiBsb25nIHByZl9tYWdpY190OworCisvKgorICogVGhpcyBpcyB0aGUgc3RydWN0dXJlIHdoaWNoIHN0b3JlcyB0aGUgcHJvZmlsZSBpbmZvcm1hdGlvbiBmb3IgYQorICogcGFydGljdWxhciBjb25maWd1cmF0aW9uIGZpbGUuCisgKi8KK3N0cnVjdCBfcHJmX2ZpbGVfdCB7CisJcHJmX21hZ2ljX3QJbWFnaWM7CisJY2hhcgkJKmZpbGVzcGVjOworI2lmZGVmIFNUQVRfT05DRV9QRVJfU0VDT05ECisJdGltZV90CQlsYXN0X3N0YXQ7CisjZW5kaWYKKwl0aW1lX3QJCXRpbWVzdGFtcDsgLyogdGltZSB0cmVlIHdhcyBsYXN0IHVwZGF0ZWQgZnJvbSBmaWxlICovCisJaW50CQlmbGFnczsJLyogci93LCBkaXJ0eSAqLworCWludAkJdXBkX3NlcmlhbDsgLyogaW5jcmVtZW50ZWQgd2hlbiBkYXRhIGNoYW5nZXMgKi8KKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlICpyb290OworCXN0cnVjdCBfcHJmX2ZpbGVfdCAqbmV4dDsKK307CisKK3R5cGVkZWYgc3RydWN0IF9wcmZfZmlsZV90ICpwcmZfZmlsZV90OworCisvKgorICogVGhlIHByb2ZpbGUgZmxhZ3MKKyAqLworI2RlZmluZSBQUk9GSUxFX0ZJTEVfUlcJCTB4MDAwMQorI2RlZmluZSBQUk9GSUxFX0ZJTEVfRElSVFkJMHgwMDAyCisjZGVmaW5lIFBST0ZJTEVfRklMRV9OT19SRUxPQUQJMHgwMDA0CisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBoaWdoLWxldmVsLCB1c2VyIHZpc2libGUgcHJvZmlsZV90CisgKiBvYmplY3QsIHdoaWNoIGlzIHVzZWQgYXMgYSBoYW5kbGUgYnkgdXNlcnMgd2hvIG5lZWQgdG8gcXVlcnkgc29tZQorICogY29uZmlndXJhdGlvbiBmaWxlKHMpCisgKi8KK3N0cnVjdCBfcHJvZmlsZV90IHsKKwlwcmZfbWFnaWNfdAltYWdpYzsKKwlwcmZfZmlsZV90CWZpcnN0X2ZpbGU7Cit9OworCisvKgorICogVXNlZCBieSB0aGUgcHJvZmlsZSBpdGVyYXRvciBpbiBwcm9mX2dldC5jCisgKi8KKyNkZWZpbmUgUFJPRklMRV9JVEVSX0xJU1RfU0VDVElPTgkweDAwMDEKKyNkZWZpbmUgUFJPRklMRV9JVEVSX1NFQ1RJT05TX09OTFkJMHgwMDAyCisjZGVmaW5lIFBST0ZJTEVfSVRFUl9SRUxBVElPTlNfT05MWQkweDAwMDQKKworI2RlZmluZSBQUk9GSUxFX0lURVJfRklOQUxfU0VFTgkJMHgwMTAwCisKKy8qCisgKiBDaGVjayBpZiBhIGZpbGVzcGVjIGlzIGxhc3QgaW4gYSBsaXN0IChOVUxMIG9uIFVOSVgsIGludmFsaWQgRlNTcGVjIG9uIE1hY09TCisgKi8KKworI2RlZmluZQlQUk9GSUxFX0xBU1RfRklMRVNQRUMoeCkgKCgoeCkgPT0gTlVMTCkgfHwgKCh4KVswXSA9PSAnXDAnKSkKKworc3RydWN0IHByb2ZpbGVfbm9kZSB7CisJZXJyY29kZV90CW1hZ2ljOworCWNoYXIgKm5hbWU7CisJY2hhciAqdmFsdWU7CisJaW50IGdyb3VwX2xldmVsOworCXVuc2lnbmVkIGludCBmaW5hbDoxOwkJLyogSW5kaWNhdGUgZG9uJ3Qgc2VhcmNoIG5leHQgZmlsZSAqLworCXVuc2lnbmVkIGludCBkZWxldGVkOjE7CisJc3RydWN0IHByb2ZpbGVfbm9kZSAqZmlyc3RfY2hpbGQ7CisJc3RydWN0IHByb2ZpbGVfbm9kZSAqcGFyZW50OworCXN0cnVjdCBwcm9maWxlX25vZGUgKm5leHQsICpwcmV2OworfTsKKworI2RlZmluZSBDSEVDS19NQUdJQyhub2RlKSBcCisJICBpZiAoKG5vZGUpLT5tYWdpYyAhPSBQUk9GX01BR0lDX05PREUpIFwKKwkJICByZXR1cm4gUFJPRl9NQUdJQ19OT0RFOworCisvKiBwcm9maWxlIHBhcnNlciBkZWNsYXJhdGlvbnMgKi8KK3N0cnVjdCBwYXJzZV9zdGF0ZSB7CisJaW50CXN0YXRlOworCWludAlncm91cF9sZXZlbDsKKwlpbnQJbGluZV9udW07CisJc3RydWN0IHByb2ZpbGVfbm9kZSAqcm9vdF9zZWN0aW9uOworCXN0cnVjdCBwcm9maWxlX25vZGUgKmN1cnJlbnRfc2VjdGlvbjsKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpkZWZhdWx0X2ZpbGVuYW1lID0gIjxkZWZhdWx0PiI7CisKK3N0YXRpYyBwcm9maWxlX3N5bnRheF9lcnJfY2JfdAlzeW50YXhfZXJyX2NiOworCitzdGF0aWMgZXJyY29kZV90IHBhcnNlX2xpbmUoY2hhciAqbGluZSwgc3RydWN0IHBhcnNlX3N0YXRlICpzdGF0ZSk7CisKKyNpZmRlZiBERUJVR19QUk9HUkFNCitzdGF0aWMgZXJyY29kZV90IHByb2ZpbGVfd3JpdGVfdHJlZV9maWxlCisJKHN0cnVjdCBwcm9maWxlX25vZGUgKnJvb3QsIEZJTEUgKmRzdGZpbGUpOworCitzdGF0aWMgZXJyY29kZV90IHByb2ZpbGVfd3JpdGVfdHJlZV90b19idWZmZXIKKwkoc3RydWN0IHByb2ZpbGVfbm9kZSAqcm9vdCwgY2hhciAqKmJ1Zik7CisjZW5kaWYKKworCitzdGF0aWMgdm9pZCBwcm9maWxlX2ZyZWVfbm9kZQorCShzdHJ1Y3QgcHJvZmlsZV9ub2RlICpyZWxhdGlvbik7CisKK3N0YXRpYyBlcnJjb2RlX3QgcHJvZmlsZV9jcmVhdGVfbm9kZQorCShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKKwkJICAgc3RydWN0IHByb2ZpbGVfbm9kZSAqKnJldF9ub2RlKTsKKworI2lmZGVmIERFQlVHX1BST0dSQU0KK3N0YXRpYyBlcnJjb2RlX3QgcHJvZmlsZV92ZXJpZnlfbm9kZQorCShzdHJ1Y3QgcHJvZmlsZV9ub2RlICpub2RlKTsKKyNlbmRpZgorCitzdGF0aWMgZXJyY29kZV90IHByb2ZpbGVfYWRkX25vZGUKKwkoc3RydWN0IHByb2ZpbGVfbm9kZSAqc2VjdGlvbiwKKwkJICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlLAorCQkgICAgc3RydWN0IHByb2ZpbGVfbm9kZSAqKnJldF9ub2RlKTsKKworc3RhdGljIGVycmNvZGVfdCBwcm9maWxlX2ZpbmRfbm9kZQorCShzdHJ1Y3QgcHJvZmlsZV9ub2RlICpzZWN0aW9uLAorCQkgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsCisJCSAgICBpbnQgc2VjdGlvbl9mbGFnLCB2b2lkICoqc3RhdGUsCisJCSAgICBzdHJ1Y3QgcHJvZmlsZV9ub2RlICoqbm9kZSk7CisKK3N0YXRpYyBlcnJjb2RlX3QgcHJvZmlsZV9ub2RlX2l0ZXJhdG9yCisJKHZvaWQJKippdGVyX3AsIHN0cnVjdCBwcm9maWxlX25vZGUgKipyZXRfbm9kZSwKKwkJICAgY2hhciAqKnJldF9uYW1lLCBjaGFyICoqcmV0X3ZhbHVlKTsKKworc3RhdGljIGVycmNvZGVfdCBwcm9maWxlX29wZW5fZmlsZQorCShjb25zdCBjaGFyICogZmlsZSwgcHJmX2ZpbGVfdCAqcmV0X3Byb2YpOworCitzdGF0aWMgZXJyY29kZV90IHByb2ZpbGVfdXBkYXRlX2ZpbGUKKwkocHJmX2ZpbGVfdCBwcmYpOworCitzdGF0aWMgdm9pZCBwcm9maWxlX2ZyZWVfZmlsZQorCShwcmZfZmlsZV90IHByb2ZpbGUpOworCitzdGF0aWMgZXJyY29kZV90IHByb2ZpbGVfZ2V0X3ZhbHVlKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLAorCQkJCSAgIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIGNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsCisJCQkJICAgY29uc3QgY2hhciAqKnJldF92YWx1ZSk7CisKKworLyoKKyAqIHByb2ZfaW5pdC5jIC0tLSByb3V0aW5lcyB0aGF0IG1hbmlwdWxhdGUgdGhlIHVzZXItdmlzaWJsZSBwcm9maWxlX3QKKyAqIAlvYmplY3QuCisgKi8KKworc3RhdGljIGludCBjb21wc3RyKGNvbnN0IHZvaWQgKm0xLCBjb25zdCB2b2lkICptMikKK3sKKwljb25zdCBjaGFyICpzMSA9ICooKGNvbnN0IGNoYXIgKiBjb25zdCAqKSBtMSk7CisJY29uc3QgY2hhciAqczIgPSAqKChjb25zdCBjaGFyICogY29uc3QgKikgbTIpOworCisJcmV0dXJuIHN0cmNtcChzMSwgczIpOworfQorCitzdGF0aWMgdm9pZCBmcmVlX2xpc3QoY2hhciAqKmxpc3QpCit7CisgICAgY2hhcgkqKmNwOworCisgICAgaWYgKGxpc3QgPT0gMCkKKwkgICAgcmV0dXJuOworCisgICAgZm9yIChjcCA9IGxpc3Q7ICpjcDsgY3ArKykKKwlmcmVlKCpjcCk7CisgICAgZnJlZShsaXN0KTsKK30KKworc3RhdGljIGVycmNvZGVfdCBnZXRfZGlybGlzdChjb25zdCBjaGFyICpkaXJuYW1lLCBjaGFyKioqcmV0X2FycmF5KQoreworCURJUiAqZGlyOworCXN0cnVjdCBkaXJlbnQgKmRlOworCXN0cnVjdCBzdGF0IHN0OworCWVycmNvZGVfdCByZXR2YWw7CisJY2hhciAqZm4sICpjcDsKKwljaGFyICoqYXJyYXkgPSAwLCAqKm5ld19hcnJheTsKKwlpbnQgbWF4ID0gMCwgbnVtID0gMDsKKworCWRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisJaWYgKCFkaXIpCisJCXJldHVybiBlcnJubzsKKworCXdoaWxlICgoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJZm9yIChjcCA9IGRlLT5kX25hbWU7ICpjcDsgY3ArKykgeworCQkJaWYgKCFpc2FsbnVtKCpjcCkgJiYKKwkJCSAgICAoKmNwICE9ICctJykgJiYKKwkJCSAgICAoKmNwICE9ICdfJykpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKCpjcCkKKwkJCWNvbnRpbnVlOworCQlmbiA9IG1hbGxvYyhzdHJsZW4oZGlybmFtZSkgKyBzdHJsZW4oZGUtPmRfbmFtZSkgKyAyKTsKKwkJaWYgKCFmbikgeworCQkJcmV0dmFsID0gRU5PTUVNOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJc3ByaW50ZihmbiwgIiVzLyVzIiwgZGlybmFtZSwgZGUtPmRfbmFtZSk7CisJCWlmICgoc3RhdChmbiwgJnN0KSA8IDApIHx8ICFTX0lTUkVHKHN0LnN0X21vZGUpKSB7CisJCQlmcmVlKGZuKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChudW0gPj0gbWF4KSB7CisJCQltYXggKz0gMTA7CisJCQluZXdfYXJyYXkgPSByZWFsbG9jKGFycmF5LCBzaXplb2YoY2hhciAqKSAqIChtYXgrMSkpOworCQkJaWYgKCFuZXdfYXJyYXkpIHsKKwkJCQlyZXR2YWwgPSBFTk9NRU07CisJCQkJZnJlZShmbik7CisJCQkJZ290byBlcnJvdXQ7CisJCQl9CisJCQlhcnJheSA9IG5ld19hcnJheTsKKwkJfQorCQlhcnJheVtudW0rK10gPSBmbjsKKwl9CisJaWYgKGFycmF5KSB7CisJCXFzb3J0KGFycmF5LCBudW0sIHNpemVvZihjaGFyICopLCBjb21wc3RyKTsKKwkJYXJyYXlbbnVtKytdID0gMDsKKwl9CisJKnJldF9hcnJheSA9IGFycmF5OworCWNsb3NlZGlyKGRpcik7CisJcmV0dXJuIDA7CitlcnJvdXQ6CisJaWYgKGFycmF5KQorCQlhcnJheVtudW1dID0gMDsKKwljbG9zZWRpcihkaXIpOworCWZyZWVfbGlzdChhcnJheSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90Citwcm9maWxlX2luaXQoY29uc3QgY2hhciAqIGNvbnN0ICpmaWxlcywgcHJvZmlsZV90ICpyZXRfcHJvZmlsZSkKK3sKKwljb25zdCBjaGFyICogY29uc3QgKmZzOworCXByb2ZpbGVfdCBwcm9maWxlOworCXByZl9maWxlX3QgIG5ld19maWxlLCAqbGFzdDsKKwllcnJjb2RlX3QgcmV0dmFsID0gMDsKKwljaGFyICoqY3BwLCAqY3AsICoqYXJyYXkgPSAwOworCisJcHJvZmlsZSA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IF9wcm9maWxlX3QpKTsKKwlpZiAoIXByb2ZpbGUpCisJCXJldHVybiBFTk9NRU07CisJbWVtc2V0KHByb2ZpbGUsIDAsIHNpemVvZihzdHJ1Y3QgX3Byb2ZpbGVfdCkpOworCXByb2ZpbGUtPm1hZ2ljID0gUFJPRl9NQUdJQ19QUk9GSUxFOworCWxhc3QgPSAmcHJvZmlsZS0+Zmlyc3RfZmlsZTsKKworICAgICAgICAvKiBpZiB0aGUgZmlsZW5hbWVzIGxpc3QgaXMgbm90IHNwZWNpZmllZCByZXR1cm4gYW4gZW1wdHkgcHJvZmlsZSAqLworICAgICAgICBpZiAoIGZpbGVzICkgeworCSAgICBmb3IgKGZzID0gZmlsZXM7ICFQUk9GSUxFX0xBU1RfRklMRVNQRUMoKmZzKTsgZnMrKykgeworCQlpZiAoYXJyYXkpCisJCQlmcmVlX2xpc3QoYXJyYXkpOworCQlhcnJheSA9IE5VTEw7CisJCXJldHZhbCA9IGdldF9kaXJsaXN0KCpmcywgJmFycmF5KTsKKwkJaWYgKHJldHZhbCA9PSAwKSB7CisJCQlpZiAoIWFycmF5KQorCQkJCWNvbnRpbnVlOworCQkJZm9yIChjcHAgPSBhcnJheTsgKGNwID0gKmNwcCk7IGNwcCsrKSB7CisJCQkJcmV0dmFsID0gcHJvZmlsZV9vcGVuX2ZpbGUoY3AsICZuZXdfZmlsZSk7CisJCQkJaWYgKHJldHZhbCA9PSBFQUNDRVMpCisJCQkJCWNvbnRpbnVlOworCQkJCWlmIChyZXR2YWwpCisJCQkJCWdvdG8gZXJyb3V0OworCQkJCSpsYXN0ID0gbmV3X2ZpbGU7CisJCQkJbGFzdCA9ICZuZXdfZmlsZS0+bmV4dDsKKwkJCX0KKwkJfSBlbHNlIGlmICgocmV0dmFsICE9IEVOT1RESVIpICYmCisJCQkgICBzdHJjbXAoKmZzLCBkZWZhdWx0X2ZpbGVuYW1lKSkKKwkJCWdvdG8gZXJyb3V0OworCisJCXJldHZhbCA9IHByb2ZpbGVfb3Blbl9maWxlKCpmcywgJm5ld19maWxlKTsKKwkJLyogaWYgdGhpcyBmaWxlIGlzIG1pc3NpbmcsIHNraXAgdG8gdGhlIG5leHQgKi8KKwkJaWYgKHJldHZhbCA9PSBFTk9FTlQgfHwgcmV0dmFsID09IEVBQ0NFUykgeworCQkJY29udGludWU7CisJCX0KKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQkqbGFzdCA9IG5ld19maWxlOworCQlsYXN0ID0gJm5ld19maWxlLT5uZXh0OworCSAgICB9CisJICAgIC8qCisJICAgICAqIElmIGFsbCB0aGUgZmlsZXMgd2VyZSBub3QgZm91bmQsIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgZXJyb3IuCisJICAgICAqLworCSAgICBpZiAoIXByb2ZpbGUtPmZpcnN0X2ZpbGUpIHsKKwkJcmV0dmFsID0gRU5PRU5UOworCQlnb3RvIGVycm91dDsKKwkgICAgfQorCX0KKworCWZyZWVfbGlzdChhcnJheSk7CisgICAgICAgICpyZXRfcHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIHJldHVybiAwOworZXJyb3V0OgorCWZyZWVfbGlzdChhcnJheSk7CisJcHJvZmlsZV9yZWxlYXNlKHByb2ZpbGUpOworCXJldHVybiByZXR2YWw7Cit9CisKK3ZvaWQKK3Byb2ZpbGVfcmVsZWFzZShwcm9maWxlX3QgcHJvZmlsZSkKK3sKKwlwcmZfZmlsZV90CXAsIG5leHQ7CisKKwlpZiAoIXByb2ZpbGUgfHwgcHJvZmlsZS0+bWFnaWMgIT0gUFJPRl9NQUdJQ19QUk9GSUxFKQorCQlyZXR1cm47CisKKwlmb3IgKHAgPSBwcm9maWxlLT5maXJzdF9maWxlOyBwOyBwID0gbmV4dCkgeworCQluZXh0ID0gcC0+bmV4dDsKKwkJcHJvZmlsZV9mcmVlX2ZpbGUocCk7CisJfQorCXByb2ZpbGUtPm1hZ2ljID0gMDsKKwlmcmVlKHByb2ZpbGUpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBzZXRzIHRoZSB2YWx1ZSBvZiB0aGUgcHNldWRvIGZpbGUgIjxkZWZhdWx0PiIuICBJZgorICogdGhlIGZpbGUgIjxkZWZhdWx0PiIgaGFkIHByZXZpb3VzbHkgYmVlbiBwYXNzZWQgdG8gcHJvZmlsZV9pbml0KCksCisgKiB0aGVuIGRlZl9zdHJpbmcgcGFyYW1ldGVyIHdpbGwgYmUgcGFyc2VkIGFuZCB1c2VkIGFzIHRoZSBwcm9maWxlCisgKiBpbmZvcm1hdGlvbiBmb3IgdGhlICI8ZGVmYXVsdD4iIGZpbGUuCisgKi8KK2VycmNvZGVfdCBwcm9maWxlX3NldF9kZWZhdWx0KHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpkZWZfc3RyaW5nKQoreworCXN0cnVjdCBwYXJzZV9zdGF0ZQlzdGF0ZTsKKwlwcmZfZmlsZV90CQlwcmY7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY29uc3QgY2hhcgkJKmluOworCWNoYXIJCQkqbGluZSwgKnAsICplbmQ7CisJaW50CQkJbGluZV9zaXplLCBsZW47CisKKwlpZiAoIWRlZl9zdHJpbmcgfHwgIXByb2ZpbGUgfHwgcHJvZmlsZS0+bWFnaWMgIT0gUFJPRl9NQUdJQ19QUk9GSUxFKQorCQlyZXR1cm4gUFJPRl9NQUdJQ19QUk9GSUxFOworCisJZm9yIChwcmYgPSBwcm9maWxlLT5maXJzdF9maWxlOyBwcmY7IHByZiA9IHByZi0+bmV4dCkgeworCQlpZiAoc3RyY21wKHByZi0+ZmlsZXNwZWMsIGRlZmF1bHRfZmlsZW5hbWUpID09IDApCisJCQlicmVhazsKKwl9CisJaWYgKCFwcmYpCisJCXJldHVybiAwOworCisJaWYgKHByZi0+cm9vdCkgeworCQlwcm9maWxlX2ZyZWVfbm9kZShwcmYtPnJvb3QpOworCQlwcmYtPnJvb3QgPSAwOworCX0KKworCW1lbXNldCgmc3RhdGUsIDAsIHNpemVvZihzdHJ1Y3QgcGFyc2Vfc3RhdGUpKTsKKwlyZXR2YWwgPSBwcm9maWxlX2NyZWF0ZV9ub2RlKCIocm9vdCkiLCAwLCAmc3RhdGUucm9vdF9zZWN0aW9uKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJbGluZSA9IDA7CisJbGluZV9zaXplID0gMDsKKwlpbiA9IGRlZl9zdHJpbmc7CisJd2hpbGUgKCppbikgeworCQllbmQgPSBzdHJjaHIoaW4sICdcbicpOworCQlsZW4gPSBlbmQgPyAoZW5kIC0gaW4pIDogKGludCkgc3RybGVuKGluKTsKKwkJaWYgKGxlbiA+PSBsaW5lX3NpemUpIHsKKwkJCWxpbmVfc2l6ZSA9IGxlbisxOworCQkJcCA9IHJlYWxsb2MobGluZSwgbGluZV9zaXplKTsKKwkJCWlmICghcCkgeworCQkJCXJldHZhbCA9IEVOT01FTTsKKwkJCQlnb3RvIGVycm91dDsKKwkJCX0KKwkJCWxpbmUgPSBwOworCQl9CisJCW1lbWNweShsaW5lLCBpbiwgbGVuKTsKKwkJbGluZVtsZW5dID0gMDsKKwkJcmV0dmFsID0gcGFyc2VfbGluZShsaW5lLCAmc3RhdGUpOworCQlpZiAocmV0dmFsKSB7CisJCWVycm91dDoKKwkJCWlmIChzeW50YXhfZXJyX2NiKQorCQkJCShzeW50YXhfZXJyX2NiKShwcmYtPmZpbGVzcGVjLCByZXR2YWwsCisJCQkJCQlzdGF0ZS5saW5lX251bSk7CisJCQlmcmVlKGxpbmUpOworCQkJaWYgKHByZi0+cm9vdCkKKwkJCQlwcm9maWxlX2ZyZWVfbm9kZShwcmYtPnJvb3QpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlpZiAoIWVuZCkKKwkJCWJyZWFrOworCQlpbiA9IGVuZCsxOworCX0KKwlwcmYtPnJvb3QgPSBzdGF0ZS5yb290X3NlY3Rpb247CisJZnJlZShsaW5lKTsKKworCXJldHVybiAwOworfQorCisvKgorICogcHJvZl9maWxlLmMgLS0tLSByb3V0aW5lcyB0aGF0IG1hbmlwdWxhdGUgYW4gaW5kaXZpZHVhbCBwcm9maWxlIGZpbGUuCisgKi8KKworZXJyY29kZV90IHByb2ZpbGVfb3Blbl9maWxlKGNvbnN0IGNoYXIgKiBmaWxlc3BlYywKKwkJCSAgICBwcmZfZmlsZV90ICpyZXRfcHJvZikKK3sKKwlwcmZfZmlsZV90CXByZjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIJCSpob21lX2VudiA9IDA7CisJdW5zaWduZWQgaW50CWxlbjsKKwljaGFyCQkqZXhwYW5kZWRfZmlsZW5hbWU7CisKKwlwcmYgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBfcHJmX2ZpbGVfdCkpOworCWlmICghcHJmKQorCQlyZXR1cm4gRU5PTUVNOworCW1lbXNldChwcmYsIDAsIHNpemVvZihzdHJ1Y3QgX3ByZl9maWxlX3QpKTsKKwlwcmYtPm1hZ2ljID0gUFJPRl9NQUdJQ19GSUxFOworCisJbGVuID0gc3RybGVuKGZpbGVzcGVjKSsxOworCWlmIChmaWxlc3BlY1swXSA9PSAnficgJiYgZmlsZXNwZWNbMV0gPT0gJy8nKSB7CisJCWhvbWVfZW52ID0gZ2V0ZW52KCJIT01FIik7CisjaWZkZWYgSEFWRV9QV0RfSAorCQlpZiAoaG9tZV9lbnYgPT0gTlVMTCkgeworI2lmZGVmIEhBVkVfR0VUV1VJRF9SCisJCSAgICBzdHJ1Y3QgcGFzc3dkICpwdywgcHd4OworCQkgICAgdWlkX3QgdWlkOworCQkgICAgY2hhciBwd2J1ZltCVUZTSVpdOworCisJCSAgICB1aWQgPSBnZXR1aWQoKTsKKwkJICAgIGlmICghZ2V0cHd1aWRfcih1aWQsICZwd3gsIHB3YnVmLCBzaXplb2YocHdidWYpLCAmcHcpCisJCQkmJiBwdyAhPSBOVUxMICYmIHB3LT5wd19kaXJbMF0gIT0gMCkKKwkJCWhvbWVfZW52ID0gcHctPnB3X2RpcjsKKyNlbHNlCisJCSAgICBzdHJ1Y3QgcGFzc3dkICpwdzsKKworCQkgICAgcHcgPSBnZXRwd3VpZChnZXR1aWQoKSk7CisJCSAgICBob21lX2VudiA9IHB3LT5wd19kaXI7CisjZW5kaWYKKwkJfQorI2VuZGlmCisJCWlmIChob21lX2VudikKKwkJCWxlbiArPSBzdHJsZW4oaG9tZV9lbnYpOworCX0KKwlleHBhbmRlZF9maWxlbmFtZSA9IG1hbGxvYyhsZW4pOworCWlmIChleHBhbmRlZF9maWxlbmFtZSA9PSAwKSB7CisJICAgIHByb2ZpbGVfZnJlZV9maWxlKHByZik7CisJICAgIHJldHVybiBlcnJubzsKKwl9CisJaWYgKGhvbWVfZW52KSB7CisJICAgIHN0cmNweShleHBhbmRlZF9maWxlbmFtZSwgaG9tZV9lbnYpOworCSAgICBzdHJjYXQoZXhwYW5kZWRfZmlsZW5hbWUsIGZpbGVzcGVjKzEpOworCX0gZWxzZQorCSAgICBtZW1jcHkoZXhwYW5kZWRfZmlsZW5hbWUsIGZpbGVzcGVjLCBsZW4pOworCisJcHJmLT5maWxlc3BlYyA9IGV4cGFuZGVkX2ZpbGVuYW1lOworCisJaWYgKHN0cmNtcChwcmYtPmZpbGVzcGVjLCBkZWZhdWx0X2ZpbGVuYW1lKSAhPSAwKSB7CisJCXJldHZhbCA9IHByb2ZpbGVfdXBkYXRlX2ZpbGUocHJmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJcHJvZmlsZV9mcmVlX2ZpbGUocHJmKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwl9CisKKwkqcmV0X3Byb2YgPSBwcmY7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBwcm9maWxlX3VwZGF0ZV9maWxlKHByZl9maWxlX3QgcHJmKQoreworCWVycmNvZGVfdCByZXR2YWw7CisjaWZkZWYgSEFWRV9TVEFUCisJc3RydWN0IHN0YXQgc3Q7CisjaWZkZWYgU1RBVF9PTkNFX1BFUl9TRUNPTkQKKwl0aW1lX3Qgbm93OworI2VuZGlmCisjZW5kaWYKKwlGSUxFICpmOworCWNoYXIgYnVmWzIwNDhdOworCXN0cnVjdCBwYXJzZV9zdGF0ZSBzdGF0ZTsKKworCWlmIChwcmYtPmZsYWdzICYgUFJPRklMRV9GSUxFX05PX1JFTE9BRCkKKwkJcmV0dXJuIDA7CisKKyNpZmRlZiBIQVZFX1NUQVQKKyNpZmRlZiBTVEFUX09OQ0VfUEVSX1NFQ09ORAorCW5vdyA9IHRpbWUoMCk7CisJaWYgKG5vdyA9PSBwcmYtPmxhc3Rfc3RhdCAmJiBwcmYtPnJvb3QgIT0gTlVMTCkgeworCSAgICByZXR1cm4gMDsKKwl9CisjZW5kaWYKKwlpZiAoc3RhdChwcmYtPmZpbGVzcGVjLCAmc3QpKSB7CisJICAgIHJldHZhbCA9IGVycm5vOworCSAgICByZXR1cm4gcmV0dmFsOworCX0KKyNpZmRlZiBTVEFUX09OQ0VfUEVSX1NFQ09ORAorCXByZi0+bGFzdF9zdGF0ID0gbm93OworI2VuZGlmCisJaWYgKHN0LnN0X210aW1lID09IHByZi0+dGltZXN0YW1wICYmIHByZi0+cm9vdCAhPSBOVUxMKSB7CisJICAgIHJldHVybiAwOworCX0KKwlpZiAocHJmLT5yb290KSB7CisJCXByb2ZpbGVfZnJlZV9ub2RlKHByZi0+cm9vdCk7CisJCXByZi0+cm9vdCA9IDA7CisJfQorI2Vsc2UKKwkvKgorCSAqIElmIHdlIGRvbid0IGhhdmUgdGhlIHN0YXQoKSBjYWxsLCBhc3N1bWUgdGhhdCBvdXIgaW4tY29yZQorCSAqIG1lbW9yeSBpbWFnZSBpcyBjb3JyZWN0LiAgVGhhdCBpcywgd2Ugd29uJ3QgcmVyZWFkIHRoZQorCSAqIHByb2ZpbGUgZmlsZSBpZiBpdCBjaGFuZ2VzLgorCSAqLworCWlmIChwcmYtPnJvb3QpIHsKKwkgICAgcmV0dXJuIDA7CisJfQorI2VuZGlmCisJbWVtc2V0KCZzdGF0ZSwgMCwgc2l6ZW9mKHN0cnVjdCBwYXJzZV9zdGF0ZSkpOworCXJldHZhbCA9IHByb2ZpbGVfY3JlYXRlX25vZGUoIihyb290KSIsIDAsICZzdGF0ZS5yb290X3NlY3Rpb24pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJZXJybm8gPSAwOworCWYgPSBmb3BlbihwcmYtPmZpbGVzcGVjLCAiciIpOworCWlmIChmID09IE5VTEwpIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWlmIChyZXR2YWwgPT0gMCkKKwkJCXJldHZhbCA9IEVOT0VOVDsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisJcHJmLT51cGRfc2VyaWFsKys7CisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCXJldHZhbCA9IHBhcnNlX2xpbmUoYnVmLCAmc3RhdGUpOworCQlpZiAocmV0dmFsKSB7CisJCQlpZiAoc3ludGF4X2Vycl9jYikKKwkJCQkoc3ludGF4X2Vycl9jYikocHJmLT5maWxlc3BlYywgcmV0dmFsLAorCQkJCQkJc3RhdGUubGluZV9udW0pOworCQkJZmNsb3NlKGYpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCX0KKwlwcmYtPnJvb3QgPSBzdGF0ZS5yb290X3NlY3Rpb247CisKKwlmY2xvc2UoZik7CisKKyNpZmRlZiBIQVZFX1NUQVQKKwlwcmYtPnRpbWVzdGFtcCA9IHN0LnN0X210aW1lOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQgcHJvZmlsZV9mcmVlX2ZpbGUocHJmX2ZpbGVfdCBwcmYpCit7CisgICAgaWYgKHByZi0+cm9vdCkKKwlwcm9maWxlX2ZyZWVfbm9kZShwcmYtPnJvb3QpOworICAgIGZyZWUocHJmLT5maWxlc3BlYyk7CisgICAgZnJlZShwcmYpOworfQorCisvKiBCZWdpbiB0aGUgcHJvZmlsZSBwYXJzZXIgKi8KKworcHJvZmlsZV9zeW50YXhfZXJyX2NiX3QgcHJvZmlsZV9zZXRfc3ludGF4X2Vycl9jYihwcm9maWxlX3N5bnRheF9lcnJfY2JfdCBob29rKQoreworCXByb2ZpbGVfc3ludGF4X2Vycl9jYl90CW9sZDsKKworCW9sZCA9IHN5bnRheF9lcnJfY2I7CisJc3ludGF4X2Vycl9jYiA9IGhvb2s7CisJcmV0dXJuKG9sZCk7Cit9CisKKyNkZWZpbmUgU1RBVEVfSU5JVF9DT01NRU5UCTAKKyNkZWZpbmUgU1RBVEVfU1REX0xJTkUJCTEKKyNkZWZpbmUgU1RBVEVfR0VUX09CUkFDRQkyCisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfYmxhbmtzKGNoYXIgKmNwKQoreworCXdoaWxlICgqY3AgJiYgaXNzcGFjZSgoaW50KSAoKmNwKSkpCisJCWNwKys7CisJcmV0dXJuIGNwOworfQorCitzdGF0aWMgaW50IGVuZF9vcl9jb21tZW50KGNoYXIgY2gpCit7CisJcmV0dXJuIChjaCA9PSAwIHx8IGNoID09ICcjJyB8fCBjaCA9PSAnOycpOworfQorCitzdGF0aWMgY2hhciAqc2tpcF9vdmVyX25vbmJsYW5rcyhjaGFyICpjcCkKK3sKKwl3aGlsZSAoIWVuZF9vcl9jb21tZW50KCpjcCkgJiYgIWlzc3BhY2UoKmNwKSkKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKK3N0YXRpYyB2b2lkIHN0cmlwX2xpbmUoY2hhciAqbGluZSkKK3sKKwljaGFyICpwID0gbGluZSArIHN0cmxlbihsaW5lKTsKKwl3aGlsZSAocCA+IGxpbmUgJiYgKHBbLTFdID09ICdcbicgfHwgcFstMV0gPT0gJ1xyJykpCisJICAgICpwLS0gPSAwOworfQorCitzdGF0aWMgdm9pZCBwYXJzZV9xdW90ZWRfc3RyaW5nKGNoYXIgKnN0cikKK3sKKwljaGFyICp0bywgKmZyb207CisKKwl0byA9IGZyb20gPSBzdHI7CisKKwlmb3IgKHRvID0gZnJvbSA9IHN0cjsgKmZyb20gJiYgKmZyb20gIT0gJyInOyB0bysrLCBmcm9tKyspIHsKKwkJaWYgKCpmcm9tID09ICdcXCcpIHsKKwkJCWZyb20rKzsKKwkJCXN3aXRjaCAoKmZyb20pIHsKKwkJCWNhc2UgJ24nOgorCQkJCSp0byA9ICdcbic7CisJCQkJYnJlYWs7CisJCQljYXNlICd0JzoKKwkJCQkqdG8gPSAnXHQnOworCQkJCWJyZWFrOworCQkJY2FzZSAnYic6CisJCQkJKnRvID0gJ1xiJzsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJKnRvID0gKmZyb207CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCQkqdG8gPSAqZnJvbTsKKwl9CisJKnRvID0gJ1wwJzsKK30KKworc3RhdGljIGVycmNvZGVfdCBwYXJzZV9saW5lKGNoYXIgKmxpbmUsIHN0cnVjdCBwYXJzZV9zdGF0ZSAqc3RhdGUpCit7CisJY2hhcgkqY3AsIGNoLCAqdGFnLCAqdmFsdWU7CisJY2hhcgkqcDsKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBwcm9maWxlX25vZGUJKm5vZGU7CisJaW50IGRvX3N1YnNlY3Rpb24gPSAwOworCXZvaWQgKml0ZXIgPSAwOworCisJc3RhdGUtPmxpbmVfbnVtKys7CisJaWYgKHN0YXRlLT5zdGF0ZSA9PSBTVEFURV9HRVRfT0JSQUNFKSB7CisJCWNwID0gc2tpcF9vdmVyX2JsYW5rcyhsaW5lKTsKKwkJaWYgKCpjcCAhPSAneycpCisJCQlyZXR1cm4gUFJPRl9NSVNTSU5HX09CUkFDRTsKKwkJc3RhdGUtPnN0YXRlID0gU1RBVEVfU1REX0xJTkU7CisJCXJldHVybiAwOworCX0KKwlpZiAoc3RhdGUtPnN0YXRlID09IFNUQVRFX0lOSVRfQ09NTUVOVCkgeworCQlpZiAobGluZVswXSAhPSAnWycpCisJCQlyZXR1cm4gMDsKKwkJc3RhdGUtPnN0YXRlID0gU1RBVEVfU1REX0xJTkU7CisJfQorCisJaWYgKCpsaW5lID09IDApCisJCXJldHVybiAwOworCXN0cmlwX2xpbmUobGluZSk7CisJY3AgPSBza2lwX292ZXJfYmxhbmtzKGxpbmUpOworCWNoID0gKmNwOworCWlmIChlbmRfb3JfY29tbWVudChjaCkpCisJCXJldHVybiAwOworCWlmIChjaCA9PSAnWycpIHsKKwkJaWYgKHN0YXRlLT5ncm91cF9sZXZlbCA+IDApCisJCQlyZXR1cm4gUFJPRl9TRUNUSU9OX05PVE9QOworCQljcCsrOworCQljcCA9IHNraXBfb3Zlcl9ibGFua3MoY3ApOworCQlwID0gc3RyY2hyKGNwLCAnXScpOworCQlpZiAocCA9PSBOVUxMKQorCQkJcmV0dXJuIFBST0ZfU0VDVElPTl9TWU5UQVg7CisJCWlmICgqY3AgPT0gJyInKSB7CisJCQljcCsrOworCQkJcGFyc2VfcXVvdGVkX3N0cmluZyhjcCk7CisJCX0gZWxzZSB7CisJCQkqcC0tID0gJ1wwJzsKKwkJCXdoaWxlIChpc3NwYWNlKCpwKSAmJiAocCA+IGNwKSkKKwkJCQkqcC0tID0gJ1wwJzsKKwkJCWlmICgqY3AgPT0gMCkKKwkJCQlyZXR1cm4gUFJPRl9TRUNUSU9OX1NZTlRBWDsKKwkJfQorCQlyZXR2YWwgPSBwcm9maWxlX2ZpbmRfbm9kZShzdGF0ZS0+cm9vdF9zZWN0aW9uLCBjcCwgMCwgMSwKKwkJCQkJICAgJml0ZXIsICZzdGF0ZS0+Y3VycmVudF9zZWN0aW9uKTsKKwkJaWYgKHJldHZhbCA9PSBQUk9GX05PX1NFQ1RJT04pIHsKKwkJCXJldHZhbCA9IHByb2ZpbGVfYWRkX25vZGUoc3RhdGUtPnJvb3Rfc2VjdGlvbiwKKwkJCQkJCSAgY3AsIDAsCisJCQkJCQkgICZzdGF0ZS0+Y3VycmVudF9zZWN0aW9uKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJcmV0dXJuIHJldHZhbDsKKwkJfSBlbHNlIGlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCisJCS8qCisJCSAqIEZpbmlzaCBvZmYgdGhlIHJlc3Qgb2YgdGhlIGxpbmUuCisJCSAqLworCQljcCA9IHArMTsKKwkJaWYgKCpjcCA9PSAnKicpIHsKKwkJCXN0YXRlLT5jdXJyZW50X3NlY3Rpb24tPmZpbmFsID0gMTsKKwkJCWNwKys7CisJCX0KKwkJLyoKKwkJICogU3BhY2VzIG9yIGNvbW1lbnRzIGFmdGVyICddJyBzaG91bGQgbm90IGJlIGZhdGFsCisJCSAqLworCQljcCA9IHNraXBfb3Zlcl9ibGFua3MoY3ApOworCQlpZiAoIWVuZF9vcl9jb21tZW50KCpjcCkpCisJCQlyZXR1cm4gUFJPRl9TRUNUSU9OX1NZTlRBWDsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChjaCA9PSAnfScpIHsKKwkJaWYgKHN0YXRlLT5ncm91cF9sZXZlbCA9PSAwKQorCQkJcmV0dXJuIFBST0ZfRVhUUkFfQ0JSQUNFOworCQlpZiAoKihjcCsxKSA9PSAnKicpCisJCQlzdGF0ZS0+Y3VycmVudF9zZWN0aW9uLT5maW5hbCA9IDE7CisJCXN0YXRlLT5jdXJyZW50X3NlY3Rpb24gPSBzdGF0ZS0+Y3VycmVudF9zZWN0aW9uLT5wYXJlbnQ7CisJCXN0YXRlLT5ncm91cF9sZXZlbC0tOworCQlyZXR1cm4gMDsKKwl9CisJLyoKKwkgKiBQYXJzZSB0aGUgcmVsYXRpb25zCisJICovCisJdGFnID0gY3A7CisJY3AgPSBzdHJjaHIoY3AsICc9Jyk7CisJaWYgKCFjcCkKKwkJcmV0dXJuIFBST0ZfUkVMQVRJT05fU1lOVEFYOworCWlmIChjcCA9PSB0YWcpCisJICAgIHJldHVybiBQUk9GX1JFTEFUSU9OX1NZTlRBWDsKKwkqY3AgPSAnXDAnOworCWlmICgqdGFnID09ICciJykgeworCQl0YWcrKzsKKwkJcGFyc2VfcXVvdGVkX3N0cmluZyh0YWcpOworCX0gZWxzZSB7CisJCS8qIExvb2sgZm9yIHdoaXRlc3BhY2Ugb24gbGVmdC1oYW5kIHNpZGUuICAqLworCQlwID0gc2tpcF9vdmVyX25vbmJsYW5rcyh0YWcpOworCQlpZiAoKnApCisJCQkqcCsrID0gMDsKKwkJcCA9IHNraXBfb3Zlcl9ibGFua3MocCk7CisJCS8qIElmIHdlIGhhdmUgbW9yZSBub24td2hpdGVzcGFjZSwgaXQncyBhbiBlcnJvci4gICovCisJCWlmICgqcCkKKwkJCXJldHVybiBQUk9GX1JFTEFUSU9OX1NZTlRBWDsKKwl9CisKKwljcCA9IHNraXBfb3Zlcl9ibGFua3MoY3ArMSk7CisJdmFsdWUgPSBjcDsKKwljaCA9IHZhbHVlWzBdOworCWlmIChjaCA9PSAnIicpIHsKKwkJdmFsdWUrKzsKKwkJcGFyc2VfcXVvdGVkX3N0cmluZyh2YWx1ZSk7CisJfSBlbHNlIGlmIChlbmRfb3JfY29tbWVudChjaCkpIHsKKwkJZG9fc3Vic2VjdGlvbisrOworCQlzdGF0ZS0+c3RhdGUgPSBTVEFURV9HRVRfT0JSQUNFOworCX0gZWxzZSBpZiAodmFsdWVbMF0gPT0gJ3snKSB7CisJCWNwID0gc2tpcF9vdmVyX2JsYW5rcyh2YWx1ZSsxKTsKKwkJY2ggPSAqY3A7CisJCWlmIChlbmRfb3JfY29tbWVudChjaCkpCisJCQlkb19zdWJzZWN0aW9uKys7CisJCWVsc2UKKwkJCXJldHVybiBQUk9GX1JFTEFUSU9OX1NZTlRBWDsKKwl9IGVsc2UgeworCQljcCA9IHNraXBfb3Zlcl9ub25ibGFua3ModmFsdWUpOworCQlwID0gc2tpcF9vdmVyX2JsYW5rcyhjcCk7CisJCWNoID0gKnA7CisJCSpjcCA9IDA7CisJCWlmICghZW5kX29yX2NvbW1lbnQoY2gpKQorCQkJcmV0dXJuIFBST0ZfUkVMQVRJT05fU1lOVEFYOworCX0KKwlpZiAoZG9fc3Vic2VjdGlvbikgeworCQlwID0gc3RyY2hyKHRhZywgJyonKTsKKwkJaWYgKHApCisJCQkqcCA9ICdcMCc7CisJCXJldHZhbCA9IHByb2ZpbGVfYWRkX25vZGUoc3RhdGUtPmN1cnJlbnRfc2VjdGlvbiwKKwkJCQkJICB0YWcsIDAsICZzdGF0ZS0+Y3VycmVudF9zZWN0aW9uKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJCWlmIChwKQorCQkJc3RhdGUtPmN1cnJlbnRfc2VjdGlvbi0+ZmluYWwgPSAxOworCQlzdGF0ZS0+Z3JvdXBfbGV2ZWwrKzsKKwkJcmV0dXJuIDA7CisJfQorCXAgPSBzdHJjaHIodGFnLCAnKicpOworCWlmIChwKQorCQkqcCA9ICdcMCc7CisJcHJvZmlsZV9hZGRfbm9kZShzdGF0ZS0+Y3VycmVudF9zZWN0aW9uLCB0YWcsIHZhbHVlLCAmbm9kZSk7CisJaWYgKHApCisJCW5vZGUtPmZpbmFsID0gMTsKKwlyZXR1cm4gMDsKK30KKworI2lmZGVmIERFQlVHX1BST0dSQU0KKy8qCisgKiBSZXR1cm4gVFJVRSBpZiB0aGUgc3RyaW5nIGJlZ2lucyBvciBlbmRzIHdpdGggd2hpdGVzcGFjZQorICovCitzdGF0aWMgaW50IG5lZWRfZG91YmxlX3F1b3RlcyhjaGFyICpzdHIpCit7CisJaWYgKCFzdHIgfHwgISpzdHIpCisJCXJldHVybiAwOworCWlmIChpc3NwYWNlKChpbnQpICgqc3RyKSkgfHxpc3NwYWNlKChpbnQpICgqKHN0ciArIHN0cmxlbihzdHIpIC0gMSkpKSkKKwkJcmV0dXJuIDE7CisJaWYgKHN0cmNocihzdHIsICdcbicpIHx8IHN0cmNocihzdHIsICdcdCcpIHx8IHN0cmNocihzdHIsICdcYicpIHx8CisJICAgIHN0cmNocihzdHIsICcgJykgfHwgc3RyY2hyKHN0ciwgJyMnKSB8fCBzdHJjaHIoc3RyLCAnOycpKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIE91dHB1dCBhIHN0cmluZyB3aXRoIGRvdWJsZSBxdW90ZXMsIGRvaW5nIGFwcHJvcHJpYXRlIGJhY2txdW90aW5nCisgKiBvZiBjaGFyYWN0ZXJzIGFzIG5lY2Vzc2FyeS4KKyAqLworc3RhdGljIHZvaWQgb3V0cHV0X3F1b3RlZF9zdHJpbmcoY2hhciAqc3RyLCB2b2lkICgqY2IpKGNvbnN0IGNoYXIgKix2b2lkICopLAorCQkJCSB2b2lkICpkYXRhKQoreworCWNoYXIJY2g7CisJY2hhciBidWZbMl07CisKKwljYigiXCIiLCBkYXRhKTsKKwlpZiAoIXN0cikgeworCQljYigiXCIiLCBkYXRhKTsKKwkJcmV0dXJuOworCX0KKwlidWZbMV0gPSAwOworCXdoaWxlICgoY2ggPSAqc3RyKyspKSB7CisJCXN3aXRjaCAoY2gpIHsKKwkJY2FzZSAnXFwnOgorCQkJY2IoIlxcXFwiLCBkYXRhKTsKKwkJCWJyZWFrOworCQljYXNlICdcbic6CisJCQljYigiXFxuIiwgZGF0YSk7CisJCQlicmVhazsKKwkJY2FzZSAnXHQnOgorCQkJY2IoIlxcdCIsIGRhdGEpOworCQkJYnJlYWs7CisJCWNhc2UgJ1xiJzoKKwkJCWNiKCJcXGIiLCBkYXRhKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJLyogVGhpcyB3b3VsZCBiZSBhIGxvdCBmYXN0ZXIgaWYgd2Ugc2Nhbm5lZAorCQkJICAgZm9yd2FyZCBmb3IgdGhlIG5leHQgImludGVyZXN0aW5nIgorCQkJICAgY2hhcmFjdGVyLiAgKi8KKwkJCWJ1ZlswXSA9IGNoOworCQkJY2IoYnVmLCBkYXRhKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWNiKCJcIiIsIGRhdGEpOworfQorCisjaWZuZGVmIEVPTAorI2RlZmluZSBFT0wgIlxuIgorI2VuZGlmCisKKy8qIEVycm9ycyBzaG91bGQgYmUgcmV0dXJuZWQsIG5vdCBpZ25vcmVkISAgKi8KK3N0YXRpYyB2b2lkIGR1bXBfcHJvZmlsZShzdHJ1Y3QgcHJvZmlsZV9ub2RlICpyb290LCBpbnQgbGV2ZWwsCisJCQkgdm9pZCAoKmNiKShjb25zdCBjaGFyICosIHZvaWQgKiksIHZvaWQgKmRhdGEpCit7CisJaW50IGk7CisJc3RydWN0IHByb2ZpbGVfbm9kZSAqcDsKKwl2b2lkICppdGVyOworCWxvbmcgcmV0dmFsOworCisJaXRlciA9IDA7CisJZG8geworCQlyZXR2YWwgPSBwcm9maWxlX2ZpbmRfbm9kZShyb290LCAwLCAwLCAwLCAmaXRlciwgJnApOworCQlpZiAocmV0dmFsKQorCQkJYnJlYWs7CisJCWZvciAoaT0wOyBpIDwgbGV2ZWw7IGkrKykKKwkJCWNiKCJcdCIsIGRhdGEpOworCQlpZiAobmVlZF9kb3VibGVfcXVvdGVzKHAtPm5hbWUpKQorCQkJb3V0cHV0X3F1b3RlZF9zdHJpbmcocC0+bmFtZSwgY2IsIGRhdGEpOworCQllbHNlCisJCQljYihwLT5uYW1lLCBkYXRhKTsKKwkJY2IoIiA9ICIsIGRhdGEpOworCQlpZiAobmVlZF9kb3VibGVfcXVvdGVzKHAtPnZhbHVlKSkKKwkJCW91dHB1dF9xdW90ZWRfc3RyaW5nKHAtPnZhbHVlLCBjYiwgZGF0YSk7CisJCWVsc2UKKwkJCWNiKHAtPnZhbHVlLCBkYXRhKTsKKwkJY2IoRU9MLCBkYXRhKTsKKwl9IHdoaWxlIChpdGVyICE9IDApOworCisJaXRlciA9IDA7CisJZG8geworCQlyZXR2YWwgPSBwcm9maWxlX2ZpbmRfbm9kZShyb290LCAwLCAwLCAxLCAmaXRlciwgJnApOworCQlpZiAocmV0dmFsKQorCQkJYnJlYWs7CisJCWlmIChsZXZlbCA9PSAwKQl7IC8qIFt4eHhdICovCisJCQljYigiWyIsIGRhdGEpOworCQkJaWYgKG5lZWRfZG91YmxlX3F1b3RlcyhwLT5uYW1lKSkKKwkJCQlvdXRwdXRfcXVvdGVkX3N0cmluZyhwLT5uYW1lLCBjYiwgZGF0YSk7CisJCQllbHNlCisJCQkJY2IocC0+bmFtZSwgZGF0YSk7CisJCQljYigiXSIsIGRhdGEpOworCQkJY2IocC0+ZmluYWwgPyAiKiIgOiAiIiwgZGF0YSk7CisJCQljYihFT0wsIGRhdGEpOworCQkJZHVtcF9wcm9maWxlKHAsIGxldmVsKzEsIGNiLCBkYXRhKTsKKwkJCWNiKEVPTCwgZGF0YSk7CisJCX0gZWxzZSB7IAkvKiB4eHggPSB7IC4uLiB9ICovCisJCQlmb3IgKGk9MDsgaSA8IGxldmVsOyBpKyspCisJCQkJY2IoIlx0IiwgZGF0YSk7CisJCQlpZiAobmVlZF9kb3VibGVfcXVvdGVzKHAtPm5hbWUpKQorCQkJCW91dHB1dF9xdW90ZWRfc3RyaW5nKHAtPm5hbWUsIGNiLCBkYXRhKTsKKwkJCWVsc2UKKwkJCQljYihwLT5uYW1lLCBkYXRhKTsKKwkJCWNiKCIgPSB7IiwgZGF0YSk7CisJCQljYihFT0wsIGRhdGEpOworCQkJZHVtcF9wcm9maWxlKHAsIGxldmVsKzEsIGNiLCBkYXRhKTsKKwkJCWZvciAoaT0wOyBpIDwgbGV2ZWw7IGkrKykKKwkJCQljYigiXHQiLCBkYXRhKTsKKwkJCWNiKCJ9IiwgZGF0YSk7CisJCQljYihwLT5maW5hbCA/ICIqIiA6ICIiLCBkYXRhKTsKKwkJCWNiKEVPTCwgZGF0YSk7CisJCX0KKwl9IHdoaWxlIChpdGVyICE9IDApOworfQorCitzdGF0aWMgdm9pZCBkdW1wX3Byb2ZpbGVfdG9fZmlsZV9jYihjb25zdCBjaGFyICpzdHIsIHZvaWQgKmRhdGEpCit7CisJZnB1dHMoc3RyLCBkYXRhKTsKK30KKworZXJyY29kZV90IHByb2ZpbGVfd3JpdGVfdHJlZV9maWxlKHN0cnVjdCBwcm9maWxlX25vZGUgKnJvb3QsIEZJTEUgKmRzdGZpbGUpCit7CisJZHVtcF9wcm9maWxlKHJvb3QsIDAsIGR1bXBfcHJvZmlsZV90b19maWxlX2NiLCBkc3RmaWxlKTsKKwlyZXR1cm4gMDsKK30KKworc3RydWN0IHByb2ZfYnVmIHsKKwljaGFyICpiYXNlOworCXNpemVfdCBjdXIsIG1heDsKKwlpbnQgZXJyOworfTsKKworc3RhdGljIHZvaWQgYWRkX2RhdGFfdG9fYnVmZmVyKHN0cnVjdCBwcm9mX2J1ZiAqYiwgY29uc3Qgdm9pZCAqZCwgc2l6ZV90IGxlbikKK3sKKwlpZiAoYi0+ZXJyKQorCQlyZXR1cm47CisJaWYgKGItPm1heCAtIGItPmN1ciA8IGxlbikgeworCQlzaXplX3QgbmV3c2l6ZTsKKwkJY2hhciAqbmV3cHRyOworCisJCW5ld3NpemUgPSBiLT5tYXggKyAoYi0+bWF4ID4+IDEpICsgbGVuICsgMTAyNDsKKwkJbmV3cHRyID0gcmVhbGxvYyhiLT5iYXNlLCBuZXdzaXplKTsKKwkJaWYgKG5ld3B0ciA9PSBOVUxMKSB7CisJCQliLT5lcnIgPSAxOworCQkJcmV0dXJuOworCQl9CisJCWItPmJhc2UgPSBuZXdwdHI7CisJCWItPm1heCA9IG5ld3NpemU7CisJfQorCW1lbWNweShiLT5iYXNlICsgYi0+Y3VyLCBkLCBsZW4pOworCWItPmN1ciArPSBsZW47IAkJLyogaWdub3JlIG92ZXJmbG93ICovCit9CisKK3N0YXRpYyB2b2lkIGR1bXBfcHJvZmlsZV90b19idWZmZXJfY2IoY29uc3QgY2hhciAqc3RyLCB2b2lkICpkYXRhKQoreworCWFkZF9kYXRhX3RvX2J1ZmZlcigoc3RydWN0IHByb2ZfYnVmICopZGF0YSwgc3RyLCBzdHJsZW4oc3RyKSk7Cit9CisKK2VycmNvZGVfdCBwcm9maWxlX3dyaXRlX3RyZWVfdG9fYnVmZmVyKHN0cnVjdCBwcm9maWxlX25vZGUgKnJvb3QsCisJCQkJICAgICAgIGNoYXIgKipidWYpCit7CisJc3RydWN0IHByb2ZfYnVmIHByb2ZfYnVmID0geyAwLCAwLCAwLCAwIH07CisKKwlkdW1wX3Byb2ZpbGUocm9vdCwgMCwgZHVtcF9wcm9maWxlX3RvX2J1ZmZlcl9jYiwgJnByb2ZfYnVmKTsKKwlpZiAocHJvZl9idWYuZXJyKSB7CisJCSpidWYgPSBOVUxMOworCQlyZXR1cm4gRU5PTUVNOworCX0KKwlhZGRfZGF0YV90b19idWZmZXIoJnByb2ZfYnVmLCAiIiwgMSk7IC8qIGFwcGVuZCBudWwgKi8KKwlpZiAocHJvZl9idWYubWF4IC0gcHJvZl9idWYuY3VyID4gKHByb2ZfYnVmLm1heCA+PiAzKSkgeworCQljaGFyICpuZXdwdHIgPSByZWFsbG9jKHByb2ZfYnVmLmJhc2UsIHByb2ZfYnVmLmN1cik7CisJCWlmIChuZXdwdHIpCisJCQlwcm9mX2J1Zi5iYXNlID0gbmV3cHRyOworCX0KKwkqYnVmID0gcHJvZl9idWYuYmFzZTsKKwlyZXR1cm4gMDsKK30KKyNlbmRpZgorCisvKgorICogcHJvZl90cmVlLmMgLS0tIHRoZXNlIHJvdXRpbmVzIG1haW50YWluIHRoZSBwYXJzZSB0cmVlIG9mIHRoZQorICogCWNvbmZpZyBmaWxlLgorICoKKyAqIEFsbCBvZiB0aGUgZGV0YWlscyBvZiBob3cgdGhlIHRyZWUgaXMgc3RvcmVkIGlzIGFic3RyYWN0ZWQgYXdheSBpbgorICogdGhpcyBmaWxlOyBhbGwgb2YgdGhlIG90aGVyIHByb2ZpbGUgcm91dGluZXMgYnVpbGQsIGFjY2VzcywgYW5kCisgKiBtb2RpZnkgdGhlIHRyZWUgdmlhIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMgZm91bmQgaW4gdGhpcyBmaWxlLgorICoKKyAqIEVhY2ggbm9kZSBtYXkgcmVwcmVzZW50IGVpdGhlciBhIHJlbGF0aW9uIG9yIGEgc2VjdGlvbiBoZWFkZXIuCisgKgorICogQSBzZWN0aW9uIGhlYWRlciBtdXN0IGhhdmUgaXRzIHZhbHVlIGZpZWxkIHNldCB0byAwLCBhbmQgbWF5IGEgb25lCisgKiBvciBtb3JlIGNoaWxkIG5vZGVzLCBwb2ludGVkIHRvIGJ5IGZpcnN0X2NoaWxkLgorICoKKyAqIEEgcmVsYXRpb24gaGFzIGFzIGl0cyB2YWx1ZSBhIHBvaW50ZXIgdG8gYWxsb2NhdGVkIG1lbW9yeQorICogY29udGFpbmluZyBhIHN0cmluZy4gIEl0cyBmaXJzdF9jaGlsZCBwb2ludGVyIG11c3QgYmUgbnVsbC4KKyAqCisgKi8KKworLyoKKyAqIEZyZWUgYSBub2RlLCBhbmQgYW55IGNoaWxkcmVuCisgKi8KK3ZvaWQgcHJvZmlsZV9mcmVlX25vZGUoc3RydWN0IHByb2ZpbGVfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlICpjaGlsZCwgKm5leHQ7CisKKwlpZiAobm9kZS0+bWFnaWMgIT0gUFJPRl9NQUdJQ19OT0RFKQorCQlyZXR1cm47CisKKwlmcmVlKG5vZGUtPm5hbWUpOworCWZyZWUobm9kZS0+dmFsdWUpOworCisJZm9yIChjaGlsZD1ub2RlLT5maXJzdF9jaGlsZDsgY2hpbGQ7IGNoaWxkID0gbmV4dCkgeworCQluZXh0ID0gY2hpbGQtPm5leHQ7CisJCXByb2ZpbGVfZnJlZV9ub2RlKGNoaWxkKTsKKwl9CisJbm9kZS0+bWFnaWMgPSAwOworCisJZnJlZShub2RlKTsKK30KKworI2lmbmRlZiBIQVZFX1NUUkRVUAorI3VuZGVmIHN0cmR1cAorI2RlZmluZSBzdHJkdXAgTVlzdHJkdXAKK3N0YXRpYyBjaGFyICpNWXN0cmR1cCAoY29uc3QgY2hhciAqcykKK3sKKyAgICBzaXplX3Qgc3ogPSBzdHJsZW4ocykgKyAxOworICAgIGNoYXIgKnAgPSBtYWxsb2Moc3opOworICAgIGlmIChwICE9IDApCisJbWVtY3B5KHAsIHMsIHN6KTsKKyAgICByZXR1cm4gcDsKK30KKyNlbmRpZgorCisvKgorICogQ3JlYXRlIGEgbm9kZQorICovCitlcnJjb2RlX3QgcHJvZmlsZV9jcmVhdGVfbm9kZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSwKKwkJCSAgICAgIHN0cnVjdCBwcm9maWxlX25vZGUgKipyZXRfbm9kZSkKK3sKKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlICpuZXc7CisKKwluZXcgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBwcm9maWxlX25vZGUpKTsKKwlpZiAoIW5ldykKKwkJcmV0dXJuIEVOT01FTTsKKwltZW1zZXQobmV3LCAwLCBzaXplb2Yoc3RydWN0IHByb2ZpbGVfbm9kZSkpOworCW5ldy0+bmFtZSA9IHN0cmR1cChuYW1lKTsKKwlpZiAobmV3LT5uYW1lID09IDApIHsKKwkgICAgcHJvZmlsZV9mcmVlX25vZGUobmV3KTsKKwkgICAgcmV0dXJuIEVOT01FTTsKKwl9CisJaWYgKHZhbHVlKSB7CisJCW5ldy0+dmFsdWUgPSBzdHJkdXAodmFsdWUpOworCQlpZiAobmV3LT52YWx1ZSA9PSAwKSB7CisJCSAgICBwcm9maWxlX2ZyZWVfbm9kZShuZXcpOworCQkgICAgcmV0dXJuIEVOT01FTTsKKwkJfQorCX0KKwluZXctPm1hZ2ljID0gUFJPRl9NQUdJQ19OT0RFOworCisJKnJldF9ub2RlID0gbmV3OworCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB2ZXJpZmllcyB0aGF0IGFsbCBvZiB0aGUgcmVwcmVzZW50YXRpb24gaW52YXJpZW50cyBvZgorICogdGhlIHByb2ZpbGUgYXJlIHRydWUuICBJZiBub3QsIHdlIGhhdmUgYSBwcm9ncmFtbWluZyBidWcgc29tZXdoZXJlLAorICogcHJvYmFibHkgaW4gdGhpcyBmaWxlLgorICovCisjaWZkZWYgREVCVUdfUFJPR1JBTQorZXJyY29kZV90IHByb2ZpbGVfdmVyaWZ5X25vZGUoc3RydWN0IHByb2ZpbGVfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlICpwLCAqbGFzdDsKKwllcnJjb2RlX3QJcmV0dmFsOworCisJQ0hFQ0tfTUFHSUMobm9kZSk7CisKKwlpZiAobm9kZS0+dmFsdWUgJiYgbm9kZS0+Zmlyc3RfY2hpbGQpCisJCXJldHVybiBQUk9GX1NFQ1RJT05fV0lUSF9WQUxVRTsKKworCWxhc3QgPSAwOworCWZvciAocCA9IG5vZGUtPmZpcnN0X2NoaWxkOyBwOyBsYXN0ID0gcCwgcCA9IHAtPm5leHQpIHsKKwkJaWYgKHAtPnByZXYgIT0gbGFzdCkKKwkJCXJldHVybiBQUk9GX0JBRF9MSU5LX0xJU1Q7CisJCWlmIChsYXN0ICYmIChsYXN0LT5uZXh0ICE9IHApKQorCQkJcmV0dXJuIFBST0ZfQkFEX0xJTktfTElTVDsKKwkJaWYgKG5vZGUtPmdyb3VwX2xldmVsKzEgIT0gcC0+Z3JvdXBfbGV2ZWwpCisJCQlyZXR1cm4gUFJPRl9CQURfR1JPVVBfTFZMOworCQlpZiAocC0+cGFyZW50ICE9IG5vZGUpCisJCQlyZXR1cm4gUFJPRl9CQURfUEFSRU5UX1BUUjsKKwkJcmV0dmFsID0gcHJvZmlsZV92ZXJpZnlfbm9kZShwKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCXJldHVybiAwOworfQorI2VuZGlmCisKKy8qCisgKiBBZGQgYSBub2RlIHRvIGEgcGFydGljdWxhciBzZWN0aW9uCisgKi8KK2VycmNvZGVfdCBwcm9maWxlX2FkZF9ub2RlKHN0cnVjdCBwcm9maWxlX25vZGUgKnNlY3Rpb24sIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICBjb25zdCBjaGFyICp2YWx1ZSwgc3RydWN0IHByb2ZpbGVfbm9kZSAqKnJldF9ub2RlKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IHByb2ZpbGVfbm9kZSAqcCwgKmxhc3QsICpuZXc7CisKKwlDSEVDS19NQUdJQyhzZWN0aW9uKTsKKworCWlmIChzZWN0aW9uLT52YWx1ZSkKKwkJcmV0dXJuIFBST0ZfQUREX05PVF9TRUNUSU9OOworCisJLyoKKwkgKiBGaW5kIHRoZSBwbGFjZSB0byBpbnNlcnQgdGhlIG5ldyBub2RlLiAgV2UgbG9vayBmb3IgdGhlCisJICogcGxhY2UgKmFmdGVyKiB0aGUgbGFzdCBtYXRjaCBvZiB0aGUgbm9kZSBuYW1lLCBzaW5jZQorCSAqIG9yZGVyIG1hdHRlcnMuCisJICovCisJZm9yIChwPXNlY3Rpb24tPmZpcnN0X2NoaWxkLCBsYXN0ID0gMDsgcDsgbGFzdCA9IHAsIHAgPSBwLT5uZXh0KSB7CisJCWludCBjbXA7CisJCWNtcCA9IHN0cmNtcChwLT5uYW1lLCBuYW1lKTsKKwkJaWYgKGNtcCA+IDApCisJCQlicmVhazsKKwl9CisJcmV0dmFsID0gcHJvZmlsZV9jcmVhdGVfbm9kZShuYW1lLCB2YWx1ZSwgJm5ldyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwluZXctPmdyb3VwX2xldmVsID0gc2VjdGlvbi0+Z3JvdXBfbGV2ZWwrMTsKKwluZXctPmRlbGV0ZWQgPSAwOworCW5ldy0+cGFyZW50ID0gc2VjdGlvbjsKKwluZXctPnByZXYgPSBsYXN0OworCW5ldy0+bmV4dCA9IHA7CisJaWYgKHApCisJCXAtPnByZXYgPSBuZXc7CisJaWYgKGxhc3QpCisJCWxhc3QtPm5leHQgPSBuZXc7CisJZWxzZQorCQlzZWN0aW9uLT5maXJzdF9jaGlsZCA9IG5ldzsKKwlpZiAocmV0X25vZGUpCisJCSpyZXRfbm9kZSA9IG5ldzsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgc2VjdGlvbiwgcmV0dXJuaW5nIHRoZSBub2RlcyB3aGljaCBtYXRjaAorICogdGhlIGdpdmVuIG5hbWUuICBJZiBuYW1lIGlzIE5VTEwsIHRoZW4gaW50ZXJhdGUgdGhyb3VnaCBhbGwgdGhlCisgKiBub2RlcyBpbiB0aGUgc2VjdGlvbi4gIElmIHNlY3Rpb25fZmxhZyBpcyBub24temVybywgb25seSByZXR1cm4gdGhlCisgKiBzZWN0aW9uIHdoaWNoIG1hdGNoZXMgdGhlIG5hbWU7IGRvbid0IHJldHVybiByZWxhdGlvbnMuICBJZiB2YWx1ZQorICogaXMgbm9uLU5VTEwsIHRoZW4gb25seSByZXR1cm4gcmVsYXRpb25zIHdoaWNoIG1hdGNoIHRoZSByZXF1ZXN0ZWQKKyAqIHZhbHVlLiAgKFRoZSB2YWx1ZSBhcmd1bWVudCBpcyBpZ25vcmVkIGlmIHNlY3Rpb25fZmxhZyBpcyBub24temVyby4pCisgKgorICogVGhlIGZpcnN0IHRpbWUgdGhpcyByb3V0aW5lIGlzIGNhbGxlZCwgdGhlIHN0YXRlIHBvaW50ZXIgbXVzdCBiZQorICogbnVsbC4gIFdoZW4gdGhpcyBwcm9maWxlX2ZpbmRfbm9kZV9yZWxhdGlvbigpIHJldHVybnMsIGlmIHRoZSBzdGF0ZQorICogcG9pbnRlciBpcyBub24tTlVMTCwgdGhlbiB0aGlzIHJvdXRpbmUgc2hvdWxkIGJlIGNhbGxlZCBhZ2Fpbi4KKyAqIChUaGlzIHdvbid0IGhhcHBlbiBpZiBzZWN0aW9uX2ZsYWcgaXMgbm9uLXplcm8sIG9idmlvdXNseS4pCisgKgorICovCitlcnJjb2RlX3QgcHJvZmlsZV9maW5kX25vZGUoc3RydWN0IHByb2ZpbGVfbm9kZSAqc2VjdGlvbiwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICBjb25zdCBjaGFyICp2YWx1ZSwgaW50IHNlY3Rpb25fZmxhZywgdm9pZCAqKnN0YXRlLAorCQkJICAgIHN0cnVjdCBwcm9maWxlX25vZGUgKipub2RlKQoreworCXN0cnVjdCBwcm9maWxlX25vZGUgKnA7CisKKwlDSEVDS19NQUdJQyhzZWN0aW9uKTsKKwlwID0gKnN0YXRlOworCWlmIChwKSB7CisJCUNIRUNLX01BR0lDKHApOworCX0gZWxzZQorCQlwID0gc2VjdGlvbi0+Zmlyc3RfY2hpbGQ7CisKKwlmb3IgKDsgcDsgcCA9IHAtPm5leHQpIHsKKwkJaWYgKG5hbWUgJiYgKHN0cmNtcChwLT5uYW1lLCBuYW1lKSkpCisJCQljb250aW51ZTsKKwkJaWYgKHNlY3Rpb25fZmxhZykgeworCQkJaWYgKHAtPnZhbHVlKQorCQkJCWNvbnRpbnVlOworCQl9IGVsc2UgeworCQkJaWYgKCFwLT52YWx1ZSkKKwkJCQljb250aW51ZTsKKwkJCWlmICh2YWx1ZSAmJiAoc3RyY21wKHAtPnZhbHVlLCB2YWx1ZSkpKQorCQkJCWNvbnRpbnVlOworCQl9CisJCWlmIChwLT5kZWxldGVkKQorCQkgICAgY29udGludWU7CisJCS8qIEEgbWF0Y2ghICovCisJCWlmIChub2RlKQorCQkJKm5vZGUgPSBwOworCQlicmVhazsKKwl9CisJaWYgKHAgPT0gMCkgeworCQkqc3RhdGUgPSAwOworCQlyZXR1cm4gc2VjdGlvbl9mbGFnID8gUFJPRl9OT19TRUNUSU9OIDogUFJPRl9OT19SRUxBVElPTjsKKwl9CisJLyoKKwkgKiBPSywgd2UndmUgZm91bmQgb25lIG1hdGNoOyBub3cgbGV0J3MgdHJ5IHRvIGZpbmQgYW5vdGhlcgorCSAqIG9uZS4gIFRoaXMgd2F5LCBpZiB3ZSByZXR1cm4gYSBub24temVybyBzdGF0ZSBwb2ludGVyLAorCSAqIHRoZXJlJ3MgZ3VhcmFudGVlZCB0byBiZSBhbm90aGVyIG1hdGNoIHRoYXQncyByZXR1cm5lZC4KKwkgKi8KKwlmb3IgKHAgPSBwLT5uZXh0OyBwOyBwID0gcC0+bmV4dCkgeworCQlpZiAobmFtZSAmJiAoc3RyY21wKHAtPm5hbWUsIG5hbWUpKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoc2VjdGlvbl9mbGFnKSB7CisJCQlpZiAocC0+dmFsdWUpCisJCQkJY29udGludWU7CisJCX0gZWxzZSB7CisJCQlpZiAoIXAtPnZhbHVlKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHZhbHVlICYmIChzdHJjbXAocC0+dmFsdWUsIHZhbHVlKSkpCisJCQkJY29udGludWU7CisJCX0KKwkJLyogQSBtYXRjaCEgKi8KKwkJYnJlYWs7CisJfQorCSpzdGF0ZSA9IHA7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGlzIGEgZ2VuZXJhbC1wdXJwb3NlIGl0ZXJhdG9yIGZvciByZXR1cm5pbmcgYWxsIG5vZGVzIHRoYXQKKyAqIG1hdGNoIHRoZSBzcGVjaWZpZWQgbmFtZSBhcnJheS4KKyAqLworc3RydWN0IHByb2ZpbGVfaXRlcmF0b3IgeworCXByZl9tYWdpY190CQltYWdpYzsKKwlwcm9maWxlX3QJCXByb2ZpbGU7CisJaW50CQkJZmxhZ3M7CisJY29uc3QgY2hhciAJCSpjb25zdCAqbmFtZXM7CisJY29uc3QgY2hhcgkJKm5hbWU7CisJcHJmX2ZpbGVfdAkJZmlsZTsKKwlpbnQJCQlmaWxlX3NlcmlhbDsKKwlpbnQJCQlkb25lX2lkeDsKKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlIAkqbm9kZTsKKwlpbnQJCQludW07Cit9OworCitlcnJjb2RlX3QKK3Byb2ZpbGVfaXRlcmF0b3JfY3JlYXRlKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpjb25zdCAqbmFtZXMsIGludCBmbGFncywKKwkJCXZvaWQgKipyZXRfaXRlcikKK3sKKwlzdHJ1Y3QgcHJvZmlsZV9pdGVyYXRvciAqaXRlcjsKKwlpbnQJZG9uZV9pZHggPSAwOworCisJaWYgKHByb2ZpbGUgPT0gMCkKKwkJcmV0dXJuIFBST0ZfTk9fUFJPRklMRTsKKwlpZiAocHJvZmlsZS0+bWFnaWMgIT0gUFJPRl9NQUdJQ19QUk9GSUxFKQorCQlyZXR1cm4gUFJPRl9NQUdJQ19QUk9GSUxFOworCWlmICghbmFtZXMpCisJCXJldHVybiBQUk9GX0JBRF9OQU1FU0VUOworCWlmICghKGZsYWdzICYgUFJPRklMRV9JVEVSX0xJU1RfU0VDVElPTikpIHsKKwkJaWYgKCFuYW1lc1swXSkKKwkJCXJldHVybiBQUk9GX0JBRF9OQU1FU0VUOworCQlkb25lX2lkeCA9IDE7CisJfQorCisJaWYgKChpdGVyID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgcHJvZmlsZV9pdGVyYXRvcikpKSA9PSBOVUxMKQorCQlyZXR1cm4gRU5PTUVNOworCisJaXRlci0+bWFnaWMgPSBQUk9GX01BR0lDX0lURVJBVE9SOworCWl0ZXItPnByb2ZpbGUgPSBwcm9maWxlOworCWl0ZXItPm5hbWVzID0gbmFtZXM7CisJaXRlci0+ZmxhZ3MgPSBmbGFnczsKKwlpdGVyLT5maWxlID0gcHJvZmlsZS0+Zmlyc3RfZmlsZTsKKwlpdGVyLT5kb25lX2lkeCA9IGRvbmVfaWR4OworCWl0ZXItPm5vZGUgPSAwOworCWl0ZXItPm51bSA9IDA7CisJKnJldF9pdGVyID0gaXRlcjsKKwlyZXR1cm4gMDsKK30KKwordm9pZCBwcm9maWxlX2l0ZXJhdG9yX2ZyZWUodm9pZCAqKml0ZXJfcCkKK3sKKwlzdHJ1Y3QgcHJvZmlsZV9pdGVyYXRvciAqaXRlcjsKKworCWlmICghaXRlcl9wKQorCQlyZXR1cm47CisJaXRlciA9ICppdGVyX3A7CisJaWYgKCFpdGVyIHx8IGl0ZXItPm1hZ2ljICE9IFBST0ZfTUFHSUNfSVRFUkFUT1IpCisJCXJldHVybjsKKwlmcmVlKGl0ZXIpOworCSppdGVyX3AgPSAwOworfQorCisvKgorICogTm90ZTogdGhlIHJldHVybmVkIGNoYXJhY3RlciBzdHJpbmdzIGluIHJldF9uYW1lIGFuZCByZXRfdmFsdWUKKyAqIHBvaW50cyB0byB0aGUgc3RvcmVkIGNoYXJhY3RlciBzdHJpbmcgaW4gdGhlIHBhcnNlIHN0cmluZy4gIEJlZm9yZQorICogdGhpcyBzdHJpbmcgdmFsdWUgaXMgcmV0dXJuZWQgdG8gYSBjYWxsaW5nIGFwcGxpY2F0aW9uCisgKiAocHJvZmlsZV9ub2RlX2l0ZXJhdG9yIGlzIG5vdCBhbiBleHBvcnRlZCBpbnRlcmZhY2UpLCBpdCBzaG91bGQgYmUKKyAqIHN0cmR1cCgpJ2VkLgorICovCitlcnJjb2RlX3QgcHJvZmlsZV9ub2RlX2l0ZXJhdG9yKHZvaWQgKippdGVyX3AsIHN0cnVjdCBwcm9maWxlX25vZGUgKipyZXRfbm9kZSwKKwkJCQljaGFyICoqcmV0X25hbWUsIGNoYXIgKipyZXRfdmFsdWUpCit7CisJc3RydWN0IHByb2ZpbGVfaXRlcmF0b3IgCSppdGVyID0gKml0ZXJfcDsKKwlzdHJ1Y3QgcHJvZmlsZV9ub2RlIAkJKnNlY3Rpb24sICpwOworCWNvbnN0IGNoYXIJCQkqY29uc3QgKmNwcDsKKwllcnJjb2RlX3QJCQlyZXR2YWw7CisJaW50CQkJCXNraXBfbnVtID0gMDsKKworCWlmICghaXRlciB8fCBpdGVyLT5tYWdpYyAhPSBQUk9GX01BR0lDX0lURVJBVE9SKQorCQlyZXR1cm4gUFJPRl9NQUdJQ19JVEVSQVRPUjsKKwlpZiAoaXRlci0+ZmlsZSAmJiBpdGVyLT5maWxlLT5tYWdpYyAhPSBQUk9GX01BR0lDX0ZJTEUpCisJICAgIHJldHVybiBQUk9GX01BR0lDX0ZJTEU7CisJLyoKKwkgKiBJZiB0aGUgZmlsZSBoYXMgY2hhbmdlZCwgdGhlbiB0aGUgbm9kZSBwb2ludGVyIGlzIGludmFsaWQsCisJICogc28gd2UnbGwgaGF2ZSBzZWFyY2ggdGhlIGZpbGUgYWdhaW4gbG9va2luZyBmb3IgaXQuCisJICovCisJaWYgKGl0ZXItPm5vZGUgJiYgKGl0ZXItPmZpbGUgJiYKKwkJCSAgIGl0ZXItPmZpbGUtPnVwZF9zZXJpYWwgIT0gaXRlci0+ZmlsZV9zZXJpYWwpKSB7CisJCWl0ZXItPmZsYWdzICY9IH5QUk9GSUxFX0lURVJfRklOQUxfU0VFTjsKKwkJc2tpcF9udW0gPSBpdGVyLT5udW07CisJCWl0ZXItPm5vZGUgPSAwOworCX0KKwlpZiAoaXRlci0+bm9kZSAmJiBpdGVyLT5ub2RlLT5tYWdpYyAhPSBQUk9GX01BR0lDX05PREUpIHsKKwkgICAgcmV0dXJuIFBST0ZfTUFHSUNfTk9ERTsKKwl9CitnZXRfbmV3X2ZpbGU6CisJaWYgKGl0ZXItPm5vZGUgPT0gMCkgeworCQlpZiAoaXRlci0+ZmlsZSA9PSAwIHx8CisJCSAgICAoaXRlci0+ZmxhZ3MgJiBQUk9GSUxFX0lURVJfRklOQUxfU0VFTikpIHsKKwkJCXByb2ZpbGVfaXRlcmF0b3JfZnJlZShpdGVyX3ApOworCQkJaWYgKHJldF9ub2RlKQorCQkJCSpyZXRfbm9kZSA9IDA7CisJCQlpZiAocmV0X25hbWUpCisJCQkJKnJldF9uYW1lID0gMDsKKwkJCWlmIChyZXRfdmFsdWUpCisJCQkJKnJldF92YWx1ZSA9MDsKKwkJCXJldHVybiAwOworCQl9CisJCWlmICgocmV0dmFsID0gcHJvZmlsZV91cGRhdGVfZmlsZShpdGVyLT5maWxlKSkpIHsKKwkJICAgIGlmIChyZXR2YWwgPT0gRU5PRU5UIHx8IHJldHZhbCA9PSBFQUNDRVMpIHsKKwkJCS8qIFhYWCBtZW1vcnkgbGVhaz8gKi8KKwkJCWl0ZXItPmZpbGUgPSBpdGVyLT5maWxlLT5uZXh0OworCQkJc2tpcF9udW0gPSAwOworCQkJcmV0dmFsID0gMDsKKwkJCWdvdG8gZ2V0X25ld19maWxlOworCQkgICAgfSBlbHNlIHsKKwkJCXByb2ZpbGVfaXRlcmF0b3JfZnJlZShpdGVyX3ApOworCQkJcmV0dXJuIHJldHZhbDsKKwkJICAgIH0KKwkJfQorCQlpdGVyLT5maWxlX3NlcmlhbCA9IGl0ZXItPmZpbGUtPnVwZF9zZXJpYWw7CisJCS8qCisJCSAqIEZpbmQgdGhlIHNlY3Rpb24gdG8gbGlzdCBpZiB3ZSBhcmUgYSBMSVNUX1NFQ1RJT04sCisJCSAqIG9yIGZpbmQgdGhlIGNvbnRhaW5pbmcgc2VjdGlvbiBpZiBub3QuCisJCSAqLworCQlzZWN0aW9uID0gaXRlci0+ZmlsZS0+cm9vdDsKKwkJZm9yIChjcHAgPSBpdGVyLT5uYW1lczsgY3BwW2l0ZXItPmRvbmVfaWR4XTsgY3BwKyspIHsKKwkJCWZvciAocD1zZWN0aW9uLT5maXJzdF9jaGlsZDsgcDsgcCA9IHAtPm5leHQpIHsKKwkJCQlpZiAoIXN0cmNtcChwLT5uYW1lLCAqY3BwKSAmJiAhcC0+dmFsdWUpCisJCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKCFwKSB7CisJCQkJc2VjdGlvbiA9IDA7CisJCQkJYnJlYWs7CisJCQl9CisJCQlzZWN0aW9uID0gcDsKKwkJCWlmIChwLT5maW5hbCkKKwkJCQlpdGVyLT5mbGFncyB8PSBQUk9GSUxFX0lURVJfRklOQUxfU0VFTjsKKwkJfQorCQlpZiAoIXNlY3Rpb24pIHsKKwkJCWl0ZXItPmZpbGUgPSBpdGVyLT5maWxlLT5uZXh0OworCQkJc2tpcF9udW0gPSAwOworCQkJZ290byBnZXRfbmV3X2ZpbGU7CisJCX0KKwkJaXRlci0+bmFtZSA9ICpjcHA7CisJCWl0ZXItPm5vZGUgPSBzZWN0aW9uLT5maXJzdF9jaGlsZDsKKwl9CisJLyoKKwkgKiBPSywgbm93IHdlIGtub3cgaXRlci0+bm9kZSBpcyBzZXQgdXAgY29ycmVjdGx5LiAgTGV0J3MgZG8KKwkgKiB0aGUgc2VhcmNoLgorCSAqLworCWZvciAocCA9IGl0ZXItPm5vZGU7IHA7IHAgPSBwLT5uZXh0KSB7CisJCWlmIChpdGVyLT5uYW1lICYmIHN0cmNtcChwLT5uYW1lLCBpdGVyLT5uYW1lKSkKKwkJCWNvbnRpbnVlOworCQlpZiAoKGl0ZXItPmZsYWdzICYgUFJPRklMRV9JVEVSX1NFQ1RJT05TX09OTFkpICYmCisJCSAgICBwLT52YWx1ZSkKKwkJCWNvbnRpbnVlOworCQlpZiAoKGl0ZXItPmZsYWdzICYgUFJPRklMRV9JVEVSX1JFTEFUSU9OU19PTkxZKSAmJgorCQkgICAgIXAtPnZhbHVlKQorCQkJY29udGludWU7CisJCWlmIChza2lwX251bSA+IDApIHsKKwkJCXNraXBfbnVtLS07CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAocC0+ZGVsZXRlZCkKKwkJCWNvbnRpbnVlOworCQlicmVhazsKKwl9CisJaXRlci0+bnVtKys7CisJaWYgKCFwKSB7CisJCWl0ZXItPmZpbGUgPSBpdGVyLT5maWxlLT5uZXh0OworCQlpdGVyLT5ub2RlID0gMDsKKwkJc2tpcF9udW0gPSAwOworCQlnb3RvIGdldF9uZXdfZmlsZTsKKwl9CisJaWYgKChpdGVyLT5ub2RlID0gcC0+bmV4dCkgPT0gTlVMTCkKKwkJaXRlci0+ZmlsZSA9IGl0ZXItPmZpbGUtPm5leHQ7CisJaWYgKHJldF9ub2RlKQorCQkqcmV0X25vZGUgPSBwOworCWlmIChyZXRfbmFtZSkKKwkJKnJldF9uYW1lID0gcC0+bmFtZTsKKwlpZiAocmV0X3ZhbHVlKQorCQkqcmV0X3ZhbHVlID0gcC0+dmFsdWU7CisJcmV0dXJuIDA7Cit9CisKKworLyoKKyAqIHByb2ZfZ2V0LmMgLS0tIHJvdXRpbmVzIHRoYXQgZXhwb3NlIHRoZSBwdWJsaWMgaW50ZXJmYWNlcyBmb3IKKyAqIAlxdWVyeWluZyBpdGVtcyBmcm9tIHRoZSBwcm9maWxlLgorICoKKyAqLworCisvKgorICogVGhpcyBmdW5jdGlvbiBvbmx5IGdldHMgdGhlIGZpcnN0IHZhbHVlIGZyb20gdGhlIGZpbGU7IGl0IGlzIGEKKyAqIGhlbHBlciBmdW5jdGlvbiBmb3IgcHJvZmlsZV9nZXRfc3RyaW5nLCBwcm9maWxlX2dldF9pbnRlZ2VyLCBldGMuCisgKi8KK2VycmNvZGVfdCBwcm9maWxlX2dldF92YWx1ZShwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICBjb25zdCBjaGFyICpzdWJuYW1lLCBjb25zdCBjaGFyICpzdWJzdWJuYW1lLAorCQkJICAgIGNvbnN0IGNoYXIgKipyZXRfdmFsdWUpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJdm9pZAkJCSpzdGF0ZTsKKwljaGFyCQkJKnZhbHVlOworCWNvbnN0IGNoYXIJCSpuYW1lc1s0XTsKKworCW5hbWVzWzBdID0gbmFtZTsKKwluYW1lc1sxXSA9IHN1Ym5hbWU7CisJbmFtZXNbMl0gPSBzdWJzdWJuYW1lOworCW5hbWVzWzNdID0gMDsKKworCWlmICgocmV0dmFsID0gcHJvZmlsZV9pdGVyYXRvcl9jcmVhdGUocHJvZmlsZSwgbmFtZXMsCisJCQkJCSAgICAgIFBST0ZJTEVfSVRFUl9SRUxBVElPTlNfT05MWSwKKwkJCQkJICAgICAgJnN0YXRlKSkpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoKHJldHZhbCA9IHByb2ZpbGVfbm9kZV9pdGVyYXRvcigmc3RhdGUsIDAsIDAsICZ2YWx1ZSkpKQorCQlnb3RvIGNsZWFudXA7CisKKwlpZiAodmFsdWUpCisJCSpyZXRfdmFsdWUgPSB2YWx1ZTsKKwllbHNlCisJCXJldHZhbCA9IFBST0ZfTk9fUkVMQVRJT047CisKK2NsZWFudXA6CisJcHJvZmlsZV9pdGVyYXRvcl9mcmVlKCZzdGF0ZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworZXJyY29kZV90Citwcm9maWxlX2dldF9zdHJpbmcocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCSAgIGNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIGNvbnN0IGNoYXIgKmRlZl92YWwsCisJCSAgIGNoYXIgKipyZXRfc3RyaW5nKQoreworCWNvbnN0IGNoYXIJKnZhbHVlOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlpZiAocHJvZmlsZSkgeworCQlyZXR2YWwgPSBwcm9maWxlX2dldF92YWx1ZShwcm9maWxlLCBuYW1lLCBzdWJuYW1lLAorCQkJCQkgICBzdWJzdWJuYW1lLCAmdmFsdWUpOworCQlpZiAocmV0dmFsID09IFBST0ZfTk9fU0VDVElPTiB8fCByZXR2YWwgPT0gUFJPRl9OT19SRUxBVElPTikKKwkJCXZhbHVlID0gZGVmX3ZhbDsKKwkJZWxzZSBpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwl9IGVsc2UKKwkJdmFsdWUgPSBkZWZfdmFsOworCisJaWYgKHZhbHVlKSB7CisJCSpyZXRfc3RyaW5nID0gbWFsbG9jKHN0cmxlbih2YWx1ZSkrMSk7CisJCWlmICgqcmV0X3N0cmluZyA9PSAwKQorCQkJcmV0dXJuIEVOT01FTTsKKwkJc3RyY3B5KCpyZXRfc3RyaW5nLCB2YWx1ZSk7CisJfSBlbHNlCisJCSpyZXRfc3RyaW5nID0gMDsKKwlyZXR1cm4gMDsKK30KKworZXJyY29kZV90Citwcm9maWxlX2dldF9pbnRlZ2VyKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkgICAgY29uc3QgY2hhciAqc3Vic3VibmFtZSwgaW50IGRlZl92YWwsIGludCAqcmV0X2ludCkKK3sKKwljb25zdCBjaGFyCSp2YWx1ZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCWNoYXIgICAgICAgICAgICAqZW5kX3ZhbHVlOworCWxvbmcJCXJldF9sb25nOworCisJKnJldF9pbnQgPSBkZWZfdmFsOworCWlmIChwcm9maWxlID09IDApCisJCXJldHVybiAwOworCisJcmV0dmFsID0gcHJvZmlsZV9nZXRfdmFsdWUocHJvZmlsZSwgbmFtZSwgc3VibmFtZSwgc3Vic3VibmFtZSwgJnZhbHVlKTsKKwlpZiAocmV0dmFsID09IFBST0ZfTk9fU0VDVElPTiB8fCByZXR2YWwgPT0gUFJPRl9OT19SRUxBVElPTikgeworCQkqcmV0X2ludCA9IGRlZl92YWw7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKHZhbHVlWzBdID09IDApCisJICAgIC8qIEVtcHR5IHN0cmluZyBpcyBubyBnb29kLiAgKi8KKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJZXJybm8gPSAwOworCXJldF9sb25nID0gc3RydG9sKHZhbHVlLCAmZW5kX3ZhbHVlLCAwKTsKKworCS8qIE92ZXJmbG93IG9yIHVuZGVyZmxvdy4gICovCisJaWYgKChyZXRfbG9uZyA9PSBMT05HX01JTiB8fCByZXRfbG9uZyA9PSBMT05HX01BWCkgJiYgZXJybm8gIT0gMCkKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJLyogVmFsdWUgb3V0c2lkZSAiaW50IiByYW5nZS4gICovCisJaWYgKChsb25nKSAoaW50KSByZXRfbG9uZyAhPSByZXRfbG9uZykKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJLyogR2FyYmFnZSBpbiBzdHJpbmcuICAqLworCWlmIChlbmRfdmFsdWUgIT0gdmFsdWUgKyBzdHJsZW4gKHZhbHVlKSkKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisKKworCSpyZXRfaW50ID0gcmV0X2xvbmc7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdAorcHJvZmlsZV9nZXRfdWludChwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJIGNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIHVuc2lnbmVkIGludCBkZWZfdmFsLAorCQkgdW5zaWduZWQgaW50ICpyZXRfaW50KQoreworCWNvbnN0IGNoYXIJKnZhbHVlOworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhciAgICAgICAgICAgICplbmRfdmFsdWU7CisJdW5zaWduZWQgbG9uZwlyZXRfbG9uZzsKKworCSpyZXRfaW50ID0gZGVmX3ZhbDsKKwlpZiAocHJvZmlsZSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IHByb2ZpbGVfZ2V0X3ZhbHVlKHByb2ZpbGUsIG5hbWUsIHN1Ym5hbWUsIHN1YnN1Ym5hbWUsICZ2YWx1ZSk7CisJaWYgKHJldHZhbCA9PSBQUk9GX05PX1NFQ1RJT04gfHwgcmV0dmFsID09IFBST0ZfTk9fUkVMQVRJT04pIHsKKwkJKnJldF9pbnQgPSBkZWZfdmFsOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmICh2YWx1ZVswXSA9PSAwKQorCSAgICAvKiBFbXB0eSBzdHJpbmcgaXMgbm8gZ29vZC4gICovCisJICAgIHJldHVybiBQUk9GX0JBRF9JTlRFR0VSOworCWVycm5vID0gMDsKKwlyZXRfbG9uZyA9IHN0cnRvdWwodmFsdWUsICZlbmRfdmFsdWUsIDApOworCisJLyogT3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgKi8KKwlpZiAoKHJldF9sb25nID09IFVMT05HX01BWCkgJiYgZXJybm8gIT0gMCkKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJLyogVmFsdWUgb3V0c2lkZSAiaW50IiByYW5nZS4gICovCisJaWYgKCh1bnNpZ25lZCBsb25nKSAodW5zaWduZWQgaW50KSByZXRfbG9uZyAhPSByZXRfbG9uZykKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJLyogR2FyYmFnZSBpbiBzdHJpbmcuICAqLworCWlmIChlbmRfdmFsdWUgIT0gdmFsdWUgKyBzdHJsZW4gKHZhbHVlKSkKKwkgICAgcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisKKwkqcmV0X2ludCA9IHJldF9sb25nOworCXJldHVybiAwOworfQorCitlcnJjb2RlX3QKK3Byb2ZpbGVfZ2V0X2RvdWJsZShwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJICAgY29uc3QgY2hhciAqc3Vic3VibmFtZSwgZG91YmxlIGRlZl92YWwsIGRvdWJsZSAqcmV0X2RvdWJsZSkKK3sKKwljb25zdCBjaGFyCSp2YWx1ZTsKKwllcnJjb2RlX3QJICByZXR2YWw7CisJY2hhciAgICAgICAgKmVuZF92YWx1ZTsKKwlkb3VibGUgICAgICBkb3VibGVfdmFsOworCisJKnJldF9kb3VibGUgPSBkZWZfdmFsOworCWlmIChwcm9maWxlID09IDApCisJCXJldHVybiAwOworCisJcmV0dmFsID0gcHJvZmlsZV9nZXRfdmFsdWUocHJvZmlsZSwgbmFtZSwgc3VibmFtZSwgc3Vic3VibmFtZSwgJnZhbHVlKTsKKwlpZiAocmV0dmFsID09IFBST0ZfTk9fU0VDVElPTiB8fCByZXR2YWwgPT0gUFJPRl9OT19SRUxBVElPTikgeworCQkqcmV0X2RvdWJsZSA9IGRlZl92YWw7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKHZhbHVlWzBdID09IDApCisJCS8qIEVtcHR5IHN0cmluZyBpcyBubyBnb29kLiAgKi8KKwkJcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJZXJybm8gPSAwOworCWRvdWJsZV92YWwgPSBzdHJ0b2QodmFsdWUsICZlbmRfdmFsdWUpOworCisJLyogT3ZlcmZsb3cgb3IgdW5kZXJmbG93LiAgKi8KKwlpZiAoZXJybm8gIT0gMCkKKwkJcmV0dXJuIFBST0ZfQkFEX0lOVEVHRVI7CisJLyogR2FyYmFnZSBpbiBzdHJpbmcuICAqLworCWlmIChlbmRfdmFsdWUgIT0gdmFsdWUgKyBzdHJsZW4odmFsdWUpKQorCQlyZXR1cm4gUFJPRl9CQURfSU5URUdFUjsKKworCSpyZXRfZG91YmxlID0gZG91YmxlX3ZhbDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGNvbmZfeWVzW10gPSB7CisgICAgInkiLCAieWVzIiwgInRydWUiLCAidCIsICIxIiwgIm9uIiwKKyAgICAwLAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGNvbmZfbm9bXSA9IHsKKyAgICAibiIsICJubyIsICJmYWxzZSIsICJuaWwiLCAiMCIsICJvZmYiLAorICAgIDAsCit9OworCitzdGF0aWMgZXJyY29kZV90Citwcm9maWxlX3BhcnNlX2Jvb2xlYW4oY29uc3QgY2hhciAqcywgaW50ICpyZXRfYm9vbGVhbikKK3sKKyAgICBjb25zdCBjaGFyICpjb25zdCAqcDsKKworICAgIGlmIChyZXRfYm9vbGVhbiA9PSBOVUxMKQorICAgIAlyZXR1cm4gUFJPRl9FSU5WQUw7CisKKyAgICBmb3IocD1jb25mX3llczsgKnA7IHArKykgeworCQlpZiAoIXN0cmNhc2VjbXAoKnAscykpIHsKKwkJCSpyZXRfYm9vbGVhbiA9IDE7CisJICAgIAlyZXR1cm4gMDsKKwkJfQorICAgIH0KKworICAgIGZvcihwPWNvbmZfbm87ICpwOyBwKyspIHsKKwkJaWYgKCFzdHJjYXNlY21wKCpwLHMpKSB7CisJCQkqcmV0X2Jvb2xlYW4gPSAwOworCQkJcmV0dXJuIDA7CisJCX0KKyAgICB9CisKKwlyZXR1cm4gUFJPRl9CQURfQk9PTEVBTjsKK30KKworZXJyY29kZV90Citwcm9maWxlX2dldF9ib29sZWFuKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkgICAgY29uc3QgY2hhciAqc3Vic3VibmFtZSwgaW50IGRlZl92YWwsIGludCAqcmV0X2Jvb2xlYW4pCit7CisJY29uc3QgY2hhcgkqdmFsdWU7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmIChwcm9maWxlID09IDApIHsKKwkJKnJldF9ib29sZWFuID0gZGVmX3ZhbDsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dmFsID0gcHJvZmlsZV9nZXRfdmFsdWUocHJvZmlsZSwgbmFtZSwgc3VibmFtZSwgc3Vic3VibmFtZSwgJnZhbHVlKTsKKwlpZiAocmV0dmFsID09IFBST0ZfTk9fU0VDVElPTiB8fCByZXR2YWwgPT0gUFJPRl9OT19SRUxBVElPTikgeworCQkqcmV0X2Jvb2xlYW4gPSBkZWZfdmFsOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHVybiBwcm9maWxlX3BhcnNlX2Jvb2xlYW4gKHZhbHVlLCByZXRfYm9vbGVhbik7Cit9CisKK2VycmNvZGVfdAorcHJvZmlsZV9pdGVyYXRvcih2b2lkICoqaXRlcl9wLCBjaGFyICoqcmV0X25hbWUsIGNoYXIgKipyZXRfdmFsdWUpCit7CisJY2hhciAqbmFtZSwgKnZhbHVlOworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlyZXR2YWwgPSBwcm9maWxlX25vZGVfaXRlcmF0b3IoaXRlcl9wLCAwLCAmbmFtZSwgJnZhbHVlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKHJldF9uYW1lKSB7CisJCWlmIChuYW1lKSB7CisJCQkqcmV0X25hbWUgPSBtYWxsb2Moc3RybGVuKG5hbWUpKzEpOworCQkJaWYgKCEqcmV0X25hbWUpCisJCQkJcmV0dXJuIEVOT01FTTsKKwkJCXN0cmNweSgqcmV0X25hbWUsIG5hbWUpOworCQl9IGVsc2UKKwkJCSpyZXRfbmFtZSA9IDA7CisJfQorCWlmIChyZXRfdmFsdWUpIHsKKwkJaWYgKHZhbHVlKSB7CisJCQkqcmV0X3ZhbHVlID0gbWFsbG9jKHN0cmxlbih2YWx1ZSkrMSk7CisJCQlpZiAoISpyZXRfdmFsdWUpIHsKKwkJCQlpZiAocmV0X25hbWUpIHsKKwkJCQkJZnJlZSgqcmV0X25hbWUpOworCQkJCQkqcmV0X25hbWUgPSAwOworCQkJCX0KKwkJCQlyZXR1cm4gRU5PTUVNOworCQkJfQorCQkJc3RyY3B5KCpyZXRfdmFsdWUsIHZhbHVlKTsKKwkJfSBlbHNlCisJCQkqcmV0X3ZhbHVlID0gMDsKKwl9CisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBERUJVR19QUk9HUkFNCisKKy8qCisgKiB0ZXN0X3Byb2ZpbGUuYyAtLS0gdGVzdGluZyBwcm9ncmFtIGZvciB0aGUgcHJvZmlsZSByb3V0aW5lCisgKi8KKworI2luY2x1ZGUgImFyZ3ZfcGFyc2UuaCIKKyNpbmNsdWRlICJwcm9maWxlX2hlbHBlcnMuaCIKKworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gInRlc3RfcHJvZmlsZSI7CisKKyNkZWZpbmUgUFJJTlRfVkFMVUUJMQorI2RlZmluZSBQUklOVF9WQUxVRVMJMgorCitzdGF0aWMgdm9pZCBkb19jbWQocHJvZmlsZV90IHByb2ZpbGUsIGNoYXIgKiphcmd2KQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJY29uc3QgY2hhcgkqKm5hbWVzLCAqdmFsdWU7CisJY2hhcgkJKip2YWx1ZXMsICoqY3BwOworCWNoYXIJKmNtZDsKKwlpbnQJCXByaW50X3N0YXR1czsKKworCWNtZCA9ICooYXJndik7CisJbmFtZXMgPSAoY29uc3QgY2hhciAqKikgYXJndiArIDE7CisJcHJpbnRfc3RhdHVzID0gMDsKKwlyZXR2YWwgPSAwOworCWlmIChjbWQgPT0gMCkKKwkJcmV0dXJuOworCWlmICghc3RyY21wKGNtZCwgInF1ZXJ5IikpIHsKKwkJcmV0dmFsID0gcHJvZmlsZV9nZXRfdmFsdWVzKHByb2ZpbGUsIG5hbWVzLCAmdmFsdWVzKTsKKwkJcHJpbnRfc3RhdHVzID0gUFJJTlRfVkFMVUVTOworCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJxdWVyeTEiKSkgeworCQljb25zdCBjaGFyICpuYW1lID0gMDsKKwkJY29uc3QgY2hhciAqc3VibmFtZSA9IDA7CisJCWNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUgPSAwOworCisJCW5hbWUgPSBuYW1lc1swXTsKKwkJaWYgKG5hbWUpCisJCQlzdWJuYW1lID0gbmFtZXNbMV07CisJCWlmIChzdWJuYW1lKQorCQkJc3Vic3VibmFtZSA9IG5hbWVzWzJdOworCQlpZiAoc3Vic3VibmFtZSAmJiBuYW1lc1szXSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJIk9ubHkgMyBsZXZlbHMgYXJlIGFsbG93ZWQgd2l0aCBxdWVyeTFcbiIpOworCQkJcmV0dmFsID0gRUlOVkFMOworCQl9IGVsc2UKKwkJCXJldHZhbCA9IHByb2ZpbGVfZ2V0X3ZhbHVlKHByb2ZpbGUsIG5hbWUsIHN1Ym5hbWUsCisJCQkJCQkgICBzdWJzdWJuYW1lLCAmdmFsdWUpOworCQlwcmludF9zdGF0dXMgPSBQUklOVF9WQUxVRTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAibGlzdF9zZWN0aW9ucyIpKSB7CisJCXJldHZhbCA9IHByb2ZpbGVfZ2V0X3N1YnNlY3Rpb25fbmFtZXMocHJvZmlsZSwgbmFtZXMsCisJCQkJCQkgICAgICAmdmFsdWVzKTsKKwkJcHJpbnRfc3RhdHVzID0gUFJJTlRfVkFMVUVTOworCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJsaXN0X3JlbGF0aW9ucyIpKSB7CisJCXJldHZhbCA9IHByb2ZpbGVfZ2V0X3JlbGF0aW9uX25hbWVzKHByb2ZpbGUsIG5hbWVzLAorCQkJCQkJICAgICZ2YWx1ZXMpOworCQlwcmludF9zdGF0dXMgPSBQUklOVF9WQUxVRVM7CisJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImR1bXAiKSkgeworCQlyZXR2YWwgPSBwcm9maWxlX3dyaXRlX3RyZWVfZmlsZQorCQkJKHByb2ZpbGUtPmZpcnN0X2ZpbGUtPnJvb3QsIHN0ZG91dCk7CisjaWYgMAorCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJjbGVhciIpKSB7CisJCXJldHZhbCA9IHByb2ZpbGVfY2xlYXJfcmVsYXRpb24ocHJvZmlsZSwgbmFtZXMpOworCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJ1cGRhdGUiKSkgeworCQlyZXR2YWwgPSBwcm9maWxlX3VwZGF0ZV9yZWxhdGlvbihwcm9maWxlLCBuYW1lcysyLAorCQkJCQkJICpuYW1lcywgKihuYW1lcysxKSk7CisjZW5kaWYKKwl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAidmVyaWZ5IikpIHsKKwkJcmV0dmFsID0gcHJvZmlsZV92ZXJpZnlfbm9kZQorCQkJKHByb2ZpbGUtPmZpcnN0X2ZpbGUtPnJvb3QpOworI2lmIDAKKwl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAicmVuYW1lX3NlY3Rpb24iKSkgeworCQlyZXR2YWwgPSBwcm9maWxlX3JlbmFtZV9zZWN0aW9uKHByb2ZpbGUsIG5hbWVzKzEsICpuYW1lcyk7CisJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImFkZCIpKSB7CisJCXZhbHVlID0gKm5hbWVzOworCQlpZiAoc3RyY21wKHZhbHVlLCAiTlVMTCIpID09IDApCisJCQl2YWx1ZSA9IE5VTEw7CisJCXJldHZhbCA9IHByb2ZpbGVfYWRkX3JlbGF0aW9uKHByb2ZpbGUsIG5hbWVzKzEsIHZhbHVlKTsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAiZmx1c2giKSkgeworCQlyZXR2YWwgPSBwcm9maWxlX2ZsdXNoKHByb2ZpbGUpOworI2VuZGlmCisJfSBlbHNlIHsKKwkJcHJpbnRmKCJJbnZhbGlkIGNvbW1hbmQuXG4iKTsKKwl9CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGNtZCwgcmV0dmFsLCAiIik7CisJCXByaW50X3N0YXR1cyA9IDA7CisJfQorCXN3aXRjaCAocHJpbnRfc3RhdHVzKSB7CisJY2FzZSBQUklOVF9WQUxVRToKKwkJcHJpbnRmKCIlc1xuIiwgdmFsdWUpOworCQlicmVhazsKKwljYXNlIFBSSU5UX1ZBTFVFUzoKKwkJZm9yIChjcHAgPSB2YWx1ZXM7ICpjcHA7IGNwcCsrKQorCQkJcHJpbnRmKCIlc1xuIiwgKmNwcCk7CisJCXByb2ZpbGVfZnJlZV9saXN0KHZhbHVlcyk7CisJCWJyZWFrOworCX0KK30KKworc3RhdGljIHZvaWQgZG9fYmF0Y2htb2RlKHByb2ZpbGVfdCBwcm9maWxlKQoreworCWludAkJYXJnYywgcmV0OworCWNoYXIJCSoqYXJndjsKKwljaGFyCQlidWZbMjU2XTsKKworCXdoaWxlICghZmVvZihzdGRpbikpIHsKKwkJaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCXByaW50ZigiPiVzIiwgYnVmKTsKKwkJcmV0ID0gYXJndl9wYXJzZShidWYsICZhcmdjLCAmYXJndik7CisJCWlmIChyZXQgIT0gMCkgeworCQkJcHJpbnRmKCJBcmd2X3BhcnNlIHJldHVybmVkICVkIVxuIiwgcmV0KTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWRvX2NtZChwcm9maWxlLCBhcmd2KTsKKwkJcHJpbnRmKCJcbiIpOworCQlhcmd2X2ZyZWUoYXJndik7CisJfQorCXByb2ZpbGVfcmVsZWFzZShwcm9maWxlKTsKKwlleGl0KDApOworCit9CisKK3ZvaWQgc3ludGF4X2Vycl9yZXBvcnQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGxvbmcgZXJyLCBpbnQgbGluZV9udW0pCit7CisJZnByaW50ZihzdGRlcnIsICJTeW50YXggZXJyb3IgaW4gJXMsIGxpbmUgbnVtYmVyICVkOiAlc1xuIiwKKwkJZmlsZW5hbWUsIGxpbmVfbnVtLCBlcnJvcl9tZXNzYWdlKGVycikpOworCWV4aXQoMSk7Cit9CisKK2NvbnN0IGNoYXIgKmRlZmF1bHRfc3RyID0gIltmb29dXG5cdGJhcj1xdXV4XG5cdHN1YiA9IHtcblx0XHR3aW4gPSB0cnVlXG59XG4iOworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgcHJvZmlsZV90CXByb2ZpbGU7CisgICAgbG9uZwlyZXR2YWw7CisgICAgY2hhcgkqY21kOworCisgICAgaWYgKGFyZ2MgPCAyKSB7CisJICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGZpbGVuYW1lIFtjbWQgYXJnc2V0XVxuIiwgcHJvZ3JhbV9uYW1lKTsKKwkgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBpbml0aWFsaXplX3Byb2ZfZXJyb3JfdGFibGUoKTsKKworICAgIHByb2ZpbGVfc2V0X3N5bnRheF9lcnJfY2Ioc3ludGF4X2Vycl9yZXBvcnQpOworCisgICAgcmV0dmFsID0gcHJvZmlsZV9pbml0X3BhdGgoYXJndlsxXSwgJnByb2ZpbGUpOworICAgIGlmIChyZXR2YWwpIHsKKwljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAid2hpbGUgaW5pdGlhbGl6aW5nIHByb2ZpbGUiKTsKKwlleGl0KDEpOworICAgIH0KKyAgICByZXR2YWwgPSBwcm9maWxlX3NldF9kZWZhdWx0KHByb2ZpbGUsIGRlZmF1bHRfc3RyKTsKKyAgICBpZiAocmV0dmFsKSB7CisJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIndoaWxlIHNldHRpbmcgZGVmYXVsdCIpOworCWV4aXQoMSk7CisgICAgfQorCisgICAgY21kID0gKihhcmd2KzIpOworICAgIGlmICghY21kIHx8ICFzdHJjbXAoY21kLCAiYmF0Y2giKSkKKwkgICAgZG9fYmF0Y2htb2RlKHByb2ZpbGUpOworICAgIGVsc2UKKwkgICAgZG9fY21kKHByb2ZpbGUsIGFyZ3YrMik7CisgICAgcHJvZmlsZV9yZWxlYXNlKHByb2ZpbGUpOworCisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVjODcwYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlLmgKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBwcm9maWxlLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICoKKyAqIENvcHlyaWdodCAoQykgMTk4NS0yMDA1IGJ5IHRoZSBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LgorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogRXhwb3J0IG9mIHRoaXMgc29mdHdhcmUgZnJvbSB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIG1heSByZXF1aXJlCisgKiBhIHNwZWNpZmljIGxpY2Vuc2UgZnJvbSB0aGUgVW5pdGVkIFN0YXRlcyBHb3Zlcm5tZW50LiAgSXQgaXMgdGhlCisgKiByZXNwb25zaWJpbGl0eSBvZiBhbnkgcGVyc29uIG9yIG9yZ2FuaXphdGlvbiBjb250ZW1wbGF0aW5nIGV4cG9ydCB0bworICogb2J0YWluIHN1Y2ggYSBsaWNlbnNlIGJlZm9yZSBleHBvcnRpbmcuCisgKgorICogV0lUSElOIFRIQVQgQ09OU1RSQUlOVCwgcGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kCisgKiBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQKKyAqIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQKKyAqIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQKKyAqIHRoZSBuYW1lIG9mIE0uSS5ULiBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZworICogdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCisgKiBwZXJtaXNzaW9uLiAgRnVydGhlcm1vcmUgaWYgeW91IG1vZGlmeSB0aGlzIHNvZnR3YXJlIHlvdSBtdXN0IGxhYmVsCisgKiB5b3VyIHNvZnR3YXJlIGFzIG1vZGlmaWVkIHNvZnR3YXJlIGFuZCBub3QgZGlzdHJpYnV0ZSBpdCBpbiBzdWNoIGEKKyAqIGZhc2hpb24gdGhhdCBpdCBtaWdodCBiZSBjb25mdXNlZCB3aXRoIHRoZSBvcmlnaW5hbCBNSVQgc29mdHdhcmUuCisgKiBNLkkuVC4gbWFrZXMgbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlCisgKiBmb3IgYW55IHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCisgKiB3YXJyYW50eS4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUgorICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRJQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAqLworCisjaWZuZGVmIF9QUk9GSUxFX0gKKyNkZWZpbmUgX1BST0ZJTEVfSAorCit0eXBlZGVmIHN0cnVjdCBfcHJvZmlsZV90ICpwcm9maWxlX3Q7CisKK3R5cGVkZWYgdm9pZCAoKnByb2ZpbGVfc3ludGF4X2Vycl9jYl90KShjb25zdCBjaGFyICpmaWxlLCBsb25nIGVyciwKKwkJCQkJaW50IGxpbmVfbnVtKTsKKworLyoKKyAqIFVzZWQgYnkgdGhlIHByb2ZpbGUgaXRlcmF0b3IgaW4gcHJvZl9nZXQuYworICovCisjZGVmaW5lIFBST0ZJTEVfSVRFUl9MSVNUX1NFQ1RJT04JMHgwMDAxCisjZGVmaW5lIFBST0ZJTEVfSVRFUl9TRUNUSU9OU19PTkxZCTB4MDAwMgorI2RlZmluZSBQUk9GSUxFX0lURVJfUkVMQVRJT05TX09OTFkJMHgwMDA0CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworbG9uZyBwcm9maWxlX2luaXQKKwkoY29uc3QgY2hhciAqIGNvbnN0ICpmaWxlcywgcHJvZmlsZV90ICpyZXRfcHJvZmlsZSk7CisKK3ZvaWQgcHJvZmlsZV9yZWxlYXNlCisJKHByb2ZpbGVfdCBwcm9maWxlKTsKKworbG9uZyBwcm9maWxlX3NldF9kZWZhdWx0CisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpkZWZfc3RyaW5nKTsKKworbG9uZyBwcm9maWxlX2dldF9zdHJpbmcKKwkocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQljb25zdCBjaGFyICpzdWJzdWJuYW1lLCBjb25zdCBjaGFyICpkZWZfdmFsLAorCQkJY2hhciAqKnJldF9zdHJpbmcpOworbG9uZyBwcm9maWxlX2dldF9pbnRlZ2VyCisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJY29uc3QgY2hhciAqc3Vic3VibmFtZSwgaW50IGRlZl92YWwsCisJCQlpbnQgKnJldF9kZWZhdWx0KTsKKworbG9uZyBwcm9maWxlX2dldF91aW50CisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQljb25zdCBjaGFyICpzdWJzdWJuYW1lLCB1bnNpZ25lZCBpbnQgZGVmX3ZhbCwKKwkJdW5zaWduZWQgaW50ICpyZXRfaW50KTsKKworbG9uZyBwcm9maWxlX2dldF9kb3VibGUKKwkocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCWNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIGRvdWJsZSBkZWZfdmFsLAorCQlkb3VibGUgKnJldF9mbG9hdCk7CisKK2xvbmcgcHJvZmlsZV9nZXRfYm9vbGVhbgorCShwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCWNvbnN0IGNoYXIgKnN1YnN1Ym5hbWUsIGludCBkZWZfdmFsLAorCQkJaW50ICpyZXRfZGVmYXVsdCk7CisKK2xvbmcgcHJvZmlsZV9pdGVyYXRvcl9jcmVhdGUKKwkocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKmNvbnN0ICpuYW1lcywKKwkJICAgaW50IGZsYWdzLCB2b2lkICoqcmV0X2l0ZXIpOworCit2b2lkIHByb2ZpbGVfaXRlcmF0b3JfZnJlZQorCSh2b2lkICoqaXRlcl9wKTsKKworbG9uZyBwcm9maWxlX2l0ZXJhdG9yCisJKHZvaWQJKippdGVyX3AsIGNoYXIgKipyZXRfbmFtZSwgY2hhciAqKnJldF92YWx1ZSk7CisKK3Byb2ZpbGVfc3ludGF4X2Vycl9jYl90IHByb2ZpbGVfc2V0X3N5bnRheF9lcnJfY2IocHJvZmlsZV9zeW50YXhfZXJyX2NiX3QgaG9vayk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCisKKyNlbmRpZiAvKiBfS1JCNV9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcHJvZmlsZV9oZWxwZXJzLmMgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcHJvZmlsZV9oZWxwZXJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2MjMyNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlX2hlbHBlcnMuYwpAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAqIHByb2ZpbGVfaGVscGVycy5jIC0tIEhlbHBlciBmdW5jdGlvbnMgZm9yIHRoZSBwcm9maWxlIGxpYnJhcnkKKyAqCisgKiBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSAiY29yZSIgcHJvZmlsZSBsaWJyYXJ5LCBhbmQgZG8KKyAqIG5vdCByZXF1aXJlIGFjY2VzcyB0byB0aGUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgb2YKKyAqIHRoZSBwcm9maWxlIGxpYnJhcnkuICBUaGV5IGFyZSBtYWlubHkgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvcgorICogcHJvZ3JhbXMgdGhhdCB3YW50IHRvIGRvIHNvbWV0aGluZyB1bnVzdWFsIHN1Y2ggYXMgb2J0YWluaW5nIHRoZQorICogbGlzdCBvZiBzZWN0aW9ucyBvciByZWxhdGlvbnMsIG9yIGFjY2Vzc2luZyBtdWx0aXBsZSB2YWx1ZXMgZnJvbSBhCisgKiByZWxhdGlvbiB0aGF0IGlzIGxpc3RlZCBtb3JlIHRoYW4gb25jZS4gIFRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYWxsCisgKiBiZSBkb25lIHVzaW5nIHRoZSBwcm9maWxlX2l0ZXJhdG9yIGFic3RyYWN0aW9uLCBidXQgaXQgaXMgbGVzcworICogY29udmVuaWVudC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorI2luY2x1ZGUgInByb2ZpbGUuaCIKKyNpbmNsdWRlICJwcm9maWxlX2hlbHBlcnMuaCIKKyNpbmNsdWRlICJwcm9mX2Vyci5oIgorCisvKgorICogVGhlc2UgZnVuY3Rpb25zIC0tLSBpbml0X2xpc3QoKSwgZW5kX2xpc3QoKSwgYW5kIGFkZF90b19saXN0KCkgYXJlCisgKiBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCB0byBidWlsZCB1cCBhIG51bGwtdGVybWluYXRlZCBjaGFyICoqIGxpc3QKKyAqIG9mIHN0cmluZ3MgdG8gYmUgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIGxpa2UgcHJvZmlsZV9nZXRfdmFsdWVzLgorICoKKyAqIFRoZSBwcm9maWxlX3N0cmluZ19saXN0IHN0cnVjdHVyZSBpcyB1c2VkIGZvciBpbnRlcm5hbCBib29raW5nCisgKiBwdXJwb3NlcyB0byBidWlsZCB1cCB0aGUgbGlzdCwgd2hpY2ggaXMgcmV0dXJuZWQgaW4gKnJldF9saXN0IGJ5CisgKiB0aGUgZW5kX2xpc3QoKSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgcHVibGljbHkgZXhwb3J0ZWQgaW50ZXJmYWNlIGZvciBmcmVlaW5nIGNoYXIqKiBsaXN0IGlzCisgKiBwcm9maWxlX2ZyZWVfbGlzdCgpLgorICovCisKK3N0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0IHsKKwljaGFyCSoqbGlzdDsKKwlpbnQJbnVtOworCWludAltYXg7Cit9OworCisvKgorICogSW5pdGlhbGl6ZSB0aGUgc3RyaW5nIGxpc3QgYWJzdHJhY3Rpb24uCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgaW5pdF9saXN0KHN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0ICpsaXN0KQoreworCWxpc3QtPm51bSA9IDA7CisJbGlzdC0+bWF4ID0gMTA7CisJbGlzdC0+bGlzdCA9IG1hbGxvYyhsaXN0LT5tYXggKiBzaXplb2YoY2hhciAqKSk7CisJaWYgKGxpc3QtPmxpc3QgPT0gMCkKKwkJcmV0dXJuIEVOT01FTTsKKwlsaXN0LT5saXN0WzBdID0gMDsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZyZWUgYW55IG1lbW9yeSBsZWZ0IG92ZXIgaW4gdGhlIHN0cmluZyBhYnN0cmFjdGlvbiwgcmV0dXJuaW5nIHRoZQorICogYnVpbHQgdXAgbGlzdCBpbiAqcmV0X2xpc3QgaWYgaXQgaXMgbm9uLW51bGwuCisgKi8KK3N0YXRpYyB2b2lkIGVuZF9saXN0KHN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0ICpsaXN0LCBjaGFyICoqKnJldF9saXN0KQoreworCWNoYXIJKipjcDsKKworCWlmIChsaXN0ID09IDApCisJCXJldHVybjsKKworCWlmIChyZXRfbGlzdCkgeworCQkqcmV0X2xpc3QgPSBsaXN0LT5saXN0OworCQlyZXR1cm47CisJfSBlbHNlIHsKKwkJZm9yIChjcCA9IGxpc3QtPmxpc3Q7ICpjcDsgY3ArKykKKwkJCWZyZWUoKmNwKTsKKwkJZnJlZShsaXN0LT5saXN0KTsKKwl9CisJbGlzdC0+bnVtID0gbGlzdC0+bWF4ID0gMDsKKwlsaXN0LT5saXN0ID0gMDsKK30KKworLyoKKyAqIEFkZCBhIHN0cmluZyB0byB0aGUgbGlzdC4KKyAqLworc3RhdGljIGVycmNvZGVfdCBhZGRfdG9fbGlzdChzdHJ1Y3QgcHJvZmlsZV9zdHJpbmdfbGlzdCAqbGlzdCwgY2hhciAqc3RyKQoreworCWNoYXIgCSoqbmV3bGlzdDsKKwlpbnQJbmV3bWF4OworCisJaWYgKGxpc3QtPm51bSsxID49IGxpc3QtPm1heCkgeworCQluZXdtYXggPSBsaXN0LT5tYXggKyAxMDsKKwkJbmV3bGlzdCA9IHJlYWxsb2MobGlzdC0+bGlzdCwgbmV3bWF4ICogc2l6ZW9mKGNoYXIgKikpOworCQlpZiAobmV3bGlzdCA9PSAwKQorCQkJcmV0dXJuIEVOT01FTTsKKwkJbGlzdC0+bWF4ID0gbmV3bWF4OworCQlsaXN0LT5saXN0ID0gbmV3bGlzdDsKKwl9CisKKwlsaXN0LT5saXN0W2xpc3QtPm51bSsrXSA9IHN0cjsKKwlsaXN0LT5saXN0W2xpc3QtPm51bV0gPSAwOworCXJldHVybiAwOworfQorCisvKgorICogUmV0dXJuIFRSVUUgaWYgdGhlIHN0cmluZyBpcyBhbHJlYWR5IGEgbWVtYmVyIG9mIHRoZSBsaXN0LgorICovCitzdGF0aWMgaW50IGlzX2xpc3RfbWVtYmVyKHN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0ICpsaXN0LCBjb25zdCBjaGFyICpzdHIpCit7CisJY2hhciAqKmNwcDsKKworCWlmICghbGlzdC0+bGlzdCkKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGNwcCA9IGxpc3QtPmxpc3Q7ICpjcHA7IGNwcCsrKSB7CisJCWlmICghc3RyY21wKCpjcHAsIHN0cikpCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIGZyZWVzIGEgbnVsbC10ZXJtaW5hdGVkIGxpc3QgYXMgcmV0dXJuZWQgYnkKKyAqIHByb2ZpbGVfZ2V0X3ZhbHVlcy4KKyAqLwordm9pZCBwcm9maWxlX2ZyZWVfbGlzdChjaGFyICoqbGlzdCkKK3sKKyAgICBjaGFyCSoqY3A7CisKKyAgICBpZiAobGlzdCA9PSAwKQorCSAgICByZXR1cm47CisKKyAgICBmb3IgKGNwID0gbGlzdDsgKmNwOyBjcCsrKQorCWZyZWUoKmNwKTsKKyAgICBmcmVlKGxpc3QpOworfQorCitlcnJjb2RlX3QKK3Byb2ZpbGVfZ2V0X3ZhbHVlcyhwcm9maWxlX3QgcHJvZmlsZSwgY29uc3QgY2hhciAqY29uc3QgKm5hbWVzLAorCQkgICBjaGFyICoqKnJldF92YWx1ZXMpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJdm9pZAkJCSpzdGF0ZTsKKwljaGFyCQkJKnZhbHVlOworCXN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0IHZhbHVlczsKKworCWlmICgocmV0dmFsID0gcHJvZmlsZV9pdGVyYXRvcl9jcmVhdGUocHJvZmlsZSwgbmFtZXMsCisJCQkJCSAgICAgIFBST0ZJTEVfSVRFUl9SRUxBVElPTlNfT05MWSwKKwkJCQkJICAgICAgJnN0YXRlKSkpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoKHJldHZhbCA9IGluaXRfbGlzdCgmdmFsdWVzKSkpCisJCWdvdG8gY2xlYW51cF9pdGVyYXRvcjsKKworCWRvIHsKKwkJaWYgKChyZXR2YWwgPSBwcm9maWxlX2l0ZXJhdG9yKCZzdGF0ZSwgMCwgJnZhbHVlKSkpCisJCQlnb3RvIGNsZWFudXA7CisJCWlmICh2YWx1ZSkKKwkJCWFkZF90b19saXN0KCZ2YWx1ZXMsIHZhbHVlKTsKKwl9IHdoaWxlIChzdGF0ZSk7CisKKwlpZiAodmFsdWVzLm51bSA9PSAwKSB7CisJCXJldHZhbCA9IFBST0ZfTk9fUkVMQVRJT047CisJCWdvdG8gY2xlYW51cDsKKwl9CisKKwllbmRfbGlzdCgmdmFsdWVzLCByZXRfdmFsdWVzKTsKKwlyZXR1cm4gMDsKKworY2xlYW51cDoKKwllbmRfbGlzdCgmdmFsdWVzLCAwKTsKK2NsZWFudXBfaXRlcmF0b3I6CisJcHJvZmlsZV9pdGVyYXRvcl9mcmVlKCZzdGF0ZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIHN1YmVjdGlvbnMgaW4gdGhlCisgKiB1bmRlciB0aGUgc3BlY2lmaWVkIHNlY3Rpb24gbmFtZS4KKyAqLworZXJyY29kZV90Citwcm9maWxlX2dldF9zdWJzZWN0aW9uX25hbWVzKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICoqbmFtZXMsCisJCQkgICAgIGNoYXIgKioqcmV0X25hbWVzKQoreworCWVycmNvZGVfdAkJcmV0dmFsOworCXZvaWQJCQkqc3RhdGU7CisJY2hhcgkJCSpuYW1lOworCXN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0IHZhbHVlczsKKworCWlmICgocmV0dmFsID0gcHJvZmlsZV9pdGVyYXRvcl9jcmVhdGUocHJvZmlsZSwgbmFtZXMsCisJCSAgIFBST0ZJTEVfSVRFUl9MSVNUX1NFQ1RJT04gfCBQUk9GSUxFX0lURVJfU0VDVElPTlNfT05MWSwKKwkJICAgJnN0YXRlKSkpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoKHJldHZhbCA9IGluaXRfbGlzdCgmdmFsdWVzKSkpCisJCWdvdG8gY2xlYW51cF9pdGVyYXRvcjsKKworCWRvIHsKKwkJaWYgKChyZXR2YWwgPSBwcm9maWxlX2l0ZXJhdG9yKCZzdGF0ZSwgJm5hbWUsIDApKSkKKwkJCWdvdG8gY2xlYW51cDsKKwkJaWYgKG5hbWUpCisJCQlhZGRfdG9fbGlzdCgmdmFsdWVzLCBuYW1lKTsKKwl9IHdoaWxlIChzdGF0ZSk7CisKKwllbmRfbGlzdCgmdmFsdWVzLCByZXRfbmFtZXMpOworCXJldHVybiAwOworCitjbGVhbnVwOgorCWVuZF9saXN0KCZ2YWx1ZXMsIDApOworY2xlYW51cF9pdGVyYXRvcjoKKwlwcm9maWxlX2l0ZXJhdG9yX2ZyZWUoJnN0YXRlKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgbGlzdCBvZiB0aGUgbmFtZXMgb2YgcmVsYXRpb25zIGluIHRoZQorICogdW5kZXIgdGhlIHNwZWNpZmllZCBzZWN0aW9uIG5hbWUuCisgKi8KK2VycmNvZGVfdAorcHJvZmlsZV9nZXRfcmVsYXRpb25fbmFtZXMocHJvZmlsZV90IHByb2ZpbGUsIGNvbnN0IGNoYXIgKipuYW1lcywKKwkJCSAgIGNoYXIgKioqcmV0X25hbWVzKQoreworCWVycmNvZGVfdAkJcmV0dmFsOworCXZvaWQJCQkqc3RhdGU7CisJY2hhcgkJCSpuYW1lOworCXN0cnVjdCBwcm9maWxlX3N0cmluZ19saXN0IHZhbHVlczsKKworCWlmICgocmV0dmFsID0gcHJvZmlsZV9pdGVyYXRvcl9jcmVhdGUocHJvZmlsZSwgbmFtZXMsCisJCSAgIFBST0ZJTEVfSVRFUl9MSVNUX1NFQ1RJT04gfCBQUk9GSUxFX0lURVJfUkVMQVRJT05TX09OTFksCisJCSAgICZzdGF0ZSkpKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKChyZXR2YWwgPSBpbml0X2xpc3QoJnZhbHVlcykpKQorCQlnb3RvIGNsZWFudXBfaXRlcmF0b3I7CisKKwlkbyB7CisJCWlmICgocmV0dmFsID0gcHJvZmlsZV9pdGVyYXRvcigmc3RhdGUsICZuYW1lLCAwKSkpCisJCQlnb3RvIGNsZWFudXA7CisJCWlmIChuYW1lKSB7CisJCQlpZiAoaXNfbGlzdF9tZW1iZXIoJnZhbHVlcywgbmFtZSkpCisJCQkJZnJlZShuYW1lKTsKKwkJCWVsc2UKKwkJCQlhZGRfdG9fbGlzdCgmdmFsdWVzLCBuYW1lKTsKKwkJfQorCX0gd2hpbGUgKHN0YXRlKTsKKworCWVuZF9saXN0KCZ2YWx1ZXMsIHJldF9uYW1lcyk7CisJcmV0dXJuIDA7CisKK2NsZWFudXA6CisJZW5kX2xpc3QoJnZhbHVlcywgMCk7CitjbGVhbnVwX2l0ZXJhdG9yOgorCXByb2ZpbGVfaXRlcmF0b3JfZnJlZSgmc3RhdGUpOworCXJldHVybiByZXR2YWw7Cit9CisKKwordm9pZAorcHJvZmlsZV9yZWxlYXNlX3N0cmluZyhjaGFyICpzdHIpCit7CisJZnJlZShzdHIpOworfQorCitlcnJjb2RlX3QKK3Byb2ZpbGVfaW5pdF9wYXRoKGNvbnN0IGNoYXIgKiBmaWxlcGF0aCwKKwkJICBwcm9maWxlX3QgKnJldF9wcm9maWxlKQoreworCWludCBuX2VudHJpZXMsIGk7CisJdW5zaWduZWQgaW50IGVudF9sZW47CisJY29uc3QgY2hhciAqcywgKnQ7CisJY2hhciAqKmZpbGVuYW1lczsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJLyogY291bnQgdGhlIGRpc3RpbmN0IGZpbGVuYW1lIGNvbXBvbmVudHMgKi8KKwlmb3IocyA9IGZpbGVwYXRoLCBuX2VudHJpZXMgPSAxOyAqczsgcysrKSB7CisJCWlmICgqcyA9PSAnOicpCisJCQluX2VudHJpZXMrKzsKKwl9CisKKwkvKiB0aGUgYXJyYXkgaXMgTlVMTCB0ZXJtaW5hdGVkICovCisJZmlsZW5hbWVzID0gKGNoYXIgKiopIG1hbGxvYygobl9lbnRyaWVzKzEpICogc2l6ZW9mKGNoYXIqKSk7CisJaWYgKGZpbGVuYW1lcyA9PSAwKQorCQlyZXR1cm4gRU5PTUVNOworCisJLyogbWVhc3VyZSwgY29weSwgYW5kIHNraXAgZWFjaCBvbmUgKi8KKwlmb3IocyA9IGZpbGVwYXRoLCBpPTA7ICh0ID0gc3RyY2hyKHMsICc6JykpIHx8ICh0PXMrc3RybGVuKHMpKTsgcz10KzEsIGkrKykgeworCQllbnRfbGVuID0gdC1zOworCQlmaWxlbmFtZXNbaV0gPSAoY2hhciopIG1hbGxvYyhlbnRfbGVuICsgMSk7CisJCWlmIChmaWxlbmFtZXNbaV0gPT0gMCkgeworCQkJLyogaWYgbWFsbG9jIGZhaWxzLCBmcmVlIHRoZSBvbmVzIHRoYXQgd29ya2VkICovCisJCQl3aGlsZSgtLWkgPj0gMCkgZnJlZShmaWxlbmFtZXNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgZnJlZShmaWxlbmFtZXMpOworCQkJcmV0dXJuIEVOT01FTTsKKwkJfQorCQlzdHJuY3B5KGZpbGVuYW1lc1tpXSwgcywgZW50X2xlbik7CisJCWZpbGVuYW1lc1tpXVtlbnRfbGVuXSA9IDA7CisJCWlmICgqdCA9PSAwKSB7CisJCQlpKys7CisJCQlicmVhazsKKwkJfQorCX0KKwkvKiBjYXAgdGhlIGFycmF5ICovCisJZmlsZW5hbWVzW2ldID0gMDsKKworCXJldHZhbCA9IHByb2ZpbGVfaW5pdCgoY29uc3QgY2hhciAqIGNvbnN0ICopIGZpbGVuYW1lcywKKwkJCSAgICAgIHJldF9wcm9maWxlKTsKKworCS8qIGNvdW50IGJhY2sgZG93biBhbmQgZnJlZSB0aGUgZW50cmllcyAqLworCXdoaWxlKC0taSA+PSAwKSBmcmVlKGZpbGVuYW1lc1tpXSk7CisJZnJlZShmaWxlbmFtZXMpOworCisJcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlX2hlbHBlcnMuaCBiL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9wcm9maWxlX2hlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjYzY2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3Byb2ZpbGVfaGVscGVycy5oCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBwcm9maWxlX2hlbHBlcnMuaCAtLSBGdW5jdGlvbiBwcm90b3R5cGVzIGZvciBwcm9maWxlIGhlbHBlciBmdW5jdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKK2xvbmcgcHJvZmlsZV9nZXRfdmFsdWVzCisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICpjb25zdCAqbmFtZXMsIGNoYXIgKioqcmV0X3ZhbHVlcyk7CisKK3ZvaWQgcHJvZmlsZV9mcmVlX2xpc3QKKwkoY2hhciAqKmxpc3QpOworCitsb25nIHByb2ZpbGVfZ2V0X3JlbGF0aW9uX25hbWVzCisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICoqbmFtZXMsIGNoYXIgKioqcmV0X25hbWVzKTsKKworbG9uZyBwcm9maWxlX2dldF9zdWJzZWN0aW9uX25hbWVzCisJKHByb2ZpbGVfdCBwcm9maWxlLCBjb25zdCBjaGFyICoqbmFtZXMsIGNoYXIgKioqcmV0X25hbWVzKTsKKwordm9pZCBwcm9maWxlX3JlbGVhc2Vfc3RyaW5nIChjaGFyICpzdHIpOworCitsb25nIHByb2ZpbGVfaW5pdF9wYXRoCisJKGNvbnN0IGNoYXIgKiBmaWxlbGlzdCwgcHJvZmlsZV90ICpyZXRfcHJvZmlsZSk7CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvc3VwcG9ydC9xdW90YWlvLmMgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyNTBlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpby5jCkBAIC0wLDAgKzEsNDQxIEBACisvKiogcXVvdGFpby5jCisgKgorICogR2VuZXJpYyBJTyBvcGVyYXRpb25zIG9uIHF1b3RhZmlsZXMKKyAqIEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+IC0gc3BvbnNvcmVkIGJ5IFN1U0UgQ1IKKyAqIEFkaXR5YSBLYWxpIDxhZGl0eWFrYWxpQGdvb2dsZS5jb20+IC0gUG9ydGVkIHRvIGUyZnNwcm9ncworICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgInF1b3RhaW8uaCIKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBleHRlbnNpb25zW01BWFFVT1RBU10gPSB7CisJW1VTUlFVT1RBXSA9ICJ1c2VyIiwKKwlbR1JQUVVPVEFdID0gImdyb3VwIiwKKwlbUFJKUVVPVEFdID0gInByb2plY3QiLAorfTsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYmFzZW5hbWVzW10gPSB7CisJIiIsCQkvKiB1bmRlZmluZWQgKi8KKwkicXVvdGEiLAkvKiBRRk1UX1ZGU19PTEQgKi8KKwkiYXF1b3RhIiwJLyogUUZNVF9WRlNfVjAgKi8KKwkiIiwJCS8qIFFGTVRfT0NGUzIgKi8KKwkiYXF1b3RhIgkvKiBRRk1UX1ZGU19WMSAqLworfTsKKworLyogSGVhZGVyIGluIGFsbCBuZXdlciBxdW90YWZpbGVzICovCitzdHJ1Y3QgZGlza19kcWhlYWRlciB7CisJX19sZTMyIGRxaF9tYWdpYzsKKwlfX2xlMzIgZHFoX3ZlcnNpb247Cit9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKKworLyoqCisgKiBDb252ZXJ0IHR5cGUgb2YgcXVvdGEgdG8gd3JpdHRlbiByZXByZXNlbnRhdGlvbgorICovCitjb25zdCBjaGFyICpxdW90YV90eXBlMm5hbWUoZW51bSBxdW90YV90eXBlIHF0eXBlKQoreworCWlmIChxdHlwZSA+PSBNQVhRVU9UQVMpCisJCXJldHVybiAidW5rbm93biI7CisJcmV0dXJuIGV4dGVuc2lvbnNbcXR5cGVdOworfQorCitleHQyX2lub190IHF1b3RhX3R5cGUyaW51bShlbnVtIHF1b3RhX3R5cGUgcXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IpCit7CisJc3dpdGNoIChxdHlwZSkgeworCWNhc2UgVVNSUVVPVEE6CisJCXJldHVybiBFWFQ0X1VTUl9RVU9UQV9JTk87CisJY2FzZSBHUlBRVU9UQToKKwkJcmV0dXJuIEVYVDRfR1JQX1FVT1RBX0lOTzsKKwljYXNlIFBSSlFVT1RBOgorCQlyZXR1cm4gc2ItPnNfcHJqX3F1b3RhX2ludW07CisJZGVmYXVsdDoKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAwOworfQorCisvKioKKyAqIENyZWF0ZXMgYSBxdW90YSBmaWxlIG5hbWUgZm9yIGdpdmVuIHR5cGUgYW5kIGZvcm1hdC4KKyAqLworY29uc3QgY2hhciAqcXVvdGFfZ2V0X3FmX25hbWUoZW51bSBxdW90YV90eXBlIHR5cGUsIGludCBmbXQsIGNoYXIgKmJ1ZikKK3sKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIE5VTEw7CisJc25wcmludGYoYnVmLCBRVU9UQV9OQU1FX0xFTiwgIiVzLiVzIiwKKwkJIGJhc2VuYW1lc1tmbXRdLCBleHRlbnNpb25zW3R5cGVdKTsKKworCXJldHVybiBidWY7Cit9CisKKy8qCisgKiBTZXQgZ3JhY2UgdGltZSBpZiBuZWVkZWQKKyAqLwordm9pZCB1cGRhdGVfZ3JhY2VfdGltZXMoc3RydWN0IGRxdW90ICpxKQoreworCXRpbWVfdCBub3c7CisKKwl0aW1lKCZub3cpOworCWlmIChxLT5kcV9kcWIuZHFiX2Jzb2Z0bGltaXQgJiYgdG9xYihxLT5kcV9kcWIuZHFiX2N1cnNwYWNlKSA+CisJCQlxLT5kcV9kcWIuZHFiX2Jzb2Z0bGltaXQpIHsKKwkJaWYgKCFxLT5kcV9kcWIuZHFiX2J0aW1lKQorCQkJcS0+ZHFfZHFiLmRxYl9idGltZSA9CisJCQkJbm93ICsgcS0+ZHFfaC0+cWhfaW5mby5kcWlfYmdyYWNlOworCX0gZWxzZSB7CisJCXEtPmRxX2RxYi5kcWJfYnRpbWUgPSAwOworCX0KKworCWlmIChxLT5kcV9kcWIuZHFiX2lzb2Z0bGltaXQgJiYgcS0+ZHFfZHFiLmRxYl9jdXJpbm9kZXMgPgorCQkJcS0+ZHFfZHFiLmRxYl9pc29mdGxpbWl0KSB7CisJCWlmICghcS0+ZHFfZHFiLmRxYl9pdGltZSkKKwkJCQlxLT5kcV9kcWIuZHFiX2l0aW1lID0KKwkJCQkJbm93ICsgcS0+ZHFfaC0+cWhfaW5mby5kcWlfaWdyYWNlOworCX0gZWxzZSB7CisJCXEtPmRxX2RxYi5kcWJfaXRpbWUgPSAwOworCX0KK30KKworc3RhdGljIGludCBjb21wdXRlX251bV9ibG9ja3NfcHJvYyhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICAgYmxrNjRfdCAqYmxvY2tuciBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICAgZTJfYmxrY250X3QgYmxvY2tjbnQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICAgdm9pZCAqcHJpdmF0ZSkKK3sKKwlibGs2NF90ICpudW1fYmxvY2tzID0gcHJpdmF0ZTsKKworCSpudW1fYmxvY2tzICs9IDE7CisJcmV0dXJuIDA7Cit9CisKK2VycmNvZGVfdCBxdW90YV9pbm9kZV90cnVuY2F0ZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8pCit7CisJc3RydWN0IGV4dDJfaW5vZGUgaW5vZGU7CisJZXJyY29kZV90IGVycjsKKwllbnVtIHF1b3RhX3R5cGUgcXR5cGU7CisKKwlpZiAoKGVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSkpKQorCQlyZXR1cm4gZXJyOworCisJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKQorCQlpZiAoaW5vID09IHF1b3RhX3R5cGUyaW51bShxdHlwZSwgZnMtPnN1cGVyKSkKKwkJCWJyZWFrOworCisJaWYgKHF0eXBlICE9IE1BWFFVT1RBUykgeworCQlpbm9kZS5pX2R0aW1lID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCQlpZiAoIWV4dDJmc19pbm9kZV9oYXNfdmFsaWRfYmxvY2tzMihmcywgJmlub2RlKSkKKwkJCXJldHVybiAwOworCQllcnIgPSBleHQyZnNfcHVuY2goZnMsIGlubywgJmlub2RlLCBOVUxMLCAwLCB+MFVMTCk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworCQltZW1zZXQoJmlub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwl9IGVsc2UgeworCQlpbm9kZS5pX2ZsYWdzICY9IH5FWFQyX0lNTVVUQUJMRV9GTDsKKwl9CisJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGV4dDJfb2ZmNjRfdCBjb21wdXRlX2lub2RlX3NpemUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKQoreworCWJsazY0X3QgbnVtX2Jsb2NrcyA9IDA7CisKKwlleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywKKwkJCSAgICAgIEJMT0NLX0ZMQUdfUkVBRF9PTkxZLAorCQkJICAgICAgTlVMTCwKKwkJCSAgICAgIGNvbXB1dGVfbnVtX2Jsb2Nrc19wcm9jLAorCQkJICAgICAgJm51bV9ibG9ja3MpOworCXJldHVybiBudW1fYmxvY2tzICogZnMtPmJsb2Nrc2l6ZTsKK30KKworLyogRnVuY3Rpb25zIHRvIHJlYWQvd3JpdGUgcXVvdGEgZmlsZS4gKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgcXVvdGFfd3JpdGVfbm9tb3VudChzdHJ1Y3QgcXVvdGFfZmlsZSAqcWYsCisJCQkJCWV4dDJfbG9mZl90IG9mZnNldCwKKwkJCQkJdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKwlleHQyX2ZpbGVfdAllMl9maWxlID0gcWYtPmUyX2ZpbGU7CisJdW5zaWduZWQgaW50CWJ5dGVzX3dyaXR0ZW4gPSAwOworCWVycmNvZGVfdAllcnI7CisKKwllcnIgPSBleHQyZnNfZmlsZV9sbHNlZWsoZTJfZmlsZSwgb2Zmc2V0LCBFWFQyX1NFRUtfU0VULCBOVUxMKTsKKwlpZiAoZXJyKSB7CisJCWxvZ19lcnIoImV4dDJmc19maWxlX2xsc2VlayBmYWlsZWQ6ICVsZCIsIGVycik7CisJCXJldHVybiAwOworCX0KKworCWVyciA9IGV4dDJmc19maWxlX3dyaXRlKGUyX2ZpbGUsIGJ1Ziwgc2l6ZSwgJmJ5dGVzX3dyaXR0ZW4pOworCWlmIChlcnIpIHsKKwkJbG9nX2VycigiZXh0MmZzX2ZpbGVfd3JpdGUgZmFpbGVkOiAlbGQiLCBlcnIpOworCQlyZXR1cm4gMDsKKwl9CisKKwkvKiBDb3JyZWN0IGlub2RlLmlfc2l6ZSBpcyBzZXQgaW4gZW5kX2lvLiAqLworCXJldHVybiBieXRlc193cml0dGVuOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHF1b3RhX3JlYWRfbm9tb3VudChzdHJ1Y3QgcXVvdGFfZmlsZSAqcWYsCisJCQkJICAgICAgIGV4dDJfbG9mZl90IG9mZnNldCwKKwkJCQkgICAgICAgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkKK3sKKwlleHQyX2ZpbGVfdAllMl9maWxlID0gcWYtPmUyX2ZpbGU7CisJdW5zaWduZWQgaW50CWJ5dGVzX3JlYWQgPSAwOworCWVycmNvZGVfdAllcnI7CisKKwllcnIgPSBleHQyZnNfZmlsZV9sbHNlZWsoZTJfZmlsZSwgb2Zmc2V0LCBFWFQyX1NFRUtfU0VULCBOVUxMKTsKKwlpZiAoZXJyKSB7CisJCWxvZ19lcnIoImV4dDJmc19maWxlX2xsc2VlayBmYWlsZWQ6ICVsZCIsIGVycik7CisJCXJldHVybiAwOworCX0KKworCWVyciA9IGV4dDJmc19maWxlX3JlYWQoZTJfZmlsZSwgYnVmLCBzaXplLCAmYnl0ZXNfcmVhZCk7CisJaWYgKGVycikgeworCQlsb2dfZXJyKCJleHQyZnNfZmlsZV9yZWFkIGZhaWxlZDogJWxkIiwgZXJyKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIGJ5dGVzX3JlYWQ7Cit9CisKKy8qCisgKiBEZXRlY3QgcXVvdGEgZm9ybWF0IGFuZCBpbml0aWFsaXplIHF1b3RhIElPCisgKi8KK2VycmNvZGVfdCBxdW90YV9maWxlX29wZW4ocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCSAgZXh0Ml9pbm9fdCBxZl9pbm8sIGVudW0gcXVvdGFfdHlwZSBxdHlwZSwKKwkJCSAgaW50IGZtdCwgaW50IGZsYWdzKQoreworCWV4dDJfZmlsc3lzIGZzID0gcWN0eC0+ZnM7CisJZXh0Ml9maWxlX3QgZTJfZmlsZTsKKwllcnJjb2RlX3QgZXJyOworCWludCBhbGxvY2F0ZWRfaGFuZGxlID0gMDsKKworCWlmIChxdHlwZSA+PSBNQVhRVU9UQVMpCisJCXJldHVybiBFSU5WQUw7CisKKwlpZiAoZm10ID09IC0xKQorCQlmbXQgPSBRRk1UX1ZGU19WMTsKKworCWVyciA9IGV4dDJmc19yZWFkX2JpdG1hcHMoZnMpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlpZiAocWZfaW5vID09IDApCisJCXFmX2lubyA9ICpxdW90YV9zYl9pbnVtcChmcy0+c3VwZXIsIHF0eXBlKQorCisJbG9nX2RlYnVnKCJPcGVuaW5nIHF1b3RhIGlubz0lbHUsIHR5cGU9JWQiLCBxZl9pbm8sIHF0eXBlKTsKKwllcnIgPSBleHQyZnNfZmlsZV9vcGVuKGZzLCBxZl9pbm8sIGZsYWdzLCAmZTJfZmlsZSk7CisJaWYgKGVycikgeworCQlsb2dfZXJyKCJleHQyZnNfZmlsZV9vcGVuIGZhaWxlZDogJXMiLCBlcnJvcl9tZXNzYWdlKGVycikpOworCQlyZXR1cm4gZXJyOworCX0KKworCWlmICghaCkgeworCQlpZiAocWN0eC0+cXVvdGFfZmlsZVtxdHlwZV0pIHsKKwkJCWggPSBxY3R4LT5xdW90YV9maWxlW3F0eXBlXTsKKwkJCWlmICgoKGZsYWdzICYgRVhUMl9GSUxFX1dSSVRFKSA9PSAwKSB8fAorCQkJICAgIChoLT5xaF9maWxlX2ZsYWdzICYgRVhUMl9GSUxFX1dSSVRFKSkKKwkJCQlyZXR1cm4gMDsKKwkJCSh2b2lkKSBxdW90YV9maWxlX2Nsb3NlKHFjdHgsIGgpOworCQl9CisJCWVyciA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgcXVvdGFfaGFuZGxlKSwgJmgpOworCQlpZiAoZXJyKSB7CisJCQlsb2dfZXJyKCJVbmFibGUgdG8gYWxsb2NhdGUgcXVvdGEgaGFuZGxlIik7CisJCQlyZXR1cm4gZXJyOworCQl9CisJCWFsbG9jYXRlZF9oYW5kbGUgPSAxOworCX0KKworCWgtPnFoX3FmLmUyX2ZpbGUgPSBlMl9maWxlOworCWgtPnFoX3FmLmZzID0gZnM7CisJaC0+cWhfcWYuaW5vID0gcWZfaW5vOworCWgtPmUyZnNfd3JpdGUgPSBxdW90YV93cml0ZV9ub21vdW50OworCWgtPmUyZnNfcmVhZCA9IHF1b3RhX3JlYWRfbm9tb3VudDsKKwloLT5xaF9maWxlX2ZsYWdzID0gZmxhZ3M7CisJaC0+cWhfaW9fZmxhZ3MgPSAwOworCWgtPnFoX3R5cGUgPSBxdHlwZTsKKwloLT5xaF9mbXQgPSBmbXQ7CisJbWVtc2V0KCZoLT5xaF9pbmZvLCAwLCBzaXplb2YoaC0+cWhfaW5mbykpOworCWgtPnFoX29wcyA9ICZxdW90YWZpbGVfb3BzXzI7CisKKwlpZiAoaC0+cWhfb3BzLT5jaGVja19maWxlICYmCisJICAgIChoLT5xaF9vcHMtPmNoZWNrX2ZpbGUoaCwgcXR5cGUsIGZtdCkgPT0gMCkpIHsKKwkJbG9nX2VycigicWhfb3BzLT5jaGVja19maWxlIGZhaWxlZCIpOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlpZiAoaC0+cWhfb3BzLT5pbml0X2lvICYmIChoLT5xaF9vcHMtPmluaXRfaW8oaCkgPCAwKSkgeworCQlsb2dfZXJyKCJxaF9vcHMtPmluaXRfaW8gZmFpbGVkIik7CisJCWdvdG8gZXJyb3V0OworCX0KKwlpZiAoYWxsb2NhdGVkX2hhbmRsZSkKKwkJcWN0eC0+cXVvdGFfZmlsZVtxdHlwZV0gPSBoOworCisJcmV0dXJuIDA7CitlcnJvdXQ6CisJZXh0MmZzX2ZpbGVfY2xvc2UoZTJfZmlsZSk7CisJaWYgKGFsbG9jYXRlZF9oYW5kbGUpCisJCWV4dDJmc19mcmVlX21lbSgmaCk7CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgZXJyY29kZV90IHF1b3RhX2lub2RlX2luaXRfbmV3KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwllcnJjb2RlX3QgZXJyID0gMDsKKworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKGVycikgeworCQlsb2dfZXJyKCJleDJmc19yZWFkX2lub2RlIGZhaWxlZCIpOworCQlyZXR1cm4gZXJyOworCX0KKworCWlmIChFWFQyX0lfU0laRSgmaW5vZGUpKSB7CisJCWVyciA9IHF1b3RhX2lub2RlX3RydW5jYXRlKGZzLCBpbm8pOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGUpKTsKKwlleHQyZnNfaWJsa19zZXQoZnMsICZpbm9kZSwgMCk7CisJaW5vZGUuaV9hdGltZSA9IGlub2RlLmlfbXRpbWUgPQorCQlpbm9kZS5pX2N0aW1lID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCWlub2RlLmlfbGlua3NfY291bnQgPSAxOworCWlub2RlLmlfbW9kZSA9IExJTlVYX1NfSUZSRUcgfCAwNjAwOworCWlub2RlLmlfZmxhZ3MgfD0gRVhUMl9JTU1VVEFCTEVfRkw7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikpCisJCWlub2RlLmlfZmxhZ3MgfD0gRVhUNF9FWFRFTlRTX0ZMOworCisJZXJyID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChlcnIpIHsKKwkJbG9nX2VycigiZXh0MmZzX3dyaXRlX25ld19pbm9kZSBmYWlsZWQ6ICVsZCIsIGVycik7CisJCXJldHVybiBlcnI7CisJfQorCXJldHVybiBlcnI7Cit9CisKKy8qCisgKiBDcmVhdGUgbmV3IHF1b3RhZmlsZSBvZiBzcGVjaWZpZWQgZm9ybWF0IG9uIGdpdmVuIGZpbGVzeXN0ZW0KKyAqLworZXJyY29kZV90IHF1b3RhX2ZpbGVfY3JlYXRlKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIGV4dDJfZmlsc3lzIGZzLAorCQkJICAgIGVudW0gcXVvdGFfdHlwZSBxdHlwZSwgaW50IGZtdCkKK3sKKwlleHQyX2ZpbGVfdCBlMl9maWxlOworCWVycmNvZGVfdCBlcnI7CisJZXh0Ml9pbm9fdCBxZl9pbnVtID0gMDsKKworCWlmIChmbXQgPT0gLTEpCisJCWZtdCA9IFFGTVRfVkZTX1YxOworCisJaC0+cWhfcWYuZnMgPSBmczsKKwlxZl9pbnVtID0gcXVvdGFfdHlwZTJpbnVtKHF0eXBlLCBmcy0+c3VwZXIpOworCWlmIChxZl9pbnVtID09IDAgJiYgcXR5cGUgPT0gUFJKUVVPVEEpIHsKKwkJZXJyID0gZXh0MmZzX25ld19pbm9kZShmcywgRVhUMl9ST09UX0lOTywgTElOVVhfU19JRlJFRyB8IDA2MDAsCisJCQkJICAgICAgIDAsICZxZl9pbnVtKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIHFmX2ludW0sICsxLCAwKTsKKwkJZXh0MmZzX21hcmtfaWJfZGlydHkoZnMpOworCX0gZWxzZSBpZiAocWZfaW51bSA9PSAwKSB7CisJCXJldHVybiBFWFQyX0VUX0JBRF9JTk9ERV9OVU07CisJfQorCisJZXJyID0gZXh0MmZzX3JlYWRfYml0bWFwcyhmcyk7CisJaWYgKGVycikKKwkJZ290byBvdXRfZXJyOworCisJZXJyID0gcXVvdGFfaW5vZGVfaW5pdF9uZXcoZnMsIHFmX2ludW0pOworCWlmIChlcnIpIHsKKwkJbG9nX2VycigiaW5pdF9uZXdfcXVvdGFfaW5vZGUgZmFpbGVkIik7CisJCWdvdG8gb3V0X2VycjsKKwl9CisJaC0+cWhfcWYuaW5vID0gcWZfaW51bTsKKwloLT5xaF9maWxlX2ZsYWdzID0gRVhUMl9GSUxFX1dSSVRFIHwgRVhUMl9GSUxFX0NSRUFURTsKKwloLT5lMmZzX3dyaXRlID0gcXVvdGFfd3JpdGVfbm9tb3VudDsKKwloLT5lMmZzX3JlYWQgPSBxdW90YV9yZWFkX25vbW91bnQ7CisKKwlsb2dfZGVidWcoIkNyZWF0aW5nIHF1b3RhIGlubz0lbHUsIHR5cGU9JWQiLCBxZl9pbnVtLCB0eXBlKTsKKwllcnIgPSBleHQyZnNfZmlsZV9vcGVuKGZzLCBxZl9pbnVtLCBoLT5xaF9maWxlX2ZsYWdzLCAmZTJfZmlsZSk7CisJaWYgKGVycikgeworCQlsb2dfZXJyKCJleHQyZnNfZmlsZV9vcGVuIGZhaWxlZDogJWxkIiwgZXJyKTsKKwkJZ290byBvdXRfZXJyOworCX0KKwloLT5xaF9xZi5lMl9maWxlID0gZTJfZmlsZTsKKworCWgtPnFoX2lvX2ZsYWdzID0gMDsKKwloLT5xaF90eXBlID0gcXR5cGU7CisJaC0+cWhfZm10ID0gZm10OworCW1lbXNldCgmaC0+cWhfaW5mbywgMCwgc2l6ZW9mKGgtPnFoX2luZm8pKTsKKwloLT5xaF9vcHMgPSAmcXVvdGFmaWxlX29wc18yOworCisJaWYgKGgtPnFoX29wcy0+bmV3X2lvICYmIChoLT5xaF9vcHMtPm5ld19pbyhoKSA8IDApKSB7CisJCWxvZ19lcnIoInFoX29wcy0+bmV3X2lvIGZhaWxlZCIpOworCQllcnIgPSBFSU87CisJCWdvdG8gb3V0X2VycjE7CisJfQorCisJcmV0dXJuIDA7CisKK291dF9lcnIxOgorCWV4dDJmc19maWxlX2Nsb3NlKGUyX2ZpbGUpOworb3V0X2VycjoKKworCWlmIChxZl9pbnVtKQorCQlxdW90YV9pbm9kZV90cnVuY2F0ZShmcywgcWZfaW51bSk7CisKKwlyZXR1cm4gZXJyOworfQorCisvKgorICogQ2xvc2UgcXVvdGFmaWxlIGFuZCByZWxlYXNlIGhhbmRsZQorICovCitlcnJjb2RlX3QgcXVvdGFfZmlsZV9jbG9zZShxdW90YV9jdHhfdCBxY3R4LCBzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKQoreworCWlmIChoLT5xaF9pb19mbGFncyAmIElPRkxfSU5GT0RJUlRZKSB7CisJCWlmIChoLT5xaF9vcHMtPndyaXRlX2luZm8gJiYgaC0+cWhfb3BzLT53cml0ZV9pbmZvKGgpIDwgMCkKKwkJCXJldHVybiAtMTsKKwkJaC0+cWhfaW9fZmxhZ3MgJj0gfklPRkxfSU5GT0RJUlRZOworCX0KKworCWlmIChoLT5xaF9vcHMtPmVuZF9pbyAmJiBoLT5xaF9vcHMtPmVuZF9pbyhoKSA8IDApCisJCXJldHVybiAtMTsKKwlpZiAoaC0+cWhfcWYuZTJfZmlsZSkgeworCQlfX3U2NCBuZXdfc2l6ZSwgc2l6ZTsKKworCQluZXdfc2l6ZSA9IGNvbXB1dGVfaW5vZGVfc2l6ZShoLT5xaF9xZi5mcywgaC0+cWhfcWYuaW5vKTsKKwkJZXh0MmZzX2ZpbGVfZmx1c2goaC0+cWhfcWYuZTJfZmlsZSk7CisJCWlmIChleHQyZnNfZmlsZV9nZXRfbHNpemUoaC0+cWhfcWYuZTJfZmlsZSwgJnNpemUpKQorCQkJbmV3X3NpemUgPSAwOworCQlpZiAoc2l6ZSAhPSBuZXdfc2l6ZSkKKwkJCWV4dDJmc19maWxlX3NldF9zaXplMihoLT5xaF9xZi5lMl9maWxlLCBuZXdfc2l6ZSk7CisJCWV4dDJmc19maWxlX2Nsb3NlKGgtPnFoX3FmLmUyX2ZpbGUpOworCX0KKwlpZiAocWN0eC0+cXVvdGFfZmlsZVtoLT5xaF90eXBlXSA9PSBoKQorCQlleHQyZnNfZnJlZV9tZW0oJnFjdHgtPnF1b3RhX2ZpbGVbaC0+cWhfdHlwZV0pOworCXJldHVybiAwOworfQorCisvKgorICogQ3JlYXRlIGVtcHR5IHF1b3RhIHN0cnVjdHVyZQorICovCitzdHJ1Y3QgZHF1b3QgKmdldF9lbXB0eV9kcXVvdCh2b2lkKQoreworCXN0cnVjdCBkcXVvdCAqZHF1b3Q7CisKKwlpZiAoZXh0MmZzX2dldF9tZW16ZXJvKHNpemVvZihzdHJ1Y3QgZHF1b3QpLCAmZHF1b3QpKSB7CisJCWxvZ19lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSBkcXVvdCIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlkcXVvdC0+ZHFfaWQgPSAtMTsKKwlyZXR1cm4gZHF1b3Q7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpby5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODZjMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW8uaApAQCAtMCwwICsxLDI2NSBAQAorLyoqIHF1b3RhaW8uaAorICoKKyAqIEludGVyZmFjZSB0byB0aGUgcXVvdGEgbGlicmFyeS4KKyAqCisgKiBUaGUgcXVvdGEgbGlicmFyeSBwcm92aWRlcyBpbnRlcmZhY2UgZm9yIGNyZWF0aW5nIGFuZCB1cGRhdGluZyB0aGUgcXVvdGEKKyAqIGZpbGVzIGFuZCB0aGUgZXh0NCBzdXBlcmJsb2NrIGZpZWxkcy4gSXQgc3VwcG9ydHMgdGhlIG5ldyBWRlNfVjEgcXVvdGEKKyAqIGZvcm1hdC4gVGhlIHF1b3RhIGxpYnJhcnkgYWxzbyBwcm92aWRlcyBzdXBwb3J0IGZvciBrZWVwaW5nIHRyYWNrIG9mIHF1b3RhcworICogaW4gbWVtb3J5LgorICogVGhlIHR5cGljYWwgd2F5IHRvIHVzZSB0aGUgcXVvdGEgbGlicmFyeSBpcyBhcyBmb2xsb3dzOgorICogeworICoJcXVvdGFfY3R4X3QgcWN0eDsKKyAqCisgKglxdW90YV9pbml0X2NvbnRleHQoJnFjdHgsIGZzLCBRVU9UQV9BTExfQklUKTsKKyAqCXsKKyAqCQlxdW90YV9jb21wdXRlX3VzYWdlKHFjdHgsIFFVT1RBX0FMTF9CSVQpOworICoJCUFORC9PUgorICoJCXF1b3RhX2RhdGFfYWRkL3F1b3RhX2RhdGFfc3ViL3F1b3RhX2RhdGFfaW5vZGVzKCk7CisgKgl9CisgKglxdW90YV93cml0ZV9pbm9kZShxY3R4LCBVU1JRVU9UQSk7CisgKglxdW90YV93cml0ZV9pbm9kZShxY3R4LCBHUlBRVU9UQSk7CisgKglxdW90YV9yZWxlYXNlX2NvbnRleHQoJnFjdHgpOworICogfQorICoKKyAqIFRoaXMgaW5pdGlhbCB2ZXJzaW9uIGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyB0aGUgcXVvdGEgZmlsZXMuIFRoaXMgc3VwcG9ydAorICogd2lsbCBiZSBhZGRlZCBpbiBuZWFyIGZ1dHVyZS4KKyAqCisgKiBBZGl0eWEgS2FsaSA8YWRpdHlha2FsaUBnb29nbGUuY29tPgorICogSGVhZGVyIG9mIElPIG9wZXJhdGlvbnMgZm9yIHF1b3RhIHV0aWxpdGllcworICoKKyAqIEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CisgKi8KKworI2lmbmRlZiBHVUFSRF9RVU9UQUlPX0gKKyNkZWZpbmUgR1VBUkRfUVVPVEFJT19ICisKKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiZHFibGtfdjIuaCIKKwordHlwZWRlZiBpbnQ2NF90IHFzaXplX3Q7CS8qIFR5cGUgaW4gd2hpY2ggd2Ugc3RvcmUgc2l6ZSBsaW1pdGF0aW9ucyAqLworCitlbnVtIHF1b3RhX3R5cGUgeworCVVTUlFVT1RBID0gMCwKKwlHUlBRVU9UQSA9IDEsCisJUFJKUVVPVEEgPSAyLAorCU1BWFFVT1RBUyA9IDMsCit9OworCisjaWYgTUFYUVVPVEFTID4gMzIKKyNlcnJvciAiY2Fubm90IGhhdmUgbW9yZSB0aGFuIDMyIHF1b3RhIHR5cGVzIHRvIGZpdCBpbiBxdHlwZV9iaXRzIgorI2VuZGlmCisKKyNkZWZpbmUgUVVPVEFfVVNSX0JJVCAoMSA8PCBVU1JRVU9UQSkKKyNkZWZpbmUgUVVPVEFfR1JQX0JJVCAoMSA8PCBHUlBRVU9UQSkKKyNkZWZpbmUgUVVPVEFfUFJKX0JJVCAoMSA8PCBQUkpRVU9UQSkKKyNkZWZpbmUgUVVPVEFfQUxMX0JJVCAoUVVPVEFfVVNSX0JJVCB8IFFVT1RBX0dSUF9CSVQgfCBRVU9UQV9QUkpfQklUKQorCit0eXBlZGVmIHN0cnVjdCBxdW90YV9jdHggKnF1b3RhX2N0eF90Oworc3RydWN0IGRpY3RfdDsKKworc3RydWN0IHF1b3RhX2N0eCB7CisJZXh0Ml9maWxzeXMJZnM7CisJc3RydWN0IGRpY3RfdAkqcXVvdGFfZGljdFtNQVhRVU9UQVNdOworCXN0cnVjdCBxdW90YV9oYW5kbGUgKnF1b3RhX2ZpbGVbTUFYUVVPVEFTXTsKK307CisKKy8qCisgKiBEZWZpbml0aW9ucyBvZiBtYWdpY3MgYW5kIHZlcnNpb25zIG9mIGN1cnJlbnQgcXVvdGEgZmlsZXMKKyAqLworI2RlZmluZSBJTklUUU1BR0lDUyB7XAorCTB4ZDljMDFmMTEsCS8qIFVTUlFVT1RBICovXAorCTB4ZDljMDE5MjcsCS8qIEdSUFFVT1RBICovXAorCTB4ZDljMDNmMTQJLyogUFJKUVVPVEEgKi9cCit9CisKKy8qIFNpemUgb2YgYmxvY2tzIGluIHdoaWNoIGFyZSBjb3VudGVkIHNpemUgbGltaXRzIGluIGdlbmVyaWMgdXRpbGl0eSBwYXJ0cyAqLworI2RlZmluZSBRVU9UQUJMT0NLX0JJVFMgMTAKKyNkZWZpbmUgUVVPVEFCTE9DS19TSVpFICgxIDw8IFFVT1RBQkxPQ0tfQklUUykKKyNkZWZpbmUgdG9xYih4KSAoKCh4KSArIFFVT1RBQkxPQ0tfU0laRSAtIDEpID4+IFFVT1RBQkxPQ0tfQklUUykKKworLyogUXVvdGEgZm9ybWF0IHR5cGUgSURzICovCisjZGVmaW5lCVFGTVRfVkZTX09MRCAxCisjZGVmaW5lCVFGTVRfVkZTX1YwIDIKKyNkZWZpbmUJUUZNVF9WRlNfVjEgNAorCisvKgorICogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgZGVmaW5lIHRoZSBkZWZhdWx0IGFtb3VudCBvZiB0aW1lIGdpdmVuIGEgdXNlcgorICogYmVmb3JlIHRoZSBzb2Z0IGxpbWl0cyBhcmUgdHJlYXRlZCBhcyBoYXJkIGxpbWl0cyAodXN1YWxseSByZXN1bHRpbmcKKyAqIGluIGFuIGFsbG9jYXRpb24gZmFpbHVyZSkuIFRoZSB0aW1lciBpcyBzdGFydGVkIHdoZW4gdGhlIHVzZXIgY3Jvc3NlcworICogdGhlaXIgc29mdCBsaW1pdCwgaXQgaXMgcmVzZXQgd2hlbiB0aGV5IGdvIGJlbG93IHRoZWlyIHNvZnQgbGltaXQuCisgKi8KKyNkZWZpbmUgTUFYX0lRX1RJTUUgIDYwNDgwMAkvKiAoNyoyNCo2MCo2MCkgMSB3ZWVrICovCisjZGVmaW5lIE1BWF9EUV9USU1FICA2MDQ4MDAJLyogKDcqMjQqNjAqNjApIDEgd2VlayAqLworCisjZGVmaW5lIElPRkxfSU5GT0RJUlRZCTB4MDEJLyogRGlkIGluZm8gY2hhbmdlPyAqLworCitzdHJ1Y3QgcXVvdGFmaWxlX29wczsKKworLyogR2VuZXJpYyBpbmZvcm1hdGlvbiBhYm91dCBxdW90YWZpbGUgKi8KK3N0cnVjdCB1dGlsX2RxaW5mbyB7CisJdGltZV90IGRxaV9iZ3JhY2U7CS8qIEJsb2NrIGdyYWNlIHRpbWUgZm9yIGdpdmVuIHF1b3RhZmlsZSAqLworCXRpbWVfdCBkcWlfaWdyYWNlOwkvKiBJbm9kZSBncmFjZSB0aW1lIGZvciBnaXZlbiBxdW90YWZpbGUgKi8KKwl1bmlvbiB7CisJCXN0cnVjdCB2Ml9tZW1fZHFpbmZvIHYyX21kcWk7CisJfSB1OwkJCS8qIEZvcm1hdCBzcGVjaWZpYyBpbmZvIGFib3V0IHF1b3RhZmlsZSAqLworfTsKKworc3RydWN0IHF1b3RhX2ZpbGUgeworCWV4dDJfZmlsc3lzIGZzOworCWV4dDJfaW5vX3QgaW5vOworCWV4dDJfZmlsZV90IGUyX2ZpbGU7Cit9OworCisvKiBTdHJ1Y3R1cmUgZm9yIG9uZSBvcGVuZWQgcXVvdGEgZmlsZSAqLworc3RydWN0IHF1b3RhX2hhbmRsZSB7CisJZW51bSBxdW90YV90eXBlIHFoX3R5cGU7CS8qIFR5cGUgb2YgcXVvdGFmaWxlICovCisJaW50IHFoX2ZtdDsJCS8qIFF1b3RhZmlsZSBmb3JtYXQgKi8KKwlpbnQgcWhfZmlsZV9mbGFnczsKKwlpbnQgcWhfaW9fZmxhZ3M7CS8qIElPIGZsYWdzIGZvciBmaWxlICovCisJc3RydWN0IHF1b3RhX2ZpbGUgcWhfcWY7CisJdW5zaWduZWQgaW50ICgqZTJmc19yZWFkKShzdHJ1Y3QgcXVvdGFfZmlsZSAqcWYsIGV4dDJfbG9mZl90IG9mZnNldCwKKwkJCSB2b2lkICpidWYsIHVuc2lnbmVkIGludCBzaXplKTsKKwl1bnNpZ25lZCBpbnQgKCplMmZzX3dyaXRlKShzdHJ1Y3QgcXVvdGFfZmlsZSAqcWYsIGV4dDJfbG9mZl90IG9mZnNldCwKKwkJCSAgdm9pZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSk7CisJc3RydWN0IHF1b3RhZmlsZV9vcHMgKnFoX29wczsJLyogT3BlcmF0aW9ucyBvbiBxdW90YWZpbGUgKi8KKwlzdHJ1Y3QgdXRpbF9kcWluZm8gcWhfaW5mbzsJLyogR2VuZXJpYyBxdW90YWZpbGUgaW5mbyAqLworfTsKKworLyogVXRpbGl0eSBxdW90YSBibG9jayAqLworc3RydWN0IHV0aWxfZHFibGsgeworCXFzaXplX3QgZHFiX2loYXJkbGltaXQ7CisJcXNpemVfdCBkcWJfaXNvZnRsaW1pdDsKKwlxc2l6ZV90IGRxYl9jdXJpbm9kZXM7CisJcXNpemVfdCBkcWJfYmhhcmRsaW1pdDsKKwlxc2l6ZV90IGRxYl9ic29mdGxpbWl0OworCXFzaXplX3QgZHFiX2N1cnNwYWNlOworCXRpbWVfdCBkcWJfYnRpbWU7CisJdGltZV90IGRxYl9pdGltZTsKKwl1bmlvbiB7CisJCXN0cnVjdCB2Ml9tZW1fZHFibGsgdjJfbWRxYjsKKwl9IHU7CQkJLyogRm9ybWF0IHNwZWNpZmljIGRxdW90IGluZm9ybWF0aW9uICovCit9OworCisvKiBTdHJ1Y3R1cmUgZm9yIG9uZSBsb2FkZWQgcXVvdGEgKi8KK3N0cnVjdCBkcXVvdCB7CisJc3RydWN0IGRxdW90ICpkcV9uZXh0OwkvKiBQb2ludGVyIHRvIG5leHQgZHF1b3QgaW4gdGhlIGxpc3QgKi8KKwlxaWRfdCBkcV9pZDsJCS8qIElEIGRxdW90IGJlbG9uZ3MgdG8gKi8KKwlpbnQgZHFfZmxhZ3M7CQkvKiBTb21lIGZsYWdzIGZvciB1dGlscyAqLworCXN0cnVjdCBxdW90YV9oYW5kbGUgKmRxX2g7CS8qIEhhbmRsZSBvZiBxdW90YWZpbGUgZm9yIHRoaXMgZHF1b3QgKi8KKwlzdHJ1Y3QgdXRpbF9kcWJsayBkcV9kcWI7CS8qIFBhcnNlZCBkYXRhIG9mIGRxdW90ICovCit9OworCisjZGVmaW5lIERRRl9TRUVOCTB4MDAwMQorCisvKiBTdHJ1Y3R1cmUgb2YgcXVvdGFmaWxlIG9wZXJhdGlvbnMgKi8KK3N0cnVjdCBxdW90YWZpbGVfb3BzIHsKKwkvKiBDaGVjayB3aGV0aGVyIHF1b3RhZmlsZSBpcyBpbiBvdXIgZm9ybWF0ICovCisJaW50ICgqY2hlY2tfZmlsZSkgKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIGludCB0eXBlLCBpbnQgZm10KTsKKwkvKiBPcGVuIHF1b3RhZmlsZSAqLworCWludCAoKmluaXRfaW8pIChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKTsKKwkvKiBDcmVhdGUgbmV3IHF1b3RhZmlsZSAqLworCWludCAoKm5ld19pbykgKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgpOworCS8qIFdyaXRlIGFsbCBjaGFuZ2VzIGFuZCBjbG9zZSBxdW90YWZpbGUgKi8KKwlpbnQgKCplbmRfaW8pIChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKTsKKwkvKiBXcml0ZSBpbmZvIGFib3V0IHF1b3RhZmlsZSAqLworCWludCAoKndyaXRlX2luZm8pIChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKTsKKwkvKiBSZWFkIGRxdW90IGludG8gbWVtb3J5ICovCisJc3RydWN0IGRxdW90ICooKnJlYWRfZHF1b3QpIChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBxaWRfdCBpZCk7CisJLyogV3JpdGUgZ2l2ZW4gZHF1b3QgdG8gZGlzayAqLworCWludCAoKmNvbW1pdF9kcXVvdCkgKHN0cnVjdCBkcXVvdCAqZHF1b3QpOworCS8qIFNjYW4gcXVvdGFmaWxlIGFuZCBjYWxsIGNhbGxiYWNrIG9uIGV2ZXJ5IHN0cnVjdHVyZSAqLworCWludCAoKnNjYW5fZHF1b3RzKSAoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCSAgICBpbnQgKCpwcm9jZXNzX2RxdW90KSAoc3RydWN0IGRxdW90ICpkcXVvdCwKKwkJCQkJCSAgdm9pZCAqZGF0YSksCisJCQkgICAgdm9pZCAqZGF0YSk7CisJLyogRnVuY3Rpb24gdG8gcHJpbnQgZm9ybWF0IHNwZWNpZmljIGZpbGUgaW5mb3JtYXRpb24gKi8KKwlpbnQgKCpyZXBvcnQpIChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBpbnQgdmVyYm9zZSk7Cit9OworCisvKiBUaGlzIG1pZ2h0IGdvIGludG8gYSBzcGVjaWFsIGhlYWRlciBmaWxlIGJ1dCB0aGF0IHNvdW5kcyBhIGJpdCBzaWxseS4uLiAqLworZXh0ZXJuIHN0cnVjdCBxdW90YWZpbGVfb3BzIHF1b3RhZmlsZV9vcHNfbWV0YTsKKworLyogT3BlbiBleGlzdGluZyBxdW90YWZpbGUgb2YgZ2l2ZW4gdHlwZSAoYW5kIHZlcmlmeSBpdHMgZm9ybWF0KSBvbiBnaXZlbgorICogZmlsZXN5c3RlbS4gKi8KK2VycmNvZGVfdCBxdW90YV9maWxlX29wZW4ocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCSAgZXh0Ml9pbm9fdCBxZl9pbm8sIGVudW0gcXVvdGFfdHlwZSB0eXBlLAorCQkJICBpbnQgZm10LCBpbnQgZmxhZ3MpOworCisKKy8qIENyZWF0ZSBuZXcgcXVvdGFmaWxlIG9mIHNwZWNpZmllZCBmb3JtYXQgb24gZ2l2ZW4gZmlsZXN5c3RlbSAqLworZXJyY29kZV90IHF1b3RhX2ZpbGVfY3JlYXRlKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIGV4dDJfZmlsc3lzIGZzLAorCQkJICAgIGVudW0gcXVvdGFfdHlwZSBxdHlwZSwgaW50IGZtdCk7CisKKy8qIENsb3NlIHF1b3RhZmlsZSAqLworZXJyY29kZV90IHF1b3RhX2ZpbGVfY2xvc2UocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IHF1b3RhX2hhbmRsZSAqaCk7CisKKy8qIEdldCBlbXB0eSBxdW90YSBzdHJ1Y3R1cmUgKi8KK3N0cnVjdCBkcXVvdCAqZ2V0X2VtcHR5X2RxdW90KHZvaWQpOworCitlcnJjb2RlX3QgcXVvdGFfaW5vZGVfdHJ1bmNhdGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vKTsKKworY29uc3QgY2hhciAqcXVvdGFfdHlwZTJuYW1lKGVudW0gcXVvdGFfdHlwZSBxdHlwZSk7CitleHQyX2lub190IHF1b3RhX3R5cGUyaW51bShlbnVtIHF1b3RhX3R5cGUgcXR5cGUsIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICopOworCit2b2lkIHVwZGF0ZV9ncmFjZV90aW1lcyhzdHJ1Y3QgZHF1b3QgKnEpOworCisvKiBzaXplIGZvciB0aGUgYnVmZmVyIHJldHVybmVkIGJ5IHF1b3RhX2dldF9xZl9uYW1lKCk7IG11c3QgYmUgZ3JlYXRlcgorICAgdGhhbiBtYXhsZW4gb2YgZXh0ZW5zaW9uc1tdIGFuZCBmbXRuYW1lc1tdIChwbHVzIDIpIGZvdW5kIGluIHF1b3RhaW8uYyAqLworI2RlZmluZSBRVU9UQV9OQU1FX0xFTiAxNgorCitjb25zdCBjaGFyICpxdW90YV9nZXRfcWZfbmFtZShlbnVtIHF1b3RhX3R5cGUsIGludCBmbXQsIGNoYXIgKmJ1Zik7CisKKy8qIEluIG1rcXVvdGEuYyAqLworZXJyY29kZV90IHF1b3RhX2luaXRfY29udGV4dChxdW90YV9jdHhfdCAqcWN0eCwgZXh0Ml9maWxzeXMgZnMsCisJCQkgICAgIHVuc2lnbmVkIGludCBxdHlwZV9iaXRzKTsKK3ZvaWQgcXVvdGFfZGF0YV9pbm9kZXMocXVvdGFfY3R4X3QgcWN0eCwgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlLAorCQkgICAgICAgZXh0Ml9pbm9fdCBpbm8sIGludCBhZGp1c3QpOwordm9pZCBxdW90YV9kYXRhX2FkZChxdW90YV9jdHhfdCBxY3R4LCBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUsCisJCSAgICBleHQyX2lub190IGlubywgcXNpemVfdCBzcGFjZSk7Cit2b2lkIHF1b3RhX2RhdGFfc3ViKHF1b3RhX2N0eF90IHFjdHgsIHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSwKKwkJICAgIGV4dDJfaW5vX3QgaW5vLCBxc2l6ZV90IHNwYWNlKTsKK2VycmNvZGVfdCBxdW90YV93cml0ZV9pbm9kZShxdW90YV9jdHhfdCBxY3R4LCBlbnVtIHF1b3RhX3R5cGUgcXR5cGUpOworZXJyY29kZV90IHF1b3RhX3VwZGF0ZV9saW1pdHMocXVvdGFfY3R4X3QgcWN0eCwgZXh0Ml9pbm9fdCBxZl9pbm8sCisJCQkgICAgICBlbnVtIHF1b3RhX3R5cGUgdHlwZSk7CitlcnJjb2RlX3QgcXVvdGFfY29tcHV0ZV91c2FnZShxdW90YV9jdHhfdCBxY3R4KTsKK3ZvaWQgcXVvdGFfcmVsZWFzZV9jb250ZXh0KHF1b3RhX2N0eF90ICpxY3R4KTsKK2VycmNvZGVfdCBxdW90YV9yZW1vdmVfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSk7CitpbnQgcXVvdGFfZmlsZV9leGlzdHMoZXh0Ml9maWxzeXMgZnMsIGVudW0gcXVvdGFfdHlwZSBxdHlwZSk7Cit2b2lkIHF1b3RhX3NldF9zYl9pbnVtKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywgZW51bSBxdW90YV90eXBlIHF0eXBlKTsKK2VycmNvZGVfdCBxdW90YV9jb21wYXJlX2FuZF91cGRhdGUocXVvdGFfY3R4X3QgcWN0eCwgZW51bSBxdW90YV90eXBlIHF0eXBlLAorCQkJCSAgIGludCAqdXNhZ2VfaW5jb25zaXN0ZW50KTsKK2ludCBwYXJzZV9xdW90YV9vcHRzKGNvbnN0IGNoYXIgKm9wdHMsIGludCAoKmZ1bmMpKGNoYXIgKikpOworCisvKiBwYXJzZV9xdHlwZS5jICovCitpbnQgcGFyc2VfcXVvdGFfdHlwZXMoY29uc3QgY2hhciAqaW5fc3RyLCB1bnNpZ25lZCBpbnQgKnF0eXBlX2JpdHMsCisJCSAgICAgIGNoYXIgKiplcnJfdG9rZW4pOworCisvKgorICogUmV0dXJuIHBvaW50ZXIgdG8gcmVzZXJ2ZWQgaW5vZGUgZmllbGQgaW4gc3VwZXJibG9jayBmb3IgZ2l2ZW4gcXVvdGEgdHlwZS4KKyAqCisgKiBUaGlzIGFsbG93cyB0aGUgY2FsbGVyIHRvIGdldCBvciBzZXQgdGhlIHF1b3RhIGlub2RlIGJ5IHR5cGUgd2l0aG91dCB0aGUKKyAqIG5lZWQgZm9yIHRoZSBxdW90YSBhcnJheSB0byBiZSBjb250aWd1b3VzIGluIHRoZSBzdXBlcmJvY2suCisgKi8KK3N0YXRpYyBpbmxpbmUgZXh0Ml9pbm9fdCAqcXVvdGFfc2JfaW51bXAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiLAorCQkJCQkgZW51bSBxdW90YV90eXBlIHF0eXBlKQoreworCXN3aXRjaCAocXR5cGUpIHsKKwljYXNlIFVTUlFVT1RBOgorCQlyZXR1cm4gJnNiLT5zX3Vzcl9xdW90YV9pbnVtOworCWNhc2UgR1JQUVVPVEE6CisJCXJldHVybiAmc2ItPnNfZ3JwX3F1b3RhX2ludW07CisJY2FzZSBQUkpRVU9UQToKKwkJcmV0dXJuICZzYi0+c19wcmpfcXVvdGFfaW51bTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworI2VuZGlmIC8qIEdVQVJEX1FVT1RBSU9fSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5jIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YzIwMjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmMKQEAgLTAsMCArMSw2NjQgQEAKKy8qCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBuZXcgcXVvdGFmaWxlIGZvcm1hdAorICoKKyAqIEphbiBLYXJhIDxqYWNrQHN1c2UuY3o+IC0gc3BvbnNvcmVkIGJ5IFN1U0UgQ1IKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiY29tbW9uLmgiCisjaW5jbHVkZSAicXVvdGFpb190cmVlLmgiCisjaW5jbHVkZSAicXVvdGFpby5oIgorCit0eXBlZGVmIGNoYXIgKmRxYnVmX3Q7CisKKyNkZWZpbmUgZnJlZWRxYnVmKGJ1ZikJCWV4dDJmc19mcmVlX21lbSgmYnVmKQorCitzdGF0aWMgaW5saW5lIGRxYnVmX3QgZ2V0ZHFidWYodm9pZCkKK3sKKwlkcWJ1Zl90IGJ1ZjsKKwlpZiAoZXh0MmZzX2dldF9tZW16ZXJvKFFUX0JMS1NJWkUsICZidWYpKSB7CisJCWxvZ19lcnIoIkZhaWxlZCB0byBhbGxvY2F0ZSBkcWJ1ZiIpOworCQlyZXR1cm4gTlVMTDsKKwl9CisKKwlyZXR1cm4gYnVmOworfQorCisvKiBJcyBnaXZlbiBkcXVvdCBlbXB0eT8gKi8KK2ludCBxdHJlZV9lbnRyeV91bnVzZWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIGNoYXIgKmRpc2spCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaW5mby0+ZHFpX2VudHJ5X3NpemU7IGkrKykKKwkJaWYgKGRpc2tbaV0pCisJCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKworaW50IHF0cmVlX2Rxc3RyX2luX2JsayhzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gKFFUX0JMS1NJWkUgLSBzaXplb2Yoc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlcikpIC8KKwkJaW5mby0+ZHFpX2VudHJ5X3NpemU7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X2luZGV4KHFpZF90IGlkLCBpbnQgZGVwdGgpCit7CisJcmV0dXJuIChpZCA+PiAoKFFUX1RSRUVERVBUSCAtIGRlcHRoIC0gMSkgKiA4KSkgJiAweGZmOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbWFya19xdW90YWZpbGVfaW5mb19kaXJ0eShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKQoreworCWgtPnFoX2lvX2ZsYWdzIHw9IElPRkxfSU5GT0RJUlRZOworfQorCisvKiBSZWFkIGdpdmVuIGJsb2NrICovCitzdGF0aWMgdm9pZCByZWFkX2JsayhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCB1bnNpZ25lZCBpbnQgYmxrLCBkcWJ1Zl90IGJ1ZikKK3sKKwlpbnQgZXJyOworCisJZXJyID0gaC0+ZTJmc19yZWFkKCZoLT5xaF9xZiwgYmxrIDw8IFFUX0JMS1NJWkVfQklUUywgYnVmLAorCQkJUVRfQkxLU0laRSk7CisJaWYgKGVyciA8IDApCisJCWxvZ19lcnIoIkNhbm5vdCByZWFkIGJsb2NrICV1OiAlcyIsIGJsaywgc3RyZXJyb3IoZXJybm8pKTsKKwllbHNlIGlmIChlcnIgIT0gUVRfQkxLU0laRSkKKwkJbWVtc2V0KGJ1ZiArIGVyciwgMCwgUVRfQkxLU0laRSAtIGVycik7Cit9CisKKy8qIFdyaXRlIGJsb2NrICovCitzdGF0aWMgaW50IHdyaXRlX2JsayhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCB1bnNpZ25lZCBpbnQgYmxrLCBkcWJ1Zl90IGJ1ZikKK3sKKwlpbnQgZXJyOworCisJZXJyID0gaC0+ZTJmc193cml0ZSgmaC0+cWhfcWYsIGJsayA8PCBRVF9CTEtTSVpFX0JJVFMsIGJ1ZiwKKwkJCVFUX0JMS1NJWkUpOworCWlmIChlcnIgPCAwICYmIGVycm5vICE9IEVOT1NQQykKKwkJbG9nX2VycigiQ2Fubm90IHdyaXRlIGJsb2NrICgldSk6ICVzIiwgYmxrLCBzdHJlcnJvcihlcnJubykpOworCWlmIChlcnIgIT0gUVRfQkxLU0laRSkKKwkJcmV0dXJuIC1FTk9TUEM7CisJcmV0dXJuIDA7Cit9CisKKy8qIEdldCBmcmVlIGJsb2NrIGluIGZpbGUgKGVpdGhlciBmcm9tIGZyZWUgbGlzdCBvciBjcmVhdGUgbmV3IG9uZSkgKi8KK3N0YXRpYyBpbnQgZ2V0X2ZyZWVfZHFibGsoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCkKK3sKKwlkcWJ1Zl90IGJ1ZiA9IGdldGRxYnVmKCk7CisJc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlciAqZGggPSAoc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlciAqKWJ1ZjsKKwlzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbyA9ICZoLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWU7CisJaW50IGJsazsKKworCWlmICghYnVmKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChpbmZvLT5kcWlfZnJlZV9ibGspIHsKKwkJYmxrID0gaW5mby0+ZHFpX2ZyZWVfYmxrOworCQlyZWFkX2JsayhoLCBibGssIGJ1Zik7CisJCWluZm8tPmRxaV9mcmVlX2JsayA9IGV4dDJmc19sZTMyX3RvX2NwdShkaC0+ZHFkaF9uZXh0X2ZyZWUpOworCX0gZWxzZSB7CisJCW1lbXNldChidWYsIDAsIFFUX0JMS1NJWkUpOworCQkvKiBBc3N1cmUgYmxvY2sgYWxsb2NhdGlvbi4uLiAqLworCQlpZiAod3JpdGVfYmxrKGgsIGluZm8tPmRxaV9ibG9ja3MsIGJ1ZikgPCAwKSB7CisJCQlmcmVlZHFidWYoYnVmKTsKKwkJCWxvZ19lcnIoIkNhbm5vdCBhbGxvY2F0ZSBuZXcgcXVvdGEgYmxvY2sgIgorCQkJCSIob3V0IG9mIGRpc2sgc3BhY2UpLiIpOworCQkJcmV0dXJuIC1FTk9TUEM7CisJCX0KKwkJYmxrID0gaW5mby0+ZHFpX2Jsb2NrcysrOworCX0KKwltYXJrX3F1b3RhZmlsZV9pbmZvX2RpcnR5KGgpOworCWZyZWVkcWJ1ZihidWYpOworCXJldHVybiBibGs7Cit9CisKKy8qIFB1dCBnaXZlbiBibG9jayB0byBmcmVlIGxpc3QgKi8KK3N0YXRpYyB2b2lkIHB1dF9mcmVlX2RxYmxrKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIGRxYnVmX3QgYnVmLAorCQkJICAgdW5zaWduZWQgaW50IGJsaykKK3sKKwlzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICpkaCA9IChzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICopYnVmOworCXN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvID0gJmgtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZTsKKworCWRoLT5kcWRoX25leHRfZnJlZSA9IGV4dDJmc19jcHVfdG9fbGUzMihpbmZvLT5kcWlfZnJlZV9ibGspOworCWRoLT5kcWRoX3ByZXZfZnJlZSA9IGV4dDJmc19jcHVfdG9fbGUzMigwKTsKKwlkaC0+ZHFkaF9lbnRyaWVzID0gZXh0MmZzX2NwdV90b19sZTE2KDApOworCWluZm8tPmRxaV9mcmVlX2JsayA9IGJsazsKKwltYXJrX3F1b3RhZmlsZV9pbmZvX2RpcnR5KGgpOworCXdyaXRlX2JsayhoLCBibGssIGJ1Zik7Cit9CisKKy8qIFJlbW92ZSBnaXZlbiBibG9jayBmcm9tIHRoZSBsaXN0IG9mIGJsb2NrcyB3aXRoIGZyZWUgZW50cmllcyAqLworc3RhdGljIHZvaWQgcmVtb3ZlX2ZyZWVfZHFlbnRyeShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBkcWJ1Zl90IGJ1ZiwKKwkJCQl1bnNpZ25lZCBpbnQgYmxrKQoreworCWRxYnVmX3QgdG1wYnVmID0gZ2V0ZHFidWYoKTsKKwlzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICpkaCA9IChzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICopYnVmOworCXVuc2lnbmVkIGludCBuZXh0YmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KGRoLT5kcWRoX25leHRfZnJlZSksIHByZXZibGsgPQorCisJCWV4dDJmc19sZTMyX3RvX2NwdShkaC0+ZHFkaF9wcmV2X2ZyZWUpOworCisJaWYgKCF0bXBidWYpCisJCXJldHVybjsKKworCWlmIChuZXh0YmxrKSB7CisJCXJlYWRfYmxrKGgsIG5leHRibGssIHRtcGJ1Zik7CisJCSgoc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlciAqKXRtcGJ1ZiktPmRxZGhfcHJldl9mcmVlID0KKwkJCQlkaC0+ZHFkaF9wcmV2X2ZyZWU7CisJCXdyaXRlX2JsayhoLCBuZXh0YmxrLCB0bXBidWYpOworCX0KKwlpZiAocHJldmJsaykgeworCQlyZWFkX2JsayhoLCBwcmV2YmxrLCB0bXBidWYpOworCQkoKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKil0bXBidWYpLT5kcWRoX25leHRfZnJlZSA9CisJCQkJZGgtPmRxZGhfbmV4dF9mcmVlOworCQl3cml0ZV9ibGsoaCwgcHJldmJsaywgdG1wYnVmKTsKKwl9IGVsc2UgeworCQloLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2ZyZWVfZW50cnkgPSBuZXh0YmxrOworCQltYXJrX3F1b3RhZmlsZV9pbmZvX2RpcnR5KGgpOworCX0KKwlmcmVlZHFidWYodG1wYnVmKTsKKwlkaC0+ZHFkaF9uZXh0X2ZyZWUgPSBkaC0+ZHFkaF9wcmV2X2ZyZWUgPSBleHQyZnNfY3B1X3RvX2xlMzIoMCk7CisJd3JpdGVfYmxrKGgsIGJsaywgYnVmKTsJLyogTm8gbWF0dGVyIHdoZXRoZXIgd3JpdGUgc3VjY2VlZHMKKwkJCQkgKiBibG9jayBpcyBvdXQgb2YgbGlzdCAqLworfQorCisvKiBJbnNlcnQgZ2l2ZW4gYmxvY2sgdG8gdGhlIGJlZ2lubmluZyBvZiBsaXN0IHdpdGggZnJlZSBlbnRyaWVzICovCitzdGF0aWMgdm9pZCBpbnNlcnRfZnJlZV9kcWVudHJ5KHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIGRxYnVmX3QgYnVmLAorCQkJCXVuc2lnbmVkIGludCBibGspCit7CisJZHFidWZfdCB0bXBidWYgPSBnZXRkcWJ1ZigpOworCXN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKmRoID0gKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKilidWY7CisJc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8gPSAmaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlOworCisJaWYgKCF0bXBidWYpCisJCXJldHVybjsKKworCWRoLT5kcWRoX25leHRfZnJlZSA9IGV4dDJmc19jcHVfdG9fbGUzMihpbmZvLT5kcWlfZnJlZV9lbnRyeSk7CisJZGgtPmRxZGhfcHJldl9mcmVlID0gZXh0MmZzX2NwdV90b19sZTMyKDApOworCXdyaXRlX2JsayhoLCBibGssIGJ1Zik7CisJaWYgKGluZm8tPmRxaV9mcmVlX2VudHJ5KSB7CisJCXJlYWRfYmxrKGgsIGluZm8tPmRxaV9mcmVlX2VudHJ5LCB0bXBidWYpOworCQkoKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKil0bXBidWYpLT5kcWRoX3ByZXZfZnJlZSA9CisJCQkJZXh0MmZzX2NwdV90b19sZTMyKGJsayk7CisJCXdyaXRlX2JsayhoLCBpbmZvLT5kcWlfZnJlZV9lbnRyeSwgdG1wYnVmKTsKKwl9CisJZnJlZWRxYnVmKHRtcGJ1Zik7CisJaW5mby0+ZHFpX2ZyZWVfZW50cnkgPSBibGs7CisJbWFya19xdW90YWZpbGVfaW5mb19kaXJ0eShoKTsKK30KKworLyogRmluZCBzcGFjZSBmb3IgZHF1b3QgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgZmluZF9mcmVlX2RxZW50cnkoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCQkgICAgICBzdHJ1Y3QgZHF1b3QgKmRxdW90LCBpbnQgKmVycikKK3sKKwlpbnQgYmxrLCBpOworCXN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKmRoOworCXN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvID0gJmgtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZTsKKwljaGFyICpkZHF1b3Q7CisJZHFidWZfdCBidWY7CisKKwkqZXJyID0gMDsKKwlidWYgPSBnZXRkcWJ1ZigpOworCWlmICghYnVmKSB7CisJCSplcnIgPSAtRU5PTUVNOworCQlyZXR1cm4gMDsKKwl9CisKKwlkaCA9IChzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICopYnVmOworCWlmIChpbmZvLT5kcWlfZnJlZV9lbnRyeSkgeworCQlibGsgPSBpbmZvLT5kcWlfZnJlZV9lbnRyeTsKKwkJcmVhZF9ibGsoaCwgYmxrLCBidWYpOworCX0gZWxzZSB7CisJCWJsayA9IGdldF9mcmVlX2RxYmxrKGgpOworCQlpZiAoYmxrIDwgMCkgeworCQkJZnJlZWRxYnVmKGJ1Zik7CisJCQkqZXJyID0gYmxrOworCQkJcmV0dXJuIDA7CisJCX0KKwkJbWVtc2V0KGJ1ZiwgMCwgUVRfQkxLU0laRSk7CisJCWluZm8tPmRxaV9mcmVlX2VudHJ5ID0gYmxrOworCQltYXJrX3F1b3RhZmlsZV9pbmZvX2RpcnR5KGgpOworCX0KKworCS8qIEJsb2NrIHdpbGwgYmUgZnVsbD8gKi8KKwlpZiAoZXh0MmZzX2xlMTZfdG9fY3B1KGRoLT5kcWRoX2VudHJpZXMpICsgMSA+PQorCSAgICBxdHJlZV9kcXN0cl9pbl9ibGsoaW5mbykpCisJCXJlbW92ZV9mcmVlX2RxZW50cnkoaCwgYnVmLCBibGspOworCisJZGgtPmRxZGhfZW50cmllcyA9CisJCWV4dDJmc19jcHVfdG9fbGUxNihleHQyZnNfbGUxNl90b19jcHUoZGgtPmRxZGhfZW50cmllcykgKyAxKTsKKwkvKiBGaW5kIGZyZWUgc3RydWN0dXJlIGluIGJsb2NrICovCisJZGRxdW90ID0gYnVmICsgc2l6ZW9mKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIpOworCWZvciAoaSA9IDA7CisJICAgICBpIDwgcXRyZWVfZHFzdHJfaW5fYmxrKGluZm8pICYmICFxdHJlZV9lbnRyeV91bnVzZWQoaW5mbywgZGRxdW90KTsKKwkgICAgIGkrKykKKwkJZGRxdW90ICs9IGluZm8tPmRxaV9lbnRyeV9zaXplOworCisJaWYgKGkgPT0gcXRyZWVfZHFzdHJfaW5fYmxrKGluZm8pKQorCQlsb2dfZXJyKCJmaW5kX2ZyZWVfZHFlbnRyeSgpOiBEYXRhIGJsb2NrIGZ1bGwgdW5leHBlY3RlZGx5LiIpOworCisJd3JpdGVfYmxrKGgsIGJsaywgYnVmKTsKKwlkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmID0KKwkJKGJsayA8PCBRVF9CTEtTSVpFX0JJVFMpICsgc2l6ZW9mKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIpICsKKwkJaSAqIGluZm8tPmRxaV9lbnRyeV9zaXplOworCWZyZWVkcWJ1ZihidWYpOworCXJldHVybiBibGs7Cit9CisKKy8qIEluc2VydCByZWZlcmVuY2UgdG8gc3RydWN0dXJlIGludG8gdGhlIHRyaWUgKi8KK3N0YXRpYyBpbnQgZG9faW5zZXJ0X3RyZWUoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwgc3RydWN0IGRxdW90ICpkcXVvdCwKKwkJCSAgdW5zaWduZWQgaW50ICogdHJlZWJsaywgaW50IGRlcHRoKQoreworCWRxYnVmX3QgYnVmOworCWludCBuZXdzb24gPSAwLCBuZXdhY3QgPSAwOworCV9fbGUzMiAqcmVmOworCXVuc2lnbmVkIGludCBuZXdibGs7CisJaW50IHJldCA9IDA7CisKKwlsb2dfZGVidWcoImluc2VydGluZyBpbiB0cmVlOiB0cmVlYmxrPSV1LCBkZXB0aD0lZCIsICp0cmVlYmxrLCBkZXB0aCk7CisJYnVmID0gZ2V0ZHFidWYoKTsKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoISp0cmVlYmxrKSB7CisJCXJldCA9IGdldF9mcmVlX2RxYmxrKGgpOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gb3V0X2J1ZjsKKwkJKnRyZWVibGsgPSByZXQ7CisJCW1lbXNldChidWYsIDAsIFFUX0JMS1NJWkUpOworCQluZXdhY3QgPSAxOworCX0gZWxzZSB7CisJCXJlYWRfYmxrKGgsICp0cmVlYmxrLCBidWYpOworCX0KKworCXJlZiA9IChfX2xlMzIgKikgYnVmOworCW5ld2JsayA9IGV4dDJmc19sZTMyX3RvX2NwdShyZWZbZ2V0X2luZGV4KGRxdW90LT5kcV9pZCwgZGVwdGgpXSk7CisJaWYgKCFuZXdibGspCisJCW5ld3NvbiA9IDE7CisJaWYgKGRlcHRoID09IFFUX1RSRUVERVBUSCAtIDEpIHsKKwkJaWYgKG5ld2JsaykKKwkJCWxvZ19lcnIoIkluc2VydGluZyBhbHJlYWR5IHByZXNlbnQgcXVvdGEgZW50cnkgIgorCQkJCSIoYmxvY2sgJXUpLiIsCisJCQkJcmVmW2dldF9pbmRleChkcXVvdC0+ZHFfaWQsIGRlcHRoKV0pOworCQluZXdibGsgPSBmaW5kX2ZyZWVfZHFlbnRyeShoLCBkcXVvdCwgJnJldCk7CisJfSBlbHNlIHsKKwkJcmV0ID0gZG9faW5zZXJ0X3RyZWUoaCwgZHF1b3QsICZuZXdibGssIGRlcHRoICsgMSk7CisJfQorCisJaWYgKG5ld3NvbiAmJiByZXQgPj0gMCkgeworCQlyZWZbZ2V0X2luZGV4KGRxdW90LT5kcV9pZCwgZGVwdGgpXSA9CisJCQlleHQyZnNfY3B1X3RvX2xlMzIobmV3YmxrKTsKKwkJd3JpdGVfYmxrKGgsICp0cmVlYmxrLCBidWYpOworCX0gZWxzZSBpZiAobmV3YWN0ICYmIHJldCA8IDApIHsKKwkJcHV0X2ZyZWVfZHFibGsoaCwgYnVmLCAqdHJlZWJsayk7CisJfQorCitvdXRfYnVmOgorCWZyZWVkcWJ1ZihidWYpOworCXJldHVybiByZXQ7Cit9CisKKy8qIFdyYXBwZXIgZm9yIGluc2VydGluZyBxdW90YSBzdHJ1Y3R1cmUgaW50byB0cmVlICovCitzdGF0aWMgdm9pZCBkcV9pbnNlcnRfdHJlZShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBzdHJ1Y3QgZHF1b3QgKmRxdW90KQoreworCXVuc2lnbmVkIGludCB0bXAgPSBRVF9UUkVFT0ZGOworCisJaWYgKGRvX2luc2VydF90cmVlKGgsIGRxdW90LCAmdG1wLCAwKSA8IDApCisJCWxvZ19lcnIoIkNhbm5vdCB3cml0ZSBxdW90YSAoaWQgJXUpOiAlcyIsCisJCQkodW5zaWduZWQgaW50KSBkcXVvdC0+ZHFfaWQsIHN0cmVycm9yKGVycm5vKSk7Cit9CisKKy8qIFdyaXRlIGRxdW90IHRvIGZpbGUgKi8KK3ZvaWQgcXRyZWVfd3JpdGVfZHF1b3Qoc3RydWN0IGRxdW90ICpkcXVvdCkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXVuc2lnbmVkIGludCByZXQ7CisJY2hhciAqZGRxdW90OworCXN0cnVjdCBxdW90YV9oYW5kbGUgKmggPSBkcXVvdC0+ZHFfaDsKKwlzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbyA9CisJCQkmZHF1b3QtPmRxX2gtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZTsKKwlsb2dfZGVidWcoIndyaXRpbmcgZGRxdW90IDE6IG9mZj0lbGx1LCBpbmZvLT5kcWlfZW50cnlfc2l6ZT0ldSIsCisJCQlkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmLAorCQkJaW5mby0+ZHFpX2VudHJ5X3NpemUpOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGluZm8tPmRxaV9lbnRyeV9zaXplLCAmZGRxdW90KTsKKwlpZiAocmV0dmFsKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlsb2dfZXJyKCJRdW90YSB3cml0ZSBmYWlsZWQgKGlkICV1KTogJXMiLAorCQkJKHVuc2lnbmVkIGludClkcXVvdC0+ZHFfaWQsIHN0cmVycm9yKGVycm5vKSk7CisJCXJldHVybjsKKwl9CisJbWVtc2V0KGRkcXVvdCwgMCwgaW5mby0+ZHFpX2VudHJ5X3NpemUpOworCisJaWYgKCFkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmKQorCQlkcV9pbnNlcnRfdHJlZShkcXVvdC0+ZHFfaCwgZHF1b3QpOworCWluZm8tPmRxaV9vcHMtPm1lbTJkaXNrX2RxYmxrKGRkcXVvdCwgZHF1b3QpOworCWxvZ19kZWJ1Zygid3JpdGluZyBkZHF1b3QgMjogb2ZmPSVsbHUsIGluZm8tPmRxaV9lbnRyeV9zaXplPSV1IiwKKwkJCWRxdW90LT5kcV9kcWIudS52Ml9tZHFiLmRxYl9vZmYsCisJCQlpbmZvLT5kcWlfZW50cnlfc2l6ZSk7CisJcmV0ID0gaC0+ZTJmc193cml0ZSgmaC0+cWhfcWYsIGRxdW90LT5kcV9kcWIudS52Ml9tZHFiLmRxYl9vZmYsIGRkcXVvdCwKKwkJCWluZm8tPmRxaV9lbnRyeV9zaXplKTsKKworCWlmIChyZXQgIT0gaW5mby0+ZHFpX2VudHJ5X3NpemUpIHsKKwkJaWYgKHJldCA+IDApCisJCQllcnJubyA9IEVOT1NQQzsKKwkJbG9nX2VycigiUXVvdGEgd3JpdGUgZmFpbGVkIChpZCAldSk6ICVzIiwKKwkJCSh1bnNpZ25lZCBpbnQpZHF1b3QtPmRxX2lkLCBzdHJlcnJvcihlcnJubykpOworCX0KKwlleHQyZnNfZnJlZV9tZW0oJmRkcXVvdCk7Cit9CisKKy8qIEZyZWUgZHF1b3QgZW50cnkgaW4gZGF0YSBibG9jayAqLworc3RhdGljIHZvaWQgZnJlZV9kcWVudHJ5KHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIHN0cnVjdCBkcXVvdCAqZHF1b3QsCisJCQkgdW5zaWduZWQgaW50IGJsaykKK3sKKwlzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyICpkaDsKKwlzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbyA9ICZoLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWU7CisJZHFidWZfdCBidWYgPSBnZXRkcWJ1ZigpOworCisJaWYgKCFidWYpCisJCXJldHVybjsKKworCWlmIChkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmID4+IFFUX0JMS1NJWkVfQklUUyAhPSBibGspCisJCWxvZ19lcnIoIlF1b3RhIHN0cnVjdHVyZSBoYXMgb2Zmc2V0IHRvIG90aGVyIGJsb2NrICgldSkgIgorCQkJInRoYW4gaXQgc2hvdWxkICgldSkuIiwgYmxrLAorCQkJICAodW5zaWduZWQgaW50KSAoZHF1b3QtPmRxX2RxYi51LnYyX21kcWIuZHFiX29mZiA+PgorCQkJCSAgUVRfQkxLU0laRV9CSVRTKSk7CisKKwlyZWFkX2JsayhoLCBibGssIGJ1Zik7CisJZGggPSAoc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlciAqKWJ1ZjsKKwlkaC0+ZHFkaF9lbnRyaWVzID0KKwkJZXh0MmZzX2NwdV90b19sZTE2KGV4dDJmc19sZTE2X3RvX2NwdShkaC0+ZHFkaF9lbnRyaWVzKSAtIDEpOworCisJaWYgKCFleHQyZnNfbGUxNl90b19jcHUoZGgtPmRxZGhfZW50cmllcykpIHsJLyogQmxvY2sgZ290IGZyZWU/ICovCisJCXJlbW92ZV9mcmVlX2RxZW50cnkoaCwgYnVmLCBibGspOworCQlwdXRfZnJlZV9kcWJsayhoLCBidWYsIGJsayk7CisJfSBlbHNlIHsKKwkJbWVtc2V0KGJ1ZiArIChkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmICYKKwkJCSAgICAgICgoMSA8PCBRVF9CTEtTSVpFX0JJVFMpIC0gMSkpLAorCQkgICAgICAgMCwgaW5mby0+ZHFpX2VudHJ5X3NpemUpOworCisJCS8qIEZpcnN0IGZyZWUgZW50cnk/ICovCisJCWlmIChleHQyZnNfbGUxNl90b19jcHUoZGgtPmRxZGhfZW50cmllcykgPT0KKwkJCQlxdHJlZV9kcXN0cl9pbl9ibGsoaW5mbykgLSAxKQorCQkJLyogVGhpcyB3aWxsIGFsc28gd3JpdGUgZGF0YSBibG9jayAqLworCQkJaW5zZXJ0X2ZyZWVfZHFlbnRyeShoLCBidWYsIGJsayk7CisJCWVsc2UKKwkJCXdyaXRlX2JsayhoLCBibGssIGJ1Zik7CisJfQorCWRxdW90LT5kcV9kcWIudS52Ml9tZHFiLmRxYl9vZmYgPSAwOworCWZyZWVkcWJ1ZihidWYpOworfQorCisvKiBSZW1vdmUgcmVmZXJlbmNlIHRvIGRxdW90IGZyb20gdHJlZSAqLworc3RhdGljIHZvaWQgcmVtb3ZlX3RyZWUoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwgc3RydWN0IGRxdW90ICpkcXVvdCwKKwkJCXVuc2lnbmVkIGludCAqIGJsaywgaW50IGRlcHRoKQoreworCWRxYnVmX3QgYnVmID0gZ2V0ZHFidWYoKTsKKwl1bnNpZ25lZCBpbnQgbmV3YmxrOworCV9fbGUzMiAqcmVmID0gKF9fbGUzMiAqKSBidWY7CisKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuOworCisJcmVhZF9ibGsoaCwgKmJsaywgYnVmKTsKKwluZXdibGsgPSBleHQyZnNfbGUzMl90b19jcHUocmVmW2dldF9pbmRleChkcXVvdC0+ZHFfaWQsIGRlcHRoKV0pOworCWlmIChkZXB0aCA9PSBRVF9UUkVFREVQVEggLSAxKSB7CisJCWZyZWVfZHFlbnRyeShoLCBkcXVvdCwgbmV3YmxrKTsKKwkJbmV3YmxrID0gMDsKKwl9IGVsc2UgeworCQlyZW1vdmVfdHJlZShoLCBkcXVvdCwgJm5ld2JsaywgZGVwdGggKyAxKTsKKwl9CisKKwlpZiAoIW5ld2JsaykgeworCQlpbnQgaTsKKworCQlyZWZbZ2V0X2luZGV4KGRxdW90LT5kcV9pZCwgZGVwdGgpXSA9IGV4dDJmc19jcHVfdG9fbGUzMigwKTsKKworCQkvKiBCbG9jayBnb3QgZW1wdHk/ICovCisJCWZvciAoaSA9IDA7IGkgPCBRVF9CTEtTSVpFICYmICFidWZbaV07IGkrKyk7CisKKwkJLyogRG9uJ3QgcHV0IHRoZSByb290IGJsb2NrIGludG8gdGhlIGZyZWUgYmxvY2sgbGlzdCAqLworCQlpZiAoaSA9PSBRVF9CTEtTSVpFICYmICpibGsgIT0gUVRfVFJFRU9GRikgeworCQkJcHV0X2ZyZWVfZHFibGsoaCwgYnVmLCAqYmxrKTsKKwkJCSpibGsgPSAwOworCQl9IGVsc2UgeworCQkJd3JpdGVfYmxrKGgsICpibGssIGJ1Zik7CisJCX0KKwl9CisJZnJlZWRxYnVmKGJ1Zik7Cit9CisKKy8qIERlbGV0ZSBkcXVvdCBmcm9tIHRyZWUgKi8KK3ZvaWQgcXRyZWVfZGVsZXRlX2RxdW90KHN0cnVjdCBkcXVvdCAqZHF1b3QpCit7CisJdW5zaWduZWQgaW50IHRtcCA9IFFUX1RSRUVPRkY7CisKKwlpZiAoIWRxdW90LT5kcV9kcWIudS52Ml9tZHFiLmRxYl9vZmYpCS8qIEV2ZW4gbm90IGFsbG9jYXRlZD8gKi8KKwkJcmV0dXJuOworCXJlbW92ZV90cmVlKGRxdW90LT5kcV9oLCBkcXVvdCwgJnRtcCwgMCk7Cit9CisKKy8qIEZpbmQgZW50cnkgaW4gYmxvY2sgKi8KK3N0YXRpYyBleHQyX2xvZmZfdCBmaW5kX2Jsb2NrX2RxZW50cnkoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCQkgICAgICBzdHJ1Y3QgZHF1b3QgKmRxdW90LCB1bnNpZ25lZCBpbnQgYmxrKQoreworCXN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvID0gJmgtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZTsKKwlkcWJ1Zl90IGJ1ZiA9IGdldGRxYnVmKCk7CisJaW50IGk7CisJY2hhciAqZGRxdW90ID0gYnVmICsgc2l6ZW9mKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIpOworCisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOworCisJcmVhZF9ibGsoaCwgYmxrLCBidWYpOworCWZvciAoaSA9IDA7CisJICAgICBpIDwgcXRyZWVfZHFzdHJfaW5fYmxrKGluZm8pICYmICFpbmZvLT5kcWlfb3BzLT5pc19pZChkZHF1b3QsIGRxdW90KTsKKwkgICAgIGkrKykKKwkJZGRxdW90ICs9IGluZm8tPmRxaV9lbnRyeV9zaXplOworCisJaWYgKGkgPT0gcXRyZWVfZHFzdHJfaW5fYmxrKGluZm8pKQorCQlsb2dfZXJyKCJRdW90YSBmb3IgaWQgJXUgcmVmZXJlbmNlZCBidXQgbm90IHByZXNlbnQuIiwKKwkJCWRxdW90LT5kcV9pZCk7CisJZnJlZWRxYnVmKGJ1Zik7CisJcmV0dXJuIChibGsgPDwgUVRfQkxLU0laRV9CSVRTKSArIHNpemVvZihzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyKSArCisJCWkgKiBpbmZvLT5kcWlfZW50cnlfc2l6ZTsKK30KKworLyogRmluZCBlbnRyeSBmb3IgZ2l2ZW4gaWQgaW4gdGhlIHRyZWUgKi8KK3N0YXRpYyBleHQyX2xvZmZfdCBmaW5kX3RyZWVfZHFlbnRyeShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLAorCQkJCSAgICAgc3RydWN0IGRxdW90ICpkcXVvdCwKKwkJCQkgICAgIHVuc2lnbmVkIGludCBibGssIGludCBkZXB0aCkKK3sKKwlkcWJ1Zl90IGJ1ZiA9IGdldGRxYnVmKCk7CisJZXh0Ml9sb2ZmX3QgcmV0ID0gMDsKKwlfX2xlMzIgKnJlZiA9IChfX2xlMzIgKikgYnVmOworCisJaWYgKCFidWYpCisJCXJldHVybiAtRU5PTUVNOworCisJcmVhZF9ibGsoaCwgYmxrLCBidWYpOworCXJldCA9IDA7CisJYmxrID0gZXh0MmZzX2xlMzJfdG9fY3B1KHJlZltnZXRfaW5kZXgoZHF1b3QtPmRxX2lkLCBkZXB0aCldKTsKKwlpZiAoIWJsaykJLyogTm8gcmVmZXJlbmNlPyAqLworCQlnb3RvIG91dF9idWY7CisJaWYgKGRlcHRoIDwgUVRfVFJFRURFUFRIIC0gMSkKKwkJcmV0ID0gZmluZF90cmVlX2RxZW50cnkoaCwgZHF1b3QsIGJsaywgZGVwdGggKyAxKTsKKwllbHNlCisJCXJldCA9IGZpbmRfYmxvY2tfZHFlbnRyeShoLCBkcXVvdCwgYmxrKTsKK291dF9idWY6CisJZnJlZWRxYnVmKGJ1Zik7CisJcmV0dXJuIHJldDsKK30KKworLyogRmluZCBlbnRyeSBmb3IgZ2l2ZW4gaWQgaW4gdGhlIHRyZWUgLSB3cmFwcGVyIGZ1bmN0aW9uICovCitzdGF0aWMgaW5saW5lIGV4dDJfbG9mZl90IGZpbmRfZHFlbnRyeShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLAorCQkJCSAgICAgICBzdHJ1Y3QgZHF1b3QgKmRxdW90KQoreworCXJldHVybiBmaW5kX3RyZWVfZHFlbnRyeShoLCBkcXVvdCwgUVRfVFJFRU9GRiwgMCk7Cit9CisKKy8qCisgKiAgUmVhZCBkcXVvdCBmcm9tIGRpc2suCisgKi8KK3N0cnVjdCBkcXVvdCAqcXRyZWVfcmVhZF9kcXVvdChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBxaWRfdCBpZCkKK3sKKwlzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbyA9ICZoLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWU7CisJZXh0Ml9sb2ZmX3Qgb2Zmc2V0OworCXVuc2lnbmVkIGludCByZXQ7CisJY2hhciAqZGRxdW90OworCXN0cnVjdCBkcXVvdCAqZHF1b3QgPSBnZXRfZW1wdHlfZHF1b3QoKTsKKworCWlmICghZHF1b3QpCisJCXJldHVybiBOVUxMOworCWlmIChleHQyZnNfZ2V0X21lbShpbmZvLT5kcWlfZW50cnlfc2l6ZSwgJmRkcXVvdCkpIHsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZkcXVvdCk7CisJCXJldHVybiBOVUxMOworCX0KKworCWRxdW90LT5kcV9pZCA9IGlkOworCWRxdW90LT5kcV9oID0gaDsKKwlkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmID0gMDsKKwltZW1zZXQoJmRxdW90LT5kcV9kcWIsIDAsIHNpemVvZihzdHJ1Y3QgdXRpbF9kcWJsaykpOworCisJb2Zmc2V0ID0gZmluZF9kcWVudHJ5KGgsIGRxdW90KTsKKwlpZiAob2Zmc2V0ID4gMCkgeworCQlkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmID0gb2Zmc2V0OworCQlyZXQgPSBoLT5lMmZzX3JlYWQoJmgtPnFoX3FmLCBvZmZzZXQsIGRkcXVvdCwKKwkJCWluZm8tPmRxaV9lbnRyeV9zaXplKTsKKwkJaWYgKHJldCAhPSBpbmZvLT5kcWlfZW50cnlfc2l6ZSkgeworCQkJaWYgKHJldCA+IDApCisJCQkJZXJybm8gPSBFSU87CisJCQlsb2dfZXJyKCJDYW5ub3QgcmVhZCBxdW90YSBzdHJ1Y3R1cmUgZm9yIGlkICV1OiAlcyIsCisJCQkJZHF1b3QtPmRxX2lkLCBzdHJlcnJvcihlcnJubykpOworCQl9CisJCWluZm8tPmRxaV9vcHMtPmRpc2sybWVtX2RxYmxrKGRxdW90LCBkZHF1b3QpOworCX0KKwlleHQyZnNfZnJlZV9tZW0oJmRkcXVvdCk7CisJcmV0dXJuIGRxdW90OworfQorCisvKgorICogU2NhbiBhbGwgZHF1b3RzIGluIGZpbGUgYW5kIGNhbGwgY2FsbGJhY2sgb24gZWFjaAorICovCisjZGVmaW5lIHNldF9iaXQoYm1wLCBpbmQpICgoYm1wKVsoaW5kKSA+PiAzXSB8PSAoMSA8PCAoKGluZCkgJiA3KSkpCisjZGVmaW5lIGdldF9iaXQoYm1wLCBpbmQpICgoYm1wKVsoaW5kKSA+PiAzXSAmICgxIDw8ICgoaW5kKSAmIDcpKSkKKworc3RhdGljIGludCByZXBvcnRfYmxvY2soc3RydWN0IGRxdW90ICpkcXVvdCwgdW5zaWduZWQgaW50IGJsaywgY2hhciAqYml0bWFwLAorCQkJaW50ICgqcHJvY2Vzc19kcXVvdCkgKHN0cnVjdCBkcXVvdCAqLCB2b2lkICopLAorCQkJdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyAqaW5mbyA9CisJCQkmZHF1b3QtPmRxX2gtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZTsKKwlkcWJ1Zl90IGJ1ZiA9IGdldGRxYnVmKCk7CisJc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlciAqZGg7CisJY2hhciAqZGRhdGE7CisJaW50IGVudHJpZXMsIGk7CisKKwlpZiAoIWJ1ZikKKwkJcmV0dXJuIDA7CisKKwlzZXRfYml0KGJpdG1hcCwgYmxrKTsKKwlyZWFkX2JsayhkcXVvdC0+ZHFfaCwgYmxrLCBidWYpOworCWRoID0gKHN0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgKilidWY7CisJZGRhdGEgPSBidWYgKyBzaXplb2Yoc3RydWN0IHF0X2Rpc2tfZHFkYmhlYWRlcik7CisJZW50cmllcyA9IGV4dDJmc19sZTE2X3RvX2NwdShkaC0+ZHFkaF9lbnRyaWVzKTsKKwlmb3IgKGkgPSAwOyBpIDwgcXRyZWVfZHFzdHJfaW5fYmxrKGluZm8pOworCQkJaSsrLCBkZGF0YSArPSBpbmZvLT5kcWlfZW50cnlfc2l6ZSkKKwkJaWYgKCFxdHJlZV9lbnRyeV91bnVzZWQoaW5mbywgZGRhdGEpKSB7CisJCQlkcXVvdC0+ZHFfZHFiLnUudjJfbWRxYi5kcWJfb2ZmID0KKwkJCQkoYmxrIDw8IFFUX0JMS1NJWkVfQklUUykgKworCQkJCXNpemVvZihzdHJ1Y3QgcXRfZGlza19kcWRiaGVhZGVyKSArCisJCQkJaSAqIGluZm8tPmRxaV9lbnRyeV9zaXplOworCQkJaW5mby0+ZHFpX29wcy0+ZGlzazJtZW1fZHFibGsoZHF1b3QsIGRkYXRhKTsKKwkJCWlmIChwcm9jZXNzX2RxdW90KGRxdW90LCBkYXRhKSA8IDApCisJCQkJYnJlYWs7CisJCX0KKwlmcmVlZHFidWYoYnVmKTsKKwlyZXR1cm4gZW50cmllczsKK30KKworc3RhdGljIHZvaWQgY2hlY2tfcmVmZXJlbmNlKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIHVuc2lnbmVkIGludCBibGspCit7CisJaWYgKGJsayA+PSBoLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2Jsb2NrcykKKwkJbG9nX2VycigiSWxsZWdhbCByZWZlcmVuY2UgKCV1ID49ICV1KSBpbiAlcyBxdW90YSBmaWxlLiAiCisJCQkiUXVvdGEgZmlsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQuXG4iCisJCQkiUGxlYXNlIHJ1biBlMmZzY2sgKDgpIHRvIGZpeCBpdC4iLAorCQkJYmxrLAorCQkJaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlLmRxaV9ibG9ja3MsCisJCQlxdW90YV90eXBlMm5hbWUoaC0+cWhfdHlwZSkpOworfQorCitzdGF0aWMgaW50IHJlcG9ydF90cmVlKHN0cnVjdCBkcXVvdCAqZHF1b3QsIHVuc2lnbmVkIGludCBibGssIGludCBkZXB0aCwKKwkJICAgICAgIGNoYXIgKmJpdG1hcCwKKwkJICAgICAgIGludCAoKnByb2Nlc3NfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKiwgdm9pZCAqKSwKKwkJICAgICAgIHZvaWQgKmRhdGEpCit7CisJaW50IGVudHJpZXMgPSAwLCBpOworCWRxYnVmX3QgYnVmID0gZ2V0ZHFidWYoKTsKKwlfX2xlMzIgKnJlZiA9IChfX2xlMzIgKikgYnVmOworCisJaWYgKCFidWYpCisJCXJldHVybiAwOworCisJcmVhZF9ibGsoZHF1b3QtPmRxX2gsIGJsaywgYnVmKTsKKwlpZiAoZGVwdGggPT0gUVRfVFJFRURFUFRIIC0gMSkgeworCQlmb3IgKGkgPSAwOyBpIDwgUVRfQkxLU0laRSA+PiAyOyBpKyspIHsKKwkJCWJsayA9IGV4dDJmc19sZTMyX3RvX2NwdShyZWZbaV0pOworCQkJY2hlY2tfcmVmZXJlbmNlKGRxdW90LT5kcV9oLCBibGspOworCQkJaWYgKGJsayAmJiAhZ2V0X2JpdChiaXRtYXAsIGJsaykpCisJCQkJZW50cmllcyArPSByZXBvcnRfYmxvY2soZHF1b3QsIGJsaywgYml0bWFwLAorCQkJCQkJCXByb2Nlc3NfZHF1b3QsIGRhdGEpOworCQl9CisJfSBlbHNlIHsKKwkJZm9yIChpID0gMDsgaSA8IFFUX0JMS1NJWkUgPj4gMjsgaSsrKSB7CisJCQlibGsgPSBleHQyZnNfbGUzMl90b19jcHUocmVmW2ldKTsKKwkJCWlmIChibGspIHsKKwkJCQljaGVja19yZWZlcmVuY2UoZHF1b3QtPmRxX2gsIGJsayk7CisJCQkJZW50cmllcyArPSByZXBvcnRfdHJlZShkcXVvdCwgYmxrLCBkZXB0aCArIDEsCisJCQkJCQkgICAgICAgYml0bWFwLCBwcm9jZXNzX2RxdW90LAorCQkJCQkJICAgICAgIGRhdGEpOworCQkJfQorCQl9CisJfQorCWZyZWVkcWJ1ZihidWYpOworCXJldHVybiBlbnRyaWVzOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGZpbmRfc2V0X2JpdHMoY2hhciAqYm1wLCBpbnQgYmxvY2tzKQoreworCXVuc2lnbmVkIGludAl1c2VkID0gMDsKKwlpbnQJCWk7CisKKwlmb3IgKGkgPSAwOyBpIDwgYmxvY2tzOyBpKyspCisJCWlmIChnZXRfYml0KGJtcCwgaSkpCisJCQl1c2VkKys7CisJcmV0dXJuIHVzZWQ7Cit9CisKK2ludCBxdHJlZV9zY2FuX2RxdW90cyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLAorCQkgICAgICBpbnQgKCpwcm9jZXNzX2RxdW90KSAoc3RydWN0IGRxdW90ICosIHZvaWQgKiksCisJCSAgICAgIHZvaWQgKmRhdGEpCit7CisJY2hhciAqYml0bWFwOworCXN0cnVjdCB2Ml9tZW1fZHFpbmZvICp2MmluZm8gPSAmaC0+cWhfaW5mby51LnYyX21kcWk7CisJc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8gPSAmdjJpbmZvLT5kcWlfcXRyZWU7CisJc3RydWN0IGRxdW90ICpkcXVvdCA9IGdldF9lbXB0eV9kcXVvdCgpOworCisJaWYgKCFkcXVvdCkKKwkJcmV0dXJuIC0xOworCisJZHF1b3QtPmRxX2ggPSBoOworCWlmIChleHQyZnNfZ2V0X21lbXplcm8oKGluZm8tPmRxaV9ibG9ja3MgKyA3KSA+PiAzLCAmYml0bWFwKSkgeworCQlleHQyZnNfZnJlZV9tZW0oJmRxdW90KTsKKwkJcmV0dXJuIC0xOworCX0KKwl2MmluZm8tPmRxaV91c2VkX2VudHJpZXMgPSByZXBvcnRfdHJlZShkcXVvdCwgUVRfVFJFRU9GRiwgMCwgYml0bWFwLAorCQkJCQkgICAgICAgcHJvY2Vzc19kcXVvdCwgZGF0YSk7CisJdjJpbmZvLT5kcWlfZGF0YV9ibG9ja3MgPSBmaW5kX3NldF9iaXRzKGJpdG1hcCwgaW5mby0+ZHFpX2Jsb2Nrcyk7CisJZXh0MmZzX2ZyZWVfbWVtKCZiaXRtYXApOworCWV4dDJmc19mcmVlX21lbSgmZHF1b3QpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYjBjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIERlZmluaXRpb25zIG9mIHN0cnVjdHVyZXMgZm9yIHZmc3YwIHF1b3RhIGZvcm1hdAorICovCisKKyNpZm5kZWYgX0xJTlVYX1FVT1RBX1RSRUVfSAorI2RlZmluZSBfTElOVVhfUVVPVEFfVFJFRV9ICisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKwordHlwZWRlZiBfX3UzMiBxaWRfdDsgICAgICAgIC8qIFR5cGUgaW4gd2hpY2ggd2Ugc3RvcmUgaWRzIGluIG1lbW9yeSAqLworCisjZGVmaW5lIFFUX1RSRUVPRkYJMQkvKiBPZmZzZXQgb2YgdHJlZSBpbiBmaWxlIGluIGJsb2NrcyAqLworI2RlZmluZSBRVF9UUkVFREVQVEgJNAkvKiBEZXB0aCBvZiBxdW90YSB0cmVlICovCisjZGVmaW5lIFFUX0JMS1NJWkVfQklUUwkxMAorI2RlZmluZSBRVF9CTEtTSVpFICgxIDw8IFFUX0JMS1NJWkVfQklUUykJLyogU2l6ZSBvZiBibG9jayB3aXRoIHF1b3RhCisJCQkJCQkgKiBzdHJ1Y3R1cmVzICovCisKKy8qCisgKiAgU3RydWN0dXJlIG9mIGhlYWRlciBvZiBibG9jayB3aXRoIHF1b3RhIHN0cnVjdHVyZXMuIEl0IGlzIHBhZGRlZCB0byAxNiBieXRlcworICogIHNvIHRoZXJlIHdpbGwgYmUgc3BhY2UgZm9yIGV4YWN0bHkgMjEgcXVvdGEtZW50cmllcyBpbiBhIGJsb2NrCisgKi8KK3N0cnVjdCBxdF9kaXNrX2RxZGJoZWFkZXIgeworCV9fbGUzMiBkcWRoX25leHRfZnJlZTsJLyogTnVtYmVyIG9mIG5leHQgYmxvY2sgd2l0aCBmcmVlCisJCQkJCSAqIGVudHJ5ICovCisJX19sZTMyIGRxZGhfcHJldl9mcmVlOyAvKiBOdW1iZXIgb2YgcHJldmlvdXMgYmxvY2sgd2l0aCBmcmVlCisJCQkJICAgKiBlbnRyeSAqLworCV9fbGUxNiBkcWRoX2VudHJpZXM7IC8qIE51bWJlciBvZiB2YWxpZCBlbnRyaWVzIGluIGJsb2NrICovCisJX19sZTE2IGRxZGhfcGFkMTsKKwlfX2xlMzIgZHFkaF9wYWQyOworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCBkcXVvdDsKK3N0cnVjdCBxdW90YV9oYW5kbGU7CisKKy8qIE9wZXJhdGlvbnMgKi8KK3N0cnVjdCBxdHJlZV9mbXRfb3BlcmF0aW9ucyB7CisJLyogQ29udmVydCBnaXZlbiBlbnRyeSBmcm9tIGluIG1lbW9yeSBmb3JtYXQgdG8gZGlzayBvbmUgKi8KKwl2b2lkICgqbWVtMmRpc2tfZHFibGspKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAqZHF1b3QpOworCS8qIENvbnZlcnQgZ2l2ZW4gZW50cnkgZnJvbSBkaXNrIGZvcm1hdCB0byBpbiBtZW1vcnkgb25lICovCisJdm9pZCAoKmRpc2sybWVtX2RxYmxrKShzdHJ1Y3QgZHF1b3QgKmRxdW90LCB2b2lkICpkaXNrKTsKKwkvKiBJcyB0aGlzIHN0cnVjdHVyZSBmb3IgZ2l2ZW4gaWQ/ICovCisJaW50ICgqaXNfaWQpKHZvaWQgKmRpc2ssIHN0cnVjdCBkcXVvdCAqZHF1b3QpOworfTsKKworLyogSW5tZW1vcnkgY29weSBvZiB2ZXJzaW9uIHNwZWNpZmljIGluZm9ybWF0aW9uICovCitzdHJ1Y3QgcXRyZWVfbWVtX2RxaW5mbyB7CisJdW5zaWduZWQgaW50IGRxaV9ibG9ja3M7CS8qICMgb2YgYmxvY2tzIGluIHF1b3RhIGZpbGUgKi8KKwl1bnNpZ25lZCBpbnQgZHFpX2ZyZWVfYmxrOwkvKiBGaXJzdCBibG9jayBpbiBsaXN0IG9mIGZyZWUgYmxvY2tzICovCisJdW5zaWduZWQgaW50IGRxaV9mcmVlX2VudHJ5OwkvKiBGaXJzdCBibG9jayB3aXRoIGZyZWUgZW50cnkgKi8KKwl1bnNpZ25lZCBpbnQgZHFpX2VudHJ5X3NpemU7CS8qIFNpemUgb2YgcXVvdGEgZW50cnkgaW4gcXVvdGEgZmlsZSAqLworCXN0cnVjdCBxdHJlZV9mbXRfb3BlcmF0aW9ucyAqZHFpX29wczsJLyogT3BlcmF0aW9ucyBmb3IgZW50cnkKKwkJCQkJCSAqIG1hbmlwdWxhdGlvbiAqLworfTsKKwordm9pZCBxdHJlZV93cml0ZV9kcXVvdChzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKK3N0cnVjdCBkcXVvdCAqcXRyZWVfcmVhZF9kcXVvdChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBxaWRfdCBpZCk7Cit2b2lkIHF0cmVlX2RlbGV0ZV9kcXVvdChzdHJ1Y3QgZHF1b3QgKmRxdW90KTsKK2ludCBxdHJlZV9lbnRyeV91bnVzZWQoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8sIGNoYXIgKmRpc2spOworaW50IHF0cmVlX3NjYW5fZHF1b3RzKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsCisJCWludCAoKnByb2Nlc3NfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKiwgdm9pZCAqKSwgdm9pZCAqZGF0YSk7CisKK2ludCBxdHJlZV9kcXN0cl9pbl9ibGsoc3RydWN0IHF0cmVlX21lbV9kcWluZm8gKmluZm8pOworCisjZW5kaWYgLyogX0xJTlVYX1FVT1RBSU9fVFJFRV9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpb192Mi5jIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGJlMmEzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdjIuYwpAQCAtMCwwICsxLDI4NSBAQAorLyoKKyAqIEltcGxlbWVudGF0aW9uIG9mIG5ldyBxdW90YWZpbGUgZm9ybWF0CisgKgorICogSmFuIEthcmEgPGphY2tAc3VzZS5jej4gLSBzcG9uc29yZWQgYnkgU3VTRSBDUgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJjb21tb24uaCIKKyNpbmNsdWRlICJxdW90YWlvX3YyLmgiCisjaW5jbHVkZSAiZHFibGtfdjIuaCIKKyNpbmNsdWRlICJxdW90YWlvLmgiCisjaW5jbHVkZSAicXVvdGFpb190cmVlLmgiCisKK3N0YXRpYyBpbnQgdjJfY2hlY2tfZmlsZShzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBpbnQgdHlwZSwgaW50IGZtdCk7CitzdGF0aWMgaW50IHYyX2luaXRfaW8oc3RydWN0IHF1b3RhX2hhbmRsZSAqaCk7CitzdGF0aWMgaW50IHYyX25ld19pbyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKTsKK3N0YXRpYyBpbnQgdjJfd3JpdGVfaW5mbyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKTsKK3N0YXRpYyBzdHJ1Y3QgZHF1b3QgKnYyX3JlYWRfZHF1b3Qoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwgcWlkX3QgaWQpOworc3RhdGljIGludCB2Ml9jb21taXRfZHF1b3Qoc3RydWN0IGRxdW90ICpkcXVvdCk7CitzdGF0aWMgaW50IHYyX3NjYW5fZHF1b3RzKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsCisJCQkgIGludCAoKnByb2Nlc3NfZHF1b3QpIChzdHJ1Y3QgZHF1b3QgKmRxdW90LAorCQkJCQkJdm9pZCAqZGF0YSksCisJCQkgIHZvaWQgKmRhdGEpOworc3RhdGljIGludCB2Ml9yZXBvcnQoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwgaW50IHZlcmJvc2UpOworCitzdHJ1Y3QgcXVvdGFmaWxlX29wcyBxdW90YWZpbGVfb3BzXzIgPSB7CisJLmNoZWNrX2ZpbGUJPSB2Ml9jaGVja19maWxlLAorCS5pbml0X2lvIAk9IHYyX2luaXRfaW8sCisJLm5ld19pbyAJPSB2Ml9uZXdfaW8sCisJLndyaXRlX2luZm8JPSB2Ml93cml0ZV9pbmZvLAorCS5yZWFkX2RxdW90CT0gdjJfcmVhZF9kcXVvdCwKKwkuY29tbWl0X2RxdW90CT0gdjJfY29tbWl0X2RxdW90LAorCS5zY2FuX2RxdW90cwk9IHYyX3NjYW5fZHF1b3RzLAorCS5yZXBvcnQJCT0gdjJfcmVwb3J0LAorfTsKKworLyoKKyAqIENvcHkgZHF1b3QgZnJvbSBkaXNrIHRvIG1lbW9yeQorICovCitzdGF0aWMgdm9pZCB2MnIxX2Rpc2sybWVtZHFibGsoc3RydWN0IGRxdW90ICpkcXVvdCwgdm9pZCAqZHApCit7CisJc3RydWN0IHV0aWxfZHFibGsgKm0gPSAmZHF1b3QtPmRxX2RxYjsKKwlzdHJ1Y3QgdjJyMV9kaXNrX2RxYmxrICpkID0gZHAsIGVtcHR5OworCisJZHF1b3QtPmRxX2lkID0gZXh0MmZzX2xlMzJfdG9fY3B1KGQtPmRxYl9pZCk7CisJbS0+ZHFiX2loYXJkbGltaXQgPSBleHQyZnNfbGU2NF90b19jcHUoZC0+ZHFiX2loYXJkbGltaXQpOworCW0tPmRxYl9pc29mdGxpbWl0ID0gZXh0MmZzX2xlNjRfdG9fY3B1KGQtPmRxYl9pc29mdGxpbWl0KTsKKwltLT5kcWJfYmhhcmRsaW1pdCA9IGV4dDJmc19sZTY0X3RvX2NwdShkLT5kcWJfYmhhcmRsaW1pdCk7CisJbS0+ZHFiX2Jzb2Z0bGltaXQgPSBleHQyZnNfbGU2NF90b19jcHUoZC0+ZHFiX2Jzb2Z0bGltaXQpOworCW0tPmRxYl9jdXJpbm9kZXMgPSBleHQyZnNfbGU2NF90b19jcHUoZC0+ZHFiX2N1cmlub2Rlcyk7CisJbS0+ZHFiX2N1cnNwYWNlID0gZXh0MmZzX2xlNjRfdG9fY3B1KGQtPmRxYl9jdXJzcGFjZSk7CisJbS0+ZHFiX2l0aW1lID0gZXh0MmZzX2xlNjRfdG9fY3B1KGQtPmRxYl9pdGltZSk7CisJbS0+ZHFiX2J0aW1lID0gZXh0MmZzX2xlNjRfdG9fY3B1KGQtPmRxYl9idGltZSk7CisKKwltZW1zZXQoJmVtcHR5LCAwLCBzaXplb2Yoc3RydWN0IHYycjFfZGlza19kcWJsaykpOworCWVtcHR5LmRxYl9pdGltZSA9IGV4dDJmc19jcHVfdG9fbGU2NCgxKTsKKwlpZiAoIW1lbWNtcCgmZW1wdHksIGRwLCBzaXplb2Yoc3RydWN0IHYycjFfZGlza19kcWJsaykpKQorCQltLT5kcWJfaXRpbWUgPSAwOworfQorCisvKgorICogQ29weSBkcXVvdCBmcm9tIG1lbW9yeSB0byBkaXNrCisgKi8KK3N0YXRpYyB2b2lkIHYycjFfbWVtMmRpc2tkcWJsayh2b2lkICpkcCwgc3RydWN0IGRxdW90ICpkcXVvdCkKK3sKKwlzdHJ1Y3QgdXRpbF9kcWJsayAqbSA9ICZkcXVvdC0+ZHFfZHFiOworCXN0cnVjdCB2MnIxX2Rpc2tfZHFibGsgKmQgPSBkcDsKKworCWQtPmRxYl9paGFyZGxpbWl0ID0gZXh0MmZzX2NwdV90b19sZTY0KG0tPmRxYl9paGFyZGxpbWl0KTsKKwlkLT5kcWJfaXNvZnRsaW1pdCA9IGV4dDJmc19jcHVfdG9fbGU2NChtLT5kcWJfaXNvZnRsaW1pdCk7CisJZC0+ZHFiX2JoYXJkbGltaXQgPSBleHQyZnNfY3B1X3RvX2xlNjQobS0+ZHFiX2JoYXJkbGltaXQpOworCWQtPmRxYl9ic29mdGxpbWl0ID0gZXh0MmZzX2NwdV90b19sZTY0KG0tPmRxYl9ic29mdGxpbWl0KTsKKwlkLT5kcWJfY3VyaW5vZGVzID0gZXh0MmZzX2NwdV90b19sZTY0KG0tPmRxYl9jdXJpbm9kZXMpOworCWQtPmRxYl9jdXJzcGFjZSA9IGV4dDJmc19jcHVfdG9fbGU2NChtLT5kcWJfY3Vyc3BhY2UpOworCWQtPmRxYl9pdGltZSA9IGV4dDJmc19jcHVfdG9fbGU2NChtLT5kcWJfaXRpbWUpOworCWQtPmRxYl9idGltZSA9IGV4dDJmc19jcHVfdG9fbGU2NChtLT5kcWJfYnRpbWUpOworCWQtPmRxYl9pZCA9IGV4dDJmc19jcHVfdG9fbGUzMihkcXVvdC0+ZHFfaWQpOworCWlmIChxdHJlZV9lbnRyeV91bnVzZWQoJmRxdW90LT5kcV9oLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWUsIGRwKSkKKwkJZC0+ZHFiX2l0aW1lID0gZXh0MmZzX2NwdV90b19sZTY0KDEpOworfQorCitzdGF0aWMgaW50IHYycjFfaXNfaWQodm9pZCAqZHAsIHN0cnVjdCBkcXVvdCAqZHF1b3QpCit7CisJc3RydWN0IHYycjFfZGlza19kcWJsayAqZCA9IGRwOworCXN0cnVjdCBxdHJlZV9tZW1fZHFpbmZvICppbmZvID0KKwkJCSZkcXVvdC0+ZHFfaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlOworCisJaWYgKHF0cmVlX2VudHJ5X3VudXNlZChpbmZvLCBkcCkpCisJCXJldHVybiAwOworCXJldHVybiBleHQyZnNfbGUzMl90b19jcHUoZC0+ZHFiX2lkKSA9PSBkcXVvdC0+ZHFfaWQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcXRyZWVfZm10X29wZXJhdGlvbnMgdjJyMV9mbXRfb3BzID0geworCS5tZW0yZGlza19kcWJsayA9IHYycjFfbWVtMmRpc2tkcWJsaywKKwkuZGlzazJtZW1fZHFibGsgPSB2MnIxX2Rpc2sybWVtZHFibGssCisJLmlzX2lkID0gdjJyMV9pc19pZCwKK307CisKKy8qCisgKiBDb3B5IGRxaW5mbyBmcm9tIGRpc2sgdG8gbWVtb3J5CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB2Ml9kaXNrMm1lbWRxaW5mbyhzdHJ1Y3QgdXRpbF9kcWluZm8gKm0sCisJCQkJICAgICBzdHJ1Y3QgdjJfZGlza19kcWluZm8gKmQpCit7CisJbS0+ZHFpX2JncmFjZSA9IGV4dDJmc19sZTMyX3RvX2NwdShkLT5kcWlfYmdyYWNlKTsKKwltLT5kcWlfaWdyYWNlID0gZXh0MmZzX2xlMzJfdG9fY3B1KGQtPmRxaV9pZ3JhY2UpOworCW0tPnUudjJfbWRxaS5kcWlfZmxhZ3MgPSBleHQyZnNfbGUzMl90b19jcHUoZC0+ZHFpX2ZsYWdzKSAmIFYyX0RRRl9NQVNLOworCW0tPnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2Jsb2NrcyA9IGV4dDJmc19sZTMyX3RvX2NwdShkLT5kcWlfYmxvY2tzKTsKKwltLT51LnYyX21kcWkuZHFpX3F0cmVlLmRxaV9mcmVlX2JsayA9CisJCWV4dDJmc19sZTMyX3RvX2NwdShkLT5kcWlfZnJlZV9ibGspOworCW0tPnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2ZyZWVfZW50cnkgPQorCQkJCWV4dDJmc19sZTMyX3RvX2NwdShkLT5kcWlfZnJlZV9lbnRyeSk7Cit9CisKKy8qCisgKiBDb3B5IGRxaW5mbyBmcm9tIG1lbW9yeSB0byBkaXNrCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCB2Ml9tZW0yZGlza2RxaW5mbyhzdHJ1Y3QgdjJfZGlza19kcWluZm8gKmQsCisJCQkJICAgICBzdHJ1Y3QgdXRpbF9kcWluZm8gKm0pCit7CisJZC0+ZHFpX2JncmFjZSA9IGV4dDJmc19jcHVfdG9fbGUzMihtLT5kcWlfYmdyYWNlKTsKKwlkLT5kcWlfaWdyYWNlID0gZXh0MmZzX2NwdV90b19sZTMyKG0tPmRxaV9pZ3JhY2UpOworCWQtPmRxaV9mbGFncyA9IGV4dDJmc19jcHVfdG9fbGUzMihtLT51LnYyX21kcWkuZHFpX2ZsYWdzICYgVjJfRFFGX01BU0spOworCWQtPmRxaV9ibG9ja3MgPSBleHQyZnNfY3B1X3RvX2xlMzIobS0+dS52Ml9tZHFpLmRxaV9xdHJlZS5kcWlfYmxvY2tzKTsKKwlkLT5kcWlfZnJlZV9ibGsgPQorCQlleHQyZnNfY3B1X3RvX2xlMzIobS0+dS52Ml9tZHFpLmRxaV9xdHJlZS5kcWlfZnJlZV9ibGspOworCWQtPmRxaV9mcmVlX2VudHJ5ID0KKwkJZXh0MmZzX2NwdV90b19sZTMyKG0tPnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2ZyZWVfZW50cnkpOworfQorCitzdGF0aWMgaW50IHYyX3JlYWRfaGVhZGVyKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgsIHN0cnVjdCB2Ml9kaXNrX2RxaGVhZGVyICpkcWgpCit7CisJaWYgKGgtPmUyZnNfcmVhZCgmaC0+cWhfcWYsIDAsIGRxaCwgc2l6ZW9mKHN0cnVjdCB2Ml9kaXNrX2RxaGVhZGVyKSkgIT0KKwkJCXNpemVvZihzdHJ1Y3QgdjJfZGlza19kcWhlYWRlcikpCisJCXJldHVybiAwOworCisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDaGVjayB3aGV0aGVyIGdpdmVuIHF1b3RhIGZpbGUgaXMgaW4gb3VyIGZvcm1hdAorICovCitzdGF0aWMgaW50IHYyX2NoZWNrX2ZpbGUoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwgaW50IHR5cGUsIGludCBmbXQpCit7CisJc3RydWN0IHYyX2Rpc2tfZHFoZWFkZXIgZHFoOworCWludCBmaWxlX21hZ2ljc1tdID0gSU5JVFFNQUdJQ1M7CisJaW50IGJlX21hZ2ljOworCisJaWYgKGZtdCAhPSBRRk1UX1ZGU19WMSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIXYyX3JlYWRfaGVhZGVyKGgsICZkcWgpKQorCQlyZXR1cm4gMDsKKworCWJlX21hZ2ljID0gZXh0MmZzX2JlMzJfdG9fY3B1KChfX2ZvcmNlIF9fYmUzMilkcWguZHFoX21hZ2ljKTsKKwlpZiAoYmVfbWFnaWMgPT0gZmlsZV9tYWdpY3NbdHlwZV0pIHsKKwkJbG9nX2VycigiWW91ciBxdW90YSBmaWxlIGlzIHN0b3JlZCBpbiB3cm9uZyBlbmRpYW5pdHkiKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmIChWMl9WRVJTSU9OICE9IGV4dDJmc19sZTMyX3RvX2NwdShkcWguZHFoX3ZlcnNpb24pKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIE9wZW4gcXVvdGFmaWxlCisgKi8KK3N0YXRpYyBpbnQgdjJfaW5pdF9pbyhzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoKQoreworCXN0cnVjdCB2Ml9kaXNrX2RxaW5mbyBkZHFpbmZvOworCisJaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlLmRxaV9lbnRyeV9zaXplID0KKwkJc2l6ZW9mKHN0cnVjdCB2MnIxX2Rpc2tfZHFibGspOworCWgtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZS5kcWlfb3BzID0gJnYycjFfZm10X29wczsKKworCS8qIFJlYWQgaW5mb3JtYXRpb24gYWJvdXQgcXVvdGFmaWxlICovCisJaWYgKGgtPmUyZnNfcmVhZCgmaC0+cWhfcWYsIFYyX0RRSU5GT09GRiwgJmRkcWluZm8sCisJCQkgc2l6ZW9mKGRkcWluZm8pKSAhPSBzaXplb2YoZGRxaW5mbykpCisJCXJldHVybiAtMTsKKwl2Ml9kaXNrMm1lbWRxaW5mbygmaC0+cWhfaW5mbywgJmRkcWluZm8pOworCXJldHVybiAwOworfQorCisvKgorICogSW5pdGlhbGl6ZSBuZXcgcXVvdGFmaWxlCisgKi8KK3N0YXRpYyBpbnQgdjJfbmV3X2lvKHN0cnVjdCBxdW90YV9oYW5kbGUgKmgpCit7CisJaW50IGZpbGVfbWFnaWNzW10gPSBJTklUUU1BR0lDUzsKKwlzdHJ1Y3QgdjJfZGlza19kcWhlYWRlciBkZHFoZWFkZXI7CisJc3RydWN0IHYyX2Rpc2tfZHFpbmZvIGRkcWluZm87CisKKwlpZiAoaC0+cWhfZm10ICE9IFFGTVRfVkZTX1YxKQorCQlyZXR1cm4gLTE7CisKKwkvKiBXcml0ZSBiYXNpYyBxdW90YSBoZWFkZXIgKi8KKwlkZHFoZWFkZXIuZHFoX21hZ2ljID0gZXh0MmZzX2NwdV90b19sZTMyKGZpbGVfbWFnaWNzW2gtPnFoX3R5cGVdKTsKKwlkZHFoZWFkZXIuZHFoX3ZlcnNpb24gPSBleHQyZnNfY3B1X3RvX2xlMzIoVjJfVkVSU0lPTik7CisJaWYgKGgtPmUyZnNfd3JpdGUoJmgtPnFoX3FmLCAwLCAmZGRxaGVhZGVyLCBzaXplb2YoZGRxaGVhZGVyKSkgIT0KKwkJCXNpemVvZihkZHFoZWFkZXIpKQorCQlyZXR1cm4gLTE7CisKKwkvKiBXcml0ZSBpbmZvcm1hdGlvbiBhYm91dCBxdW90YWZpbGUgKi8KKwloLT5xaF9pbmZvLmRxaV9iZ3JhY2UgPSBNQVhfRFFfVElNRTsKKwloLT5xaF9pbmZvLmRxaV9pZ3JhY2UgPSBNQVhfSVFfVElNRTsKKwloLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfZmxhZ3MgPSAwOworCWgtPnFoX2luZm8udS52Ml9tZHFpLmRxaV9xdHJlZS5kcWlfYmxvY2tzID0gUVRfVFJFRU9GRiArIDE7CisJaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlLmRxaV9mcmVlX2JsayA9IDA7CisJaC0+cWhfaW5mby51LnYyX21kcWkuZHFpX3F0cmVlLmRxaV9mcmVlX2VudHJ5ID0gMDsKKwloLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX2VudHJ5X3NpemUgPQorCQkJCXNpemVvZihzdHJ1Y3QgdjJyMV9kaXNrX2RxYmxrKTsKKwloLT5xaF9pbmZvLnUudjJfbWRxaS5kcWlfcXRyZWUuZHFpX29wcyA9ICZ2MnIxX2ZtdF9vcHM7CisJdjJfbWVtMmRpc2tkcWluZm8oJmRkcWluZm8sICZoLT5xaF9pbmZvKTsKKwlpZiAoaC0+ZTJmc193cml0ZSgmaC0+cWhfcWYsIFYyX0RRSU5GT09GRiwgJmRkcWluZm8sCisJCQkgIHNpemVvZihkZHFpbmZvKSkgIT0KKwkgICAgc2l6ZW9mKGRkcWluZm8pKQorCQlyZXR1cm4gLTE7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFdyaXRlIGluZm9ybWF0aW9uIChncmFjZSB0aW1lcyB0byBmaWxlKQorICovCitzdGF0aWMgaW50IHYyX3dyaXRlX2luZm8oc3RydWN0IHF1b3RhX2hhbmRsZSAqaCkKK3sKKwlzdHJ1Y3QgdjJfZGlza19kcWluZm8gZGRxaW5mbzsKKworCXYyX21lbTJkaXNrZHFpbmZvKCZkZHFpbmZvLCAmaC0+cWhfaW5mbyk7CisJaWYgKGgtPmUyZnNfd3JpdGUoJmgtPnFoX3FmLCBWMl9EUUlORk9PRkYsICZkZHFpbmZvLCBzaXplb2YoZGRxaW5mbykpICE9CisJCQlzaXplb2YoZGRxaW5mbykpCisJCXJldHVybiAtMTsKKworCXJldHVybiAwOworfQorCisvKgorICogUmVhZCBkcXVvdCBmcm9tIGRpc2sKKyAqLworc3RhdGljIHN0cnVjdCBkcXVvdCAqdjJfcmVhZF9kcXVvdChzdHJ1Y3QgcXVvdGFfaGFuZGxlICpoLCBxaWRfdCBpZCkKK3sKKwlyZXR1cm4gcXRyZWVfcmVhZF9kcXVvdChoLCBpZCk7Cit9CisKKy8qCisgKiBDb21taXQgY2hhbmdlcyBvZiBkcXVvdCB0byBkaXNrIC0gaXQgbWlnaHQgYWxzbyBtZWFuIGRlbGV0aW5nIGl0IHdoZW4gcXVvdGEKKyAqIGJlY2FtZSBmYWtlIG9uZSBhbmQgdXNlciBoYXMgbm8gYmxvY2tzLgorICogVXNlciBjYW4gcHJvY2VzcyB1c2UgJ2Vycm5vJyB0byBkZXRlY3QgZXJyc3RyLgorICovCitzdGF0aWMgaW50IHYyX2NvbW1pdF9kcXVvdChzdHJ1Y3QgZHF1b3QgKmRxdW90KQoreworCXN0cnVjdCB1dGlsX2RxYmxrICpiID0gJmRxdW90LT5kcV9kcWI7CisKKwlpZiAoIWItPmRxYl9jdXJzcGFjZSAmJiAhYi0+ZHFiX2N1cmlub2RlcyAmJiAhYi0+ZHFiX2Jzb2Z0bGltaXQgJiYKKwkgICAgIWItPmRxYl9pc29mdGxpbWl0ICYmICFiLT5kcWJfYmhhcmRsaW1pdCAmJiAhYi0+ZHFiX2loYXJkbGltaXQpCisJCXF0cmVlX2RlbGV0ZV9kcXVvdChkcXVvdCk7CisJZWxzZQorCQlxdHJlZV93cml0ZV9kcXVvdChkcXVvdCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdjJfc2Nhbl9kcXVvdHMoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCwKKwkJCSAgaW50ICgqcHJvY2Vzc19kcXVvdCkgKHN0cnVjdCBkcXVvdCAqLCB2b2lkICopLAorCQkJICB2b2lkICpkYXRhKQoreworCXJldHVybiBxdHJlZV9zY2FuX2RxdW90cyhoLCBwcm9jZXNzX2RxdW90LCBkYXRhKTsKK30KKworLyogUmVwb3J0IGluZm9ybWF0aW9uIGFib3V0IHF1b3RhZmlsZS4KKyAqIFRPRE86IE5vdCB1c2VkIHJpZ2h0IG5vdywgYnV0IHdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGlzIHdoZW4gd2UgYWRkCisgKiBzdXBwb3J0IHRvIGRlYnVnZnMgdG8gcmVhZCBxdW90YSBmaWxlcy4KKyAqLworc3RhdGljIGludCB2Ml9yZXBvcnQoc3RydWN0IHF1b3RhX2hhbmRsZSAqaCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgaW50IHZlcmJvc2UgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWxvZ19lcnIoIk5vdCBJbXBsZW1lbnRlZC4iKTsKKwlyZXR1cm4gLTE7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3N1cHBvcnQvcXVvdGFpb192Mi5oIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdjIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTJkYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi9zdXBwb3J0L3F1b3RhaW9fdjIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICoKKyAqCUhlYWRlciBmaWxlIGZvciBkaXNrIGZvcm1hdCBvZiBuZXcgcXVvdGFmaWxlIGZvcm1hdAorICoKKyAqLworCisjaWZuZGVmIEdVQVJEX1FVT1RBSU9fVjJfSAorI2RlZmluZSBHVUFSRF9RVU9UQUlPX1YyX0gKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgInF1b3RhaW8uaCIKKworLyogT2Zmc2V0IG9mIGluZm8gaGVhZGVyIGluIGZpbGUgKi8KKyNkZWZpbmUgVjJfRFFJTkZPT0ZGCQlzaXplb2Yoc3RydWN0IHYyX2Rpc2tfZHFoZWFkZXIpCisvKiBTdXBwb3J0ZWQgdmVyc2lvbiBvZiBxdW90YS10cmVlIGZvcm1hdCAqLworI2RlZmluZSBWMl9WRVJTSU9OIDEKKworc3RydWN0IHYyX2Rpc2tfZHFoZWFkZXIgeworCV9fbGUzMiBkcWhfbWFnaWM7CS8qIE1hZ2ljIG51bWJlciBpZGVudGlmeWluZyBmaWxlICovCisJX19sZTMyIGRxaF92ZXJzaW9uOwkvKiBGaWxlIHZlcnNpb24gKi8KK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisvKiBGbGFncyBmb3IgdmVyc2lvbiBzcGVjaWZpYyBmaWxlcyAqLworI2RlZmluZSBWMl9EUUZfTUFTSyAgMHgwMDAwCS8qIE1hc2sgZm9yIGFsbCB2YWxpZCBvbmRpc2sgZmxhZ3MgKi8KKworLyogSGVhZGVyIHdpdGggdHlwZSBhbmQgdmVyc2lvbiBzcGVjaWZpYyBpbmZvcm1hdGlvbiAqLworc3RydWN0IHYyX2Rpc2tfZHFpbmZvIHsKKwlfX2xlMzIgZHFpX2JncmFjZTsJLyogVGltZSBiZWZvcmUgYmxvY2sgc29mdCBsaW1pdCBiZWNvbWVzCisJCQkJICogaGFyZCBsaW1pdCAqLworCV9fbGUzMiBkcWlfaWdyYWNlOwkvKiBUaW1lIGJlZm9yZSBpbm9kZSBzb2Z0IGxpbWl0IGJlY29tZXMKKwkJCQkgKiBoYXJkIGxpbWl0ICovCisJX19sZTMyIGRxaV9mbGFnczsJLyogRmxhZ3MgZm9yIHF1b3RhZmlsZSAoRFFGXyopICovCisJX19sZTMyIGRxaV9ibG9ja3M7CS8qIE51bWJlciBvZiBibG9ja3MgaW4gZmlsZSAqLworCV9fbGUzMiBkcWlfZnJlZV9ibGs7CS8qIE51bWJlciBvZiBmaXJzdCBmcmVlIGJsb2NrIGluIHRoZSBsaXN0ICovCisJX19sZTMyIGRxaV9mcmVlX2VudHJ5OwkvKiBOdW1iZXIgb2YgYmxvY2sgd2l0aCBhdCBsZWFzdCBvbmUKKwkJCQkJICogZnJlZSBlbnRyeSAqLworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKK3N0cnVjdCB2MnIxX2Rpc2tfZHFibGsgeworCV9fbGUzMiBkcWJfaWQ7CS8qIGlkIHRoaXMgcXVvdGEgYXBwbGllcyB0byAqLworCV9fbGUzMiBkcWJfcGFkOworCV9fbGU2NCBkcWJfaWhhcmRsaW1pdDsJLyogYWJzb2x1dGUgbGltaXQgb24gYWxsb2NhdGVkIGlub2RlcyAqLworCV9fbGU2NCBkcWJfaXNvZnRsaW1pdDsJLyogcHJlZmVycmVkIGlub2RlIGxpbWl0ICovCisJX19sZTY0IGRxYl9jdXJpbm9kZXM7CS8qIGN1cnJlbnQgIyBhbGxvY2F0ZWQgaW5vZGVzICovCisJX19sZTY0IGRxYl9iaGFyZGxpbWl0OwkvKiBhYnNvbHV0ZSBsaW1pdCBvbiBkaXNrIHNwYWNlCisJCQkJCSAqIChpbiBRVU9UQUJMT0NLX1NJWkUpICovCisJX19sZTY0IGRxYl9ic29mdGxpbWl0OwkvKiBwcmVmZXJyZWQgbGltaXQgb24gZGlzayBzcGFjZQorCQkJCQkgKiAoaW4gUVVPVEFCTE9DS19TSVpFKSAqLworCV9fbGU2NCBkcWJfY3Vyc3BhY2U7CS8qIGN1cnJlbnQgc3BhY2Ugb2NjdXBpZWQgKGluIGJ5dGVzKSAqLworCV9fbGU2NCBkcWJfYnRpbWU7CS8qIHRpbWUgbGltaXQgZm9yIGV4Y2Vzc2l2ZSBkaXNrIHVzZSAqLworCV9fbGU2NCBkcWJfaXRpbWU7CS8qIHRpbWUgbGltaXQgZm9yIGV4Y2Vzc2l2ZSBpbm9kZSB1c2UgKi8KK30gX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9BbmRyb2lkLm1rIGIvZTJmc3Byb2dzL2xpYi91dWlkL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFkNjgzNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsNzAgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKKworbGliZXh0Ml91dWlkX3NyY19maWxlcyA6PSBcCisJY2xlYXIuYyBcCisJY29tcGFyZS5jIFwKKwljb3B5LmMgXAorCWdlbl91dWlkLmMgXAorCWlzbnVsbC5jIFwKKwlwYWNrLmMgXAorCXBhcnNlLmMgXAorCXVucGFjay5jIFwKKwl1bnBhcnNlLmMgXAorCXV1aWRfdGltZS5jCisKKworbGliZXh0Ml91dWlkX2NfaW5jbHVkZXMgOj0gZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitsaWJleHQyX3V1aWRfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbCBcCisJLVduby11bnVzZWQtZnVuY3Rpb24gXAorCS1Xbm8tdW51c2VkLXBhcmFtZXRlcgorCitsaWJleHQyX3V1aWRfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml91dWlkX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX3V1aWRfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfdXVpZF9jZmxhZ3MpCitMT0NBTF9FWFBPUlRfQ19JTkNMVURFX0RJUlMgOj0gJChMT0NBTF9QQVRIKSAkKExPQ0FMX1BBVEgpLy4uCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKGxpYmV4dDJfdXVpZF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX3V1aWQKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfdXVpZF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml91dWlkX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX3V1aWRfY2ZsYWdzKQorTE9DQUxfRVhQT1JUX0NfSU5DTFVERV9ESVJTIDo9ICQoTE9DQUxfUEFUSCkKK0xPQ0FMX01PRFVMRSA6PSBsaWJleHQyX3V1aWQtaG9zdAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfU0hBUkVEX0xJQlJBUlkpCisKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGxpYmV4dDJfdXVpZF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobGliZXh0Ml91dWlkX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChsaWJleHQyX3V1aWRfY2ZsYWdzKQorTE9DQUxfRVhQT1JUX0NfSU5DTFVERV9ESVJTIDo9ICQoTE9DQUxfUEFUSCkKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gbGliYworTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfdXVpZF9zdGF0aWMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobGliZXh0Ml91dWlkX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChsaWJleHQyX3V1aWRfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGxpYmV4dDJfdXVpZF9jZmxhZ3MpCitMT0NBTF9FWFBPUlRfQ19JTkNMVURFX0RJUlMgOj0gJChMT0NBTF9QQVRIKQorTE9DQUxfTU9EVUxFIDo9IGxpYmV4dDJfdXVpZC1ob3N0CitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9TVEFUSUNfTElCUkFSWSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9DT1BZSU5HIGIvZTJmc3Byb2dzL2xpYi91dWlkL0NPUFlJTkcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYxNzA2OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC9DT1BZSU5HCkBAIC0wLDAgKzEsMjUgQEAKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKK09GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy9saWIvdXVpZC9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjk4MTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMjE1IEBACisjIE1ha2VmaWxlIGZvciB0aGUgVVVJRCBsaWJyYXJ5CisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLi8uLgorbXlfZGlyID0gbGliL3V1aWQKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK2FsbDo6IAorCitTTUFOUEFHRVM9CXV1aWQuMyB1dWlkX2NsZWFyLjMgdXVpZF9jb21wYXJlLjMgdXVpZF9jb3B5LjMgXAorCQl1dWlkX2dlbmVyYXRlLjMgdXVpZF9pc19udWxsLjMgdXVpZF9wYXJzZS4zIFwKKwkJdXVpZF90aW1lLjMgdXVpZF91bnBhcnNlLjMKKworT0JKUz0JCWNsZWFyLm8gXAorCQljb21wYXJlLm8gXAorCQljb3B5Lm8gXAorCQlnZW5fdXVpZC5vIFwKKwkJaXNudWxsLm8gXAorCQlwYWNrLm8gXAorCQlwYXJzZS5vIFwKKwkJdW5wYWNrLm8gXAorCQl1bnBhcnNlLm8gXAorCQl1dWlkX3RpbWUubworCitTUkNTPQkJJChzcmNkaXIpL2NsZWFyLmMgXAorCQkkKHNyY2RpcikvY29tcGFyZS5jIFwKKwkJJChzcmNkaXIpL2NvcHkuYyBcCisJCSQoc3JjZGlyKS9nZW5fdXVpZC5jIFwKKwkJJChzcmNkaXIpL2lzbnVsbC5jIFwKKwkJJChzcmNkaXIpL3BhY2suYyBcCisJCSQoc3JjZGlyKS9wYXJzZS5jIFwKKwkJJChzcmNkaXIpL3VucGFjay5jIFwKKwkJJChzcmNkaXIpL3VucGFyc2UuYyBcCisJCSQoc3JjZGlyKS91dWlkX3RpbWUuYworCitMSUJSQVJZPSBsaWJ1dWlkCitMSUJESVI9IHV1aWQKKworRUxGX1ZFUlNJT04gPSAxLjIKK0VMRl9TT19WRVJTSU9OID0gMQorRUxGX0lNQUdFID0gbGlidXVpZAorRUxGX01ZRElSID0gdXVpZAorRUxGX0lOU1RBTExfRElSID0gJChyb290X2xpYmRpcikKK0VMRl9PVEhFUl9MSUJTID0gCisKK0JTRExJQl9WRVJTSU9OID0gMS4xCitCU0RMSUJfSU1BR0UgPSBsaWJ1dWlkCitCU0RMSUJfTVlESVIgPSB1dWlkCitCU0RMSUJfSU5TVEFMTF9ESVIgPSAkKHJvb3RfbGliZGlyKQorCitATUFLRUZJTEVfTElCUkFSWUAKK0BNQUtFRklMRV9FTEZACitATUFLRUZJTEVfQlNETElCQAorQE1BS0VGSUxFX1BST0ZJTEVACisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NUTElCKSAtYyAkPCAtbyAkQAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorQFBST0ZJTEVfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TVExJQikgLWcgLXBnIC1vIHByb2ZpbGVkLyQqLm8gLWMgJDwKK0BFTEZfQ01UQAkkKFEpICQoQ0MpICQoQUxMX0NGTEFHU19TSExJQikgLWZQSUMgLXNoYXJlZCAtbyBlbGZzaGFyZWQvJCoubyAtYyAkPAorQEJTRExJQl9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTX1NITElCKSAkKEJTRExJQl9QSUNfRkxBRykgLW8gcGljLyQqLm8gLWMgJDwKKworYWxsOjogdHN0X3V1aWQgdXVpZF90aW1lICQoU01BTlBBR0VTKSB1dWlkLnBjCisKK3V1aWQuaDogJChzcmNkaXIpL3V1aWQuaC5pbgorCSQoRSkgIglDUCAkQCIKKwkkKFEpIGNwICQoc3JjZGlyKS91dWlkLmguaW4gdXVpZC5oCisKKyQodG9wX2J1aWxkZGlyKS9saWIvdXVpZC91dWlkX3R5cGVzLmg6ICQoc3JjZGlyKS91dWlkX3R5cGVzLmguaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwljZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz0kKG15X2RpcikvdXVpZF90eXBlcy5oIC4vY29uZmlnLnN0YXR1cworCit0c3RfdXVpZC5vOiAkKHNyY2RpcikvdHN0X3V1aWQuYyB1dWlkLmgKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpIC1jICQoc3JjZGlyKS90c3RfdXVpZC5jIC1vIHRzdF91dWlkLm8KKwordHN0X3V1aWQ6IHRzdF91dWlkLm8gJChERVBTVEFUSUNfTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyB0c3RfdXVpZCB0c3RfdXVpZC5vICQoU1RBVElDX0xJQlVVSUQpCisKK3V1aWRfdGltZTogJChzcmNkaXIpL3V1aWRfdGltZS5jICQoREVQTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9DRkxBR1MpICQoTERGTEFHUykgLURERUJVRyAtbyB1dWlkX3RpbWUgXAorCQkkKHNyY2RpcikvdXVpZF90aW1lLmMgJChMSUJVVUlEKQorCit1dWlkLjM6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS91dWlkLjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZC4zLmluIHV1aWQuMworCit1dWlkX2NsZWFyLjM6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS91dWlkX2NsZWFyLjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZF9jbGVhci4zLmluIHV1aWRfY2xlYXIuMworCit1dWlkX2NvbXBhcmUuMzogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL3V1aWRfY29tcGFyZS4zLmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3V1aWRfY29tcGFyZS4zLmluIHV1aWRfY29tcGFyZS4zCisKK3V1aWRfY29weS4zOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvdXVpZF9jb3B5LjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZF9jb3B5LjMuaW4gdXVpZF9jb3B5LjMKKwordXVpZF9nZW5lcmF0ZS4zOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvdXVpZF9nZW5lcmF0ZS4zLmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3V1aWRfZ2VuZXJhdGUuMy5pbiB1dWlkX2dlbmVyYXRlLjMKKwordXVpZF9pc19udWxsLjM6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS91dWlkX2lzX251bGwuMy5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS91dWlkX2lzX251bGwuMy5pbiB1dWlkX2lzX251bGwuMworCit1dWlkX3BhcnNlLjM6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS91dWlkX3BhcnNlLjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZF9wYXJzZS4zLmluIHV1aWRfcGFyc2UuMworCit1dWlkX3RpbWUuMzogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL3V1aWRfdGltZS4zLmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3V1aWRfdGltZS4zLmluIHV1aWRfdGltZS4zCisKK3V1aWRfdW5wYXJzZS4zOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvdXVpZF91bnBhcnNlLjMuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZF91bnBhcnNlLjMuaW4gdXVpZF91bnBhcnNlLjMKKwordXVpZC5wYzogJChzcmNkaXIpL3V1aWQucGMuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwkkKEUpICIJQ09ORklHLlNUQVRVUyAkQCIKKwkkKFEpIGNkICQodG9wX2J1aWxkZGlyKTsgQ09ORklHX0ZJTEVTPWxpYi91dWlkL3V1aWQucGMgLi9jb25maWcuc3RhdHVzCisKK2luc3RhbGxkaXJzOjoKKwkkKEUpICIJTUtJTlNUQUxMRElSUyAkKGxpYmRpcikgJChpbmNsdWRlZGlyKS91dWlkICQobWFuM2RpcikiCisJJChRKSAkKE1LSU5TVEFMTERJUlMpICQoREVTVERJUikkKGxpYmRpcikgIFwKKwkJJChERVNURElSKSQoaW5jbHVkZWRpcikvdXVpZCAkKERFU1RESVIpJChtYW4zZGlyKSBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikKKworaW5zdGFsbDo6IGFsbCBpbnN0YWxsZGlycyAKKwkkKEUpICIJSU5TVEFMTF9EQVRBICQobGliZGlyKS9saWJ1dWlkLmEiCisJJChRKSAkKElOU1RBTExfREFUQSkgbGlidXVpZC5hICQoREVTVERJUikkKGxpYmRpcikvbGlidXVpZC5hCisJLSQoUSkgJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGlidXVpZC5hCisJJChRKSAkKENITU9EKSAkKExJQk1PREUpICQoREVTVERJUikkKGxpYmRpcikvbGlidXVpZC5hCisJJChFKSAiCUlOU1RBTExfREFUQSAkKGluY2x1ZGVkaXIpL3V1aWQvdXVpZC5oIgorCSQoUSkgJChJTlNUQUxMX0RBVEEpIHV1aWQuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS91dWlkL3V1aWQuaAorCSQoUSkgZm9yIGkgaW4gJChTTUFOUEFHRVMpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjNkaXIpLyQkaS5nejsgXAorCQllY2hvICIJSU5TVEFMTF9EQVRBICQobWFuM2RpcikvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKG1hbjNkaXIpLyQkaTsgXAorCWRvbmUKKwkkKFEpICQoUk0pIC1mICQoREVTVERJUikkKG1hbjNkaXIpL3V1aWRfZ2VuZXJhdGVfcmFuZG9tLjMuZ3ogXAorCQkkKERFU1RESVIpJChtYW4zZGlyKS91dWlkX2dlbmVyYXRlX3RpbWUuMy5negorCSQoRSkgIglMSU5LICQobWFuM2RpcikvdXVpZF9nZW5lcmF0ZV9yYW5kb20uMyIKKwkkKFEpIChjZCAkKERFU1RESVIpJChtYW4zZGlyKTsgXAorCSAgICAkKExOKSAkKExJTktfSU5TVEFMTF9GTEFHUykgdXVpZF9nZW5lcmF0ZS4zIHV1aWRfZ2VuZXJhdGVfcmFuZG9tLjMpCisJJChFKSAiCUxJTksgJChtYW4zZGlyKS91dWlkX2dlbmVyYXRlX3RpbWUuMyIKKwkkKFEpIChjZCAkKERFU1RESVIpJChtYW4zZGlyKTsgXAorCSAgICAkKExOKSAkKExJTktfSU5TVEFMTF9GTEFHUykgdXVpZF9nZW5lcmF0ZS4zIHV1aWRfZ2VuZXJhdGVfdGltZS4zKQorCSQoRSkgIglJTlNUQUxMX0RBVEEgJChwa2djb25maWdkaXIpL3V1aWQucGMiCisJJChRKSAkKElOU1RBTExfREFUQSkgdXVpZC5wYyAkKERFU1RESVIpJChwa2djb25maWdkaXIpL3V1aWQucGMKKwordW5pbnN0YWxsOjoKKwkkKFJNKSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYnV1aWQuYSBcCisJCSQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikvdXVpZC5wYworCWZvciBpIGluICQoU01BTlBBR0VTKTsgZG8gXAorCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW4zZGlyKS8kJGk7IFwKKwlkb25lCisJJChSTSkgLWYgJChERVNURElSKSQobWFuM2RpcikvdXVpZF9nZW5lcmF0ZV9yYW5kb20uMyAkKERFU1RESVIpJChtYW4zZGlyKS91dWlkX2dlbmVyYXRlX3RpbWUuMworCitjbGVhbjo6CisJJChSTSkgLWYgXCMqICoucyAqLm8gKi5hICp+ICouYmFrIGNvcmUgcHJvZmlsZWQvKiB1dWlkLmggXAorCQkuLi9saWJ1dWlkLmEgLi4vbGlidXVpZF9wLmEgdHN0X3V1aWQgdXVpZF90aW1lIFwKKwkJdXVpZC5wYyB1dWlkX3R5cGVzLmggJChTTUFOUEFHRVMpCisKK2NoZWNrOjogdHN0X3V1aWQKKwlMRF9MSUJSQVJZX1BBVEg9JChMSUIpIERZTERfTElCUkFSWV9QQVRIPSQoTElCKSAuL3RzdF91dWlkCisKK21vc3RseWNsZWFuOjogY2xlYW4KK2Rpc3RjbGVhbjo6IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBNYWtlZmlsZSB1dWlkLnBjIFwKKwkJJChzcmNkaXIpL1RBR1MgJChzcmNkaXIpL01ha2VmaWxlLmluLm9sZAorCisjCisjIEhhY2sgdG8gcGFyYWxsZWwgbWFrZXMgcmVjb2duaXplIGRlcGVuZGVuY2llcyBjb3JyZWN0bHkuCisjCisuLi8uLi9saWIvbGlidXVpZC5hOiBsaWJ1dWlkLmEKKy4uLy4uL2xpYi9saWJ1dWlkLnNvOiBpbWFnZQorLi4vLi4vbGliL2xpYnV1aWQuZHlsaWI6IGltYWdlCisKKyQoT0JKUyk6IHN1YmRpcnMgdXVpZC5oCisKKyMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysKKyMgCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpbgorIyB0aGUgTWFrZWZpbGUuaW4gZmlsZQorIworY2xlYXIubzogJChzcmNkaXIpL2NsZWFyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCitjb21wYXJlLm86ICQoc3JjZGlyKS9jb21wYXJlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCitjb3B5Lm86ICQoc3JjZGlyKS9jb3B5LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCitnZW5fdXVpZC5vOiAkKHNyY2RpcikvZ2VuX3V1aWQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3V1aWRQLmggJChzcmNkaXIpL3V1aWRkLmgKK2lzbnVsbC5vOiAkKHNyY2RpcikvaXNudWxsLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCitwYWNrLm86ICQoc3JjZGlyKS9wYWNrLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCitwYXJzZS5vOiAkKHNyY2RpcikvcGFyc2UuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3V1aWRQLmgKK3VucGFjay5vOiAkKHNyY2RpcikvdW5wYWNrLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCit1bnBhcnNlLm86ICQoc3JjZGlyKS91bnBhcnNlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS91dWlkUC5oCit1dWlkX3RpbWUubzogJChzcmNkaXIpL3V1aWRfdGltZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvdXVpZFAuaApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL2NsZWFyLmMgYi9lMmZzcHJvZ3MvbGliL3V1aWQvY2xlYXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzZmOGY3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL2NsZWFyLmMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIGNsZWFyLmMgLS0gQ2xlYXIgYSBVVUlECisgKgorICogQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICogICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICogICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICogICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQUxMIE9GCisgKiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVAorICogT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisgKiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInN0cmluZy5oIgorCisjaW5jbHVkZSAidXVpZFAuaCIKKwordm9pZCB1dWlkX2NsZWFyKHV1aWRfdCB1dSkKK3sKKwltZW1zZXQodXUsIDAsIDE2KTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL2NvbXBhcmUuYyBiL2UyZnNwcm9ncy9saWIvdXVpZC9jb21wYXJlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVmYzUwMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC9jb21wYXJlLmMKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIGNvbXBhcmUuYyAtLS0gY29tcGFyZSB3aGV0aGVyIG9yIG5vdCB0d28gVVVJRCdzIGFyZSB0aGUgc2FtZQorICoKKyAqIFJldHVybnMgMCBpZiB0aGUgdHdvIFVVSUQncyBhcmUgZGlmZmVyZW50LCBhbmQgMSBpZiB0aGV5IGFyZSB0aGUgc2FtZS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisgKiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisgKiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAqIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgKiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAqIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAidXVpZFAuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2RlZmluZSBVVUNNUCh1MSx1MikgaWYgKHUxICE9IHUyKSByZXR1cm4oKHUxIDwgdTIpID8gLTEgOiAxKTsKKworaW50IHV1aWRfY29tcGFyZShjb25zdCB1dWlkX3QgdXUxLCBjb25zdCB1dWlkX3QgdXUyKQoreworCXN0cnVjdCB1dWlkCXV1aWQxLCB1dWlkMjsKKworCXV1aWRfdW5wYWNrKHV1MSwgJnV1aWQxKTsKKwl1dWlkX3VucGFjayh1dTIsICZ1dWlkMik7CisKKwlVVUNNUCh1dWlkMS50aW1lX2xvdywgdXVpZDIudGltZV9sb3cpOworCVVVQ01QKHV1aWQxLnRpbWVfbWlkLCB1dWlkMi50aW1lX21pZCk7CisJVVVDTVAodXVpZDEudGltZV9oaV9hbmRfdmVyc2lvbiwgdXVpZDIudGltZV9oaV9hbmRfdmVyc2lvbik7CisJVVVDTVAodXVpZDEuY2xvY2tfc2VxLCB1dWlkMi5jbG9ja19zZXEpOworCXJldHVybiBtZW1jbXAodXVpZDEubm9kZSwgdXVpZDIubm9kZSwgNik7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9jb25maWd1cmUuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvY29uZmlndXJlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOTUwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvY29uZmlndXJlLmluCkBAIC0wLDAgKzEsMTAgQEAKK2RubAorZG5sICBOb3QgdXNlZCBub3csIGZvciB0aGUgZnV0dXJlIHdoZW4gdXVpZCBpcyBzZXBhcmF0ZWQgb3V0IGludG8gaXRzIAorZG5sIG93biBwYWNrYWdlLgorZG5sCitBQ19JTklUKGdlbl91dWlkLmMpCitBQ19QUkVSRVEoMi4xMikKKworQUNfQ0hFQ0tfSEVBREVSUyhzdGRsaWIuaCB1bmlzdGQuaCBzeXMvc29ja2lvLmggbmV0L2lmLmggbmV0aW5ldC9pbi5oKQorQUNfQ0hFQ0tfRlVOQ1Moc3JhbmRvbSkKK0FDX09VVFBVVChNYWtlZmlsZSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9jb3B5LmMgYi9lMmZzcHJvZ3MvbGliL3V1aWQvY29weS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZTZmNTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvY29weS5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBjb3B5LmMgLS0tIGNvcHkgVVVJRHMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisgKiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisgKiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAqIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgKiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAqIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAidXVpZFAuaCIKKwordm9pZCB1dWlkX2NvcHkodXVpZF90IGRzdCwgY29uc3QgdXVpZF90IHNyYykKK3sKKwl1bnNpZ25lZCBjaGFyCQkqY3AxOworCWNvbnN0IHVuc2lnbmVkIGNoYXIJKmNwMjsKKwlpbnQJCQlpOworCisJZm9yIChpPTAsIGNwMSA9IGRzdCwgY3AyID0gc3JjOyBpIDwgMTY7IGkrKykKKwkJKmNwMSsrID0gKmNwMisrOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL2dlbl91dWlkLmMgYi9lMmZzcHJvZ3MvbGliL3V1aWQvZ2VuX3V1aWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDI4YzdjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL2dlbl91dWlkLmMKQEAgLTAsMCArMSw2ODUgQEAKKy8qCisgKiBnZW5fdXVpZC5jIC0tLSBnZW5lcmF0ZSBhIERDRS1jb21wYXRpYmxlIHV1aWQKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisgKiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisgKiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAqIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgKiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAqIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogRm9yY2UgaW5jbHVzaW9uIG9mIFNWSUQgc3R1ZmYgc2luY2Ugd2UgbmVlZCBpdCBpZiB3ZSdyZSBjb21waWxpbmcgaW4KKyAqIGdjYy13YWxsIHdhbGwgbW9kZQorICovCisjZGVmaW5lIF9TVklEX1NPVVJDRQorI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UJICAvKiBzaW5jZSBnbGliYyAyLjIwIF9TVklEX1NPVVJDRSBpcyBkZXByZWNhdGVkICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAwCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBVVUlEIE1ZVVVJRAorI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZmRlZiBIQVZFX1NZU19GSUxFX0gKKyNpbmNsdWRlIDxzeXMvZmlsZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19VTl9ICisjaW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLSU9fSAorI2luY2x1ZGUgPHN5cy9zb2NraW8uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfRExfSAorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorI2VuZGlmCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoSEFWRV9TWVNfU1lTQ0FMTF9IKQorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjZW5kaWYKKworI2luY2x1ZGUgInV1aWRQLmgiCisjaW5jbHVkZSAidXVpZGQuaCIKKworI2lmZGVmIEhBVkVfU1JBTkRPTQorI2RlZmluZSBzcmFuZCh4KSAJc3JhbmRvbSh4KQorI2RlZmluZSByYW5kKCkgCQlyYW5kb20oKQorI2VuZGlmCisKKyNpZmRlZiBUTFMKKyNkZWZpbmUgVEhSRUFEX0xPQ0FMIHN0YXRpYyBUTFMKKyNlbHNlCisjZGVmaW5lIFRIUkVBRF9MT0NBTCBzdGF0aWMKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoX19OUl9nZXR0aWQpICYmIGRlZmluZWQoSEFWRV9KUkFORDQ4KQorI2RlZmluZSBET19KUkFORF9NSVgKK1RIUkVBRF9MT0NBTCB1bnNpZ25lZCBzaG9ydCBqcmFuZF9zZWVkWzNdOworI2VuZGlmCisKKyNpZmRlZiBfV0lOMzIKK3N0YXRpYyB2b2lkIGdldHRpbWVvZmRheSAoc3RydWN0IHRpbWV2YWwgKnR2LCB2b2lkICpkdW1teSkKK3sKKwlGSUxFVElNRQlmdGltZTsKKwl1aW50NjRfdAluOworCisJR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUgKCZmdGltZSk7CisJbiA9ICgoKHVpbnQ2NF90KSBmdGltZS5kd0hpZ2hEYXRlVGltZSA8PCAzMikKKwkgICAgICsgKHVpbnQ2NF90KSBmdGltZS5kd0xvd0RhdGVUaW1lKTsKKwlpZiAobikgeworCQluIC89IDEwOworCQluIC09ICgoMzY5ICogMzY1ICsgODkpICogKHVpbnQ2NF90KSA4NjQwMCkgKiAxMDAwMDAwOworCX0KKworCXR2LT50dl9zZWMgPSBuIC8gMTAwMDAwMDsKKwl0di0+dHZfdXNlYyA9IG4gJSAxMDAwMDAwOworfQorCitzdGF0aWMgaW50IGdldHVpZCAodm9pZCkKK3sKKwlyZXR1cm4gMTsKK30KKyNlbmRpZgorCitzdGF0aWMgaW50IGdldF9yYW5kb21fZmQodm9pZCkKK3sKKwlzdHJ1Y3QgdGltZXZhbAl0djsKKwlzdGF0aWMgaW50CWZkID0gLTI7CisJaW50CQlpOworCisJaWYgKGZkID09IC0yKSB7CisJCWdldHRpbWVvZmRheSgmdHYsIDApOworI2lmbmRlZiBfV0lOMzIKKwkJZmQgPSBvcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisJCWlmIChmZCA9PSAtMSkKKwkJCWZkID0gb3BlbigiL2Rldi9yYW5kb20iLCBPX1JET05MWSB8IE9fTk9OQkxPQ0spOworCQlpZiAoZmQgPj0gMCkgeworCQkJaSA9IGZjbnRsKGZkLCBGX0dFVEZEKTsKKwkJCWlmIChpID49IDApCisJCQkJZmNudGwoZmQsIEZfU0VURkQsIGkgfCBGRF9DTE9FWEVDKTsKKwkJfQorI2VuZGlmCisJCXNyYW5kKChnZXRwaWQoKSA8PCAxNikgXiBnZXR1aWQoKSBeIHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpOworI2lmZGVmIERPX0pSQU5EX01JWAorCQlqcmFuZF9zZWVkWzBdID0gZ2V0cGlkKCkgXiAodHYudHZfc2VjICYgMHhGRkZGKTsKKwkJanJhbmRfc2VlZFsxXSA9IGdldHBwaWQoKSBeICh0di50dl91c2VjICYgMHhGRkZGKTsKKwkJanJhbmRfc2VlZFsyXSA9ICh0di50dl9zZWMgXiB0di50dl91c2VjKSA+PiAxNjsKKyNlbmRpZgorCX0KKwkvKiBDcmFuayB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYSBmZXcgdGltZXMgKi8KKwlnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKwlmb3IgKGkgPSAodHYudHZfc2VjIF4gdHYudHZfdXNlYykgJiAweDFGOyBpID4gMDsgaS0tKQorCQlyYW5kKCk7CisJcmV0dXJuIGZkOworfQorCisKKy8qCisgKiBHZW5lcmF0ZSBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuICBVc2UgL2Rldi91cmFuZG9tIGlmIHBvc3NpYmxlLAorICogYW5kIGlmIG5vdCwgdXNlIHNyYW5kb20vcmFuZG9tLgorICovCitzdGF0aWMgdm9pZCBnZXRfcmFuZG9tX2J5dGVzKHZvaWQgKmJ1ZiwgaW50IG5ieXRlcykKK3sKKwlpbnQgaSwgbiA9IG5ieXRlcywgZmQgPSBnZXRfcmFuZG9tX2ZkKCk7CisJaW50IGxvc2VfY291bnRlciA9IDA7CisJdW5zaWduZWQgY2hhciAqY3AgPSBidWY7CisKKwlpZiAoZmQgPj0gMCkgeworCQl3aGlsZSAobiA+IDApIHsKKwkJCWkgPSByZWFkKGZkLCBjcCwgbik7CisJCQlpZiAoaSA8PSAwKSB7CisJCQkJaWYgKGxvc2VfY291bnRlcisrID4gMTYpCisJCQkJCWJyZWFrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJbiAtPSBpOworCQkJY3AgKz0gaTsKKwkJCWxvc2VfY291bnRlciA9IDA7CisJCX0KKwl9CisKKwkvKgorCSAqIFdlIGRvIHRoaXMgYWxsIHRoZSB0aW1lLCBidXQgdGhpcyBpcyB0aGUgb25seSBzb3VyY2Ugb2YKKwkgKiByYW5kb21uZXNzIGlmIC9kZXYvcmFuZG9tL3VyYW5kb20gaXMgb3V0IHRvIGx1bmNoLgorCSAqLworCWZvciAoY3AgPSBidWYsIGkgPSAwOyBpIDwgbmJ5dGVzOyBpKyspCisJCSpjcCsrIF49IChyYW5kKCkgPj4gNykgJiAweEZGOworI2lmZGVmIERPX0pSQU5EX01JWAorCXsKKwkJdW5zaWduZWQgc2hvcnQgdG1wX3NlZWRbM107CisKKwkJbWVtY3B5KHRtcF9zZWVkLCBqcmFuZF9zZWVkLCBzaXplb2YodG1wX3NlZWQpKTsKKwkJanJhbmRfc2VlZFsyXSA9IGpyYW5kX3NlZWRbMl0gXiBzeXNjYWxsKF9fTlJfZ2V0dGlkKTsKKwkJZm9yIChjcCA9IGJ1ZiwgaSA9IDA7IGkgPCBuYnl0ZXM7IGkrKykKKwkJCSpjcCsrIF49IChqcmFuZDQ4KHRtcF9zZWVkKSA+PiA3KSAmIDB4RkY7CisJCW1lbWNweShqcmFuZF9zZWVkLCB0bXBfc2VlZCwKKwkJICAgICAgIHNpemVvZihqcmFuZF9zZWVkKSAtIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOworCX0KKyNlbmRpZgorCisJcmV0dXJuOworfQorCisvKgorICogR2V0IHRoZSBldGhlcm5ldCBoYXJkd2FyZSBhZGRyZXNzLCBpZiB3ZSBjYW4gZmluZCBpdC4uLgorICoKKyAqIFhYWCBmb3IgYSB3aW5kb3dzIHZlcnNpb24sIHByb2JhYmx5IHNob3VsZCB1c2UgR2V0QWRhcHRlcnNJbmZvOgorICogaHR0cDovL3d3dy5jb2RlZ3VydS5jb20vY3BwL2ktbi9uZXR3b3JrL25ldHdvcmtpbmZvcm1hdGlvbi9hcnRpY2xlLnBocC9jNTQ1MQorICogY29tbWVudGluZyBvdXQgZ2V0X25vZGVfaWQganVzdCB0byBnZXQgZ2VuX3V1aWQgdG8gY29tcGlsZSB1bmRlciB3aW5kb3dzCisgKiBpcyBub3QgdGhlIHJpZ2h0IHdheSB0byBnbyEKKyAqLworc3RhdGljIGludCBnZXRfbm9kZV9pZCh1bnNpZ25lZCBjaGFyICpub2RlX2lkKQoreworI2lmZGVmIEhBVkVfTkVUX0lGX0gKKwlpbnQgCQlzZDsKKwlzdHJ1Y3QgaWZyZXEgCWlmciwgKmlmcnA7CisJc3RydWN0IGlmY29uZiAJaWZjOworCWNoYXIgYnVmWzEwMjRdOworCWludAkJbiwgaTsKKwl1bnNpZ25lZCBjaGFyIAkqYTsKKyNpZmRlZiBIQVZFX05FVF9JRl9ETF9ICisJc3RydWN0IHNvY2thZGRyX2RsICpzZGxwOworI2VuZGlmCisKKy8qCisgKiBCU0QgNC40IGRlZmluZXMgdGhlIHNpemUgb2YgYW4gaWZyZXEgdG8gYmUKKyAqIG1heChzaXplb2YoaWZyZXEpLCBzaXplb2YoaWZyZXEuaWZyX25hbWUpK2lmcmVxLmlmcl9hZGRyLnNhX2xlbgorICogSG93ZXZlciwgdW5kZXIgZWFybGllciBzeXN0ZW1zLCBzYV9sZW4gaXNuJ3QgcHJlc2VudCwgc28gdGhlIHNpemUgaXMKKyAqIGp1c3Qgc2l6ZW9mKHN0cnVjdCBpZnJlcSkKKyAqLworI2lmZGVmIEhBVkVfU0FfTEVOCisjaWZuZGVmIG1heAorI2RlZmluZSBtYXgoYSxiKSAoKGEpID4gKGIpID8gKGEpIDogKGIpKQorI2VuZGlmCisjZGVmaW5lIGlmcmVxX3NpemUoaSkgbWF4KHNpemVvZihzdHJ1Y3QgaWZyZXEpLFwKKyAgICAgc2l6ZW9mKChpKS5pZnJfbmFtZSkrKGkpLmlmcl9hZGRyLnNhX2xlbikKKyNlbHNlCisjZGVmaW5lIGlmcmVxX3NpemUoaSkgc2l6ZW9mKHN0cnVjdCBpZnJlcSkKKyNlbmRpZiAvKiBIQVZFX1NBX0xFTiovCisKKwlzZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX0lQKTsKKwlpZiAoc2QgPCAwKSB7CisJCXJldHVybiAtMTsKKwl9CisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworCWlmYy5pZmNfbGVuID0gc2l6ZW9mKGJ1Zik7CisJaWZjLmlmY19idWYgPSBidWY7CisJaWYgKGlvY3RsIChzZCwgU0lPQ0dJRkNPTkYsIChjaGFyICopJmlmYykgPCAwKSB7CisJCWNsb3NlKHNkKTsKKwkJcmV0dXJuIC0xOworCX0KKwluID0gaWZjLmlmY19sZW47CisJZm9yIChpID0gMDsgaSA8IG47IGkrPSBpZnJlcV9zaXplKCppZnJwKSApIHsKKwkJaWZycCA9IChzdHJ1Y3QgaWZyZXEgKikoKGNoYXIgKikgaWZjLmlmY19idWYraSk7CisJCXN0cm5jcHkoaWZyLmlmcl9uYW1lLCBpZnJwLT5pZnJfbmFtZSwgSUZOQU1TSVopOworI2lmZGVmIFNJT0NHSUZIV0FERFIKKwkJaWYgKGlvY3RsKHNkLCBTSU9DR0lGSFdBRERSLCAmaWZyKSA8IDApCisJCQljb250aW51ZTsKKwkJYSA9ICh1bnNpZ25lZCBjaGFyICopICZpZnIuaWZyX2h3YWRkci5zYV9kYXRhOworI2Vsc2UKKyNpZmRlZiBTSU9DR0VOQUREUgorCQlpZiAoaW9jdGwoc2QsIFNJT0NHRU5BRERSLCAmaWZyKSA8IDApCisJCQljb250aW51ZTsKKwkJYSA9ICh1bnNpZ25lZCBjaGFyICopIGlmci5pZnJfZW5hZGRyOworI2Vsc2UKKyNpZmRlZiBIQVZFX05FVF9JRl9ETF9ICisJCXNkbHAgPSAoc3RydWN0IHNvY2thZGRyX2RsICopICZpZnJwLT5pZnJfYWRkcjsKKwkJaWYgKChzZGxwLT5zZGxfZmFtaWx5ICE9IEFGX0xJTkspIHx8IChzZGxwLT5zZGxfYWxlbiAhPSA2KSkKKwkJCWNvbnRpbnVlOworCQlhID0gKHVuc2lnbmVkIGNoYXIgKikgJnNkbHAtPnNkbF9kYXRhW3NkbHAtPnNkbF9ubGVuXTsKKyNlbHNlCisJCS8qCisJCSAqIFhYWCB3ZSBkb24ndCBoYXZlIGEgd2F5IG9mIGdldHRpbmcgdGhlIGhhcmR3YXJlCisJCSAqIGFkZHJlc3MKKwkJICovCisJCWNsb3NlKHNkKTsKKwkJcmV0dXJuIDA7CisjZW5kaWYgLyogSEFWRV9ORVRfSUZfRExfSCAqLworI2VuZGlmIC8qIFNJT0NHRU5BRERSICovCisjZW5kaWYgLyogU0lPQ0dJRkhXQUREUiAqLworCQlpZiAoIWFbMF0gJiYgIWFbMV0gJiYgIWFbMl0gJiYgIWFbM10gJiYgIWFbNF0gJiYgIWFbNV0pCisJCQljb250aW51ZTsKKwkJaWYgKG5vZGVfaWQpIHsKKwkJCW1lbWNweShub2RlX2lkLCBhLCA2KTsKKwkJCWNsb3NlKHNkKTsKKwkJCXJldHVybiAxOworCQl9CisJfQorCWNsb3NlKHNkKTsKKyNlbmRpZgorCXJldHVybiAwOworfQorCisvKiBBc3N1bWUgdGhhdCB0aGUgZ2V0dGltZW9mZGF5KCkgaGFzIG1pY3Jvc2Vjb25kIGdyYW51bGFyaXR5ICovCisjZGVmaW5lIE1BWF9BREpVU1RNRU5UIDEwCisKK3N0YXRpYyBpbnQgZ2V0X2Nsb2NrKHVpbnQzMl90ICpjbG9ja19oaWdoLCB1aW50MzJfdCAqY2xvY2tfbG93LAorCQkgICAgIHVpbnQxNl90ICpyZXRfY2xvY2tfc2VxLCBpbnQgKm51bSkKK3sKKwlUSFJFQURfTE9DQUwgaW50CQlhZGp1c3RtZW50ID0gMDsKKwlUSFJFQURfTE9DQUwgc3RydWN0IHRpbWV2YWwJbGFzdCA9IHswLCAwfTsKKwlUSFJFQURfTE9DQUwgaW50CQlzdGF0ZV9mZCA9IC0yOworCVRIUkVBRF9MT0NBTCBGSUxFCQkqc3RhdGVfZjsKKwlUSFJFQURfTE9DQUwgdWludDE2X3QJCWNsb2NrX3NlcTsKKwlzdHJ1Y3QgdGltZXZhbCAJCQl0djsKKwlzdHJ1Y3QgZmxvY2sJCQlmbDsKKwl1aW50NjRfdAkJCWNsb2NrX3JlZzsKKwltb2RlX3QJCQkJc2F2ZV91bWFzazsKKwlpbnQJCQkJbGVuOworCisJaWYgKHN0YXRlX2ZkID09IC0yKSB7CisJCXNhdmVfdW1hc2sgPSB1bWFzaygwKTsKKwkJc3RhdGVfZmQgPSBvcGVuKCIvdmFyL2xpYi9saWJ1dWlkL2Nsb2NrLnR4dCIsCisJCQkJT19SRFdSfE9fQ1JFQVQsIDA2NjApOworCQkodm9pZCkgdW1hc2soc2F2ZV91bWFzayk7CisJCWlmIChzdGF0ZV9mZCA+PSAwKSB7CisJCQlzdGF0ZV9mID0gZmRvcGVuKHN0YXRlX2ZkLCAicisiKTsKKwkJCWlmICghc3RhdGVfZikgeworCQkJCWNsb3NlKHN0YXRlX2ZkKTsKKwkJCQlzdGF0ZV9mZCA9IC0xOworCQkJfQorCQl9CisJfQorCWZsLmxfdHlwZSA9IEZfV1JMQ0s7CisJZmwubF93aGVuY2UgPSBTRUVLX1NFVDsKKwlmbC5sX3N0YXJ0ID0gMDsKKwlmbC5sX2xlbiA9IDA7CisJZmwubF9waWQgPSAwOworCWlmIChzdGF0ZV9mZCA+PSAwKSB7CisJCXJld2luZChzdGF0ZV9mKTsKKwkJd2hpbGUgKGZjbnRsKHN0YXRlX2ZkLCBGX1NFVExLVywgJmZsKSA8IDApIHsKKwkJCWlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUlOVFIpKQorCQkJCWNvbnRpbnVlOworCQkJZmNsb3NlKHN0YXRlX2YpOworCQkJc3RhdGVfZmQgPSAtMTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChzdGF0ZV9mZCA+PSAwKSB7CisJCXVuc2lnbmVkIGludCBjbDsKKwkJdW5zaWduZWQgbG9uZyB0djEsIHR2MjsKKwkJaW50IGE7CisKKwkJaWYgKGZzY2FuZihzdGF0ZV9mLCAiY2xvY2s6ICUwNHggdHY6ICVsdSAlbHUgYWRqOiAlZFxuIiwKKwkJCSAgICZjbCwgJnR2MSwgJnR2MiwgJmEpID09IDQpIHsKKwkJCWNsb2NrX3NlcSA9IGNsICYgMHgzRkZGOworCQkJbGFzdC50dl9zZWMgPSB0djE7CisJCQlsYXN0LnR2X3VzZWMgPSB0djI7CisJCQlhZGp1c3RtZW50ID0gYTsKKwkJfQorCX0KKworCWlmICgobGFzdC50dl9zZWMgPT0gMCkgJiYgKGxhc3QudHZfdXNlYyA9PSAwKSkgeworCQlnZXRfcmFuZG9tX2J5dGVzKCZjbG9ja19zZXEsIHNpemVvZihjbG9ja19zZXEpKTsKKwkJY2xvY2tfc2VxICY9IDB4M0ZGRjsKKwkJZ2V0dGltZW9mZGF5KCZsYXN0LCAwKTsKKwkJbGFzdC50dl9zZWMtLTsKKwl9CisKK3RyeV9hZ2FpbjoKKwlnZXR0aW1lb2ZkYXkoJnR2LCAwKTsKKwlpZiAoKHR2LnR2X3NlYyA8IGxhc3QudHZfc2VjKSB8fAorCSAgICAoKHR2LnR2X3NlYyA9PSBsYXN0LnR2X3NlYykgJiYKKwkgICAgICh0di50dl91c2VjIDwgbGFzdC50dl91c2VjKSkpIHsKKwkJY2xvY2tfc2VxID0gKGNsb2NrX3NlcSsxKSAmIDB4M0ZGRjsKKwkJYWRqdXN0bWVudCA9IDA7CisJCWxhc3QgPSB0djsKKwl9IGVsc2UgaWYgKCh0di50dl9zZWMgPT0gbGFzdC50dl9zZWMpICYmCisJICAgICh0di50dl91c2VjID09IGxhc3QudHZfdXNlYykpIHsKKwkJaWYgKGFkanVzdG1lbnQgPj0gTUFYX0FESlVTVE1FTlQpCisJCQlnb3RvIHRyeV9hZ2FpbjsKKwkJYWRqdXN0bWVudCsrOworCX0gZWxzZSB7CisJCWFkanVzdG1lbnQgPSAwOworCQlsYXN0ID0gdHY7CisJfQorCisJY2xvY2tfcmVnID0gdHYudHZfdXNlYyoxMCArIGFkanVzdG1lbnQ7CisJY2xvY2tfcmVnICs9ICgodWludDY0X3QpIHR2LnR2X3NlYykqMTAwMDAwMDA7CisJY2xvY2tfcmVnICs9ICgoKHVpbnQ2NF90KSAweDAxQjIxREQyKSA8PCAzMikgKyAweDEzODE0MDAwOworCisJaWYgKG51bSAmJiAoKm51bSA+IDEpKSB7CisJCWFkanVzdG1lbnQgKz0gKm51bSAtIDE7CisJCWxhc3QudHZfdXNlYyArPSBhZGp1c3RtZW50IC8gMTA7CisJCWFkanVzdG1lbnQgPSBhZGp1c3RtZW50ICUgMTA7CisJCWxhc3QudHZfc2VjICs9IGxhc3QudHZfdXNlYyAvIDEwMDAwMDA7CisJCWxhc3QudHZfdXNlYyA9IGxhc3QudHZfdXNlYyAlIDEwMDAwMDA7CisJfQorCisJaWYgKHN0YXRlX2ZkID4gMCkgeworCQlyZXdpbmQoc3RhdGVfZik7CisJCWxlbiA9IGZwcmludGYoc3RhdGVfZiwKKwkJCSAgICAgICJjbG9jazogJTA0eCB0djogJTAxNmx1ICUwOGx1IGFkajogJTA4ZFxuIiwKKwkJCSAgICAgIGNsb2NrX3NlcSwgbGFzdC50dl9zZWMsIChsb25nKWxhc3QudHZfdXNlYywKKwkJCSAgICAgIGFkanVzdG1lbnQpOworCQlmZmx1c2goc3RhdGVfZik7CisJCWlmIChmdHJ1bmNhdGUoc3RhdGVfZmQsIGxlbikgPCAwKSB7CisJCQlmcHJpbnRmKHN0YXRlX2YsICIgICAgICAgICAgICAgICAgICAgXG4iKTsKKwkJCWZmbHVzaChzdGF0ZV9mKTsKKwkJfQorCQlyZXdpbmQoc3RhdGVfZik7CisJCWZsLmxfdHlwZSA9IEZfVU5MQ0s7CisJCWlmIChmY250bChzdGF0ZV9mZCwgRl9TRVRMSywgJmZsKSA8IDApIHsKKwkJCWZjbG9zZShzdGF0ZV9mKTsKKwkJCXN0YXRlX2ZkID0gLTE7CisJCX0KKwl9CisKKwkqY2xvY2tfaGlnaCA9IGNsb2NrX3JlZyA+PiAzMjsKKwkqY2xvY2tfbG93ID0gY2xvY2tfcmVnOworCSpyZXRfY2xvY2tfc2VxID0gY2xvY2tfc2VxOworCXJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChVU0VfVVVJREQpICYmIGRlZmluZWQoSEFWRV9TWVNfVU5fSCkKK3N0YXRpYyBzc2l6ZV90IHJlYWRfYWxsKGludCBmZCwgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3NpemVfdCByZXQ7CisJc3NpemVfdCBjID0gMDsKKwlpbnQgdHJpZXMgPSAwOworCisJbWVtc2V0KGJ1ZiwgMCwgY291bnQpOworCXdoaWxlIChjb3VudCA+IDApIHsKKwkJcmV0ID0gcmVhZChmZCwgYnVmLCBjb3VudCk7CisJCWlmIChyZXQgPD0gMCkgeworCQkJaWYgKChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIgfHwgcmV0ID09IDApICYmCisJCQkgICAgKHRyaWVzKysgPCA1KSkKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiBjID8gYyA6IC0xOworCQl9CisJCWlmIChyZXQgPiAwKQorCQkJdHJpZXMgPSAwOworCQljb3VudCAtPSByZXQ7CisJCWJ1ZiArPSByZXQ7CisJCWMgKz0gcmV0OworCX0KKwlyZXR1cm4gYzsKK30KKworLyoKKyAqIENsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzCisgKi8KK3N0YXRpYyB2b2lkIGNsb3NlX2FsbF9mZHModm9pZCkKK3sKKwlpbnQgaSwgbWF4OworCisjaWYgZGVmaW5lZChIQVZFX1NZU0NPTkYpICYmIGRlZmluZWQoX1NDX09QRU5fTUFYKQorCW1heCA9IHN5c2NvbmYoX1NDX09QRU5fTUFYKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9HRVREVEFCTEVTSVpFKQorCW1heCA9IGdldGR0YWJsZXNpemUoKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9HRVRSTElNSVQpICYmIGRlZmluZWQoUkxJTUlUX05PRklMRSkKKwlzdHJ1Y3QgcmxpbWl0IHJsOworCisJZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZybCk7CisJbWF4ID0gcmwucmxpbV9jdXI7CisjZWxzZQorCW1heCA9IE9QRU5fTUFYOworI2VuZGlmCisKKwlmb3IgKGk9MDsgaSA8IG1heDsgaSsrKSB7CisJCWNsb3NlKGkpOworCQlpZiAoaSA8PSAyKQorCQkJb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKTsKKwl9Cit9CisjZW5kaWYgLyogZGVmaW5lZChVU0VfVVVJREQpICYmIGRlZmluZWQoSEFWRV9TWVNfVU5fSCkgKi8KKworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjaWYgIWRlZmluZWQoVVNFX1VVSUREKSB8fCAhZGVmaW5lZChIQVZFX1NZU19VTl9IKQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1wYXJhbWV0ZXIiCisjZW5kaWYKKy8qCisgKiBUcnkgdXNpbmcgdGhlIHV1aWRkIGRhZW1vbiB0byBnZW5lcmF0ZSB0aGUgVVVJRAorICoKKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWlsdXJlLgorICovCitzdGF0aWMgaW50IGdldF91dWlkX3ZpYV9kYWVtb24oaW50IG9wLCB1dWlkX3Qgb3V0LCBpbnQgKm51bSkKK3sKKyNpZiBkZWZpbmVkKFVTRV9VVUlERCkgJiYgZGVmaW5lZChIQVZFX1NZU19VTl9IKQorCWNoYXIgb3BfYnVmWzY0XTsKKwlpbnQgb3BfbGVuOworCWludCBzOworCXNzaXplX3QgcmV0OworCWludDMyX3QgcmVwbHlfbGVuID0gMCwgZXhwZWN0ZWQgPSAxNjsKKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gc3J2X2FkZHI7CisJc3RydWN0IHN0YXQgc3Q7CisJcGlkX3QgcGlkOworCXN0YXRpYyBjb25zdCBjaGFyICp1dWlkZF9wYXRoID0gVVVJRERfUEFUSDsKKwlzdGF0aWMgaW50IGFjY2Vzc19yZXQgPSAtMjsKKwlzdGF0aWMgaW50IHN0YXJ0X2F0dGVtcHRzID0gMDsKKworCWlmICgocyA9IHNvY2tldChBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCkpIDwgMCkKKwkJcmV0dXJuIC0xOworCisJc3J2X2FkZHIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CisJc3RyY3B5KHNydl9hZGRyLnN1bl9wYXRoLCBVVUlERF9TT0NLRVRfUEFUSCk7CisKKwlpZiAoY29ubmVjdChzLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopICZzcnZfYWRkciwKKwkJICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKSA8IDApIHsKKwkJaWYgKGFjY2Vzc19yZXQgPT0gLTIpCisJCQlhY2Nlc3NfcmV0ID0gYWNjZXNzKHV1aWRkX3BhdGgsIFhfT0spOworCQlpZiAoYWNjZXNzX3JldCA9PSAwKQorCQkJYWNjZXNzX3JldCA9IHN0YXQodXVpZGRfcGF0aCwgJnN0KTsKKwkJaWYgKGFjY2Vzc19yZXQgPT0gMCAmJiAoc3Quc3RfbW9kZSAmIChTX0lTVUlEIHwgU19JU0dJRCkpID09IDApCisJCQlhY2Nlc3NfcmV0ID0gYWNjZXNzKFVVSUREX0RJUiwgV19PSyk7CisJCWlmIChhY2Nlc3NfcmV0ID09IDAgJiYgc3RhcnRfYXR0ZW1wdHMrKyA8IDUpIHsKKwkJCWlmICgocGlkID0gZm9yaygpKSA9PSAwKSB7CisJCQkJY2xvc2VfYWxsX2ZkcygpOworCQkJCWV4ZWNsKHV1aWRkX3BhdGgsICJ1dWlkZCIsICItcVQiLCAiMzAwIiwKKwkJCQkgICAgICAoY2hhciAqKSBOVUxMKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJKHZvaWQpIHdhaXRwaWQocGlkLCAwLCAwKTsKKwkJCWlmIChjb25uZWN0KHMsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikgJnNydl9hZGRyLAorCQkJCSAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3VuKSkgPCAwKQorCQkJCWdvdG8gZmFpbDsKKwkJfSBlbHNlCisJCQlnb3RvIGZhaWw7CisJfQorCW9wX2J1ZlswXSA9IG9wOworCW9wX2xlbiA9IDE7CisJaWYgKG9wID09IFVVSUREX09QX0JVTEtfVElNRV9VVUlEKSB7CisJCW1lbWNweShvcF9idWYrMSwgbnVtLCBzaXplb2YoKm51bSkpOworCQlvcF9sZW4gKz0gc2l6ZW9mKCpudW0pOworCQlleHBlY3RlZCArPSBzaXplb2YoKm51bSk7CisJfQorCisJcmV0ID0gd3JpdGUocywgb3BfYnVmLCBvcF9sZW4pOworCWlmIChyZXQgPCAxKQorCQlnb3RvIGZhaWw7CisKKwlyZXQgPSByZWFkX2FsbChzLCAoY2hhciAqKSAmcmVwbHlfbGVuLCBzaXplb2YocmVwbHlfbGVuKSk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gZmFpbDsKKworCWlmIChyZXBseV9sZW4gIT0gZXhwZWN0ZWQpCisJCWdvdG8gZmFpbDsKKworCXJldCA9IHJlYWRfYWxsKHMsIG9wX2J1ZiwgcmVwbHlfbGVuKTsKKworCWlmIChvcCA9PSBVVUlERF9PUF9CVUxLX1RJTUVfVVVJRCkKKwkJbWVtY3B5KG9wX2J1ZisxNiwgbnVtLCBzaXplb2YoaW50KSk7CisKKwltZW1jcHkob3V0LCBvcF9idWYsIDE2KTsKKworCWNsb3NlKHMpOworCXJldHVybiAoKHJldCA9PSBleHBlY3RlZCkgPyAwIDogLTEpOworCitmYWlsOgorCWNsb3NlKHMpOworI2VuZGlmCisJcmV0dXJuIC0xOworfQorI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKwordm9pZCB1dWlkX19nZW5lcmF0ZV90aW1lKHV1aWRfdCBvdXQsIGludCAqbnVtKQoreworCXN0YXRpYyB1bnNpZ25lZCBjaGFyIG5vZGVfaWRbNl07CisJc3RhdGljIGludCBoYXNfaW5pdCA9IDA7CisJc3RydWN0IHV1aWQgdXU7CisJdWludDMyX3QJY2xvY2tfbWlkOworCisJaWYgKCFoYXNfaW5pdCkgeworCQlpZiAoZ2V0X25vZGVfaWQobm9kZV9pZCkgPD0gMCkgeworCQkJZ2V0X3JhbmRvbV9ieXRlcyhub2RlX2lkLCA2KTsKKwkJCS8qCisJCQkgKiBTZXQgbXVsdGljYXN0IGJpdCwgdG8gcHJldmVudCBjb25mbGljdHMKKwkJCSAqIHdpdGggSUVFRSA4MDIgYWRkcmVzc2VzIG9idGFpbmVkIGZyb20KKwkJCSAqIG5ldHdvcmsgY2FyZHMKKwkJCSAqLworCQkJbm9kZV9pZFswXSB8PSAweDAxOworCQl9CisJCWhhc19pbml0ID0gMTsKKwl9CisJZ2V0X2Nsb2NrKCZjbG9ja19taWQsICZ1dS50aW1lX2xvdywgJnV1LmNsb2NrX3NlcSwgbnVtKTsKKwl1dS5jbG9ja19zZXEgfD0gMHg4MDAwOworCXV1LnRpbWVfbWlkID0gKHVpbnQxNl90KSBjbG9ja19taWQ7CisJdXUudGltZV9oaV9hbmRfdmVyc2lvbiA9ICgoY2xvY2tfbWlkID4+IDE2KSAmIDB4MEZGRikgfCAweDEwMDA7CisJbWVtY3B5KHV1Lm5vZGUsIG5vZGVfaWQsIDYpOworCXV1aWRfcGFjaygmdXUsIG91dCk7Cit9CisKK3ZvaWQgdXVpZF9nZW5lcmF0ZV90aW1lKHV1aWRfdCBvdXQpCit7CisjaWZkZWYgVExTCisJVEhSRUFEX0xPQ0FMIGludAkJbnVtID0gMDsKKwlUSFJFQURfTE9DQUwgc3RydWN0IHV1aWQJdXU7CisJVEhSRUFEX0xPQ0FMIHRpbWVfdAkJbGFzdF90aW1lID0gMDsKKwl0aW1lX3QJCQkJbm93OworCisJaWYgKG51bSA+IDApIHsKKwkJbm93ID0gdGltZSgwKTsKKwkJaWYgKG5vdyA+IGxhc3RfdGltZSsxKQorCQkJbnVtID0gMDsKKwl9CisJaWYgKG51bSA8PSAwKSB7CisJCW51bSA9IDEwMDA7CisJCWlmIChnZXRfdXVpZF92aWFfZGFlbW9uKFVVSUREX09QX0JVTEtfVElNRV9VVUlELAorCQkJCQlvdXQsICZudW0pID09IDApIHsKKwkJCWxhc3RfdGltZSA9IHRpbWUoMCk7CisJCQl1dWlkX3VucGFjayhvdXQsICZ1dSk7CisJCQludW0tLTsKKwkJCXJldHVybjsKKwkJfQorCQludW0gPSAwOworCX0KKwlpZiAobnVtID4gMCkgeworCQl1dS50aW1lX2xvdysrOworCQlpZiAodXUudGltZV9sb3cgPT0gMCkgeworCQkJdXUudGltZV9taWQrKzsKKwkJCWlmICh1dS50aW1lX21pZCA9PSAwKQorCQkJCXV1LnRpbWVfaGlfYW5kX3ZlcnNpb24rKzsKKwkJfQorCQludW0tLTsKKwkJdXVpZF9wYWNrKCZ1dSwgb3V0KTsKKwkJcmV0dXJuOworCX0KKyNlbHNlCisJaWYgKGdldF91dWlkX3ZpYV9kYWVtb24oVVVJRERfT1BfVElNRV9VVUlELCBvdXQsIDApID09IDApCisJCXJldHVybjsKKyNlbmRpZgorCisJdXVpZF9fZ2VuZXJhdGVfdGltZShvdXQsIDApOworfQorCisKK3ZvaWQgdXVpZF9fZ2VuZXJhdGVfcmFuZG9tKHV1aWRfdCBvdXQsIGludCAqbnVtKQoreworCXV1aWRfdAlidWY7CisJc3RydWN0IHV1aWQgdXU7CisJaW50IGksIG47CisKKwlpZiAoIW51bSB8fCAhKm51bSkKKwkJbiA9IDE7CisJZWxzZQorCQluID0gKm51bTsKKworCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKwkJZ2V0X3JhbmRvbV9ieXRlcyhidWYsIHNpemVvZihidWYpKTsKKwkJdXVpZF91bnBhY2soYnVmLCAmdXUpOworCisJCXV1LmNsb2NrX3NlcSA9ICh1dS5jbG9ja19zZXEgJiAweDNGRkYpIHwgMHg4MDAwOworCQl1dS50aW1lX2hpX2FuZF92ZXJzaW9uID0gKHV1LnRpbWVfaGlfYW5kX3ZlcnNpb24gJiAweDBGRkYpCisJCQl8IDB4NDAwMDsKKwkJdXVpZF9wYWNrKCZ1dSwgb3V0KTsKKwkJb3V0ICs9IHNpemVvZih1dWlkX3QpOworCX0KK30KKwordm9pZCB1dWlkX2dlbmVyYXRlX3JhbmRvbSh1dWlkX3Qgb3V0KQoreworCWludAludW0gPSAxOworCS8qIE5vIHJlYWwgcmVhc29uIHRvIHVzZSB0aGUgZGFlbW9uIGZvciByYW5kb20gdXVpZCdzIC0tIHlldCAqLworCisJdXVpZF9fZ2VuZXJhdGVfcmFuZG9tKG91dCwgJm51bSk7Cit9CisKKworLyoKKyAqIFRoaXMgaXMgdGhlIGdlbmVyaWMgZnJvbnQtZW5kIHRvIHV1aWRfZ2VuZXJhdGVfcmFuZG9tIGFuZAorICogdXVpZF9nZW5lcmF0ZV90aW1lLiAgSXQgdXNlcyB1dWlkX2dlbmVyYXRlX3JhbmRvbSBvbmx5IGlmCisgKiAvZGV2L3VyYW5kb20gaXMgYXZhaWxhYmxlLCBzaW5jZSBvdGhlcndpc2Ugd2Ugd29uJ3QgaGF2ZQorICogaGlnaC1xdWFsaXR5IHJhbmRvbW5lc3MuCisgKi8KK3ZvaWQgdXVpZF9nZW5lcmF0ZSh1dWlkX3Qgb3V0KQoreworCWlmIChnZXRfcmFuZG9tX2ZkKCkgPj0gMCkKKwkJdXVpZF9nZW5lcmF0ZV9yYW5kb20ob3V0KTsKKwllbHNlCisJCXV1aWRfZ2VuZXJhdGVfdGltZShvdXQpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL2dlbl91dWlkX250LmMgYi9lMmZzcHJvZ3MvbGliL3V1aWQvZ2VuX3V1aWRfbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWE0MDUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL2dlbl91dWlkX250LmMKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIGdlbl91dWlkX250LmMgLS0gVXNlIE5UIGFwaSB0byBnZW5lcmF0ZSB1dWlkCisgKgorICogV3JpdHRlbiBieSBBbmRyZXkgU2hlZGVsIChhbmRyZXlzQG5zLmNyLmN5Y28uY29tKQorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInV1aWRQLmgiCisKKyNwcmFnbWEgd2FybmluZyhwdXNoLDQpCisKKyNwcmFnbWEgY29tbWVudChsaWIsICJudGRsbC5saWIiKQorCisvLworLy8gSGVyZSBpcyBhIG5pY2UgZXhhbXBsZSB3aHkgaXQncyBub3QgYSBnb29kIGlkZWEKKy8vIHRvIHVzZSBuYXRpdmUgQVBJIGluIG9yZGluYXJ5IGFwcGxpY2F0aW9ucy4KKy8vIE51bWJlciBvZiBwYXJhbWV0ZXJzIGluIGZ1bmN0aW9uIGJlbG93IHdhcyBjaGFuZ2VkIGZyb20gMyB0byA0CisvLyBmb3IgTlQ1LgorLy8KKy8vCisvLyBOVFNZU0FQSQorLy8gTlRTVEFUVVMKKy8vIE5UQVBJCisvLyBOdEFsbG9jYXRlVXVpZHMoCisvLyAgICAgT1VUIFBVTE9ORyBwMSwKKy8vICAgICBPVVQgUFVMT05HIHAyLAorLy8gICAgIE9VVCBQVUxPTkcgcDMsCisvLyAgICAgT1VUIFBVQ0hBUiBTZWVkIC8vIDYgYnl0ZXMKKy8vICAgKTsKKy8vCisvLworCit1bnNpZ25lZCBsb25nCitfX3N0ZGNhbGwKK050QWxsb2NhdGVVdWlkcygKKyAgIHZvaWQqIHAxLCAgLy8gOCBieXRlcworICAgdm9pZCogcDIsICAvLyA0IGJ5dGVzCisgICB2b2lkKiBwMyAgIC8vIDQgYnl0ZXMKKyAgICk7CisKK3R5cGVkZWYKK3Vuc2lnbmVkIGxvbmcKKyhfX3N0ZGNhbGwqCitOdEFsbG9jYXRlVXVpZHNfMjAwMCkoCisgICB2b2lkKiBwMSwgIC8vIDggYnl0ZXMKKyAgIHZvaWQqIHAyLCAgLy8gNCBieXRlcworICAgdm9pZCogcDMsICAvLyA0IGJ5dGVzCisgICB2b2lkKiBzZWVkIC8vIDYgYnl0ZXMKKyAgICk7CisKKworCisvLworLy8gTmljZSwgYnV0IGluc3RlYWQgb2YgaW5jbHVkaW5nIG50ZGRrLmggb3Qgd2lubnQuaAorLy8gSSBzaG91bGQgZGVmaW5lIGl0IGhlcmUgYmVjYXVzZSB0aGV5IE1JU1NFRCBfX3N0ZGNhbGwgaW4gdGhvc2UgaGVhZGVycy4KKy8vCisKK19fZGVjbHNwZWMoZGxsaW1wb3J0KQorc3RydWN0IF9URUIqCitfX3N0ZGNhbGwKK050Q3VycmVudFRlYih2b2lkKTsKKworCisvLworLy8gVGhlIG9ubHkgd2F5IHRvIGdldCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIHN5c3RlbSBpcyB0byBleGFtaW5lCisvLyBvbmUgc3RvcmVkIGluIFBFQi4gQnV0IGl0J3MgcHJldHR5IGRhbmdlcm91c2UgYmVjYXVzZSB0aGlzIHZhbHVlIGNvdWxkCisvLyBiZSBhbHRlcmVkIGluIGltYWdlIGhlYWRlci4KKy8vCisKK3N0YXRpYworaW50CitOdDUodm9pZCkKK3sKKwkvL3JldHVybiBOdEN1dHRlbnRUZWIoKS0+UGViLT5PU01ham9yVmVyc2lvbiA+PSA1OworCXJldHVybiAoaW50KSooaW50KikoKGNoYXIqKShpbnQpKCooaW50KikoKGNoYXIqKU50Q3VycmVudFRlYigpICsgMHgzMCkpICsgMHhBNCkgPj0gNTsKK30KKworCisKKwordm9pZCB1dWlkX2dlbmVyYXRlKHV1aWRfdCBvdXQpCit7CisJaWYoTnQ1KCkpCisJeworCQl1bnNpZ25lZCBjaGFyIHNlZWRbNl07CisJCSgoTnRBbGxvY2F0ZVV1aWRzXzIwMDApTnRBbGxvY2F0ZVV1aWRzKShvdXQsICgoY2hhciopb3V0KSs4LCAoKGNoYXIqKW91dCkrMTIsICZzZWVkWzBdICk7CisJfQorCWVsc2UKKwl7CisJCU50QWxsb2NhdGVVdWlkcyhvdXQsICgoY2hhciopb3V0KSs4LCAoKGNoYXIqKW91dCkrMTIpOworCX0KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC9pc251bGwuYyBiL2UyZnNwcm9ncy9saWIvdXVpZC9pc251bGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzBjOWEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL2lzbnVsbC5jCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBpc251bGwuYyAtLS0gQ2hlY2sgd2hldGhlciBvciBub3QgdGhlIFVVSUQgaXMgbnVsbAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJ1dWlkUC5oIgorCisvKiBSZXR1cm5zIDEgaWYgdGhlIHV1aWQgaXMgdGhlIE5VTEwgdXVpZCAqLworaW50IHV1aWRfaXNfbnVsbChjb25zdCB1dWlkX3QgdXUpCit7CisJY29uc3QgdW5zaWduZWQgY2hhciAJKmNwOworCWludAkJCWk7CisKKwlmb3IgKGk9MCwgY3AgPSB1dTsgaSA8IDE2OyBpKyspCisJCWlmICgqY3ArKykKKwkJCXJldHVybiAwOworCXJldHVybiAxOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvcGFjay5jIGIvZTJmc3Byb2dzL2xpYi91dWlkL3BhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGIyMWFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3BhY2suYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogSW50ZXJuYWwgcm91dGluZSBmb3IgcGFja2luZyBVVUlEJ3MKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisgKiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisgKiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAqIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgKiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAqIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAidXVpZFAuaCIKKwordm9pZCB1dWlkX3BhY2soY29uc3Qgc3RydWN0IHV1aWQgKnV1LCB1dWlkX3QgcHRyKQoreworCXVpbnQzMl90CXRtcDsKKwl1bnNpZ25lZCBjaGFyCSpvdXQgPSBwdHI7CisKKwl0bXAgPSB1dS0+dGltZV9sb3c7CisJb3V0WzNdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKwl0bXAgPj49IDg7CisJb3V0WzJdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKwl0bXAgPj49IDg7CisJb3V0WzFdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKwl0bXAgPj49IDg7CisJb3V0WzBdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKworCXRtcCA9IHV1LT50aW1lX21pZDsKKwlvdXRbNV0gPSAodW5zaWduZWQgY2hhcikgdG1wOworCXRtcCA+Pj0gODsKKwlvdXRbNF0gPSAodW5zaWduZWQgY2hhcikgdG1wOworCisJdG1wID0gdXUtPnRpbWVfaGlfYW5kX3ZlcnNpb247CisJb3V0WzddID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKwl0bXAgPj49IDg7CisJb3V0WzZdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKworCXRtcCA9IHV1LT5jbG9ja19zZXE7CisJb3V0WzldID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKwl0bXAgPj49IDg7CisJb3V0WzhdID0gKHVuc2lnbmVkIGNoYXIpIHRtcDsKKworCW1lbWNweShvdXQrMTAsIHV1LT5ub2RlLCA2KTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3BhcnNlLmMgYi9lMmZzcHJvZ3MvbGliL3V1aWQvcGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzA4NTdkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3BhcnNlLmMKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIHBhcnNlLmMgLS0tIFVVSUQgcGFyc2luZworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJ1dWlkUC5oIgorCitpbnQgdXVpZF9wYXJzZShjb25zdCBjaGFyICppbiwgdXVpZF90IHV1KQoreworCXN0cnVjdCB1dWlkCXV1aWQ7CisJaW50IAkJaTsKKwljb25zdCBjaGFyCSpjcDsKKwljaGFyCQlidWZbM107CisKKwlpZiAoc3RybGVuKGluKSAhPSAzNikKKwkJcmV0dXJuIC0xOworCWZvciAoaT0wLCBjcCA9IGluOyBpIDw9IDM2OyBpKyssY3ArKykgeworCQlpZiAoKGkgPT0gOCkgfHwgKGkgPT0gMTMpIHx8IChpID09IDE4KSB8fAorCQkgICAgKGkgPT0gMjMpKSB7CisJCQlpZiAoKmNwID09ICctJykKKwkJCQljb250aW51ZTsKKwkJCWVsc2UKKwkJCQlyZXR1cm4gLTE7CisJCX0KKwkJaWYgKGk9PSAzNikKKwkJCWlmICgqY3AgPT0gMCkKKwkJCQljb250aW51ZTsKKwkJaWYgKCFpc3hkaWdpdCgqY3ApKQorCQkJcmV0dXJuIC0xOworCX0KKwl1dWlkLnRpbWVfbG93ID0gc3RydG91bChpbiwgTlVMTCwgMTYpOworCXV1aWQudGltZV9taWQgPSBzdHJ0b3VsKGluKzksIE5VTEwsIDE2KTsKKwl1dWlkLnRpbWVfaGlfYW5kX3ZlcnNpb24gPSBzdHJ0b3VsKGluKzE0LCBOVUxMLCAxNik7CisJdXVpZC5jbG9ja19zZXEgPSBzdHJ0b3VsKGluKzE5LCBOVUxMLCAxNik7CisJY3AgPSBpbisyNDsKKwlidWZbMl0gPSAwOworCWZvciAoaT0wOyBpIDwgNjsgaSsrKSB7CisJCWJ1ZlswXSA9ICpjcCsrOworCQlidWZbMV0gPSAqY3ArKzsKKwkJdXVpZC5ub2RlW2ldID0gc3RydG91bChidWYsIE5VTEwsIDE2KTsKKwl9CisKKwl1dWlkX3BhY2soJnV1aWQsIHV1KTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC90c3RfdXVpZC5jIGIvZTJmc3Byb2dzL2xpYi91dWlkL3RzdF91dWlkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhkOTI4ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC90c3RfdXVpZC5jCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogdHN0X3V1aWQuYyAtLS0gdGVzdCBwcm9ncmFtIGZyb20gdGhlIFVVSUQgbGlicmFyeQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmZGVmIF9XSU4zMgorI2RlZmluZSBfV0lOMzJfV0lOTlQgMHgwNTAwCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBVVUlEIE1ZVVVJRAorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCisjaW5jbHVkZSA8dXVpZC91dWlkLmg+CisKK3N0YXRpYyBpbnQgdGVzdF91dWlkKGNvbnN0IGNoYXIgKiB1dWlkLCBpbnQgaXNWYWxpZCkKK3sKKwlzdGF0aWMgY29uc3QgY2hhciAqIHZhbGlkU3RyWzJdID0geyJpbnZhbGlkIiwgInZhbGlkIn07CisJdXVpZF90IHV1aWRCaXRzOworCWludCBwYXJzZWRPazsKKworCXBhcnNlZE9rID0gdXVpZF9wYXJzZSh1dWlkLCB1dWlkQml0cykgPT0gMDsKKworCXByaW50ZigiJXMgaXMgJXMiLCB1dWlkLCB2YWxpZFN0cltpc1ZhbGlkXSk7CisJaWYgKHBhcnNlZE9rICE9IGlzVmFsaWQpIHsKKwkJcHJpbnRmKCIgYnV0IHV1aWRfcGFyc2Ugc2F5cyAlc1xuIiwgdmFsaWRTdHJbcGFyc2VkT2tdKTsKKwkJcmV0dXJuIDE7CisJfQorCXByaW50ZigiLCBPS1xuIik7CisJcmV0dXJuIDA7Cit9CisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBBVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIEFUVFIoeCkKKyNlbmRpZgorCitpbnQKK21haW4oaW50IGFyZ2MgQVRUUigodW51c2VkKSkgLCBjaGFyICoqYXJndiBBVFRSKCh1bnVzZWQpKSkKK3sKKwl1dWlkX3QJCWJ1ZiwgdHN0OworCWNoYXIJCXN0clsxMDBdOworCXN0cnVjdCB0aW1ldmFsCXR2OworCXRpbWVfdAkJdGltZV9yZWcsIHRpbWVfZ2VuOworCXVuc2lnbmVkIGNoYXIJKmNwOworCWludCBpOworCWludCBmYWlsZWQgPSAwOworCWludCB0eXBlLCB2YXJpYW50OworCisJdXVpZF9nZW5lcmF0ZShidWYpOworCXV1aWRfdW5wYXJzZShidWYsIHN0cik7CisJcHJpbnRmKCJVVUlEIGdlbmVyYXRlID0gJXNcbiIsIHN0cik7CisJcHJpbnRmKCJVVUlEOiAiKTsKKwlmb3IgKGk9MCwgY3AgPSAodW5zaWduZWQgY2hhciAqKSAmYnVmOyBpIDwgMTY7IGkrKykgeworCQlwcmludGYoIiUwMngiLCAqY3ArKyk7CisJfQorCXByaW50ZigiXG4iKTsKKwl0eXBlID0gdXVpZF90eXBlKGJ1Zik7IAl2YXJpYW50ID0gdXVpZF92YXJpYW50KGJ1Zik7CisJcHJpbnRmKCJVVUlEIHR5cGUgPSAlZCwgVVVJRCB2YXJpYW50ID0gJWRcbiIsIHR5cGUsIHZhcmlhbnQpOworCWlmICh2YXJpYW50ICE9IFVVSURfVkFSSUFOVF9EQ0UpIHsKKwkJcHJpbnRmKCJJbmNvcnJlY3QgVVVJRCBWYXJpYW50OyB3YXMgZXhwZWN0aW5nIERDRSFcbiIpOworCQlmYWlsZWQrKzsKKwl9CisJcHJpbnRmKCJcbiIpOworCisJdXVpZF9nZW5lcmF0ZV9yYW5kb20oYnVmKTsKKwl1dWlkX3VucGFyc2UoYnVmLCBzdHIpOworCXByaW50ZigiVVVJRCByYW5kb20gc3RyaW5nID0gJXNcbiIsIHN0cik7CisJcHJpbnRmKCJVVUlEOiAiKTsKKwlmb3IgKGk9MCwgY3AgPSAodW5zaWduZWQgY2hhciAqKSAmYnVmOyBpIDwgMTY7IGkrKykgeworCQlwcmludGYoIiUwMngiLCAqY3ArKyk7CisJfQorCXByaW50ZigiXG4iKTsKKwl0eXBlID0gdXVpZF90eXBlKGJ1Zik7CisJdmFyaWFudCA9IHV1aWRfdmFyaWFudChidWYpOworCXByaW50ZigiVVVJRCB0eXBlID0gJWQsIFVVSUQgdmFyaWFudCA9ICVkXG4iLCB0eXBlLCB2YXJpYW50KTsKKwlpZiAodmFyaWFudCAhPSBVVUlEX1ZBUklBTlRfRENFKSB7CisJCXByaW50ZigiSW5jb3JyZWN0IFVVSUQgVmFyaWFudDsgd2FzIGV4cGVjdGluZyBEQ0UhXG4iKTsKKwkJZmFpbGVkKys7CisJfQorCWlmICh0eXBlICE9IDQpIHsKKwkJcHJpbnRmKCJJbmNvcnJlY3QgVVVJRCB0eXBlOyB3YXMgZXhwZWN0aW5nICIKKwkJICAgICAgICI0IChyYW5kb20gdHlwZSkhXG4iKTsKKwkJZmFpbGVkKys7CisJfQorCXByaW50ZigiXG4iKTsKKworCXRpbWVfZ2VuID0gdGltZSgwKTsKKwl1dWlkX2dlbmVyYXRlX3RpbWUoYnVmKTsKKwl1dWlkX3VucGFyc2UoYnVmLCBzdHIpOworCXByaW50ZigiVVVJRCBzdHJpbmcgPSAlc1xuIiwgc3RyKTsKKwlwcmludGYoIlVVSUQgdGltZTogIik7CisJZm9yIChpPTAsIGNwID0gKHVuc2lnbmVkIGNoYXIgKikgJmJ1ZjsgaSA8IDE2OyBpKyspIHsKKwkJcHJpbnRmKCIlMDJ4IiwgKmNwKyspOworCX0KKwlwcmludGYoIlxuIik7CisJdHlwZSA9IHV1aWRfdHlwZShidWYpOworCXZhcmlhbnQgPSB1dWlkX3ZhcmlhbnQoYnVmKTsKKwlwcmludGYoIlVVSUQgdHlwZSA9ICVkLCBVVUlEIHZhcmlhbnQgPSAlZFxuIiwgdHlwZSwgdmFyaWFudCk7CisJaWYgKHZhcmlhbnQgIT0gVVVJRF9WQVJJQU5UX0RDRSkgeworCQlwcmludGYoIkluY29ycmVjdCBVVUlEIFZhcmlhbnQ7IHdhcyBleHBlY3RpbmcgRENFIVxuIik7CisJCWZhaWxlZCsrOworCX0KKwlpZiAodHlwZSAhPSAxKSB7CisJCXByaW50ZigiSW5jb3JyZWN0IFVVSUQgdHlwZTsgd2FzIGV4cGVjdGluZyAiCisJCSAgICAgICAiMSAodGltZS1iYXNlZCB0eXBlKSFcXG4iKTsKKwkJZmFpbGVkKys7CisJfQorCisJdHYudHZfc2VjID0gMDsKKwl0di50dl91c2VjID0gMDsKKwl0aW1lX3JlZyA9IHV1aWRfdGltZShidWYsICZ0dik7CisJcHJpbnRmKCJVVUlEIGdlbmVyYXRlZCBhdCAlbHUgcmVwb3J0cyAlbHUgKCVsZC4lbGQpXG4iLAorCSAgICAgICB0aW1lX2dlbiwgdGltZV9yZWcsIHR2LnR2X3NlYywgKGxvbmcpdHYudHZfdXNlYyk7CisJLyogYWxsb3cgMXMgbWFyZ2luIGluIGNhc2Ugb2Ygcm9sbG92ZXIgYmV0d2VlbiBzYW1wbGluZworCSAqIHRoZSBjdXJyZW50IHRpbWUgYW5kIHdoZW4gdGhlIFVVSUQgaXMgZ2VuZXJhdGVkLiAqLworCWlmICh0aW1lX3JlZyA+IHRpbWVfZ2VuICsgMSkgeworCQlwcmludGYoIlVVSUQgdGltZSBjb21wYXJpc29uIGZhaWxlZCFcbiIpOworCQlmYWlsZWQrKzsKKwl9IGVsc2UgeworCQlwcmludGYoIlVVSUQgdGltZSBjb21wYXJpc29uIHN1Y2NlZWRlZC5cbiIpOworCX0KKworCWlmICh1dWlkX3BhcnNlKHN0ciwgdHN0KSA8IDApIHsKKwkJcHJpbnRmKCJVVUlEIHBhcnNlIGZhaWxlZFxuIik7CisJCWZhaWxlZCsrOworCX0KKwlpZiAoIXV1aWRfY29tcGFyZShidWYsIHRzdCkpIHsKKwkJcHJpbnRmKCJVVUlEIHBhcnNlIGFuZCBjb21wYXJlIHN1Y2NlZWRlZC5cbiIpOworCX0gZWxzZSB7CisJCXByaW50ZigiVVVJRCBwYXJzZSBhbmQgY29tcGFyZSBmYWlsZWQhXG4iKTsKKwkJZmFpbGVkKys7CisJfQorCXV1aWRfY2xlYXIodHN0KTsKKwlpZiAodXVpZF9pc19udWxsKHRzdCkpCisJCXByaW50ZigiVVVJRCBjbGVhciBhbmQgaXMgbnVsbCBzdWNjZWVkZWQuXG4iKTsKKwllbHNlIHsKKwkJcHJpbnRmKCJVVUlEIGNsZWFyIGFuZCBpcyBudWxsIGZhaWxlZCFcbiIpOworCQlmYWlsZWQrKzsKKwl9CisJdXVpZF9jb3B5KGJ1ZiwgdHN0KTsKKwlpZiAoIXV1aWRfY29tcGFyZShidWYsIHRzdCkpCisJCXByaW50ZigiVVVJRCBjb3B5IGFuZCBjb21wYXJlIHN1Y2NlZWRlZC5cbiIpOworCWVsc2UgeworCQlwcmludGYoIlVVSUQgY29weSBhbmQgY29tcGFyZSBmYWlsZWQhXG4iKTsKKwkJZmFpbGVkKys7CisJfQorCisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFiIiwgMSk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDlDQzUtNDcwMS00QTg0LTg5NUItMzU0QzU4NEE5ODFCIiwgMSk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFiYyIsIDApOworCWZhaWxlZCArPSB0ZXN0X3V1aWQoIjg0OTQ5Y2M1LTQ3MDEtNGE4NC04OTViLTM1NGM1ODRhOTgxIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzV4NDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUwNDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMTA0YTg0LTg5NWItMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMS00YTg0MDg5NWItMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMS00YTg0LTg5NWIwMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiZzQ5NDljYzUtNDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFiIiwgMCk7CisJZmFpbGVkICs9IHRlc3RfdXVpZCgiODQ5NDljYzUtNDcwMS00YTg0LTg5NWItMzU0YzU4NGE5ODFnIiwgMCk7CisKKwlpZiAoZmFpbGVkKSB7CisJCXByaW50ZigiJWQgZmFpbHVyZXMuXG4iLCBmYWlsZWQpOworCQlleGl0KDEpOworCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91bnBhY2suYyBiL2UyZnNwcm9ncy9saWIvdXVpZC91bnBhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzgwNDNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3VucGFjay5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBJbnRlcm5hbCByb3V0aW5lIGZvciB1bnBhY2tpbmcgVVVJRAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJ1dWlkUC5oIgorCit2b2lkIHV1aWRfdW5wYWNrKGNvbnN0IHV1aWRfdCBpbiwgc3RydWN0IHV1aWQgKnV1KQoreworCWNvbnN0IHVpbnQ4X3QJKnB0ciA9IGluOworCXVpbnQzMl90CQl0bXA7CisKKwl0bXAgPSAqcHRyKys7CisJdG1wID0gKHRtcCA8PCA4KSB8ICpwdHIrKzsKKwl0bXAgPSAodG1wIDw8IDgpIHwgKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfbG93ID0gdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfbWlkID0gdG1wOworCisJdG1wID0gKnB0cisrOworCXRtcCA9ICh0bXAgPDwgOCkgfCAqcHRyKys7CisJdXUtPnRpbWVfaGlfYW5kX3ZlcnNpb24gPSB0bXA7CisKKwl0bXAgPSAqcHRyKys7CisJdG1wID0gKHRtcCA8PCA4KSB8ICpwdHIrKzsKKwl1dS0+Y2xvY2tfc2VxID0gdG1wOworCisJbWVtY3B5KHV1LT5ub2RlLCBwdHIsIDYpOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvdW5wYXJzZS5jIGIvZTJmc3Byb2dzL2xpYi91dWlkL3VucGFyc2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTU2YWU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3VucGFyc2UuYwpAQCAtMCwwICsxLDc3IEBACisvKgorICogdW5wYXJzZS5jIC0tIGNvbnZlcnQgYSBVVUlEIHRvIHN0cmluZworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSAidXVpZFAuaCIKKworc3RhdGljIGNvbnN0IGNoYXIgKmZtdF9sb3dlciA9CisJIiUwOHgtJTA0eC0lMDR4LSUwMnglMDJ4LSUwMnglMDJ4JTAyeCUwMnglMDJ4JTAyeCI7CisKK3N0YXRpYyBjb25zdCBjaGFyICpmbXRfdXBwZXIgPQorCSIlMDhYLSUwNFgtJTA0WC0lMDJYJTAyWC0lMDJYJTAyWCUwMlglMDJYJTAyWCUwMlgiOworCisjaWZkZWYgVVVJRF9VTlBBUlNFX0RFRkFVTFRfVVBQRVIKKyNkZWZpbmUgRk1UX0RFRkFVTFQgZm10X3VwcGVyCisjZWxzZQorI2RlZmluZSBGTVRfREVGQVVMVCBmbXRfbG93ZXIKKyNlbmRpZgorCitzdGF0aWMgdm9pZCB1dWlkX3VucGFyc2VfeChjb25zdCB1dWlkX3QgdXUsIGNoYXIgKm91dCwgY29uc3QgY2hhciAqZm10KQoreworCXN0cnVjdCB1dWlkIHV1aWQ7CisKKwl1dWlkX3VucGFjayh1dSwgJnV1aWQpOworCXNwcmludGYob3V0LCBmbXQsCisJCXV1aWQudGltZV9sb3csIHV1aWQudGltZV9taWQsIHV1aWQudGltZV9oaV9hbmRfdmVyc2lvbiwKKwkJdXVpZC5jbG9ja19zZXEgPj4gOCwgdXVpZC5jbG9ja19zZXEgJiAweEZGLAorCQl1dWlkLm5vZGVbMF0sIHV1aWQubm9kZVsxXSwgdXVpZC5ub2RlWzJdLAorCQl1dWlkLm5vZGVbM10sIHV1aWQubm9kZVs0XSwgdXVpZC5ub2RlWzVdKTsKK30KKwordm9pZCB1dWlkX3VucGFyc2VfbG93ZXIoY29uc3QgdXVpZF90IHV1LCBjaGFyICpvdXQpCit7CisJdXVpZF91bnBhcnNlX3godXUsIG91dCwJZm10X2xvd2VyKTsKK30KKwordm9pZCB1dWlkX3VucGFyc2VfdXBwZXIoY29uc3QgdXVpZF90IHV1LCBjaGFyICpvdXQpCit7CisJdXVpZF91bnBhcnNlX3godXUsIG91dCwJZm10X3VwcGVyKTsKK30KKwordm9pZCB1dWlkX3VucGFyc2UoY29uc3QgdXVpZF90IHV1LCBjaGFyICpvdXQpCit7CisJdXVpZF91bnBhcnNlX3godXUsIG91dCwgRk1UX0RFRkFVTFQpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWQuMy5pbiBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkLjMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3NjBmZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkLjMuaW4KQEAgLTAsMCArMSw2NiBAQAorLlwiIENvcHlyaWdodCAxOTk5IEFuZHJlYXMgRGlsZ2VyIChhZGlsZ2VyQGVuZWwudWNhbGdhcnkuY2EpCisuXCIKKy5cIiAlQmVnaW4tSGVhZGVyJQorLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLlwiIGFyZSBtZXQ6CisuXCIgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKy5cIiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKy5cIiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLlwiIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorLlwiICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKy5cIiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisuXCIgCisuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy5cIiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworLlwiIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorLlwiIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKy5cIiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisuXCIgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKy5cIiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKy5cIiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisuXCIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisuXCIgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKy5cIiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLlwiIERBTUFHRS4KKy5cIiAlRW5kLUhlYWRlciUKKy5cIiAKKy5cIiBDcmVhdGVkICBXZWQgTWFyIDEwIDE3OjQyOjEyIDE5OTksIEFuZHJlYXMgRGlsZ2VyCisuVEggVVVJRCAzICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCit1dWlkIFwtIERDRSBjb21wYXRpYmxlIFVuaXZlcnNhbGx5IFVuaXF1ZSBJZGVudGlmaWVyIGxpYnJhcnkKKy5TSCBTWU5PUFNJUworLkIgI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorLlNIIERFU0NSSVBUSU9OCitUaGUgVVVJRCBsaWJyYXJ5IGlzIHVzZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGlkZW50aWZpZXJzIGZvciBvYmplY3RzIAordGhhdCBtYXkgYmUgYWNjZXNzaWJsZSBiZXlvbmQgdGhlIGxvY2FsIHN5c3RlbS4gIFRoaXMgbGlicmFyeQorZ2VuZXJhdGVzIFVVSURzIGNvbXBhdGlibGUgd2l0aCB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBPcGVuIFNvZnR3YXJlCitGb3VuZGF0aW9uIChPU0YpIERpc3RyaWJ1dGVkIENvbXB1dGluZyBFbnZpcm9ubWVudCAoRENFKSB1dGlsaXR5IAorLkJSIHV1aWRnZW4gLgorLnNwCitUaGUgVVVJRHMgZ2VuZXJhdGVkIGJ5IHRoaXMgbGlicmFyeSBjYW4gYmUgcmVhc29uYWJseSBleHBlY3RlZCB0byBiZQordW5pcXVlIHdpdGhpbiBhIHN5c3RlbSwgYW5kIHVuaXF1ZSBhY3Jvc3MgYWxsIHN5c3RlbXMuICBUaGV5IGNvdWxkCitiZSB1c2VkLCBmb3IgaW5zdGFuY2UsIHRvIGdlbmVyYXRlIHVuaXF1ZSBIVFRQIGNvb2tpZXMgYWNyb3NzIG11bHRpcGxlCit3ZWIgc2VydmVycyB3aXRob3V0IGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgc2VydmVycywgYW5kIHdpdGhvdXQgZmVhcgorb2YgYSBuYW1lIGNsYXNoLgorLlNIICJDT05GT1JNSU5HIFRPIgorT1NGIERDRSAxLjEKKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFkuIFRzJ28KKy5TSCBBVkFJTEFCSUxJVFkKK1RoZSBVVUlEIGxpYnJhcnkgaXMgcGFydCBvZiB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgYW5kIGlzIGF2YWlsYWJsZSBmcm9tCisuVVIgaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KKy5VRQorLlNIICJTRUUgQUxTTyIKKy5CUiB1dWlkX2NsZWFyICgzKSwKKy5CUiB1dWlkX2NvbXBhcmUgKDMpLAorLkJSIHV1aWRfY29weSAoMyksCisuQlIgdXVpZF9nZW5lcmF0ZSAoMyksCisuQlIgdXVpZF9pc19udWxsICgzKSwKKy5CUiB1dWlkX3BhcnNlICgzKSwKKy5CUiB1dWlkX3RpbWUgKDMpLAorLkJSIHV1aWRfdW5wYXJzZSAoMykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkLmguaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZC5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhODQ2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZC5oLmluCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogUHVibGljIGluY2x1ZGUgZmlsZSBmb3IgdGhlIFVVSUQgbGlicmFyeQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX1VVSURfVVVJRF9ICisjZGVmaW5lIF9VVUlEX1VVSURfSAorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZuZGVmIF9XSU4zMgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx0aW1lLmg+CisKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1dWlkX3RbMTZdOworCisvKiBVVUlEIFZhcmlhbnQgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgVVVJRF9WQVJJQU5UX05DUyAJMAorI2RlZmluZSBVVUlEX1ZBUklBTlRfRENFIAkxCisjZGVmaW5lIFVVSURfVkFSSUFOVF9NSUNST1NPRlQJMgorI2RlZmluZSBVVUlEX1ZBUklBTlRfT1RIRVIJMworCisvKiBVVUlEIFR5cGUgZGVmaW5pdGlvbnMgKi8KKyNkZWZpbmUgVVVJRF9UWVBFX0RDRV9USU1FICAgMQorI2RlZmluZSBVVUlEX1RZUEVfRENFX1JBTkRPTSA0CisKKy8qIEFsbG93IFVVSUQgY29uc3RhbnRzIHRvIGJlIGRlZmluZWQgKi8KKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBVVUlEX0RFRklORShuYW1lLHUwLHUxLHUyLHUzLHU0LHU1LHU2LHU3LHU4LHU5LHUxMCx1MTEsdTEyLHUxMyx1MTQsdTE1KSBcCisJc3RhdGljIGNvbnN0IHV1aWRfdCBuYW1lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IHt1MCx1MSx1Mix1Myx1NCx1NSx1Nix1Nyx1OCx1OSx1MTAsdTExLHUxMix1MTMsdTE0LHUxNX0KKyNlbHNlCisjZGVmaW5lIFVVSURfREVGSU5FKG5hbWUsdTAsdTEsdTIsdTMsdTQsdTUsdTYsdTcsdTgsdTksdTEwLHUxMSx1MTIsdTEzLHUxNCx1MTUpIFwKKwlzdGF0aWMgY29uc3QgdXVpZF90IG5hbWUgPSB7dTAsdTEsdTIsdTMsdTQsdTUsdTYsdTcsdTgsdTksdTEwLHUxMSx1MTIsdTEzLHUxNCx1MTV9CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBjbGVhci5jICovCit2b2lkIHV1aWRfY2xlYXIodXVpZF90IHV1KTsKKworLyogY29tcGFyZS5jICovCitpbnQgdXVpZF9jb21wYXJlKGNvbnN0IHV1aWRfdCB1dTEsIGNvbnN0IHV1aWRfdCB1dTIpOworCisvKiBjb3B5LmMgKi8KK3ZvaWQgdXVpZF9jb3B5KHV1aWRfdCBkc3QsIGNvbnN0IHV1aWRfdCBzcmMpOworCisvKiBnZW5fdXVpZC5jICovCit2b2lkIHV1aWRfZ2VuZXJhdGUodXVpZF90IG91dCk7Cit2b2lkIHV1aWRfZ2VuZXJhdGVfcmFuZG9tKHV1aWRfdCBvdXQpOwordm9pZCB1dWlkX2dlbmVyYXRlX3RpbWUodXVpZF90IG91dCk7CisKKy8qIGlzbnVsbC5jICovCitpbnQgdXVpZF9pc19udWxsKGNvbnN0IHV1aWRfdCB1dSk7CisKKy8qIHBhcnNlLmMgKi8KK2ludCB1dWlkX3BhcnNlKGNvbnN0IGNoYXIgKmluLCB1dWlkX3QgdXUpOworCisvKiB1bnBhcnNlLmMgKi8KK3ZvaWQgdXVpZF91bnBhcnNlKGNvbnN0IHV1aWRfdCB1dSwgY2hhciAqb3V0KTsKK3ZvaWQgdXVpZF91bnBhcnNlX2xvd2VyKGNvbnN0IHV1aWRfdCB1dSwgY2hhciAqb3V0KTsKK3ZvaWQgdXVpZF91bnBhcnNlX3VwcGVyKGNvbnN0IHV1aWRfdCB1dSwgY2hhciAqb3V0KTsKKworLyogdXVpZF90aW1lLmMgKi8KK3RpbWVfdCB1dWlkX3RpbWUoY29uc3QgdXVpZF90IHV1LCBzdHJ1Y3QgdGltZXZhbCAqcmV0X3R2KTsKK2ludCB1dWlkX3R5cGUoY29uc3QgdXVpZF90IHV1KTsKK2ludCB1dWlkX3ZhcmlhbnQoY29uc3QgdXVpZF90IHV1KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIF9VVUlEX1VVSURfSCAqLwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWQucGMuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZC5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWE0ZTRkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWQucGMuaW4KQEAgLTAsMCArMSwxMSBAQAorcHJlZml4PUBwcmVmaXhACitleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACitsaWJkaXI9QGxpYmRpckAKK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisKK05hbWU6IHV1aWQKK0Rlc2NyaXB0aW9uOiBVbml2ZXJzYWxseSB1bmlxdWUgaWQgbGlicmFyeQorVmVyc2lvbjogQEUyRlNQUk9HU19WRVJTSU9OQAorUmVxdWlyZXM6IAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vdXVpZCAtSSR7aW5jbHVkZWRpcn0KK0xpYnM6IC1MJHtsaWJkaXJ9IC1sdXVpZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRQLmggYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZFAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODk3YmJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRQLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIHV1aWQuaCAtLSBwcml2YXRlIGhlYWRlciBmaWxlIGZvciB1dWlkcworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKyAqICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKyAqICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKyAqICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICogV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKyAqIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorICogV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKyAqIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorICogVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKyAqIERBTUFHRS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2Vsc2UKKyNpbmNsdWRlIDx1dWlkL3V1aWRfdHlwZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8dXVpZC91dWlkLmg+CisKKy8qCisgKiBPZmZzZXQgYmV0d2VlbiAxNS1PY3QtMTU4MiBhbmQgMS1KYW4tNzAKKyAqLworI2RlZmluZSBUSU1FX09GRlNFVF9ISUdIIDB4MDFCMjFERDIKKyNkZWZpbmUgVElNRV9PRkZTRVRfTE9XICAweDEzODE0MDAwCisKK3N0cnVjdCB1dWlkIHsKKwl1aW50MzJfdAl0aW1lX2xvdzsKKwl1aW50MTZfdAl0aW1lX21pZDsKKwl1aW50MTZfdAl0aW1lX2hpX2FuZF92ZXJzaW9uOworCXVpbnQxNl90CWNsb2NrX3NlcTsKKwl1aW50OF90CW5vZGVbNl07Cit9OworCisKKy8qCisgKiBwcm90b3R5cGVzCisgKi8KK3ZvaWQgdXVpZF9wYWNrKGNvbnN0IHN0cnVjdCB1dWlkICp1dSwgdXVpZF90IHB0cik7Cit2b2lkIHV1aWRfdW5wYWNrKGNvbnN0IHV1aWRfdCBpbiwgc3RydWN0IHV1aWQgKnV1KTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX2NsZWFyLjMuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9jbGVhci4zLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZDJiZjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9jbGVhci4zLmluCkBAIC0wLDAgKzEsNjAgQEAKKy5cIiBDb3B5cmlnaHQgMTk5OSBBbmRyZWFzIERpbGdlciAoYWRpbGdlckBlbmVsLnVjYWxnYXJ5LmNhKQorLlwiCisuXCIgJUJlZ2luLUhlYWRlciUKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisuXCIgICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisuXCIgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy5cIiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKy5cIiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisuXCIgICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorLlwiIAorLlwiIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisuXCIgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKy5cIiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKy5cIiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisuXCIgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorLlwiIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisuXCIgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisuXCIgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorLlwiIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLlwiIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisuXCIgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy5cIiBEQU1BR0UuCisuXCIgJUVuZC1IZWFkZXIlCisuXCIgCisuXCIgQ3JlYXRlZCAgV2VkIE1hciAxMCAxNzo0MjoxMiAxOTk5LCBBbmRyZWFzIERpbGdlcgorLlRIIFVVSURfQ0xFQVIgMyAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQordXVpZF9jbGVhciBcLSByZXNldCB2YWx1ZSBvZiBVVUlEIHZhcmlhYmxlIHRvIHRoZSBOVUxMIHZhbHVlCisuU0ggU1lOT1BTSVMKKy5uZgorLkIgI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorLnNwCisuQkkgInZvaWQgdXVpZF9jbGVhcih1dWlkX3QgIiB1dSApOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgdXVpZF9jbGVhcgorZnVuY3Rpb24gc2V0cyB0aGUgdmFsdWUgb2YgdGhlIHN1cHBsaWVkIHV1aWQgdmFyaWFibGUKKy5JIHV1Cit0byB0aGUgTlVMTCB2YWx1ZS4KKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFkuIFRzJ28KKy5TSCBBVkFJTEFCSUxJVFkKKy5VUiBodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworLlVFCisuU0ggIlNFRSBBTFNPIgorLkJSIHV1aWQgKDMpLAorLkJSIHV1aWRfY29tcGFyZSAoMyksCisuQlIgdXVpZF9jb3B5ICgzKSwKKy5CUiB1dWlkX2dlbmVyYXRlICgzKSwKKy5CUiB1dWlkX2lzX251bGwgKDMpLAorLkJSIHV1aWRfcGFyc2UgKDMpLAorLkJSIHV1aWRfdW5wYXJzZSAoMykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX2NvbXBhcmUuMy5pbiBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX2NvbXBhcmUuMy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjMyOTYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfY29tcGFyZS4zLmluCkBAIC0wLDAgKzEsNjYgQEAKKy5cIiBDb3B5cmlnaHQgMTk5OSBBbmRyZWFzIERpbGdlciAoYWRpbGdlckBlbmVsLnVjYWxnYXJ5LmNhKQorLlwiCisuXCIgJUJlZ2luLUhlYWRlciUKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisuXCIgICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisuXCIgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy5cIiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKy5cIiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisuXCIgICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorLlwiIAorLlwiIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisuXCIgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKy5cIiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKy5cIiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisuXCIgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorLlwiIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisuXCIgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisuXCIgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorLlwiIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLlwiIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisuXCIgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy5cIiBEQU1BR0UuCisuXCIgJUVuZC1IZWFkZXIlCisuXCIgCisuXCIgQ3JlYXRlZCAgV2VkIE1hciAxMCAxNzo0MjoxMiAxOTk5LCBBbmRyZWFzIERpbGdlcgorLlRIIFVVSURfQ09NUEFSRSAzICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCit1dWlkX2NvbXBhcmUgXC0gY29tcGFyZSB3aGV0aGVyIHR3byBVVUlEcyBhcmUgdGhlIHNhbWUKKy5TSCBTWU5PUFNJUworLm5mCisuQiAjaW5jbHVkZSA8dXVpZC91dWlkLmg+Cisuc3AKKy5CSSAiaW50IHV1aWRfY29tcGFyZSh1dWlkX3QgIiB1dTEgIiwgdXVpZF90ICIgdXUyKQorLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgdXVpZF9jb21wYXJlCitmdW5jdGlvbiBjb21wYXJlcyB0aGUgdHdvIHN1cHBsaWVkIHV1aWQgdmFyaWFibGVzCisuSVIgdXUxICIgYW5kICIgdXUyCit0byBlYWNoIG90aGVyLgorLlNIIFJFVFVSTiBWQUxVRQorUmV0dXJucyBhbiBpbnRlZ2VyIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB6ZXJvIGlmIAorLkkgdXUxCitpcyBmb3VuZCwgIHJlc3BlY3RpdmVseSwgdG8gYmUgbGV4aWdyYXBoaWNhbGx5IGxlc3MgdGhhbiwgZXF1YWwsIG9yIAorZ3JlYXRlciB0aGFuIAorLklSIHV1MiAuCisuU0ggQVVUSE9SCitUaGVvZG9yZSBZLiBUcydvCisuU0ggQVZBSUxBQklMSVRZCisuVVIgaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KKy5VRQorLlNIICJTRUUgQUxTTyIKKy5CUiB1dWlkICgzKSwKKy5CUiB1dWlkX2NsZWFyICgzKSwKKy5CUiB1dWlkX2NvcHkgKDMpLAorLkJSIHV1aWRfZ2VuZXJhdGUgKDMpLAorLkJSIHV1aWRfaXNfbnVsbCAoMyksCisuQlIgdXVpZF9wYXJzZSAoMyksCisuQlIgdXVpZF91bnBhcnNlICgzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfY29weS4zLmluIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfY29weS4zLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmNWU4YzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9jb3B5LjMuaW4KQEAgLTAsMCArMSw2MiBAQAorLlwiIENvcHlyaWdodCAxOTk5IEFuZHJlYXMgRGlsZ2VyIChhZGlsZ2VyQGVuZWwudWNhbGdhcnkuY2EpCisuXCIKKy5cIiAlQmVnaW4tSGVhZGVyJQorLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLlwiIGFyZSBtZXQ6CisuXCIgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKy5cIiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKy5cIiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLlwiIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorLlwiICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKy5cIiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisuXCIgCisuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy5cIiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworLlwiIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorLlwiIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKy5cIiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisuXCIgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKy5cIiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKy5cIiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisuXCIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisuXCIgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKy5cIiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLlwiIERBTUFHRS4KKy5cIiAlRW5kLUhlYWRlciUKKy5cIiAKKy5cIiBDcmVhdGVkICBXZWQgTWFyIDEwIDE3OjQyOjEyIDE5OTksIEFuZHJlYXMgRGlsZ2VyCisuVEggVVVJRF9DT1BZIDMgIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK3V1aWRfY29weSBcLSBjb3B5IGEgVVVJRCB2YWx1ZQorLlNIIFNZTk9QU0lTCisubmYKKy5CICNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKy5zcAorLkJJICJ2b2lkIHV1aWRfY29weSh1dWlkX3QgIiBkc3QgIiwgdXVpZF90ICIgc3JjKTsKKy5maQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHV1aWRfY29weQorZnVuY3Rpb24gY29waWVzIHRoZSBVVUlEIHZhcmlhYmxlCisuSVIgc3JjICIgdG8gIiBkc3QgLgorLlNIIFJFVFVSTiBWQUxVRQorVGhlIGNvcGllZCBVVUlEIGlzIHJldHVybmVkIGluIHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5CisuSVIgZHN0IC4KKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFkuIFRzJ28KKy5TSCBBVkFJTEFCSUxJVFkKKy5VUiBodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworLlVFCisuU0ggIlNFRSBBTFNPIgorLkJSIHV1aWQgKDMpLAorLkJSIHV1aWRfY2xlYXIgKDMpLAorLkJSIHV1aWRfY29tcGFyZSAoMyksCisuQlIgdXVpZF9nZW5lcmF0ZSAoMyksCisuQlIgdXVpZF9pc19udWxsICgzKSwKKy5CUiB1dWlkX3BhcnNlICgzKSwKKy5CUiB1dWlkX3VucGFyc2UgKDMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9nZW5lcmF0ZS4zLmluIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfZ2VuZXJhdGUuMy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OThlMDQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfZ2VuZXJhdGUuMy5pbgpAQCAtMCwwICsxLDEwNCBAQAorLlwiIENvcHlyaWdodCAxOTk5IEFuZHJlYXMgRGlsZ2VyIChhZGlsZ2VyQGVuZWwudWNhbGdhcnkuY2EpCisuXCIKKy5cIiAlQmVnaW4tSGVhZGVyJQorLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLlwiIGFyZSBtZXQ6CisuXCIgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKy5cIiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKy5cIiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLlwiIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorLlwiICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKy5cIiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisuXCIgCisuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy5cIiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworLlwiIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorLlwiIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKy5cIiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisuXCIgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKy5cIiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKy5cIiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisuXCIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisuXCIgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKy5cIiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLlwiIERBTUFHRS4KKy5cIiAlRW5kLUhlYWRlciUKKy5cIiAKKy5cIiBDcmVhdGVkICBXZWQgTWFyIDEwIDE3OjQyOjEyIDE5OTksIEFuZHJlYXMgRGlsZ2VyCisuVEggVVVJRF9HRU5FUkFURSAzICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCit1dWlkX2dlbmVyYXRlLCB1dWlkX2dlbmVyYXRlX3JhbmRvbSwgdXVpZF9nZW5lcmF0ZV90aW1lIFwtIGNyZWF0ZSBhIG5ldyB1bmlxdWUgVVVJRCB2YWx1ZQorLlNIIFNZTk9QU0lTCisubmYKKy5CICNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKy5zcAorLkJJICJ2b2lkIHV1aWRfZ2VuZXJhdGUodXVpZF90ICIgb3V0ICk7CisuQkkgInZvaWQgdXVpZF9nZW5lcmF0ZV9yYW5kb20odXVpZF90ICIgb3V0ICk7CisuQkkgInZvaWQgdXVpZF9nZW5lcmF0ZV90aW1lKHV1aWRfdCAiIG91dCApOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgdXVpZF9nZW5lcmF0ZQorZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyB1bml2ZXJzYWxseSB1bmlxdWUgaWRlbnRpZmllciAoVVVJRCkuICBUaGUgdXVpZCB3aWxsCitiZSBnZW5lcmF0ZWQgYmFzZWQgb24gaGlnaC1xdWFsaXR5IHJhbmRvbW5lc3MgZnJvbSAKKy5JUiAvZGV2L3VyYW5kb20gLCAKK2lmIGF2YWlsYWJsZS4gIElmIGl0IGlzIG5vdCBhdmFpbGFibGUsIHRoZW4gCisuQiB1dWlkX2dlbmVyYXRlIAord2lsbCB1c2UgYW4gYWx0ZXJuYXRpdmUgYWxnb3JpdGhtIHdoaWNoIHVzZXMgdGhlIGN1cnJlbnQgdGltZSwgdGhlCitsb2NhbCBldGhlcm5ldCBNQUMgYWRkcmVzcyAoaWYgYXZhaWxhYmxlKSwgYW5kIHJhbmRvbSBkYXRhIGdlbmVyYXRlZAordXNpbmcgYSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvci4KKy5zcAorVGhlIAorLkIgdXVpZF9nZW5lcmF0ZV9yYW5kb20KK2Z1bmN0aW9uIGZvcmNlcyB0aGUgdXNlIG9mIHRoZSBhbGwtcmFuZG9tIFVVSUQgZm9ybWF0LCBldmVuIGlmCithIGhpZ2gtcXVhbGl0eSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciAoaS5lLiwgCisuSVIgL2Rldi91cmFuZG9tICkKK2lzIG5vdCBhdmFpbGFibGUsIGluIHdoaWNoIGNhc2UgYSBwc2V1ZG8tcmFuZG9tCitnZW5lcmF0b3Igd2lsbCBiZSBzdWJzaXR1dGVkLiAgTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYSBwc2V1ZG8tcmFuZG9tCitnZW5lcmF0b3IgbWF5IGNvbXByb21pc2UgdGhlIHVuaXF1ZW5lc3Mgb2YgVVVJRCdzCitnZW5lcmF0ZWQgaW4gdGhpcyBmYXNoaW9uLgorLnNwCitUaGUKKy5CIHV1aWRfZ2VuZXJhdGVfdGltZSAKK2Z1bmN0aW9uIGZvcmNlcyB0aGUgdXNlIG9mIHRoZSBhbHRlcm5hdGl2ZSBhbGdvcml0aG0gd2hpY2ggdXNlcyB0aGUKK2N1cnJlbnQgdGltZSBhbmQgdGhlIGxvY2FsIGV0aGVybmV0IE1BQyBhZGRyZXNzIChpZiBhdmFpbGFibGUpLgorVGhpcyBhbGdvcml0aG0gdXNlZCB0byBiZSB0aGUgZGVmYXVsdCBvbmUgdXNlZCB0byBnZW5lcmF0ZSBVVUlELCBidXQKK2JlY2F1c2Ugb2YgdGhlIHVzZSBvZiB0aGUgZXRoZXJuZXQgTUFDIGFkZHJlc3MsIGl0IGNhbiBsZWFrCitpbmZvcm1hdGlvbiBhYm91dCB3aGVuIGFuZCB3aGVyZSB0aGUgVVVJRCB3YXMgZ2VuZXJhdGVkLiAgVGhpcyBjYW4gY2F1c2UKK3ByaXZhY3kgcHJvYmxlbXMgaW4gc29tZSBhcHBsaWNhdGlvbnMsIHNvIHRoZQorLkIgdXVpZF9nZW5lcmF0ZQorZnVuY3Rpb24gb25seSB1c2VzIHRoaXMgYWxnb3JpdGhtIGlmIGEgaGlnaC1xdWFsaXR5IHNvdXJjZSBvZgorcmFuZG9tbmVzcyBpcyBub3QgYXZhaWxhYmxlLiAgCisuc3AKK1RoZSBVVUlEIGlzIDE2IGJ5dGVzICgxMjggYml0cykgbG9uZywgd2hpY2ggZ2l2ZXMgYXBwcm94aW1hdGVseSAzLjR4MTBeMzgKK3VuaXF1ZSB2YWx1ZXMgKHRoZXJlIGFyZSBhcHByb3hpbWF0ZWx5IDEwXjgwIGVsZW1udGFyeSBwYXJ0aWNsZXMgaW4KK3RoZSB1bml2ZXJzZSBhY2NvcmRpbmcgdG8gQ2FybCBTYWdhbidzCisuSVIgQ29zbW9zICkuCitUaGUgbmV3IFVVSUQgY2FuIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCB1bmlxdWUgYW1vbmcgYWxsIFVVSURzIGNyZWF0ZWQKK29uIHRoZSBsb2NhbCBzeXN0ZW0sIGFuZCBhbW9uZyBVVUlEcyBjcmVhdGVkIG9uIG90aGVyIHN5c3RlbXMgaW4gdGhlIHBhc3QKK2FuZCBpbiB0aGUgZnV0dXJlLgorLlNIIFJFVFVSTiBWQUxVRQorVGhlIG5ld2x5IGNyZWF0ZWQgVVVJRCBpcyByZXR1cm5lZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHBvaW50ZWQgdG8gYnkKKy5JUiBvdXQgLgorLlNIICJDT05GT1JNSU5HIFRPIgorT1NGIERDRSAxLjEKKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFkuIFRzJ28KKy5TSCBBVkFJTEFCSUxJVFkKKy5VUiBodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworLlVFCisuU0ggIlNFRSBBTFNPIgorLkJSIHV1aWQgKDMpLAorLkJSIHV1aWRnZW4gKDEpLAorLkJSIHV1aWRfY2xlYXIgKDMpLAorLkJSIHV1aWRfY29tcGFyZSAoMyksCisuQlIgdXVpZF9jb3B5ICgzKSwKKy5CUiB1dWlkX2lzX251bGwgKDMpLAorLkJSIHV1aWRfcGFyc2UgKDMpLAorLkJSIHV1aWRfdGltZSAoMyksCisuQlIgdXVpZF91bnBhcnNlICgzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfaXNfbnVsbC4zLmluIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfaXNfbnVsbC4zLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNDI4OGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9pc19udWxsLjMuaW4KQEAgLTAsMCArMSw2MiBAQAorLlwiIENvcHlyaWdodCAxOTk5IEFuZHJlYXMgRGlsZ2VyIChhZGlsZ2VyQGVuZWwudWNhbGdhcnkuY2EpCisuXCIKKy5cIiAlQmVnaW4tSGVhZGVyJQorLlwiIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLlwiIGFyZSBtZXQ6CisuXCIgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIGFuZCB0aGUgZW50aXJlIHBlcm1pc3Npb24gbm90aWNlIGluIGl0cyBlbnRpcmV0eSwKKy5cIiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKy5cIiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy5cIiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLlwiIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorLlwiICAgIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3IKKy5cIiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisuXCIgCisuXCIgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKy5cIiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworLlwiIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIEFMTCBPRgorLlwiIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKy5cIiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisuXCIgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQKKy5cIiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKy5cIiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisuXCIgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisuXCIgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKy5cIiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLlwiIERBTUFHRS4KKy5cIiAlRW5kLUhlYWRlciUKKy5cIiAKKy5cIiBDcmVhdGVkICBXZWQgTWFyIDEwIDE3OjQyOjEyIDE5OTksIEFuZHJlYXMgRGlsZ2VyCisuVEggVVVJRF9JU19OVUxMIDMgIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK3V1aWRfaXNfbnVsbCBcLSBjb21wYXJlIHRoZSB2YWx1ZSBvZiB0aGUgVVVJRCB0byB0aGUgTlVMTCB2YWx1ZQorLlNIIFNZTk9QU0lTCisubmYKKy5CICNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKy5zcAorLkJJICJpbnQgdXVpZF9pc19udWxsKHV1aWRfdCAiIHV1ICk7CisuZmkKKy5TSCBERVNDUklQVElPTgorVGhlCisuQiB1dWlkX2lzX251bGwKK2Z1bmN0aW9uIGNvbXBhcmVzIHRoZSB2YWx1ZSBvZiB0aGUgc3VwcGxpZWQgVVVJRCB2YXJpYWJsZQorLkkgdXUKK3RvIHRoZSBOVUxMIHZhbHVlLiAgSWYgdGhlIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBOVUxMIFVVSUQsIDEgaXMgcmV0dXJuZWQsCitvdGhlcndpc2UgMCBpcyByZXR1cm5lZC4KKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFkuIFRzJ28KKy5TSCBBVkFJTEFCSUxJVFkKKy5VUiBodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworLlVFCisuU0ggIlNFRSBBTFNPIgorLkJSIHV1aWQgKDMpLAorLkJSIHV1aWRfY2xlYXIgKDMpLAorLkJSIHV1aWRfY29tcGFyZSAoMyksCisuQlIgdXVpZF9jb3B5ICgzKSwKKy5CUiB1dWlkX2dlbmVyYXRlICgzKSwKKy5CUiB1dWlkX3RpbWUgKDMpLAorLkJSIHV1aWRfcGFyc2UgKDMpLAorLkJSIHV1aWRfdW5wYXJzZSAoMykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX3BhcnNlLjMuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9wYXJzZS4zLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NWFjZmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF9wYXJzZS4zLmluCkBAIC0wLDAgKzEsNzEgQEAKKy5cIiBDb3B5cmlnaHQgMTk5OSBBbmRyZWFzIERpbGdlciAoYWRpbGdlckBlbmVsLnVjYWxnYXJ5LmNhKQorLlwiCisuXCIgJUJlZ2luLUhlYWRlciUKKy5cIiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy5cIiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy5cIiBhcmUgbWV0OgorLlwiIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisuXCIgICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisuXCIgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy5cIiAzLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUKKy5cIiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisuXCIgICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorLlwiIAorLlwiIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisuXCIgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKKy5cIiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKy5cIiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisuXCIgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorLlwiIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisuXCIgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisuXCIgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgorLlwiIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLlwiIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisuXCIgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgTk9UIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy5cIiBEQU1BR0UuCisuXCIgJUVuZC1IZWFkZXIlCisuXCIgCisuXCIgQ3JlYXRlZCAgV2VkIE1hciAxMCAxNzo0MjoxMiAxOTk5LCBBbmRyZWFzIERpbGdlcgorLlRIIFVVSURfUEFSU0UgMyAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQordXVpZF9wYXJzZSBcLSBjb252ZXJ0IGFuIGlucHV0IFVVSUQgc3RyaW5nIGludG8gYmluYXJ5IHJlcHJlc2VudGF0aW9uCisuU0ggU1lOT1BTSVMKKy5uZgorLkIgI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorLnNwCisuQkkgImludCB1dWlkX3BhcnNlKCBjaGFyICoiIGluICIsIHV1aWRfdCAiIHV1ICk7CisuZmkKKy5TSCBERVNDUklQVElPTgorVGhlCisuQiB1dWlkX3BhcnNlCitmdW5jdGlvbiBjb252ZXJ0cyB0aGUgVVVJRCBzdHJpbmcgZ2l2ZW4gYnkKKy5JIGluCitpbnRvIHRoZSBiaW5hcnkgcmVwcmVzZW50YXRpb24uICBUaGUgaW5wdXQgVVVJRCBpcyBhIHN0cmluZyBvZiB0aGUgZm9ybQorMWI0ZTI4YmFcLTJmYTFcLTExZDJcLTg4M2ZcLWI5YTc2MWJkZTNmYiAoaW4KKy5CUiBwcmludGYgKDMpCitmb3JtYXQgIiUwOHhcLSUwNHhcLSUwNHhcLSUwNHhcLSUwMTJ4IiwgMzYgYnl0ZXMgcGx1cyB0aGUgdHJhaWxpbmcgJ1xcMCcpLgorLlNIIFJFVFVSTiBWQUxVRQorVXBvbiBzdWNjZXNzZnVsbHkgcGFyc2luZyB0aGUgaW5wdXQgc3RyaW5nLCAwIGlzIHJldHVybmVkLCBhbmQgdGhlIFVVSUQgaXMKK3N0b3JlZCBpbiB0aGUgbG9jYXRpb24gcG9pbnRlZCB0byBieQorLklSIHV1ICwKK290aGVyd2lzZSBcLTEgaXMgcmV0dXJuZWQuCisuU0ggIkNPTkZPUk1JTkcgVE8iCitPU0YgRENFIDEuMQorLlNIIEFVVEhPUgorVGhlb2RvcmUgWS4gVHMnbworLlNIIEFWQUlMQUJJTElUWQorLlVSIGh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCisuVUUKKy5TSCAiU0VFIEFMU08iCisuQlIgdXVpZCAoMyksCisuQlIgdXVpZF9jbGVhciAoMyksCisuQlIgdXVpZF9jb21wYXJlICgzKSwKKy5CUiB1dWlkX2NvcHkgKDMpLAorLkJSIHV1aWRfZ2VuZXJhdGUgKDMpLAorLkJSIHV1aWRfaXNfbnVsbCAoMyksCisuQlIgdXVpZF90aW1lICgzKSwKKy5CUiB1dWlkX3VucGFyc2UgKDMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF90aW1lLjMuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF90aW1lLjMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE0YzcwMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX3RpbWUuMy5pbgpAQCAtMCwwICsxLDc0IEBACisuXCIgQ29weXJpZ2h0IDE5OTkgQW5kcmVhcyBEaWxnZXIgKGFkaWxnZXJAZW5lbC51Y2FsZ2FyeS5jYSkKKy5cIgorLlwiICVCZWdpbi1IZWFkZXIlCisuXCIgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisuXCIgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisuXCIgYXJlIG1ldDoKKy5cIiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorLlwiICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisuXCIgMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisuXCIgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorLlwiICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy5cIiAKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorLlwiIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisuXCIgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQUxMIE9GCisuXCIgV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorLlwiIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKy5cIiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVAorLlwiIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorLlwiIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKy5cIiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy5cIiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorLlwiIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisuXCIgREFNQUdFLgorLlwiICVFbmQtSGVhZGVyJQorLlwiIAorLlwiIENyZWF0ZWQgIFdlZCBNYXIgMTAgMTc6NDI6MTIgMTk5OSwgQW5kcmVhcyBEaWxnZXIKKy5USCBVVUlEX1RJTUUgMyAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQordXVpZF90aW1lIFwtIGV4dHJhY3QgdGhlIHRpbWUgYXQgd2hpY2ggdGhlIFVVSUQgd2FzIGNyZWF0ZWQKKy5TSCBTWU5PUFNJUworLm5mCisuQiAjaW5jbHVkZSA8dXVpZC91dWlkLmg+Cisuc3AKKy5CSSAidGltZV90IHV1aWRfdGltZSh1dWlkX3QgIiB1dSAiLCBzdHJ1Y3QgdGltZXZhbCAqIiByZXRfdHYgKQorLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgdXVpZF90aW1lCitmdW5jdGlvbiBleHRyYWN0cyB0aGUgdGltZSBhdCB3aGljaCB0aGUgc3VwcGxpZWQgdGltZS1iYXNlZCBVVUlECisuSSB1dQord2FzIGNyZWF0ZWQuICBOb3RlIHRoYXQgdGhlIFVVSUQgY3JlYXRpb24gdGltZSBpcyBvbmx5IGVuY29kZWQgd2l0aGluIAorY2VydGFpbiB0eXBlcyBvZiBVVUlEcy4gIFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgcmVhc29uYWJseSBleHBlY3QgdG8gCitleHRyYWN0IHRoZSBjcmVhdGlvbiB0aW1lIGZvciBVVUlEcyBjcmVhdGVkIHdpdGggdGhlIAorLkJSIHV1aWRfZ2VuZXJhdGVfdGltZSAoMykKK2Z1bmN0aW9uLiAgSXQgbWF5IG9yIG1heSBub3Qgd29yayB3aXRoIFVVSURzIGNyZWF0ZWQgYnkgb3RoZXIgbWVjaGFuaXNtcy4KKy5TSCAiUkVUVVJOIFZBTFVFUyIKK1RoZSB0aW1lIGF0IHdoaWNoIHRoZSBVVUlEIHdhcyBjcmVhdGVkLCBpbiBzZWNvbmRzIHNpbmNlIEphbnVhcnkgMSwgMTk3MCBHTVQKKyh0aGUgZXBvY2gpLCBpcyByZXR1cm5lZCAoc2VlCisuQlIgdGltZSAiKDIpKS4iCitUaGUgdGltZSBhdCB3aGljaCB0aGUgVVVJRCB3YXMgY3JlYXRlZCwgaW4gc2Vjb25kcyBhbmQgbWljcm9zZWNvbmRzIHNpbmNlCit0aGUgZXBvY2gsIGlzIGFsc28gc3RvcmVkIGluIHRoZSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5CisuSSByZXRfdHYKKyhzZWUKKy5CUiBnZXR0aW1lb2ZkYXkgIigyKSkuIgorLlNIIEFVVEhPUgorVGhlb2RvcmUgWS4gVHMnbworLlNIIEFWQUlMQUJJTElUWQorLlVSIGh0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LworaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCisuVUUKKy5TSCAiU0VFIEFMU08iCisuQlIgdXVpZCAoMyksCisuQlIgdXVpZF9jbGVhciAoMyksCisuQlIgdXVpZF9jb21wYXJlICgzKSwKKy5CUiB1dWlkX2NvcHkgKDMpLAorLkJSIHV1aWRfZ2VuZXJhdGUgKDMpLAorLkJSIHV1aWRfaXNfbnVsbCAoMyksCisuQlIgdXVpZF9wYXJzZSAoMyksCisuQlIgdXVpZF91bnBhcnNlICgzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfdGltZS5jIGIvZTJmc3Byb2dzL2xpYi91dWlkL3V1aWRfdGltZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3ZmQzMzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF90aW1lLmMKQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiB1dWlkX3RpbWUuYyAtLS0gSW50ZXJwcmV0IHRoZSB0aW1lIGZpZWxkIGZyb20gYSB1dWlkLiAgVGhpcyBwcm9ncmFtCisgKiAJdmlvbGF0ZXMgdGhlIFVVSUQgYWJzdHJhY3Rpb24gYmFycmllciBieSByZWFjaGluZyBpbnRvIHRoZSBndXRzCisgKglvZiBhIFVVSUQgYW5kIGludGVycHJldGluZyBpdC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTgsIDE5OTkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCBhbmQgdGhlIGVudGlyZSBwZXJtaXNzaW9uIG5vdGljZSBpbiBpdHMgZW50aXJldHksCisgKiAgICBpbmNsdWRpbmcgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudGllcy4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisgKiAgICBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yCisgKiAgICB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBBTEwgT0YKKyAqIFdISUNIIEFSRSBIRVJFQlkgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UCisgKiBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAqIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUKKyAqIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisgKiBEQU1BR0UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZmRlZiBfV0lOMzIKKyNkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNkZWZpbmUgVVVJRCBNWVVVSUQKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAidXVpZFAuaCIKKwordGltZV90IHV1aWRfdGltZShjb25zdCB1dWlkX3QgdXUsIHN0cnVjdCB0aW1ldmFsICpyZXRfdHYpCit7CisJc3RydWN0IHRpbWV2YWwJCXR2OworCXN0cnVjdCB1dWlkCQl1dWlkOworCXVpbnQzMl90CQloaWdoOworCXVpbnQ2NF90CQljbG9ja19yZWc7CisKKwl1dWlkX3VucGFjayh1dSwgJnV1aWQpOworCisJaGlnaCA9IHV1aWQudGltZV9taWQgfCAoKHV1aWQudGltZV9oaV9hbmRfdmVyc2lvbiAmIDB4RkZGKSA8PCAxNik7CisJY2xvY2tfcmVnID0gdXVpZC50aW1lX2xvdyB8ICgodWludDY0X3QpIGhpZ2ggPDwgMzIpOworCisJY2xvY2tfcmVnIC09ICgoKHVpbnQ2NF90KSAweDAxQjIxREQyKSA8PCAzMikgKyAweDEzODE0MDAwOworCXR2LnR2X3NlYyA9IGNsb2NrX3JlZyAvIDEwMDAwMDAwOworCXR2LnR2X3VzZWMgPSAoY2xvY2tfcmVnICUgMTAwMDAwMDApIC8gMTA7CisKKwlpZiAocmV0X3R2KQorCQkqcmV0X3R2ID0gdHY7CisKKwlyZXR1cm4gdHYudHZfc2VjOworfQorCitpbnQgdXVpZF90eXBlKGNvbnN0IHV1aWRfdCB1dSkKK3sKKwlzdHJ1Y3QgdXVpZAkJdXVpZDsKKworCXV1aWRfdW5wYWNrKHV1LCAmdXVpZCk7CisJcmV0dXJuICgodXVpZC50aW1lX2hpX2FuZF92ZXJzaW9uID4+IDEyKSAmIDB4Rik7Cit9CisKK2ludCB1dWlkX3ZhcmlhbnQoY29uc3QgdXVpZF90IHV1KQoreworCXN0cnVjdCB1dWlkCQl1dWlkOworCWludAkJCXZhcjsKKworCXV1aWRfdW5wYWNrKHV1LCAmdXVpZCk7CisJdmFyID0gdXVpZC5jbG9ja19zZXE7CisKKwlpZiAoKHZhciAmIDB4ODAwMCkgPT0gMCkKKwkJcmV0dXJuIFVVSURfVkFSSUFOVF9OQ1M7CisJaWYgKCh2YXIgJiAweDQwMDApID09IDApCisJCXJldHVybiBVVUlEX1ZBUklBTlRfRENFOworCWlmICgodmFyICYgMHgyMDAwKSA9PSAwKQorCQlyZXR1cm4gVVVJRF9WQVJJQU5UX01JQ1JPU09GVDsKKwlyZXR1cm4gVVVJRF9WQVJJQU5UX09USEVSOworfQorCisjaWZkZWYgREVCVUcKK3N0YXRpYyBjb25zdCBjaGFyICp2YXJpYW50X3N0cmluZyhpbnQgdmFyaWFudCkKK3sKKwlzd2l0Y2ggKHZhcmlhbnQpIHsKKwljYXNlIFVVSURfVkFSSUFOVF9OQ1M6CisJCXJldHVybiAiTkNTIjsKKwljYXNlIFVVSURfVkFSSUFOVF9EQ0U6CisJCXJldHVybiAiRENFIjsKKwljYXNlIFVVSURfVkFSSUFOVF9NSUNST1NPRlQ6CisJCXJldHVybiAiTWljcm9zb2Z0IjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gIk90aGVyIjsKKwl9Cit9CisKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwl1dWlkX3QJCWJ1ZjsKKwl0aW1lX3QJCXRpbWVfcmVnOworCXN0cnVjdCB0aW1ldmFsCXR2OworCWludAkJdHlwZSwgdmFyaWFudDsKKworCWlmIChhcmdjICE9IDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgdXVpZFxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCWlmICh1dWlkX3BhcnNlKGFyZ3ZbMV0sIGJ1ZikpIHsKKwkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIFVVSUQ6ICVzXG4iLCBhcmd2WzFdKTsKKwkJZXhpdCgxKTsKKwl9CisJdmFyaWFudCA9IHV1aWRfdmFyaWFudChidWYpOworCXR5cGUgPSB1dWlkX3R5cGUoYnVmKTsKKwl0aW1lX3JlZyA9IHV1aWRfdGltZShidWYsICZ0dik7CisKKwlwcmludGYoIlVVSUQgdmFyaWFudCBpcyAlZCAoJXMpXG4iLCB2YXJpYW50LCB2YXJpYW50X3N0cmluZyh2YXJpYW50KSk7CisJaWYgKHZhcmlhbnQgIT0gVVVJRF9WQVJJQU5UX0RDRSkgeworCQlwcmludGYoIldhcm5pbmc6IFRoaXMgcHJvZ3JhbSBvbmx5IGtub3dzIGhvdyB0byBpbnRlcnByZXQgIgorCQkgICAgICAgIkRDRSBVVUlEcy5cblx0VGhlIHJlc3Qgb2YgdGhlIG91dHB1dCBpcyBsaWtlbHkgIgorCQkgICAgICAgInRvIGJlIGluY29ycmVjdCEhXG4iKTsKKwl9CisJcHJpbnRmKCJVVUlEIHR5cGUgaXMgJWQiLCB0eXBlKTsKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIDE6CisJCXByaW50ZigiICh0aW1lIGJhc2VkKVxuIik7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJcHJpbnRmKCIgKERDRSlcbiIpOworCQlicmVhazsKKwljYXNlIDM6CisJCXByaW50ZigiIChuYW1lLWJhc2VkKVxuIik7CisJCWJyZWFrOworCWNhc2UgNDoKKwkJcHJpbnRmKCIgKHJhbmRvbSlcbiIpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlwcmludGYoIlxuIik7CisJfQorCWlmICh0eXBlICE9IDEpIHsKKwkJcHJpbnRmKCJXYXJuaW5nOiBub3QgYSB0aW1lLWJhc2VkIFVVSUQsIHNvIFVVSUQgdGltZSAiCisJCSAgICAgICAiZGVjb2Rpbmcgd2lsbCBsaWtlbHkgbm90IHdvcmshXG4iKTsKKwl9CisJcHJpbnRmKCJVVUlEIHRpbWUgaXM6ICglbGQsICVsZCk6ICVzXG4iLCB0di50dl9zZWMsIChsb25nKXR2LnR2X3VzZWMsCisJICAgICAgIGN0aW1lKCZ0aW1lX3JlZykpOworCisJcmV0dXJuIDA7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX3R5cGVzLmguaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF90eXBlcy5oLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMWZmNGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF90eXBlcy5oLmluCkBAIC0wLDAgKzEsNTAgQEAKKy8qIAorICogSWYgbGludXgvdHlwZXMuaCBpcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQsIGFzc3VtZSBpdCBoYXMgZGVmaW5lZAorICogZXZlcnl0aGluZyB3ZSBuZWVkLiAgKGNyb3NzIGZpbmdlcnMpICBPdGhlciBoZWFkZXIgZmlsZXMgbWF5IGhhdmUgCisgKiBhbHNvIGRlZmluZWQgdGhlIHR5cGVzIHRoYXQgd2UgbmVlZC4KKyAqLworI2lmICghZGVmaW5lZChfU1RESU5UX0gpICYmICFkZWZpbmVkKF9VVUlEX1NURElOVF9IKSkKKyNkZWZpbmUgX1VVSURfU1RESU5UX0gKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Cit0eXBlZGVmIHNpZ25lZCBjaGFyIGludDhfdDsKKworI2lmIChAU0laRU9GX0lOVEAgPT0gOCkKK3R5cGVkZWYgaW50CQlpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBpbnQJdWludDY0X3Q7CisjZWxpZiAoQFNJWkVPRl9MT05HQCA9PSA4KQordHlwZWRlZiBsb25nCQlpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBsb25nCXVpbnQ2NF90OworI2VsaWYgKEBTSVpFT0ZfTE9OR19MT05HQCA9PSA4KQorI2lmIGRlZmluZWQoX19HTlVDX18pCit0eXBlZGVmIF9fc2lnbmVkX18gbG9uZyBsb25nIAlpbnQ2NF90OworI2Vsc2UKK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyAJaW50NjRfdDsKKyNlbmRpZgordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcJdWludDY0X3Q7CisjZW5kaWYKKworI2lmIChAU0laRU9GX0lOVEAgPT0gMikKK3R5cGVkZWYJaW50CQlpbnQxNl90OwordHlwZWRlZgl1bnNpZ25lZCBpbnQJdWludDE2X3Q7CisjZWxpZiAoQFNJWkVPRl9TSE9SVEAgPT0gMikKK3R5cGVkZWYJc2hvcnQJCWludDE2X3Q7Cit0eXBlZGVmCXVuc2lnbmVkIHNob3J0CXVpbnQxNl90OworI2Vsc2UKKyAgPz09ZXJyb3I6IHVuZGVmaW5lZCAxNiBiaXQgdHlwZQorI2VuZGlmCisKKyNpZiAoQFNJWkVPRl9JTlRAID09IDQpCit0eXBlZGVmCWludAkJaW50MzJfdDsKK3R5cGVkZWYJdW5zaWduZWQgaW50CXVpbnQzMl90OworI2VsaWYgKEBTSVpFT0ZfTE9OR0AgPT0gNCkKK3R5cGVkZWYJbG9uZwkJaW50MzJfdDsKK3R5cGVkZWYJdW5zaWduZWQgbG9uZwl1aW50MzJfdDsKKyNlbGlmIChAU0laRU9GX1NIT1JUQCA9PSA0KQordHlwZWRlZglzaG9ydAkJaW50MzJfdDsKK3R5cGVkZWYJdW5zaWduZWQgc2hvcnQJdWludDMyX3Q7CisjZWxzZQorID89PSBlcnJvcjogdW5kZWZpbmVkIDMyIGJpdCB0eXBlCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF91bnBhcnNlLjMuaW4gYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZF91bnBhcnNlLjMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU4Mzg0NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkX3VucGFyc2UuMy5pbgpAQCAtMCwwICsxLDc5IEBACisuXCIgQ29weXJpZ2h0IDE5OTkgQW5kcmVhcyBEaWxnZXIgKGFkaWxnZXJAZW5lbC51Y2FsZ2FyeS5jYSkKKy5cIgorLlwiICVCZWdpbi1IZWFkZXIlCisuXCIgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisuXCIgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisuXCIgYXJlIG1ldDoKKy5cIiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLlwiICAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorLlwiICAgIGluY2x1ZGluZyB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50aWVzLgorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisuXCIgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLlwiICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisuXCIgMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCisuXCIgICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorLlwiICAgIHdyaXR0ZW4gcGVybWlzc2lvbi4KKy5cIiAKKy5cIiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorLlwiIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisuXCIgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQUxMIE9GCisuXCIgV0hJQ0ggQVJFIEhFUkVCWSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRQorLlwiIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKy5cIiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVAorLlwiIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUgorLlwiIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKKy5cIiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy5cIiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorLlwiIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIE5PVCBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisuXCIgREFNQUdFLgorLlwiICVFbmQtSGVhZGVyJQorLlwiIAorLlwiIENyZWF0ZWQgIFdlZCBNYXIgMTAgMTc6NDI6MTIgMTk5OSwgQW5kcmVhcyBEaWxnZXIKKy5USCBVVUlEX1VOUEFSU0UgMyAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQordXVpZF91bnBhcnNlIFwtIGNvbnZlcnQgYW4gVVVJRCBmcm9tIGJpbmFyeSByZXByZXNlbnRhdGlvbiB0byBhIHN0cmluZworLlNIIFNZTk9QU0lTCisubmYKKy5CICNpbmNsdWRlIDx1dWlkL3V1aWQuaD4KKy5zcAorLkJJICJ2b2lkIHV1aWRfdW5wYXJzZSh1dWlkX3QgIiB1dSAiLCBjaGFyICoiIG91dCApOworLkJJICJ2b2lkIHV1aWRfdW5wYXJzZV91cHBlcih1dWlkX3QgIiB1dSAiLCBjaGFyICoiIG91dCApOworLkJJICJ2b2lkIHV1aWRfdW5wYXJzZV9sb3dlcih1dWlkX3QgIiB1dSAiLCBjaGFyICoiIG91dCApOworLmZpCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgdXVpZF91bnBhcnNlCitmdW5jdGlvbiBjb252ZXJ0cyB0aGUgc3VwcGxpZWQgVVVJRAorLkkgdXUKK2Zyb20gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpbnRvIGEgMzZcLWJ5dGUgc3RyaW5nIChwbHVzIHRhaWxpbmcgJ1xcMCcpCitvZiB0aGUgZm9ybSAxYjRlMjhiYVwtMmZhMVwtMTFkMlwtODgzZlwtMDAxNmQzY2NhNDI3IGFuZCBzdG9yZXMgdGhpcyAKK3ZhbHVlIGluIHRoZSBjaGFyYWN0ZXIgc3RyaW5nIHBvaW50ZWQgdG8gYnkKKy5JUiBvdXQgLiAgCitUaGUgY2FzZSBvZiB0aGUgaGV4IGRpZ2l0cyByZXR1cm5lZCBieSAKKy5CIHV1aWRfdW5wYXJzZQorbWF5IGJlIHVwcGVyIG9yIGxvd2VyIGNhc2UsIGFuZCBpcworZGVwZW5kZW50IG9uIHRoZSBzeXN0ZW0tZGVwZW5kZW50IGxvY2FsIGRlZmF1bHQuICAKKy5QUAorSWYgdGhlIGNhc2Ugb2YgdGhlCitoZXggZGlnaXRzIGlzIGltcG9ydGFudCB0aGVuIHRoZSBmdW5jdGlvbnMKKy5CIHV1aWRfdW5wYXJzZV91cHBlcgorYW5kIAorLkIgdXVpZF91bnBhcnNlX2xvd2VyCittYXkgYmUgdXNlZC4KKy5TSCAiQ09ORk9STUlORyBUTyIKK09TRiBEQ0UgMS4xCisuU0ggQVVUSE9SCitUaGVvZG9yZSBZLiBUcydvCisuU0ggQVZBSUxBQklMSVRZCisuVVIgaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC8KKy5VRQorLlNIICJTRUUgQUxTTyIKKy5CUiB1dWlkICgzKSwKKy5CUiB1dWlkX2NsZWFyICgzKSwKKy5CUiB1dWlkX2NvbXBhcmUgKDMpLAorLkJSIHV1aWRfY29weSAoMyksCisuQlIgdXVpZF9nZW5lcmF0ZSAoMyksCisuQlIgdXVpZF90aW1lICgzKSwKKy5CUiB1dWlkX2lzX251bGwgKDMpLAorLkJSIHV1aWRfcGFyc2UgKDMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZGQuaCBiL2UyZnNwcm9ncy9saWIvdXVpZC91dWlkZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MWY0YjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbGliL3V1aWQvdXVpZGQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogRGVmaW5pdGlvbnMgdXNlZCBieSB0aGUgdXVpZGQgZGFlbW9uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgYW5kIHRoZSBlbnRpcmUgcGVybWlzc2lvbiBub3RpY2UgaW4gaXRzIGVudGlyZXR5LAorICogICAgaW5jbHVkaW5nIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnRpZXMuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICogICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvcgorICogICAgd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisgKiBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworICogT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgQUxMIE9GCisgKiBXSElDSCBBUkUgSEVSRUJZIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVAorICogT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFCisgKiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBOT1QgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdFLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfVVVJRF9VVUlERF9ICisjZGVmaW5lIF9VVUlEX1VVSUREX0gKKworI2RlZmluZSBVVUlERF9ESVIJCSIvdmFyL2xpYi9saWJ1dWlkIgorI2RlZmluZSBVVUlERF9TT0NLRVRfUEFUSAlVVUlERF9ESVIgIi9yZXF1ZXN0IgorI2RlZmluZSBVVUlERF9QSURGSUxFX1BBVEgJVVVJRERfRElSICIvdXVpZGQucGlkIgorI2RlZmluZSBVVUlERF9QQVRICQkiL3Vzci9zYmluL3V1aWRkIgorCisjZGVmaW5lIFVVSUREX09QX0dFVFBJRAkJCTAKKyNkZWZpbmUgVVVJRERfT1BfR0VUX01BWE9QCQkxCisjZGVmaW5lIFVVSUREX09QX1RJTUVfVVVJRAkJMgorI2RlZmluZSBVVUlERF9PUF9SQU5ET01fVVVJRAkJMworI2RlZmluZSBVVUlERF9PUF9CVUxLX1RJTUVfVVVJRAkJNAorI2RlZmluZSBVVUlERF9PUF9CVUxLX1JBTkRPTV9VVUlECTUKKyNkZWZpbmUgVVVJRERfTUFYX09QCQkJVVVJRERfT1BfQlVMS19SQU5ET01fVVVJRAorCitleHRlcm4gdm9pZCB1dWlkX19nZW5lcmF0ZV90aW1lKHV1aWRfdCBvdXQsIGludCAqbnVtKTsKK2V4dGVybiB2b2lkIHV1aWRfX2dlbmVyYXRlX3JhbmRvbSh1dWlkX3Qgb3V0LCBpbnQgKm51bSk7CisKKyNlbmRpZiAvKiBfVVVJRF9VVUlEX0ggKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL0FuZHJvaWQubWsgYi9lMmZzcHJvZ3MvbWlzYy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZjI3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMzg5IEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgbWtlMmZzCitta2UyZnNfc3JjX2ZpbGVzIDo9IFwKKwlta2UyZnMuYyBcCisJdXRpbC5jIFwKKwlta19odWdlZmlsZXMuYyBcCisJZGVmYXVsdF9wcm9maWxlLmMgXAorCWNyZWF0ZV9pbm9kZS5jCisKK21rZTJmc19jX2luY2x1ZGVzIDo9IFwKKwlleHRlcm5hbC9lMmZzcHJvZ3MvZTJmc2NrCisKK21rZTJmc19jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK21rZTJmc19zaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyZnMgXAorCWxpYmV4dDJfYmxraWQgXAorCWxpYmV4dDJfdXVpZCBcCisJbGliZXh0Ml9xdW90YSBcCisJbGliZXh0Ml9jb21fZXJyIFwKKwlsaWJleHQyX2UycAorCitta2UyZnNfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQobWtlMmZzX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChta2UyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKG1rZTJmc19jZmxhZ3MpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKG1rZTJmc19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChta2UyZnNfc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBta2UyZnMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKG1rZTJmc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQobWtlMmZzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChta2UyZnNfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJChta2UyZnNfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9NT0RVTEUgOj0gbWtlMmZzX2hvc3QKK0xPQ0FMX01PRFVMRV9TVEVNIDo9IG1rZTJmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEJ1aWxkIHR1bmUyZnMKKyMKK3R1bmUyZnNfc3JjX2ZpbGVzIDo9IFwKKwl0dW5lMmZzLmMgXAorCXV0aWwuYworCit0dW5lMmZzX2NfaW5jbHVkZXMgOj0gXAorCWV4dGVybmFsL2UyZnNwcm9ncy9lMmZzY2sKKwordHVuZTJmc19jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsIC1ETk9fUkVDT1ZFUlkKKwordHVuZTJmc19zaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyZnMgXAorCWxpYmV4dDJfY29tX2VyciBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml9xdW90YSBcCisJbGliZXh0Ml91dWlkIFwKKwlsaWJleHQyX2UycAorCit0dW5lMmZzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworCit0dW5lMmZzX3N0YXRpY19saWJyYXJpZXMgOj0gXAorCWxpYmV4dDJfY29tX2VyciBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml9xdW90YSBcCisJbGliZXh0Ml91dWlkX3N0YXRpYyBcCisJbGliZXh0Ml9lMnAgXAorCWxpYmV4dDJmcworCit0dW5lMmZzX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzIDo9IGxpYmMKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKHR1bmUyZnNfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKHR1bmUyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKHR1bmUyZnNfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKHR1bmUyZnNfc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQodHVuZTJmc19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSB0dW5lMmZzCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKHR1bmUyZnNfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKHR1bmUyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKHR1bmUyZnNfY2ZsYWdzKQorTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSAkKHR1bmUyZnNfc3RhdGljX2xpYnJhcmllcykgJCh0dW5lMmZzX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzKQorTE9DQUxfRk9SQ0VfU1RBVElDX0VYRUNVVEFCTEUgOj0gdHJ1ZQorTE9DQUxfTU9EVUxFIDo9IHR1bmUyZnNfc3RhdGljCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKHR1bmUyZnNfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKHR1bmUyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKHR1bmUyZnNfY2ZsYWdzKSAtREJVSUxEX0FTX0xJQgorTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSAkKHR1bmUyZnNfc3RhdGljX2xpYnJhcmllcykgJCh0dW5lMmZzX3N5c3RlbV9zdGF0aWNfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxpYnR1bmUyZnMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKHR1bmUyZnNfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKHR1bmUyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKHR1bmUyZnNfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJCh0dW5lMmZzX3NoYXJlZF9saWJyYXJpZXMpKQorTE9DQUxfTU9EVUxFIDo9IHR1bmUyZnNfaG9zdAorTE9DQUxfTU9EVUxFX1NURU0gOj0gdHVuZTJmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCdWlsZCBiYWRibG9ja3MKKyMKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitiYWRibG9ja3Nfc3JjX2ZpbGVzIDo9IFwKKwliYWRibG9ja3MuYworCitiYWRibG9ja3NfY19pbmNsdWRlcyA6PQorCitiYWRibG9ja3NfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbAorCitiYWRibG9ja3Nfc2hhcmVkX2xpYnJhcmllcyA6PSBcCisJbGliZXh0MmZzIFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfdXVpZCBcCisJbGliZXh0Ml9ibGtpZCBcCisJbGliZXh0Ml9lMnAKKworYmFkYmxvY2tzX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmMKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGJhZGJsb2Nrc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoYmFkYmxvY2tzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChiYWRibG9ja3NfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGJhZGJsb2Nrc19zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChiYWRibG9ja3Nfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9NT0RVTEUgOj0gYmFkYmxvY2tzCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGJhZGJsb2Nrc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoYmFkYmxvY2tzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChiYWRibG9ja3NfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJChiYWRibG9ja3Nfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9NT0RVTEUgOj0gYmFkYmxvY2tzX2hvc3QKK0xPQ0FMX01PRFVMRV9TVEVNIDo9IGJhZGJsb2NrcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBCdWlsZCBjaGF0dHIKKyMKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitjaGF0dHJfc3JjX2ZpbGVzIDo9IFwKKwljaGF0dHIuYworCitjaGF0dHJfY19pbmNsdWRlcyA6PSBcCisJZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitjaGF0dHJfY2ZsYWdzIDo9IC1PMiAtZyAtVyAtV2FsbAorCitjaGF0dHJfc2hhcmVkX2xpYnJhcmllcyA6PSBcCisJbGliZXh0Ml9jb21fZXJyIFwKKwlsaWJleHQyX2UycAorCitjaGF0dHJfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2hhdHRyX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChjaGF0dHJfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGNoYXR0cl9jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoY2hhdHRyX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKGNoYXR0cl9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBjaGF0dHIKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2hhdHRyX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChjaGF0dHJfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGNoYXR0cl9jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkc3VmZml4IC1ob3N0LCAkKGNoYXR0cl9zaGFyZWRfbGlicmFyaWVzKSkKK0xPQ0FMX01PRFVMRSA6PSBjaGF0dHJfaG9zdAorTE9DQUxfTU9EVUxFX1NURU0gOj0gY2hhdHRyCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9FWEVDVVRBQkxFKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEJ1aWxkIGxzYXR0cgorIworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK2xzYXR0cl9zcmNfZmlsZXMgOj0gXAorCWxzYXR0ci5jCisKK2xzYXR0cl9jX2luY2x1ZGVzIDo9IFwKKwlleHRlcm5hbC9lMmZzcHJvZ3MvbGliCisKK2xzYXR0cl9jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2xzYXR0cl9zaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfZTJwCisKK2xzYXR0cl9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2xzYXR0cl9zdGF0aWNfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfZTJwCisKK2xzYXR0cl9zeXN0ZW1fc3RhdGljX2xpYnJhcmllcyA6PSBsaWJjCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsc2F0dHJfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxzYXR0cl9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobHNhdHRyX2NmbGFncykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChsc2F0dHJfc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQobHNhdHRyX3N5c3RlbV9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfTU9EVUxFIDo9IGxzYXR0cgorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsc2F0dHJfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxzYXR0cl9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobHNhdHRyX2NmbGFncykKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gJChsc2F0dHJfc3RhdGljX2xpYnJhcmllcykgJChsc2F0dHJfc3lzdGVtX3N0YXRpY19saWJyYXJpZXMpCitMT0NBTF9GT1JDRV9TVEFUSUNfRVhFQ1VUQUJMRSA6PSB0cnVlCitMT0NBTF9NT0RVTEUgOj0gbHNhdHRyX3N0YXRpYworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChsc2F0dHJfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGxzYXR0cl9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQobHNhdHRyX2NmbGFncykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChhZGRzdWZmaXggLWhvc3QsICQobHNhdHRyX3NoYXJlZF9saWJyYXJpZXMpKQorTE9DQUxfTU9EVUxFIDo9IGxzYXR0cl9ob3N0CitMT0NBTF9NT0RVTEVfU1RFTSA6PSBsc2F0dHIKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCisKK2luY2x1ZGUgJChCVUlMRF9IT1NUX0VYRUNVVEFCTEUpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgYmxraWQKKyMKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitibGtpZF9zcmNfZmlsZXMgOj0gXAorICAgIGJsa2lkLmMKKworYmxraWRfY19pbmNsdWRlcyA6PQorCitibGtpZF9jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2Jsa2lkX3NoYXJlZF9saWJyYXJpZXMgOj0gXAorICAgIGxpYmV4dDJmcyBcCisgICAgbGliZXh0Ml9ibGtpZCBcCisgICAgbGliZXh0Ml9jb21fZXJyIFwKKyAgICBsaWJleHQyX2UycAorCitibGtpZF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChibGtpZF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoYmxraWRfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGJsa2lkX2NmbGFncykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChibGtpZF9zaGFyZWRfbGlicmFyaWVzKQorTE9DQUxfU1lTVEVNX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChibGtpZF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBibGtpZAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgZTRjcnlwdAorZTRjcnlwdF9zcmNfZmlsZXMgOj0gZTRjcnlwdC5jCisKK2U0Y3J5cHRfY19pbmNsdWRlcyA6PSBcCisJZXh0ZXJuYWwvZTJmc3Byb2dzL2xpYgorCitlNGNyeXB0X2NmbGFncyA6PSAtTzIgLWcgLVcgLVdhbGwKKworZTRjcnlwdF9zaGFyZWRfbGlicmFyaWVzIDo9IGxpYmV4dDJmcyBsaWJleHQyX3V1aWQKKworZTRjcnlwdF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChlNGNyeXB0X3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChlNGNyeXB0X2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChlNGNyeXB0X2NmbGFncykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQoZTRjcnlwdF9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChlNGNyeXB0X3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9NT0RVTEUgOj0gZTRjcnlwdAorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoZTRjcnlwdF9zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQoZTRjcnlwdF9jX2luY2x1ZGVzKQorTE9DQUxfQ0ZMQUdTIDo9ICQoZTRjcnlwdF9jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoYWRkc3VmZml4IC1ob3N0LCAkKGU0Y3J5cHRfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9NT0RVTEUgOj0gZTRjcnlwdF9ob3N0CitMT0NBTF9NT0RVTEVfU1RFTSA6PSBlNGNyeXB0CitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfSE9TVF9FWEVDVVRBQkxFKQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQnVpbGQgZTJpbWFnZQorIworZTJpbWFnZV9zcmNfZmlsZXMgOj0gXAorCWUyaW1hZ2UuYworCitlMmltYWdlX2NfaW5jbHVkZXMgOj0gXAorCWV4dGVybmFsL2UyZnNwcm9ncy9saWIKKworZTJpbWFnZV9jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK2UyaW1hZ2Vfc2hhcmVkX2xpYnJhcmllcyA6PSBcCisJbGliZXh0MmZzIFwKKwlsaWJleHQyX2Jsa2lkIFwKKwlsaWJleHQyX2NvbV9lcnIgXAorCWxpYmV4dDJfcXVvdGEKKworZTJpbWFnZV9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcyA6PSBsaWJjCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gJChlMmltYWdlX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChlMmltYWdlX2NfaW5jbHVkZXMpCitta2UyZnNfY19pbmNsdWRlc0xPQ0FMX0NGTEFHUyA6PSAkKGUyaW1hZ2VfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGUyaW1hZ2Vfc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX1NZU1RFTV9TSEFSRURfTElCUkFSSUVTIDo9ICQoZTJpbWFnZV9zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSBlMmltYWdlCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGUyaW1hZ2Vfc3JjX2ZpbGVzKQorTE9DQUxfQ19JTkNMVURFUyA6PSAkKGUyaW1hZ2VfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKGUyaW1hZ2VfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJChlMmltYWdlX3NoYXJlZF9saWJyYXJpZXMpKQorTE9DQUxfTU9EVUxFIDo9IGUyaW1hZ2VfaG9zdAorTE9DQUxfTU9EVUxFX1NURU0gOj0gZTJpbWFnZQorTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvbWlzYy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQzNmMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSw4NDkgQEAKKyMKKyMgU3RhbmRhcmQgZTJmc3Byb2dzIHByb2xvZ3VlLi4uLgorIworCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAordG9wX2J1aWxkZGlyID0gLi4KK215X2RpciA9IG1pc2MKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK0BERUZSQUdfQ01UQEBMSU5VWF9DTVRARTRERUZSQUdfUFJPRz0gZTRkZWZyYWcKK0BERUZSQUdfQ01UQEBMSU5VWF9DTVRARTRERUZSQUdfTUFOPSBlNGRlZnJhZy44CisKK0BMSU5VWF9DTVRARTRDUllQVF9QUk9HID0gZTRjcnlwdAorQExJTlVYX0NNVEBFNENSWVBUX01BTj0gZTRjcnlwdC44CisKK0BJTUFHRVJfQ01UQEUySU1BR0VfUFJPRz0gZTJpbWFnZQorQElNQUdFUl9DTVRARTJJTUFHRV9NQU49IGUyaW1hZ2UuOAorCitAVVVJRERfQ01UQFVVSUREX1BST0c9IHV1aWRkCitAVVVJRERfQ01UQFVVSUREX01BTj0gdXVpZGQuOAorQFVVSUREX0NNVEBVVUlERF9QUk9GSUxFRD0gdXVpZGQucHJvZmlsZWQKKworQEJMS0lEX0NNVEBCTEtJRF9QUk9HPSBibGtpZAorQEJMS0lEX0NNVEBCTEtJRF9NQU49IGJsa2lkLjgKKworQEJMS0lEX0NNVEBGSU5ERlNfTElOSz0gZmluZGZzCitAQkxLSURfQ01UQEZJTkRGU19NQU49IGZpbmRmcy44CisKK0BGVVNFX0NNVEBGVVNFX1BST0c9IGZ1c2UyZnMKKworU1BST0dTPQkJbWtlMmZzIGJhZGJsb2NrcyB0dW5lMmZzIGR1bXBlMmZzICQoQkxLSURfUFJPRykgbG9nc2F2ZSBcCisJCQkkKEUySU1BR0VfUFJPRykgQEZTQ0tfUFJPR0AgZTJ1bmRvCitVU1BST0dTPQlta2xvc3QrZm91bmQgZmlsZWZyYWcgZTJmcmVlZnJhZyAkKFVVSUREX1BST0cpIFwKKwkJCSQoRTRERUZSQUdfUFJPRykgJChFNENSWVBUX1BST0cpICQoRlVTRV9QUk9HKQorU01BTlBBR0VTPQl0dW5lMmZzLjggbWtsb3N0K2ZvdW5kLjggbWtlMmZzLjggZHVtcGUyZnMuOCBiYWRibG9ja3MuOCBcCisJCQllMmxhYmVsLjggJChGSU5ERlNfTUFOKSAkKEJMS0lEX01BTikgJChFMklNQUdFX01BTikgXAorCQkJbG9nc2F2ZS44IGZpbGVmcmFnLjggZTJmcmVlZnJhZy44IGUydW5kby44IFwKKwkJCSQoVVVJRERfTUFOKSAkKEU0REVGUkFHX01BTikgJChFNENSWVBUX01BTikgQEZTQ0tfTUFOQAorRk1BTlBBR0VTPQlta2UyZnMuY29uZi41IGV4dDQuNQorCitVUFJPR1M9CQljaGF0dHIgbHNhdHRyIEBVVUlEX0NNVEAgdXVpZGdlbgorVU1BTlBBR0VTPQljaGF0dHIuMSBsc2F0dHIuMSBAVVVJRF9DTVRAIHV1aWRnZW4uMQorVU1BTlBBR0VTKz0JQEZVU0VfQ01UQCBmdXNlMmZzLjEKKworTFBST0dTPQkJQEUySU5JVFJEX1BST0dACisKK1RVTkUyRlNfT0JKUz0JdHVuZTJmcy5vIHV0aWwubyBqb3VybmFsLm8gcmVjb3ZlcnkubyByZXZva2UubworTUtMUEZfT0JKUz0JbWtsb3N0K2ZvdW5kLm8KK01LRTJGU19PQkpTPQlta2UyZnMubyB1dGlsLm8gZGVmYXVsdF9wcm9maWxlLm8gbWtfaHVnZWZpbGVzLm8gXAorCQkJY3JlYXRlX2lub2RlLm8KK0NIQVRUUl9PQkpTPQljaGF0dHIubworTFNBVFRSX09CSlM9CWxzYXR0ci5vCitVVUlER0VOX09CSlM9CXV1aWRnZW4ubworVVVJRERfT0JKUz0JdXVpZGQubworRFVNUEUyRlNfT0JKUz0JZHVtcGUyZnMubworQkFEQkxPQ0tTX09CSlM9CWJhZGJsb2Nrcy5vCitFMklNQUdFX09CSlM9CWUyaW1hZ2UubworRlNDS19PQkpTPQlmc2NrLm8gYmFzZV9kZXZpY2UubyBpc21vdW50ZWQubworQkxLSURfT0JKUz0JYmxraWQubworRklMRUZSQUdfT0JKUz0JZmlsZWZyYWcubworRTJVTkRPX09CSlM9ICBlMnVuZG8ubworRTRERUZSQUdfT0JKUz0JZTRkZWZyYWcubworRTRDUllQVF9PQkpTPSAgIGU0Y3J5cHQubworRTJGUkVFRlJBR19PQkpTPSBlMmZyZWVmcmFnLm8KK0UyRlVaWl9PQkpTPQllMmZ1enoubworRlVTRTJGU19PQkpTPQlmdXNlMmZzLm8gam91cm5hbC5vIHJlY292ZXJ5Lm8gcmV2b2tlLm8KKworUFJPRklMRURfVFVORTJGU19PQkpTPQlwcm9maWxlZC90dW5lMmZzLm8gcHJvZmlsZWQvdXRpbC5vCitQUk9GSUxFRF9NS0xQRl9PQkpTPQlwcm9maWxlZC9ta2xvc3QrZm91bmQubworUFJPRklMRURfTUtFMkZTX09CSlM9CXByb2ZpbGVkL21rZTJmcy5vIHByb2ZpbGVkL3V0aWwubyBwcm9maWxlZC9wcm9maWxlLm8gXAorCQkJcHJvZmlsZWQvcHJvZl9lcnIubyBwcm9maWxlZC9kZWZhdWx0X3Byb2ZpbGUubyBcCisJCQlwcm9maWxlZC9ta19odWdlZmlsZXMubyBwcm9maWxlZC9jcmVhdGVfaW5vZGUubworCitQUk9GSUxFRF9DSEFUVFJfT0JKUz0JcHJvZmlsZWQvY2hhdHRyLm8KK1BST0ZJTEVEX0xTQVRUUl9PQkpTPQlwcm9maWxlZC9sc2F0dHIubworUFJPRklMRURfVVVJREdFTl9PQkpTPQlwcm9maWxlZC91dWlkZ2VuLm8KK1BST0ZJTEVEX1VVSUREX09CSlM9CXByb2ZpbGVkL3V1aWRkLm8KK1BST0ZJTEVEX0RVTVBFMkZTX09CSlM9CXByb2ZpbGVkL2R1bXBlMmZzLm8KK1BST0ZJTEVEX0JBREJMT0NLU19PQkpTPQlwcm9maWxlZC9iYWRibG9ja3MubworUFJPRklMRURfRTJJTUFHRV9PQkpTPQlwcm9maWxlZC9lMmltYWdlLm8KK1BST0ZJTEVEX0ZTQ0tfT0JKUz0JcHJvZmlsZWQvZnNjay5vIHByb2ZpbGVkL2Jhc2VfZGV2aWNlLm8gXAorCQkJcHJvZmlsZWQvaXNtb3VudGVkLm8KK1BST0ZJTEVEX0JMS0lEX09CSlM9CXByb2ZpbGVkL2Jsa2lkLm8KK1BST0ZJTEVEX0ZJTEVGUkFHX09CSlM9CXByb2ZpbGVkL2ZpbGVmcmFnLm8KK1BST0ZJTEVEX0UyRlJFRUZSQUdfT0JKUz0gcHJvZmlsZWQvZTJmcmVlZnJhZy5vCitQUk9GSUxFRF9FMlVORE9fT0JKUz0JcHJvZmlsZWQvZTJ1bmRvLm8KK1BST0ZJTEVEX0U0REVGUkFHX09CSlM9CXByb2ZpbGVkL2U0ZGVmcmFnLm8KK1BST0ZJTEVEX0U0Q1JZUFRfT0JKUz0JcHJvZmlsZWQvZTRjcnlwdC5vCitQUk9GSUxFRF9GVVNFMkZTX09KQlM9CXByb2ZpbGVkL2Z1c2UyZnMubyBwcm9maWxlZC9qb3VybmFsLm8gXAorCQkJcHJvZmlsZWQvcmVjb3ZlcnkubyBwcm9maWxlZC9yZXZva2UubworCitTUkNTPQkkKHNyY2RpcikvdHVuZTJmcy5jICQoc3JjZGlyKS9ta2xvc3QrZm91bmQuYyAkKHNyY2RpcikvbWtlMmZzLmMgJChzcmNkaXIpL21rX2h1Z2VmaWxlcy5jIFwKKwkJJChzcmNkaXIpL2NoYXR0ci5jICQoc3JjZGlyKS9sc2F0dHIuYyAkKHNyY2RpcikvZHVtcGUyZnMuYyBcCisJCSQoc3JjZGlyKS9iYWRibG9ja3MuYyAkKHNyY2RpcikvZnNjay5jICQoc3JjZGlyKS91dGlsLmMgXAorCQkkKHNyY2RpcikvdXVpZGdlbi5jICQoc3JjZGlyKS9ibGtpZC5jICQoc3JjZGlyKS9sb2dzYXZlLmMgXAorCQkkKHNyY2RpcikvZmlsZWZyYWcuYyAkKHNyY2RpcikvYmFzZV9kZXZpY2UuYyBcCisJCSQoc3JjZGlyKS9pc21vdW50ZWQuYyAkKHNyY2RpcikvZTJ1bmRvLmMgXAorCQkkKHNyY2RpcikvZTJmcmVlZnJhZy5jICQoc3JjZGlyKS9jcmVhdGVfaW5vZGUuYyBcCisJCSQoc3JjZGlyKS9mdXNlMmZzLmMgXAorCQkkKHNyY2RpcikvLi4vZGVidWdmcy9qb3VybmFsLmMgJChzcmNkaXIpLy4uL2UyZnNjay9yZXZva2UuYyBcCisJCSQoc3JjZGlyKS8uLi9lMmZzY2svcmVjb3ZlcnkuYworCitMSUJTPSAkKExJQkVYVDJGUykgJChMSUJDT01fRVJSKSAkKExJQlNVUFBPUlQpCitERVBMSUJTPSAkKExJQkVYVDJGUykgJChERVBMSUJDT01fRVJSKSAkKERFUExJQlNVUFBPUlQpCitQUk9GSUxFRF9MSUJTPSAkKFBST0ZJTEVEX0xJQkVYVDJGUykgJChQUk9GSUxFRF9MSUJDT01fRVJSKSAkKExJQlNVUFBPUlQpCitQUk9GSUxFRF9ERVBMSUJTPSAkKFBST0ZJTEVEX0xJQkVYVDJGUykgJChERVBQUk9GSUxFRF9MSUJDT01fRVJSKSAkKERFUExJQlNVUFBPUlQpCisKK1NUQVRJQ19MSUJTPSAkKExJQlNVUFBPUlQpICQoU1RBVElDX0xJQkVYVDJGUykgJChTVEFUSUNfTElCQ09NX0VSUikKK1NUQVRJQ19ERVBMSUJTPSAkKERFUExJQlNVUFBPUlQpICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBTVEFUSUNfTElCQ09NX0VSUikKKworTElCU19FMlA9ICQoTElCRTJQKSAkKExJQkNPTV9FUlIpCitERVBMSUJTX0UyUD0gJChMSUJFMlApICQoREVQTElCQ09NX0VSUikKKworQ09NUElMRV9FVD0JX0VUX0RJUl9PVkVSUklERT0kKHNyY2RpcikvLi4vbGliL2V0L2V0IC4uL2xpYi9ldC9jb21waWxlX2V0CisKKyMgVGhpcyBuYXN0eW5lc3MgaXMgbmVlZGVkIGJlY2F1c2Ugb2YgamZzX3VzZXIuaCBoYWNrZXJ5OyB3aGVuIHdlIGZpbmFsbHkKKyMgY2xlYW4gdXAgdGhpcyBtZXNzLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBkcm9wIGl0CitKT1VSTkFMX0NGTEFHUyA9IC1JJChzcmNkaXIpLy4uL2UyZnNjayAkKEFMTF9DRkxBR1MpIC1EREVCVUdGUworREVQRU5EX0NGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9lMmZzY2sKKworLmMubzoKKwkkKEUpICIJQ0MgJDwiCisJJChRKSAkKENDKSAtYyAkKEFMTF9DRkxBR1MpICQ8IC1vICRACisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CitAUFJPRklMRV9DTVRACSQoUSkgJChDQykgJChBTExfQ0ZMQUdTKSAtZyAtcGcgLW8gcHJvZmlsZWQvJCoubyAtYyAkPAorCithbGw6OiBwcm9maWxlZCAkKFNQUk9HUykgJChVUFJPR1MpICQoVVNQUk9HUykgJChTTUFOUEFHRVMpICQoVU1BTlBBR0VTKSBcCisJJChGTUFOUEFHRVMpICQoTFBST0dTKSAkKEU0REVGUkFHX1BST0cpICQoRTRDUllQVF9QUk9HUykgZTJmdXp6CisKK0BQUk9GSUxFX0NNVEBhbGw6OiB0dW5lMmZzLnByb2ZpbGVkIGJsa2lkLnByb2ZpbGVkIGUyaW1hZ2UucHJvZmlsZWQgXAorCWUydW5kby5wcm9maWxlZCBta2UyZnMucHJvZmlsZWQgZHVtcGUyZnMucHJvZmlsZWQgZnNjay5wcm9maWxlZCBcCisJbG9nc2F2ZS5wcm9maWxlZCBmaWxlZnJhZy5wcm9maWxlZCB1dWlkZ2VuLnByb2ZpbGVkICQoVVVJRERfUFJPRklMRUQpIFwKKwllMmltYWdlLnByb2ZpbGVkIGU0ZGVmcmFnLnByb2ZpbGVkIGU0Y3J5cHQucHJvZmlsZWQgXAorCWUyZnJlZWZyYWcucHJvZmlsZWQKKworcHJvZmlsZWQ6CitAUFJPRklMRV9DTVRACSQoRSkgIglNS0RJUiAkQCIKK0BQUk9GSUxFX0NNVEAJJChRKSBta2RpciBwcm9maWxlZAorCitta2UyZnMuY29uZjogJChzcmNkaXIpL21rZTJmcy5jb25mLmluCisJaWYgdGVzdCAtZiAkKHNyY2RpcikvbWtlMmZzLmNvbmYuY3VzdG9tLmluIDsgdGhlbiBcCisJCWNwICQoc3JjZGlyKS9ta2UyZnMuY29uZi5jdXN0b20uaW4gbWtlMmZzLmNvbmY7IFwKKwllbHNlIFwKKwkJY3AgJChzcmNkaXIpL21rZTJmcy5jb25mLmluIG1rZTJmcy5jb25mOyBcCisJZmkKKworZGVmYXVsdF9wcm9maWxlLmM6IG1rZTJmcy5jb25mICQoc3JjZGlyKS9wcm9maWxlLXRvLWMuYXdrCisJJChFKSAiCVBST0ZJTEVfVE9fQyBta2UyZnMuY29uZiIKKwkkKFEpICQoQVdLKSAtZiAkKHNyY2RpcikvcHJvZmlsZS10by1jLmF3ayA8IG1rZTJmcy5jb25mIFwKKwkJPiAgZGVmYXVsdF9wcm9maWxlLmMKK2ZpbmRzdXBlcjogZmluZHN1cGVyLm8KKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyBmaW5kc3VwZXIgZmluZHN1cGVyLm8gJChMSUJTKSAkKFNZU0xJQlMpCisKK3BhcnRpbmZvOiBwYXJ0aW5mby5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gcGFydGluZm8gcGFydGluZm8ubworCitlMmluaXRyZF9oZWxwZXI6IGUyaW5pdHJkX2hlbHBlci5vICQoREVQTElCUykgJChERVBMSUJCTEtJRCkgJChMSUJFWFQyRlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZTJpbml0cmRfaGVscGVyIGUyaW5pdHJkX2hlbHBlci5vICQoTElCUykgXAorCQkkKExJQkJMS0lEKSAkKExJQkVYVDJGUykgJChMSUJJTlRMKSAkKFNZU0xJQlMpCisKK3R1bmUyZnM6ICQoVFVORTJGU19PQkpTKSAkKERFUExJQlMpICQoREVQTElCU19FMlApICQoREVQTElCQkxLSUQpIFwKKwkJJChERVBMSUJVVUlEKSAkKExJQkVYVDJGUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyB0dW5lMmZzICQoVFVORTJGU19PQkpTKSAkKExJQlMpIFwKKwkJJChMSUJCTEtJRCkgJChMSUJVVUlEKSAkKExJQkVYVDJGUykgJChMSUJTX0UyUCkgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykgJChMSUJCTEtJRCkgJChMSUJNQUdJQykKKwordHVuZTJmcy5zdGF0aWM6ICQoVFVORTJGU19PQkpTKSAkKFNUQVRJQ19ERVBMSUJTKSAkKFNUQVRJQ19MSUJFMlApICQoREVQU1RBVElDX0xJQkJMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoTERGTEFHU19TVEFUSUMpIC1vIHR1bmUyZnMuc3RhdGljICQoVFVORTJGU19PQkpTKSBcCisJCSQoU1RBVElDX0xJQlMpICQoU1RBVElDX0xJQkJMS0lEKSAkKFNUQVRJQ19MSUJVVUlEKSBcCisJCSQoU1RBVElDX0xJQkUyUCkgJChMSUJJTlRMKSAkKFNZU0xJQlMpIFwKKwkJJChTVEFUSUNfTElCQkxLSUQpICQoTElCTUFHSUMpCisKK3R1bmUyZnMucHJvZmlsZWQ6ICQoVFVORTJGU19PQkpTKSAkKFBST0ZJTEVEX0RFUExJQlMpIFwKKwkJJChQUk9GSUxFRF9FMlApICQoREVQUFJPRklMRURfTElCQkxLSUQpICQoREVQUFJPRklMRURfTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gdHVuZTJmcy5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfVFVORTJGU19PQkpTKSAkKFBST0ZJTEVEX0xJQkJMS0lEKSBcCisJCSQoUFJPRklMRURfTElCVVVJRCkgJChQUk9GSUxFRF9MSUJFMlApIFwKKwkJJChMSUJJTlRMKSAkKFBST0ZJTEVEX0xJQlMpICQoU1lTTElCUykgJChQUk9GSUxFRF9MSUJCTEtJRCkgXAorCQkkKExJQk1BR0lDKQorCitibGtpZDogJChCTEtJRF9PQkpTKSAkKERFUExJQkJMS0lEKSAkKExJQkVYVDJGUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyBibGtpZCAkKEJMS0lEX09CSlMpICQoTElCQkxLSUQpICQoTElCSU5UTCkgXAorCQkkKExJQkVYVDJGUykgJChTWVNMSUJTKQorCitibGtpZC5zdGF0aWM6ICQoQkxLSURfT0JKUykgJChTVEFUSUNfREVQTElCUykgJChERVBTVEFUSUNfTElCQkxLSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gYmxraWQuc3RhdGljICQoQkxLSURfT0JKUykgJChTVEFUSUNfTElCUykgXAorCQkkKFNUQVRJQ19MSUJCTEtJRCkgJChMSUJJTlRMKSAkKFNZU0xJQlMpCisKK2Jsa2lkLnByb2ZpbGVkOiAkKEJMS0lEX09CSlMpICQoREVQUFJPRklMRURfTElCQkxLSUQpIFwKKwkJJChQUk9GSUxFRF9MSUJFWFQyRlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLWcgLXBnIC1vIGJsa2lkLnByb2ZpbGVkICQoUFJPRklMRURfQkxLSURfT0JKUykgXAorCQkkKFBST0ZJTEVEX0xJQkJMS0lEKSAkKExJQklOVEwpICQoUFJPRklMRURfTElCRVhUMkZTKSAkKFNZU0xJQlMpCisKK2UyaW1hZ2U6ICQoRTJJTUFHRV9PQkpTKSAkKERFUExJQlMpICQoREVQTElCQkxLSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZTJpbWFnZSAkKEUySU1BR0VfT0JKUykgJChMSUJTKSBcCisJCSQoTElCSU5UTCkgJChTWVNMSUJTKSAkKExJQkJMS0lEKSAkKExJQk1BR0lDKQorCitlMmltYWdlLnByb2ZpbGVkOiAkKEUySU1BR0VfT0JKUykgJChQUk9GSUxFRF9ERVBMSUJTKSAkKERFUExJQkJMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1nIC1wZyAtbyBlMmltYWdlLnByb2ZpbGVkIFwKKwkJJChQUk9GSUxFRF9FMklNQUdFX09CSlMpICQoUFJPRklMRURfTElCUykgJChMSUJJTlRMKSAkKFNZU0xJQlMpIFwKKwkJJChMSUJCTEtJRCkgJChMSUJNQUdJQykKKworZTJ1bmRvOiAkKEUyVU5ET19PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZTJ1bmRvICQoRTJVTkRPX09CSlMpICQoTElCUykgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKworZTJ1bmRvLnByb2ZpbGVkOiAkKEUyVU5ET19PQkpTKSAkKFBST0ZJTEVEX0RFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLWcgLXBnIC1vIGUydW5kby5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfRTJVTkRPX09CSlMpICQoUFJPRklMRURfTElCUykgJChMSUJJTlRMKSAkKFNZU0xJQlMpCisKK2U0ZGVmcmFnOiAkKEU0REVGUkFHX09CSlMpICQoREVQTElCUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyBlNGRlZnJhZyAkKEU0REVGUkFHX09CSlMpICQoTElCUykgXAorCQkkKFNZU0xJQlMpCisKK2U0Y3J5cHQ6ICQoRTRDUllQVF9PQkpTKSAkKERFUExJQlMpICQoREVQU1RBVElDX0xJQlVVSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZTRjcnlwdCAkKEU0Q1JZUFRfT0JKUykgXAorCQkkKExJQlVVSUQpICQoTElCUykKKworZTRkZWZyYWcucHJvZmlsZWQ6ICQoRTRERUZSQUdfT0JKUykgJChQUk9GSUxFRF9ERVBMSUJTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1nIC1wZyAtbyBlNGRlZnJhZy5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfRTRERUZSQUdfT0JKUykgJChQUk9GSUxFRF9MSUJTKSAkKFNZU0xJQlMpCisKK2U0Y3J5cHQucHJvZmlsZWQ6ICQoRTRDUllQVF9PQkpTKSAkKERFUFBST0ZJTEVEX0xJQlVVSUQpICQoUFJPRklMRURfREVQTElCUykKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gZTRjcnlwdC5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfRTRDUllQVF9PQkpTKSAkKFBST0ZJTEVEX0xJQlVVSUQpICQoUFJPRklMRURfTElCUykgXAorCQkkKFNZU0xJQlMpCisKK2Jhc2VfZGV2aWNlOiBiYXNlX2RldmljZS5jCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfQ0ZMQUdTKSAkKEFMTF9MREZMQUdTKSAkKHNyY2RpcikvYmFzZV9kZXZpY2UuYyBcCisJCS1EREVCVUcgLW8gYmFzZV9kZXZpY2UgJChTWVNMSUJTKQorCitjaGVjazo6IGJhc2VfZGV2aWNlCisJLi9iYXNlX2RldmljZSA8ICQoc3JjZGlyKS9iYXNlX2RldmljZS50c3QgPiBiYXNlX2RldmljZS5vdXQKKwljbXAgJChzcmNkaXIpL2Jhc2VfZGV2aWNlLnRzdCBiYXNlX2RldmljZS5vdXQKKworbWtsb3N0K2ZvdW5kOiAkKE1LTFBGX09CSlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gbWtsb3N0K2ZvdW5kICQoTUtMUEZfT0JKUykgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKworbWtlMmZzOiAkKE1LRTJGU19PQkpTKSAkKERFUExJQlMpICQoTElCRTJQKSAkKERFUExJQkJMS0lEKSAkKERFUExJQlVVSUQpIFwKKwkJJChMSUJFWFQyRlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gbWtlMmZzICQoTUtFMkZTX09CSlMpICQoTElCUykgJChMSUJCTEtJRCkgXAorCQkkKExJQlVVSUQpICQoTElCRVhUMkZTKSAkKExJQkUyUCkgJChMSUJJTlRMKSBcCisJCSQoU1lTTElCUykgJChMSUJNQUdJQykKKworbWtlMmZzLnN0YXRpYzogJChNS0UyRlNfT0JKUykgJChTVEFUSUNfREVQTElCUykgJChTVEFUSUNfTElCRTJQKSAkKERFUFNUQVRJQ19MSUJVVUlEKSBcCisJCSQoREVQU1RBVElDX0xJQkJMS0lEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoTERGTEFHU19TVEFUSUMpIC1vIG1rZTJmcy5zdGF0aWMgJChNS0UyRlNfT0JKUykgXAorCQkkKFNUQVRJQ19MSUJTKSAkKFNUQVRJQ19MSUJFMlApIFwKKwkJJChTVEFUSUNfTElCQkxLSUQpICQoU1RBVElDX0xJQlVVSUQpICQoTElCSU5UTCkgJChTWVNMSUJTKSBcCisJCSQoTElCTUFHSUMpCisKK21rZTJmcy5wcm9maWxlZDogJChNS0UyRlNfT0JKUykgJChQUk9GSUxFRF9ERVBMSUJTKSBcCisJJChQUk9GSUxFRF9MSUJFMlApICQoUFJPRklMRURfREVQTElCQkxLSUQpICQoUFJPRklMRURfREVQTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gbWtlMmZzLnByb2ZpbGVkIFwKKwkJJChQUk9GSUxFRF9NS0UyRlNfT0JKUykgJChQUk9GSUxFRF9MSUJCTEtJRCkgXAorCQkkKFBST0ZJTEVEX0xJQlVVSUQpICQoUFJPRklMRURfTElCRTJQKSBcCisJCSQoTElCSU5UTCkgJChQUk9GSUxFRF9MSUJTKSAkKFNZU0xJQlMpICQoTElCTUFHSUMpCisKK2NoYXR0cjogJChDSEFUVFJfT0JKUykgJChERVBMSUJTX0UyUCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyBjaGF0dHIgJChDSEFUVFJfT0JKUykgJChMSUJTX0UyUCkgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKworbHNhdHRyOiAkKExTQVRUUl9PQkpTKSAkKERFUExJQlNfRTJQKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1vIGxzYXR0ciAkKExTQVRUUl9PQkpTKSAkKExJQlNfRTJQKSBcCisJCSQoTElCSU5UTCkgJChTWVNMSUJTKQorCit1dWlkZ2VuOiAkKFVVSURHRU5fT0JKUykgJChERVBMSUJVVUlEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1vIHV1aWRnZW4gJChVVUlER0VOX09CSlMpICQoTElCVVVJRCkgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKwordXVpZGdlbi5wcm9maWxlZDogJChVVUlER0VOX09CSlMpICQoUFJPRklMRURfREVQTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gdXVpZGdlbi5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfVVVJREdFTl9PQkpTKSAkKFBST0ZJTEVEX0xJQlVVSUQpICQoTElCSU5UTCkgXAorCQkkKFNZU0xJQlMpCisKK3V1aWRkOiAkKFVVSUREX09CSlMpICQoREVQTElCVVVJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyB1dWlkZCAkKFVVSUREX09CSlMpICQoTElCVVVJRCkgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKwordXVpZGQucHJvZmlsZWQ6ICQoVVVJRERfT0JKUykgJChQUk9GSUxFRF9ERVBMSUJVVUlEKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1nIC1wZyAtbyB1dWlkZC5wcm9maWxlZCAkKFBST0ZJTEVEX1VVSUREX09CSlMpIFwKKwkJJChQUk9GSUxFRF9MSUJVVUlEKSAkKExJQklOVEwpICQoU1lTTElCUykKKworZHVtcGUyZnM6ICQoRFVNUEUyRlNfT0JKUykgJChERVBMSUJTKSAkKERFUExJQlNfRTJQKSAkKERFUExJQlVVSUQpICQoREVQTElCQkxLSUQpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZHVtcGUyZnMgJChEVU1QRTJGU19PQkpTKSAkKExJQlMpIFwKKwkJJChMSUJTX0UyUCkgJChMSUJVVUlEKSAkKExJQklOVEwpICQoU1lTTElCUykgJChMSUJCTEtJRCkgXAorCQkkKExJQk1BR0lDKQorCitkdW1wZTJmcy5wcm9maWxlZDogJChEVU1QRTJGU19PQkpTKSAkKFBST0ZJTEVEX0RFUExJQlMpIFwKKwkJJChQUk9GSUxFRF9MSUJFMlApICQoUFJPRklMRURfREVQTElCVVVJRCkgJChQUk9GSUxFRF9ERVBMSUJCTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gZHVtcGUyZnMucHJvZmlsZWQgXAorCQkkKFBST0ZJTEVEX0RVTVBFMkZTX09CSlMpICQoUFJPRklMRURfTElCUykgXAorCQkkKFBST0ZJTEVEX0xJQkUyUCkgJChQUk9GSUxFRF9MSUJVVUlEKSAkKExJQklOVEwpICQoU1lTTElCUykgXAorCQkkKFBST0ZJTEVEX0xJQkJMS0lEKSAkKExJQk1BR0lDKQorCitmc2NrOiAkKEZTQ0tfT0JKUykgJChERVBMSUJCTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtbyBmc2NrICQoRlNDS19PQkpTKSAkKExJQkJMS0lEKSBcCisJCSQoTElCSU5UTCkgJChTWVNMSUJTKQorCitmc2NrLnByb2ZpbGVkOiAkKEZTQ0tfT0JKUykgJChQUk9GSUxFRF9ERVBMSUJCTEtJRCkKKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gZnNjay5wcm9maWxlZCAkKFBST0ZJTEVEX0ZTQ0tfT0JKUykgXAorCQkkKFBST0ZJTEVEX0xJQkJMS0lEKSAkKExJQklOVEwpICQoU1lTTElCUykKKworYmFkYmxvY2tzOiAkKEJBREJMT0NLU19PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gYmFkYmxvY2tzICQoQkFEQkxPQ0tTX09CSlMpICQoTElCUykgXAorCQkkKExJQklOVEwpICQoU1lTTElCUykKKworYmFkYmxvY2tzLnByb2ZpbGVkOiAkKEJBREJMT0NLU19PQkpTKSAkKFBST0ZJTEVEX0RFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLWcgLXBnIC1vIGJhZGJsb2Nrcy5wcm9maWxlZCBcCisJCSQoUFJPRklMRURfQkFEQkxPQ0tTX09CSlMpICQoUFJPRklMRURfTElCUykgJChMSUJJTlRMKSBcCisJCSQoU1lTTElCUykKKworbG9nc2F2ZTogbG9nc2F2ZS5vCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gbG9nc2F2ZSBsb2dzYXZlLm8gJChTWVNMSUJTKQorCitsb2dzYXZlLnByb2ZpbGVkOiBsb2dzYXZlLm8KKwkkKEUpICIJTEQgJEAiCisJJChRKSAkKENDKSAkKEFMTF9MREZMQUdTKSAtZyAtcGcgLW8gbG9nc2F2ZS5wcm9maWxlZCBcCisJCXByb2ZpbGVkL2xvZ3NhdmUubyAkKFNZU0xJQlMpCisKK2UyZnJlZWZyYWc6ICQoRTJGUkVFRlJBR19PQkpTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1vIGUyZnJlZWZyYWcgJChFMkZSRUVGUkFHX09CSlMpIFwKKwkJJChMSUJTKSAkKFNZU0xJQlMpCisKK2UyZnJlZWZyYWcucHJvZmlsZWQ6ICQoRTJGUkVFRlJBR19PQkpTKSAkKFBST0ZJTEVEX0RFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLWcgLXBnIC1vIGUyZnJlZWZyYWcucHJvZmlsZWQgXAorCQkkKFBST0ZJTEVEX0UyRlJFRUZSQUdfT0JKUykgJChQUk9GSUxFRF9MSUJTKSAkKFNZU0xJQlMpCisKK2UyZnV6ejogJChFMkZVWlpfT0JKUykgJChERVBMSUJTKSAkKERFUExJQkJMS0lEKSAkKERFUExJQlVVSUQpIFwKKwkJJChMSUJFWFQyRlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZTJmdXp6ICQoRTJGVVpaX09CSlMpICQoTElCUykgXAorCQkkKExJQkJMS0lEKSAkKExJQlVVSUQpICQoTElCRVhUMkZTKSAkKFNZU0xJQlMpCisKK2ZpbGVmcmFnOiAkKEZJTEVGUkFHX09CSlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gZmlsZWZyYWcgJChGSUxFRlJBR19PQkpTKSAkKFNZU0xJQlMpCisKK2ZpbGVmcmFnLnByb2ZpbGVkOiAkKEZJTEVGUkFHX09CSlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLWcgLXBnIC1vIGZpbGVmcmFnLnByb2ZpbGVkIFwKKwkJJChQUk9GSUxFRF9GSUxFRlJBR19PQkpTKSAKKworZnVzZTJmczogJChGVVNFMkZTX09CSlMpICQoREVQTElCUykgJChERVBMSUJCTEtJRCkgJChERVBMSUJVVUlEKSBcCisJCSQoTElCRVhUMkZTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQ0MpICQoQUxMX0xERkxBR1MpIC1vIGZ1c2UyZnMgJChGVVNFMkZTX09CSlMpICQoTElCUykgXAorCQkkKExJQkZVU0UpICQoTElCQkxLSUQpICQoTElCVVVJRCkgJChMSUJFWFQyRlMpICQoTElCSU5UTCkgXAorCQkkKENMT0NLX0dFVFRJTUVfTElCKSAkKFNZU0xJQlMpCisKK2pvdXJuYWwubzogJChzcmNkaXIpLy4uL2RlYnVnZnMvam91cm5hbC5jCisJJChFKSAiCUNDICRAIgorCSQoUSkgJChDQykgLWMgJChKT1VSTkFMX0NGTEFHUykgLUkkKHNyY2RpcikgXAorCQkkKHNyY2RpcikvLi4vZGVidWdmcy9qb3VybmFsLmMgLW8gJEAKKworcmVjb3ZlcnkubzogJChzcmNkaXIpLy4uL2UyZnNjay9yZWNvdmVyeS5jCisJJChFKSAiCUNDICRAIgorCSQoUSkgJChDQykgLWMgJChKT1VSTkFMX0NGTEFHUykgLUkkKHNyY2RpcikgXAorCQkkKHNyY2RpcikvLi4vZTJmc2NrL3JlY292ZXJ5LmMgLW8gJEAKKworcmV2b2tlLm86ICQoc3JjZGlyKS8uLi9lMmZzY2svcmV2b2tlLmMKKwkkKEUpICIJQ0MgJEAiCisJJChRKSAkKENDKSAtYyAkKEpPVVJOQUxfQ0ZMQUdTKSAtSSQoc3JjZGlyKSBcCisJCSQoc3JjZGlyKS8uLi9lMmZzY2svcmV2b2tlLmMgLW8gJEAKKwordHN0X2lzbW91bnRlZDogJChzcmNkaXIpL2lzbW91bnRlZC5jICQoU1RBVElDX0xJQkVYVDJGUykgJChERVBMSUJDT01fRVJSKQorCSQoRSkgIglMRCAkQCIKKwkkKENDKSAtbyB0c3RfaXNtb3VudGVkICQoc3JjZGlyKS9pc21vdW50ZWQuYyAtRERFQlVHICQoQUxMX0NGTEFHUykgXAorCQkkKExJQkNPTV9FUlIpICQoU1lTTElCUykKKwordHVuZTJmcy44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvdHVuZTJmcy44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3R1bmUyZnMuOC5pbiB0dW5lMmZzLjgKKworbWtsb3N0K2ZvdW5kLjg6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9ta2xvc3QrZm91bmQuOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9ta2xvc3QrZm91bmQuOC5pbiBta2xvc3QrZm91bmQuOAorCitta2UyZnMuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL21rZTJmcy44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL21rZTJmcy44LmluIG1rZTJmcy44CisKK21rZTJmcy5jb25mLjU6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9ta2UyZnMuY29uZi41LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL21rZTJmcy5jb25mLjUuaW4gbWtlMmZzLmNvbmYuNQorCitleHQ0LjU6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9leHQ0LjUuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvJEAuaW4gJEAKKworZTJsYWJlbC44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvZTJsYWJlbC44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2UybGFiZWwuOC5pbiBlMmxhYmVsLjgKKworZTJ1bmRvLjg6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9lMnVuZG8uOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9lMnVuZG8uOC5pbiBlMnVuZG8uOAorCitmaW5kZnMuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2ZpbmRmcy44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2ZpbmRmcy44LmluIGZpbmRmcy44CisKK2UyaW1hZ2UuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2UyaW1hZ2UuOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9lMmltYWdlLjguaW4gZTJpbWFnZS44CisKK2U0ZGVmcmFnLjg6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9lNGRlZnJhZy44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2U0ZGVmcmFnLjguaW4gZTRkZWZyYWcuOAorCitlNGNyeXB0Ljg6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9lNGNyeXB0LjguaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvZTRjcnlwdC44LmluIGU0Y3J5cHQuOAorCitkdW1wZTJmcy44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvZHVtcGUyZnMuOC5pbiAKKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvZHVtcGUyZnMuOC5pbiBkdW1wZTJmcy44CisKK2JhZGJsb2Nrcy44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvYmFkYmxvY2tzLjguaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvYmFkYmxvY2tzLjguaW4gYmFkYmxvY2tzLjgJCisKK2ZzY2suODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2ZzY2suOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9mc2NrLjguaW4gZnNjay44IAorCitibGtpZC44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvYmxraWQuOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9ibGtpZC44LmluIGJsa2lkLjgKKworbG9nc2F2ZS44OiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvbG9nc2F2ZS44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2xvZ3NhdmUuOC5pbiBsb2dzYXZlLjgKKwordXVpZGQuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL3V1aWRkLjguaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvdXVpZGQuOC5pbiB1dWlkZC44CisKK2NoYXR0ci4xOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvY2hhdHRyLjEuaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvY2hhdHRyLjEuaW4gY2hhdHRyLjEgCisKK2Z1c2UyZnMuMTogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2Z1c2UyZnMuMS5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9mdXNlMmZzLjEuaW4gZnVzZTJmcy4xCisKK2xzYXR0ci4xOiAkKERFUF9TVUJTVElUVVRFKSAkKHNyY2RpcikvbHNhdHRyLjEuaW4gCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2xzYXR0ci4xLmluIGxzYXR0ci4xIAorCit1dWlkZ2VuLjE6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS91dWlkZ2VuLjEuaW4gCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3V1aWRnZW4uMS5pbiB1dWlkZ2VuLjEgCisKK2Jsa2lkLjE6ICQoREVQX1NVQlNUSVRVVEUpICQoc3JjZGlyKS9ibGtpZC4xLmluIAorCSQoRSkgIglTVUJTVCAkQCIKKwkkKFEpICQoU1VCU1RJVFVURV9VUFRJTUUpICQoc3JjZGlyKS9ibGtpZC4xLmluIGJsa2lkLjEgCisKK2UyZnJlZWZyYWcuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2UyZnJlZWZyYWcuOC5pbgorCSQoRSkgIglTVUJTVCAkQCIKKwlAJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL2UyZnJlZWZyYWcuOC5pbiBlMmZyZWVmcmFnLjgKKworZmlsZWZyYWcuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL2ZpbGVmcmFnLjguaW4KKwkkKEUpICIJU1VCU1QgJEAiCisJJChRKSAkKFNVQlNUSVRVVEVfVVBUSU1FKSAkKHNyY2RpcikvZmlsZWZyYWcuOC5pbiBmaWxlZnJhZy44CisKK2luc3RhbGxkaXJzOgorCSQoRSkgIglNS0lOU1RBTExESVJTICQoc2JpbmRpcikgJChyb290X3NiaW5kaXIpICQoYmluZGlyKSAkKG1hbjFkaXIpICQobWFuOGRpcikgJChsaWJkaXIpICQocm9vdF9zeXNjb25mZGlyKSIKKwkkKFEpICQoTUtJTlNUQUxMRElSUykgJChERVNURElSKSQoc2JpbmRpcikgXAorCQkkKERFU1RESVIpJChyb290X3NiaW5kaXIpICQoREVTVERJUikkKGJpbmRpcikgXAorCQkkKERFU1RESVIpJChtYW4xZGlyKSAkKERFU1RESVIpJChtYW44ZGlyKSBcCisJCSQoREVTVERJUikkKG1hbjFkaXIpICQoREVTVERJUikkKG1hbjVkaXIpIFwKKwkJJChERVNURElSKSQobGliZGlyKSAkKERFU1RESVIpLyQocm9vdF9zeXNjb25mZGlyKQorCitpbnN0YWxsOiBhbGwgJChTTUFOUEFHRVMpICQoVU1BTlBBR0VTKSBpbnN0YWxsZGlycworCSQoUSkgZm9yIGkgaW4gJChTUFJPR1MpOyBkbyBcCisJCSQoRVMpICIJSU5TVEFMTCAkKHJvb3Rfc2JpbmRpcikvJCRpIjsgXAorCQkkKElOU1RBTExfUFJPR1JBTSkgJCRpICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgZm9yIGkgaW4gJChVU1BST0dTKTsgZG8gXAorCQkkKEVTKSAiCUlOU1RBTEwgJChzYmluZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGkgJChERVNURElSKSQoc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgZm9yIGkgaW4gZXh0MiBleHQzIGV4dDQgZXh0NGRldjsgZG8gXAorCQkkKEVTKSAiCUxJTksgJChyb290X3NiaW5kaXIpL21rZnMuJCRpIjsgXAorCQkoY2QgJChERVNURElSKSQocm9vdF9zYmluZGlyKTsgXAorCQkJJChMTikgJChMSU5LX0lOU1RBTExfRkxBR1MpIG1rZTJmcyBta2ZzLiQkaSk7IFwKKwlkb25lCisJJChRKSAoY2QgJChERVNURElSKSQocm9vdF9zYmluZGlyKTsgXAorCQkkKExOKSAkKExJTktfSU5TVEFMTF9GTEFHUykgdHVuZTJmcyBlMmxhYmVsKQorCSQoUSkgaWYgdGVzdCAtbiAiJChGSU5ERlNfTElOSykiOyB0aGVuIFwKKwkJJChFUykgIglMSU5LICQocm9vdF9zYmluZGlyKS9maW5kZnMiOyBcCisJCShjZCAkKERFU1RESVIpJChyb290X3NiaW5kaXIpOyBcCisJCSQoTE4pICQoTElOS19JTlNUQUxMX0ZMQUdTKSB0dW5lMmZzICQoRklOREZTX0xJTkspKTsgXAorCWZpCisJJChRKSBmb3IgaSBpbiAkKFVQUk9HUyk7IGRvIFwKKwkJJChFUykgIglJTlNUQUxMICQoYmluZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGkgJChERVNURElSKSQoYmluZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKExQUk9HUyk7IGRvIFwKKwkJJChFUykgIglJTlNUQUxMICQobGliZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGkgJChERVNURElSKSQobGliZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKFNNQU5QQUdFUyk7IGRvIFwKKwkJZm9yIGogaW4gJChDT01QUkVTU19FWFQpOyBkbyBcCisJCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW44ZGlyKS8kJGkuJCRqOyBcCisJCWRvbmU7IFwKKwkJJChFUykgIglJTlNUQUxMX0RBVEEgJChtYW44ZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQobWFuOGRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgJChSTSkgLWYgJChERVNURElSKSQobWFuOGRpcikvbWtmcy5leHQyLjguZ3ogXAorCQkkKERFU1RESVIpJChtYW44ZGlyKS9ta2ZzLmV4dDMuOC5negorCSQoUSkgZm9yIGkgaW4gZXh0MiBleHQzIGV4dDQgZXh0NGRldjsgZG8gXAorCQkkKEVTKSAiCUxJTksgbWtmcy4kJGkuOCI7IFwKKwkJKGNkICQoREVTVERJUikkKG1hbjhkaXIpOyBcCisJCQkkKExOKSAkKExJTktfSU5TVEFMTF9GTEFHUykgbWtlMmZzLjggbWtmcy4kJGkuOCk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiAkKFVNQU5QQUdFUyk7IGRvIFwKKwkJZm9yIGogaW4gJChDT01QUkVTU19FWFQpOyBkbyBcCisJCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW4xZGlyKS8kJGkuJCRqOyBcCisJCWRvbmU7IFwKKwkJJChFUykgIglJTlNUQUxMX0RBVEEgJChtYW4xZGlyKS8kJGkiOyBcCisJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQobWFuMWRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgZm9yIGkgaW4gJChGTUFOUEFHRVMpOyBkbyBcCisJCWZvciBqIGluICQoQ09NUFJFU1NfRVhUKTsgZG8gXAorCQkJJChSTSkgLWYgJChERVNURElSKSQobWFuNWRpcikvJCRpLiQkajsgXAorCQlkb25lOyBcCisJCSQoRVMpICIJSU5TVEFMTF9EQVRBICQobWFuNWRpcikvJCRpIjsgXAorCQkkKElOU1RBTExfREFUQSkgJCRpICQoREVTVERJUikkKG1hbjVkaXIpLyQkaTsgXAorCWRvbmUKKwkkKFEpIGZvciBpIGluIGV4dDIgZXh0MzsgZG8gXAorCQkkKEVTKSAiCUxJTksgJCRpLjUiOyBcCisJCShjZCAkKERFU1RESVIpJChtYW41ZGlyKTsgXAorCQkJJChMTikgJChMSU5LX0lOU1RBTExfRkxBR1MpIGV4dDQuNSAkJGkuNSk7IFwKKwlkb25lCisJJChRKSBpZiB0ZXN0IC1mICQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmY7IHRoZW4gXAorCQlpZiBjbXAgLXMgJChERVNURElSKSQocm9vdF9zeXNjb25mZGlyKS9ta2UyZnMuY29uZiBcCisJCQlta2UyZnMuY29uZjsgdGhlbiBcCisJCQl0cnVlOyBcCisJCWVsc2UgXAorCQkJaWYgZ3JlcCAtcSBleHQ0ZGV2ICQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYgOyB0aGVuIFwKKwkJCQkkKEVTKSAiCUlOU1RBTExfREFUQSAkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYuZTJmc3Byb2dzLW5ldyI7IFwKKwkJCQkkKElOU1RBTExfREFUQSkgbWtlMmZzLmNvbmYgXAorCQkJCQkkKERFU1RESVIpJChyb290X3N5c2NvbmZkaXIpL21rZTJmcy5jb25mLmUyZnNwcm9ncy1uZXc7IFwKKwkJCQllY2hvICJXYXJuaW5nOiBpbnN0YWxsaW5nIG1rZTJmcy5jb25mIGluICQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYuZTJmc3Byb2dzLW5ldyI7IFwKKwkJCQllY2hvICJDaGVjayB0byBzZWUgaWYgeW91IG5lZWQgdG8gdXBkYXRlIHlvdXIgJChyb290X3N5c2NvbmZkaXIpL21rZTJmcy5jb25mIjsgXAorCQkJZWxzZSBcCisJCQkJJChFUykgIglJTlNUQUxMX0RBVEEgJChyb290X3N5c2NvbmZkaXIpL21rZTJmcy5jb25mIjsgXAorCQkJCW12ICQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYgXAorCQkJCSAgICQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYuZTJmc3Byb2dzLW9sZDsgXAorCQkJCSQoSU5TVEFMTF9EQVRBKSBta2UyZnMuY29uZiBcCisJCQkJCSQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmY7IFwKKwkJCQllY2hvICJZb3VyIG1rZTJmcy5jb25mIGlzIHRvbyBvbGQuICBCYWNraW5nIHVwIG9sZCB2ZXJzaW9uIGluIjsgXAorCQkJCWVjaG8gIiQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmYuZTJmc3Byb2dzLW9sZC4gIFBsZWFzZSBjaGVjayB0byBzZWUiOyBcCisJCQkJZWNobyAiaWYgeW91IGhhdmUgYW55IGxvY2FsIGN1c3RvbWl6YXRpb25zIHRoYXQgeW91IHdpc2ggdG8gcHJlc2VydmUuIjsgXAorCQkJZmk7IFwKKwkJCWVjaG8gIiAiOyBcCisJCWZpOyBcCisJZWxzZSBcCisJCSQoRVMpICIJSU5TVEFMTF9EQVRBICQocm9vdF9zeXNjb25mZGlyKS9ta2UyZnMuY29uZiI7IFwKKwkJJChJTlNUQUxMX0RBVEEpIG1rZTJmcy5jb25mIFwKKwkJCSQoREVTVERJUikkKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmY7IFwKKwlmaQorCitpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisJJChRKSBmb3IgaSBpbiAkKFNQUk9HUyk7IGRvIFwKKwkJJChFKSAiCVNUUklQICQocm9vdF9zYmluZGlyKS8kJGkiOyBcCisJCSQoU1RSSVApICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgZm9yIGkgaW4gJChVU1BST0dTKTsgZG8gXAorCQkkKEUpICIJU1RSSVAgJChzYmluZGlyKS8kJGkiOyBcCisJCSQoU1RSSVApICQoREVTVERJUikkKHNiaW5kaXIpLyQkaTsgXAorCWRvbmUKKwordW5pbnN0YWxsOgorCWZvciBpIGluICQoU1BST0dTKTsgZG8gXAorCQkkKFJNKSAtZiAkKERFU1RESVIpJChyb290X3NiaW5kaXIpLyQkaTsgXAorCWRvbmUKKwlmb3IgaSBpbiAkKFVTUFJPR1MpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKHNiaW5kaXIpLyQkaTsgXAorCWRvbmUKKwlmb3IgaSBpbiAkKExQUk9HUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQobGliZGlyKS8kJGk7IFwKKwlkb25lCisJJChSTSkgLWYgJChERVNURElSKSQocm9vdF9zYmluZGlyKS9ta2ZzLmV4dDIgXAorCQkJJChERVNURElSKSQocm9vdF9zYmluZGlyKS9ta2ZzLmV4dDMgXAorCQkJJChERVNURElSKSQocm9vdF9zYmluZGlyKS9ta2ZzLmV4dDQgXAorCQkJJChERVNURElSKSQocm9vdF9zYmluZGlyKS9ta2ZzLmV4dDRkZXYKKwlmb3IgaSBpbiAkKFVQUk9HUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQoYmluZGlyKS8kJGk7IFwKKwlkb25lCisJZm9yIGkgaW4gJChTTUFOUEFHRVMpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjhkaXIpLyQkaTsgXAorCWRvbmUKKwkkKFJNKSAtZiAkKERFU1RESVIpJChtYW44ZGlyKS9ta2ZzLmV4dDIuOCBcCisJCSQoREVTVERJUikkKG1hbjhkaXIpL21rZnMuZXh0My44IFwKKwkJJChERVNURElSKSQobWFuOGRpcikvbWtmcy5leHQ0LjggXAorCQkkKERFU1RESVIpJChtYW44ZGlyKS9ta2ZzLmV4dDRkZXYuOCBcCisJCSQoREVTVERJUikkKG1hbjhkaXIpL2ZzY2suZXh0Mi44IFwKKwkJJChERVNURElSKSQobWFuOGRpcikvZnNjay5leHQzLjggXAorCQkkKERFU1RESVIpJChtYW44ZGlyKS9mc2NrLmV4dDQuOCBcCisJCSQoREVTVERJUikkKG1hbjhkaXIpL2ZzY2suZXh0NGRldi44CisKKwlmb3IgaSBpbiAkKFVNQU5QQUdFUyk7IGRvIFwKKwkJJChSTSkgLWYgJChERVNURElSKSQobWFuMWRpcikvJCRpOyBcCisJZG9uZQorCWZvciBpIGluICQoRklOREZTX0xJTkspIGUybGFiZWwgOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCWZvciBpIGluICQoRk1BTlBBR0VTKTsgZG8gXAorCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW41ZGlyKS8kJGk7IFwKKwlkb25lCisJJChRKSBmb3IgaSBpbiBleHQyIGV4dDM7IGRvIFwKKwkJJChFUykgIglMSU5LICQkaS41IjsgXAorCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW41ZGlyKS8kJGkuNTsgXAorCWRvbmUKKwlpZiBjbXAgLXMgbWtlMmZzLmNvbmYgJChERVNURElSKS8kKHJvb3Rfc3lzY29uZmRpcikvbWtlMmZzLmNvbmY7IHRoZW4gXAorCQkkKFJNKSAkKERFU1RESVIpLyQocm9vdF9zeXNjb25mZGlyKS9ta2UyZnMuY29uZjsgXAorCWZpCisKK2NsZWFuOjoKKwkkKFJNKSAtZiAkKFNQUk9HUykgJChVU1BST0dTKSAkKFVQUk9HUykgJChVTUFOUEFHRVMpICQoU01BTlBBR0VTKSBcCisJCSQoRk1BTlBBR0VTKSBwcm9maWxlLmggXAorCQliYXNlX2RldmljZSBiYXNlX2RldmljZS5vdXQgbWtlMmZzLnN0YXRpYyBmaWxlZnJhZyBlMmZyZWVmcmFnIFwKKwkJZTJpbml0cmRfaGVscGVyIHBhcnRpbmZvIHByb2ZfZXJyLltjaF0gZGVmYXVsdF9wcm9maWxlLmMgXAorCQl1dWlkZCBlMmltYWdlIHR1bmUyZnMuc3RhdGljIHRzdF9pc21vdW50ZWQgZnNjay5wcm9maWxlZCBcCisJCWJsa2lkLnByb2ZpbGVkIHR1bmUyZnMucHJvZmlsZWQgZTJpbWFnZS5wcm9maWxlZCBcCisJCWUydW5kby5wcm9maWxlZCBta2UyZnMucHJvZmlsZWQgZHVtcGUyZnMucHJvZmlsZWQgXAorCQlsb2dzYXZlLnByb2ZpbGVkIGZpbGVmcmFnLnByb2ZpbGVkIHV1aWRnZW4ucHJvZmlsZWQgXAorCQl1dWlkZC5wcm9maWxlZCBlMmltYWdlLnByb2ZpbGVkIGUyZnV6eiBta2UyZnMuY29uZiBcCisJCXByb2ZpbGVkLyoubyBcIyogKi5zICoubyAqLmEgKn4gY29yZSBnbW9uLm91dAorCittb3N0bHljbGVhbjogY2xlYW4KK2Rpc3RjbGVhbjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlICQoc3JjZGlyKS9UQUdTICQoc3JjZGlyKS9NYWtlZmlsZS5pbi5vbGQKKworIyArKysgRGVwZW5kZW5jeSBsaW5lIGVhdGVyICsrKworIyAKKyMgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZvbGxvdy4gIFRoaXMgbXVzdCBiZSB0aGUgbGFzdCBzZWN0aW9uIGluCisjIHRoZSBNYWtlZmlsZS5pbiBmaWxlCisjCit0dW5lMmZzLm86ICQoc3JjZGlyKS90dW5lMmZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wbGF1c2libGUuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCBcCisgJChzcmNkaXIpL3V0aWwuaCAkKHRvcF9zcmNkaXIpL3ZlcnNpb24uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmgKK21rbG9zdCtmb3VuZC5vOiAkKHNyY2RpcikvbWtsb3N0K2ZvdW5kLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL3ZlcnNpb24uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmgKK21rZTJmcy5vOiAkKHNyY2RpcikvbWtlMmZzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzUC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQoc3JjZGlyKS91dGlsLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcGxhdXNpYmxlLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oICQodG9wX3NyY2RpcikvdmVyc2lvbi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvZHFibGtfdjIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvX3RyZWUuaCAkKHNyY2RpcikvbWtlMmZzLmggXAorICQoc3JjZGlyKS9jcmVhdGVfaW5vZGUuaCAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmgKK21rX2h1Z2VmaWxlcy5vOiAkKHNyY2RpcikvbWtfaHVnZWZpbGVzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzUC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQoc3JjZGlyKS91dGlsLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wcm9maWxlLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaCAkKHNyY2RpcikvbWtlMmZzLmgKK2NoYXR0ci5vOiAkKHNyY2RpcikvY2hhdHRyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaCBcCisgJCh0b3Bfc3JjZGlyKS92ZXJzaW9uLmgKK2xzYXR0ci5vOiAkKHNyY2RpcikvbHNhdHRyLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaCBcCisgJCh0b3Bfc3JjZGlyKS92ZXJzaW9uLmgKK2R1bXBlMmZzLm86ICQoc3JjZGlyKS9kdW1wZTJmcy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1qYmQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWxpc3QuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9wbGF1c2libGUuaCBcCisgJCh0b3Bfc3JjZGlyKS92ZXJzaW9uLmgKK2JhZGJsb2Nrcy5vOiAkKHNyY2RpcikvYmFkYmxvY2tzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaAorZnNjay5vOiAkKHNyY2RpcikvZnNjay5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL3ZlcnNpb24uaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmggJChzcmNkaXIpL2ZzY2suaAordXRpbC5vOiAkKHNyY2RpcikvdXRpbC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvbmxzLWVuYWJsZS5oICQoc3JjZGlyKS91dGlsLmgKK3V1aWRnZW4ubzogJChzcmNkaXIpL3V1aWRnZW4uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmgKK2Jsa2lkLm86ICQoc3JjZGlyKS9ibGtpZC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oCitsb2dzYXZlLm86ICQoc3JjZGlyKS9sb2dzYXZlLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oCitmaWxlZnJhZy5vOiAkKHNyY2RpcikvZmlsZWZyYWcuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2ZpZW1hcC5oCitiYXNlX2RldmljZS5vOiAkKHNyY2RpcikvYmFzZV9kZXZpY2UuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2ZzY2suaAoraXNtb3VudGVkLm86ICQoc3JjZGlyKS9pc21vdW50ZWQuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL2ZzY2suaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oCitlMnVuZG8ubzogJChzcmNkaXIpL2UydW5kby5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L25scy1lbmFibGUuaAorZTJmcmVlZnJhZy5vOiAkKHNyY2RpcikvZTJmcmVlZnJhZy5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHNyY2RpcikvZTJmcmVlZnJhZy5oCitjcmVhdGVfaW5vZGUubzogJChzcmNkaXIpL2NyZWF0ZV9pbm9kZS5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZmllbWFwLmggJChzcmNkaXIpL2NyZWF0ZV9pbm9kZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9ubHMtZW5hYmxlLmgKK2Z1c2UyZnMubzogJChzcmNkaXIpL2Z1c2UyZnMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaAoram91cm5hbC5vOiAkKHNyY2RpcikvLi4vZGVidWdmcy9qb3VybmFsLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQodG9wX3NyY2RpcikvZTJmc2NrL2pmc191c2VyLmggXAorICQodG9wX3NyY2RpcikvZTJmc2NrL2UyZnNjay5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmgKK3Jldm9rZS5vOiAkKHNyY2RpcikvLi4vZTJmc2NrL3Jldm9rZS5jICQoc3JjZGlyKS8uLi9lMmZzY2svamZzX3VzZXIuaCBcCisgJChzcmNkaXIpLy4uL2UyZnNjay9lMmZzY2suaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3Byb2ZpbGUuaCAkKHRvcF9idWlsZGRpcikvbGliL3N1cHBvcnQvcHJvZl9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9xdW90YWlvLmggJCh0b3Bfc3JjZGlyKS9saWIvc3VwcG9ydC9kcWJsa192Mi5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW9fdHJlZS5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMva2VybmVsLWpiZC5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9qZnNfY29tcGF0LmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtbGlzdC5oCityZWNvdmVyeS5vOiAkKHNyY2RpcikvLi4vZTJmc2NrL3JlY292ZXJ5LmMgJChzcmNkaXIpLy4uL2UyZnNjay9qZnNfdXNlci5oIFwKKyAkKHNyY2RpcikvLi4vZTJmc2NrL2UyZnNjay5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcHJvZmlsZS5oICQodG9wX2J1aWxkZGlyKS9saWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L3F1b3RhaW8uaCAkKHRvcF9zcmNkaXIpL2xpYi9zdXBwb3J0L2RxYmxrX3YyLmggXAorICQodG9wX3NyY2RpcikvbGliL3N1cHBvcnQvcXVvdGFpb190cmVlLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9rZXJuZWwtamJkLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2pmc19jb21wYXQuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2tlcm5lbC1saXN0LmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2JhZGJsb2Nrcy44LmluIGIvZTJmc3Byb2dzL21pc2MvYmFkYmxvY2tzLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBiOWZmMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2JhZGJsb2Nrcy44LmluCkBAIC0wLDAgKzEsMjM0IEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlRIIEJBREJMT0NLUyA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitiYWRibG9ja3MgXC0gc2VhcmNoIGEgZGV2aWNlIGZvciBiYWQgYmxvY2tzCisuU0ggU1lOT1BTSVMKKy5CIGJhZGJsb2NrcworWworLkIgXC1zdnduZkJYCitdCitbCisuQiBcLWIKKy5JIGJsb2NrX3NpemUKK10KK1sKKy5CIFwtYworLkkgYmxvY2tzX2F0X29uY2UKK10KK1sKKy5CIFwtZAorLkkgcmVhZF9kZWxheV9mYWN0b3IKK10KK1sKKy5CIFwtZQorLkkgbWF4X2JhZF9ibG9ja3MKK10KK1sKKy5CIFwtaQorLkkgaW5wdXRfZmlsZQorXQorWworLkIgXC1vCisuSSBvdXRwdXRfZmlsZQorXQorWworLkIgXC1wCisuSSBudW1fcGFzc2VzCitdCitbCisuQiBcLXQKKy5JIHRlc3RfcGF0dGVybgorXQorLkkgZGV2aWNlCitbCisuSSBsYXN0X2Jsb2NrCitdIFsKKy5JIGZpcnN0X2Jsb2NrCitdCisuU0ggREVTQ1JJUFRJT04KKy5CIGJhZGJsb2NrcworaXMgdXNlZCB0byBzZWFyY2ggZm9yIGJhZCBibG9ja3Mgb24gYSBkZXZpY2UgKHVzdWFsbHkgYSBkaXNrIHBhcnRpdGlvbikuCisuSSBkZXZpY2UKK2lzIHRoZSBzcGVjaWFsIGZpbGUgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIChlLmcKKy5JUiAvZGV2L2hkYzEgKS4KKy5JIGxhc3RfYmxvY2sKK2lzIHRoZSBsYXN0IGJsb2NrIHRvIGJlIGNoZWNrZWQ7IGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBsYXN0IGJsb2NrCitvbiB0aGUgZGV2aWNlIGlzIHVzZWQgYXMgYSBkZWZhdWx0LgorLkkgZmlyc3RfYmxvY2sKK2lzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBzdGFydGluZyBibG9jayBudW1iZXIKK2ZvciB0aGUgdGVzdCwgd2hpY2ggYWxsb3dzIHRoZSB0ZXN0aW5nIHRvIHN0YXJ0IGluIHRoZSBtaWRkbGUgb2YgdGhlCitkaXNrLiAgSWYgaXQgaXMgbm90IHNwZWNpZmllZCB0aGUgZmlyc3QgYmxvY2sgb24gdGhlIGRpc2sgaXMgdXNlZCBhcyBhIGRlZmF1bHQuCisuUFAKKy5CIEltcG9ydGFudCBub3RlOgorSWYgdGhlIG91dHB1dCBvZiAKKy5CIGJhZGJsb2NrcworaXMgZ29pbmcgdG8gYmUgZmVkIHRvIHRoZQorLkIgZTJmc2NrCitvciAKKy5CIG1rZTJmcworcHJvZ3JhbXMsIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSBibG9jayBzaXplIGlzIHByb3Blcmx5IHNwZWNpZmllZCwKK3NpbmNlIHRoZSBibG9jayBudW1iZXJzIHdoaWNoIGFyZSBnZW5lcmF0ZWQgYXJlIHZlcnkgZGVwZW5kZW50IG9uIHRoZSAKK2Jsb2NrIHNpemUgaW4gdXNlIGJ5IHRoZSBmaWxlc3lzdGVtLiAgIAorRm9yIHRoaXMgcmVhc29uLCBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0Cit1c2VycyAKKy5CIG5vdAorcnVuIAorLkIgYmFkYmxvY2tzIAorZGlyZWN0bHksIGJ1dCByYXRoZXIgdXNlIHRoZSAKKy5CIFwtYworb3B0aW9uIG9mIHRoZQorLkIgZTJmc2NrCithbmQgCisuQiBta2UyZnMKK3Byb2dyYW1zLgorLlNIIE9QVElPTlMKKy5UUAorLkJJIFwtYiAiIGJsb2NrX3NpemUiCitTcGVjaWZ5IHRoZSBzaXplIG9mIGJsb2NrcyBpbiBieXRlcy4gIFRoZSBkZWZhdWx0IGlzIDEwMjQuCisuVFAKKy5CSSBcLWMgIiBudW1iZXIgb2YgYmxvY2tzIgoraXMgdGhlIG51bWJlciBvZiBibG9ja3Mgd2hpY2ggYXJlIHRlc3RlZCBhdCBhIHRpbWUuICBUaGUgZGVmYXVsdCBpcyA2NC4KKy5UUAorLkJJIFwtZCAiIHJlYWQgZGVsYXkgZmFjdG9yIgorVGhpcyBwYXJhbWV0ZXIsIGlmIHBhc3NlZCBhbmQgbm9uLXplcm8sIHdpbGwgY2F1c2UgYmFkIGJsb2NrcyB0byBzbGVlcAorYmV0d2VlbiByZWFkcyBpZiB0aGVyZSB3ZXJlIG5vIGVycm9ycyBlbmNvdW50ZXJlZCBpbiB0aGUgcmVhZAorb3BlcmF0aW9uOyB0aGUgZGVsYXkgd2lsbCBiZSBjYWxjdWxhdGVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGUgdGltZSBpdAordG9vayBmb3IgdGhlIHJlYWQgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC4gSW4gb3RoZXIgd29yZHMsIGEgdmFsdWUgb2YgCisxMDAgd2lsbCBjYXVzZSBlYWNoIHJlYWQgdG8gYmUgZGVsYXllZCBieSB0aGUgYW1vdW50IHRoZSBwcmV2aW91cyByZWFkCit0b29rLCBhbmQgYSB2YWx1ZSBvZiAyMDAgYnkgdHdpY2UgdGhlIGFtb3VudC4KKy5UUAorLkJJIFwtZSAiIG1heCBiYWQgYmxvY2sgY291bnQiCitTcGVjaWZ5IGEgbWF4aW11bSBudW1iZXIgb2YgYmFkIGJsb2NrcyBiZWZvcmUgYWJvcnRpbmcgdGhlIHRlc3QuICBUaGUKK2RlZmF1bHQgaXMgMCwgbWVhbmluZyB0aGUgdGVzdCB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRlc3QKK3JhbmdlIGlzIHJlYWNoZWQuCisuVFAKKy5CIFwtZgorTm9ybWFsbHksIGJhZGJsb2NrcyB3aWxsIHJlZnVzZSB0byBkbyBhIHJlYWQvd3JpdGUgb3IgYSBub24tZGVzdHJ1Y3RpdmUKK3Rlc3Qgb24gYSBkZXZpY2Ugd2hpY2ggaXMgbW91bnRlZCwgc2luY2UgZWl0aGVyIGNhbiBjYXVzZSB0aGUgc3lzdGVtIHRvCitwb3RlbnRpYWxseSBjcmFzaCBhbmQvb3IgZGFtYWdlIHRoZSBmaWxlc3lzdGVtIGV2ZW4gaWYgaXQgaXMgbW91bnRlZAorcmVhZC1vbmx5LiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUKKy5CIFwtZgorZmxhZywgYnV0IHNob3VsZCBhbG1vc3QgbmV2ZXIgYmUgdXNlZCAtLS0gaWYgeW91IHRoaW5rIHlvdSdyZSBzbWFydGVyCit0aGFuIHRoZSAKKy5CIGJhZGJsb2NrcworcHJvZ3JhbSwgeW91IGFsbW9zdCBjZXJ0YWlubHkgYXJlbid0LiAgVGhlIG9ubHkgdGltZSB3aGVuIHRoaXMgb3B0aW9uIAorbWlnaHQgYmUgc2FmZSB0byB1c2UgaXMgaWYgdGhlIC9ldGMvbXRhYiBmaWxlIGlzIGluY29ycmVjdCwgYW5kIHRoZSBkZXZpY2UKK3JlYWxseSBpc24ndCBtb3VudGVkLgorLlRQCisuQkkgXC1pICIgaW5wdXRfZmlsZSIKK1JlYWQgYSBsaXN0IG9mIGFscmVhZHkgZXhpc3Rpbmcga25vd24gYmFkIGJsb2Nrcy4KKy5CIEJhZGJsb2Nrcword2lsbCBza2lwIHRlc3RpbmcgdGhlc2UgYmxvY2tzIHNpbmNlIHRoZXkgYXJlIGtub3duIHRvIGJlIGJhZC4gIElmCisuSSBpbnB1dF9maWxlCitpcyBzcGVjaWZpZWQgYXMgIi0iLCB0aGUgbGlzdCB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQuCitCbG9ja3MgbGlzdGVkIGluIHRoaXMgbGlzdCB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgbGlzdCBvZgorLkkgbmV3CitiYWQgYmxvY2tzIHByb2R1Y2VkIG9uIHRoZSBzdGFuZGFyZCBvdXRwdXQgb3IgaW4gdGhlIG91dHB1dCBmaWxlLgorVGhlCisuQiBcLWIKK29wdGlvbiBvZgorLkJSIGR1bXBlMmZzICg4KQorY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgdGhlIGxpc3Qgb2YgYmxvY2tzIGN1cnJlbnRseSBtYXJrZWQgYmFkIG9uCithbiBleGlzdGluZyBmaWxlc3lzdGVtLCBpbiBhIGZvcm1hdCBzdWl0YWJsZSBmb3IgdXNlIHdpdGggdGhpcyBvcHRpb24uCisuVFAKKy5CIFwtbgorVXNlIG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIG1vZGUuICBCeSBkZWZhdWx0IG9ubHkgYSBub24tZGVzdHJ1Y3RpdmUgCityZWFkLW9ubHkgdGVzdCBpcyBkb25lLiAgVGhpcyBvcHRpb24gbXVzdCBub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgCisuQiBcLXcKK29wdGlvbiwgYXMgdGhleSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLgorLlRQCisuQkkgXC1vICIgb3V0cHV0X2ZpbGUiCitXcml0ZSB0aGUgbGlzdCBvZiBiYWQgYmxvY2tzIHRvIHRoZSBzcGVjaWZpZWQgZmlsZS4gIFdpdGhvdXQgdGhpcyBvcHRpb24sCisuQiBiYWRibG9ja3MKK2Rpc3BsYXlzIHRoZSBsaXN0IG9uIGl0cyBzdGFuZGFyZCBvdXRwdXQuICBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcyBzdWl0YWJsZQorZm9yIHVzZSBieSB0aGUKKy4KKy5CIFwtbAorb3B0aW9uIGluIAorLkJSIGUyZnNjayAoOCkKK29yCisuQlIgbWtlMmZzICg4KS4KKy5UUAorLkJJIFwtcCAiIG51bV9wYXNzZXMiCitSZXBlYXQgc2Nhbm5pbmcgdGhlIGRpc2sgdW50aWwgdGhlcmUgYXJlIG5vIG5ldyBibG9ja3MgZGlzY292ZXJlZCBpbgorbnVtX3Bhc3NlcyBjb25zZWN1dGl2ZSBzY2FucyBvZiB0aGUgZGlzay4KK0RlZmF1bHQgaXMgMCwgbWVhbmluZworLkIgYmFkYmxvY2tzCit3aWxsIGV4aXQgYWZ0ZXIgdGhlIGZpcnN0IHBhc3MuCisuVFAKKy5CIFwtcworU2hvdyB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIHNjYW4gYnkgd3JpdGluZyBvdXQgcm91Z2ggcGVyY2VudGFnZSBjb21wbGV0aW9uCitvZiB0aGUgY3VycmVudCBiYWRibG9ja3MgcGFzcyBvdmVyIHRoZSBkaXNrLiAgTm90ZSB0aGF0IGJhZGJsb2NrcyBtYXkgZG8KK211bHRpcGxlIHRlc3QgcGFzc2VzIG92ZXIgdGhlIGRpc2ssIGluIHBhcnRpY3VsYXIgaWYgdGhlCisuQiBcLXAKK29yCisuQiBcLXcKK29wdGlvbiBpcyByZXF1ZXN0ZWQgYnkgdGhlIHVzZXIuCisuVFAKKy5CSSBcLXQgIiB0ZXN0X3BhdHRlcm4iCitTcGVjaWZ5IGEgdGVzdCBwYXR0ZXJuIHRvIGJlIHJlYWQgKGFuZCB3cml0dGVuKSB0byBkaXNrIGJsb2Nrcy4gICBUaGUKKy5JIHRlc3RfcGF0dGVybgorbWF5IGVpdGhlciBiZSBhIG51bWVyaWMgdmFsdWUgYmV0d2VlbiAwIGFuZCBVTE9OR19NQVgtMSBpbmNsdXNpdmUsIG9yIHRoZSB3b3JkIAorInJhbmRvbSIsIHdoaWNoIHNwZWNpZmllcyB0aGF0IHRoZSBibG9jayBzaG91bGQgYmUgZmlsbGVkIHdpdGggYSByYW5kb20KK2JpdCBwYXR0ZXJuLgorRm9yIHJlYWQvd3JpdGUgKFxmQi13XGZSKSBhbmQgbm9uLWRlc3RydWN0aXZlIChcZkItblxmUikgbW9kZXMsCitvbmUgb3IgbW9yZSB0ZXN0IHBhdHRlcm5zIG1heSBiZSBzcGVjaWZpZWQgYnkgc3BlY2lmeWluZyB0aGUKKy5CIC10CitvcHRpb24gZm9yIGVhY2ggdGVzdCBwYXR0ZXJuIGRlc2lyZWQuICBGb3IKK3JlYWQtb25seSBtb2RlIG9ubHkgYSBzaW5nbGUgcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGFuZCBpdCBtYXkgbm90IGJlCisicmFuZG9tIi4gIFJlYWQtb25seSB0ZXN0aW5nIHdpdGggYSBwYXR0ZXJuIGFzc3VtZXMgdGhhdCB0aGUKK3NwZWNpZmllZCBwYXR0ZXJuIGhhcyBwcmV2aW91c2x5IGJlZW4gd3JpdHRlbiB0byB0aGUgZGlzayAtIGlmIG5vdCwgbGFyZ2UKK251bWJlcnMgb2YgYmxvY2tzIHdpbGwgZmFpbCB2ZXJpZmljYXRpb24uICAKK0lmIG11bHRpcGxlIHBhdHRlcm5zCithcmUgc3BlY2lmaWVkIHRoZW4gYWxsIGJsb2NrcyB3aWxsIGJlIHRlc3RlZCB3aXRoIG9uZSBwYXR0ZXJuIAorYmVmb3JlIHByb2NlZWRpbmcgdG8gdGhlIG5leHQgcGF0dGVybi4KKy5UUAorLkIgXC12CitWZXJib3NlIG1vZGUuICBXaWxsIHdyaXRlIHRoZSBudW1iZXIgb2YgcmVhZCBlcnJvcnMsIHdyaXRlIGVycm9ycyBhbmQgZGF0YS0KK2NvcnJ1cHRpb25zIHRvIHN0ZGVyci4KKy5UUAorLkIgXC13CitVc2Ugd3JpdGUtbW9kZSB0ZXN0LiBXaXRoIHRoaXMgb3B0aW9uLAorLkIgYmFkYmxvY2tzCitzY2FucyBmb3IgYmFkIGJsb2NrcyBieSB3cml0aW5nIHNvbWUgcGF0dGVybnMgKDB4YWEsIDB4NTUsIDB4ZmYsIDB4MDApIG9uCitldmVyeSBibG9jayBvZiB0aGUgZGV2aWNlLCByZWFkaW5nIGV2ZXJ5IGJsb2NrIGFuZCBjb21wYXJpbmcgdGhlIGNvbnRlbnRzLiAgCitUaGlzIG9wdGlvbiBtYXkgbm90IGJlIGNvbWJpbmVkIHdpdGggdGhlIAorLkIgXC1uIAorb3B0aW9uLCBhcyB0aGV5IGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCisuVFAKKy5CIFwtQgorVXNlIGJ1ZmZlcmVkIEkvTyBhbmQgZG8gbm90IHVzZSBEaXJlY3QgSS9PLCBldmVuIGlmIGl0IGlzIGF2YWlsYWJsZS4KKy5UUAorLkIgXC1YCitJbnRlcm5hbCBmbGFnIG9ubHkgdG8gYmUgdXNlZCBieQorLkJSIGUyZnNjayAoOCkKK2FuZAorLkJSIG1rZTJmcyAoOCkuCitJdCBieXBhc3NlcyB0aGUgZXhjbHVzaXZlIG1vZGUgaW4tdXNlIGRldmljZSBzYWZldHkgY2hlY2suCisuU0ggV0FSTklORworTmV2ZXIgdXNlIHRoZQorLkIgXC13CitvcHRpb24gb24gYSBkZXZpY2UgY29udGFpbmluZyBhbiBleGlzdGluZyBmaWxlIHN5c3RlbS4KK1RoaXMgb3B0aW9uIGVyYXNlcyBkYXRhISAgSWYgeW91IHdhbnQgdG8gZG8gd3JpdGUtbW9kZSB0ZXN0aW5nIG9uCithbiBleGlzdGluZyBmaWxlIHN5c3RlbSwgdXNlIHRoZQorLkIgXC1uCitvcHRpb24gaW5zdGVhZC4gIEl0IGlzIHNsb3dlciwgYnV0IGl0IHdpbGwgcHJlc2VydmUgeW91ciBkYXRhLiAgCisuUFAKK1RoZQorLkIgXC1lCitvcHRpb24gd2lsbCBjYXVzZSBiYWRibG9ja3MgdG8gb3V0cHV0IGEgcG9zc2libHkgaW5jb21wbGV0ZSBsaXN0IG9mCitiYWQgYmxvY2tzLiBUaGVyZWZvcmUgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIGl0IG9ubHkgd2hlbiBvbmUgd2FudHMKK3RvIGtub3cgaWYgdGhlcmUgYXJlIGFueSBiYWQgYmxvY2tzIGF0IGFsbCBvbiB0aGUgZGV2aWNlLCBhbmQgbm90IHdoZW4KK3RoZSBsaXN0IG9mIGJhZCBibG9ja3MgaXMgd2FudGVkLgorLlNIIEFVVEhPUgorLkIgYmFkYmxvY2tzCit3YXMgd3JpdHRlbiBieSBSZW15IENhcmQgPFJlbXkuQ2FyZEBsaW51eC5vcmc+LiAgQ3VycmVudCBtYWludGFpbmVyIGlzCitUaGVvZG9yZSBUcydvIDx0eXRzb0BhbHVtLm1pdC5lZHU+LiAgTm9uLWRlc3RydWN0aXZlIHJlYWQvd3JpdGUgdGVzdAoraW1wbGVtZW50ZWQgYnkgRGF2aWQgQmVhdHRpZSA8ZGJlYXR0aWVAc29mdGhvbWUubmV0Pi4KKy5TSCBBVkFJTEFCSUxJVFkKKy5CIGJhZGJsb2NrcworaXMgcGFydCBvZiB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgYW5kIGlzIGF2YWlsYWJsZSBmcm9tIAoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuCisuU0ggU0VFIEFMU08KKy5CUiBlMmZzY2sgKDgpLAorLkJSIG1rZTJmcyAoOCkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2JhZGJsb2Nrcy5jIGIvZTJmc3Byb2dzL21pc2MvYmFkYmxvY2tzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM0MDE5YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2JhZGJsb2Nrcy5jCkBAIC0wLDAgKzEsMTM0OCBAQAorLyoKKyAqIGJhZGJsb2Nrcy5jCQktIEJhZCBibG9ja3MgY2hlY2tlcgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSBieSBUaGVvZG9yZSBUcydvCisgKiBDb3B5cmlnaHQgMTk5OSBieSBEYXZpZCBCZWF0dGllCisgKgorICogVGhpcyBmaWxlIGlzIGJhc2VkIG9uIHRoZSBtaW5peCBmaWxlIHN5c3RlbSBwcm9ncmFtcyBmc2NrIGFuZCBta2ZzCisgKiB3cml0dGVuIGFuZCBjb3B5cmlnaHRlZCBieSBMaW51cyBUb3J2YWxkcyA8TGludXMuVG9ydmFsZHNAY3MuaGVsc2lua2kuZmk+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzA1LzI2CS0gQ3JlYXRpb24gZnJvbSBlMmZzY2sKKyAqIDk0LzAyLzI3CS0gTWFkZSBhIHNlcGFyYXRlIGJhZCBibG9ja3MgY2hlY2tlcgorICogOTkvMDYvMzAuLi45OS8wNy8yNiAtIEFkZGVkIG5vbi1kZXN0cnVjdGl2ZSB3cml0ZS10ZXN0aW5nLAorICogICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZSBibG9ja3MtYXQtb25jZSBwYXJhbWV0ZXIsCisgKiAJCQkgbG9hZGluZyBvZiBiYWRibG9ja3MgbGlzdCB0byBhdm9pZCB0ZXN0aW5nCisgKiAJCQkgYmxvY2tzIGtub3duIHRvIGJlIGJhZCwgbXVsdGlwbGUgcGFzc2VzIHRvCisgKiAJCQkgbWFrZSBzdXJlIHRoYXQgbm8gbmV3IGJsb2NrcyBhcmUgYWRkZWQgdG8gdGhlCisgKiAJCQkgbGlzdC4gIChXb3JrIGRvbmUgYnkgRGF2aWQgQmVhdHRpZSkKKyAqLworCisjaWZuZGVmIF9HTlVfU09VUkNFCisjZGVmaW5lIF9HTlVfU09VUkNFIC8qIGZvciBPX0RJUkVDVCAqLworI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c2V0am1wLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9pby5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgInN1cHBvcnQvbmxzLWVuYWJsZS5oIgorCisjaWZuZGVmIE9fTEFSR0VGSUxFCisjZGVmaW5lIE9fTEFSR0VGSUxFIDAKKyNlbmRpZgorCisvKiBNYXhpbXVtIG51bWJlciBvZiBiYWQgYmxvY2tzIHdlIHN1cHBvcnQgKi8KKyNkZWZpbmUgTUFYX0JBRF9CTE9DS1MgKElOVF9NQVgvMikKKworc3RhdGljIGNvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWUgPSAiYmFkYmxvY2tzIjsKK3N0YXRpYyBjb25zdCBjaGFyICogZG9uZV9zdHJpbmcgPSBOXygiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIpOworCitzdGF0aWMgaW50IHZfZmxhZzsJCQkvKiB2ZXJib3NlICovCitzdGF0aWMgaW50IHdfZmxhZzsJCQkvKiBkbyByL3cgdGVzdDogMD1ubywgMT15ZXMsCisJCQkJCSAqIDI9bm9uLWRlc3RydWN0aXZlICovCitzdGF0aWMgaW50IHNfZmxhZzsJCQkvKiBzaG93IHByb2dyZXNzIG9mIHRlc3QgKi8KK3N0YXRpYyBpbnQgZm9yY2U7CQkJLyogZm9yY2UgY2hlY2sgb2YgbW91bnRlZCBkZXZpY2UgKi8KK3N0YXRpYyBpbnQgdF9mbGFnOwkJCS8qIG51bWJlciBvZiB0ZXN0IHBhdHRlcm5zICovCitzdGF0aWMgaW50IHRfbWF4OwkJCS8qIGFsbG9jYXRlZCB0ZXN0IHBhdHRlcm5zICovCitzdGF0aWMgdW5zaWduZWQgaW50ICp0X3BhdHRzOwkJLyogdGVzdCBwYXR0ZXJucyAqLworc3RhdGljIGludCB1c2VfYnVmZmVyZWRfaW87CitzdGF0aWMgaW50IGV4Y2x1c2l2ZV9vazsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWF4X2JiID0gTUFYX0JBRF9CTE9DS1M7CS8qIEFib3J0IHRlc3QgaWYgbW9yZSB0aGFuIHRoaXMKKwkJCQkJCSAqIG51bWJlciBvZiBiYWQgYmxvY2tzIGhhcyBiZWVuCisJCQkJCQkgKiBlbmNvdW50ZXJlZCAqLworc3RhdGljIHVuc2lnbmVkIGludCBkX2ZsYWc7CQkvKiBkZWxheSBmYWN0b3IgYmV0d2VlbiByZWFkcyAqLworc3RhdGljIHN0cnVjdCB0aW1ldmFsIHRpbWVfc3RhcnQ7CisKKyNkZWZpbmUgVF9JTkMgMzIKKworc3RhdGljIHVuc2lnbmVkIGludCBzeXNfcGFnZV9zaXplID0gNDA5NjsKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgXygKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgbWF4X2JhZF9ibG9ja3NdXG4iCisiICAgICAgIFstcCBudW1fcGFzc2VzXSBbLXQgdGVzdF9wYXR0ZXJuIFstdCB0ZXN0X3BhdHRlcm4gWy4uLl1dXVxuIgorIiAgICAgICBkZXZpY2UgW2xhc3RfYmxvY2sgW2ZpcnN0X2Jsb2NrXV1cbiIpLAorCQkgcHJvZ3JhbV9uYW1lKTsKKwlleGl0ICgxKTsKK30KKworc3RhdGljIHZvaWQgZXhjbHVzaXZlX3VzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cblxuIiksCisJCXByb2dyYW1fbmFtZSk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIGJsa190IGN1cnJlbnRseV90ZXN0aW5nID0gMDsKK3N0YXRpYyBibGtfdCBudW1fYmxvY2tzID0gMDsKK3N0YXRpYyBibGtfdCBudW1fcmVhZF9lcnJvcnMgPSAwOworc3RhdGljIGJsa190IG51bV93cml0ZV9lcnJvcnMgPSAwOworc3RhdGljIGJsa190IG51bV9jb3JydXB0aW9uX2Vycm9ycyA9IDA7CitzdGF0aWMgZXh0Ml9iYWRibG9ja3NfbGlzdCBiYl9saXN0ID0gTlVMTDsKK3N0YXRpYyBGSUxFICpvdXQ7CitzdGF0aWMgYmxrX3QgbmV4dF9iYWQgPSAwOworc3RhdGljIGV4dDJfYmFkYmxvY2tzX2l0ZXJhdGUgYmJfaXRlciA9IE5VTEw7CisKK2VudW0gZXJyb3JfdHlwZXMgeyBSRUFEX0VSUk9SLCBXUklURV9FUlJPUiwgQ09SUlVQVElPTl9FUlJPUiB9OworCitzdGF0aWMgdm9pZCAqYWxsb2NhdGVfYnVmZmVyKHNpemVfdCBzaXplKQoreworCXZvaWQJKnJldCA9IDA7CisKKyNpZmRlZiBIQVZFX1BPU0lYX01FTUFMSUdOCisJaWYgKHBvc2l4X21lbWFsaWduKCZyZXQsIHN5c19wYWdlX3NpemUsIHNpemUpIDwgMCkKKwkJcmV0ID0gMDsKKyNlbHNlCisjaWZkZWYgSEFWRV9NRU1BTElHTgorCXJldCA9IG1lbWFsaWduKHN5c19wYWdlX3NpemUsIHNpemUpOworI2Vsc2UKKyNpZmRlZiBIQVZFX1ZBTExPQworCXJldCA9IHZhbGxvYyhzaXplKTsKKyNlbmRpZiAvKiBIQVZFX1ZBTExPQyAqLworI2VuZGlmIC8qIEhBVkVfTUVNQUxJR04gKi8KKyNlbmRpZiAvKiBIQVZFX1BPU0lYX01FTUFMSUdOICovCisKKwlpZiAoIXJldCkKKwkJcmV0ID0gbWFsbG9jKHNpemUpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIFRoaXMgcm91dGluZSByZXBvcnRzIGEgbmV3IGJhZCBibG9jay4gIElmIHRoZSBiYWQgYmxvY2sgaGFzIGFscmVhZHkKKyAqIGJlZW4gc2VlbiBiZWZvcmUsIHRoZW4gaXQgcmV0dXJucyAwOyBvdGhlcndpc2UgaXQgcmV0dXJucyAxLgorICovCitzdGF0aWMgaW50IGJiX291dHB1dCAoYmxrX3QgYmFkLCBlbnVtIGVycm9yX3R5cGVzIGVycm9yX3R5cGUpCit7CisJZXJyY29kZV90IGVycmNvZGU7CisKKwlpZiAoZXh0MmZzX2JhZGJsb2Nrc19saXN0X3Rlc3QoYmJfbGlzdCwgYmFkKSkKKwkJcmV0dXJuIDA7CisKKwlmcHJpbnRmKG91dCwgIiVsdVxuIiwgKHVuc2lnbmVkIGxvbmcpIGJhZCk7CisJZmZsdXNoKG91dCk7CisKKwllcnJjb2RlID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2FkZCAoYmJfbGlzdCwgYmFkKTsKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyIChwcm9ncmFtX25hbWUsIGVycmNvZGUsICJhZGRpbmcgdG8gaW4tbWVtb3J5IGJhZCBibG9jayBsaXN0Iik7CisJCWV4aXQgKDEpOworCX0KKworCS8qIGtsdWRnZToKKwkgICBpbmNyZW1lbnQgdGhlIGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBiYl9saXN0IGlmCisJICAgYW4gZWxlbWVudCB3YXMganVzdCBhZGRlZCBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlcmF0aW9uCisJICAgcG9zaXRpb24uICBUaGlzIHNob3VsZCBub3QgY2F1c2UgbmV4dF9iYWQgdG8gY2hhbmdlLiAqLworCWlmIChiYl9pdGVyICYmIGJhZCA8IG5leHRfYmFkKQorCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZSAoYmJfaXRlciwgJm5leHRfYmFkKTsKKworCWlmIChlcnJvcl90eXBlID09IFJFQURfRVJST1IpIHsKKwkgIG51bV9yZWFkX2Vycm9ycysrOworCX0gZWxzZSBpZiAoZXJyb3JfdHlwZSA9PSBXUklURV9FUlJPUikgeworCSAgbnVtX3dyaXRlX2Vycm9ycysrOworCX0gZWxzZSBpZiAoZXJyb3JfdHlwZSA9PSBDT1JSVVBUSU9OX0VSUk9SKSB7CisJICBudW1fY29ycnVwdGlvbl9lcnJvcnMrKzsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBjaGFyICp0aW1lX2RpZmZfZm9ybWF0KHN0cnVjdCB0aW1ldmFsICp0djEsCisJCQkgICAgICBzdHJ1Y3QgdGltZXZhbCAqdHYyLCBjaGFyICpidWYpCit7CisgICAgICAgIHRpbWVfdAlkaWZmID0gKHR2MS0+dHZfc2VjIC0gdHYyLT50dl9zZWMpOworCWludAlocixtaW4sc2VjOworCisJc2VjID0gZGlmZiAlIDYwOworCWRpZmYgLz0gNjA7CisJbWluID0gZGlmZiAlIDYwOworCWhyID0gZGlmZiAvIDYwOworCisJaWYgKGhyKQorCQlzcHJpbnRmKGJ1ZiwgIiVkOiUwMmQ6JTAyZCIsIGhyLCBtaW4sIHNlYyk7CisJZWxzZQorCQlzcHJpbnRmKGJ1ZiwgIiVkOiUwMmQiLCBtaW4sIHNlYyk7CisJcmV0dXJuIGJ1ZjsKK30KKworc3RhdGljIGZsb2F0IGNhbGNfcGVyY2VudCh1bnNpZ25lZCBsb25nIGN1cnJlbnQsIHVuc2lnbmVkIGxvbmcgdG90YWwpIHsKKwlmbG9hdCBwZXJjZW50ID0gMC4wOworCWlmICh0b3RhbCA8PSAwKQorCQlyZXR1cm4gcGVyY2VudDsKKwlpZiAoY3VycmVudCA+PSB0b3RhbCkgeworCQlwZXJjZW50ID0gMTAwLjA7CisJfSBlbHNlIHsKKwkJcGVyY2VudD0oMTAwLjAqKGZsb2F0KWN1cnJlbnQvKGZsb2F0KXRvdGFsKTsKKwl9CisJcmV0dXJuIHBlcmNlbnQ7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3N0YXR1cyh2b2lkKQoreworCXN0cnVjdCB0aW1ldmFsIHRpbWVfZW5kOworCWNoYXIgZGlmZl9idWZbMzJdLCBsaW5lX2J1ZlsxMjhdOworCWludCBsZW47CisKKwlnZXR0aW1lb2ZkYXkoJnRpbWVfZW5kLCAwKTsKKwlsZW4gPSBzbnByaW50ZihsaW5lX2J1Ziwgc2l6ZW9mKGxpbmVfYnVmKSwgCisJCSAgICAgICBfKCIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICIKKwkJICAgICAgICAgIiglZC8lZC8lZCBlcnJvcnMpIiksCisJCSAgICAgICBjYWxjX3BlcmNlbnQoKHVuc2lnbmVkIGxvbmcpIGN1cnJlbnRseV90ZXN0aW5nLAorCQkJCSAgICAodW5zaWduZWQgbG9uZykgbnVtX2Jsb2NrcyksIAorCQkgICAgICAgdGltZV9kaWZmX2Zvcm1hdCgmdGltZV9lbmQsICZ0aW1lX3N0YXJ0LCBkaWZmX2J1ZiksCisJCSAgICAgICBudW1fcmVhZF9lcnJvcnMsCisJCSAgICAgICBudW1fd3JpdGVfZXJyb3JzLAorCQkgICAgICAgbnVtX2NvcnJ1cHRpb25fZXJyb3JzKTsKKyNpZmRlZiBIQVZFX01CU1RPV0NTCisJbGVuID0gbWJzdG93Y3MoTlVMTCwgbGluZV9idWYsIHNpemVvZihsaW5lX2J1ZikpOworI2VuZGlmCisJZnB1dHMobGluZV9idWYsIHN0ZGVycik7CisJbWVtc2V0KGxpbmVfYnVmLCAnXGInLCBsZW4pOworCWxpbmVfYnVmW2xlbl0gPSAwOworCWZwdXRzKGxpbmVfYnVmLCBzdGRlcnIpOwkKKwlmZmx1c2ggKHN0ZGVycik7Cit9CisKK3N0YXRpYyB2b2lkIGFsYXJtX2ludHIoaW50IGFsbnVtIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlzaWduYWwgKFNJR0FMUk0sIGFsYXJtX2ludHIpOworCWFsYXJtKDEpOworCWlmICghbnVtX2Jsb2NrcykKKwkJcmV0dXJuOworCXByaW50X3N0YXR1cygpOworfQorCitzdGF0aWMgdm9pZCAqdGVybWluYXRlX2FkZHIgPSBOVUxMOworCitzdGF0aWMgdm9pZCB0ZXJtaW5hdGVfaW50cihpbnQgc2lnbm8gRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWZmbHVzaChvdXQpOworCWZwcmludGYoc3RkZXJyLCAiXG5cbkludGVycnVwdGVkIGF0IGJsb2NrICVsbHVcbiIsIAorCQkodW5zaWduZWQgbG9uZyBsb25nKSBjdXJyZW50bHlfdGVzdGluZyk7CisJZmZsdXNoKHN0ZGVycik7CisJaWYgKHRlcm1pbmF0ZV9hZGRyKQorCQlsb25nam1wKHRlcm1pbmF0ZV9hZGRyLDEpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyB2b2lkIGNhcHR1cmVfdGVybWluYXRlKGptcF9idWYgdGVybV9hZGRyKQoreworCXRlcm1pbmF0ZV9hZGRyID0gdGVybV9hZGRyOworCXNpZ25hbCAoU0lHSFVQLCB0ZXJtaW5hdGVfaW50cik7CisJc2lnbmFsIChTSUdJTlQsIHRlcm1pbmF0ZV9pbnRyKTsKKwlzaWduYWwgKFNJR1BJUEUsIHRlcm1pbmF0ZV9pbnRyKTsKKwlzaWduYWwgKFNJR1RFUk0sIHRlcm1pbmF0ZV9pbnRyKTsKKwlzaWduYWwgKFNJR1VTUjEsIHRlcm1pbmF0ZV9pbnRyKTsKKwlzaWduYWwgKFNJR1VTUjIsIHRlcm1pbmF0ZV9pbnRyKTsKK30KKworc3RhdGljIHZvaWQgdW5jYXB0dXJlX3Rlcm1pbmF0ZSh2b2lkKQoreworCXRlcm1pbmF0ZV9hZGRyID0gTlVMTDsKKwlzaWduYWwgKFNJR0hVUCwgU0lHX0RGTCk7CisJc2lnbmFsIChTSUdJTlQsIFNJR19ERkwpOworCXNpZ25hbCAoU0lHUElQRSwgU0lHX0RGTCk7CisJc2lnbmFsIChTSUdURVJNLCBTSUdfREZMKTsKKwlzaWduYWwgKFNJR1VTUjEsIFNJR19ERkwpOworCXNpZ25hbCAoU0lHVVNSMiwgU0lHX0RGTCk7Cit9CisKKy8qIExpbnV4IHJlcXVpcmVzIHRoYXQgT19ESVJFQ1QgSS9PcyBiZSA1MTItYnl0ZSBzZWN0b3IgYWxpZ25lZCAqLworCisjZGVmaW5lIE9fRElSRUNUX1NJWkUgNTEyCisKK3N0YXRpYyB2b2lkIHNldF9vX2RpcmVjdChpbnQgZGV2LCB1bnNpZ25lZCBjaGFyICpidWZmZXIsIHNpemVfdCBzaXplLAorCQkJIGV4dDJfbG9mZl90IG9mZnNldCkKK3sKKyNpZmRlZiBPX0RJUkVDVAorCXN0YXRpYyBpbnQgY3VycmVudF9PX0RJUkVDVDsJLyogQ3VycmVudCBzdGF0dXMgb2YgT19ESVJFQ1QgZmxhZyAqLworCWludCBuZXdfZmxhZyA9IE9fRElSRUNUOworCWludCBmbGFnOworCisJaWYgKCh1c2VfYnVmZmVyZWRfaW8gIT0gMCkgfHwKKwkgICAgKCgodW5zaWduZWQgbG9uZykgYnVmZmVyICYgKHN5c19wYWdlX3NpemUgLSAxKSkgIT0gMCkgfHwKKwkgICAgKChzaXplICYgKHN5c19wYWdlX3NpemUgLSAxKSkgIT0gMCkgfHwKKwkgICAgKChvZmZzZXQgJiAoT19ESVJFQ1RfU0laRSAtIDEpKSAhPSAwKSkKKwkJbmV3X2ZsYWcgPSAwOworCisJaWYgKG5ld19mbGFnICE9IGN1cnJlbnRfT19ESVJFQ1QpIHsKKwkgICAgIC8qIHByaW50ZigiJXMgT19ESVJFQ1RcbiIsIG5ld19mbGFnID8gIlNldHRpbmciIDogIkNsZWFyaW5nIik7ICovCisJCWZsYWcgPSBmY250bChkZXYsIEZfR0VURkwpOworCQlpZiAoZmxhZyA+IDApIHsKKwkJCWZsYWcgPSAoZmxhZyAmIH5PX0RJUkVDVCkgfCBuZXdfZmxhZzsKKwkJCWlmIChmY250bChkZXYsIEZfU0VURkwsIGZsYWcpIDwgMCkKKwkJCQlwZXJyb3IoInNldF9vX2RpcmVjdCIpOworCQl9CisJCWN1cnJlbnRfT19ESVJFQ1QgPSBuZXdfZmxhZzsKKwl9CisjZW5kaWYKK30KKworCitzdGF0aWMgdm9pZCBwYXR0ZXJuX2ZpbGwodW5zaWduZWQgY2hhciAqYnVmZmVyLCB1bnNpZ25lZCBpbnQgcGF0dGVybiwKKwkJCSBzaXplX3QgbikKK3sKKwl1bnNpZ25lZCBpbnQJaSwgbmI7CisJdW5zaWduZWQgY2hhcglicGF0dGVybltzaXplb2YocGF0dGVybildLCAqcHRyOworCisJaWYgKHBhdHRlcm4gPT0gKHVuc2lnbmVkIGludCkgfjApIHsKKwkJZm9yIChwdHIgPSBidWZmZXI7IHB0ciA8IGJ1ZmZlciArIG47IHB0cisrKSB7CisJCQkoKnB0cikgPSByYW5kb20oKSAlICgxIDw8ICg4ICogc2l6ZW9mKGNoYXIpKSk7CisJCX0KKwkJaWYgKHNfZmxhZyB8IHZfZmxhZykKKwkJCWZwdXRzKF8oIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIiksIHN0ZGVycik7CisJfSBlbHNlIHsKKwkJYnBhdHRlcm5bMF0gPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGJwYXR0ZXJuKTsgaSsrKSB7CisJCQlpZiAocGF0dGVybiA9PSAwKQorCQkJCWJyZWFrOworCQkJYnBhdHRlcm5baV0gPSBwYXR0ZXJuICYgMHhGRjsKKwkJCXBhdHRlcm4gPSBwYXR0ZXJuID4+IDg7CisJCX0KKwkJbmIgPSBpID8gKGktMSkgOiAwOworCQlmb3IgKHB0ciA9IGJ1ZmZlciwgaSA9IG5iOyBwdHIgPCBidWZmZXIgKyBuOyBwdHIrKykgeworCQkJKnB0ciA9IGJwYXR0ZXJuW2ldOworCQkJaWYgKGkgPT0gMCkKKwkJCQlpID0gbmI7CisJCQllbHNlCisJCQkJaS0tOworCQl9CisJCWlmIChzX2ZsYWcgfCB2X2ZsYWcpIHsKKwkJCWZwdXRzKF8oIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IiksIHN0ZGVycik7CisJCQlmb3IgKGkgPSAwOyBpIDw9IG5iOyBpKyspCisJCQkJZnByaW50ZihzdGRlcnIsICIlMDJ4IiwgYnVmZmVyW2ldKTsKKwkJCWZwdXRzKCI6ICIsIHN0ZGVycik7CisJCX0KKwl9Cit9CisKKy8qCisgKiBQZXJmb3JtIGEgcmVhZCBvZiBhIHNlcXVlbmNlIG9mIGJsb2NrczsgcmV0dXJuIHRoZSBudW1iZXIgb2YgYmxvY2tzCisgKiAgICBzdWNjZXNzZnVsbHkgc2VxdWVudGlhbGx5IHJlYWQuCisgKi8KK3N0YXRpYyBpbnQgZG9fcmVhZCAoaW50IGRldiwgdW5zaWduZWQgY2hhciAqIGJ1ZmZlciwgaW50IHRyeSwgaW50IGJsb2NrX3NpemUsCisJCSAgICBibGtfdCBjdXJyZW50X2Jsb2NrKQoreworCWxvbmcgZ290OworCXN0cnVjdCB0aW1ldmFsIHR2MSwgdHYyOworI2RlZmluZSBOQU5PU0VDICgxMDAwMDAwMDAwTCkKKyNkZWZpbmUgTUlMSVNFQyAoMTAwMEwpCisKKyNpZiAwCisJcHJpbnRmKCJkb19yZWFkOiBibG9jayAlZCwgdHJ5ICVkXG4iLCBjdXJyZW50X2Jsb2NrLCB0cnkpOworI2VuZGlmCisJc2V0X29fZGlyZWN0KGRldiwgYnVmZmVyLCB0cnkgKiBibG9ja19zaXplLAorCQkgICAgICgoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2spICogYmxvY2tfc2l6ZSk7CisKKwlpZiAodl9mbGFnID4gMSkKKwkJcHJpbnRfc3RhdHVzKCk7CisKKwkvKiBTZWVrIHRvIHRoZSBjb3JyZWN0IGxvYy4gKi8KKwlpZiAoZXh0MmZzX2xsc2VlayAoZGV2LCAoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2sgKiBibG9ja19zaXplLAorCQkJIFNFRUtfU0VUKSAhPSAoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2sgKiBibG9ja19zaXplKQorCQljb21fZXJyIChwcm9ncmFtX25hbWUsIGVycm5vLCAiJXMiLCBfKCJkdXJpbmcgc2VlayIpKTsKKworCS8qIFRyeSB0aGUgcmVhZCAqLworCWlmIChkX2ZsYWcpCisJCWdldHRpbWVvZmRheSgmdHYxLCBOVUxMKTsKKwlnb3QgPSByZWFkIChkZXYsIGJ1ZmZlciwgdHJ5ICogYmxvY2tfc2l6ZSk7CisJaWYgKGRfZmxhZykKKwkJZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOworCWlmIChnb3QgPCAwKQorCQlnb3QgPSAwOworCWlmIChnb3QgJiA1MTEpCisJCWZwcmludGYoc3RkZXJyLCBfKCJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iKSwgZ290KTsKKwlnb3QgLz0gYmxvY2tfc2l6ZTsKKwlpZiAoZF9mbGFnICYmIGdvdCA9PSB0cnkpIHsKKyNpZmRlZiBIQVZFX05BTk9TTEVFUAorCQlzdHJ1Y3QgdGltZXNwZWMgdHM7CisJCXRzLnR2X3NlYyA9IHR2Mi50dl9zZWMgLSB0djEudHZfc2VjOworCQl0cy50dl9uc2VjID0gKHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWMpICogTUlMSVNFQzsKKwkJaWYgKHRzLnR2X25zZWMgPCAwKSB7CisJCQl0cy50dl9uc2VjICs9IE5BTk9TRUM7CisJCQl0cy50dl9zZWMgLT0gMTsKKwkJfQorCQkvKiBpbmNyZWFzZS9kZWNyZWFzZSB0aGUgc2xlZXAgdGltZSBiYXNlZCBvbiBkX2ZsYWcgdmFsdWUgKi8KKwkJdHMudHZfc2VjID0gdHMudHZfc2VjICogZF9mbGFnIC8gMTAwOworCQl0cy50dl9uc2VjID0gdHMudHZfbnNlYyAqIGRfZmxhZyAvIDEwMDsKKwkJaWYgKHRzLnR2X25zZWMgPiBOQU5PU0VDKSB7CisJCQl0cy50dl9zZWMgKz0gdHMudHZfbnNlYyAvIE5BTk9TRUM7CisJCQl0cy50dl9uc2VjICU9IE5BTk9TRUM7CisJCX0KKwkJaWYgKHRzLnR2X3NlYyB8fCB0cy50dl9uc2VjKQorCQkJbmFub3NsZWVwKCZ0cywgTlVMTCk7CisjZWxzZQorI2lmZGVmIEhBVkVfVVNMRUVQCisJCXN0cnVjdCB0aW1ldmFsIHR2OworCQl0di50dl9zZWMgPSB0djIudHZfc2VjIC0gdHYxLnR2X3NlYzsKKwkJdHYudHZfdXNlYyA9IHR2Mi50dl91c2VjIC0gdHYxLnR2X3VzZWM7CisJCXR2LnR2X3NlYyA9IHR2LnR2X3NlYyAqIGRfZmxhZyAvIDEwMDsKKwkJdHYudHZfdXNlYyA9IHR2LnR2X3VzZWMgKiBkX2ZsYWcgLyAxMDA7CisJCWlmICh0di50dl91c2VjID4gMTAwMDAwMCkgeworCQkJdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwOworCQkJdHYudHZfdXNlYyAlPSAxMDAwMDAwOworCQl9CisJCWlmICh0di50dl9zZWMpCisJCQlzbGVlcCh0di50dl9zZWMpOworCQlpZiAodHYudHZfdXNlYykKKwkJCXVzbGVlcCh0di50dl91c2VjKTsKKyNlbmRpZgorI2VuZGlmCisJfQorCXJldHVybiBnb3Q7Cit9CisKKy8qCisgKiBQZXJmb3JtIGEgd3JpdGUgb2YgYSBzZXF1ZW5jZSBvZiBibG9ja3M7IHJldHVybiB0aGUgbnVtYmVyIG9mIGJsb2NrcworICogICAgc3VjY2Vzc2Z1bGx5IHNlcXVlbnRpYWxseSB3cml0dGVuLgorICovCitzdGF0aWMgaW50IGRvX3dyaXRlKGludCBkZXYsIHVuc2lnbmVkIGNoYXIgKiBidWZmZXIsIGludCB0cnksIGludCBibG9ja19zaXplLAorCQkgICAgdW5zaWduZWQgbG9uZyBjdXJyZW50X2Jsb2NrKQoreworCWxvbmcgZ290OworCisjaWYgMAorCXByaW50ZigiZG9fd3JpdGU6IGJsb2NrICVsdSwgdHJ5ICVkXG4iLCBjdXJyZW50X2Jsb2NrLCB0cnkpOworI2VuZGlmCisJc2V0X29fZGlyZWN0KGRldiwgYnVmZmVyLCB0cnkgKiBibG9ja19zaXplLAorCQkgICAgICgoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2spICogYmxvY2tfc2l6ZSk7CisKKwlpZiAodl9mbGFnID4gMSkKKwkJcHJpbnRfc3RhdHVzKCk7CisKKwkvKiBTZWVrIHRvIHRoZSBjb3JyZWN0IGxvYy4gKi8KKwlpZiAoZXh0MmZzX2xsc2VlayAoZGV2LCAoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2sgKiBibG9ja19zaXplLAorCQkJIFNFRUtfU0VUKSAhPSAoZXh0Ml9sb2ZmX3QpIGN1cnJlbnRfYmxvY2sgKiBibG9ja19zaXplKQorCQljb21fZXJyIChwcm9ncmFtX25hbWUsIGVycm5vLCAiJXMiLCBfKCJkdXJpbmcgc2VlayIpKTsKKworCS8qIFRyeSB0aGUgd3JpdGUgKi8KKwlnb3QgPSB3cml0ZSAoZGV2LCBidWZmZXIsIHRyeSAqIGJsb2NrX3NpemUpOworCWlmIChnb3QgPCAwKQorCQlnb3QgPSAwOworCWlmIChnb3QgJiA1MTEpCisJCWZwcmludGYoc3RkZXJyLCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fd3JpdGVcbiIsIGdvdCk7CisJZ290IC89IGJsb2NrX3NpemU7CisJcmV0dXJuIGdvdDsKK30KKworc3RhdGljIGludCBob3N0X2RldjsKKworc3RhdGljIHZvaWQgZmx1c2hfYnVmcyh2b2lkKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisKKyNpZmRlZiBPX0RJUkVDVAorCWlmICghdXNlX2J1ZmZlcmVkX2lvKQorCQlyZXR1cm47CisjZW5kaWYKKwlyZXR2YWwgPSBleHQyZnNfc3luY19kZXZpY2UoaG9zdF9kZXYsIDEpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIikpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IHRlc3Rfcm8gKGludCBkZXYsIGJsa190IGxhc3RfYmxvY2ssCisJCQkgICAgIGludCBibG9ja19zaXplLCBibGtfdCBmaXJzdF9ibG9jaywKKwkJCSAgICAgdW5zaWduZWQgaW50IGJsb2Nrc19hdF9vbmNlKQoreworCXVuc2lnbmVkIGNoYXIgKiBibGtidWY7CisJaW50IHRyeTsKKwlpbnQgZ290OworCXVuc2lnbmVkIGludCBiYl9jb3VudCA9IDA7CisJZXJyY29kZV90IGVycmNvZGU7CisJYmxrX3QgcmVjb3Zlcl9ibG9jayA9IH4wOworCisJLyogc2V0IHVwIGFiZW5kIGhhbmRsZXIgKi8KKwljYXB0dXJlX3Rlcm1pbmF0ZShOVUxMKTsKKworCWVycmNvZGUgPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZV9iZWdpbihiYl9saXN0LCZiYl9pdGVyKTsKKwlpZiAoZXJyY29kZSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgZXJyY29kZSwgIiVzIiwKKwkJCV8oIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iKSk7CisJCWV4aXQgKDEpOworCX0KKwlkbyB7CisJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlIChiYl9pdGVyLCAmbmV4dF9iYWQpOworCX0gd2hpbGUgKG5leHRfYmFkICYmIG5leHRfYmFkIDwgZmlyc3RfYmxvY2spOworCisJaWYgKHRfZmxhZykgeworCQlibGtidWYgPSBhbGxvY2F0ZV9idWZmZXIoKGJsb2Nrc19hdF9vbmNlICsgMSkgKiBibG9ja19zaXplKTsKKwl9IGVsc2UgeworCQlibGtidWYgPSBhbGxvY2F0ZV9idWZmZXIoYmxvY2tzX2F0X29uY2UgKiBibG9ja19zaXplKTsKKwl9CisJaWYgKCFibGtidWYpCisJeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgRU5PTUVNLCAiJXMiLAorCQkJXygid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIikpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKHZfZmxhZykgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIpLAorCQkJKHVuc2lnbmVkIGxvbmcpZmlyc3RfYmxvY2ssCisJCQkodW5zaWduZWQgbG9uZylsYXN0X2Jsb2NrIC0gMSk7CisJfQorCWlmICh0X2ZsYWcpIHsKKwkJZnB1dHMoXygiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIpLCBzdGRlcnIpOworCQlwYXR0ZXJuX2ZpbGwoYmxrYnVmICsgYmxvY2tzX2F0X29uY2UgKiBibG9ja19zaXplLAorCQkJICAgICB0X3BhdHRzWzBdLCBibG9ja19zaXplKTsKKwl9CisJZmx1c2hfYnVmcygpOworCXRyeSA9IGJsb2Nrc19hdF9vbmNlOworCWN1cnJlbnRseV90ZXN0aW5nID0gZmlyc3RfYmxvY2s7CisJbnVtX2Jsb2NrcyA9IGxhc3RfYmxvY2sgLSAxOworCWlmICghdF9mbGFnICYmIChzX2ZsYWcgfHwgdl9mbGFnKSkKKwkJZnB1dHMoXygiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIiksIHN0ZGVycik7CisJaWYgKHNfZmxhZyAmJiB2X2ZsYWcgPD0gMSkKKwkJYWxhcm1faW50cihTSUdBTFJNKTsKKwl3aGlsZSAoY3VycmVudGx5X3Rlc3RpbmcgPCBsYXN0X2Jsb2NrKQorCXsKKwkJaWYgKGJiX2NvdW50ID49IG1heF9iYikgeworCQkJaWYgKHNfZmxhZyB8fCB2X2ZsYWcpIHsKKwkJCQlmcHV0cyhfKCJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iKSwgc3RkZXJyKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJCWlmIChuZXh0X2JhZCkgeworCQkJaWYgKGN1cnJlbnRseV90ZXN0aW5nID09IG5leHRfYmFkKSB7CisJCQkJLyogZnByaW50ZiAob3V0LCAiJWx1XG4iLCBuZXh0YmFkKTsgKi8KKwkJCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfaXRlcmF0ZSAoYmJfaXRlciwgJm5leHRfYmFkKTsKKwkJCQljdXJyZW50bHlfdGVzdGluZysrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJZWxzZSBpZiAoY3VycmVudGx5X3Rlc3RpbmcgKyB0cnkgPiBuZXh0X2JhZCkKKwkJCQl0cnkgPSBuZXh0X2JhZCAtIGN1cnJlbnRseV90ZXN0aW5nOworCQl9CisJCWlmIChjdXJyZW50bHlfdGVzdGluZyArIHRyeSA+IGxhc3RfYmxvY2spCisJCQl0cnkgPSBsYXN0X2Jsb2NrIC0gY3VycmVudGx5X3Rlc3Rpbmc7CisJCWdvdCA9IGRvX3JlYWQgKGRldiwgYmxrYnVmLCB0cnksIGJsb2NrX3NpemUsIGN1cnJlbnRseV90ZXN0aW5nKTsKKwkJaWYgKHRfZmxhZykgeworCQkJLyogdGVzdCB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIGFsbCB0aGUKKwkJCSAgIGJsb2NrcyBzdWNjZXNzZnVsbHkgcmVhZCAgKi8KKwkJCWludCBpOworCQkJZm9yIChpID0gMDsgaSA8IGdvdDsgKytpKQorCQkJCWlmIChtZW1jbXAgKGJsa2J1ZitpKmJsb2NrX3NpemUsCisJCQkJCSAgICBibGtidWYrYmxvY2tzX2F0X29uY2UqYmxvY2tfc2l6ZSwKKwkJCQkJICAgIGJsb2NrX3NpemUpKQorCQkJCQliYl9jb3VudCArPSBiYl9vdXRwdXQoY3VycmVudGx5X3Rlc3RpbmcgKyBpLCBDT1JSVVBUSU9OX0VSUk9SKTsKKwkJfQorCQlpZiAoZ290ID09IDAgJiYgdHJ5ID09IDEpCisJCQliYl9jb3VudCArPSBiYl9vdXRwdXQoY3VycmVudGx5X3Rlc3RpbmcrKywgUkVBRF9FUlJPUik7CisJCWN1cnJlbnRseV90ZXN0aW5nICs9IGdvdDsKKwkJaWYgKGdvdCAhPSB0cnkpIHsKKwkJCXRyeSA9IDE7CisJCQlpZiAocmVjb3Zlcl9ibG9jayA9PSB+MFUpCisJCQkJcmVjb3Zlcl9ibG9jayA9IGN1cnJlbnRseV90ZXN0aW5nIC0gZ290ICsKKwkJCQkJYmxvY2tzX2F0X29uY2U7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIGlmIChjdXJyZW50bHlfdGVzdGluZyA9PSByZWNvdmVyX2Jsb2NrKSB7CisJCQl0cnkgPSBibG9ja3NfYXRfb25jZTsKKwkJCXJlY292ZXJfYmxvY2sgPSB+MDsKKwkJfQorCX0KKwludW1fYmxvY2tzID0gMDsKKwlhbGFybSgwKTsKKwlpZiAoc19mbGFnIHx8IHZfZmxhZykKKwkJZnB1dHMoXyhkb25lX3N0cmluZyksIHN0ZGVycik7CisKKwlmZmx1c2ggKHN0ZGVycik7CisJZnJlZSAoYmxrYnVmKTsKKworCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChiYl9pdGVyKTsKKworCXVuY2FwdHVyZV90ZXJtaW5hdGUoKTsKKworCXJldHVybiBiYl9jb3VudDsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCB0ZXN0X3J3IChpbnQgZGV2LCBibGtfdCBsYXN0X2Jsb2NrLAorCQkJICAgICBpbnQgYmxvY2tfc2l6ZSwgYmxrX3QgZmlyc3RfYmxvY2ssCisJCQkgICAgIHVuc2lnbmVkIGludCBibG9ja3NfYXRfb25jZSkKK3sKKwl1bnNpZ25lZCBjaGFyICpidWZmZXIsICpyZWFkX2J1ZmZlcjsKKwljb25zdCB1bnNpZ25lZCBpbnQgcGF0dGVybnNbXSA9IHsweGFhLCAweDU1LCAweGZmLCAweDAwfTsKKwljb25zdCB1bnNpZ25lZCBpbnQgKnBhdHRlcm47CisJaW50IGksIHRyeSwgZ290LCBucl9wYXR0ZXJuLCBwYXRfaWR4OworCXVuc2lnbmVkIGludCBiYl9jb3VudCA9IDA7CisJYmxrX3QgcmVjb3Zlcl9ibG9jayA9IH4wOworCisJLyogc2V0IHVwIGFiZW5kIGhhbmRsZXIgKi8KKwljYXB0dXJlX3Rlcm1pbmF0ZShOVUxMKTsKKworCWJ1ZmZlciA9IGFsbG9jYXRlX2J1ZmZlcigyICogYmxvY2tzX2F0X29uY2UgKiBibG9ja19zaXplKTsKKwlyZWFkX2J1ZmZlciA9IGJ1ZmZlciArIGJsb2Nrc19hdF9vbmNlICogYmxvY2tfc2l6ZTsKKworCWlmICghYnVmZmVyKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBFTk9NRU0sICIlcyIsCisJCQlfKCJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiKSk7CisJCWV4aXQgKDEpOworCX0KKworCWZsdXNoX2J1ZnMoKTsKKworCWlmICh2X2ZsYWcpIHsKKwkJZnB1dHMoXygiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iKSwKKwkJICAgICAgc3RkZXJyKTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIiksCisJCQkodW5zaWduZWQgbG9uZykgZmlyc3RfYmxvY2ssCisJCQkodW5zaWduZWQgbG9uZykgbGFzdF9ibG9jayAtIDEpOworCX0KKwlpZiAodF9mbGFnKSB7CisJCXBhdHRlcm4gPSB0X3BhdHRzOworCQlucl9wYXR0ZXJuID0gdF9mbGFnOworCX0gZWxzZSB7CisJCXBhdHRlcm4gPSBwYXR0ZXJuczsKKwkJbnJfcGF0dGVybiA9IHNpemVvZihwYXR0ZXJucykgLyBzaXplb2YocGF0dGVybnNbMF0pOworCX0KKwlmb3IgKHBhdF9pZHggPSAwOyBwYXRfaWR4IDwgbnJfcGF0dGVybjsgcGF0X2lkeCsrKSB7CisJCXBhdHRlcm5fZmlsbChidWZmZXIsIHBhdHRlcm5bcGF0X2lkeF0sCisJCQkgICAgIGJsb2Nrc19hdF9vbmNlICogYmxvY2tfc2l6ZSk7CisJCW51bV9ibG9ja3MgPSBsYXN0X2Jsb2NrIC0gMTsKKwkJY3VycmVudGx5X3Rlc3RpbmcgPSBmaXJzdF9ibG9jazsKKwkJaWYgKHNfZmxhZyAmJiB2X2ZsYWcgPD0gMSkKKwkJCWFsYXJtX2ludHIoU0lHQUxSTSk7CisKKwkJdHJ5ID0gYmxvY2tzX2F0X29uY2U7CisJCXdoaWxlIChjdXJyZW50bHlfdGVzdGluZyA8IGxhc3RfYmxvY2spIHsKKwkJCWlmIChiYl9jb3VudCA+PSBtYXhfYmIpIHsKKwkJCQlpZiAoc19mbGFnIHx8IHZfZmxhZykgeworCQkJCQlmcHV0cyhfKCJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iKSwgc3RkZXJyKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoY3VycmVudGx5X3Rlc3RpbmcgKyB0cnkgPiBsYXN0X2Jsb2NrKQorCQkJCXRyeSA9IGxhc3RfYmxvY2sgLSBjdXJyZW50bHlfdGVzdGluZzsKKwkJCWdvdCA9IGRvX3dyaXRlKGRldiwgYnVmZmVyLCB0cnksIGJsb2NrX3NpemUsCisJCQkJCWN1cnJlbnRseV90ZXN0aW5nKTsKKwkJCWlmICh2X2ZsYWcgPiAxKQorCQkJCXByaW50X3N0YXR1cygpOworCisJCQlpZiAoZ290ID09IDAgJiYgdHJ5ID09IDEpCisJCQkJYmJfY291bnQgKz0gYmJfb3V0cHV0KGN1cnJlbnRseV90ZXN0aW5nKyssIFdSSVRFX0VSUk9SKTsKKwkJCWN1cnJlbnRseV90ZXN0aW5nICs9IGdvdDsKKwkJCWlmIChnb3QgIT0gdHJ5KSB7CisJCQkJdHJ5ID0gMTsKKwkJCQlpZiAocmVjb3Zlcl9ibG9jayA9PSB+MFUpCisJCQkJCXJlY292ZXJfYmxvY2sgPSBjdXJyZW50bHlfdGVzdGluZyAtCisJCQkJCQlnb3QgKyBibG9ja3NfYXRfb25jZTsKKwkJCQljb250aW51ZTsKKwkJCX0gZWxzZSBpZiAoY3VycmVudGx5X3Rlc3RpbmcgPT0gcmVjb3Zlcl9ibG9jaykgeworCQkJCXRyeSA9IGJsb2Nrc19hdF9vbmNlOworCQkJCXJlY292ZXJfYmxvY2sgPSB+MDsKKwkJCX0KKwkJfQorCisJCW51bV9ibG9ja3MgPSAwOworCQlhbGFybSAoMCk7CisJCWlmIChzX2ZsYWcgfCB2X2ZsYWcpCisJCQlmcHV0cyhfKGRvbmVfc3RyaW5nKSwgc3RkZXJyKTsKKwkJZmx1c2hfYnVmcygpOworCQlpZiAoc19mbGFnIHwgdl9mbGFnKQorCQkJZnB1dHMoXygiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiKSwgc3RkZXJyKTsKKwkJbnVtX2Jsb2NrcyA9IGxhc3RfYmxvY2s7CisJCWN1cnJlbnRseV90ZXN0aW5nID0gZmlyc3RfYmxvY2s7CisJCWlmIChzX2ZsYWcgJiYgdl9mbGFnIDw9IDEpCisJCQlhbGFybV9pbnRyKFNJR0FMUk0pOworCisJCXRyeSA9IGJsb2Nrc19hdF9vbmNlOworCQl3aGlsZSAoY3VycmVudGx5X3Rlc3RpbmcgPCBsYXN0X2Jsb2NrKSB7CisJCQlpZiAoYmJfY291bnQgPj0gbWF4X2JiKSB7CisJCQkJaWYgKHNfZmxhZyB8fCB2X2ZsYWcpIHsKKwkJCQkJZnB1dHMoXygiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIiksIHN0ZGVycik7CisJCQkJfQorCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKGN1cnJlbnRseV90ZXN0aW5nICsgdHJ5ID4gbGFzdF9ibG9jaykKKwkJCQl0cnkgPSBsYXN0X2Jsb2NrIC0gY3VycmVudGx5X3Rlc3Rpbmc7CisJCQlnb3QgPSBkb19yZWFkIChkZXYsIHJlYWRfYnVmZmVyLCB0cnksIGJsb2NrX3NpemUsCisJCQkJICAgICAgIGN1cnJlbnRseV90ZXN0aW5nKTsKKwkJCWlmIChnb3QgPT0gMCAmJiB0cnkgPT0gMSkKKwkJCQliYl9jb3VudCArPSBiYl9vdXRwdXQoY3VycmVudGx5X3Rlc3RpbmcrKywgUkVBRF9FUlJPUik7CisJCQljdXJyZW50bHlfdGVzdGluZyArPSBnb3Q7CisJCQlpZiAoZ290ICE9IHRyeSkgeworCQkJCXRyeSA9IDE7CisJCQkJaWYgKHJlY292ZXJfYmxvY2sgPT0gfjBVKQorCQkJCQlyZWNvdmVyX2Jsb2NrID0gY3VycmVudGx5X3Rlc3RpbmcgLQorCQkJCQkJZ290ICsgYmxvY2tzX2F0X29uY2U7CisJCQkJY29udGludWU7CisJCQl9IGVsc2UgaWYgKGN1cnJlbnRseV90ZXN0aW5nID09IHJlY292ZXJfYmxvY2spIHsKKwkJCQl0cnkgPSBibG9ja3NfYXRfb25jZTsKKwkJCQlyZWNvdmVyX2Jsb2NrID0gfjBVOworCQkJfQorCQkJZm9yIChpPTA7IGkgPCBnb3Q7IGkrKykgeworCQkJCWlmIChtZW1jbXAocmVhZF9idWZmZXIgKyBpICogYmxvY2tfc2l6ZSwKKwkJCQkJICAgYnVmZmVyICsgaSAqIGJsb2NrX3NpemUsCisJCQkJCSAgIGJsb2NrX3NpemUpKQorCQkJCQliYl9jb3VudCArPSBiYl9vdXRwdXQoY3VycmVudGx5X3Rlc3RpbmcraSwgQ09SUlVQVElPTl9FUlJPUik7CisJCQl9CisJCQlpZiAodl9mbGFnID4gMSkKKwkJCQlwcmludF9zdGF0dXMoKTsKKwkJfQorCisJCW51bV9ibG9ja3MgPSAwOworCQlhbGFybSAoMCk7CisJCWlmIChzX2ZsYWcgfCB2X2ZsYWcpCisJCQlmcHV0cyhfKGRvbmVfc3RyaW5nKSwgc3RkZXJyKTsKKwkJZmx1c2hfYnVmcygpOworCX0KKwl1bmNhcHR1cmVfdGVybWluYXRlKCk7CisJZnJlZShidWZmZXIpOworCXJldHVybiBiYl9jb3VudDsKK30KKworc3RydWN0IHNhdmVkX2Jsa19yZWNvcmQgeworCWJsa190CWJsb2NrOworCWludAludW07Cit9OworCitzdGF0aWMgdW5zaWduZWQgaW50IHRlc3RfbmQgKGludCBkZXYsIGJsa190IGxhc3RfYmxvY2ssCisJCQkgICAgIGludCBibG9ja19zaXplLCBibGtfdCBmaXJzdF9ibG9jaywKKwkJCSAgICAgdW5zaWduZWQgaW50IGJsb2Nrc19hdF9vbmNlKQoreworCXVuc2lnbmVkIGNoYXIgKmJsa2J1ZiwgKnNhdmVfcHRyLCAqdGVzdF9wdHIsICpyZWFkX3B0cjsKKwl1bnNpZ25lZCBjaGFyICp0ZXN0X2Jhc2UsICpzYXZlX2Jhc2UsICpyZWFkX2Jhc2U7CisJaW50IHRyeSwgaTsKKwljb25zdCB1bnNpZ25lZCBpbnQgcGF0dGVybnNbXSA9IHsgfjAgfTsKKwljb25zdCB1bnNpZ25lZCBpbnQgKnBhdHRlcm47CisJaW50IG5yX3BhdHRlcm4sIHBhdF9pZHg7CisJaW50IGdvdCwgdXNlZDIsIHdyaXR0ZW47CisJYmxrX3Qgc2F2ZV9jdXJyZW50bHlfdGVzdGluZzsKKwlzdHJ1Y3Qgc2F2ZWRfYmxrX3JlY29yZCAqdGVzdF9yZWNvcmQ7CisJLyogVGhpcyBpcyBzdGF0aWMgdG8gcHJldmVudCBiZWluZyBjbG9iYmVyZWQgYnkgdGhlIGxvbmdqbXAgKi8KKwlzdGF0aWMgaW50IG51bV9zYXZlZDsKKwlqbXBfYnVmIHRlcm1pbmF0ZV9lbnY7CisJZXJyY29kZV90IGVycmNvZGU7CisJdW5zaWduZWQgbG9uZyBidWZfdXNlZDsKKwlzdGF0aWMgdW5zaWduZWQgaW50IGJiX2NvdW50OworCXVuc2lnbmVkIGludCBncmFudWxhcml0eSA9IGJsb2Nrc19hdF9vbmNlOworCWJsa190IHJlY292ZXJfYmxvY2sgPSB+MFU7CisKKwliYl9jb3VudCA9IDA7CisJZXJyY29kZSA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2JlZ2luKGJiX2xpc3QsJmJiX2l0ZXIpOworCWlmIChlcnJjb2RlKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnJjb2RlLCAiJXMiLAorCQkJXygid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIpKTsKKwkJZXhpdCAoMSk7CisJfQorCWRvIHsKKwkJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGUgKGJiX2l0ZXIsICZuZXh0X2JhZCk7CisJfSB3aGlsZSAobmV4dF9iYWQgJiYgbmV4dF9iYWQgPCBmaXJzdF9ibG9jayk7CisKKwlibGtidWYgPSBhbGxvY2F0ZV9idWZmZXIoMyAqIGJsb2Nrc19hdF9vbmNlICogYmxvY2tfc2l6ZSk7CisJdGVzdF9yZWNvcmQgPSBtYWxsb2MoYmxvY2tzX2F0X29uY2UgKiBzaXplb2Yoc3RydWN0IHNhdmVkX2Jsa19yZWNvcmQpKTsKKwlpZiAoIWJsa2J1ZiB8fCAhdGVzdF9yZWNvcmQpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIEVOT01FTSwgIiVzIiwKKwkJCV8oIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVycyIpKTsKKwkJZXhpdCAoMSk7CisJfQorCisJc2F2ZV9iYXNlID0gYmxrYnVmOworCXRlc3RfYmFzZSA9IGJsa2J1ZiArIChibG9ja3NfYXRfb25jZSAqIGJsb2NrX3NpemUpOworCXJlYWRfYmFzZSA9IGJsa2J1ZiArICgyICogYmxvY2tzX2F0X29uY2UgKiBibG9ja19zaXplKTsKKworCW51bV9zYXZlZCA9IDA7CisKKwlmbHVzaF9idWZzKCk7CisJaWYgKHZfZmxhZykgeworCSAgICBmcHV0cyhfKCJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iKSwgc3RkZXJyKTsKKwkgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIpLAorCQkgICAgICh1bnNpZ25lZCBsb25nKSBmaXJzdF9ibG9jaywKKwkJICAgICAodW5zaWduZWQgbG9uZykgbGFzdF9ibG9jayAtIDEpOworCX0KKwlpZiAoc19mbGFnIHx8IHZfZmxhZyA+IDEpIHsKKwkJZnB1dHMoXygiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iKSwgc3RkZXJyKTsKKwl9CisJaWYgKHNldGptcCh0ZXJtaW5hdGVfZW52KSkgeworCQkvKgorCQkgKiBBYm5vcm1hbCB0ZXJtaW5hdGlvbiBieSBhIHNpZ25hbCBpcyBoYW5kbGVkIGhlcmUuCisJCSAqLworCQlzaWduYWwgKFNJR0FMUk0sIFNJR19JR04pOworCQlmcHV0cyhfKCJcbkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iKSwgc3RkZXJyKTsKKworCQlzYXZlX3B0ciA9IHNhdmVfYmFzZTsKKwkJZm9yIChpPTA7IGkgPCBudW1fc2F2ZWQ7IGkrKykgeworCQkJZG9fd3JpdGUoZGV2LCBzYXZlX3B0ciwgdGVzdF9yZWNvcmRbaV0ubnVtLAorCQkJCSBibG9ja19zaXplLCB0ZXN0X3JlY29yZFtpXS5ibG9jayk7CisJCQlzYXZlX3B0ciArPSB0ZXN0X3JlY29yZFtpXS5udW0gKiBibG9ja19zaXplOworCQl9CisJCWZmbHVzaCAob3V0KTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBzZXQgdXAgYWJlbmQgaGFuZGxlciAqLworCWNhcHR1cmVfdGVybWluYXRlKHRlcm1pbmF0ZV9lbnYpOworCisJaWYgKHRfZmxhZykgeworCQlwYXR0ZXJuID0gdF9wYXR0czsKKwkJbnJfcGF0dGVybiA9IHRfZmxhZzsKKwl9IGVsc2UgeworCQlwYXR0ZXJuID0gcGF0dGVybnM7CisJCW5yX3BhdHRlcm4gPSBzaXplb2YocGF0dGVybnMpIC8gc2l6ZW9mKHBhdHRlcm5zWzBdKTsKKwl9CisJZm9yIChwYXRfaWR4ID0gMDsgcGF0X2lkeCA8IG5yX3BhdHRlcm47IHBhdF9pZHgrKykgeworCQlwYXR0ZXJuX2ZpbGwodGVzdF9iYXNlLCBwYXR0ZXJuW3BhdF9pZHhdLAorCQkJICAgICBibG9ja3NfYXRfb25jZSAqIGJsb2NrX3NpemUpOworCisJCWJ1Zl91c2VkID0gMDsKKwkJYmJfY291bnQgPSAwOworCQlzYXZlX3B0ciA9IHNhdmVfYmFzZTsKKwkJdGVzdF9wdHIgPSB0ZXN0X2Jhc2U7CisJCWN1cnJlbnRseV90ZXN0aW5nID0gZmlyc3RfYmxvY2s7CisJCW51bV9ibG9ja3MgPSBsYXN0X2Jsb2NrIC0gMTsKKwkJaWYgKHNfZmxhZyAmJiB2X2ZsYWcgPD0gMSkKKwkJCWFsYXJtX2ludHIoU0lHQUxSTSk7CisKKwkJd2hpbGUgKGN1cnJlbnRseV90ZXN0aW5nIDwgbGFzdF9ibG9jaykgeworCQkJaWYgKGJiX2NvdW50ID49IG1heF9iYikgeworCQkJCWlmIChzX2ZsYWcgfHwgdl9mbGFnKSB7CisJCQkJCWZwdXRzKF8oIlRvbyBtYW55IGJhZCBibG9ja3MsIGFib3J0aW5nIHRlc3RcbiIpLCBzdGRlcnIpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJCWdvdCA9IHRyeSA9IGdyYW51bGFyaXR5IC0gYnVmX3VzZWQ7CisJCQlpZiAobmV4dF9iYWQpIHsKKwkJCQlpZiAoY3VycmVudGx5X3Rlc3RpbmcgPT0gbmV4dF9iYWQpIHsKKwkJCQkJLyogZnByaW50ZiAob3V0LCAiJWx1XG4iLCBuZXh0YmFkKTsgKi8KKwkJCQkJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGUgKGJiX2l0ZXIsICZuZXh0X2JhZCk7CisJCQkJCWN1cnJlbnRseV90ZXN0aW5nKys7CisJCQkJCWdvdG8gY2hlY2tfZm9yX21vcmU7CisJCQkJfQorCQkJCWVsc2UgaWYgKGN1cnJlbnRseV90ZXN0aW5nICsgdHJ5ID4gbmV4dF9iYWQpCisJCQkJCXRyeSA9IG5leHRfYmFkIC0gY3VycmVudGx5X3Rlc3Rpbmc7CisJCQl9CisJCQlpZiAoY3VycmVudGx5X3Rlc3RpbmcgKyB0cnkgPiBsYXN0X2Jsb2NrKQorCQkJCXRyeSA9IGxhc3RfYmxvY2sgLSBjdXJyZW50bHlfdGVzdGluZzsKKwkJCWdvdCA9IGRvX3JlYWQgKGRldiwgc2F2ZV9wdHIsIHRyeSwgYmxvY2tfc2l6ZSwKKwkJCQkgICAgICAgY3VycmVudGx5X3Rlc3RpbmcpOworCQkJaWYgKGdvdCA9PSAwKSB7CisJCQkJaWYgKHJlY292ZXJfYmxvY2sgPT0gfjBVKQorCQkJCQlyZWNvdmVyX2Jsb2NrID0gY3VycmVudGx5X3Rlc3RpbmcgKworCQkJCQkJYmxvY2tzX2F0X29uY2U7CisJCQkJaWYgKGdyYW51bGFyaXR5ICE9IDEpIHsKKwkJCQkJZ3JhbnVsYXJpdHkgPSAxOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJLyogRmlyc3QgYmxvY2sgbXVzdCBoYXZlIGJlZW4gYmFkLiAqLworCQkJCWJiX2NvdW50ICs9IGJiX291dHB1dChjdXJyZW50bHlfdGVzdGluZysrLCBSRUFEX0VSUk9SKTsKKwkJCQlnb3RvIGNoZWNrX2Zvcl9tb3JlOworCQkJfQorCisJCQkvKgorCQkJICogTm90ZSB0aGUgZmFjdCB0aGF0IHdlJ3ZlIHNhdmVkIHRoaXMgbXVjaCBkYXRhCisJCQkgKiAqYmVmb3JlKiB3ZSBvdmVyd3JpdGUgaXQgd2l0aCB0ZXN0IGRhdGEKKwkJCSAqLworCQkJdGVzdF9yZWNvcmRbbnVtX3NhdmVkXS5ibG9jayA9IGN1cnJlbnRseV90ZXN0aW5nOworCQkJdGVzdF9yZWNvcmRbbnVtX3NhdmVkXS5udW0gPSBnb3Q7CisJCQludW1fc2F2ZWQrKzsKKworCQkJLyogV3JpdGUgdGhlIHRlc3QgZGF0YSAqLworCQkJd3JpdHRlbiA9IGRvX3dyaXRlIChkZXYsIHRlc3RfcHRyLCBnb3QsIGJsb2NrX3NpemUsCisJCQkJCSAgICBjdXJyZW50bHlfdGVzdGluZyk7CisJCQlpZiAod3JpdHRlbiAhPSBnb3QpCisJCQkJY29tX2VyciAocHJvZ3JhbV9uYW1lLCBlcnJubywKKwkJCQkJIF8oImR1cmluZyB0ZXN0IGRhdGEgd3JpdGUsIGJsb2NrICVsdSIpLAorCQkJCQkgKHVuc2lnbmVkIGxvbmcpIGN1cnJlbnRseV90ZXN0aW5nICsKKwkJCQkJIHdyaXR0ZW4pOworCisJCQlidWZfdXNlZCArPSBnb3Q7CisJCQlzYXZlX3B0ciArPSBnb3QgKiBibG9ja19zaXplOworCQkJdGVzdF9wdHIgKz0gZ290ICogYmxvY2tfc2l6ZTsKKwkJCWN1cnJlbnRseV90ZXN0aW5nICs9IGdvdDsKKwkJCWlmIChnb3QgIT0gdHJ5KSB7CisJCQkJdHJ5ID0gMTsKKwkJCQlpZiAocmVjb3Zlcl9ibG9jayA9PSB+MFUpCisJCQkJCXJlY292ZXJfYmxvY2sgPSBjdXJyZW50bHlfdGVzdGluZyAtCisJCQkJCQlnb3QgKyBibG9ja3NfYXRfb25jZTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQljaGVja19mb3JfbW9yZToKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSdzIHJvb20gZm9yIG1vcmUgYmxvY2tzIHRvIGJlIHRlc3RlZCB0aGlzCisJCQkgKiBhcm91bmQsIGFuZCB3ZSdyZSBub3QgZG9uZSB5ZXQgdGVzdGluZyB0aGUgZGlzaywgZ28KKwkJCSAqIGJhY2sgYW5kIGdldCBzb21lIG1vcmUgYmxvY2tzLgorCQkJICovCisJCQlpZiAoKGJ1Zl91c2VkICE9IGdyYW51bGFyaXR5KSAmJgorCQkJICAgIChjdXJyZW50bHlfdGVzdGluZyA8IGxhc3RfYmxvY2spKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoY3VycmVudGx5X3Rlc3RpbmcgPj0gcmVjb3Zlcl9ibG9jaykgeworCQkJCWdyYW51bGFyaXR5ID0gYmxvY2tzX2F0X29uY2U7CisJCQkJcmVjb3Zlcl9ibG9jayA9IH4wOworCQkJfQorCisJCQlmbHVzaF9idWZzKCk7CisJCQlzYXZlX2N1cnJlbnRseV90ZXN0aW5nID0gY3VycmVudGx5X3Rlc3Rpbmc7CisKKwkJCS8qCisJCQkgKiBmb3IgZWFjaCBjb250aWd1b3VzIGJsb2NrIHRoYXQgd2UgcmVhZCBpbnRvIHRoZQorCQkJICogYnVmZmVyIChhbmQgd3JvdGUgdGVzdCBkYXRhIGludG8gYWZ0ZXJ3YXJkcyksIHJlYWQKKwkJCSAqIGl0IGJhY2sgKGxvb3BpbmcgaWYgbmVjZXNzYXJ5LCB0byBnZXQgcGFzdCBuZXdseQorCQkJICogZGlzY292ZXJlZCB1bnJlYWRhYmxlIGJsb2Nrcywgb2Ygd2hpY2ggdGhlcmUgc2hvdWxkCisJCQkgKiBiZSBub25lLCBidXQgd2l0aCBhIGhhcmQgZHJpdmUgd2hpY2ggaXMgdW5yZWxpYWJsZSwKKwkJCSAqIGl0IGhhcyBoYXBwZW5lZCksIGFuZCBjb21wYXJlIHdpdGggdGhlIHRlc3QgZGF0YQorCQkJICogdGhhdCB3YXMgd3JpdHRlbjsgb3V0cHV0IHRvIHRoZSBiYWQgYmxvY2sgbGlzdCBpZgorCQkJICogaXQgZG9lc24ndCBtYXRjaC4KKwkJCSAqLworCQkJdXNlZDIgPSAwOworCQkJc2F2ZV9wdHIgPSBzYXZlX2Jhc2U7CisJCQl0ZXN0X3B0ciA9IHRlc3RfYmFzZTsKKwkJCXJlYWRfcHRyID0gcmVhZF9iYXNlOworCQkJdHJ5ID0gMDsKKworCQkJd2hpbGUgKDEpIHsKKwkJCQlpZiAodHJ5ID09IDApIHsKKwkJCQkJaWYgKHVzZWQyID49IG51bV9zYXZlZCkKKwkJCQkJCWJyZWFrOworCQkJCQljdXJyZW50bHlfdGVzdGluZyA9IHRlc3RfcmVjb3JkW3VzZWQyXS5ibG9jazsKKwkJCQkJdHJ5ID0gdGVzdF9yZWNvcmRbdXNlZDJdLm51bTsKKwkJCQkJdXNlZDIrKzsKKwkJCQl9CisKKwkJCQlnb3QgPSBkb19yZWFkIChkZXYsIHJlYWRfcHRyLCB0cnksCisJCQkJCSAgICAgICBibG9ja19zaXplLCBjdXJyZW50bHlfdGVzdGluZyk7CisKKwkJCQkvKiB0ZXN0IHRoZSBjb21wYXJpc29uIGJldHdlZW4gYWxsIHRoZQorCQkJCSAgIGJsb2NrcyBzdWNjZXNzZnVsbHkgcmVhZCAgKi8KKwkJCQlmb3IgKGkgPSAwOyBpIDwgZ290OyArK2kpCisJCQkJCWlmIChtZW1jbXAgKHRlc3RfcHRyK2kqYmxvY2tfc2l6ZSwKKwkJCQkJCSAgICByZWFkX3B0citpKmJsb2NrX3NpemUsIGJsb2NrX3NpemUpKQorCQkJCQkJYmJfY291bnQgKz0gYmJfb3V0cHV0KGN1cnJlbnRseV90ZXN0aW5nICsgaSwgQ09SUlVQVElPTl9FUlJPUik7CisJCQkJaWYgKGdvdCA8IHRyeSkgeworCQkJCQliYl9jb3VudCArPSBiYl9vdXRwdXQoY3VycmVudGx5X3Rlc3RpbmcgKyBnb3QsIFJFQURfRVJST1IpOworCQkJCQlnb3QrKzsKKwkJCQl9CisKKwkJCQkvKiB3cml0ZSBiYWNrIG9yaWdpbmFsIGRhdGEgKi8KKwkJCQlkb193cml0ZSAoZGV2LCBzYXZlX3B0ciwgZ290LAorCQkJCQkgIGJsb2NrX3NpemUsIGN1cnJlbnRseV90ZXN0aW5nKTsKKwkJCQlzYXZlX3B0ciArPSBnb3QgKiBibG9ja19zaXplOworCisJCQkJY3VycmVudGx5X3Rlc3RpbmcgKz0gZ290OworCQkJCXRlc3RfcHRyICs9IGdvdCAqIGJsb2NrX3NpemU7CisJCQkJcmVhZF9wdHIgKz0gZ290ICogYmxvY2tfc2l6ZTsKKwkJCQl0cnkgLT0gZ290OworCQkJfQorCisJCQkvKiBlbXB0eSB0aGUgYnVmZmVyIHNvIGl0IGNhbiBiZSByZXVzZWQgKi8KKwkJCW51bV9zYXZlZCA9IDA7CisJCQlidWZfdXNlZCA9IDA7CisJCQlzYXZlX3B0ciA9IHNhdmVfYmFzZTsKKwkJCXRlc3RfcHRyID0gdGVzdF9iYXNlOworCQkJY3VycmVudGx5X3Rlc3RpbmcgPSBzYXZlX2N1cnJlbnRseV90ZXN0aW5nOworCQl9CisJCW51bV9ibG9ja3MgPSAwOworCQlhbGFybSgwKTsKKwkJaWYgKHNfZmxhZyB8fCB2X2ZsYWcgPiAxKQorCQkJZnB1dHMoXyhkb25lX3N0cmluZyksIHN0ZGVycik7CisKKwkJZmx1c2hfYnVmcygpOworCX0KKwl1bmNhcHR1cmVfdGVybWluYXRlKCk7CisJZmZsdXNoKHN0ZGVycik7CisJZnJlZShibGtidWYpOworCWZyZWUodGVzdF9yZWNvcmQpOworCisJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfZW5kKGJiX2l0ZXIpOworCisJcmV0dXJuIGJiX2NvdW50OworfQorCitzdGF0aWMgdm9pZCBjaGVja19tb3VudChjaGFyICpkZXZpY2VfbmFtZSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJbW91bnRfZmxhZ3M7CisKKwlyZXR2YWwgPSBleHQyZnNfY2hlY2tfaWZfbW91bnRlZChkZXZpY2VfbmFtZSwgJm1vdW50X2ZsYWdzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImV4dDJmc19jaGVja19pZl9tb3VudCIsIHJldHZhbCwKKwkJCV8oIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iKSwKKwkJCWRldmljZV9uYW1lKTsKKwkJcmV0dXJuOworCX0KKwlpZiAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzIGlzIG1vdW50ZWQ7ICIpLCBkZXZpY2VfbmFtZSk7CisJCWlmIChmb3JjZSkgeworCQkJZnB1dHMoXygiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICAiCisJCQkJIkhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIpLCBzdGRlcnIpOworCQkJcmV0dXJuOworCQl9CisJYWJvcnRfYmFkYmxvY2tzOgorCQlmcHV0cyhfKCJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iKSwgc3RkZXJyKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9CVVNZKSAmJiAhZXhjbHVzaXZlX29rKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiKSwKKwkJCWRldmljZV9uYW1lKTsKKwkJaWYgKGZvcmNlKQorCQkJZnB1dHMoXygiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iKSwgc3RkZXJyKTsKKwkJZWxzZQorCQkJZ290byBhYm9ydF9iYWRibG9ja3M7CisJfQorCit9CisKKy8qCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHN0cmluZyB0byBhbiB1bnNpZ25lZCBsb25nLCBwcmludGluZworICogYW4gZXJyb3IgbWVzc2FnZSBpZiBpdCBmYWlscywgYW5kIHJldHVybmluZyBzdWNjZXNzIG9yIGZhaWx1cmUgaW4gZXJyLgorICovCitzdGF0aWMgdW5zaWduZWQgaW50IHBhcnNlX3VpbnQoY29uc3QgY2hhciAqc3RyLCBjb25zdCBjaGFyICpkZXNjcikKK3sKKwljaGFyCQkqdG1wOworCXVuc2lnbmVkIGxvbmcJcmV0OworCisJZXJybm8gPSAwOworCXJldCA9IHN0cnRvdWwoc3RyLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCB8fCBlcnJubyB8fCAocmV0ID4gVUlOVF9NQVgpIHx8CisJICAgIChyZXQgPT0gVUxPTkdfTUFYICYmIGVycm5vID09IEVSQU5HRSkpIHsKKwkJY29tX2VyciAocHJvZ3JhbV9uYW1lLCAwLCBfKCJpbnZhbGlkICVzIC0gJXMiKSwgZGVzY3IsIHN0cik7CisJCWV4aXQgKDEpOworCX0KKwlyZXR1cm4gcmV0OworfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKK3sKKwlpbnQgYzsKKwljaGFyICogZGV2aWNlX25hbWU7CisJY2hhciAqIGhvc3RfZGV2aWNlX25hbWUgPSBOVUxMOworCWNoYXIgKiBpbnB1dF9maWxlID0gTlVMTDsKKwljaGFyICogb3V0cHV0X2ZpbGUgPSBOVUxMOworCUZJTEUgKiBpbiA9IE5VTEw7CisJaW50IGJsb2NrX3NpemUgPSAxMDI0OworCXVuc2lnbmVkIGludCBibG9ja3NfYXRfb25jZSA9IDY0OworCWJsazY0X3QgbGFzdF9ibG9jaywgZmlyc3RfYmxvY2s7CisJaW50IG51bV9wYXNzZXMgPSAwOworCWludCBwYXNzZXNfY2xlYW4gPSAwOworCWludCBkZXY7CisJZXJyY29kZV90IGVycmNvZGU7CisJdW5zaWduZWQgaW50IHBhdHRlcm47CisJdW5zaWduZWQgaW50ICgqdGVzdF9mdW5jKShpbnQsIGJsa190LAorCQkJCSAgaW50LCBibGtfdCwKKwkJCQkgIHVuc2lnbmVkIGludCk7CisJaW50IG9wZW5fZmxhZzsKKwlsb25nIHN5c3ZhbDsKKwlibGs2NF90IGluYmxrOworCisJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CisJc2V0YnVmKHN0ZGVyciwgTlVMTCk7CisjaWZkZWYgRU5BQkxFX05MUworCXNldGxvY2FsZShMQ19NRVNTQUdFUywgIiIpOworCXNldGxvY2FsZShMQ19DVFlQRSwgIiIpOworCWJpbmR0ZXh0ZG9tYWluKE5MU19DQVRfTkFNRSwgTE9DQUxFRElSKTsKKwl0ZXh0ZG9tYWluKE5MU19DQVRfTkFNRSk7CisJc2V0X2NvbV9lcnJfZ2V0dGV4dChnZXR0ZXh0KTsKKyNlbmRpZgorCXNyYW5kb20oKHVuc2lnbmVkIGludCl0aW1lKE5VTEwpKTsgIC8qIHNpbXBsZSByYW5kb21uZXNzIGlzIGVub3VnaCAqLworCXRlc3RfZnVuYyA9IHRlc3Rfcm87CisKKwkvKiBEZXRlcm1pbmUgdGhlIHN5c3RlbSBwYWdlIHNpemUgaWYgcG9zc2libGUgKi8KKyNpZmRlZiBIQVZFX1NZU0NPTkYKKyNpZiAoIWRlZmluZWQoX1NDX1BBR0VTSVpFKSAmJiBkZWZpbmVkKF9TQ19QQUdFX1NJWkUpKQorI2RlZmluZSBfU0NfUEFHRVNJWkUgX1NDX1BBR0VfU0laRQorI2VuZGlmCisjaWZkZWYgX1NDX1BBR0VTSVpFCisJc3lzdmFsID0gc3lzY29uZihfU0NfUEFHRVNJWkUpOworCWlmIChzeXN2YWwgPiAwKQorCQlzeXNfcGFnZV9zaXplID0gc3lzdmFsOworI2VuZGlmIC8qIF9TQ19QQUdFU0laRSAqLworI2VuZGlmIC8qIEhBVkVfU1lTQ09ORiAqLworCisJaWYgKGFyZ2MgJiYgKmFyZ3YpCisJCXByb2dyYW1fbmFtZSA9ICphcmd2OworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgImI6ZDplOmZpOm86c3Z3bmM6cDpoOnQ6QlgiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdiJzoKKwkJCWJsb2NrX3NpemUgPSBwYXJzZV91aW50KG9wdGFyZywgImJsb2NrIHNpemUiKTsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWZvcmNlKys7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlpbnB1dF9maWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ28nOgorCQkJb3V0cHV0X2ZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlzX2ZsYWcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJdl9mbGFnKys7CisJCQlicmVhazsKKwkJY2FzZSAndyc6CisJCQlpZiAod19mbGFnKQorCQkJCWV4Y2x1c2l2ZV91c2FnZSgpOworCQkJdGVzdF9mdW5jID0gdGVzdF9ydzsKKwkJCXdfZmxhZyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbic6CisJCQlpZiAod19mbGFnKQorCQkJCWV4Y2x1c2l2ZV91c2FnZSgpOworCQkJdGVzdF9mdW5jID0gdGVzdF9uZDsKKwkJCXdfZmxhZyA9IDI7CisJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQlibG9ja3NfYXRfb25jZSA9IHBhcnNlX3VpbnQob3B0YXJnLCAiYmxvY2tzIGF0IG9uY2UiKTsKKwkJCWJyZWFrOworCQljYXNlICdlJzoKKwkJCW1heF9iYiA9IHBhcnNlX3VpbnQob3B0YXJnLCAibWF4IGJhZCBibG9jayBjb3VudCIpOworCQkJaWYgKG1heF9iYiA+IE1BWF9CQURfQkxPQ0tTKSB7CisJCQkJY29tX2VyciAocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQkgXygiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtICIKKwkJCQkJICAgIm1heGltdW0gaXMgJXUiKSwgbWF4X2JiLAorCQkJCQkgICBNQVhfQkFEX0JMT0NLUyk7CisJCQkJZXhpdCAoMSk7CisJCQl9CisJCQkvKiAwIHJlYWxseSBtZWFucyB1bmxpbWl0ZWQgYnV0IHdlIGNhbm5vdCBkbyB0aGF0IG11Y2guLi4gKi8KKwkJCWlmIChtYXhfYmIgPT0gMCkKKwkJCQltYXhfYmIgPSBNQVhfQkFEX0JMT0NLUzsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWRfZmxhZyA9IHBhcnNlX3VpbnQob3B0YXJnLCAicmVhZCBkZWxheSBmYWN0b3IiKTsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCW51bV9wYXNzZXMgPSBwYXJzZV91aW50KG9wdGFyZywKKwkJCQkJCSJudW1iZXIgb2YgY2xlYW4gcGFzc2VzIik7CisJCQlicmVhazsKKwkJY2FzZSAnaCc6CisJCQlob3N0X2RldmljZV9uYW1lID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ3QnOgorCQkJaWYgKHRfZmxhZyArIDEgPiB0X21heCkgeworCQkJCXVuc2lnbmVkIGludCAqdF9wYXR0c19uZXc7CisKKwkJCQl0X3BhdHRzX25ldyA9IHJlYWxsb2ModF9wYXR0cywgc2l6ZW9mKGludCkgKgorCQkJCQkJICAgICAgKHRfbWF4ICsgVF9JTkMpKTsKKwkJCQlpZiAoIXRfcGF0dHNfbmV3KSB7CisJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBFTk9NRU0sCisJCQkJCQlfKCJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yICIKKwkJCQkJCSAgInRlc3RfcGF0dGVybiAtICVzIiksCisJCQkJCQlvcHRhcmcpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQl0X3BhdHRzID0gdF9wYXR0c19uZXc7CisJCQkJdF9tYXggKz0gVF9JTkM7CisJCQl9CisJCQlpZiAoIXN0cmNtcChvcHRhcmcsICJyIikgfHwgIXN0cmNtcChvcHRhcmcsInJhbmRvbSIpKSB7CisJCQkJdF9wYXR0c1t0X2ZsYWcrK10gPSB+MDsKKwkJCX0gZWxzZSB7CisJCQkJcGF0dGVybiA9IHBhcnNlX3VpbnQob3B0YXJnLCAidGVzdCBwYXR0ZXJuIik7CisJCQkJaWYgKHBhdHRlcm4gPT0gKHVuc2lnbmVkIGludCkgfjApCisJCQkJCXBhdHRlcm4gPSAweGZmZmY7CisJCQkJdF9wYXR0c1t0X2ZsYWcrK10gPSBwYXR0ZXJuOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ0InOgorCQkJdXNlX2J1ZmZlcmVkX2lvID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdYJzoKKwkJCWV4Y2x1c2l2ZV9vaysrOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZSgpOworCQl9CisJfQorCWlmICghd19mbGFnKSB7CisJCWlmICh0X2ZsYWcgPiAxKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCQlfKCJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlICIKKwkJCQkgICJzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmICh0X3BhdHRzICYmICh0X3BhdHRzWzBdID09ICh1bnNpZ25lZCBpbnQpIH4wKSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCAiCisJCQkJICAiaW4gcmVhZC1vbmx5IG1vZGUiKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCWlmIChvcHRpbmQgPiBhcmdjIC0gMSkKKwkJdXNhZ2UoKTsKKwlkZXZpY2VfbmFtZSA9IGFyZ3Zbb3B0aW5kKytdOworCWlmIChvcHRpbmQgPiBhcmdjIC0gMSkgeworCQllcnJjb2RlID0gZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZTIoZGV2aWNlX25hbWUsCisJCQkJCQkgYmxvY2tfc2l6ZSwKKwkJCQkJCSAmbGFzdF9ibG9jayk7CisJCWlmIChlcnJjb2RlID09IEVYVDJfRVRfVU5JTVBMRU1FTlRFRCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgIgorCQkJCSAgIm11c3Qgc3BlY2lmeVxudGhlIHNpemUgbWFudWFsbHlcbiIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKGVycmNvZGUpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnJjb2RlLCAiJXMiLAorCQkJCV8oIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiKSk7CisJCQlleGl0KDEpOworCQl9CisJfSBlbHNlIHsKKwkJZXJybm8gPSAwOworCQlsYXN0X2Jsb2NrID0gcGFyc2VfdWludChhcmd2W29wdGluZF0sIF8oImxhc3QgYmxvY2siKSk7CisJCWxhc3RfYmxvY2srKzsKKwkJb3B0aW5kKys7CisJfQorCWlmIChvcHRpbmQgPD0gYXJnYy0xKSB7CisJCWVycm5vID0gMDsKKwkJZmlyc3RfYmxvY2sgPSBwYXJzZV91aW50KGFyZ3Zbb3B0aW5kXSwgXygiZmlyc3QgYmxvY2siKSk7CisJfSBlbHNlIGZpcnN0X2Jsb2NrID0gMDsKKwlpZiAoZmlyc3RfYmxvY2sgPj0gbGFzdF9ibG9jaykgeworCSAgICBjb21fZXJyIChwcm9ncmFtX25hbWUsIDAsIF8oImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IiksCisJCSAgICAgZmlyc3RfYmxvY2ssIGxhc3RfYmxvY2spOworCSAgICBleGl0ICgxKTsKKwl9CisJLyogZXh0MiBiYWRibG9ja3MgZmlsZSBjYW4ndCBoYW5kbGUgbGFyZ2UgdmFsdWVzICovCisJaWYgKGxhc3RfYmxvY2sgPj4gMzIpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIEVPVkVSRkxPVywKKwkJCV8oImludmFsaWQgZW5kIGJsb2NrICglbGx1KTogbXVzdCBiZSAzMi1iaXQgdmFsdWUiKSwKKwkJCWxhc3RfYmxvY2spOworCQlleGl0KDEpOworCX0KKwlpZiAod19mbGFnKQorCQljaGVja19tb3VudChkZXZpY2VfbmFtZSk7CisKKwlnZXR0aW1lb2ZkYXkoJnRpbWVfc3RhcnQsIDApOworCW9wZW5fZmxhZyA9IE9fTEFSR0VGSUxFIHwgKHdfZmxhZyA/IE9fUkRXUiA6IE9fUkRPTkxZKTsKKwlkZXYgPSBvcGVuIChkZXZpY2VfbmFtZSwgb3Blbl9mbGFnKTsKKwlpZiAoZGV2ID09IC0xKSB7CisJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQkgZGV2aWNlX25hbWUpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKGhvc3RfZGV2aWNlX25hbWUpIHsKKwkJaG9zdF9kZXYgPSBvcGVuIChob3N0X2RldmljZV9uYW1lLCBvcGVuX2ZsYWcpOworCQlpZiAoaG9zdF9kZXYgPT0gLTEpIHsKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQkJIGhvc3RfZGV2aWNlX25hbWUpOworCQkJZXhpdCAoMSk7CisJCX0KKwl9IGVsc2UKKwkJaG9zdF9kZXYgPSBkZXY7CisJaWYgKGlucHV0X2ZpbGUpIHsKKwkJaWYgKHN0cmNtcCAoaW5wdXRfZmlsZSwgIi0iKSA9PSAwKQorCQkJaW4gPSBzdGRpbjsKKwkJZWxzZSB7CisJCQlpbiA9IGZvcGVuIChpbnB1dF9maWxlLCAiciIpOworCQkJaWYgKGluID09IE5VTEwpCisJCQl7CisJCQkJY29tX2VyciAocHJvZ3JhbV9uYW1lLCBlcnJubywKKwkJCQkJIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQkJCSBpbnB1dF9maWxlKTsKKwkJCQlleGl0ICgxKTsKKwkJCX0KKwkJfQorCX0KKwlpZiAob3V0cHV0X2ZpbGUgJiYgc3RyY21wIChvdXRwdXRfZmlsZSwgIi0iKSAhPSAwKQorCXsKKwkJb3V0ID0gZm9wZW4gKG91dHB1dF9maWxlLCAidyIpOworCQlpZiAob3V0ID09IE5VTEwpCisJCXsKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQkJIG91dHB1dF9maWxlKTsKKwkJCWV4aXQgKDEpOworCQl9CisJfQorCWVsc2UKKwkJb3V0ID0gc3Rkb3V0OworCisJZXJyY29kZSA9IGV4dDJmc19iYWRibG9ja3NfbGlzdF9jcmVhdGUoJmJiX2xpc3QsMCk7CisJaWYgKGVycmNvZGUpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycmNvZGUsICIlcyIsCisJCQlfKCJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IikpOworCQlleGl0ICgxKTsKKwl9CisKKwlpZiAoaW4pIHsKKwkJZm9yKDs7KSB7CisJCQlzd2l0Y2ggKGZzY2FuZihpbiwgIiVsbHVcbiIsICZpbmJsaykpIHsKKwkJCQljYXNlIDA6CisJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCQkJXygiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiKSk7CisJCQkJCWV4aXQgKDEpOworCQkJCWNhc2UgRU9GOgorCQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQlpZiAoaW5ibGsgPj4gMzIpIHsKKwkJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLAorCQkJCQkJCUVPVkVSRkxPVywgIiVzIiwKKwkJCQkJCV8oIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgIgorCQkJCQkJICAiYmFkIGJsb2NrIGxpc3QiKSk7CisJCQkJCQlleGl0KDEpOworCQkJCQl9CisJCQkJCW5leHRfYmFkID0gaW5ibGs7CisJCQkJCWVycmNvZGUgPSBleHQyZnNfYmFkYmxvY2tzX2xpc3RfYWRkKGJiX2xpc3QsbmV4dF9iYWQpOworCQkJCQlpZiAoZXJyY29kZSkgeworCQkJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycmNvZGUsCisJCQkJCQkJIiVzIiwKKwkJCQkJCV8oIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgIgorCQkJCQkJICAiYmFkIGJsb2NrIGxpc3QiKSk7CisJCQkJCQlleGl0ICgxKTsKKwkJCQkJfQorCQkJCQljb250aW51ZTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisKKwkJaWYgKGluICE9IHN0ZGluKQorCQkJZmNsb3NlIChpbik7CisJfQorCisJZG8geworCQl1bnNpZ25lZCBpbnQgYmJfY291bnQ7CisKKwkJYmJfY291bnQgPSB0ZXN0X2Z1bmMoZGV2LCBsYXN0X2Jsb2NrLCBibG9ja19zaXplLAorCQkJCSAgICAgZmlyc3RfYmxvY2ssIGJsb2Nrc19hdF9vbmNlKTsKKwkJaWYgKGJiX2NvdW50KQorCQkJcGFzc2VzX2NsZWFuID0gMDsKKwkJZWxzZQorCQkJKytwYXNzZXNfY2xlYW47CisKKwkJaWYgKHZfZmxhZykKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCV8oIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIiksCisJCQkJYmJfY291bnQsIG51bV9yZWFkX2Vycm9ycywgbnVtX3dyaXRlX2Vycm9ycywgbnVtX2NvcnJ1cHRpb25fZXJyb3JzKTsKKworCX0gd2hpbGUgKHBhc3Nlc19jbGVhbiA8IG51bV9wYXNzZXMpOworCisJY2xvc2UgKGRldik7CisJaWYgKG91dCAhPSBzdGRvdXQpCisJCWZjbG9zZSAob3V0KTsKKwlmcmVlKHRfcGF0dHMpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvYmFzZV9kZXZpY2UuYyBiL2UyZnNwcm9ncy9taXNjL2Jhc2VfZGV2aWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJjZTEzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2Jhc2VfZGV2aWNlLmMKQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBiYXNlX2RldmljZS5jCisgKgorICogUmV0dXJuIHRoZSAiYmFzZSBkZXZpY2UiIGdpdmVuIGEgcGFydGljdWxhciBkZXZpY2U7IHRoaXMgaXMgdXNlZCB0bworICogYXNzdXJlIHRoYXQgd2Ugb25seSBmc2NrIG9uZSBwYXJ0aXRpb24gb24gYSBwYXJ0aWN1bGFyIGRyaXZlIGF0IGFueQorICogb25lIHRpbWUuICBPdGhlcndpc2UsIHRoZSBkaXNrIGhlYWRzIHdpbGwgYmUgc2Vla2luZyBhbGwgb3ZlciB0aGUKKyAqIHBsYWNlLiAgSWYgdGhlIGJhc2UgZGV2aWNlIGNhbiBub3QgYmUgZGV0ZXJtaW5lZCwgcmV0dXJuIE5VTEwuCisgKgorICogVGhlIGJhc2VfZGV2aWNlKCkgZnVuY3Rpb24gcmV0dXJucyBhbiBhbGxvY2F0ZWQgc3RyaW5nIHdoaWNoIG11c3QKKyAqIGJlIGZyZWVkLgorICoKKyAqIFdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbywgPHR5dHNvQG1pdC5lZHU+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgImZzY2suaCIKKworLyoKKyAqIFJlcXVpcmVkIGZvciB0aGUgdWJlci1zaWxseSBkZXZmcyAvZGV2L2lkZS9ob3N0MS9idXMyL3RhcmdldDMvbHVuMworICogcGF0aGFtZXMuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZXZmc19oaWVyW10gPSB7CisJImhvc3QiLCAiYnVzIiwgInRhcmdldCIsICJsdW4iLCAwCit9OworCitjaGFyICpiYXNlX2RldmljZShjb25zdCBjaGFyICpkZXZpY2UpCit7CisJY2hhciAqc3RyLCAqY3A7CisJY29uc3QgY2hhciAqKmhpZXIsICpkaXNrOworCWludCBsZW47CisKKwlzdHIgPSBtYWxsb2Moc3RybGVuKGRldmljZSkrMSk7CisJaWYgKCFzdHIpCisJCXJldHVybiBOVUxMOworCXN0cmNweShzdHIsIGRldmljZSk7CisJY3AgPSBzdHI7CisKKwkvKiBTa2lwIG92ZXIgL2Rldi87IGlmIGl0J3Mgbm90IHByZXNlbnQsIGdpdmUgdXAuICovCisJaWYgKHN0cm5jbXAoY3AsICIvZGV2LyIsIDUpICE9IDApCisJCWdvdG8gZXJyb3V0OworCWNwICs9IDU7CisKKwkvKiBTa2lwIG92ZXIgL2Rldi9kc2svLi4uICovCisJaWYgKHN0cm5jbXAoY3AsICJkc2svIiwgNCkgPT0gMCkKKwkJY3AgKz0gNDsKKworCS8qCisJICogRm9yIG1kIGRldmljZXMsIHdlIHRyZWF0IHRoZW0gYWxsIGFzIGlmIHRoZXkgd2VyZSBhbGwKKwkgKiBvbiBvbmUgZGlzaywgc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgdG8gcGFyYWxsZWxpemUgdGhlbS4KKwkgKi8KKwlpZiAoY3BbMF0gPT0gJ20nICYmIGNwWzFdID09ICdkJykgeworCQkqKGNwKzIpID0gMDsKKwkJcmV0dXJuIHN0cjsKKwl9CisKKwkvKiBIYW5kbGUgREFDIDk2MCBkZXZpY2VzICovCisJaWYgKHN0cm5jbXAoY3AsICJyZC8iLCAzKSA9PSAwKSB7CisJCWNwICs9IDM7CisJCWlmIChjcFswXSAhPSAnYycgfHwgY3BbMl0gIT0gJ2QnIHx8CisJCSAgICAhaXNkaWdpdChjcFsxXSkgfHwgIWlzZGlnaXQoY3BbM10pKQorCQkJZ290byBlcnJvdXQ7CisJCSooY3ArNCkgPSAwOworCQlyZXR1cm4gc3RyOworCX0KKworCS8qIE5vdyBsZXQncyBoYW5kbGUgL2Rldi9oZCogYW5kIC9kZXYvc2QqIGRldmljZXMuLi4uICovCisJaWYgKChjcFswXSA9PSAnaCcgfHwgY3BbMF0gPT0gJ3MnKSAmJiAoY3BbMV0gPT0gJ2QnKSkgeworCQljcCArPSAyOworCQkvKiBJZiB0aGVyZSdzIGEgc2luZ2xlIG51bWJlciBhZnRlciAvZGV2L2hkLCBza2lwIGl0ICovCisJCWlmIChpc2RpZ2l0KCpjcCkpCisJCQljcCsrOworCQkvKiBXaGF0IGZvbGxvd3MgbXVzdCBiZSBhbiBhbHBoYSBjaGFyLCBvciBnaXZlIHVwICovCisJCWlmICghaXNhbHBoYSgqY3ApKQorCQkJZ290byBlcnJvdXQ7CisJCSooY3AgKyAxKSA9IDA7CisJCXJldHVybiBzdHI7CisJfQorCisJLyogTm93IGxldCdzIGhhbmRsZSBkZXZmcyAodWdoKSBuYW1lcyAqLworCWxlbiA9IDA7CisJaWYgKHN0cm5jbXAoY3AsICJpZGUvIiwgNCkgPT0gMCkKKwkJbGVuID0gNDsKKwlpZiAoc3RybmNtcChjcCwgInNjc2kvIiwgNSkgPT0gMCkKKwkJbGVuID0gNTsKKwlpZiAobGVuKSB7CisJCWNwICs9IGxlbjsKKwkJLyoKKwkJICogTm93IHdlIHByb2NlZWQgZG93biB0aGUgZXhwZWN0ZWQgZGV2ZnMgaGllcmFyY2h5LgorCQkgKiBpLmUuLCAuLi4vaG9zdDEvYnVzMi90YXJnZXQzL2x1bjQvLi4uCisJCSAqIElmIHdlIGRvbid0IGZpbmQgdGhlIGV4cGVjdGVkIHRva2VuLCBmb2xsb3dlZCBieQorCQkgKiBzb21lIG51bWJlciBvZiBkaWdpdHMgYXQgZWFjaCBsZXZlbCwgYWJvcnQuCisJCSAqLworCQlmb3IgKGhpZXIgPSBkZXZmc19oaWVyOyAqaGllcjsgaGllcisrKSB7CisJCQlsZW4gPSBzdHJsZW4oKmhpZXIpOworCQkJaWYgKHN0cm5jbXAoY3AsICpoaWVyLCBsZW4pICE9IDApCisJCQkJZ290byBlcnJvdXQ7CisJCQljcCArPSBsZW47CisJCQl3aGlsZSAoKmNwICE9ICcvJyAmJiAqY3AgIT0gMCkgeworCQkJCWlmICghaXNkaWdpdCgqY3ApKQorCQkJCQlnb3RvIGVycm91dDsKKwkJCQljcCsrOworCQkJfQorCQkJY3ArKzsKKwkJfQorCQkqKGNwIC0gMSkgPSAwOworCQlyZXR1cm4gc3RyOworCX0KKworCS8qIE5vdyBoYW5kbGUgZGV2ZnMgL2Rldi9kaXNjIG9yIC9kZXYvZGlzayBuYW1lcyAqLworCWRpc2sgPSAwOworCWlmIChzdHJuY21wKGNwLCAiZGlzY3MvIiwgNikgPT0gMCkKKwkJZGlzayA9ICJkaXNjIjsKKwllbHNlIGlmIChzdHJuY21wKGNwLCAiZGlza3MvIiwgNikgPT0gMCkKKwkJZGlzayA9ICJkaXNrIjsKKwlpZiAoZGlzaykgeworCQljcCArPSA2OworCQlpZiAoc3RybmNtcChjcCwgZGlzaywgNCkgIT0gMCkKKwkJCWdvdG8gZXJyb3V0OworCQljcCArPSA0OworCQl3aGlsZSAoKmNwICE9ICcvJyAmJiAqY3AgIT0gMCkgeworCQkJaWYgKCFpc2RpZ2l0KCpjcCkpCisJCQkJZ290byBlcnJvdXQ7CisJCQljcCsrOworCQl9CisJCSpjcCA9IDA7CisJCXJldHVybiBzdHI7CisJfQorCitlcnJvdXQ6CisJZnJlZShzdHIpOworCXJldHVybiBOVUxMOworfQorCisjaWZkZWYgREVCVUcKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKwljb25zdCBjaGFyICpiYXNlOworCWNoYXIgIGJ1ZlsyNTZdLCAqY3A7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgc3RkaW4pID09IE5VTEwpCisJCQlicmVhazsKKwkJY3AgPSBzdHJjaHIoYnVmLCAnXG4nKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJY3AgPSBzdHJjaHIoYnVmLCAnXHQnKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJYmFzZSA9IGJhc2VfZGV2aWNlKGJ1Zik7CisJCXByaW50ZigiJXNcdCVzXG4iLCBidWYsIGJhc2UgPyBiYXNlIDogIk5PTkUiKTsKKwl9CisJZXhpdCgwKTsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvYmFzZV9kZXZpY2UudHN0IGIvZTJmc3Byb2dzL21pc2MvYmFzZV9kZXZpY2UudHN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwOWE1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9iYXNlX2RldmljZS50c3QKQEAgLTAsMCArMSwxNiBAQAorL2Rldi9oZGE3CS9kZXYvaGRhCisvZGV2L3NkYTEJL2Rldi9zZGEKKy9kZXYvaGRhCS9kZXYvaGRhCisvZGV2L3NkYQkvZGV2L3NkYQorL2Rldi9kc2svaGRhNgkvZGV2L2Rzay9oZGEKKy9kZXYvZHNrL3NkYTUJL2Rldi9kc2svc2RhCisvZGV2L21kNAkvZGV2L21kCisvZGV2L21kLzQJL2Rldi9tZAorL2Rldi9pZGUvaG9zdDAvYnVzMS90YXJnZXQyL2x1bjMJL2Rldi9pZGUvaG9zdDAvYnVzMS90YXJnZXQyL2x1bjMKKy9kZXYvaWRlL2hvc3QwL2J1czEvdGFyZ2V0Mi9sdW4zL3BhcnQxMAkvZGV2L2lkZS9ob3N0MC9idXMxL3RhcmdldDIvbHVuMworL2Rldi9pZGUvaG9zdDAvYnVzMS90YXJnZXQyL2x1bjMvCS9kZXYvaWRlL2hvc3QwL2J1czEvdGFyZ2V0Mi9sdW4zCisvZGV2L2Rpc2tzL2Rpc2syL3BhcnQyCS9kZXYvZGlza3MvZGlzazIKKy9kZXYvZGlza3MvZGlzazIvCS9kZXYvZGlza3MvZGlzazIKKy9kZXYvZGlza3MvZGlzazIJL2Rldi9kaXNrcy9kaXNrMgorL2Rldi9kaXNjcy9kaXNjMS9wYXJ0MTAJL2Rldi9kaXNjcy9kaXNjMQorL2Rldi9kaXNjcy9kaXNjMS8JL2Rldi9kaXNjcy9kaXNjMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvYmxraWQuOC5pbiBiL2UyZnNwcm9ncy9taXNjL2Jsa2lkLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0MjY4NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2Jsa2lkLjguaW4KQEAgLTAsMCArMSwxNjQgQEAKKy5cIiBDb3B5cmlnaHQgMjAwMCBBbmRyZWFzIERpbGdlciAoYWRpbGdlckB0dXJib2xpbnV4LmNvbSkKKy5cIgorLlwiIFRoaXMgbWFuIHBhZ2Ugd2FzIGNyZWF0ZWQgZm9yIGJsa2lkIGZyb20gZTJmc3Byb2dzLTEuMjUuCisuXCIKKy5cIiBUaGlzIGZpbGUgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKy5cIgorLlwiIEJhc2VkIG9uIHV1aWRnZW4sIE1vbiBTZXAgMTcgMTA6NDI6MTIgMjAwMCwgQW5kcmVhcyBEaWxnZXIKKy5USCBCTEtJRCA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitibGtpZCBcLSBjb21tYW5kXC1saW5lIHV0aWxpdHkgdG8gbG9jYXRlL3ByaW50IGJsb2NrIGRldmljZSBhdHRyaWJ1dGVzCisuU0ggU1lOT1BTSVMKKy5CIGJsa2lkCitbCisuQiBcLWdobEx2CitdCitbCitbCisuQiBcLWMKKy5JIGNhY2hlZmlsZQorXQorLkIgXC13CisuSSB3cml0ZWNhY2hlZmlsZQorXQorWworLkIgXC1vCisuSSBmb3JtYXQKK10KK1sKKy5CIFwtcworLkkgdGFnCitdCitbCisuQiBcLXQKKy5JUiBOQU1FID0gdmFsdWUKK10KK1sKKy5JIGRldmljZSAuLi4KK10KKy5TSCBERVNDUklQVElPTgorVGhlCisuQiBibGtpZAorcHJvZ3JhbSBpcyB0aGUgY29tbWFuZC1saW5lIGludGVyZmFjZSB0byB3b3JraW5nIHdpdGgKKy5CUiBsaWJibGtpZCAoMykKK2xpYnJhcnkuICBJdCBjYW4gZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIGNvbnRlbnQgKGUuZy4gZmlsZXN5c3RlbSwgc3dhcCkKK2EgYmxvY2sgZGV2aWNlIGhvbGRzLCBhbmQgYWxzbyBhdHRyaWJ1dGVzICh0b2tlbnMsIE5BTUU9dmFsdWUgcGFpcnMpCitmcm9tIHRoZSBjb250ZW50IG1ldGFkYXRhIChlLmcuIExBQkVMIG9yIFVVSUQgZmllbGRzKS4KKy5QUAorLkIgYmxraWQKK2hhcyB0d28gbWFpbiBmb3JtcyBvZiBvcGVyYXRpb246IGVpdGhlciBzZWFyY2hpbmcgZm9yIGEgZGV2aWNlIHdpdGggYQorc3BlY2lmaWMgTkFNRT12YWx1ZSBwYWlyLCBvciBkaXNwbGF5aW5nIE5BTUU9dmFsdWUgcGFpcnMgZm9yIG9uZSBvcgorbW9yZSBkZXZpY2VzLgorLlNIIE9QVElPTlMKKy5UUAorLkJJIFwtYyAiIGNhY2hlZmlsZSIKK1JlYWQgZnJvbQorLkkgY2FjaGVmaWxlCitpbnN0ZWFkIG9mIHJlYWRpbmcgZnJvbSB0aGUgZGVmYXVsdCBjYWNoZSBmaWxlCisuSVIgL2V0Yy9ibGtpZC50YWIgLgorSWYgeW91IHdhbnQgdG8gc3RhcnQgd2l0aCBhIGNsZWFuIGNhY2hlIChpLmUuIGRvbid0IHJlcG9ydCBkZXZpY2VzIHByZXZpb3VzbHkKK3NjYW5uZWQgYnV0IG5vdCBuZWNlc3NhcmlseSBhdmFpbGFibGUgYXQgdGhpcyB0aW1lKSwgc3BlY2lmeQorLklSIC9kZXYvbnVsbCAuCisuVFAKKy5CIFwtZworUGVyZm9ybSBhIGdhcmJhZ2UgY29sbGVjdGlvbiBwYXNzIG9uIHRoZSBibGtpZCBjYWNoZSB0byByZW1vdmUKK2RldmljZXMgd2hpY2ggbm8gbG9uZ2VyIGV4aXN0LgorLlRQCisuQiBcLWgKK0Rpc3BsYXkgYSB1c2FnZSBtZXNzYWdlIGFuZCBleGl0LgorLlRQCisuQiBcLWwKK0xvb2sgdXAgb25lIGRldmljZSB0aGF0IG1hdGNoZXMgdGhlIHNlYXJjaCBwYXJhbWV0ZXIgc3BlY2lmaWVkIHVzaW5nCit0aGUKKy5CIFwtdAorb3B0aW9uLiAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGRldmljZXMgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHNlYXJjaAorcGFyYW1ldGVyLCB0aGVuIHRoZSBkZXZpY2Ugd2l0aCB0aGUgaGlnaGVzdCBwcmlvcml0eSBpcyByZXR1cm5lZCwgYW5kL29yCit0aGUgZmlyc3QgZGV2aWNlIGZvdW5kIGF0IGEgZ2l2ZW4gcHJpb3JpdHkuICBEZXZpY2UgdHlwZXMgaW4gb3JkZXIgb2YKK2RlY3JlYXNpbmcgcHJpb3JpdHkgYXJlIERldmljZSBNYXBwZXIsIEVWTVMsIExWTSwgTUQsIGFuZCBmaW5hbGx5IHJlZ3VsYXIKK2Jsb2NrIGRldmljZXMuICBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLAorLkIgYmxraWQKK3dpbGwgcHJpbnQgYWxsIG9mIHRoZSBkZXZpY2VzIHRoYXQgbWF0Y2ggdGhlIHNlYXJjaCBwYXJhbWV0ZXIuCisuVFAKKy5CSSBcLW8gIiBmb3JtYXQiCitEaXNwbGF5CisuQlIgYmxraWQgJ3MKK291dHB1dCB1c2luZyB0aGUgc3BlY2lmaWVkIGZvcm1hdC4gIFRoZQorLkkgZm9ybWF0CitwYXJhbWV0ZXIgbWF5IGJlCisuSSBmdWxsCisodGhlIGRlZmF1bHQpLAorLkkgdmFsdWUKKyhvbmx5IHByaW50IHRoZSB2YWx1ZSBvZiB0aGUgdGFncyksCisuSSBsaXN0CisocHJpbnQgdGhlIGRldmljZXMgaW4gYSB1c2VyLWZyaWVuZGx5IGZvcm1hdCksCitvcgorLkkgZGV2aWNlCisob25seSBwcmludCB0aGUgZGV2aWNlIG5hbWUpLgorLlRQCisuQiBcLUwKK1ByaW50IHRoZSBkZXZpY2VzIGluIGEgdXNlci1mcmllbmRseSBsaXN0IGZvcm1hdC4gIFRoaXMgaXMgdGhlCitlcXVpdmFsZW50IG9mIHVzaW5nIHRoZSBvcHRpb24gXGZCLW8gbGlzdFxmUi4KKy5UUAorLkJJIFwtcyAiIHRhZyIKK0ZvciBlYWNoIChzcGVjaWZpZWQpIGRldmljZSwgc2hvdyBvbmx5IHRoZSB0YWdzIHRoYXQgbWF0Y2gKKy5JUiB0YWcgLgorSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBtdWx0aXBsZQorLkIgXC1zCitvcHRpb25zLiAgSWYgbm8gdGFnIGlzIHNwZWNpZmllZCwgdGhlbiBhbGwgdG9rZW5zIGFyZSBzaG93biBmb3IgYWxsCisoc3BlY2lmaWVkKSBkZXZpY2VzLgorSW4gb3JkZXIgdG8ganVzdCByZWZyZXNoIHRoZSBjYWNoZSB3aXRob3V0IHNob3dpbmcgYW55IHRva2VucywgdXNlCisuQiAiLXMgbm9uZSIKK3dpdGggbm8gb3RoZXIgb3B0aW9ucy4KKy5UUAorLkJJIFwtdCAiIE5BTUUiID0gInZhbHVlIgorU2VhcmNoIGZvciBibG9jayBkZXZpY2VzIHdpdGggdG9rZW5zIG5hbWVkCisuSSBOQU1FCit0aGF0IGhhdmUgdGhlIHZhbHVlCisuSVIgdmFsdWUgLAorYW5kIGRpc3BsYXkgYW55IGRldmljZXMgd2hpY2ggYXJlIGZvdW5kLgorQ29tbW9uIHZhbHVlcyBmb3IKKy5JIE5BTUUKK2luY2x1ZGUKKy5CUiBUWVBFICwKKy5CUiBMQUJFTCAsCithbmQKKy5CUiBVVUlEIC4KK0lmIHRoZXJlIGFyZSBubyBkZXZpY2VzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbGwgYmxvY2sgZGV2aWNlcword2lsbCBiZSBzZWFyY2hlZDsgb3RoZXJ3aXNlIG9ubHkgdGhlIHNwZWNpZmllZCBkZXZpY2VzIGFyZSBzZWFyY2hlZC4KKy5UUAorLkIgXC12CitEaXNwbGF5IHZlcnNpb24gbnVtYmVyIGFuZCBleGl0LgorLlRQCisuQkkgXC13ICIgd3JpdGVjYWNoZWZpbGUiCitXcml0ZSB0aGUgZGV2aWNlIGNhY2hlIHRvCisuSSB3cml0ZWNhY2hlZmlsZQoraW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIHRoZSBkZWZhdWx0IGNhY2hlIGZpbGUKKy5JUiAvZXRjL2Jsa2lkLnRhYiAuCitJZiB5b3UgZG9uJ3Qgd2FudCB0byBzYXZlIHRoZSBjYWNoZSB0byB0aGUgZGVmYXVsdCBmaWxlLCBzcGVjaWZ5CisuSVIgL2Rldi9udWxsLgorSWYgbm90IHNwZWNpZmllZCBpdCB3aWxsIGJlIHRoZSBzYW1lIGZpbGUgYXMgdGhhdCBnaXZlbiBieSB0aGUKKy5CIFwtYworb3B0aW9uLgorLlRQCisuSSBkZXZpY2UKK0Rpc3BsYXkgdG9rZW5zIGZyb20gb25seSB0aGUgc3BlY2lmaWVkIGRldmljZS4gIEl0IGlzIHBvc3NpYmxlIHRvCitnaXZlIG11bHRpcGxlCisuSSBkZXZpY2UKK29wdGlvbnMgb24gdGhlIGNvbW1hbmQgbGluZS4gIElmIG5vbmUgaXMgZ2l2ZW4sIGFsbCBkZXZpY2VzIHdoaWNoCithcHBlYXIgaW4KKy5JIC9wcm9jL3BhcnRpdGlvbnMKK2FyZSBzaG93biwgaWYgdGhleSBhcmUgcmVjb2duaXplZC4KKy5TSCAiUkVUVVJOIENPREUiCitJZiB0aGUgc3BlY2lmaWVkIHRva2VuIHdhcyBmb3VuZCwgb3IgaWYgYW55IHRhZ3Mgd2VyZSBzaG93biBmcm9tIChzcGVjaWZpZWQpCitkZXZpY2VzLCAwIGlzIHJldHVybmVkLiAgSWYgdGhlIHNwZWNpZmllZCB0b2tlbiB3YXMgbm90IGZvdW5kLCBvciBubworKHNwZWNpZmllZCkgZGV2aWNlcyBjb3VsZCBiZSBpZGVudGlmaWVkLCBhbiBleGl0IGNvZGUgb2YgMiBpcyByZXR1cm5lZC4KK0ZvciB1c2FnZSBvciBvdGhlciBlcnJvcnMsIGFuIGV4aXQgY29kZSBvZiA0IGlzIHJldHVybmVkLgorLlNIIEFVVEhPUgorLkIgYmxraWQKK3dhcyB3cml0dGVuIGJ5IEFuZHJlYXMgRGlsZ2VyIGZvciBsaWJibGtpZC4KKy5TSCBBVkFJTEFCSUxJVFkKKy5CIGJsa2lkCitpcyBwYXJ0IHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBzaW5jZSB2ZXJzaW9uIDEuMjYgYW5kIGlzIGF2YWlsYWJsZSBmcm9tCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCAiU0VFIEFMU08iCisuQlIgbGliYmxraWQgKDMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9ibGtpZC5jIGIvZTJmc3Byb2dzL21pc2MvYmxraWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZmZmFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvYmxraWQuYwpAQCAtMCwwICsxLDQzMSBAQAorLyoKKyAqIGJsa2lkLmMgLSBVc2VyIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgZm9yIGxpYmJsa2lkCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAxIEFuZHJlYXMgRGlsZ2VyCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX1RFUk1JT1NfSAorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVEVSTUlPX0gKKyNpbmNsdWRlIDx0ZXJtaW8uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX0lPQ1RMX0gKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IGdldG9wdChpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSwgY29uc3QgY2hhciAqb3B0c3RyaW5nKTsKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorCisjZGVmaW5lIE9VVFBVVF9WQUxVRV9PTkxZCTB4MDAwMQorI2RlZmluZSBPVVRQVVRfREVWSUNFX09OTFkJMHgwMDAyCisjZGVmaW5lIE9VVFBVVF9QUkVUVFlfTElTVAkweDAwMDQKKworI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJibGtpZC9ibGtpZC5oIgorCitzdGF0aWMgY29uc3QgY2hhciAqcHJvZ25hbWUgPSAiYmxraWQiOworCitzdGF0aWMgdm9pZCBwcmludF92ZXJzaW9uKEZJTEUgKm91dCkKK3sKKwlmcHJpbnRmKG91dCwgIiVzICVzICglcylcbiIsIHByb2duYW1lLCBCTEtJRF9WRVJTSU9OLCBCTEtJRF9EQVRFKTsKK30KKworc3RhdGljIHZvaWQgdXNhZ2UoaW50IGVycm9yKQoreworCUZJTEUgKm91dCA9IGVycm9yID8gc3RkZXJyIDogc3Rkb3V0OworCisJcHJpbnRfdmVyc2lvbihvdXQpOworCWZwcmludGYob3V0LAorCQkidXNhZ2U6XHQlcyBbLWMgPGZpbGU+XSBbLWdobEx2XSBbLW8gZm9ybWF0XSAiCisJCSJbLXMgPHRhZz5dIFstdCA8dG9rZW4+XVxuICAgIFstdyA8ZmlsZT5dIFtkZXYgLi4uXVxuIgorCQkiXHQtY1x0Y2FjaGUgZmlsZSAoZGVmYXVsdDogL2V0Yy9ibGtpZC50YWIsIC9kZXYvbnVsbCA9IG5vbmUpXG4iCisJCSJcdC1oXHRwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2UgYW5kIGV4aXRcbiIKKwkJIlx0LWdcdGdhcmJhZ2UgY29sbGVjdCB0aGUgYmxraWQgY2FjaGVcbiIKKwkJIlx0LXNcdHNob3cgc3BlY2lmaWVkIHRhZyhzKSAoZGVmYXVsdCBzaG93IGFsbCB0YWdzKVxuIgorCQkiXHQtdFx0ZmluZCBkZXZpY2Ugd2l0aCBhIHNwZWNpZmljIHRva2VuIChOQU1FPXZhbHVlIHBhaXIpXG4iCisJCSJcdC1sXHRsb29rdXAgdGhlIHRoZSBmaXJzdCBkZXZpY2Ugd2l0aCBhcmd1bWVudHMgc3BlY2lmaWVkIGJ5IC10XG4iCisJCSJcdC12XHRwcmludCB2ZXJzaW9uIGFuZCBleGl0XG4iCisJCSJcdC13XHR3cml0ZSBjYWNoZSB0byBkaWZmZXJlbnQgZmlsZSAoL2Rldi9udWxsID0gbm8gd3JpdGUpXG4iCisJCSJcdGRldlx0c3BlY2lmeSBkZXZpY2UocykgdG8gcHJvYmUgKGRlZmF1bHQ6IGFsbCBkZXZpY2VzKVxuIiwKKwkJcHJvZ25hbWUpOworCWV4aXQoZXJyb3IpOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBkb2VzICJzYWZlIiBwcmludGluZy4gIEl0IHdpbGwgY29udmVydCBub24tcHJpbnRhYmxlCisgKiBBU0NJSSBjaGFyYWN0ZXJzIHVzaW5nICdeJyBhbmQgTS0gbm90YXRpb24uCisgKi8KK3N0YXRpYyB2b2lkIHNhZmVfcHJpbnQoY29uc3QgY2hhciAqY3AsIGludCBsZW4pCit7CisJdW5zaWduZWQgY2hhcgljaDsKKworCWlmIChsZW4gPCAwKQorCQlsZW4gPSBzdHJsZW4oY3ApOworCisJd2hpbGUgKGxlbi0tKSB7CisJCWNoID0gKmNwKys7CisJCWlmIChjaCA+IDEyOCkgeworCQkJZnB1dHMoIk0tIiwgc3Rkb3V0KTsKKwkJCWNoIC09IDEyODsKKwkJfQorCQlpZiAoKGNoIDwgMzIpIHx8IChjaCA9PSAweDdmKSkgeworCQkJZnB1dGMoJ14nLCBzdGRvdXQpOworCQkJY2ggXj0gMHg0MDsgLyogXkAsIF5BLCBeQjsgXj8gZm9yIERFTCAqLworCQl9CisJCWZwdXRjKGNoLCBzdGRvdXQpOworCX0KK30KKworc3RhdGljIGludCBnZXRfdGVybWluYWxfd2lkdGgodm9pZCkKK3sKKyNpZmRlZiBUSU9DR1NJWkUKKwlzdHJ1Y3QgdHR5c2l6ZQl0X3dpbjsKKyNlbmRpZgorI2lmZGVmIFRJT0NHV0lOU1oKKwlzdHJ1Y3Qgd2luc2l6ZQl3X3dpbjsKKyNlbmRpZgorICAgICAgICBjb25zdCBjaGFyCSpjcDsKKwlpbnQgd2lkdGggPSA4MDsKKworI2lmZGVmIFRJT0NHU0laRQorCWlmIChpb2N0bCAoMCwgVElPQ0dTSVpFLCAmdF93aW4pID09IDApIHsKKwkJd2lkdGggPSB0X3dpbi50c19jb2xzOworCQlnb3RvIGdvdF9pdDsKKwl9CisjZW5kaWYKKyNpZmRlZiBUSU9DR1dJTlNaCisJaWYgKGlvY3RsICgwLCBUSU9DR1dJTlNaLCAmd193aW4pID09IDApIHsKKwkJd2lkdGggPSB3X3dpbi53c19jb2w7CisJCWdvdG8gZ290X2l0OworCX0KKyNlbmRpZgorICAgICAgICBjcCA9IGdldGVudigiQ09MVU1OUyIpOworCWlmIChjcCkKKwkJd2lkdGggPSBhdG9pKGNwKTsKK2dvdF9pdDoKKwlpZiAod2lkdGggPiA0MDk2KQorCQlyZXR1cm4gNDA5NjsJLyogc2FuaXR5IGNoZWNrICovCisJcmV0dXJuIHdpZHRoOworfQorCitzdGF0aWMgaW50IHByZXR0eV9wcmludF93b3JkKGNvbnN0IGNoYXIgKnN0ciwgaW50IG1heF9sZW4sCisJCQkgICAgIGludCBsZWZ0X2xlbiwgaW50IG92ZXJmbG93X25sKQoreworCWludCBsZW4gPSBzdHJsZW4oc3RyKSArIGxlZnRfbGVuOworCWludCByZXQgPSAwOworCisJZnB1dHMoc3RyLCBzdGRvdXQpOworCWlmIChvdmVyZmxvd19ubCAmJiBsZW4gPiBtYXhfbGVuKSB7CisJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJCWxlbiA9IDA7CisJfSBlbHNlIGlmIChsZW4gPiBtYXhfbGVuKQorCQlyZXQgPSBsZW4gLSBtYXhfbGVuOworCWRvIHsKKwkJZnB1dGMoJyAnLCBzdGRvdXQpOworCX0gd2hpbGUgKGxlbisrIDwgbWF4X2xlbik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgcHJldHR5X3ByaW50X2xpbmUoY29uc3QgY2hhciAqZGV2aWNlLCBjb25zdCBjaGFyICpmc190eXBlLAorCQkJICAgICAgY29uc3QgY2hhciAqbGFiZWwsIGNvbnN0IGNoYXIgKm10cHQsCisJCQkgICAgICBjb25zdCBjaGFyICp1dWlkKQoreworCXN0YXRpYyBpbnQgZGV2aWNlX2xlbiA9IDEwLCBmc190eXBlX2xlbiA9IDc7CisJc3RhdGljIGludCBsYWJlbF9sZW4gPSA4LCBtdHB0X2xlbiA9IDE0OworCXN0YXRpYyBpbnQgdGVybV93aWR0aCA9IC0xOworCWludCBsZW4sIHc7CisKKwlpZiAodGVybV93aWR0aCA8IDApIHsKKwkJdGVybV93aWR0aCA9IGdldF90ZXJtaW5hbF93aWR0aCgpOworCisJCWlmICh0ZXJtX3dpZHRoID4gODApIHsKKwkJCXRlcm1fd2lkdGggLT0gODA7CisJCQl3ID0gdGVybV93aWR0aCAvIDEwOworCQkJaWYgKHcgPiA4KQorCQkJCXcgPSA4OworCQkJdGVybV93aWR0aCAtPSAyKnc7CisJCQlsYWJlbF9sZW4gKz0gdzsKKwkJCWZzX3R5cGVfbGVuICs9IHc7CisJCQl3ID0gdGVybV93aWR0aC8yOworCQkJZGV2aWNlX2xlbiArPSB3OworCQkJbXRwdF9sZW4gKz13OworCQl9CisJfQorCisJbGVuID0gcHJldHR5X3ByaW50X3dvcmQoZGV2aWNlLCBkZXZpY2VfbGVuLCAwLCAxKTsKKwlsZW4gPSBwcmV0dHlfcHJpbnRfd29yZChmc190eXBlLCBmc190eXBlX2xlbiwgbGVuLCAwKTsKKwlsZW4gPSBwcmV0dHlfcHJpbnRfd29yZChsYWJlbCwgbGFiZWxfbGVuLCBsZW4sIDApOworCWxlbiA9IHByZXR0eV9wcmludF93b3JkKG10cHQsIG10cHRfbGVuLCBsZW4sIDApOworCWZwdXRzKHV1aWQsIHN0ZG91dCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKK30KKworc3RhdGljIHZvaWQgcHJldHR5X3ByaW50X2RldihibGtpZF9kZXYgZGV2KQoreworCWJsa2lkX3RhZ19pdGVyYXRlCWl0ZXI7CisJY29uc3QgY2hhcgkJKnR5cGUsICp2YWx1ZSwgKmRldm5hbWU7CisJY29uc3QgY2hhcgkJKnV1aWQgPSAiIiwgKmZzX3R5cGUgPSAiIiwgKmxhYmVsID0gIiI7CisJaW50CQkJbGVuLCBtb3VudF9mbGFnczsKKwljaGFyCQkJbXRwdFs4MF07CisJZXJyY29kZV90CQlyZXR2YWw7CisKKwlpZiAoZGV2ID09IE5VTEwpIHsKKwkJcHJldHR5X3ByaW50X2xpbmUoImRldmljZSIsICJmc190eXBlIiwgImxhYmVsIiwKKwkJCQkgICJtb3VudCBwb2ludCIsICJVVUlEIik7CisJCWZvciAobGVuPWdldF90ZXJtaW5hbF93aWR0aCgpLTE7IGxlbiA+IDA7IGxlbi0tKQorCQkJZnB1dGMoJy0nLCBzdGRvdXQpOworCQlmcHV0YygnXG4nLCBzdGRvdXQpOworCQlyZXR1cm47CisJfQorCisJZGV2bmFtZSA9IGJsa2lkX2Rldl9kZXZuYW1lKGRldik7CisJaWYgKGFjY2VzcyhkZXZuYW1lLCBGX09LKSkKKwkJcmV0dXJuOworCisJLyogR2V0IHRoZSB1dWlkLCBsYWJlbCwgdHlwZSAqLworCWl0ZXIgPSBibGtpZF90YWdfaXRlcmF0ZV9iZWdpbihkZXYpOworCXdoaWxlIChibGtpZF90YWdfbmV4dChpdGVyLCAmdHlwZSwgJnZhbHVlKSA9PSAwKSB7CisJCWlmICghc3RyY21wKHR5cGUsICJVVUlEIikpCisJCQl1dWlkID0gdmFsdWU7CisJCWlmICghc3RyY21wKHR5cGUsICJUWVBFIikpCisJCQlmc190eXBlID0gdmFsdWU7CisJCWlmICghc3RyY21wKHR5cGUsICJMQUJFTCIpKQorCQkJbGFiZWwgPSB2YWx1ZTsKKwl9CisJYmxraWRfdGFnX2l0ZXJhdGVfZW5kKGl0ZXIpOworCisJLyogR2V0IHRoZSBtb3VudCBwb2ludCAqLworCW10cHRbMF0gPSAwOworCXJldHZhbCA9IGV4dDJmc19jaGVja19tb3VudF9wb2ludChkZXZuYW1lLCAmbW91bnRfZmxhZ3MsCisJCQkJCSAgbXRwdCwgc2l6ZW9mKG10cHQpKTsKKwlpZiAocmV0dmFsID09IDApIHsKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSB7CisJCQlpZiAoIW10cHRbMF0pCisJCQkJc3RyY3B5KG10cHQsICIobW91bnRlZCwgbXRwdCB1bmtub3duKSIpOworCQl9IGVsc2UgaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9CVVNZKQorCQkJc3RyY3B5KG10cHQsICIoaW4gdXNlKSIpOworCQllbHNlCisJCQlzdHJjcHkobXRwdCwgIihub3QgbW91bnRlZCkiKTsKKwl9CisKKwlwcmV0dHlfcHJpbnRfbGluZShkZXZuYW1lLCBmc190eXBlLCBsYWJlbCwgbXRwdCwgdXVpZCk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3RhZ3MoYmxraWRfZGV2IGRldiwgY2hhciAqc2hvd1tdLCBpbnQgbnVtdGFnLCBpbnQgb3V0cHV0KQoreworCWJsa2lkX3RhZ19pdGVyYXRlCWl0ZXI7CisJY29uc3QgY2hhcgkJKnR5cGUsICp2YWx1ZTsKKwlpbnQgCQkJaSwgZmlyc3QgPSAxOworCisJaWYgKCFkZXYpCisJCXJldHVybjsKKworCWlmIChvdXRwdXQgJiBPVVRQVVRfUFJFVFRZX0xJU1QpIHsKKwkJcHJldHR5X3ByaW50X2RldihkZXYpOworCQlyZXR1cm47CisJfQorCisJaWYgKG91dHB1dCAmIE9VVFBVVF9ERVZJQ0VfT05MWSkgeworCQlwcmludGYoIiVzXG4iLCBibGtpZF9kZXZfZGV2bmFtZShkZXYpKTsKKwkJcmV0dXJuOworCX0KKworCWl0ZXIgPSBibGtpZF90YWdfaXRlcmF0ZV9iZWdpbihkZXYpOworCXdoaWxlIChibGtpZF90YWdfbmV4dChpdGVyLCAmdHlwZSwgJnZhbHVlKSA9PSAwKSB7CisJCWlmIChudW10YWcgJiYgc2hvdykgeworCQkJZm9yIChpPTA7IGkgPCBudW10YWc7IGkrKykKKwkJCQlpZiAoIXN0cmNtcCh0eXBlLCBzaG93W2ldKSkKKwkJCQkJYnJlYWs7CisJCQlpZiAoaSA+PSBudW10YWcpCisJCQkJY29udGludWU7CisJCX0KKwkJaWYgKG91dHB1dCAmIE9VVFBVVF9WQUxVRV9PTkxZKSB7CisJCQlmcHV0cyh2YWx1ZSwgc3Rkb3V0KTsKKwkJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJCX0gZWxzZSB7CisJCQlpZiAoZmlyc3QpIHsKKwkJCQlwcmludGYoIiVzOiAiLCBibGtpZF9kZXZfZGV2bmFtZShkZXYpKTsKKwkJCQlmaXJzdCA9IDA7CisJCQl9CisJCQlmcHV0cyh0eXBlLCBzdGRvdXQpOworCQkJZnB1dHMoIj1cIiIsIHN0ZG91dCk7CisJCQlzYWZlX3ByaW50KHZhbHVlLCAtMSk7CisJCQlmcHV0cygiXCIgIiwgc3Rkb3V0KTsKKwkJfQorCX0KKwlibGtpZF90YWdfaXRlcmF0ZV9lbmQoaXRlcik7CisKKwlpZiAoIWZpcnN0ICYmICEob3V0cHV0ICYgT1VUUFVUX1ZBTFVFX09OTFkpKQorCQlwcmludGYoIlxuIik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisJY2hhciAqZGV2aWNlc1sxMjhdID0geyBOVUxMLCB9OworCWNoYXIgKnNob3dbMTI4XSA9IHsgTlVMTCwgfTsKKwljaGFyICpzZWFyY2hfdHlwZSA9IE5VTEwsICpzZWFyY2hfdmFsdWUgPSBOVUxMOworCWNoYXIgKnJlYWQgPSBOVUxMOworCWNoYXIgKndyaXRlID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQgbnVtZGV2ID0gMCwgbnVtdGFnID0gMDsKKwlpbnQgdmVyc2lvbiA9IDA7CisJaW50IGVyciA9IDQ7CisJdW5zaWduZWQgaW50IGk7CisJaW50IG91dHB1dF9mb3JtYXQgPSAwOworCWludCBsb29rdXAgPSAwLCBnYyA9IDA7CisJaW50IGM7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJjOmY6Z2hsTG86czp0Onc6diIpKSAhPSBFT0YpCisJCXN3aXRjaCAoYykgeworCQljYXNlICdjJzoKKwkJCXJlYWQgPSBvcHRhcmc7CisJCQlpZiAoIXdyaXRlKQorCQkJCXdyaXRlID0gcmVhZDsKKwkJCWJyZWFrOworCQljYXNlICdsJzoKKwkJCWxvb2t1cCsrOworCQkJYnJlYWs7CisJCWNhc2UgJ0wnOgorCQkJb3V0cHV0X2Zvcm1hdCA9IE9VVFBVVF9QUkVUVFlfTElTVDsKKwkJCWJyZWFrOworCQljYXNlICdnJzoKKwkJCWdjID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdvJzoKKwkJCWlmICghc3RyY21wKG9wdGFyZywgInZhbHVlIikpCisJCQkJb3V0cHV0X2Zvcm1hdCA9IE9VVFBVVF9WQUxVRV9PTkxZOworCQkJZWxzZSBpZiAoIXN0cmNtcChvcHRhcmcsICJkZXZpY2UiKSkKKwkJCQlvdXRwdXRfZm9ybWF0ID0gT1VUUFVUX0RFVklDRV9PTkxZOworCQkJZWxzZSBpZiAoIXN0cmNtcChvcHRhcmcsICJsaXN0IikpCisJCQkJb3V0cHV0X2Zvcm1hdCA9IE9VVFBVVF9QUkVUVFlfTElTVDsKKwkJCWVsc2UgaWYgKCFzdHJjbXAob3B0YXJnLCAiZnVsbCIpKQorCQkJCW91dHB1dF9mb3JtYXQgPSAwOworCQkJZWxzZSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIG91dHB1dCBmb3JtYXQgJXMuICIKKwkJCQkJIkNob29zZSBmcm9tIHZhbHVlLFxuXHQiCisJCQkJCSJkZXZpY2UsIGxpc3QsIG9yIGZ1bGxcbiIsIG9wdGFyZyk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdzJzoKKwkJCWlmIChudW10YWcgPj0gc2l6ZW9mKHNob3cpIC8gc2l6ZW9mKCpzaG93KSkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiVG9vIG1hbnkgdGFncyBzcGVjaWZpZWRcbiIpOworCQkJCXVzYWdlKGVycik7CisJCQl9CisJCQlzaG93W251bXRhZysrXSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICd0JzoKKwkJCWlmIChzZWFyY2hfdHlwZSkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiQ2FuIG9ubHkgc2VhcmNoIGZvciAiCisJCQkJCQkib25lIE5BTUU9dmFsdWUgcGFpclxuIik7CisJCQkJdXNhZ2UoZXJyKTsKKwkJCX0KKwkJCWlmIChibGtpZF9wYXJzZV90YWdfc3RyaW5nKG9wdGFyZywKKwkJCQkJCSAgICZzZWFyY2hfdHlwZSwKKwkJCQkJCSAgICZzZWFyY2hfdmFsdWUpKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICItdCBuZWVkcyBOQU1FPXZhbHVlIHBhaXJcbiIpOworCQkJCXVzYWdlKGVycik7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQl2ZXJzaW9uID0gMTsKKwkJCWJyZWFrOworCQljYXNlICd3JzoKKwkJCXdyaXRlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ2gnOgorCQkJZXJyID0gMDsKKwkJCS8qIGZhbGx0aHJvdWdoICovCisJCWRlZmF1bHQ6CisJCQl1c2FnZShlcnIpOworCQl9CisKKwl3aGlsZSAob3B0aW5kIDwgYXJnYykKKwkJZGV2aWNlc1tudW1kZXYrK10gPSBhcmd2W29wdGluZCsrXTsKKworCWlmICh2ZXJzaW9uKSB7CisJCXByaW50X3ZlcnNpb24oc3Rkb3V0KTsKKwkJZ290byBleGl0OworCX0KKworCWlmIChibGtpZF9nZXRfY2FjaGUoJmNhY2hlLCByZWFkKSA8IDApCisJCWdvdG8gZXhpdDsKKworCWVyciA9IDI7CisJaWYgKGdjKSB7CisJCWJsa2lkX2djX2NhY2hlKGNhY2hlKTsKKwkJZ290byBleGl0OworCX0KKwlpZiAob3V0cHV0X2Zvcm1hdCAmIE9VVFBVVF9QUkVUVFlfTElTVCkKKwkJcHJldHR5X3ByaW50X2RldihOVUxMKTsKKworCWlmIChsb29rdXApIHsKKwkJYmxraWRfZGV2IGRldjsKKworCQlpZiAoIXNlYXJjaF90eXBlKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIlRoZSBsb29rdXAgb3B0aW9uIHJlcXVpcmVzIGEgIgorCQkJCSJzZWFyY2ggdHlwZSBzcGVjaWZpZWQgdXNpbmcgLXRcbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCQkvKiBMb2FkIGFueSBhZGRpdGlvbmFsIGRldmljZXMgbm90IGluIHRoZSBjYWNoZSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnVtZGV2OyBpKyspCisJCQlibGtpZF9nZXRfZGV2KGNhY2hlLCBkZXZpY2VzW2ldLCBCTEtJRF9ERVZfTk9STUFMKTsKKworCQlpZiAoKGRldiA9IGJsa2lkX2ZpbmRfZGV2X3dpdGhfdGFnKGNhY2hlLCBzZWFyY2hfdHlwZSwKKwkJCQkJCSAgIHNlYXJjaF92YWx1ZSkpKSB7CisJCQlwcmludF90YWdzKGRldiwgc2hvdywgbnVtdGFnLCBvdXRwdXRfZm9ybWF0KTsKKwkJCWVyciA9IDA7CisJCX0KKwkvKiBJZiB3ZSBkaWRuJ3Qgc3BlY2lmeSBhIHNpbmdsZSBkZXZpY2UsIHNob3cgYWxsIGF2YWlsYWJsZSBkZXZpY2VzICovCisJfSBlbHNlIGlmICghbnVtZGV2KSB7CisJCWJsa2lkX2Rldl9pdGVyYXRlCWl0ZXI7CisJCWJsa2lkX2RldgkJZGV2OworCisJCWJsa2lkX3Byb2JlX2FsbChjYWNoZSk7CisKKwkJaXRlciA9IGJsa2lkX2Rldl9pdGVyYXRlX2JlZ2luKGNhY2hlKTsKKwkJYmxraWRfZGV2X3NldF9zZWFyY2goaXRlciwgc2VhcmNoX3R5cGUsIHNlYXJjaF92YWx1ZSk7CisJCXdoaWxlIChibGtpZF9kZXZfbmV4dChpdGVyLCAmZGV2KSA9PSAwKSB7CisJCQlkZXYgPSBibGtpZF92ZXJpZnkoY2FjaGUsIGRldik7CisJCQlpZiAoIWRldikKKwkJCQljb250aW51ZTsKKwkJCXByaW50X3RhZ3MoZGV2LCBzaG93LCBudW10YWcsIG91dHB1dF9mb3JtYXQpOworCQkJZXJyID0gMDsKKwkJfQorCQlibGtpZF9kZXZfaXRlcmF0ZV9lbmQoaXRlcik7CisJLyogQWRkIGFsbCBzcGVjaWZpZWQgZGV2aWNlcyB0byBjYWNoZSAob3B0aW9uYWxseSBkaXNwbGF5IHRhZ3MpICovCisJfSBlbHNlIGZvciAoaSA9IDA7IGkgPCBudW1kZXY7IGkrKykgeworCQlibGtpZF9kZXYgZGV2ID0gYmxraWRfZ2V0X2RldihjYWNoZSwgZGV2aWNlc1tpXSwKKwkJCQkJCSAgQkxLSURfREVWX05PUk1BTCk7CisKKwkJaWYgKGRldikgeworCQkJaWYgKHNlYXJjaF90eXBlICYmCisJCQkgICAgIWJsa2lkX2Rldl9oYXNfdGFnKGRldiwgc2VhcmNoX3R5cGUsCisJCQkJCSAgICAgICBzZWFyY2hfdmFsdWUpKQorCQkJCWNvbnRpbnVlOworCQkJcHJpbnRfdGFncyhkZXYsIHNob3csIG51bXRhZywgb3V0cHV0X2Zvcm1hdCk7CisJCQllcnIgPSAwOworCQl9CisJfQorCitleGl0OgorCWZyZWUoc2VhcmNoX3R5cGUpOworCWZyZWUoc2VhcmNoX3ZhbHVlKTsKKwlibGtpZF9wdXRfY2FjaGUoY2FjaGUpOworCXJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9jaGF0dHIuMS5pbiBiL2UyZnNwcm9ncy9taXNjL2NoYXR0ci4xLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZWUzMzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9jaGF0dHIuMS5pbgpAQCAtMCwwICsxLDIyOCBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5USCBDSEFUVFIgMSAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorY2hhdHRyIFwtIGNoYW5nZSBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBmaWxlIHN5c3RlbQorLlNIIFNZTk9QU0lTCisuQiBjaGF0dHIKK1sKKy5CIFwtUlZmCitdCitbCisuQiBcLXYKKy5JIHZlcnNpb24KK10KK1sKKy5CIFwtcAorLkkgcHJvamVjdAorXQorWworLkkgbW9kZQorXQorLkkgZmlsZXMuLi4KKy5TSCBERVNDUklQVElPTgorLkIgY2hhdHRyCitjaGFuZ2VzIHRoZSBmaWxlIGF0dHJpYnV0ZXMgb24gYSBMaW51eCBmaWxlIHN5c3RlbS4KKy5QUAorVGhlIGZvcm1hdCBvZiBhIHN5bWJvbGljIG1vZGUgaXMgKy09W2FBY0NkRGVpanNTdFR1XS4KKy5QUAorVGhlIG9wZXJhdG9yICcrJyBjYXVzZXMgdGhlIHNlbGVjdGVkIGF0dHJpYnV0ZXMgdG8gYmUgYWRkZWQgdG8gdGhlCitleGlzdGluZyBhdHRyaWJ1dGVzIG9mIHRoZSBmaWxlczsgJy0nIGNhdXNlcyB0aGVtIHRvIGJlIHJlbW92ZWQ7IGFuZCAnPScKK2NhdXNlcyB0aGVtIHRvIGJlIHRoZSBvbmx5IGF0dHJpYnV0ZXMgdGhhdCB0aGUgZmlsZXMgaGF2ZS4KKy5QUAorVGhlIGxldHRlcnMgJ2FBY0NkRGVpanNTdFR1JyBzZWxlY3QgdGhlIG5ldyBhdHRyaWJ1dGVzIGZvciB0aGUgZmlsZXM6CithcHBlbmQgb25seSAoYSksCitubyBhdGltZSB1cGRhdGVzIChBKSwKK2NvbXByZXNzZWQgKGMpLAorbm8gY29weSBvbiB3cml0ZSAoQyksCitubyBkdW1wIChkKSwKK3N5bmNocm9ub3VzIGRpcmVjdG9yeSB1cGRhdGVzIChEKSwKK2V4dGVudCBmb3JtYXQgKGUpLAoraW1tdXRhYmxlIChpKSwKK2RhdGEgam91cm5hbGxpbmcgKGopLAorcHJvamVjdCBoaWVyYXJjaHkgKFApLAorc2VjdXJlIGRlbGV0aW9uIChzKSwKK3N5bmNocm9ub3VzIHVwZGF0ZXMgKFMpLAorbm8gdGFpbC1tZXJnaW5nICh0KSwKK3RvcCBvZiBkaXJlY3RvcnkgaGllcmFyY2h5IChUKSwKK2FuZCB1bmRlbGV0YWJsZSAodSkuCisuUFAKK1RoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LCBhbmQgbWF5IGJlIGxpc3RlZCBieQorLkJSIGxzYXR0ciAoMSkKK2J1dCBub3QgbW9kaWZpZWQgYnkgY2hhdHRyOgorY29tcHJlc3Npb24gZXJyb3IgKEUpLAoraHVnZSBmaWxlIChoKSwKK2luZGV4ZWQgZGlyZWN0b3J5IChJKSwKK2lubGluZSBkYXRhIChOKSwKK2NvbXByZXNzaW9uIHJhdyBhY2Nlc3MgKFgpLAorYW5kIGNvbXByZXNzZWQgZGlydHkgZmlsZSAoWikuCisuUFAKK05vdCBhbGwgZmxhZ3MgYXJlIHN1cHBvcnRlZCBvciB1dGlsaXplZCBieSBhbGwgZmlsZXN5c3RlbXM7IHJlZmVyIHRvCitmaWxlc3lzdGVtLXNwZWNpZmljIG1hbiBwYWdlcyBzdWNoIGFzCisuQlIgYnRyZnMgKDUpLAorLkJSIGV4dDQgKDUpLAorYW5kCisuQlIgeGZzICg1KQorZm9yIG1vcmUgZmlsZXN5c3RlbS1zcGVjaWZpYyBkZXRhaWxzLgorLlNIIE9QVElPTlMKKy5UUAorLkIgXC1SCitSZWN1cnNpdmVseSBjaGFuZ2UgYXR0cmlidXRlcyBvZiBkaXJlY3RvcmllcyBhbmQgdGhlaXIgY29udGVudHMuCisuVFAKKy5CIFwtVgorQmUgdmVyYm9zZSB3aXRoIGNoYXR0cidzIG91dHB1dCBhbmQgcHJpbnQgdGhlIHByb2dyYW0gdmVyc2lvbi4KKy5UUAorLkIgXC1mCitTdXBwcmVzcyBtb3N0IGVycm9yIG1lc3NhZ2VzLgorLlRQCisuQkkgXC12ICIgdmVyc2lvbiIKK1NldCB0aGUgZmlsZSdzIHZlcnNpb24vZ2VuZXJhdGlvbiBudW1iZXIuCisuVFAKKy5CSSBcLXAgIiBwcm9qZWN0IgorU2V0IHRoZSBmaWxlJ3MgcHJvamVjdCBudW1iZXIuCisuU0ggQVRUUklCVVRFUworQSBmaWxlIHdpdGggdGhlICdhJyBhdHRyaWJ1dGUgc2V0IGNhbiBvbmx5IGJlIG9wZW4gaW4gYXBwZW5kIG1vZGUgZm9yIHdyaXRpbmcuCitPbmx5IHRoZSBzdXBlcnVzZXIgb3IgYSBwcm9jZXNzIHBvc3Nlc3NpbmcgdGhlIENBUF9MSU5VWF9JTU1VVEFCTEUKK2NhcGFiaWxpdHkgY2FuIHNldCBvciBjbGVhciB0aGlzIGF0dHJpYnV0ZS4KKy5QUAorV2hlbiBhIGZpbGUgd2l0aCB0aGUgJ0EnIGF0dHJpYnV0ZSBzZXQgaXMgYWNjZXNzZWQsIGl0cyBhdGltZSByZWNvcmQgaXMKK25vdCBtb2RpZmllZC4gIFRoaXMgYXZvaWRzIGEgY2VydGFpbiBhbW91bnQgb2YgZGlzayBJL08gZm9yIGxhcHRvcAorc3lzdGVtcy4KKy5QUAorQSBmaWxlIHdpdGggdGhlICdjJyBhdHRyaWJ1dGUgc2V0IGlzIGF1dG9tYXRpY2FsbHkgY29tcHJlc3NlZCBvbiB0aGUgZGlzaworYnkgdGhlIGtlcm5lbC4gIEEgcmVhZCBmcm9tIHRoaXMgZmlsZSByZXR1cm5zIHVuY29tcHJlc3NlZCBkYXRhLiAgQSB3cml0ZSB0bwordGhpcyBmaWxlIGNvbXByZXNzZXMgZGF0YSBiZWZvcmUgc3RvcmluZyB0aGVtIG9uIHRoZSBkaXNrLiAgTm90ZTogcGxlYXNlCittYWtlIHN1cmUgdG8gcmVhZCB0aGUgYnVncyBhbmQgbGltaXRhdGlvbnMgc2VjdGlvbiBhdCB0aGUgZW5kIG9mIHRoaXMKK2RvY3VtZW50LgorLlBQCitBIGZpbGUgd2l0aCB0aGUgJ0MnIGF0dHJpYnV0ZSBzZXQgd2lsbCBub3QgYmUgc3ViamVjdCB0byBjb3B5LW9uLXdyaXRlCit1cGRhdGVzLiAgVGhpcyBmbGFnIGlzIG9ubHkgc3VwcG9ydGVkIG9uIGZpbGUgc3lzdGVtcyB3aGljaCBwZXJmb3JtCitjb3B5LW9uLXdyaXRlLiAgKE5vdGU6IEZvciBidHJmcywgdGhlICdDJyBmbGFnIHNob3VsZCBiZQorc2V0IG9uIG5ldyBvciBlbXB0eSBmaWxlcy4gIElmIGl0IGlzIHNldCBvbiBhIGZpbGUgd2hpY2ggYWxyZWFkeSBoYXMKK2RhdGEgYmxvY2tzLCBpdCBpcyB1bmRlZmluZWQgd2hlbiB0aGUgYmxvY2tzIGFzc2lnbmVkIHRvIHRoZSBmaWxlIHdpbGwKK2JlIGZ1bGx5IHN0YWJsZS4gIElmIHRoZSAnQycgZmxhZyBpcyBzZXQgb24gYSBkaXJlY3RvcnksIGl0IHdpbGwgaGF2ZSBubworZWZmZWN0IG9uIHRoZSBkaXJlY3RvcnksIGJ1dCBuZXcgZmlsZXMgY3JlYXRlZCBpbiB0aGF0IGRpcmVjdG9yeSB3aWxsCitoYXZlIHRoZSBOb19DT1cgYXR0cmlidXRlIHNldC4pCisuUFAKK0EgZmlsZSB3aXRoIHRoZSAnZCcgYXR0cmlidXRlIHNldCBpcyBub3QgY2FuZGlkYXRlIGZvciBiYWNrdXAgd2hlbiB0aGUKKy5CUiBkdW1wICg4KQorcHJvZ3JhbSBpcyBydW4uCisuUFAKK1doZW4gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgJ0QnIGF0dHJpYnV0ZSBzZXQgaXMgbW9kaWZpZWQsCit0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiBzeW5jaHJvbm91c2x5IG9uIHRoZSBkaXNrOyB0aGlzIGlzIGVxdWl2YWxlbnQgdG8KK3RoZSAnZGlyc3luYycgbW91bnQgb3B0aW9uIGFwcGxpZWQgdG8gYSBzdWJzZXQgb2YgdGhlIGZpbGVzLgorLlBQCitUaGUgJ2UnIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgZmlsZSBpcyB1c2luZyBleHRlbnRzIGZvciBtYXBwaW5nCit0aGUgYmxvY2tzIG9uIGRpc2suICBJdCBtYXkgbm90IGJlIHJlbW92ZWQgdXNpbmcKKy5CUiBjaGF0dHIgKDEpLgorLlBQCitUaGUgJ0UnIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSBleHBlcmltZW50YWwgZW5jcnlwdGlvbiBwYXRjaGVzIHRvCitpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGhhcyBiZWVuIGVuY3J5cHRlZC4gIEl0IG1heSBub3QgYmUKK3NldCBvciByZXNldCB1c2luZworLkJSIGNoYXR0ciAoMSksCithbHRob3VnaCBpdCBjYW4gYmUgZGlzcGxheWVkIGJ5CisuQlIgbHNhdHRyICgxKS4KKy5QUAorVGhlICdoJyBhdHRyaWJ1dGUgaW5kaWNhdGVzIHRoZSBmaWxlIGlzIHN0b3JpbmcgaXRzIGJsb2NrcyBpbiB1bml0cyBvZiB0aGUKK2ZpbGVzeXN0ZW0gYmxvY2tzaXplIGluc3RlYWQgb2YgaW4gdW5pdHMgb2Ygc2VjdG9ycywgYW5kIG1lYW5zIHRoYXQgdGhlIGZpbGUKK2lzIChvciBhdCBvbmUgdGltZSB3YXMpIGxhcmdlciB0aGFuIDJUQi4gIEl0IG1heSBub3QgYmUgc2V0IG9yIHJlc2V0IHVzaW5nCisuQlIgY2hhdHRyICgxKSwKK2FsdGhvdWdoIGl0IGNhbiBiZSBkaXNwbGF5ZWQgYnkKKy5CUiBsc2F0dHIgKDEpLgorLlBQCitBIGZpbGUgd2l0aCB0aGUgJ2knIGF0dHJpYnV0ZSBjYW5ub3QgYmUgbW9kaWZpZWQ6IGl0IGNhbm5vdCBiZSBkZWxldGVkIG9yCityZW5hbWVkLCBubyBsaW5rIGNhbiBiZSBjcmVhdGVkIHRvIHRoaXMgZmlsZSBhbmQgbm8gZGF0YSBjYW4gYmUgd3JpdHRlbgordG8gdGhlIGZpbGUuICBPbmx5IHRoZSBzdXBlcnVzZXIgb3IgYSBwcm9jZXNzIHBvc3Nlc3NpbmcgdGhlCitDQVBfTElOVVhfSU1NVVRBQkxFIGNhcGFiaWxpdHkgY2FuIHNldCBvciBjbGVhciB0aGlzIGF0dHJpYnV0ZS4KKy5QUAorVGhlICdJJyBhdHRyaWJ1dGUgaXMgdXNlZCBieSB0aGUgaHRyZWUgY29kZSB0byBpbmRpY2F0ZSB0aGF0IGEgZGlyZWN0b3J5CitpcyBiZWluZyBpbmRleGVkIHVzaW5nIGhhc2hlZCB0cmVlcy4gIEl0IG1heSBub3QgYmUgc2V0IG9yIHJlc2V0IHVzaW5nCisuQlIgY2hhdHRyICgxKSwKK2FsdGhvdWdoIGl0IGNhbiBiZSBkaXNwbGF5ZWQgYnkKKy5CUiBsc2F0dHIgKDEpLgorLlBQCitBIGZpbGUgd2l0aCB0aGUgJ2onIGF0dHJpYnV0ZSBoYXMgYWxsIG9mIGl0cyBkYXRhIHdyaXR0ZW4gdG8gdGhlIGV4dDMKK29yIGV4dDQgam91cm5hbCBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB0aGUgZmlsZSBpdHNlbGYsIGlmIHRoZSBmaWxlc3lzdGVtCitpcyBtb3VudGVkIHdpdGggdGhlICJkYXRhPW9yZGVyZWQiIG9yICJkYXRhPXdyaXRlYmFjayIgb3B0aW9ucy4gIFdoZW4gdGhlCitmaWxlc3lzdGVtIGlzIG1vdW50ZWQgd2l0aCB0aGUgImRhdGE9am91cm5hbCIgb3B0aW9uIGFsbCBmaWxlIGRhdGEKK2lzIGFscmVhZHkgam91cm5hbGxlZCBhbmQgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vIGVmZmVjdC4gIE9ubHkKK3RoZSBzdXBlcnVzZXIgb3IgYSBwcm9jZXNzIHBvc3Nlc3NpbmcgdGhlIENBUF9TWVNfUkVTT1VSQ0UKK2NhcGFiaWxpdHkgY2FuIHNldCBvciBjbGVhciB0aGlzIGF0dHJpYnV0ZS4KKy5QUAorQSBmaWxlIHdpdGggdGhlICdOJyBhdHRyaWJ1dGUgc2V0IGluZGljYXRlcyB0aGF0IHRoZSBmaWxlIGhhcyBkYXRhCitzdG9yZWQgaW5saW5lLCB3aXRoaW4gdGhlIGlub2RlIGl0c2VsZi4gSXQgbWF5IG5vdCBiZSBzZXQgb3IgcmVzZXQgdXNpbmcKKy5CUiBjaGF0dHIgKDEpLAorYWx0aG91Z2ggaXQgY2FuIGJlIGRpc3BsYXllZCBieQorLkJSIGxzYXR0ciAoMSkuCisuUFAKK0EgZGlyZWN0b3J5IHdpdGggdGhlICdQJyBhdHRyaWJ1dGUgc2V0IHdpbGwgZW5mb3JjZSBhIGhpZXJhcmNoaWNhbAorc3RydWN0dXJlIGZvciBwcm9qZWN0IGlkJ3MuICBUaGlzIG1lYW5zIHRoYXQgZmlsZXMgYW5kIGRpcmVjdG9yeSBjcmVhdGVkCitpbiB0aGUgZGlyZWN0b3J5IHdpbGwgaW5oZXJ0IHRoZSBwcm9qZWN0IGlkIG9mIHRoZSBkaXJlY3RvcnksIHJlbmFtZQorb3BlcmF0aW9ucyBhcmUgY29uc3RyYWluZWQgc28gd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIG1vdmVkIGludG8KK2Fub3RoZXIgZGlyZWN0b3J5LCB0aGF0IHRoZSBwcm9qZWN0IGlkJ3MgbXVjaCBtYXRjaC4gIEluIGFkZGl0aW9uLCBhCitoYXJkIGxpbmsgdG8gZmlsZSBjYW4gb25seSBiZSBjcmVhdGVkIHdoZW4gdGhlIHByb2plY3QgaWQgZm9yIHRoZSBmaWxlCithbmQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBtYXRjaC4KKy5QUAorV2hlbiBhIGZpbGUgd2l0aCB0aGUgJ3MnIGF0dHJpYnV0ZSBzZXQgaXMgZGVsZXRlZCwgaXRzIGJsb2NrcyBhcmUgemVyb2VkCithbmQgd3JpdHRlbiBiYWNrIHRvIHRoZSBkaXNrLiAgTm90ZTogcGxlYXNlIG1ha2Ugc3VyZSB0byByZWFkIHRoZSBidWdzCithbmQgbGltaXRhdGlvbnMgc2VjdGlvbiBhdCB0aGUgZW5kIG9mIHRoaXMgZG9jdW1lbnQuCisuUFAKK1doZW4gYSBmaWxlIHdpdGggdGhlICdTJyBhdHRyaWJ1dGUgc2V0IGlzIG1vZGlmaWVkLAordGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4gc3luY2hyb25vdXNseSBvbiB0aGUgZGlzazsgdGhpcyBpcyBlcXVpdmFsZW50IHRvCit0aGUgJ3N5bmMnIG1vdW50IG9wdGlvbiBhcHBsaWVkIHRvIGEgc3Vic2V0IG9mIHRoZSBmaWxlcy4KKy5QUAorQSBmaWxlIHdpdGggdGhlICd0JyBhdHRyaWJ1dGUgd2lsbCBub3QgaGF2ZSBhIHBhcnRpYWwgYmxvY2sgZnJhZ21lbnQgYXQKK3RoZSBlbmQgb2YgdGhlIGZpbGUgbWVyZ2VkIHdpdGggb3RoZXIgZmlsZXMgKGZvciB0aG9zZSBmaWxlc3lzdGVtcyB3aGljaAorc3VwcG9ydCB0YWlsLW1lcmdpbmcpLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGFwcGxpY2F0aW9ucyBzdWNoIGFzIExJTE8KK3doaWNoIHJlYWQgdGhlIGZpbGVzeXN0ZW0gZGlyZWN0bHksIGFuZCB3aGljaCBkb24ndCB1bmRlcnN0YW5kIHRhaWwtbWVyZ2VkCitmaWxlcy4gIE5vdGU6IEFzIG9mIHRoaXMgd3JpdGluZywgdGhlIGV4dDIgb3IgZXh0MyBmaWxlc3lzdGVtcyBkbyBub3QKKyh5ZXQsIGV4Y2VwdCBpbiB2ZXJ5IGV4cGVyaW1lbnRhbCBwYXRjaGVzKSBzdXBwb3J0IHRhaWwtbWVyZ2luZy4KKy5QUAorQSBkaXJlY3Rvcnkgd2l0aCB0aGUgJ1QnIGF0dHJpYnV0ZSB3aWxsIGJlIGRlZW1lZCB0byBiZSB0aGUgdG9wIG9mCitkaXJlY3RvcnkgaGllcmFyY2hpZXMgZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgT3Jsb3YgYmxvY2sgYWxsb2NhdG9yLgorVGhpcyBpcyBhIGhpbnQgdG8gdGhlIGJsb2NrIGFsbG9jYXRvciB1c2VkIGJ5IGV4dDMgYW5kIGV4dDQgdGhhdCB0aGUKK3N1YmRpcmVjdG9yaWVzIHVuZGVyIHRoaXMgZGlyZWN0b3J5IGFyZSBub3QgcmVsYXRlZCwgYW5kIHRodXMgc2hvdWxkIGJlCitzcHJlYWQgYXBhcnQgZm9yIGFsbG9jYXRpb24gcHVycG9zZXMuICAgRm9yIGV4YW1wbGUgaXQgaXMgYSB2ZXJ5IGdvb2QKK2lkZWEgdG8gc2V0IHRoZSAnVCcgYXR0cmlidXRlIG9uIHRoZSAvaG9tZSBkaXJlY3RvcnksIHNvIHRoYXQgL2hvbWUvam9obgorYW5kIC9ob21lL21hcnkgYXJlIHBsYWNlZCBpbnRvIHNlcGFyYXRlIGJsb2NrIGdyb3Vwcy4gIEZvciBkaXJlY3Rvcmllcword2hlcmUgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHNldCwgdGhlIE9ybG92IGJsb2NrIGFsbG9jYXRvciB3aWxsIHRyeSB0bworZ3JvdXAgc3ViZGlyZWN0b3JpZXMgY2xvc2VyIHRvZ2V0aGVyIHdoZXJlIHBvc3NpYmxlLgorLlBQCitXaGVuIGEgZmlsZSB3aXRoIHRoZSAndScgYXR0cmlidXRlIHNldCBpcyBkZWxldGVkLCBpdHMgY29udGVudHMgYXJlCitzYXZlZC4gIFRoaXMgYWxsb3dzIHRoZSB1c2VyIHRvIGFzayBmb3IgaXRzIHVuZGVsZXRpb24uICBOb3RlOiBwbGVhc2UKK21ha2Ugc3VyZSB0byByZWFkIHRoZSBidWdzIGFuZCBsaW1pdGF0aW9ucyBzZWN0aW9uIGF0IHRoZSBlbmQgb2YgdGhpcworZG9jdW1lbnQuCisuUFAKK1RoZSAnWCcgYXR0cmlidXRlIGlzIHVzZWQgYnkgdGhlIGV4cGVyaW1lbnRhbCBjb21wcmVzc2lvbiBwYXRjaGVzIHRvCitpbmRpY2F0ZSB0aGF0IHRoZSByYXcgY29udGVudHMgb2YgYSBjb21wcmVzc2VkIGZpbGUgY2FuIGJlIGFjY2Vzc2VkCitkaXJlY3RseS4gIEl0IGN1cnJlbnRseSBtYXkgbm90IGJlIHNldCBvciByZXNldCB1c2luZworLkJSIGNoYXR0ciAoMSksCithbHRob3VnaCBpdCBjYW4gYmUgZGlzcGxheWVkIGJ5CisuQlIgbHNhdHRyICgxKS4KKy5QUAorVGhlICdaJyBhdHRyaWJ1dGUgaXMgdXNlZCBieSB0aGUgZXhwZXJpbWVudGFsIGNvbXByZXNzaW9uIHBhdGNoZXMgdG8KK2luZGljYXRlIGEgY29tcHJlc3NlZCBmaWxlIGlzIGRpcnR5LiAgSXQgbWF5IG5vdCBiZSBzZXQgb3IgcmVzZXQgdXNpbmcKKy5CUiBjaGF0dHIgKDEpLAorYWx0aG91Z2ggaXQgY2FuIGJlIGRpc3BsYXllZCBieQorLkJSIGxzYXR0ciAoMSkuCisuUFAKKy5TSCBBVVRIT1IKKy5CIGNoYXR0cgord2FzIHdyaXR0ZW4gYnkgUmVteSBDYXJkIDxSZW15LkNhcmRAbGludXgub3JnPi4gIEl0IGlzIGN1cnJlbnRseSBiZWluZworbWFpbnRhaW5lZCBieSBUaGVvZG9yZSBUcydvIDx0eXRzb0BhbHVtLm1pdC5lZHU+LgorLlNIIEJVR1MgQU5EIExJTUlUQVRJT05TCitUaGUgJ2MnLCAncycsICBhbmQgJ3UnIGF0dHJpYnV0ZXMgYXJlIG5vdCBob25vcmVkCitieSB0aGUgZXh0MiwgZXh0MywgYW5kIGV4dDQgZmlsZXN5c3RlbXMgYXMgaW1wbGVtZW50ZWQgaW4gdGhlIGN1cnJlbnQKK21haW5saW5lIExpbnV4IGtlcm5lbHMuCisuUFAKK1RoZSAnaicgb3B0aW9uIGlzIG9ubHkgdXNlZnVsIGlmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgYXMgZXh0MyBvciBleHQ0LgorLlBQCitUaGUgJ0QnIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCBvbiBMaW51eCBrZXJuZWwgMi41LjE5IGFuZCBsYXRlci4KKy5TSCBBVkFJTEFCSUxJVFkKKy5CIGNoYXR0cgoraXMgcGFydCBvZiB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgYW5kIGlzIGF2YWlsYWJsZSBmcm9tCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGxzYXR0ciAoMSksCisuQlIgYnRyZnMgKDUpLAorLkJSIGV4dDQgKDUpLAorLkJSIHhmcyAoNSkuCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9jaGF0dHIuYyBiL2UyZnNwcm9ncy9taXNjL2NoYXR0ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YjQwMWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9jaGF0dHIuYwpAQCAtMCwwICsxLDM1NyBAQAorLyoKKyAqIGNoYXR0ci5jCQktIENoYW5nZSBmaWxlIGF0dHJpYnV0ZXMgb24gYW4gZXh0MiBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiBUaGlzIGZpbGUgY2FuIGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbAorICogUHVibGljIExpY2Vuc2UKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzEwLzMwCS0gQ3JlYXRpb24KKyAqIDkzLzExLzEzCS0gUmVwbGFjZSBzdGF0KCkgY2FsbHMgYnkgbHN0YXQoKSB0byBhdm9pZCBsb29wcworICogOTQvMDIvMjcJLSBJbnRlZ3JhdGVkIGluIFRlZCdzIGRpc3RyaWJ1dGlvbgorICogOTgvMTIvMjkJLSBJZ25vcmUgc3ltbGlua3Mgd2hlbiB3b3JraW5nIHJlY3Vyc2l2ZWx5IChHIE0gU2lwZSkKKyAqIDk4LzEyLzI5CS0gRGlzcGxheSB2ZXJzaW9uIGluZm8gb25seSB3aGVuIC1WIHNwZWNpZmllZCAoRyBNIFNpcGUpCisgKi8KKworI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIEVYVDJGU19BVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIEVYVDJGU19BVFRSKHgpCisjZW5kaWYKKworI2lmbmRlZiBTX0lTTE5LCQkJLyogU28gd2UgY2FuIGNvbXBpbGUgZXZlbiB3aXRoIGdjYy13YXJuICovCisjIGlmZGVmIF9fU19JRkxOSworIyAgZGVmaW5lIFNfSVNMTksobW9kZSkJIF9fU19JU1RZUEUoKG1vZGUpLCBfX1NfSUZMTkspCisjIGVsc2UKKyMgIGRlZmluZSBTX0lTTE5LKG1vZGUpICAwCisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICJlMnAvZTJwLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICogcHJvZ3JhbV9uYW1lID0gImNoYXR0ciI7CisKK3N0YXRpYyBpbnQgYWRkOworc3RhdGljIGludCByZW07CitzdGF0aWMgaW50IHNldDsKK3N0YXRpYyBpbnQgc2V0X3ZlcnNpb247CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHZlcnNpb247CisKK3N0YXRpYyBpbnQgc2V0X3Byb2plY3Q7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBwcm9qZWN0OworCitzdGF0aWMgaW50IHJlY3Vyc2l2ZTsKK3N0YXRpYyBpbnQgdmVyYm9zZTsKK3N0YXRpYyBpbnQgc2lsZW50OworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBhZjsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHJmOworc3RhdGljIHVuc2lnbmVkIGxvbmcgc2Y7CisKKyNpZmRlZiBfTEZTNjRfTEFSR0VGSUxFCisjZGVmaW5lIExTVEFUCQlsc3RhdDY0CisjZGVmaW5lIFNUUlVDVF9TVEFUCXN0cnVjdCBzdGF0NjQKKyNlbHNlCisjZGVmaW5lIExTVEFUCQlsc3RhdAorI2RlZmluZSBTVFJVQ1RfU1RBVAlzdHJ1Y3Qgc3RhdAorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIiksCisJCXByb2dyYW1fbmFtZSk7CisJZXhpdCgxKTsKK30KKworc3RydWN0IGZsYWdzX2NoYXIgeworCXVuc2lnbmVkIGxvbmcJZmxhZzsKKwljaGFyIAkJb3B0Y2hhcjsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmxhZ3NfY2hhciBmbGFnc19hcnJheVtdID0geworCXsgRVhUMl9OT0FUSU1FX0ZMLCAnQScgfSwKKwl7IEVYVDJfU1lOQ19GTCwgJ1MnIH0sCisJeyBFWFQyX0RJUlNZTkNfRkwsICdEJyB9LAorCXsgRVhUMl9BUFBFTkRfRkwsICdhJyB9LAorCXsgRVhUMl9DT01QUl9GTCwgJ2MnIH0sCisJeyBFWFQyX05PRFVNUF9GTCwgJ2QnIH0sCisJeyBFWFQ0X0VYVEVOVFNfRkwsICdlJ30sCisJeyBFWFQyX0lNTVVUQUJMRV9GTCwgJ2knIH0sCisJeyBFWFQzX0pPVVJOQUxfREFUQV9GTCwgJ2onIH0sCisJeyBFWFQ0X1BST0pJTkhFUklUX0ZMLCAnUCcgfSwKKwl7IEVYVDJfU0VDUk1fRkwsICdzJyB9LAorCXsgRVhUMl9VTlJNX0ZMLCAndScgfSwKKwl7IEVYVDJfTk9UQUlMX0ZMLCAndCcgfSwKKwl7IEVYVDJfVE9QRElSX0ZMLCAnVCcgfSwKKwl7IEZTX05PQ09XX0ZMLCAnQycgfSwKKwl7IDAsIDAgfQorfTsKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2V0X2ZsYWcoY2hhciBjKQoreworCWNvbnN0IHN0cnVjdCBmbGFnc19jaGFyICpmcDsKKworCWZvciAoZnAgPSBmbGFnc19hcnJheTsgZnAtPmZsYWcgIT0gMDsgZnArKykgeworCQlpZiAoZnAtPm9wdGNoYXIgPT0gYykKKwkJCXJldHVybiBmcC0+ZmxhZzsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBkZWNvZGVfYXJnIChpbnQgKiBpLCBpbnQgYXJnYywgY2hhciAqKiBhcmd2KQoreworCWNoYXIgKiBwOworCWNoYXIgKiB0bXA7CisJdW5zaWduZWQgbG9uZyBmbDsKKworCXN3aXRjaCAoYXJndlsqaV1bMF0pCisJeworCWNhc2UgJy0nOgorCQlmb3IgKHAgPSAmYXJndlsqaV1bMV07ICpwOyBwKyspIHsKKwkJCWlmICgqcCA9PSAnUicpIHsKKwkJCQlyZWN1cnNpdmUgPSAxOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKCpwID09ICdWJykgeworCQkJCXZlcmJvc2UgPSAxOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKCpwID09ICdmJykgeworCQkJCXNpbGVudCA9IDE7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAoKnAgPT0gJ3AnKSB7CisJCQkJKCppKSsrOworCQkJCWlmICgqaSA+PSBhcmdjKQorCQkJCQl1c2FnZSAoKTsKKwkJCQlwcm9qZWN0ID0gc3RydG9sIChhcmd2WyppXSwgJnRtcCwgMCk7CisJCQkJaWYgKCp0bXApIHsKKwkJCQkJY29tX2VyciAocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQkJIF8oImJhZCBwcm9qZWN0IC0gJXNcbiIpLAorCQkJCQkJIGFyZ3ZbKmldKTsKKwkJCQkJdXNhZ2UgKCk7CisJCQkJfQorCQkJCXNldF9wcm9qZWN0ID0gMTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmICgqcCA9PSAndicpIHsKKwkJCQkoKmkpKys7CisJCQkJaWYgKCppID49IGFyZ2MpCisJCQkJCXVzYWdlICgpOworCQkJCXZlcnNpb24gPSBzdHJ0b2wgKGFyZ3ZbKmldLCAmdG1wLCAwKTsKKwkJCQlpZiAoKnRtcCkgeworCQkJCQljb21fZXJyIChwcm9ncmFtX25hbWUsIDAsCisJCQkJCQkgXygiYmFkIHZlcnNpb24gLSAlc1xuIiksCisJCQkJCQkgYXJndlsqaV0pOworCQkJCQl1c2FnZSAoKTsKKwkJCQl9CisJCQkJc2V0X3ZlcnNpb24gPSAxOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKChmbCA9IGdldF9mbGFnKCpwKSkgPT0gMCkKKwkJCQl1c2FnZSgpOworCQkJcmYgfD0gZmw7CisJCQlyZW0gPSAxOworCQl9CisJCWJyZWFrOworCWNhc2UgJysnOgorCQlhZGQgPSAxOworCQlmb3IgKHAgPSAmYXJndlsqaV1bMV07ICpwOyBwKyspIHsKKwkJCWlmICgoZmwgPSBnZXRfZmxhZygqcCkpID09IDApCisJCQkJdXNhZ2UoKTsKKwkJCWFmIHw9IGZsOworCQl9CisJCWJyZWFrOworCWNhc2UgJz0nOgorCQlzZXQgPSAxOworCQlmb3IgKHAgPSAmYXJndlsqaV1bMV07ICpwOyBwKyspIHsKKwkJCWlmICgoZmwgPSBnZXRfZmxhZygqcCkpID09IDApCisJCQkJdXNhZ2UoKTsKKwkJCXNmIHw9IGZsOworCQl9CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJldHVybiBFT0Y7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCBjaGF0dHJfZGlyX3Byb2MoY29uc3QgY2hhciAqLCBzdHJ1Y3QgZGlyZW50ICosIHZvaWQgKik7CisKK3N0YXRpYyBpbnQgY2hhbmdlX2F0dHJpYnV0ZXMoY29uc3QgY2hhciAqIG5hbWUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwlTVFJVQ1RfU1RBVAlzdDsKKworCWlmIChMU1RBVCAobmFtZSwgJnN0KSA9PSAtMSkgeworCQlpZiAoIXNpbGVudCkKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJIF8oIndoaWxlIHRyeWluZyB0byBzdGF0ICVzIiksIG5hbWUpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKGZnZXRmbGFncyhuYW1lLCAmZmxhZ3MpID09IC0xKSB7CisJCWlmICghc2lsZW50KQorCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycm5vLAorCQkJCQlfKCJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIiksIG5hbWUpOworCQlyZXR1cm4gLTE7CisJfQorCWlmIChzZXQpIHsKKwkJaWYgKHZlcmJvc2UpIHsKKwkJCXByaW50ZiAoXygiRmxhZ3Mgb2YgJXMgc2V0IGFzICIpLCBuYW1lKTsKKwkJCXByaW50X2ZsYWdzIChzdGRvdXQsIHNmLCAwKTsKKwkJCXByaW50ZiAoIlxuIik7CisJCX0KKwkJaWYgKGZzZXRmbGFncyAobmFtZSwgc2YpID09IC0xKQorCQkJcGVycm9yIChuYW1lKTsKKwl9IGVsc2UgeworCQlpZiAocmVtKQorCQkJZmxhZ3MgJj0gfnJmOworCQlpZiAoYWRkKQorCQkJZmxhZ3MgfD0gYWY7CisJCWlmICh2ZXJib3NlKSB7CisJCQlwcmludGYoXygiRmxhZ3Mgb2YgJXMgc2V0IGFzICIpLCBuYW1lKTsKKwkJCXByaW50X2ZsYWdzKHN0ZG91dCwgZmxhZ3MsIDApOworCQkJcHJpbnRmKCJcbiIpOworCQl9CisJCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSkKKwkJCWZsYWdzICY9IH5FWFQyX0RJUlNZTkNfRkw7CisJCWlmIChmc2V0ZmxhZ3MobmFtZSwgZmxhZ3MpID09IC0xKSB7CisJCQlpZiAoIXNpbGVudCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnJubywKKwkJCQkJCV8oIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiKSwKKwkJCQkJCW5hbWUpOworCQkJfQorCQkJcmV0dXJuIC0xOworCQl9CisJfQorCWlmIChzZXRfdmVyc2lvbikgeworCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZiAoXygiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iKSwgbmFtZSwgdmVyc2lvbik7CisJCWlmIChmc2V0dmVyc2lvbiAobmFtZSwgdmVyc2lvbikgPT0gLTEpIHsKKwkJCWlmICghc2lsZW50KQorCQkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJCSBfKCJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiKSwKKwkJCQkJIG5hbWUpOworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCWlmIChzZXRfcHJvamVjdCkgeworCQlpZiAodmVyYm9zZSkKKwkJCXByaW50ZiAoXygiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iKSwgbmFtZSwgcHJvamVjdCk7CisJCWlmIChmc2V0cHJvamVjdCAobmFtZSwgcHJvamVjdCkgPT0gLTEpIHsKKwkJCWlmICghc2lsZW50KQorCQkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJCSBfKCJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiKSwKKwkJCQkJIG5hbWUpOworCQkJcmV0dXJuIC0xOworCQl9CisKKwl9CisJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkgJiYgcmVjdXJzaXZlKQorCQlyZXR1cm4gaXRlcmF0ZV9vbl9kaXIgKG5hbWUsIGNoYXR0cl9kaXJfcHJvYywgTlVMTCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2hhdHRyX2Rpcl9wcm9jIChjb25zdCBjaGFyICogZGlyX25hbWUsIHN0cnVjdCBkaXJlbnQgKiBkZSwKKwkJCSAgICB2b2lkICogcHJpdmF0ZSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAoc3RyY21wIChkZS0+ZF9uYW1lLCAiLiIpICYmIHN0cmNtcCAoZGUtPmRfbmFtZSwgIi4uIikpIHsKKwkgICAgICAgIGNoYXIgKnBhdGg7CisKKwkJcGF0aCA9IG1hbGxvYyhzdHJsZW4gKGRpcl9uYW1lKSArIDEgKyBzdHJsZW4gKGRlLT5kX25hbWUpICsgMSk7CisJCWlmICghcGF0aCkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQkJXygiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSAiCisJCQkJICAiaW4gY2hhdHRyX2Rpcl9wcm9jIikpOworCQkJcmV0dXJuIC0xOworCQl9CisJCXNwcmludGYocGF0aCwgIiVzLyVzIiwgZGlyX25hbWUsIGRlLT5kX25hbWUpOworCQlyZXQgPSBjaGFuZ2VfYXR0cmlidXRlcyhwYXRoKTsKKwkJZnJlZShwYXRoKTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCit7CisJaW50IGksIGo7CisJaW50IGVuZF9hcmcgPSAwOworCWludCBlcnIsIHJldHZhbCA9IDA7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKwlzZXRfY29tX2Vycl9nZXR0ZXh0KGdldHRleHQpOworI2VuZGlmCisJaWYgKGFyZ2MgJiYgKmFyZ3YpCisJCXByb2dyYW1fbmFtZSA9ICphcmd2OworCWkgPSAxOworCXdoaWxlIChpIDwgYXJnYyAmJiAhZW5kX2FyZykgeworCQkvKiAnLS0nIGFyZyBzaG91bGQgZW5kIG9wdGlvbiBwcm9jZXNzaW5nICovCisJCWlmIChzdHJjbXAoYXJndltpXSwgIi0tIikgPT0gMCkgeworCQkJaSsrOworCQkJZW5kX2FyZyA9IDE7CisJCX0gZWxzZSBpZiAoZGVjb2RlX2FyZyAoJmksIGFyZ2MsIGFyZ3YpID09IEVPRikKKwkJCWVuZF9hcmcgPSAxOworCQllbHNlCisJCQlpKys7CisJfQorCWlmIChpID49IGFyZ2MpCisJCXVzYWdlICgpOworCWlmIChzZXQgJiYgKGFkZCB8fCByZW0pKSB7CisJCWZwdXRzKF8oIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIiksIHN0ZGVycik7CisJCWV4aXQgKDEpOworCX0KKwlpZiAoKHJmICYgYWYpICE9IDApIHsKKwkJZnB1dHMoIkNhbid0IGJvdGggc2V0IGFuZCB1bnNldCBzYW1lIGZsYWcuXG4iLCBzdGRlcnIpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKCEoYWRkIHx8IHJlbSB8fCBzZXQgfHwgc2V0X3ZlcnNpb24gfHwgc2V0X3Byb2plY3QgKSkgeworCQlmcHV0cyhfKCJNdXN0IHVzZSAnLXYnLCA9LCAtIG9yICtcbiIpLCBzdGRlcnIpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKHZlcmJvc2UpCisJCWZwcmludGYgKHN0ZGVyciwgImNoYXR0ciAlcyAoJXMpXG4iLAorCQkJIEUyRlNQUk9HU19WRVJTSU9OLCBFMkZTUFJPR1NfREFURSk7CisJZm9yIChqID0gaTsgaiA8IGFyZ2M7IGorKykgeworCQllcnIgPSBjaGFuZ2VfYXR0cmlidXRlcyAoYXJndltqXSk7CisJCWlmIChlcnIpCisJCQlyZXR2YWwgPSAxOworCX0KKwlleGl0KHJldHZhbCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9jcmVhdGVfaW5vZGUuYyBiL2UyZnNwcm9ncy9taXNjL2NyZWF0ZV9pbm9kZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMjJlNTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9jcmVhdGVfaW5vZGUuYwpAQCAtMCwwICsxLDkxMiBAQAorLyoKKyAqIGNyZWF0ZV9pbm9kZS5jIC0tLSBjcmVhdGUgYW4gaW5vZGUKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBsaWJyYXJ5CisgKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTICAgICAgIDY0CisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UgICAgIDEKKyNkZWZpbmUgX0dOVV9TT1VSQ0UJCTEKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4gLyogZm9yIFBBVEhfTUFYICovCisjaWZkZWYgSEFWRV9BVFRSX1hBVFRSX0gKKyNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0MmZzLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJfdHlwZXMuaD4KKyNpbmNsdWRlIDxleHQyZnMvZmllbWFwLmg+CisKKyNpbmNsdWRlICJjcmVhdGVfaW5vZGUuaCIKKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKworLyogNjRLaUIgaXMgdGhlIG1pbmltaXVtIGJsa3NpemUgdG8gYmVzdCBtaW5pbWl6ZSBzeXN0ZW0gY2FsbCBvdmVyaGVhZC4gKi8KKyNkZWZpbmUgQ09QWV9GSUxFX0JVRkxFTgk2NTUzNgorCitzdGF0aWMgaW50IGV4dDJfZmlsZV90eXBlKHVuc2lnbmVkIGludCBtb2RlKQoreworCWlmIChMSU5VWF9TX0lTUkVHKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9SRUdfRklMRTsKKworCWlmIChMSU5VWF9TX0lTRElSKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9ESVI7CisKKwlpZiAoTElOVVhfU19JU0NIUihtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfQ0hSREVWOworCisJaWYgKExJTlVYX1NfSVNCTEsobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX0JMS0RFVjsKKworCWlmIChMSU5VWF9TX0lTTE5LKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9TWU1MSU5LOworCisJaWYgKExJTlVYX1NfSVNGSUZPKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9GSUZPOworCisJaWYgKExJTlVYX1NfSVNTT0NLKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9TT0NLOworCisJcmV0dXJuIDA7Cit9CisKKy8qIExpbmsgYW4gaW5vZGUgbnVtYmVyIHRvIGEgZGlyZWN0b3J5ICovCitzdGF0aWMgZXJyY29kZV90IGFkZF9saW5rKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHBhcmVudF9pbm8sCisJCQkgIGV4dDJfaW5vX3QgaW5vLCBjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKyAgICAgICAgaWYgKHJldHZhbCkgeworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiKSwgaW5vKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbGluayhmcywgcGFyZW50X2lubywgbmFtZSwgaW5vLAorCQkJICAgICBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKTsKKwlpZiAocmV0dmFsID09IEVYVDJfRVRfRElSX05PX1NQQUNFKSB7CisJCXJldHZhbCA9IGV4dDJmc19leHBhbmRfZGlyKGZzLCBwYXJlbnRfaW5vKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCV8oIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiKSk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19saW5rKGZzLCBwYXJlbnRfaW5vLCBuYW1lLCBpbm8sCisJCQkJICAgICBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKTsKKwl9CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIGxpbmtpbmcgXCIlc1wiIiksIG5hbWUpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlub2RlLmlfbGlua3NfY291bnQrKzsKKworCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwgXygid2hpbGUgd3JpdGluZyBpbm9kZSAldSIpLCBpbm8pOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyogU2V0IHRoZSB1aWQsIGdpZCwgbW9kZSBhbmQgdGltZSBmb3IgdGhlIGlub2RlICovCitzdGF0aWMgZXJyY29kZV90IHNldF9pbm9kZV9leHRyYShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBzdGF0ICpzdCkKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisgICAgICAgIGlmIChyZXR2YWwpIHsKKwkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLCBfKCJ3aGlsZSByZWFkaW5nIGlub2RlICV1IiksIGlubyk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJaW5vZGUuaV91aWQgPSBzdC0+c3RfdWlkOworCWlub2RlLmlfZ2lkID0gc3QtPnN0X2dpZDsKKwlpbm9kZS5pX21vZGUgfD0gc3QtPnN0X21vZGU7CisJaW5vZGUuaV9hdGltZSA9IHN0LT5zdF9hdGltZTsKKwlpbm9kZS5pX210aW1lID0gc3QtPnN0X210aW1lOworCWlub2RlLmlfY3RpbWUgPSBzdC0+c3RfY3RpbWU7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiKSwgaW5vKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisjaWZkZWYgSEFWRV9MTElTVFhBVFRSCitzdGF0aWMgZXJyY29kZV90IHNldF9pbm9kZV94YXR0cihleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQoreworCWVycmNvZGVfdAkJCXJldHZhbCwgY2xvc2VfcmV0dmFsOworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZQkqaGFuZGxlOworCXNzaXplX3QJCQkJc2l6ZSwgdmFsdWVfc2l6ZTsKKwljaGFyCQkJCSpsaXN0ID0gTlVMTDsKKwlpbnQJCQkJaTsKKworCXNpemUgPSBsbGlzdHhhdHRyKGZpbGVuYW1lLCBOVUxMLCAwKTsKKwlpZiAoc2l6ZSA9PSAtMSkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLCBfKCJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIiksCisJCQlmaWxlbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfSBlbHNlIGlmIChzaXplID09IDApIHsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX3hhdHRyc19vcGVuKGZzLCBpbm8sICZoYW5kbGUpOworCWlmIChyZXR2YWwpIHsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX01JU1NJTkdfRUFfRkVBVFVSRSkKKwkJCXJldHVybiAwOworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiKSwgaW5vKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplLCAmbGlzdCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IikpOworCQlnb3RvIG91dDsKKwl9CisKKwlzaXplID0gbGxpc3R4YXR0cihmaWxlbmFtZSwgbGlzdCwgc2l6ZSk7CisJaWYgKHNpemUgPT0gLTEpIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwgXygid2hpbGUgbGlzdGluZyBhdHRyaWJ1dGVzIG9mIFwiJXNcIiIpLAorCQkJZmlsZW5hbWUpOworCQlnb3RvIG91dDsKKyAgICAgICAgfQorCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkgKz0gc3RybGVuKCZsaXN0W2ldKSArIDEpIHsKKwkJY29uc3QgY2hhciAqbmFtZSA9ICZsaXN0W2ldOworCQljaGFyICp2YWx1ZTsKKworCQl2YWx1ZV9zaXplID0gbGdldHhhdHRyKGZpbGVuYW1lLCBuYW1lLCBOVUxMLCAwKTsKKwkJaWYgKHZhbHVlX3NpemUgPT0gLTEpIHsKKwkJCXJldHZhbCA9IGVycm5vOworCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCV8oIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiKSwKKwkJCQluYW1lLCBmaWxlbmFtZSk7CisJCQlicmVhazsKKwkJfQorCisJCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHZhbHVlX3NpemUsICZ2YWx1ZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwgXygid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKSk7CisJCQlicmVhazsKKwkJfQorCisJCXZhbHVlX3NpemUgPSBsZ2V0eGF0dHIoZmlsZW5hbWUsIG5hbWUsIHZhbHVlLCB2YWx1ZV9zaXplKTsKKwkJaWYgKHZhbHVlX3NpemUgPT0gLTEpIHsKKwkJCWV4dDJmc19mcmVlX21lbSgmdmFsdWUpOworCQkJcmV0dmFsID0gZXJybm87CisJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJXygid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIpLAorCQkJCW5hbWUsIGZpbGVuYW1lKTsKKwkJCWJyZWFrOworCQl9CisKKwkJcmV0dmFsID0gZXh0MmZzX3hhdHRyX3NldChoYW5kbGUsIG5hbWUsIHZhbHVlLCB2YWx1ZV9zaXplKTsKKwkJZXh0MmZzX2ZyZWVfbWVtKCZ2YWx1ZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB3cml0aW5nIGF0dHJpYnV0ZSBcIiVzXCIgdG8gaW5vZGUgJXUiKSwKKwkJCQluYW1lLCBpbm8pOworCQkJYnJlYWs7CisJCX0KKworCX0KKyBvdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZsaXN0KTsKKwljbG9zZV9yZXR2YWwgPSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoYW5kbGUpOworCWlmIChjbG9zZV9yZXR2YWwpIHsKKwkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLCBfKCJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IiksIGlubyk7CisJCXJldHZhbCA9IHJldHZhbCA/IHJldHZhbCA6IGNsb3NlX3JldHZhbDsKKwl9CisJcmV0dXJuIHJldHZhbDsKKwlyZXR1cm4gMDsKK30KKyNlbHNlIC8qIEhBVkVfTExJU1RYQVRUUiAqLworc3RhdGljIGVycmNvZGVfdCBzZXRfaW5vZGVfeGF0dHIoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSBleHQyX2lub190IGlubyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJIGNvbnN0IGNoYXIgKmZpbGVuYW1lIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlyZXR1cm4gMDsKK30KKyNlbmRpZiAgLyogSEFWRV9MTElTVFhBVFRSICovCisKKy8qIE1ha2UgYSBzcGVjaWFsIGZpbGVzIChibG9jayBhbmQgY2hhcmFjdGVyIGRldmljZXMpLCBmaWZvJ3MsIGFuZCBzb2NrZXRzICAqLworZXJyY29kZV90IGRvX21rbm9kX2ludGVybmFsKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGN3ZCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisJZXh0Ml9pbm9fdAkJaW5vOworCWVycmNvZGVfdAkJcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCXVuc2lnbmVkIGxvbmcJCWRldm1ham9yLCBkZXZtaW5vciwgbW9kZTsKKwlpbnQJCQlmaWxldHlwZTsKKworCXN3aXRjaChzdC0+c3RfbW9kZSAmIFNfSUZNVCkgeworCWNhc2UgU19JRkNIUjoKKwkJbW9kZSA9IExJTlVYX1NfSUZDSFI7CisJCWZpbGV0eXBlID0gRVhUMl9GVF9DSFJERVY7CisJCWJyZWFrOworCWNhc2UgU19JRkJMSzoKKwkJbW9kZSA9IExJTlVYX1NfSUZCTEs7CisJCWZpbGV0eXBlID0gIEVYVDJfRlRfQkxLREVWOworCQlicmVhazsKKwljYXNlIFNfSUZJRk86CisJCW1vZGUgPSBMSU5VWF9TX0lGSUZPOworCQlmaWxldHlwZSA9IEVYVDJfRlRfRklGTzsKKwkJYnJlYWs7CisJY2FzZSBTX0lGU09DSzoKKwkJbW9kZSA9IExJTlVYX1NfSUZTT0NLOworCQlmaWxldHlwZSA9IEVYVDJfRlRfU09DSzsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbmV3X2lub2RlKGZzLCBjd2QsIDAxMDc1NSwgMCwgJmlubyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIiksCisJCQluYW1lKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKyNpZmRlZiBERUJVR0ZTCisJcHJpbnRmKCJBbGxvY2F0ZWQgaW5vZGU6ICV1XG4iLCBpbm8pOworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX2xpbmsoZnMsIGN3ZCwgbmFtZSwgaW5vLCBmaWxldHlwZSk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0RJUl9OT19TUEFDRSkgeworCQlyZXR2YWwgPSBleHQyZnNfZXhwYW5kX2RpcihmcywgY3dkKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCV8oIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiKSk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19saW5rKGZzLCBjd2QsIG5hbWUsIGlubywgZmlsZXR5cGUpOworCX0KKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCBfKCJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiKSwgbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCWlmIChleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGZzLT5pbm9kZV9tYXAsIGlubykpCisJCWNvbV9lcnIoX19mdW5jX18sIDAsICJXYXJuaW5nOiBpbm9kZSBhbHJlYWR5IHNldCIpOworCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIGlubywgKzEsIDApOworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWlub2RlLmlfbW9kZSA9IG1vZGU7CisJaW5vZGUuaV9hdGltZSA9IGlub2RlLmlfY3RpbWUgPSBpbm9kZS5pX210aW1lID0KKwkJZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCisJaWYgKGZpbGV0eXBlICE9IFNfSUZJRk8pIHsKKwkJZGV2bWFqb3IgPSBtYWpvcihzdC0+c3RfcmRldik7CisJCWRldm1pbm9yID0gbWlub3Ioc3QtPnN0X3JkZXYpOworCisJCWlmICgoZGV2bWFqb3IgPCAyNTYpICYmIChkZXZtaW5vciA8IDI1NikpIHsKKwkJCWlub2RlLmlfYmxvY2tbMF0gPSBkZXZtYWpvciAqIDI1NiArIGRldm1pbm9yOworCQkJaW5vZGUuaV9ibG9ja1sxXSA9IDA7CisJCX0gZWxzZSB7CisJCQlpbm9kZS5pX2Jsb2NrWzBdID0gMDsKKwkJCWlub2RlLmlfYmxvY2tbMV0gPSAoZGV2bWlub3IgJiAweGZmKSB8IChkZXZtYWpvciA8PCA4KSB8CisJCQkJCSAgICgoZGV2bWlub3IgJiB+MHhmZikgPDwgMTIpOworCQl9CisJfQorCWlub2RlLmlfbGlua3NfY291bnQgPSAxOworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwgXygid2hpbGUgd3JpdGluZyBpbm9kZSAldSIpLCBpbm8pOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyogTWFrZSBhIHN5bWxpbmsgbmFtZSAtPiB0YXJnZXQgKi8KK2VycmNvZGVfdCBkb19zeW1saW5rX2ludGVybmFsKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGN3ZCwgY29uc3QgY2hhciAqbmFtZSwKKwkJCSAgICAgIGNoYXIgKnRhcmdldCwgZXh0Ml9pbm9fdCByb290KQoreworCWNoYXIJCQkqY3A7CisJZXh0Ml9pbm9fdAkJcGFyZW50X2lubzsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWNwID0gc3RycmNocihuYW1lLCAnLycpOworCWlmIChjcCkgeworCQkqY3AgPSAwOworCQlyZXR2YWwgPSBleHQyZnNfbmFtZWkoZnMsIHJvb3QsIGN3ZCwgbmFtZSwgJnBhcmVudF9pbm8pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKG5hbWUsIHJldHZhbCwgMCk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCW5hbWUgPSBjcCsxOworCX0gZWxzZQorCQlwYXJlbnRfaW5vID0gY3dkOworCisJcmV0dmFsID0gZXh0MmZzX3N5bWxpbmsoZnMsIHBhcmVudF9pbm8sIDAsIG5hbWUsIHRhcmdldCk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0RJUl9OT19TUEFDRSkgeworCQlyZXR2YWwgPSBleHQyZnNfZXhwYW5kX2RpcihmcywgcGFyZW50X2lubyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoImRvX3N5bWxpbmtfaW50ZXJuYWwiLCByZXR2YWwsCisJCQkJXygid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIpKTsKKwkJCXJldHVybiByZXR2YWw7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX3N5bWxpbmsoZnMsIHBhcmVudF9pbm8sIDAsIG5hbWUsIHRhcmdldCk7CisJfQorCWlmIChyZXR2YWwpCisJCWNvbV9lcnIoImV4dDJmc19zeW1saW5rIiwgcmV0dmFsLAorCQkJXygid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiKSwgbmFtZSk7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyogTWFrZSBhIGRpcmVjdG9yeSBpbiB0aGUgZnMgKi8KK2VycmNvZGVfdCBkb19ta2Rpcl9pbnRlcm5hbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBjd2QsIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICAgZXh0Ml9pbm9fdCByb290KQoreworCWNoYXIJCQkqY3A7CisJZXh0Ml9pbm9fdAkJcGFyZW50X2lubzsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCisJY3AgPSBzdHJyY2hyKG5hbWUsICcvJyk7CisJaWYgKGNwKSB7CisJCSpjcCA9IDA7CisJCXJldHZhbCA9IGV4dDJmc19uYW1laShmcywgcm9vdCwgY3dkLCBuYW1lLCAmcGFyZW50X2lubyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCBfKCJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIpLAorCQkJCW5hbWUpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQluYW1lID0gY3ArMTsKKwl9IGVsc2UKKwkJcGFyZW50X2lubyA9IGN3ZDsKKworCXJldHZhbCA9IGV4dDJmc19ta2RpcihmcywgcGFyZW50X2lubywgMCwgbmFtZSk7CisJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0RJUl9OT19TUEFDRSkgeworCQlyZXR2YWwgPSBleHQyZnNfZXhwYW5kX2RpcihmcywgcGFyZW50X2lubyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSBleHBhbmRpbmcgZGlyZWN0b3J5IikpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfbWtkaXIoZnMsIHBhcmVudF9pbm8sIDAsIG5hbWUpOworCX0KKwlpZiAocmV0dmFsKQorCQljb21fZXJyKCJleHQyZnNfbWtkaXIiLCByZXR2YWwsCisJCQlfKCJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIiksIG5hbWUpOworCXJldHVybiByZXR2YWw7Cit9CisKKyNpZiAhZGVmaW5lZCBIQVZFX1BSRUFENjQgJiYgIWRlZmluZWQgSEFWRV9QUkVBRAorc3RhdGljIHNzaXplX3QgbXlfcHJlYWQoaW50IGZkLCB2b2lkICpidWYsIHNpemVfdCBjb3VudCwgb2ZmX3Qgb2Zmc2V0KQoreworCWlmIChsc2VlayhmZCwgb2Zmc2V0LCBTRUVLX1NFVCkgPCAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiByZWFkKGZkLCBidWYsIGNvdW50KTsKK30KKyNlbmRpZiAvKiAhZGVmaW5lZCBIQVZFX1BSRUFENjQgJiYgIWRlZmluZWQgSEFWRV9QUkVBRCAqLworCitzdGF0aWMgZXJyY29kZV90IGNvcHlfZmlsZV9yYW5nZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBleHQyX2ZpbGVfdCBlMl9maWxlLAorCQkJCSBvZmZfdCBzdGFydCwgb2ZmX3QgZW5kLCBjaGFyICpidWYsCisJCQkJIGNoYXIgKnplcm9idWYpCit7CisJb2ZmX3Qgb2ZmLCBicG9zOworCXNzaXplX3QgZ290LCBibGVuOworCXVuc2lnbmVkIGludCB3cml0dGVuOworCWNoYXIgKnB0cjsKKwllcnJjb2RlX3QgZXJyID0gMDsKKworCWZvciAob2ZmID0gc3RhcnQ7IG9mZiA8IGVuZDsgb2ZmICs9IENPUFlfRklMRV9CVUZMRU4pIHsKKyNpZmRlZiBIQVZFX1BSRUFENjQKKwkJZ290ID0gcHJlYWQ2NChmZCwgYnVmLCBDT1BZX0ZJTEVfQlVGTEVOLCBvZmYpOworI2VsaWYgSEFWRV9QUkVBRAorCQlnb3QgPSBwcmVhZChmZCwgYnVmLCBDT1BZX0ZJTEVfQlVGTEVOLCBvZmYpOworI2Vsc2UKKwkJZ290ID0gbXlfcHJlYWQoZmQsIGJ1ZiwgQ09QWV9GSUxFX0JVRkxFTiwgb2ZmKTsKKyNlbmRpZgorCQlpZiAoZ290IDwgMCkgeworCQkJZXJyID0gZXJybm87CisJCQlnb3RvIGZhaWw7CisJCX0KKwkJZm9yIChicG9zID0gMCwgcHRyID0gYnVmOyBicG9zIDwgZ290OyBicG9zICs9IGZzLT5ibG9ja3NpemUpIHsKKwkJCWJsZW4gPSBmcy0+YmxvY2tzaXplOworCQkJaWYgKGJsZW4gPiBnb3QgLSBicG9zKQorCQkJCWJsZW4gPSBnb3QgLSBicG9zOworCQkJaWYgKG1lbWNtcChwdHIsIHplcm9idWYsIGJsZW4pID09IDApIHsKKwkJCQlwdHIgKz0gYmxlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWVyciA9IGV4dDJmc19maWxlX2xzZWVrKGUyX2ZpbGUsIG9mZiArIGJwb3MsCisJCQkJCQlFWFQyX1NFRUtfU0VULCBOVUxMKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBmYWlsOworCQkJd2hpbGUgKGJsZW4gPiAwKSB7CisJCQkJZXJyID0gZXh0MmZzX2ZpbGVfd3JpdGUoZTJfZmlsZSwgcHRyLCBibGVuLAorCQkJCQkJCSZ3cml0dGVuKTsKKwkJCQlpZiAoZXJyKQorCQkJCQlnb3RvIGZhaWw7CisJCQkJaWYgKHdyaXR0ZW4gPT0gMCkgeworCQkJCQllcnIgPSBFSU87CisJCQkJCWdvdG8gZmFpbDsKKwkJCQl9CisJCQkJYmxlbiAtPSB3cml0dGVuOworCQkJCXB0ciArPSB3cml0dGVuOworCQkJfQorCQl9CisJfQorZmFpbDoKKwlyZXR1cm4gZXJyOworfQorCisjaWYgZGVmaW5lZChTRUVLX0RBVEEpICYmIGRlZmluZWQoU0VFS19IT0xFKQorc3RhdGljIGVycmNvZGVfdCB0cnlfbHNlZWtfY29weShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZiwKKwkJCQlleHQyX2ZpbGVfdCBlMl9maWxlLCBjaGFyICpidWYsIGNoYXIgKnplcm9idWYpCit7CisJb2ZmX3QgZGF0YSA9IDAsIGhvbGU7CisJb2ZmX3QgZGF0YV9ibGssIGhvbGVfYmxrOworCWVycmNvZGVfdCBlcnIgPSAwOworCisJLyogVHJ5IHRvIHVzZSBTRUVLX0RBVEEgYW5kIFNFRUtfSE9MRSAqLworCXdoaWxlIChkYXRhIDwgc3RhdGJ1Zi0+c3Rfc2l6ZSkgeworCQlkYXRhID0gbHNlZWsoZmQsIGRhdGEsIFNFRUtfREFUQSk7CisJCWlmIChkYXRhIDwgMCkgeworCQkJaWYgKGVycm5vID09IEVOWElPKQorCQkJCWJyZWFrOworCQkJcmV0dXJuIEVYVDJfRVRfVU5JTVBMRU1FTlRFRDsKKwkJfQorCQlob2xlID0gbHNlZWsoZmQsIGRhdGEsIFNFRUtfSE9MRSk7CisJCWlmIChob2xlIDwgMCkKKwkJCXJldHVybiBFWFQyX0VUX1VOSU1QTEVNRU5URUQ7CisKKwkJZGF0YV9ibGsgPSBkYXRhICYgfihmcy0+YmxvY2tzaXplIC0gMSk7CisJCWhvbGVfYmxrID0gKGhvbGUgKyAoZnMtPmJsb2Nrc2l6ZSAtIDEpKSAmIH4oZnMtPmJsb2Nrc2l6ZSAtIDEpOworCQllcnIgPSBjb3B5X2ZpbGVfcmFuZ2UoZnMsIGZkLCBlMl9maWxlLCBkYXRhX2JsaywgaG9sZV9ibGssIGJ1ZiwKKwkJCQkgICAgICB6ZXJvYnVmKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisKKwkJZGF0YSA9IGhvbGU7CisJfQorCisJcmV0dXJuIGVycjsKK30KKyNlbmRpZiAvKiBTRUVLX0RBVEEgYW5kIFNFRUtfSE9MRSAqLworCisjaWYgZGVmaW5lZChGU19JT0NfRklFTUFQKQorc3RhdGljIGVycmNvZGVfdCB0cnlfZmllbWFwX2NvcHkoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgZXh0Ml9maWxlX3QgZTJfZmlsZSwKKwkJCQkgY2hhciAqYnVmLCBjaGFyICp6ZXJvYnVmKQoreworI2RlZmluZSBFWFRFTlRfTUFYX0NPVU5UIDUxMgorCXN0cnVjdCBmaWVtYXAgKmZpZW1hcF9idWY7CisJc3RydWN0IGZpZW1hcF9leHRlbnQgKmV4dF9idWYsICpleHQ7CisJaW50IGV4dF9idWZfc2l6ZSwgZmllX2J1Zl9zaXplOworCW9mZl90IHBvcyA9IDA7CisJdW5zaWduZWQgaW50IGk7CisJZXJyY29kZV90IGVycjsKKworCWV4dF9idWZfc2l6ZSA9IEVYVEVOVF9NQVhfQ09VTlQgKiBzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnQpOworCWZpZV9idWZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZmllbWFwKSArIGV4dF9idWZfc2l6ZTsKKworCWVyciA9IGV4dDJmc19nZXRfbWVtemVybyhmaWVfYnVmX3NpemUsICZmaWVtYXBfYnVmKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJZXh0X2J1ZiA9IGZpZW1hcF9idWYtPmZtX2V4dGVudHM7CisJbWVtc2V0KGZpZW1hcF9idWYsIDAsIGZpZV9idWZfc2l6ZSk7CisJZmllbWFwX2J1Zi0+Zm1fbGVuZ3RoID0gRklFTUFQX01BWF9PRkZTRVQ7CisJZmllbWFwX2J1Zi0+Zm1fZmxhZ3MgfD0gRklFTUFQX0ZMQUdfU1lOQzsKKwlmaWVtYXBfYnVmLT5mbV9leHRlbnRfY291bnQgPSBFWFRFTlRfTUFYX0NPVU5UOworCisJZG8geworCQlmaWVtYXBfYnVmLT5mbV9zdGFydCA9IHBvczsKKwkJbWVtc2V0KGV4dF9idWYsIDAsIGV4dF9idWZfc2l6ZSk7CisJCWVyciA9IGlvY3RsKGZkLCBGU19JT0NfRklFTUFQLCBmaWVtYXBfYnVmKTsKKwkJaWYgKGVyciA8IDAgJiYgKGVycm5vID09IEVPUE5PVFNVUFAgfHwgZXJybm8gPT0gRU5PVFRZKSkgeworCQkJZXJyID0gRVhUMl9FVF9VTklNUExFTUVOVEVEOworCQkJZ290byBvdXQ7CisJCX0gZWxzZSBpZiAoZXJyIDwgMCB8fCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50cyA9PSAwKSB7CisJCQllcnIgPSBlcnJubzsKKwkJCWdvdG8gb3V0OworCQl9CisJCWZvciAoaSA9IDAsIGV4dCA9IGV4dF9idWY7IGkgPCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50czsKKwkJICAgICBpKyssIGV4dCsrKSB7CisJCQllcnIgPSBjb3B5X2ZpbGVfcmFuZ2UoZnMsIGZkLCBlMl9maWxlLCBleHQtPmZlX2xvZ2ljYWwsCisJCQkJCSAgICAgIGV4dC0+ZmVfbG9naWNhbCArIGV4dC0+ZmVfbGVuZ3RoLAorCQkJCQkgICAgICBidWYsIHplcm9idWYpOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDsKKwkJfQorCisJCWV4dC0tOworCQkvKiBSZWNvcmQgZmlsZSdzIGxvZ2ljYWwgb2Zmc2V0IHRoaXMgdGltZSAqLworCQlwb3MgPSBleHQtPmZlX2xvZ2ljYWwgKyBleHQtPmZlX2xlbmd0aDsKKwkJLyoKKwkJICogSWYgZm1fZXh0ZW50cyBhcnJheSBoYXMgYmVlbiBmaWxsZWQgYW5kCisJCSAqIHRoZXJlIGFyZSBleHRlbnRzIGxlZnQsIGNvbnRpbnVlIHRvIGN5Y2xlLgorCQkgKi8KKwl9IHdoaWxlIChmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50cyA9PSBFWFRFTlRfTUFYX0NPVU5UICYmCisJCSAhKGV4dC0+ZmVfZmxhZ3MgJiBGSUVNQVBfRVhURU5UX0xBU1QpKTsKK291dDoKKwlleHQyZnNfZnJlZV9tZW0oJmZpZW1hcF9idWYpOworCXJldHVybiBlcnI7Cit9CisjZW5kaWYgLyogRlNfSU9DX0ZJRU1BUCAqLworCitzdGF0aWMgZXJyY29kZV90IGNvcHlfZmlsZShleHQyX2ZpbHN5cyBmcywgaW50IGZkLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZiwKKwkJCSAgIGV4dDJfaW5vX3QgaW5vKQoreworCWV4dDJfZmlsZV90IGUyX2ZpbGU7CisJY2hhciAqYnVmID0gTlVMTCwgKnplcm9idWYgPSBOVUxMOworCWVycmNvZGVfdCBlcnIsIGNsb3NlX2VycjsKKworCWVyciA9IGV4dDJmc19maWxlX29wZW4oZnMsIGlubywgRVhUMl9GSUxFX1dSSVRFLCAmZTJfZmlsZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGV4dDJmc19nZXRfbWVtKENPUFlfRklMRV9CVUZMRU4sICZidWYpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJZXJyID0gZXh0MmZzX2dldF9tZW16ZXJvKGZzLT5ibG9ja3NpemUsICZ6ZXJvYnVmKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworI2lmIGRlZmluZWQoU0VFS19EQVRBKSAmJiBkZWZpbmVkKFNFRUtfSE9MRSkKKwllcnIgPSB0cnlfbHNlZWtfY29weShmcywgZmQsIHN0YXRidWYsIGUyX2ZpbGUsIGJ1ZiwgemVyb2J1Zik7CisJaWYgKGVyciAhPSBFWFQyX0VUX1VOSU1QTEVNRU5URUQpCisJCWdvdG8gb3V0OworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEZTX0lPQ19GSUVNQVApCisJZXJyID0gdHJ5X2ZpZW1hcF9jb3B5KGZzLCBmZCwgZTJfZmlsZSwgYnVmLCB6ZXJvYnVmKTsKKwlpZiAoZXJyICE9IEVYVDJfRVRfVU5JTVBMRU1FTlRFRCkKKwkJZ290byBvdXQ7CisjZW5kaWYKKworCWVyciA9IGNvcHlfZmlsZV9yYW5nZShmcywgZmQsIGUyX2ZpbGUsIDAsIHN0YXRidWYtPnN0X3NpemUsIGJ1ZiwKKwkJCSAgICAgIHplcm9idWYpOworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmemVyb2J1Zik7CisJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworCWNsb3NlX2VyciA9IGV4dDJmc19maWxlX2Nsb3NlKGUyX2ZpbGUpOworCWlmIChlcnIgPT0gMCkKKwkJZXJyID0gY2xvc2VfZXJyOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaXNfaGFyZGxpbmsoc3RydWN0IGhkbGlua3NfcyAqaGRsaW5rcywgZGV2X3QgZGV2LCBpbm9fdCBpbm8pCit7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgaGRsaW5rcy0+Y291bnQ7IGkrKykgeworCQlpZiAoaGRsaW5rcy0+aGRsW2ldLnNyY19kZXYgPT0gZGV2ICYmCisJCSAgICBoZGxpbmtzLT5oZGxbaV0uc3JjX2lubyA9PSBpbm8pCisJCQlyZXR1cm4gaTsKKwl9CisJcmV0dXJuIC0xOworfQorCisvKiBDb3B5IHRoZSBuYXRpdmUgZmlsZSB0byB0aGUgZnMgKi8KK2VycmNvZGVfdCBkb193cml0ZV9pbnRlcm5hbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBjd2QsIGNvbnN0IGNoYXIgKnNyYywKKwkJCSAgICBjb25zdCBjaGFyICpkZXN0LCBleHQyX2lub190IHJvb3QpCit7CisJaW50CQlmZDsKKwlzdHJ1Y3Qgc3RhdAlzdGF0YnVmOworCWV4dDJfaW5vX3QJbmV3ZmlsZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCisJZmQgPSBleHQyZnNfb3Blbl9maWxlKHNyYywgT19SRE9OTFksIDApOworCWlmIChmZCA8IDApIHsKKwkJcmV0dmFsID0gZXJybm87CisJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwgXygid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIpLAorCQkJc3JjKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisJaWYgKGZzdGF0KGZkLCAmc3RhdGJ1ZikgPCAwKSB7CisJCXJldHZhbCA9IGVycm5vOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbmFtZWkoZnMsIHJvb3QsIGN3ZCwgZGVzdCwgJm5ld2ZpbGUpOworCWlmIChyZXR2YWwgPT0gMCkgeworCQlyZXR2YWwgPSBFWFQyX0VUX0ZJTEVfRVhJU1RTOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfbmV3X2lub2RlKGZzLCBjd2QsIDAxMDc1NSwgMCwgJm5ld2ZpbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworI2lmZGVmIERFQlVHRlMKKwlwcmludGYoIkFsbG9jYXRlZCBpbm9kZTogJXVcbiIsIG5ld2ZpbGUpOworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX2xpbmsoZnMsIGN3ZCwgZGVzdCwgbmV3ZmlsZSwKKwkJCQlFWFQyX0ZUX1JFR19GSUxFKTsKKwlpZiAocmV0dmFsID09IEVYVDJfRVRfRElSX05PX1NQQUNFKSB7CisJCXJldHZhbCA9IGV4dDJmc19leHBhbmRfZGlyKGZzLCBjd2QpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCXJldHZhbCA9IGV4dDJmc19saW5rKGZzLCBjd2QsIGRlc3QsIG5ld2ZpbGUsCisJCQkJCUVYVDJfRlRfUkVHX0ZJTEUpOworCX0KKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKwlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBuZXdmaWxlKSkKKwkJY29tX2VycihfX2Z1bmNfXywgMCwgIldhcm5pbmc6IGlub2RlIGFscmVhZHkgc2V0Iik7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgbmV3ZmlsZSwgKzEsIDApOworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWlub2RlLmlfbW9kZSA9IChzdGF0YnVmLnN0X21vZGUgJiB+TElOVVhfU19JRk1UKSB8IExJTlVYX1NfSUZSRUc7CisJaW5vZGUuaV9hdGltZSA9IGlub2RlLmlfY3RpbWUgPSBpbm9kZS5pX210aW1lID0KKwkJZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCWlub2RlLmlfbGlua3NfY291bnQgPSAxOworCXJldHZhbCA9IGV4dDJmc19pbm9kZV9zaXplX3NldChmcywgJmlub2RlLCBzdGF0YnVmLnN0X3NpemUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaW5saW5lX2RhdGEoZnMtPnN1cGVyKSkgeworCQlpbm9kZS5pX2ZsYWdzIHw9IEVYVDRfSU5MSU5FX0RBVEFfRkw7CisJfSBlbHNlIGlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKSB7CisJCWV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZTsKKworCQlpbm9kZS5pX2ZsYWdzICY9IH5FWFQ0X0VYVEVOVFNfRkw7CisJCXJldHZhbCA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIG5ld2ZpbGUsICZpbm9kZSwgJmhhbmRsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dDsKKwkJZXh0MmZzX2V4dGVudF9mcmVlKGhhbmRsZSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgbmV3ZmlsZSwgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKwlpZiAoaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2lubGluZV9kYXRhX2luaXQoZnMsIG5ld2ZpbGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJfQorCWlmIChMSU5VWF9TX0lTUkVHKGlub2RlLmlfbW9kZSkpIHsKKwkJcmV0dmFsID0gY29weV9maWxlKGZzLCBmZCwgJnN0YXRidWYsIG5ld2ZpbGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJfQorb3V0OgorCWNsb3NlKGZkKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKiBDb3B5IGZpbGVzIGZyb20gc291cmNlX2RpciB0byBmcyAqLworc3RhdGljIGVycmNvZGVfdCBfX3BvcHVsYXRlX2ZzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IHBhcmVudF9pbm8sCisJCQkgICAgICAgY29uc3QgY2hhciAqc291cmNlX2RpciwgZXh0Ml9pbm9fdCByb290LAorCQkJICAgICAgIHN0cnVjdCBoZGxpbmtzX3MgKmhkbGlua3MpCit7CisJY29uc3QgY2hhcgkqbmFtZTsKKwlESVIJCSpkaDsKKwlzdHJ1Y3QgZGlyZW50CSpkZW50OworCXN0cnVjdCBzdGF0CXN0OworCWNoYXIJCSpsbl90YXJnZXQgPSBOVUxMOworCXVuc2lnbmVkIGludAlzYXZlX2lub2RlOworCWV4dDJfaW5vX3QJaW5vOworCWVycmNvZGVfdAlyZXR2YWwgPSAwOworCWludAkJcmVhZF9jbnQ7CisJaW50CQloZGxpbms7CisKKwlpZiAoY2hkaXIoc291cmNlX2RpcikgPCAwKSB7CisJCXJldHZhbCA9IGVycm5vOworCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQlfKCJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiKSwKKwkJCXNvdXJjZV9kaXIpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWlmICghKGRoID0gb3BlbmRpcigiLiIpKSkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJXygid2hpbGUgb3BlbmluZyBkaXJlY3RvcnkgXCIlc1wiIiksIHNvdXJjZV9kaXIpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXdoaWxlICgoZGVudCA9IHJlYWRkaXIoZGgpKSkgeworCQlpZiAoKCFzdHJjbXAoZGVudC0+ZF9uYW1lLCAiLiIpKSB8fAorCQkgICAgKCFzdHJjbXAoZGVudC0+ZF9uYW1lLCAiLi4iKSkpCisJCQljb250aW51ZTsKKwkJaWYgKGxzdGF0KGRlbnQtPmRfbmFtZSwgJnN0KSkgeworCQkJcmV0dmFsID0gZXJybm87CisJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsIF8oIndoaWxlIGxzdGF0IFwiJXNcIiIpLAorCQkJCWRlbnQtPmRfbmFtZSk7CisJCQlnb3RvIG91dDsKKwkJfQorCQluYW1lID0gZGVudC0+ZF9uYW1lOworCisJCS8qIENoZWNrIGZvciBoYXJkbGlua3MgKi8KKwkJc2F2ZV9pbm9kZSA9IDA7CisJCWlmICghU19JU0RJUihzdC5zdF9tb2RlKSAmJiAhU19JU0xOSyhzdC5zdF9tb2RlKSAmJgorCQkgICAgc3Quc3RfbmxpbmsgPiAxKSB7CisJCQloZGxpbmsgPSBpc19oYXJkbGluayhoZGxpbmtzLCBzdC5zdF9kZXYsIHN0LnN0X2lubyk7CisJCQlpZiAoaGRsaW5rID49IDApIHsKKwkJCQlyZXR2YWwgPSBhZGRfbGluayhmcywgcGFyZW50X2lubywKKwkJCQkJCSAgaGRsaW5rcy0+aGRsW2hkbGlua10uZHN0X2lubywKKwkJCQkJCSAgbmFtZSk7CisJCQkJaWYgKHJldHZhbCkgeworCQkJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJCQkid2hpbGUgbGlua2luZyAlcyIsIG5hbWUpOworCQkJCQlnb3RvIG91dDsKKwkJCQl9CisJCQkJY29udGludWU7CisJCQl9IGVsc2UKKwkJCQlzYXZlX2lub2RlID0gMTsKKwkJfQorCisJCXN3aXRjaChzdC5zdF9tb2RlICYgU19JRk1UKSB7CisJCWNhc2UgU19JRkNIUjoKKwkJY2FzZSBTX0lGQkxLOgorCQljYXNlIFNfSUZJRk86CisJCWNhc2UgU19JRlNPQ0s6CisJCQlyZXR2YWwgPSBkb19ta25vZF9pbnRlcm5hbChmcywgcGFyZW50X2lubywgbmFtZSwgJnN0KTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJCV8oIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSAiCisJCQkJCSAgIlwiJXNcIiIpLCBuYW1lKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIFNfSUZMTks6CisJCQlsbl90YXJnZXQgPSBtYWxsb2Moc3Quc3Rfc2l6ZSArIDEpOworCQkJaWYgKGxuX3RhcmdldCA9PSBOVUxMKSB7CisJCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCQlfKCJtYWxsb2MgZmFpbGVkIikpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJcmVhZF9jbnQgPSByZWFkbGluayhuYW1lLCBsbl90YXJnZXQsCisJCQkJCSAgICBzdC5zdF9zaXplICsgMSk7CisJCQlpZiAocmVhZF9jbnQgPT0gLTEpIHsKKwkJCQlyZXR2YWwgPSBlcnJubzsKKwkJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJCV8oIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIiksCisJCQkJCW5hbWUpOworCQkJCWZyZWUobG5fdGFyZ2V0KTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJCWlmIChyZWFkX2NudCA+IHN0LnN0X3NpemUpIHsKKwkJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJCV8oInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgIgorCQkJCQkgICJiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiKSk7CisJCQkJZnJlZShsbl90YXJnZXQpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJbG5fdGFyZ2V0W3JlYWRfY250XSA9ICdcMCc7CisJCQlyZXR2YWwgPSBkb19zeW1saW5rX2ludGVybmFsKGZzLCBwYXJlbnRfaW5vLCBuYW1lLAorCQkJCQkJICAgICBsbl90YXJnZXQsIHJvb3QpOworCQkJZnJlZShsbl90YXJnZXQpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoX19mdW5jX18sIHJldHZhbCwKKwkJCQkJXygid2hpbGUgd3JpdGluZyBzeW1saW5rXCIlc1wiIiksCisJCQkJCW5hbWUpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU19JRlJFRzoKKwkJCXJldHZhbCA9IGRvX3dyaXRlX2ludGVybmFsKGZzLCBwYXJlbnRfaW5vLCBuYW1lLCBuYW1lLAorCQkJCQkJICAgcm9vdCk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCQlfKCJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIiksIG5hbWUpOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgU19JRkRJUjoKKwkJCS8qIERvbid0IGNob2tlIG9uIC9sb3N0K2ZvdW5kICovCisJCQlpZiAocGFyZW50X2lubyA9PSBFWFQyX1JPT1RfSU5PICYmCisJCQkgICAgc3RyY21wKG5hbWUsICJsb3N0K2ZvdW5kIikgPT0gMCkKKwkJCQlnb3RvIGZpbmRfbG5mOworCQkJcmV0dmFsID0gZG9fbWtkaXJfaW50ZXJuYWwoZnMsIHBhcmVudF9pbm8sIG5hbWUsCisJCQkJCQkgICByb290KTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJCV8oIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIiksIG5hbWUpOworCQkJCWdvdG8gb3V0OworCQkJfQorZmluZF9sbmY6CisJCQlyZXR2YWwgPSBleHQyZnNfbmFtZWkoZnMsIHJvb3QsIHBhcmVudF9pbm8sCisJCQkJCSAgICAgIG5hbWUsICZpbm8pOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCAwKTsKKwkJCQkJZ290byBvdXQ7CisJCQl9CisJCQkvKiBQb3B1bGF0ZSB0aGUgZGlyIHJlY3Vyc2l2ZWx5Ki8KKwkJCXJldHZhbCA9IF9fcG9wdWxhdGVfZnMoZnMsIGlubywgbmFtZSwgcm9vdCwgaGRsaW5rcyk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gb3V0OworCQkJaWYgKGNoZGlyKCIuLiIpKSB7CisJCQkJcmV0dmFsID0gZXJybm87CisJCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCQlfKCJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiKSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWNvbV9lcnIoX19mdW5jX18sIDAsCisJCQkJXygiaWdub3JpbmcgZW50cnkgXCIlc1wiIiksIG5hbWUpOworCQl9CisKKwkJcmV0dmFsID0gIGV4dDJmc19uYW1laShmcywgcm9vdCwgcGFyZW50X2lubywgbmFtZSwgJmlubyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIobmFtZSwgcmV0dmFsLCBfKCJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIpLAorCQkJCW5hbWUpOworCQkJZ290byBvdXQ7CisJCX0KKworCQlyZXR2YWwgPSBzZXRfaW5vZGVfZXh0cmEoZnMsIGlubywgJnN0KTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLAorCQkJCV8oIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIpLCBuYW1lKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0dmFsID0gc2V0X2lub2RlX3hhdHRyKGZzLCBpbm8sIG5hbWUpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKF9fZnVuY19fLCByZXR2YWwsCisJCQkJXygid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIpLCBuYW1lKTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJLyogU2F2ZSB0aGUgaGFyZGxpbmsgaW5vICovCisJCWlmIChzYXZlX2lub2RlKSB7CisJCQkvKgorCQkJICogQ2hlY2sgd2hldGhlciBuZWVkIG1vcmUgbWVtb3J5LCBhbmQgd2UgZG9uJ3QgbmVlZAorCQkJICogZnJlZSgpIHNpbmNlIHRoZSBsaWZlc3BhbiB3aWxsIGJlIG92ZXIgYWZ0ZXIgdGhlIGZzCisJCQkgKiBwb3B1bGF0ZWQuCisJCQkgKi8KKwkJCWlmIChoZGxpbmtzLT5jb3VudCA9PSBoZGxpbmtzLT5zaXplKSB7CisJCQkJdm9pZCAqcCA9IHJlYWxsb2MoaGRsaW5rcy0+aGRsLAorCQkJCQkJKGhkbGlua3MtPnNpemUgKyBIRExJTktfQ05UKSAqCisJCQkJCQlzaXplb2Yoc3RydWN0IGhkbGlua19zKSk7CisJCQkJaWYgKHAgPT0gTlVMTCkgeworCQkJCQlyZXR2YWwgPSBFWFQyX0VUX05PX01FTU9SWTsKKwkJCQkJY29tX2VycihuYW1lLCByZXR2YWwsCisJCQkJCQlfKCJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIpKTsKKwkJCQkJZ290byBvdXQ7CisJCQkJfQorCQkJCWhkbGlua3MtPmhkbCA9IHA7CisJCQkJaGRsaW5rcy0+c2l6ZSArPSBIRExJTktfQ05UOworCQkJfQorCQkJaGRsaW5rcy0+aGRsW2hkbGlua3MtPmNvdW50XS5zcmNfZGV2ID0gc3Quc3RfZGV2OworCQkJaGRsaW5rcy0+aGRsW2hkbGlua3MtPmNvdW50XS5zcmNfaW5vID0gc3Quc3RfaW5vOworCQkJaGRsaW5rcy0+aGRsW2hkbGlua3MtPmNvdW50XS5kc3RfaW5vID0gaW5vOworCQkJaGRsaW5rcy0+Y291bnQrKzsKKwkJfQorCX0KKworb3V0OgorCWNsb3NlZGlyKGRoKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitlcnJjb2RlX3QgcG9wdWxhdGVfZnMoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgcGFyZW50X2lubywKKwkJICAgICAgY29uc3QgY2hhciAqc291cmNlX2RpciwgZXh0Ml9pbm9fdCByb290KQoreworCXN0cnVjdCBoZGxpbmtzX3MgaGRsaW5rczsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSkgeworCQljb21fZXJyKF9fZnVuY19fLCAwLCAiRmlsZXN5c3RlbSBvcGVuZWQgcmVhZG9ubHkiKTsKKwkJcmV0dXJuIEVST0ZTOworCX0KKworCWhkbGlua3MuY291bnQgPSAwOworCWhkbGlua3Muc2l6ZSA9IEhETElOS19DTlQ7CisJaGRsaW5rcy5oZGwgPSByZWFsbG9jKE5VTEwsIGhkbGlua3Muc2l6ZSAqIHNpemVvZihzdHJ1Y3QgaGRsaW5rX3MpKTsKKwlpZiAoaGRsaW5rcy5oZGwgPT0gTlVMTCkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJY29tX2VycihfX2Z1bmNfXywgcmV0dmFsLCBfKCJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwlyZXR2YWwgPSBfX3BvcHVsYXRlX2ZzKGZzLCBwYXJlbnRfaW5vLCBzb3VyY2VfZGlyLCByb290LCAmaGRsaW5rcyk7CisKKwlmcmVlKGhkbGlua3MuaGRsKTsKKwlyZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvY3JlYXRlX2lub2RlLmggYi9lMmZzcHJvZ3MvbWlzYy9jcmVhdGVfaW5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQ5ZGYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvY3JlYXRlX2lub2RlLmgKQEAgLTAsMCArMSw0MSBAQAorI2lmbmRlZiBfQ1JFQVRFX0lOT0RFX0gKKyNkZWZpbmUgX0NSRUFURV9JTk9ERV9ICisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisKK3N0cnVjdCBoZGxpbmtfcworeworCWRldl90IHNyY19kZXY7CisJaW5vX3Qgc3JjX2lubzsKKwlleHQyX2lub190IGRzdF9pbm87Cit9OworCitzdHJ1Y3QgaGRsaW5rc19zCit7CisJaW50IGNvdW50OworCWludCBzaXplOworCXN0cnVjdCBoZGxpbmtfcyAqaGRsOworfTsKKworI2RlZmluZSBIRExJTktfQ05UCSg0KQorCisvKiBGb3IgcG9wdWxhdGluZyB0aGUgZmlsZXN5c3RlbSAqLworZXh0ZXJuIGVycmNvZGVfdCBwb3B1bGF0ZV9mcyhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBwYXJlbnRfaW5vLAorCQkJICAgICBjb25zdCBjaGFyICpzb3VyY2VfZGlyLCBleHQyX2lub190IHJvb3QpOworZXh0ZXJuIGVycmNvZGVfdCBkb19ta25vZF9pbnRlcm5hbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBjd2QsCisJCQkJICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXQgKnN0KTsKK2V4dGVybiBlcnJjb2RlX3QgZG9fc3ltbGlua19pbnRlcm5hbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBjd2QsCisJCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjaGFyICp0YXJnZXQsCisJCQkJICAgICBleHQyX2lub190IHJvb3QpOworZXh0ZXJuIGVycmNvZGVfdCBkb19ta2Rpcl9pbnRlcm5hbChleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBjd2QsCisJCQkJICAgY29uc3QgY2hhciAqbmFtZSwgZXh0Ml9pbm9fdCByb290KTsKK2V4dGVybiBlcnJjb2RlX3QgZG9fd3JpdGVfaW50ZXJuYWwoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgY3dkLAorCQkJCSAgIGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZGVzdCwKKwkJCQkgICBleHQyX2lub190IHJvb3QpOworCisjZW5kaWYgLyogX0NSRUFURV9JTk9ERV9IICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9kdW1wZTJmcy44LmluIGIvZTJmc3Byb2dzL21pc2MvZHVtcGUyZnMuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDlhNTU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZHVtcGUyZnMuOC5pbgpAQCAtMCwwICsxLDk1IEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlwiIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1IGJ5IFRoZW9kb3JlIFRzJ28uICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlRIIERVTVBFMkZTIDggIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2R1bXBlMmZzIFwtIGR1bXAgZXh0Mi9leHQzL2V4dDQgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbgorLlNIIFNZTk9QU0lTCisuQiBkdW1wZTJmcworWworLkIgXC1iZmdoaXhWCitdCitbCisuQiBcLW8gc3VwZXJibG9jaz1cZklzdXBlcmJsb2NrCitdCitbCisuQiBcLW8gYmxvY2tzaXplPVxmSWJsb2Nrc2l6ZQorXQorLkkgZGV2aWNlCisuU0ggREVTQ1JJUFRJT04KKy5CIGR1bXBlMmZzCitwcmludHMgdGhlIHN1cGVyIGJsb2NrIGFuZCBibG9ja3MgZ3JvdXAgaW5mb3JtYXRpb24gZm9yIHRoZSBmaWxlc3lzdGVtCitwcmVzZW50IG9uCisuSSBkZXZpY2UuCisuUFAKKy5CIE5vdGU6CitXaGVuIHVzZWQgd2l0aCBhIG1vdW50ZWQgZmlsZXN5c3RlbSwgdGhlIHByaW50ZWQKK2luZm9ybWF0aW9uIG1heSBiZSBvbGQgb3IgaW5jb25zaXN0ZW50LgorLlNIIE9QVElPTlMKKy5UUAorLkIgXC1iCitwcmludCB0aGUgYmxvY2tzIHdoaWNoIGFyZSByZXNlcnZlZCBhcyBiYWQgaW4gdGhlIGZpbGVzeXN0ZW0uCisuVFAKKy5CIFwtbyBzdXBlcmJsb2NrPVxmSXN1cGVyYmxvY2sKK3VzZSB0aGUgYmxvY2sKKy5JIHN1cGVyYmxvY2sKK3doZW4gZXhhbWluaW5nIHRoZSBmaWxlc3lzdGVtLgorVGhpcyBvcHRpb24gaXMgbm90IHVzdWFsbHkgbmVlZGVkIGV4Y2VwdCBieSBhIGZpbGVzeXN0ZW0gd2l6YXJkIHdobyAKK2lzIGV4YW1pbmluZyB0aGUgcmVtYWlucyBvZiBhIHZlcnkgYmFkbHkgY29ycnVwdGVkIGZpbGVzeXN0ZW0uCisuVFAKKy5CIFwtbyBibG9ja3NpemU9XGZJYmxvY2tzaXplCit1c2UgYmxvY2tzIG9mCisuSSBibG9ja3NpemUKK2J5dGVzIHdoZW4gZXhhbWluaW5nIHRoZSBmaWxlc3lzdGVtLgorVGhpcyBvcHRpb24gaXMgbm90IHVzdWFsbHkgbmVlZGVkIGV4Y2VwdCBieSBhIGZpbGVzeXN0ZW0gd2l6YXJkIHdobyAKK2lzIGV4YW1pbmluZyB0aGUgcmVtYWlucyBvZiBhIHZlcnkgYmFkbHkgY29ycnVwdGVkIGZpbGVzeXN0ZW0uCisuVFAKKy5CIFwtZgorZm9yY2UgZHVtcGUyZnMgdG8gZGlzcGxheSBhIGZpbGVzeXN0ZW0gZXZlbiB0aG91Z2ggaXQgbWF5IGhhdmUgc29tZSAKK2ZpbGVzeXN0ZW0gZmVhdHVyZSBmbGFncyB3aGljaCBkdW1wZTJmcyBtYXkgbm90IHVuZGVyc3RhbmQgKGFuZCB3aGljaAorY2FuIGNhdXNlIHNvbWUgb2YgZHVtcGUyZnMncyBkaXNwbGF5IHRvIGJlIHN1c3BlY3QpLgorLlRQCisuQiBcLWcKK2Rpc3BsYXkgdGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5mb3JtYXRpb24gaW4gYSBtYWNoaW5lIHJlYWRhYmxlIGNvbG9uLXNlcGFyYXRlZAordmFsdWUgZm9ybWF0LiAgVGhlIGZpZWxkcyBkaXNwbGF5ZWQgYXJlIHRoZSBncm91cCBudW1iZXI7IHRoZSBudW1iZXIgb2YgdGhlCitmaXJzdCBibG9jayBpbiB0aGUgZ3JvdXA7IHRoZSBzdXBlcmJsb2NrIGxvY2F0aW9uIChvciAtMSBpZiBub3QgcHJlc2VudCk7IHRoZQorcmFuZ2Ugb2YgYmxvY2tzIHVzZWQgYnkgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIChvciAtMSBpZiBub3QgcHJlc2VudCk7IHRoZSBibG9jaworYml0bWFwIGxvY2F0aW9uOyB0aGUgaW5vZGUgYml0bWFwIGxvY2F0aW9uOyBhbmQgdGhlIHJhbmdlIG9mIGJsb2NrcyB1c2VkIGJ5IHRoZQoraW5vZGUgdGFibGUuCisuVFAgCisuQiBcLWgKK29ubHkgZGlzcGxheSB0aGUgc3VwZXJibG9jayBpbmZvcm1hdGlvbiBhbmQgbm90IGFueSBvZiB0aGUgYmxvY2sKK2dyb3VwIGRlc2NyaXB0b3IgZGV0YWlsIGluZm9ybWF0aW9uLgorLlRQCisuQiBcLWkKK2Rpc3BsYXkgdGhlIGZpbGVzeXN0ZW0gZGF0YSBmcm9tIGFuIGltYWdlIGZpbGUgY3JlYXRlZCBieSAKKy5CUiBlMmltYWdlICwKK3VzaW5nIAorLkkgZGV2aWNlCithcyB0aGUgcGF0aG5hbWUgdG8gdGhlIGltYWdlIGZpbGUuCisuVFAKKy5CIFwteAorcHJpbnQgdGhlIGRldGFpbGVkIGdyb3VwIGluZm9ybWF0aW9uIGJsb2NrIG51bWJlcnMgaW4gaGV4YWRlY2ltYWwgZm9ybWF0CisuVFAKKy5CIFwtVgorcHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mIAorLkIgZHVtcGUyZnMKK2FuZCBleGl0LgorLlNIIEJVR1MKK1lvdSBuZWVkIHRvIGtub3cgdGhlIHBoeXNpY2FsIGZpbGVzeXN0ZW0gc3RydWN0dXJlIHRvIHVuZGVyc3RhbmQgdGhlCitvdXRwdXQuCisuU0ggQVVUSE9SCisuQiBkdW1wZTJmcyAKK3dhcyB3cml0dGVuIGJ5IFJlbXkgQ2FyZCA8UmVteS5DYXJkQGxpbnV4Lm9yZz4uICBJdCBpcyBjdXJyZW50bHkgYmVpbmcKK21haW50YWluZWQgYnkgVGhlb2RvcmUgVHMnbyA8dHl0c29AYWx1bS5taXQuZWR1Pi4KKy5TSCBBVkFJTEFCSUxJVFkKKy5CIGR1bXBlMmZzCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20gCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGUyZnNjayAoOCksCisuQlIgbWtlMmZzICg4KSwKKy5CUiB0dW5lMmZzICg4KS4KKy5CUiBleHQ0ICg1KQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9kdW1wZTJmcy5jIGIvZTJmc3Byb2dzL21pc2MvZHVtcGUyZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDM0NzAzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZHVtcGUyZnMuYwpAQCAtMCwwICsxLDczOCBAQAorLyoKKyAqIGR1bXBlMmZzLmMJCS0gTGlzdCB0aGUgY29udHJvbCBzdHJ1Y3R1cmVzIG9mIGEgc2Vjb25kCisgKgkJCSAgZXh0ZW5kZWQgZmlsZXN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJvcmF0b2lyZSBNQVNJLCBJbnN0aXR1dCBCbGFpc2UgUGFzY2FsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGUgUGllcnJlIGV0IE1hcmllIEN1cmllIChQYXJpcyBWSSkKKyAqCisgKiBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NyBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIEhpc3Rvcnk6CisgKiA5NC8wMS8wOQktIENyZWF0aW9uCisgKiA5NC8wMi8yNwktIFBvcnRlZCB0byB1c2UgdGhlIGV4dDJmcyBsaWJyYXJ5CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gY2hhciAqb3B0YXJnOworZXh0ZXJuIGludCBvcHRpbmQ7CisjZW5kaWYKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJleHQyZnMva2VybmVsLWpiZC5oIgorI2luY2x1ZGUgPHV1aWQvdXVpZC5oPgorCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisjaW5jbHVkZSAic3VwcG9ydC9wbGF1c2libGUuaCIKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKKyNkZWZpbmUgaW5fdXNlKG0sIHgpCShleHQyZnNfdGVzdF9iaXQgKCh4KSwgKG0pKSkKKworc3RhdGljIGNvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWUgPSAiZHVtcGUyZnMiOworc3RhdGljIGNoYXIgKiBkZXZpY2VfbmFtZSA9IE5VTEw7CitzdGF0aWMgaW50IGhleF9mb3JtYXQgPSAwOworc3RhdGljIGludCBibG9ja3M2NCA9IDA7CisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsIF8oIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSAiCisJCSAiWy1vIGJsb2Nrc2l6ZT08bnVtPl0gZGV2aWNlXG4iKSwgcHJvZ3JhbV9uYW1lKTsKKwlleGl0KDEpOworfQorCitzdGF0aWMgdm9pZCBwcmludF9udW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bSkKK3sKKwlpZiAoaGV4X2Zvcm1hdCkgeworCQlpZiAoYmxvY2tzNjQpCisJCQlwcmludGYoIjB4JTA4bGx4IiwgbnVtKTsKKwkJZWxzZQorCQkJcHJpbnRmKCIweCUwNGxseCIsIG51bSk7CisJfSBlbHNlCisJCXByaW50ZigiJWxsdSIsIG51bSk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3JhbmdlKHVuc2lnbmVkIGxvbmcgbG9uZyBhLCB1bnNpZ25lZCBsb25nIGxvbmcgYikKK3sKKwlpZiAoaGV4X2Zvcm1hdCkgeworCQlpZiAoYmxvY2tzNjQpCisJCQlwcmludGYoIjB4JTA4bGx4LTB4JTA4bGx4IiwgYSwgYik7CisJCWVsc2UKKwkJCXByaW50ZigiMHglMDRsbHgtMHglMDRsbHgiLCBhLCBiKTsKKwl9IGVsc2UKKwkJcHJpbnRmKCIlbGx1LSVsbHUiLCBhLCBiKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfZnJlZSh1bnNpZ25lZCBsb25nIGdyb3VwLCBjaGFyICogYml0bWFwLAorCQkgICAgICAgdW5zaWduZWQgbG9uZyBudW0sIHVuc2lnbmVkIGxvbmcgb2Zmc2V0LCBpbnQgcmF0aW8pCit7CisJaW50IHAgPSAwOworCXVuc2lnbmVkIGxvbmcgaTsKKwl1bnNpZ25lZCBsb25nIGo7CisKKwlvZmZzZXQgLz0gcmF0aW87CisJb2Zmc2V0ICs9IGdyb3VwICogbnVtOworCWZvciAoaSA9IDA7IGkgPCBudW07IGkrKykKKwkJaWYgKCFpbl91c2UgKGJpdG1hcCwgaSkpCisJCXsKKwkJCWlmIChwKQorCQkJCXByaW50ZiAoIiwgIik7CisJCQlwcmludF9udW1iZXIoKGkgKyBvZmZzZXQpICogcmF0aW8pOworCQkJZm9yIChqID0gaTsgaiA8IG51bSAmJiAhaW5fdXNlIChiaXRtYXAsIGopOyBqKyspCisJCQkJOworCQkJaWYgKC0taiAhPSBpKSB7CisJCQkJZnB1dGMoJy0nLCBzdGRvdXQpOworCQkJCXByaW50X251bWJlcigoaiArIG9mZnNldCkgKiByYXRpbyk7CisJCQkJaSA9IGo7CisJCQl9CisJCQlwID0gMTsKKwkJfQorfQorCitzdGF0aWMgdm9pZCBwcmludF9iZ19vcHQoaW50IGJnX2ZsYWdzLCBpbnQgbWFzaywKKwkJCSAgY29uc3QgY2hhciAqc3RyLCBpbnQgKmZpcnN0KQoreworCWlmIChiZ19mbGFncyAmIG1hc2spIHsKKwkJaWYgKCpmaXJzdCkgeworCQkJZnB1dHMoIiBbIiwgc3Rkb3V0KTsKKwkJCSpmaXJzdCA9IDA7CisJCX0gZWxzZQorCQkJZnB1dHMoIiwgIiwgc3Rkb3V0KTsKKwkJZnB1dHMoc3RyLCBzdGRvdXQpOworCX0KK30KK3N0YXRpYyB2b2lkIHByaW50X2JnX29wdHMoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBpKQoreworCWludCBmaXJzdCA9IDEsIGJnX2ZsYWdzID0gMDsKKworCWlmIChleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpCisJCWJnX2ZsYWdzID0gZXh0MmZzX2JnX2ZsYWdzKGZzLCBpKTsKKworCXByaW50X2JnX29wdChiZ19mbGFncywgRVhUMl9CR19JTk9ERV9VTklOSVQsICJJTk9ERV9VTklOSVQiLAorIAkJICAgICAmZmlyc3QpOworCXByaW50X2JnX29wdChiZ19mbGFncywgRVhUMl9CR19CTE9DS19VTklOSVQsICJCTE9DS19VTklOSVQiLAorIAkJICAgICAmZmlyc3QpOworCXByaW50X2JnX29wdChiZ19mbGFncywgRVhUMl9CR19JTk9ERV9aRVJPRUQsICJJVEFCTEVfWkVST0VEIiwKKyAJCSAgICAgJmZpcnN0KTsKKwlpZiAoIWZpcnN0KQorCQlmcHV0YygnXScsIHN0ZG91dCk7CisJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfYmdfcmVsX29mZnNldChleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibG9jaywgaW50IGl0YWJsZSwKKwkJCQlibGs2NF90IGZpcnN0X2Jsb2NrLCBibGs2NF90IGxhc3RfYmxvY2spCit7CisJaWYgKChibG9jayA+PSBmaXJzdF9ibG9jaykgJiYgKGJsb2NrIDw9IGxhc3RfYmxvY2spKSB7CisJCWlmIChpdGFibGUgJiYgYmxvY2sgPT0gZmlyc3RfYmxvY2spCisJCQlyZXR1cm47CisJCXByaW50ZigiICgrJXUpIiwgKHVuc2lnbmVkKShibG9jayAtIGZpcnN0X2Jsb2NrKSk7CisJfSBlbHNlIGlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpKSB7CisJCWRncnBfdCBmbGV4X2dycCA9IGV4dDJmc19ncm91cF9vZl9ibGsyKGZzLCBibG9jayk7CisJCXByaW50ZigiIChiZyAjJXUgKyAldSkiLCBmbGV4X2dycCwKKwkJICAgICAgICh1bnNpZ25lZCkoYmxvY2stZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcyxmbGV4X2dycCkpKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGxpc3RfZGVzYyhleHQyX2ZpbHN5cyBmcywgaW50IGdycF9vbmx5KQoreworCXVuc2lnbmVkIGxvbmcgaTsKKwlibGs2NF90CWZpcnN0X2Jsb2NrLCBsYXN0X2Jsb2NrOworCWJsazY0X3QJc3VwZXJfYmxrLCBvbGRfZGVzY19ibGssIG5ld19kZXNjX2JsazsKKwljaGFyICpibG9ja19iaXRtYXA9TlVMTCwgKmlub2RlX2JpdG1hcD1OVUxMOworCWNvbnN0IGNoYXIgKnVuaXRzID0gXygiYmxvY2tzIik7CisJaW50IGlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsIG9sZF9kZXNjX2Jsb2NrcywgcmVzZXJ2ZWRfZ2R0OworCWludAkJYmxvY2tfbmJ5dGVzLCBpbm9kZV9uYnl0ZXM7CisJaW50IGhhc19zdXBlcjsKKwlibGs2NF90CQlibGtfaXRyID0gRVhUMkZTX0IyQyhmcywgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spOworCWV4dDJfaW5vX3QJaW5vX2l0ciA9IDE7CisJZXJyY29kZV90CXJldHZhbDsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSkKKwkJdW5pdHMgPSBfKCJjbHVzdGVycyIpOworCisJYmxvY2tfbmJ5dGVzID0gRVhUMl9DTFVTVEVSU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAvIDg7CisJaW5vZGVfbmJ5dGVzID0gRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgLyA4OworCisJaWYgKGZzLT5ibG9ja19tYXApCisJCWJsb2NrX2JpdG1hcCA9IG1hbGxvYyhibG9ja19uYnl0ZXMpOworCWlmIChmcy0+aW5vZGVfbWFwKQorCQlpbm9kZV9iaXRtYXAgPSBtYWxsb2MoaW5vZGVfbmJ5dGVzKTsKKworCWlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAgPSAoKGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwICoKKwkJCQkgICBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSkgKworCQkJCSAgRVhUMl9CTE9DS19TSVpFKGZzLT5zdXBlcikgLSAxKSAvCisJCQkJIEVYVDJfQkxPQ0tfU0laRShmcy0+c3VwZXIpOworCXJlc2VydmVkX2dkdCA9IGZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJZmlyc3RfYmxvY2sgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoZnMtPnN1cGVyKSkKKwkJb2xkX2Rlc2NfYmxvY2tzID0gZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmc7CisJZWxzZQorCQlvbGRfZGVzY19ibG9ja3MgPSBmcy0+ZGVzY19ibG9ja3M7CisJaWYgKGdycF9vbmx5KQorCQlwcmludGYoImdyb3VwOmJsb2NrOnN1cGVyOmdkdDpiYml0bWFwOmliaXRtYXA6aXRhYmxlXG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlmaXJzdF9ibG9jayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGkpOworCQlsYXN0X2Jsb2NrID0gZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGZzLCBpKTsKKworCQlleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MyKGZzLCBpLCAmc3VwZXJfYmxrLAorCQkJCQkgICZvbGRfZGVzY19ibGssICZuZXdfZGVzY19ibGssIDApOworCisJCWlmIChncnBfb25seSkgeworCQkJcHJpbnRmKCIlbHU6JWxsdToiLCBpLCBmaXJzdF9ibG9jayk7CisJCQlpZiAoaSA9PSAwIHx8IHN1cGVyX2JsaykKKwkJCQlwcmludGYoIiVsbHU6Iiwgc3VwZXJfYmxrKTsKKwkJCWVsc2UKKwkJCQlwcmludGYoIi0xOiIpOworCQkJaWYgKG9sZF9kZXNjX2JsaykgeworCQkJCXByaW50X3JhbmdlKG9sZF9kZXNjX2JsaywKKwkJCQkJICAgIG9sZF9kZXNjX2JsayArIG9sZF9kZXNjX2Jsb2NrcyAtIDEpOworCQkJCXByaW50ZigiOiIpOworCQkJfSBlbHNlIGlmIChuZXdfZGVzY19ibGspCisJCQkJcHJpbnRmKCIlbGx1OiIsIG5ld19kZXNjX2Jsayk7CisJCQllbHNlCisJCQkJcHJpbnRmKCItMToiKTsKKwkJCXByaW50ZigiJWxsdTolbGx1OiVsbHVcbiIsCisJCQkgICAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGkpLAorCQkJICAgICAgIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSwKKwkJCSAgICAgICBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCXByaW50ZihfKCJHcm91cCAlbHU6IChCbG9ja3MgIiksIGkpOworCQlwcmludF9yYW5nZShmaXJzdF9ibG9jaywgbGFzdF9ibG9jayk7CisJCWZwdXRzKCIpIiwgc3Rkb3V0KTsKKwkJaWYgKGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSkgeworCQkJdW5zaWduZWQgY3N1bSA9IGV4dDJmc19iZ19jaGVja3N1bShmcywgaSk7CisJCQl1bnNpZ25lZCBleHBfY3N1bSA9IGV4dDJmc19ncm91cF9kZXNjX2NzdW0oZnMsIGkpOworCisJCQlwcmludGYoXygiIGNzdW0gMHglMDR4IiksIGNzdW0pOworCQkJaWYgKGNzdW0gIT0gZXhwX2NzdW0pCisJCQkJcHJpbnRmKF8oIiAoRVhQRUNURUQgMHglMDR4KSIpLCBleHBfY3N1bSk7CisJCX0KKwkJcHJpbnRfYmdfb3B0cyhmcywgaSk7CisJCWhhc19zdXBlciA9ICgoaT09MCkgfHwgc3VwZXJfYmxrKTsKKwkJaWYgKGhhc19zdXBlcikgeworCQkJcHJpbnRmIChfKCIgICVzIHN1cGVyYmxvY2sgYXQgIiksCisJCQkJaSA9PSAwID8gXygiUHJpbWFyeSIpIDogXygiQmFja3VwIikpOworCQkJcHJpbnRfbnVtYmVyKHN1cGVyX2Jsayk7CisJCX0KKwkJaWYgKG9sZF9kZXNjX2JsaykgeworCQkJcHJpbnRmKCIlcyIsIF8oIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIikpOworCQkJcHJpbnRfcmFuZ2Uob2xkX2Rlc2NfYmxrLAorCQkJCSAgICBvbGRfZGVzY19ibGsgKyBvbGRfZGVzY19ibG9ja3MgLSAxKTsKKwkJCWlmIChyZXNlcnZlZF9nZHQpIHsKKwkJCQlwcmludGYoIiVzIiwgXygiXG4gIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIikpOworCQkJCXByaW50X3JhbmdlKG9sZF9kZXNjX2JsayArIG9sZF9kZXNjX2Jsb2NrcywKKwkJCQkJICAgIG9sZF9kZXNjX2JsayArIG9sZF9kZXNjX2Jsb2NrcyArCisJCQkJCSAgICByZXNlcnZlZF9nZHQgLSAxKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChuZXdfZGVzY19ibGspIHsKKwkJCWZwdXRjKGhhc19zdXBlciA/ICcsJyA6ICcgJywgc3Rkb3V0KTsKKwkJCXByaW50ZigiJXMiLCBfKCIgR3JvdXAgZGVzY3JpcHRvciBhdCAiKSk7CisJCQlwcmludF9udW1iZXIobmV3X2Rlc2NfYmxrKTsKKwkJCWhhc19zdXBlcisrOworCQl9CisJCWlmIChoYXNfc3VwZXIpCisJCQlmcHV0YygnXG4nLCBzdGRvdXQpOworCQlmcHV0cyhfKCIgIEJsb2NrIGJpdG1hcCBhdCAiKSwgc3Rkb3V0KTsKKwkJcHJpbnRfbnVtYmVyKGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSk7CisJCXByaW50X2JnX3JlbF9vZmZzZXQoZnMsIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSwgMCwKKwkJCQkgICAgZmlyc3RfYmxvY2ssIGxhc3RfYmxvY2spOworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJCXByaW50ZihfKCIsIGNzdW0gMHglMDh4IiksCisJCQkgICAgICAgZXh0MmZzX2Jsb2NrX2JpdG1hcF9jaGVja3N1bShmcywgaSkpOworCQlpZiAoZ2V0ZW52KCJEVU1QRTJGU19JR05PUkVfODBDT0wiKSkKKwkJCWZwdXRzKF8oIiwiKSwgc3Rkb3V0KTsKKwkJZWxzZQorCQkJZnB1dHMoXygiXG4gIiksIHN0ZG91dCk7CisJCWZwdXRzKF8oIiBJbm9kZSBiaXRtYXAgYXQgIiksIHN0ZG91dCk7CisJCXByaW50X251bWJlcihleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSkpOworCQlwcmludF9iZ19yZWxfb2Zmc2V0KGZzLCBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSksIDAsCisJCQkJICAgIGZpcnN0X2Jsb2NrLCBsYXN0X2Jsb2NrKTsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCQlwcmludGYoXygiLCBjc3VtIDB4JTA4eCIpLAorCQkJICAgICAgIGV4dDJmc19pbm9kZV9iaXRtYXBfY2hlY2tzdW0oZnMsIGkpKTsKKwkJZnB1dHMoXygiXG4gIElub2RlIHRhYmxlIGF0ICIpLCBzdGRvdXQpOworCQlwcmludF9yYW5nZShleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSwKKwkJCSAgICBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSArCisJCQkgICAgaW5vZGVfYmxvY2tzX3Blcl9ncm91cCAtIDEpOworCQlwcmludF9iZ19yZWxfb2Zmc2V0KGZzLCBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSwgMSwKKwkJCQkgICAgZmlyc3RfYmxvY2ssIGxhc3RfYmxvY2spOworCQlwcmludGYgKF8oIlxuICAldSBmcmVlICVzLCAldSBmcmVlIGlub2RlcywgIgorCQkJICAiJXUgZGlyZWN0b3JpZXMlcyIpLAorCQkJZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBpKSwgdW5pdHMsCisJCQlleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQoZnMsIGkpLAorCQkJZXh0MmZzX2JnX3VzZWRfZGlyc19jb3VudChmcywgaSksCisJCQlleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgaSkgPyAiIiA6ICJcbiIpOworCQlpZiAoZXh0MmZzX2JnX2l0YWJsZV91bnVzZWQoZnMsIGkpKQorCQkJcHJpbnRmIChfKCIsICV1IHVudXNlZCBpbm9kZXNcbiIpLAorCQkJCWV4dDJmc19iZ19pdGFibGVfdW51c2VkKGZzLCBpKSk7CisJCWlmIChibG9ja19iaXRtYXApIHsKKwkJCWZwdXRzKF8oIiAgRnJlZSBibG9ja3M6ICIpLCBzdGRvdXQpOworCQkJcmV0dmFsID0gZXh0MmZzX2dldF9ibG9ja19iaXRtYXBfcmFuZ2UyKGZzLT5ibG9ja19tYXAsCisJCQkJIGJsa19pdHIsIGJsb2NrX25ieXRlcyA8PCAzLCBibG9ja19iaXRtYXApOworCQkJaWYgKHJldHZhbCkKKwkJCQljb21fZXJyKCJsaXN0X2Rlc2MiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSByZWFkaW5nIGJsb2NrIGJpdG1hcCIpOworCQkJZWxzZQorCQkJCXByaW50X2ZyZWUoaSwgYmxvY2tfYml0bWFwLAorCQkJCQkgICBmcy0+c3VwZXItPnNfY2x1c3RlcnNfcGVyX2dyb3VwLAorCQkJCQkgICBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaywKKwkJCQkJICAgRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpKTsKKwkJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJCQlibGtfaXRyICs9IGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXA7CisJCX0KKwkJaWYgKGlub2RlX2JpdG1hcCkgeworCQkJZnB1dHMoXygiICBGcmVlIGlub2RlczogIiksIHN0ZG91dCk7CisJCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2lub2RlX2JpdG1hcF9yYW5nZTIoZnMtPmlub2RlX21hcCwKKwkJCQkgaW5vX2l0ciwgaW5vZGVfbmJ5dGVzIDw8IDMsIGlub2RlX2JpdG1hcCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWNvbV9lcnIoImxpc3RfZGVzYyIsIHJldHZhbCwKKwkJCQkJIndoaWxlIHJlYWRpbmcgaW5vZGUgYml0bWFwIik7CisJCQllbHNlCisJCQkJcHJpbnRfZnJlZShpLCBpbm9kZV9iaXRtYXAsCisJCQkJCSAgIGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwLAorCQkJCQkgICAxLCAxKTsKKwkJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJCQlpbm9faXRyICs9IGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwOworCQl9CisJfQorCWlmIChibG9ja19iaXRtYXApCisJCWZyZWUoYmxvY2tfYml0bWFwKTsKKwlpZiAoaW5vZGVfYml0bWFwKQorCQlmcmVlKGlub2RlX2JpdG1hcCk7Cit9CisKK3N0YXRpYyB2b2lkIGxpc3RfYmFkX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgaW50IGR1bXApCit7CisJYmFkYmxvY2tzX2xpc3QJCWJiX2xpc3QgPSAwOworCWJhZGJsb2Nrc19pdGVyYXRlCWJiX2l0ZXI7CisJYmxrX3QJCQlibGs7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY29uc3QgY2hhcgkJKmhlYWRlciwgKmZtdDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2JiX2lub2RlKGZzLCAmYmJfbGlzdCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJleHQyZnNfcmVhZF9iYl9pbm9kZSIsIHJldHZhbCwgMCk7CisJCXJldHVybjsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4oYmJfbGlzdCwgJmJiX2l0ZXIpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4iLCByZXR2YWwsCisJCQkiJXMiLCBfKCJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIpKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoZHVtcCkgeworCQloZWFkZXIgPSBmbXQgPSAiJXVcbiI7CisJfSBlbHNlIHsKKwkJaGVhZGVyID0gIF8oIkJhZCBibG9ja3M6ICV1Iik7CisJCWZtdCA9ICIsICV1IjsKKwl9CisJd2hpbGUgKGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKGJiX2l0ZXIsICZibGspKSB7CisJCXByaW50ZihoZWFkZXIgPyBoZWFkZXIgOiBmbXQsIGJsayk7CisJCWhlYWRlciA9IDA7CisJfQorCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChiYl9pdGVyKTsKKwlpZiAoIWR1bXApCisJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisJZXh0MmZzX2JhZGJsb2Nrc19saXN0X2ZyZWUoYmJfbGlzdCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpqb3VybmFsX2NoZWNrc3VtX3R5cGVfc3RyKF9fdTggdHlwZSkKK3sKKwlzd2l0Y2ggKHR5cGUpIHsKKwljYXNlIEpCRDJfQ1JDMzJDX0NIS1NVTToKKwkJcmV0dXJuICJjcmMzMmMiOworCWRlZmF1bHQ6CisJCXJldHVybiAidW5rbm93biI7CisJfQorfQorCitzdGF0aWMgdm9pZCBwcmludF9pbmxpbmVfam91cm5hbF9pbmZvcm1hdGlvbihleHQyX2ZpbHN5cyBmcykKK3sKKwlqb3VybmFsX3N1cGVyYmxvY2tfdAkqanNiOworCXN0cnVjdCBleHQyX2lub2RlCWlub2RlOworCWV4dDJfZmlsZV90CQlqb3VybmFsX2ZpbGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJaW5vX3QJCQlpbm8gPSBmcy0+c3VwZXItPnNfam91cm5hbF9pbnVtOworCWNoYXIJCQlidWZbMTAyNF07CisJX191MzIJCQkqbWFza19wdHIsIG1hc2ssIG07CisJaW50CQkJaSwgaiwgc2l6ZSwgcHJpbnRlZCA9IDA7CisKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lNQUdFX0ZJTEUpCisJCXJldHVybjsKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAgJmlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiKSk7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19maWxlX29wZW4yKGZzLCBpbm8sICZpbm9kZSwgMCwgJmpvdXJuYWxfZmlsZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIikpOworCQlleGl0KDEpOworCX0KKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9yZWFkKGpvdXJuYWxfZmlsZSwgYnVmLCBzaXplb2YoYnVmKSwgMCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyIGJsb2NrIikpOworCQlleGl0KDEpOworCX0KKwlleHQyZnNfZmlsZV9jbG9zZShqb3VybmFsX2ZpbGUpOworCWpzYiA9IChqb3VybmFsX3N1cGVyYmxvY2tfdCAqKSBidWY7CisJaWYgKGJlMzJfdG9fY3B1KGpzYi0+c19oZWFkZXIuaF9tYWdpYykgIT0gSkZTX01BR0lDX05VTUJFUikgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCV8oIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisJcHJpbnRmKCIlcyIsIF8oIkpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAiKSk7CisJZm9yIChpPTAsIG1hc2tfcHRyPSZqc2ItPnNfZmVhdHVyZV9jb21wYXQ7IGkgPDM7IGkrKyxtYXNrX3B0cisrKSB7CisJCW1hc2sgPSBiZTMyX3RvX2NwdSgqbWFza19wdHIpOworCQlmb3IgKGo9MCxtPTE7IGogPCAzMjsgaisrLCBtPDw9MSkgeworCQkJaWYgKG1hc2sgJiBtKSB7CisJCQkJcHJpbnRmKCIgJXMiLCBlMnBfanJubF9mZWF0dXJlMnN0cmluZyhpLCBtKSk7CisJCQkJcHJpbnRlZCsrOworCQkJfQorCQl9CisJfQorCWlmIChwcmludGVkID09IDApCisJCXByaW50ZigiIChub25lKSIpOworCXByaW50ZigiXG4iKTsKKwlmcHV0cyhfKCJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIpLCBzdGRvdXQpOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikgJiYKKwkgICAgKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0hVR0VfRklMRV9GTCkpCisJCXNpemUgPSBpbm9kZS5pX2Jsb2NrcyAvIChmcy0+YmxvY2tzaXplIC8gMTAyNCk7CisJZWxzZQorCQlzaXplID0gaW5vZGUuaV9ibG9ja3MgPj4gMTsKKwlpZiAoc2l6ZSA8IDgxOTIpCisJCXByaW50ZigiJXVrXG4iLCBzaXplKTsKKwllbHNlCisJCXByaW50ZigiJXVNXG4iLCBzaXplID4+IDEwKTsKKwlwcmludGYoXygiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorCQkgIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisJCSAiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIiksCisJICAgICAgICh1bnNpZ25lZCBpbnQpbnRvaGwoanNiLT5zX21heGxlbiksCisJICAgICAgICh1bnNpZ25lZCBpbnQpbnRvaGwoanNiLT5zX3NlcXVlbmNlKSwKKwkgICAgICAgKHVuc2lnbmVkIGludCludG9obChqc2ItPnNfc3RhcnQpKTsKKwlpZiAoanNiLT5zX2ZlYXR1cmVfY29tcGF0ICYKKwkgICAgZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0NPTVBBVF9DSEVDS1NVTSkpCisJCXByaW50ZigiJXMiLCBfKCJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgIGNyYzMyXG4iKSk7CisJaWYgKChqc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCAmCisJICAgICBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX0ZFQVRVUkVfSU5DT01QQVRfQ1NVTV9WMykpIHx8CisJICAgIChqc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCAmCisJICAgICBleHQyZnNfY3B1X3RvX2JlMzIoSkZTX0ZFQVRVUkVfSU5DT01QQVRfQ1NVTV9WMikpKQorCQlwcmludGYoXygiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorCQkJICJKb3VybmFsIGNoZWNrc3VtOiAgICAgICAgIDB4JTA4eFxuIiksCisJCSAgICAgICBqb3VybmFsX2NoZWNrc3VtX3R5cGVfc3RyKGpzYi0+c19jaGVja3N1bV90eXBlKSwKKwkJICAgICAgIGV4dDJmc19iZTMyX3RvX2NwdShqc2ItPnNfY2hlY2tzdW0pKTsKKwlpZiAoanNiLT5zX2Vycm5vICE9IDApCisJCXByaW50ZihfKCJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iKSwKKwkJICAgICAgIChpbnQpIG50b2hsKGpzYi0+c19lcnJubykpOworfQorCitzdGF0aWMgdm9pZCBwcmludF9qb3VybmFsX2luZm9ybWF0aW9uKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJYnVmWzEwMjRdOworCWNoYXIJCXN0cls4MF07CisJdW5zaWduZWQgaW50CWksIGosIHByaW50ZWQgPSAwOworCWpvdXJuYWxfc3VwZXJibG9ja190CSpqc2I7CisJX191MzIJCQkqbWFza19wdHIsIG1hc2ssIG07CisKKwkvKiBHZXQgdGhlIGpvdXJuYWwgc3VwZXJibG9jayAqLworCWlmICgocmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywKKwkJCQkJICAgIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrICsgMSwKKwkJCQkJICAgIC0xMDI0LCBidWYpKSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2siKSk7CisJCWV4aXQoMSk7CisJfQorCWpzYiA9IChqb3VybmFsX3N1cGVyYmxvY2tfdCAqKSBidWY7CisJaWYgKChqc2ItPnNfaGVhZGVyLmhfbWFnaWMgIT0gKHVuc2lnbmVkKSBudG9obChKRlNfTUFHSUNfTlVNQkVSKSkgfHwKKwkgICAgKGpzYi0+c19oZWFkZXIuaF9ibG9ja3R5cGUgIT0KKwkgICAgICh1bnNpZ25lZCkgbnRvaGwoSkZTX1NVUEVSQkxPQ0tfVjIpKSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCV8oIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiKSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGpzYi0+c19mZWF0dXJlX2NvbXBhdCAmCisJICAgIGV4dDJmc19jcHVfdG9fYmUzMihKRlNfRkVBVFVSRV9DT01QQVRfQ0hFQ0tTVU0pKQorCQlwcmludGYoIiVzIiwgXygiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIikpOworCWlmICgoanNiLT5zX2ZlYXR1cmVfaW5jb21wYXQgJgorCSAgICAgZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjMpKSB8fAorCSAgICAoanNiLT5zX2ZlYXR1cmVfaW5jb21wYXQgJgorCSAgICAgZXh0MmZzX2NwdV90b19iZTMyKEpGU19GRUFUVVJFX0lOQ09NUEFUX0NTVU1fVjIpKSkKKwkJcHJpbnRmKF8oIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgJXNcbiIKKwkJCSAiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIpLAorCQkgICAgICAgam91cm5hbF9jaGVja3N1bV90eXBlX3N0cihqc2ItPnNfY2hlY2tzdW1fdHlwZSksCisJCSAgICAgICBleHQyZnNfYmUzMl90b19jcHUoanNiLT5zX2NoZWNrc3VtKSk7CisKKwlwcmludGYoIiVzIiwgXygiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIpKTsKKwlmb3IgKGkgPSAwLCBtYXNrX3B0ciA9ICZqc2ItPnNfZmVhdHVyZV9jb21wYXQ7IGkgPCAzOyBpKyssIG1hc2tfcHRyKyspIHsKKwkJbWFzayA9IGJlMzJfdG9fY3B1KCptYXNrX3B0cik7CisJCWZvciAoaiA9IDAsIG0gPSAxOyBqIDwgMzI7IGorKywgbSA8PD0gMSkgeworCQkJaWYgKG1hc2sgJiBtKSB7CisJCQkJcHJpbnRmKCIgJXMiLCBlMnBfanJubF9mZWF0dXJlMnN0cmluZyhpLCBtKSk7CisJCQkJcHJpbnRlZCsrOworCQkJfQorCQl9CisJfQorCisJcHJpbnRmKF8oIlxuSm91cm5hbCBibG9jayBzaXplOiAgICAgICAldVxuIgorCQkgIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKwkJICJKb3VybmFsIGZpcnN0IGJsb2NrOiAgICAgICV1XG4iCisJCSAiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKwkJICJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCisJCSAiSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAldVxuIiksCisJICAgICAgICh1bnNpZ25lZCBpbnQpbnRvaGwoanNiLT5zX2Jsb2Nrc2l6ZSksICAodW5zaWduZWQgaW50KW50b2hsKGpzYi0+c19tYXhsZW4pLAorCSAgICAgICAodW5zaWduZWQgaW50KW50b2hsKGpzYi0+c19maXJzdCksICh1bnNpZ25lZCBpbnQpbnRvaGwoanNiLT5zX3NlcXVlbmNlKSwKKwkgICAgICAgKHVuc2lnbmVkIGludCludG9obChqc2ItPnNfc3RhcnQpLCAodW5zaWduZWQgaW50KW50b2hsKGpzYi0+c19ucl91c2VycykpOworCisJZm9yIChpPTA7IGkgPCBudG9obChqc2ItPnNfbnJfdXNlcnMpOyBpKyspIHsKKwkJdXVpZF91bnBhcnNlKCZqc2ItPnNfdXNlcnNbaSoxNl0sIHN0cik7CisJCXByaW50ZihpID8gIiAgICAgICAgICAgICAgICAgICAgICAgICAgJXNcbiIKKwkJICAgICAgIDogXygiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIiksCisJCSAgICAgICBzdHIpOworCX0KK30KKworc3RhdGljIHZvaWQgcGFyc2VfZXh0ZW5kZWRfb3B0cyhjb25zdCBjaGFyICpvcHRzLCBibGs2NF90ICpzdXBlcmJsb2NrLAorCQkJCWludCAqYmxvY2tzaXplKQoreworCWNoYXIJKmJ1ZiwgKnRva2VuLCAqbmV4dCwgKnAsICphcmcsICpiYWRvcHQgPSAwOworCWludAlsZW47CisJaW50CWRvX3VzYWdlID0gMDsKKworCWxlbiA9IHN0cmxlbihvcHRzKTsKKwlidWYgPSBtYWxsb2MobGVuKzEpOworCWlmICghYnVmKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJXygiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIG9wdGlvbnMhXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCXN0cmNweShidWYsIG9wdHMpOworCWZvciAodG9rZW4gPSBidWY7IHRva2VuICYmICp0b2tlbjsgdG9rZW4gPSBuZXh0KSB7CisJCXAgPSBzdHJjaHIodG9rZW4sICcsJyk7CisJCW5leHQgPSAwOworCQlpZiAocCkgeworCQkJKnAgPSAwOworCQkJbmV4dCA9IHArMTsKKwkJfQorCQlhcmcgPSBzdHJjaHIodG9rZW4sICc9Jyk7CisJCWlmIChhcmcpIHsKKwkJCSphcmcgPSAwOworCQkJYXJnKys7CisJCX0KKwkJaWYgKHN0cmNtcCh0b2tlbiwgInN1cGVyYmxvY2siKSA9PSAwIHx8CisJCSAgICBzdHJjbXAodG9rZW4sICJzYiIpID09IDApIHsKKwkJCWlmICghYXJnKSB7CisJCQkJZG9fdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCSpzdXBlcmJsb2NrID0gc3RydG91bChhcmcsICZwLCAwKTsKKwkJCWlmICgqcCkgeworCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQlfKCJJbnZhbGlkIHN1cGVyYmxvY2sgcGFyYW1ldGVyOiAlc1xuIiksCisJCQkJCWFyZyk7CisJCQkJZG9fdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJibG9ja3NpemUiKSA9PSAwIHx8CisJCQkgICBzdHJjbXAodG9rZW4sICJicyIpID09IDApIHsKKwkJCWlmICghYXJnKSB7CisJCQkJZG9fdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCSpibG9ja3NpemUgPSBzdHJ0b3VsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIpLAorCQkJCQlhcmcpOworCQkJCWRvX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCX0gZWxzZSB7CisJCQlkb191c2FnZSsrOworCQkJYmFkb3B0ID0gdG9rZW47CisJCX0KKwl9CisJaWYgKGRvX3VzYWdlKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJcbkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuXG4iCisJCQkiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgIgorCQkJImFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorCQkJIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cblxuIgorCQkJIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorCQkJIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisJCQkiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIpLAorCQkJYmFkb3B0ID8gYmFkb3B0IDogIiIpOworCQlmcmVlKGJ1Zik7CisJCWV4aXQoMSk7CisJfQorCWZyZWUoYnVmKTsKK30KKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2ZpbHN5cwlmczsKKwlpbnQJCXByaW50X2JhZGJsb2NrcyA9IDA7CisJYmxrNjRfdAkJdXNlX3N1cGVyYmxvY2sgPSAwOworCWludAkJdXNlX2Jsb2Nrc2l6ZSA9IDA7CisJaW50CQlpbWFnZV9kdW1wID0gMDsKKwlpbnQJCWZvcmNlID0gMDsKKwlpbnQJCWZsYWdzOworCWludAkJaGVhZGVyX29ubHkgPSAwOworCWludAkJYzsKKwlpbnQJCWdycF9vbmx5ID0gMDsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlhZGRfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCWZwcmludGYgKHN0ZGVyciwgImR1bXBlMmZzICVzICglcylcbiIsIEUyRlNQUk9HU19WRVJTSU9OLAorCQkgRTJGU1BST0dTX0RBVEUpOworCWlmIChhcmdjICYmICphcmd2KQorCQlwcm9ncmFtX25hbWUgPSAqYXJndjsKKworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiYmZnaGl4Vm86IikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnYic6CisJCQlwcmludF9iYWRibG9ja3MrKzsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWZvcmNlKys7CisJCQlicmVhazsKKwkJY2FzZSAnZyc6CisJCQlncnBfb25seSsrOworCQkJYnJlYWs7CisJCWNhc2UgJ2gnOgorCQkJaGVhZGVyX29ubHkrKzsKKwkJCWJyZWFrOworCQljYXNlICdpJzoKKwkJCWltYWdlX2R1bXArKzsKKwkJCWJyZWFrOworCQljYXNlICdvJzoKKwkJCXBhcnNlX2V4dGVuZGVkX29wdHMob3B0YXJnLCAmdXNlX3N1cGVyYmxvY2ssCisJCQkJCSAgICAmdXNlX2Jsb2Nrc2l6ZSk7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQkvKiBQcmludCB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCAqLworCQkJZnByaW50ZihzdGRlcnIsIF8oIlx0VXNpbmcgJXNcbiIpLAorCQkJCWVycm9yX21lc3NhZ2UoRVhUMl9FVF9CQVNFKSk7CisJCQlleGl0KDApOworCQljYXNlICd4JzoKKwkJCWhleF9mb3JtYXQrKzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UoKTsKKwkJfQorCX0KKwlpZiAob3B0aW5kICE9IGFyZ2MgLSAxKSB7CisJCXVzYWdlKCk7CisJCWV4aXQoMSk7CisJfQorCWRldmljZV9uYW1lID0gYXJndltvcHRpbmQrK107CisJZmxhZ3MgPSBFWFQyX0ZMQUdfSk9VUk5BTF9ERVZfT0sgfCBFWFQyX0ZMQUdfU09GVFNVUFBfRkVBVFVSRVMgfCBFWFQyX0ZMQUdfNjRCSVRTOworCWlmIChmb3JjZSkKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHX0ZPUkNFOworCWlmIChpbWFnZV9kdW1wKQorCQlmbGFncyB8PSBFWFQyX0ZMQUdfSU1BR0VfRklMRTsKK3RyeV9vcGVuX2FnYWluOgorCWlmICh1c2Vfc3VwZXJibG9jayAmJiAhdXNlX2Jsb2Nrc2l6ZSkgeworCQlmb3IgKHVzZV9ibG9ja3NpemUgPSBFWFQyX01JTl9CTE9DS19TSVpFOworCQkgICAgIHVzZV9ibG9ja3NpemUgPD0gRVhUMl9NQVhfQkxPQ0tfU0laRTsKKwkJICAgICB1c2VfYmxvY2tzaXplICo9IDIpIHsKKwkJCXJldHZhbCA9IGV4dDJmc19vcGVuIChkZXZpY2VfbmFtZSwgZmxhZ3MsCisJCQkJCSAgICAgIHVzZV9zdXBlcmJsb2NrLAorCQkJCQkgICAgICB1c2VfYmxvY2tzaXplLCB1bml4X2lvX21hbmFnZXIsCisJCQkJCSAgICAgICZmcyk7CisJCQlpZiAoIXJldHZhbCkKKwkJCQlicmVhazsKKwkJfQorCX0gZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfb3BlbiAoZGV2aWNlX25hbWUsIGZsYWdzLCB1c2Vfc3VwZXJibG9jaywKKwkJCQkgICAgICB1c2VfYmxvY2tzaXplLCB1bml4X2lvX21hbmFnZXIsICZmcyk7CisJaWYgKHJldHZhbCAmJiAhKGZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykpIHsKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJZ290byB0cnlfb3Blbl9hZ2FpbjsKKwl9CisJaWYgKCFyZXR2YWwgJiYgKGZzLT5mbGFncyAmIEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlMpKQorCQlwcmludGYoIiVzIiwgXygiXG4qKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGZpbGVzeXN0ZW0hICBSdW4gZTJmc2NrIG5vdyFcblxuIikpOworCWZsYWdzIHw9IEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyIChwcm9ncmFtX25hbWUsIHJldHZhbCwgXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwKKwkJCSBkZXZpY2VfbmFtZSk7CisJCXByaW50ZigiJXMiLCBfKCJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIpKTsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9NQUdJQykKKwkJCWNoZWNrX3BsYXVzaWJpbGl0eShkZXZpY2VfbmFtZSwgQ0hFQ0tfRlNfRVhJU1QsIE5VTEwpOworCQlleGl0ICgxKTsKKwl9CisJZnMtPmRlZmF1bHRfYml0bWFwX3R5cGUgPSBFWFQyRlNfQk1BUDY0X1JCVFJFRTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpCisJCWJsb2NrczY0ID0gMTsKKwlpZiAocHJpbnRfYmFkYmxvY2tzKSB7CisJCWxpc3RfYmFkX2Jsb2NrcyhmcywgMSk7CisJfSBlbHNlIHsKKwkJaWYgKGdycF9vbmx5KQorCQkJZ290byBqdXN0X2Rlc2NyaXB0b3JzOworCQlsaXN0X3N1cGVyIChmcy0+c3VwZXIpOworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfZGV2KGZzLT5zdXBlcikpIHsKKwkJCXByaW50X2pvdXJuYWxfaW5mb3JtYXRpb24oZnMpOworCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJCWV4aXQoMCk7CisJCX0KKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsKGZzLT5zdXBlcikgJiYKKwkJICAgIChmcy0+c3VwZXItPnNfam91cm5hbF9pbnVtICE9IDApKQorCQkJcHJpbnRfaW5saW5lX2pvdXJuYWxfaW5mb3JtYXRpb24oZnMpOworCQlsaXN0X2JhZF9ibG9ja3MoZnMsIDApOworCQlpZiAoaGVhZGVyX29ubHkpIHsKKwkJCWV4dDJmc19jbG9zZV9mcmVlKCZmcyk7CisJCQlleGl0ICgwKTsKKwkJfQorCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7Cit0cnlfYml0bWFwc19hZ2FpbjoKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfYml0bWFwcyAoZnMpOworCQlpZiAocmV0dmFsICYmICEoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykpIHsKKwkJCWZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQkJZ290byB0cnlfYml0bWFwc19hZ2FpbjsKKwkJfQorCQlpZiAoIXJldHZhbCAmJiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUykpCisJCQlwcmludGYoIiVzIiwgXygiXG4qKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcblxuIikpOworanVzdF9kZXNjcmlwdG9yczoKKwkJbGlzdF9kZXNjKGZzLCBncnBfb25seSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCXByaW50ZihfKCJcbiVzOiAlczogZXJyb3IgcmVhZGluZyBiaXRtYXBzOiAlc1xuIiksCisJCQkgICAgICAgcHJvZ3JhbV9uYW1lLCBkZXZpY2VfbmFtZSwKKwkJCSAgICAgICBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQl9CisJfQorCWV4dDJmc19jbG9zZV9mcmVlKCZmcyk7CisJcmVtb3ZlX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKwlleGl0ICgwKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UyZnJlZWZyYWcuOC5pbiBiL2UyZnNwcm9ncy9taXNjL2UyZnJlZWZyYWcuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjRiZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZTJmcmVlZnJhZy44LmluCkBAIC0wLDAgKzEsOTYgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuVEggRTJGUkVFRlJBRyA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitlMmZyZWVmcmFnIFwtIHJlcG9ydCBmcmVlIHNwYWNlIGZyYWdtZW50YXRpb24gaW5mb3JtYXRpb24KKy5TSCBTWU5PUFNJUworLkIgZTJmcmVlZnJhZworWworLkIgXC1jIGNodW5rX2tiCitdCitbCisuQiBcLWgKK10KKy5CIGZpbGVzeXMKKworLlNIIERFU0NSSVBUSU9OCisuQiBlMmZyZWVmcmFnCitpcyB1c2VkIHRvIHJlcG9ydCBmcmVlIHNwYWNlIGZyYWdtZW50YXRpb24gb24gZXh0Mi8zLzQgZmlsZSBzeXN0ZW1zLgorLkkgZmlsZXN5cworaXMgdGhlIGZpbGVzeXN0ZW0gZGV2aWNlIG5hbWUgKGUuZy4KKy5JUiAvZGV2L2hkYzEgIiwgIiAvZGV2L21kMCApLgorVGhlCisuQiBlMmZyZWVmcmFnCitwcm9ncmFtIHdpbGwgc2NhbiB0aGUgYmxvY2sgYml0bWFwIGluZm9ybWF0aW9uIHRvIGNoZWNrIGhvdyBtYW55IGZyZWUgYmxvY2tzCithcmUgcHJlc2VudCBhcyBjb250aWd1b3VzIGFuZCBhbGlnbmVkIGZyZWUgc3BhY2UuIFRoZSBwZXJjZW50YWdlIG9mIGNvbnRpZ3VvdXMKK2ZyZWUgYmxvY2tzIG9mIHNpemUgYW5kIG9mIGFsaWdubWVudAorLklSIGNodW5rX2tiCitpcyByZXBvcnRlZC4gIEl0IGFsc28gZGlzcGxheXMgdGhlIG1pbmltdW0vbWF4aW11bS9hdmVyYWdlIGZyZWUgY2h1bmsgc2l6ZSBpbgordGhlIGZpbGVzeXN0ZW0sIGFsb25nIHdpdGggYSBoaXN0b2dyYW0gb2YgYWxsIGZyZWUgY2h1bmtzLiAgVGhpcyBpbmZvcm1hdGlvbgorY2FuIGJlIHVzZWQgdG8gZ2F1Z2UgdGhlIGxldmVsIG9mIGZyZWUgc3BhY2UgZnJhZ21lbnRhdGlvbiBpbiB0aGUgZmlsZXN5c3RlbS4KKy5TSCBPUFRJT05TCisuVFAKKy5CSSBcLWMgIiBjaHVua19rYiIKK0lmIGEgY2h1bmsgc2l6ZSBpcyBzcGVjaWZpZWQsIHRoZW4KKy5CIGUyZnJlZWZyYWcKK3dpbGwgcHJpbnQgaG93IG1hbnkgZnJlZSBjaHVua3Mgb2Ygc2l6ZQorLkkgY2h1bmtfa2IKK2FyZSBhdmFpbGFibGUgaW4gdW5pdHMgb2Yga2lsb2J5dGVzIChLYikuICBUaGUgY2h1bmsgc2l6ZSBtdXN0IGJlIGEKK3Bvd2VyIG9mIHR3byBhbmQgYmUgbGFyZ2VyIHRoYW4gZmlsZXN5c3RlbSBibG9jayBzaXplLgorLlRQCisuQkkgXC1oCitQcmludCB0aGUgdXNhZ2Ugb2YgdGhlIHByb2dyYW0uCisuU0ggRVhBTVBMRQorIyBlMmZyZWVmcmFnIC9kZXYvdmdyb290L2x2aG9tZQorLmJyCitEZXZpY2U6IC9kZXYvdmdyb290L2x2aG9tZQorLmJyCitCbG9ja3NpemU6IDQwOTYgYnl0ZXMKKy5icgorVG90YWwgYmxvY2tzOiAxNTA0MDg1CisuYnIKK0ZyZWUgYmxvY2tzOiAyOTI5OTUgKDE5LjUlKQorLmJyCisKK01pbi4gZnJlZSBleHRlbnQ6IDQgS0IKKy5icgorTWF4LiBmcmVlIGV4dGVudDogMjQwMDggS0IKKy5icgorQXZnLiBmcmVlIGV4dGVudDogMjUyIEtCCisuYnIKKworSElTVE9HUkFNIE9GIEZSRUUgRVhURU5UIFNJWkVTOgorLmJyCitFeHRlbnQgU2l6ZSBSYW5nZSA6ICAgRnJlZSBleHRlbnRzICAgRnJlZSBCbG9ja3MgIFBlcmNlbnQKKy5icgorICAgIDRLLi4uICAgIDhLLSA6ICAgICAgICAgICA3MDQgICAgICAgICAgIDcwNCAgICAgMC4yJQorLmJyCisgICAgOEsuLi4gICAxNkstIDogICAgICAgICAgIDgxMCAgICAgICAgICAxOTc5ICAgICAwLjclCisuYnIKKyAgIDE2Sy4uLiAgIDMySy0gOiAgICAgICAgICAgODQzICAgICAgICAgIDQ0NjcgICAgIDEuNSUKKy5icgorICAgMzJLLi4uICAgNjRLLSA6ICAgICAgICAgICA1NzkgICAgICAgICAgNjI2MyAgICAgMi4xJQorLmJyCisgICA2NEsuLi4gIDEyOEstIDogICAgICAgICAgIDQ5MyAgICAgICAgIDExMDY3ICAgICAzLjglCisuYnIKKyAgMTI4Sy4uLiAgMjU2Sy0gOiAgICAgICAgICAgMzk0ICAgICAgICAgMTgwOTcgICAgIDYuMiUKKy5icgorICAyNTZLLi4uICA1MTJLLSA6ICAgICAgICAgICAyODEgICAgICAgICAyNTQ3NyAgICAgOC43JQorLmJyCisgIDUxMksuLi4gMTAyNEstIDogICAgICAgICAgIDI1MyAgICAgICAgIDQ0OTE0ICAgIDE1LjMlCisuYnIKKyAgICAxTS4uLiAgICAyTS0gOiAgICAgICAgICAgMTQzICAgICAgICAgNTE4OTcgICAgMTcuNyUKKy5icgorICAgIDJNLi4uICAgIDRNLSA6ICAgICAgICAgICAgNzMgICAgICAgICA1MDY4MyAgICAxNy4zJQorLmJyCisgICAgNE0uLi4gICAgOE0tIDogICAgICAgICAgICAzNyAgICAgICAgIDUyNDE3ICAgIDE3LjklCisuYnIKKyAgICA4TS4uLiAgIDE2TS0gOiAgICAgICAgICAgICA3ICAgICAgICAgMTkwMjggICAgIDYuNSUKKy5icgorICAgMTZNLi4uICAgMzJNLSA6ICAgICAgICAgICAgIDEgICAgICAgICAgNjAwMiAgICAgMi4wJQorLlNIIEFVVEhPUgorVGhpcyB2ZXJzaW9uIG9mIGUyZnJlZWZyYWcgd2FzIHdyaXR0ZW4gYnkgUnVwZXNoIFRoYWthcmUsIGFuZCBtb2RpZmllZCBieQorQW5kcmVhcyBEaWxnZXIgPGFkaWxnZXJAc3VuLmNvbT4sIGFuZCBLYWxwYWsgU2hhaC4KKy5TSCBTRUUgQUxTTworLklSIGRlYnVnZnMgKDgpLAorLklSIGR1bXBlMmZzICg4KSwKKy5JUiBlMmZzY2sgKDgpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9lMmZyZWVmcmFnLmMgYi9lMmZzcHJvZ3MvbWlzYy9lMmZyZWVmcmFnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBhY2I3ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UyZnJlZWZyYWcuYwpAQCAtMCwwICsxLDMzNyBAQAorLyoKKyAqIGUyZnJlZWZyYWcgLSByZXBvcnQgZmlsZXN5c3RlbSBmcmVlLXNwYWNlIGZyYWdtZW50YXRpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLgorICoKKyAqIEF1dGhvcjogUnVwZXNoIFRoYWthcmUgPHJ1cGVzaEBzdW4uY29tPgorICogICAgICAgICBBbmRyZWFzIERpbGdlciA8YWRpbGdlckBzdW4uY29tPgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMi4KKyAqICVFbmQtSGVhZGVyJQorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJlMmZyZWVmcmFnLmgiCisKK3N0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnByb2cpCit7CisJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgWy1jIGNodW5rc2l6ZSBpbiBrYl0gWy1oXSAiCisJCSJkZXZpY2VfbmFtZVxuIiwgcHJvZyk7CisjaWZuZGVmIERFQlVHRlMKKwlleGl0KDEpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQgdWxfbG9nMih1bnNpZ25lZCBsb25nIGFyZykKK3sKKyAgICAgICAgaW50ICAgICBsID0gMDsKKworICAgICAgICBhcmcgPj49IDE7CisgICAgICAgIHdoaWxlIChhcmcpIHsKKyAgICAgICAgICAgICAgICBsKys7CisgICAgICAgICAgICAgICAgYXJnID4+PSAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiBsOworfQorCitzdGF0aWMgdm9pZCBpbml0X2NodW5rX2luZm8oZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBjaHVua19pbmZvICppbmZvKQoreworCWludCBpOworCisJaW5mby0+YmxvY2tzaXplX2JpdHMgPSB1bF9sb2cyKCh1bnNpZ25lZCBsb25nKWZzLT5ibG9ja3NpemUpOworCWlmIChpbmZvLT5jaHVua2J5dGVzKSB7CisJCWluZm8tPmNodW5rYml0cyA9IHVsX2xvZzIoaW5mby0+Y2h1bmtieXRlcyk7CisJCWluZm8tPmJsa3NfaW5fY2h1bmsgPSBpbmZvLT5jaHVua2J5dGVzID4+IGluZm8tPmJsb2Nrc2l6ZV9iaXRzOworCX0gZWxzZSB7CisJCWluZm8tPmNodW5rYml0cyA9IHVsX2xvZzIoREVGQVVMVF9DSFVOS1NJWkUpOworCQlpbmZvLT5ibGtzX2luX2NodW5rID0gREVGQVVMVF9DSFVOS1NJWkUgPj4gaW5mby0+YmxvY2tzaXplX2JpdHM7CisJfQorCisJaW5mby0+bWluID0gfjBVTDsKKwlpbmZvLT5tYXggPSBpbmZvLT5hdmcgPSAwOworCWluZm8tPnJlYWxfZnJlZV9jaHVua3MgPSAwOworCisJZm9yIChpID0gMDsgaSA8IE1BWF9ISVNUOyBpKyspIHsKKwkJaW5mby0+aGlzdG9ncmFtLmZjX2NodW5rc1tpXSA9IDA7CisJCWluZm8tPmhpc3RvZ3JhbS5mY19ibG9ja3NbaV0gPSAwOworCX0KK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2NodW5rX3N0YXRzKHN0cnVjdCBjaHVua19pbmZvICppbmZvLAorCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgY2h1bmtfc2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIGlkeDsKKworCWlkeCA9IHVsX2xvZzIoY2h1bmtfc2l6ZSkgKyAxOworCWlmIChpZHggPj0gTUFYX0hJU1QpCisJCWlkeCA9IE1BWF9ISVNULTE7CisJaW5mby0+aGlzdG9ncmFtLmZjX2NodW5rc1tpZHhdKys7CisJaW5mby0+aGlzdG9ncmFtLmZjX2Jsb2Nrc1tpZHhdICs9IGNodW5rX3NpemU7CisKKwlpZiAoY2h1bmtfc2l6ZSA+IGluZm8tPm1heCkKKwkJaW5mby0+bWF4ID0gY2h1bmtfc2l6ZTsKKwlpZiAoY2h1bmtfc2l6ZSA8IGluZm8tPm1pbikKKwkJaW5mby0+bWluID0gY2h1bmtfc2l6ZTsKKwlpbmZvLT5hdmcgKz0gY2h1bmtfc2l6ZTsKKwlpbmZvLT5yZWFsX2ZyZWVfY2h1bmtzKys7Cit9CisKK3N0YXRpYyB2b2lkIHNjYW5fYmxvY2tfYml0bWFwKGV4dDJfZmlsc3lzIGZzLCBzdHJ1Y3QgY2h1bmtfaW5mbyAqaW5mbykKK3sKKwl1bnNpZ25lZCBsb25nIGxvbmcgYmxvY2tzX2NvdW50ID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCXVuc2lnbmVkIGxvbmcgbG9uZyBjaHVua3MgPSAoYmxvY2tzX2NvdW50ICsgaW5mby0+Ymxrc19pbl9jaHVuaykgPj4KKwkJCQkoaW5mby0+Y2h1bmtiaXRzIC0gaW5mby0+YmxvY2tzaXplX2JpdHMpOworCXVuc2lnbmVkIGxvbmcgbG9uZyBjaHVua19udW07CisJdW5zaWduZWQgbG9uZyBsYXN0X2NodW5rX3NpemUgPSAwOworCXVuc2lnbmVkIGxvbmcgbG9uZyBjaHVua19zdGFydF9ibGsgPSAwOworCWludCB1c2VkOworCisJZm9yIChjaHVua19udW0gPSAwOyBjaHVua19udW0gPCBjaHVua3M7IGNodW5rX251bSsrKSB7CisJCXVuc2lnbmVkIGxvbmcgbG9uZyBibGssIG51bV9ibGtzOworCQlpbnQgY2h1bmtfZnJlZTsKKworCQkvKiBMYXN0IGNodW5rIG1heSBiZSBzbWFsbGVyICovCisJCWlmIChjaHVua19zdGFydF9ibGsgKyBpbmZvLT5ibGtzX2luX2NodW5rID4gYmxvY2tzX2NvdW50KQorCQkJbnVtX2Jsa3MgPSBibG9ja3NfY291bnQgLSBjaHVua19zdGFydF9ibGs7CisJCWVsc2UKKwkJCW51bV9ibGtzID0gaW5mby0+Ymxrc19pbl9jaHVuazsKKworCQljaHVua19mcmVlID0gMDsKKworCQkvKiBJbml0aWFsaXplIHN0YXJ0aW5nIGJsb2NrIGZvciBmaXJzdCBjaHVuayBjb3JyZWN0bHkgZWxzZQorCQkgKiB0aGVyZSBpcyBhIHNlZ2ZhdWx0IHdoZW4gYmxvY2tzaXplID0gMTAyNCBpbiB3aGljaCBjYXNlCisJCSAqIGJsb2NrX21hcC0+c3RhcnQgPSAxICovCisJCWZvciAoYmxrID0gMDsgYmxrIDwgbnVtX2Jsa3M7IGJsaysrLCBjaHVua19zdGFydF9ibGsrKykgeworCQkJaWYgKGNodW5rX251bSA9PSAwICYmIGJsayA9PSAwKSB7CisJCQkJYmxrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJCQkJY2h1bmtfc3RhcnRfYmxrID0gYmxrOworCQkJfQorCQkJdXNlZCA9IGV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLAorCQkJCWNodW5rX3N0YXJ0X2JsayA+PiBmcy0+Y2x1c3Rlcl9yYXRpb19iaXRzKTsKKwkJCWlmICghdXNlZCkgeworCQkJCWxhc3RfY2h1bmtfc2l6ZSsrOworCQkJCWNodW5rX2ZyZWUrKzsKKwkJCX0KKworCQkJaWYgKHVzZWQgJiYgbGFzdF9jaHVua19zaXplICE9IDApIHsKKwkJCQl1cGRhdGVfY2h1bmtfc3RhdHMoaW5mbywgbGFzdF9jaHVua19zaXplKTsKKwkJCQlsYXN0X2NodW5rX3NpemUgPSAwOworCQkJfQorCQl9CisKKwkJaWYgKGNodW5rX2ZyZWUgPT0gaW5mby0+Ymxrc19pbl9jaHVuaykKKwkJCWluZm8tPmZyZWVfY2h1bmtzKys7CisJfQorCWlmIChsYXN0X2NodW5rX3NpemUgIT0gMCkKKwkJdXBkYXRlX2NodW5rX3N0YXRzKGluZm8sIGxhc3RfY2h1bmtfc2l6ZSk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZ2V0X2NodW5rX2luZm8oZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBjaHVua19pbmZvICppbmZvLAorCQkJCUZJTEUgKmYpCit7CisJdW5zaWduZWQgbG9uZyB0b3RhbF9jaHVua3M7CisJY29uc3QgY2hhciAqdW5pdHAgPSAiS01HVFBFWlkiOworCWludCB1bml0cyA9IDEwOworCXVuc2lnbmVkIGxvbmcgc3RhcnQgPSAwLCBlbmQ7CisJaW50IGksIHJldHZhbCA9IDA7CisKKwlzY2FuX2Jsb2NrX2JpdG1hcChmcywgaW5mbyk7CisKKwlmcHJpbnRmKGYsICJUb3RhbCBibG9ja3M6ICVsbHVcbkZyZWUgYmxvY2tzOiAldSAoJTAuMWYlJSlcbiIsCisJCWV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSwgZnMtPnN1cGVyLT5zX2ZyZWVfYmxvY2tzX2NvdW50LAorCQkoZG91YmxlKWZzLT5zdXBlci0+c19mcmVlX2Jsb2Nrc19jb3VudCAqIDEwMCAvCisJCWV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSk7CisKKwlpZiAoaW5mby0+Y2h1bmtieXRlcykgeworCQlmcHJpbnRmKGYsICJcbkNodW5rc2l6ZTogJWx1IGJ5dGVzICgldSBibG9ja3MpXG4iLAorCQkJaW5mby0+Y2h1bmtieXRlcywgaW5mby0+Ymxrc19pbl9jaHVuayk7CisJCXRvdGFsX2NodW5rcyA9IChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgKworCQkJCWluZm8tPmJsa3NfaW5fY2h1bmspID4+CisJCQkoaW5mby0+Y2h1bmtiaXRzIC0gaW5mby0+YmxvY2tzaXplX2JpdHMpOworCQlmcHJpbnRmKGYsICJUb3RhbCBjaHVua3M6ICVsdVxuRnJlZSBjaHVua3M6ICVsdSAoJTAuMWYlJSlcbiIsCisJCQl0b3RhbF9jaHVua3MsIGluZm8tPmZyZWVfY2h1bmtzLAorCQkJKGRvdWJsZSlpbmZvLT5mcmVlX2NodW5rcyAqIDEwMCAvIHRvdGFsX2NodW5rcyk7CisJfQorCisJLyogRGlzcGxheSBjaHVuayBpbmZvcm1hdGlvbiBpbiBLQiAqLworCWlmIChpbmZvLT5yZWFsX2ZyZWVfY2h1bmtzKSB7CisJCXVuc2lnbmVkIGludCBzY2FsZSA9IGZzLT5ibG9ja3NpemUgPj4gMTA7CisJCWluZm8tPm1pbiA9IGluZm8tPm1pbiAqIHNjYWxlOworCQlpbmZvLT5tYXggPSBpbmZvLT5tYXggKiBzY2FsZTsKKwkJaW5mby0+YXZnID0gaW5mby0+YXZnIC8gaW5mby0+cmVhbF9mcmVlX2NodW5rcyAqIHNjYWxlOworCX0gZWxzZSB7CisJCWluZm8tPm1pbiA9IDA7CisJfQorCisJZnByaW50ZihmLCAiXG5NaW4uIGZyZWUgZXh0ZW50OiAlbHUgS0IgXG5NYXguIGZyZWUgZXh0ZW50OiAlbHUgS0JcbiIKKwkJIkF2Zy4gZnJlZSBleHRlbnQ6ICVsdSBLQlxuIiwgaW5mby0+bWluLCBpbmZvLT5tYXgsIGluZm8tPmF2Zyk7CisJZnByaW50ZihmLCAiTnVtLiBmcmVlIGV4dGVudDogJWx1XG4iLCBpbmZvLT5yZWFsX2ZyZWVfY2h1bmtzKTsKKworCWZwcmludGYoZiwgIlxuSElTVE9HUkFNIE9GIEZSRUUgRVhURU5UIFNJWkVTOlxuIik7CisJZnByaW50ZihmLCAiJXMgOiAgJTEycyAgJTEycyAgJTdzXG4iLCAiRXh0ZW50IFNpemUgUmFuZ2UiLAorCQkiRnJlZSBleHRlbnRzIiwgIkZyZWUgQmxvY2tzIiwgIlBlcmNlbnQiKTsKKwlmb3IgKGkgPSAwOyBpIDwgTUFYX0hJU1Q7IGkrKykgeworCQllbmQgPSAxIDw8IChpICsgaW5mby0+YmxvY2tzaXplX2JpdHMgLSB1bml0cyk7CisJCWlmIChpbmZvLT5oaXN0b2dyYW0uZmNfY2h1bmtzW2ldICE9IDApIHsKKwkJCWNoYXIgZW5kX3N0clszMl07CisKKwkJCXNwcmludGYoZW5kX3N0ciwgIiU1bHUlYy0iLCBlbmQsICp1bml0cCk7CisJCQlpZiAoaSA9PSBNQVhfSElTVC0xKQorCQkJCXN0cmNweShlbmRfc3RyLCAibWF4ICIpOworCQkJZnByaW50ZihmLCAiJTVsdSVjLi4uJTdzICA6ICAlMTJsdSAgJTEybHUgICU2LjJmJSVcbiIsCisJCQkJc3RhcnQsICp1bml0cCwgZW5kX3N0ciwKKwkJCQlpbmZvLT5oaXN0b2dyYW0uZmNfY2h1bmtzW2ldLAorCQkJCWluZm8tPmhpc3RvZ3JhbS5mY19ibG9ja3NbaV0sCisJCQkJKGRvdWJsZSlpbmZvLT5oaXN0b2dyYW0uZmNfYmxvY2tzW2ldICogMTAwIC8KKwkJCQlmcy0+c3VwZXItPnNfZnJlZV9ibG9ja3NfY291bnQpOworCQl9CisJCXN0YXJ0ID0gZW5kOworCQlpZiAoc3RhcnQgPT0gMTw8MTApIHsKKwkJCXN0YXJ0ID0gMTsKKwkJCXVuaXRzICs9IDEwOworCQkJdW5pdHArKzsKKwkJfQorCX0KKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIGNsb3NlX2RldmljZShjaGFyICpkZXZpY2VfbmFtZSwgZXh0Ml9maWxzeXMgZnMpCit7CisJaW50IHJldHZhbCA9IGV4dDJmc19jbG9zZV9mcmVlKCZmcyk7CisKKwlpZiAocmV0dmFsKQorCQljb21fZXJyKGRldmljZV9uYW1lLCByZXR2YWwsICJ3aGlsZSBjbG9zaW5nIHRoZSBmaWxlc3lzdGVtLlxuIik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RfaW5mbyhleHQyX2ZpbHN5cyBmcywgc3RydWN0IGNodW5rX2luZm8gKmNodW5rX2luZm8sIEZJTEUgKmYpCit7CisJdW5zaWduZWQgaW50IHJldHZhbCA9IDA7CisKKwlmcHJpbnRmKGYsICJEZXZpY2U6ICVzXG4iLCBmcy0+ZGV2aWNlX25hbWUpOworCWZwcmludGYoZiwgIkJsb2Nrc2l6ZTogJXUgYnl0ZXNcbiIsIGZzLT5ibG9ja3NpemUpOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoZnMtPmRldmljZV9uYW1lLCByZXR2YWwsICJ3aGlsZSByZWFkaW5nIGJsb2NrIGJpdG1hcCIpOworCQljbG9zZV9kZXZpY2UoZnMtPmRldmljZV9uYW1lLCBmcyk7CisJCWV4aXQoMSk7CisJfQorCisJaW5pdF9jaHVua19pbmZvKGZzLCBjaHVua19pbmZvKTsKKworCXJldHZhbCA9IGdldF9jaHVua19pbmZvKGZzLCBjaHVua19pbmZvLCBmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoZnMtPmRldmljZV9uYW1lLCByZXR2YWwsICJ3aGlsZSBjb2xsZWN0aW5nIGNodW5rIGluZm8iKTsKKyAgICAgICAgICAgICAgICBjbG9zZV9kZXZpY2UoZnMtPmRldmljZV9uYW1lLCBmcyk7CisJCWV4aXQoMSk7CisJfQorfQorCisjaWZuZGVmIERFQlVHRlMKK3N0YXRpYyB2b2lkIG9wZW5fZGV2aWNlKGNoYXIgKmRldmljZV9uYW1lLCBleHQyX2ZpbHN5cyAqZnMpCit7CisJaW50IHJldHZhbDsKKwlpbnQgZmxhZyA9IEVYVDJfRkxBR19GT1JDRSB8IEVYVDJfRkxBR182NEJJVFM7CisKKwlyZXR2YWwgPSBleHQyZnNfb3BlbihkZXZpY2VfbmFtZSwgZmxhZywgMCwgMCwgdW5peF9pb19tYW5hZ2VyLCBmcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGRldmljZV9uYW1lLCByZXR2YWwsICJ3aGlsZSBvcGVuaW5nIGZpbGVzeXN0ZW0iKTsKKwkJZXhpdCgxKTsKKwl9CisJKCpmcyktPmRlZmF1bHRfYml0bWFwX3R5cGUgPSBFWFQyRlNfQk1BUDY0X1JCVFJFRTsKK30KKyNlbmRpZgorCisjaWZkZWYgREVCVUdGUworI2luY2x1ZGUgImRlYnVnZnMuaCIKKwordm9pZCBkb19mcmVlZnJhZyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisjZWxzZQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyNlbmRpZgoreworCXN0cnVjdCBjaHVua19pbmZvIGNodW5rX2luZm87CisJZXh0Ml9maWxzeXMgZnMgPSBOVUxMOworCWNoYXIgKnByb2duYW1lOworCWNoYXIgKmVuZDsKKwlpbnQgYzsKKworI2lmZGVmIERFQlVHRlMKKwlpZiAoY2hlY2tfZnNfb3Blbihhcmd2WzBdKSkKKwkJcmV0dXJuOworCXJlc2V0X2dldG9wdCgpOworI2Vsc2UKKwljaGFyICpkZXZpY2VfbmFtZTsKKworCWFkZF9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisjZW5kaWYKKwlwcm9nbmFtZSA9IGFyZ3ZbMF07CisJbWVtc2V0KCZjaHVua19pbmZvLCAwLCBzaXplb2YoY2h1bmtfaW5mbykpOworCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJjOmgiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdjJzoKKwkJCWNodW5rX2luZm8uY2h1bmtieXRlcyA9IHN0cnRvdWxsKG9wdGFyZywgJmVuZCwgMCk7CisJCQlpZiAoKmVuZCAhPSAnXDAnKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlczogYmFkIGNodW5rIHNpemUgJyVzJ1xuIiwKKwkJCQkJcHJvZ25hbWUsIG9wdGFyZyk7CisJCQkJdXNhZ2UocHJvZ25hbWUpOworCQkJfQorCQkJaWYgKGNodW5rX2luZm8uY2h1bmtieXRlcyAmCisJCQkgICAgKGNodW5rX2luZm8uY2h1bmtieXRlcyAtIDEpKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlczogY2h1bmsgc2l6ZSBtdXN0IGJlIGEgIgorCQkJCQkicG93ZXIgb2YgMi5cbiIsIGFyZ3ZbMF0pOworCQkJCXVzYWdlKHByb2duYW1lKTsKKwkJCX0KKwkJCWNodW5rX2luZm8uY2h1bmtieXRlcyAqPSAxMDI0OworCQkJYnJlYWs7CisJCWNhc2UgJ2gnOgorCQlkZWZhdWx0OgorCQkJdXNhZ2UocHJvZ25hbWUpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKyNpZm5kZWYgREVCVUdGUworCWlmIChvcHRpbmQgPT0gYXJnYykgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBtaXNzaW5nIGRldmljZSBuYW1lLlxuIiwgcHJvZ25hbWUpOworCQl1c2FnZShwcm9nbmFtZSk7CisJfQorCisJZGV2aWNlX25hbWUgPSBhcmd2W29wdGluZF07CisKKwlvcGVuX2RldmljZShkZXZpY2VfbmFtZSwgJmZzKTsKKyNlbHNlCisJZnMgPSBjdXJyZW50X2ZzOworI2VuZGlmCisKKwlpZiAoY2h1bmtfaW5mby5jaHVua2J5dGVzICYmIChjaHVua19pbmZvLmNodW5rYnl0ZXMgPCBmcy0+YmxvY2tzaXplKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBjaHVua3NpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgIgorCQkJInRvIGZpbGVzeXN0ZW0gYmxvY2tzaXplLlxuIiwgcHJvZ25hbWUpOworCQlleGl0KDEpOworCX0KKwljb2xsZWN0X2luZm8oZnMsICZjaHVua19pbmZvLCBzdGRvdXQpOworI2lmbmRlZiBERUJVR0ZTCisJY2xvc2VfZGV2aWNlKGRldmljZV9uYW1lLCBmcyk7CisKKwlyZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZTJmcmVlZnJhZy5oIGIvZTJmc3Byb2dzL21pc2MvZTJmcmVlZnJhZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDFlZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9lMmZyZWVmcmFnLmgKQEAgLTAsMCArMSwyMCBAQAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjZGVmaW5lIERFRkFVTFRfQ0hVTktTSVpFICgxMDI0KjEwMjQpCisKKyNkZWZpbmUgTUFYX0hJU1QJMzIKK3N0cnVjdCBmcmVlX2NodW5rX2hpc3RvZ3JhbSB7CisJdW5zaWduZWQgbG9uZyBmY19jaHVua3NbTUFYX0hJU1RdOworCXVuc2lnbmVkIGxvbmcgZmNfYmxvY2tzW01BWF9ISVNUXTsKK307CisKK3N0cnVjdCBjaHVua19pbmZvIHsKKwl1bnNpZ25lZCBsb25nIGNodW5rYnl0ZXM7CS8qIGNodW5rIHNpemUgaW4gYnl0ZXMgKi8KKwlpbnQgY2h1bmtiaXRzOwkJCS8qIGNodW5rIHNpemUgaW4gYml0cyAqLworCXVuc2lnbmVkIGxvbmcgZnJlZV9jaHVua3M7CS8qIHRvdGFsIGZyZWUgY2h1bmtzIG9mIGdpdmVuIHNpemUgKi8KKwl1bnNpZ25lZCBsb25nIHJlYWxfZnJlZV9jaHVua3M7IC8qIGZyZWUgY2h1bmtzIG9mIGFueSBzaXplICovCisJaW50IGJsb2Nrc2l6ZV9iaXRzOwkJLyogZnMgYmxvY2tzaXplIGluIGJpdHMgKi8KKwlpbnQgYmxrc19pbl9jaHVuazsJCS8qIG51bWJlciBvZiBibG9ja3MgaW4gYSBjaHVuayAqLworCXVuc2lnbmVkIGxvbmcgbWluLCBtYXgsIGF2ZzsJLyogY2h1bmsgc2l6ZSBzdGF0cyAqLworCXN0cnVjdCBmcmVlX2NodW5rX2hpc3RvZ3JhbSBoaXN0b2dyYW07IC8qIGhpc3RvZ3JhbSBvZiBhbGwgY2h1bmsgc2l6ZXMqLworfTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UyZnV6ei5jIGIvZTJmc3Byb2dzL21pc2MvZTJmdXp6LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3NmQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UyZnV6ei5jCkBAIC0wLDAgKzEsMzcxIEBACisvKgorICogZTJmdXp6LmMgLS0gRnV6eiBhbiBleHQ0IGltYWdlLCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgT3JhY2xlLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeQorICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLgorICogJUVuZC1IZWFkZXIlCisgKi8KKyNkZWZpbmUgX1hPUEVOX1NPVVJDRQkJNjAwCisjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTICAgICAgIDY0CisjZGVmaW5lIF9MQVJHRUZJTEU2NF9TT1VSQ0UgICAgIDEKKyNkZWZpbmUgX0dOVV9TT1VSQ0UJCTEKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorCitzdGF0aWMgaW50IGRyeXJ1biA9IDA7CitzdGF0aWMgaW50IHZlcmJvc2UgPSAwOworc3RhdGljIGludCBtZXRhZGF0YV9vbmx5ID0gMTsKK3N0YXRpYyB1bnNpZ25lZCBsb25nIGxvbmcgdXNlcl9jb3JydXB0X2J5dGVzID0gMDsKK3N0YXRpYyBkb3VibGUgdXNlcl9jb3JydXB0X3BjdCA9IDAuMDsKKworI2lmICFkZWZpbmVkIEhBVkVfUFdSSVRFNjQgJiYgIWRlZmluZWQgSEFWRV9QV1JJVEUKK3N0YXRpYyBzc2l6ZV90IG15X3B3cml0ZShpbnQgZmQsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBvZmZfdCBvZmZzZXQpCit7CisJaWYgKGxzZWVrKGZkLCBvZmZzZXQsIFNFRUtfU0VUKSA8IDApCisJCXJldHVybiAwOworCisJcmV0dXJuIHdyaXRlKGZkLCBidWYsIGNvdW50KTsKK30KKyNlbmRpZiAvKiAhZGVmaW5lZCBIQVZFX1BXUklURTY0ICYmICFkZWZpbmVkIEhBVkVfUFdSSVRFICovCisKK3N0YXRpYyBpbnQgZ2V0c2VlZCh2b2lkKQoreworCWludCByOworCWludCBmZDsKKworCWZkID0gb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKCJvcGVuIik7CisJCWV4aXQoMCk7CisJfQorCWlmIChyZWFkKGZkLCAmciwgc2l6ZW9mKHIpKSAhPSBzaXplb2YocikpCisJCXByaW50ZigiVW5hYmxlIHRvIHJlYWQgcmFuZG9tIHNlZWQhXG4iKTsKKwljbG9zZShmZCk7CisJcmV0dXJuIHI7Cit9CisKK3N0cnVjdCBmaW5kX2Jsb2NrIHsKKwlleHQyX2lub190IGlubzsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJtYXA7CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlOworCWJsazY0X3QgY29ycnVwdF9ibG9ja3M7Cit9OworCitzdGF0aWMgaW50IGZpbmRfYmxvY2tfaGVscGVyKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgYmxrNjRfdCAqYmxvY2tuciwgZTJfYmxrY250X3QgYmxvY2tjbnQsCisJCQkgICAgIGJsazY0X3QgcmVmX2JsayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIGludCByZWZfb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCBmaW5kX2Jsb2NrICpmYiA9IChzdHJ1Y3QgZmluZF9ibG9jayAqKXByaXZfZGF0YTsKKworCWlmIChTX0lTRElSKGZiLT5pbm9kZS0+aV9tb2RlKSB8fCAhbWV0YWRhdGFfb25seSB8fCBibG9ja2NudCA8IDApIHsKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihmYi0+Ym1hcCwgKmJsb2NrbnIpOworCQlmYi0+Y29ycnVwdF9ibG9ja3MrKzsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBmaW5kX21ldGFkYXRhX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwLAorCQkJCSAgICAgIG9mZl90ICpjb3JydXB0X2J5dGVzKQoreworCWRncnBfdCBpOworCWJsazY0X3QgYiwgYzsKKwlleHQyX2lub2RlX3NjYW4gc2NhbjsKKwlleHQyX2lub190IGlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlzdHJ1Y3QgZmluZF9ibG9jayBmYjsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJKmNvcnJ1cHRfYnl0ZXMgPSAwOworCWZiLmNvcnJ1cHRfYmxvY2tzID0gMDsKKworCS8qIENvbnN0cnVjdCBiaXRtYXBzIG9mIHN1cGVyL2Rlc2NyaXB0b3IgYmxvY2tzICovCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJZXh0MmZzX3Jlc2VydmVfc3VwZXJfYW5kX2JnZChmcywgaSwgYm1hcCk7CisKKwkJLyogYml0bWFwcyBhbmQgaW5vZGUgdGFibGUgKi8KKwkJYiA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKTsKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihibWFwLCBiKTsKKwkJZmIuY29ycnVwdF9ibG9ja3MrKzsKKworCQliID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIGIpOworCQlmYi5jb3JydXB0X2Jsb2NrcysrOworCisJCWMgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKTsKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihibWFwLCBjLAorCQkJCQkJZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCQlmYi5jb3JydXB0X2Jsb2NrcyArPSBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisKKwkvKiBTY2FuIGlub2RlcyAqLworCWZiLmJtYXAgPSBibWFwOworCWZiLmlub2RlID0gJmlub2RlOworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKHNjYW4sICZpbm8sICZpbm9kZSwgc2l6ZW9mKGlub2RlKSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQyOworCXdoaWxlIChpbm8pIHsKKwkJaWYgKGlub2RlLmlfbGlua3NfY291bnQgPT0gMCkKKwkJCWdvdG8gbmV4dF9sb29wOworCisJCWIgPSBleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsICZpbm9kZSk7CisJCWlmIChiKSB7CisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIGIpOworCQkJZmIuY29ycnVwdF9ibG9ja3MrKzsKKwkJfQorCisJCS8qCisJCSAqIElubGluZSBkYXRhLCBzb2NrZXRzLCBkZXZpY2VzLCBhbmQgc3ltbGlua3MgaGF2ZQorCQkgKiBubyBibG9ja3MgdG8gaXRlcmF0ZS4KKwkJICovCisJCWlmICgoaW5vZGUuaV9mbGFncyAmIEVYVDRfSU5MSU5FX0RBVEFfRkwpIHx8CisJCSAgICBTX0lTTE5LKGlub2RlLmlfbW9kZSkgfHwgU19JU0ZJRk8oaW5vZGUuaV9tb2RlKSB8fAorCQkgICAgU19JU0NIUihpbm9kZS5pX21vZGUpIHx8IFNfSVNCTEsoaW5vZGUuaV9tb2RlKSB8fAorCQkgICAgU19JU1NPQ0soaW5vZGUuaV9tb2RlKSkKKwkJCWdvdG8gbmV4dF9sb29wOworCQlmYi5pbm8gPSBpbm87CisJCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLCBCTE9DS19GTEFHX1JFQURfT05MWSwKKwkJCQkJICAgICAgIE5VTEwsIGZpbmRfYmxvY2tfaGVscGVyLCAmZmIpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQyOworbmV4dF9sb29wOgorCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbChzY2FuLCAmaW5vLCAmaW5vZGUsCisJCQkJCQkgICAgc2l6ZW9mKGlub2RlKSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dDI7CisJfQorb3V0MjoKKwlleHQyZnNfY2xvc2VfaW5vZGVfc2NhbihzY2FuKTsKK291dDoKKwlpZiAoIXJldHZhbCkKKwkJKmNvcnJ1cHRfYnl0ZXMgPSBmYi5jb3JydXB0X2Jsb2NrcyAqIGZzLT5ibG9ja3NpemU7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIHVpbnQ2NF90IHJhbmRfbnVtKHVpbnQ2NF90IG1pbiwgdWludDY0X3QgbWF4KQoreworCXVpbnQ2NF90IHg7CisJdW5zaWduZWQgaW50IGk7CisJdWludDhfdCAqcHggPSAodWludDhfdCAqKSZ4OworCisJZm9yIChpID0gMDsgaSA8IHNpemVvZih4KTsgaSsrKQorCQlweFtpXSA9IHJhbmRvbSgpOworCisJcmV0dXJuIG1pbiArICh1aW50NjRfdCkoKGRvdWJsZSkobWF4IC0gbWluKSAqICh4IC8gKFVJTlQ2NF9NQVggKyAxLjApKSk7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19mcyhjb25zdCBjaGFyICpmc25hbWUpCit7CisJZXJyY29kZV90IHJldDsKKwlpbnQgZmxhZ3MsIGZkOworCWV4dDJfZmlsc3lzIGZzID0gTlVMTDsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGNvcnJ1cHRfbWFwOworCW9mZl90IGhzaXplLCBjb3VudCwgb2ZmLCBvZmZzZXQsIGNvcnJ1cHRfYnl0ZXM7CisJdW5zaWduZWQgY2hhciBjOworCW9mZl90IGk7CisKKwkvKiBJZiBtb3VudGVkIHJ3LCBmb3JjZSBkcnlydW4gbW9kZSAqLworCXJldCA9IGV4dDJmc19jaGVja19pZl9tb3VudGVkKGZzbmFtZSwgJmZsYWdzKTsKKwlpZiAocmV0KSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGZhaWxlZCB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBtb3VudCAiCisJCQkic3RhdGUuXG4iLCBmc25hbWUpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoIWRyeXJ1biAmJiAoZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpICYmCisJICAgICEoZmxhZ3MgJiBFWFQyX01GX1JFQURPTkxZKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBpcyBtb3VudGVkIHJ3LCBwZXJmb3JtaW5nIGRyeSBydW4uXG4iLAorCQkJZnNuYW1lKTsKKwkJZHJ5cnVuID0gMTsKKwl9CisKKwkvKiBFbnN1cmUgdGhlIGZzIGlzIGNsZWFuIGFuZCBkb2VzIG5vdCBoYXZlIGVycm9ycyAqLworCXJldCA9IGV4dDJmc19vcGVuKGZzbmFtZSwgRVhUMl9GTEFHXzY0QklUUywgMCwgMCwgdW5peF9pb19tYW5hZ2VyLAorCQkJICAmZnMpOworCWlmIChyZXQpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogZmFpbGVkIHRvIG9wZW4gZmlsZXN5c3RlbS5cbiIsCisJCQlmc25hbWUpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoKGZzLT5zdXBlci0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9ycyBkZXRlY3RlZCwgcnVuIGZzY2suXG4iLAorCQkJZnNuYW1lKTsKKwkJZ290byBmYWlsOworCX0KKworCWlmICghZHJ5cnVuICYmIChmcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX1ZBTElEX0ZTKSA9PSAwKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXM6IHVuY2xlYW4gc2h1dGRvd24sIHBlcmZvcm1pbmcgZHJ5IHJ1bi5cbiIsCisJCQlmc25hbWUpOworCQlkcnlydW4gPSAxOworCX0KKworCS8qIENvbnN0cnVjdCBhIGJpdG1hcCBvZiB3aGF0ZXZlciB3ZSdyZSBjb3JydXB0aW5nICovCisJaWYgKCFtZXRhZGF0YV9vbmx5KSB7CisJCS8qIExvYWQgYmxvY2sgYml0bWFwICovCisJCXJldCA9IGV4dDJmc19yZWFkX2Jsb2NrX2JpdG1hcChmcyk7CisJCWlmIChyZXQpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IGVycm9yIHdoaWxlIHJlYWRpbmcgYmxvY2sgYml0bWFwXG4iLAorCQkJCWZzbmFtZSk7CisJCQlnb3RvIGZhaWw7CisJCX0KKwkJY29ycnVwdF9tYXAgPSBmcy0+YmxvY2tfbWFwOworCQljb3JydXB0X2J5dGVzID0gKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtCisJCQkJIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSAqCisJCQkJZnMtPmJsb2Nrc2l6ZTsKKwl9IGVsc2UgeworCQlyZXQgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCAibWV0YWRhdGEgYmxvY2sgbWFwIiwKKwkJCQkJCSAgICZjb3JydXB0X21hcCk7CisJCWlmIChyZXQpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHVuYWJsZSB0byBjcmVhdGUgYmxvY2sgYml0bWFwXG4iLAorCQkJCWZzbmFtZSk7CisJCQlnb3RvIGZhaWw7CisJCX0KKworCQkvKiBJdGVyYXRlIGV2ZXJ5dGhpbmcuLi4gKi8KKwkJcmV0ID0gZmluZF9tZXRhZGF0YV9ibG9ja3MoZnMsIGNvcnJ1cHRfbWFwLCAmY29ycnVwdF9ieXRlcyk7CisJCWlmIChyZXQpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IHdoaWxlIGZpbmRpbmcgbWV0YWRhdGFcbiIsCisJCQkJZnNuYW1lKTsKKwkJCWdvdG8gZmFpbDsKKwkJfQorCX0KKworCS8qIFJ1biBhcm91bmQgY29ycnVwdGluZyB0aGluZ3MgKi8KKwlmZCA9IG9wZW4oZnNuYW1lLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKGZzbmFtZSk7CisJCWdvdG8gZmFpbDsKKwl9CisJc3JhbmRvbShnZXRzZWVkKCkpOworCWhzaXplID0gZnMtPmJsb2Nrc2l6ZSAqIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwlpZiAodXNlcl9jb3JydXB0X2J5dGVzID4gMCkKKwkJY291bnQgPSB1c2VyX2NvcnJ1cHRfYnl0ZXM7CisJZWxzZSBpZiAodXNlcl9jb3JydXB0X3BjdCA+IDAuMCkKKwkJY291bnQgPSB1c2VyX2NvcnJ1cHRfcGN0ICogY29ycnVwdF9ieXRlcyAvIDEwMDsKKwllbHNlCisJCWNvdW50ID0gcmFuZF9udW0oMCwgY29ycnVwdF9ieXRlcyAvIDEwMCk7CisJb2Zmc2V0ID0gNDA5NjsgLyogbmV2ZXIgY29ycnVwdCBzdXBlcmJsb2NrICovCisJZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKwkJZG8KKwkJCW9mZiA9IHJhbmRfbnVtKG9mZnNldCwgaHNpemUpOworCQl3aGlsZSAoIWV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoY29ycnVwdF9tYXAsCisJCQkJCQkgICAgb2ZmIC8gZnMtPmJsb2Nrc2l6ZSkpOworCQljID0gcmFuZCgpICUgMjU2OworCQlpZiAoKHJhbmQoKSAlIDIpICYmIGMgPCAxMjgpCisJCQljIHw9IDB4ODA7CisJCWlmICh2ZXJib3NlKQorCQkJcHJpbnRmKCJDb3JydXB0aW5nIGJ5dGUgJWxsZCBpbiBibG9jayAlbGxkIHRvIDB4JXhcbiIsCisJCQkgICAgICAgKGxvbmcgbG9uZykgb2ZmICUgZnMtPmJsb2Nrc2l6ZSwKKwkJCSAgICAgICAobG9uZyBsb25nKSBvZmYgLyBmcy0+YmxvY2tzaXplLCBjKTsKKwkJaWYgKGRyeXJ1bikKKwkJCWNvbnRpbnVlOworI2lmZGVmIEhBVkVfUFdSSVRFNjQKKwkJaWYgKHB3cml0ZTY0KGZkLCAmYywgc2l6ZW9mKGMpLCBvZmYpICE9IHNpemVvZihjKSkgeworCQkJcGVycm9yKGZzbmFtZSk7CisJCQlnb3RvIGZhaWwzOworCQl9CisjZWxpZiBIQVZFX1BXUklURQorCQlpZiAocHdyaXRlKGZkLCAmYywgc2l6ZW9mKGMpLCBvZmYpICE9IHNpemVvZihjKSkgeworCQkJcGVycm9yKGZzbmFtZSk7CisJCQlnb3RvIGZhaWwzOworCQl9CisjZWxzZQorCQlpZiAobXlfcHdyaXRlKGZkLCAmYywgc2l6ZW9mKGMpLCBvZmYpICE9IHNpemVvZihjKSkgeworCQkJcGVycm9yKGZzbmFtZSk7CisJCQlnb3RvIGZhaWwzOworCQl9CisjZW5kaWYKKwl9CisJY2xvc2UoZmQpOworCisJLyogQ2xlYW4gdXAgKi8KKwlyZXQgPSBleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworCWlmIChyZXQpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlczogZXJyb3Igd2hpbGUgY2xvc2luZyBmaWxlc3lzdGVtXG4iLAorCQkJZnNuYW1lKTsKKwkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7CitmYWlsMzoKKwljbG9zZShmZCk7CisJaWYgKGNvcnJ1cHRfbWFwICE9IGZzLT5ibG9ja19tYXApCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChjb3JydXB0X21hcCk7CitmYWlsOgorCWV4dDJmc19jbG9zZV9mcmVlKCZmcyk7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2hlbHAoY29uc3QgY2hhciAqcHJvZ25hbWUpCit7CisJcHJpbnRmKCJVc2FnZTogJXMgT1BUSU9OUyBkZXZpY2VcbiIsIHByb2duYW1lKTsKKwlwcmludGYoIi1iOglDb3JydXB0IHRoaXMgbWFueSBieXRlcy5cbiIpOworCXByaW50ZigiLWQ6CUZ1enogZGF0YSBibG9ja3MgdG9vLlxuIik7CisJcHJpbnRmKCItbjoJRHJ5IHJ1biBvbmx5LlxuIik7CisJcHJpbnRmKCItdjoJVmVyYm9zZSBvdXRwdXQuXG4iKTsKKwlleGl0KDApOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBjOworCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJiOmRudiIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnYic6CisJCQlpZiAob3B0YXJnW3N0cmxlbihvcHRhcmcpIC0gMV0gPT0gJyUnKSB7CisJCQkJdXNlcl9jb3JydXB0X3BjdCA9IHN0cnRvZChvcHRhcmcsIE5VTEwpOworCQkJCWlmICh1c2VyX2NvcnJ1cHRfcGN0ID4gMTAwIHx8CisJCQkJICAgIHVzZXJfY29ycnVwdF9wY3QgPCAwKSB7CisJCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IEludmFsaWQgcGVyY2VudGFnZS5cbiIsCisJCQkJCQlvcHRhcmcpOworCQkJCQlyZXR1cm4gMTsKKwkJCQl9CisJCQl9IGVsc2UKKwkJCQl1c2VyX2NvcnJ1cHRfYnl0ZXMgPSBzdHJ0b3VsbChvcHRhcmcsIE5VTEwsIDApOworCQkJaWYgKGVycm5vKSB7CisJCQkJcGVycm9yKG9wdGFyZyk7CisJCQkJcmV0dXJuIDE7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnZCc6CisJCQltZXRhZGF0YV9vbmx5ID0gMDsKKwkJCWJyZWFrOworCQljYXNlICduJzoKKwkJCWRyeXJ1biA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlID0gMTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcHJpbnRfaGVscChhcmd2WzBdKTsKKwkJfQorCX0KKworCWZvciAoYyA9IG9wdGluZDsgYyA8IGFyZ2M7IGMrKykKKwkJaWYgKHByb2Nlc3NfZnMoYXJndltjXSkpCisJCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UyZnV6ei5zaCBiL2UyZnNwcm9ncy9taXNjL2UyZnV6ei5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zODlmMmNhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZTJmdXp6LnNoCkBAIC0wLDAgKzEsMzI3IEBACisjIS9iaW4vYmFzaAorCisjIFRlc3QgaGFybmVzcyB0byBmdXp6IGEgZmlsZXN5c3RlbSBvdmVyIGFuZCBvdmVyLi4uCisjIENvcHlyaWdodCAoQykgMjAxNCBPcmFjbGUuCisKK0RJUj0vdG1wCitQQVNTRVM9MTAwMDAKK1NaPTMybQorU0NSSVBUX0RJUj0iJChkaXJuYW1lICIkMCIpIgorRkVBVFVSRVM9Imhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLDY0Yml0LG1ldGFkYXRhX2NzdW0sYmlnYWxsb2Msc3BhcnNlX3N1cGVyMixpbmxpbmVfZGF0YSIKK0JMS19TWj00MDk2CitJTk9ERV9TWj0yNTYKK0VYVEVOREVEX09QVFM9ImRpc2NhcmQiCitFWFRFTkRFRF9GU0NLX09QVElPTlM9IiIKK1JVTl9GU0NLPTEKK09WRVJSSURFX1BBVEg9MQorSEFTX0ZVU0UyRlM9MAorVVNFX0ZVU0UyRlM9MAorTUFYX0ZTQ0s9MTAKK1NSQ0RJUj0vZXRjCit0ZXN0IC14ICIke1NDUklQVF9ESVJ9L2Z1c2UyZnMiICYmIEhBU19GVVNFMkZTPTEKKworcHJpbnRfaGVscCgpIHsKKwllY2hvICJVc2FnZTogJDAgT1BUSU9OUyIKKwllY2hvICItYjoJRlMgYmxvY2sgc2l6ZSBpcyB0aGlzLiAoJHtCTEtfU1p9KSIKKwllY2hvICItQjoJQ29ycnVwdCB0aGlzIG1hbnkgYnl0ZXMgcGVyIHJ1bi4iCisJZWNobyAiLWQ6CUNyZWF0ZSB0ZXN0IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5LiAoJHtESVJ9KSIKKwllY2hvICItRToJRXh0ZW5kZWQgbWtlMmZzIG9wdGlvbnMuIgorCWVjaG8gIi1mOglEbyBub3QgcnVuIGUyZnNjayBhZnRlciBlYWNoIHBhc3MuIgorCWVjaG8gIi1GOglFeHRlbmRlZCBlMmZzY2sgb3B0aW9ucy4iCisJZWNobyAiLUk6CUNyZWF0ZSBpbm9kZXMgb2YgdGhpcyBzaXplLiAoJHtJTk9ERV9TWn0pIgorCWVjaG8gIi1uOglSdW4gdGhpcyBtYW55IHBhc3Nlcy4gKCR7UEFTU0VTfSkiCisJZWNobyAiLU86CUNyZWF0ZSBGUyB3aXRoIHRoZXNlIGZlYXR1cmVzLiIKKwllY2hvICItcDoJVXNlIHN5c3RlbSdzIG1rZTJmcy9lMmZzY2svdHVuZTJmcyB0b29scy4iCisJZWNobyAiLXM6CUNyZWF0ZSBGUyBpbWFnZXMgb2YgdGhpcyBzaXplLiAoJHtTWn0pIgorCWVjaG8gIi1TOglDb3B5IGZpbGVzIGZyb20gdGhpcyBkaXIuICgke1NSQ0RJUn0pIgorCWVjaG8gIi14OglSdW4gZTJmc2NrIGF0IG1vc3QgdGhpcyBtYW55IHRpbWVzLiAoJHtNQVhfRlNDS30pIgorCXRlc3QgIiR7SEFTX0ZVU0UyRlN9IiAtZ3QgMCAmJiBlY2hvICItdToJVXNlIGZ1c2UyZnMgaW5zdGVhZCBvZiB0aGUga2VybmVsLiIKKwlleGl0IDAKK30KKworR0VUT1BUPSJkOm46czpPOkk6YjpCOkU6RjpmcHg6UzoiCit0ZXN0ICIke0hBU19GVVNFMkZTfSIgJiYgR0VUT1BUPSIke0dFVE9QVH11IgorCit3aGlsZSBnZXRvcHRzICIke0dFVE9QVH0iIG9wdDsgZG8KKwljYXNlICIke29wdH0iIGluCisJIkIiKQorCQlFMkZVWlpfQVJHUz0iJHtFMkZVWlpfQVJHU30gLWIgJHtPUFRBUkd9IgorCQk7OworCSJkIikKKwkJRElSPSIke09QVEFSR30iCisJCTs7CisJIm4iKQorCQlQQVNTRVM9IiR7T1BUQVJHfSIKKwkJOzsKKwkicyIpCisJCVNaPSIke09QVEFSR30iCisJCTs7CisJIk8iKQorCQlGRUFUVVJFUz0iJHtGRUFUVVJFU30sJHtPUFRBUkd9IgorCQk7OworCSJJIikKKwkJSU5PREVfU1o9IiR7T1BUQVJHfSIKKwkJOzsKKwkiYiIpCisJCUJMS19TWj0iJHtPUFRBUkd9IgorCQk7OworCSJFIikKKwkJRVhURU5ERURfT1BUUz0iJHtPUFRBUkd9IgorCQk7OworCSJGIikKKwkJRVhURU5ERURfRlNDS19PUFRTPSItRSAke09QVEFSR30iCisJCTs7CisJImYiKQorCQlSVU5fRlNDSz0wCisJCTs7CisJInAiKQorCQlPVkVSUklERV9QQVRIPTAKKwkJOzsKKwkidSIpCisJCVVTRV9GVVNFMkZTPTEKKwkJOzsKKwkieCIpCisJCU1BWF9GU0NLPSIke09QVEFSR30iCisJCTs7CisJIlMiKQorCQlTUkNESVI9IiR7T1BUQVJHfSIKKwkJOzsKKwkqKQorCQlwcmludF9oZWxwCisJCTs7CisJZXNhYworZG9uZQorCitpZiBbICIke09WRVJSSURFX1BBVEh9IiAtZ3QgMCBdOyB0aGVuCisJUEFUSD0iJHtTQ1JJUFRfRElSfToke1NDUklQVF9ESVJ9Ly4uL2UyZnNjay86JHtQQVRIfSIKKwlleHBvcnQgUEFUSAorZmkKKworVEVTVERJUj0iJHtESVJ9L3Rlc3RzLyIKK1RFU1RNTlQ9IiR7RElSfS9tbnQvIgorQkFTRV9JTUc9IiR7RElSfS9lMmZ1enouaW1nIgorCitjYXQgPiAvdG1wL21rZTJmcy5jb25mIDw8IEVOREwKK1tkZWZhdWx0c10KKyAgICAgICAgYmFzZV9mZWF0dXJlcyA9ICR7RkVBVFVSRVN9CisgICAgICAgIGRlZmF1bHRfbW50b3B0cyA9IGFjbCx1c2VyX3hhdHRyLGJsb2NrX3ZhbGlkaXR5CisgICAgICAgIGVuYWJsZV9wZXJpb2RpY19mc2NrID0gMAorICAgICAgICBibG9ja3NpemUgPSAke0JMS19TWn0KKyAgICAgICAgaW5vZGVfc2l6ZSA9ICR7SU5PREVfU1p9CisgICAgICAgIGlub2RlX3JhdGlvID0gNDA5NgorCWNsdXN0ZXJfc2l6ZSA9ICQoKEJMS19TWiAqIDIpKQorCW9wdGlvbnMgPSAke0VYVEVOREVEX09QVFN9CitFTkRMCitNS0UyRlNfQ09ORklHPS90bXAvbWtlMmZzLmNvbmYKK2V4cG9ydCBNS0UyRlNfQ09ORklHCisKKyMgU2V0IHVwIEZTIGltYWdlCitlY2hvICIrIGNyZWF0ZSBmcyBpbWFnZSIKK3Vtb3VudCAiJHtURVNURElSfSIKK3Vtb3VudCAiJHtURVNUTU5UfSIKK3JtIC1yZiAiJHtURVNURElSfSIKK3JtIC1yZiAiJHtURVNUTU5UfSIKK21rZGlyIC1wICIke1RFU1RESVJ9IgorbWtkaXIgLXAgIiR7VEVTVE1OVH0iCitybSAtcmYgIiR7QkFTRV9JTUd9IgordHJ1bmNhdGUgLXMgIiR7U1p9IiAiJHtCQVNFX0lNR30iCitta2UyZnMgLUYgLXYgIiR7QkFTRV9JTUd9IgoraWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJZXhpdCAkPworZmkKKworIyBQb3B1bGF0ZSBGUyBpbWFnZQorZWNobyAiKyBwb3B1bGF0ZSBmcyBpbWFnZSIKK21vZHByb2JlIGxvb3AKK21vdW50ICIke0JBU0VfSU1HfSIgIiR7VEVTVE1OVH0iIC1vIGxvb3AKK2lmIFsgJD8gLW5lIDAgXTsgdGhlbgorCWV4aXQgJD8KK2ZpCitTUkNfU1o9IiQoZHUgLWtzICIke1NSQ0RJUn0iIHwgYXdrICd7cHJpbnQgJDF9JykiCitGU19TWj0iJCgoICQoc3RhdCAtZiAiJHtURVNUTU5UfSIgLWMgJyVhICogJVMnKSAvIDEwMjQgKSkiCitOUj0iJCgoIChGU19TWiAqIDQgLyAxMCkgLyBTUkNfU1ogKSkiCitpZiBbICIke05SfSIgLWx0IDEgXTsgdGhlbgorCU5SPTEKK2ZpCitlY2hvICIrIG1ha2UgJHtOUn0gY29waWVzIgorc2VxIDEgIiR7TlJ9IiB8IHdoaWxlIHJlYWQgbnI7IGRvCisJY3AgLXBSZHUgIiR7U1JDRElSfSIgIiR7VEVTVE1OVH0vdGVzdC4ke25yfSIgMj4gL2Rldi9udWxsCitkb25lCit1bW91bnQgIiR7VEVTVE1OVH0iCitlMmZzY2sgLWZuICIke0JBU0VfSU1HfSIKK2lmIFsgJD8gLW5lIDAgXTsgdGhlbgorCWVjaG8gImZzY2sgZmFpbGVkPz8iCisJZXhpdCAxCitmaQorCisjIFJ1biB0ZXN0cworZWNobyAiKyBydW4gdGVzdCIKK3JldD0wCitzZXEgMSAiJHtQQVNTRVN9IiB8IHdoaWxlIHJlYWQgcGFzczsgZG8KKwllY2hvICIrIHBhc3MgJHtwYXNzfSIKKwlQQVNTX0lNRz0iJHtURVNURElSfS9lMmZ1enotJHtwYXNzfS5pbWciCisJRlNDS19JTUc9IiR7VEVTVERJUn0vZTJmdXp6LSR7cGFzc30uZnNjayIKKwlGVVpaX0xPRz0iJHtURVNURElSfS9lMmZ1enotJHtwYXNzfS5mdXp6LmxvZyIKKwlPUFNfTE9HPSIke1RFU1RESVJ9L2UyZnV6ei0ke3Bhc3N9Lm9wcy5sb2ciCisKKwllY2hvICIrKyBjb3JydXB0IGltYWdlIgorCWNwICIke0JBU0VfSU1HfSIgIiR7UEFTU19JTUd9IgorCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQlleGl0ICQ/CisJZmkKKwl0dW5lMmZzIC1MICJlMmZ1enotJHtwYXNzfSIgIiR7UEFTU19JTUd9IgorCWUyZnV6eiAtdiAiJHtQQVNTX0lNR30iICR7RTJGVVpaX0FSR1N9ID4gIiR7RlVaWl9MT0d9IgorCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgorCQlleGl0ICQ/CisJZmkKKworCWVjaG8gIisrIG1vdW50IGltYWdlIgorCWlmIFsgIiR7VVNFX0ZVU0UyRlN9IiAtZ3QgMCBdOyB0aGVuCisJCSIke1NDUklQVF9ESVJ9L2Z1c2UyZnMiICIke1BBU1NfSU1HfSIgIiR7VEVTVE1OVH0iCisJCXJlcz0kPworCWVsc2UKKwkJbW91bnQgIiR7UEFTU19JTUd9IiAiJHtURVNUTU5UfSIgLW8gbG9vcAorCQlyZXM9JD8KKwlmaQorCisJaWYgWyAiJHtyZXN9IiAtZXEgMCBdOyB0aGVuCisJCWVjaG8gIisrKyBscyAtbGFSIgorCQlscyAtbGFSICIke1RFU1RNTlR9L3Rlc3QuMS8iID4gL2Rldi9udWxsIDI+ICIke09QU19MT0d9IgorCisJCWVjaG8gIisrKyBjYXQgZmlsZXMiCisJCWZpbmQgIiR7VEVTVE1OVH0vdGVzdC4xLyIgLXR5cGUgZiAtc2l6ZSAtMTA0ODU3NmsgLXByaW50MCB8IHhhcmdzIC0wIGNhdCA+IC9kZXYvbnVsbCAyPj4gIiR7T1BTX0xPR30iCisKKwkJZWNobyAiKysrIGV4cGFuZCIKKwkJZmluZCAiJHtURVNUTU5UfS8iIC10eXBlIGYgMj4gL2Rldi9udWxsIHwgaGVhZCAtbiA1MDAwMCB8IHdoaWxlIHJlYWQgZjsgZG8KKwkJCWF0dHIgLWwgIiRmIiA+IC9kZXYvbnVsbCAyPj4gIiR7T1BTX0xPR30iCisJCQlpZiBbIC1mICIkZiIgLWEgLXcgIiRmIiBdOyB0aGVuCisJCQkJZGQgaWY9L2Rldi96ZXJvIGJzPSIke0JMS19TWn0iIGNvdW50PTEgPj4gIiRmIiAyPj4gIiR7T1BTX0xPR30iCisJCQlmaQorCQkJbXYgIiRmIiAiJGYubG9uZ2VyIiA+IC9kZXYvbnVsbCAyPj4gIiR7T1BTX0xPR30iCisJCWRvbmUKKwkJc3luYworCisJCWVjaG8gIisrKyBjcmVhdGUgZmlsZXMiCisJCWNwIC1wUmR1ICIke1NSQ0RJUn0iICIke1RFU1RNTlR9L3Rlc3QubW9vIiAyPj4gIiR7T1BTX0xPR30iCisJCXN5bmMKKworCQllY2hvICIrKysgcmVtb3ZlIGZpbGVzIgorCQlybSAtcmYgIiR7VEVTVE1OVH0vdGVzdC5tb28iIDI+PiAiJHtPUFNfTE9HfSIKKworCQl1bW91bnQgIiR7VEVTVE1OVH0iCisJCXJlcz0kPworCQlpZiBbICIke3Jlc30iIC1uZSAwIF07IHRoZW4KKwkJCXJldD0xCisJCQlicmVhaworCQlmaQorCQlzeW5jCisJCXRlc3QgIiR7VVNFX0ZVU0UyRlN9IiAtZ3QgMCAmJiBzbGVlcCAyCisJZmkKKwlpZiBbICIke1JVTl9GU0NLfSIgLWd0IDAgXTsgdGhlbgorCQljcCAiJHtQQVNTX0lNR30iICIke0ZTQ0tfSU1HfSIKKwkJcGFzc19pbWdfc3o9IiQoc3RhdCAtYyAnJXMnICIke1BBU1NfSU1HfSIpIgorCisJCXNlcSAxICIke01BWF9GU0NLfSIgfCB3aGlsZSByZWFkIGZzY2tfcGFzczsgZG8KKwkJCWVjaG8gIisrIGZzY2sgcGFzcyAke2ZzY2tfcGFzc306ICQod2hpY2ggZTJmc2NrKSAtZnkgJHtGU0NLX0lNR30gJHtFWFRFTkRFRF9GU0NLX09QVFN9IgorCQkJRlNDS19MT0c9IiR7VEVTVERJUn0vZTJmdXp6LSR7cGFzc30tJHtmc2NrX3Bhc3N9LmxvZyIKKwkJCWUyZnNjayAtZnkgIiR7RlNDS19JTUd9IiAke0VYVEVOREVEX0ZTQ0tfT1BUU30gPiAiJHtGU0NLX0xPR30iIDI+JjEKKwkJCXJlcz0kPworCQkJZWNobyAiKysgZnNjayByZXR1cm5zICR7cmVzfSIKKwkJCWlmIFsgIiR7cmVzfSIgLWVxIDAgXTsgdGhlbgorCQkJCWV4aXQgMAorCQkJZWxpZiBbICIke2ZzY2tfcGFzc30iIC1lcSAiJHtNQVhfRlNDS30iIF07IHRoZW4KKwkJCQllY2hvICIrKyBmc2NrIGRpZCBub3QgZml4IGluICR7TUFYX0ZTQ0t9IHBhc3Nlcy4iCisJCQkJZXhpdCAxCisJCQlmaQorCQkJaWYgWyAiJHtyZXN9IiAtZ3QgMCAtYSBcCisJCQkgICAgICIkKGdyZXAgJ01lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCcgIiR7RlNDS19MT0d9IiB8IHdjIC1sKSIgLWd0IDAgXTsgdGhlbgorCQkJCWVjaG8gIisrIFJhbiBvdXQgb2YgbWVtb3J5LCBnZXQgbW9yZSBSQU0iCisJCQkJZXhpdCAwCisJCQlmaQorCQkJaWYgWyAiJHtyZXN9IiAtZ3QgMCAtYSBcCisJCQkgICAgICIkKGdyZXAgJ0NvdWxkIG5vdCBhbGxvY2F0ZSBibG9jaycgIiR7RlNDS19MT0d9IiB8IHdjIC1sKSIgLWd0IDAgLWEgXAorCQkJICAgICAiJChkdW1wZTJmcyAtaCAiJHtGU0NLX0lNR30iIHwgZ3JlcCAnXkZyZWUgYmxvY2tzOicgfCBhd2sgJ3twcmludCAkM30nKTAiIC1lcSAwIF07IHRoZW4KKwkJCQllY2hvICIrKyBSYW4gb3V0IG9mIHNwYWNlLCBnZXQgYSBiaWdnZXIgaW1hZ2UiCisJCQkJZXhpdCAwCisJCQlmaQorCQkJaWYgWyAiJHtmc2NrX3Bhc3N9IiAtZ3QgMSBdOyB0aGVuCisJCQkJZGlmZiAtdSAiJHtURVNURElSfS9lMmZ1enotJHtwYXNzfS0kKChmc2NrX3Bhc3MgLSAxKSkubG9nIiAiJHtGU0NLX0xPR30iCisJCQkJaWYgWyAkPyAtZXEgMCBdOyB0aGVuCisJCQkJCWVjaG8gIisrIGZzY2sgbWFrZXMgbm8gcHJvZ3Jlc3MiCisJCQkJCWV4aXQgMgorCQkJCWZpCisJCQlmaQorCisJCQlmc2NrX2ltZ19zej0iJChzdGF0IC1jICclcycgIiR7RlNDS19JTUd9IikiCisJCQlpZiBbICIke2ZzY2tfaW1nX3N6fSIgLW5lICIke3Bhc3NfaW1nX3N6fSIgXTsgdGhlbgorCQkJCWVjaG8gIisrIGZzY2sgaW1hZ2Ugc2l6ZSBjaGFuZ2VkIgorCQkJCWV4aXQgMworCQkJZmkKKwkJZG9uZQorCQlmc2NrX2xvb3BfcmV0PSQ/CisJCWlmIFsgIiR7ZnNja19sb29wX3JldH0iIC1ndCAwIF07IHRoZW4KKwkJCWJyZWFrOworCQlmaQorCWZpCisKKwllY2hvICIrKysgY2hlY2sgZnMgZm9yIHJvdW5kIDIiCisJRlNDS19MT0c9IiR7VEVTVERJUn0vZTJmdXp6LSR7cGFzc30tcm91bmQyLmxvZyIKKwllMmZzY2sgLWZuICIke0ZTQ0tfSU1HfSIgJHtFWFRFTkRFRF9GU0NLX09QVFN9ID4+ICIke0ZTQ0tfTE9HfSIgMj4mMQorCXJlcz0kPworCWlmIFsgIiR7cmVzfSIgLW5lIDAgXTsgdGhlbgorCQllY2hvICIrKysrIGZzY2sgZmFpbGVkLiIKKwkJZXhpdCAxCisJZmkKKworCWVjaG8gIisrIG1vdW50IGltYWdlICgyKSIKKwltb3VudCAiJHtGU0NLX0lNR30iICIke1RFU1RNTlR9IiAtbyBsb29wCisJcmVzPSQ/CisKKwlpZiBbICIke3Jlc30iIC1lcSAwIF07IHRoZW4KKwkJZWNobyAiKysrIGxzIC1sYVIgKDIpIgorCQlscyAtbGFSICIke1RFU1RNTlR9L3Rlc3QuMS8iID4gL2Rldi9udWxsIDI+ICIke09QU19MT0d9IgorCisJCWVjaG8gIisrKyBjYXQgZmlsZXMgKDIpIgorCQlmaW5kICIke1RFU1RNTlR9L3Rlc3QuMS8iIC10eXBlIGYgLXNpemUgLTEwNDg1NzZrIC1wcmludDAgfCB4YXJncyAtMCBjYXQgPiAvZGV2L251bGwgMj4+ICIke09QU19MT0d9IgorCisJCWVjaG8gIisrKyBleHBhbmQgKDIpIgorCQlmaW5kICIke1RFU1RNTlR9LyIgLXR5cGUgZiAyPiAvZGV2L251bGwgfCBoZWFkIC1uIDUwMDAwIHwgd2hpbGUgcmVhZCBmOyBkbworCQkJYXR0ciAtbCAiJGYiID4gL2Rldi9udWxsIDI+PiAiJHtPUFNfTE9HfSIKKwkJCWlmIFsgLWYgIiRmIiAtYSAtdyAiJGYiIF07IHRoZW4KKwkJCQlkZCBpZj0vZGV2L3plcm8gYnM9IiR7QkxLX1NafSIgY291bnQ9MSA+PiAiJGYiIDI+PiAiJHtPUFNfTE9HfSIKKwkJCWZpCisJCQltdiAiJGYiICIkZi5sb25nZXIiID4gL2Rldi9udWxsIDI+PiAiJHtPUFNfTE9HfSIKKwkJZG9uZQorCQlzeW5jCisKKwkJZWNobyAiKysrIGNyZWF0ZSBmaWxlcyAoMikiCisJCWNwIC1wUmR1ICIke1NSQ0RJUn0iICIke1RFU1RNTlR9L3Rlc3QubW9vIiAyPj4gIiR7T1BTX0xPR30iCisJCXN5bmMKKworCQllY2hvICIrKysgcmVtb3ZlIGZpbGVzICgyKSIKKwkJcm0gLXJmICIke1RFU1RNTlR9L3Rlc3QubW9vIiAyPj4gIiR7T1BTX0xPR30iCisKKwkJdW1vdW50ICIke1RFU1RNTlR9IgorCQlyZXM9JD8KKwkJaWYgWyAiJHtyZXN9IiAtbmUgMCBdOyB0aGVuCisJCQlyZXQ9MQorCQkJYnJlYWsKKwkJZmkKKwkJc3luYworCQl0ZXN0ICIke1VTRV9GVVNFMkZTfSIgLWd0IDAgJiYgc2xlZXAgMgorCisJCWVjaG8gIisrKyBjaGVjayBmcyAoMikiCisJCWUyZnNjayAtZm4gIiR7RlNDS19JTUd9IiA+PiAiJHtGU0NLX0xPR30iIDI+JjEKKwkJcmVzPSQ/CisJCWlmIFsgIiR7cmVzfSIgLW5lIDAgXTsgdGhlbgorCQkJZWNobyAiKysgZnNjayBmYWlsZWQuIgorCQkJZXhpdCAxCisJCWZpCisJZWxzZQorCQllY2hvICIrKyBtb3VudCgyKSBmYWlsZWQgd2l0aCAke3Jlc30iCisJCWV4aXQgMQorCWZpCisJcm0gLXJmICIke0ZTQ0tfSU1HfSIgIiR7UEFTU19JTUd9IiAiJHtGVVpaX0xPR30iICIke1RFU1RESVJ9Ii9lMmZ1enoqLmxvZworZG9uZQorCitleGl0ICRyZXQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UyaW1hZ2UuOC5pbiBiL2UyZnNwcm9ncy9taXNjL2UyaW1hZ2UuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjhhNzZlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZTJpbWFnZS44LmluCkBAIC0wLDAgKzEsMjg1IEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlwiIENvcHlyaWdodCAyMDAxIGJ5IFRoZW9kb3JlIFRzJ28uICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlRIIEUySU1BR0UgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZTJpbWFnZSBcLSBTYXZlIGNyaXRpY2FsIGV4dDIvZXh0My9leHQ0IGZpbGVzeXN0ZW0gbWV0YWRhdGEgdG8gYSBmaWxlCisuU0ggU1lOT1BTSVMKKy5CIGUyaW1hZ2UKK1sKKy5CIFwtcnxRCitdCitbCisuQiBcLWZyCitdCisuSSBkZXZpY2UKKy5JIGltYWdlLWZpbGUKKy5icgorLkIgZTJpbWFnZQorLkIgXC1JCisuSSBkZXZpY2UKKy5JIGltYWdlLWZpbGUKKy5icgorLkIgZTJpbWFnZQorLkIgXC1yYQorWworLkIgXC1jZm5wCitdCitbCisuQiBcLW8KKy5JIHNyY19vZmZzZXQKK10KK1sKKy5CIFwtTworLkkgZGVzdF9vZmZzZXQKK10KKy5JIHNyY19mcworWworLkkgZGVzdF9mcworXQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIGUyaW1hZ2UKK3Byb2dyYW0gd2lsbCBzYXZlIGNyaXRpY2FsIGV4dDIsIGV4dDMsIG9yIGV4dDQgZmlsZXN5c3RlbSBtZXRhZGF0YSBsb2NhdGVkIG9uCisuSSBkZXZpY2UKK3RvIGEgZmlsZSBzcGVjaWZpZWQgYnkKKy5JUiBpbWFnZS1maWxlIC4KK1RoZSBpbWFnZSBmaWxlIG1heSBiZSBleGFtaW5lZCBieQorLkIgZHVtcGUyZnMKK2FuZAorLkJSICBkZWJ1Z2ZzICwKK2J5IHVzaW5nIHRoZQorLkIgXC1pCitvcHRpb24gdG8gdGhvc2UgcHJvZ3JhbXMuICBUaGlzIGNhbiBhc3Npc3QgYW4gZXhwZXJ0IGluCityZWNvdmVyaW5nIGNhdGFzdHJvcGhpY2FsbHkgY29ycnVwdGVkIGZpbGVzeXN0ZW1zLiAgSW4gdGhlIGZ1dHVyZSwKK2UyZnNjayB3aWxsIGJlIGVuaGFuY2VkIHRvIGJlIGFibGUgdG8gdXNlIHRoZSBpbWFnZSBmaWxlIHRvIGhlbHAKK3JlY292ZXIgYSBiYWRseSBkYW1hZ2VkIGZpbGVzeXN0ZW0uCisuUFAKK1doZW4gc2F2aW5nIGFuIGUyaW1hZ2UgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgdXNpbmcgZWl0aGVyIHRoZQorLkIgXC1yCitvcgorLkIgXC1RCitvcHRpb25zLCB0aGUgZmlsZXN5c3RlbSBtdXN0IGJlIHVubW91bnRlZCBvciBiZSBtb3VudGVkIHJlYWQvb25seSwgaW4gb3JkZXIKK2ZvciB0aGUgaW1hZ2UgZmlsZSB0byBiZSBpbiBhIGNvbnNpc3RlbnQgc3RhdGUuICBUaGlzIHJlcXVpcmVtZW50IGNhbiBiZQorb3ZlcnJpZGRlbiB1c2luZyB0aGUKKy5CIFwtZgorb3B0aW9uLCBidXQgdGhlIHJlc3VsdGluZyBpbWFnZSBmaWxlIGlzIHZlcnkgbGlrZWx5IG5vdCBnb2luZyB0byBiZSB1c2VmdWwuCisuUFAKK0lmCisuSSBpbWFnZS1maWxlCitpcyBcLSwgdGhlbiB0aGUgb3V0cHV0IG9mCisuQiBlMmltYWdlCit3aWxsIGJlIHNlbnQgdG8gc3RhbmRhcmQgb3V0cHV0LCBzbyB0aGF0IHRoZSBvdXRwdXQgY2FuIGJlIHBpcGVkIHRvCithbm90aGVyIHByb2dyYW0sIHN1Y2ggYXMKKy5CUiBnemlwICgxKS4KKyhOb3RlIHRoYXQgdGhpcyBpcyBjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQgd2hlbgorY3JlYXRpbmcgYSByYXcgaW1hZ2UgZmlsZSB1c2luZyB0aGUKKy5CIFwtcgorb3B0aW9uLCBzaW5jZSB0aGUgcHJvY2VzcyBvZiBjcmVhdGluZyBhIG5vcm1hbCBpbWFnZSBmaWxlLCBvciBRQ09XMgoraW1hZ2UgY3VycmVudGx5CityZXF1aXJlcyByYW5kb20gYWNjZXNzIHRvIHRoZSBmaWxlLCB3aGljaCBjYW5ub3QgYmUgZG9uZSB1c2luZyBhCitwaXBlLiAgVGhpcyByZXN0cmljdGlvbiB3aWxsIGhvcGVmdWxseSBiZSBsaWZ0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZgorLkJSIGUyaW1hZ2UgLikKKy5QUAorSXQgaXMgYSB2ZXJ5IGdvb2QgaWRlYSB0byBjcmVhdGUgaW1hZ2UgZmlsZXMgZm9yIGFsbCBvZgorZmlsZXN5c3RlbXMgb24gYSBzeXN0ZW0gYW5kIHNhdmUgdGhlIHBhcnRpdGlvbgorbGF5b3V0ICh3aGljaCBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRoZQorLkIgZmRpc2sgXC1sCitjb21tYW5kKSBhdCByZWd1bGFyIGludGVydmFscyAtLS0gYXQgYm9vdCB0aW1lLCBhbmQvb3IgZXZlcnkgd2VlayBvciBzby4KK1RoZSBpbWFnZSBmaWxlIHNob3VsZCBiZSBzdG9yZWQgb24gc29tZSBmaWxlc3lzdGVtIG90aGVyIHRoYW4KK3RoZSBmaWxlc3lzdGVtIHdob3NlIGRhdGEgaXQgY29udGFpbnMsIHRvIGVuc3VyZSB0aGF0IHRoaXMgZGF0YSBpcworYWNjZXNzaWJsZSBpbiB0aGUgY2FzZSB3aGVyZSB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbiBiYWRseSBkYW1hZ2VkLgorLlBQCitUbyBzYXZlIGRpc2sgc3BhY2UsCisuQiBlMmltYWdlCitjcmVhdGVzIHRoZSBpbWFnZSBmaWxlIGFzIGEgc3BhcnNlIGZpbGUsIG9yIGluIFFDT1cyIGZvcm1hdC4KK0hlbmNlLCBpZiB0aGUgc3BhcnNlIGltYWdlIGZpbGUKK25lZWRzIHRvIGJlIGNvcGllZCB0byBhbm90aGVyIGxvY2F0aW9uLCBpdCBzaG91bGQKK2VpdGhlciBiZSBjb21wcmVzc2VkIGZpcnN0IG9yIGNvcGllZCB1c2luZyB0aGUKKy5CIFwtXC1zcGFyc2U9YWx3YXlzCitvcHRpb24gdG8gdGhlIEdOVSB2ZXJzaW9uIG9mCisuQlIgY3AgLgorVGhpcyBkb2VzIG5vdCBhcHBseSB0byB0aGUgUUNPVzIgaW1hZ2UsIHdoaWNoIGlzIG5vdCBzcGFyc2UuCisuUFAKK1RoZSBzaXplIG9mIGFuIGV4dDIgaW1hZ2UgZmlsZSBkZXBlbmRzIHByaW1hcmlseSBvbiB0aGUgc2l6ZSBvZiB0aGUKK2ZpbGVzeXN0ZW1zIGFuZCBob3cgbWFueSBpbm9kZXMgYXJlIGluIHVzZS4gIEZvciBhIHR5cGljYWwgMTAgZ2lnYWJ5dGUKK2ZpbGVzeXN0ZW0sIHdpdGggMjAwLDAwMCBpbm9kZXMgaW4gdXNlIG91dCBvZiAxLjIgbWlsbGlvbiBpbm9kZXMsIHRoZQoraW1hZ2UgZmlsZSB3aWxsIGJlIGFwcHJveGltYXRlbHkgMzUgbWVnYWJ5dGVzOyBhIDQgZ2lnYWJ5dGUgZmlsZXN5c3RlbSB3aXRoCisxNSwwMDAgaW5vZGVzIGluIHVzZSBvdXQgb2YgNTUwLDAwMCBpbm9kZXMgd2lsbCByZXN1bHQgaW4gYSAzIG1lZ2FieXRlCitpbWFnZSBmaWxlLiAgSW1hZ2UgZmlsZXMgdGVuZCB0byBiZSBxdWl0ZQorY29tcHJlc3NpYmxlOyBhbiBpbWFnZSBmaWxlIHRha2luZyB1cCAzMiBtZWdhYnl0ZXMgb2Ygc3BhY2Ugb24KK2Rpc2sgd2lsbCBnZW5lcmFsbHkgY29tcHJlc3MgZG93biB0byAzIG9yIDQgbWVnYWJ5dGVzLgorLlBQCisuU0ggUkVTVE9SSU5HIEZJTEVTWVNURU0gTUVUQURBVEEgVVNJTkcgQU4gSU1BR0UgRklMRQorLlBQCitUaGUKKy5CIFwtSQorb3B0aW9uIHdpbGwgY2F1c2UgZTJpbWFnZSB0byBpbnN0YWxsIHRoZSBtZXRhZGF0YSBzdG9yZWQgaW4gdGhlIGltYWdlCitmaWxlIGJhY2sgdG8gdGhlIGRldmljZS4gIEl0IGNhbiBiZSB1c2VkIHRvIHJlc3RvcmUgdGhlIGZpbGVzeXN0ZW0gbWV0YWRhdGEKK2JhY2sgdG8gdGhlIGRldmljZSBpbiBlbWVyZ2VuY3kgc2l0dWF0aW9ucy4KKy5QUAorLkIgV0FSTklORyEhISEKK1RoZQorLkIgXC1JCitvcHRpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBhcyBhIGRlc3BlcmF0aW9uIG1lYXN1cmUgd2hlbiBvdGhlcgorYWx0ZXJuYXRpdmVzIGhhdmUgZmFpbGVkLiAgSWYgdGhlIGZpbGVzeXN0ZW0gaGFzIGNoYW5nZWQgc2luY2UgdGhlIGltYWdlCitmaWxlIHdhcyBjcmVhdGVkLCBkYXRhCisuQiB3aWxsCitiZSBsb3N0LiAgSW4gZ2VuZXJhbCwgeW91IHNob3VsZCBtYWtlIGEgZnVsbCBpbWFnZQorYmFja3VwIG9mIHRoZSBmaWxlc3lzdGVtIGZpcnN0LCBpbiBjYXNlIHlvdSB3aXNoIHRvIHRyeSBvdGhlciByZWNvdmVyeQorc3RyYXRlZ2llcyBhZnRlcndhcmRzLgorLlBQCisuU0ggUkFXIElNQUdFIEZJTEVTCitUaGUKKy5CIFwtcgorb3B0aW9uIHdpbGwgY3JlYXRlIGEgcmF3IGltYWdlIGZpbGUgaW5zdGVhZCBvZiBhIG5vcm1hbCBpbWFnZSBmaWxlLgorQSByYXcgaW1hZ2UgZmlsZSBkaWZmZXJzCitmcm9tIGEgbm9ybWFsIGltYWdlIGZpbGUgaW4gdHdvIHdheXMuICBGaXJzdCwgdGhlIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaXMKK3BsYWNlZCBpbiB0aGUgcHJvcGVyIHBvc2l0aW9uIHNvIHRoYXQgZTJmc2NrLCBkdW1wZTJmcywgZGVidWdmcywKK2V0Yy5cJiBjYW4gYmUgcnVuIGRpcmVjdGx5IG9uIHRoZSByYXcgaW1hZ2UgZmlsZS4gIEluIG9yZGVyIHRvIG1pbmltaXplCit0aGUgYW1vdW50IG9mIGRpc2sgc3BhY2UgY29uc3VtZWQgYnkgYSByYXcgaW1hZ2UgZmlsZSwgdGhlIGZpbGUgaXMKK2NyZWF0ZWQgYXMgYSBzcGFyc2UgZmlsZS4gIChCZXdhcmUgb2YgY29weWluZyBvcgorY29tcHJlc3NpbmcvZGVjb21wcmVzc2luZyB0aGlzIGZpbGUgd2l0aCB1dGlsaXRpZXMgdGhhdCBkb24ndCB1bmRlcnN0YW5kCitob3cgdG8gY3JlYXRlIHNwYXJzZSBmaWxlczsgdGhlIGZpbGUgd2lsbCBiZWNvbWUgYXMgbGFyZ2UgYXMgdGhlCitmaWxlc3lzdGVtIGl0c2VsZiEpICBTZWNvbmRseSwgdGhlIHJhdyBpbWFnZSBmaWxlIGFsc28gaW5jbHVkZXMgaW5kaXJlY3QKK2Jsb2NrcyBhbmQgZGlyZWN0b3J5IGJsb2Nrcywgd2hpY2ggdGhlIHN0YW5kYXJkIGltYWdlIGZpbGUgZG9lcyBub3QgaGF2ZSwKK2FsdGhvdWdoIHRoaXMgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLgorLlBQCitSYXcgaW1hZ2UgZmlsZXMgYXJlIHNvbWV0aW1lcyB1c2VkIHdoZW4gc2VuZGluZyBmaWxlc3lzdGVtcyB0byB0aGUgbWFpbnRhaW5lcgorYXMgcGFydCBvZiBidWcgcmVwb3J0cyB0byBlMmZzcHJvZ3MuICBXaGVuIHVzZWQgaW4gdGhpcyBjYXBhY2l0eSwgdGhlCityZWNvbW1lbmRlZCBjb21tYW5kIGlzIGFzIGZvbGxvd3MgKHJlcGxhY2UgaGRhMSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBkZXZpY2UpOgorLlBQCisuYnIKKwlcZkJlMmltYWdlIFwtciAvZGV2L2hkYTEgXC0gfCBiemlwMiA+IGhkYTEuZTJpLmJ6MlxmUgorLlBQCitUaGlzIHdpbGwgb25seSBzZW5kIHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiwgd2l0aG91dCBhbnkgZGF0YSBibG9ja3MuCitIb3dldmVyLCB0aGUgZmlsZW5hbWVzIGluIHRoZSBkaXJlY3RvcnkgYmxvY2tzIGNhbiBzdGlsbCByZXZlYWwKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZXN5c3RlbSB0aGF0IHRoZSBidWcgcmVwb3J0ZXIKK21heSB3aXNoIHRvIGtlZXAgY29uZmlkZW50aWFsLiAgVG8gYWRkcmVzcyB0aGlzIGNvbmNlcm4sIHRoZQorLkIgXC1zCitvcHRpb24gY2FuIGJlIHNwZWNpZmllZC4gIFRoaXMgd2lsbCBjYXVzZQorLkIgZTJpbWFnZQordG8gc2NyYW1ibGUgZGlyZWN0b3J5IGVudHJpZXMgYW5kIHplcm8gb3V0IGFueSB1bnVzZWQgcG9ydGlvbnMKK29mIHRoZSBkaXJlY3RvcnkgYmxvY2tzIGJlZm9yZSB3cml0aW5nIHRoZSBpbWFnZSBmaWxlLiAgSG93ZXZlciwKK3RoZQorLkIgXC1zCitvcHRpb24gd2lsbCBwcmV2ZW50IGFuYWx5c2lzIG9mIHByb2JsZW1zIHJlbGF0ZWQgdG8gaGFzaC10cmVlIGluZGV4ZWQKK2RpcmVjdG9yaWVzLgorLlBQCitOb3RlIHRoYXQgdGhpcyB3aWxsIHdvcmsgZXZlbiBpZiB5b3Ugc3Vic3RpdHV0ZSAiL2Rldi9oZGExIiBmb3IgYW5vdGhlciByYXcKK2Rpc2sgaW1hZ2UsIG9yIFFDT1cyIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZCBieQorLkJSIGUyaW1hZ2UgLgorLlBQCisuU0ggUUNPVzIgSU1BR0UgRklMRVMKK1RoZQorLkIgXC1RCitvcHRpb24gd2lsbCBjcmVhdGUgYSBRQ09XMiBpbWFnZSBmaWxlIGluc3RlYWQgb2YgYSBub3JtYWwsIG9yIHJhdyBpbWFnZSBmaWxlLgorQSBRQ09XMiBpbWFnZSBjb250YWlucyBhbGwgdGhlIGluZm9ybWF0aW9uIHRoZSByYXcgaW1hZ2UgZG9lcywgaG93ZXZlciB1bmxpa2UKK3RoZSByYXcgaW1hZ2UgaXQgaXMgbm90IHNwYXJzZS4gVGhlIFFDT1cyIGltYWdlIG1pbmltaXplIHRoZSBhbW91bnQgb2YgZGlzaworc3BhY2UgYnkgc3RvcmluZyBkYXRhIGluIHNwZWNpYWwgZm9ybWF0IHdpdGggcGFjayBkYXRhIGNsb3NlbHkgdG9nZXRoZXIsIGhlbmNlCithdm9pZGluZyBob2xlcyB3aGlsZSBzdGlsbCBtaW5pbWl6aW5nIHNpemUuCisuUFAKK0luIG9yZGVyIHRvIHNlbmQgZmlsZXN5c3RlbSB0byB0aGUgbWFpbnRhaW5lciBhcyBhIHBhcnQgb2YgYnVnIHJlcG9ydCB0bworZTJmc3Byb2dzLCB1c2UgZm9sbG93aW5nIGNvbW1hbmRzIChyZXBsYWNlIGhkYTEgd2l0aCB0aGUgYXBwcm9wcmlhdGUgZGV2aWNlKToKKy5QUAorLmJyCitcCVxmQmUyaW1hZ2UgXC1RIC9kZXYvaGRhMSBoZGExLnFjb3cyXGZSCisuYnIKK1wJXGZCYnppcDIgLXogaGRhMS5xY293MlxmUgorLlBQCitUaGlzIHdpbGwgb25seSBzZW5kIHRoZSBtZXRhZGF0YSBpbmZvcm1hdGlvbiwgd2l0aG91dCBhbnkgZGF0YSBibG9ja3MuCitIb3dldmVyLCB0aGUgZmlsZW5hbWVzIGluIHRoZSBkaXJlY3RvcnkgYmxvY2tzIGNhbiBzdGlsbCByZXZlYWwKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZXN5c3RlbSB0aGF0IHRoZSBidWcgcmVwb3J0ZXIKK21heSB3aXNoIHRvIGtlZXAgY29uZmlkZW50aWFsLiAgVG8gYWRkcmVzcyB0aGlzIGNvbmNlcm4sIHRoZQorLkIgXC1zCitvcHRpb24gY2FuIGJlIHNwZWNpZmllZC4gIFRoaXMgd2lsbCBjYXVzZQorLkIgZTJpbWFnZQordG8gc2NyYW1ibGUgZGlyZWN0b3J5IGVudHJpZXMgYW5kIHplcm8gb3V0IGFueSB1bnVzZWQgcG9ydGlvbnMKK29mIHRoZSBkaXJlY3RvcnkgYmxvY2tzIGJlZm9yZSB3cml0aW5nIHRoZSBpbWFnZSBmaWxlLiAgSG93ZXZlciwgdGhlCisuQiBcLXMKK29wdGlvbiB3aWxsIHByZXZlbnQgYW5hbHlzaXMgb2YgcHJvYmxlbXMgcmVsYXRlZCB0byBoYXNoLXRyZWUgaW5kZXhlZAorZGlyZWN0b3JpZXMuCisuUFAKK05vdGUgdGhhdCBRQ09XMiBpbWFnZSBjcmVhdGVkIGJ5CisuQiBlMmltYWdlCitpcyByZWd1bGFyIFFDT1cyIGltYWdlIGFuZCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IHRvb2xzIGF3YXJlIG9mIFFDT1cyIGZvcm1hdAorc3VjaCBhcyBmb3IgZXhhbXBsZQorLkJSIHFlbXUtaW1nIC4KKy5QUAorWW91IGNhbiBjb252ZXJ0IGEgcWNvdzIgaW1hZ2UgaW50byBhIHJhdyBpbWFnZSB3aXRoOgorLlBQCisuYnIKK1wJXGZCZTJpbWFnZSBcLXIgaGRhMS5xY293MiBoZGExLnJhd1xmUgorLmJyCisuUFAKK1RoaXMgY2FuIGJlIHVzZWZ1bCB0byB3cml0ZSBhIHFjb3cyIGltYWdlIGNvbnRhaW5pbmcgYWxsIGRhdGEgdG8gYQorc3BhcnNlIGltYWdlIGZpbGUgd2hlcmUgaXQgY2FuIGJlIGxvb3AgbW91bnRlZCwgb3IgdG8gYSBkaXNrIHBhcnRpdGlvbi4KK05vdGUgdGhhdCB0aGlzIG1heSBub3Qgd29yayB3aXRoIHFjb3cyIGltYWdlcyBub3QgZ2VuZXJhdGVkIGJ5IGUyaW1hZ2UuCisuUFAKKy5TSCBJTkNMVURJTkcgREFUQQorTm9ybWFsbHkKKy5CIGUyaW1hZ2UKK29ubHkgaW5jbHVkZXMgZnMgbWV0YWRhdGEsIG5vdCByZWd1bGFyIGZpbGUgZGF0YS4gIFRoZQorLkIgXC1hCitvcHRpb24gY2FuIGJlIHNwZWNpZmllZCB0byBpbmNsdWRlIGFsbCBkYXRhLiAgVGhpcyB3aWxsCitnaXZlIGFuIGltYWdlIHRoYXQgaXMgc3VpdGFibGUgdG8gdXNlIHRvIGNsb25lIHRoZSBlbnRpcmUgRlMgb3IKK2ZvciBiYWNrdXAgcHVycG9zZXMuICBOb3RlIHRoYXQgdGhpcyBvcHRpb24gb25seSB3b3JrcyB3aXRoIHRoZQorcmF3IG9yIFFDT1cyIGZvcm1hdHMuICBUaGUKKy5CIFwtcAorc3dpdGNoIG1heSBiZSBnaXZlbiB0byBzaG93IHByb2dyZXNzLiAgSWYgdGhlIGZpbGUgc3lzdGVtIGlzIGJlaW5nCitjbG9uZWQgdG8gYSBmbGFzaC1iYXNlZCBzdG9yYWdlIGRldmljZSAod2hlcmUgcmVhZHMgYXJlIHZlcnkgZmFzdCBhbmQKK3doZXJlIGl0IGlzIGRlc2lyYWJsZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSB3cml0ZXMgdG8gcmVkdWNlIHdyaXRlIHdlYXIKK29uIHRoZSBkZXZpY2UpLCB0aGUKKy5CIFwtYworb3B0aW9uIHdoaWNoIGNhdXNlIGUyaW1hZ2UgdG8gdHJ5IHJlYWRpbmcgYSBibG9jayBmcm9tIHRoZSBkZXN0aW5hdGlvbgordG8gc2VlIGlmIGl0IGlzIGlkZW50aWNhbCB0byB0aGUgYmxvY2sgd2hpY2gKKy5CIGUyaW1hZ2UKK2lzIGFib3V0IHRvIGNvcHkuICBJZiB0aGUgYmxvY2sgaXMgYWxyZWFkeSB0aGUgc2FtZSwgdGhlIHdyaXRlIGNhbiBiZQorc2tpcHBlZC4gIFRoZQorLkIgXC1uCitvcHRpb24gd2lsbCBjYXVzZSBhbGwgb2YgdGhlIHdyaXRlcyB0byBiZSBuby1vcHMsIGFuZCBwcmludCB0aGUgYmxvY2tzCit0aGF0IHdvdWxkIGhhdmUgYmVlbiB3cml0dGVuLgorLlBQCisuU0ggT0ZGU0VUUworTm9ybWFsbHkgYSBmaWxlc3lzdGVtIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcGFydGl0aW9uLCBhbmQKKy5CIGUyaW1hZ2UKK2lzIHJ1biBvbiB0aGUgcGFydGl0aW9uLiAgV2hlbiB3b3JraW5nIHdpdGggaW1hZ2UgZmlsZXMsIHlvdSBkb24ndAoraGF2ZSB0aGUgb3B0aW9uIG9mIHVzaW5nIHRoZSBwYXJ0aXRpb24gZGV2aWNlLCBzbyB5b3UgY2FuIHNwZWNpZnkKK3RoZSBvZmZzZXQgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gc3RhcnRzIGRpcmVjdGx5IHdpdGggdGhlCisuQiBcLW8KK29wdGlvbi4gIFNpbWlsYXJseSB0aGUKKy5CIFwtTworb3B0aW9uIHNwZWNpZmllcyB0aGUgb2Zmc2V0IHRoYXQgc2hvdWxkIGJlIHNlZWtlZCB0byBpbiB0aGUgZGVzdGluYXRpb24KK2JlZm9yZSB3cml0aW5nIHRoZSBmaWxlc3lzdGVtLgorLlBQCitGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYQorLkIgZGQKK2ltYWdlIG9mIGEgd2hvbGUgaGFyZCBkcml2ZSB0aGF0IGNvbnRhaW5zIGFuIGV4dDIgZnMgaW4gYSBwYXJ0aXRpb24KK3N0YXJ0aW5nIGF0IDEgTWlCLCB5b3UgY2FuIGNsb25lIHRoYXQgZnMgd2l0aDoKKy5QUAorLmJyCitcCVxmQmUyaW1hZ2UgXC1hcm8gMTA0ODU3NiBpbWcgL2Rldi9zZGExXGZSCisuYnIKKy5QUAorT3IgeW91IGNhbiBjbG9uZSBhIGZzIGludG8gYW4gaW1hZ2UgZmlsZSwgbGVhdmluZyByb29tIGluIHRoZSBmaXJzdAorTWlCIGZvciBhIHBhcnRpdGlvbiB0YWJsZSB3aXRoOgorLlBQCisuYnIKK1wJXGZCZTJpbWFnZSAtYXJPIDEwNDg1NzYgL2Rldi9zZGExIGltZ1xmUgorLmJyCisuUFAKK0lmIHlvdSBzcGVjaWZ5IGF0IGxlYXN0IG9uZSBvZmZzZXQsIGFuZCBvbmx5IG9uZSBmaWxlLCBhbiBpbi1wbGFjZQorbW92ZSB3aWxsIGJlIHBlcmZvcm1lZCwgYWxsb3dpbmcgeW91IHRvIHNhZmVseSBtb3ZlIHRoZSBmaWxlc3lzdGVtCitmcm9tIG9uZSBvZmZzZXQgdG8gYW5vdGhlci4KKy5TSCBBVVRIT1IKKy5CIGUyaW1hZ2UKK3dhcyB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gKHR5dHNvQG1pdC5lZHUpLgorLlNIIEFWQUlMQUJJTElUWQorLkIgZTJpbWFnZQoraXMgcGFydCBvZiB0aGUgZTJmc3Byb2dzIHBhY2thZ2UgYW5kIGlzIGF2YWlsYWJsZSBmcm9tCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGR1bXBlMmZzICg4KSwKKy5CUiBkZWJ1Z2ZzICg4KQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9lMmltYWdlLmMgYi9lMmZzcHJvZ3MvbWlzYy9lMmltYWdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjMzE4OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UyaW1hZ2UuYwpAQCAtMCwwICsxLDE2ODMgQEAKKy8qCisgKiBlMmltYWdlLmMgLS0tIFByb2dyYW0gd2hpY2ggd3JpdGVzIGFuIGltYWdlIGZpbGUgYmFja2luZyB1cAorICogY3JpdGljYWwgbWV0YWRhdGEgZm9yIHRoZSBmaWxlc3lzdGVtLgorICoKKyAqIENvcHlyaWdodCAyMDAwLCAyMDAxIGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Z3JwLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorI2luY2x1ZGUgPHB3ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJleHQyZnMvZTJpbWFnZS5oIgorI2luY2x1ZGUgImV4dDJmcy9xY293Mi5oIgorCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisjaW5jbHVkZSAic3VwcG9ydC9wbGF1c2libGUuaCIKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKKyNkZWZpbmUgUUNPV19PRkxBR19DT1BJRUQgICAgICgxTEwgPDwgNjMpCisjZGVmaW5lIE5PX0JMSyAoKGJsazY0X3QpIC0xKQorCisvKiBJbWFnZSB0eXBlcyAqLworI2RlZmluZSBFMklNQUdFX1JBVwkxCisjZGVmaW5lIEUySU1BR0VfUUNPVzIJMgorCisvKiBJbWFnZSBmbGFncyAqLworI2RlZmluZSBFMklNQUdFX0lOU1RBTExfRkxBRwkxCisjZGVmaW5lIEUySU1BR0VfU0NSQU1CTEVfRkxBRwkyCisjZGVmaW5lIEUySU1BR0VfSVNfUUNPVzJfRkxBRwk0CisjZGVmaW5lIEUySU1BR0VfQ0hFQ0tfWkVST19GTEFHCTgKKworc3RhdGljIGNvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWUgPSAiZTJpbWFnZSI7CitzdGF0aWMgY2hhciAqIGRldmljZV9uYW1lID0gTlVMTDsKK3N0YXRpYyBjaGFyIGFsbF9kYXRhOworc3RhdGljIGNoYXIgb3V0cHV0X2lzX2JsazsKK3N0YXRpYyBjaGFyIG5vcF9mbGFnOworLyogd3JpdGluZyB0byBibGsgZGV2aWNlOiBkb24ndCBza2lwIHplcm9lZCBibG9ja3MgKi8KK3N0YXRpYyBibGs2NF90IHNvdXJjZV9vZmZzZXQsIGRlc3Rfb2Zmc2V0Oworc3RhdGljIGNoYXIgbW92ZV9tb2RlOworc3RhdGljIGNoYXIgc2hvd19wcm9ncmVzczsKK3N0YXRpYyBjaGFyICpjaGVja19idWY7CitzdGF0aWMgaW50IHNraXBwZWRfYmxvY2tzOworCitzdGF0aWMgYmxrNjRfdCBhbGlnbl9vZmZzZXQoYmxrNjRfdCBvZmZzZXQsIHVuc2lnbmVkIGludCBuKQoreworCXJldHVybiAob2Zmc2V0ICsgbiAtIDEpICYgfigoYmxrNjRfdCkgbiAtIDEpOworfQorCitzdGF0aWMgaW50IGdldF9iaXRzX2Zyb21fc2l6ZShzaXplX3Qgc2l6ZSkKK3sKKwlpbnQgcmVzID0gMDsKKworCWlmIChzaXplID09IDApCisJCXJldHVybiAtMTsKKworCXdoaWxlIChzaXplICE9IDEpIHsKKwkJLyogTm90IGEgcG93ZXIgb2YgdHdvICovCisJCWlmIChzaXplICYgMSkKKwkJCXJldHVybiAtMTsKKworCQlzaXplID4+PSAxOworCQlyZXMrKzsKKwl9CisJcmV0dXJuIHJlczsKK30KKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgXygiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIpLAorCQlwcm9ncmFtX25hbWUpOworCWZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIpLCBwcm9ncmFtX25hbWUpOworCWZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSAiCisJCQkgICJbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzIFsgZGVzdF9mcyBdXG4iKSwKKwkJcHJvZ3JhbV9uYW1lKTsKKwlleGl0ICgxKTsKK30KKworc3RhdGljIGV4dDJfbG9mZl90IHNlZWtfcmVsYXRpdmUoaW50IGZkLCBpbnQgb2Zmc2V0KQoreworCWV4dDJfbG9mZl90IHJldCA9IGV4dDJmc19sbHNlZWsoZmQsIG9mZnNldCwgU0VFS19DVVIpOworCWlmIChyZXQgPCAwKSB7CisJCXBlcnJvcigic2Vla19yZWxhdGl2ZSIpOworCQlleGl0KDEpOworCX0KKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgZXh0Ml9sb2ZmX3Qgc2Vla19zZXQoaW50IGZkLCBleHQyX2xvZmZfdCBvZmZzZXQpCit7CisJZXh0Ml9sb2ZmX3QgcmV0ID0gZXh0MmZzX2xsc2VlayhmZCwgb2Zmc2V0LCBTRUVLX1NFVCk7CisJaWYgKHJldCA8IDApIHsKKwkJcGVycm9yKCJzZWVrX3NldCIpOworCQlleGl0KDEpOworCX0KKwlyZXR1cm4gcmV0OworfQorCisvKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSBibG9jayB3ZSBhcmUgYWJvdXQgdG8gd3JpdGUgaXMgaWRlbnRpY2FsIHRvCisgKiB3aGF0IGlzIGFscmVhZHkgb24gdGhlIGRpc2suCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfYmxvY2soaW50IGZkLCB2b2lkICpidWYsIHZvaWQgKmNidWYsIGludCBibG9ja3NpemUpCit7CisJY2hhciAqY3AgPSBjYnVmOworCWludCBjb3VudCA9IGJsb2Nrc2l6ZSwgcmV0OworCisJaWYgKGNidWYgPT0gTlVMTCkKKwkJcmV0dXJuIDA7CisKKwl3aGlsZSAoY291bnQgPiAwKSB7CisJCXJldCA9IHJlYWQoZmQsIGNwLCBjb3VudCk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlwZXJyb3IoImNoZWNrX2Jsb2NrIik7CisJCQlleGl0KDEpOworCQl9CisJCWNvdW50IC09IHJldDsKKwkJY3AgKz0gcmV0OworCX0KKwlyZXQgPSBtZW1jbXAoYnVmLCBjYnVmLCBibG9ja3NpemUpOworCXNlZWtfcmVsYXRpdmUoZmQsIC1ibG9ja3NpemUpOworCXJldHVybiAocmV0ID09IDApID8gMSA6IDA7Cit9CisKK3N0YXRpYyB2b2lkIGdlbmVyaWNfd3JpdGUoaW50IGZkLCB2b2lkICpidWYsIGludCBibG9ja3NpemUsIGJsazY0X3QgYmxvY2spCit7CisJaW50IGNvdW50LCBmcmVlX2J1ZiA9IDA7CisJZXJyY29kZV90IGVycjsKKworCWlmICghYmxvY2tzaXplKQorCQlyZXR1cm47CisKKwlpZiAoIWJ1ZikgeworCQlmcmVlX2J1ZiA9IDE7CisJCWVyciA9IGV4dDJmc19nZXRfYXJyYXl6ZXJvKDEsIGJsb2Nrc2l6ZSwgJmJ1Zik7CisJCWlmIChlcnIpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnIsICIlcyIsCisJCQkJXygid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCWlmIChub3BfZmxhZykgeworCQlwcmludGYoXygiV3JpdGluZyBibG9jayAlbGx1XG4iKSwgKHVuc2lnbmVkIGxvbmcgbG9uZykgYmxvY2spOworCQlpZiAoZmQgIT0gMSkKKwkJCXNlZWtfcmVsYXRpdmUoZmQsIGJsb2Nrc2l6ZSk7CisJCWdvdG8gZnJlZV9hbmRfcmV0dXJuOworCX0KKwljb3VudCA9IHdyaXRlKGZkLCBidWYsIGJsb2Nrc2l6ZSk7CisJaWYgKGNvdW50ICE9IGJsb2Nrc2l6ZSkgeworCQlpZiAoY291bnQgPT0gLTEpCisJCQllcnIgPSBlcnJubzsKKwkJZWxzZQorCQkJZXJyID0gMDsKKworCQlpZiAoYmxvY2spCisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgZXJyLAorCQkJCV8oImVycm9yIHdyaXRpbmcgYmxvY2sgJWxsdSIpLCBibG9jayk7CisJCWVsc2UKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnIsICIlcyIsCisJCQkJXygiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIikpOworCisJCWV4aXQoMSk7CisJfQorZnJlZV9hbmRfcmV0dXJuOgorCWlmIChmcmVlX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZidWYpOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9oZWFkZXIoaW50IGZkLCB2b2lkICpoZHIsIGludCBoZHJfc2l6ZSwgaW50IHdydF9zaXplKQoreworCWNoYXIgKmhlYWRlcl9idWY7CisJaW50IHJldDsKKworCS8qIFNhbml0eSBjaGVjayAqLworCWlmIChoZHJfc2l6ZSA+IHdydF9zaXplKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJXygiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iKSk7CisJfQorCisJcmV0ID0gZXh0MmZzX2dldF9tZW0od3J0X3NpemUsICZoZWFkZXJfYnVmKTsKKwlpZiAocmV0KSB7CisJCWZwdXRzKF8oIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIpLCBzdGRlcnIpOworCQlleGl0KDEpOworCX0KKworCXNlZWtfc2V0KGZkLCAwKTsKKwltZW1zZXQoaGVhZGVyX2J1ZiwgMCwgd3J0X3NpemUpOworCisJaWYgKGhkcikKKwkJbWVtY3B5KGhlYWRlcl9idWYsIGhkciwgaGRyX3NpemUpOworCisJZ2VuZXJpY193cml0ZShmZCwgaGVhZGVyX2J1Ziwgd3J0X3NpemUsIE5PX0JMSyk7CisKKwlleHQyZnNfZnJlZV9tZW0oJmhlYWRlcl9idWYpOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9pbWFnZV9maWxlKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQpCit7CisJc3RydWN0IGV4dDJfaW1hZ2VfaGRyCWhkcjsKKwlzdHJ1Y3Qgc3RhdAkJc3Q7CisJZXJyY29kZV90CQlyZXR2YWw7CisKKwl3cml0ZV9oZWFkZXIoZmQsIE5VTEwsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbWFnZV9oZHIpLCBmcy0+YmxvY2tzaXplKTsKKwltZW1zZXQoJmhkciwgMCwgc2l6ZW9mKHN0cnVjdCBleHQyX2ltYWdlX2hkcikpOworCisJaGRyLm9mZnNldF9zdXBlciA9IHNlZWtfcmVsYXRpdmUoZmQsIDApOworCXJldHZhbCA9IGV4dDJmc19pbWFnZV9zdXBlcl93cml0ZShmcywgZmQsIDApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwloZHIub2Zmc2V0X2lub2RlID0gc2Vla19yZWxhdGl2ZShmZCwgMCk7CisJcmV0dmFsID0gZXh0MmZzX2ltYWdlX2lub2RlX3dyaXRlKGZzLCBmZCwKKwkJCQkgIChmZCAhPSAxKSA/IElNQUdFUl9GTEFHX1NQQVJTRVdSSVRFIDogMCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwloZHIub2Zmc2V0X2Jsb2NrbWFwID0gc2Vla19yZWxhdGl2ZShmZCwgMCk7CisJcmV0dmFsID0gZXh0MmZzX2ltYWdlX2JpdG1hcF93cml0ZShmcywgZmQsIDApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIikpOworCQlleGl0KDEpOworCX0KKworCWhkci5vZmZzZXRfaW5vZGVtYXAgPSBzZWVrX3JlbGF0aXZlKGZkLCAwKTsKKwlyZXR2YWwgPSBleHQyZnNfaW1hZ2VfYml0bWFwX3dyaXRlKGZzLCBmZCwgSU1BR0VSX0ZMQUdfSU5PREVNQVApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIikpOworCQlleGl0KDEpOworCX0KKworCWhkci5tYWdpY19udW1iZXIgPSBFWFQyX0VUX01BR0lDX0UySU1BR0U7CisJc3RyY3B5KGhkci5tYWdpY19kZXNjcmlwdG9yLCAiRXh0MiBJbWFnZSAxLjAiKTsKKwlnZXRob3N0bmFtZShoZHIuZnNfaG9zdG5hbWUsIHNpemVvZihoZHIuZnNfaG9zdG5hbWUpKTsKKwlzdHJuY3B5KGhkci5mc19kZXZpY2VfbmFtZSwgZGV2aWNlX25hbWUsIHNpemVvZihoZHIuZnNfZGV2aWNlX25hbWUpLTEpOworCWhkci5mc19kZXZpY2VfbmFtZVtzaXplb2YoaGRyLmZzX2RldmljZV9uYW1lKSAtIDFdID0gMDsKKwloZHIuZnNfYmxvY2tzaXplID0gZnMtPmJsb2Nrc2l6ZTsKKworCWlmIChzdGF0KGRldmljZV9uYW1lLCAmc3QpID09IDApCisJCWhkci5mc19kZXZpY2UgPSBzdC5zdF9yZGV2OworCisJaWYgKGZzdGF0KGZkLCAmc3QpID09IDApIHsKKwkJaGRyLmltYWdlX2RldmljZSA9IHN0LnN0X2RldjsKKwkJaGRyLmltYWdlX2lub2RlID0gc3Quc3RfaW5vOworCX0KKwltZW1jcHkoaGRyLmZzX3V1aWQsIGZzLT5zdXBlci0+c191dWlkLCBzaXplb2YoaGRyLmZzX3V1aWQpKTsKKworCWhkci5pbWFnZV90aW1lID0gdGltZSgwKTsKKwl3cml0ZV9oZWFkZXIoZmQsICZoZHIsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbWFnZV9oZHIpLCBmcy0+YmxvY2tzaXplKTsKK30KKworLyoKKyAqIFRoZXNlIHNldCBvZiBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gd3JpdGUgYSBSQVcgaW1hZ2UgZmlsZS4KKyAqLworc3RhdGljIGV4dDJmc19ibG9ja19iaXRtYXAgbWV0YV9ibG9ja19tYXA7CitzdGF0aWMgZXh0MmZzX2Jsb2NrX2JpdG1hcCBzY3JhbWJsZV9ibG9ja19tYXA7CS8qIERpcmVjdG9yeSBibG9ja3MgdG8gYmUgc2NyYW1ibGVkICovCitzdGF0aWMgYmxrNjRfdCBtZXRhX2Jsb2Nrc19jb3VudDsKKworc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0IHsKKwlleHQyX2lub190CWlubzsKKwlpbnQJCWlzX2RpcjsKK307CisKKy8qCisgKiBUaGVzZSBzdWJyb3V0aW5lcyBzaG9ydCBjaXJjdWl0cyBleHQyZnNfZ2V0X2Jsb2NrcyBhbmQKKyAqIGV4dDJmc19jaGVja19kaXJlY3Rvcnk7IHdlIHVzZSB0aGVtIHNpbmNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgaW5vZGUKKyAqIHN0cnVjdHVyZSwgc28gdGhlcmUncyBubyBwb2ludCBpbiBsZXR0aW5nIHRoZSBleHQyZnMgbGlicmFyeSByZWFkCisgKiB0aGUgaW5vZGUgYWdhaW4uCisgKi8KK3N0YXRpYyBpbm9fdCBzdGFzaGVkX2lubyA9IDA7CitzdGF0aWMgc3RydWN0IGV4dDJfaW5vZGUgKnN0YXNoZWRfaW5vZGU7CisKK3N0YXRpYyBlcnJjb2RlX3QgbWV0YV9nZXRfYmxvY2tzKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIGJsa190ICpibG9ja3MpCit7CisJaW50CWk7CisKKwlpZiAoKGlubyAhPSBzdGFzaGVkX2lubykgfHwgIXN0YXNoZWRfaW5vZGUpCisJCXJldHVybiBFWFQyX0VUX0NBTExCQUNLX05PVEhBTkRMRUQ7CisKKwlmb3IgKGk9MDsgaSA8IEVYVDJfTl9CTE9DS1M7IGkrKykKKwkJYmxvY2tzW2ldID0gc3Rhc2hlZF9pbm9kZS0+aV9ibG9ja1tpXTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBtZXRhX2NoZWNrX2RpcmVjdG9yeShleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJICAgICAgZXh0Ml9pbm9fdCBpbm8pCit7CisJaWYgKChpbm8gIT0gc3Rhc2hlZF9pbm8pIHx8ICFzdGFzaGVkX2lub2RlKQorCQlyZXR1cm4gRVhUMl9FVF9DQUxMQkFDS19OT1RIQU5ETEVEOworCisJaWYgKCFMSU5VWF9TX0lTRElSKHN0YXNoZWRfaW5vZGUtPmlfbW9kZSkpCisJCXJldHVybiBFWFQyX0VUX05PX0RJUkVDVE9SWTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVycmNvZGVfdCBtZXRhX3JlYWRfaW5vZGUoZXh0Ml9maWxzeXMgZnMgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSBleHQyX2lub190IGlubywKKwkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCWlmICgoaW5vICE9IHN0YXNoZWRfaW5vKSB8fCAhc3Rhc2hlZF9pbm9kZSkKKwkJcmV0dXJuIEVYVDJfRVRfQ0FMTEJBQ0tfTk9USEFORExFRDsKKwkqaW5vZGUgPSAqc3Rhc2hlZF9pbm9kZTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgdXNlX2lub2RlX3Nob3J0Y3V0cyhleHQyX2ZpbHN5cyBmcywgaW50IHVzZV9zaG9ydGN1dHMpCit7CisJaWYgKHVzZV9zaG9ydGN1dHMpIHsKKwkJZnMtPmdldF9ibG9ja3MgPSBtZXRhX2dldF9ibG9ja3M7CisJCWZzLT5jaGVja19kaXJlY3RvcnkgPSBtZXRhX2NoZWNrX2RpcmVjdG9yeTsKKwkJZnMtPnJlYWRfaW5vZGUgPSBtZXRhX3JlYWRfaW5vZGU7CisJCXN0YXNoZWRfaW5vID0gMDsKKwl9IGVsc2UgeworCQlmcy0+Z2V0X2Jsb2NrcyA9IDA7CisJCWZzLT5jaGVja19kaXJlY3RvcnkgPSAwOworCQlmcy0+cmVhZF9pbm9kZSA9IDA7CisJfQorfQorCitzdGF0aWMgaW50IHByb2Nlc3NfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgYmxrNjRfdCAqYmxvY2tfbnIsCisJCQkgICAgIGUyX2Jsa2NudF90IGJsb2NrY250IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIHZvaWQgKnByaXZfZGF0YSBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwOworCisJcCA9IChzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgKikgcHJpdl9kYXRhOworCisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihtZXRhX2Jsb2NrX21hcCwgKmJsb2NrX25yKTsKKwltZXRhX2Jsb2Nrc19jb3VudCsrOworCWlmIChzY3JhbWJsZV9ibG9ja19tYXAgJiYgcC0+aXNfZGlyICYmIGJsb2NrY250ID49IDApCisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoc2NyYW1ibGVfYmxvY2tfbWFwLCAqYmxvY2tfbnIpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfZmlsZV9ibG9jayhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICBibGs2NF90ICpibG9ja19uciwKKwkJCSAgICAgIGUyX2Jsa2NudF90IGJsb2NrY250LAorCQkJICAgICAgYmxrNjRfdCByZWZfYmxvY2sgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgdm9pZCAqcHJpdl9kYXRhIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlpZiAoYmxvY2tjbnQgPCAwIHx8IGFsbF9kYXRhKSB7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsICpibG9ja19ucik7CisJCW1ldGFfYmxvY2tzX2NvdW50Kys7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBtYXJrX3RhYmxlX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcykKK3sKKwlibGs2NF90CWZpcnN0X2Jsb2NrLCBiOworCXVuc2lnbmVkIGludAlpLGo7CisKKwlmaXJzdF9ibG9jayA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCS8qCisJICogTWFyayBwcmltYXJ5IHN1cGVyYmxvY2sKKwkgKi8KKwlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKG1ldGFfYmxvY2tfbWFwLCBmaXJzdF9ibG9jayk7CisJbWV0YV9ibG9ja3NfY291bnQrKzsKKworCS8qCisJICogTWFyayB0aGUgcHJpbWFyeSBzdXBlcmJsb2NrIGRlc2NyaXB0b3JzCisJICovCisJZm9yIChqID0gMDsgaiA8IGZzLT5kZXNjX2Jsb2NrczsgaisrKSB7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsCisJCQkgZXh0MmZzX2Rlc2NyaXB0b3JfYmxvY2tfbG9jMihmcywgZmlyc3RfYmxvY2ssIGopKTsKKwl9CisJbWV0YV9ibG9ja3NfY291bnQgKz0gZnMtPmRlc2NfYmxvY2tzOworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJLyoKKwkJICogTWFyayB0aGUgYmxvY2tzIHVzZWQgZm9yIHRoZSBpbm9kZSB0YWJsZQorCQkgKi8KKwkJaWYgKChvdXRwdXRfaXNfYmxrIHx8CisJCSAgICAgIWV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBpLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCkpICYmCisJCSAgICBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSkgeworCQkJdW5zaWduZWQgaW50IGVuZCA9ICh1bnNpZ25lZCkgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCQkvKiBza2lwIHVudXNlZCBibG9ja3MgKi8KKwkJCWlmICghb3V0cHV0X2lzX2JsayAmJiBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpCisJCQkJZW5kIC09IChleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgaSkgLworCQkJCQlFWFQyX0lOT0RFU19QRVJfQkxPQ0soZnMtPnN1cGVyKSk7CisJCQlmb3IgKGogPSAwLCBiID0gZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSk7CisJCQkgICAgIGogPCBlbmQ7CisJCQkgICAgIGorKywgYisrKSB7CisJCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihtZXRhX2Jsb2NrX21hcCwgYik7CisJCQkJbWV0YV9ibG9ja3NfY291bnQrKzsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIE1hcmsgYmxvY2sgdXNlZCBmb3IgdGhlIGJsb2NrIGJpdG1hcAorCQkgKi8KKwkJaWYgKCFleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19CTE9DS19VTklOSVQpICYmCisJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpIHsKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsCisJCQkJICAgICBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpOworCQkJbWV0YV9ibG9ja3NfY291bnQrKzsKKwkJfQorCisJCS8qCisJCSAqIE1hcmsgYmxvY2sgdXNlZCBmb3IgdGhlIGlub2RlIGJpdG1hcAorCQkgKi8KKwkJaWYgKCFleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpICYmCisJCSAgICBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSkpIHsKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsCisJCQkJIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSk7CisJCQltZXRhX2Jsb2Nrc19jb3VudCsrOworCQl9CisJfQorfQorCisvKgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgaWYgdGhlIHNwZWNpZmllZCBibG9jayBpcyBhbGwgemVyb3MKKyAqLworc3RhdGljIGludCBjaGVja196ZXJvX2Jsb2NrKGNoYXIgKmJ1ZiwgaW50IGJsb2Nrc2l6ZSkKK3sKKwljaGFyCSpjcCA9IGJ1ZjsKKwlpbnQJbGVmdCA9IGJsb2Nrc2l6ZTsKKworCWlmIChvdXRwdXRfaXNfYmxrKQorCQlyZXR1cm4gMDsKKwl3aGlsZSAobGVmdCA+IDApIHsKKwkJaWYgKCpjcCsrKQorCQkJcmV0dXJuIDA7CisJCWxlZnQtLTsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgbmFtZV9pZFsyNTZdOworCisjZGVmaW5lIEVYVDRfTUFYX1JFQ19MRU4JCSgoMTw8MTYpLTEpCisKK3N0YXRpYyB2b2lkIHNjcmFtYmxlX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBibGssIGNoYXIgKmJ1ZikKK3sKKwljaGFyICpwLCAqZW5kLCAqY3A7CisJc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKmRpcmVudDsKKwl1bnNpZ25lZCBpbnQgcmVjX2xlbjsKKwlpbnQgaWQsIGxlbjsKKworCWVuZCA9IGJ1ZiArIGZzLT5ibG9ja3NpemU7CisJZm9yIChwID0gYnVmOyBwIDwgZW5kLTg7IHAgKz0gcmVjX2xlbikgeworCQlkaXJlbnQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5XzIgKikgcDsKKwkJcmVjX2xlbiA9IGRpcmVudC0+cmVjX2xlbjsKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKwkJcmVjX2xlbiA9IGV4dDJmc19zd2FiMTYocmVjX2xlbik7CisjZW5kaWYKKwkJaWYgKHJlY19sZW4gPT0gRVhUNF9NQVhfUkVDX0xFTiB8fCByZWNfbGVuID09IDApCisJCQlyZWNfbGVuID0gZnMtPmJsb2Nrc2l6ZTsKKwkJZWxzZSAKKwkJCXJlY19sZW4gPSAocmVjX2xlbiAmIDY1NTMyKSB8ICgocmVjX2xlbiAmIDMpIDw8IDE2KTsKKyNpZiAwCisJCXByaW50ZigicmVjX2xlbiA9ICVkLCBuYW1lX2xlbiA9ICVkXG4iLCByZWNfbGVuLCBkaXJlbnQtPm5hbWVfbGVuKTsKKyNlbmRpZgorCQlpZiAocmVjX2xlbiA8IDggfHwgKHJlY19sZW4gJSA0KSB8fAorCQkgICAgKHArcmVjX2xlbiA+IGVuZCkpIHsKKwkJCXByaW50ZihfKCJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiAiCisJCQkJICJiYWQgcmVjX2xlbiAoJWQpXG4iKSwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZyBsb25nKSBibGssIHJlY19sZW4pOworCQkJcmVjX2xlbiA9IGVuZCAtIHA7CisJCQkodm9pZCkgZXh0MmZzX3NldF9yZWNfbGVuKGZzLCByZWNfbGVuLAorCQkJCQkoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopIGRpcmVudCk7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisJCQlkaXJlbnQtPnJlY19sZW4gPSBleHQyZnNfc3dhYjE2KGRpcmVudC0+cmVjX2xlbik7CisjZW5kaWYKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChkaXJlbnQtPm5hbWVfbGVuICsgOFUgPiByZWNfbGVuKSB7CisJCQlwcmludGYoXygiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogIgorCQkJCSAiYmFkIG5hbWVfbGVuICglZClcbiIpLAorCQkJICAgICAgICh1bnNpZ25lZCBsb25nIGxvbmcpIGJsaywgZGlyZW50LT5uYW1lX2xlbik7CisJCQlkaXJlbnQtPm5hbWVfbGVuID0gcmVjX2xlbiAtIDg7CisJCQljb250aW51ZTsKKwkJfQorCQljcCA9IHArODsKKwkJbGVuID0gcmVjX2xlbiAtIGRpcmVudC0+bmFtZV9sZW4gLSA4OworCQlpZiAobGVuID4gMCkKKwkJCW1lbXNldChjcCtkaXJlbnQtPm5hbWVfbGVuLCAwLCBsZW4pOworCQlpZiAoZGlyZW50LT5uYW1lX2xlbj09MSAmJiBjcFswXSA9PSAnLicpCisJCQljb250aW51ZTsKKwkJaWYgKGRpcmVudC0+bmFtZV9sZW49PTIgJiYgY3BbMF0gPT0gJy4nICYmIGNwWzFdID09ICcuJykKKwkJCWNvbnRpbnVlOworCisJCW1lbXNldChjcCwgJ0EnLCBkaXJlbnQtPm5hbWVfbGVuKTsKKwkJbGVuID0gZGlyZW50LT5uYW1lX2xlbjsKKwkJaWQgPSBuYW1lX2lkW2xlbl0rKzsKKwkJd2hpbGUgKChsZW4gPiAwKSAmJiAoaWQgPiAwKSkgeworCQkJKmNwICs9IGlkICUgMjY7CisJCQlpZCA9IGlkIC8gMjY7CisJCQljcCsrOworCQkJbGVuLS07CisJCX0KKwl9Cit9CisKK3N0YXRpYyBjaGFyIGdvdF9zaWdpbnQ7CisKK3N0YXRpYyB2b2lkIHNpZ2ludF9oYW5kbGVyKGludCB1bnVzZWQgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWdvdF9zaWdpbnQgPSAxOworCXNpZ25hbCAoU0lHSU5ULCBTSUdfREZMKTsKK30KKworI2RlZmluZSBjYWxjX3BlcmNlbnQoYSwgYikgKChpbnQpICgoMTAwLjAgKiAoKChmbG9hdCkgKGEpKSAvIFwKKwkJCQkJICAgICAoKGZsb2F0KSAoYikpKSkgKyAwLjUpKQorI2RlZmluZSBjYWxjX3JhdGUodCwgYiwgZCkgKCgoZmxvYXQpKHQpIC8gKCgxMDI0ICogMTAyNCkgLyAoYikpKSAvIChkKSkKKworc3RhdGljIGludCBwcmludF9wcm9ncmVzcyhibGs2NF90IG51bSwgYmxrNjRfdCB0b3RhbCkKK3sKKwlyZXR1cm4gZnByaW50ZihzdGRlcnIsIF8oIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiKSwgbnVtLCB0b3RhbCwKKwkJICAgICAgY2FsY19wZXJjZW50KG51bSwgdG90YWwpKTsKK30KKworc3RhdGljIHZvaWQgb3V0cHV0X21ldGFfZGF0YV9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsIGludCBmZCwgaW50IGZsYWdzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJYmxrOworCWNoYXIJCSpidWYsICp6ZXJvX2J1ZjsKKwlpbnQJCXNwYXJzZSA9IDA7CisJYmxrNjRfdAkJc3RhcnQgPSAwOworCWJsazY0X3QJCWRpc3RhbmNlID0gMDsKKwlibGs2NF90CQllbmQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJdGltZV90CQlsYXN0X3VwZGF0ZSA9IDA7CisJdGltZV90CQlzdGFydF90aW1lID0gMDsKKwlibGs2NF90CQl0b3RhbF93cml0dGVuID0gMDsKKwlpbnQJCWJzY291bnQgPSAwOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiKSk7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhmcy0+YmxvY2tzaXplLCAmemVyb19idWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIikpOworCQlleGl0KDEpOworCX0KKwlpZiAoc2hvd19wcm9ncmVzcykgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiQ29weWluZyAiKSk7CisJCWJzY291bnQgPSBwcmludF9wcm9ncmVzcyh0b3RhbF93cml0dGVuLCBtZXRhX2Jsb2Nrc19jb3VudCk7CisJCWZmbHVzaChzdGRlcnIpOworCQlsYXN0X3VwZGF0ZSA9IHRpbWUoTlVMTCk7CisJCXN0YXJ0X3RpbWUgPSB0aW1lKE5VTEwpOworCX0KKwkvKiB3aGVuIGRvaW5nIGFuIGluIHBsYWNlIG1vdmUgdG8gdGhlIHJpZ2h0LCB5b3UgY2FuJ3Qgc3RhcnQKKwkgICBhdCB0aGUgYmVnaW5uaW5nIG9yIHlvdSB3aWxsIG92ZXJ3cml0ZSBkYXRhLCBzbyBpbnN0ZWFkCisJICAgZGl2aWRlIHRoZSBmcyB1cCBpbnRvIGRpc3RhbmNlIHNpemUgY2h1bmtzIGFuZCB3cml0ZSB0aGVtCisJICAgaW4gcmV2ZXJzZS4gKi8KKwlpZiAobW92ZV9tb2RlICYmIGRlc3Rfb2Zmc2V0ID4gc291cmNlX29mZnNldCkgeworCQlkaXN0YW5jZSA9IChkZXN0X29mZnNldCAtIHNvdXJjZV9vZmZzZXQpIC8gZnMtPmJsb2Nrc2l6ZTsKKwkJaWYgKGRpc3RhbmNlIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQkJc3RhcnQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSBkaXN0YW5jZTsKKwl9CisJaWYgKG1vdmVfbW9kZSkKKwkJc2lnbmFsIChTSUdJTlQsIHNpZ2ludF9oYW5kbGVyKTsKK21vcmVfYmxvY2tzOgorCWlmIChkaXN0YW5jZSkKKwkJc2Vla19zZXQoZmQsIChzdGFydCAqIGZzLT5ibG9ja3NpemUpICsgZGVzdF9vZmZzZXQpOworCWZvciAoYmxrID0gc3RhcnQ7IGJsayA8IGVuZDsgYmxrKyspIHsKKwkJaWYgKGdvdF9zaWdpbnQpIHsKKwkJCWlmIChkaXN0YW5jZSkgeworCQkJCS8qIG1vdmluZyB0byB0aGUgcmlnaHQgKi8KKwkJCQlpZiAoZGlzdGFuY2UgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpfHwKKwkJCQkgICAgc3RhcnQgPT0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpIC0KKwkJCQkJCWRpc3RhbmNlKQorCQkJCQlraWxsKGdldHBpZCgpLCBTSUdJTlQpOworCQkJfSBlbHNlIHsKKwkJCQkvKiBtb3ZpbmcgdG8gdGhlIGxlZnQgKi8KKwkJCQlpZiAoYmxrIDwgKHNvdXJjZV9vZmZzZXQgLSBkZXN0X29mZnNldCkgLworCQkJCSAgICBmcy0+YmxvY2tzaXplKQorCQkJCQlraWxsKGdldHBpZCgpLCBTSUdJTlQpOworCQkJfQorCQkJaWYgKHNob3dfcHJvZ3Jlc3MpCisJCQkJZnB1dGMoJ1xyJywgc3RkZXJyKTsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJCV8oIlN0b3BwaW5nIG5vdyB3aWxsIGRlc3Ryb3kgdGhlIGZpbGVzeXN0ZW0sICIKKwkJCQkgImludGVycnVwdCBhZ2FpbiBpZiB5b3UgYXJlIHN1cmVcbiIpKTsKKwkJCWlmIChzaG93X3Byb2dyZXNzKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIkNvcHlpbmcgIikpOworCQkJCWJzY291bnQgPSBwcmludF9wcm9ncmVzcyh0b3RhbF93cml0dGVuLAorCQkJCQkJCSBtZXRhX2Jsb2Nrc19jb3VudCk7CisJCQkJZmZsdXNoKHN0ZGVycik7CisJCQl9CisKKwkJCWdvdF9zaWdpbnQgPSAwOworCQl9CisJCWlmIChzaG93X3Byb2dyZXNzICYmIGxhc3RfdXBkYXRlICE9IHRpbWUoTlVMTCkpIHsKKwkJCXRpbWVfdCBkdXJhdGlvbjsKKwkJCWxhc3RfdXBkYXRlID0gdGltZShOVUxMKTsKKwkJCXdoaWxlIChic2NvdW50LS0pCisJCQkJZnB1dGMoJ1xiJywgc3RkZXJyKTsKKwkJCWJzY291bnQgPSBwcmludF9wcm9ncmVzcyh0b3RhbF93cml0dGVuLAorCQkJCQkJIG1ldGFfYmxvY2tzX2NvdW50KTsKKwkJCWR1cmF0aW9uID0gdGltZShOVUxMKSAtIHN0YXJ0X3RpbWU7CisJCQlpZiAoZHVyYXRpb24gPiA1ICYmIHRvdGFsX3dyaXR0ZW4pIHsKKwkJCQl0aW1lX3QgZXN0ID0gKGR1cmF0aW9uICogbWV0YV9ibG9ja3NfY291bnQgLworCQkJCQkgICAgICB0b3RhbF93cml0dGVuKSAtIGR1cmF0aW9uOworCQkJCWNoYXIgYnVmZlszMF07CisJCQkJc3RyZnRpbWUoYnVmZiwgMzAsICIlVCIsIGdtdGltZSgmZXN0KSk7CisJCQkJYnNjb3VudCArPQorCQkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJCV8oIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIiksCisJCQkJCQlidWZmLCBjYWxjX3JhdGUodG90YWxfd3JpdHRlbiwKKwkJCQkJCQkJZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJCQkJZHVyYXRpb24pKTsKKwkJCX0KKwkJCWZmbHVzaCAoc3RkZXJyKTsKKwkJfQorCQlpZiAoKGJsayA+PSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgJiYKKwkJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsIGJsaykpIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgMSwgYnVmKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCQlfKCJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiKSwgYmxrKTsKKwkJCX0KKwkJCXRvdGFsX3dyaXR0ZW4rKzsKKwkJCWlmIChzY3JhbWJsZV9ibG9ja19tYXAgJiYKKwkJCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHNjcmFtYmxlX2Jsb2NrX21hcCwgYmxrKSkKKwkJCQlzY3JhbWJsZV9kaXJfYmxvY2soZnMsIGJsaywgYnVmKTsKKwkJCWlmICgoZmxhZ3MgJiBFMklNQUdFX0NIRUNLX1pFUk9fRkxBRykgJiYKKwkJCSAgICBjaGVja196ZXJvX2Jsb2NrKGJ1ZiwgZnMtPmJsb2Nrc2l6ZSkpCisJCQkJZ290byBzcGFyc2Vfd3JpdGU7CisJCQlpZiAoc3BhcnNlKQorCQkJCXNlZWtfcmVsYXRpdmUoZmQsIHNwYXJzZSk7CisJCQlzcGFyc2UgPSAwOworCQkJaWYgKGNoZWNrX2Jsb2NrKGZkLCBidWYsIGNoZWNrX2J1ZiwgZnMtPmJsb2Nrc2l6ZSkpIHsKKwkJCQlzZWVrX3JlbGF0aXZlKGZkLCBmcy0+YmxvY2tzaXplKTsKKwkJCQlza2lwcGVkX2Jsb2NrcysrOworCQkJfSBlbHNlCisJCQkJZ2VuZXJpY193cml0ZShmZCwgYnVmLCBmcy0+YmxvY2tzaXplLCBibGspOworCQl9IGVsc2UgeworCQlzcGFyc2Vfd3JpdGU6CisJCQlpZiAoZmQgPT0gMSkgeworCQkJCWlmICghbm9wX2ZsYWcpCisJCQkJCWdlbmVyaWNfd3JpdGUoZmQsIHplcm9fYnVmLAorCQkJCQkJICAgICAgZnMtPmJsb2Nrc2l6ZSwgYmxrKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXNwYXJzZSArPSBmcy0+YmxvY2tzaXplOworCQkJaWYgKHNwYXJzZSA+IDEwMjQqMTAyNCkgeworCQkJCXNlZWtfcmVsYXRpdmUoZmQsIDEwMjQqMTAyNCk7CisJCQkJc3BhcnNlIC09IDEwMjQqMTAyNDsKKwkJCX0KKwkJfQorCX0KKwlpZiAoZGlzdGFuY2UgJiYgc3RhcnQpIHsKKwkJaWYgKHN0YXJ0IDwgZGlzdGFuY2UpIHsKKwkJCWVuZCA9IHN0YXJ0OworCQkJc3RhcnQgPSAwOworCQl9IGVsc2UgeworCQkJZW5kIC09IGRpc3RhbmNlOworCQkJc3RhcnQgLT0gZGlzdGFuY2U7CisJCQlpZiAoZW5kIDwgZGlzdGFuY2UpIHsKKwkJCQkvKiBwYXN0IG92ZXJsYXAsIGRvIHJlc3QgaW4gb25lIGdvICovCisJCQkJZW5kID0gc3RhcnQ7CisJCQkJc3RhcnQgPSAwOworCQkJfQorCQl9CisJCXNwYXJzZSA9IDA7CisJCWdvdG8gbW9yZV9ibG9ja3M7CisJfQorCXNpZ25hbCAoU0lHSU5ULCBTSUdfREZMKTsKKwlpZiAoc2hvd19wcm9ncmVzcykgeworCQl0aW1lX3QgZHVyYXRpb24gPSB0aW1lKE5VTEwpIC0gc3RhcnRfdGltZTsKKwkJY2hhciBidWZmWzMwXTsKKwkJZnB1dGMoJ1xyJywgc3RkZXJyKTsKKwkJc3RyZnRpbWUoYnVmZiwgMzAsICIlVCIsIGdtdGltZSgmZHVyYXRpb24pKTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIpLAorCQkJdG90YWxfd3JpdHRlbiwgbWV0YV9ibG9ja3NfY291bnQsCisJCQljYWxjX3BlcmNlbnQodG90YWxfd3JpdHRlbiwgbWV0YV9ibG9ja3NfY291bnQpLCBidWZmKTsKKwkJaWYgKGR1cmF0aW9uKQorCQkJZnByaW50ZihzdGRlcnIsIF8oImF0ICUuMmYgTUIvcyIpLAorCQkJCWNhbGNfcmF0ZSh0b3RhbF93cml0dGVuLCBmcy0+YmxvY2tzaXplLCBkdXJhdGlvbikpOworCQlmcHV0cygiICAgICAgIFxuIiwgc3RkZXJyKTsKKwl9CisjaWZkZWYgSEFWRV9GVFJVTkNBVEU2NAorCWlmIChzcGFyc2UpIHsKKwkJZXh0Ml9sb2ZmX3Qgb2Zmc2V0OworCQlpZiAoZGlzdGFuY2UpCisJCQlvZmZzZXQgPSBzZWVrX3NldChmZCwKKwkJCQkJICBmcy0+YmxvY2tzaXplICogZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpICsgZGVzdF9vZmZzZXQpOworCQllbHNlCisJCQlvZmZzZXQgPSBzZWVrX3JlbGF0aXZlKGZkLCBzcGFyc2UpOworCisJCWlmIChmdHJ1bmNhdGU2NChmZCwgb2Zmc2V0KSA8IDApIHsKKwkJCXNlZWtfcmVsYXRpdmUoZmQsIC0xKTsKKwkJCWdlbmVyaWNfd3JpdGUoZmQsIHplcm9fYnVmLCAxLCBOT19CTEspOworCQl9CisJfQorI2Vsc2UKKwlpZiAoc3BhcnNlICYmICFkaXN0YW5jZSkgeworCQlzZWVrX3JlbGF0aXZlKGZkLCBzcGFyc2UtMSk7CisJCWdlbmVyaWNfd3JpdGUoZmQsIHplcm9fYnVmLCAxLCBOT19CTEspOworCX0KKyNlbmRpZgorCWV4dDJmc19mcmVlX21lbSgmemVyb19idWYpOworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKK30KKworc3RhdGljIHZvaWQgaW5pdF9sMV90YWJsZShzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSAqaW1hZ2UpCit7CisJX191NjQgKmwxX3RhYmxlOworCWVycmNvZGVfdCByZXQ7CisKKwlyZXQgPSBleHQyZnNfZ2V0X2FycmF5emVybyhpbWFnZS0+bDFfc2l6ZSwgc2l6ZW9mKF9fdTY0KSwgJmwxX3RhYmxlKTsKKwlpZiAocmV0KSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXQsICIlcyIsCisJCQlfKCJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIikpOworCQlleGl0KDEpOworCX0KKworCWltYWdlLT5sMV90YWJsZSA9IGwxX3RhYmxlOworfQorCitzdGF0aWMgdm9pZCBpbml0X2wyX2NhY2hlKHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWFnZSkKK3sKKwl1bnNpZ25lZCBpbnQgY291bnQsIGk7CisJc3RydWN0IGV4dDJfcWNvdzJfbDJfY2FjaGUgKmNhY2hlOworCXN0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlICp0YWJsZTsKKwllcnJjb2RlX3QgcmV0OworCisJcmV0ID0gZXh0MmZzX2dldF9hcnJheXplcm8oMSwgc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2wyX2NhY2hlKSwKKwkJCQkgICAmY2FjaGUpOworCWlmIChyZXQpCisJCWdvdG8gYWxsb2NfZXJyOworCisJY291bnQgPSAoaW1hZ2UtPmwxX3NpemUgPiBMMl9DQUNIRV9QUkVBTExPQykgPyBMMl9DQUNIRV9QUkVBTExPQyA6CisJCSBpbWFnZS0+bDFfc2l6ZTsKKworCWNhY2hlLT5jb3VudCA9IGNvdW50OworCWNhY2hlLT5mcmVlID0gY291bnQ7CisJY2FjaGUtPm5leHRfb2Zmc2V0ID0gaW1hZ2UtPmwyX29mZnNldDsKKworCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCXJldCA9IGV4dDJmc19nZXRfYXJyYXl6ZXJvKDEsCisJCQkJc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlKSwgJnRhYmxlKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gYWxsb2NfZXJyOworCisJCXJldCA9IGV4dDJmc19nZXRfYXJyYXl6ZXJvKGltYWdlLT5sMl9zaXplLAorCQkJCQkJICAgc2l6ZW9mKF9fdTY0KSwgJnRhYmxlLT5kYXRhKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gYWxsb2NfZXJyOworCisJCXRhYmxlLT5uZXh0ID0gY2FjaGUtPmZyZWVfaGVhZDsKKwkJY2FjaGUtPmZyZWVfaGVhZCA9IHRhYmxlOworCX0KKworCWltYWdlLT5sMl9jYWNoZSA9IGNhY2hlOworCXJldHVybjsKKworYWxsb2NfZXJyOgorCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXQsICIlcyIsIF8oIndoaWxlIGFsbG9jYXRpbmcgbDIgY2FjaGUiKSk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgcHV0X2wyX2NhY2hlKHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWFnZSkKK3sKKwlzdHJ1Y3QgZXh0Ml9xY293Ml9sMl9jYWNoZSAqY2FjaGUgPSBpbWFnZS0+bDJfY2FjaGU7CisJc3RydWN0IGV4dDJfcWNvdzJfbDJfdGFibGUgKnRtcCwgKnRhYmxlOworCisJaWYgKCFjYWNoZSkKKwkJcmV0dXJuOworCisJdGFibGUgPSBjYWNoZS0+ZnJlZV9oZWFkOworCWNhY2hlLT5mcmVlX2hlYWQgPSBOVUxMOworYWdhaW46CisJd2hpbGUgKHRhYmxlKSB7CisJCXRtcCA9IHRhYmxlOworCQl0YWJsZSA9IHRhYmxlLT5uZXh0OworCQlleHQyZnNfZnJlZV9tZW0oJnRtcC0+ZGF0YSk7CisJCWV4dDJmc19mcmVlX21lbSgmdG1wKTsKKwl9CisKKwlpZiAoY2FjaGUtPmZyZWUgIT0gY2FjaGUtPmNvdW50KSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluICIKKwkJCQkJInRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgIgorCQkJCQkiZGF0YSB3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSAiCisJCQkJCSJub3QgYmUgdmFsaWQuXG4iKSk7CisJCXRhYmxlID0gY2FjaGUtPnVzZWRfaGVhZDsKKwkJY2FjaGUtPnVzZWRfaGVhZCA9IE5VTEw7CisJCWdvdG8gYWdhaW47CisJfQorCisJZXh0MmZzX2ZyZWVfbWVtKCZjYWNoZSk7Cit9CisKK3N0YXRpYyBpbnQgaW5pdF9yZWZjb3VudChzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSAqaW1nLCBibGs2NF90IHRhYmxlX29mZnNldCkKK3sKKwlzdHJ1Y3QJZXh0Ml9xY293Ml9yZWZjb3VudAkqcmVmOworCWJsazY0X3QgdGFibGVfY2x1c3RlcnM7CisJZXJyY29kZV90IHJldDsKKworCXJlZiA9ICYoaW1nLT5yZWZjb3VudCk7CisKKwkvKgorCSAqIE9uZSByZWZjb3VudCBibG9jayBhZGRyZXNzZXMgMjA0OCBjbHVzdGVycywgb25lIHJlZmNvdW50IHRhYmxlCisJICogYWRkcmVzc2VzIGNsdXN0ZXIvc2l6ZW9mKF9fdTY0KSByZWZjb3VudCBibG9ja3MsIGFuZCB3ZSBuZWVkCisJICogdG8gYWRkcmVzcyBtZXRhX2Jsb2Nrc19jb3VudCBjbHVzdGVycyArIHFjb3cyIG1ldGFkYXRhIGNsdXN0ZXJzCisJICogaW4gdGhlIHdvcnN0IGNhc2UuCisJICovCisJdGFibGVfY2x1c3RlcnMgPSBtZXRhX2Jsb2Nrc19jb3VudCArICh0YWJsZV9vZmZzZXQgPj4KKwkJCQkJICAgICAgaW1nLT5jbHVzdGVyX2JpdHMpOworCXRhYmxlX2NsdXN0ZXJzID4+PSAoaW1nLT5jbHVzdGVyX2JpdHMgKyA2IC0gMSk7CisJdGFibGVfY2x1c3RlcnMgPSAodGFibGVfY2x1c3RlcnMgPT0gMCkgPyAxIDogdGFibGVfY2x1c3RlcnM7CisKKwlyZWYtPnJlZmNvdW50X3RhYmxlX29mZnNldCA9IHRhYmxlX29mZnNldDsKKwlyZWYtPnJlZmNvdW50X3RhYmxlX2NsdXN0ZXJzID0gdGFibGVfY2x1c3RlcnM7CisJcmVmLT5yZWZjb3VudF90YWJsZV9pbmRleCA9IDA7CisJcmVmLT5yZWZjb3VudF9ibG9ja19pbmRleCA9IDA7CisKKwkvKiBBbGxvY2F0ZSByZWZjb3VudCB0YWJsZSAqLworCXJldCA9IGV4dDJmc19nZXRfYXJyYXl6ZXJvKHJlZi0+cmVmY291bnRfdGFibGVfY2x1c3RlcnMsCisJCQkJICAgaW1nLT5jbHVzdGVyX3NpemUsICZyZWYtPnJlZmNvdW50X3RhYmxlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJLyogQWxsb2NhdGUgcmVmY291bnQgYmxvY2sgKi8KKwlyZXQgPSBleHQyZnNfZ2V0X2FycmF5emVybygxLCBpbWctPmNsdXN0ZXJfc2l6ZSwgJnJlZi0+cmVmY291bnRfYmxvY2spOworCWlmIChyZXQpCisJCWV4dDJmc19mcmVlX21lbSgmcmVmLT5yZWZjb3VudF90YWJsZSk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGluaXRpYWxpemVfcWNvdzJfaW1hZ2UoaW50IGZkLCBleHQyX2ZpbHN5cyBmcywKKwkJCSAgICBzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSAqaW1hZ2UpCit7CisJc3RydWN0IGV4dDJfcWNvdzJfaGRyICpoZWFkZXI7CisJYmxrNjRfdCB0b3RhbF9zaXplLCBvZmZzZXQ7CisJaW50IHNoaWZ0LCBsMl9iaXRzLCBoZWFkZXJfc2l6ZSwgbDFfc2l6ZSwgcmV0OworCWludCBjbHVzdGVyX2JpdHMgPSBnZXRfYml0c19mcm9tX3NpemUoZnMtPmJsb2Nrc2l6ZSk7CisJc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiID0gZnMtPnN1cGVyOworCisJLyogQWxsb2NhdGUgaGVhZGVyICovCisJcmV0ID0gZXh0MmZzX2dldF9tZW16ZXJvKHNpemVvZihzdHJ1Y3QgZXh0Ml9xY293Ml9oZHIpLCAmaGVhZGVyKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJdG90YWxfc2l6ZSA9IGV4dDJmc19ibG9ja3NfY291bnQoc2IpIDw8IGNsdXN0ZXJfYml0czsKKwlpbWFnZS0+Y2x1c3Rlcl9zaXplID0gZnMtPmJsb2Nrc2l6ZTsKKwlpbWFnZS0+bDJfc2l6ZSA9IDEgPDwgKGNsdXN0ZXJfYml0cyAtIDMpOworCWltYWdlLT5jbHVzdGVyX2JpdHMgPSBjbHVzdGVyX2JpdHM7CisJaW1hZ2UtPmZkID0gZmQ7CisKKwloZWFkZXItPm1hZ2ljID0gZXh0MmZzX2NwdV90b19iZTMyKFFDT1dfTUFHSUMpOworCWhlYWRlci0+dmVyc2lvbiA9IGV4dDJmc19jcHVfdG9fYmUzMihRQ09XX1ZFUlNJT04pOworCWhlYWRlci0+c2l6ZSA9IGV4dDJmc19jcHVfdG9fYmU2NCh0b3RhbF9zaXplKTsKKwloZWFkZXItPmNsdXN0ZXJfYml0cyA9IGV4dDJmc19jcHVfdG9fYmUzMihjbHVzdGVyX2JpdHMpOworCisJaGVhZGVyX3NpemUgPSAoc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2hkcikgKyA3KSAmIH43OworCW9mZnNldCA9IGFsaWduX29mZnNldChoZWFkZXJfc2l6ZSwgaW1hZ2UtPmNsdXN0ZXJfc2l6ZSk7CisKKwloZWFkZXItPmwxX3RhYmxlX29mZnNldCA9IGV4dDJmc19jcHVfdG9fYmU2NChvZmZzZXQpOworCWltYWdlLT5sMV9vZmZzZXQgPSBvZmZzZXQ7CisKKwlsMl9iaXRzID0gY2x1c3Rlcl9iaXRzIC0gMzsKKwlzaGlmdCA9IGNsdXN0ZXJfYml0cyArIGwyX2JpdHM7CisJbDFfc2l6ZSA9ICgodG90YWxfc2l6ZSArICgxTEwgPDwgc2hpZnQpIC0gMSkgPj4gc2hpZnQpOworCWhlYWRlci0+bDFfc2l6ZSA9IGV4dDJmc19jcHVfdG9fYmUzMihsMV9zaXplKTsKKwlpbWFnZS0+bDFfc2l6ZSA9IGwxX3NpemU7CisKKwkvKiBNYWtlIHNwYWNlIGZvciBMMSB0YWJsZSAqLworCW9mZnNldCArPSBhbGlnbl9vZmZzZXQobDFfc2l6ZSAqIHNpemVvZihibGs2NF90KSwgaW1hZ2UtPmNsdXN0ZXJfc2l6ZSk7CisKKwkvKiBJbml0aWFsaXplIHJlZmNvdW50aW5nICovCisJcmV0ID0gaW5pdF9yZWZjb3VudChpbWFnZSwgb2Zmc2V0KTsKKwlpZiAocmV0KSB7CisJCWV4dDJmc19mcmVlX21lbSgmaGVhZGVyKTsKKwkJcmV0dXJuIHJldDsKKwl9CisJaGVhZGVyLT5yZWZjb3VudF90YWJsZV9vZmZzZXQgPSBleHQyZnNfY3B1X3RvX2JlNjQob2Zmc2V0KTsKKwloZWFkZXItPnJlZmNvdW50X3RhYmxlX2NsdXN0ZXJzID0KKwkJZXh0MmZzX2NwdV90b19iZTMyKGltYWdlLT5yZWZjb3VudC5yZWZjb3VudF90YWJsZV9jbHVzdGVycyk7CisJb2Zmc2V0ICs9IGltYWdlLT5jbHVzdGVyX3NpemU7CisJb2Zmc2V0ICs9IGltYWdlLT5yZWZjb3VudC5yZWZjb3VudF90YWJsZV9jbHVzdGVycyA8PAorCQlpbWFnZS0+Y2x1c3Rlcl9iaXRzOworCisJLyogTWFrZSBzcGFjZSBmb3IgTDIgdGFibGVzICovCisJaW1hZ2UtPmwyX29mZnNldCA9IG9mZnNldDsKKwlvZmZzZXQgKz0gaW1hZ2UtPmNsdXN0ZXJfc2l6ZTsKKworCS8qIE1ha2Ugc3BhY2UgZm9yIGZpcnN0IHJlZmNvdW50IGJsb2NrICovCisJaW1hZ2UtPnJlZmNvdW50LnJlZmNvdW50X2Jsb2NrX29mZnNldCA9IG9mZnNldDsKKworCWltYWdlLT5oZHIgPSBoZWFkZXI7CisJLyogSW5pdGlhbGl6ZSBsMSBhbmQgbDIgdGFibGVzICovCisJaW5pdF9sMV90YWJsZShpbWFnZSk7CisJaW5pdF9sMl9jYWNoZShpbWFnZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9xY293Ml9pbWFnZShzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSAqaW1nKQoreworCWlmICghaW1nKQorCQlyZXR1cm47CisKKwlpZiAoaW1nLT5oZHIpCisJCWV4dDJmc19mcmVlX21lbSgmaW1nLT5oZHIpOworCisJaWYgKGltZy0+bDFfdGFibGUpCisJCWV4dDJmc19mcmVlX21lbSgmaW1nLT5sMV90YWJsZSk7CisKKwlpZiAoaW1nLT5yZWZjb3VudC5yZWZjb3VudF90YWJsZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpbWctPnJlZmNvdW50LnJlZmNvdW50X3RhYmxlKTsKKwlpZiAoaW1nLT5yZWZjb3VudC5yZWZjb3VudF9ibG9jaykKKwkJZXh0MmZzX2ZyZWVfbWVtKCZpbWctPnJlZmNvdW50LnJlZmNvdW50X2Jsb2NrKTsKKworCXB1dF9sMl9jYWNoZShpbWcpOworCisJZXh0MmZzX2ZyZWVfbWVtKCZpbWcpOworfQorCisvKioKKyAqIFB1dCB0YWJsZSBmcm9tIHVzZWQgbGlzdCAodXNlZF9oZWFkKSBpbnRvIGZyZWUgbGlzdCAoZnJlZV9oZWFkKS4KKyAqIGwyX3RhYmxlIGlzIHVzZWQgdG8gcmV0dXJuIHBvaW50ZXIgdG8gdGhlIG5leHQgdXNlZCB0YWJsZSAodXNlZF9oZWFkKS4KKyAqLworc3RhdGljIHZvaWQgcHV0X3VzZWRfdGFibGUoc3RydWN0IGV4dDJfcWNvdzJfaW1hZ2UgKmltZywKKwkJCSAgc3RydWN0IGV4dDJfcWNvdzJfbDJfdGFibGUgKipsMl90YWJsZSkKK3sKKwlzdHJ1Y3QgZXh0Ml9xY293Ml9sMl9jYWNoZSAqY2FjaGUgPSBpbWctPmwyX2NhY2hlOworCXN0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlICp0YWJsZTsKKworCXRhYmxlID0gY2FjaGUtPnVzZWRfaGVhZDsKKwljYWNoZS0+dXNlZF9oZWFkID0gdGFibGUtPm5leHQ7CisKKwlhc3NlcnQodGFibGUpOworCWlmICghdGFibGUtPm5leHQpCisJCWNhY2hlLT51c2VkX3RhaWwgPSBOVUxMOworCisJLyogQ2xlYW4gdGhlIHRhYmxlIGZvciBjYXNlIHdlIHdpbGwgbmVlZCB0byB1c2UgaXQgYWdhaW4gKi8KKwltZW1zZXQodGFibGUtPmRhdGEsIDAsIGltZy0+Y2x1c3Rlcl9zaXplKTsKKwl0YWJsZS0+bmV4dCA9IGNhY2hlLT5mcmVlX2hlYWQ7CisJY2FjaGUtPmZyZWVfaGVhZCA9IHRhYmxlOworCisJY2FjaGUtPmZyZWUrKzsKKworCSpsMl90YWJsZSA9IGNhY2hlLT51c2VkX2hlYWQ7Cit9CisKK3N0YXRpYyB2b2lkIGZsdXNoX2wyX2NhY2hlKHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWFnZSkKK3sKKwlibGs2NF90IHNlZWsgPSAwOworCWV4dDJfbG9mZl90IG9mZnNldDsKKwlzdHJ1Y3QgZXh0Ml9xY293Ml9sMl9jYWNoZSAqY2FjaGUgPSBpbWFnZS0+bDJfY2FjaGU7CisJc3RydWN0IGV4dDJfcWNvdzJfbDJfdGFibGUgKnRhYmxlID0gY2FjaGUtPnVzZWRfaGVhZDsKKwlpbnQgZmQgPSBpbWFnZS0+ZmQ7CisKKwkvKiBTdG9yZSBjdXJyZW50IHBvc2l0aW9uICovCisJb2Zmc2V0ID0gc2Vla19yZWxhdGl2ZShmZCwgMCk7CisKKwlhc3NlcnQodGFibGUpOworCXdoaWxlIChjYWNoZS0+ZnJlZSA8IGNhY2hlLT5jb3VudCkgeworCQlpZiAoc2VlayAhPSB0YWJsZS0+b2Zmc2V0KSB7CisJCQlzZWVrX3NldChmZCwgdGFibGUtPm9mZnNldCk7CisJCQlzZWVrID0gdGFibGUtPm9mZnNldDsKKwkJfQorCisJCWdlbmVyaWNfd3JpdGUoZmQsIChjaGFyICopdGFibGUtPmRhdGEsIGltYWdlLT5jbHVzdGVyX3NpemUsCisJCQkgICAgICBOT19CTEspOworCQlwdXRfdXNlZF90YWJsZShpbWFnZSwgJnRhYmxlKTsKKwkJc2VlayArPSBpbWFnZS0+Y2x1c3Rlcl9zaXplOworCX0KKworCS8qIFJlc3RvcmUgcHJldmlvdXMgcG9zaXRpb24gKi8KKwlzZWVrX3NldChmZCwgb2Zmc2V0KTsKK30KKworLyoqCisgKiBHZXQgZmlyc3QgZnJlZSB0YWJsZSAoZnJvbSBmcmVlX2hlYWQpIGFuZCBwdXQgaXQgaW50byB0YWlsIG9mIHVzZWQgbGlzdAorICogKHRvIHVzZWRfdGFpbCkuCisgKiBsMl90YWJsZSBpcyB1c2VkIHRvIHJldHVybiBwb2ludGVyIHRvIG1vdmVkIHRhYmxlLgorICogUmV0dXJucyAxIGlmIHRoZSBjYWNoZSBpcyBmdWxsLCAwIG90aGVyd2lzZS4KKyAqLworc3RhdGljIHZvaWQgZ2V0X2ZyZWVfdGFibGUoc3RydWN0IGV4dDJfcWNvdzJfaW1hZ2UgKmltYWdlLAorCQkJICBzdHJ1Y3QgZXh0Ml9xY293Ml9sMl90YWJsZSAqKmwyX3RhYmxlKQoreworCXN0cnVjdCBleHQyX3Fjb3cyX2wyX3RhYmxlICp0YWJsZTsKKwlzdHJ1Y3QgZXh0Ml9xY293Ml9sMl9jYWNoZSAqY2FjaGUgPSBpbWFnZS0+bDJfY2FjaGU7CisKKwlpZiAoMCA9PSBjYWNoZS0+ZnJlZSkKKwkJZmx1c2hfbDJfY2FjaGUoaW1hZ2UpOworCisJdGFibGUgPSBjYWNoZS0+ZnJlZV9oZWFkOworCWFzc2VydCh0YWJsZSk7CisJY2FjaGUtPmZyZWVfaGVhZCA9IHRhYmxlLT5uZXh0OworCisJaWYgKGNhY2hlLT51c2VkX3RhaWwpCisJCWNhY2hlLT51c2VkX3RhaWwtPm5leHQgPSB0YWJsZTsKKwllbHNlCisJCS8qIEZpcnN0IGl0ZW0gaW4gdGhlIHVzZWQgbGlzdCAqLworCQljYWNoZS0+dXNlZF9oZWFkID0gdGFibGU7CisKKwljYWNoZS0+dXNlZF90YWlsID0gdGFibGU7CisJY2FjaGUtPmZyZWUtLTsKKworCSpsMl90YWJsZSA9IHRhYmxlOworfQorCitzdGF0aWMgaW50IGFkZF9sMl9pdGVtKHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWcsIGJsazY0X3QgYmxrLAorCQkgICAgICAgYmxrNjRfdCBkYXRhLCBibGs2NF90IG5leHQpCit7CisJc3RydWN0IGV4dDJfcWNvdzJfbDJfY2FjaGUgKmNhY2hlID0gaW1nLT5sMl9jYWNoZTsKKwlzdHJ1Y3QgZXh0Ml9xY293Ml9sMl90YWJsZSAqdGFibGUgPSBjYWNoZS0+dXNlZF90YWlsOworCWJsazY0X3QgbDFfaW5kZXggPSBibGsgLyBpbWctPmwyX3NpemU7CisJYmxrNjRfdCBsMl9pbmRleCA9IGJsayAmIChpbWctPmwyX3NpemUgLSAxKTsKKwlpbnQgcmV0ID0gMDsKKworCS8qCisJICogTmVlZCB0byBjcmVhdGUgbmV3IHRhYmxlIGlmIGl0IGRvZXMgbm90IGV4aXN0LAorCSAqIG9yIGlmIGl0IGlzIGZ1bGwKKwkgKi8KKwlpZiAoIXRhYmxlIHx8ICh0YWJsZS0+bDFfaW5kZXggIT0gbDFfaW5kZXgpKSB7CisJCWdldF9mcmVlX3RhYmxlKGltZywgJnRhYmxlKTsKKwkJdGFibGUtPmwxX2luZGV4ID0gbDFfaW5kZXg7CisJCXRhYmxlLT5vZmZzZXQgPSBjYWNoZS0+bmV4dF9vZmZzZXQ7CisJCWNhY2hlLT5uZXh0X29mZnNldCA9IG5leHQ7CisJCWltZy0+bDFfdGFibGVbbDFfaW5kZXhdID0KKwkJCWV4dDJmc19jcHVfdG9fYmU2NCh0YWJsZS0+b2Zmc2V0IHwgUUNPV19PRkxBR19DT1BJRUQpOworCQlyZXQrKzsKKwl9CisKKwl0YWJsZS0+ZGF0YVtsMl9pbmRleF0gPSBleHQyZnNfY3B1X3RvX2JlNjQoZGF0YSB8IFFDT1dfT0ZMQUdfQ09QSUVEKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHVwZGF0ZV9yZWZjb3VudChpbnQgZmQsIHN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlICppbWcsCisJCQkgICBibGs2NF90IG9mZnNldCwgYmxrNjRfdCByZmJsa19wb3MpCit7CisJc3RydWN0CWV4dDJfcWNvdzJfcmVmY291bnQJKnJlZjsKKwlfX3UzMgl0YWJsZV9pbmRleDsKKwlpbnQgcmV0ID0gMDsKKworCXJlZiA9ICYoaW1nLT5yZWZjb3VudCk7CisJdGFibGVfaW5kZXggPSBvZmZzZXQgPj4gKDIgKiBpbWctPmNsdXN0ZXJfYml0cyAtIDEpOworCisJLyoKKwkgKiBOZWVkIHRvIGNyZWF0ZSBuZXcgcmVmY291bnQgYmxvY2sgd2hlbiB0aGUgb2Zmc2V0IGFkZHJlc3NlcworCSAqIGFub3RoZXIgaXRlbSBpbiB0aGUgcmVmY291bnQgdGFibGUKKwkgKi8KKwlpZiAodGFibGVfaW5kZXggIT0gcmVmLT5yZWZjb3VudF90YWJsZV9pbmRleCkgeworCisJCXNlZWtfc2V0KGZkLCByZWYtPnJlZmNvdW50X2Jsb2NrX29mZnNldCk7CisKKwkJZ2VuZXJpY193cml0ZShmZCwgKGNoYXIgKilyZWYtPnJlZmNvdW50X2Jsb2NrLAorCQkJICAgICAgaW1nLT5jbHVzdGVyX3NpemUsIE5PX0JMSyk7CisJCW1lbXNldChyZWYtPnJlZmNvdW50X2Jsb2NrLCAwLCBpbWctPmNsdXN0ZXJfc2l6ZSk7CisKKwkJcmVmLT5yZWZjb3VudF90YWJsZVtyZWYtPnJlZmNvdW50X3RhYmxlX2luZGV4XSA9CisJCQlleHQyZnNfY3B1X3RvX2JlNjQocmVmLT5yZWZjb3VudF9ibG9ja19vZmZzZXQpOworCQlyZWYtPnJlZmNvdW50X2Jsb2NrX29mZnNldCA9IHJmYmxrX3BvczsKKwkJcmVmLT5yZWZjb3VudF9ibG9ja19pbmRleCA9IDA7CisJCXJlZi0+cmVmY291bnRfdGFibGVfaW5kZXggPSB0YWJsZV9pbmRleDsKKwkJcmV0Kys7CisJfQorCisJLyoKKwkgKiBXZSBhcmUgcmVseWluZyBvbiB0aGUgZmFjdCB0aGF0IHdlIGFyZSBjcmVhdGluZyB0aGUgcWNvdzIKKwkgKiBpbWFnZSBzZXF1ZW50aWFsbHksIGhlbmNlIHdlIHdpbGwgYWx3YXlzIGFsbG9jYXRlIHJlZmNvdW50CisJICogYmxvY2sgaXRlbXMgc2VxdWVudGlhbHkuCisJICovCisJcmVmLT5yZWZjb3VudF9ibG9ja1tyZWYtPnJlZmNvdW50X2Jsb2NrX2luZGV4XSA9IGV4dDJmc19jcHVfdG9fYmUxNigxKTsKKwlyZWYtPnJlZmNvdW50X2Jsb2NrX2luZGV4Kys7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBzeW5jX3JlZmNvdW50KGludCBmZCwgc3RydWN0IGV4dDJfcWNvdzJfaW1hZ2UgKmltZykKK3sKKwlzdHJ1Y3QJZXh0Ml9xY293Ml9yZWZjb3VudAkqcmVmOworCisJcmVmID0gJihpbWctPnJlZmNvdW50KTsKKworCXJlZi0+cmVmY291bnRfdGFibGVbcmVmLT5yZWZjb3VudF90YWJsZV9pbmRleF0gPQorCQlleHQyZnNfY3B1X3RvX2JlNjQocmVmLT5yZWZjb3VudF9ibG9ja19vZmZzZXQpOworCXNlZWtfc2V0KGZkLCByZWYtPnJlZmNvdW50X3RhYmxlX29mZnNldCk7CisJZ2VuZXJpY193cml0ZShmZCwgKGNoYXIgKilyZWYtPnJlZmNvdW50X3RhYmxlLAorCQlyZWYtPnJlZmNvdW50X3RhYmxlX2NsdXN0ZXJzIDw8IGltZy0+Y2x1c3Rlcl9iaXRzLCBOT19CTEspOworCisJc2Vla19zZXQoZmQsIHJlZi0+cmVmY291bnRfYmxvY2tfb2Zmc2V0KTsKKwlnZW5lcmljX3dyaXRlKGZkLCAoY2hhciAqKXJlZi0+cmVmY291bnRfYmxvY2ssIGltZy0+Y2x1c3Rlcl9zaXplLAorCQkgICAgICBOT19CTEspOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBvdXRwdXRfcWNvdzJfbWV0YV9kYXRhX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywgaW50IGZkKQoreworCWVycmNvZGVfdAkJcmV0dmFsOworCWJsazY0X3QJCQlibGssIG9mZnNldCwgc2l6ZSwgZW5kOworCWNoYXIJCQkqYnVmOworCXN0cnVjdCBleHQyX3Fjb3cyX2ltYWdlCSppbWc7CisJdW5zaWduZWQgaW50CQloZWFkZXJfc2l6ZTsKKworCS8qIGFsbG9jYXRlICBzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgZXh0Ml9xY293Ml9pbWFnZSksICZpbWcpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBpbml0aWFsaXplX3Fjb3cyX2ltYWdlKGZkLCBmcywgaW1nKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSBpbml0aWFsaXppbmcgZXh0Ml9xY293Ml9pbWFnZSIpKTsKKwkJZXhpdCgxKTsKKwl9CisJaGVhZGVyX3NpemUgPSBhbGlnbl9vZmZzZXQoc2l6ZW9mKHN0cnVjdCBleHQyX3Fjb3cyX2hkciksCisJCQkJICAgaW1nLT5jbHVzdGVyX3NpemUpOworCXdyaXRlX2hlYWRlcihmZCwgaW1nLT5oZHIsIHNpemVvZihzdHJ1Y3QgZXh0Ml9xY293Ml9oZHIpLCBoZWFkZXJfc2l6ZSk7CisKKwkvKiBSZWZjb3VudCBhbGwgcWNvdzIgcmVsYXRlZCBtZXRhZGF0YSB1cCB0byByZWZjb3VudF9ibG9ja19vZmZzZXQgKi8KKwllbmQgPSBpbWctPnJlZmNvdW50LnJlZmNvdW50X2Jsb2NrX29mZnNldDsKKwlzZWVrX3NldChmZCwgZW5kKTsKKwlibGsgPSBlbmQgKyBpbWctPmNsdXN0ZXJfc2l6ZTsKKwlmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8PSBlbmQ7IG9mZnNldCArPSBpbWctPmNsdXN0ZXJfc2l6ZSkgeworCQlpZiAodXBkYXRlX3JlZmNvdW50KGZkLCBpbWcsIG9mZnNldCwgYmxrKSkgeworCQkJYmxrICs9IGltZy0+Y2x1c3Rlcl9zaXplOworCQkJLyoKKwkJCSAqIElmIHdlIGNyZWF0ZSBuZXcgcmVmY291bnQgYmxvY2ssIHdlIG5lZWQgdG8gcmVmY291bnQKKwkJCSAqIGl0IGFzIHdlbGwuCisJCQkgKi8KKwkJCWVuZCArPSBpbWctPmNsdXN0ZXJfc2l6ZTsKKwkJfQorCX0KKwlzZWVrX3NldChmZCwgb2Zmc2V0KTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsICZidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIikpOworCQlleGl0KDEpOworCX0KKwkvKiBXcml0ZSBxY293MiBkYXRhIGJsb2NrcyAqLworCWZvciAoYmxrID0gMDsgYmxrIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOyBibGsrKykgeworCQlpZiAoKGJsayA+PSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgJiYKKwkJICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsIGJsaykpIHsKKwkJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIGJsaywgMSwgYnVmKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCQlfKCJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiKSwgYmxrKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChzY3JhbWJsZV9ibG9ja19tYXAgJiYKKwkJCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHNjcmFtYmxlX2Jsb2NrX21hcCwgYmxrKSkKKwkJCQlzY3JhbWJsZV9kaXJfYmxvY2soZnMsIGJsaywgYnVmKTsKKwkJCWlmIChjaGVja196ZXJvX2Jsb2NrKGJ1ZiwgZnMtPmJsb2Nrc2l6ZSkpCisJCQkJY29udGludWU7CisKKwkJCWlmICh1cGRhdGVfcmVmY291bnQoZmQsIGltZywgb2Zmc2V0LCBvZmZzZXQpKSB7CisJCQkJLyogTWFrZSBzcGFjZSBmb3IgYW5vdGhlciByZWZjb3VudCBibG9jayAqLworCQkJCW9mZnNldCArPSBpbWctPmNsdXN0ZXJfc2l6ZTsKKwkJCQlzZWVrX3NldChmZCwgb2Zmc2V0KTsKKwkJCQkvKgorCQkJCSAqIFdlIGhhdmUgY3JlYXRlZCB0aGUgbmV3IHJlZmNvdW50IGJsb2NrLCB0aGlzCisJCQkJICogbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHJlZmNvdW50IGl0IGFzIHdlbGwuCisJCQkJICogU28gdGhlIHByZXZpb3VzIHVwZGF0ZV9yZWZjb3VudCByZWZjb3VudGVkCisJCQkJICogdGhlIGJsb2NrIGl0c2VsZiBhbmQgbm93IHdlIGFyZSBnb2luZyB0bworCQkJCSAqIGNyZWF0ZSByZWZjb3VudCBmb3IgZGF0YS4gTmV3IHJlZmNvdW50CisJCQkJICogYmxvY2sgc2hvdWxkIG5vdCBiZSBjcmVhdGVkIQorCQkJCSAqLworCQkJCWlmICh1cGRhdGVfcmVmY291bnQoZmQsIGltZywgb2Zmc2V0LCBvZmZzZXQpKSB7CisJCQkJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJCQkJXygiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlICIKKwkJCQkJCSAgInNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzICIKKwkJCQkJCSAgImNyZWF0ZWQhXG4iKSk7CisJCQkJCWV4aXQoMSk7CisJCQkJfQorCQkJfQorCisJCQlnZW5lcmljX3dyaXRlKGZkLCBidWYsIGZzLT5ibG9ja3NpemUsIGJsayk7CisKKwkJCWlmIChhZGRfbDJfaXRlbShpbWcsIGJsaywgb2Zmc2V0LAorCQkJCQlvZmZzZXQgKyBpbWctPmNsdXN0ZXJfc2l6ZSkpIHsKKwkJCQlvZmZzZXQgKz0gaW1nLT5jbHVzdGVyX3NpemU7CisJCQkJaWYgKHVwZGF0ZV9yZWZjb3VudChmZCwgaW1nLCBvZmZzZXQsCisJCQkJCW9mZnNldCArIGltZy0+Y2x1c3Rlcl9zaXplKSkgeworCQkJCQlvZmZzZXQgKz0gaW1nLT5jbHVzdGVyX3NpemU7CisJCQkJCWlmICh1cGRhdGVfcmVmY291bnQoZmQsIGltZywgb2Zmc2V0LAorCQkJCQkJCSAgICBvZmZzZXQpKSB7CisJCQkJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCV8oIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50ICIKKwkJCSAgImJsb2NrcyBjcmVhdGVkIVxuIikpOworCQkJCQkJZXhpdCgxKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlvZmZzZXQgKz0gaW1nLT5jbHVzdGVyX3NpemU7CisJCQkJc2Vla19zZXQoZmQsIG9mZnNldCk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCW9mZnNldCArPSBpbWctPmNsdXN0ZXJfc2l6ZTsKKwkJfQorCX0KKwl1cGRhdGVfcmVmY291bnQoZmQsIGltZywgb2Zmc2V0LCBvZmZzZXQpOworCWZsdXNoX2wyX2NhY2hlKGltZyk7CisJc3luY19yZWZjb3VudChmZCwgaW1nKTsKKworCS8qIFdyaXRlIGwxX3RhYmxlKi8KKwlzZWVrX3NldChmZCwgaW1nLT5sMV9vZmZzZXQpOworCXNpemUgPSBpbWctPmwxX3NpemUgKiBzaXplb2YoX191NjQpOworCWdlbmVyaWNfd3JpdGUoZmQsIChjaGFyICopaW1nLT5sMV90YWJsZSwgc2l6ZSwgTk9fQkxLKTsKKworCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlmcmVlX3Fjb3cyX2ltYWdlKGltZyk7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlX3Jhd19pbWFnZV9maWxlKGV4dDJfZmlsc3lzIGZzLCBpbnQgZmQsIGludCB0eXBlLCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0CXBiOworCXN0cnVjdCBleHQyX2lub2RlCQlpbm9kZTsKKwlleHQyX2lub2RlX3NjYW4JCQlzY2FuOworCWV4dDJfaW5vX3QJCQlpbm87CisJZXJyY29kZV90CQkJcmV0dmFsOworCWNoYXIgKgkJCQlibG9ja19idWY7CisKKwltZXRhX2Jsb2Nrc19jb3VudCA9IDA7CisJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChmcywgXygiaW4tdXNlIGJsb2NrIG1hcCIpLAorCQkJCQkgICAgICAmbWV0YV9ibG9ja19tYXApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIikpOworCQlleGl0KDEpOworCX0KKworCWlmIChmbGFncyAmIEUySU1BR0VfU0NSQU1CTEVfRkxBRykgeworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCAic2NyYW1ibGUgYmxvY2sgbWFwIiwKKwkJCQkJCSAgICAgICZzY3JhbWJsZV9ibG9ja19tYXApOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJCV8oIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIikpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCW1hcmtfdGFibGVfYmxvY2tzKGZzKTsKKwlpZiAoc2hvd19wcm9ncmVzcykKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIlNjYW5uaW5nIGlub2Rlcy4uLlxuIikpOworCisJcmV0dmFsID0gZXh0MmZzX29wZW5faW5vZGVfc2NhbihmcywgMCwgJnNjYW4pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplICogMywgJmJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCV8oIkNhbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwl1c2VfaW5vZGVfc2hvcnRjdXRzKGZzLCAxKTsKKwlzdGFzaGVkX2lub2RlID0gJmlub2RlOworCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZShzY2FuLCAmaW5vLCAmaW5vZGUpOworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfQkFEX0JMT0NLX0lOX0lOT0RFX1RBQkxFKQorCQkJY29udGludWU7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQkJXygid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoaW5vID09IDApCisJCQlicmVhazsKKwkJaWYgKCFpbm9kZS5pX2xpbmtzX2NvdW50KQorCQkJY29udGludWU7CisJCWlmIChleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsICZpbm9kZSkpIHsKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobWV0YV9ibG9ja19tYXAsCisJCQkJCWV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgJmlub2RlKSk7CisJCQltZXRhX2Jsb2Nrc19jb3VudCsrOworCQl9CisJCWlmICghZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGZzLCAmaW5vZGUpKQorCQkJY29udGludWU7CisKKwkJc3Rhc2hlZF9pbm8gPSBpbm87CisJCXBiLmlubyA9IGlubzsKKwkJcGIuaXNfZGlyID0gTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpOworCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpIHx8CisJCSAgICAoTElOVVhfU19JU0xOSyhpbm9kZS5pX21vZGUpICYmCisJCSAgICAgZXh0MmZzX2lub2RlX2hhc192YWxpZF9ibG9ja3MyKGZzLCAmaW5vZGUpKSB8fAorCQkgICAgaW5vID09IGZzLT5zdXBlci0+c19qb3VybmFsX2ludW0pIHsKKwkJCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLAorCQkJCQlCTE9DS19GTEFHX1JFQURfT05MWSwgYmxvY2tfYnVmLAorCQkJCQlwcm9jZXNzX2Rpcl9ibG9jaywgJnBiKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCQlfKCJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIpLAorCQkJCQlpbm8pOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlpZiAoKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpIHx8CisJCQkgICAgaW5vZGUuaV9ibG9ja1tFWFQyX0lORF9CTE9DS10gfHwKKwkJCSAgICBpbm9kZS5pX2Jsb2NrW0VYVDJfRElORF9CTE9DS10gfHwKKwkJCSAgICBpbm9kZS5pX2Jsb2NrW0VYVDJfVElORF9CTE9DS10gfHwgYWxsX2RhdGEpIHsKKwkJCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsCisJCQkJICAgICAgIGlubywgQkxPQ0tfRkxBR19SRUFEX09OTFksIGJsb2NrX2J1ZiwKKwkJCQkgICAgICAgcHJvY2Vzc19maWxlX2Jsb2NrLCAmcGIpOworCQkJCWlmIChyZXR2YWwpIHsKKwkJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCQkJXygid2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5vZGUgJXUiKSwgaW5vKTsKKwkJCQkJZXhpdCgxKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJdXNlX2lub2RlX3Nob3J0Y3V0cyhmcywgMCk7CisKKwlpZiAodHlwZSAmIEUySU1BR0VfUUNPVzIpCisJCW91dHB1dF9xY293Ml9tZXRhX2RhdGFfYmxvY2tzKGZzLCBmZCk7CisJZWxzZQorCQlvdXRwdXRfbWV0YV9kYXRhX2Jsb2NrcyhmcywgZmQsIGZsYWdzKTsKKworCWV4dDJmc19mcmVlX21lbSgmYmxvY2tfYnVmKTsKKwlleHQyZnNfY2xvc2VfaW5vZGVfc2NhbihzY2FuKTsKKwlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAobWV0YV9ibG9ja19tYXApOworCWlmICh0eXBlICYgRTJJTUFHRV9TQ1JBTUJMRV9GTEFHKQorCQlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAoc2NyYW1ibGVfYmxvY2tfbWFwKTsKK30KKworc3RhdGljIHZvaWQgaW5zdGFsbF9pbWFnZShjaGFyICpkZXZpY2UsIGNoYXIgKmltYWdlX2ZuLCBpbnQgdHlwZSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWV4dDJfZmlsc3lzIGZzOworCWludCBvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfSU1BR0VfRklMRSB8IEVYVDJfRkxBR182NEJJVFMgfAorCQkJRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwlpbnQgZmQgPSAwOworCWlvX21hbmFnZXIJaW9fcHRyOworCWlvX2NoYW5uZWwJaW87CisKKwlpZiAodHlwZSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCV8oIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiKSk7CisJCWV4aXQoMSk7CisJfQorCisjaWZkZWYgQ09ORklHX1RFU1RJT19ERUJVRworCWlmIChnZXRlbnYoIlRFU1RfSU9fRkxBR1MiKSB8fCBnZXRlbnYoIlRFU1RfSU9fQkxPQ0siKSkgeworCQlpb19wdHIgPSB0ZXN0X2lvX21hbmFnZXI7CisJCXRlc3RfaW9fYmFja2luZ19tYW5hZ2VyID0gdW5peF9pb19tYW5hZ2VyOworCX0gZWxzZQorI2VuZGlmCisJCWlvX3B0ciA9IHVuaXhfaW9fbWFuYWdlcjsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuIChpbWFnZV9mbiwgb3Blbl9mbGFnLCAwLCAwLAorCQkJICAgICAgaW9fcHRyLCAmZnMpOworICAgICAgICBpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQlpbWFnZV9mbik7CisJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYml0bWFwcyAoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwgXygiZXJyb3IgcmVhZGluZyBiaXRtYXBzIikpOworCQlleGl0KDEpOworCX0KKworCWZkID0gZXh0MmZzX29wZW5fZmlsZShpbWFnZV9mbiwgT19SRE9OTFksIDApOworCWlmIChmZCA8IDApIHsKKwkJcGVycm9yKGltYWdlX2ZuKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBpb19wdHItPm9wZW4oZGV2aWNlLCBJT19GTEFHX1JXLCAmaW8pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihkZXZpY2UsIDAsICIlcyIsIF8oIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiKSk7CisJCWV4aXQoMSk7CisJfQorCisJZXh0MmZzX3Jld3JpdGVfdG9faW8oZnMsIGlvKTsKKworCXNlZWtfc2V0KGZkLCBmcy0+aW1hZ2VfaGVhZGVyLT5vZmZzZXRfaW5vZGUpOworCisJcmV0dmFsID0gZXh0MmZzX2ltYWdlX2lub2RlX3JlYWQoZnMsIGZkLCAwKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoaW1hZ2VfZm4sIDAsICIlcyIsCisJCQlfKCJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIikpOworCQlleGl0KDEpOworCX0KKworCWNsb3NlKGZkKTsKKwlleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworfQorCitzdGF0aWMgc3RydWN0IGV4dDJfcWNvdzJfaGRyICpjaGVja19xY293Ml9pbWFnZShpbnQgKmZkLCBjaGFyICpuYW1lKQoreworCisJKmZkID0gZXh0MmZzX29wZW5fZmlsZShuYW1lLCBPX1JET05MWSwgMDYwMCk7CisJaWYgKCpmZCA8IDApCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIHFjb3cyX3JlYWRfaGVhZGVyKCpmZCk7Cit9CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKiBhcmd2KQoreworCWludCBjOworCWVycmNvZGVfdCByZXR2YWw7CisJZXh0Ml9maWxzeXMgZnM7CisJY2hhciAqaW1hZ2VfZm4sIG9mZnNldF9vcHRbNjRdOworCXN0cnVjdCBleHQyX3Fjb3cyX2hkciAqaGVhZGVyID0gTlVMTDsKKwlpbnQgb3Blbl9mbGFnID0gRVhUMl9GTEFHXzY0QklUUyB8IEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJaW50IGltZ190eXBlID0gMDsKKwlpbnQgZmxhZ3MgPSAwOworCWludCBtb3VudF9mbGFncyA9IDA7CisJaW50IHFjb3cyX2ZkID0gMDsKKwlpbnQgZmQgPSAwOworCWludCByZXQgPSAwOworCWludCBpZ25vcmVfcndfbW91bnQgPSAwOworCWludCBjaGVjayA9IDA7CisJc3RydWN0IHN0YXQgc3Q7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKwlzZXRfY29tX2Vycl9nZXR0ZXh0KGdldHRleHQpOworI2VuZGlmCisJZnByaW50ZiAoc3RkZXJyLCAiZTJpbWFnZSAlcyAoJXMpXG4iLCBFMkZTUFJPR1NfVkVSU0lPTiwKKwkJIEUyRlNQUk9HU19EQVRFKTsKKwlpZiAoYXJnYyAmJiAqYXJndikKKwkJcHJvZ3JhbV9uYW1lID0gKmFyZ3Y7CisJYWRkX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgIm5yc0lRYWZvOk86cGMiKSkgIT0gRU9GKQorCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnSSc6CisJCQlmbGFncyB8PSBFMklNQUdFX0lOU1RBTExfRkxBRzsKKwkJCWJyZWFrOworCQljYXNlICdRJzoKKwkJCWlmIChpbWdfdHlwZSkKKwkJCQl1c2FnZSgpOworCQkJaW1nX3R5cGUgfD0gRTJJTUFHRV9RQ09XMjsKKwkJCWJyZWFrOworCQljYXNlICdyJzoKKwkJCWlmIChpbWdfdHlwZSkKKwkJCQl1c2FnZSgpOworCQkJaW1nX3R5cGUgfD0gRTJJTUFHRV9SQVc7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlmbGFncyB8PSBFMklNQUdFX1NDUkFNQkxFX0ZMQUc7CisJCQlicmVhazsKKwkJY2FzZSAnYSc6CisJCQlhbGxfZGF0YSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlpZ25vcmVfcndfbW91bnQgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ24nOgorCQkJbm9wX2ZsYWcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ28nOgorCQkJc291cmNlX29mZnNldCA9IHN0cnRvdWxsKG9wdGFyZywgTlVMTCwgMCk7CisJCQlicmVhazsKKwkJY2FzZSAnTyc6CisJCQlkZXN0X29mZnNldCA9IHN0cnRvdWxsKG9wdGFyZywgTlVMTCwgMCk7CisJCQlicmVhazsKKwkJY2FzZSAncCc6CisJCQlzaG93X3Byb2dyZXNzID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdjJzoKKwkJCWNoZWNrID0gMTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UoKTsKKwkJfQorCWlmIChvcHRpbmQgPT0gYXJnYyAtIDEgJiYKKwkgICAgKHNvdXJjZV9vZmZzZXQgfHwgZGVzdF9vZmZzZXQpKQorCQkgICAgbW92ZV9tb2RlID0gMTsKKwllbHNlIGlmIChvcHRpbmQgIT0gYXJnYyAtIDIgKQorCQl1c2FnZSgpOworCisJaWYgKGFsbF9kYXRhICYmICFpbWdfdHlwZSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwgXygiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgIgorCQkJCQkJICJ3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIikpOworCQlleGl0KDEpOworCX0KKwlpZiAoKHNvdXJjZV9vZmZzZXQgfHwgZGVzdF9vZmZzZXQpICYmIGltZ190eXBlICE9IEUySU1BR0VfUkFXKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJXygiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChtb3ZlX21vZGUgJiYgaW1nX3R5cGUgIT0gRTJJTUFHRV9SQVcpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChtb3ZlX21vZGUgJiYgIWFsbF9kYXRhKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJXygiTW92ZSBtb2RlIHJlcXVpcmVzIGFsbCBkYXRhIG1vZGUuIikpOworCQlleGl0KDEpOworCX0KKwlkZXZpY2VfbmFtZSA9IGFyZ3Zbb3B0aW5kXTsKKwlpZiAobW92ZV9tb2RlKQorCQlpbWFnZV9mbiA9IGRldmljZV9uYW1lOworCWVsc2UgaW1hZ2VfZm4gPSBhcmd2W29wdGluZCsxXTsKKworCXJldHZhbCA9IGV4dDJmc19jaGVja19pZl9tb3VudGVkKGRldmljZV9uYW1lLCAmbW91bnRfZmxhZ3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwgXygiY2hlY2tpbmcgaWYgbW91bnRlZCIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoaW1nX3R5cGUgJiYgIWlnbm9yZV9yd19tb3VudCAmJgorCSAgICAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpICYmCisJICAgIShtb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJcblJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkICIKKwkJCSJmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKwkJCSJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsICIKKwkJCSJmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuIgorCQkJIlVzZSAtZiBvcHRpb24gaWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQuXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGZsYWdzICYgRTJJTUFHRV9JTlNUQUxMX0ZMQUcpIHsKKwkJaW5zdGFsbF9pbWFnZShkZXZpY2VfbmFtZSwgaW1hZ2VfZm4sIGltZ190eXBlKTsKKwkJZXhpdCAoMCk7CisJfQorCisJaWYgKGltZ190eXBlICYgRTJJTUFHRV9SQVcpIHsKKwkJaGVhZGVyID0gY2hlY2tfcWNvdzJfaW1hZ2UoJnFjb3cyX2ZkLCBkZXZpY2VfbmFtZSk7CisJCWlmIChoZWFkZXIpIHsKKwkJCWZsYWdzIHw9IEUySU1BR0VfSVNfUUNPVzJfRkxBRzsKKwkJCWdvdG8gc2tpcF9kZXZpY2U7CisJCX0KKwl9CisJc3ByaW50ZihvZmZzZXRfb3B0LCAib2Zmc2V0PSVsbHUiLCBzb3VyY2Vfb2Zmc2V0KTsKKwlyZXR2YWwgPSBleHQyZnNfb3BlbjIoZGV2aWNlX25hbWUsIG9mZnNldF9vcHQsIG9wZW5fZmxhZywgMCwgMCwKKwkJCSAgICAgIHVuaXhfaW9fbWFuYWdlciwgJmZzKTsKKyAgICAgICAgaWYgKHJldHZhbCkgeworCQljb21fZXJyIChwcm9ncmFtX25hbWUsIHJldHZhbCwgXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwKKwkJCSBkZXZpY2VfbmFtZSk7CisJCWZwdXRzKF8oIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIiksIHN0ZG91dCk7CisJCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9CQURfTUFHSUMpCisJCQljaGVja19wbGF1c2liaWxpdHkoZGV2aWNlX25hbWUsIENIRUNLX0ZTX0VYSVNULCBOVUxMKTsKKwkJZXhpdCgxKTsKKwl9CisKK3NraXBfZGV2aWNlOgorCWlmIChzdHJjbXAoaW1hZ2VfZm4sICItIikgPT0gMCkKKwkJZmQgPSAxOworCWVsc2UgeworCQlpbnQgb19mbGFncyA9IE9fQ1JFQVR8T19SRFdSOworCisJCWlmIChpbWdfdHlwZSAhPSBFMklNQUdFX1JBVykKKwkJCW9fZmxhZ3MgfD0gT19UUlVOQzsKKwkJaWYgKGFjY2VzcyhpbWFnZV9mbiwgRl9PSykgIT0gMCkKKwkJCWZsYWdzIHw9IEUySU1BR0VfQ0hFQ0tfWkVST19GTEFHOworCQlmZCA9IGV4dDJmc19vcGVuX2ZpbGUoaW1hZ2VfZm4sIG9fZmxhZ3MsIDA2MDApOworCQlpZiAoZmQgPCAwKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwgaW1hZ2VfZm4pOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlpZiAoZGVzdF9vZmZzZXQpCisJCXNlZWtfc2V0KGZkLCBkZXN0X29mZnNldCk7CisKKwlpZiAoKGltZ190eXBlICYgRTJJTUFHRV9RQ09XMikgJiYgKGZkID09IDEpKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJXygiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChmZCAhPSAxKSB7CisJCWlmIChmc3RhdChmZCwgJnN0KSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoU19JU0JMSyhzdC5zdF9tb2RlKSkKKwkJCW91dHB1dF9pc19ibGsgPSAxOworCX0KKwlpZiAoZmxhZ3MgJiBFMklNQUdFX0lTX1FDT1cyX0ZMQUcpIHsKKwkJcmV0ID0gcWNvdzJfd3JpdGVfcmF3X2ltYWdlKHFjb3cyX2ZkLCBmZCwgaGVhZGVyKTsKKwkJaWYgKHJldCkgeworCQkJaWYgKHJldCA9PSAtUUNPV19DT01QUkVTU0VEKQorCQkJCWZwcmludGYoc3RkZXJyLCBfKCJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIpLAorCQkJCQlpbWFnZV9mbik7CisJCQlpZiAocmV0ID09IC1RQ09XX0VOQ1JZUFRFRCkKKwkJCQlmcHJpbnRmKHN0ZGVyciwgXygiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIpLAorCQkJCQlpbWFnZV9mbik7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0LAorCQkJCV8oIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlIgorCQkJCSAgIiAoJXMpIGludG8gcmF3IGltYWdlICglcykiKSwKKwkJCQlkZXZpY2VfbmFtZSwgaW1hZ2VfZm4pOworCQl9CisJCWdvdG8gb3V0OworCX0KKworCWlmIChjaGVjaykgeworCQlpZiAoaW1nX3R5cGUgIT0gRTJJTUFHRV9SQVcpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkICIKKwkJCQkJCSJpbiByYXcgbW9kZVxuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoZmQgPT0gMSkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCAiCisJCQkJCQkid2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmY2hlY2tfYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJaWYgKHNob3dfcHJvZ3Jlc3MgJiYgKGltZ190eXBlICE9IEUySU1BR0VfUkFXKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCV8oIlRoZSAtcCBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKGltZ190eXBlKQorCQl3cml0ZV9yYXdfaW1hZ2VfZmlsZShmcywgZmQsIGltZ190eXBlLCBmbGFncyk7CisJZWxzZQorCQl3cml0ZV9pbWFnZV9maWxlKGZzLCBmZCk7CisKKwlleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworCWlmIChjaGVjaykKKwkJcHJpbnRmKF8oIiVkIGJsb2NrcyBhbHJlYWR5IGNvbnRhaW5lZCB0aGUgZGF0YSB0byBiZSBjb3BpZWRcbiIpLAorCQkgICAgICAgc2tpcHBlZF9ibG9ja3MpOworCitvdXQ6CisJaWYgKGhlYWRlcikKKwkJZnJlZShoZWFkZXIpOworCWlmIChxY293Ml9mZCkKKwkJY2xvc2UocWNvdzJfZmQpOworCXJlbW92ZV9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UyaW5pdHJkX2hlbHBlci5jIGIvZTJmc3Byb2dzL21pc2MvZTJpbml0cmRfaGVscGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2YWFiOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UyaW5pdHJkX2hlbHBlci5jCkBAIC0wLDAgKzEsMzk3IEBACisvKgorICogZTJpbml0cmRfaGVscGVyLmMgLSBHZXQgdGhlIGZpbGVzeXN0ZW0gdGFibGUKKyAqCisgKiBDb3B5cmlnaHQgMjAwNCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDx1dGltZS5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IG9wdGluZDsKK2V4dGVybiBjaGFyICpvcHRhcmc7CisjZW5kaWYKKworI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgImJsa2lkL2Jsa2lkLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKK3N0YXRpYyBjb25zdCBjaGFyICogcHJvZ3JhbV9uYW1lID0gImUyaW5pdHJkX2hlbHBlciI7CitzdGF0aWMgY2hhciAqIGRldmljZV9uYW1lOworc3RhdGljIGludCBvcGVuX2ZsYWc7CitzdGF0aWMgaW50IHJvb3RfdHlwZTsKK3N0YXRpYyBibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisKK3N0cnVjdCBtZW1fZmlsZSB7CisJY2hhcgkqYnVmOworCWludAlzaXplOworCWludAlwdHI7Cit9OworCitzdHJ1Y3QgZnNfaW5mbyB7CisJY2hhciAgKmRldmljZTsKKwljaGFyICAqbW91bnRwdDsKKwljaGFyICAqdHlwZTsKKwljaGFyICAqb3B0czsKKwlpbnQgICBmcmVxOworCWludCAgIHBhc3NubzsKKwlpbnQgICBmbGFnczsKKwlzdHJ1Y3QgZnNfaW5mbyAqbmV4dDsKK307CisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIpLCBwcm9ncmFtX25hbWUpOworCWV4aXQgKDEpOworfQorCitzdGF0aWMgZXJyY29kZV90IGdldF9maWxlKGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICogZmlsZW5hbWUsCisJCSAgIHN0cnVjdCBtZW1fZmlsZSAqcmV0X2ZpbGUpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyIAkJKmJ1ZjsKKwlleHQyX2ZpbGVfdAllMl9maWxlID0gTlVMTDsKKwl1bnNpZ25lZCBpbnQJZ290OworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCWV4dDJfaW5vX3QJaW5vOworCisJcmV0X2ZpbGUtPmJ1ZiA9IDA7CisJcmV0X2ZpbGUtPnNpemUgPSAwOworCXJldF9maWxlLT5wdHIgPSAwOworCisJcmV0dmFsID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLAorCQkJICAgICAgZmlsZW5hbWUsICZpbm8pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlpZiAoaW5vZGUuaV9zaXplX2hpZ2ggfHwgKGlub2RlLmlfc2l6ZSA+IDY1NTM2KSkKKwkJcmV0dXJuIEVGQklHOworCisJYnVmID0gbWFsbG9jKGlub2RlLmlfc2l6ZSArIDEpOworCWlmICghYnVmKQorCQlyZXR1cm4gRU5PTUVNOworCW1lbXNldChidWYsIDAsIGlub2RlLmlfc2l6ZSsxKTsKKworCXJldHZhbCA9IGV4dDJmc19maWxlX29wZW4oZnMsIGlubywgMCwgJmUyX2ZpbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmV0dmFsID0gZXh0MmZzX2ZpbGVfcmVhZChlMl9maWxlLCBidWYsIGlub2RlLmlfc2l6ZSwgJmdvdCk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlyZXR2YWwgPSBleHQyZnNfZmlsZV9jbG9zZShlMl9maWxlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCXJldF9maWxlLT5idWYgPSBidWY7CisJcmV0X2ZpbGUtPnNpemUgPSAoaW50KSBnb3Q7CisJcmV0dXJuIDA7CisKK2Vycm91dDoKKwlmcmVlKGJ1Zik7CisJaWYgKGUyX2ZpbGUpCisJCWV4dDJmc19maWxlX2Nsb3NlKGUyX2ZpbGUpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBjaGFyICpnZXRfbGluZShzdHJ1Y3QgbWVtX2ZpbGUgKmZpbGUpCit7CisJY2hhcgkqY3AsICpyZXQ7CisJaW50CXMgPSAwOworCisJY3AgPSBmaWxlLT5idWYgKyBmaWxlLT5wdHI7CisJd2hpbGUgKCpjcCAmJiAqY3AgIT0gJ1xuJykgeworCQljcCsrOworCQlzKys7CisJfQorCXJldCA9IG1hbGxvYyhzKzEpOworCWlmICghcmV0KQorCQlyZXR1cm4gMDsKKwlyZXRbc109MDsKKwltZW1jcHkocmV0LCBmaWxlLT5idWYgKyBmaWxlLT5wdHIsIHMpOworCXdoaWxlICgqY3AgJiYgKCpjcCA9PSAnXG4nIHx8ICpjcCA9PSAnXHInKSkgeworCQljcCsrOworCQlzKys7CisJfQorCWZpbGUtPnB0ciArPSBzOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgbWVtX2ZpbGVfZW9mKHN0cnVjdCBtZW1fZmlsZSAqZmlsZSkKK3sKKwlyZXR1cm4gKGZpbGUtPnB0ciA+PSBmaWxlLT5zaXplKTsKK30KKworLyoKKyAqIGZzdGFiIHBhcnNpbmcgY29kZQorICovCitzdGF0aWMgY2hhciAqc3RyaW5nX2NvcHkoY29uc3QgY2hhciAqcykKK3sKKwljaGFyCSpyZXQ7CisKKwlpZiAoIXMpCisJCXJldHVybiAwOworCXJldCA9IG1hbGxvYyhzdHJsZW4ocykrMSk7CisJaWYgKHJldCkKKwkJc3RyY3B5KHJldCwgcyk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNoYXIgKnNraXBfb3Zlcl9ibGFuayhjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfd29yZChjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmICFpc3NwYWNlKCpjcCkpCisJCWNwKys7CisJcmV0dXJuIGNwOworfQorCitzdGF0aWMgY2hhciAqcGFyc2Vfd29yZChjaGFyICoqYnVmKQoreworCWNoYXIgKndvcmQsICpuZXh0OworCisJd29yZCA9ICpidWY7CisJaWYgKCp3b3JkID09IDApCisJCXJldHVybiAwOworCisJd29yZCA9IHNraXBfb3Zlcl9ibGFuayh3b3JkKTsKKwluZXh0ID0gc2tpcF9vdmVyX3dvcmQod29yZCk7CisJaWYgKCpuZXh0KQorCQkqbmV4dCsrID0gMDsKKwkqYnVmID0gbmV4dDsKKwlyZXR1cm4gd29yZDsKK30KKworc3RhdGljIHZvaWQgcGFyc2VfZXNjYXBlKGNoYXIgKndvcmQpCit7CisJY2hhcgkqcCwgKnE7CisJaW50CWFjLCBpOworCisJaWYgKCF3b3JkKQorCQlyZXR1cm47CisKKwlmb3IgKHAgPSB3b3JkLCBxID0gd29yZDsgKnA7IHArKywgcSsrKSB7CisJCSpxID0gKnA7CisJCWlmICgqcCAhPSAnXFwnKQorCQkJY29udGludWU7CisJCWlmICgqKytwID09IDApCisJCQlicmVhazsKKwkJaWYgKCpwID09ICd0JykgeworCQkJKnEgPSAnXHQnOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKCpwID09ICduJykgeworCQkJKnEgPSAnXG4nOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKCFpc2RpZ2l0KCpwKSkgeworCQkJKnEgPSAqcDsKKwkJCWNvbnRpbnVlOworCQl9CisJCWFjID0gMDsKKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKywgcCsrKSB7CisJCQlpZiAoIWlzZGlnaXQoKnApKQorCQkJCWJyZWFrOworCQkJYWMgPSAoYWMgKiA4KSArICgqcCAtICcwJyk7CisJCX0KKwkJKnEgPSBhYzsKKwkJcC0tOworCX0KKwkqcSA9IDA7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfZnN0YWJfbGluZShjaGFyICpsaW5lLCBzdHJ1Y3QgZnNfaW5mbyAqZnMpCit7CisJY2hhcgkqZGV2LCAqZGV2aWNlLCAqbW50cG50LCAqdHlwZSwgKm9wdHMsICpmcmVxLCAqcGFzc25vLCAqY3A7CisKKwlpZiAoKGNwID0gc3RyY2hyKGxpbmUsICcjJykpKQorCQkqY3AgPSAwOwkvKiBJZ25vcmUgZXZlcnl0aGluZyBhZnRlciB0aGUgY29tbWVudCBjaGFyICovCisJY3AgPSBsaW5lOworCisJZGV2aWNlID0gcGFyc2Vfd29yZCgmY3ApOworCW1udHBudCA9IHBhcnNlX3dvcmQoJmNwKTsKKwl0eXBlID0gcGFyc2Vfd29yZCgmY3ApOworCW9wdHMgPSBwYXJzZV93b3JkKCZjcCk7CisJZnJlcSA9IHBhcnNlX3dvcmQoJmNwKTsKKwlwYXNzbm8gPSBwYXJzZV93b3JkKCZjcCk7CisKKwlpZiAoIWRldmljZSkKKwkJcmV0dXJuIC0xOwkvKiBBbGxvdyBibGFuayBsaW5lcyAqLworCisJaWYgKCFtbnRwbnQgfHwgIXR5cGUpCisJCXJldHVybiAtMTsKKworCXBhcnNlX2VzY2FwZShkZXZpY2UpOworCXBhcnNlX2VzY2FwZShtbnRwbnQpOworCXBhcnNlX2VzY2FwZSh0eXBlKTsKKwlwYXJzZV9lc2NhcGUob3B0cyk7CisJcGFyc2VfZXNjYXBlKGZyZXEpOworCXBhcnNlX2VzY2FwZShwYXNzbm8pOworCisJZGV2ID0gYmxraWRfZ2V0X2Rldm5hbWUoY2FjaGUsIGRldmljZSwgTlVMTCk7CisJaWYgKGRldikKKwkJZGV2aWNlID0gZGV2OworCisJaWYgKHN0cmNocih0eXBlLCAnLCcpKQorCQl0eXBlID0gMDsKKworCWZzLT5kZXZpY2UgPSBzdHJpbmdfY29weShkZXZpY2UpOworCWZzLT5tb3VudHB0ID0gc3RyaW5nX2NvcHkobW50cG50KTsKKwlmcy0+dHlwZSA9IHN0cmluZ19jb3B5KHR5cGUpOworCWZzLT5vcHRzID0gc3RyaW5nX2NvcHkob3B0cyA/IG9wdHMgOiAiIik7CisJZnMtPmZyZXEgPSBmcmVxID8gYXRvaShmcmVxKSA6IC0xOworCWZzLT5wYXNzbm8gPSBwYXNzbm8gPyBhdG9pKHBhc3NubykgOiAtMTsKKwlmcy0+ZmxhZ3MgPSAwOworCWZzLT5uZXh0ID0gTlVMTDsKKworCWZyZWUoZGV2KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBmcmVlX2ZzdGFiX2xpbmUoc3RydWN0IGZzX2luZm8gKmZzKQoreworCWlmIChmcy0+ZGV2aWNlKQorCQlmcy0+ZGV2aWNlID0gMDsKKwlpZiAoZnMtPm1vdW50cHQpCisJCWZzLT5tb3VudHB0ID0gMDsKKwlpZiAoZnMtPnR5cGUpCisJCWZzLT50eXBlID0gMDsKKwlpZiAoZnMtPm9wdHMpCisJCWZzLT5vcHRzID0gMDsKKwltZW1zZXQoZnMsIDAsIHNpemVvZihzdHJ1Y3QgZnNfaW5mbykpOworfQorCisKK3N0YXRpYyB2b2lkIFBSUyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50IGM7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKwlzZXRfY29tX2Vycl9nZXR0ZXh0KGdldHRleHQpOworI2VuZGlmCisKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgInJ2IikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAncic6CisJCQlyb290X3R5cGUrKzsKKwkJCWJyZWFrOworCisJCWNhc2UgJ3YnOgorCQkJcHJpbnRmKCIlcyAlcyAoJXMpXG4iLCBwcm9ncmFtX25hbWUsCisJCQkgICAgICAgRTJGU1BST0dTX1ZFUlNJT04sIEUyRlNQUk9HU19EQVRFKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UoKTsKKwkJfQorCX0KKwlpZiAob3B0aW5kIDwgYXJnYyAtIDEgfHwgb3B0aW5kID09IGFyZ2MpCisJCXVzYWdlKCk7CisJZGV2aWNlX25hbWUgPSBibGtpZF9nZXRfZGV2bmFtZShOVUxMLCBhcmd2W29wdGluZF0sIE5VTEwpOworCWlmICghZGV2aWNlX25hbWUpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsIF8oIlVuYWJsZSB0byByZXNvbHZlICclcyciKSwKKwkJCWFyZ3Zbb3B0aW5kXSk7CisJCWV4aXQoMSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBnZXRfcm9vdF90eXBlKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IG1lbV9maWxlIGZpbGU7CisJY2hhciAJCSpidWY7CisJc3RydWN0IGZzX2luZm8gZnNfaW5mbzsKKwlpbnQJCXJldDsKKworCXJldHZhbCA9IGdldF9maWxlKGZzLCAiL2V0Yy9mc3RhYiIsICZmaWxlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICJjb3VsZG4ndCBvcGVuIC9ldGMvZnN0YWIiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwl3aGlsZSAoIW1lbV9maWxlX2VvZigmZmlsZSkpIHsKKwkJYnVmID0gZ2V0X2xpbmUoJmZpbGUpOworCQlpZiAoIWJ1ZikKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IHBhcnNlX2ZzdGFiX2xpbmUoYnVmLCAmZnNfaW5mbyk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBuZXh0X2xpbmU7CisKKwkJaWYgKCFzdHJjbXAoZnNfaW5mby5tb3VudHB0LCAiLyIpKQorCQkJcHJpbnRmKCIlc1xuIiwgZnNfaW5mby50eXBlKTsKKworCQlmcmVlX2ZzdGFiX2xpbmUoJmZzX2luZm8pOworCisJbmV4dF9saW5lOgorCQlmcmVlKGJ1Zik7CisJfQorfQorCisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKiBhcmd2KQoreworCWVycmNvZGVfdCByZXR2YWw7CisJZXh0Ml9maWxzeXMgZnM7CisJaW9fbWFuYWdlciBpb19wdHI7CisKKwlhZGRfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCisJYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgTlVMTCk7CisJUFJTKGFyZ2MsIGFyZ3YpOworCisjaWZkZWYgQ09ORklHX1RFU1RJT19ERUJVRworCWlmIChnZXRlbnYoIlRFU1RfSU9fRkxBR1MiKSB8fCBnZXRlbnYoIlRFU1RfSU9fQkxPQ0siKSkgeworCQlpb19wdHIgPSB0ZXN0X2lvX21hbmFnZXI7CisJCXRlc3RfaW9fYmFja2luZ19tYW5hZ2VyID0gdW5peF9pb19tYW5hZ2VyOworCX0gZWxzZQorI2VuZGlmCisJCWlvX3B0ciA9IHVuaXhfaW9fbWFuYWdlcjsKKwlyZXR2YWwgPSBleHQyZnNfb3BlbiAoZGV2aWNlX25hbWUsIG9wZW5fZmxhZywgMCwgMCwgaW9fcHRyLCAmZnMpOworICAgICAgICBpZiAocmV0dmFsKQorCQlleGl0KDEpOworCisJaWYgKHJvb3RfdHlwZSkKKwkJZ2V0X3Jvb3RfdHlwZShmcyk7CisKKwlyZW1vdmVfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCXJldHVybiAoZXh0MmZzX2Nsb3NlIChmcykgPyAxIDogMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9lMmxhYmVsLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9lMmxhYmVsLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmMDhkOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UybGFiZWwuOC5pbgpAQCAtMCwwICsxLDUzIEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlwiIENvcHlyaWdodCAxOTkzLCAxOTk0LCAxOTk1IGJ5IFRoZW9kb3JlIFRzJ28uICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlRIIEUyTEFCRUwgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZTJsYWJlbCBcLSBDaGFuZ2UgdGhlIGxhYmVsIG9uIGFuIGV4dDIvZXh0My9leHQ0IGZpbGVzeXN0ZW0KKy5TSCBTWU5PUFNJUworLkIgZTJsYWJlbAorLkkgZGV2aWNlCitbCisuSSBuZXctbGFiZWwKK10KKy5TSCBERVNDUklQVElPTgorLkIgZTJsYWJlbAord2lsbCBkaXNwbGF5IG9yIGNoYW5nZSB0aGUgZmlsZXN5c3RlbSBsYWJlbCBvbiB0aGUgZXh0MiwgZXh0Mywgb3IgZXh0NCAKK2ZpbGVzeXN0ZW0gbG9jYXRlZCBvbgorLkkgZGV2aWNlLiAgCisuUFAKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAKKy5JIG5ldy1sYWJlbAoraXMgbm90IHByZXNlbnQsIAorLkIgZTJsYWJlbAord2lsbCBzaW1wbHkgZGlzcGxheSB0aGUgY3VycmVudCBmaWxlc3lzdGVtIGxhYmVsLgorLlBQCitJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQKKy5JIG5ldy1sYWJlbAoraXMgcHJlc2VudCwgdGhlbiAKKy5CIGUybGFiZWwKK3dpbGwgc2V0IHRoZSBmaWxlc3lzdGVtIGxhYmVsIHRvIGJlCisuSVIgbmV3LWxhYmVsIC4KK0V4dDIgZmlsZXN5c3RlbSBsYWJlbHMgY2FuIGJlIGF0IG1vc3QgMTYgY2hhcmFjdGVycyBsb25nOyBpZgorLkkgbmV3LWxhYmVsIAoraXMgbG9uZ2VyIHRoYW4gMTYgY2hhcmFjdGVycywgCisuQiBlMmxhYmVsCit3aWxsIHRydW5jYXRlIGl0IGFuZCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZS4gIAorLlBQCitJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNldCB0aGUgZmlsZXN5c3RlbSBsYWJlbCB1c2luZyB0aGUKKy5CIFwtTAorb3B0aW9uIG9mIAorLkJSIHR1bmUyZnMgKDgpLgorLlBQCisuU0ggQVVUSE9SCisuQiBlMmxhYmVsIAord2FzIHdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbyAodHl0c29AbWl0LmVkdSkuCisuU0ggQVZBSUxBQklMSVRZCisuQiBlMmxhYmVsCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20gCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIG1rZTJmcyAoOCksCisuQlIgdHVuZTJmcyAoOCkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZTJsYWJlbC5jIGIvZTJmc3Byb2dzL21pc2MvZTJsYWJlbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyNmE2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9lMmxhYmVsLmMKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBlMmxhYmVsLmMJCS0gUHJpbnQgb3IgY2hhbmdlIHRoZSB2b2x1bWUgbGFiZWwgb24gYW4gZXh0MiBmcworICoKKyAqIFdyaXR0ZW4gYnkgQW5kcmllcyBCcm91d2VyIChhZWJAY3dpLm5sKSwgOTcwNzE0CisgKgorICogQ29weXJpZ2h0IDE5OTcsIDE5OTggYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gY2hhciAqb3B0YXJnOworZXh0ZXJuIGludCBvcHRpbmQ7CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyNkZWZpbmUgRVhUMl9TVVBFUl9NQUdJQyAweEVGNTMKKworI2RlZmluZSBWT0xOQU1TWiAxNgorCitzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayB7CisJY2hhciAgc19kdW1teTBbNTZdOworCXVuc2lnbmVkIGNoYXIgIHNfbWFnaWNbMl07CisJY2hhciAgc19kdW1teTFbNjJdOworCWNoYXIgIHNfdm9sdW1lX25hbWVbVk9MTkFNU1pdOworCWNoYXIgIHNfbGFzdF9tb3VudGVkWzY0XTsKKwljaGFyICBzX2R1bW15Mls4MjRdOworfSBzYjsKKworc3RhdGljIGludCBvcGVuX2UyZnMgKGNoYXIgKmRldiwgaW50IG1vZGUpCit7CisJaW50IGZkOworCisJZmQgPSBvcGVuKGRldiwgbW9kZSk7CisJaWYgKGZkIDwgMCkgeworCSAgICAgcGVycm9yKGRldik7CisJICAgICBmcHJpbnRmIChzdGRlcnIsIF8oImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iKSwgZGV2KTsKKwkgICAgIGV4aXQoMSk7CisJfQorCWlmIChsc2VlayhmZCwgMTAyNCwgU0VFS19TRVQpICE9IDEwMjQpIHsKKwkgICAgIHBlcnJvcihkZXYpOworCSAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iKSk7CisJICAgICBleGl0KDEpOworCX0KKwlpZiAocmVhZChmZCwgKGNoYXIgKikgJnNiLCBzaXplb2Yoc2IpKSAhPSBzaXplb2Yoc2IpKSB7CisJICAgICBwZXJyb3IoZGV2KTsKKwkgICAgIGZwcmludGYgKHN0ZGVyciwgXygiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iKSk7CisJICAgICBleGl0KDEpOworCX0KKwlpZiAoc2Iuc19tYWdpY1swXSArIDI1NipzYi5zX21hZ2ljWzFdICE9IEVYVDJfU1VQRVJfTUFHSUMpIHsKKwkgICAgIGZwcmludGYgKHN0ZGVyciwgXygiZTJsYWJlbDogbm90IGFuIGV4dDIgZmlsZXN5c3RlbVxuIikpOworCSAgICAgZXhpdCgxKTsKKwl9CisKKwlyZXR1cm4gZmQ7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2xhYmVsIChjaGFyICpkZXYpCit7CisJY2hhciBsYWJlbFtWT0xOQU1TWisxXTsKKworCW9wZW5fZTJmcyAoZGV2LCBPX1JET05MWSk7CisJc3RybmNweShsYWJlbCwgc2Iuc192b2x1bWVfbmFtZSwgVk9MTkFNU1opOworCWxhYmVsW1ZPTE5BTVNaXSA9IDA7CisJcHJpbnRmKCIlc1xuIiwgbGFiZWwpOworfQorCitzdGF0aWMgdm9pZCBjaGFuZ2VfbGFiZWwgKGNoYXIgKmRldiwgY2hhciAqbGFiZWwpCit7CisJaW50IGZkOworCisJZmQgPSBvcGVuX2UyZnMoZGV2LCBPX1JEV1IpOworCW1lbXNldChzYi5zX3ZvbHVtZV9uYW1lLCAwLCBWT0xOQU1TWik7CisJc3RybmNweShzYi5zX3ZvbHVtZV9uYW1lLCBsYWJlbCwgVk9MTkFNU1opOworCWlmIChzdHJsZW4obGFiZWwpID4gVk9MTkFNU1opCisJCWZwcmludGYoc3RkZXJyLCBfKCJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIpKTsKKwlpZiAobHNlZWsoZmQsIDEwMjQsIFNFRUtfU0VUKSAhPSAxMDI0KSB7CisJICAgICBwZXJyb3IoZGV2KTsKKwkgICAgIGZwcmludGYgKHN0ZGVyciwgXygiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9jayBhZ2FpblxuIikpOworCSAgICAgZXhpdCgxKTsKKwl9CisJaWYgKHdyaXRlKGZkLCAoY2hhciAqKSAmc2IsIHNpemVvZihzYikpICE9IHNpemVvZihzYikpIHsKKwkgICAgIHBlcnJvcihkZXYpOworCSAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJlMmxhYmVsOiBlcnJvciB3cml0aW5nIHN1cGVyYmxvY2tcbiIpKTsKKwkgICAgIGV4aXQoMSk7CisJfQorfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKK3sKKwlpZiAoYXJnYyA9PSAyKQorCSAgICAgcHJpbnRfbGFiZWwoYXJndlsxXSk7CisJZWxzZSBpZiAoYXJnYyA9PSAzKQorCSAgICAgY2hhbmdlX2xhYmVsKGFyZ3ZbMV0sIGFyZ3ZbMl0pOworCWVsc2UgeworCSAgICAgZnByaW50ZihzdGRlcnIsIF8oIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iKSk7CisJICAgICBleGl0KDEpOworCX0KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2UydW5kby44LmluIGIvZTJmc3Byb2dzL21pc2MvZTJ1bmRvLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE4YjkxOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2UydW5kby44LmluCkBAIC0wLDAgKzEsNjYgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDIwMDggYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBFMlVORE8gOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZTJ1bmRvIFwtIFJlcGxheSBhbiB1bmRvIGxvZyBmb3IgYW4gZXh0Mi9leHQzL2V4dDQgZmlsZXN5c3RlbQorLlNIIFNZTk9QU0lTCisuQiBlMnVuZG8KK1sKKy5CIFwtZgorXQorWworLkIgXC1oCitdCitbCisuQiBcLW4KK10KK1sKKy5CIFwtdgorXQorLkkgdW5kb19sb2cgZGV2aWNlCisuU0ggREVTQ1JJUFRJT04KKy5CIGUydW5kbword2lsbCByZXBsYXkgdGhlIHVuZG8gbG9nCisuSSB1bmRvX2xvZworZm9yIGFuIGV4dDIvZXh0My9leHQ0IGZpbGVzeXN0ZW0gZm91bmQgb24KKy5JUiBkZXZpY2UgLgorVGhpcyBjYW4gYmUKK3VzZWQgdG8gdW5kbyBhIGZhaWxlZCBvcGVyYXRpb24gYnkgYW4gZTJmc3Byb2dzIHByb2dyYW0uCisuU0ggT1BUSU9OUworLlRQCisuQiBcLWYKK05vcm1hbGx5LAorLkIgZTJ1bmRvCit3aWxsIGNoZWNrIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgdG8gbWFrZSBzdXJlIHRoZSB1bmRvIGxvZyBtYXRjaGVzCit3aXRoIHRoZSBmaWxlc3lzdGVtIG9uIHRoZSBkZXZpY2UuICBJZiB0aGV5IGRvIG5vdCBtYXRjaCwKKy5CIGUydW5kbword2lsbCByZWZ1c2UgdG8gYXBwbHkgdGhlIHVuZG8gbG9nIGFzIGEgc2FmZXR5IG1lY2hhbmlzbS4gIFRoZQorLkIgXC1mCitvcHRpb24gZGlzYWJsZXMgdGhpcyBzYWZldHkgbWVjaGFuaXNtLgorLlRQCisuQiBcLWgKK0Rpc3BsYXkgYSB1c2FnZSBtZXNzYWdlLgorLlRQCisuQiBcLW4KK0RyeS1ydW47IGRvIG5vdCBhY3R1YWxseSB3cml0ZSBibG9ja3MgYmFjayB0byB0aGUgZmlsZXN5c3RlbS4KKy5UUAorLkJJIFwtbyAiIG9mZnNldCIKK1NwZWNpZnkgdGhlIGZpbGVzeXN0ZW0ncworLkkgb2Zmc2V0CisoaW4gYnl0ZXMpIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGV2aWNlIG9yIGZpbGUuCisuVFAKKy5CIFwtdgorUmVwb3J0IHdoaWNoIGJsb2NrIHdlJ3JlIGN1cnJlbnRseSByZXBsYXlpbmcuCisuU0ggQVVUSE9SCisuQiBlMnVuZG8KK3dhcyB3cml0dGVuIGJ5IEFuZWVzaCBLdW1hciBLLlYuIChhbmVlc2gua3VtYXJAbGludXgudm5ldC5pYm0uY29tKQorLlNIIEFWQUlMQUJJTElUWQorLkIgZTJ1bmRvCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LgorLlNIIFNFRSBBTFNPCisuQlIgbWtlMmZzICg4KSwKKy5CUiB0dW5lMmZzICg4KQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9lMnVuZG8uYyBiL2UyZnNwcm9ncy9taXNjL2UydW5kby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYjZlNDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9lMnVuZG8uYwpAQCAtMCwwICsxLDY0NCBAQAorLyoKKyAqIGUydW5kby5jIC0gUmVwbGF5IGFuIHVuZG8gbG9nIG9udG8gYW4gZXh0Mi8zLzQgZmlsZXN5c3RlbQorICoKKyAqIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24sIDIwMDcKKyAqIEF1dGhvciBBbmVlc2ggS3VtYXIgSy5WIDxhbmVlc2gua3VtYXJAbGludXgudm5ldC5pYm0uY29tPgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8bGliZ2VuLmg+CisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgInN1cHBvcnQvbmxzLWVuYWJsZS5oIgorCisjdW5kZWYgREVCVUcKKworI2lmZGVmIERFQlVHCisjIGRlZmluZSBkYmdfcHJpbnRmKGYsIGEuLi4pICBkbyB7cHJpbnRmKGYsICMjIGEpOyBmZmx1c2goc3Rkb3V0KTsgfSB3aGlsZSAoMCkKKyNlbHNlCisjIGRlZmluZSBkYmdfcHJpbnRmKGYsIGEuLi4pCisjZW5kaWYKKworLyoKKyAqIFVuZG8gZmlsZSBmb3JtYXQ6IFRoZSBmaWxlIGlzIGN1dCB1cCBpbnRvIHVuZG9faGVhZGVyLmJsb2NrX3NpemUgYmxvY2tzLgorICogVGhlIGZpcnN0IGJsb2NrIGNvbnRhaW5zIHRoZSBoZWFkZXIuCisgKiBUaGUgc2Vjb25kIGJsb2NrIGNvbnRhaW5zIHRoZSBzdXBlcmJsb2NrLgorICogVGhlcmUgaXMgdGhlbiBhIHJlcGVhdGluZyBzZXJpZXMgb2YgYmxvY2tzIGFzIGZvbGxvd3M6CisgKiAgIEEga2V5IGJsb2NrLCB3aGljaCBjb250YWlucyB1bmRvX2tleXMgdG8gbWFwIHRoZSBmb2xsb3dpbmcgZGF0YSBibG9ja3MuCisgKiAgIERhdGEgYmxvY2tzCisgKiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBwb2ludGVycyB0byB0aGUgZmlyc3Qga2V5IGJsb2NrIGFuZCB0aGUgc2IsIHNvIHRoaXMKKyAqIG9yZGVyIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeS4pCisgKi8KKyNkZWZpbmUgRTJVTkRPX01BR0lDICJFMlVORE8wMiIKKyNkZWZpbmUgS0VZQkxPQ0tfTUFHSUMgMHhDQURFQ0FERQorCisjZGVmaW5lIEUyVU5ET19TVEFURV9GSU5JU0hFRAkweDEJLyogdW5kbyBmaWxlIGlzIGNvbXBsZXRlICovCisKKyNkZWZpbmUgRTJVTkRPX01JTl9CTE9DS19TSVpFCTEwMjQJLyogdW5kbyBibG9ja3MgYXJlIG5vIGxlc3MgdGhhbiAxS0IgKi8KKyNkZWZpbmUgRTJVTkRPX01BWF9CTE9DS19TSVpFCTEwNDg1NzYJLyogdW5kbyBibG9ja3MgYXJlIG5vIG1vcmUgdGhhbiAxTUIgKi8KKworc3RydWN0IHVuZG9faGVhZGVyIHsKKwljaGFyIG1hZ2ljWzhdOwkJLyogIkUyVU5ETzAyIiAqLworCV9fbGU2NCBudW1fa2V5czsJLyogaG93IG1hbnkga2V5cz8gKi8KKwlfX2xlNjQgc3VwZXJfb2Zmc2V0OwkvKiB3aGVyZSBpbiB0aGUgZmlsZSBpcyB0aGUgc3VwZXJibG9jayBjb3B5PyAqLworCV9fbGU2NCBrZXlfb2Zmc2V0OwkvKiB3aGVyZSBkbyB0aGUga2V5L2RhdGEgYmxvY2sgY2h1bmtzIHN0YXJ0PyAqLworCV9fbGUzMiBibG9ja19zaXplOwkvKiBibG9jayBzaXplIG9mIHRoZSB1bmRvIGZpbGUgKi8KKwlfX2xlMzIgZnNfYmxvY2tfc2l6ZTsJLyogYmxvY2sgc2l6ZSBvZiB0aGUgdGFyZ2V0IGRldmljZSAqLworCV9fbGUzMiBzYl9jcmM7CQkvKiBjcmMzMmMgb2YgdGhlIHN1cGVyYmxvY2sgKi8KKwlfX2xlMzIgc3RhdGU7CQkvKiBlMnVuZG8gc3RhdGUgZmxhZ3MgKi8KKwlfX2xlMzIgZl9jb21wYXQ7CS8qIGNvbXBhdGlibGUgZmVhdHVyZXMgKG5vbmUgc28gZmFyKSAqLworCV9fbGUzMiBmX2luY29tcGF0OwkvKiBpbmNvbXBhdGlibGUgZmVhdHVyZXMgKG5vbmUgc28gZmFyKSAqLworCV9fbGUzMiBmX3JvY29tcGF0OwkvKiBybyBjb21wYXRpYmxlIGZlYXR1cmVzIChub25lIHNvIGZhcikgKi8KKwlfX2xlMzIgcGFkMzI7CQkvKiBwYWRkaW5nIGZvciBmc19vZmZzZXQgKi8KKwlfX2xlNjQgZnNfb2Zmc2V0OwkvKiBmaWxlc3lzdGVtIG9mZnNldCAqLworCV9fdTggcGFkZGluZ1s0MzZdOwkvKiBwYWRkaW5nICovCisJX19sZTMyIGhlYWRlcl9jcmM7CS8qIGNyYzMyYyBvZiB0aGUgaGVhZGVyIChidXQgbm90IHRoaXMgZmllbGQpICovCit9OworCisjZGVmaW5lIEUyVU5ET19NQVhfRVhURU5UX0JMT0NLUwk1MTIJLyogbWF4IGV4dGVudCBzaXplLCBpbiBibG9ja3MgKi8KKworc3RydWN0IHVuZG9fa2V5IHsKKwlfX2xlNjQgZnNibGs7CQkvKiB3aGVyZSBpbiB0aGUgZnMgZG9lcyB0aGUgYmxvY2sgZ28gKi8KKwlfX2xlMzIgYmxrX2NyYzsJCS8qIGNyYzMyYyBvZiB0aGUgYmxvY2sgKi8KKwlfX2xlMzIgc2l6ZTsJCS8qIGhvdyBtYW55IGJ5dGVzIGluIHRoaXMgYmxvY2s/ICovCit9OworCitzdHJ1Y3QgdW5kb19rZXlfYmxvY2sgeworCV9fbGUzMiBtYWdpYzsJCS8qIEtFWUJMT0NLX01BR0lDIG51bWJlciAqLworCV9fbGUzMiBjcmM7CQkvKiBibG9jayBjaGVja3N1bSAqLworCV9fbGU2NCByZXNlcnZlZDsJLyogemVybyAqLworCisJc3RydWN0IHVuZG9fa2V5IGtleXNbMF07CS8qIGtleXMsIHdoaWNoIGNvbWUgaW1tZWRpYXRlbHkgYWZ0ZXIgKi8KK307CisKK3N0cnVjdCB1bmRvX2tleV9pbmZvIHsKKwlibGs2NF90IGZzYmxrOworCWJsazY0X3QgZmlsZWJsazsKKwlfX3UzMiBibGtfY3JjOworCXVuc2lnbmVkIGludCBzaXplOworfTsKKworc3RydWN0IHVuZG9fY29udGV4dCB7CisJc3RydWN0IHVuZG9faGVhZGVyIGhkcjsKKwlpb19jaGFubmVsIHVuZG9fZmlsZTsKKwl1bnNpZ25lZCBpbnQgYmxvY2tzaXplLCBmc19ibG9ja3NpemU7CisJYmxrNjRfdCBzdXBlcl9ibG9jazsKKwlzaXplX3QgbnVtX2tleXM7CisJc3RydWN0IHVuZG9fa2V5X2luZm8gKmtleXM7Cit9OworI2RlZmluZSBLRVlTX1BFUl9CTE9DSyhkKSAoKChkKS0+YmxvY2tzaXplIC8gc2l6ZW9mKHN0cnVjdCB1bmRvX2tleSkpIC0gMSkKKworI2RlZmluZSBFMlVORE9fRkVBVFVSRV9DT01QQVRfRlNfT0ZGU0VUIDB4MQkvKiB0aGUgZmlsZXN5c3RlbSBvZmZzZXQgKi8KKworc3RhdGljIGlubGluZSBpbnQgZTJ1bmRvX2hhc19mZWF0dXJlX2ZzX29mZnNldChzdHJ1Y3QgdW5kb19oZWFkZXIgKmhlYWRlcikgeworCXJldHVybiBleHQyZnNfbGUzMl90b19jcHUoaGVhZGVyLT5mX2NvbXBhdCkgJgorCQlFMlVORE9fRkVBVFVSRV9DT01QQVRfRlNfT0ZGU0VUOworfQorCitzdGF0aWMgY2hhciAqcHJnX25hbWU7CitzdGF0aWMgY2hhciAqdW5kb19maWxlOworCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLAorCQlfKCJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iKSwgcHJnX25hbWUpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfaGVhZGVyKHN0cnVjdCB1bmRvX2hlYWRlciAqaGRyKQoreworCXByaW50ZigibnIga2V5czpcdCVsbHVcbiIsIGV4dDJmc19sZTY0X3RvX2NwdShoZHItPm51bV9rZXlzKSk7CisJcHJpbnRmKCJzdXBlciBibG9jazpcdCVsbHVcbiIsIGV4dDJmc19sZTY0X3RvX2NwdShoZHItPnN1cGVyX29mZnNldCkpOworCXByaW50Zigia2V5IGJsb2NrOlx0JWxsdVxuIiwgZXh0MmZzX2xlNjRfdG9fY3B1KGhkci0+a2V5X29mZnNldCkpOworCXByaW50ZigiYmxvY2sgc2l6ZTpcdCV1XG4iLCBleHQyZnNfbGUzMl90b19jcHUoaGRyLT5ibG9ja19zaXplKSk7CisJcHJpbnRmKCJmcyBibG9jayBzaXplOlx0JXVcbiIsIGV4dDJmc19sZTMyX3RvX2NwdShoZHItPmZzX2Jsb2NrX3NpemUpKTsKKwlwcmludGYoInN1cGVyIGNyYzpcdDB4JXhcbiIsIGV4dDJmc19sZTMyX3RvX2NwdShoZHItPnNiX2NyYykpOworCXByaW50Zigic3RhdGU6XHRcdDB4JXhcbiIsIGV4dDJmc19sZTMyX3RvX2NwdShoZHItPnN0YXRlKSk7CisJcHJpbnRmKCJjb21wYXQ6XHRcdDB4JXhcbiIsIGV4dDJmc19sZTMyX3RvX2NwdShoZHItPmZfY29tcGF0KSk7CisJcHJpbnRmKCJpbmNvbXBhdDpcdDB4JXhcbiIsIGV4dDJmc19sZTMyX3RvX2NwdShoZHItPmZfaW5jb21wYXQpKTsKKwlwcmludGYoInJvY29tcGF0Olx0MHgleFxuIiwgZXh0MmZzX2xlMzJfdG9fY3B1KGhkci0+Zl9yb2NvbXBhdCkpOworCWlmIChlMnVuZG9faGFzX2ZlYXR1cmVfZnNfb2Zmc2V0KGhkcikpCisJCXByaW50ZigiZnMgb2Zmc2V0Olx0JWxsdVxuIiwgZXh0MmZzX2xlNjRfdG9fY3B1KGhkci0+ZnNfb2Zmc2V0KSk7CisJcHJpbnRmKCJoZWFkZXIgY3JjOlx0MHgleFxuIiwgZXh0MmZzX2xlMzJfdG9fY3B1KGhkci0+aGVhZGVyX2NyYykpOworfQorCitzdGF0aWMgdm9pZCBwcmludF91bmRvX21pc21hdGNoKHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpmc19zdXBlciwKKwkJCQlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqdW5kb19zdXBlcikKK3sKKwlwcmludGYoIiVzIiwKKwkgICAgICAgXygiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIikpOworCWlmIChtZW1jbXAoZnNfc3VwZXItPnNfdXVpZCwgdW5kb19zdXBlci0+c191dWlkLAorCQkgICBzaXplb2YoZnNfc3VwZXItPnNfdXVpZCkpKQorCQlwcmludGYoIiVzIiwgXygiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIpKTsKKwlpZiAoZnNfc3VwZXItPnNfbXRpbWUgIT0gdW5kb19zdXBlci0+c19tdGltZSkKKwkJcHJpbnRmKCIlcyIsIF8oIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIpKTsKKwlpZiAoZnNfc3VwZXItPnNfd3RpbWUgIT0gdW5kb19zdXBlci0+c193dGltZSkKKwkJcHJpbnRmKCIlcyIsIF8oIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIpKTsKKwlpZiAoZnNfc3VwZXItPnNfa2J5dGVzX3dyaXR0ZW4gIT0gdW5kb19zdXBlci0+c19rYnl0ZXNfd3JpdHRlbikKKwkJcHJpbnRmKCIlcyIsIF8oIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iKSk7Cit9CisKK3N0YXRpYyBpbnQgY2hlY2tfZmlsZXN5c3RlbShzdHJ1Y3QgdW5kb19jb250ZXh0ICpjdHgsIGlvX2NoYW5uZWwgY2hhbm5lbCkKK3sKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayBzdXBlciwgKnNiOworCWNoYXIgKmJ1ZjsKKwlfX3UzMiBzYl9jcmM7CisJZXJyY29kZV90IHJldHZhbDsKKworCWlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoY2hhbm5lbCwgU1VQRVJCTE9DS19PRkZTRVQpOworCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChjaGFubmVsLCAxLCAtU1VQRVJCTE9DS19TSVpFLCAmc3VwZXIpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLAorCQkJIiVzIiwgXygid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIikpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCS8qCisJICogQ29tcGFyZSB0aGUgRlMgYW5kIHRoZSB1bmRvIGZpbGUgc3VwZXJibG9jayBzbyB0aGF0IHdlIGNhbid0IGFwcGx5CisJICogZTJ1bmRvICJwYXRjaGVzIiBvdXQgb2Ygb3JkZXIuCisJICovCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oY3R4LT5ibG9ja3NpemUsICZidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLCAiJXMiLCBfKCJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGN0eC0+dW5kb19maWxlLCBjdHgtPnN1cGVyX2Jsb2NrLAorCQkJCSAgICAgICAtU1VQRVJCTE9DS19TSVpFLCBidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLCAiJXMiLCBfKCJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIikpOworCQlnb3RvIG91dDsKKwl9CisJc2IgPSAoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKilidWY7CisJc2ItPnNfbWFnaWMgPSB+c2ItPnNfbWFnaWM7CisJaWYgKG1lbWNtcCgmc3VwZXIsIGJ1Ziwgc2l6ZW9mKHN1cGVyKSkpIHsKKwkJcHJpbnRfdW5kb19taXNtYXRjaCgmc3VwZXIsIChzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqKWJ1Zik7CisJCXJldHZhbCA9IC0xOworCQlnb3RvIG91dDsKKwl9CisJc2JfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKilidWYsIFNVUEVSQkxPQ0tfU0laRSk7CisJaWYgKGV4dDJmc19sZTMyX3RvX2NwdShjdHgtPmhkci5zYl9jcmMpICE9IHNiX2NyYykgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCV8oIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iKSk7CisJCXJldHZhbCA9IC0xOworCQlnb3RvIG91dDsKKwl9CisKK291dDoKKwlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBrZXlfY29tcGFyZShjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCB1bmRvX2tleV9pbmZvICprYSwgKmtiOworCisJa2EgPSBhOworCWtiID0gYjsKKwlyZXR1cm4ga2EtPmZzYmxrIC0ga2ItPmZzYmxrOworfQorCitzdGF0aWMgaW50IGUydW5kb19zZXR1cF90ZGIoY29uc3QgY2hhciAqbmFtZSwgaW9fbWFuYWdlciAqaW9fcHRyKQoreworCWVycmNvZGVfdCByZXR2YWwgPSAwOworCWNvbnN0IGNoYXIgKnRkYl9kaXI7CisJY2hhciAqdGRiX2ZpbGUgPSBOVUxMOworCWNoYXIgKmRldl9uYW1lLCAqdG1wX25hbWU7CisKKwkvKiAocmUpb3BlbiBhIHNwZWNpZmljIHVuZG8gZmlsZSAqLworCWlmICh1bmRvX2ZpbGUgJiYgdW5kb19maWxlWzBdICE9IDApIHsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKCppb19wdHIpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnI7CisJCSppb19wdHIgPSB1bmRvX2lvX21hbmFnZXI7CisJCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKHVuZG9fZmlsZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJcHJpbnRmKF8oIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSAiCisJCQkgInVzaW5nIHRoZSBjb21tYW5kOlxuIgorCQkJICIgICAgZTJ1bmRvICVzICVzXG5cbiIpLAorCQkJIHVuZG9fZmlsZSwgbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyoKKwkgKiBDb25maWd1cmF0aW9uIHZpYSBhIGNvbmYgZmlsZSB3b3VsZCBiZQorCSAqIG5pY2UKKwkgKi8KKwl0ZGJfZGlyID0gZ2V0ZW52KCJFMkZTUFJPR1NfVU5ET19ESVIiKTsKKwlpZiAoIXRkYl9kaXIpCisJCXRkYl9kaXIgPSAiL3Zhci9saWIvZTJmc3Byb2dzIjsKKworCWlmICghc3RyY21wKHRkYl9kaXIsICJub25lIikgfHwgKHRkYl9kaXJbMF0gPT0gMCkgfHwKKwkgICAgYWNjZXNzKHRkYl9kaXIsIFdfT0spKQorCQlyZXR1cm4gMDsKKworCXRtcF9uYW1lID0gc3RyZHVwKG5hbWUpOworCWlmICghdG1wX25hbWUpCisJCWdvdG8gZXJyb3V0OworCWRldl9uYW1lID0gYmFzZW5hbWUodG1wX25hbWUpOworCXRkYl9maWxlID0gbWFsbG9jKHN0cmxlbih0ZGJfZGlyKSArIDggKyBzdHJsZW4oZGV2X25hbWUpICsgNyArIDEpOworCWlmICghdGRiX2ZpbGUpIHsKKwkJZnJlZSh0bXBfbmFtZSk7CisJCWdvdG8gZXJyb3V0OworCX0KKwlzcHJpbnRmKHRkYl9maWxlLCAiJXMvZTJ1bmRvLSVzLmUydW5kbyIsIHRkYl9kaXIsIGRldl9uYW1lKTsKKwlmcmVlKHRtcF9uYW1lKTsKKworCWlmICgodW5saW5rKHRkYl9maWxlKSA8IDApICYmIChlcnJubyAhPSBFTk9FTlQpKSB7CisJCXJldHZhbCA9IGVycm5vOworCQljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsCisJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIiksIHRkYl9maWxlKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja2luZ19tYW5hZ2VyKCppb19wdHIpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCSppb19wdHIgPSB1bmRvX2lvX21hbmFnZXI7CisJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUodGRiX2ZpbGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50ZihfKCJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgIgorCQkgInVzaW5nIHRoZSBjb21tYW5kOlxuIgorCQkgIiAgICBlMnVuZG8gJXMgJXNcblxuIiksCisJCSB0ZGJfZmlsZSwgbmFtZSk7CisKKwlmcmVlKHRkYl9maWxlKTsKKwlyZXR1cm4gMDsKK2Vycm91dDoKKwlmcmVlKHRkYl9maWxlKTsKK2VycjoKKwljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBjLCBmb3JjZSA9IDAsIGRyeV9ydW4gPSAwLCB2ZXJib3NlID0gMCwgZHVtcCA9IDA7CisJaW9fY2hhbm5lbCBjaGFubmVsOworCWVycmNvZGVfdCByZXR2YWw7CisJaW50IG1vdW50X2ZsYWdzLCBjc3VtX2Vycm9yID0gMCwgaW9fZXJyb3IgPSAwOworCXNpemVfdCBpLCBrZXlzX3Blcl9ibG9jazsKKwljaGFyICpkZXZpY2VfbmFtZSwgKnRkYl9maWxlOworCWlvX21hbmFnZXIgbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwlzdHJ1Y3QgdW5kb19jb250ZXh0IHVuZG9fY3R4OworCWNoYXIgKmJ1ZjsKKwlzdHJ1Y3QgdW5kb19rZXlfYmxvY2sgKmtleWI7CisJc3RydWN0IHVuZG9fa2V5ICpka2V5OworCXN0cnVjdCB1bmRvX2tleV9pbmZvICppa2V5OworCV9fdTMyIGtleV9jcmMsIGJsa19jcmMsIGhkcl9jcmM7CisJYmxrNjRfdCBsYmxrOworCWV4dDJfZmlsc3lzIGZzOworCV9fdTY0IG9mZnNldCA9IDA7CisJY2hhciBvcHRfb2Zmc2V0X3N0cmluZ1s0MF0gPSB7IDAgfTsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlhZGRfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCisJcHJnX25hbWUgPSBhcmd2WzBdOworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCAiZmhubzp2ejoiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdmJzoKKwkJCWZvcmNlID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdoJzoKKwkJCWR1bXAgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ24nOgorCQkJZHJ5X3J1biA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbyc6CisJCQlvZmZzZXQgPSBzdHJ0b3VsbChvcHRhcmcsICZidWYsIDApOworCQkJaWYgKCpidWYpIHsKKwkJCQljb21fZXJyKHByZ19uYW1lLCAwLAorCQkJCQkJXygiaWxsZWdhbCBvZmZzZXQgLSAlcyIpLCBvcHRhcmcpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQkvKiB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW4gb2Zmc2V0IHdhcyBzcGVjaWZpZWQgKi8KKwkJCW9wdF9vZmZzZXRfc3RyaW5nWzBdID0gMTsKKwkJCWJyZWFrOworCQljYXNlICd2JzoKKwkJCXZlcmJvc2UgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3onOgorCQkJdW5kb19maWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZSgpOworCQl9CisJfQorCisJaWYgKGFyZ2MgIT0gb3B0aW5kICsgMikKKwkJdXNhZ2UoKTsKKworCXRkYl9maWxlID0gYXJndltvcHRpbmRdOworCWRldmljZV9uYW1lID0gYXJndltvcHRpbmQrMV07CisKKwlpZiAodW5kb19maWxlICYmIHN0cmNtcCh0ZGJfZmlsZSwgdW5kb19maWxlKSA9PSAwKSB7CisJCXByaW50ZihfKCJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIikpOworCQlleGl0KDEpOworCX0KKworCS8qIEludGVycHJldCB0aGUgdW5kbyBmaWxlICovCisJcmV0dmFsID0gbWFuYWdlci0+b3Blbih0ZGJfZmlsZSwgSU9fRkxBR19FWENMVVNJVkUsCisJCQkgICAgICAgJnVuZG9fY3R4LnVuZG9fZmlsZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByZ19uYW1lLCBlcnJubywKKwkJCQlfKCJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iKSwgdGRiX2ZpbGUpOworCQlleGl0KDEpOworCX0KKwlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQodW5kb19jdHgudW5kb19maWxlLCAwLAorCQkJCSAgICAgICAtKGludClzaXplb2YodW5kb19jdHguaGRyKSwKKwkJCQkgICAgICAgJnVuZG9fY3R4Lmhkcik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsIF8oIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIikpOworCQlleGl0KDEpOworCX0KKwlpZiAobWVtY21wKHVuZG9fY3R4Lmhkci5tYWdpYywgRTJVTkRPX01BR0lDLAorCQkgICAgc2l6ZW9mKHVuZG9fY3R4Lmhkci5tYWdpYykpKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIpLCB0ZGJfZmlsZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChkdW1wKSB7CisJCWR1bXBfaGVhZGVyKCZ1bmRvX2N0eC5oZHIpOworCQlleGl0KDEpOworCX0KKwloZHJfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKikmdW5kb19jdHguaGRyLAorCQkJCSAgIHNpemVvZihzdHJ1Y3QgdW5kb19oZWFkZXIpIC0KKwkJCQkgICBzaXplb2YoX191MzIpKTsKKwlpZiAoIWZvcmNlICYmIGV4dDJmc19sZTMyX3RvX2NwdSh1bmRvX2N0eC5oZHIuaGVhZGVyX2NyYykgIT0gaGRyX2NyYykgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IEhlYWRlciBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIiksCisJCQl0ZGJfZmlsZSk7CisJCWV4aXQoMSk7CisJfQorCXVuZG9fY3R4LmJsb2Nrc2l6ZSA9IGV4dDJmc19sZTMyX3RvX2NwdSh1bmRvX2N0eC5oZHIuYmxvY2tfc2l6ZSk7CisJdW5kb19jdHguZnNfYmxvY2tzaXplID0gZXh0MmZzX2xlMzJfdG9fY3B1KHVuZG9fY3R4Lmhkci5mc19ibG9ja19zaXplKTsKKwlpZiAodW5kb19jdHguYmxvY2tzaXplID09IDAgfHwgdW5kb19jdHguZnNfYmxvY2tzaXplID09IDApIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iKSwgdGRiX2ZpbGUpOworCQlleGl0KDEpOworCX0KKwlpZiAoIWZvcmNlICYmIHVuZG9fY3R4LmJsb2Nrc2l6ZSA+IEUyVU5ET19NQVhfQkxPQ0tfU0laRSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iKSwKKwkJCXRkYl9maWxlKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKCFmb3JjZSAmJiB1bmRvX2N0eC5ibG9ja3NpemUgPCBFMlVORE9fTUlOX0JMT0NLX1NJWkUpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIiksCisJCQl0ZGJfZmlsZSk7CisJCWV4aXQoMSk7CisJfQorCXVuZG9fY3R4LnN1cGVyX2Jsb2NrID0gZXh0MmZzX2xlNjRfdG9fY3B1KHVuZG9fY3R4Lmhkci5zdXBlcl9vZmZzZXQpOworCXVuZG9fY3R4Lm51bV9rZXlzID0gZXh0MmZzX2xlNjRfdG9fY3B1KHVuZG9fY3R4Lmhkci5udW1fa2V5cyk7CisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZSh1bmRvX2N0eC51bmRvX2ZpbGUsIHVuZG9fY3R4LmJsb2Nrc2l6ZSk7CisJLyoKKwkgKiBEbyBub3QgY29tcGFyZSB1bmRvX2N0eC5oZHIuZl9jb21wYXQgd2l0aCB0aGUgYXZhaWxhYmxlIGNvbXBhdGlibGUKKwkgKiBmZWF0dXJlcyBzZXQsIGJlY2F1c2UgYSAibWlzc2luZyIgY29tcGF0aWJsZSBmZWF0dXJlIHNob3VsZAorCSAqIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMuCisJICovCisJaWYgKCFmb3JjZSAmJiAodW5kb19jdHguaGRyLmZfaW5jb21wYXQgfHwgdW5kb19jdHguaGRyLmZfcm9jb21wYXQpKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iKSwKKwkJCXRkYl9maWxlKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBvcGVuIHRoZSBmcyAqLworCXJldHZhbCA9IGV4dDJmc19jaGVja19pZl9tb3VudGVkKGRldmljZV9uYW1lLCAmbW91bnRfZmxhZ3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLCBfKCJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICIKKwkJCQkiJXMgaXMgbW91bnRlZC4iKSwgZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworCQljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsICIlcyIsIF8oImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gIgorCQkJCQkJIm9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAodW5kb19maWxlKSB7CisJCXJldHZhbCA9IGUydW5kb19zZXR1cF90ZGIoZGV2aWNlX25hbWUsICZtYW5hZ2VyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gbWFuYWdlci0+b3BlbihkZXZpY2VfbmFtZSwKKwkJCSAgICAgICBJT19GTEFHX0VYQ0xVU0lWRSB8IChkcnlfcnVuID8gMCA6IElPX0ZMQUdfUlcpLAorCQkJICAgICAgICZjaGFubmVsKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJnX25hbWUsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSBvcGVuaW5nIGAlcyciKSwgZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCWlmICgqb3B0X29mZnNldF9zdHJpbmcgfHwgZTJ1bmRvX2hhc19mZWF0dXJlX2ZzX29mZnNldCgmdW5kb19jdHguaGRyKSkgeworCQlpZiAoISpvcHRfb2Zmc2V0X3N0cmluZykKKwkJCW9mZnNldCA9IGV4dDJmc19sZTY0X3RvX2NwdSh1bmRvX2N0eC5oZHIuZnNfb2Zmc2V0KTsKKwkJcmV0dmFsID0gc25wcmludGYob3B0X29mZnNldF9zdHJpbmcsIHNpemVvZihvcHRfb2Zmc2V0X3N0cmluZyksCisJCQkJCQkgICJvZmZzZXQ9JWxsdSIsIG9mZnNldCk7CisJCWlmICgoc2l6ZV90KSByZXR2YWwgPj0gc2l6ZW9mKG9wdF9vZmZzZXRfc3RyaW5nKSkgeworCQkJLyogc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KKwkJCWNvbV9lcnIocHJnX25hbWUsIDAsIF8oInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpb19jaGFubmVsX3NldF9vcHRpb25zKGNoYW5uZWwsIG9wdF9vZmZzZXRfc3RyaW5nKTsKKwl9CisKKwlpZiAoIWZvcmNlICYmIGNoZWNrX2ZpbGVzeXN0ZW0oJnVuZG9fY3R4LCBjaGFubmVsKSkKKwkJZXhpdCgxKTsKKworCS8qIHByZXBhcmUgdG8gcmVhZCBrZXlzICovCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCB1bmRvX2tleV9pbmZvKSAqIHVuZG9fY3R4Lm51bV9rZXlzLAorCQkJCSZ1bmRvX2N0eC5rZXlzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJnX25hbWUsIHJldHZhbCwgIiVzIiwgXygid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKSk7CisJCWV4aXQoMSk7CisJfQorCWlrZXkgPSB1bmRvX2N0eC5rZXlzOworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHVuZG9fY3R4LmJsb2Nrc2l6ZSwgJmtleWIpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLCAiJXMiLCBfKCJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oRTJVTkRPX01BWF9FWFRFTlRfQkxPQ0tTICogdW5kb19jdHguYmxvY2tzaXplLAorCQkJCSZidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLCAiJXMiLCBfKCJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBsb2FkIGtleXMgKi8KKwlrZXlzX3Blcl9ibG9jayA9IEtFWVNfUEVSX0JMT0NLKCZ1bmRvX2N0eCk7CisJbGJsayA9IGV4dDJmc19sZTY0X3RvX2NwdSh1bmRvX2N0eC5oZHIua2V5X29mZnNldCk7CisJZGJnX3ByaW50ZigibnJfa2V5cz0lbHUsIGtwYj0lenUsIGJsa3N6PSV1XG4iLAorCQkgICB1bmRvX2N0eC5udW1fa2V5cywga2V5c19wZXJfYmxvY2ssIHVuZG9fY3R4LmJsb2Nrc2l6ZSk7CisJZm9yIChpID0gMDsgaSA8IHVuZG9fY3R4Lm51bV9rZXlzOyBpICs9IGtleXNfcGVyX2Jsb2NrKSB7CisJCXNpemVfdCBqLCBtYXhfajsKKwkJX19sZTMyIGNyYzsKKworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQodW5kb19jdHgudW5kb19maWxlLAorCQkJCQkgICAgICAgbGJsaywgMSwga2V5Yik7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIocHJnX25hbWUsIHJldHZhbCwgIiVzIiwgXygid2hpbGUgcmVhZGluZyBrZXlzIikpOworCQkJaWYgKGZvcmNlKSB7CisJCQkJaW9fZXJyb3IgPSAxOworCQkJCXVuZG9fY3R4Lm51bV9rZXlzID0gaSAtIDE7CisJCQkJYnJlYWs7CisJCQl9CisJCQlleGl0KDEpOworCQl9CisKKwkJLyogY2hlY2sga2V5cyAqLworCQlpZiAoIWZvcmNlICYmCisJCSAgICBleHQyZnNfbGUzMl90b19jcHUoa2V5Yi0+bWFnaWMpICE9IEtFWUJMT0NLX01BR0lDKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iKSwKKwkJCQl0ZGJfZmlsZSwgbGJsayk7CisJCQlleGl0KDEpOworCQl9CisJCWNyYyA9IGtleWItPmNyYzsKKwkJa2V5Yi0+Y3JjID0gMDsKKwkJa2V5X2NyYyA9IGV4dDJmc19jcmMzMmNfbGUofjAsICh1bnNpZ25lZCBjaGFyICopa2V5YiwKKwkJCQkJICAgdW5kb19jdHguYmxvY2tzaXplKTsKKwkJaWYgKCFmb3JjZSAmJiBleHQyZnNfbGUzMl90b19jcHUoY3JjKSAhPSBrZXlfY3JjKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQlfKCIlczoga2V5IGJsb2NrIGNoZWNrc3VtIGVycm9yIGF0ICVsbHUuXG4iKSwKKwkJCQl0ZGJfZmlsZSwgbGJsayk7CisJCQlleGl0KDEpOworCQl9CisKKwkJLyogbG9hZCBrZXlzIGZyb20ga2V5IGJsb2NrICovCisJCWxibGsrKzsKKwkJbWF4X2ogPSB1bmRvX2N0eC5udW1fa2V5cyAtIGk7CisJCWlmIChtYXhfaiA+IGtleXNfcGVyX2Jsb2NrKQorCQkJbWF4X2ogPSBrZXlzX3Blcl9ibG9jazsKKwkJZm9yIChqID0gMCwgZGtleSA9IGtleWItPmtleXM7CisJCSAgICAgaiA8IG1heF9qOworCQkgICAgIGorKywgaWtleSsrLCBka2V5KyspIHsKKwkJCWlrZXktPmZzYmxrID0gZXh0MmZzX2xlNjRfdG9fY3B1KGRrZXktPmZzYmxrKTsKKwkJCWlrZXktPmZpbGVibGsgPSBsYmxrOworCQkJaWtleS0+YmxrX2NyYyA9IGV4dDJmc19sZTMyX3RvX2NwdShka2V5LT5ibGtfY3JjKTsKKwkJCWlrZXktPnNpemUgPSBleHQyZnNfbGUzMl90b19jcHUoZGtleS0+c2l6ZSk7CisJCQlsYmxrICs9IChpa2V5LT5zaXplICsgdW5kb19jdHguYmxvY2tzaXplIC0gMSkgLworCQkJCXVuZG9fY3R4LmJsb2Nrc2l6ZTsKKworCQkJaWYgKEUyVU5ET19NQVhfRVhURU5UX0JMT0NLUyAqIHVuZG9fY3R4LmJsb2Nrc2l6ZSA8CisJCQkgICAgaWtleS0+c2l6ZSkgeworCQkJCWNvbV9lcnIocHJnX25hbWUsIHJldHZhbCwKKwkJCQkJXygiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIiksCisJCQkJCXRkYl9maWxlLCBpa2V5LT5mc2Jsayk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKworCQkJLyogY2hlY2sgZWFjaCBibG9jaydzIGNyYyAqLworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KHVuZG9fY3R4LnVuZG9fZmlsZSwKKwkJCQkJCSAgICAgICBpa2V5LT5maWxlYmxrLAorCQkJCQkJICAgICAgIC0oaW50KWlrZXktPnNpemUsCisJCQkJCQkgICAgICAgYnVmKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsCisJCQkJCV8oIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIiksCisJCQkJCWlrZXktPmZpbGVibGspOworCQkJCWlmICghZm9yY2UpCisJCQkJCWV4aXQoMSk7CisJCQkJaW9fZXJyb3IgPSAxOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlibGtfY3JjID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgKHVuc2lnbmVkIGNoYXIgKilidWYsCisJCQkJCQkgICBpa2V5LT5zaXplKTsKKwkJCWlmIChibGtfY3JjICE9IGlrZXktPmJsa19jcmMpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAiCisJCQkJCSAgIiVsbHUgKHVuZG8gYmxrICVsbHUpXG4iKSwKKwkJCQkJaWtleS0+ZnNibGssIGlrZXktPmZpbGVibGspOworCQkJCWlmICghZm9yY2UpCisJCQkJCWV4aXQoMSk7CisJCQkJY3N1bV9lcnJvciA9IDE7CisJCQl9CisJCX0KKwl9CisJZXh0MmZzX2ZyZWVfbWVtKCZrZXliKTsKKworCS8qIHNvcnQga2V5cyBpbiBmcyBibG9jayBvcmRlciAqLworCXFzb3J0KHVuZG9fY3R4LmtleXMsIHVuZG9fY3R4Lm51bV9rZXlzLCBzaXplb2Yoc3RydWN0IHVuZG9fa2V5X2luZm8pLAorCSAgICAgIGtleV9jb21wYXJlKTsKKworCS8qIHJlcGxheSAqLworCWlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoY2hhbm5lbCwgdW5kb19jdHguZnNfYmxvY2tzaXplKTsKKwlmb3IgKGkgPSAwLCBpa2V5ID0gdW5kb19jdHgua2V5czsgaSA8IHVuZG9fY3R4Lm51bV9rZXlzOyBpKyssIGlrZXkrKykgeworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQodW5kb19jdHgudW5kb19maWxlLAorCQkJCQkgICAgICAgaWtleS0+ZmlsZWJsaywKKwkJCQkJICAgICAgIC0oaW50KWlrZXktPnNpemUsCisJCQkJCSAgICAgICBidWYpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKHByZ19uYW1lLCByZXR2YWwsCisJCQkJXygid2hpbGUgZmV0Y2hpbmcgYmxvY2sgJWxsdS4iKSwKKwkJCQlpa2V5LT5maWxlYmxrKTsKKwkJCWlvX2Vycm9yID0gMTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKHZlcmJvc2UpCisJCQlwcmludGYoIlJlcGxheWVkIGJsb2NrIG9mIHNpemUgJXUgZnJvbSAlbGx1IHRvICVsbHVcbiIsCisJCQkJaWtleS0+c2l6ZSwgaWtleS0+ZmlsZWJsaywgaWtleS0+ZnNibGspOworCQlpZiAoZHJ5X3J1bikKKwkJCWNvbnRpbnVlOworCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGNoYW5uZWwsIGlrZXktPmZzYmxrLAorCQkJCQkJLShpbnQpaWtleS0+c2l6ZSwgYnVmKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycihwcmdfbmFtZSwgcmV0dmFsLAorCQkJCV8oIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdS4iKSwgaWtleS0+ZnNibGspOworCQkJaW9fZXJyb3IgPSAxOworCQl9CisJfQorCisJaWYgKGNzdW1fZXJyb3IpCisJCWZwcmludGYoc3RkZXJyLCBfKCJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iKSk7CisJaWYgKGlvX2Vycm9yKQorCQlmcHJpbnRmKHN0ZGVyciwgXygiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iKSk7CisJaWYgKCEoZXh0MmZzX2xlMzJfdG9fY3B1KHVuZG9fY3R4Lmhkci5zdGF0ZSkgJiBFMlVORE9fU1RBVEVfRklOSVNIRUQpKSB7CisJCWZvcmNlID0gMTsKKwkJZnByaW50ZihzdGRlcnIsIF8oIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iKSk7CisJfQorCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlleHQyZnNfZnJlZV9tZW0oJnVuZG9fY3R4LmtleXMpOworCWlvX2NoYW5uZWxfY2xvc2UoY2hhbm5lbCk7CisKKwkvKiBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zLCB0cnkgdG8gZm9yY2UgYSBmc2NrICovCisJaWYgKCFkcnlfcnVuICYmIChmb3JjZSB8fCBjc3VtX2Vycm9yIHx8IGlvX2Vycm9yKSkgeworCQlyZXR2YWwgPSBleHQyZnNfb3BlbjIoZGV2aWNlX25hbWUsIE5VTEwsCisJCQkJICAgRVhUMl9GTEFHX1JXIHwgRVhUMl9GTEFHXzY0QklUUywgMCwgMCwKKwkJCQkgICBtYW5hZ2VyLCAmZnMpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCWZzLT5zdXBlci0+c19zdGF0ZSAmPSB+RVhUMl9WQUxJRF9GUzsKKwkJaWYgKGNzdW1fZXJyb3IgfHwgaW9fZXJyb3IpCisJCQlmcy0+c3VwZXItPnNfc3RhdGUgfD0gRVhUMl9FUlJPUl9GUzsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQlleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworCX0KKworb3V0OgorCWlvX2NoYW5uZWxfY2xvc2UodW5kb19jdHgudW5kb19maWxlKTsKKworCXJldHVybiBjc3VtX2Vycm9yOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZTRjcnlwdC44LmluIGIvZTJmc3Byb2dzL21pc2MvZTRjcnlwdC44LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNWU0NzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9lNGNyeXB0LjguaW4KQEAgLTAsMCArMSw0NSBAQAorLlRIIEU0Q1JZUFQgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZTRjcnlwdCBcLSBleHQ0IGZpbGVzeXN0ZW0gZW5jcnlwdGlvbiB1dGlsaXR5CisuU0ggU1lOT1BTSVMKKy5CIGU0Y3J5cHQgYWRkX2tleSAtUyBcZlJbXGZCIC1rIFxmSWtleXJpbmdcZlIgXSBbXGZCLXZcZlJdIFtcZkItcVxmUl0gWyBcZkkgcGF0aFxmUiAuLi4gXQorLmJyCisuQiBlNGNyeXB0IG5ld19zZXNzaW9uCisuYnIKKy5CIGU0Y3J5cHQgZ2V0X3BvbGljeSBcZklwYXRoXGZSIC4uLgorLmJyCisuQiBlNGNyeXB0IHNldF9wb2xpY3kgXGZJcG9saWN5IHBhdGhcZlIgLi4uCisuU0ggREVTQ1JJUFRJT04KKy5CIGU0Y3J5cHQKK3BlcmZvcm1zIGVuY3J5cHRpb24gbWFuYWdlbWVudCBmb3IgZXh0NCBmaWxlIHN5c3RlbXMuCisuU0ggQ09NTUFORFMKKy5UUAorLkIgZTRjcnlwdCBhZGRfa2V5IC1TIFxmUltcZkIgLWsgXGZJa2V5cmluZ1xmUiBdIFtcZkItdlxmUl0gW1xmQi1xXGZSXSBbIFxmSSBwYXRoXGZSIC4uLiBdCitQcm9tcHRzIHRoZSB1c2VyIGZvciBhIHBhc3NwaHJhc2UgYW5kIGluc2VydHMgaXQgaW50byB0aGUgc3BlY2lmaWVkCitrZXlyaW5nLiAgSWYgbm8ga2V5cmluZyBpcyBzcGVjaWZpZWQsIGU0Y3J5cHQgd2lsbCB1c2UgdGhlIHNlc3Npb24KK2tleXJpbmcgaWYgaXQgZXhpc3RzIG9yIHRoZSB1c2VyIHNlc3Npb24ga2V5cmluZyBpZiBpdCBkb2VzIG5vdC4KKy5JUAorSWYgb25lIG9yIG1vcmUgZGlyZWN0b3J5IHBhdGhzIGFyZSBzcGVjaWZpZWQsIGU0Y3J5cHQgd2lsbCB0cnkgdG8KK3NldCB0aGUgcG9saWN5IG9mIHRob3NlIGRpcmVjdG9yaWVzIHRvIHVzZSB0aGUga2V5IGp1c3QgZW50ZXJlZCBieQordGhlIHVzZXIuCisuVFAKKy5CIGU0Y3J5cHQgZ2V0X3BvbGljeSBcZklwYXRoXGZSIC4uLgorUHJpbnQgdGhlIHBvbGljeSBmb3IgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLgorLlRQCisuQiBlNGNyeXB0IG5ld19zZXNzaW9uCitHaXZlIHRoZSBpbnZva2luZyBwcm9jZXNzICh0eXBpY2FsbHkgYSBzaGVsbCkgYSBuZXcgc2Vzc2lvbiBrZXlyaW5nLAorZGlzY2FyZGluZyBpdHMgb2xkIHNlc3Npb24ga2V5cmluZy4KKy5UUAorLkIgZTRjcnlwdCBzZXRfcG9saWN5IFxmSXBvbGljeSBwYXRoXGZSIC4uLgorU2V0cyB0aGUgcG9saWN5IGZvciB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCitBbGwgZGlyZWN0b3JpZXMgbXVzdCBiZSBlbXB0eSB0byBzZXQgdGhlIHBvbGljeTsgaWYgdGhlIGRpcmVjdG9yeQorYWxyZWFkeSBoYXMgYSBwb2xpY3kgZXN0YWJsaXNoZWQsIGU0Y3J5cHQgd2lsbCB2YWxpZGF0ZSB0aGF0IHRoZQorcG9saWN5IG1hdGNoZXMgd2hhdCB3YXMgc3BlY2lmaWVkLiAgQSBwb2xpY3kgaXMgYW4gZW5jcnlwdGlvbiBrZXkKK2lkZW50aWZpZXIgY29uc2lzdGluZyBvZiAxNiBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzLgorLlNIIEFVVEhPUgorV3JpdHRlbiBieSBNaWNoYWVsIEhhbGNyb3cgPG1oYWxjcm93QGdvb2dsZS5jb20+LCBJbGRhciBNdXNsdWtob3YKKzxtdXNsdWtob3ZpQGdtYWlsLmNvbT4sIGFuZCBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorLlNIIFNFRSBBTFNPCisuQlIga2V5Y3RsICgxKSwKKy5CUiBta2UyZnMgKDgpLAorLkJSIG1vdW50ICg4KS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2U0Y3J5cHQuYyBiL2UyZnNwcm9ncy9taXNjL2U0Y3J5cHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGZhY2EzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZTRjcnlwdC5jCkBAIC0wLDAgKzEsODc4IEBACisvKgorICogZTRjcnlwdC5jIC0gZXh0NCBlbmNyeXB0aW9uIG1hbmFnZW1lbnQgdXRpbGl0eQorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNCBHb29nbGUsIEluYy4KKyAqCVNIQTUxMiBpbXBsZW1lbnRhdGlvbiBmcm9tIGxpYnRvbWNyeXB0LgorICoKKyAqIEF1dGhvcnM6IE1pY2hhZWwgSGFsY3JvdyA8bWhhbGNyb3dAZ29vZ2xlLmNvbT4sCisgKglJbGRhciBNdXNsdWtob3YgPGlsZGFybUBnb29nbGUuY29tPgorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bW50ZW50Lmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRlcm1pb3MuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNpZiAhZGVmaW5lZChIQVZFX0FERF9LRVkpIHx8ICFkZWZpbmVkKEhBVkVfS0VZQ1RMKQorI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19LRVlfSAorI2luY2x1ZGUgPHN5cy9rZXkuaD4KKyNlbmRpZgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAidXVpZC91dWlkLmgiCisKKy8qIHNwZWNpYWwgcHJvY2VzcyBrZXlyaW5nIHNob3J0Y3V0IElEcyAqLworI2RlZmluZSBLRVlfU1BFQ19USFJFQURfS0VZUklORwkJLTEKKyNkZWZpbmUgS0VZX1NQRUNfUFJPQ0VTU19LRVlSSU5HCS0yCisjZGVmaW5lIEtFWV9TUEVDX1NFU1NJT05fS0VZUklORwktMworI2RlZmluZSBLRVlfU1BFQ19VU0VSX0tFWVJJTkcJCS00CisjZGVmaW5lIEtFWV9TUEVDX1VTRVJfU0VTU0lPTl9LRVlSSU5HCS01CisjZGVmaW5lIEtFWV9TUEVDX0dST1VQX0tFWVJJTkcJCS02CisKKyNkZWZpbmUgS0VZQ1RMX0dFVF9LRVlSSU5HX0lECQkwCisjZGVmaW5lIEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORwkxCisjZGVmaW5lIEtFWUNUTF9ERVNDUklCRQkJCTYKKyNkZWZpbmUgS0VZQ1RMX1NFQVJDSAkJCTEwCisjZGVmaW5lIEtFWUNUTF9TRVNTSU9OX1RPX1BBUkVOVAkxOAorCit0eXBlZGVmIF9fczMyIGtleV9zZXJpYWxfdDsKKworI2RlZmluZSBFWFQ0X0tFWV9SRUZfU1RSX0JVRl9TSVpFICgoRVhUNF9LRVlfREVTQ1JJUFRPUl9TSVpFICogMikgKyAxKQorCisjaWZuZGVmIEVYVDRfSU9DX0dFVF9FTkNSWVBUSU9OX1BXU0FMVAorI2RlZmluZSBFWFQ0X0lPQ19HRVRfRU5DUllQVElPTl9QV1NBTFQJX0lPVygnZicsIDIwLCBfX3U4WzE2XSkKKyNlbmRpZgorCisjZGVmaW5lIE9QVF9WRVJCT1NFCTB4MDAwMQorI2RlZmluZSBPUFRfUVVJRVQJMHgwMDAyCisKK2ludCBvcHRpb25zOworCisjaWZuZGVmIEhBVkVfS0VZQ1RMCitzdGF0aWMgbG9uZyBrZXljdGwoaW50IGNtZCwgLi4uKQoreworCXZhX2xpc3QgdmE7CisJdW5zaWduZWQgbG9uZyBhcmcyLCBhcmczLCBhcmc0LCBhcmc1OworCisJdmFfc3RhcnQodmEsIGNtZCk7CisJYXJnMiA9IHZhX2FyZyh2YSwgdW5zaWduZWQgbG9uZyk7CisJYXJnMyA9IHZhX2FyZyh2YSwgdW5zaWduZWQgbG9uZyk7CisJYXJnNCA9IHZhX2FyZyh2YSwgdW5zaWduZWQgbG9uZyk7CisJYXJnNSA9IHZhX2FyZyh2YSwgdW5zaWduZWQgbG9uZyk7CisJdmFfZW5kKHZhKTsKKwlyZXR1cm4gc3lzY2FsbChfX05SX2tleWN0bCwgY21kLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKK30KKyNlbmRpZgorCisjaWZuZGVmIEhBVkVfQUREX0tFWQorc3RhdGljIGtleV9zZXJpYWxfdCBhZGRfa2V5KGNvbnN0IGNoYXIgKnR5cGUsIGNvbnN0IGNoYXIgKmRlc2NyaXB0aW9uLAorCQkJICAgIGNvbnN0IHZvaWQgKnBheWxvYWQsIHNpemVfdCBwbGVuLAorCQkJICAgIGtleV9zZXJpYWxfdCBrZXlyaW5nKQoreworCXJldHVybiBzeXNjYWxsKF9fTlJfYWRkX2tleSwgdHlwZSwgZGVzY3JpcHRpb24sIHBheWxvYWQsCisJCSAgICAgICBwbGVuLCBrZXlyaW5nKTsKK30KKyNlbmRpZgorCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqaGV4Y2hhcnMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAiMDEyMzQ1Njc4OWFiY2RlZiI7CitzdGF0aWMgY29uc3Qgc2l6ZV90IGhleGNoYXJzX3NpemUgPSAxNjsKKworI2RlZmluZSBTSEE1MTJfTEVOR1RIIDY0CisjZGVmaW5lIEVYVDJGU19LRVlfVFlQRV9MT0dPTiAibG9nb24iCisjZGVmaW5lIEVYVDJGU19LRVlfREVTQ19QUkVGSVggImV4dDQ6IgorI2RlZmluZSBFWFQyRlNfS0VZX0RFU0NfUFJFRklYX1NJWkUgNQorCisjZGVmaW5lIEVYVDRfSU9DX1NFVF9FTkNSWVBUSU9OX1BPTElDWSAgICAgIF9JT1IoJ2YnLCAxOSwgc3RydWN0IGV4dDRfZW5jcnlwdGlvbl9wb2xpY3kpCisjZGVmaW5lIEVYVDRfSU9DX0dFVF9FTkNSWVBUSU9OX1BPTElDWSAgICAgIF9JT1coJ2YnLCAyMSwgc3RydWN0IGV4dDRfZW5jcnlwdGlvbl9wb2xpY3kpCisKK3N0YXRpYyBpbnQgaW50X2xvZzIoaW50IGFyZykKK3sKKwlpbnQgICAgIGwgPSAwOworCisJYXJnID4+PSAxOworCXdoaWxlIChhcmcpIHsKKwkJbCsrOworCQlhcmcgPj49IDE7CisJfQorCXJldHVybiBsOworfQorCitzdGF0aWMgdm9pZCB2YWxpZGF0ZV9wYXRocyhpbnQgYXJnYywgY2hhciAqYXJndltdLCBpbnQgcGF0aF9zdGFydF9pbmRleCkKK3sKKwlpbnQgeDsKKwlpbnQgdmFsaWQgPSAxOworCXN0cnVjdCBzdGF0IHN0OworCisJZm9yICh4ID0gcGF0aF9zdGFydF9pbmRleDsgeCA8IGFyZ2M7IHgrKykgeworCQlpbnQgcmV0ID0gYWNjZXNzKGFyZ3ZbeF0sIFdfT0spOworCQlpZiAocmV0KSB7CisJCWludmFsaWQ6CisJCQlwZXJyb3IoYXJndlt4XSk7CisJCQl2YWxpZCA9IDA7CisJCQljb250aW51ZTsKKwkJfQorCQlyZXQgPSBzdGF0KGFyZ3ZbeF0sICZzdCk7CisJCWlmIChyZXQgPCAwKQorCQkJZ290byBpbnZhbGlkOworCQlpZiAoIVNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMgaXMgbm90IGEgZGlyZWN0b3J5XG4iLCBhcmd2W3hdKTsKKwkJCWdvdG8gaW52YWxpZDsKKwkJfQorCX0KKwlpZiAoIXZhbGlkKQorCQlleGl0KDEpOworfQorCitzdGF0aWMgaW50IGhleDJieXRlKGNvbnN0IGNoYXIgKmhleCwgc2l6ZV90IGhleF9zaXplLCB1bnNpZ25lZCBjaGFyICpieXRlcywKKwkJICAgIHNpemVfdCBieXRlc19zaXplKQoreworCXNpemVfdCB4OworCXVuc2lnbmVkIGNoYXIgKmgsICpsOworCisJaWYgKGhleF9zaXplICUgMikKKwkJcmV0dXJuIC1FSU5WQUw7CisJZm9yICh4ID0gMDsgeCA8IGhleF9zaXplOyB4ICs9IDIpIHsKKwkJaCA9IG1lbWNocihoZXhjaGFycywgaGV4W3hdLCBoZXhjaGFyc19zaXplKTsKKwkJaWYgKCFoKQorCQkJcmV0dXJuIC1FSU5WQUw7CisJCWwgPSBtZW1jaHIoaGV4Y2hhcnMsIGhleFt4ICsgMV0sIGhleGNoYXJzX3NpemUpOworCQlpZiAoIWwpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJaWYgKCh4ID4+IDEpID49IGJ5dGVzX3NpemUpCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJYnl0ZXNbeCA+PiAxXSA9ICgoKHVuc2lnbmVkIGNoYXIpKGggLSBoZXhjaGFycykgPDwgNCkgKworCQkJCSAodW5zaWduZWQgY2hhcikobCAtIGhleGNoYXJzKSk7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogU2FsdCBoYW5kbGluZworICovCitzdHJ1Y3Qgc2FsdCB7CisJdW5zaWduZWQgY2hhciAqc2FsdDsKKwljaGFyIGtleV9yZWZfc3RyW0VYVDRfS0VZX1JFRl9TVFJfQlVGX1NJWkVdOworCXVuc2lnbmVkIGNoYXIga2V5X2Rlc2NbRVhUNF9LRVlfREVTQ1JJUFRPUl9TSVpFXTsKKwl1bnNpZ25lZCBjaGFyIGtleVtFWFQ0X01BWF9LRVlfU0laRV07CisJc2l6ZV90IHNhbHRfbGVuOworfTsKK3N0cnVjdCBzYWx0ICpzYWx0X2xpc3Q7Cit1bnNpZ25lZCBudW1fc2FsdDsKK3Vuc2lnbmVkIG1heF9zYWx0OworY2hhciBpbl9wYXNzcGhyYXNlW0VYVDRfTUFYX1BBU1NQSFJBU0VfU0laRV07CisKK3N0YXRpYyBzdHJ1Y3Qgc2FsdCAqZmluZF9ieV9zYWx0KHVuc2lnbmVkIGNoYXIgKnNhbHQsIHNpemVfdCBzYWx0X2xlbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwlzdHJ1Y3Qgc2FsdCAqcDsKKworCWZvciAoaSA9IDAsIHAgPSBzYWx0X2xpc3Q7IGkgPCBudW1fc2FsdDsgaSsrLCBwKyspCisJCWlmICgocC0+c2FsdF9sZW4gPT0gc2FsdF9sZW4pICYmCisJCSAgICAhbWVtY21wKHAtPnNhbHQsIHNhbHQsIHNhbHRfbGVuKSkKKwkJCXJldHVybiBwOworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCBhZGRfc2FsdCh1bnNpZ25lZCBjaGFyICpzYWx0LCBzaXplX3Qgc2FsdF9sZW4pCit7CisJaWYgKGZpbmRfYnlfc2FsdChzYWx0LCBzYWx0X2xlbikpCisJCXJldHVybjsKKwlpZiAobnVtX3NhbHQgPj0gbWF4X3NhbHQpIHsKKwkJbWF4X3NhbHQgPSBudW1fc2FsdCArIDEwOworCQlzYWx0X2xpc3QgPSByZWFsbG9jKHNhbHRfbGlzdCwgbWF4X3NhbHQgKiBzaXplb2Yoc3RydWN0IHNhbHQpKTsKKwkJaWYgKCFzYWx0X2xpc3QpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgYWxsb2NhdGUgc2FsdCBsaXN0XG4iKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJc2FsdF9saXN0W251bV9zYWx0XS5zYWx0ID0gc2FsdDsKKwlzYWx0X2xpc3RbbnVtX3NhbHRdLnNhbHRfbGVuID0gc2FsdF9sZW47CisJbnVtX3NhbHQrKzsKK30KKworc3RhdGljIHZvaWQgY2xlYXJfc2VjcmV0cyh2b2lkKQoreworCWlmIChzYWx0X2xpc3QpIHsKKwkJbWVtc2V0KHNhbHRfbGlzdCwgMCwgc2l6ZW9mKHN0cnVjdCBzYWx0KSAqIG1heF9zYWx0KTsKKwkJZnJlZShzYWx0X2xpc3QpOworCQlzYWx0X2xpc3QgPSBOVUxMOworCX0KKwltZW1zZXQoaW5fcGFzc3BocmFzZSwgMCwgc2l6ZW9mKGluX3Bhc3NwaHJhc2UpKTsKK30KKworc3RhdGljIHZvaWQgZGllX3NpZ25hbF9oYW5kbGVyKGludCBzaWdudW0gRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIHNpZ2luZm9fdCAqc2lnaW5mbyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICAgdm9pZCAqY29udGV4dCBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJY2xlYXJfc2VjcmV0cygpOworCWV4aXQoLTEpOworfQorCitzdGF0aWMgdm9pZCBzaWdjYXRjaGVyX3NldHVwKHZvaWQpCit7CisJc3RydWN0IHNpZ2FjdGlvbglzYTsKKworCW1lbXNldCgmc2EsIDAsIHNpemVvZihzdHJ1Y3Qgc2lnYWN0aW9uKSk7CisJc2Euc2Ffc2lnYWN0aW9uID0gZGllX3NpZ25hbF9oYW5kbGVyOworCXNhLnNhX2ZsYWdzID0gU0FfU0lHSU5GTzsKKworCXNpZ2FjdGlvbihTSUdIVVAsICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR0lOVCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHUVVJVCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHRlBFLCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdJTEwsICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR0JVUywgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHU0VHViwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHQUJSVCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHUElQRSwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHQUxSTSwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHVEVSTSwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHVVNSMSwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHVVNSMiwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHUE9MTCwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHUFJPRiwgJnNhLCAwKTsKKwlzaWdhY3Rpb24oU0lHU1lTLCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdUUkFQLCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdWVEFMUk0sICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR1hDUFUsICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR1hGU1osICZzYSwgMCk7Cit9CisKKworI2RlZmluZSBQQVJTRV9GTEFHU19OT1RTVVBQX09LCTB4MDAwMQorI2RlZmluZSBQQVJTRV9GTEFHU19GT1JDRV9GTgkweDAwMDIKKworc3RhdGljIHZvaWQgcGFyc2Vfc2FsdChjaGFyICpzYWx0X3N0ciwgaW50IGZsYWdzKQoreworCXVuc2lnbmVkIGNoYXIgYnVmW0VYVDRfTUFYX1NBTFRfU0laRV07CisJY2hhciAqY3AgPSBzYWx0X3N0cjsKKwl1bnNpZ25lZCBjaGFyICpzYWx0X2J1ZjsKKwlpbnQgZmQsIHJldCwgc2FsdF9sZW4gPSAwOworCisJaWYgKGZsYWdzICYgUEFSU0VfRkxBR1NfRk9SQ0VfRk4pCisJCWdvdG8gc2FsdF9mcm9tX2ZpbGVuYW1lOworCWlmIChzdHJuY21wKGNwLCAiczoiLCAyKSA9PSAwKSB7CisJCWNwICs9IDI7CisJCXNhbHRfbGVuID0gc3RybGVuKGNwKTsKKwkJaWYgKHNhbHRfbGVuID49IEVYVDRfTUFYX1NBTFRfU0laRSkKKwkJCWdvdG8gaW52YWxpZF9zYWx0OworCQlzdHJuY3B5KChjaGFyICopIGJ1ZiwgY3AsIHNpemVvZihidWYpKTsKKwl9IGVsc2UgaWYgKGNwWzBdID09ICcvJykgeworCXNhbHRfZnJvbV9maWxlbmFtZToKKwkJZmQgPSBvcGVuKGNwLCBPX1JET05MWSB8IE9fRElSRUNUT1JZKTsKKwkJaWYgKGZkID09IC0xICYmIGVycm5vID09IEVOT1RESVIpCisJCQlmZCA9IG9wZW4oY3AsIE9fUkRPTkxZKTsKKwkJaWYgKGZkID09IC0xKSB7CisJCQlwZXJyb3IoY3ApOworCQkJZXhpdCgxKTsKKwkJfQorCQlyZXQgPSBpb2N0bChmZCwgRVhUNF9JT0NfR0VUX0VOQ1JZUFRJT05fUFdTQUxULCAmYnVmKTsKKwkJY2xvc2UoZmQpOworCQlpZiAocmV0IDwgMCkgeworCQkJaWYgKGZsYWdzICYgUEFSU0VfRkxBR1NfTk9UU1VQUF9PSykKKwkJCQlyZXR1cm47CisJCQlwZXJyb3IoIkVYVDRfSU9DX0dFVF9FTkNSWVBUSU9OX1BXU0FMVCIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAob3B0aW9ucyAmIE9QVF9WRVJCT1NFKSB7CisJCQljaGFyIHRtcFs4MF07CisJCQl1dWlkX3VucGFyc2UoYnVmLCB0bXApOworCQkJcHJpbnRmKCIlcyBoYXMgcHcgc2FsdCAlc1xuIiwgY3AsIHRtcCk7CisJCX0KKwkJc2FsdF9sZW4gPSAxNjsKKwl9IGVsc2UgaWYgKHN0cm5jbXAoY3AsICJmOiIsIDIpID09IDApIHsKKwkJY3AgKz0gMjsKKwkJZ290byBzYWx0X2Zyb21fZmlsZW5hbWU7CisJfSBlbHNlIGlmIChzdHJuY21wKGNwLCAiMHgiLCAyKSA9PSAwKSB7CisJCXVuc2lnbmVkIGNoYXIgKmgsICpsOworCisJCWNwICs9IDI7CisJCWlmIChzdHJsZW4oY3ApICYgMSkKKwkJCWdvdG8gaW52YWxpZF9zYWx0OworCQl3aGlsZSAoKmNwKSB7CisJCQlpZiAoc2FsdF9sZW4gPj0gRVhUNF9NQVhfU0FMVF9TSVpFKQorCQkJCWdvdG8gaW52YWxpZF9zYWx0OworCQkJaCA9IG1lbWNocihoZXhjaGFycywgKmNwKyssIGhleGNoYXJzX3NpemUpOworCQkJbCA9IG1lbWNocihoZXhjaGFycywgKmNwKyssIGhleGNoYXJzX3NpemUpOworCQkJaWYgKCFoIHx8ICFsKQorCQkJCWdvdG8gaW52YWxpZF9zYWx0OworCQkJYnVmW3NhbHRfbGVuKytdID0KKwkJCQkoKCh1bnNpZ25lZCBjaGFyKShoIC0gaGV4Y2hhcnMpIDw8IDQpICsKKwkJCQkgKHVuc2lnbmVkIGNoYXIpKGwgLSBoZXhjaGFycykpOworCQl9CisJfSBlbHNlIGlmICh1dWlkX3BhcnNlKGNwLCBidWYpID09IDApIHsKKwkJc2FsdF9sZW4gPSAxNjsKKwl9IGVsc2UgeworCWludmFsaWRfc2FsdDoKKwkJZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHNhbHQ6ICVzXG4iLCBzYWx0X3N0cik7CisJCWV4aXQoMSk7CisJfQorCXNhbHRfYnVmID0gbWFsbG9jKHNhbHRfbGVuKTsKKwlpZiAoIXNhbHRfYnVmKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgYWxsb2NhdGUgc2FsdFxuIik7CisJCWV4aXQoMSk7CisJfQorCW1lbWNweShzYWx0X2J1ZiwgYnVmLCBzYWx0X2xlbik7CisJYWRkX3NhbHQoc2FsdF9idWYsIHNhbHRfbGVuKTsKK30KKworc3RhdGljIHZvaWQgc2V0X3BvbGljeShzdHJ1Y3Qgc2FsdCAqc2V0X3NhbHQsIGludCBwYWQsCisJCSAgICAgICBpbnQgYXJnYywgY2hhciAqYXJndltdLCBpbnQgcGF0aF9zdGFydF9pbmRleCkKK3sKKwlzdHJ1Y3Qgc2FsdCAqc2FsdDsKKwlzdHJ1Y3QgZXh0NF9lbmNyeXB0aW9uX3BvbGljeSBwb2xpY3k7CisJdXVpZF90CXV1OworCWludCBmZDsKKwlpbnQgeDsKKwlpbnQgcmM7CisKKwlpZiAoKHBhZCAhPSA0KSAmJiAocGFkICE9IDgpICYmCisJCSAocGFkICE9IDE2KSAmJiAocGFkICE9IDMyKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIkludmFsaWQgcGFkZGluZyAlZFxuIiwgcGFkKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlmb3IgKHggPSBwYXRoX3N0YXJ0X2luZGV4OyB4IDwgYXJnYzsgeCsrKSB7CisJCWZkID0gb3Blbihhcmd2W3hdLCBPX0RJUkVDVE9SWSk7CisJCWlmIChmZCA9PSAtMSkgeworCQkJcGVycm9yKGFyZ3ZbeF0pOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoc2V0X3NhbHQpCisJCQlzYWx0ID0gc2V0X3NhbHQ7CisJCWVsc2UgeworCQkJaWYgKGlvY3RsKGZkLCBFWFQ0X0lPQ19HRVRfRU5DUllQVElPTl9QV1NBTFQsCisJCQkJICAmdXUpIDwgMCkgeworCQkJCXBlcnJvcigiRVhUNF9JT0NfR0VUX0VOQ1JZUFRJT05fUFdTQUxUIik7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCXNhbHQgPSBmaW5kX2J5X3NhbHQodXUsIHNpemVvZih1dSkpOworCQkJaWYgKCFzYWx0KSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBmaW5kIHNhbHQhPyFcbiIpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwkJcG9saWN5LnZlcnNpb24gPSAwOworCQlwb2xpY3kuY29udGVudHNfZW5jcnlwdGlvbl9tb2RlID0KKwkJCUVYVDRfRU5DUllQVElPTl9NT0RFX0FFU18yNTZfWFRTOworCQlwb2xpY3kuZmlsZW5hbWVzX2VuY3J5cHRpb25fbW9kZSA9CisJCQlFWFQ0X0VOQ1JZUFRJT05fTU9ERV9BRVNfMjU2X0NUUzsKKwkJcG9saWN5LmZsYWdzID0gaW50X2xvZzIocGFkID4+IDIpOworCQltZW1jcHkocG9saWN5Lm1hc3Rlcl9rZXlfZGVzY3JpcHRvciwgc2FsdC0+a2V5X2Rlc2MsCisJCSAgICAgICBFWFQ0X0tFWV9ERVNDUklQVE9SX1NJWkUpOworCQlyYyA9IGlvY3RsKGZkLCBFWFQ0X0lPQ19TRVRfRU5DUllQVElPTl9QT0xJQ1ksICZwb2xpY3kpOworCQljbG9zZShmZCk7CisJCWlmIChyYykgeworCQkJcHJpbnRmKCJFcnJvciBbJXNdIHNldHRpbmcgcG9saWN5LlxuVGhlIGtleSBkZXNjcmlwdG9yICIKKwkJCSAgICAgICAiWyVzXSBtYXkgbm90IG1hdGNoIHRoZSBleGlzdGluZyBlbmNyeXB0aW9uICIKKwkJCSAgICAgICAiY29udGV4dCBmb3IgZGlyZWN0b3J5IFslc10uXG4iLAorCQkJICAgICAgIHN0cmVycm9yKGVycm5vKSwgc2FsdC0+a2V5X3JlZl9zdHIsIGFyZ3ZbeF0pOworCQkJY29udGludWU7CisJCX0KKwkJcHJpbnRmKCJLZXkgd2l0aCBkZXNjcmlwdG9yIFslc10gYXBwbGllZCB0byAlcy5cbiIsCisJCSAgICAgICBzYWx0LT5rZXlfcmVmX3N0ciwgYXJndlt4XSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwYmtkZjJfc2hhNTEyKGNvbnN0IGNoYXIgKnBhc3NwaHJhc2UsIHN0cnVjdCBzYWx0ICpzYWx0LAorCQkJICB1bnNpZ25lZCBpbnQgY291bnQsCisJCQkgIHVuc2lnbmVkIGNoYXIgZGVyaXZlZF9rZXlbRVhUNF9NQVhfS0VZX1NJWkVdKQoreworCXNpemVfdCBwYXNzcGhyYXNlX3NpemUgPSBzdHJsZW4ocGFzc3BocmFzZSk7CisJdW5zaWduZWQgY2hhciBidWZbU0hBNTEyX0xFTkdUSCArIEVYVDRfTUFYX1BBU1NQSFJBU0VfU0laRV0gPSB7MH07CisJdW5zaWduZWQgY2hhciB0ZW1wYnVmW1NIQTUxMl9MRU5HVEhdID0gezB9OworCWNoYXIgZmluYWxbU0hBNTEyX0xFTkdUSF0gPSB7MH07CisJdW5zaWduZWQgY2hhciBzYWx0YnVmW0VYVDRfTUFYX1NBTFRfU0laRSArIEVYVDRfTUFYX1BBU1NQSFJBU0VfU0laRV0gPSB7MH07CisJaW50IGFjdHVhbF9idWZfbGVuID0gU0hBNTEyX0xFTkdUSCArIHBhc3NwaHJhc2Vfc2l6ZTsKKwlpbnQgYWN0dWFsX3NhbHRidWZfbGVuID0gRVhUNF9NQVhfU0FMVF9TSVpFICsgcGFzc3BocmFzZV9zaXplOworCXVuc2lnbmVkIGludCB4LCB5OworCV9fdTMyICpmaW5hbF91MzIgPSAoX191MzIgKilmaW5hbDsKKwlfX3UzMiAqdGVtcF91MzIgPSAoX191MzIgKil0ZW1wYnVmOworCisJaWYgKHBhc3NwaHJhc2Vfc2l6ZSA+IEVYVDRfTUFYX1BBU1NQSFJBU0VfU0laRSkgeworCQlwcmludGYoIlBhc3NwaHJhc2Ugc2l6ZSBpcyAlemQ7IG1heCBpcyAlZC5cbiIsIHBhc3NwaHJhc2Vfc2l6ZSwKKwkJICAgICAgIEVYVDRfTUFYX1BBU1NQSFJBU0VfU0laRSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChzYWx0LT5zYWx0X2xlbiA+IEVYVDRfTUFYX1NBTFRfU0laRSkgeworCQlwcmludGYoIlNhbHQgc2l6ZSBpcyAlemQ7IG1heCBpcyAlZC5cbiIsIHNhbHQtPnNhbHRfbGVuLAorCQkgICAgICAgRVhUNF9NQVhfU0FMVF9TSVpFKTsKKwkJZXhpdCgxKTsKKwl9CisJYXNzZXJ0KEVYVDRfTUFYX0tFWV9TSVpFIDw9IFNIQTUxMl9MRU5HVEgpOworCisJbWVtY3B5KHNhbHRidWYsIHNhbHQtPnNhbHQsIHNhbHQtPnNhbHRfbGVuKTsKKwltZW1jcHkoJnNhbHRidWZbRVhUNF9NQVhfU0FMVF9TSVpFXSwgcGFzc3BocmFzZSwgcGFzc3BocmFzZV9zaXplKTsKKworCW1lbWNweSgmYnVmW1NIQTUxMl9MRU5HVEhdLCBwYXNzcGhyYXNlLCBwYXNzcGhyYXNlX3NpemUpOworCisJZm9yICh4ID0gMDsgeCA8IGNvdW50OyArK3gpIHsKKwkJaWYgKHggPT0gMCkgeworCQkJZXh0MmZzX3NoYTUxMihzYWx0YnVmLCBhY3R1YWxfc2FsdGJ1Zl9sZW4sIHRlbXBidWYpOworCQl9IGVsc2UgeworCQkJLyoKKwkJCSAqIGJ1ZjogW3ByZXZpb3VzIGhhc2ggfHwgcGFzc3BocmFzZV0KKwkJCSAqLworCQkJbWVtY3B5KGJ1ZiwgdGVtcGJ1ZiwgU0hBNTEyX0xFTkdUSCk7CisJCQlleHQyZnNfc2hhNTEyKGJ1ZiwgYWN0dWFsX2J1Zl9sZW4sIHRlbXBidWYpOworCQl9CisJCWZvciAoeSA9IDA7IHkgPCAoc2l6ZW9mKGZpbmFsKSAvIHNpemVvZigqZmluYWxfdTMyKSk7ICsreSkKKwkJCWZpbmFsX3UzMlt5XSA9IGZpbmFsX3UzMlt5XSBeIHRlbXBfdTMyW3ldOworCX0KKwltZW1jcHkoZGVyaXZlZF9rZXksIGZpbmFsLCBFWFQ0X01BWF9LRVlfU0laRSk7Cit9CisKK3N0YXRpYyBpbnQgZGlzYWJsZV9lY2hvKHN0cnVjdCB0ZXJtaW9zICpzYXZlZF9zZXR0aW5ncykKK3sKKwlzdHJ1Y3QgdGVybWlvcyBjdXJyZW50X3NldHRpbmdzOworCWludCByYyA9IDA7CisKKwlyYyA9IHRjZ2V0YXR0cigwLCAmY3VycmVudF9zZXR0aW5ncyk7CisJaWYgKHJjKQorCQlyZXR1cm4gcmM7CisJKnNhdmVkX3NldHRpbmdzID0gY3VycmVudF9zZXR0aW5nczsKKwljdXJyZW50X3NldHRpbmdzLmNfbGZsYWcgJj0gfkVDSE87CisJcmMgPSB0Y3NldGF0dHIoMCwgVENTQU5PVywgJmN1cnJlbnRfc2V0dGluZ3MpOworCisJcmV0dXJuIHJjOworfQorCitzdGF0aWMgdm9pZCBnZXRfcGFzc3BocmFzZShjaGFyICpwYXNzcGhyYXNlLCBpbnQgbGVuKQoreworCWNoYXIgKnA7CisJc3RydWN0IHRlcm1pb3MgY3VycmVudF9zZXR0aW5nczsKKworCWFzc2VydChsZW4gPiAwKTsKKwlkaXNhYmxlX2VjaG8oJmN1cnJlbnRfc2V0dGluZ3MpOworCXAgPSBmZ2V0cyhwYXNzcGhyYXNlLCBsZW4sIHN0ZGluKTsKKwl0Y3NldGF0dHIoMCwgVENTQU5PVywgJmN1cnJlbnRfc2V0dGluZ3MpOworCXByaW50ZigiXG4iKTsKKwlpZiAoIXApIHsKKwkJcHJpbnRmKCJBYm9ydGluZy5cbiIpOworCQlleGl0KDEpOworCX0KKwlwID0gc3RycmNocihwYXNzcGhyYXNlLCAnXG4nKTsKKwlpZiAoIXApCisJCXAgPSBwYXNzcGhyYXNlICsgbGVuIC0gMTsKKwkqcCA9ICdcMCc7Cit9CisKK3N0cnVjdCBrZXlyaW5nX21hcCB7CisJY2hhciBuYW1lWzRdOworCXNpemVfdCBuYW1lX2xlbjsKKwlpbnQgY29kZTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qga2V5cmluZ19tYXAga2V5cmluZ3NbXSA9IHsKKwl7IkB1cyIsIDMsIEtFWV9TUEVDX1VTRVJfU0VTU0lPTl9LRVlSSU5HfSwKKwl7IkB1IiwgMiwgS0VZX1NQRUNfVVNFUl9LRVlSSU5HfSwKKwl7IkBzIiwgMiwgS0VZX1NQRUNfU0VTU0lPTl9LRVlSSU5HfSwKKwl7IkBnIiwgMiwgS0VZX1NQRUNfR1JPVVBfS0VZUklOR30sCisJeyJAcCIsIDIsIEtFWV9TUEVDX1BST0NFU1NfS0VZUklOR30sCisJeyJAdCIsIDIsIEtFWV9TUEVDX1RIUkVBRF9LRVlSSU5HfSwKK307CisKK3N0YXRpYyBpbnQgZ2V0X2tleXJpbmdfaWQoY29uc3QgY2hhciAqa2V5cmluZykKK3sKKwl1bnNpZ25lZCBpbnQgeDsKKwljaGFyICplbmQ7CisKKwkvKgorCSAqIElmIG5vIGtleXJpbmcgaXMgc3BlY2lmaWVkLCBieSBkZWZhdWx0IHVzZSBlaXRoZXIgdGhlIHVzZXIKKwkgKiBzZXNzaW9uIGtleSByaW5nIG9yIHRoZSBzZXNzaW9uIGtleXJpbmcuICBGZXRjaGluZyB0aGUKKwkgKiBzZXNzaW9uIGtleXJpbmcgd2lsbCByZXR1cm4gdGhlIHVzZXIgc2Vzc2lvbiBrZXlyaW5nIGlmIG5vCisJICogc2Vzc2lvbiBrZXlyaW5nIGhhcyBiZWVuIHNldC4KKwkgKgorCSAqIFdlIG5lZWQgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIHNpbXBseSBhZGRpbmcgdGhlIGtleSB0bworCSAqIEtFWV9TUEVDX1NFU1NJT05fS0VZUklORyBzaW5jZSB0cnlpbmcgdG8gYWRkIGEga2V5IHRvIGEKKwkgKiBzZXNzaW9uIGtleXJpbmcgdGhhdCBkb2VzIG5vdCB5ZXQgZXhpc3Qgd2lsbCBjYXVzZSB0aGUKKwkgKiBrZXJuZWwgdG8gY3JlYXRlIGEgc2Vzc2lvbiBrZXlyaW5nIC0tLSB3aGljaCB3aWwgdGhlbiBnZXQKKwkgKiBnYXJiYWdlIGNvbGxlY3RlZCBhcyBzb29uIGFzIGU0Y3J5cHQgZXhpdHMuCisJICoKKwkgKiBUaGUgZmFjdCB0aGF0IHRoZSBrZXljdGwgc3lzdGVtIGNhbGwgYW5kIHRoZSBhZGRfa2V5IHN5c3RlbQorCSAqIGNhbGwgdHJlYXRzIEtFWV9TUEVDX1NFU1NJT05fS0VZUklORyBkaWZmZXJlbnRseSB3aGVuIGEKKwkgKiBzZXNzaW9uIGtleXJpbmcgZG9lcyBub3QgZXhpc3QgaXMgdmVyeSB1bmZvcnR1bmF0ZSBhbmQKKwkgKiBjb25mdXNpbmcsIGJ1dCBzbyBpdCBnb2VzLi4uCisJICovCisJaWYgKGtleXJpbmcgPT0gTlVMTCkKKwkJcmV0dXJuIGtleWN0bChLRVlDVExfR0VUX0tFWVJJTkdfSUQsCisJCQkgICAgICBLRVlfU1BFQ19TRVNTSU9OX0tFWVJJTkcsIDApOworCWZvciAoeCA9IDA7IHggPCAoc2l6ZW9mKGtleXJpbmdzKSAvIHNpemVvZihrZXlyaW5nc1swXSkpOyArK3gpIHsKKwkJaWYgKHN0cmNtcChrZXlyaW5nLCBrZXlyaW5nc1t4XS5uYW1lKSA9PSAwKSB7CisJCQlyZXR1cm4ga2V5cmluZ3NbeF0uY29kZTsKKwkJfQorCX0KKwl4ID0gc3RydG91bChrZXlyaW5nLCAmZW5kLCAxMCk7CisJaWYgKCplbmQgPT0gJ1wwJykgeworCQlpZiAoa2V5Y3RsKEtFWUNUTF9ERVNDUklCRSwgeCwgTlVMTCwgMCkgPCAwKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiB4OworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ2VuZXJhdGVfa2V5X3JlZl9zdHIoc3RydWN0IHNhbHQgKnNhbHQpCit7CisJdW5zaWduZWQgY2hhciBrZXlfcmVmMVtTSEE1MTJfTEVOR1RIXTsKKwl1bnNpZ25lZCBjaGFyIGtleV9yZWYyW1NIQTUxMl9MRU5HVEhdOworCWludCB4OworCisJZXh0MmZzX3NoYTUxMihzYWx0LT5rZXksIEVYVDRfTUFYX0tFWV9TSVpFLCBrZXlfcmVmMSk7CisJZXh0MmZzX3NoYTUxMihrZXlfcmVmMSwgU0hBNTEyX0xFTkdUSCwga2V5X3JlZjIpOworCW1lbWNweShzYWx0LT5rZXlfZGVzYywga2V5X3JlZjIsIEVYVDRfS0VZX0RFU0NSSVBUT1JfU0laRSk7CisJZm9yICh4ID0gMDsgeCA8IEVYVDRfS0VZX0RFU0NSSVBUT1JfU0laRTsgKyt4KSB7CisJCXNwcmludGYoJnNhbHQtPmtleV9yZWZfc3RyW3ggKiAyXSwgIiUwMngiLAorCQkJc2FsdC0+a2V5X2Rlc2NbeF0pOworCX0KKwlzYWx0LT5rZXlfcmVmX3N0cltFWFQ0X0tFWV9SRUZfU1RSX0JVRl9TSVpFIC0gMV0gPSAnXDAnOworfQorCitzdGF0aWMgdm9pZCBpbnNlcnRfa2V5X2ludG9fa2V5cmluZyhjb25zdCBjaGFyICprZXlyaW5nLCBzdHJ1Y3Qgc2FsdCAqc2FsdCkKK3sKKwlpbnQga2V5cmluZ19pZCA9IGdldF9rZXlyaW5nX2lkKGtleXJpbmcpOworCXN0cnVjdCBleHQ0X2VuY3J5cHRpb25fa2V5IGtleTsKKwljaGFyIGtleV9yZWZfZnVsbFtFWFQyRlNfS0VZX0RFU0NfUFJFRklYX1NJWkUgKworCQkJICBFWFQ0X0tFWV9SRUZfU1RSX0JVRl9TSVpFXTsKKwlpbnQgcmM7CisKKwlpZiAoa2V5cmluZ19pZCA9PSAwKSB7CisJCXByaW50ZigiSW52YWxpZCBrZXlyaW5nIFslc10uXG4iLCBrZXlyaW5nKTsKKwkJZXhpdCgxKTsKKwl9CisJc3ByaW50ZihrZXlfcmVmX2Z1bGwsICIlcyVzIiwgRVhUMkZTX0tFWV9ERVNDX1BSRUZJWCwKKwkJc2FsdC0+a2V5X3JlZl9zdHIpOworCXJjID0ga2V5Y3RsKEtFWUNUTF9TRUFSQ0gsIGtleXJpbmdfaWQsIEVYVDJGU19LRVlfVFlQRV9MT0dPTiwKKwkJICAgIGtleV9yZWZfZnVsbCwgMCk7CisJaWYgKHJjICE9IC0xKSB7CisJCWlmICgob3B0aW9ucyAmIE9QVF9RVUlFVCkgPT0gMCkKKwkJCXByaW50ZigiS2V5IHdpdGggZGVzY3JpcHRvciBbJXNdIGFscmVhZHkgZXhpc3RzXG4iLAorCQkJICAgICAgIHNhbHQtPmtleV9yZWZfc3RyKTsKKwkJcmV0dXJuOworCX0gZWxzZSBpZiAoKHJjID09IC0xKSAmJiAoZXJybm8gIT0gRU5PS0VZKSkgeworCQlwcmludGYoImtleWN0bF9zZWFyY2ggZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJaWYgKGVycm5vID09IC1FSU5WQUwpCisJCQlwcmludGYoIktleXJpbmcgWyVzXSBpcyBub3QgYXZhaWxhYmxlLlxuIiwga2V5cmluZyk7CisJCWV4aXQoMSk7CisJfQorCWtleS5tb2RlID0gRVhUNF9FTkNSWVBUSU9OX01PREVfQUVTXzI1Nl9YVFM7CisJbWVtY3B5KGtleS5yYXcsIHNhbHQtPmtleSwgRVhUNF9NQVhfS0VZX1NJWkUpOworCWtleS5zaXplID0gRVhUNF9NQVhfS0VZX1NJWkU7CisJcmMgPSBhZGRfa2V5KEVYVDJGU19LRVlfVFlQRV9MT0dPTiwga2V5X3JlZl9mdWxsLCAodm9pZCAqKSZrZXksCisJCSAgICAgc2l6ZW9mKGtleSksIGtleXJpbmdfaWQpOworCWlmIChyYyA9PSAtMSkgeworCQlpZiAoZXJybm8gPT0gRURRVU9UKSB7CisJCQlwcmludGYoIkVycm9yIGFkZGluZyBrZXkgdG8ga2V5cmluZzsgcXVvdGEgZXhjZWVkZWRcbiIpOworCQl9IGVsc2UgeworCQkJcHJpbnRmKCJFcnJvciBhZGRpbmcga2V5IHdpdGgga2V5IGRlc2NyaXB0b3IgWyVzXTogIgorCQkJICAgICAgICIlc1xuIiwgc2FsdC0+a2V5X3JlZl9zdHIsIHN0cmVycm9yKGVycm5vKSk7CisJCX0KKwkJZXhpdCgxKTsKKwl9IGVsc2UgeworCQlpZiAoKG9wdGlvbnMgJiBPUFRfUVVJRVQpID09IDApCisJCQlwcmludGYoIkFkZGVkIGtleSB3aXRoIGRlc2NyaXB0b3IgWyVzXVxuIiwKKwkJCSAgICAgICBzYWx0LT5rZXlfcmVmX3N0cik7CisJfQorfQorCitzdGF0aWMgdm9pZCBnZXRfZGVmYXVsdF9zYWx0cyh2b2lkKQoreworCUZJTEUJKmYgPSBzZXRtbnRlbnQoIi9ldGMvbXRhYiIsICJyIik7CisJc3RydWN0IG1udGVudCAqbW50OworCisJd2hpbGUgKGYgJiYgKChtbnQgPSBnZXRtbnRlbnQoZikpICE9IE5VTEwpKSB7CisJCWlmIChzdHJjbXAobW50LT5tbnRfdHlwZSwgImV4dDQiKSB8fAorCQkgICAgYWNjZXNzKG1udC0+bW50X2RpciwgUl9PSykpCisJCQljb250aW51ZTsKKwkJcGFyc2Vfc2FsdChtbnQtPm1udF9kaXIsIFBBUlNFX0ZMQUdTX05PVFNVUFBfT0spOworCX0KKwllbmRtbnRlbnQoZik7Cit9CisKKy8qIEZ1bmN0aW9ucyB3aGljaCBpbXBsZW1lbnQgdXNlciBjb21tYW5kcyAqLworCitzdHJ1Y3QgY21kX2Rlc2MgeworCWNvbnN0IGNoYXIgKmNtZF9uYW1lOworCXZvaWQgKCpjbWRfZnVuYykoaW50LCBjaGFyICoqLCBjb25zdCBzdHJ1Y3QgY21kX2Rlc2MgKik7CisJY29uc3QgY2hhciAqY21kX2Rlc2M7CisJY29uc3QgY2hhciAqY21kX2hlbHA7CisJaW50IGNtZF9mbGFnczsKK307CisKKyNkZWZpbmUgQ01EX0hJRERFTiAJMHgwMDAxCisKK3N0YXRpYyB2b2lkIGRvX2hlbHAoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBzdHJ1Y3QgY21kX2Rlc2MgKmNtZCk7CisKKyNkZWZpbmUgYWRkX2tleV9kZXNjICJhZGRzIGEga2V5IHRvIHRoZSB1c2VyJ3Mga2V5cmluZyIKKyNkZWZpbmUgYWRkX2tleV9oZWxwIFwKKyJlNGNyeXB0IGFkZF9rZXkgLVMgc2FsdCBbIC1rIGtleXJpbmcgXSBbLXZdIFstcV0gWyBwYXRoIC4uLiBdXG5cbiIgXAorIlByb21wdHMgdGhlIHVzZXIgZm9yIGEgcGFzc3BocmFzZSBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBzcGVjaWZpZWRcbiIgXAorImtleXJpbmcuICBJZiBubyBrZXlyaW5nIGlzIHNwZWNpZmllZCwgZTRjcnlwdCB3aWxsIHVzZSB0aGUgc2Vzc2lvblxuIiBcCisia2V5cmluZyBpZiBpdCBleGlzdHMgb3IgdGhlIHVzZXIgc2Vzc2lvbiBrZXlyaW5nIGlmIGl0IGRvZXMgbm90LlxuXG4iIFwKKyJJZiBvbmUgb3IgbW9yZSBkaXJlY3RvcnkgcGF0aHMgYXJlIHNwZWNpZmllZCwgZTRjcnlwdCB3aWxsIHRyeSB0b1xuIiBcCisic2V0IHRoZSBwb2xpY3kgb2YgdGhvc2UgZGlyZWN0b3JpZXMgdG8gdXNlIHRoZSBrZXkganVzdCBlbnRlcmVkIGJ5XG4iIFwKKyJ0aGUgdXNlci5cbiIKKworc3RhdGljIHZvaWQgZG9fYWRkX2tleShpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IHN0cnVjdCBjbWRfZGVzYyAqY21kKQoreworCXN0cnVjdCBzYWx0ICpzYWx0OworCWNoYXIgKmtleXJpbmcgPSBOVUxMOworCWludCBpLCBvcHQsIHBhZCA9IDQ7CisJdW5zaWduZWQgajsKKworCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJrOlM6cDp2cSIpKSAhPSAtMSkgeworCQlzd2l0Y2ggKG9wdCkgeworCQljYXNlICdrJzoKKwkJCS8qIFNwZWNpZnkgYSBrZXlyaW5nLiAqLworCQkJa2V5cmluZyA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCXBhZCA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdTJzoKKwkJCS8qIFNhbHQgdmFsdWUgZm9yIHBhc3NwaHJhc2UuICovCisJCQlwYXJzZV9zYWx0KG9wdGFyZywgMCk7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQlvcHRpb25zIHw9IE9QVF9WRVJCT1NFOworCQkJYnJlYWs7CisJCWNhc2UgJ3EnOgorCQkJb3B0aW9ucyB8PSBPUFRfUVVJRVQ7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZwcmludGYoc3RkZXJyLCAiVW5yZWNvZ25pemVkIG9wdGlvbjogJWNcbiIsIG9wdCk7CisJCWNhc2UgJz8nOgorCQkJZnB1dHMoIlVTQUdFOlxuICAiLCBzdGRlcnIpOworCQkJZnB1dHMoY21kLT5jbWRfaGVscCwgc3RkZXJyKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJaWYgKG51bV9zYWx0ID09IDApCisJCWdldF9kZWZhdWx0X3NhbHRzKCk7CisJaWYgKG51bV9zYWx0ID09IDApIHsKKwkJZnByaW50ZihzdGRlcnIsICJObyBzYWx0IHZhbHVlcyBhdmFpbGFibGVcbiIpOworCQlleGl0KDEpOworCX0KKwl2YWxpZGF0ZV9wYXRocyhhcmdjLCBhcmd2LCBvcHRpbmQpOworCWZvciAoaSA9IG9wdGluZDsgaSA8IGFyZ2M7IGkrKykKKwkJcGFyc2Vfc2FsdChhcmd2W2ldLCBQQVJTRV9GTEFHU19GT1JDRV9GTik7CisJcHJpbnRmKCJFbnRlciBwYXNzcGhyYXNlIChlY2hvIGRpc2FibGVkKTogIik7CisJZ2V0X3Bhc3NwaHJhc2UoaW5fcGFzc3BocmFzZSwgc2l6ZW9mKGluX3Bhc3NwaHJhc2UpKTsKKwlmb3IgKGogPSAwLCBzYWx0ID0gc2FsdF9saXN0OyBqIDwgbnVtX3NhbHQ7IGorKywgc2FsdCsrKSB7CisJCXBia2RmMl9zaGE1MTIoaW5fcGFzc3BocmFzZSwgc2FsdCwKKwkJCSAgICAgIEVYVDRfUEJLREYyX0lURVJBVElPTlMsIHNhbHQtPmtleSk7CisJCWdlbmVyYXRlX2tleV9yZWZfc3RyKHNhbHQpOworCQlpbnNlcnRfa2V5X2ludG9fa2V5cmluZyhrZXlyaW5nLCBzYWx0KTsKKwl9CisJaWYgKG9wdGluZCAhPSBhcmdjKQorCQlzZXRfcG9saWN5KE5VTEwsIHBhZCwgYXJnYywgYXJndiwgb3B0aW5kKTsKKwljbGVhcl9zZWNyZXRzKCk7CisJZXhpdCgwKTsKK30KKworI2RlZmluZSBzZXRfcG9saWN5X2Rlc2MgInNldHMgYSBwb2xpY3kgZm9yIGRpcmVjdG9yaWVzIgorI2RlZmluZSBzZXRfcG9saWN5X2hlbHAgXAorImU0Y3J5cHQgc2V0X3BvbGljeSBwb2xpY3kgcGF0aCAuLi4gXG5cbiIgXAorIlNldHMgdGhlIHBvbGljeSBmb3IgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLlxuIiBcCisiQWxsIGRpcmVjdG9yaWVzIG11c3QgYmUgZW1wdHkgdG8gc2V0IHRoZSBwb2xpY3k7IGlmIHRoZSBkaXJlY3RvcnlcbiIgXAorImFscmVhZHkgaGFzIGEgcG9saWN5IGVzdGFibGlzaGVkLCBlNGNyeXB0IHdpbGwgdmFsaWRhdGUgdGhhdCBpdCB0aGVcbiIgXAorInBvbGljeSBtYXRjaGVzIHdoYXQgd2FzIHNwZWNpZmllZC4gIEEgcG9saWN5IGlzIGFuIGVuY3J5cHRpb24ga2V5XG4iIFwKKyJpZGVudGlmaWVyIGNvbnNpc3Rpbmcgb2YgMTYgaGV4YWRlY2ltYWwgY2hhcmFjdGVycy5cbiIKKworc3RhdGljIHZvaWQgZG9fc2V0X3BvbGljeShpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IHN0cnVjdCBjbWRfZGVzYyAqY21kKQoreworCXN0cnVjdCBzYWx0IHNhbHRidWY7CisJaW50IGMsIHBhZCA9IDQ7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJwOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ3AnOgorCQkJcGFkID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlpZiAoYXJnYyA8IG9wdGluZCArIDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50KHMpLlxuXG4iKTsKKwkJZnB1dHMoIlVTQUdFOlxuICAiLCBzdGRlcnIpOworCQlmcHV0cyhjbWQtPmNtZF9oZWxwLCBzdGRlcnIpOworCQlleGl0KDEpOworCX0KKworCWlmICgoc3RybGVuKGFyZ3Zbb3B0aW5kXSkgIT0gKEVYVDRfS0VZX0RFU0NSSVBUT1JfU0laRSAqIDIpKSB8fAorCSAgICBoZXgyYnl0ZShhcmd2W29wdGluZF0sIChFWFQ0X0tFWV9ERVNDUklQVE9SX1NJWkUgKiAyKSwKKwkJICAgICBzYWx0YnVmLmtleV9kZXNjLCBFWFQ0X0tFWV9ERVNDUklQVE9SX1NJWkUpKSB7CisJCXByaW50ZigiSW52YWxpZCBrZXkgZGVzY3JpcHRvciBbJXNdLiBWYWxpZCBjaGFyYWN0ZXJzICIKKwkJICAgICAgICJhcmUgMC05IGFuZCBhLWYsIGxvd2VyIGNhc2UuICAiCisJCSAgICAgICAiTGVuZ3RoIG11c3QgYmUgJWQuXG4iLAorCQkgICAgICAgYXJndltvcHRpbmRdLCAoRVhUNF9LRVlfREVTQ1JJUFRPUl9TSVpFICogMikpOworCQkJZXhpdCgxKTsKKwl9CisJdmFsaWRhdGVfcGF0aHMoYXJnYywgYXJndiwgb3B0aW5kKzEpOworCXN0cmNweShzYWx0YnVmLmtleV9yZWZfc3RyLCBhcmd2W29wdGluZF0pOworCXNldF9wb2xpY3koJnNhbHRidWYsIHBhZCwgYXJnYywgYXJndiwgb3B0aW5kKzEpOworCWV4aXQoMCk7Cit9CisKKyNkZWZpbmUgZ2V0X3BvbGljeV9kZXNjICJnZXQgdGhlIGVuY3J5cHRpb24gZm9yIGRpcmVjdG9yaWVzIgorI2RlZmluZSBnZXRfcG9saWN5X2hlbHAgXAorImU0Y3J5cHQgZ2V0X3BvbGljeSBwYXRoIC4uLiBcblxuIiBcCisiR2V0cyB0aGUgcG9saWN5IGZvciB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuXG4iCisKK3N0YXRpYyB2b2lkIGRvX2dldF9wb2xpY3koaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBzdHJ1Y3QgY21kX2Rlc2MgKmNtZCkKK3sKKwlzdHJ1Y3QgZXh0NF9lbmNyeXB0aW9uX3BvbGljeSBwb2xpY3k7CisJc3RydWN0IHN0YXQgc3Q7CisJaW50IGksIGosIGZkLCByYzsKKworCWlmIChhcmdjIDwgMikgeworCQlmcHJpbnRmKHN0ZGVyciwgIk1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQocykuXG5cbiIpOworCQlmcHV0cygiVVNBR0U6XG4gICIsIHN0ZGVycik7CisJCWZwdXRzKGNtZC0+Y21kX2hlbHAsIHN0ZGVycik7CisJCWV4aXQoMSk7CisJfQorCisJZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykgeworCQlpZiAoc3RhdChhcmd2W2ldLCAmc3QpIDwgMCkgeworCQkJcGVycm9yKGFyZ3ZbaV0pOworCQkJY29udGludWU7CisJCX0KKwkJZmQgPSBvcGVuKGFyZ3ZbaV0sCisJCQkgIFNfSVNESVIoc3Quc3RfbW9kZSkgPyBPX0RJUkVDVE9SWSA6IE9fUkRPTkxZKTsKKwkJaWYgKGZkID09IC0xKSB7CisJCQlwZXJyb3IoYXJndltpXSk7CisJCQlleGl0KDEpOworCQl9CisJCXJjID0gaW9jdGwoZmQsIEVYVDRfSU9DX0dFVF9FTkNSWVBUSU9OX1BPTElDWSwgJnBvbGljeSk7CisJCWNsb3NlKGZkKTsKKwkJaWYgKHJjKSB7CisJCQlwcmludGYoIkVycm9yIGdldHRpbmcgcG9saWN5IGZvciAlczogJXNcbiIsCisJCQkgICAgICAgYXJndltpXSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXByaW50ZigiJXM6ICIsIGFyZ3ZbaV0pOworCQlmb3IgKGogPSAwOyBqIDwgRVhUNF9LRVlfREVTQ1JJUFRPUl9TSVpFOyBqKyspIHsKKwkJCXByaW50ZigiJTAyeCIsICh1bnNpZ25lZCBjaGFyKSBwb2xpY3kubWFzdGVyX2tleV9kZXNjcmlwdG9yW2pdKTsKKwkJfQorCQlmcHV0YygnXG4nLCBzdGRvdXQpOworCX0KKwlleGl0KDApOworfQorCisjZGVmaW5lIG5ld19zZXNzaW9uX2Rlc2MgImdpdmUgdGhlIGludm9raW5nIHByb2Nlc3MgYSBuZXcgc2Vzc2lvbiBrZXlyaW5nIgorI2RlZmluZSBuZXdfc2Vzc2lvbl9oZWxwIFwKKyJlNGNyeXB0IG5ld19zZXNzaW9uXG5cbiIgXAorIkdpdmUgdGhlIGludm9raW5nIHByb2Nlc3MgKHR5cGljYWxseSBhIHNoZWxsKSBhIG5ldyBzZXNzaW9uIGtleXJpbmcsXG4iIFwKKyJkaXNjYXJkaW5nIGl0cyBvbGQgc2Vzc2lvbiBrZXlyaW5nLlxuIgorCitzdGF0aWMgdm9pZCBkb19uZXdfc2Vzc2lvbihpbnQgYXJnYywgY2hhciAqKmFyZ3YgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgY29uc3Qgc3RydWN0IGNtZF9kZXNjICpjbWQpCit7CisJbG9uZyBrZXlpZCwgcmV0OworCisJaWYgKGFyZ2MgPiAxKSB7CisJCWZwdXRzKCJFeGNlc3MgYXJndW1lbnRzXG5cbiIsIHN0ZGVycik7CisJCWZwdXRzKGNtZC0+Y21kX2hlbHAsIHN0ZGVycik7CisJCWV4aXQoMSk7CisJfQorCWtleWlkID0ga2V5Y3RsKEtFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORywgTlVMTCk7CisJaWYgKGtleWlkIDwgMCkgeworCQlwZXJyb3IoIktFWUNUTF9KT0lOX1NFU1NJT05fS0VZUklORyIpOworCQlleGl0KDEpOworCX0KKwlyZXQgPSBrZXljdGwoS0VZQ1RMX1NFU1NJT05fVE9fUEFSRU5ULCBOVUxMKTsKKwlpZiAocmV0IDwgMCkgeworCQlwZXJyb3IoIktFWUNUTF9TRVNTSU9OX1RPX1BBUkVOVCIpOworCQlleGl0KDEpOworCX0KKwlwcmludGYoIlN3aXRjaGVkIGludm9raW5nIHByb2Nlc3MgdG8gbmV3IHNlc3Npb24ga2V5cmluZyAlbGRcbiIsIGtleWlkKTsKKwlleGl0KDApOworfQorCisjZGVmaW5lIENNRChuYW1lKSB7ICNuYW1lLCBkb18jI25hbWUsIG5hbWUjI19kZXNjLCBuYW1lIyNfaGVscCwgMCB9CisjZGVmaW5lIF9DTUQobmFtZSkgeyAjbmFtZSwgZG9fIyNuYW1lLCBOVUxMLCBOVUxMLCBDTURfSElEREVOIH0KKworY29uc3Qgc3RydWN0IGNtZF9kZXNjIGNtZF9saXN0W10gPSB7CisJX0NNRChoZWxwKSwKKwlDTUQoYWRkX2tleSksCisJQ01EKGdldF9wb2xpY3kpLAorCUNNRChuZXdfc2Vzc2lvbiksCisJQ01EKHNldF9wb2xpY3kpLAorCXsgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgMCB9Cit9OworCitzdGF0aWMgdm9pZCBkb19oZWxwKGludCBhcmdjLCBjaGFyICoqYXJndiwKKwkJICAgIGNvbnN0IHN0cnVjdCBjbWRfZGVzYyAqY21kIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwljb25zdCBzdHJ1Y3QgY21kX2Rlc2MgKnA7CisKKwlpZiAoYXJnYyA+IDEpIHsKKwkJZm9yIChwID0gY21kX2xpc3Q7IHAtPmNtZF9uYW1lOyBwKyspIHsKKwkJCWlmIChwLT5jbWRfZmxhZ3MgJiBDTURfSElEREVOKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHN0cmNtcChwLT5jbWRfbmFtZSwgYXJndlsxXSkgPT0gMCkgeworCQkJCXB1dGMoJ1xuJywgc3Rkb3V0KTsKKwkJCQlmcHV0cygiVVNBR0U6XG4gICIsIHN0ZG91dCk7CisJCQkJZnB1dHMocC0+Y21kX2hlbHAsIHN0ZG91dCk7CisJCQkJZXhpdCgwKTsKKwkJCX0KKwkJfQorCQlwcmludGYoIlVua25vd24gY29tbWFuZDogJXNcblxuIiwgYXJndlsxXSk7CisJfQorCisJZnB1dHMoIkF2YWlsYWJsZSBjb21tYW5kczpcbiIsIHN0ZG91dCk7CisJZm9yIChwID0gY21kX2xpc3Q7IHAtPmNtZF9uYW1lOyBwKyspIHsKKwkJaWYgKHAtPmNtZF9mbGFncyAmIENNRF9ISURERU4pCisJCQljb250aW51ZTsKKwkJcHJpbnRmKCIgICUtMjBzICVzXG4iLCBwLT5jbWRfbmFtZSwgcC0+Y21kX2Rlc2MpOworCX0KKwlwcmludGYoIlxuVG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gb24gYSBjb21tYW5kLCAiCisJICAgICAgICJ0eXBlICdlNGNyeXB0IGhlbHAgY21kJ1xuIik7CisJZXhpdCgwKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljb25zdCBzdHJ1Y3QgY21kX2Rlc2MgKmNtZDsKKworCWlmIChhcmdjIDwgMikKKwkJZG9faGVscChhcmdjLCBhcmd2LCBjbWRfbGlzdCk7CisKKwlzaWdjYXRjaGVyX3NldHVwKCk7CisJZm9yIChjbWQgPSBjbWRfbGlzdDsgY21kLT5jbWRfbmFtZTsgY21kKyspIHsKKwkJaWYgKHN0cmNtcChjbWQtPmNtZF9uYW1lLCBhcmd2WzFdKSA9PSAwKSB7CisJCQljbWQtPmNtZF9mdW5jKGFyZ2MtMSwgYXJndisxLCBjbWQpOworCQkJZXhpdCgwKTsKKwkJfQorCX0KKwlwcmludGYoIlVua25vd24gY29tbWFuZDogJXNcblxuIiwgYXJndlsxXSk7CisJZG9faGVscCgxLCBhcmd2LCBjbWRfbGlzdCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9lNGRlZnJhZy44LmluIGIvZTJmc3Byb2dzL21pc2MvZTRkZWZyYWcuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zN2ExYzZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZTRkZWZyYWcuOC5pbgpAQCAtMCwwICsxLDkwIEBACisuVEggRTRERUZSQUcgOCAiTWF5IDIwMDkiICJlNGRlZnJhZyB2ZXJzaW9uIDIuMCIKKy5TSCBOQU1FCitlNGRlZnJhZyBcLSBvbmxpbmUgZGVmcmFnbWVudGVyIGZvciBleHQ0IGZpbGVzeXN0ZW0KKy5TSCBTWU5PUFNJUworLkIgZTRkZWZyYWcKK1sKKy5CIFwtYworXQorWworLkIgXC12CitdCisuSSB0YXJnZXQKK1wmLi4uCisuU0ggREVTQ1JJUFRJT04KKy5CIGU0ZGVmcmFnCityZWR1Y2VzIGZyYWdtZW50YXRpb24gb2YgZXh0ZW50IGJhc2VkIGZpbGUuIFRoZSBmaWxlIHRhcmdldGVkIGJ5CisuQiBlNGRlZnJhZworaXMgY3JlYXRlZCBvbiBleHQ0IGZpbGVzeXN0ZW0gbWFkZSB3aXRoICItTyBleHRlbnQiIG9wdGlvbiAoc2VlCisuQlIgbWtlMmZzICg4KSkuCitUaGUgdGFyZ2V0ZWQgZmlsZSBnZXRzIG1vcmUgY29udGlndW91cyBibG9ja3MgYW5kIGltcHJvdmVzIHRoZSBmaWxlIGFjY2Vzcworc3BlZWQuCisuUFAKKy5JIHRhcmdldAoraXMgYSByZWd1bGFyIGZpbGUsIGEgZGlyZWN0b3J5LCBvciBhIGRldmljZSB0aGF0IGlzIG1vdW50ZWQgYXMgZXh0NCBmaWxlc3lzdGVtLgorSWYKKy5JIHRhcmdldAoraXMgYSBkaXJlY3RvcnksCisuQiBlNGRlZnJhZworcmVkdWNlcyBmcmFnbWVudGF0aW9uIG9mIGFsbCBmaWxlcyBpbiBpdC4gSWYKKy5JIHRhcmdldAoraXMgYSBkZXZpY2UsCisuQiBlNGRlZnJhZworZ2V0cyB0aGUgbW91bnQgcG9pbnQgb2YgaXQgYW5kIHJlZHVjZXMgZnJhZ21lbnRhdGlvbiBvZiBhbGwgZmlsZXMgaW4gdGhpcyBtb3VudAorcG9pbnQuCisuU0ggT1BUSU9OUworLlRQCisuQiBcLWMKK0dldCBhIGN1cnJlbnQgZnJhZ21lbnRhdGlvbiBjb3VudCBhbmQgYW4gaWRlYWwgZnJhZ21lbnRhdGlvbiBjb3VudCwgYW5kCitjYWxjdWxhdGUgZnJhZ21lbnRhdGlvbiBzY29yZSBiYXNlZCBvbiB0aGVtLiBCeSBzZWVpbmcgdGhpcyBzY29yZSwgd2UgY2FuCitkZXRlcm1pbmUgd2hldGhlciB3ZSBzaG91bGQgZXhlY3V0ZQorLkIgZTRkZWZyYWcKK3RvCisuSVIgdGFyZ2V0IC4KK1doZW4gdXNlZCB3aXRoCisuQiBcLXYKK29wdGlvbiwgdGhlIGN1cnJlbnQgZnJhZ21lbnRhdGlvbiBjb3VudCBhbmQgdGhlIGlkZWFsIGZyYWdtZW50YXRpb24gY291bnQgYXJlCitwcmludGVkIGZvciBlYWNoIGZpbGUuCisuSVAKK0Fsc28gdGhpcyBvcHRpb24gb3V0cHV0cyB0aGUgYXZlcmFnZSBkYXRhIHNpemUgaW4gb25lIGV4dGVudC4gSWYgeW91IHNlZSBpdCwKK3lvdSdsbCBmaW5kIHRoZSBmaWxlIGhhcyBpZGVhbCBleHRlbnRzIG9yIG5vdC4gTm90ZSB0aGF0IHRoZSBtYXhpbXVtIGV4dGVudAorc2l6ZSBpcyAxMzEwNzJLQiBpbiBleHQ0IGZpbGVzeXN0ZW0gKGlmIGJsb2NrIHNpemUgaXMgNEtCKS4KKy5JUAorSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLAorLkkgdGFyZ2V0CitpcyBuZXZlciBkZWZyYWdtZW50ZWQuCisuVFAKKy5CIFwtdgorUHJpbnQgZXJyb3IgbWVzc2FnZXMgYW5kIHRoZSBmcmFnbWVudGF0aW9uIGNvdW50IGJlZm9yZSBhbmQgYWZ0ZXIgZGVmcmFnIGZvcgorZWFjaCBmaWxlLgorLlNIIE5PVEVTCisuQiBlNGRlZnJhZworZG9lcyBub3Qgc3VwcG9ydCBzd2FwIGZpbGUsIGZpbGVzIGluIGxvc3QrZm91bmQgZGlyZWN0b3J5LCBhbmQgZmlsZXMgYWxsb2NhdGVkCitpbiBpbmRpcmVjdCBibG9ja3MuIFdoZW4KKy5JIHRhcmdldAoraXMgYSBkZXZpY2Ugb3IgYSBtb3VudCBwb2ludCwKKy5CIGU0ZGVmcmFnCitkb2Vzbid0IGRlZnJhZ21lbnQgZmlsZXMgaW4gbW91bnQgcG9pbnQgb2Ygb3RoZXIgZGV2aWNlLgorLlBQCitJdCBzYWZlIHRvIHJ1biBlNGRlZnJhZyBvbiBhIGZpbGUgd2hpbGUgaXQgaXMgYWN0aXZlbHkgaW4gdXNlIGJ5IGFub3RoZXIKK2FwcGxpY2F0aW9uLiAgU2luY2UgdGhlIGNvbnRlbnRzIG9mIGZpbGUgYmxvY2tzIGFyZSBjb3BpZWQgdXNpbmcgdGhlCitwYWdlIGNhY2hlLCB0aGlzIGNhbiByZXN1bHQgaW4gYSBwZXJmb3JtYW5jZSBzbG93ZG93biB0byBib3RoIGU0ZGVmcmFnCithbmQgdGhlIGFwcGxpY2F0aW9uIGR1ZSB0byBjb250ZW50aW9uIG92ZXIgdGhlIHN5c3RlbSdzIG1lbW9yeSBhbmQgZGlzaworYmFuZHdpZHRoLgorLlBQCitJZiB0aGUgZmlsZSBzeXN0ZW0ncyBmcmVlIHNwYWNlIGlzIGZyYWdtZW50ZWQsIG9yIGlmIHRoZXJlIGlzCitpbnN1ZmZpY2llbnQgZnJlZSBzcGFjZSBhdmFpbGFibGUsIGU0ZGVmcmFnIG1heSBub3QgYmUgYWJsZQordG8gaW1wcm92ZSB0aGUgZmlsZSdzIGZyYWdtZW50YXRpb24uCisuUFAKK05vbi1wcml2aWxlZ2VkIHVzZXJzIGNhbiBleGVjdXRlCisuQiBlNGRlZnJhZwordG8gdGhlaXIgb3duIGZpbGUsIGJ1dCB0aGUgc2NvcmUgaXMgbm90IHByaW50ZWQgaWYKKy5CIFwtYworb3B0aW9uIGlzIHNwZWNpZmllZC4gVGhlcmVmb3JlLCBpdCBpcyBkZXNpcmFibGUgdG8gYmUgZXhlY3V0ZWQgYnkgcm9vdCB1c2VyLgorLlNIIEFVVEhPUgorV3JpdHRlbiBieSBBa2lyYSBGdWppdGEgPGEtZnVqaXRhQHJzLmpwLm5lYy5jb20+IGFuZCBUYWthc2hpIFNhdG8KKzx0LXNhdG9AeWsuanAubmVjLmNvbT4uCisuU0ggU0VFIEFMU08KKy5CUiBta2UyZnMgKDgpLAorLkJSIG1vdW50ICg4KS4KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZTRkZWZyYWcuYyBiL2UyZnNwcm9ncy9taXNjL2U0ZGVmcmFnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQxYjRmNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2U0ZGVmcmFnLmMKQEAgLTAsMCArMSwyMDMyIEBACisvKgorICogZTRkZWZyYWcuYyAtIGV4dDQgZmlsZXN5c3RlbSBkZWZyYWdtZW50ZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTkVDIFNvZnR3YXJlIFRvaG9rdSwgTHRkLgorICoKKyAqIEF1dGhvcjogQWtpcmEgRnVqaXRhCTxhLWZ1aml0YUBycy5qcC5uZWMuY29tPgorICogICAgICAgICBUYWthc2hpIFNhdG8JPHQtc2F0b0B5ay5qcC5uZWMuY29tPgorICovCisKKyNpZm5kZWYgX0xBUkdFRklMRV9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UKKyNlbmRpZgorCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpZm5kZWYgX0dOVV9TT1VSQ0UKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxlbmRpYW4uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8ZnR3Lmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bW50ZW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxleHQyZnMvZmllbWFwLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNpbmNsdWRlIDxzeXMvdmZzLmg+CisKKy8qIEEgcmVsYXRpdmVseSBuZXcgaW9jdGwgaW50ZXJmYWNlIC4uLiAqLworI2lmbmRlZiBFWFQ0X0lPQ19NT1ZFX0VYVAorI2RlZmluZSBFWFQ0X0lPQ19NT1ZFX0VYVCAgICAgIF9JT1dSKCdmJywgMTUsIHN0cnVjdCBtb3ZlX2V4dGVudCkKKyNlbmRpZgorCisvKiBNYWNybyBmdW5jdGlvbnMgKi8KKyNkZWZpbmUgUFJJTlRfRVJSX01TRyhtc2cpCWZwcmludGYoc3RkZXJyLCAiJXNcbiIsIChtc2cpKQorI2RlZmluZSBJTl9GVFdfUFJJTlRfRVJSX01TRyhtc2cpCVwKKwlmcHJpbnRmKHN0ZGVyciwgIlx0JXNcdFx0WyBORyBdXG4iLCAobXNnKSkKKyNkZWZpbmUgUFJJTlRfRklMRV9OQU1FKGZpbGUpCWZwcmludGYoc3RkZXJyLCAiIFwiJXNcIlxuIiwgKGZpbGUpKQorI2RlZmluZSBQUklOVF9FUlJfTVNHX1dJVEhfRVJSTk8obXNnKQlcCisJZnByaW50ZihzdGRlcnIsICJcdCVzOiVzXHRbIE5HIF1cbiIsIChtc2cpLCBzdHJlcnJvcihlcnJubykpCisjZGVmaW5lIFNUQVRJU1RJQ19FUlJfTVNHKG1zZykJXAorCWZwcmludGYoc3RkZXJyLCAiXHQlc1xuIiwgKG1zZykpCisjZGVmaW5lIFNUQVRJU1RJQ19FUlJfTVNHX1dJVEhfRVJSTk8obXNnKQlcCisJZnByaW50ZihzdGRlcnIsICJcdCVzOiVzXG4iLCAobXNnKSwgc3RyZXJyb3IoZXJybm8pKQorI2RlZmluZSBtaW4oeCwgeSkgKCgoeCkgPiAoeSkpID8gKHkpIDogKHgpKQorI2RlZmluZSBDQUxDX1NDT1JFKHJhdGlvKSBcCisJKChyYXRpbykgPiAxMCA/ICg4MCArIDIwICogKHJhdGlvKSAvIDEwMCkgOiAoOCAqIChyYXRpbykpKQorLyogV3JhcCB1cCB0aGUgZnJlZSBmdW5jdGlvbiAqLworI2RlZmluZSBGUkVFKHRtcCkJCQkJXAorCWRvIHsJCQkJCVwKKwkJaWYgKCh0bXApICE9IE5VTEwpCQlcCisJCQlmcmVlKHRtcCk7CQlcCisJfSB3aGlsZSAoMCkJCQkJXAorLyogSW5zZXJ0IGxpc3QyIGFmdGVyIGxpc3QxICovCisjZGVmaW5lIGluc2VydChsaXN0MSwgbGlzdDIpCQkJXAorCWRvIHsJCQkJCVwKKwkJbGlzdDItPm5leHQgPSBsaXN0MS0+bmV4dDsJXAorCQlsaXN0MS0+bmV4dC0+cHJldiA9IGxpc3QyOwlcCisJCWxpc3QyLT5wcmV2ID0gbGlzdDE7CQlcCisJCWxpc3QxLT5uZXh0ID0gbGlzdDI7CQlcCisJfSB3aGlsZSAoMCkKKworLyogVG8gZGVsZXRlIHVudXNlZCB3YXJuaW5nICovCisjaWZkZWYgX19HTlVDX18KKyNkZWZpbmUgRVhUMkZTX0FUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgRVhUMkZTX0FUVFIoeCkKKyNlbmRpZgorCisvKiBUaGUgbW9kZSBvZiBkZWZyYWcgKi8KKyNkZWZpbmUgREVUQUlMCQkJMHgwMQorI2RlZmluZSBTVEFUSVNUSUMJCTB4MDIKKworI2RlZmluZSBERVZOQU1FCQkJMAorI2RlZmluZSBESVJOQU1FCQkJMQorI2RlZmluZSBGSUxFTkFNRQkJMgorCisjZGVmaW5lIEZUV19PUEVOX0ZECQkyMDAwCisKKyNkZWZpbmUgRlNfRVhUNAkJCSJleHQ0IgorI2RlZmluZSBST09UX1VJRAkJMAorCisjZGVmaW5lIEJPVU5EX1NDT1JFCQk1NQorI2RlZmluZSBTSE9XX0ZSQUdfRklMRVMJNQorCisvKiBNYWdpYyBudW1iZXIgZm9yIGV4dDQgKi8KKyNkZWZpbmUgRVhUNF9TVVBFUl9NQUdJQwkweEVGNTMKKworLyogRGVmaW5pdGlvbiBvZiBmbGV4X2JnICovCisjZGVmaW5lIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF9GTEVYX0JHCQkweDAyMDAKKworLyogVGhlIGZvbGxvd2luZyBtYWNybyBpcyB1c2VkIGZvciBpb2N0bCBGU19JT0NfRklFTUFQCisgKiBFWFRFTlRfTUFYX0NPVU5UOgl0aGUgbWF4aW11bSBudW1iZXIgb2YgZXh0ZW50cyBmb3IgZXhjaGFuZ2luZyBiZXR3ZWVuCisgKgkJCWtlcm5lbC1zcGFjZSBhbmQgdXNlci1zcGFjZSBwZXIgaW9jdGwKKyAqLworI2RlZmluZSBFWFRFTlRfTUFYX0NPVU5UCTUxMgorCisvKiBUaGUgZm9sbG93aW5nIG1hY3JvcyBhcmUgZXJyb3IgbWVzc2FnZSAqLworI2RlZmluZSBNU0dfVVNBR0UJCVwKKyJVc2FnZQk6IGU0ZGVmcmFnIFstdl0gZmlsZS4uLnwgZGlyZWN0b3J5Li4ufCBkZXZpY2UuLi5cblwKKwk6IGU0ZGVmcmFnICAtYyAgZmlsZS4uLnwgZGlyZWN0b3J5Li4ufCBkZXZpY2UuLi5cbiIKKworI2RlZmluZSBOR01TR19FWFQ0CQkiRmlsZXN5c3RlbSBpcyBub3QgZXh0NCBmaWxlc3lzdGVtIgorI2RlZmluZSBOR01TR19GSUxFX0VYVEVOVAkiRmFpbGVkIHRvIGdldCBmaWxlIGV4dGVudHMiCisjZGVmaW5lIE5HTVNHX0ZJTEVfSU5GTwkJIkZhaWxlZCB0byBnZXQgZmlsZSBpbmZvcm1hdGlvbiIKKyNkZWZpbmUgTkdNU0dfRklMRV9PUEVOCQkiRmFpbGVkIHRvIG9wZW4iCisjZGVmaW5lIE5HTVNHX0ZJTEVfVU5SRUcJIkZpbGUgaXMgbm90IHJlZ3VsYXIgZmlsZSIKKyNkZWZpbmUgTkdNU0dfTE9TVF9GT1VORAkiQ2FuIG5vdCBwcm9jZXNzIFwibG9zdCtmb3VuZFwiIgorCisvKiBEYXRhIHR5cGUgZm9yIGZpbGVzeXN0ZW0td2lkZSBibG9ja3MgbnVtYmVyICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBleHQ0X2ZzYmxrX3Q7CisKK3N0cnVjdCBmaWVtYXBfZXh0ZW50X2RhdGEgeworCV9fdTY0IGxlbjsJCQkvKiBibG9ja3MgY291bnQgKi8KKwlfX3U2NCBsb2dpY2FsOwkJLyogc3RhcnQgbG9naWNhbCBibG9jayBudW1iZXIgKi8KKwlleHQ0X2ZzYmxrX3QgcGh5c2ljYWw7CQkvKiBzdGFydCBwaHlzaWNhbCBibG9jayBudW1iZXIgKi8KK307CisKK3N0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgeworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKnByZXY7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqbmV4dDsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9kYXRhIGRhdGE7CS8qIGV4dGVudCBiZWxvbmcgdG8gZmlsZSAqLworfTsKKworc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAgeworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2dyb3VwICpwcmV2OworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2dyb3VwICpuZXh0OworCV9fdTY0IGxlbjsJLyogbGVuZ3RoIG9mIHRoaXMgY29udGludW91cyByZWdpb24gKi8KKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpzdGFydDsJLyogc3RhcnQgZXh0ICovCisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqZW5kOwkJLyogZW5kIGV4dCAqLworfTsKKworc3RydWN0IG1vdmVfZXh0ZW50IHsKKwlfX3MzMiByZXNlcnZlZDsJLyogb3JpZ2luYWwgZmlsZSBkZXNjcmlwdG9yICovCisJX191MzIgZG9ub3JfZmQ7CS8qIGRvbm9yIGZpbGUgZGVzY3JpcHRvciAqLworCV9fdTY0IG9yaWdfc3RhcnQ7CS8qIGxvZ2ljYWwgc3RhcnQgb2Zmc2V0IGluIGJsb2NrIGZvciBvcmlnICovCisJX191NjQgZG9ub3Jfc3RhcnQ7CS8qIGxvZ2ljYWwgc3RhcnQgb2Zmc2V0IGluIGJsb2NrIGZvciBkb25vciAqLworCV9fdTY0IGxlbjsJLyogYmxvY2sgbGVuZ3RoIHRvIGJlIG1vdmVkICovCisJX191NjQgbW92ZWRfbGVuOwkvKiBtb3ZlZCBibG9jayBsZW5ndGggKi8KK307CisKK3N0cnVjdCBmcmFnX3N0YXRpc3RpY19pbm8geworCWludCBub3dfY291bnQ7CS8qIHRoZSBmaWxlJ3MgZXh0ZW50cyBjb3VudCBvZiBiZWZvcmUgZGVmcmFnICovCisJaW50IGJlc3RfY291bnQ7IC8qIHRoZSBiZXN0IGZpbGUncyBleHRlbnRzIGNvdW50ICovCisJX191NjQgc2l6ZV9wZXJfZXh0OwkvKiBzaXplKEtCKSBwZXIgZXh0ZW50ICovCisJZmxvYXQgcmF0aW87CS8qIHRoZSByYXRpbyBvZiBmcmFnbWVudGF0aW9uICovCisJY2hhciBtc2dfYnVmZmVyW1BBVEhfTUFYICsgMV07CS8qIHBhdGhuYW1lIG9mIHRoZSBmaWxlICovCit9OworCitzdGF0aWMgY2hhcglsb3N0X2ZvdW5kX2RpcltQQVRIX01BWCArIDFdOworc3RhdGljIGludAlibG9ja19zaXplOworc3RhdGljIGludAlleHRlbnRzX2JlZm9yZV9kZWZyYWc7CitzdGF0aWMgaW50CWV4dGVudHNfYWZ0ZXJfZGVmcmFnOworc3RhdGljIGludAltb2RlX2ZsYWc7CitzdGF0aWMgdW5zaWduZWQgaW50CWN1cnJlbnRfdWlkOworc3RhdGljIHVuc2lnbmVkIGludAlkZWZyYWdlZF9maWxlX2NvdW50Oworc3RhdGljIHVuc2lnbmVkIGludAlmcmFnX2ZpbGVzX2JlZm9yZV9kZWZyYWc7CitzdGF0aWMgdW5zaWduZWQgaW50CWZyYWdfZmlsZXNfYWZ0ZXJfZGVmcmFnOworc3RhdGljIHVuc2lnbmVkIGludAlyZWd1bGFyX2NvdW50Oworc3RhdGljIHVuc2lnbmVkIGludAlzdWNjZWVkX2NudDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQJdG90YWxfY291bnQ7CitzdGF0aWMgX191OCBsb2dfZ3JvdXBzX3Blcl9mbGV4Oworc3RhdGljIF9fdTMyIGJsb2Nrc19wZXJfZ3JvdXA7CitzdGF0aWMgX191MzIgZmVhdHVyZV9pbmNvbXBhdDsKK3N0YXRpYyBleHQ0X2ZzYmxrX3QJZmlsZXNfYmxvY2tfY291bnQ7CitzdGF0aWMgc3RydWN0IGZyYWdfc3RhdGlzdGljX2lubwlmcmFnX3JhbmtbU0hPV19GUkFHX0ZJTEVTXTsKKworCisvKgorICogV2UgcHJlZmVyIHBvc2l4X2ZhZHZpc2U2NCB3aGVuIGF2YWlsYWJsZSwgYXMgaXQgYWxsb3dzIDY0Yml0IG9mZnNldCBvbgorICogMzJiaXQgc3lzdGVtcworICovCisjaWYgZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0U2NCkKKyNkZWZpbmUgcG9zaXhfZmFkdmlzZQlwb3NpeF9mYWR2aXNlNjQKKyNlbGlmIGRlZmluZWQoSEFWRV9GQURWSVNFNjQpCisjZGVmaW5lIHBvc2l4X2ZhZHZpc2UJZmFkdmlzZTY0CisjZWxpZiAhZGVmaW5lZChIQVZFX1BPU0lYX0ZBRFZJU0UpCisjZXJyb3IgcG9zaXhfZmFkdmlzZSBub3QgYXZhaWxhYmxlIQorI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9GQUxMT0NBVEU2NAorI2Vycm9yIGZhbGxvY2F0ZTY0IG5vdCBhdmFpbGFibGUhCisjZW5kaWYgLyogISBIQVZFX0ZBTExPQ0FURTY0ICovCisKKy8qCisgKiBnZXRfbW91bnRfcG9pbnQoKSAtCUdldCBkZXZpY2UncyBtb3VudCBwb2ludC4KKyAqCisgKiBAZGV2bmFtZToJCXRoZSBkZXZpY2UncyBuYW1lLgorICogQG1vdW50X3BvaW50Ogl0aGUgbW91bnQgcG9pbnQuCisgKiBAZGlyX3BhdGhfbGVuOgl0aGUgbGVuZ3RoIG9mIGRpcmVjdG9yeS4KKyAqLworc3RhdGljIGludCBnZXRfbW91bnRfcG9pbnQoY29uc3QgY2hhciAqZGV2bmFtZSwgY2hhciAqbW91bnRfcG9pbnQsCisJCQkJCQkJaW50IGRpcl9wYXRoX2xlbikKK3sKKwkvKiBSZWZlciB0byAvZXRjL210YWIgKi8KKwljb25zdCBjaGFyCSptdGFiID0gTU9VTlRFRDsKKwlGSUxFCQkqZnAgPSBOVUxMOworCXN0cnVjdCBtbnRlbnQJKm1udCA9IE5VTEw7CisJc3RydWN0IHN0YXQ2NAlzYjsKKworCWlmIChzdGF0NjQoZGV2bmFtZSwgJnNiKSA8IDApIHsKKwkJcGVycm9yKE5HTVNHX0ZJTEVfSU5GTyk7CisJCVBSSU5UX0ZJTEVfTkFNRShkZXZuYW1lKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWZwID0gc2V0bW50ZW50KG10YWIsICJyIik7CisJaWYgKGZwID09IE5VTEwpIHsKKwkJcGVycm9yKCJDb3VsZG4ndCBhY2Nlc3MgL2V0Yy9tdGFiIik7CisJCXJldHVybiAtMTsKKwl9CisKKwl3aGlsZSAoKG1udCA9IGdldG1udGVudChmcCkpICE9IE5VTEwpIHsKKwkJc3RydWN0IHN0YXQ2NCBtczsKKworCQkvKgorCQkgKiBUbyBoYW5kbGUgZGV2aWNlIHN5bWxpbmtzLCB3ZSBzZWUgaWYgdGhlCisJCSAqIGRldmljZSBudW1iZXIgbWF0Y2hlcywgbm90IHRoZSBuYW1lCisJCSAqLworCQlpZiAoc3RhdDY0KG1udC0+bW50X2ZzbmFtZSwgJm1zKSA8IDApCisJCQljb250aW51ZTsKKwkJaWYgKHNiLnN0X3JkZXYgIT0gbXMuc3RfcmRldikKKwkJCWNvbnRpbnVlOworCisJCWVuZG1udGVudChmcCk7CisJCWlmIChzdHJjbXAobW50LT5tbnRfdHlwZSwgRlNfRVhUNCkgPT0gMCkgeworCQkJc3RybmNweShtb3VudF9wb2ludCwgbW50LT5tbnRfZGlyLAorCQkJCWRpcl9wYXRoX2xlbik7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlQUklOVF9FUlJfTVNHKE5HTVNHX0VYVDQpOworCQlyZXR1cm4gLTE7CisJfQorCWVuZG1udGVudChmcCk7CisJUFJJTlRfRVJSX01TRygiRmlsZXN5c3RlbSBpcyBub3QgbW91bnRlZCIpOworCXJldHVybiAtMTsKK30KKworLyoKKyAqIGlzX2V4dDQoKSAtCQlXaGV0aGVyIG9uIGFuIGV4dDQgZmlsZXN5c3RlbS4KKyAqCisgKiBAZmlsZToJCXRoZSBmaWxlJ3MgbmFtZS4KKyAqLworc3RhdGljIGludCBpc19leHQ0KGNvbnN0IGNoYXIgKmZpbGUsIGNoYXIgKmRldm5hbWUpCit7CisJaW50IAltYXhsZW4gPSAwOworCWludAlsZW4sIHJldDsKKwlGSUxFCSpmcCA9IE5VTEw7CisJY2hhcgkqbW50X3R5cGUgPSBOVUxMOworCS8qIFJlZmVyIHRvIC9ldGMvbXRhYiAqLworCWNvbnN0IGNoYXIJKm10YWIgPSBNT1VOVEVEOworCWNoYXIJZmlsZV9wYXRoW1BBVEhfTUFYICsgMV07CisJc3RydWN0IG1udGVudAkqbW50ID0gTlVMTDsKKwlzdHJ1Y3Qgc3RhdGZzNjQJZnNidWY7CisKKwkvKiBHZXQgZnVsbCBwYXRoICovCisJaWYgKHJlYWxwYXRoKGZpbGUsIGZpbGVfcGF0aCkgPT0gTlVMTCkgeworCQlwZXJyb3IoIkNvdWxkbid0IGdldCBmdWxsIHBhdGgiKTsKKwkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKHN0YXRmczY0KGZpbGVfcGF0aCwgJmZzYnVmKSA8IDApIHsKKwkJcGVycm9yKCJGYWlsZWQgdG8gZ2V0IGZpbGVzeXN0ZW0gaW5mb3JtYXRpb24iKTsKKwkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKGZzYnVmLmZfdHlwZSAhPSBFWFQ0X1NVUEVSX01BR0lDKSB7CisJCVBSSU5UX0VSUl9NU0coTkdNU0dfRVhUNCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlmcCA9IHNldG1udGVudChtdGFiLCAiciIpOworCWlmIChmcCA9PSBOVUxMKSB7CisJCXBlcnJvcigiQ291bGRuJ3QgYWNjZXNzIC9ldGMvbXRhYiIpOworCQlyZXR1cm4gLTE7CisJfQorCisJd2hpbGUgKChtbnQgPSBnZXRtbnRlbnQoZnApKSAhPSBOVUxMKSB7CisJCWlmIChtbnQtPm1udF9mc25hbWVbMF0gIT0gJy8nKQorCQkJY29udGludWU7CisJCWxlbiA9IHN0cmxlbihtbnQtPm1udF9kaXIpOworCQlyZXQgPSBtZW1jbXAoZmlsZV9wYXRoLCBtbnQtPm1udF9kaXIsIGxlbik7CisJCWlmIChyZXQgIT0gMCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChtYXhsZW4gPj0gbGVuKQorCQkJY29udGludWU7CisKKwkJbWF4bGVuID0gbGVuOworCisJCW1udF90eXBlID0gcmVhbGxvYyhtbnRfdHlwZSwgc3RybGVuKG1udC0+bW50X3R5cGUpICsgMSk7CisJCWlmIChtbnRfdHlwZSA9PSBOVUxMKSB7CisJCQllbmRtbnRlbnQoZnApOworCQkJcmV0dXJuIC0xOworCQl9CisJCW1lbXNldChtbnRfdHlwZSwgMCwgc3RybGVuKG1udC0+bW50X3R5cGUpICsgMSk7CisJCXN0cm5jcHkobW50X3R5cGUsIG1udC0+bW50X3R5cGUsIHN0cmxlbihtbnQtPm1udF90eXBlKSk7CisJCXN0cm5jcHkobG9zdF9mb3VuZF9kaXIsIG1udC0+bW50X2RpciwgUEFUSF9NQVgpOworCQlzdHJuY3B5KGRldm5hbWUsIG1udC0+bW50X2ZzbmFtZSwgc3RybGVuKG1udC0+bW50X2ZzbmFtZSkgKyAxKTsKKwl9CisKKwllbmRtbnRlbnQoZnApOworCWlmIChtbnRfdHlwZSAmJiBzdHJjbXAobW50X3R5cGUsIEZTX0VYVDQpID09IDApIHsKKwkJRlJFRShtbnRfdHlwZSk7CisJCXJldHVybiAwOworCX0gZWxzZSB7CisJCUZSRUUobW50X3R5cGUpOworCQlQUklOVF9FUlJfTVNHKE5HTVNHX0VYVDQpOworCQlyZXR1cm4gLTE7CisJfQorfQorCisvKgorICogY2FsY19lbnRyeV9jb3VudHMoKSAtCUNhbGN1bGF0ZSBmaWxlIGNvdW50cy4KKyAqCisgKiBAZmlsZToJCWZpbGUgbmFtZS4KKyAqIEBidWY6CQlmaWxlIGluZm8uCisgKiBAZmxhZzoJCWZpbGUgdHlwZS4KKyAqIEBmdHdidWY6CQl0aGUgcG9pbnRlciBvZiBhIHN0cnVjdCBGVFcuCisgKi8KK3N0YXRpYyBpbnQgY2FsY19lbnRyeV9jb3VudHMoY29uc3QgY2hhciAqZmlsZSBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCWNvbnN0IHN0cnVjdCBzdGF0NjQgKmJ1ZiwgaW50IGZsYWcgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQlzdHJ1Y3QgRlRXICpmdHdidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWlmIChTX0lTUkVHKGJ1Zi0+c3RfbW9kZSkpCisJCXJlZ3VsYXJfY291bnQrKzsKKworCXRvdGFsX2NvdW50Kys7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIHBhZ2VfaW5fY29yZSgpIC0JR2V0IGluZm9ybWF0aW9uIG9uIHdoZXRoZXIgcGFnZXMgYXJlIGluIGNvcmUuCisgKgorICogQGZkOgkJCWRlZnJhZyB0YXJnZXQgZmlsZSdzIGRlc2NyaXB0b3IuCisgKiBAZGVmcmFnX2RhdGE6CWRhdGEgdXNlZCBmb3IgZGVmcmFnLgorICogQHZlYzoJCXBhZ2Ugc3RhdGUgYXJyYXkuCisgKiBAcGFnZV9udW06CQlwYWdlIG51bWJlci4KKyAqLworc3RhdGljIGludCBwYWdlX2luX2NvcmUoaW50IGZkLCBzdHJ1Y3QgbW92ZV9leHRlbnQgZGVmcmFnX2RhdGEsCisJCQl1bnNpZ25lZCBjaGFyICoqdmVjLCB1bnNpZ25lZCBpbnQgKnBhZ2VfbnVtKQoreworCWxvbmcJcGFnZXNpemU7CisJdm9pZAkqcGFnZSA9IE5VTEw7CisJbG9mZl90CW9mZnNldCwgZW5kX29mZnNldCwgbGVuZ3RoOworCisJaWYgKHZlYyA9PSBOVUxMIHx8ICp2ZWMgIT0gTlVMTCkKKwkJcmV0dXJuIC0xOworCisJcGFnZXNpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CisJaWYgKHBhZ2VzaXplIDwgMCkKKwkJcmV0dXJuIC0xOworCS8qIEluIG1tYXAsIG9mZnNldCBzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiB0aGUgcGFnZSBzaXplICovCisJb2Zmc2V0ID0gKGxvZmZfdClkZWZyYWdfZGF0YS5vcmlnX3N0YXJ0ICogYmxvY2tfc2l6ZTsKKwlsZW5ndGggPSAobG9mZl90KWRlZnJhZ19kYXRhLmxlbiAqIGJsb2NrX3NpemU7CisJZW5kX29mZnNldCA9IG9mZnNldCArIGxlbmd0aDsKKwkvKiBSb3VuZCB0aGUgb2Zmc2V0IGRvd24gdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgcGFnZXNpemUgKi8KKwlvZmZzZXQgPSAob2Zmc2V0IC8gcGFnZXNpemUpICogcGFnZXNpemU7CisJbGVuZ3RoID0gZW5kX29mZnNldCAtIG9mZnNldDsKKworCXBhZ2UgPSBtbWFwKE5VTEwsIGxlbmd0aCwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBmZCwgb2Zmc2V0KTsKKwlpZiAocGFnZSA9PSBNQVBfRkFJTEVEKQorCQlyZXR1cm4gLTE7CisKKwkqcGFnZV9udW0gPSAwOworCSpwYWdlX251bSA9IChsZW5ndGggKyBwYWdlc2l6ZSAtIDEpIC8gcGFnZXNpemU7CisJKnZlYyA9ICh1bnNpZ25lZCBjaGFyICopY2FsbG9jKCpwYWdlX251bSwgMSk7CisJaWYgKCp2ZWMgPT0gTlVMTCkgeworCQltdW5tYXAocGFnZSwgbGVuZ3RoKTsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIEdldCBpbmZvcm1hdGlvbiBvbiB3aGV0aGVyIHBhZ2VzIGFyZSBpbiBjb3JlICovCisJaWYgKG1pbmNvcmUocGFnZSwgKHNpemVfdClsZW5ndGgsICp2ZWMpID09IC0xIHx8CisJCW11bm1hcChwYWdlLCBsZW5ndGgpID09IC0xKSB7CisJCUZSRUUoKnZlYyk7CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGRlZnJhZ19mYWR2aXNlKCkgLQlQcmVkZWNsYXJlIGFuIGFjY2VzcyBwYXR0ZXJuIGZvciBmaWxlIGRhdGEuCisgKgorICogQGZkOgkJCWRlZnJhZyB0YXJnZXQgZmlsZSdzIGRlc2NyaXB0b3IuCisgKiBAZGVmcmFnX2RhdGE6CWRhdGEgdXNlZCBmb3IgZGVmcmFnLgorICogQHZlYzoJCXBhZ2Ugc3RhdGUgYXJyYXkuCisgKiBAcGFnZV9udW06CQlwYWdlIG51bWJlci4KKyAqLworc3RhdGljIGludCBkZWZyYWdfZmFkdmlzZShpbnQgZmQsIHN0cnVjdCBtb3ZlX2V4dGVudCBkZWZyYWdfZGF0YSwKKwkJICAgdW5zaWduZWQgY2hhciAqdmVjLCB1bnNpZ25lZCBpbnQgcGFnZV9udW0pCit7CisJaW50CWZsYWcgPSAxOworCWxvbmcJcGFnZXNpemUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CisJaW50CWZhZHZpc2VfZmxhZyA9IFBPU0lYX0ZBRFZfRE9OVE5FRUQ7CisJaW50CXN5bmNfZmxhZyA9IFNZTkNfRklMRV9SQU5HRV9XQUlUX0JFRk9SRSB8CisJCQkgICAgU1lOQ19GSUxFX1JBTkdFX1dSSVRFIHwKKwkJCSAgICBTWU5DX0ZJTEVfUkFOR0VfV0FJVF9BRlRFUjsKKwl1bnNpZ25lZCBpbnQJaTsKKwlsb2ZmX3QJb2Zmc2V0OworCisJaWYgKHBhZ2VzaXplIDwgMSkKKwkJcmV0dXJuIC0xOworCisJb2Zmc2V0ID0gKGxvZmZfdClkZWZyYWdfZGF0YS5vcmlnX3N0YXJ0ICogYmxvY2tfc2l6ZTsKKwlvZmZzZXQgPSAob2Zmc2V0IC8gcGFnZXNpemUpICogcGFnZXNpemU7CisKKyNpZmRlZiBIQVZFX1NZTkNfRklMRV9SQU5HRQorCS8qIFN5bmMgZmlsZSBmb3IgZmFkdmlzZSBwcm9jZXNzICovCisJaWYgKHN5bmNfZmlsZV9yYW5nZShmZCwgb2Zmc2V0LAorCQkobG9mZl90KXBhZ2VzaXplICogcGFnZV9udW0sIHN5bmNfZmxhZykgPCAwKQorCQlyZXR1cm4gLTE7CisjZW5kaWYKKworCS8qIFRyeSB0byByZWxlYXNlIGJ1ZmZlciBjYWNoZSB3aGljaCB0aGlzIHByb2Nlc3MgdXNlZCwKKwkgKiB0aGVuIG90aGVyIHByb2Nlc3MgY2FuIHVzZSB0aGUgcmVsZWFzZWQgYnVmZmVyCisJICovCisJZm9yIChpID0gMDsgaSA8IHBhZ2VfbnVtOyBpKyspIHsKKwkJaWYgKCh2ZWNbaV0gJiAweDEpID09IDApIHsKKwkJCW9mZnNldCArPSBwYWdlc2l6ZTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIHBhZ2VzaXplLCBmYWR2aXNlX2ZsYWcpIDwgMCkgeworCQkJaWYgKChtb2RlX2ZsYWcgJiBERVRBSUwpICYmIGZsYWcpIHsKKwkJCQlwZXJyb3IoIlx0RmFpbGVkIHRvIGZhZHZpc2UiKTsKKwkJCQlmbGFnID0gMDsKKwkJCX0KKwkJfQorCQlvZmZzZXQgKz0gcGFnZXNpemU7CisJfQorCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBjaGVja19mcmVlX3NpemUoKSAtCUNoZWNrIGlmIHRoZXJlJ3MgZW5vdWdoIGRpc2sgc3BhY2UuCisgKgorICogQGZkOgkJCWRlZnJhZyB0YXJnZXQgZmlsZSdzIGRlc2NyaXB0b3IuCisgKiBAZmlsZToJCWZpbGUgbmFtZS4KKyAqIEBibGtfY291bnQ6CQlmaWxlIGJsb2Nrcy4KKyAqLworc3RhdGljIGludCBjaGVja19mcmVlX3NpemUoaW50IGZkLCBjb25zdCBjaGFyICpmaWxlLCBleHQ0X2ZzYmxrX3QgYmxrX2NvdW50KQoreworCWV4dDRfZnNibGtfdAlmcmVlX2Jsa19jb3VudDsKKwlzdHJ1Y3Qgc3RhdGZzNjQJZnNidWY7CisKKwlpZiAoZnN0YXRmczY0KGZkLCAmZnNidWYpIDwgMCkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQlQUklOVF9FUlJfTVNHX1dJVEhfRVJSTk8oCisJCQkJIkZhaWxlZCB0byBnZXQgZmlsZXN5c3RlbSBpbmZvcm1hdGlvbiIpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwkvKiBDb21wdXRlIGZyZWUgc3BhY2UgZm9yIHJvb3QgYW5kIG5vcm1hbCB1c2VyIHNlcGFyYXRlbHkgKi8KKwlpZiAoY3VycmVudF91aWQgPT0gUk9PVF9VSUQpCisJCWZyZWVfYmxrX2NvdW50ID0gZnNidWYuZl9iZnJlZTsKKwllbHNlCisJCWZyZWVfYmxrX2NvdW50ID0gZnNidWYuZl9iYXZhaWw7CisKKwlpZiAoZnJlZV9ibGtfY291bnQgPj0gYmxrX2NvdW50KQorCQlyZXR1cm4gMDsKKworCXJldHVybiAtRU5PU1BDOworfQorCisvKgorICogZmlsZV9mcmFnX2NvdW50KCkgLQlHZXQgZmlsZSBmcmFnbWVudCBjb3VudC4KKyAqCisgKiBAZmQ6CQkJZGVmcmFnIHRhcmdldCBmaWxlJ3MgZGVzY3JpcHRvci4KKyAqLworc3RhdGljIGludCBmaWxlX2ZyYWdfY291bnQoaW50IGZkKQoreworCWludAlyZXQ7CisJc3RydWN0IGZpZW1hcAlmaWVtYXBfYnVmOworCisJLyogV2hlbiBmbV9leHRlbnRfY291bnQgaXMgMCwKKwkgKiBpb2N0bCBqdXN0IGdldCBmaWxlIGZyYWdtZW50IGNvdW50LgorCSAqLworCW1lbXNldCgmZmllbWFwX2J1ZiwgMCwgc2l6ZW9mKHN0cnVjdCBmaWVtYXApKTsKKwlmaWVtYXBfYnVmLmZtX3N0YXJ0ID0gMDsKKwlmaWVtYXBfYnVmLmZtX2xlbmd0aCA9IEZJRU1BUF9NQVhfT0ZGU0VUOworCWZpZW1hcF9idWYuZm1fZmxhZ3MgfD0gRklFTUFQX0ZMQUdfU1lOQzsKKworCXJldCA9IGlvY3RsKGZkLCBGU19JT0NfRklFTUFQLCAmZmllbWFwX2J1Zik7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gZmllbWFwX2J1Zi5mbV9tYXBwZWRfZXh0ZW50czsKK30KKworLyoKKyAqIGZpbGVfY2hlY2soKSAtCUNoZWNrIGZpbGUncyBhdHRyaWJ1dGVzLgorICoKKyAqIEBmZDoJCQlkZWZyYWcgdGFyZ2V0IGZpbGUncyBkZXNjcmlwdG9yLgorICogQGJ1ZjoJCWEgcG9pbnRlciBvZiB0aGUgc3RydWN0IHN0YXQ2NC4KKyAqIEBmaWxlOgkJZmlsZSBuYW1lLgorICogQGV4dGVudHM6CQlmaWxlIGV4dGVudHMuCisgKiBAYmxrX2NvdW50OgkJZmlsZSBibG9ja3MuCisgKi8KK3N0YXRpYyBpbnQgZmlsZV9jaGVjayhpbnQgZmQsIGNvbnN0IHN0cnVjdCBzdGF0NjQgKmJ1ZiwgY29uc3QgY2hhciAqZmlsZSwKKwkJaW50IGV4dGVudHMsIGV4dDRfZnNibGtfdCBibGtfY291bnQpCit7CisJaW50CXJldDsKKwlzdHJ1Y3QgZmxvY2sJbG9jazsKKworCS8qIFdyaXRlLWxvY2sgY2hlY2sgaXMgbW9yZSByZWxpYWJsZSAqLworCWxvY2subF90eXBlID0gRl9XUkxDSzsKKwlsb2NrLmxfc3RhcnQgPSAwOworCWxvY2subF93aGVuY2UgPSBTRUVLX1NFVDsKKwlsb2NrLmxfbGVuID0gMDsKKworCS8qIEZyZWUgc3BhY2UgKi8KKwlyZXQgPSBjaGVja19mcmVlX3NpemUoZmQsIGZpbGUsIGJsa19jb3VudCk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKChtb2RlX2ZsYWcgJiBERVRBSUwpICYmIHJldCA9PSAtRU5PU1BDKSB7CisJCQlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0tbJXUvJXVdIFwiJXNcIlx0XHQiCisJCQkJIiAgZXh0ZW50czogJWQgLT4gJWRcbiIsIGRlZnJhZ2VkX2ZpbGVfY291bnQsCisJCQkJdG90YWxfY291bnQsIGZpbGUsIGV4dGVudHMsIGV4dGVudHMpOworCQkJSU5fRlRXX1BSSU5UX0VSUl9NU0coCisJCQkiRGVmcmFnIHNpemUgaXMgbGFyZ2VyIHRoYW4gZmlsZXN5c3RlbSdzIGZyZWUgc3BhY2UiKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJLyogQWNjZXNzIGF1dGhvcml0eSAqLworCWlmIChjdXJyZW50X3VpZCAhPSBST09UX1VJRCAmJgorCQlidWYtPnN0X3VpZCAhPSBjdXJyZW50X3VpZCkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0tbJXUvJXVdIFwiJXNcIlx0XHQiCisJCQkJIiAgZXh0ZW50czogJWQgLT4gJWRcbiIsIGRlZnJhZ2VkX2ZpbGVfY291bnQsCisJCQkJdG90YWxfY291bnQsIGZpbGUsIGV4dGVudHMsIGV4dGVudHMpOworCQkJSU5fRlRXX1BSSU5UX0VSUl9NU0coCisJCQkJIkZpbGUgaXMgbm90IGN1cnJlbnQgdXNlcidzIGZpbGUiCisJCQkJIiBvciBjdXJyZW50IHVzZXIgaXMgbm90IHJvb3QiKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJLyogTG9jayBzdGF0dXMgKi8KKwlpZiAoZmNudGwoZmQsIEZfR0VUTEssICZsb2NrKSA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKAorCQkJCSJGYWlsZWQgdG8gZ2V0IGxvY2sgaW5mb3JtYXRpb24iKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfSBlbHNlIGlmIChsb2NrLmxfdHlwZSAhPSBGX1VOTENLKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCUlOX0ZUV19QUklOVF9FUlJfTVNHKCJGaWxlIGhhcyBiZWVuIGxvY2tlZCIpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIGluc2VydF9leHRlbnRfYnlfbG9naWNhbCgpIC0JU2VxdWVudGlhbGx5IGluc2VydCBleHRlbnQgYnkgbG9naWNhbC4KKyAqCisgKiBAZXh0X2xpc3RfaGVhZDoJdGhlIGhlYWQgb2YgbG9naWNhbCBleHRlbnQgbGlzdC4KKyAqIEBleHQ6CQl0aGUgZXh0ZW50IGVsZW1lbnQgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZC4KKyAqLworc3RhdGljIGludCBpbnNlcnRfZXh0ZW50X2J5X2xvZ2ljYWwoc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqKmV4dF9saXN0X2hlYWQsCisJCQlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHQpCit7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdAkqZXh0X2xpc3RfdG1wID0gKmV4dF9saXN0X2hlYWQ7CisKKwlpZiAoZXh0ID09IE5VTEwpCisJCWdvdG8gb3V0OworCisJLyogRmlyc3QgZWxlbWVudCAqLworCWlmICgqZXh0X2xpc3RfaGVhZCA9PSBOVUxMKSB7CisJCSgqZXh0X2xpc3RfaGVhZCkgPSBleHQ7CisJCSgqZXh0X2xpc3RfaGVhZCktPnByZXYgPSAqZXh0X2xpc3RfaGVhZDsKKwkJKCpleHRfbGlzdF9oZWFkKS0+bmV4dCA9ICpleHRfbGlzdF9oZWFkOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoZXh0LT5kYXRhLmxvZ2ljYWwgPD0gZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWwpIHsKKwkJLyogSW5zZXJ0IGJlZm9yZSBoZWFkICovCisJCWlmIChleHRfbGlzdF90bXAtPmRhdGEubG9naWNhbCA8CisJCQlleHQtPmRhdGEubG9naWNhbCArIGV4dC0+ZGF0YS5sZW4pCisJCQkvKiBPdmVybGFwICovCisJCQlnb3RvIG91dDsKKwkJLyogQWRqdXN0IGhlYWQgKi8KKwkJKmV4dF9saXN0X2hlYWQgPSBleHQ7CisJfSBlbHNlIHsKKwkJLyogSW5zZXJ0IGludG8gdGhlIG1pZGRsZSBvciBsYXN0IG9mIHRoZSBsaXN0ICovCisJCWRvIHsKKwkJCWlmIChleHQtPmRhdGEubG9naWNhbCA8IGV4dF9saXN0X3RtcC0+ZGF0YS5sb2dpY2FsKQorCQkJCWJyZWFrOworCQkJZXh0X2xpc3RfdG1wID0gZXh0X2xpc3RfdG1wLT5uZXh0OworCQl9IHdoaWxlIChleHRfbGlzdF90bXAgIT0gKCpleHRfbGlzdF9oZWFkKSk7CisJCWlmIChleHQtPmRhdGEubG9naWNhbCA8CisJCSAgICBleHRfbGlzdF90bXAtPnByZXYtPmRhdGEubG9naWNhbCArCisJCQlleHRfbGlzdF90bXAtPnByZXYtPmRhdGEubGVuKQorCQkJLyogT3ZlcmxhcCAqLworCQkJZ290byBvdXQ7CisKKwkJaWYgKGV4dF9saXN0X3RtcCAhPSAqZXh0X2xpc3RfaGVhZCAmJgorCQkgICAgZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWwgPAorCQkgICAgZXh0LT5kYXRhLmxvZ2ljYWwgKyBleHQtPmRhdGEubGVuKQorCQkJLyogT3ZlcmxhcCAqLworCQkJZ290byBvdXQ7CisJfQorCWV4dF9saXN0X3RtcCA9IGV4dF9saXN0X3RtcC0+cHJldjsKKwkvKiBJbnNlcnQgImV4dCIgYWZ0ZXIgImV4dF9saXN0X3RtcCIgKi8KKwlpbnNlcnQoZXh0X2xpc3RfdG1wLCBleHQpOworCXJldHVybiAwOworb3V0OgorCWVycm5vID0gRUlOVkFMOworCXJldHVybiAtMTsKK30KKworLyoKKyAqIGluc2VydF9leHRlbnRfYnlfcGh5c2ljYWwoKSAtCVNlcXVlbnRpYWxseSBpbnNlcnQgZXh0ZW50IGJ5IHBoeXNpY2FsLgorICoKKyAqIEBleHRfbGlzdF9oZWFkOgl0aGUgaGVhZCBvZiBwaHlzaWNhbCBleHRlbnQgbGlzdC4KKyAqIEBleHQ6CQl0aGUgZXh0ZW50IGVsZW1lbnQgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZC4KKyAqLworc3RhdGljIGludCBpbnNlcnRfZXh0ZW50X2J5X3BoeXNpY2FsKHN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKipleHRfbGlzdF9oZWFkLAorCQkJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqZXh0KQoreworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QJKmV4dF9saXN0X3RtcCA9ICpleHRfbGlzdF9oZWFkOworCisJaWYgKGV4dCA9PSBOVUxMKQorCQlnb3RvIG91dDsKKworCS8qIEZpcnN0IGVsZW1lbnQgKi8KKwlpZiAoKmV4dF9saXN0X2hlYWQgPT0gTlVMTCkgeworCQkoKmV4dF9saXN0X2hlYWQpID0gZXh0OworCQkoKmV4dF9saXN0X2hlYWQpLT5wcmV2ID0gKmV4dF9saXN0X2hlYWQ7CisJCSgqZXh0X2xpc3RfaGVhZCktPm5leHQgPSAqZXh0X2xpc3RfaGVhZDsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGV4dC0+ZGF0YS5waHlzaWNhbCA8PSBleHRfbGlzdF90bXAtPmRhdGEucGh5c2ljYWwpIHsKKwkJLyogSW5zZXJ0IGJlZm9yZSBoZWFkICovCisJCWlmIChleHRfbGlzdF90bXAtPmRhdGEucGh5c2ljYWwgPAorCQkJCQlleHQtPmRhdGEucGh5c2ljYWwgKyBleHQtPmRhdGEubGVuKQorCQkJLyogT3ZlcmxhcCAqLworCQkJZ290byBvdXQ7CisJCS8qIEFkanVzdCBoZWFkICovCisJCSpleHRfbGlzdF9oZWFkID0gZXh0OworCX0gZWxzZSB7CisJCS8qIEluc2VydCBpbnRvIHRoZSBtaWRkbGUgb3IgbGFzdCBvZiB0aGUgbGlzdCAqLworCQlkbyB7CisJCQlpZiAoZXh0LT5kYXRhLnBoeXNpY2FsIDwgZXh0X2xpc3RfdG1wLT5kYXRhLnBoeXNpY2FsKQorCQkJCWJyZWFrOworCQkJZXh0X2xpc3RfdG1wID0gZXh0X2xpc3RfdG1wLT5uZXh0OworCQl9IHdoaWxlIChleHRfbGlzdF90bXAgIT0gKCpleHRfbGlzdF9oZWFkKSk7CisJCWlmIChleHQtPmRhdGEucGh5c2ljYWwgPAorCQkgICAgZXh0X2xpc3RfdG1wLT5wcmV2LT5kYXRhLnBoeXNpY2FsICsKKwkJCQlleHRfbGlzdF90bXAtPnByZXYtPmRhdGEubGVuKQorCQkJLyogT3ZlcmxhcCAqLworCQkJZ290byBvdXQ7CisKKwkJaWYgKGV4dF9saXN0X3RtcCAhPSAqZXh0X2xpc3RfaGVhZCAmJgorCQkgICAgZXh0X2xpc3RfdG1wLT5kYXRhLnBoeXNpY2FsIDwKKwkJCQlleHQtPmRhdGEucGh5c2ljYWwgKyBleHQtPmRhdGEubGVuKQorCQkJLyogT3ZlcmxhcCAqLworCQkJZ290byBvdXQ7CisJfQorCWV4dF9saXN0X3RtcCA9IGV4dF9saXN0X3RtcC0+cHJldjsKKwkvKiBJbnNlcnQgImV4dCIgYWZ0ZXIgImV4dF9saXN0X3RtcCIgKi8KKwlpbnNlcnQoZXh0X2xpc3RfdG1wLCBleHQpOworCXJldHVybiAwOworb3V0OgorCWVycm5vID0gRUlOVkFMOworCXJldHVybiAtMTsKK30KKworLyoKKyAqIGluc2VydF9leHRzX2dyb3VwKCkgLQlJbnNlcnQgYSBleHRzX2dyb3VwLgorICoKKyAqIEBleHRfZ3JvdXBfaGVhZDoJCXRoZSBoZWFkIG9mIGEgZXh0c19ncm91cCBsaXN0LgorICogQGV4dHNfZ3JvdXA6CQkJdGhlIGV4dHNfZ3JvdXAgZWxlbWVudCB3aGljaCB3aWxsIGJlIGluc2VydGVkLgorICovCitzdGF0aWMgaW50IGluc2VydF9leHRzX2dyb3VwKHN0cnVjdCBmaWVtYXBfZXh0ZW50X2dyb3VwICoqZXh0X2dyb3VwX2hlYWQsCisJCQkJc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAgKmV4dHNfZ3JvdXApCit7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAJKmV4dF9ncm91cF90bXAgPSBOVUxMOworCisJaWYgKGV4dHNfZ3JvdXAgPT0gTlVMTCkgeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIC0xOworCX0KKworCS8qIEluaXRpYWxpemUgbGlzdCAqLworCWlmICgqZXh0X2dyb3VwX2hlYWQgPT0gTlVMTCkgeworCQkoKmV4dF9ncm91cF9oZWFkKSA9IGV4dHNfZ3JvdXA7CisJCSgqZXh0X2dyb3VwX2hlYWQpLT5wcmV2ID0gKmV4dF9ncm91cF9oZWFkOworCQkoKmV4dF9ncm91cF9oZWFkKS0+bmV4dCA9ICpleHRfZ3JvdXBfaGVhZDsKKwkJcmV0dXJuIDA7CisJfQorCisJZXh0X2dyb3VwX3RtcCA9ICgqZXh0X2dyb3VwX2hlYWQpLT5wcmV2OworCWluc2VydChleHRfZ3JvdXBfdG1wLCBleHRzX2dyb3VwKTsKKworCXJldHVybiAwOworfQorCisvKgorICogam9pbl9leHRlbnRzKCkgLQkJRmluZCBjb250aW51b3VzIHJlZ2lvbihleHRzX2dyb3VwKS4KKyAqCisgKiBAZXh0X2xpc3RfaGVhZDoJCXRoZSBoZWFkIG9mIHRoZSBleHRlbnQgbGlzdC4KKyAqIEBleHRfZ3JvdXBfaGVhZDoJCXRoZSBoZWFkIG9mIHRoZSB0YXJnZXQgZXh0c19ncm91cCBsaXN0LgorICovCitzdGF0aWMgaW50IGpvaW5fZXh0ZW50cyhzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHRfbGlzdF9oZWFkLAorCQlzdHJ1Y3QgZmllbWFwX2V4dGVudF9ncm91cCAqKmV4dF9ncm91cF9oZWFkKQoreworCV9fdTY0CWxlbiA9IGV4dF9saXN0X2hlYWQtPmRhdGEubGVuOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKmV4dF9saXN0X3N0YXJ0ID0gZXh0X2xpc3RfaGVhZDsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHRfbGlzdF90bXAgPSBleHRfbGlzdF9oZWFkLT5uZXh0OworCisJZG8geworCQlzdHJ1Y3QgZmllbWFwX2V4dGVudF9ncm91cAkqZXh0X2dyb3VwX3RtcCA9IE5VTEw7CisKKwkJLyogVGhpcyBleHRlbnQgYW5kIHByZXZpb3VzIGV4dGVudCBhcmUgbm90IGNvbnRpbnVvdXMsCisJCSAqIHNvLCBhbGwgcHJldmlvdXMgZXh0ZW50cyBhcmUgdHJlYXRlZCBhcyBhbiBleHRlbnQgZ3JvdXAuCisJCSAqLworCQlpZiAoKGV4dF9saXN0X3RtcC0+cHJldi0+ZGF0YS5sb2dpY2FsICsKKwkJCWV4dF9saXN0X3RtcC0+cHJldi0+ZGF0YS5sZW4pCisJCQkJIT0gZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWwpIHsKKwkJCWV4dF9ncm91cF90bXAgPQorCQkJCW1hbGxvYyhzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXApKTsKKwkJCWlmIChleHRfZ3JvdXBfdG1wID09IE5VTEwpCisJCQkJcmV0dXJuIC0xOworCisJCQltZW1zZXQoZXh0X2dyb3VwX3RtcCwgMCwKKwkJCQlzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXApKTsKKwkJCWV4dF9ncm91cF90bXAtPmxlbiA9IGxlbjsKKwkJCWV4dF9ncm91cF90bXAtPnN0YXJ0ID0gZXh0X2xpc3Rfc3RhcnQ7CisJCQlleHRfZ3JvdXBfdG1wLT5lbmQgPSBleHRfbGlzdF90bXAtPnByZXY7CisKKwkJCWlmIChpbnNlcnRfZXh0c19ncm91cChleHRfZ3JvdXBfaGVhZCwKKwkJCQlleHRfZ3JvdXBfdG1wKSA8IDApIHsKKwkJCQlGUkVFKGV4dF9ncm91cF90bXApOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWV4dF9saXN0X3N0YXJ0ID0gZXh0X2xpc3RfdG1wOworCQkJbGVuID0gZXh0X2xpc3RfdG1wLT5kYXRhLmxlbjsKKwkJCWV4dF9saXN0X3RtcCA9IGV4dF9saXN0X3RtcC0+bmV4dDsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogVGhpcyBleHRlbnQgYW5kIHByZXZpb3VzIGV4dGVudCBhcmUgY29udGludW91cywKKwkJICogc28sIHRoZXkgYmVsb25nIHRvIHRoZSBzYW1lIGV4dGVudCBncm91cCwgYW5kIHdlIGNoZWNrCisJCSAqIGlmIHRoZSBuZXh0IGV4dGVudCBiZWxvbmdzIHRvIHRoZSBzYW1lIGV4dGVudCBncm91cC4KKwkJICovCisJCWxlbiArPSBleHRfbGlzdF90bXAtPmRhdGEubGVuOworCQlleHRfbGlzdF90bXAgPSBleHRfbGlzdF90bXAtPm5leHQ7CisJfSB3aGlsZSAoZXh0X2xpc3RfdG1wICE9IGV4dF9saXN0X2hlYWQtPm5leHQpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBnZXRfZmlsZV9leHRlbnRzKCkgLQlHZXQgZmlsZSdzIGV4dGVudCBsaXN0LgorICoKKyAqIEBmZDoJCQlkZWZyYWcgdGFyZ2V0IGZpbGUncyBkZXNjcmlwdG9yLgorICogQGV4dF9saXN0X2hlYWQ6CXRoZSBoZWFkIG9mIHRoZSBleHRlbnQgbGlzdC4KKyAqLworc3RhdGljIGludCBnZXRfZmlsZV9leHRlbnRzKGludCBmZCwgc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqKmV4dF9saXN0X2hlYWQpCit7CisJX191MzIJaTsKKwlpbnQJcmV0OworCWludAlleHRfYnVmX3NpemUsIGZpZV9idWZfc2l6ZTsKKwlfX3U2NAlwb3MgPSAwOworCXN0cnVjdCBmaWVtYXAJKmZpZW1hcF9idWYgPSBOVUxMOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50CSpleHRfYnVmID0gTlVMTDsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0CSpleHRfbGlzdCA9IE5VTEw7CisKKwkvKiBDb252ZXJ0IHVuaXRzLCBpbiBieXRlcy4KKwkgKiBCZSBjYXJlZnVsIDogbm93LCBwaHlzaWNhbCBibG9jayBudW1iZXIgaW4gZXh0ZW50IGlzIDQ4Yml0LAorCSAqIGFuZCB0aGUgbWF4aW11bSBibG9ja3NpemUgZm9yIGV4dDQgaXMgNEsoMTJiaXQpLAorCSAqIHNvIHRoZXJlIGlzIG5vIG92ZXJmbG93LCBidXQgaW4gZnV0dXJlIGl0IG1heSBiZSBjaGFuZ2VkLgorCSAqLworCisJLyogQWxsb2Mgc3BhY2UgZm9yIGZpZW1hcCAqLworCWV4dF9idWZfc2l6ZSA9IEVYVEVOVF9NQVhfQ09VTlQgKiBzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnQpOworCWZpZV9idWZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZmllbWFwKSArIGV4dF9idWZfc2l6ZTsKKworCWZpZW1hcF9idWYgPSBtYWxsb2MoZmllX2J1Zl9zaXplKTsKKwlpZiAoZmllbWFwX2J1ZiA9PSBOVUxMKQorCQlyZXR1cm4gLTE7CisKKwlleHRfYnVmID0gZmllbWFwX2J1Zi0+Zm1fZXh0ZW50czsKKwltZW1zZXQoZmllbWFwX2J1ZiwgMCwgZmllX2J1Zl9zaXplKTsKKwlmaWVtYXBfYnVmLT5mbV9sZW5ndGggPSBGSUVNQVBfTUFYX09GRlNFVDsKKwlmaWVtYXBfYnVmLT5mbV9mbGFncyB8PSBGSUVNQVBfRkxBR19TWU5DOworCWZpZW1hcF9idWYtPmZtX2V4dGVudF9jb3VudCA9IEVYVEVOVF9NQVhfQ09VTlQ7CisKKwlkbyB7CisJCWZpZW1hcF9idWYtPmZtX3N0YXJ0ID0gcG9zOworCQltZW1zZXQoZXh0X2J1ZiwgMCwgZXh0X2J1Zl9zaXplKTsKKwkJcmV0ID0gaW9jdGwoZmQsIEZTX0lPQ19GSUVNQVAsIGZpZW1hcF9idWYpOworCQlpZiAocmV0IDwgMCB8fCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50cyA9PSAwKQorCQkJZ290byBvdXQ7CisJCWZvciAoaSA9IDA7IGkgPCBmaWVtYXBfYnVmLT5mbV9tYXBwZWRfZXh0ZW50czsgaSsrKSB7CisJCQlleHRfbGlzdCA9IE5VTEw7CisJCQlleHRfbGlzdCA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCkpOworCQkJaWYgKGV4dF9saXN0ID09IE5VTEwpCisJCQkJZ290byBvdXQ7CisKKwkJCWV4dF9saXN0LT5kYXRhLnBoeXNpY2FsID0gZXh0X2J1ZltpXS5mZV9waHlzaWNhbAorCQkJCQkJLyBibG9ja19zaXplOworCQkJZXh0X2xpc3QtPmRhdGEubG9naWNhbCA9IGV4dF9idWZbaV0uZmVfbG9naWNhbAorCQkJCQkJLyBibG9ja19zaXplOworCQkJZXh0X2xpc3QtPmRhdGEubGVuID0gZXh0X2J1ZltpXS5mZV9sZW5ndGgKKwkJCQkJCS8gYmxvY2tfc2l6ZTsKKworCQkJcmV0ID0gaW5zZXJ0X2V4dGVudF9ieV9waHlzaWNhbCgKKwkJCQkJZXh0X2xpc3RfaGVhZCwgZXh0X2xpc3QpOworCQkJaWYgKHJldCA8IDApIHsKKwkJCQlGUkVFKGV4dF9saXN0KTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorCQkvKiBSZWNvcmQgZmlsZSdzIGxvZ2ljYWwgb2Zmc2V0IHRoaXMgdGltZSAqLworCQlwb3MgPSBleHRfYnVmW0VYVEVOVF9NQVhfQ09VTlQtMV0uZmVfbG9naWNhbCArCisJCQlleHRfYnVmW0VYVEVOVF9NQVhfQ09VTlQtMV0uZmVfbGVuZ3RoOworCQkvKgorCQkgKiBJZiBmbV9leHRlbnRzIGFycmF5IGhhcyBiZWVuIGZpbGxlZCBhbmQKKwkJICogdGhlcmUgYXJlIGV4dGVudHMgbGVmdCwgY29udGludWUgdG8gY3ljbGUuCisJCSAqLworCX0gd2hpbGUgKGZpZW1hcF9idWYtPmZtX21hcHBlZF9leHRlbnRzCisJCQkJCT09IEVYVEVOVF9NQVhfQ09VTlQgJiYKKwkJIShleHRfYnVmW0VYVEVOVF9NQVhfQ09VTlQtMV0uZmVfZmxhZ3MKKwkJCQkJJiBGSUVNQVBfRVhURU5UX0xBU1QpKTsKKworCUZSRUUoZmllbWFwX2J1Zik7CisJcmV0dXJuIDA7CitvdXQ6CisJRlJFRShmaWVtYXBfYnVmKTsKKwlyZXR1cm4gLTE7Cit9CisKKy8qCisgKiBnZXRfbG9naWNhbF9jb3VudCgpIC0JR2V0IHRoZSBmaWxlIGxvZ2ljYWwgZXh0ZW50cyBjb3VudC4KKyAqCisgKiBAbG9naWNhbF9saXN0X2hlYWQ6CXRoZSBoZWFkIG9mIHRoZSBsb2dpY2FsIGV4dGVudCBsaXN0LgorICovCitzdGF0aWMgaW50IGdldF9sb2dpY2FsX2NvdW50KHN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKmxvZ2ljYWxfbGlzdF9oZWFkKQoreworCWludCByZXQgPSAwOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKmV4dF9saXN0X3RtcCAgPSBsb2dpY2FsX2xpc3RfaGVhZDsKKworCWRvIHsKKwkJcmV0Kys7CisJCWV4dF9saXN0X3RtcCA9IGV4dF9saXN0X3RtcC0+bmV4dDsKKwl9IHdoaWxlIChleHRfbGlzdF90bXAgIT0gbG9naWNhbF9saXN0X2hlYWQpOworCisJcmV0dXJuIHJldDsKK30KKworLyoKKyAqIGdldF9waHlzaWNhbF9jb3VudCgpIC0JR2V0IHRoZSBmaWxlIHBoeXNpY2FsIGV4dGVudHMgY291bnQuCisgKgorICogQHBoeXNpY2FsX2xpc3RfaGVhZDoJdGhlIGhlYWQgb2YgdGhlIHBoeXNpY2FsIGV4dGVudCBsaXN0LgorICovCitzdGF0aWMgaW50IGdldF9waHlzaWNhbF9jb3VudChzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpwaHlzaWNhbF9saXN0X2hlYWQpCit7CisJaW50IHJldCA9IDA7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqZXh0X2xpc3RfdG1wID0gcGh5c2ljYWxfbGlzdF9oZWFkOworCisJZG8geworCQlpZiAoKGV4dF9saXN0X3RtcC0+ZGF0YS5waHlzaWNhbCArIGV4dF9saXN0X3RtcC0+ZGF0YS5sZW4pCisJCQkJIT0gZXh0X2xpc3RfdG1wLT5uZXh0LT5kYXRhLnBoeXNpY2FsIHx8CisJCSAgICAoZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWwgKyBleHRfbGlzdF90bXAtPmRhdGEubGVuKQorCQkJCSE9IGV4dF9saXN0X3RtcC0+bmV4dC0+ZGF0YS5sb2dpY2FsKSB7CisJCQkvKiBUaGlzIGV4dGVudCBhbmQgbmV4dCBleHRlbnQgYXJlIG5vdCBjb250aW51b3VzLiAqLworCQkJcmV0Kys7CisJCX0KKworCQlleHRfbGlzdF90bXAgPSBleHRfbGlzdF90bXAtPm5leHQ7CisJfSB3aGlsZSAoZXh0X2xpc3RfdG1wICE9IHBoeXNpY2FsX2xpc3RfaGVhZCk7CisKKwlyZXR1cm4gcmV0OworfQorCisvKgorICogY2hhbmdlX3BoeXNpY2FsX3RvX2xvZ2ljYWwoKSAtCUNoYW5nZSBsaXN0IGZyb20gcGh5c2ljYWwgdG8gbG9naWNhbC4KKyAqCisgKiBAcGh5c2ljYWxfbGlzdF9oZWFkOgl0aGUgaGVhZCBvZiBwaHlzaWNhbCBleHRlbnQgbGlzdC4KKyAqIEBsb2dpY2FsX2xpc3RfaGVhZDoJdGhlIGhlYWQgb2YgbG9naWNhbCBleHRlbnQgbGlzdC4KKyAqLworc3RhdGljIGludCBjaGFuZ2VfcGh5c2ljYWxfdG9fbG9naWNhbCgKKwkJCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKipwaHlzaWNhbF9saXN0X2hlYWQsCisJCQlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICoqbG9naWNhbF9saXN0X2hlYWQpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHRfbGlzdF90bXAgPSAqcGh5c2ljYWxfbGlzdF9oZWFkOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKmV4dF9saXN0X25leHQgPSBleHRfbGlzdF90bXAtPm5leHQ7CisKKwl3aGlsZSAoMSkgeworCQlpZiAoZXh0X2xpc3RfdG1wID09IGV4dF9saXN0X25leHQpIHsKKwkJCXJldCA9IGluc2VydF9leHRlbnRfYnlfbG9naWNhbCgKKwkJCQlsb2dpY2FsX2xpc3RfaGVhZCwgZXh0X2xpc3RfdG1wKTsKKwkJCWlmIChyZXQgPCAwKQorCQkJCXJldHVybiAtMTsKKworCQkJKnBoeXNpY2FsX2xpc3RfaGVhZCA9IE5VTEw7CisJCQlicmVhazsKKwkJfQorCisJCWV4dF9saXN0X3RtcC0+cHJldi0+bmV4dCA9IGV4dF9saXN0X3RtcC0+bmV4dDsKKwkJZXh0X2xpc3RfdG1wLT5uZXh0LT5wcmV2ID0gZXh0X2xpc3RfdG1wLT5wcmV2OworCQkqcGh5c2ljYWxfbGlzdF9oZWFkID0gZXh0X2xpc3RfbmV4dDsKKworCQlyZXQgPSBpbnNlcnRfZXh0ZW50X2J5X2xvZ2ljYWwoCisJCQlsb2dpY2FsX2xpc3RfaGVhZCwgZXh0X2xpc3RfdG1wKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCUZSRUUoZXh0X2xpc3RfdG1wKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlleHRfbGlzdF90bXAgPSBleHRfbGlzdF9uZXh0OworCQlleHRfbGlzdF9uZXh0ID0gZXh0X2xpc3RfbmV4dC0+bmV4dDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyogZ2V0X2ZpbGVfYmxvY2tzKCkgLSAgR2V0IHRvdGFsIGZpbGUgYmxvY2tzLgorICoKKyAqIEBleHRfbGlzdF9oZWFkOgl0aGUgZXh0ZW50IGxpc3QgaGVhZCBvZiB0aGUgdGFyZ2V0IGZpbGUKKyAqLworc3RhdGljIGV4dDRfZnNibGtfdCBnZXRfZmlsZV9ibG9ja3Moc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqZXh0X2xpc3RfaGVhZCkKK3sKKwlleHQ0X2ZzYmxrX3QgYmxrX2NvdW50ID0gMDsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHRfbGlzdF90bXAgPSBleHRfbGlzdF9oZWFkOworCisJZG8geworCQlibGtfY291bnQgKz0gZXh0X2xpc3RfdG1wLT5kYXRhLmxlbjsKKwkJZXh0X2xpc3RfdG1wID0gZXh0X2xpc3RfdG1wLT5uZXh0OworCX0gd2hpbGUgKGV4dF9saXN0X3RtcCAhPSBleHRfbGlzdF9oZWFkKTsKKworCXJldHVybiBibGtfY291bnQ7Cit9CisKKy8qCisgKiBmcmVlX2V4dCgpIC0JCUZyZWUgdGhlIGV4dGVudCBsaXN0LgorICoKKyAqIEBleHRfbGlzdF9oZWFkOgl0aGUgZXh0ZW50IGxpc3QgaGVhZCBvZiB3aGljaCB3aWxsIGJlIGZyZWUuCisgKi8KK3N0YXRpYyB2b2lkIGZyZWVfZXh0KHN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKmV4dF9saXN0X2hlYWQpCit7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdAkqZXh0X2xpc3RfdG1wID0gTlVMTDsKKworCWlmIChleHRfbGlzdF9oZWFkID09IE5VTEwpCisJCXJldHVybjsKKworCXdoaWxlIChleHRfbGlzdF9oZWFkLT5uZXh0ICE9IGV4dF9saXN0X2hlYWQpIHsKKwkJZXh0X2xpc3RfdG1wID0gZXh0X2xpc3RfaGVhZDsKKwkJZXh0X2xpc3RfaGVhZC0+cHJldi0+bmV4dCA9IGV4dF9saXN0X2hlYWQtPm5leHQ7CisJCWV4dF9saXN0X2hlYWQtPm5leHQtPnByZXYgPSBleHRfbGlzdF9oZWFkLT5wcmV2OworCQlleHRfbGlzdF9oZWFkID0gZXh0X2xpc3RfaGVhZC0+bmV4dDsKKwkJZnJlZShleHRfbGlzdF90bXApOworCX0KKwlmcmVlKGV4dF9saXN0X2hlYWQpOworfQorCisvKgorICogZnJlZV9leHRzX2dyb3VwKCkgLQkJRnJlZSB0aGUgZXh0c19ncm91cC4KKyAqCisgKiBAKmV4dF9ncm91cF9oZWFkOgl0aGUgZXh0c19ncm91cCBsaXN0IGhlYWQgd2hpY2ggd2lsbCBiZSBmcmVlLgorICovCitzdGF0aWMgdm9pZCBmcmVlX2V4dHNfZ3JvdXAoc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAgKmV4dF9ncm91cF9oZWFkKQoreworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2dyb3VwCSpleHRfZ3JvdXBfdG1wID0gTlVMTDsKKworCWlmIChleHRfZ3JvdXBfaGVhZCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwl3aGlsZSAoZXh0X2dyb3VwX2hlYWQtPm5leHQgIT0gZXh0X2dyb3VwX2hlYWQpIHsKKwkJZXh0X2dyb3VwX3RtcCA9IGV4dF9ncm91cF9oZWFkOworCQlleHRfZ3JvdXBfaGVhZC0+cHJldi0+bmV4dCA9IGV4dF9ncm91cF9oZWFkLT5uZXh0OworCQlleHRfZ3JvdXBfaGVhZC0+bmV4dC0+cHJldiA9IGV4dF9ncm91cF9oZWFkLT5wcmV2OworCQlleHRfZ3JvdXBfaGVhZCA9IGV4dF9ncm91cF9oZWFkLT5uZXh0OworCQlmcmVlKGV4dF9ncm91cF90bXApOworCX0KKwlmcmVlKGV4dF9ncm91cF9oZWFkKTsKK30KKworLyoKKyAqIGdldF9iZXN0X2NvdW50KCkgLQlHZXQgdGhlIGZpbGUgYmVzdCBleHRlbnRzIGNvdW50LgorICoKKyAqIEBibG9ja19jb3VudDoJCXRoZSBmaWxlJ3MgcGh5c2ljYWwgYmxvY2sgY291bnQuCisgKi8KK3N0YXRpYyBpbnQgZ2V0X2Jlc3RfY291bnQoZXh0NF9mc2Jsa190IGJsb2NrX2NvdW50KQoreworCWludCByZXQ7CisJdW5zaWduZWQgaW50IGZsZXhfYmdfbnVtOworCisJLyogQ2FsY3VhdGUgYmVzdCBleHRlbnRzIGNvdW50ICovCisJaWYgKGZlYXR1cmVfaW5jb21wYXQgJiBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfRkxFWF9CRykgeworCQlmbGV4X2JnX251bSA9IDEgPDwgbG9nX2dyb3Vwc19wZXJfZmxleDsKKwkJcmV0ID0gKChibG9ja19jb3VudCAtIDEpIC8KKwkJCSgoZXh0NF9mc2Jsa190KWJsb2Nrc19wZXJfZ3JvdXAgKgorCQkJCWZsZXhfYmdfbnVtKSkgKyAxOworCX0gZWxzZQorCQlyZXQgPSAoKGJsb2NrX2NvdW50IC0gMSkgLyBibG9ja3NfcGVyX2dyb3VwKSArIDE7CisKKwlyZXR1cm4gcmV0OworfQorCisKKy8qCisgKiBmaWxlX3N0YXRpc3RpYygpIC0JR2V0IHN0YXRpc3RpYyBpbmZvIG9mIHRoZSBmaWxlJ3MgZnJhZ21lbnRzLgorICoKKyAqIEBmaWxlOgkJdGhlIGZpbGUncyBuYW1lLgorICogQGJ1ZjoJCXRoZSBwb2ludGVyIG9mIHRoZSBzdHJ1Y3Qgc3RhdDY0LgorICogQGZsYWc6CQlmaWxlIHR5cGUuCisgKiBAZnR3YnVmOgkJdGhlIHBvaW50ZXIgb2YgYSBzdHJ1Y3QgRlRXLgorICovCitzdGF0aWMgaW50IGZpbGVfc3RhdGlzdGljKGNvbnN0IGNoYXIgKmZpbGUsIGNvbnN0IHN0cnVjdCBzdGF0NjQgKmJ1ZiwKKwkJCWludCBmbGFnIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCXN0cnVjdCBGVFcgKmZ0d2J1ZiBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJaW50CWZkOworCWludAlyZXQ7CisJaW50CW5vd19leHRfY291bnQsIGJlc3RfZXh0X2NvdW50ID0gMCwgcGh5c2ljYWxfZXh0X2NvdW50OworCWludAlpLCBqOworCV9fdTY0CXNpemVfcGVyX2V4dCA9IDA7CisJZmxvYXQJcmF0aW8gPSAwLjA7CisJZXh0NF9mc2Jsa190CWJsa19jb3VudCA9IDA7CisJY2hhcgltc2dfYnVmZmVyW1BBVEhfTUFYICsgMjRdOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QgKnBoeXNpY2FsX2xpc3RfaGVhZCA9IE5VTEw7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqbG9naWNhbF9saXN0X2hlYWQgPSBOVUxMOworCisJZGVmcmFnZWRfZmlsZV9jb3VudCsrOworCisJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQlpZiAodG90YWxfY291bnQgPT0gMSAmJiByZWd1bGFyX2NvdW50ID09IDEpCisJCQlwcmludGYoIjxGaWxlPlxuIik7CisJCWVsc2UgeworCQkJcHJpbnRmKCJbJXUvJXVdIiwgZGVmcmFnZWRfZmlsZV9jb3VudCwgdG90YWxfY291bnQpOworCQkJZmZsdXNoKHN0ZG91dCk7CisJCX0KKwl9CisJaWYgKGxvc3RfZm91bmRfZGlyWzBdICE9ICdcMCcgJiYKKwkgICAgIW1lbWNtcChmaWxlLCBsb3N0X2ZvdW5kX2Rpciwgc3Rybmxlbihsb3N0X2ZvdW5kX2RpciwgUEFUSF9NQVgpKSkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQlTVEFUSVNUSUNfRVJSX01TRyhOR01TR19MT1NUX0ZPVU5EKTsKKwkJfQorCQkJcmV0dXJuIDA7CisJfQorCisJaWYgKCFTX0lTUkVHKGJ1Zi0+c3RfbW9kZSkpIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJU1RBVElTVElDX0VSUl9NU0coTkdNU0dfRklMRV9VTlJFRyk7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJLyogQWNjZXNzIGF1dGhvcml0eSAqLworCWlmIChjdXJyZW50X3VpZCAhPSBST09UX1VJRCAmJgorCQlidWYtPnN0X3VpZCAhPSBjdXJyZW50X3VpZCkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQlTVEFUSVNUSUNfRVJSX01TRygKKwkJCQkiRmlsZSBpcyBub3QgY3VycmVudCB1c2VyJ3MgZmlsZSIKKwkJCQkiIG9yIGN1cnJlbnQgdXNlciBpcyBub3Qgcm9vdCIpOworCQl9CisJCXJldHVybiAwOworCX0KKworCS8qIEVtcHR5IGZpbGUgKi8KKwlpZiAoYnVmLT5zdF9zaXplID09IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJU1RBVElTVElDX0VSUl9NU0coIkZpbGUgc2l6ZSBpcyAwIik7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJLyogSGFzIG5vIGJsb2NrcyAqLworCWlmIChidWYtPnN0X2Jsb2NrcyA9PSAwKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCVNUQVRJU1RJQ19FUlJfTVNHKCJGaWxlIGhhcyBubyBibG9ja3MiKTsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlmZCA9IG9wZW42NChmaWxlLCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQlTVEFUSVNUSUNfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfT1BFTik7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJLyogR2V0IGZpbGUncyBwaHlzaWNhbCBleHRlbnRzICAqLworCXJldCA9IGdldF9maWxlX2V4dGVudHMoZmQsICZwaHlzaWNhbF9saXN0X2hlYWQpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCVNUQVRJU1RJQ19FUlJfTVNHX1dJVEhfRVJSTk8oTkdNU0dfRklMRV9FWFRFTlQpOworCQl9CisJCWdvdG8gb3V0OworCX0KKworCS8qIEdldCB0aGUgY291bnQgb2YgZmlsZSdzIGNvbnRpbnVvdXMgcGh5c2ljYWwgcmVnaW9uICovCisJcGh5c2ljYWxfZXh0X2NvdW50ID0gZ2V0X3BoeXNpY2FsX2NvdW50KHBoeXNpY2FsX2xpc3RfaGVhZCk7CisKKwkvKiBDaGFuZ2UgbGlzdCBmcm9tIHBoeXNpY2FsIHRvIGxvZ2ljYWwgKi8KKwlyZXQgPSBjaGFuZ2VfcGh5c2ljYWxfdG9fbG9naWNhbCgmcGh5c2ljYWxfbGlzdF9oZWFkLAorCQkJCQkJCSZsb2dpY2FsX2xpc3RfaGVhZCk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJU1RBVElTVElDX0VSUl9NU0dfV0lUSF9FUlJOTyhOR01TR19GSUxFX0VYVEVOVCk7CisJCX0KKwkJZ290byBvdXQ7CisJfQorCisJLyogQ291bnQgZmlsZSBmcmFnbWVudHMgYmVmb3JlIGRlZnJhZyAqLworCW5vd19leHRfY291bnQgPSBnZXRfbG9naWNhbF9jb3VudChsb2dpY2FsX2xpc3RfaGVhZCk7CisKKwlpZiAoY3VycmVudF91aWQgPT0gUk9PVF9VSUQpIHsKKwkJLyogQ2FsY3VsYXRlIHRoZSBzaXplIHBlciBleHRlbnQgKi8KKwkJYmxrX2NvdW50ID0gZ2V0X2ZpbGVfYmxvY2tzKGxvZ2ljYWxfbGlzdF9oZWFkKTsKKworCQliZXN0X2V4dF9jb3VudCA9IGdldF9iZXN0X2NvdW50KGJsa19jb3VudCk7CisKKwkJLyogZTRkZWZyYWcgcm91bmRzIHNpemVfcGVyX2V4dCB1cCB0byBhIGJsb2NrIHNpemUgYm91bmRhcnkgKi8KKwkJc2l6ZV9wZXJfZXh0ID0gYmxrX2NvdW50ICogKGJ1Zi0+c3RfYmxrc2l6ZSAvIDEwMjQpIC8KKwkJCQkJCQlub3dfZXh0X2NvdW50OworCisJCXJhdGlvID0gKGZsb2F0KShwaHlzaWNhbF9leHRfY291bnQgLSBiZXN0X2V4dF9jb3VudCkgKiAxMDAgLworCQkJCQkJCWJsa19jb3VudDsKKworCQlleHRlbnRzX2JlZm9yZV9kZWZyYWcgKz0gbm93X2V4dF9jb3VudDsKKwkJZXh0ZW50c19hZnRlcl9kZWZyYWcgKz0gYmVzdF9leHRfY291bnQ7CisJCWZpbGVzX2Jsb2NrX2NvdW50ICs9IGJsa19jb3VudDsKKwl9CisKKwlpZiAodG90YWxfY291bnQgPT0gMSAmJiByZWd1bGFyX2NvdW50ID09IDEpIHsKKwkJLyogRmlsZSBvbmx5ICovCisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCWludCBjb3VudCA9IDA7CisJCQlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0ICpleHRfbGlzdF90bXAgPQorCQkJCQkJbG9naWNhbF9saXN0X2hlYWQ7CisKKwkJCS8qIFByaW50IGV4dGVudHMgaW5mbyAqLworCQkJZG8geworCQkJCWNvdW50Kys7CisJCQkJcHJpbnRmKCJbZXh0ICVkXTpcdHN0YXJ0ICVsbHU6XHRsb2dpY2FsICIKKwkJCQkJCSIlbGx1Olx0bGVuICVsbHVcbiIsIGNvdW50LAorCQkJCQkJZXh0X2xpc3RfdG1wLT5kYXRhLnBoeXNpY2FsLAorCQkJCQkJZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWwsCisJCQkJCQlleHRfbGlzdF90bXAtPmRhdGEubGVuKTsKKwkJCQlleHRfbGlzdF90bXAgPSBleHRfbGlzdF90bXAtPm5leHQ7CisJCQl9IHdoaWxlIChleHRfbGlzdF90bXAgIT0gbG9naWNhbF9saXN0X2hlYWQpOworCisJCX0gZWxzZSB7CisJCQlwcmludGYoIiUtNDBzJTEwcy8lLTEwcyU5c1xuIiwKKwkJCQkJIjxGaWxlPiIsICJub3ciLCAiYmVzdCIsICJzaXplL2V4dCIpOworCQkJaWYgKGN1cnJlbnRfdWlkID09IFJPT1RfVUlEKSB7CisJCQkJaWYgKHN0cmxlbihmaWxlKSA+IDQwKQorCQkJCQlwcmludGYoIiVzXG4lNTBkLyUtMTBkJTZsbHUgS0JcbiIsCisJCQkJCQlmaWxlLCBub3dfZXh0X2NvdW50LAorCQkJCQkJYmVzdF9leHRfY291bnQsIHNpemVfcGVyX2V4dCk7CisJCQkJZWxzZQorCQkJCQlwcmludGYoIiUtNDBzJTEwZC8lLTEwZCU2bGx1IEtCXG4iLAorCQkJCQkJZmlsZSwgbm93X2V4dF9jb3VudCwKKwkJCQkJCWJlc3RfZXh0X2NvdW50LCBzaXplX3Blcl9leHQpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoc3RybGVuKGZpbGUpID4gNDApCisJCQkJCXByaW50ZigiJXNcbiU1MGQvJS0xMHMlN3NcbiIsCisJCQkJCQkJZmlsZSwgbm93X2V4dF9jb3VudCwKKwkJCQkJCQkiLSIsICItIik7CisJCQkJZWxzZQorCQkJCQlwcmludGYoIiUtNDBzJTEwZC8lLTEwcyU3c1xuIiwKKwkJCQkJCQlmaWxlLCBub3dfZXh0X2NvdW50LAorCQkJCQkJCSItIiwgIi0iKTsKKwkJCX0KKwkJfQorCQlzdWNjZWVkX2NudCsrOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCS8qIFByaW50IHN0YXRpc3RpYyBpbmZvICovCisJCXNwcmludGYobXNnX2J1ZmZlciwgIlsldS8ldV0lcyIsCisJCQkJZGVmcmFnZWRfZmlsZV9jb3VudCwgdG90YWxfY291bnQsIGZpbGUpOworCQlpZiAoY3VycmVudF91aWQgPT0gUk9PVF9VSUQpIHsKKwkJCWlmIChzdHJsZW4obXNnX2J1ZmZlcikgPiA0MCkKKwkJCQlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0slc1xuIgorCQkJCQkJIiU1MGQvJS0xMGQlNmxsdSBLQlxuIiwKKwkJCQkJCW1zZ19idWZmZXIsIG5vd19leHRfY291bnQsCisJCQkJCQliZXN0X2V4dF9jb3VudCwgc2l6ZV9wZXJfZXh0KTsKKwkJCWVsc2UKKwkJCQlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0slLTQwcyIKKwkJCQkJCSIlMTBkLyUtMTBkJTZsbHUgS0JcbiIsCisJCQkJCQltc2dfYnVmZmVyLCBub3dfZXh0X2NvdW50LAorCQkJCQkJYmVzdF9leHRfY291bnQsIHNpemVfcGVyX2V4dCk7CisJCX0gZWxzZSB7CisJCQlpZiAoc3RybGVuKG1zZ19idWZmZXIpID4gNDApCisJCQkJcHJpbnRmKCJcMDMzWzc5OzBIXDAzM1tLJXNcbiU1MGQvJS0xMHMlN3NcbiIsCisJCQkJCQltc2dfYnVmZmVyLCBub3dfZXh0X2NvdW50LAorCQkJCQkJCSItIiwgIi0iKTsKKwkJCWVsc2UKKwkJCQlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0slLTQwcyUxMGQvJS0xMHMlN3NcbiIsCisJCQkJCQltc2dfYnVmZmVyLCBub3dfZXh0X2NvdW50LAorCQkJCQkJCSItIiwgIi0iKTsKKwkJfQorCX0KKworCWZvciAoaSA9IDA7IGkgPCBTSE9XX0ZSQUdfRklMRVM7IGkrKykgeworCQlpZiAocmF0aW8gPj0gZnJhZ19yYW5rW2ldLnJhdGlvKSB7CisJCQlmb3IgKGogPSBTSE9XX0ZSQUdfRklMRVMgLSAxOyBqID4gaTsgai0tKSB7CisJCQkJbWVtc2V0KCZmcmFnX3Jhbmtbal0sIDAsCisJCQkJCXNpemVvZihzdHJ1Y3QgZnJhZ19zdGF0aXN0aWNfaW5vKSk7CisJCQkJc3RybmNweShmcmFnX3Jhbmtbal0ubXNnX2J1ZmZlciwKKwkJCQkJZnJhZ19yYW5rW2ogLSAxXS5tc2dfYnVmZmVyLAorCQkJCQlzdHJubGVuKGZyYWdfcmFua1tqIC0gMV0ubXNnX2J1ZmZlciwKKwkJCQkJUEFUSF9NQVgpKTsKKwkJCQlmcmFnX3Jhbmtbal0ubm93X2NvdW50ID0KKwkJCQkJZnJhZ19yYW5rW2ogLSAxXS5ub3dfY291bnQ7CisJCQkJZnJhZ19yYW5rW2pdLmJlc3RfY291bnQgPQorCQkJCQlmcmFnX3JhbmtbaiAtIDFdLmJlc3RfY291bnQ7CisJCQkJZnJhZ19yYW5rW2pdLnNpemVfcGVyX2V4dCA9CisJCQkJCWZyYWdfcmFua1tqIC0gMV0uc2l6ZV9wZXJfZXh0OworCQkJCWZyYWdfcmFua1tqXS5yYXRpbyA9CisJCQkJCWZyYWdfcmFua1tqIC0gMV0ucmF0aW87CisJCQl9CisJCQltZW1zZXQoJmZyYWdfcmFua1tpXSwgMCwKKwkJCQkJc2l6ZW9mKHN0cnVjdCBmcmFnX3N0YXRpc3RpY19pbm8pKTsKKwkJCXN0cm5jcHkoZnJhZ19yYW5rW2ldLm1zZ19idWZmZXIsIGZpbGUsCisJCQkJCQlzdHJubGVuKGZpbGUsIFBBVEhfTUFYKSk7CisJCQlmcmFnX3JhbmtbaV0ubm93X2NvdW50ID0gbm93X2V4dF9jb3VudDsKKwkJCWZyYWdfcmFua1tpXS5iZXN0X2NvdW50ID0gYmVzdF9leHRfY291bnQ7CisJCQlmcmFnX3JhbmtbaV0uc2l6ZV9wZXJfZXh0ID0gc2l6ZV9wZXJfZXh0OworCQkJZnJhZ19yYW5rW2ldLnJhdGlvID0gcmF0aW87CisJCQlicmVhazsKKwkJfQorCX0KKworCXN1Y2NlZWRfY250Kys7CisKK291dDoKKwljbG9zZShmZCk7CisJZnJlZV9leHQocGh5c2ljYWxfbGlzdF9oZWFkKTsKKwlmcmVlX2V4dChsb2dpY2FsX2xpc3RfaGVhZCk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBwcmludF9wcm9ncmVzcyAtCVByaW50IGRlZnJhZyBwcm9ncmVzcworICoKKyAqIEBmaWxlOgkJZmlsZSBuYW1lLgorICogQHN0YXJ0OgkJbG9naWNhbCBvZmZzZXQgZm9yIGRlZnJhZyB0YXJnZXQgZmlsZQorICogQGZpbGVfc2l6ZToJCWRlZnJhZyB0YXJnZXQgZmlsZXNpemUKKyAqLworc3RhdGljIHZvaWQgcHJpbnRfcHJvZ3Jlc3MoY29uc3QgY2hhciAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2ZmX3QgZmlsZV9zaXplKQoreworCWludCBwZXJjZW50ID0gKHN0YXJ0ICogMTAwKSAvIGZpbGVfc2l6ZTsKKwlwcmludGYoIlwwMzNbNzk7MEhcMDMzW0tbJXUvJXVdJXM6XHQlM2QlJSIsCisJCWRlZnJhZ2VkX2ZpbGVfY291bnQsIHRvdGFsX2NvdW50LCBmaWxlLCBtaW4ocGVyY2VudCwgMTAwKSk7CisJZmZsdXNoKHN0ZG91dCk7CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBjYWxsX2RlZnJhZygpIC0JRXhlY3V0ZSB0aGUgZGVmcmFnIHByb2dyYW0uCisgKgorICogQGZkOgkJCXRhcmdldCBmaWxlIGRlc2NyaXB0b3IuCisgKiBAZG9ub3JfZmQ6CQlkb25vciBmaWxlIGRlc2NyaXB0b3IuCisgKiBAZmlsZToJCQl0YXJnZXQgZmlsZSBuYW1lLgorICogQGJ1ZjoJCQlwb2ludGVyIG9mIHRoZSBzdHJ1Y3Qgc3RhdDY0LgorICogQGV4dF9saXN0X2hlYWQ6CWhlYWQgb2YgdGhlIGV4dGVudCBsaXN0LgorICovCitzdGF0aWMgaW50IGNhbGxfZGVmcmFnKGludCBmZCwgaW50IGRvbm9yX2ZkLCBjb25zdCBjaGFyICpmaWxlLAorCWNvbnN0IHN0cnVjdCBzdGF0NjQgKmJ1Ziwgc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdCAqZXh0X2xpc3RfaGVhZCkKK3sKKwlsb2ZmX3QJc3RhcnQgPSAwOworCXVuc2lnbmVkIGludAlwYWdlX251bTsKKwl1bnNpZ25lZCBjaGFyCSp2ZWMgPSBOVUxMOworCWludAlkZWZyYWdlZF9yZXQgPSAwOworCWludAlyZXQ7CisJc3RydWN0IG1vdmVfZXh0ZW50CW1vdmVfZGF0YTsKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudF9saXN0CSpleHRfbGlzdF90bXAgPSBOVUxMOworCisJbWVtc2V0KCZtb3ZlX2RhdGEsIDAsIHNpemVvZihzdHJ1Y3QgbW92ZV9leHRlbnQpKTsKKwltb3ZlX2RhdGEuZG9ub3JfZmQgPSBkb25vcl9mZDsKKworCS8qIFByaW50IGRlZnJhZyBwcm9ncmVzcyAqLworCXByaW50X3Byb2dyZXNzKGZpbGUsIHN0YXJ0LCBidWYtPnN0X3NpemUpOworCisJZXh0X2xpc3RfdG1wID0gZXh0X2xpc3RfaGVhZDsKKwlkbyB7CisJCW1vdmVfZGF0YS5vcmlnX3N0YXJ0ID0gZXh0X2xpc3RfdG1wLT5kYXRhLmxvZ2ljYWw7CisJCS8qIExvZ2ljYWwgb2Zmc2V0IG9mIG9yaWcgYW5kIGRvbm9yIHNob3VsZCBiZSBzYW1lICovCisJCW1vdmVfZGF0YS5kb25vcl9zdGFydCA9IG1vdmVfZGF0YS5vcmlnX3N0YXJ0OworCQltb3ZlX2RhdGEubGVuID0gZXh0X2xpc3RfdG1wLT5kYXRhLmxlbjsKKwkJbW92ZV9kYXRhLm1vdmVkX2xlbiA9IDA7CisKKwkJcmV0ID0gcGFnZV9pbl9jb3JlKGZkLCBtb3ZlX2RhdGEsICZ2ZWMsICZwYWdlX251bSk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQkJcHJpbnRmKCJcbiIpOworCQkJCVBSSU5UX0VSUl9NU0dfV0lUSF9FUlJOTygKKwkJCQkJCSJGYWlsZWQgdG8gZ2V0IGZpbGUgbWFwIik7CisJCQl9IGVsc2UgeworCQkJCXByaW50ZigiXHRbIE5HIF1cbiIpOworCQkJfQorCQkJcmV0dXJuIC0xOworCQl9CisKKwkJLyogRVhUNF9JT0NfTU9WRV9FWFQgKi8KKwkJZGVmcmFnZWRfcmV0ID0KKwkJCWlvY3RsKGZkLCBFWFQ0X0lPQ19NT1ZFX0VYVCwgJm1vdmVfZGF0YSk7CisKKwkJLyogRnJlZSBwYWdlcyAqLworCQlyZXQgPSBkZWZyYWdfZmFkdmlzZShmZCwgbW92ZV9kYXRhLCB2ZWMsIHBhZ2VfbnVtKTsKKwkJaWYgKHZlYykgeworCQkJZnJlZSh2ZWMpOworCQkJdmVjID0gTlVMTDsKKwkJfQorCQlpZiAocmV0IDwgMCkgeworCQkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJCXByaW50ZigiXG4iKTsKKwkJCQlQUklOVF9FUlJfTVNHX1dJVEhfRVJSTk8oCisJCQkJCSJGYWlsZWQgdG8gZnJlZSBwYWdlIik7CisJCQl9IGVsc2UgeworCQkJCXByaW50ZigiXHRbIE5HIF1cbiIpOworCQkJfQorCQkJcmV0dXJuIC0xOworCQl9CisKKwkJaWYgKGRlZnJhZ2VkX3JldCA8IDApIHsKKwkJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCQlwcmludGYoIlxuIik7CisJCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKAorCQkJCQkiRmFpbGVkIHRvIGRlZnJhZyB3aXRoICIKKwkJCQkJIkVYVDRfSU9DX01PVkVfRVhUIGlvY3RsIik7CisJCQkJaWYgKGVycm5vID09IEVOT1RUWSkKKwkJCQkJcHJpbnRmKCJcdEF0IGxlYXN0IDIuNi4zMS1yYzEgb2YgIgorCQkJCQkJInZhbmlsbGEga2VybmVsIGlzIHJlcXVpcmVkXG4iKTsKKwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCJcdFsgTkcgXVxuIik7CisJCQl9CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJLyogQWRqdXN0IGxvZ2ljYWwgb2Zmc2V0IGZvciBuZXh0IGlvY3RsICovCisJCW1vdmVfZGF0YS5vcmlnX3N0YXJ0ICs9IG1vdmVfZGF0YS5tb3ZlZF9sZW47CisJCW1vdmVfZGF0YS5kb25vcl9zdGFydCA9IG1vdmVfZGF0YS5vcmlnX3N0YXJ0OworCisJCXN0YXJ0ID0gbW92ZV9kYXRhLm9yaWdfc3RhcnQgKiBidWYtPnN0X2Jsa3NpemU7CisKKwkJLyogUHJpbnQgZGVmcmFnIHByb2dyZXNzICovCisJCXByaW50X3Byb2dyZXNzKGZpbGUsIHN0YXJ0LCBidWYtPnN0X3NpemUpOworCisJCS8qIEVuZCBvZiBmaWxlICovCisJCWlmIChzdGFydCA+PSBidWYtPnN0X3NpemUpCisJCQlicmVhazsKKworCQlleHRfbGlzdF90bXAgPSBleHRfbGlzdF90bXAtPm5leHQ7CisJfSB3aGlsZSAoZXh0X2xpc3RfdG1wICE9IGV4dF9saXN0X2hlYWQpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBmaWxlX2RlZnJhZygpIC0JCUNoZWNrIGZpbGUgYXR0cmlidXRlcyBhbmQgY2FsbCBpb2N0bCB0byBkZWZyYWcuCisgKgorICogQGZpbGU6CQl0aGUgZmlsZSdzIG5hbWUuCisgKiBAYnVmOgkJdGhlIHBvaW50ZXIgb2YgdGhlIHN0cnVjdCBzdGF0NjQuCisgKiBAZmxhZzoJCWZpbGUgdHlwZS4KKyAqIEBmdHdidWY6CQl0aGUgcG9pbnRlciBvZiBhIHN0cnVjdCBGVFcuCisgKi8KK3N0YXRpYyBpbnQgZmlsZV9kZWZyYWcoY29uc3QgY2hhciAqZmlsZSwgY29uc3Qgc3RydWN0IHN0YXQ2NCAqYnVmLAorCQkJaW50IGZsYWcgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJc3RydWN0IEZUVyAqZnR3YnVmIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlpbnQJZmQ7CisJaW50CWRvbm9yX2ZkID0gLTE7CisJaW50CXJldDsKKwlpbnQJYmVzdDsKKwlpbnQJZmlsZV9mcmFnc19zdGFydCwgZmlsZV9mcmFnc19lbmQ7CisJaW50CW9yaWdfcGh5c2ljYWxfY250LCBkb25vcl9waHlzaWNhbF9jbnQgPSAwOworCWNoYXIJdG1wX2lub2RlX25hbWVbUEFUSF9NQVggKyA4XTsKKwlleHQ0X2ZzYmxrX3QJCQlibGtfY291bnQgPSAwOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QJKm9yaWdfbGlzdF9waHlzaWNhbCA9IE5VTEw7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfbGlzdAkqb3JpZ19saXN0X2xvZ2ljYWwgPSBOVUxMOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QJKmRvbm9yX2xpc3RfcGh5c2ljYWwgPSBOVUxMOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50X2xpc3QJKmRvbm9yX2xpc3RfbG9naWNhbCA9IE5VTEw7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAJKm9yaWdfZ3JvdXBfaGVhZCA9IE5VTEw7CisJc3RydWN0IGZpZW1hcF9leHRlbnRfZ3JvdXAJKm9yaWdfZ3JvdXBfdG1wID0gTlVMTDsKKworCWRlZnJhZ2VkX2ZpbGVfY291bnQrKzsKKworCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJcHJpbnRmKCJbJXUvJXVdIiwgZGVmcmFnZWRfZmlsZV9jb3VudCwgdG90YWxfY291bnQpOworCQlmZmx1c2goc3Rkb3V0KTsKKwl9CisKKwlpZiAobG9zdF9mb3VuZF9kaXJbMF0gIT0gJ1wwJyAmJgorCSAgICAhbWVtY21wKGZpbGUsIGxvc3RfZm91bmRfZGlyLCBzdHJubGVuKGxvc3RfZm91bmRfZGlyLCBQQVRIX01BWCkpKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCUlOX0ZUV19QUklOVF9FUlJfTVNHKE5HTVNHX0xPU1RfRk9VTkQpOworCQl9CisJCXJldHVybiAwOworCX0KKworCWlmICghU19JU1JFRyhidWYtPnN0X21vZGUpKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCUlOX0ZUV19QUklOVF9FUlJfTVNHKE5HTVNHX0ZJTEVfVU5SRUcpOworCQl9CisJCXJldHVybiAwOworCX0KKworCS8qIEVtcHR5IGZpbGUgKi8KKwlpZiAoYnVmLT5zdF9zaXplID09IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJSU5fRlRXX1BSSU5UX0VSUl9NU0coIkZpbGUgc2l6ZSBpcyAwIik7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJLyogSGFzIG5vIGJsb2NrcyAqLworCWlmIChidWYtPnN0X2Jsb2NrcyA9PSAwKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCVNUQVRJU1RJQ19FUlJfTVNHKCJGaWxlIGhhcyBubyBibG9ja3MiKTsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlmZCA9IG9wZW42NChmaWxlLCBPX1JEV1IpOworCWlmIChmZCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfT1BFTik7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCisJLyogR2V0IGZpbGUncyBleHRlbnRzICovCisJcmV0ID0gZ2V0X2ZpbGVfZXh0ZW50cyhmZCwgJm9yaWdfbGlzdF9waHlzaWNhbCk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfRVhURU5UKTsKKwkJfQorCQlnb3RvIG91dDsKKwl9CisKKwkvKiBHZXQgdGhlIGNvdW50IG9mIGZpbGUncyBjb250aW51b3VzIHBoeXNpY2FsIHJlZ2lvbiAqLworCW9yaWdfcGh5c2ljYWxfY250ID0gZ2V0X3BoeXNpY2FsX2NvdW50KG9yaWdfbGlzdF9waHlzaWNhbCk7CisKKwkvKiBDaGFuZ2UgbGlzdCBmcm9tIHBoeXNpY2FsIHRvIGxvZ2ljYWwgKi8KKwlyZXQgPSBjaGFuZ2VfcGh5c2ljYWxfdG9fbG9naWNhbCgmb3JpZ19saXN0X3BoeXNpY2FsLAorCQkJCQkJCSZvcmlnX2xpc3RfbG9naWNhbCk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfRVhURU5UKTsKKwkJfQorCQlnb3RvIG91dDsKKwl9CisKKwkvKiBDb3VudCBmaWxlIGZyYWdtZW50cyBiZWZvcmUgZGVmcmFnICovCisJZmlsZV9mcmFnc19zdGFydCA9IGdldF9sb2dpY2FsX2NvdW50KG9yaWdfbGlzdF9sb2dpY2FsKTsKKworCWJsa19jb3VudCA9IGdldF9maWxlX2Jsb2NrcyhvcmlnX2xpc3RfbG9naWNhbCk7CisJaWYgKGZpbGVfY2hlY2soZmQsIGJ1ZiwgZmlsZSwgZmlsZV9mcmFnc19zdGFydCwgYmxrX2NvdW50KSA8IDApCisJCWdvdG8gb3V0OworCisJaWYgKGZzeW5jKGZkKSA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKCJGYWlsZWQgdG8gc3luYyhmc3luYykiKTsKKwkJfQorCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoY3VycmVudF91aWQgPT0gUk9PVF9VSUQpCisJCWJlc3QgPSBnZXRfYmVzdF9jb3VudChibGtfY291bnQpOworCWVsc2UKKwkJYmVzdCA9IDE7CisKKwlpZiAoZmlsZV9mcmFnc19zdGFydCA8PSBiZXN0KQorCQlnb3RvIGNoZWNrX2ltcHJvdmVtZW50OworCisJLyogQ29tYmluZSBleHRlbnRzIHRvIGdyb3VwICovCisJcmV0ID0gam9pbl9leHRlbnRzKG9yaWdfbGlzdF9sb2dpY2FsLCAmb3JpZ19ncm91cF9oZWFkKTsKKwlpZiAocmV0IDwgMCkgeworCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQlQUklOVF9FUlJfTVNHX1dJVEhfRVJSTk8oTkdNU0dfRklMRV9FWFRFTlQpOworCQl9CisJCWdvdG8gb3V0OworCX0KKworCS8qIENyZWF0ZSBkb25vciBpbm9kZSAqLworCW1lbXNldCh0bXBfaW5vZGVfbmFtZSwgMCwgUEFUSF9NQVggKyA4KTsKKwlzcHJpbnRmKHRtcF9pbm9kZV9uYW1lLCAiJS4qcy5kZWZyYWciLAorCQkJCShpbnQpc3RybmxlbihmaWxlLCBQQVRIX01BWCksIGZpbGUpOworCWRvbm9yX2ZkID0gb3BlbjY0KHRtcF9pbm9kZV9uYW1lLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIFNfSVJVU1IpOworCWlmIChkb25vcl9mZCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJaWYgKGVycm5vID09IEVFWElTVCkKKwkJCQlQUklOVF9FUlJfTVNHX1dJVEhfRVJSTk8oCisJCQkJIkZpbGUgaXMgYmVpbmcgZGVmcmFnZWQgYnkgb3RoZXIgcHJvZ3JhbSIpOworCQkJZWxzZQorCQkJCVBSSU5UX0VSUl9NU0dfV0lUSF9FUlJOTyhOR01TR19GSUxFX09QRU4pOworCQl9CisJCWdvdG8gb3V0OworCX0KKworCS8qIFVubGluayBkb25vciBpbm9kZSAqLworCXJldCA9IHVubGluayh0bXBfaW5vZGVfbmFtZSk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKCJGYWlsZWQgdG8gdW5saW5rIik7CisJCX0KKwkJZ290byBvdXQ7CisJfQorCisJLyogQWxsb2NhdGUgc3BhY2UgZm9yIGRvbm9yIGlub2RlICovCisJb3JpZ19ncm91cF90bXAgPSBvcmlnX2dyb3VwX2hlYWQ7CisJZG8geworCQlyZXQgPSBmYWxsb2NhdGU2NChkb25vcl9mZCwgMCwKKwkJICAobG9mZl90KW9yaWdfZ3JvdXBfdG1wLT5zdGFydC0+ZGF0YS5sb2dpY2FsICogYmxvY2tfc2l6ZSwKKwkJICAobG9mZl90KW9yaWdfZ3JvdXBfdG1wLT5sZW4gKiBibG9ja19zaXplKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCQlQUklOVF9GSUxFX05BTUUoZmlsZSk7CisJCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKCJGYWlsZWQgdG8gZmFsbG9jYXRlIik7CisJCQl9CisJCQlnb3RvIG91dDsKKwkJfQorCisJCW9yaWdfZ3JvdXBfdG1wID0gb3JpZ19ncm91cF90bXAtPm5leHQ7CisJfSB3aGlsZSAob3JpZ19ncm91cF90bXAgIT0gb3JpZ19ncm91cF9oZWFkKTsKKworCS8qIEdldCBkb25vciBpbm9kZSdzIGV4dGVudHMgKi8KKwlyZXQgPSBnZXRfZmlsZV9leHRlbnRzKGRvbm9yX2ZkLCAmZG9ub3JfbGlzdF9waHlzaWNhbCk7CisJaWYgKHJldCA8IDApIHsKKwkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkgeworCQkJUFJJTlRfRklMRV9OQU1FKGZpbGUpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfRVhURU5UKTsKKwkJfQorCQlnb3RvIG91dDsKKwl9CisKKwkvKiBDYWxjdWF0ZSBkb25vciBpbm9kZSdzIGNvbnRpbnVvdXMgcGh5c2ljYWwgcmVnaW9uICovCisJZG9ub3JfcGh5c2ljYWxfY250ID0gZ2V0X3BoeXNpY2FsX2NvdW50KGRvbm9yX2xpc3RfcGh5c2ljYWwpOworCisJLyogQ2hhbmdlIGRvbm9yIGV4dGVudCBsaXN0IGZyb20gcGh5c2ljYWwgdG8gbG9naWNhbCAqLworCXJldCA9IGNoYW5nZV9waHlzaWNhbF90b19sb2dpY2FsKCZkb25vcl9saXN0X3BoeXNpY2FsLAorCQkJCQkJCSZkb25vcl9saXN0X2xvZ2ljYWwpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpIHsKKwkJCVBSSU5UX0ZJTEVfTkFNRShmaWxlKTsKKwkJCVBSSU5UX0VSUl9NU0dfV0lUSF9FUlJOTyhOR01TR19GSUxFX0VYVEVOVCk7CisJCX0KKwkJZ290byBvdXQ7CisJfQorCitjaGVja19pbXByb3ZlbWVudDoKKwlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCWlmIChmaWxlX2ZyYWdzX3N0YXJ0ICE9IDEpCisJCQlmcmFnX2ZpbGVzX2JlZm9yZV9kZWZyYWcrKzsKKworCQlleHRlbnRzX2JlZm9yZV9kZWZyYWcgKz0gZmlsZV9mcmFnc19zdGFydDsKKwl9CisKKwlpZiAoZmlsZV9mcmFnc19zdGFydCA8PSBiZXN0IHx8CisJCQlvcmlnX3BoeXNpY2FsX2NudCA8PSBkb25vcl9waHlzaWNhbF9jbnQpIHsKKwkJcHJpbnRmKCJcMDMzWzc5OzBIXDAzM1tLWyV1LyV1XSVzOlx0JTNkJSUiLAorCQkJZGVmcmFnZWRfZmlsZV9jb3VudCwgdG90YWxfY291bnQsIGZpbGUsIDEwMCk7CisJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpCisJCQlwcmludGYoIiAgZXh0ZW50czogJWQgLT4gJWQiLAorCQkJCWZpbGVfZnJhZ3Nfc3RhcnQsIGZpbGVfZnJhZ3Nfc3RhcnQpOworCisJCXByaW50ZigiXHRbIE9LIF1cbiIpOworCQlzdWNjZWVkX2NudCsrOworCisJCWlmIChmaWxlX2ZyYWdzX3N0YXJ0ICE9IDEpCisJCQlmcmFnX2ZpbGVzX2FmdGVyX2RlZnJhZysrOworCisJCWV4dGVudHNfYWZ0ZXJfZGVmcmFnICs9IGZpbGVfZnJhZ3Nfc3RhcnQ7CisJCWdvdG8gb3V0OworCX0KKworCS8qIERlZnJhZyB0aGUgZmlsZSAqLworCXJldCA9IGNhbGxfZGVmcmFnKGZkLCBkb25vcl9mZCwgZmlsZSwgYnVmLCBkb25vcl9saXN0X2xvZ2ljYWwpOworCisJLyogQ291bnQgZmlsZSBmcmFnbWVudHMgYWZ0ZXIgZGVmcmFnIGFuZCBwcmludCBleHRlbnRzIGluZm8gKi8KKwlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCWZpbGVfZnJhZ3NfZW5kID0gZmlsZV9mcmFnX2NvdW50KGZkKTsKKwkJaWYgKGZpbGVfZnJhZ3NfZW5kIDwgMCkgeworCQkJcHJpbnRmKCJcbiIpOworCQkJUFJJTlRfRVJSX01TR19XSVRIX0VSUk5PKE5HTVNHX0ZJTEVfSU5GTyk7CisJCQlnb3RvIG91dDsKKwkJfQorCisJCWlmIChmaWxlX2ZyYWdzX2VuZCAhPSAxKQorCQkJZnJhZ19maWxlc19hZnRlcl9kZWZyYWcrKzsKKworCQlleHRlbnRzX2FmdGVyX2RlZnJhZyArPSBmaWxlX2ZyYWdzX2VuZDsKKworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gb3V0OworCisJCXByaW50ZigiICBleHRlbnRzOiAlZCAtPiAlZCIsCisJCQlmaWxlX2ZyYWdzX3N0YXJ0LCBmaWxlX2ZyYWdzX2VuZCk7CisJCWZmbHVzaChzdGRvdXQpOworCX0KKworCWlmIChyZXQgPCAwKQorCQlnb3RvIG91dDsKKworCXByaW50ZigiXHRbIE9LIF1cbiIpOworCWZmbHVzaChzdGRvdXQpOworCXN1Y2NlZWRfY250Kys7CisKK291dDoKKwljbG9zZShmZCk7CisJaWYgKGRvbm9yX2ZkICE9IC0xKQorCQljbG9zZShkb25vcl9mZCk7CisJZnJlZV9leHQob3JpZ19saXN0X3BoeXNpY2FsKTsKKwlmcmVlX2V4dChvcmlnX2xpc3RfbG9naWNhbCk7CisJZnJlZV9leHQoZG9ub3JfbGlzdF9waHlzaWNhbCk7CisJZnJlZV9leHRzX2dyb3VwKG9yaWdfZ3JvdXBfaGVhZCk7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBtYWluKCkgLQkJRXh0NCBvbmxpbmUgZGVmcmFnLgorICoKKyAqIEBhcmdjOgkJdGhlIG51bWJlciBvZiBwYXJhbWV0ZXIuCisgKiBAYXJndltdOgkJdGhlIHBvaW50ZXIgYXJyYXkgb2YgcGFyYW1ldGVyLgorICovCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludAlvcHQ7CisJaW50CWksIGosIHJldCA9IDA7CisJaW50CWZsYWdzID0gRlRXX1BIWVMgfCBGVFdfTU9VTlQ7CisJaW50CWFyZ190eXBlID0gLTE7CisJaW50CXN1Y2Nlc3NfZmxhZyA9IDA7CisJY2hhcglkaXJfbmFtZVtQQVRIX01BWCArIDFdOworCWNoYXIJZGV2X25hbWVbUEFUSF9NQVggKyAxXTsKKwlzdHJ1Y3Qgc3RhdDY0CWJ1ZjsKKwlleHQyX2ZpbHN5cyBmcyA9IE5VTEw7CisKKwkvKiBQYXJzZSBhcmd1bWVudHMgKi8KKwlpZiAoYXJnYyA9PSAxKQorCQlnb3RvIG91dDsKKworCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJ2YyIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAndic6CisJCQltb2RlX2ZsYWcgfD0gREVUQUlMOworCQkJYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkJbW9kZV9mbGFnIHw9IFNUQVRJU1RJQzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwlpZiAoYXJnYyA9PSBvcHRpbmQpCisJCWdvdG8gb3V0OworCisJY3VycmVudF91aWQgPSBnZXR1aWQoKTsKKworCS8qIE1haW4gcHJvY2VzcyAqLworCWZvciAoaSA9IG9wdGluZDsgaSA8IGFyZ2M7IGkrKykgeworCQlzdWNjZWVkX2NudCA9IDA7CisJCXJlZ3VsYXJfY291bnQgPSAwOworCQl0b3RhbF9jb3VudCA9IDA7CisJCWZyYWdfZmlsZXNfYmVmb3JlX2RlZnJhZyA9IDA7CisJCWZyYWdfZmlsZXNfYWZ0ZXJfZGVmcmFnID0gMDsKKwkJZXh0ZW50c19iZWZvcmVfZGVmcmFnID0gMDsKKwkJZXh0ZW50c19hZnRlcl9kZWZyYWcgPSAwOworCQlkZWZyYWdlZF9maWxlX2NvdW50ID0gMDsKKwkJZmlsZXNfYmxvY2tfY291bnQgPSAwOworCQlibG9ja3NfcGVyX2dyb3VwID0gMDsKKwkJZmVhdHVyZV9pbmNvbXBhdCA9IDA7CisJCWxvZ19ncm91cHNfcGVyX2ZsZXggPSAwOworCisJCW1lbXNldChkaXJfbmFtZSwgMCwgUEFUSF9NQVggKyAxKTsKKwkJbWVtc2V0KGRldl9uYW1lLCAwLCBQQVRIX01BWCArIDEpOworCQltZW1zZXQobG9zdF9mb3VuZF9kaXIsIDAsIFBBVEhfTUFYICsgMSk7CisJCW1lbXNldChmcmFnX3JhbmssIDAsCisJCQlzaXplb2Yoc3RydWN0IGZyYWdfc3RhdGlzdGljX2lubykgKiBTSE9XX0ZSQUdfRklMRVMpOworCisJCWlmICgobW9kZV9mbGFnICYgU1RBVElTVElDKSAmJiBpID4gb3B0aW5kKQorCQkJcHJpbnRmKCJcbiIpOworCisjaWYgQllURV9PUkRFUiAhPSBCSUdfRU5ESUFOICYmIEJZVEVfT1JERVIgIT0gTElUVExFX0VORElBTgorCQlQUklOVF9FUlJfTVNHKCJFbmRpYW4ncyB0eXBlIGlzIG5vdCBiaWcvbGl0dGxlIGVuZGlhbiIpOworCQlQUklOVF9GSUxFX05BTUUoYXJndltpXSk7CisJCWNvbnRpbnVlOworI2VuZGlmCisKKwkJaWYgKGxzdGF0NjQoYXJndltpXSwgJmJ1ZikgPCAwKSB7CisJCQlwZXJyb3IoTkdNU0dfRklMRV9JTkZPKTsKKwkJCVBSSU5UX0ZJTEVfTkFNRShhcmd2W2ldKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogSGFuZGxlIGkuZS4gbHZtIGRldmljZSBzeW1saW5rcyAqLworCQlpZiAoU19JU0xOSyhidWYuc3RfbW9kZSkpIHsKKwkJCXN0cnVjdCBzdGF0NjQJYnVmMjsKKworCQkJaWYgKHN0YXQ2NChhcmd2W2ldLCAmYnVmMikgPT0gMCAmJgorCQkJICAgIFNfSVNCTEsoYnVmMi5zdF9tb2RlKSkKKwkJCQlidWYgPSBidWYyOworCQl9CisKKwkJaWYgKFNfSVNCTEsoYnVmLnN0X21vZGUpKSB7CisJCQkvKiBCbG9jayBkZXZpY2UgKi8KKwkJCXN0cm5jcHkoZGV2X25hbWUsIGFyZ3ZbaV0sIHN0cm5sZW4oYXJndltpXSwgUEFUSF9NQVgpKTsKKwkJCWlmIChnZXRfbW91bnRfcG9pbnQoYXJndltpXSwgZGlyX25hbWUsIFBBVEhfTUFYKSA8IDApCisJCQkJY29udGludWU7CisJCQlpZiAobHN0YXQ2NChkaXJfbmFtZSwgJmJ1ZikgPCAwKSB7CisJCQkJcGVycm9yKE5HTVNHX0ZJTEVfSU5GTyk7CisJCQkJUFJJTlRfRklMRV9OQU1FKGFyZ3ZbaV0pOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJYXJnX3R5cGUgPSBERVZOQU1FOworCQkJaWYgKCEobW9kZV9mbGFnICYgU1RBVElTVElDKSkKKwkJCQlwcmludGYoImV4dDQgZGVmcmFnbWVudGF0aW9uIGZvciBkZXZpY2UoJXMpXG4iLAorCQkJCQlhcmd2W2ldKTsKKwkJfSBlbHNlIGlmIChTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgeworCQkJLyogRGlyZWN0b3J5ICovCisJCQlpZiAoYWNjZXNzKGFyZ3ZbaV0sIFJfT0spIDwgMCkgeworCQkJCXBlcnJvcihhcmd2W2ldKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWFyZ190eXBlID0gRElSTkFNRTsKKwkJCXN0cm5jcHkoZGlyX25hbWUsIGFyZ3ZbaV0sIHN0cm5sZW4oYXJndltpXSwgUEFUSF9NQVgpKTsKKwkJfSBlbHNlIGlmIChTX0lTUkVHKGJ1Zi5zdF9tb2RlKSkgeworCQkJLyogUmVndWxhciBmaWxlICovCisJCQlhcmdfdHlwZSA9IEZJTEVOQU1FOworCQl9IGVsc2UgeworCQkJLyogSXJyZWd1bGFyIGZpbGUgKi8KKwkJCVBSSU5UX0VSUl9NU0coTkdNU0dfRklMRV9VTlJFRyk7CisJCQlQUklOVF9GSUxFX05BTUUoYXJndltpXSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIFNldCBibG9ja3NpemUgKi8KKwkJYmxvY2tfc2l6ZSA9IGJ1Zi5zdF9ibGtzaXplOworCisJCS8qIEZvciBkZXZpY2UgY2FzZSwKKwkJICogZmlsZXN5c3RlbSB0eXBlIGNoZWNrZWQgaW4gZ2V0X21vdW50X3BvaW50KCkKKwkJICovCisJCWlmIChhcmdfdHlwZSA9PSBGSUxFTkFNRSB8fCBhcmdfdHlwZSA9PSBESVJOQU1FKSB7CisJCQlpZiAoaXNfZXh0NChhcmd2W2ldLCBkZXZfbmFtZSkgPCAwKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKHJlYWxwYXRoKGFyZ3ZbaV0sIGRpcl9uYW1lKSA9PSBOVUxMKSB7CisJCQkJcGVycm9yKCJDb3VsZG4ndCBnZXQgZnVsbCBwYXRoIik7CisJCQkJUFJJTlRfRklMRV9OQU1FKGFyZ3ZbaV0pOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKKwkJaWYgKGN1cnJlbnRfdWlkID09IFJPT1RfVUlEKSB7CisJCQkvKiBHZXQgc3VwZXIgYmxvY2sgaW5mbyAqLworCQkJcmV0ID0gZXh0MmZzX29wZW4oZGV2X25hbWUsIEVYVDJfRkxBR182NEJJVFMsIDAsCisJCQkJCSAgYmxvY2tfc2l6ZSwgdW5peF9pb19tYW5hZ2VyLCAmZnMpOworCQkJaWYgKHJldCkgeworCQkJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpCisJCQkJCWNvbV9lcnIoYXJndlsxXSwgcmV0LAorCQkJCQkJIndoaWxlIHRyeWluZyB0byBvcGVuIGZpbGUgc3lzdGVtOiAlcyIsCisJCQkJCQlkZXZfbmFtZSk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWJsb2Nrc19wZXJfZ3JvdXAgPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwkJCWZlYXR1cmVfaW5jb21wYXQgPSBmcy0+c3VwZXItPnNfZmVhdHVyZV9pbmNvbXBhdDsKKwkJCWxvZ19ncm91cHNfcGVyX2ZsZXggPSBmcy0+c3VwZXItPnNfbG9nX2dyb3Vwc19wZXJfZmxleDsKKworCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJfQorCisJCXN3aXRjaCAoYXJnX3R5cGUpIHsKKwkJCWludCBtb3VudF9kaXJfbGVuID0gMDsKKworCQljYXNlIERJUk5BTUU6CisJCQlpZiAoIShtb2RlX2ZsYWcgJiBTVEFUSVNUSUMpKQorCQkJCXByaW50ZigiZXh0NCBkZWZyYWdtZW50YXRpb24gIgorCQkJCQkiZm9yIGRpcmVjdG9yeSglcylcbiIsIGFyZ3ZbaV0pOworCisJCQltb3VudF9kaXJfbGVuID0gc3Rybmxlbihsb3N0X2ZvdW5kX2RpciwgUEFUSF9NQVgpOworCisJCQlzdHJuY2F0KGxvc3RfZm91bmRfZGlyLCAiL2xvc3QrZm91bmQiLAorCQkJCVBBVEhfTUFYIC0gc3Rybmxlbihsb3N0X2ZvdW5kX2RpciwgUEFUSF9NQVgpKTsKKworCQkJLyogTm90IHRoZSBjYXNlKCJlNGRlZnJhZyAgbW91bnRfcGlvbnRfZGlyIikgKi8KKwkJCWlmIChkaXJfbmFtZVttb3VudF9kaXJfbGVuXSAhPSAnXDAnKSB7CisJCQkJLyoKKwkJCQkgKiAiZTRkZWZyYWcgbW91bnRfcGlvbnRfZGlyL2xvc3QrZm91bmQiCisJCQkJICogb3IgImU0ZGVmcmFnIG1vdW50X3Bpb250X2Rpci9sb3N0K2ZvdW5kLyIKKwkJCQkgKi8KKwkJCQlpZiAoc3RybmNtcChsb3N0X2ZvdW5kX2RpciwgZGlyX25hbWUsCisJCQkJCSAgICBzdHJubGVuKGxvc3RfZm91bmRfZGlyLAorCQkJCQkJICAgIFBBVEhfTUFYKSkgPT0gMCAmJgorCQkJCSAgICAoZGlyX25hbWVbc3Rybmxlbihsb3N0X2ZvdW5kX2RpciwKKwkJCQkJCSAgICAgIFBBVEhfTUFYKV0gPT0gJ1wwJyB8fAorCQkJCSAgICAgZGlyX25hbWVbc3Rybmxlbihsb3N0X2ZvdW5kX2RpciwKKwkJCQkJCSAgICAgIFBBVEhfTUFYKV0gPT0gJy8nKSkgeworCQkJCQlQUklOVF9FUlJfTVNHKE5HTVNHX0xPU1RfRk9VTkQpOworCQkJCQlQUklOVF9GSUxFX05BTUUoYXJndltpXSk7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKworCQkJCS8qICJlNGRlZnJhZyBtb3VudF9waW9udF9kaXIvZWxzZV9kaXIiICovCisJCQkJbWVtc2V0KGxvc3RfZm91bmRfZGlyLCAwLCBQQVRIX01BWCArIDEpOworCQkJfQorCQljYXNlIERFVk5BTUU6CisJCQlpZiAoYXJnX3R5cGUgPT0gREVWTkFNRSkgeworCQkJCXN0cm5jcHkobG9zdF9mb3VuZF9kaXIsIGRpcl9uYW1lLAorCQkJCQlzdHJubGVuKGRpcl9uYW1lLCBQQVRIX01BWCkpOworCQkJCXN0cm5jYXQobG9zdF9mb3VuZF9kaXIsICIvbG9zdCtmb3VuZC8iLAorCQkJCQlQQVRIX01BWCAtIHN0cm5sZW4obG9zdF9mb3VuZF9kaXIsCisJCQkJCQkJICAgUEFUSF9NQVgpKTsKKwkJCX0KKworCQkJbmZ0dzY0KGRpcl9uYW1lLCBjYWxjX2VudHJ5X2NvdW50cywgRlRXX09QRU5fRkQsIGZsYWdzKTsKKworCQkJaWYgKG1vZGVfZmxhZyAmIFNUQVRJU1RJQykgeworCQkJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpCisJCQkJCXByaW50ZigiJS00MHMlMTBzLyUtMTBzJTlzXG4iLAorCQkJCQkiPEZpbGU+IiwgIm5vdyIsICJiZXN0IiwgInNpemUvZXh0Iik7CisKKwkJCQlpZiAoIShtb2RlX2ZsYWcgJiBERVRBSUwpICYmCisJCQkJCQljdXJyZW50X3VpZCAhPSBST09UX1VJRCkgeworCQkJCQlwcmludGYoIiBEb25lLlxuIik7CisJCQkJCXN1Y2Nlc3NfZmxhZyA9IDE7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKworCQkJCW5mdHc2NChkaXJfbmFtZSwgZmlsZV9zdGF0aXN0aWMsCisJCQkJCQkJRlRXX09QRU5fRkQsIGZsYWdzKTsKKworCQkJCWlmIChzdWNjZWVkX2NudCAhPSAwICYmCisJCQkJCWN1cnJlbnRfdWlkID09IFJPT1RfVUlEKSB7CisJCQkJCWlmIChtb2RlX2ZsYWcgJiBERVRBSUwpCisJCQkJCQlwcmludGYoIlxuIik7CisJCQkJCXByaW50ZigiJS00MHMlMTBzLyUtMTBzJTlzXG4iLAorCQkJCQkJIjxGcmFnbWVudGVkIGZpbGVzPiIsICJub3ciLAorCQkJCQkJImJlc3QiLCAic2l6ZS9leHQiKTsKKwkJCQkJZm9yIChqID0gMDsgaiA8IFNIT1dfRlJBR19GSUxFUzsgaisrKSB7CisJCQkJCQlpZiAoc3RybGVuKGZyYWdfcmFua1tqXS4KKwkJCQkJCQltc2dfYnVmZmVyKSA+IDM3KSB7CisJCQkJCQkJcHJpbnRmKCIlZC4gJXNcbiU1MGQvIgorCQkJCQkJCSIlLTEwZCU2bGx1IEtCXG4iLAorCQkJCQkJCWogKyAxLAorCQkJCQkJCWZyYWdfcmFua1tqXS5tc2dfYnVmZmVyLAorCQkJCQkJCWZyYWdfcmFua1tqXS5ub3dfY291bnQsCisJCQkJCQkJZnJhZ19yYW5rW2pdLmJlc3RfY291bnQsCisJCQkJCQkJZnJhZ19yYW5rW2pdLgorCQkJCQkJCQlzaXplX3Blcl9leHQpOworCQkJCQkJfSBlbHNlIGlmIChzdHJsZW4oZnJhZ19yYW5rW2pdLgorCQkJCQkJCW1zZ19idWZmZXIpID4gMCkgeworCQkJCQkJCXByaW50ZigiJWQuICUtMzdzJTEwZC8iCisJCQkJCQkJIiUtMTBkJTZsbHUgS0JcbiIsCisJCQkJCQkJaiArIDEsCisJCQkJCQkJZnJhZ19yYW5rW2pdLm1zZ19idWZmZXIsCisJCQkJCQkJZnJhZ19yYW5rW2pdLm5vd19jb3VudCwKKwkJCQkJCQlmcmFnX3Jhbmtbal0uYmVzdF9jb3VudCwKKwkJCQkJCQlmcmFnX3Jhbmtbal0uCisJCQkJCQkJCXNpemVfcGVyX2V4dCk7CisJCQkJCQl9IGVsc2UKKwkJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwkJCS8qIEZpbGUgdHJlZSB3YWxrICovCisJCQluZnR3NjQoZGlyX25hbWUsIGZpbGVfZGVmcmFnLCBGVFdfT1BFTl9GRCwgZmxhZ3MpOworCQkJcHJpbnRmKCJcblx0U3VjY2VzczpcdFx0XHRbICV1LyV1IF1cbiIsIHN1Y2NlZWRfY250LAorCQkJCXRvdGFsX2NvdW50KTsKKwkJCXByaW50ZigiXHRGYWlsdXJlOlx0XHRcdFsgJXUvJXUgXVxuIiwKKwkJCQl0b3RhbF9jb3VudCAtIHN1Y2NlZWRfY250LCB0b3RhbF9jb3VudCk7CisJCQlpZiAobW9kZV9mbGFnICYgREVUQUlMKSB7CisJCQkJcHJpbnRmKCJcdFRvdGFsIGV4dGVudHM6XHRcdFx0JTRkLT4lZFxuIiwKKwkJCQkJZXh0ZW50c19iZWZvcmVfZGVmcmFnLAorCQkJCQlleHRlbnRzX2FmdGVyX2RlZnJhZyk7CisJCQkJcHJpbnRmKCJcdEZyYWdtZW50ZWQgcGVyY2VudGFnZTpcdFx0IgorCQkJCQkiJTNsbHUlJS0+JWxsdSUlXG4iLAorCQkJCQkhcmVndWxhcl9jb3VudCA/IDAgOgorCQkJCQkoKHVuc2lnbmVkIGxvbmcgbG9uZykKKwkJCQkJZnJhZ19maWxlc19iZWZvcmVfZGVmcmFnICogMTAwKSAvCisJCQkJCXJlZ3VsYXJfY291bnQsCisJCQkJCSFyZWd1bGFyX2NvdW50ID8gMCA6CisJCQkJCSgodW5zaWduZWQgbG9uZyBsb25nKQorCQkJCQlmcmFnX2ZpbGVzX2FmdGVyX2RlZnJhZyAqIDEwMCkgLworCQkJCQlyZWd1bGFyX2NvdW50KTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlIEZJTEVOQU1FOgorCQkJdG90YWxfY291bnQgPSAxOworCQkJcmVndWxhcl9jb3VudCA9IDE7CisJCQlzdHJuY2F0KGxvc3RfZm91bmRfZGlyLCAiL2xvc3QrZm91bmQvIiwKKwkJCQlQQVRIX01BWCAtIHN0cm5sZW4obG9zdF9mb3VuZF9kaXIsCisJCQkJCQkgICBQQVRIX01BWCkpOworCQkJaWYgKHN0cm5jbXAobG9zdF9mb3VuZF9kaXIsIGRpcl9uYW1lLAorCQkJCSAgICBzdHJubGVuKGxvc3RfZm91bmRfZGlyLAorCQkJCQkgICAgUEFUSF9NQVgpKSA9PSAwKSB7CisJCQkJUFJJTlRfRVJSX01TRyhOR01TR19MT1NUX0ZPVU5EKTsKKwkJCQlQUklOVF9GSUxFX05BTUUoYXJndltpXSk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWlmIChtb2RlX2ZsYWcgJiBTVEFUSVNUSUMpIHsKKwkJCQlmaWxlX3N0YXRpc3RpYyhhcmd2W2ldLCAmYnVmLCBGVFdfRiwgTlVMTCk7CisJCQkJYnJlYWs7CisJCQl9IGVsc2UKKwkJCQlwcmludGYoImV4dDQgZGVmcmFnbWVudGF0aW9uIGZvciAlc1xuIiwKKwkJCQkJCQkJIGFyZ3ZbaV0pOworCQkJLyogRGVmcmFnIHNpbmdsZSBmaWxlIHByb2Nlc3MgKi8KKwkJCWZpbGVfZGVmcmFnKGFyZ3ZbaV0sICZidWYsIEZUV19GLCBOVUxMKTsKKwkJCWlmIChzdWNjZWVkX2NudCAhPSAwKQorCQkJCXByaW50ZigiIFN1Y2Nlc3M6XHRcdFx0WzEvMV1cbiIpOworCQkJZWxzZQorCQkJCXByaW50ZigiIFN1Y2Nlc3M6XHRcdFx0WzAvMV1cbiIpOworCisJCQlicmVhazsKKwkJfQorCisJCWlmIChzdWNjZWVkX2NudCAhPSAwKQorCQkJc3VjY2Vzc19mbGFnID0gMTsKKwkJaWYgKG1vZGVfZmxhZyAmIFNUQVRJU1RJQykgeworCQkJaWYgKGN1cnJlbnRfdWlkICE9IFJPT1RfVUlEKSB7CisJCQkJcHJpbnRmKCIgRG9uZS5cbiIpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlpZiAoIXN1Y2NlZWRfY250KSB7CisJCQkJaWYgKG1vZGVfZmxhZyAmIERFVEFJTCkKKwkJCQkJcHJpbnRmKCJcbiIpOworCisJCQkJaWYgKGFyZ190eXBlID09IERFVk5BTUUpCisJCQkJCXByaW50ZigiIEluIHRoaXMgZGV2aWNlKCVzKSwgIgorCQkJCQkibm9uZSBjYW4gYmUgZGVmcmFnbWVudGVkLlxuIiwgYXJndltpXSk7CisJCQkJZWxzZSBpZiAoYXJnX3R5cGUgPT0gRElSTkFNRSkKKwkJCQkJcHJpbnRmKCIgSW4gdGhpcyBkaXJlY3RvcnkoJXMpLCAiCisJCQkJCSJub25lIGNhbiBiZSBkZWZyYWdtZW50ZWQuXG4iLCBhcmd2W2ldKTsKKwkJCQllbHNlCisJCQkJCXByaW50ZigiIFRoaXMgZmlsZSglcykgIgorCQkJCQkiY2FuJ3QgYmUgZGVmcmFnbWVudGVkLlxuIiwgYXJndltpXSk7CisJCQl9IGVsc2UgeworCQkJCWZsb2F0IGZpbGVzX3JhdGlvID0gMC4wOworCQkJCWZsb2F0IHNjb3JlID0gMC4wOworCQkJCV9fdTY0IHNpemVfcGVyX2V4dCA9IGZpbGVzX2Jsb2NrX2NvdW50ICoKKwkJCQkJCShidWYuc3RfYmxrc2l6ZSAvIDEwMjQpIC8KKwkJCQkJCWV4dGVudHNfYmVmb3JlX2RlZnJhZzsKKwkJCQlmaWxlc19yYXRpbyA9IChmbG9hdCkoZXh0ZW50c19iZWZvcmVfZGVmcmFnIC0KKwkJCQkJCWV4dGVudHNfYWZ0ZXJfZGVmcmFnKSAqCisJCQkJCQkxMDAgLyBmaWxlc19ibG9ja19jb3VudDsKKwkJCQlzY29yZSA9IENBTENfU0NPUkUoZmlsZXNfcmF0aW8pOworCQkJCXByaW50ZigiXG4gVG90YWwvYmVzdCBleHRlbnRzXHRcdFx0XHQlZC8lZFxuIgorCQkJCQkiIEF2ZXJhZ2Ugc2l6ZSBwZXIgZXh0ZW50IgorCQkJCQkiXHRcdFx0JWxsdSBLQlxuIgorCQkJCQkiIEZyYWdtZW50YXRpb24gc2NvcmVcdFx0XHRcdCUuMGZcbiIsCisJCQkJCQlleHRlbnRzX2JlZm9yZV9kZWZyYWcsCisJCQkJCQlleHRlbnRzX2FmdGVyX2RlZnJhZywKKwkJCQkJCXNpemVfcGVyX2V4dCwgc2NvcmUpOworCQkJCXByaW50ZigiIFswLTMwIG5vIHByb2JsZW06IgorCQkJCQkiIDMxLTU1IGEgbGl0dGxlIGJpdCBmcmFnbWVudGVkOiIKKwkJCQkJIiA1Ni0gbmVlZHMgZGVmcmFnXVxuIik7CisKKwkJCQlpZiAoYXJnX3R5cGUgPT0gREVWTkFNRSkKKwkJCQkJcHJpbnRmKCIgVGhpcyBkZXZpY2UgKCVzKSAiLCBhcmd2W2ldKTsKKwkJCQllbHNlIGlmIChhcmdfdHlwZSA9PSBESVJOQU1FKQorCQkJCQlwcmludGYoIiBUaGlzIGRpcmVjdG9yeSAoJXMpICIsCisJCQkJCQkJCWFyZ3ZbaV0pOworCQkJCWVsc2UKKwkJCQkJcHJpbnRmKCIgVGhpcyBmaWxlICglcykgIiwgYXJndltpXSk7CisKKwkJCQlpZiAoc2NvcmUgPiBCT1VORF9TQ09SRSkKKwkJCQkJcHJpbnRmKCJuZWVkcyBkZWZyYWdtZW50YXRpb24uXG4iKTsKKwkJCQllbHNlCisJCQkJCXByaW50ZigiZG9lcyBub3QgbmVlZCAiCisJCQkJCQkJImRlZnJhZ21lbnRhdGlvbi5cbiIpOworCQkJfQorCQkJcHJpbnRmKCIgRG9uZS5cbiIpOworCQl9CisKKwl9CisKKwlpZiAoc3VjY2Vzc19mbGFnKQorCQlyZXR1cm4gMDsKKworCWV4aXQoMSk7CisKK291dDoKKwlwcmludGYoTVNHX1VTQUdFKTsKKwlleGl0KDEpOworfQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9leHQ0LjUuaW4gYi9lMmZzcHJvZ3MvbWlzYy9leHQ0LjUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiZDg2MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2V4dDQuNS5pbgpAQCAtMCwwICsxLDcxMCBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSBieSBUaGVvZG9yZSBUcydvLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy5cIiBUaGlzIGZpbGUgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKy5cIgorLlRIIEVYVDQgNSAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZXh0MiBcLSB0aGUgc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtCisuYnIKK2V4dDMgXC0gdGhlIHRoaXJkIGV4dGVuZGVkIGZpbGUgc3lzdGVtCisuYnIKK2V4dDQgXC0gdGhlIGZvdXJ0aCBleHRlbmRlZCBmaWxlIHN5c3RlbQorLlNIIERFU0NSSVBUSU9OCitUaGUgc2Vjb25kLCB0aGlyZCwgYW5kIGZvdXJ0aCBleHRlbmRlZCBmaWxlIHN5c3RlbXMsIG9yIGV4dDIsIGV4dDMsIGFuZAorZXh0NCBhcyB0aGV5IGFyZSBjb21tb25seSBrbm93biwgYXJlIExpbnV4IGZpbGUgc3lzdGVtcyB0aGF0IGhhdmUKK2hpc3RvcmljYWxseSBiZWVuIHRoZSBkZWZhdWx0IGZpbGUgc3lzdGVtIGZvciBtYW55IExpbnV4IGRpc3RyaWJ1dGlvbnMuCitUaGV5IGFyZSBnZW5lcmFsIHB1cnBvc2UgZmlsZSBzeXN0ZW1zIHRoYXQgaGF2ZSBiZWVuIGRlc2lnbmVkIGZvcgorZXh0ZW5zaWJpbGl0eSBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuICBJbiBwYXJ0aWN1bGFyLCBmaWxlIHN5c3RlbXMKK3ByZXZpb3VzbHkgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIHRoZSBleHQyIGFuZCBleHQzIGZpbGUgc3lzdGVtcyBjYW4gYmUKK21vdW50ZWQgdXNpbmcgdGhlIGV4dDQgZmlsZSBzeXN0ZW0gZHJpdmVyLCBhbmQgaW5kZWVkIGluIG1hbnkgbW9kZXJuCitMaW51eCBkaXN0cmlidXRpb25zLCB0aGUgZXh0NCBmaWxlIHN5c3RlbSBkcml2ZXIgaGFzIGJlZW4gY29uZmlndXJlZAordG8gaGFuZGxlIG1vdW50IHJlcXVlc3RzIGZvciBleHQyIGFuZCBleHQzIGZpbGUgc3lzdGVtcy4KKy5TSCBGSUxFIFNZU1RFTSBGRUFUVVJFUworQSBmaWxlIHN5c3RlbSBmb3JtYXR0ZWQgZm9yIGV4dDIsIGV4dDMsIG9yIGV4dDQgY2FuIGhhdmUgc29tZQorY29sbGVjdGlvbiBvZiB0aGUgZm9sbG93aW5nIGZpbGUgc3lzdGVtIGZlYXR1cmUgZmxhZ3MgZW5hYmxlZC4gIFNvbWUgb2YKK3RoZXNlIGZlYXR1cmVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV4dDIsCitleHQzLCBhbmQgZXh0NCBmaWxlIHN5c3RlbSBkcml2ZXJzLCBkZXBlbmRpbmcgb24gTGludXgga2VybmVsIHZlcnNpb24gaW4KK3VzZS4gIE9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLCBzdWNoIGFzIHRoZSBHTlUvSFVSRCBvciBGcmVlQlNELCBvbmx5CithIHZlcnkgcmVzdHJpY3RpdmUgc2V0IG9mIGZpbGUgc3lzdGVtIGZlYXR1cmVzIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlaXIKK2ltcGxlbWVudGF0aW9ucyBvZiBleHQyLgorLlRQCisuQiA2NGJpdAorLmJyCitFbmFibGVzIHRoZSBmaWxlIHN5c3RlbSB0byBiZSBsYXJnZXIgdGhhbiAyXjMyIGJsb2Nrcy4gIFRoaXMgZmVhdHVyZSBpcyBzZXQKK2F1dG9tYXRpY2FsbHksIGFzIG5lZWRlZCwgYnV0IGl0IGNhbiBiZSB1c2VmdWwgdG8gc3BlY2lmeSB0aGlzIGZlYXR1cmUKK2V4cGxpY2l0bHkgaWYgdGhlIGZpbGUgc3lzdGVtIG1pZ2h0IG5lZWQgdG8gYmUgcmVzaXplZCBsYXJnZXIgdGhhbiAyXjMyCitibG9ja3MsIGV2ZW4gaWYgaXQgd2FzIHNtYWxsZXIgdGhhbiB0aGF0IHRocmVzaG9sZCB3aGVuIGl0IHdhcworb3JpZ2luYWxseSBjcmVhdGVkLiAgTm90ZSB0aGF0IHNvbWUgb2xkZXIga2VybmVscyBhbmQgb2xkZXIgdmVyc2lvbnMKK29mIGUyZnNwcm9ncyB3aWxsIG5vdCBzdXBwb3J0IGZpbGUgc3lzdGVtcyB3aXRoIHRoaXMgZXh0NCBmZWF0dXJlIGVuYWJsZWQuCisuVFAKKy5CIGJpZ2FsbG9jCisuYnIKK1RoaXMgZXh0NCBmZWF0dXJlIGVuYWJsZXMgY2x1c3RlcmVkIGJsb2NrIGFsbG9jYXRpb24sIHNvIHRoYXQgdGhlIHVuaXQgb2YKK2FsbG9jYXRpb24gaXMgYSBwb3dlciBvZiB0d28gbnVtYmVyIG9mIGJsb2Nrcy4gIFRoYXQgaXMsIGVhY2ggYml0IGluIHRoZQord2hhdCBoYWQgdHJhZGl0aW9uYWxseSBiZWVuIGtub3duIGFzIHRoZSBibG9jayBhbGxvY2F0aW9uIGJpdG1hcCBub3cKK2luZGljYXRlcyB3aGV0aGVyIGEgY2x1c3RlciBpcyBpbiB1c2Ugb3Igbm90LCB3aGVyZSBhIGNsdXN0ZXIgaXMgYnkKK2RlZmF1bHQgY29tcG9zZWQgb2YgMTYgYmxvY2tzLiAgVGhpcyBmZWF0dXJlIGNhbiBkZWNyZWFzZSB0aGUgdGltZQorc3BlbnQgb24gZG9pbmcgYmxvY2sgYWxsb2NhdGlvbiBhbmQgYnJpbmdzIHNtYWxsZXIgZnJhZ21lbnRhdGlvbiwgZXNwZWNpYWxseQorZm9yIGxhcmdlIGZpbGVzLiAgVGhlIHNpemUgY2FuIGJlIHNwZWNpZmllZCB1c2luZyB0aGUKKy5CIG1rZTJmcyBcLUMKK29wdGlvbi4KKy5JUAorLkIgV2FybmluZzoKK1RoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50LCBhbmQgbWF5IG5vdCBiZSBmdWxseQorc3VwcG9ydGVkIHdpdGggeW91ciBrZXJuZWwgb3IgbWF5IGhhdmUgdmFyaW91cyBidWdzLiAgUGxlYXNlIHNlZSB0aGUgd2ViCitwYWdlIGh0dHA6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIGRldGFpbHMuCitNYXkgY2xhc2ggd2l0aCBkZWxheWVkIGFsbG9jYXRpb24gKHNlZQorLkIgbm9kZWxhbGxvYworbW91bnQgb3B0aW9uKS4KKy5JUAorVGhpcyBmZWF0dXJlIHJlcXVpcmVzIHRoYXQgdGhlCisuQiBleHRlbnQKK2ZlYXR1cmUgYmUgZW5hYmxlZC4KKy5UUAorLkIgZGlyX2luZGV4CisuYnIKK1VzZSBoYXNoZWQgYi10cmVlcyB0byBzcGVlZCB1cCBuYW1lIGxvb2t1cHMgaW4gbGFyZ2UgZGlyZWN0b3JpZXMuICBUaGlzCitmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSBleHQzIGFuZCBleHQ0IGZpbGUgc3lzdGVtcywgYW5kIGlzIGlnbm9yZWQgYnkKK2V4dDIgZmlsZSBzeXN0ZW1zLgorLlRQCisuQiBkaXJfbmxpbmsKKy5icgorVGhpcyBleHQ0IGZlYXR1cmUgYWxsb3dzIG1vcmUgdGhhbiA2NTAwMCBzdWJkaXJlY3RvcmllcyBwZXIgZGlyZWN0b3J5LgorLlRQCisuQiBlbmNyeXB0CisuYnIKK1RoaXMgZXh0NCBmZWF0dXJlIHByb3ZpZGVzIGZpbGUtc3lzdGVtIGxldmVsIGVuY3J5cHRpb24gb2YgZGF0YSBibG9ja3MKK2FuZCBmaWxlIG5hbWVzLiAgVGhlIGlub2RlIG1ldGFkYXRhICh0aW1lc3RhbXBzLCBmaWxlIHNpemUsIHVzZXIvZ3JvdXAKK293bmVyc2hpcCwgZXRjLikgaXMKKy5JIG5vdAorZW5jcnlwdGVkLgorLklQCitUaGlzIGZlYXR1cmUgaXMgbW9zdCB1c2VmdWwgb24gZmlsZSBzeXN0ZW1zIHdpdGggbXVsdGlwbGUgdXNlcnMsIG9yCit3aGVyZSBub3QgYWxsIGZpbGVzIHNob3VsZCBiZSBlbmNyeXB0ZWQuICBJbiBtYW55IHVzZSBjYXNlcywgZXNwZWNpYWxseQorb24gc2luZ2xlLXVzZXIgc3lzdGVtcywgZW5jcnlwdGlvbiBhdCB0aGUgYmxvY2sgZGV2aWNlIGxheWVyIHVzaW5nCitkbS1jcnlwdCBtYXkgcHJvdmlkZSBtdWNoIGJldHRlciBzZWN1cml0eS4KKy5UUAorLkIgZXh0X2F0dHIKKy5icgorVGhpcyBmZWF0dXJlIGVuYWJsZXMgdGhlIHVzZSBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzLiAgVGhpcyBmZWF0dXJlIGlzCitzdXBwb3J0ZWQgYnkgZXh0MiwgZXh0MywgYW5kIGV4dDQuCisuVFAKKy5CIGV4dGVudAorLmJyCitUaGlzIGV4dDQgZmVhdHVyZSBhbGxvd3MgdGhlIG1hcHBpbmcgb2YgbG9naWNhbCBibG9jayBudW1iZXJzIGZvciBhCitwYXJ0aWN1bGFyIGlub2RlIHRvIHBoeXNpY2FsIGJsb2NrcyBvbiB0aGUgc3RvcmFnZSBkZXZpY2UgdG8gYmUgc3RvcmVkCit1c2luZyBhbiBleHRlbnQgdHJlZSwgd2hpY2ggaXMgYSBtb3JlIGVmZmljaWVudCBkYXRhIHN0cnVjdHVyZSB0aGFuIHRoZQordHJhZGl0aW9uYWwgaW5kaXJlY3QgYmxvY2sgc2NoZW1lIHVzZWQgYnkgdGhlIGV4dDIgYW5kIGV4dDMgZmlsZQorc3lzdGVtcy4gIFRoZSB1c2Ugb2YgdGhlIGV4dGVudCB0cmVlIGRlY3JlYXNlcyBtZXRhZGF0YSBibG9jayBvdmVyaGVhZCwKK2ltcHJvdmVzIGZpbGUgc3lzdGVtIHBlcmZvcm1hbmNlLCBhbmQgZGVjcmVhc2VzIHRoZSBuZWVkZWQgdG8gcnVuCisuQlIgZTJmc2NrICg4KQorb24gdGhlIGZpbGUgc3lzdGVtLgorKE5vdGU6IGJvdGgKKy5CIGV4dGVudAorYW5kCisuQiBleHRlbnRzCithcmUgYWNjZXB0ZWQgYXMgdmFsaWQgbmFtZXMgZm9yIHRoaXMgZmVhdHVyZSBmb3IKK2hpc3RvcmljYWwvYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy4pCisuVFAKKy5CIGV4dHJhX2lzaXplCisuYnIKK1RoaXMgZXh0NCBmZWF0dXJlIHJlc2VydmVzIGEgc3BlY2lmaWMgYW1vdW50IG9mIHNwYWNlIGluIGVhY2ggaW5vZGUgZm9yCitleHRlbmRlZCBtZXRhZGF0YSBzdWNoIGFzIG5hbm9zZWNvbmQgdGltZXN0YW1wcyBhbmQgZmlsZSBjcmVhdGlvbiB0aW1lLAorZXZlbiBpZiB0aGUgY3VycmVudCBrZXJuZWwgZG9lcyBub3QgY3VycmVudGx5IG5lZWQgdG8gcmVzZXJ2ZSB0aGlzIG11Y2gKK3NwYWNlLiAgV2l0aG91dCB0aGlzIGZlYXR1cmUsIHRoZSBrZXJuZWwgd2lsbCByZXNlcnZlIHRoZSBhbW91bnQgb2YKK3NwYWNlIGZvciBmZWF0dXJlcyBpdCBjdXJyZW50bHkgbmVlZHMsIGFuZCB0aGUgcmVzdCBtYXkgYmUKK2NvbnN1bWVkIGJ5IGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisKK0ZvciB0aGlzIGZlYXR1cmUgdG8gYmUgdXNlZnVsIHRoZSBpbm9kZSBzaXplIG11c3QgYmUgMjU2IGJ5dGVzIGluIHNpemUKK29yIGxhcmdlci4KKy5UUAorLkIgZmlsZXR5cGUKKy5icgorVGhpcyBmZWF0dXJlIGVuYWJsZXMgdGhlIHN0b3JhZ2Ugb2YgZmlsZSB0eXBlIGluZm9ybWF0aW9uIGluIGRpcmVjdG9yeQorZW50cmllcy4gIFRoaXMgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYnkgZXh0MiwgZXh0MywgYW5kIGV4dDQuCisuVFAKKy5CIGZsZXhfYmcKKy5icgorVGhpcyBleHQ0IGZlYXR1cmUgYWxsb3dzIHRoZSBwZXItYmxvY2sgZ3JvdXAgbWV0YWRhdGEgKGFsbG9jYXRpb24KK2JpdG1hcHMKK2FuZCBpbm9kZSB0YWJsZXMpCit0byBiZSBwbGFjZWQgYW55d2hlcmUgb24gdGhlIHN0b3JhZ2UgbWVkaWEuICBJbiBhZGRpdGlvbiwKKy5CIG1rZTJmcword2lsbCBwbGFjZSB0aGUgcGVyLWJsb2NrIGdyb3VwIG1ldGFkYXRhIHRvZ2V0aGVyIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdAorYmxvY2sgZ3JvdXAgb2YgZWFjaCAiZmxleF9iZyBncm91cCIuICAgVGhlIHNpemUgb2YgdGhlIGZsZXhfYmcgZ3JvdXAKK2NhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCisuQiBcLUcKK29wdGlvbi4KKy5UUAorLkIgaGFzX2pvdXJuYWwKKy5icgorQ3JlYXRlIGEgam91cm5hbCB0byBlbnN1cmUgZmlsZXN5c3RlbSBjb25zaXN0ZW5jeSBldmVuIGFjcm9zcyB1bmNsZWFuCitzaHV0ZG93bnMuICBTZXR0aW5nIHRoZSBmaWxlc3lzdGVtIGZlYXR1cmUgaXMgZXF1aXZhbGVudCB0byB1c2luZyB0aGUKKy5CIFwtagorb3B0aW9uIHdpdGgKKy5CUiBta2UyZnMgIiBvciAiIHR1bmUyZnMuCitUaGlzIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGJ5IGV4dDMgYW5kIGV4dDQsIGFuZCBpZ25vcmVkIGJ5IHRoZQorZXh0MiBmaWxlIHN5c3RlbSBkcml2ZXIuCisuVFAKKy5CIGh1Z2VfZmlsZQorLmJyCitUaGlzIGV4dDQgZmVhdHVyZSBhbGxvd3MgZmlsZXMgdG8gYmUgbGFyZ2VyIHRoYW4gMiB0ZXJhYnl0ZXMgaW4gc2l6ZS4KKy5UUAorLkIgaW5saW5lX2RhdGEKK0FsbG93IGRhdGEgdG8gYmUgc3RvcmVkIGluIHRoZSBpbm9kZSBhbmQgZXh0ZW5kZWQgYXR0cmlidXRlIGFyZWEuCisuVFAKKy5CIGpvdXJuYWxfZGV2CisuYnIKK1RoaXMgZmVhdHVyZSBpcyBlbmFibGVkIG9uIHRoZSBzdXBlcmJsb2NrIGZvdW5kIG9uIGFuIGV4dGVybmFsIGpvdXJuYWwKK2RldmljZS4gIFRoZSBibG9jayBzaXplIGZvciB0aGUgZXh0ZXJuYWwgam91cm5hbCBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZQorZmlsZSBzeXN0ZW0gd2hpY2ggdXNlcyBpdC4KKy5JUAorVGhlIGV4dGVybmFsIGpvdXJuYWwgZGV2aWNlIGNhbiBiZSB1c2VkIGJ5IGEgZmlsZSBzeXN0ZW0gYnkgc3BlY2lmeWluZwordGhlCisuQiBcLUoKKy5CUiBkZXZpY2U9IDxleHRlcm5hbC1kZXZpY2U+CitvcHRpb24gdG8KKy5CUiBta2UyZnMgKDgpCitvcgorLkJSIHR1bmUyZnMoOCkuCisuVFAKKy5CIGxhcmdlX2ZpbGUKKy5icgorVGhpcyBmZWF0dXJlIGZsYWcgaXMgc2V0IGF1dG9tYXRpY2FsbHkgYnkgbW9kZXJuIGtlcm5lbHMgd2hlbiBhIGZpbGUKK2xhcmdlciB0aGFuIDIgZ2lnYWJ5dGVzIGlzIGNyZWF0ZWQuICBWZXJ5IG9sZCBrZXJuZWxzIGNvdWxkIG5vdAoraGFuZGxlIGxhcmdlIGZpbGVzLCBzbyB0aGlzIGZlYXR1cmUgZmxhZyB3YXMgdXNlZCB0byBwcm9oaWJpdCB0aG9zZQora2VybmVscyBmcm9tIG1vdW50aW5nIGZpbGUgc3lzdGVtcyB0aGF0IHRoZXkgY291bGQgbm90IHVuZGVyc3RhbmQuCisuXCIgLlRQCisuXCIgLkIgbWV0YWRhdGFfY3N1bQorLlwiIC5icgorLlwiIFRoaXMgZXh0NCBmZWF0dXJlIGVuYWJsZXMgbWV0YWRhdGEgY2hlY2tzdW1taW5nLiAgVGhpcyBmZWF0dXJlIHN0b3JlcworLlwiIGNoZWNrc3VtcyBmb3IgYWxsIG9mIHRoZSBmaWxlc3lzdGVtIG1ldGFkYXRhIChzdXBlcmJsb2NrLCBncm91cAorLlwiIGRlc2NyaXB0b3IgYmxvY2tzLCBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcywgZGlyZWN0b3JpZXMsIGFuZAorLlwiIGV4dGVudCB0cmVlIGJsb2NrcykuICBUaGUgY2hlY2tzdW0gYWxnb3JpdGhtIHVzZWQgZm9yIHRoZSBtZXRhZGF0YQorLlwiIGJsb2NrcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIHVzZWQgZm9yIGdyb3VwIGRlc2NyaXB0b3JzIHdpdGggdGhlCisuXCIgLkIgdW5pbml0X2JnCisuXCIgZmVhdHVyZSwgdGhlc2UgdHdvIGZlYXR1cmVzIGFyZSBpbmNvbXBhdGlibGUgYW5kCisuXCIgLkIgbWV0YWRhdGFfY3N1bQorLlwiIHdpbGwgYmUgdXNlZCBwcmVmZXJlbnRpYWxseSBpbnN0ZWFkIG9mCisuXCIgLkJSIHVuaW5pdF9iZyAuCisuXCIgLmJyCisuXCIgLkIgRnV0dXJlIGZlYXR1cmUsIGF2YWlsYWJsZSBpbiBlMmZzcHJvZ3MgMS40My1XSVAKKy5UUAorLkIgbWV0YV9iZworLmJyCitUaGlzIGV4dDQgZmVhdHVyZSBhbGxvd3MgZmlsZSBzeXN0ZW1zIHRvIGJlIHJlc2l6ZWQgb24tbGluZSB3aXRob3V0IGV4cGxpY2l0bHkKK25lZWRpbmcgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgZ3Jvd3RoIGluIHRoZSBzaXplIG9mIHRoZSBibG9jayBncm91cAorZGVzY3JpcHRvcnMuICBUaGlzIHNjaGVtZSBpcyBhbHNvIHVzZWQgdG8gcmVzaXplIGZpbGUgc3lzdGVtcyB3aGljaCBhcmUKK2xhcmdlciB0aGFuIDJeMzIgYmxvY2tzLiAgSXQgaXMgbm90IHJlY29tbWVuZGVkIHRoYXQgdGhpcyBmZWF0dXJlIGJlIHNldAord2hlbiBhIGZpbGUgc3lzdGVtIGlzIGNyZWF0ZWQsIHNpbmNlIHRoaXMgYWx0ZXJuYXRlIG1ldGhvZCBvZiBzdG9yaW5nCit0aGUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgd2lsbCBzbG93IGRvd24gdGhlIHRpbWUgbmVlZGVkIHRvIG1vdW50IHRoZQorZmlsZSBzeXN0ZW0sIGFuZCBuZXdlciBrZXJuZWxzIGNhbiBhdXRvbWF0aWNhbGx5IHNldCB0aGlzIGZlYXR1cmUgYXMKK25lY2Vzc2FyeSB3aGVuIGRvaW5nIGFuIG9ubGluZSByZXNpemUgYW5kIG5vIG1vcmUgcmVzZXJ2ZWQgc3BhY2UgaXMKK2F2YWlsYWJsZSBpbiB0aGUgcmVzaXplIGlub2RlLgorLlRQCisuQiBtbXAKKy5icgorVGhpcyBleHQ0IGZlYXR1cmUgcHJvdmlkZXMgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiAoTU1QKS4gIE1NUCBoZWxwcyB0bworcHJvdGVjdCB0aGUgZmlsZXN5c3RlbSBmcm9tIGJlaW5nIG11bHRpcGx5IG1vdW50ZWQgYW5kIGlzIHVzZWZ1bCBpbgorc2hhcmVkIHN0b3JhZ2UgZW52aXJvbm1lbnRzLgorLklQCitDYXVzZXMgdGhlIHF1b3RhIGZpbGVzIChpLmUuLCB1c2VyLnF1b3RhIGFuZAorZ3JvdXAucXVvdGEgd2hpY2ggZXhpc3RlZAoraW4gdGhlIG9sZGVyIHF1b3RhIGRlc2lnbikgdG8gYmUgaGlkZGVuIGlub2Rlcy4KKy5UUAorLkIgcHJvamVjdAorLmJyCitUaGlzIGV4dDQgZmVhdHVyZSBwcm92aWRlcyBwcm9qZWN0IHF1b3RhIHN1cHBvcnQuIFdpdGggdGhpcyBmZWF0dXJlLAordGhlIHByb2plY3QgSUQgb2YgaW5vZGUgd2lsbCBiZSBtYW5hZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4KKy5UUAorLkIgcXVvdGEKKy5icgorQ3JlYXRlIHF1b3RhIGlub2RlcyAoaW5vZGUgIzMgZm9yIHVzZXJxdW90YSBhbmQgaW5vZGUKKyM0IGZvciBncm91cCBxdW90YSkgYW5kIHNldCB0aGVtIGluIHRoZSBzdXBlcmJsb2NrLgorV2l0aCB0aGlzIGZlYXR1cmUsIHRoZSBxdW90YXMgd2lsbCBiZSBlbmFibGVkCithdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4KKy5UUAorLkIgcmVzaXplX2lub2RlCisuYnIKK1RoaXMgZmlsZSBzeXN0ZW0gZmVhdHVyZSBpbmRpY2F0ZXMgdGhhdCBzcGFjZSBoYXMgYmVlbiByZXNlcnZlZCBzbyB0aGF0Cit0aGUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciB0YWJsZSBjYW4gYmUgZXh0ZW5kZWQgd2hpbGUgcmVzaXppbmcgYSBtb3VudGVkCitmaWxlIHN5c3RlbS4gIFRoZSBvbmxpbmUgcmVzaXplIG9wZXJhdGlvbgoraXMgY2FycmllZCBvdXQgYnkgdGhlIGtlcm5lbCwgdHJpZ2dlcmVkIGJ5CisuQlIgcmVzaXplMmZzICg4KS4KK0J5IGRlZmF1bHQKKy5CIG1rZTJmcword2lsbCBhdHRlbXB0IHRvIHJlc2VydmUgZW5vdWdoIHNwYWNlIHNvIHRoYXQgdGhlCitmaWxlc3lzdGVtIG1heSBncm93IHRvIDEwMjQgdGltZXMgaXRzIGluaXRpYWwgc2l6ZS4gIFRoaXMgY2FuIGJlIGNoYW5nZWQKK3VzaW5nIHRoZQorLkIgcmVzaXplCitleHRlbmRlZCBvcHRpb24uCisuSVAKK1RoaXMgZmVhdHVyZSByZXF1aXJlcyB0aGF0IHRoZQorLkIgc3BhcnNlX3N1cGVyCitmZWF0dXJlIGJlIGVuYWJsZWQuCisuVFAKKy5CIHNwYXJzZV9zdXBlcgorLmJyCitUaGlzIGZpbGUgc3lzdGVtIGZlYXR1cmUgaXMgc2V0IG9uIGFsbCBtb2Rlcm4gZXh0MiwgZXh0MywgYW5kIGV4dDQgZmlsZQorc3lzdGVtcy4gIEl0IGluZGljYXRlcyB0aGF0IGJhY2t1cCBjb3BpZXMgb2YgdGhlIHN1cGVyYmxvY2sgYW5kIGJsb2NrCitncm91cCBkZXNjcmlwdG9ycyBhcmUgcHJlc2VudCBvbmx5IGluIGEgZmV3IGJsb2NrIGdyb3Vwcywgbm90IGFsbCBvZgordGhlbS4KKy5UUAorLkIgc3BhcnNlX3N1cGVyMgorLmJyCitUaGlzIGZlYXR1cmUgaW5kaWNhdGVzIHRoYXQgdGhlcmUgd2lsbCBvbmx5IGJlIGF0IG1vc3QgdHdvIGJhY2t1cAorc3VwZXJibG9ja3MgYW5kIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLiAgVGhlIGJsb2NrIGdyb3VwcyB1c2VkIHRvIHN0b3JlCit0aGUgYmFja3VwIHN1cGVyYmxvY2socykgYW5kIGJsb2NrZ3JvdXAgZGVzY3JpcHRvcihzKSBhcmUgc3RvcmVkIGluIHRoZQorc3VwZXJibG9jaywgYnV0IHR5cGljYWxseSwgb25lIHdpbGwgYmUgbG9jYXRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGJsb2NrCitncm91cCAjMSwgYW5kIG9uZSBpbiB0aGUgbGFzdCBibG9jayBncm91cCBpbiB0aGUgZmlsZSBzeXN0ZW0uICBUaGlzCitmZWF0dXJlIGlzIGVzc2VudGlhbGx5IGEgbW9yZSBleHRyZW1lIHZlcnNpb24gb2Ygc3BhcnNlX3N1cGVyIGFuZCBpcworZGVzaWduZWQgdG8gYWxsb3cgYSBtdWNoIGxhcmdlciBwZXJjZW50YWdlIG9mIHRoZSBkaXNrIHRvIGhhdmUKK2NvbnRpZ3VvdXMgYmxvY2tzIGF2YWlsYWJsZSBmb3IgZGF0YSBmaWxlcy4KKy5UUAorLkIgdW5pbml0X2JnCisuYnIKK1RoaXMgZXh0NCBmaWxlIHN5c3RlbSBmZWF0dXJlIGluZGljYXRlcyB0aGF0IHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycword2lsbCBiZSBwcm90ZWN0ZWQgdXNpbmcgY2hlY2tzdW1zLCBtYWtpbmcgaXQgc2FmZSBmb3IKKy5CUiBta2UyZnMgKDgpCit0byBjcmVhdGUgYSBmaWxlIHN5c3RlbSB3aXRob3V0IGluaXRpYWxpemluZyBhbGwgb2YgdGhlIGJsb2NrIGdyb3Vwcy4KK1RoZSBrZXJuZWwgd2lsbCBrZWVwIGEgaGlnaCB3YXRlcm1hcmsgb2YgdW51c2VkIGlub2RlcywgYW5kIGluaXRpYWxpemUKK2lub2RlIHRhYmxlcyBhbmQgYmxvY2tzIGxhemlseS4gIFRoaXMgZmVhdHVyZSBzcGVlZHMgdXAgdGhlIHRpbWUgdG8gY2hlY2sKK3RoZSBmaWxlIHN5c3RlbSB1c2luZworLkJSIGUyZnNjayAoOCksCithbmQgaXQgYWxzbyBzcGVlZHMgdXAgdGhlIHRpbWUgcmVxdWlyZWQgZm9yCisuQlIgbWtlMmZzICg4KQordG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbS4KKy5TSCBNT1VOVCBPUFRJT05TCitUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIG1vdW50IG9wdGlvbnMgd2hpY2ggYXJlIHNwZWNpZmljIHRvIGV4dDIsIGV4dDMsCithbmQgZXh0NC4gIE90aGVyIGdlbmVyaWMgbW91bnQgb3B0aW9ucyBtYXkgYmUgdXNlZCBhcyB3ZWxsOyBzZWUKKy5CUiBtb3VudCAoOCkKK2ZvciBkZXRhaWxzLgorLlNIICJNb3VudCBvcHRpb25zIGZvciBleHQyIgorVGhlIGBleHQyJyBmaWxlc3lzdGVtIGlzIHRoZSBzdGFuZGFyZCBMaW51eCBmaWxlc3lzdGVtLgorU2luY2UgTGludXggMi41LjQ2LCBmb3IgbW9zdCBtb3VudCBvcHRpb25zIHRoZSBkZWZhdWx0CitpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIFNldCB0aGVtIHdpdGgKKy5CUiB0dW5lMmZzICg4KS4KKy5UUAorLkJSIGFjbCB8IG5vYWNsCitTdXBwb3J0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChvciBub3QpLiAgU2VlIHRoZQorLkJSIGFjbCAoNSkKK21hbnVhbCBwYWdlLgorLlRQCisuQlIgYnNkZGYgfCBtaW5peGRmCitTZXQgdGhlIGJlaGF2aW9yIGZvciB0aGUKKy5JIHN0YXRmcworc3lzdGVtIGNhbGwuIFRoZQorLkIgbWluaXhkZgorYmVoYXZpb3IgaXMgdG8gcmV0dXJuIGluIHRoZQorLkkgZl9ibG9ja3MKK2ZpZWxkIHRoZSB0b3RhbCBudW1iZXIgb2YgYmxvY2tzIG9mIHRoZSBmaWxlc3lzdGVtLCB3aGlsZSB0aGUKKy5CIGJzZGRmCitiZWhhdmlvciAod2hpY2ggaXMgdGhlIGRlZmF1bHQpIGlzIHRvIHN1YnRyYWN0IHRoZSBvdmVyaGVhZCBibG9ja3MKK3VzZWQgYnkgdGhlIGV4dDIgZmlsZXN5c3RlbSBhbmQgbm90IGF2YWlsYWJsZSBmb3IgZmlsZSBzdG9yYWdlLiBUaHVzCisuc3AgMQorJSBtb3VudCAvayBcLW8gbWluaXhkZjsgZGYgL2s7IHVtb3VudCAvaworLlRTCit0YWIoIyk7CitsMiBsMiByMiBsMiBsMiBsCitsIGMgciBjIGMgbC4KK0ZpbGVzeXN0ZW0jMTAyNC1ibG9ja3MjVXNlZCNBdmFpbGFibGUjQ2FwYWNpdHkjTW91bnRlZCBvbgorL2Rldi9zZGE2IzI2MzA2NTUjODY5NTQjMjQxMjE2OSMzJSMvaworLlRFCisuc3AgMQorJSBtb3VudCAvayBcLW8gYnNkZGY7IGRmIC9rOyB1bW91bnQgL2sKKy5UUwordGFiKCMpOworbDIgbDIgcjIgbDIgbDIgbAorbCBjIHIgYyBjIGwuCitGaWxlc3lzdGVtIzEwMjQtYmxvY2tzI1VzZWQjQXZhaWxhYmxlI0NhcGFjaXR5I01vdW50ZWQgb24KKy9kZXYvc2RhNiMyNTQzNzE0IzEzIzI0MTIxNjkjMCUjL2sKKy5URQorLnNwIDEKKyhOb3RlIHRoYXQgdGhpcyBleGFtcGxlIHNob3dzIHRoYXQgb25lIGNhbiBhZGQgY29tbWFuZCBsaW5lIG9wdGlvbnMKK3RvIHRoZSBvcHRpb25zIGdpdmVuIGluCisuSVIgL2V0Yy9mc3RhYiAuKQorLlRQCisuQlIgY2hlY2s9bm9uZSAiIG9yICIgbm9jaGVjaworTm8gY2hlY2tpbmcgaXMgZG9uZSBhdCBtb3VudCB0aW1lLiBUaGlzIGlzIHRoZSBkZWZhdWx0LiBUaGlzIGlzIGZhc3QuCitJdCBpcyB3aXNlIHRvIGludm9rZQorLkJSIGUyZnNjayAoOCkKK2V2ZXJ5IG5vdyBhbmQgdGhlbiwgZS5nLlwmIGF0IGJvb3QgdGltZS4gVGhlIG5vbi1kZWZhdWx0IGJlaGF2aW9yIGlzIHVuc3VwcG9ydGVkCisoY2hlY2s9bm9ybWFsIGFuZCBjaGVjaz1zdHJpY3Qgb3B0aW9ucyBoYXZlIGJlZW4gcmVtb3ZlZCkuIE5vdGUgdGhhdCB0aGVzZSBtb3VudCBvcHRpb25zCitkb24ndCBoYXZlIHRvIGJlIHN1cHBvcnRlZCBpZiBleHQ0IGtlcm5lbCBkcml2ZXIgaXMgdXNlZCBmb3IgZXh0MiBhbmQgZXh0MyBmaWxlc3lzdGVtcy4KKy5UUAorLkIgZGVidWcKK1ByaW50IGRlYnVnZ2luZyBpbmZvIHVwb24gZWFjaCAocmUpbW91bnQuCisuVFAKKy5CUiBlcnJvcnM9IHsgY29udGludWUgfCByZW1vdW50LXJvIHwgcGFuaWMgfQorRGVmaW5lIHRoZSBiZWhhdmlvciB3aGVuIGFuIGVycm9yIGlzIGVuY291bnRlcmVkLgorKEVpdGhlciBpZ25vcmUgZXJyb3JzIGFuZCBqdXN0IG1hcmsgdGhlIGZpbGVzeXN0ZW0gZXJyb25lb3VzIGFuZCBjb250aW51ZSwKK29yIHJlbW91bnQgdGhlIGZpbGVzeXN0ZW0gcmVhZC1vbmx5LCBvciBwYW5pYyBhbmQgaGFsdCB0aGUgc3lzdGVtLikKK1RoZSBkZWZhdWx0IGlzIHNldCBpbiB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLCBhbmQgY2FuIGJlCitjaGFuZ2VkIHVzaW5nCisuQlIgdHVuZTJmcyAoOCkuCisuVFAKKy5CUiBncnBpZCB8IGJzZGdyb3VwcyAiIGFuZCAiIG5vZ3JwaWQgfCBzeXN2Z3JvdXBzCitUaGVzZSBvcHRpb25zIGRlZmluZSB3aGF0IGdyb3VwIGlkIGEgbmV3bHkgY3JlYXRlZCBmaWxlIGdldHMuCitXaGVuCisuQiBncnBpZAoraXMgc2V0LCBpdCB0YWtlcyB0aGUgZ3JvdXAgaWQgb2YgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBpdCBpcyBjcmVhdGVkOworb3RoZXJ3aXNlICh0aGUgZGVmYXVsdCkgaXQgdGFrZXMgdGhlIGZzZ2lkIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MsIHVubGVzcwordGhlIGRpcmVjdG9yeSBoYXMgdGhlIHNldGdpZCBiaXQgc2V0LCBpbiB3aGljaCBjYXNlIGl0IHRha2VzIHRoZSBnaWQKK2Zyb20gdGhlIHBhcmVudCBkaXJlY3RvcnksIGFuZCBhbHNvIGdldHMgdGhlIHNldGdpZCBiaXQgc2V0CitpZiBpdCBpcyBhIGRpcmVjdG9yeSBpdHNlbGYuCisuVFAKKy5CUiBncnBxdW90YSB8IG5vcXVvdGEgfCBxdW90YSB8IHVzcnF1b3RhCitUaGUgdXNycXVvdGEgKHNhbWUgYXMgcXVvdGEpIG1vdW50IG9wdGlvbiBlbmFibGVzIHVzZXIgcXVvdGEgc3VwcG9ydCBvbiB0aGUKK2ZpbGVzeXN0ZW0uIGdycHF1b3RhIGVuYWJsZXMgZ3JvdXAgcXVvdGFzIHN1cHBvcnQuIFlvdSBuZWVkIHRoZSBxdW90YSB1dGlsaXRpZXMKK3RvIGFjdHVhbGx5IGVuYWJsZSBhbmQgbWFuYWdlIHRoZSBxdW90YSBzeXN0ZW0uCisuVFAKKy5CIG5vdWlkMzIKK0Rpc2FibGVzIDMyLWJpdCBVSURzIGFuZCBHSURzLiAgVGhpcyBpcyBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoIG9sZGVyCitrZXJuZWxzIHdoaWNoIG9ubHkgc3RvcmUgYW5kIGV4cGVjdCAxNi1iaXQgdmFsdWVzLgorLlRQCisuQlIgb2xkYWxsb2MgIiBvciAiIG9ybG92CitVc2Ugb2xkIGFsbG9jYXRvciBvciBPcmxvdiBhbGxvY2F0b3IgZm9yIG5ldyBpbm9kZXMuIE9ybG92IGlzIGRlZmF1bHQuCisuVFAKK1xmQnJlc2dpZD1cZlBcLFxmSW5cZlAgYW5kIFxmQnJlc3VpZD1cZlBcLFxmSW5cZlAKK1RoZSBleHQyIGZpbGVzeXN0ZW0gcmVzZXJ2ZXMgYSBjZXJ0YWluIHBlcmNlbnRhZ2Ugb2YgdGhlIGF2YWlsYWJsZQorc3BhY2UgKGJ5IGRlZmF1bHQgNSUsIHNlZQorLkJSIG1rZTJmcyAoOCkKK2FuZAorLkJSIHR1bmUyZnMgKDgpKS4KK1RoZXNlIG9wdGlvbnMgZGV0ZXJtaW5lIHdobyBjYW4gdXNlIHRoZSByZXNlcnZlZCBibG9ja3MuCisoUm91Z2hseTogd2hvZXZlciBoYXMgdGhlIHNwZWNpZmllZCB1aWQsIG9yIGJlbG9uZ3MgdG8gdGhlIHNwZWNpZmllZCBncm91cC4pCisuVFAKKy5CSSBzYj0gbgorSW5zdGVhZCBvZiBibG9jayAxLCB1c2UgYmxvY2sKKy5JIG4KK2FzIHN1cGVyYmxvY2suIFRoaXMgY291bGQgYmUgdXNlZnVsIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaGFzIGJlZW4gZGFtYWdlZC4KKyhFYXJsaWVyLCBjb3BpZXMgb2YgdGhlIHN1cGVyYmxvY2sgd291bGQgYmUgbWFkZSBldmVyeSA4MTkyIGJsb2NrczogaW4KK2Jsb2NrIDEsIDgxOTMsIDE2Mzg1LCBcJi4uLlwmIChhbmQgb25lIGdvdCB0aG91c2FuZHMgb2YgY29waWVzIG9uCithIGJpZyBmaWxlc3lzdGVtKS4gU2luY2UgdmVyc2lvbiAxLjA4LAorLkIgbWtlMmZzCitoYXMgYSBcLXMgKHNwYXJzZSBzdXBlcmJsb2NrKSBvcHRpb24gdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgYmFja3VwCitzdXBlcmJsb2NrcywgYW5kIHNpbmNlIHZlcnNpb24gMS4xNSB0aGlzIGlzIHRoZSBkZWZhdWx0LiBOb3RlCit0aGF0IHRoaXMgbWF5IG1lYW4gdGhhdCBleHQyIGZpbGVzeXN0ZW1zIGNyZWF0ZWQgYnkgYSByZWNlbnQKKy5CIG1rZTJmcworY2Fubm90IGJlIG1vdW50ZWQgci93IHVuZGVyIExpbnV4IDIuMC4qLikKK1RoZSBibG9jayBudW1iZXIgaGVyZSB1c2VzIDFcIGsgdW5pdHMuIFRodXMsIGlmIHlvdSB3YW50IHRvIHVzZSBsb2dpY2FsCitibG9jayAzMjc2OCBvbiBhIGZpbGVzeXN0ZW0gd2l0aCA0XCBrIGJsb2NrcywgdXNlICJzYj0xMzEwNzIiLgorLlRQCisuQlIgdXNlcl94YXR0ciB8IG5vdXNlcl94YXR0cgorU3VwcG9ydCAidXNlci4iIGV4dGVuZGVkIGF0dHJpYnV0ZXMgKG9yIG5vdCkuCisKKworLlNIICJNb3VudCBvcHRpb25zIGZvciBleHQzIgorVGhlIGV4dDMgZmlsZXN5c3RlbSBpcyBhIHZlcnNpb24gb2YgdGhlIGV4dDIgZmlsZXN5c3RlbSB3aGljaCBoYXMgYmVlbgorZW5oYW5jZWQgd2l0aCBqb3VybmFsaW5nLiAgSXQgc3VwcG9ydHMgdGhlIHNhbWUgb3B0aW9ucyBhcyBleHQyIGFzCit3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25zOgorLlRQCisuQlIgam91cm5hbF9kZXY9ZGV2bnVtIC8gam91cm5hbF9wYXRoPXBhdGgKK1doZW4gdGhlIGV4dGVybmFsIGpvdXJuYWwgZGV2aWNlJ3MgbWFqb3IvbWlub3IgbnVtYmVycworaGF2ZSBjaGFuZ2VkLCB0aGVzZSBvcHRpb25zIGFsbG93IHRoZSB1c2VyIHRvIHNwZWNpZnkKK3RoZSBuZXcgam91cm5hbCBsb2NhdGlvbi4gIFRoZSBqb3VybmFsIGRldmljZSBpcworaWRlbnRpZmllZCBlaXRoZXIgdGhyb3VnaCBpdHMgbmV3IG1ham9yL21pbm9yIG51bWJlcnMgZW5jb2RlZAoraW4gZGV2bnVtLCBvciB2aWEgYSBwYXRoIHRvIHRoZSBkZXZpY2UuCisuVFAKKy5CUiBub3JlY292ZXJ5IC8gbm9sb2FkCitEb24ndCBsb2FkIHRoZSBqb3VybmFsIG9uIG1vdW50aW5nLiAgTm90ZSB0aGF0CitpZiB0aGUgZmlsZXN5c3RlbSB3YXMgbm90IHVubW91bnRlZCBjbGVhbmx5LAorc2tpcHBpbmcgdGhlIGpvdXJuYWwgcmVwbGF5IHdpbGwgbGVhZCB0byB0aGUKK2ZpbGVzeXN0ZW0gY29udGFpbmluZyBpbmNvbnNpc3RlbmNpZXMgdGhhdCBjYW4KK2xlYWQgdG8gYW55IG51bWJlciBvZiBwcm9ibGVtcy4KKy5UUAorLkJSIGRhdGE9IHsgam91cm5hbCB8IG9yZGVyZWQgfCB3cml0ZWJhY2sgfQorU3BlY2lmaWVzIHRoZSBqb3VybmFsaW5nIG1vZGUgZm9yIGZpbGUgZGF0YS4gIE1ldGFkYXRhIGlzIGFsd2F5cyBqb3VybmFsZWQuCitUbyB1c2UgbW9kZXMgb3RoZXIgdGhhbgorLkIgb3JkZXJlZAorb24gdGhlIHJvb3QgZmlsZXN5c3RlbSwgcGFzcyB0aGUgbW9kZSB0byB0aGUga2VybmVsIGFzIGJvb3QgcGFyYW1ldGVyLCBlLmcuXCYKKy5JUiByb290ZmxhZ3M9ZGF0YT1qb3VybmFsIC4KKy5SUworLlRQCisuQiBqb3VybmFsCitBbGwgZGF0YSBpcyBjb21taXR0ZWQgaW50byB0aGUgam91cm5hbCBwcmlvciB0byBiZWluZyB3cml0dGVuIGludG8gdGhlCittYWluIGZpbGVzeXN0ZW0uCisuVFAKKy5CIG9yZGVyZWQKK1RoaXMgaXMgdGhlIGRlZmF1bHQgbW9kZS4gIEFsbCBkYXRhIGlzIGZvcmNlZCBkaXJlY3RseSBvdXQgdG8gdGhlIG1haW4gZmlsZQorc3lzdGVtIHByaW9yIHRvIGl0cyBtZXRhZGF0YSBiZWluZyBjb21taXR0ZWQgdG8gdGhlIGpvdXJuYWwuCisuVFAKKy5CIHdyaXRlYmFjaworRGF0YSBvcmRlcmluZyBpcyBub3QgcHJlc2VydmVkIFwoZW4gZGF0YSBtYXkgYmUgd3JpdHRlbiBpbnRvIHRoZSBtYWluCitmaWxlc3lzdGVtIGFmdGVyIGl0cyBtZXRhZGF0YSBoYXMgYmVlbiBjb21taXR0ZWQgdG8gdGhlIGpvdXJuYWwuCitUaGlzIGlzIHJ1bW91cmVkIHRvIGJlIHRoZSBoaWdoZXN0LXRocm91Z2hwdXQgb3B0aW9uLiAgSXQgZ3VhcmFudGVlcworaW50ZXJuYWwgZmlsZXN5c3RlbSBpbnRlZ3JpdHksIGhvd2V2ZXIgaXQgY2FuIGFsbG93IG9sZCBkYXRhIHRvIGFwcGVhcgoraW4gZmlsZXMgYWZ0ZXIgYSBjcmFzaCBhbmQgam91cm5hbCByZWNvdmVyeS4KKy5SRQorLlRQCisuQiBkYXRhX2Vycj1pZ25vcmUKK0p1c3QgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBpZiBhbiBlcnJvciBvY2N1cnMgaW4gYSBmaWxlIGRhdGEgYnVmZmVyIGluCitvcmRlcmVkIG1vZGUuCisuVFAKKy5CIGRhdGFfZXJyPWFib3J0CitBYm9ydCB0aGUgam91cm5hbCBpZiBhbiBlcnJvciBvY2N1cnMgaW4gYSBmaWxlIGRhdGEgYnVmZmVyIGluIG9yZGVyZWQgbW9kZS4KKy5UUAorLkJSIGJhcnJpZXI9MCAiIC8gIiBiYXJyaWVyPTEgIgorVGhpcyBkaXNhYmxlcyAvIGVuYWJsZXMgdGhlIHVzZSBvZiB3cml0ZSBiYXJyaWVycyBpbiB0aGUgamJkIGNvZGUuICBiYXJyaWVyPTAKK2Rpc2FibGVzLCBiYXJyaWVyPTEgZW5hYmxlcyAoZGVmYXVsdCkuIFRoaXMgYWxzbyByZXF1aXJlcyBhbiBJTyBzdGFjayB3aGljaCBjYW4KK3N1cHBvcnQgYmFycmllcnMsIGFuZCBpZiBqYmQgZ2V0cyBhbiBlcnJvciBvbiBhIGJhcnJpZXIgd3JpdGUsIGl0IHdpbGwgZGlzYWJsZQorYmFycmllcnMgYWdhaW4gd2l0aCBhIHdhcm5pbmcuICBXcml0ZSBiYXJyaWVycyBlbmZvcmNlIHByb3BlciBvbi1kaXNrIG9yZGVyaW5nCitvZiBqb3VybmFsIGNvbW1pdHMsIG1ha2luZyB2b2xhdGlsZSBkaXNrIHdyaXRlIGNhY2hlcyBzYWZlIHRvIHVzZSwgYXQgc29tZQorcGVyZm9ybWFuY2UgcGVuYWx0eS4gIElmIHlvdXIgZGlza3MgYXJlIGJhdHRlcnktYmFja2VkIGluIG9uZSB3YXkgb3IgYW5vdGhlciwKK2Rpc2FibGluZyBiYXJyaWVycyBtYXkgc2FmZWx5IGltcHJvdmUgcGVyZm9ybWFuY2UuCisuVFAKKy5CSSBjb21taXQ9IG5yc2VjCitTeW5jIGFsbCBkYXRhIGFuZCBtZXRhZGF0YSBldmVyeQorLkkgbnJzZWMKK3NlY29uZHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDUgc2Vjb25kcy4gWmVybyBtZWFucyBkZWZhdWx0LgorLlRQCisuQiB1c2VyX3hhdHRyCitFbmFibGUgRXh0ZW5kZWQgVXNlciBBdHRyaWJ1dGVzLiBTZWUgdGhlCisuQlIgYXR0ciAoNSkKK21hbnVhbCBwYWdlLgorLlRQCisuQlIgdXNyanF1b3RhPWFxdW90YS51c2VyIHwgZ3JwanF1b3RhPWFxdW90YS5ncm91cCB8IGpxZm10PXZmc3YwCitBcGFydCBmcm9tIHRoZSBvbGQgcXVvdGEgc3lzdGVtIChhcyBpbiBleHQyLCBqcWZtdD12ZnNvbGQgYWthIHZlcnNpb24gMSBxdW90YSkKK2V4dDMgYWxzbyBzdXBwb3J0cyBqb3VybmFsZWQgcXVvdGFzICh2ZXJzaW9uIDIgcXVvdGEpLiBqcWZtdD12ZnN2MAorZW5hYmxlcyBqb3VybmFsZWQgcXVvdGFzLiBGb3Igam91cm5hbGVkIHF1b3RhcyB0aGUgbW91bnQgb3B0aW9ucwordXNyanF1b3RhPWFxdW90YS51c2VyIGFuZCBncnBqcXVvdGE9YXF1b3RhLmdyb3VwIGFyZSByZXF1aXJlZCB0byB0ZWxsIHRoZQorcXVvdGEgc3lzdGVtIHdoaWNoIHF1b3RhIGRhdGFiYXNlIGZpbGVzIHRvIHVzZS4gSm91cm5hbGVkIHF1b3RhcyBoYXZlIHRoZQorYWR2YW50YWdlIHRoYXQgZXZlbiBhZnRlciBhIGNyYXNoIG5vIHF1b3RhIGNoZWNrIGlzIHJlcXVpcmVkLgorCisuU0ggIk1vdW50IG9wdGlvbnMgZm9yIGV4dDQiCitUaGUgZXh0NCBmaWxlc3lzdGVtIGlzIGFuIGFkdmFuY2VkIGxldmVsIG9mIHRoZSBleHQzIGZpbGVzeXN0ZW0gd2hpY2gKK2luY29ycG9yYXRlcyBzY2FsYWJpbGl0eSBhbmQgcmVsaWFiaWxpdHkgZW5oYW5jZW1lbnRzIGZvciBzdXBwb3J0aW5nIGxhcmdlCitmaWxlc3lzdGVtLgorCitUaGUgb3B0aW9ucworLkIgam91cm5hbF9kZXYsIG5vcmVjb3ZlcnksIG5vbG9hZCwgZGF0YSwgY29tbWl0LCBvcmxvdiwgb2xkYWxsb2MsIFtub111c2VyX3hhdHRyCisuQiBbbm9dYWNsLCBic2RkZiwgbWluaXhkZiwgZGVidWcsIGVycm9ycywgZGF0YV9lcnIsIGdycGlkLCBic2Rncm91cHMsIG5vZ3JwaWQKKy5CIHN5c3Zncm91cHMsIHJlc2dpZCwgcmVzdWlkLCBzYiwgcXVvdGEsIG5vcXVvdGEsIG5vdWlkMzIsIGdycHF1b3RhLCB1c3JxdW90YQorLkIgdXNyanF1b3RhLCBncnBqcXVvdGEgYW5kIGpxZm10CithcmUgYmFja3dhcmRseSBjb21wYXRpYmxlIHdpdGggZXh0MyBvciBleHQyLgorLlRQCisuQiBqb3VybmFsX2NoZWNrc3VtCitFbmFibGUgY2hlY2tzdW1taW5nIG9mIHRoZSBqb3VybmFsIHRyYW5zYWN0aW9ucy4gIFRoaXMgd2lsbCBhbGxvdyB0aGUgcmVjb3ZlcnkKK2NvZGUgaW4gZTJmc2NrIGFuZCB0aGUga2VybmVsIHRvIGRldGVjdCBjb3JydXB0aW9uIGluIHRoZSBrZXJuZWwuICBJdCBpcyBhCitjb21wYXRpYmxlIGNoYW5nZSBhbmQgd2lsbCBiZSBpZ25vcmVkIGJ5IG9sZGVyIGtlcm5lbHMuCisuVFAKKy5CIGpvdXJuYWxfYXN5bmNfY29tbWl0CitDb21taXQgYmxvY2sgY2FuIGJlIHdyaXR0ZW4gdG8gZGlzayB3aXRob3V0IHdhaXRpbmcgZm9yIGRlc2NyaXB0b3IgYmxvY2tzLiBJZgorZW5hYmxlZCBvbGRlciBrZXJuZWxzIGNhbm5vdCBtb3VudCB0aGUgZGV2aWNlLgorVGhpcyB3aWxsIGVuYWJsZSAnam91cm5hbF9jaGVja3N1bScgaW50ZXJuYWxseS4KKy5UUAorLkJSIGJhcnJpZXI9MCAiIC8gIiBiYXJyaWVyPTEgIiAvICIgYmFycmllciAiIC8gIiBub2JhcnJpZXIKK1RoZXNlIG1vdW50IG9wdGlvbnMgaGF2ZSB0aGUgc2FtZSBlZmZlY3QgYXMgaW4gZXh0My4gIFRoZSBtb3VudCBvcHRpb25zCisiYmFycmllciIgYW5kICJub2JhcnJpZXIiIGFyZSBhZGRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBleHQ0IG1vdW50CitvcHRpb25zLgorCitUaGUgZXh0NCBmaWxlc3lzdGVtIGVuYWJsZXMgd3JpdGUgYmFycmllcnMgYnkgZGVmYXVsdC4KKy5UUAorLkJJIGlub2RlX3JlYWRhaGVhZF9ibGtzPSBuCitUaGlzIHR1bmluZyBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGlub2RlIHRhYmxlIGJsb2NrcyB0aGF0CitleHQ0J3MgaW5vZGUgdGFibGUgcmVhZGFoZWFkIGFsZ29yaXRobSB3aWxsIHByZS1yZWFkIGludG8gdGhlIGJ1ZmZlciBjYWNoZS4KK1RoZSB2YWx1ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMzIgYmxvY2tzLgorLlRQCisuQkkgc3RyaXBlPSBuCitOdW1iZXIgb2YgZmlsZXN5c3RlbSBibG9ja3MgdGhhdCBtYmFsbG9jIHdpbGwgdHJ5IHRvIHVzZSBmb3IgYWxsb2NhdGlvbiBzaXplCithbmQgYWxpZ25tZW50LiBGb3IgUkFJRDUvNiBzeXN0ZW1zIHRoaXMgc2hvdWxkIGJlIHRoZSBudW1iZXIgb2YgZGF0YSBkaXNrcyAqCitSQUlEIGNodW5rIHNpemUgaW4gZmlsZXN5c3RlbSBibG9ja3MuCisuVFAKKy5CIGRlbGFsbG9jCitEZWZlcnJpbmcgYmxvY2sgYWxsb2NhdGlvbiB1bnRpbCB3cml0ZS1vdXQgdGltZS4KKy5UUAorLkIgbm9kZWxhbGxvYworRGlzYWJsZSBkZWxheWVkIGFsbG9jYXRpb24uIEJsb2NrcyBhcmUgYWxsb2NhdGVkIHdoZW4gZGF0YSBpcyBjb3BpZWQgZnJvbSB1c2VyCit0byBwYWdlIGNhY2hlLgorLlRQCisuQkkgbWF4X2JhdGNoX3RpbWU9IHVzZWMKK01heGltdW0gYW1vdW50IG9mIHRpbWUgZXh0NCBzaG91bGQgd2FpdCBmb3IgYWRkaXRpb25hbCBmaWxlc3lzdGVtIG9wZXJhdGlvbnMgdG8KK2JlIGJhdGNoIHRvZ2V0aGVyIHdpdGggYSBzeW5jaHJvbm91cyB3cml0ZSBvcGVyYXRpb24uIFNpbmNlIGEgc3luY2hyb25vdXMKK3dyaXRlIG9wZXJhdGlvbiBpcyBnb2luZyB0byBmb3JjZSBhIGNvbW1pdCBhbmQgdGhlbiBhIHdhaXQgZm9yIHRoZSBJL08KK2NvbXBsZXRlLCBpdCBkb2Vzbid0IGNvc3QgbXVjaCwgYW5kIGNhbiBiZSBhIGh1Z2UgdGhyb3VnaHB1dCB3aW4sIHdlIHdhaXQgZm9yIGEKK3NtYWxsIGFtb3VudCBvZiB0aW1lIHRvIHNlZSBpZiBhbnkgb3RoZXIgdHJhbnNhY3Rpb25zIGNhbiBwaWdneWJhY2sgb24gdGhlCitzeW5jaHJvbm91cyB3cml0ZS4gVGhlIGFsZ29yaXRobSB1c2VkIGlzIGRlc2lnbmVkIHRvIGF1dG9tYXRpY2FsbHkgdHVuZSBmb3IKK3RoZSBzcGVlZCBvZiB0aGUgZGlzaywgYnkgbWVhc3VyaW5nIHRoZSBhbW91bnQgb2YgdGltZSAob24gYXZlcmFnZSkgdGhhdCBpdAordGFrZXMgdG8gZmluaXNoIGNvbW1pdHRpbmcgYSB0cmFuc2FjdGlvbi4gQ2FsbCB0aGlzIHRpbWUgdGhlICJjb21taXQgdGltZSIuCitJZiB0aGUgdGltZSB0aGF0IHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBydW5uaW5nIGlzIGxlc3MgdGhhbiB0aGUgY29tbWl0IHRpbWUsCitleHQ0IHdpbGwgdHJ5IHNsZWVwaW5nIGZvciB0aGUgY29tbWl0IHRpbWUgdG8gc2VlIGlmIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBqb2luCit0aGUgdHJhbnNhY3Rpb24uIFRoZSBjb21taXQgdGltZSBpcyBjYXBwZWQgYnkgdGhlIG1heF9iYXRjaF90aW1lLCB3aGljaAorZGVmYXVsdHMgdG8gMTUwMDBcIFxbbWNdcyAoMTVcIG1zKS4gVGhpcyBvcHRpbWl6YXRpb24gY2FuIGJlIHR1cm5lZCBvZmYgZW50aXJlbHkgYnkKK3NldHRpbmcgbWF4X2JhdGNoX3RpbWUgdG8gMC4KKy5UUAorLkJJIG1pbl9iYXRjaF90aW1lPSB1c2VjCitUaGlzIHBhcmFtZXRlciBzZXRzIHRoZSBjb21taXQgdGltZSAoYXMgZGVzY3JpYmVkIGFib3ZlKSB0byBiZSBhdCBsZWFzdAorbWluX2JhdGNoX3RpbWUuIEl0IGRlZmF1bHRzIHRvIHplcm8gbWljcm9zZWNvbmRzLiBJbmNyZWFzaW5nIHRoaXMgcGFyYW1ldGVyCittYXkgaW1wcm92ZSB0aGUgdGhyb3VnaHB1dCBvZiBtdWx0aS10aHJlYWRlZCwgc3luY2hyb25vdXMgd29ya2xvYWRzIG9uIHZlcnkKK2Zhc3QgZGlza3MsIGF0IHRoZSBjb3N0IG9mIGluY3JlYXNpbmcgbGF0ZW5jeS4KKy5UUAorLkJJIGpvdXJuYWxfaW9wcmlvPSBwcmlvCitUaGUgSS9PIHByaW9yaXR5IChmcm9tIDAgdG8gNywgd2hlcmUgMCBpcyB0aGUgaGlnaGVzdCBwcmlvcml0eSkgd2hpY2ggc2hvdWxkIGJlCit1c2VkIGZvciBJL08gb3BlcmF0aW9ucyBzdWJtaXR0ZWQgYnkga2pvdXJuYWxkMiBkdXJpbmcgYSBjb21taXQgb3BlcmF0aW9uLgorVGhpcyBkZWZhdWx0cyB0byAzLCB3aGljaCBpcyBhIHNsaWdodGx5IGhpZ2hlciBwcmlvcml0eSB0aGFuIHRoZSBkZWZhdWx0IEkvTworcHJpb3JpdHkuCisuVFAKKy5CIGFib3J0CitTaW11bGF0ZSB0aGUgZWZmZWN0cyBvZiBjYWxsaW5nIGV4dDRfYWJvcnQoKSBmb3IKK2RlYnVnZ2luZyBwdXJwb3Nlcy4gIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB3aGlsZQorcmVtb3VudGluZyBhIGZpbGVzeXN0ZW0gd2hpY2ggaXMgYWxyZWFkeSBtb3VudGVkLgorLlRQCisuQlIgYXV0b19kYV9hbGxvYyB8IG5vYXV0b19kYV9hbGxvYworTWFueSBicm9rZW4gYXBwbGljYXRpb25zIGRvbid0IHVzZSBmc3luYygpIHdoZW4KK3JlcGxhY2luZyBleGlzdGluZyBmaWxlcyB2aWEgcGF0dGVybnMgc3VjaCBhcworCitmZCA9IG9wZW4oImZvby5uZXciKS93cml0ZShmZCwuLi4pL2Nsb3NlKGZkKS8gcmVuYW1lKCJmb28ubmV3IiwgImZvbyIpCisKK29yIHdvcnNlIHlldAorCitmZCA9IG9wZW4oImZvbyIsIE9fVFJVTkMpL3dyaXRlKGZkLC4uLikvY2xvc2UoZmQpLgorCitJZiBhdXRvX2RhX2FsbG9jIGlzIGVuYWJsZWQsIGV4dDQgd2lsbCBkZXRlY3QgdGhlIHJlcGxhY2UtdmlhLXJlbmFtZSBhbmQKK3JlcGxhY2UtdmlhLXRydW5jYXRlIHBhdHRlcm5zIGFuZCBmb3JjZSB0aGF0IGFueSBkZWxheWVkIGFsbG9jYXRpb24gYmxvY2tzIGFyZQorYWxsb2NhdGVkIHN1Y2ggdGhhdCBhdCB0aGUgbmV4dCBqb3VybmFsIGNvbW1pdCwgaW4gdGhlIGRlZmF1bHQgZGF0YT1vcmRlcmVkCittb2RlLCB0aGUgZGF0YSBibG9ja3Mgb2YgdGhlIG5ldyBmaWxlIGFyZSBmb3JjZWQgdG8gZGlzayBiZWZvcmUgdGhlIHJlbmFtZSgpCitvcGVyYXRpb24gaXMgY29tbWl0dGVkLiAgVGhpcyBwcm92aWRlcyByb3VnaGx5IHRoZSBzYW1lIGxldmVsIG9mIGd1YXJhbnRlZXMgYXMKK2V4dDMsIGFuZCBhdm9pZHMgdGhlICJ6ZXJvLWxlbmd0aCIgcHJvYmxlbSB0aGF0IGNhbiBoYXBwZW4gd2hlbiBhIHN5c3RlbQorY3Jhc2hlcyBiZWZvcmUgdGhlIGRlbGF5ZWQgYWxsb2NhdGlvbiBibG9ja3MgYXJlIGZvcmNlZCB0byBkaXNrLgorLlRQCisuQiBub2luaXRfaXRhYmxlCitEbyBub3QgaW5pdGlhbGl6ZSBhbnkgdW5pbml0aWFsaXplZCBpbm9kZSB0YWJsZSBibG9ja3MgaW4gdGhlIGJhY2tncm91bmQuIFRoaXMKK2ZlYXR1cmUgbWF5IGJlIHVzZWQgYnkgaW5zdGFsbGF0aW9uIENEJ3Mgc28gdGhhdCB0aGUgaW5zdGFsbCBwcm9jZXNzIGNhbgorY29tcGxldGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZTsgdGhlIGlub2RlIHRhYmxlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgd291bGQKK3RoZW4gYmUgZGVmZXJyZWQgdW50aWwgdGhlIG5leHQgdGltZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLgorLlRQCisuQiBpbml0X2l0YWJsZT1uCitUaGUgbGF6eSBpdGFibGUgaW5pdCBjb2RlIHdpbGwgd2FpdCBuIHRpbWVzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sKK3RvIHplcm8gb3V0IHRoZSBwcmV2aW91cyBibG9jayBncm91cCdzIGlub2RlIHRhYmxlLiBUaGlzIG1pbmltaXplcyB0aGUgaW1wYWN0IG9uCitzeXN0ZW0gcGVyZm9ybWFuY2Ugd2hpbGUgdGhlIGZpbGVzeXN0ZW0ncyBpbm9kZSB0YWJsZSBpcyBiZWluZyBpbml0aWFsaXplZC4KKy5UUAorLkJSIGRpc2NhcmQgLyBub2Rpc2NhcmQKK0NvbnRyb2xzIHdoZXRoZXIgZXh0NCBzaG91bGQgaXNzdWUgZGlzY2FyZC9UUklNIGNvbW1hbmRzIHRvIHRoZSB1bmRlcmx5aW5nCitibG9jayBkZXZpY2Ugd2hlbiBibG9ja3MgYXJlIGZyZWVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yIFNTRCBkZXZpY2VzIGFuZAorc3BhcnNlL3RoaW5seS1wcm92aXNpb25lZCBMVU5zLCBidXQgaXQgaXMgb2ZmIGJ5IGRlZmF1bHQgdW50aWwgc3VmZmljaWVudAordGVzdGluZyBoYXMgYmVlbiBkb25lLgorLlRQCisuQlIgYmxvY2tfdmFsaWRpdHkgLyBub2Jsb2NrX3ZhbGlkaXR5CitUaGlzIG9wdGlvbnMgZW5hYmxlcy9kaXNhYmxlcyB0aGUgaW4ta2VybmVsIGZhY2lsaXR5IGZvciB0cmFja2luZworZmlsZXN5c3RlbSBtZXRhZGF0YSBibG9ja3Mgd2l0aGluIGludGVybmFsIGRhdGEgc3RydWN0dXJlcy4gVGhpcyBhbGxvd3MgbXVsdGktXGMKK2Jsb2NrIGFsbG9jYXRvciBhbmQgb3RoZXIgcm91dGluZXMgdG8gcXVpY2tseSBsb2NhdGUgZXh0ZW50cyB3aGljaCBtaWdodAorb3ZlcmxhcCB3aXRoIGZpbGVzeXN0ZW0gbWV0YWRhdGEgYmxvY2tzLiBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgZGVidWdnaW5nCitwdXJwb3NlcyBhbmQgc2luY2UgaXQgbmVnYXRpdmVseSBhZmZlY3RzIHRoZSBwZXJmb3JtYW5jZSwgaXQgaXMgb2ZmIGJ5IGRlZmF1bHQuCisuVFAKKy5CUiBkaW9yZWFkX2xvY2sgLyBkaW9yZWFkX25vbG9jaworQ29udHJvbHMgd2hldGhlciBvciBub3QgZXh0NCBzaG91bGQgdXNlIHRoZSBESU8gcmVhZCBsb2NraW5nLiBJZiB0aGUKK2Rpb3JlYWRfbm9sb2NrIG9wdGlvbiBpcyBzcGVjaWZpZWQgZXh0NCB3aWxsIGFsbG9jYXRlIHVuaW5pdGlhbGl6ZWQgZXh0ZW50CitiZWZvcmUgYnVmZmVyIHdyaXRlIGFuZCBjb252ZXJ0IHRoZSBleHRlbnQgdG8gaW5pdGlhbGl6ZWQgYWZ0ZXIgSU8gY29tcGxldGVzLgorVGhpcyBhcHByb2FjaCBhbGxvd3MgZXh0NCBjb2RlIHRvIGF2b2lkIHVzaW5nIGlub2RlIG11dGV4LCB3aGljaCBpbXByb3Zlcworc2NhbGFiaWxpdHkgb24gaGlnaCBzcGVlZCBzdG9yYWdlcy4gSG93ZXZlciB0aGlzIGRvZXMgbm90IHdvcmsgd2l0aCBkYXRhCitqb3VybmFsaW5nIGFuZCBkaW9yZWFkX25vbG9jayBvcHRpb24gd2lsbCBiZSBpZ25vcmVkIHdpdGgga2VybmVsIHdhcm5pbmcuCitOb3RlIHRoYXQgZGlvcmVhZF9ub2xvY2sgY29kZSBwYXRoIGlzIG9ubHkgdXNlZCBmb3IgZXh0ZW50LWJhc2VkIGZpbGVzLgorQmVjYXVzZSBvZiB0aGUgcmVzdHJpY3Rpb25zIHRoaXMgb3B0aW9ucyBjb21wcmlzZXMgaXQgaXMgb2ZmIGJ5IGRlZmF1bHQKKyhlLmcuXCYgZGlvcmVhZF9sb2NrKS4KKy5UUAorLkIgbWF4X2Rpcl9zaXplX2tiPW4KK1RoaXMgbGltaXRzIHRoZSBzaXplIG9mIHRoZSBkaXJlY3RvcmllcyBzbyB0aGF0IGFueSBhdHRlbXB0IHRvIGV4cGFuZCB0aGVtCitiZXlvbmQgdGhlIHNwZWNpZmllZCBsaW1pdCBpbiBraWxvYnl0ZXMgd2lsbCBjYXVzZSBhbiBFTk9TUEMgZXJyb3IuIFRoaXMgaXMKK3VzZWZ1bCBpbiBtZW1vcnktY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLCB3aGVyZSBhIHZlcnkgbGFyZ2UgZGlyZWN0b3J5IGNhbgorY2F1c2Ugc2V2ZXJlIHBlcmZvcm1hbmNlIHByb2JsZW1zIG9yIGV2ZW4gcHJvdm9rZSB0aGUgT3V0IE9mIE1lbW9yeSBraWxsZXIuIChGb3IKK2V4YW1wbGUsIGlmIHRoZXJlIGlzIG9ubHkgNTEyXCBNQiBtZW1vcnkgYXZhaWxhYmxlLCBhIDE3NlwgTUIgZGlyZWN0b3J5IG1heQorc2VyaW91c2x5IGNyYW1wIHRoZSBzeXN0ZW0ncyBzdHlsZS4pCisuVFAKKy5CIGlfdmVyc2lvbgorRW5hYmxlIDY0LWJpdCBpbm9kZSB2ZXJzaW9uIHN1cHBvcnQuIFRoaXMgb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0LgorCisuU0ggRklMRSBBVFRSSUJVVEVTCitUaGUgZXh0MiwgZXh0MywgYW5kIGV4dDQgZmlsZXN5c3RlbXMgc3VwcG9ydCBzZXR0aW5nIHRoZSBmb2xsb3dpbmcgZmlsZQorYXR0cmlidXRlcyBvbiBMaW51eCBzeXN0ZW1zIHVzaW5nIHRoZQorLkJSIGNoYXR0ciAoMSkKK3V0aWxpdHk6Cisuc3AKKy5CUiBhICIgLSBhcHBlbmQgb25seSIKKy5zcAorLkJSIEEgIiAtIG5vIGF0aW1lIHVwZGF0ZXMiCisuc3AKKy5CUiBkICIgLSBubyBkdW1wIgorLnNwCisuQlIgRCAiIC0gc3luY2hyb25vdXMgZGlyZWN0b3J5IHVwZGF0ZXMiCisuc3AKKy5CUiBpICIgLSBpbW11dGFibGUiCisuc3AKKy5CUiBTICIgLSBzeW5jaHJvbm91cyB1cGRhdGVzIgorLnNwCisuQlIgdSAiIC0gdW5kZWxldGFibGUiCisuc3AKK0luIGFkZGl0aW9uLCB0aGUgZXh0MyBhbmQgZXh0NCBmaWxlc3lzdGVtcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgZmxhZzoKKy5zcAorLkJSIGogIiAtIGRhdGEgam91cm5hbGluZyIKKy5zcAorRmluYWxseSwgdGhlIGV4dDQgZmlsZXN5c3RlbSBhbHNvIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZmxhZzoKKy5zcAorLkJSIGUgIiAtIGV4dGVudHMgZm9ybWF0IgorLnNwCitGb3IgZGVzY3JpcHRpb25zIG9mIHRoZXNlIGF0dHJpYnV0ZSBmbGFncywgcGxlYXNlIHJlZmVyIHRvIHRoZQorLkJSIGNoYXR0ciAoMSkKK21hbiBwYWdlLgorLlNIIEtFUk5FTCBTVVBQT1JUCitUaGlzIHNlY3Rpb24gbGlzdHMgdGhlIGZpbGUgc3lzdGVtIGRyaXZlciAoZS5nLiwgZXh0MiwgZXh0MywgZXh0NCkgYW5kCit1cHN0cmVhbSBrZXJuZWwgdmVyc2lvbiB3aGVyZSBhIHBhcnRpY3VsYXIgZmlsZSBzeXN0ZW0gZmVhdHVyZSB3YXMKK3N1cHBvcnRlZC4gIE5vdGUgdGhhdCBpbiBzb21lIGNhc2VzIHRoZSBmZWF0dXJlIHdhcyBwcmVzZW50IGluIGVhcmxpZXIKK2tlcm5lbCB2ZXJzaW9ucywgYnV0IHRoZXJlIHdlcmUga25vd24sIHNlcmlvdXMgYnVncy4gIEluIG90aGVyIGNhc2VzIHRoZQorZmVhdHVyZSBtYXkgc3RpbGwgYmUgY29uc2lkZXJlZCBpbiBhbiBleHBlcmltZW50YWwgc3RhdGUuICBGaW5hbGx5LCBub3RlCit0aGF0IHNvbWUgZGlzdHJpYnV0aW9ucyBtYXkgaGF2ZSBiYWNrcG9ydGVkIGZlYXR1cmVzIGludG8gb2xkZXIga2VybmVsczsKK2luIHBhcnRpY3VsYXIgdGhlIGtlcm5lbCB2ZXJzaW9ucyBpbiBjZXJ0YWluICJlbnRlcnByaXNlIGRpc3RyaWJ1dGlvbnMiCitjYW4gYmUgZXh0cmVtZWx5IG1pc2xlYWRpbmcuCisuSVAgIlxmQmZpbGV0eXBlXGZSIiAyaW4KK2V4dDIsIDIuMi4wCisuSVAgIlxmQnNwYXJzZV9zdXBlclxmUiIgMmluCitleHQyLCAyLjIuMAorLklQICJcZkJsYXJnZV9maWxlXGZSIiAyaW4KK2V4dDIsIDIuMi4wCisuSVAgIlxmQmhhc19qb3VybmFsXGZSIiAyaW4KK2V4dDMsIDIuNC4xNQorLklQICJcZkJleHRfYXR0clxmUiIgMmluCitleHQyL2V4dDMsIDIuNi4wCisuSVAgIlxmQmRpcl9pbmRleFxmUiIgMmluCitleHQzLCAyLjYuMAorLklQICJcZkJyZXNpemVfaW5vZGVcZlIiIDJpbgorZXh0MywgMi42LjEwIChvbmxpbmUgcmVzaXppbmcpCisuSVAgIlxmQjY0Yml0XGZSIiAyaW4KK2V4dDQsIDIuNi4yOAorLklQICJcZkJkaXJfbmxpbmtcZlIiIDJpbgorZXh0NCwgMi42LjI4CisuSVAgIlxmQmV4dGVudFxmUiIgMmluCitleHQ0LCAyLjYuMjgKKy5JUCAiXGZCZXh0cmFfaXNpemVcZlIiIDJpbgorZXh0NCwgMi42LjI4CisuSVAgIlxmQmZsZXhfYmdcZlIiIDJpbgorZXh0NCwgMi42LjI4CisuSVAgIlxmQmh1Z2VfZmlsZVxmUiIgMmluCitleHQ0LCAyLjYuMjgKKy5JUCAiXGZCbWV0YV9iZ1xmUiIgMmluCitleHQ0LCAyLjYuMjgKKy5JUCAiXGZCdW5pbml0X2JnXGZSIiAyaW4KK2V4dDQsIDIuNi4yOAorLklQICJcZkJtbXBcZlIiIDJpbgorZXh0NCwgMy4wCisuSVAgIlxmQmJpZ2FsbG9jXGZSIiAyaW4KK2V4dDQsIDMuMgorLklQICJcZkJxdW90YVxmUiIgMmluCitleHQ0LCAzLjYKKy5JUCAiXGZCaW5saW5lX2RhdGFcZlIiIDJpbgorZXh0NCwgMy44CisuSVAgIlxmQnNwYXJzZV9zdXBlcjJcZlIiIDJpbgorZXh0NCwgMy4xNgorLklQICJcZkJtZXRkYXRhX2NzdW1cZlIiIDJpbgorZXh0NCwgMy4xOAorLklQICJcZkJlbmNyeXB0XGZSIiAyaW4KK2V4dDQsIDQuMQorLklQICJcZkJwcm9qZWN0XGZSIiAyaW4KK2V4dDQsIDQuNQorLlNIIFNFRSBBTFNPCisuQlIgbWtlMmZzICg4KSwKKy5CUiBta2UyZnMuY29uZiAoNSksCisuQlIgZTJmc2NrICg4KSwKKy5CUiBkdW1wZTJmcyAoOCksCisuQlIgdHVuZTJmcyAoOCksCisuQlIgZGVidWdmcyAoOCksCisuQlIgbW91bnQgKDgpLAorLkJSIGNoYXR0ciAoMSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2ZpbGVmcmFnLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9maWxlZnJhZy44LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2ZDdiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9maWxlZnJhZy44LmluCkBAIC0wLDAgKzEsNjIgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuVEggRklMRUZSQUcgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorZmlsZWZyYWcgXC0gcmVwb3J0IG9uIGZpbGUgZnJhZ21lbnRhdGlvbgorLlNIIFNZTk9QU0lTCisuQiBmaWxlZnJhZworWworLkJJIFwtYiBibG9ja3NpemUKK10KK1sKKy5CIFwtQmVrc3Z4WAorXQorWworLkkgZmlsZXMuLi4KK10KKy5TSCBERVNDUklQVElPTgorLkIgZmlsZWZyYWcKK3JlcG9ydHMgb24gaG93IGJhZGx5IGZyYWdtZW50ZWQgYSBwYXJ0aWN1bGFyIGZpbGUgbWlnaHQgYmUuICBJdCBtYWtlcyAKK2FsbG93YW5jZXMgZm9yIGluZGlyZWN0IGJsb2NrcyBmb3IgZXh0MiBhbmQgZXh0MyBmaWxlc3lzdGVtcywgYnV0IGNhbiBiZQordXNlZCBvbiBmaWxlcyBmb3IgYW55IGZpbGVzeXN0ZW0uCisuUFAKK1RoZSAKKy5CIGZpbGVmcmFnCitwcm9ncmFtIGluaXRpYWxseSBhdHRlbXB0cyB0byBnZXQgdGhlCitleHRlbnQgaW5mb3JtYXRpb24gdXNpbmcgRklFTUFQIGlvY3RsIHdoaWNoIGlzIG1vcmUgZWZmaWNpZW50IGFuZCBmYXN0ZXIuCitJZiBGSUVNQVAgaXMgbm90IHN1cHBvcnRlZCB0aGVuIGZpbGVmcmFnIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIEZJQk1BUC4KKy5TSCBPUFRJT05TCisuVFAKKy5CIFwtQgorRm9yY2UgdGhlIHVzZSBvZiB0aGUgb2xkZXIgRklCTUFQIGlvY3RsIGluc3RlYWQgb2YgdGhlIEZJRU1BUCBpb2N0bCBmb3IKK3Rlc3RpbmcgcHVycG9zZXMuCisuVFAKKy5CSSBcLWIgYmxvY2tzaXplCitVc2UKKy5JIGJsb2Nrc2l6ZQoraW4gYnl0ZXMgZm9yIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSBmaWxlc3lzdGVtIGJsb2Nrc2l6ZS4KK0ZvciBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZgorLkJSIGZpbGVmcmFnICwKK2lmCisuSSBibG9ja3NpemUKK2lzIHVuc3BlY2lmaWVkIGl0IGRlZmF1bHRzIHRvIDEwMjQgYnl0ZXMuCisuVFAKKy5CIFwtZQorUHJpbnQgb3V0cHV0IGluIGV4dGVudCBmb3JtYXQsIGV2ZW4gZm9yIGJsb2NrLW1hcHBlZCBmaWxlcy4KKy5UUAorLkJJIFwtaworVXNlIDEwMjRcLWJ5dGUgYmxvY2tzaXplIGZvciBvdXRwdXQgKGlkZW50aWNhbCB0byAnXC1iIDEwMjQnKS4KKy5UUAorLkIgXC1zCitTeW5jIHRoZSBmaWxlIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBtYXBwaW5nLgorLlRQCisuQiBcLXYKK0JlIHZlcmJvc2Ugd2hlbiBjaGVja2luZyBmb3IgZmlsZSBmcmFnbWVudGF0aW9uLgorLlRQCisuQiBcLXgKK0Rpc3BsYXkgbWFwcGluZyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzLgorLlRQCisuQiBcLVgKK0Rpc3BsYXkgZXh0ZW50IGJsb2NrIG51bWJlcnMgaW4gaGV4YWRlY2ltYWwgZm9ybWF0LgorLlNIIEFVVEhPUgorLkIgZmlsZWZyYWcKK3dhcyB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+LgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZmlsZWZyYWcuYyBiL2UyZnNwcm9ncy9taXNjL2ZpbGVmcmFnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExODUxMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2ZpbGVmcmFnLmMKQEAgLTAsMCArMSw2MDAgQEAKKy8qCisgKiBmaWxlZnJhZy5jIC0tIHJlcG9ydCBpZiBhIHBhcnRpY3VsYXIgZmlsZSBpcyBmcmFnbWVudGVkCisgKgorICogQ29weXJpZ2h0IDIwMDMgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZm5kZWYgX19saW51eF9fCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworaW50IG1haW4odm9pZCkgeworCWZwdXRzKCJUaGlzIHByb2dyYW0gaXMgb25seSBzdXBwb3J0ZWQgb24gTGludXghXG4iLCBzdGRlcnIpOworCWV4aXQoRVhJVF9GQUlMVVJFKTsKK30KKyNlbHNlCisjaWZuZGVmIF9MQVJHRUZJTEVfU09VUkNFCisjZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFCisjZW5kaWYKKyNpZm5kZWYgX0xBUkdFRklMRTY0X1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisjZW5kaWYKKworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gY2hhciAqb3B0YXJnOworZXh0ZXJuIGludCBvcHRpbmQ7CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy92ZnMuaD4KKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpbmNsdWRlIDxsaW51eC9mZC5oPgorI2luY2x1ZGUgPGV4dDJmcy9leHQyZnMuaD4KKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9maWVtYXAuaD4KKworaW50IHZlcmJvc2UgPSAwOworaW50IGJsb2Nrc2l6ZTsJCS8qIFVzZSBzcGVjaWZpZWQgYmxvY2tzaXplIChkZWZhdWx0IDFrQikgKi8KK2ludCBzeW5jX2ZpbGUgPSAwOwkvKiBmc3luYyBmaWxlIGJlZm9yZSBnZXR0aW5nIHRoZSBtYXBwaW5nICovCitpbnQgeGF0dHJfbWFwID0gMDsJLyogZ2V0IHhhdHRyIG1hcHBpbmcgKi8KK2ludCBmb3JjZV9ibWFwOwkvKiBmb3JjZSB1c2Ugb2YgRklCTUFQIGluc3RlYWQgb2YgRklFTUFQICovCitpbnQgZm9yY2VfZXh0ZW50OwkvKiBwcmludCBvdXRwdXQgaW4gZXh0ZW50IGZvcm1hdCBhbHdheXMgKi8KK2ludCBsb2dpY2FsX3dpZHRoID0gODsKK2ludCBwaHlzaWNhbF93aWR0aCA9IDEwOworY29uc3QgY2hhciAqZXh0X2ZtdCA9ICIlNGQ6ICUqbGx1Li4lKmxsdTogJSpsbHUuLiUqbGx1OiAlNmxsdTogJXNcbiI7Citjb25zdCBjaGFyICpoZXhfZm10ID0gIiU0ZDogJSpsbHguLiUqbGx4OiAlKmxseC4uJSpsbHg6ICU2bGx4OiAlc1xuIjsKKworI2RlZmluZSBGSUxFRlJBR19GSUVNQVBfRkxBR1NfQ09NUEFUIChGSUVNQVBfRkxBR19TWU5DIHwgRklFTUFQX0ZMQUdfWEFUVFIpCisKKyNkZWZpbmUgRklCTUFQCQlfSU8oMHgwMCwgMSkJLyogYm1hcCBhY2Nlc3MgKi8KKyNkZWZpbmUgRklHRVRCU1oJX0lPKDB4MDAsIDIpCS8qIGdldCB0aGUgYmxvY2sgc2l6ZSB1c2VkIGZvciBibWFwICovCisKKyNkZWZpbmUgTFVTVFJFX1NVUEVSX01BR0lDIDB4MEJEMDBCRDAKKworI2RlZmluZQlFWFQ0X0VYVEVOVFNfRkwJCQkweDAwMDgwMDAwIC8qIElub2RlIHVzZXMgZXh0ZW50cyAqLworI2RlZmluZQlFWFQzX0lPQ19HRVRGTEFHUwkJX0lPUignZicsIDEsIGxvbmcpCisKK3N0YXRpYyBpbnQgaW50X2xvZzIoaW50IGFyZykKK3sKKwlpbnQgICAgIGwgPSAwOworCisJYXJnID4+PSAxOworCXdoaWxlIChhcmcpIHsKKwkJbCsrOworCQlhcmcgPj49IDE7CisJfQorCXJldHVybiBsOworfQorCitzdGF0aWMgaW50IGludF9sb2cxMCh1bnNpZ25lZCBsb25nIGxvbmcgYXJnKQoreworCWludCAgICAgbCA9IDA7CisKKwlhcmcgPSBhcmcgLyAxMDsKKwl3aGlsZSAoYXJnKSB7CisJCWwrKzsKKwkJYXJnID0gYXJnIC8gMTA7CisJfQorCXJldHVybiBsOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGRpdl9jZWlsKHVuc2lnbmVkIGludCBhLCB1bnNpZ25lZCBpbnQgYikKK3sKKwlpZiAoIWEpCisJCXJldHVybiAwOworCXJldHVybiAoKGEgLSAxKSAvIGIpICsgMTsKK30KKworc3RhdGljIGludCBnZXRfYm1hcChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgYmxvY2ssIHVuc2lnbmVkIGxvbmcgKnBoeV9ibGspCit7CisJaW50CXJldDsKKwl1bnNpZ25lZCBpbnQgYjsKKworCWIgPSBibG9jazsKKwlyZXQgPSBpb2N0bChmZCwgRklCTUFQLCAmYik7IC8qIEZJQk1BUCB0YWtlcyBwb2ludGVyIHRvIGludGVnZXIgKi8KKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIC1lcnJubzsKKwkqcGh5X2JsayA9IGI7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBwcmludF9leHRlbnRfaGVhZGVyKHZvaWQpCit7CisJcHJpbnRmKCIgZXh0OiAlKnMgJSpzIGxlbmd0aDogJSpzIGZsYWdzOlxuIiwKKwkgICAgICAgbG9naWNhbF93aWR0aCAqIDIgKyAzLAorCSAgICAgICAibG9naWNhbF9vZmZzZXQ6IiwKKwkgICAgICAgcGh5c2ljYWxfd2lkdGggKiAyICsgMywgInBoeXNpY2FsX29mZnNldDoiLAorCSAgICAgICBwaHlzaWNhbF93aWR0aCArIDEsCisJICAgICAgICJleHBlY3RlZDoiKTsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfZmxhZyhfX3UzMiAqZmxhZ3MsIF9fdTMyIG1hc2ssIGNoYXIgKmJ1ZiwgY29uc3QgY2hhciAqbmFtZSkKK3sKKwlpZiAoKCpmbGFncyAmIG1hc2spID09IDApCisJCXJldHVybjsKKworCXN0cmNhdChidWYsIG5hbWUpOworCSpmbGFncyAmPSB+bWFzazsKK30KKworc3RhdGljIHZvaWQgcHJpbnRfZXh0ZW50X2luZm8oc3RydWN0IGZpZW1hcF9leHRlbnQgKmZtX2V4dGVudCwgaW50IGN1cl9leCwKKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZCwgaW50IGJsa19zaGlmdCwKKwkJCSAgICAgIGV4dDJmc19zdHJ1Y3Rfc3RhdCAqc3QpCit7CisJdW5zaWduZWQgbG9uZyBsb25nIHBoeXNpY2FsX2JsazsKKwl1bnNpZ25lZCBsb25nIGxvbmcgbG9naWNhbF9ibGs7CisJdW5zaWduZWQgbG9uZyBsb25nIGV4dF9sZW47CisJdW5zaWduZWQgbG9uZyBsb25nIGV4dF9ibGtzOworCV9fdTMyIGZlX2ZsYWdzLCBtYXNrOworCWNoYXIgZmxhZ3NbMjU2XSA9ICIiOworCisJLyogRm9yIGlubGluZSBkYXRhIGFsbCBvZmZzZXRzIHNob3VsZCBiZSBpbiBieXRlcywgbm90IGJsb2NrcyAqLworCWlmIChmbV9leHRlbnQtPmZlX2ZsYWdzICYgRklFTUFQX0VYVEVOVF9EQVRBX0lOTElORSkKKwkJYmxrX3NoaWZ0ID0gMDsKKworCWV4dF9sZW4gPSBmbV9leHRlbnQtPmZlX2xlbmd0aCA+PiBibGtfc2hpZnQ7CisJZXh0X2Jsa3MgPSAoZm1fZXh0ZW50LT5mZV9sZW5ndGggLSAxKSA+PiBibGtfc2hpZnQ7CisJbG9naWNhbF9ibGsgPSBmbV9leHRlbnQtPmZlX2xvZ2ljYWwgPj4gYmxrX3NoaWZ0OworCWlmIChmbV9leHRlbnQtPmZlX2ZsYWdzICYgRklFTUFQX0VYVEVOVF9VTktOT1dOKSB7CisJCXBoeXNpY2FsX2JsayA9IDA7CisJfSBlbHNlIHsKKwkJcGh5c2ljYWxfYmxrID0gZm1fZXh0ZW50LT5mZV9waHlzaWNhbCA+PiBibGtfc2hpZnQ7CisJfQorCisJaWYgKGV4cGVjdGVkKQorCQlzcHJpbnRmKGZsYWdzLCBleHRfZm10ID09IGhleF9mbXQgPyAiJSpsbHg6ICIgOiAiJSpsbHU6ICIsCisJCQlwaHlzaWNhbF93aWR0aCwgZXhwZWN0ZWQgPj4gYmxrX3NoaWZ0KTsKKwllbHNlCisJCXNwcmludGYoZmxhZ3MsICIlLipzICAiLCBwaHlzaWNhbF93aWR0aCwgIiAgICAgICAgICAgICAgICAgICAiKTsKKworCWZlX2ZsYWdzID0gZm1fZXh0ZW50LT5mZV9mbGFnczsKKwlwcmludF9mbGFnKCZmZV9mbGFncywgRklFTUFQX0VYVEVOVF9MQVNULCBmbGFncywgImxhc3QsIik7CisJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIEZJRU1BUF9FWFRFTlRfVU5LTk9XTiwgZmxhZ3MsICJ1bmtub3duX2xvYywiKTsKKwlwcmludF9mbGFnKCZmZV9mbGFncywgRklFTUFQX0VYVEVOVF9ERUxBTExPQywgZmxhZ3MsICJkZWxhbGxvYywiKTsKKwlwcmludF9mbGFnKCZmZV9mbGFncywgRklFTUFQX0VYVEVOVF9FTkNPREVELCBmbGFncywgImVuY29kZWQsIik7CisJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIEZJRU1BUF9FWFRFTlRfREFUQV9FTkNSWVBURUQsIGZsYWdzLCJlbmNyeXB0ZWQsIik7CisJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIEZJRU1BUF9FWFRFTlRfTk9UX0FMSUdORUQsIGZsYWdzLCAibm90X2FsaWduZWQsIik7CisJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIEZJRU1BUF9FWFRFTlRfREFUQV9JTkxJTkUsIGZsYWdzLCAiaW5saW5lLCIpOworCXByaW50X2ZsYWcoJmZlX2ZsYWdzLCBGSUVNQVBfRVhURU5UX0RBVEFfVEFJTCwgZmxhZ3MsICJ0YWlsX3BhY2tlZCwiKTsKKwlwcmludF9mbGFnKCZmZV9mbGFncywgRklFTUFQX0VYVEVOVF9VTldSSVRURU4sIGZsYWdzLCAidW53cml0dGVuLCIpOworCXByaW50X2ZsYWcoJmZlX2ZsYWdzLCBGSUVNQVBfRVhURU5UX01FUkdFRCwgZmxhZ3MsICJtZXJnZWQsIik7CisJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIEZJRU1BUF9FWFRFTlRfU0hBUkVELCBmbGFncywgInNoYXJlZCwiKTsKKwkvKiBwcmludCBhbnkgdW5rbm93biBmbGFncyBhcyBoZXggdmFsdWVzICovCisJZm9yIChtYXNrID0gMTsgZmVfZmxhZ3MgIT0gMCAmJiBtYXNrICE9IDA7IG1hc2sgPDw9IDEpIHsKKwkJY2hhciBoZXhbNl07CisKKwkJaWYgKChmZV9mbGFncyAmIG1hc2spID09IDApCisJCQljb250aW51ZTsKKwkJc3ByaW50ZihoZXgsICIlIzA0eCwiLCBtYXNrKTsKKwkJcHJpbnRfZmxhZygmZmVfZmxhZ3MsIG1hc2ssIGZsYWdzLCBoZXgpOworCX0KKworCWlmIChmbV9leHRlbnQtPmZlX2xvZ2ljYWwgKyBmbV9leHRlbnQtPmZlX2xlbmd0aCA+PQorCSAgICAodW5zaWduZWQgbG9uZyBsb25nKSBzdC0+c3Rfc2l6ZSkKKwkJc3RyY2F0KGZsYWdzLCAiZW9mLCIpOworCisJLyogUmVtb3ZlIHRyYWlsaW5nIGNvbW1hLCBpZiBhbnkgKi8KKwlpZiAoZmxhZ3NbMF0gIT0gJ1wwJykKKwkJZmxhZ3Nbc3RybmxlbihmbGFncywgc2l6ZW9mKGZsYWdzKSkgLSAxXSA9ICdcMCc7CisKKwlwcmludGYoZXh0X2ZtdCwgY3VyX2V4LCBsb2dpY2FsX3dpZHRoLCBsb2dpY2FsX2JsaywKKwkgICAgICAgbG9naWNhbF93aWR0aCwgbG9naWNhbF9ibGsgKyBleHRfYmxrcywKKwkgICAgICAgcGh5c2ljYWxfd2lkdGgsIHBoeXNpY2FsX2JsaywKKwkgICAgICAgcGh5c2ljYWxfd2lkdGgsIHBoeXNpY2FsX2JsayArIGV4dF9ibGtzLAorCSAgICAgICBleHRfbGVuLCBmbGFncyk7Cit9CisKK3N0YXRpYyBpbnQgZmlsZWZyYWdfZmllbWFwKGludCBmZCwgaW50IGJsa19zaGlmdCwgaW50ICpudW1fZXh0ZW50cywKKwkJCSAgIGV4dDJmc19zdHJ1Y3Rfc3RhdCAqc3QpCit7CisJX191NjQgYnVmWzIwNDhdOwkvKiBfX3U2NCBmb3IgcHJvcGVyIGZpZWxkIGFsaWdubWVudCAqLworCXN0cnVjdCBmaWVtYXAgKmZpZW1hcCA9IChzdHJ1Y3QgZmllbWFwICopYnVmOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50ICpmbV9leHQgPSAmZmllbWFwLT5mbV9leHRlbnRzWzBdOworCXN0cnVjdCBmaWVtYXBfZXh0ZW50IGZtX2xhc3QgPSB7MH07CisJaW50IGNvdW50ID0gKHNpemVvZihidWYpIC0gc2l6ZW9mKCpmaWVtYXApKSAvCisJCQlzaXplb2Yoc3RydWN0IGZpZW1hcF9leHRlbnQpOworCXVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZCA9IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIGV4cGVjdGVkX2RlbnNlID0gMDsKKwl1bnNpZ25lZCBsb25nIGZsYWdzID0gMDsKKwl1bnNpZ25lZCBpbnQgaTsKKwlpbnQgZmllbWFwX2hlYWRlcl9wcmludGVkID0gMDsKKwlpbnQgdG90X2V4dGVudHMgPSAwLCBuID0gMDsKKwlpbnQgbGFzdCA9IDA7CisJaW50IHJjOworCisJbWVtc2V0KGZpZW1hcCwgMCwgc2l6ZW9mKHN0cnVjdCBmaWVtYXApKTsKKworCWlmIChzeW5jX2ZpbGUpCisJCWZsYWdzIHw9IEZJRU1BUF9GTEFHX1NZTkM7CisKKwlpZiAoeGF0dHJfbWFwKQorCQlmbGFncyB8PSBGSUVNQVBfRkxBR19YQVRUUjsKKworCWRvIHsKKwkJZmllbWFwLT5mbV9sZW5ndGggPSB+MFVMTDsKKwkJZmllbWFwLT5mbV9mbGFncyA9IGZsYWdzOworCQlmaWVtYXAtPmZtX2V4dGVudF9jb3VudCA9IGNvdW50OworCQlyYyA9IGlvY3RsKGZkLCBGU19JT0NfRklFTUFQLCAodW5zaWduZWQgbG9uZykgZmllbWFwKTsKKwkJaWYgKHJjIDwgMCkgeworCQkJc3RhdGljIGludCBmaWVtYXBfaW5jb21wYXRfcHJpbnRlZDsKKworCQkJcmMgPSAtZXJybm87CisJCQlpZiAocmMgPT0gLUVCQURSICYmICFmaWVtYXBfaW5jb21wYXRfcHJpbnRlZCkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiRklFTUFQIGZhaWxlZCB3aXRoIHVua25vd24gIgorCQkJCQkJImZsYWdzICV4XG4iLAorCQkJCSAgICAgICBmaWVtYXAtPmZtX2ZsYWdzKTsKKwkJCQlmaWVtYXBfaW5jb21wYXRfcHJpbnRlZCA9IDE7CisJCQl9CisJCQlyZXR1cm4gcmM7CisJCX0KKworCQkvKiBJZiAwIGV4dGVudHMgYXJlIHJldHVybmVkLCB0aGVuIG1vcmUgaW9jdGxzIGFyZSBub3QgbmVlZGVkICovCisJCWlmIChmaWVtYXAtPmZtX21hcHBlZF9leHRlbnRzID09IDApCisJCQlicmVhazsKKworCQlpZiAodmVyYm9zZSAmJiAhZmllbWFwX2hlYWRlcl9wcmludGVkKSB7CisJCQlwcmludF9leHRlbnRfaGVhZGVyKCk7CisJCQlmaWVtYXBfaGVhZGVyX3ByaW50ZWQgPSAxOworCQl9CisKKwkJZm9yIChpID0gMDsgaSA8IGZpZW1hcC0+Zm1fbWFwcGVkX2V4dGVudHM7IGkrKykgeworCQkJZXhwZWN0ZWRfZGVuc2UgPSBmbV9sYXN0LmZlX3BoeXNpY2FsICsKKwkJCQkJIGZtX2xhc3QuZmVfbGVuZ3RoOworCQkJZXhwZWN0ZWQgPSBmbV9sYXN0LmZlX3BoeXNpY2FsICsKKwkJCQkgICBmbV9leHRbaV0uZmVfbG9naWNhbCAtIGZtX2xhc3QuZmVfbG9naWNhbDsKKwkJCWlmIChmbV9leHRbaV0uZmVfbG9naWNhbCAhPSAwICYmCisJCQkgICAgZm1fZXh0W2ldLmZlX3BoeXNpY2FsICE9IGV4cGVjdGVkICYmCisJCQkgICAgZm1fZXh0W2ldLmZlX3BoeXNpY2FsICE9IGV4cGVjdGVkX2RlbnNlKSB7CisJCQkJdG90X2V4dGVudHMrKzsKKwkJCX0gZWxzZSB7CisJCQkJZXhwZWN0ZWQgPSAwOworCQkJCWlmICghdG90X2V4dGVudHMpCisJCQkJCXRvdF9leHRlbnRzID0gMTsKKwkJCX0KKwkJCWlmICh2ZXJib3NlKQorCQkJCXByaW50X2V4dGVudF9pbmZvKCZmbV9leHRbaV0sIG4sIGV4cGVjdGVkLAorCQkJCQkJICBibGtfc2hpZnQsIHN0KTsKKwkJCWlmIChmbV9leHRbaV0uZmVfZmxhZ3MgJiBGSUVNQVBfRVhURU5UX0xBU1QpCisJCQkJbGFzdCA9IDE7CisJCQlmbV9sYXN0ID0gZm1fZXh0W2ldOworCQkJbisrOworCQl9CisKKwkJZmllbWFwLT5mbV9zdGFydCA9IChmbV9leHRbaSAtIDFdLmZlX2xvZ2ljYWwgKworCQkJCSAgICBmbV9leHRbaSAtIDFdLmZlX2xlbmd0aCk7CisJfSB3aGlsZSAobGFzdCA9PSAwKTsKKworCSpudW1fZXh0ZW50cyA9IHRvdF9leHRlbnRzOworCisJcmV0dXJuIDA7Cit9CisKKyNkZWZpbmUgRVhUMl9ESVJFQ1QJMTIKKworc3RhdGljIGludCBmaWxlZnJhZ19maWJtYXAoaW50IGZkLCBpbnQgYmxrX3NoaWZ0LCBpbnQgKm51bV9leHRlbnRzLAorCQkJICAgZXh0MmZzX3N0cnVjdF9zdGF0ICpzdCwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgbnVtYmxvY2tzLCBpbnQgaXNfZXh0MikKK3sKKwlzdHJ1Y3QgZmllbWFwX2V4dGVudAlmbV9leHQsIGZtX2xhc3Q7CisJdW5zaWduZWQgbG9uZwkJaSwgbGFzdF9ibG9jazsKKwl1bnNpZ25lZCBsb25nIGxvbmcJbG9naWNhbCwgZXhwZWN0ZWQgPSAwOworCQkJCS8qIEJsb2NrcyBwZXIgaW5kaXJlY3QgYmxvY2sgKi8KKwljb25zdCBsb25nCQlicGliID0gc3QtPnN0X2Jsa3NpemUgLyA0OworCWludAkJCWNvdW50OworCisJbWVtc2V0KCZmbV9leHQsIDAsIHNpemVvZihmbV9leHQpKTsKKwltZW1zZXQoJmZtX2xhc3QsIDAsIHNpemVvZihmbV9sYXN0KSk7CisJaWYgKGZvcmNlX2V4dGVudCkgeworCQlmbV9leHQuZmVfZmxhZ3MgPSBGSUVNQVBfRVhURU5UX01FUkdFRDsKKwl9CisKKwlpZiAoc3luY19maWxlKQorCQlmc3luYyhmZCk7CisKKwlmb3IgKGkgPSAwLCBsb2dpY2FsID0gMCwgKm51bV9leHRlbnRzID0gMCwgY291bnQgPSBsYXN0X2Jsb2NrID0gMDsKKwkgICAgIGkgPCBudW1ibG9ja3M7CisJICAgICBpKyssIGxvZ2ljYWwgKz0gc3QtPnN0X2Jsa3NpemUpIHsKKwkJdW5zaWduZWQgbG9uZyBibG9jayA9IDA7CisJCWludCByYzsKKworCQlpZiAoaXNfZXh0MiAmJiBsYXN0X2Jsb2NrKSB7CisJCQlpZiAoKChpIC0gRVhUMl9ESVJFQ1QpICUgYnBpYikgPT0gMCkKKwkJCQlsYXN0X2Jsb2NrKys7CisJCQlpZiAoKChpIC0gRVhUMl9ESVJFQ1QgLSBicGliKSAlIChicGliICogYnBpYikpID09IDApCisJCQkJbGFzdF9ibG9jaysrOworCQkJaWYgKCgoaSAtIEVYVDJfRElSRUNUIC0gYnBpYiAtIGJwaWIgKiBicGliKSAlCisJCQkgICAgICgoKHVuc2lnbmVkIGxvbmcgbG9uZylicGliKSAqIGJwaWIgKiBicGliKSkgPT0gMCkKKwkJCQlsYXN0X2Jsb2NrKys7CisJCX0KKwkJcmMgPSBnZXRfYm1hcChmZCwgaSwgJmJsb2NrKTsKKwkJaWYgKHJjIDwgMCkKKwkJCXJldHVybiByYzsKKwkJaWYgKGJsb2NrID09IDApCisJCQljb250aW51ZTsKKworCQlpZiAoKm51bV9leHRlbnRzID09IDAgfHwgYmxvY2sgIT0gbGFzdF9ibG9jayArIDEgfHwKKwkJICAgIGZtX2V4dC5mZV9sb2dpY2FsICsgZm1fZXh0LmZlX2xlbmd0aCAhPSBsb2dpY2FsKSB7CisJCQkvKgorCQkJICogVGhpcyBpcyB0aGUgc3RhcnQgb2YgYSBuZXcgZXh0ZW50OyBmaWd1cmUgb3V0IHdoZXJlCisJCQkgKiB3ZSBleHBlY3RlZCBpdCB0byBiZSBhbmQgcmVwb3J0IHRoZSBleHRlbnQuCisJCQkgKi8KKwkJCWlmICgqbnVtX2V4dGVudHMgIT0gMCAmJiBmbV9sYXN0LmZlX2xlbmd0aCkgeworCQkJCWV4cGVjdGVkID0gZm1fbGFzdC5mZV9waHlzaWNhbCArCisJCQkJCShmbV9leHQuZmVfbG9naWNhbCAtIGZtX2xhc3QuZmVfbG9naWNhbCk7CisJCQkJaWYgKGV4cGVjdGVkID09IGZtX2V4dC5mZV9waHlzaWNhbCkKKwkJCQkJZXhwZWN0ZWQgPSAwOworCQkJfQorCQkJaWYgKGZvcmNlX2V4dGVudCAmJiAqbnVtX2V4dGVudHMgPT0gMCkKKwkJCQlwcmludF9leHRlbnRfaGVhZGVyKCk7CisJCQlpZiAoZm9yY2VfZXh0ZW50ICYmICpudW1fZXh0ZW50cyAhPSAwKSB7CisJCQkJcHJpbnRfZXh0ZW50X2luZm8oJmZtX2V4dCwgKm51bV9leHRlbnRzIC0gMSwKKwkJCQkJCSAgZXhwZWN0ZWQsIGJsa19zaGlmdCwgc3QpOworCQkJfQorCQkJaWYgKHZlcmJvc2UgJiYgZXhwZWN0ZWQgIT0gMCkgeworCQkJCXByaW50ZigiRGlzY29udGludWl0eTogQmxvY2sgJWxsdSBpcyBhdCAlbGx1ICIKKwkJCQkgICAgICAgIih3YXMgJWxsdSlcbiIsCisJCQkJCWZtX2V4dC5mZV9sb2dpY2FsIC8gc3QtPnN0X2Jsa3NpemUsCisJCQkJCWZtX2V4dC5mZV9waHlzaWNhbCAvIHN0LT5zdF9ibGtzaXplLAorCQkJCQlleHBlY3RlZCAvIHN0LT5zdF9ibGtzaXplKTsKKwkJCX0KKwkJCS8qIGNyZWF0ZSB0aGUgbmV3IGV4dGVudCAqLworCQkJZm1fbGFzdCA9IGZtX2V4dDsKKwkJCSgqbnVtX2V4dGVudHMpKys7CisJCQlmbV9leHQuZmVfcGh5c2ljYWwgPSBibG9jayAqIHN0LT5zdF9ibGtzaXplOworCQkJZm1fZXh0LmZlX2xvZ2ljYWwgPSBsb2dpY2FsOworCQkJZm1fZXh0LmZlX2xlbmd0aCA9IDA7CisJCX0KKwkJZm1fZXh0LmZlX2xlbmd0aCArPSBzdC0+c3RfYmxrc2l6ZTsKKwkJbGFzdF9ibG9jayA9IGJsb2NrOworCX0KKwlpZiAoZm9yY2VfZXh0ZW50ICYmICpudW1fZXh0ZW50cyAhPSAwKSB7CisJCWlmIChmbV9sYXN0LmZlX2xlbmd0aCkgeworCQkJZXhwZWN0ZWQgPSBmbV9sYXN0LmZlX3BoeXNpY2FsICsKKwkJCQkgICAoZm1fZXh0LmZlX2xvZ2ljYWwgLSBmbV9sYXN0LmZlX2xvZ2ljYWwpOworCQkJaWYgKGV4cGVjdGVkID09IGZtX2V4dC5mZV9waHlzaWNhbCkKKwkJCQlleHBlY3RlZCA9IDA7CisJCX0KKwkJcHJpbnRfZXh0ZW50X2luZm8oJmZtX2V4dCwgKm51bV9leHRlbnRzIC0gMSwgZXhwZWN0ZWQsCisJCQkJICBibGtfc2hpZnQsIHN0KTsKKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBpbnQgZnJhZ19yZXBvcnQoY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RhdGljIHN0cnVjdCBzdGF0ZnMgZnNpbmZvOworCXN0YXRpYyB1bnNpZ25lZCBpbnQgYmxrc2l6ZTsKKwlleHQyZnNfc3RydWN0X3N0YXQgc3Q7CisJaW50CQlibGtfc2hpZnQ7CisJbG9uZwkJZmQ7CisJdW5zaWduZWQgbG9uZyBsb25nCW51bWJsb2NrczsKKwlpbnQJCWRhdGFfYmxvY2tzX3Blcl9jeWwgPSAxOworCWludAkJbnVtX2V4dGVudHMgPSAxLCBleHBlY3RlZCA9IH4wOworCWludAkJaXNfZXh0MiA9IDA7CisJc3RhdGljIGRldl90CWxhc3RfZGV2aWNlOworCWludAkJd2lkdGg7CisJaW50CQlyYyA9IDA7CisKKyNpZiBkZWZpbmVkKEhBVkVfT1BFTjY0KSAmJiAhZGVmaW5lZChfX09TWF9BVkFJTEFCTEVfQlVUX0RFUFJFQ0FURUQpCisJZmQgPSBvcGVuNjQoZmlsZW5hbWUsIE9fUkRPTkxZKTsKKyNlbHNlCisJZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7CisjZW5kaWYKKwlpZiAoZmQgPCAwKSB7CisJCXJjID0gLWVycm5vOworCQlwZXJyb3IoIm9wZW4iKTsKKwkJcmV0dXJuIHJjOworCX0KKworI2lmIGRlZmluZWQoSEFWRV9GU1RBVDY0KSAmJiAhZGVmaW5lZChfX09TWF9BVkFJTEFCTEVfQlVUX0RFUFJFQ0FURUQpCisJaWYgKGZzdGF0NjQoZmQsICZzdCkgPCAwKSB7CisjZWxzZQorCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKKyNlbmRpZgorCQlyYyA9IC1lcnJubzsKKwkJcGVycm9yKCJzdGF0Iik7CisJCWdvdG8gb3V0X2Nsb3NlOworCX0KKworCWlmIChsYXN0X2RldmljZSAhPSBzdC5zdF9kZXYpIHsKKwkJaWYgKGZzdGF0ZnMoZmQsICZmc2luZm8pIDwgMCkgeworCQkJcmMgPSAtZXJybm87CisJCQlwZXJyb3IoImZzdGF0ZnMiKTsKKwkJCWdvdG8gb3V0X2Nsb3NlOworCQl9CisJCWlmIChpb2N0bChmZCwgRklHRVRCU1osICZibGtzaXplKSA8IDApCisJCQlibGtzaXplID0gZnNpbmZvLmZfYnNpemU7CisJCWlmICh2ZXJib3NlKQorCQkJcHJpbnRmKCJGaWxlc3lzdGVtIHR5cGUgaXM6ICVseFxuIiwKKwkJCSAgICAgICAodW5zaWduZWQgbG9uZylmc2luZm8uZl90eXBlKTsKKwl9CisJc3Quc3RfYmxrc2l6ZSA9IGJsa3NpemU7CisJaWYgKGZzaW5mby5mX3R5cGUgPT0gMHhlZjUxIHx8IGZzaW5mby5mX3R5cGUgPT0gMHhlZjUyIHx8CisJICAgIGZzaW5mby5mX3R5cGUgPT0gMHhlZjUzKSB7CisJCXVuc2lnbmVkIGludAlmbGFnczsKKworCQlpZiAoaW9jdGwoZmQsIEVYVDNfSU9DX0dFVEZMQUdTLCAmZmxhZ3MpID09IDAgJiYKKwkJICAgICEoZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKQorCQkJaXNfZXh0MiA9IDE7CisJfQorCisJaWYgKGlzX2V4dDIpIHsKKwkJbG9uZyBjeWxncm91cHMgPSBkaXZfY2VpbChmc2luZm8uZl9ibG9ja3MsIGJsa3NpemUgKiA4KTsKKworCQlpZiAodmVyYm9zZSAmJiBsYXN0X2RldmljZSAhPSBzdC5zdF9kZXYpCisJCQlwcmludGYoIkZpbGVzeXN0ZW0gY3lsaW5kZXIgZ3JvdXBzIGFwcHJveGltYXRlbHkgJWxkXG4iLAorCQkJICAgICAgIGN5bGdyb3Vwcyk7CisKKwkJZGF0YV9ibG9ja3NfcGVyX2N5bCA9IGJsa3NpemUgKiA4IC0KKwkJCQkJKGZzaW5mby5mX2ZpbGVzIC8gOCAvIGN5bGdyb3VwcykgLSAzOworCX0KKwlsYXN0X2RldmljZSA9IHN0LnN0X2RldjsKKworCXdpZHRoID0gaW50X2xvZzEwKGZzaW5mby5mX2Jsb2Nrcyk7CisJaWYgKHdpZHRoID4gcGh5c2ljYWxfd2lkdGgpCisJCXBoeXNpY2FsX3dpZHRoID0gd2lkdGg7CisKKwludW1ibG9ja3MgPSAoc3Quc3Rfc2l6ZSArIGJsa3NpemUgLSAxKSAvIGJsa3NpemU7CisJaWYgKGJsb2Nrc2l6ZSAhPSAwKQorCQlibGtfc2hpZnQgPSBpbnRfbG9nMihibG9ja3NpemUpOworCWVsc2UKKwkJYmxrX3NoaWZ0ID0gaW50X2xvZzIoYmxrc2l6ZSk7CisKKwl3aWR0aCA9IGludF9sb2cxMChudW1ibG9ja3MpOworCWlmICh3aWR0aCA+IGxvZ2ljYWxfd2lkdGgpCisJCWxvZ2ljYWxfd2lkdGggPSB3aWR0aDsKKwlpZiAodmVyYm9zZSkKKwkJcHJpbnRmKCJGaWxlIHNpemUgb2YgJXMgaXMgJWxsdSAoJWxsdSBibG9jayVzIG9mICVkIGJ5dGVzKVxuIiwKKwkJICAgICAgIGZpbGVuYW1lLCAodW5zaWduZWQgbG9uZyBsb25nKXN0LnN0X3NpemUsCisJCSAgICAgICBudW1ibG9ja3MgKiBibGtzaXplID4+IGJsa19zaGlmdCwKKwkJICAgICAgIG51bWJsb2NrcyA9PSAxID8gIiIgOiAicyIsIDEgPDwgYmxrX3NoaWZ0KTsKKworCWlmICghZm9yY2VfYm1hcCkgeworCQlyYyA9IGZpbGVmcmFnX2ZpZW1hcChmZCwgYmxrX3NoaWZ0LCAmbnVtX2V4dGVudHMsICZzdCk7CisJCWV4cGVjdGVkID0gMDsKKwl9CisKKwlpZiAoZm9yY2VfYm1hcCB8fCByYyA8IDApIHsgLyogRklFTUFQIGZhaWxlZCwgdHJ5IEZJQk1BUCBpbnN0ZWFkICovCisJCWV4cGVjdGVkID0gZmlsZWZyYWdfZmlibWFwKGZkLCBibGtfc2hpZnQsICZudW1fZXh0ZW50cywKKwkJCQkJICAgJnN0LCBudW1ibG9ja3MsIGlzX2V4dDIpOworCQlpZiAoZXhwZWN0ZWQgPCAwKSB7CisJCQlpZiAoZXhwZWN0ZWQgPT0gLUVJTlZBTCB8fCBleHBlY3RlZCA9PSAtRU5PVFRZKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlczogRklCTUFQIHVuc3VwcG9ydGVkXG4iLAorCQkJCQlmaWxlbmFtZSk7CisJCQl9IGVsc2UgaWYgKGV4cGVjdGVkID09IC1FUEVSTSkgeworCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQkiJXM6IEZJQk1BUCByZXF1aXJlcyByb290IHByaXZpbGVnZXNcbiIsCisJCQkJCWZpbGVuYW1lKTsKKwkJCX0gZWxzZSB7CisJCQkJZnByaW50ZihzdGRlcnIsICIlczogRklCTUFQIGVycm9yOiAlcyIsCisJCQkJCWZpbGVuYW1lLCBzdHJlcnJvcihleHBlY3RlZCkpOworCQkJfQorCQkJcmMgPSBleHBlY3RlZDsKKwkJCWdvdG8gb3V0X2Nsb3NlOworCQl9IGVsc2UgeworCQkJcmMgPSAwOworCQl9CisJCWV4cGVjdGVkID0gZXhwZWN0ZWQgLyBkYXRhX2Jsb2Nrc19wZXJfY3lsICsgMTsKKwl9CisKKwlpZiAobnVtX2V4dGVudHMgPT0gMSkKKwkJcHJpbnRmKCIlczogMSBleHRlbnQgZm91bmQiLCBmaWxlbmFtZSk7CisJZWxzZQorCQlwcmludGYoIiVzOiAlZCBleHRlbnRzIGZvdW5kIiwgZmlsZW5hbWUsIG51bV9leHRlbnRzKTsKKwkvKiBjb3VudCwgYW5kIHRodXMgZXhwZWN0ZWQsIG9ubHkgc2V0IGZvciBpbmRpcmVjdCBGSUJNQVAnZCBmaWxlcyAqLworCWlmIChpc19leHQyICYmIGV4cGVjdGVkICYmIGV4cGVjdGVkIDwgbnVtX2V4dGVudHMpCisJCXByaW50ZigiLCBwZXJmZWN0aW9uIHdvdWxkIGJlICVkIGV4dGVudCVzXG4iLCBleHBlY3RlZCwKKwkJCShleHBlY3RlZCA+IDEpID8gInMiIDogIiIpOworCWVsc2UKKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKK291dF9jbG9zZToKKwljbG9zZShmZCk7CisKKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2b2lkIHVzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQoreworCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFstYntibG9ja3NpemV9XSBbLUJla3N2eFhdIGZpbGUgLi4uXG4iLAorCQlwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKmFyZ3YpCit7CisJY2hhciAqKmNwcDsKKwlpbnQgcmMgPSAwLCBjOworCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJCYjo6ZWtzdnhYIikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnQic6CisJCQlmb3JjZV9ibWFwKys7CisJCQlicmVhazsKKwkJY2FzZSAnYic6CisJCQlpZiAob3B0YXJnKSB7CisJCQkJY2hhciAqZW5kOworCQkJCWJsb2Nrc2l6ZSA9IHN0cnRvdWwob3B0YXJnLCAmZW5kLCAwKTsKKwkJCQlpZiAoZW5kKSB7CisJCQkJCXN3aXRjaCAoZW5kWzBdKSB7CisJCQkJCWNhc2UgJ2cnOgorCQkJCQljYXNlICdHJzoKKwkJCQkJCWJsb2Nrc2l6ZSAqPSAxMDI0OworCQkJCQkJLyogbm8gYnJlYWsgKi8KKwkJCQkJY2FzZSAnbSc6CisJCQkJCWNhc2UgJ00nOgorCQkJCQkJYmxvY2tzaXplICo9IDEwMjQ7CisJCQkJCQkvKiBubyBicmVhayAqLworCQkJCQljYXNlICdrJzoKKwkJCQkJY2FzZSAnSyc6CisJCQkJCQlibG9ja3NpemUgKj0gMTAyNDsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2UgeyAvKiBBbGxvdyAtYiB3aXRob3V0IGFyZ3VtZW50IGZvciBjb21wYXQuIFJlbW92ZQorCQkJCSAgKiB0aGlzIGV2ZW50dWFsbHkgc28gIi1iIHtibG9ja3NpemV9IiB3b3JrcyAqLworCQkJCWZwcmludGYoc3RkZXJyLCAiJXM6IC1iIG5lZWRzIGEgYmxvY2tzaXplICIKKwkJCQkJIm9wdGlvbiwgYXNzdW1pbmcgMTAyNC1ieXRlIGJsb2Nrcy5cbiIsCisJCQkJCWFyZ3ZbMF0pOworCQkJCWJsb2Nrc2l6ZSA9IDEwMjQ7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnZSc6CisJCQlmb3JjZV9leHRlbnQrKzsKKwkJCWlmICghdmVyYm9zZSkKKwkJCQl2ZXJib3NlKys7CisJCQlicmVhazsKKwkJY2FzZSAnayc6CisJCQlibG9ja3NpemUgPSAxMDI0OworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJc3luY19maWxlKys7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlKys7CisJCQlicmVhazsKKwkJY2FzZSAneCc6CisJCQl4YXR0cl9tYXArKzsKKwkJCWJyZWFrOworCQljYXNlICdYJzoKKwkJCWV4dF9mbXQgPSBoZXhfZm10OworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZShhcmd2WzBdKTsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKG9wdGluZCA9PSBhcmdjKQorCQl1c2FnZShhcmd2WzBdKTsKKworCWZvciAoY3BwID0gYXJndiArIG9wdGluZDsgKmNwcCAhPSAnXDAnOyBjcHArKykgeworCQlpbnQgcmMyID0gZnJhZ19yZXBvcnQoKmNwcCk7CisKKwkJaWYgKHJjMiA8IDAgJiYgcmMgPT0gMCkKKwkJCXJjID0gcmMyOworCX0KKworCXJldHVybiAtcmM7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2ZpbmRmcy44LmluIGIvZTJmc3Byb2dzL21pc2MvZmluZGZzLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0Y2JjNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2ZpbmRmcy44LmluCkBAIC0wLDAgKzEsMzMgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIgCisuVEggRklOREZTIDggIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2ZpbmRmcyBcLSBGaW5kIGEgZmlsZXN5c3RlbSBieSBsYWJlbCBvciBVVUlECisuU0ggU1lOT1BTSVMKKy5CIGZpbmRmcyAKKy5CSSBMQUJFTD0gbGFiZWwKKy5zcAorLkIgZmluZGZzCisuQkkgVVVJRD0gdXVpZAorLlNIIERFU0NSSVBUSU9OCisuQiBmaW5kZnMKK3dpbGwgc2VhcmNoIHRoZSBkaXNrcyBpbiB0aGUgc3lzdGVtIGxvb2tpbmcgZm9yIGEgZmlsZXN5c3RlbSB3aGljaCBoYXMgCithIGxhYmVsIG1hdGNoaW5nCisuSSBsYWJlbAorb3IgYSBVVUlEIGVxdWFsIHRvIAorLklSIHV1aWQgLgorSWYgdGhlIGZpbGVzeXN0ZW0gaXMgZm91bmQsIHRoZSBkZXZpY2UgbmFtZSBmb3IgdGhlIGZpbGVzeXN0ZW0gd2lsbAorYmUgcHJpbnRlZCBvbiBzdGRvdXQuCisuUFAKKy5TSCBBVVRIT1IKKy5CIGZpbmRmcyAKK3dhcyB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gKHR5dHNvQG1pdC5lZHUpLgorLlNIIEFWQUlMQUJJTElUWQorLkIgZmluZGZzCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20gCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGZzY2sgKDgpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2ZpbmRzdXBlci5jIGIvZTJmc3Byb2dzL21pc2MvZmluZHN1cGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhYTQzYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2ZpbmRzdXBlci5jCkBAIC0wLDAgKzEsMjY4IEBACisvKgorICogZmluZHN1cGVyIC0tLSBxdWljayBoYWNrZWQgdXAgcHJvZ3JhbSB0byBmaW5kIGV4dDIgc3VwZXJibG9ja3MuCisgKgorICogVGhpcyBpcyBhIGhhY2ssIGFuZCByZWFsbHkgc2hvdWxkbid0IGJlIGluc3RhbGxlZCBhbnl3aGVyZS4gIElmIHlvdQorICogbmVlZCBhIHByb2dyYW0gd2hpY2ggZG9lcyB0aGlzIHNvcnQgb2YgZnVuY3Rpb25hbGl0eSwgcGxlYXNlIHRyeQorICogdXNpbmcgZ3BhcnQgcHJvZ3JhbS4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgMTk5OC0yMDAwLCBUaGVvZG9yZSBUcydvLgorICoKKyAqIFdlbGwsIGhlcmUncyBteSBsaW51eCB2ZXJzaW9uIG9mIGZpbmRzdXBlci4KKyAqIEknbSBzdXJlIHlvdSBjb3VsZGEgZG9uZSBpdCBmYXN0ZXIuICA6KQorICogSU1ITyB0aGVyZSBpc24ndCBhcyBtdWNoIGludGVyZXN0aW5nIGRhdGEgdG8gcHJpbnQgaW4gdGhlCisgKiBsaW51eCBzdXBlcmJsb2NrIGFzIHRoZXJlIGlzIGluIHRoZSBTdW5PUyBzdXBlcmJsb2NrLS1kaXNrIGdlb21ldHJ5IGlzCisgKiBub3QgdGhlcmUuLi5hbmQgbGludXggc2VlbXMgdG8gdXBkYXRlIHRoZSBkYXRlcyBpbiBhbGwgdGhlIHN1cGVyYmxvY2tzLgorICogU3VuT1MgZG9lc24ndCBldmVyIHRvdWNoIHRoZSBiYWNrdXAgc3VwZXJibG9ja3MgYWZ0ZXIgdGhlIGZzIGlzIGNyZWF0ZWQsCisgKiBhcyBmYXIgYXMgSSBjYW4gdGVsbCwgc28gdGhlIGRhdGUgaXMgbW9yZSBpbnRlcmVzdGluZyBJTUhPIGFuZCBjZXJ0YWlubHkKKyAqIG1hcmtzIHdoaWNoIHN1cGVyYmxvY2tzIGFyZSBiYWNrdXAgb25lcy4KKyAqCisgKiBJIHdhbnRlZCB0byBhZGQgbXNkb3Mgc3VwcG9ydCwgYnV0IEkgY291bGRuJ3QgbWFrZSBoZWFkcyBvciB0YWlscworICogb2YgdGhlIGtlcm5lbCBpbmNsdWRlIGZpbGVzIHRvIGZpbmQgYW55dGhpbmcgSSBjb3VsZCBsb29rIGZvciBpbiBtc2Rvcy4KKyAqCisgKiBSZWFkaW5nIGV2ZXJ5IGJsb2NrIG9mIGEgU3VuIHBhcnRpdGlvbiBpcyBmYWlybHkgcXVpY2suICBEb2luZyB0aGUKKyAqIHNhbWUgdW5kZXIgbGludXggKHNsb3dlciBoYXJkd2FyZSBJIHN1cHBvc2UpIGp1c3QgaXNuJ3QgdGhlIHNhbWUuCisgKiBJdCBtaWdodCBiZSBtb3JlIHVzZWZ1bCB0byBkZWZhdWx0IHRvIHJlYWRpbmcgdGhlIGZpcnN0IChzZWNvbmQ/KSBibG9jaworICogb24gZWFjaCBjeWw7IGhvd2V2ZXIsIGlmIHRoZSBkaXNrIGdlb21ldHJ5IGlzIHdyb25nLCB0aGlzIGlzIHVzZWxlc3MuCisgKiBCdXQgeWEgY291bGQgc3RpbGwgZ2V0IHRoZSBjeWwgc2l6ZSB0byBwcmludCB0aGUgbnVtYmVycyBhcyBjeWxzIGluc3RlYWQKKyAqIG9mIGJsb2Nrcy4uLgorICoKKyAqIHJ1biB0aGlzIGFzIChmb3IgZXhhbXBsZSkKKyAqICAgZmluZHN1cGVyIC9kZXYvaGRhCisgKiAgIGZpbmRzdXBlciAvZGV2L2hkYSA0Mzc3NjAgMTAyNCAgIChteSBkaXNrIGhhcyBjeWxzIG9mIDg1NSo1MTIpCisgKgorICogSSBzdXBwb3NlIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZmlnZ3VyZSBvdXQgYSB3YXkgdG8gZGV0ZXJtaW5lIGlmCisgKiB0aGUgYmxvY2sgZm91bmQgaXMgdGhlIGZpcnN0IHN1cGVyYmxvY2sgc29tZWhvdywgYW5kIGlmIHNvLCBidWlsZAorICogYSBwYXJ0aXRpb24gdGFibGUgZnJvbSB0aGUgc3VwZXJibG9ja3MgZm91bmQuLi4gYnV0IHRoaXMgaXMgc3RpbGwKKyAqIHVzZWZ1bCBhcyBpcy4KKyAqCisgKgkJU3RldmUKKyAqIHNzZEBuZXZldHMub2F1Lm9yZworICogc3NkQG1hZS5lbmdyLnVjZi5lZHUKKyAqCisgKiBBZGRpdGlvbmFsIG5vdGVzIGJ5IEFuZHJlYXMgRGlsZ2VyIDxhZGlsZ2VyQHR1cmJvbGludXguY29tPjoKKyAqIC0gZml4ZWQgdG8gc3VwcG9ydCA+IDJHIGRldmljZXMgYnkgdXNpbmcgbHNlZWs2NAorICogLSBhZGQgcmVsaWFiaWxpdHkgY2hlY2tpbmcgZm9yIHRoZSBzdXBlcmJsb2NrIHRvIGF2b2lkIHJhbmRvbSBnYXJiYWdlCisgKiAtIGFkZCBhZGFwdGl2ZSBwcm9ncmVzcyBtZXRlcgorICoKKyAqIEl0IF9zaG91bGRfIGFsc28gaGFuZGxlIHNpZ25hbHMgYW5kIHRlbGwgeW91IHRoZSBlbmRpbmcgYmxvY2ssIHNvCisgKiB0aGF0IHlvdSBjYW4gcmVzdW1lIGF0IGEgbGF0ZXIgdGltZSwgYnV0IGl0IGRvZXNuJ3QgeWV0Li4uCisgKgorICogTm90ZSB0aGF0IGdwYXJ0IGRvZXMgbm90IGFwcGVhciB0byBmaW5kIGFsbCBzdXBlcmJsb2NrcyB0aGF0IGFyZW4ndCBhbGlnbmVkCisgKiB3aXRoIHRoZSBzdGFydCBvZiBhIHBvc3NpYmxlIHBhcnRpdGlvbiwgc28gaXQgaXMgbm90IHVzZWZ1bCBpbiBzeXN0ZW1zCisgKiB3aXRoIExWTSBvciBzaW1pbGFyIHNldHVwcyB3aGljaCBkb24ndCB1c2UgZmF0IHBhcnRpdGlvbiBhbGlnbm1lbnQuCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogRG9jdW1lbnRhdGlvbiBhZGRlbmR1bSBhZGRlZCBieSBBbmRyZWFzIGR3Z3Vlc3RAd2luLnR1ZS5ubC9hZWJAY3dpLm5sCisgKgorICogVGhlIHByb2dyYW0gZmluZHN1cGVyIGlzIGEgdXRpbGl0eSB0aGF0IHNjYW5zIGEgZGlzayBhbmQgZmluZHMKKyAqIGNvcGllcyBvZiBleHQyIHN1cGVyYmxvY2tzIChieSBjaGVja2luZyBmb3IgdGhlIGV4dDIgc2lnbmF0dXJlKS4KKyAqCisgKiBGb3IgZWFjaCBzdXBlcmJsb2NrIGZvdW5kLCBpdCBwcmludHMgdGhlIG9mZnNldCBpbiBieXRlcywgdGhlCisgKiBvZmZzZXQgaW4gMTAyNC1ieXRlIGJsb2NrcywgdGhlIHNpemUgb2YgdGhlIGV4dDIgcGFydGl0aW9uIGluIGZzCisgKiBibG9ja3MsIHRoZSBmaWxlc3lzdGVtIGJsb2Nrc2l6ZSAoaW4gYnl0ZXMpLCB0aGUgYmxvY2sgZ3JvdXAgbnVtYmVyCisgKiAoYWx3YXlzIDAgZm9yIG9sZGVyIGV4dDIgc3lzdGVtcyksIGFuZCBhIHRpbWVzdGFtcCAoc19tdGltZSkuCisgKgorICogVGhpcyBwcm9ncmFtIGNhbiBiZSB1c2VkIHRvIHJldHJpZXZlIHBhcnRpdGlvbnMgdGhhdCBoYXZlIGJlZW4KKyAqIGxvc3QuICBUaGUgc3VwZXJibG9jayBmb3IgYmxvY2sgZ3JvdXAgMCBpcyBmb3VuZCAxIGJsb2NrICgyCisgKiBzZWN0b3JzKSBhZnRlciB0aGUgcGFydGl0aW9uIHN0YXJ0LgorICoKKyAqIEZvciBuZXcgc3lzdGVtcyB0aGF0IGhhdmUgYSBibG9jayBncm91cCBudW1iZXIgaW4gdGhlIHN1cGVyYmxvY2sgaXQKKyAqIGlzIGltbWVkaWF0ZWx5IGNsZWFyIHdoaWNoIHN1cGVyYmxvY2sgaXMgdGhlIGZpcnN0IG9mIGEgcGFydGl0aW9uLgorICogRm9yIG9sZCBzeXN0ZW1zIHdoZXJlIG5vIGdyb3VwIG51bWJlcnMgYXJlIGdpdmVuLCB0aGUgZmlyc3QKKyAqIHN1cGVyYmxvY2sgY2FuIGJlIHJlY29nbmlzZWQgYnkgdGhlIHRpbWVzdGFtcDogYWxsIHN1cGVyYmxvY2sKKyAqIGNvcGllcyBoYXZlIHRoZSBjcmVhdGlvbiB0aW1lIGluIHNfbXRpbWUsIGV4Y2VwdCB0aGUgZmlyc3QsIHdoaWNoCisgKiBoYXMgdGhlIGxhc3QgdGltZSBlMmZzY2sgb3IgdHVuZTJmcyB3cm90ZSB0byB0aGUgZmlsZXN5c3RlbS4KKyAqCisgKi8KKworI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyN1bmRlZiBERUJVRworCisjaWZkZWYgREVCVUcKKyNkZWZpbmUgV0hZKGZtdCwgYXJnLi4uKSB7IHByaW50ZigiXHIlTGQ6ICIgZm10LCBzaywgIyNhcmcpIDsgY29udGludWU7IH0KKyNlbHNlCisjZGVmaW5lIFdIWShmbXQsIGFyZy4uLikgeyBjb250aW51ZTsgfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHVzYWdlKHZvaWQpCit7CisJZnByaW50ZihzdGRlcnIsCisJCV8oIlVzYWdlOiAgZmluZHN1cGVyIGRldmljZSBbc2tpcGJ5dGVzIFtzdGFydGtiXV1cbiIpKTsKKwlleGl0KDEpOworfQorCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50IHNraXByYXRlPTUxMjsJCS8qIG9uZSBzZWN0b3IgKi8KKwlsb2ZmX3Qgc2s9MCwgc2tsPTA7CisJaW50IGZkOworCWNoYXIgKnM7CisJdGltZV90IHRtLCBsYXN0ID0gdGltZSgwKTsKKwlsb2ZmX3QgaW50ZXJ2YWwgPSAxMDI0ICogMTAyNDsKKwlpbnQgYywgcHJpbnRfam5sX2NvcGllcyA9IDA7CisJY29uc3QgY2hhciAqIGRldmljZV9uYW1lOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIGV4dDI7CisJLyogaW50ZXJlc3RpbmcgZmllbGRzOiBFWFQyX1NVUEVSX01BR0lDCisJICogICAgICBzX2Jsb2Nrc19jb3VudCBzX2xvZ19ibG9ja19zaXplIHNfbXRpbWUgc19tYWdpYyBzX2xhc3RjaGVjayAqLworCisjaWZkZWYgRU5BQkxFX05MUworCXNldGxvY2FsZShMQ19NRVNTQUdFUywgIiIpOworCXNldGxvY2FsZShMQ19DVFlQRSwgIiIpOworCWJpbmR0ZXh0ZG9tYWluKE5MU19DQVRfTkFNRSwgTE9DQUxFRElSKTsKKwl0ZXh0ZG9tYWluKE5MU19DQVRfTkFNRSk7CisJc2V0X2NvbV9lcnJfZ2V0dGV4dChnZXR0ZXh0KTsKKyNlbmRpZgorCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiaiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2onOgorCQkJcHJpbnRfam5sX2NvcGllcysrOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl1c2FnZSgpOworCQl9CisJfQorCisJaWYgKG9wdGluZCA9PSBhcmdjKQorCQl1c2FnZSgpOworCisJZGV2aWNlX25hbWUgPSBhcmd2W29wdGluZCsrXTsKKworCWlmIChvcHRpbmQgPCBhcmdjKSB7CisJCXNraXByYXRlID0gc3RydG9sKGFyZ3Zbb3B0aW5kXSwgJnMsIDApOworCQlpZiAocyA9PSBhcmd2W29wdGluZF0pIHsKKwkJCWZwcmludGYoc3RkZXJyLF8oInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIiksIHMpOworCQkJZXhpdCgxKTsKKwkJfQorCQlvcHRpbmQrKzsKKwl9CisJaWYgKHNraXByYXRlICYgMHgxZmYpIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQlfKCJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIikpOworCQlleGl0KDIpOworCX0KKwlpZiAob3B0aW5kIDwgYXJnYykgeworCQlzayA9IHNrbCA9IHN0cnRvbGwoYXJndltvcHRpbmRdLCAmcywgMCkgPDwgMTA7CisJCWlmIChzID09IGFyZ3Zbb3B0aW5kXSkgeworCQkJZnByaW50ZihzdGRlcnIsCisJCQkJXygic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIiksIHMpOworCQkJZXhpdCgxKTsKKwkJfQorCQlvcHRpbmQrKzsKKwl9CisJaWYgKHNrIDwgMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iKSxzayk7CisJCWV4aXQoMSk7CisJfQorCisJZmQgPSBvcGVuKGRldmljZV9uYW1lLCBPX1JET05MWSk7CisJaWYgKGZkIDwgMCkgeworCQlwZXJyb3IoZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCS8qIE5vdywgZ28gbG9va2luZyBmb3IgdGhlIHN1cGVyYmxvY2shICovCisJcHJpbnRmKF8oInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iKSwgc2ssIHNraXByYXRlKTsKKwlpZiAocHJpbnRfam5sX2NvcGllcykKKwkJcHJpbnRmKF8oIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgIgorCQkJICJqb3VybmFsIHN1cGVyYmxvY2ssXG5cdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIpKTsKKwlwcmludGYoXygiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy9tb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iKSk7CisJZm9yICg7IGxzZWVrNjQoZmQsIHNrLCBTRUVLX1NFVCkgIT0gLTEgJiYKKwkgICAgICAgcmVhZChmZCwgJmV4dDIsIDUxMikgPT0gNTEyOyBzayArPSBza2lwcmF0ZSkgeworCQlzdGF0aWMgdW5zaWduZWQgY2hhciBsYXN0X3V1aWRbMTZdID0gImJsYWgiOworCQl1bnNpZ25lZCBsb25nIGxvbmcgYnNpemUsIGdycHNpemU7CisJCWludCBqbmxfY29weSwgc2Jfb2Zmc2V0OworCisJCWlmIChzayAmJiAhKHNrICYgKGludGVydmFsIC0gMSkpKSB7CisJCQl0aW1lX3Qgbm93LCBkaWZmOworCisJCQlub3cgPSB0aW1lKDApOworCQkJZGlmZiA9IG5vdyAtIGxhc3Q7CisKKwkJCWlmIChkaWZmID4gMCkgeworCQkJCXMgPSBjdGltZSgmbm93KTsKKwkJCQlzWzI0XSA9IDA7CisJCQkJcHJpbnRmKCJcciUxMUx1OiAlOEx1a0IvcyBAICVzIiwgc2ssCisJCQkJICAgICAgICgoKHNrIC0gc2tsKSkgLyBkaWZmKSA+PiAxMCwgcyk7CisJCQkJZmZsdXNoKHN0ZG91dCk7CisJCQl9CisJCQlpZiAoZGlmZiA8IDUpCisJCQkJaW50ZXJ2YWwgPDw9IDE7CisJCQllbHNlIGlmIChkaWZmID4gMjApCisJCQkJaW50ZXJ2YWwgPj49IDE7CisJCQlsYXN0ID0gbm93OworCQkJc2tsID0gc2s7CisJCX0KKwkJaWYgKGV4dDIuc19tYWdpYyAhPSBFWFQyX1NVUEVSX01BR0lDKQorCQkJY29udGludWU7CisJCWlmIChleHQyLnNfbG9nX2Jsb2NrX3NpemUgPiA2KQorCQkJV0hZKCJsb2cgYmxvY2sgc2l6ZSA+IDYgKCV1KVxuIiwgZXh0Mi5zX2xvZ19ibG9ja19zaXplKTsKKwkJaWYgKGV4dDJmc19yX2Jsb2Nrc19jb3VudCgmZXh0MikgPiBleHQyZnNfYmxvY2tzX2NvdW50KCZleHQyKSkKKwkJCVdIWSgicl9ibG9ja3NfY291bnQgPiBibG9ja3NfY291bnQgKCV1ID4gJXUpXG4iLAorCQkJICAgIGV4dDJmc19yX2Jsb2Nrc19jb3VudCgmZXh0MiksCisJCQkgICAgZXh0MmZzX2Jsb2Nrc19jb3VudCgmZXh0MikpOworCQlpZiAoZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KCZleHQyKSA+IGV4dDJmc19ibG9ja3NfY291bnQoJmV4dDIpKQorCQkJV0hZKCJmcmVlX2Jsb2Nrc19jb3VudCA+IGJsb2Nrc19jb3VudFxuICgldSA+ICV1KVxuIiwKKwkJCSAgICBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoJmV4dDIpLAorCQkJICAgIGV4dDJmc19ibG9ja3NfY291bnQoJmV4dDIpKTsKKwkJaWYgKGV4dDIuc19mcmVlX2lub2Rlc19jb3VudCA+IGV4dDIuc19pbm9kZXNfY291bnQpCisJCQlXSFkoImZyZWVfaW5vZGVzX2NvdW50ID4gaW5vZGVzX2NvdW50ICgldSA+ICV1KVxuIiwKKwkJCSAgICBleHQyLnNfZnJlZV9pbm9kZXNfY291bnQsIGV4dDIuc19pbm9kZXNfY291bnQpOworCisJCWlmIChleHQyLnNfbWtmc190aW1lICE9IDApCisJCQl0bSA9IGV4dDIuc19ta2ZzX3RpbWU7CisJCWVsc2UKKwkJCXRtID0gZXh0Mi5zX210aW1lOworCQlzID0gY3RpbWUoJnRtKTsKKwkJc1syNF0gPSAwOworCQlic2l6ZSA9IDEgPDwgKGV4dDIuc19sb2dfYmxvY2tfc2l6ZSArIDEwKTsKKwkJZ3Jwc2l6ZSA9IGJzaXplICogZXh0Mi5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCWlmIChtZW1jbXAoZXh0Mi5zX3V1aWQsIGxhc3RfdXVpZCwgc2l6ZW9mKGxhc3RfdXVpZCkpID09IDAgJiYKKwkJICAgIGV4dDIuc19yZXZfbGV2ZWwgPiAwICYmIGV4dDIuc19ibG9ja19ncm91cF9uciA9PSAwKSB7CisJCQlqbmxfY29weSA9IDE7CisJCX0gZWxzZSB7CisJCQlqbmxfY29weSA9IDA7CisJCQltZW1jcHkobGFzdF91dWlkLCBleHQyLnNfdXVpZCwgc2l6ZW9mKGxhc3RfdXVpZCkpOworCQl9CisJCWlmIChleHQyLnNfYmxvY2tfZ3JvdXBfbnIgPT0gMCB8fCBic2l6ZSA9PSAxMDI0KQorCQkJc2Jfb2Zmc2V0ID0gMTAyNDsKKwkJZWxzZQorCQkJc2Jfb2Zmc2V0ID0gMDsKKwkJaWYgKGpubF9jb3B5ICYmICFwcmludF9qbmxfY29waWVzKQorCQkJY29udGludWU7CisJCXByaW50ZigiXHIlMTFMdSAlMTFMdSVzICUxMUx1JXMgJTl1ICU1THUgJTR1JXMgJXMgJTAyeCUwMnglMDJ4JTAyeCAlc1xuIiwKKwkJICAgICAgIHNrLCBzayAtIGV4dDIuc19ibG9ja19ncm91cF9uciAqIGdycHNpemUgLSBzYl9vZmZzZXQsCisJCSAgICAgICBqbmxfY29weSA/ICIqIjoiICIsCisJCSAgICAgICBzayArIGV4dDJmc19ibG9ja3NfY291bnQoJmV4dDIpICogYnNpemUgLQorCQkgICAgICAgICAgICBleHQyLnNfYmxvY2tfZ3JvdXBfbnIgKiBncnBzaXplIC0gc2Jfb2Zmc2V0LAorCQkgICAgICAgam5sX2NvcHkgPyAiKiIgOiAiICIsIGV4dDJmc19ibG9ja3NfY291bnQoJmV4dDIpLCBic2l6ZSwKKwkJICAgICAgIGV4dDIuc19ibG9ja19ncm91cF9uciwgam5sX2NvcHkgPyAiKiIgOiAiICIsIHMsCisJCSAgICAgICBleHQyLnNfdXVpZFswXSwgZXh0Mi5zX3V1aWRbMV0sCisJCSAgICAgICBleHQyLnNfdXVpZFsyXSwgZXh0Mi5zX3V1aWRbM10sIGV4dDIuc192b2x1bWVfbmFtZSk7CisJfQorCXByaW50ZihfKCJcbiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iKSwgc2ssIGVycm5vKTsKKwljbG9zZShmZCk7CisKKwlyZXR1cm4gZXJybm87Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9mc2NrLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9mc2NrLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBmZDhjZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2ZzY2suOC5pbgpAQCAtMCwwICsxLDQxNCBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSBieSBUaGVvZG9yZSBUcydvLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy5cIiBUaGlzIGZpbGUgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKy5cIiAKKy5USCBGU0NLIDggIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2ZzY2sgXC0gY2hlY2sgYW5kIHJlcGFpciBhIExpbnV4IGZpbGUgc3lzdGVtCisuU0ggU1lOT1BTSVMKKy5CIGZzY2sKK1sKKy5CIFwtc0FWUlRNTlAKK10KK1sKKy5CIFwtQworWworLkkgZmQKK10KK10KK1sKKy5CIFwtdAorLkkgZnN0eXBlCitdIAorLkkgW2ZpbGVzeXMgLi4uIF0KK1tcLVwtXSBbCisuQiBmcy1zcGVjaWZpYy1vcHRpb25zCitdCisuU0ggREVTQ1JJUFRJT04KKy5CIGZzY2sKK2lzIHVzZWQgdG8gY2hlY2sgYW5kIG9wdGlvbmFsbHkgcmVwYWlyIG9uZSBvciBtb3JlIExpbnV4IGZpbGUgc3lzdGVtcy4gIAorLkkgZmlsZXN5cworY2FuIGJlIGEgZGV2aWNlIG5hbWUgKGUuZy4KKy5JUiAvZGV2L2hkYzEgIiwgIiAvZGV2L3NkYjIgKSwKK2EgbW91bnQgcG9pbnQgKGUuZy4KKy5JUiAvICIsICIgL3VzciAiLCAiIC9ob21lICksCitvciBhbiBleHQyIGxhYmVsIG9yIFVVSUQgc3BlY2lmaWVyIChlLmcuCitVVUlEPTg4NjhhYmY2LTg4YzUtNGE4My05OGI4LWJmYzI0MDU3ZjdiZCBvciBMQUJFTD1yb290KS4gIAorTm9ybWFsbHksIHRoZSAKKy5CIGZzY2sgCitwcm9ncmFtIHdpbGwgdHJ5IHRvIGhhbmRsZSBmaWxlc3lzdGVtcyBvbiBkaWZmZXJlbnQgcGh5c2ljYWwgZGlzayBkcml2ZXMgCitpbiBwYXJhbGxlbCB0byByZWR1Y2UgdGhlIHRvdGFsIGFtb3VudCBvZiB0aW1lIG5lZWRlZCB0byBjaGVjayBhbGwgb2YgdGhlCitmaWxlc3lzdGVtcy4KKy5QUAorSWYgbm8gZmlsZXN5c3RlbXMgYXJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIAorLkIgXC1BIAorb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIAorLkIgZnNjaword2lsbCBkZWZhdWx0IHRvIGNoZWNraW5nIGZpbGVzeXN0ZW1zIGluCisuQiAvZXRjL2ZzdGFiCitzZXJpYWxseS4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgCisuQiBcLUFzCitvcHRpb25zLgorLlBQCitUaGUgZXhpdCBjb2RlIHJldHVybmVkIGJ5CisuQiBmc2NrCitpcyB0aGUgc3VtIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKy5icgorXAkwXAlcLVwgTm8gZXJyb3JzCisuYnIKK1wJMVwJXC1cIEZpbGUgc3lzdGVtIGVycm9ycyBjb3JyZWN0ZWQKKy5icgorXAkyXAlcLVwgU3lzdGVtIHNob3VsZCBiZSByZWJvb3RlZAorLmJyCitcCTRcCVwtXCBGaWxlIHN5c3RlbSBlcnJvcnMgbGVmdCB1bmNvcnJlY3RlZAorLmJyCitcCThcCVwtXCBPcGVyYXRpb25hbCBlcnJvcgorLmJyCitcCTE2XAlcLVwgVXNhZ2Ugb3Igc3ludGF4IGVycm9yCisuYnIKK1wJMzJcCVwtXCBGc2NrIGNhbmNlbGVkIGJ5IHVzZXIgcmVxdWVzdAorLmJyCitcCTEyOFwJXC1cIFNoYXJlZCBsaWJyYXJ5IGVycm9yCisuYnIKK1RoZSBleGl0IGNvZGUgcmV0dXJuZWQgd2hlbiBtdWx0aXBsZSBmaWxlIHN5c3RlbXMgYXJlIGNoZWNrZWQgCitpcyB0aGUgYml0LXdpc2UgT1Igb2YgdGhlIGV4aXQgY29kZXMgZm9yIGVhY2gKK2ZpbGUgc3lzdGVtIHRoYXQgaXMgY2hlY2tlZC4KKy5QUAorSW4gYWN0dWFsaXR5LAorLkIgZnNjaworaXMgc2ltcGx5IGEgZnJvbnQtZW5kIGZvciB0aGUgdmFyaW91cyBmaWxlIHN5c3RlbSBjaGVja2VycworKFxmQmZzY2tcZlIuXGZJZnN0eXBlXGZSKSBhdmFpbGFibGUgdW5kZXIgTGludXguICBUaGUgZmlsZQorc3lzdGVtLXNwZWNpZmljIGNoZWNrZXIgaXMgc2VhcmNoZWQgZm9yIGluCisuSSAvc2JpbgorZmlyc3QsIHRoZW4gaW4KKy5JIC9ldGMvZnMKK2FuZAorLklSIC9ldGMgLAorYW5kIGZpbmFsbHkgaW4gdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiB0aGUgUEFUSCBlbnZpcm9ubWVudAordmFyaWFibGUuICBQbGVhc2Ugc2VlIHRoZSBmaWxlIHN5c3RlbS1zcGVjaWZpYyBjaGVja2VyIG1hbnVhbCBwYWdlcyBmb3IKK2Z1cnRoZXIgZGV0YWlscy4KKy5TSCBPUFRJT05TCisuVFAKKy5CIFwtcworU2VyaWFsaXplIAorLkIgZnNjayAKK29wZXJhdGlvbnMuICBUaGlzIGlzIGEgZ29vZCBpZGVhIGlmIHlvdSBhcmUgY2hlY2tpbmcgbXVsdGlwbGUKK2ZpbGVzeXN0ZW1zIGFuZCB0aGUgY2hlY2tlcnMgYXJlIGluIGFuIGludGVyYWN0aXZlIG1vZGUuICAoTm90ZToKKy5CUiBlMmZzY2sgKDgpCitydW5zIGluIGFuIGludGVyYWN0aXZlIG1vZGUgYnkgZGVmYXVsdC4gIFRvIG1ha2UgCisuQlIgZTJmc2NrICg4KQorcnVuIGluIGEgbm9uLWludGVyYWN0aXZlIG1vZGUsIHlvdSBtdXN0IGVpdGhlciBzcGVjaWZ5IHRoZQorLkIgXC1wCitvcgorLkIgXC1hCitvcHRpb24sIGlmIHlvdSB3aXNoIGZvciBlcnJvcnMgdG8gYmUgY29ycmVjdGVkIGF1dG9tYXRpY2FsbHksIG9yIHRoZSAKKy5CIFwtbgorb3B0aW9uIGlmIHlvdSBkbyBub3QuKQorLlRQCisuQkkgXC10ICIgZnNsaXN0IgorU3BlY2lmaWVzIHRoZSB0eXBlKHMpIG9mIGZpbGUgc3lzdGVtIHRvIGJlIGNoZWNrZWQuICBXaGVuIHRoZQorLkIgXC1BIAorZmxhZyBpcyBzcGVjaWZpZWQsIG9ubHkgZmlsZXN5c3RlbXMgdGhhdCBtYXRjaCAKKy5JIGZzbGlzdAorYXJlIGNoZWNrZWQuICBUaGUKKy5JIGZzbGlzdAorcGFyYW1ldGVyIGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmlsZXN5c3RlbXMgYW5kIG9wdGlvbnMKK3NwZWNpZmllcnMuICBBbGwgb2YgdGhlIGZpbGVzeXN0ZW1zIGluIHRoaXMgY29tbWEtc2VwYXJhdGVkIGxpc3QgbWF5IGJlCitwcmVmaXhlZCBieSBhIG5lZ2F0aW9uIG9wZXJhdG9yIAorLlJCICcgbm8gJworb3IgCisuUkIgJyAhICcsCit3aGljaCByZXF1ZXN0cyB0aGF0IG9ubHkgdGhvc2UgZmlsZXN5c3RlbXMgbm90IGxpc3RlZCBpbgorLkkgZnNsaXN0Cit3aWxsIGJlIGNoZWNrZWQuICBJZiBhbGwgb2YgdGhlIGZpbGVzeXN0ZW1zIGluIAorLkkgZnNsaXN0CithcmUgbm90IHByZWZpeGVkIGJ5IGEgbmVnYXRpb24gb3BlcmF0b3IsIHRoZW4gb25seSB0aG9zZSBmaWxlc3lzdGVtcworbGlzdGVkCitpbgorLkkgZnNsaXN0Cit3aWxsIGJlIGNoZWNrZWQuCisuc3AKK09wdGlvbnMgc3BlY2lmaWVycyBtYXkgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbW1hLXNlcGFyYXRlZAorLklSIGZzbGlzdCAuCitUaGV5IG11c3QgaGF2ZSB0aGUgZm9ybWF0IAorLkJJIG9wdHM9IGZzLW9wdGlvblxmUi4KK0lmIGFuIG9wdGlvbnMgc3BlY2lmaWVyIGlzIHByZXNlbnQsIHRoZW4gb25seSBmaWxlc3lzdGVtcyB3aGljaCBjb250YWluCisuSSBmcy1vcHRpb24KK2luIHRoZWlyIG1vdW50IG9wdGlvbnMgZmllbGQgb2YgCisuQiAvZXRjL2ZzdGFiCit3aWxsIGJlIGNoZWNrZWQuICBJZiB0aGUgb3B0aW9ucyBzcGVjaWZpZXIgaXMgcHJlZml4ZWQgYnkgYSBuZWdhdGlvbgorb3BlcmF0b3IsIHRoZW4gb25seSAKK3Rob3NlIGZpbGVzeXN0ZW1zIHRoYXQgZG8gbm90IGhhdmUKKy5JIGZzLW9wdGlvbgoraW4gdGhlaXIgbW91bnQgb3B0aW9ucyBmaWVsZCBvZgorLkIgL2V0Yy9mc3RhYiAKK3dpbGwgYmUgY2hlY2tlZC4KKy5zcAorRm9yIGV4YW1wbGUsIGlmCisuQiBvcHRzPXJvCithcHBlYXJzIGluCisuSVIgZnNsaXN0ICwKK3RoZW4gb25seSBmaWxlc3lzdGVtcyBsaXN0ZWQgaW4KKy5CIC9ldGMvZnN0YWIgCit3aXRoIHRoZQorLkIgcm8KK29wdGlvbiB3aWxsIGJlIGNoZWNrZWQuCisuc3AKK0ZvciBjb21wYXRpYmlsaXR5IHdpdGggTWFuZHJha2UgZGlzdHJpYnV0aW9ucyB3aG9zZSBib290IHNjcmlwdHMKK2RlcGVuZCB1cG9uIGFuIHVuYXV0aG9yaXplZCBVSSBjaGFuZ2UgdG8gdGhlCisuQiBmc2NrCitwcm9ncmFtLCBpZiBhIGZpbGVzeXN0ZW0gdHlwZSBvZgorLkIgbG9vcAoraXMgZm91bmQgaW4KKy5JUiBmc2xpc3QgLAoraXQgaXMgdHJlYXRlZCBhcyBpZgorLkIgb3B0cz1sb29wCit3ZXJlIHNwZWNpZmllZCBhcyBhbiBhcmd1bWVudCB0byB0aGUKKy5CIFwtdAorb3B0aW9uLgorLnNwCitOb3JtYWxseSwgdGhlIGZpbGVzeXN0ZW0gdHlwZSBpcyBkZWR1Y2VkIGJ5IHNlYXJjaGluZyBmb3IKKy5JIGZpbGVzeXMKK2luIHRoZSAKKy5JIC9ldGMvZnN0YWIgCitmaWxlIGFuZCB1c2luZyB0aGUgY29ycmVzcG9uZGluZyBlbnRyeS4KK0lmIHRoZSB0eXBlIGNhbiBub3QgYmUgZGVkdWNlZCwgYW5kIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgZmlsZXN5c3RlbSAKK2dpdmVuIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSAKKy5CIFwtdCAKK29wdGlvbiwgCisuQiBmc2NrCit3aWxsIHVzZSB0aGUgc3BlY2lmaWVkIGZpbGVzeXN0ZW0gdHlwZS4gIElmIHRoaXMgdHlwZSBpcyBub3QKK2F2YWlsYWJsZSwgdGhlbiB0aGUgZGVmYXVsdCBmaWxlIHN5c3RlbSB0eXBlIChjdXJyZW50bHkgZXh0MikgaXMgdXNlZC4gCisuVFAKKy5CIFwtQQorV2FsayB0aHJvdWdoIHRoZQorLkkgL2V0Yy9mc3RhYgorZmlsZSBhbmQgdHJ5IHRvIGNoZWNrIGFsbCBmaWxlIHN5c3RlbXMgaW4gb25lIHJ1bi4gIFRoaXMgb3B0aW9uIGlzCit0eXBpY2FsbHkgdXNlZCBmcm9tIHRoZQorLkkgL2V0Yy9yYworc3lzdGVtIGluaXRpYWxpemF0aW9uIGZpbGUsIGluc3RlYWQgb2YgbXVsdGlwbGUgY29tbWFuZHMgZm9yIGNoZWNraW5nCithIHNpbmdsZSBmaWxlIHN5c3RlbS4KKy5zcAorVGhlIHJvb3QgZmlsZXN5c3RlbSB3aWxsIGJlIGNoZWNrZWQgZmlyc3QgdW5sZXNzIHRoZQorLkIgXC1QCitvcHRpb24gaXMgc3BlY2lmaWVkIChzZWUgYmVsb3cpLiAgQWZ0ZXIgdGhhdCwgCitmaWxlc3lzdGVtcyB3aWxsIGJlIGNoZWNrZWQgaW4gdGhlIG9yZGVyIHNwZWNpZmllZCBieSB0aGUgCisuSSBmc19wYXNzbm8gCisodGhlIHNpeHRoKSBmaWVsZCBpbiB0aGUgCisuSSAvZXRjL2ZzdGFiCitmaWxlLiAgCitGaWxlc3lzdGVtcyB3aXRoIGEgCisuSSBmc19wYXNzbm8KK3ZhbHVlIG9mIDAgYXJlIHNraXBwZWQgYW5kIGFyZSBub3QgY2hlY2tlZCBhdCBhbGwuICBGaWxlc3lzdGVtcyB3aXRoIGEKKy5JIGZzX3Bhc3NubwordmFsdWUgb2YgZ3JlYXRlciB0aGFuIHplcm8gd2lsbCBiZSBjaGVja2VkIGluIG9yZGVyLCAKK3dpdGggZmlsZXN5c3RlbXMgd2l0aCB0aGUgbG93ZXN0CisuSSBmc19wYXNzbm8gCitudW1iZXIgYmVpbmcgY2hlY2tlZCBmaXJzdC4KK0lmIHRoZXJlIGFyZSBtdWx0aXBsZSBmaWxlc3lzdGVtcyB3aXRoIHRoZSBzYW1lIHBhc3MgbnVtYmVyLCAKK2ZzY2sgd2lsbCBhdHRlbXB0IHRvIGNoZWNrIHRoZW0gaW4gcGFyYWxsZWwsIGFsdGhvdWdoIGl0IHdpbGwgYXZvaWQgcnVubmluZyAKK211bHRpcGxlIGZpbGVzeXN0ZW0gY2hlY2tzIG9uIHRoZSBzYW1lIHBoeXNpY2FsIGRpc2suICAKKy5zcAorSGVuY2UsIGEgdmVyeSBjb21tb24gY29uZmlndXJhdGlvbiBpbiAKKy5JIC9ldGMvZnN0YWIKK2ZpbGVzIGlzIHRvIHNldCB0aGUgcm9vdCBmaWxlc3lzdGVtIHRvIGhhdmUgYSAKKy5JIGZzX3Bhc3NubwordmFsdWUgb2YgMQorYW5kIHRvIHNldCBhbGwgb3RoZXIgZmlsZXN5c3RlbXMgdG8gaGF2ZSBhCisuSSBmc19wYXNzbm8KK3ZhbHVlIG9mIDIuICBUaGlzIHdpbGwgYWxsb3cKKy5CIGZzY2sKK3RvIGF1dG9tYXRpY2FsbHkgcnVuIGZpbGVzeXN0ZW0gY2hlY2tlcnMgaW4gcGFyYWxsZWwgaWYgaXQgaXMgYWR2YW50YWdlb3VzCit0byBkbyBzby4gIFN5c3RlbSBhZG1pbmlzdHJhdG9ycyBtaWdodCBjaG9vc2UKK25vdCB0byB1c2UgdGhpcyBjb25maWd1cmF0aW9uIGlmIHRoZXkgbmVlZCB0byBhdm9pZCBtdWx0aXBsZSBmaWxlc3lzdGVtCitjaGVja3MgcnVubmluZyBpbiBwYXJhbGxlbCBmb3Igc29tZSByZWFzb24gLS0tIGZvciBleGFtcGxlLCBpZiB0aGUKK21hY2hpbmUgaW4gcXVlc3Rpb24gaXMgc2hvcnQgb24gbWVtb3J5IHNvIHRoYXQKK2V4Y2Vzc2l2ZSBwYWdpbmcgaXMgYSBjb25jZXJuLgorLlRQCisuQiBcLUNcZlIgWyBcZkkgImZkIiBcZlIgXQorRGlzcGxheSBjb21wbGV0aW9uL3Byb2dyZXNzIGJhcnMgZm9yIHRob3NlIGZpbGVzeXN0ZW0gY2hlY2tlcnMgKGN1cnJlbnRseSAKK29ubHkgZm9yIGV4dDIgYW5kIGV4dDMpIHdoaWNoIHN1cHBvcnQgdGhlbS4gICBGc2NrIHdpbGwgbWFuYWdlIHRoZQorZmlsZXN5c3RlbSBjaGVja2VycyBzbyB0aGF0IG9ubHkgb25lIG9mIHRoZW0gd2lsbCBkaXNwbGF5ICAKK2EgcHJvZ3Jlc3MgYmFyIGF0IGEgdGltZS4gIEdVSSBmcm9udC1lbmRzIG1heSBzcGVjaWZ5IGEgZmlsZSBkZXNjcmlwdG9yCisuSVIgZmQgLAoraW4gd2hpY2ggY2FzZSB0aGUgcHJvZ3Jlc3MgYmFyIGluZm9ybWF0aW9uIHdpbGwgYmUgc2VudCB0byB0aGF0IGZpbGUgZGVzY3JpcHRvci4KKy5UUAorLkIgXC1NCitEbyBub3QgY2hlY2sgbW91bnRlZCBmaWxlc3lzdGVtcyBhbmQgcmV0dXJuIGFuIGV4aXQgY29kZSBvZiAwCitmb3IgbW91bnRlZCBmaWxlc3lzdGVtcy4KKy5UUAorLkIgXC1OCitEb24ndCBleGVjdXRlLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBkb25lLgorLlRQCisuQiBcLVAKK1doZW4gdGhlIAorLkIgXC1BCitmbGFnIGlzIHNldCwgY2hlY2sgdGhlIHJvb3QgZmlsZXN5c3RlbSBpbiBwYXJhbGxlbCB3aXRoIHRoZSBvdGhlciBmaWxlc3lzdGVtcy4KK1RoaXMgaXMgbm90IHRoZSBzYWZlc3QgdGhpbmcgaW4gdGhlIHdvcmxkIHRvIGRvLAorc2luY2UgaWYgdGhlIHJvb3QgZmlsZXN5c3RlbSBpcyBpbiBkb3VidCB0aGluZ3MgbGlrZSB0aGUgCisuQlIgZTJmc2NrICg4KSAKK2V4ZWN1dGFibGUgbWlnaHQgYmUgY29ycnVwdGVkISAgVGhpcyBvcHRpb24gaXMgbWFpbmx5IHByb3ZpZGVkCitmb3IgdGhvc2Ugc3lzYWRtaW5zIHdobyBkb24ndCB3YW50IHRvIHJlcGFydGl0aW9uIHRoZSByb290CitmaWxlc3lzdGVtIHRvIGJlIHNtYWxsIGFuZCBjb21wYWN0ICh3aGljaCBpcyByZWFsbHkgdGhlIHJpZ2h0IHNvbHV0aW9uKS4KKy5UUAorLkIgXC1SCitXaGVuIGNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMgd2l0aCB0aGUKKy5CIFwtQQorZmxhZywgc2tpcCB0aGUgcm9vdCBmaWxlIHN5c3RlbSAoaW4gY2FzZSBpdCdzIGFscmVhZHkgbW91bnRlZCByZWFkLXdyaXRlKS4KKy5UUAorLkIgXC1UCitEb24ndCBzaG93IHRoZSB0aXRsZSBvbiBzdGFydHVwLgorLlRQCisuQiBcLVYKK1Byb2R1Y2UgdmVyYm9zZSBvdXRwdXQsIGluY2x1ZGluZyBhbGwgZmlsZSBzeXN0ZW0tc3BlY2lmaWMgY29tbWFuZHMKK3RoYXQgYXJlIGV4ZWN1dGVkLgorLlRQCisuQiBmcy1zcGVjaWZpYy1vcHRpb25zCitPcHRpb25zIHdoaWNoIGFyZSBub3QgdW5kZXJzdG9vZCBieSAKKy5CIGZzY2sgCithcmUgcGFzc2VkIHRvIHRoZSBmaWxlc3lzdGVtLXNwZWNpZmljIGNoZWNrZXIuICBUaGVzZSBhcmd1bWVudHMKKy5CIG11c3QKK25vdCB0YWtlIGFyZ3VtZW50cywgYXMgdGhlcmUgaXMgbm8KK3dheSBmb3IgCisuQiBmc2NrCit0byBiZSBhYmxlIHRvIHByb3Blcmx5IGd1ZXNzIHdoaWNoIGFyZ3VtZW50cyB0YWtlIG9wdGlvbnMgYW5kIHdoaWNoCitkb24ndC4KKy5JUAorT3B0aW9ucyBhbmQgYXJndW1lbnRzIHdoaWNoIGZvbGxvdyB0aGUKKy5CIFwtXC0KK2FyZSB0cmVhdGVkIGFzIGZpbGUgc3lzdGVtLXNwZWNpZmljIG9wdGlvbnMgdG8gYmUgcGFzc2VkIHRvIHRoZQorZmlsZSBzeXN0ZW0tc3BlY2lmaWMgY2hlY2tlci4KKy5JUAorUGxlYXNlIG5vdGUgdGhhdCBmc2NrIGlzIG5vdAorZGVzaWduZWQgdG8gcGFzcyBhcmJpdHJhcmlseSBjb21wbGljYXRlZCBvcHRpb25zIHRvIGZpbGVzeXN0ZW0tc3BlY2lmaWMKK2NoZWNrZXJzLiAgSWYgeW91J3JlIGRvaW5nIHNvbWV0aGluZyBjb21wbGljYXRlZCwgcGxlYXNlIGp1c3QKK2V4ZWN1dGUgdGhlIGZpbGVzeXN0ZW0tc3BlY2lmaWMgY2hlY2tlciBkaXJlY3RseS4gIElmIHlvdSBwYXNzIAorLkIgZnNjaworc29tZSBob3JyaWJseSBjb21wbGljYXRlZCBvcHRpb24gYW5kIGFyZ3VtZW50cywgYW5kIGl0IGRvZXNuJ3QgZG8KK3doYXQgeW91IGV4cGVjdCwgCisuQiBkb24ndCBib3RoZXIgcmVwb3J0aW5nIGl0IGFzIGEgYnVnLgorWW91J3JlIGFsbW9zdCBjZXJ0YWlubHkgZG9pbmcgc29tZXRoaW5nIHRoYXQgeW91IHNob3VsZG4ndCBiZSBkb2luZword2l0aCAKKy5CUiBmc2NrLgorLlBQCitPcHRpb25zIHRvIGRpZmZlcmVudCBmaWxlc3lzdGVtLXNwZWNpZmljIGZzY2sncyBhcmUgbm90IHN0YW5kYXJkaXplZC4KK0lmIGluIGRvdWJ0LCBwbGVhc2UgY29uc3VsdCB0aGUgbWFuIHBhZ2VzIG9mIHRoZSBmaWxlc3lzdGVtLXNwZWNpZmljCitjaGVja2VyLiAgQWx0aG91Z2ggbm90IGd1YXJhbnRlZWQsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgc3VwcG9ydGVkCitieSBtb3N0IGZpbGUgc3lzdGVtIGNoZWNrZXJzOgorLlRQCisuQiBcLWEKK0F1dG9tYXRpY2FsbHkgcmVwYWlyIHRoZSBmaWxlIHN5c3RlbSB3aXRob3V0IGFueSBxdWVzdGlvbnMgKHVzZQordGhpcyBvcHRpb24gd2l0aCBjYXV0aW9uKS4gIE5vdGUgdGhhdCAKKy5CUiBlMmZzY2sgKDgpCitzdXBwb3J0cyAKKy5CIFwtYQorZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuICBUaGlzIG9wdGlvbiBpcyBtYXBwZWQgdG8gCisuQlIgZTJmc2NrICdzCisuQiBcLXAKK29wdGlvbiB3aGljaCBpcyBzYWZlIHRvIHVzZSwgdW5saWtlIHRoZSAKKy5CIFwtYSAKK29wdGlvbiB0aGF0IHNvbWUgZmlsZSBzeXN0ZW0gY2hlY2tlcnMgc3VwcG9ydC4KKy5UUAorLkIgXC1uCitGb3Igc29tZSBmaWxlc3lzdGVtLXNwZWNpZmljIGNoZWNrZXJzLCB0aGUgCisuQiBcLW4KK29wdGlvbiB3aWxsIGNhdXNlIHRoZSBmcy1zcGVjaWZpYyBmc2NrIHRvIGF2b2lkIGF0dGVtcHRpbmcgdG8gcmVwYWlyIGFueSAKK3Byb2JsZW1zLCBidXQgc2ltcGx5IHJlcG9ydCBzdWNoIHByb2JsZW1zIHRvIHN0ZG91dC4gIFRoaXMgaXMgaG93ZXZlcgorbm90IHRydWUgZm9yIGFsbCBmaWxlc3lzdGVtLXNwZWNpZmljIGNoZWNrZXJzLiAgSW4gcGFydGljdWxhciwgCisuQlIgZnNjay5yZWlzZXJmcyAoOCkKK3dpbGwgbm90IHJlcG9ydCBhbnkgY29ycnVwdGlvbiBpZiBnaXZlbiB0aGlzIG9wdGlvbi4KKy5CUiBmc2NrLm1pbml4ICg4KQorZG9lcyBub3Qgc3VwcG9ydCB0aGUgCisuQiBcLW4gCitvcHRpb24gYXQgYWxsLgorLlRQCisuQiBcLXIKK0ludGVyYWN0aXZlbHkgcmVwYWlyIHRoZSBmaWxlc3lzdGVtIChhc2sgZm9yIGNvbmZpcm1hdGlvbnMpLiAgTm90ZTogSXQKK2lzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIHVzZSB0aGlzIG9wdGlvbiBpZiBtdWx0aXBsZSBmc2NrJ3MgYXJlIGJlaW5nCitydW4gaW4gcGFyYWxsZWwuICBBbHNvIG5vdGUgdGhhdCB0aGlzIGlzIAorLkJSIGUyZnNjayAncworZGVmYXVsdCBiZWhhdmlvcjsgaXQgc3VwcG9ydHMgdGhpcyBvcHRpb24gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CityZWFzb25zIG9ubHkuCisuVFAKKy5CIFwteQorRm9yIHNvbWUgZmlsZXN5c3RlbS1zcGVjaWZpYyBjaGVja2VycywgdGhlIAorLkIgXC15IAorb3B0aW9uIHdpbGwgY2F1c2UgdGhlIGZzLXNwZWNpZmljIGZzY2sgdG8gYWx3YXlzIGF0dGVtcHQgdG8gZml4IGFueQorZGV0ZWN0ZWQgZmlsZXN5c3RlbSBjb3JydXB0aW9uIGF1dG9tYXRpY2FsbHkuICBTb21ldGltZXMgYW4gZXhwZXJ0IG1heQorYmUgYWJsZSB0byBkbyBiZXR0ZXIgZHJpdmluZyB0aGUgZnNjayBtYW51YWxseS4gIE5vdGUgdGhhdCAKKy5CIG5vdAorYWxsIGZpbGVzeXN0ZW0tc3BlY2lmaWMgY2hlY2tlcnMgaW1wbGVtZW50IHRoaXMgb3B0aW9uLiAgSW4gcGFydGljdWxhciAKKy5CUiBmc2NrLm1pbml4ICg4KQorYW5kCisuQlIgZnNjay5jcmFtZnMgKDgpCitkb2VzIG5vdCBzdXBwb3J0IHRoZQorLkIgLXkKK29wdGlvbiBhcyBvZiB0aGlzIHdyaXRpbmcuCisuU0ggQVVUSE9SCitUaGVvZG9yZSBUcydvICh0eXRzb0BtaXQuZWR1KQorLlNIIEZJTEVTCisuSVIgL2V0Yy9mc3RhYiAuCisuU0ggRU5WSVJPTk1FTlQgVkFSSUFCTEVTCitUaGUKKy5CIGZzY2sKK3Byb2dyYW0ncyBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50IHZhcmlhYmxlczoKKy5UUAorLkIgRlNDS19GT1JDRV9BTExfUEFSQUxMRUwKK0lmIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCAKKy5CIGZzY2sKK3dpbGwgYXR0ZW1wdCB0byBydW4gYWxsIG9mIHRoZSBzcGVjaWZpZWQgZmlsZXN5c3RlbXMgaW4gcGFyYWxsZWwsCityZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIGZpbGVzeXN0ZW1zIGFwcGVhciB0byBiZSBvbiB0aGUgc2FtZQorZGV2aWNlLiAgKFRoaXMgaXMgdXNlZnVsIGZvciBSQUlEIHN5c3RlbXMgb3IgaGlnaC1lbmQgc3RvcmFnZSBzeXN0ZW1zCitzdWNoIGFzIHRob3NlIHNvbGQgYnkgY29tcGFuaWVzIHN1Y2ggYXMgSUJNIG9yIEVNQy4pCisuVFAKKy5CIEZTQ0tfTUFYX0lOU1QKK1RoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBsaW1pdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZSBzeXN0ZW0KK2NoZWNrZXJzIHRoYXQgY2FuIGJlIHJ1bm5pbmcgYXQgb25lIHRpbWUuICBUaGlzIGFsbG93cyBjb25maWd1cmF0aW9ucword2hpY2ggaGF2ZSBhIGxhcmdlIG51bWJlciBvZiBkaXNrcyB0byBhdm9pZCAKKy5CIGZzY2sKK3N0YXJ0aW5nIHRvbyBtYW55IGZpbGUgc3lzdGVtIGNoZWNrZXJzIGF0IG9uY2UsIHdoaWNoIG1pZ2h0IG92ZXJsb2FkCitDUFUgYW5kIG1lbW9yeSByZXNvdXJjZXMgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uICBJZiB0aGlzIHZhbHVlIGlzCit6ZXJvLCB0aGVuIGFuIHVubGltaXRlZCBudW1iZXIgb2YgcHJvY2Vzc2VzIGNhbiBiZSBzcGF3bmVkLiAgVGhpcyBpcworY3VycmVudGx5IHRoZSBkZWZhdWx0LCBidXQgZnV0dXJlIHZlcnNpb25zIG9mCisuQiBmc2NrCittYXkgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5IGRldGVybWluZSBob3cgbWFueSBmaWxlIHN5c3RlbSBjaGVja3MgY2FuCitiZSBydW4gYmFzZWQgb24gZ2F0aGVyaW5nIGFjY291bnRpbmcgZGF0YSBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtLgorLlRQCisuQiBQQVRICitUaGUgCisuQiBQQVRICitlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1c2VkIHRvIGZpbmQgZmlsZSBzeXN0ZW0gY2hlY2tlcnMuICBBIHNldCBvZgorc3lzdGVtIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBmaXJzdDogCisuQlIgL3NiaW4gLAorLkJSIC9zYmluL2ZzLmQgLAorLkJSICAvc2Jpbi9mcyAsCisuQlIgL2V0Yy9mcyAsCithbmQgCisuQlIgL2V0YyAuCitUaGVuIHRoZSBzZXQgb2YgZGlyZWN0b3JpZXMgZm91bmQgaW4gdGhlCisuQiBQQVRICitlbnZpcm9ubWVudCBhcmUgc2VhcmNoZWQuCisuVFAKKy5CIEZTVEFCX0ZJTEUKK1RoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgYWxsb3dzIHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciAKK3RvIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBvZiB0aGUgCisuQiAvZXRjL2ZzdGFiCitmaWxlLiAgSXQgaXMgYWxzbyB1c2VmdWwgZm9yIGRldmVsb3BlcnMgd2hvIGFyZSB0ZXN0aW5nCisuQlIgZnNjayAuCisuU0ggU0VFIEFMU08KKy5CUiBmc3RhYiAoNSksCisuQlIgbWtmcyAoOCksCisuQlIgZnNjay5leHQyICg4KQorb3IKKy5CUiBmc2NrLmV4dDMgKDgpCitvcgorLkJSIGUyZnNjayAoOCksCisuQlIgY3JhbWZzY2sgKDgpLAorLkJSIGZzY2subWluaXggKDgpLAorLkJSIGZzY2subXNkb3MgKDgpLAorLkJSIGZzY2suamZzICg4KSwKKy5CUiBmc2NrLm5mcyAoOCksCisuQlIgZnNjay52ZmF0ICg4KSwKKy5CUiBmc2NrLnhmcyAoOCksCisuQlIgZnNjay54aWFmcyAoOCksCisuQlIgcmVpc2VyZnNjayAoOCkuCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9mc2NrLmMgYi9lMmZzcHJvZ3MvbWlzYy9mc2NrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M5M2VlOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2ZzY2suYwpAQCAtMCwwICsxLDEzNDMgQEAKKy8qCisgKiBwZnNjayAtLS0gQSBnZW5lcmljLCBwYXJhbGxlbGl6aW5nIGZyb250LWVuZCBmb3IgdGhlIGZzY2sgcHJvZ3JhbS4KKyAqIEl0IHdpbGwgYXV0b21hdGljYWxseSB0cnkgdG8gcnVuIGZzY2sgcHJvZ3JhbXMgaW4gcGFyYWxsZWwgaWYgdGhlCisgKiBkZXZpY2VzIGFyZSBvbiBzZXBhcmF0ZSBzcGluZGxlcy4gIEl0IGlzIGJhc2VkIG9uIHRoZSBzYW1lIGlkZWFzIGFzCisgKiB0aGUgZ2VuZXJpYyBmcm9udCBlbmQgZm9yIGZzY2sgYnkgRGF2aWQgRW5nZWwgYW5kIEZyZWQgdmFuIEtlbXBlbiwKKyAqIGJ1dCBpdCBoYXMgYmVlbiBjb21wbGV0ZWx5IHJld3JpdHRlbiBmcm9tIHNjcmF0Y2ggdG8gc3VwcG9ydAorICogcGFyYWxsZWwgZXhlY3V0aW9uLgorICoKKyAqIFdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbywgPHR5dHNvQG1pdC5lZHU+CisgKgorICogTWlxdWVsIHZhbiBTbW9vcmVuYnVyZyAobWlxdWVsc0Bkcmlua2VsLm93Lm9yZykgMjAtT2N0LTE5OTQ6CisgKiAgIG8gQ2hhbmdlZCAtdCBmc3R5cGUgdG8gYmVoYXZlIGxpa2Ugd2l0aCBtb3VudCB3aGVuIC1BIChhbGwgZmlsZQorICogICAgIHN5c3RlbXMpIG9yIC1NIChsaWtlIG1vdW50KSBpcyBzcGVjaWZpZWQuCisgKiAgIG8gZnNjayBsb29rcyBpZiBpdCBjYW4gZmluZCB0aGUgZnNjay50eXBlIHByb2dyYW0gdG8gZGVjaWRlCisgKiAgICAgaWYgaXQgc2hvdWxkIGlnbm9yZSB0aGUgZnMgdHlwZS4gVGhpcyB3YXkgbW9yZSBmc2NrIHByb2dyYW1zCisgKiAgICAgY2FuIGJlIGFkZGVkIHdpdGhvdXQgY2hhbmdpbmcgdGhpcyBmcm9udC1lbmQuCisgKiAgIG8gLVIgZmxhZyBza2lwIHJvb3QgZmlsZSBzeXN0ZW0uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLAorICogCTIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUgYnkgIFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwIC8qIGZvciBpbmNsdXNpb24gb2Ygc2FfaGFuZGxlciBpbiBTb2xhcmlzICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaWYgSEFWRV9QQVRIU19ICisjaW5jbHVkZSA8cGF0aHMuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRVJSTk9fSAorI2luY2x1ZGUgPGVycm5vLmg+CisjZW5kaWYKKyNpZiBIQVZFX01BTExPQ19ICisjaW5jbHVkZSA8bWFsbG9jLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR05BTF9ICisjaW5jbHVkZSA8c2lnbmFsLmg+CisjZW5kaWYKKworI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKyNpbmNsdWRlICJmc2NrLmgiCisjaW5jbHVkZSAiYmxraWQvYmxraWQuaCIKKworI2lmbmRlZiBfUEFUSF9NTlRUQUIKKyNkZWZpbmUJX1BBVEhfTU5UVEFCCSIvZXRjL2ZzdGFiIgorI2VuZGlmCisKK3N0YXRpYyBjb25zdCBjaGFyICppZ25vcmVkX3R5cGVzW10gPSB7CisJImlnbm9yZSIsCisJImlzbzk2NjAiLAorCSJuZnMiLAorCSJwcm9jIiwKKwkic3ciLAorCSJzd2FwIiwKKwkidG1wZnMiLAorCSJkZXZwdHMiLAorCU5VTEwKK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpyZWFsbHlfd2FudGVkW10gPSB7CisJIm1pbml4IiwKKwkiZXh0MiIsCisJImV4dDMiLAorCSJleHQ0IiwKKwkiZXh0NGRldiIsCisJImpmcyIsCisJInJlaXNlcmZzIiwKKwkieGlhZnMiLAorCSJ4ZnMiLAorCU5VTEwKK307CisKKyNkZWZpbmUgQkFTRV9NRCAiL2Rldi9tZCIKKworLyoKKyAqIEdsb2JhbCB2YXJpYWJsZXMgZm9yIG9wdGlvbnMKKyAqLworc3RhdGljIGNoYXIgKmRldmljZXNbTUFYX0RFVklDRVNdOworc3RhdGljIGNoYXIgKmFyZ3NbTUFYX0FSR1NdOworc3RhdGljIGludCBudW1fZGV2aWNlcywgbnVtX2FyZ3M7CisKK3N0YXRpYyBpbnQgdmVyYm9zZSA9IDA7CitzdGF0aWMgaW50IGRvYWxsID0gMDsKK3N0YXRpYyBpbnQgbm9leGVjdXRlID0gMDsKK3N0YXRpYyBpbnQgc2VyaWFsaXplID0gMDsKK3N0YXRpYyBpbnQgc2tpcF9yb290ID0gMDsKK3N0YXRpYyBpbnQgaWdub3JlX21vdW50ZWQgPSAwOworc3RhdGljIGludCBub3RpdGxlID0gMDsKK3N0YXRpYyBpbnQgcGFyYWxsZWxfcm9vdCA9IDA7CitzdGF0aWMgaW50IHByb2dyZXNzID0gMDsKK3N0YXRpYyBpbnQgcHJvZ3Jlc3NfZmQgPSAwOworc3RhdGljIGludCBmb3JjZV9hbGxfcGFyYWxsZWwgPSAwOworc3RhdGljIGludCBudW1fcnVubmluZyA9IDA7CitzdGF0aWMgaW50IG1heF9ydW5uaW5nID0gMDsKK3N0YXRpYyB2b2xhdGlsZSBpbnQgY2FuY2VsX3JlcXVlc3RlZCA9IDA7CitzdGF0aWMgaW50IGtpbGxfc2VudCA9IDA7CitzdGF0aWMgY2hhciAqcHJvZ25hbWU7CitzdGF0aWMgY2hhciAqZnN0eXBlID0gTlVMTDsKK3N0YXRpYyBzdHJ1Y3QgZnNfaW5mbyAqZmlsZXN5c19pbmZvID0gTlVMTCwgKmZpbGVzeXNfbGFzdCA9IE5VTEw7CitzdGF0aWMgc3RydWN0IGZzY2tfaW5zdGFuY2UgKmluc3RhbmNlX2xpc3Q7CitzdGF0aWMgY29uc3QgY2hhciAqZnNja19wcmVmaXhfcGF0aCA9ICIvc2Jpbjovc2Jpbi9mcy5kOi9zYmluL2ZzOi9ldGMvZnM6L2V0YyI7CitzdGF0aWMgY2hhciAqZnNja19wYXRoID0gMDsKK3N0YXRpYyBibGtpZF9jYWNoZSBjYWNoZSA9IE5VTEw7CisKK3N0YXRpYyBjaGFyICpzdHJpbmdfY29weShjb25zdCBjaGFyICpzKQoreworCWNoYXIJKnJldDsKKworCWlmICghcykKKwkJcmV0dXJuIDA7CisJcmV0ID0gbWFsbG9jKHN0cmxlbihzKSsxKTsKKwlpZiAocmV0KQorCQlzdHJjcHkocmV0LCBzKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IHN0cmluZ190b19pbnQoY29uc3QgY2hhciAqcykKK3sKKwlsb25nIGw7CisJY2hhciAqcDsKKworCWwgPSBzdHJ0b2wocywgJnAsIDApOworCWlmICgqcCB8fCBsID09IExPTkdfTUlOIHx8IGwgPT0gTE9OR19NQVggfHwgbCA8IDAgfHwgbCA+IElOVF9NQVgpCisJCXJldHVybiAtMTsKKwllbHNlCisJCXJldHVybiAoaW50KSBsOworfQorCitzdGF0aWMgaW50IGlnbm9yZShzdHJ1Y3QgZnNfaW5mbyAqKTsKKworc3RhdGljIGNoYXIgKnNraXBfb3Zlcl9ibGFuayhjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfd29yZChjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmICFpc3NwYWNlKCpjcCkpCisJCWNwKys7CisJcmV0dXJuIGNwOworfQorCitzdGF0aWMgdm9pZCBzdHJpcF9saW5lKGNoYXIgKmxpbmUpCit7CisJY2hhcgkqcDsKKworCXdoaWxlICgqbGluZSkgeworCQlwID0gbGluZSArIHN0cmxlbihsaW5lKSAtIDE7CisJCWlmICgoKnAgPT0gJ1xuJykgfHwgKCpwID09ICdccicpKQorCQkJKnAgPSAwOworCQllbHNlCisJCQlicmVhazsKKwl9Cit9CisKK3N0YXRpYyBjaGFyICpwYXJzZV93b3JkKGNoYXIgKipidWYpCit7CisJY2hhciAqd29yZCwgKm5leHQ7CisKKwl3b3JkID0gKmJ1ZjsKKwlpZiAoKndvcmQgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwl3b3JkID0gc2tpcF9vdmVyX2JsYW5rKHdvcmQpOworCW5leHQgPSBza2lwX292ZXJfd29yZCh3b3JkKTsKKwlpZiAoKm5leHQpCisJCSpuZXh0KysgPSAwOworCSpidWYgPSBuZXh0OworCXJldHVybiB3b3JkOworfQorCitzdGF0aWMgdm9pZCBwYXJzZV9lc2NhcGUoY2hhciAqd29yZCkKK3sKKwljaGFyCSpwLCAqcTsKKwlpbnQJYWMsIGk7CisKKwlpZiAoIXdvcmQpCisJCXJldHVybjsKKworCWZvciAocCA9IHdvcmQsIHEgPSB3b3JkOyAqcDsgcCsrLCBxKyspIHsKKwkJKnEgPSAqcDsKKwkJaWYgKCpwICE9ICdcXCcpCisJCQljb250aW51ZTsKKwkJaWYgKCorK3AgPT0gMCkKKwkJCWJyZWFrOworCQlpZiAoKnAgPT0gJ3QnKSB7CisJCQkqcSA9ICdcdCc7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoKnAgPT0gJ24nKSB7CisJCQkqcSA9ICdcbic7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoIWlzZGlnaXQoKnApKSB7CisJCQkqcSA9ICpwOworCQkJY29udGludWU7CisJCX0KKwkJYWMgPSAwOworCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrLCBwKyspIHsKKwkJCWlmICghaXNkaWdpdCgqcCkpCisJCQkJYnJlYWs7CisJCQlhYyA9IChhYyAqIDgpICsgKCpwIC0gJzAnKTsKKwkJfQorCQkqcSA9IGFjOworCQlwLS07CisJfQorCSpxID0gMDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9pbnN0YW5jZShzdHJ1Y3QgZnNja19pbnN0YW5jZSAqaSkKK3sKKwlmcmVlKGktPnByb2cpOworCWZyZWUoaS0+ZGV2aWNlKTsKKwlmcmVlKGktPmJhc2VfZGV2aWNlKTsKKwlmcmVlKGkpOworCXJldHVybjsKK30KKworc3RhdGljIHN0cnVjdCBmc19pbmZvICpjcmVhdGVfZnNfZGV2aWNlKGNvbnN0IGNoYXIgKmRldmljZSwgY29uc3QgY2hhciAqbW50cG50LAorCQkJCQljb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpvcHRzLAorCQkJCQlpbnQgZnJlcSwgaW50IHBhc3NubykKK3sKKwlzdHJ1Y3QgZnNfaW5mbyAqZnM7CisKKwlpZiAoIShmcyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IGZzX2luZm8pKSkpCisJCXJldHVybiBOVUxMOworCisJZnMtPmRldmljZSA9IHN0cmluZ19jb3B5KGRldmljZSk7CisJZnMtPm1vdW50cHQgPSBzdHJpbmdfY29weShtbnRwbnQpOworCWZzLT50eXBlID0gc3RyaW5nX2NvcHkodHlwZSk7CisJZnMtPm9wdHMgPSBzdHJpbmdfY29weShvcHRzID8gb3B0cyA6ICIiKTsKKwlmcy0+ZnJlcSA9IGZyZXE7CisJZnMtPnBhc3NubyA9IHBhc3NubzsKKwlmcy0+ZmxhZ3MgPSAwOworCWZzLT5uZXh0ID0gTlVMTDsKKworCWlmICghZmlsZXN5c19pbmZvKQorCQlmaWxlc3lzX2luZm8gPSBmczsKKwllbHNlCisJCWZpbGVzeXNfbGFzdC0+bmV4dCA9IGZzOworCWZpbGVzeXNfbGFzdCA9IGZzOworCisJcmV0dXJuIGZzOworfQorCisKKworc3RhdGljIGludCBwYXJzZV9mc3RhYl9saW5lKGNoYXIgKmxpbmUsIHN0cnVjdCBmc19pbmZvICoqcmV0X2ZzKQoreworCWNoYXIJKmRldiwgKmRldmljZSwgKm1udHBudCwgKnR5cGUsICpvcHRzLCAqZnJlcSwgKnBhc3NubywgKmNwOworCXN0cnVjdCBmc19pbmZvICpmczsKKworCSpyZXRfZnMgPSAwOworCXN0cmlwX2xpbmUobGluZSk7CisJY3AgPSBsaW5lOworCisJZGV2aWNlID0gcGFyc2Vfd29yZCgmY3ApOworCWlmICghZGV2aWNlIHx8ICpkZXZpY2UgPT0gJyMnKQorCQlyZXR1cm4gMDsJLyogSWdub3JlIGJsYW5rIGxpbmVzIGFuZCBjb21tZW50cyAqLworCW1udHBudCA9IHBhcnNlX3dvcmQoJmNwKTsKKwl0eXBlID0gcGFyc2Vfd29yZCgmY3ApOworCW9wdHMgPSBwYXJzZV93b3JkKCZjcCk7CisJZnJlcSA9IHBhcnNlX3dvcmQoJmNwKTsKKwlwYXNzbm8gPSBwYXJzZV93b3JkKCZjcCk7CisKKwlpZiAoIW1udHBudCB8fCAhdHlwZSkKKwkJcmV0dXJuIC0xOworCisJcGFyc2VfZXNjYXBlKGRldmljZSk7CisJcGFyc2VfZXNjYXBlKG1udHBudCk7CisJcGFyc2VfZXNjYXBlKHR5cGUpOworCXBhcnNlX2VzY2FwZShvcHRzKTsKKwlwYXJzZV9lc2NhcGUoZnJlcSk7CisJcGFyc2VfZXNjYXBlKHBhc3Nubyk7CisKKwlkZXYgPSBibGtpZF9nZXRfZGV2bmFtZShjYWNoZSwgZGV2aWNlLCBOVUxMKTsKKwlpZiAoZGV2KQorCQlkZXZpY2UgPSBkZXY7CisKKwlpZiAoc3RyY2hyKHR5cGUsICcsJykpCisJCXR5cGUgPSAwOworCisJZnMgPSBjcmVhdGVfZnNfZGV2aWNlKGRldmljZSwgbW50cG50LCB0eXBlID8gdHlwZSA6ICJhdXRvIiwgb3B0cywKKwkJCSAgICAgIGZyZXEgPyBhdG9pKGZyZXEpIDogLTEsCisJCQkgICAgICBwYXNzbm8gPyBhdG9pKHBhc3NubykgOiAtMSk7CisJZnJlZShkZXYpOworCisJaWYgKCFmcykKKwkJcmV0dXJuIC0xOworCSpyZXRfZnMgPSBmczsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaW50ZXJwcmV0X3R5cGUoc3RydWN0IGZzX2luZm8gKmZzKQoreworCWNoYXIJKnQ7CisKKwlpZiAoc3RyY21wKGZzLT50eXBlLCAiYXV0byIpICE9IDApCisJCXJldHVybjsKKwl0ID0gYmxraWRfZ2V0X3RhZ192YWx1ZShjYWNoZSwgIlRZUEUiLCBmcy0+ZGV2aWNlKTsKKwlpZiAodCkgeworCQlmcmVlKGZzLT50eXBlKTsKKwkJZnMtPnR5cGUgPSB0OworCX0KK30KKworLyoKKyAqIExvYWQgdGhlIGZpbGVzeXN0ZW0gZGF0YWJhc2UgZnJvbSAvZXRjL2ZzdGFiCisgKi8KK3N0YXRpYyB2b2lkIGxvYWRfZnNfaW5mbyhjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlGSUxFCSpmOworCWNoYXIJYnVmWzEwMjRdOworCWludAlsaW5lbm8gPSAwOworCWludAlvbGRfZnN0YWIgPSAxOworCXN0cnVjdCBmc19pbmZvICpmczsKKworCWlmICgoZiA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIiksCisJCQlmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuOworCX0KKwl3aGlsZSAoIWZlb2YoZikpIHsKKwkJbGluZW5vKys7CisJCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpCisJCQlicmVhazsKKwkJYnVmW3NpemVvZihidWYpLTFdID0gMDsKKwkJaWYgKHBhcnNlX2ZzdGFiX2xpbmUoYnVmLCAmZnMpIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIldBUk5JTkc6IGJhZCBmb3JtYXQgIgorCQkJCSJvbiBsaW5lICVkIG9mICVzXG4iKSwgbGluZW5vLCBmaWxlbmFtZSk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoIWZzKQorCQkJY29udGludWU7CisJCWlmIChmcy0+cGFzc25vIDwgMCkKKwkJCWZzLT5wYXNzbm8gPSAwOworCQllbHNlCisJCQlvbGRfZnN0YWIgPSAwOworCX0KKworCWZjbG9zZShmKTsKKworCWlmIChvbGRfZnN0YWIgJiYgZmlsZXN5c19pbmZvKSB7CisJCWZwdXRzKCJcMDA3XDAwN1wwMDciLCBzdGRlcnIpOworCQlmcHV0cyhfKAorCQkiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisJCSIJZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorCQkiCXNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuXG4iKSwgc3RkZXJyKTsKKworCQlmb3IgKGZzID0gZmlsZXN5c19pbmZvOyBmczsgZnMgPSBmcy0+bmV4dCkgeworCQkJZnMtPnBhc3NubyA9IDE7CisJCX0KKwl9Cit9CisKKy8qIExvb2t1cCBmaWxlc3lzIGluIC9ldGMvZnN0YWIgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeS4gKi8KK3N0YXRpYyBzdHJ1Y3QgZnNfaW5mbyAqbG9va3VwKGNoYXIgKmZpbGVzeXMpCit7CisJc3RydWN0IGZzX2luZm8gKmZzOworCisJLyogTm8gZmlsZXN5cyBuYW1lIGdpdmVuLiAqLworCWlmIChmaWxlc3lzID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJZm9yIChmcyA9IGZpbGVzeXNfaW5mbzsgZnM7IGZzID0gZnMtPm5leHQpIHsKKwkJaWYgKCFzdHJjbXAoZmlsZXN5cywgZnMtPmRldmljZSkgfHwKKwkJICAgIChmcy0+bW91bnRwdCAmJiAhc3RyY21wKGZpbGVzeXMsIGZzLT5tb3VudHB0KSkpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gZnM7Cit9CisKKy8qIEZpbmQgZnNjayBwcm9ncmFtIGZvciBhIGdpdmVuIGZzIHR5cGUuICovCitzdGF0aWMgY2hhciAqZmluZF9mc2NrKGNoYXIgKnR5cGUpCit7CisgIGNoYXIgKnM7CisgIGNvbnN0IGNoYXIgKnRwbDsKKyAgc3RhdGljIGNoYXIgcHJvZ1syNTZdOworICBjaGFyICpwID0gc3RyaW5nX2NvcHkoZnNja19wYXRoKTsKKyAgc3RydWN0IHN0YXQgc3Q7CisKKyAgLyogQXJlIHdlIGxvb2tpbmcgZm9yIGEgcHJvZ3JhbSBvciBqdXN0IGEgdHlwZT8gKi8KKyAgdHBsID0gKHN0cm5jbXAodHlwZSwgImZzY2suIiwgNSkgPyAiJXMvZnNjay4lcyIgOiAiJXMvJXMiKTsKKworICBmb3IocyA9IHN0cnRvayhwLCAiOiIpOyBzOyBzID0gc3RydG9rKE5VTEwsICI6IikpIHsKKwlzcHJpbnRmKHByb2csIHRwbCwgcywgdHlwZSk7CisJaWYgKHN0YXQocHJvZywgJnN0KSA9PSAwKSBicmVhazsKKyAgfQorICBmcmVlKHApOworICByZXR1cm4ocyA/IHByb2cgOiBOVUxMKTsKK30KKworc3RhdGljIGludCBwcm9ncmVzc19hY3RpdmUoTk9BUkdTKQoreworCXN0cnVjdCBmc2NrX2luc3RhbmNlICppbnN0OworCisJZm9yIChpbnN0ID0gaW5zdGFuY2VfbGlzdDsgaW5zdDsgaW5zdCA9IGluc3QtPm5leHQpIHsKKwkJaWYgKGluc3QtPmZsYWdzICYgRkxBR19ET05FKQorCQkJY29udGludWU7CisJCWlmIChpbnN0LT5mbGFncyAmIEZMQUdfUFJPR1JFU1MpCisJCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBFeGVjdXRlIGEgcGFydGljdWxhciBmc2NrIHByb2dyYW0sIGFuZCBsaW5rIGl0IGludG8gdGhlIGxpc3Qgb2YKKyAqIGNoaWxkIHByb2Nlc3NlcyB3ZSBhcmUgd2FpdGluZyBmb3IuCisgKi8KK3N0YXRpYyBpbnQgZXhlY3V0ZShjb25zdCBjaGFyICp0eXBlLCBjb25zdCBjaGFyICpkZXZpY2UsIGNvbnN0IGNoYXIgKm1udHB0LAorCQkgICBpbnQgaW50ZXJhY3RpdmUpCit7CisJY2hhciAqcywgKmFyZ3ZbODBdLCBwcm9nWzgwXTsKKwlpbnQgIGFyZ2MsIGk7CisJc3RydWN0IGZzY2tfaW5zdGFuY2UgKmluc3QsICpwOworCXBpZF90CXBpZDsKKworCWluc3QgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmc2NrX2luc3RhbmNlKSk7CisJaWYgKCFpbnN0KQorCQlyZXR1cm4gRU5PTUVNOworCW1lbXNldChpbnN0LCAwLCBzaXplb2Yoc3RydWN0IGZzY2tfaW5zdGFuY2UpKTsKKworCXNwcmludGYocHJvZywgImZzY2suJXMiLCB0eXBlKTsKKwlhcmd2WzBdID0gc3RyaW5nX2NvcHkocHJvZyk7CisJYXJnYyA9IDE7CisKKwlmb3IgKGk9MDsgaSA8bnVtX2FyZ3M7IGkrKykKKwkJYXJndlthcmdjKytdID0gc3RyaW5nX2NvcHkoYXJnc1tpXSk7CisKKwlpZiAocHJvZ3Jlc3MpIHsKKwkJaWYgKChzdHJjbXAodHlwZSwgImV4dDIiKSA9PSAwKSB8fAorCQkgICAgKHN0cmNtcCh0eXBlLCAiZXh0MyIpID09IDApIHx8CisJCSAgICAoc3RyY21wKHR5cGUsICJleHQ0IikgPT0gMCkgfHwKKwkJICAgIChzdHJjbXAodHlwZSwgImV4dDRkZXYiKSA9PSAwKSkgeworCQkJY2hhciB0bXBbODBdOworCisJCQl0bXBbMF0gPSAwOworCQkJaWYgKCFwcm9ncmVzc19hY3RpdmUoKSkgeworCQkJCXNucHJpbnRmKHRtcCwgODAsICItQyVkIiwgcHJvZ3Jlc3NfZmQpOworCQkJCWluc3QtPmZsYWdzIHw9IEZMQUdfUFJPR1JFU1M7CisJCQl9IGVsc2UgaWYgKHByb2dyZXNzX2ZkKQorCQkJCXNucHJpbnRmKHRtcCwgODAsICItQyVkIiwgcHJvZ3Jlc3NfZmQgKiAtMSk7CisJCQlpZiAodG1wWzBdKQorCQkJCWFyZ3ZbYXJnYysrXSA9IHN0cmluZ19jb3B5KHRtcCk7CisJCX0KKwl9CisKKwlhcmd2W2FyZ2MrK10gPSBzdHJpbmdfY29weShkZXZpY2UpOworCWFyZ3ZbYXJnY10gPSAwOworCisJcyA9IGZpbmRfZnNjayhwcm9nKTsKKwlpZiAocyA9PSBOVUxMKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJmc2NrOiAlczogbm90IGZvdW5kXG4iKSwgcHJvZyk7CisJCWZyZWUoaW5zdCk7CisJCXJldHVybiBFTk9FTlQ7CisJfQorCisJaWYgKHZlcmJvc2UgfHwgbm9leGVjdXRlKSB7CisJCXByaW50ZigiWyVzICglZCkgLS0gJXNdICIsIHMsIG51bV9ydW5uaW5nLAorCQkgICAgICAgbW50cHQgPyBtbnRwdCA6IGRldmljZSk7CisJCWZvciAoaT0wOyBpIDwgYXJnYzsgaSsrKQorCQkJcHJpbnRmKCIlcyAiLCBhcmd2W2ldKTsKKwkJcHJpbnRmKCJcbiIpOworCX0KKworCS8qIEZvcmsgYW5kIGV4ZWN1dGUgdGhlIGNvcnJlY3QgcHJvZ3JhbS4gKi8KKwlpZiAobm9leGVjdXRlKQorCQlwaWQgPSAtMTsKKwllbHNlIGlmICgocGlkID0gZm9yaygpKSA8IDApIHsKKwkJcGVycm9yKCJmb3JrIik7CisJCWZyZWUoaW5zdCk7CisJCXJldHVybiBlcnJubzsKKwl9IGVsc2UgaWYgKHBpZCA9PSAwKSB7CisJCWlmICghaW50ZXJhY3RpdmUpCisJCQljbG9zZSgwKTsKKwkJKHZvaWQpIGV4ZWN2KHMsIGFyZ3YpOworCQlwZXJyb3IoYXJndlswXSk7CisJCWZyZWUoaW5zdCk7CisJCWV4aXQoRVhJVF9FUlJPUik7CisJfQorCisJZm9yIChpPTA7IGkgPCBhcmdjOyBpKyspCisJCWZyZWUoYXJndltpXSk7CisKKwlpbnN0LT5waWQgPSBwaWQ7CisJaW5zdC0+cHJvZyA9IHN0cmluZ19jb3B5KHByb2cpOworCWluc3QtPnR5cGUgPSBzdHJpbmdfY29weSh0eXBlKTsKKwlpbnN0LT5kZXZpY2UgPSBzdHJpbmdfY29weShkZXZpY2UpOworCWluc3QtPmJhc2VfZGV2aWNlID0gYmFzZV9kZXZpY2UoZGV2aWNlKTsKKwlpbnN0LT5zdGFydF90aW1lID0gdGltZSgwKTsKKwlpbnN0LT5uZXh0ID0gTlVMTDsKKworCS8qCisJICogRmluZCB0aGUgZW5kIG9mIHRoZSBsaXN0LCBzbyB3ZSBhZGQgdGhlIGluc3RhbmNlIG9uIGF0IHRoZSBlbmQuCisJICovCisJZm9yIChwID0gaW5zdGFuY2VfbGlzdDsgcCAmJiBwLT5uZXh0OyBwID0gcC0+bmV4dCk7CisKKwlpZiAocCkKKwkJcC0+bmV4dCA9IGluc3Q7CisJZWxzZQorCQlpbnN0YW5jZV9saXN0ID0gaW5zdDsKKworCXJldHVybiAwOworfQorCisvKgorICogU2VuZCBhIHNpZ25hbCB0byBhbGwgb3V0c3RhbmRpbmcgZnNjayBjaGlsZCBwcm9jZXNzZXMKKyAqLworc3RhdGljIGludCBraWxsX2FsbChpbnQgc2lnbnVtKQoreworCXN0cnVjdCBmc2NrX2luc3RhbmNlICppbnN0OworCWludAluID0gMDsKKworCWZvciAoaW5zdCA9IGluc3RhbmNlX2xpc3Q7IGluc3Q7IGluc3QgPSBpbnN0LT5uZXh0KSB7CisJCWlmIChpbnN0LT5mbGFncyAmIEZMQUdfRE9ORSkKKwkJCWNvbnRpbnVlOworCQlraWxsKGluc3QtPnBpZCwgc2lnbnVtKTsKKwkJbisrOworCX0KKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIFdhaXQgZm9yIG9uZSBjaGlsZCBwcm9jZXNzIHRvIGV4aXQ7IHdoZW4gaXQgZG9lcywgdW5saW5rIGl0IGZyb20KKyAqIHRoZSBsaXN0IG9mIGV4ZWN1dGluZyBjaGlsZCBwcm9jZXNzZXMsIGFuZCByZXR1cm4gaXQuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZnNja19pbnN0YW5jZSAqd2FpdF9vbmUoaW50IGZsYWdzKQoreworCWludAlzdGF0dXM7CisJaW50CXNpZzsKKwlzdHJ1Y3QgZnNja19pbnN0YW5jZSAqaW5zdCwgKmluc3QyLCAqcHJldjsKKwlwaWRfdAlwaWQ7CisKKwlpZiAoIWluc3RhbmNlX2xpc3QpCisJCXJldHVybiBOVUxMOworCisJaWYgKG5vZXhlY3V0ZSkgeworCQlpbnN0ID0gaW5zdGFuY2VfbGlzdDsKKwkJcHJldiA9IDA7CisjaWZkZWYgUkFORE9NX0RFQlVHCisJCXdoaWxlIChpbnN0LT5uZXh0ICYmIChyYW5kb20oKSAmIDEpKSB7CisJCQlwcmV2ID0gaW5zdDsKKwkJCWluc3QgPSBpbnN0LT5uZXh0OworCQl9CisjZW5kaWYKKwkJaW5zdC0+ZXhpdF9zdGF0dXMgPSAwOworCQlnb3RvIHJldF9pbnN0OworCX0KKworCS8qCisJICogZ2NjIC1XYWxsIGZhaWxzIHNhdmluZyB0aHJvdyBhZ2FpbnN0IHN0dXBpZGl0eQorCSAqIChpbnN0IGFuZCBwcmV2IGFyZSB0aG91Z2h0IHRvIGJlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzKQorCSAqLworCWluc3QgPSBwcmV2ID0gTlVMTDsKKworCWRvIHsKKwkJcGlkID0gd2FpdHBpZCgtMSwgJnN0YXR1cywgZmxhZ3MpOworCQlpZiAoY2FuY2VsX3JlcXVlc3RlZCAmJiAha2lsbF9zZW50KSB7CisJCQlraWxsX2FsbChTSUdURVJNKTsKKwkJCWtpbGxfc2VudCsrOworCQl9CisJCWlmICgocGlkID09IDApICYmIChmbGFncyAmIFdOT0hBTkcpKQorCQkJcmV0dXJuIE5VTEw7CisJCWlmIChwaWQgPCAwKSB7CisJCQlpZiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChlcnJubyA9PSBFQ0hJTEQpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIiksCisJCQkJCXByb2duYW1lKTsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJCXBlcnJvcigid2FpdCIpOworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChwcmV2ID0gMCwgaW5zdCA9IGluc3RhbmNlX2xpc3Q7CisJCSAgICAgaW5zdDsKKwkJICAgICBwcmV2ID0gaW5zdCwgaW5zdCA9IGluc3QtPm5leHQpIHsKKwkJCWlmIChpbnN0LT5waWQgPT0gcGlkKQorCQkJCWJyZWFrOworCQl9CisJfSB3aGlsZSAoIWluc3QpOworCisJaWYgKFdJRkVYSVRFRChzdGF0dXMpKQorCQlzdGF0dXMgPSBXRVhJVFNUQVRVUyhzdGF0dXMpOworCWVsc2UgaWYgKFdJRlNJR05BTEVEKHN0YXR1cykpIHsKKwkJc2lnID0gV1RFUk1TSUcoc3RhdHVzKTsKKwkJaWYgKHNpZyA9PSBTSUdJTlQpIHsKKwkJCXN0YXR1cyA9IEVYSVRfVU5DT1JSRUNURUQ7CisJCX0gZWxzZSB7CisJCQlwcmludGYoXygiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCAiCisJCQkgICAgICAgIndpdGggc2lnbmFsICVkLlxuIiksCisJCQkgICAgICAgaW5zdC0+cHJvZywgaW5zdC0+ZGV2aWNlLCBzaWcpOworCQkJc3RhdHVzID0gRVhJVF9FUlJPUjsKKwkJfQorCX0gZWxzZSB7CisJCXByaW50ZihfKCIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIiksCisJCSAgICAgICBpbnN0LT5wcm9nLCBpbnN0LT5kZXZpY2UsIHN0YXR1cyk7CisJCXN0YXR1cyA9IEVYSVRfRVJST1I7CisJfQorCWluc3QtPmV4aXRfc3RhdHVzID0gc3RhdHVzOworCWluc3QtPmZsYWdzIHw9IEZMQUdfRE9ORTsKKwlpZiAocHJvZ3Jlc3MgJiYgKGluc3QtPmZsYWdzICYgRkxBR19QUk9HUkVTUykgJiYKKwkgICAgIXByb2dyZXNzX2FjdGl2ZSgpKSB7CisJCWZvciAoaW5zdDIgPSBpbnN0YW5jZV9saXN0OyBpbnN0MjsgaW5zdDIgPSBpbnN0Mi0+bmV4dCkgeworCQkJaWYgKGluc3QyLT5mbGFncyAmIEZMQUdfRE9ORSkKKwkJCQljb250aW51ZTsKKwkJCWlmIChzdHJjbXAoaW5zdDItPnR5cGUsICJleHQyIikgJiYKKwkJCSAgICBzdHJjbXAoaW5zdDItPnR5cGUsICJleHQzIikgJiYKKwkJCSAgICBzdHJjbXAoaW5zdDItPnR5cGUsICJleHQ0IikgJiYKKwkJCSAgICBzdHJjbXAoaW5zdDItPnR5cGUsICJleHQ0ZGV2IikpCisJCQkJY29udGludWU7CisJCQkvKgorCQkJICogSWYgd2UndmUganVzdCBzdGFydGVkIHRoZSBmc2NrLCB3YWl0IGEgdGlueQorCQkJICogYml0IGJlZm9yZSBzZW5kaW5nIHRoZSBraWxsLCB0byBnaXZlIGl0CisJCQkgKiB0aW1lIHRvIHNldCB1cCB0aGUgc2lnbmFsIGhhbmRsZXIKKwkJCSAqLworCQkJaWYgKGluc3QyLT5zdGFydF90aW1lIDwgdGltZSgwKSsyKSB7CisJCQkJaWYgKGZvcmsoKSA9PSAwKSB7CisJCQkJCXNsZWVwKDEpOworCQkJCQlraWxsKGluc3QyLT5waWQsIFNJR1VTUjEpOworCQkJCQlleGl0KDApOworCQkJCX0KKwkJCX0gZWxzZQorCQkJCWtpbGwoaW5zdDItPnBpZCwgU0lHVVNSMSk7CisJCQlpbnN0Mi0+ZmxhZ3MgfD0gRkxBR19QUk9HUkVTUzsKKwkJCWJyZWFrOworCQl9CisJfQorcmV0X2luc3Q6CisJaWYgKHByZXYpCisJCXByZXYtPm5leHQgPSBpbnN0LT5uZXh0OworCWVsc2UKKwkJaW5zdGFuY2VfbGlzdCA9IGluc3QtPm5leHQ7CisJaWYgKHZlcmJvc2UgPiAxKQorCQlwcmludGYoXygiRmluaXNoZWQgd2l0aCAlcyAoZXhpdCBzdGF0dXMgJWQpXG4iKSwKKwkJICAgICAgIGluc3QtPmRldmljZSwgaW5zdC0+ZXhpdF9zdGF0dXMpOworCW51bV9ydW5uaW5nLS07CisJcmV0dXJuIGluc3Q7Cit9CisKKyNkZWZpbmUgRkxBR19XQUlUX0FMTAkJMAorI2RlZmluZSBGTEFHX1dBSVRfQVRMRUFTVF9PTkUJMQorLyoKKyAqIFdhaXQgdW50aWwgYWxsIGV4ZWN1dGluZyBjaGlsZCBwcm9jZXNzZXMgaGF2ZSBleGl0ZWQ7IHJldHVybiB0aGUKKyAqIGxvZ2ljYWwgT1Igb2YgYWxsIG9mIHRoZWlyIGV4aXQgY29kZSB2YWx1ZXMuCisgKi8KK3N0YXRpYyBpbnQgd2FpdF9tYW55KGludCBmbGFncykKK3sKKwlzdHJ1Y3QgZnNja19pbnN0YW5jZSAqaW5zdDsKKwlpbnQJZ2xvYmFsX3N0YXR1cyA9IDA7CisJaW50CXdhaXRfZmxhZ3MgPSAwOworCisJd2hpbGUgKChpbnN0ID0gd2FpdF9vbmUod2FpdF9mbGFncykpKSB7CisJCWdsb2JhbF9zdGF0dXMgfD0gaW5zdC0+ZXhpdF9zdGF0dXM7CisJCWZyZWVfaW5zdGFuY2UoaW5zdCk7CisjaWZkZWYgUkFORE9NX0RFQlVHCisJCWlmIChub2V4ZWN1dGUgJiYgKGZsYWdzICYgV05PSEFORykgJiYgIShyYW5kb20oKSAlIDMpKQorCQkJYnJlYWs7CisjZW5kaWYKKwkJaWYgKGZsYWdzICYgRkxBR19XQUlUX0FUTEVBU1RfT05FKQorCQkJd2FpdF9mbGFncyA9IFdOT0hBTkc7CisJfQorCXJldHVybiBnbG9iYWxfc3RhdHVzOworfQorCisvKgorICogUnVuIHRoZSBmc2NrIHByb2dyYW0gb24gYSBwYXJ0aWN1bGFyIGRldmljZQorICoKKyAqIElmIHRoZSB0eXBlIGlzIHNwZWNpZmllZCB1c2luZyAtdCwgYW5kIGl0IGlzbid0IHByZWZpeGVkIHdpdGggIm5vIgorICogKGFzIGluICJub2V4dDIiKSBhbmQgb25seSBvbmUgZmlsZXN5c3RlbSB0eXBlIGlzIHNwZWNpZmllZCwgdGhlbgorICogdXNlIHRoYXQgdHlwZSByZWdhcmRsZXNzIG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIC9ldGMvZnN0YWIuCisgKgorICogSWYgdGhlIHR5cGUgaXNuJ3Qgc3BlY2lmaWVkIGJ5IHRoZSB1c2VyLCB0aGVuIHVzZSBlaXRoZXIgdGhlIHR5cGUKKyAqIHNwZWNpZmllZCBpbiAvZXRjL2ZzdGFiLCBvciBERUZBVUxUX0ZTVFlQRS4KKyAqLworc3RhdGljIHZvaWQgZnNja19kZXZpY2Uoc3RydWN0IGZzX2luZm8gKmZzLCBpbnQgaW50ZXJhY3RpdmUpCit7CisJY29uc3QgY2hhciAqdHlwZTsKKwlpbnQgcmV0dmFsOworCisJaW50ZXJwcmV0X3R5cGUoZnMpOworCisJaWYgKHN0cmNtcChmcy0+dHlwZSwgImF1dG8iKSAhPSAwKQorCQl0eXBlID0gZnMtPnR5cGU7CisJZWxzZSBpZiAoZnN0eXBlICYmIHN0cm5jbXAoZnN0eXBlLCAibm8iLCAyKSAmJgorCSAgICBzdHJuY21wKGZzdHlwZSwgIm9wdHM9IiwgNSkgJiYgc3RybmNtcChmc3R5cGUsICJsb29wIiwgNCkgJiYKKwkgICAgIXN0cmNocihmc3R5cGUsICcsJykpCisJCXR5cGUgPSBmc3R5cGU7CisJZWxzZQorCQl0eXBlID0gREVGQVVMVF9GU1RZUEU7CisKKwludW1fcnVubmluZysrOworCXJldHZhbCA9IGV4ZWN1dGUodHlwZSwgZnMtPmRldmljZSwgZnMtPm1vdW50cHQsIGludGVyYWN0aXZlKTsKKwlpZiAocmV0dmFsKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgIgorCQkJImZvciAlc1xuIiksIHByb2duYW1lLCByZXR2YWwsIHR5cGUsIGZzLT5kZXZpY2UpOworCQludW1fcnVubmluZy0tOworCX0KK30KKworCisvKgorICogRGVhbCB3aXRoIHRoZSBmc2NrIC10IGFyZ3VtZW50LgorICovCitzdGF0aWMgc3RydWN0IGZzX3R5cGVfY29tcGlsZSB7CisJY2hhciAqKmxpc3Q7CisJaW50ICp0eXBlOworCWludCAgbmVnYXRlOworfSBmc190eXBlX2NvbXBpbGVkOworCisjZGVmaW5lIEZTX1RZUEVfTk9STUFMCTAKKyNkZWZpbmUgRlNfVFlQRV9PUFQJMQorI2RlZmluZSBGU19UWVBFX05FR09QVAkyCisKK3N0YXRpYyBjb25zdCBjaGFyICpmc190eXBlX3N5bnRheF9lcnJvciA9CitOXygiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisgICAid2l0aCAnbm8nIG9yICchJy5cbiIpOworCitzdGF0aWMgdm9pZCBjb21waWxlX2ZzX3R5cGUoY2hhciAqZnNfdHlwZSwgc3RydWN0IGZzX3R5cGVfY29tcGlsZSAqY21wKQoreworCWNoYXIgCSpjcCwgKmxpc3QsICpzOworCWludAludW0gPSAyOworCWludAluZWdhdGUsIGZpcnN0X25lZ2F0ZSA9IDE7CisKKwlpZiAoZnNfdHlwZSkgeworCQlmb3IgKGNwPWZzX3R5cGU7ICpjcDsgY3ArKykgeworCQkJaWYgKCpjcCA9PSAnLCcpCisJCQkJbnVtKys7CisJCX0KKwl9CisKKwljbXAtPmxpc3QgPSBtYWxsb2MobnVtICogc2l6ZW9mKGNoYXIgKikpOworCWNtcC0+dHlwZSA9IG1hbGxvYyhudW0gKiBzaXplb2YoaW50KSk7CisJaWYgKCFjbXAtPmxpc3QgfHwgIWNtcC0+dHlwZSkgeworCQlmcHV0cyhfKCJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIpLAorCQkgICAgICBzdGRlcnIpOworCQlleGl0KEVYSVRfRVJST1IpOworCX0KKwltZW1zZXQoY21wLT5saXN0LCAwLCBudW0gKiBzaXplb2YoY2hhciAqKSk7CisJbWVtc2V0KGNtcC0+dHlwZSwgMCwgbnVtICogc2l6ZW9mKGludCkpOworCWNtcC0+bmVnYXRlID0gMDsKKworCWlmICghZnNfdHlwZSkKKwkJcmV0dXJuOworCisJbGlzdCA9IHN0cmluZ19jb3B5KGZzX3R5cGUpOworCW51bSA9IDA7CisJcyA9IHN0cnRvayhsaXN0LCAiLCIpOworCXdoaWxlKHMpIHsKKwkJbmVnYXRlID0gMDsKKwkJaWYgKHN0cm5jbXAocywgIm5vIiwgMikgPT0gMCkgeworCQkJcyArPSAyOworCQkJbmVnYXRlID0gMTsKKwkJfSBlbHNlIGlmICgqcyA9PSAnIScpIHsKKwkJCXMrKzsKKwkJCW5lZ2F0ZSA9IDE7CisJCX0KKwkJaWYgKHN0cmNtcChzLCAibG9vcCIpID09IDApCisJCQkvKiBsb29wIGlzIHJlYWxseSBzaG9ydC1oYW5kIGZvciBvcHRzPWxvb3AgKi8KKwkJCWdvdG8gbG9vcF9zcGVjaWFsX2Nhc2U7CisJCWVsc2UgaWYgKHN0cm5jbXAocywgIm9wdHM9IiwgNSkgPT0gMCkgeworCQkJcyArPSA1OworCQlsb29wX3NwZWNpYWxfY2FzZToKKwkJCWNtcC0+dHlwZVtudW1dID0gbmVnYXRlID8gRlNfVFlQRV9ORUdPUFQgOiBGU19UWVBFX09QVDsKKwkJfSBlbHNlIHsKKwkJCWlmIChmaXJzdF9uZWdhdGUpIHsKKwkJCQljbXAtPm5lZ2F0ZSA9IG5lZ2F0ZTsKKwkJCQlmaXJzdF9uZWdhdGUgPSAwOworCQkJfQorCQkJaWYgKChuZWdhdGUgJiYgIWNtcC0+bmVnYXRlKSB8fAorCQkJICAgICghbmVnYXRlICYmIGNtcC0+bmVnYXRlKSkgeworCQkJCWZwdXRzKF8oZnNfdHlwZV9zeW50YXhfZXJyb3IpLCBzdGRlcnIpOworCQkJCWV4aXQoRVhJVF9VU0FHRSk7CisJCQl9CisJCX0KKyNpZiAwCisJCXByaW50ZigiQWRkaW5nICVzIHRvIGxpc3QgKHR5cGUgJWQpLlxuIiwgcywgY21wLT50eXBlW251bV0pOworI2VuZGlmCisJICAgICAgICBjbXAtPmxpc3RbbnVtKytdID0gc3RyaW5nX2NvcHkocyk7CisJCXMgPSBzdHJ0b2soTlVMTCwgIiwiKTsKKwl9CisJZnJlZShsaXN0KTsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIGlmIGEgcGFydGljdWxhciBvcHRpb24gYXBwZWFycyBpbiBhCisgKiBjb21tYS1kZWxpbWl0ZWQgb3B0aW9ucyBsaXN0CisgKi8KK3N0YXRpYyBpbnQgb3B0X2luX2xpc3QoY29uc3QgY2hhciAqb3B0LCBjaGFyICpvcHRsaXN0KQoreworCWNoYXIJKmxpc3QsICpzOworCisJaWYgKCFvcHRsaXN0KQorCQlyZXR1cm4gMDsKKwlsaXN0ID0gc3RyaW5nX2NvcHkob3B0bGlzdCk7CisKKwlzID0gc3RydG9rKGxpc3QsICIsIik7CisJd2hpbGUocykgeworCQlpZiAoc3RyY21wKHMsIG9wdCkgPT0gMCkgeworCQkJZnJlZShsaXN0KTsKKwkJCXJldHVybiAxOworCQl9CisJCXMgPSBzdHJ0b2soTlVMTCwgIiwiKTsKKwl9CisgICAgICAgIGZyZWUobGlzdCk7CisJcmV0dXJuIDA7Cit9CisKKy8qIFNlZSBpZiB0aGUgZmlsZXN5c3RlbSBtYXRjaGVzIHRoZSBjcml0ZXJpYSBnaXZlbiBieSB0aGUgLXQgb3B0aW9uICovCitzdGF0aWMgaW50IGZzX21hdGNoKHN0cnVjdCBmc19pbmZvICpmcywgc3RydWN0IGZzX3R5cGVfY29tcGlsZSAqY21wKQoreworCWludCBuLCByZXQgPSAwLCBjaGVja2VkX3R5cGUgPSAwOworCWNoYXIgKmNwOworCisJaWYgKGNtcC0+bGlzdCA9PSAwIHx8IGNtcC0+bGlzdFswXSA9PSAwKQorCQlyZXR1cm4gMTsKKworCWZvciAobj0wOyAoY3AgPSBjbXAtPmxpc3Rbbl0pOyBuKyspIHsKKwkJc3dpdGNoIChjbXAtPnR5cGVbbl0pIHsKKwkJY2FzZSBGU19UWVBFX05PUk1BTDoKKwkJCWNoZWNrZWRfdHlwZSsrOworCQkJaWYgKHN0cmNtcChjcCwgZnMtPnR5cGUpID09IDApIHsKKwkJCQlyZXQgPSAxOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgRlNfVFlQRV9ORUdPUFQ6CisJCQlpZiAob3B0X2luX2xpc3QoY3AsIGZzLT5vcHRzKSkKKwkJCQlyZXR1cm4gMDsKKwkJCWJyZWFrOworCQljYXNlIEZTX1RZUEVfT1BUOgorCQkJaWYgKCFvcHRfaW5fbGlzdChjcCwgZnMtPm9wdHMpKQorCQkJCXJldHVybiAwOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGNoZWNrZWRfdHlwZSA9PSAwKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gKGNtcC0+bmVnYXRlID8gIXJldCA6IHJldCk7Cit9CisKKy8qIENoZWNrIGlmIHdlIHNob3VsZCBpZ25vcmUgdGhpcyBmaWxlc3lzdGVtLiAqLworc3RhdGljIGludCBpZ25vcmUoc3RydWN0IGZzX2luZm8gKmZzKQoreworCWNvbnN0IGNoYXIgKippcDsKKwlpbnQgd2FudGVkID0gMDsKKworCS8qCisJICogSWYgdGhlIHBhc3MgbnVtYmVyIGlzIDAsIGlnbm9yZSBpdC4KKwkgKi8KKwlpZiAoZnMtPnBhc3NubyA9PSAwKQorCQlyZXR1cm4gMTsKKworCS8qCisJICogSWYgdGhpcyBpcyBhIGJpbmQgbW91bnQsIGlnbm9yZSBpdC4KKwkgKi8KKwlpZiAob3B0X2luX2xpc3QoImJpbmQiLCBmcy0+b3B0cykpIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQlfKCIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzIG51bWJlclxuIiksCisJCQlmcy0+bW91bnRwdCk7CisJCXJldHVybiAxOworCX0KKworCWludGVycHJldF90eXBlKGZzKTsKKworCS8qCisJICogSWYgYSBzcGVjaWZpYyBmc3R5cGUgaXMgc3BlY2lmaWVkLCBhbmQgaXQgZG9lc24ndCBtYXRjaCwKKwkgKiBpZ25vcmUgaXQuCisJICovCisJaWYgKCFmc19tYXRjaChmcywgJmZzX3R5cGVfY29tcGlsZWQpKSByZXR1cm4gMTsKKworCS8qIEFyZSB3ZSBpZ25vcmluZyB0aGlzIHR5cGU/ICovCisJZm9yKGlwID0gaWdub3JlZF90eXBlczsgKmlwOyBpcCsrKQorCQlpZiAoc3RyY21wKGZzLT50eXBlLCAqaXApID09IDApIHJldHVybiAxOworCisJLyogRG8gd2UgcmVhbGx5IHJlYWxseSB3YW50IHRvIGNoZWNrIHRoaXMgZnM/ICovCisJZm9yKGlwID0gcmVhbGx5X3dhbnRlZDsgKmlwOyBpcCsrKQorCQlpZiAoc3RyY21wKGZzLT50eXBlLCAqaXApID09IDApIHsKKwkJCXdhbnRlZCA9IDE7CisJCQlicmVhazsKKwkJfQorCisJLyogU2VlIGlmIHRoZSA8ZnNjay5mcz4gcHJvZ3JhbSBpcyBhdmFpbGFibGUuICovCisJaWYgKGZpbmRfZnNjayhmcy0+dHlwZSkgPT0gTlVMTCkgeworCQlpZiAod2FudGVkKQorCQkJZnByaW50ZihzdGRlcnIsIF8oImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIpLAorCQkJCWZzLT5kZXZpY2UsIGZzLT50eXBlKTsKKwkJcmV0dXJuIDE7CisJfQorCisJLyogV2UgY2FuIGFuZCB3YW50IHRvIGNoZWNrIHRoaXMgZmlsZSBzeXN0ZW0gdHlwZS4gKi8KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJldHVybnMgVFJVRSBpZiBhIHBhcnRpdGlvbiBvbiB0aGUgc2FtZSBkaXNrIGlzIGFscmVhZHkgYmVpbmcKKyAqIGNoZWNrZWQuCisgKi8KK3N0YXRpYyBpbnQgZGV2aWNlX2FscmVhZHlfYWN0aXZlKGNoYXIgKmRldmljZSkKK3sKKwlzdHJ1Y3QgZnNja19pbnN0YW5jZSAqaW5zdDsKKwljaGFyICpiYXNlOworCisJaWYgKGZvcmNlX2FsbF9wYXJhbGxlbCkKKwkJcmV0dXJuIDA7CisKKyNpZmRlZiBCQVNFX01ECisJLyogRG9uJ3QgY2hlY2sgYSBzb2Z0IHJhaWQgZGlzayB3aXRoIGFueSBvdGhlciBkaXNrICovCisJaWYgKGluc3RhbmNlX2xpc3QgJiYKKwkgICAgKCFzdHJuY21wKGluc3RhbmNlX2xpc3QtPmRldmljZSwgQkFTRV9NRCwgc2l6ZW9mKEJBU0VfTUQpLTEpIHx8CisJICAgICAhc3RybmNtcChkZXZpY2UsIEJBU0VfTUQsIHNpemVvZihCQVNFX01EKS0xKSkpCisJCXJldHVybiAxOworI2VuZGlmCisKKwliYXNlID0gYmFzZV9kZXZpY2UoZGV2aWNlKTsKKwkvKgorCSAqIElmIHdlIGRvbid0IGtub3cgdGhlIGJhc2UgZGV2aWNlLCBhc3N1bWUgdGhhdCB0aGUgZGV2aWNlIGlzCisJICogYWxyZWFkeSBhY3RpdmUgaWYgdGhlcmUgYXJlIGFueSBmc2NrIGluc3RhbmNlcyBydW5uaW5nLgorCSAqLworCWlmICghYmFzZSkKKwkJcmV0dXJuIChpbnN0YW5jZV9saXN0ICE9IDApOworCWZvciAoaW5zdCA9IGluc3RhbmNlX2xpc3Q7IGluc3Q7IGluc3QgPSBpbnN0LT5uZXh0KSB7CisJCWlmICghaW5zdC0+YmFzZV9kZXZpY2UgfHwgIXN0cmNtcChiYXNlLCBpbnN0LT5iYXNlX2RldmljZSkpIHsKKwkJCWZyZWUoYmFzZSk7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKwlmcmVlKGJhc2UpOworCXJldHVybiAwOworfQorCisvKiBDaGVjayBhbGwgZmlsZSBzeXN0ZW1zLCB1c2luZyB0aGUgL2V0Yy9mc3RhYiB0YWJsZS4gKi8KK3N0YXRpYyBpbnQgY2hlY2tfYWxsKE5PQVJHUykKK3sKKwlzdHJ1Y3QgZnNfaW5mbyAqZnMgPSBOVUxMOworCWludCBzdGF0dXMgPSBFWElUX09LOworCWludCBub3RfZG9uZV95ZXQgPSAxOworCWludCBwYXNzbm8gPSAxOworCWludCBwYXNzX2RvbmU7CisKKwlpZiAodmVyYm9zZSkKKwkJZnB1dHMoXygiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIpLCBzdGRvdXQpOworCisJLyoKKwkgKiBEbyBhbiBpbml0aWFsIHNjYW4gb3ZlciB0aGUgZmlsZXN5c3RlbTsgbWFyayBmaWxlc3lzdGVtcworCSAqIHdoaWNoIHNob3VsZCBiZSBpZ25vcmVkIGFzIGRvbmUsIGFuZCByZXNvbHZlIGFueSAiYXV0byIKKwkgKiBmaWxlc3lzdGVtIHR5cGVzIChkb25lIGFzIGEgc2lkZS1lZmZlY3Qgb2YgY2FsbGluZyBpZ25vcmUoKSkuCisJICovCisJZm9yIChmcyA9IGZpbGVzeXNfaW5mbzsgZnM7IGZzID0gZnMtPm5leHQpIHsKKwkJaWYgKGlnbm9yZShmcykpCisJCQlmcy0+ZmxhZ3MgfD0gRkxBR19ET05FOworCX0KKworCS8qCisJICogRmluZCBhbmQgY2hlY2sgdGhlIHJvb3QgZmlsZXN5c3RlbS4KKwkgKi8KKwlpZiAoIXBhcmFsbGVsX3Jvb3QpIHsKKwkJZm9yIChmcyA9IGZpbGVzeXNfaW5mbzsgZnM7IGZzID0gZnMtPm5leHQpIHsKKwkJCWlmICghc3RyY21wKGZzLT5tb3VudHB0LCAiLyIpKQorCQkJCWJyZWFrOworCQl9CisJCWlmIChmcykgeworCQkJaWYgKCFza2lwX3Jvb3QgJiYgIWlnbm9yZShmcykgJiYKKwkJCSAgICAhKGlnbm9yZV9tb3VudGVkICYmIGlzX21vdW50ZWQoZnMtPmRldmljZSkpKSB7CisJCQkJZnNja19kZXZpY2UoZnMsIDEpOworCQkJCXN0YXR1cyB8PSB3YWl0X21hbnkoRkxBR19XQUlUX0FMTCk7CisJCQkJaWYgKHN0YXR1cyA+IEVYSVRfTk9OREVTVFJVQ1QpCisJCQkJCXJldHVybiBzdGF0dXM7CisJCQl9CisJCQlmcy0+ZmxhZ3MgfD0gRkxBR19ET05FOworCQl9CisJfQorCS8qCisJICogVGhpcyBpcyBmb3IgdGhlIGJvbmUtaGVhZGVkIHVzZXIgd2hvIGVudGVycyB0aGUgcm9vdAorCSAqIGZpbGVzeXN0ZW0gdHdpY2UuICBTa2lwIHJvb3Qgd2lsbCBza2VwIGFsbCByb290IGVudHJpZXMuCisJICovCisJaWYgKHNraXBfcm9vdCkKKwkJZm9yIChmcyA9IGZpbGVzeXNfaW5mbzsgZnM7IGZzID0gZnMtPm5leHQpCisJCQlpZiAoIXN0cmNtcChmcy0+bW91bnRwdCwgIi8iKSkKKwkJCQlmcy0+ZmxhZ3MgfD0gRkxBR19ET05FOworCisJd2hpbGUgKG5vdF9kb25lX3lldCkgeworCQlub3RfZG9uZV95ZXQgPSAwOworCQlwYXNzX2RvbmUgPSAxOworCisJCWZvciAoZnMgPSBmaWxlc3lzX2luZm87IGZzOyBmcyA9IGZzLT5uZXh0KSB7CisJCQlpZiAoY2FuY2VsX3JlcXVlc3RlZCkKKwkJCQlicmVhazsKKwkJCWlmIChmcy0+ZmxhZ3MgJiBGTEFHX0RPTkUpCisJCQkJY29udGludWU7CisJCQkvKgorCQkJICogSWYgdGhlIGZpbGVzeXN0ZW0ncyBwYXNzIG51bWJlciBpcyBoaWdoZXIKKwkJCSAqIHRoYW4gdGhlIGN1cnJlbnQgcGFzcyBudW1iZXIsIHRoZW4gd2UgZG9uJ3QKKwkJCSAqIGRvIGl0IHlldC4KKwkJCSAqLworCQkJaWYgKGZzLT5wYXNzbm8gPiBwYXNzbm8pIHsKKwkJCQlub3RfZG9uZV95ZXQrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChpZ25vcmVfbW91bnRlZCAmJiBpc19tb3VudGVkKGZzLT5kZXZpY2UpKSB7CisJCQkJZnMtPmZsYWdzIHw9IEZMQUdfRE9ORTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCS8qCisJCQkgKiBJZiBhIGZpbGVzeXN0ZW0gb24gYSBwYXJ0aWN1bGFyIGRldmljZSBoYXMKKwkJCSAqIGFscmVhZHkgYmVlbiBzcGF3bmVkLCB0aGVuIHdlIG5lZWQgdG8gZGVmZXIKKwkJCSAqIHRoaXMgdG8gYW5vdGhlciBwYXNzLgorCQkJICovCisJCQlpZiAoZGV2aWNlX2FscmVhZHlfYWN0aXZlKGZzLT5kZXZpY2UpKSB7CisJCQkJcGFzc19kb25lID0gMDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCS8qCisJCQkgKiBTcGF3biBvZmYgdGhlIGZzY2sgcHJvY2VzcworCQkJICovCisJCQlmc2NrX2RldmljZShmcywgc2VyaWFsaXplKTsKKwkJCWZzLT5mbGFncyB8PSBGTEFHX0RPTkU7CisKKwkJCS8qCisJCQkgKiBPbmx5IGRvIG9uZSBmaWxlc3lzdGVtIGF0IGEgdGltZSwgb3IgaWYgd2UKKwkJCSAqIGhhdmUgYSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGZzY2sncyBleHRhbnQKKwkJCSAqIGF0IG9uZSB0aW1lLCBhcHBseSB0aGF0IGxpbWl0LgorCQkJICovCisJCQlpZiAoc2VyaWFsaXplIHx8CisJCQkgICAgKG1heF9ydW5uaW5nICYmIChudW1fcnVubmluZyA+PSBtYXhfcnVubmluZykpKSB7CisJCQkJcGFzc19kb25lID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAoY2FuY2VsX3JlcXVlc3RlZCkKKwkJCWJyZWFrOworCQlpZiAodmVyYm9zZSA+IDEpCisJCQlwcmludGYoXygiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iKSwgcGFzc25vKTsKKwkJc3RhdHVzIHw9IHdhaXRfbWFueShwYXNzX2RvbmUgPyBGTEFHX1dBSVRfQUxMIDoKKwkJCQkgICAgRkxBR19XQUlUX0FUTEVBU1RfT05FKTsKKwkJaWYgKHBhc3NfZG9uZSkgeworCQkJaWYgKHZlcmJvc2UgPiAxKQorCQkJCXByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CisJCQlwYXNzbm8rKzsKKwkJfSBlbHNlCisJCQlub3RfZG9uZV95ZXQrKzsKKwl9CisJaWYgKGNhbmNlbF9yZXF1ZXN0ZWQgJiYgIWtpbGxfc2VudCkgeworCQlraWxsX2FsbChTSUdURVJNKTsKKwkJa2lsbF9zZW50Kys7CisJfQorCXN0YXR1cyB8PSB3YWl0X21hbnkoRkxBR19XQUlUX0FUTEVBU1RfT05FKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMgdm9pZCB1c2FnZShOT0FSR1MpCit7CisJZnB1dHMoXygiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iKSwgc3RkZXJyKTsKKwlleGl0KEVYSVRfVVNBR0UpOworfQorCisjaWZkZWYgSEFWRV9TSUdOQUxfSAorc3RhdGljIHZvaWQgc2lnbmFsX2NhbmNlbChpbnQgc2lnIEZTQ0tfQVRUUigodW51c2VkKSkpCit7CisJY2FuY2VsX3JlcXVlc3RlZCsrOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIFBSUyhpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludAlpLCBqOworCWNoYXIJKmFyZywgKmRldiwgKnRtcCA9IDA7CisJY2hhcglvcHRpb25zWzEyOF07CisJaW50CW9wdCA9IDA7CisJaW50ICAgICBvcHRzX2Zvcl9mc2NrID0gMDsKKyNpZmRlZiBIQVZFX1NJR05BTF9ICisJc3RydWN0IHNpZ2FjdGlvbglzYTsKKworCS8qCisJICogU2V0IHVwIHNpZ25hbCBhY3Rpb24KKwkgKi8KKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc3RydWN0IHNpZ2FjdGlvbikpOworCXNhLnNhX2hhbmRsZXIgPSBzaWduYWxfY2FuY2VsOworCXNpZ2FjdGlvbihTSUdJTlQsICZzYSwgMCk7CisJc2lnYWN0aW9uKFNJR1RFUk0sICZzYSwgMCk7CisjZW5kaWYKKworCW51bV9kZXZpY2VzID0gMDsKKwludW1fYXJncyA9IDA7CisJaW5zdGFuY2VfbGlzdCA9IDA7CisKKwlwcm9nbmFtZSA9IGFyZ3ZbMF07CisKKwlmb3IgKGk9MTsgaSA8IGFyZ2M7IGkrKykgeworCQlhcmcgPSBhcmd2W2ldOworCQlpZiAoIWFyZykKKwkJCWNvbnRpbnVlOworCQlpZiAoKGFyZ1swXSA9PSAnLycgJiYgIW9wdHNfZm9yX2ZzY2spIHx8IHN0cmNocihhcmcsICc9JykpIHsKKwkJCWlmIChudW1fZGV2aWNlcyA+PSBNQVhfREVWSUNFUykgeworCQkJCWZwcmludGYoc3RkZXJyLCBfKCIlczogdG9vIG1hbnkgZGV2aWNlc1xuIiksCisJCQkJCXByb2duYW1lKTsKKwkJCQlleGl0KEVYSVRfRVJST1IpOworCQkJfQorCQkJZGV2ID0gYmxraWRfZ2V0X2Rldm5hbWUoY2FjaGUsIGFyZywgTlVMTCk7CisJCQlpZiAoIWRldiAmJiBzdHJjaHIoYXJnLCAnPScpKSB7CisJCQkJLyoKKwkJCQkgKiBDaGVjayB0byBzZWUgaWYgd2UgZmFpbGVkIGJlY2F1c2UKKwkJCQkgKiAvcHJvYy9wYXJ0aXRpb25zIGlzbid0IGZvdW5kLgorCQkJCSAqLworCQkJCWlmIChhY2Nlc3MoIi9wcm9jL3BhcnRpdGlvbnMiLCBSX09LKSA8IDApIHsKKwkJCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZG4ndCBvcGVuIC9wcm9jL3BhcnRpdGlvbnM6ICVzXG4iLAorCQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCQkJZnByaW50ZihzdGRlcnIsICJJcyAvcHJvYyBtb3VudGVkP1xuIik7CisJCQkJCWV4aXQoRVhJVF9FUlJPUik7CisJCQkJfQorCQkJCS8qCisJCQkJICogQ2hlY2sgdG8gc2VlIGlmIHRoaXMgaXMgYmVjYXVzZQorCQkJCSAqIHdlJ3JlIG5vdCBydW5uaW5nIGFzIHJvb3QKKwkJCQkgKi8KKwkJCQlpZiAoZ2V0ZXVpZCgpKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJIk11c3QgYmUgcm9vdCB0byBzY2FuIGZvciBtYXRjaGluZyBmaWxlc3lzdGVtczogJXNcbiIsIGFyZyk7CisJCQkJZWxzZQorCQkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJIkNvdWxkbid0IGZpbmQgbWF0Y2hpbmcgZmlsZXN5c3RlbTogJXNcbiIsIGFyZyk7CisJCQkJZXhpdChFWElUX0VSUk9SKTsKKwkJCX0KKwkJCWRldmljZXNbbnVtX2RldmljZXMrK10gPSBkZXYgPyBkZXYgOiBzdHJpbmdfY29weShhcmcpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGFyZ1swXSAhPSAnLScgfHwgb3B0c19mb3JfZnNjaykgeworCQkJaWYgKG51bV9hcmdzID49IE1BWF9BUkdTKSB7CisJCQkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIpLAorCQkJCQlwcm9nbmFtZSk7CisJCQkJZXhpdChFWElUX0VSUk9SKTsKKwkJCX0KKwkJCWFyZ3NbbnVtX2FyZ3MrK10gPSBzdHJpbmdfY29weShhcmcpOworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChqPTE7IGFyZ1tqXTsgaisrKSB7CisJCQlpZiAob3B0c19mb3JfZnNjaykgeworCQkJCW9wdGlvbnNbKytvcHRdID0gYXJnW2pdOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJc3dpdGNoIChhcmdbal0pIHsKKwkJCWNhc2UgJ0EnOgorCQkJCWRvYWxsKys7CisJCQkJYnJlYWs7CisJCQljYXNlICdDJzoKKwkJCQlwcm9ncmVzcysrOworCQkJCWlmIChhcmdbaisxXSkgeworCQkJCQlwcm9ncmVzc19mZCA9IHN0cmluZ190b19pbnQoYXJnK2orMSk7CisJCQkJCWlmIChwcm9ncmVzc19mZCA8IDApCisJCQkJCQlwcm9ncmVzc19mZCA9IDA7CisJCQkJCWVsc2UKKwkJCQkJCWdvdG8gbmV4dF9hcmc7CisJCQkJfSBlbHNlIGlmIChhcmdjID4gaSArIDEgJiYKKwkJCQkJICAgYXJndltpICsgMV1bMF0gIT0gJy0nKSB7CisJCQkJCXByb2dyZXNzX2ZkID0gc3RyaW5nX3RvX2ludChhcmd2W2ldKTsKKwkJCQkJaWYgKHByb2dyZXNzX2ZkIDwgMCkKKwkJCQkJCXByb2dyZXNzX2ZkID0gMDsKKwkJCQkJZWxzZSB7CisJCQkJCQkrK2k7CisJCQkJCQlnb3RvIG5leHRfYXJnOworCQkJCQl9CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSAnVic6CisJCQkJdmVyYm9zZSsrOworCQkJCWJyZWFrOworCQkJY2FzZSAnTic6CisJCQkJbm9leGVjdXRlKys7CisJCQkJYnJlYWs7CisJCQljYXNlICdSJzoKKwkJCQlza2lwX3Jvb3QrKzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ1QnOgorCQkJCW5vdGl0bGUrKzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ00nOgorCQkJCWlnbm9yZV9tb3VudGVkKys7CisJCQkJYnJlYWs7CisJCQljYXNlICdQJzoKKwkJCQlwYXJhbGxlbF9yb290Kys7CisJCQkJYnJlYWs7CisJCQljYXNlICdzJzoKKwkJCQlzZXJpYWxpemUrKzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3QnOgorCQkJCXRtcCA9IDA7CisJCQkJaWYgKGZzdHlwZSkKKwkJCQkJdXNhZ2UoKTsKKwkJCQlpZiAoYXJnW2orMV0pCisJCQkJCXRtcCA9IGFyZytqKzE7CisJCQkJZWxzZSBpZiAoKGkrMSkgPCBhcmdjKQorCQkJCQl0bXAgPSBhcmd2WysraV07CisJCQkJZWxzZQorCQkJCQl1c2FnZSgpOworCQkJCWZzdHlwZSA9IHN0cmluZ19jb3B5KHRtcCk7CisJCQkJY29tcGlsZV9mc190eXBlKGZzdHlwZSwgJmZzX3R5cGVfY29tcGlsZWQpOworCQkJCWdvdG8gbmV4dF9hcmc7CisJCQljYXNlICctJzoKKwkJCQlvcHRzX2Zvcl9mc2NrKys7CisJCQkJYnJlYWs7CisJCQljYXNlICc/JzoKKwkJCQl1c2FnZSgpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlvcHRpb25zWysrb3B0XSA9IGFyZ1tqXTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCW5leHRfYXJnOgorCQlpZiAob3B0KSB7CisJCQlvcHRpb25zWzBdID0gJy0nOworCQkJb3B0aW9uc1srK29wdF0gPSAnXDAnOworCQkJaWYgKG51bV9hcmdzID49IE1BWF9BUkdTKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIpLAorCQkJCQlwcm9nbmFtZSk7CisJCQkJZXhpdChFWElUX0VSUk9SKTsKKwkJCX0KKwkJCWFyZ3NbbnVtX2FyZ3MrK10gPSBzdHJpbmdfY29weShvcHRpb25zKTsKKwkJCW9wdCA9IDA7CisJCX0KKwl9CisJaWYgKGdldGVudigiRlNDS19GT1JDRV9BTExfUEFSQUxMRUwiKSkKKwkJZm9yY2VfYWxsX3BhcmFsbGVsKys7CisJaWYgKCh0bXAgPSBnZXRlbnYoIkZTQ0tfTUFYX0lOU1QiKSkpCisJICAgIG1heF9ydW5uaW5nID0gYXRvaSh0bXApOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBpLCBzdGF0dXMgPSAwOworCWludCBpbnRlcmFjdGl2ZSA9IDA7CisJY2hhciAqb2xkcGF0aCA9IGdldGVudigiUEFUSCIpOworCWNvbnN0IGNoYXIgKmZzdGFiOworCXN0cnVjdCBmc19pbmZvICpmczsKKworCXNldHZidWYoc3Rkb3V0LCBOVUxMLCBfSU9OQkYsIEJVRlNJWik7CisJc2V0dmJ1ZihzdGRlcnIsIE5VTEwsIF9JT05CRiwgQlVGU0laKTsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworI2VuZGlmCisJYmxraWRfZ2V0X2NhY2hlKCZjYWNoZSwgTlVMTCk7CisJUFJTKGFyZ2MsIGFyZ3YpOworCisJaWYgKCFub3RpdGxlKQorCQlwcmludGYoImZzY2sgJXMgKCVzKVxuIiwgRTJGU1BST0dTX1ZFUlNJT04sIEUyRlNQUk9HU19EQVRFKTsKKworCWZzdGFiID0gZ2V0ZW52KCJGU1RBQl9GSUxFIik7CisJaWYgKCFmc3RhYikKKwkJZnN0YWIgPSBfUEFUSF9NTlRUQUI7CisJbG9hZF9mc19pbmZvKGZzdGFiKTsKKworCS8qIFVwZGF0ZSBvdXIgc2VhcmNoIHBhdGggdG8gaW5jbHVkZSB1bmNvbW1vbiBkaXJlY3Rvcmllcy4gKi8KKwlpZiAob2xkcGF0aCkgeworCQlmc2NrX3BhdGggPSBtYWxsb2MgKHN0cmxlbiAoZnNja19wcmVmaXhfcGF0aCkgKyAxICsKKwkJCQkgICAgc3RybGVuIChvbGRwYXRoKSArIDEpOworCQlpZiAoIWZzY2tfcGF0aCkgeworCQkJZnByaW50ZihzdGRlcnIsICIlczogVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgZnNja19wYXRoXG4iLCBwcm9nbmFtZSk7CisJCQlleGl0KEVYSVRfRVJST1IpOworCQl9CisJCXN0cmNweSAoZnNja19wYXRoLCBmc2NrX3ByZWZpeF9wYXRoKTsKKwkJc3RyY2F0IChmc2NrX3BhdGgsICI6Iik7CisJCXN0cmNhdCAoZnNja19wYXRoLCBvbGRwYXRoKTsKKwl9IGVsc2UgeworCQlmc2NrX3BhdGggPSBzdHJpbmdfY29weShmc2NrX3ByZWZpeF9wYXRoKTsKKwl9CisKKwlpZiAoKG51bV9kZXZpY2VzID09IDEpIHx8IChzZXJpYWxpemUpKQorCQlpbnRlcmFjdGl2ZSA9IDE7CisKKwkvKiBJZiAtQSB3YXMgc3BlY2lmaWVkICgiY2hlY2sgYWxsIiksIGRvIHRoYXQhICovCisJaWYgKGRvYWxsKQorCQlyZXR1cm4gY2hlY2tfYWxsKCk7CisKKwlpZiAobnVtX2RldmljZXMgPT0gMCkgeworCQlzZXJpYWxpemUrKzsKKwkJaW50ZXJhY3RpdmUrKzsKKwkJcmV0dXJuIGNoZWNrX2FsbCgpOworCX0KKwlmb3IgKGkgPSAwIDsgaSA8IG51bV9kZXZpY2VzOyBpKyspIHsKKwkJaWYgKGNhbmNlbF9yZXF1ZXN0ZWQpIHsKKwkJCWlmICgha2lsbF9zZW50KSB7CisJCQkJa2lsbF9hbGwoU0lHVEVSTSk7CisJCQkJa2lsbF9zZW50Kys7CisJCQl9CisJCQlicmVhazsKKwkJfQorCQlmcyA9IGxvb2t1cChkZXZpY2VzW2ldKTsKKwkJaWYgKCFmcykgeworCQkJZnMgPSBjcmVhdGVfZnNfZGV2aWNlKGRldmljZXNbaV0sIDAsICJhdXRvIiwKKwkJCQkJICAgICAgMCwgLTEsIC0xKTsKKwkJCWlmICghZnMpCisJCQkJY29udGludWU7CisJCX0KKwkJaWYgKGlnbm9yZV9tb3VudGVkICYmIGlzX21vdW50ZWQoZnMtPmRldmljZSkpCisJCQljb250aW51ZTsKKwkJZnNja19kZXZpY2UoZnMsIGludGVyYWN0aXZlKTsKKwkJaWYgKHNlcmlhbGl6ZSB8fAorCQkgICAgKG1heF9ydW5uaW5nICYmIChudW1fcnVubmluZyA+PSBtYXhfcnVubmluZykpKSB7CisJCQlzdHJ1Y3QgZnNja19pbnN0YW5jZSAqaW5zdDsKKworCQkJaW5zdCA9IHdhaXRfb25lKDApOworCQkJaWYgKGluc3QpIHsKKwkJCQlzdGF0dXMgfD0gaW5zdC0+ZXhpdF9zdGF0dXM7CisJCQkJZnJlZV9pbnN0YW5jZShpbnN0KTsKKwkJCX0KKwkJCWlmICh2ZXJib3NlID4gMSkKKwkJCQlwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOworCQl9CisJfQorCXN0YXR1cyB8PSB3YWl0X21hbnkoRkxBR19XQUlUX0FMTCk7CisJZnJlZShmc2NrX3BhdGgpOworCWJsa2lkX3B1dF9jYWNoZShjYWNoZSk7CisJcmV0dXJuIHN0YXR1czsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2ZzY2suaCBiL2UyZnNwcm9ncy9taXNjL2ZzY2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTBmNzBlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZnNjay5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBmc2NrLmgKKyAqLworCisjaW5jbHVkZSA8dGltZS5oPgorCisjaWZkZWYgX19TVERDX18KKyNkZWZpbmUgTk9BUkdTIHZvaWQKKyNlbHNlCisjZGVmaW5lIE5PQVJHUworI2RlZmluZSBjb25zdAorI2VuZGlmCisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBGU0NLX0FUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgRlNDS19BVFRSKHgpCisjZW5kaWYKKworCisjaWZuZGVmIERFRkFVTFRfRlNUWVBFCisjZGVmaW5lIERFRkFVTFRfRlNUWVBFCSJleHQyIgorI2VuZGlmCisKKyNkZWZpbmUgTUFYX0RFVklDRVMgMzIKKyNkZWZpbmUgTUFYX0FSR1MgMzIKKworI2RlZmluZSBFWElUX09LICAgICAgICAgIDAKKyNkZWZpbmUgRVhJVF9OT05ERVNUUlVDVCAxCisjZGVmaW5lIEVYSVRfREVTVFJVQ1QgICAgMgorI2RlZmluZSBFWElUX1VOQ09SUkVDVEVEIDQKKyNkZWZpbmUgRVhJVF9FUlJPUiAgICAgICA4CisjZGVmaW5lIEVYSVRfVVNBR0UgICAgICAgMTYKKyNkZWZpbmUgRVhJVF9MSUJSQVJZICAgICAxMjgKKworLyoKKyAqIEludGVybmFsIHN0cnVjdHVyZSBmb3IgbW91bnQgdGFiZWwgZW50cmllcy4KKyAqLworCitzdHJ1Y3QgZnNfaW5mbyB7CisJY2hhciAgKmRldmljZTsKKwljaGFyICAqbW91bnRwdDsKKwljaGFyICAqdHlwZTsKKwljaGFyICAqb3B0czsKKwlpbnQgICBmcmVxOworCWludCAgIHBhc3NubzsKKwlpbnQgICBmbGFnczsKKwlzdHJ1Y3QgZnNfaW5mbyAqbmV4dDsKK307CisKKyNkZWZpbmUgRkxBR19ET05FIDEKKyNkZWZpbmUgRkxBR19QUk9HUkVTUyAyCisKKy8qCisgKiBTdHJ1Y3R1cmUgdG8gYWxsb3cgZXhpdCBjb2RlcyB0byBiZSBzdG9yZWQKKyAqLworc3RydWN0IGZzY2tfaW5zdGFuY2UgeworCWludAlwaWQ7CisJaW50CWZsYWdzOworCWludAlleGl0X3N0YXR1czsKKwl0aW1lX3QJc3RhcnRfdGltZTsKKwljaGFyICoJcHJvZzsKKwljaGFyICoJdHlwZTsKKwljaGFyICoJZGV2aWNlOworCWNoYXIgKgliYXNlX2RldmljZTsKKwlzdHJ1Y3QgZnNja19pbnN0YW5jZSAqbmV4dDsKK307CisKK2V4dGVybiBjaGFyICpiYXNlX2RldmljZShjb25zdCBjaGFyICpkZXZpY2UpOworZXh0ZXJuIGNvbnN0IGNoYXIgKmlkZW50aWZ5X2ZzKGNvbnN0IGNoYXIgKmZzX25hbWUsIGNvbnN0IGNoYXIgKmZzX3R5cGVzKTsKKworLyogaXNtb3VudGVkLmggKi8KK2V4dGVybiBpbnQgaXNfbW91bnRlZChjb25zdCBjaGFyICpmaWxlKTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL2Z1c2UyZnMuMS5pbiBiL2UyZnNwcm9ncy9taXNjL2Z1c2UyZnMuMS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWQzN2RmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvZnVzZTJmcy4xLmluCkBAIC0wLDAgKzEsNzMgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBGVVNFMkZTIDEgIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK2Z1c2UyZnMgXC0gRlVTRSBmaWxlIHN5c3RlbSBjbGllbnQgZm9yIGV4dDIvZXh0My9leHQ0IGZpbGUgc3lzdGVtcworLlNIIFNZTk9QU0lTCisuQiBmdXNlMmZzCitbCisuQiBkZXZpY2UvaW1hZ2UKK10KK1sKKy5CIG1vdW50cG9pbnQKK10KK1sKKy5JIG9wdGlvbnMKK10KKy5TSCBERVNDUklQVElPTgorLkIgZnVzZTJmcworaXMgYSBGVVNFIGZpbGUgc3lzdGVtIGNsaWVudCB0aGF0IHN1cHBvcnRzIHJlYWRpbmcgYW5kIHdyaXRpbmcgZnJvbQorZGV2aWNlcyBvciBpbWFnZSBmaWxlcyBjb250YWluaW5nIGV4dDIsIGV4dDMsIGFuZCBleHQ0IGZpbGUgc3lzdGVtcy4KKy5TSCBPUFRJT05TCisuU1MgImdlbmVyYWwgb3B0aW9uczoiCisuVFAKK1xmQlwtb1xmUiBvcHQsW29wdC4uLl0KK21vdW50IG9wdGlvbnMKKy5UUAorXGZCXC1oXGZSICAgXGZCXC1cLWhlbHBcZlIKK3ByaW50IGhlbHAKKy5UUAorXGZCXC1WXGZSICAgXGZCXC1cLXZlcnNpb25cZlIKK3ByaW50IHZlcnNpb24KKy5TUyAiZnVzZTJmcyBvcHRpb25zOiIKKy5UUAorXGZCLW9cZlIgcm8KK3JlYWQtb25seSBtb3VudAorLlRQCitcZkItb1xmUiBlcnJvcnM9cGFuaWMKK2R1bXAgY29yZSBvbiBlcnJvcgorLlRQCitcZkItb1xmUiBtaW5peGRmCittaW5peC1zdHlsZSBkZgorLlRQCitcZkItb1xmUiBub19kZWZhdWx0X29wdHMKK2RvIG5vdCBpbmNsdWRlIGRlZmF1bHQgZnVzZSBvcHRpb25zCisuVFAKK1xmQi1vXGZSIGZ1c2UyZnNfZGVidWcKK2VuYWJsZSBmdXNlMmZzIGRlYnVnZ2luZworLlNTICJGVVNFIG9wdGlvbnM6IgorLlRQCitcZkItZCAtb1xmUiBkZWJ1ZworZW5hYmxlIGRlYnVnIG91dHB1dCAoaW1wbGllcyAtZikKKy5UUAorXGZCLWZcZlIKK2ZvcmVncm91bmQgb3BlcmF0aW9uCisuVFAKK1xmQi1zXGZSCitkaXNhYmxlIG11bHRpLXRocmVhZGVkIG9wZXJhdGlvbgorLlAKK0ZvciBvdGhlciBGVVNFIG9wdGlvbnMgcGxlYXNlIHNlZQorLkJSIG1vdW50LmZ1c2UgKDgpCitvciBzZWUgdGhlIG91dHB1dCBvZgorLkkgZnVzZTJmcyBcLVwtaGVscGZ1bGwKKy5TSCBBVkFJTEFCSUxJVFkKKy5CIGZ1c2UyZnMKK2lzIHBhcnQgb2YgdGhlIGUyZnNwcm9ncyBwYWNrYWdlIGFuZCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuCisuU0ggU0VFIEFMU08KKy5CUiBleHQ0ICg1KQorLkJSIGUyZnNjayAoOCksCisuQlIgbW91bnQuZnVzZSAoOCkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvZnVzZTJmcy5jIGIvZTJmc3Byb2dzL21pc2MvZnVzZTJmcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZGJmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9mdXNlMmZzLmMKQEAgLTAsMCArMSwzOTgyIEBACisvKgorICogZnVzZTJmcy5jIC0gRlVTRSBzZXJ2ZXIgZm9yIGUyZnNwcm9ncy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgT3JhY2xlLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgNjQKKyNkZWZpbmUgRlVTRV9VU0VfVkVSU0lPTiAyOQorI2lmbmRlZiBfR05VX1NPVVJDRQorI2RlZmluZSBfR05VX1NPVVJDRQorI2VuZGlmCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2lmZGVmIF9fbGludXhfXworIyBpbmNsdWRlIDxsaW51eC9mcy5oPgorIyBpbmNsdWRlIDxsaW51eC9mYWxsb2MuaD4KKyMgaW5jbHVkZSA8bGludXgveGF0dHIuaD4KKyMgZGVmaW5lIEZVU0VfUExBVEZPUk1fT1BUUwkiLG5vbmVtcHR5LGJpZ193cml0ZXMiCisjIGlmZGVmIEhBVkVfU1lTX0FDTF9ICisjICBkZWZpbmUgVFJBTlNMQVRFX0xJTlVYX0FDTFMKKyMgZW5kaWYKKyNlbHNlCisjIGRlZmluZSBGVVNFX1BMQVRGT1JNX09QVFMJIiIKKyNlbmRpZgorI2lmZGVmIFRSQU5TTEFURV9MSU5VWF9BQ0xTCisjIGluY2x1ZGUgPHN5cy9hY2wuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZ1c2UuaD4KKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorCisjaW5jbHVkZSAiLi4vdmVyc2lvbi5oIgorCisjaWZkZWYgRU5BQkxFX05MUworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpbmNsdWRlIDxsb2NhbGUuaD4KKyNkZWZpbmUgXyhhKSAoZ2V0dGV4dChhKSkKKyNpZmRlZiBnZXR0ZXh0X25vb3AKKyNkZWZpbmUgTl8oYSkgZ2V0dGV4dF9ub29wKGEpCisjZWxzZQorI2RlZmluZSBOXyhhKSAoYSkKKyNlbmRpZgorI2RlZmluZSBQXyhzaW5ndWxhciwgcGx1cmFsLCBuKSAobmdldHRleHQoc2luZ3VsYXIsIHBsdXJhbCwgbikpCisjaWZuZGVmIE5MU19DQVRfTkFNRQorI2RlZmluZSBOTFNfQ0FUX05BTUUgImUyZnNwcm9ncyIKKyNlbmRpZgorI2lmbmRlZiBMT0NBTEVESVIKKyNkZWZpbmUgTE9DQUxFRElSICIvdXNyL3NoYXJlL2xvY2FsZSIKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgXyhhKSAoYSkKKyNkZWZpbmUgTl8oYSkgYQorI2RlZmluZSBQXyhzaW5ndWxhciwgcGx1cmFsLCBuKSAoKG4pID09IDEgPyAoc2luZ3VsYXIpIDogKHBsdXJhbCkpCisjZW5kaWYKKworc3RhdGljIGV4dDJfZmlsc3lzIGdsb2JhbF9mczsgLyogVHJ5IG5vdCB0byB1c2UgdGhpcyBkaXJlY3RseSAqLworCisjdW5kZWYgREVCVUcKKworI2lmZGVmIERFQlVHCisjIGRlZmluZSBkYmdfcHJpbnRmKGYsIGEuLi4pICBkbyB7cHJpbnRmKCJGVVNFMkZTLSIgZiwgIyMgYSk7IFwKKwlmZmx1c2goc3Rkb3V0KTsgXAorfSB3aGlsZSAoMCkKKyNlbHNlCisjIGRlZmluZSBkYmdfcHJpbnRmKGYsIGEuLi4pCisjZW5kaWYKKworI2lmIEZVU0VfVkVSU0lPTiA+PSBGVVNFX01BS0VfVkVSU0lPTigyLCA4KQorIyBpZmRlZiBfSU9SCisjICBpZmRlZiBfSU9XCisjICAgZGVmaW5lIFNVUFBPUlRfSV9GTEFHUworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgRkFMTE9DX0ZMX0tFRVBfU0laRQorIyBkZWZpbmUgRkxfS0VFUF9TSVpFX0ZMQUcgRkFMTE9DX0ZMX0tFRVBfU0laRQorIyBkZWZpbmUgU1VQUE9SVF9GQUxMT0NBVEUKKyNlbHNlCisjIGRlZmluZSBGTF9LRUVQX1NJWkVfRkxBRyAoMCkKKyNlbmRpZgorCisjaWZkZWYgRkFMTE9DX0ZMX1BVTkNIX0hPTEUKKyMgZGVmaW5lIEZMX1BVTkNIX0hPTEVfRkxBRyBGQUxMT0NfRkxfUFVOQ0hfSE9MRQorI2Vsc2UKKyMgZGVmaW5lIEZMX1BVTkNIX0hPTEVfRkxBRyAoMCkKKyNlbmRpZgorCitlcnJjb2RlX3QgZXh0MmZzX3J1bl9leHQzX2pvdXJuYWwoZXh0Ml9maWxzeXMgKmZzKTsKKworI2lmZGVmIENPTkZJR19KQkRfREVCVUcJCS8qIEVuYWJsZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLWpiZC1kZWJ1ZyAqLworaW50IGpvdXJuYWxfZW5hYmxlX2RlYnVnID0gLTE7CisjZW5kaWYKKworLyogQUNMIHRyYW5zbGF0aW9uIHN0dWZmICovCisjaWZkZWYgVFJBTlNMQVRFX0xJTlVYX0FDTFMKKy8qCisgKiBDb3BpZWQgZnJvbSBhY2xfZWEuaCBpbiBsaWJhY2wgc291cmNlOyBBQ0xzIGhhdmUgdG8gYmUgc2VudCB0byBhbmQgZnJvbSBmdXNlCisgKiBpbiB0aGlzIGZvcm1hdC4uLiBhdCBsZWFzdCBvbiBMaW51eC4KKyAqLworI2RlZmluZSBBQ0xfRUFfQUNDRVNTCQkic3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MiCisjZGVmaW5lIEFDTF9FQV9ERUZBVUxUCQkic3lzdGVtLnBvc2l4X2FjbF9kZWZhdWx0IgorCisjZGVmaW5lIEFDTF9FQV9WRVJTSU9OCQkweDAwMDIKKwordHlwZWRlZiBzdHJ1Y3QgeworCXVfaW50MTZfdAllX3RhZzsKKwl1X2ludDE2X3QJZV9wZXJtOworCXVfaW50MzJfdAllX2lkOworfSBhY2xfZWFfZW50cnk7CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1X2ludDMyX3QJYV92ZXJzaW9uOworCWFjbF9lYV9lbnRyeQlhX2VudHJpZXNbMF07Cit9IGFjbF9lYV9oZWFkZXI7CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFjbF9lYV9zaXplKGludCBjb3VudCkKK3sKKwlyZXR1cm4gc2l6ZW9mKGFjbF9lYV9oZWFkZXIpICsgY291bnQgKiBzaXplb2YoYWNsX2VhX2VudHJ5KTsKK30KKworc3RhdGljIGlubGluZSBpbnQgYWNsX2VhX2NvdW50KHNpemVfdCBzaXplKQoreworCWlmIChzaXplIDwgc2l6ZW9mKGFjbF9lYV9oZWFkZXIpKQorCQlyZXR1cm4gLTE7CisJc2l6ZSAtPSBzaXplb2YoYWNsX2VhX2hlYWRlcik7CisJaWYgKHNpemUgJSBzaXplb2YoYWNsX2VhX2VudHJ5KSkKKwkJcmV0dXJuIC0xOworCXJldHVybiBzaXplIC8gc2l6ZW9mKGFjbF9lYV9lbnRyeSk7Cit9CisKKy8qCisgKiBleHQ0IEFDTCBzdHJ1Y3R1cmVzLCBjb3BpZWQgZnJvbSBmcy9leHQ0L2FjbC5oLgorICovCisjZGVmaW5lIEVYVDRfQUNMX1ZFUlNJT04JMHgwMDAxCisKK3R5cGVkZWYgc3RydWN0IHsKKwlfX3UxNgkJZV90YWc7CisJX191MTYJCWVfcGVybTsKKwlfX3UzMgkJZV9pZDsKK30gZXh0NF9hY2xfZW50cnk7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlfX3UxNgkJZV90YWc7CisJX191MTYJCWVfcGVybTsKK30gZXh0NF9hY2xfZW50cnlfc2hvcnQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKwlfX3UzMgkJYV92ZXJzaW9uOworfSBleHQ0X2FjbF9oZWFkZXI7CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGV4dDRfYWNsX3NpemUoaW50IGNvdW50KQoreworCWlmIChjb3VudCA8PSA0KSB7CisJCXJldHVybiBzaXplb2YoZXh0NF9hY2xfaGVhZGVyKSArCisJCSAgICAgICBjb3VudCAqIHNpemVvZihleHQ0X2FjbF9lbnRyeV9zaG9ydCk7CisJfSBlbHNlIHsKKwkJcmV0dXJuIHNpemVvZihleHQ0X2FjbF9oZWFkZXIpICsKKwkJICAgICAgIDQgKiBzaXplb2YoZXh0NF9hY2xfZW50cnlfc2hvcnQpICsKKwkJICAgICAgIChjb3VudCAtIDQpICogc2l6ZW9mKGV4dDRfYWNsX2VudHJ5KTsKKwl9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50IGV4dDRfYWNsX2NvdW50KHNpemVfdCBzaXplKQoreworCXNzaXplX3QgczsKKworCXNpemUgLT0gc2l6ZW9mKGV4dDRfYWNsX2hlYWRlcik7CisJcyA9IHNpemUgLSA0ICogc2l6ZW9mKGV4dDRfYWNsX2VudHJ5X3Nob3J0KTsKKwlpZiAocyA8IDApIHsKKwkJaWYgKHNpemUgJSBzaXplb2YoZXh0NF9hY2xfZW50cnlfc2hvcnQpKQorCQkJcmV0dXJuIC0xOworCQlyZXR1cm4gc2l6ZSAvIHNpemVvZihleHQ0X2FjbF9lbnRyeV9zaG9ydCk7CisJfQorCWlmIChzICUgc2l6ZW9mKGV4dDRfYWNsX2VudHJ5KSkKKwkJcmV0dXJuIC0xOworCXJldHVybiBzIC8gc2l6ZW9mKGV4dDRfYWNsX2VudHJ5KSArIDQ7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZnVzZV90b19leHQ0X2FjbChhY2xfZWFfaGVhZGVyICpmYWNsLCBzaXplX3QgZmFjbF9zeiwKKwkJCQkgIGV4dDRfYWNsX2hlYWRlciAqKmVhY2wsIHNpemVfdCAqZWFjbF9zeikKK3sKKwlpbnQgaSwgZmFjbF9jb3VudDsKKwlleHQ0X2FjbF9oZWFkZXIgKmg7CisJc2l6ZV90IGhfc3o7CisJZXh0NF9hY2xfZW50cnkgKmU7CisJYWNsX2VhX2VudHJ5ICphOworCXVuc2lnbmVkIGNoYXIgKmhwdHI7CisJZXJyY29kZV90IGVycjsKKworCWZhY2xfY291bnQgPSBhY2xfZWFfY291bnQoZmFjbF9zeik7CisJaF9zeiA9IGV4dDRfYWNsX3NpemUoZmFjbF9jb3VudCk7CisJaWYgKGZhY2xfY291bnQgPCAwIHx8IGZhY2wtPmFfdmVyc2lvbiAhPSBBQ0xfRUFfVkVSU0lPTikKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKworCWVyciA9IGV4dDJmc19nZXRfbWVtKGhfc3osICZoKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJaC0+YV92ZXJzaW9uID0gZXh0MmZzX2NwdV90b19sZTMyKEVYVDRfQUNMX1ZFUlNJT04pOworCWhwdHIgPSAodW5zaWduZWQgY2hhciAqKSAoaCArIDEpOworCWZvciAoaSA9IDAsIGEgPSBmYWNsLT5hX2VudHJpZXM7IGkgPCBmYWNsX2NvdW50OyBpKyssIGErKykgeworCQllID0gKGV4dDRfYWNsX2VudHJ5ICopIGhwdHI7CisJCWUtPmVfdGFnID0gZXh0MmZzX2NwdV90b19sZTE2KGEtPmVfdGFnKTsKKwkJZS0+ZV9wZXJtID0gZXh0MmZzX2NwdV90b19sZTE2KGEtPmVfcGVybSk7CisKKwkJc3dpdGNoIChhLT5lX3RhZykgeworCQljYXNlIEFDTF9VU0VSOgorCQljYXNlIEFDTF9HUk9VUDoKKwkJCWUtPmVfaWQgPSBleHQyZnNfY3B1X3RvX2xlMzIoYS0+ZV9pZCk7CisJCQlocHRyICs9IHNpemVvZihleHQ0X2FjbF9lbnRyeSk7CisJCQlicmVhazsKKwkJY2FzZSBBQ0xfVVNFUl9PQko6CisJCWNhc2UgQUNMX0dST1VQX09CSjoKKwkJY2FzZSBBQ0xfTUFTSzoKKwkJY2FzZSBBQ0xfT1RIRVI6CisJCQlocHRyICs9IHNpemVvZihleHQ0X2FjbF9lbnRyeV9zaG9ydCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyciA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJKmVhY2wgPSBoOworCSplYWNsX3N6ID0gaF9zejsKKwlyZXR1cm4gZXJyOworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmaCk7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGVycmNvZGVfdCBleHQ0X3RvX2Z1c2VfYWNsKGFjbF9lYV9oZWFkZXIgKipmYWNsLCBzaXplX3QgKmZhY2xfc3osCisJCQkJICBleHQ0X2FjbF9oZWFkZXIgKmVhY2wsIHNpemVfdCBlYWNsX3N6KQoreworCWludCBpLCBlYWNsX2NvdW50OworCWFjbF9lYV9oZWFkZXIgKmY7CisJZXh0NF9hY2xfZW50cnkgKmU7CisJYWNsX2VhX2VudHJ5ICphOworCXNpemVfdCBmX3N6OworCXVuc2lnbmVkIGNoYXIgKmhwdHI7CisJZXJyY29kZV90IGVycjsKKworCWVhY2xfY291bnQgPSBleHQ0X2FjbF9jb3VudChlYWNsX3N6KTsKKwlmX3N6ID0gYWNsX2VhX3NpemUoZWFjbF9jb3VudCk7CisJaWYgKGVhY2xfY291bnQgPCAwIHx8CisJICAgIGVhY2wtPmFfdmVyc2lvbiAhPSBleHQyZnNfY3B1X3RvX2xlMzIoRVhUNF9BQ0xfVkVSU0lPTikpCisJCXJldHVybiBFWFQyX0VUX0lOVkFMSURfQVJHVU1FTlQ7CisKKwllcnIgPSBleHQyZnNfZ2V0X21lbShmX3N6LCAmZik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWYtPmFfdmVyc2lvbiA9IEFDTF9FQV9WRVJTSU9OOworCWhwdHIgPSAodW5zaWduZWQgY2hhciAqKSAoZWFjbCArIDEpOworCWZvciAoaSA9IDAsIGEgPSBmLT5hX2VudHJpZXM7IGkgPCBlYWNsX2NvdW50OyBpKyssIGErKykgeworCQllID0gKGV4dDRfYWNsX2VudHJ5ICopIGhwdHI7CisJCWEtPmVfdGFnID0gZXh0MmZzX2xlMTZfdG9fY3B1KGUtPmVfdGFnKTsKKwkJYS0+ZV9wZXJtID0gZXh0MmZzX2xlMTZfdG9fY3B1KGUtPmVfcGVybSk7CisKKwkJc3dpdGNoIChhLT5lX3RhZykgeworCQljYXNlIEFDTF9VU0VSOgorCQljYXNlIEFDTF9HUk9VUDoKKwkJCWEtPmVfaWQgPSBleHQyZnNfbGUzMl90b19jcHUoZS0+ZV9pZCk7CisJCQlocHRyICs9IHNpemVvZihleHQ0X2FjbF9lbnRyeSk7CisJCQlicmVhazsKKwkJY2FzZSBBQ0xfVVNFUl9PQko6CisJCWNhc2UgQUNMX0dST1VQX09CSjoKKwkJY2FzZSBBQ0xfTUFTSzoKKwkJY2FzZSBBQ0xfT1RIRVI6CisJCQlocHRyICs9IHNpemVvZihleHQ0X2FjbF9lbnRyeV9zaG9ydCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVyciA9IEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJKmZhY2wgPSBmOworCSpmYWNsX3N6ID0gZl9zejsKKwlyZXR1cm4gZXJyOworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmZik7CisJcmV0dXJuIGVycjsKK30KKyNlbmRpZiAvKiBUUkFOU0xBVEVfTElOVVhfQUNMUyAqLworCisvKgorICogZXh0Ml9maWxlX3QgY29udGFpbnMgYSBzdHJ1Y3QgaW5vZGUsIHNvIHdlIGNhbid0IGxlYXZlIGZpbGVzIG9wZW4uCisgKiBVc2UgdGhpcyBhcyBhIHByb3h5IGluc3RlYWQuCisgKi8KKyNkZWZpbmUgRlVTRTJGU19GSUxFX01BR0lDCSgweEVGNTNERUFGVUwpCitzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSB7CisJdW5zaWduZWQgbG9uZyBtYWdpYzsKKwlleHQyX2lub190IGlubzsKKwlpbnQgb3Blbl9mbGFnczsKK307CisKKy8qIE1haW4gcHJvZ3JhbSBjb250ZXh0ICovCisjZGVmaW5lIEZVU0UyRlNfTUFHSUMJCSgweEVGNTNERUFEVUwpCitzdHJ1Y3QgZnVzZTJmcyB7CisJdW5zaWduZWQgbG9uZyBtYWdpYzsKKwlleHQyX2ZpbHN5cyBmczsKKwlwdGhyZWFkX211dGV4X3QgYmZsOworCWNoYXIgKmRldmljZTsKKwlpbnQgcm87CisJaW50IGRlYnVnOworCWludCBub19kZWZhdWx0X29wdHM7CisJaW50IHBhbmljX29uX2Vycm9yOworCWludCBtaW5peGRmOworCWludCBhbGxvY19hbGxfYmxvY2tzOworCUZJTEUgKmVycl9mcDsKKwl1bnNpZ25lZCBpbnQgbmV4dF9nZW5lcmF0aW9uOworfTsKKworI2RlZmluZSBGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBwdHIsIG51bSkgZG8ge2lmICgocHRyKS0+bWFnaWMgIT0gKG51bSkpIFwKKwlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKChmcyksIDAsIEVYVDJfRVRfTUFHSUNfRVhUMl9GSUxFKTsgXAorfSB3aGlsZSAoMCkKKworI2RlZmluZSBGVVNFMkZTX0NIRUNLX0NPTlRFWFQocHRyKSBkbyB7aWYgKChwdHIpLT5tYWdpYyAhPSBGVVNFMkZTX01BR0lDKSBcCisJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihnbG9iYWxfZnMsIDAsIEVYVDJfRVRfQkFEX01BR0lDKTsgXAorfSB3aGlsZSAoMCkKKworc3RhdGljIGludCBfX3RyYW5zbGF0ZV9lcnJvcihleHQyX2ZpbHN5cyBmcywgZXJyY29kZV90IGVyciwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKTsKKyNkZWZpbmUgdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycikgX190cmFuc2xhdGVfZXJyb3IoKGZzKSwgKGVyciksIChpbm8pLCBcCisJCQlfX0ZJTEVfXywgX19MSU5FX18pCisKKy8qIGZvciBtYWNvc3ggKi8KKyNpZm5kZWYgV19PSworIyAgZGVmaW5lIFdfT0sgMgorI2VuZGlmCisKKyNpZm5kZWYgUl9PSworIyAgZGVmaW5lIFJfT0sgNAorI2VuZGlmCisKKyNkZWZpbmUgRVhUNF9FUE9DSF9CSVRTIDIKKyNkZWZpbmUgRVhUNF9FUE9DSF9NQVNLICgoMSA8PCBFWFQ0X0VQT0NIX0JJVFMpIC0gMSkKKyNkZWZpbmUgRVhUNF9OU0VDX01BU0sgICh+MFVMIDw8IEVYVDRfRVBPQ0hfQklUUykKKworLyoKKyAqIEV4dGVuZGVkIGZpZWxkcyB3aWxsIGZpdCBpbnRvIGFuIGlub2RlIGlmIHRoZSBmaWxlc3lzdGVtIHdhcyBmb3JtYXR0ZWQKKyAqIHdpdGggbGFyZ2UgaW5vZGVzICgtSSAyNTYgb3IgbGFyZ2VyKSBhbmQgdGhlcmUgYXJlIG5vdCBjdXJyZW50bHkgYW55IEVBcworICogY29uc3VtaW5nIGFsbCBvZiB0aGUgYXZhaWxhYmxlIHNwYWNlLiBGb3IgbmV3IGlub2RlcyB3ZSBhbHdheXMgcmVzZXJ2ZQorICogZW5vdWdoIHNwYWNlIGZvciB0aGUga2VybmVsJ3Mga25vd24gZXh0ZW5kZWQgZmllbGRzLCBidXQgZm9yIGlub2RlcworICogY3JlYXRlZCB3aXRoIGFuIG9sZCBrZXJuZWwgdGhpcyBtaWdodCBub3QgaGF2ZSBiZWVuIHRoZSBjYXNlLiBOb25lIG9mCisgKiB0aGUgZXh0ZW5kZWQgaW5vZGUgZmllbGRzIGlzIGNyaXRpY2FsIGZvciBjb3JyZWN0IGZpbGVzeXN0ZW0gb3BlcmF0aW9uLgorICogVGhpcyBtYWNybyBjaGVja3MgaWYgYSBjZXJ0YWluIGZpZWxkIGZpdHMgaW4gdGhlIGlub2RlLiBOb3RlIHRoYXQKKyAqIGlub2RlLXNpemUgPSBHT09EX09MRF9JTk9ERV9TSVpFICsgaV9leHRyYV9pc2l6ZQorICovCisjZGVmaW5lIEVYVDRfRklUU19JTl9JTk9ERShleHQ0X2lub2RlLCBmaWVsZCkJCVwKKwkoKG9mZnNldG9mKHR5cGVvZigqZXh0NF9pbm9kZSksIGZpZWxkKSArCVwKKwkgIHNpemVvZigoZXh0NF9pbm9kZSktPmZpZWxkKSkJCQlcCisJIDw9ICgoc2l6ZV90KSBFWFQyX0dPT0RfT0xEX0lOT0RFX1NJWkUgKwkJXAorCSAgICAoZXh0NF9pbm9kZSktPmlfZXh0cmFfaXNpemUpKQkJXAorCitzdGF0aWMgaW5saW5lIF9fdTMyIGV4dDRfZW5jb2RlX2V4dHJhX3RpbWUoY29uc3Qgc3RydWN0IHRpbWVzcGVjICp0aW1lKQoreworCV9fdTMyIGV4dHJhID0gc2l6ZW9mKHRpbWUtPnR2X3NlYykgPiA0ID8KKwkJCSgodGltZS0+dHZfc2VjIC0gKF9fczMyKXRpbWUtPnR2X3NlYykgPj4gMzIpICYKKwkJCUVYVDRfRVBPQ0hfTUFTSyA6IDA7CisJcmV0dXJuIGV4dHJhIHwgKHRpbWUtPnR2X25zZWMgPDwgRVhUNF9FUE9DSF9CSVRTKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGV4dDRfZGVjb2RlX2V4dHJhX3RpbWUoc3RydWN0IHRpbWVzcGVjICp0aW1lLCBfX3UzMiBleHRyYSkKK3sKKwlpZiAoc2l6ZW9mKHRpbWUtPnR2X3NlYykgPiA0ICYmIChleHRyYSAmIEVYVDRfRVBPQ0hfTUFTSykpIHsKKwkJX191NjQgZXh0cmFfYml0cyA9IGV4dHJhICYgRVhUNF9FUE9DSF9NQVNLOworCQkvKgorCQkgKiBQcmlvciB0byBrZXJuZWwgMy4xND8sIHdlIGhhZCBhIGJyb2tlbiBkZWNvZGUgZnVuY3Rpb24sCisJCSAqIHdoZXJlaW4gd2UgZWZmZWN0aXZlbHkgZGlkIHRoaXM6CisJCSAqIGlmIChleHRyYV9iaXRzID09IDMpCisJCSAqICAgICBleHRyYV9iaXRzID0gMDsKKwkJICovCisJCXRpbWUtPnR2X3NlYyArPSBleHRyYV9iaXRzIDw8IDMyOworCX0KKwl0aW1lLT50dl9uc2VjID0gKChleHRyYSkgJiBFWFQ0X05TRUNfTUFTSykgPj4gRVhUNF9FUE9DSF9CSVRTOworfQorCisjZGVmaW5lIEVYVDRfSU5PREVfU0VUX1hUSU1FKHh0aW1lLCB0aW1lc3BlYywgcmF3X2lub2RlKQkJICAgICAgIFwKK2RvIHsJCQkJCQkJCQkgICAgICAgXAorCShyYXdfaW5vZGUpLT54dGltZSA9ICh0aW1lc3BlYyktPnR2X3NlYzsJCQkgICAgICAgXAorCWlmIChFWFQ0X0ZJVFNfSU5fSU5PREUocmF3X2lub2RlLCB4dGltZSAjIyBfZXh0cmEpKQkJICAgICAgIFwKKwkJKHJhd19pbm9kZSktPnh0aW1lICMjIF9leHRyYSA9CQkJCSAgICAgICBcCisJCQkJZXh0NF9lbmNvZGVfZXh0cmFfdGltZSh0aW1lc3BlYyk7CSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEVYVDRfRUlOT0RFX1NFVF9YVElNRSh4dGltZSwgdGltZXNwZWMsIHJhd19pbm9kZSkJCSAgICAgICBcCitkbyB7CQkJCQkJCQkJICAgICAgIFwKKwlpZiAoRVhUNF9GSVRTX0lOX0lOT0RFKHJhd19pbm9kZSwgeHRpbWUpKQkJCSAgICAgICBcCisJCShyYXdfaW5vZGUpLT54dGltZSA9ICh0aW1lc3BlYyktPnR2X3NlYzsJCSAgICAgICBcCisJaWYgKEVYVDRfRklUU19JTl9JTk9ERShyYXdfaW5vZGUsIHh0aW1lICMjIF9leHRyYSkpCQkgICAgICAgXAorCQkocmF3X2lub2RlKS0+eHRpbWUgIyMgX2V4dHJhID0JCQkJICAgICAgIFwKKwkJCQlleHQ0X2VuY29kZV9leHRyYV90aW1lKHRpbWVzcGVjKTsJICAgICAgIFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgRVhUNF9JTk9ERV9HRVRfWFRJTUUoeHRpbWUsIHRpbWVzcGVjLCByYXdfaW5vZGUpCQkgICAgICAgXAorZG8gewkJCQkJCQkJCSAgICAgICBcCisJKHRpbWVzcGVjKS0+dHZfc2VjID0gKHNpZ25lZCkoKHJhd19pbm9kZSktPnh0aW1lKTsJCSAgICAgICBcCisJaWYgKEVYVDRfRklUU19JTl9JTk9ERShyYXdfaW5vZGUsIHh0aW1lICMjIF9leHRyYSkpCQkgICAgICAgXAorCQlleHQ0X2RlY29kZV9leHRyYV90aW1lKCh0aW1lc3BlYyksCQkJICAgICAgIFwKKwkJCQkgICAgICAgKHJhd19pbm9kZSktPnh0aW1lICMjIF9leHRyYSk7CSAgICAgICBcCisJZWxzZQkJCQkJCQkJICAgICAgIFwKKwkJKHRpbWVzcGVjKS0+dHZfbnNlYyA9IDA7CQkJCSAgICAgICBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIEVYVDRfRUlOT0RFX0dFVF9YVElNRSh4dGltZSwgdGltZXNwZWMsIHJhd19pbm9kZSkJCSAgICAgICBcCitkbyB7CQkJCQkJCQkJICAgICAgIFwKKwlpZiAoRVhUNF9GSVRTX0lOX0lOT0RFKHJhd19pbm9kZSwgeHRpbWUpKQkJCSAgICAgICBcCisJCSh0aW1lc3BlYyktPnR2X3NlYyA9CQkJCQkgICAgICAgXAorCQkJKHNpZ25lZCkoKHJhd19pbm9kZSktPnh0aW1lKTsJCQkgICAgICAgXAorCWlmIChFWFQ0X0ZJVFNfSU5fSU5PREUocmF3X2lub2RlLCB4dGltZSAjIyBfZXh0cmEpKQkJICAgICAgIFwKKwkJZXh0NF9kZWNvZGVfZXh0cmFfdGltZSgodGltZXNwZWMpLAkJCSAgICAgICBcCisJCQkJICAgICAgIHJhd19pbm9kZS0+eHRpbWUgIyMgX2V4dHJhKTsJICAgICAgIFwKKwllbHNlCQkJCQkJCQkgICAgICAgXAorCQkodGltZXNwZWMpLT50dl9uc2VjID0gMDsJCQkJICAgICAgIFwKK30gd2hpbGUgKDApCisKK3N0YXRpYyB2b2lkIGdldF9ub3coc3RydWN0IHRpbWVzcGVjICpub3cpCit7CisjaWZkZWYgQ0xPQ0tfUkVBTFRJTUUKKwlpZiAoIWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsIG5vdykpCisJCXJldHVybjsKKyNlbmRpZgorCisJbm93LT50dl9zZWMgPSB0aW1lKE5VTEwpOworCW5vdy0+dHZfbnNlYyA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIGluY3JlbWVudF92ZXJzaW9uKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSkKK3sKKwlfX3U2NCB2ZXI7CisKKwl2ZXIgPSBpbm9kZS0+b3NkMS5saW51eDEubF9pX3ZlcnNpb247CisJaWYgKEVYVDRfRklUU19JTl9JTk9ERShpbm9kZSwgaV92ZXJzaW9uX2hpKSkKKwkJdmVyIHw9IChfX3U2NClpbm9kZS0+aV92ZXJzaW9uX2hpIDw8IDMyOworCXZlcisrOworCWlub2RlLT5vc2QxLmxpbnV4MS5sX2lfdmVyc2lvbiA9IHZlcjsKKwlpZiAoRVhUNF9GSVRTX0lOX0lOT0RFKGlub2RlLCBpX3ZlcnNpb25faGkpKQorCQlpbm9kZS0+aV92ZXJzaW9uX2hpID0gdmVyID4+IDMyOworfQorCitzdGF0aWMgdm9pZCBpbml0X3RpbWVzKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlICppbm9kZSkKK3sKKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCisJZ2V0X25vdygmbm93KTsKKwlFWFQ0X0lOT0RFX1NFVF9YVElNRShpX2F0aW1lLCAmbm93LCBpbm9kZSk7CisJRVhUNF9JTk9ERV9TRVRfWFRJTUUoaV9jdGltZSwgJm5vdywgaW5vZGUpOworCUVYVDRfSU5PREVfU0VUX1hUSU1FKGlfbXRpbWUsICZub3csIGlub2RlKTsKKwlFWFQ0X0VJTk9ERV9TRVRfWFRJTUUoaV9jcnRpbWUsICZub3csIGlub2RlKTsKKwlpbmNyZW1lbnRfdmVyc2lvbihpbm9kZSk7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX2N0aW1lKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICpwaW5vZGUpCit7CisJZXJyY29kZV90IGVycjsKKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCisJZ2V0X25vdygmbm93KTsKKworCS8qIElmIHVzZXIgYWxyZWFkeSBoYXMgYSBpbm9kZSBidWZmZXIsIGp1c3QgdXBkYXRlIHRoYXQgKi8KKwlpZiAocGlub2RlKSB7CisJCWluY3JlbWVudF92ZXJzaW9uKHBpbm9kZSk7CisJCUVYVDRfSU5PREVfU0VUX1hUSU1FKGlfY3RpbWUsICZub3csIHBpbm9kZSk7CisJCXJldHVybiAwOworCX0KKworCS8qIE90aGVyd2lzZSB3ZSBoYXZlIHRvIHJlYWQtbW9kaWZ5LXdyaXRlIHRoZSBpbm9kZSAqLworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCisJaW5jcmVtZW50X3ZlcnNpb24oJmlub2RlKTsKKwlFWFQ0X0lOT0RFX1NFVF9YVElNRShpX2N0aW1lLCAmbm93LCAmaW5vZGUpOworCisJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHVwZGF0ZV9hdGltZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8pCit7CisJZXJyY29kZV90IGVycjsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZSwgKnBpbm9kZTsKKwlzdHJ1Y3QgdGltZXNwZWMgYXRpbWUsIG10aW1lLCBub3c7CisKKwlpZiAoIShmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpKQorCQlyZXR1cm4gMDsKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKworCXBpbm9kZSA9ICZpbm9kZTsKKwlFWFQ0X0lOT0RFX0dFVF9YVElNRShpX2F0aW1lLCAmYXRpbWUsIHBpbm9kZSk7CisJRVhUNF9JTk9ERV9HRVRfWFRJTUUoaV9tdGltZSwgJm10aW1lLCBwaW5vZGUpOworCWdldF9ub3coJm5vdyk7CisJLyoKKwkgKiBJZiBhdGltZSBpcyBuZXdlciB0aGFuIG10aW1lIGFuZCBhdGltZSBoYXNuJ3QgYmVlbiB1cGRhdGVkIGluIHRoaXJ0eQorCSAqIHNlY29uZHMsIHNraXAgdGhlIGF0aW1lIHVwZGF0ZS4gIFNhbWUgaWRlYSBhcyBMaW51eCAicmVsYXRpbWUiLgorCSAqLworCWlmIChhdGltZS50dl9zZWMgPj0gbXRpbWUudHZfc2VjICYmIGF0aW1lLnR2X3NlYyA+PSBub3cudHZfc2VjIC0gMzApCisJCXJldHVybiAwOworCUVYVDRfSU5PREVfU0VUX1hUSU1FKGlfYXRpbWUsICZub3csICZpbm9kZSk7CisKKwllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgdXBkYXRlX210aW1lKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlICpwaW5vZGUpCit7CisJZXJyY29kZV90IGVycjsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZTsKKwlzdHJ1Y3QgdGltZXNwZWMgbm93OworCisJaWYgKHBpbm9kZSkgeworCQlnZXRfbm93KCZub3cpOworCQlFWFQ0X0lOT0RFX1NFVF9YVElNRShpX210aW1lLCAmbm93LCBwaW5vZGUpOworCQlFWFQ0X0lOT0RFX1NFVF9YVElNRShpX2N0aW1lLCAmbm93LCBwaW5vZGUpOworCQlpbmNyZW1lbnRfdmVyc2lvbihwaW5vZGUpOworCQlyZXR1cm4gMDsKKwl9CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKworCWdldF9ub3coJm5vdyk7CisJRVhUNF9JTk9ERV9TRVRfWFRJTUUoaV9tdGltZSwgJm5vdywgJmlub2RlKTsKKwlFWFQ0X0lOT0RFX1NFVF9YVElNRShpX2N0aW1lLCAmbm93LCAmaW5vZGUpOworCWluY3JlbWVudF92ZXJzaW9uKCZpbm9kZSk7CisKKwllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXh0Ml9maWxlX3R5cGUodW5zaWduZWQgaW50IG1vZGUpCit7CisJaWYgKExJTlVYX1NfSVNSRUcobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX1JFR19GSUxFOworCisJaWYgKExJTlVYX1NfSVNESVIobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX0RJUjsKKworCWlmIChMSU5VWF9TX0lTQ0hSKG1vZGUpKQorCQlyZXR1cm4gRVhUMl9GVF9DSFJERVY7CisKKwlpZiAoTElOVVhfU19JU0JMSyhtb2RlKSkKKwkJcmV0dXJuIEVYVDJfRlRfQkxLREVWOworCisJaWYgKExJTlVYX1NfSVNMTksobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX1NZTUxJTks7CisKKwlpZiAoTElOVVhfU19JU0ZJRk8obW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX0ZJRk87CisKKwlpZiAoTElOVVhfU19JU1NPQ0sobW9kZSkpCisJCXJldHVybiBFWFQyX0ZUX1NPQ0s7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBmc19jYW5fYWxsb2NhdGUoc3RydWN0IGZ1c2UyZnMgKmZmLCBibGs2NF90IG51bSkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGZmLT5mczsKKwlibGs2NF90IHJlc2VydmVkOworCisJZGJnX3ByaW50ZigiJXM6IEFza2luZyBmb3IgJWxsdTsgYWxsb2NfYWxsPSVkIHRvdGFsPSVsbHUgZnJlZT0lbGx1ICIKKwkJICAgInJzdmQ9JWxsdVxuIiwgX19mdW5jX18sIG51bSwgZmYtPmFsbG9jX2FsbF9ibG9ja3MsCisJCSAgIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSwKKwkJICAgZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KGZzLT5zdXBlciksCisJCSAgIGV4dDJmc19yX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKTsKKwlpZiAobnVtID4gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCWlmIChmZi0+YWxsb2NfYWxsX2Jsb2NrcykKKwkJcmV0dXJuIDE7CisKKwkvKgorCSAqIERpZmZlcmVudCBtZWFuaW5nIGZvciByX2Jsb2NrcyAtLSBsaWJleHQyZnMgaGFzIGJ1Z3Mgd2hlcmUgdGhlIEZTCisJICogY2FuIGdldCBjb3JydXB0ZWQgaWYgaXQgdG90YWxseSBydW5zIG91dCBvZiBibG9ja3MuICBBdm9pZCB0aGlzCisJICogYnkgcmVmdXNpbmcgdG8gYWxsb2NhdGUgYW55IG9mIHRoZSByZXNlcnZlIGJsb2NrcyB0byBhbnlib2R5LgorCSAqLworCXJlc2VydmVkID0gZXh0MmZzX3JfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJaWYgKHJlc2VydmVkID09IDApCisJCXJlc2VydmVkID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpIC8gMTA7CisJcmV0dXJuIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpID4gcmVzZXJ2ZWQgKyBudW07Cit9CisKK3N0YXRpYyBpbnQgZnNfd3JpdGVhYmxlKGV4dDJfZmlsc3lzIGZzKQoreworCXJldHVybiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSAmJiAoZnMtPnN1cGVyLT5zX2Vycm9yX2NvdW50ID09IDApOworfQorCitzdGF0aWMgaW50IGNoZWNrX2ludW1fYWNjZXNzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywgbW9kZV90IG1hc2spCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwltb2RlX3QgcGVybXM7CisJZXJyY29kZV90IGVycjsKKworCS8qIG5vIHdyaXRpbmcgdG8gcmVhZC1vbmx5IG9yIGJyb2tlbiBmcyAqLworCWlmICgobWFzayAmIFdfT0spICYmICFmc193cml0ZWFibGUoZnMpKQorCQlyZXR1cm4gLUVST0ZTOworCisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJcGVybXMgPSBpbm9kZS5pX21vZGUgJiAwNzc3OworCisJZGJnX3ByaW50ZigiYWNjZXNzIGlubz0lZCBtYXNrPWUlcyVzJXMgcGVybXM9MCVvIGZ1aWQ9JWQgZmdpZD0lZCAiCisJCSAgICJ1aWQ9JWQgZ2lkPSVkXG4iLCBpbm8sCisJCSAgIChtYXNrICYgUl9PSyA/ICJyIiA6ICIiKSwgKG1hc2sgJiBXX09LID8gInciIDogIiIpLAorCQkgICAobWFzayAmIFhfT0sgPyAieCIgOiAiIiksIHBlcm1zLCBpbm9kZS5pX3VpZCwgaW5vZGUuaV9naWQsCisJCSAgIGN0eHQtPnVpZCwgY3R4dC0+Z2lkKTsKKworCS8qIGV4aXN0ZW5jZSBjaGVjayAqLworCWlmIChtYXNrID09IDApCisJCXJldHVybiAwOworCisJLyogaXMgaW1tdXRhYmxlPyAqLworCWlmICgobWFzayAmIFdfT0spICYmCisJICAgIChpbm9kZS5pX2ZsYWdzICYgRVhUMl9JTU1VVEFCTEVfRkwpKQorCQlyZXR1cm4gLUVBQ0NFUzsKKworCS8qIEZpZ3VyZSBvdXQgd2hhdCByb290J3MgYWxsb3dlZCB0byBkbyAqLworCWlmIChjdHh0LT51aWQgPT0gMCkgeworCQkvKiBOb24tZmlsZSBhY2Nlc3MgYWx3YXlzIG9rICovCisJCWlmICghTElOVVhfU19JU1JFRyhpbm9kZS5pX21vZGUpKQorCQkJcmV0dXJuIDA7CisKKwkJLyogUi9XIGFjY2VzcyB0byBhIGZpbGUgYWx3YXlzIG9rICovCisJCWlmICghKG1hc2sgJiBYX09LKSkKKwkJCXJldHVybiAwOworCisJCS8qIFggYWNjZXNzIHRvIGEgZmlsZSBvayBpZiBhIHVzZXIvZ3JvdXAvb3RoZXIgY2FuIFggKi8KKwkJaWYgKHBlcm1zICYgMDExMSkKKwkJCXJldHVybiAwOworCisJCS8qIFRyeWluZyB0byBleGVjdXRlIGEgZmlsZSB0aGF0J3Mgbm90IGV4ZWN1dGFibGUuIEJaWlQhICovCisJCXJldHVybiAtRUFDQ0VTOworCX0KKworCS8qIGFsbG93IG93bmVyLCBpZiBwZXJtcyBtYXRjaCAqLworCWlmIChpbm9kZS5pX3VpZCA9PSBjdHh0LT51aWQpIHsKKwkJaWYgKChtYXNrICYgKHBlcm1zID4+IDYpKSA9PSBtYXNrKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiAtRUFDQ0VTOworCX0KKworCS8qIGFsbG93IGdyb3VwLCBpZiBwZXJtcyBtYXRjaCAqLworCWlmIChpbm9kZS5pX2dpZCA9PSBjdHh0LT5naWQpIHsKKwkJaWYgKChtYXNrICYgKHBlcm1zID4+IDMpKSA9PSBtYXNrKQorCQkJcmV0dXJuIDA7CisJCXJldHVybiAtRUFDQ0VTOworCX0KKworCS8qIG90aGVyd2lzZSBjaGVjayBvdGhlciAqLworCWlmICgobWFzayAmIHBlcm1zKSA9PSBtYXNrKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gLUVBQ0NFUzsKK30KKworc3RhdGljIHZvaWQgb3BfZGVzdHJveSh2b2lkICpwIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgZXJyOworCisJaWYgKGZmLT5tYWdpYyAhPSBGVVNFMkZTX01BR0lDKSB7CisJCXRyYW5zbGF0ZV9lcnJvcihnbG9iYWxfZnMsIDAsIEVYVDJfRVRfQkFEX01BR0lDKTsKKwkJcmV0dXJuOworCX0KKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogZGV2PSVzXG4iLCBfX2Z1bmNfXywgZnMtPmRldmljZV9uYW1lKTsKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKSB7CisJCWZzLT5zdXBlci0+c19zdGF0ZSB8PSBFWFQyX1ZBTElEX0ZTOworCQlpZiAoZnMtPnN1cGVyLT5zX2Vycm9yX2NvdW50KQorCQkJZnMtPnN1cGVyLT5zX3N0YXRlIHw9IEVYVDJfRVJST1JfRlM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJZXJyID0gZXh0MmZzX3NldF9nZHRfY3N1bShmcyk7CisJCWlmIChlcnIpCisJCQl0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisKKwkJZXJyID0gZXh0MmZzX2ZsdXNoMihmcywgMCk7CisJCWlmIChlcnIpCisJCQl0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJfQorfQorCitzdGF0aWMgdm9pZCAqb3BfaW5pdChzdHJ1Y3QgZnVzZV9jb25uX2luZm8gKmNvbm4pCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJZXJyY29kZV90IGVycjsKKworCWlmIChmZi0+bWFnaWMgIT0gRlVTRTJGU19NQUdJQykgeworCQl0cmFuc2xhdGVfZXJyb3IoZ2xvYmFsX2ZzLCAwLCBFWFQyX0VUX0JBRF9NQUdJQyk7CisJCXJldHVybiBOVUxMOworCX0KKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogZGV2PSVzXG4iLCBfX2Z1bmNfXywgZnMtPmRldmljZV9uYW1lKTsKKyNpZmRlZiBGVVNFX0NBUF9JT0NUTF9ESVIKKwljb25uLT53YW50IHw9IEZVU0VfQ0FQX0lPQ1RMX0RJUjsKKyNlbmRpZgorCWlmIChmcy0+ZmxhZ3MgJiBFWFQyX0ZMQUdfUlcpIHsKKwkJZnMtPnN1cGVyLT5zX21udF9jb3VudCsrOworCQlmcy0+c3VwZXItPnNfbXRpbWUgPSB0aW1lKE5VTEwpOworCQlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJZXJyID0gZXh0MmZzX2ZsdXNoMihmcywgMCk7CisJCWlmIChlcnIpCisJCQl0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJfQorCXJldHVybiBmZjsKK30KKworc3RhdGljIGJsa2NudF90IGJsb2Nrc19mcm9tX2lub2RlKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgKmlub2RlKQoreworCWJsa2NudF90IGI7CisKKwliID0gaW5vZGUtPmlfYmxvY2tzOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKGZzLT5zdXBlcikpCisJCWIgKz0gKChsb25nIGxvbmcpIGlub2RlLT5vc2QyLmxpbnV4Mi5sX2lfYmxvY2tzX2hpKSA8PCAzMjsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2h1Z2VfZmlsZShmcy0+c3VwZXIpIHx8CisJICAgICEoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0hVR0VfRklMRV9GTCkpCisJCWIgKj0gZnMtPmJsb2Nrc2l6ZSAvIDUxMjsKKwliICo9IEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKTsKKworCXJldHVybiBiOworfQorCitzdGF0aWMgaW50IHN0YXRfaW5vZGUoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZTsKKwlkZXZfdCBmYWtlZGV2ID0gMDsKKwllcnJjb2RlX3QgZXJyOworCWludCByZXQgPSAwOworCXN0cnVjdCB0aW1lc3BlYyB0djsKKworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCisJbWVtY3B5KCZmYWtlZGV2LCBmcy0+c3VwZXItPnNfdXVpZCwgc2l6ZW9mKGZha2VkZXYpKTsKKwlzdGF0YnVmLT5zdF9kZXYgPSBmYWtlZGV2OworCXN0YXRidWYtPnN0X2lubyA9IGlubzsKKwlzdGF0YnVmLT5zdF9tb2RlID0gaW5vZGUuaV9tb2RlOworCXN0YXRidWYtPnN0X25saW5rID0gaW5vZGUuaV9saW5rc19jb3VudDsKKwlzdGF0YnVmLT5zdF91aWQgPSBpbm9kZS5pX3VpZDsKKwlzdGF0YnVmLT5zdF9naWQgPSBpbm9kZS5pX2dpZDsKKwlzdGF0YnVmLT5zdF9zaXplID0gRVhUMl9JX1NJWkUoJmlub2RlKTsKKwlzdGF0YnVmLT5zdF9ibGtzaXplID0gZnMtPmJsb2Nrc2l6ZTsKKwlzdGF0YnVmLT5zdF9ibG9ja3MgPSBibG9ja3NfZnJvbV9pbm9kZShmcywgJmlub2RlKTsKKwlFWFQ0X0lOT0RFX0dFVF9YVElNRShpX2F0aW1lLCAmdHYsICZpbm9kZSk7CisJc3RhdGJ1Zi0+c3RfYXRpbWUgPSB0di50dl9zZWM7CisJRVhUNF9JTk9ERV9HRVRfWFRJTUUoaV9tdGltZSwgJnR2LCAmaW5vZGUpOworCXN0YXRidWYtPnN0X210aW1lID0gdHYudHZfc2VjOworCUVYVDRfSU5PREVfR0VUX1hUSU1FKGlfY3RpbWUsICZ0diwgJmlub2RlKTsKKwlzdGF0YnVmLT5zdF9jdGltZSA9IHR2LnR2X3NlYzsKKwlpZiAoTElOVVhfU19JU0NIUihpbm9kZS5pX21vZGUpIHx8CisJICAgIExJTlVYX1NfSVNCTEsoaW5vZGUuaV9tb2RlKSkgeworCQlpZiAoaW5vZGUuaV9ibG9ja1swXSkKKwkJCXN0YXRidWYtPnN0X3JkZXYgPSBpbm9kZS5pX2Jsb2NrWzBdOworCQllbHNlCisJCQlzdGF0YnVmLT5zdF9yZGV2ID0gaW5vZGUuaV9ibG9ja1sxXTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX2dldGF0dHIoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0YXRidWYpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJZXh0Ml9pbm9fdCBpbm87CisJZXJyY29kZV90IGVycjsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJZGJnX3ByaW50ZigiJXM6IHBhdGg9JXNcbiIsIF9fZnVuY19fLCBwYXRoKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlyZXQgPSBzdGF0X2lub2RlKGZzLCBpbm8sIHN0YXRidWYpOworb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX3JlYWRsaW5rKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgZXJyOworCWV4dDJfaW5vX3QgaW5vOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCXVuc2lnbmVkIGludCBnb3Q7CisJZXh0Ml9maWxlX3QgZmlsZTsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJZGJnX3ByaW50ZigiJXM6IHBhdGg9JXNcbiIsIF9fZnVuY19fLCBwYXRoKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVyciB8fCBpbm8gPT0gMCkgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKCFMSU5VWF9TX0lTTE5LKGlub2RlLmlfbW9kZSkpIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJbGVuLS07CisJaWYgKGlub2RlLmlfc2l6ZSA8IGxlbikKKwkJbGVuID0gaW5vZGUuaV9zaXplOworCWlmIChleHQyZnNfaW5vZGVfZGF0YV9ibG9ja3MyKGZzLCAmaW5vZGUpIHx8CisJICAgIChpbm9kZS5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkpIHsKKwkJLyogYmlnL2lubGluZSBzeW1saW5rICovCisKKwkJZXJyID0gZXh0MmZzX2ZpbGVfb3BlbihmcywgaW5vLCAwLCAmZmlsZSk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQkJZ290byBvdXQ7CisJCX0KKworCQllcnIgPSBleHQyZnNfZmlsZV9yZWFkKGZpbGUsIGJ1ZiwgbGVuLCAmZ290KTsKKwkJaWYgKGVyciB8fCBnb3QgIT0gbGVuKSB7CisJCQlleHQyZnNfZmlsZV9jbG9zZShmaWxlKTsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKK291dDI6CisJCWVyciA9IGV4dDJmc19maWxlX2Nsb3NlKGZpbGUpOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQkJZ290byBvdXQ7CisJCX0KKwl9IGVsc2UKKwkJLyogaW5saW5lIHN5bWxpbmsgKi8KKwkJbWVtY3B5KGJ1ZiwgKGNoYXIgKilpbm9kZS5pX2Jsb2NrLCBsZW4pOworCWJ1ZltsZW5dID0gMDsKKworCWlmIChmc193cml0ZWFibGUoZnMpKSB7CisJCXJldCA9IHVwZGF0ZV9hdGltZShmcywgaW5vKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gb3V0OworCX0KKworb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX21rbm9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJZXh0Ml9pbm9fdCBwYXJlbnQsIGNoaWxkOworCWNoYXIgKnRlbXBfcGF0aCA9IHN0cmR1cChwYXRoKTsKKwllcnJjb2RlX3QgZXJyOworCWNoYXIgKm5vZGVfbmFtZSwgYTsKKwlpbnQgZmlsZXR5cGU7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCWRiZ19wcmludGYoIiVzOiBwYXRoPSVzIG1vZGU9MCVvIGRldj0weCV4XG4iLCBfX2Z1bmNfXywgcGF0aCwgbW9kZSwKKwkJICAgKHVuc2lnbmVkIGludClkZXYpOworCWlmICghdGVtcF9wYXRoKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlub2RlX25hbWUgPSBzdHJyY2hyKHRlbXBfcGF0aCwgJy8nKTsKKwlpZiAoIW5vZGVfbmFtZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJbm9kZV9uYW1lKys7CisJYSA9ICpub2RlX25hbWU7CisJKm5vZGVfbmFtZSA9IDA7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWlmICghZnNfY2FuX2FsbG9jYXRlKGZmLCAyKSkgeworCQlyZXQgPSAtRU5PU1BDOworCQlnb3RvIG91dDI7CisJfQorCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCB0ZW1wX3BhdGgsCisJCQkgICAmcGFyZW50KTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBwYXJlbnQsIFdfT0spOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCSpub2RlX25hbWUgPSBhOworCisJaWYgKExJTlVYX1NfSVNDSFIobW9kZSkpCisJCWZpbGV0eXBlID0gRVhUMl9GVF9DSFJERVY7CisJZWxzZSBpZiAoTElOVVhfU19JU0JMSyhtb2RlKSkKKwkJZmlsZXR5cGUgPSBFWFQyX0ZUX0JMS0RFVjsKKwllbHNlIGlmIChMSU5VWF9TX0lTRklGTyhtb2RlKSkKKwkJZmlsZXR5cGUgPSBFWFQyX0ZUX0ZJRk87CisJZWxzZSBpZiAoTElOVVhfU19JU1NPQ0sobW9kZSkpCisJCWZpbGV0eXBlID0gRVhUMl9GVF9TT0NLOworCWVsc2UgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDI7CisJfQorCisJZXJyID0gZXh0MmZzX25ld19pbm9kZShmcywgcGFyZW50LCBtb2RlLCAwLCAmY2hpbGQpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZGJnX3ByaW50ZigiJXM6IGNyZWF0ZSBpbm89JWQvbmFtZT0lcyBpbiBkaXI9JWRcbiIsIF9fZnVuY19fLCBjaGlsZCwKKwkJICAgbm9kZV9uYW1lLCBwYXJlbnQpOworCWVyciA9IGV4dDJmc19saW5rKGZzLCBwYXJlbnQsIG5vZGVfbmFtZSwgY2hpbGQsIGZpbGV0eXBlKTsKKwlpZiAoZXJyID09IEVYVDJfRVRfRElSX05PX1NQQUNFKSB7CisJCWVyciA9IGV4dDJmc19leHBhbmRfZGlyKGZzLCBwYXJlbnQpOworCQlpZiAoZXJyKSB7CisJCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHBhcmVudCwgZXJyKTsKKwkJCWdvdG8gb3V0MjsKKwkJfQorCisJCWVyciA9IGV4dDJmc19saW5rKGZzLCBwYXJlbnQsIG5vZGVfbmFtZSwgY2hpbGQsCisJCQkJICAgICBmaWxldHlwZSk7CisJfQorCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBwYXJlbnQsIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlyZXQgPSB1cGRhdGVfbXRpbWUoZnMsIHBhcmVudCwgTlVMTCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQyOworCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJaW5vZGUuaV9tb2RlID0gbW9kZTsKKworCWlmIChkZXYgJiB+MHhGRkZGKQorCQlpbm9kZS5pX2Jsb2NrWzFdID0gZGV2OworCWVsc2UKKwkJaW5vZGUuaV9ibG9ja1swXSA9IGRldjsKKwlpbm9kZS5pX2xpbmtzX2NvdW50ID0gMTsKKwlpbm9kZS5pX2V4dHJhX2lzaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2lub2RlX2xhcmdlKSAtCisJCUVYVDJfR09PRF9PTERfSU5PREVfU0laRTsKKwlpbm9kZS5pX3VpZCA9IGN0eHQtPnVpZDsKKwlpbm9kZS5pX2dpZCA9IGN0eHQtPmdpZDsKKworCWVyciA9IGV4dDJmc193cml0ZV9uZXdfaW5vZGUoZnMsIGNoaWxkLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCWlub2RlLmlfZ2VuZXJhdGlvbiA9IGZmLT5uZXh0X2dlbmVyYXRpb24rKzsKKwlpbml0X3RpbWVzKCZpbm9kZSk7CisJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGNoaWxkLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGNoaWxkLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgY2hpbGQsIDEsIDApOworCitvdXQyOgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKK291dDoKKwlmcmVlKHRlbXBfcGF0aCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvcF9ta2Rpcihjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwlleHQyX2lub190IHBhcmVudCwgY2hpbGQ7CisJY2hhciAqdGVtcF9wYXRoID0gc3RyZHVwKHBhdGgpOworCWVycmNvZGVfdCBlcnI7CisJY2hhciAqbm9kZV9uYW1lLCBhOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCWNoYXIgKmJsb2NrOworCWJsazY0X3QgYmxrOworCWludCByZXQgPSAwOworCW1vZGVfdCBwYXJlbnRfc2dpZDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJZGJnX3ByaW50ZigiJXM6IHBhdGg9JXMgbW9kZT0wJW9cbiIsIF9fZnVuY19fLCBwYXRoLCBtb2RlKTsKKwlpZiAoIXRlbXBfcGF0aCkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJbm9kZV9uYW1lID0gc3RycmNocih0ZW1wX3BhdGgsICcvJyk7CisJaWYgKCFub2RlX25hbWUpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCW5vZGVfbmFtZSsrOworCWEgPSAqbm9kZV9uYW1lOworCSpub2RlX25hbWUgPSAwOworCisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlpZiAoIWZzX2Nhbl9hbGxvY2F0ZShmZiwgMSkpIHsKKwkJcmV0ID0gLUVOT1NQQzsKKwkJZ290byBvdXQyOworCX0KKworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgdGVtcF9wYXRoLAorCQkJICAgJnBhcmVudCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlyZXQgPSBjaGVja19pbnVtX2FjY2VzcyhmcywgcGFyZW50LCBXX09LKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKKwkvKiBJcyB0aGUgcGFyZW50IGRpciBzZ2lkPyAqLworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIHBhcmVudCwgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHBhcmVudCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKwlwYXJlbnRfc2dpZCA9IGlub2RlLmlfbW9kZSAmIFNfSVNHSUQ7CisKKwkqbm9kZV9uYW1lID0gYTsKKworCWVyciA9IGV4dDJmc19ta2RpcihmcywgcGFyZW50LCAwLCBub2RlX25hbWUpOworCWlmIChlcnIgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJZXJyID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIHBhcmVudCk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgcGFyZW50LCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKKwkJZXJyID0gZXh0MmZzX21rZGlyKGZzLCBwYXJlbnQsIDAsIG5vZGVfbmFtZSk7CisJfQorCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBwYXJlbnQsIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlyZXQgPSB1cGRhdGVfbXRpbWUoZnMsIHBhcmVudCwgTlVMTCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQyOworCisJLyogU3RpbGwgaGF2ZSB0byB1cGRhdGUgdGhlIHVpZC9naWQgb2YgdGhlIGRpciAqLworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgdGVtcF9wYXRoLAorCQkJICAgJmNoaWxkKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKwlkYmdfcHJpbnRmKCIlczogY3JlYXRlZCBpbm89JWQvcGF0aD0lcyBpbiBkaXI9JWRcbiIsIF9fZnVuY19fLCBjaGlsZCwKKwkJICAgbm9kZV9uYW1lLCBwYXJlbnQpOworCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgY2hpbGQsIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCWlub2RlLmlfdWlkID0gY3R4dC0+dWlkOworCWlub2RlLmlfZ2lkID0gY3R4dC0+Z2lkOworCWlub2RlLmlfbW9kZSA9IExJTlVYX1NfSUZESVIgfCAobW9kZSAmIH4oU19JU1VJRCB8IGZzLT51bWFzaykpIHwKKwkJICAgICAgIHBhcmVudF9zZ2lkOworCWlub2RlLmlfZ2VuZXJhdGlvbiA9IGZmLT5uZXh0X2dlbmVyYXRpb24rKzsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBjaGlsZCwgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCS8qIFJld3JpdGUgdGhlIGRpcmVjdG9yeSBibG9jayBjaGVja3N1bSwgaGF2aW5nIHNldCBpX2dlbmVyYXRpb24gKi8KKwlpZiAoKGlub2RlLmlfZmxhZ3MgJiBFWFQ0X0lOTElORV9EQVRBX0ZMKSB8fAorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJZ290byBvdXQyOworCWVyciA9IGV4dDJmc19uZXdfZGlyX2Jsb2NrKGZzLCBjaGlsZCwgcGFyZW50LCAmYmxvY2spOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKwllcnIgPSBleHQyZnNfYm1hcDIoZnMsIGNoaWxkLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsIE5VTEwsIDAsIDAsCisJCQkgICBOVUxMLCAmYmxrKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgY2hpbGQsIGVycik7CisJCWdvdG8gb3V0MzsKKwl9CisJZXJyID0gZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazQoZnMsIGJsaywgYmxvY2ssIDAsIGNoaWxkKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgY2hpbGQsIGVycik7CisJCWdvdG8gb3V0MzsKKwl9CisKK291dDM6CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9jayk7CitvdXQyOgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKK291dDoKKwlmcmVlKHRlbXBfcGF0aCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB1bmxpbmtfZmlsZV9ieV9uYW1lKGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICpwYXRoKQoreworCWVycmNvZGVfdCBlcnI7CisJZXh0Ml9pbm9fdCBkaXI7CisJY2hhciAqZmlsZW5hbWUgPSBzdHJkdXAocGF0aCk7CisJY2hhciAqYmFzZV9uYW1lOworCWludCByZXQ7CisKKwliYXNlX25hbWUgPSBzdHJyY2hyKGZpbGVuYW1lLCAnLycpOworCWlmIChiYXNlX25hbWUpIHsKKwkJKmJhc2VfbmFtZSsrID0gJ1wwJzsKKwkJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBmaWxlbmFtZSwKKwkJCQkgICAmZGlyKTsKKwkJaWYgKGVycikgeworCQkJZnJlZShmaWxlbmFtZSk7CisJCQlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQl9CisJfSBlbHNlIHsKKwkJZGlyID0gRVhUMl9ST09UX0lOTzsKKwkJYmFzZV9uYW1lID0gZmlsZW5hbWU7CisJfQorCisJcmV0ID0gY2hlY2tfaW51bV9hY2Nlc3MoZnMsIGRpciwgV19PSyk7CisJaWYgKHJldCkgeworCQlmcmVlKGZpbGVuYW1lKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkYmdfcHJpbnRmKCIlczogdW5saW5raW5nIG5hbWU9JXMgZnJvbSBkaXI9JWRcbiIsIF9fZnVuY19fLAorCQkgICBiYXNlX25hbWUsIGRpcik7CisJZXJyID0gZXh0MmZzX3VubGluayhmcywgZGlyLCBiYXNlX25hbWUsIDAsIDApOworCWZyZWUoZmlsZW5hbWUpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGRpciwgZXJyKTsKKworCXJldHVybiB1cGRhdGVfbXRpbWUoZnMsIGRpciwgTlVMTCk7Cit9CisKK3N0YXRpYyBpbnQgcmVtb3ZlX2lub2RlKHN0cnVjdCBmdXNlMmZzICpmZiwgZXh0Ml9pbm9fdCBpbm8pCit7CisJZXh0Ml9maWxzeXMgZnMgPSBmZi0+ZnM7CisJZXJyY29kZV90IGVycjsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZTsKKwlpbnQgcmV0ID0gMDsKKworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCWRiZ19wcmludGYoIiVzOiBwdXQgaW5vPSVkIGxpbmtzPSVkXG4iLCBfX2Z1bmNfXywgaW5vLAorCQkgICBpbm9kZS5pX2xpbmtzX2NvdW50KTsKKworCXN3aXRjaCAoaW5vZGUuaV9saW5rc19jb3VudCkgeworCWNhc2UgMDoKKwkJcmV0dXJuIDA7IC8qIFhYWDogYWxyZWFkeSBkb25lPyAqLworCWNhc2UgMToKKwkJaW5vZGUuaV9saW5rc19jb3VudC0tOworCQlpbm9kZS5pX2R0aW1lID0gZnMtPm5vdyA/IGZzLT5ub3cgOiB0aW1lKDApOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpbm9kZS5pX2xpbmtzX2NvdW50LS07CisJfQorCisJcmV0ID0gdXBkYXRlX2N0aW1lKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlpZiAoaW5vZGUuaV9saW5rc19jb3VudCkKKwkJZ290byB3cml0ZV9vdXQ7CisKKwkvKiBOb2JvZHkgaG9sZHMgdGhpcyBmaWxlOyBmcmVlIGl0cyBibG9ja3MhICovCisJZXJyID0gZXh0MmZzX2ZyZWVfZXh0X2F0dHIoZnMsIGlubywgJmlub2RlKTsKKwlpZiAoZXJyKQorCQlnb3RvIHdyaXRlX291dDsKKworCWlmIChleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSkpIHsKKwkJZXJyID0gZXh0MmZzX3B1bmNoKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwgTlVMTCwKKwkJCQkgICAwLCB+MFVMTCk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQkJZ290byB3cml0ZV9vdXQ7CisJCX0KKwl9CisKKwlleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGZzLCBpbm8sIC0xLAorCQkJCSAgTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKTsKKword3JpdGVfb3V0OgorCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CitvdXQ6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX29wX3VubGluayhzdHJ1Y3QgZnVzZTJmcyAqZmYsIGNvbnN0IGNoYXIgKnBhdGgpCit7CisJZXh0Ml9maWxzeXMgZnMgPSBmZi0+ZnM7CisJZXh0Ml9pbm9fdCBpbm87CisJZXJyY29kZV90IGVycjsKKwlpbnQgcmV0ID0gMDsKKworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IHVubGlua19maWxlX2J5X25hbWUoZnMsIHBhdGgpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJcmV0ID0gcmVtb3ZlX2lub2RlKGZmLCBpbm8pOworCWlmIChyZXQpCisJCWdvdG8gb3V0Oworb3V0OgorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3BfdW5saW5rKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJaW50IHJldDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlyZXQgPSBfX29wX3VubGluayhmZiwgcGF0aCk7CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiByZXQ7Cit9CisKK3N0cnVjdCByZF9zdHJ1Y3QgeworCWV4dDJfaW5vX3QJcGFyZW50OworCWludAkJZW1wdHk7Cit9OworCitzdGF0aWMgaW50IHJtZGlyX3Byb2MoZXh0Ml9pbm9fdCBkaXIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBpbnQJZW50cnkgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwKKwkJICAgICAgaW50CW9mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgIGludAlibG9ja3NpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBjaGFyCSpidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICB2b2lkCSpwcml2YXRlKQoreworCXN0cnVjdCByZF9zdHJ1Y3QgKnJkcyA9IChzdHJ1Y3QgcmRfc3RydWN0ICopIHByaXZhdGU7CisKKwlpZiAoZGlyZW50LT5pbm9kZSA9PSAwKQorCQlyZXR1cm4gMDsKKwlpZiAoKChkaXJlbnQtPm5hbWVfbGVuICYgMHhGRikgPT0gMSkgJiYgKGRpcmVudC0+bmFtZVswXSA9PSAnLicpKQorCQlyZXR1cm4gMDsKKwlpZiAoKChkaXJlbnQtPm5hbWVfbGVuICYgMHhGRikgPT0gMikgJiYgKGRpcmVudC0+bmFtZVswXSA9PSAnLicpICYmCisJICAgIChkaXJlbnQtPm5hbWVbMV0gPT0gJy4nKSkgeworCQlyZHMtPnBhcmVudCA9IGRpcmVudC0+aW5vZGU7CisJCXJldHVybiAwOworCX0KKwlyZHMtPmVtcHR5ID0gMDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfX29wX3JtZGlyKHN0cnVjdCBmdXNlMmZzICpmZiwgY29uc3QgY2hhciAqcGF0aCkKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IGZmLT5mczsKKwlleHQyX2lub190IGNoaWxkOworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJc3RydWN0IHJkX3N0cnVjdCByZHM7CisJaW50IHJldCA9IDA7CisKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHBhdGgsICZjaGlsZCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlkYmdfcHJpbnRmKCIlczogcm1kaXIgcGF0aD0lcyBpbm89JWRcbiIsIF9fZnVuY19fLCBwYXRoLCBjaGlsZCk7CisKKwlyZHMucGFyZW50ID0gMDsKKwlyZHMuZW1wdHkgPSAxOworCisJZXJyID0gZXh0MmZzX2Rpcl9pdGVyYXRlMihmcywgY2hpbGQsIDAsIDAsIHJtZGlyX3Byb2MsICZyZHMpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKHJkcy5lbXB0eSA9PSAwKSB7CisJCXJldCA9IC1FTk9URU1QVFk7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IHVubGlua19maWxlX2J5X25hbWUoZnMsIHBhdGgpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCS8qIERpcmVjdG9yaWVzIGhhdmUgdG8gYmUgInJlbW92ZWQiIHR3aWNlLiAqLworCXJldCA9IHJlbW92ZV9pbm9kZShmZiwgY2hpbGQpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCXJldCA9IHJlbW92ZV9pbm9kZShmZiwgY2hpbGQpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJaWYgKHJkcy5wYXJlbnQpIHsKKwkJZGJnX3ByaW50ZigiJXM6IGRlY3IgZGlyPSVkIGxpbmsgY291bnRcbiIsIF9fZnVuY19fLAorCQkJICAgcmRzLnBhcmVudCk7CisJCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIHJkcy5wYXJlbnQsCisJCQkJCSAgICAgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCQlpZiAoZXJyKSB7CisJCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHJkcy5wYXJlbnQsIGVycik7CisJCQlnb3RvIG91dDsKKwkJfQorCQlpZiAoaW5vZGUuaV9saW5rc19jb3VudCA+IDEpCisJCQlpbm9kZS5pX2xpbmtzX2NvdW50LS07CisJCXJldCA9IHVwZGF0ZV9tdGltZShmcywgcmRzLnBhcmVudCwgJmlub2RlKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gb3V0OworCQllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgcmRzLnBhcmVudCwKKwkJCQkJICAgICAgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCQkgICAgICBzaXplb2YoaW5vZGUpKTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCByZHMucGFyZW50LCBlcnIpOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKK291dDoKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX3JtZGlyKGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJaW50IHJldDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlyZXQgPSBfX29wX3JtZGlyKGZmLCBwYXRoKTsKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvcF9zeW1saW5rKGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZGVzdCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwlleHQyX2lub190IHBhcmVudCwgY2hpbGQ7CisJY2hhciAqdGVtcF9wYXRoID0gc3RyZHVwKGRlc3QpOworCWVycmNvZGVfdCBlcnI7CisJY2hhciAqbm9kZV9uYW1lLCBhOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogc3ltbGluayAlcyB0byAlc1xuIiwgX19mdW5jX18sIHNyYywgZGVzdCk7CisJaWYgKCF0ZW1wX3BhdGgpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCW5vZGVfbmFtZSA9IHN0cnJjaHIodGVtcF9wYXRoLCAnLycpOworCWlmICghbm9kZV9uYW1lKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlub2RlX25hbWUrKzsKKwlhID0gKm5vZGVfbmFtZTsKKwkqbm9kZV9uYW1lID0gMDsKKworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCB0ZW1wX3BhdGgsCisJCQkgICAmcGFyZW50KTsKKwkqbm9kZV9uYW1lID0gYTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBwYXJlbnQsIFdfT0spOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCisJLyogQ3JlYXRlIHN5bWxpbmsgKi8KKwllcnIgPSBleHQyZnNfc3ltbGluayhmcywgcGFyZW50LCAwLCBub2RlX25hbWUsIHNyYyk7CisJaWYgKGVyciA9PSBFWFQyX0VUX0RJUl9OT19TUEFDRSkgeworCQllcnIgPSBleHQyZnNfZXhwYW5kX2RpcihmcywgcGFyZW50KTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBwYXJlbnQsIGVycik7CisJCQlnb3RvIG91dDI7CisJCX0KKworCQllcnIgPSBleHQyZnNfc3ltbGluayhmcywgcGFyZW50LCAwLCBub2RlX25hbWUsIHNyYyk7CisJfQorCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBwYXJlbnQsIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBVcGRhdGUgcGFyZW50IGRpcidzIG10aW1lICovCisJcmV0ID0gdXBkYXRlX210aW1lKGZzLCBwYXJlbnQsIE5VTEwpOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCS8qIFN0aWxsIGhhdmUgdG8gdXBkYXRlIHRoZSB1aWQvZ2lkIG9mIHRoZSBzeW1saW5rICovCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCB0ZW1wX3BhdGgsCisJCQkgICAmY2hpbGQpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCWRiZ19wcmludGYoIiVzOiBzeW1saW5raW5nIGlubz0lZC9uYW1lPSVzIHRvIGRpcj0lZFxuIiwgX19mdW5jX18sCisJCSAgIGNoaWxkLCBub2RlX25hbWUsIHBhcmVudCk7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBjaGlsZCwgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGNoaWxkLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJaW5vZGUuaV91aWQgPSBjdHh0LT51aWQ7CisJaW5vZGUuaV9naWQgPSBjdHh0LT5naWQ7CisJaW5vZGUuaV9nZW5lcmF0aW9uID0gZmYtPm5leHRfZ2VuZXJhdGlvbisrOworCisJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGNoaWxkLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGNoaWxkLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorb3V0MjoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CitvdXQ6CisJZnJlZSh0ZW1wX3BhdGgpOworCXJldHVybiByZXQ7Cit9CisKK3N0cnVjdCB1cGRhdGVfZG90ZG90IHsKKwlleHQyX2lub190IG5ld19kb3Rkb3Q7Cit9OworCitzdGF0aWMgaW50IHVwZGF0ZV9kb3Rkb3RfaGVscGVyKGV4dDJfaW5vX3QgZGlyIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQlpbnQgZW50cnkgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJCWludCBvZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCWludCBibG9ja3NpemUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCWNoYXIgKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkJdm9pZCAqcHJpdl9kYXRhKQoreworCXN0cnVjdCB1cGRhdGVfZG90ZG90ICp1ZCA9IHByaXZfZGF0YTsKKworCWlmIChleHQyZnNfZGlyZW50X25hbWVfbGVuKGRpcmVudCkgPT0gMiAmJgorCSAgICBkaXJlbnQtPm5hbWVbMF0gPT0gJy4nICYmIGRpcmVudC0+bmFtZVsxXSA9PSAnLicpIHsKKwkJZGlyZW50LT5pbm9kZSA9IHVkLT5uZXdfZG90ZG90OworCQlyZXR1cm4gRElSRU5UX0NIQU5HRUQgfCBESVJFTlRfQUJPUlQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3BfcmVuYW1lKGNvbnN0IGNoYXIgKmZyb20sIGNvbnN0IGNoYXIgKnRvKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCWVycmNvZGVfdCBlcnI7CisJZXh0Ml9pbm9fdCBmcm9tX2lubywgdG9faW5vLCB0b19kaXJfaW5vLCBmcm9tX2Rpcl9pbm87CisJY2hhciAqdGVtcF90byA9IE5VTEwsICp0ZW1wX2Zyb20gPSBOVUxMOworCWNoYXIgKmNwLCBhOworCXN0cnVjdCBleHQyX2lub2RlIGlub2RlOworCXN0cnVjdCB1cGRhdGVfZG90ZG90IHVkOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogcmVuYW1pbmcgJXMgdG8gJXNcbiIsIF9fZnVuY19fLCBmcm9tLCB0byk7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlpZiAoIWZzX2Nhbl9hbGxvY2F0ZShmZiwgNSkpIHsKKwkJcmV0ID0gLUVOT1NQQzsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBmcm9tLCAmZnJvbV9pbm8pOworCWlmIChlcnIgfHwgZnJvbV9pbm8gPT0gMCkgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgdG8sICZ0b19pbm8pOworCWlmIChlcnIgJiYgZXJyICE9IEVYVDJfRVRfRklMRV9OT1RfRk9VTkQpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoZXJyID09IEVYVDJfRVRfRklMRV9OT1RfRk9VTkQpCisJCXRvX2lubyA9IDA7CisKKwkvKiBBbHJlYWR5IHRoZSBzYW1lIGZpbGU/ICovCisJaWYgKHRvX2lubyAhPSAwICYmIHRvX2lubyA9PSBmcm9tX2lubykgeworCQlyZXQgPSAwOworCQlnb3RvIG91dDsKKwl9CisKKwl0ZW1wX3RvID0gc3RyZHVwKHRvKTsKKwlpZiAoIXRlbXBfdG8pIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCisJdGVtcF9mcm9tID0gc3RyZHVwKGZyb20pOworCWlmICghdGVtcF9mcm9tKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBGaW5kIHBhcmVudCBkaXIgb2YgdGhlIHNvdXJjZSBhbmQgY2hlY2sgd3JpdGUgYWNjZXNzICovCisJY3AgPSBzdHJyY2hyKHRlbXBfZnJvbSwgJy8nKTsKKwlpZiAoIWNwKSB7CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlhID0gKihjcCArIDEpOworCSooY3AgKyAxKSA9IDA7CisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCB0ZW1wX2Zyb20sCisJCQkgICAmZnJvbV9kaXJfaW5vKTsKKwkqKGNwICsgMSkgPSBhOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCWlmIChmcm9tX2Rpcl9pbm8gPT0gMCkgeworCQlyZXQgPSAtRU5PRU5UOworCQlnb3RvIG91dDI7CisJfQorCisJcmV0ID0gY2hlY2tfaW51bV9hY2Nlc3MoZnMsIGZyb21fZGlyX2lubywgV19PSyk7CisJaWYgKHJldCkKKwkJZ290byBvdXQyOworCisJLyogRmluZCBwYXJlbnQgZGlyIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgY2hlY2sgd3JpdGUgYWNjZXNzICovCisJY3AgPSBzdHJyY2hyKHRlbXBfdG8sICcvJyk7CisJaWYgKCFjcCkgeworCQlyZXQgPSAtRUlOVkFMOworCQlnb3RvIG91dDI7CisJfQorCisJYSA9ICooY3AgKyAxKTsKKwkqKGNwICsgMSkgPSAwOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgdGVtcF90bywKKwkJCSAgICZ0b19kaXJfaW5vKTsKKwkqKGNwICsgMSkgPSBhOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCWlmICh0b19kaXJfaW5vID09IDApIHsKKwkJcmV0ID0gLUVOT0VOVDsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCB0b19kaXJfaW5vLCBXX09LKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKKwkvKiBJZiB0aGUgdGFyZ2V0IGV4aXN0cywgdW5saW5rIGl0IGZpcnN0ICovCisJaWYgKHRvX2lubyAhPSAwKSB7CisJCWVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCB0b19pbm8sICZpbm9kZSk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgdG9faW5vLCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKKwkJZGJnX3ByaW50ZigiJXM6IHVubGlua2luZyAlcyBpbm89JWRcbiIsIF9fZnVuY19fLAorCQkJICAgTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpID8gImRpciIgOiAiZmlsZSIsCisJCQkgICB0b19pbm8pOworCQlpZiAoTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKQorCQkJcmV0ID0gX19vcF9ybWRpcihmZiwgdG8pOworCQllbHNlCisJCQlyZXQgPSBfX29wX3VubGluayhmZiwgdG8pOworCQlpZiAocmV0KQorCQkJZ290byBvdXQyOworCX0KKworCS8qIEdldCByZWFkeSB0byBkbyB0aGUgbW92ZSAqLworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBmcm9tX2lubywgJmlub2RlKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZnJvbV9pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBMaW5rIGluIHRoZSBuZXcgZmlsZSAqLworCWRiZ19wcmludGYoIiVzOiBsaW5raW5nIGlubz0lZC9wYXRoPSVzIHRvIGRpcj0lZFxuIiwgX19mdW5jX18sCisJCSAgIGZyb21faW5vLCBjcCArIDEsIHRvX2Rpcl9pbm8pOworCWVyciA9IGV4dDJmc19saW5rKGZzLCB0b19kaXJfaW5vLCBjcCArIDEsIGZyb21faW5vLAorCQkJICBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKTsKKwlpZiAoZXJyID09IEVYVDJfRVRfRElSX05PX1NQQUNFKSB7CisJCWVyciA9IGV4dDJmc19leHBhbmRfZGlyKGZzLCB0b19kaXJfaW5vKTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCB0b19kaXJfaW5vLCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKKwkJZXJyID0gZXh0MmZzX2xpbmsoZnMsIHRvX2Rpcl9pbm8sIGNwICsgMSwgZnJvbV9pbm8sCisJCQkJICAgICBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKTsKKwl9CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHRvX2Rpcl9pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBVcGRhdGUgJy4uJyBwb2ludGVyIGlmIGRpciAqLworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBmcm9tX2lubywgJmlub2RlKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZnJvbV9pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlpZiAoTElOVVhfU19JU0RJUihpbm9kZS5pX21vZGUpKSB7CisJCXVkLm5ld19kb3Rkb3QgPSB0b19kaXJfaW5vOworCQlkYmdfcHJpbnRmKCIlczogdXBkYXRpbmcgLi4gZW50cnkgZm9yIGRpcj0lZFxuIiwgX19mdW5jX18sCisJCQkgICB0b19kaXJfaW5vKTsKKwkJZXJyID0gZXh0MmZzX2Rpcl9pdGVyYXRlMihmcywgZnJvbV9pbm8sIDAsIE5VTEwsCisJCQkJCSAgdXBkYXRlX2RvdGRvdF9oZWxwZXIsICZ1ZCk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZnJvbV9pbm8sIGVycik7CisJCQlnb3RvIG91dDI7CisJCX0KKworCQkvKiBEZWNyZWFzZSBmcm9tX2Rpcl9pbm8ncyBsaW5rc19jb3VudCAqLworCQlkYmdfcHJpbnRmKCIlczogbW92aW5nIGxpbmtjb3VudCBmcm9tIGRpcj0lZCB0byBkaXI9JWRcbiIsCisJCQkgICBfX2Z1bmNfXywgZnJvbV9kaXJfaW5vLCB0b19kaXJfaW5vKTsKKwkJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGZyb21fZGlyX2lubywgJmlub2RlKTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmcm9tX2Rpcl9pbm8sIGVycik7CisJCQlnb3RvIG91dDI7CisJCX0KKwkJaW5vZGUuaV9saW5rc19jb3VudC0tOworCQllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGZyb21fZGlyX2lubywgJmlub2RlKTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmcm9tX2Rpcl9pbm8sIGVycik7CisJCQlnb3RvIG91dDI7CisJCX0KKworCQkvKiBJbmNyZWFzZSB0b19kaXJfaW5vJ3MgbGlua3NfY291bnQgKi8KKwkJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIHRvX2Rpcl9pbm8sICZpbm9kZSk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgdG9fZGlyX2lubywgZXJyKTsKKwkJCWdvdG8gb3V0MjsKKwkJfQorCQlpbm9kZS5pX2xpbmtzX2NvdW50Kys7CisJCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZShmcywgdG9fZGlyX2lubywgJmlub2RlKTsKKwkJaWYgKGVycikgeworCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCB0b19kaXJfaW5vLCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisJfQorCisJLyogVXBkYXRlIHRpbWVzdGFtcHMgKi8KKwlyZXQgPSB1cGRhdGVfY3RpbWUoZnMsIGZyb21faW5vLCBOVUxMKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKKwlyZXQgPSB1cGRhdGVfbXRpbWUoZnMsIHRvX2Rpcl9pbm8sIE5VTEwpOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCS8qIFJlbW92ZSB0aGUgb2xkIGZpbGUgKi8KKwlyZXQgPSB1bmxpbmtfZmlsZV9ieV9uYW1lKGZzLCBmcm9tKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKKwkvKiBGbHVzaCB0aGUgd2hvbGUgbWVzcyBvdXQgKi8KKwllcnIgPSBleHQyZnNfZmx1c2gyKGZzLCAwKTsKKwlpZiAoZXJyKQorCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisKK291dDI6CisJZnJlZSh0ZW1wX2Zyb20pOworCWZyZWUodGVtcF90byk7CitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3BfbGluayhjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmRlc3QpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJY2hhciAqdGVtcF9wYXRoID0gc3RyZHVwKGRlc3QpOworCWVycmNvZGVfdCBlcnI7CisJY2hhciAqbm9kZV9uYW1lLCBhOworCWV4dDJfaW5vX3QgcGFyZW50LCBpbm87CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCWRiZ19wcmludGYoIiVzOiBzcmM9JXMgZGVzdD0lc1xuIiwgX19mdW5jX18sIHNyYywgZGVzdCk7CisJaWYgKCF0ZW1wX3BhdGgpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXQ7CisJfQorCW5vZGVfbmFtZSA9IHN0cnJjaHIodGVtcF9wYXRoLCAnLycpOworCWlmICghbm9kZV9uYW1lKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlub2RlX25hbWUrKzsKKwlhID0gKm5vZGVfbmFtZTsKKwkqbm9kZV9uYW1lID0gMDsKKworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKCFmc19jYW5fYWxsb2NhdGUoZmYsIDIpKSB7CisJCXJldCA9IC1FTk9TUEM7CisJCWdvdG8gb3V0MjsKKwl9CisKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHRlbXBfcGF0aCwKKwkJCSAgICZwYXJlbnQpOworCSpub2RlX25hbWUgPSBhOworCWlmIChlcnIpIHsKKwkJZXJyID0gLUVOT0VOVDsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBwYXJlbnQsIFdfT0spOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBzcmMsICZpbm8pOworCWlmIChlcnIgfHwgaW5vID09IDApIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJaW5vZGUuaV9saW5rc19jb3VudCsrOworCXJldCA9IHVwZGF0ZV9jdGltZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZGJnX3ByaW50ZigiJXM6IGxpbmtpbmcgaW5vPSVkL25hbWU9JXMgdG8gZGlyPSVkXG4iLCBfX2Z1bmNfXywgaW5vLAorCQkgICBub2RlX25hbWUsIHBhcmVudCk7CisJZXJyID0gZXh0MmZzX2xpbmsoZnMsIHBhcmVudCwgbm9kZV9uYW1lLCBpbm8sCisJCQkgIGV4dDJfZmlsZV90eXBlKGlub2RlLmlfbW9kZSkpOworCWlmIChlcnIgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJZXJyID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIHBhcmVudCk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgcGFyZW50LCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKKwkJZXJyID0gZXh0MmZzX2xpbmsoZnMsIHBhcmVudCwgbm9kZV9uYW1lLCBpbm8sCisJCQkJICAgICBleHQyX2ZpbGVfdHlwZShpbm9kZS5pX21vZGUpKTsKKwl9CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHBhcmVudCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IHVwZGF0ZV9tdGltZShmcywgcGFyZW50LCBOVUxMKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKK291dDI6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworb3V0OgorCWZyZWUodGVtcF9wYXRoKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX2NobW9kKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCWVycmNvZGVfdCBlcnI7CisJZXh0Ml9pbm9fdCBpbm87CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBwYXRoLCAmaW5vKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCWRiZ19wcmludGYoIiVzOiBwYXRoPSVzIG1vZGU9MCVvIGlubz0lZFxuIiwgX19mdW5jX18sIHBhdGgsIG1vZGUsIGlubyk7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChjdHh0LT51aWQgIT0gMCAmJiBjdHh0LT51aWQgIT0gaW5vZGUuaV91aWQpIHsKKwkJcmV0ID0gLUVQRVJNOworCQlnb3RvIG91dDsKKwl9CisKKwkvKgorCSAqIFhYWDogV2Ugc2hvdWxkIHJlYWxseSBjaGVjayB0aGF0IHRoZSBpbm9kZSBnaWQgaXMgbm90IGluIC9hbnkvCisJICogb2YgdGhlIHVzZXIncyBncm91cHMsIGJ1dCBGVVNFIG9ubHkgdGVsbHMgdXMgYWJvdXQgdGhlIHByaW1hcnkKKwkgKiBncm91cC4KKwkgKi8KKwlpZiAoY3R4dC0+dWlkICE9IDAgJiYgY3R4dC0+Z2lkICE9IGlub2RlLmlfZ2lkKQorCQltb2RlICY9IH5TX0lTR0lEOworCisJaW5vZGUuaV9tb2RlICY9IH4weEZGRjsKKwlpbm9kZS5pX21vZGUgfD0gbW9kZSAmIDB4RkZGOworCXJldCA9IHVwZGF0ZV9jdGltZShmcywgaW5vLCAmaW5vZGUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJZXJyID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX2Nob3duKGNvbnN0IGNoYXIgKnBhdGgsIHVpZF90IG93bmVyLCBnaWRfdCBncm91cCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgZXJyOworCWV4dDJfaW5vX3QgaW5vOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlkYmdfcHJpbnRmKCIlczogcGF0aD0lcyBvd25lcj0lZCBncm91cD0lZCBpbm89JWRcbiIsIF9fZnVuY19fLAorCQkgICBwYXRoLCBvd25lciwgZ3JvdXAsIGlubyk7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCS8qIEZVU0Ugc2VlbXMgdG8gZmVlZCB1cyB+MCB0byBtZWFuICJkb24ndCBjaGFuZ2UiICovCisJaWYgKG93bmVyICE9ICh1aWRfdCkgfjApIHsKKwkJLyogT25seSByb290IGdldHMgdG8gY2hhbmdlIFVJRC4gKi8KKwkJaWYgKGN0eHQtPnVpZCAhPSAwICYmCisJCSAgICAhKGlub2RlLmlfdWlkID09IGN0eHQtPnVpZCAmJiBvd25lciA9PSBjdHh0LT51aWQpKSB7CisJCQlyZXQgPSAtRVBFUk07CisJCQlnb3RvIG91dDsKKwkJfQorCQlpbm9kZS5pX3VpZCA9IG93bmVyOworCX0KKworCWlmIChncm91cCAhPSAoZ2lkX3QpIH4wKSB7CisJCS8qIE9ubHkgcm9vdCBvciB0aGUgb3duZXIgZ2V0IHRvIGNoYW5nZSBHSUQuICovCisJCWlmIChjdHh0LT51aWQgIT0gMCAmJiBpbm9kZS5pX3VpZCAhPSBjdHh0LT51aWQpIHsKKwkJCXJldCA9IC1FUEVSTTsKKwkJCWdvdG8gb3V0OworCQl9CisKKwkJLyogWFhYOiBXZSAvc2hvdWxkLyBjaGVjayBncm91cCBtZW1iZXJzaGlwIGJ1dCBGVVNFICovCisJCWlub2RlLmlfZ2lkID0gZ3JvdXA7CisJfQorCisJcmV0ID0gdXBkYXRlX2N0aW1lKGZzLCBpbm8sICZpbm9kZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3BfdHJ1bmNhdGUoY29uc3QgY2hhciAqcGF0aCwgb2ZmX3QgbGVuKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCWVycmNvZGVfdCBlcnI7CisJZXh0Ml9pbm9fdCBpbm87CisJZXh0Ml9maWxlX3QgZmlsZTsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHBhdGgsICZpbm8pOworCWlmIChlcnIgfHwgaW5vID09IDApIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZCBsZW49JWpkXG4iLCBfX2Z1bmNfXywgaW5vLCBsZW4pOworCisJcmV0ID0gY2hlY2tfaW51bV9hY2Nlc3MoZnMsIGlubywgV19PSyk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwllcnIgPSBleHQyZnNfZmlsZV9vcGVuKGZzLCBpbm8sIEVYVDJfRklMRV9XUklURSwgJmZpbGUpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19maWxlX3NldF9zaXplMihmaWxlLCBsZW4pOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKK291dDI6CisJZXJyID0gZXh0MmZzX2ZpbGVfY2xvc2UoZmlsZSk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gdXBkYXRlX210aW1lKGZzLCBpbm8sIE5VTEwpOworCitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiBlcnI7Cit9CisKKyNpZmRlZiBfX2xpbnV4X18KK3N0YXRpYyB2b2lkIGRldGVjdF9saW51eF9leGVjdXRhYmxlX29wZW4oaW50IGtlcm5lbF9mbGFncywgaW50ICphY2Nlc3NfY2hlY2ssCisJCQkJICBpbnQgKmUyZnNfb3Blbl9mbGFncykKK3sKKwkvKgorCSAqIE9uIExpbnV4LCBleGVjdmUgd2lsbCBibGVlZCBfX0ZNT0RFX0VYRUMgaW50byB0aGUgZmlsZSBtb2RlIGZsYWdzLAorCSAqIGFuZCBGVVNFIGlzIG1vcmUgdGhhbiBoYXBweSB0byBsZXQgdGhhdCBzbGlwIHRocm91Z2guCisJICovCisJaWYgKGtlcm5lbF9mbGFncyAmIDB4MjApIHsKKwkJKmFjY2Vzc19jaGVjayA9IFhfT0s7CisJCSplMmZzX29wZW5fZmxhZ3MgJj0gfkVYVDJfRklMRV9XUklURTsKKwl9Cit9CisjZWxzZQorc3RhdGljIHZvaWQgZGV0ZWN0X2xpbnV4X2V4ZWN1dGFibGVfb3BlbihpbnQga2VybmVsX2ZsYWdzLCBpbnQgKmFjY2Vzc19jaGVjaywKKwkJCQkgIGludCAqZTJmc19vcGVuX2ZsYWdzKQoreworCS8qIGVtcHR5ICovCit9CisjZW5kaWYgLyogX19saW51eF9fICovCisKK3N0YXRpYyBpbnQgX19vcF9vcGVuKHN0cnVjdCBmdXNlMmZzICpmZiwgY29uc3QgY2hhciAqcGF0aCwKKwkJICAgICBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwKQoreworCWV4dDJfZmlsc3lzIGZzID0gZmYtPmZzOworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZpbGU7CisJaW50IGNoZWNrID0gMCwgcmV0ID0gMDsKKworCWRiZ19wcmludGYoIiVzOiBwYXRoPSVzXG4iLCBfX2Z1bmNfXywgcGF0aCk7CisJZXJyID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKCpmaWxlKSwgJmZpbGUpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJZmlsZS0+bWFnaWMgPSBGVVNFMkZTX0ZJTEVfTUFHSUM7CisKKwlmaWxlLT5vcGVuX2ZsYWdzID0gMDsKKwlzd2l0Y2ggKGZwLT5mbGFncyAmIE9fQUNDTU9ERSkgeworCWNhc2UgT19SRE9OTFk6CisJCWNoZWNrID0gUl9PSzsKKwkJYnJlYWs7CisJY2FzZSBPX1dST05MWToKKwkJY2hlY2sgPSBXX09LOworCQlmaWxlLT5vcGVuX2ZsYWdzIHw9IEVYVDJfRklMRV9XUklURTsKKwkJYnJlYWs7CisJY2FzZSBPX1JEV1I6CisJCWNoZWNrID0gUl9PSyB8IFdfT0s7CisJCWZpbGUtPm9wZW5fZmxhZ3MgfD0gRVhUMl9GSUxFX1dSSVRFOworCQlicmVhazsKKwl9CisKKwlkZXRlY3RfbGludXhfZXhlY3V0YWJsZV9vcGVuKGZwLT5mbGFncywgJmNoZWNrLCAmZmlsZS0+b3Blbl9mbGFncyk7CisKKwlpZiAoZnAtPmZsYWdzICYgT19DUkVBVCkKKwkJZmlsZS0+b3Blbl9mbGFncyB8PSBFWFQyX0ZJTEVfQ1JFQVRFOworCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBwYXRoLCAmZmlsZS0+aW5vKTsKKwlpZiAoZXJyIHx8IGZpbGUtPmlubyA9PSAwKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCWRiZ19wcmludGYoIiVzOiBpbm89JWRcbiIsIF9fZnVuY19fLCBmaWxlLT5pbm8pOworCisJcmV0ID0gY2hlY2tfaW51bV9hY2Nlc3MoZnMsIGZpbGUtPmlubywgY2hlY2spOworCWlmIChyZXQpIHsKKwkJLyoKKwkJICogSW4gYSByZWd1bGFyIChMaW51eCkgZnMgZHJpdmVyLCB0aGUga2VybmVsIHdpbGwgb3BlbgorCQkgKiBiaW5hcmllcyBmb3IgcmVhZGluZyBpZiB0aGUgdXNlciBoYXMgLS14IHByaXZpbGVnZXMgKGkuZS4KKwkJICogZXhlY3V0ZSB3aXRob3V0IHJlYWQpLiAgU2luY2UgdGhlIGtlcm5lbCBkb2Vzbid0IGhhdmUgYW55CisJCSAqIHdheSB0byB0ZWxsIHVzIGlmIGl0J3Mgb3BlbmluZyBhIGZpbGUgdmlhIGV4ZWN2ZSwgd2UnbGwKKwkJICoganVzdCBhc3N1bWUgdGhhdCBhbGxvd2luZyBhY2Nlc3MgaXMgb2sgaWYgYXNraW5nIGZvciBybyBtb2RlCisJCSAqIGZhaWxzIGJ1dCBhc2tpbmcgZm9yIHggbW9kZSBzdWNjZWVkcy4gIE9mIGNvdXJzZSB3ZSBjYW4KKwkJICogYWxzbyBlbXBsb3kgdW5kb2N1bWVudGVkIGhhY2tzIChzZWUgYWJvdmUpLgorCQkgKi8KKwkJaWYgKGNoZWNrID09IFJfT0spIHsKKwkJCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBmaWxlLT5pbm8sIFhfT0spOworCQkJaWYgKHJldCkKKwkJCQlnb3RvIG91dDsKKwkJfSBlbHNlCisJCQlnb3RvIG91dDsKKwl9CisJZnAtPmZoID0gKHVpbnRwdHJfdClmaWxlOworCitvdXQ6CisJaWYgKHJldCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZmaWxlKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX29wZW4oY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IGZ1c2VfZmlsZV9pbmZvICpmcCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlpbnQgcmV0OworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCXJldCA9IF9fb3Bfb3BlbihmZiwgcGF0aCwgZnApOworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX3JlYWQoY29uc3QgY2hhciAqcGF0aCBFWFQyRlNfQVRUUigodW51c2VkKSksIGNoYXIgKmJ1ZiwKKwkJICAgc2l6ZV90IGxlbiwgb2ZmX3Qgb2Zmc2V0LAorCQkgICBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCA9CisJCShzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqKSh1aW50cHRyX3QpZnAtPmZoOworCWV4dDJfZmlsc3lzIGZzOworCWV4dDJfZmlsZV90IGVmcDsKKwllcnJjb2RlX3QgZXJyOworCXVuc2lnbmVkIGludCBnb3QgPSAwOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBmaCwgRlVTRTJGU19GSUxFX01BR0lDKTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkIG9mZj0lamQgbGVuPSVqZFxuIiwgX19mdW5jX18sIGZoLT5pbm8sIG9mZnNldCwKKwkJICAgbGVuKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19maWxlX29wZW4oZnMsIGZoLT5pbm8sIGZoLT5vcGVuX2ZsYWdzLCAmZWZwKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX2ZpbGVfbGxzZWVrKGVmcCwgb2Zmc2V0LCBTRUVLX1NFVCwgTlVMTCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwllcnIgPSBleHQyZnNfZmlsZV9yZWFkKGVmcCwgYnVmLCBsZW4sICZnb3QpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCitvdXQyOgorCWVyciA9IGV4dDJmc19maWxlX2Nsb3NlKGVmcCk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChmc193cml0ZWFibGUoZnMpKSB7CisJCXJldCA9IHVwZGF0ZV9hdGltZShmcywgZmgtPmlubyk7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dDsKKwl9CitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiBnb3QgPyAoaW50KSBnb3QgOiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3Bfd3JpdGUoY29uc3QgY2hhciAqcGF0aCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4sIG9mZl90IG9mZnNldCwKKwkJICAgIHN0cnVjdCBmdXNlX2ZpbGVfaW5mbyAqZnApCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoID0KKwkJKHN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICopKHVpbnRwdHJfdClmcC0+Zmg7CisJZXh0Ml9maWxzeXMgZnM7CisJZXh0Ml9maWxlX3QgZWZwOworCWVycmNvZGVfdCBlcnI7CisJdW5zaWduZWQgaW50IGdvdCA9IDA7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCUZVU0UyRlNfQ0hFQ0tfTUFHSUMoZnMsIGZoLCBGVVNFMkZTX0ZJTEVfTUFHSUMpOworCWRiZ19wcmludGYoIiVzOiBpbm89JWQgb2ZmPSVqZCBsZW49JWpkXG4iLCBfX2Z1bmNfXywgZmgtPmlubywgb2Zmc2V0LAorCQkgICBsZW4pOworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKCFmc193cml0ZWFibGUoZnMpKSB7CisJCXJldCA9IC1FUk9GUzsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKCFmc19jYW5fYWxsb2NhdGUoZmYsIGxlbiAvIGZzLT5ibG9ja3NpemUpKSB7CisJCXJldCA9IC1FTk9TUEM7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19maWxlX29wZW4oZnMsIGZoLT5pbm8sIGZoLT5vcGVuX2ZsYWdzLCAmZWZwKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX2ZpbGVfbGxzZWVrKGVmcCwgb2Zmc2V0LCBTRUVLX1NFVCwgTlVMTCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwllcnIgPSBleHQyZnNfZmlsZV93cml0ZShlZnAsIGJ1ZiwgbGVuLCAmZ290KTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCWVyciA9IGV4dDJmc19maWxlX2ZsdXNoKGVmcCk7CisJaWYgKGVycikgeworCQlnb3QgPSAwOworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKK291dDI6CisJZXJyID0gZXh0MmZzX2ZpbGVfY2xvc2UoZWZwKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJcmV0ID0gdXBkYXRlX210aW1lKGZzLCBmaC0+aW5vLCBOVUxMKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gZ290ID8gKGludCkgZ290IDogcmV0OworfQorCitzdGF0aWMgaW50IG9wX3JlbGVhc2UoY29uc3QgY2hhciAqcGF0aCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgIHN0cnVjdCBmdXNlX2ZpbGVfaW5mbyAqZnApCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoID0KKwkJKHN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICopKHVpbnRwdHJfdClmcC0+Zmg7CisJZXh0Ml9maWxzeXMgZnM7CisJZXJyY29kZV90IGVycjsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJRlVTRTJGU19DSEVDS19NQUdJQyhmcywgZmgsIEZVU0UyRlNfRklMRV9NQUdJQyk7CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZFxuIiwgX19mdW5jX18sIGZoLT5pbm8pOworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKGZzX3dyaXRlYWJsZShmcykgJiYgZmgtPm9wZW5fZmxhZ3MgJiBFWFQyX0ZJTEVfV1JJVEUpIHsKKwkJZXJyID0gZXh0MmZzX2ZsdXNoMihmcywgRVhUMl9GTEFHX0ZMVVNIX05PX1NZTkMpOworCQlpZiAoZXJyKQorCQkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCX0KKwlmcC0+ZmggPSAwOworCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKworCWV4dDJmc19mcmVlX21lbSgmZmgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBvcF9mc3luYyhjb25zdCBjaGFyICpwYXRoIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgIGludCBkYXRhc3luYyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCA9CisJCShzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqKSh1aW50cHRyX3QpZnAtPmZoOworCWV4dDJfZmlsc3lzIGZzOworCWVycmNvZGVfdCBlcnI7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCUZVU0UyRlNfQ0hFQ0tfTUFHSUMoZnMsIGZoLCBGVVNFMkZTX0ZJTEVfTUFHSUMpOworCWRiZ19wcmludGYoIiVzOiBpbm89JWRcbiIsIF9fZnVuY19fLCBmaC0+aW5vKTsKKwkvKiBGb3Igbm93LCBmbHVzaCBldmVyeXRoaW5nLCBldmVuIGlmIGl0J3Mgc2xvdyAqLworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKGZzX3dyaXRlYWJsZShmcykgJiYgZmgtPm9wZW5fZmxhZ3MgJiBFWFQyX0ZJTEVfV1JJVEUpIHsKKwkJZXJyID0gZXh0MmZzX2ZsdXNoMihmcywgMCk7CisJCWlmIChlcnIpCisJCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisJfQorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3Bfc3RhdGZzKGNvbnN0IGNoYXIgKnBhdGggRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgIHN0cnVjdCBzdGF0dmZzICpidWYpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJdWludDY0X3QgZnNpZCwgKmY7CisJYmxrNjRfdCBvdmVyaGVhZCwgcmVzZXJ2ZWQsIGZyZWU7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCWRiZ19wcmludGYoIiVzOiBwYXRoPSVzXG4iLCBfX2Z1bmNfXywgcGF0aCk7CisJYnVmLT5mX2JzaXplID0gZnMtPmJsb2Nrc2l6ZTsKKwlidWYtPmZfZnJzaXplID0gMDsKKworCWlmIChmZi0+bWluaXhkZikKKwkJb3ZlcmhlYWQgPSAwOworCWVsc2UKKwkJb3ZlcmhlYWQgPSBmcy0+ZGVzY19ibG9ja3MgKworCQkJICAgZnMtPmdyb3VwX2Rlc2NfY291bnQgKgorCQkJICAgKGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICsgMik7CisJcmVzZXJ2ZWQgPSBleHQyZnNfcl9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwlpZiAoIXJlc2VydmVkKQorCQlyZXNlcnZlZCA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAvIDEwOworCWZyZWUgPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKworCWJ1Zi0+Zl9ibG9ja3MgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSBvdmVyaGVhZDsKKwlidWYtPmZfYmZyZWUgPSBmcmVlOworCWlmIChmcmVlIDwgcmVzZXJ2ZWQpCisJCWJ1Zi0+Zl9iYXZhaWwgPSAwOworCWVsc2UKKwkJYnVmLT5mX2JhdmFpbCA9IGZyZWUgLSByZXNlcnZlZDsKKwlidWYtPmZfZmlsZXMgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OworCWJ1Zi0+Zl9mZnJlZSA9IGZzLT5zdXBlci0+c19mcmVlX2lub2Rlc19jb3VudDsKKwlidWYtPmZfZmF2YWlsID0gZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50OworCWYgPSAodWludDY0X3QgKilmcy0+c3VwZXItPnNfdXVpZDsKKwlmc2lkID0gKmY7CisJZisrOworCWZzaWQgXj0gKmY7CisJYnVmLT5mX2ZzaWQgPSBmc2lkOworCWJ1Zi0+Zl9mbGFnID0gMDsKKwlpZiAoZnMtPmZsYWdzICYgRVhUMl9GTEFHX1JXKQorCQlidWYtPmZfZmxhZyB8PSBTVF9SRE9OTFk7CisJYnVmLT5mX25hbWVtYXggPSBFWFQyX05BTUVfTEVOOworCisJcmV0dXJuIDA7Cit9CisKK3R5cGVkZWYgZXJyY29kZV90ICgqeGF0dHJfeGxhdGVfZ2V0KSh2b2lkICoqY29va2VkX2J1Ziwgc2l6ZV90ICpjb29rZWRfc3osCisJCQkJICAgICBjb25zdCB2b2lkICpyYXdfYnVmLCBzaXplX3QgcmF3X3N6KTsKK3R5cGVkZWYgZXJyY29kZV90ICgqeGF0dHJfeGxhdGVfc2V0KShjb25zdCB2b2lkICpjb29rZWRfYnVmLCBzaXplX3QgY29va2VkX3N6LAorCQkJCSAgICAgY29uc3Qgdm9pZCAqKnJhd19idWYsIHNpemVfdCAqcmF3X3N6KTsKK3N0cnVjdCB4YXR0cl90cmFuc2xhdGUgeworCWNvbnN0IGNoYXIgKnByZWZpeDsKKwl4YXR0cl94bGF0ZV9nZXQgZ2V0OworCXhhdHRyX3hsYXRlX3NldCBzZXQ7Cit9OworCisjZGVmaW5lIFhBVFRSX1RSQU5TTEFUT1IocCwgZywgcykgXAorCXsucHJlZml4ID0gKHApLCBcCisJIC5nZXQgPSAoeGF0dHJfeGxhdGVfZ2V0KShnKSwgXAorCSAuc2V0ID0gKHhhdHRyX3hsYXRlX3NldCkocyl9CisKK3N0YXRpYyBzdHJ1Y3QgeGF0dHJfdHJhbnNsYXRlIHhhdHRyX3RyYW5zbGF0b3JzW10gPSB7CisjaWZkZWYgVFJBTlNMQVRFX0xJTlVYX0FDTFMKKwlYQVRUUl9UUkFOU0xBVE9SKEFDTF9FQV9BQ0NFU1MsIGV4dDRfdG9fZnVzZV9hY2wsIGZ1c2VfdG9fZXh0NF9hY2wpLAorCVhBVFRSX1RSQU5TTEFUT1IoQUNMX0VBX0RFRkFVTFQsIGV4dDRfdG9fZnVzZV9hY2wsIGZ1c2VfdG9fZXh0NF9hY2wpLAorI2VuZGlmCisJWEFUVFJfVFJBTlNMQVRPUihOVUxMLCBOVUxMLCBOVUxMKSwKK307CisjdW5kZWYgWEFUVFJfVFJBTlNMQVRPUgorCitzdGF0aWMgaW50IG9wX2dldHhhdHRyKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmtleSwgY2hhciAqdmFsdWUsCisJCSAgICAgICBzaXplX3QgbGVuKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaDsKKwlzdHJ1Y3QgeGF0dHJfdHJhbnNsYXRlICp4dDsKKwl2b2lkICpwdHIsICpjcHRyOworCXNpemVfdCBwbGVuLCBjbGVuOworCWV4dDJfaW5vX3QgaW5vOworCWVycmNvZGVfdCBlcnI7CisJaW50IHJldCA9IDA7CisKKwlGVVNFMkZTX0NIRUNLX0NPTlRFWFQoZmYpOworCWZzID0gZmYtPmZzOworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfeGF0dHIoZnMtPnN1cGVyKSkgeworCQlyZXQgPSAtRU5PVFNVUDsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCBwYXRoLCAmaW5vKTsKKwlpZiAoZXJyIHx8IGlubyA9PSAwKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCWRiZ19wcmludGYoIiVzOiBpbm89JWRcbiIsIF9fZnVuY19fLCBpbm8pOworCisJcmV0ID0gY2hlY2tfaW51bV9hY2Nlc3MoZnMsIGlubywgUl9PSyk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwllcnIgPSBleHQyZnNfeGF0dHJzX29wZW4oZnMsIGlubywgJmgpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc194YXR0cnNfcmVhZChoKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZXJyID0gZXh0MmZzX3hhdHRyX2dldChoLCBrZXksICZwdHIsICZwbGVuKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZm9yICh4dCA9IHhhdHRyX3RyYW5zbGF0b3JzOyB4dC0+cHJlZml4ICE9IE5VTEw7IHh0KyspIHsKKwkJaWYgKHN0cm5jbXAoa2V5LCB4dC0+cHJlZml4LCBzdHJsZW4oeHQtPnByZWZpeCkpID09IDApIHsKKwkJCWVyciA9IHh0LT5nZXQoJmNwdHIsICZjbGVuLCBwdHIsIHBsZW4pOworCQkJaWYgKGVycikKKwkJCQlnb3RvIG91dDM7CisJCQlleHQyZnNfZnJlZV9tZW0oJnB0cik7CisJCQlwdHIgPSBjcHRyOworCQkJcGxlbiA9IGNsZW47CisJCX0KKwl9CisKKwlpZiAoIWxlbikgeworCQlyZXQgPSBwbGVuOworCX0gZWxzZSBpZiAobGVuIDwgcGxlbikgeworCQlyZXQgPSAtRVJBTkdFOworCX0gZWxzZSB7CisJCW1lbWNweSh2YWx1ZSwgcHRyLCBwbGVuKTsKKwkJcmV0ID0gcGxlbjsKKwl9CisKK291dDM6CisJZXh0MmZzX2ZyZWVfbWVtKCZwdHIpOworb3V0MjoKKwllcnIgPSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoKTsKKwlpZiAoZXJyKQorCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKK291dDoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGNvdW50X2J1ZmZlcl9zcGFjZShjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICBzaXplX3QgdmFsdWVfbGVuIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgIHZvaWQgKmRhdGEpCit7CisJdW5zaWduZWQgaW50ICp4ID0gZGF0YTsKKworCSp4ID0gKnggKyBzdHJsZW4obmFtZSkgKyAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvcHlfbmFtZXMoY2hhciAqbmFtZSwgY2hhciAqdmFsdWUgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICBzaXplX3QgdmFsdWVfbGVuIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgdm9pZCAqZGF0YSkKK3sKKwljaGFyICoqYiA9IGRhdGE7CisKKwlzdHJuY3B5KCpiLCBuYW1lLCBzdHJsZW4obmFtZSkpOworCSpiID0gKmIgKyBzdHJsZW4obmFtZSkgKyAxOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgb3BfbGlzdHhhdHRyKGNvbnN0IGNoYXIgKnBhdGgsIGNoYXIgKm5hbWVzLCBzaXplX3QgbGVuKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaDsKKwl1bnNpZ25lZCBpbnQgYnVmc3o7CisJZXh0Ml9pbm9fdCBpbm87CisJZXJyY29kZV90IGVycjsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV94YXR0cihmcy0+c3VwZXIpKSB7CisJCXJldCA9IC1FTk9UU1VQOworCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHBhdGgsICZpbm8pOworCWlmIChlcnIgfHwgaW5vID09IDApIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgaW5vKTsKKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBpbm8sIFJfT0spOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCWVyciA9IGV4dDJmc194YXR0cnNfb3BlbihmcywgaW5vLCAmaCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX3hhdHRyc19yZWFkKGgpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBDb3VudCBidWZmZXIgc3BhY2UgbmVlZGVkIGZvciBuYW1lcyAqLworCWJ1ZnN6ID0gMDsKKwllcnIgPSBleHQyZnNfeGF0dHJzX2l0ZXJhdGUoaCwgY291bnRfYnVmZmVyX3NwYWNlLCAmYnVmc3opOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlpZiAobGVuID09IDApIHsKKwkJcmV0ID0gYnVmc3o7CisJCWdvdG8gb3V0MjsKKwl9IGVsc2UgaWYgKGxlbiA8IGJ1ZnN6KSB7CisJCXJldCA9IC1FUkFOR0U7CisJCWdvdG8gb3V0MjsKKwl9CisKKwkvKiBDb3B5IG5hbWVzIG91dCAqLworCW1lbXNldChuYW1lcywgMCwgbGVuKTsKKwllcnIgPSBleHQyZnNfeGF0dHJzX2l0ZXJhdGUoaCwgY29weV9uYW1lcywgJm5hbWVzKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCXJldCA9IGJ1ZnN6Oworb3V0MjoKKwllcnIgPSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoKTsKKwlpZiAoZXJyKQorCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKK291dDoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX3NldHhhdHRyKGNvbnN0IGNoYXIgKnBhdGggRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICAgY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICp2YWx1ZSwKKwkJICAgICAgIHNpemVfdCBsZW4sIGludCBmbGFncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnM7CisJc3RydWN0IGV4dDJfeGF0dHJfaGFuZGxlICpoOworCXN0cnVjdCB4YXR0cl90cmFuc2xhdGUgKnh0OworCWNvbnN0IHZvaWQgKmN2YWx1ZTsKKwlzaXplX3QgY2xlbjsKKwlleHQyX2lub190IGlubzsKKwllcnJjb2RlX3QgZXJyOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3hhdHRyKGZzLT5zdXBlcikpIHsKKwkJcmV0ID0gLUVOT1RTVVA7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVyciB8fCBpbm8gPT0gMCkgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgaW5vKTsKKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBpbm8sIFdfT0spOworCWlmIChyZXQgPT0gLUVBQ0NFUykgeworCQlyZXQgPSAtRVBFUk07CisJCWdvdG8gb3V0OworCX0gZWxzZSBpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWVyciA9IGV4dDJmc194YXR0cnNfb3BlbihmcywgaW5vLCAmaCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX3hhdHRyc19yZWFkKGgpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwljdmFsdWUgPSB2YWx1ZTsKKwljbGVuID0gbGVuOworCWZvciAoeHQgPSB4YXR0cl90cmFuc2xhdG9yczsgeHQtPnByZWZpeCAhPSBOVUxMOyB4dCsrKSB7CisJCWlmIChzdHJuY21wKGtleSwgeHQtPnByZWZpeCwgc3RybGVuKHh0LT5wcmVmaXgpKSA9PSAwKSB7CisJCQllcnIgPSB4dC0+c2V0KHZhbHVlLCBsZW4sICZjdmFsdWUsICZjbGVuKTsKKwkJCWlmIChlcnIpCisJCQkJZ290byBvdXQzOworCQl9CisJfQorCisJZXJyID0gZXh0MmZzX3hhdHRyX3NldChoLCBrZXksIGN2YWx1ZSwgY2xlbik7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQzOworCX0KKworCWVyciA9IGV4dDJmc194YXR0cnNfd3JpdGUoaCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQzOworCX0KKworCXJldCA9IHVwZGF0ZV9jdGltZShmcywgaW5vLCBOVUxMKTsKK291dDM6CisJaWYgKGN2YWx1ZSAhPSB2YWx1ZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZjdmFsdWUpOworb3V0MjoKKwllcnIgPSBleHQyZnNfeGF0dHJzX2Nsb3NlKCZoKTsKKwlpZiAoIXJldCAmJiBlcnIpCisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3BfcmVtb3ZleGF0dHIoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqa2V5KQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBleHQyX3hhdHRyX2hhbmRsZSAqaDsKKwlleHQyX2lub190IGlubzsKKwllcnJjb2RlX3QgZXJyOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3hhdHRyKGZzLT5zdXBlcikpIHsKKwkJcmV0ID0gLUVOT1RTVVA7CisJCWdvdG8gb3V0OworCX0KKworCWlmICghZnNfY2FuX2FsbG9jYXRlKGZmLCAxKSkgeworCQlyZXQgPSAtRU5PU1BDOworCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHBhdGgsICZpbm8pOworCWlmIChlcnIgfHwgaW5vID09IDApIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZFxuIiwgX19mdW5jX18sIGlubyk7CisKKwlyZXQgPSBjaGVja19pbnVtX2FjY2VzcyhmcywgaW5vLCBXX09LKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWVyciA9IGV4dDJmc194YXR0cnNfb3BlbihmcywgaW5vLCAmaCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX3hhdHRyc19yZWFkKGgpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwllcnIgPSBleHQyZnNfeGF0dHJfcmVtb3ZlKGgsIGtleSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCWVyciA9IGV4dDJmc194YXR0cnNfd3JpdGUoaCk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IHVwZGF0ZV9jdGltZShmcywgaW5vLCBOVUxMKTsKK291dDI6CisJZXJyID0gZXh0MmZzX3hhdHRyc19jbG9zZSgmaCk7CisJaWYgKGVycikKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBpbm8sIGVycik7CitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCisJcmV0dXJuIHJldDsKK30KKworc3RydWN0IHJlYWRkaXJfaXRlciB7CisJdm9pZCAqYnVmOworCWZ1c2VfZmlsbF9kaXJfdCBmdW5jOworfTsKKworc3RhdGljIGludCBvcF9yZWFkZGlyX2l0ZXIoZXh0Ml9pbm9fdCBkaXIgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgaW50IGVudHJ5IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgIHN0cnVjdCBleHQyX2Rpcl9lbnRyeSAqZGlyZW50LAorCQkJICAgaW50IG9mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICBpbnQgYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgIGNoYXIgKmJ1ZiBFWFQyRlNfQVRUUigodW51c2VkKSksIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHJlYWRkaXJfaXRlciAqaSA9IGRhdGE7CisJY2hhciBuYW1lYnVmW0VYVDJfTkFNRV9MRU4gKyAxXTsKKwlpbnQgcmV0OworCisJbWVtY3B5KG5hbWVidWYsIGRpcmVudC0+bmFtZSwgZGlyZW50LT5uYW1lX2xlbiAmIDB4RkYpOworCW5hbWVidWZbZGlyZW50LT5uYW1lX2xlbiAmIDB4RkZdID0gMDsKKwlyZXQgPSBpLT5mdW5jKGktPmJ1ZiwgbmFtZWJ1ZiwgTlVMTCwgMCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9wX3JlYWRkaXIoY29uc3QgY2hhciAqcGF0aCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICAgIHZvaWQgKmJ1ZiwgZnVzZV9maWxsX2Rpcl90IGZpbGxfZnVuYywKKwkJICAgICAgb2ZmX3Qgb2Zmc2V0IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgICAgc3RydWN0IGZ1c2VfZmlsZV9pbmZvICpmcCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqZmggPQorCQkoc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKikodWludHB0cl90KWZwLT5maDsKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgZXJyOworCXN0cnVjdCByZWFkZGlyX2l0ZXIgaTsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJRlVTRTJGU19DSEVDS19NQUdJQyhmcywgZmgsIEZVU0UyRlNfRklMRV9NQUdJQyk7CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZFxuIiwgX19mdW5jX18sIGZoLT5pbm8pOworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaS5idWYgPSBidWY7CisJaS5mdW5jID0gZmlsbF9mdW5jOworCWVyciA9IGV4dDJmc19kaXJfaXRlcmF0ZTIoZnMsIGZoLT5pbm8sIDAsIE5VTEwsIG9wX3JlYWRkaXJfaXRlciwgJmkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoZnNfd3JpdGVhYmxlKGZzKSkgeworCQlyZXQgPSB1cGRhdGVfYXRpbWUoZnMsIGZoLT5pbm8pOworCQlpZiAocmV0KQorCQkJZ290byBvdXQ7CisJfQorb3V0OgorCXB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZi0+YmZsKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX2FjY2Vzcyhjb25zdCBjaGFyICpwYXRoLCBpbnQgbWFzaykKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwllcnJjb2RlX3QgZXJyOworCWV4dDJfaW5vX3QgaW5vOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogcGF0aD0lcyBtYXNrPTB4JXhcbiIsIF9fZnVuY19fLCBwYXRoLCBtYXNrKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVyciB8fCBpbm8gPT0gMCkgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBpbm8sIG1hc2spOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgb3BfY3JlYXRlKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCWV4dDJfaW5vX3QgcGFyZW50LCBjaGlsZDsKKwljaGFyICp0ZW1wX3BhdGggPSBzdHJkdXAocGF0aCk7CisJZXJyY29kZV90IGVycjsKKwljaGFyICpub2RlX25hbWUsIGE7CisJaW50IGZpbGV0eXBlOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlkYmdfcHJpbnRmKCIlczogcGF0aD0lcyBtb2RlPTAlb1xuIiwgX19mdW5jX18sIHBhdGgsIG1vZGUpOworCWlmICghdGVtcF9wYXRoKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0KKwlub2RlX25hbWUgPSBzdHJyY2hyKHRlbXBfcGF0aCwgJy8nKTsKKwlpZiAoIW5vZGVfbmFtZSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIG91dDsKKwl9CisJbm9kZV9uYW1lKys7CisJYSA9ICpub2RlX25hbWU7CisJKm5vZGVfbmFtZSA9IDA7CisKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWlmICghZnNfY2FuX2FsbG9jYXRlKGZmLCAxKSkgeworCQlyZXQgPSAtRU5PU1BDOworCQlnb3RvIG91dDI7CisJfQorCisJZXJyID0gZXh0MmZzX25hbWVpKGZzLCBFWFQyX1JPT1RfSU5PLCBFWFQyX1JPT1RfSU5PLCB0ZW1wX3BhdGgsCisJCQkgICAmcGFyZW50KTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgMCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IGNoZWNrX2ludW1fYWNjZXNzKGZzLCBwYXJlbnQsIFdfT0spOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKKworCSpub2RlX25hbWUgPSBhOworCisJZmlsZXR5cGUgPSBleHQyX2ZpbGVfdHlwZShtb2RlKTsKKworCWVyciA9IGV4dDJmc19uZXdfaW5vZGUoZnMsIHBhcmVudCwgbW9kZSwgMCwgJmNoaWxkKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgcGFyZW50LCBlcnIpOworCQlnb3RvIG91dDI7CisJfQorCisJZGJnX3ByaW50ZigiJXM6IGNyZWF0aW5nIGlubz0lZC9uYW1lPSVzIGluIGRpcj0lZFxuIiwgX19mdW5jX18sIGNoaWxkLAorCQkgICBub2RlX25hbWUsIHBhcmVudCk7CisJZXJyID0gZXh0MmZzX2xpbmsoZnMsIHBhcmVudCwgbm9kZV9uYW1lLCBjaGlsZCwgZmlsZXR5cGUpOworCWlmIChlcnIgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJZXJyID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIHBhcmVudCk7CisJCWlmIChlcnIpIHsKKwkJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgcGFyZW50LCBlcnIpOworCQkJZ290byBvdXQyOworCQl9CisKKwkJZXJyID0gZXh0MmZzX2xpbmsoZnMsIHBhcmVudCwgbm9kZV9uYW1lLCBjaGlsZCwKKwkJCQkgICAgIGZpbGV0eXBlKTsKKwl9CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIHBhcmVudCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCXJldCA9IHVwZGF0ZV9tdGltZShmcywgcGFyZW50LCBOVUxMKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDI7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwlpbm9kZS5pX21vZGUgPSBtb2RlOworCWlub2RlLmlfbGlua3NfY291bnQgPSAxOworCWlub2RlLmlfZXh0cmFfaXNpemUgPSBzaXplb2Yoc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UpIC0KKwkJRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFOworCWlub2RlLmlfdWlkID0gY3R4dC0+dWlkOworCWlub2RlLmlfZ2lkID0gY3R4dC0+Z2lkOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKSB7CisJCWV4dDJfZXh0ZW50X2hhbmRsZV90IGhhbmRsZTsKKworCQlpbm9kZS5pX2ZsYWdzICY9IH5FWFQ0X0VYVEVOVFNfRkw7CisJCXJldCA9IGV4dDJmc19leHRlbnRfb3BlbjIoZnMsIGNoaWxkLAorCQkJCQkgIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwgJmhhbmRsZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwl9CisKKwllcnIgPSBleHQyZnNfd3JpdGVfbmV3X2lub2RlKGZzLCBjaGlsZCwgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgY2hpbGQsIGVycik7CisJCWdvdG8gb3V0MjsKKwl9CisKKwlpbm9kZS5pX2dlbmVyYXRpb24gPSBmZi0+bmV4dF9nZW5lcmF0aW9uKys7CisJaW5pdF90aW1lcygmaW5vZGUpOworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBjaGlsZCwgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBjaGlsZCwgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIGNoaWxkLCAxLCAwKTsKKworCXJldCA9IF9fb3Bfb3BlbihmZiwgcGF0aCwgZnApOworCWlmIChyZXQpCisJCWdvdG8gb3V0MjsKK291dDI6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworb3V0OgorCWZyZWUodGVtcF9wYXRoKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX2Z0cnVuY2F0ZShjb25zdCBjaGFyICpwYXRoIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCW9mZl90IGxlbiwgc3RydWN0IGZ1c2VfZmlsZV9pbmZvICpmcCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqZmggPQorCQkoc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKikodWludHB0cl90KWZwLT5maDsKKwlleHQyX2ZpbHN5cyBmczsKKwlleHQyX2ZpbGVfdCBlZnA7CisJZXJyY29kZV90IGVycjsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJRlVTRTJGU19DSEVDS19NQUdJQyhmcywgZmgsIEZVU0UyRlNfRklMRV9NQUdJQyk7CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZCBsZW49JWpkXG4iLCBfX2Z1bmNfXywgZmgtPmlubywgbGVuKTsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWlmICghZnNfd3JpdGVhYmxlKGZzKSkgeworCQlyZXQgPSAtRVJPRlM7CisJCWdvdG8gb3V0OworCX0KKworCWVyciA9IGV4dDJmc19maWxlX29wZW4oZnMsIGZoLT5pbm8sIGZoLT5vcGVuX2ZsYWdzLCAmZWZwKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJZXJyID0gZXh0MmZzX2ZpbGVfc2V0X3NpemUyKGVmcCwgbGVuKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJZ290byBvdXQyOworCX0KKworb3V0MjoKKwllcnIgPSBleHQyZnNfZmlsZV9jbG9zZShlZnApOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKKwlyZXQgPSB1cGRhdGVfbXRpbWUoZnMsIGZoLT5pbm8sIE5VTEwpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCitvdXQ6CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9wX2ZnZXRhdHRyKGNvbnN0IGNoYXIgKnBhdGggRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkgICAgICAgc3RydWN0IHN0YXQgKnN0YXRidWYsCisJCSAgICAgICBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCA9CisJCShzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqKSh1aW50cHRyX3QpZnAtPmZoOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBmaCwgRlVTRTJGU19GSUxFX01BR0lDKTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgZmgtPmlubyk7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlyZXQgPSBzdGF0X2lub2RlKGZzLCBmaC0+aW5vLCBzdGF0YnVmKTsKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IG9wX3V0aW1lbnMoY29uc3QgY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjIGN0dlsyXSkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgdGltZXNwZWMgdHZbMl07CisJZXh0Ml9maWxzeXMgZnM7CisJZXJyY29kZV90IGVycjsKKwlleHQyX2lub190IGlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSBpbm9kZTsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwllcnIgPSBleHQyZnNfbmFtZWkoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIHBhdGgsICZpbm8pOworCWlmIChlcnIpIHsKKwkJcmV0ID0gdHJhbnNsYXRlX2Vycm9yKGZzLCAwLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZFxuIiwgX19mdW5jX18sIGlubyk7CisKKwlyZXQgPSBjaGVja19pbnVtX2FjY2VzcyhmcywgaW5vLCBXX09LKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihpbm9kZSkpOworCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2Z1bGwoZnMsIGlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIGlubywgZXJyKTsKKwkJZ290byBvdXQ7CisJfQorCisJdHZbMF0gPSBjdHZbMF07CisJdHZbMV0gPSBjdHZbMV07CisjaWZkZWYgVVRJTUVfTk9XCisJaWYgKHR2WzBdLnR2X25zZWMgPT0gVVRJTUVfTk9XKQorCQlnZXRfbm93KHR2KTsKKwlpZiAodHZbMV0udHZfbnNlYyA9PSBVVElNRV9OT1cpCisJCWdldF9ub3codHYgKyAxKTsKKyNlbmRpZiAvKiBVVElNRV9OT1cgKi8KKyNpZmRlZiBVVElNRV9PTUlUCisJaWYgKHR2WzBdLnR2X25zZWMgIT0gVVRJTUVfT01JVCkKKwkJRVhUNF9JTk9ERV9TRVRfWFRJTUUoaV9hdGltZSwgdHYsICZpbm9kZSk7CisJaWYgKHR2WzFdLnR2X25zZWMgIT0gVVRJTUVfT01JVCkKKwkJRVhUNF9JTk9ERV9TRVRfWFRJTUUoaV9tdGltZSwgdHYgKyAxLCAmaW5vZGUpOworI2VuZGlmIC8qIFVUSU1FX09NSVQgKi8KKwlyZXQgPSB1cGRhdGVfY3RpbWUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKSZpbm9kZSwKKwkJCQkgICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKK291dDoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisJcmV0dXJuIHJldDsKK30KKworI2lmZGVmIFNVUFBPUlRfSV9GTEFHUworc3RhdGljIGludCBpb2N0bF9nZXRmbGFncyhleHQyX2ZpbHN5cyBmcywgc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoLAorCQkJICB2b2lkICpkYXRhKQoreworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisKKwlGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBmaCwgRlVTRTJGU19GSUxFX01BR0lDKTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgZmgtPmlubyk7CisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCSooX191MzIgKilkYXRhID0gaW5vZGUuaV9mbGFncyAmIEVYVDJfRkxfVVNFUl9WSVNJQkxFOworCXJldHVybiAwOworfQorCisjZGVmaW5lIEZVU0UyRlNfTU9ESUZJQUJMRV9JRkxBR1MgXAorCShFWFQyX0lNTVVUQUJMRV9GTCB8IEVYVDJfQVBQRU5EX0ZMIHwgRVhUMl9OT0RVTVBfRkwgfCBcCisJIEVYVDJfTk9BVElNRV9GTCB8IEVYVDNfSk9VUk5BTF9EQVRBX0ZMIHwgRVhUMl9ESVJTWU5DX0ZMIHwgXAorCSBFWFQyX1RPUERJUl9GTCkKKworc3RhdGljIGludCBpb2N0bF9zZXRmbGFncyhleHQyX2ZpbHN5cyBmcywgc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoLAorCQkJICB2b2lkICpkYXRhKQoreworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJaW50IHJldDsKKwlfX3UzMiBmbGFncyA9ICooX191MzIgKilkYXRhOworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisKKwlGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBmaCwgRlVTRTJGU19GSUxFX01BR0lDKTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgZmgtPmlubyk7CisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCWlmIChjdHh0LT51aWQgIT0gMCAmJiBpbm9kZS5pX3VpZCAhPSBjdHh0LT51aWQpCisJCXJldHVybiAtRVBFUk07CisKKwlpZiAoKGlub2RlLmlfZmxhZ3MgXiBmbGFncykgJiB+RlVTRTJGU19NT0RJRklBQkxFX0lGTEFHUykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpbm9kZS5pX2ZsYWdzID0gKGlub2RlLmlfZmxhZ3MgJiB+RlVTRTJGU19NT0RJRklBQkxFX0lGTEFHUykgfAorCQkJKGZsYWdzICYgRlVTRTJGU19NT0RJRklBQkxFX0lGTEFHUyk7CisKKwlyZXQgPSB1cGRhdGVfY3RpbWUoZnMsIGZoLT5pbm8sICZpbm9kZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBmaC0+aW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlvY3RsX2dldHZlcnNpb24oZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCwKKwkJCSAgICB2b2lkICpkYXRhKQoreworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisKKwlGVVNFMkZTX0NIRUNLX01BR0lDKGZzLCBmaCwgRlVTRTJGU19GSUxFX01BR0lDKTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkXG4iLCBfX2Z1bmNfXywgZmgtPmlubyk7CisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCSooX191MzIgKilkYXRhID0gaW5vZGUuaV9nZW5lcmF0aW9uOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlvY3RsX3NldHZlcnNpb24oZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCwKKwkJCSAgICB2b2lkICpkYXRhKQoreworCWVycmNvZGVfdCBlcnI7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJaW50IHJldDsKKwlfX3UzMiBnZW5lcmF0aW9uID0gKihfX3UzMiAqKWRhdGE7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKworCUZVU0UyRlNfQ0hFQ0tfTUFHSUMoZnMsIGZoLCBGVVNFMkZTX0ZJTEVfTUFHSUMpOworCWRiZ19wcmludGYoIiVzOiBpbm89JWRcbiIsIF9fZnVuY19fLCBmaC0+aW5vKTsKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBmaC0+aW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCisJaWYgKGN0eHQtPnVpZCAhPSAwICYmIGlub2RlLmlfdWlkICE9IGN0eHQtPnVpZCkKKwkJcmV0dXJuIC1FUEVSTTsKKworCWlub2RlLmlfZ2VuZXJhdGlvbiA9IGdlbmVyYXRpb247CisKKwlyZXQgPSB1cGRhdGVfY3RpbWUoZnMsIGZoLT5pbm8sICZpbm9kZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBmaC0+aW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCXJldHVybiAwOworfQorI2VuZGlmIC8qIFNVUFBPUlRfSV9GTEFHUyAqLworCisjaWZkZWYgRklUUklNCitzdGF0aWMgaW50IGlvY3RsX2ZpdHJpbShleHQyX2ZpbHN5cyBmcywgc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoLAorCQkJdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZnN0cmltX3JhbmdlICpmciA9IGRhdGE7CisJYmxrNjRfdCBzdGFydCwgZW5kLCBtYXhfYmxvY2tzLCBiLCBjbGVhcmVkOworCWVycmNvZGVfdCBlcnIgPSAwOworCisJc3RhcnQgPSBmci0+c3RhcnQgLyBmcy0+YmxvY2tzaXplOworCWVuZCA9IChmci0+c3RhcnQgKyBmci0+bGVuIC0gMSkgLyBmcy0+YmxvY2tzaXplOworCWRiZ19wcmludGYoIiVzOiBzdGFydD0lbGx1IGVuZD0lbGx1XG4iLCBfX2Z1bmNfXywgc3RhcnQsIGVuZCk7CisKKwlpZiAoc3RhcnQgPCBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykKKwkJc3RhcnQgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlpZiAoc3RhcnQgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQlzdGFydCA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIDE7CisKKwlpZiAoZW5kIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spCisJCWVuZCA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCWlmIChlbmQgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQllbmQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSAxOworCisJY2xlYXJlZCA9IDA7CisJbWF4X2Jsb2NrcyA9IDIwNDhVTEwgKiAxMDI0ICogMTAyNCAvIGZzLT5ibG9ja3NpemU7CisKKwlmci0+bGVuID0gMDsKKwl3aGlsZSAoc3RhcnQgPD0gZW5kKSB7CisJCWVyciA9IGV4dDJmc19maW5kX2ZpcnN0X3plcm9fYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLAorCQkJCQkJCSAgIHN0YXJ0LCBlbmQsICZzdGFydCk7CisJCWlmIChlcnIgPT0gRU5PRU5UKQorCQkJcmV0dXJuIDA7CisJCWVsc2UgaWYgKGVycikKKwkJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisKKwkJYiA9IHN0YXJ0ICsgbWF4X2Jsb2NrcyA8IGVuZCA/IHN0YXJ0ICsgbWF4X2Jsb2NrcyA6IGVuZDsKKwkJZXJyID0gIGV4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsCisJCQkJCQkJICAgc3RhcnQsIGIsICZiKTsKKwkJaWYgKGVyciAmJiBlcnIgIT0gRU5PRU5UKQorCQkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJaWYgKGIgLSBzdGFydCA+PSBmci0+bWlubGVuKSB7CisJCQllcnIgPSBpb19jaGFubmVsX2Rpc2NhcmQoZnMtPmlvLCBzdGFydCwgYiAtIHN0YXJ0KTsKKwkJCWlmIChlcnIpCisJCQkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwkJCWNsZWFyZWQgKz0gYiAtIHN0YXJ0OworCQkJZnItPmxlbiA9IGNsZWFyZWQgKiBmcy0+YmxvY2tzaXplOworCQl9CisJCXN0YXJ0ID0gYiArIDE7CisJfQorCisJcmV0dXJuIGVycjsKK30KKyNlbmRpZiAvKiBGSVRSSU0gKi8KKworI2lmIEZVU0VfVkVSU0lPTiA+PSBGVVNFX01BS0VfVkVSU0lPTigyLCA4KQorc3RhdGljIGludCBvcF9pb2N0bChjb25zdCBjaGFyICpwYXRoIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgaW50IGNtZCwKKwkJICAgIHZvaWQgKmFyZyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCSAgICBzdHJ1Y3QgZnVzZV9maWxlX2luZm8gKmZwLAorCQkgICAgdW5zaWduZWQgaW50IGZsYWdzIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqZmggPQorCQkoc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKikodWludHB0cl90KWZwLT5maDsKKwlleHQyX2ZpbHN5cyBmczsKKwlpbnQgcmV0ID0gMDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJcHRocmVhZF9tdXRleF9sb2NrKCZmZi0+YmZsKTsKKwlzd2l0Y2ggKCh1bnNpZ25lZCBsb25nKSBjbWQpIHsKKyNpZmRlZiBTVVBQT1JUX0lfRkxBR1MKKwljYXNlIEVYVDJfSU9DX0dFVEZMQUdTOgorCQlyZXQgPSBpb2N0bF9nZXRmbGFncyhmcywgZmgsIGRhdGEpOworCQlicmVhazsKKwljYXNlIEVYVDJfSU9DX1NFVEZMQUdTOgorCQlyZXQgPSBpb2N0bF9zZXRmbGFncyhmcywgZmgsIGRhdGEpOworCQlicmVhazsKKwljYXNlIEVYVDJfSU9DX0dFVFZFUlNJT046CisJCXJldCA9IGlvY3RsX2dldHZlcnNpb24oZnMsIGZoLCBkYXRhKTsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0lPQ19TRVRWRVJTSU9OOgorCQlyZXQgPSBpb2N0bF9zZXR2ZXJzaW9uKGZzLCBmaCwgZGF0YSk7CisJCWJyZWFrOworI2VuZGlmCisjaWZkZWYgRklUUklNCisJY2FzZSBGSVRSSU06CisJCXJldCA9IGlvY3RsX2ZpdHJpbShmcywgZmgsIGRhdGEpOworCQlicmVhazsKKyNlbmRpZgorCWRlZmF1bHQ6CisJCWRiZ19wcmludGYoIiVzOiBVbmtub3duIGlvY3RsICVkXG4iLCBfX2Z1bmNfXywgY21kKTsKKwkJcmV0ID0gLUVOT1RUWTsKKwl9CisJcHRocmVhZF9tdXRleF91bmxvY2soJmZmLT5iZmwpOworCisJcmV0dXJuIHJldDsKK30KKyNlbmRpZiAvKiBGVVNFIDI4ICovCisKK3N0YXRpYyBpbnQgb3BfYm1hcChjb25zdCBjaGFyICpwYXRoLCBzaXplX3QgYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJICAgdWludDY0X3QgKmlkeCkKK3sKKwlzdHJ1Y3QgZnVzZV9jb250ZXh0ICpjdHh0ID0gZnVzZV9nZXRfY29udGV4dCgpOworCXN0cnVjdCBmdXNlMmZzICpmZiA9IChzdHJ1Y3QgZnVzZTJmcyAqKWN0eHQtPnByaXZhdGVfZGF0YTsKKwlleHQyX2ZpbHN5cyBmczsKKwlleHQyX2lub190IGlubzsKKwllcnJjb2RlX3QgZXJyOworCWludCByZXQgPSAwOworCisJRlVTRTJGU19DSEVDS19DT05URVhUKGZmKTsKKwlmcyA9IGZmLT5mczsKKwlwdGhyZWFkX211dGV4X2xvY2soJmZmLT5iZmwpOworCWVyciA9IGV4dDJmc19uYW1laShmcywgRVhUMl9ST09UX0lOTywgRVhUMl9ST09UX0lOTywgcGF0aCwgJmlubyk7CisJaWYgKGVycikgeworCQlyZXQgPSB0cmFuc2xhdGVfZXJyb3IoZnMsIDAsIGVycik7CisJCWdvdG8gb3V0OworCX0KKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkIGJsaz0lIlBSSXU2NCJcbiIsIF9fZnVuY19fLCBpbm8sICppZHgpOworCisJZXJyID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIE5VTEwsIE5VTEwsIDAsICppZHgsIDAsIChibGs2NF90ICopaWR4KTsKKwlpZiAoZXJyKSB7CisJCXJldCA9IHRyYW5zbGF0ZV9lcnJvcihmcywgaW5vLCBlcnIpOworCQlnb3RvIG91dDsKKwl9CisKK291dDoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisJcmV0dXJuIHJldDsKK30KKworI2lmIEZVU0VfVkVSU0lPTiA+PSBGVVNFX01BS0VfVkVSU0lPTigyLCA5KQorIyBpZmRlZiBTVVBQT1JUX0ZBTExPQ0FURQorc3RhdGljIGludCBmYWxsb2NhdGVfaGVscGVyKHN0cnVjdCBmdXNlX2ZpbGVfaW5mbyAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZzZXQsCisJCQkgICAgb2ZmX3QgbGVuKQoreworCXN0cnVjdCBmdXNlX2NvbnRleHQgKmN0eHQgPSBmdXNlX2dldF9jb250ZXh0KCk7CisJc3RydWN0IGZ1c2UyZnMgKmZmID0gKHN0cnVjdCBmdXNlMmZzICopY3R4dC0+cHJpdmF0ZV9kYXRhOworCXN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICpmaCA9CisJCShzdHJ1Y3QgZnVzZTJmc19maWxlX2hhbmRsZSAqKSh1aW50cHRyX3QpZnAtPmZoOworCWV4dDJfZmlsc3lzIGZzOworCXN0cnVjdCBleHQyX2lub2RlX2xhcmdlIGlub2RlOworCWJsazY0X3Qgc3RhcnQsIGVuZDsKKwlfX3U2NCBmc2l6ZTsKKwllcnJjb2RlX3QgZXJyOworCWludCBmbGFnczsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJRlVTRTJGU19DSEVDS19NQUdJQyhmcywgZmgsIEZVU0UyRlNfRklMRV9NQUdJQyk7CisJc3RhcnQgPSBvZmZzZXQgLyBmcy0+YmxvY2tzaXplOworCWVuZCA9IChvZmZzZXQgKyBsZW4gLSAxKSAvIGZzLT5ibG9ja3NpemU7CisJZGJnX3ByaW50ZigiJXM6IGlubz0lZCBtb2RlPTB4JXggc3RhcnQ9JWpkIGVuZD0lbGx1XG4iLCBfX2Z1bmNfXywKKwkJICAgZmgtPmlubywgbW9kZSwgb2Zmc2V0IC8gZnMtPmJsb2Nrc2l6ZSwgZW5kKTsKKwlpZiAoIWZzX2Nhbl9hbGxvY2F0ZShmZiwgbGVuIC8gZnMtPmJsb2Nrc2l6ZSkpCisJCXJldHVybiAtRU5PU1BDOworCisJbWVtc2V0KCZpbm9kZSwgMCwgc2l6ZW9mKGlub2RlKSk7CisJZXJyID0gZXh0MmZzX3JlYWRfaW5vZGVfZnVsbChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKwlmc2l6ZSA9IEVYVDJfSV9TSVpFKCZpbm9kZSk7CisKKwkvKiBBbGxvY2F0ZSBhIGJ1bmNoIG9mIGJsb2NrcyAqLworCWZsYWdzID0gKG1vZGUgJiBGTF9LRUVQX1NJWkVfRkxBRyA/IDAgOgorCQkJRVhUMl9GQUxMT0NBVEVfSU5JVF9CRVlPTkRfRU9GKTsKKwllcnIgPSBleHQyZnNfZmFsbG9jYXRlKGZzLCBmbGFncywgZmgtPmlubywKKwkJCSAgICAgICAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkgICAgICAgfjBVTEwsIHN0YXJ0LCBlbmQgLSBzdGFydCArIDEpOworCWlmIChlcnIgJiYgZXJyICE9IEVYVDJfRVRfQkxPQ0tfQUxMT0NfRkFJTCkKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCS8qIFVwZGF0ZSBpX3NpemUgKi8KKwlpZiAoIShtb2RlICYgRkxfS0VFUF9TSVpFX0ZMQUcpKSB7CisJCWlmICgoX191NjQpIG9mZnNldCArIGxlbiA+IGZzaXplKSB7CisJCQllcnIgPSBleHQyZnNfaW5vZGVfc2l6ZV9zZXQoZnMsCisJCQkJCQkoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJCQlvZmZzZXQgKyBsZW4pOworCQkJaWYgKGVycikKKwkJCQlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCQl9CisJfQorCisJZXJyID0gdXBkYXRlX210aW1lKGZzLCBmaC0+aW5vLCAmaW5vZGUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwllcnIgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgICAgIHNpemVvZihpbm9kZSkpOworCWlmIChlcnIpCisJCXJldHVybiB0cmFuc2xhdGVfZXJyb3IoZnMsIGZoLT5pbm8sIGVycik7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgZXJyY29kZV90IGNsZWFuX2Jsb2NrX21pZGRsZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUsIG9mZl90IG9mZnNldCwKKwkJCQkgIG9mZl90IGxlbiwgY2hhciAqKmJ1ZikKK3sKKwlibGs2NF90IGJsazsKKwlvZmZfdCByZXNpZHVlOworCWludCByZXRmbGFnczsKKwllcnJjb2RlX3QgZXJyOworCisJcmVzaWR1ZSA9IG9mZnNldCAlIGZzLT5ibG9ja3NpemU7CisJaWYgKHJlc2lkdWUgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoISpidWYpIHsKKwkJZXJyID0gZXh0MmZzX2dldF9tZW0oZnMtPmJsb2Nrc2l6ZSwgYnVmKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCisJZXJyID0gZXh0MmZzX2JtYXAyKGZzLCBpbm8sIChzdHJ1Y3QgZXh0Ml9pbm9kZSAqKWlub2RlLCAqYnVmLCAwLAorCQkJICAgb2Zmc2V0IC8gZnMtPmJsb2Nrc2l6ZSwgJnJldGZsYWdzLCAmYmxrKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCWlmICghYmxrIHx8IChyZXRmbGFncyAmIEJNQVBfUkVUX1VOSU5JVCkpCisJCXJldHVybiAwOworCisJZXJyID0gaW9fY2hhbm5lbF9yZWFkX2Jsayhmcy0+aW8sIGJsaywgMSwgKmJ1Zik7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCW1lbXNldCgqYnVmICsgcmVzaWR1ZSwgMCwgbGVuKTsKKworCXJldHVybiBpb19jaGFubmVsX3dyaXRlX2Jsayhmcy0+aW8sIGJsaywgMSwgKmJ1Zik7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgY2xlYW5fYmxvY2tfZWRnZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJICBzdHJ1Y3QgZXh0Ml9pbm9kZV9sYXJnZSAqaW5vZGUsIG9mZl90IG9mZnNldCwKKwkJCQkgIGludCBjbGVhbl9iZWZvcmUsIGNoYXIgKipidWYpCit7CisJYmxrNjRfdCBibGs7CisJaW50IHJldGZsYWdzOworCW9mZl90IHJlc2lkdWU7CisJZXJyY29kZV90IGVycjsKKworCXJlc2lkdWUgPSBvZmZzZXQgJSBmcy0+YmxvY2tzaXplOworCWlmIChyZXNpZHVlID09IDApCisJCXJldHVybiAwOworCisJaWYgKCEqYnVmKSB7CisJCWVyciA9IGV4dDJmc19nZXRfbWVtKGZzLT5ibG9ja3NpemUsIGJ1Zik7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCX0KKworCWVyciA9IGV4dDJmc19ibWFwMihmcywgaW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKilpbm9kZSwgKmJ1ZiwgMCwKKwkJCSAgIG9mZnNldCAvIGZzLT5ibG9ja3NpemUsICZyZXRmbGFncywgJmJsayk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGlvX2NoYW5uZWxfcmVhZF9ibGsoZnMtPmlvLCBibGssIDEsICpidWYpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisJaWYgKCFibGsgfHwgKHJldGZsYWdzICYgQk1BUF9SRVRfVU5JTklUKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoY2xlYW5fYmVmb3JlKQorCQltZW1zZXQoKmJ1ZiwgMCwgcmVzaWR1ZSk7CisJZWxzZQorCQltZW1zZXQoKmJ1ZiArIHJlc2lkdWUsIDAsIGZzLT5ibG9ja3NpemUgLSByZXNpZHVlKTsKKworCXJldHVybiBpb19jaGFubmVsX3dyaXRlX2Jsayhmcy0+aW8sIGJsaywgMSwgKmJ1Zik7Cit9CisKK3N0YXRpYyBpbnQgcHVuY2hfaGVscGVyKHN0cnVjdCBmdXNlX2ZpbGVfaW5mbyAqZnAsIGludCBtb2RlLCBvZmZfdCBvZmZzZXQsCisJCQlvZmZfdCBsZW4pCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGZ1c2UyZnNfZmlsZV9oYW5kbGUgKmZoID0KKwkJKHN0cnVjdCBmdXNlMmZzX2ZpbGVfaGFuZGxlICopKHVpbnRwdHJfdClmcC0+Zmg7CisJZXh0Ml9maWxzeXMgZnM7CisJc3RydWN0IGV4dDJfaW5vZGVfbGFyZ2UgaW5vZGU7CisJYmxrNjRfdCBzdGFydCwgZW5kOworCWVycmNvZGVfdCBlcnI7CisJY2hhciAqYnVmID0gTlVMTDsKKworCUZVU0UyRlNfQ0hFQ0tfQ09OVEVYVChmZik7CisJZnMgPSBmZi0+ZnM7CisJRlVTRTJGU19DSEVDS19NQUdJQyhmcywgZmgsIEZVU0UyRlNfRklMRV9NQUdJQyk7CisJZGJnX3ByaW50ZigiJXM6IG9mZnNldD0lamQgbGVuPSVqZFxuIiwgX19mdW5jX18sIG9mZnNldCwgbGVuKTsKKworCS8qIGtlcm5lbCBleHQ0IHB1bmNoIHJlcXVpcmVzIHRoaXMgZmxhZyB0byBiZSBzZXQgKi8KKwlpZiAoIShtb2RlICYgRkxfS0VFUF9TSVpFX0ZMQUcpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIFB1bmNoIG91dCBhIGJ1bmNoIG9mIGJsb2NrcyAqLworCXN0YXJ0ID0gKG9mZnNldCArIGZzLT5ibG9ja3NpemUgLSAxKSAvIGZzLT5ibG9ja3NpemU7CisJZW5kID0gKG9mZnNldCArIGxlbiAtIGZzLT5ibG9ja3NpemUpIC8gZnMtPmJsb2Nrc2l6ZTsKKwlkYmdfcHJpbnRmKCIlczogaW5vPSVkIG1vZGU9MHgleCBzdGFydD0lbGx1IGVuZD0lbGx1XG4iLCBfX2Z1bmNfXywKKwkJICAgZmgtPmlubywgbW9kZSwgc3RhcnQsIGVuZCk7CisKKwltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwllcnIgPSBleHQyZnNfcmVhZF9pbm9kZV9mdWxsKGZzLCBmaC0+aW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICBzaXplb2YoaW5vZGUpKTsKKwlpZiAoZXJyKQorCQlyZXR1cm4gdHJhbnNsYXRlX2Vycm9yKGZzLCBmaC0+aW5vLCBlcnIpOworCisJLyogWmVybyBldmVyeXRoaW5nIGJlZm9yZSB0aGUgZmlyc3QgYmxvY2sgYW5kIGFmdGVyIHRoZSBsYXN0IGJsb2NrICovCisJaWYgKChvZmZzZXQgLyBmcy0+YmxvY2tzaXplKSA9PSAoKG9mZnNldCArIGxlbikgLyBmcy0+YmxvY2tzaXplKSkKKwkJZXJyID0gY2xlYW5fYmxvY2tfbWlkZGxlKGZzLCBmaC0+aW5vLCAmaW5vZGUsIG9mZnNldCwKKwkJCQkJIGxlbiwgJmJ1Zik7CisJZWxzZSB7CisJCWVyciA9IGNsZWFuX2Jsb2NrX2VkZ2UoZnMsIGZoLT5pbm8sICZpbm9kZSwgb2Zmc2V0LCAwLCAmYnVmKTsKKwkJaWYgKCFlcnIpCisJCQllcnIgPSBjbGVhbl9ibG9ja19lZGdlKGZzLCBmaC0+aW5vLCAmaW5vZGUsCisJCQkJCSAgICAgICBvZmZzZXQgKyBsZW4sIDEsICZidWYpOworCX0KKwlpZiAoYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJmJ1Zik7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCS8qIFVubWFwIGZ1bGwgYmxvY2tzIGluIHRoZSBtaWRkbGUgKi8KKwlpZiAoc3RhcnQgPD0gZW5kKSB7CisJCWVyciA9IGV4dDJmc19wdW5jaChmcywgZmgtPmlubywgKHN0cnVjdCBleHQyX2lub2RlICopJmlub2RlLAorCQkJCSAgIE5VTEwsIHN0YXJ0LCBlbmQpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKwl9CisKKwllcnIgPSB1cGRhdGVfbXRpbWUoZnMsIGZoLT5pbm8sICZpbm9kZSk7CisJaWYgKGVycikKKwkJcmV0dXJuIGVycjsKKworCWVyciA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBmaC0+aW5vLCAoc3RydWN0IGV4dDJfaW5vZGUgKikmaW5vZGUsCisJCQkJICAgICAgc2l6ZW9mKGlub2RlKSk7CisJaWYgKGVycikKKwkJcmV0dXJuIHRyYW5zbGF0ZV9lcnJvcihmcywgZmgtPmlubywgZXJyKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG9wX2ZhbGxvY2F0ZShjb25zdCBjaGFyICpwYXRoIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwgaW50IG1vZGUsCisJCQlvZmZfdCBvZmZzZXQsIG9mZl90IGxlbiwKKwkJCXN0cnVjdCBmdXNlX2ZpbGVfaW5mbyAqZnApCit7CisJc3RydWN0IGZ1c2VfY29udGV4dCAqY3R4dCA9IGZ1c2VfZ2V0X2NvbnRleHQoKTsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSAoc3RydWN0IGZ1c2UyZnMgKiljdHh0LT5wcml2YXRlX2RhdGE7CisJZXh0Ml9maWxzeXMgZnMgPSBmZi0+ZnM7CisJaW50IHJldDsKKworCS8qIENhdGNoIHVua25vd24gZmxhZ3MgKi8KKwlpZiAobW9kZSAmIH4oRkxfUFVOQ0hfSE9MRV9GTEFHIHwgRkxfS0VFUF9TSVpFX0ZMQUcpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXB0aHJlYWRfbXV0ZXhfbG9jaygmZmYtPmJmbCk7CisJaWYgKCFmc193cml0ZWFibGUoZnMpKSB7CisJCXJldCA9IC1FUk9GUzsKKwkJZ290byBvdXQ7CisJfQorCWlmIChtb2RlICYgRkxfUFVOQ0hfSE9MRV9GTEFHKQorCQlyZXQgPSBwdW5jaF9oZWxwZXIoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKKwllbHNlCisJCXJldCA9IGZhbGxvY2F0ZV9oZWxwZXIoZnAsIG1vZGUsIG9mZnNldCwgbGVuKTsKK291dDoKKwlwdGhyZWFkX211dGV4X3VubG9jaygmZmYtPmJmbCk7CisKKwlyZXR1cm4gcmV0OworfQorIyBlbmRpZiAvKiBTVVBQT1JUX0ZBTExPQ0FURSAqLworI2VuZGlmIC8qIEZVU0UgMjkgKi8KKworc3RhdGljIHN0cnVjdCBmdXNlX29wZXJhdGlvbnMgZnNfb3BzID0geworCS5pbml0ID0gb3BfaW5pdCwKKwkuZGVzdHJveSA9IG9wX2Rlc3Ryb3ksCisJLmdldGF0dHIgPSBvcF9nZXRhdHRyLAorCS5yZWFkbGluayA9IG9wX3JlYWRsaW5rLAorCS5ta25vZCA9IG9wX21rbm9kLAorCS5ta2RpciA9IG9wX21rZGlyLAorCS51bmxpbmsgPSBvcF91bmxpbmssCisJLnJtZGlyID0gb3Bfcm1kaXIsCisJLnN5bWxpbmsgPSBvcF9zeW1saW5rLAorCS5yZW5hbWUgPSBvcF9yZW5hbWUsCisJLmxpbmsgPSBvcF9saW5rLAorCS5jaG1vZCA9IG9wX2NobW9kLAorCS5jaG93biA9IG9wX2Nob3duLAorCS50cnVuY2F0ZSA9IG9wX3RydW5jYXRlLAorCS5vcGVuID0gb3Bfb3BlbiwKKwkucmVhZCA9IG9wX3JlYWQsCisJLndyaXRlID0gb3Bfd3JpdGUsCisJLnN0YXRmcyA9IG9wX3N0YXRmcywKKwkucmVsZWFzZSA9IG9wX3JlbGVhc2UsCisJLmZzeW5jID0gb3BfZnN5bmMsCisJLnNldHhhdHRyID0gb3Bfc2V0eGF0dHIsCisJLmdldHhhdHRyID0gb3BfZ2V0eGF0dHIsCisJLmxpc3R4YXR0ciA9IG9wX2xpc3R4YXR0ciwKKwkucmVtb3ZleGF0dHIgPSBvcF9yZW1vdmV4YXR0ciwKKwkub3BlbmRpciA9IG9wX29wZW4sCisJLnJlYWRkaXIgPSBvcF9yZWFkZGlyLAorCS5yZWxlYXNlZGlyID0gb3BfcmVsZWFzZSwKKwkuZnN5bmNkaXIgPSBvcF9mc3luYywKKwkuYWNjZXNzID0gb3BfYWNjZXNzLAorCS5jcmVhdGUgPSBvcF9jcmVhdGUsCisJLmZ0cnVuY2F0ZSA9IG9wX2Z0cnVuY2F0ZSwKKwkuZmdldGF0dHIgPSBvcF9mZ2V0YXR0ciwKKwkudXRpbWVucyA9IG9wX3V0aW1lbnMsCisjaWYgRlVTRV9WRVJTSU9OID49IEZVU0VfTUFLRV9WRVJTSU9OKDIsIDkpCisjIGlmIGRlZmluZWQoVVRJTUVfTk9XKSB8fCBkZWZpbmVkKFVUSU1FX09NSVQpCisJLmZsYWdfdXRpbWVfb21pdF9vayA9IDEsCisjIGVuZGlmCisjZW5kaWYKKwkuYm1hcCA9IG9wX2JtYXAsCisjaWZkZWYgU1VQRVJGTFVPVVMKKwkubG9jayA9IG9wX2xvY2ssCisJLnBvbGwgPSBvcF9wb2xsLAorI2VuZGlmCisjaWYgRlVTRV9WRVJTSU9OID49IEZVU0VfTUFLRV9WRVJTSU9OKDIsIDgpCisJLmlvY3RsID0gb3BfaW9jdGwsCisJLmZsYWdfbnVsbHBhdGhfb2sgPSAxLAorI2VuZGlmCisjaWYgRlVTRV9WRVJTSU9OID49IEZVU0VfTUFLRV9WRVJTSU9OKDIsIDkpCisJLmZsYWdfbm9wYXRoID0gMSwKKyMgaWZkZWYgU1VQUE9SVF9GQUxMT0NBVEUKKwkuZmFsbG9jYXRlID0gb3BfZmFsbG9jYXRlLAorIyBlbmRpZgorI2VuZGlmCit9OworCitzdGF0aWMgaW50IGdldF9yYW5kb21fYnl0ZXModm9pZCAqcCwgc2l6ZV90IHN6KQoreworCWludCBmZDsKKwlzc2l6ZV90IHI7CisKKwlmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKwlpZiAoZmQgPCAwKSB7CisJCXBlcnJvcigiL2Rldi91cmFuZG9tIik7CisJCXJldHVybiAwOworCX0KKworCXIgPSByZWFkKGZkLCBwLCBzeik7CisKKwljbG9zZShmZCk7CisJcmV0dXJuIChzaXplX3QpIHIgPT0gc3o7Cit9CisKK2VudW0geworCUZVU0UyRlNfVkVSU0lPTiwKKwlGVVNFMkZTX0hFTFAsCisJRlVTRTJGU19IRUxQRlVMTCwKK307CisKKyNkZWZpbmUgRlVTRTJGU19PUFQodCwgcCwgdikgeyB0LCBvZmZzZXRvZihzdHJ1Y3QgZnVzZTJmcywgcCksIHYgfQorCitzdGF0aWMgc3RydWN0IGZ1c2Vfb3B0IGZ1c2UyZnNfb3B0c1tdID0geworCUZVU0UyRlNfT1BUKCJybyIsCQlybywJCQkxKSwKKwlGVVNFMkZTX09QVCgiZXJyb3JzPXBhbmljIiwJcGFuaWNfb25fZXJyb3IsCQkxKSwKKwlGVVNFMkZTX09QVCgibWluaXhkZiIsCQltaW5peGRmLAkJMSksCisJRlVTRTJGU19PUFQoImZ1c2UyZnNfZGVidWciLAlkZWJ1ZywJCQkxKSwKKwlGVVNFMkZTX09QVCgibm9fZGVmYXVsdF9vcHRzIiwJbm9fZGVmYXVsdF9vcHRzLAkxKSwKKworCUZVU0VfT1BUX0tFWSgiLVYiLCAgICAgICAgICAgICBGVVNFMkZTX1ZFUlNJT04pLAorCUZVU0VfT1BUX0tFWSgiLS12ZXJzaW9uIiwgICAgICBGVVNFMkZTX1ZFUlNJT04pLAorCUZVU0VfT1BUX0tFWSgiLWgiLCAgICAgICAgICAgICBGVVNFMkZTX0hFTFApLAorCUZVU0VfT1BUX0tFWSgiLS1oZWxwIiwgICAgICAgICBGVVNFMkZTX0hFTFApLAorCUZVU0VfT1BUX0tFWSgiLS1oZWxwZnVsbCIsICAgICBGVVNFMkZTX0hFTFBGVUxMKSwKKwlGVVNFX09QVF9FTkQKK307CisKKworc3RhdGljIGludCBmdXNlMmZzX29wdF9wcm9jKHZvaWQgKmRhdGEsIGNvbnN0IGNoYXIgKmFyZywKKwkJCSAgICBpbnQga2V5LCBzdHJ1Y3QgZnVzZV9hcmdzICpvdXRhcmdzKQoreworCXN0cnVjdCBmdXNlMmZzICpmZiA9IGRhdGE7CisKKwlzd2l0Y2ggKGtleSkgeworCWNhc2UgRlVTRV9PUFRfS0VZX05PTk9QVDoKKwkJaWYgKCFmZi0+ZGV2aWNlKSB7CisJCQlmZi0+ZGV2aWNlID0gc3RyZHVwKGFyZyk7CisJCQlyZXR1cm4gMDsKKwkJfQorCQlyZXR1cm4gMTsKKwljYXNlIEZVU0UyRlNfSEVMUDoKKwljYXNlIEZVU0UyRlNfSEVMUEZVTEw6CisJCWZwcmludGYoc3RkZXJyLAorCSJ1c2FnZTogJXMgZGV2aWNlL2ltYWdlIG1vdW50cG9pbnQgW29wdGlvbnNdXG4iCisJIlxuIgorCSJnZW5lcmFsIG9wdGlvbnM6XG4iCisJIiAgICAtbyBvcHQsW29wdC4uLl0gIG1vdW50IG9wdGlvbnNcbiIKKwkiICAgIC1oICAgLS1oZWxwICAgICAgcHJpbnQgaGVscFxuIgorCSIgICAgLVYgICAtLXZlcnNpb24gICBwcmludCB2ZXJzaW9uXG4iCisJIlxuIgorCSJmdXNlMmZzIG9wdGlvbnM6XG4iCisJIiAgICAtbyBybyAgICAgICAgICAgICAgICAgIHJlYWQtb25seSBtb3VudFxuIgorCSIgICAgLW8gZXJyb3JzPXBhbmljICAgICAgICBkdW1wIGNvcmUgb24gZXJyb3JcbiIKKwkiICAgIC1vIG1pbml4ZGYgICAgICAgICAgICAgbWluaXgtc3R5bGUgZGZcbiIKKwkiICAgIC1vIG5vX2RlZmF1bHRfb3B0cyAgICAgZG8gbm90IGluY2x1ZGUgZGVmYXVsdCBmdXNlIG9wdGlvbnNcbiIKKwkiICAgIC1vIGZ1c2UyZnNfZGVidWcgICAgICAgZW5hYmxlIGZ1c2UyZnMgZGVidWdnaW5nXG4iCisJIlxuIiwKKwkJCW91dGFyZ3MtPmFyZ3ZbMF0pOworCQlpZiAoa2V5ID09IEZVU0UyRlNfSEVMUEZVTEwpIHsKKwkJCWZ1c2Vfb3B0X2FkZF9hcmcob3V0YXJncywgIi1obyIpOworCQkJZnVzZV9tYWluKG91dGFyZ3MtPmFyZ2MsIG91dGFyZ3MtPmFyZ3YsICZmc19vcHMsIE5VTEwpOworCQl9IGVsc2UgeworCQkJZnByaW50ZihzdGRlcnIsICJUcnkgLS1oZWxwZnVsbCB0byBnZXQgYSBsaXN0IG9mICIKKwkJCQkiYWxsIGZsYWdzLCBpbmNsdWRpbmcgdGhlIEZVU0Ugb3B0aW9ucy5cbiIpOworCQl9CisJCWV4aXQoMSk7CisKKwljYXNlIEZVU0UyRlNfVkVSU0lPTjoKKwkJZnByaW50ZihzdGRlcnIsICJmdXNlMmZzICVzICglcylcbiIsIEUyRlNQUk9HU19WRVJTSU9OLAorCQkJRTJGU1BST0dTX0RBVEUpOworCQlmdXNlX29wdF9hZGRfYXJnKG91dGFyZ3MsICItLXZlcnNpb24iKTsKKwkJZnVzZV9tYWluKG91dGFyZ3MtPmFyZ2MsIG91dGFyZ3MtPmFyZ3YsICZmc19vcHMsIE5VTEwpOworCQlleGl0KDApOworCX0KKwlyZXR1cm4gMTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlzdHJ1Y3QgZnVzZV9hcmdzIGFyZ3MgPSBGVVNFX0FSR1NfSU5JVChhcmdjLCBhcmd2KTsKKwlzdHJ1Y3QgZnVzZTJmcyBmY3R4OworCWVycmNvZGVfdCBlcnI7CisJY2hhciAqbG9nZmlsZTsKKwljaGFyIGV4dHJhX2FyZ3NbQlVGU0laXTsKKwlpbnQgcmV0ID0gMCwgZmxhZ3MgPSBFWFQyX0ZMQUdfNjRCSVRTIHwgRVhUMl9GTEFHX0VYQ0xVU0lWRTsKKworCW1lbXNldCgmZmN0eCwgMCwgc2l6ZW9mKGZjdHgpKTsKKwlmY3R4Lm1hZ2ljID0gRlVTRTJGU19NQUdJQzsKKworCWZ1c2Vfb3B0X3BhcnNlKCZhcmdzLCAmZmN0eCwgZnVzZTJmc19vcHRzLCBmdXNlMmZzX29wdF9wcm9jKTsKKwlpZiAoZmN0eC5kZXZpY2UgPT0gTlVMTCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIk1pc3NpbmcgZXh0NCBkZXZpY2UvaW1hZ2VcbiIpOworCQlmcHJpbnRmKHN0ZGVyciwgIlNlZSAnJXMgLWgnIGZvciB1c2FnZVxuIiwgYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGZjdHgucm8pCisJCXByaW50ZigiJXMiLCBfKCJNb3VudGluZyByZWFkLW9ubHkuXG4iKSk7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKwlzZXRfY29tX2Vycl9nZXR0ZXh0KGdldHRleHQpOworI2VuZGlmCisJYWRkX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKworCS8qIFNldCB1cCBlcnJvciBsb2dnaW5nICovCisJbG9nZmlsZSA9IGdldGVudigiRlVTRTJGU19MT0dGSUxFIik7CisJaWYgKGxvZ2ZpbGUpIHsKKwkJZmN0eC5lcnJfZnAgPSBmb3Blbihsb2dmaWxlLCAiYSIpOworCQlpZiAoIWZjdHguZXJyX2ZwKSB7CisJCQlwZXJyb3IobG9nZmlsZSk7CisJCQlnb3RvIG91dF9ub2ZzOworCQl9CisJfSBlbHNlCisJCWZjdHguZXJyX2ZwID0gc3RkZXJyOworCisJLyogV2lsbCB3ZSBhbGxvdyB1c2VycyB0byBhbGxvY2F0ZSBldmVyeSBsYXN0IGJsb2NrPyAqLworCWlmIChnZXRlbnYoIkZVU0UyRlNfQUxMT0NfQUxMX0JMT0NLUyIpKSB7CisJCXByaW50ZihfKCIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gIgorCQkgICAgICAgIlRoaXMgaXMgZGFuZ2Vyb3VzIVxuIiksIGZjdHguZGV2aWNlKTsKKwkJZmN0eC5hbGxvY19hbGxfYmxvY2tzID0gMTsKKwl9CisKKwkvKiBTdGFydCB1cCB0aGUgZnMgKHdoaWxlIHdlIHN0aWxsIGNhbiB1c2Ugc3Rkb3V0KSAqLworCXJldCA9IDI7CisJaWYgKCFmY3R4LnJvKQorCQlmbGFncyB8PSBFWFQyX0ZMQUdfUlc7CisJZXJyID0gZXh0MmZzX29wZW4yKGZjdHguZGV2aWNlLCBOVUxMLCBmbGFncywgMCwgMCwgdW5peF9pb19tYW5hZ2VyLAorCQkJICAgJmdsb2JhbF9mcyk7CisJaWYgKGVycikgeworCQlwcmludGYoXygiJXM6ICVzLlxuIiksIGZjdHguZGV2aWNlLCBlcnJvcl9tZXNzYWdlKGVycikpOworCQlwcmludGYoXygiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIiksIGZjdHguZGV2aWNlKTsKKwkJZ290byBvdXRfbm9mczsKKwl9CisJZmN0eC5mcyA9IGdsb2JhbF9mczsKKwlnbG9iYWxfZnMtPnByaXZfZGF0YSA9ICZmY3R4OworCisJcmV0ID0gMzsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoZ2xvYmFsX2ZzLT5zdXBlcikpIHsKKwkJaWYgKCFmY3R4LnJvKSB7CisJCQlwcmludGYoXygiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIiksIGZjdHguZGV2aWNlKTsKKwkJCWVyciA9IGV4dDJmc19ydW5fZXh0M19qb3VybmFsKCZnbG9iYWxfZnMpOworCQkJaWYgKGVycikgeworCQkJCXByaW50ZihfKCIlczogJXMuXG4iKSwgZmN0eC5kZXZpY2UsCisJCQkJICAgICAgIGVycm9yX21lc3NhZ2UoZXJyKSk7CisJCQkJcHJpbnRmKF8oIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIpLAorCQkJCSAgICAgICBmY3R4LmRldmljZSk7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KGdsb2JhbF9mcy0+c3VwZXIpOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZ2xvYmFsX2ZzKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZigiJXMiLCBfKCJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nICIKKwkJCSAgICAgICAiYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIikpOworCQkJZ290byBvdXQ7CisJCX0KKwl9CisKKwlpZiAoIWZjdHgucm8pIHsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsKGdsb2JhbF9mcy0+c3VwZXIpKQorCQkJcHJpbnRmKF8oIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iKSwKKwkJCSAgICAgICBmY3R4LmRldmljZSk7CisJCWVyciA9IGV4dDJmc19yZWFkX2lub2RlX2JpdG1hcChnbG9iYWxfZnMpOworCQlpZiAoZXJyKSB7CisJCQl0cmFuc2xhdGVfZXJyb3IoZ2xvYmFsX2ZzLCAwLCBlcnIpOworCQkJZ290byBvdXQ7CisJCX0KKwkJZXJyID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGdsb2JhbF9mcyk7CisJCWlmIChlcnIpIHsKKwkJCXRyYW5zbGF0ZV9lcnJvcihnbG9iYWxfZnMsIDAsIGVycik7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCWlmICghKGdsb2JhbF9mcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX1ZBTElEX0ZTKSkKKwkJcHJpbnRmKCIlcyIsIF8oIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgIgorCQkgICAgICAgImlzIHJlY29tbWVuZGVkLlxuIikpOworCWlmIChnbG9iYWxfZnMtPnN1cGVyLT5zX21heF9tbnRfY291bnQgPiAwICYmCisJICAgIGdsb2JhbF9mcy0+c3VwZXItPnNfbW50X2NvdW50ID49IGdsb2JhbF9mcy0+c3VwZXItPnNfbWF4X21udF9jb3VudCkKKwkJcHJpbnRmKCIlcyIsIF8oIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyAiCisJCSAgICAgICAiZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIikpOworCWlmIChnbG9iYWxfZnMtPnN1cGVyLT5zX2NoZWNraW50ZXJ2YWwgPiAwICYmCisJICAgICh0aW1lX3QpIChnbG9iYWxfZnMtPnN1cGVyLT5zX2xhc3RjaGVjayArCisJCSAgICAgIGdsb2JhbF9mcy0+c3VwZXItPnNfY2hlY2tpbnRlcnZhbCkgPD0gdGltZSgwKSkKKwkJcHJpbnRmKCIlcyIsIF8oIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgIgorCQkgICAgICAgImlzIHJlY29tbWVuZGVkLlxuIikpOworCWlmIChnbG9iYWxfZnMtPnN1cGVyLT5zX2xhc3Rfb3JwaGFuKQorCQlwcmludGYoIiVzIiwKKwkJICAgICAgIF8oIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIikpOworCisJaWYgKGdsb2JhbF9mcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX0VSUk9SX0ZTKSB7CisJCXByaW50ZigiJXMiLAorCQkgICAgICAgXygiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIpKTsKKwkJZ290byBvdXQ7CisJfQorCisJLyogSW5pdGlhbGl6ZSBnZW5lcmF0aW9uIGNvdW50ZXIgKi8KKwlnZXRfcmFuZG9tX2J5dGVzKCZmY3R4Lm5leHRfZ2VuZXJhdGlvbiwgc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCisJLyogU2V0IHVwIGRlZmF1bHQgZnVzZSBwYXJhbWV0ZXJzICovCisJc25wcmludGYoZXh0cmFfYXJncywgQlVGU0laLCAiLW9rZXJuZWxfY2FjaGUsc3VidHlwZT1leHQ0LHVzZV9pbm8sIgorCQkgImZzbmFtZT0lcyxhdHRyX3RpbWVvdXQ9MCIgRlVTRV9QTEFURk9STV9PUFRTLAorCQkgYXJndlsxXSk7CisJaWYgKGZjdHgubm9fZGVmYXVsdF9vcHRzID09IDApCisJCWZ1c2Vfb3B0X2FkZF9hcmcoJmFyZ3MsIGV4dHJhX2FyZ3MpOworCisJaWYgKGZjdHguZGVidWcpIHsKKwkJaW50CWk7CisKKwkJcHJpbnRmKCJmdXNlIGFyZ3VtZW50czoiKTsKKwkJZm9yIChpID0gMDsgaSA8IGFyZ3MuYXJnYzsgaSsrKQorCQkJcHJpbnRmKCIgJyVzJyIsIGFyZ3MuYXJndltpXSk7CisJCXByaW50ZigiXG4iKTsKKwl9CisKKwlwdGhyZWFkX211dGV4X2luaXQoJmZjdHguYmZsLCBOVUxMKTsKKwlmdXNlX21haW4oYXJncy5hcmdjLCBhcmdzLmFyZ3YsICZmc19vcHMsICZmY3R4KTsKKwlwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmZjdHguYmZsKTsKKworCXJldCA9IDA7CitvdXQ6CisJZXJyID0gZXh0MmZzX2Nsb3NlKGdsb2JhbF9mcyk7CisJaWYgKGVycikKKwkJY29tX2Vycihhcmd2WzBdLCBlcnIsICJ3aGlsZSBjbG9zaW5nIGZzIik7CisJZ2xvYmFsX2ZzID0gTlVMTDsKK291dF9ub2ZzOgorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBfX3RyYW5zbGF0ZV9lcnJvcihleHQyX2ZpbHN5cyBmcywgZXJyY29kZV90IGVyciwgZXh0Ml9pbm9fdCBpbm8sCisJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKQoreworCXN0cnVjdCB0aW1lc3BlYyBub3c7CisJaW50IHJldCA9IGVycjsKKwlzdHJ1Y3QgZnVzZTJmcyAqZmYgPSBmcy0+cHJpdl9kYXRhOworCWludCBpc19lcnIgPSAwOworCisJLyogVHJhbnNsYXRlIGV4dDIgZXJyb3IgdG8gdW5peCBlcnJvciBjb2RlICovCisJaWYgKGVyciA8IEVYVDJfRVRfQkFTRSkKKwkJZ290byBub190cmFuc2xhdGlvbjsKKwlzd2l0Y2ggKGVycikgeworCWNhc2UgRVhUMl9FVF9OT19NRU1PUlk6CisJY2FzZSBFWFQyX0VUX1REQl9FUlJfT09NOgorCQlyZXQgPSAtRU5PTUVNOworCQlicmVhazsKKwljYXNlIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDoKKwljYXNlIEVYVDJfRVRfTExTRUVLX0ZBSUxFRDoKKwkJcmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VUX05PX0RJUkVDVE9SWToKKwkJcmV0ID0gLUVOT1RESVI7CisJCWJyZWFrOworCWNhc2UgRVhUMl9FVF9GSUxFX05PVF9GT1VORDoKKwkJcmV0ID0gLUVOT0VOVDsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VUX0RJUl9OT19TUEFDRToKKwkJaXNfZXJyID0gMTsKKwljYXNlIEVYVDJfRVRfVE9PU01BTEw6CisJY2FzZSBFWFQyX0VUX0JMT0NLX0FMTE9DX0ZBSUw6CisJY2FzZSBFWFQyX0VUX0lOT0RFX0FMTE9DX0ZBSUw6CisJY2FzZSBFWFQyX0VUX0VBX05PX1NQQUNFOgorCQlyZXQgPSAtRU5PU1BDOworCQlicmVhazsKKwljYXNlIEVYVDJfRVRfU1lNTElOS19MT09QOgorCQlyZXQgPSAtRU1MSU5LOworCQlicmVhazsKKwljYXNlIEVYVDJfRVRfRklMRV9UT09fQklHOgorCQlyZXQgPSAtRUZCSUc7CisJCWJyZWFrOworCWNhc2UgRVhUMl9FVF9UREJfRVJSX0VYSVNUUzoKKwljYXNlIEVYVDJfRVRfRklMRV9FWElTVFM6CisJCXJldCA9IC1FRVhJU1Q7CisJCWJyZWFrOworCWNhc2UgRVhUMl9FVF9NTVBfRkFJTEVEOgorCWNhc2UgRVhUMl9FVF9NTVBfRlNDS19PTjoKKwkJcmV0ID0gLUVCVVNZOworCQlicmVhazsKKwljYXNlIEVYVDJfRVRfRUFfS0VZX05PVF9GT1VORDoKKyNpZmRlZiBFTk9EQVRBCisJCXJldCA9IC1FTk9EQVRBOworI2Vsc2UKKwkJcmV0ID0gLUVOT0VOVDsKKyNlbmRpZgorCQlicmVhazsKKwkvKiBTb21ldGltZXMgZnVzZSByZXR1cm5zIGEgZ2FyYmFnZSBmaWxlIGhhbmRsZSBwb2ludGVyIHRvIHVzLi4uICovCisJY2FzZSBFWFQyX0VUX01BR0lDX0VYVDJfRklMRToKKwkJcmV0ID0gLUVGQVVMVDsKKwkJYnJlYWs7CisJY2FzZSBFWFQyX0VUX1VOSU1QTEVNRU5URUQ6CisJCXJldCA9IC1FT1BOT1RTVVBQOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlpc19lcnIgPSAxOworCQlyZXQgPSAtRUlPOworCQlicmVhazsKKwl9CisKK25vX3RyYW5zbGF0aW9uOgorCWlmICghaXNfZXJyKQorCQlyZXR1cm4gcmV0OworCisJaWYgKGlubykKKwkJZnByaW50ZihmZi0+ZXJyX2ZwLCAiRlVTRTJGUyAoJXMpOiAlcyAoaW5vZGUgIyVkKSBhdCAlczolZC5cbiIsCisJCQlmcyAmJiBmcy0+ZGV2aWNlX25hbWUgPyBmcy0+ZGV2aWNlX25hbWUgOiAiPz8/IiwKKwkJCWVycm9yX21lc3NhZ2UoZXJyKSwgaW5vLCBmaWxlLCBsaW5lKTsKKwllbHNlCisJCWZwcmludGYoZmYtPmVycl9mcCwgIkZVU0UyRlMgKCVzKTogJXMgYXQgJXM6JWQuXG4iLAorCQkJZnMgJiYgZnMtPmRldmljZV9uYW1lID8gZnMtPmRldmljZV9uYW1lIDogIj8/PyIsCisJCQllcnJvcl9tZXNzYWdlKGVyciksIGZpbGUsIGxpbmUpOworCWZmbHVzaChmZi0+ZXJyX2ZwKTsKKworCS8qIE1ha2UgYSBub3RlIGluIHRoZSBlcnJvciBsb2cgKi8KKwlnZXRfbm93KCZub3cpOworCWZzLT5zdXBlci0+c19sYXN0X2Vycm9yX3RpbWUgPSBub3cudHZfc2VjOworCWZzLT5zdXBlci0+c19sYXN0X2Vycm9yX2lubyA9IGlubzsKKwlmcy0+c3VwZXItPnNfbGFzdF9lcnJvcl9saW5lID0gbGluZTsKKwlmcy0+c3VwZXItPnNfbGFzdF9lcnJvcl9ibG9jayA9IGVycjsgLyogWWVhaC4uLiAqLworCXN0cm5jcHkoKGNoYXIgKilmcy0+c3VwZXItPnNfbGFzdF9lcnJvcl9mdW5jLCBmaWxlLAorCQlzaXplb2YoZnMtPnN1cGVyLT5zX2xhc3RfZXJyb3JfZnVuYykpOworCWlmIChmcy0+c3VwZXItPnNfZmlyc3RfZXJyb3JfdGltZSA9PSAwKSB7CisJCWZzLT5zdXBlci0+c19maXJzdF9lcnJvcl90aW1lID0gbm93LnR2X3NlYzsKKwkJZnMtPnN1cGVyLT5zX2ZpcnN0X2Vycm9yX2lubyA9IGlubzsKKwkJZnMtPnN1cGVyLT5zX2ZpcnN0X2Vycm9yX2xpbmUgPSBsaW5lOworCQlmcy0+c3VwZXItPnNfZmlyc3RfZXJyb3JfYmxvY2sgPSBlcnI7CisJCXN0cm5jcHkoKGNoYXIgKilmcy0+c3VwZXItPnNfZmlyc3RfZXJyb3JfZnVuYywgZmlsZSwKKwkJCXNpemVvZihmcy0+c3VwZXItPnNfZmlyc3RfZXJyb3JfZnVuYykpOworCX0KKworCWZzLT5zdXBlci0+c19lcnJvcl9jb3VudCsrOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlleHQyZnNfZmx1c2goZnMpOworCWlmIChmZi0+cGFuaWNfb25fZXJyb3IpCisJCWFib3J0KCk7CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvaXNtb3VudGVkLmMgYi9lMmZzcHJvZ3MvbWlzYy9pc21vdW50ZWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWEwZTA0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvaXNtb3VudGVkLmMKQEAgLTAsMCArMSwyMTggQEAKKy8qCisgKiBpc21vdW50ZWQuYyAtLS0gQ2hlY2sgdG8gc2VlIGlmIHRoZSBmaWxlc3lzdGVtIHdhcyBtb3VudGVkCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk1LDE5OTYsMTk5NywxOTk4LDE5OTksMjAwMCwyMDA4IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZmRlZiBIQVZFX0xJTlVYX0ZEX0gKKyNpbmNsdWRlIDxsaW51eC9mZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9NTlRFTlRfSAorI2luY2x1ZGUgPG1udGVudC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjaW5jbHVkZSAiZnNjay5oIgorCisvKgorICogZXh0MmZzX2NoZWNrX2lmX21vdW50ZWQgZmxhZ3MKKyAqLworI2RlZmluZSBNRl9NT1VOVEVECQkxCisKKyNpbmNsdWRlICJldC9jb21fZXJyLmgiCisKKyNpZmRlZiBIQVZFX1NFVE1OVEVOVAorc3RhdGljIGNoYXIgKnNraXBfb3Zlcl9ibGFuayhjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKKwkJY3ArKzsKKwlyZXR1cm4gY3A7Cit9CisKK3N0YXRpYyBjaGFyICpza2lwX292ZXJfd29yZChjaGFyICpjcCkKK3sKKwl3aGlsZSAoKmNwICYmICFpc3NwYWNlKCpjcCkpCisJCWNwKys7CisJcmV0dXJuIGNwOworfQorCitzdGF0aWMgY2hhciAqcGFyc2Vfd29yZChjaGFyICoqYnVmKQoreworCWNoYXIgKndvcmQsICpuZXh0OworCisJd29yZCA9ICpidWY7CisJaWYgKCp3b3JkID09IDApCisJCXJldHVybiAwOworCisJd29yZCA9IHNraXBfb3Zlcl9ibGFuayh3b3JkKTsKKwluZXh0ID0gc2tpcF9vdmVyX3dvcmQod29yZCk7CisJaWYgKCpuZXh0KQorCQkqbmV4dCsrID0gMDsKKwkqYnVmID0gbmV4dDsKKwlyZXR1cm4gd29yZDsKK30KKyNlbmRpZgorCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIGNoZWNrcyBhIGZpbGUgaW4gL2V0Yy9tdGFiIGZvcm1hdCB0byBzZWUgaWYgYQorICogZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgUmV0dXJucyBhbiBlcnJvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGV4aXN0CisgKiBvciBjYW4ndCBiZSBvcGVuZWQuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgY2hlY2tfbW50ZW50X2ZpbGUoY29uc3QgY2hhciAqbXRhYl9maWxlLCBjb25zdCBjaGFyICpmaWxlLAorCQkJCSAgIGludCAqbW91bnRfZmxhZ3MpCit7CisjaWZkZWYgSEFWRV9TRVRNTlRFTlQKKwlzdHJ1Y3Qgc3RhdAlzdF9idWY7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJZGV2X3QJCWZpbGVfZGV2PTAsIGZpbGVfcmRldj0wOworCWlub190CQlmaWxlX2lubz0wOworCUZJTEUgCQkqZjsKKwljaGFyCQlidWZbMTAyNF0sICpkZXZpY2UgPSAwLCAqbW50X2RpciA9IDAsICpjcDsKKworCSptb3VudF9mbGFncyA9IDA7CisJaWYgKChmID0gc2V0bW50ZW50IChtdGFiX2ZpbGUsICJyIikpID09IE5VTEwpCisJCXJldHVybiBlcnJubzsKKwlpZiAoc3RhdChmaWxlLCAmc3RfYnVmKSA9PSAwKSB7CisJCWlmIChTX0lTQkxLKHN0X2J1Zi5zdF9tb2RlKSkgeworI2lmbmRlZiBfX0dOVV9fIC8qIFRoZSBHTlUgaHVyZCBpcyBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHN0YXQgZGV2aWNlcyAqLworCQkJZmlsZV9yZGV2ID0gc3RfYnVmLnN0X3JkZXY7CisjZW5kaWYJLyogX19HTlVfXyAqLworCQl9IGVsc2UgeworCQkJZmlsZV9kZXYgPSBzdF9idWYuc3RfZGV2OworCQkJZmlsZV9pbm8gPSBzdF9idWYuc3RfaW5vOworCQl9CisJfQorCXdoaWxlICgxKSB7CisJCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgZikpIHsKKwkJCWRldmljZSA9IG1udF9kaXIgPSAwOworCQkJYnJlYWs7CisJCX0KKwkJYnVmW3NpemVvZihidWYpLTFdID0gMDsKKworCQljcCA9IGJ1ZjsKKwkJZGV2aWNlID0gcGFyc2Vfd29yZCgmY3ApOworCQlpZiAoIWRldmljZSB8fCAqZGV2aWNlID09ICcjJykKKwkJCXJldHVybiAwOwkvKiBJZ25vcmUgYmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzICovCisJCW1udF9kaXIgPSBwYXJzZV93b3JkKCZjcCk7CisKKwkJaWYgKGRldmljZVswXSAhPSAnLycpCisJCQljb250aW51ZTsKKworCQlpZiAoc3RyY21wKGZpbGUsIGRldmljZSkgPT0gMCkKKwkJCWJyZWFrOworCQlpZiAoc3RhdChkZXZpY2UsICZzdF9idWYpID09IDApIHsKKwkJCWlmIChTX0lTQkxLKHN0X2J1Zi5zdF9tb2RlKSkgeworI2lmbmRlZiBfX0dOVV9fCisJCQkJaWYgKGZpbGVfcmRldiAmJiAoZmlsZV9yZGV2ID09IHN0X2J1Zi5zdF9yZGV2KSkKKwkJCQkJYnJlYWs7CisjZW5kaWYJLyogX19HTlVfXyAqLworCQkJfSBlbHNlIHsKKwkJCQlpZiAoZmlsZV9kZXYgJiYgKChmaWxlX2RldiA9PSBzdF9idWYuc3RfZGV2KSAmJgorCQkJCQkJIChmaWxlX2lubyA9PSBzdF9idWYuc3RfaW5vKSkpCisJCQkJCWJyZWFrOworCQkJfQorCQl9CisJfQorCisJaWYgKG1udF9kaXIgPT0gMCkgeworI2lmbmRlZiBfX0dOVV9fIC8qIFRoZSBHTlUgaHVyZCBpcyBicm9rZW4gd2l0aCByZXNwZWN0IHRvIHN0YXQgZGV2aWNlcyAqLworCQkvKgorCQkgKiBEbyBhbiBleHRyYSBjaGVjayB0byBzZWUgaWYgdGhpcyBpcyB0aGUgcm9vdCBkZXZpY2UuICBXZQorCQkgKiBjYW4ndCB0cnVzdCAvZXRjL210YWIsIGFuZCAvcHJvYy9tb3VudHMgd2lsbCBvbmx5IGxpc3QKKwkJICogL2Rldi9yb290IGZvciB0aGUgcm9vdCBmaWxlc3lzdGVtLiAgQXJnaC4gIEluc3RlYWQgd2UKKwkJICogY2hlY2sgaWYgdGhlIGdpdmVuIGRldmljZSBoYXMgdGhlIHNhbWUgbWFqb3IvbWlub3IgbnVtYmVyCisJCSAqIGFzIHRoZSBkZXZpY2UgdGhhdCB0aGUgcm9vdCBkaXJlY3RvcnkgaXMgb24uCisJCSAqLworCQlpZiAoZmlsZV9yZGV2ICYmIChzdGF0KCIvIiwgJnN0X2J1ZikgPT0gMCkgJiYKKwkJICAgIChzdF9idWYuc3RfZGV2ID09IGZpbGVfcmRldikpCisJCQkqbW91bnRfZmxhZ3MgPSBNRl9NT1VOVEVEOworI2VuZGlmCS8qIF9fR05VX18gKi8KKwkJZ290byBlcnJvdXQ7CisJfQorI2lmbmRlZiBfX0dOVV9fIC8qIFRoZSBHTlUgaHVyZCBpcyBkZWZpY2llbnQ7IHdoYXQgZWxzZSBpcyBuZXc/ICovCisJLyogVmFsaWRhdGUgdGhlIGVudHJ5IGluIGNhc2UgL2V0Yy9tdGFiIGlzIG91dCBvZiBkYXRlICovCisJLyoKKwkgKiBXZSBuZWVkIHRvIGJlIHBhcmFub2lkLCBiZWNhdXNlIHNvbWUgYnJva2VuIGRpc3RyaWJ1dGlvbnMKKwkgKiAocmVhZDogU2xhY2t3YXJlKSBkb24ndCBpbml0aWFsaXplIC9ldGMvbXRhYiBiZWZvcmUgY2hlY2tpbmcKKwkgKiBhbGwgb2YgdGhlIG5vbi1yb290IGZpbGVzeXN0ZW1zIG9uIHRoZSBkaXNrLgorCSAqLworCWlmIChzdGF0KG1udF9kaXIsICZzdF9idWYpIDwgMCkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJaWYgKHJldHZhbCA9PSBFTk9FTlQpIHsKKyNpZmRlZiBERUJVRworCQkJcHJpbnRmKCJCb2d1cyBlbnRyeSBpbiAlcyEgICglcyBkb2VzIG5vdCBleGlzdClcbiIsCisJCQkgICAgICAgbXRhYl9maWxlLCBtbnRfZGlyKTsKKyNlbmRpZiAvKiBERUJVRyAqLworCQkJcmV0dmFsID0gMDsKKwkJfQorCQlnb3RvIGVycm91dDsKKwl9CisJaWYgKGZpbGVfcmRldiAmJiAoc3RfYnVmLnN0X2RldiAhPSBmaWxlX3JkZXYpKSB7CisjaWZkZWYgREVCVUcKKwkJcHJpbnRmKCJCb2d1cyBlbnRyeSBpbiAlcyEgICglcyBub3QgbW91bnRlZCBvbiAlcylcbiIsCisJCSAgICAgICBtdGFiX2ZpbGUsIGZpbGUsIG1udF9kaXIpOworI2VuZGlmIC8qIERFQlVHICovCisJCWdvdG8gZXJyb3V0OworCX0KKyNlbmRpZiAvKiBfX0dOVV9fICovCisJKm1vdW50X2ZsYWdzID0gTUZfTU9VTlRFRDsKKworCXJldHZhbCA9IDA7CitlcnJvdXQ6CisJZW5kbW50ZW50IChmKTsKKwlyZXR1cm4gcmV0dmFsOworI2Vsc2UgLyogIUhBVkVfU0VUTU5URU5UICovCisJcmV0dXJuIDA7CisjZW5kaWYgLyogSEFWRV9NTlRFTlRfSCAqLworfQorCitpbnQgaXNfbW91bnRlZChjb25zdCBjaGFyICpmaWxlKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJaW50CQltb3VudF9mbGFncyA9IDA7CisKKyNpZmRlZiBfX2xpbnV4X18KKwlyZXR2YWwgPSBjaGVja19tbnRlbnRfZmlsZSgiL3Byb2MvbW91bnRzIiwgZmlsZSwgJm1vdW50X2ZsYWdzKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gMDsKKwlpZiAobW91bnRfZmxhZ3MpCisJCXJldHVybiAxOworI2VuZGlmIC8qIF9fbGludXhfXyAqLworCXJldHZhbCA9IGNoZWNrX21udGVudF9maWxlKCIvZXRjL210YWIiLCBmaWxlLCAmbW91bnRfZmxhZ3MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAwOworCXJldHVybiAobW91bnRfZmxhZ3MpOworfQorCisjaWZkZWYgREVCVUcKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpZiAoYXJnYyA8IDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgZGV2aWNlXG4iLCBhcmd2WzBdKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoaXNfbW91bnRlZChhcmd2WzFdKSkKKwkJcHJpbnRmKCJcdCVzIGlzIG1vdW50ZWQuXG4iLCBhcmd2WzFdKTsKKwlleGl0KDApOworfQorI2VuZGlmIC8qIERFQlVHICovCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9sb2dzYXZlLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9sb2dzYXZlLjguaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBmYmU0MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL2xvZ3NhdmUuOC5pbgpAQCAtMCwwICsxLDYxIEBACisuXCIgLSotIG5yb2ZmIC0qLQorLlwiIENvcHlyaWdodCAyMDAzIGJ5IFRoZW9kb3JlIFRzJ28uICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlRIIExPR1NBVkUgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorbG9nc2F2ZSBcLSBzYXZlIHRoZSBvdXRwdXQgb2YgYSBjb21tYW5kIGluIGEgbG9nZmlsZQorLlNIIFNZTk9QU0lTCisuQiBsb2dzYXZlCitbCisuQiBcLWFzdgorXQorLkkgbG9nZmlsZSBjbWRfcHJvZyBbIC4uLiBdCisuU0ggREVTQ1JJUFRJT04KK1RoZQorLkIgbG9nc2F2ZQorcHJvZ3JhbSB3aWxsIGV4ZWN1dGUKKy5JIGNtZF9wcm9nIAord2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50KHMpLCBhbmQgc2F2ZSBhIGNvcHkgb2YgaXRzIG91dHB1dCB0bworLklSIGxvZ2ZpbGUgLgorSWYgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGZvcgorLkkgbG9nZmlsZQorZG9lcyBub3QgZXhpc3QsIAorLkIgbG9nc2F2ZQord2lsbCBhY2N1bXVsYXRlIHRoZSBvdXRwdXQgaW4gbWVtb3J5IHVudGlsIGl0IGNhbiBiZSB3cml0dGVuIG91dC4KK0EgY29weSBvZiB0aGUgb3V0cHV0IHdpbGwgYWxzbyBiZSB3cml0dGVuIHRvIHN0YW5kYXJkIG91dHB1dC4KKy5QUAorSWYgCisuSSBjbWRfcHJvZworaXMgYSBzaW5nbGUgaHlwaGVuICgnLScpLCB0aGVuIGluc3RlYWQgb2YgZXhlY3V0aW5nIGEgcHJvZ3JhbSwKKy5CIGxvZ3NhdmUKK3dpbGwgdGFrZSBpdHMgaW5wdXQgZnJvbSBzdGFuZGFyZCBpbnB1dCBhbmQgc2F2ZSBpdCBpbgorLkkgbG9nZmlsZQorLlBQCisuQiBsb2dzYXZlCitpcyB1c2VmdWwgZm9yIHNhdmluZyB0aGUgb3V0cHV0IG9mIGluaXRpYWwgYm9vdCBzY3JpcHRzIAordW50aWwgdGhlIC92YXIgcGFydGl0aW9uIGlzIG1vdW50ZWQsIHNvIHRoZSBvdXRwdXQgY2FuIGJlIHdyaXR0ZW4gdG8gCisvdmFyL2xvZy4KKy5TSCBPUFRJT05TCisuVFAKKy5CIFwtYQorVGhpcyBvcHRpb24gd2lsbCBjYXVzZSB0aGUgb3V0cHV0IHRvIGJlIGFwcGVuZGVkIHRvIAorLklSIGxvZ2ZpbGUgLAoraW5zdGVhZCBvZiByZXBsYWNpbmcgaXRzIGN1cnJlbnQgY29udGVudHMuCisuVFAKKy5CIFwtcworVGhpcyBvcHRpb24gd2lsbCBjYXVzZSAKKy5CIGxvZ3NhdmUKK3RvIHNraXAgd3JpdGluZyB0byB0aGUgbG9nIGZpbGUgdGV4dCB3aGljaCBpcyBicmFja2V0ZWQgd2l0aCBhIGNvbnRyb2wtQSAKKyhBU0NJSSAwMDEgb3IgU3RhcnQgb2YgSGVhZGVyKSBhbmQgY29udHJvbC1CIChBU0NJSSAwMDIgb3IgU3RhcnQgb2YKK1RleHQpLiAgVGhpcyBhbGxvd3MgcHJvZ3Jlc3MgYmFyIGluZm9ybWF0aW9uIHRvIGJlIHZpc2libGUgdG8gdGhlIHVzZXIKK29uIHRoZSBjb25zb2xlLCB3aGlsZSBub3QgYmVpbmcgd3JpdHRlbiB0byB0aGUgbG9nIGZpbGUuCisuVFAKKy5CIFwtdgorVGhpcyBvcHRpb24gd2lsbCBtYWtlCisuQiBsb2dzYXZlCit0byBiZSBtb3JlIHZlcmJvc2UgaW4gaXRzIG91dHB1dCB0byB0aGUgdXNlci4KKy5TSCBBVVRIT1IKK1RoZW9kb3JlIFRzJ28gKHR5dHNvQG1pdC5lZHUpCisuU0ggU0VFIEFMU08KKy5CUiBmc2NrICg4KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbG9nc2F2ZS5jIGIvZTJmc3Byb2dzL21pc2MvbG9nc2F2ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhNjI0ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9sb2dzYXZlLmMKQEAgLTAsMCArMSwzMzQgQEAKKy8qCisgKiBsb2dzYXZlLmMgLS0tIEEgcHJvZ3JhbSB3aGljaCBzYXZlcyB0aGUgb3V0cHV0IG9mIGEgcHJvZ3JhbSB1bnRpbAorICoJL3Zhci9sb2cgaXMgbW91bnRlZC4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAgLyogZm9yIGluY2x1c2lvbiBvZiBzYV9oYW5kbGVyIGluIFNvbGFyaXMgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2lmZGVmIEhBVkVfU0lHTkFMX0gKKyNpbmNsdWRlIDxzaWduYWwuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gY2hhciAqb3B0YXJnOworZXh0ZXJuIGludCBvcHRpbmQ7CisjZW5kaWYKKworc3RhdGljIGludAlvdXRmZCA9IC0xOworc3RhdGljIGludAlvdXRidWZzaXplID0gMDsKK3N0YXRpYyB2b2lkCSpvdXRidWYgPSAwOworc3RhdGljIGludAl2ZXJib3NlID0gMDsKK3N0YXRpYyBpbnQJZG9fc2tpcCA9IDA7CitzdGF0aWMgaW50CXNraXBfbW9kZSA9IDA7CitzdGF0aWMgcGlkX3QJY2hpbGRfcGlkID0gLTE7CisKK3N0YXRpYyB2b2lkIHVzYWdlKGNoYXIgKnByb2duYW1lKQoreworCXByaW50ZigiVXNhZ2U6ICVzIFstYXN2XSBsb2dmaWxlIHByb2dyYW1cbiIsIHByb2duYW1lKTsKKwlleGl0KDEpOworfQorCisjZGVmaW5lIFNFTkRfTE9HCTB4MDEKKyNkZWZpbmUgU0VORF9DT05TT0xFCTB4MDIKKyNkZWZpbmUgU0VORF9CT1RICTB4MDMKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGlmIHdyaXRlIHJldHVybnMgYQorICogcGFydGlhbCB3cml0ZSwgb3IgYW4gRUdBSU4vRUlOVFIgZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQgd3JpdGVfYWxsKGludCBmZCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3NpemVfdCByZXQ7CisJaW50IGMgPSAwOworCisJd2hpbGUgKGNvdW50ID4gMCkgeworCQlyZXQgPSB3cml0ZShmZCwgYnVmLCBjb3VudCk7CisJCWlmIChyZXQgPCAwKSB7CisJCQlpZiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVJTlRSKSkKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQljb3VudCAtPSByZXQ7CisJCWJ1ZiArPSByZXQ7CisJCWMgKz0gcmV0OworCX0KKwlyZXR1cm4gYzsKK30KKworc3RhdGljIHZvaWQgc2VuZF9vdXRwdXQoY29uc3QgY2hhciAqYnVmZmVyLCBpbnQgYywgaW50IGZsYWcpCit7CisJY29uc3QgY2hhcgkqY3A7CisJY2hhcgkJKm47CisJaW50CQljbnQsIGQsIGRlbDsKKworCWlmIChjID09IDApCisJCWMgPSBzdHJsZW4oYnVmZmVyKTsKKworCWlmIChmbGFnICYgU0VORF9DT05TT0xFKSB7CisJCWNudCA9IGM7CisJCWNwID0gYnVmZmVyOworCQl3aGlsZSAoY250KSB7CisJCQlkZWwgPSAwOworCQkJZm9yIChkPTA7IGQgPCBjbnQ7IGQrKykgeworCQkJCWlmIChza2lwX21vZGUgJiYKKwkJCQkgICAgKGNwW2RdID09ICdcMDAxJyB8fCBjcFtkXSA9PSAnXDAwMicpKSB7CisJCQkJCWRlbCA9IDE7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCXdyaXRlX2FsbCgxLCBjcCwgZCk7CisJCQlpZiAoZGVsKQorCQkJCWQrKzsKKwkJCWNudCAtPSBkOworCQkJY3AgKz0gZDsKKwkJfQorCX0KKwlpZiAoIShmbGFnICYgU0VORF9MT0cpKQorCQlyZXR1cm47CisJaWYgKG91dGZkID4gMCkKKwkJd3JpdGVfYWxsKG91dGZkLCBidWZmZXIsIGMpOworCWVsc2UgeworCQluID0gcmVhbGxvYyhvdXRidWYsIG91dGJ1ZnNpemUgKyBjKTsKKwkJaWYgKG4pIHsKKwkJCW91dGJ1ZiA9IG47CisJCQltZW1jcHkoKChjaGFyICopb3V0YnVmKStvdXRidWZzaXplLCBidWZmZXIsIGMpOworCQkJb3V0YnVmc2l6ZSArPSBjOworCQl9CisJfQorfQorCitzdGF0aWMgaW50IGRvX3JlYWQoaW50IGZkKQoreworCWludAljOworCWNoYXIJYnVmZmVyWzQwOTZdLCAqY3AsICpzZXA7CisKKwljID0gcmVhZChmZCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKS0xKTsKKwlpZiAoYyA8PSAwKQorCQlyZXR1cm4gYzsKKwlpZiAoZG9fc2tpcCkgeworCQlzZW5kX291dHB1dChidWZmZXIsIGMsIFNFTkRfQ09OU09MRSk7CisJCWJ1ZmZlcltjXSA9IDA7CisJCWNwID0gYnVmZmVyOworCQl3aGlsZSAoKmNwKSB7CisJCQlpZiAoc2tpcF9tb2RlKSB7CisJCQkJY3AgPSBzdHJjaHIoY3AsICdcMDAyJyk7CisJCQkJaWYgKCFjcCkKKwkJCQkJcmV0dXJuIDA7CisJCQkJY3ArKzsKKwkJCQlza2lwX21vZGUgPSAwOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJc2VwID0gc3RyY2hyKGNwLCAnXDAwMScpOworCQkJaWYgKHNlcCkKKwkJCQkqc2VwID0gMDsKKwkJCXNlbmRfb3V0cHV0KGNwLCAwLCBTRU5EX0xPRyk7CisJCQlpZiAoc2VwKSB7CisJCQkJY3AgPSBzZXAgKyAxOworCQkJCXNraXBfbW9kZSA9IDE7CisJCQl9IGVsc2UKKwkJCQlicmVhazsKKwkJfQorCX0gZWxzZQorCQlzZW5kX291dHB1dChidWZmZXIsIGMsIFNFTkRfQk9USCk7CisJcmV0dXJuIGM7Cit9CisKK3N0YXRpYyB2b2lkIHNpZ25hbF90ZXJtKGludCBzaWcpCit7CisJaWYgKGNoaWxkX3BpZCA+IDApCisJCWtpbGwoY2hpbGRfcGlkLCBzaWcpOworfQorCitzdGF0aWMgaW50IHJ1bl9wcm9ncmFtKGNoYXIgKiphcmd2KQoreworCWludAlmZHNbMl07CisJaW50CXN0YXR1cywgcmMsIHBpZDsKKwljaGFyCWJ1ZmZlcls4MF07CisjaWZkZWYgSEFWRV9TSUdOQUxfSAorCXN0cnVjdCBzaWdhY3Rpb24Jc2E7CisjZW5kaWYKKworCWlmIChwaXBlKGZkcykgPCAwKSB7CisJCXBlcnJvcigicGlwZSIpOworCQlleGl0KDEpOworCX0KKworI2lmZGVmIEhBVkVfU0lHTkFMX0gKKwltZW1zZXQoJnNhLCAwLCBzaXplb2Yoc3RydWN0IHNpZ2FjdGlvbikpOworCXNhLnNhX2hhbmRsZXIgPSBzaWduYWxfdGVybTsKKwlzaWdhY3Rpb24oU0lHSU5ULCAmc2EsIDApOworCXNpZ2FjdGlvbihTSUdURVJNLCAmc2EsIDApOworI2lmZGVmIFNBX1JFU1RBUlQKKwlzYS5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7CisjZW5kaWYKKyNlbmRpZgorCisJcGlkID0gZm9yaygpOworCWlmIChwaWQgPCAwKSB7CisJCXBlcnJvcigidmZvcmsiKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHBpZCA9PSAwKSB7CisJCWR1cDIoZmRzWzFdLDEpOwkJLyogZmRzWzFdIHJlcGxhY2VzIHN0ZG91dCAqLworCQlkdXAyKGZkc1sxXSwyKTsgIAkvKiBmZHNbMV0gcmVwbGFjZXMgc3RkZXJyICovCisJCWNsb3NlKGZkc1swXSk7CS8qIGRvbid0IG5lZWQgdGhpcyBoZXJlICovCisJCWNsb3NlKGZkc1sxXSk7CisKKwkJZXhlY3ZwKGFyZ3ZbMF0sIGFyZ3YpOworCQlwZXJyb3IoYXJndlswXSk7CisJCWV4aXQoMSk7CisJfQorCWNoaWxkX3BpZCA9IHBpZDsKKwljbG9zZShmZHNbMV0pOworCisJd2hpbGUgKCEod2FpdHBpZChwaWQsICZzdGF0dXMsIFdOT0hBTkcgKSkpIHsKKwkJZG9fcmVhZChmZHNbMF0pOworCX0KKwljaGlsZF9waWQgPSAtMTsKKwlkb19yZWFkKGZkc1swXSk7CisJY2xvc2UoZmRzWzBdKTsKKworCWlmICggV0lGRVhJVEVEKHN0YXR1cykgKSB7CisJCXJjID0gV0VYSVRTVEFUVVMoc3RhdHVzKTsKKwkJaWYgKHJjKSB7CisJCQlzZW5kX291dHB1dChhcmd2WzBdLCAwLCBTRU5EX0JPVEgpOworCQkJc3ByaW50ZihidWZmZXIsICIgZXhpdGVkIHdpdGggc3RhdHVzIGNvZGUgJWRcbiIsIHJjKTsKKwkJCXNlbmRfb3V0cHV0KGJ1ZmZlciwgMCwgU0VORF9CT1RIKTsKKwkJfQorCX0gZWxzZSB7CisJCWlmIChXSUZTSUdOQUxFRChzdGF0dXMpKSB7CisJCQlzZW5kX291dHB1dChhcmd2WzBdLCAwLCBTRU5EX0JPVEgpOworCQkJc3ByaW50ZihidWZmZXIsICJkaWVkIHdpdGggc2lnbmFsICVkXG4iLAorCQkJCVdURVJNU0lHKHN0YXR1cykpOworCQkJc2VuZF9vdXRwdXQoYnVmZmVyLCAwLCBTRU5EX0JPVEgpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJcmMgPSAwOworCX0KKwlyZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgY29weV9mcm9tX3N0ZGluKHZvaWQpCit7CisJaW50CWMsIGJhZF9yZWFkID0gMDsKKworCXdoaWxlICgxKSB7CisJCWMgPSBkb19yZWFkKDApOworCQlpZiAoKGMgPT0gMCApIHx8CisJCSAgICAoKGMgPCAwKSAmJiAoKGVycm5vID09IEVBR0FJTikgfHwgKGVycm5vID09IEVJTlRSKSkpKSB7CisJCQlpZiAoYmFkX3JlYWQrKyA+IDMpCisJCQkJYnJlYWs7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoYyA8IDApIHsKKwkJCXBlcnJvcigicmVhZCIpOworCQkJZXhpdCgxKTsKKwkJfQorCQliYWRfcmVhZCA9IDA7CisJfQorCXJldHVybiAwOworfQorCisKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWludAljLCBwaWQsIHJjOworCWNoYXIJKm91dGZuLCAqKmNwcDsKKwlpbnQJb3BlbmZsYWdzID0gT19DUkVBVHxPX1dST05MWXxPX1RSVU5DOworCWludAlzZW5kX2ZsYWcgPSBTRU5EX0xPRzsKKwlpbnQJZG9fc3RkaW47CisJdGltZV90CXQ7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgIithc3YiKSkgIT0gRU9GKSB7CisJCXN3aXRjaCAoYykgeworCQljYXNlICdhJzoKKwkJCW9wZW5mbGFncyAmPSB+T19UUlVOQzsKKwkJCW9wZW5mbGFncyB8PSBPX0FQUEVORDsKKwkJCWJyZWFrOworCQljYXNlICdzJzoKKwkJCWRvX3NraXAgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3YnOgorCQkJdmVyYm9zZSsrOworCQkJc2VuZF9mbGFnIHw9IFNFTkRfQ09OU09MRTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChvcHRpbmQgPT0gYXJnYyB8fCBvcHRpbmQrMSA9PSBhcmdjKQorCQl1c2FnZShhcmd2WzBdKTsKKwlvdXRmbiA9IGFyZ3Zbb3B0aW5kXTsKKwlvcHRpbmQrKzsKKwlhcmd2ICs9IG9wdGluZDsKKwlhcmdjIC09IG9wdGluZDsKKworCW91dGZkID0gb3BlbihvdXRmbiwgb3BlbmZsYWdzLCAwNjQ0KTsKKwlkb19zdGRpbiA9ICFzdHJjbXAoYXJndlswXSwgIi0iKTsKKworCXNlbmRfb3V0cHV0KCJMb2cgb2YgIiwgMCwgc2VuZF9mbGFnKTsKKwlpZiAoZG9fc3RkaW4pCisJCXNlbmRfb3V0cHV0KCJzdGRpbiIsIDAsIHNlbmRfZmxhZyk7CisJZWxzZSB7CisJCWZvciAoY3BwID0gYXJndjsgKmNwcDsgY3BwKyspIHsKKwkJCXNlbmRfb3V0cHV0KCpjcHAsIDAsIHNlbmRfZmxhZyk7CisJCQlzZW5kX291dHB1dCgiICIsIDAsIHNlbmRfZmxhZyk7CisJCX0KKwl9CisJc2VuZF9vdXRwdXQoIlxuIiwgMCwgc2VuZF9mbGFnKTsKKwl0ID0gdGltZSgwKTsKKwlzZW5kX291dHB1dChjdGltZSgmdCksIDAsIHNlbmRfZmxhZyk7CisJc2VuZF9vdXRwdXQoIlxuIiwgMCwgc2VuZF9mbGFnKTsKKworCWlmIChkb19zdGRpbikKKwkJcmMgPSBjb3B5X2Zyb21fc3RkaW4oKTsKKwllbHNlCisJCXJjID0gcnVuX3Byb2dyYW0oYXJndik7CisKKwlzZW5kX291dHB1dCgiXG4iLCAwLCBzZW5kX2ZsYWcpOworCXQgPSB0aW1lKDApOworCXNlbmRfb3V0cHV0KGN0aW1lKCZ0KSwgMCwgc2VuZF9mbGFnKTsKKwlzZW5kX291dHB1dCgiLS0tLS0tLS0tLS0tLS0tLVxuIiwgMCwgc2VuZF9mbGFnKTsKKworCWlmIChvdXRidWYpIHsKKwkJcGlkID0gZm9yaygpOworCQlpZiAocGlkIDwgMCkgeworCQkJcGVycm9yKCJmb3JrIik7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChwaWQpIHsKKwkJCWlmICh2ZXJib3NlKQorCQkJCXByaW50ZigiQmFja2dyb3VuZGluZyB0byBzYXZlICVzIGxhdGVyXG4iLAorCQkJCSAgICAgICBvdXRmbik7CisJCQlleGl0KHJjKTsKKwkJfQorCQlzZXRzaWQoKTsJLyogVG8gYXZvaWQgZ2V0dGluZyBraWxsZWQgYnkgaW5pdCAqLworCQl3aGlsZSAob3V0ZmQgPCAwKSB7CisJCQlvdXRmZCA9IG9wZW4ob3V0Zm4sIG9wZW5mbGFncywgMDY0NCk7CisJCQlzbGVlcCgxKTsKKwkJfQorCQl3cml0ZV9hbGwob3V0ZmQsIG91dGJ1Ziwgb3V0YnVmc2l6ZSk7CisJCWZyZWUob3V0YnVmKTsKKwl9CisJaWYgKG91dGZkID49IDApCisJCWNsb3NlKG91dGZkKTsKKworCWV4aXQocmMpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbHNhdHRyLjEuaW4gYi9lMmZzcHJvZ3MvbWlzYy9sc2F0dHIuMS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjE1NzY5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbHNhdHRyLjEuaW4KQEAgLTAsMCArMSw1MiBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5USCBMU0FUVFIgMSAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorbHNhdHRyIFwtIGxpc3QgZmlsZSBhdHRyaWJ1dGVzIG9uIGEgTGludXggc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtCisuU0ggU1lOT1BTSVMKKy5CIGxzYXR0cgorWworLkIgXC1SVmFkbHB2CitdCitbCisuSSBmaWxlcy4uLgorXQorLlNIIERFU0NSSVBUSU9OCisuQiBsc2F0dHIKK2xpc3RzIHRoZSBmaWxlIGF0dHJpYnV0ZXMgb24gYSBzZWNvbmQgZXh0ZW5kZWQgZmlsZSBzeXN0ZW0uICBTZWUKKy5CUiBjaGF0dHIgKDEpCitmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgYXR0cmlidXRlcyBhbmQgd2hhdCB0aGV5IG1lYW4uCisuU0ggT1BUSU9OUworLlRQCisuQiBcLVIKK1JlY3Vyc2l2ZWx5IGxpc3QgYXR0cmlidXRlcyBvZiBkaXJlY3RvcmllcyBhbmQgdGhlaXIgY29udGVudHMuCisuVFAKKy5CIFwtVgorRGlzcGxheSB0aGUgcHJvZ3JhbSB2ZXJzaW9uLgorLlRQCisuQiBcLWEKK0xpc3QgYWxsIGZpbGVzIGluIGRpcmVjdG9yaWVzLCBpbmNsdWRpbmcgZmlsZXMgdGhhdCBzdGFydCB3aXRoIGAuJy4KKy5UUAorLkIgXC1kCitMaXN0IGRpcmVjdG9yaWVzIGxpa2Ugb3RoZXIgZmlsZXMsIHJhdGhlciB0aGFuIGxpc3RpbmcgdGhlaXIgY29udGVudHMuCisuVFAKKy5CIFwtbAorUHJpbnQgdGhlIG9wdGlvbnMgdXNpbmcgYSBsb25nIG5hbWVzIGluc3RlYWQgb2YgYSBzaW5nbGUKK2NoYXJhY3RlciBhYmJyZXZpYXRpb24uCisuVFAKKy5CIFwtcAorTGlzdCB0aGUgZmlsZSdzIHByb2plY3QgbnVtYmVyLgorLlRQCisuQiBcLXYKK0xpc3QgdGhlIGZpbGUncyB2ZXJzaW9uL2dlbmVyYXRpb24gbnVtYmVyLgorLlNIIEFVVEhPUgorLkIgbHNhdHRyCit3YXMgd3JpdHRlbiBieSBSZW15IENhcmQgPFJlbXkuQ2FyZEBsaW51eC5vcmc+LiAgSXQgaXMgY3VycmVudGx5IGJlaW5nCittYWludGFpbmVkIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQGFsdW0ubWl0LmVkdT4uCisuU0ggQlVHUworVGhlcmUgYXJlIG5vbmUgOi0pLgorLlNIIEFWQUlMQUJJTElUWQorLkIgbHNhdHRyCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20KK2h0dHA6Ly9lMmZzcHJvZ3Muc291cmNlZm9yZ2UubmV0LgorLlNIIFNFRSBBTFNPCisuQlIgY2hhdHRyICgxKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbHNhdHRyLmMgYi9lMmZzcHJvZ3MvbWlzYy9sc2F0dHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDk1NDM3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbHNhdHRyLmMKQEAgLTAsMCArMSwyMjcgQEAKKy8qCisgKiBsc2F0dHIuYwkJLSBMaXN0IGZpbGUgYXR0cmlidXRlcyBvbiBhbiBleHQyIGZpbGUgc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqIFRoaXMgZmlsZSBjYW4gYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMTAvMzAJLSBDcmVhdGlvbgorICogOTMvMTEvMTMJLSBSZXBsYWNlIHN0YXQoKSBjYWxscyBieSBsc3RhdCgpIHRvIGF2b2lkIGxvb3BzCisgKiA5NC8wMi8yNwktIEludGVncmF0ZWQgaW4gVGVkJ3MgZGlzdHJpYnV0aW9uCisgKiA5OC8xMi8yOQktIERpc3BsYXkgdmVyc2lvbiBpbmZvIG9ubHkgd2hlbiAtViBzcGVjaWZpZWQgKEcgTSBTaXBlKQorICovCisKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgb3B0aW5kOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKworI2luY2x1ZGUgImV4dDJmcy9leHQyX2ZzLmgiCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKworI2luY2x1ZGUgInN1cHBvcnQvbmxzLWVuYWJsZS5oIgorI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIEVYVDJGU19BVFRSKHgpIF9fYXR0cmlidXRlX18oeCkKKyNlbHNlCisjZGVmaW5lIEVYVDJGU19BVFRSKHgpCisjZW5kaWYKKworc3RhdGljIGNvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWUgPSAibHNhdHRyIjsKKworc3RhdGljIGludCBhbGw7CitzdGF0aWMgaW50IGRpcnNfb3B0Oworc3RhdGljIHVuc2lnbmVkIHBmX29wdGlvbnM7CitzdGF0aWMgaW50IHJlY3Vyc2l2ZTsKK3N0YXRpYyBpbnQgdmVyYm9zZTsKK3N0YXRpYyBpbnQgZ2VuZXJhdGlvbl9vcHQ7CitzdGF0aWMgaW50IHByb2plY3Rfb3B0OworCisjaWZkZWYgX0xGUzY0X0xBUkdFRklMRQorI2RlZmluZSBMU1RBVAkJbHN0YXQ2NAorI2RlZmluZSBTVFJVQ1RfU1RBVAlzdHJ1Y3Qgc3RhdDY0CisjZWxzZQorI2RlZmluZSBMU1RBVAkJbHN0YXQKKyNkZWZpbmUgU1RSVUNUX1NUQVQJc3RydWN0IHN0YXQKKyNlbmRpZgorCitzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQoreworCWZwcmludGYoc3RkZXJyLCBfKCJVc2FnZTogJXMgWy1SVmFkbHB2XSBbZmlsZXMuLi5dXG4iKSwgcHJvZ3JhbV9uYW1lKTsKKwlleGl0KDEpOworfQorCitzdGF0aWMgaW50IGxpc3RfYXR0cmlidXRlcyAoY29uc3QgY2hhciAqIG5hbWUpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1bnNpZ25lZCBsb25nIGdlbmVyYXRpb247CisJdW5zaWduZWQgbG9uZyBwcm9qZWN0OworCisJaWYgKGZnZXRmbGFncyAobmFtZSwgJmZsYWdzKSA9PSAtMSkgeworCQljb21fZXJyIChwcm9ncmFtX25hbWUsIGVycm5vLCBfKCJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIiksCisJCQkgbmFtZSk7CisJCXJldHVybiAtMTsKKwl9CisJaWYgKHByb2plY3Rfb3B0KSB7CisJCWlmIChmZ2V0cHJvamVjdChuYW1lLCAmcHJvamVjdCkgPT0gLTEpIHsKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJIF8oIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIpLAorCQkJCSBuYW1lKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlwcmludGYgKCIlNWx1ICIsIHByb2plY3QpOworCX0KKwlpZiAoZ2VuZXJhdGlvbl9vcHQpIHsKKwkJaWYgKGZnZXR2ZXJzaW9uIChuYW1lLCAmZ2VuZXJhdGlvbikgPT0gLTEpIHsKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJIF8oIldoaWxlIHJlYWRpbmcgdmVyc2lvbiBvbiAlcyIpLAorCQkJCSBuYW1lKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlwcmludGYgKCIlLTEwbHUgIiwgZ2VuZXJhdGlvbik7CisJfQorCWlmIChwZl9vcHRpb25zICYgUEZPUFRfTE9ORykgeworCQlwcmludGYoIiUtMjhzICIsIG5hbWUpOworCQlwcmludF9mbGFncyhzdGRvdXQsIGZsYWdzLCBwZl9vcHRpb25zKTsKKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKKwl9IGVsc2UgeworCQlwcmludF9mbGFncyhzdGRvdXQsIGZsYWdzLCBwZl9vcHRpb25zKTsKKwkJcHJpbnRmKCIgJXNcbiIsIG5hbWUpOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsc2F0dHJfZGlyX3Byb2MgKGNvbnN0IGNoYXIgKiwgc3RydWN0IGRpcmVudCAqLCB2b2lkICopOworCitzdGF0aWMgaW50IGxzYXR0cl9hcmdzIChjb25zdCBjaGFyICogbmFtZSkKK3sKKwlTVFJVQ1RfU1RBVAlzdDsKKwlpbnQgcmV0dmFsID0gMDsKKworCWlmIChMU1RBVCAobmFtZSwgJnN0KSA9PSAtMSkgeworCQljb21fZXJyIChwcm9ncmFtX25hbWUsIGVycm5vLCBfKCJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIpLAorCQkJIG5hbWUpOworCQlyZXR2YWwgPSAtMTsKKwl9IGVsc2UgeworCQlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSAmJiAhZGlyc19vcHQpCisJCQlyZXR2YWwgPSBpdGVyYXRlX29uX2RpciAobmFtZSwgbHNhdHRyX2Rpcl9wcm9jLCBOVUxMKTsKKwkJZWxzZQorCQkJcmV0dmFsID0gbGlzdF9hdHRyaWJ1dGVzIChuYW1lKTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCBsc2F0dHJfZGlyX3Byb2MgKGNvbnN0IGNoYXIgKiBkaXJfbmFtZSwgc3RydWN0IGRpcmVudCAqIGRlLAorCQkJICAgIHZvaWQgKiBwcml2YXRlIEVYVDJGU19BVFRSKCh1bnVzZWQpKSkKK3sKKwlTVFJVQ1RfU1RBVAlzdDsKKwljaGFyICpwYXRoOworCWludCBkaXJfbGVuID0gc3RybGVuKGRpcl9uYW1lKTsKKworCXBhdGggPSBtYWxsb2MoZGlyX2xlbiArIHN0cmxlbiAoZGUtPmRfbmFtZSkgKyAyKTsKKworCWlmIChkaXJfbGVuICYmIGRpcl9uYW1lW2Rpcl9sZW4tMV0gPT0gJy8nKQorCQlzcHJpbnRmIChwYXRoLCAiJXMlcyIsIGRpcl9uYW1lLCBkZS0+ZF9uYW1lKTsKKwllbHNlCisJCXNwcmludGYgKHBhdGgsICIlcy8lcyIsIGRpcl9uYW1lLCBkZS0+ZF9uYW1lKTsKKwlpZiAoTFNUQVQgKHBhdGgsICZzdCkgPT0gLTEpCisJCXBlcnJvciAocGF0aCk7CisJZWxzZSB7CisJCWlmIChkZS0+ZF9uYW1lWzBdICE9ICcuJyB8fCBhbGwpIHsKKwkJCWxpc3RfYXR0cmlidXRlcyAocGF0aCk7CisJCQlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSAmJiByZWN1cnNpdmUgJiYKKwkJCSAgICBzdHJjbXAoZGUtPmRfbmFtZSwgIi4iKSAmJgorCQkJICAgIHN0cmNtcChkZS0+ZF9uYW1lLCAiLi4iKSkgeworCQkJCXByaW50ZiAoIlxuJXM6XG4iLCBwYXRoKTsKKwkJCQlpdGVyYXRlX29uX2RpciAocGF0aCwgbHNhdHRyX2Rpcl9wcm9jLCBOVUxMKTsKKwkJCQlwcmludGYgKCJcbiIpOworCQkJfQorCQl9CisJfQorCWZyZWUocGF0aCk7CisJcmV0dXJuIDA7Cit9CisKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKiBhcmd2KQoreworCWludCBjOworCWludCBpOworCWludCBlcnIsIHJldHZhbCA9IDA7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKwlzZXRfY29tX2Vycl9nZXR0ZXh0KGdldHRleHQpOworI2VuZGlmCisJaWYgKGFyZ2MgJiYgKmFyZ3YpCisJCXByb2dyYW1fbmFtZSA9ICphcmd2OworCXdoaWxlICgoYyA9IGdldG9wdCAoYXJnYywgYXJndiwgIlJWYWRsdnAiKSkgIT0gRU9GKQorCQlzd2l0Y2ggKGMpCisJCXsKKwkJCWNhc2UgJ1InOgorCQkJCXJlY3Vyc2l2ZSA9IDE7CisJCQkJYnJlYWs7CisJCQljYXNlICdWJzoKKwkJCQl2ZXJib3NlID0gMTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ2EnOgorCQkJCWFsbCA9IDE7CisJCQkJYnJlYWs7CisJCQljYXNlICdkJzoKKwkJCQlkaXJzX29wdCA9IDE7CisJCQkJYnJlYWs7CisJCQljYXNlICdsJzoKKwkJCQlwZl9vcHRpb25zID0gUEZPUFRfTE9ORzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3YnOgorCQkJCWdlbmVyYXRpb25fb3B0ID0gMTsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3AnOgorCQkJCXByb2plY3Rfb3B0ID0gMTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJdXNhZ2UoKTsKKwkJfQorCisJaWYgKHZlcmJvc2UpCisJCWZwcmludGYgKHN0ZGVyciwgImxzYXR0ciAlcyAoJXMpXG4iLAorCQkJIEUyRlNQUk9HU19WRVJTSU9OLCBFMkZTUFJPR1NfREFURSk7CisJaWYgKG9wdGluZCA+IGFyZ2MgLSAxKSB7CisJCWlmIChsc2F0dHJfYXJncyAoIi4iKSA9PSAtMSkKKwkJCXJldHZhbCA9IDE7CisJfSBlbHNlIHsKKwkJZm9yIChpID0gb3B0aW5kOyBpIDwgYXJnYzsgaSsrKSB7CisJCQllcnIgPSBsc2F0dHJfYXJncyAoYXJndltpXSk7CisJCQlpZiAoZXJyKQorCQkJCXJldHZhbCA9IDE7CisJCX0KKwl9CisJZXhpdChyZXR2YWwpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtfaHVnZWZpbGVzLmMgYi9lMmZzcHJvZ3MvbWlzYy9ta19odWdlZmlsZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWExNWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtfaHVnZWZpbGVzLmMKQEAgLTAsMCArMSw1MTUgQEAKKy8qCisgKiBta19odWdlZmlsZXMuYyAtLSBjcmVhdGUgaHVnZSBmaWxlcworICovCisKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAgLyogZm9yIGluY2x1c2lvbiBvZiBQQVRIX01BWCBpbiBTb2xhcmlzICovCisjZGVmaW5lIF9CU0RfU09VUkNFCSAgLyogZm9yIG1ha2VkZXYoKSBhbmQgbWFqb3IoKSAqLworI2RlZmluZSBfREVGQVVMVF9TT1VSQ0UJICAvKiBzaW5jZSBnbGliYyAyLjIwIF9CU0RfU09VUkNFIGlzIGRlcHJlY2F0ZWQgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgX19saW51eF9fCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gY2hhciAqb3B0YXJnOworZXh0ZXJuIGludCBvcHRpbmQ7CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX0VSUk5PX0gKKyNpbmNsdWRlIDxlcnJuby5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxsaWJnZW4uaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxibGtpZC9ibGtpZC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzUC5oIgorI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICJ1dWlkL3V1aWQuaCIKKyNpbmNsdWRlICJlMnAvZTJwLmgiCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJmcy5oIgorI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3Byb2ZpbGUuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3Byb2ZfZXJyLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisjaW5jbHVkZSAibWtlMmZzLmgiCisKK3N0YXRpYyBpbnQgdWlkOworc3RhdGljIGludCBnaWQ7CitzdGF0aWMgYmxrNjRfdCBudW1fYmxvY2tzOworc3RhdGljIGJsazY0X3QgbnVtX3NsYWNrOworc3RhdGljIHVuc2lnbmVkIGxvbmcgbnVtX2ZpbGVzOworc3RhdGljIGJsazY0X3QgZ29hbDsKK3N0YXRpYyBjaGFyICpmbl9wcmVmaXg7CitzdGF0aWMgaW50IGlkeF9kaWdpdHM7CitzdGF0aWMgY2hhciAqZm5fYnVmOworc3RhdGljIGNoYXIgKmZuX251bWJ1ZjsKK2ludCB6ZXJvX2h1Z2VmaWxlID0gMTsKKworI2RlZmluZSBTWVNGU19QQVRIX0xFTiAyNTYKK3R5cGVkZWYgY2hhciBzeXNmc19wYXRoX3RbU1lTRlNfUEFUSF9MRU5dOworCisjaWZuZGVmIEhBVkVfU05QUklOVEYKKy8qCisgKiBXZSBhcmUgdmVyeSBjYXJlZnVsIHRvIGF2b2lkIG5lZWRpbmcgdG8gd29ycnkgYWJvdXQgYnVmZmVyCisgKiBvdmVyZmxvd3MsIHNvIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHVzZSBzbnByaW50ZigpIGV4Y2VwdCBhcyBhbgorICogYWRkaXRpb25hbCBzYWZldHkgY2hlY2suICBTbyBpZiBzbnByaW50ZigpIGlzIG5vdCBwcmVzZW50LCBpdCdzCisgKiBzYWZlIHRvIGZhbGwgYmFjayB0byB2c3ByaW50ZigpLiAgVGhpcyBwcm92aWRlcyBwb3J0YWJpbGl0eSBzaW5jZQorICogdnNwcmludGYoKSBpcyBndWFyYW50ZWVkIGJ5IEM4OSwgd2hpbGUgc25wcmludGYoKSBpcyBvbmx5CisgKiBndWFyYW50ZWVkIGJ5IEM5OSAtLS0gd2hpY2ggZm9yIGV4YW1wbGUsIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCisgKiBoYXMgKnN0aWxsKiBub3QgYm90aGVyZWQgdG8gaW1wbGVtZW50LiAgOi0vICAoTm90IHRoYXQgSSBleHBlY3QKKyAqIG1rZTJmcyB0byBiZSBwb3J0ZWQgdG8gTVMgVmlzdWFsIFN0dWRpbyBhbnkgdGltZSBzb29uLCBidXQKKyAqIGxpYmV4dDJmcyAqZG9lcyogZ2V0IGJ1aWx0IG9uIE1pY3Jvc29mdCBwbGF0Zm9ybXMsIGFuZCB3ZSBtaWdodAorICogd2FudCB0byBtb3ZlIHRoaXMgaW50byBsaWJleHQyZnMgc29tZSBkYXkuKQorICovCitzdGF0aWMgaW50IG15X3NucHJpbnRmKGNoYXIgKnN0ciwgc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworCXZhX2xpc3QJYXA7CisJaW50IHJldDsKKworCXZhX3N0YXJ0KGFwLCBmb3JtYXQpOworCXJldCA9IHZzcHJpbnRmKHN0ciwgZm9ybWF0LCBhcCk7CisJdmFfZW5kKGFwKTsKKwlyZXR1cm4gcmV0OworfQorCisjZGVmaW5lIHNucHJpbnRmIG15X3NucHJpbnRmCisjZW5kaWYKKworLyoKKyAqIEZhbGwgYmFjayB0byBMaW51eCdzIGRlZmluaXRpb25zIG9mIG1ha2VkZXYgYW5kIG1ham9yIGFyZSBuZWVkZWQuCisgKiBUaGUgc2VhcmNoX3N5c2ZzX2Jsb2NrKCkgZnVuY3Rpb24gaXMgaGlnaGx5IHVubGlrZWx5IHRvIHdvcmsgb24KKyAqIG5vbi1MaW51eCBzeXN0ZW1zIGFueXdheS4KKyAqLworI2lmbmRlZiBtYWtlZGV2CisjZGVmaW5lIG1ha2VkZXYobWFqLCBtaW4pICgoKG1haikgPDwgOCkgKyAobWluKSkKKyNlbmRpZgorCitzdGF0aWMgY2hhciAqc2VhcmNoX3N5c2ZzX2Jsb2NrKGRldl90IGRldm5vLCBzeXNmc19wYXRoX3QgcmV0X3BhdGgpCit7CisJc3RydWN0IGRpcmVudAkqZGUsICpwX2RlOworCURJUgkJKmRpciA9IE5VTEwsICpwX2RpciA9IE5VTEw7CisJRklMRQkJKmY7CisJc3lzZnNfcGF0aF90CXBhdGgsIHBfcGF0aDsKKwl1bnNpZ25lZCBpbnQJbWFqb3IsIG1pbm9yOworCWNoYXIJCSpyZXQgPSByZXRfcGF0aDsKKworCXJldF9wYXRoWzBdID0gMDsKKwlpZiAoKGRpciA9IG9wZW5kaXIoIi9zeXMvYmxvY2siKSkgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisJd2hpbGUgKChkZSA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworCQlpZiAoIXN0cmNtcChkZS0+ZF9uYW1lLCAiLiIpIHx8ICFzdHJjbXAoZGUtPmRfbmFtZSwgIi4uIikgfHwKKwkJICAgIHN0cmxlbihkZS0+ZF9uYW1lKSA+IHNpemVvZihwYXRoKS0zMikKKwkJCWNvbnRpbnVlOworCQlzbnByaW50ZihwYXRoLCBTWVNGU19QQVRIX0xFTiwKKwkJCSAiL3N5cy9ibG9jay8lcy9kZXYiLCBkZS0+ZF9uYW1lKTsKKwkJZiA9IGZvcGVuKHBhdGgsICJyIik7CisJCWlmIChmICYmCisJCSAgICAoZnNjYW5mKGYsICIldToldSIsICZtYWpvciwgJm1pbm9yKSA9PSAyKSkgeworCQkJZmNsb3NlKGYpOyBmID0gTlVMTDsKKwkJCWlmIChtYWtlZGV2KG1ham9yLCBtaW5vcikgPT0gZGV2bm8pIHsKKwkJCQlzbnByaW50ZihyZXRfcGF0aCwgU1lTRlNfUEFUSF9MRU4sCisJCQkJCSAiL3N5cy9ibG9jay8lcyIsIGRlLT5kX25hbWUpOworCQkJCWdvdG8gc3VjY2VzczsKKwkJCX0KKyNpZmRlZiBtYWpvcgorCQkJaWYgKG1ham9yKGRldm5vKSAhPSBtYWpvcikKKwkJCQljb250aW51ZTsKKyNlbmRpZgorCQl9CisJCWlmIChmKQorCQkJZmNsb3NlKGYpOworCisJCXNucHJpbnRmKHBhdGgsIFNZU0ZTX1BBVEhfTEVOLCAiL3N5cy9ibG9jay8lcyIsIGRlLT5kX25hbWUpOworCisJCWlmIChwX2RpcikKKwkJCWNsb3NlZGlyKHBfZGlyKTsKKwkJaWYgKChwX2RpciA9IG9wZW5kaXIocGF0aCkpID09IE5VTEwpCisJCQljb250aW51ZTsKKwkJd2hpbGUgKChwX2RlID0gcmVhZGRpcihwX2RpcikpICE9IE5VTEwpIHsKKwkJCWlmICghc3RyY21wKHBfZGUtPmRfbmFtZSwgIi4iKSB8fAorCQkJICAgICFzdHJjbXAocF9kZS0+ZF9uYW1lLCAiLi4iKSB8fAorCQkJICAgIChzdHJsZW4ocF9kZS0+ZF9uYW1lKSA+CisJCQkgICAgIFNZU0ZTX1BBVEhfTEVOIC0gc3RybGVuKHBhdGgpIC0gMzIpKQorCQkJCWNvbnRpbnVlOworCQkJc25wcmludGYocF9wYXRoLCBTWVNGU19QQVRIX0xFTiwgIiVzLyVzL2RldiIsCisJCQkJIHBhdGgsIHBfZGUtPmRfbmFtZSk7CisKKwkJCWYgPSBmb3BlbihwX3BhdGgsICJyIik7CisJCQlpZiAoZiAmJgorCQkJICAgIChmc2NhbmYoZiwgIiV1OiV1IiwgJm1ham9yLCAmbWlub3IpID09IDIpICYmCisJCQkgICAgKCgobWFqb3IgPDwgOCkgKyBtaW5vcikgPT0gZGV2bm8pKSB7CisJCQkJZmNsb3NlKGYpOworCQkJCXNucHJpbnRmKHJldF9wYXRoLCBTWVNGU19QQVRIX0xFTiwgIiVzLyVzIiwKKwkJCQkJIHBhdGgsIHBfZGUtPmRfbmFtZSk7CisJCQkJZ290byBzdWNjZXNzOworCQkJfQorCQkJaWYgKGYpCisJCQkJZmNsb3NlKGYpOworCQl9CisJfQorCXJldCA9IE5VTEw7CitzdWNjZXNzOgorCWlmIChkaXIpCisJCWNsb3NlZGlyKGRpcik7CisJaWYgKHBfZGlyKQorCQljbG9zZWRpcihwX2Rpcik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGJsazY0X3QgZ2V0X3BhcnRpdGlvbl9zdGFydChjb25zdCBjaGFyICpkZXZpY2VfbmFtZSkKK3sKKwl1bnNpZ25lZCBsb25nIGxvbmcgc3RhcnQ7CisJc3lzZnNfcGF0aF90CXBhdGg7CisJc3RydWN0IHN0YXQJc3Q7CisJRklMRQkJKmY7CisJY2hhcgkJKmNwOworCWludAkJbjsKKworCWlmICgoc3RhdChkZXZpY2VfbmFtZSwgJnN0KSA8IDApIHx8ICFTX0lTQkxLKHN0LnN0X21vZGUpKQorCQlyZXR1cm4gMDsKKworCWNwID0gc2VhcmNoX3N5c2ZzX2Jsb2NrKHN0LnN0X3JkZXYsIHBhdGgpOworCWlmICghY3ApCisJCXJldHVybiAwOworCWlmIChzdHJsZW4ocGF0aCkgPiBTWVNGU19QQVRIX0xFTiAtIHNpemVvZigiL3N0YXJ0IikpCisJCXJldHVybiAwOworCXN0cmNhdChwYXRoLCAiL3N0YXJ0Iik7CisJZiA9IGZvcGVuKHBhdGgsICJyIik7CisJaWYgKCFmKQorCQlyZXR1cm4gMDsKKwluID0gZnNjYW5mKGYsICIlbGx1IiwgJnN0YXJ0KTsKKwlmY2xvc2UoZik7CisJcmV0dXJuIChuID09IDEpID8gc3RhcnQgOiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IGNyZWF0ZV9kaXJlY3RvcnkoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmRpciwKKwkJCQkgIGV4dDJfaW5vX3QgKnJldF9pbm8pCisKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwlleHQyX2lub190CQlpbm8gPSBFWFQyX1JPT1RfSU5POworCWV4dDJfaW5vX3QJCW5ld2RpcjsKKwllcnJjb2RlX3QJCXJldHZhbCA9IDA7CisJY2hhcgkJCSpmbiwgKmNwLCAqbmV4dDsKKworCWZuID0gbWFsbG9jKHN0cmxlbihkaXIpICsgMSk7CisJaWYgKGZuID09IE5VTEwpCisJCXJldHVybiBFTk9NRU07CisKKwlzdHJjcHkoZm4sIGRpcik7CisJY3AgPSBmbjsKKwl3aGlsZSgxKSB7CisJCW5leHQgPSBzdHJjaHIoY3AsICcvJyk7CisJCWlmIChuZXh0KQorCQkJKm5leHQrKyA9IDA7CisJCWlmICgqY3ApIHsKKwkJCXJldHZhbCA9IGV4dDJmc19uZXdfaW5vZGUoZnMsIGlubywgTElOVVhfU19JRkRJUiwKKwkJCQkJCSAgTlVMTCwgJm5ld2Rpcik7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCisJCQlyZXR2YWwgPSBleHQyZnNfbWtkaXIoZnMsIGlubywgbmV3ZGlyLCBjcCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCisJCQlpbm8gPSBuZXdkaXI7CisJCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAmaW5vZGUpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKworCQkJaW5vZGUuaV91aWQgPSB1aWQgJiAweEZGRkY7CisJCQlleHQyZnNfc2V0X2lfdWlkX2hpZ2goaW5vZGUsICh1aWQgPj4gMTYpICYgMHhmZmZmKTsKKwkJCWlub2RlLmlfZ2lkID0gZ2lkICYgMHhGRkZGOworCQkJZXh0MmZzX3NldF9pX2dpZF9oaWdoKGlub2RlLCAoZ2lkID4+IDE2KSAmIDB4ZmZmZik7CisJCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJaWYgKG5leHQgPT0gTlVMTCB8fCAqbmV4dCA9PSAnXDAnKQorCQkJYnJlYWs7CisJCWNwID0gbmV4dDsKKwl9CitlcnJvdXQ6CisJZnJlZShmbik7CisJaWYgKHJldHZhbCA9PSAwKQorCQkqcmV0X2lubyA9IGlubzsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgZXJyY29kZV90IG1rX2h1Z2VmaWxlKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IG51bSwKKwkJCSAgICAgZXh0Ml9pbm9fdCBkaXIsIHVuc2lnbmVkIGxvbmcgaWR4LCBleHQyX2lub190ICppbm8pCisKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKworCXJldHZhbCA9IGV4dDJmc19uZXdfaW5vZGUoZnMsIDAsIExJTlVYX1NfSUZSRUcsIE5VTEwsIGlubyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW1lbXNldCgmaW5vZGUsIDAsIHNpemVvZihzdHJ1Y3QgZXh0Ml9pbm9kZSkpOworCWlub2RlLmlfbW9kZSA9IExJTlVYX1NfSUZSRUcgfCAoMDY2NiAmIH5mcy0+dW1hc2spOworCWlub2RlLmlfbGlua3NfY291bnQgPSAxOworCWlub2RlLmlfdWlkID0gdWlkICYgMHhGRkZGOworCWV4dDJmc19zZXRfaV91aWRfaGlnaChpbm9kZSwgKHVpZCA+PiAxNikgJiAweGZmZmYpOworCWlub2RlLmlfZ2lkID0gZ2lkICYgMHhGRkZGOworCWV4dDJmc19zZXRfaV9naWRfaGlnaChpbm9kZSwgKGdpZCA+PiAxNikgJiAweGZmZmYpOworCisJcmV0dmFsID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgKmlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgKmlubywgKzEsIDApOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikpCisJCWlub2RlLmlfZmxhZ3MgfD0gRVhUNF9FWFRFTlRTX0ZMOworCXJldHZhbCA9IGV4dDJmc19mYWxsb2NhdGUoZnMsCisJCQkJICBFWFQyX0ZBTExPQ0FURV9GT1JDRV9JTklUIHwKKwkJCQkgIEVYVDJfRkFMTE9DQVRFX1pFUk9fQkxPQ0tTLAorCQkJCSAgKmlubywgJmlub2RlLCBnb2FsLCAwLCBudW0pOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJcmV0dmFsID0gZXh0MmZzX2lub2RlX3NpemVfc2V0KGZzLCAmaW5vZGUsIG51bSAqIGZzLT5ibG9ja3NpemUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsICppbm8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwlpZiAoaWR4X2RpZ2l0cykKKwkJc3ByaW50Zihmbl9udW1idWYsICIlMCpsdSIsIGlkeF9kaWdpdHMsIGlkeCk7CisJZWxzZSBpZiAobnVtX2ZpbGVzID4gMSkKKwkJc3ByaW50Zihmbl9udW1idWYsICIlbHUiLCBpZHgpOworCityZXRyeToKKwlyZXR2YWwgPSBleHQyZnNfbGluayhmcywgZGlyLCBmbl9idWYsICppbm8sIEVYVDJfRlRfUkVHX0ZJTEUpOworCWlmIChyZXR2YWwgPT0gRVhUMl9FVF9ESVJfTk9fU1BBQ0UpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2V4cGFuZF9kaXIoZnMsIGRpcik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwkJZ290byByZXRyeTsKKwl9CisKK2Vycm91dDoKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgYmxrNjRfdCBjYWxjX292ZXJoZWFkKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IG51bSkKK3sKKwlibGs2NF90IGVfYmxvY2tzLCBlX2Jsb2NrczIsIGVfYmxvY2tzMywgZV9ibG9ja3M0OworCWludCBleHRlbnRzX3Blcl9ibG9jazsKKwlpbnQgZXh0ZW50cyA9IChudW0gKyBFWFRfSU5JVF9NQVhfTEVOIC0gMSkgLyBFWFRfSU5JVF9NQVhfTEVOOworCisJaWYgKGV4dGVudHMgPD0gNCkKKwkJcmV0dXJuIDA7CisKKwkvKgorCSAqIFRoaXMgY2FsY3VsYXRpb24gaXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGluZWZmaWNpZW50CisJICogaW4gaG93IGhhbmRsZSBleHRlbnQgc3BsaXRzIHdoZW4gYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YKKwkgKiB0aGUgZXh0ZW50IHRyZWUuICBTaWdoLiAgV2Ugc2hvdWxkIGZpeCB0aGlzIHNvIHRoYXQgd2UgY2FuCisJICogYWN0dWFsbHkgc3RvcmUgMzQwIGV4dGVudHMgcGVyIDRrIGJsb2NrLCBpbnN0ZWFkIG9mIG9ubHkgMTcwLgorCSAqLworCWV4dGVudHNfcGVyX2Jsb2NrID0gKChmcy0+YmxvY2tzaXplIC0KKwkJCSAgICAgIHNpemVvZihzdHJ1Y3QgZXh0M19leHRlbnRfaGVhZGVyKSkgLworCQkJICAgICBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KSk7CisJZXh0ZW50c19wZXJfYmxvY2sgPSAoZXh0ZW50c19wZXJfYmxvY2svIDIpIC0gMTsKKworCWVfYmxvY2tzID0gKGV4dGVudHMgKyBleHRlbnRzX3Blcl9ibG9jayAtIDEpIC8gZXh0ZW50c19wZXJfYmxvY2s7CisJZV9ibG9ja3MyID0gKGVfYmxvY2tzICsgZXh0ZW50c19wZXJfYmxvY2sgLSAxKSAvIGV4dGVudHNfcGVyX2Jsb2NrOworCWVfYmxvY2tzMyA9IChlX2Jsb2NrczIgKyBleHRlbnRzX3Blcl9ibG9jayAtIDEpIC8gZXh0ZW50c19wZXJfYmxvY2s7CisJZV9ibG9ja3M0ID0gKGVfYmxvY2tzMyArIGV4dGVudHNfcGVyX2Jsb2NrIC0gMSkgLyBleHRlbnRzX3Blcl9ibG9jazsKKwlyZXR1cm4gZV9ibG9ja3MgKyBlX2Jsb2NrczIgKyBlX2Jsb2NrczMgKyBlX2Jsb2NrczQ7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBwbGFjZSB3aGVyZSB3ZSBzaG91bGQgc3RhcnQgYWxsb2NhdGluZyBibG9ja3MgZm9yIHRoZSBodWdlCisgKiBmaWxlcy4gIExlYXZlIDxzbGFjaz4gZnJlZSBibG9ja3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZQorICogc3lzdGVtIGZvciB0aGluZ3MgbGlrZSBtZXRhZGF0YSBibG9ja3MuCisgKi8KK3N0YXRpYyBibGs2NF90IGdldF9zdGFydF9ibG9jayhleHQyX2ZpbHN5cyBmcywgYmxrNjRfdCBzbGFjaykKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWJsazY0X3QgYmxrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2ssIG5leHQ7CisJYmxrNjRfdCBsYXN0X2JsayA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIDE7CisKKwl3aGlsZSAoc2xhY2spIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3RfemVyb19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsCisJCQkJCQlibGssIGxhc3RfYmxrLCAmYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCWJyZWFrOworCisJCXJldHZhbCA9IGV4dDJmc19maW5kX2ZpcnN0X3NldF9ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsCisJCQkJCQlibGssIGxhc3RfYmxrLCAmbmV4dCk7CisJCWlmIChyZXR2YWwpCisJCQluZXh0ID0gbGFzdF9ibGs7CisKKwkJaWYgKG5leHQgLSBibGsgPiBzbGFjaykgeworCQkJYmxrICs9IHNsYWNrOworCQkJYnJlYWs7CisJCX0KKworCQlzbGFjayAtPSAobmV4dCAtIGJsayk7CisJCWJsayA9IG5leHQ7CisJfQorCXJldHVybiBibGs7Cit9CisKK3N0YXRpYyBibGs2NF90IHJvdW5kX3VwX2FsaWduKGJsazY0X3QgYiwgdW5zaWduZWQgbG9uZyBhbGlnbiwKKwkJCSAgICAgIGJsazY0X3QgcGFydF9vZmZzZXQpCit7CisJdW5zaWduZWQgbG9uZyBtOworCisJaWYgKGFsaWduID09IDApCisJCXJldHVybiBiOworCXBhcnRfb2Zmc2V0ID0gcGFydF9vZmZzZXQgJSBhbGlnbjsKKwltID0gKGIgKyBwYXJ0X29mZnNldCkgJSBhbGlnbjsKKwlpZiAobSkKKwkJYiArPSBhbGlnbiAtIG07CisJcmV0dXJuIGI7Cit9CisKK2VycmNvZGVfdCBta19odWdlZmlsZXMoZXh0Ml9maWxzeXMgZnMsIGNvbnN0IGNoYXIgKmRldmljZV9uYW1lKQoreworCXVuc2lnbmVkIGxvbmcJaTsKKwlleHQyX2lub190CWRpcjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCWZzX2Jsb2NrcywgcGFydF9vZmZzZXQgPSAwOworCXVuc2lnbmVkIGxvbmcJYWxpZ247CisJaW50CQlkLCBkc2l6ZTsKKwljaGFyCQkqdDsKKworCWlmICghZ2V0X2Jvb2xfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAibWFrZV9odWdlZmlsZXMiLCAwKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKGZzLT5zdXBlcikpCisJCXJldHVybiBFWFQyX0VUX0VYVEVOVF9OT1RfU1VQUE9SVEVEOworCisJdWlkID0gZ2V0X2ludF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfdWlkIiwgMCk7CisJZ2lkID0gZ2V0X2ludF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfZ2lkIiwgMCk7CisJZnMtPnVtYXNrID0gZ2V0X2ludF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfdW1hc2siLCAwNzcpOworCW51bV9maWxlcyA9IGdldF9pbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAibnVtX2h1Z2VmaWxlcyIsIDApOworCXQgPSBnZXRfc3RyaW5nX2Zyb21fcHJvZmlsZShmc190eXBlcywgImh1Z2VmaWxlc19zbGFjayIsICIxTSIpOworCW51bV9zbGFjayA9IHBhcnNlX251bV9ibG9ja3MyKHQsIGZzLT5zdXBlci0+c19sb2dfYmxvY2tfc2l6ZSk7CisJZnJlZSh0KTsKKwl0ID0gZ2V0X3N0cmluZ19mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfc2l6ZSIsICIwIik7CisJbnVtX2Jsb2NrcyA9IHBhcnNlX251bV9ibG9ja3MyKHQsIGZzLT5zdXBlci0+c19sb2dfYmxvY2tfc2l6ZSk7CisJZnJlZSh0KTsKKwl0ID0gZ2V0X3N0cmluZ19mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfYWxpZ24iLCAiMCIpOworCWFsaWduID0gcGFyc2VfbnVtX2Jsb2NrczIodCwgZnMtPnN1cGVyLT5zX2xvZ19ibG9ja19zaXplKTsKKwlmcmVlKHQpOworCWlmIChnZXRfYm9vbF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfYWxpZ25fZGlzayIsIDApKSB7CisJCXBhcnRfb2Zmc2V0ID0gZ2V0X3BhcnRpdGlvbl9zdGFydChkZXZpY2VfbmFtZSkgLworCQkJKGZzLT5ibG9ja3NpemUgLyA1MTIpOworCQlpZiAocGFydF9vZmZzZXQgJSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCV8oIlBhcnRpdGlvbiBvZmZzZXQgb2YgJWxsdSAoJXVrKSBibG9ja3MgIgorCQkJCSAgIm5vdCBjb21wYXRpYmxlIHdpdGggY2x1c3RlciBzaXplICV1LlxuIiksCisJCQkJcGFydF9vZmZzZXQsIGZzLT5ibG9ja3NpemUsCisJCQkJRVhUMl9DTFVTVEVSX1NJWkUoZnMtPnN1cGVyKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCW51bV9ibG9ja3MgPSByb3VuZF91cF9hbGlnbihudW1fYmxvY2tzLCBhbGlnbiwgMCk7CisJemVyb19odWdlZmlsZSA9IGdldF9ib29sX2Zyb21fcHJvZmlsZShmc190eXBlcywgInplcm9faHVnZWZpbGVzIiwKKwkJCQkJICAgICAgemVyb19odWdlZmlsZSk7CisKKwl0ID0gZ2V0X3N0cmluZ19mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJodWdlZmlsZXNfZGlyIiwgIi8iKTsKKwlyZXR2YWwgPSBjcmVhdGVfZGlyZWN0b3J5KGZzLCB0LCAmZGlyKTsKKwlmcmVlKHQpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlmbl9wcmVmaXggPSBnZXRfc3RyaW5nX2Zyb21fcHJvZmlsZShmc190eXBlcywgImh1Z2VmaWxlc19uYW1lIiwKKwkJCQkJICAgICJodWdlZmlsZSIpOworCWlkeF9kaWdpdHMgPSBnZXRfaW50X2Zyb21fcHJvZmlsZShmc190eXBlcywgImh1Z2VmaWxlc19kaWdpdHMiLCA1KTsKKwlkID0gaW50X2xvZzEwKG51bV9maWxlcykgKyAxOworCWlmIChpZHhfZGlnaXRzID4gZCkKKwkJZCA9IGlkeF9kaWdpdHM7CisJZHNpemUgPSBzdHJsZW4oZm5fcHJlZml4KSArIGQgKyAxNjsKKwlmbl9idWYgPSBtYWxsb2MoZHNpemUpOworCWlmICghZm5fYnVmKSB7CisJCWZyZWUoZm5fcHJlZml4KTsKKwkJcmV0dXJuIEVOT01FTTsKKwl9CisJc3RyY3B5KGZuX2J1ZiwgZm5fcHJlZml4KTsKKwlmbl9udW1idWYgPSBmbl9idWYgKyBzdHJsZW4oZm5fcHJlZml4KTsKKwlmcmVlKGZuX3ByZWZpeCk7CisKKwlmc19ibG9ja3MgPSBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwlpZiAoZnNfYmxvY2tzIDwgbnVtX3NsYWNrICsgYWxpZ24pCisJCXJldHVybiBFTk9TUEM7CisJZnNfYmxvY2tzIC09IG51bV9zbGFjayArIGFsaWduOworCWlmIChudW1fYmxvY2tzICYmIG51bV9ibG9ja3MgPiBmc19ibG9ja3MpCisJCXJldHVybiBFTk9TUEM7CisJaWYgKG51bV9ibG9ja3MgPT0gMCAmJiBudW1fZmlsZXMgPT0gMCkKKwkJbnVtX2ZpbGVzID0gMTsKKworCWlmIChudW1fZmlsZXMgPT0gMCAmJiBudW1fYmxvY2tzKSB7CisJCW51bV9maWxlcyA9IGZzX2Jsb2NrcyAvIG51bV9ibG9ja3M7CisJCWZzX2Jsb2NrcyAtPSAobnVtX2ZpbGVzIC8gMTYpICsgMTsKKwkJZnNfYmxvY2tzIC09IGNhbGNfb3ZlcmhlYWQoZnMsIG51bV9ibG9ja3MpICogbnVtX2ZpbGVzOworCQludW1fZmlsZXMgPSBmc19ibG9ja3MgLyBudW1fYmxvY2tzOworCX0KKworCWlmIChudW1fYmxvY2tzID09IDAgJiYgbnVtX2ZpbGVzID4gMSkgeworCQludW1fYmxvY2tzID0gZnNfYmxvY2tzIC8gbnVtX2ZpbGVzOworCQlmc19ibG9ja3MgLT0gKG51bV9maWxlcyAvIDE2KSArIDE7CisJCWZzX2Jsb2NrcyAtPSBjYWxjX292ZXJoZWFkKGZzLCBudW1fYmxvY2tzKSAqIG51bV9maWxlczsKKwkJbnVtX2Jsb2NrcyA9IGZzX2Jsb2NrcyAvIG51bV9maWxlczsKKwl9CisKKwludW1fc2xhY2sgKz0gY2FsY19vdmVyaGVhZChmcywgbnVtX2Jsb2NrcykgKiBudW1fZmlsZXM7CisJbnVtX3NsYWNrICs9IChudW1fZmlsZXMgLyAxNikgKyAxOyAvKiBzcGFjZSBmb3IgZGlyIGVudHJpZXMgKi8KKwlnb2FsID0gZ2V0X3N0YXJ0X2Jsb2NrKGZzLCBudW1fc2xhY2spOworCWdvYWwgPSByb3VuZF91cF9hbGlnbihnb2FsLCBhbGlnbiwgcGFydF9vZmZzZXQpOworCisJaWYgKChudW1fYmxvY2tzID8gbnVtX2Jsb2NrcyA6IGZzX2Jsb2NrcykgPgorCSAgICAoMHg4MDAwMDAwMFVMIC8gZnMtPmJsb2Nrc2l6ZSkpCisJCWV4dDJmc19zZXRfZmVhdHVyZV9sYXJnZV9maWxlKGZzLT5zdXBlcik7CisKKwlpZiAoIXF1aWV0KSB7CisJCWlmICh6ZXJvX2h1Z2VmaWxlICYmIHZlcmJvc2UpCisJCQlwcmludGYoIiVzIiwgXygiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIpKTsKKwkJcHJpbnRmKF8oIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIiksIG51bV9maWxlcyk7CisJCWlmIChudW1fYmxvY2tzKQorCQkJcHJpbnRmKF8oIndpdGggJWxsdSBibG9ja3MgZWFjaCIpLCBudW1fYmxvY2tzKTsKKwkJZnB1dHMoIjogIiwgc3Rkb3V0KTsKKwl9CisJaWYgKG51bV9ibG9ja3MgPT0gMCkKKwkJbnVtX2Jsb2NrcyA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIGdvYWw7CisJZm9yIChpPTA7IGkgPCBudW1fZmlsZXM7IGkrKykgeworCQlleHQyX2lub190IGlubzsKKworCQlyZXR2YWwgPSBta19odWdlZmlsZShmcywgbnVtX2Jsb2NrcywgZGlyLCBpLCAmaW5vKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IiksIGkpOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwl9CisJaWYgKCFxdWlldCkKKwkJZnB1dHMoXygiZG9uZVxuIiksIHN0ZG91dCk7CisKK2Vycm91dDoKKwlmcmVlKGZuX2J1Zik7CisJcmV0dXJuIHJldHZhbDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL21rZTJmcy1odXJkLmNvbmYgYi9lMmZzcHJvZ3MvbWlzYy9ta2UyZnMtaHVyZC5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMDUyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy9ta2UyZnMtaHVyZC5jb25mCkBAIC0wLDAgKzEsNDIgQEAKK1tkZWZhdWx0c10KKwliYXNlX2ZlYXR1cmVzID0gc3BhcnNlX3N1cGVyLGZpbGV0eXBlLHJlc2l6ZV9pbm9kZSxkaXJfaW5kZXgsZXh0X2F0dHIKKwlkZWZhdWx0X21udG9wdHMgPSBhY2wsdXNlcl94YXR0cgorCWVuYWJsZV9wZXJpb2RpY19mc2NrID0gMAorCWJsb2Nrc2l6ZSA9IDQwOTYKKwlpbm9kZV9zaXplID0gMTI4CisJaW5vZGVfcmF0aW8gPSAxNjM4NAorCitbZnNfdHlwZXNdCisJZXh0MyA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbAorCX0KKwlleHQ0ID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplCisJCWF1dG9fNjQtYml0X3N1cHBvcnQgPSAxCisJCWlub2RlX3NpemUgPSAyNTYKKwl9CisJc21hbGwgPSB7CisJCWlub2RlX3JhdGlvID0gNDA5NgorCX0KKwlmbG9wcHkgPSB7CisJCWlub2RlX3JhdGlvID0gODE5MgorCX0KKwliaWcgPSB7CisJCWlub2RlX3JhdGlvID0gMzI3NjgKKwl9CisJaHVnZSA9IHsKKwkJaW5vZGVfcmF0aW8gPSA2NTUzNgorCX0KKwluZXdzID0geworCQlpbm9kZV9yYXRpbyA9IDQwOTYKKwl9CisJbGFyZ2VmaWxlID0geworCQlpbm9kZV9yYXRpbyA9IDEwNDg1NzYKKwl9CisJbGFyZ2VmaWxlNCA9IHsKKwkJaW5vZGVfcmF0aW8gPSA0MTk0MzA0CisJfQorCWh1cmQgPSB7CisJICAgICBibG9ja3NpemUgPSA0MDk2CisJICAgICBpbm9kZV9zaXplID0gMTI4CisJfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtlMmZzLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9ta2UyZnMuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2I3ODNmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtlMmZzLjguaW4KQEAgLTAsMCArMSw4MTMgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDE5OTMsIDE5OTQsIDE5OTUgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBNS0UyRlMgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorbWtlMmZzIFwtIGNyZWF0ZSBhbiBleHQyL2V4dDMvZXh0NCBmaWxlc3lzdGVtCisuU0ggU1lOT1BTSVMKKy5CIG1rZTJmcworWworLkIgXC1jCit8CisuQiBcLWwKKy5JIGZpbGVuYW1lCitdCitbCisuQiBcLWIKKy5JIGJsb2NrLXNpemUKK10KK1sKKy5CIFwtZAorLkkgcm9vdC1kaXJlY3RvcnkKK10KK1sKKy5CIFwtRAorXQorWworLkIgXC1mCisuSSBmcmFnbWVudC1zaXplCitdCitbCisuQiBcLWcKKy5JIGJsb2Nrcy1wZXItZ3JvdXAKK10KK1sKKy5CIFwtRworLkkgbnVtYmVyLW9mLWdyb3VwcworXQorWworLkIgXC1pCisuSSBieXRlcy1wZXItaW5vZGUKK10KK1sKKy5CIFwtSQorLkkgaW5vZGUtc2l6ZQorXQorWworLkIgXC1qCitdCitbCisuQiBcLUoKKy5JIGpvdXJuYWwtb3B0aW9ucworXQorWworLkIgXC1OCisuSSBudW1iZXItb2YtaW5vZGVzCitdCitbCisuQiBcLW4KK10KK1sKKy5CIFwtbQorLkkgcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2UKK10KK1sKKy5CIFwtbworLkkgY3JlYXRvci1vcworXQorWworLkIgXC1PCitbXl1cZklmZWF0dXJlXGZSWywuLi5dCitdCitbCisuQiBcLXEKK10KK1sKKy5CIFwtcgorLkkgZnMtcmV2aXNpb24tbGV2ZWwKK10KK1sKKy5CIFwtRQorLkkgZXh0ZW5kZWQtb3B0aW9ucworXQorWworLkIgXC12CitdCitbCisuQiBcLUYKK10KK1sKKy5CIFwtTAorLkkgdm9sdW1lLWxhYmVsCitdCitbCisuQiBcLU0KKy5JIGxhc3QtbW91bnRlZC1kaXJlY3RvcnkKK10KK1sKKy5CIFwtUworXQorWworLkIgXC10CisuSSBmcy10eXBlCitdCitbCisuQiBcLVQKKy5JIHVzYWdlLXR5cGUKK10KK1sKKy5CIFwtVQorLkkgVVVJRAorXQorWworLkIgXC1WCitdCitbCisuQiBcLWUKKy5JIGVycm9ycy1iZWhhdmlvcgorXQorWworLkIgXC16CisuSSB1bmRvX2ZpbGUKK10KKy5JIGRldmljZQorWworLkkgZnMtc2l6ZQorXQorQEpERVZALnNwCitASkRFVkAuQiAibWtlMmZzIFwtTyBqb3VybmFsX2RldiIKK0BKREVWQFsKK0BKREVWQC5CIFwtYgorQEpERVZALkkgYmxvY2stc2l6ZQorQEpERVZAXQorLlwiIE5vIGV4dGVybmFsLWpvdXJuYWwgc3BlY2lmaWMgam91cm5hbCBvcHRpb25zIHlldCAoc2l6ZSBpcyBpZ25vcmVkKQorLlwiIEBKREVWQFsKKy5cIiBASkRFVkAuQiBcLUoKKy5cIiBASkRFVkAuSSBqb3VybmFsLW9wdGlvbnMKKy5cIiBASkRFVkBdCitASkRFVkBbCitASkRFVkAuQiBcLUwKK0BKREVWQC5JIHZvbHVtZS1sYWJlbAorQEpERVZAXQorQEpERVZAWworQEpERVZALkIgXC1uCitASkRFVkBdCitASkRFVkBbCitASkRFVkAuQiBcLXEKK0BKREVWQF0KK0BKREVWQFsKK0BKREVWQC5CIFwtdgorQEpERVZAXQorQEpERVZALkkgZXh0ZXJuYWwtam91cm5hbAorQEpERVZAWworQEpERVZALkkgZnMtc2l6ZQorQEpERVZAXQorLlNIIERFU0NSSVBUSU9OCisuQiBta2UyZnMKK2lzIHVzZWQgdG8gY3JlYXRlIGFuIGV4dDIsIGV4dDMsIG9yIGV4dDQgZmlsZXN5c3RlbSwgdXN1YWxseSBpbiBhIGRpc2sKK3BhcnRpdGlvbiAob3IgZmlsZSkgbmFtZWQgYnkKKy5JUiBkZXZpY2UgLgorLlBQCitUaGUgZmlsZSBzeXN0ZW0gc2l6ZSBpcyBzcGVjaWZpZWQgYnkKKy5JUiBmcy1zaXplIC4KK0lmCisuSSBmcy1zaXplCitkb2VzIG5vdCBoYXZlIGEgc3VmZml4LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBwb3dlci1vZi10d28ga2lsb2J5dGVzLAordW5sZXNzIHRoZQorLkIgXC1iCisuSSBibG9ja3NpemUKK29wdGlvbiBpcyBzcGVjaWZpZWQsIGluIHdoaWNoIGNhc2UKKy5JIGZzLXNpemUKK2lzIGludGVycHJldGVkIGFzIHRoZSBudW1iZXIgb2YKKy5JIGJsb2Nrc2l6ZQorYmxvY2tzLiAgIElmIHRoZSBmcy1zaXplIGlzIHN1ZmZpeGVkIGJ5ICdrJywgJ20nLCAnZycsICd0JworKGVpdGhlciB1cHBlci1jYXNlIG9yIGxvd2VyLWNhc2UpLCB0aGVuIGl0IGlzIGludGVycHJldGVkIGluCitwb3dlci1vZi10d28ga2lsb2J5dGVzLCBtZWdhYnl0ZXMsIGdpZ2FieXRlcywgdGVyYWJ5dGVzLCBldGMuCitJZgorLkkgZnMtc2l6ZQoraXMgb21pdHRlZCwKKy5CIG1rZTJmcword2lsbCBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtIGJhc2VkIG9uIHRoZSBkZXZpY2Ugc2l6ZS4KKy5QUAorSWYKKy5CIG1rZTJmcworaXMgcnVuIGFzCisuQiBta2ZzLlhYWAorKGkuZS4sCisuQlIgbWtmcy5leHQyICwKKy5CUiBta2ZzLmV4dDMgLAorb3IKKy5CUiBta2ZzLmV4dDQgKQordGhlIG9wdGlvbgorLkIgXC10CisuSSBYWFgKK2lzIGltcGxpZWQ7IHNvCisuQiBta2ZzLmV4dDMKK3dpbGwgY3JlYXRlIGEgZmlsZSBzeXN0ZW0gZm9yIHVzZSB3aXRoIGV4dDMsCisuQiBta2ZzLmV4dDQKK3dpbGwgY3JlYXRlIGEgZmlsZSBzeXN0ZW0gZm9yIHVzZSB3aXRoIGV4dDQsIGFuZCBzbyBvbi4KKy5QUAorVGhlIGRlZmF1bHRzIG9mIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlc3lzdGVtLCBpZiBub3QKK292ZXJyaWRkZW4gYnkgdGhlIG9wdGlvbnMgbGlzdGVkIGJlbG93LCBhcmUgY29udHJvbGxlZCBieSB0aGUKKy5CIC9ldGMvbWtlMmZzLmNvbmYKK2NvbmZpZ3VyYXRpb24gZmlsZS4gIFNlZSB0aGUKKy5CUiBta2UyZnMuY29uZiAoNSkKK21hbnVhbCBwYWdlIGZvciBtb3JlIGRldGFpbHMuCisuU0ggT1BUSU9OUworLlRQCisuQkkgXC1iICIgYmxvY2stc2l6ZSIKK1NwZWNpZnkgdGhlIHNpemUgb2YgYmxvY2tzIGluIGJ5dGVzLiAgVmFsaWQgYmxvY2stc2l6ZSB2YWx1ZXMgYXJlIDEwMjQsCisyMDQ4IGFuZCA0MDk2IGJ5dGVzIHBlciBibG9jay4gIElmIG9taXR0ZWQsCitibG9jay1zaXplIGlzIGhldXJpc3RpY2FsbHkgZGV0ZXJtaW5lZCBieSB0aGUgZmlsZXN5c3RlbSBzaXplIGFuZAordGhlIGV4cGVjdGVkIHVzYWdlIG9mIHRoZSBmaWxlc3lzdGVtIChzZWUgdGhlCisuQiBcLVQKK29wdGlvbikuICBJZgorLkkgYmxvY2stc2l6ZQoraXMgcHJlY2VkZWQgYnkgYSBuZWdhdGl2ZSBzaWduICgnLScpLCB0aGVuCisuQiBta2UyZnMKK3dpbGwgdXNlIGhldXJpc3RpY3MgdG8gZGV0ZXJtaW5lIHRoZQorYXBwcm9wcmlhdGUgYmxvY2sgc2l6ZSwgd2l0aCB0aGUgY29uc3RyYWludCB0aGF0IHRoZSBibG9jayBzaXplIHdpbGwgYmUKK2F0IGxlYXN0CisuSSBibG9jay1zaXplCitieXRlcy4gIFRoaXMgaXMgdXNlZnVsIGZvciBjZXJ0YWluIGhhcmR3YXJlIGRldmljZXMgd2hpY2ggcmVxdWlyZSB0aGF0Cit0aGUgYmxvY2tzaXplIGJlIGEgbXVsdGlwbGUgb2YgMmsuCisuVFAKKy5CIFwtYworQ2hlY2sgdGhlIGRldmljZSBmb3IgYmFkIGJsb2NrcyBiZWZvcmUgY3JlYXRpbmcgdGhlIGZpbGUgc3lzdGVtLiAgSWYKK3RoaXMgb3B0aW9uIGlzIHNwZWNpZmllZCB0d2ljZSwgdGhlbiBhIHNsb3dlciByZWFkLXdyaXRlCit0ZXN0IGlzIHVzZWQgaW5zdGVhZCBvZiBhIGZhc3QgcmVhZC1vbmx5IHRlc3QuCisuVFAKKy5CIFwtQyAiIGNsdXN0ZXItc2l6ZSIKK1NwZWNpZnkgdGhlIHNpemUgb2YgY2x1c3RlciBpbiBieXRlcyBmb3IgZmlsZXN5c3RlbXMgdXNpbmcgdGhlIGJpZ2FsbG9jCitmZWF0dXJlLiAgVmFsaWQgY2x1c3Rlci1zaXplIHZhbHVlcyBhcmUgZnJvbSAyMDQ4IHRvIDI1Nk0gYnl0ZXMgcGVyCitjbHVzdGVyLiAgVGhpcyBjYW4gb25seSBiZSBzcGVjaWZpZWQgaWYgdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMKK2VuYWJsZWQuICAoU2VlIHRoZQorLkIgZXh0NCAoNSkKK21hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgYmlnYWxsb2MuKSAgIFRoZSBkZWZhdWx0IGNsdXN0ZXIgc2l6ZSBpZgorYmlnYWxsb2MgaXMgZW5hYmxlZCBpcyAxNiB0aW1lcyB0aGUgYmxvY2sgc2l6ZS4KKy5UUAorLkJJIFwtZCAiIHJvb3QtZGlyZWN0b3J5IgorQ29weSB0aGUgY29udGVudHMgb2YgdGhlIGdpdmVuIGRpcmVjdG9yeSBpbnRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUKK2ZpbGVzeXN0ZW0uCisuVFAKKy5CIFwtRAorVXNlIGRpcmVjdCBJL08gd2hlbiB3cml0aW5nIHRvIHRoZSBkaXNrLiAgVGhpcyBhdm9pZHMgbWtlMmZzIGRpcnR5aW5nIGEKK2xvdCBvZiBidWZmZXIgY2FjaGUgbWVtb3J5LCB3aGljaCBtYXkgaW1wYWN0IG90aGVyIGFwcGxpY2F0aW9ucyBydW5uaW5nCitvbiBhIGJ1c3kgc2VydmVyLiAgVGhpcyBvcHRpb24gd2lsbCBjYXVzZSBta2UyZnMgdG8gcnVuIG11Y2ggbW9yZQorc2xvd2x5LCBob3dldmVyLCBzbyB0aGVyZSBpcyBhIHRyYWRlb2ZmIHRvIHVzaW5nIGRpcmVjdCBJL08uCisuVFAKKy5CSSBcLWUgIiBlcnJvci1iZWhhdmlvciIKK0NoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGtlcm5lbCBjb2RlIHdoZW4gZXJyb3JzIGFyZSBkZXRlY3RlZC4KK0luIGFsbCBjYXNlcywgYSBmaWxlc3lzdGVtIGVycm9yIHdpbGwgY2F1c2UKKy5CUiBlMmZzY2sgKDgpCit0byBjaGVjayB0aGUgZmlsZXN5c3RlbSBvbiB0aGUgbmV4dCBib290LgorLkkgZXJyb3ItYmVoYXZpb3IKK2NhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKy5SUyAxLjJpCisuVFAgMS4yaQorLkIgY29udGludWUKK0NvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24uCisuVFAKKy5CIHJlbW91bnQtcm8KK1JlbW91bnQgZmlsZXN5c3RlbSByZWFkLW9ubHkuCisuVFAKKy5CIHBhbmljCitDYXVzZSBhIGtlcm5lbCBwYW5pYy4KKy5SRQorLlRQCisuQkkgXC1FICIgZXh0ZW5kZWQtb3B0aW9ucyIKK1NldCBleHRlbmRlZCBvcHRpb25zIGZvciB0aGUgZmlsZXN5c3RlbS4gIEV4dGVuZGVkIG9wdGlvbnMgYXJlIGNvbW1hCitzZXBhcmF0ZWQsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB1c2luZyB0aGUgZXF1YWxzICgnPScpIHNpZ24uICBUaGUKKy5CIFwtRQorb3B0aW9uIHVzZWQgdG8gYmUKKy5CIFwtUgoraW4gZWFybGllciB2ZXJzaW9ucyBvZgorLkJSIG1rZTJmcyAuCitUaGUKKy5CIFwtUgorb3B0aW9uIGlzIHN0aWxsIGFjY2VwdGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgYnV0IGlzIGRlcHJlY2F0ZWQuCitUaGUgZm9sbG93aW5nIGV4dGVuZGVkIG9wdGlvbnMgYXJlIHN1cHBvcnRlZDoKKy5SUyAxLjJpCisuVFAKKy5CSSBtbXBfdXBkYXRlX2ludGVydmFsPSBpbnRlcnZhbAorQWRqdXN0IHRoZSBpbml0aWFsIE1NUCB1cGRhdGUgaW50ZXJ2YWwgdG8KKy5JIGludGVydmFsCitzZWNvbmRzLiAgU3BlY2lmeWluZyBhbgorLkkgaW50ZXJ2YWwKK29mIDAgbWVhbnMgdG8gdXNlIHRoZSBkZWZhdWx0IGludGVydmFsLiAgVGhlIHNwZWNpZmllZCBpbnRlcnZhbCBtdXN0CitiZSBsZXNzIHRoYW4gMzAwIHNlY29uZHMuICBSZXF1aXJlcyB0aGF0IHRoZQorLkIgbW1wCitmZWF0dXJlIGJlIGVuYWJsZWQuCisuVFAKKy5CSSBzdHJpZGU9IHN0cmlkZS1zaXplCitDb25maWd1cmUgdGhlIGZpbGVzeXN0ZW0gZm9yIGEgUkFJRCBhcnJheSB3aXRoCisuSSBzdHJpZGUtc2l6ZQorZmlsZXN5c3RlbSBibG9ja3MuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBibG9ja3MgcmVhZCBvciB3cml0dGVuIHRvIGRpc2sKK2JlZm9yZSBtb3ZpbmcgdG8gdGhlIG5leHQgZGlzaywgd2hpY2ggaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIHRoZQorLkkgY2h1bmsgc2l6ZS4KK1RoaXMgbW9zdGx5IGFmZmVjdHMgcGxhY2VtZW50IG9mIGZpbGVzeXN0ZW0gbWV0YWRhdGEgbGlrZSBiaXRtYXBzIGF0CisuQiBta2UyZnMKK3RpbWUgdG8gYXZvaWQgcGxhY2luZyB0aGVtIG9uIGEgc2luZ2xlIGRpc2ssIHdoaWNoIGNhbiBodXJ0IHBlcmZvcm1hbmNlLgorSXQgbWF5IGFsc28gYmUgdXNlZCBieSB0aGUgYmxvY2sgYWxsb2NhdG9yLgorLlRQCisuQkkgc3RyaXBlX3dpZHRoPSBzdHJpcGUtd2lkdGgKK0NvbmZpZ3VyZSB0aGUgZmlsZXN5c3RlbSBmb3IgYSBSQUlEIGFycmF5IHdpdGgKKy5JIHN0cmlwZS13aWR0aAorZmlsZXN5c3RlbSBibG9ja3MgcGVyIHN0cmlwZS4gVGhpcyBpcyB0eXBpY2FsbHkgc3RyaWRlLXNpemUgKiBOLCB3aGVyZQorTiBpcyB0aGUgbnVtYmVyIG9mIGRhdGEtYmVhcmluZyBkaXNrcyBpbiB0aGUgUkFJRCAoZS5nLiBmb3IgUkFJRCA1IHRoZXJlIGlzIG9uZQorcGFyaXR5IGRpc2ssIHNvIE4gd2lsbCBiZSB0aGUgbnVtYmVyIG9mIGRpc2tzIGluIHRoZSBhcnJheSBtaW51cyAxKS4KK1RoaXMgYWxsb3dzIHRoZSBibG9jayBhbGxvY2F0b3IgdG8gcHJldmVudCByZWFkLW1vZGlmeS13cml0ZSBvZiB0aGUKK3Bhcml0eSBpbiBhIFJBSUQgc3RyaXBlIGlmIHBvc3NpYmxlIHdoZW4gdGhlIGRhdGEgaXMgd3JpdHRlbi4KKy5UUAorLkJJIG9mZnNldD0gb2Zmc2V0CitDcmVhdGUgdGhlIGZpbGVzeXN0ZW0gYXQgYW4gb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGV2aWNlIG9yCitmaWxlLiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gY3JlYXRpbmcgZGlzayBpbWFnZXMgZm9yIHZpcnR1YWwgbWFjaGluZXMuCisuVFAKKy5CSSByZXNpemU9IG1heC1vbmxpbmUtcmVzaXplCitSZXNlcnZlIGVub3VnaCBzcGFjZSBzbyB0aGF0IHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIHRhYmxlIGNhbiBncm93Cit0byBzdXBwb3J0IGEgZmlsZXN5c3RlbSB0aGF0IGhhcworLkkgbWF4LW9ubGluZS1yZXNpemUKK2Jsb2Nrcy4KKy5UUAorLkIgbGF6eV9pdGFibGVfaW5pdFxmUltcZkI9IFxmSTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxmUl0KK0lmIGVuYWJsZWQgYW5kIHRoZSB1bmluaXRfYmcgZmVhdHVyZSBpcyBlbmFibGVkLCB0aGUgaW5vZGUgdGFibGUgd2lsbAorbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkIGJ5CisuQlIgbWtlMmZzIC4KK1RoaXMgc3BlZWRzIHVwIGZpbGVzeXN0ZW0KK2luaXRpYWxpemF0aW9uIG5vdGljZWFibHksIGJ1dCBpdCByZXF1aXJlcyB0aGUga2VybmVsIHRvIGZpbmlzaAoraW5pdGlhbGl6aW5nIHRoZSBmaWxlc3lzdGVtIGluIHRoZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMKK2ZpcnN0IG1vdW50ZWQuICBJZiB0aGUgb3B0aW9uIHZhbHVlIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIDEgdG8KK2VuYWJsZSBsYXp5IGlub2RlIHRhYmxlIHplcm9pbmcuCisuVFAKKy5CIGxhenlfam91cm5hbF9pbml0XGZSW1xmQj0gXGZJPDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XGZSXQorSWYgZW5hYmxlZCwgdGhlIGpvdXJuYWwgaW5vZGUgd2lsbCBub3QgYmUgZnVsbHkgemVyb2VkIG91dCBieQorLkJSIG1rZTJmcyAuCitUaGlzIHNwZWVkcyB1cCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIG5vdGljZWFibHksIGJ1dCBjYXJyaWVzIHNvbWUKK3NtYWxsIHJpc2sgaWYgdGhlIHN5c3RlbSBjcmFzaGVzIGJlZm9yZSB0aGUgam91cm5hbCBoYXMgYmVlbiBvdmVyd3JpdHRlbgorZW50aXJlbHkgb25lIHRpbWUuICBJZiB0aGUgb3B0aW9uIHZhbHVlIGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIDEgdG8KK2VuYWJsZSBsYXp5IGpvdXJuYWwgaW5vZGUgemVyb2luZy4KKy5UUAorLkJJIG51bV9iYWNrdXBfc2I9IDwwfDF8Mj4KK0lmIHRoZQorLkIgc3BhcnNlX3N1cGVyMgorZmlsZSBzeXN0ZW0gZmVhdHVyZSBpcyBlbmFibGVkIHRoaXMgb3B0aW9uIGNvbnRyb2xzIHdoZXRoZXIgdGhlcmUgd2lsbAorYmUgMCwgMSwgb3IgMiBiYWNrdXAgc3VwZXJibG9ja3MgY3JlYXRlZCBpbiB0aGUgZmlsZSBzeXN0ZW0uCisuVFAKKy5CIHBhY2tlZF9tZXRhX2Jsb2Nrc1xmUltcZkI9IFxmSTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxmUl0KK1BsYWNlIHRoZSBhbGxvY2F0aW9uIGJpdG1hcHMgYW5kIHRoZSBpbm9kZSB0YWJsZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorZGlzay4gIFRoaXMgb3B0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGZsZXhfYmcgZmlsZSBzeXN0ZW0gZmVhdHVyZSB0byBiZQorZW5hYmxlZCBpbiBvcmRlciBmb3IgaXQgdG8gaGF2ZSBlZmZlY3QsIGFuZCB3aWxsIGFsc28gY3JlYXRlIHRoZSBqb3VybmFsCithdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIHN5c3RlbS4gIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCBmb3IgZmxhc2gKK2RldmljZXMgdGhhdCB1c2UgU0xDIGZsYXNoIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRpc2suCitJdCBhbHNvIG1heGltaXplcyB0aGUgcmFuZ2Ugb2YgY29udGlndW91cyBkYXRhIGJsb2Nrcywgd2hpY2gKK2NhbiBiZSB1c2VmdWwgZm9yIGNlcnRhaW4gc3BlY2lhbGl6ZWQgdXNlIGNhc2VzLCBzdWNoIGFzIHN1cHBvcnRlZAorU2hpbmdsZWQgRHJpdmVzLgorLlRQCisuQkkgcm9vdF9vd25lciBbPXVpZDpnaWRdCitTcGVjaWZ5IHRoZSBudW1lcmljIHVzZXIgYW5kIGdyb3VwIElEIG9mIHRoZSByb290IGRpcmVjdG9yeS4gIElmIG5vIFVJRDpHSUQKK2lzIHNwZWNpZmllZCwgdXNlIHRoZSB1c2VyIGFuZCBncm91cCBJRCBvZiB0aGUgdXNlciBydW5uaW5nIFxmQm1rZTJmc1xmUi4KK0luIFxmQm1rZTJmc1xmUiAxLjQyIGFuZCBlYXJsaWVyIHRoZSBVSUQgYW5kIEdJRCBvZiB0aGUgcm9vdCBkaXJlY3Rvcnkgd2VyZQorc2V0IGJ5IGRlZmF1bHQgdG8gdGhlIFVJRCBhbmQgR0lEIG9mIHRoZSB1c2VyIHJ1bm5pbmcgdGhlIG1rZTJmcyBjb21tYW5kLgorVGhlIFxmQnJvb3Rfb3duZXI9XGZSIG9wdGlvbiBhbGxvd3MgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZXNlIHZhbHVlcywKK2FuZCBhdm9pZCBzaWRlLWVmZmVjdHMgZm9yIHVzZXJzIHRoYXQgZG8gbm90IGV4cGVjdCB0aGUgY29udGVudHMgb2YgdGhlCitmaWxlc3lzdGVtIHRvIGNoYW5nZSBiYXNlZCBvbiB0aGUgdXNlciBydW5uaW5nIFxmQm1rZTJmc1xmUi4KKy5UUAorLkIgdGVzdF9mcworU2V0IGEgZmxhZyBpbiB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGluZGljYXRpbmcgdGhhdCBpdCBtYXkgYmUKK21vdW50ZWQgdXNpbmcgZXhwZXJpbWVudGFsIGtlcm5lbCBjb2RlLCBzdWNoIGFzIHRoZSBleHQ0ZGV2IGZpbGVzeXN0ZW0uCisuVFAKKy5CSSBkaXNjYXJkCitBdHRlbXB0IHRvIGRpc2NhcmQgYmxvY2tzIGF0IG1rZnMgdGltZSAoZGlzY2FyZGluZyBibG9ja3MgaW5pdGlhbGx5IGlzIHVzZWZ1bAorb24gc29saWQgc3RhdGUgZGV2aWNlcyBhbmQgc3BhcnNlIC8gdGhpbi1wcm92aXNpb25lZCBzdG9yYWdlKS4gV2hlbiB0aGUgZGV2aWNlCithZHZlcnRpc2VzIHRoYXQgZGlzY2FyZCBhbHNvIHplcm9lcyBkYXRhIChhbnkgc3Vic2VxdWVudCByZWFkIGFmdGVyIHRoZSBkaXNjYXJkCithbmQgYmVmb3JlIHdyaXRlIHJldHVybnMgemVybyksIHRoZW4gbWFyayBhbGwgbm90LXlldC16ZXJvZWQgaW5vZGUgdGFibGVzIGFzCit6ZXJvZWQuIFRoaXMgc2lnbmlmaWNhbnRseSBzcGVlZHMgdXAgZmlsZXN5c3RlbSBpbml0aWFsaXphdGlvbi4gVGhpcyBpcyBzZXQKK2FzIGRlZmF1bHQuCisuVFAKKy5CSSBub2Rpc2NhcmQKK0RvIG5vdCBhdHRlbXB0IHRvIGRpc2NhcmQgYmxvY2tzIGF0IG1rZnMgdGltZS4KKy5UUAorLkJJIHF1b3RhdHlwZQorU3BlY2lmeSB0aGUgd2hpY2ggIHF1b3RhIHR5cGVzICh1c3JxdW90YSwgZ3JwcXVvdGEsIHByanF1b3RhKSB3aGljaAorc2hvdWxkIGJlIGVuYWJsZWQgaW4gdGhlIGNyZWF0ZWQgZmlsZSBzeXN0ZW0uICBUaGUgYXJndW1lbnQgb2YgdGhpcworZXh0ZW5kZWQgb3B0aW9uIHNob3VsZCBiZSBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0LiAgVGhpcyBvcHRpb24gaGFzCitlZmZlY3Qgb25seSBpZiB0aGUKKy5CIHF1b3RhCitmZWF0dXJlIGlzIHNldC4gICBUaGUgZGVmYXVsdCBxdW90YSB0eXBlcyB0byBiZSBpbml0aWFsaXplZCBpZiB0aGlzCitvcHRpb24gaXMgbm90IHNwZWNpZmllZCBpcyBib3RoIHVzZXIgYW5kIGdyb3VwIHF1b3Rhcy4gIElmIHRoZSBwcm9qZWN0CitmZWF0dXJlIGlzIGVuYWJsZWQgdGhhdCBwcm9qZWN0IHF1b3RhcyB3aWxsIGJlIGluaXRpYWxpemVkIGFzIHdlbGwuCisuUkUKKy5UUAorLkJJIFwtZiAiIGZyYWdtZW50LXNpemUiCitTcGVjaWZ5IHRoZSBzaXplIG9mIGZyYWdtZW50cyBpbiBieXRlcy4KKy5UUAorLkIgXC1GCitGb3JjZQorLkIgbWtlMmZzCit0byBjcmVhdGUgYSBmaWxlc3lzdGVtLCBldmVuIGlmIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIG5vdCBhIHBhcnRpdGlvbgorb24gYSBibG9jayBzcGVjaWFsIGRldmljZSwgb3IgaWYgb3RoZXIgcGFyYW1ldGVycyBkbyBub3QgbWFrZSBzZW5zZS4KK0luIG9yZGVyIHRvIGZvcmNlCisuQiBta2UyZnMKK3RvIGNyZWF0ZSBhIGZpbGVzeXN0ZW0gZXZlbiBpZiB0aGUgZmlsZXN5c3RlbSBhcHBlYXJzIHRvIGJlIGluIHVzZQorb3IgaXMgbW91bnRlZCAoYSB0cnVseSBkYW5nZXJvdXMgdGhpbmcgdG8gZG8pLCB0aGlzIG9wdGlvbiBtdXN0IGJlCitzcGVjaWZpZWQgdHdpY2UuCisuVFAKKy5CSSBcLWcgIiBibG9ja3MtcGVyLWdyb3VwIgorU3BlY2lmeSB0aGUgbnVtYmVyIG9mIGJsb2NrcyBpbiBhIGJsb2NrIGdyb3VwLiAgVGhlcmUgaXMgZ2VuZXJhbGx5IG5vCityZWFzb24gZm9yIHRoZSB1c2VyIHRvIGV2ZXIgc2V0IHRoaXMgcGFyYW1ldGVyLCBhcyB0aGUgZGVmYXVsdCBpcyBvcHRpbWFsCitmb3IgdGhlIGZpbGVzeXN0ZW0uICAoRm9yIGFkbWluaXN0cmF0b3JzIHdobyBhcmUgY3JlYXRpbmcKK2ZpbGVzeXN0ZW1zIG9uIFJBSUQgYXJyYXlzLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUKKy5JIHN0cmlkZQorUkFJRCBwYXJhbWV0ZXIgYXMgcGFydCBvZiB0aGUKKy5CIFwtRQorb3B0aW9uIHJhdGhlciB0aGFuIG1hbmlwdWxhdGluZyB0aGUgbnVtYmVyIG9mIGJsb2NrcyBwZXIgZ3JvdXAuKQorVGhpcyBvcHRpb24gaXMgZ2VuZXJhbGx5IHVzZWQgYnkgZGV2ZWxvcGVycyB3aG8KK2FyZSBkZXZlbG9waW5nIHRlc3QgY2FzZXMuCisuSVAKK0lmIHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIGVuYWJsZWQsIHRoZQorLkIgXC1nCitvcHRpb24gd2lsbCBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2x1c3RlcnMgaW4gYSBibG9jayBncm91cC4KKy5UUAorLkJJIFwtRyAiIG51bWJlci1vZi1ncm91cHMiCitTcGVjaWZ5IHRoZSBudW1iZXIgb2YgYmxvY2sgZ3JvdXBzIHRoYXQgd2lsbCBiZSBwYWNrZWQgdG9nZXRoZXIgdG8KK2NyZWF0ZSBhIGxhcmdlciB2aXJ0dWFsIGJsb2NrIGdyb3VwIChvciAiZmxleF9iZyBncm91cCIpIGluIGFuCitleHQ0IGZpbGVzeXN0ZW0uICBUaGlzIGltcHJvdmVzIG1ldGEtZGF0YSBsb2NhbGl0eSBhbmQgcGVyZm9ybWFuY2UKK29uIG1ldGEtZGF0YSBoZWF2eSB3b3JrbG9hZHMuICBUaGUgbnVtYmVyIG9mIGdyb3VwcyBtdXN0IGJlIGEgcG93ZXIKK29mIDIgYW5kIG1heSBvbmx5IGJlIHNwZWNpZmllZCBpZiB0aGUgCisuQiBmbGV4X2JnCitmaWxlc3lzdGVtIGZlYXR1cmUgaXMgZW5hYmxlZC4KKy5UUAorLkJJIFwtaSAiIGJ5dGVzLXBlci1pbm9kZSIKK1NwZWNpZnkgdGhlIGJ5dGVzL2lub2RlIHJhdGlvLgorLkIgbWtlMmZzCitjcmVhdGVzIGFuIGlub2RlIGZvciBldmVyeQorLkkgYnl0ZXMtcGVyLWlub2RlCitieXRlcyBvZiBzcGFjZSBvbiB0aGUgZGlzay4gIFRoZSBsYXJnZXIgdGhlCisuSSBieXRlcy1wZXItaW5vZGUKK3JhdGlvLCB0aGUgZmV3ZXIgaW5vZGVzIHdpbGwgYmUgY3JlYXRlZC4gIFRoaXMgdmFsdWUgZ2VuZXJhbGx5IHNob3VsZG4ndAorYmUgc21hbGxlciB0aGFuIHRoZSBibG9ja3NpemUgb2YgdGhlIGZpbGVzeXN0ZW0sIHNpbmNlIGluIHRoYXQgY2FzZSBtb3JlCitpbm9kZXMgd291bGQgYmUgbWFkZSB0aGFuIGNhbiBldmVyIGJlIHVzZWQuICBCZSB3YXJuZWQgdGhhdCBpdCBpcyBub3QKK3Bvc3NpYmxlIHRvIGNoYW5nZSB0aGlzIHJhdGlvIG9uIGEgZmlsZXN5c3RlbSBhZnRlciBpdCBpcyBjcmVhdGVkLCBzbyBiZQorY2FyZWZ1bCBkZWNpZGluZyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuICBOb3RlIHRoYXQgcmVzaXppbmcKK2EgZmlsZXN5c3RlbSBjaGFuZ2VzIHRoZSBudW1lciBvZiBpbm9kZXMgdG8gbWFpbnRhaW4gdGhpcyByYXRpby4KKy5UUAorLkJJIFwtSSAiIGlub2RlLXNpemUiCitTcGVjaWZ5IHRoZSBzaXplIG9mIGVhY2ggaW5vZGUgaW4gYnl0ZXMuCitUaGUKKy5JIGlub2RlLXNpemUKK3ZhbHVlIG11c3QgYmUgYSBwb3dlciBvZiAyIGxhcmdlciBvciBlcXVhbCB0byAxMjguICBUaGUgbGFyZ2VyIHRoZQorLkkgaW5vZGUtc2l6ZQordGhlIG1vcmUgc3BhY2UgdGhlIGlub2RlIHRhYmxlIHdpbGwgY29uc3VtZSwgYW5kIHRoaXMgcmVkdWNlcyB0aGUgdXNhYmxlCitzcGFjZSBpbiB0aGUgZmlsZXN5c3RlbSBhbmQgY2FuIGFsc28gbmVnYXRpdmVseSBpbXBhY3QgcGVyZm9ybWFuY2UuCitJdCBpcyBub3QKK3Bvc3NpYmxlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIGFmdGVyIHRoZSBmaWxlc3lzdGVtIGlzIGNyZWF0ZWQuCisuSVAKK0luIGtlcm5lbHMgYWZ0ZXIgMi42LjEwIGFuZCBzb21lCitlYXJsaWVyIHZlbmRvciBrZXJuZWxzIGl0IGlzIHBvc3NpYmxlIHRvIHV0aWxpemUgaW5vZGVzIGxhcmdlciB0aGFuCisxMjggYnl0ZXMgdG8gc3RvcmUKK2V4dGVuZGVkIGF0dHJpYnV0ZXMgZm9yIGltcHJvdmVkIHBlcmZvcm1hbmNlLgorRXh0ZW5kZWQgYXR0cmlidXRlcworc3RvcmVkIGluIGxhcmdlIGlub2RlcyBhcmUgbm90IHZpc2libGUgd2l0aCBvbGRlciBrZXJuZWxzLCBhbmQgc3VjaAorZmlsZXN5c3RlbXMgd2lsbCBub3QgYmUgbW91bnRhYmxlIHdpdGggMi40IGtlcm5lbHMgYXQgYWxsLiAgCisuSVAKK1RoZSBkZWZhdWx0IGlub2RlIHNpemUgaXMgY29udHJvbGxlZCBieSB0aGUKKy5CUiBta2UyZnMuY29uZiAoNSkKK2ZpbGUuICBJbiB0aGUKKy5CIG1rZTJmcy5jb25mCitmaWxlIHNoaXBwZWQgd2l0aCBlMmZzcHJvZ3MsIHRoZSBkZWZhdWx0IGlub2RlIHNpemUgaXMgMjU2IGJ5dGVzIGZvcgorbW9zdCBmaWxlIHN5c3RlbXMsIGV4Y2VwdCBmb3Igc21hbGwgZmlsZSBzeXN0ZW1zIHdoZXJlIHRoZSBpbm9kZSBzaXplCit3aWxsIGJlIDEyOCBieXRlcy4KKy5UUAorLkIgXC1qCitDcmVhdGUgdGhlIGZpbGVzeXN0ZW0gd2l0aCBhbiBleHQzIGpvdXJuYWwuICBJZiB0aGUKKy5CIFwtSgorb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGpvdXJuYWwgcGFyYW1ldGVycyB3aWxsIGJlIHVzZWQgdG8KK2NyZWF0ZSBhbiBhcHByb3ByaWF0ZWx5IHNpemVkIGpvdXJuYWwgKGdpdmVuIHRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtKQorc3RvcmVkIHdpdGhpbiB0aGUgZmlsZXN5c3RlbS4gIE5vdGUgdGhhdCB5b3UgbXVzdCBiZSB1c2luZyBhIGtlcm5lbAord2hpY2ggaGFzIGV4dDMgc3VwcG9ydCBpbiBvcmRlciB0byBhY3R1YWxseSBtYWtlIHVzZSBvZiB0aGUgam91cm5hbC4KKy5UUAorLkJJIFwtSiAiIGpvdXJuYWwtb3B0aW9ucyIKK0NyZWF0ZSB0aGUgZXh0MyBqb3VybmFsIHVzaW5nIG9wdGlvbnMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kLWxpbmUuCitKb3VybmFsIG9wdGlvbnMgYXJlIGNvbW1hCitzZXBhcmF0ZWQsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB1c2luZyB0aGUgZXF1YWxzICgnPScpICBzaWduLgorVGhlIGZvbGxvd2luZyBqb3VybmFsIG9wdGlvbnMgYXJlIHN1cHBvcnRlZDoKKy5SUyAxLjJpCisuVFAKKy5CSSBzaXplPSBqb3VybmFsLXNpemUKK0NyZWF0ZSBhbiBpbnRlcm5hbCBqb3VybmFsIChpLmUuLCBzdG9yZWQgaW5zaWRlIHRoZSBmaWxlc3lzdGVtKSBvZiBzaXplCisuSSBqb3VybmFsLXNpemUKK21lZ2FieXRlcy4KK1RoZSBzaXplIG9mIHRoZSBqb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBmaWxlc3lzdGVtIGJsb2NrcworKGkuZS4sIDFNQiBpZiB1c2luZyAxayBibG9ja3MsIDRNQiBpZiB1c2luZyA0ayBibG9ja3MsIGV0Yy4pCithbmQgbWF5IGJlIG5vIG1vcmUgdGhhbiAxMCwyNDAsMDAwIGZpbGVzeXN0ZW0gYmxvY2tzIG9yIGhhbGYgdGhlIHRvdGFsCitmaWxlIHN5c3RlbSBzaXplICh3aGljaGV2ZXIgaXMgc21hbGxlcikKKy5UUAorLkJJIGxvY2F0aW9uID1qb3VybmFsLWxvY2F0aW9uCitTcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgam91cm5hbC4gIFRoZSBhcmd1bWVudAorLkkgam91cm5hbC1sb2NhdGlvbgorY2FuIGVpdGhlciBiZSBzcGVjaWZpZWQgYXMgYSBibG9jayBudW1iZXIsIG9yIGlmIHRoZSBudW1iZXIgaGFzIGEgdW5pdHMKK3N1ZmZpeCAoZS5nLiwgJ00nLCAnRycsIGV0Yy4pIGludGVycHJldCBpdCBhcyB0aGUgb2Zmc2V0IGZyb20gdGhlCitiZWdpbm5pbmcgb2YgdGhlIGZpbGUgc3lzdGVtLgorQEpERVZALlRQCitASkRFVkAuQkkgZGV2aWNlPSBleHRlcm5hbC1qb3VybmFsCitASkRFVkBBdHRhY2ggdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIGpvdXJuYWwgYmxvY2sgZGV2aWNlIGxvY2F0ZWQgb24KK0BKREVWQC5JUiBleHRlcm5hbC1qb3VybmFsIC4KK0BKREVWQFRoZSBleHRlcm5hbAorQEpERVZAam91cm5hbCBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIGNyZWF0ZWQgdXNpbmcgdGhlIGNvbW1hbmQKK0BKREVWQC5JUAorQEpERVZALkIgbWtlMmZzIC1PIGpvdXJuYWxfZGV2CitASkRFVkAuSSBleHRlcm5hbC1qb3VybmFsCitASkRFVkAuSVAKK0BKREVWQE5vdGUgdGhhdAorQEpERVZALkkgZXh0ZXJuYWwtam91cm5hbAorQEpERVZAbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIHRoZQorQEpERVZAc2FtZSBibG9jayBzaXplIGFzIHRoZSBuZXcgZmlsZXN5c3RlbS4KK0BKREVWQEluIGFkZGl0aW9uLCB3aGlsZSB0aGVyZSBpcyBzdXBwb3J0IGZvciBhdHRhY2hpbmcKK0BKREVWQG11bHRpcGxlIGZpbGVzeXN0ZW1zIHRvIGEgc2luZ2xlIGV4dGVybmFsIGpvdXJuYWwsCitASkRFVkB0aGUgTGludXgga2VybmVsIGFuZAorQEpERVZALkJSIGUyZnNjayAoOCkKK0BKREVWQGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBzaGFyZWQgZXh0ZXJuYWwgam91cm5hbHMgeWV0LgorQEpERVZALklQCitASkRFVkBJbnN0ZWFkIG9mIHNwZWNpZnlpbmcgYSBkZXZpY2UgbmFtZSBkaXJlY3RseSwKK0BKREVWQC5JIGV4dGVybmFsLWpvdXJuYWwKK0BKREVWQGNhbiBhbHNvIGJlIHNwZWNpZmllZCBieSBlaXRoZXIKK0BKREVWQC5CSSBMQUJFTD0gbGFiZWwKK0BKREVWQG9yCitASkRFVkAuQkkgVVVJRD0gVVVJRAorQEpERVZAdG8gbG9jYXRlIHRoZSBleHRlcm5hbCBqb3VybmFsIGJ5IGVpdGhlciB0aGUgdm9sdW1lIGxhYmVsIG9yIFVVSUQKK0BKREVWQHN0b3JlZCBpbiB0aGUgZXh0MiBzdXBlcmJsb2NrIGF0IHRoZSBzdGFydCBvZiB0aGUgam91cm5hbC4gIFVzZQorQEpERVZALkJSIGR1bXBlMmZzICg4KQorQEpERVZAdG8gZGlzcGxheSBhIGpvdXJuYWwgZGV2aWNlJ3Mgdm9sdW1lIGxhYmVsIGFuZCBVVUlELiAgU2VlIGFsc28gdGhlCitASkRFVkAuQiAtTAorQEpERVZAb3B0aW9uIG9mCitASkRFVkAuQlIgdHVuZTJmcyAoOCkuCisuUkUKK0BKREVWQC5JUAorQEpERVZAT25seSBvbmUgb2YgdGhlCitASkRFVkAuQlIgc2l6ZSAiIG9yICIgZGV2aWNlCitASkRFVkBvcHRpb25zIGNhbiBiZSBnaXZlbiBmb3IgYSBmaWxlc3lzdGVtLgorLlRQCisuQkkgXC1sICIgZmlsZW5hbWUiCitSZWFkIHRoZSBiYWQgYmxvY2tzIGxpc3QgZnJvbQorLklSIGZpbGVuYW1lIC4KK05vdGUgdGhhdCB0aGUgYmxvY2sgbnVtYmVycyBpbiB0aGUgYmFkIGJsb2NrIGxpc3QgbXVzdCBiZSBnZW5lcmF0ZWQKK3VzaW5nIHRoZSBzYW1lIGJsb2NrIHNpemUgYXMgdXNlZCBieQorLkJSIG1rZTJmcyAuCitBcyBhIHJlc3VsdCwgdGhlCisuQiBcLWMKK29wdGlvbiB0bworLkIgbWtlMmZzCitpcyBhIG11Y2ggc2ltcGxlciBhbmQgbGVzcyBlcnJvci1wcm9uZSBtZXRob2Qgb2YgY2hlY2tpbmcgYSBkaXNrIGZvciBiYWQKK2Jsb2NrcyBiZWZvcmUgZm9ybWF0dGluZyBpdCwgYXMKKy5CIG1rZTJmcword2lsbCBhdXRvbWF0aWNhbGx5IHBhc3MgdGhlIGNvcnJlY3QgcGFyYW1ldGVycyB0byB0aGUKKy5CIGJhZGJsb2NrcworcHJvZ3JhbS4KKy5UUAorLkJJIFwtTCAiIG5ldy12b2x1bWUtbGFiZWwiCitTZXQgdGhlIHZvbHVtZSBsYWJlbCBmb3IgdGhlIGZpbGVzeXN0ZW0gdG8KKy5JUiBuZXctdm9sdW1lLWxhYmVsIC4KK1RoZSBtYXhpbXVtIGxlbmd0aCBvZiB0aGUKK3ZvbHVtZSBsYWJlbCBpcyAxNiBieXRlcy4KKy5UUAorLkJJIFwtbSAiIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlIgorU3BlY2lmeSB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZmlsZXN5c3RlbSBibG9ja3MgcmVzZXJ2ZWQgZm9yCit0aGUgc3VwZXItdXNlci4gIFRoaXMgYXZvaWRzIGZyYWdtZW50YXRpb24sIGFuZCBhbGxvd3Mgcm9vdC1vd25lZAorZGFlbW9ucywgc3VjaCBhcworLkJSIHN5c2xvZ2QgKDgpLAordG8gY29udGludWUgdG8gZnVuY3Rpb24gY29ycmVjdGx5IGFmdGVyIG5vbi1wcml2aWxlZ2VkIHByb2Nlc3NlcyBhcmUKK3ByZXZlbnRlZCBmcm9tIHdyaXRpbmcgdG8gdGhlIGZpbGVzeXN0ZW0uICBUaGUgZGVmYXVsdCBwZXJjZW50YWdlCitpcyA1JS4KKy5UUAorLkJJIFwtTSAiIGxhc3QtbW91bnRlZC1kaXJlY3RvcnkiCitTZXQgdGhlIGxhc3QgbW91bnRlZCBkaXJlY3RvcnkgZm9yIHRoZSBmaWxlc3lzdGVtLiAgVGhpcyBtaWdodCBiZSB1c2VmdWwKK2ZvciB0aGUgc2FrZSBvZiB1dGlsaXRpZXMgdGhhdCBrZXkgb2ZmIG9mIHRoZSBsYXN0IG1vdW50ZWQgZGlyZWN0b3J5IHRvCitkZXRlcm1pbmUgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gc2hvdWxkIGJlIG1vdW50ZWQuCisuVFAKKy5CIFwtbgorQ2F1c2VzCisuQiBta2UyZnMKK3RvIG5vdCBhY3R1YWxseSBjcmVhdGUgYSBmaWxlc3lzdGVtLCBidXQgZGlzcGxheSB3aGF0IGl0Cit3b3VsZCBkbyBpZiBpdCB3ZXJlIHRvIGNyZWF0ZSBhIGZpbGVzeXN0ZW0uICBUaGlzIGNhbiBiZSB1c2VkIHRvCitkZXRlcm1pbmUgdGhlIGxvY2F0aW9uIG9mIHRoZSBiYWNrdXAgc3VwZXJibG9ja3MgZm9yIGEgcGFydGljdWxhcgorZmlsZXN5c3RlbSwgc28gbG9uZyBhcyB0aGUKKy5CIG1rZTJmcworcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHdoZW4gdGhlCitmaWxlc3lzdGVtIHdhcyBvcmlnaW5hbGx5IGNyZWF0ZWQgYXJlIHVzZWQgYWdhaW4uICAoV2l0aCB0aGUKKy5CIFwtbgorb3B0aW9uIGFkZGVkLCBvZiBjb3Vyc2UhKQorLlRQCisuQkkgXC1OICIgbnVtYmVyLW9mLWlub2RlcyIKK092ZXJyaWRlcyB0aGUgZGVmYXVsdCBjYWxjdWxhdGlvbiBvZiB0aGUgbnVtYmVyIG9mIGlub2RlcyB0aGF0IHNob3VsZCBiZQorcmVzZXJ2ZWQgZm9yIHRoZSBmaWxlc3lzdGVtICh3aGljaCBpcyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIGJsb2NrcyBhbmQKK3RoZQorLkkgYnl0ZXMtcGVyLWlub2RlCityYXRpbykuICBUaGlzIGFsbG93cyB0aGUgdXNlciB0byBzcGVjaWZ5IHRoZSBudW1iZXIKK29mIGRlc2lyZWQgaW5vZGVzIGRpcmVjdGx5LgorLlRQCisuQkkgXC1vICIgY3JlYXRvci1vcyIKK092ZXJyaWRlcyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgImNyZWF0b3Igb3BlcmF0aW5nIHN5c3RlbSIgZmllbGQgb2YgdGhlCitmaWxlc3lzdGVtLiAgVGhlIGNyZWF0b3IgZmllbGQgaXMgc2V0IGJ5IGRlZmF1bHQgdG8gdGhlIG5hbWUgb2YgdGhlIE9TIHRoZQorLkIgbWtlMmZzCitleGVjdXRhYmxlIHdhcyBjb21waWxlZCBmb3IuCisuVFAKKy5CICJcLU8gXGZSW15dXGZJZmVhdHVyZVxmUlssLi4uXSIKK0NyZWF0ZSBhIGZpbGVzeXN0ZW0gd2l0aCB0aGUgZ2l2ZW4gZmVhdHVyZXMgKGZpbGVzeXN0ZW0gb3B0aW9ucyksCitvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gb3B0aW9ucy4gIFRoZSBmZWF0dXJlcyB0aGF0IGFyZQorZW5hYmxlZCBieSBkZWZhdWx0IGFyZSBzcGVjaWZpZWQgYnkgdGhlCisuSSBiYXNlX2ZlYXR1cmVzCityZWxhdGlvbiwgZWl0aGVyIGluIHRoZQorLkkgW2RlZmF1bHRzXQorc2VjdGlvbiBpbiB0aGUKKy5CIC9ldGMvbWtlMmZzLmNvbmYKK2NvbmZpZ3VyYXRpb24gZmlsZSwKK29yIGluIHRoZQorLkkgW2ZzX3R5cGVzXQorc3Vic2VjdGlvbnMgZm9yIHRoZSB1c2FnZSB0eXBlcyBhcyBzcGVjaWZpZWQgYnkgdGhlCisuQiBcLVQKK29wdGlvbiwgZnVydGhlciBtb2RpZmllZCBieSB0aGUKKy5JIGZlYXR1cmVzCityZWxhdGlvbiBmb3VuZCBpbiB0aGUKKy5JIFtmc190eXBlc10KK3N1YnNlY3Rpb25zIGZvciB0aGUgZmlsZXN5c3RlbSBhbmQgdXNhZ2UgdHlwZXMuICBTZWUgdGhlCisuQlIgbWtlMmZzLmNvbmYgKDUpCittYW51YWwgcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgorVGhlIGZpbGVzeXN0ZW0gdHlwZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHNldHRpbmcgZm91bmQgaW4gdGhlCisuSSBbZnNfdHlwZXNdCitzZWN0aW9uIHdpbGwgb3ZlcnJpZGUgdGhlIGdsb2JhbCBkZWZhdWx0IGZvdW5kIGluCisuSVIgW2RlZmF1bHRzXSAuCisuc3AKK1RoZSBmaWxlc3lzdGVtIGZlYXR1cmUgc2V0IHdpbGwgYmUgZnVydGhlciBlZGl0ZWQKK3VzaW5nIGVpdGhlciB0aGUgZmVhdHVyZSBzZXQgc3BlY2lmaWVkIGJ5IHRoaXMgb3B0aW9uLAorb3IgaWYgdGhpcyBvcHRpb24gaXMgbm90IGdpdmVuLCBieSB0aGUKKy5JIGRlZmF1bHRfZmVhdHVyZXMKK3JlbGF0aW9uIGZvciB0aGUgZmlsZXN5c3RlbSB0eXBlIGJlaW5nIGNyZWF0ZWQsIG9yIGluIHRoZQorLkkgW2RlZmF1bHRzXQorc2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLgorLnNwCitUaGUgZmlsZXN5c3RlbSBmZWF0dXJlIHNldCBpcyBjb21wcmlzZWQgb2YgYSBsaXN0IG9mIGZlYXR1cmVzLCBzZXBhcmF0ZWQKK2J5IGNvbW1hcywgdGhhdCBhcmUgdG8gYmUgZW5hYmxlZC4gIFRvIGRpc2FibGUgYSBmZWF0dXJlLCBzaW1wbHkKK3ByZWZpeCB0aGUgZmVhdHVyZSBuYW1lIHdpdGggYSBjYXJldCAoJ14nKSBjaGFyYWN0ZXIuCitGZWF0dXJlcyB3aXRoIGRlcGVuZGVuY2llcyB3aWxsIG5vdCBiZSByZW1vdmVkIHN1Y2Nlc3NmdWxseS4KK1RoZSBwc2V1ZG8tZmlsZXN5c3RlbSBmZWF0dXJlICJub25lIiB3aWxsIGNsZWFyIGFsbCBmaWxlc3lzdGVtIGZlYXR1cmVzLgorLlRQCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZmVhdHVyZXMgd2hpY2ggY2FuIGJlIHNldCwgcGxlYXNlIHNlZQordGhlIG1hbnVhbCBwYWdlCisuQlIgZXh0NCAoNSkuCisuVFAKKy5CIFwtcQorUXVpZXQgZXhlY3V0aW9uLiAgVXNlZnVsIGlmCisuQiBta2UyZnMKK2lzIHJ1biBpbiBhIHNjcmlwdC4KKy5UUAorLkJJIFwtciAiIHJldmlzaW9uIgorU2V0IHRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGZvciB0aGUgbmV3IGZpbGVzeXN0ZW0uICBOb3RlIHRoYXQgMS4yCitrZXJuZWxzIG9ubHkgc3VwcG9ydCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zLiAgVGhlIGRlZmF1bHQgaXMgdG8KK2NyZWF0ZSByZXZpc2lvbiAxIGZpbGVzeXN0ZW1zLgorLlRQCisuQiBcLVMKK1dyaXRlIHN1cGVyYmxvY2sgYW5kIGdyb3VwIGRlc2NyaXB0b3JzIG9ubHkuICBUaGlzIGlzIGFuIGV4dHJlbWUKK21lYXN1cmUgdG8gYmUgdGFrZW4gb25seSBpbiB0aGUgdmVyeSB1bmxpa2VseSBjYXNlIHRoYXQgYWxsIG9mCit0aGUgc3VwZXJibG9jayBhbmQgYmFja3VwIHN1cGVyYmxvY2tzIGFyZSBjb3JydXB0ZWQsIGFuZCBhIGxhc3QtZGl0Y2gKK3JlY292ZXJ5IG1ldGhvZCBpcyBkZXNpcmVkIGJ5IGV4cGVyaWVuY2VkIHVzZXJzLiAgSXQgY2F1c2VzCisuQiBta2UyZnMKK3RvIHJlaW5pdGlhbGl6ZSB0aGUgc3VwZXJibG9jayBhbmQgZ3JvdXAgZGVzY3JpcHRvcnMsIHdoaWxlIG5vdAordG91Y2hpbmcgdGhlIGlub2RlIHRhYmxlIGFuZCB0aGUgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMuICBUaGUKKy5CIGUyZnNjaworcHJvZ3JhbSBzaG91bGQgYmUgcnVuIGltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgb3B0aW9uIGlzIHVzZWQsIGFuZCB0aGVyZQoraXMgbm8gZ3VhcmFudGVlIHRoYXQgYW55IGRhdGEgd2lsbCBiZSBzYWx2YWdlYWJsZS4gIER1ZSB0byB0aGUgd2lkZQordmFyaWV0eSBvZiBwb3NzaWJsZSBvcHRpb25zIHRvCisuQlIgbWtlMmZzCit0aGF0IGFmZmVjdCB0aGUgb24tZGlzayBsYXlvdXQsIGl0IGlzIGNyaXRpY2FsIHRvIHNwZWNpZnkgZXhhY3RseQordGhlIHNhbWUgZm9ybWF0IG9wdGlvbnMsIHN1Y2ggYXMgYmxvY2tzaXplLCBmcy10eXBlLCBmZWF0dXJlIGZsYWdzLCBhbmQKK290aGVyIHR1bmFibGVzIHdoZW4gdXNpbmcgdGhpcyBvcHRpb24sIG9yIHRoZSBmaWxlc3lzdGVtIHdpbGwgYmUgZnVydGhlcgorY29ycnVwdGVkLiAgSW4gc29tZSBjYXNlcywgc3VjaCBhcyBmaWxlc3lzdGVtcyB0aGF0IGhhdmUgYmVlbiByZXNpemVkLAorb3IgaGF2ZSBoYWQgZmVhdHVyZXMgZW5hYmxlZCBhZnRlciBmb3JtYXQgdGltZSwgaXQgaXMgaW1wb3NzaWJsZSB0bworb3ZlcndyaXRlIGFsbCBvZiB0aGUgc3VwZXJibG9ja3MgY29ycmVjdGx5LCBhbmQgYXQgbGVhc3Qgc29tZSBmaWxlc3lzdGVtCitjb3JydXB0aW9uIHdpbGwgb2NjdXIuICBJdCBpcyBiZXN0IHRvIHJ1biB0aGlzIG9uIGEgZnVsbCBjb3B5IG9mIHRoZQorZmlsZXN5c3RlbSBzbyBvdGhlciBvcHRpb25zIGNhbiBiZSB0cmllZCBpZiB0aGlzIGRvZXNuJ3Qgd29yay4KKy5cIiAuVFAKKy5cIiAuQkkgXC10ICIgdGVzdCIKKy5cIiBDaGVjayB0aGUgZGV2aWNlIGZvciBiYWQgYmxvY2tzIGJlZm9yZSBjcmVhdGluZyB0aGUgZmlsZSBzeXN0ZW0KKy5cIiB1c2luZyB0aGUgc3BlY2lmaWVkIHRlc3QuCisuVFAKKy5CSSBcLXQgIiBmcy10eXBlIgorU3BlY2lmeSB0aGUgZmlsZXN5c3RlbSB0eXBlIChpLmUuLCBleHQyLCBleHQzLCBleHQ0LCBldGMuKSB0aGF0IGlzCit0byBiZSBjcmVhdGVkLgorSWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZCwKKy5CIG1rZTJmcword2lsbCBwaWNrIGEgZGVmYXVsdCBlaXRoZXIgdmlhIGhvdwordGhlIGNvbW1hbmQgd2FzIHJ1biAoZm9yIGV4YW1wbGUsIHVzaW5nIGEgbmFtZSBvZiB0aGUgZm9ybSBta2ZzLmV4dDIsCitta2ZzLmV4dDMsIGV0Yy4pIG9yIHZpYSBhIGRlZmF1bHQgYXMgZGVmaW5lZCBieSB0aGUKKy5CIC9ldGMvbWtlMmZzLmNvbmYKK2ZpbGUuICAgVGhpcyBvcHRpb24gY29udHJvbHMgd2hpY2ggZmlsZXN5c3RlbSBvcHRpb25zIGFyZSB1c2VkIGJ5CitkZWZhdWx0LCBiYXNlZCBvbiB0aGUKKy5CIGZzdHlwZXMKK2NvbmZpZ3VyYXRpb24gc3RhbnphIGluCisuQlIgL2V0Yy9ta2UyZnMuY29uZiAuCisuc3AKK0lmIHRoZQorLkIgXC1PCitvcHRpb24gaXMgdXNlZCB0byBleHBsaWNpdGx5IGFkZCBvciByZW1vdmUgZmlsZXN5c3RlbSBvcHRpb25zIHRoYXQKK3Nob3VsZCBiZSBzZXQgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZXN5c3RlbSwgdGhlCityZXN1bHRpbmcgZmlsZXN5c3RlbSBtYXkgbm90IGJlIHN1cHBvcnRlZCBieSB0aGUgcmVxdWVzdGVkCisuSVIgZnMtdHlwZSAuCisoZS5nLiwgIlxmQm1rZTJmcyBcLXQgZXh0MyBcLU8gZXh0ZW50IC9kZXYvc2RYWFxmUiIgd2lsbCBjcmVhdGUgYQorZmlsZXN5c3RlbSB0aGF0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGV4dDMgaW1wbGVtZW50YXRpb24gYXMgZm91bmQgaW4KK3RoZSBMaW51eCBrZXJuZWw7IGFuZCAiXGZCbWtlMmZzIFwtdCBleHQzIFwtTyBeaGFzX2pvdXJuYWwgL2Rldi9oZFhYXGZSIgord2lsbCBjcmVhdGUgYSBmaWxlc3lzdGVtIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGpvdXJuYWwgYW5kIGhlbmNlIHdpbGwgbm90CitiZSBzdXBwb3J0ZWQgYnkgdGhlIGV4dDMgZmlsZXN5c3RlbSBjb2RlIGluIHRoZSBMaW51eCBrZXJuZWwuKQorLlRQCisuQkkgXC1UICIgdXNhZ2UtdHlwZVssLi4uXSIKK1NwZWNpZnkgaG93IHRoZSBmaWxlc3lzdGVtIGlzIGdvaW5nIHRvIGJlIHVzZWQsIHNvIHRoYXQKKy5CIG1rZTJmcworY2FuIGNob29zZSBvcHRpbWFsIGZpbGVzeXN0ZW0gcGFyYW1ldGVycyBmb3IgdGhhdCB1c2UuICBUaGUgdXNhZ2UKK3R5cGVzIHRoYXQgYXJlIHN1cHBvcnRlZCBhcmUgZGVmaW5lZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlCisuQlIgL2V0Yy9ta2UyZnMuY29uZiAuCitUaGUgdXNlciBtYXkgc3BlY2lmeSBvbmUgb3IgbW9yZSB1c2FnZSB0eXBlcwordXNpbmcgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdC4KKy5zcAorSWYgdGhpcyBvcHRpb24gaXMgaXMgbm90IHNwZWNpZmllZCwKKy5CIG1rZTJmcword2lsbCBwaWNrIGEgc2luZ2xlIGRlZmF1bHQgdXNhZ2UgdHlwZSBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSB0bworYmUgY3JlYXRlZC4gIElmIHRoZSBmaWxlc3lzdGVtIHNpemUgaXMgbGVzcyB0aGFuIDMgbWVnYWJ5dGVzLAorLkIgbWtlMmZzCit3aWxsIHVzZSB0aGUgZmlsZXN5c3RlbSB0eXBlCisuSVIgZmxvcHB5IC4KK0lmIHRoZSBmaWxlc3lzdGVtIHNpemUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDMgYnV0IGxlc3MgdGhhbgorNTEyIG1lZ2FieXRlcywKKy5CUiBta2UyZnMgKDgpCit3aWxsIHVzZSB0aGUgZmlsZXN5c3RlbSB0eXBlCisuSVIgc21hbGwgLgorSWYgdGhlIGZpbGVzeXN0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gNCB0ZXJhYnl0ZXMgYnV0IGxlc3MgdGhhbgorMTYgdGVyYWJ5dGVzLAorLkJSIG1rZTJmcyAoOCkKK3dpbGwgdXNlIHRoZSBmaWxlc3lzdGVtIHR5cGUKKy5JUiBiaWcgLgorSWYgdGhlIGZpbGVzeXN0ZW0gc2l6ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMTYgdGVyYWJ5dGVzLAorLkJSIG1rZTJmcyAoOCkKK3dpbGwgdXNlIHRoZSBmaWxlc3lzdGVtIHR5cGUKKy5JUiBodWdlIC4KK090aGVyd2lzZSwKKy5CUiBta2UyZnMgKDgpCit3aWxsIHVzZSB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIHR5cGUKKy5JUiBkZWZhdWx0IC4KKy5UUAorLkJJIFwtVSAiIFVVSUQiCitDcmVhdGUgdGhlIGZpbGVzeXN0ZW0gd2l0aCB0aGUgc3BlY2lmaWVkIFVVSUQuCisuVFAKKy5CIFwtdgorVmVyYm9zZSBleGVjdXRpb24uCisuVFAKKy5CIFwtVgorUHJpbnQgdGhlIHZlcnNpb24gbnVtYmVyIG9mCisuQiBta2UyZnMKK2FuZCBleGl0LgorLlRQCisuQkkgXC16ICIgdW5kb19maWxlIgorQmVmb3JlIG92ZXJ3cml0aW5nIGEgZmlsZSBzeXN0ZW0gYmxvY2ssIHdyaXRlIHRoZSBvbGQgY29udGVudHMgb2YgdGhlIGJsb2NrIHRvCithbiB1bmRvIGZpbGUuICBUaGlzIHVuZG8gZmlsZSBjYW4gYmUgdXNlZCB3aXRoIGUydW5kbyg4KSB0byByZXN0b3JlIHRoZSBvbGQKK2NvbnRlbnRzIG9mIHRoZSBmaWxlIHN5c3RlbSBzaG91bGQgc29tZXRoaW5nIGdvIHdyb25nLiAgSWYgdGhlIGVtcHR5IHN0cmluZyBpcworcGFzc2VkIGFzIHRoZSB1bmRvX2ZpbGUgYXJndW1lbnQsIHRoZSB1bmRvIGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGEgZmlsZSBuYW1lZAorbWtlMmZzLVxmSWRldmljZVxmUi5lMnVuZG8gaW4gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQgdmlhIHRoZQorXGZJRTJGU1BST0dTX1VORE9fRElSXGZSIGVudmlyb25tZW50IHZhcmlhYmxlIG9yIHRoZSBcZkl1bmRvX2RpclxmUiBkaXJlY3RpdmUKK2luIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisKK1dBUk5JTkc6IFRoZSB1bmRvIGZpbGUgY2Fubm90IGJlIHVzZWQgdG8gcmVjb3ZlciBmcm9tIGEgcG93ZXIgb3Igc3lzdGVtIGNyYXNoLgorLlNIIEVOVklST05NRU5UCisuVFAKKy5CSSBNS0UyRlNfU1lOQworSWYgc2V0IHRvIG5vbi16ZXJvIGludGVnZXIgdmFsdWUsIGl0cyB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSBob3cgb2Z0ZW4KKy5CUiBzeW5jICgyKQoraXMgY2FsbGVkIGR1cmluZyBpbm9kZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKy5UUAorLkJJIE1LRTJGU19DT05GSUcKK0RldGVybWluZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgKHNlZQorLkJSIG1rZTJmcy5jb25mICg1KSkuCisuVFAKKy5CSSBNS0UyRlNfRklSU1RfTUVUQV9CRworSWYgc2V0IHRvIG5vbi16ZXJvIGludGVnZXIgdmFsdWUsIGl0cyB2YWx1ZSBpcyB1c2VkIHRvIGRldGVybWluZSBmaXJzdCBtZXRhCitibG9jayBncm91cC4gVGhpcyBpcyBtb3N0bHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4KKy5UUAorLkJJIE1LRTJGU19ERVZJQ0VfU0VDVFNJWkUKK0lmIHNldCB0byBub24temVybyBpbnRlZ2VyIHZhbHVlLCBpdHMgdmFsdWUgaXMgdXNlZCB0byBkZXRlcm1pbmUgcGh5c2ljYWwKK3NlY3RvciBzaXplIG9mIHRoZQorLklSIGRldmljZSAuCisuVFAKKy5CSSBNS0UyRlNfU0tJUF9DSEVDS19NU0cKK0lmIHNldCwgZG8gbm90IHNob3cgdGhlIG1lc3NhZ2Ugb2YgZmlsZXN5c3RlbSBhdXRvbWF0aWMgY2hlY2sgY2F1c2VkIGJ5Cittb3VudCBjb3VudCBvciBjaGVjayBpbnRlcnZhbC4KKy5TSCBBVVRIT1IKK1RoaXMgdmVyc2lvbiBvZgorLkIgbWtlMmZzCitoYXMgYmVlbiB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+LgorLlNIIEJVR1MKKy5CIG1rZTJmcworYWNjZXB0cyB0aGUKKy5CIFwtZgorb3B0aW9uIGJ1dCBjdXJyZW50bHkgaWdub3JlcyBpdCBiZWNhdXNlIHRoZSBzZWNvbmQKK2V4dGVuZGVkIGZpbGUgc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnRzIHlldC4KKy5icgorVGhlcmUgbWF5IGJlIG90aGVyIG9uZXMuICBQbGVhc2UsIHJlcG9ydCB0aGVtIHRvIHRoZSBhdXRob3IuCisuU0ggQVZBSUxBQklMSVRZCisuQiBta2UyZnMKK2lzIHBhcnQgb2YgdGhlIGUyZnNwcm9ncyBwYWNrYWdlIGFuZCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuCisuU0ggU0VFIEFMU08KKy5CUiBta2UyZnMuY29uZiAoNSksCisuQlIgYmFkYmxvY2tzICg4KSwKKy5CUiBkdW1wZTJmcyAoOCksCisuQlIgZTJmc2NrICg4KSwKKy5CUiB0dW5lMmZzICg4KSwKKy5CUiBleHQ0ICg1KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmMgYi9lMmZzcHJvZ3MvbWlzYy9ta2UyZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOThlNzFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmMKQEAgLTAsMCArMSwzMjI1IEBACisvKgorICogbWtlMmZzLmMgLSBNYWtlIGEgZXh0MmZzIGZpbGVzeXN0ZW0uCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAorICogCTIwMDMsIDIwMDQsIDIwMDUgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKy8qIFVzYWdlOiBta2UyZnMgW29wdGlvbnNdIGRldmljZQorICoKKyAqIFRoZSBkZXZpY2UgbWF5IGJlIGEgYmxvY2sgZGV2aWNlIG9yIGEgaW1hZ2Ugb2Ygb25lLCBidXQgdGhpcyBpc24ndAorICogZW5mb3JjZWQgKGJ1dCBpdCdzIG5vdCBtdWNoIGZ1biBvbiBhIGNoYXJhY3RlciBkZXZpY2UgOi0pLgorICovCisKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAgLyogZm9yIGluY2x1c2lvbiBvZiBQQVRIX01BWCAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaWZkZWYgX19saW51eF9fCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNkZWZpbmUgS0VSTkVMX1ZFUlNJT04oYSxiLGMpICgoKGEpIDw8IDE2KSArICgoYikgPDwgOCkgKyAoYykpCisjZW5kaWYKKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGJsa2lkL2Jsa2lkLmg+CisKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnNQLmgiCisjaW5jbHVkZSAidXVpZC91dWlkLmgiCisjaW5jbHVkZSAidXRpbC5oIgorI2luY2x1ZGUgInN1cHBvcnQvbmxzLWVuYWJsZS5oIgorI2luY2x1ZGUgInN1cHBvcnQvcGxhdXNpYmxlLmgiCisjaW5jbHVkZSAic3VwcG9ydC9wcm9maWxlLmgiCisjaW5jbHVkZSAic3VwcG9ydC9wcm9mX2Vyci5oIgorI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJzdXBwb3J0L3F1b3RhaW8uaCIKKyNpbmNsdWRlICJta2UyZnMuaCIKKyNpbmNsdWRlICJjcmVhdGVfaW5vZGUuaCIKKworI2RlZmluZSBTVFJJREVfTEVOR1RIIDgKKworI2RlZmluZSBNQVhfMzJfTlVNICgoKCh1bnNpZ25lZCBsb25nIGxvbmcpIDEpIDw8IDMyKSAtIDEpCisKKyNpZm5kZWYgX19zcGFyY19fCisjZGVmaW5lIFpBUF9CT09UQkxPQ0sKKyNlbmRpZgorCisjZGVmaW5lIERJU0NBUkRfU1RFUF9NQgkJKDIwNDgpCisKK2V4dGVybiBpbnQgaXNhdHR5KGludCk7CitleHRlcm4gRklMRSAqZnBvcGVuKGNvbnN0IGNoYXIgKmNtZCwgY29uc3QgY2hhciAqbW9kZSk7CisKK2NvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWUgPSAibWtlMmZzIjsKK3N0YXRpYyBjb25zdCBjaGFyICogZGV2aWNlX25hbWUgLyogPSBOVUxMICovOworCisvKiBDb21tYW5kIGxpbmUgb3B0aW9ucyAqLworc3RhdGljIGludAljZmxhZzsKK2ludAl2ZXJib3NlOworaW50CXF1aWV0Oworc3RhdGljIGludAlzdXBlcl9vbmx5Oworc3RhdGljIGludAlkaXNjYXJkID0gMTsJLyogYXR0ZW1wdCB0byBkaXNjYXJkIGRldmljZSBiZWZvcmUgZnMgY3JlYXRpb24gKi8KK3N0YXRpYyBpbnQJZGlyZWN0X2lvOworc3RhdGljIGludAlmb3JjZTsKK3N0YXRpYyBpbnQJbm9hY3Rpb247CitzdGF0aWMgaW50CW51bV9iYWNrdXBzID0gMjsgLyogbnVtYmVyIG9mIGJhY2t1cCBiZydzIGZvciBzcGFyc2Vfc3VwZXIyICovCitzdGF0aWMgdWlkX3QJcm9vdF91aWQ7CitzdGF0aWMgZ2lkX3QJcm9vdF9naWQ7CitpbnQJam91cm5hbF9zaXplOworaW50CWpvdXJuYWxfZmxhZ3M7CitzdGF0aWMgaW50CWxhenlfaXRhYmxlX2luaXQ7CitzdGF0aWMgaW50CXBhY2tlZF9tZXRhX2Jsb2NrczsKK3N0YXRpYyBjaGFyCSpiYWRfYmxvY2tzX2ZpbGVuYW1lID0gTlVMTDsKK3N0YXRpYyBfX3UzMglmc19zdHJpZGU7CisvKiBJbml0aWFsaXplIHVzci9ncnAgcXVvdGFzIGJ5IGRlZmF1bHQgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQgcXVvdGF0eXBlX2JpdHMgPSAoUVVPVEFfVVNSX0JJVCB8IFFVT1RBX0dSUF9CSVQpOworc3RhdGljIF9fdTY0CW9mZnNldDsKK3N0YXRpYyBibGs2NF90IGpvdXJuYWxfbG9jYXRpb24gPSB+MExMOworc3RhdGljIGludAlwcm9jZWVkX2RlbGF5ID0gLTE7CitzdGF0aWMgYmxrNjRfdAlkZXZfc2l6ZTsKKworc3RhdGljIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIGZzX3BhcmFtOworc3RhdGljIGNoYXIgKmZzX3V1aWQgPSBOVUxMOworc3RhdGljIGNoYXIgKmNyZWF0b3Jfb3M7CitzdGF0aWMgY2hhciAqdm9sdW1lX2xhYmVsOworc3RhdGljIGNoYXIgKm1vdW50X2RpcjsKK2NoYXIgKmpvdXJuYWxfZGV2aWNlOworc3RhdGljIGludCBzeW5jX2tsdWRnZTsJLyogU2V0IHVzaW5nIHRoZSBNS0UyRlNfU1lOQyBlbnYuIG9wdGlvbiAqLworY2hhciAqKmZzX3R5cGVzOworY29uc3QgY2hhciAqc3JjX3Jvb3RfZGlyOyAgLyogQ29weSBmaWxlcyBmcm9tIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICovCitzdGF0aWMgY2hhciAqdW5kb19maWxlOworCitzdGF0aWMgcHJvZmlsZV90CXByb2ZpbGU7CisKK3N0YXRpYyBpbnQgc3lzX3BhZ2Vfc2l6ZSA9IDQwOTY7CisKK3N0YXRpYyBpbnQgZXJyb3JzX2JlaGF2aW9yID0gMDsKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgXygiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdICIKKwkiWy1DIGNsdXN0ZXItc2l6ZV1cblx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdICIKKwkiWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKwkiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gIgorCSJbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisJIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKwkiXHRbLWcgYmxvY2tzLXBlci1ncm91cF0gWy1MIHZvbHVtZS1sYWJlbF0gIgorCSJbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cblx0Wy1PIGZlYXR1cmVbLC4uLl1dICIKKwkiWy1yIGZzLXJldmlzaW9uXSBbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXVxuIgorCSJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXSIKKwkiWy16IHVuZG9fZmlsZV1cbiIKKwkiXHRbLWpucXZERlNWXSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cbiIpLAorCQlwcm9ncmFtX25hbWUpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyBpbnQgaW50X2xvZzIodW5zaWduZWQgbG9uZyBsb25nIGFyZykKK3sKKwlpbnQJbCA9IDA7CisKKwlhcmcgPj49IDE7CisJd2hpbGUgKGFyZykgeworCQlsKys7CisJCWFyZyA+Pj0gMTsKKwl9CisJcmV0dXJuIGw7Cit9CisKK2ludCBpbnRfbG9nMTAodW5zaWduZWQgbG9uZyBsb25nIGFyZykKK3sKKwlpbnQJbDsKKworCWZvciAobD0wOyBhcmcgOyBsKyspCisJCWFyZyA9IGFyZyAvIDEwOworCXJldHVybiBsOworfQorCisjaWZkZWYgX19saW51eF9fCitzdGF0aWMgaW50IHBhcnNlX3ZlcnNpb25fbnVtYmVyKGNvbnN0IGNoYXIgKnMpCit7CisJaW50CW1ham9yLCBtaW5vciwgcmV2OworCWNoYXIJKmVuZHB0cjsKKwljb25zdCBjaGFyICpjcCA9IHM7CisKKwlpZiAoIXMpCisJCXJldHVybiAwOworCW1ham9yID0gc3RydG9sKGNwLCAmZW5kcHRyLCAxMCk7CisJaWYgKGNwID09IGVuZHB0ciB8fCAqZW5kcHRyICE9ICcuJykKKwkJcmV0dXJuIDA7CisJY3AgPSBlbmRwdHIgKyAxOworCW1pbm9yID0gc3RydG9sKGNwLCAmZW5kcHRyLCAxMCk7CisJaWYgKGNwID09IGVuZHB0ciB8fCAqZW5kcHRyICE9ICcuJykKKwkJcmV0dXJuIDA7CisJY3AgPSBlbmRwdHIgKyAxOworCXJldiA9IHN0cnRvbChjcCwgJmVuZHB0ciwgMTApOworCWlmIChjcCA9PSBlbmRwdHIpCisJCXJldHVybiAwOworCXJldHVybiBLRVJORUxfVkVSU0lPTihtYWpvciwgbWlub3IsIHJldik7Cit9CisKK3N0YXRpYyBpbnQgaXNfYmVmb3JlX2xpbnV4X3Zlcih1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBtaW5vciwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgcmV2KQoreworCXN0cnVjdAkJdXRzbmFtZSB1dDsKKwlzdGF0aWMgaW50CWxpbnV4X3ZlcnNpb25fY29kZSA9IC0xOworCisJaWYgKHVuYW1lKCZ1dCkpIHsKKwkJcGVycm9yKCJ1bmFtZSIpOworCQlleGl0KDEpOworCX0KKwlpZiAobGludXhfdmVyc2lvbl9jb2RlIDwgMCkKKwkJbGludXhfdmVyc2lvbl9jb2RlID0gcGFyc2VfdmVyc2lvbl9udW1iZXIodXQucmVsZWFzZSk7CisJaWYgKGxpbnV4X3ZlcnNpb25fY29kZSA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBsaW51eF92ZXJzaW9uX2NvZGUgPCAoaW50KSBLRVJORUxfVkVSU0lPTihtYWpvciwgbWlub3IsIHJldik7Cit9CisjZWxzZQorc3RhdGljIGludCBpc19iZWZvcmVfbGludXhfdmVyKHVuc2lnbmVkIGludCBtYWpvciwgdW5zaWduZWQgaW50IG1pbm9yLAorCQkJICAgICAgIHVuc2lnbmVkIGludCByZXYpCit7CisJcmV0dXJuIDA7Cit9CisjZW5kaWYKKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiBmb3IgcmVhZF9iYl9maWxlIGFuZCB0ZXN0X2Rpc2sKKyAqLworc3RhdGljIHZvaWQgaW52YWxpZF9ibG9jayhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksIGJsa190IGJsaykKK3sKKwlmcHJpbnRmKHN0ZGVyciwgXygiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIpLCBibGspOworCXJldHVybjsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBiYWQgYmxvY2tzIGxpc3QgZnJvbSBhIGZpbGUKKyAqLworc3RhdGljIHZvaWQgcmVhZF9iYl9maWxlKGV4dDJfZmlsc3lzIGZzLCBiYWRibG9ja3NfbGlzdCAqYmJfbGlzdCwKKwkJCSBjb25zdCBjaGFyICpiYWRfYmxvY2tzX2ZpbGUpCit7CisJRklMRQkJKmY7CisJZXJyY29kZV90CXJldHZhbDsKKworCWYgPSBmb3BlbihiYWRfYmxvY2tzX2ZpbGUsICJyIik7CisJaWYgKCFmKSB7CisJCWNvbV9lcnIoInJlYWRfYmFkX2Jsb2Nrc19maWxlIiwgZXJybm8sCisJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIpLCBiYWRfYmxvY2tzX2ZpbGUpOworCQlleGl0KDEpOworCX0KKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iYl9GSUxFKGZzLCBmLCBiYl9saXN0LCBpbnZhbGlkX2Jsb2NrKTsKKwlmY2xvc2UgKGYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfYmJfRklMRSIsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIpKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKKy8qCisgKiBSdW5zIHRoZSBiYWRibG9ja3MgcHJvZ3JhbSB0byB0ZXN0IHRoZSBkaXNrCisgKi8KK3N0YXRpYyB2b2lkIHRlc3RfZGlzayhleHQyX2ZpbHN5cyBmcywgYmFkYmxvY2tzX2xpc3QgKmJiX2xpc3QpCit7CisJRklMRQkJKmY7CisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyCQlidWZbMTAyNF07CisKKwlzcHJpbnRmKGJ1ZiwgImJhZGJsb2NrcyAtYiAlZCAtWCAlcyVzJXMgJWxsdSIsIGZzLT5ibG9ja3NpemUsCisJCXF1aWV0ID8gIiIgOiAiLXMgIiwgKGNmbGFnID4gMSkgPyAiLXcgIiA6ICIiLAorCQlmcy0+ZGV2aWNlX25hbWUsIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKS0xKTsKKwlpZiAodmVyYm9zZSkKKwkJcHJpbnRmKF8oIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIpLCBidWYpOworCWYgPSBwb3BlbihidWYsICJyIik7CisJaWYgKCFmKSB7CisJCWNvbV9lcnIoInBvcGVuIiwgZXJybm8sCisJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciKSwgYnVmKTsKKwkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmJfRklMRShmcywgZiwgYmJfbGlzdCwgaW52YWxpZF9ibG9jayk7CisJcGNsb3NlKGYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX3JlYWRfYmJfRklMRSIsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIpKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGhhbmRsZV9iYWRfYmxvY2tzKGV4dDJfZmlsc3lzIGZzLCBiYWRibG9ja3NfbGlzdCBiYl9saXN0KQoreworCWRncnBfdAkJCWk7CisJYmxrX3QJCQlqOworCXVuc2lnbmVkIAkJbXVzdF9iZV9nb29kOworCWJsa190CQkJYmxrOworCWJhZGJsb2Nrc19pdGVyYXRlCWJiX2l0ZXI7CisJZXJyY29kZV90CQlyZXR2YWw7CisJYmxrX3QJCQlncm91cF9ibG9jazsKKwlpbnQJCQlncm91cDsKKwlpbnQJCQlncm91cF9iYWQ7CisKKwlpZiAoIWJiX2xpc3QpCisJCXJldHVybjsKKworCS8qCisJICogVGhlIHByaW1hcnkgc3VwZXJibG9jayBhbmQgZ3JvdXAgZGVzY3JpcHRvcnMgKm11c3QqIGJlCisJICogZ29vZDsgaWYgbm90LCBhYm9ydC4KKwkgKi8KKwltdXN0X2JlX2dvb2QgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayArIDEgKyBmcy0+ZGVzY19ibG9ja3M7CisJZm9yIChpID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7IGkgPD0gbXVzdF9iZV9nb29kOyBpKyspIHsKKwkJaWYgKGV4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0KGJiX2xpc3QsIGkpKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiQmxvY2sgJWQgaW4gcHJpbWFyeSAiCisJCQkJInN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIpLCBpKTsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgIgorCQkJCSJpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iKSwKKwkJCQlmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaywgbXVzdF9iZV9nb29kKTsKKwkJCWZwdXRzKF8oIkFib3J0aW5nLi4uLlxuIiksIHN0ZGVycik7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJLyoKKwkgKiBTZWUgaWYgYW55IG9mIHRoZSBiYWQgYmxvY2tzIGFyZSBzaG93aW5nIHVwIGluIHRoZSBiYWNrdXAKKwkgKiBzdXBlcmJsb2NrcyBhbmQvb3IgZ3JvdXAgZGVzY3JpcHRvcnMuICBJZiBzbywgaXNzdWUgYQorCSAqIHdhcm5pbmcgYW5kIGFkanVzdCB0aGUgYmxvY2sgY291bnRzIGFwcHJvcHJpYXRlbHkuCisJICovCisJZ3JvdXBfYmxvY2sgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayArCisJCWZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCisJZm9yIChpID0gMTsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJZ3JvdXBfYmFkID0gMDsKKwkJZm9yIChqPTA7IGogPCBmcy0+ZGVzY19ibG9ja3MrMTsgaisrKSB7CisJCQlpZiAoZXh0MmZzX2JhZGJsb2Nrc19saXN0X3Rlc3QoYmJfbGlzdCwKKwkJCQkJCSAgICAgICBncm91cF9ibG9jayArIGopKSB7CisJCQkJaWYgKCFncm91cF9iYWQpCisJCQkJCWZwcmludGYoc3RkZXJyLAorXygiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyIJYmFkIGJsb2Nrcy5cblxuIiksCisJCQkJCQlncm91cF9ibG9jayk7CisJCQkJZ3JvdXBfYmFkKys7CisJCQkJZ3JvdXAgPSBleHQyZnNfZ3JvdXBfb2ZfYmxrMihmcywgZ3JvdXBfYmxvY2sraik7CisJCQkJZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcywgZ3JvdXAsIGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudChmcywgZ3JvdXApICsgMSk7CisJCQkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKwkJCQlleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfYWRkKGZzLT5zdXBlciwgMSk7CisJCQl9CisJCX0KKwkJZ3JvdXBfYmxvY2sgKz0gZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJfQorCisJLyoKKwkgKiBNYXJrIGFsbCB0aGUgYmFkIGJsb2NrcyBhcyB1c2VkLi4uCisJICovCisJcmV0dmFsID0gZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4oYmJfbGlzdCwgJmJiX2l0ZXIpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX2JhZGJsb2Nrc19saXN0X2l0ZXJhdGVfYmVnaW4iLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIpKTsKKwkJZXhpdCgxKTsKKwl9CisJd2hpbGUgKGV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlKGJiX2l0ZXIsICZibGspKQorCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIEVYVDJGU19CMkMoZnMsIGJsaykpOworCWV4dDJmc19iYWRibG9ja3NfbGlzdF9pdGVyYXRlX2VuZChiYl9pdGVyKTsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfcmVzZXJ2ZWRfaW5vZGVzKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pbm9fdAlpbm87CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW16ZXJvKEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpLCAmaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiaW5vZGVfaW5pdCIsIHJldHZhbCwgXygid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKSk7CisJCWV4aXQoMSk7CisJfQorCisJZm9yIChpbm8gPSAxOyBpbm8gPCBFWFQyX0ZJUlNUX0lOTyhmcy0+c3VwZXIpOyBpbm8rKykKKwkJZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgaW5vZGUsCisJCQkJCUVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpKTsKKworCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworfQorCitzdGF0aWMgZXJyY29kZV90IHBhY2tlZF9hbGxvY2F0ZV90YWJsZXMoZXh0Ml9maWxzeXMgZnMpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlkZ3JwX3QJCWk7CisJYmxrNjRfdAkJZ29hbCA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgZ29hbCwgTlVMTCwgJmdvYWwpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgZ29hbCwgKzEpOworCQlleHQyZnNfYmxvY2tfYml0bWFwX2xvY19zZXQoZnMsIGksIGdvYWwpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlyZXR2YWwgPSBleHQyZnNfbmV3X2Jsb2NrMihmcywgZ29hbCwgTlVMTCwgJmdvYWwpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgZ29hbCwgKzEpOworCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGksIGdvYWwpOworCX0KKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlibGs2NF90IGVuZCA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIDE7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfZnJlZV9ibG9ja3MyKGZzLCBnb2FsLCBlbmQsCisJCQkJCQkgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsCisJCQkJCQkgZnMtPmJsb2NrX21hcCwgJmdvYWwpOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzX3JhbmdlKGZzLCBnb2FsLAorCQkJCQkgICAgICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsICsxKTsKKwkJZXh0MmZzX2lub2RlX3RhYmxlX2xvY19zZXQoZnMsIGksIGdvYWwpOworCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgaSk7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9pbm9kZV90YWJsZXMoZXh0Ml9maWxzeXMgZnMsIGludCBsYXp5X2ZsYWcsIGludCBpdGFibGVfemVyb2VkKQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrNjRfdAkJYmxrOworCWRncnBfdAkJaTsKKwlpbnQJCW51bTsKKwlzdHJ1Y3QgZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfc3RydWN0IHByb2dyZXNzOworCisJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfaW5pdChmcywgJnByb2dyZXNzLAorCQkJCSAgICAgXygiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIpLAorCQkJCSAgICAgZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCisJZm9yIChpID0gMDsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfdXBkYXRlKGZzLCAmcHJvZ3Jlc3MsIGkpOworCisJCWJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQludW0gPSBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCQlpZiAobGF6eV9mbGFnKQorCQkJbnVtID0gZXh0MmZzX2Rpdl9jZWlsKChmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAtCisJCQkJCSAgICAgICBleHQyZnNfYmdfaXRhYmxlX3VudXNlZChmcywgaSkpICoKKwkJCQkJICAgICAgRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlciksCisJCQkJCSAgICAgIEVYVDJfQkxPQ0tfU0laRShmcy0+c3VwZXIpKTsKKwkJaWYgKCFsYXp5X2ZsYWcgfHwgaXRhYmxlX3plcm9lZCkgeworCQkJLyogVGhlIGtlcm5lbCBkb2Vzbid0IG5lZWQgdG8gemVybyB0aGUgaXRhYmxlIGJsb2NrcyAqLworCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgaSwgRVhUMl9CR19JTk9ERV9aRVJPRUQpOworCQkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGkpOworCQl9CisJCWlmICghaXRhYmxlX3plcm9lZCkgeworCQkJcmV0dmFsID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgYmxrLCBudW0sICZibGssICZudW0pOworCQkJaWYgKHJldHZhbCkgeworCQkJCWZwcmludGYoc3RkZXJyLCBfKCJcbkNvdWxkIG5vdCB3cml0ZSAlZCAiCisJCQkJCSAgImJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIiksCisJCQkJCW51bSwgYmxrLCBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwkJaWYgKHN5bmNfa2x1ZGdlKSB7CisJCQlpZiAoc3luY19rbHVkZ2UgPT0gMSkKKwkJCQlzeW5jKCk7CisJCQllbHNlIGlmICgoaSAlIHN5bmNfa2x1ZGdlKSA9PSAwKQorCQkJCXN5bmMoKTsKKwkJfQorCX0KKwlleHQyZnNfbnVtZXJpY19wcm9ncmVzc19jbG9zZShmcywgJnByb2dyZXNzLAorCQkJCSAgICAgIF8oImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iKSk7CisKKwkvKiBSZXNlcnZlZCBpbm9kZXMgbXVzdCBhbHdheXMgaGF2ZSBjb3JyZWN0IGNoZWNrc3VtcyAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKQorCQl3cml0ZV9yZXNlcnZlZF9pbm9kZXMoZnMpOworfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfcm9vdF9kaXIoZXh0Ml9maWxzeXMgZnMpCit7CisJZXJyY29kZV90CQlyZXR2YWw7CisJc3RydWN0IGV4dDJfaW5vZGUJaW5vZGU7CisKKwlyZXR2YWwgPSBleHQyZnNfbWtkaXIoZnMsIEVYVDJfUk9PVF9JTk8sIEVYVDJfUk9PVF9JTk8sIDApOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX21rZGlyIiwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChyb290X3VpZCAhPSAwIHx8IHJvb3RfZ2lkICE9IDApIHsKKwkJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIEVYVDJfUk9PVF9JTk8sICZpbm9kZSk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoImV4dDJmc19yZWFkX2lub2RlIiwgcmV0dmFsLCAiJXMiLAorCQkJCV8oIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKworCQlpbm9kZS5pX3VpZCA9IHJvb3RfdWlkOworCQlleHQyZnNfc2V0X2lfdWlkX2hpZ2goaW5vZGUsIHJvb3RfdWlkID4+IDE2KTsKKwkJaW5vZGUuaV9naWQgPSByb290X2dpZDsKKwkJZXh0MmZzX3NldF9pX2dpZF9oaWdoKGlub2RlLCByb290X2dpZCA+PiAxNik7CisKKwkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX25ld19pbm9kZShmcywgRVhUMl9ST09UX0lOTywgJmlub2RlKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiZXh0MmZzX3dyaXRlX2lub2RlIiwgcmV0dmFsLCAiJXMiLAorCQkJCV8oIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfbG9zdF9hbmRfZm91bmQoZXh0Ml9maWxzeXMgZnMpCit7CisJdW5zaWduZWQgaW50CQlscGZfc2l6ZSA9IDA7CisJZXJyY29kZV90CQlyZXR2YWw7CisJZXh0Ml9pbm9fdAkJaW5vOworCWNvbnN0IGNoYXIJCSpuYW1lID0gImxvc3QrZm91bmQiOworCWludAkJCWk7CisKKwlmcy0+dW1hc2sgPSAwNzc7CisJcmV0dmFsID0gZXh0MmZzX21rZGlyKGZzLCBFWFQyX1JPT1RfSU5PLCAwLCBuYW1lKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImV4dDJmc19ta2RpciIsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIikpOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19sb29rdXAoZnMsIEVYVDJfUk9PVF9JTk8sIG5hbWUsIHN0cmxlbihuYW1lKSwgMCwgJmlubyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJleHQyX2xvb2t1cCIsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiKSk7CisJCWV4aXQoMSk7CisJfQorCisJZm9yIChpPTE7IGkgPCBFWFQyX05ESVJfQkxPQ0tTOyBpKyspIHsKKwkJLyogRW5zdXJlIHRoYXQgbG9zdCtmb3VuZCBpcyBhdCBsZWFzdCAyIGJsb2Nrcywgc28gd2UgYWx3YXlzCisJCSAqIHRlc3QgbGFyZ2UgZW1wdHkgYmxvY2tzIGZvciBiaWctYmxvY2sgZmlsZXN5c3RlbXMuICAqLworCQlpZiAoKGxwZl9zaXplICs9IGZzLT5ibG9ja3NpemUpID49IDE2KjEwMjQgJiYKKwkJICAgIGxwZl9zaXplID49IDIgKiBmcy0+YmxvY2tzaXplKQorCQkJYnJlYWs7CisJCXJldHZhbCA9IGV4dDJmc19leHBhbmRfZGlyKGZzLCBpbm8pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJleHQyZnNfZXhwYW5kX2RpciIsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSBleHBhbmRpbmcgL2xvc3QrZm91bmQiKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorfQorCitzdGF0aWMgdm9pZCBjcmVhdGVfYmFkX2Jsb2NrX2lub2RlKGV4dDJfZmlsc3lzIGZzLCBiYWRibG9ja3NfbGlzdCBiYl9saXN0KQoreworCWVycmNvZGVfdAlyZXR2YWw7CisKKwlleHQyZnNfbWFya19pbm9kZV9iaXRtYXAyKGZzLT5pbm9kZV9tYXAsIEVYVDJfQkFEX0lOTyk7CisJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihmcywgRVhUMl9CQURfSU5PLCArMSwgMCk7CisJcmV0dmFsID0gZXh0MmZzX3VwZGF0ZV9iYl9pbm9kZShmcywgYmJfbGlzdCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCJleHQyZnNfdXBkYXRlX2JiX2lub2RlIiwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiKSk7CisJCWV4aXQoMSk7CisJfQorCit9CisKK3N0YXRpYyB2b2lkIHJlc2VydmVfaW5vZGVzKGV4dDJfZmlsc3lzIGZzKQoreworCWV4dDJfaW5vX3QJaTsKKworCWZvciAoaSA9IEVYVDJfUk9PVF9JTk8gKyAxOyBpIDwgRVhUMl9GSVJTVF9JTk9ERShmcy0+c3VwZXIpOyBpKyspCisJCWV4dDJmc19pbm9kZV9hbGxvY19zdGF0czIoZnMsIGksICsxLCAwKTsKKwlleHQyZnNfbWFya19pYl9kaXJ0eShmcyk7Cit9CisKKyNkZWZpbmUgQlNEX0RJU0tNQUdJQyAgICgweDgyNTY0NTU3VUwpICAvKiBUaGUgZGlzayBtYWdpYyBudW1iZXIgKi8KKyNkZWZpbmUgQlNEX01BR0lDRElTSyAgICgweDU3NDU1NjgyVUwpICAvKiBUaGUgZGlzayBtYWdpYyBudW1iZXIgcmV2ZXJzZWQgKi8KKyNkZWZpbmUgQlNEX0xBQkVMX09GRlNFVCAgICAgICAgNjQKKworc3RhdGljIHZvaWQgemFwX3NlY3RvcihleHQyX2ZpbHN5cyBmcywgaW50IHNlY3QsIGludCBuc2VjdCkKK3sKKwljaGFyICpidWY7CisJaW50IHJldHZhbDsKKwl1bnNpZ25lZCBpbnQgKm1hZ2ljOworCisJYnVmID0gbWFsbG9jKDUxMipuc2VjdCk7CisJaWYgKCFidWYpIHsKKwkJcHJpbnRmKF8oIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iKSwKKwkJICAgICAgIHNlY3QsIHNlY3QgKyBuc2VjdCAtIDEpOworCQlleGl0KDEpOworCX0KKworCWlmIChzZWN0ID09IDApIHsKKwkJLyogQ2hlY2sgZm9yIGEgQlNEIGRpc2tsYWJlbCwgYW5kIGRvbid0IGVyYXNlIGl0IGlmIHNvICovCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChmcy0+aW8sIDAsIC01MTIsIGJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQlfKCJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIiksCisJCQkJZXJyb3JfbWVzc2FnZShyZXR2YWwpKTsKKwkJZWxzZSB7CisJCQltYWdpYyA9ICh1bnNpZ25lZCBpbnQgKikgKGJ1ZiArIEJTRF9MQUJFTF9PRkZTRVQpOworCQkJaWYgKCgqbWFnaWMgPT0gQlNEX0RJU0tNQUdJQykgfHwKKwkJCSAgICAoKm1hZ2ljID09IEJTRF9NQUdJQ0RJU0spKQorCQkJCXJldHVybjsKKwkJfQorCX0KKworCW1lbXNldChidWYsIDAsIDUxMipuc2VjdCk7CisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIDUxMik7CisJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIHNlY3QsIC01MTIqbnNlY3QsIGJ1Zik7CisJaW9fY2hhbm5lbF9zZXRfYmxrc2l6ZShmcy0+aW8sIGZzLT5ibG9ja3NpemUpOworCWZyZWUoYnVmKTsKKwlpZiAocmV0dmFsKQorCQlmcHJpbnRmKHN0ZGVyciwgXygiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIpLAorCQkJc2VjdCwgZXJyb3JfbWVzc2FnZShyZXR2YWwpKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2pvdXJuYWxfZGV2KGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgcHJvZ3Jlc3M7CisJZXJyY29kZV90CQlyZXR2YWw7CisJY2hhcgkJCSpidWY7CisJYmxrNjRfdAkJCWJsaywgZXJyX2JsazsKKwlpbnQJCQljLCBjb3VudCwgZXJyX2NvdW50OworCisJcmV0dmFsID0gZXh0MmZzX2NyZWF0ZV9qb3VybmFsX3N1cGVyYmxvY2soZnMsCisJCQkJICBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlciksIDAsICZidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiY3JlYXRlX2pvdXJuYWxfZGV2IiwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgaW5pdGlhbGl6aW5nIGpvdXJuYWwgc3VwZXJibG9jayIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoam91cm5hbF9mbGFncyAmIEVYVDJfTUtKT1VSTkFMX0xBWllJTklUKQorCQlnb3RvIHdyaXRlX3N1cGVyYmxvY2s7CisKKwlleHQyZnNfbnVtZXJpY19wcm9ncmVzc19pbml0KGZzLCAmcHJvZ3Jlc3MsCisJCQkJICAgICBfKCJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiKSwKKwkJCQkgICAgIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSk7CisJYmxrID0gMDsKKwljb3VudCA9IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKwl3aGlsZSAoY291bnQgPiAwKSB7CisJCWlmIChjb3VudCA+IDEwMjQpCisJCQljID0gMTAyNDsKKwkJZWxzZQorCQkJYyA9IGNvdW50OworCQlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBibGssIGMsICZlcnJfYmxrLCAmZXJyX2NvdW50KTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigiY3JlYXRlX2pvdXJuYWxfZGV2IiwgcmV0dmFsLAorCQkJCV8oIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgIgorCQkJCSAgIihibG9jayAlbGx1LCBjb3VudCAlZCkiKSwKKwkJCQllcnJfYmxrLCBlcnJfY291bnQpOworCQkJZXhpdCgxKTsKKwkJfQorCQlibGsgKz0gYzsKKwkJY291bnQgLT0gYzsKKwkJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfdXBkYXRlKGZzLCAmcHJvZ3Jlc3MsIGJsayk7CisJfQorCisJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfY2xvc2UoZnMsICZwcm9ncmVzcywgTlVMTCk7Cit3cml0ZV9zdXBlcmJsb2NrOgorCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLAorCQkJCQlmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaysxLAorCQkJCQkxLCBidWYpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiY3JlYXRlX2pvdXJuYWxfZGV2IiwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siKSk7CisJCWV4aXQoMSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBzaG93X3N0YXRzKGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzID0gZnMtPnN1cGVyOworCWNoYXIgCQkJYnVmWzgwXTsKKyAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgKm9zOworCWJsazY0X3QJCQlncm91cF9ibG9jazsKKwlkZ3JwX3QJCQlpOworCWludAkJCW5lZWQsIGNvbF9sZWZ0OworCisJaWYgKCF2ZXJib3NlKSB7CisJCXByaW50ZihfKCJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggJWxsdSAlZGsgYmxvY2tzIGFuZCAiCisJCQkgIiV1IGlub2Rlc1xuIiksCisJCSAgICAgICBleHQyZnNfYmxvY2tzX2NvdW50KHMpLCBmcy0+YmxvY2tzaXplID4+IDEwLAorCQkgICAgICAgcy0+c19pbm9kZXNfY291bnQpOworCQlnb3RvIHNraXBfZGV0YWlsczsKKwl9CisKKwlpZiAoZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pICE9IGV4dDJmc19ibG9ja3NfY291bnQocykpCisJCWZwcmludGYoc3RkZXJyLCBfKCJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG5cbiIpLAorCQkgICAgICAgZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pIC0gZXh0MmZzX2Jsb2Nrc19jb3VudChzKSk7CisKKwltZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisJc3RybmNweShidWYsIHMtPnNfdm9sdW1lX25hbWUsIHNpemVvZihzLT5zX3ZvbHVtZV9uYW1lKSk7CisJcHJpbnRmKF8oIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIpLCBidWYpOworCW9zID0gZTJwX29zMnN0cmluZyhmcy0+c3VwZXItPnNfY3JlYXRvcl9vcyk7CisJaWYgKG9zKQorCQlwcmludGYoXygiT1MgdHlwZTogJXNcbiIpLCBvcyk7CisJZnJlZShvcyk7CisJcHJpbnRmKF8oIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIpLCBmcy0+YmxvY2tzaXplLAorCQlzLT5zX2xvZ19ibG9ja19zaXplKTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKGZzLT5zdXBlcikpCisJCXByaW50ZihfKCJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIpLAorCQkgICAgICAgZnMtPmJsb2Nrc2l6ZSA8PCBmcy0+Y2x1c3Rlcl9yYXRpb19iaXRzLAorCQkgICAgICAgcy0+c19sb2dfY2x1c3Rlcl9zaXplKTsKKwllbHNlCisJCXByaW50ZihfKCJGcmFnbWVudCBzaXplPSV1IChsb2c9JXUpXG4iKSwgRVhUMl9DTFVTVEVSX1NJWkUocyksCisJCSAgICAgICBzLT5zX2xvZ19jbHVzdGVyX3NpemUpOworCXByaW50ZihfKCJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iKSwKKwkgICAgICAgcy0+c19yYWlkX3N0cmlkZSwgcy0+c19yYWlkX3N0cmlwZV93aWR0aCk7CisJcHJpbnRmKF8oIiV1IGlub2RlcywgJWxsdSBibG9ja3NcbiIpLCBzLT5zX2lub2Rlc19jb3VudCwKKwkgICAgICAgZXh0MmZzX2Jsb2Nrc19jb3VudChzKSk7CisJcHJpbnRmKF8oIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIpLAorCQlleHQyZnNfcl9ibG9ja3NfY291bnQocyksCisJICAgICAgIDEwMC4wICogIGV4dDJmc19yX2Jsb2Nrc19jb3VudChzKSAvIGV4dDJmc19ibG9ja3NfY291bnQocykpOworCXByaW50ZihfKCJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iKSwgcy0+c19maXJzdF9kYXRhX2Jsb2NrKTsKKwlpZiAocm9vdF91aWQgIT0gMCB8fCByb290X2dpZCAhPSAwKQorCQlwcmludGYoXygiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIpLCByb290X3VpZCwgcm9vdF9naWQpOworCWlmIChzLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MpCisJCXByaW50ZihfKCJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIiksCisJCSAgICAgICAocy0+c19yZXNlcnZlZF9nZHRfYmxvY2tzICsgZnMtPmRlc2NfYmxvY2tzKSAqCisJCSAgICAgICBFWFQyX0RFU0NfUEVSX0JMT0NLKHMpICogcy0+c19ibG9ja3NfcGVyX2dyb3VwKTsKKwlpZiAoZnMtPmdyb3VwX2Rlc2NfY291bnQgPiAxKQorCQlwcmludGYoXygiJXUgYmxvY2sgZ3JvdXBzXG4iKSwgZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCWVsc2UKKwkJcHJpbnRmKF8oIiV1IGJsb2NrIGdyb3VwXG4iKSwgZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSkKKwkJcHJpbnRmKF8oIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIiksCisJCSAgICAgICBzLT5zX2Jsb2Nrc19wZXJfZ3JvdXAsIHMtPnNfY2x1c3RlcnNfcGVyX2dyb3VwKTsKKwllbHNlCisJCXByaW50ZihfKCIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iKSwKKwkJICAgICAgIHMtPnNfYmxvY2tzX3Blcl9ncm91cCwgcy0+c19jbHVzdGVyc19wZXJfZ3JvdXApOworCXByaW50ZihfKCIldSBpbm9kZXMgcGVyIGdyb3VwXG4iKSwgcy0+c19pbm9kZXNfcGVyX2dyb3VwKTsKKworc2tpcF9kZXRhaWxzOgorCWlmIChmcy0+Z3JvdXBfZGVzY19jb3VudCA9PSAxKSB7CisJCXByaW50ZigiXG4iKTsKKwkJcmV0dXJuOworCX0KKworCWlmICghZTJwX2lzX251bGxfdXVpZChzLT5zX3V1aWQpKQorCQlwcmludGYoXygiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIiksIGUycF91dWlkMnN0cihzLT5zX3V1aWQpKTsKKwlwcmludGYoIiVzIiwgXygiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIpKTsKKwlncm91cF9ibG9jayA9IHMtPnNfZmlyc3RfZGF0YV9ibG9jazsKKwljb2xfbGVmdCA9IDA7CisJZm9yIChpID0gMTsgaSA8IGZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJZ3JvdXBfYmxvY2sgKz0gcy0+c19ibG9ja3NfcGVyX2dyb3VwOworCQlpZiAoIWV4dDJmc19iZ19oYXNfc3VwZXIoZnMsIGkpKQorCQkJY29udGludWU7CisJCWlmIChpICE9IDEpCisJCQlwcmludGYoIiwgIik7CisJCW5lZWQgPSBpbnRfbG9nMTAoZ3JvdXBfYmxvY2spICsgMjsKKwkJaWYgKG5lZWQgPiBjb2xfbGVmdCkgeworCQkJcHJpbnRmKCJcblx0Iik7CisJCQljb2xfbGVmdCA9IDcyOworCQl9CisJCWNvbF9sZWZ0IC09IG5lZWQ7CisJCXByaW50ZigiJWxsdSIsIGdyb3VwX2Jsb2NrKTsKKwl9CisJcHJpbnRmKCJcblxuIik7Cit9CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgbWFraW5nIGEgZmlsZSBzeXN0ZW0gZm9yIHRoZSBIdXJkLCBlbHNlIDAKKyAqLworc3RhdGljIGludCBmb3JfaHVyZChjb25zdCBjaGFyICpvcykKK3sKKwlpZiAoIW9zKSB7CisjaWZkZWYgX19HTlVfXworCQlyZXR1cm4gMTsKKyNlbHNlCisJCXJldHVybiAwOworI2VuZGlmCisJfQorCWlmIChpc2RpZ2l0KCpvcykpCisJCXJldHVybiAoYXRvaShvcykgPT0gRVhUMl9PU19IVVJEKTsKKwlyZXR1cm4gKHN0cmNhc2VjbXAob3MsICJHTlUiKSA9PSAwIHx8IHN0cmNhc2VjbXAob3MsICJodXJkIikgPT0gMCk7Cit9CisKKy8qCisgKiBTZXQgdGhlIFNfQ1JFQVRPUl9PUyBmaWVsZC4gIFJldHVybiB0cnVlIGlmIE9TIGlzIGtub3duLAorICogb3RoZXJ3aXNlLCAwLgorICovCitzdGF0aWMgaW50IHNldF9vcyhzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IsIGNoYXIgKm9zKQoreworCWlmIChpc2RpZ2l0ICgqb3MpKQorCQlzYi0+c19jcmVhdG9yX29zID0gYXRvaSAob3MpOworCWVsc2UgaWYgKHN0cmNhc2VjbXAob3MsICJsaW51eCIpID09IDApCisJCXNiLT5zX2NyZWF0b3Jfb3MgPSBFWFQyX09TX0xJTlVYOworCWVsc2UgaWYgKHN0cmNhc2VjbXAob3MsICJHTlUiKSA9PSAwIHx8IHN0cmNhc2VjbXAob3MsICJodXJkIikgPT0gMCkKKwkJc2ItPnNfY3JlYXRvcl9vcyA9IEVYVDJfT1NfSFVSRDsKKwllbHNlIGlmIChzdHJjYXNlY21wKG9zLCAiZnJlZWJzZCIpID09IDApCisJCXNiLT5zX2NyZWF0b3Jfb3MgPSBFWFQyX09TX0ZSRUVCU0Q7CisJZWxzZSBpZiAoc3RyY2FzZWNtcChvcywgImxpdGVzIikgPT0gMCkKKwkJc2ItPnNfY3JlYXRvcl9vcyA9IEVYVDJfT1NfTElURVM7CisJZWxzZQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gMTsKK30KKworI2RlZmluZSBQQVRIX1NFVCAiUEFUSD0vc2JpbiIKKworc3RhdGljIHZvaWQgcGFyc2VfZXh0ZW5kZWRfb3B0cyhzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqcGFyYW0sCisJCQkJY29uc3QgY2hhciAqb3B0cykKK3sKKwljaGFyCSpidWYsICp0b2tlbiwgKm5leHQsICpwLCAqYXJnLCAqYmFkb3B0ID0gMDsKKwlpbnQJbGVuOworCWludAlyX3VzYWdlID0gMDsKKwlpbnQJcmV0OworCisJbGVuID0gc3RybGVuKG9wdHMpOworCWJ1ZiA9IG1hbGxvYyhsZW4rMSk7CisJaWYgKCFidWYpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQlfKCJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisJc3RyY3B5KGJ1Ziwgb3B0cyk7CisJZm9yICh0b2tlbiA9IGJ1ZjsgdG9rZW4gJiYgKnRva2VuOyB0b2tlbiA9IG5leHQpIHsKKwkJcCA9IHN0cmNocih0b2tlbiwgJywnKTsKKwkJbmV4dCA9IDA7CisJCWlmIChwKSB7CisJCQkqcCA9IDA7CisJCQluZXh0ID0gcCsxOworCQl9CisJCWFyZyA9IHN0cmNocih0b2tlbiwgJz0nKTsKKwkJaWYgKGFyZykgeworCQkJKmFyZyA9IDA7CisJCQlhcmcrKzsKKwkJfQorCQlpZiAoc3RyY21wKHRva2VuLCAiZGVzYy1zaXplIikgPT0gMCB8fAorCQkgICAgc3RyY21wKHRva2VuLCAiZGVzY19zaXplIikgPT0gMCkgeworCQkJaW50IGRlc2Nfc2l6ZTsKKworCQkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoJmZzX3BhcmFtKSkgeworCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQlfKCIlcyByZXF1aXJlcyAnLU8gNjRiaXQnXG4iKSwgdG9rZW4pOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChwYXJhbS0+c19yZXNlcnZlZF9nZHRfYmxvY2tzICE9IDApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIiksCisJCQkJCXRva2VuLCBwYXJhbS0+c19yZXNlcnZlZF9nZHRfYmxvY2tzKTsKKwkJCQlyX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWRlc2Nfc2l6ZSA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQlpZiAoKnAgfHwgKGRlc2Nfc2l6ZSAmIChkZXNjX3NpemUgLSAxKSkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIpLCBhcmcpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXBhcmFtLT5zX2Rlc2Nfc2l6ZSA9IGRlc2Nfc2l6ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJvZmZzZXQiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCW9mZnNldCA9IHN0cnRvdWxsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsIF8oIkludmFsaWQgb2Zmc2V0OiAlc1xuIiksCisJCQkJCWFyZyk7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgIm1tcF91cGRhdGVfaW50ZXJ2YWwiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXBhcmFtLT5zX21tcF91cGRhdGVfaW50ZXJ2YWwgPSBzdHJ0b3VsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIpLAorCQkJCQlhcmcpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJudW1fYmFja3VwX3NiIikgPT0gMCkgeworCQkJaWYgKCFhcmcpIHsKKwkJCQlyX3VzYWdlKys7CisJCQkJYmFkb3B0ID0gdG9rZW47CisJCQkJY29udGludWU7CisJCQl9CisJCQludW1fYmFja3VwcyA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQlpZiAoKnAgfHwgbnVtX2JhY2t1cHMgPiAyKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgIyBvZiBiYWNrdXAgIgorCQkJCQkgICJzdXBlcmJsb2NrczogJXNcbiIpLAorCQkJCQlhcmcpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJwYWNrZWRfbWV0YV9ibG9ja3MiKSA9PSAwKSB7CisJCQlpZiAoYXJnKQorCQkJCXBhY2tlZF9tZXRhX2Jsb2NrcyA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQllbHNlCisJCQkJcGFja2VkX21ldGFfYmxvY2tzID0gMTsKKwkJCWlmIChwYWNrZWRfbWV0YV9ibG9ja3MpCisJCQkJam91cm5hbF9sb2NhdGlvbiA9IDA7CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAic3RyaWRlIikgPT0gMCkgeworCQkJaWYgKCFhcmcpIHsKKwkJCQlyX3VzYWdlKys7CisJCQkJYmFkb3B0ID0gdG9rZW47CisJCQkJY29udGludWU7CisJCQl9CisJCQlwYXJhbS0+c19yYWlkX3N0cmlkZSA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQlpZiAoKnApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIiksCisJCQkJCWFyZyk7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgInN0cmlwZS13aWR0aCIpID09IDAgfHwKKwkJCSAgIHN0cmNtcCh0b2tlbiwgInN0cmlwZV93aWR0aCIpID09IDApIHsKKwkJCWlmICghYXJnKSB7CisJCQkJcl91c2FnZSsrOworCQkJCWJhZG9wdCA9IHRva2VuOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJcGFyYW0tPnNfcmFpZF9zdHJpcGVfd2lkdGggPSBzdHJ0b3VsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIpLAorCQkJCQlhcmcpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAicmVzaXplIikpIHsKKwkJCWJsazY0X3QgcmVzaXplOworCQkJdW5zaWduZWQgbG9uZyBicGcsIHJzdl9ncm91cHM7CisJCQl1bnNpZ25lZCBsb25nIGdyb3VwX2Rlc2NfY291bnQsIGRlc2NfYmxvY2tzOworCQkJdW5zaWduZWQgaW50IGdkcGIsIGJsb2Nrc2l6ZTsKKwkJCWludCByc3ZfZ2RiOworCisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQliYWRvcHQgPSB0b2tlbjsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJcmVzaXplID0gcGFyc2VfbnVtX2Jsb2NrczIoYXJnLAorCQkJCQkJICAgcGFyYW0tPnNfbG9nX2Jsb2NrX3NpemUpOworCisJCQlpZiAocmVzaXplID09IDApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIiksCisJCQkJCWFyZyk7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKHJlc2l6ZSA8PSBleHQyZnNfYmxvY2tzX2NvdW50KHBhcmFtKSkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJCQlfKCJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyICIKKwkJCQkJICAidGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIikpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJYmxvY2tzaXplID0gRVhUMl9CTE9DS19TSVpFKHBhcmFtKTsKKwkJCWJwZyA9IHBhcmFtLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCQlpZiAoIWJwZykKKwkJCQlicGcgPSBibG9ja3NpemUgKiA4OworCQkJZ2RwYiA9IEVYVDJfREVTQ19QRVJfQkxPQ0socGFyYW0pOworCQkJZ3JvdXBfZGVzY19jb3VudCA9IChfX3UzMikgZXh0MmZzX2RpdjY0X2NlaWwoCisJCQkJZXh0MmZzX2Jsb2Nrc19jb3VudChwYXJhbSksIGJwZyk7CisJCQlkZXNjX2Jsb2NrcyA9IChncm91cF9kZXNjX2NvdW50ICsKKwkJCQkgICAgICAgZ2RwYiAtIDEpIC8gZ2RwYjsKKwkJCXJzdl9ncm91cHMgPSBleHQyZnNfZGl2NjRfY2VpbChyZXNpemUsIGJwZyk7CisJCQlyc3ZfZ2RiID0gZXh0MmZzX2Rpdl9jZWlsKHJzdl9ncm91cHMsIGdkcGIpIC0KKwkJCQlkZXNjX2Jsb2NrczsKKwkJCWlmIChyc3ZfZ2RiID4gKGludCkgRVhUMl9BRERSX1BFUl9CTE9DSyhwYXJhbSkpCisJCQkJcnN2X2dkYiA9IEVYVDJfQUREUl9QRVJfQkxPQ0socGFyYW0pOworCisJCQlpZiAocnN2X2dkYiA+IDApIHsKKwkJCQlpZiAocGFyYW0tPnNfcmV2X2xldmVsID09IEVYVDJfR09PRF9PTERfUkVWKSB7CisJCQkJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCV8oIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIpKTsKKwkJCQkJZnJlZShidWYpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQlleHQyZnNfc2V0X2ZlYXR1cmVfcmVzaXplX2lub2RlKHBhcmFtKTsKKworCQkJCXBhcmFtLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3MgPSByc3ZfZ2RiOworCQkJfQorCQl9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJ0ZXN0X2ZzIikpIHsKKwkJCXBhcmFtLT5zX2ZsYWdzIHw9IEVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTOworCQl9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJsYXp5X2l0YWJsZV9pbml0IikpIHsKKwkJCWlmIChhcmcpCisJCQkJbGF6eV9pdGFibGVfaW5pdCA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQllbHNlCisJCQkJbGF6eV9pdGFibGVfaW5pdCA9IDE7CisJCX0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgImxhenlfam91cm5hbF9pbml0IikpIHsKKwkJCWlmIChhcmcpCisJCQkJam91cm5hbF9mbGFncyB8PSBzdHJ0b3VsKGFyZywgJnAsIDApID8KKwkJCQkJCUVYVDJfTUtKT1VSTkFMX0xBWllJTklUIDogMDsKKwkJCWVsc2UKKwkJCQlqb3VybmFsX2ZsYWdzIHw9IEVYVDJfTUtKT1VSTkFMX0xBWllJTklUOworCQl9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJyb290X293bmVyIikpIHsKKwkJCWlmIChhcmcpIHsKKwkJCQlyb290X3VpZCA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQkJaWYgKCpwICE9ICc6JykgeworCQkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJCV8oIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIiksCisJCQkJCQlhcmcpOworCQkJCQlyX3VzYWdlKys7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCQlwKys7CisJCQkJcm9vdF9naWQgPSBzdHJ0b3VsKHAsICZwLCAwKTsKKwkJCQlpZiAoKnApIHsKKwkJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCQlfKCJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIpLAorCQkJCQkJYXJnKTsKKwkJCQkJcl91c2FnZSsrOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXJvb3RfdWlkID0gZ2V0dWlkKCk7CisJCQkJcm9vdF9naWQgPSBnZXRnaWQoKTsKKwkJCX0KKwkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAiZGlzY2FyZCIpKSB7CisJCQlkaXNjYXJkID0gMTsKKwkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAibm9kaXNjYXJkIikpIHsKKwkJCWRpc2NhcmQgPSAwOworCQl9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJxdW90YXR5cGUiKSkgeworCQkJY2hhciAqZXJydG9rID0gTlVMTDsKKworCQkJaWYgKCFhcmcpIHsKKwkJCQlyX3VzYWdlKys7CisJCQkJYmFkb3B0ID0gdG9rZW47CisJCQkJY29udGludWU7CisJCQl9CisJCQlxdW90YXR5cGVfYml0cyA9IDA7CisJCQlyZXQgPSBwYXJzZV9xdW90YV90eXBlcyhhcmcsICZxdW90YXR5cGVfYml0cywgJmVycnRvayk7CisJCQlpZiAocmV0KSB7CisJCQkJaWYgKGVycnRvaykgeworCQkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkiRmFpbGVkIHRvIHBhcnNlIHF1b3RhIHR5cGUgYXQgJXMiLCBlcnJ0b2spOworCQkJCQlmcmVlKGVycnRvayk7CisJCQkJfSBlbHNlCisJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXQsCisJCQkJCQkid2hpbGUgcGFyc2luZyBxdW90YSB0eXBlIik7CisJCQkJcl91c2FnZSsrOworCQkJCWJhZG9wdCA9IHRva2VuOworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9IGVsc2UgeworCQkJcl91c2FnZSsrOworCQkJYmFkb3B0ID0gdG9rZW47CisJCX0KKwl9CisJaWYgKHJfdXNhZ2UpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIlxuQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG5cbiIKKwkJCSJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCAiCisJCQkiYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisJCQkiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuXG4iCisJCQkiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisJCQkiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKwkJCSJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorCQkJIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorCQkJIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorCQkJIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKwkJCSJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisJCQkiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisJCQkiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorCQkJIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisJCQkiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisJCQkiXHR0ZXN0X2ZzXG4iCisJCQkiXHRkaXNjYXJkXG4iCisJCQkiXHRub2Rpc2NhcmRcbiIKKwkJCSJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuXG4iKSwKKwkJCWJhZG9wdCA/IGJhZG9wdCA6ICIiKTsKKwkJZnJlZShidWYpOworCQlleGl0KDEpOworCX0KKwlpZiAocGFyYW0tPnNfcmFpZF9zdHJpZGUgJiYKKwkgICAgKHBhcmFtLT5zX3JhaWRfc3RyaXBlX3dpZHRoICUgcGFyYW0tPnNfcmFpZF9zdHJpZGUpICE9IDApCisJCWZwcmludGYoc3RkZXJyLCBfKCJcbldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuICIKKwkJCQkgICJtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG5cbiIpLAorCQkJcGFyYW0tPnNfcmFpZF9zdHJpcGVfd2lkdGgsIHBhcmFtLT5zX3JhaWRfc3RyaWRlKTsKKworCWZyZWUoYnVmKTsKK30KKworc3RhdGljIF9fdTMyIG9rX2ZlYXR1cmVzWzNdID0geworCS8qIENvbXBhdCAqLworCUVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwgfAorCQlFWFQyX0ZFQVRVUkVfQ09NUEFUX1JFU0laRV9JTk9ERSB8CisJCUVYVDJfRkVBVFVSRV9DT01QQVRfRElSX0lOREVYIHwKKwkJRVhUMl9GRUFUVVJFX0NPTVBBVF9FWFRfQVRUUiB8CisJCUVYVDRfRkVBVFVSRV9DT01QQVRfU1BBUlNFX1NVUEVSMiwKKwkvKiBJbmNvbXBhdCAqLworCUVYVDJfRkVBVFVSRV9JTkNPTVBBVF9GSUxFVFlQRXwKKwkJRVhUM19GRUFUVVJFX0lOQ09NUEFUX0VYVEVOVFN8CisJCUVYVDNfRkVBVFVSRV9JTkNPTVBBVF9KT1VSTkFMX0RFVnwKKwkJRVhUMl9GRUFUVVJFX0lOQ09NUEFUX01FVEFfQkd8CisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF9GTEVYX0JHfAorCQlFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUXzY0QklUfAorCQlFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfSU5MSU5FX0RBVEF8CisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF9FTkNSWVBUIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0NTVU1fU0VFRCwKKwkvKiBSL08gY29tcGF0ICovCisJRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0hVR0VfRklMRXwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9ESVJfTkxJTkt8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfRVhUUkFfSVNJWkV8CisJCUVYVDJfRkVBVFVSRV9ST19DT01QQVRfU1BBUlNFX1NVUEVSfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0JJR0FMTE9DfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX1FVT1RBfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX01FVEFEQVRBX0NTVU18CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVAorfTsKKworCitzdGF0aWMgdm9pZCBzeW50YXhfZXJyX3JlcG9ydChjb25zdCBjaGFyICpmaWxlbmFtZSwgbG9uZyBlcnIsIGludCBsaW5lX251bSkKK3sKKwlmcHJpbnRmKHN0ZGVyciwKKwkJXygiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuXHQlc1xuIiksCisJCWZpbGVuYW1lLCBsaW5lX251bSwgZXJyb3JfbWVzc2FnZShlcnIpKTsKKwlleGl0KDEpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqY29uZmlnX2ZuW10gPSB7IFJPT1RfU1lTQ09ORkRJUiAiL21rZTJmcy5jb25mIiwgMCB9OworCitzdGF0aWMgdm9pZCBlZGl0X2ZlYXR1cmUoY29uc3QgY2hhciAqc3RyLCBfX3UzMiAqY29tcGF0X2FycmF5KQoreworCWlmICghc3RyKQorCQlyZXR1cm47CisKKwlpZiAoZTJwX2VkaXRfZmVhdHVyZShzdHIsIGNvbXBhdF9hcnJheSwgb2tfZmVhdHVyZXMpKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIpLAorCQkJc3RyKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGVkaXRfbW50b3B0cyhjb25zdCBjaGFyICpzdHIsIF9fdTMyICptbnRvcHRzKQoreworCWlmICghc3RyKQorCQlyZXR1cm47CisKKwlpZiAoZTJwX2VkaXRfbW50b3B0cyhzdHIsIG1udG9wdHMsIH4wKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiSW52YWxpZCBtb3VudCBvcHRpb24gc2V0OiAlc1xuIiksCisJCQlzdHIpOworCQlleGl0KDEpOworCX0KK30KKworc3RydWN0IHN0cl9saXN0IHsKKwljaGFyICoqbGlzdDsKKwlpbnQgbnVtOworCWludCBtYXg7Cit9OworCitzdGF0aWMgZXJyY29kZV90IGluaXRfbGlzdChzdHJ1Y3Qgc3RyX2xpc3QgKnNsKQoreworCXNsLT5udW0gPSAwOworCXNsLT5tYXggPSAwOworCXNsLT5saXN0ID0gbWFsbG9jKChzbC0+bWF4KzEpICogc2l6ZW9mKGNoYXIgKikpOworCWlmICghc2wtPmxpc3QpCisJCXJldHVybiBFTk9NRU07CisJc2wtPmxpc3RbMF0gPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHB1c2hfc3RyaW5nKHN0cnVjdCBzdHJfbGlzdCAqc2wsIGNvbnN0IGNoYXIgKnN0cikKK3sKKwljaGFyICoqbmV3X2xpc3Q7CisKKwlpZiAoc2wtPm51bSA+PSBzbC0+bWF4KSB7CisJCXNsLT5tYXggKz0gMjsKKwkJbmV3X2xpc3QgPSByZWFsbG9jKHNsLT5saXN0LCAoc2wtPm1heCsxKSAqIHNpemVvZihjaGFyICopKTsKKwkJaWYgKCFuZXdfbGlzdCkKKwkJCXJldHVybiBFTk9NRU07CisJCXNsLT5saXN0ID0gbmV3X2xpc3Q7CisJfQorCXNsLT5saXN0W3NsLT5udW1dID0gbWFsbG9jKHN0cmxlbihzdHIpKzEpOworCWlmIChzbC0+bGlzdFtzbC0+bnVtXSA9PSAwKQorCQlyZXR1cm4gRU5PTUVNOworCXN0cmNweShzbC0+bGlzdFtzbC0+bnVtXSwgc3RyKTsKKwlzbC0+bnVtKys7CisJc2wtPmxpc3Rbc2wtPm51bV0gPSAwOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwcmludF9zdHJfbGlzdChjaGFyICoqbGlzdCkKK3sKKwljaGFyICoqY3BwOworCisJZm9yIChjcHAgPSBsaXN0OyAqY3BwOyBjcHArKykgeworCQlwcmludGYoIiclcyciLCAqY3BwKTsKKwkJaWYgKGNwcFsxXSkKKwkJCWZwdXRzKCIsICIsIHN0ZG91dCk7CisJfQorCWZwdXRjKCdcbicsIHN0ZG91dCk7Cit9CisKKy8qCisgKiBSZXR1cm4gVFJVRSBpZiB0aGUgcHJvZmlsZSBoYXMgdGhlIGdpdmVuIHN1YnNlY3Rpb24KKyAqLworc3RhdGljIGludCBwcm9maWxlX2hhc19zdWJzZWN0aW9uKHByb2ZpbGVfdCBwcm9mLCBjb25zdCBjaGFyICpzZWN0aW9uLAorCQkJCSAgY29uc3QgY2hhciAqc3Vic2VjdGlvbikKK3sKKwl2b2lkCQkJKnN0YXRlOworCWNvbnN0IGNoYXIJCSpuYW1lc1s0XTsKKwljaGFyCQkJKm5hbWU7CisJaW50CQkJcmV0ID0gMDsKKworCW5hbWVzWzBdID0gc2VjdGlvbjsKKwluYW1lc1sxXSA9IHN1YnNlY3Rpb247CisJbmFtZXNbMl0gPSAwOworCisJaWYgKHByb2ZpbGVfaXRlcmF0b3JfY3JlYXRlKHByb2YsIG5hbWVzLAorCQkJCSAgICBQUk9GSUxFX0lURVJfTElTVF9TRUNUSU9OIHwKKwkJCQkgICAgUFJPRklMRV9JVEVSX1JFTEFUSU9OU19PTkxZLCAmc3RhdGUpKQorCQlyZXR1cm4gMDsKKworCWlmICgocHJvZmlsZV9pdGVyYXRvcigmc3RhdGUsICZuYW1lLCAwKSA9PSAwKSAmJiBuYW1lKSB7CisJCWZyZWUobmFtZSk7CisJCXJldCA9IDE7CisJfQorCisJcHJvZmlsZV9pdGVyYXRvcl9mcmVlKCZzdGF0ZSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGNoYXIgKipwYXJzZV9mc190eXBlKGNvbnN0IGNoYXIgKmZzX3R5cGUsCisJCQkgICAgY29uc3QgY2hhciAqdXNhZ2VfdHlwZXMsCisJCQkgICAgc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiLAorCQkJICAgIGJsazY0X3QgZnNfYmxvY2tzX2NvdW50LAorCQkJICAgIGNoYXIgKnByb2duYW1lKQoreworCWNvbnN0IGNoYXIJKmV4dF90eXBlID0gMDsKKwljaGFyCQkqcGFyc2Vfc3RyOworCWNoYXIJCSpwcm9maWxlX3R5cGUgPSAwOworCWNoYXIJCSpjcCwgKnQ7CisJY29uc3QgY2hhcgkqc2l6ZV90eXBlOworCXN0cnVjdCBzdHJfbGlzdAlsaXN0OworCXVuc2lnbmVkIGxvbmcgbG9uZyBtZWc7CisJaW50CQlpc19odXJkID0gZm9yX2h1cmQoY3JlYXRvcl9vcyk7CisKKwlpZiAoaW5pdF9saXN0KCZsaXN0KSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZnNfdHlwZSkKKwkJZXh0X3R5cGUgPSBmc190eXBlOworCWVsc2UgaWYgKGlzX2h1cmQpCisJCWV4dF90eXBlID0gImV4dDIiOworCWVsc2UgaWYgKCFzdHJjbXAocHJvZ3JhbV9uYW1lLCAibWtlM2ZzIikpCisJCWV4dF90eXBlID0gImV4dDMiOworCWVsc2UgaWYgKCFzdHJjbXAocHJvZ3JhbV9uYW1lLCAibWtlNGZzIikpCisJCWV4dF90eXBlID0gImV4dDQiOworCWVsc2UgaWYgKHByb2duYW1lKSB7CisJCWV4dF90eXBlID0gc3RycmNocihwcm9nbmFtZSwgJy8nKTsKKwkJaWYgKGV4dF90eXBlKQorCQkJZXh0X3R5cGUrKzsKKwkJZWxzZQorCQkJZXh0X3R5cGUgPSBwcm9nbmFtZTsKKworCQlpZiAoIXN0cm5jbXAoZXh0X3R5cGUsICJta2ZzLiIsIDUpKSB7CisJCQlleHRfdHlwZSArPSA1OworCQkJaWYgKGV4dF90eXBlWzBdID09IDApCisJCQkJZXh0X3R5cGUgPSAwOworCQl9IGVsc2UKKwkJCWV4dF90eXBlID0gMDsKKwl9CisKKwlpZiAoIWV4dF90eXBlKSB7CisJCXByb2ZpbGVfZ2V0X3N0cmluZyhwcm9maWxlLCAiZGVmYXVsdHMiLCAiZnNfdHlwZSIsIDAsCisJCQkJICAgImV4dDIiLCAmcHJvZmlsZV90eXBlKTsKKwkJZXh0X3R5cGUgPSBwcm9maWxlX3R5cGU7CisJCWlmICghc3RyY21wKGV4dF90eXBlLCAiZXh0MiIpICYmIChqb3VybmFsX3NpemUgIT0gMCkpCisJCQlleHRfdHlwZSA9ICJleHQzIjsKKwl9CisKKworCWlmICghcHJvZmlsZV9oYXNfc3Vic2VjdGlvbihwcm9maWxlLCAiZnNfdHlwZXMiLCBleHRfdHlwZSkgJiYKKwkgICAgc3RyY21wKGV4dF90eXBlLCAiZXh0MiIpKSB7CisJCXByaW50ZihfKCJcbllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICIKKwkJCSAiJXMgZmlsZXN5c3RlbSB0eXBlLlxuIiksIGV4dF90eXBlKTsKKwkJaWYgKCFzdHJjbXAoZXh0X3R5cGUsICJleHQzIikgfHwgIXN0cmNtcChleHRfdHlwZSwgImV4dDQiKSB8fAorCQkgICAgIXN0cmNtcChleHRfdHlwZSwgImV4dDRkZXYiKSkgeworCQkJcHJpbnRmKCIlcyIsIF8oIllvdSBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgYW4gIgorCQkJCSAgICAgICAidXBkYXRlZCBta2UyZnMuY29uZiBmaWxlLlxuXG4iKSk7CisJCX0KKwkJaWYgKCFmb3JjZSkgeworCQkJcHJpbnRmKCIlcyIsIF8oIkFib3J0aW5nLi4uXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJbWVnID0gKDEwMjQgKiAxMDI0KSAvIEVYVDJfQkxPQ0tfU0laRShzYik7CisJaWYgKGZzX2Jsb2Nrc19jb3VudCA8IDMgKiBtZWcpCisJCXNpemVfdHlwZSA9ICJmbG9wcHkiOworCWVsc2UgaWYgKGZzX2Jsb2Nrc19jb3VudCA8IDUxMiAqIG1lZykKKwkJc2l6ZV90eXBlID0gInNtYWxsIjsKKwllbHNlIGlmIChmc19ibG9ja3NfY291bnQgPCA0ICogMTAyNCAqIDEwMjQgKiBtZWcpCisJCXNpemVfdHlwZSA9ICJkZWZhdWx0IjsKKwllbHNlIGlmIChmc19ibG9ja3NfY291bnQgPCAxNiAqIDEwMjQgKiAxMDI0ICogbWVnKQorCQlzaXplX3R5cGUgPSAiYmlnIjsKKwllbHNlCisJCXNpemVfdHlwZSA9ICJodWdlIjsKKworCWlmICghdXNhZ2VfdHlwZXMpCisJCXVzYWdlX3R5cGVzID0gc2l6ZV90eXBlOworCisJcGFyc2Vfc3RyID0gbWFsbG9jKHN0cmxlbih1c2FnZV90eXBlcykrMSk7CisJaWYgKCFwYXJzZV9zdHIpIHsKKwkJZnJlZShwcm9maWxlX3R5cGUpOworCQlmcmVlKGxpc3QubGlzdCk7CisJCXJldHVybiAwOworCX0KKwlzdHJjcHkocGFyc2Vfc3RyLCB1c2FnZV90eXBlcyk7CisKKwlpZiAoZXh0X3R5cGUpCisJCXB1c2hfc3RyaW5nKCZsaXN0LCBleHRfdHlwZSk7CisJY3AgPSBwYXJzZV9zdHI7CisJd2hpbGUgKDEpIHsKKwkJdCA9IHN0cmNocihjcCwgJywnKTsKKwkJaWYgKHQpCisJCQkqdCA9ICdcMCc7CisKKwkJaWYgKCpjcCkgeworCQkJaWYgKHByb2ZpbGVfaGFzX3N1YnNlY3Rpb24ocHJvZmlsZSwgImZzX3R5cGVzIiwgY3ApKQorCQkJCXB1c2hfc3RyaW5nKCZsaXN0LCBjcCk7CisJCQllbHNlIGlmIChzdHJjbXAoY3AsICJkZWZhdWx0IikgIT0gMCkKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiXG5XYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgIgorCQkJCQkgICJkZWZpbmVkIGluIG1rZTJmcy5jb25mXG5cbiIpLAorCQkJCQljcCk7CisJCX0KKwkJaWYgKHQpCisJCQljcCA9IHQrMTsKKwkJZWxzZQorCQkJYnJlYWs7CisJfQorCWZyZWUocGFyc2Vfc3RyKTsKKwlmcmVlKHByb2ZpbGVfdHlwZSk7CisJaWYgKGlzX2h1cmQpCisJCXB1c2hfc3RyaW5nKCZsaXN0LCAiaHVyZCIpOworCXJldHVybiAobGlzdC5saXN0KTsKK30KKworY2hhciAqZ2V0X3N0cmluZ19mcm9tX3Byb2ZpbGUoY2hhciAqKnR5cGVzLCBjb25zdCBjaGFyICpvcHQsCisJCQkJICAgICBjb25zdCBjaGFyICpkZWZfdmFsKQoreworCWNoYXIgKnJldCA9IDA7CisJaW50IGk7CisKKwlmb3IgKGk9MDsgdHlwZXNbaV07IGkrKyk7CisJZm9yIChpLT0xOyBpID49MCA7IGktLSkgeworCQlwcm9maWxlX2dldF9zdHJpbmcocHJvZmlsZSwgImZzX3R5cGVzIiwgdHlwZXNbaV0sCisJCQkJICAgb3B0LCAwLCAmcmV0KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQorCXByb2ZpbGVfZ2V0X3N0cmluZyhwcm9maWxlLCAiZGVmYXVsdHMiLCBvcHQsIDAsIGRlZl92YWwsICZyZXQpOworCXJldHVybiAocmV0KTsKK30KKworaW50IGdldF9pbnRfZnJvbV9wcm9maWxlKGNoYXIgKip0eXBlcywgY29uc3QgY2hhciAqb3B0LCBpbnQgZGVmX3ZhbCkKK3sKKwlpbnQgcmV0OworCWNoYXIgKipjcHA7CisKKwlwcm9maWxlX2dldF9pbnRlZ2VyKHByb2ZpbGUsICJkZWZhdWx0cyIsIG9wdCwgMCwgZGVmX3ZhbCwgJnJldCk7CisJZm9yIChjcHAgPSB0eXBlczsgKmNwcDsgY3BwKyspCisJCXByb2ZpbGVfZ2V0X2ludGVnZXIocHJvZmlsZSwgImZzX3R5cGVzIiwgKmNwcCwgb3B0LCByZXQsICZyZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3VpbnRfZnJvbV9wcm9maWxlKGNoYXIgKip0eXBlcywgY29uc3QgY2hhciAqb3B0LAorCQkJCQl1bnNpZ25lZCBpbnQgZGVmX3ZhbCkKK3sKKwl1bnNpZ25lZCBpbnQgcmV0OworCWNoYXIgKipjcHA7CisKKwlwcm9maWxlX2dldF91aW50KHByb2ZpbGUsICJkZWZhdWx0cyIsIG9wdCwgMCwgZGVmX3ZhbCwgJnJldCk7CisJZm9yIChjcHAgPSB0eXBlczsgKmNwcDsgY3BwKyspCisJCXByb2ZpbGVfZ2V0X3VpbnQocHJvZmlsZSwgImZzX3R5cGVzIiwgKmNwcCwgb3B0LCByZXQsICZyZXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBkb3VibGUgZ2V0X2RvdWJsZV9mcm9tX3Byb2ZpbGUoY2hhciAqKnR5cGVzLCBjb25zdCBjaGFyICpvcHQsCisJCQkJICAgICAgZG91YmxlIGRlZl92YWwpCit7CisJZG91YmxlIHJldDsKKwljaGFyICoqY3BwOworCisJcHJvZmlsZV9nZXRfZG91YmxlKHByb2ZpbGUsICJkZWZhdWx0cyIsIG9wdCwgMCwgZGVmX3ZhbCwgJnJldCk7CisJZm9yIChjcHAgPSB0eXBlczsgKmNwcDsgY3BwKyspCisJCXByb2ZpbGVfZ2V0X2RvdWJsZShwcm9maWxlLCAiZnNfdHlwZXMiLCAqY3BwLCBvcHQsIHJldCwgJnJldCk7CisJcmV0dXJuIHJldDsKK30KKworaW50IGdldF9ib29sX2Zyb21fcHJvZmlsZShjaGFyICoqdHlwZXMsIGNvbnN0IGNoYXIgKm9wdCwgaW50IGRlZl92YWwpCit7CisJaW50IHJldDsKKwljaGFyICoqY3BwOworCisJcHJvZmlsZV9nZXRfYm9vbGVhbihwcm9maWxlLCAiZGVmYXVsdHMiLCBvcHQsIDAsIGRlZl92YWwsICZyZXQpOworCWZvciAoY3BwID0gdHlwZXM7ICpjcHA7IGNwcCsrKQorCQlwcm9maWxlX2dldF9ib29sZWFuKHByb2ZpbGUsICJmc190eXBlcyIsICpjcHAsIG9wdCwgcmV0LCAmcmV0KTsKKwlyZXR1cm4gcmV0OworfQorCitleHRlcm4gY29uc3QgY2hhciAqbWtlMmZzX2RlZmF1bHRfcHJvZmlsZTsKK3N0YXRpYyBjb25zdCBjaGFyICpkZWZhdWx0X2ZpbGVzW10gPSB7ICI8ZGVmYXVsdD4iLCAwIH07CisKKyNpZmRlZiBIQVZFX0JMS0lEX1BST0JFX0dFVF9UT1BPTE9HWQorLyoKKyAqIFNldHMgdGhlIGdlb21ldHJ5IG9mIGEgZGV2aWNlIChzdHJpcGUvc3RyaWRlKSwgYW5kIHJldHVybnMgdGhlCisgKiBkZXZpY2UncyBhbGlnbm1lbnQgb2Zmc2V0LCBpZiBhbnksIG9yIGEgbmVnYXRpdmUgZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQgZ2V0X2RldmljZV9nZW9tZXRyeShjb25zdCBjaGFyICpmaWxlLAorCQkJICAgICAgIHN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpwYXJhbSwKKwkJCSAgICAgICB1bnNpZ25lZCBpbnQgcHNlY3Rvcl9zaXplKQoreworCWludCByYyA9IC0xOworCXVuc2lnbmVkIGludCBibG9ja3NpemU7CisJYmxraWRfcHJvYmUgcHI7CisJYmxraWRfdG9wb2xvZ3kgdHA7CisJdW5zaWduZWQgbG9uZyBtaW5faW87CisJdW5zaWduZWQgbG9uZyBvcHRfaW87CisJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKKworCS8qIE5vdGhpbmcgdG8gZG8gZm9yIGEgcmVndWxhciBmaWxlICovCisJaWYgKCFzdGF0KGZpbGUsICZzdGF0YnVmKSAmJiBTX0lTUkVHKHN0YXRidWYuc3RfbW9kZSkpCisJCXJldHVybiAwOworCisJcHIgPSBibGtpZF9uZXdfcHJvYmVfZnJvbV9maWxlbmFtZShmaWxlKTsKKwlpZiAoIXByKQorCQlnb3RvIG91dDsKKworCXRwID0gYmxraWRfcHJvYmVfZ2V0X3RvcG9sb2d5KHByKTsKKwlpZiAoIXRwKQorCQlnb3RvIG91dDsKKworCW1pbl9pbyA9IGJsa2lkX3RvcG9sb2d5X2dldF9taW5pbXVtX2lvX3NpemUodHApOworCW9wdF9pbyA9IGJsa2lkX3RvcG9sb2d5X2dldF9vcHRpbWFsX2lvX3NpemUodHApOworCWJsb2Nrc2l6ZSA9IEVYVDJfQkxPQ0tfU0laRShwYXJhbSk7CisJaWYgKChtaW5faW8gPT0gMCkgJiYgKHBzZWN0b3Jfc2l6ZSA+IGJsb2Nrc2l6ZSkpCisJCW1pbl9pbyA9IHBzZWN0b3Jfc2l6ZTsKKwlpZiAoKG9wdF9pbyA9PSAwKSAmJiBtaW5faW8pCisJCW9wdF9pbyA9IG1pbl9pbzsKKwlpZiAoKG9wdF9pbyA9PSAwKSAmJiAocHNlY3Rvcl9zaXplID4gYmxvY2tzaXplKSkKKwkJb3B0X2lvID0gcHNlY3Rvcl9zaXplOworCisJLyogc2V0dGluZyBzdHJpcGUvc3RyaWRlIHRvIGJsb2Nrc2l6ZSBpcyBwb2ludGxlc3MgKi8KKwlpZiAobWluX2lvID4gYmxvY2tzaXplKQorCQlwYXJhbS0+c19yYWlkX3N0cmlkZSA9IG1pbl9pbyAvIGJsb2Nrc2l6ZTsKKwlpZiAob3B0X2lvID4gYmxvY2tzaXplKQorCQlwYXJhbS0+c19yYWlkX3N0cmlwZV93aWR0aCA9IG9wdF9pbyAvIGJsb2Nrc2l6ZTsKKworCXJjID0gYmxraWRfdG9wb2xvZ3lfZ2V0X2FsaWdubWVudF9vZmZzZXQodHApOworb3V0OgorCWJsa2lkX2ZyZWVfcHJvYmUocHIpOworCXJldHVybiByYzsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZCBQUlMoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQJCWIsIGMsIGZsYWdzOworCWludAkJY2x1c3Rlcl9zaXplID0gMDsKKwljaGFyIAkJKnRtcCwgKipjcHA7CisJaW50CQlleHBsaWNpdF9mc3NpemUgPSAwOworCWludAkJYmxvY2tzaXplID0gMDsKKwlpbnQJCWlub2RlX3JhdGlvID0gMDsKKwlpbnQJCWlub2RlX3NpemUgPSAwOworCXVuc2lnbmVkIGxvbmcJZmxleF9iZ19zaXplID0gMDsKKwlkb3VibGUJCXJlc2VydmVkX3JhdGlvID0gLTEuMDsKKwlpbnQJCWxzZWN0b3Jfc2l6ZSA9IDAsIHBzZWN0b3Jfc2l6ZSA9IDA7CisJaW50CQlzaG93X3ZlcnNpb25fb25seSA9IDAsIGlzX2RldmljZSA9IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIG51bV9pbm9kZXMgPSAwOyAvKiB1bnNpZ25lZCBsb25nIGxvbmcgdG8gY2F0Y2ggdG9vLWxhcmdlIGlucHV0ICovCisJZXJyY29kZV90CXJldHZhbDsKKwljaGFyICoJCW9sZHBhdGggPSBnZXRlbnYoIlBBVEgiKTsKKwljaGFyICoJCWV4dGVuZGVkX29wdHMgPSAwOworCWNoYXIgKgkJZnNfdHlwZSA9IDA7CisJY2hhciAqCQl1c2FnZV90eXBlcyA9IDA7CisJLyoKKwkgKiBOT1RFOiBBIGZldyB3b3JkcyBhYm91dCBmc19ibG9ja3NfY291bnQgYW5kIGJsb2Nrc2l6ZToKKwkgKgorCSAqIEluaXRpYWxseSwgYmxvY2tzaXplIGlzIHNldCB0byB6ZXJvLCB3aGljaCBpbXBsaWVzIDEwMjQuCisJICogSWYgLWIgaXMgc3BlY2lmaWVkLCBibG9ja3NpemUgaXMgdXBkYXRlZCB0byB0aGUgdXNlcidzIHZhbHVlLgorCSAqCisJICogTmV4dCwgdGhlIGRldmljZSBzaXplIG9yIHRoZSB1c2VyJ3MgImJsb2NrcyIgY29tbWFuZCBsaW5lIGFyZ3VtZW50CisJICogaXMgdXNlZCB0byBzZXQgZnNfYmxvY2tzX2NvdW50OyB0aGUgdW5pdHMgYXJlIGJsb2Nrc2l6ZS4KKwkgKgorCSAqIExhdGVyLCBpZiBibG9ja3NpemUgaGFzbid0IGJlZW4gc2V0IGFuZCB0aGUgcHJvZmlsZSBzcGVjaWZpZXMgYQorCSAqIGJsb2Nrc2l6ZSwgdGhlbiBibG9ja3NpemUgaXMgdXBkYXRlZCBhbmQgZnNfYmxvY2tzX2NvdW50IGlzIHNjYWxlZAorCSAqIGFwcHJvcHJpYXRlbHkuICBOb3RlIHRoZSBjaGFuZ2UgaW4gdW5pdHMhCisJICoKKwkgKiBGaW5hbGx5LCB3ZSBjb21wbGFpbiBhYm91dCBmc19ibG9ja3NfY291bnQgPiAyXjMyIG9uIGEgbm9uLTY0Yml0IGZzLgorCSAqLworCWJsazY0X3QJCWZzX2Jsb2Nrc19jb3VudCA9IDA7CisJbG9uZwkJc3lzdmFsOworCWludAkJc19vcHQgPSAtMSwgcl9vcHQgPSAtMTsKKwljaGFyCQkqZnNfZmVhdHVyZXMgPSAwOworCWludAkJZnNfZmVhdHVyZXNfc2l6ZSA9IDA7CisJaW50CQl1c2VfYnNpemU7CisJY2hhcgkJKm5ld3BhdGg7CisJaW50CQlwYXRobGVuID0gc2l6ZW9mKFBBVEhfU0VUKSArIDE7CisKKwlpZiAob2xkcGF0aCkKKwkJcGF0aGxlbiArPSBzdHJsZW4ob2xkcGF0aCk7CisJbmV3cGF0aCA9IG1hbGxvYyhwYXRobGVuKTsKKwlpZiAoIW5ld3BhdGgpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQlfKCJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIikpOworCQlleGl0KDEpOworCX0KKwlzdHJjcHkobmV3cGF0aCwgUEFUSF9TRVQpOworCisJLyogVXBkYXRlIG91ciBQQVRIIHRvIGluY2x1ZGUgL3NiaW4gICovCisJaWYgKG9sZHBhdGgpIHsKKwkJc3RyY2F0IChuZXdwYXRoLCAiOiIpOworCQlzdHJjYXQgKG5ld3BhdGgsIG9sZHBhdGgpOworCX0KKwlwdXRlbnYgKG5ld3BhdGgpOworCisJdG1wID0gZ2V0ZW52KCJNS0UyRlNfU1lOQyIpOworCWlmICh0bXApCisJCXN5bmNfa2x1ZGdlID0gYXRvaSh0bXApOworCisJLyogRGV0ZXJtaW5lIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGlmIHBvc3NpYmxlICovCisjaWZkZWYgSEFWRV9TWVNDT05GCisjaWYgKCFkZWZpbmVkKF9TQ19QQUdFU0laRSkgJiYgZGVmaW5lZChfU0NfUEFHRV9TSVpFKSkKKyNkZWZpbmUgX1NDX1BBR0VTSVpFIF9TQ19QQUdFX1NJWkUKKyNlbmRpZgorI2lmZGVmIF9TQ19QQUdFU0laRQorCXN5c3ZhbCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKwlpZiAoc3lzdmFsID4gMCkKKwkJc3lzX3BhZ2Vfc2l6ZSA9IHN5c3ZhbDsKKyNlbmRpZiAvKiBfU0NfUEFHRVNJWkUgKi8KKyNlbmRpZiAvKiBIQVZFX1NZU0NPTkYgKi8KKworCWlmICgodG1wID0gZ2V0ZW52KCJNS0UyRlNfQ09ORklHIikpICE9IE5VTEwpCisJCWNvbmZpZ19mblswXSA9IHRtcDsKKwlwcm9maWxlX3NldF9zeW50YXhfZXJyX2NiKHN5bnRheF9lcnJfcmVwb3J0KTsKKwlyZXR2YWwgPSBwcm9maWxlX2luaXQoY29uZmlnX2ZuLCAmcHJvZmlsZSk7CisJaWYgKHJldHZhbCA9PSBFTk9FTlQpIHsKKwkJcmV0dmFsID0gcHJvZmlsZV9pbml0KGRlZmF1bHRfZmlsZXMsICZwcm9maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gcHJvZmlsZV9lcnJvcjsKKwkJcmV0dmFsID0gcHJvZmlsZV9zZXRfZGVmYXVsdChwcm9maWxlLCBta2UyZnNfZGVmYXVsdF9wcm9maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gcHJvZmlsZV9lcnJvcjsKKwl9IGVsc2UgaWYgKHJldHZhbCkgeworcHJvZmlsZV9lcnJvcjoKKwkJZnByaW50ZihzdGRlcnIsIF8oIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkiCisJCQkJICAiIChlcnJvcjogJWxkKS5cbiIpLCByZXR2YWwpOworCQlleGl0KDEpOworCX0KKworCXNldGJ1ZihzdGRvdXQsIE5VTEwpOworCXNldGJ1ZihzdGRlcnIsIE5VTEwpOworCWFkZF9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJYWRkX2Vycm9yX3RhYmxlKCZldF9wcm9mX2Vycm9yX3RhYmxlKTsKKwltZW1zZXQoJmZzX3BhcmFtLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2spKTsKKwlmc19wYXJhbS5zX3Jldl9sZXZlbCA9IDE7ICAvKiBDcmVhdGUgcmV2aXNpb24gMSBmaWxlc3lzdGVtcyBub3cgKi8KKworCWlmIChpc19iZWZvcmVfbGludXhfdmVyKDIsIDIsIDApKQorCQlmc19wYXJhbS5zX3Jldl9sZXZlbCA9IDA7CisKKwlpZiAoYXJnYyAmJiAqYXJndikgeworCQlwcm9ncmFtX25hbWUgPSBnZXRfcHJvZ25hbWUoKmFyZ3YpOworCisJCS8qIElmIGNhbGxlZCBhcyBta2ZzLmV4dDMsIGNyZWF0ZSBhIGpvdXJuYWwgaW5vZGUgKi8KKwkJaWYgKCFzdHJjbXAocHJvZ3JhbV9uYW1lLCAibWtmcy5leHQzIikgfHwKKwkJICAgICFzdHJjbXAocHJvZ3JhbV9uYW1lLCAibWtlM2ZzIikpCisJCQlqb3VybmFsX3NpemUgPSAtMTsKKwl9CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsCisJCSAgICAiYjpjZDplOmc6aTpqbDptOm5vOnFyOnM6dDp2QzpERTpGRzpJOko6S0w6TTpOOk86UjpTVDpVOlZ6OiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2InOgorCQkJYmxvY2tzaXplID0gcGFyc2VfbnVtX2Jsb2NrczIob3B0YXJnLCAtMSk7CisJCQliID0gKGJsb2Nrc2l6ZSA+IDApID8gYmxvY2tzaXplIDogLWJsb2Nrc2l6ZTsKKwkJCWlmIChiIDwgRVhUMl9NSU5fQkxPQ0tfU0laRSB8fAorCQkJICAgIGIgPiBFWFQyX01BWF9CTE9DS19TSVpFKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIiksIG9wdGFyZyk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWlmIChibG9ja3NpemUgPiA0MDk2KQorCQkJCWZwcmludGYoc3RkZXJyLCBfKCJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90ICIKKwkJCQkJCSAgInVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iKSwKKwkJCQkJYmxvY2tzaXplKTsKKwkJCWlmIChibG9ja3NpemUgPiAwKQorCQkJCWZzX3BhcmFtLnNfbG9nX2Jsb2NrX3NpemUgPQorCQkJCQlpbnRfbG9nMihibG9ja3NpemUgPj4KKwkJCQkJCSBFWFQyX01JTl9CTE9DS19MT0dfU0laRSk7CisJCQlicmVhazsKKwkJY2FzZSAnYyc6CS8qIENoZWNrIGZvciBiYWQgYmxvY2tzICovCisJCQljZmxhZysrOworCQkJYnJlYWs7CisJCWNhc2UgJ0MnOgorCQkJY2x1c3Rlcl9zaXplID0gcGFyc2VfbnVtX2Jsb2NrczIob3B0YXJnLCAtMSk7CisJCQlpZiAoY2x1c3Rlcl9zaXplIDw9IEVYVDJfTUlOX0NMVVNURVJfU0laRSB8fAorCQkJICAgIGNsdXN0ZXJfc2l6ZSA+IEVYVDJfTUFYX0NMVVNURVJfU0laRSkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQlfKCJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCXNyY19yb290X2RpciA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdEJzoKKwkJCWRpcmVjdF9pbyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnUic6CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCQlfKCInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiKSk7CisJCQkvKiBmYWxsdGhyb3VnaCAqLworCQljYXNlICdFJzoKKwkJCWV4dGVuZGVkX29wdHMgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnZSc6CisJCQlpZiAoc3RyY21wKG9wdGFyZywgImNvbnRpbnVlIikgPT0gMCkKKwkJCQllcnJvcnNfYmVoYXZpb3IgPSBFWFQyX0VSUk9SU19DT05USU5VRTsKKwkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJyZW1vdW50LXJvIikgPT0gMCkKKwkJCQllcnJvcnNfYmVoYXZpb3IgPSBFWFQyX0VSUk9SU19STzsKKwkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJwYW5pYyIpID09IDApCisJCQkJZXJyb3JzX2JlaGF2aW9yID0gRVhUMl9FUlJPUlNfUEFOSUM7CisJCQllbHNlIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiKSwKKwkJCQkJb3B0YXJnKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ0YnOgorCQkJZm9yY2UrKzsKKwkJCWJyZWFrOworCQljYXNlICdnJzoKKwkJCWZzX3BhcmFtLnNfYmxvY2tzX3Blcl9ncm91cCA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiKSk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWlmICgoZnNfcGFyYW0uc19ibG9ja3NfcGVyX2dyb3VwICUgOCkgIT0gMCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCV8oImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IikpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnRyc6CisJCQlmbGV4X2JnX3NpemUgPSBzdHJ0b3VsKG9wdGFyZywgJnRtcCwgMCk7CisJCQlpZiAoKnRtcCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCQlfKCJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIikpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlpZiAoZmxleF9iZ19zaXplIDwgMSB8fAorCQkJICAgIChmbGV4X2JnX3NpemUgJiAoZmxleF9iZ19zaXplLTEpKSAhPSAwKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJCV8oImZsZXhfYmcgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMiIpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJaWYgKGZsZXhfYmdfc2l6ZSA+IE1BWF8zMl9OVU0pIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQlfKCJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4iCisJCQkJIiBvciBlcXVhbCB0byAyXjMxIiksIGZsZXhfYmdfc2l6ZSk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdpJzoKKwkJCWlub2RlX3JhdGlvID0gcGFyc2VfbnVtX2Jsb2NrcyhvcHRhcmcsIC0xKTsKKwkJCWlmIChpbm9kZV9yYXRpbyA8IEVYVDJfTUlOX0JMT0NLX1NJWkUgfHwKKwkJCSAgICBpbm9kZV9yYXRpbyA+IEVYVDJfTUFYX0JMT0NLX1NJWkUgKiAxMDI0KSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIiksCisJCQkJCW9wdGFyZywgRVhUMl9NSU5fQkxPQ0tfU0laRSwKKwkJCQkJRVhUMl9NQVhfQkxPQ0tfU0laRSAqIDEwMjQpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnSSc6CisJCQlpbm9kZV9zaXplID0gc3RydG91bChvcHRhcmcsICZ0bXAsIDApOworCQkJaWYgKCp0bXApIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiKSwgb3B0YXJnKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ2onOgorCQkJaWYgKCFqb3VybmFsX3NpemUpCisJCQkJam91cm5hbF9zaXplID0gLTE7CisJCQlicmVhazsKKwkJY2FzZSAnSic6CisJCQlwYXJzZV9qb3VybmFsX29wdHMob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdLJzoKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMiLAorCQkJCV8oIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCAiCisJCQkJICAic2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAiCisJCQkJICAiXCctRSBub2Rpc2NhcmRcJyBleHRlbmRlZCBvcHRpb24gIgorCQkJCSAgImluc3RlYWQhXG4iKSk7CisJCQlkaXNjYXJkID0gMDsKKwkJCWJyZWFrOworCQljYXNlICdsJzoKKwkJCWJhZF9ibG9ja3NfZmlsZW5hbWUgPSByZWFsbG9jKGJhZF9ibG9ja3NfZmlsZW5hbWUsCisJCQkJCQkgICAgICBzdHJsZW4ob3B0YXJnKSArIDEpOworCQkJaWYgKCFiYWRfYmxvY2tzX2ZpbGVuYW1lKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIEVOT01FTSwgIiVzIiwKKwkJCQkJXygiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIikpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlzdHJjcHkoYmFkX2Jsb2Nrc19maWxlbmFtZSwgb3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdMJzoKKwkJCXZvbHVtZV9sYWJlbCA9IG9wdGFyZzsKKwkJCWlmIChzdHJsZW4odm9sdW1lX2xhYmVsKSA+IEVYVDJfTEFCRUxfTEVOKSB7CisJCQkJdm9sdW1lX2xhYmVsW0VYVDJfTEFCRUxfTEVOXSA9ICdcMCc7CisJCQkJZnByaW50ZihzdGRlcnIsIF8oIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nOyB3aWxsIGJlIHRydW5jYXRlZCB0byAnJXMnXG5cbiIpLAorCQkJCQl2b2x1bWVfbGFiZWwpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ20nOgorCQkJcmVzZXJ2ZWRfcmF0aW8gPSBzdHJ0b2Qob3B0YXJnLCAmdG1wKTsKKwkJCWlmICggKnRtcCB8fCByZXNlcnZlZF9yYXRpbyA+IDUwIHx8CisJCQkgICAgIHJlc2VydmVkX3JhdGlvIDwgMCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQlfKCJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiKSwKKwkJCQkJb3B0YXJnKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ00nOgorCQkJbW91bnRfZGlyID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ24nOgorCQkJbm9hY3Rpb24rKzsKKwkJCWJyZWFrOworCQljYXNlICdOJzoKKwkJCW51bV9pbm9kZXMgPSBzdHJ0b3VsKG9wdGFyZywgJnRtcCwgMCk7CisJCQlpZiAoKnRtcCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQlfKCJiYWQgbnVtIGlub2RlcyAtICVzIiksIG9wdGFyZyk7CisJCQkJCWV4aXQoMSk7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSAnbyc6CisJCQljcmVhdG9yX29zID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWNhc2UgJ08nOgorCQkJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9tZW0oZnNfZmVhdHVyZXNfc2l6ZSwKKwkJCQkgICBmc19mZWF0dXJlc19zaXplICsgMSArIHN0cmxlbihvcHRhcmcpLAorCQkJCQkJICAgJmZzX2ZlYXR1cmVzKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCSAgICAgXygid2hpbGUgYWxsb2NhdGluZyBmc19mZWF0dXJlIHN0cmluZyIpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJaWYgKGZzX2ZlYXR1cmVzX3NpemUpCisJCQkJc3RyY2F0KGZzX2ZlYXR1cmVzLCAiLCIpOworCQkJZWxzZQorCQkJCWZzX2ZlYXR1cmVzWzBdID0gMDsKKwkJCXN0cmNhdChmc19mZWF0dXJlcywgb3B0YXJnKTsKKwkJCWZzX2ZlYXR1cmVzX3NpemUgKz0gMSArIHN0cmxlbihvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ3EnOgorCQkJcXVpZXQgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJcl9vcHQgPSBzdHJ0b3VsKG9wdGFyZywgJnRtcCwgMCk7CisJCQlpZiAoKnRtcCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQlfKCJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIpLCBvcHRhcmcpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQlpZiAocl9vcHQgPiBFWFQyX01BWF9TVVBQX1JFVikgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBFWFQyX0VUX1JFVl9UT09fSElHSCwKKwkJCQkJXygid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIpLCByX29wdCk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWZzX3BhcmFtLnNfcmV2X2xldmVsID0gcl9vcHQ7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CS8qIGRlcHJlY2F0ZWQgKi8KKwkJCXNfb3B0ID0gYXRvaShvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ1MnOgorCQkJc3VwZXJfb25seSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQlpZiAoZnNfdHlwZSkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCSAgICBfKCJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIpKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJZnNfdHlwZSA9IHN0cmR1cChvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ1QnOgorCQkJaWYgKHVzYWdlX3R5cGVzKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJICAgIF8oIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIikpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCQl1c2FnZV90eXBlcyA9IHN0cmR1cChvcHRhcmcpOworCQkJYnJlYWs7CisJCWNhc2UgJ1UnOgorCQkJZnNfdXVpZCA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICd2JzoKKwkJCXZlcmJvc2UgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ1YnOgorCQkJLyogUHJpbnQgdmVyc2lvbiBudW1iZXIgYW5kIGV4aXQgKi8KKwkJCXNob3dfdmVyc2lvbl9vbmx5Kys7CisJCQlicmVhazsKKwkJY2FzZSAneic6CisJCQl1bmRvX2ZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKCk7CisJCX0KKwl9CisJaWYgKChvcHRpbmQgPT0gYXJnYykgJiYgIXNob3dfdmVyc2lvbl9vbmx5KQorCQl1c2FnZSgpOworCWRldmljZV9uYW1lID0gYXJndltvcHRpbmQrK107CisKKwlpZiAoIXF1aWV0IHx8IHNob3dfdmVyc2lvbl9vbmx5KQorCQlmcHJpbnRmIChzdGRlcnIsICJta2UyZnMgJXMgKCVzKVxuIiwgRTJGU1BST0dTX1ZFUlNJT04sCisJCQkgRTJGU1BST0dTX0RBVEUpOworCisJaWYgKHNob3dfdmVyc2lvbl9vbmx5KSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJcdFVzaW5nICVzXG4iKSwKKwkJCWVycm9yX21lc3NhZ2UoRVhUMl9FVF9CQVNFKSk7CisJCWV4aXQoMCk7CisJfQorCisJLyoKKwkgKiBJZiB0aGVyZSdzIG5vIGJsb2Nrc2l6ZSBzcGVjaWZpZWQgYW5kIHRoZXJlIGlzIGEgam91cm5hbAorCSAqIGRldmljZSwgdXNlIGl0IHRvIGZpZ3VyZSBvdXQgdGhlIGJsb2Nrc2l6ZQorCSAqLworCWlmIChibG9ja3NpemUgPD0gMCAmJiBqb3VybmFsX2RldmljZSkgeworCQlleHQyX2ZpbHN5cwlqZnM7CisJCWlvX21hbmFnZXIJaW9fcHRyOworCisjaWZkZWYgQ09ORklHX1RFU1RJT19ERUJVRworCQlpZiAoZ2V0ZW52KCJURVNUX0lPX0ZMQUdTIikgfHwgZ2V0ZW52KCJURVNUX0lPX0JMT0NLIikpIHsKKwkJCWlvX3B0ciA9IHRlc3RfaW9fbWFuYWdlcjsKKwkJCXRlc3RfaW9fYmFja2luZ19tYW5hZ2VyID0gdW5peF9pb19tYW5hZ2VyOworCQl9IGVsc2UKKyNlbmRpZgorCQkJaW9fcHRyID0gdW5peF9pb19tYW5hZ2VyOworCQlyZXR2YWwgPSBleHQyZnNfb3Blbihqb3VybmFsX2RldmljZSwKKwkJCQkgICAgIEVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSywgMCwKKwkJCQkgICAgIDAsIGlvX3B0ciwgJmpmcyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIpLAorCQkJCWpvdXJuYWxfZGV2aWNlKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKChibG9ja3NpemUgPCAwKSAmJiAoamZzLT5ibG9ja3NpemUgPCAodW5zaWduZWQpICgtYmxvY2tzaXplKSkpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiAiCisJCQkJICAibWluaW11bSBibG9ja3NpemUgJWRcbiIpLCBqZnMtPmJsb2Nrc2l6ZSwKKwkJCQktYmxvY2tzaXplKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJYmxvY2tzaXplID0gamZzLT5ibG9ja3NpemU7CisJCXByaW50ZihfKCJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIpLCBibG9ja3NpemUpOworCQlmc19wYXJhbS5zX2xvZ19ibG9ja19zaXplID0KKwkJCWludF9sb2cyKGJsb2Nrc2l6ZSA+PiBFWFQyX01JTl9CTE9DS19MT0dfU0laRSk7CisJCWV4dDJmc19jbG9zZV9mcmVlKCZqZnMpOworCX0KKworCWlmIChvcHRpbmQgPCBhcmdjKSB7CisJCWZzX2Jsb2Nrc19jb3VudCA9IHBhcnNlX251bV9ibG9ja3MyKGFyZ3Zbb3B0aW5kKytdLAorCQkJCQkJICAgZnNfcGFyYW0uc19sb2dfYmxvY2tfc2l6ZSk7CisJCWlmICghZnNfYmxvY2tzX2NvdW50KSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQlfKCJpbnZhbGlkIGJsb2NrcyAnJXMnIG9uIGRldmljZSAnJXMnIiksCisJCQkJYXJndltvcHRpbmQgLSAxXSwgZGV2aWNlX25hbWUpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlpZiAob3B0aW5kIDwgYXJnYykKKwkJdXNhZ2UoKTsKKworCXByb2ZpbGVfZ2V0X2ludGVnZXIocHJvZmlsZSwgIm9wdGlvbnMiLCAicHJvY2VlZF9kZWxheSIsIDAsIDAsCisJCQkgICAgJnByb2NlZWRfZGVsYXkpOworCisJLyogVGhlIGlzYXR0eSgpIHRlc3QgaXMgc28gd2UgZG9uJ3QgYnJlYWsgZXhpc3Rpbmcgc2NyaXB0cyAqLworCWZsYWdzID0gQ1JFQVRFX0ZJTEU7CisJaWYgKGlzYXR0eSgwKSAmJiBpc2F0dHkoMSkgJiYgIW9mZnNldCkKKwkJZmxhZ3MgfD0gQ0hFQ0tfRlNfRVhJU1Q7CisJaWYgKCFxdWlldCkKKwkJZmxhZ3MgfD0gVkVSQk9TRV9DUkVBVEU7CisJaWYgKGZzX2Jsb2Nrc19jb3VudCA9PSAwKQorCQlmbGFncyB8PSBOT19TSVpFOworCWVsc2UKKwkJZXhwbGljaXRfZnNzaXplID0gMTsKKwlpZiAoIWNoZWNrX3BsYXVzaWJpbGl0eShkZXZpY2VfbmFtZSwgZmxhZ3MsICZpc19kZXZpY2UpICYmICFmb3JjZSkKKwkJcHJvY2VlZF9xdWVzdGlvbihwcm9jZWVkX2RlbGF5KTsKKworCWNoZWNrX21vdW50KGRldmljZV9uYW1lLCBmb3JjZSwgXygiZmlsZXN5c3RlbSIpKTsKKworCS8qIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgZGV2aWNlIChpZiBwb3NzaWJsZSkgKi8KKwlpZiAobm9hY3Rpb24gJiYgZnNfYmxvY2tzX2NvdW50KSB7CisJCWRldl9zaXplID0gZnNfYmxvY2tzX2NvdW50OworCQlyZXR2YWwgPSAwOworCX0gZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2RldmljZV9zaXplMihkZXZpY2VfbmFtZSwKKwkJCQkJCSBFWFQyX0JMT0NLX1NJWkUoJmZzX3BhcmFtKSwKKwkJCQkJCSAmZGV2X3NpemUpOworCisJaWYgKHJldHZhbCAmJiAocmV0dmFsICE9IEVYVDJfRVRfVU5JTVBMRU1FTlRFRCkpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIikpOworCQlleGl0KDEpOworCX0KKwlpZiAoIWZzX2Jsb2Nrc19jb3VudCkgeworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfVU5JTVBMRU1FTlRFRCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgIgorCQkJCSJtdXN0IHNwZWNpZnlcbnRoZSBzaXplIG9mIHRoZSAiCisJCQkJImZpbGVzeXN0ZW1cbiIpKTsKKwkJCWV4aXQoMSk7CisJCX0gZWxzZSB7CisJCQlpZiAoZGV2X3NpemUgPT0gMCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCV8oIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICAiCisJCQkJICAiSW52YWxpZCBwYXJ0aXRpb24gc3BlY2lmaWVkLCBvclxuXHQiCisJCQkJICAicGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgIgorCQkJCSAgImFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuXHQiCisJCQkJICAiYSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSAiCisJCQkJICAiYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3Rcblx0IgorCQkJCSAgInRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCisJCQkJICApKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJZnNfYmxvY2tzX2NvdW50ID0gZGV2X3NpemU7CisJCQlpZiAoc3lzX3BhZ2Vfc2l6ZSA+IEVYVDJfQkxPQ0tfU0laRSgmZnNfcGFyYW0pKQorCQkJCWZzX2Jsb2Nrc19jb3VudCAmPSB+KChibGs2NF90KSAoKHN5c19wYWdlX3NpemUgLworCQkJCQkgICAgIEVYVDJfQkxPQ0tfU0laRSgmZnNfcGFyYW0pKS0xKSk7CisJCX0KKwl9IGVsc2UgaWYgKCFmb3JjZSAmJiBpc19kZXZpY2UgJiYgKGZzX2Jsb2Nrc19jb3VudCA+IGRldl9zaXplKSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCV8oIkZpbGVzeXN0ZW0gbGFyZ2VyIHRoYW4gYXBwYXJlbnQgZGV2aWNlIHNpemUuIikpOworCQlwcm9jZWVkX3F1ZXN0aW9uKHByb2NlZWRfZGVsYXkpOworCX0KKworCWlmICghZnNfdHlwZSkKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKHByb2ZpbGUsICJkZXZpY2VzIiwgZGV2aWNlX25hbWUsCisJCQkJICAgImZzX3R5cGUiLCAwLCAmZnNfdHlwZSk7CisJaWYgKCF1c2FnZV90eXBlcykKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKHByb2ZpbGUsICJkZXZpY2VzIiwgZGV2aWNlX25hbWUsCisJCQkJICAgInVzYWdlX3R5cGVzIiwgMCwgJnVzYWdlX3R5cGVzKTsKKworCS8qCisJICogV2UgaGF2ZSB0aGUgZmlsZSBzeXN0ZW0gKG9yIGRldmljZSkgc2l6ZSwgc28gd2UgY2FuIG5vdworCSAqIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgZmlsZSBzeXN0ZW0gdHlwZXMgc28gdGhlIGZzIGNhbgorCSAqIGJlIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZC4KKwkgKi8KKwlmc190eXBlcyA9IHBhcnNlX2ZzX3R5cGUoZnNfdHlwZSwgdXNhZ2VfdHlwZXMsICZmc19wYXJhbSwKKwkJCQkgZnNfYmxvY2tzX2NvdW50ID8gZnNfYmxvY2tzX2NvdW50IDogZGV2X3NpemUsCisJCQkJIGFyZ3ZbMF0pOworCWlmICghZnNfdHlwZXMpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iKSk7CisJCWV4aXQoMSk7CisJfQorCisJLyogRmlndXJlIG91dCB3aGF0IGZlYXR1cmVzIHNob3VsZCBiZSBlbmFibGVkICovCisKKwl0bXAgPSBOVUxMOworCWlmIChmc19wYXJhbS5zX3Jldl9sZXZlbCAhPSBFWFQyX0dPT0RfT0xEX1JFVikgeworCQl0bXAgPSBnZXRfc3RyaW5nX2Zyb21fcHJvZmlsZShmc190eXBlcywgImJhc2VfZmVhdHVyZXMiLAorCQkgICAgICAic3BhcnNlX3N1cGVyLGxhcmdlX2ZpbGUsZmlsZXR5cGUscmVzaXplX2lub2RlLGRpcl9pbmRleCIpOworCQllZGl0X2ZlYXR1cmUodG1wLCAmZnNfcGFyYW0uc19mZWF0dXJlX2NvbXBhdCk7CisJCWZyZWUodG1wKTsKKworCQkvKiBBbmQgd2hpY2ggbW91bnQgb3B0aW9ucyBhcyB3ZWxsICovCisJCXRtcCA9IGdldF9zdHJpbmdfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAiZGVmYXVsdF9tbnRvcHRzIiwKKwkJCQkJICAgICAgImFjbCx1c2VyX3hhdHRyIik7CisJCWVkaXRfbW50b3B0cyh0bXAsICZmc19wYXJhbS5zX2RlZmF1bHRfbW91bnRfb3B0cyk7CisJCWlmICh0bXApCisJCQlmcmVlKHRtcCk7CisKKwkJZm9yIChjcHAgPSBmc190eXBlczsgKmNwcDsgY3BwKyspIHsKKwkJCXRtcCA9IE5VTEw7CisJCQlwcm9maWxlX2dldF9zdHJpbmcocHJvZmlsZSwgImZzX3R5cGVzIiwgKmNwcCwKKwkJCQkJICAgImZlYXR1cmVzIiwgIiIsICZ0bXApOworCQkJaWYgKHRtcCAmJiAqdG1wKQorCQkJCWVkaXRfZmVhdHVyZSh0bXAsICZmc19wYXJhbS5zX2ZlYXR1cmVfY29tcGF0KTsKKwkJCWlmICh0bXApCisJCQkJZnJlZSh0bXApOworCQl9CisJCXRtcCA9IGdldF9zdHJpbmdfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAiZGVmYXVsdF9mZWF0dXJlcyIsCisJCQkJCSAgICAgICIiKTsKKwl9CisJLyogTWFzayBvZmYgZmVhdHVyZXMgd2hpY2ggYXJlbid0IHN1cHBvcnRlZCBieSB0aGUgSHVyZCAqLworCWlmIChmb3JfaHVyZChjcmVhdG9yX29zKSkgeworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9maWxldHlwZSgmZnNfcGFyYW0pOworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9odWdlX2ZpbGUoJmZzX3BhcmFtKTsKKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bSgmZnNfcGFyYW0pOworCX0KKwllZGl0X2ZlYXR1cmUoZnNfZmVhdHVyZXMgPyBmc19mZWF0dXJlcyA6IHRtcCwKKwkJICAgICAmZnNfcGFyYW0uc19mZWF0dXJlX2NvbXBhdCk7CisJaWYgKHRtcCkKKwkJZnJlZSh0bXApOworCSh2b2lkKSBleHQyZnNfZnJlZV9tZW0oJmZzX2ZlYXR1cmVzKTsKKwkvKgorCSAqIElmIHRoZSB1c2VyIHNwZWNpZmllZCBmZWF0dXJlcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgSHVyZCwgY29tcGxhaW4KKwkgKi8KKwlpZiAoZm9yX2h1cmQoY3JlYXRvcl9vcykpIHsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9maWxldHlwZSgmZnNfcGFyYW0pKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgIgorCQkJCQkJImZpbGV0eXBlIGZlYXR1cmUuXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKCZmc19wYXJhbSkpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSAiCisJCQkJCQkiaHVnZV9maWxlIGZlYXR1cmUuXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bSgmZnNfcGFyYW0pKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgIgorCQkJCQkJIm1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwkvKiBHZXQgdGhlIGhhcmR3YXJlIHNlY3RvciBzaXplcywgaWYgYXZhaWxhYmxlICovCisJcmV0dmFsID0gZXh0MmZzX2dldF9kZXZpY2Vfc2VjdHNpemUoZGV2aWNlX25hbWUsICZsc2VjdG9yX3NpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiKSk7CisJCWV4aXQoMSk7CisJfQorCXJldHZhbCA9IGV4dDJmc19nZXRfZGV2aWNlX3BoeXNfc2VjdHNpemUoZGV2aWNlX25hbWUsICZwc2VjdG9yX3NpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCV8oIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiKSk7CisJCWV4aXQoMSk7CisJfQorCisJdG1wID0gZ2V0ZW52KCJNS0UyRlNfREVWSUNFX1NFQ1RTSVpFIik7CisJaWYgKHRtcCAhPSBOVUxMKQorCQlsc2VjdG9yX3NpemUgPSBhdG9pKHRtcCk7CisJdG1wID0gZ2V0ZW52KCJNS0UyRlNfREVWSUNFX1BIWVNfU0VDVFNJWkUiKTsKKwlpZiAodG1wICE9IE5VTEwpCisJCXBzZWN0b3Jfc2l6ZSA9IGF0b2kodG1wKTsKKworCS8qIE9sZGVyIGtlcm5lbHMgbWF5IG5vdCBoYXZlIHBoeXNpY2FsL2xvZ2ljYWwgZGlzdGluY3Rpb24gKi8KKwlpZiAoIXBzZWN0b3Jfc2l6ZSkKKwkJcHNlY3Rvcl9zaXplID0gbHNlY3Rvcl9zaXplOworCisJaWYgKGJsb2Nrc2l6ZSA8PSAwKSB7CisJCXVzZV9ic2l6ZSA9IGdldF9pbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAiYmxvY2tzaXplIiwgNDA5Nik7CisKKwkJaWYgKHVzZV9ic2l6ZSA9PSAtMSkgeworCQkJdXNlX2JzaXplID0gc3lzX3BhZ2Vfc2l6ZTsKKwkJCWlmIChpc19iZWZvcmVfbGludXhfdmVyKDIsIDYsIDApICYmIHVzZV9ic2l6ZSA+IDQwOTYpCisJCQkJdXNlX2JzaXplID0gNDA5NjsKKwkJfQorCQlpZiAobHNlY3Rvcl9zaXplICYmIHVzZV9ic2l6ZSA8IGxzZWN0b3Jfc2l6ZSkKKwkJCXVzZV9ic2l6ZSA9IGxzZWN0b3Jfc2l6ZTsKKwkJaWYgKChibG9ja3NpemUgPCAwKSAmJiAodXNlX2JzaXplIDwgKC1ibG9ja3NpemUpKSkKKwkJCXVzZV9ic2l6ZSA9IC1ibG9ja3NpemU7CisJCWJsb2Nrc2l6ZSA9IHVzZV9ic2l6ZTsKKwkJZnNfYmxvY2tzX2NvdW50IC89IChibG9ja3NpemUgLyAxMDI0KTsKKwl9IGVsc2UgeworCQlpZiAoYmxvY2tzaXplIDwgbHNlY3Rvcl9zaXplKSB7CQkJLyogSW1wb3NzaWJsZSAqLworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIEVJTlZBTCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsICIKKwkJCQkgICJmb3IgZGV2aWNlXG4iKSk7CisJCQlleGl0KDEpOworCQl9IGVsc2UgaWYgKChibG9ja3NpemUgPCBwc2VjdG9yX3NpemUpICYmCisJCQkgICAocHNlY3Rvcl9zaXplIDw9IHN5c19wYWdlX3NpemUpKSB7CS8qIFN1Ym9wdGltYWwgKi8KKwkJCWZwcmludGYoc3RkZXJyLCBfKCJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzICIKKwkJCQkibGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iKSwKKwkJCQlibG9ja3NpemUsIHBzZWN0b3Jfc2l6ZSk7CisJCX0KKwl9CisKKwlmc19wYXJhbS5zX2xvZ19ibG9ja19zaXplID0KKwkJaW50X2xvZzIoYmxvY2tzaXplID4+IEVYVDJfTUlOX0JMT0NLX0xPR19TSVpFKTsKKworCS8qCisJICogV2Ugbm93IG5lZWQgdG8gZG8gYSBzYW5pdHkgY2hlY2sgb2YgZnNfYmxvY2tzX2NvdW50IGZvcgorCSAqIDMyLWJpdCB2cyA2NC1iaXQgYmxvY2sgbnVtYmVyIHN1cHBvcnQuCisJICovCisJaWYgKChmc19ibG9ja3NfY291bnQgPiBNQVhfMzJfTlVNKSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoJmZzX3BhcmFtKSkKKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfcmVzaXplX2lub2RlKCZmc19wYXJhbSk7CisJaWYgKChmc19ibG9ja3NfY291bnQgPiBNQVhfMzJfTlVNKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KCZmc19wYXJhbSkgJiYKKwkgICAgZ2V0X2Jvb2xfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAiYXV0b182NC1iaXRfc3VwcG9ydCIsIDApKSB7CisJCWV4dDJmc19zZXRfZmVhdHVyZV82NGJpdCgmZnNfcGFyYW0pOworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9yZXNpemVfaW5vZGUoJmZzX3BhcmFtKTsKKwl9CisJaWYgKChmc19ibG9ja3NfY291bnQgPiBNQVhfMzJfTlVNKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KCZmc19wYXJhbSkpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgIgorCQkJCSAgInRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG5cdCIKKwkJCQkgICJpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIiksCisJCQlwcm9ncmFtX25hbWUsIGZzX2Jsb2Nrc19jb3VudCwgZGV2aWNlX25hbWUsCisJCQlFWFQyX0JMT0NLX1NJWkUoJmZzX3BhcmFtKSk7CisJCWV4aXQoMSk7CisJfQorCisJZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXQoJmZzX3BhcmFtLCBmc19ibG9ja3NfY291bnQpOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2RldigmZnNfcGFyYW0pKSB7CisJCWZzX3R5cGVzWzBdID0gc3RyZHVwKCJqb3VybmFsIik7CisJCWZzX3R5cGVzWzFdID0gMDsKKwl9CisKKwlpZiAodmVyYm9zZSkgeworCQlmcHV0cyhfKCJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIiksIHN0ZG91dCk7CisJCXByaW50X3N0cl9saXN0KGZzX3R5cGVzKTsKKwl9CisKKwlpZiAocl9vcHQgPT0gRVhUMl9HT09EX09MRF9SRVYgJiYKKwkgICAgKGZzX3BhcmFtLnNfZmVhdHVyZV9jb21wYXQgfHwgZnNfcGFyYW0uc19mZWF0dXJlX2luY29tcGF0IHx8CisJICAgICBmc19wYXJhbS5zX2ZlYXR1cmVfcm9fY29tcGF0KSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkICIKKwkJCQkJIndpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIikpOworCQlleGl0KDEpOworCX0KKworCWlmIChzX29wdCA+IDApIHsKKwkJaWYgKHJfb3B0ID09IEVYVDJfR09PRF9PTERfUkVWKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCQlfKCJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCAiCisJCQkJICAid2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJCWV4dDJmc19zZXRfZmVhdHVyZV9zcGFyc2Vfc3VwZXIoJmZzX3BhcmFtKTsKKwl9IGVsc2UgaWYgKHNfb3B0ID09IDApCisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX3NwYXJzZV9zdXBlcigmZnNfcGFyYW0pOworCisJaWYgKGpvdXJuYWxfc2l6ZSAhPSAwKSB7CisJCWlmIChyX29wdCA9PSBFWFQyX0dPT0RfT0xEX1JFVikgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCAiCisJCQkJCQkicmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlleHQyZnNfc2V0X2ZlYXR1cmVfam91cm5hbCgmZnNfcGFyYW0pOworCX0KKworCS8qIEdldCByZXNlcnZlZF9yYXRpbyBmcm9tIHByb2ZpbGUgaWYgbm90IHNwZWNpZmllZCBvbiBjbWQgbGluZS4gKi8KKwlpZiAocmVzZXJ2ZWRfcmF0aW8gPCAwLjApIHsKKwkJcmVzZXJ2ZWRfcmF0aW8gPSBnZXRfZG91YmxlX2Zyb21fcHJvZmlsZSgKKwkJCQkJZnNfdHlwZXMsICJyZXNlcnZlZF9yYXRpbyIsIDUuMCk7CisJCWlmIChyZXNlcnZlZF9yYXRpbyA+IDUwIHx8IHJlc2VydmVkX3JhdGlvIDwgMCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJXygiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVsZiIpLAorCQkJCXJlc2VydmVkX3JhdGlvKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWxfZGV2KCZmc19wYXJhbSkpIHsKKwkJcmVzZXJ2ZWRfcmF0aW8gPSAwOworCQlmc19wYXJhbS5zX2ZlYXR1cmVfaW5jb21wYXQgPSBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfSk9VUk5BTF9ERVY7CisJCWZzX3BhcmFtLnNfZmVhdHVyZV9jb21wYXQgPSAwOworCQlmc19wYXJhbS5zX2ZlYXR1cmVfcm9fY29tcGF0ICY9CisJCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfTUVUQURBVEFfQ1NVTTsKKyAJfQorCisJLyogQ2hlY2sgdGhlIHVzZXIncyBta2ZzIG9wdGlvbnMgZm9yIDY0Yml0ICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdCgmZnNfcGFyYW0pICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cygmZnNfcGFyYW0pKSB7CisJCXByaW50ZigiJXMiLCBfKCJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgIgorCQkJICAgICAgICJmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCisJLyogU2V0IGZpcnN0IG1ldGEgYmxvY2tncm91cCB2aWEgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgKi8KKwkvKiAodGhpcyBpcyBtb3N0bHkgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcykgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoJmZzX3BhcmFtKSAmJgorCSAgICAodG1wID0gZ2V0ZW52KCJNS0UyRlNfRklSU1RfTUVUQV9CRyIpKSkKKwkJZnNfcGFyYW0uc19maXJzdF9tZXRhX2JnID0gYXRvaSh0bXApOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoJmZzX3BhcmFtKSkgeworCQlpZiAoIWNsdXN0ZXJfc2l6ZSkKKwkJCWNsdXN0ZXJfc2l6ZSA9IGdldF9pbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLAorCQkJCQkJCSAgICAiY2x1c3Rlcl9zaXplIiwKKwkJCQkJCQkgICAgYmxvY2tzaXplKjE2KTsKKwkJZnNfcGFyYW0uc19sb2dfY2x1c3Rlcl9zaXplID0KKwkJCWludF9sb2cyKGNsdXN0ZXJfc2l6ZSA+PiBFWFQyX01JTl9DTFVTVEVSX0xPR19TSVpFKTsKKwkJaWYgKGZzX3BhcmFtLnNfbG9nX2NsdXN0ZXJfc2l6ZSAmJgorCQkgICAgZnNfcGFyYW0uc19sb2dfY2x1c3Rlcl9zaXplIDwgZnNfcGFyYW0uc19sb2dfYmxvY2tfc2l6ZSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlICIKKwkJCQkgICJzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJfSBlbHNlIGlmIChjbHVzdGVyX3NpemUpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJzcGVjaWZ5aW5nIGEgY2x1c3RlciBzaXplIHJlcXVpcmVzIHRoZSAiCisJCQkgICJiaWdhbGxvYyBmZWF0dXJlIikpOworCQlleGl0KDEpOworCX0gZWxzZQorCQlmc19wYXJhbS5zX2xvZ19jbHVzdGVyX3NpemUgPSBmc19wYXJhbS5zX2xvZ19ibG9ja19zaXplOworCisJaWYgKGlub2RlX3JhdGlvID09IDApIHsKKwkJaW5vZGVfcmF0aW8gPSBnZXRfaW50X2Zyb21fcHJvZmlsZShmc190eXBlcywgImlub2RlX3JhdGlvIiwKKwkJCQkJCSAgIDgxOTIpOworCQlpZiAoaW5vZGVfcmF0aW8gPCBibG9ja3NpemUpCisJCQlpbm9kZV9yYXRpbyA9IGJsb2Nrc2l6ZTsKKwkJaWYgKGlub2RlX3JhdGlvIDwgRVhUMl9DTFVTVEVSX1NJWkUoJmZzX3BhcmFtKSkKKwkJCWlub2RlX3JhdGlvID0gRVhUMl9DTFVTVEVSX1NJWkUoJmZzX3BhcmFtKTsKKwl9CisKKyNpZmRlZiBIQVZFX0JMS0lEX1BST0JFX0dFVF9UT1BPTE9HWQorCXJldHZhbCA9IGdldF9kZXZpY2VfZ2VvbWV0cnkoZGV2aWNlX25hbWUsICZmc19wYXJhbSwKKwkJCQkgICAgICh1bnNpZ25lZCBpbnQpIHBzZWN0b3Jfc2l6ZSk7CisJaWYgKHJldHZhbCA8IDApIHsKKwkJZnByaW50ZihzdGRlcnIsCisJCQlfKCJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIpLAorCQkJZGV2aWNlX25hbWUpOworCX0gZWxzZSBpZiAocmV0dmFsKSB7CisJCXByaW50ZihfKCIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIpLAorCQkgICAgICAgZGV2aWNlX25hbWUsIHJldHZhbCk7CisJCXByaW50ZihfKCJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAiCisJCQkgICIocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iKSk7CisJfQorI2VuZGlmCisKKwludW1fYmFja3VwcyA9IGdldF9pbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAibnVtX2JhY2t1cF9zYiIsIDIpOworCisJYmxvY2tzaXplID0gRVhUMl9CTE9DS19TSVpFKCZmc19wYXJhbSk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgc19kZXNjX3NpemUgc28gdGhhdCB0aGUgcGFyc2VfZXh0ZW5kZWRfb3B0cygpCisJICogY2FuIGNvcnJlY3RseSBoYW5kbGUgIi1FIHJlc2l6ZT1OTk4iIGlmIHRoZSA2NC1iaXQgb3B0aW9uCisJICogaXMgc2V0LgorCSAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoJmZzX3BhcmFtKSkKKwkJZnNfcGFyYW0uc19kZXNjX3NpemUgPSBFWFQyX01JTl9ERVNDX1NJWkVfNjRCSVQ7CisKKwkvKiBUaGlzIGNoZWNrIHNob3VsZCBoYXBwZW4gYmV5b25kIHRoZSBsYXN0IGFzc2lnbm1lbnQgdG8gYmxvY2tzaXplICovCisJaWYgKGJsb2Nrc2l6ZSA+IHN5c19wYWdlX3NpemUpIHsKKwkJaWYgKCFmb3JjZSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJXygiJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpIiksCisJCQkJYmxvY2tzaXplLCBzeXNfcGFnZV9zaXplKTsKKwkJCXByb2NlZWRfcXVlc3Rpb24ocHJvY2VlZF9kZWxheSk7CisJCX0KKwkJZnByaW50ZihzdGRlcnIsIF8oIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAiCisJCQkJICAiKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIiksCisJCQlibG9ja3NpemUsIHN5c19wYWdlX3NpemUpOworCX0KKworCS8qIE1ldGFkYXRhIGNoZWNrc3VtbWluZyB3YXNuJ3QgdG90YWxseSBzdGFibGUgYmVmb3JlIDMuMTguICovCisJaWYgKGlzX2JlZm9yZV9saW51eF92ZXIoMywgMTgsIDApICYmCisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKCZmc19wYXJhbSkpCisJCWZwcmludGYoc3RkZXJyLCBfKCJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yICIKKwkJCSJpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhIGFuZCBqb3VybmFsICIKKwkJCSJjaGVja3N1bSBmZWF0dXJlcy5cbiIpKTsKKworCS8qCisJICogT24gbmV3ZXIga2VybmVscyB3ZSBkbyBoYXZlIGxhenlfaXRhYmxlX2luaXQgc3VwcG9ydC4gU28gcGljayB0aGUKKwkgKiByaWdodCBkZWZhdWx0IGluIGNhc2UgZXh0NCBtb2R1bGUgaXMgbm90IGxvYWRlZC4KKwkgKi8KKwlpZiAoaXNfYmVmb3JlX2xpbnV4X3ZlcigyLCA2LCAzNykpCisJCWxhenlfaXRhYmxlX2luaXQgPSAwOworCWVsc2UKKwkJbGF6eV9pdGFibGVfaW5pdCA9IDE7CisKKwlpZiAoYWNjZXNzKCIvc3lzL2ZzL2V4dDQvZmVhdHVyZXMvbGF6eV9pdGFibGVfaW5pdCIsIFJfT0spID09IDApCisJCWxhenlfaXRhYmxlX2luaXQgPSAxOworCisJbGF6eV9pdGFibGVfaW5pdCA9IGdldF9ib29sX2Zyb21fcHJvZmlsZShmc190eXBlcywKKwkJCQkJCSAibGF6eV9pdGFibGVfaW5pdCIsCisJCQkJCQkgbGF6eV9pdGFibGVfaW5pdCk7CisJZGlzY2FyZCA9IGdldF9ib29sX2Zyb21fcHJvZmlsZShmc190eXBlcywgImRpc2NhcmQiICwgZGlzY2FyZCk7CisJam91cm5hbF9mbGFncyB8PSBnZXRfYm9vbF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsCisJCQkJCSAgICAgICAibGF6eV9qb3VybmFsX2luaXQiLCAwKSA/CisJCQkJCSAgICAgICBFWFQyX01LSk9VUk5BTF9MQVpZSU5JVCA6IDA7CisJam91cm5hbF9mbGFncyB8PSBFWFQyX01LSk9VUk5BTF9OT19NTlRfQ0hFQ0s7CisKKwlpZiAoIWpvdXJuYWxfbG9jYXRpb25fc3RyaW5nKQorCQlqb3VybmFsX2xvY2F0aW9uX3N0cmluZyA9IGdldF9zdHJpbmdfZnJvbV9wcm9maWxlKGZzX3R5cGVzLAorCQkJCQkJImpvdXJuYWxfbG9jYXRpb24iLCAiIik7CisJaWYgKChqb3VybmFsX2xvY2F0aW9uID09IH4wVUxMKSAmJiBqb3VybmFsX2xvY2F0aW9uX3N0cmluZyAmJgorCSAgICAqam91cm5hbF9sb2NhdGlvbl9zdHJpbmcpCisJCWpvdXJuYWxfbG9jYXRpb24gPSBwYXJzZV9udW1fYmxvY2tzMihqb3VybmFsX2xvY2F0aW9uX3N0cmluZywKKwkJCQkJCWZzX3BhcmFtLnNfbG9nX2Jsb2NrX3NpemUpOworCWZyZWUoam91cm5hbF9sb2NhdGlvbl9zdHJpbmcpOworCisJcGFja2VkX21ldGFfYmxvY2tzID0gZ2V0X2Jvb2xfZnJvbV9wcm9maWxlKGZzX3R5cGVzLAorCQkJCQkJICAgInBhY2tlZF9tZXRhX2Jsb2NrcyIsIDApOworCWlmIChwYWNrZWRfbWV0YV9ibG9ja3MpCisJCWpvdXJuYWxfbG9jYXRpb24gPSAwOworCisJLyogR2V0IG9wdGlvbnMgZnJvbSBwcm9maWxlICovCisJZm9yIChjcHAgPSBmc190eXBlczsgKmNwcDsgY3BwKyspIHsKKwkJdG1wID0gTlVMTDsKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKHByb2ZpbGUsICJmc190eXBlcyIsICpjcHAsICJvcHRpb25zIiwgIiIsICZ0bXApOworCQkJaWYgKHRtcCAmJiAqdG1wKQorCQkJCXBhcnNlX2V4dGVuZGVkX29wdHMoJmZzX3BhcmFtLCB0bXApOworCQkJZnJlZSh0bXApOworCX0KKworCWlmIChleHRlbmRlZF9vcHRzKQorCQlwYXJzZV9leHRlbmRlZF9vcHRzKCZmc19wYXJhbSwgZXh0ZW5kZWRfb3B0cyk7CisKKwlpZiAoZXhwbGljaXRfZnNzaXplID09IDAgJiYgb2Zmc2V0ID4gMCkgeworCQlmc19ibG9ja3NfY291bnQgLT0gb2Zmc2V0IC8gRVhUMl9CTE9DS19TSVpFKCZmc19wYXJhbSk7CisJCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KCZmc19wYXJhbSwgZnNfYmxvY2tzX2NvdW50KTsKKwkJZnByaW50ZihzdGRlcnIsCisJCQlfKCJcbldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiAiCisJCQkgICJleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorCQkJICAiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzICIKKwkJCSAgImJ1dCB0aGlzIG1pZ2h0XG4iCisJCQkgICJub3QgYmUgd2hhdCB5b3Ugd2FudC5cblxuIiksCisJCQkodW5zaWduZWQgbG9uZyBsb25nKSBmc19ibG9ja3NfY291bnQpOworCX0KKworCS8qIERvbid0IGFsbG93IHVzZXIgdG8gc2V0IGJvdGggbWV0YWRhdGFfY3N1bSBhbmQgdW5pbml0X2JnIGJpdHMuICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKCZmc19wYXJhbSkgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2dkdF9jc3VtKCZmc19wYXJhbSkpCisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2dkdF9jc3VtKCZmc19wYXJhbSk7CisKKwkvKiBDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKCZmc19wYXJhbSkgJiYKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9leHRlbnRzKCZmc19wYXJhbSkpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQlfKCJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCAiCisJCQkgICJleHRlbnRzIGZlYXR1cmUiKSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKCZmc19wYXJhbSkgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX3Jlc2l6ZV9pbm9kZSgmZnNfcGFyYW0pKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnICIKKwkJCQkJImZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKwkJCQkJIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgIgorCQkJCQkic2ltdWx0YW5lb3VzbHkuXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKCFxdWlldCAmJiBleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoJmZzX3BhcmFtKSkKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsIF8oIlxuV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgIgorCQkJCSAgInN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisJCQkJICAiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvIgorCQkJCSAgImluZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuXG4iKSk7CisKKwkvKgorCSAqIFNpbmNlIHNwYXJzZV9zdXBlciBpcyB0aGUgZGVmYXVsdCwgd2Ugd291bGQgb25seSBoYXZlIGEgcHJvYmxlbQorCSAqIGhlcmUgaWYgaXQgd2FzIGV4cGxpY2l0bHkgZGlzYWJsZWQuCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9yZXNpemVfaW5vZGUoJmZzX3BhcmFtKSAmJgorCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX3NwYXJzZV9zdXBlcigmZnNfcGFyYW0pKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJXygicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCAiCisJCQkgICJvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iKSk7CisJCWV4aXQoMSk7CisJfQorCisJaWYgKGZzX3BhcmFtLnNfYmxvY2tzX3Blcl9ncm91cCkgeworCQlpZiAoZnNfcGFyYW0uc19ibG9ja3NfcGVyX2dyb3VwIDwgMjU2IHx8CisJCSAgICBmc19wYXJhbS5zX2Jsb2Nrc19wZXJfZ3JvdXAgPiA4ICogKHVuc2lnbmVkKSBibG9ja3NpemUpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCV8oImJsb2NrcyBwZXIgZ3JvdXAgY291bnQgb3V0IG9mIHJhbmdlIikpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCS8qCisJICogSWYgdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgZW5hYmxlZCwgdGhlbiB0aGUgLWcgb3B0aW9uIHdpbGwKKwkgKiBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgY2x1c3RlcnMgcGVyIGdyb3VwLgorCSAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoJmZzX3BhcmFtKSkgeworCQlmc19wYXJhbS5zX2NsdXN0ZXJzX3Blcl9ncm91cCA9IGZzX3BhcmFtLnNfYmxvY2tzX3Blcl9ncm91cDsKKwkJZnNfcGFyYW0uc19ibG9ja3NfcGVyX2dyb3VwID0gMDsKKwl9CisKKwlpZiAoaW5vZGVfc2l6ZSA9PSAwKQorCQlpbm9kZV9zaXplID0gZ2V0X2ludF9mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJpbm9kZV9zaXplIiwgMCk7CisJaWYgKCFmbGV4X2JnX3NpemUgJiYgZXh0MmZzX2hhc19mZWF0dXJlX2ZsZXhfYmcoJmZzX3BhcmFtKSkKKwkJZmxleF9iZ19zaXplID0gZ2V0X3VpbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLAorCQkJCQkJICAgICAiZmxleF9iZ19zaXplIiwgMTYpOworCWlmIChmbGV4X2JnX3NpemUpIHsKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZygmZnNfcGFyYW0pKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgIiVzIiwKKwkJCQlfKCJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvICIKKwkJCQkgICJmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiKSk7CisJCQlleGl0KDEpOworCQl9CisJCWZzX3BhcmFtLnNfbG9nX2dyb3Vwc19wZXJfZmxleCA9IGludF9sb2cyKGZsZXhfYmdfc2l6ZSk7CisJfQorCisJaWYgKGlub2RlX3NpemUgJiYgZnNfcGFyYW0uc19yZXZfbGV2ZWwgPj0gRVhUMl9EWU5BTUlDX1JFVikgeworCQlpZiAoaW5vZGVfc2l6ZSA8IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSB8fAorCQkgICAgaW5vZGVfc2l6ZSA+IEVYVDJfQkxPQ0tfU0laRSgmZnNfcGFyYW0pIHx8CisJCSAgICBpbm9kZV9zaXplICYgKGlub2RlX3NpemUgLSAxKSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJXygiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIpLAorCQkJCWlub2RlX3NpemUsIEVYVDJfR09PRF9PTERfSU5PREVfU0laRSwKKwkJCQlibG9ja3NpemUpOworCQkJZXhpdCgxKTsKKwkJfQorCQlmc19wYXJhbS5zX2lub2RlX3NpemUgPSBpbm9kZV9zaXplOworCX0KKworCS8qCisJICogSWYgaW5vZGUgc2l6ZSBpcyAxMjggYW5kIGlubGluZSBkYXRhIGlzIGVuYWJsZWQsIHdlIG5lZWQKKwkgKiB0byBub3RpZnkgdXNlcnMgdGhhdCBpbmxpbmUgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWZ1bC4KKwkgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2lubGluZV9kYXRhKCZmc19wYXJhbSkgJiYKKwkgICAgZnNfcGFyYW0uc19pbm9kZV9zaXplID09IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCV8oIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyAiCisJCQkgICJzcGVjaWZ5IGxhcmdlciBzaXplIiksCisJCQlmc19wYXJhbS5zX2lub2RlX3NpemUpOworCQlleGl0KDEpOworCX0KKworCS8qCisJICogSWYgaW5vZGUgc2l6ZSBpcyAxMjggYW5kIHByb2plY3QgcXVvdGEgaXMgZW5hYmxlZCwgd2UgbmVlZAorCSAqIHRvIG5vdGlmeSB1c2VycyB0aGF0IHByb2plY3QgSUQgd2lsbCBuZXZlciBiZSB1c2VmdWwuCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9wcm9qZWN0KCZmc19wYXJhbSkgJiYKKwkgICAgZnNfcGFyYW0uc19pbm9kZV9zaXplID09IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCV8oIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7ICIKKwkJCSAgInNwZWNpZnkgbGFyZ2VyIHNpemUiKSwKKwkJCWZzX3BhcmFtLnNfaW5vZGVfc2l6ZSk7CisJCWV4aXQoMSk7CisJfQorCisJLyogTWFrZSBzdXJlIG51bWJlciBvZiBpbm9kZXMgc3BlY2lmaWVkIHdpbGwgZml0IGluIDMyIGJpdHMgKi8KKwlpZiAobnVtX2lub2RlcyA9PSAwKSB7CisJCXVuc2lnbmVkIGxvbmcgbG9uZyBuOworCQluID0gZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pICogYmxvY2tzaXplIC8gaW5vZGVfcmF0aW87CisJCWlmIChuID4gTUFYXzMyX05VTSkgeworCQkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV82NGJpdCgmZnNfcGFyYW0pKQorCQkJCW51bV9pbm9kZXMgPSBNQVhfMzJfTlVNOworCQkJZWxzZSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlICIKKwkJCQkJICAiaW5vZGUgcmF0aW8/IiksIG4pOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwl9IGVsc2UgaWYgKG51bV9pbm9kZXMgPiBNQVhfMzJfTlVNKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJXygidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIiksCisJCQkgIG51bV9pbm9kZXMpOworCQlleGl0KDEpOworCX0KKwkvKgorCSAqIENhbGN1bGF0ZSBudW1iZXIgb2YgaW5vZGVzIGJhc2VkIG9uIHRoZSBpbm9kZSByYXRpbworCSAqLworCWZzX3BhcmFtLnNfaW5vZGVzX2NvdW50ID0gbnVtX2lub2RlcyA/IG51bV9pbm9kZXMgOgorCQkoZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pICogYmxvY2tzaXplKSAvIGlub2RlX3JhdGlvOworCisJaWYgKCgoKHVuc2lnbmVkIGxvbmcgbG9uZylmc19wYXJhbS5zX2lub2Rlc19jb3VudCkgKgorCSAgICAgKGlub2RlX3NpemUgPyBpbm9kZV9zaXplIDogRVhUMl9HT09EX09MRF9JTk9ERV9TSVpFKSkgPj0KKwkgICAgKChleHQyZnNfYmxvY2tzX2NvdW50KCZmc19wYXJhbSkpICoKKwkgICAgIEVYVDJfQkxPQ0tfU0laRSgmZnNfcGFyYW0pKSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgXygiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICIKKwkJCQkJICAiKCV1KSB0b28gYmlnIGZvciBhXG5cdCIKKwkJCQkJICAiZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCAiCisJCQkJCSAgInNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcblx0IgorCQkJCQkgICJvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIiksCisJCQlpbm9kZV9zaXplID8gaW5vZGVfc2l6ZSA6IEVYVDJfR09PRF9PTERfSU5PREVfU0laRSwKKwkJCWZzX3BhcmFtLnNfaW5vZGVzX2NvdW50LAorCQkJKHVuc2lnbmVkIGxvbmcgbG9uZykgZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKgorCSAqIENhbGN1bGF0ZSBudW1iZXIgb2YgYmxvY2tzIHRvIHJlc2VydmUKKwkgKi8KKwlleHQyZnNfcl9ibG9ja3NfY291bnRfc2V0KCZmc19wYXJhbSwgcmVzZXJ2ZWRfcmF0aW8gKgorCQkJCSAgZXh0MmZzX2Jsb2Nrc19jb3VudCgmZnNfcGFyYW0pIC8gMTAwLjApOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIyKCZmc19wYXJhbSkpIHsKKwkJaWYgKG51bV9iYWNrdXBzID49IDEpCisJCQlmc19wYXJhbS5zX2JhY2t1cF9iZ3NbMF0gPSAxOworCQlpZiAobnVtX2JhY2t1cHMgPj0gMikKKwkJCWZzX3BhcmFtLnNfYmFja3VwX2Jnc1sxXSA9IH4wOworCX0KKworCWZyZWUoZnNfdHlwZSk7CisJZnJlZSh1c2FnZV90eXBlcyk7Cit9CisKK3N0YXRpYyBpbnQgc2hvdWxkX2RvX3VuZG8oY29uc3QgY2hhciAqbmFtZSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWlvX2NoYW5uZWwgY2hhbm5lbDsKKwlfX3UxNglzX21hZ2ljOworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrIHN1cGVyOworCWlvX21hbmFnZXIgbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwlpbnQgY3N1bV9mbGFnLCBmb3JjZV91bmRvOworCisJY3N1bV9mbGFnID0gZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oJmZzX3BhcmFtKSB8fAorCQkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2dkdF9jc3VtKCZmc19wYXJhbSk7CisJZm9yY2VfdW5kbyA9IGdldF9pbnRfZnJvbV9wcm9maWxlKGZzX3R5cGVzLCAiZm9yY2VfdW5kbyIsIDApOworCWlmICghZm9yY2VfdW5kbyAmJiAoIWNzdW1fZmxhZyB8fCAhbGF6eV9pdGFibGVfaW5pdCkpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gbWFuYWdlci0+b3BlbihuYW1lLCBJT19GTEFHX0VYQ0xVU0lWRSwgICZjaGFubmVsKTsKKwlpZiAocmV0dmFsKSB7CisJCS8qCisJCSAqIFdlIGRvbid0IGhhbmRsZSBlcnJvciBjYXNlcyBpbnN0ZWFkIHdlCisJCSAqIGRlY2xhcmUgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gZG9lc24ndCBleGlzdAorCQkgKiBhbmQgbGV0IHRoZSByZXN0IG9mIG1rZTJmcyB0YWtlIGNhcmUgb2YKKwkJICogZXJyb3IKKwkJICovCisJCXJldHZhbCA9IDA7CisJCWdvdG8gb3Blbl9lcnJfb3V0OworCX0KKworCWlvX2NoYW5uZWxfc2V0X2Jsa3NpemUoY2hhbm5lbCwgU1VQRVJCTE9DS19PRkZTRVQpOworCXJldHZhbCA9IGlvX2NoYW5uZWxfcmVhZF9ibGs2NChjaGFubmVsLCAxLCAtU1VQRVJCTE9DS19TSVpFLCAmc3VwZXIpOworCWlmIChyZXR2YWwpIHsKKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJfb3V0OworCX0KKworI2lmIGRlZmluZWQoV09SRFNfQklHRU5ESUFOKQorCXNfbWFnaWMgPSBleHQyZnNfc3dhYjE2KHN1cGVyLnNfbWFnaWMpOworI2Vsc2UKKwlzX21hZ2ljID0gc3VwZXIuc19tYWdpYzsKKyNlbmRpZgorCisJaWYgKHNfbWFnaWMgPT0gRVhUMl9TVVBFUl9NQUdJQykKKwkJcmV0dmFsID0gMTsKKworZXJyX291dDoKKwlpb19jaGFubmVsX2Nsb3NlKGNoYW5uZWwpOworCitvcGVuX2Vycl9vdXQ6CisKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgaW50IG1rZTJmc19zZXR1cF90ZGIoY29uc3QgY2hhciAqbmFtZSwgaW9fbWFuYWdlciAqaW9fcHRyKQoreworCWVycmNvZGVfdCByZXR2YWwgPSBFTk9NRU07CisJY2hhciAqdGRiX2RpciA9IE5VTEwsICp0ZGJfZmlsZSA9IE5VTEw7CisJY2hhciAqZGV2X25hbWUsICp0bXBfbmFtZTsKKwlpbnQgZnJlZV90ZGJfZGlyID0gMDsKKworCS8qIChyZSlvcGVuIGEgc3BlY2lmaWMgdW5kbyBmaWxlICovCisJaWYgKHVuZG9fZmlsZSAmJiB1bmRvX2ZpbGVbMF0gIT0gMCkgeworCQlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXIoKmlvX3B0cik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJKmlvX3B0ciA9IHVuZG9faW9fbWFuYWdlcjsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUodW5kb19maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyOworCQlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJCSAidXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisJCQkgIiAgICBlMnVuZG8gJXMgJXNcblxuIiksIHVuZG9fZmlsZSwgbmFtZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyoKKwkgKiBDb25maWd1cmF0aW9uIHZpYSBhIGNvbmYgZmlsZSB3b3VsZCBiZQorCSAqIG5pY2UKKwkgKi8KKwl0ZGJfZGlyID0gZ2V0ZW52KCJFMkZTUFJPR1NfVU5ET19ESVIiKTsKKwlpZiAoIXRkYl9kaXIpIHsKKwkJcHJvZmlsZV9nZXRfc3RyaW5nKHByb2ZpbGUsICJkZWZhdWx0cyIsCisJCQkJICAgInVuZG9fZGlyIiwgMCwgIi92YXIvbGliL2UyZnNwcm9ncyIsCisJCQkJICAgJnRkYl9kaXIpOworCQlmcmVlX3RkYl9kaXIgPSAxOworCX0KKworCWlmICghc3RyY21wKHRkYl9kaXIsICJub25lIikgfHwgKHRkYl9kaXJbMF0gPT0gMCkgfHwKKwkgICAgYWNjZXNzKHRkYl9kaXIsIFdfT0spKSB7CisJCWlmIChmcmVlX3RkYl9kaXIpCisJCQlmcmVlKHRkYl9kaXIpOworCQlyZXR1cm4gMDsKKwl9CisKKwl0bXBfbmFtZSA9IHN0cmR1cChuYW1lKTsKKwlpZiAoIXRtcF9uYW1lKQorCQlnb3RvIGVycm91dDsKKwlkZXZfbmFtZSA9IGJhc2VuYW1lKHRtcF9uYW1lKTsKKwl0ZGJfZmlsZSA9IG1hbGxvYyhzdHJsZW4odGRiX2RpcikgKyA4ICsgc3RybGVuKGRldl9uYW1lKSArIDcgKyAxKTsKKwlpZiAoIXRkYl9maWxlKSB7CisJCWZyZWUodG1wX25hbWUpOworCQlnb3RvIGVycm91dDsKKwl9CisJc3ByaW50Zih0ZGJfZmlsZSwgIiVzL21rZTJmcy0lcy5lMnVuZG8iLCB0ZGJfZGlyLCBkZXZfbmFtZSk7CisJZnJlZSh0bXBfbmFtZSk7CisKKwlpZiAoKHVubGluayh0ZGJfZmlsZSkgPCAwKSAmJiAoZXJybm8gIT0gRU5PRU5UKSkgeworCQlyZXR2YWwgPSBlcnJubzsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCV8oIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiKSwgdGRiX2ZpbGUpOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXIoKmlvX3B0cik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJKmlvX3B0ciA9IHVuZG9faW9fbWFuYWdlcjsKKwlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNrdXBfZmlsZSh0ZGJfZmlsZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcHJpbnRmKF8oIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSAiCisJCSAidXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisJCSAiICAgIGUydW5kbyAlcyAlc1xuXG4iKSwgdGRiX2ZpbGUsIG5hbWUpOworCisJaWYgKGZyZWVfdGRiX2RpcikKKwkJZnJlZSh0ZGJfZGlyKTsKKwlmcmVlKHRkYl9maWxlKTsKKwlyZXR1cm4gMDsKKworZXJyb3V0OgorCWlmIChmcmVlX3RkYl9kaXIpCisJCWZyZWUodGRiX2Rpcik7CisJZnJlZSh0ZGJfZmlsZSk7CitlcnI6CisJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJXygid2hpbGUgdHJ5aW5nIHRvIHNldHVwIHVuZG8gZmlsZVxuIikpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQgbWtlMmZzX2Rpc2NhcmRfZGV2aWNlKGV4dDJfZmlsc3lzIGZzKQoreworCXN0cnVjdCBleHQyZnNfbnVtZXJpY19wcm9ncmVzc19zdHJ1Y3QgcHJvZ3Jlc3M7CisJYmxrNjRfdCBibG9ja3MgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJYmxrNjRfdCBjb3VudCA9IERJU0NBUkRfU1RFUF9NQjsKKwlibGs2NF90IGN1cjsKKwlpbnQgcmV0dmFsID0gMDsKKworCS8qCisJICogTGV0J3MgdHJ5IGlmIGRpc2NhcmQgcmVhbGx5IHdvcmtzIG9uIHRoZSBkZXZpY2UsIHNvCisJICogd2UgZG8gbm90IHByaW50IG51bWVyaWMgcHJvZ3Jlc3MgcmVzdWx0aW5nIGluIGZhaWx1cmUKKwkgKiBhZnRlcndhcmRzLgorCSAqLworCXJldHZhbCA9IGlvX2NoYW5uZWxfZGlzY2FyZChmcy0+aW8sIDAsIGZzLT5ibG9ja3NpemUpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisJY3VyID0gZnMtPmJsb2Nrc2l6ZTsKKworCWNvdW50ICo9ICgxMDI0ICogMTAyNCk7CisJY291bnQgLz0gZnMtPmJsb2Nrc2l6ZTsKKworCWV4dDJmc19udW1lcmljX3Byb2dyZXNzX2luaXQoZnMsICZwcm9ncmVzcywKKwkJCQkgICAgIF8oIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIiksCisJCQkJICAgICBibG9ja3MpOworCXdoaWxlIChjdXIgPCBibG9ja3MpIHsKKwkJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfdXBkYXRlKGZzLCAmcHJvZ3Jlc3MsIGN1cik7CisKKwkJaWYgKGN1ciArIGNvdW50ID4gYmxvY2tzKQorCQkJY291bnQgPSBibG9ja3MgLSBjdXI7CisKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9kaXNjYXJkKGZzLT5pbywgY3VyLCBjb3VudCk7CisJCWlmIChyZXR2YWwpCisJCQlicmVhazsKKwkJY3VyICs9IGNvdW50OworCX0KKworCWlmIChyZXR2YWwpIHsKKwkJZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3NfY2xvc2UoZnMsICZwcm9ncmVzcywKKwkJCQkgICAgICBfKCJmYWlsZWQgLSAiKSk7CisJCWlmICghcXVpZXQpCisJCQlwcmludGYoIiVzXG4iLGVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJfSBlbHNlCisJCWV4dDJmc19udW1lcmljX3Byb2dyZXNzX2Nsb3NlKGZzLCAmcHJvZ3Jlc3MsCisJCQkJICAgICAgXygiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIpKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyB2b2lkIGZpeF9jbHVzdGVyX2JnX2NvdW50cyhleHQyX2ZpbHN5cyBmcykKK3sKKwlibGs2NF90CQlibG9jaywgbnVtX2Jsb2NrcywgbGFzdF9ibG9jaywgbmV4dDsKKwlibGs2NF90CQl0b3RfZnJlZSA9IDA7CisJZXJyY29kZV90CXJldHZhbDsKKwlkZ3JwX3QJCWdyb3VwID0gMDsKKwlpbnQJCWdycF9mcmVlID0gMDsKKworCW51bV9ibG9ja3MgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJbGFzdF9ibG9jayA9IGV4dDJmc19ncm91cF9sYXN0X2Jsb2NrMihmcywgZ3JvdXApOworCWJsb2NrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJd2hpbGUgKGJsb2NrIDwgbnVtX2Jsb2NrcykgeworCQlyZXR2YWwgPSBleHQyZnNfZmluZF9maXJzdF96ZXJvX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwKKwkJCQkJCWJsb2NrLCBsYXN0X2Jsb2NrLCAmbmV4dCk7CisJCWlmIChyZXR2YWwgPT0gMCkKKwkJCWJsb2NrID0gbmV4dDsKKwkJZWxzZSB7CisJCQlibG9jayA9IGxhc3RfYmxvY2sgKyAxOworCQkJZ290byBuZXh0X2JnOworCQl9CisKKwkJcmV0dmFsID0gZXh0MmZzX2ZpbmRfZmlyc3Rfc2V0X2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwKKwkJCQkJCWJsb2NrLCBsYXN0X2Jsb2NrLCAmbmV4dCk7CisJCWlmIChyZXR2YWwpCisJCQluZXh0ID0gbGFzdF9ibG9jayArIDE7CisJCWdycF9mcmVlICs9IEVYVDJGU19OVU1fQjJDKGZzLCBuZXh0IC0gYmxvY2spOworCQl0b3RfZnJlZSArPSBuZXh0IC0gYmxvY2s7CisJCWJsb2NrID0gbmV4dDsKKworCQlpZiAoYmxvY2sgPiBsYXN0X2Jsb2NrKSB7CisJCW5leHRfYmc6CisJCQlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBncm91cCwgZ3JwX2ZyZWUpOworCQkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKwkJCWdycF9mcmVlID0gMDsKKwkJCWdyb3VwKys7CisJCQlsYXN0X2Jsb2NrID0gZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGZzLCBncm91cCk7CisJCX0KKwl9CisJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsIHRvdF9mcmVlKTsKK30KKworc3RhdGljIGludCBjcmVhdGVfcXVvdGFfaW5vZGVzKGV4dDJfZmlsc3lzIGZzKQoreworCXF1b3RhX2N0eF90IHFjdHg7CisJZXJyY29kZV90IHJldHZhbDsKKworCXJldHZhbCA9IHF1b3RhX2luaXRfY29udGV4dCgmcWN0eCwgZnMsIFFVT1RBX0FMTF9CSVQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCV8oIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IikpOworCQlleGl0KDEpOworCX0KKwlxdW90YV9jb21wdXRlX3VzYWdlKHFjdHgpOworCXJldHZhbCA9IHF1b3RhX3dyaXRlX2lub2RlKHFjdHgsIHF1b3RhdHlwZV9iaXRzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQlfKCJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIpKTsKKwkJZXhpdCgxKTsKKwl9CisJcXVvdGFfcmVsZWFzZV9jb250ZXh0KCZxY3R4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHNldF9lcnJvcl9iZWhhdmlvcihleHQyX2ZpbHN5cyBmcykKK3sKKwljaGFyCSphcmcgPSBOVUxMOworCXNob3J0CWVycm9ycyA9IGZzLT5zdXBlci0+c19lcnJvcnM7CisKKwlhcmcgPSBnZXRfc3RyaW5nX2Zyb21fcHJvZmlsZShmc190eXBlcywgImVycm9ycyIsIE5VTEwpOworCWlmIChhcmcgPT0gTlVMTCkKKwkJZ290byB0cnlfdXNlcjsKKworCWlmIChzdHJjbXAoYXJnLCAiY29udGludWUiKSA9PSAwKQorCQllcnJvcnMgPSBFWFQyX0VSUk9SU19DT05USU5VRTsKKwllbHNlIGlmIChzdHJjbXAoYXJnLCAicmVtb3VudC1ybyIpID09IDApCisJCWVycm9ycyA9IEVYVDJfRVJST1JTX1JPOworCWVsc2UgaWYgKHN0cmNtcChhcmcsICJwYW5pYyIpID09IDApCisJCWVycm9ycyA9IEVYVDJfRVJST1JTX1BBTklDOworCWVsc2UgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCV8oImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiKSwKKwkJCWFyZyk7CisJCWZyZWUoYXJnKTsKKwkJcmV0dXJuIEVYVDJfRVRfSU5WQUxJRF9BUkdVTUVOVDsKKwl9CisJZnJlZShhcmcpOworCit0cnlfdXNlcjoKKwlpZiAoZXJyb3JzX2JlaGF2aW9yKQorCQllcnJvcnMgPSBlcnJvcnNfYmVoYXZpb3I7CisKKwlmcy0+c3VwZXItPnNfZXJyb3JzID0gZXJyb3JzOworCXJldHVybiAwOworfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsID0gMDsKKwlleHQyX2ZpbHN5cwlmczsKKwliYWRibG9ja3NfbGlzdAliYl9saXN0ID0gMDsKKwl1bnNpZ25lZCBpbnQJam91cm5hbF9ibG9ja3MgPSAwOworCXVuc2lnbmVkIGludAlpLCBjaGVja2ludGVydmFsOworCWludAkJbWF4X21udF9jb3VudDsKKwlpbnQJCXZhbCwgaGFzaF9hbGc7CisJaW50CQlmbGFnczsKKwlpbnQJCW9sZF9iaXRtYXBzOworCWlvX21hbmFnZXIJaW9fcHRyOworCWNoYXIJCW9wdF9zdHJpbmdbNDBdOworCWNoYXIJCSpoYXNoX2FsZ19zdHI7CisJaW50CQlpdGFibGVfemVyb2VkID0gMDsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlQUlMoYXJnYywgYXJndik7CisKKyNpZmRlZiBDT05GSUdfVEVTVElPX0RFQlVHCisJaWYgKGdldGVudigiVEVTVF9JT19GTEFHUyIpIHx8IGdldGVudigiVEVTVF9JT19CTE9DSyIpKSB7CisJCWlvX3B0ciA9IHRlc3RfaW9fbWFuYWdlcjsKKwkJdGVzdF9pb19iYWNraW5nX21hbmFnZXIgPSB1bml4X2lvX21hbmFnZXI7CisJfSBlbHNlCisjZW5kaWYKKwkJaW9fcHRyID0gdW5peF9pb19tYW5hZ2VyOworCisJaWYgKHVuZG9fZmlsZSAhPSBOVUxMIHx8IHNob3VsZF9kb191bmRvKGRldmljZV9uYW1lKSkgeworCQlyZXR2YWwgPSBta2UyZnNfc2V0dXBfdGRiKGRldmljZV9uYW1lLCAmaW9fcHRyKTsKKwkJaWYgKHJldHZhbCkKKwkJCWV4aXQoMSk7CisJfQorCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBzdXBlcmJsb2NrLi4uLgorCSAqLworCWZsYWdzID0gRVhUMl9GTEFHX0VYQ0xVU0lWRTsKKwlpZiAoZGlyZWN0X2lvKQorCQlmbGFncyB8PSBFWFQyX0ZMQUdfRElSRUNUX0lPOworCXByb2ZpbGVfZ2V0X2Jvb2xlYW4ocHJvZmlsZSwgIm9wdGlvbnMiLCAib2xkX2JpdG1hcHMiLCAwLCAwLAorCQkJICAgICZvbGRfYml0bWFwcyk7CisJaWYgKCFvbGRfYml0bWFwcykKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHXzY0QklUUzsKKwkvKgorCSAqIEJ5IGRlZmF1bHQsIHdlIHByaW50IGhvdyBtYW55IGlub2RlIHRhYmxlcyBvciBibG9jayBncm91cHMKKwkgKiBvciB3aGF0ZXZlciB3ZSd2ZSB3cml0dGVuIHNvIGZhci4gIFRoZSBxdWlldCBmbGFnIGRpc2FibGVzCisJICogdGhpcywgYWxvbmcgd2l0aCBhIGxvdCBvZiBvdGhlciBvdXRwdXQuCisJICovCisJaWYgKCFxdWlldCkKKwkJZmxhZ3MgfD0gRVhUMl9GTEFHX1BSSU5UX1BST0dSRVNTOworCXJldHZhbCA9IGV4dDJmc19pbml0aWFsaXplKGRldmljZV9uYW1lLCBmbGFncywgJmZzX3BhcmFtLCBpb19wdHIsICZmcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGRldmljZV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siKSk7CisJCWV4aXQoMSk7CisJfQorCWZzLT5wcm9ncmVzc19vcHMgPSAmZXh0MmZzX251bWVyaWNfcHJvZ3Jlc3Nfb3BzOworCisJLyogU2V0IHRoZSBlcnJvciBiZWhhdmlvciAqLworCXJldHZhbCA9IHNldF9lcnJvcl9iZWhhdmlvcihmcyk7CisJaWYgKHJldHZhbCkKKwkJdXNhZ2UoKTsKKworCS8qIENoZWNrIHRoZSB1c2VyJ3MgbWtmcyBvcHRpb25zIGZvciBtZXRhZGF0YSBjaGVja3N1bW1pbmcgKi8KKwlpZiAoIXF1aWV0ICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9kZXYoZnMtPnN1cGVyKSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKSB7CisJCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKSkKKwkJCXByaW50ZigiJXMiLAorCQkJICAgICAgIF8oIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50ICIKKwkJCQkgInRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzIGJsb2NrIG1hcHMgIgorCQkJCSAiY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgIgorCQkJCSAiY292ZXJhZ2Ugb2YgbWV0YWRhdGEgY2hlY2tzdW1taW5nLiAgIgorCQkJCSAiUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iKSk7CisJCWlmICghZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpCisJCQlwcmludGYoIiVzIiwKKwkJCSAgICAgICBfKCI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgIgorCQkJCSAiVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgdGhpcyBmZWF0dXJlICIKKwkJCQkgImVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gICIKKwkJCQkgIlBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIpKTsKKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2NzdW1fc2VlZChmcy0+c3VwZXIpICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKSB7CisJCXByaW50ZigiJXMiLCBfKCJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgIgorCQkJICAgICAgICJyZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iKSk7CisJCWV4aXQoMSk7CisJfQorCisJLyogQ2FsY3VsYXRlIGpvdXJuYWwgYmxvY2tzICovCisJaWYgKCFqb3VybmFsX2RldmljZSAmJiAoKGpvdXJuYWxfc2l6ZSkgfHwKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoJmZzX3BhcmFtKSkpCisJCWpvdXJuYWxfYmxvY2tzID0gZmlndXJlX2pvdXJuYWxfc2l6ZShqb3VybmFsX3NpemUsIGZzKTsKKworCXNwcmludGYob3B0X3N0cmluZywgInRkYl9kYXRhX3NpemU9JWQiLCBmcy0+YmxvY2tzaXplIDw9IDQwOTYgPworCQkzMjc2OCA6IGZzLT5ibG9ja3NpemUgKiA4KTsKKwlpb19jaGFubmVsX3NldF9vcHRpb25zKGZzLT5pbywgb3B0X3N0cmluZyk7CisJaWYgKG9mZnNldCkgeworCQlzcHJpbnRmKG9wdF9zdHJpbmcsICJvZmZzZXQ9JWxsdSIsIG9mZnNldCk7CisJCWlvX2NoYW5uZWxfc2V0X29wdGlvbnMoZnMtPmlvLCBvcHRfc3RyaW5nKTsKKwl9CisKKwkvKiBDYW4ndCB1bmRvIGRpc2NhcmQgLi4uICovCisJaWYgKCFub2FjdGlvbiAmJiBkaXNjYXJkICYmIGRldl9zaXplICYmIChpb19wdHIgIT0gdW5kb19pb19tYW5hZ2VyKSkgeworCQlyZXR2YWwgPSBta2UyZnNfZGlzY2FyZF9kZXZpY2UoZnMpOworCQlpZiAoIXJldHZhbCAmJiBpb19jaGFubmVsX2Rpc2NhcmRfemVyb2VzX2RhdGEoZnMtPmlvKSkgeworCQkJaWYgKHZlcmJvc2UpCisJCQkJcHJpbnRmKCIlcyIsCisJCQkJICAgICAgIF8oIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAiCisJCQkJCSAiMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iKSk7CisJCQlsYXp5X2l0YWJsZV9pbml0ID0gMTsKKwkJCWl0YWJsZV96ZXJvZWQgPSAxOworCQkJemVyb19odWdlZmlsZSA9IDA7CisJCX0KKwl9CisKKwlpZiAoZnNfcGFyYW0uc19mbGFncyAmIEVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTKQorCQlmcy0+c3VwZXItPnNfZmxhZ3MgfD0gRVhUMl9GTEFHU19URVNUX0ZJTEVTWVM7CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZsZXhfYmcoJmZzX3BhcmFtKSB8fAorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfaHVnZV9maWxlKCZmc19wYXJhbSkgfHwKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2dkdF9jc3VtKCZmc19wYXJhbSkgfHwKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2Rpcl9ubGluaygmZnNfcGFyYW0pIHx8CisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKCZmc19wYXJhbSkgfHwKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlX2V4dHJhX2lzaXplKCZmc19wYXJhbSkpCisJCWZzLT5zdXBlci0+c19rYnl0ZXNfd3JpdHRlbiA9IDE7CisKKwkvKgorCSAqIFdpcGUgb3V0IHRoZSBvbGQgb24tZGlzayBzdXBlcmJsb2NrCisJICovCisJaWYgKCFub2FjdGlvbikKKwkJemFwX3NlY3RvcihmcywgMiwgNik7CisKKwkvKgorCSAqIFBhcnNlIG9yIGdlbmVyYXRlIGEgVVVJRCBmb3IgdGhlIGZpbGVzeXN0ZW0KKwkgKi8KKwlpZiAoZnNfdXVpZCkgeworCQlpZiAodXVpZF9wYXJzZShmc191dWlkLCBmcy0+c3VwZXItPnNfdXVpZCkgIT0wKSB7CisJCQljb21fZXJyKGRldmljZV9uYW1lLCAwLCAiY291bGQgbm90IHBhcnNlIFVVSUQ6ICVzXG4iLAorCQkJCWZzX3V1aWQpOworCQkJZXhpdCgxKTsKKwkJfQorCX0gZWxzZQorCQl1dWlkX2dlbmVyYXRlKGZzLT5zdXBlci0+c191dWlkKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfY3N1bV9zZWVkKGZzLT5zdXBlcikpCisJCWZzLT5zdXBlci0+c19jaGVja3N1bV9zZWVkID0gZXh0MmZzX2NyYzMyY19sZSh+MCwKKwkJCQlmcy0+c3VwZXItPnNfdXVpZCwgc2l6ZW9mKGZzLT5zdXBlci0+c191dWlkKSk7CisKKwlleHQyZnNfaW5pdF9jc3VtX3NlZWQoZnMpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBkaXJlY3RvcnkgaW5kZXggdmFyaWFibGVzCisJICovCisJaGFzaF9hbGdfc3RyID0gZ2V0X3N0cmluZ19mcm9tX3Byb2ZpbGUoZnNfdHlwZXMsICJoYXNoX2FsZyIsCisJCQkJCSAgICAgICAiaGFsZl9tZDQiKTsKKwloYXNoX2FsZyA9IGUycF9zdHJpbmcyaGFzaChoYXNoX2FsZ19zdHIpOworCWZyZWUoaGFzaF9hbGdfc3RyKTsKKwlmcy0+c3VwZXItPnNfZGVmX2hhc2hfdmVyc2lvbiA9IChoYXNoX2FsZyA+PSAwKSA/IGhhc2hfYWxnIDoKKwkJRVhUMl9IQVNIX0hBTEZfTUQ0OworCXV1aWRfZ2VuZXJhdGUoKHVuc2lnbmVkIGNoYXIgKikgZnMtPnN1cGVyLT5zX2hhc2hfc2VlZCk7CisKKwkvKgorCSAqIFBlcmlvZGljIGNoZWNrcyBjYW4gYmUgZW5hYmxlZC9kaXNhYmxlZCB2aWEgY29uZmlnIGZpbGUuCisJICogTm90ZSB3ZSBvdmVycmlkZSB0aGUga2VybmVsIGluY2x1ZGUgZmlsZSdzIGlkZWEgb2Ygd2hhdCB0aGUgZGVmYXVsdAorCSAqIGNoZWNrIGludGVydmFsIChuZXZlcikgc2hvdWxkIGJlLiAgSXQncyBhIGdvb2QgaWRlYSB0byBjaGVjayBhdAorCSAqIGxlYXN0ICpvY2Nhc2lvbmFsbHkqLCBzcGVjaWFsbHkgc2luY2Ugc2VydmVycyB3aWxsIG5ldmVyIHJhcmVseSBnZXQKKwkgKiB0byByZWJvb3QsIHNpbmNlIExpbnV4IGlzIHNvIHJvYnVzdCB0aGVzZSBkYXlzLiAgOi0pCisJICoKKwkgKiAxODAgZGF5cyAoc2l4IG1vbnRocykgc2VlbXMgbGlrZSBhIGdvb2QgdmFsdWUuCisJICovCisjaWZkZWYgRVhUMl9ERkxfQ0hFQ0tJTlRFUlZBTAorI3VuZGVmIEVYVDJfREZMX0NIRUNLSU5URVJWQUwKKyNlbmRpZgorI2RlZmluZSBFWFQyX0RGTF9DSEVDS0lOVEVSVkFMICg4NjQwMEwgKiAxODBMKQorCisJaWYgKGdldF9ib29sX2Zyb21fcHJvZmlsZShmc190eXBlcywgImVuYWJsZV9wZXJpb2RpY19mc2NrIiwgMCkpIHsKKwkJZnMtPnN1cGVyLT5zX2NoZWNraW50ZXJ2YWwgPSBFWFQyX0RGTF9DSEVDS0lOVEVSVkFMOworCQlmcy0+c3VwZXItPnNfbWF4X21udF9jb3VudCA9IEVYVDJfREZMX01BWF9NTlRfQ09VTlQ7CisJCS8qCisJCSAqIEFkZCAiaml0dGVyIiB0byB0aGUgc3VwZXJibG9jaydzIGNoZWNrIGludGVydmFsIHNvIHRoYXQgd2UKKwkJICogZG9uJ3QgY2hlY2sgYWxsIHRoZSBmaWxlc3lzdGVtcyBhdCB0aGUgc2FtZSB0aW1lLiAgV2UgdXNlIGEKKwkJICoga2x1ZGd5IGhhY2sgb2YgdXNpbmcgdGhlIFVVSUQgdG8gZGVyaXZlIGEgcmFuZG9tIGppdHRlciB2YWx1ZQorCQkgKi8KKwkJZm9yIChpID0gMCwgdmFsID0gMCA7IGkgPCBzaXplb2YoZnMtPnN1cGVyLT5zX3V1aWQpOyBpKyspCisJCQl2YWwgKz0gZnMtPnN1cGVyLT5zX3V1aWRbaV07CisJCWZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50ICs9IHZhbCAlIEVYVDJfREZMX01BWF9NTlRfQ09VTlQ7CisJfSBlbHNlCisJCWZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50ID0gLTE7CisKKwkvKgorCSAqIE92ZXJyaWRlIHRoZSBjcmVhdG9yIE9TLCBpZiBhcHBsaWNhYmxlCisJICovCisJaWYgKGNyZWF0b3Jfb3MgJiYgIXNldF9vcyhmcy0+c3VwZXIsIGNyZWF0b3Jfb3MpKSB7CisJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgMCwgXygidW5rbm93biBvcyAtICVzIiksIGNyZWF0b3Jfb3MpOworCQlleGl0KDEpOworCX0KKworCS8qCisJICogRm9yIHRoZSBIdXJkLCB3ZSB3aWxsIHR1cm4gb2ZmIGZpbGV0eXBlIHNpbmNlIGl0IGRvZXNuJ3QKKwkgKiBzdXBwb3J0IGl0LgorCSAqLworCWlmIChmcy0+c3VwZXItPnNfY3JlYXRvcl9vcyA9PSBFWFQyX09TX0hVUkQpCisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2ZpbGV0eXBlKGZzLT5zdXBlcik7CisKKwkvKgorCSAqIFNldCB0aGUgdm9sdW1lIGxhYmVsLi4uCisJICovCisJaWYgKHZvbHVtZV9sYWJlbCkgeworCQltZW1zZXQoZnMtPnN1cGVyLT5zX3ZvbHVtZV9uYW1lLCAwLAorCQkgICAgICAgc2l6ZW9mKGZzLT5zdXBlci0+c192b2x1bWVfbmFtZSkpOworCQlzdHJuY3B5KGZzLT5zdXBlci0+c192b2x1bWVfbmFtZSwgdm9sdW1lX2xhYmVsLAorCQkJc2l6ZW9mKGZzLT5zdXBlci0+c192b2x1bWVfbmFtZSkpOworCX0KKworCS8qCisJICogU2V0IHRoZSBsYXN0IG1vdW50IGRpcmVjdG9yeQorCSAqLworCWlmIChtb3VudF9kaXIpIHsKKwkJbWVtc2V0KGZzLT5zdXBlci0+c19sYXN0X21vdW50ZWQsIDAsCisJCSAgICAgICBzaXplb2YoZnMtPnN1cGVyLT5zX2xhc3RfbW91bnRlZCkpOworCQlzdHJuY3B5KGZzLT5zdXBlci0+c19sYXN0X21vdW50ZWQsIG1vdW50X2RpciwKKwkJCXNpemVvZihmcy0+c3VwZXItPnNfbGFzdF9tb3VudGVkKSk7CisJfQorCisJLyogU2V0IGN1cnJlbnQgZGVmYXVsdCBlbmNyeXB0aW9uIGFsZ29yaXRobXMgZm9yIGRhdGEgYW5kCisJICogZmlsZW5hbWUgZW5jcnlwdGlvbiAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZW5jcnlwdChmcy0+c3VwZXIpKSB7CisJCWZzLT5zdXBlci0+c19lbmNyeXB0X2FsZ29zWzBdID0KKwkJCUVYVDRfRU5DUllQVElPTl9NT0RFX0FFU18yNTZfWFRTOworCQlmcy0+c3VwZXItPnNfZW5jcnlwdF9hbGdvc1sxXSA9CisJCQlFWFQ0X0VOQ1JZUFRJT05fTU9ERV9BRVNfMjU2X0NUUzsKKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJZnMtPnN1cGVyLT5zX2NoZWNrc3VtX3R5cGUgPSBFWFQyX0NSQzMyQ19DSEtTVU07CisKKwlpZiAoIXF1aWV0IHx8IG5vYWN0aW9uKQorCQlzaG93X3N0YXRzKGZzKTsKKworCWlmIChub2FjdGlvbikKKwkJZXhpdCgwKTsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbF9kZXYoZnMtPnN1cGVyKSkgeworCQljcmVhdGVfam91cm5hbF9kZXYoZnMpOworCQlwcmludGYoIlxuIik7CisJCWV4aXQoZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKSA/IDEgOiAwKTsKKwl9CisKKwlpZiAoYmFkX2Jsb2Nrc19maWxlbmFtZSkKKwkJcmVhZF9iYl9maWxlKGZzLCAmYmJfbGlzdCwgYmFkX2Jsb2Nrc19maWxlbmFtZSk7CisJaWYgKGNmbGFnKQorCQl0ZXN0X2Rpc2soZnMsICZiYl9saXN0KTsKKwloYW5kbGVfYmFkX2Jsb2NrcyhmcywgYmJfbGlzdCk7CisKKwlmcy0+c3RyaWRlID0gZnNfc3RyaWRlID0gZnMtPnN1cGVyLT5zX3JhaWRfc3RyaWRlOworCWlmICghcXVpZXQpCisJCXByaW50ZigiJXMiLCBfKCJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIikpOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpICYmCisJICAgIHBhY2tlZF9tZXRhX2Jsb2NrcykKKwkJcmV0dmFsID0gcGFja2VkX2FsbG9jYXRlX3RhYmxlcyhmcyk7CisJZWxzZQorCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfdGFibGVzKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiKSk7CisJCWV4aXQoMSk7CisJfQorCWlmICghcXVpZXQpCisJCXByaW50ZigiJXMiLCBfKCJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIikpOworCisJcmV0dmFsID0gZXh0MmZzX2NvbnZlcnRfc3ViY2x1c3Rlcl9iaXRtYXAoZnMsICZmcy0+YmxvY2tfbWFwKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJcblx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAoc3VwZXJfb25seSkgeworCQljaGVja19wbGF1c2liaWxpdHkoZGV2aWNlX25hbWUsIENIRUNLX0ZTX0VYSVNULCBOVUxMKTsKKwkJcHJpbnRmKF8oIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIpLAorCQkgICAgICAgZGV2aWNlX25hbWUpOworCQlpZiAoIWZvcmNlKQorCQkJcHJvY2VlZF9xdWVzdGlvbihwcm9jZWVkX2RlbGF5KTsKKwkJZnMtPnN1cGVyLT5zX3N0YXRlIHw9IEVYVDJfRVJST1JfRlM7CisJCWZzLT5mbGFncyAmPSB+KEVYVDJfRkxBR19JQl9ESVJUWXxFWFQyX0ZMQUdfQkJfRElSVFkpOworCQkvKgorCQkgKiBUaGUgY29tbWFuZCAibWtlMmZzIC1TIiBpcyB1c2VkIHRvIHJlY292ZXIKKwkJICogY29ycnVwdGVkIGZpbGUgc3lzdGVtcywgc28gZG8gbm90IG1hcmsgYW55IG9mIHRoZQorCQkgKiBpbm9kZXMgYXMgdW51c2VkOyB3ZSB3YW50IGUyZnNjayB0byBjb25zaWRlciBhbGwKKwkJICogaW5vZGVzIGFzIHBvdGVudGlhbGx5IGNvbnRhaW5pbmcgcmVjb3ZlcmFibGUgZGF0YS4KKwkJICovCisJCWlmIChleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKQorCQkJCWV4dDJmc19iZ19pdGFibGVfdW51c2VkX3NldChmcywgaSwgMCk7CisJCX0KKwl9IGVsc2UgeworCQkvKiByc3YgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byAoNjRrQiBpcyBNRCBSQUlEIHNiIGFsaWdubWVudCkgKi8KKwkJYmxrNjRfdCByc3YgPSA2NTUzNiAvIGZzLT5ibG9ja3NpemU7CisJCWJsazY0X3QgYmxvY2tzID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCQlibGs2NF90IHN0YXJ0OworCQlibGs2NF90IHJldF9ibGs7CisKKyNpZmRlZiBaQVBfQk9PVEJMT0NLCisJCXphcF9zZWN0b3IoZnMsIDAsIDIpOworI2VuZGlmCisKKwkJLyoKKwkJICogV2lwZSBvdXQgYW55IG9sZCBNRCBSQUlEIChvciBvdGhlcikgbWV0YWRhdGEgYXQgdGhlIGVuZAorCQkgKiBvZiB0aGUgZGV2aWNlLiAgVGhpcyB3aWxsIGFsc28gdmVyaWZ5IHRoYXQgdGhlIGRldmljZSBpcworCQkgKiBhcyBsYXJnZSBhcyB3ZSB0aGluay4gIEJlIGNhcmVmdWwgd2l0aCB2ZXJ5IHNtYWxsIGRldmljZXMuCisJCSAqLworCQlzdGFydCA9IChibG9ja3MgJiB+KHJzdiAtIDEpKTsKKwkJaWYgKHN0YXJ0ID4gcnN2KQorCQkJc3RhcnQgLT0gcnN2OworCQlpZiAoc3RhcnQgPiAwKQorCQkJcmV0dmFsID0gZXh0MmZzX3plcm9fYmxvY2tzMihmcywgc3RhcnQsIGJsb2NrcyAtIHN0YXJ0LAorCQkJCQkJICAgICZyZXRfYmxrLCBOVUxMKTsKKworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCV8oIndoaWxlIHplcm9pbmcgYmxvY2sgJWxsdSBhdCBlbmQgb2YgZmlsZXN5c3RlbSIpLAorCQkJCXJldF9ibGspOworCQl9CisJCXdyaXRlX2lub2RlX3RhYmxlcyhmcywgbGF6eV9pdGFibGVfaW5pdCwgaXRhYmxlX3plcm9lZCk7CisJCWNyZWF0ZV9yb290X2Rpcihmcyk7CisJCWNyZWF0ZV9sb3N0X2FuZF9mb3VuZChmcyk7CisJCXJlc2VydmVfaW5vZGVzKGZzKTsKKwkJY3JlYXRlX2JhZF9ibG9ja19pbm9kZShmcywgYmJfbGlzdCk7CisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfcmVzaXplX2lub2RlKGZzLT5zdXBlcikpIHsKKwkJCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfcmVzaXplX2lub2RlKGZzKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKCJleHQyZnNfY3JlYXRlX3Jlc2l6ZV9pbm9kZSIsIHJldHZhbCwKKwkJCQkJIiVzIiwKKwkJCQlfKCJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIikpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwl9CisKKwlpZiAoam91cm5hbF9kZXZpY2UpIHsKKwkJZXh0Ml9maWxzeXMJamZzOworCisJCWlmICghY2hlY2tfcGxhdXNpYmlsaXR5KGpvdXJuYWxfZGV2aWNlLCBDSEVDS19CTE9DS19ERVYsCisJCQkJCU5VTEwpICYmICFmb3JjZSkKKwkJCXByb2NlZWRfcXVlc3Rpb24ocHJvY2VlZF9kZWxheSk7CisJCWNoZWNrX21vdW50KGpvdXJuYWxfZGV2aWNlLCBmb3JjZSwgXygiam91cm5hbCIpKTsKKworCQlyZXR2YWwgPSBleHQyZnNfb3Blbihqb3VybmFsX2RldmljZSwgRVhUMl9GTEFHX1JXfAorCQkJCSAgICAgRVhUMl9GTEFHX0pPVVJOQUxfREVWX09LLCAwLAorCQkJCSAgICAgZnMtPmJsb2Nrc2l6ZSwgdW5peF9pb19tYW5hZ2VyLCAmamZzKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIGRldmljZSAlc1xuIiksCisJCQkJam91cm5hbF9kZXZpY2UpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoIXF1aWV0KSB7CisJCQlwcmludGYoXygiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiKSwKKwkJCSAgICAgICBqb3VybmFsX2RldmljZSk7CisJCQlmZmx1c2goc3Rkb3V0KTsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfYWRkX2pvdXJuYWxfZGV2aWNlKGZzLCBqZnMpOworCQlpZihyZXR2YWwpIHsKKwkJCWNvbV9lcnIgKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCSBfKCJcblx0d2hpbGUgdHJ5aW5nIHRvIGFkZCBqb3VybmFsIHRvIGRldmljZSAlcyIpLAorCQkJCSBqb3VybmFsX2RldmljZSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmICghcXVpZXQpCisJCQlwcmludGYoIiVzIiwgXygiZG9uZVxuIikpOworCQlleHQyZnNfY2xvc2VfZnJlZSgmamZzKTsKKwkJZnJlZShqb3VybmFsX2RldmljZSk7CisJfSBlbHNlIGlmICgoam91cm5hbF9zaXplKSB8fAorCQkgICBleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbCgmZnNfcGFyYW0pKSB7CisJCWlmIChzdXBlcl9vbmx5KSB7CisJCQlwcmludGYoIiVzIiwgXygiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIpKTsKKwkJCWZzLT5zdXBlci0+c19qb3VybmFsX2ludW0gPSBFWFQyX0pPVVJOQUxfSU5POworCQkJZ290byBub19qb3VybmFsOworCQl9CisKKwkJaWYgKCFqb3VybmFsX2Jsb2NrcykgeworCQkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfam91cm5hbChmcy0+c3VwZXIpOworCQkJZ290byBub19qb3VybmFsOworCQl9CisJCWlmICghcXVpZXQpIHsKKwkJCXByaW50ZihfKCJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiKSwKKwkJCSAgICAgICBqb3VybmFsX2Jsb2Nrcyk7CisJCQlmZmx1c2goc3Rkb3V0KTsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfYWRkX2pvdXJuYWxfaW5vZGUyKGZzLCBqb3VybmFsX2Jsb2NrcywKKwkJCQkJCSAgIGpvdXJuYWxfbG9jYXRpb24sCisJCQkJCQkgICBqb3VybmFsX2ZsYWdzKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJcblx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoIXF1aWV0KQorCQkJcHJpbnRmKCIlcyIsIF8oImRvbmVcbiIpKTsKKwl9Citub19qb3VybmFsOgorCWlmICghc3VwZXJfb25seSAmJgorCSAgICBleHQyZnNfaGFzX2ZlYXR1cmVfbW1wKGZzLT5zdXBlcikpIHsKKwkJcmV0dmFsID0gZXh0MmZzX21tcF9pbml0KGZzKTsKKwkJaWYgKHJldHZhbCkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQkJXygiXG5FcnJvciB3aGlsZSBlbmFibGluZyBtdWx0aXBsZSAiCisJCQkJICAibW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKCFxdWlldCkKKwkJCXByaW50ZihfKCJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgIgorCQkJCSAid2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIpLAorCQkJICAgICAgIGZzLT5zdXBlci0+c19tbXBfdXBkYXRlX2ludGVydmFsKTsKKwl9CisKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2JpZ2FsbG9jKCZmc19wYXJhbSkpCisJCWZpeF9jbHVzdGVyX2JnX2NvdW50cyhmcyk7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9wcm9qZWN0KCZmc19wYXJhbSkpCisJCXF1b3RhdHlwZV9iaXRzIHw9IFFVT1RBX1BSSl9CSVQ7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9xdW90YSgmZnNfcGFyYW0pKQorCQljcmVhdGVfcXVvdGFfaW5vZGVzKGZzKTsKKworCXJldHZhbCA9IG1rX2h1Z2VmaWxlcyhmcywgZGV2aWNlX25hbWUpOworCWlmIChyZXR2YWwpCisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGVzIik7CisJLyogQ29weSBmaWxlcyBmcm9tIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICovCisJaWYgKHNyY19yb290X2RpcikgeworCQlpZiAoIXF1aWV0KQorCQkJcHJpbnRmKCIlcyIsIF8oIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiKSk7CisKKwkJcmV0dmFsID0gcG9wdWxhdGVfZnMoZnMsIEVYVDJfUk9PVF9JTk8sIHNyY19yb290X2RpciwKKwkJCQkgICAgIEVYVDJfUk9PVF9JTk8pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJCV8oIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iKSk7CisJCQlleGl0KDEpOworCQl9IGVsc2UgaWYgKCFxdWlldCkKKwkJCXByaW50ZigiJXMiLCBfKCJkb25lXG4iKSk7CisJfQorCisJaWYgKCFxdWlldCkKKwkJcHJpbnRmKCIlcyIsIF8oIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kICIKKwkJICAgICAgICJmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIpKTsKKwljaGVja2ludGVydmFsID0gZnMtPnN1cGVyLT5zX2NoZWNraW50ZXJ2YWw7CisJbWF4X21udF9jb3VudCA9IGZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50OworCXJldHZhbCA9IGV4dDJmc19jbG9zZV9mcmVlKCZmcyk7CisJaWYgKHJldHZhbCkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwKKwkJCV8oIlxuV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIikpOworCX0gZWxzZSBpZiAoIXF1aWV0KSB7CisJCXByaW50ZigiJXMiLCBfKCJkb25lXG5cbiIpKTsKKwkJaWYgKCFnZXRlbnYoIk1LRTJGU19TS0lQX0NIRUNLX01TRyIpKQorCQkJcHJpbnRfY2hlY2tfbWVzc2FnZShtYXhfbW50X2NvdW50LCBjaGVja2ludGVydmFsKTsKKwl9CisKKwlyZW1vdmVfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCXJlbW92ZV9lcnJvcl90YWJsZSgmZXRfcHJvZl9lcnJvcl90YWJsZSk7CisJcHJvZmlsZV9yZWxlYXNlKHByb2ZpbGUpOworCWZvciAoaT0wOyBmc190eXBlc1tpXTsgaSsrKQorCQlmcmVlKGZzX3R5cGVzW2ldKTsKKwlmcmVlKGZzX3R5cGVzKTsKKwlyZXR1cm4gcmV0dmFsOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmNvbmYuNS5pbiBiL2UyZnNwcm9ncy9taXNjL21rZTJmcy5jb25mLjUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNlMGY1ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL21rZTJmcy5jb25mLjUuaW4KQEAgLTAsMCArMSw1MzMgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDIwMDYgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBta2UyZnMuY29uZiA1ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCitta2UyZnMuY29uZiBcLSBDb25maWd1cmF0aW9uIGZpbGUgZm9yIG1rZTJmcworLlNIIERFU0NSSVBUSU9OCisuSSBta2UyZnMuY29uZgoraXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKKy5CUiBta2UyZnMgKDgpLgorSXQgY29udHJvbHMgdGhlIGRlZmF1bHQgcGFyYW1ldGVycyB1c2VkIGJ5CisuQlIgbWtlMmZzICg4KQord2hlbiBpdCBpcyBjcmVhdGluZyBleHQyLCBleHQzLCBvciBleHQ0IGZpbGVzeXN0ZW1zLgorLlBQCitUaGUKKy5JIG1rZTJmcy5jb25mCitmaWxlIHVzZXMgYW4gSU5JLXN0eWxlIGZvcm1hdC4gIFN0YW56YXMsIG9yIHRvcC1sZXZlbCBzZWN0aW9ucywgYXJlCitkZWxpbWl0ZWQgYnkgc3F1YXJlIGJyYWNlczogWyBdLiAgV2l0aGluIGVhY2ggc2VjdGlvbiwgZWFjaCBsaW5lCitkZWZpbmVzIGEgcmVsYXRpb24sIHdoaWNoIGFzc2lnbnMgdGFncyB0byB2YWx1ZXMsIG9yIHRvIGEgc3Vic2VjdGlvbiwKK3doaWNoIGNvbnRhaW5zIGZ1cnRoZXIgcmVsYXRpb25zIG9yIHN1YnNlY3Rpb25zLgorLlwiIFRhZ3MgY2FuIGJlIGFzc2lnbmVkIG11bHRpcGxlIHZhbHVlcworQW4gZXhhbXBsZSBvZiB0aGUgSU5JLXN0eWxlIGZvcm1hdCB1c2VkIGJ5IHRoaXMgY29uZmlndXJhdGlvbiBmaWxlCitmb2xsb3dzIGJlbG93OgorLlAKKwlbc2VjdGlvbjFdCisuYnIKKwkJdGFnMSA9IHZhbHVlX2EKKy5icgorCQl0YWcxID0gdmFsdWVfYgorLmJyCisJCXRhZzIgPSB2YWx1ZV9jCisuUAorCVtzZWN0aW9uIDJdCisuYnIKKwkJdGFnMyA9IHsKKy5icgorCQkJc3VidGFnMSA9IHN1YnRhZ192YWx1ZV9hCisuYnIKKwkJCXN1YnRhZzEgPSBzdWJ0YWdfdmFsdWVfYgorLmJyCisJCQlzdWJ0YWcyID0gc3VidGFnX3ZhbHVlX2MKKy5icgorCQl9CisuYnIKKwkJdGFnMSA9IHZhbHVlX2QKKy5icgorCQl0YWcyID0gdmFsdWVfZQorLmJyCisJfQorLlAKK0NvbW1lbnRzIGFyZSBkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24gKCc7Jykgb3IgYSBoYXNoICgnIycpIGNoYXJhY3RlcgorYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tbWVudCwgYW5kIGFyZSB0ZXJtaW5hdGVkIGJ5IHRoZSBlbmQgb2YKK2xpbmUgY2hhcmFjdGVyLgorLlAKK1RhZ3MgYW5kIHZhbHVlcyBtdXN0IGJlIHF1b3RlZCB1c2luZyBkb3VibGUgcXVvdGVzIGlmIHRoZXkgY29udGFpbgorc3BhY2VzLiAgV2l0aGluIGEgcXVvdGVkIHN0cmluZywgdGhlIHN0YW5kYXJkIGJhY2tzbGFzaCBpbnRlcnByZXRhdGlvbnMKK2FwcGx5OiAiXGVuIiAoZm9yIHRoZSBuZXdsaW5lIGNoYXJhY3RlciksCisiXGV0IiAoZm9yIHRoZSB0YWIgY2hhcmFjdGVyKSwgIlxlYiIgKGZvciB0aGUgYmFja3NwYWNlIGNoYXJhY3RlciksCithbmQgIlxlXGUiIChmb3IgdGhlIGJhY2tzbGFzaCBjaGFyYWN0ZXIpLgorLlAKK1NvbWUgcmVsYXRpb25zIGV4cGVjdCBhIGJvb2xlYW4gdmFsdWUuICBUaGUgcGFyc2VyIGlzIHF1aXRlIGxpYmVyYWwgb24KK3JlY29nbml6aW5nIGBgeWVzJycsICdgeScnLCBgYHRydWUnJywgYGB0JycsIGBgMScnLCBgYG9uJycsIGV0Yy4gYXMgYQorYm9vbGVhbiB0cnVlIHZhbHVlLCBhbmQgYGBubycnLCBgYG4nJywgYGBmYWxzZScnLCBgYG5pbCcnLCBgYDAnJywKK2Bgb2ZmJycgYXMgYSBib29sZWFuIGZhbHNlIHZhbHVlLgorLlAKK1RoZSBmb2xsb3dpbmcgc3RhbnphcyBhcmUgdXNlZCBpbiB0aGUKKy5JIG1rZTJmcy5jb25mCitmaWxlLiAgVGhleSB3aWxsIGJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBmdXR1cmUgc2VjdGlvbnMgb2YgdGhpcworZG9jdW1lbnQuCisuVFAKKy5JIFtvcHRpb25zXQorQ29udGFpbnMgcmVsYXRpb25zIHdoaWNoIGluZmx1ZW5jZSBob3cgbWtlMmZzIGJlaGF2ZXMuCisuVFAKKy5JIFtkZWZhdWx0c10KK0NvbnRhaW5zIHJlbGF0aW9ucyB3aGljaCBkZWZpbmUgdGhlIGRlZmF1bHQgcGFyYW1ldGVycwordXNlZCBieQorLkJSIG1rZTJmcyAoOCkuCitJbiBnZW5lcmFsLCB0aGVzZSBkZWZhdWx0cyBtYXkgYmUgb3ZlcnJpZGRlbiBieSBhIGRlZmluaXRpb24gaW4gdGhlCisuQiBmc190eXBlcworc3RhbnphLCBvciBieSBhbiBjb21tYW5kLWxpbmUgb3B0aW9uIHByb3ZpZGVkIGJ5IHRoZSB1c2VyLgorLlRQCisuSSBbZnNfdHlwZXNdCitDb250YWlucyByZWxhdGlvbnMgd2hpY2ggZGVmaW5lIGRlZmF1bHRzIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHNwZWNpZmljCitmaWxlIHN5c3RlbSBhbmQgdXNhZ2UgdHlwZXMuICBUaGUgZmlsZSBzeXN0ZW0gdHlwZSBhbmQgdXNhZ2UgdHlwZSBjYW4gYmUKK3NwZWNpZmllZCBleHBsaWNpdGx5IHVzaW5nCit0aGUKKy5CUiBcLXQgYW5kIFwtVAorb3B0aW9ucyB0bworLkJSIG1rZTJmcyAoOCksCityZXNwZWN0aXZlbHkuCisuU0ggVEhFIFtvcHRpb25zXSBTVEFOWkEKK1RoZSBmb2xsb3dpbmcgcmVsYXRpb25zIGFyZSBkZWZpbmVkIGluIHRoZQorLkkgW29wdGlvbnNdCitzdGFuemEuCisuVFAKKy5JIHByb2NlZWRfZGVsYXkKK0lmIHRoaXMgcmVsYXRpb24gaXMgc2V0IHRvIGEgcG9zaXRpdmUgaW50ZWdlciwgdGhlbiBpZiBta2UyZnMgd2lsbAorcHJvY2VlZCBhZnRlciB3YWl0aW5nCisuSSBwcm9jZWVkX2RlbGF5CitzZWNvbmRzLCBhZnRlciBhc2tpbmcgdGhlIHVzZXIgZm9yIHBlcm1pc3Npb24gdG8gcHJvY2VlZCwgZXZlbiBpZiB0aGUKK3VzZXIgaGFzIG5vdCBhbnN3ZXJlZCB0aGUgcXVlc3Rpb24uICBEZWZhdWx0cyB0byAwLCB3aGljaCBtZWFucyB0byB3YWl0Cit1bnRpbCB0aGUgdXNlciBhbnN3ZXJzIHRoZSBxdWVzdGlvbiBvbmUgd2F5IG9yIGFub3RoZXIuCisuU0ggVEhFIFtkZWZhdWx0c10gU1RBTlpBCitUaGUgZm9sbG93aW5nIHJlbGF0aW9ucyBhcmUgZGVmaW5lZCBpbiB0aGUKKy5JIFtkZWZhdWx0c10KK3N0YW56YS4KKy5UUAorLkkgYmFzZV9mZWF0dXJlcworVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgdGhlIGZpbGVzeXN0ZW1zIGZlYXR1cmVzIHdoaWNoIGFyZSBlbmFibGVkIGluCituZXdseSBjcmVhdGVkIGZpbGVzeXN0ZW1zLiAgSXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgdGhlCisuSSBiYXNlX2ZlYXR1cmVzCityZWxhdGlvbiBmb3VuZCBpbiB0aGUgZmlsZXN5c3RlbSBvciB1c2FnZSB0eXBlIHN1YnNlY3Rpb24gb2YKK3RoZQorLkkgW2ZzX3R5cGVzXQorc3RhbnphLgorLlRQCisuSSBkZWZhdWx0X2ZlYXR1cmVzCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyBhIHNldCBvZiBmZWF0dXJlcyB0aGF0IHNob3VsZCBiZSBhZGRlZCBvcgorcmVtb3ZlZCB0byB0aGUgZmVhdHVyZXMgbGlzdGVkIGluIHRoZQorLkkgYmFzZV9mZWF0dXJlcworcmVsYXRpb24uICBJdCBtYXkgYmUgb3ZlcnJpZGRlbiBieSB0aGUgZmlsZXN5c3RlbS1zcGVjaWZpYworLkkgZGVmYXVsdF9mZWF0dXJlcworaW4gdGhlIGZpbGVzeXN0ZW0gb3IgdXNhZ2UgdHlwZSBzdWJzZWN0aW9uIG9mCisuSVIgW2ZzX3R5cGVzXSAsCithbmQgYnkgdGhlCisuQiAtTworY29tbWFuZC1saW5lIG9wdGlvbgordG8KKy5CUiBta2UyZnMgKDgpLgorLlRQCisuSSBlbmFibGVfcGVyaW9kaWNfZnNjaworVGhpcyBib29sZWFuIHJlbGF0aW9uIHNwZWNpZmllcyB3aGV0aGVyIHBlcmlvZGljIGZpbGVzeXN0ZW0gY2hlY2tzIHNob3VsZCBiZQorZW5mb3JjZWQgYXQgYm9vdCB0aW1lLiAgSWYgc2V0IHRvIHRydWUsIGNoZWNrcyB3aWxsIGJlIGZvcmNlZCBldmVyeQorMTgwIGRheXMsIG9yIGFmdGVyIGEgcmFuZG9tIG51bWJlciBvZiBtb3VudHMuICBUaGVzZSB2YWx1ZXMgbWF5CitiZSBjaGFuZ2VkIGxhdGVyIHZpYSB0aGUKKy5CIC1pCithbmQKKy5CIC1jCitjb21tYW5kLWxpbmUgb3B0aW9ucyB0bworLkJSIHR1bmUyZnMgKDgpLgorLlRQCisuSSBmb3JjZV91bmRvCitUaGlzIGJvb2xlYW4gcmVsYXRpb24sIGlmIHNldCB0byBhIHZhbHVlIG9mIHRydWUsIGZvcmNlcworLkIgbWtlMmZzCit0byBhbHdheXMgdHJ5IHRvIGNyZWF0ZSBhbiB1bmRvIGZpbGUsIGV2ZW4gaWYgdGhlIHVuZG8gZmlsZSBtaWdodCBiZQoraHVnZSBhbmQgaXQgbWlnaHQgZXh0ZW5kIHRoZSB0aW1lIHRvIGNyZWF0ZSB0aGUgZmlsZXN5c3RlbSBpbWFnZQorYmVjYXVzZSB0aGUgaW5vZGUgdGFibGUgaXNuJ3QgYmVpbmcgaW5pdGlhbGl6ZWQgbGF6aWx5LgorLlRQCisuSSBmc190eXBlCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIHR5cGUgaWYgdGhlIHVzZXIgZG9lcyBub3QKK3NwZWNpZnkgaXQgdmlhIHRoZQorLkIgXC10CitvcHRpb24sIG9yIGlmCisuQiBta2UyZnMKK2lzIG5vdCBzdGFydGVkIHVzaW5nIGEgcHJvZ3JhbSBuYW1lIG9mIHRoZSBmb3JtCisuQkkgbWtmcy4gZnMtdHlwZVxmUi4KK0lmIGJvdGggdGhlIHVzZXIgYW5kIHRoZQorLkIgbWtlMmZzLmNvbmYKK2ZpbGUgZG8gbm90IHNwZWNpZnkgYSBkZWZhdWx0IGZpbGVzeXN0ZW0gdHlwZSwgbWtlMmZzIHdpbGwgdXNlIGEKK2RlZmF1bHQgZmlsZXN5c3RlbSB0eXBlIG9mCisuSVIgZXh0MworaWYgYSBqb3VybmFsIHdhcyByZXF1ZXN0ZWQgdmlhIGEgY29tbWFuZC1saW5lIG9wdGlvbiwgb3IKKy5JIGV4dDIKK2lmIG5vdC4KKy5UUAorLkkgdW5kb19kaXIKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHVuZG8gZmlsZSBzaG91bGQgYmUKK3N0b3JlZC4gIEl0IGNhbiBiZSBvdmVycmlkZGVuIHZpYSB0aGUKKy5CIEUyRlNQUk9HU19VTkRPX0RJUgorZW52aXJvbm1lbnQgdmFyaWFibGUuICBJZiB0aGUgZGlyZWN0b3J5IGxvY2F0aW9uIGlzIHNldCB0byB0aGUgdmFsdWUKKy5JUiBub25lICwKKy5CIG1rZTJmcword2lsbCBub3QgY3JlYXRlIGFuIHVuZG8gZmlsZS4KKy5QUAorSW4gYWRkaXRpb24sIGFueSB0YWdzIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBhIHBlci1maWxlIHN5c3RlbSB0YWdzCitzdWJzZWN0aW9uIGFzIGRlZmluZWQgYmVsb3cgKGUuZy4sCisuSVIgYmxvY2tzaXplICwKKy5JUiBoYXNoX2FsZyAsCisuSVIgaW5vZGVfcmF0aW8gLAorLklSIGlub2RlX3NpemUgLAorLklSIHJlc2VydmVkX3JhdGlvICwKK2V0Yy4pIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbiB0aGUKKy5JIGRlZmF1bHRzCitzdGFuemEgdG8gc3BlY2lmeSB0aGUgZGVmYXVsdCB2YWx1ZSB0byBiZSB1c2VkIGlmIHRoZSB1c2VyIGRvZXMgbm90CitzcGVjaWZ5IG9uZSBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIGZpbGVzeXN0ZW0tdHlwZQorc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGRvZXMgbm90IHNwZWNpZnkgYSBkZWZhdWx0IHZhbHVlLgorLlNIIFRIRSBbZnNfdHlwZXNdIFNUQU5aQQorRWFjaCB0YWcgaW4gdGhlCisuSSBbZnNfdHlwZXNdCitzdGFuemEgbmFtZXMgYSBmaWxlc3lzdGVtIHR5cGUgb3IgdXNhZ2UgdHlwZSB3aGljaCBjYW4gYmUgc3BlY2lmaWVkIHZpYSB0aGUKKy5CIFwtdAorb3IKKy5CIFwtVAorb3B0aW9ucyB0bworLkJSIG1rZTJmcyAoOCksCityZXNwZWN0aXZlbHkuCisuUAorVGhlCisuQiBta2UyZnMKK3Byb2dyYW0gY29uc3RydWN0cyBhIGxpc3Qgb2YgZnNfdHlwZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZmlsZXN5c3RlbQordHlwZSAoaS5lLiwgZXh0MiwgZXh0MywgZXRjLikgd2l0aCB0aGUgdXNhZ2UgdHlwZSBsaXN0LiAgRm9yIG1vc3QKK2NvbmZpZ3VyYXRpb24gb3B0aW9ucywKKy5CIG1rZTJmcword2lsbCBsb29rIGZvciBhIHN1YnNlY3Rpb24gaW4gdGhlCisuSSBbZnNfdHlwZXNdCitzdGFuemEgY29ycmVzcG9uZGluZyB3aXRoIGVhY2ggZW50cnkgaW4gdGhlIGNvbnN0cnVjdGVkIGxpc3QsIHdpdGggbGF0ZXIKK2VudHJpZXMgb3ZlcnJpZGluZyBlYXJsaWVyIGZpbGVzeXN0ZW0gb3IgdXNhZ2UgdHlwZXMuCitGb3IKK2V4YW1wbGUsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcKKy5CIG1rZTJmcy5jb25mCitmcmFnbWVudDoKKy5QCitbZGVmYXVsdHNdCisuYnIKKwliYXNlX2ZlYXR1cmVzID0gc3BhcnNlX3N1cGVyLGZpbGV0eXBlLHJlc2l6ZV9pbm9kZSxkaXJfaW5kZXgKKy5icgorCWJsb2Nrc2l6ZSA9IDQwOTYKKy5icgorCWlub2RlX3NpemUgPSAyNTYKKy5icgorCWlub2RlX3JhdGlvID0gMTYzODQKKy5icgorCisuYnIKK1tmc190eXBlc10KKy5icgorCWV4dDMgPSB7CisuYnIKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbAorLmJyCisJfQorLmJyCisJZXh0NCA9IHsKKy5icgorCQlmZWF0dXJlcyA9IGV4dGVudHMsZmxleF9iZworLmJyCisJCWlub2RlX3NpemUgPSAyNTYKKy5icgorCX0KKy5icgorCXNtYWxsID0geworLmJyCisJCWJsb2Nrc2l6ZSA9IDEwMjQKKy5icgorCQlpbm9kZV9yYXRpbyA9IDQwOTYKKy5icgorCX0KKy5icgorCWZsb3BweSA9IHsKKy5icgorCQlmZWF0dXJlcyA9IF5yZXNpemVfaW5vZGUKKy5icgorCQlibG9ja3NpemUgPSAxMDI0CisuYnIKKwkJaW5vZGVfc2l6ZSA9IDEyOAorLmJyCisJfQorLlAKK0lmIG1rZTJmcyBzdGFydGVkIHdpdGggYSBwcm9ncmFtIG5hbWUgb2YKKy5CUiBta2UyZnMuZXh0NCAsCit0aGVuIHRoZSBmaWxlc3lzdGVtIHR5cGUgb2YgZXh0NCB3aWxsIGJlIHVzZWQuICBJZiB0aGUgZmlsZXN5c3RlbSBpcworc21hbGxlciB0aGFuIDMgbWVnYWJ5dGVzLCBhbmQgbm8gdXNhZ2UgdHlwZSBpcyBzcGVjaWZpZWQsIHRoZW4KKy5CIG1rZTJmcword2lsbCB1c2UgYSBkZWZhdWx0Cit1c2FnZSB0eXBlIG9mCisuSVIgZmxvcHB5IC4KK1RoaXMgcmVzdWx0cyBpbiBhbiBmc190eXBlcyBsaXN0IG9mICJleHQ0LCBmbG9wcHkiLiAgIEJvdGggdGhlIGV4dDQKK3N1YnNlY3Rpb24gYW5kIHRoZSBmbG9wcHkgc3Vic2VjdGlvbiBkZWZpbmUgYW4KKy5JIGlub2RlX3NpemUKK3JlbGF0aW9uLCBidXQgc2luY2UgdGhlIGxhdGVyIGVudHJpZXMgaW4gdGhlIGZzX3R5cGVzIGxpc3Qgc3VwZXJzZWRlCitlYXJsaWVyIG9uZXMsIHRoZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBmb3IgZnNfdHlwZXMuZmxvcHB5Lmlub2RlX3NpemUKK3dpbGwgYmUgdXNlZCwgc28gdGhlIGZpbGVzeXN0ZW0gIHdpbGwgaGF2ZSBhbiBpbm9kZSBzaXplIG9mIDEyOC4KKy5QCitUaGUgZXhjZXB0aW9uIHRvIHRoaXMgcmVzb2x1dGlvbiBpcyB0aGUKKy5JIGZlYXR1cmVzCit0YWcsIHdoaWNoIHNwZWNpZmllcyBhIHNldCBvZiBjaGFuZ2VzIHRvIHRoZSBmZWF0dXJlcyB1c2VkIGJ5IHRoZQorZmlsZXN5c3RlbSwgYW5kIHdoaWNoIGlzIGN1bXVsYXRpdmUuICBTbyBpbiB0aGUgYWJvdmUgZXhhbXBsZSwgZmlyc3QKK3RoZSBjb25maWd1cmF0aW9uIHJlbGF0aW9uIGRlZmF1bHRzLmJhc2VfZmVhdHVyZXMgd291bGQgZW5hYmxlIGFuCitpbml0aWFsIGZlYXR1cmUgc2V0IHdpdGggdGhlIHNwYXJzZV9zdXBlciwgZmlsZXR5cGUsIHJlc2l6ZV9pbm9kZSwgYW5kCitkaXJfaW5kZXggZmVhdHVyZXMgZW5hYmxlZC4gIFRoZW4gY29uZmlndXJhdGlvbiByZWxhdGlvbgorZnNfdHlwZXMuZXh0NC5mZWF0dXJlcyB3b3VsZCBlbmFibGUgdGhlIGV4dGVudHMgYW5kIGZsZXhfYmcKK2ZlYXR1cmVzLCBhbmQgZmluYWxseSB0aGUgY29uZmlndXJhdGlvbiByZWxhdGlvbgorZnNfdHlwZXMuZmxvcHB5LmZlYXR1cmVzIHdvdWxkIHJlbW92ZQordGhlIHJlc2l6ZV9pbm9kZSBmZWF0dXJlLCByZXN1bHRpbmcgaW4gYSBmaWxlc3lzdGVtIGZlYXR1cmUgc2V0Citjb25zaXN0aW5nIG9mIHRoZSBzcGFyc2Vfc3VwZXIsIGZpbGV0eXBlLCBkaXJfaW5kZXgsCitleHRlbnRzX2FuZCBmbGV4X2JnIGZlYXR1cmVzLgorLlAKK0ZvciBlYWNoIGZpbGVzeXN0ZW0gdHlwZSwgdGhlIGZvbGxvd2luZyB0YWdzIG1heSBiZSB1c2VkIGluIHRoYXQKK2ZzX3R5cGUncyBzdWJzZWN0aW9uLiAgIFRoZXNlIHRhZ3MgbWF5IGFsc28gYmUgdXNlZCBpbiB0aGUKKy5JIGRlZmF1bHQKK3NlY3Rpb246CisuVFAKKy5JIGJhc2VfZmVhdHVyZXMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBmZWF0dXJlcyB3aGljaCBhcmUgaW5pdGlhbGx5IGVuYWJsZWQgZm9yIHRoaXMKK2ZpbGVzeXN0ZW0gdHlwZS4gIE9ubHkgb25lCisuSSBiYXNlX2ZlYXR1cmVzCit3aWxsIGJlIHVzZWQsIHNvIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBlbnRyaWVzIGluIHRoZSBmc190eXBlcyBsaXN0Cit3aG9zZSBzdWJzZWN0aW9ucyBkZWZpbmUgdGhlCisuSSBiYXNlX2ZlYXR1cmVzCityZWxhdGlvbiwgb25seSB0aGUgbGFzdCB3aWxsIGJlIHVzZWQgYnkKKy5CUiBta2UyZnMgKDgpLgorLlRQCisuSSBlcnJvcnMKK0NoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGtlcm5lbCBjb2RlIHdoZW4gZXJyb3JzIGFyZSBkZXRlY3RlZC4KK0luIGFsbCBjYXNlcywgYSBmaWxlc3lzdGVtIGVycm9yIHdpbGwgY2F1c2UKKy5CUiBlMmZzY2sgKDgpCit0byBjaGVjayB0aGUgZmlsZXN5c3RlbSBvbiB0aGUgbmV4dCBib290LgorLkkgZXJyb3JzCitjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisuUlMgMS4yaQorLlRQIDEuMmkKKy5CIGNvbnRpbnVlCitDb250aW51ZSBub3JtYWwgZXhlY3V0aW9uLgorLlRQCisuQiByZW1vdW50LXJvCitSZW1vdW50IGZpbGVzeXN0ZW0gcmVhZC1vbmx5LgorLlRQCisuQiBwYW5pYworQ2F1c2UgYSBrZXJuZWwgcGFuaWMuCisuUkUKKy5UUAorLkkgZmVhdHVyZXMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZmVhdHVyZXMgZWRpdAorcmVxdWVzdHMgd2hpY2ggbW9kaWZ5IHRoZSBmZWF0dXJlIHNldAordXNlZCBieSB0aGUgbmV3bHkgY29uc3RydWN0ZWQgZmlsZXN5c3RlbS4gIFRoZSBzeW50YXggaXMgdGhlIHNhbWUgYXMgdGhlCisuQiAtTworY29tbWFuZC1saW5lIG9wdGlvbiB0bworLkJSIG1rZTJmcyAoOCk7Cit0aGF0IGlzLCBhIGZlYXR1cmUgY2FuIGJlIHByZWZpeGVkIGJ5IGEgY2FyZXQgKCdeJykgc3ltYm9sIHRvIGRpc2FibGUKK2EgbmFtZWQgZmVhdHVyZS4gIEVhY2gKKy5JIGZlYXR1cmUKK3JlbGF0aW9uIHNwZWNpZmllZCBpbiB0aGUgZnNfdHlwZXMgbGlzdCB3aWxsIGJlIGFwcGxpZWQgaW4gdGhlIG9yZGVyCitmb3VuZCBpbiB0aGUgZnNfdHlwZXMgbGlzdC4KKy5UUAorLkkgZGVmYXVsdF9mZWF0dXJlcworVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgc2V0IG9mIGZlYXR1cmVzIHdoaWNoIHNob3VsZCBiZSBlbmFibGVkIG9yCitkaXNhYmxlZCBhZnRlciBhcHBseWluZyB0aGUgZmVhdHVyZXMgbGlzdGVkIGluIHRoZQorLkkgYmFzZV9mZWF0dXJlcworYW5kCisuSSBmZWF0dXJlcworcmVsYXRpb25zLiAgSXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgdGhlCisuQiAtTworY29tbWFuZC1saW5lIG9wdGlvbiB0bworLkJSIG1rZTJmcyAoOCkuCisuVFAKKy5JIGF1dG9fNjQtYml0X3N1cHBvcnQKK1RoaXMgcmVsYXRpb24gaXMgYSBib29sZWFuIHdoaWNoIHNwZWNpZmllcyB3aGV0aGVyCisuQlIgbWtlMmZzICg4KQorc2hvdWxkIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSA2NGJpdCBmZWF0dXJlIGlmIHRoZSBudW1iZXIgb2YgYmxvY2tzIGZvcgordGhlIGZpbGUgc3lzdGVtIHJlcXVpcmVzIHRoaXMgZmVhdHVyZSB0byBiZSBlbmFibGVkLiAgVGhlIHJlc2l6ZV9pbm9kZQorZmVhdHVyZSBpcyBhbHNvIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgc2luY2UgaXQgZG9lc24ndCBzdXBwb3J0IDY0LWJpdAorYmxvY2sgbnVtYmVycy4KKy5UUAorLkkgZGVmYXVsdF9tbnRvcHRzCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgc2V0IG9mIG1vdW50IG9wdGlvbnMgd2hpY2ggc2hvdWxkIGJlIGVuYWJsZWQKK2J5IGRlZmF1bHQuICBUaGVzZSBtYXkgYmUgY2hhbmdlZCBhdCBhIGxhdGVyIHRpbWUgd2l0aCB0aGUKKy5CIC1vCitjb21tYW5kLWxpbmUgb3B0aW9uIHRvCisuQlIgdHVuZTJmcyAoOCkuCisuVFAKKy5JIGJsb2Nrc2l6ZQorVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgYmxvY2tzaXplIGlmIHRoZSB1c2VyIGRvZXMgbm90CitzcGVjaWZ5IGEgYmxvY2tzaXplIG9uIHRoZSBjb21tYW5kIGxpbmUuCisuVFAKKy5JIGxhenlfaXRhYmxlX2luaXQKK1RoaXMgYm9vbGVhbiByZWxhdGlvbiBzcGVjaWZpZXMgd2hldGhlciB0aGUgaW5vZGUgdGFibGUgc2hvdWxkCitiZSBsYXppbHkgaW5pdGlhbGl6ZWQuICBJdCBvbmx5IGhhcyBtZWFuaW5nIGlmIHRoZSB1bmluaXRfYmcgZmVhdHVyZSBpcworZW5hYmxlZC4gIElmIGxhenlfaXRhYmxlX2luaXQgaXMgdHJ1ZSBhbmQgdGhlIHVuaW5pdF9iZyBmZWF0dXJlIGlzCitlbmFibGVkLCAgdGhlIGlub2RlIHRhYmxlIHdpbGwKK25vdCBiZSBmdWxseSBpbml0aWFsaXplZCBieQorLkJSIG1rZTJmcyAoOCkuCitUaGlzIHNwZWVkcyB1cCBmaWxlc3lzdGVtCitpbml0aWFsaXphdGlvbiBub3RpY2VhYmx5LCBidXQgaXQgcmVxdWlyZXMgdGhlIGtlcm5lbCB0byBmaW5pc2gKK2luaXRpYWxpemluZyB0aGUgZmlsZXN5c3RlbSBpbiB0aGUgYmFja2dyb3VuZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzCitmaXJzdCBtb3VudGVkLgorLlRQCisuSSBqb3VybmFsX2xvY2F0aW9uCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgbG9jYXRpb24gb2YgdGhlIGpvdXJuYWwuCisuVFAKKy5JIG51bV9iYWNrdXBfc2IKK1RoaXMgcmVsYXRpb24gaW5kaWNhdGVzIHdoZXRoZXIgZmlsZSBzeXN0ZW1zIHdpdGggdGhlCisuQiBzcGFyc2Vfc3VwZXIyCitmZWF0dXJlIGVuYWJsZWQgc2hvdWxkIGJlIGNyZWF0ZWQgd2l0aCAwLCAxLCBvciAyIGJhY2t1cCBzdXBlcmJsb2Nrcy4KKy5UUAorLkkgcGFja2VkX21ldGFfYmxvY2tzCitUaGlzIGJvb2xlYW4gcmVsYXRpb24gc3BlY2lmZXMgd2hldGhlciB0aGUgYWxsb2NhdGlvbiBiaXRtYXBzLCBpbm9kZQordGFibGUsIGFuZCBqb3VybmFsIHNob3VsZCBiZSBsb2NhdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgc3lzdGVtLgorLlRQCisuSSBpbm9kZV9yYXRpbworVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgaW5vZGUgcmF0aW8gaWYgdGhlIHVzZXIgZG9lcyBub3QKK3NwZWNpZnkgb25lIG9uIHRoZSBjb21tYW5kIGxpbmUuCisuVFAKKy5JIGlub2RlX3NpemUKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBkZWZhdWx0IGlub2RlIHNpemUgaWYgdGhlIHVzZXIgZG9lcyBub3QKK3NwZWNpZnkgb25lIG9uIHRoZSBjb21tYW5kIGxpbmUuCisuVFAKKy5JIHJlc2VydmVkX3JhdGlvCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgZGVmYXVsdCBwZXJjZW50YWdlIG9mIGZpbGVzeXN0ZW0gYmxvY2tzCityZXNlcnZlZCBmb3IgdGhlIHN1cGVyLXVzZXIsIGlmIHRoZSB1c2VyIGRvZXMgbm90IHNwZWNpZnkgb25lIG9uIHRoZSBjb21tYW5kCitsaW5lLgorLlRQCisuSSBoYXNoX2FsZworVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdXNlZCBmb3IgdGhlCituZXcgZmlsZXN5c3RlbXMgd2l0aCBoYXNoZWQgYi10cmVlIGRpcmVjdG9yaWVzLiAgVmFsaWQgYWxnb3JpdGhtcworYWNjZXB0ZWQgYXJlOgorLklSIGxlZ2FjeSAsCisuSVIgaGFsZl9tZDQgLAorYW5kCisuSVIgdGVhIC4KKy5UUAorLkkgZmxleF9iZ19zaXplCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJsb2NrIGdyb3VwcyB0aGF0IHdpbGwgYmUgcGFja2VkCit0b2dldGhlciB0byBjcmVhdGUgb25lIGxhcmdlIHZpcnR1YWwgYmxvY2sgZ3JvdXAgb24gYW4gZXh0NCBmaWxlc3lzdGVtLgorVGhpcyBpbXByb3ZlcyBtZXRhLWRhdGEgbG9jYWxpdHkgYW5kIHBlcmZvcm1hbmNlIG9uIG1ldGEtZGF0YSBoZWF2eQord29ya2xvYWRzLiAgVGhlIG51bWJlciBvZiBncm91cHMgbXVzdCBiZSBhIHBvd2VyIG9mIDIgYW5kIG1heSBvbmx5IGJlCitzcGVjaWZpZWQgaWYgdGhlIGZsZXhfYmcgZmlsZXN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQuCisuVFAKKy5JIG9wdGlvbnMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIGFkZGl0aW9uYWwgZXh0ZW5kZWQgb3B0aW9ucyB3aGljaCBzaG91bGQgYmUKK3RyZWF0ZWQgYnkKKy5CUiBta2UyZnMgKDgpCithcyBpZiB0aGV5IHdlcmUgcHJlcGVuZGVkIHRvIHRoZSBhcmd1bWVudCBvZiB0aGUKKy5CIC1FCitvcHRpb24uICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgZGVmYXVsdCBleHRlbmRlZCBvcHRpb25zIHVzZWQKK2J5CisuQlIgbWtlMmZzICg4KQorb24gYSBwZXItZmlsZXN5c3RlbSB0eXBlIGJhc2lzLgorLlRQCisuSSBkaXNjYXJkCitUaGlzIGJvb2xlYW4gcmVsYXRpb24gc3BlY2lmaWVzIHdoZXRoZXIgdGhlCisuQlIgbWtlMmZzICg4KQorc2hvdWxkIGF0dGVtcHQgdG8gZGlzY2FyZCBkZXZpY2UgcHJpb3IgdG8gZmlsZXN5c3RlbSBjcmVhdGlvbi4KKy5UUAorLkkgY2x1c3Rlcl9zaXplCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgZGVmYXVsdCBjbHVzdGVyIHNpemUgaWYgdGhlIGJpZ2FsbG9jIGZpbGUKK3N5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQuICBJdCBjYW4gYmUgb3ZlcnJpZGRlbiB2aWEgdGhlCisuQiBcLUMKK2NvbW1hbmQgbGluZSBvcHRpb24gdG8KKy5CUiBta2UyZnMgKDgpCisuVFAKKy5JIG1ha2VfaHVnZWZpbGVzCitUaGlzIGJvb2xlYW4gcmVsYXRpb24gZW5hYmxlcyB0aGUgY3JlYXRpb24gb2YgcHJlLWFsbG9jYXRlZCBmaWxlcyBhcworcGFydCBvZiBmb3JtYXR0aW5nIHRoZSBmaWxlIHN5c3RlbS4KKy5UUAorLkkgaHVnZWZpbGVzX3VpZAorVGhpcyByZWxhdGlvbiBjb250cm9scyB0aGUgdXNlciBvd25lcnNoaXAgZm9yIGFsbCBvZiB0aGUgZmlsZXMgYW5kCitkaXJlY3RvcmllcyBjcmVhdGVkIGJ5IHRoZQorLkkgbWFrZV9odWdlZmlsZXMKK2ZlYXR1cmUuCisuVFAKKy5JIGh1Z2VmaWxlc19naWQKK1RoaXMgcmVsYXRpb24gY29udHJvbHMgdGhlIGdyb3VwIG93bmVyc2hpcCBmb3IgYWxsIG9mIHRoZSBmaWxlcyBhbmQKK2RpcmVjdG9yaWVzIGNyZWF0ZWQgYnkgdGhlCisuSSBtYWtlX2h1Z2VmaWxlcworZmVhdHVyZS4KKy5UUAorLkkgaHVnZWZpbGVzX3VtYXNrCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyB0aGUgdW1hc2sgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBmaWxlcyBhbmQKK2RpcmVjdG9yaWVzIGJ5IHRoZQorLkkgbWFrZV9odWdlZmlsZXMKK2ZlYXR1cmUuCisuVFAKKy5JIG51bV9odWdlZmlsZXMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgaHVnZSBmaWxlcyB0byBiZSBjcmVhdGVkLiAgSWYgdGhpcworcmVsYXRpb24gaXMgbm90IHNwZWNpZmllZCwgb3IgaXMgc2V0IHRvIHplcm8sIGFuZCB0aGUKKy5JIGh1Z2VmaWxlc19zaXplCityZWxhdGlvbiBpcyBub24temVybywgdGhlbgorLkkgbWFrZV9odWdlZmlsZXMKK3dpbGwgY3JlYXRlIGFzIG1hbnkgaHVnZSBmaWxlcyBhcyBjYW4gZml0IHRvIGZpbGwgdGhlIGVudGlyZSBmaWxlIHN5c3RlbS4KKy5UUAorLkkgaHVnZWZpbGVzX3NsYWNrCitUaGlzIHJlbGF0aW9uIHNwZWNpZmllcyBob3cgbXVjaCBzcGFjZSBzaG91bGQgYmUgcmVzZXJ2ZWQgZm9yIG90aGVyCitmaWxlcy4KKy5UUAorLkkgaHVnZWZpbGVzX3NpemUKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBzaXplIG9mIHRoZSBodWdlIGZpbGVzLiAgSWYgdGhpcyByZWxhdGlvbiBpcworbm90IHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgaXMgdG8gZmlsbCB0aGUgZW50aXJlIGZpbGUgc3lzdGVtLgorLlRQCisuSSBodWdlZmlsZXNfYWxpZ24KK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBzdGFydCBibG9jayBvZiB0aGUgaHVnZQorZmlsZXMuICBJdCBhbHNvIGZvcmNlcyB0aGUgc2l6ZSBvZiBodWdlIGZpbGVzIHRvIGJlIGEgbXVsdGlwbGUgb2YgdGhlCityZXF1ZXN0ZWQgYWxpZ25tZW50LiAgSWYgdGhpcyByZWxhdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCBubyBhbGlnbm1lbnQKK3JlcXVpcmVtZW50IHdpbGwgYmUgaW1wb3NlZCBvbiB0aGUgaHVnZSBmaWxlcy4KKy5UUAorLkkgaHVnZWZpbGVzX2FsaWduX2Rpc2sKK1RoaXMgcmVsYXRpb25zIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBhbGlnbm1lbnQgc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZQorYmVnaW5uaW5nIG9mIHRoZSBoYXJkIGRyaXZlIChhc3N1bWluZyB0aGF0IHRoZSBzdGFydGluZyBvZmZzZXQgb2YgdGhlCitwYXJ0aXRpb24gaXMgYXZhaWxhYmxlIHRvIG1rZTJmcykuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBmYWxzZSwgd2hpY2gKK3dpbGwgY2F1c2UgaHVnZWZpbGUgYWxpZ25tZW50IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlCitmaWxlIHN5c3RlbS4KKy5UUAorLkkgaHVnZWZpbGVzX25hbWUKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBiYXNlIGZpbGUgbmFtZSBmb3IgdGhlIGh1Z2UgZmlsZXMuCisuVFAKKy5JIGh1Z2VmaWxlc19kaWdpdHMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSAoemVyby1wYWRkZWQpIHdpZHRoIG9mIHRoZSBmaWVsZCBmb3IgdGhlCitodWdlIGZpbGUgbnVtYmVyLgorLlRQCisuSSB6ZXJvX2h1Z2VmaWxlcworVGhpcyBib29sZWFuIHJlbGF0aW9uIHNwZWNpZmllcyB3aGV0aGVyIG9yIG5vdCB6ZXJvIGJsb2NrcyB3aWxsIGJlCit3cml0dGVuIHRvIHRoZSBodWdlZmlsZXMgd2hpbGUKKy5CUiBta2UyZnMoOCkKK2lzIGNyZWF0aW5nIHRoZW0uICBCeSBkZWZhdWx0LCB6ZXJvIGJsb2NrcyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGh1Z2UKK2ZpbGVzIHRvIGF2b2lkIHN0YWxlIGRhdGEgZnJvbSBiZWluZyBtYWRlIGF2YWlsYWJsZSB0byBwb3RlbnRpYWxseQordW50cnVzdGVkIHVzZXIgcHJvZ3JhbXMsIHVubGVzcyB0aGUgZGV2aWNlIHN1cHBvcnRzIGEgZGlzY2FyZC90cmltCitvcGVyYXRpb24gd2hpY2ggd2lsbCB0YWtlIGNhcmUgb2YgemVyb2luZyB0aGUgZGV2aWNlIGJsb2Nrcy4gIEJ5IHNldHRpbmcKKy5JIHplcm9faHVnZWZpbGVzCit0byBmYWxzZSwgdGhpcyBzdGVwIHdpbGwgYWx3YXlzIGJlIHNraXBwZWQsIHdoaWNoIGNhbiBiZSB1c2VmdWwgaWYgaXQgaXMKK2tub3duIHRoYXQgdGhlIGRpc2sgaGFzIGJlZW4gcHJldmlvdXNseSBlcmFzZWQsIG9yIGlmIHRoZSB1c2VyIHByb2dyYW1zCit0aGF0IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhlIGh1Z2UgZmlsZXMgYXJlIHRydXN0ZWQgdG8gbm90IHJldmVhbCBzdGFsZQorZGF0YS4KKy5TSCBUSEUgW2RldmljZXNdIFNUQU5aQQorRWFjaCB0YWcgaW4gdGhlCisuSSBbZGV2aWNlc10KK3N0YW56YSBuYW1lcyBkZXZpY2UgbmFtZSBzbyB0aGF0IHBlci1kZXZpY2UgZGVmYXVsdHMgY2FuIGJlIHNwZWNpZmllZC4KKy5UUAorLkkgZnNfdHlwZQorVGhpcyByZWxhdGlvbiBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIGZvciB0aGUKKy5CIFwtdAorb3B0aW9uLCBpZiB0aGlzIG9wdGlvbiBpc24ndCBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKy5UUAorLkkgdXNhZ2VfdHlwZXMKK1RoaXMgcmVsYXRpb24gc3BlY2lmaWVzIHRoZSBkZWZhdWx0IHBhcmFtZXRlciBmb3IgdGhlCisuQiBcLVQKK29wdGlvbiwgaWYgdGhpcyBvcHRpb24gaXNuJ3Qgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCisuU0ggRklMRVMKKy5UUAorLkkgL2V0Yy9ta2UyZnMuY29uZgorVGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IKKy5CUiBta2UyZnMgKDgpLgorLlNIIFNFRSBBTFNPCisuQlIgbWtlMmZzICg4KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmNvbmYuaW4gYi9lMmZzcHJvZ3MvbWlzYy9ta2UyZnMuY29uZi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OGZlNTBhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmNvbmYuaW4KQEAgLTAsMCArMSw1MiBAQAorW2RlZmF1bHRzXQorCWJhc2VfZmVhdHVyZXMgPSBzcGFyc2Vfc3VwZXIsbGFyZ2VfZmlsZSxmaWxldHlwZSxyZXNpemVfaW5vZGUsZGlyX2luZGV4LGV4dF9hdHRyCisJZGVmYXVsdF9tbnRvcHRzID0gYWNsLHVzZXJfeGF0dHIKKwllbmFibGVfcGVyaW9kaWNfZnNjayA9IDAKKwlibG9ja3NpemUgPSA0MDk2CisJaW5vZGVfc2l6ZSA9IDI1NgorCWlub2RlX3JhdGlvID0gMTYzODQKKworW2ZzX3R5cGVzXQorCWV4dDMgPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwKKwl9CisJZXh0NCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsNjRiaXQsZGlyX25saW5rLGV4dHJhX2lzaXplCisJCWlub2RlX3NpemUgPSAyNTYKKwl9CisJZXh0NGRldiA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsaW5saW5lX2RhdGEsNjRiaXQsZGlyX25saW5rLGV4dHJhX2lzaXplCisJCWlub2RlX3NpemUgPSAyNTYKKwkJb3B0aW9ucyA9IHRlc3RfZnM9MQorCX0KKwlzbWFsbCA9IHsKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMTI4CisJCWlub2RlX3JhdGlvID0gNDA5NgorCX0KKwlmbG9wcHkgPSB7CisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDEyOAorCQlpbm9kZV9yYXRpbyA9IDgxOTIKKwl9CisJYmlnID0geworCQlpbm9kZV9yYXRpbyA9IDMyNzY4CisJfQorCWh1Z2UgPSB7CisJCWlub2RlX3JhdGlvID0gNjU1MzYKKwl9CisJbmV3cyA9IHsKKwkJaW5vZGVfcmF0aW8gPSA0MDk2CisJfQorCWxhcmdlZmlsZSA9IHsKKwkJaW5vZGVfcmF0aW8gPSAxMDQ4NTc2CisJCWJsb2Nrc2l6ZSA9IC0xCisJfQorCWxhcmdlZmlsZTQgPSB7CisJCWlub2RlX3JhdGlvID0gNDE5NDMwNAorCQlibG9ja3NpemUgPSAtMQorCX0KKwlodXJkID0geworCSAgICAgYmxvY2tzaXplID0gNDA5NgorCSAgICAgaW5vZGVfc2l6ZSA9IDEyOAorCX0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL21rZTJmcy5oIGIvZTJmc3Byb2dzL21pc2MvbWtlMmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U3MmNiMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL21rZTJmcy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBta2UyZnMuaAorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKKyAqIAkyMDAzLCAyMDA0LCAyMDA1IGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKiBta2UyZnMuYyAqLworZXh0ZXJuIGNvbnN0IGNoYXIgKiBwcm9ncmFtX25hbWU7CitleHRlcm4gaW50CXF1aWV0OworZXh0ZXJuIGludAl2ZXJib3NlOworZXh0ZXJuIGludAl6ZXJvX2h1Z2VmaWxlOworZXh0ZXJuIGNoYXIgKipmc190eXBlczsKKworZXh0ZXJuIGNoYXIgKmdldF9zdHJpbmdfZnJvbV9wcm9maWxlKGNoYXIgKip0eXBlcywgY29uc3QgY2hhciAqb3B0LAorCQkJCSAgICAgY29uc3QgY2hhciAqZGVmX3ZhbCk7CitleHRlcm4gaW50IGdldF9pbnRfZnJvbV9wcm9maWxlKGNoYXIgKip0eXBlcywgY29uc3QgY2hhciAqb3B0LCBpbnQgZGVmX3ZhbCk7CitleHRlcm4gaW50IGdldF9ib29sX2Zyb21fcHJvZmlsZShjaGFyICoqdHlwZXMsIGNvbnN0IGNoYXIgKm9wdCwgaW50IGRlZl92YWwpOworZXh0ZXJuIGludCBpbnRfbG9nMTAodW5zaWduZWQgbG9uZyBsb25nIGFyZyk7CisKKy8qIG1rX2h1Z2VmaWxlcy5jICovCitleHRlcm4gZXJyY29kZV90IG1rX2h1Z2VmaWxlcyhleHQyX2ZpbHN5cyBmcywgY29uc3QgY2hhciAqZGV2aWNlX25hbWUpOworCisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtsb3N0K2ZvdW5kLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy9ta2xvc3QrZm91bmQuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTI3NDBjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtsb3N0K2ZvdW5kLjguaW4KQEAgLTAsMCArMSw0MyBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBDb3B5cmlnaHQgMTk5MywgMTk5NCwgMTk5NSBieSBUaGVvZG9yZSBUcydvLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy5cIiBUaGlzIGZpbGUgbWF5IGJlIGNvcGllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMgTGljZW5zZS4KKy5cIiAKKy5USCBNS0xPU1QrRk9VTkQgOCAiQEUyRlNQUk9HU19NT05USEAgQEUyRlNQUk9HU19ZRUFSQCIgIkUyZnNwcm9ncyB2ZXJzaW9uIEBFMkZTUFJPR1NfVkVSU0lPTkAiCisuU0ggTkFNRQorbWtsb3N0K2ZvdW5kIFwtIGNyZWF0ZSBhIGxvc3QrZm91bmQgZGlyZWN0b3J5IG9uIGEgbW91bnRlZCBMaW51eAorc2Vjb25kIGV4dGVuZGVkIGZpbGUgc3lzdGVtCisuU0ggU1lOT1BTSVMKKy5CIG1rbG9zdCtmb3VuZAorLlNIIERFU0NSSVBUSU9OCisuQiBta2xvc3QrZm91bmQKK2lzIHVzZWQgdG8gY3JlYXRlIGEKKy5JIGxvc3QrZm91bmQKK2RpcmVjdG9yeSBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBvbiBhIExpbnV4IHNlY29uZCBleHRlbmRlZAorZmlsZSBzeXN0ZW0uICBUaGVyZSBpcyBub3JtYWxseSBhCisuSSBsb3N0K2ZvdW5kCitkaXJlY3RvcnkgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIGVhY2ggZmlsZXN5c3RlbS4KKy5QUAorLkIgbWtsb3N0K2ZvdW5kCitwcmUtYWxsb2NhdGVzIGRpc2sgYmxvY2tzIHRvIHRoZQorLkkgbG9zdCtmb3VuZAorZGlyZWN0b3J5IHNvIHRoYXQgd2hlbgorLkJSIGUyZnNjayAoOCkKK2lzIGJlaW5nIHJ1biB0byByZWNvdmVyIGEgZmlsZXN5c3RlbSwgaXQgZG9lcyBub3QgbmVlZCB0byBhbGxvY2F0ZSBibG9ja3MgaW4KK3RoZSBmaWxlc3lzdGVtIHRvIHN0b3JlIGEgbGFyZ2UgbnVtYmVyIG9mIHVubGlua2VkIGZpbGVzLiAgVGhpcyBlbnN1cmVzIHRoYXQKKy5CIGUyZnNjaword2lsbCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBkYXRhIGJsb2NrcyBpbiB0aGUgZmlsZXN5c3RlbSBkdXJpbmcgcmVjb3ZlcnkuCisuU0ggT1BUSU9OUworVGhlcmUgYXJlIG5vbmUuCisuU0ggQVVUSE9SCisuQiBta2xvc3QrZm91bmQKK2hhcyBiZWVuIHdyaXR0ZW4gYnkgUmVteSBDYXJkIDxSZW15LkNhcmRAbGludXgub3JnPi4gIEl0IGlzIGN1cnJlbnRseSBiZWluZworbWFpbnRhaW5lZCBieSBUaGVvZG9yZSBUcydvIDx0eXRzb0BhbHVtLm1pdC5lZHU+LgorLlNIIEJVR1MKK1RoZXJlIGFyZSBub25lIDotKQorLlNIIEFWQUlMQUJJTElUWQorLkIgbWtsb3N0K2ZvdW5kCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20gCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGUyZnNjayAoOCksCisuQlIgbWtlMmZzICg4KQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvbWtsb3N0K2ZvdW5kLmMgYi9lMmZzcHJvZ3MvbWlzYy9ta2xvc3QrZm91bmQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDYxMzU3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvbWtsb3N0K2ZvdW5kLmMKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIG1rbG9zdCtmb3VuZC5jCS0gQ3JlYXRlcyBhIGRpcmVjdG9yeSBsb3N0K2ZvdW5kIG9uIGEgbW91bnRlZCBzZWNvbmQKKyAqCQkJICBleHRlbmRlZCBmaWxlIHN5c3RlbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MyAgUmVteSBDYXJkIDxjYXJkQG1hc2kuaWJwLmZyPgorICoKKyAqIFRoaXMgZmlsZSBjYW4gYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMgTGljZW5zZQorICovCisKKy8qCisgKiBIaXN0b3J5OgorICogOTMvMDQvMjIJLSBDcmVhdGlvbgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorCisjaW5jbHVkZSAiZXh0MmZzL2V4dDJfZnMuaCIKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyNkZWZpbmUgTFBGICJsb3N0K2ZvdW5kIgorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKK3sKKwljaGFyIG5hbWUgW0VYVDJfTkFNRV9MRU5dOworCWNoYXIgcGF0aCBbc2l6ZW9mIChMUEYpICsgMSArIDI1Nl07CisJc3RydWN0IHN0YXQgc3Q7CisJaW50IGksIGo7CisJaW50IGQ7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKyNlbmRpZgorCWZwcmludGYgKHN0ZGVyciwgIm1rbG9zdCtmb3VuZCAlcyAoJXMpXG4iLCBFMkZTUFJPR1NfVkVSU0lPTiwKKwkJIEUyRlNQUk9HU19EQVRFKTsKKwlpZiAoYXJnYyAhPSAxKSB7CisJCSh2b2lkKWFyZ3Y7IC8qIGF2b2lkIHVudXNlZCBhcmd1bWVudCB3YXJuaW5nICovCisJCWZwcmludGYgKHN0ZGVyciwgIiVzIiwgXygiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIikpOworCQlleGl0KDEpOworCX0KKwlpZiAobWtkaXIgKExQRiwgMDcwMCkgPT0gLTEpIHsKKwkJcGVycm9yICgibWtkaXIiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpID0gMDsKKwltZW1zZXQgKG5hbWUsICd4JywgMjQ2KTsKKwlkbyB7CisJCXNwcmludGYgKG5hbWUgKyAyNDYsICIlMDhkIiwgaSk7CisJCXN0cmNweSAocGF0aCwgTFBGKTsKKwkJc3RyY2F0IChwYXRoLCAiLyIpOworCQlzdHJjYXQgKHBhdGgsIG5hbWUpOworCQlpZiAoKGQgPSBjcmVhdCAocGF0aCwgMDY0NCkpID09IC0xKSB7CisJCQlwZXJyb3IgKCJjcmVhdCIpOworCQkJZXhpdCAoMSk7CisJCX0KKwkJaSsrOworCQljbG9zZSAoZCk7CisJCWlmIChzdGF0IChMUEYsICZzdCkgPT0gLTEpIHsKKwkJCXBlcnJvciAoInN0YXQiKTsKKwkJCWV4aXQgKDEpOworCQl9CisJfSB3aGlsZSAoc3Quc3Rfc2l6ZSA8PSAoRVhUMl9ORElSX0JMT0NLUyAtIDEpICogc3Quc3RfYmxrc2l6ZSk7CisJZm9yIChqID0gMDsgaiA8IGk7IGorKykgeworCQlzcHJpbnRmIChuYW1lICsgMjQ2LCAiJTA4ZCIsIGopOworCQlzdHJjcHkgKHBhdGgsIExQRik7CisJCXN0cmNhdCAocGF0aCwgIi8iKTsKKwkJc3RyY2F0IChwYXRoLCBuYW1lKTsKKwkJaWYgKHVubGluayAocGF0aCkgPT0gLTEpIHsKKwkJCXBlcnJvciAoInVubGluayIpOworCQkJZXhpdCAoMSk7CisJCX0KKwl9CisJZXhpdCAoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9wYXJ0aW5mby5jIGIvZTJmc3Byb2dzL21pc2MvcGFydGluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjY5Yzg5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvcGFydGluZm8uYwpAQCAtMCwwICsxLDc4IEBACisvKgorICogcGFydGluZm8uYworICoKKyAqIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbGFpbiBLbmFmZiwgPGFsa25hZmZAaW5uZXQubHU+LgorICoKKyAqIENsZWFuZWQgdXAgYnkgVGhlb2RvcmUgVHMnbywgPHR5dHNvQG1pdC5lZHU+LgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGxpbnV4L2hkcmVnLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKworI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9JTykgJiYgIWRlZmluZWQoQkxLR0VUU0laRSkKKyNkZWZpbmUgQkxLR0VUU0laRSBfSU8oMHgxMiw5NikJLyogcmV0dXJuIGRldmljZSBzaXplICovCisjZW5kaWYKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCXN0cnVjdCBoZF9nZW9tZXRyeSBsb2M7CisJaW50IGZkLCBpOworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlpZiAoYXJnYyA9PSAxKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJVc2FnZTogICVzIGRldmljZS4uLlxuXG5QcmludHMgb3V0IHRoZSAiCisJCQkicGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKwkJCSJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcblxuIiksIGFyZ3ZbMF0sIGFyZ3ZbMF0pOworCQlleGl0KDEpOworCX0KKworCWZvciAoaT0xOyBpIDwgYXJnYzsgaSsrKSB7CisJCWZkID0gb3Blbihhcmd2W2ldLCBPX1JET05MWSk7CisKKwkJaWYgKGZkIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIkNhbm5vdCBvcGVuICVzOiAlcyIpLAorCQkJCWFyZ3ZbaV0sIHN0cmVycm9yKGVycm5vKSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChpb2N0bChmZCwgSERJT19HRVRHRU8sICZsb2MpIDwgMCkgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIkNhbm5vdCBnZXQgZ2VvbWV0cnkgb2YgJXM6ICVzIiksCisJCQkJYXJndltpXSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWNsb3NlKGZkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKworCQlpZiAoaW9jdGwoZmQsIEJMS0dFVFNJWkUsICZzaXplKSA8IDApIHsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJDYW5ub3QgZ2V0IHNpemUgb2YgJXM6ICVzIiksCisJCQkJYXJndltpXSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWNsb3NlKGZkKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJcHJpbnRmKF8oIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIiksCisJCSAgICAgICBhcmd2W2ldLAorCQkgICAgICAgbG9jLmhlYWRzLCAoaW50KWxvYy5zZWN0b3JzLCBsb2MuY3lsaW5kZXJzLAorCQkgICAgICAgKGludClsb2Muc3RhcnQsIHNpemUsIChpbnQpIGxvYy5zdGFydCArIHNpemUgLTEpOworCQljbG9zZShmZCk7CisJfQorCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy9wcm9maWxlLXRvLWMuYXdrIGIvZTJmc3Byb2dzL21pc2MvcHJvZmlsZS10by1jLmF3awpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTY0ZWZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvcHJvZmlsZS10by1jLmF3awpAQCAtMCwwICsxLDEyIEBACisjIS9iaW4vYXdrCitCRUdJTiB7CisgIHByaW50ZigiY29uc3QgY2hhciAqbWtlMmZzX2RlZmF1bHRfcHJvZmlsZSA9IFxuIik7Cit9CisKK3sKKyAgcHJpbnRmKCIgIFwiJXNcXG5cIlxuIiwgJDApOworfQorCitFTkQgeworICBwcmludGYoIjtcbiIsIHN0cikKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL3R1bmUyZnMuOC5pbiBiL2UyZnNwcm9ncy9taXNjL3R1bmUyZnMuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzMyNmExCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvdHVuZTJmcy44LmluCkBAIC0wLDAgKzEsNzU5IEBACisuXCIgUmV2aXNpb24gMS4wIDkzLzA2LzMgMjM6MDAgIGNoaworLlwiIEluaXRpYWwgcmV2aXNpb24KKy5cIgorLlwiCisuVEggVFVORTJGUyA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCit0dW5lMmZzIFwtIGFkanVzdCB0dW5hYmxlIGZpbGVzeXN0ZW0gcGFyYW1ldGVycyBvbiBleHQyL2V4dDMvZXh0NCBmaWxlc3lzdGVtcworLlNIIFNZTk9QU0lTCisuQiB0dW5lMmZzCitbCisuQiBcLWwKK10KK1sKKy5CIFwtYworLkkgbWF4LW1vdW50LWNvdW50cworXQorWworLkIgXC1lCisuSSBlcnJvcnMtYmVoYXZpb3IKK10KK1sKKy5CIFwtZgorXQorWworLkIgXC1pCisuSSBpbnRlcnZhbC1iZXR3ZWVuLWNoZWNrcworXQorWworLkIgXC1JCisuSSBuZXdfaW5vZGVfc2l6ZQorXQorWworLkIgXC1qCitdCitbCisuQiBcLUoKKy5JIGpvdXJuYWwtb3B0aW9ucworXQorWworLkIgXC1tCisuSSByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZQorXQorWworLkIgXC1vCisuUkkgW15dbW91bnQtb3B0aW9ucyBbLC4uLl0KK10KK1sKKy5CIFwtcAorLkkgbW1wX3VwZGF0ZV9pbnRlcnZhbAorXQorWworLkIgXC1yCisuSSByZXNlcnZlZC1ibG9ja3MtY291bnQKK10KK1sKKy5CIFwtcworLkkgc3BhcnNlLXN1cGVyLWZsYWcKK10KK1sKKy5CIFwtdQorLkkgdXNlcgorXQorWworLkIgXC1nCisuSSBncm91cAorXQorWworLkIgXC1DCisuSSBtb3VudC1jb3VudAorXQorWworLkIgXC1FCisuSSBleHRlbmRlZC1vcHRpb25zCitdCitbCisuQiBcLUwKKy5JIHZvbHVtZS1uYW1lCitdCitbCisuQiBcLU0KKy5JIGxhc3QtbW91bnRlZC1kaXJlY3RvcnkKK10KK1sKKy5CIFwtTyAKKy5SSSBbXl0gZmVhdHVyZSBbLC4uLl0KK10KK1sKKy5CIFwtUQorLkkgcXVvdGEtb3B0aW9ucworXQorWworLkIgXC1UCisuSSB0aW1lLWxhc3QtY2hlY2tlZAorXQorWworLkIgXC1VCisuSSBVVUlECitdCitbCisuQiBcLXoKKy5JIHVuZG9fZmlsZQorXQorZGV2aWNlCisuU0ggREVTQ1JJUFRJT04KKy5CSSB0dW5lMmZzCithbGxvd3MgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHRvIGFkanVzdCB2YXJpb3VzIHR1bmFibGUgZmlsZXN5c3RlbSAKK3BhcmFtZXRlcnMgb24gTGludXggZXh0MiwgZXh0Mywgb3IgZXh0NCBmaWxlc3lzdGVtcy4gIFRoZSBjdXJyZW50IHZhbHVlcyAKK29mIHRoZXNlIG9wdGlvbnMgY2FuIGJlIGRpc3BsYXllZCBieSB1c2luZyB0aGUKKy5CIC1sCitvcHRpb24gdG8KKy5CUiB0dW5lMmZzICg4KQorcHJvZ3JhbSwgb3IgYnkgdXNpbmcgdGhlCisuQlIgZHVtcGUyZnMgKDgpCitwcm9ncmFtLgorLlBQCitUaGUKKy5JIGRldmljZQorc3BlY2lmaWVyIGNhbiBlaXRoZXIgYmUgYSBmaWxlbmFtZSAoaS5lLiwgL2Rldi9zZGExKSwgb3IgYSBMQUJFTCBvciBVVUlECitzcGVjaWZpZXI6ICJcZkJMQUJFTD1cZkl2b2x1bWUtbmFtZVxmUiIgb3IgIlxmQlVVSUQ9XGZJdXVpZFxmUiIuICAoaS5lLiwKK0xBQkVMPWhvbWUgb3IgVVVJRD1lNDA0ODZjNi04NGQ1LTRmMmYtYjk5Yy0wMzIyODE3OTljOWQpLgorLlNIIE9QVElPTlMKKy5UUAorLkJJIFwtYyAiIG1heC1tb3VudC1jb3VudHMiCitBZGp1c3QgdGhlIG51bWJlciBvZiBtb3VudHMgYWZ0ZXIgd2hpY2ggdGhlIGZpbGVzeXN0ZW0gd2lsbCBiZSBjaGVja2VkIGJ5IAorLkJSIGUyZnNjayAoOCkuICAKK0lmCisuSSBtYXgtbW91bnQtY291bnRzCitpcyAwIG9yIFwtMSwgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIHdpbGwgYmUgZGlzcmVnYXJkZWQgCitieQorLkJSIGUyZnNjayAoOCkKK2FuZCB0aGUga2VybmVsLgorLnNwCitTdGFnZ2VyaW5nIHRoZSBtb3VudC1jb3VudHMgYXQgd2hpY2ggZmlsZXN5c3RlbXMgYXJlIGZvcmNpYmx5CitjaGVja2VkIHdpbGwgYXZvaWQgYWxsIGZpbGVzeXN0ZW1zIGJlaW5nIGNoZWNrZWQgYXQgb25lIHRpbWUKK3doZW4gdXNpbmcgam91cm5hbGVkIGZpbGVzeXN0ZW1zLgorLnNwCitZb3Ugc2hvdWxkIHN0cm9uZ2x5IGNvbnNpZGVyIHRoZSBjb25zZXF1ZW5jZXMgb2YgZGlzYWJsaW5nCittb3VudC1jb3VudC1kZXBlbmRlbnQgY2hlY2tpbmcgZW50aXJlbHkuICBCYWQgZGlzayBkcml2ZXMsIGNhYmxlcywKK21lbW9yeSwgYW5kIGtlcm5lbCBidWdzIGNvdWxkIGFsbCBjb3JydXB0IGEgZmlsZXN5c3RlbSB3aXRob3V0CittYXJraW5nIHRoZSBmaWxlc3lzdGVtIGRpcnR5IG9yIGluIGVycm9yLiAgSWYgeW91IGFyZSB1c2luZworam91cm5hbGluZyBvbiB5b3VyIGZpbGVzeXN0ZW0sIHlvdXIgZmlsZXN5c3RlbSB3aWxsCisuQiBuZXZlcgorYmUgbWFya2VkIGRpcnR5LCBzbyBpdCB3aWxsIG5vdCBub3JtYWxseSBiZSBjaGVja2VkLiAgQQorZmlsZXN5c3RlbSBlcnJvciBkZXRlY3RlZCBieSB0aGUga2VybmVsIHdpbGwgc3RpbGwgZm9yY2UKK2FuIGZzY2sgb24gdGhlIG5leHQgcmVib290LCBidXQgaXQgbWF5IGFscmVhZHkgYmUgdG9vIGxhdGUKK3RvIHByZXZlbnQgZGF0YSBsb3NzIGF0IHRoYXQgcG9pbnQuCisuc3AKK1NlZSBhbHNvIHRoZQorLkIgXC1pCitvcHRpb24gZm9yIHRpbWUtZGVwZW5kZW50IGNoZWNraW5nLgorLlRQCisuQkkgXC1DICIgbW91bnQtY291bnQiCitTZXQgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgZmlsZXN5c3RlbSBoYXMgYmVlbiBtb3VudGVkLgorSWYgc2V0IHRvIGEgZ3JlYXRlciB2YWx1ZSB0aGFuIHRoZSBtYXgtbW91bnQtY291bnRzIHBhcmFtZXRlcgorc2V0IGJ5IHRoZSAKKy5CIFwtYworb3B0aW9uLAorLkJSIGUyZnNjayAoOCkgCit3aWxsIGNoZWNrIHRoZSBmaWxlc3lzdGVtIGF0IHRoZSBuZXh0IHJlYm9vdC4KKy5UUAorLkJJIFwtZSAiIGVycm9yLWJlaGF2aW9yIgorQ2hhbmdlIHRoZSBiZWhhdmlvciBvZiB0aGUga2VybmVsIGNvZGUgd2hlbiBlcnJvcnMgYXJlIGRldGVjdGVkLgorSW4gYWxsIGNhc2VzLCBhIGZpbGVzeXN0ZW0gZXJyb3Igd2lsbCBjYXVzZQorLkJSIGUyZnNjayAoOCkKK3RvIGNoZWNrIHRoZSBmaWxlc3lzdGVtIG9uIHRoZSBuZXh0IGJvb3QuCisuSSBlcnJvci1iZWhhdmlvcgorY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorLlJTIDEuMmkKKy5UUCAxLjJpCisuQiBjb250aW51ZQorQ29udGludWUgbm9ybWFsIGV4ZWN1dGlvbi4KKy5UUAorLkIgcmVtb3VudC1ybworUmVtb3VudCBmaWxlc3lzdGVtIHJlYWQtb25seS4KKy5UUAorLkIgcGFuaWMKK0NhdXNlIGEga2VybmVsIHBhbmljLgorLlJFCisuVFAKKy5CSSBcLUUgIiBleHRlbmRlZC1vcHRpb25zIgorU2V0IGV4dGVuZGVkIG9wdGlvbnMgZm9yIHRoZSBmaWxlc3lzdGVtLiAgRXh0ZW5kZWQgb3B0aW9ucyBhcmUgY29tbWEKK3NlcGFyYXRlZCwgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHVzaW5nIHRoZSBlcXVhbHMgKCc9Jykgc2lnbi4KK1RoZSBmb2xsb3dpbmcgZXh0ZW5kZWQgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorLlJTIDEuMmkKKy5UUAorLkIgY2xlYXJfbW1wCitSZXNldCB0aGUgTU1QIGJsb2NrIChpZiBhbnkpIGJhY2sgdG8gdGhlIGNsZWFuIHN0YXRlLiAgVXNlIG9ubHkgaWYKK2Fic29sdXRlbHkgY2VydGFpbiB0aGUgZGV2aWNlIGlzIG5vdCBjdXJyZW50bHkgbW91bnRlZCBvciBiZWluZworZnNja2VkLCBvciBtYWpvciBmaWxlc3lzdGVtIGNvcnJ1cHRpb24gY2FuIHJlc3VsdC4gIE5lZWRzICctZicuCisuVFAKKy5CSSBtbXBfdXBkYXRlX2ludGVydmFsPSBpbnRlcnZhbAorQWRqdXN0IHRoZSBpbml0aWFsIE1NUCB1cGRhdGUgaW50ZXJ2YWwgdG8KKy5JIGludGVydmFsCitzZWNvbmRzLiAgU3BlY2lmeWluZyBhbgorLkkgaW50ZXJ2YWwKK29mIDAgbWVhbnMgdG8gdXNlIHRoZSBkZWZhdWx0IGludGVydmFsLiAgVGhlIHNwZWNpZmllZCBpbnRlcnZhbCBtdXN0CitiZSBsZXNzIHRoYW4gMzAwIHNlY29uZHMuICBSZXF1aXJlcyB0aGF0IHRoZQorLkIgbW1wCitmZWF0dXJlIGJlIGVuYWJsZWQuCisuVFAKKy5CSSBzdHJpZGU9IHN0cmlkZS1zaXplCitDb25maWd1cmUgdGhlIGZpbGVzeXN0ZW0gZm9yIGEgUkFJRCBhcnJheSB3aXRoCisuSSBzdHJpZGUtc2l6ZQorZmlsZXN5c3RlbSBibG9ja3MuIFRoaXMgaXMgdGhlIG51bWJlciBvZiBibG9ja3MgcmVhZCBvciB3cml0dGVuIHRvIGRpc2sKK2JlZm9yZSBtb3ZpbmcgdG8gbmV4dCBkaXNrLiBUaGlzIG1vc3RseSBhZmZlY3RzIHBsYWNlbWVudCBvZiBmaWxlc3lzdGVtCittZXRhZGF0YSBsaWtlIGJpdG1hcHMgYXQKKy5CUiBta2UyZnMgKDIpCit0aW1lIHRvIGF2b2lkIHBsYWNpbmcgdGhlbSBvbiBhIHNpbmdsZSBkaXNrLCB3aGljaCBjYW4gaHVydCB0aGUgcGVyZm9ybWFuY2UuCitJdCBtYXkgYWxzbyBiZSB1c2VkIGJ5IGJsb2NrIGFsbG9jYXRvci4KKy5UUAorLkJJIHN0cmlwZV93aWR0aD0gc3RyaXBlLXdpZHRoCitDb25maWd1cmUgdGhlIGZpbGVzeXN0ZW0gZm9yIGEgUkFJRCBhcnJheSB3aXRoCisuSSBzdHJpcGUtd2lkdGgKK2ZpbGVzeXN0ZW0gYmxvY2tzIHBlciBzdHJpcGUuIFRoaXMgaXMgdHlwaWNhbGx5IGJlIHN0cmlkZS1zaXplICogTiwgd2hlcmUKK04gaXMgdGhlIG51bWJlciBvZiBkYXRhIGRpc2tzIGluIHRoZSBSQUlEIChlLmcuIFJBSUQgNSBOKzEsIFJBSUQgNiBOKzIpLgorVGhpcyBhbGxvd3MgdGhlIGJsb2NrIGFsbG9jYXRvciB0byBwcmV2ZW50IHJlYWQtbW9kaWZ5LXdyaXRlIG9mIHRoZQorcGFyaXR5IGluIGEgUkFJRCBzdHJpcGUgaWYgcG9zc2libGUgd2hlbiB0aGUgZGF0YSBpcyB3cml0dGVuLgorLlRQCisuQkkgaGFzaF9hbGc9IGhhc2gtYWxnCitTZXQgdGhlIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdXNlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCBoYXNoZWQgYi10cmVlCitkaXJlY3Rvcmllcy4gIFZhbGlkIGFsZ29yaXRobXMgYWNjZXB0ZWQgYXJlOgorLklSIGxlZ2FjeSAsCisuSVIgaGFsZl9tZDQgLAorYW5kCisuSVIgdGVhIC4KKy5UUAorLkJJIG1vdW50X29wdHM9IG1vdW50X29wdGlvbl9zdHJpbmcKK1NldCBhIHNldCBvZiBkZWZhdWx0IG1vdW50IG9wdGlvbnMgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gdGhlIGZpbGUKK3N5c3RlbSBpcyBtb3VudGVkLiAgVW5saWtlIHRoZSBiaXRtYXNrLWJhc2VkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB3aGljaAorY2FuIGJlIHNwZWNpZmllZCB3aXRoIHRoZQorLkIgLW8KK29wdGlvbiwKKy5JIG1vdW50X29wdGlvbl9zdHJpbmcKK2lzIGFuIGFyYml0cmFyeSBzdHJpbmcgd2l0aCBhIG1heGltdW0gbGVuZ3RoIG9mIDYzIGJ5dGVzLCB3aGljaCBpcworc3RvcmVkIGluIHRoZSBzdXBlcmJsb2NrLgorLklQCitUaGUgZXh0NCBmaWxlIHN5c3RlbSBkcml2ZXIgd2lsbCBmaXJzdCBhcHBseQordGhlIGJpdG1hc2stYmFzZWQgZGVmYXVsdCBvcHRpb25zLCBhbmQgdGhlbiBwYXJzZSB0aGUKKy5JUiBtb3VudF9vcHRpb25fc3RyaW5nICwKK2JlZm9yZSBwYXJzaW5nIHRoZSBtb3VudCBvcHRpb25zIHBhc3NlZCBmcm9tIHRoZQorLkJSIG1vdW50ICg4KQorcHJvZ3JhbS4KKy5JUAorVGhpcyBzdXBlcmJsb2NrIHNldHRpbmcgaXMgb25seSBob25vcmVkIGluIDIuNi4zNSsga2VybmVsczsKK2FuZCBub3QgYXQgYWxsIGJ5IHRoZSBleHQyIGFuZCBleHQzIGZpbGUgc3lzdGVtIGRyaXZlcnMuCisuVFAKKy5CIHRlc3RfZnMKK1NldCBhIGZsYWcgaW4gdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayBpbmRpY2F0aW5nIHRoYXQgaXQgbWF5IGJlCittb3VudGVkIHVzaW5nIGV4cGVyaW1lbnRhbCBrZXJuZWwgY29kZSwgc3VjaCBhcyB0aGUgZXh0NGRldiBmaWxlc3lzdGVtLgorLlRQCisuQiBedGVzdF9mcworQ2xlYXIgdGhlIHRlc3RfZnMgZmxhZywgaW5kaWNhdGluZyB0aGUgZmlsZXN5c3RlbSBzaG91bGQgb25seSBiZSBtb3VudGVkCit1c2luZyBwcm9kdWN0aW9uLWxldmVsIGZpbGVzeXN0ZW0gY29kZS4KKy5SRQorLlRQCisuQiBcLWYKK0ZvcmNlIHRoZSB0dW5lMmZzIG9wZXJhdGlvbiB0byBjb21wbGV0ZSBldmVuIGluIHRoZSBmYWNlIG9mIGVycm9ycy4gIFRoaXMgCitvcHRpb24gaXMgdXNlZnVsIHdoZW4gcmVtb3ZpbmcgdGhlIAorLkIgaGFzX2pvdXJuYWwKK2ZpbGVzeXN0ZW0gZmVhdHVyZSBmcm9tIGEgZmlsZXN5c3RlbSB3aGljaCBoYXMgCithbiBleHRlcm5hbCBqb3VybmFsIChvciBpcyBjb3JydXB0ZWQKK3N1Y2ggdGhhdCBpdCBhcHBlYXJzIHRvIGhhdmUgYW4gZXh0ZXJuYWwgam91cm5hbCksIGJ1dCB0aGF0IAorZXh0ZXJuYWwgam91cm5hbCBpcyBub3QgYXZhaWxhYmxlLiAgIElmIHRoZSBmaWxlc3lzdGVtIGFwcGVhcnMgdG8gcmVxdWlyZQoram91cm5hbCByZXBsYXksIHRoZQorLkIgXC1mCitmbGFnIG11c3QgYmUgc3BlY2lmaWVkIHR3aWNlIHRvIHByb2NlZWQuCisuc3AKKy5CIFdBUk5JTkc6CitSZW1vdmluZyBhbiBleHRlcm5hbCBqb3VybmFsIGZyb20gYSBmaWxlc3lzdGVtIHdoaWNoIHdhcyBub3QgY2xlYW5seSB1bm1vdW50ZWQKK3dpdGhvdXQgZmlyc3QgcmVwbGF5aW5nIHRoZSBleHRlcm5hbCBqb3VybmFsIGNhbiByZXN1bHQgaW4KK3NldmVyZSBkYXRhIGxvc3MgYW5kIGZpbGVzeXN0ZW0gY29ycnVwdGlvbi4KKy5UUAorLkJJIFwtZyAiIGdyb3VwIgorU2V0IHRoZSBncm91cCB3aGljaCBjYW4gdXNlIHRoZSByZXNlcnZlZCBmaWxlc3lzdGVtIGJsb2Nrcy4KK1RoZSAKKy5JIGdyb3VwCitwYXJhbWV0ZXIgY2FuIGJlIGEgbnVtZXJpY2FsIGdpZCBvciBhIGdyb3VwIG5hbWUuICBJZiBhIGdyb3VwIG5hbWUgaXMgZ2l2ZW4sCitpdCBpcyBjb252ZXJ0ZWQgdG8gYSBudW1lcmljYWwgZ2lkIGJlZm9yZSBpdCBpcyBzdG9yZWQgaW4gdGhlIHN1cGVyYmxvY2suCisuVFAKKy5CIFwtaSAiIFxmSWludGVydmFsLWJldHdlZW4tY2hlY2tzXGZSW1xmQmRcZlJ8XGZCbVxmUnxcZkJ3XGZSXSIKK0FkanVzdCB0aGUgbWF4aW1hbCB0aW1lIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW0gY2hlY2tzLiAKK05vIHN1ZmZpeCBvcgorLkIgZAord2lsbCBpbnRlcnByZXQgdGhlIG51bWJlcgorLkkgaW50ZXJ2YWwtYmV0d2Vlbi1jaGVja3MKK2FzIGRheXMsCisuQiBtCithcyBtb250aHMsIGFuZAorLkIgdworYXMgd2Vla3MuICBBIHZhbHVlIG9mIHplcm8gd2lsbCBkaXNhYmxlIHRoZSB0aW1lLWRlcGVuZGVudCBjaGVja2luZy4KKy5zcAorSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdGhhdCBlaXRoZXIKKy5CIFwtYworKG1vdW50LWNvdW50LWRlcGVuZGVudCkgb3IKKy5CIFwtaQorKHRpbWUtZGVwZW5kZW50KSBjaGVja2luZyBiZSBlbmFibGVkIHRvIGZvcmNlIHBlcmlvZGljIGZ1bGwKKy5CUiBlMmZzY2sgKDgpCitjaGVja2luZyBvZiB0aGUgZmlsZXN5c3RlbS4gIEZhaWx1cmUgdG8gZG8gc28gbWF5IGxlYWQgdG8gZmlsZXN5c3RlbQorY29ycnVwdGlvbiAoZHVlIHRvIGJhZCBkaXNrcywgY2FibGVzLCBtZW1vcnksIG9yIGtlcm5lbCBidWdzKSBnb2luZwordW5ub3RpY2VkLCB1bHRpbWF0ZWx5IHJlc3VsdGluZyBpbiBkYXRhIGxvc3Mgb3IgY29ycnVwdGlvbi4KKy5UUAorLkIgXC1JCitDaGFuZ2UgdGhlIGlub2RlIHNpemUgdXNlZCBieSB0aGUgZmlsZSBzeXN0ZW0uICAgVGhpcyByZXF1aXJlcyByZXdyaXRpbmcKK3RoZSBpbm9kZSB0YWJsZSwgc28gaXQgcmVxdWlyZXMgdGhhdCB0aGUgZmlsZSBzeXN0ZW0gaXMgY2hlY2tlZCBmb3IKK2NvbnNpc3RlbmN5IGZpcnN0IHVzaW5nCisuQlIgZTJmc2NrICg4KS4KK1RoaXMgb3BlcmF0aW9uIGNhbiBhbHNvIHRha2UgYSB3aGlsZSBhbmQgdGhlIGZpbGUgc3lzdGVtIGNhbiBiZQorY29ycnVwdGVkIGFuZCBkYXRhIGxvc3QgaWYgaXQgaXMgaW50ZXJydXB0ZWQgd2hpbGUgaW4gdGhlIG1pZGRsZSBvZgorY29udmVydGluZyB0aGUgZmlsZSBzeXN0ZW0uCisuVFAKKy5CIFwtagorQWRkIGFuIGV4dDMgam91cm5hbCB0byB0aGUgZmlsZXN5c3RlbS4gIElmIHRoZSAKKy5CIFwtSgorb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGpvdXJuYWwgcGFyYW1ldGVycyB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlCithbiBhcHByb3ByaWF0ZWx5IHNpemVkIGpvdXJuYWwgKGdpdmVuIHRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtKSAKK3N0b3JlZCB3aXRoaW4gdGhlIGZpbGVzeXN0ZW0uICBOb3RlIHRoYXQgeW91IG11c3QgYmUgdXNpbmcgYSBrZXJuZWwKK3doaWNoIGhhcyBleHQzIHN1cHBvcnQgaW4gb3JkZXIgdG8gYWN0dWFsbHkgbWFrZSB1c2Ugb2YgdGhlIGpvdXJuYWwuCisuSVAKK0lmIHRoaXMgb3B0aW9uIGlzIHVzZWQgdG8gY3JlYXRlIGEgam91cm5hbCBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSwgYW4KK2ltbXV0YWJsZSBmaWxlLAorLkJSIC5qb3VybmFsICwKK3dpbGwgYmUgY3JlYXRlZCBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgZmlsZXN5c3RlbSwgYXMgaXQgaXMKK3RoZSBvbmx5IHNhZmUgd2F5IHRvIGNyZWF0ZSB0aGUgam91cm5hbCBpbm9kZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcworbW91bnRlZC4gIFdoaWxlIHRoZSBleHQzIGpvdXJuYWwgaXMgdmlzaWJsZSwgaXQgaXMgbm90IHNhZmUgdG8KK2RlbGV0ZSBpdCwgb3IgbW9kaWZ5IGl0IHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQ7IGZvciB0aGlzCityZWFzb24gdGhlIGZpbGUgaXMgbWFya2VkIGltbXV0YWJsZS4KK1doaWxlIGNoZWNraW5nIHVubW91bnRlZCBmaWxlc3lzdGVtcywgCisuQlIgZTJmc2NrICg4KQord2lsbCBhdXRvbWF0aWNhbGx5IG1vdmUgCisuQiAuam91cm5hbAorZmlsZXMgdG8gdGhlIGludmlzaWJsZSwgcmVzZXJ2ZWQgam91cm5hbCBpbm9kZS4gIEZvciBhbGwgZmlsZXN5c3RlbXMKK2V4Y2VwdCBmb3IgdGhlIHJvb3QgZmlsZXN5c3RlbSwgIHRoaXMgc2hvdWxkIGhhcHBlbiBhdXRvbWF0aWNhbGx5IGFuZAorbmF0dXJhbGx5IGR1cmluZyB0aGUgbmV4dCByZWJvb3QgY3ljbGUuICBTaW5jZSB0aGUgcm9vdCBmaWxlc3lzdGVtIGlzCittb3VudGVkIHJlYWQtb25seSwKKy5CUiBlMmZzY2sgKDgpCittdXN0IGJlIHJ1biBmcm9tIGEgcmVzY3VlIGZsb3BweSBpbiBvcmRlciB0byBlZmZlY3QgdGhpcyB0cmFuc2l0aW9uLgorLklQCitPbiBzb21lIGRpc3RyaWJ1dGlvbnMsIHN1Y2ggYXMgRGViaWFuLCBpZiBhbiBpbml0aWFsIHJhbWRpc2sgaXMgdXNlZCwKK3RoZSBpbml0cmQgc2NyaXB0cyB3aWxsIGF1dG9tYXRpY2FsbHkgY29udmVydCBhbiBleHQyIHJvb3QgZmlsZXN5c3RlbQordG8gZXh0MyBpZiB0aGUgIAorLkJSIC9ldGMvZnN0YWIKK2ZpbGUgc3BlY2lmaWVzIHRoZSBleHQzIGZpbGVzeXN0ZW0gZm9yIHRoZSByb290IGZpbGVzeXN0ZW0gaW4gb3JkZXIgdG8KK2F2b2lkIHJlcXVpcmluZyB0aGUgdXNlIG9mIGEgcmVzY3VlIGZsb3BweSB0byBhZGQgYW4gZXh0MyBqb3VybmFsIHRvCit0aGUgcm9vdCBmaWxlc3lzdGVtLgorLlRQCisuQlIgXC1KICIgam91cm5hbC1vcHRpb25zIgorT3ZlcnJpZGUgdGhlIGRlZmF1bHQgZXh0MyBqb3VybmFsIHBhcmFtZXRlcnMuIEpvdXJuYWwgb3B0aW9ucyBhcmUgY29tbWEKK3NlcGFyYXRlZCwgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHVzaW5nIHRoZSBlcXVhbHMgKCc9JykgIHNpZ24uCitUaGUgZm9sbG93aW5nIGpvdXJuYWwgb3B0aW9ucyBhcmUgc3VwcG9ydGVkOgorLlJTIDEuMmkKKy5UUAorLkJJIHNpemU9IGpvdXJuYWwtc2l6ZQorQ3JlYXRlIGEgam91cm5hbCBzdG9yZWQgaW4gdGhlIGZpbGVzeXN0ZW0gb2Ygc2l6ZQorLkkgam91cm5hbC1zaXplCittZWdhYnl0ZXMuICAgVGhlIHNpemUgb2YgdGhlIGpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGZpbGVzeXN0ZW0gYmxvY2tzCisoaS5lLiwgMU1CIGlmIHVzaW5nIDFrIGJsb2NrcywgNE1CIGlmIHVzaW5nIDRrIGJsb2NrcywgZXRjLikKK2FuZCBtYXkgYmUgbm8gbW9yZSB0aGFuIDEwLDI0MCwwMDAgZmlsZXN5c3RlbSBibG9ja3MuCitUaGVyZSBtdXN0IGJlIGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSBmaWxlc3lzdGVtIHRvIGNyZWF0ZSBhIGpvdXJuYWwgb2YKK3RoYXQgc2l6ZS4KKy5UUAorLkJJIGxvY2F0aW9uID1qb3VybmFsLWxvY2F0aW9uCitTcGVjaWZ5IHRoZSBsb2NhdGlvbiBvZiB0aGUgam91cm5hbC4gIFRoZSBhcmd1bWVudAorLkkgam91cm5hbC1sb2NhdGlvbgorY2FuIGVpdGhlciBiZSBzcGVjaWZpZWQgYXMgYSBibG9jayBudW1iZXIsIG9yIGlmIHRoZSBudW1iZXIgaGFzIGEgdW5pdHMKK3N1ZmZpeCAoZS5nLiwgJ00nLCAnRycsIGV0Yy4pIGludGVycHJldCBpdCBhcyB0aGUgb2Zmc2V0IGZyb20gdGhlCitiZWdpbm5pbmcgb2YgdGhlIGZpbGUgc3lzdGVtLgorQEpERVZALlRQCitASkRFVkAuQkkgZGV2aWNlPSBleHRlcm5hbC1qb3VybmFsCitASkRFVkBBdHRhY2ggdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIGpvdXJuYWwgYmxvY2sgZGV2aWNlIGxvY2F0ZWQgb24KK0BKREVWQC5JUiBleHRlcm5hbC1qb3VybmFsIC4KK0BKREVWQFRoZSBleHRlcm5hbCAKK0BKREVWQGpvdXJuYWwgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBjcmVhdGVkIHVzaW5nIHRoZSBjb21tYW5kCitASkRFVkAuSVAKK0BKREVWQC5CIG1rZTJmcyAtTyBqb3VybmFsX2RldiAKK0BKREVWQC5JIGV4dGVybmFsLWpvdXJuYWwKK0BKREVWQC5JUAorQEpERVZATm90ZSB0aGF0CitASkRFVkAuSSBleHRlcm5hbC1qb3VybmFsCitASkRFVkBtdXN0IGJlIGZvcm1hdHRlZCB3aXRoIHRoZSBzYW1lIGJsb2NrCitASkRFVkBzaXplIGFzIGZpbGVzeXN0ZW1zIHdoaWNoIHdpbGwgYmUgdXNpbmcgaXQuCitASkRFVkBJbiBhZGRpdGlvbiwgd2hpbGUgdGhlcmUgaXMgc3VwcG9ydCBmb3IgYXR0YWNoaW5nCitASkRFVkBtdWx0aXBsZSBmaWxlc3lzdGVtcyB0byBhIHNpbmdsZSBleHRlcm5hbCBqb3VybmFsLAorQEpERVZAdGhlIExpbnV4IGtlcm5lbCBhbmQgCitASkRFVkAuQlIgZTJmc2NrICg4KQorQEpERVZAZG8gbm90IGN1cnJlbnRseSBzdXBwb3J0IHNoYXJlZCBleHRlcm5hbCBqb3VybmFscyB5ZXQuCitASkRFVkAuSVAKK0BKREVWQEluc3RlYWQgb2Ygc3BlY2lmeWluZyBhIGRldmljZSBuYW1lIGRpcmVjdGx5LAorQEpERVZALkkgZXh0ZXJuYWwtam91cm5hbAorQEpERVZAY2FuIGFsc28gYmUgc3BlY2lmaWVkIGJ5IGVpdGhlcgorQEpERVZALkJJIExBQkVMPSBsYWJlbAorQEpERVZAb3IKK0BKREVWQC5CSSBVVUlEPSBVVUlECitASkRFVkB0byBsb2NhdGUgdGhlIGV4dGVybmFsIGpvdXJuYWwgYnkgZWl0aGVyIHRoZSB2b2x1bWUgbGFiZWwgb3IgVVVJRAorQEpERVZAc3RvcmVkIGluIHRoZSBleHQyIHN1cGVyYmxvY2sgYXQgdGhlIHN0YXJ0IG9mIHRoZSBqb3VybmFsLiAgVXNlCitASkRFVkAuQlIgZHVtcGUyZnMgKDgpCitASkRFVkB0byBkaXNwbGF5IGEgam91cm5hbCBkZXZpY2UncyB2b2x1bWUgbGFiZWwgYW5kIFVVSUQuICBTZWUgYWxzbyB0aGUKK0BKREVWQC5CIC1MCitASkRFVkBvcHRpb24gb2YKK0BKREVWQC5CUiB0dW5lMmZzICg4KS4KKy5SRQorQEpERVZALklQCitASkRFVkBPbmx5IG9uZSBvZiB0aGUKK0BKREVWQC5CUiBzaXplICIgb3IgIiBkZXZpY2UKK0BKREVWQG9wdGlvbnMgY2FuIGJlIGdpdmVuIGZvciBhIGZpbGVzeXN0ZW0uCisuVFAKKy5CIFwtbAorTGlzdCB0aGUgY29udGVudHMgb2YgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jaywgaW5jbHVkaW5nIHRoZSBjdXJyZW50Cit2YWx1ZXMgb2YgdGhlIHBhcmFtZXRlcnMgdGhhdCBjYW4gYmUgc2V0IHZpYSB0aGlzIHByb2dyYW0uCisuVFAKKy5CSSBcLUwgIiB2b2x1bWUtbGFiZWwiCitTZXQgdGhlIHZvbHVtZSBsYWJlbCBvZiB0aGUgZmlsZXN5c3RlbS4gIAorRXh0MiBmaWxlc3lzdGVtIGxhYmVscyBjYW4gYmUgYXQgbW9zdCAxNiBjaGFyYWN0ZXJzIGxvbmc7IGlmCisuSSB2b2x1bWUtbGFiZWwgCitpcyBsb25nZXIgdGhhbiAxNiBjaGFyYWN0ZXJzLCAKKy5CIHR1bmUyZnMKK3dpbGwgdHJ1bmNhdGUgaXQgYW5kIHByaW50IGEgd2FybmluZy4gIFRoZSB2b2x1bWUgbGFiZWwgY2FuIGJlIHVzZWQKK2J5CisuQlIgbW91bnQgKDgpLAorLkJSIGZzY2sgKDgpLAorYW5kCisuQlIgL2V0Yy9mc3RhYiAoNSkKKyhhbmQgcG9zc2libHkgb3RoZXJzKSBieSBzcGVjaWZ5aW5nCisuQkkgTEFCRUw9IHZvbHVtZV9sYWJlbAoraW5zdGVhZCBvZiBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIG5hbWUgbGlrZQorLkJSIC9kZXYvaGRhNSAuCisuVFAKKy5CSSBcLW0gIiByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZSIKK1NldCB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZmlsZXN5c3RlbSB3aGljaCBtYXkgb25seSBiZSBhbGxvY2F0ZWQKK2J5IHByaXZpbGVnZWQgcHJvY2Vzc2VzLiAgIFJlc2VydmluZyBzb21lIG51bWJlciBvZiBmaWxlc3lzdGVtIGJsb2NrcyAKK2ZvciB1c2UgYnkgcHJpdmlsZWdlZCBwcm9jZXNzZXMgaXMgZG9uZSAKK3RvIGF2b2lkIGZpbGVzeXN0ZW0gZnJhZ21lbnRhdGlvbiwgYW5kIHRvIGFsbG93IHN5c3RlbQorZGFlbW9ucywgc3VjaCBhcyAKKy5CUiBzeXNsb2dkICg4KSwKK3RvIGNvbnRpbnVlIHRvIGZ1bmN0aW9uIGNvcnJlY3RseSBhZnRlciBub24tcHJpdmlsZWdlZCBwcm9jZXNzZXMgYXJlIAorcHJldmVudGVkIGZyb20gd3JpdGluZyB0byB0aGUgZmlsZXN5c3RlbS4gIE5vcm1hbGx5LCB0aGUgZGVmYXVsdCBwZXJjZW50YWdlIAorb2YgcmVzZXJ2ZWQgYmxvY2tzIGlzIDUlLgorLlRQCisuQkkgXC1NICIgbGFzdC1tb3VudGVkLWRpcmVjdG9yeSIKK1NldCB0aGUgbGFzdC1tb3VudGVkIGRpcmVjdG9yeSBmb3IgdGhlIGZpbGVzeXN0ZW0uCisuVFAKKy5CUiBcLW8gIiBbXl1cZkltb3VudC1vcHRpb25cZlJbLC4uLl0iCitTZXQgb3IgY2xlYXIgdGhlIGluZGljYXRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgaW4gdGhlIGZpbGVzeXN0ZW0uCitEZWZhdWx0IG1vdW50IG9wdGlvbnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgbW91bnQgb3B0aW9ucyBzcGVjaWZpZWQgCitlaXRoZXIgaW4gCisuQlIgL2V0Yy9mc3RhYiAoNSkKK29yIG9uIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvCisuQlIgbW91bnQgKDgpLiAgIAorT2xkZXIga2VybmVscyBtYXkgbm90IHN1cHBvcnQgdGhpcyBmZWF0dXJlOyBpbiBwYXJ0aWN1bGFyLAora2VybmVscyB3aGljaCBwcmVkYXRlIDIuNC4yMCB3aWxsIGFsbW9zdCBjZXJ0YWlubHkgaWdub3JlIHRoZQorZGVmYXVsdCBtb3VudCBvcHRpb25zIGZpZWxkIGluIHRoZSBzdXBlcmJsb2NrLgorLklQCitNb3JlIHRoYW4gb25lIG1vdW50IG9wdGlvbiBjYW4gYmUgY2xlYXJlZCBvciBzZXQgYnkgc2VwYXJhdGluZworZmVhdHVyZXMgd2l0aCBjb21tYXMuICBNb3VudCBvcHRpb25zIHByZWZpeGVkIHdpdGggYSAKK2NhcmV0IGNoYXJhY3RlciAoJ14nKSB3aWxsIGJlIGNsZWFyZWQgaW4gdGhlIGZpbGVzeXN0ZW0ncyBzdXBlcmJsb2NrOyAKK21vdW50IG9wdGlvbnMgd2l0aG91dCBhIHByZWZpeCBjaGFyYWN0ZXIgb3IgcHJlZml4ZWQgd2l0aCBhIHBsdXMgCitjaGFyYWN0ZXIgKCcrJykgd2lsbCBiZSBhZGRlZCB0byB0aGUgZmlsZXN5c3RlbS4KKy5JUAorVGhlIGZvbGxvd2luZyBtb3VudCBvcHRpb25zIGNhbiBiZSBzZXQgb3IgY2xlYXJlZCB1c2luZworLkJSIHR1bmUyZnMgOgorLlJTIDEuMmkKKy5UUAorLkIgZGVidWcKK0VuYWJsZSBkZWJ1Z2dpbmcgY29kZSBmb3IgdGhpcyBmaWxlc3lzdGVtLgorLlRQCisuQiBic2Rncm91cHMKK0VtdWxhdGUgQlNEIGJlaGF2aW9yIHdoZW4gY3JlYXRpbmcgbmV3IGZpbGVzOiB0aGV5IHdpbGwgdGFrZSB0aGUgZ3JvdXAtaWQKK29mIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhleSB3ZXJlIGNyZWF0ZWQuICBUaGUgc3RhbmRhcmQgU3lzdGVtIFYgYmVoYXZpb3IKK2lzIHRoZSBkZWZhdWx0LCB3aGVyZSBuZXdseSBjcmVhdGVkIGZpbGVzIHRha2Ugb24gdGhlIGZzZ2lkIG9mIHRoZSBjdXJyZW50Citwcm9jZXNzLCB1bmxlc3MgdGhlIGRpcmVjdG9yeSBoYXMgdGhlIHNldGdpZCBiaXQgc2V0LCBpbiB3aGljaCBjYXNlIGl0IHRha2VzIAordGhlIGdpZCBmcm9tIHRoZSBwYXJlbnQgZGlyZWN0b3J5LCBhbmQgYWxzbyBnZXRzIHRoZSBzZXRnaWQgYml0IHNldCBpZiBpdCBpcyAKK2EgZGlyZWN0b3J5IGl0c2VsZi4KKy5UUAorLkIgdXNlcl94YXR0cgorRW5hYmxlIHVzZXItc3BlY2lmaWVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCisuVFAKKy5CIGFjbAorRW5hYmxlIFBvc2l4IEFjY2VzcyBDb250cm9sIExpc3RzLgorLlRQCisuQiB1aWQxNgorRGlzYWJsZXMgMzItYml0IFVJRHMgYW5kIEdJRHMuICBUaGlzIGlzIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGgKK29sZGVyIGtlcm5lbHMgd2hpY2ggb25seSBzdG9yZSBhbmQgZXhwZWN0IDE2LWJpdCB2YWx1ZXMuCisuVFAKKy5CIGpvdXJuYWxfZGF0YQorV2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIHdpdGggam91cm5hbGxpbmcgZW5hYmxlZCwgYWxsIGRhdGEKKyhub3QganVzdCBtZXRhZGF0YSkgaXMgY29tbWl0dGVkIGludG8gdGhlIGpvdXJuYWwgcHJpb3IgdG8gYmVpbmcgd3JpdHRlbgoraW50byB0aGUgbWFpbiBmaWxlc3lzdGVtLgorLlRQCisuQiBqb3VybmFsX2RhdGFfb3JkZXJlZAorV2hlbiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIHdpdGggam91cm5hbGxpbmcgZW5hYmxlZCwgYWxsIGRhdGEgaXMgZm9yY2VkCitkaXJlY3RseSBvdXQgdG8gdGhlIG1haW4gZmlsZSBzeXN0ZW0gcHJpb3IgdG8gaXRzIG1ldGFkYXRhIGJlaW5nIGNvbW1pdHRlZCAKK3RvIHRoZSBqb3VybmFsLgorLlRQCisuQiBqb3VybmFsX2RhdGFfd3JpdGViYWNrCitXaGVuIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgd2l0aCBqb3VybmFsbGluZyBlbmFibGVkLCBkYXRhIG1heSBiZQord3JpdHRlbiBpbnRvIHRoZSBtYWluIGZpbGVzeXN0ZW0gYWZ0ZXIgaXRzIG1ldGFkYXRhIGhhcyBiZWVuIGNvbW1pdHRlZAordG8gdGhlIGpvdXJuYWwuICBUaGlzIG1heSBpbmNyZWFzZSB0aHJvdWdocHV0LCBob3dldmVyLCBpdCBtYXkgYWxsb3cgb2xkCitkYXRhIHRvIGFwcGVhciBpbiBmaWxlcyBhZnRlciBhIGNyYXNoIGFuZCBqb3VybmFsIHJlY292ZXJ5LgorLlRQCisuQiBub2JhcnJpZXIKK1RoZSBmaWxlIHN5c3RlbSB3aWxsIGJlIG1vdW50ZWQgd2l0aCBiYXJyaWVyIG9wZXJhdGlvbnMgaW4gdGhlIGpvdXJuYWwKK2Rpc2FibGVkLiAgKFRoaXMgb3B0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZXh0NCBmaWxlCitzeXN0ZW0gZHJpdmVyIGluIDIuNi4zNSsga2VybmVscy4pCisuVFAKKy5CIGJsb2NrX3ZhbGlkaXR5CitUaGUgZmlsZSBzeXN0ZW0gd2lsbCBiZSBtb3VudGVkIHdpdGggdGhlIGJsb2NrX3ZhbGlkaXR5IG9wdGlvbiBlbmFibGVkLAord2hpY2ggY2F1c2VzIGV4dHJhIGNoZWNrcyB0byBiZSBwZXJmb3JtZWQgYWZ0ZXIgcmVhZGluZyBvciB3cml0aW5nIGZyb20KK3RoZSBmaWxlIHN5c3RlbS4gIFRoaXMgcHJldmVudHMgY29ycnVwdGVkIG1ldGFkYXRhIGJsb2NrcyBmcm9tIGNhdXNpbmcKK2ZpbGUgc3lzdGVtIGRhbWFnZSBieSBvdmVyd3JpdGluZyBwYXJ0cyBvZiB0aGUgaW5vZGUgdGFibGUgb3IgYmxvY2sKK2dyb3VwIGRlc2NyaXB0b3JzLiAgVGhpcyBjb21lcyBhdCB0aGUgY29zdCBvZiBpbmNyZWFzZWQgbWVtb3J5IGFuZCBDUFUKK292ZXJoZWFkLCBzbyBpdCBpcyBlbmFibGVkIG9ubHkgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gIChUaGlzIG9wdGlvbiBpcworY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkIGJ5IHRoZSBleHQ0IGZpbGUgc3lzdGVtIGRyaXZlciBpbiAyLjYuMzUrCitrZXJuZWxzLikKKy5UUAorLkIgZGlzY2FyZAorVGhlIGZpbGUgc3lzdGVtIHdpbGwgYmUgbW91bnRlZCB3aXRoIHRoZSBkaXNjYXJkIG1vdW50IG9wdGlvbi4gIFRoaXMgd2lsbAorY2F1c2UgdGhlIGZpbGUgc3lzdGVtIGRyaXZlciB0byBhdHRlbXB0IHRvIHVzZSB0aGUgdHJpbS9kaXNjYXJkIGZlYXR1cmUKK29mIHNvbWUgc3RvcmFnZSBkZXZpY2VzIChzdWNoIGFzIFNTRCdzIGFuZCB0aGluLXByb3Zpc2lvbmVkIGRyaXZlcworYXZhaWxhYmxlIGluIHNvbWUgZW50ZXJwcmlzZSBzdG9yYWdlIGFycmF5cykgdG8gaW5mb3JtIHRoZSBzdG9yYWdlCitkZXZpY2UgdGhhdCBibG9ja3MgYmVsb25naW5nIHRvIGRlbGV0ZWQgZmlsZXMgY2FuIGJlIHJldXNlZCBmb3Igb3RoZXIKK3B1cnBvc2VzLiAgKFRoaXMgb3B0aW9uIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZXh0NCBmaWxlCitzeXN0ZW0gZHJpdmVyIGluIDIuNi4zNSsga2VybmVscy4pCisuVFAKKy5CIG5vZGVsYWxsb2MKK1RoZSBmaWxlIHN5c3RlbSB3aWxsIGJlIG1vdW50ZWQgd2l0aCB0aGUgbm9kZWxhbGxvYyBtb3VudCBvcHRpb24uICBUaGlzCit3aWxsIGRpc2FibGUgdGhlIGRlbGF5ZWQgYWxsb2NhdGlvbiBmZWF0dXJlLiAgKFRoaXMgb3B0aW9uIGlzIGN1cnJlbnRseQorb25seSBzdXBwb3J0ZWQgYnkgdGhlIGV4dDQgZmlsZSBzeXN0ZW0gZHJpdmVyIGluIDIuNi4zNSsga2VybmVscy4pCisuUkUKKy5UUAorLkJSIFwtTyAiIFteXVxmSWZlYXR1cmVcZlJbLC4uLl0iCitTZXQgb3IgY2xlYXIgdGhlIGluZGljYXRlZCBmaWxlc3lzdGVtIGZlYXR1cmVzIChvcHRpb25zKSBpbiB0aGUgZmlsZXN5c3RlbS4KK01vcmUgdGhhbiBvbmUgZmlsZXN5c3RlbSBmZWF0dXJlIGNhbiBiZSBjbGVhcmVkIG9yIHNldCBieSBzZXBhcmF0aW5nCitmZWF0dXJlcyB3aXRoIGNvbW1hcy4gIEZpbGVzeXN0ZW0gZmVhdHVyZXMgcHJlZml4ZWQgd2l0aCBhIAorY2FyZXQgY2hhcmFjdGVyICgnXicpIHdpbGwgYmUgY2xlYXJlZCBpbiB0aGUgZmlsZXN5c3RlbSdzIHN1cGVyYmxvY2s7IAorZmlsZXN5c3RlbSBmZWF0dXJlcyB3aXRob3V0IGEgcHJlZml4IGNoYXJhY3RlciBvciBwcmVmaXhlZCB3aXRoIGEgcGx1cyAKK2NoYXJhY3RlciAoJysnKSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBmaWxlc3lzdGVtLiAgRm9yIGEgZGV0YWlsZWQKK2Rlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBmZWF0dXJlcywgcGxlYXNlIHNlZSB0aGUgbWFuIHBhZ2UKKy5CUiBleHQ0ICg1KS4KKy5JUAorVGhlIGZvbGxvd2luZyBmaWxlc3lzdGVtIGZlYXR1cmVzIGNhbiBiZSBzZXQgb3IgY2xlYXJlZCB1c2luZworLkJSIHR1bmUyZnMgOgorLlJTIDEuMmkKKy5UUAorLkIgZGlyX2luZGV4CitVc2UgaGFzaGVkIGItdHJlZXMgdG8gc3BlZWQgdXAgbG9va3VwcyBmb3IgbGFyZ2UgZGlyZWN0b3JpZXMuCisuVFAKKy5CIGRpcl9ubGluaworQWxsb3cgbW9yZSB0aGFuIDY1MDAwIHN1YmRpcmVjdG9yaWVzIHBlciBkaXJlY3RvcnkuCisuVFAKKy5CIGVuY3J5cHQKK0VuYWJsZSBmaWxlIHN5c3RlbSBsZXZlbCBlbmNyeXB0aW9uLgorLkIgVHVuZTJmcworY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgc2V0dGluZyB0aGlzIGZpbGVzeXN0ZW0gZmVhdHVyZS4KKy5UUAorLkIgZXh0ZW50CitFbmFibGUgdGhlIHVzZSBvZiBleHRlbnQgdHJlZXMgdG8gc3RvcmUgdGhlIGxvY2F0aW9uIG9mIGRhdGEgYmxvY2tzIGluIGlub2Rlcy4KKy5CIFR1bmUyZnMKK2N1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHNldHRpbmcgdGhpcyBmaWxlc3lzdGVtIGZlYXR1cmUuCisuVFAKKy5CIGV4dHJhX2lzaXplCitFbmFibGUgdGhlIGV4dGVuZGVkIGlub2RlIGZpZWxkcyB1c2VkIGJ5IGV4dDQuCisuVFAKKy5CIGZpbGV0eXBlCitTdG9yZSBmaWxlIHR5cGUgaW5mb3JtYXRpb24gaW4gZGlyZWN0b3J5IGVudHJpZXMuCisuVFAKKy5CIGZsZXhfYmcKK0FsbG93IGJpdG1hcHMgYW5kIGlub2RlIHRhYmxlcyBmb3IgYSBibG9jayBncm91cCB0byBiZSBwbGFjZWQKK2FueXdoZXJlIG9uIHRoZSBzdG9yYWdlIG1lZGlhLiAgXGZCVHVuZTJmc1xmUiB3aWxsIG5vdCByZW9yZ2FuaXplCit0aGUgbG9jYXRpb24gb2YgdGhlIGlub2RlIHRhYmxlcyBhbmQgYWxsb2NhdGlvbiBiaXRtYXBzLCBhcworLkJSIG1rZTJmcyAoOCkKK3dpbGwgZG8gd2hlbiBpdCBjcmVhdGVzIGEgZnJlc2hseSBmb3JtYXR0ZWQgZmlsZSBzeXN0ZW0gd2l0aAorLkIgZmxleF9iZworZW5hYmxlZC4KKy5UUAorLkIgaGFzX2pvdXJuYWwKK1VzZSBhIGpvdXJuYWwgdG8gZW5zdXJlIGZpbGVzeXN0ZW0gY29uc2lzdGVuY3kgZXZlbiBhY3Jvc3MgdW5jbGVhbiBzaHV0ZG93bnMuCitTZXR0aW5nIHRoZSBmaWxlc3lzdGVtIGZlYXR1cmUgaXMgZXF1aXZhbGVudCB0byB1c2luZyB0aGUgCisuQiBcLWoKK29wdGlvbi4KKy5UUAorLkIgaHVnZV9maWxlCitTdXBwb3J0IGZpbGVzIGxhcmdlciB0aGFuIDIgdGVyYWJ5dGVzIGluIHNpemUuCisuVFAKKy5CIGxhcmdlX2ZpbGUKK0ZpbGVzeXN0ZW0gY2FuIGNvbnRhaW4gZmlsZXMgdGhhdCBhcmUgZ3JlYXRlciB0aGFuIDJHQi4KKy5UUAorLkIgbWV0YWRhdGFfY3N1bQorU3RvcmUgYSBjaGVja3N1bSB0byBwcm90ZWN0IHRoZSBjb250ZW50cyBpbiBlYWNoIG1ldGFkYXRhIGJsb2NrLgorLlRQCisuQiBtbXAKK0VuYWJsZSBvciBkaXNhYmxlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gKE1NUCkgZmVhdHVyZS4KKy5UUAorLkIgcHJvamVjdAorRW5hYmxlIHByb2plY3QgSUQgdHJhY2tpbmcuICBUaGlzIGlzIHVzZWQgZm9yIHByb2plY3QgcXVvdGEgdHJhY2tpbmcuCisuVFAKKy5CIHF1b3RhCitFbmFibGUgaW50ZXJuYWwgZmlsZSBzeXN0ZW0gcXVvdGEgaW5vZGVzLgorLlRQCisuQiByZWFkLW9ubHkKK0ZvcmNlIHRoZSBrZXJuZWwgdG8gbW91bnQgdGhlIGZpbGUgc3lzdGVtIHJlYWQtb25seS4KKy5UUAorLkIgcmVzaXplX2lub2RlCitSZXNlcnZlIHNwYWNlIHNvIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9yIHRhYmxlIG1heSBncm93IGluIHRoZQorZnV0dXJlLgorLkIgVHVuZTJmcworb25seSBzdXBwb3J0cyBjbGVhcmluZyB0aGlzIGZpbGVzeXN0ZW0gZmVhdHVyZS4KKy5UUAorLkIgc3BhcnNlX3N1cGVyCitMaW1pdCB0aGUgbnVtYmVyIG9mIGJhY2t1cCBzdXBlcmJsb2NrcyB0byBzYXZlIHNwYWNlIG9uIGxhcmdlIGZpbGVzeXN0ZW1zLgorLkIgVHVuZTJmcworY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgc2V0dGluZyB0aGlzIGZpbGVzeXN0ZW0gZmVhdHVyZS4KKy5UUAorLkIgdW5pbml0X2JnCitBbGxvdyB0aGUga2VybmVsIHRvIGluaXRpYWxpemUgYml0bWFwcyBhbmQgaW5vZGUgdGFibGVzIGxhemlseSwgYW5kIHRvCitrZWVwIGEgaGlnaCB3YXRlcm1hcmsgZm9yIHRoZSB1bnVzZWQgaW5vZGVzIGluIGEgZmlsZXN5c3RlbSwgdG8gcmVkdWNlCisuQlIgZTJmc2NrICg4KQordGltZS4gIFRoZSBmaXJzdCBlMmZzY2sgcnVuIGFmdGVyIGVuYWJsaW5nIHRoaXMgZmVhdHVyZSB3aWxsIHRha2UgdGhlCitmdWxsIHRpbWUsIGJ1dCBzdWJzZXF1ZW50IGUyZnNjayBydW5zIHdpbGwgdGFrZSBvbmx5IGEgZnJhY3Rpb24gb2YgdGhlCitvcmlnaW5hbCB0aW1lLCBkZXBlbmRpbmcgb24gaG93IGZ1bGwgdGhlIGZpbGUgc3lzdGVtIGlzLgorLlJFCisuSVAKK0FmdGVyIHNldHRpbmcgb3IgY2xlYXJpbmcgCisuQlIgc3BhcnNlX3N1cGVyICwKKy5CUiB1bmluaXRfYmcgLAorLkJSIGZpbGV0eXBlICwKK29yCisuQiByZXNpemVfaW5vZGUKK2ZpbGVzeXN0ZW0gZmVhdHVyZXMsCit0aGUgZmlsZSBzeXN0ZW0gbWF5IHJlcXVpcmUgYmVpbmcgY2hlY2tlZCB1c2luZworLkJSIGUyZnNjayAoOCkKK3RvIHJldHVybiB0aGUgZmlsZXN5c3RlbSB0byBhIGNvbnNpc3RlbnQgc3RhdGUuCisuQiBUdW5lMmZzCit3aWxsIHByaW50IGEgbWVzc2FnZSByZXF1ZXN0aW5nIHRoYXQgdGhlIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1bgorLkJSIGUyZnNjayAoOCkKK2lmIG5lY2Vzc2FyeS4gIEFmdGVyIHNldHRpbmcgdGhlIAorLkIgZGlyX2luZGV4CitmZWF0dXJlLCAKKy5CIGUyZnNjayAtRAorY2FuIGJlIHJ1biB0byBjb252ZXJ0IGV4aXN0aW5nIGRpcmVjdG9yaWVzIHRvIHRoZSBoYXNoZWQgQi10cmVlIGZvcm1hdC4KK0VuYWJsaW5nIGNlcnRhaW4gZmlsZXN5c3RlbSBmZWF0dXJlcyBtYXkgcHJldmVudCB0aGUgZmlsZXN5c3RlbSBmcm9tIGJlaW5nCittb3VudGVkIGJ5IGtlcm5lbHMgd2hpY2ggZG8gbm90IHN1cHBvcnQgdGhvc2UgZmVhdHVyZXMuICBJbiBwYXJ0aWN1bGFyLCB0aGUKKy5CUiB1bmluaXRfYmcKK2FuZAorLkJSIGZsZXhfYmcKK2ZlYXR1cmVzIGFyZSBvbmx5IHN1cHBvcnRlZCBieSB0aGUgZXh0NCBmaWxlc3lzdGVtLgorLlRQCisuQkkgXC1wICIgbW1wX2NoZWNrX2ludGVydmFsIgorU2V0IHRoZSBkZXNpcmVkIE1NUCBjaGVjayBpbnRlcnZhbCBpbiBzZWNvbmRzLiBJdCBpcyA1IHNlY29uZHMgYnkgZGVmYXVsdC4KKy5UUAorLkJJIFwtciAiIHJlc2VydmVkLWJsb2Nrcy1jb3VudCIKK1NldCB0aGUgbnVtYmVyIG9mIHJlc2VydmVkIGZpbGVzeXN0ZW0gYmxvY2tzLgorLlRQCisuQkkgXC1RICIgcXVvdGEtb3B0aW9ucyIKK1NldHMgJ3F1b3RhJyBmZWF0dXJlIG9uIHRoZSBzdXBlcmJsb2NrIGFuZCB3b3JrcyBvbiB0aGUgcXVvdGEgZmlsZXMgZm9yIHRoZQorZ2l2ZW4gcXVvdGEgdHlwZS4gUXVvdGEgb3B0aW9ucyBjb3VsZCBiZSBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nOgorLlJTIDEuMmkKKy5UUAorLkJSIFteXXVzcnF1b3RhCitTZXRzL2NsZWFycyB1c2VyIHF1b3RhIGlub2RlIGluIHRoZSBzdXBlcmJsb2NrLgorLlRQCisuQlIgW15dZ3JwcXVvdGEKK1NldHMvY2xlYXJzIGdyb3VwIHF1b3RhIGlub2RlIGluIHRoZSBzdXBlcmJsb2NrLgorLlRQCisuQlIgW15dcHJqcXVvdGEKK1NldHMvY2xlYXJzIHByb2plY3QgcXVvdGEgaW5vZGUgaW4gdGhlIHN1cGVyYmxvY2suCisuUkUKKy5UUAorLkJJIFwtVCAiIHRpbWUtbGFzdC1jaGVja2VkIgorU2V0IHRoZSB0aW1lIHRoZSBmaWxlc3lzdGVtIHdhcyBsYXN0IGNoZWNrZWQgdXNpbmcKKy5CUiAgZTJmc2NrIC4KK1RoZSB0aW1lIGlzIGludGVycHJldGVkIHVzaW5nIHRoZSBjdXJyZW50IChsb2NhbCkgdGltZXpvbmUuCitUaGlzIGNhbiBiZSB1c2VmdWwgaW4gc2NyaXB0cyB3aGljaCB1c2UgYSBMb2dpY2FsIFZvbHVtZSBNYW5hZ2VyIHRvIG1ha2UKK2EgY29uc2lzdGVudCBzbmFwc2hvdCBvZiBhIGZpbGVzeXN0ZW0sIGFuZCB0aGVuIGNoZWNrIHRoZSBmaWxlc3lzdGVtIAorZHVyaW5nIG9mZiBob3VycyB0byBtYWtlIHN1cmUgaXQgaGFzbid0IGJlZW4gY29ycnVwdGVkIGR1ZSB0byAKK2hhcmR3YXJlIHByb2JsZW1zLCBldGMuICBJZiB0aGUgZmlsZXN5c3RlbSB3YXMgY2xlYW4sIHRoZW4gdGhpcyBvcHRpb24gY2FuIAorYmUgdXNlZCB0byBzZXQgdGhlIGxhc3QgY2hlY2tlZCB0aW1lIG9uIHRoZSBvcmlnaW5hbCBmaWxlc3lzdGVtLiAgVGhlIGZvcm1hdCAKK29mIAorLkkgdGltZS1sYXN0LWNoZWNrZWQKK2lzIHRoZSBpbnRlcm5hdGlvbmFsIGRhdGUgZm9ybWF0LCB3aXRoIGFuIG9wdGlvbmFsIHRpbWUgc3BlY2lmaWVyLCBpLmUuCitZWVlZTU1ERFtISFtNTVtTU11dXS4gICBUaGUga2V5d29yZCAKKy5CIG5vdworaXMgYWxzbyBhY2NlcHRlZCwgaW4gd2hpY2ggY2FzZSB0aGUgbGFzdCBjaGVja2VkIHRpbWUgd2lsbCBiZSBzZXQgdG8gdGhlIAorY3VycmVudCB0aW1lLgorLlRQCisuQkkgXC11ICIgdXNlciIKK1NldCB0aGUgdXNlciB3aG8gY2FuIHVzZSB0aGUgcmVzZXJ2ZWQgZmlsZXN5c3RlbSBibG9ja3MuCisuSSB1c2VyCitjYW4gYmUgYSBudW1lcmljYWwgdWlkIG9yIGEgdXNlciBuYW1lLiAgSWYgYSB1c2VyIG5hbWUgaXMgZ2l2ZW4sIGl0IAoraXMgY29udmVydGVkIHRvIGEgbnVtZXJpY2FsIHVpZCBiZWZvcmUgaXQgaXMgc3RvcmVkIGluIHRoZSBzdXBlcmJsb2NrLgorLlRQCisuQkkgXC1VICIgVVVJRCIKK1NldCB0aGUgdW5pdmVyc2FsbHkgdW5pcXVlIGlkZW50aWZpZXIgKFVVSUQpIG9mIHRoZSBmaWxlc3lzdGVtIHRvCisuSVIgVVVJRCAuCitUaGUgZm9ybWF0IG9mIHRoZSBVVUlEIGlzIGEgc2VyaWVzIG9mIGhleCBkaWdpdHMgc2VwYXJhdGVkIGJ5IGh5cGhlbnMsIAorbGlrZSB0aGlzOiAKKyJjMWI5ZDVhMi1mMTYyLTExY2YtOWVjZS0wMDIwYWZjNzZmMTYiLiAgCitUaGUgCisuSSBVVUlECitwYXJhbWV0ZXIgbWF5IGFsc28gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisuUlMgMS4yaQorLlRQCisuSSBjbGVhcgorY2xlYXIgdGhlIGZpbGVzeXN0ZW0gVVVJRAorLlRQCisuSSByYW5kb20KK2dlbmVyYXRlIGEgbmV3IHJhbmRvbWx5LWdlbmVyYXRlZCBVVUlECisuVFAKKy5JIHRpbWUKK2dlbmVyYXRlIGEgbmV3IHRpbWUtYmFzZWQgVVVJRAorLlJFCisuSVAKK1RoZSBVVUlEIG1heSBiZSB1c2VkIGJ5CisuQlIgbW91bnQgKDgpLAorLkJSIGZzY2sgKDgpLAorYW5kCisuQlIgL2V0Yy9mc3RhYiAoNSkKKyhhbmQgcG9zc2libHkgb3RoZXJzKSBieSBzcGVjaWZ5aW5nCisuQkkgVVVJRD0gdXVpZAoraW5zdGVhZCBvZiBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIG5hbWUgbGlrZQorLkJSIC9kZXYvaGRhMSAuCisuSVAKK1NlZQorLkJSIHV1aWRnZW4gKDgpCitmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK0lmIHRoZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSBhIGdvb2QgcmFuZG9tIG51bWJlciBnZW5lcmF0b3Igc3VjaCBhcworLkkgL2Rldi9yYW5kb20KK29yCisuSVIgL2Rldi91cmFuZG9tICwKKy5CIHR1bmUyZnMKK3dpbGwgYXV0b21hdGljYWxseSB1c2UgYSB0aW1lLWJhc2VkIFVVSUQgaW5zdGVhZCBvZiBhIHJhbmRvbWx5LWdlbmVyYXRlZCBVVUlELgorLlRQCisuQkkgXC16ICIgdW5kb19maWxlIgorQmVmb3JlIG92ZXJ3cml0aW5nIGEgZmlsZSBzeXN0ZW0gYmxvY2ssIHdyaXRlIHRoZSBvbGQgY29udGVudHMgb2YgdGhlIGJsb2NrIHRvCithbiB1bmRvIGZpbGUuICBUaGlzIHVuZG8gZmlsZSBjYW4gYmUgdXNlZCB3aXRoIGUydW5kbyg4KSB0byByZXN0b3JlIHRoZSBvbGQKK2NvbnRlbnRzIG9mIHRoZSBmaWxlIHN5c3RlbSBzaG91bGQgc29tZXRoaW5nIGdvIHdyb25nLiAgSWYgdGhlIGVtcHR5IHN0cmluZyBpcworcGFzc2VkIGFzIHRoZSB1bmRvX2ZpbGUgYXJndW1lbnQsIHRoZSB1bmRvIGZpbGUgd2lsbCBiZSB3cml0dGVuIHRvIGEgZmlsZSBuYW1lZAordHVuZTJmcy1cZklkZXZpY2VcZlIuZTJ1bmRvIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIHZpYSB0aGUKK1xmSUUyRlNQUk9HU19VTkRPX0RJUlxmUiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKworV0FSTklORzogVGhlIHVuZG8gZmlsZSBjYW5ub3QgYmUgdXNlZCB0byByZWNvdmVyIGZyb20gYSBwb3dlciBvciBzeXN0ZW0gY3Jhc2guCisuU0ggQlVHUworV2UgaGF2ZW4ndCBmb3VuZCBhbnkgYnVncyB5ZXQuICBUaGF0IGRvZXNuJ3QgbWVhbiB0aGVyZSBhcmVuJ3QgYW55Li4uCisuU0ggQVVUSE9SCisuQiB0dW5lMmZzCit3YXMgd3JpdHRlbiBieSBSZW15IENhcmQgPFJlbXkuQ2FyZEBsaW51eC5vcmc+LiAgSXQgaXMgY3VycmVudGx5IGJlaW5nCittYWludGFpbmVkIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQGFsdW0ubWl0LmVkdT4uCisuQiB0dW5lMmZzCit1c2VzIHRoZSBleHQyZnMgbGlicmFyeSB3cml0dGVuIGJ5IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+LgorVGhpcyBtYW51YWwgcGFnZSB3YXMgd3JpdHRlbiBieSBDaHJpc3RpYW4gS3VodHogPGNoa0BkYXRhLWhoLkhhbnNlLkRFPi4KK1RpbWUtZGVwZW5kZW50IGNoZWNraW5nIHdhcyBhZGRlZCBieSBVd2UgT2hzZSA8dXdlQHRpcmthLmd1bi5kZT4uCisuU0ggQVZBSUxBQklMSVRZCisuQiB0dW5lMmZzCitpcyBwYXJ0IG9mIHRoZSBlMmZzcHJvZ3MgcGFja2FnZSBhbmQgaXMgYXZhaWxhYmxlIGZyb20gCitodHRwOi8vZTJmc3Byb2dzLnNvdXJjZWZvcmdlLm5ldC4KKy5TSCBTRUUgQUxTTworLkJSIGRlYnVnZnMgKDgpLAorLkJSIGR1bXBlMmZzICg4KSwKKy5CUiBlMmZzY2sgKDgpLAorLkJSIG1rZTJmcyAoOCksCisuQlIgZXh0NCAoNSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL3R1bmUyZnMuYyBiL2UyZnNwcm9ncy9taXNjL3R1bmUyZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWU2NWJhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvdHVuZTJmcy5jCkBAIC0wLDAgKzEsMzIyOCBAQAorLyoKKyAqIHR1bmUyZnMuYyAtIENoYW5nZSB0aGUgZmlsZSBzeXN0ZW0gcGFyYW1ldGVycyBvbiBhbiBleHQyIGZpbGUgc3lzdGVtCisgKgorICogQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0ICBSZW15IENhcmQgPGNhcmRAbWFzaS5pYnAuZnI+CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYm9yYXRvaXJlIE1BU0ksIEluc3RpdHV0IEJsYWlzZSBQYXNjYWwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0ZSBQaWVycmUgZXQgTWFyaWUgQ3VyaWUgKFBhcmlzIFZJKQorICoKKyAqIENvcHlyaWdodCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwIGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisvKgorICogSGlzdG9yeToKKyAqIDkzLzA2LzAxCS0gQ3JlYXRpb24KKyAqIDkzLzEwLzMxCS0gQWRkZWQgdGhlIC1jIG9wdGlvbiB0byBjaGFuZ2UgdGhlIG1heGltYWwgbW91bnQgY291bnRzCisgKiA5My8xMi8xNAktIEFkZGVkIC1sIGZsYWcgdG8gbGlzdCBjb250ZW50cyBvZiBzdXBlcmJsb2NrCisgKiAgICAgICAgICAgICAgICBNLkouRS4gTW9sIChtYXJjZWxAZHV0ZWNhLmV0LnR1ZGVsZnQubmwpCisgKiAgICAgICAgICAgICAgICBGLlcuIHRlbiBXb2xkZSAoZnJhbmt5QGR1dGVjYS5ldC50dWRlbGZ0Lm5sKQorICogOTMvMTIvMjkJLSBBZGRlZCB0aGUgLWUgb3B0aW9uIHRvIGNoYW5nZSBlcnJvcnMgYmVoYXZpb3IKKyAqIDk0LzAyLzI3CS0gUG9ydGVkIHRvIHVzZSB0aGUgZXh0MmZzIGxpYnJhcnkKKyAqIDk0LzAzLzA2CS0gQWRkZWQgdGhlIGNoZWNrcyBpbnRlcnZhbCBmcm9tIFV3ZSBPaHNlICh1d2VAdGlya2EuZ3VuLmRlKQorICovCisKKyNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAgLyogZm9yIGluY2x1c2lvbiBvZiBzdHJwdGltZSgpICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxncnAuaD4KKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisjaW5jbHVkZSA8cHdkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR1NfSAorI2luY2x1ZGUgPHN0cmluZ3MuaD4JLyogZm9yIHN0cmNhc2VjbXAoKSAqLworI2Vsc2UKKyNkZWZpbmUgX0JTRF9TT1VSQ0UJLyogZm9yIGluY2x1c2lvbiBvZiBzdHJjYXNlY21wKCkgdmlhIDxzdHJpbmcuaD4gKi8KKyNkZWZpbmUgX0RFRkFVTFRfU09VUkNFCSAgLyogc2luY2UgZ2xpYmMgMi4yMCBfQlNEX1NPVVJDRSBpcyBkZXByZWNhdGVkICovCisjZW5kaWYKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8bGliZ2VuLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJleHQyZnMva2VybmVsLWpiZC5oIgorI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICJzdXBwb3J0L3BsYXVzaWJsZS5oIgorI2luY2x1ZGUgInN1cHBvcnQvcXVvdGFpby5oIgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSAiYmxraWQvYmxraWQuaCIKKworI2luY2x1ZGUgIi4uL3ZlcnNpb24uaCIKKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKworI2RlZmluZSBRT1BUX0VOQUJMRQkoMSkKKyNkZWZpbmUgUU9QVF9ESVNBQkxFCSgtMSkKKworZXh0ZXJuIGludCBhc2tfeW4oY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgZGVmKTsKKworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gInR1bmUyZnMiOworY2hhciAqZGV2aWNlX25hbWU7CitjaGFyICpuZXdfbGFiZWwsICpuZXdfbGFzdF9tb3VudGVkLCAqbmV3X1VVSUQ7CitjaGFyICppb19vcHRpb25zOworc3RhdGljIGludCBjX2ZsYWcsIENfZmxhZywgZV9mbGFnLCBmX2ZsYWcsIGdfZmxhZywgaV9mbGFnLCBsX2ZsYWcsIExfZmxhZzsKK3N0YXRpYyBpbnQgbV9mbGFnLCBNX2ZsYWcsIFFfZmxhZywgcl9mbGFnLCBzX2ZsYWcgPSAtMSwgdV9mbGFnLCBVX2ZsYWcsIFRfZmxhZzsKK3N0YXRpYyBpbnQgSV9mbGFnOworc3RhdGljIGludCBjbGVhcl9tbXA7CitzdGF0aWMgdGltZV90IGxhc3RfY2hlY2tfdGltZTsKK3N0YXRpYyBpbnQgcHJpbnRfbGFiZWw7CitzdGF0aWMgaW50IG1heF9tb3VudF9jb3VudCwgbW91bnRfY291bnQsIG1vdW50X2ZsYWdzOworc3RhdGljIHVuc2lnbmVkIGxvbmcgaW50ZXJ2YWw7CitzdGF0aWMgYmxrNjRfdCByZXNlcnZlZF9ibG9ja3M7CitzdGF0aWMgZG91YmxlIHJlc2VydmVkX3JhdGlvOworc3RhdGljIHVuc2lnbmVkIGxvbmcgcmVzZ2lkLCByZXN1aWQ7CitzdGF0aWMgdW5zaWduZWQgc2hvcnQgZXJyb3JzOworc3RhdGljIGludCBvcGVuX2ZsYWc7CitzdGF0aWMgY2hhciAqZmVhdHVyZXNfY21kOworc3RhdGljIGNoYXIgKm1udG9wdHNfY21kOworc3RhdGljIGludCBzdHJpZGUsIHN0cmlwZV93aWR0aDsKK3N0YXRpYyBpbnQgc3RyaWRlX3NldCwgc3RyaXBlX3dpZHRoX3NldDsKK3N0YXRpYyBjaGFyICpleHRlbmRlZF9jbWQ7CitzdGF0aWMgdW5zaWduZWQgbG9uZyBuZXdfaW5vZGVfc2l6ZTsKK3N0YXRpYyBjaGFyICpleHRfbW91bnRfb3B0czsKK3N0YXRpYyBpbnQgcXVvdGFfZW5hYmxlW01BWFFVT1RBU107CitzdGF0aWMgaW50IHJld3JpdGVfY2hlY2tzdW1zOworc3RhdGljIGludCBmZWF0dXJlXzY0Yml0Oworc3RhdGljIGludCBmc2NrX3JlcXVlc3RlZDsKK3N0YXRpYyBjaGFyICp1bmRvX2ZpbGU7CisKK2ludCBqb3VybmFsX3NpemUsIGpvdXJuYWxfZmxhZ3M7CitjaGFyICpqb3VybmFsX2RldmljZTsKK3N0YXRpYyBibGs2NF90IGpvdXJuYWxfbG9jYXRpb24gPSB+MExMOworCitzdGF0aWMgc3RydWN0IGxpc3RfaGVhZCBibGtfbW92ZV9saXN0OworCitzdHJ1Y3QgYmxrX21vdmUgeworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlibGs2NF90IG9sZF9sb2M7CisJYmxrNjRfdCBuZXdfbG9jOworfTsKKworZXJyY29kZV90IGV4dDJmc19ydW5fZXh0M19qb3VybmFsKGV4dDJfZmlsc3lzICpmcyk7CisKK3N0YXRpYyBjb25zdCBjaGFyICpwbGVhc2VfZnNjayA9IE5fKCJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIpOworc3RhdGljIGNvbnN0IGNoYXIgKnBsZWFzZV9kaXJfZnNjayA9CisJCU5fKCJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iKTsKKworI2lmZGVmIENPTkZJR19CVUlMRF9GSU5ERlMKK3ZvaWQgZG9fZmluZGZzKGludCBhcmdjLCBjaGFyICoqYXJndik7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19KQkRfREVCVUcJCS8qIEVuYWJsZWQgYnkgY29uZmlndXJlIC0tZW5hYmxlLWpiZC1kZWJ1ZyAqLworaW50IGpvdXJuYWxfZW5hYmxlX2RlYnVnID0gLTE7CisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwKKwkJXygiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdICIKKwkJICAiWy1nIGdyb3VwXVxuIgorCQkgICJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorCQkgICJcdFstbSByZXNlcnZlZF9ibG9ja3NfcGVyY2VudF0gWy1vIFteXW1vdW50X29wdGlvbnNbLC4uLl1dXG4iCisJCSAgIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdICIKKwkJICAiWy11IHVzZXJdXG4iCisJCSAgIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKwkJICAiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisJCSAgIlx0Wy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV0gWy1UIGxhc3RfY2hlY2tfdGltZV0gIgorCQkgICJbLVUgVVVJRF1cblx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIpLAorCQlwcm9ncmFtX25hbWUpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyBfX3UzMiBva19mZWF0dXJlc1szXSA9IHsKKwkvKiBDb21wYXQgKi8KKwlFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMIHwKKwkJRVhUMl9GRUFUVVJFX0NPTVBBVF9ESVJfSU5ERVgsCisJLyogSW5jb21wYXQgKi8KKwlFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEUgfAorCQlFWFQzX0ZFQVRVUkVfSU5DT01QQVRfRVhURU5UUyB8CisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF9GTEVYX0JHIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX01NUCB8CisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF82NEJJVCB8CisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF9FTkNSWVBUIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0NTVU1fU0VFRCwKKwkvKiBSL08gY29tcGF0ICovCisJRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFIHwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEV8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0VYVFJBX0lTSVpFfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNIHwKKwkJRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9TUEFSU0VfU1VQRVIgfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX1FVT1RBIHwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNIHwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9SRUFET05MWSB8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVAorfTsKKworc3RhdGljIF9fdTMyIGNsZWFyX29rX2ZlYXR1cmVzWzNdID0geworCS8qIENvbXBhdCAqLworCUVYVDNfRkVBVFVSRV9DT01QQVRfSEFTX0pPVVJOQUwgfAorCQlFWFQyX0ZFQVRVUkVfQ09NUEFUX1JFU0laRV9JTk9ERSB8CisJCUVYVDJfRkVBVFVSRV9DT01QQVRfRElSX0lOREVYLAorCS8qIEluY29tcGF0ICovCisJRVhUMl9GRUFUVVJFX0lOQ09NUEFUX0ZJTEVUWVBFIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZMRVhfQkcgfAorCQlFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUXzY0QklUIHwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0NTVU1fU0VFRCwKKwkvKiBSL08gY29tcGF0ICovCisJRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFIHwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEV8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfRElSX05MSU5LfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0VYVFJBX0lTSVpFfAorCQlFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNIHwKKwkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9RVU9UQSB8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfTUVUQURBVEFfQ1NVTSB8CisJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfUkVBRE9OTFkKK307CisKKy8qKgorICogVHJ5IHRvIGdldCBqb3VybmFsIHN1cGVyIGJsb2NrIGlmIGFueQorICovCitzdGF0aWMgaW50IGdldF9qb3VybmFsX3NiKGV4dDJfZmlsc3lzIGpmcywgY2hhciBidWZbU1VQRVJCTE9DS19TSVpFXSkKK3sKKwlpbnQgcmV0dmFsOworCWpvdXJuYWxfc3VwZXJibG9ja190ICpqc2I7CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2RldihqZnMtPnN1cGVyKSkgeworCQlyZXR1cm4gRVhUMl9FVF9VTlNVUFBfRkVBVFVSRTsKKwl9CisKKwkvKiBHZXQgdGhlIGpvdXJuYWwgc3VwZXJibG9jayAqLworCWlmICgocmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGpmcy0+aW8sCisJICAgIGV4dDJmc19qb3VybmFsX3NiX3N0YXJ0KGpmcy0+YmxvY2tzaXplKSwgLVNVUEVSQkxPQ0tfU0laRSwgYnVmKSkpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJXygid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2siKSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJanNiID0gKGpvdXJuYWxfc3VwZXJibG9ja190ICopIGJ1ZjsKKwlpZiAoKGpzYi0+c19oZWFkZXIuaF9tYWdpYyAhPSAodW5zaWduZWQpbnRvaGwoSkZTX01BR0lDX05VTUJFUikpIHx8CisJICAgIChqc2ItPnNfaGVhZGVyLmhfYmxvY2t0eXBlICE9ICh1bnNpZ25lZCludG9obChKRlNfU1VQRVJCTE9DS19WMikpKSB7CisJCWZwdXRzKF8oIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQhXG4iKSwgc3RkZXJyKTsKKwkJcmV0dXJuIEVYVDJfRVRfQkFEX01BR0lDOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgX191OCAqam91cm5hbF91c2VyKF9fdTggdXVpZFtVVUlEX1NJWkVdLCBfX3U4IHNfdXNlcnNbSkZTX1VTRVJTX1NJWkVdLAorCQkJICBpbnQgbnJfdXNlcnMpCit7CisJaW50IGk7CisJZm9yIChpID0gMDsgaSA8IG5yX3VzZXJzOyBpKyspIHsKKwkJaWYgKG1lbWNtcCh1dWlkLCAmc191c2Vyc1tpICogVVVJRF9TSVpFXSwgVVVJRF9TSVpFKSA9PSAwKQorCQkJcmV0dXJuICZzX3VzZXJzW2kgKiBVVUlEX1NJWkVdOworCX0KKworCXJldHVybiBOVUxMOworfQorCisvKgorICogUmVtb3ZlIGFuIGV4dGVybmFsIGpvdXJuYWwgZnJvbSB0aGUgZmlsZXN5c3RlbQorICovCitzdGF0aWMgaW50IHJlbW92ZV9qb3VybmFsX2RldmljZShleHQyX2ZpbHN5cyBmcykKK3sKKwljaGFyCQkqam91cm5hbF9wYXRoOworCWV4dDJfZmlsc3lzCWpmczsKKwljaGFyCQlidWZbU1VQRVJCTE9DS19TSVpFXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg4KSkpOworCWpvdXJuYWxfc3VwZXJibG9ja190CSpqc2I7CisJaW50CQlpLCBucl91c2VyczsKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJY29tbWl0X3JlbW92ZV9qb3VybmFsID0gMDsKKwlpb19tYW5hZ2VyCWlvX3B0cjsKKworCWlmIChmX2ZsYWcpCisJCWNvbW1pdF9yZW1vdmVfam91cm5hbCA9IDE7IC8qIGZvcmNlIHJlbW92YWwgZXZlbiBpZiBlcnJvciAqLworCisJdXVpZF91bnBhcnNlKGZzLT5zdXBlci0+c19qb3VybmFsX3V1aWQsIGJ1Zik7CisJam91cm5hbF9wYXRoID0gYmxraWRfZ2V0X2Rldm5hbWUoTlVMTCwgIlVVSUQiLCBidWYpOworCisJaWYgKCFqb3VybmFsX3BhdGgpIHsKKwkJam91cm5hbF9wYXRoID0KKwkJCWV4dDJmc19maW5kX2Jsb2NrX2RldmljZShmcy0+c3VwZXItPnNfam91cm5hbF9kZXYpOworCQlpZiAoIWpvdXJuYWxfcGF0aCkKKwkJCWdvdG8gbm9fdmFsaWRfam91cm5hbDsKKwl9CisKKyNpZmRlZiBDT05GSUdfVEVTVElPX0RFQlVHCisJaWYgKGdldGVudigiVEVTVF9JT19GTEFHUyIpIHx8IGdldGVudigiVEVTVF9JT19CTE9DSyIpKSB7CisJCWlvX3B0ciA9IHRlc3RfaW9fbWFuYWdlcjsKKwkJdGVzdF9pb19iYWNraW5nX21hbmFnZXIgPSB1bml4X2lvX21hbmFnZXI7CisJfSBlbHNlCisjZW5kaWYKKwkJaW9fcHRyID0gdW5peF9pb19tYW5hZ2VyOworCXJldHZhbCA9IGV4dDJmc19vcGVuKGpvdXJuYWxfcGF0aCwgRVhUMl9GTEFHX1JXfAorCQkJICAgICBFWFQyX0ZMQUdfSk9VUk5BTF9ERVZfT0ssIDAsCisJCQkgICAgIGZzLT5ibG9ja3NpemUsIGlvX3B0ciwgJmpmcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIpKTsKKwkJZ290byBub192YWxpZF9qb3VybmFsOworCX0KKworCWlmICgocmV0dmFsID0gZ2V0X2pvdXJuYWxfc2IoamZzLCBidWYpKSkgeworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkUpCisJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iKSwKKwkJCQlqb3VybmFsX3BhdGgpOworCQlnb3RvIG5vX3ZhbGlkX2pvdXJuYWw7CisJfQorCisJanNiID0gKGpvdXJuYWxfc3VwZXJibG9ja190ICopIGJ1ZjsKKwkvKiBGaW5kIHRoZSBmaWxlc3lzdGVtIFVVSUQgKi8KKwlucl91c2VycyA9IG50b2hsKGpzYi0+c19ucl91c2Vycyk7CisKKwlpZiAoIWpvdXJuYWxfdXNlcihmcy0+c3VwZXItPnNfdXVpZCwganNiLT5zX3VzZXJzLCBucl91c2VycykpIHsKKwkJZnB1dHMoXygiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIiksCisJCSAgICAgIHN0ZGVycik7CisJCWNvbW1pdF9yZW1vdmVfam91cm5hbCA9IDE7CisJCWdvdG8gbm9fdmFsaWRfam91cm5hbDsKKwl9CisJbnJfdXNlcnMtLTsKKwlmb3IgKGkgPSAwOyBpIDwgbnJfdXNlcnM7IGkrKykKKwkJbWVtY3B5KCZqc2ItPnNfdXNlcnNbaSAqIDE2XSwgJmpzYi0+c191c2Vyc1soaSArIDEpICogMTZdLCAxNik7CisJanNiLT5zX25yX3VzZXJzID0gaHRvbmwobnJfdXNlcnMpOworCisJLyogV3JpdGUgYmFjayB0aGUgam91cm5hbCBzdXBlcmJsb2NrICovCisJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChqZnMtPmlvLAorCQkJCQlleHQyZnNfam91cm5hbF9zYl9zdGFydChmcy0+YmxvY2tzaXplKSwKKwkJCQkJLVNVUEVSQkxPQ0tfU0laRSwgYnVmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2suIik7CisJCWdvdG8gbm9fdmFsaWRfam91cm5hbDsKKwl9CisKKwljb21taXRfcmVtb3ZlX2pvdXJuYWwgPSAxOworCitub192YWxpZF9qb3VybmFsOgorCWlmIChjb21taXRfcmVtb3ZlX2pvdXJuYWwgPT0gMCkgeworCQlmcHV0cyhfKCJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKwkJCSJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIiksCisJCSAgICAgIHN0ZGVycik7CisJCXJldHVybiAxOworCX0KKwlmcy0+c3VwZXItPnNfam91cm5hbF9kZXYgPSAwOworCW1lbXNldChmcy0+c3VwZXItPnNfam5sX2Jsb2NrcywgMCwgc2l6ZW9mKGZzLT5zdXBlci0+c19qbmxfYmxvY2tzKSk7CisJdXVpZF9jbGVhcihmcy0+c3VwZXItPnNfam91cm5hbF91dWlkKTsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJZnB1dHMoXygiSm91cm5hbCByZW1vdmVkXG4iKSwgc3Rkb3V0KTsKKwlmcmVlKGpvdXJuYWxfcGF0aCk7CisKKwlyZXR1cm4gMDsKK30KKworLyogSGVscGVyIGZ1bmN0aW9uIGZvciByZW1vdmVfam91cm5hbF9pbm9kZSAqLworc3RhdGljIGludCByZWxlYXNlX2Jsb2Nrc19wcm9jKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90ICpibG9ja25yLAorCQkJICAgICAgIGUyX2Jsa2NudF90IGJsb2NrY250IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgICBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgICAgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIHZvaWQgKnByaXZhdGUgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWJsazY0X3QJYmxvY2s7CisJaW50CWdyb3VwOworCisJYmxvY2sgPSAqYmxvY2tucjsKKwlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgYmxvY2spOworCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIoZnMsIGJsb2NrKTsKKwlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBncm91cCwgZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50KGZzLCBncm91cCkgKyAxKTsKKwlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgZ3JvdXApOworCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9hZGQoZnMtPnN1cGVyLCBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykpOworCXJldHVybiAwOworfQorCisvKgorICogUmVtb3ZlIHRoZSBqb3VybmFsIGlub2RlIGZyb20gdGhlIGZpbGVzeXN0ZW0KKyAqLworc3RhdGljIGVycmNvZGVfdCByZW1vdmVfam91cm5hbF9pbm9kZShleHQyX2ZpbHN5cyBmcykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlpbm9fdAkJCWlubyA9IGZzLT5zdXBlci0+c19qb3VybmFsX2ludW07CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZShmcywgaW5vLCAgJmlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiKSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCWlmIChpbm8gPT0gRVhUMl9KT1VSTkFMX0lOTykgeworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9iaXRtYXBzKGZzKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiKSk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgaW5vLAorCQkJCQkgICAgICAgQkxPQ0tfRkxBR19SRUFEX09OTFksIE5VTEwsCisJCQkJCSAgICAgICByZWxlYXNlX2Jsb2Nrc19wcm9jLCBOVUxMKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgIiVzIiwKKwkJCQlfKCJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIikpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfQorCQltZW1zZXQoJmlub2RlLCAwLCBzaXplb2YoaW5vZGUpKTsKKwkJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworCX0gZWxzZQorCQlpbm9kZS5pX2ZsYWdzICY9IH5FWFQyX0lNTVVUQUJMRV9GTDsKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQlfKCJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiKSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCWZzLT5zdXBlci0+c19qb3VybmFsX2ludW0gPSAwOworCW1lbXNldChmcy0+c3VwZXItPnNfam5sX2Jsb2NrcywgMCwgc2l6ZW9mKGZzLT5zdXBlci0+c19qbmxfYmxvY2tzKSk7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBVcGRhdGUgdGhlIGRlZmF1bHQgbW91bnQgb3B0aW9ucworICovCitzdGF0aWMgaW50IHVwZGF0ZV9tbnRvcHRzKGV4dDJfZmlsc3lzIGZzLCBjaGFyICptbnRvcHRzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGZzLT5zdXBlcjsKKworCWlmIChlMnBfZWRpdF9tbnRvcHRzKG1udG9wdHMsICZzYi0+c19kZWZhdWx0X21vdW50X29wdHMsIH4wKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiSW52YWxpZCBtb3VudCBvcHRpb24gc2V0OiAlc1xuIiksCisJCQltbnRvcHRzKTsKKwkJcmV0dXJuIDE7CisJfQorCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBjaGVja19mc2NrX25lZWRlZChleHQyX2ZpbHN5cyBmcywgY29uc3QgY2hhciAqcHJvbXB0KQoreworCS8qIFJlZnVzZSB0byBtb2RpZnkgYW55dGhpbmcgYnV0IGEgZnJlc2hseSBjaGVja2VkIHZhbGlkIGZpbGVzeXN0ZW0uICovCisJaWYgKCEoZnMtPnN1cGVyLT5zX3N0YXRlICYgRVhUMl9WQUxJRF9GUykgfHwKKwkgICAgKGZzLT5zdXBlci0+c19zdGF0ZSAmIEVYVDJfRVJST1JfRlMpIHx8CisJICAgIChmcy0+c3VwZXItPnNfbGFzdGNoZWNrIDwgZnMtPnN1cGVyLT5zX210aW1lKSkgeworCQlwcmludGYoIlxuJXNcbiIsIF8ocGxlYXNlX2ZzY2spKTsKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9SRUFET05MWSkKKwkJCXByaW50ZigiJXMiLCBfKCIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKiBHaXZlIHRoZSBhZG1pbiBhIGZldyBzZWNvbmRzIHRvIGJhaWwgb3V0IG9mIGEgZGFuZ2Vyb3VzIG9wLiAqLworCWlmICghZ2V0ZW52KCJUVU5FMkZTX0ZPUkNFX1BST01QVCIpICYmICghaXNhdHR5KDApIHx8ICFpc2F0dHkoMSkpKQorCQlyZXR1cm47CisKKwlwdXRzKHByb21wdCk7CisJcHJvY2VlZF9xdWVzdGlvbig1KTsKK30KKworc3RhdGljIHZvaWQgcmVxdWVzdF9kaXJfZnNja19hZnRlcndhcmRzKGV4dDJfZmlsc3lzIGZzKQoreworCXN0YXRpYyBpbnQgcmVxdWVzdGVkOworCisJaWYgKHJlcXVlc3RlZCsrKQorCQlyZXR1cm47CisJZnNja19yZXF1ZXN0ZWQrKzsKKwlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisJcHJpbnRmKCJcbiVzXG4iLCBfKHBsZWFzZV9kaXJfZnNjaykpOworCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpCisJCXByaW50ZigiJXMiLCBfKCIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIpKTsKK30KKworc3RhdGljIHZvaWQgcmVxdWVzdF9mc2NrX2FmdGVyd2FyZHMoZXh0Ml9maWxzeXMgZnMpCit7CisJc3RhdGljIGludCByZXF1ZXN0ZWQgPSAwOworCisJaWYgKHJlcXVlc3RlZCsrKQorCQlyZXR1cm47CisJZnNja19yZXF1ZXN0ZWQrKzsKKwlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisJcHJpbnRmKCJcbiVzXG4iLCBfKHBsZWFzZV9mc2NrKSk7CisJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9SRUFET05MWSkKKwkJcHJpbnRmKCIlcyIsIF8oIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIikpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0XzY0Yml0KGV4dDJfZmlsc3lzIGZzLCBpbnQgZGlyZWN0aW9uKQoreworCWlmICghZGlyZWN0aW9uKQorCQlyZXR1cm47CisKKwkvKgorCSAqIElzIHJlc2l6ZTJmcyBnb2luZyB0byBkZW1hbmQgYSBmc2NrIHJ1bj8gTWlnaHQgYXMgd2VsbCB0ZWxsIHRoZQorCSAqIHVzZXIgbm93LgorCSAqLworCWlmICghZnNja19yZXF1ZXN0ZWQgJiYKKwkgICAgKChmcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX0VSUk9SX0ZTKSB8fAorCSAgICAgIShmcy0+c3VwZXItPnNfc3RhdGUgJiBFWFQyX1ZBTElEX0ZTKSB8fAorCSAgICAgZnMtPnN1cGVyLT5zX2xhc3RjaGVjayA8IGZzLT5zdXBlci0+c19tdGltZSkpCisJCXJlcXVlc3RfZnNja19hZnRlcndhcmRzKGZzKTsKKwlpZiAoZnNja19yZXF1ZXN0ZWQpCisJCWZwcmludGYoc3RkZXJyLCBfKCJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIiksCisJCQlkaXJlY3Rpb24gPiAwID8gIi1iIiA6ICItcyIsIGZzLT5kZXZpY2VfbmFtZSk7CisJZWxzZQorCQlmcHJpbnRmKHN0ZGVyciwgXygiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIiksCisJCQlkaXJlY3Rpb24gPiAwID8gIi1iIiA6ICItcyIsIGZzLT5kZXZpY2VfbmFtZSk7CisKKwlpZiAodW5kb19maWxlKQorCQlmcHJpbnRmKHN0ZGVyciwgXygiIC16IFwiJXNcIiIpLCB1bmRvX2ZpbGUpOworCWlmIChkaXJlY3Rpb24gPiAwKQorCQlmcHJpbnRmKHN0ZGVyciwgXygiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iKSk7CisJZWxzZQorCQlmcHJpbnRmKHN0ZGVyciwgXygiJyB0byBkaXNhYmxlIDY0LWJpdCBtb2RlLlxuIikpOworfQorCisvKiBSZXdyaXRlIGV4dGVudHMgKi8KK3N0YXRpYyBlcnJjb2RlX3QgcmV3cml0ZV9leHRlbnRzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubywKKwkJCQkgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlKQoreworCWV4dDJfZXh0ZW50X2hhbmRsZV90CWhhbmRsZTsKKwlzdHJ1Y3QgZXh0MmZzX2V4dGVudAlleHRlbnQ7CisJZXJyY29kZV90CQllcnJjb2RlOworCXN0cnVjdCBleHQyX2V4dGVudF9pbmZvCWluZm87CisKKwlpZiAoIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkgfHwKKwkgICAgIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCXJldHVybiAwOworCisJZXJyY29kZSA9IGV4dDJmc19leHRlbnRfb3BlbihmcywgaW5vLCAmaGFuZGxlKTsKKwlpZiAoZXJyY29kZSkKKwkJcmV0dXJuIGVycmNvZGU7CisKKwllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ST09ULCAmZXh0ZW50KTsKKwlpZiAoZXJyY29kZSkKKwkJZ290byBvdXQ7CisKKwlkbyB7CisJCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldF9pbmZvKGhhbmRsZSwgJmluZm8pOworCQlpZiAoZXJyY29kZSkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IGV4dGVudCBpbiBhbiBleHRlbnQgYmxvY2sgdGhhdCB3ZQorCQkgKiBoYXZlbid0IHZpc2l0ZWQsIHJld3JpdGUgdGhlIGV4dGVudCB0byBmb3JjZSB0aGUgRVRCCisJCSAqIGNoZWNrc3VtIHRvIGJlIHJld3JpdHRlbi4KKwkJICovCisJCWlmIChpbmZvLmN1cnJfZW50cnkgPT0gMSAmJiBpbmZvLmN1cnJfbGV2ZWwgIT0gMCAmJgorCQkgICAgIShleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1NFQ09ORF9WSVNJVCkpIHsKKwkJCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJCWlmIChlcnJjb2RlKQorCQkJCWJyZWFrOworCQl9CisKKwkJLyogU2tpcCB0byB0aGUgZW5kIG9mIGEgYmxvY2sgb2YgbGVhZiBub2RlcyAqLworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19MRUFGKSB7CisJCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgIEVYVDJfRVhURU5UX0xBU1RfU0lCLAorCQkJCQkJICAgICZleHRlbnQpOworCQkJaWYgKGVycmNvZGUpCisJCQkJYnJlYWs7CisJCX0KKworCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ORVhULCAmZXh0ZW50KTsKKwl9IHdoaWxlIChlcnJjb2RlID09IDApOworCitvdXQ6CisJLyogT2sgaWYgd2UgcnVuIG9mZiB0aGUgZW5kICovCisJaWYgKGVycmNvZGUgPT0gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVCkKKwkJZXJyY29kZSA9IDA7CisJZXh0MmZzX2V4dGVudF9mcmVlKGhhbmRsZSk7CisJcmV0dXJuIGVycmNvZGU7Cit9CisKKy8qCisgKiBSZXdyaXRlIGRpcmVjdG9yeSBibG9ja3Mgd2l0aCBjaGVja3N1bXMKKyAqLworc3RydWN0IHJld3JpdGVfZGlyX2NvbnRleHQgeworCWNoYXIgKmJ1ZjsKKwllcnJjb2RlX3QgZXJyY29kZTsKKwlleHQyX2lub190IGRpcjsKKwlpbnQgaXNfaHRyZWU7Cit9OworCitzdGF0aWMgaW50IHJld3JpdGVfZGlyX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLAorCQkJICAgICBibGs2NF90CSpibG9ja25yLAorCQkJICAgICBlMl9ibGtjbnRfdCBibG9ja2NudCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgICAgIGJsazY0X3QJcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgaW50CXJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICB2b2lkCSpwcml2X2RhdGEpCit7CisJc3RydWN0IGV4dDJfZHhfY291bnRsaW1pdCAqZGNsID0gTlVMTDsKKwlzdHJ1Y3QgcmV3cml0ZV9kaXJfY29udGV4dCAqY3R4ID0gcHJpdl9kYXRhOworCWludCBkY2xfb2Zmc2V0LCBjaGFuZ2VkID0gMDsKKworCWN0eC0+ZXJyY29kZSA9IGV4dDJmc19yZWFkX2Rpcl9ibG9jazQoZnMsICpibG9ja25yLCBjdHgtPmJ1ZiwgMCwKKwkJCQkJICAgICAgY3R4LT5kaXIpOworCWlmIChjdHgtPmVycmNvZGUpCisJCXJldHVybiBCTE9DS19BQk9SVDsKKworCS8qIGlmIGh0cmVlIG5vZGUuLi4gKi8KKwlpZiAoY3R4LT5pc19odHJlZSkKKwkJZXh0MmZzX2dldF9keF9jb3VudGxpbWl0KGZzLCAoc3RydWN0IGV4dDJfZGlyX2VudHJ5ICopY3R4LT5idWYsCisJCQkJCSAmZGNsLCAmZGNsX29mZnNldCk7CisJaWYgKGRjbCkgeworCQlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpIHsKKwkJCS8qIEVuc3VyZSBsaW1pdCBpcyB0aGUgbWF4IHNpemUgKi8KKwkJCWludCBtYXhfZW50cmllcyA9IChmcy0+YmxvY2tzaXplIC0gZGNsX29mZnNldCkgLworCQkJCQkgIHNpemVvZihzdHJ1Y3QgZXh0Ml9keF9lbnRyeSk7CisJCQlpZiAoZXh0MmZzX2xlMTZfdG9fY3B1KGRjbC0+bGltaXQpICE9IG1heF9lbnRyaWVzKSB7CisJCQkJY2hhbmdlZCA9IDE7CisJCQkJZGNsLT5saW1pdCA9IGV4dDJmc19jcHVfdG9fbGUxNihtYXhfZW50cmllcyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQkvKiBJZiBodHJlZSBibG9jayBpcyBmdWxsIHRoZW4gcmVidWlsZCB0aGUgZGlyICovCisJCQlpZiAoZXh0MmZzX2xlMTZfdG9fY3B1KGRjbC0+Y291bnQpID09CisJCQkgICAgZXh0MmZzX2xlMTZfdG9fY3B1KGRjbC0+bGltaXQpKSB7CisJCQkJcmVxdWVzdF9kaXJfZnNja19hZnRlcndhcmRzKGZzKTsKKwkJCQlyZXR1cm4gMDsKKwkJCX0KKwkJCS8qCisJCQkgKiBFbnN1cmUgZGNsLT5saW1pdCBpcyBzbWFsbCBlbm91Z2ggdG8gbGVhdmUgcm9vbSBmb3IKKwkJCSAqIHRoZSBjaGVja3N1bSB0YWlsLgorCQkJICovCisJCQlpbnQgbWF4X2VudHJpZXMgPSAoZnMtPmJsb2Nrc2l6ZSAtIChkY2xfb2Zmc2V0ICsKKwkJCQkJCXNpemVvZihzdHJ1Y3QgZXh0Ml9keF90YWlsKSkpIC8KKwkJCQkJICBzaXplb2Yoc3RydWN0IGV4dDJfZHhfZW50cnkpOworCQkJaWYgKGV4dDJmc19sZTE2X3RvX2NwdShkY2wtPmxpbWl0KSAhPSBtYXhfZW50cmllcykKKwkJCQlkY2wtPmxpbWl0ID0gZXh0MmZzX2NwdV90b19sZTE2KG1heF9lbnRyaWVzKTsKKwkJCS8qIEFsd2F5cyByZXdyaXRlIGNoZWNrc3VtICovCisJCQljaGFuZ2VkID0gMTsKKwkJfQorCX0gZWxzZSB7CisJCXVuc2lnbmVkIGludCByZWNfbGVuLCBuYW1lX3NpemU7CisJCWNoYXIgKnRvcCA9IGN0eC0+YnVmICsgZnMtPmJsb2Nrc2l6ZTsKKwkJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpkZSA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKiljdHgtPmJ1ZjsKKwkJc3RydWN0IGV4dDJfZGlyX2VudHJ5ICpsYXN0X2RlID0gTlVMTCwgKnBlbnVsdGltYXRlX2RlID0gTlVMTDsKKworCQkvKiBGaW5kIGxhc3QgYW5kIHBlbnVsdGltYXRlIGRpcmVudCAqLworCQl3aGlsZSAoKGNoYXIgKilkZSA8IHRvcCkgeworCQkJcGVudWx0aW1hdGVfZGUgPSBsYXN0X2RlOworCQkJbGFzdF9kZSA9IGRlOworCQkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBkZSwgJnJlY19sZW4pOworCQkJaWYgKCFjdHgtPmVycmNvZGUgJiYgIXJlY19sZW4pCisJCQkJY3R4LT5lcnJjb2RlID0gRVhUMl9FVF9ESVJfQ09SUlVQVEVEOworCQkJaWYgKGN0eC0+ZXJyY29kZSkKKwkJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCQlkZSA9IChzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKikoKChjaGFyICopZGUpICsgcmVjX2xlbik7CisJCX0KKwkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBsYXN0X2RlLCAmcmVjX2xlbik7CisJCWlmIChjdHgtPmVycmNvZGUpCisJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisJCW5hbWVfc2l6ZSA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4obGFzdF9kZSk7CisKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShmcy0+c3VwZXIpKSB7CisJCQlpZiAoIXBlbnVsdGltYXRlX2RlKQorCQkJCXJldHVybiAwOworCQkJaWYgKGxhc3RfZGUtPmlub2RlIHx8CisJCQkgICAgbmFtZV9zaXplIHx8CisJCQkgICAgcmVjX2xlbiAhPSBzaXplb2Yoc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwpKQorCQkJCXJldHVybiAwOworCQkJLyoKKwkJCSAqIFRoZSBsYXN0IGRpcmVudCBpcyB1bnVzZWQgYW5kIHRoZSByaWdodCBsZW5ndGggdG8KKwkJCSAqIGhhdmUgc3RvcmVkIGEgY2hlY2tzdW0uICBFcmFzZSBpdC4KKwkJCSAqLworCQkJY3R4LT5lcnJjb2RlID0gZXh0MmZzX2dldF9yZWNfbGVuKGZzLCBwZW51bHRpbWF0ZV9kZSwKKwkJCQkJCQkgICZyZWNfbGVuKTsKKwkJCWlmICghcmVjX2xlbikKKwkJCQljdHgtPmVycmNvZGUgPSBFWFQyX0VUX0RJUl9DT1JSVVBURUQ7CisJCQlpZiAoY3R4LT5lcnJjb2RlKQorCQkJCXJldHVybiBCTE9DS19BQk9SVDsKKwkJCWV4dDJmc19zZXRfcmVjX2xlbihmcywgcmVjX2xlbiArCisJCQkJCXNpemVvZihzdHJ1Y3QgZXh0Ml9kaXJfZW50cnlfdGFpbCksCisJCQkJCXBlbnVsdGltYXRlX2RlKTsKKwkJCWNoYW5nZWQgPSAxOworCQl9IGVsc2UgeworCQkJdW5zaWduZWQgY3N1bV9zaXplID0gc2l6ZW9mKHN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsKTsKKwkJCXN0cnVjdCBleHQyX2Rpcl9lbnRyeV90YWlsICp0OworCisJCQkvKgorCQkJICogSWYgdGhlIGxhc3QgZGlyZW50IGxvb2tzIGxpa2UgdGhlIHRhaWwsIGp1c3QgdXBkYXRlCisJCQkgKiB0aGUgY2hlY2tzdW0uCisJCQkgKi8KKwkJCWlmICghbGFzdF9kZS0+aW5vZGUgJiYKKwkJCSAgICByZWNfbGVuID09IGNzdW1fc2l6ZSkgeworCQkJCXQgPSAoc3RydWN0IGV4dDJfZGlyX2VudHJ5X3RhaWwgKilsYXN0X2RlOworCQkJCXQtPmRldF9yZXNlcnZlZF9uYW1lX2xlbiA9CisJCQkJCQlFWFQyX0RJUl9OQU1FX0xFTl9DU1VNOworCQkJCWNoYW5nZWQgPSAxOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJaWYgKG5hbWVfc2l6ZSAmIDMpCisJCQkJbmFtZV9zaXplID0gKG5hbWVfc2l6ZSAmIH4zKSArIDQ7CisJCQkvKiBJZiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIHRoZSB0YWlsLCBlMmZzY2sgKi8KKwkJCWlmIChyZWNfbGVuIDw9ICg4ICsgbmFtZV9zaXplICsgY3N1bV9zaXplKSkgeworCQkJCXJlcXVlc3RfZGlyX2ZzY2tfYWZ0ZXJ3YXJkcyhmcyk7CisJCQkJcmV0dXJuIDA7CisJCQl9CisJCQkvKiBTaG9ydGVuIHRoYXQgbGFzdCBkZSBhbmQgaW5zZXJ0IHRoZSB0YWlsICovCisJCQlleHQyZnNfc2V0X3JlY19sZW4oZnMsIHJlY19sZW4gLSBjc3VtX3NpemUsIGxhc3RfZGUpOworCQkJdCA9IEVYVDJfRElSRU5UX1RBSUwoY3R4LT5idWYsIGZzLT5ibG9ja3NpemUpOworCQkJZXh0MmZzX2luaXRpYWxpemVfZGlyZW50X3RhaWwoZnMsIHQpOworCisJCQkvKiBBbHdheXMgdXBkYXRlIGNoZWNrc3VtICovCisJCQljaGFuZ2VkID0gMTsKKwkJfQorCX0KKworb3V0OgorCWlmICghY2hhbmdlZCkKKwkJcmV0dXJuIDA7CisKKwljdHgtPmVycmNvZGUgPSBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrNChmcywgKmJsb2NrbnIsIGN0eC0+YnVmLAorCQkJCQkgICAgICAgMCwgY3R4LT5kaXIpOworCWlmIChjdHgtPmVycmNvZGUpCisJCXJldHVybiBCTE9DS19BQk9SVDsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IHJld3JpdGVfZGlyZWN0b3J5KGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGRpciwKKwkJCQkgICBzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlzdHJ1Y3QgcmV3cml0ZV9kaXJfY29udGV4dCBjdHg7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmY3R4LmJ1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWN0eC5pc19odHJlZSA9IChpbm9kZS0+aV9mbGFncyAmIEVYVDJfSU5ERVhfRkwpOworCWN0eC5kaXIgPSBkaXI7CisJY3R4LmVycmNvZGUgPSAwOworCXJldHZhbCA9IGV4dDJmc19ibG9ja19pdGVyYXRlMyhmcywgZGlyLCBCTE9DS19GTEFHX1JFQURfT05MWSB8CisJCQkJCQlCTE9DS19GTEFHX0RBVEFfT05MWSwKKwkJCQkgICAgICAgMCwgcmV3cml0ZV9kaXJfYmxvY2ssICZjdHgpOworCisJZXh0MmZzX2ZyZWVfbWVtKCZjdHguYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dXJuIGN0eC5lcnJjb2RlOworfQorCisvKgorICogRm9yY2libHkgc2V0IGNoZWNrc3VtcyBpbiBhbGwgaW5vZGVzLgorICovCitzdGF0aWMgdm9pZCByZXdyaXRlX2lub2RlcyhleHQyX2ZpbHN5cyBmcykKK3sKKwlpbnQgbGVuZ3RoID0gRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisJc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCAqemVybzsKKwljaGFyCQkqZWFfYnVmOworCWV4dDJfaW5vZGVfc2NhbglzY2FuOworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pbm9fdAlpbm87CisJYmxrNjRfdAkJZmlsZV9hY2xfYmxvY2s7CisJaW50CQlpbm9kZV9kaXJ0eTsKKworCWlmIChmcy0+c3VwZXItPnNfY3JlYXRvcl9vcyA9PSBFWFQyX09TX0hVUkQpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldF9jc3VtIiwgcmV0dmFsLCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIik7CisJCWV4aXQoMSk7CisJfQorCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0obGVuZ3RoLCAmaW5vZGUpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycigic2V0X2NzdW0iLCByZXR2YWwsICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIpOworCQlleGl0KDEpOworCX0KKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtemVybyhsZW5ndGgsICZ6ZXJvKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldF9jc3VtIiwgcmV0dmFsLCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmZWFfYnVmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoInNldF9jc3VtIiwgcmV0dmFsLCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlkbyB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKHNjYW4sICZpbm8sIGlub2RlLCBsZW5ndGgpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJzZXRfY3N1bSIsIHJldHZhbCwgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoIWlubykKKwkJCWJyZWFrOworCQlpZiAoZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpbm8pKSB7CisJCQlpbm9kZV9kaXJ0eSA9IDE7CisJCX0gZWxzZSB7CisJCQlpZiAobWVtY21wKGlub2RlLCB6ZXJvLCBsZW5ndGgpICE9IDApIHsKKwkJCQltZW1zZXQoaW5vZGUsIDAsIGxlbmd0aCk7CisJCQkJaW5vZGVfZGlydHkgPSAxOworCQkJfSBlbHNlIHsKKwkJCQlpbm9kZV9kaXJ0eSA9IDA7CisJCQl9CisJCX0KKworCQlpZiAoaW5vZGVfZGlydHkpIHsKKwkJCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKGZzLCBpbm8sIGlub2RlLAorCQkJCQkJCSBsZW5ndGgpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIoInNldF9jc3VtIiwgcmV0dmFsLCAid2hpbGUgd3JpdGluZyAiCisJCQkJCSJpbm9kZSIpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKworCQlyZXR2YWwgPSByZXdyaXRlX2V4dGVudHMoZnMsIGlubywgaW5vZGUpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJyZXdyaXRlX2V4dGVudHMiLCByZXR2YWwsCisJCQkJIndoaWxlIHJld3JpdGluZyBleHRlbnRzIik7CisJCQlleGl0KDEpOworCQl9CisKKwkJaWYgKExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSkgJiYKKwkJICAgIGV4dDJmc19pbm9kZV9oYXNfdmFsaWRfYmxvY2tzMihmcywgaW5vZGUpKSB7CisJCQlyZXR2YWwgPSByZXdyaXRlX2RpcmVjdG9yeShmcywgaW5vLCBpbm9kZSk7CisJCQlpZiAocmV0dmFsKSB7CisJCQkJY29tX2VycigicmV3cml0ZV9kaXJlY3RvcnkiLCByZXR2YWwsCisJCQkJCSJ3aGlsZSByZXdyaXRpbmcgZGlyZWN0b3JpZXMiKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9CisKKwkJZmlsZV9hY2xfYmxvY2sgPSBleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsIGlub2RlKTsKKwkJaWYgKCFmaWxlX2FjbF9ibG9jaykKKwkJCWNvbnRpbnVlOworCQlyZXR2YWwgPSBleHQyZnNfcmVhZF9leHRfYXR0cjMoZnMsIGZpbGVfYWNsX2Jsb2NrLCBlYV9idWYsIGlubyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoInJld3JpdGVfZWFibG9jayIsIHJldHZhbCwKKwkJCQkid2hpbGUgcmV3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfZXh0X2F0dHIzKGZzLCBmaWxlX2FjbF9ibG9jaywgZWFfYnVmLAorCQkJCQkJaW5vKTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2VycigicmV3cml0ZV9lYWJsb2NrIiwgcmV0dmFsLAorCQkJCSJ3aGlsZSByZXdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIik7CisJCQlleGl0KDEpOworCQl9CisJfSB3aGlsZSAoaW5vKTsKKworCWV4dDJmc19mcmVlX21lbSgmemVybyk7CisJZXh0MmZzX2ZyZWVfbWVtKCZpbm9kZSk7CisJZXh0MmZzX2ZyZWVfbWVtKCZlYV9idWYpOworCWV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKHNjYW4pOworfQorCitzdGF0aWMgdm9pZCByZXdyaXRlX21ldGFkYXRhX2NoZWNrc3VtcyhleHQyX2ZpbHN5cyBmcykKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWRncnBfdCBpOworCisJZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJZXh0MmZzX2luaXRfY3N1bV9zZWVkKGZzKTsKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGkpOworCXJldHZhbCA9IGV4dDJmc19yZWFkX2JpdG1hcHMoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigicmV3cml0ZV9tZXRhZGF0YV9jaGVja3N1bXMiLCByZXR2YWwsCisJCQkid2hpbGUgcmVhZGluZyBiaXRtYXBzIik7CisJCWV4aXQoMSk7CisJfQorCXJld3JpdGVfaW5vZGVzKGZzKTsKKwlleHQyZnNfbWFya19pYl9kaXJ0eShmcyk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCWV4dDJmc19tbXBfdXBkYXRlMihmcywgMSk7CisJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfU1VQRVJfT05MWTsKKwlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikpCisJCWZzLT5zdXBlci0+c19jaGVja3N1bV90eXBlID0gRVhUMl9DUkMzMkNfQ0hLU1VNOworCWVsc2UKKwkJZnMtPnN1cGVyLT5zX2NoZWNrc3VtX3R5cGUgPSAwOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlX3VuaW5pdF9iZyhleHQyX2ZpbHN5cyBmcykKK3sKKwlzdHJ1Y3QgZXh0Ml9ncm91cF9kZXNjICpnZDsKKwlkZ3JwX3QgaTsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWdkID0gZXh0MmZzX2dyb3VwX2Rlc2MoZnMsIGZzLT5ncm91cF9kZXNjLCBpKTsKKwkJZ2QtPmJnX2l0YWJsZV91bnVzZWQgPSAwOworCQlnZC0+YmdfZmxhZ3MgPSBFWFQyX0JHX0lOT0RFX1pFUk9FRDsKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGkpOworCX0KKwlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworfQorCitzdGF0aWMgZXJyY29kZV90IHplcm9fZW1wdHlfaW5vZGVzKGV4dDJfZmlsc3lzIGZzKQoreworCWludCBsZW5ndGggPSBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUgPSBOVUxMOworCWV4dDJfaW5vZGVfc2NhbglzY2FuOworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pbm9fdAlpbm87CisKKwlyZXR2YWwgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKGZzLCAwLCAmc2Nhbik7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQ7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShsZW5ndGgsICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJZ290byBvdXQ7CisKKwlkbyB7CisJCXJldHZhbCA9IGV4dDJmc19nZXRfbmV4dF9pbm9kZV9mdWxsKHNjYW4sICZpbm8sIGlub2RlLCBsZW5ndGgpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCWlmICghaW5vKQorCQkJYnJlYWs7CisJCWlmICghZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpbm8pKSB7CisJCQltZW1zZXQoaW5vZGUsIDAsIGxlbmd0aCk7CisJCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChmcywgaW5vLCBpbm9kZSwKKwkJCQkJCQkgbGVuZ3RoKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBvdXQ7CisJCX0KKwl9IHdoaWxlICgxKTsKKworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmaW5vZGUpOworCWV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKHNjYW4pOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZGlzYWJsZV91bmluaXRfYmcoZXh0Ml9maWxzeXMgZnMsIF9fdTMyIGNzdW1fZmVhdHVyZV9mbGFnKQoreworCXN0cnVjdCBleHQyX2dyb3VwX2Rlc2MgKmdkOworCWRncnBfdCBpOworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrNjRfdCBiLCBjLCBkOworCisJLyogTG9hZCBiaXRtYXBzIHRvIGVuc3VyZSB0aGF0IHRoZSB1bmluaXQgb25lcyBnZXQgd3JpdHRlbiBvdXQgKi8KKwlmcy0+c3VwZXItPnNfZmVhdHVyZV9yb19jb21wYXQgfD0gY3N1bV9mZWF0dXJlX2ZsYWc7CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYml0bWFwcyhmcyk7CisJZnMtPnN1cGVyLT5zX2ZlYXR1cmVfcm9fY29tcGF0ICY9IH5jc3VtX2ZlYXR1cmVfZmxhZzsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImRpc2FibGVfdW5pbml0X2JnIiwgcmV0dmFsLAorCQkJIndoaWxlIHJlYWRpbmcgYml0bWFwcyIpOworCQlyZXF1ZXN0X2ZzY2tfYWZ0ZXJ3YXJkcyhmcyk7CisJCXJldHVybiByZXR2YWw7CisJfQorCWV4dDJmc19tYXJrX2liX2RpcnR5KGZzKTsKKwlleHQyZnNfbWFya19iYl9kaXJ0eShmcyk7CisKKwkvKiBJZiB3ZSdyZSBvbmx5IHR1cm5pbmcgb2ZmIHVuaW5pdF9iZywgemVybyB0aGUgaW5vZGVzICovCisJaWYgKGNzdW1fZmVhdHVyZV9mbGFnID09IEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0pIHsKKwkJcmV0dmFsID0gemVyb19lbXB0eV9pbm9kZXMoZnMpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJkaXNhYmxlX3VuaW5pdF9iZyIsIHJldHZhbCwKKwkJCQkid2hpbGUgemVyb2luZyB1bnVzZWQgaW5vZGVzIik7CisJCQlyZXF1ZXN0X2ZzY2tfYWZ0ZXJ3YXJkcyhmcyk7CisJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJfQorCisJLyogVGhlIGJiaXRtYXAgaXMgemVyb2VkOyB3ZSBtdXN0IG1hcmsgZ3JvdXAgbWV0YWRhdGEgYmxvY2tzIGluIHVzZSAqLworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWIgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSk7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgYik7CisJCWIgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgYik7CisKKwkJcmV0dmFsID0gZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihmcywgaSwgJmIsICZjLCAmZCwgTlVMTCk7CisJCWlmIChyZXR2YWwgPT0gMCAmJiBiKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBiKTsKKwkJaWYgKHJldHZhbCA9PSAwICYmIGMpCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGMpOworCQlpZiAocmV0dmFsID09IDAgJiYgZCkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgZCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoImRpc2FibGVfdW5pbml0X2JnIiwgcmV0dmFsLAorCQkJCSJ3aGlsZSBpbml0aWFsaXppbmcgYmxvY2sgYml0bWFwcyIpOworCQkJcmVxdWVzdF9mc2NrX2FmdGVyd2FyZHMoZnMpOworCQl9CisKKwkJZ2QgPSBleHQyZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGkpOworCQlnZC0+YmdfaXRhYmxlX3VudXNlZCA9IDA7CisJCWdkLT5iZ19mbGFncyA9IDA7CisJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBpKTsKKwl9CisJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfU1VQRVJfT05MWTsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3RyeV9jb25maXJtX2NzdW1fc2VlZF9zdXBwb3J0KHZvaWQpCit7CisJaWYgKGFjY2VzcygiL3N5cy9mcy9leHQ0L2ZlYXR1cmVzL21ldGFkYXRhX2NzdW1fc2VlZCIsIFJfT0spKQorCQlmcHV0cyhfKCJXQVJOSU5HOiBDb3VsZCBub3QgY29uZmlybSBrZXJuZWwgc3VwcG9ydCBmb3IgIgorCQkJIm1ldGFkYXRhX2NzdW1fc2VlZC5cbiAgVGhpcyByZXF1aXJlcyBMaW51eCA+PSAiCisJCQkidjQuNC5cbiIpLCBzdGRlcnIpOworfQorCisvKgorICogVXBkYXRlIHRoZSBmZWF0dXJlIHNldCBhcyBwcm92aWRlZCBieSB0aGUgdXNlci4KKyAqLworc3RhdGljIGludCB1cGRhdGVfZmVhdHVyZV9zZXQoZXh0Ml9maWxzeXMgZnMsIGNoYXIgKmZlYXR1cmVzKQoreworCXN0cnVjdCBleHQyX3N1cGVyX2Jsb2NrICpzYiA9IGZzLT5zdXBlcjsKKwlfX3UzMgkJb2xkX2ZlYXR1cmVzWzNdOworCWludAkJdHlwZV9lcnI7CisJdW5zaWduZWQgaW50CW1hc2tfZXJyOworCWVycmNvZGVfdAllcnI7CisJZW51bSBxdW90YV90eXBlIHF0eXBlOworCisjZGVmaW5lIEZFQVRVUkVfT04odHlwZSwgbWFzaykgKCEob2xkX2ZlYXR1cmVzWyh0eXBlKV0gJiAobWFzaykpICYmIFwKKwkJCQkoKCZzYi0+c19mZWF0dXJlX2NvbXBhdClbKHR5cGUpXSAmIChtYXNrKSkpCisjZGVmaW5lIEZFQVRVUkVfT0ZGKHR5cGUsIG1hc2spICgob2xkX2ZlYXR1cmVzWyh0eXBlKV0gJiAobWFzaykpICYmIFwKKwkJCQkgISgoJnNiLT5zX2ZlYXR1cmVfY29tcGF0KVsodHlwZSldICYgKG1hc2spKSkKKyNkZWZpbmUgRkVBVFVSRV9DSEFOR0VEKHR5cGUsIG1hc2spICgobWFzaykgJiBcCisJCSAgICAgKG9sZF9mZWF0dXJlc1sodHlwZSldIF4gKCZzYi0+c19mZWF0dXJlX2NvbXBhdClbKHR5cGUpXSkpCisKKwlvbGRfZmVhdHVyZXNbRTJQX0ZFQVRVUkVfQ09NUEFUXSA9IHNiLT5zX2ZlYXR1cmVfY29tcGF0OworCW9sZF9mZWF0dXJlc1tFMlBfRkVBVFVSRV9JTkNPTVBBVF0gPSBzYi0+c19mZWF0dXJlX2luY29tcGF0OworCW9sZF9mZWF0dXJlc1tFMlBfRkVBVFVSRV9ST19JTkNPTVBBVF0gPSBzYi0+c19mZWF0dXJlX3JvX2NvbXBhdDsKKworCWlmIChlMnBfZWRpdF9mZWF0dXJlMihmZWF0dXJlcywgJnNiLT5zX2ZlYXR1cmVfY29tcGF0LAorCQkJICAgICAgb2tfZmVhdHVyZXMsIGNsZWFyX29rX2ZlYXR1cmVzLAorCQkJICAgICAgJnR5cGVfZXJyLCAmbWFza19lcnIpKSB7CisJCWlmICghbWFza19lcnIpCisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQlfKCJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIpLAorCQkJCWZlYXR1cmVzKTsKKwkJZWxzZSBpZiAodHlwZV9lcnIgJiBFMlBfRkVBVFVSRV9ORUdBVEVfRkxBRykKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyAiCisJCQkJCSAgIm5vdCBzdXBwb3J0ZWQuXG4iKSwKKwkJCQllMnBfZmVhdHVyZTJzdHJpbmcodHlwZV9lcnIgJgorCQkJCQkJICAgRTJQX0ZFQVRVUkVfVFlQRV9NQVNLLAorCQkJCQkJICAgbWFza19lcnIpKTsKKwkJZWxzZQorCQkJZnByaW50ZihzdGRlcnIsIF8oIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgIgorCQkJCQkgICJub3Qgc3VwcG9ydGVkLlxuIiksCisJCQkJZTJwX2ZlYXR1cmUyc3RyaW5nKHR5cGVfZXJyLCBtYXNrX2VycikpOworCQlyZXR1cm4gMTsKKwl9CisKKwlpZiAoRkVBVFVSRV9PRkYoRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMKSkgeworCQlpZiAoKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSAmJgorCQkgICAgIShtb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpKSB7CisJCQlmcHV0cyhfKCJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSAiCisJCQkJImNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorCQkJCSJ1bm1vdW50ZWQgb3IgbW91bnRlZCAiCisJCQkJInJlYWQtb25seS5cbiIpLCBzdGRlcnIpOworCQkJcmV0dXJuIDE7CisJCX0KKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KHNiKSAmJgorCQkgICAgZl9mbGFnIDwgMikgeworCQkJZnB1dHMoXygiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgIgorCQkJCSJQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKwkJCQkidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iKSwgc3RkZXJyKTsKKwkJCXJldHVybiAxOworCQl9CisJCWlmIChzYi0+c19qb3VybmFsX2ludW0pIHsKKwkJCWlmIChyZW1vdmVfam91cm5hbF9pbm9kZShmcykpCisJCQkJcmV0dXJuIDE7CisJCX0KKwkJaWYgKHNiLT5zX2pvdXJuYWxfZGV2KSB7CisJCQlpZiAocmVtb3ZlX2pvdXJuYWxfZGV2aWNlKGZzKSkKKwkJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChGRUFUVVJFX09OKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQlFWFQyX0ZFQVRVUkVfUk9fQ09NUEFUX1NQQVJTRV9TVVBFUikpIHsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKHNiKSkgeworCQkJZnB1dHMoXygiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJ3NwYXJzZV9zdXBlcicgIgorCQkJCSJub3Qgc3VwcG9ydGVkXG5mb3IgZmlsZXN5c3RlbXMgd2l0aCAiCisJCQkJInRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIpLAorCQkJCXN0ZGVycik7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChGRUFUVVJFX09OKEUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QKSkgeworCQlpbnQgZXJyb3I7CisKKwkJaWYgKChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgfHwKKwkJICAgIChtb3VudF9mbGFncyAmIEVYVDJfTUZfUkVBRE9OTFkpKSB7CisJCQlmcHV0cyhfKCJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbid0XG4iCisJCQkJImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisJCQkJInJlYWQtb25seS5cbiIpLCBzdGRlcnIpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQllcnJvciA9IGV4dDJmc19tbXBfaW5pdChmcyk7CisJCWlmIChlcnJvcikgeworCQkJZnB1dHMoXygiXG5FcnJvciB3aGlsZSBlbmFibGluZyBtdWx0aXBsZSBtb3VudCAiCisJCQkJInByb3RlY3Rpb24gZmVhdHVyZS4iKSwgc3RkZXJyKTsKKwkJCXJldHVybiAxOworCQl9CisKKwkJLyoKKwkJICogV2Ugd2FudCB0byB1cGRhdGUgZ3JvdXAgZGVzYyB3aXRoIHRoZSBuZXcgZnJlZSBibG9ja3MgY291bnQKKwkJICovCisJCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX1NVUEVSX09OTFk7CisKKwkJcHJpbnRmKF8oIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaGFzIGJlZW4gZW5hYmxlZCAiCisJCQkgIndpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIpLAorCQkgICAgICAgc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCk7CisJfQorCisJaWYgKEZFQVRVUkVfT0ZGKEUyUF9GRUFUVVJFX0lOQ09NUEFULCBFWFQ0X0ZFQVRVUkVfSU5DT01QQVRfTU1QKSkgeworCQlpbnQgZXJyb3I7CisKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9SRUFET05MWSkgeworCQkJZnB1dHMoXygiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW5ub3RcbiIKKwkJCQkiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iKSwKKwkJCQlzdGRlcnIpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQllcnJvciA9IGV4dDJmc19yZWFkX2JpdG1hcHMoZnMpOworCQlpZiAoZXJyb3IpIHsKKwkJCWZwdXRzKF8oIkVycm9yIHdoaWxlIHJlYWRpbmcgYml0bWFwc1xuIiksIHN0ZGVycik7CisJCQlyZXR1cm4gMTsKKwkJfQorCisJCWVycm9yID0gZXh0MmZzX21tcF9yZWFkKGZzLCBzYi0+c19tbXBfYmxvY2ssIE5VTEwpOworCQlpZiAoZXJyb3IpIHsKKwkJCXN0cnVjdCBtbXBfc3RydWN0ICptbXBfY21wID0gZnMtPm1tcF9jbXA7CisKKwkJCWlmIChlcnJvciA9PSBFWFQyX0VUX01NUF9NQUdJQ19JTlZBTElEKQorCQkJCXByaW50ZihfKCJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90ICIKKwkJCQkJICJtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iKSwKKwkJCQkJIEVYVDRfTU1QX01BR0lDLCBtbXBfY21wLT5tbXBfbWFnaWMpOworCQkJZWxzZQorCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCBlcnJvciwgIiVzIiwKKwkJCQkJXygid2hpbGUgcmVhZGluZyBNTVAgYmxvY2suIikpOworCQkJZ290byBtbXBfZXJyb3I7CisJCX0KKworCQkvKiBXZSBuZWVkIHRvIGZvcmNlIG91dCB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgYXMgd2VsbCAqLworCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBzYi0+c19tbXBfYmxvY2ssIC0xKTsKK21tcF9lcnJvcjoKKwkJc2ItPnNfbW1wX2Jsb2NrID0gMDsKKwkJc2ItPnNfbW1wX3VwZGF0ZV9pbnRlcnZhbCA9IDA7CisJfQorCisJaWYgKEZFQVRVUkVfT04oRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQzX0ZFQVRVUkVfQ09NUEFUX0hBU19KT1VSTkFMKSkgeworCQkvKgorCQkgKiBJZiBhZGRpbmcgYSBqb3VybmFsIGZsYWcsIGxldCB0aGUgY3JlYXRlIGpvdXJuYWwKKwkJICogY29kZSBiZWxvdyBoYW5kbGUgc2V0dGluZyB0aGUgZmxhZyBhbmQgY3JlYXRpbmcgdGhlCisJCSAqIGpvdXJuYWwuICBXZSBzdXBwbHkgYSBkZWZhdWx0IHNpemUgaWYgbmVjZXNzYXJ5LgorCQkgKi8KKwkJaWYgKCFqb3VybmFsX3NpemUpCisJCQlqb3VybmFsX3NpemUgPSAtMTsKKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfam91cm5hbChzYik7CisJfQorCisJaWYgKEZFQVRVUkVfT04oRTJQX0ZFQVRVUkVfQ09NUEFULCBFWFQyX0ZFQVRVUkVfQ09NUEFUX0RJUl9JTkRFWCkpIHsKKwkJaWYgKCFzYi0+c19kZWZfaGFzaF92ZXJzaW9uKQorCQkJc2ItPnNfZGVmX2hhc2hfdmVyc2lvbiA9IEVYVDJfSEFTSF9IQUxGX01ENDsKKwkJaWYgKHV1aWRfaXNfbnVsbCgodW5zaWduZWQgY2hhciAqKSBzYi0+c19oYXNoX3NlZWQpKQorCQkJdXVpZF9nZW5lcmF0ZSgodW5zaWduZWQgY2hhciAqKSBzYi0+c19oYXNoX3NlZWQpOworCX0KKworCWlmIChGRUFUVVJFX09GRihFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0ZMRVhfQkcpKSB7CisJCWlmIChleHQyZnNfY2hlY2tfZGVzYyhmcykpIHsKKwkJCWZwdXRzKF8oIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgIgorCQkJCSJjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKwkJCQkiaW5jb25zaXN0ZW50LlxuIiksIHN0ZGVycik7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChGRUFUVVJFX09GRihFMlBfRkVBVFVSRV9ST19JTkNPTVBBVCwKKwkJCSAgICBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0hVR0VfRklMRSkpIHsKKwkJaWYgKChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgJiYKKwkJICAgICEobW91bnRfZmxhZ3MgJiBFWFQyX01GX1JFQURPTkxZKSkgeworCQkJZnB1dHMoXygiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlICIKKwkJCQkiY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisJCQkJInVubW91bnRlZCBvciBtb3VudGVkICIKKwkJCQkicmVhZC1vbmx5LlxuIiksIHN0ZGVycik7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChGRUFUVVJFX09OKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkgICAgICAgRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNKSkgeworCQljaGVja19mc2NrX25lZWRlZChmcywKKwkJCV8oIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iKSk7CisJCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworCQkJZnB1dHMoXygiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCAiCisJCQkJImZpbGVzeXN0ZW0hXG4iKSwgc3RkZXJyKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKQorCQkJcHJpbnRmKCIlcyIsCisJCQkgICAgICAgXygiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgIgorCQkJCSAidHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgYmxvY2sgbWFwcyAiCisJCQkJICJjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSAiCisJCQkJICJjb3ZlcmFnZSBvZiBtZXRhZGF0YSBjaGVja3N1bW1pbmcuICAiCisJCQkJICJSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIpKTsKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkKKwkJCXByaW50ZigiJXMiLAorCQkJICAgICAgIF8oIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICAiCisJCQkJICJUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSB0aGlzIGZlYXR1cmUgIgorCQkJCSAiZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgIgorCQkJCSAiUnVuIHJlc2l6ZTJmcyAtYiB0byByZWN0aWZ5LlxuIikpOworCQlyZXdyaXRlX2NoZWNrc3VtcyA9IDE7CisJCS8qIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmcgKi8KKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfZ2R0X2NzdW0oZnMtPnN1cGVyKTsKKworCQkvKiBpZiB1bmluaXRfYmcgd2FzIHByZXZpb3VzbHkgb2ZmLCByZXdyaXRlIGdyb3VwIGRlc2MgKi8KKwkJaWYgKCEob2xkX2ZlYXR1cmVzW0UyUF9GRUFUVVJFX1JPX0lOQ09NUEFUXSAmCisJCSAgICAgIEVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0pKQorCQkJZW5hYmxlX3VuaW5pdF9iZyhmcyk7CisKKwkJLyoKKwkJICogU2luY2UgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZywgcHJldGVuZCBsaWtlCisJCSAqIHVuaW5pdF9iZyBoYXMgYmVlbiBvZmYgYWxsIGFsb25nLgorCQkgKi8KKwkJb2xkX2ZlYXR1cmVzW0UyUF9GRUFUVVJFX1JPX0lOQ09NUEFUXSAmPQorCQkJfkVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU07CisJfQorCisJaWYgKEZFQVRVUkVfT0ZGKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9NRVRBREFUQV9DU1VNKSkgeworCQlfX3UzMgl0ZXN0X2ZlYXR1cmVzWzNdOworCisJCWNoZWNrX2ZzY2tfbmVlZGVkKGZzLAorCQkJXygiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iKSk7CisJCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworCQkJZnB1dHMoXygiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgIgorCQkJCSJmaWxlc3lzdGVtIVxuIiksIHN0ZGVycik7CisJCQlleGl0KDEpOworCQl9CisJCXJld3JpdGVfY2hlY2tzdW1zID0gMTsKKworCQkvKiBFbmFibGUgdW5pbml0X2JnIHVubGVzcyB0aGUgdXNlciBleHByZXNzbHkgdHVybmVkIGl0IG9mZiAqLworCQltZW1jcHkodGVzdF9mZWF0dXJlcywgb2xkX2ZlYXR1cmVzLCBzaXplb2YodGVzdF9mZWF0dXJlcykpOworCQl0ZXN0X2ZlYXR1cmVzW0UyUF9GRUFUVVJFX1JPX0lOQ09NUEFUXSB8PQorCQkJCQkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9HRFRfQ1NVTTsKKwkJZTJwX2VkaXRfZmVhdHVyZTIoZmVhdHVyZXMsIHRlc3RfZmVhdHVyZXMsIG9rX2ZlYXR1cmVzLAorCQkJCSAgY2xlYXJfb2tfZmVhdHVyZXMsIE5VTEwsIE5VTEwpOworCQlpZiAodGVzdF9mZWF0dXJlc1tFMlBfRkVBVFVSRV9ST19JTkNPTVBBVF0gJgorCQkJCQkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9HRFRfQ1NVTSkKKwkJCWV4dDJmc19zZXRfZmVhdHVyZV9nZHRfY3N1bShmcy0+c3VwZXIpOworCisJCS8qCisJCSAqIElmIHdlJ3JlIHR1cm5pbmcgb2ZmIG1ldGFkYXRhX2NzdW0gYW5kIG5vdCB0dXJuaW5nIG9uCisJCSAqIHVuaW5pdF9iZywgcmV3cml0ZSBncm91cCBkZXNjLgorCQkgKi8KKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZ2R0X2NzdW0oZnMtPnN1cGVyKSkgeworCQkJZXJyID0gZGlzYWJsZV91bmluaXRfYmcoZnMsCisJCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfTUVUQURBVEFfQ1NVTSk7CisJCQlpZiAoZXJyKQorCQkJCXJldHVybiAxOworCQl9IGVsc2UKKwkJCS8qCisJCQkgKiBtZXRhZGF0YV9jc3VtIHByZXZpb3VzbHkgcHJvdmlkZWQgdW5pbml0X2JnLCBzbyBpZgorCQkJICogd2UncmUgYWxzbyBzZXR0aW5nIHRoZSB1bmluaXRfYmcgZmVhdHVyZSBiaXQsCisJCQkgKiBwcmV0ZW5kIGxpa2UgaXQgd2FzIHByZXZpb3VzbHkgZW5hYmxlZC4gIENoZWNrc3VtcworCQkJICogd2lsbCBiZSByZXdyaXR0ZW4gd2l0aCBjcmMxNiBsYXRlci4KKwkJCSAqLworCQkJb2xkX2ZlYXR1cmVzW0UyUF9GRUFUVVJFX1JPX0lOQ09NUEFUXSB8PQorCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU07CisJCWZzLT5zdXBlci0+c19jaGVja3N1bV9zZWVkID0gMDsKKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfY3N1bV9zZWVkKGZzLT5zdXBlcik7CisJfQorCisJaWYgKEZFQVRVUkVfT04oRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsCisJCSAgICAgICBFWFQ0X0ZFQVRVUkVfUk9fQ09NUEFUX0dEVF9DU1VNKSkgeworCQkvKiBEbyBub3QgZW5hYmxlIHVuaW5pdF9iZyB3aGVuIG1ldGFkYXRhX2NzdW0gZW5hYmxlZCAqLworCQlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkKKwkJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2dkdF9jc3VtKGZzLT5zdXBlcik7CisJCWVsc2UKKwkJCWVuYWJsZV91bmluaXRfYmcoZnMpOworCX0KKworCWlmIChGRUFUVVJFX09GRihFMlBfRkVBVFVSRV9ST19JTkNPTVBBVCwKKwkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0pKSB7CisJCWVyciA9IGRpc2FibGVfdW5pbml0X2JnKGZzLAorCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfR0RUX0NTVU0pOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIDE7CisJfQorCisJLyoKKwkgKiBXZSBkb24ndCBhY3R1YWxseSB0b2dnbGUgNjRiaXQ7IHJlc2l6ZTJmcyBkb2VzIHRoYXQuICBCdXQgdGhpcworCSAqIG11c3QgY29tZSBhZnRlciB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlX29uIHNvIHRoYXQgaXQgd29uJ3QKKwkgKiBjb21wbGFpbiBhYm91dCB0aGUgbGFjayBvZiA2NGJpdC4KKwkgKi8KKwlpZiAoRkVBVFVSRV9PTihFMlBfRkVBVFVSRV9JTkNPTVBBVCwKKwkJICAgICAgIEVYVDRfRkVBVFVSRV9JTkNPTVBBVF82NEJJVCkpIHsKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSAiCisJCQkJCSAgIndoaWxlIG1vdW50ZWQhXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJCWV4dDJmc19jbGVhcl9mZWF0dXJlXzY0Yml0KHNiKTsKKwkJZmVhdHVyZV82NGJpdCA9IDE7CisJfQorCWlmIChGRUFUVVJFX09GRihFMlBfRkVBVFVSRV9JTkNPTVBBVCwKKwkJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF82NEJJVCkpIHsKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiQ2Fubm90IGRpc2FibGUgNjQtYml0IG1vZGUgIgorCQkJCQkgICJ3aGlsZSBtb3VudGVkIVxuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlleHQyZnNfc2V0X2ZlYXR1cmVfNjRiaXQoc2IpOworCQlmZWF0dXJlXzY0Yml0ID0gLTE7CisJfQorCisJaWYgKEZFQVRVUkVfT04oRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsCisJCQkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9RVU9UQSkpIHsKKwkJLyoKKwkJICogU2V0IHRoZSBRX2ZsYWcgaGVyZSBhbmQgaGFuZGxlIHRoZSBxdW90YSBvcHRpb25zIGluIHRoZSBjb2RlCisJCSAqIGJlbG93LgorCQkgKi8KKwkJaWYgKCFRX2ZsYWcpIHsKKwkJCVFfZmxhZyA9IDE7CisJCQkvKiBFbmFibGUgdXNyL2dycCBxdW90YSBieSBkZWZhdWx0ICovCisJCQlmb3IgKHF0eXBlID0gMDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspIHsKKwkJCQlpZiAocXR5cGUgIT0gUFJKUVVPVEEpCisJCQkJCXF1b3RhX2VuYWJsZVtxdHlwZV0gPSBRT1BUX0VOQUJMRTsKKwkJCQllbHNlCisJCQkJCXF1b3RhX2VuYWJsZVtxdHlwZV0gPSBRT1BUX0RJU0FCTEU7CisJCQl9CisJCX0KKwkJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfcXVvdGEoc2IpOworCX0KKworCWlmIChGRUFUVVJFX09OKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfUFJPSkVDVCkpIHsKKwkJaWYgKCFRX2ZsYWcgJiYgIWV4dDJmc19oYXNfZmVhdHVyZV9xdW90YShzYikpCisJCQlmcHV0cyhfKCJcbldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iKSwKKwkJCQlzdGRlcnIpOworCQlRX2ZsYWcgPSAxOworCQlxdW90YV9lbmFibGVbUFJKUVVPVEFdID0gUU9QVF9FTkFCTEU7CisJfQorCisJaWYgKEZFQVRVUkVfT0ZGKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkJCUVYVDRfRkVBVFVSRV9ST19DT01QQVRfUVVPVEEpKSB7CisJCS8qCisJCSAqIFNldCB0aGUgUV9mbGFnIGhlcmUgYW5kIGhhbmRsZSB0aGUgcXVvdGEgb3B0aW9ucyBpbiB0aGUgY29kZQorCQkgKiBiZWxvdy4KKwkJICovCisJCWlmIChRX2ZsYWcpCisJCQlmcHV0cyhfKCJcbldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJyIKKwkJCQkiYXJndW1lbnRzLlxuIiksIHN0ZGVycik7CisJCVFfZmxhZyA9IDE7CisJCS8qIERpc2FibGUgYWxsIHF1b3RhIGJ5IGRlZmF1bHQgKi8KKwkJZm9yIChxdHlwZSA9IDA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKQorCQkJcXVvdGFfZW5hYmxlW3F0eXBlXSA9IFFPUFRfRElTQUJMRTsKKwl9CisKKwlpZiAoRkVBVFVSRV9PTihFMlBfRkVBVFVSRV9JTkNPTVBBVCwgRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0VOQ1JZUFQpKSB7CisJCWZzLT5zdXBlci0+c19lbmNyeXB0X2FsZ29zWzBdID0KKwkJCUVYVDRfRU5DUllQVElPTl9NT0RFX0FFU18yNTZfWFRTOworCQlmcy0+c3VwZXItPnNfZW5jcnlwdF9hbGdvc1sxXSA9CisJCQlFWFQ0X0VOQ1JZUFRJT05fTU9ERV9BRVNfMjU2X0NUUzsKKwl9CisKKwlpZiAoRkVBVFVSRV9PTihFMlBfRkVBVFVSRV9JTkNPTVBBVCwKKwkJRVhUNF9GRUFUVVJFX0lOQ09NUEFUX0NTVU1fU0VFRCkpIHsKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShzYikpIHsKKwkJCWZwdXRzKF8oIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisJCQkJImlzIG9ubHkgc3VwcG9ydGVkXG5vbiBmaWxlc3lzdGVtcyB3aXRoICIKKwkJCQkidGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIiksCisJCQkJc3RkZXJyKTsKKwkJCXJldHVybiAxOworCQl9CisJCXRyeV9jb25maXJtX2NzdW1fc2VlZF9zdXBwb3J0KCk7CisJCWZzLT5zdXBlci0+c19jaGVja3N1bV9zZWVkID0gZnMtPmNzdW1fc2VlZDsKKwl9CisKKwlpZiAoRkVBVFVSRV9PRkYoRTJQX0ZFQVRVUkVfSU5DT01QQVQsCisJCUVYVDRfRkVBVFVSRV9JTkNPTVBBVF9DU1VNX1NFRUQpKSB7CisJCV9fbGUzMiB1dWlkX3NlZWQ7CisKKwkJdXVpZF9zZWVkID0gZXh0MmZzX2NyYzMyY19sZSh+MCwgZnMtPnN1cGVyLT5zX3V1aWQsCisJCQkJCXNpemVvZihmcy0+c3VwZXItPnNfdXVpZCkpOworCQlpZiAoZnMtPnN1cGVyLT5zX2NoZWNrc3VtX3NlZWQgIT0gdXVpZF9zZWVkICYmCisJCSAgICAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpKSB7CisJCQlmcHV0cyhfKCJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nICIKKwkJCQkibWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSB1bm1vdW50ZWQgIgorCQkJCSJcbnRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byAiCisJCQkJIm1hdGNoIHRoZSBuZXcgVVVJRC5cbiIpLCBzdGRlcnIpOworCQkJcmV0dXJuIDE7CisJCX0KKworCQlyZXdyaXRlX2NoZWNrc3VtcyA9IDE7CisJfQorCisJaWYgKHNiLT5zX3Jldl9sZXZlbCA9PSBFWFQyX0dPT0RfT0xEX1JFViAmJgorCSAgICAoc2ItPnNfZmVhdHVyZV9jb21wYXQgfHwgc2ItPnNfZmVhdHVyZV9yb19jb21wYXQgfHwKKwkgICAgIHNiLT5zX2ZlYXR1cmVfaW5jb21wYXQpKQorCQlleHQyZnNfdXBkYXRlX2R5bmFtaWNfcmV2KGZzKTsKKworCWlmIChGRUFUVVJFX0NIQU5HRUQoRTJQX0ZFQVRVUkVfUk9fSU5DT01QQVQsCisJCQkgICAgRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9TUEFSU0VfU1VQRVIpIHx8CisJICAgIEZFQVRVUkVfT0ZGKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkJRVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9IVUdFX0ZJTEUpIHx8CisJICAgIEZFQVRVUkVfQ0hBTkdFRChFMlBfRkVBVFVSRV9JTkNPTVBBVCwKKwkJCSAgICBFWFQyX0ZFQVRVUkVfSU5DT01QQVRfRklMRVRZUEUpIHx8CisJICAgIEZFQVRVUkVfQ0hBTkdFRChFMlBfRkVBVFVSRV9DT01QQVQsCisJCQkgICAgRVhUMl9GRUFUVVJFX0NPTVBBVF9SRVNJWkVfSU5PREUpIHx8CisJICAgIEZFQVRVUkVfT0ZGKEUyUF9GRUFUVVJFX1JPX0lOQ09NUEFULAorCQkJRVhUMl9GRUFUVVJFX1JPX0NPTVBBVF9MQVJHRV9GSUxFKSkKKwkJcmVxdWVzdF9mc2NrX2FmdGVyd2FyZHMoZnMpOworCisJaWYgKChvbGRfZmVhdHVyZXNbRTJQX0ZFQVRVUkVfQ09NUEFUXSAhPSBzYi0+c19mZWF0dXJlX2NvbXBhdCkgfHwKKwkgICAgKG9sZF9mZWF0dXJlc1tFMlBfRkVBVFVSRV9JTkNPTVBBVF0gIT0gc2ItPnNfZmVhdHVyZV9pbmNvbXBhdCkgfHwKKwkgICAgKG9sZF9mZWF0dXJlc1tFMlBfRkVBVFVSRV9ST19JTkNPTVBBVF0gIT0gc2ItPnNfZmVhdHVyZV9yb19jb21wYXQpKQorCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEFkZCBhIGpvdXJuYWwgdG8gdGhlIGZpbGVzeXN0ZW0uCisgKi8KK3N0YXRpYyBpbnQgYWRkX2pvdXJuYWwoZXh0Ml9maWxzeXMgZnMpCit7CisJdW5zaWduZWQgbG9uZyBqb3VybmFsX2Jsb2NrczsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfZmlsc3lzCWpmczsKKwlpb19tYW5hZ2VyCWlvX3B0cjsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfam91cm5hbChmcy0+c3VwZXIpKSB7CisJCWZwdXRzKF8oIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIGEgam91cm5hbC5cbiIpLCBzdGRlcnIpOworCQlnb3RvIGVycjsKKwl9CisJaWYgKGpvdXJuYWxfZGV2aWNlKSB7CisJCWlmICghY2hlY2tfcGxhdXNpYmlsaXR5KGpvdXJuYWxfZGV2aWNlLCBDSEVDS19CTE9DS19ERVYsCisJCQkJCU5VTEwpKQorCQkJcHJvY2VlZF9xdWVzdGlvbigtMSk7CisJCWNoZWNrX21vdW50KGpvdXJuYWxfZGV2aWNlLCAwLCBfKCJqb3VybmFsIikpOworI2lmZGVmIENPTkZJR19URVNUSU9fREVCVUcKKwkJaWYgKGdldGVudigiVEVTVF9JT19GTEFHUyIpIHx8IGdldGVudigiVEVTVF9JT19CTE9DSyIpKSB7CisJCQlpb19wdHIgPSB0ZXN0X2lvX21hbmFnZXI7CisJCQl0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwkJfSBlbHNlCisjZW5kaWYKKwkJCWlvX3B0ciA9IHVuaXhfaW9fbWFuYWdlcjsKKwkJcmV0dmFsID0gZXh0MmZzX29wZW4oam91cm5hbF9kZXZpY2UsIEVYVDJfRkxBR19SV3wKKwkJCQkgICAgIEVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSywgMCwKKwkJCQkgICAgIGZzLT5ibG9ja3NpemUsIGlvX3B0ciwgJmpmcyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkJXygiXG5cdHdoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgb24gJXNcbiIpLAorCQkJCWpvdXJuYWxfZGV2aWNlKTsKKwkJCWdvdG8gZXJyOworCQl9CisJCXByaW50ZihfKCJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIiksCisJCSAgICAgICBqb3VybmFsX2RldmljZSk7CisJCWZmbHVzaChzdGRvdXQpOworCisJCXJldHZhbCA9IGV4dDJmc19hZGRfam91cm5hbF9kZXZpY2UoZnMsIGpmcyk7CisJCWV4dDJmc19jbG9zZV9mcmVlKCZqZnMpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCV8oIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiKSwKKwkJCQlqb3VybmFsX2RldmljZSk7CisJCQlnb3RvIGVycjsKKwkJfQorCQlmcHV0cyhfKCJkb25lXG4iKSwgc3Rkb3V0KTsKKwl9IGVsc2UgaWYgKGpvdXJuYWxfc2l6ZSkgeworCQlmcHV0cyhfKCJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiKSwgc3Rkb3V0KTsKKwkJZmZsdXNoKHN0ZG91dCk7CisJCWpvdXJuYWxfYmxvY2tzID0gZmlndXJlX2pvdXJuYWxfc2l6ZShqb3VybmFsX3NpemUsIGZzKTsKKworCQlpZiAoam91cm5hbF9sb2NhdGlvbl9zdHJpbmcpCisJCQlqb3VybmFsX2xvY2F0aW9uID0KKwkJCQlwYXJzZV9udW1fYmxvY2tzMihqb3VybmFsX2xvY2F0aW9uX3N0cmluZywKKwkJCQkJCSAgZnMtPnN1cGVyLT5zX2xvZ19ibG9ja19zaXplKTsKKwkJcmV0dmFsID0gZXh0MmZzX2FkZF9qb3VybmFsX2lub2RlMihmcywgam91cm5hbF9ibG9ja3MsCisJCQkJCQkgICBqb3VybmFsX2xvY2F0aW9uLAorCQkJCQkJICAgam91cm5hbF9mbGFncyk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCQkJXygiXG5cdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCBmaWxlIikpOworCQkJcmV0dXJuIHJldHZhbDsKKwkJfSBlbHNlCisJCQlmcHV0cyhfKCJkb25lXG4iKSwgc3Rkb3V0KTsKKwkJLyoKKwkJICogSWYgdGhlIGZpbGVzeXN0ZW0gd2Fzbid0IG1vdW50ZWQsIHdlIG5lZWQgdG8gZm9yY2UKKwkJICogdGhlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG91dC4KKwkJICovCisJCWlmICgobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpID09IDApCisJCQlmcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19TVVBFUl9PTkxZOworCX0KKwlwcmludF9jaGVja19tZXNzYWdlKGZzLT5zdXBlci0+c19tYXhfbW50X2NvdW50LAorCQkJICAgIGZzLT5zdXBlci0+c19jaGVja2ludGVydmFsKTsKKwlyZXR1cm4gMDsKKworZXJyOgorCWZyZWUoam91cm5hbF9kZXZpY2UpOworCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBoYW5kbGVfcXVvdGFfb3B0aW9ucyhleHQyX2ZpbHN5cyBmcykKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCXF1b3RhX2N0eF90IHFjdHg7CisJZXh0Ml9pbm9fdCBxZl9pbm87CisJZW51bSBxdW90YV90eXBlIHF0eXBlOworCWludCBlbmFibGUgPSAwOworCisJZm9yIChxdHlwZSA9IDAgOyBxdHlwZSA8IE1BWFFVT1RBUzsgcXR5cGUrKykKKwkJaWYgKHF1b3RhX2VuYWJsZVtxdHlwZV0gIT0gMCkKKwkJCWJyZWFrOworCWlmIChxdHlwZSA9PSBNQVhRVU9UQVMpCisJCS8qIE5vdGhpbmcgdG8gZG8uICovCisJCXJldHVybjsKKworCXJldHZhbCA9IHF1b3RhX2luaXRfY29udGV4dCgmcWN0eCwgZnMsIFFVT1RBX0FMTF9CSVQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCV8oIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIpKTsKKwkJZXhpdCgxKTsKKwl9CisJZm9yIChxdHlwZSA9IDAgOyBxdHlwZSA8IE1BWFFVT1RBUzsgcXR5cGUrKykgeworCQlpZiAocXVvdGFfZW5hYmxlW3F0eXBlXSA9PSBRT1BUX0VOQUJMRSkgeworCQkJZW5hYmxlID0gMTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChlbmFibGUpCisJCXF1b3RhX2NvbXB1dGVfdXNhZ2UocWN0eCk7CisKKwlmb3IgKHF0eXBlID0gMCA7IHF0eXBlIDwgTUFYUVVPVEFTOyBxdHlwZSsrKSB7CisJCWlmIChxdW90YV9lbmFibGVbcXR5cGVdID09IFFPUFRfRU5BQkxFICYmCisJCSAgICAqcXVvdGFfc2JfaW51bXAoZnMtPnN1cGVyLCBxdHlwZSkgPT0gMCkgeworCQkJaWYgKChxZl9pbm8gPSBxdW90YV9maWxlX2V4aXN0cyhmcywgcXR5cGUpKSA+IDApIHsKKwkJCQlyZXR2YWwgPSBxdW90YV91cGRhdGVfbGltaXRzKHFjdHgsIHFmX2lubywKKwkJCQkJCQkgICAgIHF0eXBlKTsKKwkJCQlpZiAocmV0dmFsKSB7CisJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkJCQlfKCJ3aGlsZSB1cGRhdGluZyBxdW90YSBsaW1pdHMgKCVkKSIpLAorCQkJCQkJcXR5cGUpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCX0KKwkJCXJldHZhbCA9IHF1b3RhX3dyaXRlX2lub2RlKHFjdHgsIDEgPDwgcXR5cGUpOworCQkJaWYgKHJldHZhbCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkJCV8oIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIiksCisJCQkJCXF0eXBlKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQl9IGVsc2UgaWYgKHF1b3RhX2VuYWJsZVtxdHlwZV0gPT0gUU9QVF9ESVNBQkxFKSB7CisJCQlyZXR2YWwgPSBxdW90YV9yZW1vdmVfaW5vZGUoZnMsIHF0eXBlKTsKKwkJCWlmIChyZXR2YWwpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJCQlfKCJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiKSwKKwkJCQkJcXR5cGUpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwl9CisKKwlxdW90YV9yZWxlYXNlX2NvbnRleHQoJnFjdHgpOworCisJaWYgKGVuYWJsZSkgeworCQlleHQyZnNfc2V0X2ZlYXR1cmVfcXVvdGEoZnMtPnN1cGVyKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0gZWxzZSB7CisJCWZvciAocXR5cGUgPSAwIDsgcXR5cGUgPCBNQVhRVU9UQVM7IHF0eXBlKyspCisJCQlpZiAoKnF1b3RhX3NiX2ludW1wKGZzLT5zdXBlciwgcXR5cGUpICE9IDApCisJCQkJYnJlYWs7CisJCWlmIChxdHlwZSA9PSBNQVhRVU9UQVMpIHsKKwkJCWZzLT5zdXBlci0+c19mZWF0dXJlX3JvX2NvbXBhdCAmPQorCQkJCQl+RVhUNF9GRUFUVVJFX1JPX0NPTVBBVF9RVU9UQTsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfQorCX0KKworCXJldHVybjsKK30KKworc3RhdGljIGludCBvcHRpb25faGFuZGxlX2Z1bmN0aW9uKGNoYXIgKnRva2VuKQoreworCWlmIChzdHJuY21wKHRva2VuLCAidXNyIiwgMykgPT0gMCkgeworCQlxdW90YV9lbmFibGVbVVNSUVVPVEFdID0gUU9QVF9FTkFCTEU7CisJfSBlbHNlIGlmIChzdHJuY21wKHRva2VuLCAiXnVzciIsIDQpID09IDApIHsKKwkJcXVvdGFfZW5hYmxlW1VTUlFVT1RBXSA9IFFPUFRfRElTQUJMRTsKKwl9IGVsc2UgaWYgKHN0cm5jbXAodG9rZW4sICJncnAiLCAzKSA9PSAwKSB7CisJCXF1b3RhX2VuYWJsZVtHUlBRVU9UQV0gPSBRT1BUX0VOQUJMRTsKKwl9IGVsc2UgaWYgKHN0cm5jbXAodG9rZW4sICJeZ3JwIiwgNCkgPT0gMCkgeworCQlxdW90YV9lbmFibGVbR1JQUVVPVEFdID0gUU9QVF9ESVNBQkxFOworCX0gZWxzZSBpZiAoc3RybmNtcCh0b2tlbiwgInByaiIsIDMpID09IDApIHsKKwkJcXVvdGFfZW5hYmxlW1BSSlFVT1RBXSA9IFFPUFRfRU5BQkxFOworCX0gZWxzZSBpZiAoc3RybmNtcCh0b2tlbiwgIl5wcmoiLCA0KSA9PSAwKSB7CisJCXF1b3RhX2VuYWJsZVtQUkpRVU9UQV0gPSBRT1BUX0RJU0FCTEU7CisJfSBlbHNlIHsKKwkJZnB1dHMoXygiXG5CYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG5cbiIKKwkJCSJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlICIKKwkJCSIocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggY29tbWEpOlxuIgorCQkJIlx0W15ddXNyW3F1b3RhXVxuIgorCQkJIlx0W15dZ3JwW3F1b3RhXVxuIgorCQkJIlx0W15dcHJqW3F1b3RhXVxuIgorCQkJIlxuXG4iKSwgc3RkZXJyKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwYXJzZV9lMmxhYmVsX29wdGlvbnMoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKK3sKKwlpZiAoKGFyZ2MgPCAyKSB8fCAoYXJnYyA+IDMpKSB7CisJCWZwdXRzKF8oIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iKSwgc3RkZXJyKTsKKwkJZXhpdCgxKTsKKwl9CisJaW9fb3B0aW9ucyA9IHN0cmNocihhcmd2WzFdLCAnPycpOworCWlmIChpb19vcHRpb25zKQorCQkqaW9fb3B0aW9ucysrID0gMDsKKwlkZXZpY2VfbmFtZSA9IGJsa2lkX2dldF9kZXZuYW1lKE5VTEwsIGFyZ3ZbMV0sIE5VTEwpOworCWlmICghZGV2aWNlX25hbWUpIHsKKwkJY29tX2VycigiZTJsYWJlbCIsIDAsIF8oIlVuYWJsZSB0byByZXNvbHZlICclcyciKSwKKwkJCWFyZ3ZbMV0pOworCQlleGl0KDEpOworCX0KKwlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfSk9VUk5BTF9ERVZfT0s7CisJaWYgKGFyZ2MgPT0gMykgeworCQlvcGVuX2ZsYWcgfD0gRVhUMl9GTEFHX1JXOworCQlMX2ZsYWcgPSAxOworCQluZXdfbGFiZWwgPSBhcmd2WzJdOworCX0gZWxzZQorCQlwcmludF9sYWJlbCsrOworfQorCitzdGF0aWMgdGltZV90IHBhcnNlX3RpbWUoY2hhciAqc3RyKQoreworCXN0cnVjdAl0bQl0czsKKworCWlmIChzdHJjbXAoc3RyLCAibm93IikgPT0gMCkgeworCQlyZXR1cm4gKHRpbWUoMCkpOworCX0KKwltZW1zZXQoJnRzLCAwLCBzaXplb2YodHMpKTsKKyNpZmRlZiBIQVZFX1NUUlBUSU1FCisJc3RycHRpbWUoc3RyLCAiJVklbSVkJUglTSVTIiwgJnRzKTsKKyNlbHNlCisJc3NjYW5mKHN0ciwgIiU0ZCUyZCUyZCUyZCUyZCUyZCIsICZ0cy50bV95ZWFyLCAmdHMudG1fbW9uLAorCSAgICAgICAmdHMudG1fbWRheSwgJnRzLnRtX2hvdXIsICZ0cy50bV9taW4sICZ0cy50bV9zZWMpOworCXRzLnRtX3llYXIgLT0gMTkwMDsKKwl0cy50bV9tb24gLT0gMTsKKwlpZiAodHMudG1feWVhciA8IDAgfHwgdHMudG1fbW9uIDwgMCB8fCB0cy50bV9tb24gPiAxMSB8fAorCSAgICB0cy50bV9tZGF5IDwgMCB8fCB0cy50bV9tZGF5ID4gMzEgfHwgdHMudG1faG91ciA+IDIzIHx8CisJICAgIHRzLnRtX21pbiA+IDU5IHx8IHRzLnRtX3NlYyA+IDYxKQorCQl0cy50bV9tZGF5ID0gMDsKKyNlbmRpZgorCWlmICh0cy50bV9tZGF5ID09IDApIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQlfKCJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIpLAorCQkJc3RyKTsKKwkJdXNhZ2UoKTsKKwl9CisJdHMudG1faXNkc3QgPSAtMTsKKwlyZXR1cm4gKG1rdGltZSgmdHMpKTsKK30KKworc3RhdGljIHZvaWQgcGFyc2VfdHVuZTJmc19vcHRpb25zKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQgYzsKKwljaGFyICp0bXA7CisJc3RydWN0IGdyb3VwICpncjsKKwlzdHJ1Y3QgcGFzc3dkICpwdzsKKwlpbnQgcmV0OworCWNoYXIgb3B0c3RyaW5nWzEwMF0gPSAiYzplOmZnOmk6amxtOm86cjpzOnU6QzpFOkk6SjpMOk06TzpUOlU6ejpROiI7CisKKwlvcGVuX2ZsYWcgPSAwOworCXByaW50ZigidHVuZTJmcyAlcyAoJXMpXG4iLCBFMkZTUFJPR1NfVkVSU0lPTiwgRTJGU1BST0dTX0RBVEUpOworCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2LCBvcHRzdHJpbmcpKSAhPSBFT0YpCisJCXN3aXRjaCAoYykgeworCQljYXNlICdjJzoKKwkJCW1heF9tb3VudF9jb3VudCA9IHN0cnRvbChvcHRhcmcsICZ0bXAsIDApOworCQkJaWYgKCp0bXAgfHwgbWF4X21vdW50X2NvdW50ID4gMTYwMDApIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIG1vdW50cyBjb3VudCAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWlmIChtYXhfbW91bnRfY291bnQgPT0gMCkKKwkJCQltYXhfbW91bnRfY291bnQgPSAtMTsKKwkJCWNfZmxhZyA9IDE7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnQyc6CisJCQltb3VudF9jb3VudCA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wIHx8IG1vdW50X2NvdW50ID4gMTYwMDApIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIG1vdW50cyBjb3VudCAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCUNfZmxhZyA9IDE7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnZSc6CisJCQlpZiAoc3RyY21wKG9wdGFyZywgImNvbnRpbnVlIikgPT0gMCkKKwkJCQllcnJvcnMgPSBFWFQyX0VSUk9SU19DT05USU5VRTsKKwkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJyZW1vdW50LXJvIikgPT0gMCkKKwkJCQllcnJvcnMgPSBFWFQyX0VSUk9SU19STzsKKwkJCWVsc2UgaWYgKHN0cmNtcChvcHRhcmcsICJwYW5pYyIpID09IDApCisJCQkJZXJyb3JzID0gRVhUMl9FUlJPUlNfUEFOSUM7CisJCQllbHNlIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiKSwKKwkJCQkJb3B0YXJnKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJZV9mbGFnID0gMTsKKwkJCW9wZW5fZmxhZyA9IEVYVDJfRkxBR19SVzsKKwkJCWJyZWFrOworCQljYXNlICdFJzoKKwkJCWV4dGVuZGVkX2NtZCA9IG9wdGFyZzsKKwkJCW9wZW5fZmxhZyB8PSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnZic6IC8qIEZvcmNlICovCisJCQlmX2ZsYWcrKzsKKwkJCWJyZWFrOworCQljYXNlICdnJzoKKwkJCXJlc2dpZCA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wKSB7CisJCQkJZ3IgPSBnZXRncm5hbShvcHRhcmcpOworCQkJCWlmIChnciA9PSBOVUxMKQorCQkJCQl0bXAgPSBvcHRhcmc7CisJCQkJZWxzZSB7CisJCQkJCXJlc2dpZCA9IGdyLT5ncl9naWQ7CisJCQkJCSp0bXAgPSAwOworCQkJCX0KKwkJCX0KKwkJCWlmICgqdG1wKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCWdfZmxhZyA9IDE7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlpbnRlcnZhbCA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCXN3aXRjaCAoKnRtcCkgeworCQkJY2FzZSAncyc6CisJCQkJdG1wKys7CisJCQkJYnJlYWs7CisJCQljYXNlICdcMCc6CisJCQljYXNlICdkJzoKKwkJCWNhc2UgJ0QnOiAvKiBkYXlzICovCisJCQkJaW50ZXJ2YWwgKj0gODY0MDA7CisJCQkJaWYgKCp0bXAgIT0gJ1wwJykKKwkJCQkJdG1wKys7CisJCQkJYnJlYWs7CisJCQljYXNlICdtJzoKKwkJCWNhc2UgJ00nOiAvKiBtb250aHMhICovCisJCQkJaW50ZXJ2YWwgKj0gODY0MDAgKiAzMDsKKwkJCQl0bXArKzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3cnOgorCQkJY2FzZSAnVyc6IC8qIHdlZWtzICovCisJCQkJaW50ZXJ2YWwgKj0gODY0MDAgKiA3OworCQkJCXRtcCsrOworCQkJCWJyZWFrOworCQkJfQorCQkJaWYgKCp0bXApIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIGludGVydmFsIC0gJXMiKSwgb3B0YXJnKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJaV9mbGFnID0gMTsKKwkJCW9wZW5fZmxhZyA9IEVYVDJfRkxBR19SVzsKKwkJCWJyZWFrOworCQljYXNlICdqJzoKKwkJCWlmICgham91cm5hbF9zaXplKQorCQkJCWpvdXJuYWxfc2l6ZSA9IC0xOworCQkJb3Blbl9mbGFnID0gRVhUMl9GTEFHX1JXOworCQkJYnJlYWs7CisJCWNhc2UgJ0onOgorCQkJcGFyc2Vfam91cm5hbF9vcHRzKG9wdGFyZyk7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnbCc6CisJCQlsX2ZsYWcgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ0wnOgorCQkJbmV3X2xhYmVsID0gb3B0YXJnOworCQkJTF9mbGFnID0gMTsKKwkJCW9wZW5fZmxhZyB8PSBFWFQyX0ZMQUdfUlcgfAorCQkJCUVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSzsKKwkJCWJyZWFrOworCQljYXNlICdtJzoKKwkJCXJlc2VydmVkX3JhdGlvID0gc3RydG9kKG9wdGFyZywgJnRtcCk7CisJCQlpZiAoKnRtcCB8fCByZXNlcnZlZF9yYXRpbyA+IDUwIHx8CisJCQkgICAgcmVzZXJ2ZWRfcmF0aW8gPCAwKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCW1fZmxhZyA9IDE7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnTSc6CisJCQluZXdfbGFzdF9tb3VudGVkID0gb3B0YXJnOworCQkJTV9mbGFnID0gMTsKKwkJCW9wZW5fZmxhZyA9IEVYVDJfRkxBR19SVzsKKwkJCWJyZWFrOworCQljYXNlICdvJzoKKwkJCWlmIChtbnRvcHRzX2NtZCkgeworCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCQlfKCItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIpKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJbW50b3B0c19jbWQgPSBvcHRhcmc7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnTyc6CisJCQlpZiAoZmVhdHVyZXNfY21kKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJCV8oIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIikpOworCQkJCXVzYWdlKCk7CisJCQl9CisJCQlmZWF0dXJlc19jbWQgPSBvcHRhcmc7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAnUSc6CisJCQlRX2ZsYWcgPSAxOworCQkJcmV0ID0gcGFyc2VfcXVvdGFfb3B0cyhvcHRhcmcsIG9wdGlvbl9oYW5kbGVfZnVuY3Rpb24pOworCQkJaWYgKHJldCkKKwkJCQlleGl0KDEpOworCQkJb3Blbl9mbGFnID0gRVhUMl9GTEFHX1JXOworCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJcmVzZXJ2ZWRfYmxvY2tzID0gc3RydG91bChvcHRhcmcsICZ0bXAsIDApOworCQkJaWYgKCp0bXApIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiYmFkIHJlc2VydmVkIGJsb2NrcyBjb3VudCAtICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCXJfZmxhZyA9IDE7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAncyc6IC8qIERlcHJlY2F0ZWQgKi8KKwkJCXNfZmxhZyA9IGF0b2kob3B0YXJnKTsKKwkJCW9wZW5fZmxhZyA9IEVYVDJfRkxBR19SVzsKKwkJCWJyZWFrOworCQljYXNlICdUJzoKKwkJCVRfZmxhZyA9IDE7CisJCQlsYXN0X2NoZWNrX3RpbWUgPSBwYXJzZV90aW1lKG9wdGFyZyk7CisJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQlicmVhazsKKwkJY2FzZSAndSc6CisJCQkJcmVzdWlkID0gc3RydG91bChvcHRhcmcsICZ0bXAsIDApOworCQkJCWlmICgqdG1wKSB7CisJCQkJCXB3ID0gZ2V0cHduYW0ob3B0YXJnKTsKKwkJCQkJaWYgKHB3ID09IE5VTEwpCisJCQkJCQl0bXAgPSBvcHRhcmc7CisJCQkJCWVsc2UgeworCQkJCQkJcmVzdWlkID0gcHctPnB3X3VpZDsKKwkJCQkJCSp0bXAgPSAwOworCQkJCQl9CisJCQkJfQorCQkJCWlmICgqdG1wKSB7CisJCQkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCQkJXygiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIpLAorCQkJCQkJb3B0YXJnKTsKKwkJCQkJdXNhZ2UoKTsKKwkJCQl9CisJCQkJdV9mbGFnID0gMTsKKwkJCQlvcGVuX2ZsYWcgPSBFWFQyX0ZMQUdfUlc7CisJCQkJYnJlYWs7CisJCWNhc2UgJ1UnOgorCQkJbmV3X1VVSUQgPSBvcHRhcmc7CisJCQlVX2ZsYWcgPSAxOworCQkJb3Blbl9mbGFnID0gRVhUMl9GTEFHX1JXIHwKKwkJCQlFWFQyX0ZMQUdfSk9VUk5BTF9ERVZfT0s7CisJCQlicmVhazsKKwkJY2FzZSAnSSc6CisJCQluZXdfaW5vZGVfc2l6ZSA9IHN0cnRvdWwob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgqdG1wKSB7CisJCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsCisJCQkJCV8oImJhZCBpbm9kZSBzaXplIC0gJXMiKSwKKwkJCQkJb3B0YXJnKTsKKwkJCQl1c2FnZSgpOworCQkJfQorCQkJaWYgKCEoKG5ld19pbm9kZV9zaXplICYKKwkJCSAgICAgICAobmV3X2lub2RlX3NpemUgLSAxKSkgPT0gMCkpIHsKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQkJXygiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgIgorCQkJCQkgICJwb3dlciBvZiB0d28tICVzIiksCisJCQkJCW9wdGFyZyk7CisJCQkJdXNhZ2UoKTsKKwkJCX0KKwkJCW9wZW5fZmxhZyA9IEVYVDJfRkxBR19SVzsKKwkJCUlfZmxhZyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAneic6CisJCQl1bmRvX2ZpbGUgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKCk7CisJCX0KKwlpZiAob3B0aW5kIDwgYXJnYyAtIDEgfHwgb3B0aW5kID09IGFyZ2MpCisJCXVzYWdlKCk7CisJaWYgKCFvcGVuX2ZsYWcgJiYgIWxfZmxhZykKKwkJdXNhZ2UoKTsKKwlpb19vcHRpb25zID0gc3RyY2hyKGFyZ3Zbb3B0aW5kXSwgJz8nKTsKKwlpZiAoaW9fb3B0aW9ucykKKwkJKmlvX29wdGlvbnMrKyA9IDA7CisJZGV2aWNlX25hbWUgPSBibGtpZF9nZXRfZGV2bmFtZShOVUxMLCBhcmd2W29wdGluZF0sIE5VTEwpOworCWlmICghZGV2aWNlX25hbWUpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsIF8oIlVuYWJsZSB0byByZXNvbHZlICclcyciKSwKKwkJCWFyZ3Zbb3B0aW5kXSk7CisJCWV4aXQoMSk7CisJfQorfQorCisjaWZkZWYgQ09ORklHX0JVSUxEX0ZJTkRGUwordm9pZCBkb19maW5kZnMoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNoYXIJKmRldjsKKworCWlmICgoYXJnYyAhPSAyKSB8fAorCSAgICAoc3RybmNtcChhcmd2WzFdLCAiTEFCRUw9IiwgNikgJiYgc3RybmNtcChhcmd2WzFdLCAiVVVJRD0iLCA1KSkpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogZmluZGZzIExBQkVMPTxsYWJlbD58VVVJRD08dXVpZD5cbiIpOworCQlleGl0KDIpOworCX0KKwlkZXYgPSBibGtpZF9nZXRfZGV2bmFtZShOVUxMLCBhcmd2WzFdLCBOVUxMKTsKKwlpZiAoIWRldikgeworCQljb21fZXJyKCJmaW5kZnMiLCAwLCBfKCJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIiksCisJCQlhcmd2WzFdKTsKKwkJZXhpdCgxKTsKKwl9CisJcHV0cyhkZXYpOworCWV4aXQoMCk7Cit9CisjZW5kaWYKKworc3RhdGljIGludCBwYXJzZV9leHRlbmRlZF9vcHRzKGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICpvcHRzKQoreworCWNoYXIJKmJ1ZiwgKnRva2VuLCAqbmV4dCwgKnAsICphcmc7CisJaW50CWxlbiwgaGFzaF9hbGc7CisJaW50CXJfdXNhZ2UgPSAwOworCisJbGVuID0gc3RybGVuKG9wdHMpOworCWJ1ZiA9IG1hbGxvYyhsZW4rMSk7CisJaWYgKCFidWYpIHsKKwkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQlfKCJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIpKTsKKwkJcmV0dXJuIDE7CisJfQorCXN0cmNweShidWYsIG9wdHMpOworCWZvciAodG9rZW4gPSBidWY7IHRva2VuICYmICp0b2tlbjsgdG9rZW4gPSBuZXh0KSB7CisJCXAgPSBzdHJjaHIodG9rZW4sICcsJyk7CisJCW5leHQgPSAwOworCQlpZiAocCkgeworCQkJKnAgPSAwOworCQkJbmV4dCA9IHArMTsKKwkJfQorCQlhcmcgPSBzdHJjaHIodG9rZW4sICc9Jyk7CisJCWlmIChhcmcpIHsKKwkJCSphcmcgPSAwOworCQkJYXJnKys7CisJCX0KKwkJaWYgKHN0cmNtcCh0b2tlbiwgImNsZWFyLW1tcCIpID09IDAgfHwKKwkJICAgIHN0cmNtcCh0b2tlbiwgImNsZWFyX21tcCIpID09IDApIHsKKwkJCWNsZWFyX21tcCA9IDE7CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAibW1wX3VwZGF0ZV9pbnRlcnZhbCIpID09IDApIHsKKwkJCXVuc2lnbmVkIGxvbmcgaW50djsKKwkJCWlmICghYXJnKSB7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaW50diA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQlpZiAoKnApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiSW52YWxpZCBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIiksCisJCQkJCWFyZyk7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKGludHYgPT0gMCkgeworCQkJCWludHYgPSBFWFQ0X01NUF9VUERBVEVfSU5URVJWQUw7CisJCQl9IGVsc2UgaWYgKGludHYgPiBFWFQ0X01NUF9NQVhfVVBEQVRFX0lOVEVSVkFMKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iKSwKKwkJCQkJaW50dik7CisJCQkJcl91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJcHJpbnRmKFBfKCJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlICIKKwkJCQkgICJpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iLAorCQkJCSAgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgIgorCQkJCSAgImludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iLCBpbnR2KSwKKwkJCSAgICAgICBpbnR2KTsKKwkJCWZzLT5zdXBlci0+c19tbXBfdXBkYXRlX2ludGVydmFsID0gaW50djsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAidGVzdF9mcyIpKSB7CisJCQlmcy0+c3VwZXItPnNfZmxhZ3MgfD0gRVhUMl9GTEFHU19URVNUX0ZJTEVTWVM7CisJCQlwcmludGYoIlNldHRpbmcgdGVzdCBmaWxlc3lzdGVtIGZsYWdcbiIpOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQl9IGVsc2UgaWYgKCFzdHJjbXAodG9rZW4sICJedGVzdF9mcyIpKSB7CisJCQlmcy0+c3VwZXItPnNfZmxhZ3MgJj0gfkVYVDJfRkxBR1NfVEVTVF9GSUxFU1lTOworCQkJcHJpbnRmKCJDbGVhcmluZyB0ZXN0IGZpbGVzeXN0ZW0gZmxhZ1xuIik7CisJCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAic3RyaWRlIikgPT0gMCkgeworCQkJaWYgKCFhcmcpIHsKKwkJCQlyX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQlzdHJpZGUgPSBzdHJ0b3VsKGFyZywgJnAsIDApOworCQkJaWYgKCpwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iKSwKKwkJCQkJYXJnKTsKKwkJCQlyX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQlzdHJpZGVfc2V0ID0gMTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJzdHJpcGUtd2lkdGgiKSA9PSAwIHx8CisJCQkgICBzdHJjbXAodG9rZW4sICJzdHJpcGVfd2lkdGgiKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXN0cmlwZV93aWR0aCA9IHN0cnRvdWwoYXJnLCAmcCwgMCk7CisJCQlpZiAoKnApIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQkJXygiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIpLAorCQkJCQlhcmcpOworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCXN0cmlwZV93aWR0aF9zZXQgPSAxOworCQl9IGVsc2UgaWYgKHN0cmNtcCh0b2tlbiwgImhhc2hfYWxnIikgPT0gMCB8fAorCQkJICAgc3RyY21wKHRva2VuLCAiaGFzaC1hbGciKSA9PSAwKSB7CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWhhc2hfYWxnID0gZTJwX3N0cmluZzJoYXNoKGFyZyk7CisJCQlpZiAoaGFzaF9hbGcgPCAwKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCV8oIkludmFsaWQgaGFzaCBhbGdvcml0aG06ICVzXG4iKSwKKwkJCQkJYXJnKTsKKwkJCQlyX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQlmcy0+c3VwZXItPnNfZGVmX2hhc2hfdmVyc2lvbiA9IGhhc2hfYWxnOworCQkJcHJpbnRmKF8oIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSAiCisJCQkJICJ0byAlcyAoJWQpXG4iKSwKKwkJCSAgICAgICBhcmcsIGhhc2hfYWxnKTsKKwkJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJfSBlbHNlIGlmICghc3RyY21wKHRva2VuLCAibW91bnRfb3B0cyIpKSB7CisJCQlpZiAoIWFyZykgeworCQkJCXJfdXNhZ2UrKzsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWlmIChzdHJsZW4oYXJnKSA+PSBzaXplb2YoZnMtPnN1cGVyLT5zX21vdW50X29wdHMpKSB7CisJCQkJZnByaW50ZihzdGRlcnIsCisJCQkJCSJFeHRlbmRlZCBtb3VudCBvcHRpb25zIHRvbyBsb25nXG4iKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWV4dF9tb3VudF9vcHRzID0gc3RyZHVwKGFyZyk7CisJCX0gZWxzZQorCQkJcl91c2FnZSsrOworCX0KKwlpZiAocl91c2FnZSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiXG5CYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG5cbiIKKwkJCSJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCAiCisJCQkiYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisJCQkiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuXG4iCisJCQkiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisJCQkiXHRjbGVhcl9tbXBcbiIKKwkJCSJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKwkJCSJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKwkJCSJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKwkJCSJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisJCQkiXHR0ZXN0X2ZzXG4iCisJCQkiXHRedGVzdF9mc1xuIikpOworCQlmcmVlKGJ1Zik7CisJCXJldHVybiAxOworCX0KKwlmcmVlKGJ1Zik7CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZpbGwgaW4gdGhlIGJsb2NrIGJpdG1hcCBibWFwIHdpdGggdGhlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUKKyAqIGJsb2NrcyB0byBiZSBtb3ZlZAorICovCitzdGF0aWMgaW50IGdldF9tb3ZlX2JpdG1hcHMoZXh0Ml9maWxzeXMgZnMsIGludCBuZXdfaW5vX2Jsa3NfcGVyX2dycCwKKwkJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXApCit7CisJZGdycF90IGk7CisJaW50IHJldHZhbDsKKwlleHQyX2JhZGJsb2Nrc19saXN0IGJiX2xpc3QgPSAwOworCWJsazY0X3QgaiwgbmVlZGVkX2Jsb2NrcyA9IDA7CisJYmxrNjRfdCBzdGFydF9ibGssIGVuZF9ibGs7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9iYl9pbm9kZShmcywgJmJiX2xpc3QpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlzdGFydF9ibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSArCisJCQkJCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCisJCWVuZF9ibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSArCisJCQkJCW5ld19pbm9fYmxrc19wZXJfZ3JwOworCisJCWZvciAoaiA9IHN0YXJ0X2JsazsgaiA8IGVuZF9ibGs7IGorKykgeworCQkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIoZnMtPmJsb2NrX21hcCwgaikpIHsKKwkJCQkvKgorCQkJCSAqIElGIHRoZSBibG9jayBpcyBhIGJhZCBibG9jayB3ZSBmYWlsCisJCQkJICovCisJCQkJaWYgKGV4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0KGJiX2xpc3QsIGopKSB7CisJCQkJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9mcmVlKGJiX2xpc3QpOworCQkJCQlyZXR1cm4gRU5PU1BDOworCQkJCX0KKworCQkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIoYm1hcCwgaik7CisJCQl9IGVsc2UgeworCQkJCS8qCisJCQkJICogV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGlzIGJsb2NrIGZvcgorCQkJCSAqIGlub2RlIHRhYmxlLiBTbyBtYXJrIHRoZW0gdXNlZC4KKwkJCQkgKi8KKwkJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIGopOworCQkJfQorCQl9CisJCW5lZWRlZF9ibG9ja3MgKz0gZW5kX2JsayAtIHN0YXJ0X2JsazsKKwl9CisKKwlleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZShiYl9saXN0KTsKKwlpZiAobmVlZGVkX2Jsb2NrcyA+IGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQlyZXR1cm4gRU5PU1BDOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXh0MmZzX2lzX21ldGFfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgYmxrKQoreworCWRncnBfdCBncm91cDsKKwlncm91cCA9IGV4dDJmc19ncm91cF9vZl9ibGsyKGZzLCBibGspOworCWlmIChleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgZ3JvdXApID09IGJsaykKKwkJcmV0dXJuIDE7CisJaWYgKGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBncm91cCkgPT0gYmxrKQorCQlyZXR1cm4gMTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBleHQyZnNfaXNfYmxvY2tfaW5fZ3JvdXAoZXh0Ml9maWxzeXMgZnMsIGRncnBfdCBncm91cCwgYmxrNjRfdCBibGspCit7CisJYmxrNjRfdCBzdGFydF9ibGssIGVuZF9ibGs7CisJc3RhcnRfYmxrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2sgKworCQkJRVhUMl9HUk9VUFNfVE9fQkxPQ0tTKGZzLT5zdXBlciwgZ3JvdXApOworCS8qCisJICogV2UgY2Fubm90IGdldCBuZXcgYmxvY2sgYmV5b25kIGVuZF9ibGsgZm9yIGZvciB0aGUgbGFzdCBibG9jayBncm91cAorCSAqIHNvIHdlIGNhbiBjaGVjayB3aXRoIEVYVDJfQkxPQ0tTX1BFUl9HUk9VUCBldmVuIGZvciBsYXN0IGJsb2NrIGdyb3VwCisJICovCisJZW5kX2JsayAgID0gc3RhcnRfYmxrICsgRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcik7CisJaWYgKGJsayA+PSBzdGFydF9ibGsgJiYgYmxrIDw9IGVuZF9ibGspCisJCXJldHVybiAxOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1vdmVfYmxvY2soZXh0Ml9maWxzeXMgZnMsIGV4dDJmc19ibG9ja19iaXRtYXAgYm1hcCkKK3sKKworCWNoYXIgKmJ1ZjsKKwlkZ3JwX3QgZ3JvdXAgPSAwOworCWVycmNvZGVfdCByZXR2YWw7CisJaW50IG1ldGFfZGF0YSA9IDA7CisJYmxrNjRfdCBibGssIG5ld19ibGssIGdvYWw7CisJc3RydWN0IGJsa19tb3ZlICpibXY7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplLCAmYnVmKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJZm9yIChuZXdfYmxrID0gYmxrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJICAgICBibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7IGJsaysrKSB7CisJCWlmICghZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihibWFwLCBibGspKQorCQkJY29udGludWU7CisKKwkJaWYgKGV4dDJmc19pc19tZXRhX2Jsb2NrKGZzLCBibGspKSB7CisJCQkvKgorCQkJICogSWYgdGhlIGJsb2NrIGlzIG1hcHBpbmcgYSBmcyBtZXRhIGRhdGEgYmxvY2sKKwkJCSAqIGxpa2UgZ3JvdXAgZGVzYy9ibG9jayBiaXRtYXAvaW5vZGUgYml0bWFwLiBXZQorCQkJICogc2hvdWxkIGZpbmQgYSBibG9jayBpbiB0aGUgc2FtZSBncm91cCBhbmQgZml4CisJCQkgKiB0aGUgcmVzcGVjdGl2ZSBmcyBtZXRhZGF0YSBwb2ludGVycy4gT3RoZXJ3aXNlCisJCQkgKiBmYWlsCisJCQkgKi8KKwkJCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIoZnMsIGJsayk7CisJCQlnb2FsID0gZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywgZ3JvdXApOworCQkJbWV0YV9kYXRhID0gMTsKKworCQl9IGVsc2UgeworCQkJZ29hbCA9IG5ld19ibGs7CisJCX0KKwkJcmV0dmFsID0gZXh0MmZzX25ld19ibG9jazIoZnMsIGdvYWwsIE5VTEwsICZuZXdfYmxrKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyX291dDsKKworCQkvKiBuZXcgZnMgbWV0YSBkYXRhIGJsb2NrIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBncm91cCAqLworCQlpZiAobWV0YV9kYXRhICYmICFleHQyZnNfaXNfYmxvY2tfaW5fZ3JvdXAoZnMsIGdyb3VwLCBuZXdfYmxrKSkgeworCQkJcmV0dmFsID0gRU5PU1BDOworCQkJZ290byBlcnJfb3V0OworCQl9CisKKwkJLyogTWFyayB0aGlzIGJsb2NrIGFzIGFsbG9jYXRlZCAqLworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIG5ld19ibGspOworCisJCS8qIEFkZCBpdCB0byBibG9jayBtb3ZlIGxpc3QgKi8KKwkJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBibGtfbW92ZSksICZibXYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJfb3V0OworCisJCWJtdi0+b2xkX2xvYyA9IGJsazsKKwkJYm12LT5uZXdfbG9jID0gbmV3X2JsazsKKworCQlsaXN0X2FkZCgmKGJtdi0+bGlzdCksICZibGtfbW92ZV9saXN0KTsKKworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCBibGssIDEsIGJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycl9vdXQ7CisKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sIG5ld19ibGssIDEsIGJ1Zik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycl9vdXQ7CisJfQorCitlcnJfb3V0OgorCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitzdGF0aWMgYmxrNjRfdCB0cmFuc2xhdGVfYmxvY2soYmxrNjRfdCBibGspCit7CisJc3RydWN0IGxpc3RfaGVhZCAqZW50cnk7CisJc3RydWN0IGJsa19tb3ZlICpibXY7CisKKwlsaXN0X2Zvcl9lYWNoKGVudHJ5LCAmYmxrX21vdmVfbGlzdCkgeworCQlibXYgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgYmxrX21vdmUsIGxpc3QpOworCQlpZiAoYm12LT5vbGRfbG9jID09IGJsaykKKwkJCXJldHVybiBibXYtPm5ld19sb2M7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19ibG9jayhleHQyX2ZpbHN5cyBmcyBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgYmxrNjRfdCAqYmxvY2tfbnIsCisJCQkgZTJfYmxrY250X3QgYmxvY2tjbnQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJIGJsazY0X3QgcmVmX2Jsb2NrIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSBpbnQgcmVmX29mZnNldCBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgdm9pZCAqcHJpdl9kYXRhKQoreworCWludCByZXQgPSAwOworCWJsazY0X3QgbmV3X2JsazsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJtYXAgPSAoZXh0MmZzX2Jsb2NrX2JpdG1hcCkgcHJpdl9kYXRhOworCisJaWYgKCFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJtYXAsICpibG9ja19ucikpCisJCXJldHVybiAwOworCW5ld19ibGsgPSB0cmFuc2xhdGVfYmxvY2soKmJsb2NrX25yKTsKKwlpZiAobmV3X2JsaykgeworCQkqYmxvY2tfbnIgPSBuZXdfYmxrOworCQkvKgorCQkgKiBUaGlzIHdpbGwgZm9yY2UgdGhlIGV4dDJmc193cml0ZV9pbm9kZSBpbiB0aGUgaXRlcmF0b3IKKwkJICovCisJCXJldCB8PSBCTE9DS19DSEFOR0VEOworCX0KKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgaW5vZGVfc2Nhbl9hbmRfZml4KGV4dDJfZmlsc3lzIGZzLCBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXApCit7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisJZXh0Ml9pbm9fdCBpbm87CisJYmxrNjRfdCBibGs7CisJY2hhciAqYmxvY2tfYnVmID0gMDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKwlleHQyX2lub2RlX3NjYW4Jc2NhbiA9IE5VTEw7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShmcy0+YmxvY2tzaXplICogMywgJmJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9vdXQ7CisKKwl3aGlsZSAoMSkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGUoc2NhbiwgJmlubywgJmlub2RlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyX291dDsKKworCQlpZiAoIWlubykKKwkJCWJyZWFrOworCisJCWlmIChpbm9kZS5pX2xpbmtzX2NvdW50ID09IDApCisJCQljb250aW51ZTsgLyogaW5vZGUgbm90IGluIHVzZSAqLworCisJCS8qIEZJWE1FISEKKwkJICogSWYgd2UgZW5kIHVwIG1vZGlmeWluZyB0aGUgam91cm5hbCBpbm9kZQorCQkgKiB0aGUgc2ItPnNfam5sX2Jsb2NrcyB3aWxsIGRpZmZlci4gQnV0IGEKKwkJICogc3Vic2VxdWVudCBlMmZzY2sgZml4ZXMgdGhhdC4KKwkJICogRG8gd2UgbmVlZCB0byBmaXggdGhpcyA/PworCQkgKi8KKworCQlpZiAoZXh0MmZzX2ZpbGVfYWNsX2Jsb2NrKGZzLCAmaW5vZGUpICYmCisJCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJtYXAsCisJCQkJCWV4dDJmc19maWxlX2FjbF9ibG9jayhmcywgJmlub2RlKSkpIHsKKwkJCWJsayA9IHRyYW5zbGF0ZV9ibG9jayhleHQyZnNfZmlsZV9hY2xfYmxvY2soZnMsCisJCQkJCQkJCSAgICAmaW5vZGUpKTsKKwkJCWlmICghYmxrKQorCQkJCWNvbnRpbnVlOworCisJCQlleHQyZnNfZmlsZV9hY2xfYmxvY2tfc2V0KGZzLCAmaW5vZGUsIGJsayk7CisKKwkJCS8qCisJCQkgKiBXcml0ZSB0aGUgaW5vZGUgdG8gZGlzayBzbyB0aGF0IGlub2RlIHRhYmxlCisJCQkgKiByZXNpemluZyBjYW4gd29yaworCQkJICovCisJCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIGlubywgJmlub2RlKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJfb3V0OworCQl9CisKKwkJaWYgKCFleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIoZnMsICZpbm9kZSkpCisJCQljb250aW51ZTsKKworCQlyZXR2YWwgPSBleHQyZnNfYmxvY2tfaXRlcmF0ZTMoZnMsIGlubywgMCwgYmxvY2tfYnVmLAorCQkJCQkgICAgICAgcHJvY2Vzc19ibG9jaywgYm1hcCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycl9vdXQ7CisKKwl9CisKK2Vycl9vdXQ6CisJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworCWV4dDJmc19jbG9zZV9pbm9kZV9zY2FuKHNjYW4pOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFdlIG5lZWQgdG8gc2NhbiBmb3IgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMgdGhhdCBtYXkgbmVlZCB0byBiZQorICogbW92ZWQuICBUaGlzIGNhbiB0YWtlIHBsYWNlIGlmIHRoZSBmaWxlc3lzdGVtIHdhcyBmb3JtYXR0ZWQgZm9yCisgKiBSQUlEIGFycmF5cyB1c2luZyB0aGUgbWtlMmZzJ3MgZXh0ZW5kZWQgb3B0aW9uICJzdHJpZGUiLgorICovCitzdGF0aWMgaW50IGdyb3VwX2Rlc2Nfc2Nhbl9hbmRfZml4KGV4dDJfZmlsc3lzIGZzLCBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXApCit7CisJZGdycF90IGk7CisJYmxrNjRfdCBibGssIG5ld19ibGs7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlibGsgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSk7CisJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJtYXAsIGJsaykpIHsKKwkJCW5ld19ibGsgPSB0cmFuc2xhdGVfYmxvY2soYmxrKTsKKwkJCWlmICghbmV3X2JsaykKKwkJCQljb250aW51ZTsKKwkJCWV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChmcywgaSwgbmV3X2Jsayk7CisJCX0KKworCQlibGsgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJtYXAsIGJsaykpIHsKKwkJCW5ld19ibGsgPSB0cmFuc2xhdGVfYmxvY2soYmxrKTsKKwkJCWlmICghbmV3X2JsaykKKwkJCQljb250aW51ZTsKKwkJCWV4dDJmc19pbm9kZV9iaXRtYXBfbG9jX3NldChmcywgaSwgbmV3X2Jsayk7CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZXhwYW5kX2lub2RlX3RhYmxlKGV4dDJfZmlsc3lzIGZzLCB1bnNpZ25lZCBsb25nIG5ld19pbm9fc2l6ZSkKK3sKKwlkZ3JwX3QgaTsKKwlibGs2NF90IGJsazsKKwllcnJjb2RlX3QgcmV0dmFsOworCWludCBuZXdfaW5vX2Jsa3NfcGVyX2dycDsKKwl1bnNpZ25lZCBpbnQgajsKKwljaGFyICpvbGRfaXRhYmxlID0gTlVMTCwgKm5ld19pdGFibGUgPSBOVUxMOworCWNoYXIgKnRtcF9vbGRfaXRhYmxlID0gTlVMTCwgKnRtcF9uZXdfaXRhYmxlID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIG9sZF9pbm9fc2l6ZTsKKwlpbnQgb2xkX2l0YWJsZV9zaXplLCBuZXdfaXRhYmxlX3NpemU7CisKKwlvbGRfaXRhYmxlX3NpemUgPSBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCAqIGZzLT5ibG9ja3NpemU7CisJb2xkX2lub19zaXplID0gRVhUMl9JTk9ERV9TSVpFKGZzLT5zdXBlcik7CisKKwluZXdfaW5vX2Jsa3NfcGVyX2dycCA9IGV4dDJmc19kaXZfY2VpbCgKKwkJCQkJRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcikgKgorCQkJCQluZXdfaW5vX3NpemUsCisJCQkJCWZzLT5ibG9ja3NpemUpOworCisJbmV3X2l0YWJsZV9zaXplID0gbmV3X2lub19ibGtzX3Blcl9ncnAgKiBmcy0+YmxvY2tzaXplOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0ob2xkX2l0YWJsZV9zaXplLCAmb2xkX2l0YWJsZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKG5ld19pdGFibGVfc2l6ZSwgJm5ld19pdGFibGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyX291dDsKKworCXRtcF9vbGRfaXRhYmxlID0gb2xkX2l0YWJsZTsKKwl0bXBfbmV3X2l0YWJsZSA9IG5ld19pdGFibGU7CisKKwlmb3IgKGkgPSAwOyBpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQlibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKTsKKwkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgYmxrLAorCQkJCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwLCBvbGRfaXRhYmxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyX291dDsKKworCQlmb3IgKGogPSAwOyBqIDwgRVhUMl9JTk9ERVNfUEVSX0dST1VQKGZzLT5zdXBlcik7IGorKykgeworCQkJbWVtY3B5KG5ld19pdGFibGUsIG9sZF9pdGFibGUsIG9sZF9pbm9fc2l6ZSk7CisKKwkJCW1lbXNldChuZXdfaXRhYmxlK29sZF9pbm9fc2l6ZSwgMCwKKwkJCQkJbmV3X2lub19zaXplIC0gb2xkX2lub19zaXplKTsKKworCQkJbmV3X2l0YWJsZSArPSBuZXdfaW5vX3NpemU7CisJCQlvbGRfaXRhYmxlICs9IG9sZF9pbm9fc2l6ZTsKKwkJfQorCisJCS8qIHJlc2V0IHRoZSBwb2ludGVyICovCisJCW9sZF9pdGFibGUgPSB0bXBfb2xkX2l0YWJsZTsKKwkJbmV3X2l0YWJsZSA9IHRtcF9uZXdfaXRhYmxlOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCBibGssCisJCQkJCW5ld19pbm9fYmxrc19wZXJfZ3JwLCBuZXdfaXRhYmxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyX291dDsKKwl9CisKKwkvKiBVcGRhdGUgdGhlIG1ldGEgZGF0YSAqLworCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwID0gbmV3X2lub19ibGtzX3Blcl9ncnA7CisJZXh0MmZzX2ZyZWVfaW5vZGVfY2FjaGUoZnMtPmljYWNoZSk7CisJZnMtPmljYWNoZSA9IDA7CisJZnMtPnN1cGVyLT5zX2lub2RlX3NpemUgPSBuZXdfaW5vX3NpemU7CisKK2Vycl9vdXQ6CisJaWYgKG9sZF9pdGFibGUpCisJCWV4dDJmc19mcmVlX21lbSgmb2xkX2l0YWJsZSk7CisKKwlpZiAobmV3X2l0YWJsZSkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZuZXdfaXRhYmxlKTsKKworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgZXh0MmZzX2NhbGN1bGF0ZV9zdW1tYXJ5X3N0YXRzKGV4dDJfZmlsc3lzIGZzKQoreworCWJsazY0X3QJCWJsazsKKwlleHQyX2lub190CWlubzsKKwl1bnNpZ25lZCBpbnQJZ3JvdXAgPSAwOworCXVuc2lnbmVkIGludAljb3VudCA9IDA7CisJaW50CQl0b3RhbF9mcmVlID0gMDsKKwlpbnQJCWdyb3VwX2ZyZWUgPSAwOworCisJLyoKKwkgKiBGaXJzdCBjYWxjdWxhdGUgdGhlIGJsb2NrIHN0YXRpc3RpY3MKKwkgKi8KKwlmb3IgKGJsayA9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworCSAgICAgYmxrIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOyBibGsrKykgeworCQlpZiAoIWV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBibGspKSB7CisJCQlncm91cF9mcmVlKys7CisJCQl0b3RhbF9mcmVlKys7CisJCX0KKwkJY291bnQrKzsKKwkJaWYgKChjb3VudCA9PSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cCkgfHwKKwkJICAgIChibGsgPT0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpLTEpKSB7CisJCQlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBncm91cCsrLAorCQkJCQkJCWdyb3VwX2ZyZWUpOworCQkJY291bnQgPSAwOworCQkJZ3JvdXBfZnJlZSA9IDA7CisJCX0KKwl9CisJdG90YWxfZnJlZSA9IEVYVDJGU19DMkIoZnMsIHRvdGFsX2ZyZWUpOworCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMtPnN1cGVyLCB0b3RhbF9mcmVlKTsKKworCS8qCisJICogTmV4dCwgY2FsY3VsYXRlIHRoZSBpbm9kZSBzdGF0aXN0aWNzCisJICovCisJZ3JvdXBfZnJlZSA9IDA7CisJdG90YWxfZnJlZSA9IDA7CisJY291bnQgPSAwOworCWdyb3VwID0gMDsKKworCS8qIFByb3RlY3QgbG9vcCBmcm9tIHdyYXAtYXJvdW5kIGlmIHNfaW5vZGVzX2NvdW50IG1heGVkICovCisJZm9yIChpbm8gPSAxOyBpbm8gPD0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCAmJiBpbm8gPiAwOyBpbm8rKykgeworCQlpZiAoIWV4dDJmc19mYXN0X3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpbm8pKSB7CisJCQlncm91cF9mcmVlKys7CisJCQl0b3RhbF9mcmVlKys7CisJCX0KKwkJY291bnQrKzsKKwkJaWYgKChjb3VudCA9PSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCkgfHwKKwkJICAgIChpbm8gPT0gZnMtPnN1cGVyLT5zX2lub2Rlc19jb3VudCkpIHsKKwkJCWV4dDJmc19iZ19mcmVlX2lub2Rlc19jb3VudF9zZXQoZnMsIGdyb3VwKyssCisJCQkJCQkJZ3JvdXBfZnJlZSk7CisJCQljb3VudCA9IDA7CisJCQlncm91cF9mcmVlID0gMDsKKwkJfQorCX0KKwlmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQgPSB0b3RhbF9mcmVlOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlyZXR1cm4gMDsKK30KKworI2RlZmluZSBsaXN0X2Zvcl9lYWNoX3NhZmUocG9zLCBwbmV4dCwgaGVhZCkgXAorCWZvciAocG9zID0gKGhlYWQpLT5uZXh0LCBwbmV4dCA9IHBvcy0+bmV4dDsgcG9zICE9IChoZWFkKTsgXAorCSAgICAgcG9zID0gcG5leHQsIHBuZXh0ID0gcG9zLT5uZXh0KQorCitzdGF0aWMgdm9pZCBmcmVlX2Jsa19tb3ZlX2xpc3Qodm9pZCkKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkICplbnRyeSwgKnRtcDsKKwlzdHJ1Y3QgYmxrX21vdmUgKmJtdjsKKworCWxpc3RfZm9yX2VhY2hfc2FmZShlbnRyeSwgdG1wLCAmYmxrX21vdmVfbGlzdCkgeworCQlibXYgPSBsaXN0X2VudHJ5KGVudHJ5LCBzdHJ1Y3QgYmxrX21vdmUsIGxpc3QpOworCQlsaXN0X2RlbChlbnRyeSk7CisJCWV4dDJmc19mcmVlX21lbSgmYm12KTsKKwl9CisJcmV0dXJuOworfQorCitzdGF0aWMgaW50IHJlc2l6ZV9pbm9kZShleHQyX2ZpbHN5cyBmcywgdW5zaWduZWQgbG9uZyBuZXdfc2l6ZSkKK3sKKwllcnJjb2RlX3QgcmV0dmFsOworCWludCBuZXdfaW5vX2Jsa3NfcGVyX2dycDsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJtYXA7CisKKwlyZXR2YWwgPSBleHQyZnNfcmVhZF9pbm9kZV9iaXRtYXAoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJZnB1dHMoXygiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iKSwgc3RkZXJyKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmxvY2tfYml0bWFwKGZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWZwdXRzKF8oIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIiksIHN0ZGVycik7CisJCXJldHVybiByZXR2YWw7CisJfQorCUlOSVRfTElTVF9IRUFEKCZibGtfbW92ZV9saXN0KTsKKworCisJbmV3X2lub19ibGtzX3Blcl9ncnAgPSBleHQyZnNfZGl2X2NlaWwoCisJCQkJCUVYVDJfSU5PREVTX1BFUl9HUk9VUChmcy0+c3VwZXIpKgorCQkJCQluZXdfc2l6ZSwKKwkJCQkJZnMtPmJsb2Nrc2l6ZSk7CisKKwkvKiBXZSBtYXkgY2hhbmdlIHRoZSBmaWxlIHN5c3RlbS4KKwkgKiBNYXJrIHRoZSBmaWxlIHN5c3RlbSBhcyBpbnZhbGlkIHNvIHRoYXQKKwkgKiB0aGUgdXNlciBpcyBwcm9tcHRlZCB0byBydW4gZnNjay4KKwkgKi8KKwlmcy0+c3VwZXItPnNfc3RhdGUgJj0gfkVYVDJfVkFMSURfRlM7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCBfKCJibG9ja3MgdG8gYmUgbW92ZWQiKSwKKwkJCQkJCSZibWFwKTsKKwlpZiAocmV0dmFsKSB7CisJCWZwdXRzKF8oIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiAiCisJCQkJImluY3JlYXNpbmcgaW5vZGUgc2l6ZVxuIiksIHN0ZGVycik7CisJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGdldF9tb3ZlX2JpdG1hcHMoZnMsIG5ld19pbm9fYmxrc19wZXJfZ3JwLCBibWFwKTsKKwlpZiAocmV0dmFsKSB7CisJCWZwdXRzKF8oIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIpLCBzdGRlcnIpOworCQlnb3RvIGVycl9vdXQ7CisJfQorCXJldHZhbCA9IG1vdmVfYmxvY2soZnMsIGJtYXApOworCWlmIChyZXR2YWwpIHsKKwkJZnB1dHMoXygiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIiksCisJCSAgICAgIHN0ZGVycik7CisJCWdvdG8gZXJyX291dDsKKwl9CisJcmV0dmFsID0gaW5vZGVfc2Nhbl9hbmRfZml4KGZzLCBibWFwKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9vdXRfdW5kbzsKKworCXJldHZhbCA9IGdyb3VwX2Rlc2Nfc2Nhbl9hbmRfZml4KGZzLCBibWFwKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycl9vdXRfdW5kbzsKKworCXJldHZhbCA9IGV4cGFuZF9pbm9kZV90YWJsZShmcywgbmV3X3NpemUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyX291dF91bmRvOworCisJZXh0MmZzX2NhbGN1bGF0ZV9zdW1tYXJ5X3N0YXRzKGZzKTsKKworCWZzLT5zdXBlci0+c19zdGF0ZSB8PSBFWFQyX1ZBTElEX0ZTOworCS8qIG1hcmsgc3VwZXIgYmxvY2sgYW5kIGJsb2NrIGJpdG1hcCBhcyBkaXJ0eSAqLworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlleHQyZnNfbWFya19iYl9kaXJ0eShmcyk7CisKK2Vycl9vdXQ6CisJZnJlZV9ibGtfbW92ZV9saXN0KCk7CisJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKGJtYXApOworCisJcmV0dXJuIHJldHZhbDsKKworZXJyX291dF91bmRvOgorCWZyZWVfYmxrX21vdmVfbGlzdCgpOworCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChibWFwKTsKKwlmcHV0cyhfKCJFcnJvciBpbiByZXNpemluZyB0aGUgaW5vZGUgc2l6ZS5cbiIKKwkJCSJSdW4gZTJ1bmRvIHRvIHVuZG8gdGhlICIKKwkJCSJmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIpLCBzdGRlcnIpOworCisJcmV0dXJuIHJldHZhbDsKK30KKworc3RhdGljIGludCB0dW5lMmZzX3NldHVwX3RkYihjb25zdCBjaGFyICpuYW1lLCBpb19tYW5hZ2VyICppb19wdHIpCit7CisJZXJyY29kZV90IHJldHZhbCA9IDA7CisJY29uc3QgY2hhciAqdGRiX2RpcjsKKwljaGFyICp0ZGJfZmlsZSA9IE5VTEw7CisJY2hhciAqZGV2X25hbWUsICp0bXBfbmFtZTsKKworCS8qIChyZSlvcGVuIGEgc3BlY2lmaWMgdW5kbyBmaWxlICovCisJaWYgKHVuZG9fZmlsZSAmJiB1bmRvX2ZpbGVbMF0gIT0gMCkgeworCQlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXIoKmlvX3B0cik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJKmlvX3B0ciA9IHVuZG9faW9fbWFuYWdlcjsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUodW5kb19maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyOworCQlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJCSAidXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisJCQkgIiAgICBlMnVuZG8gJXMgJXNcblxuIiksCisJCQkgdW5kb19maWxlLCBuYW1lKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwkvKgorCSAqIENvbmZpZ3VyYXRpb24gdmlhIGEgY29uZiBmaWxlIHdvdWxkIGJlCisJICogbmljZQorCSAqLworCXRkYl9kaXIgPSBnZXRlbnYoIkUyRlNQUk9HU19VTkRPX0RJUiIpOworCWlmICghdGRiX2RpcikKKwkJdGRiX2RpciA9ICIvdmFyL2xpYi9lMmZzcHJvZ3MiOworCisJaWYgKCFzdHJjbXAodGRiX2RpciwgIm5vbmUiKSB8fCAodGRiX2RpclswXSA9PSAwKSB8fAorCSAgICBhY2Nlc3ModGRiX2RpciwgV19PSykpCisJCXJldHVybiAwOworCisJdG1wX25hbWUgPSBzdHJkdXAobmFtZSk7CisJaWYgKCF0bXBfbmFtZSkKKwkJZ290byBlcnJvdXQ7CisJZGV2X25hbWUgPSBiYXNlbmFtZSh0bXBfbmFtZSk7CisJdGRiX2ZpbGUgPSBtYWxsb2Moc3RybGVuKHRkYl9kaXIpICsgOSArIHN0cmxlbihkZXZfbmFtZSkgKyA3ICsgMSk7CisJaWYgKCF0ZGJfZmlsZSkgeworCQlmcmVlKHRtcF9uYW1lKTsKKwkJZ290byBlcnJvdXQ7CisJfQorCXNwcmludGYodGRiX2ZpbGUsICIlcy90dW5lMmZzLSVzLmUydW5kbyIsIHRkYl9kaXIsIGRldl9uYW1lKTsKKwlmcmVlKHRtcF9uYW1lKTsKKworCWlmICgodW5saW5rKHRkYl9maWxlKSA8IDApICYmIChlcnJubyAhPSBFTk9FTlQpKSB7CisJCXJldHZhbCA9IGVycm5vOworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIpLCB0ZGJfZmlsZSk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2tpbmdfbWFuYWdlcigqaW9fcHRyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwkqaW9fcHRyID0gdW5kb19pb19tYW5hZ2VyOworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKHRkYl9maWxlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJICJ1c2luZyB0aGUgY29tbWFuZDpcbiIKKwkJICIgICAgZTJ1bmRvICVzICVzXG5cbiIpLAorCQkgdGRiX2ZpbGUsIG5hbWUpOworCisJZnJlZSh0ZGJfZmlsZSk7CisJcmV0dXJuIDA7CitlcnJvdXQ6CisJZnJlZSh0ZGJfZmlsZSk7CitlcnI6CisJY29tX2VycigidHVuZTJmcyIsIHJldHZhbCwgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIpOworCXJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBpbnQKK2ZzX3VwZGF0ZV9qb3VybmFsX3VzZXIoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2sgKnNiLCBfX3U4IG9sZF91dWlkW1VVSURfU0laRV0pCit7CisJaW50IHJldHZhbCwgbnJfdXNlcnMsIHN0YXJ0OworCWpvdXJuYWxfc3VwZXJibG9ja190ICpqc2I7CisJZXh0Ml9maWxzeXMgamZzOworCV9fdTggKmpfdXVpZDsKKwljaGFyICpqb3VybmFsX3BhdGg7CisJY2hhciB1dWlkW1VVSURfU1RSX1NJWkVdOworCWNoYXIgYnVmW1NVUEVSQkxPQ0tfU0laRV0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQoOCkpKTsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoc2IpIHx8IHV1aWRfaXNfbnVsbChzYi0+c19qb3VybmFsX3V1aWQpKQorCQlyZXR1cm4gMDsKKworCXV1aWRfdW5wYXJzZShzYi0+c19qb3VybmFsX3V1aWQsIHV1aWQpOworCWpvdXJuYWxfcGF0aCA9IGJsa2lkX2dldF9kZXZuYW1lKE5VTEwsICJVVUlEIiwgdXVpZCk7CisJaWYgKCFqb3VybmFsX3BhdGgpCisJCXJldHVybiAwOworCisJcmV0dmFsID0gZXh0MmZzX29wZW4yKGpvdXJuYWxfcGF0aCwgaW9fb3B0aW9ucywKKwkJCSAgICAgIEVYVDJfRkxBR19KT1VSTkFMX0RFVl9PSyB8IEVYVDJfRkxBR19SVywKKwkJCSAgICAgIDAsIDAsIHVuaXhfaW9fbWFuYWdlciwgJmpmcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwKKwkJCWpvdXJuYWxfcGF0aCk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dmFsID0gZ2V0X2pvdXJuYWxfc2IoamZzLCBidWYpOworCWlmIChyZXR2YWwgIT0gMCkgeworCQlpZiAocmV0dmFsID09IEVYVDJfRVRfVU5TVVBQX0ZFQVRVUkUpCisJCQlmcHJpbnRmKHN0ZGVyciwgXygiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iKSwKKwkJCQlqb3VybmFsX3BhdGgpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCWpzYiA9IChqb3VybmFsX3N1cGVyYmxvY2tfdCAqKSBidWY7CisJLyogRmluZCB0aGUgZmlsZXN5c3RlbSBVVUlEICovCisJbnJfdXNlcnMgPSBudG9obChqc2ItPnNfbnJfdXNlcnMpOworCisJal91dWlkID0gam91cm5hbF91c2VyKG9sZF91dWlkLCBqc2ItPnNfdXNlcnMsIG5yX3VzZXJzKTsKKwlpZiAoal91dWlkID09IE5VTEwpIHsKKwkJZnB1dHMoXygiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIiksCisJCSAgICAgIHN0ZGVycik7CisJCXJldHVybiBFWFQyX0VUX0xPQURfRVhUX0pPVVJOQUw7CisJfQorCisJbWVtY3B5KGpfdXVpZCwgc2ItPnNfdXVpZCwgVVVJRF9TSVpFKTsKKworCXN0YXJ0ID0gZXh0MmZzX2pvdXJuYWxfc2Jfc3RhcnQoamZzLT5ibG9ja3NpemUpOworCS8qIFdyaXRlIGJhY2sgdGhlIGpvdXJuYWwgc3VwZXJibG9jayAqLworCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoamZzLT5pbywgc3RhcnQsIC1TVVBFUkJMT0NLX1NJWkUsIGJ1Zik7CisJaWYgKHJldHZhbCAhPSAwKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsCisJCQkid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2suIik7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJZXh0MmZzX2Nsb3NlKGpmcyk7CisKKwlyZXR1cm4gMDsKK30KKworI2lmbmRlZiBCVUlMRF9BU19MSUIKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyNlbHNlCitpbnQgdHVuZTJmc19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyNlbmRpZiAgLyogQlVJTERfQVNfTElCICovCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlleHQyX2ZpbHN5cyBmczsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2I7CisJaW9fbWFuYWdlciBpb19wdHIsIGlvX3B0cl9vcmlnID0gTlVMTDsKKwlpbnQgcmMgPSAwOworCWNoYXIgZGVmYXVsdF91bmRvX2ZpbGVbMV0gPSB7IDAgfTsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKwlpZiAoYXJnYyAmJiAqYXJndikKKwkJcHJvZ3JhbV9uYW1lID0gKmFyZ3Y7CisJYWRkX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKworI2lmZGVmIENPTkZJR19CVUlMRF9GSU5ERlMKKwlpZiAoc3RyY21wKGdldF9wcm9nbmFtZShhcmd2WzBdKSwgImZpbmRmcyIpID09IDApCisJCWRvX2ZpbmRmcyhhcmdjLCBhcmd2KTsKKyNlbmRpZgorCWlmIChzdHJjbXAoZ2V0X3Byb2duYW1lKGFyZ3ZbMF0pLCAiZTJsYWJlbCIpID09IDApCisJCXBhcnNlX2UybGFiZWxfb3B0aW9ucyhhcmdjLCBhcmd2KTsKKwllbHNlCisJCXBhcnNlX3R1bmUyZnNfb3B0aW9ucyhhcmdjLCBhcmd2KTsKKworI2lmZGVmIENPTkZJR19URVNUSU9fREVCVUcKKwlpZiAoZ2V0ZW52KCJURVNUX0lPX0ZMQUdTIikgfHwgZ2V0ZW52KCJURVNUX0lPX0RFQlVHIikpIHsKKwkJaW9fcHRyID0gdGVzdF9pb19tYW5hZ2VyOworCQl0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwl9IGVsc2UKKyNlbmRpZgorCQlpb19wdHIgPSB1bml4X2lvX21hbmFnZXI7CisKK3JldHJ5X29wZW46CisJaWYgKChvcGVuX2ZsYWcgJiBFWFQyX0ZMQUdfUlcpID09IDAgfHwgZl9mbGFnKQorCQlvcGVuX2ZsYWcgfD0gRVhUMl9GTEFHX1NLSVBfTU1QOworCisJb3Blbl9mbGFnIHw9IEVYVDJfRkxBR182NEJJVFMgfCBFWFQyX0ZMQUdfSk9VUk5BTF9ERVZfT0s7CisKKwkvKiBrZWVwIHRoZSBmaWxlc3lzdGVtIHN0cnVjdCBhcm91bmQgdG8gZHVtcCBNTVAgZGF0YSAqLworCW9wZW5fZmxhZyB8PSBFWFQyX0ZMQUdfTk9GUkVFX09OX0VSUk9SOworCisJcmV0dmFsID0gZXh0MmZzX29wZW4yKGRldmljZV9uYW1lLCBpb19vcHRpb25zLCBvcGVuX2ZsYWcsCisJCQkgICAgICAwLCAwLCBpb19wdHIsICZmcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiKSwKKwkJCWRldmljZV9uYW1lKTsKKwkJaWYgKHJldHZhbCA9PSBFWFQyX0VUX01NUF9GU0NLX09OIHx8CisJCSAgICByZXR2YWwgPT0gRVhUMl9FVF9NTVBfVU5LTk9XTl9TRVEpCisJCQlkdW1wX21tcF9tc2coZnMtPm1tcF9idWYsCisJCQkJICAgICBfKCJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gIgorCQkJCSAgICAgICAiaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorCQkJCSAgICAgICAiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIikpOworCQllbHNlIGlmIChyZXR2YWwgPT0gRVhUMl9FVF9NTVBfRkFJTEVEKQorCQkJZHVtcF9tbXBfbXNnKGZzLT5tbXBfYnVmLCBOVUxMKTsKKwkJZWxzZSBpZiAocmV0dmFsID09IEVYVDJfRVRfTU1QX01BR0lDX0lOVkFMSUQpCisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQlfKCJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5ICIKKwkJCQkgICJydW5uaW5nOlxuJ2UyZnNjayAtZiAlcydcbiIpLCBkZXZpY2VfbmFtZSk7CisJCWVsc2UgaWYgKHJldHZhbCA9PSBFWFQyX0VUX0JBRF9NQUdJQykKKwkJCWNoZWNrX3BsYXVzaWJpbGl0eShkZXZpY2VfbmFtZSwgQ0hFQ0tfRlNfRVhJU1QsIE5VTEwpOworCQllbHNlIGlmIChyZXR2YWwgIT0gRVhUMl9FVF9NTVBfRkFJTEVEKQorCQkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQkgICAgIF8oIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIikpOworCisJCWV4dDJmc19mcmVlKGZzKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX2Rldihmcy0+c3VwZXIpKSB7CisJCWZwcmludGYoc3RkZXJyLCAiJXMiLCBfKCJDYW5ub3QgbW9kaWZ5IGEgam91cm5hbCBkZXZpY2UuXG4iKSk7CisJCWV4dDJmc19mcmVlKGZzKTsKKwkJZXhpdCgxKTsKKwl9CisJZnMtPmRlZmF1bHRfYml0bWFwX3R5cGUgPSBFWFQyRlNfQk1BUDY0X1JCVFJFRTsKKworCWlmIChJX2ZsYWcpIHsKKwkJLyoKKwkJICogQ2hlY2sgdGhlIGlub2RlIHNpemUgaXMgcmlnaHQgc28gd2UgY2FuIGlzc3VlIGFuCisJCSAqIGVycm9yIG1lc3NhZ2UgYW5kIGJhaWwgYmVmb3JlIHNldHRpbmcgdXAgdGhlIHRkYgorCQkgKiBmaWxlLgorCQkgKi8KKwkJaWYgKG5ld19pbm9kZV9zaXplID09IEVYVDJfSU5PREVfU0laRShmcy0+c3VwZXIpKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIpLAorCQkJCW5ld19pbm9kZV9zaXplKTsKKwkJCXJjID0gMTsKKwkJCWdvdG8gY2xvc2VmczsKKwkJfQorCQlpZiAobmV3X2lub2RlX3NpemUgPCBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKSkgeworCQkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQkJXygiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIikpOworCQkJcmMgPSAxOworCQkJZ290byBjbG9zZWZzOworCQl9CisJCWlmIChuZXdfaW5vZGVfc2l6ZSA+IGZzLT5ibG9ja3NpemUpIHsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iKSwKKwkJCQluZXdfaW5vZGVfc2l6ZSwgZnMtPmJsb2Nrc2l6ZSk7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJY2hlY2tfZnNja19uZWVkZWQoZnMsCisJCQlfKCJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIikpOworCQkvKgorCQkgKiBJZiBpbm9kZSByZXNpemUgaXMgcmVxdWVzdGVkIHVzZSB0aGUKKwkJICogVW5kbyBJL08gbWFuYWdlcgorCQkgKi8KKwkJdW5kb19maWxlID0gZGVmYXVsdF91bmRvX2ZpbGU7CisJfQorCisJLyogU2V0IHVwIGFuIHVuZG8gZmlsZSAqLworCWlmICh1bmRvX2ZpbGUgJiYgaW9fcHRyX29yaWcgPT0gTlVMTCkgeworCQlpb19wdHJfb3JpZyA9IGlvX3B0cjsKKwkJcmV0dmFsID0gdHVuZTJmc19zZXR1cF90ZGIoZGV2aWNlX25hbWUsICZpb19wdHIpOworCQlpZiAocmV0dmFsKSB7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJaWYgKGlvX3B0ciAhPSBpb19wdHJfb3JpZykgeworCQkJZXh0MmZzX2Nsb3NlX2ZyZWUoJmZzKTsKKwkJCWdvdG8gcmV0cnlfb3BlbjsKKwkJfQorCX0KKworCXNiID0gZnMtPnN1cGVyOworCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCisJaWYgKHByaW50X2xhYmVsKSB7CisJCS8qIEZvciBlMmxhYmVsIGVtdWxhdGlvbiAqLworCQlwcmludGYoIiUuKnNcbiIsIChpbnQpIHNpemVvZihzYi0+c192b2x1bWVfbmFtZSksCisJCSAgICAgICBzYi0+c192b2x1bWVfbmFtZSk7CisJCXJlbW92ZV9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisJCWdvdG8gY2xvc2VmczsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfY2hlY2tfaWZfbW91bnRlZChkZXZpY2VfbmFtZSwgJm1vdW50X2ZsYWdzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoImV4dDJmc19jaGVja19pZl9tb3VudCIsIHJldHZhbCwKKwkJCV8oIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iKSwKKwkJCWRldmljZV9uYW1lKTsKKwkJcmMgPSAxOworCQlnb3RvIGNsb3NlZnM7CisJfQorCS8qIE5vcm1hbGx5IHdlIG9ubHkgbmVlZCB0byB3cml0ZSBvdXQgdGhlIHN1cGVyYmxvY2sgKi8KKwlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX1NVUEVSX09OTFk7CisKKwlpZiAoY19mbGFnKSB7CisJCXNiLT5zX21heF9tbnRfY291bnQgPSBtYXhfbW91bnRfY291bnQ7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJcHJpbnRmKF8oIlNldHRpbmcgbWF4aW1hbCBtb3VudCBjb3VudCB0byAlZFxuIiksCisJCSAgICAgICBtYXhfbW91bnRfY291bnQpOworCX0KKwlpZiAoQ19mbGFnKSB7CisJCXNiLT5zX21udF9jb3VudCA9IG1vdW50X2NvdW50OworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIpLCBtb3VudF9jb3VudCk7CisJfQorCWlmIChlX2ZsYWcpIHsKKwkJc2ItPnNfZXJyb3JzID0gZXJyb3JzOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iKSwgZXJyb3JzKTsKKwl9CisJaWYgKGdfZmxhZykgeworCQlzYi0+c19kZWZfcmVzZ2lkID0gcmVzZ2lkOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iKSwgcmVzZ2lkKTsKKwl9CisJaWYgKGlfZmxhZykgeworCQlpZiAoKHVuc2lnbmVkIGxvbmcgbG9uZylpbnRlcnZhbCA+PSAoMVVMTCA8PCAzMikpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiKSwKKwkJCQlpbnRlcnZhbCk7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJc2ItPnNfY2hlY2tpbnRlcnZhbCA9IGludGVydmFsOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iKSwKKwkJICAgICAgIGludGVydmFsKTsKKwl9CisJaWYgKG1fZmxhZykgeworCQlleHQyZnNfcl9ibG9ja3NfY291bnRfc2V0KHNiLCByZXNlcnZlZF9yYXRpbyAqCisJCQkJCSAgZXh0MmZzX2Jsb2Nrc19jb3VudChzYikgLyAxMDAuMCk7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJcHJpbnRmIChfKCJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIiksCisJCQlyZXNlcnZlZF9yYXRpbywgZXh0MmZzX3JfYmxvY2tzX2NvdW50KHNiKSk7CisJfQorCWlmIChyX2ZsYWcpIHsKKwkJaWYgKHJlc2VydmVkX2Jsb2NrcyA+IGV4dDJmc19ibG9ja3NfY291bnQoc2IpLzIpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIpLAorCQkJCXJlc2VydmVkX2Jsb2Nrcyk7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChzYiwgcmVzZXJ2ZWRfYmxvY2tzKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQlwcmludGYoXygiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIiksCisJCSAgICAgICByZXNlcnZlZF9ibG9ja3MpOworCX0KKwlpZiAoc19mbGFnID09IDEpIHsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIoc2IpKSB7CisJCQlmcHV0cyhfKCJcblRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSAiCisJCQkJInN1cGVyYmxvY2tzLlxuIiksIHN0ZGVycik7CisJCX0gZWxzZSBpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoc2IpKSB7CisJCQlmcHV0cyhfKCJcblNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90ICIKKwkJCQkic3VwcG9ydGVkXG5mb3IgZmlsZXN5c3RlbXMgd2l0aCAiCisJCQkJInRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIpLAorCQkJCXN0ZGVycik7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0gZWxzZSB7CisJCQlleHQyZnNfc2V0X2ZlYXR1cmVfc3BhcnNlX3N1cGVyKHNiKTsKKwkJCXNiLT5zX3N0YXRlICY9IH5FWFQyX1ZBTElEX0ZTOworCQkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQkJcHJpbnRmKF8oIlxuU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIpLAorCQkJICAgICAgIF8ocGxlYXNlX2ZzY2spKTsKKwkJfQorCX0KKwlpZiAoc19mbGFnID09IDApIHsKKwkJZnB1dHMoXygiXG5DbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIiksCisJCSAgICAgIHN0ZGVycik7CisJCXJjID0gMTsKKwkJZ290byBjbG9zZWZzOworCX0KKwlpZiAoVF9mbGFnKSB7CisJCXNiLT5zX2xhc3RjaGVjayA9IGxhc3RfY2hlY2tfdGltZTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQlwcmludGYoXygiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iKSwKKwkJICAgICAgIGN0aW1lKCZsYXN0X2NoZWNrX3RpbWUpKTsKKwl9CisJaWYgKHVfZmxhZykgeworCQlzYi0+c19kZWZfcmVzdWlkID0gcmVzdWlkOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iKSwgcmVzdWlkKTsKKwl9CisJaWYgKExfZmxhZykgeworCQlpZiAoc3RybGVuKG5ld19sYWJlbCkgPiBzaXplb2Yoc2ItPnNfdm9sdW1lX25hbWUpKQorCQkJZnB1dHMoXygiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iKSwKKwkJCSAgICAgIHN0ZGVycik7CisJCW1lbXNldChzYi0+c192b2x1bWVfbmFtZSwgMCwgc2l6ZW9mKHNiLT5zX3ZvbHVtZV9uYW1lKSk7CisJCXN0cm5jcHkoc2ItPnNfdm9sdW1lX25hbWUsIG5ld19sYWJlbCwKKwkJCXNpemVvZihzYi0+c192b2x1bWVfbmFtZSkpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJfQorCWlmIChNX2ZsYWcpIHsKKwkJbWVtc2V0KHNiLT5zX2xhc3RfbW91bnRlZCwgMCwgc2l6ZW9mKHNiLT5zX2xhc3RfbW91bnRlZCkpOworCQlzdHJuY3B5KHNiLT5zX2xhc3RfbW91bnRlZCwgbmV3X2xhc3RfbW91bnRlZCwKKwkJCXNpemVvZihzYi0+c19sYXN0X21vdW50ZWQpKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0KKwlpZiAobW50b3B0c19jbWQpIHsKKwkJcmMgPSB1cGRhdGVfbW50b3B0cyhmcywgbW50b3B0c19jbWQpOworCQlpZiAocmMpCisJCQlnb3RvIGNsb3NlZnM7CisJfQorCWlmIChmZWF0dXJlc19jbWQpIHsKKwkJcmMgPSB1cGRhdGVfZmVhdHVyZV9zZXQoZnMsIGZlYXR1cmVzX2NtZCk7CisJCWlmIChyYykKKwkJCWdvdG8gY2xvc2VmczsKKwl9CisJaWYgKGV4dGVuZGVkX2NtZCkgeworCQlyYyA9IHBhcnNlX2V4dGVuZGVkX29wdHMoZnMsIGV4dGVuZGVkX2NtZCk7CisJCWlmIChyYykKKwkJCWdvdG8gY2xvc2VmczsKKwkJaWYgKGNsZWFyX21tcCAmJiAhZl9mbGFnKSB7CisJCQlmcHV0cyhfKCJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuICIKKwkJCQkiSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIpLAorCQkJICAgICAgc3RkZXJyKTsKKwkJCWdvdG8gY2xvc2VmczsKKwkJfQorCX0KKwlpZiAoY2xlYXJfbW1wKSB7CisJCXJjID0gZXh0MmZzX21tcF9jbGVhcihmcyk7CisJCWdvdG8gY2xvc2VmczsKKwl9CisJaWYgKGpvdXJuYWxfc2l6ZSB8fCBqb3VybmFsX2RldmljZSkgeworCQlyYyA9IGFkZF9qb3VybmFsKGZzKTsKKwkJaWYgKHJjKQorCQkJZ290byBjbG9zZWZzOworCX0KKworCWlmIChRX2ZsYWcpIHsKKwkJaWYgKG1vdW50X2ZsYWdzICYgRVhUMl9NRl9NT1VOVEVEKSB7CisJCQlmcHV0cyhfKCJUaGUgcXVvdGEgZmVhdHVyZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gIgorCQkJCSJ0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iKSwgc3RkZXJyKTsKKwkJCXJjID0gMTsKKwkJCWdvdG8gY2xvc2VmczsKKwkJfQorCQloYW5kbGVfcXVvdGFfb3B0aW9ucyhmcyk7CisJfQorCisJaWYgKFVfZmxhZykgeworCQlpbnQgc2V0X2NzdW0gPSAwOworCQlkZ3JwX3QgaTsKKwkJY2hhciBidWZbU1VQRVJCTE9DS19TSVpFXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCg4KSkpOworCQlfX3U4IG9sZF91dWlkW1VVSURfU0laRV07CisKKwkJaWYgKGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKSkgeworCQkJLyoKKwkJCSAqIENoYW5naW5nIHRoZSBVVUlEIG9uIGEgbWV0YWRhdGFfY3N1bSBGUyByZXF1aXJlcworCQkJICogcmV3cml0aW5nIGFsbCBtZXRhZGF0YSwgd2hpY2ggY2FuIHJhY2Ugd2l0aCBhCisJCQkgKiBtb3VudGVkIGZzLiAgRG9uJ3QgYWxsb3cgdGhhdCB1bmxlc3Mgd2UncmUgc2F2aW5nCisJCQkgKiB0aGUgY2hlY2tzdW0gc2VlZC4KKwkJCSAqLworCQkJaWYgKChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgJiYKKwkJCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2NzdW1fc2VlZChmcy0+c3VwZXIpICYmCisJCQkgICAgZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oZnMtPnN1cGVyKSkgeworCQkJCWZwdXRzKF8oIlRoZSBVVUlEIG1heSBvbmx5IGJlICIKKwkJCQkJImNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyAiCisJCQkJCSJ1bm1vdW50ZWQuXG4iKSwgc3RkZXJyKTsKKwkJCQlmcHV0cyhfKCJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuICIKKwkJCQkJInY0LjQsIHJ1biAndHVuZTJmcyAtTyAiCisJCQkJCSJtZXRhZGF0YV9jc3VtX3NlZWQnIGFuZCByZS1ydW4gdGhpcyAiCisJCQkJCSJjb21tYW5kLlxuIiksIHN0ZGVycik7CisJCQkJdHJ5X2NvbmZpcm1fY3N1bV9zZWVkX3N1cHBvcnQoKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfY3N1bV9zZWVkKGZzLT5zdXBlcikpCisJCQkJY2hlY2tfZnNja19uZWVkZWQoZnMsCisJCQkJCV8oIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkICIKKwkJCQkJICAiZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iKSk7CisKKwkJCS8qCisJCQkgKiBEZXRlcm1pbmUgaWYgdGhlIGJsb2NrIGdyb3VwIGNoZWNrc3VtcyBhcmUKKwkJCSAqIGNvcnJlY3Qgc28gd2Uga25vdyB3aGV0aGVyIG9yIG5vdCB0byBzZXQKKwkJCSAqIHRoZW0gbGF0ZXIgb24uCisJCQkgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKQorCQkJCWlmICghZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV92ZXJpZnkoZnMsIGkpKQorCQkJCQlicmVhazsKKwkJCWlmIChpID49IGZzLT5ncm91cF9kZXNjX2NvdW50KQorCQkJCXNldF9jc3VtID0gMTsKKwkJfQorCisJCW1lbWNweShvbGRfdXVpZCwgc2ItPnNfdXVpZCwgVVVJRF9TSVpFKTsKKwkJaWYgKChzdHJjYXNlY21wKG5ld19VVUlELCAibnVsbCIpID09IDApIHx8CisJCSAgICAoc3RyY2FzZWNtcChuZXdfVVVJRCwgImNsZWFyIikgPT0gMCkpIHsKKwkJCXV1aWRfY2xlYXIoc2ItPnNfdXVpZCk7CisJCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChuZXdfVVVJRCwgInRpbWUiKSA9PSAwKSB7CisJCQl1dWlkX2dlbmVyYXRlX3RpbWUoc2ItPnNfdXVpZCk7CisJCX0gZWxzZSBpZiAoc3RyY2FzZWNtcChuZXdfVVVJRCwgInJhbmRvbSIpID09IDApIHsKKwkJCXV1aWRfZ2VuZXJhdGUoc2ItPnNfdXVpZCk7CisJCX0gZWxzZSBpZiAodXVpZF9wYXJzZShuZXdfVVVJRCwgc2ItPnNfdXVpZCkpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLCAiJXMiLAorCQkJCV8oIkludmFsaWQgVVVJRCBmb3JtYXRcbiIpKTsKKwkJCXJjID0gMTsKKwkJCWdvdG8gY2xvc2VmczsKKwkJfQorCQlleHQyZnNfaW5pdF9jc3VtX3NlZWQoZnMpOworCQlpZiAoc2V0X2NzdW0pIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKQorCQkJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBpKTsKKwkJCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX1NVUEVSX09OTFk7CisJCX0KKworCQkvKiBJZiB0aGlzIGlzIGEgam91cm5hbCBkZXYsIHdlIG5lZWQgdG8gY29weSBVVUlEIGludG8ganNiICovCisJCWlmICghKHJjID0gZ2V0X2pvdXJuYWxfc2IoZnMsIGJ1ZikpKSB7CisJCQlqb3VybmFsX3N1cGVyYmxvY2tfdCAqanNiOworCisJCQlqc2IgPSAoam91cm5hbF9zdXBlcmJsb2NrX3QgKikgYnVmOworCQkJZnB1dHMoXygiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIiksIHN0ZG91dCk7CisJCQltZW1jcHkoanNiLT5zX3V1aWQsIHNiLT5zX3V1aWQsIHNpemVvZihzYi0+c191dWlkKSk7CisKKwkJCS8qIFdyaXRlYmFjayB0aGUgam91cm5hbCBzdXBlcmJsb2NrICovCisJCQlpZiAoKHJjID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sCisJCQkJZXh0MmZzX2pvdXJuYWxfc2Jfc3RhcnQoZnMtPmJsb2Nrc2l6ZSksCisJCQkJCS1TVVBFUkJMT0NLX1NJWkUsIGJ1ZikpKQorCQkJCWdvdG8gY2xvc2VmczsKKwkJfSBlbHNlIGlmIChyYyAhPSBFWFQyX0VUX1VOU1VQUF9GRUFUVVJFKQorCQkJZ290byBjbG9zZWZzOworCQllbHNlIHsKKwkJCXJjID0gMDsgLyoqIFJlc2V0IHJjIHRvIGF2b2lkIGV4dDJmc19tbXBfc3RvcCgpICovCisKKwkJCWlmICgocmMgPSBmc191cGRhdGVfam91cm5hbF91c2VyKHNiLCBvbGRfdXVpZCkpKQorCQkJCWdvdG8gY2xvc2VmczsKKwkJfQorCisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKGZzLT5zdXBlcikgJiYKKwkJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfY3N1bV9zZWVkKGZzLT5zdXBlcikpCisJCQlyZXdyaXRlX2NoZWNrc3VtcyA9IDE7CisJfQorCisJaWYgKElfZmxhZykgeworCQlpZiAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpIHsKKwkJCWZwdXRzKF8oIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlICIKKwkJCQkiY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzICIKKwkJCQkidW5tb3VudGVkLlxuIiksIHN0ZGVycik7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9mbGV4X2JnKGZzLT5zdXBlcikpIHsKKwkJCWZwdXRzKF8oIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yICIKKwkJCQkiZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorCQkJCSJmZWF0dXJlIGVuYWJsZWQuXG4iKSwKKwkJCSAgICAgIHN0ZGVycik7CisJCQlyYyA9IDE7CisJCQlnb3RvIGNsb3NlZnM7CisJCX0KKwkJLyoKKwkJICogV2Ugd2FudCB0byB1cGRhdGUgZ3JvdXAgZGVzY3JpcHRvciBhbHNvCisJCSAqIHdpdGggdGhlIG5ldyBmcmVlIGlub2RlIGNvdW50CisJCSAqLworCQlpZiAocmV3cml0ZV9jaGVja3N1bXMpCisJCQlmcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfU1VQRVJfT05MWTsKKwkJcmV0dmFsID0gcmVzaXplX2lub2RlKGZzLCBuZXdfaW5vZGVfc2l6ZSk7CisJCWlmIChyZXdyaXRlX2NoZWNrc3VtcykKKwkJCWZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJaWYgKHJldHZhbCA9PSAwKSB7CisJCQlwcmludGYoXygiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIiksCisJCQkJCQkJbmV3X2lub2RlX3NpemUpOworCQkJcmV3cml0ZV9jaGVja3N1bXMgPSAxOworCQl9IGVsc2UgeworCQkJcHJpbnRmKCIlcyIsIF8oIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIikpOworCQkJcmMgPSAxOworCQkJZ290byBjbG9zZWZzOworCQl9CisJfQorCisJaWYgKHJld3JpdGVfY2hlY2tzdW1zKQorCQlyZXdyaXRlX21ldGFkYXRhX2NoZWNrc3Vtcyhmcyk7CisKKwlpZiAobF9mbGFnKQorCQlsaXN0X3N1cGVyKHNiKTsKKwlpZiAoc3RyaWRlX3NldCkgeworCQlzYi0+c19yYWlkX3N0cmlkZSA9IHN0cmlkZTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCQlwcmludGYoXygiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIiksIHN0cmlkZSk7CisJfQorCWlmIChzdHJpcGVfd2lkdGhfc2V0KSB7CisJCXNiLT5zX3JhaWRfc3RyaXBlX3dpZHRoID0gc3RyaXBlX3dpZHRoOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJCXByaW50ZihfKCJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIiksIHN0cmlwZV93aWR0aCk7CisJfQorCWlmIChleHRfbW91bnRfb3B0cykgeworCQlzdHJuY3B5KChjaGFyICopKGZzLT5zdXBlci0+c19tb3VudF9vcHRzKSwgZXh0X21vdW50X29wdHMsCisJCQlzaXplb2YoZnMtPnN1cGVyLT5zX21vdW50X29wdHMpKTsKKwkJZnMtPnN1cGVyLT5zX21vdW50X29wdHNbc2l6ZW9mKGZzLT5zdXBlci0+c19tb3VudF9vcHRzKS0xXSA9IDA7CisJCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwkJcHJpbnRmKF8oIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIpLAorCQkgICAgICAgZXh0X21vdW50X29wdHMpOworCQlmcmVlKGV4dF9tb3VudF9vcHRzKTsKKwl9CisKKyNpZmRlZiBOT19SRUNPVkVSWQorCS8qIFdhcm4gaWYgZmlsZSBzeXN0ZW0gbmVlZHMgcmVjb3ZlcnkgYW5kIGl0IGlzIG9wZW5lZCBmb3Igd3JpdGluZy4gKi8KKwlpZiAoKG9wZW5fZmxhZyAmIEVYVDJfRkxBR19SVykgJiYgIShtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgJiYKKwkgICAgKHNiLT5zX2ZlYXR1cmVfY29tcGF0ICYgRVhUM19GRUFUVVJFX0NPTVBBVF9IQVNfSk9VUk5BTCkgJiYKKwkgICAgKHNiLT5zX2ZlYXR1cmVfaW5jb21wYXQgJiBFWFQzX0ZFQVRVUkVfSU5DT01QQVRfUkVDT1ZFUikpIHsKKwkJZnByaW50ZihzdGRlcnIsCitfKCJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuXG4iCisgICJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcblxuIgorICAidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisgICJieSBqb3VybmFsIHJlY292ZXJ5LlxuIiksIGRldmljZV9uYW1lKTsKKwl9CisjZWxzZQorCS8qIFJlY292ZXIgdGhlIGpvdXJuYWwgaWYgcG9zc2libGUuICovCisJaWYgKChvcGVuX2ZsYWcgJiBFWFQyX0ZMQUdfUlcpICYmICEobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpICYmCisJICAgIGV4dDJmc19oYXNfZmVhdHVyZV9qb3VybmFsX25lZWRzX3JlY292ZXJ5KGZzLT5zdXBlcikpIHsKKwkJZXJyY29kZV90IGVycjsKKworCQlwcmludGYoXygiUmVjb3ZlcmluZyBqb3VybmFsLlxuIikpOworCQllcnIgPSBleHQyZnNfcnVuX2V4dDNfam91cm5hbCgmZnMpOworCQlpZiAoZXJyKSB7CisJCQljb21fZXJyKCJ0dW5lMmZzIiwgZXJyLCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsLlxuIik7CisJCQlwcmludGYoXygiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIiksIGFyZ3ZbMV0pOworCQkJZ290byBjbG9zZWZzOworCQl9CisJCWV4dDJmc19jbGVhcl9mZWF0dXJlX2pvdXJuYWxfbmVlZHNfcmVjb3ZlcnkoZnMtPnN1cGVyKTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0KKyNlbmRpZgorCisJZnJlZShkZXZpY2VfbmFtZSk7CisJcmVtb3ZlX2Vycm9yX3RhYmxlKCZldF9leHQyX2Vycm9yX3RhYmxlKTsKKworY2xvc2VmczoKKwlpZiAocmMpIHsKKwkJZXh0MmZzX21tcF9zdG9wKGZzKTsKKyNpZm5kZWYgQlVJTERfQVNfTElCCisJCWV4aXQoMSk7CisjZW5kaWYKKwl9CisKKwljb252ZXJ0XzY0Yml0KGZzLCBmZWF0dXJlXzY0Yml0KTsKKwlyZXR1cm4gKGV4dDJmc19jbG9zZV9mcmVlKCZmcykgPyAxIDogMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy90dW5lMmZzLmggYi9lMmZzcHJvZ3MvbWlzYy90dW5lMmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3ZTQzMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL3R1bmUyZnMuaApAQCAtMCwwICsxLDI2IEBACisvKgorICogdHVuZTJmcy5oIC0gQ2hhbmdlIHRoZSBmaWxlIHN5c3RlbSBwYXJhbWV0ZXJzIG9uIGFuIGV4dDIgZmlsZSBzeXN0ZW0KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpZm5kZWYgX1RVTkUyRlNfSF8KKyNkZWZpbmUgX1RVTkUyRlNfSF8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKiBUYWtlcyBleGFjdGx5IHRoZSBzYW1lIGFyZ3MgYXMgdGhlIHR1bmUyZnMgZXhlY3R1YWJsZS4KKyAqIElzIHRoZSBlbnRyeXBvaW50IGZvciBsaWJ0dW5lMmZzLgorICovCitpbnQgdHVuZTJmc19tYWluKGludCBhcmdjLCBjaGFyICoqYXJndik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvdXRpbC5jIGIvZTJmc3Byb2dzL21pc2MvdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYmM5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy91dGlsLmMKQEAgLTAsMCArMSwyOTEgQEAKKy8qCisgKiB1dGlsLmMgLS0tIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieSB0dW5lMmZzIGFuZCBta2UyZnMKKyAqCisgKiBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCBieSBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHNldGptcC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaWZkZWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfTUFKT1JfSAorI2luY2x1ZGUgPGxpbnV4L21ham9yLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSAiZXQvY29tX2Vyci5oIgorI2luY2x1ZGUgImUycC9lMnAuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKyNpbmNsdWRlICJibGtpZC9ibGtpZC5oIgorI2luY2x1ZGUgInV0aWwuaCIKKworY2hhciAqam91cm5hbF9sb2NhdGlvbl9zdHJpbmcgPSBOVUxMOworCisjaWZuZGVmIEhBVkVfU1RSQ0FTRUNNUAoraW50IHN0cmNhc2VjbXAgKGNoYXIgKnMxLCBjaGFyICpzMikKK3sKKwl3aGlsZSAoKnMxICYmICpzMikgeworCQlpbnQgY2gxID0gKnMxKyssIGNoMiA9ICpzMisrOworCQlpZiAoaXN1cHBlciAoY2gxKSkKKwkJCWNoMSA9IHRvbG93ZXIgKGNoMSk7CisJCWlmIChpc3VwcGVyIChjaDIpKQorCQkJY2gyID0gdG9sb3dlciAoY2gyKTsKKwkJaWYgKGNoMSAhPSBjaDIpCisJCQlyZXR1cm4gY2gxIC0gY2gyOworCX0KKwlyZXR1cm4gKnMxID8gMSA6ICpzMiA/IC0xIDogMDsKK30KKyNlbmRpZgorCisvKgorICogR2l2ZW4gYXJndlswXSwgcmV0dXJuIHRoZSBwcm9ncmFtIG5hbWUuCisgKi8KK2NoYXIgKmdldF9wcm9nbmFtZShjaGFyICphcmd2X3plcm8pCit7CisJY2hhcgkqY3A7CisKKwljcCA9IHN0cnJjaHIoYXJndl96ZXJvLCAnLycpOworCWlmICghY3AgKQorCQlyZXR1cm4gYXJndl96ZXJvOworCWVsc2UKKwkJcmV0dXJuIGNwKzE7Cit9CisKK3N0YXRpYyBqbXBfYnVmIGFsYXJtX2VudjsKKworc3RhdGljIHZvaWQgYWxhcm1fc2lnbmFsKGludCBzaWduYWwgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworCWxvbmdqbXAoYWxhcm1fZW52LCAxKTsKK30KKwordm9pZCBwcm9jZWVkX3F1ZXN0aW9uKGludCBkZWxheSkKK3sKKwljaGFyIGJ1ZlsyNTZdOworCWNvbnN0IGNoYXIgKnNob3J0X3llcyA9IF8oInlZIik7CisKKwlmZmx1c2goc3Rkb3V0KTsKKwlmZmx1c2goc3RkZXJyKTsKKwlpZiAoZGVsYXkgPiAwKSB7CisJCWlmIChzZXRqbXAoYWxhcm1fZW52KSkgeworCQkJc2lnbmFsKFNJR0FMUk0sIFNJR19JR04pOworCQkJcHJpbnRmKCIlcyIsIF8oIjxwcm9jZWVkaW5nPlxuIikpOworCQkJcmV0dXJuOworCQl9CisJCXNpZ25hbChTSUdBTFJNLCBhbGFybV9zaWduYWwpOworCQlwcmludGYoXygiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiKSwKKwkJICAgICAgIGRlbGF5KTsKKwkJYWxhcm0oZGVsYXkpOworCX0gZWxzZQorCQlmcHV0cyhfKCJQcm9jZWVkIGFueXdheT8gKHksbikgIiksIHN0ZG91dCk7CisJYnVmWzBdID0gMDsKKwlpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSB8fAorCSAgICBzdHJjaHIoc2hvcnRfeWVzLCBidWZbMF0pID09IDApIHsKKwkJcHV0YygnXG4nLCBzdGRvdXQpOworCQlleGl0KDEpOworCX0KKwlzaWduYWwoU0lHQUxSTSwgU0lHX0lHTik7Cit9CisKK3ZvaWQgY2hlY2tfbW91bnQoY29uc3QgY2hhciAqZGV2aWNlLCBpbnQgZm9yY2UsIGNvbnN0IGNoYXIgKnR5cGUpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCW1vdW50X2ZsYWdzOworCisJcmV0dmFsID0gZXh0MmZzX2NoZWNrX2lmX21vdW50ZWQoZGV2aWNlLCAmbW91bnRfZmxhZ3MpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2VycigiZXh0MmZzX2NoZWNrX2lmX21vdW50IiwgcmV0dmFsLAorCQkJXygid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIpLAorCQkJZGV2aWNlKTsKKwkJcmV0dXJuOworCX0KKwlpZiAobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIiVzIGlzIG1vdW50ZWQ7ICIpLCBkZXZpY2UpOworCQlpZiAoZm9yY2UgPj0gMikgeworCQkJZnB1dHMoXygibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyAiCisJCQkJImluY29ycmVjdC5cbiIpLCBzdGRlcnIpOworCQkJcmV0dXJuOworCQl9CisJYWJvcnRfbWtlMmZzOgorCQlmcHJpbnRmKHN0ZGVyciwgXygid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iKSwgdHlwZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfQlVTWSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIiksCisJCQlkZXZpY2UpOworCQlpZiAoZm9yY2UgPj0gMikgeworCQkJZnB1dHMoXygibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iKSwgc3RkZXJyKTsKKwkJCXJldHVybjsKKwkJfQorCQlnb3RvIGFib3J0X21rZTJmczsKKwl9Cit9CisKK3ZvaWQgcGFyc2Vfam91cm5hbF9vcHRzKGNvbnN0IGNoYXIgKm9wdHMpCit7CisJY2hhcgkqYnVmLCAqdG9rZW4sICpuZXh0LCAqcCwgKmFyZzsKKwlpbnQJbGVuOworCWludAlqb3VybmFsX3VzYWdlID0gMDsKKworCWxlbiA9IHN0cmxlbihvcHRzKTsKKwlidWYgPSBtYWxsb2MobGVuKzEpOworCWlmICghYnVmKSB7CisJCWZwdXRzKF8oIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsICIKKwkJCSJvcHRpb25zIVxuIiksIHN0ZGVycik7CisJCWV4aXQoMSk7CisJfQorCXN0cmNweShidWYsIG9wdHMpOworCWZvciAodG9rZW4gPSBidWY7IHRva2VuICYmICp0b2tlbjsgdG9rZW4gPSBuZXh0KSB7CisJCXAgPSBzdHJjaHIodG9rZW4sICcsJyk7CisJCW5leHQgPSAwOworCQlpZiAocCkgeworCQkJKnAgPSAwOworCQkJbmV4dCA9IHArMTsKKwkJfQorCQlhcmcgPSBzdHJjaHIodG9rZW4sICc9Jyk7CisJCWlmIChhcmcpIHsKKwkJCSphcmcgPSAwOworCQkJYXJnKys7CisJCX0KKyNpZiAwCisJCXByaW50ZigiSm91cm5hbCBvcHRpb249JXMsIGFyZ3VtZW50PSVzXG4iLCB0b2tlbiwKKwkJICAgICAgIGFyZyA/IGFyZyA6ICJOT05FIik7CisjZW5kaWYKKwkJaWYgKHN0cmNtcCh0b2tlbiwgImRldmljZSIpID09IDApIHsKKwkJCWpvdXJuYWxfZGV2aWNlID0gYmxraWRfZ2V0X2Rldm5hbWUoTlVMTCwgYXJnLCBOVUxMKTsKKwkJCWlmICgham91cm5hbF9kZXZpY2UpIHsKKwkJCQlpZiAoYXJnKQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgXygiXG5Db3VsZCBub3QgZmluZCAiCisJCQkJCQkiam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIpLAorCQkJCQkJYXJnKTsKKwkJCQlqb3VybmFsX3VzYWdlKys7CisJCQkJY29udGludWU7CisJCQl9CisJCX0gZWxzZSBpZiAoc3RyY21wKHRva2VuLCAic2l6ZSIpID09IDApIHsKKwkJCWlmICghYXJnKSB7CisJCQkJam91cm5hbF91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJam91cm5hbF9zaXplID0gc3RydG91bChhcmcsICZwLCAwKTsKKwkJCWlmICgqcCkKKwkJCQlqb3VybmFsX3VzYWdlKys7CisJCX0gZWxzZSBpZiAoIXN0cmNtcCh0b2tlbiwgImxvY2F0aW9uIikpIHsKKwkJCWlmICghYXJnKSB7CisJCQkJam91cm5hbF91c2FnZSsrOworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJam91cm5hbF9sb2NhdGlvbl9zdHJpbmcgPSBzdHJkdXAoYXJnKTsKKwkJfSBlbHNlIGlmIChzdHJjbXAodG9rZW4sICJ2MV9zdXBlcmJsb2NrIikgPT0gMCkgeworCQkJam91cm5hbF9mbGFncyB8PSBFWFQyX01LSk9VUk5BTF9WMV9TVVBFUjsKKwkJCWNvbnRpbnVlOworCQl9IGVsc2UKKwkJCWpvdXJuYWxfdXNhZ2UrKzsKKwl9CisJaWYgKGpvdXJuYWxfdXNhZ2UpIHsKKwkJZnB1dHMoXygiXG5CYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cblxuIgorCQkJIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgIgorCQkJImFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorCQkJIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cblxuIgorCQkJIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisJCQkiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorCQkJIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKwkJCSJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuXG4iCisJCQkiVGhlIGpvdXJuYWwgc2l6ZSBtdXN0IGJlIGJldHdlZW4gIgorCQkJIjEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuXG4iKSwgc3RkZXJyKTsKKwkJZnJlZShidWYpOworCQlleGl0KDEpOworCX0KKwlmcmVlKGJ1Zik7Cit9CisKKy8qCisgKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBqb3VybmFsIGJsb2NrcyB0byB1c2UsIGVpdGhlciB2aWEKKyAqIHVzZXItc3BlY2lmaWVkICMgb2YgbWVnYWJ5dGVzLCBvciB2aWEgc29tZSBpbnRlbGxpZ2VudGx5IHNlbGVjdGVkCisgKiBkZWZhdWx0cy4KKyAqCisgKiBGaW5kIGEgcmVhc29uYWJsZSBqb3VybmFsIGZpbGUgc2l6ZSAoaW4gYmxvY2tzKSBnaXZlbiB0aGUgbnVtYmVyIG9mIGJsb2NrcworICogaW4gdGhlIGZpbGVzeXN0ZW0uICBGb3IgdmVyeSBzbWFsbCBmaWxlc3lzdGVtcywgaXQgaXMgbm90IHJlYXNvbmFibGUgdG8KKyAqIGhhdmUgYSBqb3VybmFsIHRoYXQgZmlsbHMgbW9yZSB0aGFuIGhhbGYgb2YgdGhlIGZpbGVzeXN0ZW0uCisgKi8KK3Vuc2lnbmVkIGludCBmaWd1cmVfam91cm5hbF9zaXplKGludCBzaXplLCBleHQyX2ZpbHN5cyBmcykKK3sKKwlpbnQgal9ibG9ja3M7CisKKwlqX2Jsb2NrcyA9IGV4dDJmc19kZWZhdWx0X2pvdXJuYWxfc2l6ZShleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpOworCWlmIChqX2Jsb2NrcyA8IDApIHsKKwkJZnB1dHMoXygiXG5GaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iKSwgc3RkZXJyKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKHNpemUgPiAwKSB7CisJCWpfYmxvY2tzID0gc2l6ZSAqIDEwMjQgLyAoZnMtPmJsb2Nrc2l6ZQkvIDEwMjQpOworCQlpZiAoal9ibG9ja3MgPCAxMDI0IHx8IGpfYmxvY2tzID4gMTAyNDAwMDApIHsKKwkJCWZwcmludGYoc3RkZXJyLCBfKCJcblRoZSByZXF1ZXN0ZWQgam91cm5hbCAiCisJCQkJInNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisJCQkJImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgIgorCQkJCSJBYm9ydGluZy5cbiIpLAorCQkJCWpfYmxvY2tzKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKCh1bnNpZ25lZCkgal9ibG9ja3MgPiBleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAvIDIpIHsKKwkJCWZwdXRzKF8oIlxuSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iKSwKKwkJCSAgICAgIHN0ZGVycik7CisJCQlleGl0KDEpOworCQl9CisJfQorCXJldHVybiBqX2Jsb2NrczsKK30KKwordm9pZCBwcmludF9jaGVja19tZXNzYWdlKGludCBtbnQsIHVuc2lnbmVkIGludCBjaGVjaykKK3sKKwlpZiAobW50IDwgMCkKKwkJbW50ID0gMDsKKwlpZiAoIW1udCAmJiAhY2hlY2spCisJCXJldHVybjsKKwlwcmludGYoXygiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSAiCisJCSAiY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKwkJICIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICAiCisJCSAiVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iKSwKKwkgICAgICAgbW50LCAoKGRvdWJsZSkgY2hlY2spIC8gKDM2MDAgKiAyNCkpOworfQorCit2b2lkIGR1bXBfbW1wX21zZyhzdHJ1Y3QgbW1wX3N0cnVjdCAqbW1wLCBjb25zdCBjaGFyICptc2cpCit7CisKKwlpZiAobXNnKQorCQlwcmludGYoIk1NUCBjaGVjayBmYWlsZWQ6ICVzXG4iLCBtc2cpOworCWlmIChtbXApIHsKKwkJdGltZV90IHQgPSBtbXAtPm1tcF90aW1lOworCisJCXByaW50ZigiTU1QIGVycm9yIGluZm86IGxhc3QgdXBkYXRlOiAlcyBub2RlOiAlcyBkZXZpY2U6ICVzXG4iLAorCQkgICAgICAgY3RpbWUoJnQpLCBtbXAtPm1tcF9ub2RlbmFtZSwgbW1wLT5tbXBfYmRldm5hbWUpOworCX0KK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL3V0aWwuaCBiL2UyZnNwcm9ncy9taXNjL3V0aWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWI0YjljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvdXRpbC5oCkBAIC0wLDAgKzEsMjcgQEAKKy8qCisgKiB1dGlsLmggLS0tIGhlYWRlciBmaWxlIGRlZmluaW5nIHByb3RvdHlwZXMgZm9yIGhlbHBlciBmdW5jdGlvbnMKKyAqIHVzZWQgYnkgdHVuZTJmcyBhbmQgbWtlMmZzCisgKgorICogQ29weXJpZ2h0IDIwMDAgYnkgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKK2V4dGVybiBpbnQJIGpvdXJuYWxfc2l6ZTsKK2V4dGVybiBpbnQJIGpvdXJuYWxfZmxhZ3M7CitleHRlcm4gY2hhcgkqam91cm5hbF9kZXZpY2U7CitleHRlcm4gY2hhcgkqam91cm5hbF9sb2NhdGlvbl9zdHJpbmc7CisKKyNpZm5kZWYgSEFWRV9TVFJDQVNFQ01QCitleHRlcm4gaW50IHN0cmNhc2VjbXAgKGNoYXIgKnMxLCBjaGFyICpzMik7CisjZW5kaWYKK2V4dGVybiBjaGFyICpnZXRfcHJvZ25hbWUoY2hhciAqYXJndl96ZXJvKTsKK2V4dGVybiB2b2lkIHByb2NlZWRfcXVlc3Rpb24oaW50IGRlbGF5KTsKK2V4dGVybiB2b2lkIHBhcnNlX2pvdXJuYWxfb3B0cyhjb25zdCBjaGFyICpvcHRzKTsKK2V4dGVybiB2b2lkIGNoZWNrX21vdW50KGNvbnN0IGNoYXIgKmRldmljZSwgaW50IGZvcmNlLCBjb25zdCBjaGFyICp0eXBlKTsKK2V4dGVybiB1bnNpZ25lZCBpbnQgZmlndXJlX2pvdXJuYWxfc2l6ZShpbnQgc2l6ZSwgZXh0Ml9maWxzeXMgZnMpOworZXh0ZXJuIHZvaWQgcHJpbnRfY2hlY2tfbWVzc2FnZShpbnQsIHVuc2lnbmVkIGludCk7CitleHRlcm4gdm9pZCBkdW1wX21tcF9tc2coc3RydWN0IG1tcF9zdHJ1Y3QgKm1tcCwgY29uc3QgY2hhciAqbXNnKTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9taXNjL3V1aWRkLjguaW4gYi9lMmZzcHJvZ3MvbWlzYy91dWlkZC44LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2NWUzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy91dWlkZC44LmluCkBAIC0wLDAgKzEsOTcgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgQ29weXJpZ2h0IDIwMDcgYnkgVGhlb2RvcmUgVHMnby4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisuXCIgVGhpcyBmaWxlIG1heSBiZSBjb3BpZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisuXCIKKy5USCBVVUlERCA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCit1dWlkZCBcLSBVVUlEIGdlbmVyYXRpb24gZGFlbW9uCisuU0ggU1lOT1BTSVMKKy5CIHV1aWRkCitbCisuQiBcLWQKK10KK1sKKy5CIFwtcAorLkkgcGlkZmlsZQorXQorWworLkIgXC1zCisuSSBzb2NrZXRwYXRoCitdCitbCisuQiBcLVQKKy5JIHRpbWVvdXQKK10KKworLkIgdXVpZGQKK1sKKy5CIFwtcgorfAorLkIgXC10CitdCitbCisuQiBcLW4KKy5JIG51bWJlcgorXQorWworLkIgXC1zCisuSSBzb2NrZXRwYXRoCitdCisKKy5CIHV1aWRkIFwtaworLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHV1aWRkCitkYWVtb24gaXMgdXNlZCBieSB0aGUgVVVJRCBsaWJyYXJ5IHRvIGdlbmVyYXRlCit1bml2ZXJzYWxseSB1bmlxdWUgaWRlbnRpZmllcnMgKFVVSURzKSwgZXNwZWNpYWxseSB0aW1lLWJhc2VkIFVVSUQncworaW4gYSBzZWN1cmUgYW5kIGd1YXJhbnRlZWQtdW5pcXVlIGZhc2hpb24sIGV2ZW4gaW4gdGhlIGZhY2Ugb2YgbGFyZ2UKK251bWJlcnMgb2YgdGhyZWFkcyB0cnlpbmcgdG8gZ3JhYiBVVUlEJ3MgcnVubmluZyBvbiBkaWZmZXJlbnQgQ1BVJ3MuCisuU0ggT1BUSU9OUworLlRQCisuQiBcLWQKK1J1bgorLkIgdXVpZGQKK2luIGRlYnVnZ2luZyBtb2RlLiAgVGhpcyBwcmV2ZW50cyB1dWlkZCBmcm9tIHJ1bm5pbmcgYXMgYSBkYWVtb24uCisuVFAKKy5CIFwtaworSWYgYSBjdXJyZW50bHkgdXVpZGQgZGFlbW9uIGlzIHJ1bm5pbmcsIGtpbGwgaXQuCisuVFAKKy5CSSBcLW4gIiBudW1iZXIiCitXaGVuIGlzc3VpbmcgYSB0ZXN0IHJlcXVlc3QgdG8gYSBydW5uaW5nIHV1aWRkLCByZXF1ZXN0IGEgYnVsayByZXNwb25zZQorb2YKKy5JIG51bWJlcgorVVVJRCdzLgorLlRQCisuQkkgXC1wICAiIHBpZGZpbGUiCitTcGVjaWZ5IHRoZSBwYXRobmFtZSB3aGVyZSB0aGUgcGlkIGZpbGUgc2hvdWxkIGJlIHdyaXR0ZW4uICBCeSBkZWZhdWx0LAordGhlIHBpZCBmaWxlIGlzIHdyaXR0ZW4gdG8gL3Zhci9saWIvbGlidXVpZC91dWlkZC5waWQuCisuVFAKKy5CSSBcLXMgIiBzb2NrZXRwYXRoIgorU3BlY2lmeSB0aGUgcGF0aG5hbWUgdXNlZCBmb3IgdGhlIHVuaXgtZG9tYWluIHNvY2tldCB1c2VkIGJ5IHV1aWRkLiAgQnkKK2RlZmF1bHQsIHRoZSBwYXRobmFtZSB1c2VkIGlzIC92YXIvbGliL2xpYnV1aWQvcmVxdWVzdC4gIFRoaXMgaXMgcHJpbWFyaWx5Citmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBzaW5jZSB0aGUgcGF0aG5hbWUgaXMgaGFyZC1jb2RlZCBpbiB0aGUgbGlidXVpZAorbGlicmFyeS4KKy5UUAorLkIgXC1yCitUZXN0IHV1aWRkIGJ5IHRyeWluZyB0byBjb25uZWN0IHRvIGEgcnVubmluZyB1dWlkZCBkYWVtb24gYW5kCityZXF1ZXN0IGl0IHRvIHJldHVybiBhIHJhbmRvbS1iYXNlZCBVVUlELgorLlRQCisuQiBcLXQKK1Rlc3QgdXVpZGQgYnkgdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBydW5uaW5nIHV1aWRkIGRhZW1vbiBhbmQKK3JlcXVlc3QgaXQgdG8gcmV0dXJuIGEgdGltZS1iYXNlZCBVVUlELgorLlRQCisuQkkgXC1UICIgdGltZW91dCIKK1NwZWNpZnkgYSB0aW1lb3V0IGZvciB1dWlkZC4gIElmIHNwZWNpZmllZCwgdGhlbiB1dWlkZCB3aWxsIGV4aXQgYWZ0ZXIKKy5JIHRpbWVvdXQKK3NlY29uZHMgb2YgaW5hY3Rpdml0eS4KKy5TSCBBVVRIT1IKK1RoZQorLkIgdXVpZGQKK2RhZW1vbiAgd2FzIHdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4uCisuU0ggQVZBSUxBQklMSVRZCisuQiB1dWlkZAoraXMgcGFydCBvZiBsaWJ1dWlkIGZyb20gdGhlIGUyZnNwcm9ncyBwYWNrYWdlIGFuZCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuCisuU0ggIlNFRSBBTFNPIgorLkJSIGxpYnV1aWQgKDMpLAorLkJSIHV1aWRnZW4gKDEpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy91dWlkZC5jIGIvZTJmc3Byb2dzL21pc2MvdXVpZGQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGIzZmE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvdXVpZGQuYwpAQCAtMCwwICsxLDYwMCBAQAorLyoKKyAqIHV1aWRkLmMgLS0tIFVVSUQtZ2VuZXJhdGlvbiBkYWVtb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgIFRoZW9kb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNkZWZpbmUgX0dOVV9TT1VSQ0UgLyogZm9yIHNldHJlc1t1Z11pZCgpICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvdW4uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbHNlCitleHRlcm4gaW50IGdldG9wdChpbnQgYXJnYywgY2hhciAqIGNvbnN0IGFyZ3ZbXSwgY29uc3QgY2hhciAqb3B0c3RyaW5nKTsKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorI2luY2x1ZGUgInV1aWQvdXVpZC5oIgorI2luY2x1ZGUgInV1aWQvdXVpZGQuaCIKKyNpbmNsdWRlICJzdXBwb3J0L25scy1lbmFibGUuaCIKKyNpbmNsdWRlICJleHQyZnMvZXh0MmZzLmgiCisKKyNpZmRlZiBfX0dOVUNfXworI2RlZmluZSBDT0RFX0FUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgQ09ERV9BVFRSKHgpCisjZW5kaWYKKworc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCit7CisJZnByaW50ZihzdGRlcnIsIF8oIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gIgorCQkJICAiWy1UIHRpbWVvdXRdXG4iKSwgcHJvZ25hbWUpOworCWZwcmludGYoc3RkZXJyLCBfKCIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIiksCisJCXByb2duYW1lKTsKKwlmcHJpbnRmKHN0ZGVyciwgXygiICAgICAgICVzIC1rXG4iKSwgcHJvZ25hbWUpOworCWV4aXQoMSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZShjb25zdCBjaGFyICptc2cpCit7CisJcGVycm9yKG1zZyk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHZvaWQgY3JlYXRlX2RhZW1vbih2b2lkKQoreworCXBpZF90IHBpZDsKKwl1aWRfdCBldWlkOworCisJcGlkID0gZm9yaygpOworCWlmIChwaWQgPT0gLTEpIHsKKwkJcGVycm9yKCJmb3JrIik7CisJCWV4aXQoMSk7CisJfSBlbHNlIGlmIChwaWQgIT0gMCkgeworCSAgICBleGl0KDApOworCX0KKworCWNsb3NlKDApOworCWNsb3NlKDEpOworCWNsb3NlKDIpOworCW9wZW4oIi9kZXYvbnVsbCIsIE9fUkRXUik7CisJb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKTsKKwlvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpOworCisJaWYgKGNoZGlyKCIvIikpIHt9CS8qIFNpbGVuY2Ugd2Fybl91bnVzZWRfcmVzdWx0IHdhcm5pbmcgKi8KKwkodm9pZCkgc2V0c2lkKCk7CisJZXVpZCA9IGdldGV1aWQoKTsKKwlpZiAoc2V0cmV1aWQoZXVpZCwgZXVpZCkgPCAwKQorCQlkaWUoInNldHJldWlkIik7Cit9CisKK3N0YXRpYyBzc2l6ZV90IHJlYWRfYWxsKGludCBmZCwgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisJc3NpemVfdCByZXQ7CisJc3NpemVfdCBjID0gMDsKKwlpbnQgdHJpZXMgPSAwOworCisJbWVtc2V0KGJ1ZiwgMCwgY291bnQpOworCXdoaWxlIChjb3VudCA+IDApIHsKKwkJcmV0ID0gcmVhZChmZCwgYnVmLCBjb3VudCk7CisJCWlmIChyZXQgPD0gMCkgeworCQkJaWYgKChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRUlOVFIgfHwgcmV0ID09IDApICYmCisJCQkgICAgKHRyaWVzKysgPCA1KSkKKwkJCQljb250aW51ZTsKKwkJCXJldHVybiBjID8gYyA6IC0xOworCQl9CisJCWlmIChyZXQgPiAwKQorCQkJdHJpZXMgPSAwOworCQljb3VudCAtPSByZXQ7CisJCWJ1ZiArPSByZXQ7CisJCWMgKz0gcmV0OworCX0KKwlyZXR1cm4gYzsKK30KKworc3RhdGljIGludCB3cml0ZV9hbGwoaW50IGZkLCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlzc2l6ZV90IHJldDsKKwlpbnQgYyA9IDA7CisKKwl3aGlsZSAoY291bnQgPiAwKSB7CisJCXJldCA9IHdyaXRlKGZkLCBidWYsIGNvdW50KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCWlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUlOVFIpKQorCQkJCWNvbnRpbnVlOworCQkJcmV0dXJuIC0xOworCQl9CisJCWNvdW50IC09IHJldDsKKwkJYnVmICs9IHJldDsKKwkJYyArPSByZXQ7CisJfQorCXJldHVybiBjOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqY2xlYW51cF9waWRmaWxlLCAqY2xlYW51cF9zb2NrZXQ7CisKK3N0YXRpYyB2b2lkIHRlcm1pbmF0ZV9pbnRyKGludCBzaWdubyBDT0RFX0FUVFIoKHVudXNlZCkpKQoreworCSh2b2lkKSB1bmxpbmsoY2xlYW51cF9waWRmaWxlKTsKKwlpZiAoY2xlYW51cF9zb2NrZXQpCisJCSh2b2lkKSB1bmxpbmsoY2xlYW51cF9zb2NrZXQpOworCWV4aXQoMCk7Cit9CisKK3N0YXRpYyBpbnQgY2FsbF9kYWVtb24oY29uc3QgY2hhciAqc29ja2V0X3BhdGgsIGludCBvcCwgY2hhciAqYnVmLAorCQkgICAgICAgaW50IGJ1ZmxlbiwgaW50ICpudW0sIGNvbnN0IGNoYXIgKiplcnJfY29udGV4dCkKK3sKKwljaGFyIG9wX2J1Zls4XTsKKwlpbnQgb3BfbGVuOworCWludCBzOworCXNzaXplX3QgcmV0OworCWludDMyX3QgcmVwbHlfbGVuID0gMDsKKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gc3J2X2FkZHI7CisKKwlpZiAoKChvcCA9PSA0KSB8fCAob3AgPT0gNSkpICYmICFudW0pIHsKKwkJaWYgKGVycl9jb250ZXh0KQorCQkJKmVycl9jb250ZXh0ID0gXygiYmFkIGFyZ3VtZW50cyIpOworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmICgocyA9IHNvY2tldChBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCkpIDwgMCkgeworCQlpZiAoZXJyX2NvbnRleHQpCisJCQkqZXJyX2NvbnRleHQgPSBfKCJzb2NrZXQiKTsKKwkJcmV0dXJuIC0xOworCX0KKworCXNydl9hZGRyLnN1bl9mYW1pbHkgPSBBRl9VTklYOworCXN0cm5jcHkoc3J2X2FkZHIuc3VuX3BhdGgsIHNvY2tldF9wYXRoLCBzaXplb2Yoc3J2X2FkZHIuc3VuX3BhdGgpKTsKKwlzcnZfYWRkci5zdW5fcGF0aFtzaXplb2Yoc3J2X2FkZHIuc3VuX3BhdGgpLTFdID0gJ1wwJzsKKworCWlmIChjb25uZWN0KHMsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikgJnNydl9hZGRyLAorCQkgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bikpIDwgMCkgeworCQlpZiAoZXJyX2NvbnRleHQpCisJCQkqZXJyX2NvbnRleHQgPSBfKCJjb25uZWN0Iik7CisJCWNsb3NlKHMpOworCQlyZXR1cm4gLTE7CisJfQorCisJaWYgKG9wID09IDUpIHsKKwkJaWYgKCgqbnVtKSoxNiA+IGJ1Zmxlbi00KQorCQkJKm51bSA9IChidWZsZW4tNCkgLyAxNjsKKwl9CisJb3BfYnVmWzBdID0gb3A7CisJb3BfbGVuID0gMTsKKwlpZiAoKG9wID09IDQpIHx8IChvcCA9PSA1KSkgeworCQltZW1jcHkob3BfYnVmKzEsIG51bSwgc2l6ZW9mKGludCkpOworCQlvcF9sZW4gKz0gc2l6ZW9mKGludCk7CisJfQorCisJcmV0ID0gd3JpdGVfYWxsKHMsIG9wX2J1Ziwgb3BfbGVuKTsKKwlpZiAocmV0IDwgb3BfbGVuKSB7CisJCWlmIChlcnJfY29udGV4dCkKKwkJCSplcnJfY29udGV4dCA9IF8oIndyaXRlIik7CisJCWNsb3NlKHMpOworCQlyZXR1cm4gLTE7CisJfQorCisJcmV0ID0gcmVhZF9hbGwocywgKGNoYXIgKikgJnJlcGx5X2xlbiwgc2l6ZW9mKHJlcGx5X2xlbikpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChlcnJfY29udGV4dCkKKwkJCSplcnJfY29udGV4dCA9IF8oInJlYWQgY291bnQiKTsKKwkJY2xvc2Uocyk7CisJCXJldHVybiAtMTsKKwl9CisJaWYgKHJlcGx5X2xlbiA8IDAgfHwgcmVwbHlfbGVuID4gYnVmbGVuKSB7CisJCWlmIChlcnJfY29udGV4dCkKKwkJCSplcnJfY29udGV4dCA9IF8oImJhZCByZXNwb25zZSBsZW5ndGgiKTsKKwkJY2xvc2Uocyk7CisJCXJldHVybiAtMTsKKwl9CisJcmV0ID0gcmVhZF9hbGwocywgKGNoYXIgKikgYnVmLCByZXBseV9sZW4pOworCisJaWYgKChyZXQgPiAwKSAmJiAob3AgPT0gNCkpIHsKKwkJaWYgKHJlcGx5X2xlbiA+PSAoaW50KSAoMTYrc2l6ZW9mKGludCkpKQorCQkJbWVtY3B5KGJ1ZisxNiwgbnVtLCBzaXplb2YoaW50KSk7CisJCWVsc2UKKwkJCSpudW0gPSAtMTsKKwl9CisJaWYgKChyZXQgPiAwKSAmJiAob3AgPT0gNSkpIHsKKwkJaWYgKCpudW0gPj0gKGludCkgc2l6ZW9mKGludCkpCisJCQltZW1jcHkoYnVmLCBudW0sIHNpemVvZihpbnQpKTsKKwkJZWxzZQorCQkJKm51bSA9IC0xOworCX0KKworCWNsb3NlKHMpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgc2VydmVyX2xvb3AoY29uc3QgY2hhciAqc29ja2V0X3BhdGgsIGNvbnN0IGNoYXIgKnBpZGZpbGVfcGF0aCwKKwkJCWludCBkZWJ1ZywgaW50IHRpbWVvdXQsIGludCBxdWlldCkKK3sKKwlzdHJ1Y3Qgc29ja2FkZHJfdW4JbXlfYWRkciwgZnJvbV9hZGRyOworCXN0cnVjdCBmbG9jawkJZmw7CisJc29ja2xlbl90CQlmcm9tbGVuOworCWludDMyX3QJCQlyZXBseV9sZW4gPSAwOworCXV1aWRfdAkJCXV1OworCW1vZGVfdAkJCXNhdmVfdW1hc2s7CisJY2hhcgkJCXJlcGx5X2J1ZlsxMDI0XSwgKmNwOworCWNoYXIJCQlvcCwgc3RyW1VVSURfU1RSX1NJWkVdOworCWludAkJCWksIHMsIG5zLCBsZW4sIG51bTsKKwlpbnQJCQlmZF9waWRmaWxlLCByZXQ7CisKKwlmZF9waWRmaWxlID0gb3BlbihwaWRmaWxlX3BhdGgsIE9fQ1JFQVQgfCBPX1JEV1IsIDA2NjQpOworCWlmIChmZF9waWRmaWxlIDwgMCkgeworCQlpZiAoIXF1aWV0KQorCQkJZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gb3Blbi9jcmVhdGUgJXM6ICVzXG4iLAorCQkJCXBpZGZpbGVfcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgxKTsKKwl9CisJY2xlYW51cF9waWRmaWxlID0gcGlkZmlsZV9wYXRoOworCWNsZWFudXBfc29ja2V0ID0gMDsKKwlzaWduYWwoU0lHQUxSTSwgdGVybWluYXRlX2ludHIpOworCWFsYXJtKDMwKTsKKyAJZmwubF90eXBlID0gRl9XUkxDSzsKKyAJZmwubF93aGVuY2UgPSBTRUVLX1NFVDsKKyAJZmwubF9zdGFydCA9IDA7CisgCWZsLmxfbGVuID0gMDsKKyAJZmwubF9waWQgPSAwOworIAl3aGlsZSAoZmNudGwoZmRfcGlkZmlsZSwgRl9TRVRMS1csICZmbCkgPCAwKSB7CisJCWlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUlOVFIpKQorCQkJY29udGludWU7CisJCWlmICghcXVpZXQpCisJCQlmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsb2NrICVzOiAlc1xuIiwKKwkJCQlwaWRmaWxlX3BhdGgsIHN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoMSk7CisJfQorCXJldCA9IGNhbGxfZGFlbW9uKHNvY2tldF9wYXRoLCAwLCByZXBseV9idWYsIHNpemVvZihyZXBseV9idWYpLCAwLCAwKTsKKwlpZiAocmV0ID4gMCkgeworCQlpZiAoIXF1aWV0KQorCQkJcHJpbnRmKF8oInV1aWRkIGRhZW1vbiBhbHJlYWR5IHJ1bm5pbmcgYXQgcGlkICVzXG4iKSwKKwkJCSAgICAgICByZXBseV9idWYpOworCQlleGl0KDEpOworCX0KKwlhbGFybSgwKTsKKworCWlmICgocyA9IHNvY2tldChBRl9VTklYLCBTT0NLX1NUUkVBTSwgMCkpIDwgMCkgeworCQlpZiAoIXF1aWV0KQorCQkJZnByaW50ZihzdGRlcnIsIF8oIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSAiCisJCQkJCSAgInNvY2tldDogJXMiKSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgc29ja2V0IGlzbid0IHVzaW5nIGZkIG51bWJlcnMgMC0yIHRvIGF2b2lkIGl0CisJICogZ2V0dGluZyBjbG9zZWQgYnkgY3JlYXRlX2RhZW1vbigpCisJICovCisJd2hpbGUgKCFkZWJ1ZyAmJiBzIDw9IDIpIHsKKwkJcyA9IGR1cChzKTsKKwkJaWYgKHMgPCAwKSB7CisJCQlwZXJyb3IoImR1cCIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCS8qCisJICogQ3JlYXRlIHRoZSBhZGRyZXNzIHdlIHdpbGwgYmUgYmluZGluZyB0by4KKwkgKi8KKwlteV9hZGRyLnN1bl9mYW1pbHkgPSBBRl9VTklYOworCXN0cm5jcHkobXlfYWRkci5zdW5fcGF0aCwgc29ja2V0X3BhdGgsIHNpemVvZihteV9hZGRyLnN1bl9wYXRoKSk7CisJbXlfYWRkci5zdW5fcGF0aFtzaXplb2YobXlfYWRkci5zdW5fcGF0aCktMV0gPSAnXDAnOworCSh2b2lkKSB1bmxpbmsoc29ja2V0X3BhdGgpOworCXNhdmVfdW1hc2sgPSB1bWFzaygwKTsKKwlpZiAoYmluZChzLCAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopICZteV9hZGRyLAorCQkgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bikpIDwgMCkgeworCQlpZiAoIXF1aWV0KQorCQkJZnByaW50ZihzdGRlcnIsCisJCQkJXygiQ291bGRuJ3QgYmluZCB1bml4IHNvY2tldCAlczogJXNcbiIpLAorCQkJCXNvY2tldF9wYXRoLCBzdHJlcnJvcihlcnJubykpOworCQlleGl0KDEpOworCX0KKwkodm9pZCkgdW1hc2soc2F2ZV91bWFzayk7CisKKwlpZiAobGlzdGVuKHMsIDUpIDwgMCkgeworCQlpZiAoIXF1aWV0KQorCQkJZnByaW50ZihzdGRlcnIsIF8oIkNvdWxkbid0IGxpc3RlbiBvbiB1bml4ICIKKwkJCQkJICAic29ja2V0ICVzOiAlc1xuIiksIHNvY2tldF9wYXRoLAorCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCWV4aXQoMSk7CisJfQorCisJY2xlYW51cF9zb2NrZXQgPSBzb2NrZXRfcGF0aDsKKwlpZiAoIWRlYnVnKQorCQljcmVhdGVfZGFlbW9uKCk7CisJc2lnbmFsKFNJR0hVUCwgdGVybWluYXRlX2ludHIpOworCXNpZ25hbChTSUdJTlQsIHRlcm1pbmF0ZV9pbnRyKTsKKwlzaWduYWwoU0lHVEVSTSwgdGVybWluYXRlX2ludHIpOworCXNpZ25hbChTSUdBTFJNLCB0ZXJtaW5hdGVfaW50cik7CisJc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworCisJc3ByaW50ZihyZXBseV9idWYsICIlOGRcbiIsIGdldHBpZCgpKTsKKwlpZiAoZnRydW5jYXRlKGZkX3BpZGZpbGUsIDApKSB7fSAvKiBTaWxlbmNlIHdhcm5fdW51c2VkX3Jlc3VsdCAqLworCXdyaXRlX2FsbChmZF9waWRmaWxlLCByZXBseV9idWYsIHN0cmxlbihyZXBseV9idWYpKTsKKwlpZiAoZmRfcGlkZmlsZSA+IDEpCisJCWNsb3NlKGZkX3BpZGZpbGUpOyAvKiBVbmxvY2sgdGhlIHBpZCBmaWxlICovCisKKwl3aGlsZSAoMSkgeworCQlmcm9tbGVuID0gc2l6ZW9mKGZyb21fYWRkcik7CisJCWlmICh0aW1lb3V0ID4gMCkKKwkJCWFsYXJtKHRpbWVvdXQpOworCQlucyA9IGFjY2VwdChzLCAoc3RydWN0IHNvY2thZGRyICopICZmcm9tX2FkZHIsICZmcm9tbGVuKTsKKwkJYWxhcm0oMCk7CisJCWlmIChucyA8IDApIHsKKwkJCWlmICgoZXJybm8gPT0gRUFHQUlOKSB8fCAoZXJybm8gPT0gRUlOVFIpKQorCQkJCWNvbnRpbnVlOworCQkJcGVycm9yKCJhY2NlcHQiKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJbGVuID0gcmVhZChucywgJm9wLCAxKTsKKwkJaWYgKGxlbiAhPSAxKSB7CisJCQlpZiAobGVuIDwgMCkKKwkJCQlwZXJyb3IoInJlYWQiKTsKKwkJCWVsc2UKKwkJCQlwcmludGYoXygiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgIgorCQkJCQkgImxlbiA9ICVkXG4iKSwgbGVuKTsKKwkJCWdvdG8gc2h1dGRvd25fc29ja2V0OworCQl9CisJCWlmICgob3AgPT0gNCkgfHwgKG9wID09IDUpKSB7CisJCQlpZiAocmVhZF9hbGwobnMsIChjaGFyICopICZudW0sIHNpemVvZihudW0pKSAhPSA0KQorCQkJCWdvdG8gc2h1dGRvd25fc29ja2V0OworCQkJaWYgKGRlYnVnKQorCQkJCXByaW50ZihfKCJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iKSwKKwkJCQkgICAgICAgb3AsIG51bSk7CisJCX0gZWxzZSBpZiAoZGVidWcpCisJCQlwcmludGYoIm9wZXJhdGlvbiAlZFxuIiwgb3ApOworCisJCXN3aXRjaChvcCkgeworCQljYXNlIFVVSUREX09QX0dFVFBJRDoKKwkJCXNwcmludGYocmVwbHlfYnVmLCAiJWQiLCBnZXRwaWQoKSk7CisJCQlyZXBseV9sZW4gPSBzdHJsZW4ocmVwbHlfYnVmKSsxOworCQkJYnJlYWs7CisJCWNhc2UgVVVJRERfT1BfR0VUX01BWE9QOgorCQkJc3ByaW50ZihyZXBseV9idWYsICIlZCIsIFVVSUREX01BWF9PUCk7CisJCQlyZXBseV9sZW4gPSBzdHJsZW4ocmVwbHlfYnVmKSsxOworCQkJYnJlYWs7CisJCWNhc2UgVVVJRERfT1BfVElNRV9VVUlEOgorCQkJbnVtID0gMTsKKwkJCXV1aWRfX2dlbmVyYXRlX3RpbWUodXUsICZudW0pOworCQkJaWYgKGRlYnVnKSB7CisJCQkJdXVpZF91bnBhcnNlKHV1LCBzdHIpOworCQkJCXByaW50ZihfKCJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIiksIHN0cik7CisJCQl9CisJCQltZW1jcHkocmVwbHlfYnVmLCB1dSwgc2l6ZW9mKHV1KSk7CisJCQlyZXBseV9sZW4gPSBzaXplb2YodXUpOworCQkJYnJlYWs7CisJCWNhc2UgVVVJRERfT1BfUkFORE9NX1VVSUQ6CisJCQludW0gPSAxOworCQkJdXVpZF9fZ2VuZXJhdGVfcmFuZG9tKHV1LCAmbnVtKTsKKwkJCWlmIChkZWJ1ZykgeworCQkJCXV1aWRfdW5wYXJzZSh1dSwgc3RyKTsKKwkJCQlwcmludGYoXygiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIiksIHN0cik7CisJCQl9CisJCQltZW1jcHkocmVwbHlfYnVmLCB1dSwgc2l6ZW9mKHV1KSk7CisJCQlyZXBseV9sZW4gPSBzaXplb2YodXUpOworCQkJYnJlYWs7CisJCWNhc2UgVVVJRERfT1BfQlVMS19USU1FX1VVSUQ6CisJCQl1dWlkX19nZW5lcmF0ZV90aW1lKHV1LCAmbnVtKTsKKwkJCWlmIChkZWJ1ZykgeworCQkJCXV1aWRfdW5wYXJzZSh1dSwgc3RyKTsKKwkJCQlwcmludGYoUF8oIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICIKKwkJCQkJICAic3Vic2VxdWVudCBVVUlEXG4iLAorCQkJCQkgICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCAiCisJCQkJCSAgInN1YnNlcXVlbnQgVVVJRHNcbiIsIG51bSksCisJCQkJICAgICAgIHN0ciwgbnVtKTsKKwkJCX0KKwkJCW1lbWNweShyZXBseV9idWYsIHV1LCBzaXplb2YodXUpKTsKKwkJCXJlcGx5X2xlbiA9IHNpemVvZih1dSk7CisJCQltZW1jcHkocmVwbHlfYnVmK3JlcGx5X2xlbiwgJm51bSwgc2l6ZW9mKG51bSkpOworCQkJcmVwbHlfbGVuICs9IHNpemVvZihudW0pOworCQkJYnJlYWs7CisJCWNhc2UgVVVJRERfT1BfQlVMS19SQU5ET01fVVVJRDoKKwkJCWlmIChudW0gPCAwKQorCQkJCW51bSA9IDE7CisJCQlpZiAobnVtID4gMTAwMCkKKwkJCQludW0gPSAxMDAwOworCQkJaWYgKG51bSoxNiA+IChpbnQpIChzaXplb2YocmVwbHlfYnVmKS1zaXplb2YobnVtKSkpCisJCQkJbnVtID0gKHNpemVvZihyZXBseV9idWYpLXNpemVvZihudW0pKSAvIDE2OworCQkJdXVpZF9fZ2VuZXJhdGVfcmFuZG9tKCh1bnNpZ25lZCBjaGFyICopIHJlcGx5X2J1ZiArCisJCQkJCSAgICAgIHNpemVvZihudW0pLCAmbnVtKTsKKwkJCWlmIChkZWJ1ZykgeworCQkJCXByaW50ZihfKCJHZW5lcmF0ZWQgJWQgVVVJRCdzOlxuIiksIG51bSk7CisJCQkJZm9yIChpPTAsIGNwPXJlcGx5X2J1ZitzaXplb2YobnVtKTsKKwkJCQkgICAgIGkgPCBudW07IGkrKywgY3ArPTE2KSB7CisJCQkJCXV1aWRfdW5wYXJzZSgodW5zaWduZWQgY2hhciAqKWNwLCBzdHIpOworCQkJCQlwcmludGYoIlx0JXNcbiIsIHN0cik7CisJCQkJfQorCQkJfQorCQkJcmVwbHlfbGVuID0gKG51bSoxNikgKyBzaXplb2YobnVtKTsKKwkJCW1lbWNweShyZXBseV9idWYsICZudW0sIHNpemVvZihudW0pKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJaWYgKGRlYnVnKQorCQkJCXByaW50ZihfKCJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIiksIG9wKTsKKwkJCWdvdG8gc2h1dGRvd25fc29ja2V0OworCQl9CisJCXdyaXRlX2FsbChucywgKGNoYXIgKikgJnJlcGx5X2xlbiwgc2l6ZW9mKHJlcGx5X2xlbikpOworCQl3cml0ZV9hbGwobnMsIHJlcGx5X2J1ZiwgcmVwbHlfbGVuKTsKKwlzaHV0ZG93bl9zb2NrZXQ6CisJCWNsb3NlKG5zKTsKKwl9Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyCSpzb2NrZXRfcGF0aCA9IFVVSUREX1NPQ0tFVF9QQVRIOworCWNvbnN0IGNoYXIJKnBpZGZpbGVfcGF0aCA9IFVVSUREX1BJREZJTEVfUEFUSDsKKwljb25zdCBjaGFyCSplcnJfY29udGV4dDsKKwljaGFyCQlidWZbMTAyNF0sICpjcDsKKwljaGFyICAgCQlzdHJbMzddLCAqdG1wOworCXV1aWRfdAkJdXU7CisJdWlkX3QJCXVpZDsKKwlnaWRfdCAJCWdpZDsKKwlpbnQJCWksIGMsIHJldDsKKwlpbnQJCWRlYnVnID0gMCwgZG9fdHlwZSA9IDAsIGRvX2tpbGwgPSAwLCBudW0gPSAwOworCWludAkJdGltZW91dCA9IDAsIHF1aWV0ID0gMCwgZHJvcF9wcml2cyA9IDA7CisKKyNpZmRlZiBFTkFCTEVfTkxTCisJc2V0bG9jYWxlKExDX01FU1NBR0VTLCAiIik7CisJc2V0bG9jYWxlKExDX0NUWVBFLCAiIik7CisJYmluZHRleHRkb21haW4oTkxTX0NBVF9OQU1FLCBMT0NBTEVESVIpOworCXRleHRkb21haW4oTkxTX0NBVF9OQU1FKTsKKyNlbmRpZgorCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiZGtuOnFwOnM6dFQ6ciIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2QnOgorCQkJZGVidWcrKzsKKwkJCWRyb3BfcHJpdnMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ2snOgorCQkJZG9fa2lsbCsrOworCQkJZHJvcF9wcml2cyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbic6CisJCQludW0gPSBzdHJ0b2wob3B0YXJnLCAmdG1wLCAwKTsKKwkJCWlmICgobnVtIDwgMCkgfHwgKnRtcCkgeworCQkJCWZwcmludGYoc3RkZXJyLCBfKCJCYWQgbnVtYmVyOiAlc1xuIiksIG9wdGFyZyk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCXBpZGZpbGVfcGF0aCA9IG9wdGFyZzsKKwkJCWRyb3BfcHJpdnMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3EnOgorCQkJcXVpZXQrKzsKKwkJCWJyZWFrOworCQljYXNlICdzJzoKKwkJCXNvY2tldF9wYXRoID0gb3B0YXJnOworCQkJZHJvcF9wcml2cyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQlkb190eXBlID0gVVVJRERfT1BfVElNRV9VVUlEOworCQkJZHJvcF9wcml2cyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnVCc6CisJCQl0aW1lb3V0ID0gc3RydG9sKG9wdGFyZywgJnRtcCwgMCk7CisJCQlpZiAoKHRpbWVvdXQgPCAwKSB8fCAqdG1wKSB7CisJCQkJZnByaW50ZihzdGRlcnIsIF8oIkJhZCBudW1iZXI6ICVzXG4iKSwgb3B0YXJnKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ3InOgorCQkJZG9fdHlwZSA9IFVVSUREX09QX1JBTkRPTV9VVUlEOworCQkJZHJvcF9wcml2cyA9IDE7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGFyZ3ZbMF0pOworCQl9CisJfQorCXVpZCA9IGdldHVpZCgpOworCWlmICh1aWQgJiYgZHJvcF9wcml2cykgeworCQlnaWQgPSBnZXRnaWQoKTsKKyNpZmRlZiBIQVZFX1NFVFJFU0dJRAorCQlpZiAoc2V0cmVzZ2lkKGdpZCwgZ2lkLCBnaWQpIDwgMCkKKwkJCWRpZSgic2V0cmVzZ2lkIik7CisjZWxzZQorCQlpZiAoc2V0cmVnaWQoZ2lkLCBnaWQpIDwgMCkKKwkJCWRpZSgic2V0cmVnaWQiKTsKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TRVRSRVNVSUQKKwkJaWYgKHNldHJlc3VpZCh1aWQsIHVpZCwgdWlkKSA8IDApCisJCQlkaWUoInNldHJlc3VpZCIpOworI2Vsc2UKKwkJaWYgKHNldHJldWlkKHVpZCwgdWlkKSA8IDApCisJCQlkaWUoInNldHJldWlkIik7CisjZW5kaWYKKwl9CisJaWYgKG51bSAmJiBkb190eXBlKSB7CisJCXJldCA9IGNhbGxfZGFlbW9uKHNvY2tldF9wYXRoLCBkb190eXBlKzIsIGJ1ZiwKKwkJCQkgIHNpemVvZihidWYpLCAmbnVtLCAmZXJyX2NvbnRleHQpOworCQlpZiAocmV0IDwgMCkgeworCQkJcHJpbnRmKF8oIkVycm9yIGNhbGxpbmcgdXVpZGQgZGFlbW9uICglcyk6ICVzXG4iKSwKKwkJCSAgICAgICBlcnJfY29udGV4dCwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKGRvX3R5cGUgPT0gVVVJRERfT1BfVElNRV9VVUlEKSB7CisJCQlpZiAocmV0ICE9IHNpemVvZih1dSkgKyBzaXplb2YobnVtKSkKKwkJCQlnb3RvIHVuZXhwZWN0ZWRfc2l6ZTsKKworCQkJdXVpZF91bnBhcnNlKCh1bnNpZ25lZCBjaGFyICopIGJ1Ziwgc3RyKTsKKworCQkJcHJpbnRmKFBfKCIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iLAorCQkJCSAgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iLCBudW0pLAorCQkJICAgICAgIHN0ciwgbnVtKTsKKwkJfSBlbHNlIHsKKwkJCXByaW50ZigiJXMiLCBfKCJMaXN0IG9mIFVVSUQnczpcbiIpKTsKKwkJCWNwID0gYnVmICsgNDsKKwkJCWlmIChyZXQgIT0gKGludCkgKHNpemVvZihudW0pICsgbnVtKnNpemVvZih1dSkpKQorCQkJCWdvdG8gdW5leHBlY3RlZF9zaXplOworCQkJZm9yIChpPTA7IGkgPCBudW07IGkrKywgY3ArPTE2KSB7CisJCQkJdXVpZF91bnBhcnNlKCh1bnNpZ25lZCBjaGFyICopIGNwLCBzdHIpOworCQkJCXByaW50ZigiXHQlc1xuIiwgc3RyKTsKKwkJCX0KKwkJfQorCQlleGl0KDApOworCX0KKwlpZiAoZG9fdHlwZSkgeworCQlyZXQgPSBjYWxsX2RhZW1vbihzb2NrZXRfcGF0aCwgZG9fdHlwZSwgKGNoYXIgKikgJnV1LAorCQkJCSAgc2l6ZW9mKHV1KSwgMCwgJmVycl9jb250ZXh0KTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCXByaW50ZihfKCJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIiksCisJCQkgICAgICAgZXJyX2NvbnRleHQsIHN0cmVycm9yKGVycm5vKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChyZXQgIT0gc2l6ZW9mKHV1KSkgeworCQl1bmV4cGVjdGVkX3NpemU6CisJCQlwcmludGYoXygiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIpLAorCQkJICAgICAgIHJldCk7CisJCQlleGl0KDEpOworCQl9CisJCXV1aWRfdW5wYXJzZSh1dSwgc3RyKTsKKworCQlwcmludGYoIiVzXG4iLCBzdHIpOworCQlleGl0KDApOworCX0KKworCWlmIChkb19raWxsKSB7CisJCXJldCA9IGNhbGxfZGFlbW9uKHNvY2tldF9wYXRoLCAwLCBidWYsIHNpemVvZihidWYpLCAwLCAwKTsKKwkJaWYgKChyZXQgPiAwKSAmJiAoKGRvX2tpbGwgPSBhdG9pKChjaGFyICopIGJ1ZikpID4gMCkpIHsKKwkJCXJldCA9IGtpbGwoZG9fa2lsbCwgU0lHVEVSTSk7CisJCQlpZiAocmV0IDwgMCkgeworCQkJCWlmICghcXVpZXQpCisJCQkJCWZwcmludGYoc3RkZXJyLAorCQkJCQkJXygiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nICIKKwkJCQkJCSAgImF0IHBpZCAlZDogJXNcbiIpLCBkb19raWxsLAorCQkJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCQlleGl0KDEpOworCQkJfQorCQkJaWYgKCFxdWlldCkKKwkJCQlwcmludGYoXygiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iKSwKKwkJCQkgICAgICAgZG9fa2lsbCk7CisJCX0KKwkJZXhpdCgwKTsKKwl9CisKKwlzZXJ2ZXJfbG9vcChzb2NrZXRfcGF0aCwgcGlkZmlsZV9wYXRoLCBkZWJ1ZywgdGltZW91dCwgcXVpZXQpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvdXVpZGQucmMgYi9lMmZzcHJvZ3MvbWlzYy91dWlkZC5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzU2NDVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL21pc2MvdXVpZGQucmMKQEAgLTAsMCArMSw1NSBAQAorIyEgL2Jpbi9zaCAtZQorIyMjIEJFR0lOIElOSVQgSU5GTworIyBQcm92aWRlczogICAgICAgICAgdXVpZGQKKyMgUmVxdWlyZWQtU3RhcnQ6ICAgICR0aW1lICRsb2NhbF9mcworIyBSZXF1aXJlZC1TdG9wOiAgICAgJHRpbWUgJGxvY2FsX2ZzCisjIERlZmF1bHQtU3RhcnQ6ICAgICAyIDMgNCA1CisjIERlZmF1bHQtU3RvcDogICAgICAwIDEgNgorIyBTaG9ydC1EZXNjcmlwdGlvbjogdXVpZGQgZGFlbW9uCisjIERlc2NyaXB0aW9uOiAgICAgICBJbml0IHNjcmlwdCBmb3IgdGhlIHV1aWQgZ2VuZXJhdGlvbiBkYWVtb24KKyMjIyBFTkQgSU5JVCBJTkZPCisjCisjIEF1dGhvcjoJIlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgorIworc2V0IC1lCisKK1BBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KK0RBRU1PTj0vdXNyL3NiaW4vdXVpZGQKK1BJREZJTEU9L3Zhci9ydW4vdXVpZGQvdXVpZGQucGlkCisKK3Rlc3QgLXggJERBRU1PTiB8fCBleGl0IDAKKworLiAvbGliL2xzYi9pbml0LWZ1bmN0aW9ucworCitjYXNlICIkMSIgaW4KKyAgICBzdGFydCkKKwlsb2dfZGFlbW9uX21zZyAiU3RhcnRpbmcgdXVpZCBnZW5lcmF0b3IiICJ1dWlkZCIKKwlzdGFydF9kYWVtb24gLXAgJFBJREZJTEUgJERBRU1PTgorCWxvZ19lbmRfbXNnICQ/CisgICAgOzsKKyAgc3RvcCkKKwlsb2dfZGFlbW9uX21zZyAiU3RvcHBpbmcgdXVpZGQgZ2VuZXJhdG9yIiAidXVpZGQiCisJa2lsbHByb2MgLXAgJFBJREZJTEUgJERBRU1PTgorCWxvZ19lbmRfbXNnICQ/CisgICAgOzsKKyAgc3RhdHVzKQorCWlmIHBpZG9mcHJvYyAtcCAkUElERklMRSAkREFFTU9OID4mIC9kZXYvbnVsbCA7IHRoZW4KKwkgICAgZWNobyAiJERBRU1PTiBpcyBydW5uaW5nIjsKKwkgICAgZXhpdCAwOworCWVsc2UKKwkgICAgZWNobyAiJERBRU1PTiBpcyBOT1QgcnVubmluZyI7CisJICAgIGlmIHRlc3QgLWYgL3Zhci9ydW4vdXVpZGQucGlkOyB0aGVuIGV4aXQgMjsgZmkKKwkgICAgZXhpdCAzOworCWZpCisJOzsKKyAgZm9yY2UtcmVsb2FkfHJlc3RhcnQpCisgICAgJDAgc3RvcAorICAgICQwIHN0YXJ0CisgICAgOzsKKyAgKikKKyAgICBlY2hvICJVc2FnZTogL2V0Yy9pbml0LmQvdXVpZGQge3N0YXJ0fHN0b3B8cmVzdGFydHxmb3JjZS1yZWxvYWR9IgorICAgIGV4aXQgMQorICAgIDs7Citlc2FjCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL21pc2MvdXVpZGdlbi4xLmluIGIvZTJmc3Byb2dzL21pc2MvdXVpZGdlbi4xLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NWU4MGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvbWlzYy91dWlkZ2VuLjEuaW4KQEAgLTAsMCArMSw2MyBAQAorLlwiIENvcHlyaWdodCAxOTk5IEFuZHJlYXMgRGlsZ2VyIChhZGlsZ2VyQGVuZWwudWNhbGdhcnkuY2EpCisuXCIKKy5cIiBUaGlzIG1hbiBwYWdlIHdhcyBjcmVhdGVkIGZvciBsaWJ1dWlkLnNvLjEuMSBmcm9tIGUyZnNwcm9ncy0xLjE0LgorLlwiIAorLlwiIFRoaXMgZmlsZSBtYXkgYmUgY29waWVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorLlwiIAorLlwiIENyZWF0ZWQgIFdlZCBNYXIgMTAgMTc6NDI6MTIgMTk5OSwgQW5kcmVhcyBEaWxnZXIKKy5USCBVVUlER0VOIDEgIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlNIIE5BTUUKK3V1aWRnZW4gXC0gY29tbWFuZFwtbGluZSB1dGlsaXR5IHRvIGNyZWF0ZSBhIG5ldyBVVUlEIHZhbHVlCisuU0ggU1lOT1BTSVMKKy5CIHV1aWRnZW4gCitbCisuQiBcLXIKK3wKKy5CIFwtdAorXQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHV1aWRnZW4KK3Byb2dyYW0gY3JlYXRlcyAoYW5kIHByaW50cykgCithIG5ldyB1bml2ZXJzYWxseSB1bmlxdWUgaWRlbnRpZmllciAoVVVJRCkgdXNpbmcgdGhlCisuQlIgbGlidXVpZCAoMykKK2xpYnJhcnkuICBUaGUgbmV3IFVVSUQgY2FuIHJlYXNvbmFibHkgYmUgY29uc2lkZXJlZCB1bmlxdWUgYW1vbmcgCithbGwgVVVJRHMgY3JlYXRlZCBvbiB0aGUgbG9jYWwgc3lzdGVtLCAKK2FuZCBhbW9uZyBVVUlEcyBjcmVhdGVkIG9uIG90aGVyIHN5c3RlbXMgaW4gdGhlIHBhc3QKK2FuZCBpbiB0aGUgZnV0dXJlLgorLlBQCitUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIFVVSUQncyB3aGljaCAKKy5CIHV1aWRnZW4KK2NhbiBnZW5lcmF0ZTogdGltZS1iYXNlZCBVVUlEJ3MgYW5kIHJhbmRvbS1iYXNlZCBVVUlEJ3MuICBCeSAKK2RlZmF1bHQgCisuQiB1dWlkZ2VuCit3aWxsIGdlbmVyYXRlIGEgcmFuZG9tLWJhc2VkIFVVSUQgaWYgYSBoaWdoLXF1YWxpdHkgcmFuZG9tIG51bWJlcgorZ2VuZXJhdG9yIGlzIHByZXNlbnQuICBPdGhlcndpc2UsIGl0IHdpbGwgY2hvc2UgYSB0aW1lLWJhc2VkIFVVSUQuICBJdCAKK2lzIHBvc3NpYmxlIHRvIGZvcmNlIHRoZSBnZW5lcmF0aW9uIG9mIG9uZSBvZiB0aGVzZSB0d28gCitVVUlEIHR5cGVzIGJ5IHVzaW5nIHRoZQorLkIgXC1yCitvcgorLkIgXC10CitvcHRpb25zLgorLlNIIE9QVElPTlMKKy5UUAorLkIgXC1yCitHZW5lcmF0ZSBhIHJhbmRvbS1iYXNlZCBVVUlELiAgVGhpcyBtZXRob2QgY3JlYXRlcyBhIFVVSUQgY29uc2lzdGluZyBtb3N0bHkKK29mIHJhbmRvbSBiaXRzLiAgSXQgcmVxdWlyZXMgdGhhdCB0aGUgb3BlcmF0aW5nIHN5c3RlbSBoYXZlIGEgaGlnaAorcXVhbGl0eSByYW5kb20gbnVtYmVyIGdlbmVyYXRvciwgc3VjaCBhcworLklSIC9kZXYvcmFuZG9tIC4KKy5UUAorLkIgXC10CitHZW5lcmF0ZSBhIHRpbWUtYmFzZWQgVVVJRC4gIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBVVUlEIGJhc2VkIG9uIHRoZSBzeXN0ZW0gCitjbG9jayBwbHVzIHRoZSBzeXN0ZW0ncyBldGhlcm5ldCBoYXJkd2FyZSBhZGRyZXNzLCBpZiBwcmVzZW50LgorLlNIICJDT05GT1JNSU5HIFRPIgorT1NGIERDRSAxLjEKKy5TSCBBVVRIT1IKKy5CIHV1aWRnZW4KK3dhcyB3cml0dGVuIGJ5IEFuZHJlYXMgRGlsZ2VyIGZvciBsaWJ1dWlkLgorLlNIIEFWQUlMQUJJTElUWQorLkIgdXVpZGdlbgoraXMgcGFydCBvZiBsaWJ1dWlkIGZyb20gdGhlIGUyZnNwcm9ncyBwYWNrYWdlIGFuZCBpcyBhdmFpbGFibGUgZnJvbQoraHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQuCisuU0ggIlNFRSBBTFNPIgorLkJSIGxpYnV1aWQgKDMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvbWlzYy91dWlkZ2VuLmMgYi9lMmZzcHJvZ3MvbWlzYy91dWlkZ2VuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzM2YzZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9taXNjL3V1aWRnZW4uYwpAQCAtMCwwICsxLDgwIEBACisvKgorICogZ2VuX3V1aWQuYyAtLS0gZ2VuZXJhdGUgYSBEQ0UtY29tcGF0aWJsZSB1dWlkCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5LCBBbmRyZWFzIERpbGdlciBhbmQgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBpbnQgZ2V0b3B0KGludCBhcmdjLCBjaGFyICogY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpOworZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisjaW5jbHVkZSAidXVpZC91dWlkLmgiCisjaW5jbHVkZSAic3VwcG9ydC9ubHMtZW5hYmxlLmgiCisKKyNkZWZpbmUgRE9fVFlQRV9USU1FCTEKKyNkZWZpbmUgRE9fVFlQRV9SQU5ET00JMgorCitzdGF0aWMgdm9pZCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgXygiVXNhZ2U6ICVzIFstcl0gWy10XVxuIiksIHByb2duYW1lKTsKKwlleGl0KDEpOworfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJaW50ICAgIGM7CisJaW50ICAgIGRvX3R5cGUgPSAwOworCWNoYXIgICBzdHJbMzddOworCXV1aWRfdCB1dTsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworI2VuZGlmCisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJ0ciIpKSAhPSBFT0YpCisJCXN3aXRjaCAoYykgeworCQljYXNlICd0JzoKKwkJCWRvX3R5cGUgPSBET19UWVBFX1RJTUU7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQlkb190eXBlID0gRE9fVFlQRV9SQU5ET007CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGFyZ3ZbMF0pOworCQl9CisKKwlzd2l0Y2ggKGRvX3R5cGUpIHsKKwljYXNlIERPX1RZUEVfVElNRToKKwkJdXVpZF9nZW5lcmF0ZV90aW1lKHV1KTsKKwkJYnJlYWs7CisJY2FzZSBET19UWVBFX1JBTkRPTToKKwkJdXVpZF9nZW5lcmF0ZV9yYW5kb20odXUpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQl1dWlkX2dlbmVyYXRlKHV1KTsKKwkJYnJlYWs7CisJfQorCisJdXVpZF91bnBhcnNlKHV1LCBzdHIpOworCisJcHJpbnRmKCIlc1xuIiwgc3RyKTsKKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL0xJTkdVQVMgYi9lMmZzcHJvZ3MvcG8vTElOR1VBUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMGFmZDEwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL0xJTkdVQVMKQEAgLTAsMCArMSBAQAorY2EgY3MgZGEgZGUgZW8gZXMgZnIgaHUgaWQgaXQgbmwgcGwgc3Igc3YgdHIgdWsgdmkgemhfQ04KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9NYWtlZmlsZS5pbi5pbiBiL2UyZnNwcm9ncy9wby9NYWtlZmlsZS5pbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWUyZjJhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL01ha2VmaWxlLmluLmluCkBAIC0wLDAgKzEsMzc1IEBACisjIE1ha2VmaWxlIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisjIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDQgYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+CisjCisjIFRoaXMgZmlsZSBjYW4gYmUgY29waWVkIGFuZCB1c2VkIGZyZWVseSB3aXRob3V0IHJlc3RyaWN0aW9ucy4gIEl0IGNhbgorIyBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorIyBmdW5jdGlvbmFsaXR5LgorIyBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiBHTlUgZ2V0dGV4dCBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbmQgaXMgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisjCisjIE9yaWdpbjogZ2V0dGV4dC0wLjE0CisKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1ZFUlNJT04gPSBAVkVSU0lPTkAKKworU0hFTEwgPSAvYmluL3NoCitAU0VUX01BS0VACisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACisKK3ByZWZpeCA9IEBwcmVmaXhACitleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK2RhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKK2dldHRleHRzcmNkaXIgPSAkKGRhdGFkaXIpL2dldHRleHQvcG8KKworSU5TVEFMTCA9IEBJTlNUQUxMQAorSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAKK01LSU5TVEFMTERJUlMgPSBATUtJTlNUQUxMRElSU0AKK21raW5zdGFsbGRpcnMgPSAkKFNIRUxMKSAkKE1LSU5TVEFMTERJUlMpCisKK0dNU0dGTVQgPSBAR01TR0ZNVEAKK01TR0ZNVCA9IEBNU0dGTVRACitYR0VUVEVYVCA9IEBYR0VUVEVYVEAKK01TR01FUkdFID0gbXNnbWVyZ2UKK01TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKK01TR0lOSVQgPSBtc2dpbml0CitNU0dDT05WID0gbXNnY29udgorTVNHRklMVEVSID0gbXNnZmlsdGVyCisKK1BPRklMRVMgPSBAUE9GSUxFU0AKK0dNT0ZJTEVTID0gQEdNT0ZJTEVTQAorVVBEQVRFUE9GSUxFUyA9IEBVUERBVEVQT0ZJTEVTQAorRFVNTVlQT0ZJTEVTID0gQERVTU1ZUE9GSUxFU0AKK0RJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbi5pbiByZW1vdmUtcG90Y2RhdGUuc2luIFwKKyQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTEpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTIpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTMpCitESVNURklMRVMgPSAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzIFBPVEZJTEVTLmluICQoRE9NQUlOKS5wb3Qgc3RhbXAtcG8gXAorJChQT0ZJTEVTKSAkKEdNT0ZJTEVTKSBcCiskKERJU1RGSUxFUy5leHRyYTEpICQoRElTVEZJTEVTLmV4dHJhMikgJChESVNURklMRVMuZXh0cmEzKQorCitQT1RGSUxFUyA9IFwKKworQ0FUQUxPR1MgPSBAQ0FUQUxPR1NACisKKyMgTWFrZXZhcnMgZ2V0cyBpbnNlcnRlZCBoZXJlLiAoRG9uJ3QgcmVtb3ZlIHRoaXMgbGluZSEpCisKKy5TVUZGSVhFUzoKKy5TVUZGSVhFUzogLnBvIC5nbW8gLm1vIC5zZWQgLnNpbiAubm9wIC5wby1jcmVhdGUgLnBvLXVwZGF0ZQorCisucG8ubW86CisJJChFKSAiJChNU0dGTVQpIC1jIC1vICRAICQ8IgorCSQoUSkgJChNU0dGTVQpIC1jIC1vIHQtJEAgJDwgJiYgbXYgdC0kQCAkQAorCisucG8uZ21vOgorCUBsYW5nPWBlY2hvICQqIHwgc2VkIC1lICdzLC4qLywsJ2A7IFwKKwl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwllY2hvICIkJHtjZGNtZH1ybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLW8gJCR7bGFuZ30uZ21vICQke2xhbmd9LnBvIjsgXAorCWNkICQoc3JjZGlyKSAmJiBybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8gJiYgbXYgdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uZ21vCisKKy5zaW4uc2VkOgorCXNlZCAtZSAnL14jL2QnICQ8ID4gdC0kQAorCW12IHQtJEAgJEAKKworCithbGw6IGFsbC1AVVNFX05MU0AKKworYWxsLXllczogQE1BSU5UQUlORVJfQ01UQHN0YW1wLXBvCithbGwtbm86CisKKyMgc3RhbXAtcG8gaXMgYSB0aW1lc3RhbXAgZGVub3RpbmcgdGhlIGxhc3QgdGltZSBhdCB3aGljaCB0aGUgQ0FUQUxPR1MgaGF2ZQorIyBiZWVuIGxvb3NlbHkgdXBkYXRlZC4gSXRzIHB1cnBvc2UgaXMgdGhhdCB3aGVuIGEgZGV2ZWxvcGVyIG9yIHRyYW5zbGF0b3IKKyMgY2hlY2tzIG91dCB0aGUgcGFja2FnZSB2aWEgQ1ZTLCBhbmQgdGhlICQoRE9NQUlOKS5wb3QgZmlsZSBpcyBub3QgaW4gQ1ZTLAorIyAibWFrZSIgd2lsbCB1cGRhdGUgdGhlICQoRE9NQUlOKS5wb3QgYW5kIHRoZSAkKENBVEFMT0dTKSwgYnV0IHN1YnNlcXVlbnQKKyMgaW52b2NhdGlvbnMgb2YgIm1ha2UiIHdpbGwgZG8gbm90aGluZy4gVGhpcyB0aW1lc3RhbXAgd291bGQgbm90IGJlIG5lY2Vzc2FyeQorIyBpZiB1cGRhdGluZyB0aGUgJChDQVRBTE9HUykgd291bGQgYWx3YXlzIHRvdWNoIHRoZW07IGhvd2V2ZXIsIHRoZSBydWxlIGZvcgorIyAkKFBPRklMRVMpIGhhcyBiZWVuIGRlc2lnbmVkIHRvIG5vdCB0b3VjaCBmaWxlcyB0aGF0IGRvbid0IG5lZWQgdG8gYmUKKyMgY2hhbmdlZC4KK3N0YW1wLXBvOiAkKHNyY2RpcikvJChET01BSU4pLnBvdAorCXRlc3QgLXogIiQoR01PRklMRVMpIiB8fCAkKE1BS0UpICQoR01PRklMRVMpCisJQGVjaG8gInRvdWNoIHN0YW1wLXBvIgorCUBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLXBvVAorCUBtdiBzdGFtcC1wb1Qgc3RhbXAtcG8KKworIyBOb3RlOiBUYXJnZXQgJ2FsbCcgbXVzdCBub3QgZGVwZW5kIG9uIHRhcmdldCAnJChET01BSU4pLnBvdC11cGRhdGUnLAorIyBvdGhlcndpc2UgcGFja2FnZXMgbGlrZSBHQ0MgY2FuIG5vdCBiZSBidWlsdCBpZiBvbmx5IHBhcnRzIG9mIHRoZSBzb3VyY2UKKyMgaGF2ZSBiZWVuIGRvd25sb2FkZWQuCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgJChET01BSU4pLnBvdDsgaXQgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbi4KKyMgTm90ZSB0aGF0ICQoRE9NQUlOKS5wb3QgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKERPTUFJTikucG90LXVwZGF0ZTogJChzcmNkaXIpL1BPVEZJTEVTLmluIHJlbW92ZS1wb3RjZGF0ZS5zZWQgXAorCSQoc3JjZGlyKS9hdC1leHBhbmQucGwKKwkkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKKwkgIC0tZGlyZWN0b3J5PSQodG9wX2J1aWxkZGlyKSBcCisJICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBcCisJICAtLWZpbGVzLWZyb209JChzcmNkaXIpL1BPVEZJTEVTLmluIFwKKwkgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAorCSAgLS1tc2dpZC1idWdzLWFkZHJlc3M9JyQoTVNHSURfQlVHU19BRERSRVNTKScKKwlwZXJsICQoc3JjZGlyKS9hdC1leHBhbmQucGwgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikucG8ubmV3CisJbXYgJChET01BSU4pLnBvICQoRE9NQUlOKS5wby5iYWsKKwltdiAkKERPTUFJTikucG8ubmV3ICQoRE9NQUlOKS5wbworCXRlc3QgISAtZiAkKERPTUFJTikucG8gfHwgeyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKHNyY2RpcikvJChET01BSU4pLnBvdCA+ICQoRE9NQUlOKS4xcG8gJiYgXAorCSAgICBzZWQgLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4ycG8gJiYgXAorCSAgICBpZiBjbXAgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoRE9NQUlOKS5wbzsgXAorCSAgICBlbHNlIFwKKwkgICAgICBybSAtZiAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgJiYgXAorCSAgICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgICBmaTsgXAorCSAgZWxzZSBcCisJICAgIG12ICQoRE9NQUlOKS5wbyAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgXAorCSAgZmk7IFwKKwl9CisKKyMgVGhpcyBydWxlIGhhcyBubyBkZXBlbmRlbmNpZXM6IHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlICQoRE9NQUlOKS5wb3QgYXQKKyMgZXZlcnkgIm1ha2UiIGludm9jYXRpb24sIG9ubHkgY3JlYXRlIGl0IHdoZW4gaXQgaXMgbWlzc2luZy4KKyMgT25seSAibWFrZSAkKERPTUFJTikucG90LXVwZGF0ZSIgb3IgIm1ha2UgZGlzdCIgd2lsbCBmb3JjZSBhbiB1cGRhdGUuCiskKHNyY2RpcikvJChET01BSU4pLnBvdDoKKwkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCisKKyMgVGhpcyB0YXJnZXQgcmVidWlsZHMgYSBQTyBmaWxlIGlmICQoRE9NQUlOKS5wb3QgaGFzIGNoYW5nZWQuCisjIE5vdGUgdGhhdCBhIFBPIGZpbGUgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCiskKFBPRklMRVMpOiAkKHNyY2RpcikvJChET01BSU4pLnBvdAorCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzLC4qLywsJyAtZSAncy9cLnBvJCQvLydgOyBcCisJaWYgdGVzdCAtZiAiJChzcmNkaXIpLyQke2xhbmd9LnBvIjsgdGhlbiBcCisJICB0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwkgIGVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0VfVVBEQVRFKSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAorCSAgY2QgJChzcmNkaXIpICYmICQoTVNHTUVSR0VfVVBEQVRFKSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQke2xhbmd9LnBvLWNyZWF0ZTsgXAorCWZpCisKKworaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQoraW5zdGFsbC1leGVjOgoraW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAorCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAorCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSBcCisJCQkgICAgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJICBmb3IgZmlsZSBpbiBNYWtldmFyczsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK2luc3RhbGwtZGF0YS1ubzogYWxsCitpbnN0YWxsLWRhdGEteWVzOiBhbGwKKwkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGRhdGFkaXIpCisJQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKKwlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKKwkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCisJICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCisJICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAorCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJCRkaXI7IFwKKwkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAorCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKKwkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCisJICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCisJICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAorCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKKwkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKKwkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAorCSAgICAgICAgICAgZmk7IFwKKwkgICAgICAgICBkb25lKTsgXAorCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICBlbHNlIFwKKwkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCisJICAgICAgICAgIDo7IFwKKwkgICAgICAgIGVsc2UgXAorCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIGZpOyBcCisJICAgICAgZmk7IFwKKwkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCisJICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKKwkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAorCSAgICBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCitpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCitpbnN0YWxsZGlycy1leGVjOgoraW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCitpbnN0YWxsZGlycy1kYXRhLW5vOgoraW5zdGFsbGRpcnMtZGF0YS15ZXM6CisJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChkYXRhZGlyKQorCUBjYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCisJZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCisJICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAorCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAorCSAgZGlyPSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVM7IFwKKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQkZGlyOyBcCisJICBmb3IgbGMgaW4gJycgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKKwkgICAgaWYgdGVzdCAtbiAiJCRsYyI7IHRoZW4gXAorCSAgICAgIGlmIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIDI+L2Rldi9udWxsKSB8IGdyZXAgJyAtPiAnID4vZGV2L251bGw7IHRoZW4gXAorCSAgICAgICAgbGluaz1gY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyB8IHNlZCAtZSAncy9eLiogLT4gLy8nYDsgXAorCSAgICAgICAgbXYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAorCSAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkICYmIFwKKwkgICAgICAgICBmb3IgZmlsZSBpbiAqOyBkbyBcCisJICAgICAgICAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCisJICAgICAgICAgICAgIGxuIC1zIC4uLyQkbGluay8kJGZpbGUgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kJGZpbGU7IFwKKwkgICAgICAgICAgIGZpOyBcCisJICAgICAgICAgZG9uZSk7IFwKKwkgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgZWxzZSBcCisJICAgICAgICBpZiB0ZXN0IC1kICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IHRoZW4gXAorCSAgICAgICAgICA6OyBcCisJICAgICAgICBlbHNlIFwKKwkgICAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAorCSAgICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICBmaTsgXAorCSAgICAgIGZpOyBcCisJICAgIGZpOyBcCisJICBkb25lOyBcCisJZG9uZQorCisjIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCitpbnN0YWxsY2hlY2s6CisKK3VuaW5zdGFsbDogdW5pbnN0YWxsLWV4ZWMgdW5pbnN0YWxsLWRhdGEKK3VuaW5zdGFsbC1leGVjOgordW5pbnN0YWxsLWRhdGE6IHVuaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCit1bmluc3RhbGwtZGF0YS1ubzoKK3VuaW5zdGFsbC1kYXRhLXllczoKKwljYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCisJZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCisJICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAorCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAorCSAgZm9yIGxjIGluIExDX01FU1NBR0VTICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCisJICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCisJICBkb25lOyBcCisJZG9uZQorCitjaGVjazogYWxsCisKK2luZm8gZHZpIHBzIHBkZiBodG1sIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBJRDoKKworbW9zdGx5Y2xlYW46CisJcm0gLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZCAKKwlybSAtZiBzdGFtcC1wb1QKKwlybSAtZiBjb3JlIGNvcmUuKiAkKERPTUFJTikucG8gJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICoubmV3LnBvCisJcm0gLWYgJChET01BSU4pLnBvLmJhaworCXJtIC1mciAqLm8KKworY292ZXJhZ2UudHh0OjoKKworY2xlYW46OiBtb3N0bHljbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMgKi5tbworCittYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KKwlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7IgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKKwlybSAtZiBzdGFtcC1wbyAkKEdNT0ZJTEVTKQorCitkaXN0ZGlyID0gJCh0b3BfYnVpbGRkaXIpLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKK2Rpc3QgZGlzdGRpcjoKKwkkKE1BS0UpIHVwZGF0ZS1wbworCUAkKE1BS0UpIGRpc3QyCisjIFRoaXMgaXMgYSBzZXBhcmF0ZSB0YXJnZXQgYmVjYXVzZSAndXBkYXRlLXBvJyBtdXN0IGJlIGV4ZWN1dGVkIGJlZm9yZS4KK2Rpc3QyOiAkKERJU1RGSUxFUykKKwlkaXN0cz0iJChESVNURklMRVMpIjsgXAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgIGRpc3RzPSIkJGRpc3RzIE1ha2V2YXJzLnRlbXBsYXRlIjsgXAorCWZpOyBcCisJaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nOyB0aGVuIFwKKwkgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZyI7IFwKKwlmaTsgXAorCWZvciBpIGluIDAgMSAyIDMgNCA1IDYgNyA4IDk7IGRvIFwKKwkgIGlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZy4kJGk7IHRoZW4gXAorCSAgICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2cuJCRpIjsgXAorCSAgZmk7IFwKKwlkb25lOyBcCisJaWYgdGVzdCAtZiAkKHNyY2RpcikvTElOR1VBUzsgdGhlbiBkaXN0cz0iJCRkaXN0cyBMSU5HVUFTIjsgZmk7IFwKKwlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCisJICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCisJICAgIGNwIC1wICQkZmlsZSAkKGRpc3RkaXIpOyBcCisJICBlbHNlIFwKKwkgICAgY3AgLXAgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpOyBcCisJICBmaTsgXAorCWRvbmUKKwordXBkYXRlLXBvOiBNYWtlZmlsZQorCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKKwl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKKwkkKE1BS0UpIHVwZGF0ZS1nbW8KKworIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgorCisubm9wLnBvLWNyZWF0ZToKKwlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAorCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCisJZXhpdCAxCisKKyMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby11cGRhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBQQVRIPWBwd2RgLy4uL3NyYzokJFBBVEg7IGZpOyBcCisJdG1wZGlyPWBwd2RgOyBcCisJZWNobyAiJCRsYW5nOiI7IFwKKwl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwllY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFKSAkJGxhbmcucG8gJChET01BSU4pLnBvdCAtbyAkJGxhbmcubmV3LnBvIjsgXAorCWNkICQoc3JjZGlyKTsgXAorCWlmICQoTVNHTUVSR0UpICQkbGFuZy5wbyAkKERPTUFJTikucG90IC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IHRoZW4gXAorCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwkgIGVsc2UgXAorCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCisJICAgICAgOjsgXAorCSAgICBlbHNlIFwKKwkgICAgICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKKwkgICAgICBleGl0IDE7IFwKKwkgICAgZmk7IFwKKwkgIGZpOyBcCisJZWxzZSBcCisJICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKKwkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwlmaQorCiskKERVTU1ZUE9GSUxFUyk6CisKK3VwZGF0ZS1nbW86IE1ha2VmaWxlICQoR01PRklMRVMpCisJQDoKKworTWFrZWZpbGU6IE1ha2VmaWxlLmluLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIEBQT01BS0VGSUxFREVQU0AKKwljZCAkKHRvcF9idWlsZGRpcikgXAorCSAgJiYgQ09ORklHX0ZJTEVTPSQoc3ViZGlyKS8kQC5pbiBDT05GSUdfSEVBREVSUz0gXAorCSAgICAgICAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKKworZm9yY2U6CisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9NYWtldmFycyBiL2UyZnNwcm9ncy9wby9NYWtldmFycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGQ5ZDMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL01ha2V2YXJzCkBAIC0wLDAgKzEsNDEgQEAKKyMgTWFrZWZpbGUgdmFyaWFibGVzIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisKKyMgVXN1YWxseSB0aGUgbWVzc2FnZSBkb21haW4gaXMgdGhlIHNhbWUgYXMgdGhlIHBhY2thZ2UgbmFtZS4KK0RPTUFJTiA9ICQoUEFDS0FHRSkKKworIyBUaGVzZSB0d28gdmFyaWFibGVzIGRlcGVuZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhpcyBkaXJlY3RvcnkuCitzdWJkaXIgPSBwbwordG9wX2J1aWxkZGlyID0gLi4KKworIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8geGdldHRleHQuCitYR0VUVEVYVF9PUFRJT05TID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fIC0ta2V5d29yZD1QXzoxLDIKKworIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCisjICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZworIyBwYWNrYWdlLiAgKE5vdGUgdGhhdCB0aGUgbXNnc3RyIHN0cmluZ3MsIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrYWdlJ3MKKyMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQorIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KKyMgb3IgZW50aXR5LCBvciB0byBkaXNjbGFpbSB0aGVpciBjb3B5cmlnaHQuICBUaGUgZW1wdHkgc3RyaW5nIHN0YW5kcyBmb3IKKyMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCisjIHRoZWlyIGNvcHlyaWdodC4KK0NPUFlSSUdIVF9IT0xERVIgPSBUaGVvZG9yZSBUcycnbworCisjIFRoaXMgaXMgdGhlIGVtYWlsIGFkZHJlc3Mgb3IgVVJMIHRvIHdoaWNoIHRoZSB0cmFuc2xhdG9ycyBzaGFsbCByZXBvcnQKKyMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6CisjIC0gU3RyaW5ncyB3aGljaCBhcmUgbm90IGVudGlyZSBzZW50ZW5jZXMsIHNlZSB0aGUgbWFpbnRhaW5lciBndWlkZWxpbmVzCisjICAgaW4gdGhlIEdOVSBnZXR0ZXh0IGRvY3VtZW50YXRpb24sIHNlY3Rpb24gJ1ByZXBhcmluZyBTdHJpbmdzJy4KKyMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCisjICAgdW5kZXJzdG9vZC4KKyMgLSBTdHJpbmdzIHdoaWNoIG1ha2UgaW52YWxpZCBhc3N1bXB0aW9ucyBhYm91dCBub3RhdGlvbiBvZiBkYXRlLCB0aW1lIG9yCisjICAgbW9uZXkuCisjIC0gUGx1cmFsaXNhdGlvbiBwcm9ibGVtcy4KKyMgLSBJbmNvcnJlY3QgRW5nbGlzaCBzcGVsbGluZy4KKyMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KKyMgSXQgY2FuIGJlIHlvdXIgZW1haWwgYWRkcmVzcywgb3IgYSBtYWlsaW5nIGxpc3QgYWRkcmVzcyB3aGVyZSB0cmFuc2xhdG9ycworIyBjYW4gd3JpdGUgdG8gd2l0aG91dCBiZWluZyBzdWJzY3JpYmVkLCBvciB0aGUgVVJMIG9mIGEgd2ViIHBhZ2UgdGhyb3VnaAorIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgorTVNHSURfQlVHU19BRERSRVNTID0gdHl0c29AYWx1bS5taXQuZWR1CisKKyMgVGhpcyBpcyB0aGUgbGlzdCBvZiBsb2NhbGUgY2F0ZWdvcmllcywgYmV5b25kIExDX01FU1NBR0VTLCBmb3Igd2hpY2ggdGhlCisjIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCitFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vUE9URklMRVMuaW4gYi9lMmZzcHJvZ3MvcG8vUE9URklMRVMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZiNGY0MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9QT1RGSUxFUy5pbgpAQCAtMCwwICsxLDcwIEBACitlMmZzY2svYmFkYmxvY2tzLmMKK2UyZnNjay9kaXJpbmZvLmMKK2UyZnNjay9keF9kaXJpbmZvLmMKK2UyZnNjay9lMmZzY2suYworZTJmc2NrL2VhX3JlZmNvdW50LmMKK2UyZnNjay9laGFuZGxlci5jCitlMmZzY2svZW1wdHlkaXIuYworZTJmc2NrL2V4dGVuZC5jCitlMmZzY2svZXh0ZW50cy5jCitlMmZzY2svZmx1c2hiLmMKK2UyZnNjay9pc2Nhbi5jCitlMmZzY2svam91cm5hbC5jCitlMmZzY2svbG9nZmlsZS5jCitlMmZzY2svbWVzc2FnZS5jCitlMmZzY2svbXRyYWNlLmMKK2UyZnNjay9wYXNzMWIuYworZTJmc2NrL3Bhc3MxLmMKK2UyZnNjay9wYXNzMi5jCitlMmZzY2svcGFzczMuYworZTJmc2NrL3Bhc3M0LmMKK2UyZnNjay9wYXNzNS5jCitlMmZzY2svcHJvYmxlbS5jCitlMmZzY2svcXVvdGEuYworZTJmc2NrL3JlYWRhaGVhZC5jCitlMmZzY2svcmVjb3ZlcnkuYworZTJmc2NrL3JlZ2lvbi5jCitlMmZzY2svcmVoYXNoLmMKK2UyZnNjay9yZXZva2UuYworZTJmc2NrL3NjYW50ZXN0LmMKK2UyZnNjay9zaWdjYXRjaGVyLmMKK2UyZnNjay9zdXBlci5jCitlMmZzY2svdW5peC5jCitlMmZzY2svdXRpbC5jCittaXNjL2JhZGJsb2Nrcy5jCittaXNjL2Jhc2VfZGV2aWNlLmMKK21pc2MvYmxraWQuYworbWlzYy9jaGF0dHIuYworbWlzYy9jcmVhdGVfaW5vZGUuYworbWlzYy9kdW1wZTJmcy5jCittaXNjL2UyZnJlZWZyYWcuYworbWlzYy9lMmZ1enouYworbWlzYy9lMmltYWdlLmMKK21pc2MvZTJpbml0cmRfaGVscGVyLmMKK21pc2MvZTJsYWJlbC5jCittaXNjL2UydW5kby5jCittaXNjL2U0Y3J5cHQuYworbWlzYy9lNGRlZnJhZy5jCittaXNjL2ZpbGVmcmFnLmMKK21pc2MvZmluZHN1cGVyLmMKK21pc2MvZnNjay5jCittaXNjL2Z1c2UyZnMuYworbWlzYy9pc21vdW50ZWQuYworbWlzYy9sb2dzYXZlLmMKK21pc2MvbHNhdHRyLmMKK21pc2MvbWtlMmZzLmMKK21pc2MvbWtfaHVnZWZpbGVzLmMKK21pc2MvbWtsb3N0K2ZvdW5kLmMKK21pc2MvcGFydGluZm8uYworbWlzYy90dW5lMmZzLmMKK21pc2MvdXRpbC5jCittaXNjL3V1aWRkLmMKK21pc2MvdXVpZGdlbi5jCityZXNpemUvZXh0ZW50LmMKK3Jlc2l6ZS9tYWluLmMKK3Jlc2l6ZS9vbmxpbmUuYworcmVzaXplL3Jlc2l6ZTJmcy5jCityZXNpemUvc2ltX3Byb2dyZXNzLmMKK2xpYi9leHQyZnMvZXh0Ml9lcnIuYworbGliL3N1cHBvcnQvcHJvZl9lcnIuYworbGliL3N1cHBvcnQvcGxhdXNpYmxlLmMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9SdWxlcy1xdW90IGIvZTJmc3Byb2dzL3BvL1J1bGVzLXF1b3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMyYTk5NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9SdWxlcy1xdW90CkBAIC0wLDAgKzEsNDcgQEAKKyMgU3BlY2lhbCBNYWtlZmlsZSBydWxlcyBmb3IgRW5nbGlzaCBtZXNzYWdlIGNhdGFsb2dzIHdpdGggcXVvdGF0aW9uIG1hcmtzLgorCitESVNURklMRVMuY29tbW9uLmV4dHJhMSA9IHF1b3Quc2VkIGJvbGRxdW90LnNlZCBlbkBxdW90LmhlYWRlciBlbkBib2xkcXVvdC5oZWFkZXIgaW5zZXJ0LWhlYWRlci5zaW4gUnVsZXMtcXVvdAorCisuU1VGRklYRVM6IC5pbnNlcnQtaGVhZGVyIC5wby11cGRhdGUtZW4KKworZW5AcXVvdC5wby1jcmVhdGU6CisJJChNQUtFKSBlbkBxdW90LnBvLXVwZGF0ZQorZW5AYm9sZHF1b3QucG8tY3JlYXRlOgorCSQoTUFLRSkgZW5AYm9sZHF1b3QucG8tdXBkYXRlCisKK2VuQHF1b3QucG8tdXBkYXRlOiBlbkBxdW90LnBvLXVwZGF0ZS1lbgorZW5AYm9sZHF1b3QucG8tdXBkYXRlOiBlbkBib2xkcXVvdC5wby11cGRhdGUtZW4KKworLmluc2VydC1oZWFkZXIucG8tdXBkYXRlLWVuOgorCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tdXBkYXRlLWVuJCQvLydgOyBcCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dCI7IHRoZW4gUEFUSD1gcHdkYC8uLi9zcmM6JCRQQVRIOyBHRVRURVhUTElCRElSPWBjZCAkKHRvcF9zcmNkaXIpL3NyYyAmJiBwd2RgOyBleHBvcnQgR0VUVEVYVExJQkRJUjsgZmk7IFwKKwl0bXBkaXI9YHB3ZGA7IFwKKwllY2hvICIkJGxhbmc6IjsgXAorCWxsPWBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy9ALiovLydgOyBcCisJTENfQUxMPUM7IGV4cG9ydCBMQ19BTEw7IFwKKwljZCAkKHNyY2Rpcik7IFwKKwlpZiAkKE1TR0lOSVQpIC1pICQoRE9NQUlOKS5wb3QgLS1uby10cmFuc2xhdG9yIC1sICQkbGwgLW8gLSAyPi9kZXYvbnVsbCB8IHNlZCAtZiAkJHRtcGRpci8kJGxhbmcuaW5zZXJ0LWhlYWRlciB8ICQoTVNHQ09OVikgLXQgVVRGLTggfCAkKE1TR0ZJTFRFUikgc2VkIC1mIGBlY2hvICQkbGFuZyB8IHNlZCAtZSAncy8uKkAvLydgLnNlZCAyPi9kZXYvbnVsbCA+ICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IHRoZW4gXAorCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwkgIGVsc2UgXAorCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCisJICAgICAgOjsgXAorCSAgICBlbHNlIFwKKwkgICAgICBlY2hvICJjcmVhdGlvbiBvZiAkJGxhbmcucG8gZmFpbGVkOiBjYW5ub3QgbW92ZSAkJHRtcGRpci8kJGxhbmcubmV3LnBvIHRvICQkbGFuZy5wbyIgMT4mMjsgXAorCSAgICAgIGV4aXQgMTsgXAorCSAgICBmaTsgXAorCSAgZmk7IFwKKwllbHNlIFwKKwkgIGVjaG8gImNyZWF0aW9uIG9mICQkbGFuZy5wbyBmYWlsZWQhIiAxPiYyOyBcCisJICBybSAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvOyBcCisJZmkKKworZW5AcXVvdC5pbnNlcnQtaGVhZGVyOiBpbnNlcnQtaGVhZGVyLnNpbgorCXNlZCAtZSAnL14jL2QnIC1lICdzL0hFQURFUi9lbkBxdW90LmhlYWRlci9nJyAkKHNyY2RpcikvaW5zZXJ0LWhlYWRlci5zaW4gPiBlbkBxdW90Lmluc2VydC1oZWFkZXIKKworZW5AYm9sZHF1b3QuaW5zZXJ0LWhlYWRlcjogaW5zZXJ0LWhlYWRlci5zaW4KKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9IRUFERVIvZW5AYm9sZHF1b3QuaGVhZGVyL2cnICQoc3JjZGlyKS9pbnNlcnQtaGVhZGVyLnNpbiA+IGVuQGJvbGRxdW90Lmluc2VydC1oZWFkZXIKKworbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLXF1b3QKK21vc3RseWNsZWFuLXF1b3Q6CisJcm0gLWYgKi5pbnNlcnQtaGVhZGVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vYXQtZXhwYW5kLnBsIGIvZTJmc3Byb2dzL3BvL2F0LWV4cGFuZC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzFhNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2F0LWV4cGFuZC5wbApAQCAtMCwwICsxLDE1MSBAQAorIyEvdXNyL2Jpbi9wZXJsCisKK215IEB0cmFuc2xhdG9yX2hlbHAgPSAoCisgIiMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSxcbiIsCisgIiMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsXG4iLAorICIjLiB0aGVyZSBpcyBhbiBcQC1leHBhbnNpb24sIHdoZXJlIHN0cmluZ3MgbGlrZSBcIlxAaVwiIGFyZSBleHBhbmRlZCB0b1xuIiwKKyAiIy4gXCJpbm9kZVwiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZVxuIiwKKyAiIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3dcbiIsCisgIiMuIHRoZSBcQC1leHBhbnNpb24sIGZvciB0aGUgc3RyaW5ncyBpbiB0aGUgcHJvYmxlbS5jIGZpbGUuXG4iLAorICIjLlxuIiwKKyAiIy4gVHJhbnNsYXRvcnMgYXJlIGZyZWUgdG8gdXNlIHRoZSBcQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzb1xuIiwKKyAiIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuXG4iLAorICIjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsXG4iLAorICIjLiBpZiBcImJibG9ja1wiICh3aGljaCBpbmRpY2F0ZWQgdGhhdCBcIlxAYlwiIHdvdWxkIGJlIGV4cGFuZGVkIHRvIFwiYmxvY2tcIilcbiIsCisgIiMuIGlzIHRyYW5zbGF0ZWQgYXMgXCJkZGF0ZW52ZXJsdXN0XCIsIHRoZW4gXCJcQGRcIiB3aWxsIGJlIGV4cGFuZGVkIHRvXG4iLAorICIjLiBcImRhdGVudmVybHVzdFwiLiAgQWx0ZXJuYXRpdmVseSwgdHJhbnNsYXRvcnMgY2FuIHNpbXBseSBub3QgdXNlIHRoZVxuIiwKKyAiIy4gXEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC5cbiIsCisgIiMuXG4iLAorICIjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXNcbiIsCisgIiMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzb1xuIiwKKyAiIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0XG4iLAorICIjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCBcIiVEXCIgYW5kIFwiJUlcIiBhcmUgdHdvLWNoYXJhY3RlclxuIiwKKyAiIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsIFwiJUl1XCIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkXG4iLAorICIjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSBcIiVCXCIgZXhwYW5zaW9uIGlzIHNwZWNpYWw6XG4iLAorICIjLiBpdCBjYW4gZXhwYW5kIHRvIGVpdGhlciB0aGUgc3RyaW5nIFwiaW5kaXJlY3QgYmxvY2tcIiAocG9zc2libHkgcHJlY2VkZWRcbiIsCisgIiMuIGJ5IHRoZSB3b3JkIFwiZG91YmxlXCIgb3IgXCJ0cmlwbGVcIiksIG9yIHRoZSBzdHJpbmcgXCJibG9jayAjXCIgaW1tZWRpYXRlbHlcbiIsCisgIiMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci5cbiIsCisgIiMuICBcbiIsCisgIiMuCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyXG4iLAorICIjLgklQglcImluZGlyZWN0IGJsb2NrXCIgfCBcImJsb2NrICNcIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXJcbiIsCisgIiMuCSVjCTxibGsyPgkJCWJsb2NrIG51bWJlclxuIiwKKyAiIy4JJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyXG4iLAorICIjLgklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmdcbiIsCisgIiMuCSVEcgk8ZGlyZW50PiAtPiByZWNfbGVuXG4iLAorICIjLgklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW5cbiIsCisgIiMuCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZVxuIiwKKyAiIy4JJWQJPGRpcj4gCQkJaW5vZGUgbnVtYmVyXG4iLAorICIjLgklZwk8Z3JvdXA+CQkJaW50ZWdlclxuIiwKKyAiIy4JJWkJPGlubz4JCQlpbm9kZSBudW1iZXJcbiIsCisgIiMuCSVJcwk8aW5vZGU+IC0+IGlfc2l6ZVxuIiwKKyAiIy4JJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZVxuIiwKKyAiIy4JJUliCTxpbm9kZT4gLT4gaV9ibG9ja3NcbiIsCisgIiMuCSVJbAk8aW5vZGU+IC0+IGlfbGlua3NfY291bnRcbiIsCisgIiMuCSVJbQk8aW5vZGU+IC0+IGlfbW9kZVxuIiwKKyAiIy4JJUlNCTxpbm9kZT4gLT4gaV9tdGltZVxuIiwKKyAiIy4JJUlGCTxpbm9kZT4gLT4gaV9mYWRkclxuIiwKKyAiIy4JJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbFxuIiwKKyAiIy4JJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsXG4iLAorICIjLgklSXUJPGlub2RlPiAtPiBpX3VpZFxuIiwKKyAiIy4JJUlnCTxpbm9kZT4gLT4gaV9naWRcbiIsCisgIiMuCSVJdAk8c3RyPgkJCWZpbGUgdHlwZVxuIiwKKyAiIy4JJWoJPGlubzI+CQkJaW5vZGUgbnVtYmVyXG4iLAorICIjLgklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPlxuIiwKKyAiIy4JJU4JPG51bT5cbiIsCisgIiMuCSVwCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPlxuIiwKKyAiIy4JJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhc1xuIiwKKyAiIy4JCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMXG4iLAorICIjLgkJCQl0aGVuIHJldHVybiB0aGUgcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8yPilcbiIsCisgIiMuCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPlxuIiwKKyAiIy4JJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXNcbiIsCisgIiMuCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS5cbiIsCisgIiMuCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmdcbiIsCisgIiMuCSVTCQliYWNrdXAgc3VwZXJibG9ja1xuIiwKKyAiIy4JJVgJPG51bT4JaGV4YWRlY2ltYWwgZm9ybWF0XG4iLAorICIjLlxuIik7CisKK215ICRpc19wcm9ibGVtX2ZpbGUgPSAwOworbXkgJHNhdmVfbXNnOworbXkgJG1zZ19hY2N1bSA9ICIiOworbXkgJG1zZzsKK215ICRleHBhbmRlZCA9IDA7CitteSAkbGluZXMgPSAwOworCitzdWIgZG9fZXhwYW5kIHsKKyAgICAkbXNnID1+IHMvXEBhL2V4dGVuZGVkIGF0dHJpYnV0ZS9nOworICAgICRtc2cgPX4gcy9cQEEvZXJyb3IgYWxsb2NhdGluZy9nOworICAgICRtc2cgPX4gcy9cQGIvYmxvY2svZzsKKyAgICAkbXNnID1+IHMvXEBCL2JpdG1hcC9nOworICAgICRtc2cgPX4gcy9cQGMvY29tcHJlc3MvZzsKKyAgICAkbXNnID1+IHMvXEBDL2NvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2svZzsKKyAgICAkbXNnID1+IHMvXEBpL2lub2RlL2c7CisgICAgJG1zZyA9fiBzL1xASS9pbGxlZ2FsL2c7CisgICAgJG1zZyA9fiBzL1xAai9qb3VybmFsL2c7CisgICAgJG1zZyA9fiBzL1xARC9kZWxldGVkL2c7CisgICAgJG1zZyA9fiBzL1xAZC9kaXJlY3RvcnkvZzsKKyAgICAkbXNnID1+IHMvXEBlL2VudHJ5L2c7CisgICAgJG1zZyA9fiBzL1xARS9lbnRyeSAnJURuJyBpbiAlcCAoJWkpL2c7CisgICAgJG1zZyA9fiBzL1xAZi9maWxlc3lzdGVtL2c7CisgICAgJG1zZyA9fiBzL1xARi9mb3IgaW5vZGUgJWkgKCVRKSBpcy9nOworICAgICRtc2cgPX4gcy9cQGcvZ3JvdXAvZzsKKyAgICAkbXNnID1+IHMvXEBoL0hUUkVFIGRpcmVjdG9yeSBpbm9kZS9nOworICAgICRtc2cgPX4gcy9cQGwvbG9zdCtmb3VuZC9nOworICAgICRtc2cgPX4gcy9cQEwvaXMgYSBsaW5rL2c7CisgICAgJG1zZyA9fiBzL1xAbS9tdWx0aXBseS1jbGFpbWVkL2c7CisgICAgJG1zZyA9fiBzL1xAbi9pbnZhbGlkL2c7CisgICAgJG1zZyA9fiBzL1xAby9vcnBoYW5lZC9nOworICAgICRtc2cgPX4gcy9cQHAvcHJvYmxlbSBpbi9nOworICAgICRtc2cgPX4gcy9cQHEvcXVvdGEvZzsKKyAgICAkbXNnID1+IHMvXEByL3Jvb3QgaW5vZGUvZzsKKyAgICAkbXNnID1+IHMvXEBzL3Nob3VsZCBiZS9nOworICAgICRtc2cgPX4gcy9cQFMvc3VwZXJibG9jay9nOworICAgICRtc2cgPX4gcy9cQHUvdW5hdHRhY2hlZC9nOworICAgICRtc2cgPX4gcy9cQHYvZGV2aWNlL2c7CisgICAgJG1zZyA9fiBzL1xAeC9leHRlbnQvZzsKKyAgICAkbXNnID1+IHMvXEB6L3plcm8tbGVuZ3RoL2c7CisgICAgJG1zZyA9fiBzL1xAXEAvQC9nOworfQorCisKK3doaWxlICg8PikgeworICAgICRsaW5lcysrOworICAgIGlmICgkbGluZXMgPT0gNikgeworCXByaW50IEB0cmFuc2xhdG9yX2hlbHA7CisgICAgfQorICAgIGlmICgvXiM6IC8pCisgICAgeworCSRpc19wcm9ibGVtX2ZpbGUgPSAoL14jOiBlMmZzY2tcL3Byb2JsZW0vKSA/IDEgOiAwOworICAgIH0KKyAgICAkbXNnID0gIiI7CisgICAgaWYgKC9ebXNnaWQgLyAmJiAkaXNfcHJvYmxlbV9maWxlKSB7CisJKCRtc2cpID0gL15tc2dpZCAiKC4qKSIkLzsKKwkkc2F2ZV9tc2dpZCA9ICRfOworCWlmICgkbXNnID1+IC9cQC8pIHsKKwkgICAgJGV4cGFuZGVkKys7CisJfQorCSZkb19leHBhbmQoKTsKKwlpZiAoJG1zZyBuZSAiIikgeworCSAgICAkbXNnX2FjY3VtID0gJG1zZ19hY2N1bSAuICIjLiBcQC1leHBhbmRlZDogJG1zZ1xuIjsKKwl9CisJbmV4dDsKKyAgICB9CisgICAgaWYgKC9eIi8gJiYgJGlzX3Byb2JsZW1fZmlsZSkgeworCSgkbXNnKSA9IC9eIiguKikiJC87CisJJHNhdmVfbXNnaWQgPSAkc2F2ZV9tc2dpZCAuICRfOworCWlmICgkbXNnID1+IC9cQC8pIHsKKwkgICAgJGV4cGFuZGVkKys7CisJfQorCSZkb19leHBhbmQoKTsKKwkkbXNnX2FjY3VtID0gJG1zZ19hY2N1bSAuICIjLiBcQC1leHBhbmRlZDogJG1zZ1xuIjsKKwluZXh0OworICAgIH0KKyAgICBpZiAoL15tc2dzdHIgLyAmJiAkaXNfcHJvYmxlbV9maWxlKSB7CisJaWYgKCRleHBhbmRlZCkgeworCSAgICBwcmludCAkbXNnX2FjY3VtOworCX0KKwlwcmludCAkc2F2ZV9tc2dpZDsKKwkkbXNnX2FjY3VtID0gIiI7CisJJGV4cGFuZGVkID0gMDsKKyAgICB9CisgICAgcHJpbnQgJF87Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vYm9sZHF1b3Quc2VkIGIvZTJmc3Byb2dzL3BvL2JvbGRxdW90LnNlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjkzN2FhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2JvbGRxdW90LnNlZApAQCAtMCwwICsxLDEwIEBACitzLyJcKFteIl0qXCkiL+KAnFwx4oCdL2cKK3MvYFwoW15gJ10qXCknL+KAmFwx4oCZL2cKK3MvICdcKFteYCddKlwpJyAvIOKAmFwx4oCZIC9nCitzLyAnXChbXmAnXSpcKSckLyDigJhcMeKAmS9nCitzL14nXChbXmAnXSpcKScgL+KAmFwx4oCZIC9nCitzL+KAnOKAnS8iIi9nCitzL+KAnC/igJwbWzFtL2cKK3Mv4oCdLxtbMG3igJ0vZworcy/igJgv4oCYG1sxbS9nCitzL+KAmS8bWzBt4oCZL2cKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9jYS5nbW8gYi9lMmZzcHJvZ3MvcG8vY2EuZ21vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MWJiNzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vY2EuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9jYS5wbyBiL2UyZnNwcm9ncy9wby9jYS5wbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDUyYmJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2NhLnBvCkBAIC0wLDAgKzEsODY2OCBAQAorIyBUcmFuc2xhdGlvbiBvZiBlMmZzcHJvZ3MtMS40Mi4xMiB0byBDYXRhbGFuLgorIyBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggVGhlb2RvcmUgVHNvIChtc2dpZHMpCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMgRGF2aWQgUGxhbmVsbGEgTW9sYXMgPGRhdmlkLnBsYW5lbGxhQGdtYWlsLmNvbT4sIDIwMDcsIDIwMDguCisjIMOAbmdlbCBNb21ww7MgPG1lY2F0eGlzQG1lY2F0eGlzLmNhdD4sIDIwMTQsIDIwMTUuCisjCisjLiBUaGUgc3RyaW5ncyBpbiBlMmZzY2sncyBwcm9ibGVtLmMgY2FuIGJlIHZlcnkgaGFyZCB0byB0cmFuc2xhdGUsCisjLiBzaW5jZSB0aGUgc3RyaW5ncyBhcmUgZXhwYW5kZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzLiAgRmlyc3Qgb2YgYWxsLAorIy4gdGhlcmUgaXMgYW4gQC1leHBhbnNpb24sIHdoZXJlIHN0cmluZ3MgbGlrZSAiQGkiIGFyZSBleHBhbmRlZCB0bworIy4gImlub2RlIiwgYW5kIHNvIG9uLiAgSW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLCB0aGUKKyMuIGUyZnNwcm9ncyBwbyB0ZW1wbGF0ZSBmaWxlIGhhcyBiZWVuIGVuaGFuY2VkIHdpdGggY29tbWVudHMgdGhhdCBzaG93CisjLiB0aGUgQC1leHBhbnNpb24sIGZvciB0aGUgc3RyaW5ncyBpbiB0aGUgcHJvYmxlbS5jIGZpbGUuCisjLgorIy4gVHJhbnNsYXRvcnMgYXJlIGZyZWUgdG8gdXNlIHRoZSBALWV4cGFuc2lvbiBmYWNpbGl0eSBpZiB0aGV5IHNvCisjLiBjaG9vc2UsIGJ5IHByb3ZpZGluZyB0cmFuc2xhdGlvbnMgZm9yIHN0cmluZ3MgaW4gZTJmc2NrL21lc3NhZ2UuYy4KKyMuIFRoZXNlIHRyYW5zbGF0aW9uIGNhbiBjb21wbGV0ZWx5IHJlcGxhY2UgYW4gZXhwYW5zaW9uOyBmb3IgZXhhbXBsZSwKKyMuIGlmICJiYmxvY2siICh3aGljaCBpbmRpY2F0ZWQgdGhhdCAiQGIiIHdvdWxkIGJlIGV4cGFuZGVkIHRvICJibG9jayIpCisjLiBpcyB0cmFuc2xhdGVkIGFzICJkZGF0ZW52ZXJsdXN0IiwgdGhlbiAiQGQiIHdpbGwgYmUgZXhwYW5kZWQgdG8KKyMuICJkYXRlbnZlcmx1c3QiLiAgQWx0ZXJuYXRpdmVseSwgdHJhbnNsYXRvcnMgY2FuIHNpbXBseSBub3QgdXNlIHRoZQorIy4gQC1leHBhbnNpb24gZmFjaWxpdHkgYXQgYWxsLgorIy4KKyMuIFRoZSBzZWNvbmQgZXhwYW5zaW9uIHdoaWNoIGlzIGRvbmUgZm9yIGUyZnNjaydzIHByb2JsZW0uYyBtZXNzYWdlcyBpcworIy4gYSBkeW5hbWljICUtZXhwYW5zaW9uLCB3aGljaCBleHBhbmRzICVpIGFzIGFuIGlub2RlIG51bWJlciwgYW5kIHNvCisjLiBvbi4gIEEgdGFibGUgb2YgdGhlc2UgZXhwYW5zaW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuICBOb3RlIHRoYXQKKyMuICUtZXhwcmVzc2lvbnMgdGhhdCBiZWdpbiB3aXRoICIlRCIgYW5kICIlSSIgYXJlIHR3by1jaGFyYWN0ZXIKKyMuIGV4cGFuc2lvbnM7IHNvIGZvciBleGFtcGxlLCAiJUl1IiBleHBhbmRzIHRvIHRoZSBpbm9kZSdzIHVzZXIgaWQKKyMuIG93bmVyc2hpcCBmaWVsZCAoaW5vZGUtPmlfdWlkKS4gIEFsc28gdGhlICIlQiIgZXhwYW5zaW9uIGlzIHNwZWNpYWw6CisjLiBpdCBjYW4gZXhwYW5kIHRvIGVpdGhlciB0aGUgc3RyaW5nICJpbmRpcmVjdCBibG9jayIgKHBvc3NpYmx5IHByZWNlZGVkCisjLiBieSB0aGUgd29yZCAiZG91YmxlIiBvciAidHJpcGxlIiksIG9yIHRoZSBzdHJpbmcgImJsb2NrICMiIGltbWVkaWF0ZWx5CisjLiBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyIGluZGljYXRpbmcgYSBibG9jayBzZXF1ZW5jZSBudW1iZXIuCisjLiAgCisjLiAJJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyMuIAklQgkiaW5kaXJlY3QgYmxvY2siIHwgImJsb2NrICMiPGJsa2NvdW50PglzdHJpbmcgfCBzdHJpbmcraW50ZWdlcgorIy4gCSVjCTxibGsyPgkJCWJsb2NrIG51bWJlcgorIy4gCSVEaQk8ZGlyZW50PiAtPiBpbm8JCWlub2RlIG51bWJlcgorIy4gCSVEbgk8ZGlyZW50PiAtPiBuYW1lCXN0cmluZworIy4gCSVEcgk8ZGlyZW50PiAtPiByZWNfbGVuCisjLiAJJURsCTxkaXJlbnQ+IC0+IG5hbWVfbGVuCisjLiAJJUR0CTxkaXJlbnQ+IC0+IGZpbGV0eXBlCisjLiAJJWQJPGRpcj4gCQkJaW5vZGUgbnVtYmVyCisjLiAJJWcJPGdyb3VwPgkJCWludGVnZXIKKyMuIAklaQk8aW5vPgkJCWlub2RlIG51bWJlcgorIy4gCSVJcwk8aW5vZGU+IC0+IGlfc2l6ZQorIy4gCSVJUwk8aW5vZGU+IC0+IGlfZXh0cmFfaXNpemUKKyMuIAklSWIJPGlub2RlPiAtPiBpX2Jsb2NrcworIy4gCSVJbAk8aW5vZGU+IC0+IGlfbGlua3NfY291bnQKKyMuIAklSW0JPGlub2RlPiAtPiBpX21vZGUKKyMuIAklSU0JPGlub2RlPiAtPiBpX210aW1lCisjLiAJJUlGCTxpbm9kZT4gLT4gaV9mYWRkcgorIy4gCSVJZgk8aW5vZGU+IC0+IGlfZmlsZV9hY2wKKyMuIAklSWQJPGlub2RlPiAtPiBpX2Rpcl9hY2wKKyMuIAklSXUJPGlub2RlPiAtPiBpX3VpZAorIy4gCSVJZwk8aW5vZGU+IC0+IGlfZ2lkCisjLiAJJUl0CTxzdHI+CQkJZmlsZSB0eXBlCisjLiAJJWoJPGlubzI+CQkJaW5vZGUgbnVtYmVyCisjLiAJJW0JPGNvbV9lcnIgZXJyb3IgbWVzc2FnZT4KKyMuIAklTgk8bnVtPgorIy4gCSVwCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPgorIy4gCSVQCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIDxkaXJlbnQ+LT5pbm8gd2l0aCA8aW5vMj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuICAoSWYgZGlyZW50IGlzIE5VTEwKKyMuIAkJCQl0aGVuIHJldHVybiB0aGUgcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8yPikKKyMuIAklcQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGRpcj4KKyMuIAklUQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4gd2l0aCA8ZGlyPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4KKyMuIAklcwk8c3RyPgkJCW1pc2NlbGxhbmVvdXMgc3RyaW5nCisjLiAJJVMJCWJhY2t1cCBzdXBlcmJsb2NrCisjLiAJJVgJPG51bT4JaGV4YWRlY2ltYWwgZm9ybWF0CisjLgorbXNnaWQgIiIKK21zZ3N0ciAiIgorIlByb2plY3QtSWQtVmVyc2lvbjogZTJmc3Byb2dzIDEuNDIuMTItcHJlMlxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0wNy0yNiAxMTo0MiswMTAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBBbmdlbCBNb21wbyA8bWVjYXR4aXNAbWVjYXR4aXMuY2F0PlxuIgorIkxhbmd1YWdlLVRlYW06IENhdGFsYW4gPGNhQGRvZGRzLm5ldD5cbiIKKyJMYW5ndWFnZTogY2FcbiIKKyJNSU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyJYLVBvZWRpdC1Cb29rbWFya3M6IDQzNCwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMSwtMVxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgorIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS43LjVcbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjIzIG1pc2MvbWtlMmZzLmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9jayAldSBvdXQgb2YgcmFuZ2U7IGlnbm9yZWQuXG4iCittc2dzdHIgIkJsb2MgZXJyb25pICV1IGZvcmEgZGVscyBsw61taXRzOyBzJ2lnbm9yYXLDoC5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJlbiBjb21wcm92YXIgbCdlc3RhdCBkZWwgbm9kZS1pIGRlIGJsb2NzIGVycm9uaXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgImVuIGxsZWdpciBlbCBub2RlLWkgZGUgYmxvY3MgZXJyb25pcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjcyIGUyZnNjay9zY2FudGVzdC5jOjEwNyBlMmZzY2svdW5peC5jOjE1MDgKKyM6IGUyZnNjay91bml4LmM6MTYwMSBtaXNjL2JhZGJsb2Nrcy5jOjEyNDIgbWlzYy9iYWRibG9ja3MuYzoxMjUwCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyNjQgbWlzYy9iYWRibG9ja3MuYzoxMjc2IG1pc2MvZHVtcGUyZnMuYzo2ODkKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDAgbWlzYy9lMmltYWdlLmM6MTU4NCBtaXNjL2UyaW1hZ2UuYzoxNjA1CisjOiBtaXNjL21rZTJmcy5jOjIzMCBtaXNjL3R1bmUyZnMuYzoyNjkzIG1pc2MvdHVuZTJmcy5jOjI3ODcgcmVzaXplL21haW4uYzo0MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiCittc2dzdHIgImVuIGludGVudGFyIG9icmlyICVzIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgImVuIGludGVudGFyIHBvcGVuIGVuIMKrJXPCuyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjk0IG1pc2MvbWtlMmZzLmM6MjM3Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbiBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBmaWxlIgorbXNnc3RyICJlbiBsbGVnaXIgbGEgbGxpc3RhIGRlIGJsb2NzIGVycm9uaXMgZGVsIGZpdHhlciIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiZW4gYWN0dWFsaXR6YXIgZWwgbm9kZS1pIGRlIGJsb2NrIGVycm9uaXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisiQXbDrXM6IHMnaGEgdHJvYmF0IGVsIGJsb2Mgbm8gdsOgbGlkICV1IGVuIGVsIG5vZGUtaSBkZSBibG9jcyBlcnJvbmlzLiAgUydoYSAiCisiZXNib3JyYXQuXG4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gbGxlZ2lyIGVsIGJsb2MgJWx1ICglcykgbWVudHJlICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGxsZWdpciBlbCBibG9jICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NiBlMmZzY2svZWhhbmRsZXIuYzoxMTUKK21zZ2lkICJJZ25vcmUgZXJyb3IiCittc2dzdHIgIklnbm9yYSBsJ2Vycm9yIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIkZvcsOnYSBsYSByZXNjcmlwdHVyYSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZXNjcml1cmUgZWwgYmxvYyAlbHUgKCVzKSBtZW50cmUgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGVzY3JpdXJlIGVsIGJsb2MgJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICJibG9jcyBkZSBkaXJlY3RvcmkgYnVpdHMiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBkaXJlY3RvcmkgYnVpdCIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIkVsIGJsb2MgZGUgZGlyZWN0b3JpICV1ICgjJWQpIGVuIGVsIG5vZGUtaSAldSDDqXMgYnVpdFxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzOiAlcyBmaXR4ZXIgbmJsb2NzIG1pZGFkZWxibG9jXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIk5vbWJyZSBkZSBibG9jcyBubyB2w6BsaWRcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciAoc2l6ZT0lZClcbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBlbCBibG9jIGRlIG1lbW9yaWEgaW50ZXJtw6hkaWEgKG1pZGE9JWQpXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKKyMsIGZ1enp5Cittc2dpZCAiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIGRlIG5vZGVzLWkgZGUgZml0eGVycyBub3JtYWxzIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiRm9ybWEgZCfDunM6ICVzIGRpc2NcbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiIgorIkwnaW9jdGwgQkxLRkxTQlVGIG5vIGVzdMOgIGltcGxlbWVudGF0LiAgTm8gZXMgcG9kZW4gYnVpZGFyIGxlcyBtZW3DsnJpZXMgIgorImludGVybcOoZGllcy5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICJGb3JtYSBkJ8O6czogJXMgWy1GXSBbLUkgYmxvY3NfZGVfbWVtX2ludF9kZWxfbm9kZV9pXSBkaXNwb3NpdGl1XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAiZW4gb2JyaXIgJXMgcGVyIGEgYnVpZGFyLWxvIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICJlbiBpbnRlbnRhciBidWlkYXIgJXMiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJlbiBpbnRlbnRhciBvYnJpciDCqyVzwrsiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiZW4gb2JyaXIgbCdlc2NhbmVpZyBkZSBub2Rlcy1pIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAiZW4gb2J0ZW5pciBlbCBub2RlLWkgc2Vnw7xlbnQiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiJXUgbm9kZXMtaSBlc2NhbmVqYXRzLlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjU5MworbXNnaWQgInJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgInMnZXN0w6AgbGxlZ2ludCBlbCBzdXBlcmJsb2MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9uc1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogbm8gdmFsaWQgam91cm5hbCBzdXBlcmJsb2NrIGZvdW5kXG4iCittc2dzdHIgIiVzOiBubyBzJ2hhIHRyb2JhdCBjYXAgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMgdsOgbGlkXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIMOpcyBtYXNzYSBjdXJ0XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTY4IG1pc2MvZnVzZTJmcy5jOjM3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIgorbXNnc3RyICIlczogcmVjdXBlcmFjacOzIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnNcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiIKKyIlczogbm8gZXMgcmVjdXBlcmFyw6AgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIG1lbnRyZSBzaWd1aSBkZSBub23DqXMgIgorImxlY3R1cmFcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiCittc2dzdHIgImVuIGludGVudGFyIHRvcm5hciBhIG9icmlyICVzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImFhdHJpYnV0IGFtcGxpYXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFlcnJvciBlbiBsJ2Fzc2lnbmFjacOzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2MiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQm1hcGEgZGUgYml0cyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgImNjb21wcmVzc2nDsyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ2VudHJhIGVuIGNvbmZsaWN0ZSBhbWIgYWxndW4gYWx0cmUgQGIgZGVsIHNpc3RlbWEgZGUgZml0eGVycyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkZGlyZWN0b3JpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEc3VwcmltaXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIxCittc2dpZCAiZWVudHJ5IgorbXNnc3RyICJlZW50cmFkYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjIKK21zZ2lkICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKK21zZ3N0ciAiRUBlIMKrJURuwrsgYSAlcCAoJWkpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMworbXNnaWQgImZmaWxlc3lzdGVtIgorbXNnc3RyICJmc2lzdGVtYSBkZSBmaXR4ZXJzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRnBlciBhIGwnQGkgJWkgKCVRKSDDqXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnZ3J1cCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjYKK21zZ2lkICJoSFRSRUUgQGQgQGkiCittc2dzdHIgImhAaSBkZWwgQGQgSFRSRUUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpbm9kZS1pIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOAorbXNnaWQgIklpbGxlZ2FsIgorbXNnc3RyICJJaWzCt2xlZ2FsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOQorbXNnaWQgImpqb3VybmFsIgorbXNnc3RyICJqcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMAorbXNnaWQgImxsb3N0K2ZvdW5kIgorbXNnc3RyICJsbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICJMw6lzIHVuIGVubGxhw6ciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCittc2dpZCAibW11bHRpcGx5LWNsYWltZWQiCittc2dzdHIgIm1yZWNsYW1hdCBtw7psdGlwbGVtZW50IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICJubm8gdsOgbGlkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNAorbXNnaWQgIm9vcnBoYW5lZCIKK21zZ3N0ciAib29yZmUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM1Cittc2dpZCAicHByb2JsZW0gaW4iCittc2dzdHIgInBwcm9ibGVtYSBlbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFsw61taXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgInJAaSBhcnJlbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJzaGF1cmlhIGRlIHNlciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAiU3N1cGVyQGIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInVkZXNhY29ibGF0KHMpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgInZkaXNwb3NpdGl1IgorCisjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXh0ZW50XyhmaWxlX3N5c3RlbXMpLiBIaSBoYSBsYSB1YmljYWNpw7MgYmFzYWRhIGVuIGJsb2NzIGkgbGEgdWJpY2FjacOzIGJhc2FkYSBlbiDCq2V4dGVudHPCuyAoZHBtKS4KKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieGV4dGVudCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgInptaWRhIHplcm8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU0Cittc2dpZCAiPFRoZSBOVUxMIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZGUtaSBOVUxMPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8RWwgbm9kZS1pIGRlIGJsb2NzIGVycm9uaXM+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NworbXNnaWQgIjxUaGUgdXNlciBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxMYSBxdW90YSBkZSBub2RlLWkgcGVyIGwndXN1YXJpPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPExhIHF1b3RhIGRlIG5vZGUtaSBwZXIgYWwgZ3J1cD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxFbCBub2RlLWkgZGVsIGNhcnJlZ2Fkb3I+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZGUtaSBkZWwgZGlyZWN0b3JpIGRlIGRlc2ZlciBsZXMgc3VwcmVzc2lvbnM+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIjxFbCBub2RlLWkgZGVsIGRlc2NyaXB0b3IgZGUgZ3J1cD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZGUtaSBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjxOb2RlLWkgcmVzZXJ2YXQgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPE5vZGUtaSByZXNlcnZhdCAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJmaXR4ZXIgbm9ybWFsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAiZGlyZWN0b3JpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNworbXNnaWQgImNoYXJhY3RlciBkZXZpY2UiCittc2dzdHIgImRpc3Bvc2l0aXUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJkaXNwb3NpdGl1IGQnYWNjw6lzIHBlciBibG9jIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgImNvbmR1Y3RlIGFtYiBub20iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAiZW5sbGHDpyBzaW1iw7JsaWMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ1IG1pc2MvdXVpZGQuYzoxNjIKK21zZ2lkICJzb2NrZXQiCittc2dzdHIgInPDsmNvbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAidGlwcyBkZSBmaXR4ZXIgZGVzY29uZWd1dCBhbWIgbW9kZSAwJW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb2MgaW5kaXJlY3RlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvYyBpbmRpcmVjdGUgZG9ibGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJibG9jIGluZGlyZWN0ZSB0cmlwbGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAiYmxvYyBkZWwgdHJhZHVjdG9yIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJsb2MgIyIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIGRlIG5vZGVzLWkgcmVjbGFtYXQgbcO6bHRpcGxlbWVudCIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAiZXJyb3IgaW50ZXJuOiBubyBzJ2hhIHRyb2JhdCBkdXBfYmxrIHBlciBhICVsbHVcbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkwMworbXNnaWQgInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIKK21zZ3N0ciAicydoYSB0b3JuYXQgZGUgbGEgZnVuY2nDsyBjbG9uZV9maWxlX2Jsb2NrIgorCisjIEZJWE1FIChkcG0pCisjOiBlMmZzY2svcGFzczFiLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgYmxvY2sgcmVjb3JkIGZvciAlbGx1IgorbXNnc3RyICIiCisiZXJyb3IgaW50ZXJuOiBubyBzJ2hhIHBvZ3V0IGNlcmNhciBlbCByZWdpc3RyZSBkZSBibG9jIGQnYXRyaWJ1dHMgYW1wbGlhdHMgIgorIihFQSkgcGVyIGEgJWxsdSIKKworIyBGSVhNRSAoZHBtKQorIzogZTJmc2NrL3Bhc3MxYi5jOjkzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGlub2RlIHJlY29yZCBmb3IgJXUiCittc2dzdHIgIiIKKyJlcnJvciBpbnRlcm46IG5vIHMnaGEgcG9ndXQgY2VyY2FyIGVsIHJlZ2lzdHJlIGRlIG5vZGUtaSBkJ2F0cmlidXRzIGFtcGxpYXRzICIKKyIoRUEpIHBlciBhICV1IgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgInMnZXN0w6AgbGxlZ2ludCBlbCBibG9jIGRlIGRpcmVjdG9yaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kZXMtaSBlbiDDunMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMjIKK21zZ2lkICJkaXJlY3RvcnkgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIGRlIG5vZGVzLWkgZGUgZGlyZWN0b3JpcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kZXMtaSBkZSBmaXR4ZXJzIG5vcm1hbHMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgIm1hcGEgZGUgYmxvY3MgZW4gw7pzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCisjLCBmdXp6eQorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiYmxvY3MgZGUgbWV0YWRhZGVzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJzJ2VzdMOgIG9icmluZyBsJ2VzY2FuZWlnIGRlIG5vZGVzLWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJzJ2VzdMOgIG9idGVuaW50IGVsIG5vZGUtaSBzZWfDvGVudCBkZSBsJ2VzY2FuZWlnIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICJQYXMgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAicydlc3RhbiBsbGVnaW50IGVscyBibG9jcyBpbmRpcmVjdGVzIGRlbCBub2RlLWkgJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIGRlIG5vZGVzLWkgbWFsbWVzb3MiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJub2RlLWkgZW4gZWwgbWFwYSBkZSBub2Rlcy1pIG1hbG1lc29zIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBub2Rlcy1pIGltYWdpYyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIGRlIGJsb2NzIHJlY2xhbWF0IG3DqXMgZCd1biBjb3AiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIyNDUKK21zZ2lkICJleHQgYXR0ciBibG9jayBtYXAiCittc2dzdHIgIm1hcGEgZGUgYmxvY3MgZCdhdHJpYnV0cyBlc3Rlc29zIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IHMnZXNwZXJhdmEgJTZsdSBpIHMnaGEgb2J0aW5ndXQgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAibWFwYSBkZSBiaXRzIGRlIGJsb2NzIgorCisjOiBlMmZzY2svcGFzczEuYzozODMzCittc2dpZCAiaW5vZGUgYml0bWFwIgorbXNnc3RyICJtYXBhIGRlIGJpdHMgZCdpLW5vZGVzIgorCisjOiBlMmZzY2svcGFzczEuYzozODM5Cittc2dpZCAiaW5vZGUgdGFibGUiCittc2dzdHIgInRhdWxhIGQnaW5vZGVzIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlBhcyAyIgorCisjOiBlMmZzY2svcGFzczIuYzoxMDQyIGUyZnNjay9wYXNzMi5jOjEyMDcKK21zZ2lkICJDYW4gbm90IGNvbnRpbnVlLiIKK21zZ3N0ciAiTm8gZXMgcG90IGNvbnRpbnVhci4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgIm1hcGEgZGUgYml0cyBkZSBub2Rlcy1pIGNyZWF0cyIKKworIyBGSVhNRTogwqtNZW3DsnJpYSBtw6B4aW1hwrs/IChkcG0pCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICJQaWMgZGUgbWVtw7JyaWEiCisKKyM6IGUyZnNjay9wYXNzMy5jOjE0OQorbXNnaWQgIlBhc3MgMyIKK21zZ3N0ciAiUGFzIDMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorbXNnaWQgImlub2RlIGxvb3AgZGV0ZWN0aW9uIGJpdG1hcCIKK21zZ3N0ciAibWFwYSBkZSBiaXRzIGRlIGxhIGRldGVjY2nDsyBkZSBub2Rlcy1pIGRlIGJ1Y2xlIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIlBhcyA0IgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiUGFzIDUiCisKKyM6IGUyZnNjay9wYXNzNS5jOjEwNAorbXNnaWQgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTU4Cittc2dpZCAiY2hlY2tfYmxvY2tfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIihzZW5zZSBwcmVndW50YSkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIkFycmVnbGEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMKK21zZ2lkICJDbGVhciIKK21zZ3N0ciAiRXNib3JyYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJSZXViaWNhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIkFzc2lnbmEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIkV4cGFuZGVpeCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIkNvbm5lY3RhIGFtYiAvbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OAorbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAiQ3JlYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIlNhbHZhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIlRydW5jYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICJFc2JvcnJhIGVsIG5vZGUtaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICJJbnRlcnJvbXAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiRGl2aWRlaXgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAiQ29udGludWEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAiQ2xvbmEgZWxzIGJsb2NzIHJlY2xhbWF0cyBtw7psdGlwbGVtZW50IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2Cittc2dpZCAiRGVsZXRlIGZpbGUiCittc2dzdHIgIlN1cHJpbWVpeCBlbCBmaXR4ZXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAiU3VwcmltZWl4IGVscyBtaXNzYXRnZXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIkRlc2bDqXMgbCdlbmxsYcOnIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIkVzYm9ycmEgbCfDrW5kZXggSFRyZWUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiVG9ybmEgYSBjcmVhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKENBUCkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAiQVJSRUdMQVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICJFU0JPUlJBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAiUkVVQklDQVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkFTU0lHTkFUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0Cittc2dpZCAiRVhQQU5ERUQiCittc2dzdHIgIkVYUEFORElUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIlJFQ09OTkVDVEFUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2Cittc2dpZCAiQ1JFQVRFRCIKK21zZ3N0ciAiQ1JFQVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAiU0FMVkFUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICJUUlVOQ0FUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiTk9ERS1JIEVTQk9SUkFUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwCittc2dpZCAiQUJPUlRFRCIKK21zZ3N0ciAiSU5URVJST01QVVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiRElWSURJVCIKKworIyBGSVhNRQorIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIkNPTlRJTlVBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiQ0xPTkFUUyBFTFMgQkxPQ1MgUkVDTEFNQVRTIE3DmkxUSVBMRU1FTlQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkZJVFhFUiBTVVBSSU1JVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgIlNVUFJJTUlUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIkVOTExBw4cgREVTRkVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3Cittc2dpZCAiSFRSRUUgSU5ERVggQ0xFQVJFRCIKK21zZ3N0ciAiw41OREVYIEhUUkVFIEVTQk9SUkFUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiRVMgVE9STkFSw4AgQSBDUkVBUiIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiRWwgQGIgQEIgcGVyIGFsIEBnICVnIG5vIMOpcyBhIEBnLiAgKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJFbCBAaSBAQiBwZXIgYWwgQGcgJWcgbm8gw6lzIGEgQGcuICAoQGIgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIkxhIHRhdWxhIGRlIG5vZGVzLWkgcGVyIGFsIEBnICVnIG5vIMOpcyBhbCBAZy4gKEBiICViKVxuIgorIkFWw41TOiBQT1NTSUJMRSBQw4hSRFVBIERFIERBREVTIEdSRVUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5vIHMnaGEgcG9ndXQgbGxlZ2lyIGVsIEBTLCBvIGLDqSBubyBkZXNjcml1IHVuIEBmXG4iCisiZXh0Mi9leHQzL2V4dDQgY29ycmVjdGUuIFNpIGVsIEB2IMOpcyB2w6BsaWQgaSByZWFsbWVudCBjb250w6kgdW4gQGZcbiIKKyJleHQyL2V4dDMvZXh0NCAoaSBubyBwYXMgZCdpbnRlcmNhbnZpLCB1ZnMgbyBhbGd1biBhbHRyZSksIGxsYXZvcnMgZWwgQFNcbiIKKyJlc3TDoCBtYWxtw6hzLCBwZXIgbGEgcXVhbCBjb3NhIHBvZGV1IHByb3ZhciBkJ2V4ZWN1dGFyIGwnZTJmc2NrIGFtYlxuIgorInVuIEBTIGFsdGVybmF0aXU6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb1xuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyJMYSBtaWRhIGRlbCBAZiAoc2Vnb25zIGVsIEBTKSDDqXMgZGUgJWIgQGJzXG4iCisiTGEgbWlkYSBmw61zaWNhIGRlbCBAdiDDqXMgZGUgJWMgQGJzXG4iCisiU2VndXJhbWVudCBlbCBAUyBvIGLDqSBsYSB0YXVsYSBkZSBwYXJ0aWNpb25zIGVzdGFuIG1hbG1lc29zLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbgorIy4gQC1leHBhbmRlZDogVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuCisjLiBALWV4cGFuZGVkOiBmcm9tIHRoZSBibG9jayBzaXplLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKyJtaWRhX2RlbF9AYiBkZWwgQFMgPSAlYiwgbWlkYSBkZWxzIGZyYWdtZW50cyA9ICVjLlxuIgorIkFxdWVzdGEgdmVyc2nDsyBkZSBsJ2UyZnNjayBubyBmdW5jaW9uYSBhbWIgbWlkZXMgZGUgZnJhZ21lbnQgcXVlIG5vXG4iCisiY29pbmNpZGVpeGVuIGFtYiBsYSBtaWRhIGRlbCBAYi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja3NfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiQGJzX3Blcl9ncnVwIGRlbCBAUyA9ICViLCBoYXVyaWEgZCdoYXZlciBlc3RhdCAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJwcmltZXJfQGJfZGVfZGFkZXMgZGVsIEBTID0gJWIsIGhhdXJpYSBkJ2hhdmVyIGVzdGF0ICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiRWwgQGYgbm8gdMOpIGNhcCBVVUlEOyBzZSBsaSduIGdlbmVyYXLDoCB1bi5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJOb3RhOiBzaSBkaXZlcnNvcyBibG9jcyBkZSBtYXBlcyBkZSBiaXRzIGRlIG5vZGVzLWkgbyBibG9jcyBvXG4iCisicGFydHMgZGUgdGF1bGVzIGRlIG5vZGVzLWkgbmVjZXNzaXRlbiB1bmEgcmV1YmljYWNpw7MsIHBvZGV1IFxuIgorInByb3ZhciBwcmltZXIgbCdlMmZzY2sgYW1iIGwnb3BjacOzIMKrLWIgJVPCuy4gRWwgcHJvYmxlbWEgcG90IHNlclxuIgorIm5vbcOpcyBhbWIgZWxzIGRlc2NyaXB0b3JzIGRlIGdydXBzIGRlIGJsb2NzIHByaW1hcmlzLCBpIGVsc1xuIgorImRlc2NyaXB0b3JzIGRlIGdydXBzIGRlIGJsb2NzIGRlIGPDsnBpYSBkZSBzZWd1cmV0YXQgcG90c2VyIGVzdGFuIGLDqS5cbiIKKworIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorbXNnaWQgIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iCittc2dzdHIgIkVsIEBTIGVzdMOgIG1hbG3DqHMuICglcyA9ICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgZGV2aWNlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBAdjogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBkZXRlcm1pbmFyIGxhIG1pZGEgZGVsIEB2IGbDrXNpYzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgY291bnQgaW4gc3VwZXJibG9jayBpcyAlaSwgc2hvdWxkIGJlICVqLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NAorbXNnaWQgIkBpIGNvdW50IGluIEBTIGlzICVpLCBAcyAlai5cbiIKK21zZ3N0ciAiRWwgbm9tYnJlIGRlIG5vZGVzLWkgZW4gZWwgQFMgw6lzICVpIChAcyAlaikuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiRWwgSHVyZCBubyDDqXMgY29tcGF0aWJsZSBhbWIgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIHRpcHVzIGRlIGZpdHhlci5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICJFbCBAUyB0w6kgdW4gQGogQG4gKEBpICVpKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbSB1c2VycyAodW5zdXBwb3J0ZWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBtdWx0aXBsZSBAZiB1c2VycyAodW5zdXBwb3J0ZWQpLlxuIgorbXNnc3RyICJFbCBAaiBleHRlcm4gdMOpIG3Dumx0aXBsZXMgdXN1YXJpcyBkZWwgQGYgKG5vIGNvbXBhdGlibGUpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIk5vIHMnaGEgdHJvYmF0IGVsIEBqIGV4dGVyblxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiRWwgQGogZXh0ZXJuIHTDqSB1biBAUyBtYWxtw6hzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRWwgQGogZXh0ZXJuIG5vIMOpcyBjb21wYXRpYmxlIGFtYiBhcXVlc3QgQGZcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorImVsIEBTIGRlbCBAZiBAaiDDqXMgZGVsIHRpcHVzICVOIG5vIGNvbmVndXQgKG5vIGltcGxlbWVudGF0KS5cbiIKKyJQb3NzaWJsZW1lbnQgbGEgdmVyc2nDsyBkZSBlMmZzY2sgYW50aWdhIGkvbyBxdWUgbm8gdGluZ3VpIGltcGxlbWVudGF0IGFxdWVzdCAiCisiZm9ybWF0IGRlIEBqLlxuIgorIlRhbWLDqSBwb3Qgc2VyIHF1ZSBlbCBAUyBAaiBlc3RpZ3VpIG1hbG3DqHMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNgorbXNnaWQgIkBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIkVsIEBTIGRlbCBAaiBlc3TDoCBtYWxtw6hzLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiRWwgc2VueWFsYWRvciBoYXNfQGogZGVsIEBTIGVzdMOgIGJ1aXQsIHBlcsOyIGVsIEBqIHTDqSBkYWRlcy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKyJFbCBAUyB0w6kgZWwgc2VueWFsYWRvciDCq25lZWRzX3JlY292ZXJ5wrsgKHJlY3VwZXJhY2nDs19uZWNlc3PDoHJpYSkgYWN0aXZhdCwgIgorInBlcsOyIG5vIHTDqSBjYXAgQGouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICJFbCBzZW55YWxhZG9yIGRlIHJlY3VwZXJhY2nDsyBAUyBlc3TDoCBidWl0LCBwZXLDsiBlbCBAaiB0w6kgZGFkZXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIkVzYm9ycmEgZWwgQGoiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiIgorIkVsIEBmIHTDqSBlbHMgc2VueWFsYWRvcnMgZGUgY2FyYWN0ZXLDrXN0aWNhIChmZWF0dXJlKSBhY3RpdmF0LCBwZXLDsiDDqXMgdW4gQGYgIgorImRlIHZlcnNpw7MgMC4gICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyBAaSBAbyAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIG1pZGE9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiUydoYSB0cm9iYXQgJUIgQEkgKCViKSBhIGwnQGkgQG8gJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJTJ2hhIHRyb2JhdCAlQiAoJWIpIHF1ZSBqYSBlc3TDoCBlc2JvcnJhdCBhIGwnQGkgQG8gJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgIkBpIEBvIEBJICVpIGVuIGVsIEBTLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgIkBpIEBvIEBJICVpIGEgbGEgbGxpc3RhIGRlIG5vZGVzLWkgQG9zLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJFbCBAUyBkZWwgQGogdMOpIHVuIHNlbnlhbGFkb3IgZGUgY2FyYWN0ZXLDrXN0aWNhIGRlIG5vbcOpcyBsZWN0dXJhIGFjdGl2YXQgIgorImRlc2NvbmVndXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIkVsIEBTIGRlbCBAaiB0w6kgdW4gc2VueWFsYWRvciBkZSBjYXJhY3RlcsOtc3RpY2Egbm8gY29tcGF0aWJsZSBhY3RpdmF0IG5vICIKKyJjb21wYXRpYmxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgIkxhIHZlcnNpw7MgZGVsIEBqIG5vIGZ1bmNpb25hIGFtYiBhcXVlc3QgZTJmc2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBNb3Zpbmcgam91cm5hbCBmcm9tIC8lcyB0byBoaWRkZW4gaW5vZGUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTW92aW5nIEBqIGZyb20gLyVzIHRvIGhpZGRlbiBAaS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlMnZXN0w6AgdHJhc2xsYWRhbnQgZWwgQGogZGUgLyVzIGFsIEBpIG9jdWx0LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIHRyYXNsbGFkYXIgZWwgQGo6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJTJ2hhbiB0cm9iYXQgY2FtcHMgZGUgQFMgZCd1biBAaiBkZSBWMiAoZW4gdW4gQGogZGUgVjEpLlxuIgorIlMnZXN0YW4gZXNib3JyYW50IGVscyBjYW1wcyBtw6lzIGVubGzDoCBkZWwgQFMgZGVsIEBqIGRlIFYxLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJFeGVjdXRhIGVsIEBqIGRlIHRvdGVzIG1hbmVyZXMiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorIkVsIHNlbnlhbGFkb3IgZGUgcmVjdXBlcmFjacOzIG5vIGVzdMOgIGRlZmluaXQgZW4gbGEgY8OycGlhIGRlbCBAUywgcGVyIGxhIHF1YWwgIgorImNvc2EgcydleGVjdXRhcsOgIGVsIEBqIGRlIHRvdGVzIG1hbmVyZXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyJTJ2VzdMOgIGZlbnQgdW5hIGPDsnBpYSBkZSBzZWd1cmV0YXQgZGUgbGEgaW5mb3JtYWNpw7MgZGVsIEBiIGRlIG5vZGVzLWkgZGVsICIKKyJAai5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9pbm9kZSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGlzICVOOyBzaG91bGQgYmUgemVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMjcKK21zZ2lkICIiCisiQGYgZG9lcyBub3QgaGF2ZSByZXNpemVfQGkgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorImlzICVOOyBAcyB6ZXJvLiAgIgorbXNnc3RyICIiCisiZWwgQGYgbm8gdMOpIGVsIHJlc2l6ZV9AaSBoYWJpbGl0YXQsIHBlcsOyIHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorIsOpcyAlTjsgQHMgemVyby4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJSZXNpemVfQGkgbm8gZXN0w6AgaGFiaWxpdGF0LCBwZXLDsiBlbCBAaSBkZSByZWRpbWVuc2nDsyBubyDDqXMgemVyby4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzgKK21zZ2lkICJSZXNpemUgQGkgbm90IHZhbGlkLiAgIgorbXNnc3RyICJFbCBAaSBkZSByZWRpbWVuc2nDsyBubyDDqXMgdsOgbGlkLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkxhIGRhcnJlcmEgaG9yYSBkZSBtdW50YXRnZSBkZWwgQFMgKCV0LFxuIgorIlx0YXJhID0gJVQpIMOpcyBlbiBlbCBmdXR1ci5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJMYSBkYXJyZXJhIGhvcmEgZCdlc2NyaXB0dXJhIGRlbCBAUyAoJXQsIFxuIgorIlx0YXJhID0gJVQpIMOpcyBlbiBlbCBmdXR1ci5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIHNob3VsZCBiZSAlWC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBAcyAlWC4gICIKK21zZ3N0ciAiTCdhcHVudCBkZSBAUyBwZXIgYWwgc3VwZXJibG9jIGV4dGVybiBAcyAlWC4gICIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlMnYWZlZ2VpeCBsJ2FwdW50IGEgbGEgdGF1bGEgZGUgZGlyZWN0b3JpcyBkZSBAZi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNjIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIGRlc2NyaXB0b3IgZGUgQGcgJWcgw6lzICUwNHgsIGhhdXJpYSBkZSBzZXIgJTA0eS4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKyJFbCBkZXNjcmlwdG9yIGRlIEBnICVnIHMnaGEgbWFyY2F0IGNvbSBhIHNlbnNlIGluaWNpYWxpdHphciBzZW5zZSBjYXAgZnVuY2nDsyAiCisiYWN0aXZhZGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgIkVsIGRlc2NyaXB0b3IgZGUgQGcgJWcgdMOpICViIG5vZGVzLWkgbm8gdsOgbGlkcyBxdWUgbm8gZXMgZmFuIHNlcnZpci4gICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIkwnw7psdGltIEBCIEBnIEBiIG5vIGVzdMOgIGluaWNpYWxpdHphdC4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICIiCisiTGEgdHJhbnNhY2Npw7MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyAlaSBlc3TDoCBtYWxtZXNhLCBzZSBuJ2hhICIKKyJpbnRlcnJvbXB1dCBsYSByZXBldGljacOzXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkVsIHNlbnlhbGFkb3IgdGVzdF9mcyBlc3TDoCBhY3RpdmF0IChpIGVzdMOgIGRpc3BvbmlibGUgZXh0NCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiTGEgZGFycmVyYSB2ZWdhZGEgcXVlIHMnaGEgbXVudGF0IGVsIEBTIMOpcyBhbCBmdXR1ci5cbiIKKyJcdChzaSDDqXMgbWVueXMgZCd1biBkaWEsIHByb2JhYmxlbWVudCBzaWd1aSB1biBlcnJvciBlbiBlbCByZWxsb3RnZSBkZWwgIgorIm1hcXVpbsOgcmkpICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiTGEgZGFycmVyYSB2ZWdhZGEgcXVlIHMnaGEgZXNjcml0IGFsIEBTIMOpcyBhbCBmdXR1ci5cbiIKKyJcdChzaSDDqXMgbWVueXMgZCd1biBkaWEsIHByb2JhYmxlbWVudCBzaWd1aSB1biBlcnJvciBlbiBlbCByZWxsb3RnZSBkZWwgIgorIm1hcXVpbsOgcmkpICAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICIiCisiVW5hIG8gbcOpcyBzdW1lcyBkZSB2ZXJpZmljYWNpw7MgZGVsIGRlc2NyaXB0b3IgZGUgQGcgZGUgQGIgbm8gc8OzbiB2w6BsaWRzLiAgIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgaW5vZGVzIGNvdW50IHRvICVqICh3YXMgJWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDA4Cittc2dpZCAiU2V0dGluZyBmcmVlIEBpcyBjb3VudCB0byAlaiAod2FzICVpKVxuIgorbXNnc3RyICJTJ2FsbGliZXJhIEBpcyBjb250YSBmaW5zIGEgJWogKGFiYW5zIGVyYSAlaSlcbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGJsb2NrcyBjb3VudCB0byAlYyAod2FzICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxMworbXNnaWQgIlNldHRpbmcgZnJlZSBAYnMgY291bnQgdG8gJWMgKHdhcyAlYilcbiIKK21zZ3N0ciAiUydhbGxpYmVyYSBAYnMgY29udGEgZmlucyBhICVjIChhYmFucyBlcmEgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIkVzIGZhIG9jdWx0IGwnQGkgQHEgJWkgKCVRKS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICJAUyB0w6kgdW4gYmxvYyBNTVAgbm8gdsOgbGlkLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIkVsIEBTIHTDqSB1biBNTVAgbcOgZ2ljIG5vIHbDoGxpZC4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX29wZW4yOiAlbVxuIgorbXNnc3RyICJleHQyZnNfb3BlbjI6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0IAorIy4gQC1leHBhbmRlZDogc2ltdWx0YW5lb3VzbHkuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ0NgorbXNnaWQgIiIKKyJAUyBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0ICIKKyJzaW11bHRhbmVvdXNseS4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1MgorIywgZnV6enkKK21zZ2lkICJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIgorbXNnc3RyICJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgYmxvYyBNTVAgbm8gY29pbmNpZGVpeCBhbWIgZWwgYmxvYyBNTVAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKyJFbCBAUyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGRlIDY0IGJpdHMgbmVjZXNzaXRhIMKrZXh0ZW50c8K7IHBlciBhY2NlZGlyIGFsICIKKyJkaXNjIHNlbmNlci4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIkZpcnN0X21ldGFfYmcgw6lzIG1hc3NhIGdyYW4uICAoJU4sIHZhbG9yIG3DoHggJWcpLiAgIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NjcKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIiIKKyJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgYmxvYyDCq2V4dGVudMK7IG5vIGNvaW5jaWRlaXggYW1iIGVsIGJsb2MgwqtleHRlbnTCuyIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgIlBhcyAxOiBjb21wcm92YWNpw7MgZGUgbm9kZXMtaSwgQGJzIGkgbWlkZXNcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgImVsIEByIG5vIMOpcyB1biBAZC4gICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICJlbCBAciB0w6kgZWwgZHRpbWUgZGVmaW5pdCAoc2VndXJhbWVudCBkZWd1dCBhIHVuIG1rZTJmcyBhbnRpYykuIgorCisjLiBALWV4cGFuZGVkOiBSZXNlcnZlZCBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTA4Cittc2dpZCAiUmVzZXJ2ZWQgQGkgJWkgKCVRKSBoYXMgQG4gbW9kZS4gICIKK21zZ3N0ciAiRWwgQGkgJWkgKCVRKSB0w6kgdW4gbW9kZSBAbi4gICIKKworIyBGSVhNRSBkdGltZSAoZHBtKQorIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgIkVsIEBpICVpIEBEIHTDqSB1biBkdGltZSB6ZXJvLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgIgorbXNnc3RyICJFbCBAaSAlaSBzJ2VzdMOgIHV0aWxpdHphbnQsIHBlcsOyIHTDqSBkdGltZSBkZWZpbml0LiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSB6ZXJvLWxlbmd0aCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGEgQHogQGQuICAiCittc2dzdHIgIkVsIEBpICVpIMOpcyB1biBAZCBkZSBAei4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjgKK21zZ2lkICJAZyAlZydzIEBiIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJAQiBkZSBAZyBkZSBAYiAlZyBhICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIkBCIGRlIEBnIGRlIEBpICVnIGEgJWIgQEMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICJUYXVsYSBkZSBAZyBkZSBAaSAlZyBhICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJAQiBkZSBAZyBkZSBAYiAlZyAoJWIpIMOpcyBlcnJvbmkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIkBCIGRlIEBnIGRlIEBpICVnICglYikgw6lzIGVycm9uaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIkBpICVpLCBpX3NpemUgw6lzICVJcywgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfQGJzIMOpcyAlSWIsIEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYzCittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiJUIgKCViKSBASSBhIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiJUIgKCViKSBzZSBzb2JyZXBvc2EgYWwgQGYgZGUgbWV0YWRhZGVzIGFsIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkVsIEBpICVpIHTDqSBAYnMgbm8gdsOgbGlkcy4gICIKKworIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IGlsbGVnYWwgQGJzIGluIEBpICVpLlxuIgorbXNnc3RyICJIaSBoYSBtYXNzYSBAYiBubyB2w6BsaWRzIGFsIEBpICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICIlQiAoJWIpIEBJIGVuIEBiIEBpIGRvbGVudHMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkVsIEBpIGRlIEBiIGVycm9uaXMgdMOpIEBicyBubyB2w6BsaWRzLiAgIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiUydlc3TDoCB1dGlsaXR6YW50IGVsIEBiIGR1cGxpY2F0IG8gZXJyb25pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIkVsIEAgZXJyb25pICViIGVzIGZhIHNlcnZpciBjb20gYSBAYiBpbmRpcmVjdGUgQGIgQGkgZXJyb25pLiAgIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbgorIy4gQC1leHBhbmRlZDogc2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaW4gdGhlIGZpbGVzeXN0ZW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAzCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFbCBAYiBAaSBlcnJvbmkgcHJvYmFibGVtZW50IMOpcyBjb3JydXB0ZS4gIEhhdXLDrWV1XG4iCisiZCdhdHVyYXIgYXJhIGVsIHJwb2PDqXMgaSBleGVjdXRhciBlMmZzY2sgLWMgcGVyIGJ1c2NhciBcbiIKKyJibG9jcyBlcnJvbmlzIGFsIEBmLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlNpIGVsIEBiIGVzdMOgIHJlYWxtZW50IG1hbG3DqHMsIGVsIEBmIG5vIGVzIHBvZHLDoCByZXBhcmFyLlxuIgorCisjLiBALWV4cGFuZGVkOiBZb3UgY2FuIHJlbW92ZSB0aGlzIGJsb2NrIGZyb20gdGhlIGJhZCBibG9jayBsaXN0IGFuZCBob3BlXG4KKyMuIEAtZXhwYW5kZWQ6IHRoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjE1Cittc2dpZCAiIgorIllvdSBjYW4gcmVtb3ZlIHRoaXMgQGIgZnJvbSB0aGUgYmFkIEBiIGxpc3QgYW5kIGhvcGVcbiIKKyJ0aGF0IHRoZSBAYiBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4iCisiXG4iCittc2dzdHIgIiIKKyJQb2RldSB0cmV1cmUgYXF1ZXN0IEBiIGRlIGxhIGxsaXN0YSBkZSBAYiBlcnJvbmlzIGkgXG4iCisiZXNwZXJhciBxdWUgZWwgQGIgc2lndWkgY29ycmVjdGUuICBQZXLDsiBubyBoaSBoYSBnYXJhbnRpZXMuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIkVsIEBTIHByaW1hcnkgKCViKSDDqXMgYSBsYSBsbGlzdGEgZGUgQGJzIGVycm9uaXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiRWwgYmxvYyAlYiBkZWwgQGcgZGUgZGVzY3JpcHRvcnMgcHJpbWFyaSDDqXMgYSBsYSBsbGlzdGEgZGUgQGIgZXJyb25pc1xuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIHN1cGVyYmxvY2sgKCViKSBpcyBiYWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMyCittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBAUyAoJWIpIGlzIGJhZC5cbiIKK21zZ3N0ciAiQXbDrXM6IGVsIEBTICglYikgZGVsIGdydXAgJXMgw6lzIGVycm9uaS5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBncm91cCBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgYmxvY2sgKCViKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzcKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIEBnIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBAYiAoJWIpLlxuIgorbXNnc3RyICIiCisiQXbDrXM6IGxhIGPDsnBpYSBkZWxzIGRlc2NyaXB0b3JzIGRlIEBnIGRlbCBncnVwICVnIHTDqSB1biBAYiBlcnJvbmkgKCViKS5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorIkVzIHByb2JhYmxlIHF1ZSBzJ2hhZ2kgcHJvZHXDr3QgdW4gZXJyb3IgZGUgcHJvZ3JhbWFjacOzOiBlbCBAYiAjJWIgaGEgZXN0YXQgIgorInJlY2xhbWF0IHNlbnNlIG1vdGl1IGEgcHJvY2Vzc19iYWRfQGIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIkBBICVOIEBiKHMpIGNvbnRpZ3VzIGFsIEBnIEBiICVnIHBlciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkBBIGRlIGxhIG1lbcOycmlhIGludGVybcOoZGlhIGRlbCBAYiBwZXIgYSByZXViaWNhciAlc1xuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgIlMnZXN0w6AgcmV1YmljYW50ICVnIGRlbCBAZyAlcyBkZSAlYiBhICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2NAorIywgYy1mb3JtYXQKK21zZ2lkICJSZWxvY2F0aW5nIEBnICVnJ3MgJXMgdG8gJWMuLi5cbiIKK21zZ3N0ciAiUydlc3TDoCByZXViaWNhbnQgJWcgZGVsIEBnICVzIGEgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgIkF2w61zOiBubyBzJ2hhIHBvZ3V0IGxsZWdpciBlbCBAYiAlYiBkZSAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICJBdsOtczogbm8gcydoYSBwb2d1dCBlc2NyaXVyZSBlbCBAYiAlYiBwZXIgYSAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAQSBkZWwgQEIgZGVsIEBpICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0Cittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAQSBkZWwgQEIgZGVsIEBiICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJAQSBsYSBpbmZvcm1hY2nDsyBkJ2VubGxhw6cgZGUgbCdpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAiQEEgbGEgY2FkZW5hIGRlbCBAYiBkZSBAczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGVzY2FuZWphciBlbHMgbm9kZXMtaSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBpdGVyYXIgYSB0cmF2w6lzIGRlbHMgQGJzIGRlbCBAaSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwOQorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGRlc2FyIGxhIGluZm9ybWFjacOzIGRlbCBub21icmUgZGUgbm9kZXMtaSAoQGk9JWksICIKKyJub21icmU9JU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGRpcmVjdG9yeSBibG9jayBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGJsb2NrPSViLCBudW09JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcxNAorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGQgQGIgaW5mb3JtYXRpb24gKEBpPSVpLCBAYj0lYiwgbnVtPSVOKTogJW1cbiIKK21zZ3N0ciAiIgorIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZGVzYXIgbGEgaW5mb3JtYWNpw7MgZGVsIEBiIGRlIEBkIChAaT0laSwgQGI9JWIsIG7Dum09IgorIiVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBsbGVnaXIgZWwgQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgIkVsIEBpICVpIHTDqSBhY3RpdmF0IGVsIHNlbnlhbGFkb3IgaW1hZ2ljLiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoaW5vZGUgJWkpIGhhcyBpbW11dGFibGVcbgorIy4gQC1leHBhbmRlZDogb3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChAaSAlaSkgaGFzIGltbXV0YWJsZVxuIgorIm9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiRWwgZml0eGVyIChAaSAlaSkgZXNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIHTDqSBhY3RpdmF0XG4iCisibCdpbmRpY2Fkb3IgZCdpbW11dGFibGUgbyBkZSBub23DqXMgYWZlZ2lyLiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIkVsIEBpIGVzcGVjaWFsICVpIChAdi9zb2NrZXQvZmlmbykgdMOpIHVuYSBtaWRhIGRpZmVyZW50IGRlIHplcm8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkVsIEBpIGRlbCBAaiBubyBzJ3V0aWxpdHphLCBwZXLDsiBjb250w6kgZGFkZXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJFbCBAaiBubyDDqXMgdW4gZml0eGVyIG5vcm1hbC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHdhcyBwYXJ0IG9mIHRoZSBAbyBAaSBsaXN0LiAgIgorbXNnc3RyICJFbCBAaSAlaSDDqXMgcGFydCBkZSBsYSBsbGlzdGEgZGUgbm9kZXMtaSBAb3MuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorIlMnaGFuIHRyb2JhdCBub2Rlcy1pIHF1ZSBzw7NuIHBhcnQgZCd1bmEgbGxpc3RhIGVubGxhw6dhZGEgZCdvcmZlcyBtYWxtZXNhLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBsJ2VzdHJ1Y3R1cmEgZGUgcmVmY291bnQgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGxsZWdpciBlbCBAYiBkJ0BhIGRlbCBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkVsIEBpICVpIHTDqSB1biBAYiBkJ0BhICViIG1hbG3DqHMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGxsZWdpciBlbCBAYiBkJ0BhICViICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzkwCittc2dpZCAiQGEgQGIgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgQHMgJU4uICAiCittc2dzdHIgIkBhIEBiICViIHTDqSB1biBjb21wdGFkb3IgZGUgcmVmZXLDqG5jaWEgJXIsIEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBlc2NyaXVyZSBlbCBAYiBkJ0BhICViICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgIkBiIEBhICViIHTDqSBoX0BicyA+IDEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDUKKyMsIGZ1enp5Cittc2dpZCAiQEEgQGEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJAQSBkZSBsJ2VzdHJ1Y3R1cmEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiRWwgQGIgZCdAYSBlc3TDoCBtYWxtw6hzIChjb2zCt2xpc2nDsyBlbiBsJ2Fzc2lnbmFjacOzKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIkVsIEBiIGQnQGEgZXN0w6AgbWFsbcOocyAobm9tIEBuKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiRWwgQGIgZCdAYSBlc3TDoCBtYWxtw6hzICh2YWxvciBAbikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgIkVsIEBpICVpIMOpcyBtYXNzYSBncmFuLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJFbCAlQiAoJWIpIGZhIHF1ZSBlbCBAZCBzaWd1aSBtYXNzYSBncmFuLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiRWwgJUIgKCViKSBmYSBxdWUgZWwgZml0eGVyIHNpZ3VpIG1hc3NhIGdyYW4uICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJFbCAlQiAoJWIpIGZhIHF1ZSBsJ2VubGxhw6cgc2ltYsOybGljIHNpZ3VpIG1hc3NhIGdyYW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSBlbCBzZW55YWxhZG9yIElOREVYX0ZMIGRlZmluaXQgZW4gdW4gQGYgcXVlIG5vIMOpcyBjb21wYXRibGUgYW1iICIKKyJsJ2h0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiRWwgQGkgJWkgdMOpIGVsIHNlbnlhbGFkb3IgSU5ERVhfRkwgZGVmaW5pdCBwZXLDsiBubyDDqXMgdW4gQGQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIkVsIEBoICVpIHTDqSB1biBub2RlIGFycmVsIEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkBoICVpIHTDqSB1bmEgdmVyc2nDsyBkZSByZXN1bSBubyBjb21wYXRpYmxlICglTilcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiQGggJWkgZmEgc2VydmlyIGVsIHNlbnlhbGFkb3IgZGUgbm9kZSBhcnJlbCBodHJlZSBubyBjb21wYXRpYmxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJAaCAlaSB0w6kgdW5hIHByb2Z1bmRpdGF0IGRlIGRpcmVjdG9yaXMgKCVOKSBtYXNzYSBncmFuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIiIKKyJFbCBAaSBkZSBAYiBubyB2w6BsaWQgdMOpIHVuIEBiIGluZGlyZWN0ZSAoJWIpIHF1ZSBlbnRyYVxuIgorImVuIGNvbmZsaWN0ZSBhbWIgZWwgQGYgZGUgbWV0YWRhZGVzLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0ICh0b3JuYXIgYSkgZGltZW5zaW9uYXIgZWwgQDogJW0uIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODUKK21zZ2lkICJAaSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkVsIEBpIHTDqSB1bmEgbWlkYSBhZGRpY2lvbmFsICglSVMpIHF1w6ggbm8gw6lzIHbDoGxpZGFcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkxhIGxsYXJnYWRhIGRlbCBub20gKCVOKSBkZSBsJ0BhIGRlbCBAaSAlaSBubyDDqXMgdsOgbGlkYVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkVsIGRlc3BsYcOnYW1lbnQgZGVsIHZhbG9yICglTikgZGUgbCdAYSBkZWwgQGkgJWkgbm8gw6lzIHbDoGxpZFxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICJFbCBAYiBkZWwgdmFsb3IgKCVOKSBkZSBsJ0BhIGRlbCBAaSAlaSBubyDDqXMgdsOgbGlkIChoYXVyaWEgZGUgc2VyIDApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJMYSBtaWRhIGRlbCB2YWxvciAoJU4pIGRlIGwnQGEgZGVsIEBpICVpIG5vIMOpcyB2w6BsaWRhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJMJ0BhIGRlbCBAaSAlaSB0w6kgdW4gcmVzdW0gKCVOKSBxdWUgbm8gw6lzIHbDoGxpZFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJFbCBAaSAlaSDDqXMgdW4gJUl0LCBwZXLDsiBzZW1ibGEgc2VyIHVuIGRpcmVjdG9yaSBlbiByZWFsaXRhdC5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIGV4dGVudCB0cmVlIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgQHggdHJlZSBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBsbGVnaXIgbCdhcmJyZSBkJ0B4IGFsIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIGlub2RlICVpXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyNQorbXNnaWQgIiIKKyJGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCittc2dzdHIgIiIKKyJObyBzJ2hhIHBvZ3V0IGl0ZXJhciBlbHMgwqtleHRlbnRzwrsgYWwgQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzEKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJFbCBAaSAlaSB0w6kgdW4gQG4gwqtleHRlbnTCu1xuIgorIlx0KEBiIGzDsmdpYyAlYywgQGIgZsOtc2ljIEBuICViLCBsb25naXR1ZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJFbCBAaSAlaSB0w6kgdW4gQG4gwqtleHRlbnTCu1xuIgorIlx0KEBiIGzDsmdpYyAlYywgQCBmw61zaWMgJWIsIGxvbmdpdHVkIEBuICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSBlbCBzZW55YWxhZG9yIEVYVEVOVFNfRkwgZGVmaW5pdCBlbiB1biBAZiBxdWUgbm8gw6lzIGNvbXBhdGlibGUgIgorIsKrZXh0ZW50c8K7LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSBmb3JtYXQgwqtleHRlbnTCuywgcGVyw7IgZWwgQFMgbm8gdMOpIGxhIGNhcmFjdGVyw61zdGljYSBFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICJFbCBAaSAlaSBubyB0w6kgRVhURU5UX0ZMLCBwZXLDsiB0w6kgZWwgZm9ybWF0IMKrZXh0ZW50c8K7XG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiTCdlbmxsYcOnIHNpbWLDsmxpYyByw6BwaWQgJWkgdMOpIGFjdGl2YXQgZWwgRVhURU5UX0ZMLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiRWwgQGkgJWkgdMOpIMKrZXh0ZW50c8K7IGZvcmEgZGUgc2VydmVpXG4iCisiXHQoQGIgbMOyZ2ljICVjIEBuLCBAYiBmw61zaWMgJWIsIGxvbmdpdHVkICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIkVsIEBpICVpIHTDqSB1biBub2RlIMKrZXh0ZW50wrsgbm8gdsOgbGlkIChibGMgJWIsIGxibGMgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBxdWFuIGVzIGNvbnZlcnRpYSBlbCBncnVwIGRlIHNlY3RvcnMgQGIgQEI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTc1Cittc2dpZCAiQHEgQGkgaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiTCcgQGkgZGUgQHEgbm8gw6lzIHVuIGZpdHhlciBub3JtYWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJMJ0BpIGRlIEBxIG5vIHMndXRpbGl0emEsIHBlcsOyIGNvbnTDqSBkYWRlcy4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJMJ0BpIGRlIEBxIMOpcyB2aXNpYmxlIHBlciBhIGwndXN1YXJpLiAgIgorCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGxvb2tzIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTkwCittc2dpZCAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKK21zZ3N0ciAiRWwgQGkgZGVsIEBiIGRvbGVudCBzZW1ibGEgQG4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTUKK21zZ2lkICIiCisiQGkgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViKVxuIgorbXNnc3RyICIiCisiRWwgQGkgJWkgdMOpIGwnwqtleHRlbnTCuyBkZSBsb25naXR1ZCB6ZXJvXG4iCisiXHQoQGIgbMOyZ2ljICVjIEBuLCBAYiBmw61zaWMgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgIkVsIEBpICVpIMOpcyBtYXNzYSBncmFuLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kZS1pIG5vIGNvaW5jaWRlaXggYW1iIGVsIG1hcGEgIgorImRlIGJpdHMiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgQGEgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJFbCBAYiBkJ0BhIGVzdMOgIG1hbG3DqHMgKGNvbMK3bGlzacOzIGVuIGwnYXNzaWduYWNpw7MpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSDCq2V4dGVudHPCuyBmb3JhIGRlIHNlcnZlaVxuIgorIlx0KEBiIGzDsmdpYyAlYyBAbiwgQGIgZsOtc2ljICViLCBsb25naXR1ZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDI3Cittc2dpZCAiQGkgJWkgQGEgQGIgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBiLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEludGVyaW9yIGV4dGVudCBub2RlIGxldmVsICVOIG9mIGlub2RlICVpOlxuCisjLiBALWV4cGFuZGVkOiBMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0Cittc2dpZCAiIgorIkludGVyaW9yIEB4IG5vZGUgbGV2ZWwgJU4gb2YgQGkgJWk6XG4iCisiTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAiCittc2dzdHIgIiIKKyJOaXZlbGwgaW50ZXJpb3IgZGVsIG5vZGUgQHggJU4gZGVsIEBpICVpOlxuIgorIkwnaW5pY2kgbMOyZ2ljICViIG5vIGNvaW5jaWRlaXggYW1iIGwnaW5pY2kgbMOyZ2ljICVjIGFsIHNlZ8O8ZW50IG5pdmVsbC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWksIGVsIGZpbmFsIGRlIGwnwqtleHRlbnTCuyBzdXBlcmEgZWwgdmFsb3IgcGVybcOpc1xuIgorIlx0KEBiIGzDsmdpYyAlYywgQGIgZsOtc2ljICViLCBsb25naXR1ZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSBmb3JtYXQgwqtleHRlbnTCuywgcGVyw7IgZWwgQFMgbm8gdMOpIGxhIGNhcmFjdGVyw61zdGljYSBFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSBlbCBzZW55YWxhZG9yIElOREVYX0ZMIGRlZmluaXQgZW4gdW4gQGYgcXVlIG5vIMOpcyBjb21wYXRibGUgYW1iICIKKyJsJ2h0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkVsIEBpIGRlIEBkICVpIEBiICViIGhhIGRlIHNlciBhbCBAYiAlYy4gICIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2OAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAaSAlaSBoYXMgQHggbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgQGIgJWMuICAiCittc2dzdHIgIkVsIEBpIGRlIEBkICVpIHTDqSB1biBAeCBtYXJjYXIgY29tIGEgbm8gaW5pY2lhbGl0emF0IGEgQGIgJWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGxvZ2ljYWwgYmxvY2sgJWIgKHBoeXNpY2FsIGJsb2NrICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFdpbGwgZml4IGluIHBhc3MgMUIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3MworbXNnaWQgIiIKKyJAaSAlaSBsb2dpY2FsIEBiICViIChwaHlzaWNhbCBAYiAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuIgorIldpbGwgZml4IGluIHBhc3MgMUIuXG4iCittc2dzdHIgIiIKKyJFbCBAaSAlaSBAYiBsw7JnaWMgJWIgKEBiIGbDrXNpYyAlYykgdmlvbGEgbGVzIHJlZ2xlcyBkJ3ViaWNhY2nDsyBkZSBjbMO6c3Rlci5cbiIKKyJTJ2FycmVnbGFyYSBhbCBwYXMgMUIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIkVsIEBpICVpIHTDqSBlbCBzZW55YWxhZG9yIElOREVYX0ZMIGRlZmluaXQgcGVyw7Igbm8gw6lzIHVuIEBkLlxuIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGZpbGUgKGlub2RlICVpKSBoYXMgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDgzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIGZpbGUgKEBpICVpKSBoYXMgZXh0ZW50c1xuIgorIm9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiRWwgZml0eGVyIChAaSAlaSkgZXNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIHTDqSBhY3RpdmF0XG4iCisibCdpbmRpY2Fkb3IgZCdpbW11dGFibGUgbyBkZSBub23DqXMgYWZlZ2lyLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgaW5vZGUgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDkKK21zZ2lkICJCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBAaSBpcyBiYWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTQKKyMsIGZ1enp5Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJAQSBkZSBsJ2VzdHJ1Y3R1cmEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmdcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTkKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkVsIEBpICVpIHTDqSB1biBAbiDCq2V4dGVudMK7XG4iCisiXHQoQGIgbMOyZ2ljICVjLCBAYiBmw61zaWMgQG4gJWIsIGxvbmdpdHVkICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5Cittc2dpZCAiQGkgJWkgQHggdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBvbiBiaWdhbGxvYyBmaWxlc3lzdGVtIGNhbm5vdCBiZSBibG9jayBtYXBwZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBvbiBiaWdhbGxvYyBAZiBjYW5ub3QgYmUgQGIgbWFwcGVkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICJFbCBAYiBkJ0BhIGVzdMOgIG1hbG3DqHMgKG5vbSBAbikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisiUydleGVjdXRlbiBwYXNzb3MgYWRkaWNpb25hbHMgcGVyIHJlc29sZHJlIGVscyBAYnMgcmVjbGFtYXQgw6lzIHBlciBtw6lzIGQndW4gIgorIkBpLi4uXG4iCisiUGFzIDFCOiBFcyB0b3JuYSBhIGVzY2FuZWphciBwZXIgQGJzIEBtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgJWk6CisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICJAYihzKSByZWNsYW1hdChzKSBtw7psdGlwbGVtZW50IGRlbCBAaSAlaToiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBlc2NhbmVqYXIgZWxzIG5vZGVzLWkgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJAQSBAQiBkZSBAaSAoQGlfZHVwX21hcCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gaXRlcmFyIHBlbHMgQGJzIGFsIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGFqdXN0YXIgZWwgbm9tYnJlIGRlIHJlZmVyw6huY2llcyBkZWwgQGIgZCdAYSAlYiAoQGkgIgorIiVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlBhcyAxQzogZXNjYW5laWcgZGVscyBkaXJlY3RvcmlzIGRlbHMgbm9kZXMtaSBhbWIgQGJzIHJlY2xhbWF0cyAiCisibcO6bHRpcGxlbWVudFxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiUGFzIDFEOiBjb25jaWxpYWNpw7MgZGVscyBAYnMgcmVjbGFtYXRzIG3Dumx0aXBsZW1lbnRcbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisiRWwgZml0eGVyICVRIChAaSAjJWksIGhvcmEgZGUgbW9kICVJTSkgXG4iCisiICB0w6kgJXIgQG0gQGIocykgQG0sIGNvbXBhcnRpdHMgYW1iICVOIGZpdHhlcihzKTpcbiIKKworIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorbXNnaWQgIlx0JVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKVxuIgorbXNnc3RyICJcdCVRIChAaSAjJWksIGhvcmEgZGUgbW9kaWZpY2FjacOzICVJTSlcbiIKKworIy4gQC1leHBhbmRlZDogXHQ8ZmlsZXN5c3RlbSBtZXRhZGF0YT5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE5Cittc2dpZCAiXHQ8QGYgbWV0YWRhdGE+XG4iCittc2dzdHIgIlx0PG1ldGFkYWRlcyBkZWwgQGY+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiKEhpIGhhICVOIG5vZGVzLWkgcXVlIGNvbnRlbmVuIEBicyBtw7psdGlwbGVtZW50IHJlY2xhbWF0cy4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJAYnMgcmVjbGFtYXRzIG3Dumx0aXBsZW1lbnQgamEgcmVhc3NpZ25hdHMgbyBjbG9uYXRzLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBjbG9uYXIgZWwgZml0eGVyOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJQYXMgM0E6IG9wdGltaXR6YWNpw7MgZGVscyBkaXJlY3RvcmlzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBvcHRpbWl6ZSBleHRlbnQgdHJlZSAlcCAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBAeCB0cmVlICVwICglaSk6ICVtXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgb3B0aW1pdHphciBlbCBkaXJlY3RvcmkgJXEgKCVkKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogT3B0aW1pemluZyBleHRlbnQgdHJlZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjU4CisjLCBmdXp6eQorbXNnaWQgIk9wdGltaXppbmcgQHggdHJlZXM6ICIKK21zZ3N0ciAiUydlc3RhbiBvcHRpbWl0emFudCBlbHMgZGlyZWN0b3JpczogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiUGFzIDI6IGNvbXByb3ZhY2nDsyBkZSBsJ2VzdHJ1Y3R1cmEgZGVsIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkVsIG7Dum1lcm8gZGUgQGkgQG4gcGVyIMKrLsK7IGFsIEBpIGRlIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiTCdARSB0w6kgdW4gQGkgQG4gIzogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorbXNnaWQgIkBFIGhhcyBARC91bnVzZWQgQGkgJURpLiAgIgorbXNnc3RyICJARSB0w6kgZWwgQGkgJURpIEBEIG8gc2Vuc2UgZmVyIHNlcnZpci4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJMJ0BFIEBMIGEgwqsuwrsiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICJMJ0BFIGFwdW50YSBhbCBAaSAoJURpKSB1YmljYXQgZW4gdW4gQGIgbWFsbcOocy5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiTCdARSBATCBhbCBAZCAlUCAoJURpKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyNQorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAiTCdARSBATCBhbCBAci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJFbCBub20gZGUgbCdARSBjb250w6kgY2Fyw6BjdGVycyBubyB2w6BsaWRzLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiTWFuY2EgZWwgwqsuwrsgZW4gZWwgQGkgZGUgQGQgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk1hbmNhIGVsIMKrLi7CuyBlbiBlbCBAaSBkZSBAZCAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICJMYSBwcmltZXJhIEBlIMKrJURuwrsgKEBpPSVEaSkgZW4gZWwgQGkgZGUgQGQgJWkgKCVwKSBAcyDCqy7Cu1xuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIkxhIHNlZ29uYSBAZSDCqyVEbsK7IChAaT0lRGkpIGVuIGVsIEBpIGRlIEBkICVpICglcCkgQHMgwqsuLsK7XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmFkZHIgZm9yIGlub2RlICVpICglUSkgaXMgJUlGLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzU1Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgIkwnaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlmLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYwCittc2dpZCAiaV9maWxlX2FjbCBARiAlSWYsIEBzIHplcm8uXG4iCittc2dzdHIgIkwnaV9maWxlX2FjbCBARiAlSWYsIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJMJ2lfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3MAorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiTCdpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnNpemUgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzUKK21zZ2lkICJpX2ZzaXplIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJMJ2lfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAiRWwgQGkgJWkgKCVRKSB0w6kgdW4gbW9kZSBAbiAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiRWwgQGkgZGUgQGQgJWksICVCLCBkZXNwbGHDp2FtZW50ICVOOiBlbCBAZCBjb3Jyb21wdXRcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiRWwgQGkgZGUgQGQgJWksICVCLCBkZXNwbGHDp2FtZW50ICVOOiBlbCBub20gZGUgZml0eGVyIMOpcyBtYXNzYSBsbGFyZ1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIkVsIEBpIGRlIEBkICVpIHTDqSB1biAlQiBubyBhc3NpZ25hdC4gICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiTCdAZSBkZSBAZCDCqy7CuyBlbiBlbCBAaSBkZSBAZCAlaSBubyBhY2FiYSBlbiBOVUxcbiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIicuLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJMJ0BlIGRlIEBkIMKrLi7CuyBlbiBlbCBAaSBkZSBAZCAlaSBubyBhY2FiYSBlbiBOVUxcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJFbCBAaSAlaSAoJVEpIMOpcyB1biBAdiBkZSBjYXLDoGN0ZXJzIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJFbCBAaSAlaSAoJVEpIMOpcyB1biBAdiBkZSBibG9jcyBASS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjAKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJMJ0BFIMOpcyB1biBkdXBsaWNhdCBkZSBsJ0BlIMKrLsK7XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJMJ0BFIMOpcyB1biBkdXBsaWNhdCBkZSBsJ0BlIMKrLi7Cu1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBpbnRlcm46IG5vIHMnaGEgdHJvYmF0IGRpcl9pbmZvIHBlciBhICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJARSB0w6kgZWwgcmVjX2xlbiBkZSAlRHIsIEBzICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICJAQSBkZSBsJ2VzdHJ1Y3R1cmEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IGVuIGl0ZXJhciBwZWxzIEBicyBkZSBAZDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGxsZWdpciBlbCBAYiBkZSBAZCAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZXNjcml1cmUgZWwgQGIgZGUgQGQgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJAQSBlbCBub3UgQGIgZGUgQGQgZGVsIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBkZXNhc3NpZ25hciBlbCBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICJMJ0BlIGRlIEBkIHBlciBhIMKrLsK7IGEgJXAgKCVpKSDDqXMgZ3Jhbi4gXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIkVsIEBpICVpICglUSkgw6lzIHVuYSBGSUZPIG5vIHbDoGxpZGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBzb2NrZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4MAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgc29ja2V0LlxuIgorbXNnc3RyICJFbCBAaSAlaSAoJVEpIMOpcyB1biBzw7Jjb2wgQEkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJTJ2VzdMOgIGVzdGFibGludCBlbCB0aXB1cyBkZSBmaXR4ZXIgcGVyIGEgbCdARSBhICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiRWwgdGlwdXMgZGUgZml0eGVyIGRlIGwnQEUgw6lzIGluY29ycmVjdGUgKMOpcyAlRHQsIEBzICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZmlsZXR5cGUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTUKK21zZ2lkICJARSBoYXMgZmlsZXR5cGUgc2V0LlxuIgorbXNnc3RyICJFbCB0aXB1cyBkZSBmaXR4ZXIgZGUgbEBFIGVzdMOgIGRlZmluaXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgemVyby1sZW5ndGggbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAwCittc2dpZCAiQEUgaGFzIGEgQHogbmFtZS5cbiIKK21zZ3N0ciAiRWwgbm9tIGRlIGwnQEUgw6lzIGRlIEB6LlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIkwnZW5sbGHDpyBzaW1iw7JsaWMgJVEgKEBpICMlaSkgw6lzIEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIkVsIEBiIGQnQGEgQEYgQG4gKCVJZikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1Cittc2dpZCAiQGYgY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gQFMuXG4iCittc2dzdHIgIiIKKyJFbCBAZiBjb250w6kgZml0eGVycyBncmFucywgcGVyw7IgbGkgbWFuY2EgZWwgc2VueWFsYWRvciBMQVJHRV9GSUxFIGFsIEBTLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gQHAgYWwgQGggJWQ6ICVCIG5vIGVzdMOgIHJlZmVyZW5jaWF0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyNQorbXNnaWQgIkBwIEBoICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gQHAgYWwgQGggJWQ6ICVCIGVzdMOgIHJlZmVyZW5jaWF0IGR1ZXMgdmVnYWRlc1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIEBwIGVuIGVsIEBoICVkOiAlQiB0w6kgdW4gcmVzdW0gbWluLiBlcnJvbmlcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAcCBhbCBAaCAlZDogJUIgdMOpIHVuIHJlc3VtIG1heC4gZXJyb25pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgImVsIEBoICVkICglcSkgw6lzIEBuLiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIEBwIGFsIEBoICVkIChxKTogbsO6bWVybyBkZSBAYiAlYiBpbmNvcnJlY3RlLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAcCBhbCBAaCAlZDplbCBub2RlIGFycmVsIG5vIMOpcyB2w6BsaWRcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gQHAgYWwgQGggJWQ6ICVCIHTDqSB1biBsw61taXQgKCVOKSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgY291bnQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAcCBhbCBAaCAlZDogJUIgdMOpIHVuIGNvbXB0YWRvciAoJU4pIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIEBwIGFsIEBoICVkOiAlQiB0w6kgdW5hIHRhdWxhIGRlIHJlc3VtIGRlc29yZGVuYWRhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIEBwIGFsIEBoICVkOiAlQiB0w6kgdW5hIHByb2Z1bmRpdGF0ICglTikgQG5cbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAiUydoYSB0cm9iYXQgdW5hIEBFIGR1cGxpY2FkYS4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJMJ0BFIHTDqSB1biBub20gZGUgZml0eGVyIHF1ZSBubyDDqXMgw7puaWMuXG4iCisiTGkgaGF1csOtZXUgZGUgY2FudmlhciBlbCBub20gYSAlcyIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5Cittc2dpZCAiIgorIkR1cGxpY2F0ZSBAZSAnJURuJyBmb3VuZC5cbiIKKyJcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuIgorIlxuIgorbXNnc3RyICIiCisiUydoYSB0cm9iYXQgdW5hIEBlIMKrJURuwrsuXG4iCisiXHRFcyBtYXJjYXLDoCAlcCAoJWkpIHBlciBhIMOpc3NlciByZWNvbnN0cnXDr3QuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIkwnaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiTm8gcydlc3BlcmF2YSBlbCBAYiBhbCBAaCAlZCAoJXEpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGluIGdyb3VwICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDMKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBpbiBAZyAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorIkBFIHF1ZSBmYSByZWZlcsOobmNpYSBhbCBAaSAlRGkgYSBAZyAlZyBvbiBfSU5PREVfVU5JTklUIGVzdMOgIGFjdGl2YXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisiQEUgcXVlIGZhIHJlZmVyw6huY2lhIGFsIEBpICVEaSBoYSB0cm9iYXQgYSBAZyAlZydzIMOgcmVlcyBkZSBub2Rlcy1pIHNlbnNlICIKKyJmZXIgc2VydmlyIC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworbXNnaWQgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAcCBhbCBAaCAlZDplbCBub2RlIGFycmVsIG5vIMOpcyB2w6BsaWRcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gQHAgYWwgQGggJWQ6ZWwgbm9kZSBhcnJlbCBubyDDqXMgdsOgbGlkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkVsIEBpIGRlIEBkICVpLCAlQiwgZGVzcGxhw6dhbWVudCAlTjogZWwgQGQgY29ycm9tcHV0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJQYXMgMzogY29tcHJvdmFjacOzIGRlIGxhIGNvbm5lY3Rpdml0YXQgZGVscyBAZHNcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJFbCBAciBubyBlc3TDoCBhc3NpZ25hdC4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiTm8gaGkgaGEgcHJvdSBlc3BhaSBlbiBlbCBAZCBAbC4gICIKKworIy4gQC1leHBhbmRlZDogVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlICVpICglcClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuY29ubmVjdGVkIEBkIEBpICVpICglcClcbiIKK21zZ3N0ciAiQGkgZGUgQGQgJWkgZGVzY29ubmVjdGF0ICglcClcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzUKK21zZ2lkICIvQGwgbm90IGZvdW5kLiAgIgorbXNnc3RyICJObyBzJ2hhIHRyb2JhdCAvQGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIsKrLi7CuyBhICVRICglaSkgw6lzICVQICglaiksIEBzICVxICglZCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBvciBub24tZXhpc3RlbnQgL2xvc3QrZm91bmQuICBDYW5ub3QgcmVjb25uZWN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODUKK21zZ2lkICJCYWQgb3Igbm9uLWV4aXN0ZW50IC9AbC4gIENhbm5vdCByZWNvbm5lY3QuXG4iCittc2dzdHIgIkVsIGRpcmVjdG9yaSAvQGwgbm8gZXhpc3RlaXggbyBlc3TDoCBtYWxtw6hzLiAgTm8gZXMgcG90IHJlY29ubmVjdGFyLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgZXhwYW5kaXIgZWwgZGlyZWN0b3JpIC9AbDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgcmVjb25uZWN0YXIgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGNlcmNhciBlbCBkaXJlY3RvcmkgL0BsOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Jsb2NrOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AYjogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19ibG9jazogJW0gZW4gaW50ZW50YXIgY3JlYXIgZWwgQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2lub2RlOiAlbSBlbiBpbnRlbnRhciBjcmVhciBlbCBAZCAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIGVuIGNyZWFyIGVsIEBiIGRlIEBkIG5vdVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBkaXJlY3RvcnkgYmxvY2sgZm9yIC9sb3N0K2ZvdW5kXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgImV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSBlbiBjcmVhciBlbCBAYiBkZSBAZCBub3UgcGVyIGEgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCBvbiBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gYWp1c3RhciBlbCBub21icmUgZGUgbm9kZXMtaSBhbCBAaSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiTm8gcydoYSBwb2d1dCByZXBhcmFyIGVsIHBhcmUgZGVsIEBpICVpOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5vIHMnaGEgcG9ndXQgcmVwYXJhciBlbCBwYXJlIGRlbCBAaSAlaTogbm8gcydoYSB0cm9iYXQgbCdAZSBkZSBAZCBwYXJlXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gY3JlYXIgZWwgQGQgYXJyZWwgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBjcmVhciBlbCBAZCAvQGwgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgImVsIEByIG5vIMOpcyB1biBAZDsgcydpbnRlcnJvbXByw6AuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIk5vIGVzIHBvdCBjb250aW51YXIgc2Vuc2UgdW4gQHIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCBubyDDqXMgdW4gQGQgKG5vZGUtaT0laSlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3NQorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKKyMsIGZ1enp5Cittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICJMYSBpbWF0Z2UgKCVzKSBlc3TDoCB4aWZyYWRhXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiUGFzIDNBOiBvcHRpbWl0emFjacOzIGRlbHMgZGlyZWN0b3Jpc1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgY3JlYXIgbCdpdGVyYWRvciBkaXJzX3RvX2hhc2g6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBvcHRpbWl0emFyIGVsIGRpcmVjdG9yaSAlcSAoJWQpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgIlMnZXN0YW4gb3B0aW1pdHphbnQgZWxzIGRpcmVjdG9yaXM6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIlBhcyA0OiBjb21wcm92YWNpw7MgZGVscyBub21icmVzIGRlIHJlZmVyw6huY2llc1xuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIkBpIGRlIEB6ICVpIEB1LiAgIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICJAaSAlaSBAdVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJlbCBub21icmUgZGUgcmVmZXLDqG5jaWVzIGRlbCBAaSAlcyDDqXMgJUlsLCBAcyAlTi4iCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiQVbDjVM6IFMnSEEgUFJPRFXDj1QgVU4gRVJST1IgREUgUFJPR1JBTUFDScOTIEVOIEVMIEUyRlNDSyFcbiIKKyJcdE8gQsOJIEFMR1VOIENBUCBERSBQQVJEQUwgKE8gU0lHVUksIFRVKSBFU1TDgCBDT01QUk9WQU5UIFVOIFNJU1RFTUFcbiIKKyJcdERFIEZJVFhFUlMgTVVOVEFUIChFTiBWSVUpLlxuIgorImlub2RlX2xpbmtfaW5mb1slaV0gw6lzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IMOpcyAlSWwuICBIYXVyaWVuIGRlICIKKyJjb2luY2lkaXIhXG4iCisKKyMgRklYTUUKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiUGFzIDU6IGNvbXByb3ZhY2nDsyBkZWwgcmVzdW0gZGUgbGEgaW5mb3JtYWNpw7MgZGVsIEBnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiRWwgZmFyY2ltZW50IGFsIGZpbmFsIGRlbCBAQiBkZWwgQGkgbm8gZXN0w6AgaGFiaWxpdGF0LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2OAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiRWwgZmFyY2ltZW50IGFsIGZpbmFsIGRlbCBAQiBkZWwgQGIgbm8gZXN0w6AgaGFiaWxpdGF0LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJEaWZlcsOobmNpZXMgZGVsIEBCIGRlbCBAYjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiRGlmZXLDqG5jaWVzIGRlbCBAQiBkZWwgQGk6ICIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKyJFbCBub21icmUgZGUgbm9kZXMtaSBsbGl1cmVzIG5vIMOpcyBjb3JyZWN0ZSBwZXIgYWwgQGcgbsO6bS4gJWcgKCVpLCByZWNvbXB0ZT0iCisiJWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorIkVsIG5vbWJyZSBkZSBkaXJlY3RvcmlzIG5vIMOpcyBjb3JyZWN0ZSBwZXIgYWwgQGcgbsO6bS4gJWcgKCVpLCByZWNvbXB0ZT0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIkVsIG5vbWJyZSBkZSBub2Rlcy1pIGxsaXVyZXMgbm8gw6lzIGNvcnJlY3RlICglaSwgcmVjb21wdGU9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorIkVsIG5vbWJyZSBkZSBAYnMgbGxpdXJlcyBubyDDqXMgY29ycmVjdGUgcGVyIGFsIEBnIG7Dum0uICVnICglaSwgcmVjb21wdGU9IgorIiVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiRWwgbm9tYnJlIGRlIEBicyBsbGl1cmVzIG5vIMOpcyBjb3JyZWN0ZSAoJWksIHJlY29tcHRlPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorIkVSUk9SIERFIFBST0dSQU1BQ0nDkzogRWxzIGZpbmFscyBkZWwgQEIgKCViLCAlYykgZGVsIEBmICgjJU4pIG5vICIKKyJjb2luY2lkZWl4ZW4gYW1iIGVscyBmaW5hbHMgZGVsIEBCICglaSwgJWopIGNhbGN1bGF0c1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogZnVkZ2luZyBlbmQgb2YgYml0bWFwICglTilcbiIKK21zZ3N0ciAiRXJyb3IgaW50ZXJuOiBlcyBmYWxzZWphIGVsIGZpbmFsIGRlbCBtYXBhIGRlIGJpdHMgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGlub2RlIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGkgQEI6ICVtXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgY29waWFudCBlbiByZWVtcGxhw6dhciBlbCBAQiBkZWwgQGk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBjb3BpYW50IGVuIHJlZW1wbGHDp2FyIGVsIEBCIGRlbCBAYjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2socykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk3OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYihzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbiIKK21zZ3N0ciAiIgorIkVsIEBnICVnIGRlIEBiKHMpIHMnZXN0w6AgZmVudCBzZXJ2aXIsIHBlcsOyIGVsIEBnIGVzdMOgIG1hcmNhdCBjb20gIgorIkJMT0NLX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICIiCisiRWwgQGcgJWcgZGUgQGkocykgcydlc3TDoCBmZW50IHNlcnZpciwgcGVyw7IgZWwgQGcgZXN0w6AgbWFyY2F0IGNvbSAiCisiSU5PREVfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY3JlYXRlIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwMQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICJUb3JuYSBhIGNyZWFyIGVsIEBqIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDYKK21zZ2lkICJVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTiIKK21zZ3N0ciAiQWN0dWFsaXR6YSBsYSBpbmZvcm1hY2nDsyBkZSBsYSBxdW90YSBkZSB0aXB1cyAlTiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICIiCisiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBlc3RhYmxpciBsYSBpbmZvcm1hY2nDsyBkZSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgIgorIkBnIGRlIEBiOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvOiAlbVxuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIHF1YW50IHMnZXNjcml2aWEgbGEgaW5mb3JtYWNpw7MgZGVsIHNpc3RlbWE6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIHF1YW4gZXMgYnVpZGF2ZW4gbGVzIGVzY3JpcHR1cmVzIGRlbCBkaXNwb3NpdGl1ICIKKyJkJ2VtbWFnYXR6ZW1hbWVudDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAiQWN0dWFsaXR6YSBsYSBpbmZvcm1hY2nDsyBkZSBsYSBxdW90YSBkZSB0aXB1cyAlTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBhbWIgdW4gY29kaSBubyBnZXN0aW9uYXQgKDB4JXgpXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICJJR05PUkFUIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIk1lbcOycmlhIHV0aWxpdHphZGE6ICVkLCB0ZW1wcyB0cmFuc2NvcnJlZ3V0OiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJzaXplIG9mIGlub2RlPSVkXG4iCittc2dzdHIgIm1pZGEgZGVsIG5vZGUtaT0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJlbiBpbmljaWFyIGwnZXhwbG9yYWNpw7MgZGVscyBub2Rlcy1pIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICJlbiBmZXIgbCdleHBsb3JhY2nDsyBkZWxzIG5vZGVzLWkiCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAiZW4gZmVyIGxhIGNyaWRhIGEgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgcGVyIGFsIG5vZGUtaSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJlbiBmZXIgbGEgY3JpZGEgYSBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBwZXIgYWwgbm9kZS1pICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzQKK21zZ2lkICJUcnVuY2F0aW5nIgorbXNnc3RyICJUcnVuY2FtZW50IgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiTmV0ZWphIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJGb3JtYSBkJ8O6czogJXMgWy1wYW55cmNkZnZ0REZWXSBbLWIgc3VwZXJibG9jXSBbLUIgbWlkYWRlYmxvY11cbiIKKyJcdFx0Wy1JIGJsb2NzX2RlX21lbV9pbnRlcm1fZGVsX25vZGUtaV0gWy1QIHByb2Nlc3NfaW5vZGVfc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGZpdHhlcl9kZV9ibG9jc19lcnJvbmlzXSBbLUMgZmRdIFstaiByZWdfZGVfdHJhbnNfZXh0ZXJuXVxuIgorIlx0XHRbLUUgb3BjaW9uc19hbXBsaWFkZXNdIGRpc3Bvc2l0aXVcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkFqdWRhIGQnZW1lcmfDqG5jaWE6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIFJlcGFyYWNpw7MgYXV0b23DoHRpY2EgKHNlbnNlIHByZWd1bnRlcylcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTm8gZmFjaXMgY2FwIGNhbnZpIGFsIHNpc3RlbWEgZGUgZml0eGVyc1xuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWVpeCDCq3PDrcK7IHBlciBhIHRvdGVzIGxlcyBwcmVndW50ZXNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQ29tcHJvdmEgc2kgaGkgaGEgYmxvY3MgZXJyb25pcyBpIGFmZWdlaXgtbG9zIGEgbGEgIgorImxsaXN0YSBkZSBibG9jcyBlcnJvbmlzXG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcsOnYSBsYSBjb21wcm92YWNpw7MgZW5jYXJhIHF1ZSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgIgorInMnaGFnaSBtYXJjYXQgY29tIGEgbmV0XG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKKyMsIGZ1enp5Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiLXYgICAgICAgICAgICAgICAgICAgRGV0YWxsYXRcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgRmEgc2VydmlyIGVsIHN1cGVyYmxvYyBhbHRlcm5hdGl1XG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcsOnYSBsYSBtaWRhIGRlbCBibG9jIHF1YW4gYnVzY2EgdW4gc3VwZXJibG9jXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIEVzdGFibGVpeCBsYSB1YmljYWNpw7MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyAiCisiZXh0ZXJuXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFmZWdlaXggYSBsYSBsbGlzdGEgZGUgYmxvY3MgZXJyb25pcyAoYmFkYmxvY2tzKVxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBFc3RhYmxlaXggbGEgbGxpc3RhIGRlIGJsb2NzIGVycm9uaXMoYmFkYmxvY2tzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJXUvJXUgZml0eGVycyAoJTBkLiVkJSUgbm8gY29udGlndXMpLCAlbGx1LyVsbHUgYmxvY3NcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBub2RlLWkgZW1wcmF0ICglMi4yZiUlIGRlICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBub2Rlcy1pIGVtcHJhdHMgKCUyLjJmJSUgZGUgJXUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IGZpdHhlciBubyBjb250aWd1ICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBmaXR4ZXJzIG5vIGNvbnRpZ3VzICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBkaXJlY3Rvcmkgbm8gY29udGlndSAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgZGlyZWN0b3JpcyBubyBjb250aWd1cyAoJTBkLiVkJSUpXG4iCisKKyMgaW5kOiBpbmRpcmVjdCwgZGluZDogZG91YmxlIGluZGlyZWN0LCB0aW5kOiB0cmlwbGUgaW5kaXJlY3QgKGRwbSkKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIgICAgIG5vbWJyZSBkZSBub2Rlcy1pIGFtYiBibG9jcyBpbmQvZGluZC90aW5kOiAldS8ldS8ldVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiAgICAgICAgICAgICBIaXN0b2dyYW1hIHByb2Z1bmQgZXN0w6hzOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IGJsb2MgZW1wcmF0ICglMi4yZiUlIGRlICVsbHUpXG4iCittc2dzdHJbMV0gIiUxMmxsdSBibG9jcyBlbXByYXRzICglMi4yZiUlIGRlICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1IGJsb2MgZG9sZW50XG4iCittc2dzdHJbMV0gIiUxMnUgYmxvY3MgZG9sZW50c1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpdHhlciBncmFuXG4iCittc2dzdHJbMV0gIiUxMnUgZml0eGVycyBncmFuc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBmaXR4ZXIgbm9ybWFsXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IGZpdHhlcnMgbm9ybWFsc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUgZGlyZWN0b3JpXG4iCittc2dzdHJbMV0gIiUxMnUgZGlyZWN0b3Jpc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBmaXR4ZXIgZGUgZGlzcG9zaXRpdSBvcmllbnRhdCBhIGNhcsOgY3RlcnNcbiIKK21zZ3N0clsxXSAiJTEydSBmaXR4ZXJzIGRlIGRpc3Bvc2l0aXUgb3JpZW50YXQgYSBjYXLDoGN0ZXJzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBmaXR4ZXIgZGUgZGlzcG9zaXRpdSBvcmllbnRhdCBhIGJsb2NzXG4iCittc2dzdHJbMV0gIiUxMnUgZml0eGVycyBkZSBkaXNwb3NpdGl1IG9yaWVudGF0IGEgYmxvY3NcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSBmaWZvXG4iCittc2dzdHJbMV0gIiUxMnUgZmlmb3NcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBlbmxsYcOnXG4iCittc2dzdHJbMV0gIiUxMnUgZW5sbGHDp29zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc3ltYm9saWMgbGluayIKK21zZ2lkX3BsdXJhbCAiJTEydSBzeW1ib2xpYyBsaW5rcyIKK21zZ3N0clswXSAiJTEydSBlbmxsYcOnIHNpbWLDsmxpYyIKK21zZ3N0clsxXSAiJTEydSBlbmxsYcOnb3Mgc2ltYsOybGljcyIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBlbmxsYcOnIHNpbWLDsmxpYyByw6BwaWQpXG4iCittc2dzdHJbMV0gIiAoJXUgZW5sbGHDp29zIHNpbWLDsmxpY3MgcsOgcGlkcylcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUgc8OyY29sXG4iCittc2dzdHJbMV0gIiUxMnUgc8OyY29sc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpdHhlclxuIgorbXNnc3RyWzFdICIlMTJ1IGZpdHhlcnNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgImVuIGRldGVybWluYXIgc2kgJXMgZXN0w6AgbXVudGF0LiIKKworIzogZTJmc2NrL3VuaXguYzoyNTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIkF2w61zISAgJXMgZXN0w6AgbXVudGF0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJBdsOtcyEgICVzIHMnZXN0w6AgZmVudCBzZXJ2aXIuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIGVzdMOgIG11bnRhdC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyBzJ2VzdMOgIGZlbnQgc2VydmlyLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTm8gZXMgcG90IGNvbnRpbnVhciwgcydpbnRlcnJvbXByw6AuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjcxCittc2dpZCAiIgorIlxuIgorIlxuIgorIldBUk5JTkchISEgIFRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuICAgSWYgeW91IGNvbnRpbnVlIHlvdSAqKipXSUxMKioqXG4iCisiY2F1c2UgKioqU0VWRVJFKioqIGZpbGVzeXN0ZW0gZGFtYWdlLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiQVbDjVMhISEgIEVsIHNpc3RlbWEgZGUgZml0eGVycyBlc3TDoCBtdW50YXQuICBTaSBjb250aW51ZXUgKipDQVVTQVJFVSoqKlxuIgorImRhbnlzICoqKkdSRVVTKioqIGFsIHNpc3RlbWEgZGUgZml0eGVycy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIkVzdGV1IHNlZ3VyIHF1ZSB2b2xldSBjb250aW51YXI/IgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgInMnaGEgaW50ZXJyb21wdXQgbGEgY29tcHJvdmFjacOzLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgY29udMOpIHVuIHNpc3RlbWEgZGUgZml0eGVycyBhbWIgZXJyb3JzIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgbm8gZXMgdmEgZGVzbXVudGFyIGNvcnJlY3RhbWVudCIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIgorIiBsZXMgY2FyYWN0ZXLDrXN0aXF1ZXMgZGVsIHN1cGVyYmxvYyBwcmltYXJpIHPDs24gZGlmZXJlbnRzIGRlIGxlcyBkZWwgZGUgbGEgIgorImPDsnBpYSBkZSBzZWd1cmV0YXQiCisKKyM6IGUyZnNjay91bml4LmM6Mzc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiBoYXMgYmVlbiBtb3VudGVkICV1IHRpbWVzIHdpdGhvdXQgYmVpbmcgY2hlY2tlZCIKK21zZ3N0ciAiIHMnaGEgbXVudGF0ICV1IHZlZ2FkZXMgc2Vuc2UgaGF2ZXIgZXN0YXQgY29tcHJvdmF0IgorCisjOiBlMmZzY2svdW5peC5jOjM4NgorbXNnaWQgIiBoYXMgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdGltZSBpbiB0aGUgZnV0dXJlIgorbXNnc3RyICIiCisidMOpIGxhIGRhcnJlcmEgaG9yYSBkZSBjb21wcm92YWNpw7MgZGVsIHNpc3RlbWEgZGUgZml0eGVycyDDqXMgZW4gZWwgZnV0dXIiCisKKyM6IGUyZnNjay91bml4LmM6MzkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiBoYXMgZ29uZSAldSBkYXlzIHdpdGhvdXQgYmVpbmcgY2hlY2tlZCIKK21zZ3N0ciAiIG5vIHMnaGEgY29tcHJvdmF0IGRlcyBkZSBmYSAldSBkaWVzIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIGVzIGZvcsOnYXLDoCBsYSBjb21wcm92YWNpw7MuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjbGVhbiwgJXUvJXUgZmlsZXMsICVsbHUvJWxsdSBibG9ja3MiCittc2dzdHIgIiVzOiBuZXQsICV1LyV1IGZpdHhlcnMsICVsbHUvJWxsdSBibG9jcyIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChzJ2hhIGFqb3JuYXQgbGEgY29tcHJvdmFjacOzOyBzJ2VzdMOgIHV0aWxpdHphbnQgbGEgYmF0ZXJpYSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChlcyBjb21wcm92YXLDoCBkZXNwcsOpcyBkZWwgbXVudGF0Z2Ugc2Vnw7xlbnQpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1OQorIywgYy1mb3JtYXQKK21zZ2lkICIgKGNoZWNrIGluICVsZCBtb3VudHMpIgorbXNnc3RyICIgKGVzIGNvbXByb3ZhcsOgIGVuICVsZCBtdW50YWRlcykiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIkVSUk9SOiBubyBzJ2hhIHBvZ3V0IG9icmlyIC9kZXYvbnVsbCAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJMYSB2ZXJzacOzIGRlbHMgYXRyaWJ1dHMgYW1wbGlhdHMgbm8gw6lzIHbDoGxpZGEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICJQYXLDoG1ldHJlIGRlIGNhbnZpIGRlIG1pZGEgbm8gdsOgbGlkOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiRXMgZGVzY29uZWl4IGwnb3BjacOzIGFtcGxpYWRhOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjc1MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIGUyZnNjayBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIkhpIGhhIHVuIGVycm9yIGRlIHNpbnRheGkgYWwgZml0eGVyIGRlIGNvbmZpZ3VyYWNpw7MgZGUgbCdlMmZzY2sgKCVzLCBsw61uaWEgIyIKKyIlZClcbiIKKyJcdCVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIHZhbGlkYXIgZWwgZGVzY3JpcHRvciBkZSBmaXR4ZXIgJWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAiRWwgZml0eGVyIGRlc2NyaXB0b3IgZGUgbGEgaW5mb3JtYWNpw7MgZGUgY29tcGxldGF0IG5vIMOpcyB2w6BsaWQiCisKKyM6IGUyZnNjay91bml4LmM6ODQ0Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICIiCisiTm9tw6lzIGVzIHBvdCBlc3BlY2lmaWNhciB1bmEgZGUgbGVzIG9wY2lvbnMgLXAvLWEsIC1uIG8gLXkgYSBsYSB2ZWdhZGEuIgorCisjOiBlMmZzY2svdW5peC5jOjg2NQorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgLXQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKK21zZ3N0ciAiTCdvcGNpw7MgLXQgbm8gZXN0w6AgaW1wbGVtZW50YWRhIGVuIGFxdWVzdGEgdmVyc2nDsyBkZSBsJ2UyZnNjay5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgcmVzb2xkcmUgwqslc8K7IgorCisjOiBlMmZzY2svdW5peC5jOjk1MgorbXNnaWQgIlRoZSAtbiBhbmQgLUQgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGVzIG9wY2lvbnMgLW4gaSAtRCBubyBzw7NuIGNvbXBhdGlibGVzLiIKKworIzogZTJmc2NrL3VuaXguYzo5NTcKK21zZ2lkICJUaGUgLW4gYW5kIC1jIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxlcyBvcGNpb25zIC1uIGkgLWMgbm8gc8OzbiBjb21wYXRpYmxlcyIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxlcyBvcGNpb25zIC1uIGkgLWwvLUwgbm8gc8OzbiBjb21wYXRpYmxlcy4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJMZXMgb3BjaW9ucyAtbiBpIC1EIG5vIHPDs24gY29tcGF0aWJsZXMuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorIywgZnV6enkKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGVzIG9wY2lvbnMgLW4gaSAtRCBubyBzw7NuIGNvbXBhdGlibGVzLiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICJObyBlcyBwb2RlbiB1dGlsaXR6YXIgbGVzIG9wY2lvbnMgLWMgaSAtbC8tTCBhbCBtYXRlaXggdGVtcHMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcgwqslc8K7IG5vIMOpcyB1biBlbnRlclxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJMJ2FyZ3VtZW50IG5vIG51bcOocmljIGRlIC0lYyBubyDDqXMgdsOgbGlkICjCqyVzwrspXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTE5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGludGVydmFsIGlzICV1IHNlY29uZHMgYW5kIHRvdGFsIHdhaXQgdGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2UgIgorIndhaXQuLi5cbiIKK21zZ3N0ciAiIgorIkwnaW50ZXJ2YWwgTU1QIMOpcyBkZSAldSBzZWdvbnMgaSBlbCB0ZW1wcyBkJ2VzcGVyYSB0b3RhbCDDqXMgZGUgJXUgc2Vnb25zLiAiCisiRXNwZXJldSBzaSB1cyBwbGF1Li4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgIm1lbnRyZSBlcyBjb21wcm92YXZhIGVsIGJsb2MgTU1QIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorIlNpIGVzdGV1IHNlZ3VyIHF1ZSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgbm8gcydlc3TDoCBmZW50IHNlcnZpciBhIGNhcCBub2RlLCAiCisiZXhlY3V0ZXU6XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkaXNwb3NpdGl1fSdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgYmxvYyBNTVAuIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyJTJ2VzdMOgIHNvYnJlZXNjcml2aW50IGVsIHNpc3RlbWEgZGUgZml0eGVycyBleGlzdGVudDsgbGEgcXVhbCBjb3NhIGVzIHBvdCAiCisiZGVzZmVyIHNpIGVzY3Jpdml1OlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICJlbiBpbnRlbnRhciBzdXByaW1pciAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiZW4gcHJvdmFyIGRlIGNvbmZpZ3VyYXIgZWwgZml0eGVyIGRlIGRlc2ZlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiRXJyb3I6IGxhIHZlcnNpw7MgZGUgbGEgYmlibGlvdGVjYSBkZSBsJ2V4dDJmcyDDqXMgbWFzc2EgYW50aWdhLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICJlbiBpbnRlbnRhciBpbmljaWFsaXR6YXIgZWwgcHJvZ3JhbWEiCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICJcdFMndXRpbGl0emEgJXMsICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQwNQorbXNnaWQgIm5lZWQgdGVybWluYWwgZm9yIGludGVyYWN0aXZlIHJlcGFpcnMiCittc2dzdHIgImNhbCB1biB0ZXJtaW5hbCBwZXIgYSBsZXMgcmVwYXJhY2lvbnMgaW50ZXJhY3RpdmVzIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyBwcm92YW50IGVscyBibG9jcyBkZSBjw7JwaWEgZGUgc2VndXJldGF0Li4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIlN1cGVyYmxvYyBubyB2w6BsaWQsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiRWxzIGRlc2NyaXB0b3JzIGRlIGdydXAgbm8gZXN0YW4gZW4gYm9uIGVzdGF0Li4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlczogJXMgbWVudHJlIGVzIGZlaWVuIHNlcnZpciBlbHMgYmxvY3MgZGUgY8OycGlhIGRlIHNlZ3VyZXRhdCIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6IG1lbnRyZSBlcyB0b3JuYXZhIGFsIHN1cGVyYmxvYyBvcmlnaW5hbFxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTIKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgYXBwYXJlbnRseSB0b28gaGlnaCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKKyIoT3IgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayBpcyBjb3JydXB0KVxuIgorIlxuIgorbXNnc3RyICIiCisiTGEgdmVyc2nDsyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIMOpcyBtYXNzYSByZWNlbnQgcGVyIGEgYXF1ZXN0YSB2ZXJzacOzIGRlICIKKyJsJ2UyZnNjay5cbiIKKyIoTyBiw6kgZWwgc3VwZXJibG9jIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgZXN0w6AgbWFsbcOocylcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiUG90IHNlciBxdWUgYWl4w7Igc2lndWkgdW5hIHBhcnRpY2nDsyBkZSBtaWRhIHplcm8/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIiIKKyJDYWwgcXVlIHRpbmd1ZXUgYWNjw6lzIGRlICVzIGFsIHNpc3RlbWEgZGUgZml0eGVycyBvIGLDqSBxdWUgc2lndWV1IGwndXN1YXJpICIKKyJwcmltYXJpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiUG90IHNlciBxdWUgbm8gZXhpc3RlaXhpIGVsIGRpc3Bvc2l0aXUgbyBiw6kgcXVlIHNpZ3VpIGQnaW50ZXJjYW52aT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI5Cittc2dpZCAiRmlsZXN5c3RlbSBtb3VudGVkIG9yIG9wZW5lZCBleGNsdXNpdmVseSBieSBhbm90aGVyIHByb2dyYW0/XG4iCittc2dzdHIgIiIKKyJQb3Qgc2VyIHF1ZSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgbCdoYWdpIG11bnRhdCBvIG9iZXJ0IHVuIGFsdHJlIHByb2dyYW1hIGRlICIKKyJtYW5lcmEgZXhjbHVzaXZhP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzMKK21zZ2lkICJQb3NzaWJseSBub24tZXhpc3RlbnQgZGV2aWNlP1xuIgorbXNnc3RyICJQb3Qgc2VyIHF1ZSBubyBleGlzdGVpeGkgZWwgZGlzcG9zaXRpdT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJFbCBkaXNjIGVzdMOgIHByb3RlZ2l0IGNvbnRyYSBlc2NyaXB0dXJhOyB1dGlsaXR6ZXUgbCdvcGNpw7NcbiIKKyItbiBwZXIgYSBmZXIgdW5hIGNvbXByb3ZhY2nDsyBkZSBub23DqXMtbGVjdHVyYSBkZWwgZGlzcG9zaXRpdS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjA0Cittc2dpZCAiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIgorbXNnc3RyICJIYXVyw61ldSBkJ29idGVuaXIgdW5hIHZlcnNpw7MgbcOpcyByZWNlbnQgZGUgbCdlMmZzY2siCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgImVuIGNvbXByb3ZhciBlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMgcGVyIGEgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICJObyBlcyBwb3QgY29udGludWFyIHNlbnNlIHVuIEByLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisiQXbDrXM6IHMnb21ldCBsYSByZWN1cGVyYWNpw7MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBwZXJxdcOoIHMnZXN0w6AgIgorImNvbXByb3ZhbnQgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGVuIG1vZGUgZGUgbm9tw6lzLWxlY3R1cmEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY3NAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gc2V0IHN1cGVyYmxvY2sgZmxhZ3Mgb24gJXNcbiIKK21zZ3N0ciAibm8gcydoYW4gcG9ndXQgZGVmaW5pciBlbHMgc2VueWFsYWRvcnMgZGVsIHN1cGVyYmxvYyBhICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICJObyBzJ2hhIHRyb2JhdCBlbCBzdXBlcmJsb2MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9uc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIlMnaGEgc3VwcmltaXQgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJlbiByZWN1cGVyYXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGV4dDMgZGUgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiVzIHTDqSBjYXJhY3RlcmlzdGlxdWVzIG5vIGltcGxlbWVudGFkZXM6IgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIlczogJXMgZW4gbGxlZ2lyIGVsIG5vZGUtaSBkZWxzIGJsb2NzIGVycm9uaXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzcyCittc2dpZCAiVGhpcyBkb2Vzbid0IGJvZGUgd2VsbCwgYnV0IHdlJ2xsIHRyeSB0byBnbyBvbi4uLlxuIgorbXNnc3RyICJBaXjDsiBubyDDqXMgdW4gYm9uIHByZXNhZ2ksIHBlcsOyIHMnaW50ZW50YXLDoCBjb250aW51YXIuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIKK21zZ3N0ciAiQ3JlYWNpw7MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyAoJWQgYmxvY3MpOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIgRmV0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIHMnaGEgdG9ybmF0IGEgY3JlYXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIC0gZWwgc2lzdC4gZGUgZml0eGVycyAiCisidG9ybmEgYSBzZXIgZXh0MyAqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM2Cittc2dpZCAiYWJvcnRlZCIKK21zZ3N0ciAicydoYSBpbnRlcnJvbXB1dCIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiBzJ2hhIGNhbmNlbMK3bGF0IGwnZTJmc2NrLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAiUydlc3TDoCB0b3JuYW50IGEgaW5pY2lhciBsJ2UyZnNjayBkZXMgZGVsIGNvbWVuw6dhbWVudC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAiZW4gcmVpbmljaWFyIGVsIGNvbnRleHQiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogUydIQSBNT0RJRklDQVQgRUwgU0lTVEVNQSBERSBGSVRYRVJTICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqIFJFSU5JQ0lFVSBFTCBMSU5VWCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIEFWw41TOiBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgZW5jYXJhIHTDqSBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJzUyIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8cz4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKHMvbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJzJ2hhIGNhbmNlbMK3bGF0XG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgInPDrVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2OAorbXNnaWQgIm5vXG4iCittc2dzdHIgIm5vXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBub1xuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IHPDrVxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgInllcyIKK21zZ3N0ciAic8OtIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgIm5vIgorbXNnc3RyICJubyIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBFbChzKSBtYXBhKGVzKSBkZSBibG9jcyBubyDDqXMgY29ycmVjdGUgcGVyICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgImVzIGxsZWdlaXhlbiBlbCBtYXBlcyBkZSBiaXRzIGRlbHMgYmxvY3MgaSBkZWxzIG5vZGVzLWkiCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgImVuIHRvcm5hciBhIGludGVudGFyIGxhIGxlY3R1cmEgZGVscyBtYXBlcyBkZSBiaXRzIHBlciBhICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgImVzY3JpcHR1cmEgZGVscyBtYXBlcyBkZSBiaXRzIGRlIGJsb2MgaSBkZSBub2RlLWkiCisKKyM6IGUyZnNjay91dGlsLmM6MzM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgImVuIHRvcm5hciBhIGVzY3JpdXJlIGVscyBtYXBlcyBkZSBiaXRzIGRlIGJsb2MgaSBkZSBub2RlLWkgcGVyIGRlICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IElOQ09OU0lTVMOITkNJQSBJTkVTUEVSQURBOyBFWEVDVVRFVSBmc2NrIE1BTlVBTE1FTlQuXG4iCisiXHQow6lzIGEgZGlyLCBzZW5zZSBsZXMgb3BjaW9ucyAtYSBvIC1wKVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIk1lbcOycmlhIHV0aWxpdHphZGE6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIk1lbcOycmlhIHV0aWxpdHphZGE6ICVsdSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICJ0ZW1wczogJTUuMmYvJTUuMmYvJTUuMmZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIgorbXNnc3RyICJ0ZW1wcyB0cmFuc2NvcnJlZ3V0OiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVsIG5vZGUtaSAlbHUgYSAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo1MDggZTJmc2NrL3V0aWwuYzo1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIG5vZGUtaSAlbHUgYSAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo3NjUKK21zZ2lkICIiCisiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBtb2RpZmllZCB3aGlsZSBmc2NrIGlzICIKKyJydW5uaW5nLlxuIgorbXNnc3RyICIiCisiSU5DT05HUlXDiE5DSUEgSU5FU1BFUkFEQTogRWwgc2lzdGVtYSBkZSBmaXR4ZXJzIHF1ZSBsJ2ZzY2sgZXN0w6AgbW9kaWZpY2FudCAiCisicydlc3TDoCBleGVjdXRhbnQuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzIKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJmZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgIgorIm1heF9iYWRfYmxvY2tzXVxuIgorIiAgICAgICBbLXAgbnVtX3Bhc3Nlc10gWy10IHRlc3RfcGF0dGVybiBbLXQgdGVzdF9wYXR0ZXJuIFsuLi5dXV1cbiIKKyIgICAgICAgZGV2aWNlIFtsYXN0X2Jsb2NrIFtmaXJzdF9ibG9ja11dXG4iCittc2dzdHIgIiIKKyJGb3JtYSBkJ8O6czogJXMgWy1iIG1pZGFfZGVsX2Jsb2NdIFstaSBmaXR4ZXJfZCdlbnRyYWRhXSBbLW8gIgorImZpdHhlcl9kZV9zb3J0aWRhXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY3NfYV9sYV92ZWdhZGFdIFstZCBmYWN0b3JfZGVfcmV0YXJkX2VudHJlX2xlY3R1cmVzXSBbLWUgIgorImJsb2NzX2Vycm9uaXNfbcOgeF1cbiIKKyIgICAgICAgWy1wIG5vbWJyZV9kZV9wYXNzb3NdIFstdCBwYXRyw7NfZGVfcHJvdmEgWy10IHBhdHLDs19kZV9wcm92YSBbLi4uXV1dXG4iCisiICAgICAgIGRpc3Bvc2l0aXUgW2RhcnJlcl9ibG9jIFtibG9jX2QnaW5pY2ldXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IGxlcyBvcGNpb25zIC1uIGkgLXcgc8OzbiBtdXR1YWxtZW50IGV4Y2x1c2l2ZXMuXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2LjJmJSUgZG9uZSwgJXMgZWxhcHNlZC4gKCVkLyVkLyVkIGVycm9ycykiCittc2dzdHIgIiU2LjJmJSUgZmV0LCAlcyB0cmFuc2NvcnJlZ3V0cy4gKCVkLyVkLyVkIGVycm9ycykiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzI4Cittc2dpZCAiVGVzdGluZyB3aXRoIHJhbmRvbSBwYXR0ZXJuOiAiCittc2dzdHIgIkNvbXByb3ZhY2nDsyBhbWIgdW4gcGF0csOzIGFyYml0cmFyaTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM0NgorbXNnaWQgIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IgorbXNnc3RyICJDb21wcm92YWNpw7MgYW1iIGVsIHBhdHLDsyAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAiZHVyYW50IGxhIGNlcmNhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIlZhbG9yIGVzdHJhbnkgKCVsZCkgYSBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAiZHVyYW50IGwnZXhlY3VjacOzIGRlIGV4dDJmc19zeW5jX2RldmljZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0OTYgbWlzYy9iYWRibG9ja3MuYzo3NTgKK21zZ2lkICJ3aGlsZSBiZWdpbm5pbmcgYmFkIGJsb2NrIGxpc3QgaXRlcmF0aW9uIgorbXNnc3RyICJlbiBpbmljaWFyIGxhIGl0ZXJhY2nDsyBwZXIgbGEgbGxpc3RhIGRlIGJsb2NzIGVycm9uaXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJlbiBhc3NpZ25hciBsZXMgbWVtw7JyaWVzIGludGVybcOoZGllcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiQ29tcHJvdmFjacOzIGRlbHMgYmxvY3MgJWx1IGEgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiUydlc3TDoCBjb21wcm92YW50IHNpIGhpIGhhIGJsb2NzIGVycm9uaXMgZW4gbW9kZSBkZSBub23DqXMtbGVjdHVyYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiUydlc3TDoCBjb21wcm92YW50IHNpIGhpIGhhIGJsb2NzIGVycm9uaXMgKHByb3ZhIGRlIG5vbcOpcy1sZWN0dXJhKTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIkhpIGhhIG1hc3NhIGJsb2NzIGVycm9uaXMsIHMnaW50ZXJyb21wcsOgIGxhIGNvbXByb3ZhY2nDs1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisiUydlc3TDoCBjb21wcm92YW50IHNpIGhpIGhhIGJsb2NzIGVycm9uaXMgZW4gbW9kZSBkZSBsZWN0dXJhLWVzY3JpcHR1cmFcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkRlbHMgYmxvY3MgJWx1IGEgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkxlY3R1cmEgaSBjb21wYXJhY2nDszogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4MQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAiIgorIlMnZXN0w6AgY29tcHJvdmFudCBzaSBoaSBoYSBibG9jcyBlcnJvbmlzIGVuIG1vZGUgZGUgbGVjdHVyYS1lc2NyaXB0dXJhIG5vICIKKyJkZXN0cnVjdGl1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIiIKKyJTJ2VzdMOgIGNvbXByb3ZhbnQgc2kgaGkgaGEgYmxvY3MgZXJyb25pcyAocHJvdmEgZW4gbW9kZSBkZSBsZWN0dXJhLSIKKyJlc2NyaXB0dXJhIG5vIGRlc3RydWN0aXUpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTJ2hhIGludGVyY2VwdGF0IHVuYSBpbnRlcnJ1cGNpw7M7IHMnaW5pY2lhcmFuIGxlcyB0YXNxdWVzIGRlIG5ldGVqYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgImR1cmFudCBsJ2VzY3JpcHR1cmEgZGUgbGVzIGRhZGVzIGRlIHByb3ZhLCBibG9jICVsdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5OTggbWlzYy91dGlsLmM6MTMxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQ7ICIKK21zZ3N0ciAiJXMgZXN0w6AgbXVudGF0OyAiCisKKyMgRklYTUU6IEhvcGUgLSBlc3BlcmVtID8gKGRwbSkKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisicydoYSBmb3LDp2F0IGJhZGJsb2NrcyBkZSB0b3RlcyBtYW5lcmVzLiAgU2VndXJhbWVudCAvZXRjL210YWIgc2lndWkgIgorImluY29ycmVjdGUuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAibCdleGVjdWNpw7MgZGUgYmFkYmxvY2tzIG5vIMOpcyBzZWd1cmEhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICIlcyBlc3TDoCBlc3NlbnQgdXRpbGl0emF0IHBlbCBzaXN0ZW1hOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMworbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJzJ2hhIGZvcsOnYXQgYmFkYmxvY2tzIGRlIHRvdGVzIG1hbmVyZXMuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgIiVzIG5vIHbDoGxpZCAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIm5vIGVzIHBvdCBhc3NpZ25hciBtZW3DsnJpYSBwZXIgYWwgcGF0csOzX2RlX3Byb3ZhIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICIiCisiTm9tw6lzIGVzIHBvdCBlc3BlY2lmaWNhciB1biBwYXRyw7NfZGVfcHJvdmEgY29tIGEgbcOgeGltIGVuIG1vZGUgZGUgbm9tw6lzLSIKKyJsZWN0dXJhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICIiCisiTm8gZXMgcG90IHV0aWxpdHphciB1biBwYXRyw7NfZGVfcHJvdmEgYXJiaXRyYXJpIGVuIG1vZGUgZGUgbm9tw6lzLWxlY3R1cmEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIwNAorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBtYW51YWxseVxuIgorbXNnc3RyICIiCisiTm8gcydoYSBwb2d1dCBkZXRlcm1pbmFyIGxhIG1pZGEgZGVsIGRpc3Bvc2l0aXU7XG4iCisibCdoYXVyZXUgZCdlc3BlY2lmaWNhciBtYW51YWxtZW50XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgImVuIGludGVudGFyIGRldGVybWluYXIgbGEgbWlkYSBkZWwgZGlzcG9zaXRpdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjE1Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAiw7psdGltIGJsb2MiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJwcmltZXIgYmxvYyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICJibG9jIGQnaW5pY2kgbm8gdsOgbGlkICglbGx1KTogaGF1cmlhIGRlIHNlciBpbmZlcmlvciBhICVsbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICJibG9jIGRlIGZpbmFsaXR6YWNpw7Mgbm8gdsOgbGlkICglbGx1KTogaGEgZGUgc2VyIHVuIHZhbG9yIGRlIDMyIGJpdHMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgImVuIGNyZWFyIGxhIGxsaXN0YSBkZSBibG9jcyBlcnJvbmlzIGVuIG1lbcOycmlhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiRml0eGVyIGQnZW50cmFkYSAtIGZvcm1hdCBpbmNvcnJlY3RlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiZW4gYWZlZ2lyIGEgbGEgbGxpc3RhIGRlIGJsb2NzIGVycm9uaXMgZW4gbWVtw7JyaWEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMzOAorIywgYy1mb3JtYXQKK21zZ2lkICJQYXNzIGNvbXBsZXRlZCwgJXUgYmFkIGJsb2NrcyBmb3VuZC4gKCVkLyVkLyVkIGVycm9ycylcbiIKK21zZ3N0ciAiUGFzIGNvbXBsZXRhdC4gUydoYW4gdHJvYmF0ICV1IGJsb2NzIGVycm9uaXMuICglZC8lZC8lZCBlcnJvcnMpXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIgorbXNnc3RyICJGb3JtYSBkJ8O6czogJXMgWy1SVmZdIFstKz1hQWNDZERlaWpzU3RUdV0gWy12IHZlcnNpw7NdIGZpdHhlcnMuLi5cbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAidmVyc2nDsyBubyB2w6BsaWRhIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJ2ZXJzacOzIG5vIHbDoGxpZGEgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAiZW4gaW50ZW50YXIgbW9zdHJhciBsYSBpbmZvcm1hY2nDsyBkZSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVscyBzZW55YWxhZG9ycyBhICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICJTJ2hhbiBlc3RhYmxlcnQgZWxzIHNlbnlhbGFkb3JzIGRlICVzIGNvbSBhICIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiZW4gZXN0YWJsaXIgZWxzIHNlbnlhbGFkb3JzIGEgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJTJ2hhIGVzdGFibGVydCBsYSB2ZXJzacOzIGRlICVzIGEgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiZW4gZXN0YWJsaXIgbGEgdmVyc2nDsyBhICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlMnaGEgZXN0YWJsZXJ0IGxhIHZlcnNpw7MgZGUgJXMgYSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiZW4gZXN0YWJsaXIgbGEgdmVyc2nDsyBhICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGFzc2lnbmFyIGxhIHZhcmlhYmxlIGRlbCBjYW3DrSBhIGNoYXR0cl9kaXJfcHJvYyIKKworIzogbWlzYy9jaGF0dHIuYzozMzcKK21zZ2lkICI9IGlzIGluY29tcGF0aWJsZSB3aXRoIC0gYW5kICtcbiIKK21zZ3N0ciAiPSBubyDDqXMgY29tcGF0aWJsZSBhbWIgLSBpICtcbiIKKworIzogbWlzYy9jaGF0dHIuYzozNDUKK21zZ2lkICJNdXN0IHVzZSAnLXYnLCA9LCAtIG9yICtcbiIKK21zZ3N0ciAiQ2FsIHV0aWxpdHphciDCqy12wrssID0sIC0gbyArXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgImVuIGxsZWdpciBlbCBub2RlLWkgJWx1IGEgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgImVuIGV4cGFuZGlyIGVsIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAiZW4gb2JyaXIgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIG5vZGUtaSAlbHUgYSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgImVuIGludGVudGFyIHRydW5jYXIgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJlbiBvYnJpciBsJ2VzY2FuZWlnIGRlIG5vZGVzLWkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgImVuIGFzc2lnbmFyIGxhIG1lbcOycmlhIGludGVybcOoZGlhIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE3NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVscyBzZW55YWxhZG9ycyBhICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIwMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBhdHRyaWJ1dGUgXCIlc1wiIHRvIGlub2RlICV1IgorbXNnc3RyICJlbiBlc2NyaXVyZSBlbCBub2RlLWkgJWx1IGEgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICJlbiBmZXIgbCdleHBsb3JhY2nDsyBkZWxzIG5vZGVzLWkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGlub2RlIFwiJXNcIiIKK21zZ3N0ciAiZW4gdWJpY2FyIGxhIG1lbcOycmlhIGludGVybcOoZGlhIHBlciBhbCBub2RlLWkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImVuIGxsZWdpciBlbCBub2RlLWkgJWx1IGEgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVscyBzZW55YWxhZG9ycyBhICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgImVuIGNlcmNhciBlbCAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgImVuIGNyZWFyIGVsIGRpcmVjdG9yaSBhcnJlbCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgImVuIG9icmlyICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAiZW4gb2JyaXIgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgImVuIGludGVudGFyIG1vc3RyYXIgbGEgaW5mb3JtYWNpw7MgZGUgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzUxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgbm9kZS1pICVsdSBhICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJMJ2Fzc2lnbmFjacOzIGRlIG1lbcOycmlhIGhhIGZhbGxhdCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJlbiBpbnRlbnRhciByZWRpbWVuc2lvbmFyICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIG5vZGUtaSAlbHUgYSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgZmlsZSBcIiVzXCIiCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIG5vZGUtaSAlbHUgYSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJlbiBvYnJpciAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJzJ2VzdMOgIGxsZWdpbnQgZWwgYmxvYyBkZSBkaXJlY3RvcmkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICJlbiBlc3RhYmxpciBsYSB2ZXJzacOzIGEgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODUyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHhhdHRycyBmb3IgXCIlc1wiIgorbXNnc3RyICJlbiBlc3RhYmxpciBlbHMgc2VueWFsYWRvcnMgYSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NzAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgImVuIGluaWNpYXIgbCdleHBsb3JhY2nDsyBkZWxzIG5vZGVzLWkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkZvcm1hIGQnw7pzOiAlcyBbLWJmaGl4Vl0gWy1vIHN1cGVyYmxvYz08bnVtPl0gWy1vIG1pZGFkZWxibG9jPTxudW0+XSAiCisiZGlzcG9zaXRpdVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9jcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE2OAorbXNnaWQgImNsdXN0ZXJzIgorbXNnc3RyICJncnVwcyBkZSBzZWN0b3JzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIkdydXAgJWx1OiAoYmxvY3MgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiAgU3VtYSBkZSB2ZXJpZmljYWNpw7MgMHglMDR4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoRVhQRUNURUQgMHglMDR4KSIKK21zZ3N0ciAiIChTJ0VTUEVSQVZBIDB4JTA0eCkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAlcyBzdXBlcmJsb2NrIGF0ICIKK21zZ3N0ciAiIHN1cGVyYmxvYyAlcyBhICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgIlByaW1hcmkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIkPDsnBpYSBkZSBzZWd1cmV0YXQiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzgKK21zZ2lkICIsIEdyb3VwIGRlc2NyaXB0b3JzIGF0ICIKK21zZ3N0ciAiLCBkZXNjcmlwdG9ycyBkZSBncnVwIGEgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIEJsb2NzIEdEVCByZXNlcnZhdHMgYSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBkZXNjcmlwdG9yIGRlIGdydXAgYSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiBNYXBhIGRlIGJpdHMgZGVsIGJsb2MgYSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiLCBjc3VtIDB4JTA4eCIKK21zZ3N0ciAiICBTdW1hIGRlIHZlcmlmaWNhY2nDsyAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2CisjLCBmdXp6eQorbXNnaWQgIiBJbm9kZSBiaXRtYXAgYXQgIgorbXNnc3RyICIsIG1hcGEgZGUgYml0cyBkZWwgbm9kZS1pIGEgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICB0YXVsYSBkZSBub2Rlcy1pIGEgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSAlcyBsbGl1cmVzLCAldSBub2Rlcy1pIGxsaXVyZXMsICV1IGRpcmVjdG9yaXMlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiLCAldSBub2Rlcy1pIG5vIHV0aWxpdHphdHNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICBCbG9jcyBsaXVyZXM6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAiICBOb2Rlcy1pIGxsaXVyZXM6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJlbiBpbXByaW1pciBsYSBsbGlzdGEgZGUgYmxvY3MgZXJyb25pcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0NgorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2tzOiAldSIKK21zZ3N0ciAiQmxvY3MgZXJyb25pczogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgbm9kZS1pIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImVuIG9icmlyIGVsIG5vZGUtaSBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzk3Cittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyIGJsb2NrIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIkVsIG51bWVybyBtw6BnaWMgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBubyDDqXMgdsOgbGlkIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJDYXJhY3RlcsOtc3RpcXVlcyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zOiAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MjAKK21zZ2lkICJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIKK21zZ3N0ciAiTWlkYSBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zOiAgICAgICAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCittc2dzdHIgIiIKKyJMbGFyZ2FkYSBkZWwgcmVnLiBkZSB0cmFucy46ICAgICAgICAgICV1XG4iCisiU2Vxw7zDqG5jaWEgZGVsIHJlZy4gZGUgdHJhbnMuOiAgICAgICAgIDB4JTA4eFxuIgorIkluaWNpIGRlbCByZWdpc3RyZSBkZSB0cmFucy46ICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIk7Dum1lcm8gZCdlcnJvciBkZWwgcmVnaS4gZGUgdHJhbnMuOiAgICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICIiCisiTm8gcydoYW4gdHJvYmF0IGVscyBuw7ptZXJvcyBtw6BnaWNzIGRlbCBzdXBlcmJsb2MgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBibG9jayBzaXplOiAgICAgICAldVxuIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIGZpcnN0IGJsb2NrOiAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCisiSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAldVxuIgorbXNnc3RyICIiCisiXG4iCisiTWlkYSBkZSBibG9jIGRlbCByZWcuIGRlIHRyYW5zLjogICAgICAldVxuIgorIkxsYXJnYWRhIGRlbCByZWcuIGRlIHRyYW5zLjogICAgICAgICAgJXVcbiIKKyJQcmltZXIgYmxvYyBkZWwgcmVnLiBkZSB0cmFucy46ICAgICAgICV1XG4iCisiU2Vxw7zDqG5jaWEgZGVsIHJlZy4gZGUgdHJhbnMuOiAgICAgICAgIDB4JTA4eFxuIgorIkluaWNpIGRlbCByZWdpc3RyZSBkZSB0cmFucy46ICAgICAgICAgJXVcbiIKKyJOb21icmUgZCd1c3VhcmlzIGRlbCByZWcuIGRlIHRyYW5zLjogICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICJVc3VhcmlzIGRlbCByZWdpc3RyZSBkZSB0cmFucy46ICAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGFzc2lnbmFyIG1lbcOycmlhIHBlciBhIGFuYWxpdHphciBsZXMgb3BjaW9uc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcsOgbWV0cmUgZGVsIHN1cGVyYmxvYyBubyB2w6BsaWQ6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJQYXLDoG1ldHJlIGRlIG1pZGEgZGUgYmxvYyBubyB2w6BsaWRhOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgZXh0ZW5kZWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrIG51bWJlcj5cbiIKKyJcdGJsb2Nrc2l6ZT08YmxvY2tzaXplPlxuIgorbXNnc3RyICIiCisiXG4iCisiUydoYSBlc3BlY2lmaWNhdCBvcGNpw7Mob25zKSBlc3Rlc2VzIGluY29ycmVjdGVzOiAlc1xuIgorIlxuIgorIkxlcyBvcGNpb25zIGVzdGVzZXMgc2Ugc2VwYXJlbiBhbWIgY29tZXMsIGkgcG9kZW4gZW1wcmFyIHVuIGFyZ3VtZW50IHF1ZVxuIgorIlxuIgorInMnZXN0YWJsZWl4IGFtYiB1biBzaWduZSBpZ3VhbCAowqs9wrspLlxuIgorIlxuIgorIkxlcyBvcGNpb25zIGVzdGVzZXMgdsOgbGlkZXMgc8OzbjpcbiIKKyJcdHN1cGVyYmxvY2s9PG7Dum1lcm8gZGUgc3VwZXJibG9jPlxuIgorIlx0YmxvY2tzaXplPTxtaWRhIGRlbCBibG9jPlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx0RW4gdXRpbGl0emFyICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY5MSBtaXNjL2UyaW1hZ2UuYzoxNTg2IG1pc2MvdHVuZTJmcy5jOjI4MDUKKyM6IHJlc2l6ZS9tYWluLmM6NDE1Cittc2dpZCAiQ291bGRuJ3QgZmluZCB2YWxpZCBmaWxlc3lzdGVtIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIk5vIHMnaGEgdHJvYmF0IHVuIHN1cGVyYmxvYyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIHbDoGxpZC5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAlczogcydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBsbGVnaXIgZWxzIG1hcGVzIGRlIGJpdHM6ICVzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwNgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWyAtcnxRIF0gWyAtZnIgXSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICJGb3JtYSBkJ8O6czogJXMgWyAtcnxRIF0gWyAtZnIgXSBkaXNwb3NpdGl1IGZpdHhlci1pbWF0Z2VcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAtSSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICIgICAgICAgJXMgLUkgZGlzcG9zaXRpdSBmaXR4ZXItaW1hdGdlXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAlcyAtcmEgIFsgIC1jZm5wICBdIFsgLW8gZGVzcGxhw6dfZm9udCBdIFsgLU8gZGVzcGxhw6dfZGVzdMOtIF0gc2ZfZm9udCAiCisiWyBzZl9kZXN0w60gXVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgImVuIGFzc2lnbmFyIGxhIG1lbcOycmlhIGludGVybcOoZGlhIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIlMnZXNjcml1IGVsIGJsb2MgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGVzY3JpdXJlIGVsIGJsb2MgJWxsdSIKKworIzogbWlzYy9lMmltYWdlLmM6MTk2Cittc2dpZCAiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGEgZ2VuZXJpY193cml0ZSgpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiRXJyb3I6IExhIG1pZGEgZGUgbGEgY2Fww6dhbGVyYSDDqXMgbcOpcyBncmFuIHF1ZSB3cnRfc2l6ZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgdWJpY2FyIGxhIGNhcMOnYWxlcmEgZGUgbGEgbWVtw7JyaWEgaW50ZXJtw6hkaWFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJlbiBlc2NyaXVyZSBlbCBzdXBlcmJsb2MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgImVuIGVzY3JpdXJlIGxhIHRhdWxhIGRlIG5vZGVzLWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJlbiBlc2NyaXVyZSBlbCBtYXBhIGRlIGJpdHMgZGVscyBibG9jcyIKKworIzogbWlzYy9lMmltYWdlLmM6MjcxCittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSBiaXRtYXAiCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIG1hcGEgZGUgYml0cyBkZWxzIG5vZGVzLWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUwNQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgcmVjX2xlbiAoJWQpXG4iCittc2dzdHIgIiIKKyJFbCBibG9jIGRlIGRpcmVjdG9yaSAlbGx1IGVzdMOgIGNvcnJvbXB1dDogbGEgbG9uZ2l0dWQgZGUgcmVnaXN0cmUgIgorIsKrcmVjX2xlbsK7ICglZCkgw6lzIGluY29ycmVjdGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIiIKKyJFbCBibG9jIGRlIGRpcmVjdG9yaSAlbGx1IGVzdMOgIGNvcnJvbXB1dDogbGEgbG9uZ2l0dWQgZGVsIG5vbSAiCisiwqtuYW1lX2xlbsK7ICglZCkgw6lzIGluY29ycmVjdGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUgLyAlbGx1IGJsb2NzICglZCUlKSIKKworIzogbWlzYy9lMmltYWdlLmM6NTg5IG1pc2MvZTJpbWFnZS5jOjYyOQorbXNnaWQgIkNvcHlpbmcgIgorbXNnc3RyICJTJ2VzdMOgIGNvcGlhbnQgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiU2kgYXR1cmV1IGFyYSBlbCBwcm9jw6lzIGRlc3RydWlyZXUgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzLCBpbnRlcnJvbXBldSB1biAiCisiYWx0cmUgY29wIHNpIG4nZXN0ZXUgc2VndXJzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIHF1ZWRlbiAlcyBhICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NjY0IG1pc2MvZTJpbWFnZS5jOjExOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3IgcmVhZGluZyBibG9jayAlbGx1IgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGxsZWdpciBlbCBibG9jICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIlMnaGFuIGNvcGlhdCAlbGx1IC8gJWxsdSBibG9jcyAoJWQlJSkgZW4gJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICJhICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzU4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAiZW4gYXNzaWduYXIgbGEgdGF1bGEgbDEiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgwMworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDIgY2FjaGUiCittc2dzdHIgImVuIGFzc2lnbmFyIGxhIG1lbcOycmlhIGNhdSBsMiIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKyJBdsOtczogZW5jYXJhIGhpIGhhIHRhdWxlcyBhIGxhIG1lbcOycmlhIGNhdSBlbiBlbCBtb21lbnQgZGUgcG9zYXItbGEuIEVzICIKKyJwZXJkcmFuIGRhZGVzIGkgbGEgaW1hdGdlIG5vIHNlcsOgIHbDoGxpZGEuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNDgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImVuIGFzc2lnbmFyIGxhIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNTUKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiZW4gaW5pY2lhbGl0emFyIGxhIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICIiCisiRXJyb3IgZGUgcHJvZ3JhbWFjacOzOiBzJ2hhbiBjcmVhdCBtw7psdGlwbGVzIGJsb2NzIHJlZmNvdW50IHNlccO8ZW5jaWFscyFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJlbiBhc3NpZ25hciBlbCBtYXBhIGRlIGJpdHMgZGVscyBibG9jcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICJlbiBhc3NpZ25hciBlbCBtYXBhIGRlIGJpdHMgeGlmcmF0IGRlbHMgYmxvY3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiRXNjYW5laWcgZGUgbm9kZXMtaS4uLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICJObyBlcyBwb3QgYXNzaWduYXIgbGEgbWVtw7JyaWEgaW50ZXJtw6hkaWEgZGUgYmxvY3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIKK21zZ3N0ciAibWVudHJlIHMnaXRlcmF2YSBzb2JyZSBlbCBub2RlLWkgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICJObyBlcyBwb2RlbiBpbnN0YWzCt2xhciBsZXMgaW1hdGdlcyByYXcgaSBRQ09XMiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiZXJyb3IgZW4gbGxlZ2lyIGVscyBtYXBlcyBkZSBiaXRzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5Cittc2dpZCAid2hpbGUgb3BlbmluZyBkZXZpY2UgZmlsZSIKK21zZ3N0ciAiZW4gb2JyaXIgZWwgZml0eGVyIGRlIGRpc3Bvc2l0aXVzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAiZW4gcmVzdGF1cmFyIGxhIHRhdWxhIGQnaW1hdGdlcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTUyNworbXNnaWQgIi1hIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggcmF3IG9yIFFDT1cyIGltYWdlcy4iCittc2dzdHIgImwnb3BjacOzIC1hIG5vbcOpcyBlcyBwb3QgZmVyIHNlcnZpciBhbWIgaW1hdGdlcyByYXcgbyBRQ09XMi4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiRWxzIGRlc3BsYcOnYW1lbnRzIG5vbcOpcyBlcyBwb2RlbiBmZXIgc2VydmlyIGVuIGltYXRnZXMgcmF3LiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzOAorbXNnaWQgIk1vdmUgbW9kZSBpcyBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiRWwgbW9kZSDCq01vdXJlwrsgbm9tw6lzIGVzIHBvdCBmZXIgc2VydmlyIGVuIGltYXRnZXMgcmF3LiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiRWwgbW9kZSDCq01vdXJlwrsgbmVjZXNzaXRhIGVsIG1vZGUgwqt0b3RlcyBsZXMgZGFkZXPCuy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJlcyBjb21wcm92YSBzaSBlc3TDoCBtdW50YXQiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NjAKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBlMmltYWdlIG9uIGEgUi9XIG1vdW50ZWQgZmlsZXN5c3RlbSBjYW4gcmVzdWx0IGluIGFuXG4iCisiaW5jb25zaXN0ZW50IGltYWdlIHdoaWNoIHdpbGwgbm90IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuIgorIlVzZSAtZiBvcHRpb24gaWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFeGVjdXRhciBlMmltYWdlIGVuIHVuIHNpc3RlbWEgZGUgZml0eGVycyBtdW50YXQgY29tIGEgTC9FIHBvdCByZXN1bHRhclxuIgorImVuIHVuYSBpbWF0Z2UgaW5jb25zaXN0ZW50IHF1ZSBwb3Qgbm8gc2VyIMO6dGlsIHBlciBkZXB1cmFyLlxuIgorIkZldSBzZXJ2aXIgbCdvcGNpw7MgLWYgc2kgcmVhbG1lbnQgdm9sZXUgZmVyLWhvLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIkxhIGltYXRnZSBRQ09XMiBubyBlcyBwb3QgZXNjcml1cmUgYSBsYSBzb3J0aWRhIGVzdMOgbmRhcmQgKHN0ZG91dCkhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIk5vIGVzIHBvdCB2ZXVyZSBsJ2VzdGF0IGRlIGxhIHNvcnRpZGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiTGEgaW1hdGdlICglcykgZXN0w6AgY29tcHJpbWlkYVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIkxhIGltYXRnZSAoJXMpIGVzdMOgIHhpZnJhZGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY29udmVydCBxY293MiBpbWFnZSAoJXMpIGludG8gcmF3IGltYWdlICglcykiCittc2dzdHIgImVuIHByb3ZhciBkZSBjb252ZXJ0aXIgdW5hIGltYXRnZSBRQ09XMiAoJXMpIGVuIHVuYSBpbWF0Z2UgcmF3ICglcykiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIkwnb3BjacOzIC1jIG5vbcOpcyBlcyBwb3QgZmVyIHNlcnZpciBlbiBtb2RlIHJhd1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjUwCittc2dpZCAiVGhlIC1jIG9wdGlvbiBub3Qgc3VwcG9ydGVkIHdoZW4gd3JpdGluZyB0byBzdGRvdXRcbiIKK21zZ3N0ciAiIgorIkwnb3BjacOzIC1jIG5vIGVzIHBvdCBmZXIgc2VydmlyIHF1YW4gcydlc2NyaXUgYSBsYSBzb3J0aWRhIGVzdMOgbmRhcmQgIgorIihzdGRvdXQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTcKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAiZW4gYXNzaWduYXIgY2hlY2tfYnVmIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJMJ29wY2nDsyAtcCBub23DqXMgZXMgcG90IGZlciBzZXJ2aXIgZW0gbW9kZSByYXdcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY3MworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBibG9ja3MgYWxyZWFkeSBjb250YWluZWQgdGhlIGRhdGEgdG8gYmUgY29waWVkXG4iCittc2dzdHIgIiVkIGJsb2NzIGphIGNvbnRlbmVuIGxlcyBkYWRlcyBxdWUgY2FsIGNvcGlhclxuIgorCisjOiBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgIkZvcm1hIGQnw7pzOiAlcyBkaXNjXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IG5vIGVzIHBvdCBvYnJpciAlc1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IG5vIGVzIHBvdCBhbmFyIGFsIHN1cGVyYmxvY1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogcydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBsbGVnaXIgZWwgc3VwZXJibG9jXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogYXF1ZXN0IG5vIMOpcyB1biBzaXN0ZW1hIGRlIGZpdHhlcnMgZXh0MlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICJBdsOtczogbCdldGlxdWV0YSDDqXMgbWFzc2EgbGxhcmdhLCBlcyB0cnVuY2Fyw6AuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IG5vIGVzIHBvdCB0b3JuYXIgYSBhbmFyIGFsIHN1cGVyYmxvY1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3Igd3JpdGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFibGU6IHMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZXNjcml1cmUgZWwgc3VwZXJibG9jXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIkZvcm1hIGQnw7pzOiBlMmxhYmVsIGRpc3Bvc2l0aXUgW2V0aXF1ZXRhbm92YV1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuc2FjdGlvbiBmaWxlPiA8ZmlsZXN5c3RlbT5cbiIKK21zZ3N0ciAiRm9ybWEgZCfDunM6ICVzIDxmaXR4ZXIgZGUgdHJhbnNhY2Npb25zPiA8c2lzdGVtYSBkZSBmaXR4ZXJzPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworIywgZnV6enkKK21zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gc3VwZXJibG9jayBkb2Vzbid0IG1hdGNoIHRoZSB1bmRvIGZpbGUuXG4iCittc2dzdHIgIkwnaG9yYSBkZSBtdW50YXRnZSBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIG5vIGNvbmNvcmRhIGFtYiAldVxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0NgorbXNnaWQgIlVVSUQgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDgKKyMsIGZ1enp5Cittc2dpZCAiTGFzdCBtb3VudCB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJMJ2hvcmEgZGUgbXVudGF0Z2UgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBubyBjb25jb3JkYSBhbWIgJXVcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTAKK21zZ2lkICJMYXN0IHdyaXRlIHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTIKK21zZ2lkICJMaWZldGltZSB3cml0ZSBjb3VudGVyIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTY2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVsIHN1cGVyYmxvYyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIgorCisjOiBtaXNjL2UydW5kby5jOjE4MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJlbiBlc2NyaXVyZSBlbCBzdXBlcmJsb2MiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgc3VwZXJibG9jIG5vIGNvaW5jaWRlaXggYW1iIGVsIHN1cGVyYmxvYyIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIkVsIGRlc3BsYcOnYW1lbnQgbm8gw6lzIHbDoGxpZDogJXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJlbiBvYnJpciBlbCBmaXR4ZXIgZGUgZGlzcG9zaXRpdXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgbm9kZSBhcnJlbCIKKworIzogbWlzYy9lMnVuZG8uYzozNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIlczogcydoYW4gZXNwZWNpZmljYXQgbWFzc2EgZGlzcG9zaXRpdXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBIZWFkZXIgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIG5vZGUtaSBubyBjb2luY2lkZWl4IGFtYiBlbCBub2RlLWkiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICJMYSBjYXDDp2FsZXJhIGVzdGVzYSBlc3TDoCBjb3Jyb21wdWRhIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gc21hbGwuXG4iCittc2dzdHIgIm1pZGEgZGVsIGJsb2MgZXJyb25pIC0gJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDE5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKyJFbCBAUyBkZWwgQGogdMOpIHVuIHNlbnlhbGFkb3IgZGUgY2FyYWN0ZXLDrXN0aWNhIG5vIGNvbXBhdGlibGUgYWN0aXZhdCBubyAiCisiY29tcGF0aWJsZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZGV0ZXJtaW5hciBzaSAlcyBlc3TDoCBtdW50YXQuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCisjLCBmdXp6eQorbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICIiCisiZTJ1bmRvIG5vbcOpcyBzJ2hhdXJpYSBkJ2V4ZWN1dGFyIGVuIHVuIHNpc3RlbWEgZGUgZml0eGVycyBzZW5zZSBtdW50YXJcbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAiZW4gb2JyaXIgJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBrZXlzIgorbXNnc3RyICJlbiBsbGVnaXIgZWxzIG1hcGVzIGRlIGJpdHMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICJEZWxzIGJsb2NzICVsdSBhICVsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgIlMnZXNjcml1IGVsIGJsb2MgJWxsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZXNjcml1cmUgZWwgYmxvYyAlbGx1IgorCisjOiBtaXNjL2UydW5kby5jOjYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5jb21wbGV0ZSB1bmRvIHJlY29yZDsgcnVuIGUyZnNjay5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiQVbDjVM6IG5vIHMnaGEgcG9ndXQgb2JyaXIgJXM6ICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBiYWQgZm9ybWF0IG9uIGxpbmUgJWQgb2YgJXNcbiIKK21zZ3N0ciAiQVbDjVM6IGZvcm1hdCBlcnJvbmkgYSBsYSBsw61uaWEgJWQgZGUgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzcwCittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJBVsONUzogRWwgZml0eGVyIC9ldGMvZnN0YWIgbm8gY29udMOpIGVsIGNhbXAgcGFzc25vIGRlIGwnZnNjay5cbiIKKyJcdFMnaW50ZW50YXLDoCBhcnJlZ2xhci1obyB0ZW1wb3JhbG1lbnQsIHBlcsOyIGhvIGhhdXLDrWV1IGRlXG4iCisiXHRzb2x1Y2lvbmFyIGNvcnJlZ2ludCBlbCBmaXR4ZXIgL2V0Yy9mc3RhYiBjb20gbcOpcyBhdmlhdCBtaWxsb3IuXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBubyBzJ2hhIHRyb2JhdFxuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogd2FpdDogbm8gaGkgaGEgY2FwIG3DqXMgcHJvY8OpcyBmaWxsIT9cbiIKKworIzogbWlzYy9mc2NrLmM6NjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmcuLi4gJXMgZm9yIGRldmljZSAlcyBleGl0ZWQgd2l0aCBzaWduYWwgJWQuXG4iCittc2dzdHIgIkF2w61zLi4uICVzIHBlciBhbCBkaXNwb3NpdGl1ICVzIGhhIHNvcnRpdCBhbWIgZWwgc2VueWFsICVkLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgJXM6IHN0YXR1cyBpcyAleCwgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiIKK21zZ3N0ciAiJXMgJXM6IGwnZXN0YXQgw6lzICV4LCBjb3NhIHF1ZSBubyBoYXVyaWEgZGUgc3VjY2VpciBtYWkuXG4iCisKKyM6IG1pc2MvZnNjay5jOjY2MQorIywgYy1mb3JtYXQKK21zZ2lkICJGaW5pc2hlZCB3aXRoICVzIChleGl0IHN0YXR1cyAlZClcbiIKK21zZ3N0ciAiUydoYSBmaW5hbGl0emF0IGFtYiAlcyAoZXN0YXQgZGUgc29ydGlkYSAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6NzIxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBFcnJvciAlZCB3aGlsZSBleGVjdXRpbmcgZnNjay4lcyBmb3IgJXNcbiIKK21zZ3N0ciAiJXM6IHMnaGEgcHJvZHXDr3QgbCdlcnJvciAlZCBlbiBleGVjdXRhciBsJ2ZzY2suJXMgcGVyIGEgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyJPIGLDqSB0b3RzIG8gY2FwIGRlbHMgc2lzdGVtZXMgZGUgZml0eGVycyBwYXNzYXRzIGEgbCdvcGNpw7MgLXQgcydoYW4gZGUgIgorInByZWZpeGFyXG4iCisiYW1iIMKrbm/CuyBvIMKrIcK7LlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBtZW3DsnJpYSBwZXIgYWwgc2lzdGVtYSBkZSBmaXR4ZXJzXG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczogc2Ugc2FsdGEgdW5hIGzDrW5pYSBpbmNvcnJlY3RhIGRlIC9ldGMvZnN0YWI6IG11bnRhdGdlIGxsaWdhdChiaW5kKSBhbWIgIgorInVuIG7Dum1lcm8gZGUgY29udHJhc2VueWEgZGlmZXJlbnQgZGUgemVyb1xuIgorCisjOiBtaXNjL2ZzY2suYzo5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogY2Fubm90IGNoZWNrICVzOiBmc2NrLiVzIG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiBubyBlcyBwb3QgY29tcHJvdmFyICVzOiBubyBzJ2hhIHRyb2JhdCBlbCBmc2NrLiVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIlMnZXN0YW4gY29tcHJvdmFudCB0b3RzIGVscyBzaXN0ZW1lcyBkZSBmaXR4ZXJzLlxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDU4CisjLCBjLWZvcm1hdAorbXNnaWQgIi0td2FpdGluZy0tIChwYXNzICVkKVxuIgorbXNnc3RyICItLWVuIGVzcGVyYS0tIChwYXMgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyJGb3JtYSBkJ8O6czogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IHRpcHVzZGVzaXN0ZGVmaXR4ZXJzXSBbb3BjaW9ucy0iCisiZGVsc2lzdGRlZml0eGVyc10gW3Npc3RkZWZpdHhlcnMgLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiBzJ2hhbiBlc3BlY2lmaWNhdCBtYXNzYSBkaXNwb3NpdGl1c1xuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogcydoYW4gZXNwZWNpZmljYXQgbWFzc2EgYXJndW1lbnRzXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJFbCBmaXR4ZXIgcydoYSBvYmVydCBjb20gYSBub23DqXMgZGUgbGVjdHVyYSIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NiBtaXNjL2Z1c2UyZnMuYzozNzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc3IG1pc2MvZnVzZTJmcy5jOjM3OTEgbWlzYy90dW5lMmZzLmM6MzIwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisiRXhlY3V0ZXUgwqtlMmZzY2sgLWYgJXPCuyBwcmltZXIuXG4iCisiXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogV3JpdGluZyB0byB0aGUgam91cm5hbCBpcyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJMYSByZWR1Y2Npw7MgZGUgbGEgbWlkYSBkZWwgbm9kZS1pIG5vIGVzdMOgIGltcGxlbWVudGFkYVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICJGb3JtYSBkJ8O6czogJXMgWy1SVmFkbHZdIFtmaXR4ZXJzLi4uXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIkVuIGxsZWdpciBlbHMgc2VueWFsYWRvcnMgYSAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJFbiBsbGVnaXIgbGEgdmVyc2nDsyBhICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIkVuIGxsZWdpciBsYSB2ZXJzacOzIGEgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdIFstQyBjbHVzdGVyLXNpemVdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgaW5vZGUtc2l6ZV0gWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKyJcdFstRyBmbGV4LWdyb3VwLXNpemVdIFstTiBudW1iZXItb2YtaW5vZGVzXSBbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisiXHRbLW0gcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2VdIFstbyBjcmVhdG9yLW9zXVxuIgorIlx0Wy1nIGJsb2Nrcy1wZXItZ3JvdXBdIFstTCB2b2x1bWUtbGFiZWxdIFstTSBsYXN0LW1vdW50ZWQtZGlyZWN0b3J5XVxuIgorIlx0Wy1PIGZlYXR1cmVbLC4uLl1dIFstciBmcy1yZXZpc2lvbl0gWy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXVsteiAiCisidW5kb19maWxlXVxuIgorIlx0Wy1qbnF2REZTVl0gZGV2aWNlIFtibG9ja3MtY291bnRdXG4iCittc2dzdHIgIiIKKyJGb3JtYSBkJ8O6czogJXMgWy1jfC1sIG5vbS1maXR4ZXJdIFstYiBtaWRhLWJsb2NdIFstQyBtaWRhLWNsdXN0ZXJdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLW5vZGUtaV0gWy1JIG1pZGEtbm9kZS1pXSBbLUogb3BjaW9ucy1yZWdpc3RyZS10cmFuc2FjY2lvbnNdXG4iCisiXHRbLUcgbWlkYS1ncnVwLWZsZXhdIFstTiBub21icmUtbm9kZXMtaV1cbiIKKyJcdFstbSBwZXJjZW50YXRnZS1ibG9jcy1yZXNlcnZhdHNdIFstbyBzby1jcmVhZG9yXVxuIgorIlx0Wy1nIGJsb2NzLXBlci1ncnVwXSBbLUwgZXRpcXVldGEtdm9sdW1dIFstTSDDumx0aW0tZGlyZWN0b3JpLW11bnRhdF1cbiIKKyJcdFstTyBjYXJhY3RlcsOtc3RpY2FbLC4uLl1dIFstciByZXZpc2nDsy1zZl0gWy1FIG9wY2nDsy1lc3Rlc2FbLC4uLl1dXG4iCisiXHRbLXQgdGlwdXMtc2ZdIFstVCBUaXB1cy3DunMgXSBbLVUgVVVJRF0gWy1qbnF2REZLU1ZdIGRpc3Bvc2l0aXUgW2NvbXB0YWRvci0iCisiYmxvY3NdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAiUydlc3TDoCBleGVjdXRhbnQgbCdvcmRyZTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJ1biAnJXMnIgorbXNnc3RyICJlbiBpbnRlbnRhciBleGVjdXRhciDCqyVzwrsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJlbiBwcm9jZXNzYXIgbGEgbGxpc3RhIGRlIGJsb2NzIGVycm9uaXMgZGVzIGRlbCBwcm9ncmFtYSIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgIiIKKyJFbCBibG9jICVkIGRlIGwnw6ByZWEgZGVsIGRlc2NyaXB0b3IgZGVsIHN1cGVyYmxvYy9ncnVwIHByaW1hcmkgw6lzICIKKyJpbmNvcnJlY3RlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisiRWxzIGJsb2NzICV1IGZpbnMgYSAldSBoYW4gZCfDqXNzZXIgY29ycmVjdGVzIHBlciBhIHBvZGVyIGNyZWFyIHVuIHNpc3RlbWEgZGUgIgorImZpdHhlcnMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIlMnZXN0w6AgaW50ZXJyb21wZW50Li4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkF2w61zOiBlbCBzdXBlcmJsb2MgbyBkZXNjcmlwdG9ycyBkZSBncnVwIGRlIGPDsnBpYSBkZSBzZWd1cmV0YXQgYWwgYmxvYyAldVxuIgorIlx0Y29udGVuZW4gYmxvY3MgZXJyb25pcy5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAiZW4gbWFyY2FyIGVscyBibG9jcyBlcnJvbmlzIGNvbSBhIHV0aWxpdHphdHMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAiRXNjcmlwdHVyYSBkZSBsZXMgdGF1bGVzIGRlIG5vZGVzLWk6IgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiTm8gcydoYW4gcG9ndXQgZXNjcml1cmUgJWQgYmxvY3MgYSBsYSB0YXVsYSBkZSBub2Rlcy1pIHF1ZSBjb21lbsOnYSBhICVsbHU6ICIKKyIlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ0NCBtaXNjL21rZTJmcy5jOjI2NTQgbWlzYy9ta2UyZnMuYzozMDMwCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiZmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJlbiBjcmVhciBlbCBkaXJlY3RvcmkgYXJyZWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJlbiBsbGVnaXIgZWwgbm9kZSBhcnJlbCIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJlbiBlc3RhYmxpciBsYSBwcm9waWV0YXQgZGVsIG5vZGUtaSBhcnJlbCIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiZW4gY3JlYXIgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiZW4gY2VyY2FyIGVsIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiZW4gZXhwYW5kaXIgZWwgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImVuIGVzdGFibGlyIGVsIG5vZGUtaSBkZSBibG9jcyBlcnJvbmlzIgorCisjOiBtaXNjL21rZTJmcy5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICJPdXQgb2YgbWVtb3J5IGVyYXNpbmcgc2VjdG9ycyAlZC0lZFxuIgorbXNnc3RyICJTJ2hhIGV4aGF1cml0IGxhIG1lbcOycmlhIGVuIGVzYm9ycmFyIGVscyBzZWN0b3JzICVkLSVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrIDA6ICVzXG4iCittc2dzdHIgIkF2w61zOiBubyBzJ2hhIHBvZ3V0IGxsZWdpciBlbCBibG9jIDA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkF2w61zOiBubyBzJ2hhIHBvZ3V0IGVzYm9ycmFyIGVsIHNlY3RvciAlZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJlbiBpbmljaWFsaXR6YXIgZWwgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjA4Cittc2dpZCAiWmVyb2luZyBqb3VybmFsIGRldmljZTogIgorbXNnc3RyICJTJ2VzdGFuIGVzY3JpdmludCB6ZXJvcyBhbCBkaXNwb3NpdGl1IGRlIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9uczoiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAiIgorImVuIGVzY3JpdXJlIHplcm9zIGFsIGRpc3Bvc2l0aXUgZGUgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIChibG9jICVsbHUsICIKKyJyZWNvbXB0ZSAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgImVuIGVzY3JpdXJlIGVsIHN1cGVyYmxvYyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIgorCisjOiBtaXNjL21rZTJmcy5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggJWxsdSAlZGsgYmxvY2tzIGFuZCAldSBpbm9kZXNcbiIKK21zZ3N0ciAiUydlc3TDoCBjcmVhbnQgdW4gc2lzdGVtYSBkZSBmaXR4ZXJzIGFtYiAlbGx1ICVkayBibG9jcyBpICV1IG5vZGVzLWlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorImF2w61zOiAlbGx1IGJsb2NzIG5vIHV0aWxpdHphdHMuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiRXRpcXVldGEgZGVsIHNpc3RlbWEgZGUgZml0eGVycz0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJUaXB1cyBkZSBzaXN0ZW1hIG9wZXJhdGl1OiAlc1xuIgorCisjIEZJWE1FOiBsb2cKKyM6IG1pc2MvbWtlMmZzLmM6NjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiTWlkYSBkZWwgYmxvYz0ldSAobG9nPSV1KVxuIgorCisjIEZJWE1FOiBsb2cKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJNaWRhIGRlbCBncnVwIGRlIHNlY3RvcnM9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJNaWRhIGRlbCBmcmFnbWVudD0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIlN0cmlkZT0ldSBibG9jcywgYW1wbGFkYSBkZWwgU3RyaXBlPSV1IGJsb2NzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcywgJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXUgbm9kZXMtaSwgJWxsdSBibG9jc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUgYmxvY3MgKCUyLjJmJSUpIHJlc2VydmF0cyBwZXIgYWwgc3VwZXJ1c3VhcmlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJCbG9jIGRlIGRhZGVzIGluaWNpYWw9JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAiUHJvcGlldGFyaSBkZWwgZGlyZWN0b3JpIGFycmVsID0gJXU6JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiTcOgeGltIGRlIGJsb2NzIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnM9JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSBncnVwcyBkZSBibG9jc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBncnVwIGRlIGJsb2NzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9jcyBwZXIgZ3J1cCwgJXUgZ3J1cHMgZGUgc2VjdG9ycyBwZXIgZ3J1cFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2NzIHBlciBncnVwLCAldSBmcmFnbWVudHMgcGVyIGdydXBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBub2Rlcy1pIHBlciBncnVwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiVVVJRCBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiQ8OycGllcyBkZSBzZWd1cmV0YXQgZGVsIHN1cGVyYmxvYyBkZXNhZGVzIGVuIGVscyBibG9jczogIgorCisjOiBtaXNjL21rZTJmcy5jOjgwNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyByZXF1aXJlcyAnLU8gNjRiaXQnXG4iCittc2dzdHIgIiVzIG5lY2Vzc2l0YSDCqy1PIDY0Yml0wrtcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICLCqyVzwrsgaGEgZCdhbmFyIGFiYW5zIGRlIMKrcmVzaXplPSV1wrtcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiRWwgZGVzY19zaXplIG5vIMOpcyB2w6BsaWQ6IMKrJXPCu1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAiRWwgZGVzcGxhw6dhbWVudCBubyDDqXMgdsOgbGlkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiTCdtbXBfdXBkYXRlX2ludGVydmFsIG5vIMOpcyB2w6BsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgIkVsIG5vbWJyZSBkZSBzdXBlcmJsb2NzIGRlIGxhIGPDsnBpYSBkZSBzZWd1cmV0YXQgbm8gw6lzIHbDoGxpZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJFbCBwYXLDoG1ldHJlIGRlIHN0cmlkZSBubyDDqXMgdsOgbGlkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIkwnYW1wbGFkYSBkZWwgc3RyaXBlIG5vIMOpcyB2w6BsaWRhOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcsOgbWV0cmUgZGUgY2FudmkgZGUgbWlkYSBubyB2w6BsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKyJFbCBtw6B4aW0gZGVsIGNhbnZpIGRlIG1pZGEgaGEgZGUgc2VyIG3DqXMgZ3JhbiBxdWUgbGEgbWlkYSBkZWwgc2lzdGVtYSBkZSAiCisiZml0eGVycy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJFbCBjYW52aSBkZSBtaWRhIGVuIGzDrW5pYSBubyDDqXMgY29tcGF0aWJsZSBhbWIgc2lzdGVtZXMgZGUgZml0eGVycyBkZSB2ZXJzacOzICIKKyIwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJFbCByb290X293bmVyIG5vIMOpcyB2w6BsaWQ6IMKrJXPCu1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiUydoYSBlc3BlY2lmaWNhdCB1bmEgbyB2w6ByaWVzIG9wY2lvbnMgaW5jb3JyZWN0ZXM6ICVzXG4iCisiXG4iCisiTGVzIG9wY2lvbnMgZXN0ZXNlcyBzZSBzZXBhcmVuIGFtYiBjb21lcywgaSBoYW4gZGUgdGVuaXIgdW4gYXJndW1lbnRcbiIKKyJcdHF1ZSBzJ2VzdGFibGVpeCBhbWIgZWwgc2lnbmUgaWd1YWwgKMKrPcK7KS5cbiIKKyJcbiIKKyJMZXMgb3BjaW9ucyBlc3Rlc2VzIHbDoGxpZGVzIHPDs246XG4iCisiXHRtbXBfdXBkYXRlLS5pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08dHJvc3NvcyBkZSBkYWRlcyBwZXIgZGlzYyBSQUlEIGVuIGJsb2NzPlxuIgorIlx0c3RyaWRlLXdpZHRoPTxzdHJpZGUgZGVsIFJBSUQgKiBkaXNjcyBkZSBkYWRlcyBlbiBibG9jcz5cbiIKKyJcdG9mZnNldD08ZGVzcGxhw6dhbWVudCBwZXIgY3JlYXIgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzPlxuIgorIlx0cmVzaXplPTxtaWRhIG3DoHhpbWEgZGVsIHJlZGltZW5zaW9uYXQgZW4gYmxvY3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9jcz08MCBwZXIgZGVzaGFiaWxpdGFyLWxvLCAxIHBlciBoYWJpbGl0YXItbG8+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHBlciBkZXNoYWJpbGl0YXItbG8sIDEgcGVyIGhhYmlsaXRhci1sbz5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHBlciBkZXNoYWJpbGl0YXItbG8sIDEgcGVyIGhhYmlsaXRhci1sbz5cbiIKKyJcdHJvb3RfdWlkPTxpZCBkZWwgdXN1YXJpIGRlbCBkaXJlY3RvcmkgYXJyZWw+XG4iCisiXHRyb290X2dpZD08aWQgZGVsIGdydXAgZGVsIGRpcmVjdG9yaSBhcnJlbD5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTx1c3VhcmkgbyBncnVwPlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2w61zOiBsJ2FtcGxhZGEgZGUgbCdzdHJpcGUgZGVsIFJBSUQgJXUgbm8gw6lzIHVuIG3Dumx0aXBsZSBzZW5hciBkZSBsJ3N0cmlkZSAiCisiJXUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIkVycm9yIGRlIHNpbnRheGkgZW4gZWwgZml0eGVyIGRlIGNvbmZpZ3VyYWNpw7MgZGVsIG1rZTJmcyAoJXMsIGzDrW5pYSBuby4gJWQpXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiUydoYSBkZWZpbml0IHVuYSBvcGNpw7MgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBubyB2w6BsaWRhOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiUydoYSBlc3RhYmxlcnQgdW5hIG9wY2nDsyBkZSBtdW50YXRnZSBubyB2w6BsaWRhOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIHZvc3RyZSBmaXR4ZXIgbWtlMmZzLmNvbmYgbm8gZGVmaW5laXggZWwgdGlwdXMgZGUgc2lzdGVtYSBkZSBmaXR4ZXJzICVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJTZWd1cmFtZW50IGNhbCBxdWUgaW5zdGFswrdsZXUgdW4gZml0eGVyIG1rZTJmcy5jb25mIGFjdHVhbGl0emF0LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNzAKK21zZ2lkICJBYm9ydGluZy4uLlxuIgorbXNnc3RyICJTJ2ludGVycm9tcC4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdmlzOiBlbCBmc190eXBlICVzIG5vIGVzdMOgIGRlZmluaXQgYSBsJ21rZTJmcy5jb25mXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgYXNzaWduYXIgbWVtw7JyaWEgcGVyIGFsIG5vdSBDQU3DjS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICJFbCBwZXJmaWwgbm8gcydoYSBwb2d1dCBpbmljaWFsaXR6YXIgY29ycmVjdGFtZW50IChlcnJvcjogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJtaWRhIGRlIGJsb2Mgbm8gdsOgbGlkYSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogYmxvY2tzaXplICVkIG5vdCB1c2FibGUgb24gbW9zdCBzeXN0ZW1zLlxuIgorbXNnc3RyICIiCisiQXbDrXM6IGxhIG1pZGEgZGUgYmxvYyAlZCBubyBlcyBwb3QgdXRpbGl0emFyIGEgbGEgbWFqb3JpYSBkZWxzIHNpc3RlbWVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjbHVzdGVyIHNpemUgLSAlcyIKK21zZ3N0ciAibGEgbWlkYSBkZWwgZ3J1cCBkZSBzZWN0b3JzIG5vIMOpcyB2w6BsaWRhIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAiwqstUsK7IGphIG5vIGVzdMOgIHN1cG9ydGFkYSwgZmV1IHNlcnZpciDCqy1FwrsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJjb21wb3J0YW1lbnQgZCdlcnJvciBlcnJvbmkgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIk5vbWJyZSBubyB2w6BsaWQgcGVyIGFscyBibG9jcyBwZXIgZ3J1cCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjMxCittc2dpZCAiYmxvY2tzIHBlciBncm91cCBtdXN0IGJlIG11bHRpcGxlIG9mIDgiCittc2dzdHIgImVsIG5vbWJyZSBkZSBibG9jcyBwZXIgZ3J1cCBoYSBkZSBzZXIgbcO6bHRpcGxlIGRlIDgiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBmbGV4X2JnIHNpemUiCittc2dzdHIgIk7Dum1lcm8gbm8gdsOgbGlkIHBlciBhIGxhIG1pZGEgZGUgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICJsYSBtaWRhIGRlIGZsZXhfYmcgaGEgZGUgc2VyIHVuYSBwb3TDqG5jaWEgZGUgMiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJsYSBtaWRhIGRlIGZsZXhfYmcgKCVsdSkgaGEgZGUgc2VyIG1lbm9yIG8gaWd1YWwgYSAyXjMxIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSByYXRpbyAlcyAobWluICVkL21heCAlZCkiCittc2dzdHIgInLDoHRpbyBkZSBub2Rlcy1pICVzIG5vIHbDoGxpZGEgKG3DrW4gJWQvbcOgeCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAibWlkYSBkZSBub2RlLWkgZXJyw7JuaWEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorIkF2w61zOiBMJ29wY2nDsyBLIGphIG5vIGVzdMOgIHN1cG9ydGFkYSBpIG5vIHMnaGF1cmlhIGRlIGZlciBzZXJ2aXIuIEZldSBzZXJ2aXIgIgorImwnb3BjacOzIGVzdGVzYSDCqy1FIG5vZGlzY2FyZMK7IVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgImVuIG1hbGxvYyBlbCBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJBdsOtczogbCdldGlxdWV0YSDDqXMgbWFzc2EgbGxhcmdhLCBlcyB0cnVuY2Fyw6AuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiCittc2dzdHIgInBlcmNlbnRhdGdlIGRlIGJsb2NzIHJlc2VydmF0cyBubyB2w6BsaWQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgIm5vbWJyZSBkZSBub2Rlcy1pIG5vIHbDoGxpZCAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NDAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBmc19mZWF0dXJlIHN0cmluZyIKK21zZ3N0ciAiZW4gYXNzaWduYXIgbGVzIG1lbcOycmllcyBpbnRlcm3DqGRpZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc1NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAibml2ZWxsIGRlIHZlcnNpw7MgZXJyb25pIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHJldmlzaW9uICVkIgorbXNnc3RyICJlbiBwcm92YXIgZGUgY3JlYXIgbGEgdmVyc2nDsyAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkwnb3BjacOzIC10IG5vbcOpcyBlcyBwb3QgZXNwZWNpZmljYXIgdW5hIHZlZ2FkYSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkwnb3BjacOzIC1UIG5vbcOpcyBlcyBwb3QgZXNwZWNpZmljYXIgdW5hIHZlZ2FkYSIKKworIzogbWlzYy9ta2UyZnMuYzoxODQwIG1pc2MvbWtlMmZzLmM6MzExNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIGRldmljZSAlc1xuIgorbXNnc3RyICJlbiBpbnRlbnRhciBvYnJpciBlbCBkaXNwb3NpdGl1IGRlIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBkZXYgYmxvY2tzaXplICglZCkgc21hbGxlciB0aGFuIG1pbmltdW0gYmxvY2tzaXplICVkXG4iCittc2dzdHIgIiIKKyJMYSBtaWRhIGRlIGJsb2MgZGVsIGRpc3Bvc2l0aXUgZGUgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zICglZCkgw6lzIG1lbm9yIHF1ZSAiCisibGEgbWlkYSBtw61uaW1hIGRlIGJsb2MgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzaW5nIGpvdXJuYWwgZGV2aWNlJ3MgYmxvY2tzaXplOiAlZFxuIgorbXNnc3RyICIiCisiTWlkYSBkZSBibG9jIGRlbCBkaXNwb3NpdGl1IGRlIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBhIHV0aWxpdHphcjogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgIm5vbWJyZSBkZSBibG9jcyDCqyVzwrsgbm8gdsOgbGlkIGFsIGRpc3Bvc2l0aXUgwqslc8K7IgorCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJzaXN0ZW1hIGRlIGZpdHhlcnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJlbiBpbnRlbnRhciBkZXRlcm1pbmFyIGxhIG1pZGEgZGVsIHNpc3RlbWEgZGUgZml0eGVycyIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIiIKKyJObyBzJ2hhIHBvZ3V0IGRldGVybWluYXIgbGEgbWlkYSBkZWwgZGlzcG9zaXRpdTsgaGF1IGQnZXNwZWNpZmljYXJcbiIKKyJsYSBtaWRhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJMYSBtaWRhIGRlbCBkaXNwb3NpdGl1IHMnaGEgbGxlZ2l0IGNvbSBhIHplcm8uIE8gYsOpIGhldSBlc3BlY2lmaWNhdCB1bmFcbiIKKyJcdHBhcnRpY2nDsyBubyB2w6BsaWRhLCBvIGLDqSBsYSB0YXVsYSBkZSBwYXJ0aWNpb25zIG5vIHMnaGEgdG9ybmF0IGEgbGxlZ2lyXG4iCisiXHRkZXNwcsOpcyBkJ2V4ZWN1dGFyIGwnZmRpc2sgZGVndXQgYSB1bmEgcGFydGljacOzIG9jdXBhZGEgaSBlbiDDunMuIFBvdFxuIgorIlx0c2VyIHF1ZSBow6BnaXUgZGUgcmVpbmljaWFyIHBlcnF1w6ggZXMgcHVndWkgdG9ybmFyIGEgbGxlZ2lyIGxhIHRhdWxhIGRlLlxuIgorIlx0cGFydGljaW9ucy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIiIKKyJMYSBtaWRhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgw6lzIG3DqXMgZ3JhbiBxdWUgbGEgbWlkYSBhcGFyZW50IGRlbCAiCisiZGlzcG9zaXRpdS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgYW5hbGl0emFyIGxhIGxsaXN0YSBkZSBzaXN0ZW1lcyBkZSBmaXR4ZXJzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJFbCBIdXJkIG5vIMOpcyBjb21wYXRpYmxlIGFtYiBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgdGlwdXMgZGUgZml0eGVyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkVsIEh1cmQgbm8gw6lzIGNvbXBhdGlibGUgYW1iIGxhIGNhcmFjdGVyw61zdGljYSBkZSB0aXB1cyBkZSBmaXR4ZXIuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIkVsIEh1cmQgbm8gw6lzIGNvbXBhdGlibGUgYW1iIGxhIGNhcmFjdGVyw61zdGljYSBkZSB0aXB1cyBkZSBmaXR4ZXIuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgImVuIGludGVudGFyIGRldGVybWluYXIgbGEgbWlkYSBkZWwgc2VjdG9yIGRlbCBtYXF1aW5hcmkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAyNAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgImVuIGludGVudGFyIGRldGVybWluYXIgbGEgbWlkYSBmw61zaWNhIGRlbCBzZWN0b3IiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA1NgorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICJlbiBlc3RhYmxpciBsYSBtaWRhIGRlbCBibG9jLiBNYXNzYSBwZXRpdGEgcGVsIGRpc3Bvc2l0aXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiQXbDrXM6IGxhIG1pZGEgZGVsIGJsb2MgZXNwZWNpZmljYWRhICVkIMOpcyBtw6lzIHBldGl0YSBxdWUgbGEgbWlkYSBmw61zaWNhIGRlbCAiCisic2VjdG9yIGRlbCBkaXNwb3NpdGl1ICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiVzOiBsYSBtaWRhIGRlbCBkaXNwb3NpdGl1ICgweCVsbHggYmxvY3MpICVzIMOpcyBtYXNzYSBncmFuIHBlciBhIGV4cHJlc3Nhci0iCisibGEgXG4iCisiXHRlbiAzMiBiaXRzLiBTJ3V0aWxpdHphcsOgIHVuYSBtaWRhIGRlIGJsb2MgZGUgJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgIlJlc29sdWNpw7MgZGVsIGZzX3R5cGVzIHBlciBta2UyZnMuY29uZjogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJMZXMgY2FyYWN0ZXLDrXN0aXF1ZXMgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBubyBzw7NuIGNvbXBhdGlibGVzIGFtYiBzaXN0ZW1lcyAiCisiZGUgZml0eGVycyBhbWIgdmVyc2nDsyAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjExNgorbXNnaWQgIlNwYXJzZSBzdXBlcmJsb2NrcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiRWxzIHN1cGVyYmxvY3MgZGlzcGVyc29zIG5vIHPDs24gY29tcGF0aWJsZXMgYW1iIHNpc3RlbWVzIGRlIGZpdHhlcnMgYW1iICIKKyJ2ZXJzacOzIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIkVscyByZWdpc3RyZXMgZGUgdHJhbnNhY2Npb25zIG5vIHPDs24gY29tcGF0aWJsZXMgYW1iIHNpc3RlbWVzIGRlIGZpdHhlcnMgYW1iICIKKyJ2ZXJzacOzIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgInBlcmNlbnRhdGdlIGRlIGJsb2NzIHJlc2VydmF0cyBubyB2w6BsaWQgLSAlbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIsKrRXh0ZW50c8K7IEhBIGQnZXN0YXIgaGFiaWxpdGF0IHBlciBzaXN0ZW1lcyBkZSBmaXR4ZXJzIGRlIDY0IGJpdHMuICBJbmRpcXVldSAiCisiLU8gZXh0ZW50cyBwZXIgcmVjdGlmaWNhci1oby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkxhIG1pZGEgZGVsIGdydXAgZGUgc2VjdG9ycyBubyBoYXVyaWEgZGUgc2VyIG3DqXMgcGV0aXRhIHF1ZSBsYSBtaWRhIGRlbCAiCisiYmxvYy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAiIgorIkwnZXNwZWNpZmljYWNpw7MgZGUgbGEgbWlkYSBkZWwgZ3J1cCBkZSBzZWN0b3JzIG5lY2Vzc2l0YSBsYSBjYXJhY3RlcsOtc3RpY2EgIgorImJpZ2FsbG9jIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgImF2w61zOiBObyBlcyBwb3Qgb2J0ZW5pciBsYSBnZW9tZXRyaWEgZGVsIGRpc3Bvc2l0aXUgZGUgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICJMJ2FsaW5lYWNpw7MgZGUgJXMgZXN0w6AgZGVzcGxhw6dhZGEgJWx1IGJ5dGVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiIgorIkFpeMOyIHBvdCByZXN1bHRhciBlbiB1biBmdW5jaW9uYW1lbnQgbW9sdCBwb2JyZS4gU2Ugc3VnZ2VyZWl4ICh0b3JuYXIgYSkgZmVyICIKKyJsZXMgcGFydGljaW9ucy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAiRWxzIGJsb2NzIGRlICVkLWJ5dGUgc8OzbiBtYXNzYSBncmFucyBwZWwgc2lzdGVtYSAobcOgeCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIkF2w61zOiBFbHMgYmxvY3MgZGUgJWQtYnl0ZSBzw7NuIG1hc3NhIGdyYW5zIHBlbCBzaXN0ZW1hIChtw6B4ICVkKSwgZXMgZm9yw6dhIGEgIgorImNvbnRpbnVhclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBvZmZzZXQgc3BlY2lmaWVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZmlsZSBzeXN0ZW0gc2l6ZS5cbiIKKyJDcmVhdGluZyBhIGZpbGUgc3lzdGVtIHdpdGggJWxsdSBibG9ja3MgYnV0IHRoaXMgbWlnaHRcbiIKKyJub3QgYmUgd2hhdCB5b3Ugd2FudC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTIKK21zZ2lkICJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUiCittc2dzdHIgIiIKKyJObyBlcyBwb3QgZmVyIHNlcnZpciBsYSBjYXJhY3RlcsOtc3RpY2EgYmlnYWxsb2Mgc2Vuc2UgbGEgY2FyYWN0ZXLDrXN0aWNhICIKKyLCq2V4dGVudHPCuyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJMZXMgY2FyYWN0ZXLDrXN0aXF1ZXMgcmVzaXplX2lub2RlIGkgbWV0YV9iZyBubyBzw7NuIGNvbXBhdGlibGVzLlxuIgorIk5vIGVzIHBvZGVuIGFjdGl2YXIgZGUgbWFuZXJhIHNpbXVsdMOgbmlhLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMjcKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2w61zOiBsYSBjYXJhY3RlcsOtc3RpY2EgYmlnYWxsb2MgZW5jYXJhIGVzdMOgIGVuIGRlc2Vudm9sdXBhbWVudFxuIgorIlZlZ2V1IGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIHBlciBtw6lzIGluZm9ybWFjacOzXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisiTGEgZnVuY2nDsyByZXNlcnZhZGEgcGVyIHJlZGltZW5zaW9uYXIgYmxvY3MgZW4gbMOtbmlhIG5vIGVzdMOgIGltcGxlbWVudGFkYSAiCisicGVyIHNpc3RlbWVzIGRlIGZpdHhlcnMgbm8gZGlzcGVyc29zIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNDgKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIGNvdW50IG91dCBvZiByYW5nZSIKK21zZ3N0ciAiZWwgbm9tYnJlIGRlIGJsb2NzIHBlciBncnVwIGVzdMOgIGZvcmEgZGUgbCdpbnRlcnZhbCBwZXJtw6hzIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorIkxhIGNhcmFjdGVyw61zdGljYSBmbGV4X2JnIG5vIGVzdMOgIGhhYmlsaXRhZGEsIHBlciBsYSBxdWFsIGNvc2Egbm8gw6lzIHBlcm3DqHMgIgorImVzcGVjaWZpY2FyIGxhIG1pZGEgZGUgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgIm1pZGEgZGUgbm9kZS1pIG5vIHbDoGxpZGEgKCVkKSAobcOtbiAlZC9tw6B4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBwcm9qZWN0IHF1b3RhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgImhpIGhhIG1hc3NhIG5vZGVzLWkgKCVsbHUpLCB2b2xldSBpbmNyZW1lbnRhci1uZSBsYSByw6B0aW8/IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICIiCisiaGkgaGEgbWFzc2Egbm9kZXMtaSAoJWxsdSksIGhhdXLDrWV1IGQnZXNwZWNpZmljYXItbmUgdW4gbm9tYnJlIG1lbm9yIGEgMl4zMiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSB0b28gYmlnIGZvciBhXG4iCisiXHRmaWxlc3lzdGVtIHdpdGggJWxsdSBibG9ja3MsIHNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG9yIGxvd2VyIGlub2RlIGNvdW50ICgtTikuXG4iCittc2dzdHIgIiIKKyJFbCBwcm9kdWN0ZSBpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSDDqXMgbWFzc2EgZ3JhbiBwZXIgYVxuIgorIlx0dW4gc2lzdGVtYSBkZSBmaXR4ZXJzIGFtYiAlbGx1IGJsb2NzLiBFc3BlY2lmaXF1ZXUgdW5hIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG3DqXMgZ3JhbiBvIGLDqSB1biBub21icmUgbWVub3IgZGUgbm9kZXMtaSAoLU4pLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiRXMgZGVzY2FydGVuIGVscyBibG9jcyBkZWwgZGlzcG9zaXRpdTogIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKK21zZ2lkICJmYWlsZWQgLSAiCittc2dzdHIgImhhIGZhbGxhdCAtICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IgorbXNnc3RyICJlbiBpbmljaWFsaXR6YXIgbGEgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgaW5vZGVzIgorbXNnc3RyICJlbiBlc2NyaXVyZSBhbCBub2RlLWkgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJjb21wb3J0YW1lbnQgZCdlcnJvciBlcnJvbmkgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICJlbiBjb25maWd1cmFyIGVsIHN1cGVyYmxvYyIKKworIzogbWlzYy9ta2UyZnMuYzoyODMwCittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBQYXNzIC1PIGV4dGVudHMgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzcKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg0NQorbXNnaWQgIlRoZSBtZXRhZGF0YV9jc3VtX3NlZWQgZmVhdHVyZSByZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODY5Cittc2dpZCAiRGlzY2FyZCBzdWNjZWVkZWQgYW5kIHdpbGwgcmV0dXJuIDBzIC0gc2tpcHBpbmcgaW5vZGUgdGFibGUgd2lwZVxuIgorbXNnc3RyICIiCisiUydoYSBkZXNjYXJ0YXQgY29ycmVjdGFtZW50IGkgZXMgcG9zYXJhbiAwcyAtIHNlIHNhbHRhIGxhIG5ldGVqYSBkZSBsYSB0YXVsYSAiCisiZGUgbm9kZXMtaVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJzaXN0ZW1hIG9wZXJhdGl1IGRlc2NvbmVndXQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDE4Cittc2dpZCAiQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICIKK21zZ3N0ciAiUydhc3NpZ25lbiBsZXMgdGF1bGVzIGRlIGdydXA6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICJlbiBpbnRlbnRhciBhc3NpZ25hciBsZXMgdGF1bGVzIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdGVuIGNvbnZlcnRpciBlbCBtYXBhIGRlIGJpdHMgZGVsIHN1YmdydXAgZGUgc2VjdG9ycyIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJlbiBlc2NyaXVyZSB6ZXJvcyBhbCBibG9jICVsbHUgYWwgZmluYWwgZGVsIHNpc3RlbWEgZGUgZml0eGVycyIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAiZW4gcmVzZXJ2YXIgYmxvY3MgcGVyIGFsIGNhbnZpIGRlIG1pZGEgZW4gbMOtbmlhIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgInJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyIKKworIzogbWlzYy9ta2UyZnMuYzozMTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBqb3VybmFsIHRvIGRldmljZSAlczogIgorbXNnc3RyICJBZGRpY2nDsyBkJ3VuIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBhbCBkaXNwb3NpdGl1ICVzOiIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdGVuIGludGVudGFyIGFmZWdpciB1biByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMgYWwgZGlzcG9zaXRpdSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAiZmV0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIiIKKyJFcyBzYWx0YSBsYSBjcmVhY2nDsyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGVuIGVsIG1vZGUgbm9tw6lzIHPDunBlclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJDcmVhY2nDsyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zICgldSBibG9jcyk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHRlbiBpbnRlbnRhciBjcmVhciBlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIGVuIGhhYmlsaXRhciBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgcHJvdGVjY2nDsyBkZSAiCisibXVudGF0Z2UgbcO6bHRpcGxlLiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICIiCisiUydoYSBoYWJpbGl0YXQgbGEgcHJvdGVjY2nDsyBkZSBtdW50YXRnZSBtw7psdGlwbGUgYW1iIHVuIGludGVydmFsICIKKyJkJ2FjdHVhbGl0emFjacOzIGRlICVkIHNlZ29ucy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCisjLCBmdXp6eQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIiIKKyJTJ2hhIHByb2R1w690IHVuIGVycm9yIHF1YW4gZXMgYnVpZGF2ZW4gbGVzIGVzY3JpcHR1cmVzIGRlbCBkaXNwb3NpdGl1ICIKKyJkJ2VtbWFnYXR6ZW1hbWVudDogJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgImVuIGFzc2lnbmFyIGxhIHRhdWxhIGwxIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAiIgorIkVzY3JpcHR1cmEgZGUgbGEgaW5mb3JtYWNpw7MgZGVscyBzdXBlcmJsb2NzIGkgZGUgY29tcHRhYmlsaXRhdCBkZWwgc2lzdGVtYSAiCisiZGUgZml0eGVyczoiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyJBdsOtczogaGkgaGEgaGFndXQgcHJvYmxlbWVzIGVuIGVzY3JpdXJlIGVscyBzdXBlcmJsb2NzLiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorImZldFxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJFcyBjcmVhIGVsIGZpdHhlciBub3JtYWwgJXNcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndpdGggJWxsdSBibG9ja3MgZWFjaCIKK21zZ3N0ciAiIgorImF2w61zOiAlbGx1IGJsb2NzIG5vIHV0aWxpdHphdHMuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJtZW50cmUgcydpdGVyYXZhIHNvYnJlIGVsIG5vZGUtaSAldSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiRm9ybWEgZCfDunM6IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZvcm1hIGQnw7pzOiAgJXMgZGlzcG9zaXRpdS4uLlxuIgorIlxuIgorIk1vc3RyYSBsYSBpbmZvcm1hY2nDsyBkZSBwYXJ0aWNpb25hbWVudCBwZXIgYSBjYWRhIGRpc3Bvc2l0aXUgZXNwZWNpZmljYXQuXG4iCisiUGVyIGV4ZW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgb3BlbiAlczogJXMiCittc2dzdHIgIk5vIGVzIHBvdCBvYnJpciAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiTm8gZXMgcG90IG9idGVuaXIgbGEgZ2VvbWV0cmlhIGRlICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIk5vIGVzIHBvdCBvYnRlbmlyIGxhIG1pZGEgZGUgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIGluaWNpPSU4ZCBtaWRhPSU4bHUgZmluYWw9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiSGF1csOtZXUgZCdleGVjdXRhciBsJ2UyZnNjayBlbiBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkhhdXLDrWV1IGQnZXhlY3V0YXIgbCdlMmZzY2sgZW4gZWwgc2lzdGVtYSBkZSBmaXR4ZXJzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkZvcm1hIGQnw7pzOiAlcyBbLWMgQ29udGFkb3JfbcOgeGltX211bnRhdGdlc10gWy1lIGNvbXBvcnRhbWVudF9lcnJvcnNdIFstZyAiCisiZ3J1cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIG9wY2lvbnNfcmVnaXN0cmVfdHJhbnNhY2Npb25zXSBbLWxdXG4iCisiXHRbLW0gcGVyY2VudF9ibG9jc19yZXNlcnZhdHNdIFstbyBbXl1vcGNpb25zX211bnRhdGdlWywuLi5dXSBbLXAgIgorIm1tcF9pbnRlcnZhbF9hY3R1YWxpdHpdXG4iCisiXHRbLXIgY29tcHRhZG9yX2Jsb2NzX3Jlc2VydmF0c10gWy11IHVzdWFyaV0gWy1DIGNvbXB0YWRvcl9tdW50YXRnZXNdIFstTCAiCisiZXRpcXVldGFfdm9sdW1dXG4iCisiXHRbLU0gZGlyX8O6bHRpbV9tdW50YXRnZV0gWy1PIFteXWNhcmFjdGVyw61zdGljYVssLi4uXV1cbiIKKyJcdFstUSBvcGNpb25zX2N1b3RhXVxuIgorIlx0Wy1FIG9wY2nDs19lc3Rlc2FbLC4uLl1dIFstVCDDumx0aW1fY29wX2NvbXByb3ZhdF0gWy1VIFVVSURdXG4iCisiXHRbIC1JIG5vdmFfbWlkYV9ub2RlLWldIGRpc3Bvc2l0aXVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiTm8gcydoYSB0cm9iYXQgZWwgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiZW4gaW50ZW50YXIgb2JyaXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGV4dGVybiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyIG1pc2MvdHVuZTJmcy5jOjI3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIG5vIMOpcyB1biBkaXNwb3NpdGl1IGRlIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJObyBzJ2hhIHRyb2JhdCBsJ1VVSUQgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBlbiBlbCBkaXNwb3NpdGl1IGRlbCByZWdpc3RyZSAiCisiZGUgdHJhbnNhY2Npb25zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTYKK21zZ2lkICIiCisiQ2Fubm90IGxvY2F0ZSBqb3VybmFsIGRldmljZS4gSXQgd2FzIE5PVCByZW1vdmVkXG4iCisiVXNlIC1mIG9wdGlvbiB0byByZW1vdmUgbWlzc2luZyBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIk5vIGVzIHBvdCB1YmljYXIgZWwgZGlzcG9zaXRpdSBwZXIgYWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zLiBOTyBzJ2hhICIKKyJ0cmV0XG4iCisiRmV1IHNlcnZpciBsJ29wY2nDsyAtZiBwZXIgdHJldXJlIGVsIGRpc3Bvc2l0aXUgcGVyIGFsIHJlZ2lzdHJlIGRlICIKKyJ0cmFuc2FjY2lvbnMgcXVlIGZhbHRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAiUydoYSBzdXByaW1pdCBlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJlbiBsbGVnaXIgZWxzIG1hcGVzIGRlIGJpdHMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImVuIG5ldGVqYXIgZWwgbm9kZS1pIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiZW4gZXNjcml1cmUgYWwgbm9kZS1pIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIihpIHJlaW5pY2lldSBkZXNwcsOpcylcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJFeGVjdXRldSDCq2UyZnNjayAtZiAlc8K7IHByaW1lci5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhIGRlIG5ldGVqYSBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIMKrJXPCuyBubyBlc3TDoCAiCisiaW1wbGVtZW50YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIkwnZXN0YWJsaW1lbnQgZGUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgwqslc8K7IG5vIGVzdMOgICIKKyJpbXBsZW1lbnRhZGEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMjUKK21zZ2lkICIiCisiVGhlIGhhc19qb3VybmFsIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhIGhhc19qb3VybmFsIG5vbcOpcyBlcyBwb3QgZXNib3JyYXIgc2kgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzICIKKyJub1xuIgorImVzdMOgIG11bnRhdCwgbyBiw6kgZXN0w6AgbXVudGF0IGVuIG1vZGUgZGUgbm9tw6lzIGxlY3R1cmEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMzMKK21zZ2lkICIiCisiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgUGxlYXNlIHJ1biBlMmZzY2sgYmVmb3JlIGNsZWFyaW5nXG4iCisidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iCittc2dzdHIgIiIKKyJFbCBzZW55YWxhZG9yIG5lZWRzX3JlY292ZXJ5IGVzdMOgIGVzdGFibGVydC4gSGF1csOtZXUgZCdleGVjdXRhciBsJ2UyZnNja1xuIgorImFiYW5zIGRlIG5ldGVqYXIgZWwgc2VueWFsYWRvciBoYXNfam91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiTCdlc3RhYmxpbWVudCBkZSBsYSBjYXJhY3RlcsOtc3RpY2EgZGVsIHNpc3RlbWEgZGUgZml0eGVycyDCq3NwYXJzZV9zdXBlcsK7IG5vICIKKyJlc3TDoCBpbXBsZW1lbnRhZGFcbiIKKyJwZXIgYWxzIHNpc3RlbWVzIGRlIGZpdHhlcnMgYW1iIGwnb3BjacOzIG1ldGFfYmcgaGFiaWxpdGFkYVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDY0Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkxhIGNhcmFjdGVyw61zdGljYSBkZSBwcm90ZWNjacOzIGNvbnRyYSBlbHMgbXVudGF0Z2VzIG3Dumx0aXBsZXMgXG4iCisibm8gZXMgcG90IGhhYmlsaXRhciBzaSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgZXN0w6AgbXVudGF0XG4iCisibyDDqXMgZGUgbm9tw6lzIGxlY3R1cmEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorIlMnaGEgaGFiaWxpdGF0IGxhIHByb3RlY2Npw7MgY29udHJhIG11bnRhdGdlcyBtw7psdGlwbGVzIGFtYiB1biBpbnRlcnZhbCAiCisiZCdhY3R1YWxpdHphY2nDsyBkZSAlZHMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTEKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW5ub3RcbiIKKyJiZSBkaXNhYmxlZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyByZWFkb25seS5cbiIKK21zZ3N0ciAiIgorIkxhIHByb3RlY2Npw7MgY29udHJhIG11bnRhdGdlcyBtw7psdGlwbGVzIG5vIGVzIHBvdFxuIgorImRlc2hhYmlsaXRhciBzaSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgw6lzIGRlIG5vbcOpcyBsZWN0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZW4gbGxlZ2lyIGVscyBtYXBlcyBkZSBiaXRzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIiIKKyJFbHMgbsO6bWVyaSBtw6BnaWMgZGVsIGJsb2MgTU1QIG5vIGNvaW5jaWRlaXguIFMnZXNwZXJhdmE6ICV4LCBpIMOpczogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAiZW4gbGxlZ2lyIGVsIGJsb2MgTU1QLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiIgorIlRyZXVyZSBlbCBzZW55YWxhZG9yIGZsZXhfYmcgcG90IGZlciBxdWUgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzXG4iCisibm8gc2lndWkgY29uc2lzdGVudC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhIGh1Z2VfZmlsZSBub23DqXMgZXMgcG90IGVzYm9ycmFyIHNpIGVsIHNpc3RlbWEgZGUgZml0eGVycyAiCisibm9cbiIKKyJlc3TDoCBtdW50YXQsIG8gYsOpIGVzdMOgIG11bnRhdCBlbiBtb2RlIGRlIG5vbcOpcyBsZWN0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExODIKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUnVuIHJlc2l6ZTJmcyAtYiB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2w61zOiBMJ29wY2nDsyDCq15xdW90YcK7IHN1YnN0aXR1ZWl4IGVscyBhcmd1bWVudHMgZGUgwqstUcK7LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQ0CisjLCBmdXp6eQorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkwnZXN0YWJsaW1lbnQgZGUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgwqtzcGFyc2Vfc3VwZXLCuyBubyAiCisiZXN0w6AgaW1wbGVtZW50YWRhXG4iCisicGVyIGFscyBzaXN0ZW1lcyBkZSBmaXR4ZXJzIGFtYiBsJ29wY2nDsyBtZXRhX2JnIGhhYmlsaXRhZGFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIkVsIHNpc3RlbWEgZGUgZml0eGVycyBqYSB0w6kgdW4gcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgb24gJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlx0ZW4gaW50ZW50YXIgb2JyaXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGEgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIgorbXNnc3RyICJDcmVhY2nDsyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGFsIGRpc3Bvc2l0aXUgJXM6IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgImVuIGFmZWdpciB1biBzaXN0ZW1hIGRlIGZpdHhlcnMgYWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGEgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDYKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiCittc2dzdHIgIkNyZWFjacOzIGRlbCBub2RlLWkgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9uczoiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0ZW4gaW50ZW50YXIgY3JlYXIgZWwgZml0eGVyIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJlbiBpbmljaWFsaXR6YXIgZWwgc3VwZXJibG9jIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJlbiBhY3R1YWxpdHphciBlbCBub2RlLWkgZGUgYmxvY2sgZXJyb25pcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgImVuIGVzY3JpdXJlIGxhIHRhdWxhIGRlbHMgbm9kZXMtaSAoZ3J1cCAlZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAiZW4gbGxlZ2lyIGxhIHRhdWxhIGRlbHMgbm9kZXMtaSAoZ3J1cCAlZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiTGVzIG9wY2lvbnMgZGUgcXVvdGEgbm8gcydoYW4gZXNwZWNpZmljYXQgY29ycmVjdGFtZW50LlxuIgorIlxuIgorIkhpIGhhIGRpc3BvbmlibGVzIGxlcyBzZWfDvGVudHMgb3BjaW9ucyBkZSBxdW90YSAoc2VwYXJldS1sZXMgYW1iIGNvbWEpOlxuIgorIlx0W15ddXNycXVvdGFcbiIKKyJcdFteXWdycHF1b3RhXG4iCisiXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgcGFyc2UgZGF0ZS90aW1lIHNwZWNpZmllcjogJXMiCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgYW5hbGl0emFyIGwnZXNwZWNpZmljYWRvciBkZSBkYXRhL2hvcmE6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJub21icmUgZGUgbXVudGF0Z2VzIGVycm9uaSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJub20gZGUgZ3J1cC9naWQgZXJyb25pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgImludGVydmFsIGVycm9uaSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICJyw6B0aW8gZGUgYmxvY3MgcmVzZXJ2YXRzIGVycsOybmlhIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gbm9tw6lzIGVzIHBvdCBlc3BlY2lmaWNhciB1bmEgdmVnYWRhIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1PIG5vbcOpcyBlcyBwb3QgZXNwZWNpZmljYXIgdW5hIHZlZ2FkYSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIm7Dum1lcm8gZGUgYmxvY3MgcmVzZXJ2YXRzIGVycm9uaSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgIm5vbSBkJ3VzdWFyaS91aWQgZXJyb25pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAibWlkYSBkZWwgbm9kZS1pIGVycsOybmlhIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiTGEgbWlkYSBkZWwgbm9kZS1pIGhhIGRlIHNlciB1bmEgcG90w6huY2lhIGRlIDIgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTk2NworIywgYy1mb3JtYXQKK21zZ2lkICJtbXBfdXBkYXRlX2ludGVydmFsIHRvbyBiaWc6ICVsdVxuIgorbXNnc3RyICJMJ21tcF91cGRhdGVfaW50ZXJ2YWwgw6lzIG1hc3NhIGdyYW46ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICIiCisiUydlc3RhYmxlaXggbCdpbnRlcnZhbCBkJ2FjdHVhbGl0emFjacOzIGRlIGxhIHByb3RlY2Npw7MgY29udHJhIG11bnRhdGdlcyAiCisibcO6bHRpcGxlcyBhICVsdSBzZWdvblxuIgorbXNnc3RyWzFdICIiCisiUydlc3RhYmxlaXggbCdpbnRlcnZhbCBkJ2FjdHVhbGl0emFjacOzIGRlIGxhIHByb3RlY2Npw7MgY29udHJhIG11bnRhdGdlcyAiCisibcO6bHRpcGxlcyBhICVsdSBzZWdvbnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICJMJ3N0cmlkZSBkZWwgUkFJRCBubyDDqXMgdsOgbGlkOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCittc2dzdHIgIkwnc3RyaXBlLXdpZHRoIGRlbCBSQUlEIG5vIMOpcyB2w6BsaWQ6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiQWxnb3Jpc21lIGRlIHJlc3VtIG5vIHbDoGxpZDogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJFc3RhYmxpbWVudCBkZSBsJ2FsZ29yaXNtZSBkZSByZXN1bSBwcmVkZXRlcm1pbmF0IGEgJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiUydoYSBlc3BlY2lmaWNhdCB1bmEgbyB2w6ByaWVzIG9wY2lvbnMgaW5jb3JyZWN0ZXMuXG4iCisiXG4iCisiTGVzIG9wY2lvbnMgZXN0ZXNlcyBzZSBzZXBhcmVuIGFtYiBjb21lcywgaSBoYW4gZGUgdGVuaXIgdW4gYXJndW1lbnRcbiIKKyJcdHF1ZSBzJ2VzdGFibGVpeCBhbWIgZWwgc2lnbmUgaWd1YWwgKMKrPcK7KS5cbiIKKyJcbiIKKyJMZXMgb3BjaW9ucyBlc3Rlc2VzIHbDoGxpZGVzIHPDs246XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxhbGdvcmlzbWUgZGUgcmVzdW0+XG4iCisiXHRzdHJpZGU9PHRyb3Nzb3MgZGUgZGFkZXMgcGVyIGRpc2MgUkFJRCBlbiBibG9jcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08c3RyaWRlIGRlbCBSQUlEICogZGlzY3MgZGUgZGFkZXMgZW4gYmxvY3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgbGxlZ2l0IGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kZS1pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBibG9jayBiaXRtYXBcbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBsbGVnaXQgZWwgbWFwYSBkZSBiaXRzIGRlbCBibG9jXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDEgcmVzaXplL3Jlc2l6ZTJmcy5jOjEyNzYKK21zZ2lkICJibG9ja3MgdG8gYmUgbW92ZWQiCittc2dzdHIgImJsb2NzIGEgbW91cmUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIiIKKyJObyBzJ2hhIHBvZ3V0IGFzc2lnbmFyIGVsIG1hcGEgZGUgYml0cyBkZWwgYmxvYyBlbiBmZXIgbcOpcyBncmFuIGVsIG5vZGUtaVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICJObyBoaSBoYSBwcm91IGVzcGFpIHBlciBmZXIgbcOpcyBncmFuIGVsIG5vZGUtaVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IHJldWJpY2FyIGVscyBibG9jcyBlbiBjYW52aWFyIGxhIG1pZGEgZGUgbm9kZS1pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gY2FudmlhciBsYSBtaWRhIGRlbCBub2RlLWkuXG4iCisiRXhlY3V0ZXUgbCdlMnVuZG8gcGVyIGEgZGVzZmVyIGVscyBjYW52aXMgYWwgc2lzdGVtYSBkZSBmaXR4ZXJzLiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJFbCBibG9jIG3DoGdpYyBNTVAgZXN0w6AgbWFsYW1lbnQuIFByb3ZldSBkJ2FycmVnbGFyLWxvIGZlbnQgc2VydmlyOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBubyDDqXMgdW4gZGlzcG9zaXRpdSBkZSByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiTGEgbWlkYSBkZWwgbm9kZS1pIGphIMOpcyAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzMQorbXNnaWQgIlNocmlua2luZyBpbm9kZSBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIKK21zZ3N0ciAiTGEgcmVkdWNjacOzIGRlIGxhIG1pZGEgZGVsIG5vZGUtaSBubyBlc3TDoCBpbXBsZW1lbnRhZGFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgIkxhIG1pZGEgZGVsIG5vZGUtaSBubyDDqXMgdsOgbGlkYSAlbHUgKG3DoHggJWQpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4NDIKK21zZ2lkICJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIkVzdGFibGltZW50IGRlbCBub21icmUgbcOgeGltIGRlIG11bnRhdGdlcyBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIkVzdGFibGltZW50IGRlbCBub21icmUgZGUgbXVudGF0Z2VzIGFjdHVhbCBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJFc3RhYmxpbWVudCBkZWwgY29tcG9ydGFtZW50IGQnZXJyb3IgYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAiRXN0YWJsaW1lbnQgZGVsIEdJRCBkZWxzIGJsb2NzIHJlc2VydmF0cyBhICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgIkwnaW50ZXJ2YWwgZW50cmUgY29tcHJvdmFjaW9ucyDDqXMgbWFzc2EgZ3JhbiAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIkVzdGFibGltZW50IGRlIGwnaW50ZXJ2YWwgZW50cmUgY29tcHJvdmFjaW9ucyBhICVsdSBzZWdvbnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICJTJ2VzdGFibGVpeCBlbCBwZXJjZW50YXRnZSBkZSBibG9jcyByZXNlcnZhdHMgYSAlZyUlICglbGx1IGJsb2NzKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAiZWwgY29udGFkb3IgZGUgYmxvY3MgcmVzZXJ2YXRzIMOpcyBtYXNzYSBncmFuICglbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIlMnZXN0YWJsZWl4IGVsIGNvbnRhZG9yIGRlIGJsb2NzIHJlc2VydmF0cyBhICVsbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0MgorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBzcGFyc2Ugc3VwZXJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgamEgdMOpIHN1cGVyYmxvY3MgZGlzcGVyc29zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkwnZXN0YWJsaW1lbnQgZGVsIHNlbnlhbGFkb3IgZGUgc3VwZXJibG9jIGRpc3BlcnMgbm8gZXN0w6AgaW1wbGVtZW50YXRcbiIKKyJwZWxzIHNpc3RlbWVzIGRlIGZpdHhlcnMgYW1iIGxhIGNhcmFjdGVyw61zdGljYSBtZXRhX2JnICBoYWJpbGl0YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisiXG4iCisiUydoYSBlc3RhYmxlcnQgZWwgc2VueWFsYWRvciBkZSBzdXBlcmJsb2MgZGlzcGVycy4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIG5ldGVqYSBkZWwgc2VueWFsYWRvciBkZSBzdXBlcmJsb2MgZGlzcGVycyBubyBlc3TDoCBpbXBsZW1lbnRhZGEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIkVzdGFibGltZW50IGRlIGxhIGRhcnJlcmEgY29tcHJvdmFjacOzIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgYSAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAiRXN0YWJsaW1lbnQgZGUgbCdVSUQgZGVscyBibG9jcyByZXNlcnZhdHMgYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiIgorIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gZmVyIHNlcnZpciBjbGVhcl9tbXAuIFMnaGEgZGUgZmVyIHNlcnZpciBhbWIgLWZcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAyNAorbXNnaWQgIiIKKyJUaGUgcXVvdGEgZmVhdHVyZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhIHF1b3RhIHMnaGEgZGUgY2FudmlhciBub23DqXMgcXVhbiBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgIgorImVzdMOgIGRlc211bnRhdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA0OAorbXNnaWQgIlRoZSBVVUlEIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJMJ1VVSUQgcydoYSBkZSBjYW52aWFyIG5vbcOpcyBxdWFuIGVsIHNpc3RlbWEgZGUgZml0eGVycyBlc3TDoCBkZXNtdW50YXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIkVsIGZvcm1hdCBkZSBsJ1VVSUQgbm8gw6lzIHbDoGxpZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJTJ2hhIGQnYWN0dWFsaXR6YXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMjYKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiTGEgbWlkYSBkZWwgbm9kZS1pIG5vbcOpcyBlcyBwb3QgY2FudmlhciBxdWFuIGVsIHNpc3RlbWEgZGUgZml0eGVycyBlc3TDoCAiCisiZGVzbXVudGF0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJObyBlc3TDoCBpbXBsZW1lbnRhdCBlbCBjYW52aSBkZSBtaWRhIGRlbCBub2RlLWkgZW4gc2lzdGVtZXMgZGUgZml0eGVyc1xuIgorImFtYiBsYSBjYXJhY3RlcsOtc3RpY2EgZmxleF9iZyBoYWJpbGl0YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiUydlc3RhYmxlaXggbGEgbWlkYSBkZSBub2RlLWkgYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGNhbnZpYXIgbGEgbWlkYSBkZWwgbm9kZS1pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJTJ2VzdGFibGVpeCBsYSBtaWRhIGRlIGwnc3RyaWRlIGEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICJTJ2VzdGFibGVpeCBsJ2FtcGxhZGEgZGUgbCdzdHJpZGUgYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiUydlc3RhYmxlaXggbGVzIG9wY2lvbnMgZXN0ZXNlcyBkZSBtdW50YXRnZSBwZXIgZGVmZWN0ZSDCqyVzwrtcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiJXM6IHJlY3VwZXJhY2nDsyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICI8Y29udGludWFyPlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIlZvbGV1IGNvbnRpbnVhciBkZSB0b3RlcyBtYW5lcmVzIChvIGVzcGVyYXIgJWQgc2Vnb25zKSA/IChzLG4pIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJWb2xldSBjb250aW51YXIgZGUgdG90ZXMgbWFuZXJlcz8gKHMsbikiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisicydoYSBmb3LDp2F0IGVsIG1rZTJmcyBkZSB0b3RlcyBtYW5lcmVzLiBBbWIgdW5hIG1pY2EgZGUgc29ydCBlbCBmaXR4ZXIgL2V0Yy8iCisibXRhYiDDqXMgaW5jb3JyZWN0ZS5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICJubyBlcyBmYXLDoCB1biAlcyBhcXXDrVxuIgorCisjOiBtaXNjL3V0aWwuYzoxNDUKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAicydoYSBmb3LDp2F0IGVsIG1rZTJmcyBkZSB0b3RlcyBtYW5lcmVzLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxNjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugam91cm5hbCBvcHRpb25zIVxuIgorbXNnc3RyICIiCisiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBtZW3DsnJpYSBwZXIgYSBhbmFsaXR6YXIgbGVzIG9wY2lvbnMgZGVsIHJlZ2lzdHJlIGRlICIKKyJ0cmFuc2FjY2lvbnNcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiTm8gcydoYSB0cm9iYXQgY2FwIGRpc3Bvc2l0aXUgZGUgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIHF1ZSBjb2luY2lkZWl4aSAiCisiYW1iICVzXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlMnaGFuIGVzcGVjaWZpY2F0cyBvcGNpb25zIGluY29ycmVjdGVzIHBlciBhbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMuXG4iCisiXG4iCisiTGVzIG9wY2lvbnMgcGVyIGFsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBzZSBzZXBhcmVuIGFtYiBjb21lcyBpIGhhbiBkZSAiCisidGVuaXIgdW4gYXJndW1lbnRcbiIKKyJcdHF1ZSBzJ2VzdGFibGVpeCBhbWIgZWwgc2lnbmUgaWd1YWwgKMKrPcK7KS5cbiIKKyJcbiIKKyJMZXMgb3BjaW9ucyB2w6BsaWRlcyBwZXIgYWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIHPDs246XG4iCisiXHRzaXplPTxtaWRhIGVuIG1lZ2FieXRlcyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zPlxuIgorIlx0ZGV2aWNlPTxkaXNwb3NpdGl1IGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnM+XG4iCisiXHRsb2NhdGlvbj08dWJpY2FjacOzIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnM+blxuIgorIkxhIG1pZGEgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBoYSBkZSBzZXIgZW50cmUgMTAyNCBpIDEwMjQwMDAwIGJsb2NzICIKKyJkZSBzaXN0ZW1hIGRlIGZpdHhlci5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIHNpc3RlbWEgZGUgZml0eGVycyDDqXMgbWFzc2EgcGV0aXQgcGVyIGEgdW4gcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIG1pZGEgZGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyByZXF1ZXJpZGEgw6lzIGRlICVkIGJsb2NzLiBIYSBkZSBzZXJcbiIKKyJlbnRyZSAxMDI0IGkgMTAyNDAwMDAgYmxvY3MuIFMnaW50ZXJyb21wLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJMYSBtaWRhIGRlbCByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMgw6lzIG1hc3NhIGdyYW4gcGVyIGFsIHNpc3RlbWEgZGUgIgorImZpdHhlcnMuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiQXF1ZXN0IHNpc3RlbWEgZGUgZml0eGVycyBlcyBjb21wcm92YXLDoCBhdXRvbcOgdGljYW1lbnQgY2FkYSAlZCBtdW50YXRnZXNcbiIKKyJvIGLDqSBjYWRhICVnIGRpZXMsIGVsIHF1ZSBwYXNzaSBwcmltZXIuICBGZXUgc2VydmlyIHR1bmUyZnMgLWMgbyAtdCBwZXIgIgorIm1vZGlmaWNhci1oby5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIkZvcm1hIGQnw7pzOiAlcyBbLWRdIFstcCBwaWRmaXR4ZXJdIFstcyBjYW3DrXPDsmNvbF0gWy1UIHRlbXBzbcOgeF1cbiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG7Dum1dIFstcyBjYW3DrXPDsmNvbF1cbiIKKworIzogbWlzYy91dWlkZC5jOjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAta1xuIgorbXNnc3RyICIgICAgICAgJXMgLWtcbiIKKworIzogbWlzYy91dWlkZC5jOjE1NQorbXNnaWQgImJhZCBhcmd1bWVudHMiCittc2dzdHIgImFyZ3VtZW50cyBpbmNvcnJlY3RlcyIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgImNvbm5lY3RhIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgImVzY3JpdSIKKworIzogbWlzYy91dWlkZC5jOjIwMAorbXNnaWQgInJlYWQgY291bnQiCittc2dzdHIgImxsZWdlaXggZWwgY29tcHRhZG9yIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAibG9uZ2l0dWQgZGUgbGEgcmVzcG9zdGEgaW5jb3JyZWN0YSIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJlbCBkaW1vbmkgdXVpZGQgamEgcydlc3TDoCBleGVjdXRhbnQgYW1iIGVsIHBpZCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGNyZWFyIGVsIHPDsmNvbCBkZSBmbHV4IGRlIHVuaXg6ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgdmluY3VsYXIgZWwgc8OyY29sICVzIGRlIHVuaXg6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGVzY29sdGFyIGFsIHPDsmNvbCBkZSB1bml4ICVzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gbGxlZ2lyIGRlbCBjbGllbnQsIGxvbmdpdHVkID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIm9wZXJhY2nDsyAlZCwgbsO6bWVybyBlbnRyYW50ID0lZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQ6ICVzXG4iCittc2dzdHIgIlMnaGEgZ2VuZXJhdCBlbCBVVUlEIGRlIHRlbXBzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiUydoYSBnZW5lcmF0IGVsIFVVSUQgYWxlYXRvcmk6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAiUydoYSBnZW5lcmF0IGVsIFVVSUQgZGUgdGVtcHMgJXMgaSBlbCBzdWJzZWfDvGVudCBVVUlEXG4iCittc2dzdHJbMV0gIlMnaGEgZ2VuZXJhdCBlbCBVVUlEIGRlIHRlbXBzICVzIGkgZWxzICVkIHN1YnNlZ8O8ZW50cyBVVUlEc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIlMnaGEgZ2VuZXJhdCAlZCBVVUlEJ3M6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvcGVyYXRpb24gJWRcbiIKK21zZ3N0ciAiTCdvcGVyYWNpw7MgJWQgbm8gw6lzIHbDoGxpZGFcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIk7Dum1lcm8gaW5jb3JyZWN0ZTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNhbGxpbmcgdXVpZGQgZGFlbW9uICglcyk6ICVzXG4iCittc2dzdHIgIlMnaGEgcHJvZHXDr3QgdW4gZXJyb3IgZW4gY3JpZGFyIGVsIGRpbW9uaSBkZWwgdXVpZGQoJXMpOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiJXMgaSBlbCBzdWJzZWfDvGVudCBVVUlEXG4iCittc2dzdHJbMV0gIiVzIGkgZWxzIHN1YnNlZ8O8ZW50cyAlZCBVVUlEc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIkxsaXN0YSBkZSBVVUlEJ3M6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiTG9uZ2l0dWQgZGUgcmVzcG9zdGEgaW5lc3BlcmFkYSBkZXMgZGVsIHNlcnZpZG9yICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBtYXRhciBlbCB1dWlkZCBxdWUgcydleGVjdXRhIGFtYiBlbCBwaWQgJWQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iCittc2dzdHIgIlMnaGEgbWF0YXQgZWwgdXVpZGQgcXVlIHMnZXhlY3V0YSBhbWIgZWwgcGlkICVkXG4iCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiRm9ybWEgZCfDunM6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBCb2xjYXQgZGUgbCdlc3RlbnNpw7M6XG4iCisKKyMgRklYTUU6IMKrU29ydGVkwrsgKGRwbSkKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiI1x0TnVtPSVsbHUsIFNpemU9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRlZD0lbGx1XG4iCittc2dzdHIgIiNcdE7Dum09JWxsdSwgTWlkYT0lbGx1LCBDdXJzb3I9JWxsdSwgT3JkZW5hdD0lbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZGV2aWNlIFstYnwtc3xuZXdfc2l6ZV0gIgorIlsteiB1bmRvX2ZpbGVdXG4iCisiXG4iCittc2dzdHIgIiIKKyJGb3JtYSBkJ8O6czogJXMgWy1kIHNlbnlhbGFkb3JzX2RlX2RlcHVyYWNpw7NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSAiCisiZGlzcG9zaXRpdSBbbWlkYSBub3ZhXVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjcyCittc2dpZCAiRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiQW1wbGlhY2nDsyBkZSBsYSB0YXVsYSBkZSBub2Rlcy1pIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIlJldWJpY2FjacOzIGRlbHMgYmxvY3MiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRXNjYW5laWcgZGUgbGEgdGF1bGEgZGUgbm9kZXMtaSIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIkFjdHVhbGl0emFjacOzIGRlIGxlcyByZWZlcsOobmNpZXMgZGVscyBub2Rlcy1pIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJUcmFzbGxhdCBkZSBsYSB0YXVsYSBkZSBub2Rlcy1pIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJQYXMgZGVzY29uZWd1dCE/IgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAiSW5pY2kgZGVsIHBhcyAlZCAobcOgeCA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIGNhbnZpIGRlIG1pZGEgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBiaWdhbGxvYyBubyBlc3TDoCBjb21wbGV0YW1lbnQgIgorInByb3ZhdC4gQ29udGludWV1XG4iCisiYWwgdm9zdHJlIHByb3BpIHJpc2MhIEVtcHJldSBsJ29wY2nDsyBkZSBmb3LDp2F0IHNpIHZvbGV1IGNvbnRpbnVhciBkZSB0b3RlcyAiCisibWFuZXJlcy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzozNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyIKK21zZ3N0ciAiZW4gb2JyaXIgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgImVvbiBvYnRlbmlyIGxhIGluZm9ybWFjacOzIGQnwqtzdGF0wrsgcGVyIGEgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisiRXhlY3V0ZXUgwqtlMmZzY2sgLWYgJXPCuyBwcmltZXIuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAiTWlkYSBtw61uaW1hIGVzdGltYWRhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnM6ICVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAiTGEgbWlkYSBub3ZhIG5vIMOpcyB2w6BsaWRhOiAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUyMAorbXNnaWQgIk5ldyBzaXplIHRvbyBsYXJnZSB0byBiZSBleHByZXNzZWQgaW4gMzIgYml0c1xuIgorbXNnc3RyICJMYSBtaWRhIG5vdmEgw6lzIG1hc3NhIGdyYW4gcGVyIHNlciBleHByZXNzYWRhIGVuIDMyIGJpdHNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTmV3IHNpemUgc21hbGxlciB0aGFuIG1pbmltdW0gKCVsbHUpXG4iCittc2dzdHIgIkxhIG1pZGEgbm92YSDDqXMgaW5mZXJpb3IgYWwgbcOtbmltICglbGx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiTGEgbG9uZ2l0dWQgZGVsIHN0cmlkZSBubyDDqXMgdsOgbGlkYSIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxhIHBhcnRpY2nDsyAobyBkaXNwb3NpdGl1KSBjb250ZW5pZG9yYSB0w6kgdW5hIG1pZGEgZGUgbm9tw6lzICVsbHUgKCVkaykgIgorImJsb2NzLlxuIgorIk4naGV1IHJlcXVlcml0IHVuYSBtaWRhIG5vdmEgZGUgJWxsdSBibG9jcy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkxhIGNhcmFjdGVyw61zdGljYSBxdW90YSBzJ2hhIGRlIGNhbnZpYXIgbm9tw6lzIHF1YW4gZWwgc2lzdGVtYSBkZSBmaXR4ZXJzICIKKyJlc3TDoCBkZXNtdW50YXQuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgamEgdMOpIHVuYSBsbGFyZ8OgcmlhIGRlICVsbHUgKCVkaykgYmxvY3MuIE5vIGNhbCBmZXIgIgorInJlcyFcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgamEgdMOpIHVuIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucy5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgamEgdMOpIHVuIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICJFc3RhYmxpbWVudCBkZSBsYSBkYXJyZXJhIGNvbXByb3ZhY2nDsyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJFc3RhYmxpbWVudCBkZSBsYSBkYXJyZXJhIGNvbXByb3ZhY2nDsyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIiIKKyJFcyBjYW52aWEgbGEgbWlkYSBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIHF1ZSBoaSBoYSBhICVzIGEgJWxsdSAoJWRrKSBibG9jcy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIKK21zZ3N0ciAiZW4gaW50ZW50YXIgcmVkaW1lbnNpb25hciAlcyIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKyJFeGVjdXRldSDCq2UyZnNjayAtZnkgJXPCuyBwZXIgYXJyZWdsYXIgZWwgc2lzdGVtYSBkZSBmaXR4ZXJzXG4iCisiZGVzcHLDqXMgZCdpbnRlcnJvbXByZSBsYSBvcGVyYWNpw7MgZGUgY2FudmkgZGUgbWlkYS5cbiIKKworIzogcmVzaXplL21haW4uYzo2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIG9uICVzIGlzIG5vdyAlbGx1ICglZGspIGJsb2NrcyBsb25nLlxuIgorIlxuIgorbXNnc3RyICIiCisiRWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGEgJXMgdMOpIGFyYSB1bmEgbGxhcmfDoHJpYSBkZSAlbGx1ICglZGspIGJsb2NzLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgImVuIGludGVudGFyIHRydW5jYXIgJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICIiCisiRWwgbnVjbGkgbm8gw6lzIGNvbXBhdGlibGUgYW1iIGVsIGNhbnZpIGRlIG1pZGEgZW4gbMOtbmlhIGFtYiBzcGFyc2Vfc3VwZXIyIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgYSAlcyBlc3TDoCBtdW50YXQgYSAlczsgY2FsIHVuIGNhbnZpIGRlIG1pZGEgZW4gbMOtbmlhXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkxhIHJlZHVjY2nDsyBkZSBtaWRhIGVuIGzDrW5pYSBubyBlc3TDoCBpbXBsZW1lbnRhZGEiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgbm8gw6lzIGNvbXBhdGlibGUgYW1iIGVsIGNhbnZpIGRlIG1pZGEgZW4gbMOtbmlhIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAiTm8gaGkgaGEgcHJvdSBibG9jcyBnZHQgcmVzZXJ2YXRzIHBlciBmZXIgZWwgY2FudmkgZGUgbWlkYSIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiIgorIkVsIG51Y2xpIG5vIMOpcyBjb21wYXRpYmxlIGFtYiBlbCBjYW52aSBkZSBtaWRhIGQndW4gc2lzdGVtYSBkZSBmaXR4ZXJzIHRhbiAiCisiZ3JhbiIKKworIzogcmVzaXplL29ubGluZS5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBtb3VudHBvaW50ICVzIgorbXNnc3RyICJlbiBpbnRlbnRhciBvYnJpciBlbCBwdW50IGRlIG11bnRhdGdlICVzIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiUydoYSBkZW1hbmF0IGxhIGludGVyZsOtY2llIGRlIGNhbnZpIGRlIG1pZGEgYW50aWdhLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiUydoYSBkZW5lZ2F0IGVsIHBlcm3DrXMgcGVyIGEgY2FudmlhciBsYSBtaWRhIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIkVuIGNvbXByb3ZhciBsYSBjb21wYXRpYmlsaXRhdCBhbWIgZWwgY2FudmkgZGUgbWlkYSBlbiBsw61uaWEiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxODEKK21zZ2lkICJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIkVsIG51Y2xpIG5vIMOpcyBjb21wYXRpYmxlIGFtYiBlbCBjYW52aSBkZSBtaWRhIGVuIGzDrW5pYSIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICJFcyByZWFsaXR6YSB1biBjYW52aSBkZSBtaWRhIGVuIGzDrW5pYSBkZSAlcyBhICVsbHUgKCVkaykgYmxvY3MuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJFbiBpbnRlbnRhciBhbXBsaWFyIGVsIGRhcnJlciBncnVwIgorCisjOiByZXNpemUvb25saW5lLmM6Mjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBhZGQgZ3JvdXAgIyVkIgorbXNnc3RyICJFbiBpbnRlbnRhciBhZmVnaXIgZWwgZ3J1cCAjJWQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgYSAlcyBlc3TDoCBtdW50YXQgYSAlcywgaSBhcXVlc3Qgc2lzdGVtYSBubyDDqXMgIgorImNvbXBhdGlibGUgYW1iIGVsIGNhbnZpIGRlIG1pZGEgZW4gbMOtbmlhLlxuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgImVsIG5vbWJyZSBkZSBub2Rlcy1pICglbGx1KSBoYSBkZSBzZXIgbWVub3IgcXVlICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAiYmxvY3MgcmVzZXJ2YXRzIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgImJsb2NzIGRlIG1ldGFkYWRlcyIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgIm5vdXMgYmxvY3MgZGUgbWV0YWRhZGVzIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0MAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBObyBzYiBpbiBsYXN0IHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiTm8gaGF1cmlhIGRlIHBhc3NhciBtYWkhICBObyBoaSBoYSBzYiBhbCBkYXJyZXIgc3VwZXJfc3BhcnNlIGJnP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiTm8gaGF1cmlhIGRlIHBhc3NhciBtYWkhICBvbGRfZGVzYyBpbmVzcGVyYXQgYWwgc3VwZXJfc3BhcnNlIGJnP1xuIgorCisjIEZJWE1FOiAoZHBtKQorIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiQWl4w7Igbm8gaGF1cmlhIGRlIHBhc3NhciBtYWk6IGNhbnZpIGRlIG1pZGEgZGVsIG5vZGUtaSBtYWxtZXNhXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiVmVyc2nDsyAxLjQyLjEyIGRlIGxhIGxsaWJyZXJpYSBFWFQyRlMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyDDqXMgaW5jb3JyZWN0ZSBwZXIgbCdlc3RydWN0dXJhIGQnZXh0Ml9maWxzeXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyDDqXMgaW5jb3JyZWN0ZSBwZXIgbCdlc3RydWN0dXJhIGRlIGJhZGJsb2Nrc19saXN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkZSBiYWRibG9ja3NfaXRlcmF0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkJ2lub2RlX3NjYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZCdpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZCdpb19jaGFubmVsIGRlIHVuaXgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZCdpb19tYW5hZ2VyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJsb2NrX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZGUgYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZCdpbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyDDqXMgaW5jb3JyZWN0ZSBwZXIgbCdlc3RydWN0dXJhIGRlIGdlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKyJFbCBuw7ptZXJvIG3DoGdpYyDDqXMgaW5jb3JyZWN0ZSBwZXIgbCdlc3RydWN0dXJhIGRlIGwnaW9fY2hhbm5lbCBkZSBjb21wcm92YWNpw7MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkZSBsYSBsbGlzdGEgZGUgZGlyZWN0b3JpcyBkZSAiCisiYmxvY3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkZSBsJ2ljb3VudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBQb3dlcnF1ZXN0IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkZWwgUG93ZXJxdWVzdCBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZGUgZml0eGVycyBkJ2V4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ0V4dDIgSW1hZ2UgSGVhZGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBtw6BnaWMgw6lzIGluY29ycmVjdGUgcGVyIGwnZXN0cnVjdHVyYSBkZSBsJ2lvX2NoYW5uZWwgZGVsIG5vZGUtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsYSBnZXN0acOzIGRlIMKrZXh0ZW50wrsgZGUgbCdleHQ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyBkZWwgc3VwZXJibG9jIMOpcyBpbmNvcnJlY3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzEKK21zZ2lkICJGaWxlc3lzdGVtIHJldmlzaW9uIHRvbyBoaWdoIgorbXNnc3RyICJMYSB2ZXJzacOzIGRlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgw6lzIG1hc3NhIGFsdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICIiCisiUydpbnRlbnRhIGVzY3JpdXJlIGVuIHVuIHNpc3RlbWEgZGUgZml0eGVycyBvYmVydCBjb20gYSBub23DqXMgZGUgbGVjdHVyYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTm8gZXMgcG9kZW4gbGxlZ2lyIGVscyBkZXNjcmlwdG9ycyBkZSBncnVwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTm8gZXMgcG9kZW4gZXNjcml1cmUgZWxzIGRlc2NyaXB0b3JzIGRlIGdydXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKyJFbCBkZXNjcmlwdG9yIGRlIGdydXBzIGVzdMOgIGNvcnJvbXB1dDogZWwgYmxvYyBwZWwgYmxvYyBkZSBtYXBhIGRlIGJpdHMgw6lzICIKKyJpbmNvcnJlY3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICIiCisiRWwgZGVzY3JpcHRvciBkZSBncnVwcyBlc3TDoCBjb3Jyb21wdXQ6IGVsIGJsb2MgcGVsIG5vZGUtaSBkZWwgbWFwYSBkZSBiaXRzICIKKyLDqXMgaW5jb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisiRWwgZGVzY3JpcHRvciBkZSBncnVwcyBlc3TDoCBjb3Jyb21wdXQ6IGxhIHRhdWxhIGJsb2MgcGVyIG5vZGUtaSDDqXMgaW5jb3JyZWN0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJObyBlcyBwb3QgZXNjcml1cmUgdW4gbWFwYSBkZSBiaXRzIGRlIG5vZGVzLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJObyBlcyBwb3QgbGxlZ2lyIHVuIG1hcGEgZGUgYml0cyBkZSBub2Rlcy1pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiTm8gZXMgcG90IGVzY3JpdXJlIHVuIG1hcGEgZGUgYml0cyBkZSBibG9jcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiTm8gZXMgcG90IGxsZWdpciB1biBtYXBhIGRlIGJpdHMgZGUgYmxvY3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MgorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJObyBlcyBwb3QgZXNjcml1cmUgdW5hIHRhdWxhIGRlIG5vZGVzLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIk5vIGVzIHBvdCBsbGVnaXIgdW5hIHRhdWxhIGRlIG5vZGVzLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiTm8gZXMgcG90IGxsZWdpciBlbCBzZWfDvGVudCBub2RlLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiRWwgc2lzdGVtYSBkZSBmaXR4ZXJzIHTDqSB1biBibG9jIGRlIG1pZGEgaW5lc3BlcmFkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJFbCBkaXJlY3RvcmkgZCdFWFQyIGVzdMOgIGNvcnJvbXB1dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisiTCdpbnRlbnQgZGUgbGxlZ2lyIHVuIGJsb2MgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBoYSByZXN1bHRhdCBlbiB1bmEgbGVjdHVyYSAiCisiY3VydGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorIkwnaW50ZW50IGQnZXNjcml1cmUgdW4gYmxvYyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGhhIHJlc3VsdGF0IGVuIHVuYSAiCisiZXNjcmlwdHVyYSBjdXJ0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiB0aGUgZGlyZWN0b3J5IgorbXNnc3RyICJObyBxdWVkYSBlc3BhaSBsbGl1cmUgYWwgZGlyZWN0b3JpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiTm8gcydoYSBjYXJyZWdhdCBlbCBtYXBhIGRlIGJpdHMgZGUgbm9kZXMtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIk5vIHMnaGEgY2FycmVnYXQgZWwgbWFwYSBkZSBiaXRzIGRlIGJsb2NzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTIKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciIKK21zZ3N0ciAiRWwgbsO6bWVybyBkZWwgbm9kZS1pIG5vIMOpcyBjb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIkVsIG7Dum1lcm8gZGUgYmxvYyBubyDDqXMgY29ycmVjdGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICJTJ2hhIHByb2R1w690IHVuIGVycm9yIGludGVybiBhIGV4dDJmc19leHBhbmRfZGlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgIk5vIGhpIGhhIHByb3UgZXNwYWkgcGVyIGNvbnN0cnVpciBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgcHJvcG9zYXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIlMnaGEgaW5kaWNhdCB1biBuw7ptZXJvIGRlIGJsb2MgaW5jb3JyZWN0ZSBhIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJTJ2hhIGluZGljYXQgdW4gbsO6bWVybyBkZSBibG9jIGluY29ycmVjdGUgYSBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiUydoYSBpbmRpY2F0IHVuIG7Dum1lcm8gZGUgYmxvYyBpbmNvcnJlY3RlIGEgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJTJ2hhIGluZGljYXQgdW4gbsO6bWVybyBkZSBub2RlLWkgaW5jb3JyZWN0ZSBhIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICIiCisiUydoYSBpbmRpY2F0IHVuIG7Dum1lcm8gZGUgbm9kZS1pIGluY29ycmVjdGUgYSBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiUydoYSBpbmRpY2F0IHVuIG7Dum1lcm8gZGUgbm9kZS1pIGluY29ycmVjdGUgYSBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MgorbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGJsb2NrIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorIkwnaW50ZW50IGRlIGZhbHNlamFyIGVsIGZpbmFsIGRlbCBtYXBhIGRlIGJpdHMgZGUgYmxvY3MgaGEgc3VwZXJhdCBlbCBmaW5hbCAiCisicmVhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisiTCdpbnRlbnQgZGUgZmFsc2VqYXIgZWwgZmluYWwgZGVsIG1hcGEgZGUgYml0cyBkZSBub2Rlcy1pIGhhIHN1cGVyYXQgZWwgIgorImZpbmFsIHJlYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NAorbXNnaWQgIklsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIlMnaGEgdHJvYmF0IHVuIGJsb2MgaW5kaXJlY3RlIGluY29ycmVjdGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJTJ2hhIHRyb2JhdCB1biBibG9jIGRvYmxlbWVudCBpbmRpcmVjdGUgaW5jb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY2Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIlMnaGEgdHJvYmF0IHVuIGJsb2MgdHJpcGxlbWVudCBpbmRpcmVjdGUgaW5jb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY3Cittc2dpZCAiQmxvY2sgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJFbHMgbWFwZXMgZGUgYml0cyBkZSBibG9jcyBubyBzw7NuIGlndWFscyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJFbHMgbWFwZXMgZGUgYml0cyBkZSBub2Rlcy1pIG5vIHPDs24gaWd1YWxzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiRWwgbm9tIGRlbCBkaXNwb3NpdGl1IMOpcyBpbmNvcnJlY3RlIG8gZXN0w6AgbWFsIGNvbnN0cnXDr3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiSGkgaGEgdW4gZ3J1cCBkZSBibG9jcyBhbCBxdWUgbGkgZmFsdGEgdW5hIHRhdWxhIGRlIG5vZGVzLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MQorbXNnaWQgIlRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiRWwgc3VwZXJibG9jIGQnZXh0MiBlc3TDoCBjb3Jyb21wdXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorIlMnaGEgaW5kaWNhdCB1biBuw7ptZXJvIGRlIGJpdCBnZW7DqHJpYyBpbmNvcnJlY3RlIGEgZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiUydoYSBpbmRpY2F0IHVuIG7Dum1lcm8gZGUgYml0IGdlbsOocmljIGluY29ycmVjdGUgYSAiCisiZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiUydoYSBpbmRpY2F0IHVuIG7Dum1lcm8gZGUgYml0IGdlbsOocmljIGluY29ycmVjdGUgYSBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICJTJ2hhbiB0cm9iYXQgbWFzc2EgZW5sbGHDp29zIHNpbWLDsmxpY3MuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzYKK21zZ2lkICJUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBub3QgaGFuZGxlIHRoaXMgY2FzZSIKK21zZ3N0ciAiTGEgZnVuY2nDsyBkZSBjcmlkYSBkZSByZXRvcm4gbm8gY29udGVtcGxhIGFxdWVzdCBjYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRWwgbm9kZS1pIGNvcnJlc3BvbiBhIHVuIGJsb2MgaW5jb3JyZWN0ZSBhIGxhIHRhdWxhIGRlIG5vZGVzLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OAorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykiCittc2dzdHIgIiIKKyJIaSBoYSB1bmEgbyBtw6lzIGNhcmFjdGVyw61zdGlxdWVzIHF1ZSBubyBlc3RhbiBpbXBsZW1lbnRhZGVzIHBlciBhcXVlc3QgIgorInNpc3RlbWEgZGUgZml0eGVycyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpdHhlcnMgdMOpIGNhcmFjdGVyw61zdGlxdWVzIG5vbcOpcyBkZSBsZWN0dXJhL24vdHF1ZSBubyBlc3RhbiAiCisiaW1wbGVtZW50YWRlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJFbCBjYW5hbCBkZSBFL1Mgbm8gaGEgcG9ndXQgY2VyY2FyIGVuIGxlY3R1cmEgbyBlc2NyaXB0dXJhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIkwnYXNzaWduYWNpw7MgZGUgbWVtw7JyaWEgaGEgZmFsbGF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkiCittc2dzdHIgIlMnaGEgaW5kaWNhdCB1biBhcmd1bWVudCBpbmNvcnJlY3RlIGEgbGEgbGxpYnJlcmlhIGQnZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBibG9jcyBhbCBzaXN0ZW1hIGRlIGZpdHhlcnMgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBub2Rlcy1pIGFsIHNpc3RlbWEgZGUgZml0eGVycyBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAiRWwgbm9kZS1pIGRlIGwnZXh0MiBubyDDqXMgdW4gZGlyZWN0b3JpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICJMYSB0YXVsYSB0w6kgbWFzc2EgcmVmZXLDqG5jaWVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiTCdleHQyX2xvb2t1cCBubyBoYSB0cm9iYXQgZWwgZml0eGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICJFbCBmaXR4ZXIgcydoYSBvYmVydCBjb20gYSBub23DqXMgZGUgbGVjdHVyYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg5Cittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJObyBzJ2hhIHRyb2JhdCBlbCBibG9jIGRlIGRpcmVjdG9yaSBkZSBsJ2V4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFbCBkaXJlY3RvcmkgZGUgbCdleHQyIGphIGV4aXN0ZWl4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiTGEgZnVuY2nDsyBkZSBsYSBsbGlicmVyaWEgZXh0MiBubyBlc3TDoCBpbXBsZW1lbnRhZGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MgorbXNnaWQgIlVzZXIgY2FuY2VsIHJlcXVlc3RlZCIKK21zZ3N0ciAiTCd1c3VhcmkgaGEgZGVtYW5hdCBsYSBjYW5jZWzCt2xhY2nDsyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgIkVsIGZpdHhlciBkZSBsJ2V4dDIgw6lzIG1hc3NhIGdyYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiRWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGluZGljYXQgbm8gw6lzIHVuIGRpc3Bvc2l0aXUgZGUgYmxvY3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIkVsIHN1cGVyYmxvYyBkZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIG5vIHMnaGEgdHJvYmF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIkVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyBoYSBkZSB0ZW5pciBjb20gYSBtw61uaW0gMTAyNCBibG9jcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJObyBlcyBwZXJtZXQgbCfDunMgZGUgbGEgdmVyc2nDsyBkZSByZWdpc3RyZSBkZSB0cmFuc2FjY2lvbnMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBlcnJvciBlbiBsbGVnaXIgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zIGV4dGVybiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk5Cittc2dpZCAiSm91cm5hbCBub3QgZm91bmQiCittc2dzdHIgIk5vIHMnaGEgdHJvYmF0IGVsIHJlZ2lzdHJlIGRlIHRyYW5zYWNjaW9ucyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMAorbXNnaWQgIkRpcmVjdG9yeSBoYXNoIHVuc3VwcG9ydGVkIgorbXNnc3RyICJObyBlcyBwZXJtZXQgbCfDunMgZGVsIGhhc2ggZGUgZGlyZWN0b3JpcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiRWwgbsO6bWVybyBkZSBibG9jIGRlIGwnYXRyaWJ1dCBleHTDqXMgbm8gw6lzIGNvcnJlY3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAyCittc2dpZCAiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCittc2dzdHIgIk5vIGVzIHBvdCBjcmVhciBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgYW1iIGVsIG5vbWJyZSBkZSBub2Rlcy1pIGRlbWFuYXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIkxhIGluc3RhbnTDoG5pYSBkZSBsJ0UyaW1hZ2Ugbm8gZXMgZmEgc2VydmlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIkhpIGhhIG1hc3NhIGJsb2NzIGRlc2NyaXB0b3JzIGRlIGdydXAgcmVzZXJ2YXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA1Cittc2dpZCAiUmVzaXplIGlub2RlIGlzIGNvcnJ1cHQiCittc2dzdHIgIkVsIGNhbnZpIGRlIG1pZGEgZGVsIG5vZGUtaSBlc3TDoCBjb3Jyb21wdXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIiIKKyJTJ2hhIHByb3ZhdCBkJ2VzdGFibGlyIGVsIGJtYXAgZGVsIGJsb2MgYW1iIGVsIGJsb2MgaW5kaXJlY3RlIHF1ZSBmYWx0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCOiBDb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBCYXNlIGRlIGRhZGVzIGNvcnJvbXB1ZGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJUREI6IEVycm9yIGRlIEUvUyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMAorbXNnaWQgIlREQjogTG9ja2luZyBlcnJvciIKK21zZ3N0ciAiVERCOiBFcnJvciBkZSBibG9xdWVpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERCOiBTZW5zZSBtZW3DsnJpYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCOiBFbCByZWdpc3RyZSBqYSBleGlzdGVpeCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMworbXNnaWQgIlREQjogTG9jayBleGlzdHMgb24gb3RoZXIga2V5cyIKK21zZ3N0ciAiVERCOiBFbCBibG9xdWVpZyBqYSBleGlzdGVpeCBhbWIgYWx0cmVzIGNsYXVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBFbCBwYXLDoG1ldHJlIG5vIMOpcyB2YWxpZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJUREI6IEVsIHJlZ2lzdHJlIG5vIGV4aXN0ZWl4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE2Cittc2dpZCAiVERCOiBXcml0ZSBub3QgcGVybWl0dGVkIgorbXNnc3RyICJUREI6IE5vIGVzIHBvdCBlc2NyaXVyZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiTGEgbGxpc3RhIGRlIGJsb2NzIGRlIGRpcmVjdG9yaSBkZSBsJ2V4dDJmcyBlc3TDoCBidWlkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIiIKKyJTJ2ludGVudGEgbW9kaWZpY2FyIHVuIG1hcGF0Z2UgZGUgYmxvY3MgYSB0cmF2w6lzIGQndW4gaXRlcmFkb3IgZGUgYmxvY3MgZGUgIgorIm5vbcOpcyBsZWN0dXJhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyBubyDDqXMgY29ycmVjdGUgcGVsIGNhbcOtIGQnwqtleHRlbnTCuyBkZSBsJ2V4dDQgZGVzYXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIHBlbCBtYXBhIGRlIGJpdHMgZGUgNjQgYml0cyBnZW7DqHJpYyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIHBlbCBtYXBhIGRlIGJpdHMgZGUgYmxvY3MgZGUgNjQgYml0cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIHBlbCBtYXBhIGRlIGJpdHMgZGUgbm9kZXMtaSBkZSA2NCBiaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIC0tLSBSRVNFUlZBVF8xMyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIG5vIMOpcyBjb3JyZWN0ZSAtLS0gUkVTRVJWQVRfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyBubyDDqXMgY29ycmVjdGUgLS0tIFJFU0VSVkFUXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIC0tLSBSRVNFUlZBVF8xNiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIG5vIMOpcyBjb3JyZWN0ZSAtLS0gUkVTRVJWQVRfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoGdpYyBubyDDqXMgY29ycmVjdGUgLS0tIFJFU0VSVkFUXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiRWwgbsO6bWVybyBtw6BnaWMgbm8gw6lzIGNvcnJlY3RlIC0tLSBSRVNFUlZBVF8xOSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAiTGEgY2Fww6dhbGVyYSBlc3Rlc2EgZXN0w6AgY29ycm9tcHVkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJMJ8OtbmRleCBlc3TDqHMgZXN0w6AgY29ycm9tcHV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIkwnwqtleHRlbnTCuyBlc3TDoCBjb3Jyb21wdXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIk5vIHF1ZWRhIGVzcGFpIGxsaXVyZSBhbCBtYXBhIGVzdMOocyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICJFbCBub2RlLWkgbm8gZmEgc2VydmlyIMKrZXh0ZW50c8K7IgorCisjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRXh0ZW50XyhmaWxlX3N5c3RlbXMpLiBIaSBoYSBsYSB1YmljYWNpw7MgYmFzYWRhIGVuIGJsb2NzIGkgbGEgdWJpY2FjacOzIGJhc2FkYSBlbiDCq2V4dGVudHPCuyAoZHBtKS4KKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJObyBoaSBoYSDCq2V4dGVudMK7IMKrc2Vnw7xlbnTCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICJObyBoaSBoYSDCq2V4dGVudMK7IMKrYW50ZXJpb3LCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICJObyBoaSBoYSDCq2V4dGVudMK7IMKrYW11bnTCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIk5vIGhpIGhhIMKrZXh0ZW50wrsgwqthdmFsbMK7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM5Cittc2dpZCAiTm8gY3VycmVudCBub2RlIgorbXNnc3RyICJObyBoaSBoYSBub2RlIGFjdHVhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiTm8gZXMgcGVybWV0IGwnb3BlcmFjacOzIEV4dDJmcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJObyBoaSBoYSBlc3BhaSBwZXIgaW5zZXJpciDCq2V4dGVudMK7IGFsIG5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIkxhIGRpdmlzacOzIHByb2R1aXLDoCB1biBub2RlIGJ1aXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICJObyBzJ2hhIHRyb2JhdCBsJ8KrZXh0ZW50wrsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiTm8gZXMgcGVybWV0IGxhIG9wZXJhY2nDsyBwZXIgbm9kZXMtaSBxdWUgY29udGluZ3VpbiDCq2V4dGVudHPCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAiTGEgbG9uZ2l0dWQgZGUgbCfCq2V4dGVudMK7IG5vIMOpcyB2w6BsaWRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiRWwgY2FuYWwgZGUgRS9TIG5vIHBlcm1ldCBuw7ptZXJvcyBkZSBibG9jIGRlIDY0IGJpdHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisiTm8gZXMgcG90IGNvbXByb3ZhciBzaSBlbCBzaXN0ZW1hIGRlIGZpdHhlcnMgZXN0w6AgbXVudGF0IHBlcnF1w6ggZmFsdGEgZWwgIgorImZpdHhlciBtdGFiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICIiCisiRWwgc2lzdGVtYSBkZSBmaXR4ZXJzIMOpcyBtYXNzYSBncmFuIHBlciBmZXIgc2VydmlyIG1hcGVzIGRlIGJpdHMgYW50aWNzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBuw7ptZXJvIG3DoGdpYyBubyB2w6BsaWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTAKK21zZ2lkICJNTVA6IGRldmljZSBjdXJyZW50bHkgYWN0aXZlIgorbXNnc3RyICJNTVA6IGRpc3Bvc2l0aXUgYWN0dWFsbWVudCBhY3RpdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDogcydlc3TDoCBleGVjdXRhbnQgZWwgZnNjayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IGVsIG7Dum1lcm8gZGUgYmxvYyBzdXBlcmEgZWwgcmFuZyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVA6IHMnaGEgcHJvZHXDr3QgdW5hIG9wZXJhY2nDsyBkZXNjb25lZ3VkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorbXNnaWQgIk1NUDogZmlsZXN5c3RlbSBzdGlsbCBpbiB1c2UiCittc2dzdHIgIk1NUDogZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIGVuY2FyYSBzJ2VzdMOgIGZlbnQgc2VydmlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU1Cittc2dpZCAiTU1QOiBvcGVuIHdpdGggT19ESVJFQ1QgZmFpbGVkIgorbXNnc3RyICJNTVA6IG5vIHMnaGEgcG9ndXQgb2JyaXIgYW1iIE9fRElSRUNUIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAiTGEgbWlkYSBkZWwgZGVzY3JpcHRvciBkZSBncnVwIGRlIGJsb2NzIG5vIMOpcyBjb3JyZWN0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgbm9kZS1pIG5vIGNvaW5jaWRlaXggYW1iIGVsIG5vZGUtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiIKKyJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgbWFwYSBkZSBiaXRzIGRlbCBub2RlLWkgbm8gY29pbmNpZGVpeCBhbWIgZWwgbWFwYSAiCisiZGUgYml0cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIiIKKyJMYSBzdW1hIGRlIHZlcmlmaWNhY2nDsyBkZWwgYmxvYyDCq2V4dGVudMK7IG5vIGNvaW5jaWRlaXggYW1iIGVsIGJsb2MgwqtleHRlbnTCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAiRWwgYmxvYyBkZSBkaXJlY3RvcmlzIG5vIHTDqSBlc3BhaSBwZXIgbGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIGJsb2MgZGUgZGlyZWN0b3JpcyBubyBjb2luY2lkZWl4IGFtYiBlbCBibG9jIGRlICIKKyJkaXJlY3RvcmlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIGJsb2MgZCdhdHJpYnV0cyBlc3Rlc29zIG5vIGNvaW5jaWRlaXggYW1iIGVsIGJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIkxhIHN1bWEgZGUgdmVyaWZpY2FjacOzIGRlbCBzdXBlcmJsb2Mgbm8gY29pbmNpZGVpeCBhbWIgZWwgc3VwZXJibG9jIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIkwnYWxnb3Jpc21lIGRlIGxhIHN1bWEgZGUgdmVyaWZpY2FjacOzIMOpcyBkZXNjb25lZ3V0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIGJsb2MgTU1QIG5vIGNvaW5jaWRlaXggYW1iIGVsIGJsb2MgTU1QIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFbCBmaXR4ZXIgZXh0MiBqYSBleGlzdGVpeCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kZS1pIG5vIGNvaW5jaWRlaXggYW1iIGVsIG1hcGEgIgorImRlIGJpdHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgbmFtZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MQorIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICIiCisiTGEgc3VtYSBkZSB2ZXJpZmljYWNpw7MgZGVsIGJsb2MgZCdhdHJpYnV0cyBlc3Rlc29zIG5vIGNvaW5jaWRlaXggYW1iIGVsIGJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIkVsIG7Dum1lcm8gZGUgYmxvYyBkZSBsJ2F0cmlidXQgZXh0w6lzIG5vIMOpcyBjb3JyZWN0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiYWF0cmlidXQgYW1wbGlhdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NAorbXNnaWQgIkluc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBleHRlbmRlZCBhdHRyaWJ1dGUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorIywgZnV6enkKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIkVsIG5vZGUtaSBubyBmYSBzZXJ2aXIgwqtleHRlbnRzwrsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc4CisjLCBmdXp6eQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCittc2dzdHIgIk5vIHF1ZWRhIGVzcGFpIGxsaXVyZSBhbCBtYXBhIGVzdMOocyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkVsIG7Dum1lcm8gbcOgZ2ljIMOpcyBpbmNvcnJlY3RlIHBlciBsJ2VzdHJ1Y3R1cmEgZGUgZml0eGVycyBkJ2V4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODMKKyMsIGZ1enp5Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkVsIGNhbnZpIGRlIG1pZGEgZGVsIG5vZGUtaSBlc3TDoCBjb3Jyb21wdXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIlMnaGEgZGVuZWdhdCBlbCBwZXJtw61zIHBlciBhIGNhbnZpYXIgbGEgbWlkYSBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1CisjLCBmdXp6eQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiRWwgY2FudmkgZGUgbWlkYSBkZWwgbm9kZS1pIGVzdMOgIGNvcnJvbXB1dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NgorbXNnaWQgIkJhZCBDUkMgZGV0ZWN0ZWQgaW4gZmlsZSBzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworIywgZnV6enkKK21zZ2lkICJUaGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIkVsIHN1cGVyYmxvYyBkJ2V4dDIgZXN0w6AgY29ycm9tcHV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiRWwgY2FudmkgZGUgbWlkYSBkZWwgbm9kZS1pIGVzdMOgIGNvcnJvbXB1dCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIlZlcnNpw7MgMC4wIGRlbCBwZXJmaWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJFbCB2YWxvciBtw6BnaWMgZGUgcHJvZmlsZV9ub2RlIMOpcyBpbmNvcnJlY3RlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEzCittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiTm8gcydoYSB0cm9iYXQgbGEgc2VjY2nDsyBkZSBwZXJmaWxzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIk5vIHMnaGEgdHJvYmF0IGxhIHJlbGFjacOzIGRlIHBlcmZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAiSW50ZW50IGQnYWZlZ2lyIHVuYSByZWxhY2nDsyBhbWIgdW4gbm9kZSBxdWUgbm8gw6lzIHVuYSBzZWNjacOzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE2Cittc2dpZCAiQSBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIGhhcyBhIG5vbi16ZXJvIHZhbHVlIgorbXNnc3RyICJVbmEgY2Fww6dhbGVyYSBkZSBzZWNjacOzIGRlIHBlcmZpbHMgdMOpIHVuIHZhbG9yIGRpZmVyZW50IGRlIHplcm8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTcKK21zZ2lkICJCYWQgbGlua2VkIGxpc3QgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJIaSBoYSB1bmEgbGxpc3RhIGVubGxhw6dhZGEgaW5jb3JyZWN0YSBhIGxlcyBlc3RydWN0dXJlcyBkZSBwZXJmaWwgIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiSGkgaGEgdW4gbml2ZWxsIGRlIGdydXAgaW5jb3JyZWN0ZSBhIGxlcyBlc3RydWN0dXJlcyBkZSBwZXJmaWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJIaSBoYSB1biBwdW50ZXIgcGFyZSBpbmNvcnJlY3RlIGEgbGVzIGVzdHJ1Y3R1cmVzIGRlIHBlcmZpbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICJIaSBoYSB1biB2YWxvciBtw6BnaWMgaW5jb3JyZWN0ZSBhIGxhIHZhcmlhYmxlIGQnaXRlcmFjacOzIGRlIHBlcmZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICJObyBlcyBwb3QgZXN0YWJsaXIgdW4gdmFsb3IgYWwgbm9kZSBkZSBsYSBzZWNjacOzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICJTJ2hhIGluZGljYXQgdW4gYXJndW1lbnQgaW5jb3JyZWN0ZSBhIGxhIGxsaWJyZXJpYSBkZSBwZXJmaWxzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIlMnaGEgaW50ZW50YXQgbW9kaWZpY2FyIHVuIHBlcmZpbCBkZSBub23DqXMgbGVjdHVyYSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiTGEgY2Fww6dhbGVyYSBkZSBsYSBzZWNjacOzIGRlIHBlcmZpbHMgbm8gw6lzIGFsIG5pdmVsbCBzdXBlcmlvciIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICJIaSBoYSB1biBlcnJvciBkZSBzaW50YXhpIGEgbGEgY2Fww6dhbGVyYSBkZSBsYSBzZWNjacOzIGRlIHBlcmZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiSGkgaGEgdW4gZXJyb3IgZGUgc2ludGF4aSBhIGxhIHJlbGFjacOzIGRlIHBlcmZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjcKK21zZ2lkICJFeHRyYSBjbG9zaW5nIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIkhpIGhhIHVuYSBjbGF1IGRlIHRhbmNhbWVudCBkZSBtw6lzIGFsIHBlcmZpbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOAorbXNnaWQgIk1pc3Npbmcgb3BlbiBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJGYWx0YSB1bmEgY2xhdSBkJ29iZXJ0dXJhIGFsIHBlcmZpbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3QiCittc2dzdHIgIkhpIGhhIHVuIHZhbG9yIG3DoGdpYyBpbmNvcnJlY3RlIGEgcHJvZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJIaSBoYSB1biB2YWxvciBtw6BnaWMgaW5jb3JyZWN0ZSBhIHByb2ZpbGVfc2VjdGlvbl90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIk5vIGVzIHBlcm1ldCBsYSBpdGVyYWNpw7MgYSB0cmF2w6lzIGRlIGxlcyBzZWNjaW9ucyBkZWwgbml2ZWxsIG3DqXMgYWx0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJMJ29iamVjdGUgcHJvZmlsZV9zZWN0aW9uIG5vIMOpcyB2w6BsaWQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICJObyBoaSBoYSBtw6lzIHNlY2Npb25zIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIkVsIG5hbWVzZXQgaW5kaWNhdCBhIGxhIHJ1dGluYSBkZSBjb25zdWx0YSBubyDDqXMgY29ycmVjdGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAiTm8gaGkgaGEgY2FwIGZpdHhlciBkZSBwZXJmaWxzIG9iZXJ0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICJFbCB2YWxvciBtw6BnaWMgZGUgcHJvZmlsZV9maWxlX3Qgbm8gw6lzIGNvcnJlY3RlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM3Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgIk5vIHMnaGEgcG9ndXQgb2JyaXIgZWwgZml0eGVyIGRlIHBlcmZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJMYSBzZWNjacOzIGphIGV4aXN0ZWl4IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM5Cittc2dpZCAiSW52YWxpZCBib29sZWFuIHZhbHVlIgorbXNnc3RyICJFbCB2YWxvciBib29sZcOgIG5vIMOpcyB2w6BsaWQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIkVsIHZhbG9yIGVudGVyIG5vIMOpcyB2w6BsaWQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiRWwgdmFsb3IgbcOgZ2ljIGRlIHByb2ZpbGVfZmlsZV9kYXRhX3Qgbm8gw6lzIGNvcnJlY3RlIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgIlx0bCfDumx0aW0gbXVudGF0Z2UgdmEgc2VyICVzIGEgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHRsJ8O6bHRpbSBtdW50YXRnZSB2YSBzZXIgZWwgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx0Y3JlYXQgZWwgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx0bGEgZGFycmVyYSBtb2RpZmljYWNpw7Mgw6lzIGRlbCAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIlMnaGEgdHJvYmF0IHVuYSB0YXVsYSBkZSBwYXJ0aWNpb25zICVzIGEgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIkVsIGZpdHhlciAlcyBubyBleGlzdGVpeCBpIG5vIHMnaGEgZXNwZWNpZmljYXQgY2FwIG1pZGEuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAiRXMgY3JlYSBlbCBmaXR4ZXIgbm9ybWFsICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiTm8gZXMgcG90IG9icmlyICVzOiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiU2VtYmxhIHF1ZSBlbCBkaXNwb3NpdGl1IG5vIGV4aXN0ZWl4LiBBc3NlZ3VyZXUtdm9zIHF1ZSBsJ2hldSBlc3BlY2lmaWNhdCAiCisiY29ycmVjdGFtZW50XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiZWwgJXMgbm8gw6lzIHVuIGRpc3Bvc2l0aXUgZXNwZWNpYWwgZGUgYmxvY3MuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgY29udMOpIHVuIHNpc3RlbWEgZGUgZml0eGVycyAlcyBldGlxdWV0YXQgwqslc8K7XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGNvbnTDqSB1biBzaXN0ZW1hIGRlIGZpdHhlcnMgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgY29udMOpIHVuIHNpc3RlbWEgZGUgZml0eGVycyAlc1xuIgorCisjfiBtc2dpZCAiQGkgJWkgaGFzIEBjaW9uIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgQGNpb24gc3VwcG9ydC4gICIKKyN+IG1zZ3N0ciAiIgorI34gIkVsIEBpICVpIHTDqSBlbCBzZW55YWxhZG9yIGRlIEBjIGRlZmluaXQgZW4gdW4gQGYgcXVlIG5vIMOpcyBjb21wYXRpYmxlIGFtYiAiCisjfiAibGEgQGMuICAiCisKKyN+IG1zZ2lkICJAQSBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiUydoYSBwcm9kdcOvdCB1biBAQSBkZWwgQGIgZCdAYSAlYi4gICIKKworI34gbXNnaWQgIiVzOiB3YXJuaW5nOiBjb21wcmVzc2lvbiBzdXBwb3J0IGlzIGV4cGVyaW1lbnRhbC5cbiIKKyN+IG1zZ3N0ciAiJXM6IGF2w61zOiBsYSBjb21wYXRpYmlsaXRhdCBhbWIgbGEgY29tcHJlc3Npw7Mgw6lzIGV4cGVyaW1lbnRhbC5cbiIKKworI34gbXNnaWQgIiIKKyN+ICIlczogZTJmc2NrIG5vdCBjb21waWxlZCB3aXRoIEhUUkVFIHN1cHBvcnQsXG4iCisjfiAiXHRidXQgZmlsZXN5c3RlbSAlcyBoYXMgSFRSRUUgZGlyZWN0b3JpZXMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogZTJmc2NrIG5vIGVzdMOgIGNvbXBpbGF0IGFtYiBsYSBpbXBsZW1lbnRhY2nDsyBkZSBIVFJFRSxcbiIKKyN+ICJcdHBlcsOyIGVsIHNpc3RlbWEgZGUgZml0eGVycyAlcyB0w6kgZGlyZWN0b3JpcyBIVFJFRS5cbiIKKworI34gbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgemVyb2l6aW5nIGJ1ZmZlciIKKyN+IG1zZ3N0ciAiZW4gdWJpY2FyIGxhIG1lbcOycmlhIGludGVybcOoZGlhIGRlIHplcm9zIgorCisjfiBtc2dpZCAiLCB1bnVzZWQgaW5vZGVzICV1XG4iCisjfiBtc2dzdHIgIiwgJXUgbm9kZXMtaSBubyB1dGlsaXR6YXRzXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVhZCB0aGUgZmlsZSBzeXN0ZW0gZGF0YSBcbiIKKyN+IG1zZ3N0ciAiTm8gcydoYW4gcG9ndXQgbGxlZ2lyIGxlcyBkYWRlcyBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9mZXRjaCAlc1xuIgorI34gbXNnc3RyICJIYSBmYWxsYXQgbGEgdGRiX2ZldGNoICVzXG4iCisKKyN+IG1zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gVVVJRCBkaWRuJ3QgbWF0Y2ggXG4iCisjfiBtc2dzdHIgIkwnVVVJRCBkZWwgc2lzdGVtYSBkZSBmaXR4ZXJzIG5vIGNvbmNvcmRhIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgIkhhIGZhbGxhdCBsYSB0ZGJfb3BlbiAlc1xuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIKKyN+IG1zZ3N0ciAiTm8gcydoYSBwb2d1dCBvYnJpciAlc1xuIgorCisjfiBtc2dpZCAiUmVwbGF5ZWQgdHJhbnNhY3Rpb24gb2Ygc2l6ZSAlemQgYXQgbG9jYXRpb24gJWxsdVxuIgorI34gbXNnc3RyICIiCisjfiAiUydoYSB0b3JuYXQgYSBkdXIgYSB0ZXJtZSBsYSB0cmFuc2FjY2nDsyBkZSBtaWRhICV6ZCBhIGxhIHViaWNhY2nDsyAlbGx1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgd3JpdGUgJXNcbiIKKyN+IG1zZ3N0ciAiSGEgZmFsbGF0IGwnZXNjcmlwdHVyYSAlc1xuIgorCisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICJFbCBxdW90YXR5cGUgbm8gw6lzIHbDoGxpZDogJXNcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBxdW90YSBvcHRpb25zIVxuIgorI34gbXNnc3RyICIiCisjfiAiTm8gcydoYSBwb2d1dCBhc3NpZ25hciBtZW3DsnJpYSBwZXIgYSBhbmFsaXR6YXIgbGVzIG9wY2lvbnMgZGUgcXVvdGEhXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRkYiBmaWxlbmFtZVxuIgorI34gbXNnc3RyICJObyBzJ2hhIHBvZ3V0IGFzc2lnbmFyIG1lbcOycmlhIHBlciBhbCBub20gZGVsIGZpdHhlciBkZWwgdGRiXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiVG8gdW5kbyB0aGUgdHVuZTJmcyBvcGVyYXRpb24gcGxlYXNlIHJ1biB0aGUgY29tbWFuZFxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlNpIHZvbGV1IGRlc2ZlciBsZXMgb3BlcmFjaW9ucyBkZWwgdHVuZTJmcyBleGVjdXRldSBsJ29yZHJlXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorCisjfiBtc2dpZCAiJXMgaXMgZW50aXJlIGRldmljZSwgbm90IGp1c3Qgb25lIHBhcnRpdGlvbiFcbiIKKyN+IG1zZ3N0ciAiJXMgw6lzIGVsIGRpc3Bvc2l0aXUgY29tcGxldCwgbm8gcGFzIG5vbcOpcyB1bmEgcGFydGljacOzXG4iCisKKyN+IG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAlcyAtLS0gJXNcbiIKKyN+IG1zZ3N0ciAiTm8gcydoYSBwb2d1dCBmZXIgYWwgY3JpZGEgc3RhdCAlcyAtLSVzXG4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBpbmRleCBpbm9kZT4iCisjfiBtc2dzdHIgIjxFbCBub2RlLWkgZGUgbCfDrW5kZXggZGUgbGVzIEFDTD4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBkYXRhIGlub2RlPiIKKyN+IG1zZ3N0ciAiPEVsIG5vZGUtaSBkZSBsZXMgZGFkZXMgZGUgbGVzIEFDTD4iCisKKyN+IG1zZ2lkICJAUyBkb2Vzbid0IGhhdmUgaGFzX0BqIGZsYWcsIGJ1dCBoYXMgZXh0MyBAaiAlcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkVsIEBTIG5vIHTDqSB1biBzZW55YWxhZG9yIMKraGFzX2pvdXJuYWzCuyAodMOpX0BqKSwgcGVyw7IgdMOpIGVsIEBqIGV4dDMgJXMuXG4iCisKKyN+IG1zZ2lkICJSZWNyZWF0ZSBqb3VybmFsIHRvIG1ha2UgdGhlIGZpbGVzeXN0ZW0gZXh0MyBhZ2Fpbj9cbiIKKyN+IG1zZ3N0ciAiIgorI34gIlZvbGV1IHRvcm5hciBhIGNyZWFyIGVsIGpvcm5hbCBwZXIgYSBmZXIgcXVlIGVsIHNpc3RlbWEgZGUgZml0eGVycyB0b3JuaSAiCisjfiAiYSBzZXIgZXh0Mz9cbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGRldGVybWluZSBqb3VybmFsIHNpemUiCisjfiBtc2dzdHIgIk5vIHMnaGEgcG9ndXQgZGV0ZXJtaW5hciBsYSBtaWRhIGRlbCByZWdpc3RyZSBkZSBjYW52aXMiCisKKyN+IG1zZ2lkICJpbnZhbGlkIGZyYWdtZW50IHNpemUgLSAlcyIKKyN+IG1zZ3N0ciAibWlkYSBkZSBmcmFnbWVudCBpbnbDoGxpZGEgLSAlcyIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIkF2w61zOiBlbHMgZnJhZ21lbnRzIG5vIHPDs24gY29tcGF0aWJsZXMuIFMnaWdub3JhcsOgIGwnb3BjacOzIC1mXG4iCisKKyN+IG1zZ2lkICJKb3VybmFsIE5PVCByZW1vdmVkXG4iCisjfiBtc2dzdHIgIk5PIHMnaGEgc3VwcmltaXQgZWwgcmVnaXN0cmUgZGUgdHJhbnNhY2Npb25zXG4iCisKKyN+IG1zZ2lkICIjXHRcdCAldSAtPiAldSAoJWQpXG4iCisjfiBtc2dzdHIgIiNcdFx0ICV1IC0+ICV1ICglZClcbiIKKworI34gbXNnaWQgIiIKKyN+ICIlczogVGhlIGNvbWJpbmF0aW9uIG9mIGZsZXhfYmcgYW5kXG4iCisjfiAiXHQhcmVzaXplX2lub2RlIGZlYXR1cmVzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgcmVzaXplMmZzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IGxhIGNvbWJpbmFjacOzIGRlIGxlcyBmdW5jaW9ucyBmbGV4X2JnIGlcbiIKKyN+ICJcdCFyZXNpemVfaW5vZGUgbm8gw6lzIGNvbXBhdGlibGUgYW1iIGVsIHJlc2l6ZTJmcy5cbiIKKworI34gbXNnaWQgIndoaWxlIGNhbGxpbmcgaXRlcmF0b3IgZnVuY3Rpb24iCisjfiBtc2dzdHIgImVuIGZlciBsYSBjcmlkYSBhIGxhIGZ1bmNpw7MgZCdpdGVyYWNpw7MiCisKKyN+IG1zZ2lkICIlczogRmlsZXN5c3RlbSBieXRlIG9yZGVyIGFscmVhZHkgbm9ybWFsaXplZC5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBsJ29yZHJlIGRlbHMgYnl0ZXMgZGVsIHNpc3RlbWEgZGUgZml0eGVycyBqYSBlc3TDoCBub3JtYWxpdHphdC5cbiIKKworI34gbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgLSAlcyIKKyN+IG1zZ3N0ciAiYmxvYyBkJ2luaWNpIG5vIHbDoGxpZCAtICVzIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2NzLmdtbyBiL2UyZnNwcm9ncy9wby9jcy5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc1OGMzNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9jcy5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2NzLnBvIGIvZTJmc3Byb2dzL3BvL2NzLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMWY1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vY3MucG8KQEAgLTAsMCArMSw4ODAxIEBACisjIEN6ZWNoIHRyYW5zbGF0aW9uIG9mIGUyZnNwcm9ncworIyBDb3B5cmlnaHQgKEMpIDIwMDggVGhlb2RvcmUgVHNvIChtc2dpZHMpCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMgTWlsb3NsYXYgVHJtYWMgPG1pdHJAdm9sbnkuY3o+LCAyMDAzLgorIyBQZXRyIFBpc2FyIDxwZXRyLnBpc2FyQGF0bGFzLmN6PiwgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNC4KKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40Mi4xMi1wcmUyXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE0LTA4LTI2IDIyOjA3KzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IFBldHIgUGlzYXIgPHBldHIucGlzYXJAYXRsYXMuY3o+XG4iCisiTGFuZ3VhZ2UtVGVhbTogQ3plY2ggPHRyYW5zbGF0aW9uLXRlYW0tY3NAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgorIkxhbmd1YWdlOiBjc1xuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MzsgcGx1cmFsPShuPT0xKSA/IDAgOiAobj49MiAmJiBuPD00KSA/IDEgOiAyO1xuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAixaBwYXRuw70gYmxvayAldSBtaW1vIHJvenNhaDsgaWdub3JvdsOhbi5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJwxZlpIGtvbnRyb2xlIHNwcsOhdm5vc3RpIGl1emx1IMWhcGF0bsO9Y2ggYmxva8WvIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NTgKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJwxZlpIMSNdGVuw60gaXV6bHUgxaFwYXRuw71jaCBibG9rxa8iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJwxZlpIHBva3VzdSBvdGV2xZnDrXQgJXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAicMWZaSBwb2t1c3UgcG9wZW4g4oCeJXPigJwiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAicMWZaSBuYcSNw610w6Fuw60gc2V6bmFtdSDFoXBhdG7DvWNoIGJsb2vFryB6ZSBzb3Vib3J1IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTA1Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJwxZlpIGFrdHVhbGl6YWNpIGl1emx1IMWhcGF0bsO9Y2ggYmxva8WvIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgQ2xlYXJlZC5cbiIKK21zZ3N0ciAiIgorIlZhcm92w6Fuw606IHbCoGl1emx1IMWhcGF0bsO9Y2ggYmxva8WvIG5hbGV6ZW4gbmVwb3ZvbGVuw70gYmxvayAldS4gVnltYXrDoW4uXG4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkNoeWJhIHDFmWkgxI10ZW7DrSBibG9rdSAlbHUgKCVzKSBixJtoZW0gJXMuICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiQ2h5YmEgcMWZaSDEjXRlbsOtIGJsb2t1ICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSWdub3JvdmF0IGNoeWJ1IgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIlZ5bnV0aXQgcMWZZXBzw6Fuw60iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJDaHliYSBwxZlpIHrDoXBpc3UgYmxva3UgJWx1ICglcykgcMWZaSAlcy4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiQ2h5YmEgcMWZaSB6w6FwaXN1IGJsb2t1ICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICJwcsOhemRuw6kgYmxva3kgYWRyZXPDocWZxa8iCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAibWFwYSBwcsOhemRuw71jaCBhZHJlc8OhxZnFryIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIlByw6F6ZG7DvSBibG9rIGFkcmVzw6HFmWUgJXUgKCMlZCkgdsKgaXV6bHUgJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczogJXMgbsOhemV2X3NvdWJvcnUgcF9ibG9rxa8gdmVsaWtvc3RfYmxva3VcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiTmVwbGF0bsO9IHBvxI1ldCBibG9rxa8hXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgIk5lbW9odSBhbG9rb3ZhdCB2eXJvdm7DoXZhY8OtIHBhbcSbxaUgYmxva3UgKHZlbGlrb3N0PSVkKVxuIgorCisjOiBlMmZzY2svZXh0ZW50cy5jOjQyCisjLCBmdXp6eQorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBpdXpsxa8gb2J5xI1lam7DvWNoIHNvdWJvcsWvIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBkaXNrXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIiIKKyJpb2N0bCBCTEtGTFNCVUYgbmVwb2Rwb3JvdsOhbm8hIE5lbW9odSBzeW5jaHJvbml6b3ZhdCB2eXJvdm7DoXZhY8OtIHBhbcSbdGkuXG4iCisiXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLUZdIFstSSBibG9reV9pbm9kZV9idWZmZXLFr10gemHFmcOtemVuw61cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6ODEgZTJmc2NrL3VuaXguYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMgZm9yIGZsdXNoaW5nIgorbXNnc3RyICJwxZlpIG90ZXbDrXLDoW7DrSAlcyBwcm8gc3luY2hyb25pemFjaSIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAicMWZaSBwb2t1c3Ugc3luY2hyb25pem92YXQgJXMiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJwxZlpIHBva3VzdSBvdGV2xZnDrXQg4oCeJXPigJwiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAicMWZaSB6YWjDoWplbsOtIHByxa9jaG9kdSBpdXpseSIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgInDFmWkgesOtc2vDoXbDoW7DrSBkYWzFocOtaG8gaXV6bHUiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAicHJvemtvdW3DoW5vICV1IGl1emzFry5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICLEjXRlbsOtIHN1cGVyYmxva3Ugxb51cm7DoWx1XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6IG5lbmFsZXplbiBwbGF0bsO9IHN1cGVyYmxvayDFvnVybsOhbHVcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iCittc2dzdHIgIiVzOiDFvnVybsOhbCBwxZnDrWxpxaEga3LDoXRrw71cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiBvYm5vdnVqZSBzZSDFvnVybsOhbFxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd29uJ3QgZG8gam91cm5hbCByZWNvdmVyeSB3aGlsZSByZWFkLW9ubHlcbiIKK21zZ3N0ciAiJXM6IHYgcmXFvmltdSBqZW4gcHJvIMSNdGVuw60gc2Ugxb51cm7DoWwgb2Jub3ZvdmF0IG5lYnVkZVxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk5NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmUtb3BlbiAlcyIKK21zZ3N0ciAicMWZaSBwb2t1c3Ugem5vdnUgb3RldsWZw610ICVzIgorCisjIFRoZXNlIHNob3J0Y3V0cyBhcmUgYSBuaWdodG1hcmUuCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImFyb3rFocOtxZllbsO9IGF0cmlidXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFjaHliYSBwxZlpIGFsb2thY2kiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJiYmxvayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTYKK21zZ2lkICJCYml0bWFwIgorbXNnc3RyICJCYml0bWFwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY2tvbXByaW1vdmF0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDa29saWR1amUgcyBqaW7DvW0gYmxva2VtIHN5c3TDqW11IHNvdWJvcsWvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgImRhZHJlc8OhxZkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkRvZHN0cmFuxJtuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZXBvbG/FvmthIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMgorbXNnaWQgIkVAZSAnJURuJyBpbiAlcCAoJWkpIgorbXNnc3RyICJFcG9sb8W+a2Eg4oCeJURu4oCcIHYgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZnN5c3TDqW0gc291Ym9yxa8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGcHJvIGlub2RlICVpICglUSkgamUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnc2t1cGluIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAiaGl1emVsIEhUUkVFIGFkcmVzw6HFmWUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIkluZXBvdm9sZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImrFvnVybsOhbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibGxvc3QrZm91bmQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGplIG9ka2F6IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMgorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtdsOtY2Uga3LDoXQgYWxva292w6FubyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibm5lcGxhdG7DvSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm9vc2nFmWVsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwcHJvYmzDqW0gdiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFrdsOzdGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgInJrb8WZZW5vdsO9IGl1emVsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNtxJtsbyBieSBiw710IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTc3VwZXJibG9rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MAorbXNnaWQgInV1bmF0dGFjaGVkIgorbXNnc3RyICJ1bmVwxZlpcG9qZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidnphxZnDrXplbsOtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgInhyb3pzYWgiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICJ6bnVsb3bDqSBkw6lsa3kiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU0Cittc2dpZCAiPFRoZSBOVUxMIGlub2RlPiIKK21zZ3N0ciAiPEl1emVsIE5VTEw+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NQorbXNnaWQgIjxUaGUgYmFkIGJsb2NrcyBpbm9kZT4iCittc2dzdHIgIjxJdXplbCDFoXBhdG7DvWNoIGJsb2vFrz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU3Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEl1emVsIGt2w7N0eSB1xb5pdmF0ZWzFrz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU4Cittc2dpZCAiPFRoZSBncm91cCBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxJdXplbCBrdsOzdHkgc2t1cGluPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiPEl1emVsIHphdmFkxJvEjWUgc3lzdMOpbXU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPEl1emVsIGFkcmVzw6HFmWUgdW5kZWxldGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIjxJdXplbCBkZXNrcmlwdG9ydSBza3VwaW55PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI8SXV6ZWwgxb51cm7DoWx1PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjxSZXplcnZvdmFuw70gaXV6ZWwgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPFJlemVydm92YW7DvSBpdXplbCAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJvYnnEjWVqbsO9IHNvdWJvciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzUKK21zZ2lkICJkaXJlY3RvcnkiCittc2dzdHIgImFkcmVzw6HFmSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJ6bmFrb3bDqSB6YcWZw616ZW7DrSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzkKK21zZ2lkICJibG9jayBkZXZpY2UiCittc2dzdHIgImJsb2tvdsOpIHphxZnDrXplbsOtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgInBvam1lbm92YW7DoSByb3VyYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJzeW1ib2xpY2vDvSBvZGtheiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAic29rZXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgIm5lem7DoW3DvSBkcnVoIHNvdWJvcnUgb8KgbcOzZHUgMCVvIgorCisjIEV4cGFuc2lvbiBvZiAlQiBpbiBzaW5ndWxhciBub21pbmF0aXYKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIm5lcMWZw61tw70gYmxvayIKKworIyBFeHBhbnNpb24gb2YgJUIgaW4gc2luZ3VsYXIgbm9taW5hdGl2CisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZHZvam7DoXNvYm7EmyBuZXDFmcOtbcO9IGJsb2siCisKKyMgRXhwYW5zaW9uIG9mICVCIGluIHNpbmd1bGFyIG5vbWluYXRpdgorIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgInRyb2puw6Fzb2JuxJsgbmVwxZnDrW3DvSBibG9rIgorCisjIEV4cGFuc2lvbiBvZiAlQiBpbiBzaW5ndWxhciBub21pbmF0aXYKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAicMWZZWtsYWRvdsO9IGJsb2siCisKKyMgRXhwYW5zaW9uIG9mICVCIGluIHNpbmd1bGFyIG5vbWluYXRpdgorIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICJibG9rIMSNLiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIG7Em2tvbGlrcsOhdCBhbG9rb3ZhbsO9Y2ggaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIgorbXNnc3RyICJ2bml0xZluw60gY2h5YmE6IG5lbW9odSBuYWrDrXQgZHVwX2JsayBwcm8gJWxsdVxuIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTAzCittc2dpZCAicmV0dXJuZWQgZnJvbSBjbG9uZV9maWxlX2Jsb2NrIgorbXNnc3RyICJ2csOhY2Vuw70geiBjbG9uZV9maWxlX2Jsb2NrIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgYmxvY2sgcmVjb3JkIGZvciAlbGx1IgorbXNnc3RyICJWbml0xZluw60gY2h5YmE6IG5lbW9odSBuYWrDrXQgesOhem5hbSBFQSBibG9rdSBwcm8gJWxsdSIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGlub2RlIHJlY29yZCBmb3IgJXUiCittc2dzdHIgIlZuaXTFmW7DrSBjaHliYTogbmVtb2h1IG5hasOtdCB6w6F6bmFtIEVBIGl1emx1IHBybyAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICLEjXRlbsOtIGFkcmVzw6HFmW92w6lobyBibG9rdSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgcG91xb7DrXZhbsO9Y2ggaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTIyCittc2dpZCAiZGlyZWN0b3J5IGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBpdXpsxa8gYWRyZXPDocWZxa8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMzIKK21zZ2lkICJyZWd1bGFyIGZpbGUgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIGl1emzFryBvYnnEjWVqbsO9Y2ggc291Ym9yxa8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgIm1hcGEgcG91xb7DrXZhbsO9Y2ggYmxva8WvIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCisjLCBmdXp6eQorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiYmxva3kgbWV0YS1kYXQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgIm90ZXbDrXLDoW7DrSBwcsWvemt1bXUgaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjQ3Cittc2dpZCAiZ2V0dGluZyBuZXh0IGlub2RlIGZyb20gc2NhbiIKK21zZ3N0ciAiesOtc2vDoXbDoW7DrSBkYWzFocOtaG8gaXV6bHUgesKgcHLFr3prdW11IgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICJQcsWvY2hvZCAxIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlYWRpbmcgaW5kaXJlY3QgYmxvY2tzIG9mIGlub2RlICV1IgorbXNnc3RyICLEjXR1IG5lcMWZw61tw6kgYmxva3kgaXV6bHUgJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBhIMWhcGF0bsO9Y2ggaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAiaXV6ZWwgdiBtYXDEmyDFoXBhdG7DvWNoIGJsb2vFryIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgaW1hZ2ljIGl1emzFryIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIG7Em2tvbGlrcsOhdCBhbG9rb3ZhbsO9Y2ggYmxva8WvIgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIGJsb2vFryByb3rFocOtxZllbsO9Y2ggYXRyaWJ1dMWvIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IG/EjWVrw6F2w6FubyAlNmx1LCBvYmRyxb5lbm8gZnl6LiAlNmx1IChibG9rxa8gJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiYml0bWFwYSBibG9rxa8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgImJpdG1hcGEgaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczEuYzozODM5Cittc2dpZCAiaW5vZGUgdGFibGUiCittc2dzdHIgInRhYnVsa2EgaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlByxa9jaG9kIDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJOZW1vaHUgcG9rcmHEjW92YXQuIgorCisjOiBlMmZzY2svcGFzczMuYzo3NworbXNnaWQgImlub2RlIGRvbmUgYml0bWFwIgorbXNnc3RyICJiaXRtYXBhIGhvdG92w71jaCBpdXpsxa8iCisKKyM6IGUyZnNjay9wYXNzMy5jOjg2Cittc2dpZCAiUGVhayBtZW1vcnkiCittc2dzdHIgIk1heGltdW0gcGFtxJt0aSIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJQcsWvY2hvZCAzIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgImJpdG1hcGEgZGV0ZWtjZSBjeWtsxa8gaXV6bMWvIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIlByxa9jaG9kIDQiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICJQcsWvY2hvZCA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIoxb7DoWRuw6EgdsO9enZhKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAiT3ByYXZpdCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MworbXNnaWQgIkNsZWFyIgorbXNnc3RyICJWeW1hemF0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0Cittc2dpZCAiUmVsb2NhdGUiCittc2dzdHIgIlDFmWVtw61zdGl0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIkFsb2tvdmF0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2Cittc2dpZCAiRXhwYW5kIgorbXNnc3RyICJadsSbdMWhaXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJQxZlpcG9qaXQgZG8gL2xvc3QrZm91bmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIlZ5dHZvxZlpdCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIlphY2hyw6FuaXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiVXNla25vdXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEKK21zZ2lkICJDbGVhciBpbm9kZSIKK21zZ3N0ciAiVnnEjWlzdGl0IGl1emVsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyCittc2dpZCAiQWJvcnQiCittc2dzdHIgIlDFmWVydcWhaXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiUm96ZMSbbGl0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIlBva3JhxI1vdmF0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1Cittc2dpZCAiQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCittc2dzdHIgIktsb25vdmF0IHbDrWNlIGtyw6F0IGFsb2tvdmFuw6kgYmxva3kiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiT2RzdHJhbml0IHNvdWJvciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NworbXNnaWQgIlN1cHByZXNzIG1lc3NhZ2VzIgorbXNnc3RyICJQb3RsYcSNaXQgenByw6F2eSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAiT2RzdHJhbml0IG9ka2F6IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIlZ5bWF6YXQgaW5kZXggSFRyZWUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiWm5vdnUgdnl0dm/FmWl0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoxb3DgUROw50pIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIk9QUkFWRU5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiVllNQVrDgU5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICJQxZhFTcONU1TEmk5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICJBTE9LT1bDgU5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0Cittc2dpZCAiRVhQQU5ERUQiCittc2dzdHIgIlpWxJpUxaBFTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODUKK21zZ2lkICJSRUNPTk5FQ1RFRCIKK21zZ3N0ciAiUMWYSVBPSkVOTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIlZZVFZPxZhFTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAiWkFDSFLDgU7Emk5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICJVU0VLTlVUTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0RFIFZZTUFaw4FOQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIlDFmEVSVcWgRU5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxCittc2dpZCAiU1BMSVQiCittc2dzdHIgIlJPWkTEmkxFTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIKK21zZ2lkICJDT05USU5VSU5HIgorbXNnc3RyICJQT0tSQcSMVUpJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJWw41DRSBLUsOBVCBBTE9LT1ZBTsOJIEJMT0tVIE5BS0xPTk9Ww4FOWSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAiU09VQk9SIE9EU1RSQU7Emk4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUKK21zZ2lkICJTVVBQUkVTU0VEIgorbXNnc3RyICJQT1RMQcSMRU5PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIk9ES0FaIE9EU1RSQU7Emk4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICJJTkRFWCBIVFJFRSBWWU1BWsOBTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5OAorbXNnaWQgIldJTEwgUkVDUkVBVEUiCittc2dzdHIgIkJVREUgWk5PVlUgVllUVk/FmEVOTyIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiQml0bWFwYSBibG9rxa8gcHJvIHNrdXBpbnUgJWcgbmVuw60gdmUgc2t1cGluxJsuIChibG9rICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJCaXRtYXBhIGl1emzFryBwcm8gc2t1cGludSAlZyBuZW7DrSB2ZSBza3VwaW7Emy4gKGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIlRhYnVsa2EgaXV6bMWvIHBybyBza3VwaW51ICVnIG5lbsOtIHZlIHNrdXBpbsSbLiAoYmxvayAlYilcbiIKKyJWQVJPVsOBTsONOiBNT8W9TsOBIFbDgcW9TsOBIFpUUsOBVEEgREFULlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBzdXBlcmJsb2NrXG4KKyMuIEAtZXhwYW5kZWQ6IGlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6XG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiAgb3JcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUKK21zZ2lkICIiCisiXG4iCisiVGhlIEBTIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbiIKKyJAZi4gIElmIHRoZSBAdiBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4iCisiQGYgKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBAU1xuIgorImlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIEBTOlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA8QHY+XG4iCisiIG9yXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTdXBlcmJsb2sgbmVtb2hsIGLDvXQgbmHEjXRlbiBuZWJvIG5lcG9waXN1amUgc3Byw6F2bsO9IHN5c3TDqW0gc291Ym9yxa9cbiIKKyJleHQyL2V4dDMvZXh0NC4gUG9rdWQgamUgemHFmcOtemVuw60gcGxhdG7DqSBhIG9wcmF2ZHUgb2JzYWh1amUgc3lzdMOpbVxuIgorInNvdWJvcsWvIGV4dDIvZXh0My9leHQ0IChhIG5lIHN3YXAgbmVibyBVRlMgbmVibyBuxJtjbyBqaW7DqWhvKSwgcGFrIGplXG4iCisic3VwZXJibG9rIHBvxaFrb3plbiBhIG3Fr8W+ZXRlIHprdXNpdCBzcHVzdGl0IGUyZnNjayBzIGppbsO9bSBzdXBlcmJsb2tlbTpcbiIKKyIgICAgZTJmc2NrIC1iICVTIDx6YcWZw616ZW7DrT5cbiIKKyJuZWJvXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8emHFmcOtemVuw60+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIlZlbGlrb3N0IHN5c3TDqW11IHNvdWJvcsWvIChwb2RsZSBzdXBlcmJsb2t1KSBqZSAlYiBibG9rxa9cbiIKKyJGeXppY2vDoSB2ZWxpa29zdCB6YcWZw616ZW7DrSBqZSAlYyBibG9rxa9cbiIKKyJCdcSPIHN1cGVyYmxvayBuZWJvIHRhYnVsa2Egb2Rkw61sxa8gamUgcHJhdmTEm3BvZG9ibsSbIHBvxaFrb3plbmEhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIlYgc3VwZXJibG9rdSBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGF0byB2ZXJ6ZSBlMmZzY2sgbmVwb2Rwb3J1amUgdmVsaWtvc3RpIGZyYWdtZW50xa8gcsWvem7DqVxuIgorIm9kIHZlbGlrb3N0aSBibG9rdS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja3NfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiViBzdXBlcmJsb2t1IGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgbcSbbG8gYnkgYsO9dCAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJWIHN1cGVyYmxva3UgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBtxJtsbyBieSBiw710ICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlN5c3TDqW0gc291Ym9yxa8gbmVtxJtsIFVVSUQ7IGdlbmVydWppIGplLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBvem7DoW1rYTogUG9rdWQgZXhpc3R1amUgdsOtY2UgYmxva8WvIGJpdG1hcCBpdXpsxa8gbmVibyBibG9rxa8sXG4iCisia3RlcsOpIHZ5xb5hZHVqw60gcMWZZW3DrXN0xJtuw60sIG5lYm8gamVkbmEgxI3DoXN0IHRhYnVsa3kgaXV6bMWvLFxuIgorImt0ZXLDoSBtdXPDrSBiw710IHDFmWVzdW51dGEsIG1vxb5uw6EgYnVkZXRlIHJhZMSbamkgY2h0w610IG5lamTFmcOtdmVcbiIKKyJzcHVzdGl0IGUyZnNjayBzwqBwxZllcMOtbmHEjWVtIOKAni1iICVT4oCcLiBQcm9ibMOpbSBqZSBtb8W+bsOhIGplblxuIgorInbCoHByaW3DoXJuw61tIGRlc2tyaXB0b3J1IHNrdXBpbnkgYmxva8WvIGEgesOhbG/Fvm7DrSBkZXNrcmlwdG9yeVxuIgorInNrdXBpbnkgYmxva8WvIG1vaG91IGLDvXQgdsKgcG/FmcOhZGt1LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiViBzdXBlcmJsb2t1IG5hbGV6ZW5vIHBvxaFrb3plbsOtLiAoJXMgPSAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgemppxaHFpW92w6Fuw60gdmVsaWtvc3RpIGZ5emlja8OpaG8gemHFmcOtemVuw606ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIlBvxI1ldCBpdXpsxa8gdiBzdXBlcmJsb2t1IGplICVpLCBtxJtsIGJ5IGLDvXQgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCBuZXBvZHBvcnVqZSB2bGFzdG5vc3QgZmlsZXR5cGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiU3VwZXJibG9rIG3DoSBuZXBsYXRuw70gxb51cm7DoWwgKGl1emVsICVpKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbSB1c2VycyAodW5zdXBwb3J0ZWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBtdWx0aXBsZSBAZiB1c2VycyAodW5zdXBwb3J0ZWQpLlxuIgorbXNnc3RyICJFeHRlcm7DrSDFvnVybsOhbCBwb3XFvsOtdsOhIHbDrWNlIHN5c3TDqW3FryBzb3Vib3LFryAobmVwb2Rwb3JvdsOhbm8pLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIk5lbW9odSBuYWzDqXp0IGV4dGVybsOtIMW+dXJuw6FsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJFeHRlcm7DrSDFvnVybsOhbCBtw6EgxaFwYXRuw70gc3VwZXJibG9rXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRXh0ZXJuw60gxb51cm7DoWwgbmVwb2Rwb3J1amUgdGVudG8gc3lzdMOpbSBzb3Vib3LFr1xuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiU3VwZXJibG9rIMW+dXJuw6FsdSBzeXN0w6ltdSBzb3Vib3LFryBqZSBuZXpuw6Ftw6lobyB0eXB1ICVOIChuZXBvZHBvcm92w6FubykuXG4iCisiSmUgcHJhdmTEm3BvZG9ibsOpLCDFvmUgdmHFoWUga29waWUgZTJmc2NrIGplIHN0YXLDoSBhL25lYm8gbmVwb2Rwb3J1amUgdGVudG8gIgorImZvcm3DoXQgxb51cm7DoWx1LlxuIgorIkplIHRha8OpIG1vxb5uw6ksIMW+ZSBzdXBlcmJsb2sgxb51cm7DoWx1IGplIHBvxaFrb3plbi5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiU3VwZXJibG9rIMW+dXJuw6FsdSBqZSBwb8Wha296ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorbXNnaWQgIkBTIGhhc19AaiBmbGFnIGlzIGNsZWFyLCBidXQgYSBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICIiCisiUMWZw616bmFrIHN1cGVyYmxva3UgaGFzX2pvdXJuYWwgKG3DoV/FvnVybsOhbCkgbmVuw60gbmFzdGF2ZW4sIGF2xaFhayDFvnVybsOhbCBqZSAiCisicMWZw610b21lbi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb2sgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBuZWVkc19yZWNvdmVyeSAocG90xZllYnVqZV9vYm5vdml0KSwgYXbFoWFrICIKKyLFvsOhZG7DvSDFvnVybsOhbCBuZWV4aXN0dWplLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBqb3VybmFsIGhhcyBkYXRhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0MQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAiIgorIlDFmcOtem5hayBzdXBlcmJsb2t1IG5lZWRzX3JlY292ZXJ5IChwb3TFmWVidWplX29ibm92aXQpIG5lbsOtIG5hc3RhdmVuLCBhdsWhYWsgIgorIsW+dXJuw6FsIG9ic2FodWplIGRhdGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIlZ5bWF6YXQgxb51cm7DoWwiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiIgorIlN5c3TDqW0gc291Ym9yxa8gbcOhIHDFmcOtem5hayh5KSB2bGFzdG5vc3TDrSBuYXN0YXZlbnksIGHEjWtvbGl2IHNlIGplZG7DoSBvIHJldml6aSAiCisiMC4gIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiVzIG9zacWZZWzDvSBpdXplbCAlaSAodWlkPSVJdSwgZ2lkPSVJZywgcHLDoXZhPSVJbSwgdmVsaWtvc3Q9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiTmVwbGF0bsO9ICVCICglYikgbmFsZXplbiB2IG9zacWZZWzDqW0gaXV6bHUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJKacW+IHZ5bWF6YW7DvSAlQiAoJWIpIG5hbGV6ZW4gdiBvc2nFmWVsw6ltIGl1emx1ICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJWwqBzdXBlcmJsb2t1IG5lcGxhdG7DvSBvc2nFmWVsw70gaXV6ZWwgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgaW5vZGUgJWkgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKK21zZ3N0ciAiTmVwbGF0bsO9IGl1emVsICVpIHYgc2V6bmFtdSBvc2nFmWVsw71jaCBpdXpsxa8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIlN1cGVyYmxvayDFvnVybsOhbHUgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBuZXpuw6Ftw6kgdmxhc3Rub3N0aSDigJ5qZW4gcHJvIMSNdGVuw63igJwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIlN1cGVyYmxvayDFvnVybsOhbHUgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBuZXpuw6Ftw6kgdmxhc3Rub3N0aSDigJ5uZWtvbXBhdGliaWxuw63igJwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5MQorbXNnaWQgIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIKK21zZ3N0ciAiVmVyemUgxb51cm7DoWx1IG5lcG9kcG9yb3bDoW5hIHTDrW10byBlMmZzY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiUMWZZXNvdXbDoW0gxb51cm7DoWwgeiAvJXMgZG8gc2tyeXTDqWhvIGl1emx1LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJDaHliYSBwxZlpIHDFmWVzdW51IMW+dXJuw6FsdTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5hbGV6ZW5hIG5lcGxhdG7DoSBwb2xlIHN1cGVyYmxva3Ugxb51cm7DoWx1IFYyICh6wqDFvnVybsOhbHUgVjEpLlxuIgorIk1hxb51IHBvbGUgemEgc3VwZXJibG9rZW0gxb51cm7DoWx1IFYx4oCmXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJQxZllc3RvIHNwdXN0aXQgxb51cm7DoWwiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorIlDFmcOtem5hayBvYm5vdmVuw60gbmVuw60gbmFzdGF2ZW4gdiB6w6Fsb8W+bsOtbSBzdXBlcmJsb2t1LCB0YWvFvmUgcMWZZXN0byBzcG91xaF0w61tICIKKyLFvnVybsOhbC5cbiIKKworIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMjIKK21zZ2lkICIiCisiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlrDoWxvaHVqaSBpbmZvcm1hY2Ugb8KgYmxva3UgaXV6bMWvIMW+dXJuw6FsdS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9pbm9kZSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGlzICVOOyBzaG91bGQgYmUgemVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMjcKK21zZ2lkICIiCisiQGYgZG9lcyBub3QgaGF2ZSByZXNpemVfQGkgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorImlzICVOOyBAcyB6ZXJvLiAgIgorbXNnc3RyICIiCisiU291Ym9yb3bDvSBzeXN0w6ltIG5lbcOhIHphcG51dCBwxZllcMOtbmHEjSByZXNpemVfaW5vZGUsXG4iCisiYWxlIHNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcyBqZSAlTiwgYcSNa29saXYgYnkgbcSbbG8gYsO9dCBudWxhLiIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJSZXNpemVfaW5vZGUgbmVuw60gemFwbnV0bywgYXbFoWFrIGl1emVsIHBybyBtxJtuxJtuw60gdmVsaWtvc3RpIG5lbsOtIG51bGEuIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkl1emVsIG5hIG3Em27Em27DrSB2ZWxpa29zdGkgbmVuw60gcGxhdG7DvS4gIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIsSMYXMgcG9zbGVkbsOtaG8gcMWZaXBvamVuw60gc3VwZXJibG9rdSAoJXQsXG4iCisiXHRueW7DrSA9ICVUKSBsZcW+w60gdsKgYnVkb3Vjbm9zdGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisixIxhcyBwb3NsZWRuw61obyB6w6FwaXN1IHN1cGVyYmxva3UgKCV0LFxuIgorIlx0bnluw60gPSAlVCkgbGXFvsOtIHbCoGJ1ZG91Y25vc3RpLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICJOw6Fwb3bEm2RhIHN1cGVyYmxva3UgcHJvIGV4dGVybsOtIHN1cGVyYmxvayBieSBtxJtsYSBiw710ICVYLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEbyBzb3Vib3JvdsOpaG8gc3lzdMOpbXUgcMWZaWTDoXbDoW0gbsOhcG92xJtkdSBwcm8gZGlyaGFzaC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNjIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgZGVza3JpcHRvcnUgc2t1cGlueSAlZyBqZSAlMDR4LCBtxJtsIGJ5IGLDvXQgJTA0eS4gIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkRlc2tyaXB0b3Igc2t1cGlueSAlZyBvem5hxI1lbiBqYWtvIG5laW5pY2lhbGl6b3ZhbsO9IGJleiBzYWR5IHZsYXN0bm9zdMOtLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzcyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgIgorbXNnc3RyICJEZXNrcmlwdG9yIHNrdXBpbnkgJWcgbcOhIG5lcGxhdG7DvSBwb8SNZXQgbmVwb3XFvml0w71jaCBibG9rxa8gJWIuICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIlBvc2xlZG7DrSBiaXRtYXBhIGJsb2vFryBza3VwaW55IG5lbsOtIGluaWNpYWxpem92w6FuYS4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICJUcmFuc2FrY2Ugxb51cm7DoWx1ICVpIGJ5bGEgcG/FoWtvemVuYSwgcMWZZWhyw6Fuw60gYnlsbyB6cnXFoWVuby5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiUMWZw616bmFrIHRlc3RfZnMgamUgbmFzdGF2ZW4gKGEgZXh0NCBqZSBkb3N0dXBuw70pLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisixIxhcyBwb3NsZWRuw61obyBwxZlpcG9qZW7DrSBzdXBlcmJsb2t1IGxlxb7DrSB2wqBidWRvdWNub3N0aS5cbiIKKyJcdChyb3pkw61sIG1lbsWhw60gbmXFviBkZW4sIHByYXZkxJtwb2RvYm7EmyBqc291IGNoeWJuxJsgbmFzdGF2ZW55IGhhcmR3YXJvdsOpICIKKyJob2RpbnkgICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5NworIywgZnV6enkKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKyLEjGFzIHBvc2xlZG7DrWhvIHrDoXBpc3Ugc3VwZXJibG9rdSBsZcW+w60gdsKgYnVkb3Vjbm9zdGkuXG4iCisiXHQocm96ZMOtbCBtZW7FocOtIG5lxb4gZGVuLCBwcmF2ZMSbcG9kb2JuxJsganNvdSBjaHlibsSbIG5hc3RhdmVueSBoYXJkd2Fyb3bDqSAiCisiaG9kaW55LiAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICIiCisiSmVkZW4gbmVibyB2w61jZSBrb250cm9sbsOtY2ggc291xI10xa8gZGVza3JpcHRvcnUgc2t1cGlueSBibG9rxa8gamUgY2h5Ym7DvWNoLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBpbm9kZXMgY291bnQgdG8gJWogKHdhcyAlaSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDgKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSBwb8SNZXQgdm9sbsO9Y2ggaXV6bMWvIG5hICVqIChieWwgJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSBwb8SNZXQgdm9sbsO9Y2ggYmxva8WvIG5hICVjIChieWwgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIkl1emVsIGt2w7N0eSAlaSAoJVEpIHNlIG96bmHEjXVqZSBqYWtvIHNrcnl0w70uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiU3VwZXJibG9rIG3DoSDFoXBhdG7DvSBibG9rwqBNTVAuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiU3VwZXJibG9rIG3DoSBuZXBsYXRuw6EgxI3DrXNsYSBNTVAuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKKyMsIGZ1enp5Cittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAiS29udHJvbG7DrSBzb3XEjWV0IGJsb2t1IE1NUCBuZW9kcG92w61kw6EgYmxva3UgTU1QIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1NworbXNnaWQgIkBTIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgIgorbXNnc3RyICIiCisiU3VwZXJibG9rIDY0Yml0b3bDvWNoIHNvdWJvcm92w71jaCBzeXN0w6ltxa8gcG90xZllYnVqZSByb3pzYWh5LCBhYnkgYnlsbyBtb8W+bsOpICIKKyJwxZlpc3RvdXBpdCBuYSBjZWzDvSBkaXNrLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDYyCittc2dpZCAiRmlyc3RfbWV0YV9iZyBpcyB0b28gYmlnLiAgKCVOLCBtYXggdmFsdWUgJWcpLiAgIgorbXNnc3RyICJGaXJzdF9tZXRhX2JnIGplIHDFmcOtbGnFoSB2ZWxrw70uICglTiwgbWF4aW3DoWxuw60gaG9kbm90YSAlZykuICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3CisjLCBmdXp6eQorbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgYmxva3Ugcm96c2Foxa8gbmVvZHBvdsOtZMOhIGJsb2t1IHJvenNhaMWvIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDcyCittc2dpZCAiQFMgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3NworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCBpbiBzdXBwb3J0IGxpYnJhcnk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODIKK21zZ2lkICJCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDg3Cittc2dpZCAiQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTQKK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAiUHLFr2Nob2QgMTogS29udHJvbHVqw60gc2UgaXV6bHksIGJsb2t5IGEgdmVsaWtvc3RpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5OAorbXNnaWQgIkByIGlzIG5vdCBhIEBkLiAgIgorbXNnc3RyICJLb8WZZW5vdsO9IGl1emVsIG5lbsOtIGFkcmVzw6HFmS4gIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIktvxZllbm92w70gaXV6ZWwgbcOhIG5hc3RhdmVuIGR0aW1lIChtb8W+bsOhIGt2xa9saSBzdGFyw6ltIG1rZTJmcykuICIKKworIy4gQC1leHBhbmRlZDogUmVzZXJ2ZWQgaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwOAorbXNnaWQgIlJlc2VydmVkIEBpICVpICglUSkgaGFzIEBuIG1vZGUuICAiCittc2dzdHIgIlJlemVydm92YW7DvSBpdXplbCAlaSAoJVEpIG3DoSDFoXBhdG7DvSBtw7NkLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICJPZHN0cmFuxJtuw70gaXV6ZWwgJWkgbcOhIG51bG92w70gZHRpbWUuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiSXV6ZWwgJWkgc2UgcG91xb7DrXbDoSwgYWxlIG3DoSBuYXN0YXZlbiBkdGltZS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiSXV6ZWwgJWkgamUgYWRyZXPDocWZIG51bG92w6kgZMOpbGt5LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorIkJpdG1hcGEgYmxva8WvIHNrdXBpbnkgJWcgdiAlYiBrb2xpZHVqZSBzIGppbsO9bSBibG9rZW0gc3lzdMOpbXUgc291Ym9yxa8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMzCittc2dpZCAiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorIkJpdG1hcGEgaXV6bMWvIHNrdXBpbnkgJWcgdiAlYiBrb2xpZHVqZSBzIGppbsO9bSBibG9rZW0gc3lzdMOpbXUgc291Ym9yxa8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisiVGFidWxrYSBpdXpsxa8gc2t1cGlueSAlZyB2ICViIGtvbGlkdWplIHMgamluw71tIGJsb2tlbSBzeXN0w6ltdSBzb3Vib3LFry5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQml0bWFwYSBibG9rxa8gc2t1cGlueSAlZyAoJWIpIGplIMWhcGF0bsOhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIkJpdG1hcGEgaXV6bMWvIHNrdXBpbnkgJWcgKCViKSBqZSDFoXBhdG7DoS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9zaXplIGlzICVJcywgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiVsKgaXV6bHUgJWkgamUgaV9zaXplICVJcywgbcSbbGEgYnkgYsO9dCAlTi4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9ibG9ja3MgaXMgJUliLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTU4Cittc2dpZCAiQGkgJWksIGlfQGJzIGlzICVJYiwgQHMgJU4uICAiCittc2dzdHIgIlbCoGl1emx1ICVpIGplIGlfYmxvY2tzICVJYiwgbcSbbG8gYnkgYsO9dCAlTi4gIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYzCittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiTmVwbGF0bsO9ICVCICglYikgdsKgaXV6bHUgJWkuICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiVCICglYikgc2UgcMWZZWtyw712w6EgcyBtZXRhZGF0eSBzeXN0w6ltdSBzb3Vib3LFryB2wqBpdXpsdSAlaS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkl1emVsICVpIG3DoSBuZXBsYXRuw70gYmxvayh5KS4gIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIlDFmcOtbGnFoSBtbm9obyBuZXBsYXRuw71jaCBibG9rxa8gdsKgaXV6bHUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCittc2dpZCAiQEkgJUIgKCViKSBpbiBiYWQgQGIgQGkuICAiCittc2dzdHIgIk5lcGxhdG7DvSAlQiAoJWIpIHbCoGl1emx1IMWhcGF0bsO9Y2ggYmxva8WvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkl1emVsIMWhcGF0bsO9Y2ggYmxva8WvIG3DoSBuZXBsYXRuw70gYmxvayh5KS4gIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiUG91xb7DrXbDoSBzZSBkdXBsaWvDoXRuw60gbmVibyDFoXBhdG7DvSBibG9rIVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgJWIgdXNlZCBhcyBiYWQgYmxvY2sgaW5vZGUgaW5kaXJlY3QgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTk4Cittc2dpZCAiQmFkIEBiICViIHVzZWQgYXMgYmFkIEBiIEBpIGluZGlyZWN0IEBiLiAgIgorbXNnc3RyICLFoHBhdG7DvSBibG9rICViIHBvdcW+w612w6FuIGpha28gbmVwxZnDrW3DvSBibG9rIMWhcGF0bsO9Y2ggYmxva8WvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkl1emVsIMWhcGF0bsO9Y2ggYmxva8WvIHNlIHByYXZkxJtwb2RvYm7EmyBwb8Wha29kaWwuIFrFmWVqbcSbIGJ5c3RlIG3Em2xpIG55bsOtXG4iCisiemFzdGF2aXQgYSB2ecWhZXTFmWl0IHNvdWJvcm92w70gc3lzdMOpbSBuYSDFoXBhdG7DqSBibG9reSBwxZnDrWthemVtIOKAnmUyZnNjayAtY+KAnFxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkplLWxpIGJsb2sgb3ByYXZkdSDFoXBhdG7DvSwgbmVtxa/FvmUgYsO9dCBzeXN0w6ltIHNvdWJvcsWvIG9wcmF2ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk3Fr8W+ZXRlIHRlbnRvIGJsb2sgdnltYXphdCB6ZSBzZXpuYW11IMWhcGF0bsO9Y2ggYmxva8WvIGEgZG91ZmF0LCDFvmVcbiIKKyJ0ZW50byBibG9rIGplIHZlIHNrdXRlxI1ub3N0aSB2IHBvxZnDoWRrdS4gQWxlIHphIG5pYyBuZXJ1xI3DrW1lLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyMQorbXNnaWQgIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIgorbXNnc3RyICJQcmltw6FybsOtIHN1cGVyYmxvayAoJWIpIGplIG5hIHNlem5hbXUgxaFwYXRuw71jaCBibG9rxa8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiQmxvayAlYiB2IHByaW3DoXJuw61jaCBkZXNrcmlwdG9yZWNoIHNrdXBpbiBqZSBuYSBzZXpuYW11IMWhcGF0bsO9Y2ggYmxva8WvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJWYXJvdsOhbsOtOiBzdXBlcmJsb2sgc2t1cGlueSAlZyAoJWIpIGplIMWhcGF0bsO9LlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJWYXJvdsOhbsOtOiBLb3BpZSBkZXNrcmlwdG9yxa8gc2t1cGluIHZlIHNrdXBpbsSbICVnIG3DoSDFoXBhdG7DvSBibG9rICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJDaHliYSBwxZlpIHByb2dyYW1vdsOhbsOtPyBCbG9rICMlYiBiZXpkxa92b2RuxJsgcG91xb5pdCB2IHByb2Nlc3NfYmFkX2Jsb2Nrcy5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpICVOIHNvdXZpc2zDvWNoIGJsb2vFryB2ZSBza3VwaW7EmyBibG9rxa8gJWcgcHJvICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIHZ5cm92bsOhdmFjw60gcGFtxJt0aSBibG9rxa8gcHJvIHDFmWVtw61zdMSbbsOtICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiUMWZZW3DrXPFpXVqaSAlcyBza3VwaW55ICVnIHogJWIgZG8gJWPigKZcbiIKKworIyBGSVhNRTogbm8tYy1mb3JtYXQgc28gdGhhdCBJIGNhbiByZW9yZGVyIGl0IHByb3Blcmx5CisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIlDFmWVtw61zxaV1amkgc2t1cGlueSAlZyAlcyBkbyAlY+KAplxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiVmFyb3bDoW7DrTogbmVtb2h1IG5hxI3DrXN0IGJsb2sgJXMgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiVmFyb3bDoW7DrTogbmVtb2h1IHphcHNhdCBibG9rICViIHBybyAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIGJpdG1hcHkgaXV6bMWvICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0Cittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIGJpdG1hcHkgYmxva8WvICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIGFsb2thY2kgaW5mb3JtYWPDrSBvZGthesWvIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIGFsb2thY2kgcG9sZSBibG9rxa8gYWRyZXPDocWZZTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIHprb3Vtw6Fuw60gaXV6bMWvICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIGl0ZXJhY2kgcMWZZXMgYmxva3kgdsKgaXV6bHUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBjb3VudD0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiIgorIkNoeWJhIHDFmWkgdWtsw6Fkw6Fuw60gaW5mb3JtYWNlIG8gxI1ldG5vc3RpIGl1emx1IChpdXplbD0laSwgcG/EjWV0PSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJDaHliYSBwxZlpIHVrbMOhZMOhbsOtIGluZm9ybWFjZSBvIGJsb2t1IGFkcmVzw6HFmWUgKGl1emVsPSVpLCBibG9rPSViLCDEjcOtcz0lTik6ICIKKyIlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIMSNdGVuw60gaXV6bHUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgIkl1emVsICVpIG3DoSBuYXN0YXZlbiBwxZnDrXpuYWsgaW1hZ2ljLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVjacOhbG7DrSBzb3Vib3IgKHphxZnDrXplbsOtL3NvY2tldC9maWZvL3N5bWJvbGlja8O9IG9ka2F6LCBpdXplbCAlaSlcbiIKKyJtw6EgbmFzdGF2ZW4gcMWZw616bmFrIGltbXV0YWJsZSBuZWJvIGFwcGVuZC1vbmx5LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiU3BlY2nDoWxuw60gKHphxZnDrXplbsOtL3NvY2tldC9maWZvKSBpdXplbCAlaSBtw6EgbmVudWxvdm91IGTDqWxrdS4gIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJJdXplbCDFvnVybsOhbHUgc2UgbmVwb3XFvsOtdsOhLCBhbGUgb2JzYWh1amUgZGF0YS4gIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAixb11cm7DoWwgbmVuw60gb2J5xI1lam7DvSBzb3Vib3IuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHdhcyBwYXJ0IG9mIHRoZSBAbyBAaSBsaXN0LiAgIgorbXNnc3RyICJJdXplbCAlaSBieWwgc291xI3DoXN0w60gc2V6bmFtdSBvc2nFmWVsw71jaCBpdXpsxa8uICIKKworIy4gQC1leHBhbmRlZDogaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisiTmFsZXplbnkgaXV6bHksIGt0ZXLDqSBieWx5IHNvdcSNw6FzdMOtIHBvxaFrb3plbsOpaG8gc3Bvam92w6lobyBzZXpuYW11IG9zacWZZWzDvWNoLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgYWxva2FjaSBzdHJ1a3R1cnkgcmVmY291bnQgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJDaHliYSBwxZlpIMSNdGVuw60gYmxva3Ugcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryAlYiBwcm8gaXV6ZWwgJWkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkl1emVsICVpIG3DoSDFoXBhdG7DvSBibG9rIHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIuICIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkNoeWJhIHDFmWkgxI10ZW7DrSBibG9rdSByb3rFocOtxZllbsO9Y2ggYXRyaWJ1dMWvICViICglbSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQmxvayByb3rFocOtxZllbsO9Y2ggYXRyaWJ1dMWvICViIG3DoSBwb8SNZXQgb2RrYXrFryAlciwgbcSbbCBieSBiw710ICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiQ2h5YmEgcMWZaSB6w6FwaXN1IGJsb2t1IHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIgKCVtKS4gIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIGhfYmxvY2tzID4gMS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICJCbG9rIHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIgbcOhIGhfYmxvY2tzID4gMS4gIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODA1CisjLCBmdXp6eQorbXNnaWQgIkBBIEBhIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIHN0cnVrdHVyeSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJCbG9rIHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIgamUgcG/FoWtvemVuIChrb2xpemUgYWxva2FjZSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIkJsb2sgcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryAlYiBqZSBwb8Wha296ZW4gKG5lcGxhdG7DvSBuw6F6ZXYpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgIkJsb2sgcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryAlYiBqZSBwb8Wha296ZW4gKG5lcGxhdG7DoSBob2Rub3RhKS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICJJdXplbCAlaSBqZSBwxZnDrWxpxaEgdmVsa8OhLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorbXNnaWQgIiVCICglYikgY2F1c2VzIEBkIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgenDFr3NvYnVqZSwgxb5lIGFkcmVzw6HFmSBqZSBwxZnDrWxpxaEgdmVsa8O9LiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIHpwxa9zb2J1amUsIMW+ZSBzb3Vib3IgamUgcMWZw61sacWhIHZlbGvDvS4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSB6cMWvc29idWplLCDFvmUgc3ltYm9saWNrw70gb2RrYXogamUgcMWZw61sacWhIHZlbGvDvS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJJdXplbCAlaSBtw6EgbmFzdGF2ZW4gcMWZw616bmFrIElOREVYX0ZMIG5hIHN5c3TDqW11IHNvdWJvcsWvIGJleiBwb2Rwb3J5IGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiSXV6ZWwgJWkgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBJTkRFWF9GTCwgYWxlIG5lbsOtIGFkcmVzw6HFmS5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiSXV6ZWwgSFRSRUUgYWRyZXPDocWZZSAlaSBtw6EgbmVwbGF0bsO9IGtvxZllbm92w70gdXplbC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1OQorbXNnaWQgIkBoICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuIgorbXNnc3RyICJJdXplbCBIVFJFRSBhZHJlc8OhxZllICVpIG3DoSBuZXBvZHBvcm92YW5vdSB2ZXJ6aSBoYXNoZSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKyJJdXplbCBIVFJFRSBhZHJlc8OhxZllICVpIHBvdcW+w612w6EgbmVrb21wYXRpYmlsbsOtIHDFmcOtem5hayBrb8WZZW5vdsOpaG8gdXpsdSAiCisiaHRyZWUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2OQorbXNnaWQgIkBoICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4iCittc2dzdHIgIiIKKyJJdXplbCBIVFJFRSBhZHJlc8OhxZllICVpIG3DoSBobG91Ymt1IHN0cm9tdSAoJU4pLCBrdGVyw6EgamUgcMWZw61sacWhIHZlbGvDoVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGFuIGluZGlyZWN0IGJsb2NrICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIG1ldGFkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3NAorbXNnaWQgIiIKKyJCYWQgQGIgQGkgaGFzIGFuIGluZGlyZWN0IEBiICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuIgorIkBmIG1ldGFkYXRhLiAgIgorbXNnc3RyICIiCisiSXV6ZWwgxaFwYXRuw71jaCBibG9rxa8gbcOhIG5lcMWZw61tw70gYmxvayAoJWIpLCBrdGVyw70gamUgdsKgcm96cG9ydSBzwqBtZXRhZGF0eVxuIgorInNvdWJvcm92w6lobyBzeXN0w6ltdS4gIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICIoWm5vdnUpIHZ5dHZvxZllbsOtIGl1emx1IHBybyB6bcSbbnkgdmVsaWtvc3RpIHNlbGhhbG86ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJJdXplbCAlaSBtw6EgdmVsaWtvc3QgbmF2w61jICglSVMpLCBrdGVyw6EgbmVuw60gcGxhdG7DoVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiUm96xaHDrcWZZW7DvSBhdHJpYnV0IHbCoGl1emx1ICVpIG3DoSBkw6lsa3Ugam3DqW5hICglTiksIGt0ZXLDoSBuZW7DrSBwbGF0bsOhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODk1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorIlJvesWhw63FmWVuw70gYXRyaWJ1dCB2wqBpdXpsdSAlaSBtw6EgcG96aWNpIGhvZG5vdHkgKCVOKSwga3RlcsOhIG5lbsOtIHBsYXRuw6FcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIGJsb2NrICglTikgd2hpY2ggaXMgaW52YWxpZCAobXVzdCBiZSAwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKK21zZ3N0ciAiIgorIlJvesWhw63FmWVuw70gYXRyaWJ1dCB2wqBpdXpsdSAlaSBtw6EgYmxvayBob2Rub3QgKCVOKSwga3RlcsO9IG5lbsOtIHBsYXRuw70gKG11c8OtICIKKyJiw710IDApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICIiCisiUm96xaHDrcWZZW7DvSBhdHJpYnV0IHbCoGl1emx1ICVpIG3DoSB2ZWxpa29zdCBob2Rub3R5ICglTiksIGt0ZXLDoSBuZW7DrSBwbGF0bsOhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJSb3rFocOtxZllbsO9IGF0cmlidXQgdsKgaXV6bHUgJWkgbcOhIGhhc2ggKCVOKSwga3RlcsO9IG5lbsOtIHBsYXRuw71cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorbXNnaWQgIkBpICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiSXV6ZWwgJWkgamUgJUl0LCBhbGUgdmUgc2t1dGXEjW5vc3RpIHZ5cGFkw6EgbmEgYWRyZXPDocWZLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIHByb8SNw610w6Fuw60gc3Ryb211IEB4IHYgaXV6bHUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorIlByxa9jaG9kIHJvenNhaHkgaXV6bHUgJWkgc2VsaGFsXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSXV6ZWwgJWkgbcOhIG5lcGxhdG7DvSByb3pzYWhcbiIKKyJcdChsb2dpY2vDvSBibG9rICVjLCBuZXBsYXRuw70gZnl6aWNrw70gYmxvayAlYiwgZMOpbGthICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkl1emVsICVpIG3DoSBuZXBsYXRuw70gcm96c2FoXG4iCisiXHQobG9naWNrw70gYmxvayAlYywgZnl6aWNrw70gYmxvayAlYiwgbmVwbGF0bsOhIGTDqWxrYSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJJdXplbCAlaSBtw6EgbmFzdGF2ZW4gcMWZw616bmFrIEVYVEVOVFNfRkwgbmEgc3lzdMOpbXUgc291Ym9yxa8gYmV6IHBvZHBvcnkgIgorInJvenNhaMWvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiSXV6ZWwgJWkgcm96c2Fob3bDvSBmb3Jtw6F0LCBhbGUgc3VwZXJibG9rdSBjaHliw60gdmxhc3Rub3N0IEVYVEVOVFNcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iCittc2dzdHIgIkl1emx1ICVpIGNoeWLDrSBFWFRFTlRfRkwsIGFsZSBqZSB2wqByb3pzYWhvdsOpbSBmb3Jtw6F0dVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIlJ5Y2hsw70gc3ltYm9saWNrw70gb2RrYXogJWkgbmEgbmFzdGF2ZW5vIEVYVEVOVF9GTC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkl1emVsICVpIG3DoSB6cMWZZWjDoXplbsOpIHJvenNhaHlcbiIKKyJcdChuZXBsYXRuw70gbG9naWNrw70gYmxvayAlYywgZnl6aWNrw70gYmxvayAlYiwgZMOpbGthICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIkl1emVsICVpIG3DoSBuZXBsYXRuw70gdXplbCByb3pzYWjFryAob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBwxZlldm9kdSBiaXRtYXB5IGJsb2vFryBzdWJjbHVzdGVydTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJJdXplbCBrdsOzdHkgbmVuw60gb2J5xI1lam7DvSBzb3Vib3IuICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkl1emVsIGt2w7N0eSBzZSBuZXBvdcW+w612w6EsIGFsZSBvYnNhaHVqZSBkYXRhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiSXV6ZWwga3bDs3R5IGplIHBybyB1xb5pdmF0ZWxlIHZpZGl0ZWxuw70uICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIkl1emVsIMWhcGF0bsO9Y2ggYmxva8WvIHNlIHpkw6EgYsO9dCBuZXBsYXRuw70uICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyJJdXplbCAlaSBtw6Egcm96c2FoIG/CoG51bG92w6kgZMOpbGNlXG4iCisiXHQobmVwbGF0bsO9IGxvZ2lja8O9IGJsb2sgJWMsIGZ5emlja8O9IGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgIkl1emVsICVpIGplIHDFmcOtbGnFoSB2ZWxrw6EuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiS29udHJvbG7DrSBzb3XEjWV0IGJpdG1hcHkgaXV6bMWvIG5lb2Rwb3bDrWTDoSBiaXRtYXDEmyIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkJsb2sgcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryAlYiBqZSBwb8Wha296ZW4gKGtvbGl6ZSBhbG9rYWNlKS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkl1emVsICVpIG3DoSB6cMWZZWjDoXplbsOpIHJvenNhaHlcbiIKKyJcdChuZXBsYXRuw70gbG9naWNrw70gYmxvayAlYywgZnl6aWNrw70gYmxvayAlYiwgZMOpbGthICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIyA/Pz8gV1RGCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiw5pyb3ZlxYggdm5pdMWZbsOtY2ggcm96c2Fob3bDvSB1emzFryAlTiBpdXpsdSAlaTpcbiIKKyJMb2dpY2vDvSB6YcSNw6F0ZWsgJWIgbmVvZHBvdsOtZMOhIGxvZ2lja8OpbXUgemHEjcOhdGt1ICVjIG5hIGRhbMWhw60gw7pyb3ZuaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSXV6ZWwgJWksIGtvbmVjIHJvenNhaHUgcMWZZWtyYcSNdWplIHBvdm9sZW5vdSBob2Rub3R1XG4iCisiXHQobG9naWNrw70gYmxvayAlYywgZnl6aWNrw70gYmxvayAlYiwgZMOpbGthICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICJJdXplbCAlaSByb3pzYWhvdsO9IGZvcm3DoXQsIGFsZSBzdXBlcmJsb2t1IGNoeWLDrSB2bGFzdG5vc3QgRVhURU5UU1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJJdXplbCAlaSBtw6EgbmFzdGF2ZW4gcMWZw616bmFrIElOREVYX0ZMIG5hIHN5c3TDqW11IHNvdWJvcsWvIGJleiBwb2Rwb3J5IGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkl1emVsIGFkcmVzw6HFmWUgJWkgYmxvayAlYiBieSBtxJtsIGLDvXQgbmEgYmxva3UgJWMuICIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2OAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAaSAlaSBoYXMgQHggbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgQGIgJWMuICAiCittc2dzdHIgIiIKKyJJdXplbCBhZHJlc8OhxZllICVpIG3DoSBuYSBibG9rdSAlYyByb3pzYWggb3puYcSNZW7DvSBqYWtvIG5laW5pY2lhbGl6b3ZhbsO9LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGxvZ2ljYWwgYmxvY2sgJWIgKHBoeXNpY2FsIGJsb2NrICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFdpbGwgZml4IGluIHBhc3MgMUIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3MworbXNnaWQgIiIKKyJAaSAlaSBsb2dpY2FsIEBiICViIChwaHlzaWNhbCBAYiAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuIgorIldpbGwgZml4IGluIHBhc3MgMUIuXG4iCittc2dzdHIgIiIKKyJJdXplbCAlaSBsb2dpY2vDvSBibG9rICViIChmeXppY2vDvSBibG9rICVjKSBwb3J1xaF1amUgcHJhdmlkbGFcbiIKKyJhbG9rYWNlIGNsdXN0ZXJ1LiBCdWRlIG9wcmF2ZW5vIHbCoHByxa9jaG9kdSAxQi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiSXV6ZWwgJWkgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBJTkRFWF9GTCwgYWxlIG5lbsOtIGFkcmVzw6HFmS5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZWNpw6FsbsOtIHNvdWJvciAoemHFmcOtemVuw60vc29ja2V0L2ZpZm8vc3ltYm9saWNrw70gb2RrYXosIGl1emVsICVpKVxuIgorIm3DoSBuYXN0YXZlbiBwxZnDrXpuYWsgaW1tdXRhYmxlIG5lYm8gYXBwZW5kLW9ubHkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIHN0cnVrdHVyeSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSXV6ZWwgJWkgbcOhIG5lcGxhdG7DvSByb3pzYWhcbiIKKyJcdChsb2dpY2vDvSBibG9rICVjLCBuZXBsYXRuw70gZnl6aWNrw70gYmxvayAlYiwgZMOpbGthICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5Cittc2dpZCAiQGkgJWkgQHggdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBvbiBiaWdhbGxvYyBmaWxlc3lzdGVtIGNhbm5vdCBiZSBibG9jayBtYXBwZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBvbiBiaWdhbGxvYyBAZiBjYW5ub3QgYmUgQGIgbWFwcGVkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICJCbG9rIHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIgamUgcG/FoWtvemVuIChuZXBsYXRuw70gbsOhemV2KS4gIgorCisjLiBALWV4cGFuZGVkOiBUaW1lc3RhbXAocykgb24gaW5vZGUgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRpbWVzdGFtcChzKSBvbiBAaSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlNwb3XFoXTDrW0gZG9kYXRlxI1uw6kgcHLFr2Nob2R5LCBhYnljaCB2ecWZZcWhaWwgYmxva3ksIGtlIGt0ZXLDvW0gc2UgaGzDoXPDrVxuIgorInbDrWNlIGl1emzFr+KAplxuIgorIlByxa9jaG9kIDFCOiBabm92dSB2ecWhZXTFmXVqaSB2w61jZSBrcsOhdCBhbG9rb3ZhbsOpIGJsb2t5XG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgJWk6CisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICJWw61jZSBrcsOhdCBhbG9rb3ZhbsO9KMOpKSBibG9rKHkpIHbCoGl1emx1ICVpOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIHprb3Vtw6Fuw60gaXV6bMWvICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIGJpdG1hcHkgaXV6bMWvIChpbm9kZV9kdXBfbWFwKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBpdGVyYWNpIHDFmWVzIGJsb2t5IHbCoGl1emx1ICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJDaHliYSBwxZlpIMO6cHJhdsSbIHBvxI10dSBvZGthesWvIGJsb2t1IHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIgKGl1emVsICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiUHLFr2Nob2QgMUM6IEhsZWTDoW7DrSBpdXpsxa8gcyBkdXBsaWtvdmFuw71taSBibG9reSB2IGFkcmVzw6HFmcOtY2guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwMworbXNnaWQgIlBhc3MgMUQ6IFJlY29uY2lsaW5nIEBtIEBic1xuIgorbXNnc3RyICJQcsWvY2hvZCAxRDogT3ByYXZ1amkgZHVwbGlrw6F0bsOtIGJsb2t5XG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpbGUgJVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKSBcbgorIy4gQC1leHBhbmRlZDogICBoYXMgJXIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjA4Cittc2dpZCAiIgorIkZpbGUgJVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKSBcbiIKKyIgIGhhcyAlciBAbSBAYihzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbiIKK21zZ3N0ciAiIgorIlNvdWJvciAlUSAoaXV6ZWwgJWksIMSNYXMgem3Em255ICVJTSkgXG4iCisiICBtw6EgJXIgZHVwbGlrb3ZhbsO9KGNoKSBibG9rKMWvKSBzZMOtbGVuw70oY2gpIG1lemkgJU4gc291Ym9yeS9zb3Vib3JlbTpcbiIKKworIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorbXNnaWQgIlx0JVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKVxuIgorbXNnc3RyICIgICAgICAgICVRIChpdXplbCAlaSwgxI1hcyB6bcSbbnkgJUlNKVxuIgorCisjLiBALWV4cGFuZGVkOiBcdDxmaWxlc3lzdGVtIG1ldGFkYXRhPlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiXHQ8bWV0YWRhdGEgc3lzdMOpbXUgc291Ym9yxa8+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihFeGlzdHVqZSAlTiBpdXpsxa8gb2JzYWh1asOtY8OtY2ggdsOtY2Uga3LDoXQgYWxva292YW7DqSBibG9reS4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdXBsaWvDoXRuw60gYmxva3kgamnFviBwxZlpxZlhemVueSBuZWJvIG5ha2xvbm92w6FueS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNsb25lIGZpbGU6ICVtXG4iCittc2dzdHIgIk5lbW9odSBrbG9ub3ZhdCBzb3Vib3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0OAorIywgZnV6enkKK21zZ2lkICJQYXNzIDFFOiBPcHRpbWl6aW5nIEB4IHRyZWVzXG4iCittc2dzdHIgIlByxa9jaG9kIDNBOiBPcHRpbWFsaXp1amkgYWRyZXPDocWZZVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJOZW1vaHUgb3B0aW1hbGl6b3ZhdCBhZHJlc8OhxZkgJXEgKCVkKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogT3B0aW1pemluZyBleHRlbnQgdHJlZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjU4CisjLCBmdXp6eQorbXNnaWQgIk9wdGltaXppbmcgQHggdHJlZXM6ICIKK21zZ3N0ciAiT3B0aW1hbGl6dWppIGFkcmVzw6HFmWU6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIlByxa9jaG9kIDI6IEtvbnRyb2x1amUgc2Ugc3RydWt0dXJhIGFkcmVzw6HFmcWvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIsWgcGF0bsOpIMSNw61zbG8gaXV6bHUgcHJvIOKAni7igJwgdiBpdXpsdSBhZHJlc8OhxZllICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiUG9sb8W+a2Eg4oCeJURu4oCcIHbCoCVwICglaSkgbcOhIMWhcGF0bsOpIMSNw61zbG8gaXV6bHU6ICVEaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgJURpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDUKK21zZ2lkICJARSBoYXMgQEQvdW51c2VkIEBpICVEaS4gICIKK21zZ3N0ciAiUG9sb8W+a2Eg4oCeJURu4oCcIHYgJXAgKCVpKSBtw6Egb2RzdHJhbsSbbsO9L25lcG91xb7DrXZhbsO9IGl1emVsICVEaS4gIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2ICVwICglaSkgamUgb2RrYXogbmEg4oCeLuKAnCAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICIiCisiUG9sb8W+a2Eg4oCeJURu4oCcIHYgJXAgKCVpKSB1a2F6dWplIG5hIGl1emVsICglRGkpIHVtw61zdMSbbsO9IHZlIMWhcGF0bsOpbSBibG9rdS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiUG9sb8W+a2Eg4oCeJURu4oCcIHYgJXAgKCVpKSBqZSBvZGtheiBuYSBhZHJlc8OhxZkgJVAgKCVEaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2ICVwICglaSkgamUgb2RrYXogbmEga2/FmWVub3bDvSBpdXplbC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJQb2xvxb5rYSDigJ4lRG7igJwgdiAlcCAoJWkpIG3DoSB2ZSBzdsOpbSBqbcOpbsSbIG5lcGxhdG7DqSB6bmFreS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkNoeWLDrSDigJ4u4oCcIHbCoGl1emx1IGFkcmVzw6HFmWUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkNoeWLDrSDigJ4uLuKAnCB2wqBpdXpsdSBhZHJlc8OhxZllICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIiIKKyJQcnZuw60gcG9sb8W+a2Eg4oCeJURu4oCcIChpdXplbD0lRGkpIHbCoGl1emx1IGFkcmVzw6HFmWUgJWkgKCVwKSBieSBtxJtsYSBiw710IOKAni7igJxcbiIKKworIy4gQC1leHBhbmRlZDogU2Vjb25kIGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSBzaG91bGQgYmUgJy4uJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTAKK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICJEcnVow6EgcG9sb8W+a2Eg4oCeJURu4oCcIChpdXplbD0lRGkpIHbCoGl1emx1IGFkcmVzw6HFmWUgJWkgYnkgbcSbbGEgYsO9dCDigJ4uLuKAnFxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIHBybyBpdXplbCAlaSAoJVEpIGplICVJRiwgbcSbbGEgYnkgYsO9dCBudWxhLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIHBybyBpdXplbCAlaSAoJVEpIGplICVJZiwgbcSbbG8gYnkgYsO9dCBudWxhLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1Cittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9kaXJfYWNsIHBybyBpdXplbCAlaSAoJVEpIGplICVOLCBtxJtsbyBieSBiw710IG51bGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3MAorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mcmFnIHBybyBpdXplbCAlaSAoJVEpIGplICVOLCBtxJtsbyBieSBiw710IG51bGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnNpemUgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzUKK21zZ2lkICJpX2ZzaXplIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZzaXplIHBybyBpdXplbCAlaSAoJVEpIGplICVOLCBtxJtsYSBieSBiw710IG51bGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAiSXV6ZWwgJWkgKCVRKSBtw6EgxaFwYXRuw70gbcOzZCAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiSXV6ZWwgYWRyZXPDocWZZSAlaSwgJUIsIHBvc3VuICVOOiBhZHJlc8OhxZkgcG/FoWtvemVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIkl1emVsIGFkcmVzw6HFmWUgJWksIGJsb2sgJUIsIHBvemljZSAlTjogbsOhemV2IHNvdWJvcnUgcMWZw61sacWhIGRsb3Vow71cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1Cittc2dpZCAiQGQgQGkgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgIgorbXNnc3RyICJJdXplbCBhZHJlc8OhxZllICVpIG3DoSBuZWFsb2tvdmFuw70gJUIuICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiUG9sb8W+a2EgYWRyZXPDocWZZSDigJ4u4oCcIHbCoGl1emx1IGFkcmVzw6HFmWUgJWkgbmVuw60gdWtvbsSNZW5hIE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIicuLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJQb2xvxb5rYSBhZHJlc8OhxZllIOKAni4u4oCcIHbCoGl1emx1IGFkcmVzw6HFmWUgJWkgbmVuw60gdWtvbsSNZW5hIE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJJdXplbCAlaSAoJXEpIGplIG5lcGxhdG7DqSB6bmFrb3bDqSB6YcWZw616ZW7DrS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGJsb2NrIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDE1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBAYiBAdi5cbiIKK21zZ3N0ciAiSXV6ZWwgJWkgKCVRKSBqZSBuZXBsYXRuw6kgYmxva292w6kgemHFmcOtemVuw60uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiUG9sb8W+a2Eg4oCeJURu4oCcIHYgJXAgKCVpKSBqZSBkdXBsaWvDoXRuw60gcG9sb8W+a2Eg4oCeLuKAnC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDI1Cittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuLicgQGUuXG4iCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2ICVwICglaSkgamUgZHVwbGlrw6F0bsOtIHBvbG/FvmthIOKAni4u4oCcLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAiSW50ZXJuw60gY2h5YmE6IG5lbW9odSBuYWrDrXQgZGlyX2luZm8gcHJvICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJQb2xvxb5rYSDigJ4lRG7igJwgdsKgJXAgKCVpKSBtw6EgcmVjX2xlbiAlRHIsIG3Em2xhIGJ5IGLDvXQgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgYWxva2FjaSBzdHJ1a3R1cnkgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIGl0ZXJvdsOhbsOtIHDFmWVzIGJsb2t5IGFkcmVzw6HFmWU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1MAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSDEjXRlbsOtIGJsb2t1IGFkcmVzw6HFmWUgJWIgKGl1emVsICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIHrDoXBpc3UgYmxva3UgYWRyZXPDocWZZSAlYiAoaXV6ZWwgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgYWxva2FjaSBub3bDqWhvIGJsb2t1IGFkcmVzw6HFmWUgcHJvIGl1emVsICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBkZWFsb2thY2kgaXV6bHUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAiUG9sb8W+a2EgYWRyZXPDocWZZSBwcm8g4oCeLuKAnCB2wqAlcCAoJWkpIGplIHZlbGvDoS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIEZJRk8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3NQorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgRklGTy5cbiIKK21zZ3N0ciAiSXV6ZWwgJWkgKCVRKSBqZSBuZXBsYXRuw6EgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkl1emVsICVpICglUSkgamUgbmVwbGF0bsO9IHNvY2tldC5cbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSBmaWxldHlwZSBwcm8gcG9sb8W+a3Ug4oCeJURu4oCcIHYgJXAgKCVpKSBuYSAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBzaG91bGQgYmUgJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2wqAlcCAoJWkpIG3DoSBjaHlibsO9IGZpbGV0eXBlIChieWwgJUR0LCBtxJtsIGJ5IGLDvXQgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2ICVwICglaSkgbcOhIG5hc3RhdmVuIGZpbGV0eXBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwMAorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgIlBvbG/FvmthIOKAniVEbuKAnCB2wqAlcCAoJWkpIG3DoSBuw6F6ZXYgbnVsb3bDqSBkw6lsa3kuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFN5bWxpbmsgJVEgKGlub2RlICMlaSkgaXMgaW52YWxpZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTA1Cittc2dpZCAiU3ltbGluayAlUSAoQGkgIyVpKSBpcyBAbi5cbiIKK21zZ3N0ciAiU3ltYm9saWNrw70gb2RrYXogJVEgKGl1emVsICMlaSkgbmVuw60gcGxhdG7DvS5cbiIKKworIyBGSVhNRTogQEYgYWxyZWFkeSBlbmRzIHdpdGggJ2lzJworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAlaSAoJVEpIGlzIGludmFsaWQgKCVJZikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxMAorbXNnaWQgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorbXNnc3RyICJCbG9rIHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gcHJvIGl1emVsICVpICglUSkgbmVuw60gcGxhdG7DvSAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorIlN5c3TDqW0gc291Ym9yxa8gb2JzYWh1amUgdmVsa8OpIHNvdWJvcnksIGFsZSB2IHN1cGVyYmxva3UgbmVtw6EgcMWZw616bmFrICIKKyJMQVJHRV9GSUxFLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgIlByb2Jsw6ltIHbCoGl1emx1IEhUUkVFIGFkcmVzw6HFmWUgJWQ6IG5hICVCIG5lZXhpc3R1amUgb2RrYXpcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiUHJvYmzDqW0gdsKgaXV6bHUgSFRSRUUgYWRyZXPDocWZZSAlZDogbmEgJUIgdmVkb3UgZHZhIG9ka2F6eVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICJQcm9ibMOpbSB2wqBpdXpsdSBIVFJFRSBhZHJlc8OhxZllICVkOiAlQiBtw6EgxaFwYXRuw70gbWluIGhhc2hcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiUHJvYmzDqW0gdsKgaXV6bHUgSFRSRUUgYWRyZXPDocWZZSAlZDogJUIgbcOhIMWhcGF0bsO9IG1heCBoYXNoXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIk5lcGxhdG7DvSBpdXplbCBIVFJFRSBhZHJlc8OhxZllICVkICglcSkuICIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKTogYmFkIGJsb2NrIG51bWJlciAlYi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQ0Cittc2dpZCAiQHAgQGggJWQgKCVxKTogYmFkIEBiIG51bWJlciAlYi5cbiIKK21zZ3N0ciAiUHJvYmzDqW0gdsKgaXV6bHUgSFRSRUUgYWRyZXPDocWZZSAlZCAoJXEpOiDFoXBhdG7DqSDEjcOtc2xvIGJsb2t1ICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiUHJvYmzDqW0gdsKgaXV6bHUgSFRSRUUgYWRyZXPDocWZZSAlZDoga2/FmWVub3bDvSB1emVsIG5lbsOtIHBsYXRuw71cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIlByb2Jsw6ltIHbCoGl1emx1IEhUUkVFIGFkcmVzw6HFmWUgJWQ6ICVCIG3DoSDFoXBhdG7DvSBsaW1pdCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBjb3VudCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gY291bnQgKCVOKVxuIgorbXNnc3RyICJQcm9ibMOpbSB2wqBpdXpsdSBIVFJFRSBhZHJlc8OhxZllICVkOiAlQiBtw6EgxaFwYXRuw70gcG/EjWV0ICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIlByb2Jsw6ltIHbCoGl1emx1IEhUUkVFIGFkcmVzw6HFmWUgJWQ6ICVCIG3DoSBuZXNldMWZw61kxJtub3UgaGFzaCB0YWJ1bGt1XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJQcm9ibMOpbSB2wqBpdXpsdSBIVFJFRSBhZHJlc8OhxZllICVkOiAlQiBtw6EgxaFwYXRub3UgaGxvdWJrdSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIk5hbGV6ZW5hIGR1cGxpa8OhdG7DrSBwb2xvxb5rYSDigJ4lRG7igJwgdiAlcCAoJWkpLiAiCisKKyMgRklYTUU6IG5vLWMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4KKyMuIEAtZXhwYW5kZWQ6IFJlbmFtZSB0byAlcworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorbXNnaWQgIiIKKyJARSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuIgorIlJlbmFtZSB0byAlcyIKK21zZ3N0ciAiIgorIlBvbG/FvmthIOKAniVEbuKAnCB2wqAlcCAoJWkpIG5lbcOhIGplZGluZcSNbsO9IG7DoXpldiBzb3Vib3J1LlxuIgorIlDFmWVqbWVub3ZhdCBuYSAlcyIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5Cittc2dpZCAiIgorIkR1cGxpY2F0ZSBAZSAnJURuJyBmb3VuZC5cbiIKKyJcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuIgorIlxuIgorbXNnc3RyICIiCisiTmFsZXplbmEgZHVwbGlrw6F0bsOtIHBvbG/FvmthIOKAniVEbuKAnC5cbiIKKyJcdE96bmHEjXVqaSAlcCAoJWkpIHBybyBwxZllc3RhdmJ1LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Jsb2Nrc19oaSBwcm8gaXV6ZWwgJWkgKCVRKSBqZSAlTiwgbcSbbCBieSBiw710IG51bGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiTmVvxI1la8OhdmFuw70gYmxvayB2wqBpdXpsdSBIVFJFRSBhZHJlc8OhxZllICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisiUG9sb8W+a2Eg4oCeJURp4oCcIHbCoCVwICglaSkgb2RrYXp1amUgbmEgaXV6ZWwgJURpIHZlIHNrdXBpbsSbICVnLCBrZGUgamUgIgorIm5hc3RhdmVubyBfSU5PREVfVU5JTklULlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGZvdW5kIGluIGdyb3VwICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDgKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBmb3VuZCBpbiBAZyAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbiIKK21zZ3N0ciAiIgorIlBvbG/FvmthIOKAniVEbuKAnCB2wqAlcCAoJWkpIG9ka2F6dWplIG5hIGl1emVsICVEaSBuYWxlemVuw70gdmUgc2t1cGluxJsgJWcgb2JsYXN0aSAiCisibmVwb3XFvml0w71jaCBpdXpsxa8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsX2hpIHBybyBpdXplbCAlaSAoJVEpIGplICVOLCBtxJtsbyBieSBiw710IG51bGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiUHJvYmzDqW0gdsKgaXV6bHUgSFRSRUUgYWRyZXPDocWZZSAlZDoga2/FmWVub3bDvSB1emVsIG5lbsOtIHBsYXRuw71cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIlByb2Jsw6ltIHbCoGl1emx1IEhUUkVFIGFkcmVzw6HFmWUgJWQ6IGtvxZllbm92w70gdXplbCBuZW7DrSBwbGF0bsO9XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkl1emVsIGFkcmVzw6HFmWUgJWksICVCLCBwb3N1biAlTjogYWRyZXPDocWZIHBvxaFrb3plblxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVuY3J5cHRlZCBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIHRvbyBzaG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQ4Cittc2dpZCAiRW5jcnlwdGVkIEBFIGlzIHRvbyBzaG9ydC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjU1Cittc2dpZCAiUGFzcyAzOiBDaGVja2luZyBAZCBjb25uZWN0aXZpdHlcbiIKK21zZ3N0ciAiUHLFr2Nob2QgMzogS29udHJvbHVqZSBzZSBkb3Nhxb5pdGVsbm9zdCBhZHJlc8OhxZnFr1xuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2MAorbXNnaWQgIkByIG5vdCBhbGxvY2F0ZWQuICAiCittc2dzdHIgIktvxZllbm92w70gaXV6ZWwgbmVhbG9rb3bDoW4uICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiTmVuw60gbcOtc3RvIHYgYWRyZXPDocWZaSBsb3N0K2ZvdW5kLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIk5lcMWZaXBvamVuw70gYWRyZXPDocWZb3bDvSBpdXplbCAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL2xvc3QrZm91bmQgbmVuYWxlemVuby4gIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgc2hvdWxkIGJlICVxICglZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4MAorbXNnaWQgIicuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIgorbXNnc3RyICLigJ4uLuKAnCB2ICVRICglaSkgamUgJVAgKCVqKSwgbcSbbG8gYnkgYsO9dCAlcSAoJWQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1Cittc2dpZCAiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIgorbXNnc3RyICLFoHBhdG7DqSBuZWJvIG5lZXhpc3R1asOtY8OtIC9sb3N0K2ZvdW5kLiBOZW1vaHUgem5vdnUgcMWZaXBvaml0LlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIk5lbW9odSB6dsSbdMWhaXQgL2xvc3QrZm91bmQ6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJOZW1vaHUgem5vdnUgcMWZaXBvaml0ICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBwb2t1c3UgbmFqw610IC9sb3N0K2ZvdW5kOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Jsb2NrOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AYjogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19ibG9jazogJW0gcMWZaSBwb2t1c3Ugdnl0dm/FmWl0IGFkcmVzw6HFmSAvbG9zdCtmb3VuZFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2lub2RlOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AaTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19pbm9kZTogJW0gcMWZaSBwb2t1c3Ugdnl0dm/FmWl0IGFkcmVzw6HFmSAvbG9zdCtmb3VuZFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHDFmWkgcG9rdXN1IHZ5dHbDocWZZW7DrSBub3bDqWhvIGFkcmVzw6HFmWUgL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSBwxZlpIHrDoXBpc3UgYmxva3UgYWRyZXPDocWZZSBwcm8gL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSDDunByYXbEmyDEjWV0bm9zdGkgaXV6bHUgdsKgaXV6bHUgJWlcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5lbW9odSBvcHJhdml0IHJvZGnEjWUgaXV6bHUgJWk6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IGRpcmVjdG9yeSBlbnRyeVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBAZCBAZVxuIgorIlxuIgorbXNnc3RyICIiCisiTmVtb2h1IG9wcmF2aXQgcm9kacSNZSBpdXpsdSAlaTogTmVtb2h1IG5hasOtdCBwb2xvxb5rdSByb2RpxI1vdnNrw6lobyBhZHJlc8OhxZllXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgdnl0dsOhxZllbsOtIGtvxZllbm92w6lobyBhZHJlc8OhxZllICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgdnl0dsOhxZllbsOtIGFkcmVzw6HFmWUgL2xvc3QrZm91bmQgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgIktvxZllbm92w70gaXV6ZWwgbmVuw60gYWRyZXPDocWZOyBrb27EjcOtbS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc2MAorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSBAci5cbiIKK21zZ3N0ciAiTmVtb2h1IHBva3JhxI1vdmF0IGJleiBrb8WZZW5vdsOpaG8gaXV6bHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIG5lbsOtIGFkcmVzw6HFmSAoaW5vPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorIywgZnV6enkKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIk9icmF6ICglcykgamUgemHFoWlmcm92w6FuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiUHLFr2Nob2QgM0E6IE9wdGltYWxpenVqaSBhZHJlc8OhxZllXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAiTmVtb2h1IHZ5dHZvxZlpdCBpdGVyw6F0b3IgZGlyc190b19oYXNoOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIk5lbW9odSBvcHRpbWFsaXpvdmF0IGFkcmVzw6HFmSAlcSAoJWQpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgIk9wdGltYWxpenVqaSBhZHJlc8OhxZllOiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICJQcsWvY2hvZCA0OiBLb250cm9sdWrDrSBzZSBwb8SNdHkgb2RrYXrFr1xuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIk9zacWZZWzDvSBpdXplbCAlaSBzwqBudWxvdm91IGTDqWxrb3UuICIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQGkgJWlcbiIKK21zZ3N0ciAiT3NpxZllbMO9IGl1emVsICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgIlBvxI1ldCBvZGthesWvIG5hIGl1emVsICVpIGplICVJbCwgbcSbbCBieSBiw710ICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiVkFST1bDgU7DjTogQ0hZQkEgUMWYSSBQUk9HUkFNT1bDgU7DjSBFMkZTQ0shXG4iCisiXHRORUJPIE7EmktETyBOQVRWUkRMw50gKFZZKSBLT05UUk9MVUpFIFDFmElQT0pFTsOdIChQT1XFvcONVkFOw50pIFNZU1TDiU1cbiIKKyJcdFNPVUJPUsWuLlxuIgorImlub2RlX2xpbmtfaW5mb1slaV0gamUgJU4sIGlub2RlLmlfbGlua3NfY291bnQgamUgJUlsLiBNxJtseSBieSBiw710IHN0ZWpuw6khXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiUHLFr2Nob2QgNTogS29udHJvbHVqw60gc2Ugc291aHJubsOpIGluZm9ybWFjZSBza3VwaW5cbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJWw71wbMWIIG5hIGtvbmNpIGJpdG1hcHkgaXV6bMWvIG5lbsOtIG5hc3RhdmVuYS4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIlbDvXBsxYggbmEga29uY2kgYml0bWFweSBibG9rxa8gbmVuw60gbmFzdGF2ZW5hLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJSb3pkw61seSB2IGJpdG1hcMSbIGJsb2vFrzogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiUm96ZMOtbHkgdiBiaXRtYXDEmyBpdXpsxa86ICIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIlBvxI1ldCB2b2xuw71jaCBpdXpsxa8gdmUgc2t1cGluxJsgxI0u4oCvJWcgxaFwYXRuxJsgKCVpLCBzcG/EjXRlbm89JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiUG/EjWV0IGFkcmVzw6HFmcWvIHZlIHNrdXBpbsSbIMSNLuKAryVnIMWhcGF0bsSbICglaSwgc3BvxI10ZW5vPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTIzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiUG/EjWV0IHZvbG7DvWNoIGl1emzFryDFoXBhdG7EmyAoJWksIHNwb8SNdGVubz0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJQb8SNZXQgdm9sbsO9Y2ggYmxva8WvIHZlIHNrdXBpbsSbIMSNLuKAryVnIMWhcGF0bsSbICglYiwgc3BvxI10ZW5vPSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiUG/EjWV0IHZvbG7DvWNoIGJsb2vFryDFoXBhdG7EmyAoJWIsIHNwb8SNdGVubz0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKyJDSFlCQSBQxZhJIFBST0dSQU1PVsOBTsONOiBocmFuaWNlICglYiwgJWMpIGJpdG1hcHkgc3lzdMOpbXUgc291Ym9yxa8gKCMlTikgIgorIm5lb2Rwb3bDrWRhasOtIHZ5cG/EjXRlbsO9bSBocmFuaWPDrW0gYml0bWFweSAoJWksICVqKVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogZnVkZ2luZyBlbmQgb2YgYml0bWFwICglTilcbiIKK21zZ3N0ciAiSW50ZXJuw60gY2h5YmE6IHBva2HFvmVuw70ga29uZWMgYml0bWFweSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBrb3DDrXJvdsOhbsOtIGRvIG7DoWhyYWRuw60gYml0bWFweSBpdXpsxa86ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBrb3DDrXJvdsOhbsOtIGRvIG7DoWhyYWRuw60gYml0bWFweSBibG9rxa86ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIiIKKyJCbG9rKHkpIHNrdXBpbnkgJWcgamUvanNvdSBwb3XFvsOtdsOhbih5KSwgYWxlIHNrdXBpbmEgamUgb3puYcSNZW5hIGpha28gIgorIkJMT0NLX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICIiCisiSXV6ZWwvaXV6bHkgc2t1cGlueSAlZyBqZS9qc291IHBvdcW+w612w6FuKHkpLCBhbGUgc2t1cGluYSBqZSBvem5hxI1lbmEgamFrbyAiCisiSU5PREVfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY3JlYXRlIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwMQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICJabm92dSB2eXR2b8WZaXQgxb51cm7DoWwiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICJBa3R1YWxpem92YXQgw7pkYWplIG/CoGt2w7N0w6FjaCBwcm8gZHJ1aCBrdsOzdCAlTiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICIiCisiQ2h5YmEgcMWZaSBuYXN0YXZvdsOhbsOtIGluZm9ybWFjZSBvwqBrb250cm9sbsOtbSBzb3XEjXR1IHNrdXBpbnkgYmxva8WvOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvOiAlbVxuIgorbXNnc3RyICJDaHliYSBwxZlpIHrDoXBpc3Ugw7pkYWrFryBvwqBzb3Vib3JvdsOpbSBzeXN0w6ltdTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSBzeW5jaHJvbml6YWNpIHrDoXBpc8WvIG5hIHphxZnDrXplbsOtIMO6bG/FvmnFoXTEmzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAiQWt0dWFsaXpvdmF0IMO6ZGFqZSBvwqBrdsOzdMOhY2ggcHJvIGRydWgga3bDs3QgJU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgIk5lb2JzbG91xb5lbsO9IGvDs2QgY2h5YnkgKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiSUdOT1JPVsOBTk8iCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo3OQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKK21zZ3N0ciAiUG91xb5pdMOhIHBhbcSbxaU6ICVkLCBzdHLDoXZlbsO9IMSNYXM6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAidmVsaWtvc3QgaXV6bHU9JWRcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTE5Cittc2dpZCAid2hpbGUgc3RhcnRpbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAicMWZaSBzcG91xaF0xJtuw60gcHJvaGzDrWRreSBpdXpsxa8iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInDFmWkgcHJvdsOhZMSbbsOtIHByb2hsw61ka3kgaXV6bMWvIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgInDFmWkgdm9sw6Fuw60gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgcHJvIGl1emVsICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBmb3IgaW5vZGUgJWQiCittc2dzdHIgInDFmWkgdm9sw6Fuw60gZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgcHJvIGl1emVsICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzQKK21zZ2lkICJUcnVuY2F0aW5nIgorbXNnc3RyICJVc2Vrw6F2w6FtIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiTWHFvnUiCisKKyM6IGUyZnNjay91bml4LmM6NzcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisiXHRcdFstbHwtTCBiYWRfYmxvY2tzX2ZpbGVdIFstQyBmZF0gWy1qIGV4dGVybmFsX2pvdXJuYWxdXG4iCisiXHRcdFstRSBleHRlbmRlZC1vcHRpb25zXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlBvdcW+aXTDrTogJXMgWy1wYW55cmNkZnZ0REZWXSBbLWIgc3VwZXJibG9rXSBbLUIgdmVsaWtvc3RfYmxva3VdXG4iCisiXHRcdFstSSBibG9reV9pdXpsb3bDvWNoX2J1ZmZlcsWvXSBbLVAgdmVsaWtvc3RfenByYWNvdsOhdmFuw71jaF9pdXpsxa9dXG4iCisiXHRcdFstbHwtTCBzb3Vib3JfxaFwYXRuw71jaF9ibG9rxa9dIFstQyBmZF0gWy1qIGV4dGVybsOtX8W+dXJuw6FsXVxuIgorIlx0XHRbLUUgcm96xaHDrcWZZW7DqS1wxZllcMOtbmHEjWVdIHphxZnDrXplbsOtXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODIKK21zZ2lkICIiCisiXG4iCisiRW1lcmdlbmN5IGhlbHA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpYyByZXBhaXIgKG5vIHF1ZXN0aW9ucylcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlc3lzdGVtXG4iCisiIC15ICAgICAgICAgICAgICAgICAgIEFzc3VtZSBcInllc1wiIHRvIGFsbCBxdWVzdGlvbnNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQ2hlY2sgZm9yIGJhZCBibG9ja3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBiYWRibG9jayAiCisibGlzdFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZSBjaGVja2luZyBldmVuIGlmIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGNsZWFuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJOw6Fwb3bEm2RhIHYgbm91emk6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpY2vDoSBvcHJhdmEgKMW+w6FkbsOpIG90w6F6a3kpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE5lcHJvdsOhZMSbdCDFvsOhZG7DqSB6bcSbbnkgc3lzdMOpbXUgc291Ym9yxa9cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgUMWZZWRwb2tsw6FkYXQg4oCeYW5v4oCcIHXCoHbFoWVjaCBvdMOhemVrXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIEhsZWRhdCDFoXBhdG7DqSBibG9reSBhIHDFmWlkYXQgamUgZG8gc2V6bmFtdSDFoXBhdG7DvWNoICIKKyJibG9rxa9cbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgVnludXRpdCBrb250cm9sdSwgaSBrZHnFviBqZSBzeXN0w6ltIHNvdWJvcsWvIG96bmHEjWVuICIKKyLEjWlzdMO9XG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKKyMsIGZ1enp5Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiIC12ICAgICAgICAgICAgICAgICAgIELDvXQgcG9kcm9ibsO9XG4iCisiIC1iIHN1cGVyYmxvayAgICAgICAgIFBvdcW+w610IGFsdGVybmF0aXZuw60gc3VwZXJibG9rXG4iCisiIC1CIHZlbGlrb3N0X2Jsb2t1ICAgIFZudXRpdCB2ZWxpa29zdCBibG9rdSBwxZlpIGhsZWTDoW7DrSBzdXBlcmJsb2t1XG4iCisiIC1qIGV4dGVybsOtX8W+dXJuw6FsICAgIE5hc3Rhdml0IHVtw61zdMSbbsOtIGV4dGVybsOtaG8gxb51cm7DoWx1XG4iCisiIC1sIHNvdWJvcl/FoXBhdG7DvWNoX2Jsb2vFr1xuIgorIiAgICAgICAgICAgICAgICAgICAgICBQxZlpZGF0IGRvIHNlem5hbXUgxaFwYXRuw71jaCBibG9rxa9cbiIKKyIgLUwgc291Ym9yX8WhcGF0bsO9Y2hfYmxva8WvXG4iCisiICAgICAgICAgICAgICAgICAgICAgIE5hc3Rhdml0IHNlem5hbSDFoXBhdG7DvWNoIGJsb2vFr1xuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJSd1LyUndSBzb3Vib3LFryAoJTBkLCVkICUlIG5lc291dmlzbMO9Y2gpLCAlJ2xsdS8lJ2xsdSBibG9rxa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBwb3XFvml0w70gaXV6ZWwgKCUyLjJm4oCvJSUgesKgJXUpXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IHBvdcW+aXTDqSBpdXpseSAoJTIuMmbigK8lJcKgesKgJXUpXG4iCittc2dzdHJbMl0gIiIKKyJcbiIKKyIlMTJ1IHBvdcW+aXTDvWNoIGl1emzFryAoJTIuMmbigK8lJSB6wqAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgbmVzb3V2aXNsw70gc291Ym9yICglMGQsJWTigK8lJSlcbiIKK21zZ3N0clsxXSAiJTEydSBuZXNvdXZpc2zDqSBzb3Vib3J5ICglMGQsJWTigK8lJSlcbiIKK21zZ3N0clsyXSAiJTEydSBuZXNvdXZpc2zDvWNoIHNvdWJvcsWvICglMGQsJWTigK8lJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBuZXNvdXZpc2zDvSBhZHJlc8OhxZkgKCUwZCwlZOKAryUlKVxuIgorbXNnc3RyWzFdICIlMTJ1IG5lc291dmlzbMOpIGFkcmVzw6HFmWUgKCUwZCwlZOKAryUlKVxuIgorbXNnc3RyWzJdICIlMTJ1IG5lc291dmlzbMO9Y2ggYWRyZXPDocWZxa8gKCUwZCwlZOKAryUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgIFBvxI1ldCBpdXpsxa8gc8KgaW5kL2RpbmQvdGluZCBibG9reTogJSd1LyUndS8lJ3VcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODIKK21zZ2lkICIgICAgICAgICAgICAgRXh0ZW50IGRlcHRoIGhpc3RvZ3JhbTogIgorbXNnc3RyICIgICAgICAgICAgICAgSGlzdG9ncmFtIGhsb3Via3kgcm96c2FodTogIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiUxMmxsdSBwb3XFvml0w70gYmxvayAoJTIuMmbigK8lJSB6wqAlbGx1KVxuIgorbXNnc3RyWzFdICIlMTJsbHUgcG91xb5pdMOpIGJsb2t5ICglMi4yZuKAryUlIHrCoCVsbHUpXG4iCittc2dzdHJbMl0gIiUxMmxsdSBwb3XFvml0w71jaCBibG9rxa8gKCUyLjJm4oCvJSUgesKgJWxsdSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBiYWQgYmxvY2tcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBiYWQgYmxvY2tzXG4iCittc2dzdHJbMF0gIiUxMnUgY2h5Ym7DvSBibG9rXG4iCittc2dzdHJbMV0gIiUxMnUgY2h5Ym7DqSBibG9reVxuIgorbXNnc3RyWzJdICIlMTJ1IGNoeWJuw71jaCBibG9rxa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsYXJnZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGFyZ2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSB2ZWxrw70gc291Ym9yXG4iCittc2dzdHJbMV0gIiUxMnUgdmVsa8OpIHNvdWJvcnlcbiIKK21zZ3N0clsyXSAiJTEydSB2ZWxrw71jaCBzb3Vib3LFr1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBvYnnEjWVqbsO9IHNvdWJvclxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBvYnnEjWVqbsOpIHNvdWJvcnlcbiIKK21zZ3N0clsyXSAiIgorIlxuIgorIiUxMnUgb2J5xI1lam7DvWNoIHNvdWJvcsWvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJTEydSBhZHJlc8OhxZlcbiIKK21zZ3N0clsxXSAiJTEydSBhZHJlc8OhxZllXG4iCittc2dzdHJbMl0gIiUxMnUgYWRyZXPDocWZxa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgem5ha292w6kgemHFmcOtemVuw61cbiIKK21zZ3N0clsxXSAiJTEydSB6bmFrb3bDoSB6YcWZw616ZW7DrVxuIgorbXNnc3RyWzJdICIlMTJ1IHpuYWtvdsO9Y2ggemHFmcOtemVuw61cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGJsb2tvdsOpIHphxZnDrXplbsOtXG4iCittc2dzdHJbMV0gIiUxMnUgYmxva292w6EgemHFmcOtemVuw61cbiIKK21zZ3N0clsyXSAiJTEydSBibG9rb3bDvWNoIHphxZnDrXplbsOtXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiUxMnUgcm91cmFcbiIKK21zZ3N0clsxXSAiJTEydSByb3VyeVxuIgorbXNnc3RyWzJdICIlMTJ1IHJvdXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBvZGthelxuIgorbXNnc3RyWzFdICIlMTJ1IG9ka2F6eVxuIgorbXNnc3RyWzJdICIlMTJ1IG9ka2F6xa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IHN5bWJvbGlja8O9IG9ka2F6IgorbXNnc3RyWzFdICIlMTJ1IHN5bWJvbGlja8OpIG9ka2F6eSIKK21zZ3N0clsyXSAiJTEydSBzeW1ib2xpY2vDvWNoIG9ka2F6xa8iCisKKyM6IGUyZnNjay91bml4LmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rKVxuIgorbXNnaWRfcGx1cmFsICIgKCV1IGZhc3Qgc3ltYm9saWMgbGlua3MpXG4iCittc2dzdHJbMF0gIigldSByeWNobMO9IHN5bWJvbGlja8O9IG9ka2F6KVxuIgorbXNnc3RyWzFdICIoJXUgcnljaGzDqSBzeW1ib2xpY2vDqSBvZGthenkpXG4iCittc2dzdHJbMl0gIigldSByeWNobMO9Y2ggc3ltYm9saWNrw71jaCBvZGthesWvKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAiJTEydSBzb2NrZXRcbiIKK21zZ3N0clsxXSAiJTEydSBzb2NrZXR5XG4iCittc2dzdHJbMl0gIiUxMnUgc29ja2V0xa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBzb3Vib3JcbiIKK21zZ3N0clsxXSAiJTEydSBzb3Vib3J5XG4iCittc2dzdHJbMl0gIiUxMnUgc291Ym9yxa9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgInDFmWkgemppxaHFpW92w6Fuw60sIGplc3RsaSBqZSAlcyBwxZlpcG9qZW4uIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiUG96b3IhICVzIGplIHDFmWlwb2plbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiUG96b3IhICVzIHNlIHBvdcW+w612w6EuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIGplIHDFmWlwb2plbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyBzZSBwb3XFvsOtdsOhLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTmVtb2h1IHBva3JhxI1vdmF0LCBrb27EjcOtbS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyJQT1pPUiEhISBTb3Vib3JvdsO9IHN5c3TDqW0gamUgcMWZaXBvamVuLiBCdWRldGUtbGkgcG9rcmHEjW92YXQsXG4iCisiKioqWlDFrlNPQsONVEUgVsOBxb1Ow4kqKiogcG/FoWtvemVuw60gc3lzdMOpbXUgc291Ym9yxa8uXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJDaGNldGUgb3ByYXZkdSBwb2tyYcSNb3ZhdCIKKworIzogZTJmc2NrL3VuaXguYzoyNzgKK21zZ2lkICJjaGVjayBhYm9ydGVkLlxuIgorbXNnc3RyICJrb250cm9sYSBwxZllcnXFoWVuYS5cbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIG9ic2FodWplIHN5c3TDqW0gc291Ym9yxa8gcyBjaHliYW1pIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgbmVieWwgxI1pc3TEmyBvZHBvamVuIgorCisjOiBlMmZzY2svdW5peC5jOjM3NQorbXNnaWQgIiBwcmltYXJ5IHN1cGVyYmxvY2sgZmVhdHVyZXMgZGlmZmVyZW50IGZyb20gYmFja3VwIgorbXNnc3RyICIgdmxhc3Rub3N0aSBwcmltw6FybsOtaG8gc3VwZXJibG9rdSBzZSBsacWhw60gb2QgesOhbG/Fvm7DrWhvIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBieWwgcMWZaXBvamVuICV1a3LDoXQgYmV6IGtvbnRyb2x5IgorCisjOiBlMmZzY2svdW5peC5jOjM4NgorbXNnaWQgIiBoYXMgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdGltZSBpbiB0aGUgZnV0dXJlIgorbXNnc3RyICIgbcOhIMSNYXMgcG9zbGVkbsOtIGtvbnRyb2x5IHN5c3TDqW11IHNvdWJvcsWvIHbCoGJ1ZG91Y25vc3RpIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBuZWJ5bCBrb250cm9sb3bDoW4gJXUgZG7DrSIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAiLCBrb250cm9sYSB2eW51Y2VuYS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiJXM6IMSNaXN0w70sICUndS8lJ3Ugc291Ym9yxa8sICUnbGx1LyUnbGx1IGJsb2vFryIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChrb250cm9sYSBvZGxvxb5lbmEsIGLEm8W+w61tIG5hwqBiYXRlcmlpKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICIgKGtvbnRyb2xhIHBvIHDFmcOtxaF0w61tIHDFmWlwb2plbsOtKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiIChrb250cm9sYSB6YSAlbGQgcMWZaXBvamVuw60pIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICJDSFlCQTogTmVtb2h1IG90ZXbFmcOtdCAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAiTmVwbGF0bsOhIHZlcnplIEVBLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjY5MgorIywgZnV6enkKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiTmVwbGF0bsO9IHBhcmFtZXRyIHptxJtueSB2ZWxpa29zdGk6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJOZXpuw6Ftw70gcm96xaHDrcWZZW7DvSBwxZllcMOtbmHEjTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YWt0aWNrw6EgY2h5YmEgdsKga29uZmlndXJhxI1uw61tIHNvdWJvcnUgZTJmc2NrICglcywgxZnDoWRlayDEjS7CoCVkKVxuIgorIlx0JXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgdmFsaWRhdGluZyBmaWxlIGRlc2NyaXB0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkNoeWJhIHDFmWkgb3bEm8WZb3bDoW7DrSBwbGF0bm9zdGkgZGVza3JpcHRvcnUgc291Ym9ydSAlZDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjkKK21zZ2lkICJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIgorbXNnc3RyICJOZXBsYXRuw70gZGVza3JpcHRvciBzb3Vib3LFryBpbmZvcm1hY2UgbyBkb2tvbsSNZW7DrSIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKK21zZ2lkICJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iCittc2dzdHIgIk3Fr8W+ZSBiw710IHphZMOhbiBqZW4gamVkZW4gesKgcMWZZXDDrW5hxI3FryAtcC8tYSwgLW4gbmVibyAteS4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJQxZllcMOtbmHEjSAtdCBuZW7DrSB2IHTDqXRvIHZlcnppIGUyZnNjayBwb2Rwb3JvdsOhbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIk5lbHplIHZ5xZllxaFpdCDigJ4lc+KAnCIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIlDFmWVww61uYcSNZSAtbiBhIC1EIHNlIHZ6w6FqZW1uxJsgdnlsdcSNdWrDrS4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJQxZllcMOtbmHEjWUgLW4gYSAtYyBzZSB2esOhamVtbsSbIHZ5bHXEjXVqw60uIgorCisjOiBlMmZzY2svdW5peC5jOjk2MgorbXNnaWQgIlRoZSAtbiBhbmQgLWwvLUwgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiUMWZZXDDrW5hxI1lIC1uIGEgLWwvLUwgc2UgdnrDoWplbW7EmyB2eWx1xI11asOtLiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIlDFmWVww61uYcSNZSAtbiBhIC1EIHNlIHZ6w6FqZW1uxJsgdnlsdcSNdWrDrS4iCisKKyM6IGUyZnNjay91bml4LmM6OTkyCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJQxZllcMOtbmHEjWUgLW4gYSAtRCBzZSB2esOhamVtbsSbIHZ5bHXEjXVqw60uIgorCisjOiBlMmZzY2svdW5peC5jOjEwNDYKK21zZ2lkICJUaGUgLWMgYW5kIHRoZSAtbC8tTCBvcHRpb25zIG1heSBub3QgYmUgYm90aCB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4iCittc2dzdHIgIlDFmWVww61uYcSNZSAtYyBhIC1sLy1MIG5lbW9ob3UgYsO9dCBwb3XFvml0eSB6w6Fyb3ZlxYguXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcg4oCeJXPigJwgbmVuw60gY2Vsw71tIMSNw61zbGVtXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTEwMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSW52YWxpZCBub24tbnVtZXJpYyBhcmd1bWVudCB0byAtJWMgKFwiJXNcIilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5lcGxhdG7DvSBuZcSNw61zZWxuw70gYXJndW1lbnQgdcKgLSVjICjigJ4lc+KAnClcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgaW50ZXJ2YWwgaXMgJXUgc2Vjb25kcyBhbmQgdG90YWwgd2FpdCB0aW1lIGlzICV1IHNlY29uZHMuIFBsZWFzZSAiCisid2FpdC4uLlxuIgorbXNnc3RyICIiCisiSW50ZXJ2YWwgTU1QIGplICV1IHNla3VuZCBhIGNlbGtvdsOhIGRvYmEgxI1la8OhbsOtIGplICV1IHNla3VuZC4gUHJvc8OtbSAiCisib8Kgc3RycGVuw63igKZcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAicMWZaSBrb250cm9sZSBibG9rdSBNTVAiCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisiSnN0ZS1saSBzaSBqaXN0aSwgxb5lIHNvdWJvcm92w70gc3lzdMOpbSBuZW7DrSBwb3XFvsOtdsOhbiBuYSDFvsOhZG7DqW0gdXpsdSwgIgorInNwdXPFpXRlOlxuIgorIuKAnnR1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIFpBxZjDjVpFTsON4oCcXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIGJsb2t1IE1NUC4iCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlDFmWVwaXN1amkgZXhpc3R1asOtY8OtIHN5c3TDqW0gc291Ym9yxa8sIHRvdG8gbcWvxb5lIGLDvXQgb2TEjWluxJtubyBwxZnDrWthemVtOlxuIgorIiAgIGUydW5kbyAlcyAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgInDFmWkgcG9rdXN1IHNtYXphdCAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAicMWZaSBwb2t1c3UgbmFzdGF2aXQgc291Ym9yIHBybyBvZHZvbMOhbsOtIHptxJtuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICJDaHliYTogc3RhcsOhIHZlcnplIGtuaWhvdm55IGV4dDJmcyFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAicMWZaSBwb2t1c3UgaW5pY2lhbGl6b3ZhdCBwcm9ncmFtIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHRQb3XFvsOtdsOhbSAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAicHJvIGludGVyYWt0aXZuw60gb3ByYXZ5IHBvdMWZZWJ1amkgdGVybWluw6FsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyB6a291xaHDrW0gesOhbG/Fvm7DrSBibG9reeKAplxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICJOZXBsYXRuw70gc3VwZXJibG9rLCIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkRlc2tyaXB0b3J5IHNrdXBpbiB2eXBhZGFqw60gxaFwYXRuxJvigKYiCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyBwxZlpIHBvdcW+aXTDrSB6w6Fsb8W+bsOtY2ggYmxva8WvIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlczogbsOhdnJhdCBrwqBwxa92b2Ruw61tdSBzdXBlcmJsb2t1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJSZXZpemUgc3lzdMOpbXUgc291Ym9yxa8gamUgesWZZWptxJsgcMWZw61sacWhIHZ5c29rw6EgcHJvIHR1dG8gdmVyemkgZTJmc2NrLlxuIgorIihOZWJvIGplIHN1cGVyYmxvayBzeXN0w6ltdSBzb3Vib3LFryBwb8Wha296ZW4pXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIk1vaGwgYnkgdG90byBiw710IG9kZMOtbCBudWxvdsOpIGTDqWxreT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIKK21zZ3N0ciAiTXVzw610ZSBtw610IHDFmcOtc3R1cCAlcyBrIHN5c3TDqW11IHNvdWJvcsWvIG5lYm8gYsO9dCByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiUHJhdmTEm3BvZG9ibsSbIG5lZXhpc3R1asOtY8OtIG5lYm8gb2RrbMOhZGFjw60gemHFmcOtemVuw60/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICJTeXN0w6ltIHNvdWJvcsWvIHDFmWlwb2plbiBuZWJvIG90ZXbFmWVuIHbDvWx1xI1uxJsgamluw71tIHByb2dyYW1lbT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiUHJhdmTEm3BvZG9ibsSbIG5lZXhpc3R1asOtY8OtIHphxZnDrXplbsOtP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIkRpc2sgY2hyw6FuxJtuIHByb3RpIHrDoXBpc3U7IHBvdcW+aWp0ZSBwxZllcMOtbmHEjSAtbiBwcm8gcHJvdmVkZW7DrVxuIgorImtvbnRyb2x5IHphxZnDrXplbsOtIGplbiBwcm8gxI10ZW7DrS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjA0Cittc2dpZCAiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIgorbXNnc3RyICJTZcW+ZcWIdGUgbm92xJtqxaHDrSB2ZXJ6aSBlMmZzY2shIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICJwxZlpIGtvbnRyb2xlIMW+dXJuw6FsdSBleHQzIHBybyAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNjUxCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGggZmlsZSBzeXN0ZW0gY2hlY2siCittc2dzdHIgIk5lbW9odSBwb2tyYcSNb3ZhdCBiZXoga2/FmWVub3bDqWhvIGl1emx1LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisiVmFyb3bDoW7DrTogcMWZZXNrYWt1amkgb2Jub3Z1IMW+dXJuw6FsdSwgcHJvdG/FvmUgcHJvdsOhZMOtbSBrb250cm9sdSBzeXN0w6ltdVxuIgorInNvdWJvcsWvIGplbiBwcm8gxI10ZW7DrS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJuZW1vaHUgbmFzdGF2aXQgcMWZw616bmFreSBzdXBlcmJsb2t1IG5hICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICJTdXBlcmJsb2sgxb51cm7DoWx1IG5lbmFsZXplbiFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICLFvXVybsOhbCBvZHN0cmFuxJtuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJwxZlpIG9ibm92xJsgxb51cm7DoWx1IGV4dDMgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiVzIG3DoSBuZXBvZHBvcm92YW5vdSB2bGFzdG5vc3QoaSk6IgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIlczogJXMgcMWZaSDEjXRlbsOtIGl1emx1IMWhcGF0bsO9Y2ggYmxva8WvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiVG90byBuZXZ5cGFkw6EgZG9ixZllLCBhbGUgemt1c8OtbWUgcG9rcmHEjW92YXTigKZcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIKK21zZ3N0ciAiVnl0dsOhxZnDrSBzZSDFvnVybsOhbCAoJWQgYmxva8WvKTogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiIEhvdG92by5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiDFvnVybsOhbCBieSB6bm92dSB2eXR2b8WZZW7CoOKAkyBzb3Vib3JvdsO9IHN5c3TDqW0gc2Ugb3DEm3Qgc3RhbCBleHQzICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJwxZllcnXFoWVuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGUyZnNjayBjYW5jZWxlZC5cbiIKK21zZ3N0ciAiJXM6IGUyZnNjayBwxZllcnXFoWVuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAiU3BvdcWhdMOtbSBlMmZzY2sgb2QgemHEjcOhdGt14oCmXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2OQorbXNnaWQgIndoaWxlIHJlc2V0dGluZyBjb250ZXh0IgorbXNnc3RyICJwxZlpIG51bG92w6Fuw60ga29udGV4dHUiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogU1lTVMOJTSBTT1VCT1LFriBCWUwgWk3Emk7Emk4gKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIgorbXNnc3RyICIlczogKioqKiogWk5PVlUgWkFWRcSOVEUgTElOVVggKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBWQVJPVsOBTsONOiBTeXN0w6ltIHNvdWJvcsWvIG3DoSBzdMOhbGUgY2h5YnkgKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJhQSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8YT4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKGEvbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJwxZllcnXFoWVubyFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAiYW5vXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAibmVcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyBub1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IG5lXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8geWVzXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gYW5vXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJhbm8iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgIm5lIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgImUyZnNja19yZWFkX2JpdG1hcHM6IG5lcGxhdG7DvSBibG9rKHkpIGJpdG1hcHkgcHJvICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgIsSNdGVuw60gYml0bWFwIGl1emzFryBhIGJsb2vFryIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAicMWZaSBvcGFrb3ZhbsOpbSBwb2t1c3UgbmHEjcOtc3QgYml0bWFweSBwcm8gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzMxCittc2dpZCAid3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyIKK21zZ3N0ciAiesOhcGlzdSBiaXRtYXAgYmxva8WvIGEgaXV6bMWvIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICJwxZlpIHDFmWVwaXN1IGJpdG1hcCBibG9rxa8gYSBpdXpsxa8gcHJvICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IE5FT8SMRUvDgVZBTsOBIE5FS09OWklTVEVOQ0U7IFNQVVPFpFRFIGZzY2sgUlXEjE7Emi5cbiIKKyJcdCh0ai4gYmV6IHDFmWVww61uYcSNxa8gLWEgbmVibyAtcClcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICJQb3XFvml0w6EgcGFtxJvFpTogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHUsICIKK21zZ3N0ciAiUG91xb5pdMOhIHBhbcSbxaU6ICVsdSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICLEjWFzOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgInN0csOhdmVuw70gxI1hczogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgInDFmWkgxI10ZW7DrSBpdXpsdSAlbHUgdsKgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJwxZlpIHrDoXBpc3UgaXV6bHUgJWx1IHbCoCVzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKyJORcSMRUtBTsOBIE5FS09OWklTVEVOQ0U6IHNvdWJvcm92w70gc3lzdMOpbSBqZSBtxJtuxJtuLCB6YXTDrW1jbyBmc2NrIGLEm8W+w60uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzIKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJob3Rvdm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgIgorIm1heF9iYWRfYmxvY2tzXVxuIgorIiAgICAgICBbLXAgbnVtX3Bhc3Nlc10gWy10IHRlc3RfcGF0dGVybiBbLXQgdGVzdF9wYXR0ZXJuIFsuLi5dXV1cbiIKKyIgICAgICAgZGV2aWNlIFtsYXN0X2Jsb2NrIFtmaXJzdF9ibG9ja11dXG4iCittc2dzdHIgIiIKKyJQb3XFvml0w606ICVzIFstYiB2ZWxpa29zdF9ibG9rdV0gWy1pIHZzdHVwbsOtX3NvdWJvcl0gWy1vIHbDvXN0dXBuw61fc291Ym9yXVxuIgorIiAgIFstc3Z3bmZdIFstYyBibG9rxa9fbmFqZWRub3VdIFstZCDEjWluaXRlbF96cG/FvmTEm27DrV9tZXppX8SNdGVuw61taV1cbiIKKyIgICBbLWUgbWF4X8WhcGF0bsO9Y2hfYmxva8WvXSBbLXAgcG/EjWV0X3Byxa9jaG9kxa9dXG4iCisiICAgWy10IHprdcWhZWJuw61fdnpvcmVrIFstdCB6a3XFoWVibsOtX3Z6b3JlayBb4oCmXV1dXG4iCisiICAgemHFmcOtemVuw60gW3Bvc2xlZG7DrV9ibG9rIFtwcnZuw61fYmxva11dXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyIlczogUMWZZXDDrW5hxI1lIOKAni1u4oCcIGEg4oCeLXfigJwgc2UgdnrDoWplbW7EmyB2eWx1xI11asOtLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZuKAryUlIGhvdG92bywgJXMgdXBseW51bG8uICglZC8lZC8lZCBjaHliKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAiWmtvdcWhw61tIHPCoG7DoWhvZG7DvW0gdnpvcmtlbTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM0NgorbXNnaWQgIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IgorbXNnc3RyICJaa291xaHDrW0gc2UgdnpvcmtlbSAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAicMWZaSBwb3N1bnUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAiRGl2bsOhIGhvZG5vdGEgKCVsZCkgdiBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAicMWZaSBleHQyZnNfc3luY19kZXZpY2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAicMWZaSB6YcSNw6F0a3UgaXRlcmFjZSB2IHNlem5hbXUgxaFwYXRuw71jaCBibG9rxa8iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJwxZlpIGFsb2thY2kgdnlyb3Zuw6F2YWPDrWNoIHBhbcSbdGkiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIk92xJvFmXVqw60gc2UgYmxva3kgJWx1IGHFviAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJIbGVkYWrDrSBzZSDFoXBhdG7DqSBibG9reSB2IHJlxb5pbXUgamVuIHBybyDEjXRlbsOtXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJIbGVkYWrDrSBzZSDFoXBhdG7DqSBibG9reSAodGVzdCBqZW4gcHJvIMSNdGVuw60pOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTM2IG1pc2MvYmFkYmxvY2tzLmM6NjQzIG1pc2MvYmFkYmxvY2tzLmM6Njg1CisjOiBtaXNjL2JhZGJsb2Nrcy5jOjgzMgorbXNnaWQgIlRvbyBtYW55IGJhZCBibG9ja3MsIGFib3J0aW5nIHRlc3RcbiIKK21zZ3N0ciAiUMWZw61sacWhIG1ub2hvIMWhcGF0bsO9Y2ggYmxva8WvLCBwxZllcnXFoXVqaSB0ZXN0XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIkhsZWRhasOtIHNlIMWhcGF0bsOpIGJsb2t5IHYgcmXFvmltdSDEjXRlbsOtIGkgesOhcGlzXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICJPZCBibG9rdSAlbHUgZG8gJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIsSMdGVuw60gYSBwb3Jvdm7DoW7DrTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4MQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAiSGxlZGFqw60gc2UgxaFwYXRuw6kgYmxva3kgdiBuZWRlc3RydWt0aXZuw61tIHJlxb5pbXUgxI10ZW7DrSBpIHrDoXBpc1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICJIbGVkYWrDrSBzZSDFoXBhdG7DqSBibG9reSAobmVkZXN0cnVrdGl2bsOtIHRlc3QgxI10ZW7DrSBpIHrDoXBpc3UpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKyJcbiIKKyJaYWNoeWNlbm8gcMWZZXJ1xaFlbsOtLCB1a2zDrXrDrSBzZVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgInDFmWkgdGVzdG92YWPDrW0gesOhcGlzdSBkYXQsIGJsb2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBqZSBwxZlpcG9qZW47ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgImJhZGJsb2NrcyBwxZllc3RvIHZ5bnVjZW4uIERvdWbDoW0sIMW+ZSAvZXRjL210YWIgamUgbmVzcHLDoXZuw70uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAibmVuw60gYmV6cGXEjW7DqSBzcG91xaF0xJt0IGJhZGJsb2NrcyFcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIiVzIGplIHpqZXZuxJsgc3lzdMOpbWVtIHByw6F2xJsgcG91xb7DrXbDoW47ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgImJhZGJsb2NrcyBwxZllc3RvIHZ5bnVjZW4uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgIm5lcGxhdG7DvSAlc8Kg4oCTICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIk5lbW9odSBhbG9rb3ZhdCBwYW3Em8WlIHBybyB6a3XFoWVibsOtX3Z6b3Jla8Kg4oCTICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExODQKK21zZ2lkICJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlIHNwZWNpZmllZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiVsKgcmXFvmltdSBwb3Vow6lobyDEjXRlbsOtIGx6ZSB6YWRhdCBuZWp2w73FoWUgamVkZW4gemt1xaFlYm7DrV92em9yZWsiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE5MAorbXNnaWQgIlJhbmRvbSB0ZXN0X3BhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIlbCoHJlxb5pbXUgcG91aMOpaG8gxI10ZW7DrSBuZW7DrSBuw6Fob2Ruw70gemt1xaFlYm7DrV92em9yZWsgcMWZw61wdXN0bsO9IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorIk5lbW9odSB6amlzdGl0IHZlbGlrb3N0IHphxZnDrXplbsOtOyBtdXPDrXRlIHZlbGlrb3N0XG4iCisiemFkYXQgcnXEjW7Em1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICJwxZlpIHBva3VzdSB6amlzdGl0IHZlbGlrb3N0IHphxZnDrXplbsOtIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICJwb3NsZWRuw60gYmxvayIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjIxCittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgInBydm7DrSBibG9rIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgIsWhcGF0bsO9IHBvxI3DoXRlxI1uw60gYmxvayAoJWxsdSk6IG11c8OtIGLDvXQgbWVuxaHDrSBuZcW+ICVsbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICLFoXBhdG7DvSBrb25jb3bDvSBibG9rICglbGx1KTogbXVzw60gc2UgamVkbmF0IG/CoDMyYml0b3ZvdSBob2Rub3R1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyODcKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IgorbXNnc3RyICJwxZlpIHZ5dHbDocWZZW7DrSBzZXpuYW0gxaFwYXRuw71jaCBibG9rxa8gdiBwYW3Em3RpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAidnN0dXBuw60gc291Ym9ywqDigJMgY2h5Ym7DvSBmb3Jtw6F0IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAicMWZaSBwxZlpZMOhdsOhbsOtIGRvIHNlem5hbXUgxaFwYXRuw71jaCBibG9rxa8gdiBwYW3Em3RpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgIlByxa9jaG9kIGRva29uxI1lbiwgbmFsZXplbm8gJXUgxaFwYXRuw71jaCBibG9rxa8gKCVkLyVkLyVkIGNoeWIpLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYgdmVyc2lvbl0gZmlsZXMuLi5cbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLVJWZl0gWy0rPWFBY0NkRGVpanNTdFR1XSBbLXYgdmVyemVdIHNvdWJvcnnigKZcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAixaFwYXRuw6EgdmVyemXCoOKAkyAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgIsWhcGF0bsOhIHZlcnplwqDigJMgJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgInDFmWkgcG9rdXN1IHN0YXQgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgInDFmWkgxI10ZW7DrSBwxZnDrXpuYWvFryAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMzEgbWlzYy9jaGF0dHIuYzoyNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZ3Mgb2YgJXMgc2V0IGFzICIKK21zZ3N0ciAiUMWZw616bmFreSAlcyBuYXN0YXZlbnkgbmEgIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJwxZlpIG5hc3Rhdm92w6Fuw60gcMWZw616bmFrxa8gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJWZXJ6ZSAlcyBuYXN0YXZlbmEgbmEgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAicMWZaSBuYXN0YXZvdsOhbsOtIHZlcnplICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlZlcnplICVzIG5hc3RhdmVuYSBuYSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAicMWZaSBuYXN0YXZvdsOhbsOtIHZlcnplICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICJOZW1vaHUgYWxva292YXQgcHJvbcSbbm91IHBhdGggdiBjaGF0dHJfZGlyX3Byb2MiCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0gamUgbmVzbHXEjWl0ZWxuw6kgcyAtIGEgK1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICJNdXPDrXRlIHBvdcW+w610ICctdicsID0sIC0gbmVibyArXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgInDFmWkgxI10ZW7DrSBpdXpsdSAlbHUgdsKgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgInDFmWkgenbEm3TFoW92w6Fuw60gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICJwxZlpIG90ZXbDrXLDoW7DrSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IGl1emx1ICVsdSB2wqAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgInDFmWkgcG9rdXN1IHprcsOhdGl0ICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSAldSIKK21zZ3N0ciAicMWZaSB6YWjDoWplbsOtIHByxa9jaG9kdSBpdXpseSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAicMWZaSBhbG9rYWNpIHZ5cm92bsOhdmFjw60gcGFtxJt0aSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgInDFmWkgxI10ZW7DrSBwxZnDrXpuYWvFryAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IGl1emx1ICVsdSB2wqAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgInDFmWkgcHJvdsOhZMSbbsOtIHByb2hsw61ka3kgaXV6bMWvIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInDFmWkgYWxva2FjaSB2eXJvdm7DoXZhY8OtIHBhbcSbdGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInDFmWkgxI10ZW7DrSBpdXpsdSAlbHUgdsKgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIHDFmcOtem5ha8WvICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgInDFmWkgdnlobGVkw6F2w6Fuw60gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJwxZlpIHZ5dHbDocWZZW7DrSBrb8WZZW5vdsOpaG8gYWRyZXPDocWZZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgInDFmWkgb3RldsOtcsOhbsOtICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAicMWZaSBvdGV2w61yw6Fuw60gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgInDFmWkgcG9rdXN1IHN0YXQgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzUxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICJwxZlpIMSNdGVuw60gaXV6bHUgJWx1IHbCoCVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJBbG9rYWNlIHBhbcSbdGkgc2VsaGFsYSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJwxZlpIHBva3VzdSB6bcSbbml0IHZlbGlrb3N0ICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgInDFmWkgesOhcGlzdSBpdXpsdSAlbHUgdsKgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzk2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICJwxZlpIHrDoXBpc3UgaXV6bHUgJWx1IHbCoCVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgInDFmWkgb3RldsOtcsOhbsOtICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgyNgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiCittc2dzdHIgIsSNdGVuw60gYWRyZXPDocWZb3bDqWhvIGJsb2t1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAicMWZaSBuYXN0YXZvdsOhbsOtIHZlcnplICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAicMWZaSBuYXN0YXZvdsOhbsOtIHDFmcOtem5ha8WvICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAicMWZaSBzcG91xaF0xJtuw60gcHJvaGzDrWRreSBpdXpsxa8iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLWJmaGl4Vl0gWy1vIHN1cGVyYmxvY2s9Tl0gWy1vIGJsb2Nrc2l6ZT1OXSB6YcWZw616ZW7DrVxuIgorCisjIFVuaXQgbmFtZSBhZnRlciBudW1lcmljIHZhbHVlCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9rxa8iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAiY2x1c3RlcsWvIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIlNrdXBpbmEgJWx1OiAoQmxva3kgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiAgS29udHJvbG7DrSBzb3XEjWV0IDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoT8SMRUvDgVbDgU5PIDB4JTA0eCkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAlcyBzdXBlcmJsb2NrIGF0ICIKK21zZ3N0ciAiICAlcyBzdXBlcmJsb2sgdiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJQcmltw6FybsOtIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJaw6Fsb8W+bsOtIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM4Cittc2dpZCAiLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAiCittc2dzdHIgIiwgRGVza3JpcHRvcnkgc2t1cGluIHYgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIFJlemVydm92YW7DqSBHRFQgYmxva3kgbmEgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQ5Cittc2dpZCAiIEdyb3VwIGRlc2NyaXB0b3IgYXQgIgorbXNnc3RyICIgRGVza3JpcHRvciBza3VwaW55IHYgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjU1Cittc2dpZCAiICBCbG9jayBiaXRtYXAgYXQgIgorbXNnc3RyICIgIEJpdG1hcGEgYmxva8WvIHYgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYwIG1pc2MvZHVtcGUyZnMuYzoyNzEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiwgY3N1bSAweCUwOHgiCittc2dzdHIgIiAgS29udHJvbG7DrSBzb3XEjWV0IDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NQorbXNnaWQgIiIKKyJcbiIKKyIgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKKyMsIGZ1enp5Cittc2dpZCAiIElub2RlIGJpdG1hcCBhdCAiCittc2dzdHIgIiwgQml0bWFwYSBpdXpsxa8gdiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIFRhYnVsa2EgaXV6bMWvIHYgIgorCisjIFRoZSBzZWNvbmQgc3RyaW5nIGlzIGkxOG5lZCBgYmxvY2tzJyBvciBgY2x1c3RlcnMnCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSB2b2xuw71jaCAlcywgJXUgdm9sbsO9Y2ggaXV6bMWvLCAldSBhZHJlc8OhxZnFryVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsICV1IG5lcG91xb5pdMO9Y2ggaXV6bMWvXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODkKK21zZ2lkICIgIEZyZWUgYmxvY2tzOiAiCittc2dzdHIgIiAgVm9sbsOpIGJsb2t5OiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgVm9sbsOpIGl1emx5OiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAicMWZaSB0aXNrdSBzZXpuYW11IMWhcGF0bsO9Y2ggYmxva8WvIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICLFoHBhdG7DqSBibG9reTogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJwxZlpIMSNdGVuw60gaXV6bHUgxb51cm7DoWx1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJwxZlpIG90ZXbDrXLDoW7DrSBpdXpsdSDFvnVybsOhbHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgInDFmWkgxI10ZW7DrSBzdXBlcmJsb2t1IMW+dXJuw6FsdSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiTWFnaWNrw6kgxI3DrXNsbyBzdXBlcmJsb2t1IMW+dXJuw6FsdSBqZSDFoXBhdG7EmyFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiVmxhc3Rub3N0aSDFvnVybsOhbHU6ICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIlZlbGlrb3N0IMW+dXJuw6FsdTogICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIkTDqWxrYSDFvnVybsOhbHU6ICAgICAgICAgICAgJXVcbiIKKyJTZWt2ZW5jZSDFvnVybsOhbHU6ICAgICAgICAgMHglMDh4XG4iCisiWmHEjcOhdGVrIMW+dXJuw6FsdTogICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIkNoeWJvdsOpIMSNw61zbG8gxb51cm7DoWx1OiAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJwxZlpIMSNdGVuw60gc3VwZXJibG9rdSDFvnVybsOhbHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICJOZW1vaHUgbmFqw610IG1hZ2lja8OhIMSNw61zbGEgc3VwZXJibG9rdSDFvnVybsOhbHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIlZlbGlrb3N0IGJsb2t1IMW+dXJuw6FsdTogICAldVxuIgorIkTDqWxrYSDFvnVybsOhbHU6ICAgICAgICAgICAgJXVcbiIKKyJQcnZuw60gYmxvayDFvnVybsOhbHU6ICAgICAgICV1XG4iCisiU2VrdmVuY2Ugxb51cm7DoWx1OiAgICAgICAgIDB4JTA4eFxuIgorIlphxI3DoXRlayDFvnVybsOhbHU6ICAgICAgICAgICV1XG4iCisiUG/EjWV0IHXFvml2YXRlbMWvIMW+dXJuw6FsdTogICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICJVxb5pdmF0ZWzDqSDFvnVybsOhbHU6ICAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiTmVtb2h1IGFsb2tvdmF0IHBhbcSbxaUgcHJvIHpwcmFjb3bDoW7DrSBwxZllcMOtbmHEjcWvIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk5lcGxhdG7DvSBwYXJhbWV0ciBzdXBlcmJsb2s6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gcGFyYW1ldHIgYmxvY2tzaXplICh2ZWxpa29zdF9ibG9rdSk6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKyJcbiIKKyJaYWTDoW4oeSkgxaFwYXRuw70ow6kpIHDFmWVww61uYcSNKGUpOiAlc1xuIgorIlxuIgorIlJvesWhw63FmWVuw6kgcMWZZXDDrW5hxI1lIGpzb3Ugb2RkxJtsZW55IMSNw6Fya2FtaSBhIG1vaG91IG3DrXQgYXJndW1lbnQsIGt0ZXLDvSBqZVxuIgorIlx0b2RkxJtsZW4gem5hbcOpbmtlbSByb3Zuw6Egc2UgKOKAnj3igJwpLlxuIgorIlxuIgorIlBsYXRuw6kgcm96xaHDrcWZZW7DqSBwxZllcMOtbmHEjWUganNvdTpcbiIKKyJcdHN1cGVyYmxvY2s9PMSNw61zbG8gc3VwZXJibG9rdT5cbiIKKyJcdGJsb2Nrc2l6ZT08dmVsaWtvc3QgYmxva3U+XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2NDYgbWlzYy9ta2UyZnMuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXNcbiIKK21zZ3N0ciAiXHRQb3XFvsOtdsOhbSAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJOZW1vaHUgbmFqw610IHBsYXRuw70gc3VwZXJibG9rIHN5c3TDqW11IHNvdWJvcsWvLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzI2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gYml0bWFwcyEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAlczogZXJyb3IgcmVhZGluZyBiaXRtYXBzOiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICVzOiBjaHliYSBwxZlpIMSNdGVuw60gYml0bWFwOiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLXJ8UV0gWy1mcl0gemHFmcOtemVuw60gc291Ym9yX3Nfb2JyYXplbVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiAgICAgICAlcyAtSSB6YcWZw616ZW7DrSBzb3Vib3Jfc19vYnJhemVtXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAlcyAtcmEgWy1jZm5wXSBbLW8gcG96aWNlX3pkcm9qZV0gWyAtTyBwb3ppY2VfY8OtbGVdXG4iCisiICAgICAgICAgIHpkcm9qb3bDvV9zb3Vib3JvdsO9X3N5c3TDqW0gW2PDrWxvdsO9X3NvdWJvcm92w71fc3lzdMOpbV1cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICJwxZlpIGFsb2thY2kgdnlyb3Zuw6F2YWPDrSBwYW3Em3RpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIlphcGlzdWplIHNlIGJsb2sgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJjaHliYSBwxZlpIHrDoXBpc3UgYmxva3UgJWxsdSIKKworIzogbWlzYy9lMmltYWdlLmM6MTk2Cittc2dpZCAiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIgorbXNnc3RyICJjaHliYSB2ZSBmdW5rY2kgZ2VuZXJpY193cml0ZSgpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiQ2h5YmE6IGhsYXZpxI1rYSBqZSB2xJt0xaHDrSBuZcW+IHdydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiTmVtb2h1IGFsb2tvdmF0IHZ5cm92bsOhdmFjw60gcGFtxJvFpSBobGF2acSNa3lcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJwxZlpIHrDoXBpc3Ugc3VwZXJibG9rdSIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IHRhYnVsa3kgaXV6bMWvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNjMKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IGJpdG1hcHkgYmxva8WvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IGJpdG1hcHkgaXV6bMWvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJQb8Wha296ZW7DvSBibG9rIGFkcmVzw6HFmWUgJWxsdTogY2h5Ym7DvSByZWNfbGVuICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIlBvxaFrb3plbsO9IGJsb2sgYWRyZXPDocWZZSAlbGx1OiBjaHlibsO9IG5hbWVfbGVuICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUvJWxsdSBibG9rxa8gKCVk4oCvJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIktvcMOtcnVqZSBzZSAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIiIKKyJaYXN0YXZlbsOtIG5hIHRvbXRvIG3DrXN0xJsgem5pxI3DrSBzb3Vib3JvdsO9IHN5c3TDqW0uIEpzdGUtbGkgc2kgamlzdGksXG4iCisidnl2b2xlanRlIHDFmWVydcWhZW7DrSB6bm92dVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiICVzIHJlbWFpbmluZyBhdCAlLjJmIE1CL3MiCittc2dzdHIgIiAlcyB6YsO9dsOhIHDFmWkgJS4yZuKAr01CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY2NCBtaXNjL2UyaW1hZ2UuYzoxMTkxCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHJlYWRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiY2h5YmEgcMWZaSDEjXRlbsOtIGJsb2t1ICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIlprb3DDrXJvdsOhbm8gJWxsdS8lbGx1IGJsb2vFryAoJWTigK8lJSkgdsKgJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICJwxZlpICUuMmbigK9NQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICJwxZlpIGFsb2thY2kgdGFidWxreSBsMSIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAicMWZaSBhbG9rYWNpIHZ5cm92bsOhdmFjw61jaCBwYW3Em3RpIGRydWjDqSDDunJvdm7EmyIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKyJQb3pvcjogVsKgb2thbcW+aWt1IHZrbMOhZMOhbsOtIHZ5cm92bsOhdmFjw60gcGFtxJt0aSBzdMOhbGUganNvdSB2ZSB2eXJvdm7DoXZhY8OtICIKKyJwYW3Em3RpIHRhYnVsa3ksIGNvxb4gdmVkZSBrZSB6dHLDoXTEmyBkYXQgYSBvYnJheiBtb8W+bsOhIGJ1ZGUgcG/FoWtvemVuw70uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNDgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgInDFmWkgYWxva2FjaSBleHQyX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgInDFmWkgaW5pY2lhbGl6YWNpIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICJDaHliYSB2wqBwcm9ncmFtdTogdnl0dm/FmWVueSBuw6Fzb2Juw6kgYmxva3kgcG9zbG91cG7DvWNoIHBvxI10xa8gb2RrYXrFryFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJwxZlpIGFsb2thY2kgYml0bWFweSBibG9rxa8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAicMWZaSBhbG9rYWNpIGJpdG1hcHkgemF0ZW3FiG92YWPDrWNoIGJsb2vFryIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4OAorbXNnaWQgIlNjYW5uaW5nIGlub2Rlcy4uLlxuIgorbXNnc3RyICJIbGVkYWrDrSBzZSBpdXpseeKAplxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICJOZWx6ZSBhbG9rb3ZhdCB2eXJvdm7DoXZhY8OtIHBhbcSbxaUgYmxva3UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIKK21zZ3N0ciAicMWZaSBwcm9jaMOhemVuw60gaXV6bHUgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICJPYnnEjWVqbsOpIGEgUUNPVzIgb2JyYXp5IG5lbHplIG5haW5zdGFsb3ZhdCIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiY2h5YmEgcMWZaSDEjXRlbsOtIGJpdG1hcCIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgInDFmWkgb3RldsOtcsOhbsOtIHNvdWJvcnUgemHFmcOtemVuw60iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MzAKK21zZ2lkICJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIgorbXNnc3RyICJwxZlpIG9ibm92b3bDoW7DrSB0YWJ1bGt5IG9icmF6dSIKKworIzogbWlzYy9lMmltYWdlLmM6MTUyNworbXNnaWQgIi1hIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggcmF3IG9yIFFDT1cyIGltYWdlcy4iCittc2dzdHIgIlDFmWVww61uYcSNIC1hIGx6ZSBwb3XFvsOtdCBqZW4gc8KgcyBvYnnEjWVqbsO9bWkgbmVibyBRQ09XMiBvYnJhenkuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIlBvemljZSBqc291IGRvdm9sZW55IGplbiB1IG9iecSNZWpuw71jaCBvYnJhesWvLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzOAorbXNnaWQgIk1vdmUgbW9kZSBpcyBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiUmXFvmltIHDFmWVzdW51IGplIGRvdm9sZW4gamVuIHXCoG9iecSNZWpuw71jaCBvYnJhesWvLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiUmXFvmltIHDFmWVzdW51IHZ5xb5hZHVqZSByZcW+aW0gdsWhZWNoIGRhdC4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJrb250cm9sYSBuYSBwxZlpcG9qZW7DrSIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlBvdcW+aXTDrSBlMmltYWdlIG5hIHNvdWJvcm92w70gc3lzdMOpbSBwxZlpcG9qZW7DvSBwcm8gesOhcGlzIG3Fr8W+ZSB2w6lzdFxuIgorImvCoG5la29uemlzdGVudG7DrW11IG9icmF6dSwga3RlcsO9IHNlIG5laG9kw60gbmEgbGFkxJtuw60uXG4iCisiUG9rdWQgdGFrIG9wcmF2ZHUgY2hjZXRlLCBwb3XFvmlqdGUgcMWZZXDDrW5hxI0gLWYuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiUUNPVzIgb2JyYXogbmVsemUgemFwc2F0IG5hIHN0YW5kYXJkbsOtIHbDvXN0dXAhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIk5lbHplIHpqaXN0aXQgw7pkYWplIG/CoHbDvXN0dXB1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBjb21wcmVzc2VkXG4iCittc2dzdHIgIk9icmF6ICglcykgamUga29tcHJpbW92w6FuLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIk9icmF6ICglcykgamUgemHFoWlmcm92w6FuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICJwxZlpIHBva3VzdSBwxZlldsOpc3Qgb2JyYXogcWNvdzIgKCVzKSBkbyBiaW7DoXJuw60gb2JyYXp1ICglcykiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIlDFmWVww61uYcSNIC1jIGplIHBvZHBvcm92w6FuIGplbiB2wqBvYnnEjWVqbsOpbSByZcW+aW11XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICJQxZllcMOtbmHEjSAtYyBuZW7DrSBwxZlpIHrDoXBpc3UgbmEgc3RhbmRhcmRuw60gdsO9c3R1cCBwb2Rwb3JvdsOhblxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjU3Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBjaGVja19idWYiCittc2dzdHIgInDFmWkgYWxva2FjaSBjaGVja19idWYiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIlDFmWVww61uYcSNIC1wIGplIHBvZHBvcm92w6FuIGplbiB2wqBvYnnEjWVqbsOpbSByZcW+aW11XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCBibG9rxa8gamnFviBvYnNhaHVqZSBkYXRhLCBrdGVyw6Egc2UgbcSbbGEgemtvcMOtcm92YXRcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICJQb3XFvml0w606ICVzIGRpc2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IG9wZW4gJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogbmVtb2h1IG90ZXbFmcOtdCAlc1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IG5lbW9odSBzZSBwb3N1bm91dCBuYSBzdXBlcmJsb2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGNoeWJhIHDFmWkgxI10ZW7DrSBzdXBlcmJsb2t1XG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogbmVuw60gc3lzdMOpbSBzb3Vib3LFryBleHQyXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIlZhcm92w6Fuw606IGptZW5vdmthIHDFmcOtbGnFoSBkbG91aMOhLCB6a3JhY3VqaS5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDogbmVtb2h1IHNlIHphc2UgcG9zdW5vdXQgbmEgc3VwZXJibG9rXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwNQorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciB3cml0aW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogY2h5YmEgcMWZaSB6w6FwaXN1IHN1cGVyYmxva3VcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTE3IG1pc2MvdHVuZTJmcy5jOjE1OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6IGUybGFiZWwgZGV2aWNlIFtuZXdsYWJlbF1cbiIKK21zZ3N0ciAiUG91xb5pdMOtOiBlMmxhYmVsIHphxZnDrXplbsOtIFtub3bDoWptZW5vdmthXVxuIgorCisjOiBtaXNjL2UydW5kby5jOjExOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICJQb3XFvml0w606ICVzIDxUUkFOU0FLxIxOw41fU09VQk9SPiA8U09VQk9ST1bDnV9TWVNUw4lNPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworIywgZnV6enkKK21zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gc3VwZXJibG9jayBkb2Vzbid0IG1hdGNoIHRoZSB1bmRvIGZpbGUuXG4iCittc2dzdHIgIsSMYXMgcMWZaXBvamVuw60gc3lzdMOpbXUgc291Ym9yxa8gc2UgbmVzaG9kdWplIHPCoCV1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorIywgZnV6enkKK21zZ2lkICJMYXN0IG1vdW50IHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIsSMYXMgcMWZaXBvamVuw60gc3lzdMOpbXUgc291Ym9yxa8gc2UgbmVzaG9kdWplIHPCoCV1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUwCittc2dpZCAiTGFzdCB3cml0ZSB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE2NgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgInDFmWkgxI10ZW7DrSBzdXBlcmJsb2t1IMW+dXJuw6FsdSIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IHN1cGVyYmxva3UiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgc3VwZXJibG9rdSBuZW9kcG92w61kw6Egc3VwZXJibG9rdSIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIk5lcGxhdG7DoSBwb3ppY2U6ICVzXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IHdyaXRlIHRvIGFuIHVuZG8gZmlsZSB3aGlsZSByZXBsYXlpbmcgaXQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzozNjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgdW5kbyBmaWxlIGAlcydcbiIKK21zZ3N0ciAicMWZaSBvdGV2w61yw6Fuw60gc291Ym9ydSB6YcWZw616ZW7DrSIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgInDFmWkgxI10ZW7DrSBrb8WZZW5vdsOpaG8gaXV6bHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IHDFmcOtbGnFoSBtbm9obyB6YcWZw616ZW7DrVxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IEhlYWRlciBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgaXV6bHUgbmVvZHBvdsOtZMOhIGl1emx1IgorCisjOiBtaXNjL2UydW5kby5jOjM5NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiUG/FoWtvemVuw6EgaGxhdmnEjWthIHJvenNhaHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAixaFwYXRuw6EgdmVsaWtvc3QgYmxva3XCoOKAkyAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIlN1cGVyYmxvayDFvnVybsOhbHUgbcOhIG5hc3RhdmVuIHDFmcOtem5hayBuZXpuw6Ftw6kgdmxhc3Rub3N0aSDigJ5uZWtvbXBhdGliaWxuw63igJwuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJDaHliYSBwxZlpIHpqacWhxaVvdsOhbsOtLCBqZXN0bGkgamUgJXMgcMWZaXBvamVuLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworIywgZnV6enkKK21zZ2lkICJlMnVuZG8gc2hvdWxkIG9ubHkgYmUgcnVuIG9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIKK21zZ3N0ciAiZTJ1bmRvIGJ5IG3Em2wgYsO9dCBwb3XFoXTEm24gamVuIG5hIG5lcMWZaXBvamVuw6ltIHN5c3TDqW11IHNvdWJvcsWvXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGAlcyciCittc2dzdHIgInDFmWkgb3RldsOtcsOhbsOtICVzIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIGJpdG1hcCIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIk9kIGJsb2t1ICVsdSBkbyAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NTggbWlzYy9lMnVuZG8uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJaYXBpc3VqZSBzZSBibG9rICVsbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJjaHliYSBwxZlpIHrDoXBpc3UgYmxva3UgJWxsdSIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICJQb3XFvml0w606ICBmaW5kc3VwZXIgemHFmcOtemVuw60gW3DFmWVza2Frb3ZhdGJhanTFryBbc3RhcnRrYl1dXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICJwxZllc2tha292YXRiYWp0xa8gYnkgbcSbbG8gYsO9dCDEjcOtc2xvLCBuZSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICJwxZllc2tha292YXRiYWp0xa8gbXVzw60gYsO9dCBuw6Fzb2JlayB2ZWxpa29zdGkgc2VrdG9ydVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgInN0YXJ0a2IgYnkgbcSbbG8gYsO9dCDEjcOtc2xvLCBuZSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iCittc2dzdHIgInN0YXJ0a2IgYnkgbcSbbG8gYsO9dCBrbGFkbsOpLCBuZSAlTGRcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgInphxI3DrW7DoW0gbmEgJUxkIHMgcMWZw61yxa9zdGt5ICVkIGJhanTFr1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlMTRMZDogZG9rb27EjWVubyBzIGVycm5vICVkXG4iCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJWQVJPVsOBTsONOiBuZW1vaHUgb3RldsWZw610ICVzOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIlZBUk9Ww4FOw406IMWhcGF0bsO9IGZvcm3DoXQgbmEgxZnDoWRrdSAlZCAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKK21zZ2lkICIiCisiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisiXHRmaWVsZC4gIEkgd2lsbCBrbHVkZ2UgYXJvdW5kIHRoaW5ncyBmb3IgeW91LCBidXQgeW91XG4iCisiXHRzaG91bGQgZml4IHlvdXIgL2V0Yy9mc3RhYiBmaWxlIGFzIHNvb24gYXMgeW91IGNhbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBPWk9SOiBWw6HFoSAvZXRjL2ZzdGFiIG5lb2JzYWh1amUgcG9sZSBzwqBwb8WZYWTDrW0ga29udHJvbHkuXG4iCisiXHROeW7DrSBzZSBzwqB0w61tIGx6ZSB2eXBvxZnDoWRhdCwgYWxlIC9ldGMvZnN0YWIgYnlzdGUgbcSbbGlcbiIKKyJcdG9wcmF2aXQsIGphayBuZWpkxZnDrXZlIGJ1ZGV0ZSBtb2NpLlxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiAlczogbmVuYWxlemVuXG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiB3YWl0OiDFvcOhZG7DvSBkYWzFocOtIHN5bm92c2vDvSBwcm9jZXM/IT9cbiIKKworIzogbWlzYy9mc2NrLmM6NjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmcuLi4gJXMgZm9yIGRldmljZSAlcyBleGl0ZWQgd2l0aCBzaWduYWwgJWQuXG4iCittc2dzdHIgIlZhcm92w6Fuw63igKYgJXMgcHJvIHphxZnDrXplbsOtICVzIHNrb27EjWlsIHNlIHNpZ27DoWxlbSAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBzdGF2IGplICV4LCBuZW3Em2xvIGJ5IHNlIG5pa2R5IHN0w6F0LlxuIgorCisjOiBtaXNjL2ZzY2suYzo2NjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmluaXNoZWQgd2l0aCAlcyAoZXhpdCBzdGF0dXMgJWQpXG4iCittc2dzdHIgIkRva29uxI1lbiBzICVzIChzdGF2IHVrb27EjWVuw60gJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBDaHliYSAlZCBwxZlpIHNwb3XFoXTEm27DrSBmc2NrLiVzIHBybyAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIkJ1xI8gdsWhZWNobnkgbmVibyDFvsOhZG7DvSB0eXAgc3lzdMOpbXUgc291Ym9yxa8gcMWZZWRhbsO9IC10IG11c8OtIG3DrXQgcMWZZWRwb251XG4iCisi4oCebm/igJwgbmVibyDigJ4h4oCcLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiTmVtb2h1IGFsb2tvdmF0IHBhbcSbxaUgcHJvIHR5cHkgc3lzdMOpbXUgc291Ym9yxa9cbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiBwxZllc2tha3VqaSBjaHlibsO9IMWZw6FkZWsgdsKgL2V0Yy9mc3RhYjogcMWZaXBvamVuw60gdHlwdSBiaW5kIHPCoG5lbnVsb3bDvW1cbiIKKyJwb8WZYWTDrW0gcHLFr2Nob2R1IHNrcnplIGZzY2tcbiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogbmVtb2h1IHprb250cm9sb3ZhdCAlczogZnNjay4lcyBuZW5hbGV6ZW5cbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiS29udHJvbHVqw60gc2UgdsWhZWNobnkgc3lzdMOpbXkgc291Ym9yxa8uXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iCittc2dzdHIgIi0txI1la8OhbS0tIChwcsWvY2hvZCAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIlBvdcW+aXTDrTogZnNjayBbLUFNTlBSVFZdIFstQyBbZmRdXSBbLXQgdHlwc3NdIFtwxZllcMOtbmHEjWUtc3NdICIKKyJbc3lzdMOpbXNvdWJvcsWv4oCmXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiBwxZnDrWxpxaEgbW5vaG8gemHFmcOtemVuw61cbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IHDFmcOtbGnFoSBtbm9obyBhcmd1bWVudMWvXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJTb3Vib3Igb3RldsWZZW4gamVuIHBybyDEjXRlbsOtIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBBbGxvd2luZyB1c2VycyB0byBhbGxvY2F0ZSBhbGwgYmxvY2tzLiBUaGlzIGlzIGRhbmdlcm91cyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc2IG1pc2MvZnVzZTJmcy5jOjM3ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzcgbWlzYy9mdXNlMmZzLmM6Mzc5MSBtaXNjL3R1bmUyZnMuYzozMjA3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZnkgJXMuXG4iCittc2dzdHIgIiIKKyJTcHVzxaV0ZSBwcm9zw61tIG5lamTFmcOtdmUg4oCeZTJmc2NrIC1mICVz4oCcLlxuIgorIlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzk4Cittc2dpZCAiSm91cm5hbCBuZWVkcyByZWNvdmVyeTsgcnVubmluZyBgZTJmc2NrIC1FIGpvdXJuYWxfb25seScgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFdyaXRpbmcgdG8gdGhlIGpvdXJuYWwgaXMgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiWm1lbsWhb3bDoW7DrSB2ZWxpa29zdGkgaXV6bHUgbmVuw60gcG9kcG9yb3bDoW5vXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjEKK21zZ2lkICJXYXJuaW5nOiBNb3VudGluZyB1bmNoZWNrZWQgZnMsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjUKK21zZ2lkICJXYXJuaW5nOiBNYXhpbWFsIG1vdW50IGNvdW50IHJlYWNoZWQsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzAKK21zZ2lkICJXYXJuaW5nOiBDaGVjayB0aW1lIHJlYWNoZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzQKK21zZ2lkICJPcnBoYW5zIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM4Cittc2dpZCAiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1SVmFkbHB2XSBbZmlsZXMuLi5dXG4iCittc2dzdHIgIlBvdcW+aXTDrTogJXMgWy1SVmFkbHZdIFtzb3Vib3J54oCmXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIlDFmWkgxI10ZW7DrSBwxZnDrXpuYWvFryAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJQxZlpIMSNdGVuw60gdmVyemUgJXMiCisKKyM6IG1pc2MvbHNhdHRyLmM6MTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiUMWZaSDEjXRlbsOtIHZlcnplICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiUG91xb5pdMOtOiAlcyBbLWN8LWwgbsOhemV2c291Ym9ydV0gWy1iIHZlbGlrb3N0LWJsb2t1XSBbLUMgdmVsa29zdC1jbHVzdGVydV1cbiIKKyJcdFstaSBiYWp0xa8tbmEtaXV6ZWxdIFstSSB2ZWxpa29zdC1pdXpsdV0gWy1KIHDFmWVww61uYcSNZS3FvnVybsOhbHVdXG4iCisiXHRbLUcgdmVsaWtvc3QgbWV0YSBza3VwaW55XSBbLU4gcG/EjWV0LWl1emzFr11cbiIKKyJcdFstbSBwcm9jZW50YS1yZXplcnZvdmFuw71jaC1ibG9rxa9dIFstbyBvcy1hdXRvcmFdXG4iCisiXHRbLWcgYmxva8WvLXZlLXNrdXBpbsSbXSBbLUwgam1lbm92a2Etc3Zhemt1XVxuIgorIlx0Wy1NIGFkcmVzw6HFmS1wb3NsZWRuw61oby1wxZlpcG9qZW7DrV0gWy1PIHZsYXN0bm9zdFss4oCmXV0gWy1yIHJldml6ZS1zc11cbiIKKyJcdFstRSByb3rFocOtxZllbsO9LXDFmWVww61uYcSNWyzigKZdXSBbLXQgZHJ1aC1zc10gWy1UIHpwxa9zb2ItcG91xb5pdMOtXSBbLVUgVVVJRF1cbiIKKyJcdFstam5xdkRGS1NWXSB6YcWZw616ZW7DrSBbcG/EjWV0LWJsb2vFr11cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICJTcG91xaF0w61tIHDFmcOta2F6OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgInDFmWkgcG9rdXN1IHNwdXN0aXQg4oCeJXPigJwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJwxZlpIHpwcmFjb3bDoXbDoW7DrSBzZXpuYW11IMWhcGF0bsO9Y2ggYmxva8WvIHogcHJvZ3JhbXUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICJCbG9rICVkIHYgb2JsYXN0aSBwcmltw6FybsOtaG8gc3VwZXJibG9rdS9kZXNrcmlwdG9yxa8gc2t1cGluIMWhcGF0bsO9LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJCbG9reSAldSBhxb4gJXUgbXVzw60gYsO9dCBwcm8gdnl0dm/FmWVuw60gc3lzdMOpbXUgc291Ym9yxa8gdiBwb8WZw6Fka3UuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIktvbsSNw61t4oCmXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlZhcm92w6Fuw606IHrDoWxvxb5uw60gc3VwZXJibG9rL2Rlc2tyaXB0b3J5IHNrdXBpbiB2wqBibG9rdSAldSBvYnNhaHVqw61cbiIKKyJcdMWhcGF0bsOpIGJsb2t5LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICJwxZlpIG96bmHEjW92w6Fuw60gxaFwYXRuw71jaCBibG9rxa8gamFrbyBwb3XFvml0w6kiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAiWmFwaXN1amkgdGFidWxreSBpdXpsxa86ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCB3cml0ZSAlZCBibG9ja3MgaW4gaW5vZGUgdGFibGUgc3RhcnRpbmcgYXQgJWxsdTogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5lbW9odSB6YXBzYXQgJWQgYmxva8WvIGRvIHRhYnVsa3kgaXV6bMWvIHBvxI3DrW5hamUgJWxsdTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NDQgbWlzYy9ta2UyZnMuYzoyNjU0IG1pc2MvbWtlMmZzLmM6MzAzMAorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgImhvdG92byAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgInDFmWkgdnl0dsOhxZllbsOtIGtvxZllbm92w6lobyBhZHJlc8OhxZllIgorCisjOiBtaXNjL21rZTJmcy5jOjQ2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIGtvxZllbm92w6lobyBpdXpsdSIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJwxZlpIG5hc3Rhdm92w6Fuw60gdmxhc3RuaWN0dsOtIGtvxZllbm92w6lobyBpdXpsdSIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAicMWZaSB2eXR2w6HFmWVuw60gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAicMWZaSB2eWhsZWTDoXbDoW7DrSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MTYKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgInDFmWkgenbEm3TFoW92w6Fuw60gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgInDFmWkgbmFzdGF2b3bDoW7DrSBpdXpsdSDFoXBhdG7DvWNoIGJsb2vFryIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiTmVkb3N0YXRlayBwYW3Em3RpIHDFmWkgbWF6w6Fuw60gc2VrdG9yxa8gJWQtJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiVmFyb3bDoW7DrTogbmVtb2h1IG5hxI3DrXN0IGJsb2sgMDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIKK21zZ3N0ciAiVmFyb3bDoW7DrTogbmVtb2h1IHZ5bWF6YXQgc2VrdG9yICVkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjYwMAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgInDFmWkgaW5pY2lhbGl6YWNpIHN1cGVyYmxva3Ugxb51cm7DoWx1IgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiTnVsdWppIHphxZnDrXplbsOtIMW+dXJuw6FsdTogIgorCisjOiBtaXNjL21rZTJmcy5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgInDFmWkgbnVsb3bDoW7DrSB6YcWZw616ZW7DrSDFvnVybsOhbHUgKGJsb2sgJWxsdSwgcG/EjWV0ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzo2MzcKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IHN1cGVyYmxva3Ugxb51cm7DoWx1IgorCisjOiBtaXNjL21rZTJmcy5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggJWxsdSAlZGsgYmxvY2tzIGFuZCAldSBpbm9kZXNcbiIKK21zZ3N0ciAiVnl0dsOhxZnDrSBzZSBzeXN0w6ltIHNvdWJvcsWvIHPCoCUnbGx1ICglZGspIGJsb2t5IGEgJSd1IHV6bHlcbiIKKworIyBUT0RPIHBsdXJhbGl6ZQorIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorInBvem9yOiBuZXBvdcW+aXRvICUnbGx1IGJsb2vFry5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBsYWJlbD0lc1xuIgorbXNnc3RyICJKbWVub3ZrYSBzeXN0w6ltdSBzb3Vib3LFrz0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJUeXAgT1M6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiVmVsaWtvc3QgYmxva3U9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2x1c3RlciBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIlZlbGlrb3N0IGNsdXN0ZXJ1PSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiVmVsaWtvc3QgZnJhZ21lbnR1PSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiS3Jvaz0ldSBibG9rxa8sIMWgw63FmWthIHDDoXN1PSV1IGJsb2vFr1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1IGl1emzFrywgJWxsdSBibG9rxa9cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIlbGx1IGJsb2vFryAoJTIuMmbigK8lJSkgcmV6ZXJ2b3bDoW5vIHBybyBzdXBlcnXFvml2YXRlbGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJQcnZuw60gYmxvayBkYXQ9JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAiVmxhc3Ruw61rIGtvxZllbm92w6lobyBhZHJlc8OhxZllPSV1OiV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgIk1heGltdW0gYmxva8WvIHbCoHN5c3TDqW11IHNvdWJvcsWvPSUnbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IHNrdXBpbiBibG9rxa9cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgc2t1cGluYSBibG9rxa9cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2vFryB2ZSBza3VwaW7EmywgJXUgY2x1c3RlcsWvIHZlIHNrdXBpbsSbXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxva8WvIHZlIHNrdXBpbsSbLCAldSBmcmFnbWVudMWvIHZlIHNrdXBpbsSbXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgaXV6bMWvIHZlIHNrdXBpbsSbXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiVVVJRCBzeXN0w6ltdSBzb3Vib3LFrz0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgIlrDoWxvaHkgc3VwZXJibG9rdSB1bG/FvmVueSB2IGJsb2PDrWNoOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHJlcXVpcmVzICctTyA2NGJpdCdcbiIKK21zZ3N0ciAiJXMgdnnFvmFkdWplIOKAni1PIDY0Yml04oCcXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAi4oCeJXPigJwgbXVzw60gYsO9dCBwxZllZCDigJ5yZXNpemU9JXXigJxcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiTmVwbGF0bsOhIGRlc2Nfc2l6ZTog4oCeJXPigJxcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgIk5lcGxhdG7DoSBwb3ppY2U6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gaW50ZXJ2YWxfYWt0dWFsaXphY2VfbW1wOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gcG/EjWV0IHrDoWxvxb5uw61jaCBzdXBlcmJsb2vFrzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gcGFyYW1ldHIga3Jva3UgKHN0cmlkZSk6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiTmVwbGF0bsO9IHBhcmFtZXRyIMWhw63FmWthLXDDoXN1IChzdHJpcGUtd2lkdGgpOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk5lcGxhdG7DvSBwYXJhbWV0ciB6bcSbbnkgdmVsaWtvc3RpOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICJNYXhpbXVtIHptxJtueSB2ZWxrb3N0aSBtdXPDrSBiw710IHbEm3TFocOtIG5lxb4gdmVsaWtvc3Qgc3lzdMOpbXUgc291Ym9yxa8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTU4Cittc2dpZCAiT24tbGluZSByZXNpemluZyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJSZXZpemUgMCBzb3Vib3JvdsOpaG8gc3lzdMOpbXUgbmVwb2Rwb3J1amUgem3Em251IHZlbGlrb3N0aSB6YSBixJtodVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk4NCBtaXNjL21rZTJmcy5jOjk5MworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIKK21zZ3N0ciAiTmVwbGF0bsO9IHZsYXN0bsOtayBrb8WZZW51OiDigJ4lc+KAnFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiWmFkw6FuKHkpIMWhcGF0bsO9KMOpKSBwxZllcMOtbmHEjShlKTogJXNcbiIKKyJcbiIKKyJSb3rFocOtxZllbsOpIHDFmWVww61uYcSNZSBqc291IG9kZMSbbGVueSDEjcOhcmthbWkgYSBtb2hvdSBtw610IGFyZ3VtZW50LCBrdGVyw70gamVcbiIKKyJcdG9kZMSbbGVuIHpuYW3DqW5rZW0gcm92bsOhIHNlICjigJ494oCcKS5cbiIKKyJcbiIKKyJQbGF0bsOpIHJvesWhw63FmWVuw6kgcMWZZXDDrW5hxI1lIGpzb3U6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxha3R1YWxpemHEjW7DrSBpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PHBvxI1ldCB6w6Fsb8W+bsOtY2ggc3VwZXJibG9rxa86IDB8MXwyPlxuIgorIlx0c3RyaWRlPTxzaGx1ayAoY2h1bmspIGRhdCBuYSBqZWRub20gcmFpZG92w6ltIGRpc2t1IHbCoGJsb2PDrWNoPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxrcm9rIChzdHJpZGUpIFJBSUR1ICogZGF0b3bDvWNoIGRpc2vFryB2wqBibG9jw61jaD5cbiIKKyJcdG9mZnNldD08cG96aWNlLCBuYSBrdGVyw6kgdnl0dm/FmWl0IHNvdWJvcm92w70gc3lzdMOpbT5cbiIKKyJcdHJlc2l6ZT08bWF4aW3DoWxuw60gdmVsaWtvc3Qgem3Em255IHZlbGlrb3N0aSB2wqBibG9jw61jaD5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08c2JhbGVuw6kgbWV0YSBibG9reTogMCB6YWvDoXrDoW5vLCAxIHBvdm9sZW5vPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08bMOtbsOhIGluaWNpYWxpemFjZSBpdGFidWxreTogMCB6YWvDoXrDoW5vLCAxIHBvdm9sZW5vPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PGzDrW7DoSBpbmljaWFsaXphY2Ugxb51cm7DoWx1OiAwIHpha8OhesOhbm8sIDEgcG92b2xlbm8+XG4iCisiXHRyb290X3VpZD08VUlEIGtvxZllbm92w6lobyBhZHJlc8OhxZllPlxuIgorIlx0cm9vdF9naWQ9PEdJRCBrb8WZZW5vdsOpaG8gYWRyZXPDocWZZT5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxkcnVoIGt2w7N0OiB1c3IgKHXFvml2YXRlbMOpKSwgbmVibyBncnAgKHNrdXBpbnkpPlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlZhcm92w6Fuw606IMWhw63FmWthIHBydWh1IFJBSUR1ICV1IG5lbsOtIHN1ZMO9IG7DoXNvYmVrIGtyb2t1IChzdHJpZGUpICV1LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBta2UyZnMgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJDaHliYSBzeW50YXhlIHbCoGtvbmZpZ3VyYcSNbsOtbSBzb3Vib3J1IG1rZTJmcyAoJXMsIMWZw6FkZWsgxI0uwqAlZClcbiIKKyJcdCVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTExNCBtaXNjL3R1bmUyZnMuYzoxMDA3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZmlsZXN5c3RlbSBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gc2FkYSBwxZllcMOtbmHEjcWvIHN5c3TDqW11IHNvdWJvcsWvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiTmFzdGF2ZW4gbmVwbGF0bsO9IHDFmWVww61uYcSNIHDFmWlwb2plbsOtOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlbDocWhIHNvdWJvciBta2UyZnMuY29uZiBuZWRlZmludWplIGRydWggc291Ym9yb3bDqWhvIHN5c3TDqW11ICVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJQcmF2ZMSbcG9kb2JuxJsgcG90xZllYnVqZXRlIG5haW5zdGFsb3ZhdCBha3R1YWxpem92YW7DvSBzb3Vib3IgbWtlMmZzLmNvbmYuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgIlDFmWVydcWhdWplIHNl4oCmXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTMxMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGZzX3R5cGUgJXMgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmZcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlBvem9yOiBmc190eXBlIChkcnVoIFNTKSAlcyBuZW7DrSB2wqBta2UyZnMuY29uZiBkZWZpbm92w6FuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIk5lbW9odSBhbG9rb3ZhdCBwYW3Em8WlIHBybyBub3ZvdSBwcm9txJtubm91IFBBVEguXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogJWxkKS5cbiIKK21zZ3N0ciAiUHJvZmlsIG5lYnlsbyBtb8W+bsOpIHNwcsOhdm7EmyBpbmljaWFsaXpvdmF0IChjaHliYTogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICLFoXBhdG7DoSB2ZWxpa29zdCBibG9rdcKg4oCTICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogYmxvY2tzaXplICVkIG5vdCB1c2FibGUgb24gbW9zdCBzeXN0ZW1zLlxuIgorbXNnc3RyICJWYXJvdsOhbsOtOiB2ZWxpa29zdCBibG9rdSAlZCBuZW7DrSBuYSB2xJt0xaFpbsSbIHN5c3TDqW3FryBwb3XFvml0ZWxuw6EuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICLFoXBhdG7DoSB2ZWxpa29zdCBjbHVzdGVydcKg4oCTICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIlDFmWVww61uYcSNIOKAni1S4oCcIGplIHphc3RhcmFsw70sIHBvdcW+aWp0ZSBtw61zdG8gbsSbaiDigJ4tReKAnCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgIsWhcGF0bsOpIGNob3bDoW7DrSBwxZlpIGNoeWLDoWNoIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYyNgorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBibG9ja3MgcGVyIGdyb3VwIgorbXNnc3RyICJOZXBsYXRuw70gcG/EjWV0IGJsb2vFryB2ZSBza3VwaW7EmyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjMxCittc2dpZCAiYmxvY2tzIHBlciBncm91cCBtdXN0IGJlIG11bHRpcGxlIG9mIDgiCittc2dzdHIgImJsb2t5IHZlIHNrdXBpbsSbIG11c8OtIGLDvXQgbsOhc29iZWsgOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiTmVwbGF0bsOpIMSNw61zbG8gcHJvIHZlbGlrb3N0IGZsZXhfYmciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY0NQorbXNnaWQgImZsZXhfYmcgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMiIKK21zZ3N0ciAiVmVsaWtvc3QgZmxleF9iZyBtdXPDrSBiw710IG1vY25pbm91IDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgYy1mb3JtYXQKK21zZ2lkICJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMl4zMSIKK21zZ3N0ciAiVmVsaWtvc3QgZmxleF9iZyAoJWx1KSBtdXPDrSBtZW7FocOtIG5lYm8gcm92bmEgMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICLFoXBhdG7DvSBwb2TDrWwgaXV6bMWvICVzIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICLFoXBhdG7DoSB2ZWxpa29zdCBpdXpsdcKg4oCTICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2ODMKK21zZ2lkICIiCisiV2FybmluZzogLUsgb3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLiBVc2UgJy1FICIKKyJub2Rpc2NhcmQnIGV4dGVuZGVkIG9wdGlvbiBpbnN0ZWFkIVxuIgorbXNnc3RyICIiCisiUG96b3I6IFDFmWVww61uYcSNIC1LIGplIHphc3RhcmFsw70gYSBuZW3Em2wgYnkgc2UgamnFviBwb3XFvsOtdmF0LiBNw61zdG8gbsSbaiAiCisicG91xb5panRlIHJvesWhw63FmWVuw70gcMWZZXDDrW5hxI0g4oCeLUUgbm9kaXNjYXJk4oCcIVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgInYgbWFsbG9jIHBybyBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJWYXJvdsOhbsOtOiBqbWVub3ZrYSBwxZnDrWxpxaEgZGxvdWjDoSwgemtyYWN1amkuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiCittc2dzdHIgIsWhcGF0bsOpIHByb2NlbnRvIHJlemVydm92YW7DvWNoIGJsb2vFr8Kg4oCTICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG51bSBpbm9kZXMgLSAlcyIKK21zZ3N0ciAiY2h5Ym7DvSBwb8SNZXQgaXV6bMWvwqDigJMgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICJwxZlpIGFsb2thY2kgdnlyb3Zuw6F2YWPDrWNoIHBhbcSbdGkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc1NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAixaFwYXRuw6kgxI3DrXNsbyByZXZpemXCoOKAkyAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgInDFmWkgcG9rdXN1IHZ5dHZvxZlpdCByZXZpemkgJWQiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc3NgorbXNnaWQgIlRoZSAtdCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICJQxZllcMOtbmHEjSAtdCBsemUgcG91xb7DrXQgamVuIGplZG5vdSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIlDFmWVww61uYcSNIC1UIGx6ZSBwb3XFvsOtdCBqZW4gamVkbm91IgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgInDFmWkgcG9rdXN1IG90ZXbFmcOtdCB6YcWZw616ZW7DrSDFvnVybsOhbHUgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiVmVsaWtvc3QgYmxva3UgemHFmcOtemVuw60gxb51cm7DoWx1ICglZCkgbWVuxaHDrSBuZcW+IG1pbmltw6FsbsOtIHZlbGlrb3N0IGJsb2t1ICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiUG91xb5pamkgdmVsaWtvc3QgYmxva3Ugxb51cm7DoWxvdmFjw61obyB6YcWZw616ZW7DrTogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgIsWhcGF0bsOpIGJsb2t5wqDigJ4lc+KAnCBuYSB6YcWZw616ZW7DrSDigJ4lc+KAnCIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAic3lzdMOpbSBzb3Vib3LFryIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgInDFmWkgcG9rdXN1IHpqaXN0aXQgdmVsaWtvc3Qgc3lzdMOpbXUgc291Ym9yxa8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisiTmVtb2h1IHpqaXN0aXQgdmVsaWtvc3QgemHFmcOtemVuw607IG11c8OtdGUgemFkYXRcbiIKKyJ2ZWxpa29zdCBzeXN0w6ltdSBzb3Vib3LFr1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorIlZlbGlrb3N0IHphxZnDrXplbsOtIGplIHByw70gbnVsYS4gWmFkw6FuIG5lcGxhdG7DvSBvZGTDrWwgbmVibyBuZWJ5bGFcbiIKKyIgICAgICAgICB0YWJ1bGthIG9kZMOtbMWvIHBvIGZkaXNrIHpub3Z1IG5hxI10ZW5hLCBwcm90b8W+ZSB6bcSbbsSbbsO9XG4iCisiICAgICAgICAgb2Rkw61sIHNlIHBvdcW+w612w6EuIE1vxb5uw6EgYnVkZXRlIG11c2V0IHBybyBvcMSbdG92bsOpIG5hxI10ZW7DrVxuIgorIiAgICAgICAgIHN2w6kgdGFidWxreSBvZGTDrWzFryB6bm92dSB6YXbDqXN0IHN5c3TDqW0uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkzMAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFyZ2VyIHRoYW4gYXBwYXJlbnQgZGV2aWNlIHNpemUuIgorbXNnc3RyICJTeXN0w6ltIHNvdWJvcsWvIHbEm3TFocOtIG5lxb4gdmVsaWtvc3QgemHFmcOtemVuw60uIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICJTZXpuYW0gZHJ1aMWvIHNvdWJvcm92w71jaCBzeXN0w6ltdSBzZSBuZXpkYcWZaWxvIHJvemVicmF0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIG5lcG9kcG9ydWplIHZsYXN0bm9zdCBmaWxldHlwZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIG5lcG9kcG9ydWplIHZsYXN0bm9zdCBmaWxldHlwZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDA4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCBuZXBvZHBvcnVqZSB2bGFzdG5vc3QgZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgInDFmWkgcG9rdXN1IHpqaXN0aXQgdmVsaWtvc3QgaGFyZHdhcm92w6lobyBzZWt0b3J1IgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHBoeXNpY2FsIHNlY3RvciBzaXplIgorbXNnc3RyICJwxZlpIHBva3VzdSB1csSNaXQgdmVsaWtvc3QgZnl6aWNrw6lobyBzZWt0b3J1IgorCisjOiBtaXNjL21rZTJmcy5jOjIwNTYKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsIGZvciBkZXZpY2VcbiIKK21zZ3N0ciAicMWZaSBuYXN0YXZvdsOhbsOtIHZlbGlrb3N0aSBibG9rdTsgcHJvIHphxZnDrXplbsOtIHDFmcOtbGnFoSBtYWzDoSBob2Rub3RhXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA2MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorIlBvem9yOiB6YWRhbsOhIHZlbGlrb3N0IGJsb2t1ICVkIGplIG1lbsWhw60gbmXFviB2ZWxpa29zdCBmeXppY2vDqWhvIHNla3RvcnUgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogU2l6ZSBvZiBkZXZpY2UgKDB4JWxseCBibG9ja3MpICVzIHRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG4iCisiXHRpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIgorbXNnc3RyICIiCisiJXM6IFZlbGlrb3N0IHphxZnDrXplbsOtICgweCVsbHggYmxva8WvKSAlcyBqZSBwxZnDrWxpxaEgdmVsa8OhLCBhYnkgYnlsYVxuIgorInZ5asOhZMWZZW5hIHbCoDMyIGJpdGVjaCB6YSBwb3XFvml0w60gYmxva3Ugb8KgdmVsaWtvc3RpICVkLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDEKK21zZ2lkICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorbXNnc3RyICJmc190eXBlcyAoZHJ1aHkgU1MpIHBybyDFmWXFoWVuw60gdsKgbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJWbGFzdG5vc3RpIHN5c3TDqW11IHNvdWJvcsWvIG5lanNvdSB2wqByZXZpemkgMCBwb2Rwb3JvdsOhbnlcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIsWYw61ka8OpIHN1cGVyYmxva3kgc3lzdMOpbXUgc291Ym9yxa8gbmVqc291IHbCoHJldml6aSAwIHBvZHBvcm92w6FueVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJSZXZpemUgMCBzeXN0w6ltdSBzb3Vib3LFryDFvnVybsOhbHkgbmVwb2Rwb3J1amVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgIsWhcGF0bsOpIHByb2NlbnRvIHJlemVydm92YW7DvWNoIGJsb2vFr8Kg4oCTICVsZiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTU2Cittc2dpZCAiIgorIkV4dGVudHMgTVVTVCBiZSBlbmFibGVkIGZvciBhIDY0LWJpdCBmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiUm96c2FoeSBNVVPDjSBiw710IHXCoDY0Yml0b3bDvWNoIHNvdWJvcm92w71jaCBzeXN0w6ltxa8gemFwbnV0eS4gVG9obyBkb2PDrWzDrXRlXG4iCisiemFkw6Fuw61tIOKAni1PIGV4dGVudHPigJwuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIlZlbGlrb3N0IGNsdXN0ZXJ1IG5lbXVzw60gYsO9dCBtZW7FocOtIG5lxb4gdmVsaWtvc3QgYmxva3UuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgImRlZmluaWNlIHZlbGlrb3N0aSBjbHVzdGVydSB2ecW+YWR1amUgdmxhc3Rub3N0IGJpZ2FsbG9jIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgInZhcm92w6Fuw606IE5lbsOtIG1vxb5uw6kgemppc3RpdCBnZW9tZXRyaWkgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICJaYXJvdm7DoW7DrSAlcyBwxZllZHN0YXZ1amUgcG9zdW4gb8KgJSdsdSBiYWp0xa8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisiVG90byBtxa/FvmUgdsOpc3Qga8KgdmVsbWkgxaFwYXRuw6ltdSB2w71rb251LCBkb3BvcnXEjXVqZSBzZSAobm92w6kpIHZ5dHZvxZllbsOtICIKKyJvZGTDrWzFry5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAiJWQtYmFqdG92w6kgYmxva3kgcMWZw61sacWhIHZlbGvDqSBwcm8gc3lzdMOpbSAobWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisiVmFyb3bDoW7DrTogJWQtYmFqdG92w6kgYmxva3kgcMWZw61sacWhIHZlbGvDqSBwcm8gc3lzdMOpbSAobWF4ICVkKSwgZG9udWNlbiAiCisicG9rcmHEjW92YXRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yIGltcHJvdmVkIHN0YWJpbGl0eSBvZiB0aGUgbWV0YWRhdGEgIgorImFuZCBqb3VybmFsIGNoZWNrc3VtIGZlYXR1cmVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICJWbGFzdG5vc3QgYmlnYWxsb2MgbmVsemUgYmV6IHZsYXN0bm9zdGkgcm96c2Foxa8gemFwbm91dCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJWbGFzdG5vc3RpIHJlc2l6ZV9pbm9kZSBhIG1ldGFfYmcgbmVqc291IHNsdcSNaXRlbG7DqS5cbiIKKyJPYsSbIG5lbW9ob3UgYsO9dCB6YXBudXR5IHNvdcSNYXNuxJsuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiUG96b3I6IHZsYXN0bm9zdCBiaWdhbGxvYyBqZSBzdMOhbGUgdmUgdsO9dm9qaS5cbiIKKyJQb2Ryb2Jub3N0aSBuYWxlem5ldGUgbmEgPGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jPi5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJibG9reSB2eWhyYXplbsOpIHBybyB6bcSbbnUgdmVsaWtvc3RpIHphIGLEm2h1IG5lanNvdSBwb2Rwb3JvdsOhbnkgbmEgbmXFmcOtZGvDqW1cbiIKKyJcdHN5c3TDqW11IHNvdWJvcsWvIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNDgKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIGNvdW50IG91dCBvZiByYW5nZSIKK21zZ3N0ciAicG/EjWV0IGJsb2vFryB2ZSBza3VwaW7EmyBtaW1vIHJvenNhaCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIlZsYXN0bm9zdCBmbGV4X2JnIG5lbsOtIHBvdm9sZW5hLCB0YWvFvmUgamVqw60gdmVsaWtvc3QgbmVtxa/FvmUgYsO9dCB6YWTDoW5hIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAixaFwYXRuw6EgdmVsaWtvc3QgaXV6bHUgJWQgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAicMWZw61sacWhIG1ub2hvIGl1emzFryAoJSdsbHUpLCB6dsO9xaFpdCBwb23Em3IgaXV6bMWvPyIKKworIzogbWlzYy9ta2UyZnMuYzoyNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHNwZWNpZnkgPCAyXjMyIGlub2RlcyIKK21zZ3N0ciAicMWZw61sacWhIG1ub2hvIGl1emzFryAoJSdsbHUpLCB6YWRlanRlIDwgMl4zMiBpdXpsxa8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisidmVsaWtvc3RfaXV6bHUgKCV1KSAqIHBvxI1ldF9pdXpsxa8gKCV1KSBqZSBtb2MgbmFcbiIKKyJcdHN5c3TDqW0gc291Ym9yxa8gcyAlJ2xsdSBibG9reSwgemFkZWp0ZSB2ecWhxaHDrSBwb23Em3JfaXV6bHUgKC1pKVxuIgorIlx0bmVibyBzbmnFvnRlIHBvxI1ldCBpdXpsxa8gKC1OKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjMzCittc2dpZCAiRGlzY2FyZGluZyBkZXZpY2UgYmxvY2tzOiAiCittc2dzdHIgIlphaGF6dWrDrSBzZSBibG9reSB6YcWZw616ZW7DrTogIgorCisjIENvbnRpbnVhdGlvbiBvZiAiQ2FsbGluZyBCTEtESVNDQVJEIGZyb20gJWxsdSB0byAlbGx1ICIKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAic2VsaGFsb8Kg4oCTICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IgorbXNnc3RyICJwxZlpIGluaWNpYWxpemFjaSBleHQyX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgInDFmWkgesOhcGlzdSBpdXpsdSDFvnVybsOhbHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIGluIHByb2ZpbGUgLSAlcyIKK21zZ3N0ciAixaFwYXRuw6kgY2hvdsOhbsOtIHDFmWkgY2h5YsOhY2ggLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICJwxZlpIG5hc3Rhdm92w6Fuw60gc3VwZXJibG9rdSIKKworIzogbWlzYy9ta2UyZnMuYzoyODMwCittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBQYXNzIC1PIGV4dGVudHMgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzcKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg0NQorbXNnaWQgIlRoZSBtZXRhZGF0YV9jc3VtX3NlZWQgZmVhdHVyZSByZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODY5Cittc2dpZCAiRGlzY2FyZCBzdWNjZWVkZWQgYW5kIHdpbGwgcmV0dXJuIDBzIC0gc2tpcHBpbmcgaW5vZGUgdGFibGUgd2lwZVxuIgorbXNnc3RyICIiCisiU2thcnRvdsOhbsOtIChkaXNjYXJkKSB1c3DEm2xvIGEgYnVkZSB2csOhY2VubyAwc8Kg4oCTIHZ5bmVjaMOhIHNlIHbDvW1heiB0YWJ1bGt5ICIKKyJpdXpsxa9cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAibmV6bsOhbcO9IG9zwqDigJMgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIkFsb2t1asOtIHNlIHRhYnVsa3kgc2t1cGluOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAicMWZaSBwb2t1c3UgYWxva292YXQgdGFidWxreSBzeXN0w6ltdSBzb3Vib3LFryIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIlx0cMWZaSBwxZlldm9kdSBiaXRtYXB5IHN1YmNsdXN0ZXLFryIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJwxZlpIG51bG92w6Fuw60gYmxva3UgJWxsdSBuYSBrb25jaSBzeXN0w6ltdSBzb3Vib3LFryIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAicMWZaSByZXplcnZhY2kgYmxva8WvIHBybyB6bcSbbnUgdmVsaWtvc3RpIHphIGLEm2h1IgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgIsW+dXJuw6FsIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiCittc2dzdHIgIlDFmWlkw6F2w6FtIMW+dXJuw6FsIGsgemHFmcOtemVuw60gJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdHDFmWkgcG9rdXN1IHDFmWlkYXQgxb51cm7DoWwgayB6YcWZw616ZW7DrSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAiaG90b3ZvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIlbCoHJlxb5pbXUgamVuLXN1cGVyZGF0YSBidWRlIHZ5bmVjaMOhbmEgdHZvcmJhIMW+dXJuw6FsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJWeXR2w6HFmcOtIHNlIMW+dXJuw6FsICglJ3UgYmxva8WvKTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJcdHDFmWkgcG9rdXN1IHZ5dHZvxZlpdCDFvnVybsOhbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorIlxuIgorIkNoeWJhIHDFmWkgemFww61uw6Fuw60gb2NocmFueSBwcm90aSBuw6Fzb2Juw6ltdSBwxZlpcG9qZW7DrS4iCisKKyMgVE9ETzogUGx1cmFsaXplCisjOiBtaXNjL21rZTJmcy5jOjMxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBpcyBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkIHNlY29uZHMuXG4iCittc2dzdHIgIiIKKyJPY2hyYW5hIHByb3RpIG7DoXNvYm7DqW11IHDFmWlwb2plbsOtIGplIHphcG51dGEgc8KgYWt0dWFsaXphxI1uw61tIGludGVydmFsZW0gJWQgIgorInNla3VuZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCisjLCBmdXp6eQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIkNoeWJhIHDFmWkgc3luY2hyb25pemFjaSB6w6FwaXPFryBuYSB6YcWZw616ZW7DrSDDumxvxb5pxaF0xJs6ICVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBwb3B1bGF0aW5nIGZpbGUgc3lzdGVtIgorbXNnc3RyICJwxZlpIGFsb2thY2kgdGFidWxreSBsMSIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIlphcGlzdWppIHN1cGVyYmxva3kgYSDDusSNdG92YWPDrSBpbmZvcm1hY2Ugc3lzdMOpbXUgc291Ym9yxa86ICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIlZhcm92w6Fuw60sIG3Em2wganNlbSBwcm9ibMOpbXkgcMWZaSB6w6FwaXN1IHN1cGVyYmxva8WvLiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorImhvdG92b1xuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJWeXR2w6HFmcOtIHNlIG9iecSNZWpuw70gc291Ym9yICVzXG4iCisKKyMgVE9ETyBwbHVyYWxpemUKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIiIKKyJwb3pvcjogbmVwb3XFvml0byAlJ2xsdSBibG9rxa8uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJwxZlpIHByb2Now6F6ZW7DrSBpdXpsdSAldSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiUG91xb5pdMOtOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJQb3XFvml0w606ICAlcyBaQcWYw41aRU7DjeKAplxuIgorIlxuIgorIlZ5cMOtxaFlIGluZm9ybWFjZSBvwqBvZGTDrWxlY2ggbmEga2HFvmTDqW0gemFkYW7DqW0gWkHFmMONWkVOw40uXG4iCisiTmEgcMWZw61rbGFkOiAlcyAvZGV2L2hkYVxuIgorIlxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gJXM6ICVzIgorbXNnc3RyICJOZWx6ZSBvdGV2xZnDrXQgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIk5lbHplIHrDrXNrYXQgZ2VvbWV0cmlpICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIk5lbHplIHrDrXNrYXQgdmVsaWtvc3QgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHphxI3DoXRlaz0lOGQgdmVsaWtvc3Q9JThsdSBrb25lYz0lOGRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5CisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJTcHVzxaV0ZSBwcm9zw61tIG5hIHRvbXRvIHN5c3TDqW11IHNvdWJvcsWvIGUyZnNjay5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiU3B1c8WldGUgcHJvc8OtbSBuYSB0b210byBzeXN0w6ltdSBzb3Vib3LFryBlMmZzY2suXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWMgbWF4X21vdW50c19jb3VudF0gWy1lIGVycm9yc19iZWhhdmlvcl0gWy1mXSBbLWcgZ3JvdXBdXG4iCisiXHRbLWkgaW50ZXJ2YWxbZHxtfHddXSBbLWpdIFstSiBqb3VybmFsX29wdGlvbnNdIFstbF1cbiIKKyJcdFstbSByZXNlcnZlZF9ibG9ja3NfcGVyY2VudF0gWy1vIFteXW1vdW50X29wdGlvbnNbLC4uLl1dXG4iCisiXHRbLXAgbW1wX3VwZGF0ZV9pbnRlcnZhbF0gWy1yIHJlc2VydmVkX2Jsb2Nrc19jb3VudF0gWy11IHVzZXJdXG4iCisiXHRbLUMgbW91bnRfY291bnRdIFstTCB2b2x1bWVfbGFiZWxdIFstTSBsYXN0X21vdW50ZWRfZGlyXVxuIgorIlx0Wy1PIFteXWZlYXR1cmVbLC4uLl1dIFstUSBxdW90YV9vcHRpb25zXVxuIgorIlx0Wy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV0gWy1UIGxhc3RfY2hlY2tfdGltZV0gWy1VIFVVSURdXG4iCisiXHRbLUkgbmV3X2lub2RlX3NpemVdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiUG91xb5pdMOtOiAlcyBbLWMgbWF4X3BvxI1ldF9wxZlpcG9qZW7DrV0gWy1lIGNob3bDoW7DrV9wxZlpX2NoeWLDoWNoXVxuIgorIlx0Wy1nIHNrdXBpbmFdIFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIHDFmWVww61uYcSNZV/FvnVybsOhbHVdIFstbF1cbiIKKyJcdFstbSBwcm9jZW50b19yZXplcnZvdmFuw71jaF9ibG9rxa9dIFstbyBbXl1wxZllcMOtbmHEjWVfcMWZaXBvamVuw61bLOKApl1dXG4iCisiXHRbLXAgaW50ZXJ2YWxfYWt0dWFsaXphY2VfbW1wXSBbLXIgcG/EjWV0X3JlemVydm92YW7DvWNoX2Jsb2vFr11cbiIKKyJcdFstdSB1xb5pdmF0ZWxdIFstQyBwb8SNZXRfcMWZaXBvamVuw61dIFstTCBqbWVub3ZrYV9zdmF6a3VdXG4iCisiXHRbLU0gcG9zbGVkbsOtX2FkcmVzw6HFmV9wxZlpcG9qZW7DrV0gWy1PIFteXXZsYXN0bm9zdFss4oCmXV1cbiIKKyJcdFstUSBwxZllcMOtbmHEjWVfa3bDs3RdXG4iCisiXHRbLUUgcm96xaHDrcWZZW7DvS1wxZllcMOtbmHEjVss4oCmXV0gWy1UIMSNYXNfcG9zbGVkbsOtX2tvbnRyb2x5XSBbLVUgVVVJRF1cbiIKKyJcdFstSSBub3bDoV92ZWxpa29zdF9pdXpsdV0gemHFmcOtemVuw61cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiU3VwZXJibG9rIMW+dXJuw6FsdSBuZW5hbGV6ZW4hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3NgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgInDFmWkgcG9rdXN1IG90ZXbFmcOtdCBleHRlcm7DrSDFvnVybsOhbCIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyIG1pc2MvdHVuZTJmcy5jOjI3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIG5lbsOtIHphxZnDrXplbsOtIMW+dXJuw6FsdS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIlVVSUQgc3lzdMOpbXUgc291Ym9yxa8gbmVuYWxlemVubyBuYSB6YcWZw616ZW7DrSDFvnVybsOhbHUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiWmHFmcOtemVuw60gxb51cm7DoWx1IG5lbHplIG5hbMOpenQuIE9kc3RyYW7Em25vIE5FQllMTy5cbiIKKyJDaHlixJtqw61jw60gemHFmcOtemVuw60gxb51cm7DoWx1IGx6ZSBvZGVicmF0IHDFmWVww61uYcSNZW0gLWYuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICLFvXVybsOhbCBvZHN0cmFuxJtuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIGJpdG1hcCIKKworIzogbWlzYy90dW5lMmZzLmM6Mzc3Cittc2dpZCAid2hpbGUgY2xlYXJpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAicMWZaSDEjWnFoXTEm27DrSBpdXpsdSDFvnVybsOhbHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAicMWZaSB6w6FwaXN1IGl1emx1IMW+dXJuw6FsdSIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKGEgcG8gdMOpIHJlYm9vdHVqdGUhKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWZ0ZXIgcnVubmluZyBlMmZzY2ssIHBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAicmVzaXplMmZzICVzICglcylcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJPZHN0cmFuxJtuw60gdmxhc3Rub3N0aSBzeXN0w6ltdSBzb3Vib3LFryDigJ4lc+KAnCBuZW7DrSBwb2Rwb3JvdsOhbm8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJOYXN0YXZlbsOhIHZsYXN0bm9zdGkgc3lzdMOpbXUgc291Ym9yxa8g4oCeJXPigJwgbmVuw60gcG9kcG9yb3bDoW5vLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIlDFmcOtem5hayBoYXNfam91cm5hbCBtxa/FvmUgYsO9dCB2eW1hesOhbiBqZW4sIGtkecW+IGplIHN5c3TDqW0gc291Ym9yxa9cbiIKKyJvZHBvamVuIG5lYm8gcMWZaXBvamVuIGplbiBwcm8gxI10ZW7DrS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIlDFmcOtem5hayBuZWVkc19yZWNvdmVyeSBqZSBuYXN0YXZlbi4gUMWZZWQgdnltYXrDoW7DrW0gcMWZw616bmFrdSBoYXNfam91cm5hbFxuIgorInByb3PDrW0gc3B1c8WldGUgZTJmc2NrLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJOYSBzb3Vib3JvdsO9Y2ggc3lzdMOpbWVjaCBzZSB6YXBudXRvdSB2bGFzdG5vc3TDrSBtZXRhX2JnIG5lbsOtIG5hc3RhdmVuw61cbiIKKyJ2bGFzdG5vc3RpIOKAnnNwYXJzZV9zdXBlcuKAnCBwb2Rwb3JvdsOhbm8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiT2NocmFudSBwxZllZCBuw6Fzb2Juw71tIHDFmWlwb2plbsOtbSBuZWx6ZSBuYXN0YXZpdCxcbiIKKyJwb2t1ZCBqZSBzeXN0w6ltIHNvdWJvcsWvIHDFmWlwb2plbiBuZWJvIGplLWxpIGplbiBwcm8gxI10ZW7DrS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWRzLlxuIgorbXNnc3RyICIiCisiT2NocmFuYSBwxZllZCBuw6Fzb2Juw71tIHDFmWlwb2plbsOtbSBieWxhIHphcG51dGEgc8KgaW50ZXJ2YWxlbSBha3R1YWxpemFjZSAiCisiJWTigK9zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKyJPY2hyYW51IHDFmWVkIG7DoXNvYm7DvW0gcMWZaWplbsOtbSBuZWx6ZSB2eXBub3V0LFxuIgorImplLWxpIHNvdWJvcm92w70gc3lzdMOpbSBqZW4gcHJvIMSNdGVuw60uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSDEjXRlbsOtIGJpdG1hcFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICIiCisiTWFnaWNrw6kgxI3DrXNsbyB2wqBibG9rdSBNTVAgc2UgbmVzaG9kdWplLiBPxI1la8OhdsOhbm86ICV4LCBza3V0ZcSNbm9zdDogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAicMWZaSDEjXRlbsOtIGJsb2t1IE1NUC4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKyJPZHN0cmFuxJtuw60gcMWZw616bmFrdSBmbGV4X2JnIGJ5IG1vaGxvIHpwxa9zb2JpdCBuZWtvbnppc3RlbmNpIHN5c3TDqW11XG4iCisic291Ym9yxa8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIlDFmcOtem5hayBodWdlX2ZpbGUgbcWvxb5lIGLDvXQgdnltYXrDoW4gamVuLCBrZHnFviBqZSBzeXN0w6ltIHNvdWJvcsWvXG4iCisib2Rwb2plbiBuZWJvIHDFmWlwb2plbiBqZW4gcHJvIMSNdGVuw60uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisiXG4iCisiUG96b3I6IHDFmWVww61uYcSNIOKAnl5xdW90YeKAnCBwxZllYmlqZSBhcmd1bWVudHkg4oCe4oCTUeKAnC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorIywgZnV6enkKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJOYSBzb3Vib3JvdsO9Y2ggc3lzdMOpbWVjaCBzZSB6YXBudXRvdSB2bGFzdG5vc3TDrSBtZXRhX2JnIG5lbsOtIG5hc3RhdmVuw61cbiIKKyJ2bGFzdG5vc3RpIOKAnnNwYXJzZV9zdXBlcuKAnCBwb2Rwb3JvdsOhbm8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJTeXN0w6ltIHNvdWJvcsWvIGppxb4gxb51cm7DoWwgbcOhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgb24gJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlx0cMWZaSBwb2t1c3Ugb3RldsWZw610IMW+dXJuw6FsIG5hICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiVnl0dsOhxZnDrSBzZSDFvnVybsOhbCBuYSB6YcWZw616ZW7DrSAlczogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgInDFmWkgcMWZaWTDoXbDoW7DrSBzeXN0w6ltdSBzb3Vib3LFryBkbyDFvnVybsOhbHUgbmEgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDYKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiCittc2dzdHIgIlZ5dHbDocWZw60gc2UgaXV6ZWwgxb51cm7DoWx1OiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0cMWZaSBwb2t1c3Ugdnl0dm/FmWl0IHNvdWJvciDFvnVybsOhbHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJwxZlpIGluaWNpYWxpemFjaSBzdXBlcmJsb2t1IMW+dXJuw6FsdSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgInDFmWkgYWt0dWFsaXphY2kgaXV6bHUgxaFwYXRuw71jaCBibG9rxa8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJwxZlpIHrDoXBpc3UgaXV6bHUgJWx1IHbCoCVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgInDFmWkgxI10ZW7DrSBrb8WZZW5vdsOpaG8gaXV6bHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiWmFkw6FueSBjaHlibsOpIHDFmWVww61uYcSNZSBrdsOzdHkuXG4iCisiXG4iCisiTsOhc2xlZHVqw60gZG9zdHVwbsOpIHBsYXRuw6kgcMWZZXDDrW5hxI1lIGt2w7N0eSAob2RkxJtsdWrDrSBzZSDEjcOhcmtvdSk6XG4iCisiXHRbXl11c3JxdW90YSAgKGt2w7N0eSB1xb5pdmF0ZWzFrylcbiIKKyJcdFteXWdycHF1b3RhICAoa3bDs3R5IHNrdXBpbilcbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiTmVtb2h1IHpwcmFjb3ZhdCB1csSNZW7DrSBkYXRhL8SNYXN1OiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTY1OCBtaXNjL3R1bmUyZnMuYzoxNjcxCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBtb3VudHMgY291bnQgLSAlcyIKK21zZ3N0ciAixaFwYXRuw70gcG/EjWV0IHDFmWlwb2plbsOtIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGdpZC9ncm91cCBuYW1lIC0gJXMiCittc2dzdHIgIsWhcGF0bsOpIGdpZC9qbcOpbm8gc2t1cGlueSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICLFoHBhdG7DvSBpbnRlcnZhbCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICLFoXBhdG7DvSBwb2TDrWwgcmV6ZXJ2b3ZhbsO9Y2ggYmxva8WvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gbcWvxb5lIGLDvXQgemFkw6FubyBqZW4gamVkbm91IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1PIG3Fr8W+ZSBiw710IHphZMOhbm8gamVuIGplZG5vdSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIsWhcGF0bsO9IHBvxI1ldCByZXplcnZvdmFuw71jaCBibG9rxa8gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdWlkL3VzZXIgbmFtZSAtICVzIgorbXNnc3RyICLFoXBhdG7DqSB1aWQvam3DqW5vIHXFvml2YXRlbGUgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICLFoXBhdG7DoSB2ZWxpa29zdCBpdXpsdcKg4oCTICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIlZlbGlrb3N0IGl1emx1IG11c8OtIGLDvXQgbW9jbmluYSBkdm91wqDigJMgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAiaW50ZXJ2YWxfYWt0dWFsaXphY2VfbW1wIGplIHDFmcOtbGnFoSB2ZWxrw706ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICIiCisiTmFzdGF2dWplIHNlIGludGVydmFsIGFrdHVhbGl6YWNlIG9jaHJhbnkgcHJvdGkgbsOhc29ibsOpbXUgcMWZaXBvamVuw60gbmEgJSdsdSAiCisic2VrdW5kdVxuIgorbXNnc3RyWzFdICIiCisiTmFzdGF2dWplIHNlIGludGVydmFsIGFrdHVhbGl6YWNlIG9jaHJhbnkgcHJvdGkgbsOhc29ibsOpbXUgcMWZaXBvamVuw60gbmEgJSdsdSAiCisic2VrdW5keVxuIgorbXNnc3RyWzJdICIiCisiTmFzdGF2dWplIHNlIGludGVydmFsIGFrdHVhbGl6YWNlIG9jaHJhbnkgcHJvdGkgbsOhc29ibsOpbXUgcMWZaXBvamVuw60gbmEgJSdsdSAiCisic2VrdW5kXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlkZTogJXNcbiIKK21zZ3N0ciAiTmVwbGF0bsO9IGtyb2t1IChzdHJpZGUpIFJBSUR1OiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCittc2dzdHIgIk5lcGxhdG7DoSDFocOtxZlrYSBwcnVodSBSQUlEdSAoc3RyaXBlLXdpZHRoKTogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICJOZXBsYXRuw70gaGFzaG92YWPDrSBhbGdvcml0bXVzOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIkltcGxpY2l0bsOtIGhhc2hvdmFjw60gYWxnb3JpdG11cyBzZSBuYXN0YXZ1amUgbmEgJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiWmFkw6FueSDFoXBhdG7DqSBwxZllcMOtbmHEjWUuXG4iCisiXG4iCisiUm96xaHDrcWZZW7DqSBwxZllcMOtbmHEjWUgc2Ugb2RkxJtsdWrDrSDEjcOhcmthbWkgYSBtb2hvdSBtw610IGFyZ3VtZW50LCBrdGVyw70gamVcbiIKKyJcdG9kZMSbbGVuIHpuYW3DqW5rZW0gcm92bsOhIHNlICjigJ494oCcKS5cbiIKKyJcbiIKKyJQbGF0bsOpIHJvesWhw63FmWVuw6kgcMWZZXDDrW5hxI1lIGpzb3U6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNob3ZhY8OtIGFsZ29yaXRtdXM+XG4iCisiXHRtb3VudF9vcHRzPTxyb3rFocOtxZllbsOpIHDFmWVww61uYcSNZSBpbXBsaWNpdG7DrSBwxZlpIHDFmWlwb2plbsOtPlxuIgorIlx0c3RyaWRlPTx2ZWxpa29zdCBzaGx1a3UgKGNodW5rKSBuYSBqZWRub20gcmFpZG92w6ltIGRpc2t1IHbCoGJsb2PDrWNoPlxuIgorIlx0c3RyaXBlX3dpZHRoPTxrcm9rIChzdHJpZGUpIFJBSUR1ICogZGF0b3bDvWNoIGRpc2vFryB2wqBibG9jw61jaD5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdF50ZXN0X2ZzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MTkKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbm9kZSBiaXRtYXBcbiIKK21zZ3N0ciAixIx0ZW7DrSBiaXRtYXB5IGl1emzFryBzZWxoYWxvLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIsSMdGVuw60gYml0bWFweSBibG9rxa8gc2VsaGFsb1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJibG9reSBwcm8gcMWZZXN1biIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiQsSbaGVtIHp2xJt0xaFvdsOhbsOtIGl1emx1IHNlbGhhbGEgYWxva2FjZSBiaXRtYXB5IGJsb2vFr1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICJOZWRvc3RhdGVrIG3DrXN0YSBwcm8genbEm3TFoWVuw60gaXV6bHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1NQorbXNnaWQgIkZhaWxlZCB0byByZWxvY2F0ZSBibG9ja3MgZHVyaW5nIGlub2RlIHJlc2l6ZSBcbiIKK21zZ3N0ciAiQsSbaGVtIHptxJtueSB2ZWxpa29zdGkgaXV6bHUgc2VsaGFsYSByZWFsb2thY2UgYmxva8WvXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIkNoeWJhIHDFmWkgbcSbbsSbbsOtIHZlbGlrb3N0IGl1emx1LlxuIgorIlNwdXPFpXRlIGUydW5kbywgYWJ5c3RlIHZyw6F0aWxpIHptxJtueSBwcm92ZWRlbsOpIG5hIHN5c3TDqW11IHNvdWJvcsWvLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5IHJ1bm5pbmc6XG4iCisiJ2UyZnNjayAtZiAlcydcbiIKK21zZ3N0ciAiIgorIk1hZ2lja8OpIMSNw61zbG8gYmxva3UgTU1QIGplIGNoeWJuw6kuIE3Fr8W+ZXRlIGplaiB6a3VzaXQgb3ByYXZpdCBwb21vY8OtOlxuIgorIuKAnmUyZnNjayAtZiAlc+KAnFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgbmVuw60gemHFmcOtemVuw60gxb51cm7DoWx1LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBpbm9kZSBzaXplIGlzIGFscmVhZHkgJWx1XG4iCittc2dzdHIgIlZlbGlrb3N0IGl1emx1IGppxb4gamUgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIlptZW7FoW92w6Fuw60gdmVsaWtvc3RpIGl1emx1IG5lbsOtIHBvZHBvcm92w6Fub1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaW5vZGUgc2l6ZSAlbHUgKG1heCAlZClcbiIKK21zZ3N0ciAixaFwYXRuw6EgdmVsaWtvc3QgaXV6bHUgJWx1IChtYXggJWQpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4NDIKK21zZ2lkICJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSBtYXhpbcOhbG7DrSBwb8SNZXQgcMWZaXBvamVuw60gbmEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiTmFzdGF2dWplIHNlIGFrdHXDoWxuw60gcG/EjWV0IHDFmWlwb2plbsOtIG5hICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJOYXN0YXZ1amUgc2UgY2hvdsOhbsOtIHDFmWkgY2h5YsOhY2ggbmEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSBHSUQgcmV6ZXJ2b3ZhbsO9Y2ggYmxva8WvIG5hICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgImludGVydmFsIG1lemkga29udHJvbGFtaSBqZSBwxZnDrWxpxaEgZGxvdWjDvSAoJSdsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICJJbnRlcnZhbCBtZXppIGtvbnRyb2xhbWkgc2UgbmFzdGF2dWplIG5hICUnbHUgc2VrdW5kXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgcGVyY2VudGFnZSB0byAlZyUlICglbGx1IGJsb2NrcylcbiIKK21zZ3N0ciAiUHJvY2VudG8gcmV6ZXJ2b3ZhbsO9Y2ggYmxva8WvIHNlIG5hc3RhdnVqZSBuYSAlZ+KAryUlICglJ2xsdSBibG9rxa8pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICJwb8SNZXQgcmV6ZXJ2b3ZhbsO9Y2ggYmxva8WvIGplIHDFmcOtbGnFoSB2ZWxrw70gKCUnbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIlBvxI1ldCByZXplcnZvdmFuw71jaCBibG9rxa8gc2UgbmFzdGF2dWplIG5hICUnbGx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisiU3lzdMOpbSBzb3Vib3LFryBqacW+IG3DoSDFmcOtZGvDqSBzdXBlcmJsb2t5LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk5hIHNvdWJvcm92w71jaCBzeXN0w6ltZWNoIHNlIHphcG51dG91IHZsYXN0bm9zdMOtIG1ldGFfYmcgbmVuw60gbmFzdGF2ZW7DrVxuIgorInDFmcOtem5ha3UgxZnDrWRrw6lobyBzdXBlcmJsb2t1IHBvZHBvcm92w6Fuby5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIlDFmcOtem5hayDFmcOtZGvDvWNoIHN1cGVyYmxva8WvIG5hc3RhdmVuLiAgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk9kc3RyYW7Em27DrSBwxZnDrXpuYWt1IMWZw61ka8OpaG8gc3VwZXJibG9rdSBuZW7DrSBwb2Rwb3JvdsOhbm8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIk5hc3RhdnVqZSBzZSDEjWFzIHBvc2xlZG7DrSBrb250cm9seSBzeXN0w6ltdSBzb3Vib3LFryBuYSAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAiTmFzdGF2dWplIHNlIFVJRCByZXplcnZvdmFuw71jaCBibG9rxa8gbmEgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIkNoeWJuw6kgcG91xb5pdMOtIGNsZWFyX21tcC4gSmUgdMWZZWJhIGplaiBwb3XFvsOtdCBzwqAtZlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIlZsYXN0bm9zdCBrdsOzdHkgc23DrSBiw710IHptxJtuxJtuYSwgamVuIGtkecW+IGplIHN5c3TDqW0gc291Ym9yxa8gb2Rwb2plbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA0OAorbXNnaWQgIlRoZSBVVUlEIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIlVVSUQgc23DrSBiw710IHptxJtuxJtubywgamVuIGtkecW+IGplIHN5c3TDqW0gc291Ym9yxa8gb2Rwb2plbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAiTmVwbGF0bsO9IGZvcm3DoXQgVVVJRFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJKZSB0xZllYmEgYWt0dWFsaXpvdmF0IHN1cGVyYmxvayDFvnVybsOhbHUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMjYKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICJWZWxpa29zdCBpdXpsdSBzbcOtIGLDvXQgem3Em27Em25hLCBqZW4ga2R5xb4gamUgc3lzdMOpbSBzb3Vib3LFryBvZHBvamVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJOYSBzb3Vib3JvdsO9Y2ggc3lzdMOpbWVjaCBzZSB6YXBudXRvdSB2bGFzdG5vc3TDrSBmbGV4X2JnIG5lbsOtIHptxJtuYSAiCisidmVsaWtvc3RpXG4iCisiaXV6bHUgcG9kcG9yb3bDoW5hLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiVmVsaWtvc3QgaXV6bHUgc2UgbmFzdGF2dWplIG5hICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIlptxJtuYSB2ZWxpa29zdGkgaXV6bHUgc2VsaGFsYS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlkZSBzaXplIHRvICVkXG4iCittc2dzdHIgIlZlbGlrb3N0IGtyb2t1IChzdHJpZGUpIHNlIG5hc3RhdnVqZSBuYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgIsWgw63FmWthIHBydWh1IChzdHJpcGUgd2lkdGgpIHNlIG5hc3RhdnVqZSBuYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiSW1wbGljaXRuw60gcm96xaHDrcWZZW7DqSBwxZllcMOtbmHEjWUgcMWZaSBwxZnDrXBvamVuw60gc2UgbmFzdGF2dWrDrSBuYSDigJ4lc+KAnFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICIlczogb2Jub3Z1amUgc2Ugxb51cm7DoWxcbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIjxwb2tyYcSNdWplIHNlPlxuIgorCisjIFRPRE86IFBsdXJhbGl6ZQorIzogbWlzYy91dGlsLmM6MTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2NlZWQgYW55d2F5IChvciB3YWl0ICVkIHNlY29uZHMpID8gKHksbikgIgorbXNnc3RyICJQxZllc3RvIHBva3JhxI1vdmF0IChuZWJvIHBvxI1rYXQgJWQgc2VrdW5kKT8gKGEsbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJQxZllc3RvIHBva3JhxI1vdmF0PyAoYSxuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICJta2UyZnMgcMWZZXN0byB2eW51Y2VuLiBEb3Vmw6FtLCDFvmUgL2V0Yy9tdGFiIGplIG5lc3Byw6F2bsOhLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iCittc2dzdHIgIm5lYnVkdSB0YWR5IHZ5dHbDocWZZXQgJXMhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJta2UyZnMgc3Rlam7EmyB2eW51Y2VuLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxNjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugam91cm5hbCBvcHRpb25zIVxuIgorbXNnc3RyICJOZW1vaHUgYWxva292YXQgcGFtxJvFpSBwcm8genByYWNvdsOhbsOtIHDFmWVww61uYcSNxa8gxb51cm7DoWx1IVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCBmaW5kIGpvdXJuYWwgZGV2aWNlIG1hdGNoaW5nICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJOZWJ5bG8gbW/Fvm7DqSBuYWrDrXQgxb51cm7DoWxvdmFjw60gemHFmcOtemVuw60gb2Rwb3bDrWRhasOtY8OtICVzXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlphZMOhbnkgxaFwYXRuw6kgcMWZZXDDrW5hxI1lIMW+dXJuw6FsdS5cbiIKKyJcbiIKKyJQxZllcMOtbmHEjWUgxb51cm7DoWx1IHNlIG9kZMSbbHVqw60gxI3DoXJrYW1pIGEgbW9ob3UgbcOtdCBhcmd1bWVudCwga3RlcsO9IGplXG4iCisiXHRvZGTEm2xlbiB6bmFtw6lua2VtIHJvdm7DoSBzZSAo4oCePeKAnCkuXG4iCisiXG4iCisiUGxhdG7DqSBwxZllcMOtbmHEjWUgxb51cm7DoWx1IGpzb3U6XG4iCisiXHRzaXplPTx2ZWxpa29zdCDFvnVybsOhbHUgdsKgbWVnYWJhanRlY2g+XG4iCisiXHRkZXZpY2U9PHphxZnDrXplbsOtIMW+dXJuw6FsdT5cbiIKKyJcdGxvY2F0aW9uPTx1bcOtc3TEm27DrSDFvnVybsOhbHU+XG4iCisiXG4iCisiVmVsaWtvc3Qgxb51cm7DoWx1IG11c8OtIGLDvXQgbWV6aSAxMDI0IGEgMTAyNDAwMDAgYmxva3kgc3lzdMOpbXUgc291Ym9yxa8uXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTeXN0w6ltIHNvdWJvcsWvIHDFmcOtbGnFoSBtYWzDvSBuYSDFvnVybsOhbFxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJQb8W+YWRvdmFuw6EgdmVsaWtvc3Qgxb51cm7DoWx1IGplICUnZCBibG9rxa87IG11c8OtIGLDvXRcbiIKKyJtZXppIDEwMjQgYSAxMDI0MDAgYmxva3kuIEtvbsSNw61tLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJWZWxpa29zdCDFvnVybsOhbHUgcMWZw61sacWhIHZlbGvDoSBwcm8gc3lzdMOpbSBzb3Vib3LFry5cbiIKKworIzogbWlzYy91dGlsLmM6MjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIGZpbGVzeXN0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgZXZlcnkgJWQgbW91bnRzIG9yXG4iCisiJWcgZGF5cywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iCittc2dzdHIgIiIKKyJUZW50byBzeXN0w6ltIHNvdWJvcsWvIGJ1ZGUgYXV0b21hdGlja3kga29udHJvbG92w6FuIGthxb5kw71jaCAlZCBwxZlpcG9qZW7DrSBuZWJvXG4iCisiJWcgZG7DrSwgcG9kbGUgdG9obywgY28gbmFzdGFuZSBkxZnDrXZlLiBQcm8gem3Em251IHBvdcW+aWp0ZSB0dW5lMmZzIC1jIG5lYm8gLSIKKyJpLlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLWRdIFstcCBTT1VCT1JfU19QSURdIFstcyBDRVNUQV9LX1NPQ0tFVFVdIFstVCBMSMWuVEFdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgJXMgWy1yfHRdIFstbiBQT8SMRVRdIFstcyBDRVNUQV9LX1NPQ0tFVFVdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiICAgICAgICVzIC1rXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICJjaHlibsOpIGFyZ3VtZW50eSIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgInDFmWlwb2plbsOtIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgInrDoXBpcyIKKworIzogbWlzYy91dWlkZC5jOjIwMAorbXNnaWQgInJlYWQgY291bnQiCittc2dzdHIgIsSNdGVuw60gcG/EjXR1IgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiY2h5Ym7DoSBkw6lsa2Egb2Rwb3bEm2RpIgorCisjOiBtaXNjL3V1aWRkLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgInV1aWRkIGRhZW1vbiBhbHJlYWR5IHJ1bm5pbmcgYXQgcGlkICVzXG4iCittc2dzdHIgImTDqW1vbiB1dWlkZCBqacW+IGLEm8W+w60gamFrbyBQSUQgJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiTmVieWxvIG1vxb5uw6kgdnl0dm/FmWl0IHVuaXhvdsO9IHByb3Vkb3bDvSBzb2NrZXQ6ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIlVuaXhvdsO9IHNvY2tldCBuZWJ5bG8gbW/Fvm7DqSBwxZlpbGVwaXQga8KgJXM6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJOYSB1bml4b3bDqW0gc29ja2V0dSAlcyBuZWJ5bG8gbW/Fvm7DqSB6YcSNw610IHBvc2xvdWNoYXQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSDEjXRlbsOtIHrCoGtsaWVudGEsIGTDqWxrYSA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICJvcGVyYWNlICVkLCBwxZnDrWNob3rDrSBwb8SNZXQgPSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQ6ICVzXG4iCittc2dzdHIgIlZ5dHZvxZllbm8gxI1hc292w6kgVVVJRDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM5MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgcmFuZG9tIFVVSUQ6ICVzXG4iCittc2dzdHIgIlZ5dHZvxZllbm8gbsOhaG9kbsOpIFVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAiVnl0dm/FmWVubyDEjWFzb3bDqSBVVUlEICVzIGEgJWQgbsOhc2xlZHVqw61jw61cbiIKK21zZ3N0clsxXSAiVnl0dm/FmWVubyDEjWFzb3bDqSBVVUlEICVzIGEgJWQgbsOhc2xlZHVqw61jw61cbiIKK21zZ3N0clsyXSAiVnl0dm/FmWVubyDEjWFzb3bDqSBVVUlEICVzIGEgJWQgbsOhc2xlZHVqw61jw61jaFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIlZ5dHZvxZllbm8gJWQgVVVJRDpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICJOZXBsYXRuw6Egb3BlcmFjZSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDc3IG1pc2MvdXVpZGQuYzo0OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIG51bWJlcjogJXNcbiIKK21zZ3N0ciAiQ2h5Ym7DqSDEjcOtc2xvOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTM0IG1pc2MvdXVpZGQuYzo1NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAiQ2h5YmEgcMWZaSB2b2zDoW7DrSBkw6ltb25hIHV1aWRkICglcyk6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIlcyBhIG7DoXNsZWR1asOtY8OtICVkIFVVSURcbiIKK21zZ3N0clsxXSAiJXMgYSBuw6FzbGVkdWrDrWPDrSAlZCBVVUlEXG4iCittc2dzdHJbMl0gIiVzIGEgbsOhc2xlZHVqw61jw61jaCAlZCBVVUlEXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDgKK21zZ2lkICJMaXN0IG9mIFVVSUQnczpcbiIKK21zZ3N0ciAiU2V6bmFtIFVVSUQ6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiTmVvxI1la8OhdmFuw6EgZMOpbGthIG9kcG92xJtkaSB6ZSBzZXJ2ZXJ1ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTmVieWxvIG1vxb5uw6kgemFiw610IHV1aWRkIHPCoFBJRCAlZDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU5MgorIywgYy1mb3JtYXQKK21zZ2lkICJLaWxsZWQgdXVpZGQgcnVubmluZyBhdCBwaWQgJWRcbiIKK21zZ3N0ciAiWmFiaXQgdXVpZGQgc8KgUElEICVkXG4iCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiUG91xb5pdMOtOiAlcyBbLXJdIFstdF1cbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiMgVsO9cGlzIHJvenNhaHU6XG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiI1x0TnVtPSVsbHUsIFNpemU9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRlZD0lbGx1XG4iCittc2dzdHIgIiNcdMSMw61zPSVsbHUsIFZlbGlrb3N0PSVsbHUsIEt1cnpvcj0lbGx1LCBTZcWZYXplbm89JWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIGRldmljZSBbLWJ8LXN8bmV3X3NpemVdICIKKyJbLXogdW5kb19maWxlXVxuIgorIlxuIgorbXNnc3RyICIiCisiUG91xb5pdMOtOiAlcyBbLWQgbGFkaWPDrV9wxZllcMOtbmHEjWVdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXVxuIgorIiAgICAgICAgIHphxZnDrXplbsOtIFtub3bDoV92ZWxpa29zdF1cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIlp2xJt0xaF1amkgdGFidWxrdSBpdXpsxa8iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzUKK21zZ2lkICJSZWxvY2F0aW5nIGJsb2NrcyIKK21zZ3N0ciAiUMWZZXNvdXbDoW0gYmxva3kiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiUHJvY2jDoXrDrW0gdGFidWxrdSBpdXpsxa8iCisKKyM6IHJlc2l6ZS9tYWluLmM6ODEKK21zZ2lkICJVcGRhdGluZyBpbm9kZSByZWZlcmVuY2VzIgorbXNnc3RyICJBa3R1YWxpenVqaSBvZGthenkgbmEgaXV6bHkiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIlDFmWVzb3V2w6FtIHRhYnVsa3UgaXV6bMWvIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJOZXpuw6Ftw70gcHLFr2Nob2Q/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICJaYcSNw6F0ZWsgcHLFr2Nob2R1ICVkIChtYXggPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJabcSbbmEgdmVsaWtvc3RpIHNvdWJvcm92w6lobyBzeXN0w6ltdSBzwqB2bGFzdG5vc3TDrSBiaWdhbGxvYyBuZW7DrSBwbG7Em1xuIgorIm90ZXN0b3bDoW5hLiBQb2tyYcSNb3bDoW7DrSBqZW4gbmEgdmxhc3Ruw60gbmViZXpwZcSNw60hIFDFmWVqZXRlLWxpIHNpIHBva3JhxI1vdmF0LFxuIgorInBvdcW+aWp0ZSBwxZllcMOtbmHEjSB2eW51Y2Vuw60uXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgInDFmWkgb3RldsOtcsOhbsOtICVzIgorCisjOiByZXNpemUvbWFpbi5jOjM3MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICJwxZlpIHpqacWhxaVvdsOhbsOtIHN0YXQgaW5mb3JtYWPDrSBvICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlNwdXPFpXRlIHByb3PDrW0gbmVqZMWZw612ZSDigJ5lMmZzY2sgLWYgJXPigJwuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAiT2RoYWRvdmFuw6EgbWluaW3DoWxuw60gdmVsaWtvc3Qgc3lzdMOpbXUgc291Ym9yxa86ICVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAiQ2h5Ym7DoSBub3bDoSB2ZWxpa29zdDogJXNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiTm92w6EgdmVsaWtvc3QgamUgcMWZw61sacWhLCBhYnkgYnlsYSB2eWrDoWTFmWVuYSB2ZSAzMiBiaXRlY2hcbiIKKworIzogcmVzaXplL21haW4uYzo1MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTmV3IHNpemUgc21hbGxlciB0aGFuIG1pbmltdW0gKCVsbHUpXG4iCittc2dzdHIgIk5vdsOhIHZlbGlrb3N0IGplIG1lbsWhw60gbmXFviBtaW5pbXVtICglbGx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiTmVwbGF0bsOhIGTDqWxrYSBrcm9rdSIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRvdMSNZW7DvSBvZGTDrWwgKG5lYm8gemHFmcOtemVuw60pIGplIGplbiAlJ2xsdSAoJWRrKSBibG9rxa8gdmVsa8OpLlxuIgorIlBvxb5hZG92YWxpIGpzdGUgbm92b3UgdmVsaWtvc3QgJSdsbHUgYmxva8WvLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIgorbXNnc3RyICJWbGFzdG5vc3Qga3bDs3R5IHNtw60gYsO9dCB6bcSbbsSbbmEsIGplbiBrZHnFviBqZSBzeXN0w6ltIHNvdWJvcsWvIG9kcG9qZW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJTb3Vib3JvdsO9IHN5c3TDqW0gamnFviBqZSBkbG91aMO9ICUnbGx1ICglZGspIGJsb2vFry4gTmVuw60gY28gZMSbbGF0IVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIlN5c3TDqW0gc291Ym9yxa8gamnFviDFvnVybsOhbCBtw6EuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDMyLWJpdC5cbiIKK21zZ3N0ciAiU3lzdMOpbSBzb3Vib3LFryBqacW+IMW+dXJuw6FsIG3DoS5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICJOYXN0YXZ1amUgc2UgxI1hcyBwb3NsZWRuw60ga29udHJvbHkgc3lzdMOpbXUgc291Ym9yxa8gbmEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJOYXN0YXZ1amUgc2UgxI1hcyBwb3NsZWRuw60ga29udHJvbHkgc3lzdMOpbXUgc291Ym9yxa8gbmEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIlZlbGlrb3N0IHN5c3TDqW11IHNvdWJvcsWvICVzIHNlIG3Em27DrSBuYSAlJ2xsdSAoJWRrKSBibG9rxa8uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgInDFmWkgcG9rdXN1IHptxJtuaXQgdmVsaWtvc3QgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWZ5ICVzJyB0byBmaXggdGhlIGZpbGVzeXN0ZW1cbiIKKyJhZnRlciB0aGUgYWJvcnRlZCByZXNpemUgb3BlcmF0aW9uLlxuIgorbXNnc3RyICIiCisiUG8gcMWZZXJ1xaFlbsOpIHptxJtuxJsgdmVsaWtvc3RpLCBwcm9zw61tLCBvcHJhdnRlIHNvdWJvcm92w70gc3lzdMOpbSBwb21vY8OtXG4iCisi4oCeZTJmc2NrIC1meSAlc+KAnFxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJTeXN0w6ltIHNvdWJvcsWvIG5hICVzIGplIG55bsOtICUnbGx1ICglZGspIGJsb2vFryBkbG91aMO9LlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgInDFmWkgcG9rdXN1IHprcsOhdGl0ICVzIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAiasOhZHJvIG5lcG9kcG9ydWplIHptxJtudSB2ZWxpa29zdCB6YSBixJtodSBzZSBzcGFyc2Vfc3VwZXIyIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKyJTeXN0w6ltIHNvdWJvcsWvIHYgJXMgamUgcMWZaXBvamVuIGRvICVzLFxuIgorInBvxb5hZG92w6FuYSB6bcSbbmEgdmVsaWtvc3RpIHphIGLEm2h1LlxuIgorCisjOiByZXNpemUvb25saW5lLmM6OTAKK21zZ2lkICJPbi1saW5lIHNocmlua2luZyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJabWVuxaFvdsOhbsOtIHphIGLEm2h1IG5lbsOtIHBvZHBvcm92w6FubyIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIlN5c3TDqW0gc291Ym9yxa8gbmVwb2Rwb3J1amUgem3Em251IHZlbGlrb3N0aSB6YSBixJtodSIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIk5lZG9zdGF0ZWsgcmV6ZXJ2b3ZhbsO9Y2ggR0RUIGJsb2vFryBwcm8gem3Em251IHZlbGlrb3N0aSB6YSBixJtodSIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiSsOhZHJvIG5lcG9kcG9ydWplIHptxJtudSB2ZWxpa29zdGkgc291Ym9yb3bDqWhvIHN5c3TDqW11IG5hIHR1dG8gdmVsaWtvc3QiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIKK21zZ3N0ciAicMWZaSBwb2t1c3Ugb3RldsWZw610IHDFmcOtcG9qbsO9IGJvZCAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIlZ5xb7DoWTDoW5vIHN0YXLDqSByb3pocmFuw60gcHJvIHptxJtudSB2ZWxpa29zdGkuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjEgcmVzaXplL29ubGluZS5jOjE3OAorbXNnaWQgIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIgorbXNnc3RyICJQb3ZvbGVuw60ga2Ugem3Em27EmyB2ZWxpa29zdGkgc3lzdMOpbXUgc291Ym9yxa8gemFtw610bnV0byIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiUMWZaSB6amnFocWlb3bDoW7DrSBwb2Rwb3J5IHptxJtueSB2ZWxpa29zdGkgemEgYsSbaHUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxODEKK21zZ2lkICJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIkrDoWRybyBuZXBvZHBvcnVqZSB6bcSbbnUgdmVsaWtvc3QgemEgYsSbaHUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiTcSbbsOtIHNlIHZlbGlrb3N0aSB6YSBixJtodSAlcyBuYSAlJ2xsdSAoJWRrKSBibG9rxa8uXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJQxZlpIHBva3VzdSByb3rFocOtxZlpdCBwb3NsZWRuw60gc2t1cGludSIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gYWRkIGdyb3VwICMlZCIKK21zZ3N0ciAiUMWZaSBwb2t1c3UgcMWZaWRhdCBza3VwaW51IMSNLsKgJWQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJTeXN0w6ltIHNvdWJvcsWvIHbCoCVzIGplIHDFmWlwb2plbiBkbyAlcyBhIHptxJtuYSB2ZWxpa29zdCB6YSBixJtodSBuZW7DrSBuYSB0b210byAiCisic3lzdMOpbXUgcG9kcG9yb3bDoW5hLlxuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgIml1emzFryAoJSdsbHUpIG11c8OtIGLDvXQgbcOpbsSbIG5lxb4gJSd1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAicmV6ZXJ2b3ZhbsOpIGJsb2t5IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgImJsb2t5IG1ldGEtZGF0IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibm92w6kgbWV0YSBibG9reSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKyJUb3RvIGJ5IG5pa2R5IG5lbcSbbG8gc3TDoXQhIMW+w6FkbsO9IHN1cGVyYmxvayB2wqBwb3NsZWRuw61tIHN1cGVyX3NwYXJzZSBiZz9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKyJUb3RvIGJ5IHNlIG5pa2R5IG5lbcSbbG8gc3TDoXQhIE5lb8SNZWvDoXZhbsO9IG9sZF9kZXNjIHbCoHN1cGVyX3NwYXJzZSBiZz9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIlRvdG8gYnkgc2UgbmlrZHkgbmVtxJtsbyBzdMOhdDogaXV6bHkgcHJvIHptxJtudSB2ZWxpa29zdGkganNvdSBwb8Wha296ZW55IVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKKyMsIGZ1enp5Cittc2dpZCAiRVhUMkZTIExpYnJhcnkgdmVyc2lvbiAxLjQzLjIiCittc2dzdHIgIktuaWhvdm5hIEVYVDJGUyB2ZXJ6ZSAxLjQyLjEyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvIHBybyBzdHJ1a3R1cnUgZXh0Ml9maWxzeXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHN0cnVrdHVydSBiYWRibG9ja3NfbGlzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGJhZGJsb2Nrc19pdGVyYXRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHN0cnVrdHVydSBpbm9kZV9zY2FuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHN0cnVrdHVydSBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gdW5peG92b3Ugc3RydWt0dXJ1IGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGlvX21hbmFnZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvIHBybyBzdHJ1a3R1cnUgYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGlub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGdlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHN0cnVrdHVydSBzZXpuYW11IGJsb2vFryBhZHJlc8OhxZnFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHN0cnVrdHVydSBpY291bnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvIHBybyBzdHJ1a3R1cnUgUG93ZXJxdWVzdCBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gZXh0MiBzdHJ1a3R1cnUgc291Ym9ydSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvIHBybyBobGF2acSNa3Ugb2JyYXp1IGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gc3RydWt0dXJ1IGlvX2NoYW5uZWwgaXV6bHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIHBvcGlzb3ZhxI0gcm96c2FodSBleHQ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gdsKgc3VwZXJibG9rdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiUmV2aXplIHN5c3TDqW11IHNvdWJvcsWvIGplIHDFmcOtbGnFoSB2eXNva8OhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAiUG9rdXMgemFwc2F0IGRvIHNvdWJvcm92w6lobyBzeXN0w6ltdSwga3RlcsO9IGplIGplbiBwcm8gxI10ZW7DrSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiRGVza3JpcHRvcnkgc2t1cGluIG5lbHplIHDFmWXEjcOtc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJEZXNrcmlwdG9yeSBza3VwaW4gbmVsemUgemFwc2F0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzUKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwIgorbXNnc3RyICJQb8Wha296ZW7DvSBkZXNrcmlwdG9yIHNrdXBpbnk6IGNoeWJuw70gYmxvayBwcm8gYml0bWFwdSBibG9rxa8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNgorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAiCittc2dzdHIgIlBvxaFrb3plbsO9IGRlc2tyaXB0b3Igc2t1cGlueTogY2h5Ym7DvSBibG9rIHBybyBiaXRtYXB1IGl1emzFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICJQb8Wha296ZW7DvSBkZXNrcmlwdG9yIHNrdXBpbnk6IGNoeWJuw70gYmxvayBwcm8gdGFidWxrdSBpdXpsxa8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOAorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiQml0bWFwdSBpdXpsxa8gbmVsemUgemFwc2F0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiQml0bWFwdSBpdXpsxa8gbmVsemUgcMWZZcSNw61zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIkJpdG1hcHUgYmxva8WvIG5lbHplIHphcHNhdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiQml0bWFwdSBibG9rxa8gbmVsemUgcMWZZcSNw61zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIlRhYnVsa3UgaXV6bMWvIG5lbHplIHphcHNhdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiVGFidWxrdSBpdXpsxa8gbmVsemUgcMWZZcSNw61zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICJOw6FzbGVkdWrDrWPDrSBpdXplbCBuZWx6ZSBwxZllxI3DrXN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgIlN5c3TDqW0gc291Ym9yxa8gbcOhIG5lxI1la2Fub3UgdmVsaWtvc3QgYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NgorbXNnaWQgIkVYVDIgZGlyZWN0b3J5IGNvcnJ1cHRlZCIKK21zZ3N0ciAiQWRyZXPDocWZIGV4dDIgcG/FoWtvemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIlBva3VzIHDFmWXEjcOtc3QgYmxvayB6ZSBzeXN0w6ltdSBzb3Vib3LFryB2ecO6c3RpbCB2ZSB6a3LDoWNlbsOpIMSNdGVuw60iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiUG9rdXMgemFwc2F0IGJsb2sgZG8gc3lzdMOpbXUgc291Ym9yxa8gdnnDunN0aWwgdmUgemtyw6FjZW7DvSB6w6FwaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gdGhlIGRpcmVjdG9yeSIKK21zZ3N0ciAiVsKgYWRyZXPDocWZaSBuZW7DrSB2b2xuw6kgbcOtc3RvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQml0bWFwYSBpdXpsxa8gbmVuw60gbmHEjXRlbmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MQorbXNnaWQgIkJsb2NrIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJCaXRtYXBhIGJsb2vFryBuZW7DrSBuYcSNdGVuYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIk5lcGxhdG7DqSDEjcOtc2xvIGl1emx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTMKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiTmVwbGF0bsOpIMSNw61zbG8gYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICJWbml0xZluw60gY2h5YmEgZXh0MmZzX2V4cGFuZF9kaXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTmVkb3N0YXRlayBtw61zdGEgcHJvIHbDvXN0YXZidSBuYXZyxb5lbsOpIHNvdWJvcm92w6lobyBzeXN0w6ltdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiRG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIHDFmWVkw6FubyB6YWvDoXphbsOpIMSNw61zbG8gYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiRG8gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAgcMWZZWTDoW5vIHpha8OhemFuw6kgxI3DrXNsbyBibG9rdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiRG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIHDFmWVkw6FubyB6YWvDoXphbsOpIMSNw61zbG8gYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIkRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCBwxZllZMOhbm8gemFrw6F6YW7DqSDEjcOtc2xvIGl1emx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIkRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIHDFmWVkw6FubyB6YWvDoXphbsOpIMSNw61zbG8gaXV6bHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIkRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCBwxZllZMOhbm8gemFrw6F6YW7DqSDEjcOtc2xvIGl1emx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIlBva3VzIHBvZHZyaG5vdXQga29uZWMgYml0bWFweSBibG9rxa8gemEgc2t1dGXEjW7DvSBrb25lYyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICJQb2t1cyBwb2R2cmhub3V0IGtvbmVjIGJpdG1hcHkgaXV6bMWvIHphIHNrdXRlxI1uw70ga29uZWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NAorbXNnaWQgIklsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIk5hbGV6ZW4gemFrw6F6YW7DvSBuZXDFmcOtbcO9IGJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJOYWxlemVuIHpha8OhemFuw70gZHZvam7DoXNvYm7EmyBuZXDFmcOtbcO9IGJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJOYWxlemUgemFrw6F6YW7DvSB0cm9qbsOhc29ibsSbIG5lcMWZw61tw70gYmxvayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY3Cittc2dpZCAiQmxvY2sgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJCaXRtYXB5IGJsb2vFryBzZSBuZXNob2R1asOtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKK21zZ2lkICJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkJpdG1hcHUgaXV6bMWvIHNlIG5lc2hvZHVqw60iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OQorbXNnaWQgIklsbGVnYWwgb3IgbWFsZm9ybWVkIGRldmljZSBuYW1lIgorbXNnc3RyICJaYWvDoXphbsO9IG5lYm8gY2h5Ym7EmyB1dHZvxZllbsO9IG7DoXpldiB6YcWZw616ZW7DrSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJTa3VwaW5hIGJsb2vFryBwb3N0csOhZMOhIHRhYnVsa3UgaXV6bMWvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzEKK21zZ2lkICJUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIlN1cGVyYmxvayBleHQyIGplIHBvxaFrb3plbsO9IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIkRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIHDFmWVkw6FubyB6YWvDoXphbsOpIMSNw61zbG8gb2JlY27DvWNoIGJpdMWvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiRG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCBwxZllZMOhbm8gemFrw6F6YW7DqSDEjcOtc2xvIG9iZWNuw71jaCBiaXTFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJEbyBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCBwxZllZMOhbm8gemFrw6F6YW7DqSDEjcOtc2xvIG9iZWNuw71jaCBiaXTFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICJaYXpuYW1lbsOhbm8gcMWZw61sacWhIG1ub2hvIHN5bWJvbGlja8O9Y2ggb2RrYXrFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkZ1bmtjZSB6cMSbdG7DqWhvIHZvbMOhbsOtIHRlbnRvIHDFmcOtcGFkIG5ldW3DrSBvYnNsb3XFvml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzcKK21zZ2lkICJUaGUgaW5vZGUgaXMgZnJvbSBhIGJhZCBibG9jayBpbiB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIkl1emVsIHBvY2jDoXrDrSB6wqBjaHlibsOpaG8gYmxva3UgdGFidWxreSBpdXpsxa8iCisKKyMgVE9ETzogUGx1cmFsaXplCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorbXNnc3RyICJTb3Vib3JvdsO9IHN5c3TDqW0gbcOhIG5lcG9kcG9yb3Zhbm91KMOpKSB2bGFzdG5vc3QoaSkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIHJlYWQtb25seSBmZWF0dXJlKHMpIgorbXNnc3RyICJTb3Vib3JvdsO9IHN5c3TDqW0gbcOhIG5lcG9kcG9yb3ZhbsOpIHZsYXN0bm9zdGksIGt0ZXLDqSBsemUgamVuIMSNw61zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJJL08gQ2hhbm5lbCBuZWRva8OhemFsIHDFmWVzdW5vdXQgcG96aWNpIHBybyDEjXRlbsOtIG5lYm8gesOhcGlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIkFsb2thY2UgcGFtxJt0aSBzZWxoYWxhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkiCittc2dzdHIgIkRvIGtuaWhvdm55IGV4dDIgcMWZZWTDoW4gbmVwbGF0bsO9IGFyZ3VtZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODMKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJWwqBzb3Vib3JvdsOpbSBzeXN0w6ltdSBleHQyIG5lYnlsbyBtb8W+bsOpIGFsb2tvdmF0IGJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIlbCoHNvdWJvcm92w6ltIHN5c3TDqW11IGV4dDIgbmVieWxvIG1vxb5uw6kgYWxva292YXQgaXV6ZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICJJdXplbCBleHQyIG5lbsOtIGFkcmVzw6HFmWVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICJQxZnDrWxpxaEgbW5vaG8gb2RrYXrFryBkbyB0YWJ1bGt5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiRnVua2NlIGV4dDJfbG9va3VwIHNvdWJvciBuZW5hbGV6bGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIlNvdWJvciBvdGV2xZllbiBqZW4gcHJvIMSNdGVuw60iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiQmxvayBhZHJlc8OhxZllIGV4dDIgbmVuYWxlemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiQWRyZXPDocWZIGV4dDIgamnFviBleGlzdHVqZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgIk5laW1wbGVtZW50b3ZhbsOhIGZ1bmtjZSBrbmlob3ZueSBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIlXFvml2YXRlbCB6cnXFoWlsIHBvxb5hZGF2ZWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJTb3Vib3IgZXh0MiBqZSBwxZnDrWxpxaEgdmVsa8O9IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIkRvZGFuw6kgxb51cm7DoWxvdmFjw60gemHFmcOtemVuw60gbmVuw60gYmxva292w71tIHphxZnDrXplbsOtbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiU3VwZXJibG9rIMW+dXJuw6FsdSBuZW5hbGV6ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAixb11cm7DoWwgbXVzw60gbcOtdCBhc3BvxYggMTAyNCBibG9rxa8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAiTmVwb2Rwb3JvdmFuw6EgdmVyemUgxb51cm7DoWx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgIkNoeWJhIHDFmWkgbmHEjcOtdMOhbsOtIGV4dGVybsOtaG8gxb51cm7DoWx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAixb11cm7DoWwgbmVuYWxlemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIkhhc2ggYWRyZXPDocWZxa8gbmVwb2Rwb3JvdsOhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiTmVwbGF0bsOpIMSNw61zbG8gYmxva3Ugcm96xaHDrcWZZW7DqWhvIGF0cmlidXR1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAyCittc2dpZCAiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCittc2dzdHIgIlNvdWJvcm92w70gc3lzdMOpbSBuZWx6ZSB2eXR2b8WZaXQgc8KgcG/FvmFkb3ZhbsO9bSBwb8SNdGVtIGl1emzFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAiU27DrW1layBlMmltYWdlIHNlIHByw6F2xJsgbmVwb3XFvsOtdsOhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIlDFmcOtbGnFoSBtbm9obyByZXplcnZvdmFuw71jaCBibG9rxa8gZGVza3JpcHRvcsWvIHNrdXBpbnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiSXV6ZWwgdXLEjWVuw70gcHJvIHptxJtudSB2ZWxpa29zdGkgamUgcG/FoWtvemVuw70iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIkJ5bCBwb2t1cyBuYXN0YXZpdCBiaXRtYXB1IGJsb2vFryBzwqBjaHlixJtqw61jw61tIG5lcMWZw61tw71tIGJsb2tlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCOiDDmnNwxJtjaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBEYXRhYsOhemUgcG/FoWtvemVuYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOQorbXNnaWQgIlREQjogSU8gRXJyb3IiCittc2dzdHIgIlREQjogQ2h5YmEgdnN0dXB1L3bDvXN0dXB1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IENoeWJhIHphbXlrw6Fuw60iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTEKK21zZ2lkICJUREI6IE91dCBvZiBtZW1vcnkiCittc2dzdHIgIlREQjogTmVkb3N0YXRlayBwYW3Em3RpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJUREI6IFrDoXpuYW0gZXhpc3R1amUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQjogWsOhbWVrIGV4aXN0dWplIG5hIGppbsOpbSBrbMOtxI1pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBOZXBsYXRuw70gcGFyYW1ldHIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCOiBaw6F6bmFtIG5lZXhpc3R1amUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjogWsOhcGlzIG5lbsOtIHBvdm9sZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTcKK21zZ2lkICJFeHQyZnMgZGlyZWN0b3J5IGJsb2NrIGxpc3QgaXMgZW1wdHkiCittc2dzdHIgIlNlem5hbSBibG9rxa8gYWRyZXPDocWZxa8gZXh0MiBqZSBwcsOhemRuw70iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICJQb2t1cyB6bcSbbml0IG1hcG92w6Fuw60gYmxva8WvIHDFmWVzIGJsb2tvdsO9IGl0ZXLDoXRvciB1csSNZW7DvSBqZW4gcHJvIMSNdGVuw60iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IHNhdmVkIHBhdGgiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gdWxvxb5lbm91IGNlc3R1IGV4dDQgcm96c2FodSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIDY0Yml0b3ZvdSBvYmVjbm91IGJpdG1hcHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gNjRiaXRvdm91IGJpdG1hcHUgYmxva8WvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gcHJvIDY0Yml0b3ZvdSBiaXRtYXB1IGl1emzFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsb8Kg4oCTIFJFU0VSVkVEXzEzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNCIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvwqDigJMgUkVTRVJWRURfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG/CoOKAkyBSRVNFUlZFRF8xNSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsb8Kg4oCTIFJFU0VSVkVEXzE2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNyIKK21zZ3N0ciAiQ2h5Ym7DqSBtYWdpY2vDqSDEjcOtc2xvwqDigJMgUkVTRVJWRURfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG/CoOKAkyBSRVNFUlZFRF8xOCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsb8Kg4oCTIFJFU0VSVkVEXzE5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMwCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaGVhZGVyIgorbXNnc3RyICJQb8Wha296ZW7DoSBobGF2acSNa2Egcm96c2FodSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJQb8Wha296ZW7DvSBpbmRleCByb3pzYWh1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIlBvxaFrb3plbsO9IHJvenNhaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMworbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gZXh0ZW50IG1hcCIKK21zZ3N0ciAiVsKgbWFwxJsgcm96c2Foxa8gbmV6YsO9dsOhIHZvbG7DqSBtw61zdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiSXV6ZWwgbmVwb3XFvsOtdsOhIHJvenNhaHkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICLFvcOhZG7DvSDigJ5kYWzFocOt4oCcIHJvenNhaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICLFvcOhZG7DoSDigJ5wxZllZGNob3rDreKAnCByb3pzYWgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzcKK21zZ2lkICJObyAndXAnIGV4dGVudCIKK21zZ3N0ciAixb3DoWRuw70g4oCebmFkxZnDrXplbsO94oCcIHJvenNhaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIsW9w6FkbsO9IOKAnnBvZMWZw616ZW7DveKAnCByb3pzYWgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIsW9w6FkbsO9IHNvdcSNYXNuw70gdXplbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiT3BlcmFjZSBleHQyIG5lbsOtIHBvZHBvcm92w6FuYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJOZW7DrSBtw61zdG8gcHJvIHZsb8W+ZW7DrSByb3pzYWh1IGRvIHV6bHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIlJvemTEm2xlbsOtIGJ5IHZlZGxvIGvCoHByw6F6ZG7DqW11IHV6bHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICJSb3pzYWggbmVuYWxlemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIk9wZXJhY2UgbmEgaXV6bGVjaCBvYnNhaHVqw61jw61jaCByb3pzYWh5IG5lbsOtIHBvZHBvcm92w6FuYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAiRMOpbGthIHJvenNhaHUgbmVuw60gcGxhdG7DoSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NgorbXNnaWQgIkkvTyBDaGFubmVsIGRvZXMgbm90IHN1cHBvcnQgNjQtYml0IGJsb2NrIG51bWJlcnMiCittc2dzdHIgIkkvTyBDaGFubmVsIG5lcG9kcG9ydWplIDY0Yml0b3bDoSDEjcOtc2xhIGJsb2vFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyJLdsWvbGkgY2h5YsSbasOtY8OtbXUgc291Ym9ydSBtdGFiIG5lbHplIHpqaXN0aXQsIHpkYS1saSBqZSBzeXN0w6ltIHNvdWJvcsWvICIKKyJwxZlpcG9qZW7DvSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OAorbXNnaWQgIkZpbGVzeXN0ZW0gdG9vIGxhcmdlIHRvIHVzZSBsZWdhY3kgYml0bWFwcyIKK21zZ3N0ciAiIgorIlNvdWJvcm92w70gc3lzdMOpbSBqZSBwxZnDrWxpxaEgdmVsa8O9IG5hIHRvLCBhYnkgc2UgcG91xb5pbHkgemFzdGFyYWzDqSBiaXRtYXB5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBuZXBsYXRuw6kgbWFnaWNrw6kgxI3DrXNsbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIk1NUDogemHFmcOtemVuw60gamUgcHLDoXbEmyBha3Rpdm7DrSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDogcHLDoXbEmyBixJvFvsOtIGtvbnRyb2xhIHNvdWJvcm92w6lobyBzeXN0w6ltdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IMSNw61zbG8gYmxva3Ugc2UgbmFjaMOhesOtIHphIGhyYW5pY8OtIHN5c3TDqW11IHNvdWJvcsWvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVA6IHByw6F2xJsgcHJvYsOtaMOhIG5lem7DoW3DoSBvcGVyYWNlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU0Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAiTU1QOiBzeXN0w6ltdSBzb3Vib3LFryBzZSBzdMOhbGUgcG91xb7DrXbDoSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiTU1QOiBvdGV2xZllbsOtIHPCoE9fRElSRUNUIHNlbGhhbG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJOZXNwcsOhdm7DoSB2ZWxpa29zdCBkZXNrcmlwdG9ydSBza3VwaW55IGJsb2vFryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgaXV6bHUgbmVvZHBvdsOtZMOhIGl1emx1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU4Cittc2dpZCAiSW5vZGUgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAiS29udHJvbG7DrSBzb3XEjWV0IGJpdG1hcHkgaXV6bMWvIG5lb2Rwb3bDrWTDoSBiaXRtYXDEmyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIktvbnRyb2xuw60gc291xI1ldCBibG9rdSByb3pzYWjFryBuZW9kcG92w61kw6EgYmxva3Ugcm96c2Foxa8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkJsb2sgYWRyZXPDocWZxa8gbmVtw6EgbcOtc3RvIHBybyBrb250cm9sbsOtIHNvdcSNZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgYmxva3UgYWRyZXPDocWZxa8gbmVvZHBvdsOtZMOhIGJsb2t1IGFkcmVzw6HFmcWvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgYmxva3Ugcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryBuZW9kcG92w61kw6EgYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIktvbnRyb2xuw60gc291xI1ldCBzdXBlcmJsb2t1IG5lb2Rwb3bDrWTDoSBzdXBlcmJsb2t1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIk5lem7DoW3DvSBhbGdvcml0bXVzIGtvbnRyb2xuw61obyBzb3XEjXR1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiS29udHJvbG7DrSBzb3XEjWV0IGJsb2t1IE1NUCBuZW9kcG92w61kw6EgYmxva3UgTU1QIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJTb3Vib3IgZXh0MiBqacW+IGV4aXN0dWplIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIktvbnRyb2xuw60gc291xI1ldCBiaXRtYXB5IGl1emzFryBuZW9kcG92w61kw6EgYml0bWFwxJsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgbmFtZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MQorIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICJLb250cm9sbsOtIHNvdcSNZXQgYmxva3Ugcm96xaHDrcWZZW7DvWNoIGF0cmlidXTFryBuZW9kcG92w61kw6EgYmxva3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIk5lcGxhdG7DqSDEjcOtc2xvIGJsb2t1IHJvesWhw63FmWVuw6lobyBhdHJpYnV0dSIKKworIyBUaGVzZSBzaG9ydGN1dHMgYXJlIGEgbmlnaHRtYXJlLgorIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiYXJvesWhw63FmWVuw70gYXRyaWJ1dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NAorbXNnaWQgIkluc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBleHRlbmRlZCBhdHRyaWJ1dGUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorIywgZnV6enkKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIkl1emVsIG5lcG91xb7DrXbDoSByb3pzYWh5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc3Cittc2dpZCAiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorIywgZnV6enkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJWwqBtYXDEmyByb3pzYWjFryBuZXpiw712w6Egdm9sbsOpIG3DrXN0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyBwcm8gZXh0MiBzdHJ1a3R1cnUgc291Ym9ydSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MAorbXNnaWQgIklub2RlIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIG9mZnNldCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgyCittc2dpZCAiSm91cm5hbCBmbGFncyBpbmNvbnNpc3RlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MworIywgZnV6enkKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdCIKK21zZ3N0ciAiSXV6ZWwgdXLEjWVuw70gcHJvIHptxJtudSB2ZWxpa29zdGkgamUgcG/FoWtvemVuw70iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIlBvdm9sZW7DrSBrZSB6bcSbbsSbIHZlbGlrb3N0aSBzeXN0w6ltdSBzb3Vib3LFryB6YW3DrXRudXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1CisjLCBmdXp6eQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiSXV6ZWwgdXLEjWVuw70gcHJvIHptxJtudSB2ZWxpa29zdGkgamUgcG/FoWtvemVuw70iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJTdXBlcmJsb2sgZXh0MiBqZSBwb8Wha296ZW7DvSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIkl1emVsIHVyxI1lbsO9IHBybyB6bcSbbnUgdmVsaWtvc3RpIGplIHBvxaFrb3plbsO9IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiUHJvZmlsIHZlcnplIDAuMCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX25vZGUiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyB2wqBwcm9maWxlX25vZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICJTZWtjZSBzwqBwcm9maWxlbSBuZW5hbGV6ZW5hIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlJlbGFjZSBwcm9maWx1IG5lbmFsZXplbmEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAiUG9rdXMgcMWZaWRhdCByZWxhY2kgdXpsdSwga3RlcsO9IG5lbsOtIHNla2PDrSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiSGxhdmnEjWthIHNla2NlIHByb2ZpbHUgbcOhIG5lbnVsb3ZvdSBob2Rub3R1IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiQ2h5Ym7DvSB6xZlldMSbemVuw70gc2V6bmFtIHZlIHN0cnVrdHXFmWUgcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkNoeWJuw6Egw7pyb3ZlxYggc2t1cGlueSB2ZSBzdHJ1a3R1xZllIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJDaHlibsO9IHVrYXphdGVsIG5hIHJvZGnEjWUgdmUgc3RydWt0dcWZZSBwcm9maWx1IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGUgaXRlcmF0b3IiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyB2wqBpdGVyw6F0b3J1IHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICJVemx1IHNla2NlIG5lbHplIG5hc3Rhdml0IGhvZG5vdHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIkRvIGtuaWhvdm55IHByb2ZpbHUgcMWZZWTDoW4gbmVwbGF0bsO9IGFyZ3VtZW50IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIlBva3VzIHptxJtuaXQgcHJvZmlsLCBrdGVyw70gamUgamVuIHBybyDEjXRlbsOtIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICJIbGF2acSNa2Egc2VrY2UgcHJvZmlsdSBuZW7DrSBuYSBuZWp2ecWhxaHDrSDDunJvdm5pIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI1Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCittc2dzdHIgIkNoeWJhIHN5bnRheGUgdmUgaGxhdmnEjWNlIHNla2NlIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiQ2h5YmEgc3ludGF4ZSB2wqByZWxhY2kgcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNworbXNnaWQgIkV4dHJhIGNsb3NpbmcgYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiTmFkYnl0ZcSNbsOhIHV6YXbDrXJhY8OtIHrDoXZvcmthIHbCoHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiVsKgcHJvZmlsdSBjaHliw60gb3RldsOtcmFjw60gesOhdm9ya2EiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gdsKgcHJvZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gdsKgcHJvZmlsZV9zZWN0aW9uX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiUHLFr2Nob2Qgc2tyemUgdsWhZWNobnkgdnJjaG9sb3bDqSBzZWtjZSBuZW7DrSBwb2Rwb3JvdsOhbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMgorbXNnaWQgIkludmFsaWQgcHJvZmlsZV9zZWN0aW9uIG9iamVjdCIKK21zZ3N0ciAiTmVwbGF0bsO9IG9iamVrdCBwcm9maWxlX3NlY3Rpb24iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICLFvcOhZG7DqSBkYWzFocOtIHNla2NlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIkRvIGRvdGF6b3ZhY8OtIHJ1dGlueSBwxZllZMOhbmEgY2h5Ym7DoSBtbm/FvmluYSBuw6F6dsWvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgIsW9w6FkbsO9IHNvdWJvciBzwqBwcm9maWxlbSBrwqBvdGV2xZllbsOtIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICJDaHlibsOpIG1hZ2lja8OpIMSNw61zbG8gdsKgcHJvZmlsZV9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiU291Ym9yIHPCoHByb2ZpbGVtIG5lYnlsbyBtb8W+bsOpIG90ZXbFmcOtdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIlNla2NlIGppxb4gZXhpc3R1amUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIk5lcGxhdG7DoSBwcmF2ZGl2b3N0bsOtIGhvZG5vdGEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIk5lcGxhdG7DoSBjZWxvxI3DrXNlbG7DoSBob2Rub3RhIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQxCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV9kYXRhX3QiCittc2dzdHIgIkNoeWJuw6kgbWFnaWNrw6kgxI3DrXNsbyB2IHByb2ZpbGVfZmlsZV9kYXRhX3QiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHRuYXBvc2xlZHkgcMWZaXBvamVubyBkbyAlcyB2wqAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIgorbXNnc3RyICJcdG5hcG9zbGVkeSBwxZlpcG9qZW5vIHbCoCVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRjcmVhdGVkIG9uICVzIgorbXNnc3RyICJcdHZ5dHZvxZllbm8gdsKgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx0bmFwb3NsZWR5IHptxJtuxJtubyB2wqAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIk5hbGV6ZW5hIHRhYnVsa2Egcm96ZMSbbGVuw60gZGlza3UgJXMgdsKgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIlNvdWJvciAlcyBuZWV4aXN0dWplIGEgxb7DoWRuw6EgdmVsaWtvc3QgbmVieWxhIHphZMOhbmEuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAiVnl0dsOhxZnDrSBzZSBvYnnEjWVqbsO9IHNvdWJvciAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIk5lYnlsbyBtb8W+bsOpIG90ZXbFmcOtdCAlczogJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTk0Cittc2dpZCAiIgorIlxuIgorIlRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgZGlkIHlvdSBzcGVjaWZ5IGl0IGNvcnJlY3RseT9cbiIKK21zZ3N0ciAiIgorIlxuIgorIlphxZnDrXplbsOtIHrFmWVqbcSbIG5lZXhpc3R1amU7IHphZGFsaSBqc3RlIGplIHNwcsOhdm7Emz9cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBuZW7DrSBzcGVjacOhbG7DrSBibG9rb3bDqSB6YcWZw616ZW7DrS5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW0gbGFiZWxsZWQgJyVzJ1xuIgorbXNnc3RyICIlcyBvYnNhaHVqZSBzeXN0w6ltIHNvdWJvcsWvICVzIHNlIGptZW5vdmtvdSDigJ4lc+KAnFxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIlcyBvYnNhaHVqZSBzeXN0w6ltIHNvdWJvcsWvICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYCVzJyBkYXRhXG4iCittc2dzdHIgIiVzIG9ic2FodWplIHN5c3TDqW0gc291Ym9yxa8gJXNcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICJTcHVzxaV0ZSBwcm9zw61tIG5hIHRvbXRvIHN5c3TDqW11IHNvdWJvcsWvIGUyZnNjay5cbiIKKworI34gbXNnaWQgIkludmFsaWQgcXVvdGF0eXBlIHBhcmFtZXRlcjogJXNcbiIKKyN+IG1zZ3N0ciAiTmVwbGF0bsO9IHBhcmFtZXRyIGRydWh1IGt2w7N0OiAlc1xuIgorCisjfiBtc2dpZCAiQGkgJWkgaGFzIEBjaW9uIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgQGNpb24gc3VwcG9ydC4gICIKKyN+IG1zZ3N0ciAiIgorI34gIkl1emVsICVpIG3DoSBuYXN0YXZlbiBwxZnDrXpuYWsga29tcHJpbWFjZSBuYSBzeXN0w6ltdSBzb3Vib3LFryBiZXogcG9kcG9yeSAiCisjfiAia29tcHJpbWFjZS4gIgorCisjfiBtc2dpZCAiQEEgQGEgQGIgJWIuICAiCisjfiBtc2dzdHIgIkNoeWJhIHDFmWkgYWxva2FjaSBibG9rdSByb3rFocOtxZllbsO9Y2ggYXRyaWJ1dMWvICViLiAiCisKKyN+IG1zZ2lkICIlczogd2FybmluZzogY29tcHJlc3Npb24gc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG4iCisjfiBtc2dzdHIgIiVzOiBwb3pvcjogcG9kcG9yYSBrb21wcmVzZSBqZSBleHBlcmltZW50w6FsbsOtLlxuIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBlMmZzY2sgbm90IGNvbXBpbGVkIHdpdGggSFRSRUUgc3VwcG9ydCxcbiIKKyN+ICJcdGJ1dCBmaWxlc3lzdGVtICVzIGhhcyBIVFJFRSBkaXJlY3Rvcmllcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBFMmZzY2sgbmVwxZllbG/FvmVuIHMgcG9kcG9yb3UgSFRSRUUsXG4iCisjfiAiXHRhbGUgc3lzdMOpbSBzb3Vib3LFryAlcyBtw6EgYWRyZXPDocWZZSBIVFJFRS5cbiIKKworI34gbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgemVyb2l6aW5nIGJ1ZmZlciIKKyN+IG1zZ3N0ciAiUMWZaSBhbG9rYWNpIG51bG92YWPDrSB2eXJvdm7DoXZhY8OtIHBhbcSbdGkiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCBuZXBvdcW+aXTDvWNoIGl1emzFryAldVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIk5lbW9odSBuYcSNw61zdCBkYXRhIHNvdWJvcm92w6lobyBzeXN0w6ltdSBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfZmV0Y2ggJXNcbiIKKyN+IG1zZ3N0ciAidGRiX2ZldGNoICVzIHNlbGhhbG9cbiIKKworI34gbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBVVUlEIGRpZG4ndCBtYXRjaCBcbiIKKyN+IG1zZ3N0ciAiVVVJRCBzeXN0w6ltdSBzb3Vib3LFryBzZSBuZXNob2R1amUgXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX29wZW4gJXNcbiIKKyN+IG1zZ3N0ciAidGRiX29wZW4gJXMgc2VsaGFsb1xuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIKKyN+IG1zZ3N0ciAiU2VsaGFsbyBvdGV2xZllbsOtICVzXG4iCisKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgIlDFmWVocmFuw6EgdHJhbnNha2NlIG/CoHZlbGlrb3N0aSAlemQgbmEgcG96aWNpICVsbHVcbiIKKworI34gbXNnaWQgIkZhaWxlZCB3cml0ZSAlc1xuIgorI34gbXNnc3RyICJTZWxoYWwgesOhcGlzICVzXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIKKyN+IG1zZ3N0ciAiTmVtb2h1IGFsb2tvdmF0IHBhbcSbxaUgcHJvIHpwcmFjb3bDoW7DrSBwxZllcMOtbmHEjcWvIGt2w7N0eSFcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGRiIGZpbGVuYW1lXG4iCisjfiBtc2dzdHIgIk5lbW9odSBhbG9rb3ZhdCBwYW3Em8WlIHBybyBuw6F6ZXYgc291Ym9ydSBUREJcbiIKKworI34gbXNnaWQgIiIKKyN+ICJUbyB1bmRvIHRoZSB0dW5lMmZzIG9wZXJhdGlvbiBwbGVhc2UgcnVuIHRoZSBjb21tYW5kXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiWm3Em255IHpwxa9zb2JlbsOpIHR1bmUyZnMgbHplIHp2csOhdGl0IHTDrW10byBwxZnDrWthemVtXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorCisjfiBtc2dpZCAiJXMgaXMgZW50aXJlIGRldmljZSwgbm90IGp1c3Qgb25lIHBhcnRpdGlvbiFcbiIKKyN+IG1zZ3N0ciAiJXMgamUgY2Vsw6kgemHFmcOtemVuw60sIG5lIGplbiBqZWRlbiBvZGTDrWwhXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiXGJcYlxiXGJcYlxiXGJcYkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVsbHUlJSkgaW4gJXMgYXQgJS4yZiBNQi8iCisjfiAicyAgICAgICBcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxiXGJcYlxiXGJcYlxiXGJaa29ww61yb3bDoW5vICVsbHUvJWxsdSBibG9rxa8gKCVsbHXigK8lJSkgZG8gJXMgcMWZaSAlLjJm4oCvTUIvIgorI34gInMgICAgICAgXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiXG4iCisjfiAiV2FybmluZzogdGhlIHF1b3RhIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyN+ICJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvUXVvdGEgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxuIgorI34gIlBvem9yOiB2bGFzdG5vc3Qga3bDs3R5IGplIHN0w6FsZSB2ZSB2w712b2ppLlxuIgorI34gIlBvZHJvYm5vc3RpIG5hbGV6bmV0ZSBuYSA8aHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvUXVvdGE+LlxuIgorI34gIlxuIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJXMgLS0tICVzXG4iCisjfiBtc2dzdHIgIk5lbW9odSBzdGF0ICVzIC0tLSAlc1xuIgorCisjfiBtc2dpZCAiQ2xlYXJpbmcgZXh0ZW50IGZsYWcgbm90IHN1cHBvcnRlZCBvbiAlcyIKKyN+IG1zZ3N0ciAiT2RzdHJhbsSbbsOtIHDFmcOtem5ha3Ugcm96c2FodSBuZW7DrSBuYSAlcyBwb2Rwb3JvdsOhbm8iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IFRoZSBjb21iaW5hdGlvbiBvZiBmbGV4X2JnIGFuZFxuIgorI34gIlx0IXJlc2l6ZV9pbm9kZSBmZWF0dXJlcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHJlc2l6ZTJmcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBLb21iaW5hY2Ugdmxhc3Rub3N0w60gZmxleF9iZyBhXG4iCisjfiAiXHQhcmVzaXplX2lub2RlIG5lbsOtIHBvZHBvcm92w6FuYSBuw6FzdHJvamVtIHJlc2l6ZTJmcy5cbiIKKworI34gbXNnaWQgIkBnICVnIEBiIEBCIHVuaW5pdGlhbGl6ZWQgYnV0IEBpIEBCIGluIHVzZS5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkJpdG1hcGEgYmxva8WvIHNrdXBpbnkgJWcgbmVpbmljaWFsaXpvdsOhbmEsIGHEjWtvbGl2IGJpdG1hcGEgaXV6bMWvIGplICIKKyN+ICJwb3XFvml0YS5cbiIKKworI34gbXNnaWQgIkBpICVpIHNob3VsZCBub3QgaGF2ZSBFT0ZCTE9DS1NfRkwgc2V0IChzaXplICVJcywgbGJsayAlcilcbiIKKyN+IG1zZ3N0ciAiIgorI34gIkl1emVsICVpIGJ5IG5lbcSbbCBtw610IG5hc3RhdmVubyBFT0ZCTE9DS1NfRkwgKHZlbGlrb3N0ICVJcywgbGJsayAlcilcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGRldGVybWluZSBqb3VybmFsIHNpemUiCisjfiBtc2dzdHIgIlZlbGlrb3N0IMW+dXJuw6FsdSBuZWx6ZSB1csSNaXQiCisKKyN+IG1zZ2lkICIjXHRcdCAlbGx1IC0+ICVsbHUgKCVsbHUpXG4iCisjfiBtc2dzdHIgIiNcdFx0ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIKKworIyBUT0RPOiBNaXNzaW5nLi4uIG5vdCBwcmVzZW50IGlzIGR1cGxpY2F0ZQorI34gbXNnaWQgIk1pc3NpbmcgaW5kaXJlY3QgYmxvY2sgbm90IHByZXNlbnQiCisjfiBtc2dzdHIgIk5lcMWZw61tw70gYmxvayBuZW7DrSBwxZnDrXRvbWVuIgorCisjfiBtc2dpZCAiPFRoZSBBQ0wgaW5kZXggaW5vZGU+IgorI34gbXNnc3RyICI8SXV6ZWwgaW5kZXh1IEFDTD4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBkYXRhIGlub2RlPiIKKyN+IG1zZ3N0ciAiPEl1emVsIGRhdCBBQ0w+IgorCisjfiBtc2dpZCAic2hvcnQgd3JpdGUgKG9ubHkgJWQgYnl0ZXMpIGZvciB3cml0aW5nIGltYWdlIGhlYWRlciIKKyN+IG1zZ3N0ciAia3LDoXRrw70gesOhcGlzIChqZW4gJWQgYmFqdMWvKSBwxZlpIHrDoXBpc3UgaGxhdmnEjWt5IG9icmF6dSIKKworI34gbXNnaWQgImludmFsaWQgZnJhZ21lbnQgc2l6ZSAtICVzIgorI34gbXNnc3RyICLFoXBhdG7DoSB2ZWxpa29zdCBmcmFnbWVudHXCoOKAkyAlcyIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIlZhcm92w6Fuw606IGZyYWdtZW50eSBuZXBvZHBvcm92w6FueS4gSWdub3J1amkgcMWZZXDDrW5hxI0gLWZcbiIKKworIyBDYWxsaW5nIGlzIHN1YmplY3QKKyN+IG1zZ2lkICJDYWxsaW5nIEJMS0RJU0NBUkQgZnJvbSAlbGx1IHRvICVsbHUgIgorI34gbXNnc3RyICJWb2zDoW7DrSBCTEtESVNDQVJEIG9kICVsbHUgZG8gJWxsdSAiCisKKyMgQ29udGludWF0aW9uIG9mICJDYWxsaW5nIEJMS0RJU0NBUkQgZnJvbSAlbGx1IHRvICVsbHUgIgorI34gbXNnaWQgInN1Y2NlZWRlZC5cbiIKKyN+IG1zZ3N0ciAidXNwxJtsby5cbiIKKworI34gbXNnaWQgIkpvdXJuYWwgTk9UIHJlbW92ZWRcbiIKKyN+IG1zZ3N0ciAixb11cm7DoWwgTkVPRFNUUkFOxJpOXG4iCisKKyN+IG1zZ2lkICJAUyBkb2Vzbid0IGhhdmUgaGFzX0BqIGZsYWcsIGJ1dCBoYXMgZXh0MyBAaiAlcy5cbiIKKyN+IG1zZ3N0ciAiU3VwZXJibG9rIG5lbcOhIHDFmcOtem5hayBoYXNfam91cm5hbCwgYWxlIG3DoSDFvnVybsOhbCBleHQzICVzLlxuIgorCisjfiBtc2dpZCAiUmVjcmVhdGUgam91cm5hbCB0byBtYWtlIHRoZSBmaWxlc3lzdGVtIGV4dDMgYWdhaW4/XG4iCisjfiBtc2dzdHIgIlpub3Z1IHZ5dHZvxZlpdCDFvnVybsOhbCwgYWJ5IHNlIHrDrXNrYWwgenDEm3Qgc291Ym9yb3bDvSBzeXN0w6ltIGV4dDM/XG4iCisKKyN+IG1zZ2lkICJ3aGlsZSByZXRyeWluZyB0byB3cml0ZSBibG9jayBiaXRtYXBzIGZvciAlcyIKKyN+IG1zZ3N0ciAicMWZaSBvcGFrb3ZhbsOpbSBwb2t1c3UgemFwc2F0IGJpdG1hcHkgYmxva8WvIHBybyAlcyIKKworI34gbXNnaWQgIiVzIGZhaWxlZCBmb3IgJXM6ICVzXG4iCisjfiBtc2dzdHIgIiVzIHNlbGhhbG8gcHJvICVzOiAlc1xuIgorCisjIFRvdG8gamUgb3BlbigyKSBwb3XFvml0w70gamFrbyB0aXR1bGVrIGNoeWJvdsOpaG8gaGzDocWhZW7DrQorI34gbXNnaWQgIm9wZW4iCisjfiBtc2dzdHIgIm90ZXbDrXLDoW7DrSIKKworI34gbXNnaWQgIkhESU9fR0VUR0VPIGlvY3RsIgorI34gbXNnc3RyICJpb2N0bCBIRElPX0dFVEdFTyIKKworI34gbXNnaWQgIkJMS0dFVFNJWkUgaW9jdGwiCisjfiBtc2dzdHIgImlvY3RsIEJMS0dFVFNJWkUiCisKKyN+IG1zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlJvesWhw63FmWVuw70gYXRyaWJ1dCB2wqBpdXpsdSAlaSBtw6EgaGFzaCAoJU4pLCBrdGVyw70gbmVuw60gcGxhdG7DvSAobXVzw60gYsO9dCAiCisjfiAiMClcbiIKKworI34gbXNnaWQgIndoaWxlIGNhbGxpbmcgaXRlcmF0b3IgZnVuY3Rpb24iCisjfiBtc2dzdHIgInDFmWkgdm9sw6Fuw60gZnVua2NlIGl0ZXLDoXRvcnUiCisKKyN+IG1zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlIHRhYmxlIChncm91cCAlZCkiCisjfiBtc2dzdHIgInDFmWkgxI10ZW7DrSB0YWJ1bGt5IGlub2RlIChza3VwaW5hICVkKSIKKworI34gbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUgKGdyb3VwICVkKSIKKyN+IG1zZ3N0ciAicMWZaSB6w6FwaXN1IHRhYnVsa3kgaW5vZGUgKHNrdXBpbmEgJWQpIgorCisjfiBtc2dpZCAiUGFzcyAwOiBEb2luZyBieXRlLXN3YXAgb2YgZmlsZXN5c3RlbVxuIgorI34gbXNnc3RyICJQcsWvY2hvZCAwOiBQcm92w6Fkw61tIHDFmWVob3plbsOtIGJhanTFryBzeXN0w6ltdSBzb3Vib3LFr1xuIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiB0aGUgZmlsZXN5c3RlbSBtdXN0IGJlIGZyZXNobHkgY2hlY2tlZCB1c2luZyBmc2NrXG4iCisjfiAiYW5kIG5vdCBtb3VudGVkIGJlZm9yZSB0cnlpbmcgdG8gYnl0ZS1zd2FwIGl0LlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IHN5c3TDqW0gc291Ym9yxa8gbXVzw60gYsO9dCBwxZllZCBwb2t1c2VtIHDFmWVob2RpdCBiYWp0eVxuIgorI34gIsSNZXJzdHbEmyBvdGVzdG92w6FuIHBvbW9jw60gZnNjayBhIG5lc23DrSBiw710IHDFmWlwb2plbi5cbiIKKworI34gbXNnaWQgIkJ5dGUgc3dhcCIKKyN+IG1zZ3N0ciAiUMWZZWhvemVuw60gYmFqdMWvIgorCisjfiBtc2dpZCAiQnl0ZS1zd2FwcGluZyBmaWxlc3lzdGVtcyBub3QgY29tcGlsZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIGUyZnNja1xuIgorI34gbXNnc3RyICIiCisjfiAiUMWZZWhvemVuw60gYmFqdMWvIHN5c3TDqW3FryBzb3Vib3LFryBuZW7DrSB6YWJ1ZG92w6FubyB2IHTDqXRvIHZlcnppIGUyZnNja1xuIgorCisjfiBtc2dpZCAiSW5jb21wYXRpYmxlIG9wdGlvbnMgbm90IGFsbG93ZWQgd2hlbiBieXRlLXN3YXBwaW5nLlxuIgorI34gbXNnc3RyICJQxZlpIHDFmWVob3plbsOtIGJhanTFryBuZWpzb3UgZG92b2xlbnkgbmVrb21wYXRpYmlsbsOtIHDFmWVww61uYcSNZS5cbiIKKworI34gbXNnaWQgIiVzOiBGaWxlc3lzdGVtIGJ5dGUgb3JkZXIgYWxyZWFkeSBub3JtYWxpemVkLlxuIgorI34gbXNnc3RyICIlczogUG/FmWFkw60gYmFqdMWvIHN5c3TDqW11IHNvdWJvcsWvIGppxb4gbm9ybWFsaXpvdsOhbm8uXG4iCisKKyN+IG1zZ2lkICJpbnZhbGlkIHN0YXJ0aW5nIGJsb2NrIC0gJXMiCisjfiBtc2dzdHIgIsWhcGF0bsO9IHBvxI3DoXRlxI1uw60gYmxva8Kg4oCTICVzIgorCisjfiBtc2dpZCAiTm90ZTogVGhpcyBpcyBhIGJ5dGUtc3dhcHBlZCBmaWxlc3lzdGVtXG4iCisjfiBtc2dzdHIgIlBvem7DoW1rYTogVGVudG8gc3lzdMOpbSBzb3Vib3LFryBtw6EgcMWZZWhvemVuw6kgYmFqdHlcbiIKKworI34gbXNnaWQgIiIKKyN+ICJGaWxlc3lzdGVtIHRvbyBsYXJnZS4gIE5vIG1vcmUgdGhhbiAyKiozMS0xIGJsb2Nrc1xuIgorI34gIlx0ICg4VEIgdXNpbmcgYSBibG9ja3NpemUgb2YgNGspIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiIKKyN+IG1zZ3N0ciAiIgorI34gIlNvdWJvcm92w70gc3lzdMOpbSBqZSBwxZnDrWxpxaEgdmVsa8O9LiBWwqBzb3XEjWFzbm9zdGkgbmVuw60gcG9kcG9yb3bDoW5vIHbDrWNlICIKKyN+ICJqYWtcbiIKKyN+ICJcdDIqKjMxLTEgYmxva8WvICg44oCvVEIgcMWZaSA0ayBibG9jw61jaCkuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIldhcm5pbmc6IHNvbWUgMi40IGtlcm5lbHMgZG8gbm90IHN1cHBvcnQgYmxvY2tzaXplcyBncmVhdGVyIHRoYW4gNDA5NlxuIgorI34gIlx0dXNpbmcgZXh0My4gIFVzZSAtYiA0MDk2IGlmIHRoaXMgaXMgYW4gaXNzdWUgZm9yIHlvdS5cbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxuIgorI34gIlZhcm92w6Fuw606IG7Em2t0ZXLDoSBqw6FkcmEgesKgxZlhZHkgMi40IG5lcG9kcG9ydWrDrSBuYSBleHQzIGJsb2t5IHbEm3TFocOtIG5lxb4gIgorI34gIjQwOTZcbiIKKyN+ICJcdEplLWxpIHRvIHbDocWhIHDFmcOtcGFkLCBwb3XFvmlqdGUg4oCeLWIgNDA5NuKAnC5cbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIldhcm5pbmc6ICVkLWJ5dGUgaW5vZGVzIG5vdCB1c2FibGUgb24gb2xkZXIgc3lzdGVtc1xuIgorI34gbXNnc3RyICJWYXJvdsOhbsOtOiAlZGJhanRvdsOpIGl1emx5IG5lanNvdSBuYSBzdGFyxaHDrWNoIHN5c3TDqW1lY2ggcG91xb5pdGVsbsOpXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiXG4iCisjfiAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzIGRpc2FibGVkLlxuIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAiU3lzdMOpbSBzb3Vib3LFryBqacW+IG3DoSDFmcOtZGvDqSBzdXBlcmJsb2t5IHpha8OhesOhbnkuXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiXG4iCisjfiAiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBjbGVhcmVkLiAgJXMiCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICJQxZnDrXpuYWsgxZnDrWRrw71jaCBzdXBlcmJsb2vFryB2eW1hesOhbi4gICVzIgorCisjfiBtc2dpZCAiQ2xvbmUgZHVwbGljYXRlL2JhZCBibG9ja3MiCisjfiBtc2dzdHIgIktsb25vdmF0IGR1cGxpa8OhdG7DrS/FoXBhdG7DqSBibG9reSIKKworI34gbXNnaWQgIiIKKyN+ICJcbiIKKyN+ICJUaGlzIGluY29uc2lzdGVuY3kgY2FuIG5vdCBiZSBmaXhlZCB3aXRoIGUyZnNjazsgdG8gZml4IGl0LCB1c2VcbiIKKyN+ICJkdW1wZTJmcyAtYiB0byBkdW1wIG91dCB0aGUgYmFkIEBiIGxpc3QgYW5kIGUyZnNjayAtTCBmaWxlbmFtZVxuIgorI34gInRvIHJlYWQgaXQgYmFjayBpbiBhZ2Fpbi5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxuIgorI34gIlR1dG8gbmVrb256aXN0ZW5jaSBuZWx6ZSBvcHJhdml0IHBvbW9jw60gZTJmc2NrOyBvcHJhdnRlIGppIHBvdcW+aXTDrW1cbiIKKyN+ICJkdW1wZTJmcyAtYiBwcm8gdsO9cGlzIHNlem5hbXUgxaFwYXRuw71jaCBibG9rxa8gYSBlMmZzY2sgLUwgam3DqW5vc291Ym9ydVxuIgorI34gInBybyBqZWhvIG9wxJt0b3Zuw6kgbmHEjXRlbsOtLlxuIgorCisjfiBtc2dpZCAiRXJyb3IgYWxsb2NhdGluZyBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiQ2h5YmEgcMWZaSBhbG9rYWNpIGJsb2t1IHJvesWhw63FmWVuw71jaCBhdHJpYnV0xa8gJWIuICIKKworI34gbXNnaWQgIiIKKyN+ICJEdXBsaWNhdGUgQGJzIGZvdW5kLi4uIGludm9raW5nIGR1cGxpY2F0ZSBAYiBwYXNzZXMuXG4iCisjfiAiUGFzcyAxQjogUmVzY2FuIGZvciBkdXBsaWNhdGUvYmFkIEBic1xuIgorI34gbXNnc3RyICIiCisjfiAiTmFsZXplbnkgZHVwbGlrw6F0bsOtIGJsb2t54oCmIHNwb3XFoXTDrW0gcHLFr2Nob2R5IHBybyBkdXBsaWvDoXRuw60gYmxva3kuXG4iCisjfiAiUHLFr2Nob2QgMUI6IE9wxJt0b3Zuw6kgaGxlZMOhbsOtIGR1cGxpa292YW7DvWNoL8WhcGF0bsO9Y2ggYmxva8WvXG4iCisKKyN+IG1zZ2lkICJEdXBsaWNhdGUvYmFkIEBiKHMpIGluIEBpICVpOiIKKyN+IG1zZ3N0ciAiRHVwbGlrb3ZhbsO9L8WhcGF0bsO9IGJsb2soeSkgdiBpbm9kZSAlaToiCisKKyN+IG1zZ2lkICJGb3JjaWJseSBjbGVhcmluZyBIVFJFRSBmbGFnIG9uIEBpICVkICglcSkuICAoQmV0YSB0ZXN0IGNvZGUpXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJWeW51Y2VuxJsgbWHFvnUgcMWZw616bmFrIEhUUkVFIHYgaW5vZGUgJWQgKCVxKS4gKEvDs2QgdiBiZXRhIHRlc3RvdsOhbsOtKVxuIgorCisjfiBtc2dpZCAiIgorI34gIiU4ZCBibG9ja3MgdXNlZCAoJWQlJSlcbiIKKyN+ICIlOGQgYmFkIGJsb2Nrc1xuIgorI34gbXNnc3RyICIiCisjfiAiJThkIHBvdcW+aXTDvWNoIGJsb2vFryAoJWQlJSlcbiIKKyN+ICIlOGQgxaFwYXRuw71jaCBibG9rxa9cbiIKKworI34gbXNnaWQgIiIKKyN+ICJcbiIKKyN+ICIlOGQgcmVndWxhciBmaWxlc1xuIgorI34gIiU4ZCBkaXJlY3Rvcmllc1xuIgorI34gIiU4ZCBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCisjfiAiJThkIGJsb2NrIGRldmljZSBmaWxlc1xuIgorI34gIiU4ZCBmaWZvc1xuIgorI34gIiU4ZCBsaW5rc1xuIgorI34gIiU4ZCBzeW1ib2xpYyBsaW5rcyAoJWQgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKKyN+ICIlOGQgc29ja2V0c1xuIgorI34gIi0tLS0tLS0tXG4iCisjfiAiJThkIGZpbGVzXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICIlOGQgb2J5xI1lam7DvWNoIHNvdWJvcsWvXG4iCisjfiAiJThkIGFkcmVzw6HFmcWvXG4iCisjfiAiJThkIHNvdWJvcsWvIHpuYWtvdsO9Y2ggemHFmcOtemVuw61cbiIKKyN+ICIlOGQgc291Ym9yxa8gYmxva292w71jaCB6YcWZw616ZW7DrVxuIgorI34gIiU4ZCBmaWZvXG4iCisjfiAiJThkIG9ka2F6xa9cbiIKKyN+ICIlOGQgc3ltYm9saWNrw71jaCBvZGthesWvICglZCByeWNobMO9Y2ggc3ltYm9saWNrw71jaCBvZGthesWvKVxuIgorI34gIiU4ZCBzb2NrZXTFr1xuIgorI34gIi0tLS0tLS0tXG4iCisjfiAiJThkIHNvdWJvcsWvXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisjfiAiaXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi4gIFZhbGlkIHJhaWQgb3B0aW9ucyBhcmU6XG4iCisjfiAiXHRlYV92ZXI9PGVhX3ZlcnNpb24gKDEgb3IgMilcbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlJvesWhw63FmWVuw6kgcMWZZXDDrW5hxI1lIGpzb3Ugb2RkxJtsZW55IMSNw6Fya2FtaSBhIG1vaG91IG3DrXQgYXJndW1lbnQsIGt0ZXLDvSBqZVxuIgorI34gIm9kZMSbbGVuIHpuYW3DqW5rZW0gcm92bsOhIHNlICjigJ494oCcKS4gUGxhdG7DqSBwxZllcMOtbmHEjWUgcmFpZCBqc291OlxuIgorI34gIlx0ZWFfdmVyPTx2ZXJ6ZV9lYSAoMSBuZWJvIDIpXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisjfiBtc2dzdHIgImhvdG92byAgICAgICAgICAgICAgICAgICAgICBcbiIKKworI34gbXNnaWQgImR1cmluZyBzZWVrIG9uIGJsb2NrICVkIgorI34gbXNnc3RyICJwxZlpIHBvc3VudSBuYSBibG9rICVkIgorCisjfiBtc2dpZCAiSW5pdGlhbGl6aW5nIHJhbmRvbSB0ZXN0IGRhdGFcbiIKKyN+IG1zZ3N0ciAiSW5pY2lhbGl6dWppIG7DoWhvZG7DoSB0ZXN0b3ZhY8OtIGRhdGFcbiIKKworI34gbXNnaWQgImJhZCBibG9ja3MgcmFuZ2U6ICVsdS0lbHUiCisjfiBtc2dzdHIgIsWhcGF0bsO9IHJvenNhaCBibG9rxa86ICVsdS0lbHUiCisKKyN+IG1zZ2lkICIgICAgICAgdGhpc29mZiAgICAgYmxvY2sgZnNfYmxrX3N6ICBibGtzeiBncnAgbGFzdF9tb3VudFxuIgorI34gbXNnc3RyICIgICAgICAgdGVudG9wb3MgICAgYmxvayAgZnNfYmxrX3N6ICBibGtzeiBncnAgbGFzdF9tb3VudFxuIgorCisjfiBtc2dpZCAiKHVua25vd24gb3MpIgorI34gbXNnc3RyICIobmV6bsOhbcO9IG9zKSIKKworI34gbXNnaWQgIiIKKyN+ICJVc2FnZTogJXMgPGRldjE+IDxkZXYyPiA8ZGV2Mz5cbiIKKyN+ICJcbiIKKyN+ICJUaGlzIHByb2dyYW0gcHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBhIHNldCBvZiBkZXZpY2VzXG4iCisjfiAiQSBjb21tb24gd2F5IHRvIHVzZSB0aGlzIHByb2dyYW0gaXM6XG4iCisjfiAiXG4iCisjfiAiXHQlcyAvZGV2L2hkYT9cbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlBvdcW+aXTDrTogJXMgPHphxZkxPiA8emHFmTI+IDx6YcWZMz5cbiIKKyN+ICJcbiIKKyN+ICJUZW50byBwcm9ncmFtIHZ5dGlza25lIGluZm9ybWFjZSBvIG9kZMOtbGVjaCBwcm8gc2FkdSB6YcWZw616ZW7DrVxuIgorI34gIk9idnlrbMO9IHpwxa9zb2IgcG91xb5pdMOtIHRvaG90byBwcm9ncmFtdSBqZTpcbiIKKyN+ICJcbiIKKyN+ICJcdCVzIC9kZXYvaGRhP1xuIgorI34gIlxuIgorCisjfiBtc2dpZCAiTnVtYmVyIG9mIGZyZWUgYmxvY2tzOiAlZC8lZCwgTmVlZGVkOiAlZFxuIgorI34gbXNnc3RyICJQb8SNZXQgdm9sbsO9Y2ggYmxva8WvOiAlZC8lZCwgUG90xZllYmE6ICVkXG4iCisKKyN+IG1zZ2lkICJHb2luZyBpbnRvIGRlc3BlcmF0aW9uIG1vZGUgZm9yIGJsb2NrIGFsbG9jYXRpb25zXG4iCisjfiBtc2dzdHIgIlDFmWVjaMOhesOtbSBkbyB6b3VmYWzDqWhvIHJlxb5pbXUgYWxva2FjZSBibG9rxa9cbiIKKworI34gbXNnaWQgIk1vdmluZyAlZCBibG9ja3MgJXUtPiV1XG4iCisjfiBtc2dzdHIgIlDFmWVzb3V2w6FtICVkIGJsb2vFryAldS0+JXVcbiIKKworI34gbXNnaWQgImlubz0ldSwgYmxvY2tjbnQ9JWxsZCwgJXUtPiV1XG4iCisjfiBtc2dzdHIgImlubz0ldSwgcG/EjWV0Ymxva8WvPSVsbGQsICV1LT4ldVxuIgorCisjfiBtc2dpZCAiSW5vZGUgbW92ZWQgJXUtPiV1XG4iCisjfiBtc2dzdHIgIkl1emVsIHDFmWVzdW51dCAldS0+JXVcbiIKKworI34gbXNnaWQgIklub2RlIHRyYW5zbGF0ZSAoZGlyPSV1LCBuYW1lPSUuKnMsICV1LT4ldSlcbiIKKyN+IG1zZ3N0ciAiUMWZZWtsYWQgaW5vZGUgKGFkcj0ldSwgbsOhemV2PSUuKnMsICV1LT4ldSlcbiIKKworI34gbXNnaWQgIkl0YWJsZSBtb3ZlIGdyb3VwICVkIGJsb2NrICV1LT4ldSAoZGlmZiAlZClcbiIKKyN+IG1zZ3N0ciAiUMWZZXN1biBpdGFibGUgc2t1cGluYSAlZCBibG9rICV1LT4ldSAocm96ZMOtbCAlZClcbiIKKworI34gbXNnaWQgIiVkIGJsb2NrcyBvZiB6ZXJvcy4uLlxuIgorI34gbXNnc3RyICIlZCBibG9rxa8gbnVs4oCmXG4iCisKKyN+IG1zZ2lkICJJbm9kZSB0YWJsZSBtb3ZlIGZpbmlzaGVkLlxuIgorI34gbXNnc3RyICJQxZllc3VuIHRhYnVsa3kgaW5vZGUgZG9rb27EjWVuLlxuIgorCisjIEZJWE1FOiB1bmxvY2FsaXphYmxlCisjfiBtc2dpZCAiJThkIGxhcmdlIGZpbGUlc1xuIgorI34gbXNnc3RyICIlOGQgdmVsa8O9Y2ggc291Ym9yxa8lc1xuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2RhLmdtbyBiL2UyZnNwcm9ncy9wby9kYS5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRkMjg3YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9kYS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2RhLnBvIGIvZTJmc3Byb2dzL3BvL2RhLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEzODE5N2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZGEucG8KQEAgLTAsMCArMSw4MDc2IEBACisjIEUyZnNwcm9ncyB0cmFuc2xhdGlvbiB0ZW1wbGF0ZSBmaWxlCisjIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgCisjICAgICAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyCisjICAgICBieSBUaGVvZG9yZSBUcydvCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4sIDIwMTIuCisjIEpvZSBIYW5zZW4gPGpvZWRhbHRvbjJAeWFob28uZGs+LCAyMDEyLCAyMDE0LCAyMDE1LCAyMDE2LgorIworIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4gCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyCisjLiAJJUIJImluZGlyZWN0IGJsb2NrIiB8ICJibG9jayAjIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXIKKyMuIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuIAklRGkJPGRpcmVudD4gLT4gaW5vCQlpbm9kZSBudW1iZXIKKyMuIAklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmcKKyMuIAklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4gCSVEbAk8ZGlyZW50PiAtPiBuYW1lX2xlbgorIy4gCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZQorIy4gCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4gCSVnCTxncm91cD4JCQlpbnRlZ2VyCisjLiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyMuIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisjLiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyMuIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisjLiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorIy4gCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisjLiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisjLiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuIAklSWcJPGlub2RlPiAtPiBpX2dpZAorIy4gCSVJdAk8c3RyPgkJCWZpbGUgdHlwZQorIy4gCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4gCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisjLiAJJU4JPG51bT4KKyMuIAklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuIAklUAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMCisjLiAJCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLiAJJXEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisjLiAJJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLiAJJXMJPHN0cj4JCQltaXNjZWxsYW5lb3VzIHN0cmluZworIy4gCSVTCQliYWNrdXAgc3VwZXJibG9jaworIy4gCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGUyZnNwcm9ncyAxLjQzLjFcbiIKKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogdHl0c29AYWx1bS5taXQuZWR1XG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDktMDQgMjE6MjctMDQwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTYtMDYtMjAgMjI6MDArMDIwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogSm9lIEhhbnNlbiA8am9lZGFsdG9uMkB5YWhvby5kaz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBEYW5pc2ggPGRhbnNrQGRhbnNrLWdydXBwZW4uZGs+XG4iCisiTGFuZ3VhZ2U6IGRhXG4iCisiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJVZ3lsZGlnIGJsb2sgJXUgdWRlbiBmb3IgaW50ZXJ2YWw7IGlnbm9yZXJldFxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInVuZGVyIHRpbHJlZ25lbGlnaGVkc2tvbnRyb2wgYWYgZGUgdWd5bGRpZ2UgYmxva2tlcyBpa251ZGUiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIGRlIHVneWxkaWdlIGJsb2trZXMgaWtudWRlIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAidW5kZXIgw6VibmluZyBhZiAlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICJ1bmRlciBwb3BlbiBhZiDCuyVzwqsiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAidW5kZXIgbMOmc25pbmcgaSBsaXN0ZSBvdmVyIMO4ZGVsYWd0ZSBibG9ra2UgZnJhIGZpbCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAidW5kZXIgb3BkYXRlcmluZyBhZiDDuGRlbGFndCBibG9rLWlrbnVkZSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIkFkdmFyc2VsOiBVZ3lsZGlnIGJsb2sgJXUgZnVuZGV0IGkgw7hkZWxhZ3QgYmxvay1pa251ZGUuIFJ5ZGRldC5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRmVqbCB2ZWQgbMOmc25pbmcgYWYgYmxvayAlbHUgKCVzKSBtZW5zICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJGZWpsIHZlZCBsw6ZzbmluZyBhZiBibG9rICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NiBlMmZzY2svZWhhbmRsZXIuYzoxMTUKK21zZ2lkICJJZ25vcmUgZXJyb3IiCittc2dzdHIgIklnbm9yZXIgZmVqbCIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICJGcmVtdHZpbmcgZ2Vuc2tyaXZuaW5nIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRmVqbCB2ZWQgc2tyaXZuaW5nIGFmIGJsb2sgJWx1ICglcykgbWVucyAlcy4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkZlamwgdmVkIHNrcml2bmluZyBhZiBibG9rICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAidG9tbWUgbWFwcGVibG9ra2UiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAidG9tdCBtYXBwZWtvcnQiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorbXNnc3RyICJUb20gbWFwcGVibG9rICV1ICgjJWQpIGkgaWtudWRlICV1XG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzoyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgZmlsZW5hbWUgbmJsb2NrcyBibG9ja3NpemVcbiIKK21zZ3N0ciAiJXM6ICVzIGZpbG5hdm4gbmJsb2NrZXMgYmxva3N0w7hycmVsc2VcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiVWd5bGRpZ3QgYW50YWwgYmxva2tlIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJLdW5uZSBpa2tlIGFsbG9rZXJlIGJsb2ttZWxsZW1sYWdlciAoc2l6ZT0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAidWR2aWQgZ2VuYnlnbmluZyBhZiBmaWwtaWtudWRla29ydCIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIkJydWc6ICVzIGRpc2tcbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiQkxLRkxTQlVGIGlvY3RsIGVyIGlra2UgdW5kZXJzdMO4dHRldCEgS2FuIGlra2UgdMO4bW1lIG1lbGxlbWxhZ3JlLlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gZGV2aWNlXG4iCittc2dzdHIgIkJydWc6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGVuaGVkXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAidW5kZXIgw6VibmluZyBhZiAlcyBmb3IgdMO4bW5pbmciCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IHTDuG1tZSAlcyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciCittc2dzdHIgInVuZGVyIMOlYm5pbmcgYWYgwrslc8KrIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInVuZGVyIMOlYmluZyBhZiBpa251ZGVza2FubmluZyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgInVuZGVyIGluZGhlbnRlbHNlIGFmIHRla3N0aWtudWRlIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiV1IGlrbnVkZXIgc2thbm5ldC5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJsw6ZzbmluZyBhZiBqb3VybmFsIHN1cGVyYmxva1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogbm8gdmFsaWQgam91cm5hbCBzdXBlcmJsb2NrIGZvdW5kXG4iCittc2dzdHIgIiVzOiBpbmdlbiBneWxkaWcgam91cm5hbCBzdXBlcmJsb2sgZnVuZGV0XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogam91cm5hbCBmb3Iga29ydFxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiJXM6IGdlbnNrYWJlciBqb3VybmFsXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogdWRmw7hyZXIgaWtrZSBqb3VybmFsZ2VuZGFubmVsc2UgbsOlciBza3JpdmViZXNreXR0ZXRcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IGdlbsOlYm5lICVzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImF1ZHZpZGV0IGF0dHJpYnV0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJBZmVqbGFsbG9rZXJpbmciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJiYmxvayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTYKK21zZ2lkICJCYml0bWFwIgorbXNnc3RyICJCYml0bWFwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY2tvbXByaW1lciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ2VyIGkga29uZmxpa3QgbWVkIG5vZ2xlIGFuZHJlIGZpbHN5c3RlbWJsb2trZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkbWFwcGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkRzbGV0dGV0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZXBvc3QiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVAZSDCuyVEbsKrIGkgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZmZpbHN5c3RlbSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjQKK21zZ2lkICJGZm9yIEBpICVpICglUSkgaXMiCittc2dzdHIgIkZmb3IgQGkgJWkgKCVRKSBlciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjUKK21zZ2lkICJnZ3JvdXAiCittc2dzdHIgImdncnVwcGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoSFRSRUUgQGQgQGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaWtudWRlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOAorbXNnaWQgIklpbGxlZ2FsIgorbXNnc3RyICJJaWxsZWdhbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiampvdXJuYWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImx0YWJ0K2Z1bmRldCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICJMZXIgZW4gaGVudmlzbmluZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibW11bHRpcGxpY2VyZS1rcsOmdmV0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICJudWd5bGRpZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm9mb3LDpmxkcmVsw7hzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwcHJvYmxlbSBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNgorbXNnaWQgInFxdW90YSIKK21zZ3N0ciAicWt2b3RhIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJycm9vdCBAaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJzYsO4ciB2w6ZyZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAiU3N1cGVyQGIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInVpa2tlIGZvcmJ1bmRldCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDEKK21zZ2lkICJ2ZGV2aWNlIgorbXNnc3RyICJ2ZW5oZWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieHVkdmlkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiem51bC1sw6ZuZ2RlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjxOVUxMLWlrbnVkZW4+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NQorbXNnaWQgIjxUaGUgYmFkIGJsb2NrcyBpbm9kZT4iCittc2dzdHIgIjxEZSB1Z3lsZGlnZSBibG9ra2VzIGlrbnVkZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU3Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEJydWdlcmt2b3RhZW5zIGlrbnVkZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU4Cittc2dpZCAiPFRoZSBncm91cCBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxHcnVwcGVrdm90YWVucyBpa251ZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OQorbXNnaWQgIjxUaGUgYm9vdCBsb2FkZXIgaW5vZGU+IgorbXNnc3RyICI8T3BzdGFydHNpbmRsw6ZzZXJlbnMgaWtudWRlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjAKK21zZ2lkICI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iCittc2dzdHIgIjxGb3J0cnlkIG1hcHBlLWlrbnVkZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPEdydXBwZWJlc2tyaXZlci1pa251ZGVuPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI8Sm91cm5hbGVucyBpa251ZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPFJlc2VydmVyZXQgaWtudWRlIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxSZXNlcnZlcmV0IGlrbnVkZSAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJyZWd1bMOmciBmaWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM1Cittc2dpZCAiZGlyZWN0b3J5IgorbXNnc3RyICJtYXBwZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJ0ZWduZW5oZWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJibG9rZW5oZWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQxCittc2dpZCAibmFtZWQgcGlwZSIKK21zZ3N0ciAibmF2bmdpdmV0IGRhdGFrYW5hbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJzeW1ib2xzayBoZW52aXNuaW5nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NSBtaXNjL3V1aWRkLmM6MTYyCittc2dpZCAic29ja2V0IgorbXNnc3RyICJzb2trZWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgInVrZW5kdCBmaWx0eXBlIG1lZCB0aWxzdGFuZCAwJW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImluZGlyZWt0ZSBibG9rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZG9iYmVsdCBpbmRpcmVrdGUgYmxvayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgInRyZWRvYmJlbHQgaW5kaXJla3RlIGJsb2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAib3ZlcnPDpnR0dGVyYmxvayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICJibG9rICMiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAiZm9yw7hnIGjDpnZkZWRlIGlrbnVkZWtvcnQiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgImludGVybiBmZWpsOiBrYW4gaWtrZSBmaW5kZSBkdXBfYmxrIGZvciAlbGx1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgInJldHVybmVyZXQgZnJhIGNsb25lX2ZpbGVfYmxvY2siCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgImludGVybiBmZWpsOiBrdW5uZSBpa2tlIHNsw6UgRUEtYmxva3Bvc3Qgb3AgZm9yICVsbHUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICJpbnRlcm4gZmVqbDoga3VubmUgaWtrZSBzbMOlIEVBLWlrbnVkZXBvc3Qgb3AgZm9yICV1IgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgImzDpnNlciBtYXBwZWJsb2siCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMTEKK21zZ2lkICJpbi11c2UgaW5vZGUgbWFwIgorbXNnc3RyICJpIGJydWctaWtudWRla29ydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBlLWlrbnVkZWtvcnQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMzIKK21zZ2lkICJyZWd1bGFyIGZpbGUgaW5vZGUgbWFwIgorbXNnc3RyICJyZWd1bMOmciBmaWwtaWtudWRla29ydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAiaSBicnVnLWJsb2trb3J0IgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJtZXRhZGF0YWJsb2trb3J0IgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICLDpWJuZXIgaWtudWRlc2thbm5pbmciCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJoZW50ZXIgbsOmc3RlIGlrbnVkZSBmcmEgc2thbm5pbmciCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIkdlbm5lbWzDuGIgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAibMOmc2VyIGluZGlyZWt0ZSBibG9ra2UgZm9yIGlrbnVkZSAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgInVneWxkaWcgaWtudWRla29ydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgImlrbnVkZSBpIHVneWxkaWcgYmxva2tvcnQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICJpbWFnaWMtaWtudWRla29ydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJmb3LDuGcgaMOmdmRldCBibG9ra29ydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IGZvcnZlbnRlciAlNmx1IGZpayBwaHlzICU2bHUgKGJsa2NudCAlbGxkKVxuIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICJibG9rLWJpdG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAiaWtudWRlLWJpdG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJpa251ZGV0YWJlbCIKKworIzogZTJmc2NrL3Bhc3MyLmM6Mjg3Cittc2dpZCAiUGFzcyAyIgorbXNnc3RyICJHZW5uZW1sw7hiIDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJLYW4gaWtrZSBmb3J0c8OmdHRlLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAiaWtudWRlIGbDpnJkaWcgYml0bWFwIgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICJUb3BodWtvbW1lbHNlIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIkdlbm5lbWzDuGIgMyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICJpa251ZGUtbG9vcGRldGVrdGlvbnNiaXRtYXAiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiR2VubmVtbMO4YiA0IgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiR2VubmVtbMO4YiA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIoaW5nZW4gcHJvbXB0KSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAiUmV0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIlJ5ZCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJSZWFsbG9rZXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiQWxsb2tlciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiVWR2aWQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJGb3JiaW5kIHRpbCAvbWlzdGV0K2Z1bmRldCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OAorbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAiT3ByZXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkKK21zZ2lkICJTYWx2YWdlIgorbXNnc3RyICJSZWQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiQWZrb3J0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIlJ5ZCBpa251ZGUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAiQWZicnlkIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzCittc2dpZCAiU3BsaXQiCittc2dzdHIgIk9wZGVsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIkZvcnRzw6Z0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1Cittc2dpZCAiQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCittc2dzdHIgIktsb24gYmxva2tlIGtyw6Z2ZXQgYWYgZmxlcmUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiU2xldCBmaWwiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAiVW5kZXJ0cnlrIGJlc2tlZGVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4Cittc2dpZCAiVW5saW5rIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjkKK21zZ2lkICJDbGVhciBIVHJlZSBpbmRleCIKK21zZ3N0ciAiUnlkIEhUcmVlLWluZGVrcyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MAorbXNnaWQgIlJlY3JlYXRlIgorbXNnc3RyICJHZW5za2FiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoSU5HRU4pIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIlJFVFRFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MQorbXNnaWQgIkNMRUFSRUQiCittc2dzdHIgIlJZRERFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAiUkVBTExPS0VSRVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkFMTE9LRVJFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJVRFZJREVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIkdFTkZPUkJVTkRFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIk9QUkVUVEVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIlJFRERFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAiQUZLT1JURVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkKK21zZ2lkICJJTk9ERSBDTEVBUkVEIgorbXNnc3RyICJJS05VREUgUllEREVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwCittc2dpZCAiQUJPUlRFRCIKK21zZ3N0ciAiQUZCUlVEVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICJPUERFTCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIkZPUlRTw4ZUVEVSIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJCTE9LS0UgRUpFVCBBRiBGTEVSRSBLTE9ORVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkZJTCBTTEVUVEVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiVU5ERVJUUllLVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICJIRU5WSVNOSU5HIEZKRVJORVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICJIVFJFRS1JTkRFS1MgUllEREVUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiVklMIEdFTlNLQUJFIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJibG9rYml0bWFwIGZvciBncnVwcGUgJWcgZXIgaWtrZSBpIGdydXBwZS4gKGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgImlrbnVkZS1iaXRtYXAgZm9yIGdydXBwZSAlZyBlciBpa2tlIGkgZ3J1cHBlLiAoYmxvayAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgdGFibGUgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIy4gQC1leHBhbmRlZDogV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTkKK21zZ2lkICIiCisiQGkgdGFibGUgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKKyJXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuIgorbXNnc3RyICIiCisiaWtudWRlLXRhYmVsIGZvciBncnVwcGUgJWcgZXIgaWtrZSBpIGdydXBwZS4gKGJsb2sgJWIpXG4iCisiQURWQVJTRUw6IEFMVk9STElHIERBVEFUQUIgS0FOIE9QU1TDhS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiU3VwZXJibG9ra2VuIGt1bm5lIGlra2UgbMOmc2VzIGVsbGVyIGJlc2tyaXZlciBpa2tlIGV0IGd5bGRpZ3QgZXh0Mi9leHQzLyIKKyJleHQ0LVxuIgorImZpbHN5c3RlbS4gSHZpcyBlbmhlZGVuIGVyIGd5bGRpZyBvZyBkZW4gaW5kZWhvbGRlciBldCBleHQyL2V4dDMvZXh0NC0iCisiZmlsc3lzdGVtXG4iCisiKG9nIGlra2Ugc3dhcCBlbGxlciB1ZnMgZWxsZXIgbm9nZXQgYW5kZXQpLCBzw6UgZXIgc3VwZXJibG9ra2VuIGtvcnJ1cHQsXG4iCisib2cgZHUga2FuIGZvcnPDuGdlIGF0IGvDuHJlIGUyZnNjayBtZWQgZW4gYWx0ZXJuYXRpdiBzdXBlcmJsb2s6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgZWxsZXJcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIGZpbGVzeXN0ZW0gc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBzdXBlcmJsb2NrKSBpcyAlYiBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIGRldmljZSBpcyAlYyBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogRWl0aGVyIHRoZSBzdXBlcmJsb2NrIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2Cittc2dpZCAiIgorIlRoZSBAZiBzaXplIChhY2NvcmRpbmcgdG8gdGhlIEBTKSBpcyAlYiBAYnNcbiIKKyJUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgQHYgaXMgJWMgQGJzXG4iCisiRWl0aGVyIHRoZSBAUyBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXRzIHN0w7hycmVsc2UgKGrDpnZuZsO4ciBzdXBlcmJsb2trZW4pIGVyICViIGJsb2trZVxuIgorIkRlbiBmeXNpc2tlIHN0w7hycmVsc2UgZm9yIGVuaGVkZW4gZXIgJWMgYmxva2tlXG4iCisiU2FuZHN5bmxpZ3ZpcyBlciBlbnRlbiBzdXBlcmJsb2trZW4gZWxsZXIgcGFydGl0aW9uc3RhYmVsbGVuIMO4ZGVsYWd0IVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbgorIy4gQC1leHBhbmRlZDogVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuCisjLiBALWV4cGFuZGVkOiBmcm9tIHRoZSBibG9jayBzaXplLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKyJzdXBlcmJsb2sgYmxva19zdMO4cnJlbHNlID0gJWIsIGZyYWdzdHIuID0gJWMuXG4iCisiRGVubmUgdmVyc2lvbiBhZiBlMmZzY2sgdW5kZXJzdMO4dHRlciBpa2tlIGZyYWdtZW50c3TDuHJyZWxzZXIsIGRlciBlclxuIgorImZvcnNrZWxsaWdlIGZyYSBibG9rc3TDuHJyZWxzZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwCittc2dpZCAiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIlN1cGVyYmxvayBibG9ra2VfcGVyX2dydXBwZSA9ICViLCBza3VsbGUgaGF2ZSB2w6ZyZXQgJWNcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBmaXJzdF9kYXRhX2Jsb2NrID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTUKK21zZ2lkICJAUyBmaXJzdF9kYXRhX0BiID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBza3VsbGUgaGF2ZSB2w6ZyZXQgJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiQGYgaGF2ZGUgaWtrZSBlbiBVVUlEOyBvcHJldHRlIGVuLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkJlbcOmcms6IEh2aXMgZmxlcmUgaWtudWRlLSBlbGxlciBibG9rLWJpdG1hcGJsb2trZSBlbGxlciBkZWxlXG4iCisiYWYgaWtudWRlLXRhYmVsbGVuIGtyw6Z2ZXIgbnkgcGxhY2VyaW5nLCBzw6Uga2FuIGR1IHByw7h2ZSBhdFxuIgorImvDuHJlIGUyZnNjayBtZWQgdGlsdmFsZ2V0IMK7LWIgJVPCqyBmw7hyc3QuIFByb2JsZW1ldCBlciBtw6Vza2VcbiIKKyJrdW4gaSBkZW4gcHJtw6ZyZSBibG9rZ3J1cHBlcyBiZXNrcml2ZXJlLCBvZyBzaWtrZXJoZWRza29waWVuc1xuIgorImJsb2tncnVwcGViZXNrcml2ZXJlIGthbiB2w6ZyZSBvLmsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICJLb3JydXB0aW9uIGZ1bmRldCBpIEBTLiAoJXMgPSAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkZlamwgdW5kZXIgYmVzdGVtbWVsc2UgYWYgc3TDuHJyZWxzZW4gcMOlIGRlbiBmeXNpc2tlIEB2OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICJpa251ZGUtYW50YWwgaSBzdXBlcmJsb2sgZXIgJWksIHNrYWwgdsOmcmUgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCdlbiB1bmRlcnN0w7h0dGVyIGlra2UgZmlsdHlwZWZ1bmt0aW9uZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAic3VwZXJibG9ra2VuIGhhciBlbiB1Z3lsZGlnIGpvdXJuYWwgKGlrbnVkZSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiRWtzdGVybiBqb3VybmFsIGhhciBmbGVyZSBmaWxzeXN0ZW1icnVnZXJlIChpa2tlIHVuZGVyc3TDuHR0ZXQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIkthbiBpa2tlIGZpbmRlIEBqXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJFa3N0ZXJuIEBqIGhhciB1Z3lsZGlnIEBTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRWtzdGVybiBAaiB1bmRlcnN0w7h0dGVyIGlra2UgZGV0dGUgQGZcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJAaiBAUyBlciDDuGRlbGFndC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXNfam91cm5hbCBmbGFnIGlzIGNsZWFyLCBidXQgYSBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjMxCittc2dpZCAiQFMgaGFzX0BqIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgInN1cGVyYmxva3MgaGFzX2pvdXJuYWwtZmxhZyBlciByeWRkZXQsIG1lbiBlbiBqb3VybmFsIGVyIHRpbCBzdGVkZS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKyJzdXBlcmJsb2tzIG5lZWRzX3JlY292ZXJ5LWZsYWcgZXIgYW5naXZldCwgbWVuIGluZ2VuIGpvdXJuYWwgZXIgdGlsIHN0ZWRlLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBqb3VybmFsIGhhcyBkYXRhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0MQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAic3VwZXJibG9rcyBuZWVkc19yZWNvdmVyeS1mbGFnIGVyIHJ5ZGRldCwgbWVuIGpvdXJuYWwgaGFyIGRhdGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIlJ5ZCBAaiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBmaWxlc3lzdGVtLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1MSBlMmZzY2svcHJvYmxlbS5jOjc0NAorbXNnaWQgIkBmIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIEBmLiAgIgorbXNnc3RyICJmaWxzeXRlbSBoYXIgZnVua3Rpb25zZmxhZyBhbmdpdmV0LCBtZW4gZXIgZXQgcmV2aXNpb24gMC1maWxzeXN0ZW0uIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiIKKyIlcyBmb3LDpmxkcmVsw7hzIGlrbnVkZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgdGlsc3RhbmQ9JUltLCBzdMO4cnJlbHNlPSVJcylcbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2MQorbXNnaWQgIkBJICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgImlsbGVnYWwgJUIgKCViKSBmdW5kZXQgaSBmb3LDpmxkcmVsw7hzIGlrbnVkZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkFsbGVyZWRlIHJ5ZGRldCAlYiAoJWIpIGZ1bmRldCBpIGZvcsOmbGRyZWzDuHMgaWtudWRlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJJbGxlZ2FsIGZvcsOmbGRlbMO4cyBpa251ZGUgJWkgaSBzdXBlcmJsb2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgaW5vZGUgJWkgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKK21zZ3N0ciAiSWxsZWdhbCBpa251ZGUgJWkgaSBmb3LDpmxkcmVsw7hzIGlrbnVkZWxpc3RlLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJKb3VybmFsc3VwZXJibG9rIGhhciBldCB1a2VuZHQgc2tyaXZlYmVza3l0dGV0IGZ1bmt0aW9uc2ZsYWcgYW5naXZldC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICIiCisiSm91cm5hbHN1cGVyYmxvayBoYXIgZXQgdWtlbmR0IG9nIGlra2Uga29tcGF0aWJlbHQgZnVua3Rpb25zZmxhZyBhbmdpdmV0LlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgIkpvdXJuYWx2ZXJzaW9uIGVyIGlra2UgdW5kZXJzdMO4dHRldCBhZiBkZW5uZSBlMmZzY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiRmx5dHRlciBAaiBmcmEgLyVzIHRpbCBza2p1bHQgQGkuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIG1vdmluZyBqb3VybmFsOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZlamwgdW5kZXIgZmx5dG5pbmcgYWYgam91cm5hbDogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZhbmR0IHVneWxkaWcgVjItam91cm5hbHN1cGVyYmxva2ZlbHRlciAoZnJhIFYxLWpvdXJuYWwpLlxuIgorIlJ5ZGRlciBmZWx0ZXIgZWZ0ZXIgVjEtam91cm5hbHN1cGVyYmxva2tlbiAuLi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogUnVuIGpvdXJuYWwgYW55d2F5CisjOiBlMmZzY2svcHJvYmxlbS5jOjMxMgorbXNnaWQgIlJ1biBAaiBhbnl3YXkiCittc2dzdHIgIkvDuHIgam91cm5hbCBhbGxpZ2V2ZWwiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorIkdlbmRhbm5lbHNlc2ZsYWcgZXIgaWtrZSBhbmdpdmV0IGkgc2lra2VyaGVkc2tvcGllbiBzdXBlcmJsb2ssIHPDpSBrw7hyZXIgIgorImpvdXJuYWwgYWxsaWdldmVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICJMYXZlciBzaWtrZXJoZWRza29waSBhZiBqb3VybmFsZW5zIGlrbnVkZS1ibG9raW5mb3JtYXRpb24uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorIkZpbHN5c3RlbWV0IGhhciBpa2tlIHJlc2l6ZV9pbm9kZSBha3RpdmVyZXQsIG1lbiBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbiIKKyJlciAlTjsgc2thbCB2w6ZyZSBudWwuIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemVfaW5vZGUgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzMworbXNnaWQgIlJlc2l6ZV9AaSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgQGkgaXMgbm9uLXplcm8uICAiCittc2dzdHIgIlJlc2l6ZV9pbm9kZSBlciBpa2tlIGFrdGl2ZXJldCwgbWVuIHJlc2l6ZS1pa251ZGUgZXIgbm9uLXplcm8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzM4Cittc2dpZCAiUmVzaXplIEBpIG5vdCB2YWxpZC4gICIKK21zZ3N0ciAiUmVzaXplLWlrbnVkZSBlciBpa2tlIGd5bGRpZy4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb2tzIHNpZHN0ZSBtb250ZXJpbmdzdGlkc3B1bmt0ICgldCxcbiIKKyJcdG51ID0gJVQpIGVyIGkgZnJlbXRpZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQ4Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICJTdXBlcmJsb2stZmlmIGZvciBla3N0ZXJuIHN1cGVyYmxvayBza2FsIHbDpnJlICVYLiIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRpbGbDuGplciBkaXJoYXNoLWZpZiB0aWwgZmlsc3lzdGVtZXQuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiR3J1cHBlYmVza3JpdmVyICVnJ3Mga29udHJvbHN1bSBlciAlMDR4LCBza2FsIHbDpnJlICUwNHkuICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKyJHcnVwcGViZXNrcml2ZXIgJWcgbWFya2VyZXQgc29tIGlra2UgaW5pdGlhbGlzZXJldCB1ZGVuIGZ1bmt0aW9uc3PDpnQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgImdydXBwZWJlc2tyaXZlciAlZyBoYXIgdWd5bGRpZyB1YnJ1Z3QgaWtudWRlYW50YWwgJWIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJTaWRzdGUgZ3J1cHBlYmxva2JpdG1hcCBlciBpa2tlIGluaXRpYWxpc2VyZXQuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdHJhbnNhY3Rpb24gJWkgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC5cbiIKK21zZ3N0ciAiSm91cm5hbHRyYW5zYWt0aW9uICVpIHZhciDDuGRlbGFndCwgZ2VuYWZzcGlsbmluZyBibGV2IGFmYnJ1ZHQuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkZsYWdldCB0ZXN0X2ZzIGVyIGFuZ2l2ZXQgKG9nIGV4dDIgZXIgdGlsZ8OmbmdlbGlnKS4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzk3Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICJFbiBlbGxlciBmbGVyZSBibG9rZ3J1cHBlYmVza3JpdmVyZXMga29udHJvbHN1bW1lciBlciB1Z3lsZGlnZS4gICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiQW5naXZlciBmcml0IGlrbnVkZWFudGFsIHRpbCAlaiAodmFyICVpKVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICJBbmdpdmVyIGZyaXQgYmxva2FudGFsIHRpbCAlYyAodmFyICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4Cittc2dpZCAiTWFraW5nIEBxIEBpICVpICglUSkgaGlkZGVuLlxuIgorbXNnc3RyICJMYXZlciBrdm90YS1pa251ZGUgJWkgKCVRKSBza2p1bHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiQFMgaGFyIHVneWxkaWcgTU1QLWJsb2suICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAic3VwZXJibG9rIGhhciB1Z3lsZGlnIE1NUC1tYWdpLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgImV4dDJmc19vcGVuMjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCittc2dzdHIgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAic3VwZXJibG9rIE1NUC1ibG9ra2VucyBrb250cm9sc3VtIG1hdGNoZXIgaWtrZSBNTVAtYmxvay4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorInN1cGVyYmxvayA2NC1iaXQgZmlsc3lzdGVtZXIga3LDpnZlciB1ZHZpZGVsc2VyIGZvciBhdCB0aWxnw6UgaGVsZSBkaXNrZW4uICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDYyCittc2dpZCAiRmlyc3RfbWV0YV9iZyBpcyB0b28gYmlnLiAgKCVOLCBtYXggdmFsdWUgJWcpLiAgIgorbXNnc3RyICJGaXJzdF9tZXRhX2JnIGVyIGZvciBzdG9yLiAoJU4sIG1ha3MuIHbDpnJkaSAlZykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJFa3N0ZXJuIGtvbnRyb2xzdW0gZm9yIGpvdXJuYWxzdXBlcmJsb2sgbWF0Y2hlciBpa2tlIHN1cGVyYmxvay4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgInN1cGVyYmxvayBtZXRhZGF0YV9jc3VtX3NlZWQgZXIgaWtrZSBuw7hkdmVuZGlnIHVkZW4gbWV0YWRhdGFfY3N1bS4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJHZW5uZW1sw7hiIDE6IEtvbnRyb2xsZXJlciBpa251ZGVyLCBibG9ra2Ugb2cgc3TDuHJyZWxzZXJcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgInJvZC1pa251ZGUgZXIgaWtrZSBlbiBtYXBwZS4gICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSB6ZXJvLWxlbmd0aCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGEgQHogQGQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjgKK21zZ2lkICJAZyAlZydzIEBiIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMzCittc2dpZCAiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKK21zZ2lkICIlQiAoJWIpIG92ZXJsYXBzIEBmIG1ldGFkYXRhIGluIEBpICVpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODMKK21zZ2lkICJASSAlQiAoJWIpIGluIGJhZCBAYiBAaS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyMQorbXNnaWQgIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiQmxvayAlYiBpIGRlIHByaW3DpnJlIGdydXBwZWJlc2tyaXZlcmUgZXIgcMOlIGxpc3RlbiBtZWQgdWd5bGRpZ2UgYmxva2tlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJBZHZhcnNlbDogR3J1cHBlICVncyBzdXBlcmJsb2sgKCViKSBlciB1Z3lsZGlnLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJBZHZhcnNlbDogR3J1cHBlICVncyBrb3BpIGFmIGdydXBwZWJlc2tyaXZlcm5lIGhhciBlbiB1Z3lsZGlnIGJsb2sgKCViKS5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorIlByb2dyYW1tZXJpbmdzZmVqbD8gYmxvayAjJWIgcmVzZXJ2ZXJldCB1ZGVuIMOlcnNhZyBpIHByb2Nlc3NfYmFkX2Jsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nICVOIGNvbnRpZ3VvdXMgYmxvY2socykgaW4gYmxvY2sgZ3JvdXAgJWcgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0OQorbXNnaWQgIkBBICVOIGNvbnRpZ3VvdXMgQGIocykgaW4gQGIgQGcgJWcgZm9yICVzOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBiIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc5IGUyZnNjay9wcm9ibGVtLmM6MTc0MAorbXNnaWQgIkBBIEBpIEBCICglTik6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODQKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgQGlzICglaSk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBsw6ZzbmluZyBhZiBpa251ZGUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgImlrbnVkZSAlaSBoYXIgbWFnaXNrIGZsYWcgYW5naXZldC4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZWNpZWwgKGVuaGVkL3Nva2tlbC9maWZvL3N5bWJvbHNrX2hlbnZpc25pbmcpIGZpbCAoaWtudWRlICVpKSBoYXIgIgorInVmb3JhbmRlcmxpZ1xuIgorImVsbGVyIHRpbGbDuGota3VuIGZsYWcgYW5naXZldC4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBpbm9kZSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIEBpICVpIGhhcyBub24temVybyBzaXplLiAgIgorbXNnc3RyICIiCisiU3BlY2llbCAoZW5oZWQvc29ra2VsL2ZpZm8pIGlrbnVkZSAlaSBoYXIgZW4gc3TDuHJyZWxzZSBmb3Jza2VsbGlnIGZyYSBudWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgImpvdXJuYWwtaWtudWRlIGVyIGlra2UgaSBicnVnLCBtZW4gaW5kZWhvbGRlciBkYXRhLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiam91cm5hbCBlciBpa2tlIGVuIG5vcm1hbCBmaWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiaWtudWRlICVpIHZhciBlbiBkZWwgYWYgZGVuIGZvcsOmbGRyZWzDuHNlIGlrbnVkZWxpc3RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc2NQorbXNnaWQgIkBpcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAiCittc2dzdHIgIiIKKyJpa251ZGVyIHNvbSB2YXIgZGVsIGFmIGVuIMO4ZGVsYWd0IGZvcsOmbGRlbMO4cyBsw6Zua2V0IGxpc3RlIGJsZXYgZnVuZGV0LiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJkZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgYWxsb2tlcmluZyBhZiByZWZjb3VudC1zdHJ1a3R1ciAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBmb3IgaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzc1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiCittc2dzdHIgIiIKKyJEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgbMOmc25pbmcgYWYgdWR2aWRldCBhdHRyaWJ1dGJsb2sgJWIgZm9yIGlrbnVkZSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgImlrbnVkZSAlaSBoYXIgZW4gdWd5bGRpZyB1ZHZpZGV0IGF0dHJpYnV0YmxvayAlYi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBsw6ZzbmluZyBhZiB1ZHZpZGV0IGF0dHJpYnV0YmxvayAlYiAoJW0pLiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAidWR2aWRldCBhdHRyaWJ1dGJsb2sgJWIgaGFyIHJlZmVyZW5jZWFudGFsICVyLCBza2FsIHbDpnJlICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIHNrcml2bmluZyBhZiB1ZHZpZGV0IGF0dHJpYnV0YmxvayAlYiAoJW0pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIGhfYmxvY2tzID4gMS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICJ1ZHZpZGV0IGF0dHJpYnV0YmxvayAlYiBoYXIgaF9ibG9ra2UgPiAxLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODA1Cittc2dpZCAiQEEgQGEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICIiCisiZGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIGFsbG9rZXJpbmcgYWYgdWR2aWRldCBhdHRyaWJ1dHN0cnVrdHVyIGZvciAiCisicmVnaW9uYWxsb2tlcmluZy4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgInVkdmlkZXQgYXR0cmlidXRibG9rICViIGVyIMO4ZGVsYWd0IChhbGxva2VyaW5nc2tvbGxpc2lvbikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJ1ZHZpZGV0IGF0dHJpYnV0YmxvayAlYiBlciDDuGRlbGFndCAodWd5bGRpZ3QgbmF2bikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgInVkdmlkZXQgYXR0cmlidXRibG9rICViIGVyIMO4ZGVsYWd0ICh1Z3lsZGlnIHbDpnJkaSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgImlrbnVkZSAlaSBlciBmb3Igc3Rvci4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgQGQgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBtZWRmw7hyZXIgYXQgbWFwcGUgZXIgZm9yIHN0b3IuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBtZWRmw7hyZXIgYXQgZmlsIGVyIGZvciBzdG9yLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBtZWRmw7hyZXIgYXQgc3ltYm9sc2sgaGVudmlzbmluZyBlciBmb3Igc3Rvci4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiaWtudWRlICVpIGhhciBmbGFnZXQgSU5ERVhfRkwgYW5naXZldCBww6UgZmlsc3lzdGVtIHVkZW4gaHRyZWUtIgorInVuZGVyc3TDuHR0ZWxzZS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgImlrbnVkZSAlaSBoYXIgZmxhZ2V0IElOREVYLUZMIGFuZ2l2ZXQsIG1lbiBlciBpa2tlIGVuIG1hcHBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgcm9vdCBub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSBoYXMgYW4gQG4gcm9vdCBub2RlLlxuIgorbXNnc3RyICJIVFJFRS1tYXBwZS1pa251ZGUgJWkgaGFyIGVuIHVneWxkaWcgcm9vdC1rbmRlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkhUUkVFLW1hcHBlLWlrbnVkZSAlaSBoYXIgZW4gaWtrZSB1bmRlcnN0w7h0dGV0IGhhc2gtdmVyc2lvbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiSFRSRUUtbWFwcGUtaWtudWRlICVpIGhhciBlbiB0csOmZHliZGUgKCVOKSBzb20gZXIgZm9yIHN0b3JcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIlVneWxkaWcgYmxvay1pa251ZGUgaGFyIGVuIGluZGlyZWt0ZSBibG9rICglYikgc29tIGVyIGkga29uZmxpa3QgbWVkXG4iCisiZmlsc3lzdGVtZXRzIG1ldGFkYXRhLiIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXplIEBpIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLiIKK21zZ3N0ciAiw4ZuZHJpbmcgYWYgc3TDuHJyZWxzZSBmb3IgaWtudWRlIChnZW4pc2thYmVsc2UgbWlzbHlra2VkZXM6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJpa251ZGUgJWkgaGFyIGVuIGVrc3RyYSBzdMO4cnJlbHNlICglSVMpIHNvbSBlciB1Z3lsZGlnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5MAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJ1ZHZpZGV0IGF0dHJpYnV0IGkgaWtudWRlICVpIGhhciBlbiBuYW1lbGVuICglTikgc29tIGVyIHVneWxkaWdcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICIiCisidWR2aWRldCBhdHRyaWJ1dCBpIGlrbnVkZSAlaSBoYXIgZW4gdsOmcmRpZm9yc2t5ZG5pbmcgKCVOKSBzb20gZXIgdWd5bGRpZ1xuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICIiCisidWR2aWRldCBhdHRyaWJ1dCBpIGlrbnVkZSAlaSBoYXIgZW4gdsOmcmRpYmxvayAoJU4pIHNvbSBlciB1Z3lsZGlnIChza2FsIHbDpnJlICIKKyJvKVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorInVkdmlkZXQgYXR0cmlidXQgaSBpa251ZGUgJWkgaGFyIGVuIHbDpnJkaXN0w7hycmVsc2UgKCVOKSBzb20gZXIgdWd5bGRpZ1xuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJpa251ZGUgJWkgZXIgZW4gJUl0IG1lbiBsaWduZXIgZWdlbnRsaWcgZW4gbWFwcGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgaW52YWxpZCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTM2Cittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgQG4gbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBAUyBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1Cittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiSWtudWRlbnMga3ZvdGEgZXIgc3lubGlnIGZvciBicnVnZXJlbi4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIkRlbiB1Z3lsZGlnZSBibG9rLWlrbnVkZSB2aXJrZXIgaW52YWxpZC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJpa251ZGUgJWkgc2VyIHVkIHRpbCBhdCBpbmRob2xkIGJyYXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiSWtudWRlICVpIGJlc3TDpXIga29udHJvbGxlciwgbWVuIGtvbnRyb2xzdW0gbWF0Y2hlciBpa2tlIGlrbnVkZS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiaWtudWRlbiAlaSdzIHVkdmlkZXQgYXR0cmlidXQgZXIgw7hkZWxhZ3QgKGFsbG9rZXJpbmdza29sbGlzaW9uKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiaWtudWRlICVpIGhhciBmbGFnZXQgSU5MSU5FX0RBVEFfRkwgYW5naXZldCBww6UgZmlsc3lzdGVtIHVkZW4gaW5kbGVqcmV0ICIKKyJkYXRhdW5kZXJzdMO4dHRlbHNlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2OAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAaSAlaSBoYXMgQHggbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgQGIgJWMuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIiIKKyJpa251ZGUgJWkgaGFyIGZsYWdldCBJTkxJTkVfREFUQV9GTCBhbmdpdmV0LCBtZW4gdWR2aWRldCBhdHRyaWJ1dCBibGV2IGlra2UgIgorImZ1bmRldC4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIGZpbGUgKEBpICVpKSBoYXMgZXh0ZW50c1xuIgorIm9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiU3BlY2llbCAoZW5oZWQvc29ra2VsL2ZpZm8pIGZpbCAoaWtudWRlICVpKSBoYXIgZXh0ZW50c1xuIgorImVsbGVyIGluZGxlanJldC1kYXRhIGZsYWcgYW5naXZldC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICIiCisiZGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIGFsbG9rZXJpbmcgYWYgZXh0ZW50LXN0cnVrdHVyIGZvciAiCisicmVnaW9uYWxsb2tlcmluZy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiIgorImRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBhbGxva2VyaW5nIGFmIGh1a29tbWVsc2UgZm9yIGtyeXB0ZXJldCBtYXBwZWxpc3RlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjkKK21zZ2lkICJAaSAlaSBAeCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiaWtudWRlICVpIGhhciBldCDDuGRlbGFndCBleHRlbnQtdGVrc3Rob3ZlZC4gICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorbXNnaWQgIlx0JVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJLdW5uZSBpa2tlIGtsb25lIGZpbDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJHZW5uZW1sw7hiIDFFOiBPcHRpbWVyZXIgZXh0ZW50LXRyw6ZlclxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBAeCB0cmVlICVwICglaSk6ICVtXG4iCittc2dzdHIgIkt1bm5lIGlra2Ugb3B0aW1lcmUgZXh0ZW50LXRyw6YgJXAgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogT3B0aW1pemluZyBleHRlbnQgdHJlZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjU4Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICJPcHRpbWVyZXIgZXh0ZW50LXRyw6ZlcjogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiSW50ZXJuIGZlamw6IG1ha3MuIGV4dGVudC10csOmZHliZGUgZXIgZm9yIHN0b3IgKCViOyBmb3J2ZW50ZWRlPSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiaWtudWRlICVpIGV4dGVudC10csOmIChww6Ugbml2ZWF1ICViKSBrdW5uZSB2w6ZyZSBrb3J0ZXJlLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgImlrbnVkZSAlaSBleHRlbnQtdHLDpiAocMOlIG5pdmVhdSAlYikga3VubmUgdsOmcmUgc21hbGxlcmUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTAKK21zZ2lkICJQYXNzIDI6IENoZWNraW5nIEBkIHN0cnVjdHVyZVxuIgorbXNnc3RyICJHZW5uZW1sw7hiIDI6IEtvbnRyb2xsZXJlciBtYXBwZXN0cnVrdHVyXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgInVneWxkaWcgaWtudWRlbnVtbWVyIGZvciDCuy7CqyBpIG1hcHBlaWtudWRlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAicG9zdGVuIMK7JURuwqsgaSAlcCAoJWkpIGhhciB1Z3lsZGlnIGlrbnVkZSAjOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBoYXIgc2xldHRldC91YnJ1Z3QgaWtudWRlICVEaS4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvICcuJyAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTAKK21zZ2lkICJARSBATCB0byAnLicgICIKK21zZ3N0ciAicG9zdGVuIMK7JURuwqsgaSAlcCAoJWkpIGVyIGVuIGhlbnZpc25pbmcgdGlsIMK7LsKrIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHBvaW50cyB0byBpbm9kZSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTUKK21zZ2lkICJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIKK21zZ3N0ciAiIgorInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBwZWdlciBww6UgaWtudWRlICglRGkpIHBsYWNlcmV0IGkgZW4gdWd5bGRpZyBibG9rLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJwb3N0ZW4gwrslRG7CqyBpICVwICglaSkgZXIgZW4gaGVudmlzbmluZyB0aWwgbWFwcGVuICVQICglRGkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1Cittc2dpZCAiQEUgQEwgdG8gdGhlIEByLlxuIgorbXNnc3RyICJwb3N0ZW4gwrslRG7CqyBpICVwICglaSkgZXIgZW4gaGVudmlzbmluZyB0aWwgcm9vdC1pa251ZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzMAorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBoYXIgaWxsZWdhbGUgdGVnbiBpIHNpdCBuYXZuLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiTWFuZ2xlciDCuy7CqyBpIG1hcHBlLWlrbnVkZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiTWFuZ2xlciDCuy4uwqsgaSBtYXBwZS1pa251ZGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpcnN0IGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApIHNob3VsZCBiZSAnLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQ1Cittc2dpZCAiRmlyc3QgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgKCVwKSBAcyAnLidcbiIKK21zZ3N0ciAiRsO4cnN0ZSBwb3N0IMK7JURuwqsgKGlrbnVkZT0lRGkpIGkgbWFwcGUtaWtudWRlICVpICglcCkgc2thbCB2w6ZyZSDCuy7Cq1xuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIkFuZGVuIHBvc3QgwrslRG7CqyAoaWtudWRlPSVEaSkgaSBtYXBwZS1pa251ZGUgJWkgc2thbCB2w6ZyZSDCuy7Cq1xuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIGZvciBpa251ZGUgJWkgKCVRKSBlciAlSUYsIHNrYWwgdsOmcmUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIGZvciBpa251ZGUgJWkgKCVRKSBlciAlSWYsIHNrYWwgdsOmcmUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1Cittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9kaXJfYWNsIGZvciBpa251ZGUgJWkgKCVRKSBlciAlSWQsIHNrYWwgdsOmcmUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnJhZyBmb3IgaWtudWRlICVpICglUSkgZXIgJU4sIHNrYWwgdsOmcmUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBmb3IgaWtudWRlICVpICglUSkgZXIgJU4sIHNrYWwgdsOmcmUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorbXNnaWQgIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iCittc2dzdHIgImlrbnVkZSAlaSAoJVEpIGhhciB1Z3lsZGlnIHRpbHN0YW5kICglSW0pLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBjb3JydXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzg1Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGNvcnJ1cHRlZFxuIgorbXNnc3RyICJtYXBwZS1pa251ZGUgJWksICVCLCBmb3Jza3lkbmluZyAlTjogbWFwcGUgw7hkZWxhZ3RcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAibWFwcGUtaWtudWRlICVpLCAlQiwgZm9yc2t5ZG5pbmcgJU46IGZpbG5hdm4gZXIgZm9yIGxhbmd0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAibWFwcGUtaWtudWRlICVpIGhhciBlbiB1YWxsb2tlcmV0ICVCLiIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiwrsuwqstbWFwcGVwb3N0IGkgbWFwcGUtaWtudWRlICVpIGVyIGlra2UgTlVMLWFmc2x1dHRldFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIsK7Li7Cqy1tYXBwZXBvc3QgaSBtYXBwZWlrbnVkZSAlaSBlciBpa2tlIE5VbC1hZnNsdXR0ZXRcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJpa251ZGUgJWkgKCVRKSBlciBlbiBpbGxlZ2FsIHRlZ25lbmhlZC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGJsb2NrIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDE1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBAYiBAdi5cbiIKK21zZ3N0ciAiaWtudWRlICVpICglUSkgZXIgZW4gaWxsZWdhbCBibG9rZW5oZWQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAicG9zdGVuIMK7JURuwqsgaSAlcCAoJWkpIGVyIGVuIGR1cGxpa2VyZXQgwrsuwqstcG9zdC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDI1Cittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuLicgQGUuXG4iCittc2dzdHIgInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBlciBlbiBkdXBsaWVyZXQgwrsuLsKrLXBvc3RcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkludGVybiBmZWpsOiBrdW5uZSBpa2tlIGZpbmRlIGRpcl9pbmZvIGZvciAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1Cittc2dpZCAiQEUgaGFzIHJlY19sZW4gb2YgJURyLCBAcyAlTi5cbiIKK21zZ3N0ciAicG9zdGVuIMK7JURuwqsgaSAlcCAoJWkpIGhhciByZWNfbGVuIGZvciAlRHIsIHNrYWwgdsOmcmUgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgImRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBhbGxva2VyaW5nIGFmIGljb3VudC1zdHJ1a3R1cjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIGdlbm5lbWzDuGIgb3ZlciBtYXBwZWJsb2trZTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgbMOmc25pbmcgYWYgbWFwcGVibG9rICViIChpa251ZGUgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBza3Jpdm5pbmcgYWYgbWFwcGVibG9rICViIChpa251ZGUgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIiIKKyJEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgYWxsb2tlcmluZyBhZiBueSBtYXBwZWJsb2sgZm9yIGlrbnVkZSAlaSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWFsbG9jYXRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBkZWFsbG9rZXJpbmcgYWYgaWtudWRlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgIm1hcHBlcG9zdCBmb3IgwrsuwqsgaSAlcCAoJWkpIGVyIHN0b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgImlrbnVkZSAlaSAoJVEpIGVyIGVuIGlsbGVnYWwgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgImlrbnVkZSAlaSAoJVEpIGVyIGVuIGlsbGVnYWwgc29ra2VsLlxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHRvICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAiQW5naXZlciBmaWx0eXBlIGZvciBwb3N0ZW4gwrslRG7CqyBpICVwICglaSkgdGlsICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiIgorInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBoYXIgZW4gZm9ya2VydCBmaWx0eXBlICh2YXIgJUR0LCBza2FsIHbDpnJlICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZmlsZXR5cGUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTUKK21zZ2lkICJARSBoYXMgZmlsZXR5cGUgc2V0LlxuIgorbXNnc3RyICJwb3N0ZW4gwrslRG7CqyBpICVwICglaSkgaGFyIGZpbHR5cGVzw6Z0LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwMAorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgInBvc3RlbiDCuyVEbsKrIGkgJXAgKCVpKSBoYXIgZXQgbnVsbMOmbmdkZSBuYXZuLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIlN5bWJvbHNrIGhlbnZpc25pbmcgJVEgKGlrbnVkZSAjJWkpIGVyIHVneWxkaWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDAKK21zZ2lkICJAbiBAaCAlZCAoJXEpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGlzIEBuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgInByb2JsZW0gaSBIVFJFRS1tYXBwZW5zIGlrbnVkZSAlZDogJUIgaGFyIHVneWxkaWd0IGFudGFsICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgInByb2JsZW0gaSBIVFJFRS1hbWFwcGVucyBpa251ZGUgJWQ6ICVCIGhhciBlbiB1b3JkbmV0IGhhc2h0YWJlbFxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgZGVwdGggKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc5Cittc2dpZCAiRHVwbGljYXRlIEBFIGZvdW5kLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGluIGdyb3VwICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDMKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBpbiBAZyAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGZvdW5kIGluIGdyb3VwICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDgKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBmb3VuZCBpbiBAZyAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAibWFwcGUtaWtudWRlICVpLCAlQiwgZm9yc2t5ZG5pbmcgJU46IG1hcHBlIGhhciBpbmdlbiBrb250cm9sc3VtLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICJSZXR0ZWxzZSBhZiBzdMO4cnJlbHNlbiBmb3IgaW5kbGVqcmV0IG1hcHBlLWlrbnVkZSAlaSBtaXNseWtrZWRlcy5cbiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICJLcnlwdGVyZXQgcG9zdCDCuyVEbsKrIGkgJXAgKCVpKSBlciBmb3Iga29ydC5cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorbXNnaWQgIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iCittc2dzdHIgIkdlbm5lbWzDuGIgMzogS29udHJvbGxlcmVyIG1hcHBlZm9yYmluZGVsc2VcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJSb290LWlrbnVkZSBlciBpa2tlIGFsbG9rZXJldC4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiSW5nZW4gcGxhZHMgaSBtYXBwZW4gbG9zdCtmb3VuZC4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzUKK21zZ2lkICIvQGwgbm90IGZvdW5kLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIkt1bm5lIGlra2UgdWR2aWRlIC9sb3N0K2ZvdW5kOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlY29ubmVjdCAlaTogJW1cbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBnZW5mb3JiaW5kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL2xvc3QrZm91bmQ6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvQGw6ICVtXG4iCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqIHVuZGVyIGZvcnPDuGdldCBww6UgYXQgZmluZGUgL2xvc3QrZm91bmQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbnlfYmxvazogJW0gdW5kZXIgZm9yc8O4ZyBww6UgYXQgb3ByZXR0ZSBtYXBwZW4gL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHVuZGVyIG9wcmV0dGVsc2UgYWYgbnkgbWFwcGVibG9rXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiIgorImV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHVuZGVyIHNrcml2bmluZyBhZiBtYXBwZWJsb2trZW4gZm9yIC9sb3N0K2ZvdW5kXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCBvbiBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iCittc2dzdHIgIkZlamwgdW5kZXIganVzdGVyaW5nIGFmIGlrbnVkZS1hbnRhbCBww6UgaWtudWRlICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgcm9vdCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHJvb3QgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIG9wcmV0dGUgYWYgcm9kbWFwcGUgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiRmVqbCB1bmRlciBvcHJldHRlbHNlIGFmIC9AbCBAZCAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeTsgYWJvcnRpbmcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1NQorbXNnaWQgIkByIGlzIG5vdCBhIEBkOyBhYm9ydGluZy5cbiIKK21zZ3N0ciAiQHIgZXIgaWtrZSBlbiBAZDsgYWZicnlkZXIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIkthbiBpa2tlIGZvcnRzw6Z0dGUgdWRlbiBlbiBAci5cbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgbm90IGEgZGlyZWN0b3J5IChpbm89JWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICIvQGwgaXMgbm90IGEgQGQgKGlubz0laSlcbiIKK21zZ3N0ciAiL0BsIGVyIGlra2UgZW4gQGQgKGlubz0laSlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3NQorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGVyIGtyeXB0ZXJldFxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIkdlbm5lbWzDuGIgM0E6IE9wdGltZXJlciBtYXBwZXJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICJLdW5uZSBpa2tlIG9wcmV0dGUgZGlyc190b19oYXNoLWl0ZXJhdG9yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIkt1bm5lIGlra2Ugb3B0aW1lcmUgbWFwcGUgJXEgKCVkKTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJPcHRpbWVyZXIgbWFwcGVyOiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICJHZW5uZW1sw7hiIDQ6IEtvbnRyb2xsZXJlciByZWZlcmVuY2VhbnRhbFxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQGkgJWlcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4Cittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGIgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IERpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4Cittc2dpZCAiRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQUk9HUkFNTUlORyBFUlJPUjogZmlsZXN5c3RlbSAoIyVOKSBiaXRtYXAgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgYml0bWFwIAorIy4gQC1leHBhbmRlZDogZW5kcG9pbnRzICglaSwgJWopXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorbXNnaWQgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgQEIgIgorImVuZHBvaW50cyAoJWksICVqKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0NAorbXNnaWQgIkludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKCVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiRmVqbCB1bmRlciBrb3BpZXJpbmcgYWYgZXJzdGF0bmluZ3Npa251ZGUtYml0bWFwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iCittc2dzdHIgIkZlamwgdW5kZXIga29waWVyaW5nIGFmIGVyc3RhdG5pbmdzYmxvay1iaXRtYXA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgImdydXBwZSAlZyBibG9ra2UgaSBicnVnIG1lbiBncnVwcGVyIGVyIG1hcmtlcmV0IEJMT0NLX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICJncnVwcGUgJWcgaWtudWRlciBpIGJydWcgbWVuIGdydXBwZSBlciBtYXJrZXJldCBJTk9ERV9VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgIkdlbnNrYWIgam91cm5hbCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIk9wZGF0ZXIga3ZvdGFpbmZvIGZvciBrdm90YXR5cGUgJU4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRmVqbCB2ZWQgYW5naXZlbHNlIGFmIGJsb2tncnVwcGVucyBrb250cm9sc3Vtc2luZm86ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIkZlamwgdW5kZXIgc2tyaXZuaW5nIGFmIGZpbHN5c3RlbWluZm86ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJGZWpsIHVuZGVyIHNrcml2bmluZyBhZiBrdm90YWluZm8gZm9yIGt2b3RhdHlwZSAlTjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiVWjDpW5kdGVyZXQgZmVqbGtvZGUgKG94JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiSUdOT1JFUkVUIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgImkgbW92ZV9xdW90YS1pbm9kZSIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIkFudmVuZHQgaHVrb21tc2Vsc2U6ICVkLCBmb3Jsw7hiZXQgdGlkOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJzaXplIG9mIGlub2RlPSVkXG4iCittc2dzdHIgInN0w7hycmVsc2UgcMOlIGlrbnVkZT0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJ1bmRlciBzdGFydCBhZiBpa251ZGVza2FubmluZyIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTMwCittc2dpZCAid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAidW5kZXIgdWRmw7hyc2VsIGFmIGlrbnVkZXNrYW5uaW5nIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgInVuZGVyIGthbGQgYWYgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlrbnVkZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJ1bmRlciBrYWxkIGFmIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpa251ZGUgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIlJ5ZGRlciIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjg4Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBpa251ZGUgYnJ1Z3QgKCUyLjJmJSUsIHVkIGFmICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBpa251ZGVyIGJydWd0ICglMi4yZiUlLCB1ZCBhZiAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiAgICAgICAgICAgICAjIGFmIGlrbnVkZXIgbWVkIGluZC9kaW5kL3RpbmQtYmxva2tlOiAldS8ldS8ldVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiAgICAgICAgICAgICBVZHZpZCBkeWJkZWhpc3RvZ3JhbTogIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiUxMmxsdSBibG9rIGJydWd0ICglMi4yZiUlLCB1ZCBhZiAlbGx1KVxuIgorbXNnc3RyWzFdICIlMTJsbHUgYmxva2tlIGJydWd0ICglMi4yZiUlLCB1ZCBhZiAlbGx1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSB1Z3lsZGlnIGJsb2tcbiIKK21zZ3N0clsxXSAiJTEydSB1Z3lsZGlnZSBibG9ra2VcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsYXJnZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGFyZ2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBzdG9yIGZpbFxuIgorbXNnc3RyWzFdICIlMTJ1IHN0b3JlIGZpbGVyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVzXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IG5vcm1hbCBmaWxcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgbm9ybWFsZSBmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUgbWFwcGVcbiIKK21zZ3N0clsxXSAiJTEydSBtYXBwZXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgdGVnbmVuaGVkc2ZpbFxuIgorbXNnc3RyWzFdICIlMTJ1IHRlZ25lbmhlZHNmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgYmxva2VuaGVkc2ZpbFxuIgorbXNnc3RyWzFdICIlMTJ1IGJsb2tlbmhlZHNmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpZm9cbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWZvc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpZm9cbiIKK21zZ3N0clsxXSAiJTEydSBmaWZvJ2VyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGlua1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxpbmtzXG4iCittc2dzdHJbMF0gIiUxMnUgaGVudmlzbmluZ1xuIgorbXNnc3RyWzFdICIlMTJ1IGhlbnZpc25pbmdlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHN5bWJvbGljIGxpbmsiCittc2dpZF9wbHVyYWwgIiUxMnUgc3ltYm9saWMgbGlua3MiCittc2dzdHJbMF0gIiUxMnUgc3ltYm9sc2sgaGVudmlzbmluZyIKK21zZ3N0clsxXSAiJTEydSBzeW1ib2xza2UgaGVudmlzbmluZ2VyIgorCisjOiBlMmZzY2svdW5peC5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICIgKCV1IGZhc3Qgc3ltYm9saWMgbGluaylcbiIKK21zZ2lkX3BsdXJhbCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmtzKVxuIgorbXNnc3RyWzBdICIgKCV1IGh1cnRpZyBzeW1ib2xzayBoZW52aXNuaW5nKVxuIgorbXNnc3RyWzFdICIgKCV1IGh1cnRpZ2Ugc3ltYm9sc2tlIGhlbnZpc25pbmdlcilcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUgc29ra2VsXG4iCittc2dzdHJbMV0gIiUxMnUgc29rbGVyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgZmlsXG4iCittc2dzdHJbMV0gIiUxMnUgZmlsZXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgInVuZGVyIGJlc3RlbW1lbHNlIGFmIGh2b3J2aWR0ICVzIGVyIG1vbnRlcmV0LiIKKworIzogZTJmc2NrL3VuaXguYzoyNTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIkFkdmFyc2VsISAlcyBlciBtb250ZXJldC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiQWR2YXJzZWwhICVzIGVyIGkgYnJ1Zy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiJXMgZXIgbW9udGVyZXQuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgZXIgaSBicnVnLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiS2FuIGlra2UgZm9ydHPDpnR0ZSwgYWZicnlkZXIuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjcxCittc2dpZCAiIgorIlxuIgorIlxuIgorIldBUk5JTkchISEgIFRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuICAgSWYgeW91IGNvbnRpbnVlIHlvdSAqKipXSUxMKioqXG4iCisiY2F1c2UgKioqU0VWRVJFKioqIGZpbGVzeXN0ZW0gZGFtYWdlLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICLDmG5za2VyIGR1IHZpcmtlbGlnIGF0IGZvcnRzw6Z0dGUiCisKKyM6IGUyZnNjay91bml4LmM6Mjc4Cittc2dpZCAiY2hlY2sgYWJvcnRlZC5cbiIKK21zZ3N0ciAia29udHJvbCBhZmJydWR0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgaW5kZWhvbGRlciBldCBmaWxzeXRlbSBtZWQgZmVqbCIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIHZhciBpa2tlIG9yZGVubGlnIGFmbW9udGVyZXQiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgZXIgYmxldmV0IG1vbnRlcmV0ICV1IGdhbmdlIHVkZW4gYXQgYmxpdmUga29udHJvbGxlcmV0IgorCisjOiBlMmZzY2svdW5peC5jOjM4NgorbXNnaWQgIiBoYXMgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdGltZSBpbiB0aGUgZnV0dXJlIgorbXNnc3RyICIgaGFyIGRhdG9lbiBmb3Igc2lkc3RlIGtvbnRyb2wgYWYgZmlsc3lzdGVtZXQgdWRlIGkgZnJlbXRpZGVuIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBlciBpa2tlIGJsZXZldCBrb250cm9sbGVyZXQgaSAldSBkYWdlIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIHR2dW5nZW4ga29udHJvbC5cbiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiJXM6IHJlbiwgJXUvJXUgZmlsZXIsICVsbHUvJWxsdSBibG9ra2UiCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAoa29udHJvbCB1ZHNrdWR0OyBww6UgYmF0dGVyaSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChrb250cm9sIGVmdGVyIG7DpnN0ZSBtb250ZXJpbmcpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1OQorIywgYy1mb3JtYXQKK21zZ2lkICIgKGNoZWNrIGluICVsZCBtb3VudHMpIgorbXNnc3RyICIgKGtvbnRyb2xsZXIgb20gJWxkIG1vbnRlcmluZ2VyKSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAiRkVKTDogS3VubmUgaWtrZSDDpWJuZSAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAiVWd5bGRpZyBFQS12ZXJzaW9uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjY5MgorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJVa2VuZHQgdWR2aWRldCB0aWx2YWxnOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjc1MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIGUyZnNjayBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIlN5bnRha3NmZWpsIGkgZTJmc2NrLWtvbmZpZ3VyYXRpb25zZmlsZW4gKCVzLCBsaW5qZSAjJWQpXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIHZhbGlkZXJpbmcgYWYgZmlsYmVza3JpdmVyICVkOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIlVneWxkaWcgZmlsYmVza3JpdmVyIGZvciBmdWxkZsO4cmVsc2VzaW5mb3JtYXRpb24iCisKKyM6IGUyZnNjay91bml4LmM6ODQ0Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICJLdW4gZW4gYWYgdGlsdmFsZ2VuZSAtcC8tYSwgLW4gZWxsZXIgLXkgbcOlIGFuZ2l2ZXMuIgorCisjOiBlMmZzY2svdW5peC5jOjg2NQorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgLXQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKK21zZ3N0ciAiVGlsdmFsZ2V0IC10IGVyIGlra2UgdW5kZXJzdMO4dHRldCBww6UgZGVubmUgdmVyc2lvbiBhZiBlMmZzY2suXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICJLYW4gaWtrZSBsw7hzZSDCuyVzwqsiCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJUaWx2YWxnZW5lIC1uIG9nIC1EIGVyIGlra2Uga29tcGF0aWJsZS4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJUaWx2YWxnZW5lIC1uIG9nIC1EIGVyIGlra2Uga29tcGF0aWJsZS4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJUaWx2YWxnZW5lIC1uIG9nIC1sLy1MIGVyIGlra2Uga29tcGF0aWJsZS4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIlRpbHZhbGdlbmUgLUQgb2cgLUUgZml4ZXNfb25seSBlciBpa2tlIGtvbXBhdGlibGUuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJUaWx2YWxnZW5lIC1FIGJtYXAyZXh0ZW50IG9nIGZpeGVzX29ubHkgZXIgaWtrZSBrb21wYXRpYmxlLiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICJUaWx2YWxnZW5lIC1jIG9nIC1sLy1MIG3DpSBpa2tlIGJydWdlcyBww6Ugc2FtbWUgdGlkLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIMK7JXPCqyBlciBpa2tlIGV0IGhlbHRhbFxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVZ3lsZGlnIGlra2UtbnVtZXJpc2sgYXJndW1lbnQgZm9yIC0lYyAowrslc8KrKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyJNTVAtaW50ZXJ2YWwgZXIgJXUgc2VrdW5kZXIgb2cgc2FtbGV0IHZlbnRldGlkIGVyICV1IHNla3VuZGVyLiBWZW50ICIKKyJ2ZW5saWdzdCAuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAidW5kZXIga29udHJvbCBhZiBNTVAtYmxvayIKKworIzogZTJmc2NrL3VuaXguYzoxMjE3IG1pc2MvdHVuZTJmcy5jOjI3OTIKK21zZ2lkICIiCisiSWYgeW91IGFyZSBzdXJlIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKyIndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2RldmljZX0nXG4iCittc2dzdHIgIiIKKyJIdmlzIGR1IGVyIHNpa2tlciBww6UsIGF0IGZpbHN5c3RlbWV0IGlra2UgZXIgaSBicnVnIHDDpSBub2dlbiBrbnVkZSwgc8OlIGvDuHI6XG4iCisiwrt0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfcKrXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJ1bmRlciBsw6ZzbmluZyBhZiBNTVAtYmxvayIKKworIzogZTJmc2NrL3VuaXguYzoxMjUyIGUyZnNjay91bml4LmM6MTMwNCBtaXNjL2UydW5kby5jOjIzMCBtaXNjL2UydW5kby5jOjI3NQorIzogbWlzYy9ta2UyZnMuYzoyNTQxIG1pc2MvbWtlMmZzLmM6MjU5MiBtaXNjL3R1bmUyZnMuYzoyNjEwCisjOiBtaXNjL3R1bmUyZnMuYzoyNjU1IHJlc2l6ZS9tYWluLmM6MTg3IHJlc2l6ZS9tYWluLmM6MjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgdXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorbXNnc3RyICIiCisiT3ZlcnNrcml2bmluZyBhZiBla3Npc3RlcmVuZGUgZmlsc3lzdGVtOyBkZXR0ZSBrYW4gZm9ydHJ5ZGVzIHZpYSAiCisia29tbWFuZG9lbjpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTI5MyBtaXNjL2UydW5kby5jOjI2NCBtaXNjL21rZTJmcy5jOjI1ODEgbWlzYy90dW5lMmZzLmM6MjY0NAorIzogcmVzaXplL21haW4uYzoyMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgc2xldHRlICVzIgorCisjOiBlMmZzY2svdW5peC5jOjEzMTkgbWlzYy9ta2UyZnMuYzoyNjA3IHJlc2l6ZS9tYWluLmM6MjQyCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHNldHVwIHVuZG8gZmlsZVxuIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnIHDDpSBhdCBvcHPDpnR0ZSB1bmRvLWZpbGVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICJGZWpsOiBleHQyZnMtYmlibGlvdGVrc3ZlcnNpb25lbiBlciBmb3LDpmxkZXQhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IGludGlhbGlzZXJlIHByb2dyYW0iCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICJcdEJydWdlciAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAia3LDpnZlciB0ZXJtaW5hbCBmb3IgaW50ZXJha3RpdmUgcmVwYXJhdGlvbmVyIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyB0ZXN0ZXIgc2lra2VyaGVkc2tvcGlibG9ra2UgLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIlN1cGVyYmxvayB1Z3lsZGlnLCIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkdydXBwZWJlc2tyaXZlcmUgc2VyIHVneWxkaWdlIHVkIC4uLiIKKworIzogZTJmc2NrL3VuaXguYzoxNDc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSB1c2luZyB0aGUgYmFja3VwIGJsb2NrcyIKK21zZ3N0ciAiJXM6ICVzIHVuZGVyIGJydWcgYWYgc2lra2VyaGVkc2tvcGlibG9ra2VuZSIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6IGfDpXIgdGlsYmFnZSB0aWwgb3JpZ2luYWwgc3VwZXJibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJGaWxzeXN0ZW1yZXZpc2lvbmVuIGVyIHRpbHN5bmVsYWRlbmRlIGZvciBow7hqIGZvciBkZW5uZSB2ZXJzaW9uIGFmIGUyZnNjay5cbiIKKyIoRWxsZXIgZmlsc3lzdGVtZXRzIHN1cGVyYmxvayBlciDDuGRlbGFndClcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiS3VubmUgZGV0dGUgdsOmcmUgZW4gcGFydGl0aW9uIG1lZCBudWxsw6ZuZ2RlP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJEdSBza2FsIGhhdmUgJXMtYWRnYW5nIHRpbCBmaWxzeXN0ZW1ldCBlbGxlciB2w6ZyZSByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiTXVsaWd2aXMgaWtrZWVrc2lzdGVyZW5kZSBlbGxlciBzd2FwZW5oZWQ/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICJGaWxzeXN0ZW0gbW9udGVyZXQgZWxsZXIgw6VibmVzIGVrc2tsdXNpdnQgYWYgZXQgYW5kZXQgcHJvZ3JhbT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiTXVsaWd2aXMgaWtrZWVrc2lzdGVyZW5kZSBlbmhlZD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJEaXNrIHNrcml2ZWJlc2t5dHRldDsgYnJ1ZyB0aWx2YWxnZXQgLW4gZm9yIGF0IHVkZsO4cmUgZW5cbiIKKyJza3JpdmViZXNreXR0ZXQga29udHJvbCBhZiBlbmhlZGVuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgIkhlbnQgZW4gbnllcmUgdmVyc2lvbiBhZiBlMmZzY2shIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgInVuZGVyIGtvbnRyb2wgYWYgam91cm5hbCBmb3IgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGggZmlsZSBzeXN0ZW0gY2hlY2siCittc2dzdHIgIkthbiBpa2tlIGZvcnRzw6Z0dGUgdWRlbiBrb250cm9sIGFmIGZpbHN5c3RlbSIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIkFkdmFyc2VsOiBVZGVsYWRlciBqb3VybmFsZ2VuZGFubmVsc2UgZGEgZGVyIGt1biB1ZGbDuHJlcyBlbiBza3JpdmViZXNreXR0ZXQgIgorImtvbnRyb2xcbiIKKyJhZiBmaWxzeXN0ZW1ldC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJrYW4gaWtrZSBhbmdpdmUgc3VwZXJibG9rZmxhZyBww6UgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gJXNcbiIKK21zZ3N0ciAiS29udHJvbHN1bWZlamwgZm9yIGpvdXJuYWwgZnVuZGV0IGkgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkpvdXJuYWwgw7hkZWxhZ3QgaSAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJ1bmRlciBnZW5kYW5uZWxzZSBhZiBqb3VybmFsIGZvciAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIKK21zZ3N0ciAiJXMgaGFyIGZ1bmt0aW9uZXIgZGVyIGlra2UgZXIgdW5kZXJzdMO4dHRldDoiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyB1bmRlciBsw6ZzbmluZyBhZiB1Z3lsZGlnIGJsb2staWtudWRlXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiRGV0dGUgdHlkZXIgaWtrZSBnb2R0LCBtZW4gdmkgZm9yc8O4Z2VyIGF0IGZvcnRzw6Z0dGUgLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICglZCBibG9ja3MpOiAiCittc2dzdHIgIk9wcmV0dGVyIGpvdXJuYWwgKCVkIGJsb2trZSk6ICIKKworIzogZTJmc2NrL3VuaXguYzoxODI4Cittc2dpZCAiIERvbmUuXG4iCittc2dzdHIgIiBGw6ZyZGlnLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKK21zZ2lkICIiCisiXG4iCisiKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXIgYmxldmV0IGdlbnNrYWJ0ICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJhZmJydWR0IgorCisjOiBlMmZzY2svdW5peC5jOjE4MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGUyZnNjayBjYW5jZWxlZC5cbiIKK21zZ3N0ciAiJXM6IGUyZnNjayBhZmJydWR0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAiR2Vuc3RhcnRlciBlMmZzY2sgZnJhIGJlZ3luZGVsc2VuIC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAidW5kZXIgbnVsc3RpbGxpbmcgYWYga29udGVrc3QiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogRklMU1lTVEVNRVQgQkxFViDDhk5EUkVUICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgYy1mb3JtYXQKK21zZ2lkICIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIgorbXNnc3RyICIlczogKioqKiogR0VOU1RBUlQgU1lTVEVNICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkyNSBlMmZzY2svdXRpbC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogQURWQVJTRUw6IEZpbHN5c3RlbWV0IGhhciBzdGFkaWcgZmVqbCAqKioqKioqKioqXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk0IG1pc2MvdXRpbC5jOjkzCittc2dpZCAieVkiCittc2dzdHIgImpKIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICJuTiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTYKK21zZ2lkICJhQSIKK21zZ3N0ciAiYUEiCisKKyM6IGUyZnNjay91dGlsLmM6MTk3Cittc2dpZCAiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIKK21zZ3N0ciAiICjCu2HCqyBha3RpdmVyZXIgwrt5ZXPCqyAoamEpIGZvciBhbGxlKSAiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8aj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKGovbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJhZmJydWR0IVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAiamEgdGlsIGFsbGVcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAiamFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJuZWpcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyBub1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IG5lalxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IGphXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJqYSIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibmVqIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgImUyZnNja19yZWFkX2JpdG1hcHM6IHVsb3ZsaWdlIGJpdG1hcC1ibG9ra2UgZm9yICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgImzDpnNlciBpa251ZGUgb2cgYmxvay1iaXRtYXAiCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IGzDpnNlIGJpdG1hcCBpZ2VuIGZvciAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMzEKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICJza3JpdmVyIGJsb2stIG9nIGlrbnVkZWJpdG1hcCIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAidW5kZXIgZ2Vuc2tyaXZuaW5nIGFmIGJsb2stIG9nIGlrbnVkZWJpdG1hcCBmb3IgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyIlczogVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOyBSVU4gZnNjayBNQU5VQUxMWS5cbiIKKyJcdChpLmUuLCB3aXRob3V0IC1hIG9yIC1wIG9wdGlvbnMpXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIlczogVVZFTlRFVCBVT1ZFUkVOU1NURU1NRUxTRTsgS8OYUiBmc2NrIE1BTlVFTFQuXG4iCisiXHQoZHZzLiwgdWRlbiB0aWx2YWxnZW5lIC1hIGVsbGVyIC1wKVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIkh1a29tbWVsc2UgYnJ1Z3Q6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIkh1a29tbWVsc2UgYnJ1Z3Q6ICVsdSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICJ0aWQ6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAiZm9ybMO4YmV0IHRpZDogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIGlrbnVkZSAlbHUgaSAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo1MDggZTJmc2NrL3V0aWwuYzo1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgInVuZGVyIHNrcml2bmluZyBhZiBpa251ZGUgJWx1IGkgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NzY1Cittc2dpZCAiIgorIlVORVhQRUNURUQgSU5DT05TSVNURU5DWTogdGhlIGZpbGVzeXN0ZW0gaXMgYmVpbmcgbW9kaWZpZWQgd2hpbGUgZnNjayBpcyAiCisicnVubmluZy5cbiIKK21zZ3N0ciAiVVZFTlRFVCBVT1ZFUkVOU1NURU1NRUxTRTogZmlsc3lzdGVtZXQgw6ZuZHJlcyBtZW5zIGZzY2sga8O4cmVyLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiZsOmcmRpZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWIgYmxvY2tfc2l6ZV0gWy1pIGlucHV0X2ZpbGVdIFstbyBvdXRwdXRfZmlsZV0gWy1zdnduZl1cbiIKKyIgICAgICAgWy1jIGJsb2Nrc19hdF9vbmNlXSBbLWQgZGVsYXlfZmFjdG9yX2JldHdlZW5fcmVhZHNdIFstZSAiCisibWF4X2JhZF9ibG9ja3NdXG4iCisiICAgICAgIFstcCBudW1fcGFzc2VzXSBbLXQgdGVzdF9wYXR0ZXJuIFstdCB0ZXN0X3BhdHRlcm4gWy4uLl1dXVxuIgorIiAgICAgICBkZXZpY2UgW2xhc3RfYmxvY2sgW2ZpcnN0X2Jsb2NrXV1cbiIKK21zZ3N0ciAiIgorIkJydWc6ICVzIFstYiBibG9rc3TDuHJyZWxzZV0gWy1pIGluZGRhdGFmaWxdIFstbyB1ZGRhdGFmaWxdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ra2VfcMOlX2VuX2dhbmddIFstZCBmb3JzaW5rZWxzZXNmYWt0b3JfbWVsbGVtX2zDpnNuaW5nZXJdIFstZSAiCisibWFrc191Z3lsZGlnZV9ibG9ra2VdXG4iCisiICAgICAgIFstcCBudW1fcGFzc2VzXSBbLXQgdGVzdF9wYXR0ZXJuIFstdCB0ZXN0X3BhdHRlcm4gWy4uLl1dXVxuIgorIiAgICAgICBlbmhlZCBbc2lkc3RlX2Jsb2sgW2bDuHJzdGVfYmxva11dXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyIlczogVGlsdmFsZ2VuZSAtbiBvZyAtdyB1ZGVsdWtrZXIgaGluYW5kZW4uXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2LjJmJSUgZG9uZSwgJXMgZWxhcHNlZC4gKCVkLyVkLyVkIGVycm9ycykiCittc2dzdHIgIiU2LjJmJSUgZsOmcmRpZywgJXMgZm9ybMO4YmV0LiAoJWQvJWQvJWQgZmVqbCkiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzI4Cittc2dpZCAiVGVzdGluZyB3aXRoIHJhbmRvbSBwYXR0ZXJuOiAiCittc2dzdHIgIlRlc3QgbWVkIHZpbGvDpXJsaWd0IG3DuG5zdGVyOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIlRlc3RlciBtZWQgbcO4bnN0ZXIgMHgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgInVuZGVyIHPDuGduaW5nIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIk3DpnJrZWxpZyB2w6ZyZGkgKCVsZCkgaSBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAidW5kZXIgZXh0MmZzX3N5bmNfZGV2aWNlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgInVuZGVyIGJlZ3luZGVsc2VuIGFmIGdlbm5lbWzDuGIgYWYgbGlzdGVuIG1lZCB1Z3lsZGlnZSBibG9ra2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJ1bmRlciBhbGxva2VyaW5nIGFmIG1lbGxlbWxhZ3JlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxNQorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBibG9ja3MgJWx1IHRvICVsdVxuIgorbXNnc3RyICJLb250cm9sbGVyIGJsb2trZSAlbHUgdGlsICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyMAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtb25seSBtb2RlXG4iCittc2dzdHIgIktvbnRyb2xsZXJlciBmb3IgdWd5bGRpZ2UgYmxva2tlIGkgc2tyaXZlYmVza3l0dGV0IHRpbHN0YW5kXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJLb250cm9sbGVyZXIgZm9yIHVneWxkaWdlIGJsb2trZSAoc2tyaXZlYmVza3l0dGV0IHRlc3QpOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTM2IG1pc2MvYmFkYmxvY2tzLmM6NjQzIG1pc2MvYmFkYmxvY2tzLmM6Njg1CisjOiBtaXNjL2JhZGJsb2Nrcy5jOjgzMgorbXNnaWQgIlRvbyBtYW55IGJhZCBibG9ja3MsIGFib3J0aW5nIHRlc3RcbiIKK21zZ3N0ciAiRm9yIG1hbmdlIHVneWxkaWdlIGJsb2trZSwgYWZicnlkZXIgdGVzdFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJLb250cm9sbGVyZXIgZm9yIHVneWxkaWdlIGJsb2trZSBpIGzDpnMtc2tyaXYgdGlsc3RhbmRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkZyYSBibG9rICVsdSB0aWwgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkzDpnNlciBvZyBzYW1tZW5saWduZXI6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODEKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIktvbnRyb2xsZXIgZm9yIHVneWxkaWdlIGJsb2trZSBpIGlra2VkZXN0cnVrdGl2IGzDpnMtc2tyaXYgdGlsc3RhbmRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODcKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyAobm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgdGVzdClcbiIKK21zZ3N0ciAiS29udHJvbGxlciBmb3IgdWd5bGRpZ2UgYmxva2tlIChpa2tlZGVzdHJ1a3RpdiBsw6ZzLXNrcml2IHRlc3QpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJ1bmRlciB0ZXN0ZGF0YXNrcml2bmluZywgYmxvayAlbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTk4IG1pc2MvdXRpbC5jOjEzMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkOyAiCittc2dzdHIgIiVzIGVyIG1vbnRlcmV0OyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAiZGV0IGVyIGlra2Ugc2lra2VydCBhdCBrw7hyZSBiYWRibG9ja3MhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICIlcyBlciDDuGplbnN5bmxpZyBpIGJydWcgYWYgc3lzdGVtZXQ7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyAlcyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgImthbiBpa2tlIGFsbG9rZXJlIGh1a29tbWVsc2UgZm9yIHRlc3RfcGF0dGVybiAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExODQKK21zZ2lkICJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlIHNwZWNpZmllZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiS3VuIGVuIHRlc3RfcGF0dGVybiBrYW4gYW5naXZlcyBpIHNrcml2ZWJlc2t5dHRldCB0aWxzdGFuZCIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiVmlsa8OlcmxpZyB0ZXN0X3BhdHRlcm4gZXIgaWtrZSB0aWxsYWR0IGkgc2tyaXZlYmVza3l0dGV0IHRpbHN0YW5kIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2UgYmVzdGVtbWUgZW5oZWRzc3TDuHJyZWxzZTsgZHUgbcOlIGFuZ2l2ZVxuIgorInN0w7hycmVsc2VuIG1hbnVlbHRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgYmVzdGVtbWUgZW5oZWRzc3TDuHJyZWxzZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjE1Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAic2lkc3RlIGJsb2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJmw7hyc3RlIGJsb2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyNAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHN0YXJ0aW5nIGJsb2NrICglbGx1KTogbXVzdCBiZSBsZXNzIHRoYW4gJWxsdSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAidWd5bGRpZyBzbHV0YmxvayAoJWxsdSk6IHNrYWwgdsOmcmUgZW4gMzItYml0IHbDpnJkaSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgIkdlbm5lbWzDuGIgZsOmcmRpZywgJXUgdWd5bGRpZ2UgYmxva2tlIGZ1bmRldC4gKCVkLyVkLyVkIGZlamwpXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIkJydWc6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVyIC4uLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE1OQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcHJvamVjdCAtICVzXG4iCittc2dzdHIgInVneWxkaWd0IHByb2pla3QgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgInVneWxkaWcgdmVyc2lvbiAtICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjE5IG1pc2MvbHNhdHRyLmM6MTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzdGF0ICVzIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnIHDDpSBhdCBrw7hyZSBzdGF0ICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2MAorIywgYy1mb3JtYXQKK21zZ2lkICJWZXJzaW9uIG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiVmVyc2lvbiBmb3IgJXMgc2F0IHNvbSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJ1bmRlciBhbmdpdmVsc2UgYWYgdmVyc2lvbiBww6UgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJQcm9qZWt0IGZvciAlcyBhbmdpdmV0IHNvbSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJ1bmRlciBhbmdpdmVsc2UgYWYgcHJvamVrdCBww6UgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIkt1bm5lIGlra2UgYWxsb2tlcmUgc3RpdmFyaWFiZWwgaSBjaGF0dHJfZGlyX3Byb2MiCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0gZXIgaW5rb21wYXRpYmVsIG1lZCAtIG9nICtcbiIKKworIzogbWlzYy9jaGF0dHIuYzozNDUKK21zZ2lkICJNdXN0IHVzZSAnLXYnLCA9LCAtIG9yICtcbiIKK21zZ3N0ciAiU2thbCBicnVnZSDCuy12wqssID0sIC0gZWxsZXIgK1xuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIGlrbnVkZSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJ1bmRlciB1ZHZpZGVsc2UgYWYgbWFwcGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgInVuZGVyIG9wcmV0dGVsc2UgYWYgZm9yYmluZGVsc2UgZm9yIMK7JXPCqyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICJ1bmRlciBza3Jpdm5pbmcgYWYgaWtudWRlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEzOSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE2MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJ1bmRlciB2aXNuaW5nIGFmIGF0dHJpYnV0dGVyIGZvciDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgInVuZGVyIMOlYm5pbmcgYWYgaWtudWRlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgInVuZGVyIGFsbG9rZXJpbmcgYWYgaHVrb21tZWxzZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgbMOmc25pbmcgYWYgYXR0cmlidXQgwrslc8KrIGZvciDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAidW5kZXIgc2tyaXZuaW5nIGFmIGF0dHJpYnV0IMK7JXPCqyB0aWwgaWtudWRlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICJ1bmRlciBsdWtuaW5nIGFmIGlrbnVkZSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInVuZGVyIGFsbG9rZXJpbmcgYWYgaWtudWRlIMK7JXPCqyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJ1bmRlciBvcHJldHRlbHNlIGFmIGlrbnVkZSDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICJ1bmRlciBvcHJldHRlbHNlIGFmIHN5bWJvbHNrIGhlbnZpc25pbmcgwrslc8KrIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgb3BzbGFnIGFmIMK7JXPCqyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgb3ByZXR0ZWxzZSBhZiBtYXBwZSDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgInVuZGVyIMOlYm5pbmcgYWYgwrslc8KrIHRpbCBrb3BpIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgInVuZGVyIMOmbmRyaW5nIGFmIGFyYmVqZHNtYXBwZSB0aWwgwrslc8KrIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgInVuZGVyIMOlYm5pbmcgYWYgbWFwcGUgwrslc8KrIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IGvDuHJlIGxzdGF0IGZvciAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgb3ByZXR0ZWxzZSBhZiBzcGVjaWVsIGZpbCDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzYwCittc2dpZCAibWFsbG9jIGZhaWxlZCIKK21zZ3N0ciAibWFsbG9jIG1pc2x5a2tlZGVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVhZCBsaW5rIFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgbMOmc2UgaGVudmlzbmluZyDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgInN5bWJvbHNrIGhlbnZpc25pbmcgw7hnZXQgaSBzdMO4cnJlbHNlIG1lbGxlbSBsc3RhdCgpIG9nIHJlYWRsaW5rKCkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAidW5kZXIgc2tyaXZuaW5nIGFmIHN5bWJvbHNrIGhlbnZpc25pbmcgwrslc8KrIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc5NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICJ1bmRlciBza3Jpdm5pbmcgYWYgZmlsIMK7JXPCqyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgInVuZGVyIHVkYXJiZWpkZWxzZSBhZiBtYXBwZSDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJ1bmRlciDDpm5kcmluZyBhZiBtYXBwZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWdub3JpbmcgZW50cnkgXCIlc1wiIgorbXNnc3RyICJpZ25vcmVyZXIgcG9zdCDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAidW5kZXIgYW5naXZlbHNlIGFmIGlrbnVkZSBmb3Igwrslc8KrIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHhhdHRycyBmb3IgXCIlc1wiIgorbXNnc3RyICJ1bmRlciBhbmdpdmVsc2UgYWYgeGF0dHJzIGZvciDCuyVzwqsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgInVuZGVyIGxhZ3JpbmcgYWYgaWtudWRlLWRhdGEiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICJCcnVnOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBlbmhlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9ra2UiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAia2x5bmdlciIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcnVwcGUgJWx1OiAoQmxva2tlICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiBjc3VtIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoRk9SVkVOVEVERSAweCUwNHgpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMgc3VwZXJibG9rIHZlZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJQcmltw6ZyIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJTaWtrZXJoZWRza29waSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdydXBwZWJlc2tyaXZlcmUgcMOlICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorbXNnaWQgIiIKKyJcbiIKKyIgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBSZXNlcnZlcmV0IEdEVC1ibG9ra2UgcMOlICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0OQorbXNnaWQgIiBHcm91cCBkZXNjcmlwdG9yIGF0ICIKK21zZ3N0ciAiIEdydXBwZWJlc2tyaXZlcmUgcMOlICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICBCbG9rYml0bWFwIHDDpSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIgIGNzdW0gMHglMDh4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYzCittc2dpZCAiLCIKK21zZ3N0ciAiLCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NQorbXNnaWQgIiIKKyJcbiIKKyIgIgorbXNnc3RyICIiCisiXG4iCisiICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NgorbXNnaWQgIiBJbm9kZSBiaXRtYXAgYXQgIgorbXNnc3RyICIgSWtudWRlLWJpdG1hcCB2ZWQgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIgIEZyaWUgYmxva2tlOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgRnJpZSBpa251ZGVyOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICJVZ3lsZGlnZSBibG9ra2U6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJKb3VybmFsZnVua3Rpb25lcjogICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIkpvdXJuYWxzdMO4cnJlbHNlOiAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisiSm91cm5hbGzDpm5nZGU6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsc2VrdmVuczogICAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWxzdGFydDogICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgICV1XG4iCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgZmlyc3QgYmxvY2s6ICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIG51bWJlciBvZiB1c2VyczogICV1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUxNAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHVzZXJzOiAgICAgICAgICAgICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUzMCBtaXNjL21rZTJmcy5jOjc4NSBtaXNjL3R1bmUyZnMuYzoxOTMwCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIG9wdGlvbnMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU1NgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN1cGVyYmxvY2sgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY5MSBtaXNjL2UyaW1hZ2UuYzoxNTg2IG1pc2MvdHVuZTJmcy5jOjI4MDUKKyM6IHJlc2l6ZS9tYWluLmM6NDE1Cittc2dpZCAiQ291bGRuJ3QgZmluZCB2YWxpZCBmaWxlc3lzdGVtIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlciIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIlNrcml2ZXIgYmxvayAlbGx1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgImZlamwgdmVkIHNrcml2bmluZyBhZiBibG9rICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiZmVqbCBpIGdlbmVyaWNfd3JpdGUoKSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MjE4Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgaGVhZGVyIGJ1ZmZlclxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUwNQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgcmVjX2xlbiAoJWQpXG4iCittc2dzdHIgIsOYZGVsYWd0IG1hcHBlYmxvayAlbGx1OiB1Z3lsZGlnIHJlY19sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAiw5hkZWxhZ3QgbWFwcGVibG9rICVsbHU6IHVneWRsaWcgbmFtZV9sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSIKK21zZ3N0ciAiJWxsdSAvICVsbHUgYmxva2tlICglZCUlKSIKKworIzogbWlzYy9lMmltYWdlLmM6NTg5IG1pc2MvZTJpbWFnZS5jOjYyOQorbXNnaWQgIkNvcHlpbmcgIgorbXNnc3RyICJLb3BpZXJlciAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY2NCBtaXNjL2UyaW1hZ2UuYzoxMTkxCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHJlYWRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiZmVqbCB2ZWQgbMOmc25pbmcgYWYgYmxvayAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29waWVkICVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkgaW4gJXMgIgorbXNnc3RyICJLb3BpZXJlZGUgJWxsdSAvICVsbHUgYmxva2tlICglZCUlKSBpICVzICIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICJ1bmRlciBhbGxva2VyaW5nIGFmIGwxLXRhYmVsIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJ1bmRlciBhbGxva2VyaW5nIGFmIGwyLWNhY2hlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNTUKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgInVuZGVyIGFsbG9rZXJpbmcgYWYgYmxva2JpdG1hcCIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICJ1bmRlciBhbGxva2VyaW5nIGFmIHNjcmFtYmxlIGJsb2tiaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiU2thbm5lciBpa251ZGVyIC4uLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICJLYW4gaWtrZSBhbGxva2VyZSBibG9rYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzM5IG1pc2MvZTJpbWFnZS5jOjEzNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5vZGUgJXUiCittc2dzdHIgInVuZGVyIGdlbm5lbWzDuGIgb3ZlciBpa251ZGUgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDcKK21zZ2lkICJlcnJvciByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgInVuZGVyIMOlYm5pbmcgYWYgZW5oZWRzZmlsIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAidW5kZXIgZ2VuZGFubmVsc2UgYWYgYmlsbGVkdGFiZWxsZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICItYSB0aWx2YWxnIGthbiBrdW4gYnJ1Z2VzIG1lZCByw6UgZWxsZXIgUUNPVzItYmlsbGVkZXIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkZvcnNreWRuaW5nZXIgZXIga3VuIHRpbGxhZHRlIG1lZCByw6UgYmlsbGVkZXIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJGbHl0dGlsc3RhbmQgZXIga3VuIHRpbGxhZHQgbWVkIHLDpSBiaWxsZWRlci4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIkZseXR0aWxzdGFuZCBrcsOmdmVyIGFsbGUgZGF0YXRpbHN0YW5kLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgImtvbnRyb2xsZXJlciBvbSBtb250ZXJldCIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkFmdmlrbGluZyBhZiBlMmltYWdlIHDDpSBldCBsw6ZzL3Nrcml2IG1vbnRlcmV0IGZpbHN5c3RlbSBrYW4gcmVzdWx0ZXJlXG4iCisiaSBldCBpbmtvbnNpc3RlbnQgYmlsbGVkZSwgc29tIGlra2UgdmlsIHbDpnJlIG55dHRpZ3QgdGlsIGZlamxzw7hnbmluZy5cbiIKKyJCcnVnIHRpbHZhbGdldCAtZiBodmlzIGR1IHZpcmtlbGlnIMO4bnNrZXIgZGV0dGUuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiUUNPVzItYmlsbGVkZSBrYW4gaWtrZSBza3JpdmVzIHRpbCBzdGFuZGFyZHVkIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICJLYW4gaWtrZSBrw7hyZSBzdGF0IHDDpSB1ZGRhdGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiQmlsbGVkZXQgKCVzKSBlciBrb21wcmltZXJldFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIkJpbGxlZGV0ICglcykgZXIga3J5cHRlcmV0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICIiCisidW5kZXIgZm9yc8O4ZyBww6UgYXQga29udmVydGVyZSBxY293Mi1iaWxsZWRldCAoJXMpIHRpbCBldCByw6UgYmlsbGVkZSAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJUaWx2YWxnZXQgLWMgZXIga3VuIHVuZGVyc3TDuHR0ZXQgaSByYXctdGlsc3RhbmRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIlRpbHZhbGdldCAtYyBlciBpa2tlIHVuZGVyc3TDuHR0ZXQgdW5kZXIgc2tyaXZuaW5nIHRpbCBzdGFuZGFyZHVkXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTcKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAidW5kZXIgYWxsb2tlcmluZyBhZiBjaGVja19idWYiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIlRpbHZhbGdldCAtcCBlciBrdW4gdW5kZXJzdMO4dHRldCBpIHLDpSB0aWxzdGFuZFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJsb2NrcyBhbHJlYWR5IGNvbnRhaW5lZCB0aGUgZGF0YSB0byBiZSBjb3BpZWRcbiIKK21zZ3N0ciAiJWQgYmxva2tlIGluZGVob2xkdCBhbGxlcmVkZSBkYXRhZW5lIHRpbCBrb3BpZXJpbmdcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgIkJydWc6ICVzIC1yIGVuaGVkXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IGthbiBpa2tlIMOlYm5lICVzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDoga2FuIGlra2Ugc8O4Z2UgdGlsIHN1cGVyYmxva1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogZmVqbCB1bmRlciBsw6ZzbmluZ2FmIHN1cGVyYmxva1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGlra2UgZXQgZXh0Mi1maWxzeXN0ZW1cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6OTcgbWlzYy90dW5lMmZzLmM6Mjk3OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIKK21zZ3N0ciAiQWR2YXJzZWw6IGV0aWtldCBlciBmb3IgbGFuZywgYWZrb3J0ZXIuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IGthbiBpa2tlIHPDuGdlIHRpbCBzdXBlcmJsb2sgaWdlblxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3Igd3JpdGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGRlciBvcHN0b2QgZW4gZmVqbCB1bmRlciBza3Jpdm5pbmcgYWYgc3VwZXJibG9rXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIkJydWc6IGUybGFiZWwgZW5oZWQgW255ZXRpa2V0XVxuIgorCisjOiBtaXNjL2UydW5kby5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgIkJydWc6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWt0aW9uc2ZpbD48Zmlsc3lzdGVtPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiRmlsc3lzdGVtZXRzIHN1cGVyYmxvayBtYXRjaGVyIGlra2UgZ2Vuc2thYmZpbGVuLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0NgorbXNnaWQgIlVVSUQgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIlVVSUQgbWF0Y2hlciBpa2tlLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiU2lkc3RlIG1vbnRlcmluZ3N0aWRzcHVua3QgbWF0Y2hlciBpa2tlLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiU2lkc3RlIHNrcml2ZXRpZHNwdW5rdCBtYXRjaGVyIGlra2UuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAidW5kZXIgbMOmc25pbmcgYWYgZmlsc3lzdGVtZXRzIHN1cGVyYmxvay4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAidW5kZXIgaW5kaGVudGVsc2UgYWYgc3VwZXJibG9rIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJTdXBlcmJsb2trZW5zIGtvbnRyb2xzdW0gZm9yIGdlbnNrYWIgbWF0Y2hlciBpa2tlIHN1cGVyYmxvay5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyBmb3Jza3lkbmluZyAtICVzIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICJWaWwgaWtrZSBza3JpdmUgdGlsIGVuIGdlbmRhbmZpbCB1bmRlciBhZnNwaWxuaW5nIGFmIGRlbi5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJ1bmRlciDDpWJuaW5nIGFmIGdlbnNrYWJmaWxlbiDCuyVzwqtcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIHJvZC1pa251ZGUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IGZvciBtYW5nZSBlbmhlZGVyXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIklrbnVkZW5zIGtvbnRyb2xzdW0gbWF0Y2hlciBpa2tlIGlrbnVkZSIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVua25vd24gdW5kbyBmaWxlIGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICIiCisiSm91cm5hbHN1cGVyYmxvayBoYXIgZXQgdWtlbmR0IG9nIGlra2Uga29tcGF0aWJlbHQgZnVua3Rpb25zZmxhZyBhbmdpdmV0LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAiRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIGJlc3RlbW1lbHNlIGFmIGh2b3J2aWR0ICVzIGVyIG1vbnRlcmV0LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworIywgZnV6enkKK21zZ2lkICJlMnVuZG8gc2hvdWxkIG9ubHkgYmUgcnVuIG9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIKK21zZ3N0ciAiZTJ1bmRvIG3DpSBpa2tlIGvDuHJlcyBww6UgZXQgZmlsc3lzdGVtLCBkZXIgaWtrZSBlciBtb250ZXJldFxuIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICJ1bmRlciDDpWJuaW5nIGFmICVzIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAidW5kZXIgbMOmc25pbmcgYWYgYml0bWFwcyIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIkZyYSBibG9rICVsdSB0aWwgJWx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiU2tyaXZlciBibG9rICVsbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJmZWpsIHZlZCBza3Jpdm5pbmcgYWYgYmxvayAlbGx1IgorCisjOiBtaXNjL2UydW5kby5jOjYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5jb21wbGV0ZSB1bmRvIHJlY29yZDsgcnVuIGUyZnNjay5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiQURWQVJTRUw6IGt1bm5lIGlra2Ugw6VibmUgJXM6ICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBiYWQgZm9ybWF0IG9uIGxpbmUgJWQgb2YgJXNcbiIKK21zZ3N0ciAiQURWQVJTRUw6IHVneWxkaWd0IGZvcm1hdCBww6UgbGluamUgJWQgYWYgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzcwCittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJBRFZBUlNFTDogRGluIC9ldGMvZnN0YWIgaW5kZWhvbGRlciBpa2tlIGZzY2sgcGFzc25vLVxuIgorIlx0ZmVsdGV0LiBKZWcgdmlsIGxhdmUgZW4gbGFwcGVsw7hzbmluZyBmb3IgZGlnLCBtZW4gZHVcbiIKKyJcdGLDuHIgcmV0dGUgZGluIC9ldGMvZnN0YWItZmlsIHPDpSBzbmFydCBzb20gbXVsaWd0LlxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiAlczogaWtrZSBmdW5kZXRcbiIKKworIzogbWlzYy9mc2NrLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3YWl0OiBObyBtb3JlIGNoaWxkIHByb2Nlc3M/IT9cbiIKK21zZ3N0ciAiJXM6IHZlbnQ6IElra2UgZmxlcmUgdW5kZXJwcm9jZXNzZXI/IT9cbiIKKworIzogbWlzYy9mc2NrLmM6NjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmcuLi4gJXMgZm9yIGRldmljZSAlcyBleGl0ZWQgd2l0aCBzaWduYWwgJWQuXG4iCittc2dzdHIgIkFkdmFyc2VsIC4uLiAlcyBmb3IgZW5oZWQgJXMgYWZzbHV0dGVkZXMgbWVkIHNpZ25hbCAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBzdGF0dXMgZXIgJXgsIGLDuHIgYWxkcmlnIHNrZS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJGw6ZyZGlnIG1lZCAlcyAoYWZzbHV0bmluZ3NzdGF0dXMgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBGZWpsICVkIHVuZGVyIGvDuHJzZWwgYWYgZnNjay4lcyBmb3IgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyJFbnRlbiBhbGxlIGVsbGVyIGluZ2VuIGFmIGZpbHN5c3RlbXR5cGVybmUgdmlkZXJlc2VuZHQgdGlsIC10IG3DpSB2w6ZyZVxuIgorImZvcmFuc3RpbGxldCBtZWQgwrtub8KrIGVsbGVyIMK7IcKrLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBhbGxva2VyZSBodWtvbW1lbHNlIGZvciBmaWxzeXN0ZW1zdHlwZXJcbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiB1ZGVsYWRlciB1Z3lsZGlnIGxpbmplIGkgL2V0Yy9mc3RhYjogYmluZCBtb3VudCBtZWQgZnNjay0iCisiZ2VubmVtbMO4YnNudW1tZXIgZm9yc2tlbGxpZyBmcmEgbnVsXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6IGthbiBpa2tlIGtvbnRyb2xsZXJlICVzOiBmc2NrLiVzIGJsZXYgaWtrZSBmdW5kZXRcbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiS29udHJvbGxlcmVyIGFsbGUgZmlsc3lzdGVtZXIuXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iCittc2dzdHIgIi0td2FpdGluZy0tIChnZW5uZW1sw7hiICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDc4Cittc2dpZCAiIgorIlVzYWdlOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgZnN0eXBlXSBbZnMtb3B0aW9uc10gW2ZpbGVzeXMgLi4uXVxuIgorbXNnc3RyICIiCisiQnJ1ZzogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLXRpbHZhbGddIFtmaWxzeXN0IC4uLl1cbiIKKworIzogbWlzYy9mc2NrLmM6MTEyMAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogdG9vIG1hbnkgZGV2aWNlc1xuIgorbXNnc3RyICIlczogZm9yIG1hbmdlIGVuaGVkZXJcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IGZvciBtYW5nZSBhcmd1bWVudGVyXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJGaWwgw6VibiBlciBza3JpdmViZXNreXR0ZXQiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAiIgorImvDuHIgdmVubGlnc3QgwrtlMmZzY2sgLWYgJXPCqyBmw7hyc3QuXG4iCisiXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogV3JpdGluZyB0byB0aGUgam91cm5hbCBpcyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJGb3JtaW5kc2tlbHNlIGFmIGlrbnVkZXN0w7hycmVsc2UgZXIgaWtrZSB1bmRlcnN0w7h0dGV0XG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjEKK21zZ2lkICJXYXJuaW5nOiBNb3VudGluZyB1bmNoZWNrZWQgZnMsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjUKK21zZ2lkICJXYXJuaW5nOiBNYXhpbWFsIG1vdW50IGNvdW50IHJlYWNoZWQsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzAKK21zZ2lkICJXYXJuaW5nOiBDaGVjayB0aW1lIHJlYWNoZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzQKK21zZ2lkICJPcnBoYW5zIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM4Cittc2dpZCAiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1SVmFkbHB2XSBbZmlsZXMuLi5dXG4iCittc2dzdHIgIkJydWc6ICVzIFstUlZhZGx2XSBbZmlsZXIgLi4uXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIlVuZGVyIGzDpnNuaW5nIGFmIGZsYWcgcMOlICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIlVuZGVyIGzDpnNuaW5nIGFmIHZlcnNpb24gcMOlICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIlVuZGVyIGzDpnNuaW5nIGFmIHZlcnNpb24gcMOlICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiQnJ1ZzogJXMgWy1jfC1sIGZpbG5hdm5dIFstYiBibG9rc3TDuHJyZWxzZV0gWy1DIGtseW5nZXN0w7hycmVsc2VdXG4iCisiXHRbLWkgYnl0ZS1wZXItaWtudWRlXSBbLUkgaWtudWRlc3TDuHJyZWxzZV0gWy1KIGpvdXJuYWx0aWx2YWxnXVxuIgorIlx0Wy1HIGZsZXgtZ3J1cHBlc3TDuHJyZWxzZV0gWy1OIGFudGFsLWlrbnVkZXJdXG4iCisiXHRbLW0gcmVzZXJ2ZXJldC1ibG9rcHJvY2VudF0gWy1vIG9wcmV0dGV0LW9zXVxuIgorIlx0Wy1nIGJsb2trZS1wZXItZ3J1cHBlXSBbLUwgZGlza2VuaGVkc2V0aWtldF0gWy1NIHNpZHN0LW1vbnRlcmV0LW1hcHBlXVxuIgorIlx0Wy1PIGZ1bmt0aW9uWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSB1ZHZpZGV0LXRpbHZhbGdbLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIGJydWctdHlwZSBdIFstVSBVVUlEXSBbLWpucXZERktTVl0gZW1oZWQgW2Jsb2trZS1hbnRhbF1cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICJLw7hyZXIga29tbWFuZG86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBydW4gJyVzJyIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQga8O4cmUgwrslc8KrIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAidW5kZXIgYmVoYW5kbGluZyBhZiBsaXN0ZSBtZWQgdWd5bGRpZ2UgYmxva2tlIGZyYSBwcm9ncmFtIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiQmxvayAlZCBpIHByaW3DpnIgc3VwZXJibG9rL2dydXBwZWJlc2tyaXZlciBvbXLDpWRlIHVneWxkaWcuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkJsb2trZW5lICV1IHRpbCAldSBza2FsIHbDpnJlIGkgZ29kIHN0YW5kIGZvciBhdCBieWdnZSBldCBmaWxzeXN0ZW0uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIkFmYnJ5ZGVyIC4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBZHZhcnNlbDogU2lra2VyaGVkc2tvcGliZXNrcml2ZXJuZSBmb3Igc3VwZXJibG9rL2dydXBwZSB2ZWQgYmxvayAldVxuIgorIlx0aW5kZWhvbGRlciB1Z3lsZGlnZSBibG9ra2UuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgIm1lbnMgbWFya2VyZW5kZSB1Z3lsZGlnZSBibG9ra2Ugc29tIGJydWd0IgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIlNrcml2ZXIgaWtudWRldGFiZWxsZXI6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCB3cml0ZSAlZCBibG9ja3MgaW4gaW5vZGUgdGFibGUgc3RhcnRpbmcgYXQgJWxsdTogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkt1bm5lIGlra2Ugc2tyaXZlICVkIGJsb2trZSBpIGlrbnVkZS10YWJlbCBzdGFydGVuZGUgdmVkICVsbHU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJmw6ZyZGlnICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAidW5kZXIgb3ByZXR0ZWxzZSBhZiByb2RtYXBwZSIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIHJvZC1pa251ZGUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDc4Cittc2dpZCAid2hpbGUgc2V0dGluZyByb290IGlub2RlIG93bmVyc2hpcCIKK21zZ3N0ciAidW5kZXIgb3Bzw6Z0bmluZyBhZiBlamVyc2thYiBmb3Igcm9kLWlrbnVkZSIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAidW5kZXIgb3ByZXR0ZWxzZSBhZiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MDMKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ1bmRlciBvcHNsYWcgYWYgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ1bmRlciB1ZHZpZGVsc2UgYWYgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgInVuZGVyIGluZHN0aWxsaW5nIGFmIHVneWxkaWcgYmxvay1pa251ZGUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIklra2Ugbm9rIGh1a29tbWVsc2UgdW5kZXIgc2xldG5pbmcgYWYgc2VrdG9yZXJuZSAlZC0lZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICJBZHZhcnNlbDogS3VubmUgaWtrZSBsw6ZzZSBibG9rIDA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkFkdmFyc2VsOiBrdW5uZSBpa2tlIHNsZXR0ZSBzZWt0b3IgJWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjAwCittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAidW5kZXIgaW5pdGlhbGlzZXJpbmcgYWYgam91cm5hbC1zdXBlcmJsb2siCisKKyM6IG1pc2MvbWtlMmZzLmM6NjA4Cittc2dpZCAiWmVyb2luZyBqb3VybmFsIGRldmljZTogIgorbXNnc3RyICJOdWxzdGlsbGVyIGpvdXJuYWxlbmhlZDogIgorCisjOiBtaXNjL21rZTJmcy5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgInVuZGVyIG51bHN0aWxsaW5nIGFmIGpvdXJuYWxlbmhlZCAoYmxvayAlbGx1LCBhbnRhbCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgInVuZGVyIHNrcml2bmluZyBhZiBqb3VybmFsLXN1cGVyYmxvayIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIk9wcmV0dGVyIGZpbHN5c3RlbSBtZWQgJWxsdSAlZGsgYmxva2tlIG9nICV1IGlrbnVkZXJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorImFkdmFyc2VsOiAlbGx1IHVicnVndGUgYmxva2tlLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2NQorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGxhYmVsPSVzXG4iCittc2dzdHIgIkZpbHN5c3RlbWV0aWtldD0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJPUy10eXBlOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIkJsb2tzdMO4cnJlbHNlPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJLbHluZ2VzdMO4cnJlbHNlPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiRnJhZ21lbnRzdMO4cnJlbHNlJXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcywgJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXUgaWtudWRlciwgJWxsdSBibG9ra2VcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIlbGx1IGJsb2trZSAoJTIuMmYlJSkgcmVzZXJ2ZXJldCBmb3Igc3VwZXJicnVnZXJlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIkbDuHJzdGUgZGF0YWJsb2s9JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAiUm9kbWFwcGVlamVyPSV1OiV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgIk1ha3NpbXVtIGZpbHN5c3RlbWJsb2trZT0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IGJsb2tncnVwcGVyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2tncnVwcGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2trZSBwZXIgZ3J1cHBlLCAldSBrbHluZ2VyIHBlciBncnVwcGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9ra2UgcGVyIGdydXBwZSwgJXUgZnJhZ21lbnRlciBwZXIgZ3J1cHBlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgaWtudWRlciBwZXIgZ3J1cHBlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiRmlsc3lzdGVtIFVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgwNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyByZXF1aXJlcyAnLU8gNjRiaXQnXG4iCittc2dzdHIgIiVzIGtyw6Z2ZXIgwrstTyA2NGJpdMKrXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAiwrslc8KrIHNrYWwga29tbWUgZsO4ciDCu3Jlc2l6ZT0ldcKrXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgIlVneWxkaWcgYmVza3JpdmVsc2Vzc3TDuHJyZWxzZTogwrslc8KrXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICJ1Z3lsZGlnIGZvcnNreWRuaW5nOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiVWd5bGRpZyBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICJVZ3lsZGlnICMgZm9yIHNpa2tlcmhlZHNrb3Bpc3VwZXJibG9ra2U6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaWRlIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgIlVneWxkaWcgcm9kX2VqZXI6IMK7JXPCq1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHRvZmZzZXQ9PG9mZnNldCB0byBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtPlxuIgorIlx0cmVzaXplPTxyZXNpemUgbWF4aW11bSBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBvZiByb290IGRpcj46PGdpZCBvZiByb290IGRpcj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxxdW90YSB0eXBlKHMpIHRvIGJlIGVuYWJsZWQ+XG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBZHZhcnNlbDogUkFJRCBzdHJpcGUtYnJlZGRlICV1IGlra2UgZXQgbGlnZSBtdWx0aXBsdW0gYWYgc3RyaWRlICV1LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBta2UyZnMgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YWtzZmVqbCBpIG1rZTJmcy1rb25maWd1cmF0aW9uc2ZpbGVuICglcywgbGluamUgIyVkKVxuIgorIlx0JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIlVneWxkaWcgZmlsc3lzdGVtdGlsdmFsZyBhbmdpdmV0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiVWd5bGRpZyBtb250ZXJpbmdzdGlsdmFsZyBhbmdpdmV0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRpbiBta2UyZnMuY29uZi1maWwgZGVmaW5lcmVyIGlra2UgJXMtZmlsc3lzdGVtdHlwZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkR1IHNrYWwgc2FuZHN5bmxpZ3ZpcyBpbnN0YWxsZXJlIGVuIG9wZGF0ZXJldCBta2UyZnMuY29uZi1maWwuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgIkFmYnJ5ZGVyIC4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBZHZhcnNlbDogZnNfdHlwZSAlcyBlciBpa2tlIGRlZmluZXJldCBpIG1rZTJmcy5jb25mXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIkt1bm5lIGlra2UgYWxsb2tlcmUgaHVrb21tZWxzZSBmb3IgbnkgU1RJIChQQVRIKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU2NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrIHNpemUgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyBibG9rc3TDuHJyZWxzZSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogYmxvY2tzaXplICVkIG5vdCB1c2FibGUgb24gbW9zdCBzeXN0ZW1zLlxuIgorbXNnc3RyICJBZHZhcnNlbDogYmxva3N0w7hycmVsc2UgJWQga2FuIGlra2UgYnJ1Z2VzIHDDpSBkZSBmbGVzdGUgc3lzdGVtZXIuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJ1Z3lsZGlnIGtseW5nZXN0w7hycmVsc2UgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjAwCittc2dpZCAiJy1SJyBpcyBkZXByZWNhdGVkLCB1c2UgJy1FJyBpbnN0ZWFkIgorbXNnc3RyICLCuy1SwqsgZXIgZm9yw6ZsZGV0LCBicnVnIMK7LUXCqyBpIHN0ZWRldCBmb3IiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJ1Z3lsZGlnIGZlamxvcGbDuHJzZWwgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIlVsb3ZsaWd0IGFudGFsIGZvciBibG9ra2UgcGVyIGdydXBwZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjMxCittc2dpZCAiYmxvY2tzIHBlciBncm91cCBtdXN0IGJlIG11bHRpcGxlIG9mIDgiCittc2dzdHIgImJsb2trZSBwZXIgZ3J1cHBlIHNrYWwgdsOmcmUgbXVsdGlwbHVtIGFmIDgiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBmbGV4X2JnIHNpemUiCittc2dzdHIgIlVneWxkaWd0IG51bW1lciBmb3IgZmxleF9iZy1zdMO4cnJlbHNlIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgImZsZXhfYmctc3TDuHJyZWxzZW4gc2thbCB2w6ZyZSBlbiBwb3RlbnMgYWYgMiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJmbGV4X2JnLXN0w7hycmVsc2VuICglbHUpIHNrYWwgdsOmcmUgbWluZHJlIGVuZCBlbGxlciBsaWcgbWVkIDJeMzEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAidWd5bGRpZyBpa251ZGVmb3Job2xkICVzIChtaW4gJWQvbWFrcyAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyBpa251ZGVzdMO4cnJlbHNlIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyJBZHZhcnNlbDogVGlsdmFsZ2V0IC1LIGVyIGZvcsOmbGRldCBvZyBiw7hyIGlra2UgYnJ1Z2VzIGzDpm5nZXJlLiBCcnVnIGRldCAiCisidWR2aWRlZGUgdGlsdmFsZyDCuy1FIG5vZGlzY2FyZMKrIGkgc3RlZGV0IVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgImkgbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJBZHZhcnNlbDogZXRpa2V0IGVyIGZvciBsYW5nLCBhZmtvcnRlci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzEyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyByZXNlcnZlcmV0IGJsb2twcm9jZW50IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcyNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICJ1Z3lsZGlnZSBudW0taWtudWRlciAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NDAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBmc19mZWF0dXJlIHN0cmluZyIKK21zZ3N0ciAidW5kZXIgYWxsb2tlcmluZyBhZiBtZWxsZW1sYWdyZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJ1Z3lsZGlnIHJldmlzaW9uc25pdmVhdSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgb3ByZXR0ZSByZXZpc2lvbiAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIlRpbHZhbGdldCAtdCBrYW4ga3VuIGJydWdlcyBlbiBnYW5nIgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiVGlsdmFsZ2V0IC1UIGthbiBrdW4gYnJ1Z2VzIGVuIGdhbmciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgw6VibmUgam91cm5hbGVuaGVkZW4gJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiSm91cm5hbCBkZXYtYmxva3N0w7hycmVsc2VuICglZCkgZXIgbWluZHJlIGVuZCBtaW5pbXVtYmxva3N0w7hycmVsc2VuICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiQnJ1Z2VyIGpvdXJuYWxlbmhlZGVucyBibG9rc3TDuHJyZWxzZTogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgInVneWxkaWdlIGJsb2trZSDCuyVzwqsgcMOlIGVuaGVkZW4gwrslc8KrIgorCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJmaWxzeXN0ZW0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnZXQgcMOlIGF0IGJlc3RlbW1lIGZpbHN5c3RlbXN0w7hycmVsc2VuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIkt1bm5lIGlra2UgYmVzdGVtbWUgZW5oZWRzdMO4cnJlbHNlbjsgZHUgc2thbiBhbmdpdmVcbiIKKyJzdMO4cnJlbHNlbiBww6UgZmlsc3lzdGVtZXRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJFbmhlZHNzdMO4cnJlbHNlIGJsZXYgcmFwcG9ydGVyZXQgdGlsIG51bC4gVWd5bGRpZyBwYXJ0aXRpb24gc3BlY2lmaWNlcmV0LFxuIgorImVsbGVyIHBhcnRpdGlvbnN0YWJlbCBibGV2IGlra2UgZ2VubMOmc3QgZWZ0ZXIga8O4cnNlbCBhZiBmZGlzaywgcMOlIGdydW5kXG4iCisiYWYgYXQgZW4gw6ZuZHJldCBwYXJ0aXRpb24gdmFyIG9wdGFnZXQgZWxsZXIgaSBicnVnLiBEdSBza2FsIG3DpXNrZSBnZW5zdGFydGVcbiIKKyJmb3IgYXQga3VubmUgZ2VubMOmc2UgZGluIHBhcnRpdGlvbnN0YWJlbC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIkZpbHN5c3RlbSBlciBzdMO4cnJlIGVuZCB0aWxzeW5lbGFkZW5kZSBlbmhlZHNzdMO4cnJlbHNlLiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTUwCittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGZzIHR5cGVzIGxpc3RcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBmb3J0b2xrZSBmcy10eXBlbGlzdGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQnZW4gdW5kZXJzdMO4dHRlciBpa2tlIGZpbHR5cGVmdW5rdGlvbmVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQnZW4gdW5kZXJzdMO4dHRlciBpa2tlIGZpbHR5cGVmdW5rdGlvbmVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkJ2VuIHVuZGVyc3TDuHR0ZXIgaWtrZSBmaWx0eXBlZnVua3Rpb25lbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDE4Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAidW5kZXIgZm9yc8O4ZyBww6UgYXQgYmVzdGVtbWUgc2VrdG9yc3TDuHJyZWxzZSBmb3IgdWRzdHlyIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHBoeXNpY2FsIHNlY3RvciBzaXplIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnIHDDpSBhdCBiZXN0ZW1tZSBmeXNpc2sgc2VrdG9yc3TDuHJyZWxzZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IGFuZ2l2ZSBibG9rc3TDuHJyZWxzZTsgZm9yIGxpbGxlIGZvciBlbmhlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJBZHZhcnNlbDogc3BlY2lmaWNlcmV0IGJsb2tzdMO4cnJlbHNlICVkIGVyIG1pbmRyZSBlbmQgZW5oZWRlbnMgZnlzaXNrZSAiCisic2VrdG9yc3TDuHJyZWxzZSAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKyIlczogU3TDuHJyZWxzZSBmb3IgZW5oZWQgKDB4JWxseCBibG9ra2UpICVzIGZvciBzdG9yIHRpbCBhdCBibGl2ZSB1ZHRyeWt0XG4iCisiXHRpIDMyLWJpdCB2aWEgZW4gYmxva3N0w7hycmVsc2UgcMOlICVkLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDEKK21zZ2lkICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorbXNnc3RyICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYtb3Bsw7hzbmluZzogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIkZpbHN5c3RlbWZ1bmt0aW9uZXIgZXIgaWtrZSB1bmRlcnN0w7h0dGV0IG1lZCByZXZpc2lvbiAwLWZpbHN5c3RlbWVyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjExNgorbXNnaWQgIlNwYXJzZSBzdXBlcmJsb2NrcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJUeW5kZSBzdXBlcmJsb2trZSBlciBpa2tlIHVuZGVyc3TDuHR0ZXQgbWVkIHJldmlzaW9uIDAtZmlsc3lzdGVtZXJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiSm91cm5hbGVyIGVyIGlra2UgdW5kZXJzdMO4dHRldCBtZWQgcmV2aXNpb24gMC1maWxzeXN0ZW1lclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVsZiIKK21zZ3N0ciAidWd5bGRpZyByZXNlcnZlcmV0IGJsb2trZXByb2NlbnQgLSAlbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNzYKK21zZ2lkICJUaGUgY2x1c3RlciBzaXplIG1heSBub3QgYmUgc21hbGxlciB0aGFuIHRoZSBibG9jayBzaXplLlxuIgorbXNnc3RyICJLbHluZ2VzdMO4cnJlbHNlbiBtw6UgaWtrZSB2w6ZyZSBtaW5kcmUgZW5kIGJsb2tzdMO4cnJlbHNlbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAiYW5naXZlbHNlIGFmIGVuIGtseW5nZXN0w7hycmVsc2Uga3LDpnZlciBiaWdhbGxvYy1mdW5rdGlvbmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgImFkdmFyc2VsOiBLYW4gaWtrZSBpbmRoZW50ZSBlbmhlZHNnZW9tZXRyaSBmb3IgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICIlcy1qdXN0ZXJpbmcgZm9yc2t5ZGVzIG1lZCAlbHUgYnl0ZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKyJEZXR0ZSBrYW4gbWVkZsO4cmUgbWVnZXQgZMOlcmxpZyB5ZGVsc2UsIChueSkgcGFydGl0aW9uZXJpbmcgYW5iZWZhbGVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpIgorbXNnc3RyICIlZC1ieXRlYmxva2tlIGVyIGZvciBzdG9yZSBmb3Igc3lzdGVtZXQgKG1ha3MgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIiIKKyJBZHZhcnNlbDogJWQtYnl0ZWJsb2trZSBlciBmb3Igc3RvcmUgZm9yIHN5c3RlbWV0IChtYWtzICVkKSwgdHZ1bmdldCB0aWwgYXQgIgorImZvcnRzw6Z0dGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yIGltcHJvdmVkIHN0YWJpbGl0eSBvZiB0aGUgbWV0YWRhdGEgIgorImFuZCBqb3VybmFsIGNoZWNrc3VtIGZlYXR1cmVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICJLYW4gaWtrZSB1bmRlcnN0w7h0dGUgYmlnYWxsb2MtZnVua3RvbiB1ZGVuIGV4dGVudHMtZnVua3Rpb24iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxOQorbXNnaWQgIiIKKyJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnIGZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKyJUaGV5IGNhbiBub3QgYmUgYm90aCBlbmFibGVkIHNpbXVsdGFuZW91c2x5LlxuIgorbXNnc3RyICIiCisiRnVua3Rpb25lcm5lIHJlc2l6ZV9pbm9kZSBvZyBtZXRhX2JnIGVyIGlra2Uga29tcGF0aWJsZS5cbiIKKyJEZSBrYW4gaWtrZSBiZWdnZSB2w6ZyZSBha3RpdmVyZXQgcMOlIHNhbW1lIHRpZHNwdW5rdC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBZHZhcnNlbDogZnVua3Rpb25lbiBiaWdhbGxvYyBlciBzdGFkaWcgdW5kZXIgdWR2aWtsaW5nXG4iCisiU2UgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIHlkZXJsaWdlcmUgIgorImluZm9ybWF0aW9uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisicmVzZXJ2ZXJlZGUgb25saW5lIMOmbmRyaW5nc2Jsb2trZSBlciBpa2tlIHVuZGVyc3TDuHR0ZXQgcMOlIGlra2UtdHluZHQgIgorImZpbHN5c3RlbSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImJsb2tzIHBlciBncnVwcGUtYW50YWwgdWRlbiBmb3IgaW50ZXJ2YWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM3MAorbXNnaWQgIkZsZXhfYmcgZmVhdHVyZSBub3QgZW5hYmxlZCwgc28gZmxleF9iZyBzaXplIG1heSBub3QgYmUgc3BlY2lmaWVkIgorbXNnc3RyICIiCisiRmxleF9iZy1mdW5rdGlvbiBlciBpa2tlIGFrdGl2ZXJldCwgc8OlIGZsZXhfYmctc3TDuHJyZWxzZSBrYW4gaWtrZSBhbmdpdmVzIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAidWd5bGRpZyBpa251ZGVzdMO4cnJlbHNlICVkIChtaW4gJWQvbWFrcyAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBpbmxpbmUgZGF0YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgcHJvamVjdCBxdW90YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgcmFpc2UgaW5vZGUgcmF0aW8/IgorbXNnc3RyICJmb3IgbWFuZ2UgaWtudWRlciAoJWxsdSksIGjDpnYgaWtudWRlZm9yaG9sZD8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgImZvciBtYW5nZSBpa251ZGVyICglbGx1KSwgc3BlY2lmaWNlciA8IDJeMzIgaWtudWRlciIKKworIzogbWlzYy9ta2UyZnMuYzoyNDQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSB0b28gYmlnIGZvciBhXG4iCisiXHRmaWxlc3lzdGVtIHdpdGggJWxsdSBibG9ja3MsIHNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG9yIGxvd2VyIGlub2RlIGNvdW50ICgtTikuXG4iCittc2dzdHIgIiIKKyJpa251ZGVfc3TDuHJyZWxzZSgldSkgKiBpa251ZGVyX2FudGFsICgldSkgZXIgZm9yIHN0b3IgZm9yIGV0XG4iCisiXHRmaWxzeXN0ZW0gbWVkICVsbHUgYmxva2tlLCBzcGVjaWZpY2VyIGjDuGplcmUgaWtudWRlX2ZvcmhvbGQgKC1pKVxuIgorIlx0ZWxsZXIgbGF2ZXJlIGlrbnVkZWFudGFsICgtTikuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICJGamVybmVyIGVuaGVkc2Jsb2trZTogIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKK21zZ2lkICJmYWlsZWQgLSAiCittc2dzdHIgIm1pc2x5a2tlZGVzIC0gIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAidW5kZXIgaW5pdGlhbGlzZXJpbmcgYWYga3ZvdGFrb250ZWtzdCIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgInVuZGVyIHNrcml2bmluZyBhZiBrdm90YS1pa251ZGVyIgorCisjOiBtaXNjL21rZTJmcy5jOjI3NDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgInVneWxkaWcgZmVqbG9wZsO4cnNlbCAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgInVuZGVyIG9wc8OmdG5pbmcgYWYgc3VwZXJibG9rIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzAKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFBhc3MgLU8gZXh0ZW50cyB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzNworbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKyJGamVybmVsc2UgbHlra2VkZXMgb2cgdmlsIHJldHVybmVyZSAwcyAtIHVkZWxhZGVyIGlrbnVkZXRhYmVsZmplcm5lbHNlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIG9zIC0gJXMiCittc2dzdHIgInVrZW5kdCBvcyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJBbGxva2VyZXIgZ3J1cHBldGFiZWxsZXI6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnIHDDpSBhdCBhbGxva2VyZSBmaWxzeXN0ZW10YWJlbGxlciIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIlx0dW5kZXIga29udmVydGVyaW5nIGFmIHVuZGVya2x5bmdlLWJpdG1hcCIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJ1bmRlciBudWxzdGlsbGluZyBhZiBibG9rICVsbHUgaSBzbHV0bmluZ2VuIGFmIGZpbHN5c3RlbWV0IgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJ1bmRlciByZXNlcnZlcmluZyBhZiBibG9ra2UgZm9yIG9ubGluZSDDpm5kcmluZyBhZiBzdMO4cnJlbHNlIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgImpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiVGlsZsO4amVyIGpvdXJuYWwgdGlsIGVuaGVkZW4gJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdHVuZGVyIGZvcnPDuGcgcMOlIGF0IHRpbGbDuGplIGpvdXJuYWwgdGlsIGVuaGVkZW4gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgImbDpnJkaWdcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiVWRlbGFkZXIgam91cm5hbG9wcmV0dGVsc2UgaSBzdXBlci1vbmx5LXRpbHN0YW5kXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIk9wcmV0dGVyIGpvdXJuYWwgKCV1IGJsb2trZSk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHR1bmRlciBmb3Jzw7hnIHDDpSBhdCBvcHJldHRlIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgYWt0aXZlcmluZyBhZiBmdW5rdGlvbmVuIGZvciBmbGVyZSAiCisibW9udGVyaW5nc2Jlc2t5dHRlbHNlci4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIkZsZXJlIG1vbnRlcmluZ3NiZXNreXR0ZWxzZXIgZXIgYWt0aXZlcmV0IG1lZCBvcGRhdGVyaW5nc2ludGVydmFsICVkICIKKyJzZWt1bmRlci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTcKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAidW5kZXIgYWxsb2tlcmluZyBhZiBsMS10YWJlbCIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIlNrcml2ZXIgc3VwZXJibG9ra2Ugb2cgZmlsc3lzdGVtZXRzIHJlZ2lzdHJlcmluZ3NpbmZvcm1hdGlvbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTEKK21zZ2lkICIiCisiXG4iCisiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIgorbXNnc3RyICIiCisiXG4iCisiQWR2YXJzZWwsIGhhdmRlIHByb2JsZW1lciBtZWQgYXQgc2tyaXZlIHN1cGVyYmxva2tlIHVkLiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorImbDpnJkaWdcbiIKKyJcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBhcnRpdGlvbiBvZmZzZXQgb2YgJWxsdSAoJXVrKSBibG9ja3Mgbm90IGNvbXBhdGlibGUgd2l0aCBjbHVzdGVyIHNpemUgJXUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTEKK21zZ2lkICJIdWdlIGZpbGVzIHdpbGwgYmUgemVybydlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyAlbHUgaHVnZSBmaWxlKHMpICIKK21zZ3N0ciAiT3ByZXR0ZXIgbm9ybWFsIGZpbCAlc1xuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICIiCisiYWR2YXJzZWw6ICVsbHUgdWJydWd0ZSBibG9ra2UuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJ1bmRlciBnZW5uZW1sw7hiIG92ZXIgaWtudWRlICV1IgorCisjOiBtaXNjL21rbG9zdCtmb3VuZC5jOjUwCittc2dpZCAiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIgorbXNnc3RyICJCcnVnOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJCcnVnOiAgJXMgZW5oZWQuLi5cbiIKKyJcbiIKKyJVZHNrcml2ZXIgcGFydGl0aW9uc2luZm9ybWF0aW9uIGZvciBodmVyIGVuaGVkLlxuIgorIkZvciBla3NlbXBlbDogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiS2FuIGlra2Ugw6VibmUgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIkthbiBpa2tlIGluZGhlbnRlIGdlb21ldHJpIGZvciAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IHNpemUgb2YgJXM6ICVzIgorbXNnc3RyICJLYW4gaWtrZSBpbmRoZW50ZSBzdMO4cnJlbHNlIHDDpSAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBzdGFydD0lOGQgc2l6ZT0lOGx1IGVuZD0lOGRcbiIKK21zZ3N0ciAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHN0cj0lOGx1IHNsdXQ9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiS8O4ciB2ZW5saWdzdCBlMmZzY2sgcMOlIGZpbHN5c3RlbWV0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJLw7hyIHZlbmxpZ3N0IGUyZnNjayBww6UgZmlsc3lzdGVtZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxvayBibGV2IGlra2UgZnVuZGV0IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJ1bmRlciBmb3Jzw7hnIHDDpSBhdCDDpWJlbiBla3N0ZXJuIGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBlciBpa2tlIGVuIGpvdXJuYWxlbmhlZC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIkZpbHN5c3RlbWV0cyBVVUlEIGJsZXYgaWtrZSBmdW5kZXQgcMOlIGpvdXJuYWxlbmhlZC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJLYW4gaWtrZSBmaW5kZSBqb3VybmFsZW5oZWQuIERlbiBibGV2IElLS0UgZmplcm5ldFxuIgorIkJydWcgdGlsdmFsZ2V0IC1mIHRpbCBhdCBmamVybmUgbWFuZ2xlbmRlIGpvdXJuYWxlbmhlZC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkpvdXJuYWwgZmplcm5ldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIGJpdG1hcHMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInVuZGVyIHJ5ZG5pbmcgYWYgam91cm5hbGlrbnVkZSIKKworIzogbWlzYy90dW5lMmZzLmM6Mzg4Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJ1bmRlciBza3Jpdm5pbmcgYWYgam91cm5hbGlrbnVkZSIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKG9nIGdlbnN0YXJ0IGVmdGVyZsO4bGdlbmRlISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJrw7hyIHZlbmxpZ3N0IMK7ZTJmc2NrIC1mICVzwqsgZsO4cnN0LlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIC16IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZGlzYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo5NzQKK21zZ2lkICIiCisiV0FSTklORzogQ291bGQgbm90IGNvbmZpcm0ga2VybmVsIHN1cHBvcnQgZm9yIG1ldGFkYXRhX2NzdW1fc2VlZC5cbiIKKyIgIFRoaXMgcmVxdWlyZXMgTGludXggPj0gdjQuNC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIkZ1bmt0aW9uZW4gZm9yIHJ5ZG5pbmcgYWYgZmlsc3lzdGVtIMK7JXPCqyBlciBpa2tlIHVuZGVyc3TDuHR0ZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJGdW5rdGlvbmVuIGZvciBvcHPDpnRuaW5nIGFmIGZpbHN5c3RlbSDCuyVzwqsgZXIgaWtrZSB1bmRlcnN0w7h0dGV0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkZ1bmt0aW9uZW4gaGFzX2pvdXJuYWwga2FuIGt1biByeWRkZXMsIG7DpXIgZmlsc3lzdGVtZXQgZXIgdW1vbnRlcmV0XG4iCisiZWxsZXIgbW9udGVyZXQgc29tIHNrcml2ZWJlc2t5dHRldC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIkZsYWdldCBuZWVkc19yZWNvdmVyeSBlciBhbmdpdmV0LiBLw7hyIHZlbmxpZ3N0IGUyZnNjayBmw7hyIHJ5ZG5pbmdcbiIKKyJhZiBmbGFnZXQgaGFzX2pvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNTEKK21zZ2lkICIiCisiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJ3NwYXJzZV9zdXBlcicgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkFuZ2l2ZWxzZSBhZiBmaWxzeXN0ZW1mdW5rdGlvbmVuIMK7c3BhcnNlX3N1cGVywqsgZXIgaWtrZSB1bmRlcnN0w7h0dGV0XG4iCisiZm9yIGZpbHN5c3RlbWVyIG1lZCBmdW5rdGlvbmVuIG1ldGFfYmcgYWt0aXZlcmV0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDY0Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkZ1bmt0aW9uZW4gZm9yIGZsZXJlIG1vbnRlcmluZ3NiZXNreXR0ZWxzZXIga2FuXG4iCisiaWtrZSBhbmdpdmVzIGh2aXMgZmlsc3lzdGVtZXQgZXIgbW9udGVyZXQgZWxsZXJcbiIKKyJza3JpdmViZXNreXR0ZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5OQorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgYml0bWFwc1xuIgorbXNnc3RyICJEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIgbMOmc25pbmcgYWYgYml0bWFwXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIk1hZ2lzayBudW1tZXIgaSBNTVAtYmxvayBtYXRjaGVyIGlra2UuIGZvcnZlbnRlZGU6ICV4LCBmYWt0aXNrICV4XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgInVuZGVyIGzDpnNuaW5nIGFmIE1NUC1ibG9rLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiIgorIlJ5ZG5pbmcgYWYgZmxhZ2V0IGZsZXhfYmcgdmlsIG1lZGbDuHJlIGF0IGZpbHN5c3RlbWV0IGJsaXZlclxuIgorImlua29uc2lzdGVudC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKKyMsIGZ1enp5Cittc2dpZCAiIgorIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyBpcyBvbmx5IHN1cHBvcnRlZFxuIgorIm9uIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiQW5naXZlbHNlIGFmIGZpbHN5c3RlbWZ1bmt0aW9uZW4gwrtzcGFyc2Vfc3VwZXLCqyBlciBpa2tlIHVuZGVyc3TDuHR0ZXRcbiIKKyJmb3IgZmlsc3lzdGVtZXIgbWVkIGZ1bmt0aW9uZW4gbWV0YV9iZyBha3RpdmVyZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBoYXIgYWxsZXJlZGUgZW4gam91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdHVuZGVyIGZvcnPDuGcgcMOlIGF0IMOlYm5lIGpvdXJuYWwgcMOlICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiT3ByZXR0ZXIgam91cm5hbCBww6UgZW5oZWQgJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJ1bmRlciB0aWxmw7hqZWxzZSBhZiBmaWxzeXN0ZW0gdGlsIGpvdXJuYWwgcMOlICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICJPcHJldHRlciBqb3VybmFsaWtudWRlOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0dW5kZXIgZm9yc8O4ZyBww6UgYXQgb3ByZXR0ZSBqb3VybmFsZmlsIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAidW5kZXIgaW5pdGlhbGlzZXJpbmcgYWYgam91cm5hbC1zdXBlcmJsb2siCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJ1bmRlciBvcGRhdGVyaW5nIGFmIMO4ZGVsYWd0IGJsb2staWtudWRlIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAidW5kZXIgc2tyaXZuaW5nIGFmIGpvdXJuYWxpa251ZGUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAidW5kZXIgbMOmc25pbmcgYWYgcm9kLWlrbnVkZSIKKworIzogbWlzYy90dW5lMmZzLmM6MTU3NQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRm9sbG93aW5nIHZhbGlkIHF1b3RhIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSAocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggIgorImNvbW1hKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICJLdW5uZSBpa2tlIGZvcnRvbGtlIGRhdG8vdGlkcy1hbmdpdmVyZW46ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJ1Z3lsZGlndCBtb250ZXJpbmdzYW50YWwgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyBnaWQvZ3J1cHBlbmF2biAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICJ1Z3lsZGlnIGludGVydmFsIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgInVneWxkaWd0IHJlc2VydmVyZXQgYmxva2ZvcmhvbGQgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItbyBrYW4ga3VuIGFuZ2l2ZXMgZW4gZ2FuZyIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItTyBrYW4ga3VuIGFuZ2l2ZXMgZW4gZ2FuZyIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgInVneWxkaWd0IHJlc2VydmVyZXQgYmxva2FudGFsIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAidWd5bGRpZyB1aWQvYnJ1Z2VybmF2biAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgInVneWxkaW5nIGlrbnVkZS1zdMO4cnJlbHNlIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiSWtudWRlLXN0w7hycmVsc2Ugc2thbCB2w6ZyZSBlbiBwb3RlbnMgYWYgdG8gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTk2NworIywgYy1mb3JtYXQKK21zZ2lkICJtbXBfdXBkYXRlX2ludGVydmFsIHRvbyBiaWc6ICVsdVxuIgorbXNnc3RyICJtbXBfdXBkYXRlX2ludGVydmFsIGVyIGZvciBzdG9ydDogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCittc2dzdHIgIlVneWxkaWcgUkFJRCBzdHJpZGU6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiVWd5bGRpZyBSQUlEIHN0cmlwZS1icmVkZGU6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiVWd5bGRpZyBoYXNoYWxnb3JpdG1lOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIkFuZ2l2ZXIgc3RhbmRhcmRoYXNoYWxnb3JpdG1lbiB0aWwgJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MTkKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbm9kZSBiaXRtYXBcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBsw6ZzZSBpa251ZGUtYml0bWFwXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBibG9jayBiaXRtYXBcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBsw6ZzZSBibG9rLWJpdG1hcFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJibG9ra2UgZGVyIHNrYWwgZmx5dHRlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBhbGxva2VyZSBibG9rLWJpdG1hcCBkYSBpa251ZGVzdMO4cnJlbHNlbiBibGV2IMO4Z2V0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIklra2Ugbm9rIHBsYWRzIHRpbCBhdCDDuGdlIGlrbnVkZXN0w7hycmVsc2VuIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5IHJ1bm5pbmc6XG4iCisiJ2UyZnNjayAtZiAlcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgZXIgaWtrZSBlbiBqb3VybmFsZW5oZWQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICJGb3JtaW5kc2tlbHNlIGFmIGlrbnVkZXN0w7hycmVsc2UgZXIgaWtrZSB1bmRlcnN0w7h0dGV0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICJVZ3lsZGlnIGlrbnVkZXN0w7hycmVsc2UgJWx1IChtYWtzICVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbWF4aW1hbCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgcGVyY2VudGFnZSB0byAlZyUlICglbGx1IGJsb2NrcylcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IHRvICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkZpbHN5c3RlbWV0IGhhciBhbGxlcmVkZSB0eW5kZSBzdXBlcmJsb2trZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0NQorbXNnaWQgIiIKKyJcbiIKKyJTZXR0aW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBbmdpdmVsc2UgYWYgZGV0IHR5bmRlIHN1cGVyYmxva2ZsYWcgZXIgaWtrZSB1bmRlcnN0w7h0dGV0XG4iCisiZm9yIGZpbHN5c3RlbWVyIG1lZCBmdW5rdGlvbmVuIG1ldGFfYmcgYWt0aXZlcmV0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisiXG4iCisiVHluZHQgc3VwZXJibG9rZmxhZyBhbmdpdmV0LiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2MAorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiUnlkbmluZyBhZiBkZXQgdHluZGUgc3VwZXJibG9rZmxhZyBlciBpa2tlIHVuZGVyc3TDuHR0ZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIkFuZ2l2ZXIgdGlkc3B1bmt0IGZvciBmaWxzeXN0ZW1ldHMgc2lkc3RlIGtvbnRyb2wgdGlsICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICJBbmdpdmVyIHJlc2VydmVyZXQgYmxva2tlLXVpZCB0aWwgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgImZlamwgaSBicnVnZW4gYWYgY2xlYXJfbW1wLiBEZW4gc2thbCBicnVnZXMgbWVkIC1mXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiS3ZvdGFmdW5rdGlvbmVuIGthbiBrdW4gw6ZuZHJlcyBuw6VyIGZpbHN5c3RlbWVyIGVyIGFmbW9udGVyZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICJVVUlEJ2VuIGthbiBrdW4gw6ZuZHJlcyBuw6VyIGZpbHN5c3RlbWV0IGVyIGFmbW9udGVyZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIlVneWxkaWd0IFVVSUQtZm9ybWF0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMDEKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIlNrYWwgb3BkYXRlcmUgam91cm5hbHN1cGVyYmxvay5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTUKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSDDpm5kcmUgaWtudWRlc3TDuHJyZWxzZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaWRlIHNpemUgdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB0byAnJXMnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiJXM6IGdlbnNrYWJlciBqb3VybmFsXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJGb3J0c8OmdCBhbGxpZ2V2ZWw/IChqLG4pICIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyNDQKK21zZ2lkICIiCisiXG4iCisiRmlsZXN5c3RlbSB0b28gc21hbGwgZm9yIGEgam91cm5hbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJKb3VybmFsc3TDuHJyZWxzZSBlciBmb3Igc3RvciBmb3IgZmlsc3lzdGVtZXQuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiRGV0dGUgZmlsc3lzdGVtIHZpbCBhdXRvbWF0aXNrIGJsaXZlIGtvbnRyb2xsZXJldCBlZnRlciBodmVyICVkIG1vbnRlcmluZ1xuIgorImVsbGVyIGVmdGVyICVnIGRhZ2UuIEJydWcgdHVuZTJmcyAtYyBlbGxlciAtaSBmb3IgYXQgYW5udWxsZXJlLlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiQnJ1ZzogJXMgWy1kXSBbLXAgcGlkLWZpbF0gWy1zIHNva2tlbHN0aV0gWy1UIHRpZHN1ZGzDuGJdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2trZWxzdGldXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiICAgICAgICVzIC1rXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICJ1Z3lsZGlnZSBwYXJhbWV0cmUiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICJmb3JiaW5kIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgInNrcml2IgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAidWd5bGRpZyBzdmFybMOmbmdkZSIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJ1dWlkZC1kw6Ztb24ga8O4cmVyIGFsbGVyZWRlIHDDpSBwaWQgJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiS3VubmUgaWtrZSBvcHJldHRlIHVuaXgtc3Ryw7htc29ra2VsOiAlcyIKKworIzogbWlzYy91dWlkZC5jOjMwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBiaW5kIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJLdW5uZSBpa2tlIGJpbmRlIHVuaXgtc29ra2VsICVzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGxpc3RlbiBvbiB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBseXR0ZSBww6UgdW5peC1zb2trZWwgJXM6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiRmVqbCB2ZWQgbMOmc25pbmcgZnJhIGtsaWVudCwgbGVuID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIm9wZXJhdGlvbiAlZCwgaW5kZ8OlZW5kZSBudW0gPSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQ6ICVzXG4iCittc2dzdHIgIk9wcmV0dGV0IHRpZHMtVVVJRDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM5MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgcmFuZG9tIFVVSUQ6ICVzXG4iCittc2dzdHIgIk9wcmV0dGV0IHZpbGvDpXJsaWcgVVVJRDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICJPcHJldHRldCB0aWRzIFVVSUQgJXMgb2cgZWZ0ZXJmw7hsZ2VuZGUgVVVJRFxuIgorbXNnc3RyWzFdICJPcHJldHRldCB0aWRzIFVVSUQgJXMgb2cgJWQgZWZ0ZXJmw7hsZ2VuZGUgVVVJRCdlclxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIk9wcmV0dGV0ICVkIFVVSUQnZXI6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvcGVyYXRpb24gJWRcbiIKK21zZ3N0ciAiVWd5bGRpZyBvcGVyYXRpb24gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIlVneWxkaWd0IHRhbDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNhbGxpbmcgdXVpZGQgZGFlbW9uICglcyk6ICVzXG4iCittc2dzdHIgIkRlciBvcHN0b2QgZW4gZmVqbCB2ZWQga2FsZCB0aWwgdXVpZGQtZMOmbW9uICglcyk6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIlcyBvZyBlZnRlcmbDuGxnZW5kZSBVVUlEXG4iCittc2dzdHJbMV0gIiVzIG9nIGVmdGVyZsO4bGdlbmRlICVkIFVVSUQnZXJcbiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICJMaXN0ZSBvdmVyIFVVSUQnZXI6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiVXZlbnRldCBzdmFybMOmbmdkZSBmcmEgc2VydmVyICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiS3VubmUgaWtrZSBkcsOmYmUgdXVpZGQgZGVyIGvDuHJlciBww6UgcGlkICVkOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJEcsOmYnRlIHV1aWRkIGRlciBrw7hyZXIgcMOlIHBpZCAlZFxuIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIkJydWc6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZGV2aWNlIFstYnwtc3xuZXdfc2l6ZV0gIgorIlsteiB1bmRvX2ZpbGVdXG4iCisiXG4iCittc2dzdHIgIiIKKyJCcnVnOiAlcyBbLWQgZmVqbHPDuGduaW5nc2ZsYWddIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBlbmhlZCAiCisiW255X3N0w7hycmVsc2VdXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJVZHZpZGVyIGlrbnVkZS10YWJlbGxlbiIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICJPbWFsbG9rZXJlciBibG9ra2UiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiU2thbm5lciBpa251ZGUtdGFiZWwiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODEKK21zZ2lkICJVcGRhdGluZyBpbm9kZSByZWZlcmVuY2VzIgorbXNnc3RyICJPcGRhdGVyZXIgaWtudWRlLXJlZmVyZW5jZXIiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIkZseXR0ZXIgaWtudWRlLXRhYmVsIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJVa2VuZHQgZ2VubmVtbMO4Yj8hPyIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIkJlZ3luZCBnZW5uZW1sw7hiICVkIChtYWtzLiA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICJ1bmRlciDDpWJuaW5nIGFmICVzIgorCisjOiByZXNpemUvbWFpbi5jOjM3MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICJ1bmRlciBpbmRoZW50ZWxzZSBhZiBzdGF0LWluZm9ybWF0aW9uIGZvciAlcyIKKworIzogcmVzaXplL21haW4uYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZiAlcycgZmlyc3QuXG4iCisiXG4iCittc2dzdHIgIiIKKyJrw7hyIHZlbmxpZ3N0IMK7ZTJmc2NrIC1mICVzwqsgZsO4cnN0LlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIkVzdGltZXJldCBtaW5pbXVtc3N0w7hycmVsc2UgZm9yIGZpbHN5c3RlbWV0OiAlbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgIlVneWxkaWcgbnkgc3TDuHJyZWxzZTogJXNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiTnkgc3TDuHJyZWxzZSBmb3Igc3RvciB0aWwgYXQgYmxpdmUgdWR0cnlrIHRpIDMyLWJpdFxuIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiTnkgc3TDuHJyZWxzZSBlciBtaW5kcmUgZW5kIG1pbmltdW0gKCVsbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgY29udGFpbmluZyBwYXJ0aXRpb24gKG9yIGRldmljZSkgaXMgb25seSAlbGx1ICglZGspIGJsb2Nrcy5cbiIKKyJZb3UgcmVxdWVzdGVkIGEgbmV3IHNpemUgb2YgJWxsdSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiS3ZvdGFmdW5rdGlvbmVuIGthbiBrdW4gw6ZuZHJlcyBuw6VyIGZpbHN5c3RlbWVyIGVyIGFmbW9udGVyZXQuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIkZpbHN5c3RlbWV0IGVyIGFsbGVyZWRlICVsbHUgKCVkayggYmxva2tlIGxhbmd0LiBJbnRldCBhdCBnw7hyZSFcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBoYXIgYWxsZXJlZGUgZW4gam91cm5hbC5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBoYXIgYWxsZXJlZGUgZW4gam91cm5hbC5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICJBbmdpdmVyIHRpZHNwdW5rdCBmb3IgZmlsc3lzdGVtZXRzIHNpZHN0ZSBrb250cm9sIHRpbCAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byAzMi1iaXQuXG4iCittc2dzdHIgIkFuZ2l2ZXIgdGlkc3B1bmt0IGZvciBmaWxzeXN0ZW1ldHMgc2lkc3RlIGtvbnRyb2wgdGlsICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIG9uICVzIGlzIG5vdyAlbGx1ICglZGspIGJsb2NrcyBsb25nLlxuIgorIlxuIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBww6UgJXMgZXIgbnUgJWxsdSAoJWRrKSBibG9ra2UgbGFuZ3QuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byB0cnVuY2F0ZSAlcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAia2VybmUgdW5kZXJzdMO4dHRlciBpa2tlIG55IHN0w7hycmVsc2UgbsOlciBha3RpdiBtZWQgc3BhcnNlX3N1cGVyMiIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXQgcMOlICVzIGVyIG1vbnRlcmV0IHDDpSAlczsgYWt0aXYgKHTDpm5kdCkgw6ZuZHJpbmcgYWYgc3TDuHJyZWxzZSBlciAiCisia3LDpnZldFxuIgorCisjOiByZXNpemUvb25saW5lLmM6OTAKK21zZ2lkICJPbi1saW5lIHNocmlua2luZyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJBa3RpdiAodMOmbmR0KSBmb3JtaW5kc2tlbHNlIGVyIGlra2UgdW5kZXJzdMO4dHRldCIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIkZpbHN5c3RlbWV0IHVuZGVyc3TDuHR0ZXIgaWtrZSBha3RpdiAobsOlciB0w6ZuZHQpIMOmbmRyaW5nIGFmIHN0w7hycmVsc2VuIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAiSWtrZSBub2sgcmVzZXJ2ZXJlZGUgZ2R0LWJsb2trZSBmb3Igw6ZuZHJpbmcgYWYgc3TDuHJyZWxzZSIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiS2VybmUgdW5kZXJzdMO4dHRlciBpa2tlIMOmbmRyaW5nIGFmIHPDpSBzdG9yIHN0w7hycmVsc2UgZm9yIGZpbHN5c3RlbWV0IgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgInVuZGVyIGZvcnPDuGcgcMOlIGF0IMOlYm5lIG1vbnRlcmluZ3NwdW5rdCAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIkRlciBibGV2IGFubW9kdCBvbSBnYW1tZWwgZ3LDpm5zZWZsYWRlIHRpbCDDpm5kcmluZyBhZiBzdMO4cnJlbHNlLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiVGlsbGFkZWxzZSB0aWwgYXQgw6ZuZHJlIGZpbHN5c3RlbWV0cyBzdMO4cnJlbHNlIG7Dpmd0ZXQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIlVuZGVyIGtvbnRyb2wgZm9yIGFrdGl2ICh0w6ZuZHQpIHVuZGVyc3TDuHR0ZWxzZSBhZiBzdMO4cnJlbHNlc8OmbmRyaW5nIgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJLZXJuZSB1bmRlcnN0w7h0dGVyIGlra2UgYWt0aXYgKHTDpm5kdCkgw6ZuZHJpbmcgYWYgc3TDuHJyZWxzZSIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisiVWRmw7hyZXIgZW4gYWt0aXYgKHTDpm5kdCkgw6ZuZHJpbmcgYWYgc3TDuHJyZWxzZW4gYWYgJXMgdGlsICVsbHUgKCVkaykgYmxva2tlLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiVW5kZXIgZm9yc8O4ZyBww6UgYXQgdWR2aWRlIGRlbiBzaWRzdGUgZ3J1cHBlIgorCisjOiByZXNpemUvb25saW5lLmM6Mjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBhZGQgZ3JvdXAgIyVkIgorbXNnc3RyICJVbmRlciBmb3Jzw7hnIHDDpSBhdCB0aWxmw7hqZSBncnVwcGUgIyVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXQgcMOlICVzIGVyIG1vbnRlcmV0IHDDpSAlcywgb2cgYWt0aXYgKHTDpm5kdCkgc3TDuHJyZWxzZXPDpm5kcmluZyBlciAiCisiaWtrZSB1bmRlcnN0w7h0dGV0IHDDpSBkZXR0ZSBzeXN0ZW0uXG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5vZGVzICglbGx1KSBtdXN0IGJlIGxlc3MgdGhhbiAldSIKK21zZ3N0ciAiaWtudWRlciAoJWxsdSkgc2thbCB2w6ZyZSBtaW5kcmUgZW5kICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAicmVzZXJ2ZXJlZGUgYmxva2tlIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgIm1ldGFkYXRhYmxva2tlIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibnllIG1ldGFibG9ra2UiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICJCw7hyIGFsZHJpZyBza2UhIEluZ2VuIHNiIGkgc2lkc3RlIHN1cGVyX3NwYXJzZSBiZz9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIkLDuHIgYWxkcmlnIHNrZSEgVXZlbnRldCBvbGRfZGVzYyBpIHN1cGVyX3NwYXJzZSBiZz9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiQsO4ciBhbGRyaWcgc2tlOiDDpm5kcmluZyBhZiBzdMO4cnJlbHNlIGZvciBpa251ZGUgZXIgw7hkZWxhZ3QhXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiRVhUMkZTLWJpYmxpb3Rla3N2ZXJzaW9uIDEuNDIuMTIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIGV4dDJfZmlsc3lzLXN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciBiYWRibG9ja3NfbGlzdC1zdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBmb3IgYmFkYmxvY2tzX2l0ZXJhdGUtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfc2NhbiBzdHJ1Y3R1cmUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBpbm9kZV9zY2FuLXN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIGlvX2NoYW5uZWwtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciB1bml4IGlvX2NoYW5uZWwtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBmb3IgaW9fbWFuYWdlci1zdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIGJsb2NrX2JpdG1hcC1zdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIGlub2RlX2JpdG1hcC1zdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBmb3IgZ2VuZXJpY19iaXRtYXAtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciB0ZXN0IGlvX2NoYW5uZWwtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIG1hcHBlYmxva2xpc3Rlc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciBpY291bnQtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciBQb3dlcnF1ZXN0IGlvX2NoYW5uZWwtc3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0MiBmaWxlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciBleHQyLWZpbHN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIEV4dDIgSW1hZ2UgSGVhZGVyIgorbXNnc3RyICJGb3JrZXJ0IG1hZ2lzayBudW1tZXIgZm9yIEV4dDItYWZ0cnlrc3Rla3N0aG92ZWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBmb3IgaW5vZGUgaW9fY2hhbm5lbC1zdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIkZvcmtlcnQgbWFnaXNrIG51bW1lciBmb3IgZXh0NCBleHRlbnQtaMOlbmR0YWciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2siCittc2dzdHIgIlVneWxkaWcgbWFnaXNrIG51bW1lciBpIHN1cGVyYmxvayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiRmlsc3lzdGVtZXRzIHJldmlzaW9uIGVyIGZvciBow7hqIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAiRm9yc8O4ZyBww6UgYXQgc2tyaXZlIHRpbCBmaWxzeXN0ZW0gw6VibmV0IGkgc2tyaXZlYmVza3l0dGV0IHRpbHN0YW5kIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzMKK21zZ2lkICJDYW4ndCByZWFkIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJLYW4gaWtrZSBsw6ZzZSBncnVwcGViZXNrcml2ZXJlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiS2FuIGlra2Ugc2tyaXZlIGdydXBwZWJlc2tyaXZlcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIsOYZGVsYWd0IGdydXBwZWJlc2tyaXZlcjogdWd5bGRpZyBibG9rIGZvciBibG9rYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICLDmGRlbGFndCBncnVwcGViZXNrcml2ZXI6IHVneWxkaWcgYmxvayBmb3IgaWtudWRlLWJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICLDmGRlbGFndCBncnVwcGUtYmVza3JpdmVyOiB1Z3lsZGlnIGJsb2sgZm9yIGlrbnVkZS10YWJlbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJLYW4gaWtrZSBza3JpdmUgZW4gaWtudWRlLWJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIkthbiBpa2tlIGzDpnNlIGVuIGlrbnVkZS1iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorbXNnaWQgIkNhbid0IHdyaXRlIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJLYW4gaWtrZSBza3JpdmUgZW4gYmxva2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiS2FuIGlra2UgbMOmc2UgZW4gYmxva2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIkthbiBpa2tlIHNrcml2ZSBlbiBpa251ZGUtdGFiZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIkthbiBpa2tlIGzDpnNlIGVuIGlrbnVkZS10YWJlbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICJLYW4gaWtrZSBsw6ZzZSBuw6ZzdGUgaWtudWRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgIkZpbHN5c3RlbSBoYXIgdXZlbnRldCBibG9rc3TDuHJyZWxzZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJFWFQyLW1hcHBlIMO4ZGVsYWd0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIkZvcnPDuGcgcMOlIGF0IGzDpnNlIGJsb2sgZnJhIGZpbHN5c3RlbSByZXN1bHRlcmVkZSBpIGtvcnQgbMOmc25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiRm9yc8O4ZyBww6UgYXQgc2tyaXZlIGJsb2sgdGlsIGZpbHN5c3RlbSByZXN1bHRlcmVkZSBpIGtvcnQgc2tyaXZuaW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIkluZ2VuIGxlZGlnIHBsYWRzIGkgbWFwcGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiSWtudWRlLWJpdG1hcCBlciBpa2tlIGluZGzDpnN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQmxvay1iaXRtYXAgZXIgaWtrZSBpbmRsw6ZzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIlVneWxkaWd0IGlrbnVkZS1hbnRhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIlVneWxkaWd0IGJsb2thbnRhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgIkludGVybiBmZWpsIGkgZXh0MmZzX2V4cGFuZF9kaXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiSWtrZSBub2sgcGxhZHMgdGlsIGF0IGJ5Z2dlIGZvcmVzbMOlZXQgZmlsc3lzdGVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTYKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJVZ3lsZGlndCBibG9rYW50YWwgdmlkZXJlc2VuZHQgdGlsIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJVZ3lsZGlndCBibG9rYW50YWwgdmlkZXJlc2VuZHQgdGlsIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICJVZ3lsZGlndCBibG9rYW50YWwgdmlkZXJlc2VuZHQgdGlsIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiVWd5bGRpZ3QgaWtudWRlYW50YWwgdmlkZXJlc2VuZHQgdGlsIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJVZ3lsZGlndCBpa251ZGVhbnRhbCB2aWRlcmVzZW5kdCB0aWwgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIlVneWxkaWd0IGlrbnVkZWFudGFsIHZpZGVyZXNlbmR0IHRpbCBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MgorbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGJsb2NrIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjMKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBpbm9kZSBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiVWd5bGRpZyBpbmRpcmVrdGUgYmxvayBmdW5kZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKK21zZ2lkICJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY5Cittc2dpZCAiSWxsZWdhbCBvciBtYWxmb3JtZWQgZGV2aWNlIG5hbWUiCittc2dzdHIgIlVneWxkaWd0IGVsbGVyIGZvcmtlcnQgdWRmb3JtZXQgZW5oZWRzbmF2biIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJFbiBibG9rZ3J1cHBlIG1hbmdsZXIgZW4gaWtudWRldGFiZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MQorbXNnaWQgIlRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjczCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzYKK21zZ2lkICJUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBub3QgaGFuZGxlIHRoaXMgY2FzZSIKK21zZ3N0ciAiVGlsYmFnZWthbGRzZnVua3Rpb25lbiB2aWwgaWtrZSBow6VuZHRlcmUgZGV0dGUgdGlsZsOmbGRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzcKK21zZ2lkICJUaGUgaW5vZGUgaXMgZnJvbSBhIGJhZCBibG9jayBpbiB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIklrbnVkZW4gZXIgZnJhIGVuIHVneWxkaWcgYmxvayBpIGlrbnVkZXRhYmVsbGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBoYXIgZnVua3Rpb25lciBkZXIgaWtrZSBlciB1bmRlcnN0w7h0dGV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiRmlsc3lzdGVtZXQgaGFyIHNrcml2ZWJlc2t5dHRlZGUgZnVua3Rpb25lciBkZXIgaWtrZSBlciB1bmRlcnN0w7h0dGV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODAKK21zZ2lkICJJTyBDaGFubmVsIGZhaWxlZCB0byBzZWVrIG9uIHJlYWQgb3Igd3JpdGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODMKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIkV4dDItaWtudWRlIGVyIGlra2UgZW4gbWFwcGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIkZvciBtYW5nZSByZWZlcmVuY2VyIGkgdGFiZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICJGaWwgaWtrZSBmdW5kZXQgYWYgZXh0Ml9sb29wdXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIkZpbCDDpWJuIGVyIHNrcml2ZWJlc2t5dHRldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg5Cittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJFeHQyLW1hcHBlYmxvayBibGV2IGlra2UgZnVuZGV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiRXh0Mi1tYXBwZSBmaW5kZXMgYWxsZXJlZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICJFeHQyLWJpYmxpb3Rla3NmdW5rdGlvbiBlciBpa2tlIGltcGxlbWVudGVyZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MgorbXNnaWQgIlVzZXIgY2FuY2VsIHJlcXVlc3RlZCIKK21zZ3N0ciAiRGVyIGJsZXYgYW5tb2R0IG9tIGJydWdlcmFmYnJ5ZGVsc2UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJFeHQyLWZpbCBlciBmb3Igc3RvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk0Cittc2dpZCAiU3VwcGxpZWQgam91cm5hbCBkZXZpY2Ugbm90IGEgYmxvY2sgZGV2aWNlIgorbXNnc3RyICJJbmRlaG9sZHQgam91cm5hbGVuaGVkIGVyIGlra2UgZW4gYmxva2VuaGVkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJKb3VybmFsc3VwZXJibG9rIGJsZXYgaWtrZSBmdW5kZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiSm91cm5hbCBza2FsIHbDpnJlIHDDpSBtaW5kc3QgMTAyNCBibG9ra2UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAiSWtrZSB1bmRlcnN0w7h0dGV0IGpvdXJuYWx2ZXJzaW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgIkZlamwgdW5kZXIgaW5kbMOmc25pbmcgYWYgZWtzdGVybiBqb3VybmFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiSm91cm5hbCBibGV2IGlra2UgZnVuZGV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIk1hcHBlaGFzaCBlciBpa2tlIHVuZGVyc3TDuHR0ZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIklsbGVnYWwgdWR2aWRldCBhdHRyaWJ1dGJsb2thbnRhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICJLYW4gaWtrZSBvcHJldHRlIGZpbHN5c3RlbSBtZWQgZGV0IGFubW9kdGUgYW50YWwgaWtudWRlciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAiRTJpbWFnZS3DuGplYmxpa3NiaWxsZWRlIGVyIGlra2UgaSBicnVnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIkZvciBtYW5nZSByZXNlcnZlcmVkZSBncnVwcGViZXNrcml2ZXJibG9ra2UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiw4ZuZHJpbmcgYWYgc3TDuHJyZWxzZSBmb3IgaWtudWRlIGVyIMO4ZGVsYWd0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJQcsO4dmVkZSBhdCBzw6Z0dGUgYmxvay1ibWFwIG1lZCBtYW5nbGVuZGUgaW5kaXJla3RlIGJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDcKK21zZ2lkICJUREI6IFN1Y2Nlc3MiCittc2dzdHIgIlREQjogU3VjY2VzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICJUREI6IMOYZGVsYWd0IGRhdGFiYXNlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA5Cittc2dpZCAiVERCOiBJTyBFcnJvciIKK21zZ3N0ciAiVERCOiBJTy1mZWpsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IEzDpXNlZmVqbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERCOiBJa2tlIG5vayBodWtvbW1lbHNlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJUREI6IFBvc3QgZmluZGVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IEzDpXMgZmluZGVzIHDDpSBhbmRyZSBuw7hnbGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBVZ3lsZGlnIHBhcmFtZXRlciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJUREI6IFBvc3QgZmluZGVzIGlra2UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjogU2tyaXZuaW5nIGlra2UgdGlsbGFkdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiRXh0MmZzLW1hcHBlYmxva2xpc3RlIGVyIHRvbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiRm9ya2VydCBtYWdpLWFudGFsIGZvciBleHQ0LXVkc3Ryw6ZrbmluZ2VucyBnZW10ZSBzdGkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiRm9ya2VydCBtYWdpLWFudGFsIGZvciA2NC1iaXQgZ2VuZXJpc2sgYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBpbm9kZSBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMxCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaW5kZXgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMgorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQwCittc2dpZCAiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICJJL08ta2FuYWwgdW5kZXJzdMO4dHRlciBpa2tlIDY0LWJpdCBibG9rbnVtcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisiS2FuIGlra2Uga29udHJvbGxlcmUgb20gZmlsc3l0ZW0gZXIgbW9udGVyZXQgcMOlIGdydW5kIGFmIGVuIG1hbmdsZW5kZSBtdGFiLSIKKyJmaWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIkZpbHN5c3RlbSBlciBmb3Igc3RvcnQgdGlsIGF0IGt1bm5lIGJydWdlIGZvcsOmbGRlZGUgYml0bWFwJ2VyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiB1Z3lsZGlndCBtYWdpLWFudGFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUwCittc2dpZCAiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKK21zZ3N0ciAiTU1QOiBlbmhlZCBha3RpdiBpIMO4amVibGlra2V0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBmc2NrIGvDuHJlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIk1NUDogdW5kZXJnw6VyIGVuIHVrZW5kdCBvcGVyYXRpb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NgorbXNnaWQgIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCittc2dzdHIgIlN0w7hycmVsc2UgZm9yIGJsb2tncnVwcGViZXNrcml2ZXIgZXIgaWtrZSBrb3JyZWt0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgIklrbnVkZW5zIGtvbnRyb2xzdW0gbWF0Y2hlciBpa2tlIGlrbnVkZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIklrbnVkZS1iaXRtYXBlbnMga29udHJvbHN1bSBtYXRjaGVyIGlra2UgYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU5Cittc2dpZCAiRXh0ZW50IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayIKK21zZ3N0ciAiRXh0ZW50Ymxva2tlbnMga29udHJvbHN1bSBtYXRjaGVyIGlra2UgZXh0ZW50LWJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIk1hcHBlYmxvayBoYXIgaWtrZSBwbGFkcyBmb3Iga29udHJvbHN1bSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MQorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIk1hcHBlYmxva2tlbnMga29udHJvbHN1bSBtYXRjaGVyIGlra2UgbWFwcGVibG9rIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICJEZW4gdWR2aWRlZGUgYXR0cmlidXRibG9rcyBrb250cm9sc3VtIG1hdGNodGVyIGlra2UgYmxvayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MworbXNnaWQgIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKK21zZ3N0ciAiU3VwZXJibG9ra2VucyBrb250cm9sc3VtIG1hdGNoZXIgaWtrZSBzdXBlcmJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiVWtlbmR0IGtvbnRyb2xzdW1hbGdvcml0bWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICJNTVAtYmxva2tlbnMga29udHJvbHN1bSBtYXRjaGVyIGlra2UgTU1QLWJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkV4dDItZmlsIGZpbmRlcyBhbGxlcmVkZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJJa251ZGUtYml0bWFwZW5zIGtvbnRyb2xzdW0gbWF0Y2hlciBpa2tlIGJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW5jb3JyZWN0IGhhc2giCittc2dzdHIgIkRlbiB1ZHZpZGVkZSBhdHRyaWJ1dGJsb2tzIGtvbnRyb2xzdW0gbWF0Y2h0ZXIgaWtrZSBibG9rIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJJbGxlZ2FsIHVkdmlkZXQgYXR0cmlidXRibG9rYW50YWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiVWR2aWRlZGV0IGF0dHJpYnV0bsO4Z2xlIGJsZXYgaWtrZSBmdW5kZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIlV0aWxzdHLDpmtrZWxpZyBwbGFkcyB0aWwgYXQgbGFncmUgdWR2aWRlZGUgYXR0cmlidXRkYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIkZpbHN5c3RlbSBtYW5nbGVyIGZ1bmt0aW9uZW4gZXh0X2F0dHIgZWxsZXIgaW5saW5lX2RhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIklrbnVkZSBoYXIgaWtrZSBpbmRsZWpyZWRlIGRhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiSW5nZW4gYmxvayBmb3IgZW4gaWtudWRlIG1lZCBpbmRsZWpyZWRlIGRhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJJbmdlbiBsZWRpZyBwbGFkcyBpIGluZGxlanJlZGUgZGF0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRm9ya2VydCBtYWdpc2sgbnVtbWVyIGZvciB1ZHZpZGV0IGF0dHJpYnV0c3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIklrbnVkZSBzZXIgdWQgdGlsIGF0IGluZGVob2xkZSBicmFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIG9mZnNldCIKK21zZ3N0ciAiVWR2aWRldCBhdHRyaWJ1dCBoYXIgZW4gdWd5bGRpZyB2w6ZyZGlmb3Jza3lkbmluZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICJKb3VybmFsZmxhZyBlciBpbmtvbnNpc3RlbnRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkdlbnNrYWIgZmlsIMO4ZGVsYWd0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIkZvcmtlcnQgZ2Vuc2thYiBmaWwgZm9yIGRldHRlIGZpbHN5c3RlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiRmlsc3lzdGVtIGVyIMO4ZGVsYWd0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg2Cittc2dpZCAiQmFkIENSQyBkZXRlY3RlZCBpbiBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiVWd5bGRpZyBDUkMgZGV0ZWt0ZXJldCBpIGZpbHN5c3RlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxva2tlbiBlciDDuGRlbGFndCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIsOGbmRyaW5nIGFmIHN0w7hycmVsc2UgZm9yIGlrbnVkZSBlciDDuGRlbGFndCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIlByb2ZpbCB2ZXJzaW9uIDAuMCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX25vZGUiCittc2dzdHIgIlVneWxkaWcgbWFnaXNrIHbDpnJkaSBpIHByb2ZpbGVfbm9kZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlByb2ZpbHNla3Rpb24gYmxldiBpa2tlIGZ1bmRldCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNAorbXNnaWQgIlByb2ZpbGUgcmVsYXRpb24gbm90IGZvdW5kIgorbXNnc3RyICJQcm9maWxyZWxhdGlvbiBibGV2IGlra2UgZnVuZGV0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE1Cittc2dpZCAiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCittc2dzdHIgIkZvcnPDuGcgcMOlIGF0IHRpbGbDuGplIGVuIHJlbGF0aW9uIHRpbCBrbnVkZSBzb20gaWtrZSBlciBlbiBzZWt0aW9uIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE2Cittc2dpZCAiQSBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIGhhcyBhIG5vbi16ZXJvIHZhbHVlIgorbXNnc3RyICJFdCBwcm9maWxzZWt0aW9uaG92ZWQgaGFyIGVuIHbDpnJkaSBmb3Jza2VsbGlnIGZyYSBudWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTcKK21zZ2lkICJCYWQgbGlua2VkIGxpc3QgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJVZ3lsZGlnIGzDpm5rZXQgbGlzdGUgaSBwcm9maWxzdHJ1a3R1cmVyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiVWd5bGRpZyBncnVwcGVuaXZlYXUgaSBwcm9maWxzdHJ1a3R1cmVyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE5Cittc2dpZCAiQmFkIHBhcmVudCBwb2ludGVyIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiVWd5bGRpZyBvdmVycGVnZXIgaSBwcm9maWxzdHJ1a3R1cmVyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGUgaXRlcmF0b3IiCittc2dzdHIgIlVneWxkaWcgbWFnaXNrIHbDpnJkaSBpIHByb2ZpbGl0ZXJhdG9yIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAiS2FuIGlra2UgYW5naXZlIHbDpnJkaSBww6Ugc2VrdGlvbmtudWRlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICJVZ3lsZGlndCBhcmd1bWVudCB2aWRlcmVzZW5kdCB0aWwgcHJvZmlsYmlibGlvdGVrIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIkZvcnPDuGcgcMOlIGF0IMOmbmRyZSBlbiBza3JpdmViZXNreXR0ZXQgcHJvZmlsIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICJQcm9maWxzIHNla3Rpb25zdGVrc3Rob3ZlZCBlciBpa2tlIHDDpSB0b3BuaXZlYXUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjUKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSBzZWN0aW9uIGhlYWRlciIKK21zZ3N0ciAiU3ludGFrc2ZlamwgaSBwcm9maWxzIHNla3Rpb25zdGVrc3Rob3ZlZCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICJTeW50YWtzZmVqbCBpIHByb2ZpbHJlbGF0aW9uIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJFa3N0cmEgbHVra2VwYXJlbnRlcyBpIHByb2ZpbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOAorbXNnaWQgIk1pc3Npbmcgb3BlbiBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJNYW5nbGVuZGUgw6ViZW4gcGFyZW50ZXMgaSBwcm9maWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJVZ3lsZGlnIG1hZ2lzayB2w6ZyZGkgaSBwcm9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCittc2dzdHIgIlVneWxkaWcgbWFnaXNrIHbDpnJkaSBpIHByb2ZpbGVfc2VjdGlvbl90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkl0ZXJhdGlvbiB2aWEgYWxsZSB0b3BuaXZlYXVzZWt0aW9uZXIgZXIgaWtrZSB1bmRlcnN0w7h0dGV0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJVZ3lsZGlnIHByb2ZpbGVfc2VjdGlvbi1vYmpla3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICJJa2tlIGZsZXJlIGFmc25pdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICJVZ3lsZGlndCBuYXZuZXPDpnQgc2VuZHQgdGlsIGZvcmVzcMO4cmdzZWxzcnV0aW5lIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgIkluZ2VuIHByb2ZpbGZpbCBlciDDpWJlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfdCIKK21zZ3N0ciAiw5hkZWxhZ3QgbWFnaXNrIHbDpnJkaSBpIHByb2ZpbGVfZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM3Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgIkt1bm5lIGlra2Ugw6VibmUgcHJvZmlsZmlsIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM4Cittc2dpZCAiU2VjdGlvbiBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiU2VrdGlvbiBmaW5kZXMgYWxsZXJlZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIlVneWxkaWcgYm9vbGVzayB2w6ZyZGkiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIlVneWxkaWd0IGhlbHRhbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICLDmGRlbGFndCBtYWdpc2sgdsOmcmRpIGkgcHJvZmlsZV9maWxlX2RhdGFfdCIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIG9uICVzIgorbXNnc3RyICJcdHNpZHN0IG1vbnRlcmV0IHDDpSAlcyBkZW4gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHRzaWRzdCBtb250ZXJldCBww6UgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx0b3ByZXR0ZXQgZGVuICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vZGlmaWVkIG9uICVzIgorbXNnc3RyICJcdHNpZHN0IMOmbmRyZXQgZGVuICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRm91bmQgYSAlcyBwYXJ0aXRpb24gdGFibGUgaW4gJXNcbiIKK21zZ3N0ciAiRmFuZHQgZW4gJXMtcGFydGl0aW9uc3RhYmVsIGkgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIkZpbGVuICVzIGZpbmRlcyBpa2tlIG9nIGluZ2VuIHN0w7hycmVsc2UgYmxldiBhbmdpdmV0LlxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgcmVndWxhciBmaWxlICVzXG4iCittc2dzdHIgIk9wcmV0dGVyIG5vcm1hbCBmaWwgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJLdW5uZSBpa2tlIMOlYm5lICVzOiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiRW5oZWRlbiBmaW5kZXMgw6ViZW5iYXJ0IGlra2U7IHNwZWNpZmljZXJlZGUgZHUgZGVuIGtvcnJla3Q/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAnJXMnXG4iCittc2dzdHIgIiVzIGluZGVob2xkZXIgZXQgJXMtZmlsc3lzdGVtIG1lZCBuYXZuZXQgwrslc8KrXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGluZGVob2xkZXIgZXQgJXMtZmlsc3lzdGVtXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgaW5kZWhvbGRlciDCuyVzwqstZGF0YVxuIgorCisjfiBtc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCisjfiBtc2dzdHIgIkvDuHIgdmVubGlnc3QgZTJmc2NrIHDDpSBmaWxzeXN0ZW1ldC5cbiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9kZS5nbW8gYi9lMmZzcHJvZ3MvcG8vZGUuZ21vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1YzI0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZGUuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9kZS5wbyBiL2UyZnNwcm9ncy9wby9kZS5wbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTJmZGNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2RlLnBvCkBAIC0wLDAgKzEsODY2NSBAQAorIyBHZXJtYW4gdHJhbnNsYXRpb24gb2YgZTJmc3Byb2dzCisjIENvcHlyaWdodCAoQykgMTk5NiBUaGVvZG9yZSBUc28gKG1zZ2lkcykKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIworIyBPbGFmIEtsZW1rZSA8b2xrZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+LDIwMDIuCisjIE1hcmMgTGFuZ2VyIDxtYXJjQG1hcmNsYW5nZXIuZGU+LDIwMDMuCisjIFBoaWxpcHAgVGhvbWFzIDxwdGhAc3VzZS5kZT4sIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUKKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MtMS40Mi4xMi1wcmUyXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTA4LTEwIDA5OjE1KzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IFBoaWxpcHAgVGhvbWFzIDxwdGhAc3VzZS5kZT5cbiIKKyJMYW5ndWFnZS1UZWFtOiBHZXJtYW4gPHRyYW5zbGF0aW9uLXRlYW0tZGVAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgorIkxhbmd1YWdlOiBkZVxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAi4oCeQmFkIGJsb2Nr4oCcICV1IGF1w59lcmhhbGIgZGVzIGfDvGx0aWdlbiBCZXJlaWNoczsgaWdub3JpZXJ0LlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInfDpGhyZW5kIGRlciBsb2dpc2NoZW4gUHLDvGZ1bmcgZGVzIOKAnkJhZCBCbG9ja+KAnC1Jbm9kZXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInfDpGhyZW5kIGRlcyBMZXNlbnMgZGVzIOKAnkJhZCBCbG9ja+KAnC1Jbm9kZXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsICVzIHp1IMO2ZmZuZW4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAiYmVpbSBWZXJzdWNoLCDigJ4lc+KAnCBtaXR0ZWxzIOKAnnBvcGVu4oCcIHp1IMO2ZmZuZW4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXIg4oCeQmFkIEJsb2Nr4oCcLUxpc3RlIGF1cyBkZXIgRGF0ZWkiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImJlaW0gVXBkYXRlbiBkZXMg4oCeQmFkIEJsb2Nr4oCcLUlub2RlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIiIKKyJXYXJudW5nOiBOaWNodCB6dWzDpHNzaWdlciBCbG9jayAldSBpbSDigJ5CYWQgQmxvY2tz4oCcLUlub2RlIGdlZnVuZGVuISAiCisiQmVyZWluaWd0LlxuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJMZXNlZmVobGVyIC0gQmxvY2sgJWx1ICglcykgd8OkaHJlbmQgJXMuICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiTGVzZWZlaGxlciAtIEJsb2NrICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiRmVobGVyIGlnbm9yaWVyZW4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAiUsO8Y2tzY2hyZWliZW4gZXJ6d2luZ2VuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiU2NocmVpYmZlaGxlciAtIEJsb2NrICVsdSAoJXMpIHfDpGhyZW5kICVzLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJTY2hyZWliZmVobGVyIC0gQmxvY2sgJWx1ICglcykuICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgImxlZXJlIFZlcnplaWNobmlzYmzDtmNrZSIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NjIKK21zZ2lkICJlbXB0eSBkaXIgbWFwIgorbXNnc3RyICJsZWVyZSBWZXJ6ZWljaG5pc2xpc3RlIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAibGVlcmVyIFZlcnplaWNobmlzYmxvY2sgJXUgKCMlZCkgaW0gSW5vZGUgJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczogJXMgRGF0ZWluYW1lIG5ibG9ja3MgQmxvY2tncsO2w59lXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIkJsb2NrYW56YWhsIG5pY2h0IHp1bMOkc3NpZyFcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciAoc2l6ZT0lZClcbiIKK21zZ3N0ciAiRXMga29ubnRlIGtlaW4gQmxvY2twdWZmZXIgKEdyw7bDn2U9JWQpIHJlc2VydmllcnQgd2VyZGVuXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKKyMsIGZ1enp5Cittc2dpZCAiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIgorbXNnc3RyICLigJ5yZWd1bGFyIGZpbGUgaW5vZGXigJwtTGlzdGUiCisKKyM6IGUyZnNjay9mbHVzaGIuYzozNQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgZGlza1xuIgorbXNnc3RyICJBdWZydWY6ICVzIExhdWZ3ZXJrXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIkJMS0ZMU0JVRiBpb2N0bCBuaWNodCB1bnRlcnN0w7x0enQhIFB1ZmZlciBrYW5uIG5pY2h0IGdlbGVlcnQgd2VyZGVuLlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gZGV2aWNlXG4iCittc2dzdHIgIkF1ZnJ1ZjogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gR2Vyw6R0XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAiYmVpbSDDlmZmbmVuIHZvbiAlcyBmw7xyIGRpZSBQdWZmZXItTGVlcnVuZyIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAid8OkaHJlbmQgZGVzIFLDvGNrc2NocmVpYmV2ZXJzdWNoZXMgYXVmICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAiYmVpbSBWZXJzdWNoLCAlcyB6dSDDtmZmbmVuIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImJlaW0gU3RhcnQgZGVzIElub2RlLVNjYW5zIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAiYmVpbSBMYWRlbiBkZXMgbsOkY2hzdGVuIElub2RlcyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTM2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBzY2FubmVkLlxuIgorbXNnc3RyICIldSBJbm9kZXMgdW50ZXJzdWNodC5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJKb3VybmFsLVN1cGVyYmxvY2sgd2lyZCBnZWxlc2VuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6IGtlaW5lbiBnw7xsdGlnZW4gSm91cm5hbC1TdXBlcmJsb2NrIGdlZnVuZGVuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogRGFzIEpvdXJuYWwgaXN0IHp1IGt1cnpcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiBKb3VybmFsIHdpcmQgd2llZGVyaGVyZ2VzdGVsbHRcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiVzOiBEYXMgSm91cm5hbCBpc3QgbnVyIGxlc2JhciAtIEtlaW5lIFdpZWRlcmhlcnN0ZWxsdW5nXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsICVzIGVybmV1dCB6dSDDtmZmbmVuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImFlcndlaXRlcnRlIEF0dHJpYnV0ZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAiQUZlaGxlciBiZWltIFJlc2VydmllcmVuIHZvbiBQbGF0eiBmw7xyIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYkJsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgIkJCaXRtYXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE3Cittc2dpZCAiY2NvbXByZXNzIgorbXNnc3RyICJja29tcHJpbWllcmVuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDS29uZmxpa3RlIG1pdCBlaW5lbSBhbmRlcmVuIERhdGVpc3lzdGVtYmxvY2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE5Cittc2dpZCAiZGRpcmVjdG9yeSIKK21zZ3N0ciAiZFZlcnplaWNobmlzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEZ2Vsw7ZzY2h0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZUVpbnRyYWciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVAZSDigJ4lRG7igJwgaW4gJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZkRhdGVpc3lzdGVtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRmbDvHIgQGkgJWkgKCVRKSBpc3QiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnR3J1cHBlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAiaEhUUkVFIEBkaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpSW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklpbGxlZ2FsKGVyKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiakpvdXJuYWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImxsb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMQorbXNnaWQgIkxpcyBhIGxpbmsiCittc2dzdHIgIkxpc3QgZWluZSBWZXJrbsO8cGZ1bmciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCittc2dpZCAibW11bHRpcGx5LWNsYWltZWQiCittc2dzdHIgIm1tZWhyZmFjaCBiZWFuc3BydWNodCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibnVuZ8O8bHRpZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm92ZXJ3YWlzdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicFByb2JsZW0gaW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICJxUXVvdGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgInJSb290IEBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNzb2xsdGUgc2VpbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAiU1N1cGVyQGIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInVuaWNodCB2ZXJidW5kZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidkdlcsOkdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDIKK21zZ2lkICJ4ZXh0ZW50IgorbXNnc3RyICJ4RXJ3ZWl0ZXJ1bmciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICJ6bWl0IEzDpG5nZSBOdWxsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjxEZXIgTlVMTC1Jbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU1Cittc2dpZCAiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIKK21zZ3N0ciAiPERlciDigJ5CYWQgQmxvY2tz4oCcLUlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8RGllIEJlbnV0emVycXVvdGEtSW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorbXNnaWQgIjxUaGUgZ3JvdXAgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8RGllIEdydXBwZW5xdW90YS1Jbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxEZXIg4oCeYm9vdCBsb2FkZXLigJwtSW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPERlciDigJ51bmRlbGV0ZSBkaXJlY3RvcnnigJwtSW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIjxEZXMg4oCeZ3JvdXAgZGVzY3JpcHRvcuKAnC1Jbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPERlciBKb3VybmFsLUlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjxEZXIgcmVzZXJ2aWVydGUgSW5vZGUgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPERlciByZXNlcnZpZXJ0ZSBJbm9kZSAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJyZWd1bMOkcmUgRGF0ZWkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM1Cittc2dpZCAiZGlyZWN0b3J5IgorbXNnc3RyICJWZXJ6ZWljaG5pcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJ6ZWljaGVub3JpZW50aWVydGVzIEdlcsOkdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzkKK21zZ2lkICJibG9jayBkZXZpY2UiCittc2dzdHIgImJsb2Nrb3JpZW50aWVydGVzIEdlcsOkdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICJuYW1lZCBwaXBlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgInN5bWJvbGlzY2hlIFZlcmtuw7xwZnVuZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAiU29ja2V0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJ1bmJla2FubnRlciBEYXRlaXR5cCBtaXQgTW9kdXMgMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJpbmRpcmVrdGUgQmzDtmNrZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjQKK21zZ2lkICJkb3VibGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImRvcHBlbHQgaW5kaXJla3RlIEJsw7Zja2UiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJkcmVpZmFjaCBpbmRpcmVrdGUgQmzDtmNrZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjgKK21zZ2lkICJ0cmFuc2xhdG9yIGJsb2NrIgorbXNnc3RyICLDnGJlcnNldHplcmJsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgIkJsb2NrIE5yLiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICJtZWhyZmFjaCBiZWFuc3BydWNodGUgSW5vZGUtTGlzdGUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgImludGVybmVyIEZlaGxlcjogZHVwX2JsayBmw7xyICVsbHUgd3VyZGUgbmljaHQgZ2VmdW5kZW5cbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkwMworbXNnaWQgInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIKK21zZ3N0ciAienVyw7xja2dlZ2ViZW4gdm9uIGNsb25lX2ZpbGVfYmxvY2siCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgImludGVybmVyIEZlaGxlcjogRUEtQmxvY2tsaXN0ZSBmw7xyICVsbHUgd3VyZGUgbmljaHQgZ2VmdW5kZW4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICJJbnRlcm5lciBGZWhsZXI6IEVBLUlub2RlbGlzdGUgZsO8ciAldSB3dXJkZSBuaWNodCBnZWZ1bmRlbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJWZXJ6ZWljaG5pc2Jsb2NrIHdpcmQgZ2VsZXNlbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIuKAnmluLXVzZSBpbm9kZeKAnC1MaXN0ZSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIuKAnmRpcmVjdG9yeSBpbm9kZeKAnC1MaXN0ZSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIuKAnnJlZ3VsYXIgZmlsZSBpbm9kZeKAnC1MaXN0ZSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAi4oCeaW4tdXNlIGJsb2Nr4oCcLUxpc3RlIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCisjLCBmdXp6eQorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiTWV0YWRhdGVuLUJsw7Zja2UiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgIklub2RlLVNjYW4gd2lyZCBnZXN0YXJ0ZXQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJiZWltIExlc2VuIGRlcyBuw6RjaHN0ZW4gSW5vZGVzIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICJEdXJjaGdhbmcgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAiaW5kaXJla3RlIEJsw7Zja2Ugdm9uIElub2RlICV1IHdlcmRlbiBnZWxlc2VuIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAiZmVobGVyaGFmdGUgSW5vZGUtTGlzdGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJJbm9kZSBpbiDigJ5CYWQgQmxvY2tz4oCcLUxpc3RlIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAiaeKAnm1hZ2ljIGlub2Rl4oCcLUxpc3RlIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTMxCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAiCittc2dzdHIgIm1laHJmYWNoIHJlZmVyZW56aWVydGUgQmxvY2tsaXN0ZSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAiZXh0IGF0dHIgYmxvY2sgbWFwIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IGVyd2FydGV0ZSAlNmx1IGVyaGllbHQgcGh5cyAlNmx1IChCbG9ja2FuemFobCAlbGxkKVxuIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICJCbG9jay1CaXRtYXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgIklub2RlLUJpdG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJJbm9kZS1UYWJlbGxlIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIkR1cmNoZ2FuZyAyIgorCisjOiBlMmZzY2svcGFzczIuYzoxMDQyIGUyZnNjay9wYXNzMi5jOjEyMDcKK21zZ2lkICJDYW4gbm90IGNvbnRpbnVlLiIKK21zZ3N0ciAiRGFzIFByb2dyYW1tIGthbm4gbmljaHQgZm9ydGZhaHJlbi4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgIuKAnmlub2RlIGRvbmXigJwtQml0bWFwIgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICJQZWFrLU1lbW9yeSIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJEdXJjaGdhbmcgMyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICLigJ5pbm9kZSBsb29wIGRldGVjdGlvbuKAnC1CaXRtYXAiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiRHVyY2hnYW5nIDQiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICJEdXJjaGdhbmcgNSIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTA0Cittc2dpZCAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEKK21zZ2lkICIobm8gcHJvbXB0KSIKK21zZ3N0ciAiKG5pY2h0IGludGVyYWt0aXYpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyCittc2dpZCAiRml4IgorbXNnc3RyICJSZXBhcmllcmVuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIkJlcmVpbmlnZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQKK21zZ2lkICJSZWxvY2F0ZSIKK21zZ3N0ciAiWnVyw7xja3NldHplbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NQorbXNnaWQgIkFsbG9jYXRlIgorbXNnc3RyICJGcmVpZ2ViZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIkVyd2VpdGVybiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIk5hY2ggL2xvc3QrZm91bmQgdmVyYmluZGVuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJFcnN0ZWxsZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkKK21zZ2lkICJTYWx2YWdlIgorbXNnc3RyICJSZXR0ZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiVmVya8O8cnplbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICJJbm9kZSBiZXJlaW5pZ2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyCittc2dpZCAiQWJvcnQiCittc2dzdHIgIkFiYnJlY2hlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICJBdWZ0ZWlsZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAiRm9ydHNldHplbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICJNZWhyZmFjaCByZWZlcmVuemllcnRlIEJsw7Zja2Ugd2VyZGVuIGdla2xvbnQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiRGF0ZWkgbMO2c2NoZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAiQXVzZ2FiZW4gdW50ZXJkcsO8Y2tlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAiVHJlbm5lbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OQorbXNnaWQgIkNsZWFyIEhUcmVlIGluZGV4IgorbXNnc3RyICJEZXIgSFRyZWUtSW5kZXggd2lyZCBiZXJlaW5pZ3QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiWnVyw7xja3NldHplbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKE5JQ0hUUykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAiUkVQQVJJRVJUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiQkVSRUlOSUdUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICJaVVLDnENLR0VTRVRaVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAiRlJFSUdFR0VCRU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAiRVJXRUlURVJUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIldJRURFUiBWRVJCVU5ERU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICJBTkdFTEVHVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NworbXNnaWQgIlNBTFZBR0VEIgorbXNnc3RyICJHRVJFVFRFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAiQUJHRVNDSE5JVFRFTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0RFIEJFUkVJTklHVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIkFCR0VCUk9DSEVOIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxCittc2dpZCAiU1BMSVQiCittc2dzdHIgIkFCR0VTUEFMVEVOIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAiRVMgV0lSRCBGT1JUR0VGQUhSRU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMKK21zZ2lkICJNVUxUSVBMWS1DTEFJTUVEIEJMT0NLUyBDTE9ORUQiCittc2dzdHIgIk1FSFJGQUNIIFJFRkVSRU5aSUVSVEUgQkzDlkNLRSBXVVJERU4gR0VLTE9OVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAiREFURUkgV1VSREUgR0VMw5ZTQ0hUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiVU5URVJEUsOcQ0tUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIkdFVFJFTk5UIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3Cittc2dpZCAiSFRSRUUgSU5ERVggQ0xFQVJFRCIKK21zZ3N0ciAiSFRSRUUtSU5ERVggQkVSRUlOSUdUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiV0lSRCBXSUVERVIgQVVGR0VCQVVUIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJCbG9jay1CaXRtYXAgZsO8ciBHcnVwcGUgJWcgaXN0IG5pY2h0IGluIGRlciBHcnVwcGUuIChCbG9jayAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0Cittc2dpZCAiQGkgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiSW5vZGUtQml0bWFwIGbDvHIgR3J1cHBlICVnIGlzdCBuaWNodCBpbiBkZXIgR3J1cHBlLiAoQmxvY2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIklub2RlLVRhYmVsbGUgZsO8ciBHcnVwcGUgJWcgaXN0IG5pY2h0IGluIGRlciBHcnVwcGUuIChCbG9jayAlYilcbiIKKyJXQVJOVU5HOiBHUk9TU0VSIERBVEVOVkVSTFVTVCBJU1QgTcOWR0xJQ0guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkRlciBTdXBlcmJsb2NrIGlzdCB1bmxlc2JhciBiencuIGJlc2NocmVpYnQga2VpbiBnw7xsdGlnZXMgZXh0Mi9leHQzL2V4dDQtXG4iCisiRGF0ZWlzeXN0ZW0uIFdlbm4gZGFzIEdlcsOkdCBnw7xsdGlnIGlzdCB1bmQgZWluIGV4dDIvZXh0My9leHQ0LVxuIgorIkRhdGVpc3lzdGVtIChrZWluIHN3YXAgb2RlciB1ZnMgdXN3LikgZW50aMOkbHQsIGRhbm4gaXN0IGRlciBTdXBlcmJsb2NrXG4iCisiYmVzY2jDpGRpZ3QsIHVuZCBTaWUga8O2bm50ZW4gdmVyc3VjaGVuLCBlMmZzY2sgbWl0IGVpbmVtIGFuZGVyZW4gU3VwZXJibG9ja1xuIgorInp1IHN0YXJ0ZW46XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb2RlclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyJEaWUgR3LDtsOfZSBkZXMgRGF0ZWlzeXN0ZW1zIChsYXV0IFN1cGVyYmxvY2spIGlzdCAlYiBCbMO2Y2tlLlxuIgorIkRpZSBwaHlzaWthbGlzY2hlIEdyw7bDn2UgZGVzIEdlcsOkdGVzIGlzdCAlYyBCbMO2Y2tlLlxuIgorIkVudHdlZGVyIGlzdCBkZXIgU3VwZXJibG9jayBvZGVyIGRpZSBQYXJ0aW9uc3RhYmVsbGUgYmVzY2jDpGRpZ3QhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkBTLUBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJEaWVzZSBWZXJzaW9uIHZvbiBlMmZzY2sgdW50ZXJzdMO8dHp0IGtlaW5lIHZvbiBCbG9ja2dyw7bDn2VuIHZlcnNjaGllZGVuZSAiCisiRnJhZ21lbnRncsO2w59lbi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja3NfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiQGJzX3Blcl9ncm91cCBpbSBAUyA9ICViLCBzb2xsdGUgJWMgc2VpblxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJmaXJzdF9kYXRhX0BiIGltIEBTID0gJWIsIHNvbGx0ZSAlYyBzZWluXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRhcyBEYXRlaXN5c3RlbSBoYXQga2VpbmUgVVVJRDsgZXMgd2lyZCBlaW5lIGdlbmVyaWVydC5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJIaW53ZWlzOiBXZW5uIG1laHJlcmUgSW5vZGVzIG9kZXIgQml0bWFwLUJsw7Zja2VcbiIKKyJuZXUgZ2VvcmRuZXQgd2VyZGVuIG3DvHNzZW4sIG9kZXIgZWluIFRlaWwgZGVyIElub2RlLVRhYmVsbGVcbiIKKyJ2ZXJzY2hvYmVuIHdlcmRlbiBtdXNzLCBrw7ZubnRlIGVzIGhlbGZlbiwgZTJmc2NrIGVyc3QgZWlubWFsXG4iCisibWl0IGRlciBPcHRpb24g4oCeLWIgJVPigJwgenUgc3RhcnRlbi4gRGFzIFByb2JsZW0ga8O2bm50ZVxuIgorImltIHByaW3DpHJlbiBCbG9ja2dydXBwZW5iZXplaWNobmVyIGxpZWdlbiB1bmQgc2VpbmVcbiIKKyJTaWNoZXJ1bmdza29waWUgaW4gT3JkbnVuZyBzZWluLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiQmVzY2jDpGRpZ3VuZyBnZWZ1bmRlbiBpbSBTdXBlcmJsb2NrLiAoJXMgPSAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWkgZGVyIEZlc3RzdGVsbHVuZyBkZXIgR3LDtsOfZSBkZXMgcGh5c2lzY2hlbiBHZXLDpHQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIkBpLUFuemFobCBpbiBAUyBpc3QgJWksIHNvbGx0ZSAlaiBzZWluLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OAorbXNnaWQgIlRoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQgdW50ZXJzdMO8dHp0IGtlaW5lIERhdGVpdHlwZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiRGVyIFN1cGVyYmxvY2sgaGF0IGVpbiBkZWZla3RlcyBKb3VybmFsIChJbm9kZSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiIgorIkV4dGVybmVzIEpvdXJuYWwgaGF0IG1laHJlcmUgRGF0ZWlzeXN0ZW0tQmVudXR6ZXIgKG5pY2h0IHVudGVyc3TDvHR6dCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbid0IGZpbmQgZXh0ZXJuYWwgam91cm5hbFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMworbXNnaWQgIkNhbid0IGZpbmQgZXh0ZXJuYWwgQGpcbiIKK21zZ3N0ciAiRXh0ZXJuZXMgSm91cm5hbCBrYW5uIG5pY2h0IGdlZnVuZGVuIHdlcmRlblxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiRXh0ZXJuZXMgSm91cm5hbCBoYXQgZWluZW4gdW5nw7xsdGlnZW4gU3VwZXJibG9ja1xuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCittc2dpZCAiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iCittc2dzdHIgIkV4dGVybmVzIEpvdXJuYWwgdW50ZXJzdMO8dHp0IGRpZXNlcyBEYXRlaXN5c3RlbSBuaWNodFxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiRGVyIFN1cGVyYmxvY2sgZGVzIERhdGVpc3lzdGVtLUpvdXJuYWxzIGhhdCBkZW4gdW5iZWthbm50ZW4gVHlwICVOIChuaWNodCAiCisidW50ZXJzdMO8dHp0KS5cbiIKKyJFcyBpc3QgbcO2Z2xpY2gsIGRhc3MgSWhyIGUyZnNjayDDpGx0ZXIgaXN0IHVuZC9vZGVyIGRpZXNlcyBKb3VybmFsLUZvcm1hdCAiCisibmljaHQgdW50ZXJzdMO8dHp0LlxuIgorIkVzIGlzdCBlYmVuc28gbcO2Z2xpY2gsIGRhc3MgZGVyIEpvb3JuYWwtU3VwZXJibG9jayBkZWZla3QgaXN0LlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJEZXIgSm91cm5hbC1TdXBlcmJsb2NrIGlzdCBkZWZla3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorbXNnaWQgIkBTIGhhc19AaiBmbGFnIGlzIGNsZWFyLCBidXQgYSBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICIiCisiRGVyIEJpdHNjaGFsdGVyIGhhc19qb3VybmFsIGltIFN1cGVyYmxvY2sgaXN0IG5pY2h0IGdlc2V0enQsIGFiZXIgZWluXG4iCisiSm91cm5hbCAlcyBpc3Qgdm9yaGFuZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiIgorIkltIFN1cGVyYmxvY2sgaXN0IGRlciBCaXRzY2hhbHRlciDigJ5uZWVkc19yZWNvdmVyeeKAnCBnZXNldHp0LCBhYmVyIGVpbiAiCisiSm91cm5hbFxuIgorImlzdCBuaWNodCB2b3JoYW5kZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICIiCisiRGVyIEJpdHNjaGFsdGVyIOKAnm5lZWRzX3JlY292ZXJ54oCcIGltIFN1cGVyYmxvY2sgaXN0IG5pY2h0IGdlc2V0enQsIGFiZXIgZGFzXG4iCisiSm91cm5hbCBlbnRow6RsdCBEYXRlbi5cbiIKKworIy4gQC1leHBhbmRlZDogQ2xlYXIgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDYKK21zZ2lkICJDbGVhciBAaiIKK21zZ3N0ciAiSm91cm5hbCBiZXJlaW5pZ2VuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIiIKKyJEYXMgRGF0ZWlzeXN0ZW0gaGF0IEVpZ2Vuc2NoYWZ0cy1CaXRzY2hhbHRlciBnZXNldHp0LCBpc3QgYWJlciBlaW5cbiIKKyJSZXZpc2lvbi0wLURhdGVpc3lzdGVtLiAgICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyB2ZXJ3YWlzdGVyIElub2RlICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJVbnp1bMOkc3NpZ2VzICVCICglYikgaW4gdmVyd2Fpc3RlbiBJbm9kZSAlaSBnZWZ1bmRlbi5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkJlcmVpdHMgYmVyZWluaWd0ZXIgJUIgKCViKSBpbSB2ZXJ3YWlzdGVuIElub2RlICVpIGdlZnVuZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJVbnp1bMOkc3NpZ2VyIHZlcndhaXN0ZXIgSW5vZGUgJWkgaW0gU3VwZXJibG9jay5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJVbnp1bMOkc3NpZ2VyIElub2RlICVpIGluIGRlciBMaXN0ZSBkZXIgdmVyd2Fpc3RlbiBJbm9kZXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIkRlciBKb3VybmFsLVN1cGVyYmxvY2sgaGF0IGVpbmVuIHVuYmVrYW5udGVuIE51ci1MZXNlbi1CaXRzY2hhbHRlciBnZXNldHp0LlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjg2Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJJbSBKb3VybmFsLVN1cGVyYmxvY2sgaXN0IGVpbiB1bmJla2FubnRlciBCaXRzY2hhbHRlciBmw7xyIGVpbmVcbiIKKyJpbmtvbXBhdGlibGUgRWlnZW5zY2hhZnQgZ2VzZXR6dC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICJEaWVzZSBKb3VybmFsLVZlcnNpb24gd2lyZCB2b24gZGllc2VtIGUyZnNjayBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiSm91cm5hbCB3aXJkIHZvbiAvJXMgenVtIHZlcnN0ZWNrdGVuIElub2RlIHZlcnNjaG9iZW4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIG1vdmluZyBqb3VybmFsOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWltIFZlcnNjaGllYmVuIGRlcyBKb3VybmFsczogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlVudm9sbHN0w6RuZGlnZSBWMi1Kb3VybmFsLVN1cGVyYmxvY2stRmVsZGVyICh2b20gVjEtSm91cm5hbCkgZ2VmdW5kZW4uXG4iCisiRGllIEZlbGRlciBuYWNoIGRlbSBWMS1Kb3VybmFsLVN1cGVyYmxvY2sgd2VyZGVuIGJlcmVpbmlndC4uLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBSdW4gam91cm5hbCBhbnl3YXkKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzEyCittc2dpZCAiUnVuIEBqIGFueXdheSIKK21zZ3N0ciAiSm91cm5hbCB0cm90emRlbSBzdGFydGVuIgorCisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3Cittc2dpZCAiUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBAUywgc28gcnVubmluZyBAaiBhbnl3YXkuXG4iCittc2dzdHIgIiIKKyJEZXIgQml0c2NoYWx0ZXIgZsO8ciBXaWVkZXJoZXJzdGVsbHVuZyBpc3QgaW0gU2ljaGVydW5ncy1TdXBlcmJsb2NrIG5pY2h0XG4iCisiZ2VzZXR6dCwgZGFzIEpvdXJuYWwgd2lyZCBkYWhlciB0cm90emRlbSBnZXN0YXJ0ZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyJEaWUgSW5mb3JtYXRpb25lbiBkZXMgSm91cm5hbC1Jbm9kZWJsb2NrcyB3ZXJkZW4gZ2VzaWNoZXJ0LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJGw7xyIEBmIGlzdCByZXNpemVfQGkgbmljaHQgZWluZ2VzY2hhbHRldCwgYWJlciBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpc3QgJU47IEBzIE51bGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZV9pbm9kZSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgaW5vZGUgaXMgbm9uLXplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzMzCittc2dpZCAiUmVzaXplX0BpIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBAaSBpcyBub24temVyby4gICIKK21zZ3N0ciAiIgorIlJlc2l6ZV9AaSBpc3QgbmljaHQgYWt0aXZpZXJ0LCBhYmVyIGRlciB6dSBtb2RpZml6aWVyZW5kZSBJbm9kZSBpc3QgbmljaHQtIgorIk51bGwuIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIlJlc2l6ZS1Jbm9kZSBpc3QgdW5nw7xsdGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkRlciBaZWl0cHVua3QgZGVzIGxldHp0ZW4gRWluaMOkbmdlbnMgZGVzIFN1cGVyYmxvY2tzICgldCxcbiIKKyJcdGpldHp0ID0gJVQpIGxpZWd0IGluIGRlciBadWt1bmZ0LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQ4Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkRlciBaZWl0cHVua3QgZGVzIGxldHp0ZW4gU2NocmVpYmVucyBkZXMgU3VwZXJibG9ja3MgKCV0LFxuIgorIlx0amV0enQgPSAlVCkgbGllZ3QgaW4gZGVyIFp1a3VuZnQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIlN1cGVyYmxvY2stSGlud2VpcyBmw7xyIGV4dGVybmVuIFN1cGVyYmxvY2sgc29sbHRlICVYIHNlaW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJWZXJ6ZWljaG5pc2hhc2gtSGlud2VpcyB3aXJkIHp1bSBEYXRlaXN5c3RlbSBoaW56dWdlZsO8Z3QuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiIgorIkRpZSBQcsO8ZnN1bW1lIGRlcyBHcnVwcGVuZGVza3JpcHRvcnMgJWcgaXN0ICUwNHgsIHNpZSBzb2xsdGUgJTA0eSBzZWluLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkdydXBwZW5kZXNrcmlwdG9yICVnIGlzdCBvaG5lIGVpbmUgZ2VzZXR6dGUgRWlnZW5zY2hhZnQuXG4iCisiYWxzIG5pY2h0IGluaXRpYWxpc2llcnQgZ2VrZW5uemVpY2huZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgIiIKKyJHcnVwcGVuZGVza3JpcHRvciAlZyBoYXQgZWluZSB1bmfDvGx0aWdlIEFuemFobCB1bmdlbnV0enRlciBJbm9kZXMgdm9uICViLiAgIgorCisjLiBALWV4cGFuZGVkOiBMYXN0IGdyb3VwIGJsb2NrIGJpdG1hcCB1bmluaXRpYWxpemVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3NworbXNnaWQgIkxhc3QgQGcgQGIgQEIgdW5pbml0aWFsaXplZC4gICIKK21zZ3N0ciAiRGllIGxldHp0ZSBHcnVwcGVuLUJsb2NrYml0bWFwIGlzdCBuaWNodCBpbml0aWFsaXNpZXJ0LiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIiIKKyJKb3VybmFsdHJhbnNha3Rpb24gJWkgd2FyIGJlc2Now6RkaWd0LCBkaWUgV2llZGVyaG9sdW5nIHd1cmRlIGFiZ2Vicm9jaGVuLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4NgorbXNnaWQgIlRoZSB0ZXN0X2ZzIGZsYWcgaXMgc2V0IChhbmQgZXh0NCBpcyBhdmFpbGFibGUpLiAgIgorbXNnc3RyICJEaWUgS2VubnVuZyB0ZXN0X2ZzIHd1cmRlIGdlc2V0enQgKHVuZCBleHQ0IGlzdCB2ZXJmw7xnYmFyKS4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorIywgZnV6enkKK21zZ2lkICIiCisiQFMgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKyJEZXIgWmVpdHB1bmt0IGRlcyBsZXR6dGVuIEVpbmjDpG5nZW5zIGRlcyBTdXBlcmJsb2NrcyBsaWVndCBpbiBkZXIgWnVrdW5mdC5cbiIKKyJcdCh3ZW5pZ2VyIGFscyBlaW4gVGFnLCB3YWhyc2NoZWlubGljaCBhdWZncnVuZCBmYWxzY2ggZ2VzZXR6dGVyIEhhcmR3YXJlLSIKKyJVaHIpICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiRGVyIFplaXRwdW5rdCBkZXMgbGV0enRlbiBTY2hyZWliZW5zIGRlcyBTdXBlcmJsb2NrcyBsaWVndCBpbiBkZXIgWnVrdW5mdC5cbiIKKyJcdCh3ZW5pZ2VyIGFscyBlaW4gVGFnLCB3YWhyc2NoZWlubGljaCBhdWZncnVuZCBmYWxzY2ggZ2VzZXR6dGVyIEhhcmR3YXJlLSIKKyJVaHIpICAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBlaW5lcyBvZGVyIG1laHJlcmVyIEdydXBwZW5kZXNrcmlwdG9yZW4gaXN0IHVuZ8O8bHRpZy4gICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiRGllIEFuemFobCBkZXIgZnJlaWVuIElub2RlcyB3aXJkIGF1ZiAlaiBnZXNldHp0ICh3YXIgJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIkRpZSBBbnphaGwgZGVyIGZyZWllbiBCbMO2Y2tlIHdpcmQgYXVmICVjIGdlc2V0enQgKHdhciAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAiUXVvdGEtSW5vZGUgJWkgKCVRKSB3aXJkIHZlcnN0ZWNrdC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICJEZXIgU3VwZXJibG9jayBoYXQgZWluZW4gdW5nw7xsdGlnZW4gTU1QLUJsb2NrLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIkRlciBTdXBlcmJsb2NrIGJlc2l0enQgZWluZSBmYWxzY2hlIE1NUC1LZW5udW5nLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgImV4dDJmc19vcGVuMjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCittc2dzdHIgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCisjLCBmdXp6eQorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIkRpZSBQcsO8ZnN1bW1lIGRlcyBNTVAtQmxvY2tzIHBhc3N0IG5pY2h0IGRhenUiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKyJTdXBlcmJsb2NrLTY0Qml0LURhdGVpc3lzdGVtZSBicmF1Y2hlbiBFcndlaXRlcnVuZ2VuLCB1bSBhdWYgZGllIGdlc2FtdGVcbiIKKyJQbGF0dGUgenVncmVpZmVuIHp1IGvDtm5uZW4uICAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiRmlyc3RfbWV0YV9iZyBpc3QgenUgZ3Jvw58uICglTiwgbWF4LiBXZXJ0ICVnKS4gICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3CisjLCBmdXp6eQorbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgRXJ3ZWl0ZXJ1bmdzYmxvY2tzIHBhc3N0IG5pY2h0IGRhenUiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJEdXJjaGdhbmcgMTogSW5vZGVzLCBCbMO2Y2tlIHVuZCBHcsO2w59lbiB3ZXJkZW4gZ2VwcsO8ZnRcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgIlJvb3QtSW5vZGUgaXN0IGtlaW4gVmVyemVpY2huaXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiIgorIkbDvHIgUm9vdC1Jbm9kZSBpc3QgZHRpbWUgZ2VzZXR6dCAodmllbGxlaWNodCBkdXJjaCBlaW4genUgYWx0ZXMgbWtlMmZzKS4gICIKKworIy4gQC1leHBhbmRlZDogUmVzZXJ2ZWQgaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwOAorbXNnaWQgIlJlc2VydmVkIEBpICVpICglUSkgaGFzIEBuIG1vZGUuICAiCittc2dzdHIgIlJlc2VydmllcnRlciBJbm9kZSAlaSAoJVEpIGhhdCBlaW5lbiB1bmfDvGx0aWdlbiBNb2R1cy4gICIKKworIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgImR0aW1lIGbDvHIgZ2Vsw7ZzY2h0ZW4gSW5vZGUgJWkgaXN0IE51bGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiCittc2dzdHIgIklub2RlICVpIGlzdCBpbiBCZW51dHp1bmcsIGFiZXIgaGF0IGR0aW1lIGdlc2V0enQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBhIEB6IEBkLiAgIgorbXNnc3RyICJJbm9kZSAlaSBpc3QgZWluIFZlcnplaWNobmlzIG1pdCBMw6RuZ2UgTnVsbC4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjgKK21zZ2lkICJAZyAlZydzIEBiIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisiRGllIEJsb2NrYml0bWFwIGRlciBHcnVwcGUgJWcgYXVmICViIMO8YmVyc2NobmVpZGV0IHNpY2ggbWl0XG4iCisiZWluZW0gYW5kZXJlbiBEYXRlaXN5c3RlbWJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyJEaWUgSW5vZGUtQml0bWFwIGRlciBHcnVwcGUgJWcgYmVpICViIMO8YmVyc2NobmVpZGV0IHNpY2ggbWl0XG4iCisiZWluZW0gYW5kZXJlbiBEYXRlaXN5c3RlbWJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorIkRpZSBJbm9kZS1UYWJlbGxlIGRlciBHcnVwcGUgJWcgYmVpICViIMO8YmVyc2NobmVpZGV0IHNpY2ggbWl0XG4iCisiZWluZW0gYW5kZXJlbiBEYXRlaXN5c3RlbWJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJkaWUgQGItQEIgKCViKSB2b24gQGcgJWcgaXN0IHVuZ8O8bHRpZy4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiRGllIElub2RlLUJpdG1hcCAoJWIpIGRlciBHcnVwcGUgJWcgaXN0IHVuZ8O8bHRpZy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIklub2RlICVpLCBpX3NpemUgaXN0ICVJcywgc29sbHRlICVOIHNlaW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiSW5vZGUgJWksIGlfQGJzIGlzdCAlSWIsIHNvbGx0ZSAlTiBzZWluLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYzCittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiVW56dWzDpHNzaWdlciAlQiAoJWIpIGluIElub2RlICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiJUIgKCViKSDDvGJlcmxhcHB0IERhdGVpc3lzdGVtLU1ldGFkYXRlbiBpbiBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTczCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJJbm9kZSAlaSBoYXQgdW56dWzDpHNzaWdlKG4pIEJsb2NrL0Jsw7Zja2UuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRvbyBtYW55IGlsbGVnYWwgYmxvY2tzIGluIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3OAorIywgYy1mb3JtYXQKK21zZ2lkICJUb28gbWFueSBpbGxlZ2FsIEBicyBpbiBAaSAlaS5cbiIKK21zZ3N0ciAiWnUgdmllbGUgdW56dWzDpHNzaWdlIEJsw7Zja2UgaW4gQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCittc2dpZCAiQEkgJUIgKCViKSBpbiBiYWQgQGIgQGkuICAiCittc2dzdHIgIlVuZ8O8bHRpZ2VyICVCICglYikgaW4g4oCeYmFkIGJsb2Nr4oCcLUlub2RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICLigJ5CYWQgQmxvY2vigJwtSW5vZGUgaGF0IHVuenVsw6Rzc2lnZShuKSBCbG9jay9CbMO2Y2tlLiAgIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiRG9wcGVsdGVyIG9kZXIgdW56dWzDpHNzaWdlciBCbG9jayBpbiBHZWJyYXVjaCFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAiIgorIlVuZ8O8bHRpZ2VyIEJsb2NrICViIHdpcmQgYmVudXR6dCBhbHMgaW5kaXJla3RlciBCbG9jayBkZXMg4oCeQmFkIEJsb2Nr4oCcLSIKKyJJbm9kZXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRlciDigJ5CYWQgQmxvY2vigJwtSW5vZGUgaXN0IHdhaHJzY2hlaW5saWNoIGJlc2Now6RkaWd0IHdvcmRlbi4gU2llIHNvbGx0ZW5cbiIKKyJudW4gaW5uZWhhbHRlbiB1bmQg4oCeZTJmc2NrIC1j4oCcIGF1c2bDvGhyZW4sIHVtIG5hY2ggZGVmZWt0ZW4gQmzDtmNrZW4gaW5cbiIKKyJkZW0gRGF0ZWlzeXN0ZW0genUgc3VjaGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIldlbm4gZGVyIEJsb2NrIHdpcmtsaWNoIGRlZmVrdCBpc3QsIGthbm4gZGFzIERhdGVpc3lzdGVtIG5pY2h0IHJlcGFyaWVydCAiCisid2VyZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBZb3UgY2FuIHJlbW92ZSB0aGlzIGJsb2NrIGZyb20gdGhlIGJhZCBibG9jayBsaXN0IGFuZCBob3BlXG4KKyMuIEAtZXhwYW5kZWQ6IHRoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjE1Cittc2dpZCAiIgorIllvdSBjYW4gcmVtb3ZlIHRoaXMgQGIgZnJvbSB0aGUgYmFkIEBiIGxpc3QgYW5kIGhvcGVcbiIKKyJ0aGF0IHRoZSBAYiBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4iCisiXG4iCittc2dzdHIgIiIKKyJTaWUga8O2bm5lbiBkaWVzZW4gQmxvY2sgYXVzIGRlciBMaXN0ZSBkZXIgZGVmZWt0ZW4gQmzDtmNrZSBsw7ZzY2hlblxuIgorInVuZCBob2ZmZW4sIGRhcyBkaWVzZXIgd2lya2xpY2ggaW4gT3JkbnVuZyBpc3QsIGVzIGdpYnQgYWJlclxuIgorIktFSU5FIEdBUkFOVElFTi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiRGVyIHByaW3DpHJlIFN1cGVyYmxvY2sgKCViKSBpc3QgaW4gZGVyIExpc3RlIGRlciBkZWZla3RlbiBCbMO2Y2tlLlxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAiIgorIkJsb2NrICViIGltIHByaW3DpHJlbiBHcnVwcGVuZGVza3JpcHRvciBpc3QgaW4gZGVyIExpc3RlIGRlciBkZWZla3RlbiBCbMO2Y2tlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJXYXJudW5nOiBkZXIgU3VwZXJibG9jayBkZXIgR3J1cHBlICVnICglYikgaXN0IGRlZmVrdC5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBncm91cCBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgYmxvY2sgKCViKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzcKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIEBnIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBAYiAoJWIpLlxuIgorbXNnc3RyICIiCisiV2FybnVuZzogZGllIEtvcGllIGRlcyBHcnVwcGVuZGVza3JpcHRvcnMgdm9uIEdydXBwZSAlZyBoYXQgZWluZW4gZGVmZWt0ZW4gIgorIkJsb2NrICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJQcm9ncmFtbWllcmZlaGxlcj8gIEJsb2NrICMlYiB3aXJkIG9obmUgR3J1bmQgaW4gcHJvY2Vzc19iYWRfQGIgdmVybGFuZ3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSBadXdlaXNlbiB2b24gJU4genVzYW1tZW5ow6RuZ2VuZW5kZShtL24pIEJsb2NrL0Jsw7Zja2VuIGluIGRlciBAYi0iCisiQGcgJWcgZsO8ciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGVpbmVzIEJsb2NrcHVmZmVycyB6dW0gVmVyc2NoaWViZW4gdm9uICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiR3J1cHBlICVnJ3MgJXMgd2lyZCB2b24gJWIgbmFjaCAlYyB2ZXJzY2hvYmVuIC4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIkdydXBwZSAlZydzICVzIHdpcmQgbmFjaCAlYyB2ZXJzY2hvYmVuIC4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiV2FybnVuZzogQmxvY2sgJWIgdm9uICVzIGtvbm50ZSBuaWNodCBnZWxlc2VuIHdlcmRlbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICJXYXJudW5nOiBCbG9jayAlYiB2b24gJXMga29ubnRlIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gWnV3ZWlzZW4gZGVyIElub2RlLUJpdG1hcCAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciBCbG9jay1CaXRtYXAgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciDigJ5pY291bnQgbGluayBpbmZvcm1hdGlvbuKAnDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBadXdlaXNlbiBkZXMgVmVyemVpY2huaXMtQmxvY2stRmVsZGVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgQGlzICglaSk6ICVtXG4iCittc2dzdHIgIkZlaGxlciB3w6RocmVuZCBkZXMgRHVyY2hzdWNoZW5zIGRlciBJbm9kZXMgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIEl0ZXJpZXJlbiDDvGJlciBkaWUgQmzDtmNrZSBpbiBJbm9kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRmVobGVyIGJlaW0gU3BlaWNoZXJuIGRlciBJbmZvcm1hdGlvbmVuIHp1ciBJbm9kZS1BbnphaGwgKElub2RlPSVpLCBBbnphaGw9IgorIiVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSBTcGVpY2hlcm4gZGVyIFZlcnplaWNobmlzLUJsb2NrLUluZm9ybWF0aW9uZW4gKElub2RlPSVpLCBCbG9jaz0iCisiJWIsIEFuemFobD0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlcyBJbm9kZXMgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgIklub2RlICVpIGhhdCBkZW4gSW1hZ2ljLUJpdHNjaGFsdGVyIGdlc2V0enQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGV6aWVsbGUgR2Vyw6R0ZS0vU29ja2V0LS9GaWZvLS9TeW1saW5rLURhdGVpIChJbm9kZSAlaSkgaGF0IGRlbiBCaXRzY2hhbHRlciAiCisiZsO8clxuIgorInVudmVyw6RuZGVyYmFyIG9kZXIgTnVyLUFuaMOkbmdlbiBnZXNldHp0LiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIlNwZXppZWxsZXIgR2Vyw6R0ZS0vU29ja2V0LS9GaWZvLUlub2RlICVpIGhhdCBkaWUgR3LDtsOfZSBOdWxsLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIklub2RlICVpIHdpcmQgbmljaHQgdmVyd2VuZGV0LCBhYmVyIGVudGjDpGx0IERhdGVuLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiSm91cm5hbCBpc3Qga2VpbmUgcmVndWzDpHJlIERhdGVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgIklub2RlICVpIHdhciBUZWlsIGRlciBMaXN0ZSB2ZXJ3YWlzdGVyIElub2Rlcy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisiSW5vZGVzIHd1cmRlbiBnZWZ1bmRlbiwgZGllIFRlaWwgZWluZXIgZGVmZWt0ZW4gdmVya2V0dGV0ZW4gTGlzdGUgdm9uXG4iCisidmVyd2Fpc3RlbiBJbm9kZXMgd2FyZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciByZWZjb3VudC1TdHJ1a3R1ciAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBmb3IgaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzc1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSBMZXNlbiBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIgZsO8ciBJbm9kZSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIklub2RlICVpIGhhdCBlaW5lbiBkZWZla3RlbiBFcndlaXRlcnRlLUF0dHJpYnV0ZS1CbG9jayAlYi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlcyBCbG9ja3MgZsO8ciBlcndlaXRlcnRlIEF0dHJpYnV0ZSAoJW0pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5MAorbXNnaWQgIkBhIEBiICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIEBzICVOLiAgIgorbXNnc3RyICIiCisiRGVyIFJlZmVyZW56esOkaGxlciBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIgaXN0ICVyLCByaWNodGlnICIKKyJ3w6RyZSAlTi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiRGVyIEJsb2NrIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIgaGF0IGhfYmxvY2tzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciBpY291bnQtU3RydWt0dXI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICIiCisiRGVyIEJsb2NrIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIgaXN0IGRlZmVrdCAoS29sbGlzaW9uIGRlciAiCisiUGxhdHphbmZvcmRlcnVuZ2VuKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIkRlciBCbG9jayBmw7xyIGVyd2VpdGVydGUgQXR0cmlidXRlICViIGlzdCBkZWZla3QgKHVuZ8O8bHRpZ2VyIE5hbWUpLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCB2YWx1ZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIgorbXNnc3RyICJEZXIgQmxvY2sgZsO8ciBlcndlaXRlcnRlIEF0dHJpYnV0ZSAlYiBpc3QgZGVmZWt0ICh1bmfDvGx0aWdlciBXZXJ0KS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiSW5vZGUgJWkgaXN0IHp1IGdyb8OfLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIG1hY2h0IGRhcyBWZXJ6ZWljaG5pcyB6dSBncm/Dny4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzQKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIkJsb2NrICMlQiAoJWIpIG1hY2h0IGRpZSBEYXRlaSB6dSBncm/Dny4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBzeW1saW5rIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIkJsb2NrICMlQiAoJWIpIG1hY2h0IGRlbiBTeW1saW5rIHp1IGdyb8OfLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoYXQgSU5ERVhfRkwgRmxhZyBhdWYgZWluZW0gRGF0ZWlzeXN0ZW0gb2huZSBIVFJFRS1VbnRlcnN0w7x0enVuZyAiCisiZ2VzZXR6dC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoYXQgZGVuIElOREVYX0ZMLUJpdHNjaGFsdGVyIGdlc2V0enQsIGlzdCBhYmVyIGtlaW4gVmVyemVpY2huaXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIiIKKyJIVFJFRS1WZXJ6ZWljaG5pcy1Jbm9kZSAlaSBoYXQgZWluZW4gdW52b2xsc3TDpG5kaWdlbiBXdXJ6ZWxrbm90ZW4gKOKAnnJvb3QgIgorIm5vZGXigJwpLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIiIKKyJIVFJFRS1WZXJ6ZWljaG5pcy1Jbm9kZSAlaSBoYXQgZWluZSBuaWNodCB1bnRlcnN0w7x0enRlIEhhc2gtVmVyc2lvbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKyJAaCAlaSBiZW51dHp0IGVpbmVuIG5pY2h0IHVudGVyc3TDvHR6dGVuIEJpdHNjaGFsdGVyIGbDvHIgZWluZW4gSHRyZWUtIgorIld1cnplbGtub3Rlbi5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiQGggJWkgaGF0IGVpbmUgenUgZ3Jvw59lIFZlcnplaWNobmlzdGllZmUgdm9uICglTilcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIkRlciBJbm9kZSBmw7xyIGRlZmVrdGUgQmzDtmNrZSBoYXQgZWluZW4gaW5kaXJla3RlbiBCbG9jayAoJWIpLCBkZXIgbWl0XG4iCisiZGVuIERhdGVpc3lzdGVtLU1ldGFkYXRlbiBpbiBLb25mbGlrdCBzdGVodC4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXplIEBpIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLiIKK21zZ3N0ciAiRXJ6ZXVndW5nIGRlcyBWZXJncsO2w59lcnVuZ3MtSW5vZGVzIHNjaGVpdGVydGU6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJJbm9kZSAlaSBoYXQgZWluZSB1bmfDvGx0aWdlIEV4dHJhZ3LDtsOfZSAoJUlTKVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorIkVpbiBlcndlaXRlcnRlcyBBdHRyaWJ1dCBpbiBJbm9kZSAlaSBoYXQgZWluZSB1bmfDvGx0aWdlIOKAnm5hbWVsZW7igJwgdm9uICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKyJFaW4gZXJ3ZWl0ZXJ0ZXMgQXR0cmlidXQgaW4gSW5vZGUgJWkgaGF0IGVpbmVuIHVuZ8O8bHRpZ2VuIFdlcnRldmVyc2F0eiB2b24gIgorIiVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICIiCisiRWluIGVyd2VpdGVydGVzIEF0dHJpYnV0IGluIElub2RlICVpIGhhdCBlaW5lbiB1bmfDvGx0aWdlbiBXZXJ0ZWJsb2NrIHZvbiAlTiAiCisiKG11c3MgMCBzZWluKS5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKyJFaW4gZXJ3ZWl0ZXJ0ZXMgQXR0cmlidXQgaW4gSW5vZGUgJWkgaGF0IGVpbmUgdW5nw7xsdGlnZSBXZXJ0ZWdyw7bDn2Ugdm9uICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiRWluIGVyd2VpdGVydGVzIEF0dHJpYnV0IGluIElub2RlICVpIGhhdCBkZW4gdW5nw7xsdGlnZW4gSGFzaCAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorbXNnaWQgIkBpICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGlzdCBlaW4gJUl0LCBhYmVyIGVzIHNpZWh0IHNvIGF1cywgYWxzIG9iIGVzIHRhdHPDpGNobGljaCBlaW4gIgorIlZlcnplaWNobmlzIGlzdC5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIGV4dGVudCB0cmVlIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgQHggdHJlZSBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gSXRlcmllcmVuIMO8YmVyIGRlbiBFeHRlbnQtQmF1bSBAeCBpbiBJbm9kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisiRGFzIEl0ZXJpZXJlbiBkZXIgRXJ3ZWl0ZXJ1bmdlbiAoRXh0ZW50cykgaW4gSW5vZGUgJWkgc2NoZWl0ZXJ0ZVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzMQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhhdCBlaW5lIEBuZSBFcndlaXRlcnVuZ1xuIgorIlx0KGxvZ2lzY2hlciBCbG9jayAlYywgQG4gcGh5c2lzY2hlciBCbG9jayAlYiwgTMOkbmdlICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhhdCBlaW5lIHVuZ8O8bHRpZ2UgRXJ3ZWl0ZXJ1bmdcbiIKKyJcdChsb2dpc2NoZXIgQmxvY2sgJWMsIHBoeXNpc2NoZXIgQmxvY2sgJWIsIHVuenVsw6Rzc2lnZSBMw6RuZ2UgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGF0IGRlbiBFWFRFTlRTX0ZMLUJpdHNjaGFsdGVyIGdlc2V0enQsIG9id29obCBkYXMgRGF0ZWlzeXN0ZW1cbiIKKyJFcndlaXRlcnVuZ2VuIG5pY2h0IHVudGVyc3TDvHR6dC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBiZXNpdHp0IGRhcyBFcndlaXRlcnVuZ3Nmb3JtYXQsIGFiZXIgZGVtIFN1cGVyYmxvY2sgZmVobHQgZGllICIKKyJFaWdlbnNjaGFmdCBFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICIiCisiRGVtIElub2RlICVpIGZlaGx0IEVYVEVOVF9GTCwgZXIgaGF0IGFiZXIgZGFzIEZvcm1hdCBlaW5lciBFcndlaXRlcnVuZ1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIkluIHNjaG5lbGxlbSBTeW1saW5rICVpIGlzdCBFWFRFTlRfRkwgZ2VzZXR6dC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhhdCB1bnJlZ2VsbcOkw59pZ2UgRXJ3ZWl0ZXJ1bmdlblxuIgorIlx0KHVuZ8O8bHRpZ2VyIGxvZ2lzY2hlciBCbG9jayAlYywgcGh5c2lzY2hlciBCbG9jayAlYiwgTMOkbmdlICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIklub2RlICVpIGhhdCBlaW5lbiB1bmfDvGx0aWdlbiBFcndlaXRlcnVuZ3MtS25vdGVuIChibGsgJWIsIGxibGsgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gVW13YW5kZWxuIGRlciBTdWJjbHVzdGVyLUJsb2NrYml0bWFwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkRlciBRdW90YS1Jbm9kZSBpc3Qga2VpbmUgcmVndWzDpHJlIERhdGVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiUXVvdGEtSW5vZGUgd2lyZCBuaWNodCBiZW51dHp0LCBlbnRow6RsdCBhYmVyIERhdGVuLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4NQorbXNnaWQgIkBxIEBpIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAiCittc2dzdHIgIkRlciBRdW90YS1Jbm9kZSBpc3Qgc2ljaHRiYXIgZsO8ciBkZW4gQmVudXR6ZXIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICJEZXIgSW5vZGUgZsO8ciBkZWZla3RlIEJsw7Zja2Ugc2llaHQgdW5nw7xsdGlnIGF1cy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoYXQgZWluZSBFcndlaXRlcnR1bmcgZGVyIEzDpG5nZSBOdWxsXG4iCisiXHQodW5nw7xsdGlnZXIgbG9naXNjaGVyIEJsb2NrICVjLCBwaHlzaXNjaGVyIEJsb2NrICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJJbm9kZSAlaSBpc3QgenUgZ3Jvw58uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGkuICAiCittc2dzdHIgIkRpZSBQcsO8ZnN1bW1lIGRlciBJbm9kZS1CaXRtYXAgcGFzc3QgbmljaHQgenVyIEJpdG1hcCIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIiIKKyJEZXIgQmxvY2sgZsO8ciBlcndlaXRlcnRlIEF0dHJpYnV0ZSAlYiBpc3QgZGVmZWt0IChLb2xsaXNpb24gZGVyICIKKyJQbGF0emFuZm9yZGVydW5nZW4pLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhhdCB1bnJlZ2VsbcOkw59pZ2UgRXJ3ZWl0ZXJ1bmdlblxuIgorIlx0KHVuZ8O8bHRpZ2VyIGxvZ2lzY2hlciBCbG9jayAlYywgcGh5c2lzY2hlciBCbG9jayAlYiwgTMOkbmdlICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorIkViZW5lICVOIGRlcyBpbnRlcm5lbiBFcndlaXRlcnVuZ3Nrbm90ZW5zIHZvbiBJbm9kZSAlaTpcbiIKKyJEZXIgbG9naXNjaGUgU3RhcnQgJWIgcGFzc3QgbmljaHQgenVtIGxvZ2lzY2hlbiBTdGFydCAlYyBhdWYgZGVyIG7DpGNoc3RlbiAiCisiRWJlbmUuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSwgZGFzIEVuZGUgZGVyIEVyd2VpdGVydW5nIGlzdCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHNcbiIKKyJcdChsb2dpc2NoZXIgQmxvY2sgJWMsIHBoeXNpc2NoZXIgQmxvY2sgJWIsIEzDpG5nZSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGJlc2l0enQgZGFzIEVyd2VpdGVydW5nc2Zvcm1hdCwgYWJlciBkZW0gU3VwZXJibG9jayBmZWhsdCBkaWUgIgorIkVpZ2Vuc2NoYWZ0IEVYVEVOVFNcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gZmlsZXN5c3RlbSB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGF0IElOREVYX0ZMIEZsYWcgYXVmIGVpbmVtIERhdGVpc3lzdGVtIG9obmUgSFRSRUUtVW50ZXJzdMO8dHp1bmcgIgorImdlc2V0enQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworbXNnaWQgIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIKK21zZ3N0ciAiVmVyemVpY2huaXNpbm9kZSAlaSBCbG9jayAlYiBzb2xsdGUgaW4gQmxvY2sgJWMgc2Vpbi4gICIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2OAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAaSAlaSBoYXMgQHggbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgQGIgJWMuICAiCittc2dzdHIgIiIKKyJWZXJ6ZWljaG5pcy1Jbm9kZSAlaSBoYXQgZWluZSBFcndlaXRlcnVuZywgZGllIGFscyBuaWNodCBpbml0aWFsaXNpZXJ0XG4iCisiZ2VrZW5uemVpY2huZXQgaXN0IGluIEJsb2NrICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiRGllIElub2RlICVpLCBsb2dpc2NoZXIgQmxvY2sgJWIgKHBoeXNpc2NoZXIgQmxvY2sgJWMpIHZlcmxldHp0IGRpZSBSZWdlbG4gIgorInp1clxiICBBbmZvcmRlcnVuZyB2b24gQ2x1c3Rlci1TcGVpY2hlci5cbiIKKyJEaWVzIHdpcmQgaW4gRHVyY2hnYW5nIDFCIHJlcGFyaWVydC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorIklub2RlICVpIGhhdCBkZW4gSU5ERVhfRkwtQml0c2NoYWx0ZXIgZ2VzZXR6dCwgaXN0IGFiZXIga2VpbiBWZXJ6ZWljaG5pcy5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZXppZWxsZSBHZXLDpHRlLS9Tb2NrZXQtL0ZpZm8tL1N5bWxpbmstRGF0ZWkgKElub2RlICVpKSBoYXQgZGVuIEJpdHNjaGFsdGVyICIKKyJmw7xyXG4iCisidW52ZXLDpG5kZXJiYXIgb2RlciBOdXItQW5ow6RuZ2VuIGdlc2V0enQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBleHRlbnQgaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBAeCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IGV4dGVudCBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IEB4IGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgYmxvY2sgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgQGIgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBpbm9kZSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwOQorbXNnaWQgIkJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IEBpIGlzIGJhZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVudCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExNAorIywgZnV6enkKK21zZ2lkICJAQSBAeCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciBpY291bnQtU3RydWt0dXI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGF0IGVpbmUgQG5lIEVyd2VpdGVydW5nXG4iCisiXHQobG9naXNjaGVyIEJsb2NrICVjLCBAbiBwaHlzaXNjaGVyIEJsb2NrICViLCBMw6RuZ2UgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0Cittc2dpZCAiQEEgbWVtb3J5IGZvciBlbmNyeXB0ZWQgQGQgbGlzdFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjkKK21zZ2lkICJAaSAlaSBAeCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgIkRlciBCbG9jayBmw7xyIGVyd2VpdGVydGUgQXR0cmlidXRlICViIGlzdCBkZWZla3QgKHVuZ8O8bHRpZ2VyIE5hbWUpLiAgIgorCisjLiBALWV4cGFuZGVkOiBUaW1lc3RhbXAocykgb24gaW5vZGUgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRpbWVzdGFtcChzKSBvbiBAaSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlp1c8OkdHpsaWNoZSBMw6R1ZmUgd2VyZGVuIGR1cmNoZ2Vmw7xocnQsIHVtIGRpZSB2b24gbWVociBhbHMgZWluZW0gSW5vZGVcbiIKKyJiZWFuc3BydWNodGVuIEJsw7Zja2UgenUga2zDpHJlbiAuLi5cbiIKKyJEdXJjaGdhbmcgMUI6IFN1Y2hlIG5hY2ggbWVocmZhY2ggYmVhbnNwcnVjaHRlbiBCbMO2Y2tlblxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAiTWVocmZhY2ggYmVhbnNwcnVjaHRlKHIpIEJsb2NrL0Jsw7Zja2UgaW4gSW5vZGUgJWk6IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFByw7xmZW4gZGVyIElub2RlcyAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3NworIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFp1d2Vpc2VuIGRlciBJbm9kZS1CaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBJdGVyaWVyZW4gw7xiZXIgZGllIEJsw7Zja2UgaW4gSW5vZGUgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorIkZlaGxlciBiZWkgZGVyIEFucGFzc3VuZyBkZXMgUmVmZXJlbnp6w6RobGVycyBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSAiCisiQXR0cmlidXRlICViIChJbm9kZSAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOTcKK21zZ2lkICJQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgQGlzIHdpdGggQG0gQGJzXG4iCittc2dzdHIgIiIKKyJEdXJjaGdhbmcgMUM6IFZlcnplaWNobmlzc2Ugd2VyZGVuIG5hY2ggSW5vZGVzIG1pdCBtZWhyZmFjaCBiZWxlZ3RlbiBCbMO2Y2tlbiAiCisiZHVyY2hzdWNodC5cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgIkR1cmNoZ2FuZyAxRDogTWVocmZhY2ggYmVsZWd0ZSBCbMO2Y2tlIHdlcmRlbiBhYmdlZ2xpY2hlbi5cbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisiRGF0ZWkgJVEgKElub2RlICMlaSwgw4RuZGVydW5nc3plaXQgJUlNKSBcbiIKKyIgIGhhdCAlciBtZWhyZmFjaCBiZWxlZ3RlKG4pIEJsb2NrL0Jsw7Zja2UsIGdlbWVpbnNhbSBnZW51dHp0IG1pdCAlTiAiCisiRGF0ZWkoZW4pOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKElub2RlICMlaSwgw4RuZGVydW5nc3plaXQgJUlNKVxuIgorCisjLiBALWV4cGFuZGVkOiBcdDxmaWxlc3lzdGVtIG1ldGFkYXRhPlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiXHQ8QGYtTWV0YWRhdGVuPlxuIgorCisjLiBALWV4cGFuZGVkOiAoVGhlcmUgYXJlICVOIGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLilcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIyNAorbXNnaWQgIiIKKyIoVGhlcmUgYXJlICVOIEBpcyBjb250YWluaW5nIEBtIEBicy4pXG4iCisiXG4iCittc2dzdHIgIiIKKyIoRXMgZ2lidCAlTiBJbm9kZXMsIGRpZSBtZWhyZmFjaCBiZWxlZ3RlIEJsw7Zja2UgZW50aGFsdGVuLilcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIyOQorbXNnaWQgIiIKKyJAbSBAYnMgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1laHJmYWNoIGJlbGVndGUgQmzDtmNrZSB3dXJkZW4gYmVyZWl0cyBuZXUgenVnZW9yZG5ldCBiencuIGdla2xvbnQuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJEYXRlaSBrYW5uIG5pY2h0IGdla2xvbnQgd2VyZGVuOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJEdXJjaGdhbmcgM0E6IFZlcnplaWNobmlzc2Ugd2VyZGVuIG9wdGltaWVydFxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJWZXJ6ZWljaG5pcyAlcSAoJWQpIGtvbm50ZSBuaWNodCBvcHRpbWllcnQgd2VyZGVuOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKKyMsIGZ1enp5Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICJWZXJ6ZWljaG5pc3NlIHdlcmRlbiBvcHRpbWllcnQ6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIkR1cmNoZ2FuZyAyOiBWZXJ6ZWljaG5pc3N0cnVrdHVyIHdpcmQgZ2VwcsO8ZnRcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJAbiBAaSBudW1iZXIgZm9yICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiRmFsc2NoZSBJbm9kZS1OdW1tZXIgZsO8ciDigJ4u4oCcIGluIFZlcnplaWNobmlzLUlub2RlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiRWludHJhZyBoYXQgZmFsc2NoZSBJbm9kZS1OdW1tZXI6ICVEaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgJURpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDUKK21zZ2lkICJARSBoYXMgQEQvdW51c2VkIEBpICVEaS4gICIKK21zZ3N0ciAiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSBoYXQgZ2Vsw7ZzY2h0ZW4vdW5iZW51dHp0ZW4gSW5vZGUgJURpLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIkVpbnRyYWcg4oCeJURu4oCcIGluICVwICglaSkgaXN0IGVpbiBMaW5rIGF1ZiDigJ4u4oCcICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICIiCisiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSB6ZWlndCBhdWYgZWluZW4gSW5vZGUgKCVEaSkgaW4gZWluZW0gZGVmZWt0ZW4gIgorIkJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJFaW50cmFnIOKAniVEbuKAnCBpbiAlcCAoJWkpIGlzdCBlaW4gTGluayBhdWYgZGFzIFZlcnplaWNobmlzICVQICglRGkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1Cittc2dpZCAiQEUgQEwgdG8gdGhlIEByLlxuIgorbXNnc3RyICJFaW50cmFnIOKAniVEbuKAnCBpbiAlcCAoJWkpIGlzdCBlaW4gTGluayBhdWYgZGVuIFJvb3QtSW5vZGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzMwCittc2dpZCAiQEUgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbiIKK21zZ3N0ciAiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSBoYXQgZWluIHVuenVsw6Rzc2lnZXMgWmVpY2hlbiBpbSBOYW1lbi5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkZlaGxlbmRlIOKAni7igJwgaW0gVmVyemVpY2huaXMtSW5vZGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkZlaGxlbmRlciBFaW50cmFnIOKAni4u4oCcIGltIFZlcnplaWNobmlzLUlub2RlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIiIKKyJEZXIgZXJzdGUgRWludHJhZyDigJ4lRG7igJwgKElub2RlPSVEaSkgaW0gVmVyemVpY2huaXMtSW5vZGUgJWkgKCVwKSBzb2xsdGUg4oCeLuKAnCAiCisic2VpblxuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIiIKKyJEZXIgendlaXRlIEVpbnRyYWcg4oCeJURu4oCcIChJbm9kZT0lRGkpIGltIFZlcnplaWNobmlzLUlub2RlICVpIHNvbGx0ZSDigJ4uLuKAnCAiCisic2VpblxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIGbDvHIgSW5vZGUgJWkgKCVRKSBpc3QgJUlGLCBzb2xsdGUgTnVsbCBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIGbDvHIgSW5vZGUgJWkgKCVRKSBpc3QgJUlmLCBzb2xsdGUgTnVsbCBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1Cittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9kaXJfYWNsIGbDvHIgSW5vZGUgJWkgKCVRKSBpc3QgJUlkLCBzb2xsdGUgTnVsbCBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnJhZyBmw7xyIElub2RlICVpICglUSkgaXN0ICVOLCBzb2xsdGUgTnVsbCBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBmw7xyIElub2RlICVpICglUSkgaXN0ICVOLCBAcyBudWxsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorbXNnaWQgIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iCittc2dzdHIgIklub2RlICVpICglUSkgaGF0IGVpbmVuIHVuZ8O8bHRpZ2VuIE1vZHVzICglSW0pLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBjb3JydXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzg1Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGNvcnJ1cHRlZFxuIgorbXNnc3RyICJWZXJ6ZWljaG5pcy1Jbm9kZSAlaSwgJUIsIE9mZnNldCAlTjogVmVyemVpY2huaXMgZGVmZWt0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIlZlcnplaWNobmlzLUlub2RlICVpLCAlQiwgT2Zmc2V0ICVOOiBEYXRlaW5hbWUgenUgbGFuZ1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIlZlcnplaWNobmlzLUlub2RlICVpIGhhdCBlaW5lbiBuaWNodCB6dWdld2llc2VuZW4gJUIuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIiIKKyJWZXJ6ZWljaG5pc2VpbnRyYWcg4oCeLuKAnCBpbSBWZXJ6ZWljaG5pcy1Jbm9kZSAlaSBpc3QgbmljaHQgTlVMTC10ZXJtaW5pZXJ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwNQorIywgYy1mb3JtYXQKK21zZ2lkICInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiIgorIlZlcnplaWNobmlzZWludHJhZyDigJ4uLuKAnCBpbSBWZXJ6ZWljaG5pcy1Jbm9kZSAlaSBpc3QgbmljaHQgTlVMTC10ZXJtaW5pZXJ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIKK21zZ3N0ciAiSW5vZGUgJWkgKCVRKSBpc3QgZWluIHVuZ8O8bHRpZ2VzIHplaWNoZW5vcmllbnRpZXJ0ZXMgR2Vyw6R0LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJJbm9kZSAlaSAoJVEpIGlzdCBlaW4gdW5nw7xsdGlnZXMgYmxvY2tvcmllbnRpZXJ0ZXMgR2Vyw6R0LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyMAorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLicgQGUuXG4iCittc2dzdHIgIkVpbnRyYWcg4oCeJURu4oCcIGluICVwICglaSkgaXN0IGVpbiBkb3BwZWx0ZXIgRWludHJhZyBmw7xyIOKAni7igJwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJFaW50cmFnIOKAniVEbuKAnCBpbiAlcCAoJWkpIGlzdCBlaW4gZG9wcGVsdGVyIEVpbnRyYWcgZsO8ciDigJ4uLuKAnC5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkludGVybmVyIEZlaGxlcjogZGlyX2luZm8gZsO8ciAlaSBrYW5uIG5pY2h0IGdlZnVuZGVuIHdlcmRlbi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1Cittc2dpZCAiQEUgaGFzIHJlY19sZW4gb2YgJURyLCBAcyAlTi5cbiIKK21zZ3N0ciAiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSBoYXQgZWluZSByZWNfbGVuIHZvbiAlRHIsIHNvbGx0ZSAlTiBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBadXdlaXNlbiBkZXIgaWNvdW50LVN0cnVrdHVyOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBEdXJjaGxhdWZlbiBkZXIgVmVyemVpY2huaXNibMO2Y2tlOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlcyBWZXJ6ZWljaG5pc2Jsb2NrcyAlYiAoSW5vZGUgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXMgVmVyemVpY2huaXNibG9ja3MgJWIgKElub2RlICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICIiCisiRmVobGVyIGJlaW0gWnV3ZWlzZW4gZWluZXMgbmV1ZW4gVmVyemVpY2huaXNibG9ja3MgZsO8ciBJbm9kZSAlaSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWFsbG9jYXRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWkgZGVyIEZyZWlnYWJlIHZvbiBJbm9kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICJWZXJ6ZWljaG5pc2VpbnRyYWcgZsO8ciDigJ4u4oCcIGluICVwICglaSkgaXN0IGdyb8OfLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJJbm9kZSAlaSAoJVEpIGlzdCBlaW5lIHVuZ8O8bHRpZ2UgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIklub2RlICVpICglUSkgaXN0IGVpbiB1bmfDvGx0aWdlciBTb2NrZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJEYXRlaXR5cMO8IGbDvHIgRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSB3aXJkIGF1ZiAlTiBnZXNldHp0LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiIgorIkVpbnRyYWcg4oCeJURu4oCcIGluICVwICglaSkgaGF0IGVpbmVuIGZhbHNjaGVuIERhdGVpdHlwICh3YXIgJUR0LCBzb2xsdGUgJU4gIgorInNlaW4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkVpbnRyYWcg4oCeJURu4oCcIGluICVwICglaSkgaGF0IERhdGVpdHlwIGdlc2V0enQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgemVyby1sZW5ndGggbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAwCittc2dpZCAiQEUgaGFzIGEgQHogbmFtZS5cbiIKK21zZ3N0ciAiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSBoYXQgZWluZW4gTmFtZW4gZGVyIEzDpG5nZSBOdWxsLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIlN5bWxpbmsgJVEgKElub2RlICMlaSkgaXMgaW52YWxpZC5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAlaSAoJVEpIGlzIGludmFsaWQgKCVJZikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxMAorbXNnaWQgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorbXNnc3RyICJFcndlaXRlcnRlLUF0dHJpYnV0ZS1CbG9jayBmw7xyIElub2RlICVpICglUSkgaXN0IHVuZ8O8bHRpZyAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorIkRhdGVpc3lzdGVtIGVudGjDpGx0IGdyb8OfZSBEYXRlaWVuLCBhYmVyIGltIFN1cGVyYmxvY2sgaXN0XG4iCisiZGVyIEJpdHNjaGFsdGVyIExBUkdFX0ZJTEUgbmljaHQgZ2VzZXR6dC5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiAlQiBpc3QgbmljaHQgcmVmZXJlbnppZXJ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyNQorbXNnaWQgIkBwIEBoICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4iCittc2dzdHIgIlByb2JsZW0gaW0gSFRSRUUtVmVyemVpY2huaXMtSW5vZGUgJWQ6ICVCIGRvcHBlbHQgcmVmZXJlbnppZXJ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIlByb2JsZW0gaW0gSFRSRUUtVmVyemVpY2huaXMtSW5vZGUgJWQ6ICVCIGhhdCB1bmfDvGx0aWdlbiBNaW5pbXVtaGFzaFxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuIgorbXNnc3RyICJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiAlQiBoYXQgdW5nw7xsdGlnZW4gTWF4aW1hbGhhc2hcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQwCittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgSFRSRUUtVmVyemVpY2huaXMtSW5vZGUgJWQgKCVxKS4gICIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKTogYmFkIGJsb2NrIG51bWJlciAlYi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQ0Cittc2dpZCAiQHAgQGggJWQgKCVxKTogYmFkIEBiIG51bWJlciAlYi5cbiIKK21zZ3N0ciAiUHJvYmxlbSBpbSBIVFJFRS1WZXJ6ZWljaG5pcy1Jbm9kZSAlZCAoJXEpOiBmYWxzY2hlIEJsb2NrbnVtbWVyICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiUHJvYmxlbSBpbSBIVFJFRS1WZXJ6ZWljaG5pcy1Jbm9kZSAlZDogV3VyemVsa25vdGVuIGlzdCB1bmfDvGx0aWdcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIiIKKyJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiAlQiBoYXQgZWluZSB1bmfDvGx0aWdlIEJlZ3Jlbnp1bmcgIgorIiglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIiIKKyJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiAlQiBoYXQgZWluZW4gdW5nw7xsdGlnZW4gWsOkaGxlcnN0YW5kICIKKyIoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICIiCisiUHJvYmxlbSBpbSBIVFJFRS1WZXJ6ZWljaG5pcy1Jbm9kZSAlZDogJUIgaGF0IGVpbmUgdW5zb3J0aWVydGUgSGFzaHRhYmVsbGVcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGRlcHRoICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBkZXB0aCAoJU4pXG4iCittc2dzdHIgIiIKKyJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiAlQiBoYXQgZWluZSB1bmfDvGx0aWdlIFRpZWZlICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAiRG9wcGVsdGVyIEVpbnRyYWcg4oCeJURu4oCcIGluICVwICglaSkgZ2VmdW5kZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSBoYXQga2VpbmVuIGVpbmRldXRpZ2VuIERhdGVpbmFtZW4uXG4iCisiV2lyZCBpbiAlcyB1bWJlbmFubnQiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRvcHBlbHRlciBFaW50cmFnIOKAniVEbuKAnCBnZWZ1bmRlbi5cbiIKKyJcdCVwICglaSkgd2lyZCBmw7xyIGRpZSBOZXVlcnN0ZWxsdW5nIG1hcmtpZXJ0LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Jsb2Nrc19oaSBmw7xyIElub2RlICVpICglUSkgJU4sIHNvbGx0ZSBOdWxsIHNlaW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiVW5lcndhcnRldGVyIEJsb2NrIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSB2ZXJ3ZWlzdCBhdWYgSW5vZGUgJURpIGluIEdydXBwZSAlZywgZsO8ciBkaWUgIgorIl9JTk9ERV9VTklOSVQgZ2VzZXR6dCBpc3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisiRWludHJhZyDigJ4lRG7igJwgaW4gJXAgKCVpKSB2ZXJ3ZWlzdCBhdWYgSW5vZGUgJURpLCBkZXIgaW0gQmVyZWljaCB1bmdlbnV0enRlciAiCisiSW5vZGVzXG4iCisidm9uIEdydXBwZSAlZyB6dSBmaW5kZW4gaXN0LlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbF9oaSBmw7xyIElub2RlICVpICglUSkgaXN0ICVOLCBzb2xsdGUgTnVsbCBzZWluLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIlByb2JsZW0gaW0gSFRSRUUtVmVyemVpY2huaXMtSW5vZGUgJWQ6IFd1cnplbGtub3RlbiBpc3QgdW5nw7xsdGlnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJQcm9ibGVtIGltIEhUUkVFLVZlcnplaWNobmlzLUlub2RlICVkOiBXdXJ6ZWxrbm90ZW4gaXN0IHVuZ8O8bHRpZ1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyOAorIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgaGFzIG5vIGNoZWNrc3VtLlxuIgorbXNnc3RyICJWZXJ6ZWljaG5pcy1Jbm9kZSAlaSwgJUIsIE9mZnNldCAlTjogVmVyemVpY2huaXMgZGVmZWt0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJEdXJjaGdhbmcgMzogVmVyemVpY2huaXN2ZXJrbsO8cGZ1bmdlbiB3ZXJkZW4gZ2VwcsO8ZnRcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJSb290LUlub2RlIG5pY2h0IHp1Z2VvcmRuZXQuICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiS2VpbiBQbGF0eiBpbSBWZXJ6ZWljaG5pcyDigJ5sb3N0K2ZvdW5k4oCcLiAgIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICJOaWNodCB2ZXJidW5kZW5lciBWZXJ6ZWljaG5pcy1Jbm9kZSAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL2xvc3QrZm91bmQgbmljaHQgZ2VmdW5kZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIuKAni4u4oCcIGluICVRICglaSkgaXN0ICVQICglaiksIHNvbGx0ZSAlcSAoJWQpIHNlaW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBvciBub24tZXhpc3RlbnQgL2xvc3QrZm91bmQuICBDYW5ub3QgcmVjb25uZWN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODUKK21zZ2lkICJCYWQgb3Igbm9uLWV4aXN0ZW50IC9AbC4gIENhbm5vdCByZWNvbm5lY3QuXG4iCittc2dzdHIgIiIKKyJWZXJ6ZWljaG5pcyAvbG9zdCtmb3VuZCBpc3QgZmFsc2NoIG9kZXIgZmVobHQuIFdpZWRlcnZlcmJpbmRlbiBuaWNodCAiCisibcO2Z2xpY2guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkIG5vdCBleHBhbmQgL2xvc3QrZm91bmQ6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgZXhwYW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiRXJ3ZWl0ZXJuIHZvbiAvbG9zdCtmb3VuZCBuaWNodCBtw7ZnbGljaDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgIldpZWRlcnZlcmJpbmRlbiB2b24gJWkgbmljaHQgbcO2Z2xpY2g6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgd8OkaHJlbmQgZGVyIFN1Y2hlIG5hY2ggL2xvc3QrZm91bmQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19AYjogJW0gd8OkaHJlbmQgZGVzIFZlcnN1Y2hlcywgZGFzIFZlcnplaWNobmlzIC9sb3N0K2ZvdW5kIHp1ICIKKyJlcnpldWdlbi5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgIiIKKyJleHQyZnNfbmV3X0BpOiAlbSB3w6RocmVuZCBkZXMgVmVyc3VjaGVzLCBkYXMgVmVyemVpY2huaXMgL2xvc3QrZm91bmQgenUgIgorImVyemV1Z2VuLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19kaXJfQGI6ICVtIHfDpGhyZW5kIGRlcyBWZXJzdWNoZXMsIGRhcyBWZXJ6ZWljaG5pcyAvbG9zdCtmb3VuZCB6dSAiCisiZXJ6ZXVnZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiIgorImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHfDpGhyZW5kIGRlcyBTY2hyZWliZW5zIGRlcyBWZXJ6ZWljaG5pc2Jsb2NrcyBmw7xyIC8iCisibG9zdCtmb3VuZFxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBhZGp1c3RpbmcgaW5vZGUgY291bnQgb24gaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGFkanVzdGluZyBAaSBjb3VudCBvbiBAaSAlaVxuIgorbXNnc3RyICJGZWhsZXIgd8OkaHJlbmQgZGVzIEFucGFzc2VucyBkZXIgSW5vZGUtQW56YWhsIGF1ZiBJbm9kZSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRWlnZW50w7xtZXIgdm9uIElub2RlICVpIGtvbm50ZSBuaWNodCByZXBhcmllcnQgd2VyZGVuOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkVpZ2VudMO8bWVyIHZvbiBJbm9kZSAlaSBrb25udGUgbmljaHQgcmVwYXJpZXJ0IHdlcmRlbjogXG4iCisiVmVyemVpY2huaXNlaW50cmFnIGRlcyBFaWdlbnTDvG1lcnMgd3VyZGUgbmljaHQgZ2VmdW5kZW4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIEVyemV1Z2VuIGRlcyBXdXJ6ZWx2ZXJ6ZWljaG5pc3NlcyAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyAvbG9zdCtmb3VuZCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIC9AbCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBFcnpldWdlbiBkZXMgVmVyemVpY2huaXNzZXMgL2xvc3QrZm91bmQgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgIkRlciBXdXJ6ZWwtSW5vZGUgaXN0IGtlaW4gVmVyemVpY2huaXM7IEFiYnJ1Y2guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIk9obmUgV3VyemVsLUlub2RlIGlzdCB3ZWl0ZXJlcyBBcmJlaXRlbiBuaWNodCBtw7ZnbGljaC5cbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgbm90IGEgZGlyZWN0b3J5IChpbm89JWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICIvQGwgaXMgbm90IGEgQGQgKGlubz0laSlcbiIKK21zZ3N0ciAiL2xvc3QrZm91bmQgaXN0IGtlaW4gVmVyemVpY2huaXMgKGlubz0laSlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3NQorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKKyMsIGZ1enp5Cittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICJEYXMgQWJiaWxkICglcykgaXN0IHZlcnNjaGzDvHNzZWx0XG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiRHVyY2hnYW5nIDNBOiBWZXJ6ZWljaG5pc3NlIHdlcmRlbiBvcHRpbWllcnRcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICJkaXJzX3RvX2hhc2ggSXRlcmF0b3Iga29ubnRlIG5pY2h0IGVyemV1Z3Qgd2VyZGVuOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIlZlcnplaWNobmlzICVxICglZCkga29ubnRlIG5pY2h0IG9wdGltaWVydCB3ZXJkZW46ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgxMgorbXNnaWQgIk9wdGltaXppbmcgZGlyZWN0b3JpZXM6ICIKK21zZ3N0ciAiVmVyemVpY2huaXNzZSB3ZXJkZW4gb3B0aW1pZXJ0OiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICJEdXJjaGdhbmcgNDogUmVmZXJlbnp6w6RobGVyIHdlcmRlbiDDvGJlcnByw7xmdFxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIk5pY2h0IHZlcmJ1bmRlbmVyIElub2RlIGRlciBMw6RuZ2UgTnVsbCAlaS4gICIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQGkgJWlcbiIKK21zZ3N0ciAiTmljaHQgdmVyYnVuZGVuZXIgSW5vZGUgJWlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcmVmIGNvdW50IGlzICVJbCwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDQKK21zZ2lkICJAaSAlaSByZWYgY291bnQgaXMgJUlsLCBAcyAlTi4gICIKK21zZ3N0ciAiRGVyIFJlZmVyZW56esOkaGxlciB2b24gSW5vZGUgJWkgaXN0ICVJbCwgc29sbHRlIGFiZXIgJU4gc2Vpbi4gICIKKworIyBTbyBldHdhcyBzb2xsdGUgaW4gZWluZXIgZXJuc3R6dW5laG1lbmRlbiBTb2Z0d2FyZSBuaWNodCBlcnNjaGVpbmVuLAorIyBzZWxic3Qgd2VubiBlcyAoZGVyYmVyKSBIdW1vciBpc3QuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuCisjLiBALWV4cGFuZGVkOiBcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuCisjLiBALWV4cGFuZGVkOiBpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDgKK21zZ2lkICIiCisiV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbiIKKyJcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuIgorIkBpX2xpbmtfaW5mb1slaV0gaXMgJU4sIEBpLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBAcyB0aGUgc2FtZSFcbiIKK21zZ3N0ciAiIgorIldBUk5VTkc6IFBST0dSQU1NSUVSRkVITEVSIElOIEUyRlNDSyFcbiIKKyJcdE9ERVIgSkVNQU5EIFBSw5xGVCBFSU4gRUlOR0VIw4ROR1RFUyAoQUtUSVZFUykgREFURUlTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpc3QgJU4sIEBpLmlfbGlua3NfY291bnQgaXN0ICVJbC4gU2llIHNvbGx0ZW4gaWRlbnRpc2NoICIKKyJzZWluIVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb25cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODU4Cittc2dpZCAiUGFzcyA1OiBDaGVja2luZyBAZyBzdW1tYXJ5IGluZm9ybWF0aW9uXG4iCittc2dzdHIgIkR1cmNoZ2FuZyA1OiBadXNhbW1lbmdlZmFzc3RlIEdydXBwZW5pbmZvcm1hdGlvbiB3aXJkIGdlcHLDvGZ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiQXVmZsO8bGxieXRlIGFtIEVuZGUgZGVyIElub2RlLUJpdG1hcCBpc3QgbmljaHQgZ2VzZXR6dC4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIkF1ZmbDvGxsYnl0ZSBhbSBFbmRlIGRlciBJbm9kZS1CaXRtYXAgaXN0IG5pY2h0IGdlc2V0enQuICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIlVudGVyc2NoaWVkZSBpbiBkZXIgQmxvY2stQml0bWFwOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJVbnRlcnNjaGllZGUgaW4gZGVyIElub2RlLUJpdG1hcDogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiRGllIEFuemFobCBmcmVpZXIgSW5vZGVzIGbDvHIgR3J1cHBlICMlZyBpc3QgZmFsc2NoICglaSwgZ2V6w6RobHQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorIkRpZSBBbnphaGwgZGVyIFZlcnplaWNobmlzc2UgZsO8ciBHcnVwcGUgIyVnIGlzdCBmYWxzY2ggKCVpLCBnZXrDpGhsdD0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIkRpZSBBbnphaGwgZnJlaWVyIElub2RlcyBpc3QgZmFsc2NoICglaSwgZ2V6w6RobHQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiRGllIEFuemFobCBmcmVpZXIgQmzDtmNrZSBpbiBHcnVwcGUgIyVnIGlzdCBmYWxzY2ggKCViLCBnZXrDpGhsdD0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzMworbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIkRpZSBBbnphaGwgZnJlaWVyIEJsw7Zja2UgaXN0IGZhbHNjaCAoJWIsIGdlesOkaGx0PSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorIlBST0dSQU1NSUVSRkVITEVSOiBEYXRlaXN5c3RlbSAoIyVOKSBCaXRtYXAtRW5kcHVua3RlICglYiwgJWMpIHN0aW1tZW5lbiAiCisibmljaHRcbiIKKyJtaXQgZGVuIGJlcmVjaG5ldGVuIEJpdG1hcC1FbmRwdW5rdGVuICglaSwgJWopIMO8YmVyZWluXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0NAorbXNnaWQgIkludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKCVOKVxuIgorbXNnc3RyICJJbnRlcm5lciBGZWhsZXI6IGRhcyBFbmRlIGRlciBCaXRtYXAgKCVOKSB3aXJkIGVycmF0ZW5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICJGZWhsZXIgYmVpbSBIaW5laW5rb3BpZXJlbiBkZXIgSW5vZGUtQml0bWFwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIEhpbmVpbmtvcGllcmVuIGRlciBFcnNhdHotQmxvY2tiaXRtYXA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIiIKKyJCbMO2Y2tlIHZvbiBHcnVwcGUgJWcgc2luZCBpbiBCZW51dHp1bmcsIG9id29obCBkaWUgR3J1cHBlIGFscyBCTE9DS19VTklOSVQgIgorIm1hcmtpZXJ0IGlzdFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICIiCisiRGllIElub2RlcyBkZXIgR3J1cHBlICVnIHNpbmQgaW4gQmVudXR6dW5nLCBvYndvaGwgZGllIEdydXBwZSBhbHMgIgorIklOT0RFX1VOSU5JVCBtYXJraWVydCBpc3RcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgIkpvdXJuYWwgd2lyZCB3aWVkZXJoZXJnZXN0ZWxsdCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIlF1b3RhLUluZm8gZsO8ciBUeXAgJU4gd2lyZCBha3R1YWxpc2llcnQiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiYmVpbSBTZXR6ZW4gZGVyIEJsb2NrZ3J1cHBlbi1QcsO8ZnN1bW1lbmluZm86ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIGRlIERlciBEYXRlaXN5c3RlbWluZm86ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIkZlaGxlciBiZWltIFNjaHJlaWJlbiBkZXIgZ2VwdWZmZXJ0ZW4gRGF0ZW46ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyNgorIywgZnV6enkKK21zZ2lkICJFcnJvciB3cml0aW5nIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU46ICVtXG4iCittc2dzdHIgIlF1b3RhLUluZm8gZsO8ciBUeXAgJU4gd2lyZCBha3R1YWxpc2llcnQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgIlVuYmVudXR6dGVyIEZlaGxlcmNvZGUgKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiSUdOT1JJRVJUIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIkJlbnV0enRlciBTcGVpY2hlcjogJWQsIHZlcmdhbmdlbmRlIFplaXQ6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAiR3LDtsOfZSBkZXMgSW5vZGVzPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgImJlaW0gU3RhcnRlbiBkZXIgSW5vZGUtUHLDvGZ1bmciCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInfDpGhyZW5kIGRlciBJbm9kZS1QcsO8ZnVuZyIKKworIzogZTJmc2NrL3N1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlub2RlICVkIgorbXNnc3RyICJ3w6RocmVuZCBkZXMgQXVmcnVmcyB2b24gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZsO8ciBJbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJ3w6RocmVuZCBkZXMgQXVmcnVmcyB2b24gZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZsO8ciBJbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiV2lyZCBnZWvDvHJ6dCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIldpcmQgYmVyZWluaWd0IgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJBdWZydWY6ICVzIFstcGFueXJjZGZ2dERGVl0gWy1iIFN1cGVyYmxvY2tdIFstQiBCbG9ja2dyw7bDn2VdXG4iCisiXHRcdFstSSBJbm9kZV9QdWZmZXJfQmzDtmNrZV0gWy1QIFByb3plc3NfSW5vZGVncsO2w59lXVxuIgorIlx0XHRbLWx8LUwgQmFkX0Jsb2Nrc19EYXRlaV0gWy1DIERhdGVpZGVza3JpcHRvcl0gWy1qIGV4dGVybmVzX0pvdXJuYWxdXG4iCisiXHRcdFstRSBlcndlaXRlcnRlX09wdGlvbmVuXSBHZXLDpHRcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk5vdGZhbGxoaWxmZTpcbiIKKyIgLXAgICAgICAgIGF1dG9tYXRpc2NoZSBSZXBhcmF0dXIgKGtlaW5lIEZyYWdlbilcbiIKKyIgLW4gICAgICAgIGtlaW5lIFZlcsOkbmRlcnVuZ2VuIGFtIERhdGVpc3lzdGVtIHZvcm5laG1lblxuIgorIiAteSAgICAgICAgQWxsZSBGcmFnZW4gbWl0IOKAnkph4oCdIGJlbmF0d29ydGVuXG4iCisiIC1jICAgICAgICBOYWNoIGRlZmVrdGVuIEJsw7Zja2VuIHN1Y2hlbiB1bmQgZGllc2UgenVyXG4iCisiICAgICAgICAgICAgIExpc3RlIGRlciBkZWZla3RlbiBCbMO2Y2tlIGhpbnp1ZsO8Z2VuXG4iCisiIC1mICAgICAgICBEaWUgw5xiZXJwcsO8ZnVuZyBlcnp3aW5nZW4sIGF1Y2ggd2VubiBhbGxlcyBpLk8uIGVyc2NoZWludFxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4CisjLCBmdXp6eQorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBBdXNmw7xocmxpY2hlIEF1c2dhYmVuXG4iCisiIC1iIFN1cGVyYmxvY2sgICAgICAgIFN1cGVyYmxvY2trb3BpZSB2ZXJ3ZW5kZW5cbiIKKyIgLUIgQmxvY2tncsO2w59lICAgICAgICBCbG9ja2dyw7bDn2UgYmVpbSBTdWNoZW4gZGVzIFN1cGVyYmxvY2tzIGVyendpbmdlblxuIgorIiAtaiBleHRlcm5lcy1Kb3VybmFsICBBbmdhYmUgZGVzIFNwZWljaGVyb3J0ZXMgZGVzIGV4dGVybmVuIEpvdW5hbHNcbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAgWnVyIExpc3RlIGRlciBkZWZla3RlbiBCbMO2Y2tlIGhpbnp1ZsO8Z2VuXG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIExpc3RlIGRlciBkZWZla3RlbiBCbMO2Y2tlIGRlZmluaWVyZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICV1LyV1IGZpbGVzICglMGQuJWQlJSBub24tY29udGlndW91cyksICVsbHUvJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXM6ICV1LyV1IERhdGVpZW4gKCUwZC4lZCUlIG5pY2h0IHp1c2FtbWVuaMOkbmdlbmQpLCAlbGx1LyVsbHUgQmzDtmNrZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IElub2RlIGlzdCBpbiBCZW51dHp1bmcgKCUyLjJmJSUgdm9uICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBJbm9kZXMgc2luZCBpbiBCZW51dHp1bmcgKCUyLjJmJSUgdm9uICV1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGUgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBuaWNodCB6dXNhbW1lbmjDpG5nZW5kZSBEYXRlaSAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgbmljaHQgenVzYW1tZW5ow6RuZ2VuZGUgRGF0ZWllbiAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3J5ICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcmllcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgbmljaHQgenVzYW1tZW5ow6RuZ2VuZGVzIFZlcnplaWNobmlzICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBuaWNodCB6dXNhbW1lbmjDpG5nZW5kZSBWZXJ6ZWljaG5pc3NlICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiAgICAgICAgICAgICAjIHZvbiBJbm9kZXMgbWl0IGluZC9kaW5kL3RpbmQgQmzDtmNrZW46ICV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIEhpc3RvZ3JhbW0gZGVyIFRpZWZlIHZvbiBFcndlaXRlcnVuZ2VuOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IEJsb2NrIHdpcmQgYmVudXR6dCAoJTIuMmYlJSB2b24gJWxsdSlcbiIKK21zZ3N0clsxXSAiJTEybGx1IEJsw7Zja2Ugd2VyZGVuIGJlbnV0enQgKCUyLjJmJSUgdm9uICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1IGRlZmVrdGVyIEJsb2NrXG4iCittc2dzdHJbMV0gIiUxMnUgZGVmZWt0ZSBCbMO2Y2tlXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgZ3Jvw59lIERhdGVpXG4iCittc2dzdHJbMV0gIiUxMnUgZ3Jvw59lIERhdGVpZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgcmVndWzDpHJlIERhdGVpXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IHJlZ3Vsw6RyZSBEYXRlaWVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJTEydSBWZXJ6ZWljaG5pc1xuIgorbXNnc3RyWzFdICIlMTJ1IFZlcnplaWNobmlzc2VcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgemVpY2hlbm9yaWVudGllcnRlIEdlcsOkdGVkYXRlaVxuIgorbXNnc3RyWzFdICIlMTJ1IHplaWNoZW5vcmllbnRpZXJ0ZSBHZXLDpHRlZGF0ZWllblxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgQmxvY2tnZXLDpHRlZGF0ZWlcbiIKK21zZ3N0clsxXSAiJTEydSBCbG9ja2dlcsOkdGVkYXRlaWVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiUxMnUgRmlmb1xuIgorbXNnc3RyWzFdICIlMTJ1IEZpZm9zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGlua1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxpbmtzXG4iCittc2dzdHJbMF0gIiUxMnUgVmVya27DvHBmdW5nXG4iCittc2dzdHJbMV0gIiUxMnUgVmVya27DvHBmdW5nZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IHN5bWJvbGlzY2hlIFZlcmtuw7xwZnVuZyIKK21zZ3N0clsxXSAiJTEydSBzeW1ib2xpc2NoZSBWZXJrbsO8cGZ1bmdlbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBzY2huZWxsZSBzeW1ib2xpc2NoZSBWZXJrbsO8cGZ1bmcpXG4iCittc2dzdHJbMV0gIiAoJXUgc2NobmVsbGUgc3ltYm9saXNjaGUgVmVya27DvHBmdW5nZW4pXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IFNvY2tldFxuIgorbXNnc3RyWzFdICIlMTJ1IFNvY2tldHNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBEYXRlaVxuIgorbXNnc3RyWzFdICIlMTJ1IERhdGVpZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgImJlaSBkZXIgUHLDvGZ1bmcsIG9iICVzIGVpbmdlaMOkbmd0IGlzdC4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICJXYXJudW5nISAlcyBpc3QgZWluZ2Vow6RuZ3QuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIldhcm51bmchICVzIHdpcmQgdmVyd2VuZGV0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIlcyBpc3QgZWluZ2Vow6RuZ3QuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgd2lyZCB2ZXJ3ZW5kZXQuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY5Cittc2dpZCAiIgorIkNhbm5vdCBjb250aW51ZSwgYWJvcnRpbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJGb3J0c2V0enVuZyBuaWNodCBtw7ZnbGljaCwgd2lyZCBhYmdlYnJvY2hlbi5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyJXQVJOVU5HISEhIERhcyBEYXRlaXN5c3RlbSBpc3QgZWluZ2Vow6RuZ3QuIFdlbm4gU2llIGZvcnRmYWhyZW4sICIKKyIqKipXRVJERU4qKipcbiIKKyJTaWUgKioqU0NIV0VSV0lFR0VOREUqKiogU2Now6RkZW4gYW0gRGF0ZWlzeXN0ZW0gdmVydXJzYWNoZW4uXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJXaXJrbGljaCBmb3J0ZmFocmVuIgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgIlByw7xmdW5nIGFiZ2Vicm9jaGVuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgZW50aMOkbHQgZWluIGZlaGxlcmhhZnRlcyBEYXRlaXN5c3RlbSIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIHd1cmRlIG5pY2h0IG9yZG51bmdzZ2Vtw6TDnyBhdXNnZWjDpG5ndCIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIgorIkVpZ2Vuc2NoYWZ0ZW4gZGVzIHByaW3DpHJlbiBTdXBlcmJsb2NrcyB1bnRlcnNjaGVpZGVuIHNpY2ggdm9uIGRlciAiCisiRGF0ZW5zaWNoZXJ1bmciCisKKyM6IGUyZnNjay91bml4LmM6Mzc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiBoYXMgYmVlbiBtb3VudGVkICV1IHRpbWVzIHdpdGhvdXQgYmVpbmcgY2hlY2tlZCIKK21zZ3N0ciAiIHd1cmRlICV1LW1hbCBvaG5lIMOcYmVycHLDvGZ1bmcgZWluZ2Vow6RuZ3QiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiIKKyIgaGF0IGVpbmVuIGluIGRlciBadWt1bmZ0IGxpZWdlbmRlbiBaZWl0cHVua3QgZGVyIGxldHp0ZW4gUMO8ZnVuZyBkZXMgIgorIkRhdGVpc3lzdGVtcyIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgd3VyZGUgJXUgVGFnZSBvaG5lIMOcYmVycHLDvGZ1bmcgZ2VudXR6dCIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAiLCBQcsO8ZnVuZyBlcnp3dW5nZW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjbGVhbiwgJXUvJXUgZmlsZXMsICVsbHUvJWxsdSBibG9ja3MiCittc2dzdHIgIiVzOiBzYXViZXIsICV1LyV1IERhdGVpZW4sICVsbHUvJWxsdSBCbMO2Y2tlIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NAorbXNnaWQgIiAoY2hlY2sgZGVmZXJyZWQ7IG9uIGJhdHRlcnkpIgorbXNnc3RyICIgKFByw7xmdW5nIG5hY2ggbsOkY2hzdGVtIEVpbmjDpG5nZW4pIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NworbXNnaWQgIiAoY2hlY2sgYWZ0ZXIgbmV4dCBtb3VudCkiCittc2dzdHIgIiAoUHLDvGZ1bmcgbmFjaCBuw6RjaHN0ZW0gRWluaMOkbmdlbikiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIiAoUHLDvGZ1bmcgbmFjaCAlbGQgRWluaMOkbmdldm9yZ8OkbmdlbikiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIkZlaGxlcjogL2Rldi9udWxsICglcykga2FubiBuaWNodCBnZcO2ZmZuZXQgd2VyZGVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJVbmfDvGx0aWdlIEVBLVZlcnNpb24uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICJVbmfDvGx0aWdlciDigJ5yZXNpemXigJwtUGFyYW1ldGVyOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiVW5iZWthbm50ZSBlcndlaXRlcnRlIE9wdGlvbjogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YXhmZWhsZXIgaW4gZGVyIEtvbmZpZ3VyYXRpb25zZGF0ZWkgdm9uIGUyZnNjayAoJXMsIFplaWxlICVkKVxuIgorIlx0JXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgdmFsaWRhdGluZyBmaWxlIGRlc2NyaXB0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkZlaGxlciBiZWkgw5xiZXJwcsO8ZnVuZyBkZXMgRGF0ZWktRGVza3JpcHRvcnMgJWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAiVW5nw7xsdGlnZXIg4oCeY29tcGxldGlvbiBpbmZvcm1hdGlvbuKAnC1EYXRlaS1EZXNrcmlwdG9yIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiTnVyIGVpbmUgZGVyIE9wdGlvbmVuIC1wLy1hLCAtbiBvZGVyIC15IGRhcmYgYW5nZWdlYmVuIHdlcmRlbi4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJEaWUgT3B0aW9uIC10IHdpcmQgdm9uIGRpZXNlciBlMmZzY2stVmVyc2lvbiBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICJOaWNodCBtw7ZnbGljaCwg4oCeJXPigJwgYXVmenVsw7ZzZW4iCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLW4gdW5kIC1EIHNjaGxpZcOfZW4gc2ljaCBnZWdlbnNlaXRpZyBhdXMuIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC1uIHVuZCAtYyBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzLiIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkRpZSBPcHRpb25lbiAtbiB1bmQgLWwvLUwgc2NobGllw59lbiBzaWNoIGdlZ2Vuc2VpdGlnIGF1cy4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJEaWUgT3B0aW9uZW4gLW4gdW5kIC1EIHNjaGxpZcOfZW4gc2ljaCBnZWdlbnNlaXRpZyBhdXMuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorIywgZnV6enkKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiRGllIE9wdGlvbmVuIC1uIHVuZCAtRCBzY2hsaWXDn2VuIHNpY2ggZ2VnZW5zZWl0aWcgYXVzLiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbmVuIC1jIHVuZCAtbC8tTCBkw7xyZmVuIG5pY2h0IGdsZWljaHplaXRpZyB2ZXJ3ZW5kZXQgd2VyZGVuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIjJGU0NLX0pCRF9ERUJVRyDigJ4lc+KAnCBpc3Qga2VpbmUgR2FuenphaGxcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVW5nw7xsdGlnZXMgbmljaHQtbnVtZXJpc2NoZXMgQXJndW1lbnQgZsO8ciAtJWMgKOKAniVz4oCcKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyJNTVAtSW50ZXJ2YWxsIGlzdCAldSBTZWt1bmRlbiB1bmQgZGllIGdlc2FtdGUgV2FydGV6ZWl0IGlzdCAldSBTZWt1bmRlbi5cbiIKKyJCaXR0ZSB3YXJ0ZW4uLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAiYmVpbSBQcsO8ZmVuIGRlcyBNTVAtQmxvY2tzIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorIldlbm4gU2llIHNpY2hlciBzaW5kLCBkYXNzIGRhcyBEYXRlaXN5c3RlbSBhdWYga2VpbmVtIEtub3RlbiBiZW51dHp0IHdpcmQsXG4iCisiZsO8aHJlbiBTaWUgYml0dGUgRm9sZ2VuZGVzIGF1czpcbiIKKyLigJ50dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfeKAnFxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyMzIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2siCittc2dzdHIgImJlaW0gTGVzZW4gZGVzIE1NUC1CbG9ja3MuIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyJEYXMgYmVzdGVoZW5kZSBEYXRlaXN5c3RlbSB3aXJkIMO8YmVyc2NocmllYmVuLCBkaWVzIGthbm4gbWl0dGVscyBkZXMgIgorIkJlZmVobHNcbiIKKyLigJ5lMnVuZG8gJXMgJXPigJwgcsO8Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgImJlaW0gVmVyc3VjaCwgJXMgenUgbMO2c2NoZW4iCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyJiZWltIFZlcnN1Y2gsIGRpZSBEYXRlaSBtaXQgZGVuIERhdGVuIHp1ciBSw7xja2fDpG5naWdtYWNodW5nIGFuenVsZWdlblxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiRmVobGVyOiBleHQyZnMtQmlibGlvdGhla3MtVmVyc2lvbiBpc3QgenUgYWx0IVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICJiZWkgZGVyIFByb2dyYW1taW5pdGlhbGlzaWVydW5nIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHQlcyB3aXJkIHZlcndlbmRldCwgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAiRWluIFRlcm1pbmFsIHdpcmQgZsO8ciBpbnRlcmFrdGl2ZSBSZXBhcmF0dXJlbiBiZW7DtnRpZ3QiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXM6ICVzIERhdGVuc2ljaGVydW5ncy1CbMO2Y2tlIHdlcmRlbiB2ZXJzdWNodCAuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY4Cittc2dpZCAiU3VwZXJibG9jayBpbnZhbGlkLCIKK21zZ3N0ciAiU3VwZXJibG9jayB1bmfDvGx0aWcsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiR3J1cHBlbi1EZXNrcmlwdG9yZW4gc2NoZWluZW4gZGVmZWt0IHp1IHNlaW4uLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyBiZWltIEJlbnV0emVuIGRlciBEYXRlbnNpY2hlcnVuZ3MtQmzDtmNrZSIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6IGVzIHdpcmQgenVtIG9yaWdpbmFsZW4gU3VwZXJibG9jayB6dXLDvGNrIGdla2VocnRcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRpZXNlIERhdGVpc3lzdGVtLVJldmlzaW9uIGlzdCBvZmZlbnNpY2h0bGljaCB6dSBuZXUgZsO8ciBkaWVzZSBWZXJzaW9uIFxuIgorInZvbiBlMmZzY2sgKG9kZXIgZGVyIERhdGVpc3lzdGVtLVN1cGVyYmxvY2sgaXN0IGRlZmVrdCkuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIkvDtm5udGUgZXMgZWluZSBQYXJ0aW9uIGRlciBMw6RuZ2UgTnVsbCBzZWluP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJTaWUgYmVuw7Z0aWdlbiAlcy0gb2RlciByb290LVJlY2h0ZSBmw7xyIGRhcyBEYXRlaXN5c3RlbS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICIiCisiTcO2Z2xpY2hlcndlaXNlIGlzdCBkaWUgUGFydGl0aW9uIG5pY2h0IHZvcmhhbmRlbiBvZGVyIGVpbmUgU3dhcC1QYXJ0aXRpb24/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiSXN0IGRhcyBEYXRlaXN5c3RlbSBlaW5nZWjDpG5ndCBvZGVyIGV4a2x1c2l2IHZvbiBlaW5lbSBhbmRlcmVuIFByb2dyYW1tXG4iCisiZ2XDtmZmbmV0IHdvcmRlbj9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiSXN0IGRhcyBHZXLDpHQgbcO2Z2xpY2hlcndlaXNlIG5pY2h0IHZvcmhhbmRlbj9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJMYXVmd2VyayBpc3Qgc2NocmVpYmdlc2Now7x0enQsIG51dHplbiBTaWUgZGllIE9wdGlvbiAtbixcbiIKKyJ1bSBlcyBpbSBOdXItTGVzZW4tTW9kdXMgenUgcHLDvGZlbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjA0Cittc2dpZCAiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIgorbXNnc3RyICJOZXVlcmUgVmVyc2lvbiB2b24gZTJmc2NrIGJlbsO2dGlndCEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgInfDpGhyZW5kIGRlciBQcsO8ZnVuZyBkZXMgZXh0My1Kb3VybmFscyBmw7xyICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiT2huZSBXdXJ6ZWwtSW5vZGUgaXN0IHdlaXRlcmVzIEFyYmVpdGVuIG5pY2h0IG3DtmdsaWNoLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisiV2FybnVuZzogSm91cm5hbC1XaWVkZXJoZXJzdGVsbHVuZyB3aXJkIMO8YmVyc3BydW5nZW4sIGRhIHNpY2ggZGFzICIKKyJEYXRlaXN5c3RlbVxuIgorImltIE51ci1MZXNlbi1Nb2R1cyBiZWZpbmRldC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJTdXBlcmJsb2NrLUZsYWdzIGtvbm50ZW4gYXVmICVzIG5pY2h0IGdlc2V0enQgd2VyZGVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICJEZXIgSm91cm5hbC1TdXBlcmJsb2NrIHd1cmRlIG5pY2h0IGdlZnVuZGVuIVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkRhcyBKb3VybmFsIHd1cmRlIGVudGZlcm50XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJiZWkgZGVyIFdpZWRlcmhlcnN0ZWxsdW5nIGRlcyBleHQzLUpvdXJuYWxzIHZvbiAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIKK21zZ3N0ciAiJXMgYmVzaXR6dCBuaWNodCB1bnRlcnN0w7x0enRlIEVpZ2Vuc2NoYWZ0KGVuKToiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyBiZWltIExlc2VuIGRlcyBCYWQtQmxvY2stSW5vZGVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiRGFzIHZlcmhlacOfdCBuaWNodHMgR3V0ZXMsIGFiZXIgZXMgd2lyZCB0cm90emRlbSB2ZXJzdWNodCAuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIKK21zZ3N0ciAiSm91cm5hbCB3aXJkIGVyc3RlbGx0ICglZCBCbMO2Y2tlKTogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiIEVybGVkaWd0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIEpvdXJuYWwgd3VyZGUgd2llZGVyaGVyZ2VzdGVsbHQgLSBEYXRlaXN5c3RlbSBpc3QgbnVuIHdpZWRlciBleHQzICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJhYmdlYnJvY2hlbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiBlMmZzY2sgYWJnZWJyb2NoZW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICJlMmZzY2sgd2lyZCBuZXUgZ2VzdGFydGV0IC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAiYmVpbSBSw7xja3NldHplbiBkZXMgS29udGV4dHMiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogREFURUlTWVNURU0gV1VSREUgVkVSw4ROREVSVCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVzOiAqKioqKiBMSU5VWCBNVVNTIE5FVSBHRVNUQVJURVQgV0VSREVOICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkyNSBlMmZzY2svdXRpbC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTlVORzogTm9jaCBGZWhsZXIgaW0gRGF0ZWlzeXN0ZW0gICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAiakoiCisKKyM6IGUyZnNjay91dGlsLmM6MTk1Cittc2dpZCAibk4iCittc2dzdHIgIm5OIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NgorbXNnaWQgImFBIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MTk3Cittc2dpZCAiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjIxMworbXNnaWQgIjx5PiIKK21zZ3N0ciAiPGo+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNQorbXNnaWQgIjxuPiIKK21zZ3N0ciAiPG4+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNworbXNnaWQgIiAoeS9uKSIKK21zZ3N0ciAiIChqL24pIgorCisjOiBlMmZzY2svdXRpbC5jOjI0MAorbXNnaWQgImNhbmNlbGxlZCFcbiIKK21zZ3N0ciAiYWJnZWJyb2NoZW4hXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgImphXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAibmVpblxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gbmVpblxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IGphXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJqYSIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibmVpbiIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiB1bmfDvGx0aWdlciBCaXRtcGEtQmxvY2soLUJsw7Zja2UpIGbDvHIgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzA3Cittc2dpZCAicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIKK21zZ3N0ciAiSW5vZGUgdW5kIEJsb2NrLUJpdG1hcHMgd2VyZGVuIGdlbGVzZW4iCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgInfDpGhyZW5kIGRlcyB3aWVkZXJob2x0ZW4gVmVyc3VjaGVzLCBCaXRtYXBzIGbDvHIgJXMgZWluenVsZXNlbiIKKworIzogZTJmc2NrL3V0aWwuYzozMzEKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICJCbG9jay0gdW5kIElub2RlLUJpdG1hcHMgd2VyZGVuIGdlc2NocmllYmVuIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICIiCisid8OkaHJlbmQgZGVzIHdpZWRlcmhvbHRlbiBWZXJzdWNoZXMsIEJsb2NrLSB1bmQgSW5vZGUtQml0bWFwcyBmw7xyICVzIHp1ICIKKyJzY2hyZWliZW4uIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IFVORVJXQVJURVRFIElOS09OU0lTVEVOWjsgZnNjayBNQU5VRUxMIEFVU0bDnEhSRU5cbiIKKyJcdChkLmguIG9obmUgZGllIE9wdGlvbmVuIC1hIG9kZXIgLXApXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDI5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKK21zZ3N0ciAiQmVudXR6dGVyIFNwZWljaGVyOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKKworIzogZTJmc2NrL3V0aWwuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdSwgIgorbXNnc3RyICJCZW51dHp0ZXIgU3BlaWNoZXI6ICVsdSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICJaZWl0OiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgImFiZ2VsYXVmZW5kZSBaZWl0OiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiYmVpbSBMZXNlbiB2b24gSW5vZGUgJWx1IGluICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gdm9uIElub2RlICVsdSBpbiAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo3NjUKK21zZ2lkICIiCisiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBtb2RpZmllZCB3aGlsZSBmc2NrIGlzICIKKyJydW5uaW5nLlxuIgorbXNnc3RyICIiCisiVU5FUldBUlRFVEUgSU5LT05TSVNURU5aOiBkYXMgRGF0ZWlzeXN0ZW0gd2lyZCB2ZXLDpG5kZXJ0LCB3w6RocmVuZCBmc2NrICIKKyJsw6R1ZnQuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzIKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJlcmxlZGlndCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgIgorIm1heF9iYWRfYmxvY2tzXVxuIgorIiAgICAgICBbLXAgbnVtX3Bhc3Nlc10gWy10IHRlc3RfcGF0dGVybiBbLXQgdGVzdF9wYXR0ZXJuIFsuLi5dXV1cbiIKKyIgICAgICAgZGV2aWNlIFtsYXN0X2Jsb2NrIFtmaXJzdF9ibG9ja11dXG4iCittc2dzdHIgIiIKKyJBdWZydWY6ICVzIFstYiBCbG9ja2dyw7bDn2VdIFstaSBFaW5nYWJlZGF0ZWldIFstbyBBdXNnYWJlZGF0ZWldIFstc3Z3bmZdXG4iCisiICAgICAgICBbLWMgQmzDtmNrZV9hdWZfZWlubWFsXSBbLWQgIgorIlZlcnrDtmdlcnVuZ3NmYWt0b3Jfendpc2NoZW5fTGVzZWR1cmNoZ8Okbmdlbl1cbiIKKyIgICAgICAgIFstZSBtYXhpbWFsZV9kZWZla3RlX0Jsw7Zja2VdIFstcCBBbnphaGxfRHVyY2hnw6RuZ2VdXG4iCisiICAgICAgICBbLXQgVGVzdG11c3RlciBbLXQgVGVzdG11c3RlciBbLi4uXV1dXG4iCisiICAgICAgICBHZXLDpHQgW2xldHp0ZXJfQmxvY2sgW1N0YXJ0YmxvY2tdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IERpZSBPcHRpb25lbiAtbiB1bmQgLXcgc2NobGllw59lbiBzaWNoIGdlZ2Vuc2VpdGlnIGF1cy5cbiIKKyJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAiJTYuMmYlJSBlcmxlZGlndCwgJXMgdmVyc3RyaWNoZW4uICglZC8lZC8lZCBGZWhsZXIpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICJFcyB3aXJkIG1pdCB6dWbDpGxsaWdlbiBNdXN0ZXJuIGdldGVzdGV0OiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIkVzIHdpcmQgZ2V0ZXN0ZXQgTWl0IE11c3RlciAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAiYmVpbSBTdWNoZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAiTWVya3fDvHJkaWdlciBXZXJ0ICglbGQpIGluIGRvX3JlYWRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICJ3w6RocmVuZCBleHQyZnNfc3luY19kZXZpY2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAiYmVpbSBCZWdpbm4gZGVzIOKAnkJhZCBCbG9ja+KAnC1MaXN0ZW5kdXJjaGxhdWZzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxMSBtaXNjL2JhZGJsb2Nrcy5jOjYxMSBtaXNjL2JhZGJsb2Nrcy5jOjc2OQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVycyIKK21zZ3N0ciAiYmVpbSBadXdlaXNlbiB2b24gUHVmZmVybiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiRXMgd2lyZCB2b24gQmxvY2sgJWx1IGJpcyAlbHUgZ2VwcsO8ZnRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJFcyB3aXJkIG5hY2ggZGVmZWt0ZW4gQmzDtmNrZW4gaW0gTnVyLUxlc2VuLU1vZHVzIGdlc3VjaHRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjkKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyAocmVhZC1vbmx5IHRlc3QpOiAiCittc2dzdHIgIkVzIHdpcmQgbmFjaCBkZWZla3RlbiBCbMO2Y2tlbiBnc3VjaHQgKE51ci1MZXNlbi1Nb2R1cyk6IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIlp1IHZpZWxlIGRlZmVrdGUgQmzDtmNrZSwgVGVzdCB3aXJkIGFiZ2Vicm9jaGVuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIkVzIHdpcmQgbmFjaCBkZWZla3RlbiBCbMO2Y2tlbiBnZXN1Y2h0IChMZXNlbitTY2hyZWliZW4tTW9kdXMpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICJWb24gQmxvY2sgJWx1IGJpcyAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2NzUKK21zZ2lkICJSZWFkaW5nIGFuZCBjb21wYXJpbmc6ICIKK21zZ3N0ciAiTGVzZW4gdW5kIFZlcmdsZWljaGVuOiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODEKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIiIKKyJFcyB3aXJkIG5hY2ggZGVmZWt0ZW4gQmzDtmNrZW4gaW0gemVyc3TDtnJ1bmdzZnJlaWVuIExlc2VuK1NjaHJlaWJlbi1Nb2R1cyAiCisiZ2VzdWNodFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICIiCisiRXMgd2lyZCBuYWNoIGRlZmVrdGVuIEJsw7Zja2VuIGdlc3VjaHQgKHplcnN0w7ZydW5nc2ZyZWllciBMZXNlbitTY2hyZWliZW4tIgorIk1vZHVzKVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc5NAorbXNnaWQgIiIKKyJcbiIKKyJJbnRlcnJ1cHQgY2F1Z2h0LCBjbGVhbmluZyB1cFxuIgorbXNnc3RyICIiCisiXG4iCisiVW50ZXJicmVjaHVuZyBlbXBmYW5nZW4sIGVzIHdpcmQgYXVmZ2Vyw6R1bXRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiBkZXIgVGVzdC1EYXRlbjsgQmxvY2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBpc3QgZWluZ2Vow6RuZ3Q7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKyJCYWRibG9ja3Mgd2lyZCB0cm90emRlbSBlcnp3dW5nZW4uIEhvZmZlbnRsaWNoIGlzdCAvZXRjL210YWIgbmljaHQga29ycmVrdC5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICJlcyBpc3QgenUgdW5zaWNoZXIsIEJhZGJsb2NrcyB6dSBzdGFydGVuIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMgd2lyZCBvZmZlbnNpY2h0bGljaCB2b20gU3lzdGVtIGdlbnV0enQ7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIiIKKyJCYWRibG9ja3Mgd2lyZCB0cm90emRlbSBlcnp3dW5nZW4uIEhvZmZlbnRsaWNoIGlzdCAvZXRjL210YWIgbmljaHQga29ycmVrdC5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZSAlcyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIlNwZWljaGVyIGbDvHIgVGVzdG11c3RlciBrYW5uIG5pY2h0IHJlc2VydmllcnQgd2VyZGVuIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJFcyBkYXJmIGltIE51ci1MZXNlbi1Nb2R1cyBudXIgZWluIFRlc3RtdXN0ZXIgYW5nZWdlYmVuIHdlcmRlbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiWnVmw6RsbGlnZXMgVGVzdG11c3RlciBpc3QgaW0gTnVyLUxlc2VuLU1vZHVzIG5pY2h0IGVybGF1YnQiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIwNAorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBtYW51YWxseVxuIgorbXNnc3RyICIiCisiR3LDtsOfZSBkZXMgR2Vyw6R0ZXMgaXN0IG5pY2h0IGZlc3RzdGVsbGJhci5cbiIKKyJTaWUgbcO8c3NlbiBzaWUgbWFudWVsbCBhbmdlYmVuLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIGRpZSBHZXLDpHRlZ3LDtsOfZSBmZXN0enVzdGVsbGVuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICJsZXR6dGVyIEJsb2NrIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAiZXJzdGVyIEJsb2NrIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgIlVuZ8O8bHRpZ2VyIFN0YXJ0YmxvY2sgKCVsbHUpOiBlciBtdXNzIGtsZWluZXIgYWxzICVsbHUgc2VpbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjMxCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgZW5kIGJsb2NrICglbGx1KTogbXVzdCBiZSAzMi1iaXQgdmFsdWUiCittc2dzdHIgIlVuZ8O8bHRpZ2VyIEVuZGJsb2NrICglbGx1KTogZXIgbXVzcyBlaW4gMzItQml0IFdlcnQgc2VpbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAiYmVpbSBFcnN0ZWxsZW4gZGVyIEJhZC1CbG9jay1MaXN0ZSBpbSBTcGVpY2hlciIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgImRpZSBFaW5nYWJlZGF0ZWkgaGF0IGVpbiB1bmfDvGx0aWdlcyBGb3JtYXQiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMwNCBtaXNjL2JhZGJsb2Nrcy5jOjEzMTMKK21zZ2lkICJ3aGlsZSBhZGRpbmcgdG8gaW4tbWVtb3J5IGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJiZWltIEhpbnp1ZsO8Z2VuIHp1ciBCYWQtQmxvY2stTGlzdGUgaW0gU3BlaWNoZXIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMzOAorIywgYy1mb3JtYXQKK21zZ2lkICJQYXNzIGNvbXBsZXRlZCwgJXUgYmFkIGJsb2NrcyBmb3VuZC4gKCVkLyVkLyVkIGVycm9ycylcbiIKK21zZ3N0ciAiRHVyY2hnYW5nIGJlZW5kZXQsICV1IGRlZmVrdGUgQmzDtmNrZSBnZWZ1bmRlbi4gKCVkLyVkLyVkIEZlaGxlcilcbiIKKworIzogbWlzYy9jaGF0dHIuYzo4OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIkF1ZnJ1ZjogJXMgWy1SVmZdIFstKz1BYUNjRGRlaWpzU3RUdV0gWy12IFZlcnNpb25dIERhdGVpZW4uLi5cbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAiZmFsc2NoZSBWZXJzaW9uIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJmYWxzY2hlIFZlcnNpb24gLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAiYmVpbSBBdXNsZXNlbiBkZXMgU3RhdHVzIHZvbiAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiYmVpbSBMZXNlbnMgZGVyIEZsYWdzIGluICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICJGbGFncyB2b24gJXMgd2llIGZvbGd0IGdlc2V0enQ6ICIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiYmVpbSBTZXR6ZW4gZGVyIEZsYWdzIGluICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2MAorIywgYy1mb3JtYXQKK21zZ2lkICJWZXJzaW9uIG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiVmVyc2lvbiB2b24gJXMgZ2VzZXR6dCBhdWYgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiYmVpbSBTZXR6ZW4gZGVyIFZlcnNpb24gaW4gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQcm9qZWN0IG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiVmVyc2lvbiB2b24gJXMgZ2VzZXR6dCBhdWYgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgImJlaW0gU2V0emVuIGRlciBWZXJzaW9uIGluICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICJQZmFkLVZhcmlhYmxlIGluIGNoYXR0cl9kaXJfcHJvYyBrb25udGUgbmljaHQgcmVzZXJ2aWVydCB3ZXJkZW4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0gaXN0IGlua29tcGF0aWJlbCB6dSAtIHVuZCArXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIuKAni124oCcLCA9LCAtIG9kZXIgKyB2ZXJ3ZW5kZW5cbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAiYmVpbSBMZXNlbiB2b24gSW5vZGUgJWx1IGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwIG1pc2MvY3JlYXRlX2lub2RlLmM6MjcyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzM2CisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM3NAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJiZWltIEV4cGFuZGllcmVuIHZvbiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgImJlaW0gw5ZmZm5lbiB2b24gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiCittc2dzdHIgImJlaW0gU2NocmVpYmVuIHZvbiBJbm9kZSAlbHUgaW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsICVzIGFienVzY2huZWlkZW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJiZWltIFN0YXJ0IGRlcyBJbm9kZS1TY2FucyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAiYmVpbSBadXdlaXNlbiB2b24gUHVmZmVybiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgImJlaW0gTGVzZW5zIGRlciBGbGFncyBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gdm9uIElub2RlICVsdSBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgInfDpGhyZW5kIGRlciBJbm9kZS1QcsO8ZnVuZyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJiZWltIFp1d2Vpc2VuIHZvbiBQdWZmZXJuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJiZWltIExlc2VuIHZvbiBJbm9kZSAlbHUgaW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAiYmVpbSBMZXNlbnMgZGVyIEZsYWdzIGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgImJlaW0gU3VjaGVuIHZvbiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgImJlaW0gRXJzdGVsbGVuIGRlcyBXdXJ6ZWx2ZXJ6ZWljaG5pc3NlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgImJlaW0gw5ZmZm5lbiB2b24gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJiZWltIMOWZmZuZW4gdm9uICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbHN0YXQgXCIlc1wiIgorbXNnc3RyICJiZWltIEF1c2xlc2VuIGRlcyBTdGF0dXMgdm9uICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiYmVpbSBMZXNlbiB2b24gSW5vZGUgJWx1IGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJEaWUgUmVzZXJ2aWVydW5nIHZvbiBTcGVpY2hlciBzY2hsdWcgZmVobCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIGRpZSBHcsO2w59lIHZvbiAlcyB6dSDDpG5kZXJuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgImJlaW0gU2NocmVpYmVuIHZvbiBJbm9kZSAlbHUgaW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzk2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiB2b24gSW5vZGUgJWx1IGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgImJlaW0gw5ZmZm5lbiB2b24gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiVmVyemVpY2huaXNibG9jayB3aXJkIGdlbGVzZW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICJiZWltIFNldHplbiBkZXIgVmVyc2lvbiBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgImJlaW0gU2V0emVuIGRlciBGbGFncyBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NzAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgImJlaW0gU3RhcnRlbiBkZXIgSW5vZGUtUHLDvGZ1bmciCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkF1ZnJ1ZjogJXMgWy1iZmhpeFZdIFstbyBzdXBlcmJsb2NrPTxOdW1tZXI+XSBbLW8gYmxvY2tzaXplPTxOdW1tZXI+XSBHZXLDpHRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE1OQorbXNnaWQgImJsb2NrcyIKK21zZ3N0ciAiQmzDtmNrZSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE2OAorbXNnaWQgImNsdXN0ZXJzIgorbXNnc3RyICJDbHVzdGVyIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIkdydXBwZSAlbHU6IChCbMO2Y2tlICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIGNzdW0gMHglMDR4IgorbXNnc3RyICIgIFByw7xmc3VtbWUgMHglMDR4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoRVhQRUNURUQgMHglMDR4KSIKK21zZ3N0ciAiICgweCUwNHggRVJXQVJURVQpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMgU3VwZXJibG9jayBpbiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJQcmltw6RyIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJEYXRlbnNpY2hlcnVuZyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdydXBwZW5kZXNrcmlwdG9yZW4gaW4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIHJlc2VydmllcnRlIEdEVC1CbMO2Y2tlIGJlaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBHcnVwcGVuZGVza3JpcHRvciBpbiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgQmxvY2stQml0bWFwIGluICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MCBtaXNjL2R1bXBlMmZzLmM6MjcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIgIFByw7xmc3VtbWUgMHglMDR4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYzCittc2dpZCAiLCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NgorIywgZnV6enkKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiLCBJbm9kZS1CaXRtYXAgaW4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBJbm9kZS1UYWJlbGxlIGluICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiICAldSBmcmVlICVzLCAldSBmcmVlIGlub2RlcywgJXUgZGlyZWN0b3JpZXMlcyIKK21zZ3N0ciAiIgorIlxuIgorIiAgJXUgZnJlaWUgJXMsICV1IGZyZWllIElub2RlcywgJXUgVmVyemVpY2huaXNzZSVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsICV1IHVuZ2VudXR6dGUgSW5vZGVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODkKK21zZ2lkICIgIEZyZWUgYmxvY2tzOiAiCittc2dzdHIgIiAgRnJlaWUgQmzDtmNrZTogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgIEZyZWllIElub2RlczogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQwCittc2dpZCAid2hpbGUgcHJpbnRpbmcgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgImJlaW0gQXVzZ2ViZW4gZGVyIOKAnkJhZCBCbG9ja+KAnC1MaXN0ZSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0NgorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2tzOiAldSIKK21zZ3N0ciAiQmFkIEJsb2NrczogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJiZWltIExlc2VuIGRlcyBKb3VybmFsLUlub2RlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5MQorbXNnaWQgIndoaWxlIG9wZW5pbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXMgSm91cm5hbC1Jbm9kZXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgImJlaW0gTGVzZW4gZGVzIEpvdXJuYWwtU3VwZXJibG9ja3MiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIkRpZSBtYWdpc2NoZSBaYWhsIGltIEpvdXJuYWwtU3VwZXJibG9jayBpc3QgdW5nw7xsdGlnIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJKb3VuYWxlaWdlbnNjaGFmdGVuOiAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIkpvdXJuYWxncsO2w59lOiAgICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisiSm91cm5hbC1Mw6RuZ2U6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsLVNlcXVlbno6ICAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwtU3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIkpvdW5hbC1GZWhsZXJudW1tZXI6ICAgICAgJWRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXMgSm91cm5hbC1TdXBlcmJsb2NrcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgIiIKKyJEaWUgbWFnaXNjaGUgTnVtbWVyIGRlcyBKb3VybmFsLVN1cGVyYmxvY2tzIGtvbm50ZSBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIkpvdXJuYWwtQmxvY2tncsO2w59lOiAgICAgICAldVxuIgorIkpvdXJuYWwtTMOkbmdlOiAgICAgICAgICAgICV1XG4iCisiSm91cm5hbC1TdGFydGJsb2NrOiAgICAgICAldVxuIgorIkpvdXJuYWwtU2VxdWVuejogICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbC1TdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwtQmVudXR6ZXJhbnphaGw6ICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUxNAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHVzZXJzOiAgICAgICAgICAgICVzXG4iCittc2dzdHIgIkpvdW5hbGJlbnV0emVyOiAgICAgICAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICIiCisiU3BlaWNoZXIgenVtIFZlcmFyYmVpdGVuIGRlciBPcHRpb25lbiBrb25udGUgbmljaHQgcmVzZXJ2aWVydCB3ZXJkZW4hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgU3VwZXJibG9jay1QYXJhbWV0ZXI6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJVbmfDvGx0aWdlciBCbG9ja2dyw7bDn2VuLVBhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkZhbHNjaGUgZXJ3ZWl0ZXJ0ZSBPcHRpb25lbiBhbmdlZ2ViZW46ICVzXG4iCisiXG4iCisiRXJ3ZWl0ZXJ0ZSBPcHRpb25lbiB3ZXJkZW4gZHVyY2ggS29tbWF0YSBnZXRyZW5udC4gTWFuY2hlIGVyd2FydGVuIGVpblxuIgorIlx0QXJndW1lbnQsIHdlbGNoZXMgbWl0IEdsZWljaGhlaXRzemVpY2hlbiAo4oCePeKAnCkgenVnZXdpZXNlbiB3aXJkLlxuIgorIlxuIgorIkfDvGx0aWdlIGVyd2VpdGVydGUgT3B0aW9uZW4gc2luZDpcbiIKKyJcdHN1cGVyYmxvY2s9PE51bW1lciBkZXMgU3B1cGVyYmxvY2tzPlxuIgorIlx0YmxvY2tzaXplPTxCbG9ja2dyw7bDn2U+XG4iCisiXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2NDYgbWlzYy9ta2UyZnMuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXNcbiIKK21zZ3N0ciAiXHQlcyB3aXJkIGJlbnV0enRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY4NgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGZpbGVzeXN0ZW0hICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiRXMga2FubiBrZWluIGfDvGx0aWdlciBEYXRlaXN5c3RlbS1TdXBlcmJsb2NrIGdlZnVuZGVuIHdlcmRlbi5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAlczogRmVobGVyIGJlaW0gTGVzZW4gdm9uIEJpdG1hcHM6ICVzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwNgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWyAtcnxRIF0gWyAtZnIgXSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICJBdWZydWY6ICVzIFstcnxRIF0gWyAtZnIgXSBHZXLDpHRlZGF0ZWkgQWJiaWxkLURhdGVpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICVzIFstSV0gR2Vyw6R0ZWRhdGVpIEFiYmlsZC1EYXRlaVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiAgICAgICAlcyAtcmEgIFsgIC1jZm5wICBdIFsgLW8gc3JjX29mZnNldCBdIFsgLU8gZGVzdF9vZmZzZXQgXSBzcmNfZnMgIgorIlsgZGVzdF9mcyBdXG4iCittc2dzdHIgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIFF1ZWxsb2Zmc2V0IF0gWyAtTyBaaWVsb2Zmc2V0IF0gUXVlbGxfRnMgIgorIlsgWmllbF9mcyBdXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlciIKK21zZ3N0ciAiYmVpbSBadXdlaXNlbiB2b24gUHVmZmVybiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIldyaXRpbmcgYmxvY2sgJWxsdVxuIgorbXNnc3RyICJCbG9jayAlbGx1IHdpcmQgZ2VzY2hyaWViZW5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHdyaXRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiU2NocmVpYmZlaGxlciAtIEJsb2NrICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiRmVobGVyIGluIGdlbmVyaWNfd3JpdGUoKSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIkZlaGxlcjogR3LDtsOfZSBkZXMgSGVhZGVycyDDvGJlcnN0ZWlndCB3cnRfc2l6ZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIkhlYWRlci1QdWZmZXIga29ubnRlIG5pY2h0IHp1Z2V3aWVzZW4gd2VyZGVuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gZGVzIFN1cGVyYmxvY2tzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiBkZXIgSW5vZGUtVGFiZWxsZSIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgImJlaW0gU2NocmVpYmVuIGRlciBCbG9jay1CaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiBkZXIgSW5vZGUtQml0bWFwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJEZWZla3RlciBWZXJ6ZWljaG5pc2Jsb2NrICVsbHU6IHVuZ8O8bHRpZ2UgcmVjX2xlbiAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgbmFtZV9sZW4gKCVkKVxuIgorbXNnc3RyICJEZWZla3RlciBWZXJ6ZWljaG5pc2Jsb2NrICVsbHU6IHVuZ8O8bHRpZ2UgbmFtZV9sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSIKK21zZ3N0ciAiJWxsdSAvICVsbHUgQmzDtmNrZSAoJWQlJSkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAiS29waWVyZW4gIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiSmV0enQgYW56dWhhbHRlbiB3w7xyZGUgZGFzIERhdGVpc3lzdGVtIHplcnN0w7ZyZW4uIFdlbm4gU2llIHNpY2hlciBzaW5kLFxuIgorInVudGVyYnJlY2hlbiBTaWUgbm9jaCBlaW5tYWwuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiICVzIGJsZWlidCBiZWkgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIHZvbiBCbG9jayAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29waWVkICVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkgaW4gJXMgIgorbXNnc3RyICIlbGx1IC8gJWxsdSBCbMO2Y2tlICglZCUlKSB3dXJkZW4gaW4gJXMga29waWVydCAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcyMgorIywgYy1mb3JtYXQKK21zZ2lkICJhdCAlLjJmIE1CL3MiCittc2dzdHIgImJlaSAlLjJmIE1CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgImJlaW0gQW5mb3JkZXJuIHZvbiBTcGVpY2hlciBmw7xyIGRpZSBsMS1UYWJlbGxlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJiZWltIEFuZm9yZGVybiB2b24gU3BlaWNoZXIgZsO8ciBkZW4gbDItWndpc2NoZW5zcGVpY2hlciIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKyJXYXJudW5nOiBCZWltIFNjaHJlaWJlbiBkZXMgWndpc2NoZW5zcGVpY2hlcnMgYmVmaW5kZW4gc2ljaCBpbW1lciBub2NoICIKKyJUYWJlbGxlbiBpbiBpaG0uIERhbWl0IGdlaGVuIERhdGVuIHZlcmxvcmVuIHVuZCBkYXMgQWJiaWxkIGlzdCBldmVudHVlbGwgIgorInVuZ8O8bHRpZy5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiYmVpbSBSZXNlcnZpZXJlbiB2b24gU3BlaWNoZXIgZsO8ciBleHQyX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImJlaW0gSW5pdGlhbGlzaWVyZW4gZGVzIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICIiCisiUHJvZ3JhbW1pZXJmZWhsZXI6IG1laHJlcmUgc2VxdWVuemllbGxlIFJlZmNvdW50LUJsw7Zja2Ugd3VyZGVuIGVyemV1Z3QhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyNzIKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiYmVpbSBSZXNlcnZpZXJlbiB2b24gU3BlaWNoZXIgZsO8ciBkaWUgQmxvY2stQml0bWFwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBzY3JhbWJsZSBibG9jayBiaXRtYXAiCittc2dzdHIgImJlaW0gUmVzZXJ2aWVyZW4gdm9uIFNwZWljaGVyIGbDvHIgZGllIHZlcnfDvHJmZWx0ZSBCbG9jay1CaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiSW5vZGVzIHdlcmRlbiBlaW5nZWxlc2VuIOKAplxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICJFcyBrb25udGUga2VpbiBCbG9ja3B1ZmZlciByZXNlcnZpZXJ0IHdlcmRlbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJiZWltIEl0ZXJpZXJlbiDDvGJlciBJbm9kZSAldSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIlJvaGUgdW5kIFFjb3cyLUFiYmlsZGVyIGvDtm5uZW4gbmljaHQgaW5zdGFsbGllcnQgd2VyZGVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJGZWhsZXIgYmVpbSBMZXNlbiBkZXIgQml0bWFwcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgImJlaW0gw5ZmZm5lbiBkZXIgR2Vyw6R0ZWRhdGVpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gZGVyIElub2RlLVRhYmVsbGUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICJEaWUgT3B0aW9uIOKAni1h4oCcIGthbm4gbnVyIGJlaSBSb2gtIG9kZXIgUUNPVzItQWJiaWxkZXJuIGJlbnV0enQgd2VyZGVuLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJPZmZzZXRzIHNpbmQgbnVyIGJlaSBSb2gtQWJiaWxkZXJuIGVybGF1YnQuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJWZXJzY2hpZWJlbiBpc3QgbnVyIGJlaSBSb2gtIEFiYmlsZGVybiBlcmxhdWJ0LiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiRGVyIFZlcnNjaGllYmVtb2R1cyBlcmZvcmRlcnQgZGVuIOKAnkFsbGUgRGF0ZW7igJwtTW9kdXMuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTUzCittc2dpZCAiY2hlY2tpbmcgaWYgbW91bnRlZCIKK21zZ3N0ciAiUHLDvGZ1bmcsIG9iIGVpbmdlaMOkbmd0IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisiXG4iCisiRGFzIFN0YXJ0ZW4gdm9uIEUyaW1hZ2UgYXVmIGVpbmVtIHNjaHJlaWItIHVuZCBsZXNiYXIgZWluZ2Vow6RuZ3RlblxuIgorIkRhdGVpc3lzdGVtIGthbm4genUgZWluZW0gdW52b2xsc3TDpG5kaWdlbiBBYmJpbGQgZsO8aHJlbiwgd2VsY2hlc1xuIgorInVuYnJhdWNoYmFyIGbDvHIgZGllIEZlaGxlcnN1Y2hlIHfDpHJlLiBWZXJ3ZW5kZW4gU2llIGRpZSBPcHRpb24gLWYsIHdlbm5cbiIKKyJTaWUgZGFzIHdpcmtsaWNoIG1hY2hlbiB3b2xsZW4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiIgorIkRhcyBRQ09XMi1BYmJpbGQga2FubiBuaWNodCBhdWYgZGllIFN0YW5kYXJkYXVzZ2FiZSBnZXNjaHJpZWJlbiB3ZXJkZW4hXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIkRlciBTdGF0dXMgZGVyIEF1c2dhYmUgbMOkc3N0IHNpY2ggbmljaHQgZmVzdHN0ZWxsZW5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiRGFzIEFiYmlsZCAoJXMpIGlzdCBrb21wcmltaWVydFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIkRhcyBBYmJpbGQgKCVzKSBpc3QgdmVyc2NobMO8c3NlbHRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY29udmVydCBxY293MiBpbWFnZSAoJXMpIGludG8gcmF3IGltYWdlICglcykiCittc2dzdHIgIiIKKyJiZWltIFZlcnN1Y2gsIGRhcyBRY293Mi1BYmJpbGQgKCVzKSBpbiBlaW4gUm9oLUFiYmlsZCAoJXMpIHp1IGtvbnZlcnRpZXJlbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY0NQorbXNnaWQgIlRoZSAtYyBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiRGllIE9wdGlvbiDigJ4tY+KAnCB3aXJkIG51ciBpbSBSb2gtTW9kdXMgdW50ZXJzdMO8dHp0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICIiCisiRGllIE9wdGlvbiDigJ4tY+KAnCB3aXJkIGJlaW0gU2NocmVpYmVuIGF1ZiBkaWUgU3RhbmRhcmRhdXNnYWJlIG5pY2h0ICIKKyJ1bnRlcnN0w7x0enRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJiZWltIEFuZm9yZGVybiBkZXMgUHLDvGZwdWZmZXJzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJEaWUgT3B0aW9uIOKAni1w4oCcIHdpcmQgbnVyIGltIFJvaC1Nb2R1cyB1bnRlcnN0w7x0enRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY3MworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBibG9ja3MgYWxyZWFkeSBjb250YWluZWQgdGhlIGRhdGEgdG8gYmUgY29waWVkXG4iCittc2dzdHIgIiVkIEJsw7Zja2UgZW50aGllbHRlbiBiZXJlaXRzIGRpZSB6dSBrb3BpZXJlbmRlbiBEYXRlbi5cbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICJBdWZydWY6ICVzIExhdWZ3ZXJrXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6ICVzIGthbm4gbmljaHQgZ2XDtmZmbmV0IHdlcmRlbi5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBTcHJpbmdlbiB6dW0gU3VwZXJibG9jayBuaWNodCBtw7ZnbGljaFxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogTGVzZWZlaGxlciBpbSBTdXBlcmJsb2NrXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogS2VpbiBleHQyLURhdGVpc3lzdGVtXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIldhcm51bmc6IE5hbWUgenUgbGFuZywgd2lyZCBnZWvDvHJ6dC5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDogRXJuZXV0ZXMgU3ByaW5nZW4genVtIFN1cGVyYmxvY2sgbmljaHQgbcO2Z2xpY2hcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBGZWhsZXIgYmVpbSBTY2hyZWliZW4gZGVzIFN1cGVyYmxvY2tzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIkF1ZnJ1ZjogZTJsYWJlbCBHZXLDpHQgW25ldWVyX05hbWVdXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgIkF1ZnJ1ZjogJXMgPFRyYW5zYWt0aW9uc2RhdGVpPiA8RGF0ZWlzeXN0ZW0+XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiRGllIFplaXQgZGVzIGxldHp0ZW4gRWluaMOkbmdlbnMgZGVzIERhdGVpc3lzdGVtcyB3YXIgbmljaHQgJXVcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ4CisjLCBmdXp6eQorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiRGllIFplaXQgZGVzIGxldHp0ZW4gRWluaMOkbmdlbnMgZGVzIERhdGVpc3lzdGVtcyB3YXIgbmljaHQgJXVcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTAKK21zZ2lkICJMYXN0IHdyaXRlIHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTIKK21zZ2lkICJMaWZldGltZSB3cml0ZSBjb3VudGVyIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTY2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXMgSm91cm5hbC1TdXBlcmJsb2NrcyIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gZGVzIFN1cGVyYmxvY2tzIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiRGllIFByw7xmc3VtbWUgZGVzIFN1cGVyYmxvY2tzIHBhc3N0IG5pY2h0IGRhenUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbGxlZ2FsIG9mZnNldCAtICVzIgorbXNnc3RyICJVbnp1bMOkc3NpZ2VyIE9mZnNldDogJXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJiZWltIMOWZmZuZW4gZGVyIEdlcsOkdGVkYXRlaSIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgImJlaW0gTGVzZW4gZGVzIFJvb3QtSW5vZGVzIgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IE5vdCBhbiB1bmRvIGZpbGUuXG4iCittc2dzdHIgIiVzOiB6dSB2aWVsZSBHZXLDpHRlXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIkRpZSBQcsO8ZnN1bW1lIGRlcyBJbm9kZXMgcGFzc3QgbmljaHQgZGF6dSIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iCittc2dzdHIgIkRlZmVrdGVyIEtvcGYgZWluZXIgRXJ3ZWl0ZXJ1bmciCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDE5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKyJJbSBKb3VybmFsLVN1cGVyYmxvY2sgaXN0IGVpbiB1bmJla2FubnRlciBCaXRzY2hhbHRlciBmw7xyIGVpbmVcbiIKKyJpbmtvbXBhdGlibGUgRWlnZW5zY2hhZnQgZ2VzZXR6dC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIkZlaGxlciBiZWltIMOcYmVycHLDvGZlbiwgb2IgJXMgZWluZ2Vow6RuZ3QgaXN0LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworIywgZnV6enkKK21zZ2lkICJlMnVuZG8gc2hvdWxkIG9ubHkgYmUgcnVuIG9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIKK21zZ3N0ciAiZTJ1bmRvIHNvbGx0ZSBudXIgYXVmIG5pY2h0LWVpbmdlaMOkbmd0ZW4gRGF0ZWlzeXN0ZW1lbiBsYXVmZW5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAiYmVpbSDDlmZmbmVuIHZvbiAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0NjAKK21zZ2lkICJzcGVjaWZpZWQgb2Zmc2V0IGlzIHRvbyBsYXJnZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjUwMQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgImJlaW0gTGVzZW4gZGVyIEJpdG1hcHMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICJWb24gQmxvY2sgJWx1IGJpcyAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NTggbWlzYy9lMnVuZG8uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJCbG9jayAlbGx1IHdpcmQgZ2VzY2hyaWViZW5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJTY2hyZWliZmVobGVyIC0gQmxvY2sgJWxsdSIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIldBUk5VTkc6ICVzIGtvbm50ZSBuaWNodCBnZcO2ZmZuZXQgd2VyZGVuOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIldBUk5VTkc6IGZhbHNjaGVzIEZvcm1hdCBpbiBaZWlsZSAlZCB2b24gJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzcwCittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJXQVJOVU5HOiBJaHJlIC9ldGMvZnN0YWIgZW50aMOkbHQga2VpbmUgQW5nYWJlIGRhcsO8YmVyLCB3YW5uXG4iCisiXHRkYXMgRGF0ZWlzeXN0ZW0gZ2VwcsO8ZnQgd2VyZGVuIHNvbGwuIERpZXMgd2lyZFxuIgorIlx0aWdub3JpZXJ0LCBhYmVyIFNpZSBzb2xsdGVuIElocmUgL2V0Yy9mc3RhYiBzbyBzY2huZWxsXG4iCisiXHR3aWUgbcO2Z2xpY2gga29ycmlnaWVyZW4uXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBuaWNodCBnZWZ1bmRlblxuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogd2FpdDoga2VpbiBLaW5kcHJvemVzcyBtZWhyPyE/XG4iCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICJXYXJudW5nLi4uICVzIGbDvHIgR2Vyw6R0ICVzIHd1cmRlIG1pdCBTaWduYWwgJWQgYmVlbmRldC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBTdGF0dXMgaXN0ICV4LCBzb2xsdGUgbmllIHZvcmtvbW1lbi5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJCZWVuZGV0IG1pdCAlcyAoRXhpdC1TdGF0dXMgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBGZWhsZXIgJWQgYmVpIEF1c2bDvGhydW5nIHZvbiBmc2NrLiVzIGbDvHIgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyJCZWkgLXQgbcO8c3NlbiBlbnR3ZWRlciBhbGxlbiBvZGVyIGtlaW5lbSBEYXRlaXN5c3RlbSBlaW4g4oCebm/igJwgYnp3LiDigJ4h4oCcXG4iCisidm9yYW5nZXN0ZWxsdCB3ZXJkZW4uXG4iCisKKyM6IG1pc2MvZnNjay5jOjc2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZmlsZXN5c3RlbSB0eXBlc1xuIgorbXNnc3RyICJTcGVpY2hlciBmw7xyIERhdGVpc3lzdGVtdHlwZW4ga2FubiBuaWNodCByZXNlcnZpZXJ0IHdlcmRlbi5cbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiBVbmfDvGx0aWdlIFplaWxlIGluIC9ldGMvZnN0YWIgd2lyZCDDvGJlcnNwcnVuZ2VuOiBiaW5kIG1vdW50IG1pdFxuIgorIiBEdXJjaGdhbmdzbnVtbWVyIGbDvHIgZnNjaywgZGllIG5pY2h0IE51bGwgaXN0XG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzIGthbm4gbmljaHQgw7xiZXJwcsO8ZnQgd2VyZGVuOiBmc2NrLiVzIG5pY2h0IGdlZnVuZGVuXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIkFsbGUgRGF0ZWlzeXN0ZW1lIHdlcmRlbiDDvGJlcnByw7xmdC5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS13YXJ0ZW4tLSAoRHVyY2hnYW5nICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDc4Cittc2dpZCAiIgorIlVzYWdlOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgZnN0eXBlXSBbZnMtb3B0aW9uc10gW2ZpbGVzeXMgLi4uXVxuIgorbXNnc3RyICIiCisiQXVmcnVmOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgRGF0ZXN5c3RlbXR5cF0gW0ZTLU9wdGlvbmVuXSAiCisiW0RhdGVpc3lzdGVtLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiB6dSB2aWVsZSBHZXLDpHRlXG4iCisKKyM6IG1pc2MvZnNjay5jOjExNTMgbWlzYy9mc2NrLmM6MTIzOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogdG9vIG1hbnkgYXJndW1lbnRzXG4iCittc2dzdHIgIiVzOiB6dSB2aWVsZSBBcmd1bWVudGVcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc0MAorIywgZnV6enkKK21zZ2lkICJNb3VudGluZyByZWFkLW9ubHkuXG4iCittc2dzdHIgIkRpZSBEYXRlaSB3dXJkZSBudXItbGVzYmFyIGdlw7ZmZm5ldCIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NiBtaXNjL2Z1c2UyZnMuYzozNzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc3IG1pc2MvZnVzZTJmcy5jOjM3OTEgbWlzYy90dW5lMmZzLmM6MzIwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisiQml0dGUgbGFzc2VuIFNpZSB6dWVyc3Qg4oCeZTJmc2NrIC1mICVz4oCcIGxhdWZlbi5cbiIKKyJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIkRhcyBWZXJyaW5nZXJuIGRlciBJbm9kZS1HcsO2w59lIHdpcmQgbmljaHQgdW50ZXJzdMO8dHp0XG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjEKK21zZ2lkICJXYXJuaW5nOiBNb3VudGluZyB1bmNoZWNrZWQgZnMsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjUKK21zZ2lkICJXYXJuaW5nOiBNYXhpbWFsIG1vdW50IGNvdW50IHJlYWNoZWQsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzAKK21zZ2lkICJXYXJuaW5nOiBDaGVjayB0aW1lIHJlYWNoZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzQKK21zZ2lkICJPcnBoYW5zIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM4Cittc2dpZCAiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1SVmFkbHB2XSBbZmlsZXMuLi5dXG4iCittc2dzdHIgIkF1ZnJ1ZjogJXMgWy1SVmFkbHZdIFtEYXRlaWVuLi4uXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIkJlaW0gTGVzZW4gZGVyIEZsYWdzIHZvbiAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJCZWltIExlc2VuIGRlciBWZXJzaW9uIHZvbiAlcyIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJCZWltIExlc2VuIGRlciBWZXJzaW9uIHZvbiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jfC1sIGZpbGVuYW1lXSBbLWIgYmxvY2stc2l6ZV0gWy1DIGNsdXN0ZXItc2l6ZV1cbiIKKyJcdFstaSBieXRlcy1wZXItaW5vZGVdIFstSSBpbm9kZS1zaXplXSBbLUogam91cm5hbC1vcHRpb25zXVxuIgorIlx0Wy1HIGZsZXgtZ3JvdXAtc2l6ZV0gWy1OIG51bWJlci1vZi1pbm9kZXNdIFstZCByb290LWRpcmVjdG9yeV1cbiIKKyJcdFstbSByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZV0gWy1vIGNyZWF0b3Itb3NdXG4iCisiXHRbLWcgYmxvY2tzLXBlci1ncm91cF0gWy1MIHZvbHVtZS1sYWJlbF0gWy1NIGxhc3QtbW91bnRlZC1kaXJlY3RvcnldXG4iCisiXHRbLU8gZmVhdHVyZVssLi4uXV0gWy1yIGZzLXJldmlzaW9uXSBbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXVxuIgorIlx0Wy10IGZzLXR5cGVdIFstVCB1c2FnZS10eXBlIF0gWy1VIFVVSURdIFstZSBlcnJvcnNfYmVoYXZpb3JdWy16ICIKKyJ1bmRvX2ZpbGVdXG4iCisiXHRbLWpucXZERlNWXSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cbiIKK21zZ3N0ciAiIgorIkF1ZnJ1ZjogJXMgWy1jfC1sIERhdGVpbmFtZV0gWy1iIEJsb2NrZ3LDtsOfZV0gWy1DIENsdXN0ZXJncsO2w59lXVxuIgorIlx0Wy1pIEJ5dGVzLXByby1Jbm9kZV0gWy1JIElub2RlLUdyw7bDn2VdIFstSiBKb3VybmFsLU9wdGlvbmVuXVxuIgorIlx0Wy1HIEdyw7bDn2VfZGVyX01ldGFncnVwcGVdIFstTiBBbnphaGxfZGVyX0lub2Rlc11cbiIKKyJcdFstbSBSZXNlcnZpZXJ0ZS1CbMO2Y2tlLVByb3plbnRzYXR6XSBbLW8gRXJ6ZXVnZXItT1NdXG4iCisiXHRbLWcgQmzDtmNrZS1wcm8tR3J1cHBlXSBbLUwgVm9sdW1lLUxhYmVsXVxuIgorIlx0Wy1NIGxldHp0ZXMtZWluZ2Vow6RuZ3Rlcy1WZXJ6ZWljaG5pc10gWy1PIEVpZ2Vuc2NoYWZ0WywuLi5dXVxuIgorIlx0Wy1yIGZzLVJldmlzaW9uXSBbLUUgZXJ3ZWl0ZXJ0ZS1PcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgRGF0ZWlzeXN0ZW10eXBdIFstVCBWZXJ3ZW5kdW5ncy1UeXAgXSBbLVUgVVVJRF0gWy1qbnF2REZLU1ZdXG4iCisiXHRHZXLDpHQgW0Jsb2NrLUFuemFobF1cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICJCZWZlaGwgd2lyZCBhdXNnZWbDvGhydDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJ1biAnJXMnIgorbXNnc3RyICJ3w6RocmVuZCBkZXMgVmVyc3VjaHMsIOKAniVz4oCcIGF1c3p1ZsO8aHJlbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjYKK21zZ2lkICJ3aGlsZSBwcm9jZXNzaW5nIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIHByb2dyYW0iCittc2dzdHIgImJlaW0gQXVzd2VydGVuIGRlciDigJ5CYWQgQmxvY2vigJwtTGlzdGUgdm9tIFByb2dyYW1tIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiQmxvY2sgJWQgaW0gcHJpbcOkcmVuIFN1cGVyYmxvY2svR3J1cHBlbmRlc2tyaXB0b3JiZXJlaWNoIGRlZmVrdC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIkRpZSBCbMO2Y2tlICV1IGJpcyBlaW5zY2hsaWXDn2xpY2ggJXUgbcO8c3NlbiBpbiBPcmRudW5nIHNlaW4sIHVtIGVpblxuIgorIlx0RGF0ZWlzeXN0ZW0genUgZXJzdGVsbGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5OAorbXNnaWQgIkFib3J0aW5nLi4uLlxuIgorbXNnc3RyICJBYmJydWNoLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIldhcm51bmc6IERpZSBTaWNoZXJ1bmcgZGVzIFN1cGVyYmxvY2tzIGJ6dy4gR3J1cHBlbmRlc2tyaXB0b3JzIGluIEJsb2NrICV1XG4iCisiXHRlbnRow6RsdCBkZWZla3RlIEJsw7Zja2UuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgImJlaW0gTWFya2llcmVuIHZvbiBkZWZla3RlbiBCbMO2Y2tlbiBhbHMg4oCeYmVsZWd04oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIklub2RlLVRhYmVsbGVuIHdlcmRlbiBnZXNjaHJpZWJlbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiJWQgQmzDtmNrZSBrb25udGVuIG5pY2h0IGluIGRpZSBJbm9kZW4tVGFiZWxsZW4gYmVnaW5uZW5kIGJlaSAlbGx1ICIKKyJnZXNjaHJpZWJlbiB3ZXJkZW46ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJlcmxlZGlndCAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJiZWltIEVyc3RlbGxlbiBkZXMgV3VyemVsdmVyemVpY2huaXNzZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJiZWltIExlc2VuIGRlcyBSb290LUlub2RlcyIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJiZWltIFNldHplbiBkZXMgUm9vdC1Jbm9kZS1FaWdlbnTDvG1lcnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDk2Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgImJlaW0gRXJzdGVsbGVuIHZvbiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MDMKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJiZWltIFN1Y2hlbiB2b24gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJiZWltIEV4cGFuZGllcmVuIHZvbiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiYmVpbSBTZXR6ZW4gZGVzIOKAnkJhZCBCbG9ja+KAnC1Jbm9kZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIlNwZWljaGVyIHZvbGwgYmVpbSBMw7ZzY2hlbiBkZXIgU2VrdG9yZW4gJWQtJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiV2FybnVuZzogQmxvY2sgJXMga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIldhcm51bmc6IFNla3RvciAlZCBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJiZWltIEluaXRpYWxpc2llcmVuIGRlcyBKb3VybmFsLVN1cGVyYmxvY2tzIgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiSm91cm5hbC1HZXLDpHQgd2lyZCBtaXQgTnVsbGVuIMO8YmVyc2NocmllYmVuOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAiYmVpbSDDnGJlcnNjaHJlaWJlbiBkZXMgSm91cm5hbC1HZXLDpHRlcyBtaXQgTnVsbGVuIChCbG9jayAlbGx1LCBOci4gJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiBkZXMgSm91cm5hbC1TdXBlcmJsb2NrcyIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIkVpbiBEYXRlaXN5c3RlbXMgbWl0ICVsbHUgKCVkaykgQmzDtmNrZW4gdW5kICV1IElub2RlcyB3aXJkIGVyemV1Z3QuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJXYXJudW5nOiAlbGx1IEJsw7Zja2UgdW5iZW51dHp0LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2NQorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGxhYmVsPSVzXG4iCittc2dzdHIgIkRhdGVpc3lzdGVtYmV6ZWljaG51bmc9JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAiT1MtVHlwOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIkJsb2NrZ3LDtsOfZT0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQ2x1c3Rlcmdyw7bDn2U9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJGcmFnbWVudGdyw7bDn2U9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICJTdHJpZGU9JXUgQmzDtmNrZSwgU3RyaXBlYnJlaXRlPSV1IEJsw7Zja2VcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBJbm9kZXMsICVsbHUgQmzDtmNrZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUgQmzDtmNrZSAoJTIuMmYlJSkgcmVzZXJ2aWVydCBmw7xyIGRlbiBTdXBlcnVzZXJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJFcnN0ZXIgRGF0ZW5ibG9jaz0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICJFaWdlbnTDvG1lciBkZXMgV3VyemVsdmVyemVpY2huaXNzZXM9JXU6JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiTWF4aW1hbGUgRGF0ZWlzeXN0ZW0tQmzDtmNrZT0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IEJsb2NrZ3J1cHBlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBCbG9ja2dydXBwZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5OAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBjbHVzdGVycyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgQmzDtmNrZSBwcm8gR3J1cHBlLCAldSBDbHVzdGVyIHBybyBHcnVwcGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBCbMO2Y2tlIHBybyBHcnVwcGUsICV1IEZyYWdtZW50ZSBwcm8gR3J1cHBlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgSW5vZGVzIHBybyBHcnVwcGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIGRlcyBEYXRlaXN5c3RlbXM6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiU3VwZXJibG9jay1TaWNoZXJ1bmdza29waWVuIGdlc3BlaWNoZXJ0IGluIGRlbiBCbMO2Y2tlbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjgwNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyByZXF1aXJlcyAnLU8gNjRiaXQnXG4iCittc2dzdHIgIiVzIGVyZm9yZGVydCDigJ4tTyA2NEJpdOKAnFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjgxMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIG11c3QgYmUgYmVmb3JlICdyZXNpemU9JXUnXG4iCittc2dzdHIgIuKAniVz4oCcIG11c3Mgdm9yIOKAnnJlc2l6ZT0ldeKAnCBrb21tZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiVW56dWzDpHNzaWdlIGRlc2Nfc2l6ZTog4oCeJXPigJxcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgIlVuenVsw6Rzc2lnZXIgT2Zmc2V0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZXMgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCAjIG9mIGJhY2t1cCBzdXBlcmJsb2NrczogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZSBBbnphaGwgdm9uIEVyc2F0ei1TdXBlcmJsw7Zja2VuOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlVuZ8O8bHRpZ2VyIOKAnnN0cmlkZeKAnC1QYXJhbWV0ZXI6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgU3RyaXBlYnJlaXRlLVBhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJVbmfDvGx0aWdlciDigJ5yZXNpemXigJwtUGFyYW1ldGVyOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICIiCisiRGFzIE1heGltdW0gZGVyIFZlcmdyw7bDn2VydW5nIG11c3Mgb2JlcmhhbGIgYWxzIGRlciBEYXRlaXN5c3RlbS1HcsO2w59lICIKKyJsaWVnZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTU4Cittc2dpZCAiT24tbGluZSByZXNpemluZyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiT25saW5lLUdyw7bDn2Vuw6RuZGVydW5nZW4gd2VyZGVuIGJlaSBSZXZpc29uLTAtRGF0ZWlzeXN0ZW1lbiBuaWNodFxuIgorIlx0dW50ZXJzdMO8dHp0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJVbmfDvGx0aWdlciBFaWdlbnTDvG1lciBkZXIgV3VyemVsOiDigJ4lc+KAnFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVW5nw7xsdGlnZSBPcHRpb24oZW4pIGFuZ2VnZWJlbjogJXNcbiIKKyJcbiIKKyJFcndlaXRlcnRlIE9wdGlvbmVuIHdlcmRlbiBkdXJjaCBLb21tYXRhIGdldHJlbm50LiBNYW5jaGUgZXJ3YXJ0ZW4gZWluXG4iCisiXHRBcmd1bWVudCwgd2VsY2hlcyBtaXQgR2xlaWNoaGVpdHN6ZWljaGVuICjigJ494oCcKSB6dWdld2llc2VuIHdpcmQuXG4iCisiXG4iCisiR8O8bHRpZ2UgZXJ3ZWl0ZXJ0ZSBPcHRpb25lbiBzaW5kOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08SW50ZXJ2YWxsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQtU2VnbWVudGdyw7bDn2UgaW4gQmzDtmNrZW4+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgU3RyaWRlICogRGF0ZW5wbGF0dGVuIGluIEJsw7Zja2VuPlxuIgorIlx0b2Zmc2V0PTxPZmZzZXQgZsO8ciBkYXMgRGF0ZWlzeXN0ZW0+XG4iCisiXHRyZXNpemU9PE9iZXJncmVuemUgZsO8ciBHcsO2w59lbsOkbmRlcnVuZyBpbiBCbMO2Y2tlbj5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCBkZWFrdGl2aWVydCwgMSBha3RpdmllcnQ+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIGbDvHIgZGVha3RpdmllcnQsIDEgZsO8ciBha3RpdmllcnQ+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCBmw7xyIGRlYWt0aXZpZXJ0LCAxIGbDvHIgYWt0aXZpZXJ0PlxuIgorIlx0cm9vdF91aWQ9PFVJRCBkZXMgV3VyemVsdmVyemVpY2huaXNzZXM+XG4iCisiXHRyb290X2dpZD08R0lEIGRlcyBXdXJ6ZWx2ZXJ6ZWljaG5pc3Nlcz5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTx1c3IgT0RFUiBncnA+XG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiV2FybnVuZzogRGllIFN0cmlwZWJyZWl0ZSAldSBkZXMgUkFJRHMgaXN0IGtlaW4gVmllbGZhY2hlcyBkZXMgU3RyaWRlcyAldS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisiU3ludGF4ZmVobGVyIGluIGRlciBLb25maWd1cmF0aW9uc2RhdGVpIHZvbiBta2UyZnMgKCVzLCBaZWlsZSAjJWQpXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZSBEYXRlaXN5c3RlbS1PcHRpb24gYW5nZWdlYmVuOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZSBPcHRpb24gZsO8ciBkYXMgRWluaMOkbmdlbiBhbmdlZ2ViZW46ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisiSWhyZSBEYXRlaSBta2UyZnMuY29uZiBkZWZpbmllcnQgZGVuIFR5cCBkZXMgRGF0ZWlzeXN0ZW1zICVzIG5pY2h0LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJTaWUgbcO8c3NlbiB3YWhyc2NoZWlubGljaCBlaW5lIGFrdHVhbGlzaWVydGUgVmVyc2lvbiBkZXIgRGF0ZWkgIgorImluc3RhbGxpZXJlbi5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiQWJicnVjaOKAplxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJXYXJudW5nOiBkZXIgRGF0ZWlzeXN0ZW10eXAgJXMgaXN0IGluIG1rZTJmcy5jb25mIG5pY2h0IGRlZmluaWVydFxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIgorbXNnc3RyICJFcyBrb25udGUga2VpbiBTcGVpY2hlciBmw7xyIGRlbiBuZXVlbiBQRkFEIHJlc2VydmllcnQgd2VyZGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIkRhcyBQcm9maWwga29ubnRlIG5pY2h0IGVyZm9sZ3JlaWNoIGluaXRpYWxpc2llcnQgd2VyZGVuOiAlbGQpLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9jayBzaXplIC0gJXMiCittc2dzdHIgInVuZ8O8bHRpZ2UgQmxvY2tncsO2w59lIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJXYXJudW5nOiBFaW5lIEJsb2NrZ3LDtsOfZSB2b24gJWQgaXN0IGF1ZiBkZW4gbWVpc3RlbiBTeXN0ZW0gdW5icmF1Y2hiYXIuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJ1bmfDvGx0aWdlIENsdXN0ZXJncsO2w59lIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAi4oCeLVLigJwgaXN0IHZlcmFsdGV0LCBiaXR0ZSB2ZXJ3ZW5kZW4gU2llIHN0YXR0ZGVzc2VuIOKAni1F4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MTQgbWlzYy90dW5lMmZzLmM6MTY4NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZXMgVmVyaGFsdGVuIGltIEZlaGxlcmZhbGwgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIkRpZSBaYWhsIGRlciBCbMO2Y2tlIHBybyBHcnVwcGUgaXN0IHVuenVsw6Rzc2lnIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiRGllIEFuemFobCBkZXIgQmzDtmNrZSBwcm8gR3J1cHBlIG11c3MgZWluIFZpZWxmYWNoZXMgdm9uIDggc2VpbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiRGVyIFdlcnQgZsO8ciBkaWUgR3LDtsOfZSB2b24gZmxleF9iZyBpc3QgdW56dWzDpHNzaWciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY0NQorbXNnaWQgImZsZXhfYmcgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMiIKK21zZ3N0ciAiRGllIEdyw7bDn2Ugdm9uIGZsZXhfYmcgbXVzcyBlaW5lIFBvdGVueiB2b24gMiBzZWluIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmxleF9iZyBzaXplICglbHUpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDJeMzEiCittc2dzdHIgIkRpZSBHcsO2w59lIHZvbiBmbGV4X2JnICglbHUpIG11c3MgZ2xlaWNoIG9kZXIgd2VuaWdlciBhbHMgMl4zMSBzZWluIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSByYXRpbyAlcyAobWluICVkL21heCAlZCkiCittc2dzdHIgIlVuenVsw6Rzc2lnZSBJbm9kZS1SYXRlICVzIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJ1bmfDvGx0aWdlIElub2RlLUdyw7bDn2UgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorIldhcm51bmc6IERpZSBPcHRpb24gLUsgd2lyZCBiYWxkIG5pY2h0IG1laHIgdW50ZXJzdMO8enQuIFZlcndlbmRlbiBTaWUgIgorInN0YXR0ZGVzc2VuIGRpZSBFcndlaXRlcnVuZ3NvcHRpb24g4oCeLUUgbm9kaXNjYXJk4oCcIVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgImluIG1hbGxvYyBmw7xyIGJhZF9ibG9ja3NfZmlsZW5hbWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nOyB3aWxsIGJlIHRydW5jYXRlZCB0byAnJXMnXG4iCisiXG4iCittc2dzdHIgIldhcm51bmc6IE5hbWUgenUgbGFuZywgd2lyZCBnZWvDvHJ6dC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzEyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlcyIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgV2VydCBmw7xyIGRpZSBwcm96ZW50dWFsZSBBbnphaGwgcmVzZXJ2aWVydGVyIEJsw7Zja2UgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgInVuZ8O8bHRpZ2UgQW56YWhsIHZvbiBJbm9kZXMgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgImJlaW0gWnV3ZWlzZW4gdm9uIFB1ZmZlcm4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc1NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZSBWZXJzaW9uIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHJldmlzaW9uICVkIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIFJldmlzaW9uICVkIHp1IGVyemV1Z2VuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiRGllIE9wdGlvbiDigJ4tdOKAnCBkYXJmIG51ciBlaW5tYWwgYW5nZWdlYmVuIHdlcmRlbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkRpZSBPcHRpb24g4oCeLVTigJwgZGFyZiBudXIgZWlubWFsIGFuZ2VnZWJlbiB3ZXJkZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAiYmVpbSBWZXJzdWNoLCBkYXMgSm91cm5hbGdlcsOkdCAlcyB6dSDDtmZmbmVuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorIkRpZSBCbG9ja2dyw7bDn2UgZGVzIEpvdXJuYWxnZXLDpHRzICglZCkgaXN0IGtsZWluZXIgYWxzIGRpZSBtaW5pbWFsZSAiCisiQmxvY2tncsO2w59lICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiRGllIEJsb2NrZ3LDtsOfZSBkZXMgSm91cm5hbGdlcsOkdGVzIHdpcmQgdmVyd2VuZGV0OiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9ja3MgJyVzJyBvbiBkZXZpY2UgJyVzJyIKK21zZ3N0ciAidW5nw7xsdGlnZXIgQmxvY2sg4oCeJXPigJwgYXVmIEdlcsOkdCDigJ4lc+KAnCIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAiRGF0ZWlzeXN0ZW0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIGRpZSBHcsO2w59lIGRlcyBEYXRlaXN5c3RlbXMgenUgYmVzdGltbWVuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIkRpZSBHcsO2w59lIGRlcyBHZXLDpHRlcyBpc3QgbmljaHQgZmVzdHN0ZWxsYmFyLiBTaWUgbcO8c3NlbiBkaWUgR3LDtsOfZVxuIgorImRlcyBEYXRlaXN5c3RlbXMgbWFudWVsbCBhbmdlYmVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorIkFscyBHcsO2w59lIGRlcyBHZXLDpHRzIHdpcmQgTnVsbCB6dXLDvGNrIGdlbGllZmVydC4gRW50d2VkZXIgd3VyZGUgZWluZVxuIgorIlx0dW5nw7xsdGlnZSBQYXJ0aXRpb24gYW5nZWdlYmVuIG9kZXIgZGllIFBhcnRpdGlvbnN0YWJlbGxlIHd1cmRlIG5hY2hcbiIKKyJcdGVpbmVtIExhdWYgdm9uIGZkaXNrIG5pY2h0IG5ldSBlaW5nZWxlc2VuLCB3ZWlsIGRpZSBtb2RpZml6aWVydGVcbiIKKyJcdFBhcnRpdGlvbiB2ZXdlbmRldCB3dXJkZS4gU2llIG3DvHNzZW4gdW50ZXIgVW1zdMOkbmRlbiBkZW4gUmVjaG5lciBuZXVcbiIKKyJcdHN0YXJ0ZW4sIGRhbWl0IGRpZSBQYXJ0aXRpb25zdGFiZWxsZSBuZXUgZWluZ2VsZXNlbiB3aXJkLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAiRGFzIERhdGVpc3lzdGVtIGlzdCBncsO2w59lciBhbHMgYWxzIGRpZSBQYXJ0aXRpb24uIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICJEaWUgTGlzdGUgZGVyIERhdGVpc3lzdGVtdHlwZW4ga29ubnRlIG5pY2h0IHZlcmFyYmVpdGV0IHdlcmRlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5OTgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCB1bnRlcnN0w7x0enQga2VpbmUgRGF0ZWl0eXBlbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIHVudGVyc3TDvHR6dCBrZWluZSBEYXRlaXR5cGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIHVudGVyc3TDvHR6dCBrZWluZSBEYXRlaXR5cGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIGRpZSBIYXJkd2FyZS1TZWt0b3JncsO2w59lIGZlc3R6dXN0ZWxsZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAyNAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgImJlaW0gVmVyc3VjaCwgZGllIHBoeXNpc2NoZSBTZWt0b3JncsO2w59lIGZlc3R6dXN0ZWxsZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA1NgorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICJiZWltIFNldHplbiBkZXIgQmxvY2tncsO2w59lOiB6dSBrbGVpbiBmw7xyIGRhcyBHZXLDpHRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiV2FybnVuZzogZGllIGFuZ2VnZWJlbmUgQmxvY2tncsO2w59lICVkIGlzdCBrbGVpbmVyIGFscyBkaWUgcGh5c2lzY2hlICIKKyJTZWt0b3JncsO2w59lICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiUxJHM6IERpZSBHcsO2w59lIGRlcyBHZXLDpHRlcyAlMyRzICgweCUyJGxseCBCbMO2Y2tlKSBrYW5uIGJlaSBlaW5lciAiCisiQmxvY2tncsO2w59lXG4iCisiXHR2b24gJTQkZCBrYW5uIG1pdCAzMiBCaXRzIG5pY2h0IGRhcmdlc3RlbGx0IHdlcmRlbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiRGF0ZWlzeXN0ZW10eXBlbiBmw7xyIGRhcyBBdWZzY2hsw7xzc2VsbiB2b24gbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiRWlnZW5zY2hhZnRlbiB2b24gRGF0ZWlzeXN0ZW1lbiB3ZXJkZW4gYmVpIFJldmlzb24tMC1EYXRlaXN5c3RlbWVuIG5pY2h0XG4iCisiXHR1bnRlcnN0w7x0enRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJTcGFyc2UtU3VwZXJibMO2Y2tlIHdlcmRlbiBiZWkgUmV2aXNvbi0wLURhdGVpc3lzdGVtZW4gbmljaHRcbiIKKyJcdHVudGVyc3TDvHR6dFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiSm91cm5hbGUgd2VyZGVuIGJlaSBSZXZpc29uLTAtRGF0ZWlzeXN0ZW1lbiBuaWNodFxuIgorIlx0dW50ZXJzdMO8dHp0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICJVbmfDvGx0aWdlciBXZXJ0ZSBmw7xyIFByb3plbnQgcmVzZXJ2aWVydGVyIEJsw7Zja2UgLSAlbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIkVyd2VpdGVydW5nZW4gTcOcU1NFTiBmw7xyIDY0LUJpdC1EYXRlaXN5c3RlbWUgYWt0aXZpZXJ0IHdlcmRlbi5cbiIKKyJcdEdlYmVuIFNpZSDigJ4tTyBleHRlbnRz4oCcIGFuLCB1bSBkaWVzIHp1IHR1bi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAiRGllIENsdXN0ZXJncsO2w59lIGRhcmYgbmljaHQga2xlaW5lciBhbHMgZGllIEJsb2NrZ3LDtsOfZSBzZWluLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxODIKK21zZ2lkICJzcGVjaWZ5aW5nIGEgY2x1c3RlciBzaXplIHJlcXVpcmVzIHRoZSBiaWdhbGxvYyBmZWF0dXJlIgorbXNnc3RyICJEaWUgQW5nYWJlIGVpbmVyIENsdXN0ZXJncsO2w59lIGVyZm9yZGVydCBkaWUgRWlnZW5zY2hhZnQg4oCeYmlnYWxsb2PigJwuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgIldhcm51bmc6IERpZSBHZW9tZXRyaWUgZGVzIEdlcsOkdGVzIOKAniVz4oCcIGthbm4gbmljaHQgYmVzdGltbXQgd2VyZGVuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIKK21zZ3N0ciAiRGllIEF1c3JpY2h0dW5nIHZvbiAlcyBpc3QgdW0gJWx1IEJ5dGVzIHZlcnNldHp0LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiIgorIkRpZXMga8O2bm50ZSBpbiBzZWhyIHNjaGxlY2h0ZXIgTGVpc3R1bmcgcmVzdWx0aWVyZW4uIEVpbmUgIgorIk5ldXBhcnRpdGlvbmllcnVuZ1xuIgorImlzdCBhbmdlcmF0ZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIkJsw7Zja2UgbWl0ICVkIEJ5dGVzIHNpbmQgenUgZ3Jvw58gZsO8ciBkYXMgR2Vyw6R0IChtYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIiIKKyJXYXJudW5nOiBCbMO2Y2tlIG1pdCAlZCBCeXRlcyBzaW5kIHp1IGdyb8OfIGbDvHIgZGFzIEdlcsOkdCAobWF4ICVkKVxuIgorIlx0IFdlaXRlcnZlcmFyYmVpdHVuZyB3dXJkZSBlcnp3dW5nZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yIGltcHJvdmVkIHN0YWJpbGl0eSBvZiB0aGUgbWV0YWRhdGEgIgorImFuZCBqb3VybmFsIGNoZWNrc3VtIGZlYXR1cmVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICLigJ5CaWdhbGxvY+KAnCBpc3QgbnVyIG1pdCDigJ5FeHRlbnRz4oCcIG3DtmdsaWNoIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorInJlc2l6ZV9pbm9kZSB1bmQgbWV0YV9iZyBzaW5kIG5pY2h0IGtvbXBhdGliZWwgdW5kIGvDtm5uZW5cbiIKKyJkYWhlciBuaWNodCBnbGVpY2h6ZWl0aWcgYWt0aXZpZXJ0IHdlcmRlbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJXYXJudW5nOiDigJ5iaWdhbGxvY+KAnCBiZWZpbmRldCBzaWNoIG5vY2ggaW4gRW50d2lja2x1bmcuXG4iCisiTGVzZW4gU2llIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGbDvHIgd2VpdGVyZVxuIgorIkluZm9ybWF0aW9uZW4uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisiUmVzZXJ2aWVydGUgQmzDtmNrZSBmw7xyIGRpZSBPbmxpbmUtR3LDtsOfZW7DpG5kZXJ1bmcgd2VyZGVuIGF1ZiBOaWNodC1TcGFyc2UtXG4iCisiRGF0ZWlzeXN0ZW1lbiBuaWNodCB1bnRlcnN0w7x0enQuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNDgKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIGNvdW50IG91dCBvZiByYW5nZSIKK21zZ3N0ciAiRGllIEFuemFobCBkZXIgQmzDtmNrZSBwcm8gR3J1cHBlIGlzdCBhdcOfZXJoYWxiIGRlcyBnw7xsdGlnZW4gQmVyZWljaHMuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorIkZsZXhfYmcgaXN0IG5pY2h0IGFrdGl2aWVydCwgZGFoZXIgZGFyZiBkYWbDvHIgYXVjaCBrZWluZSBHcsO2w59lIGFuZ2VnZWJlbiAiCisid2VyZGVuLiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgInVuenVsw6Rzc2lnZSBJbm9kZS1HcsO2w59lICVkIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBwcm9qZWN0IHF1b3RhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgInp1IHdlbmlnZSBJbm9kZXMgKCVsbHUpLCBBbnphaGwgZXJow7ZoZW4/IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICJ6dSB2aWVsZSBJbm9kZXMgKCVsbHUpLCBnZWJlbiBTaWUgd2VuaWdlciBhbHMgMl4zMiBJbm9kZXMgYW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgaXN0IHp1IGdyb8OfIGbDvHIgZWluXG4iCisiXHREYXRlaXN5c3RlbSBtaXQgJWxsdSBCbMO2Y2tlbiwgZ2ViZW4gU2llIGVpbiBow7ZoZXJlcyBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRhbiBvZGVyIGVpbmUgbmllZHJpZ2VyZSBBbnphaGwgSW5vZGVzICgtTikgYW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICJHZXLDpHRlYmzDtmNrZSB3ZXJkZW4gdmVyd29yZmVuOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiZ2VzY2hlaXRlcnQgLSAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcwOAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAiYmVpbSBJbml0aWFsaXNpZXJlbiBkZXMgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgaW5vZGVzIgorbXNnc3RyICJiZWltIFNjaHJlaWJlbiBkZXIgSm91cm5hbC1Jbm9kZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIGluIHByb2ZpbGUgLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZXMgVmVyaGFsdGVuIGltIEZlaGxlcmZhbGwgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICJiZWltIEVyc3RlbGxlbiBkZXMgU3VwZXJibG9ja3MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorIlZlcndlcmZlbiB3YXIgZXJmb2xncmVpY2ggdW5kIHdpcmQgTnVsbGVuIHp1csO8Y2sgbGllZmVybiAtIGRhaGVyIHdpcmRcbiIKKyJkYXMgTMO2c2NoZW4gZGVyIElub2RlLVRhYmVsbGUgw7xiZXJzcHJ1bmdlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJ1bmJla2FubnRlcyBCZXRyaWVic3N5c3RlbSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJiZWltIEFuZm9yZGVybiB2b24gU3BlaWNoZXIgZsO8ciBkaWUgR3J1cHBlbnRhYmVsbGVuOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAiYmVpbSBBbmZvcmRlcm4gdm9uIFNwZWljaGVyIGbDvHIgZGllIERhdGVpc3lzdGVtdGFiZWxsZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdGJlaW0gS29udmVydGllcmVuIGRlciBTdWJjbHVzdGVyYml0bWFwIgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgImJlaW0gTnVsbGVuIHZvbiBCbG9jayAlbGx1IGFtIEVuZGUgZGVzIERhdGVpc3lzdGVtcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAiYmVpbSBSZXNlcnZpZXJlbiB2b24gQmzDtmNrZW4gZsO8ciBkaWUgT25saW5lLUdyw7bDn2Vuw6RuZGVydW5nIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgIkpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiRWluIEpvdXJuYWwgd2lyZCBhdWYgR2Vyw6R0ICVzIGhpbnp1Z2Vmw7xndDogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGFkZCBqb3VybmFsIHRvIGRldmljZSAlcyIKK21zZ3N0ciAiIgorIlxuIgorIlx0YmVpbSBWZXJzdWNoLCBlaW4gSm91cm5hbCBhdWYgR2Vyw6R0ICVzIGhpbnp1enVmw7xnZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgImVybGVkaWd0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIkRpZSBFcnpldWd1bmcgZWluZXMgSm91cm5hbHMgd2lyZCBpbSBOdXItU3VwZXItTW9kdXMgw7xiZXJzcHJ1bmdlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJEYXMgSm91cm5hbCAoJXUgQmzDtmNrZSkgd2lyZCBhbmdlbGVndDogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJcdGJlaW0gQW5sZWdlbiBkZXMgSm91cm5hbHMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJGZWhsZXIgYmVpbSBBa3RpdmllcmVuIGRlcyBTY2h1dHplcyBnZWdlbiBtZWhyZmFjaGVzIEVpbmjDpG5nZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIkRlciBTY2h1dHogZ2VnZW4gbWVocmZhY2hlcyBFaW5ow6RuZ2VuIHd1cmRlIGFrdGl2aWVydCBtaXQgZWluZW1cbiIKKyJBa3R1YWxpc2llcnVuZ3NpbnRlcnZhbGwgdm9uICVkIFNla3VuZGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTEKKyMsIGZ1enp5Cittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiRmVobGVyIGJlaW0gU2NocmVpYmVuIGRlciBnZXB1ZmZlcnRlbiBEYXRlbjogJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgImJlaW0gQW5mb3JkZXJuIHZvbiBTcGVpY2hlciBmw7xyIGRpZSBsMS1UYWJlbGxlIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAiIgorIkRpZSBTdXBlcmJsw7Zja2UgdW5kIGRpZSBJbmZvcm1hdGlvbmVuIMO8YmVyIGRpZSBEYXRlaXN5c3RlbW51dHp1bmcgd2VyZGVuXG4iCisiZ2VzY2hyaWViZW46ICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIkVzIGdhYiBTY2h3aWVyaWdrZWl0ZW4gYmVpbSBTY2hyZWliZW4gZGVyIFN1cGVyYmzDtmNrZS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJlcmxlZGlndFxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJEaWUgcmVndWzDpHJlIERhdGVpICVzIHdpcmQgYW5nZWxlZ3RcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndpdGggJWxsdSBibG9ja3MgZWFjaCIKK21zZ3N0ciAiIgorIldhcm51bmc6ICVsbHUgQmzDtmNrZSB1bmJlbnV0enQuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJiZWltIEl0ZXJpZXJlbiDDvGJlciBJbm9kZSAldSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiQXVmcnVmOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJBdWZydWY6ICVzIEdlcsOkdOKAplxuIgorIlxuIgorIkdpYnQgSW5mb3JtYXRpb25lbiDDvGJlciBkaWUgUGFydGl0aW9uaWVydW5nIGplZGVzIGFuZ2VnZWJlbmVuIEdlcsOkdHMgYXVzLlxuIgorIlp1bSBCZWlzcGllbDogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiJXMga2FubiBuaWNodCBnZcO2ZmZuZXQgd2VyZGVuOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgZ2VvbWV0cnkgb2YgJXM6ICVzIgorbXNnc3RyICJEaWUgR2VvbWV0cmllIHZvbiAlcyBrYW5uIG5pY2h0IGVybWl0dGVsdCB3ZXJkZW46ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAiRGllIEdyw7bDn2Ugdm9uICVzIGthbm4gbmljaHQgZXJtaXR0ZWx0IHdlcmRlbjogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBzdGFydD0lOGQgc2l6ZT0lOGx1IGVuZD0lOGRcbiIKK21zZ3N0ciAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgU3RhcnQ9JThkIEdyw7bDn2U9JThsdSBFbmRlPSU4ZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTkKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkJpdHRlIGxhc3NlbiBTaWUgZTJmc2NrIGRpZXNlcyBEYXRlaXN5c3RlbSDDvGJlcnByw7xmZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkJpdHRlIGxhc3NlbiBTaWUgZTJmc2NrIGRpZXNlcyBEYXRlaXN5c3RlbSDDvGJlcnByw7xmZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWMgbWF4X21vdW50c19jb3VudF0gWy1lIGVycm9yc19iZWhhdmlvcl0gWy1mXSBbLWcgZ3JvdXBdXG4iCisiXHRbLWkgaW50ZXJ2YWxbZHxtfHddXSBbLWpdIFstSiBqb3VybmFsX29wdGlvbnNdIFstbF1cbiIKKyJcdFstbSByZXNlcnZlZF9ibG9ja3NfcGVyY2VudF0gWy1vIFteXW1vdW50X29wdGlvbnNbLC4uLl1dXG4iCisiXHRbLXAgbW1wX3VwZGF0ZV9pbnRlcnZhbF0gWy1yIHJlc2VydmVkX2Jsb2Nrc19jb3VudF0gWy11IHVzZXJdXG4iCisiXHRbLUMgbW91bnRfY291bnRdIFstTCB2b2x1bWVfbGFiZWxdIFstTSBsYXN0X21vdW50ZWRfZGlyXVxuIgorIlx0Wy1PIFteXWZlYXR1cmVbLC4uLl1dIFstUSBxdW90YV9vcHRpb25zXVxuIgorIlx0Wy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV0gWy1UIGxhc3RfY2hlY2tfdGltZV0gWy1VIFVVSURdXG4iCisiXHRbLUkgbmV3X2lub2RlX3NpemVdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiQXVmcnVmOiAlcyBbLWMgbWF4X0FuemFobF9FaW5ow6RuZ3VuZ2VuXSBbLWUgRmVobGVydmVyaGFsdGVuXSBbLWcgR3J1cHBlXVxuIgorIlx0Wy1pIEludGVydmFsbFtkfG18d11dIFstal0gWy1KIEpvdXJuYWxfT3B0aW9uZW5dIFstbF1cbiIKKyJcdFstbSByZXNlcnZpZXJ0ZV9CbMO2Y2tlX1Byb3plbnRdIFstbyBbXl1FaW5ow6RuZ2VvcHRpb25lblssLi4uXV0gWy1wICIKKyJtbXBfQWt0dWFsaXNpZXJ1bmdzaW50ZXJ2YWxsXVxuIgorIlx0Wy1yIEFuemFobF9yZXNlcnZpZXJ0ZXJfQmzDtmNrZV0gWy11IEJlbnV0emVyXSBbLUMgQW56YWhsX0VpbmjDpG5ndW5nZW5dIFstTCAiCisiVm9sdW1lX0tlbm51bmddXG4iCisiXHRbLU0gbGV0enRlc19laW5nZWjDpG5ndGVzX1ZlcnplaWNobmlzXSBbLU8gW15dRWlnZW5zY2hhZnRbLC4uLl1dXG4iCisiXHRbLVEgUXVvdGEtT3B0aW9uZW5dXG4iCisiXHRbLUUgZXJ3ZWl0ZXJ0ZV9PcHRpb25lblssLi4uXV0gWy1UIFplaXRwdW5rdF9sZXR6dGVyX1Byw7xmdW5nXSBbLVUgVVVJRF1cbiIKKyJcdFsgLUkgbmV1ZV9Jbm9kZWdyw7bDn2UgXSBHZXLDpHRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiRGVyIEpvdXJuYWwtU3VwZXJibG9jayB3dXJkZSBuaWNodCBnZWZ1bmRlbiFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiYmVpbSBWZXJzdWNoLCBkYXMgZXh0ZXJuZSBKb3VybmFsIHp1IMO2ZmZuZW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBpc3Qga2VpbiBKb3VybmFsZ2Vyw6R0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTIgbWlzYy90dW5lMmZzLmM6MjcxMgorbXNnaWQgIkZpbGVzeXN0ZW0ncyBVVUlEIG5vdCBmb3VuZCBvbiBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiRGllIFVVSUQgZGVzIERhdGVpc3lzdGVtcyB3dXJkZSBhdWYgZGVtIEpvdXJuYWxnZXLDpHQgbmljaHQgZ2VmdW5kZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiRGFzIEpvdXJuYWxnZXLDpHQgd3VyZGUgbmljaHQgZ2VmdW5kZW4uIEVzIHd1cmRlIE5JQ0hUIGVudGZlcm50XG4iCisiQml0dGUgYmVudXR6ZW4gU2llIGRpZSBPcHRpb24g4oCeLWbigJwsIHVtIGRhcyBmZWhsZW5kZSBHZXLDpHQgenUgZW50ZmVybmVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAiRGFzIEpvdXJuYWwgd3VyZGUgZW50ZmVybnRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJiZWltIExlc2VuIGRlciBCaXRtYXBzIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJiZWltIFp1csO8Y2tzZXR6ZW4gZGVyIEpvdXJuYWwtSW5vZGVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImJlaW0gU2NocmVpYmVuIGRlciBKb3VybmFsLUlub2RlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKHVuZCBzdGFydGVuIFNpZSBkYW5hY2ggZGFzIFN5c3RlbSBuZXUpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3NgorIywgYy1mb3JtYXQKK21zZ2lkICJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisiQml0dGUgbGFzc2VuIFNpZSB6dWVyc3Qg4oCeZTJmc2NrIC1mICVz4oCcIGxhdWZlbi5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJEYXMgRGVha3RpdmllcmVuIHZvbiDigJ4lc+KAnCB3aXJkIG5pY2h0IHVudGVyc3TDvHR6dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIkRhcyBBa3RpdmllcmVuIHZvbiDigJ4lc+KAnCB3aXJkIG5pY2h0IHVudGVyc3TDvHR6dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAyNQorbXNnaWQgIiIKKyJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJIYXNfam91cm5hbCBrYW5uIG51ciB6dXLDvGNrZ2VzZXR6dCB3ZXJkZW4sIHdlbm4gZGFzIERhdGVpc3lzdGVtIG5pY2h0XG4iCisib2RlciBudXItbGVzYmFyIGVpbmdlaMOkbmd0IGlzdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIm5lZWRzX3JlY292ZXJ5IGlzdCBnZXNldHp0LiBCaXR0ZSBmw7xocmVuIFNpZSBlMmZzY2sgYXVzLCBiZXZvciBTaWVcbiIKKyJoYXNfam91cm5hbCB6dXLDvGNrIHNldHplbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiRGFzIFNldHplbiB2b24g4oCec3BhcnNlX3N1cGVy4oCcIHdpcmQgYXVmIERhdGVpc3lzdGVtZW4gbWl0IGFrdGl2aWVydGVtXG4iCisi4oCebWV0YV9iZ+KAnCBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiRGVyIFNjaHV0eiB2b3IgbWVocmZhY2hlbSBFaW5ow6RuZ2VuIGthbm4gbnVyIGFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gZGFzXG4iCisiRGF0ZWlzeXN0ZW0gbmljaHQgb2RlciBudXItbGVzYmFyIGVpbmdlaMOkbmd0IGlzdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWRzLlxuIgorbXNnc3RyICIiCisiRGVyIFNjaHV0eiB2b3IgbWVocmZhY2hlbSBFaW5ow6RuZ2VuIHd1cmRlIG1pdCBlaW5lbSAiCisiQWt0dWFsaXNpZXJ1bmdzaW50ZXJ2YWxsXG4iCisidm9uICVkIFNla3VuZGVuIGFrdGl2aWVydC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisiRGVyIFNjaHV0eiB2b3IgbWVocmZhY2hlbSBFaW5ow6RuZ2VuIGthbm4gbmljaHRcbiIKKyJkZWFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gZGFzIERhdGVpc3lzdGVtIG51ci1sZXNiYXJcbiIKKyJlaW5nZWjDpG5ndCBpc3QuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGVzZW4gZGVyIEJpdG1hcHNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTEwOAorIywgYy1mb3JtYXQKK21zZ2lkICJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90IG1hdGNoLiBleHBlY3RlZDogJXgsIGFjdHVhbDogJXhcbiIKK21zZ3N0ciAiIgorIkRpZSBtYWdpc2NoZSBaYWhsIGltIE1NUC1CbG9jayBwYXNzdCBuaWNodC4gRXJ3YXJ0ZXQ6ICV4LCBnZWZ1bmRlbjogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXMgTU1QLUJsb2Nrcy4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKyJEYXMgRGVha3RpdmllcmVuIHZvbiBmbGV4X2JnIHfDvHJkZSBkYXMgRGF0ZWlzeXN0ZW0gaW5rb25zaXN0ZW50IG1hY2hlbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiaHVnZV9maWxlIGthbm4gbnVyIGFrdGl2aWVydCB3ZXJkZW4sIHdlbm4gZGFzIERhdGVpc3lzdGVtIG5pY2h0XG4iCisib2RlciBudXItbGVzYmFyIGVpbmdlaMOkbmd0IGlzdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2NworbXNnaWQgIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTc1Cittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRpc2FibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzEzCittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMyNgorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiAnXnF1b3RhJyBvcHRpb24gb3ZlcnJpZGVzICctUSdhcmd1bWVudHMuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJXYXJudW5nOiBkaWUgT3B0aW9uIOKAnl5xdW90YeKAnCBoYXQgVm9ycmFuZyB2b3Ig4oCeLVHigJwtQXJndW1lbnRlbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorIywgZnV6enkKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJEYXMgU2V0emVuIHZvbiDigJ5zcGFyc2Vfc3VwZXLigJwgd2lyZCBhdWYgRGF0ZWlzeXN0ZW1lbiBtaXQgYWt0aXZpZXJ0ZW1cbiIKKyLigJ5tZXRhX2Jn4oCcIG5pY2h0IHVudGVyc3TDvHR6dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIkRhcyBEYXRlaXN5c3RlbSBoYXQgYmVyZWl0cyBlaW4gSm91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdGJlaW0gVmVyc3VjaCwgZGFzIEpvdXJuYWwgYXVmICVzIHp1IMO2ZmZuZW5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIgorbXNnc3RyICJKb3VybmFsIHdpcmQgZXJ6ZXVndCBhdWYgR2Vyw6R0ICVzOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWRkaW5nIGZpbGVzeXN0ZW0gdG8gam91cm5hbCBvbiAlcyIKK21zZ3N0ciAiYmVpbSBIaW56dWbDvGdlbiBkZXMgRGF0ZWlzeXN0ZW1zIHp1bSBKb3VybmFsIGF1ZiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiSm91cm5hbC1Jbm9kZXMgd2VyZGVuIGVyemV1Z3Q6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ2MAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCBmaWxlIgorbXNnc3RyICIiCisiXG4iCisiXHRiZWltIFZlcnN1Y2gsIGRpZSBKb3VybmFsZGF0ZWkgenUgZXJ6ZXVnZW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJiZWltIEluaXRpYWxpc2llcmVuIGRlcyBKb3VybmFsLVN1cGVyYmxvY2tzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBxdW90YSBsaW1pdHMgKCVkKSIKK21zZ3N0ciAiYmVpbSBVcGRhdGVuIGRlcyDigJ5CYWQgQmxvY2vigJwtSW5vZGVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAiYmVpbSBTY2hyZWliZW4gZGVyIElub2RlLVRhYmVsbGUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAiYmVpbSBMZXNlbiBkZXMgUm9vdC1Jbm9kZXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRXMgd3VyZGVuIHVuZ8O8bHRpZ2UgUXVvdGFvcHRpb25lbiBhbmdlZ2ViZW4uXG4iCisiXG4iCisiRGllIGZvbGdlbmRlbiBnw7xsdGlnZW4gUXVvdGFvcHRpb25lbiBzaW5kIHZlcmbDvGdiYXIgKGR1cmNoIEtvbW1hdGEgZ2V0cmVubnRcbiIKKyJhbmdlYmVuKTpcbiIKKyJcdFteXXVzcnF1b3RhXG4iCisiXHRbXl1ncnBxdW90YVxuIgorIlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICJEaWUgQW5nYWJlIHZvbiBaZWl0L0RhdHVtIHdhciB1bnZlcnN0w6RuZGxpY2g6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJ1bmfDvGx0Z2UgQW56YWhsIEVpbmjDpG5ndW5nZW4gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZSBHcnVwcGVuLUlEL0dydXBwZSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICJ1bmfDvGx0aWdlcyBJbnRlcnZhbGwgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc3NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2sgcmF0aW8gLSAlcyIKK21zZ3N0ciAidW5nw7xsdGlnZXMgVmVyaMOkbHRuaXMgcmVzZXJ2aWVydGVyIEJsw7Zja2UgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItbyBkYXJmIG51ciBlaW5tYWwgYW5nZWdlYmVuIHdlcmRlbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItTyBkYXJmIG51ciBlaW5tYWwgYW5nZWdlYmVuIHdlcmRlbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgInVuZ8O8bHRpZ2UgQW56YWhsIHJlc2VydmllcnRlciBCbMO2Y2tlIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAiZmFsc2NoZSBCZW51dHplci1JRC9CZW51dHplcm5hbWUgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJ1bmfDvGx0aWdlIElub2RlLUdyw7bDn2UgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg3MAorIywgYy1mb3JtYXQKK21zZ2lkICJJbm9kZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28tICVzIgorbXNnc3RyICJEaWUgSW5vZGUtR3LDtsOfZSBtdXNzIGVpbmUgWndlaWVycG90ZW56IHNlaW4gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTk2NworIywgYy1mb3JtYXQKK21zZ2lkICJtbXBfdXBkYXRlX2ludGVydmFsIHRvbyBiaWc6ICVsdVxuIgorbXNnc3RyICJtbXBfdXBkYXRlX2ludGVydmFsIGlzdCB6dSBncm/DnzogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKKyJEYXMgQWt0dWFsaXNpZXJ1bmdzaW50ZXJ2YWxsIGRlcyBTY2h1dHplcyB2b3IgbWVocmZhY2hlbSBFaW5ow6RuZ2VuXG4iCisid2lyZCBhdWYgJWx1IFNla3VuZGUgZ2VzZXR6dFxuIgorbXNnc3RyWzFdICIiCisiRGFzIEFrdHVhbGlzaWVydW5nc2ludGVydmFsbCBkZXMgU2NodXR6ZXMgdm9yIG1laHJmYWNoZW0gRWluaMOkbmdlblxuIgorIndpcmQgYXVmICVsdSBTZWt1bmRlbiBnZXNldHp0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlkZTogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgUkFJRC1TdHJpZGU6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgU3RyaXBlYnJlaXRlLVBhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICJVbmfDvGx0aWdlciBIYXNoLUFsZ29yaXRobXVzOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIkRlciBTdGFuZGFyZC1IYXNoLUFsZ29yaXRobXVzIHdpcmQgYXVmICVzICglZCkgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiRmFsc2NoZSBlcndlaXRlcnRlIE9wdGlvbmVuIGFuZ2VnZWJlbi5cbiIKKyJcbiIKKyJFcndlaXRlcnRlIE9wdGlvbmVuIHdlcmRlbiBkdXJjaCBLb21tYXRhIGdldHJlbm50LiBNYW5jaGUgZXJ3YXJ0ZW4gZWluXG4iCisiXHRBcmd1bWVudCwgd2VsY2hlcyBtaXQgR2xlaWNoaGVpdHN6ZWljaGVuICjigJ494oCcKSB6dWdld2llc2VuIHdpcmQuXG4iCisiXG4iCisiR8O8bHRpZ2UgZXJ3ZWl0ZXJ0ZSBPcHRpb25lbiBzaW5kOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08SGFzaGFsZ29yaXRobXVzPlxuIgorIlx0bW91bnRfb3B0cz08ZXJ3ZWl0ZXJ0ZSBTdGFuZGFyZGVpbmjDpG5nb3B0aW9uZW4+XG4iCisiXHRzdHJpZGU9PFJBSUQtQmxvY2tncsO2w59lIHBybyBQTGF0dGUgaW4gQmzDtmNrZW5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBTdHJpZGUqRGF0ZW5wbGF0dGVuIGluIEJsw7Zja2VuPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUxOQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICJEaWUgSW5vZGUtQml0bWFwIGtvbm50ZSBuaWNodCBnZWxlc2VuIHdlcmRlblxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIkRpZSBCbG9jay1CaXRtYXAga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDEgcmVzaXplL3Jlc2l6ZTJmcy5jOjEyNzYKK21zZ2lkICJibG9ja3MgdG8gYmUgbW92ZWQiCittc2dzdHIgInp1IHZlcnNjaGllYmVuZGUgQmzDtmNrZSIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorIkJlaW0gRXJow7ZoZW4gZGVyIElub2RlLUdyw7bDn2Uga29ubnRlIGtlaW5lIEJsb2NrYml0bWFwIHJlc2VydmllcnQgd2VyZGVuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIkRlciBQbGF0eiByZWljaHQgbmljaHQgYXVzIGbDvHIgZWluZSBFcmjDtmh1bmcgZGVyIElub2RlLUdyw7bDn2UgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIiIKKyJEYXMgVmVyc2NoaWViZW4gdm9uIEJsw7Zja2VuIHfDpGhyZW5kIGRlciBHcsO2w59lbsOkbmRlcnVuZyBkZXIgSW5vZGVzICIKKyJzY2hlaXRlcnRlIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpbSDDhG5kZXJuIGRlciBJbm9kZS1HcsO2w59lLlxuIgorIlN0YXJ0ZW4gU2llIGUydW5kbywgdW0gZGllIMOEbmRlcnVuZ2VuIGFtIERhdGVpc3lzdGVtIHLDvGNrZ8OkbmdpZyB6dSBtYWNoZW4uIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5IHJ1bm5pbmc6XG4iCisiJ2UyZnNjayAtZiAlcydcbiIKK21zZ3N0ciAiIgorIkRpZSBtYWdpc2NoZSBaYWhsIGRlcyBNTVAtQmxvY2tzIGlzdCB1bmfDvGx0aWcuIFZlcnN1Y2hlbiBTaWUsIGRpZXMgZHVyY2hcbiIKKyLigJ5lMmZzY2sgLWYgJXPigJxcbiIKKyJ6dSBiZWhlYmVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgaXN0IGtlaW4gSm91cm5hbGdlcsOkdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJEaWUgSW5vZGUtR3LDtsOfZSBpc3QgYmVyZWl0cyAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzMQorbXNnaWQgIlNocmlua2luZyBpbm9kZSBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIKK21zZ3N0ciAiRGFzIFZlcnJpbmdlcm4gZGVyIElub2RlLUdyw7bDn2Ugd2lyZCBuaWNodCB1bnRlcnN0w7x0enRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgIlVuenVsw6Rzc2lnZSBJbm9kZS1HcsO2w59lOiAlbHUgKG1heCAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiRGllIG1heGltYWxlIEFuemFobCB2b24gRWluaMOkbmd1bmdlbiB3aXJkIGF1ZiAlZCBnZXNlenRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiRGllIEFuemFobCBkZXIgRWluaMOkbmd1bmdlbiB3aXJkIGF1ZiAlZCBnZXNldHp0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJEYXMgRmVobGVydmVyaGFsdGVuIHdpcmQgYXVmICVkIGdlc2V0enRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIkRpZSBHcnVwcGVuLUlEIHJlc2VydmllcnRlciBCbMO2Y2tlIHdpcmQgYXVmICVsdSBnZXNldHp0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgaXMgdG9vIGJpZyAoJWx1KSIKK21zZ3N0ciAiRGVyIEFic3RhbmQgendpc2NoZW4gendlaSBQcsO8ZmzDpHVmZW4gaXN0IHp1IGdyb8OfICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAiRGVyIEFic3RhbmQgendpc2NoZW4gZGVuIFByw7xmbMOkdWZlbiB3aXJkIGF1ZiAlbHUgU2VrdW5kZW4gZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnRhZ2UgdG8gJWclJSAoJWxsdSBibG9ja3MpXG4iCittc2dzdHIgIiIKKyJEZXIgcHJvemVudHVlbGxlIEFudGVpbCByZXNlcnZpZXJ0ZXIgQmzDtmNrZSB3aXJkIGF1ZiAlZyUlICglbGx1IEJsw7Zja2UpICIKKyJnZXNldHp0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICJEaWUgQW56YWhsIHJlc2VydmllcnRlciBCbMO2Y2tlIGlzdCB6dSBncm/DnyAoJWxsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICJEaWUgQW56YWhsIHJlc2VydmllcnRlciBCbMO2Y2tlIHdpcmQgYXVmICVsbHUgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRhcyBEYXRlaXN5c3RlbSBoYXQgYmVyZWl0cyBTcGFyc2UtU3VwZXJibMO2Y2tlLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRhcyBBa3RpdmllcmVuIHZvbiBTcGFyc2UtU3VwZXJibMO2Y2tlbiB3aXJkIGF1ZiBEYXRlaXN5c3RlbWVuIG1pdCAiCisiYWt0aXZpZXJ0ZXJcbiIKKyJFaWdlbnNjaGFmdCBtZXRhX2JnIG5pY2h0IHVudGVyc3TDvHR6dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIktlbm51bmcg4oCeU3BhcnNlLVN1cGVyYmzDtmNrZeKAnCBpc3QgZ2VzZXR6dC4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRhcyBadXLDvGNrc2V0emVuIGRlciBLZW5udW5nIOKAnlNwYXJzZS1TdXBlcmJsw7Zja2XigJwgd2lyZCBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIiIKKyJEZXIgWmVpdHB1bmt0IGRlciBsZXR6dGVuIFByw7xmdW5nIGRlcyBEYXRlaXN5c3RlbXMgd2lyZCBhdWYgJXMgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAiRGllIEJlbnV0emVyLUlEIHJlc2VydmllcnRlciBCbMO2Y2tlIHdpcmQgYXVmICVsdSBnZXNldHp0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIiIKKyJGZWhsZXIgYmVpIGRlciBWZXJ3ZW5kdW5nIHZvbiBjbGVhcl9tbXAuIEVzIG11c3MgenVzYW1tZW4gbWl0IC1mIGJlbnV0enQgIgorIndlcmRlblxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJRdW90YXMga8O2bm5lbiBudXIgYmVpIG5pY2h0IGVpbmdlaMOkbmd0ZW4gRGF0ZWlzeXN0ZW1lbiBnZcOkbmRlcnQgd2VyZGVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4Cittc2dpZCAiVGhlIFVVSUQgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkRpZSBVVUlEIGthbm4gbnVyIGJlaSBuaWNodCBlaW5nZWjDpG5ndGVtIERhdGVpc3lzdGVtIGdlw6RuZGVydCB3ZXJkZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIlVuZ8O8bHRpZ2VzIFVVSUQtRm9ybWF0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMDEKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIkRlciBKb3VybmFsLVN1cGVyYmxvY2sgbXVzcyBha3R1YWxpc2llcnQgd2VyZGVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkRpZSBJbm9kZS1HcsO2w59lIGthbm4gbnVyIGJlaSBhdXNnZWjDpG5ndGVtIERhdGVpc3lzdGVtIGdlw6RuZGVydCB3ZXJkZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkRhcyDDhG5kZXJuIGRlciBJbm9kZS1HcsO2w59lIGF1ZiBEYXRlaXN5c3RlbWVuIG1pdCBha3RpdmllcnRlbSBmbGV4X2JnXG4iCisid2lyZCBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIgorbXNnc3RyICJEaWUgSW5vZGUtR3LDtsOfZSB3aXJkIGF1ZiAlbHUgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIkRpZSBJbm9kZS1HcsO2w59lIGtvbm50ZSBuaWNodCBnZcOkbmRlcnQgd2VyZGVuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJEaWUgU3RyaWRlLUdyw7bDn2Ugd2lyZCBhdWYgJWQgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgIkRpZSBTdHJpcGVicmVpdGUgd2lyZCBhdWYgJWQgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiRGllIGVyd2VpdGVydGVuIFN0YW5kYXJkLUVpbmjDpG5nZW9wdGlvbmVuIHdlcmRlbiBhdWYg4oCeJXPigJwgZ2VzZXR6dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICIlczogSm91cm5hbCB3aXJkIHdpZWRlcmhlcmdlc3RlbGx0XG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICI8VmVyYXJiZWl0dW5nIGzDpHVmdFxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIlRyb3R6ZGVtIGZvcnRmYWhyZW4gKG9kZXIgJWQgU2VrdW5kZW4gd2FydGVuKSA/IChqLG4pICIKKworIzogbWlzYy91dGlsLmM6MTA4Cittc2dpZCAiUHJvY2VlZCBhbnl3YXk/ICh5LG4pICIKK21zZ3N0ciAiVHJvdHpkZW0gZm9ydGZhaHJlbj8gKGosbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiIgorIm1rZTJmcyB3aXJkIHRyb3R6ZGVtIGVyend1bmdlbi4gSG9mZmVudGxpY2ggaXN0IC9ldGMvbXRhYiBuaWNodCBrb3JyZWt0LlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iCittc2dzdHIgIiVzIHdpcmQgaGllciBuaWNodCBhbmdlbGVndCFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIm1rZTJmcyB3aXJkIHRyb3R6ZGVtIGVyend1bmdlbi5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiIgorIkVzIGtvbm50ZSBrZWluIFNwZWljaGVyIHp1bSBFaW5sZXNlbiBkZXIgSm91cm5hbG9wdGlvbmVuIHJlc2VydmllcnQgd2VyZGVuIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCBmaW5kIGpvdXJuYWwgZGV2aWNlIG1hdGNoaW5nICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFaW4genUgJXMgcGFzc2VuZGVzIEpvdXJuYWxnZXLDpHQga29ubnRlIG5pY2h0IGdlZnVuZGVuIHdlcmRlblxuIgorCisjOiBtaXNjL3V0aWwuYzoyMTMKK21zZ2lkICIiCisiXG4iCisiQmFkIGpvdXJuYWwgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiSm91cm5hbCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgam91cm5hbCBvcHRpb25zIGFyZTpcbiIKKyJcdHNpemU9PGpvdXJuYWwgc2l6ZSBpbiBtZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PGpvdXJuYWwgZGV2aWNlPlxuIgorIlx0bG9jYXRpb249PGpvdXJuYWwgbG9jYXRpb24+XG4iCisiXG4iCisiVGhlIGpvdXJuYWwgc2l6ZSBtdXN0IGJlIGJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgZmlsZXN5c3RlbSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGYWxzY2hlIEpvdXJuYWxvcHRpb25lbiBhbmdlZ2ViZW46XG4iCisiXG4iCisiSm91cm5hbG9wdGlvbmVuIHdlcmRlbiBkdXJjaCBLb21tYXRhIGdldHJlbm50LiBNYW5jaGUgZXJ3YXJ0ZW4gZWluXG4iCisiXHRBcmd1bWVudCwgd2VsY2hlcyBtaXQgR2xlaWNoaGVpdHN6ZWljaGVuICjigJ494oCcKSB6dWdld2llc2VuIHdpcmQuXG4iCisiXG4iCisiR8O8bHRpZ2UgSm91cm5hbG9wdGlvbmVuIHNpbmQ6XG4iCisiXHRzaXplPTxKb3VybmFsZ3LDtsOfZSBpbiBNZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PEpvdXJuYWxnZXLDpHQ+XG4iCisiXHRsb2NhdGlvbj08UG9zaXRpb24gZGVzIEpvdXJuYWxzPlxuIgorIlxuIgorIkRpZSBHcsO2w59lIGRlcyBKb3VybmFscyBtdXNzIHp3aXNjaGVuIDEwMjQgdW5kIDEwMjQwMDAwIERhdGVpc3lzdGVtYmzDtmNrZW5cbiIKKyJcdGxpZWdlbi5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkRhcyBEYXRlaXN5c3RlbSBpc3QgZsO8ciBlaW4gSm91cm5hbCB6dSBrbGVpblxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJEaWUgZ2V3w7xuc2NodGUgSm91cm5hbGdyw7bDn2UgaXN0ICVkIEJsw7Zja2U7IHNpZSBtdXNzXG4iCisiendpc2NoZW4gMTAyNCB1bmQgMTAyNDAwMDAgQmzDtmNrZW4gbGllZ2VuLiBBYmJydWNoLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJEYXMgSm91cm5hbCBpc3QgZsO8ciBkaWVzZXMgRGF0ZWlzeXN0ZW0genUgZ3Jvw58uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiRGllc2VzIERhdGVpc3lzdGVtIHdpcmQgYXV0b21hdGlzY2ggYWxsZSAlZCBFaW5ow6RuZ3VuZ2VuIG9kZXJcbiIKKyIlZyBUYWdlIMO8YmVycHLDvGZ0LCB3YXMgaW1tZXIgenVlcnN0IGtvbW10LlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiQXVmcnVmOiAlcyBbLWRdIFstcCBQcm96ZXNzLUlELURhdGVpXSBbLXMgU29ja2V0cGZhZF0gWy1UIFRpbWVvdXRdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgJXMgWy1yfHRdIFstbiBBbnphaGxdIFstcyBTb2NrZXRwZmFkXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAidW5nw7xsdGlnZSBBcmd1bWVudGUiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICJ2ZXJiaW5kZW4iCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAic2NocmVpYmVuIgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAiTGVzZXrDpGhsZXIiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDYKK21zZ2lkICJiYWQgcmVzcG9uc2UgbGVuZ3RoIgorbXNnc3RyICJ1bmfDvGx0aWdlIEzDpG5nZSBkZXIgQW50d29ydCIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJkZXIgdXVpZGQtRMOkbW9uIGzDpGZ0IGJlcmVpdHMgbWl0IFByb3plc3MtSUQgJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiRXMga29ubnRlIGtlaW4gVW5peC1TdHJlYW0tU29ja2V0IGVyemV1Z3Qgd2VyZGVuOiAlcyIKKworIzogbWlzYy91dWlkZC5jOjMwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBiaW5kIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJFcyBrb25udGUgbmljaHQgbWl0IFVuaXgtU29ja2V0ICVzIHZlcmJ1bmRlbiB3ZXJkZW46ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJMYXVzY2hlbiBhdWYgVW5peC1Tb2NrZXQgJXMgd2FyIG5pY2h0IG3DtmdsaWNoOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgIkZlaGxlciBiZWltIExlc2VuIHZvbSBDbGllbnQsIEzDpG5nZSA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICJPcGVyYXRpb24gJWQsIGVpbmdlaGVuZGUgTnVtbWVyID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIgorbXNnc3RyICJaZWl0LVVVSUQgZXJ6ZXVndDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM5MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgcmFuZG9tIFVVSUQ6ICVzXG4iCittc2dzdHIgIlp1ZsOkbGxpZ2UgVVVJRCBlcnpldWd0OiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCBzdWJzZXF1ZW50IFVVSURzXG4iCittc2dzdHJbMF0gIlplaXQtVVVJRCAlcyB1bmQgZGllIGZvbGdlbmRlIFVVSUQgZXJ6ZXVndFxuIgorbXNnc3RyWzFdICJaZWl0LVVVSUQgJXMgdW5kIGRpZSBmb2xnZW5kZW4gJWQgVVVJRHMgZXJ6ZXVndFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiVkIFVVSURzIGVyemV1Z3Q6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvcGVyYXRpb24gJWRcbiIKK21zZ3N0ciAiVW5nw7xsdGlnZSBPcGVyYXRpb24gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIlVuZ8O8bHRpZ2UgTnVtbWVyOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTM0IG1pc2MvdXVpZGQuYzo1NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAiRmVobGVyIGJlaW0gQXVmcnVmIGRlcyBVdWlkLUTDpG1vbnMgKCVzKTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iCittc2dzdHJbMF0gIiVzIHVuZCBkaWUgZm9sZ2VuZGUgVVVJRFxuIgorbXNnc3RyWzFdICIlcyB1bmQgZGllIGZvbGdlbmRlbiAlZCBVVUlEc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIkxpc3RlIGRlciBVVUlEczpcbiIKKworIzogbWlzYy91dWlkZC5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIHJlcGx5IGxlbmd0aCBmcm9tIHNlcnZlciAlZFxuIgorbXNnc3RyICJVbmVyd2FydGV0ZSBBbnR3b3J0bMOkbmdlIHZvbiBTZXJ2ZXIgJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjU4NgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBraWxsIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkOiAlc1xuIgorbXNnc3RyICIiCisiRGVyIG1pdCBQcm96ZXNzLUlEICVkIGxhdWZlbmRlIHV1aWRkIGtvbm50ZSBuaWNodCBhYmdlc2Nob3NzZW4gd2VyZGVuOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJEZXIgbWl0IFBJRCAlZCBsYXVmZW5kZSB1dWlkZCB3dXJkZSBhYmdlc2Nob3NzZW5cbiIKKworIzogbWlzYy91dWlkZ2VuLmM6MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcl0gWy10XVxuIgorbXNnc3RyICJBdWZydWY6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBEdW1wIGRlciBFcndlaXRlcnVuZzpcbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiI1x0QW56PSVsbHUsIEdyw7bDn2U9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRpZXJ0PSVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkF1ZnJ1ZjogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gR2Vyw6R0IFtuZXVlX0dyw7bDn2VdXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJEaWUgSW5vZGUtVGFiZWxsZSB3aXJkIGVyd2VpdGVydCIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICJCbMO2Y2tlIHdlcmRlbiB2ZXJzY2hvYmVuIgorCisjOiByZXNpemUvbWFpbi5jOjc4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIkRpZSBJbm9kZS1UYWJlbGxlIHdpcmQgZ2VsZXNlbiIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIkRpZSBJbm9kZS1SZWZlcmVuemVuIHdlcmRlbiBha3R1YWxpc2llcnQiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIkRpZSBJbm9kZS1UYWJlbGxlIHdpcmQgdmVyc2Nob2JlbiIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAiVW5iZWthbm50ZXIgRHVyY2hnYW5nPyE/IgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAiU3RhcnQgdm9uIER1cmNoZ2FuZyAlZCAobWF4ID0gJWx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjE2MgorbXNnaWQgIiIKKyJcbiIKKyJSZXNpemluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbXMgaGFzIG5vdCBiZWVuIGZ1bGx5IHRlc3RlZC4gIFByb2NlZWQgYXRcbiIKKyJ5b3VyIG93biByaXNrISAgVXNlIHRoZSBmb3JjZSBvcHRpb24gaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW55d2F5LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRGllIEdyw7bDn2VudmVyw6RuZGVydW5nIHZvbiBCaWdhbGxvYy1EYXRlaXN5c3RlbWVuIHd1cmRlIG5vY2ggbmljaHQgIgorInZvbGxzdMOkbmRpZ1xuIgorImdlcHLDvGZ0LiBEZXN3ZWdlbiBoYW5kZWxuIFNpZSBhdWYgZWlnZW5lIEdlZmFociEuIFZlcndlbmRlbiBTaWUgZGllIE9wdGlvblxuIgorIuKAnmZvcmNl4oCcLCB3ZW5uIFNpZSB0cm90emRlbSBmb3J0ZmFocmVuIHdvbGxlbi5cbiIKKworIzogcmVzaXplL21haW4uYzozNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyIKK21zZ3N0ciAiYmVpbSDDlmZmbmVuIHZvbiAlcyIKKworIzogcmVzaXplL21haW4uYzozNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIKK21zZ3N0ciAiYmVpbSBBYmZyYWdlbiBkZXIgU3RhdHVzaW5mb3JtYXRpb24gZsO8ciAlcyIKKworIzogcmVzaXplL21haW4uYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZiAlcycgZmlyc3QuXG4iCisiXG4iCittc2dzdHIgIiIKKyJCaXR0ZSBsYXNzZW4gU2llIHp1ZXJzdCDigJ5lMmZzY2sgLWYgJXPigJwgbGF1ZmVuLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIkdlc2Now6R0enRlIG1pbmltYWxlIEdyw7bDn2UgZGVzIERhdGVpc3lzdGVtczogJWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG5ldyBzaXplOiAlc1xuIgorbXNnc3RyICJVbnp1bMOkc3NpZ2UgbmV1ZSBHcsO2w59lOiAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUyMAorbXNnaWQgIk5ldyBzaXplIHRvbyBsYXJnZSB0byBiZSBleHByZXNzZWQgaW4gMzIgYml0c1xuIgorbXNnc3RyICJEaWUgbmV1ZSBHcsO2w59lIGzDpHNzdCBzaWNoIG5pY2h0IG1laHIgbWl0IDMyIEJpdHMgYXVzZHLDvGNrZW5cbiIKKworIzogcmVzaXplL21haW4uYzo1MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTmV3IHNpemUgc21hbGxlciB0aGFuIG1pbmltdW0gKCVsbHUpXG4iCittc2dzdHIgIkRpZSBuZXVlIEdyw7bDn2UgaXN0IGtsZWluZXIgYWxzIGRhcyBNaW5pbXVtICglbGx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiVW5nw7xsdGlnZSDigJ5TdHJpZGXigJwtTMOkbmdlIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiRGllIHNpZSBlbnRoYWx0ZW5kZSBQYXJ0aXRpb24gKG9kZXIgR2Vyw6R0KSBpc3QgbnVyICVsbHUgKCVkaykgQmzDtmNrZSBncm/Dny5cbiIKKyJTaWUgd29sbGVuICVsbHUgQmzDtmNrZSBoYWJlbi5cbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIlF1b3RhcyBrw7ZubmVuIG51ciBiZWkgbmljaHQgZWluZ2Vow6RuZ3RlbiBEYXRlaXN5c3RlbWVuIGdlw6RuZGVydCB3ZXJkZW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJEYXMgRGF0ZWlzeXN0ZW0gaXN0IGJlcmVpdHMgJWxsdSAoJWRrKSBCbMO2Y2tlIGxhbmcuIE5pY2h0cyB6dSB0dW4hXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDY0LWJpdC5cbiIKK21zZ3N0ciAiRGFzIERhdGVpc3lzdGVtIGhhdCBiZXJlaXRzIGVpbiBKb3VybmFsLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgIkRhcyBEYXRlaXN5c3RlbSBoYXQgYmVyZWl0cyBlaW4gSm91cm5hbC5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICIiCisiRGVyIFplaXRwdW5rdCBkZXIgbGV0enRlbiBQcsO8ZnVuZyBkZXMgRGF0ZWlzeXN0ZW1zIHdpcmQgYXVmICVzIGdlc2V0enRcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICIiCisiRGVyIFplaXRwdW5rdCBkZXIgbGV0enRlbiBQcsO8ZnVuZyBkZXMgRGF0ZWlzeXN0ZW1zIHdpcmQgYXVmICVzIGdlc2V0enRcbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIiIKKyJEaWUgR3LDtsOfZSBkZXMgRGF0ZWlzeXN0ZW1zIGF1ZiAlcyB3aXJkIGF1ZiAlbGx1ICglZGspIEJsw7Zja2UgZ2XDpG5kZXJ0LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVzaXplICVzIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsIGRpZSBHcsO2w59lIHZvbiAlcyB6dSDDpG5kZXJuIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIkJpdHRlIGxhc3NlbiBTaWUg4oCeZTJmc2NrIC1meSAlc+KAnCBsYXVmZW4sIHVtIGRhc1xuIgorIkRhdGVpc3lzdGVtIG5hY2ggZGVyIGFiZ2Vicm9jaGVuZW4gR3LDtsOfZW7DpG5kZXJ1bmdcbiIKKyJ6dSByZXBhcmllcmVuLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEYXMgRGF0ZWlzeXN0ZW0gYXVmICVzIGlzIG51biAlbGx1ICglZGspIEJsw7Zja2UgbGFuZy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo2NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHRydW5jYXRlICVzIgorbXNnc3RyICJiZWltIFZlcnN1Y2gsICVzIGFienVzY2huZWlkZW4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICIiCisiRGVyIEtlcm5lbCB1bnRlcnN0w7x0enQgZGllIE9ubGluZS1HcsO2w59lbsOkbmRlcnVuZyBtaXQgc3BhcnNlX3N1cGVyMiBuaWNodCIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisiRGF0ZWlzeXN0ZW0gYmVpICVzIGlzdCBhdWYgJXMgZWluZ2Vow6RuZ3Q7IE9ubGluZS1HcsO2w59lbsOkbmRlcnVuZyBpc3RcbiIKKyJlcmZvcmRlcmxpY2hcbiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiT25saW5lLVNjaHJ1bXBmZW4gd2lyZCBuaWNodCB1bnRlcnN0w7x0enQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJEYXMgRGF0ZWlzeXN0ZW0gdW50ZXJzdMO8dHp0IGRpZSBPbmxpbmUtR3LDtsOfZW7DpG5kZXJ1bmcgbmljaHQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjIKK21zZ2lkICJOb3QgZW5vdWdoIHJlc2VydmVkIGdkdCBibG9ja3MgZm9yIHJlc2l6aW5nIgorbXNnc3RyICJOaWNodCBnZW51ZyByZXNlcnZpZXJ0ZSBHRFQtQmzDtmNrZSBmw7xyIGRpZSBHcsO2w59lbsOkbmRlcnVuZyIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiIgorIkRlciBLZXJuZWwgdW50ZXJzdMO8dHp0IGRpZSBPbmxpbmUtR3LDtsOfZW7DpG5kZXJ1bmdlbiBlaW5lcyBzbyBncm/Dn2VuXG4iCisiRGF0ZWlzeXN0ZW1zIG5pY2h0IgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgImJlaW0gVmVyc3VjaCwgZGVuIEVpbmjDpG5nZXB1bmt0ICVzIHp1IMO2ZmZuZW4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiT2xkIHJlc2l6ZSBpbnRlcmZhY2UgcmVxdWVzdGVkLlxuIgorbXNnc3RyICJEaWUgYWx0ZSBTY2huaXR0c3RlbGxlIGbDvHIgR3LDtsOfZW7DpG5kZXJ1bmcgd3VyZGUgYW5nZWZvcmRlcnQuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjEgcmVzaXplL29ubGluZS5jOjE3OAorbXNnaWQgIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIgorbXNnc3RyICJEaWUgRXJsYXVibmlzIHp1bSDDhG5kZXJuIGRlciBEYXRlaXN5c3RlbWdyw7bDn2Ugd3VyZGUgdmVyd2VpZ2VydC4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIkJlaW0gw5xiZXJwcsO8ZmVuIGRlciBVbnRlcnN0w7x0enVuZyBmw7xyIE9ubGluZS1HcsO2w59lbsOkbmRlcnVuZyIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiRGVyIEtlcm5lbCBiaWV0ZXQga2VpbmUgVW50ZXJzdMO8dHp1bmcgZsO8ciBlaW5lIE9ubGluZS1HcsO2w59lbsOkbmRlcnVuZyIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICJEaWUgR3LDtsOfZSB2b24gJXMgd2lyZCBnZXJhZGUgb25saW5lIGF1ZiAlbGx1ICglZGspIEJsw7Zja2UgZ2XDpG5kZXJ0LlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiYmVpbSBWZXJzdWNoLCBkaWUgbGV0enRlIEdydXBwZSB6dSBlcndlaXRlcm4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgImJlaW0gVmVyc3VjaCwgZGllIEdydXBwZSAjJWQgaGluenV6dWbDvGdlbiIKKworIzogcmVzaXplL29ubGluZS5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzLCBhbmQgb24tbGluZSByZXNpemluZyBpcyBub3Qgc3VwcG9ydGVkIG9uICIKKyJ0aGlzIHN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIkRhcyBEYXRlaXN5c3RlbSBiZWkgJXMgaXN0IGF1ZiAlcyBlaW5nZWjDpG5ndCB1bmQgZGllIMOEbmRlcnVuZyBkZXIgR3LDtsOfZSBpbVxuIgorImxhdWZlbmRlbiBTeXN0ZW0gd2lyZCBhdWYgZGllc2VtIFN5c3RlbSBuaWNodCB1bnRlcnN0w7x0enQuXG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5vZGVzICglbGx1KSBtdXN0IGJlIGxlc3MgdGhhbiAldSIKK21zZ3N0ciAiRGllIElub2RlcyAoJWxsdSkgbcO8c3NlbiB1bnRlciAldSBsaWVnZW4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJyZXNlcnZpZXJ0ZSBCbMO2Y2tlIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgIk1ldGFkYXRlbi1CbMO2Y2tlIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibmV1ZSBNZXRhZGF0ZW4tQmzDtmNrZSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIkRpZXMgc29sbHRlIG5pZSBnZXNjaGVoZW4hIEtlaW4gc2IgaW0gbGV0enRlbiBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQ1Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIFVuZXhwZWN0ZWQgb2xkX2Rlc2MgaW4gc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICJEaWVzIHNvbGx0ZSBuaWUgZ2VzY2hlaGVuISBVbmVyd2FydGV0ZSBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIkRpZXMgc29sbHRlIG5pZSBnZXNjaGVoZW46IERlciBHcsO2w59lbsOkbmRlcnVuZ3MtSW5vZGUgaXN0IGRlZmVrdCFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCisjLCBmdXp6eQorbXNnaWQgIkVYVDJGUyBMaWJyYXJ5IHZlcnNpb24gMS40My4yIgorbXNnc3RyICJFWFQyRlMtQmlibGlvdGhlaywgVmVyc2lvbiAxLjQyLjEyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBleHQyX2ZpbGVzeXMtU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgZsO8ciBlaW5lIGJhZGJsb2Nrc19saXN0LVN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBiYWRibG9ja3NfaXRlcmF0ZS1TdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBpbm9kZV9zY2FuLVN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgZsO8ciBlaW5lIGlvX2NoYW5uZWwtU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBVbml4IGlvX2NoYW5uZWwtU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgaW9fbWFuYWdlci1TdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgZsO8ciBlaW5lIGJsb2NrX2JpdG1hcC1TdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgZsO8ciBlaW5lIGlub2RlX2JpdG1hcC1TdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgZ2VuZXJpY19iaXRtYXAtU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSB0ZXN0LWlvX2NoYW5uZWwtU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICIiCisiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBTdHJ1a3R1ciBmw7xyIGRpZSBMaXN0ZSBkZXIgVmVyemVpY2huaXNibMO2Y2tlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGljb3VudCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgaWNvdW50LVN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgaW9fY2hhbm5lbC1TdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgZsO8ciBlaW5lIEV4dDItRGF0ZWktU3RydWt0dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmVuIEV4dDItQWJiaWxkLUtvcGYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgU3RydWt0dXIgZGVzIElub2RlLWlvX2NoYW5uZWxzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IGhhbmRsZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBFeHQ0LUVyd2VpdGVydW5nc2hhbmRsZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAiVW5nw7xsdGlnZSBtYWdpc2NoZSBaYWhsIGltIFN1cGVyYmxvY2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIkRpZSBEYXRlaXN5c3RlbXZlcnNpb24gaXN0IHp1IGhvY2giCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICIiCisiRGllcyBpc3QgZWluIFZlcnN1Y2gsIGF1ZiBlaW4gbnVyLWxlc2JhciBnZcO2ZmZuZXRlcyBEYXRlaXN5c3RlbSB6dSBzY2hyZWliZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIkRpZSBHcnVwcGVuZGVza3JpcHRvcmVuIGtvbm50ZW4gbmljaHQgZ2VsZXNlbiB3ZXJkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJEaWUgR3J1cHBlbmRlc2tyaXB0b3JlbiBrb25udGVuIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiRGVmZWt0ZXIgR3J1cHBlbmRlc2tyaXB0b3I6IGRlZmVrdGVyIEJsb2NrIGbDvHIgZGllIEJsb2NrLUJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRGVmZWt0ZXIgR3J1cHBlbmRlc2tyaXB0b3I6IGRlZmVrdGVyIEJsb2NrIGbDvHIgZGllIElub2RlLUJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICJEZWZla3RlciBHcnVwcGVuZGVza3JpcHRvcjogZGVmZWt0ZXIgQmxvY2sgZsO8ciBkaWUgSW5vZGUtVGFiZWxsZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJFaW5lIElub2RlLUJpdG1hcCBrb25udGUgbmljaHQgZ2VzY2hyaWViZW4gd2VyZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRWluZSBJbm9kZS1CaXRtYXAga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiRWluZSBCbG9jay1CaXRtYXAga29ubnRlIG5pY2h0IGdlc2NocmllYmVuIHdlcmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiRWluZSBCbG9jay1CaXRtYXAga29ubnRlIG5pY2h0IGdlbGVzZW4gd2VyZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRWluZSBJbm9kZS1UYWJlbGxlIGtvbm50ZSBuaWNodCBnZXNjaHJpZWJlbiB3ZXJkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIkVpbmUgSW5vZGUtVGFiZWxsZSBrb25udGUgbmljaHQgZ2VsZXNlbiB3ZXJkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiRGVyIG7DpGNoc3RlIElub2RlIGthbm4gbmljaHQgZ2VsZXNlbiB3ZXJkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiRGFzIERhdGVpc3lzdGVtIGhhdCBlaW5lIHVuZXJ3YXJ0ZXRlIEJsb2NrZ3LDtsOfZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJEYXMgRXh0Mi1WZXJ6ZWljaG5pcyBpc3QgZGVmZWt0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIiIKKyJEZXIgVmVyc3VjaCwgZWluZW4gQmxvY2sgdm9tIERhdGVpc3lzdGVtIHp1IGxlc2VuLCBlbmRldGUgaW4ga3VyemVtIExlc2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIiIKKyJEZXIgVmVyc3VjaCwgZWluZW4gQmxvY2sgYXVmIGRhcyBEYXRlaXN5c3RlbSB6dSBzY2hyZWliZW4sIGVuZGV0ZSBpbiBrdXJ6ZW0gIgorIlNjaHJlaWJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiB0aGUgZGlyZWN0b3J5IgorbXNnc3RyICJLZWluIGZyZWllciBQbGF0eiBpbSBWZXJ6ZWljaG5pcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUwCittc2dpZCAiSW5vZGUgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgImRpZSBJbm9kZS1CaXRtYXAgd3VyZGUgbmljaHQgZ2VsYWRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgImRpZSBCbG9jay1CaXRtYXAgd3VyZGUgbmljaHQgZ2VsYWRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIlVuZ8O8bHRpZ2UgSW5vZGUtTnVtbWVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTMKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiVW5nw7xsdGlnZSBCbG9ja3phaGwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICJJbnRlcm5lciBGZWhsZXIgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTmljaHQgZ2VudWcgUGxhdHosIHVtIGRhcyB2b3JnZXNjaGxhZ2VuZSBEYXRlaXN5c3RlbSB6dSBiYXVlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiIgorIkVzIHd1cmRlIGVpbmUgdW5nw7xsdGlnZSBCbG9ja251bW1lciBhbiBleHQyZnNfbWFya19ibG9ja19iaXRtYXAgw7xiZXJnZWJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisiRXMgd3VyZGUgZWluZSB1bmfDvGx0aWdlIEJsb2NrbnVtbWVyIGFuIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIMO8YmVyZ2ViZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKyJFcyB3dXJkZSBlaW5lIHVuZ8O8bHRpZ2UgQmxvY2tudW1tZXIgYW4gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIMO8YmVyZ2ViZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKyJFcyB3dXJkZSBlaW5lIHVuZ8O8bHRpZ2UgSW5vZGUtTnVtbWVyIGFuIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCDDvGJlcmdlYmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKyJFcyB3dXJkZSBlaW5lIHVuZ8O8bHRpZ2UgSW5vZGUtTnVtbWVyIGFuIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIMO8YmVyZ2ViZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKyJFcyB3dXJkZSBlaW5lIHVuZ8O8bHRpZ2UgSW5vZGUtTnVtbWVyIGFuIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCDDvGJlcmdlYmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKyJFcyB3aXJkIHZlcnN1Y2h0LCBkYXMgRW5kZSBkZXIgQmxvY2stQml0bWFwIGplbnNlaXRzIGRlcyB3aXJrbGljaGVuIEVuZGVzXG4iCisienUgcGxhdHppZXJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisiRXMgd2lyZCB2ZXJzdWNodCwgZGFzIEVuZGUgZGVyIElub2RlLUJpdG1hcCBqZW5zZWl0cyBkZXMgd2lya2xpY2hlbiBFbmRlc1xuIgorInp1IHBsYXR6aWVyZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NAorbXNnaWQgIklsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIkVzIHd1cmRlIGVpbiB1bmfDvGx0aWdlciBpbmRpcmVrdGVyIEJsb2NrIGdlZnVuZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiRXMgd3VyZGUgZWluIHVuZ8O8bHRpZ2VyIGRvcHBlbHQgaW5kaXJla3RlciBCbG9jayBnZWZ1bmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY2Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIkVzIHd1cmRlIGVpbiB1bmfDvGx0aWdlciBkcmVpZmFjaCBpbmRpcmVrdGVyIEJsb2NrIGdlZnVuZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkRpZSBCbG9jay1CaXRtYXBzIHNpbmQgbmljaHQgaWRlbnRpc2NoIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKK21zZ2lkICJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkRpZSBJbm9kZS1CaXRtYXBzIHNpbmQgbmljaHQgaWRlbnRpc2NoIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgb2RlciBmZWhsZXJoYWZ0ZXIgR2Vyw6R0ZW5hbWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRWluZXIgQmxvY2tncnVwcGUgZmVobHQgZWluZSBJbm9kZS1UYWJlbGxlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzEKK21zZ2lkICJUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIkRlciBFeHQyLVN1cGVyYmxvY2sgaXN0IGRlZmVrdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcyCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWluZSB1bnp1bMOkc3NpZ2UgZ2VuZXJpc2NoZSBCaXRudW1tZXIgd3VyZGUgYW4gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAgIgorIsO8YmVyZ2ViZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWluZSB1bnp1bMOkc3NpZ2UgZ2VuZXJpc2NoZSBCaXRudW1tZXIgd3VyZGUgYW4gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCAiCisiw7xiZXJnZWJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWluZSB1bnp1bMOkc3NpZ2UgZ2VuZXJpc2NoZSBCaXRudW1tZXIgd3VyZGUgYW4gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAgIgorIsO8YmVyZ2ViZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiRXMgd3VyZGVuIHp1IHZpZWxlIHN5bWJvbGlzY2hlIFZlcmtuw7xwZnVuZ2VuIGdlZnVuZGVuLiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkRpZSBDYWxsYmFjay1GdW5rdGlvbiBrYW5uIGRpZXNlbiBGYWxsIG5pY2h0IGhhbmRoYWJlbi4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRGVyIElub2RlIGtvbW10IHZvbiBlaW5lbSBiZXNjaMOkZGlndGVuIEJsb2NrIGluIGRlciBJbm9kZS1UYWJlbGxlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorbXNnc3RyICJEYXMgRGF0ZWlzeXN0ZW0gYmVzaXR6dCBuaWNodCB1bnRlcnN0w7x0enRlIEVpZ2Vuc2NoYWZ0KGVuKSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIkRhcyBEYXRlaXN5c3RlbSBiZXNpdHp0IG5pY2h0IHVudGVyc3TDvHR6dGUgTnVyLUxlc2VuLUVpZ2Vuc2NoYWZ0KGVuKToiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiRGVyIEVBLUthbmFsIGhhdCBuaWNodCBwb3NpdGlvbmllcnQgYmVpbSBMZXNlbiBvZGVyIFNjaHJlaWJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICJEaWUgUmVzZXJ2aWVydW5nIHZvbiBTcGVpY2hlciBzY2hsdWcgZmVobCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICJFaW4gdW5nw7xsdGlnZXMgQXJndW1lbnQgd3VyZGUgYW4gZGllIEV4dDItQmlibGlvdGhlayDDvGJlcmdlYmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODMKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJJbSBFeHQyLURhdGVpc3lzdGVtIGtvbm50ZSBrZWluIEJsb2NrIGFuZ2Vmb3JkZXJ0IHdlcmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiSW0gRXh0Mi1EYXRlaXN5c3RlbSBrb25udGUga2VpbiBJbm9kZSBhbmdlZm9yZGVydCB3ZXJkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICJEZXIgRXh0Mi1Jbm9kZSB3ZWlzdCBuaWNodCBhdWYgZWluIFZlcnplaWNobmlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICJadSB2aWVsZSBSZWZlcmVuemVuIGluIGRlciBUYWJlbGxlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiRGllIERhdGVpIHd1cmRlIHZvbiBleHQyX2xvb2t1cCBuaWNodCBnZWZ1bmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg4Cittc2dpZCAiRmlsZSBvcGVuIHJlYWQtb25seSIKK21zZ3N0ciAiRGllIERhdGVpIHd1cmRlIG51ci1sZXNiYXIgZ2XDtmZmbmV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkRlciBWZXJ6ZWljaG5pc2Jsb2NrIGRlcyBleHQyLURhdGVpc3lzdGVtcyB3dXJkZSBuaWNodCBnZWZ1bmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkRhcyBFeHQyLVZlcnplaWNobmlzIGV4aXN0aWVydCBiZXJlaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiTmljaHQgaW1wbGVtZW50aWVydGUgRXh0Mi1CaWJsaW90aGVrc2Z1bmt0aW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIkRlciBCZW51dHplciBoYXQgYWJnZWJyb2NoZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJEaWUgRXh0Mi1EYXRlaSBpc3QgenUgZ3Jvw58iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiRGFzIGFuZ2VnZWJlbmUgSm91cm5hbGdlcsOkdCBpc3Qga2VpbiBibG9ja29yaWVudGllcnRlcyBHZXLDpHQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIkRlciBKb3VybmFsLVN1cGVyYmxvY2sgd3VyZGUgbmljaHQgZ2VmdW5kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiRGFzIEpvdXJuYWwgbXXDnyBtaW5kZXN0ZW5zIDEwMjQgQmzDtmNrZSBncm/DnyBzZWluIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTcKK21zZ2lkICJVbnN1cHBvcnRlZCBqb3VybmFsIHZlcnNpb24iCittc2dzdHIgIk5pY2h0IHVudGVyc3TDvHR6dGUgSm91cm5hbHZlcnNpb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiRmVobGVyIGJlaW0gTGFkZW4gZGVzIGV4dGVybmVuIEpvdXJuYWxzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiRGFzIEpvdXJuYWwgd3VyZGUgbmljaHQgZ2VmdW5kZW4uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIlZlcnplaWNobmlzaGFzaGVzIHdlcmRlbiBuaWNodCB1bnRlcnN0w7x0enQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIkRpZSBOdW1tZXIgZGVzIEJsb2NrcyBmw7xyIGVyd2VpdGVydGUgQXR0cmlidXRlIGlzdCB1bnp1bMOkc3NpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICIiCisiRWluIERhdGVpc3lzdGVtIG1pdCBkZXIgZ2V3w7xuc2NodGVuIEFuemFobCBJbm9kZXMga2FubiBuaWNodCBlcnpldWd0IHdlcmRlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAiRGVyIEUyaW1hZ2UtU2NobmFwcHNjaHVzcyB3aXJkIG5pY2h0IHZlcndlbmRldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICJadSB2aWVsZSByZXNlcnZpZXJ0ZSBCbMO2Y2tlIGbDvHIgR3J1cHBlbi1EZXNrcmlwdG9yZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiRGVyIEdyw7bDn2Vuw6RuZGVydW5ncy1Jbm9kZSBpc3QgZGVmZWt0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICIiCisiRXMgd3VyZGUgdmVyc3VjaHQsIGVpbmUgQmxvY2stQml0bWFwIG1pdCBmZWhsZW5kZW0gaW5kaXJla3RlbSBCbG9jayB6dSAiCisic2NocmVpYmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6IEVyZm9sZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBEYXRlbmJhbmsgaXN0IGJlc2Now6RkaWd0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA5Cittc2dpZCAiVERCOiBJTyBFcnJvciIKK21zZ3N0ciAiVERCOiBFQS1GZWhsZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIlREQjogRmVobGVyIGJlaW0gU3BlcnJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERCOiBIYXVwdHNwZWljaGVyIGVyc2Now7ZwZnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTIKK21zZ2lkICJUREI6IFJlY29yZCBleGlzdHMiCittc2dzdHIgIlREQjogRGF0ZW5zYXR6IGV4aXN0aWVydCBiZXJlaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IERpZSBTcGVycmUgZXhpc3RpZXJ0IHNjaG9uIGF1ZiBhbmRlcmVuIFNjaGzDvHNzZWxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBVbmfDvGx0aWdlciBQYXJhbWV0ZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCOiBEZXIgRGF0ZW5zYXR6IGV4aXN0aWVydCBuaWNodCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiVERCOiBTY2hyZWliZW4gaXN0IG5pY2h0IHp1bMOkc3NpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiRGllIExpc3RlIGRlciBFeHQyZnMtVmVyemVpY2huaXNibMO2Y2tlIGlzdCBsZWVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorIkVzIHdpcmQgdmVyc3VjaHQsIGVpbmUgQmxvY2t6dXdlaXN1bmcgw7xiZXIgZWluZW4gbnVyLWxlc2JhcmVuIEJsb2NraXRlcmF0b3IgIgorInp1XG4iCisiw6RuZGVybiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZW4gZ2VzcGVpY2hlcnRlbiBQZmFkIHp1IGV4dDQtRXJ3ZWl0ZXJ1bmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBnZW5lcmlzY2hlIDY0LUJpdC1CaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCBmw7xyIGVpbmUgNjQtQml0LUJsb2NrLUJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSA2NC1CaXQtSW5vZGUtQml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIC0tLSBSRVNFUlZFRF8xMyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCAtLS0gUkVTRVJWRURfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgLS0tIFJFU0VSVkVEXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIC0tLSBSRVNFUlZFRF8xNiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgIkZhbHNjaGUgbWFnaXNjaGUgWmFobCAtLS0gUkVTRVJWRURfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICJGYWxzY2hlIG1hZ2lzY2hlIFphaGwgLS0tIFJFU0VSVkVEXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIC0tLSBSRVNFUlZFRF8xOSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAiRGVmZWt0ZXIgS29wZiBlaW5lciBFcndlaXRlcnVuZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJCZXNjaMOkZGlndGVyIEVyd2VpdGVydW5nc2luZGV4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIkJlc2Now6RkaWd0ZSBFcndlaXRlcnVuZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMworbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gZXh0ZW50IG1hcCIKK21zZ3N0ciAiRXMgaXN0IGtlaW4gZnJlaWVyIFBsYXR6IGluIGRlciBLYXJ0ZSBkZXIgRXJ3ZWl0ZXJ1bmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiRGVyIElub2RlIHZlcndlbmRldCBrZWluZSBFcndlaXRlcnVuZ2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiS2VpbmUg4oCebsOkY2hzdGXigJwgRXJ3ZWl0ZXJ1bmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiS2VpbmUg4oCedm9yaGVyaWdl4oCcIEVyd2VpdGVydW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIktlaW5lIOKAnm9iZXJl4oCcIEVyd2VpdGVydW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM4Cittc2dpZCAiTm8gJ2Rvd24nIGV4dGVudCIKK21zZ3N0ciAiS2VpbmUg4oCedW50ZXJl4oCcIEVyd2VpdGVydW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM5Cittc2dpZCAiTm8gY3VycmVudCBub2RlIgorbXNnc3RyICJLZWluIGFrdHVlbGxlciBLbm90ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkRpZXNlIEV4dDJmcy1PcGVyYXRpb24gd2lyZCBuaWNodCB1bnRlcnN04bqXenQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiRXMgZ2lidCBrZWluZW4gUGxhdHosIHVtIGRpZSBFcndlaXRlcnVuZyBpbiBkZW4gS25vdGVuIGVpbnp1ZsO8Z2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICJEaWUgQXVmdGVpbHVuZyB3w7xyZGUgenUgZWluZW0gbGVlcmVuIEtub3RlbiBmw7xocmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAiRGllIEVyd2VpdGVydW5nIHd1cmRlIG5pY2h0IGdlZnVuZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIkRpZSBPcGVyYXRpb24gd2lyZCBmw7xyIElub2RlcyBtaXQgRXJ3ZWl0ZXJ1bmdlbiBuaWNodCB1bnRlcnN0w7zhupd6dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAiRGllIEzDpG5nZSBkZXIgRXJ3ZWl0ZXJ1bmcgaW4gdW5nw7xsdGlnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiRGVyIEVBLUthbmFsIHVudGVyc3TDvHR6dCBrZWluZSA2NC1CaXQtQmxvY2tudW1tZXJuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ3Cittc2dpZCAiQ2FuJ3QgY2hlY2sgaWYgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGR1ZSB0byBtaXNzaW5nIG10YWIgZmlsZSIKK21zZ3N0ciAiIgorIldlZ2VuIGRlcyBGZWhsZW5zIHZvbiAvZXRjL210YWIga2FubiBuaWNodCBnZXByw7xmdCB3ZXJkZW4sIG9iIGRhcyAiCisiRGF0ZWlzeXN0ZW1cbiIKKyJlaW5nZWjDpG5ndCBpc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIkRhcyBEYXRlaXN5c3RlbSBpc3QgenUgZ3Jvw58sIHVtIGRpZSB2ZXJhbHRldGVuIEJpdG1hcHMgenUgdmVyd2VuZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBmZWhsZW5kZSBtYWdpc2NoZSBaYWhsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUwCittc2dpZCAiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKK21zZ3N0ciAiTU1QOiBkYXMgR2Vyw6R0IGlzdCBkZXJ6ZWl0IGFrdGl2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBmc2NrIGzDpHVmdCBkZXJ6ZWl0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUyCittc2dpZCAiTU1QOiBibG9jayBudW1iZXIgYmV5b25kIGZpbGVzeXN0ZW0gcmFuZ2UiCittc2dzdHIgIk1NUDogZGllIEJsb2NrbnVtbWVyIGlzdCBqZW5zZWl0cyBkZXIgRGF0ZWlzeXN0ZW1ncmVuemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVA6IGVpbmUgdW5iZWthbm50ZSBPcGVyYXRpb24gd2lyZCBkdXJjaGdlZsO8aHJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU0Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAiTU1QOiBkYXMgRGF0ZWlzeXN0ZW0gd2lyZCBpbW1lciBub2NoIHZlcndlbmRldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiTU1QOiDDtmZmbmVuIG1pdCBPX0RJUkVDVCBpc3QgZ2VzY2hlaXRlcnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJEaWUgR3LDtsOfZSBkZXMg4oCeQmxvY2tncnVwcGVuLURlc2tyaXB0b3Jz4oCcIGlzdCB1bnp1bMOkc3NpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgSW5vZGVzIHBhc3N0IG5pY2h0IGRhenUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXIgSW5vZGUtQml0bWFwIHBhc3N0IG5pY2h0IHp1ciBCaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTkKK21zZ2lkICJFeHRlbnQgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50IGJsb2NrIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgRXJ3ZWl0ZXJ1bmdzYmxvY2tzIHBhc3N0IG5pY2h0IGRhenUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkRlciBWZXJ6ZWljaG5pc2Jsb2NrIGhhdCBrZWluZW4gUGxhdHogZsO8ciBlaW5lIFByw7xmc3VtbWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgVmVyemVpY2huaXNibG9ja3MgcGFzc3QgbmljaHQgZGF6dSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKK21zZ3N0ciAiRGllIFByw7xmc3VtbWUgZGVzIEJsb2NrcyBmw7xyIGVyd2VpdGVydGUgQXR0cmlidXRlIHBhc3N0IG5pY2h0IGRhenUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIkRpZSBQcsO8ZnN1bW1lIGRlcyBTdXBlcmJsb2NrcyBwYXNzdCBuaWNodCBkYXp1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIlVuYmVrYW5udGVyIFByw7xmc3VtbWVuYWxnb3JpdGhtdXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgTU1QLUJsb2NrcyBwYXNzdCBuaWNodCBkYXp1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJEaWUgRXh0Mi1EYXRlaSBleGlzdGllcnQgYmVyZWl0cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXIgSW5vZGUtQml0bWFwIHBhc3N0IG5pY2h0IHp1ciBCaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgbmFtZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MQorIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICJEaWUgUHLDvGZzdW1tZSBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgcGFzc3QgbmljaHQgZGF6dSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MgorIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaGFzIGEgYmFkIGhlYWRlciIKK21zZ3N0ciAiRGllIE51bW1lciBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgaXN0IHVuenVsw6Rzc2lnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTczCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIgorbXNnc3RyICJhZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJEZXIgSW5vZGUgdmVyd2VuZGV0IGtlaW5lIEVyd2VpdGVydW5nZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc4CisjLCBmdXp6eQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCittc2dzdHIgIkVzIGlzdCBrZWluIGZyZWllciBQbGF0eiBpbiBkZXIgS2FydGUgZGVyIEVyd2VpdGVydW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc5CisjLCBmdXp6eQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmFsc2NoZSBtYWdpc2NoZSBaYWhsIGbDvHIgZWluZSBFeHQyLURhdGVpLVN0cnVrdHVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCisjLCBmdXp6eQorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0IgorbXNnc3RyICJEZXIgR3LDtsOfZW7DpG5kZXJ1bmdzLUlub2RlIGlzdCBkZWZla3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIkRpZSBFcmxhdWJuaXMgenVtIMOEbmRlcm4gZGVyIERhdGVpc3lzdGVtZ3LDtsOfZSB3dXJkZSB2ZXJ3ZWlnZXJ0LiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorIywgZnV6enkKK21zZ2lkICJGaWxlIHN5c3RlbSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIkRlciBHcsO2w59lbsOkbmRlcnVuZ3MtSW5vZGUgaXN0IGRlZmVrdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NgorbXNnaWQgIkJhZCBDUkMgZGV0ZWN0ZWQgaW4gZmlsZSBzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworIywgZnV6enkKK21zZ2lkICJUaGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIkRlciBFeHQyLVN1cGVyYmxvY2sgaXN0IGRlZmVrdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIkRlciBHcsO2w59lbsOkbmRlcnVuZ3MtSW5vZGUgaXN0IGRlZmVrdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIlByb2ZpbHZlcnNpb24gMC4wIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEyCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfbm9kZSIKK21zZ3N0ciAiVW5nw7xsdGlnZSBtYWdpc2NoZSBaYWhsIGltIHByb2ZpbGVfbm9kZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgImRpZSBQcm9maWxzZWt0aW9uIHd1cmRlIG5pY2h0IGdlZnVuZGVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlp1c2FtbWVuaGFuZyBkZXMgUHJvZmlscyB3dXJkZSBuaWNodCBnZWZ1bmRlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICIiCisiRGllcyBpc3QgZWluIFZlcnN1Y2gsIGVpbmVuIEJlenVnIHp1IGVpbmVtIEtub3RlbiBoaW56dXp1ZsO8Z2VuLCBkZXIga2VpbmVcbiIKKyJTZWt0aW9uIGlzdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiRGVyIEhlYWRlciBkZXIgUHJvZmlsc2VrdGlvbiBoYXQgZWluZW4gdm9uIE51bGwgdmVyc2NoaWVkZW5lbiBXZXJ0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiVW5nw7xsdGlnZSB2ZXJrZXR0ZXRlIExpc3RlIGluIGRlbiBQcm9maWxzdHJ1a3R1cmVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiVW5nw7xsdGlnZSBHcnVwcGVuZWJlbmUgaW4gZGVuIFByb2ZpbHN0cnVrdHVyZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJVbmfDvGx0aWdlciBaZWlnZXIgYXVmIGRpZSBFbHRlcm4gaW4gZGVuIFByb2ZpbHN0cnVrdHVyZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAiVW5nw7xsdGlnZSBtYWdpc2NoZSBaYWhsIGltIFByb2ZpbGl0ZXJhdG9yIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAiSW4gZGVtIFNla3Rpb25za25vdGVuIGthbm4gZGVyIFdlcnQgbmljaHQgZ2VzZXR6dCB3ZXJkZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIkVzIHd1cmRlIGVpbiB1bnp1bMOkc3NpZ2VzIEFyZ3VtZW50IGFuIGRpZSBQcm9maWxiaWJsaW90aGVrIMO8YmVyZ2ViZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiRXMgd2lyZCB2ZXJzdWNodCwgZWluIG51ciBsZXNiYXJlcyBQcm9maWwgenUgw6RuZGVybiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiRGVyIEhlYWRlciBkZXIgUHJvZmlsc2VrdGlvbiBpc3QgbmljaHQgYXVmIGRlciBvYmVyc3RlbiBFYmVuZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICJTeW50YXhmZWhsZXIgaW0gSGVhZGVyIGRlciBQcm9maWxzZWt0aW9uIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI2Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCittc2dzdHIgIlN5bnRheGZlaGxlciBpbiBkZW4gUHJvZmlsYmV6aWVodW5nZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjcKK21zZ2lkICJFeHRyYSBjbG9zaW5nIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIsOcYmVyesOkaGxpZ2Ugc2NobGllw59lbmRlIEtsYW1tZXIgaW0gUHJvZmlsIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI4Cittc2dpZCAiTWlzc2luZyBvcGVuIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIkZlaGxlbmRlIMO2ZmZuZW5kZSBLbGFtbWVyIGltIFByb2ZpbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3QiCittc2dzdHIgIlVuZ8O8bHRpZ2UgbWFnaXNjaGUgWmFobCBpbSBwcm9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCittc2dzdHIgIlVuYmVrYW5udGUgbWFnaXNjaGUgWmFobCBpbSBzZWN0aW9uX3QgZGVzIFByb2ZpbHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiSXRlcmF0aW9uIGR1cmNoIGFsbGUgVG9wbGV2ZWwtU2VrdGlvbmVuIHdpcmQgbmljaHQgdW50ZXJzdMO8dHp0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJVbmfDvGx0aWdlcyBwcm9maWxlX3NlY3Rpb24tT2JqZWt0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiS2VpbmUgd2VpdGVyZW4gU2VrdGlvbmVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIlVuZ8O8bHRpZ2UgTmFtZW4gYW4gZGllIEFiZnJhZ2Vyb3V0aW5lIMO8YmVyZ2ViZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAiRXMgaXN0IGtlaW5lIFByb2ZpbGRhdGVpIG9mZmVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICJVbmfDvGx0aWdlIG1hZ2lzY2hlIFphaGwgaW0gcHJvZmlsZV9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiRGllIFByb2ZpbGRhdGVpIGtvbm50ZSBuaWNodCBnZcO2ZmZuZXQgd2VyZGVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM4Cittc2dpZCAiU2VjdGlvbiBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiRGllIFNla3Rpb24gZXhpc3RpZXJ0IGJlcmVpdHMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIlVuZ8O8bHRpZ2VyIGJvb2xlc2NoZXIgV2VydCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MAorbXNnaWQgIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKK21zZ3N0ciAiVW5nw7xsdGlnZXIgZ2FuenphaGxpZ2VyIFdlcnQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiVW5nw7xsdGlnZSBtYWdpc2NoZSBaYWhsIGltIHByb2ZpbGVfZmlsZV9kYXRhX3QiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHR6dWxldHp0IGF1ZiAlcyBhdWYgJXMgZWluZ2Vow6RuZ3QiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHR6dWxldHp0IGF1ZiAlcyBlaW5nZWjDpG5ndCIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0Y3JlYXRlZCBvbiAlcyIKK21zZ3N0ciAiXHRhdWYgJXMgZXJ6ZXVndCIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiXHR6dWxldHp0IGdlw6RuZGVydCAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIkluICUyJHMgd3VyZGUgZWluZSAlMSRzLVBhcnRpdGlvbnN0YWJlbGxlIGdlZnVuZGVuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4MAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZSAlcyBkb2VzIG5vdCBleGlzdCBhbmQgbm8gc2l6ZSB3YXMgc3BlY2lmaWVkLlxuIgorbXNnc3RyICJEaWUgRGF0ZWkgJXMgZXhpc3RpZXJ0IG5pY2h0IHVuZCBlcyB3dXJkZSBrZWluZSBHcsO2w59lIGFuZ2VnZWJlbi5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICJEaWUgcmVndWzDpHJlIERhdGVpICVzIHdpcmQgYW5nZWxlZ3RcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICIlcyBrYW5uIG5pY2h0IGdlw7ZmZm5ldCB3ZXJkZW46ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyJEYXMgR2Vyw6R0IGV4aXN0aWVydCBvZmZlbnNpY2h0bGljaCBuaWNodDsgaGFiZW4gU2llIGVzIGtvcnJla3QgYW5nZWdlYmVuP1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIGlzdCBrZWluIHNwZXppZWxsZXMgQmxvY2tnZXLDpHQuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgaGF0IGVpbiAlcy1EYXRlaXN5c3RlbSBtaXQgTmFtZW4g4oCeJXPigJxcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAiJXMgaGF0IGVpbiAlcy1EYXRlaXN5c3RlbVxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGAlcycgZGF0YVxuIgorbXNnc3RyICIlcyBoYXQgZWluICVzLURhdGVpc3lzdGVtXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICIiCisjfiAiSW5vZGUgJWkgaGF0IGRlbiBLb21wcmVzc2lvbnMtQml0c2NoYWx0ZXIgYXVmIGVpbmVtIERhdGVpc3lzdGVtIGdlc2V0enQsXG4iCisjfiAid2VsY2hlcyBkaWVzIG5pY2h0IHVudGVyc3TDvHR6dC4gICIKKworI34gbXNnaWQgIkBBIEBhIEBiICViLiAgIgorI34gbXNnc3RyICJGZWhsZXIgYmVpbSBadXdlaXNlbiBkZXMgQmxvY2tzIGbDvHIgZXJ3ZWl0ZXJ0ZSBBdHRyaWJ1dGUgJWIuICAiCisKKyN+IG1zZ2lkICIlczogd2FybmluZzogY29tcHJlc3Npb24gc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG4iCisjfiBtc2dzdHIgIiVzOiBXYXJudW5nOiBEaWUgS29tcHJlc3Npb25zdW50ZXJzdMO8dHp1bmcgaXN0IGV4cGVyaW1lbnRlbGwuXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IGUyZnNjayBub3QgY29tcGlsZWQgd2l0aCBIVFJFRSBzdXBwb3J0LFxuIgorI34gIlx0YnV0IGZpbGVzeXN0ZW0gJXMgaGFzIEhUUkVFIGRpcmVjdG9yaWVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IGUyZnNjayB3dXJkZSBvaG5lIFVudGVyc3TDvHR6dW5nIGbDvHIgSFRSRUUga29tcGlsaWVydCxcbiIKKyN+ICJcdGFiZXIgZGFzIERhdGVpc3lzdGVtICVzIGJlc2l0enQgSFRSRUUtVmVyemVpY2huaXNzZS5cbiIKKworI34gbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgemVyb2l6aW5nIGJ1ZmZlciIKKyN+IG1zZ3N0ciAiYmVpbSBSZXNlcnZpZXJlbiBlaW5lcyBQdWZmZXJzIHp1bSBOdWxsZW4iCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCB1bmdlbnV0enRlIElub2RlcyAldVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIkRpZSBEYXRlaXN5c3RlbWRhdGVuIGtvbm50ZW4gbmljaHQgZ2VsZXNlbiB3ZXJkZW4gXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX2ZldGNoICVzXG4iCisjfiBtc2dzdHIgInRkYl9mZXRjaCB2b24gJXMgaXN0IGZlaGxnZXNjaGxhZ2VuXG4iCisKKyN+IG1zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gVVVJRCBkaWRuJ3QgbWF0Y2ggXG4iCisjfiBtc2dzdHIgIkRpZSBVVUlEIGRlcyBEYXRlaXN5c3RlbXMgc3RpbW10ZSBuaWNodCDDvGJlcmVpbiBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfb3BlbiAlc1xuIgorI34gbXNnc3RyICJ0ZGJfb3BlbiB2b24gJXMgaXN0IGZlaGxnZXNjaGxhZ2VuXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gb3BlbiAlc1xuIgorI34gbXNnc3RyICIlcyBrb25udGUgbmljaHQgZ2XDtmZmbmV0IHdlcmRlblxuIgorCisjfiBtc2dpZCAiUmVwbGF5ZWQgdHJhbnNhY3Rpb24gb2Ygc2l6ZSAlemQgYXQgbG9jYXRpb24gJWxsdVxuIgorI34gbXNnc3RyICJadXLDvGNrZ2VzcGllbHRlIFRyYW5zYWt0aW9uIGRlciBHcsO2w59lICV6ZCBhbiBQb3NpdGlvbiAlbGx1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgd3JpdGUgJXNcbiIKKyN+IG1zZ3N0ciAiU2NocmVpYmVuIHZvbiAlcyBpc3QgZmVobGdlc2NobGFnZW5cbiIKKworI34gbXNnaWQgIkludmFsaWQgcXVvdGF0eXBlIHBhcmFtZXRlcjogJXNcbiIKKyN+IG1zZ3N0ciAiVW5nw7xsdGlnZXIgUXVvdGF0eXAtUGFyYW1ldGVyOiAlc1xuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIHF1b3RhIG9wdGlvbnMhXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTcGVpY2hlciB6dW0gRWlubGVzZW4gZGVyIFF1b3RhLU9wdGlvbmVuIGtvbm50ZSBuaWNodCByZXNlcnZpZXJ0IHdlcmRlbiFcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGRiIGZpbGVuYW1lXG4iCisjfiBtc2dzdHIgIkVzIGthbm4ga2VpbiBTcGVpY2hlciBmw7xyIGRlbiBUZGItRGF0ZWluYW1lbiByZXNlcnZpZXJ0IHdlcmRlblxuIgorCisjfiBtc2dpZCAiIgorI34gIlRvIHVuZG8gdGhlIHR1bmUyZnMgb3BlcmF0aW9uIHBsZWFzZSBydW4gdGhlIGNvbW1hbmRcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJVbSBkaWUgZHVyY2ggVHVuZTJmcyBnZW1hY2h0ZW4gw4RuZGVydW5nZW4gcsO8Y2tnw6RuZ2lnIHp1IG1hY2hlbiwgc3RhcnRlbiAiCisjfiAiU2llXG4iCisjfiAiYml0dGVcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICIlcyBpcyBlbnRpcmUgZGV2aWNlLCBub3QganVzdCBvbmUgcGFydGl0aW9uIVxuIgorI34gbXNnc3RyICIlcyBpc3QgZGFzIGdhbnplIEdlcsOkdCB1bmQgbmljaHQgbnVyIGVpbmUgZWluemVsbmUgUGFydGl0aW9uIVxuIgorCisjfiBtc2dpZCAiQ2xlYXJpbmcgZXh0ZW50IGZsYWcgbm90IHN1cHBvcnRlZCBvbiAlcyIKKyN+IG1zZ3N0ciAiIgorI34gIkRhcyBadXLDvGNrc2V0emVuIGRlcyBLZW5uemVpY2hlbnMgZsO8ciDigJ5FcndlaXRlcnVuZ+KAnCB3aXJkIGF1ZiAlc1xuIgorI34gIlx0bmljaHQgdW50ZXJzdMO8dHp0IgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBUaGUgY29tYmluYXRpb24gb2YgZmxleF9iZyBhbmRcbiIKKyN+ICJcdCFyZXNpemVfaW5vZGUgZmVhdHVyZXMgaXMgbm90IHN1cHBvcnRlZCBieSByZXNpemUyZnMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogRGllIEtvbWJpbmF0aW9uIGRlciBFaWdlbnNjaGFmdGVuIGZsZXhfYmcgdW5kXG4iCisjfiAidCFyZXNpemVfaW5vZGUgd2lyZCB2b24gcmVzaXplMmZzIG5pY2h0IHVudGVyZXN0w7x0enQuXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBzaG91bGQgbm90IGhhdmUgRU9GQkxPQ0tTX0ZMIHNldCAoc2l6ZSAlSXMsIGxibGsgJXIpXG4iCisjfiBtc2dzdHIgIiIKKyN+ICLCoGluIEBpICVpIHNvbGx0ZSBFT0ZCTE9DS1NfRkwgbmljaHQgZ2VzZXR6dCBzZWluIChHcsO2w59lICVJcywgbGJsayAlcilcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGRldGVybWluZSBqb3VybmFsIHNpemUiCisjfiBtc2dzdHIgIktvbm50ZSBkaWUgR3LDtsOfZSBkZXMgRGF0ZWlzeXN0ZW1zIG5pY2h0IGVybWl0dGVsbiIKKworI34gbXNnaWQgIiNcdFx0ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIKKyN+IG1zZ3N0ciAiI1x0XHQgJWxsdSAtPiAlbGx1ICglbGx1KVxuIgorCisjfiBtc2dpZCAic2hvcnQgd3JpdGUgKG9ubHkgJWQgYnl0ZXMpIGZvciB3cml0aW5nIGltYWdlIGhlYWRlciIKKyN+IG1zZ3N0ciAic2hvcnQgd3JpdGUgKG9ubHkgJWQgYnl0ZXMpIGZvciB3cml0aW5nIGltYWdlIGhlYWRlciIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIldhcm51bmc6IEZyYWdtZW50ZSB3ZXJkZW4gbmljaHQgdW50ZXJzdMO8dHp0LiBJZ25vcmllcmUgLWYgT3B0aW9uXG4iCisKKyN+IG1zZ2lkICJDYWxsaW5nIEJMS0RJU0NBUkQgZnJvbSAlbGx1IHRvICVsbHUgIgorI34gbXNnc3RyICJEZXIgQXVmcnVmIHZvbiBCTEtESVNDQVJEIGbDvHIgZGVuIEJlcmVpY2ggdm9uICVsbHUgYmlzICVsbHUgd2FyICIKKworI34gbXNnaWQgInN1Y2NlZWRlZC5cbiIKKyN+IG1zZ3N0ciAiZXJmb2xncmVpY2guXG4iCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vZTJmc3Byb2dzLnBvdCBiL2UyZnNwcm9ncy9wby9lMmZzcHJvZ3MucG90Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MTIzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZTJmc3Byb2dzLnBvdApAQCAtMCwwICsxLDc3NjggQEAKKyMgRTJmc3Byb2dzIHRyYW5zbGF0aW9uIHRlbXBsYXRlIGZpbGUKKyMgQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAorIyAgICAgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwKKyMgICAgICAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2IGJ5IFRoZW9kb3JlIFRzJ28KKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIworIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4JJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyMuCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLgklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuCSVEaQk8ZGlyZW50PiAtPiBpbm8JCWlub2RlIG51bWJlcgorIy4JJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLgklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4JJURsCTxkaXJlbnQ+IC0+IG5hbWVfbGVuCisjLgklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4JJWcJPGdyb3VwPgkJCWludGVnZXIKKyMuCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLgklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuCSVJUwk8aW5vZGU+IC0+IGlfZXh0cmFfaXNpemUKKyMuCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLgklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLgklSW0JPGlub2RlPiAtPiBpX21vZGUKKyMuCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuCSVJZgk8aW5vZGU+IC0+IGlfZmlsZV9hY2wKKyMuCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4JJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuCSVJZwk8aW5vZGU+IC0+IGlfZ2lkCisjLgklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4JJW0JPGNvbV9lcnIgZXJyb3IgbWVzc2FnZT4KKyMuCSVOCTxudW0+CisjLgklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuCSVQCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIDxkaXJlbnQ+LT5pbm8gd2l0aCA8aW5vMj4gYXMKKyMuCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4JCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLgklcQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGRpcj4KKyMuCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLgkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLgklcwk8c3RyPgkJCW1pc2NlbGxhbmVvdXMgc3RyaW5nCisjLgklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KKyMsIGZ1enp5Cittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40My4zXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgorIkxhbmd1YWdlOiBcbiIKKyJNSU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1DSEFSU0VUXG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9SU5URUdFUjsgcGx1cmFsPUVYUFJFU1NJT047XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo0NgorbXNnaWQgIndoaWxlIHNhbml0eSBjaGVja2luZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NTgKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgQ2xlYXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjYgZTJmc2NrL2VoYW5kbGVyLmM6MTE1Cittc2dpZCAiSWdub3JlIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo2MgorbXNnaWQgImVtcHR5IGRpciBtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciAoc2l6ZT0lZClcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svZXh0ZW50cy5jOjQyCittc2dpZCAiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9mbHVzaGIuYzozNQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgZGlza1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd29uJ3QgZG8gam91cm5hbCByZWNvdmVyeSB3aGlsZSByZWFkLW9ubHlcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk5NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmUtb3BlbiAlcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjAKK21zZ2lkICJEZGVsZXRlZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMgorbXNnaWQgIkVAZSAnJURuJyBpbiAlcCAoJWkpIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIzCittc2dpZCAiZmZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjQKK21zZ2lkICJGZm9yIEBpICVpICglUSkgaXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjUKK21zZ2lkICJnZ3JvdXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjYKK21zZ2lkICJoSFRSRUUgQGQgQGkiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjcKK21zZ2lkICJpaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOQorbXNnaWQgImpqb3VybmFsIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCittc2dpZCAibW11bHRpcGx5LWNsYWltZWQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNAorbXNnaWQgIm9vcnBoYW5lZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDIKK21zZ2lkICJ4ZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU0Cittc2dpZCAiPFRoZSBOVUxMIGlub2RlPiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NQorbXNnaWQgIjxUaGUgYmFkIGJsb2NrcyBpbm9kZT4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU4Cittc2dpZCAiPFRoZSBncm91cCBxdW90YSBpbm9kZT4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYzCittc2dpZCAiPFJlc2VydmVkIGlub2RlIDk+IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNworbXNnaWQgImNoYXJhY3RlciBkZXZpY2UiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzkKK21zZ2lkICJibG9jayBkZXZpY2UiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NSBtaXNjL3V1aWRkLmM6MTYyCittc2dpZCAic29ja2V0IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjIKK21zZ2lkICJpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNgorbXNnaWQgInRyaXBsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyOAorbXNnaWQgInRyYW5zbGF0b3IgYmxvY2siCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTI0NworbXNnaWQgImdldHRpbmcgbmV4dCBpbm9kZSBmcm9tIHNjYW4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTkzMworbXNnaWQgIlBhc3MgMSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlYWRpbmcgaW5kaXJlY3QgYmxvY2tzIG9mIGlub2RlICV1IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM0MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTZsdSglYyk6IGV4cGVjdGluZyAlNmx1IGdvdCBwaHlzICU2bHUgKGJsa2NudCAlbGxkKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MjcKK21zZ2lkICJibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzozODM5Cittc2dpZCAiaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MyLmM6Mjg3Cittc2dpZCAiUGFzcyAyIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MworbXNnaWQgIkNsZWFyIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQKK21zZ2lkICJSZWxvY2F0ZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3Cittc2dpZCAiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkKK21zZ2lkICJTYWx2YWdlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MAorbXNnaWQgIlJlY3JlYXRlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzkKK21zZ2lkICIoTk9ORSkiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MAorbXNnaWQgIkZJWEVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIKK21zZ2lkICJSRUxPQ0FURUQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0Cittc2dpZCAiRVhQQU5ERUQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NQorbXNnaWQgIlJFQ09OTkVDVEVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkKK21zZ2lkICJJTk9ERSBDTEVBUkVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAKK21zZ2lkICJBQk9SVEVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorbXNnaWQgIkBiIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCittc2dpZCAiQGkgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorIy4gQC1leHBhbmRlZDogaW5vZGUgdGFibGUgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIy4gQC1leHBhbmRlZDogV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbgorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2CisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBmaXJzdF9kYXRhX2Jsb2NrID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0CisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODgKK21zZ2lkICJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OAorIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbSB1c2VycyAodW5zdXBwb3J0ZWQpLlxuCittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKKyMuIEAtZXhwYW5kZWQ6IENhbid0IGZpbmQgZXh0ZXJuYWwgam91cm5hbFxuCittc2dpZCAiQ2FuJ3QgZmluZCBleHRlcm5hbCBAalxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4CisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2CisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorbXNnaWQgIkBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCittc2dpZCAiQFMgaGFzX0BqIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBqb3VybmFsIGlzIHByZXNlbnQuXG4KK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyNDYKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKK21zZ2lkICJDbGVhciBAaiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1MSBlMmZzY2svcHJvYmxlbS5jOjc0NAorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBmaWxlc3lzdGVtLiAgCittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKKyMuIEAtZXhwYW5kZWQ6ICVzIG9ycGhhbmVkIGlub2RlICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4KK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2CisjLiBALWV4cGFuZGVkOiBBbHJlYWR5IGNsZWFyZWQgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KK21zZ2lkICIiCisiRm91bmQgQG4gVjIgQGogQFMgZmllbGRzIChmcm9tIFYxIEBqKS5cbiIKKyJDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBAaiBAUy4uLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzEyCisjLiBALWV4cGFuZGVkOiBSdW4gam91cm5hbCBhbnl3YXkKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3CisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3CisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzMworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorbXNnaWQgIlJlc2l6ZV9AaSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgQGkgaXMgbm9uLXplcm8uICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozMzgKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICAKK21zZ2lkICJSZXNpemUgQGkgbm90IHZhbGlkLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KK21zZ2lkICIiCisiQFMgbGFzdCBtb3VudCB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQ4CisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIHNob3VsZCBiZSAlWC4gIAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3NworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorbXNnaWQgIkxhc3QgQGcgQGIgQEIgdW5pbml0aWFsaXplZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzk3CisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MDgKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBpbm9kZXMgY291bnQgdG8gJWogKHdhcyAlaSlcbgorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxMworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGJsb2NrcyBjb3VudCB0byAlYyAod2FzICViKVxuCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4CisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDI4CisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorbXNnaWQgIiIKKyJAUyBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0ICIKKyJzaW11bHRhbmVvdXNseS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKK21zZ2lkICJFeHRlcm5hbCBAaiBAUyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAUy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCittc2dpZCAiQFMgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3NworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCBpbiBzdXBwb3J0IGxpYnJhcnk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0ODIKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKK21zZ2lkICJCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCittc2dpZCAiQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5OAorIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorbXNnaWQgIlJlc2VydmVkIEBpICVpICglUSkgaGFzIEBuIG1vZGUuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4CisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NDgKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCittc2dpZCAiQGkgJWksIGlfQGJzIGlzICVJYiwgQHMgJU4uICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorbXNnaWQgIkBJICVCICglYikgaW4gQGkgJWkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KK21zZ2lkICJUb28gbWFueSBpbGxlZ2FsIEBicyBpbiBAaSAlaS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4CisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCittc2dpZCAiRHVwbGljYXRlIG9yIGJhZCBAYiBpbiB1c2UhXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorbXNnaWQgIiIKKyJcbiIKKyJJZiB0aGUgQGIgaXMgcmVhbGx5IGJhZCwgdGhlIEBmIGNhbiBub3QgYmUgZml4ZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgQFMgKCViKSBpcyBiYWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MzcKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIEBnIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBAYiAoJWIpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQzCisjLiBALWV4cGFuZGVkOiBQcm9ncmFtbWluZyBlcnJvcj8gIGJsb2NrICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfYmxvY2suXG4KK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbgorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5CisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIEBiICViIG9mICVzOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0CisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgYmxvY2sgJWIgZm9yICVzOiAlbVxuCittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3OSBlMmZzY2svcHJvYmxlbS5jOjE3NDAKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KK21zZ2lkICJAQSBAaSBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0CisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4OQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KK21zZ2lkICJAQSBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCittc2dpZCAiQEEgQGQgQGIgYXJyYXk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OTkKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbgorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5CisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcxNAorIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGQgQGIgaW5mb3JtYXRpb24gKEBpPSVpLCBAYj0lYiwgbnVtPSVOKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoaW5vZGUgJWkpIGhhcyBpbW11dGFibGVcbgorIy4gQC1leHBhbmRlZDogb3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKK21zZ2lkICJAaiBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3NzUKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGZvciBpbm9kZSAlaS4gIAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzgwCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCittc2dpZCAiQGkgJWkgaGFzIGEgYmFkIEBhIEBiICViLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1CisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzkwCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgc2hvdWxkIGJlICVOLiAgCittc2dpZCAiQGEgQGIgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgQHMgJU4uICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCittc2dpZCAiQEEgQGEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1CisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCBuYW1lKS4gIAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIwCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCB2YWx1ZSkuICAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuCittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0OQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgZGlyZWN0b3J5LlxuCittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KK21zZ2lkICJAaCAlaSBoYXMgYW4gQG4gcm9vdCBub2RlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5CisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorbXNnaWQgIkBoICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5CisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorbXNnaWQgIkBoICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIGludmFsaWRcbgorbXNnaWQgIkBpICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5MAorIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIGV4dGVudCB0cmVlIGluIGlub2RlICVpOiAlbVxuCittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTM2CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgQG4gbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQ2CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorbXNnaWQgIkBpICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBAUyBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1CisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgCittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCittc2dpZCAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxMAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0CisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDAKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1MAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbgorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGJsb2NrICViIHNob3VsZCBiZSBhdCBibG9jayAlYy4gIAorbXNnaWQgIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGxvZ2ljYWwgYmxvY2sgJWIgKHBoeXNpY2FsIGJsb2NrICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFdpbGwgZml4IGluIHBhc3MgMUIuXG4KK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGZpbGUgKGlub2RlICVpKSBoYXMgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDg5CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk5CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwOQorIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgaW5vZGUgaXMgYmFkLiAgCittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExNAorIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYSBkdXBsaWNhdGUgQHggbWFwcGluZ1xuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0CisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgJWk6Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KK21zZ2lkICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODcgZTJmc2NrL3Byb2JsZW0uYzoxNTQ5CisjLiBALWV4cGFuZGVkOiBFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCittc2dpZCAiRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBAYSBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KK21zZ2lkICJQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgQGlzIHdpdGggQG0gQGJzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjA4CisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KK21zZ2lkICJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyIoVGhlcmUgYXJlICVOIEBpcyBjb250YWluaW5nIEBtIEBicy4pXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5CisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJAbSBAYnMgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzXG4KK21zZ2lkICJQYXNzIDFFOiBPcHRpbWl6aW5nIEB4IHRyZWVzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIy4gQC1leHBhbmRlZDogT3B0aW1pemluZyBleHRlbnQgdHJlZXM6IAorbXNnaWQgIk9wdGltaXppbmcgQHggdHJlZXM6ICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gIAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gIAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTAKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZVxuCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIGlub2RlIG51bWJlciBmb3IgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorbXNnaWQgIkBuIEBpIG51bWJlciBmb3IgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KK21zZ2lkICJARSBoYXMgQG4gQGkgIzogJURpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgJURpLiAgCittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1CisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzM1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorbXNnaWQgIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKKyMuIEAtZXhwYW5kZWQ6IEZpcnN0IGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApIHNob3VsZCBiZSAnLidcbgorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorIy4gQC1leHBhbmRlZDogaV9mYWRkciBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSUYsIHNob3VsZCBiZSB6ZXJvLlxuCittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYwCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KK21zZ2lkICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1CisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorbXNnaWQgImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4KK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxNQorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGJsb2NrIGRldmljZS5cbgorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgQGIgQHYuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzMCBlMmZzY2svcHJvYmxlbS5jOjE3NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGZpbmQgZGlyX2luZm8gZm9yICVpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgc3RydWN0dXJlOiAlbVxuCittc2dpZCAiQEEgaWNvdW50IHN0cnVjdHVyZTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1MAorIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgRklGTy5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODAKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBzb2NrZXQuXG4KK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIHNvY2tldC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTUKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAwCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorIy4gQC1leHBhbmRlZDogU3ltbGluayAlUSAoaW5vZGUgIyVpKSBpcyBpbnZhbGlkLlxuCittc2dpZCAiU3ltbGluayAlUSAoQGkgIyVpKSBpcyBAbi5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1CisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1CisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzNQorIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQwCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gY291bnQgKCVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2OQorIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGRlcHRoICglTilcbgorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5CisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCittc2dpZCAiIgorIkR1cGxpY2F0ZSBAZSAnJURuJyBmb3VuZC5cbiIKKyJcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorIy4gQC1leHBhbmRlZDogaV9ibG9ja3NfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk5CisjLiBALWV4cGFuZGVkOiBVbmV4cGVjdGVkIGJsb2NrIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLlxuCittc2dpZCAiVW5leHBlY3RlZCBAYiBpbiBAaCAlZCAoJXEpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBpbiBncm91cCAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbgorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCittc2dpZCAiQHAgQGggJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgaGFzIG5vIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQjogZGlyZWN0b3J5IHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzgKKyMuIEAtZXhwYW5kZWQ6IElubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgc2l6ZSAoJU4pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LlxuCittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDMKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQ4CisjLiBALWV4cGFuZGVkOiBFbmNyeXB0ZWQgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyB0b28gc2hvcnQuXG4KK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2MAorIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjUKKyMuIEAtZXhwYW5kZWQ6IE5vIHJvb20gaW4gbG9zdCtmb3VuZCBkaXJlY3RvcnkuICAKK21zZ2lkICJObyByb29tIGluIEBsIEBkLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1CisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKK21zZ2lkICIvQGwgbm90IGZvdW5kLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4MAorIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1CisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL2xvc3QrZm91bmQ6ICVtXG4KK21zZ2lkICJFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvQGw6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBkaXJlY3RvcnkgYmxvY2sgZm9yIC9sb3N0K2ZvdW5kXG4KK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzI1CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IGRpcmVjdG9yeSBlbnRyeVxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBAZCBAZVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorbXNnaWQgIkByIGlzIG5vdCBhIEBkOyBhYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3MAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1CisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODAKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1CisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzk3Cittc2dpZCAiUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3Rvcmllc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcmVmIGNvdW50IGlzICVJbCwgc2hvdWxkIGJlICVOLiAgCittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4CisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuCisjLiBALWV4cGFuZGVkOiBcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuCisjLiBALWV4cGFuZGVkOiBpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lIVxuCittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODU4CisjLiBALWV4cGFuZGVkOiBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb25cbgorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODczCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IAorbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorbXNnaWQgIkBpIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4CisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTIzCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0CisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4NAorIywgYy1mb3JtYXQKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKK21zZ2lkICJFcnJvciB3cml0aW5nIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU46ICVtXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTMwCittc2dpZCAid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjg4Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxODIKK21zZ2lkICIgICAgICAgICAgICAgRXh0ZW50IGRlcHRoIGhpc3RvZ3JhbTogIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsYXJnZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGFyZ2UgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjIxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjM1IG1pc2MvYmFkYmxvY2tzLmM6OTkzIG1pc2MvdHVuZTJmcy5jOjI4NzggbWlzYy91dGlsLmM6MTI2CisjOiByZXNpemUvbWFpbi5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjI2NworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjI3MQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjI3NgorbXNnaWQgIkRvIHlvdSByZWFsbHkgd2FudCB0byBjb250aW51ZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6NDAxCittc2dpZCAiLCBjaGVjayBmb3JjZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NAorbXNnaWQgIiAoY2hlY2sgZGVmZXJyZWQ7IG9uIGJhdHRlcnkpIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjQ1OQorIywgYy1mb3JtYXQKK21zZ2lkICIgKGNoZWNrIGluICVsZCBtb3VudHMpIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo2NzkKK21zZ2lkICJJbnZhbGlkIEVBIHZlcnNpb24uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjc1MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIGUyZnNjayBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKK21zZ2lkICJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIC10IG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo5NTcKK21zZ2lkICJUaGUgLW4gYW5kIC1jIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTE5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGludGVydmFsIGlzICV1IHNlY29uZHMgYW5kIHRvdGFsIHdhaXQgdGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2UgIgorIndhaXQuLi5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTAgZTJmc2NrL3VuaXguYzoxMjE1Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgTU1QIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTQwNQorbXNnaWQgIm5lZWQgdGVybWluYWwgZm9yIGludGVyYWN0aXZlIHJlcGFpcnMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNDc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSB1c2luZyB0aGUgYmFja3VwIGJsb2NrcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjkKK21zZ2lkICJGaWxlc3lzdGVtIG1vdW50ZWQgb3Igb3BlbmVkIGV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzMKK21zZ2lkICJQb3NzaWJseSBub24tZXhpc3RlbnQgZGV2aWNlP1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjUxCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTY3NAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gc2V0IHN1cGVyYmxvY2sgZmxhZ3Mgb24gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWNvdmVyaW5nIGpvdXJuYWwgb2YgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTg2OQorbXNnaWQgIndoaWxlIHJlc2V0dGluZyBjb250ZXh0IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MzA3Cittc2dpZCAicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjMxOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXRyeWluZyB0byByZWFkIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MzMxCittc2dpZCAid3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MzQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyIlczogVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOyBSVU4gZnNjayBNQU5VQUxMWS5cbiIKKyJcdChpLmUuLCB3aXRob3V0IC1hIG9yIC1wIG9wdGlvbnMpXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHUsICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3MgorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxMSBtaXNjL2JhZGJsb2Nrcy5jOjYxMSBtaXNjL2JhZGJsb2Nrcy5jOjc2OQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVycyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxNQorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBibG9ja3MgJWx1IHRvICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MTgKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYyMCBtaXNjL2JhZGJsb2Nrcy5jOjc4MgorIywgYy1mb3JtYXQKK21zZ2lkICJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5OTggbWlzYy91dGlsLmM6MTMxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQ7ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDAKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxNQorbXNnaWQgImxhc3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjIxCittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MTczCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB2ZXJzaW9uIC0gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2MAorIywgYy1mb3JtYXQKK21zZ2lkICJWZXJzaW9uIG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzozMzcKK21zZ2lkICI9IGlzIGluY29tcGF0aWJsZSB3aXRoIC0gYW5kICtcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwIG1pc2MvY3JlYXRlX2lub2RlLmM6MjcyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzM2CisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM3NAorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjk1IG1pc2MvY3JlYXRlX2lub2RlLmM6MTIyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzA2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlzdGluZyBhdHRyaWJ1dGVzIG9mIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE3NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE5MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGF0dHJpYnV0ZSBcIiVzXCIgb2YgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGlub2RlIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgd29ya2luZyBkaXJlY3RvcnkgdG8gXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorbXNnaWQgIm1hbGxvYyBmYWlsZWQiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlYWQgbGluayBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NzUKK21zZ2lkICJzeW1saW5rIGluY3JlYXNlZCBpbiBzaXplIGJldHdlZW4gbHN0YXQoKSBhbmQgcmVhZGxpbmsoKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc4NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBtYWtpbmcgZGlyIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgyNgorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NzAKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzMworIywgYy1mb3JtYXQKK21zZ2lkICIgICVzIHN1cGVyYmxvY2sgYXQgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDIKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQ5Cittc2dpZCAiIEdyb3VwIGRlc2NyaXB0b3IgYXQgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MCBtaXNjL2R1bXBlMmZzLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiwgY3N1bSAweCUwOHgiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NQorbXNnaWQgIiIKKyJcbiIKKyIgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM4NSBtaXNjL3R1bmUyZnMuYzozNjIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5MQorbXNnaWQgIndoaWxlIG9wZW5pbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzk3Cittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzggbWlzYy9kdW1wZTJmcy5jOjQ4MAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgY3JjMzJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDQzIG1pc2MvZHVtcGUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgJXNcbiIKKyJKb3VybmFsIGNoZWNrc3VtOiAgICAgICAgIDB4JTA4eFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBlcnJubzogICAgICAgICAgICAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NjYgbWlzYy90dW5lMmZzLmM6MjExCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBibG9jayBzaXplOiAgICAgICAldVxuIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIGZpcnN0IGJsb2NrOiAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCisiSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAldVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgZXh0ZW5kZWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrIG51bWJlcj5cbiIKKyJcdGJsb2Nrc2l6ZT08YmxvY2tzaXplPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2NDYgbWlzYy9ta2UyZnMuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MjYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBiaXRtYXBzISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAtSSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIldyaXRpbmcgYmxvY2sgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTk2Cittc2dpZCAiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxMworbXNnaWQgIkVycm9yOiBoZWFkZXIgc2l6ZSBpcyBiaWdnZXIgdGhhbiB3cnRfc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNjMKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgbmFtZV9sZW4gKCVkKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNTUKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzg1Cittc2dpZCAiUmF3IGFuZCBxY293MiBpbWFnZXMgY2Fubm90IGJlIGluc3RhbGxlZCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MTkKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRldmljZSBmaWxlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MzAKK21zZ2lkICJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYyMAorbXNnaWQgIkNhbiBub3Qgc3RhdCBvdXRwdXRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTcKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCittc2dpZCAiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgdW5kbyBmaWxlIGAlcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBIZWFkZXIgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDE5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5jb21wbGV0ZSB1bmRvIHJlY29yZDsgcnVuIGUyZnNjay5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MzcwCittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjYyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjY2MQorIywgYy1mb3JtYXQKK21zZ2lkICJGaW5pc2hlZCB3aXRoICVzIChleGl0IHN0YXR1cyAlZClcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjc2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZmlsZXN5c3RlbSB0eXBlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzo5NjcKK21zZ2lkICJDaGVja2luZyBhbGwgZmlsZSBzeXN0ZW1zLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjEwNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzQwCittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjYKK21zZ2lkICJ3aGlsZSBwcm9jZXNzaW5nIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIHByb2dyYW0iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5OAorbXNnaWQgIkFib3J0aW5nLi4uLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDk2Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo1MDMKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIC9sb3N0K2ZvdW5kIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjA4Cittc2dpZCAiWmVyb2luZyBqb3VybmFsIGRldmljZTogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBsYWJlbD0lc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIFVVSUQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTMKK21zZ2lkICJTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHJlcXVpcmVzICctTyA2NGJpdCdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgxMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIG11c3QgYmUgYmVmb3JlICdyZXNpemU9JXUnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaWRlIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTg3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjAwCittc2dpZCAiJy1SJyBpcyBkZXByZWNhdGVkLCB1c2UgJy1FJyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYyNgorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBibG9ja3MgcGVyIGdyb3VwIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBmbGV4X2JnIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgYy1mb3JtYXQKK21zZ2lkICJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMl4zMSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSByYXRpbyAlcyAobWluICVkL21heCAlZCkiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcwMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcyNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHJldmlzaW9uICVkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc3NgorbXNnaWQgIlRoZSAtdCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBkZXYgYmxvY2tzaXplICglZCkgc21hbGxlciB0aGFuIG1pbmltdW0gYmxvY2tzaXplICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzaW5nIGpvdXJuYWwgZGV2aWNlJ3MgYmxvY2tzaXplOiAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrcyAnJXMnIG9uIGRldmljZSAnJXMnIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTUwCittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGZzIHR5cGVzIGxpc3RcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE5OTgKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAyNAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDEKK21zZ2lkICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwOAorbXNnaWQgIkZpbGVzeXN0ZW0gZmVhdHVyZXMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMTYKK21zZ2lkICJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNzYKK21zZ2lkICJUaGUgY2x1c3RlciBzaXplIG1heSBub3QgYmUgc21hbGxlciB0aGFuIHRoZSBibG9jayBzaXplLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjAyCisjLCBjLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFVuYWJsZSB0byBnZXQgZGV2aWNlIGdlb21ldHJ5IGZvciAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBvZmZzZXQgc3BlY2lmaWVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZmlsZSBzeXN0ZW0gc2l6ZS5cbiIKKyJDcmVhdGluZyBhIGZpbGUgc3lzdGVtIHdpdGggJWxsdSBibG9ja3MgYnV0IHRoaXMgbWlnaHRcbiIKKyJub3QgYmUgd2hhdCB5b3Ugd2FudC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTIKK21zZ2lkICJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBwcm9qZWN0IHF1b3RhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHNwZWNpZnkgPCAyXjMyIGlub2RlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI0NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImlub2RlX3NpemUgKCV1KSAqIGlub2Rlc19jb3VudCAoJXUpIHRvbyBiaWcgZm9yIGFcbiIKKyJcdGZpbGVzeXN0ZW0gd2l0aCAlbGx1IGJsb2Nrcywgc3BlY2lmeSBoaWdoZXIgaW5vZGVfcmF0aW8gKC1pKVxuIgorIlx0b3IgbG93ZXIgaW5vZGUgY291bnQgKC1OKS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKK21zZ2lkICJmYWlsZWQgLSAiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorbXNnaWQgIndoaWxlIHJlc2VydmluZyBibG9ja3MgZm9yIG9ubGluZSByZXNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTA3IG1pc2MvdHVuZTJmcy5jOjE0MTUKK21zZ2lkICJqb3VybmFsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGFkZCBqb3VybmFsIHRvIGRldmljZSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzEgbWlzYy9ta2UyZnMuYzozMTYwIG1pc2MvbWtlMmZzLmM6MzIwMAorIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MTAgbWlzYy90dW5lMmZzLmM6MTQ0NCBtaXNjL3R1bmUyZnMuYzoxNDYzCittc2dpZCAiZG9uZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCV1IGJsb2Nrcyk6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBpcyBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkIHNlY29uZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTcKK21zZ2lkICJ3aGlsZSBwb3B1bGF0aW5nIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIwNAorbXNnaWQgIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGh1Z2UgZmlsZSAlbHUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gJXM6ICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3NgorIywgYy1mb3JtYXQKK21zZ2lkICJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMjUKK21zZ2lkICIiCisiVGhlIGhhc19qb3VybmFsIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMzMKK21zZ2lkICIiCisiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgUGxlYXNlIHJ1biBlMmZzY2sgYmVmb3JlIGNsZWFyaW5nXG4iCisidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5OQorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgYml0bWFwc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExODIKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUnVuIHJlc2l6ZTJmcyAtYiB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQ0Cittc2dpZCAiIgorIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyBpcyBvbmx5IHN1cHBvcnRlZFxuIgorIm9uIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDYwCittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIGZpbGUiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ5OAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTU3NQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRm9sbG93aW5nIHZhbGlkIHF1b3RhIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSAocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggIgorImNvbW1hKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2NTggbWlzYy90dW5lMmZzLmM6MTY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbW91bnRzIGNvdW50IC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MDAKK21zZ2lkICItTyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODE3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9ja3MgY291bnQgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlkZTogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtIHRvICVzICglZClcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MTkKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbm9kZSBiaXRtYXBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0MSByZXNpemUvcmVzaXplMmZzLmM6MTI3NgorbXNnaWQgImJsb2NrcyB0byBiZSBtb3ZlZCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQ0Cittc2dpZCAiRmFpbGVkIHRvIGFsbG9jYXRlIGJsb2NrIGJpdG1hcCB3aGVuIGluY3JlYXNpbmcgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1NQorbXNnaWQgIkZhaWxlZCB0byByZWxvY2F0ZSBibG9ja3MgZHVyaW5nIGlub2RlIHJlc2l6ZSBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgxMQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBpbm9kZSBzaXplIGlzIGFscmVhZHkgJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzMQorbXNnaWQgIlNocmlua2luZyBpbm9kZSBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaW5vZGUgc2l6ZSAlbHUgKG1heCAlZClcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbWF4aW1hbCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgcGVyY2VudGFnZSB0byAlZyUlICglbGx1IGJsb2NrcylcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IHRvICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgdGltZSBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0byAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAyNAorbXNnaWQgIiIKKyJUaGUgcXVvdGEgZmVhdHVyZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEwMQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGlub2RlIHNpemUgJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgYy1mb3JtYXQKK21zZ2lkICJSZWNvdmVyaW5nIGpvdXJuYWwuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2NlZWQgYW55d2F5IChvciB3YWl0ICVkIHNlY29uZHMpID8gKHksbikgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyNDQKK21zZ2lkICIiCisiXG4iCisiRmlsZXN5c3RlbSB0b28gc21hbGwgZm9yIGEgam91cm5hbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIGZpbGVzeXN0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgZXZlcnkgJWQgbW91bnRzIG9yXG4iCisiJWcgZGF5cywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAta1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgInV1aWRkIGRhZW1vbiBhbHJlYWR5IHJ1bm5pbmcgYXQgcGlkICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCBzdWJzZXF1ZW50IFVVSURzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGtpbGwgdXVpZGQgcnVubmluZyBhdCBwaWQgJWQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjU5MgorIywgYy1mb3JtYXQKK21zZ2lkICJLaWxsZWQgdXVpZGQgcnVubmluZyBhdCBwaWQgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZGV2aWNlIFstYnwtc3xuZXdfc2l6ZV0gIgorIlsteiB1bmRvX2ZpbGVdXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZiAlcycgZmlyc3QuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXQgYW5kIHVuc2V0IDY0Yml0IGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgb24gYSBmaWxlc3lzdGVtIHRoYXQgaXMgbGFyZ2VyIHRoYW4gMl4zMiAiCisiYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVuYWJsZSB0aGUgZXh0ZW50cyBmZWF0dXJlIHdpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKyJmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTg3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuICBOb3RoaW5nIHRvIGRvIVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIG9uICVzIGlzIG5vdyAlbGx1ICglZGspIGJsb2NrcyBsb25nLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byB0cnVuY2F0ZSAlcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTE0Cittc2dpZCAiRmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTI5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTY0IHJlc2l6ZS9vbmxpbmUuYzoxODQKK21zZ2lkICJXaGlsZSBjaGVja2luZyBmb3Igb24tbGluZSByZXNpemluZyBzdXBwb3J0IgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxODEKK21zZ2lkICJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzLCBhbmQgb24tbGluZSByZXNpemluZyBpcyBub3Qgc3VwcG9ydGVkIG9uICIKKyJ0aGlzIHN5c3RlbS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEwMzcKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MiCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEyODEKK21zZ2lkICJtZXRhLWRhdGEgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMzg1IHJlc2l6ZS9yZXNpemUyZnMuYzoyMzE3Cittc2dpZCAibmV3IG1ldGEgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQ1Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIFVuZXhwZWN0ZWQgb2xkX2Rlc2MgaW4gc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCittc2dpZCAiRVhUMkZTIExpYnJhcnkgdmVyc2lvbiAxLjQzLjIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB0ZXN0IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZSBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IGhhbmRsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzUKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNgorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOAorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDEKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MgorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUwCittc2dpZCAiSW5vZGUgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU1Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NAorbXNnaWQgIklsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY1Cittc2dpZCAiSWxsZWdhbCBkb3VibHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY2Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY3Cittc2dpZCAiQmxvY2sgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OAorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzAKK21zZ2lkICJBIGJsb2NrIGdyb3VwIGlzIG1pc3NpbmcgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzQKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIHJlYWQtb25seSBmZWF0dXJlKHMpIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg5Cittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MgorbXNnaWQgIlVzZXIgY2FuY2VsIHJlcXVlc3RlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTMKK21zZ2lkICJFeHQyIGZpbGUgdG9vIGJpZyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAyCittc2dpZCAiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorbXNnaWQgIlREQjogSW52YWxpZCBwYXJhbWV0ZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBpbm9kZSBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMxCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaW5kZXgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMgorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQwCittc2dpZCAiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorbXNnaWQgIk1NUDogZmlsZXN5c3RlbSBzdGlsbCBpbiB1c2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NAorbXNnaWQgIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MAorbXNnaWQgIklub2RlIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIG9mZnNldCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgyCittc2dpZCAiSm91cm5hbCBmbGFncyBpbmNvbnNpc3RlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MworbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKK21zZ2lkICJXcm9uZyB1bmRvIGZpbGUgZm9yIHRoaXMgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKK21zZ2lkICJUaGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorbXNnaWQgIklub2RlIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEyCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEzCittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzQKK21zZ2lkICJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM3Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRm91bmQgYSAlcyBwYXJ0aXRpb24gdGFibGUgaW4gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgcmVndWxhciBmaWxlICVzXG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2VuQGJvbGRxdW90LmhlYWRlciBiL2UyZnNwcm9ncy9wby9lbkBib2xkcXVvdC5oZWFkZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVkYjZhMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9lbkBib2xkcXVvdC5oZWFkZXIKQEAgLTAsMCArMSwyNSBAQAorIyBBbGwgdGhpcyBjYXRhbG9nICJ0cmFuc2xhdGVzIiBhcmUgcXVvdGF0aW9uIGNoYXJhY3RlcnMuCisjIFRoZSBtc2dpZHMgbXVzdCBiZSBBU0NJSSBhbmQgdGhlcmVmb3JlIGNhbm5vdCBjb250YWluIHJlYWwgcXVvdGF0aW9uCisjIGNoYXJhY3RlcnMsIG9ubHkgc3Vic3RpdHV0ZXMgbGlrZSBncmF2ZSBhY2NlbnQgKDB4NjApLCBhcG9zdHJvcGhlICgweDI3KQorIyBhbmQgZG91YmxlIHF1b3RlICgweDIyKS4gVGhlc2Ugc3Vic3RpdHV0ZXMgbG9vayBzdHJhbmdlOyBzZWUKKyMgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3Vjcy9xdW90ZXMuaHRtbAorIworIyBUaGlzIGNhdGFsb2cgdHJhbnNsYXRlcyBncmF2ZSBhY2NlbnQgKDB4NjApIGFuZCBhcG9zdHJvcGhlICgweDI3KSB0bworIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpLgorIyBJdCBhbHNvIHRyYW5zbGF0ZXMgcGFpcnMgb2YgYXBvc3Ryb3BoZSAoMHgyNykgdG8KKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KQorIyBhbmQgcGFpcnMgb2YgcXVvdGF0aW9uIG1hcmsgKDB4MjIpIHRvCisjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUMpIGFuZCByaWdodCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxRCkuCisjCisjIFdoZW4gb3V0cHV0IHRvIGFuIFVURi04IHRlcm1pbmFsLCB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcnMgYXBwZWFyIHBlcmZlY3RseS4KKyMgV2hlbiBvdXRwdXQgdG8gYW4gSVNPLTg4NTktMSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCisjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzIChieSBpY29udiBpbiBnbGliYyAyLjIgb3IgbmV3ZXIpIG9yIHRvCisjIGdyYXZlL2FjdXRlIGFjY2VudCAoYnkgbGliaWNvbnYpLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCisjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCisjIFdoZW4gb3V0cHV0IHRvIGFuIEFTQ0lJIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMsIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KKyMKKyMgVGhpcyBjYXRhbG9nIGZ1cnRoZXJtb3JlIGRpc3BsYXlzIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHF1b3RhdGlvbiBtYXJrcyBpbgorIyBib2xkIGZhY2UsIGFzc3VtaW5nIHRoZSBWVDEwMC9YVGVybSBlc2NhcGUgc2VxdWVuY2VzLgorIwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2VuQHF1b3QuaGVhZGVyIGIvZTJmc3Byb2dzL3BvL2VuQHF1b3QuaGVhZGVyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjQ3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZW5AcXVvdC5oZWFkZXIKQEAgLTAsMCArMSwyMiBAQAorIyBBbGwgdGhpcyBjYXRhbG9nICJ0cmFuc2xhdGVzIiBhcmUgcXVvdGF0aW9uIGNoYXJhY3RlcnMuCisjIFRoZSBtc2dpZHMgbXVzdCBiZSBBU0NJSSBhbmQgdGhlcmVmb3JlIGNhbm5vdCBjb250YWluIHJlYWwgcXVvdGF0aW9uCisjIGNoYXJhY3RlcnMsIG9ubHkgc3Vic3RpdHV0ZXMgbGlrZSBncmF2ZSBhY2NlbnQgKDB4NjApLCBhcG9zdHJvcGhlICgweDI3KQorIyBhbmQgZG91YmxlIHF1b3RlICgweDIyKS4gVGhlc2Ugc3Vic3RpdHV0ZXMgbG9vayBzdHJhbmdlOyBzZWUKKyMgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3Vjcy9xdW90ZXMuaHRtbAorIworIyBUaGlzIGNhdGFsb2cgdHJhbnNsYXRlcyBncmF2ZSBhY2NlbnQgKDB4NjApIGFuZCBhcG9zdHJvcGhlICgweDI3KSB0bworIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpLgorIyBJdCBhbHNvIHRyYW5zbGF0ZXMgcGFpcnMgb2YgYXBvc3Ryb3BoZSAoMHgyNykgdG8KKyMgbGVmdCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOCkgYW5kIHJpZ2h0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE5KQorIyBhbmQgcGFpcnMgb2YgcXVvdGF0aW9uIG1hcmsgKDB4MjIpIHRvCisjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUMpIGFuZCByaWdodCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxRCkuCisjCisjIFdoZW4gb3V0cHV0IHRvIGFuIFVURi04IHRlcm1pbmFsLCB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcnMgYXBwZWFyIHBlcmZlY3RseS4KKyMgV2hlbiBvdXRwdXQgdG8gYW4gSVNPLTg4NTktMSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCisjIHRyYW5zbGl0ZXJhdGVkIHRvIGFwb3N0cm9waGVzIChieSBpY29udiBpbiBnbGliYyAyLjIgb3IgbmV3ZXIpIG9yIHRvCisjIGdyYXZlL2FjdXRlIGFjY2VudCAoYnkgbGliaWNvbnYpLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCisjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCisjIFdoZW4gb3V0cHV0IHRvIGFuIEFTQ0lJIHRlcm1pbmFsLCB0aGUgc2luZ2xlIHF1b3RhdGlvbiBtYXJrcyBhcmUKKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMsIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KKyMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9lby5nbW8gYi9lMmZzcHJvZ3MvcG8vZW8uZ21vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYjdiNTMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZW8uZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9lby5wbyBiL2UyZnNwcm9ncy9wby9lby5wbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWUxMzRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2VvLnBvCkBAIC0wLDAgKzEsODA3MiBAQAorIyBFc3BlcmFudG8gdHJhbnNsYXRpb25zIGZvciBlMmZzcHJvZ3MuCisjIENvcHlyaWdodCAoQykgMjAxNCBUaGVvZG9yZSBUc28gKG1zZ2lkcykKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIworIyBQcmF2ZSwgInBhxZ1vIiBuZSBlc3RhcyB0cmFkdWtvIGRlICJwYXNzIiwKKyMgc2VkIMSdaSB0cmUga2xhcmFzIGthaiBib25lIGVzcHJpbWFzIGxhIGZhcmFkb24uCisjCisjIEJlbm5vIFNjaHVsZW5iZXJnIDxiZW5ub0B2ZXJ0YWFsdC5ubD4sIDIwMTIsIDIwMTMsIDIwMTQuCisjCisjLiBUaGUgc3RyaW5ncyBpbiBlMmZzY2sncyBwcm9ibGVtLmMgY2FuIGJlIHZlcnkgaGFyZCB0byB0cmFuc2xhdGUsCisjLiBzaW5jZSB0aGUgc3RyaW5ncyBhcmUgZXhwYW5kZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzLiAgRmlyc3Qgb2YgYWxsLAorIy4gdGhlcmUgaXMgYW4gQC1leHBhbnNpb24sIHdoZXJlIHN0cmluZ3MgbGlrZSAiQGkiIGFyZSBleHBhbmRlZCB0bworIy4gImlub2RlIiwgYW5kIHNvIG9uLiAgSW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLCB0aGUKKyMuIGUyZnNwcm9ncyBwbyB0ZW1wbGF0ZSBmaWxlIGhhcyBiZWVuIGVuaGFuY2VkIHdpdGggY29tbWVudHMgdGhhdCBzaG93CisjLiB0aGUgQC1leHBhbnNpb24sIGZvciB0aGUgc3RyaW5ncyBpbiB0aGUgcHJvYmxlbS5jIGZpbGUuCisjLgorIy4gVHJhbnNsYXRvcnMgYXJlIGZyZWUgdG8gdXNlIHRoZSBALWV4cGFuc2lvbiBmYWNpbGl0eSBpZiB0aGV5IHNvCisjLiBjaG9vc2UsIGJ5IHByb3ZpZGluZyB0cmFuc2xhdGlvbnMgZm9yIHN0cmluZ3MgaW4gZTJmc2NrL21lc3NhZ2UuYy4KKyMuIFRoZXNlIHRyYW5zbGF0aW9uIGNhbiBjb21wbGV0ZWx5IHJlcGxhY2UgYW4gZXhwYW5zaW9uOyBmb3IgZXhhbXBsZSwKKyMuIGlmICJiYmxvY2siICh3aGljaCBpbmRpY2F0ZWQgdGhhdCAiQGIiIHdvdWxkIGJlIGV4cGFuZGVkIHRvICJibG9jayIpCisjLiBpcyB0cmFuc2xhdGVkIGFzICJkZGF0ZW52ZXJsdXN0IiwgdGhlbiAiQGQiIHdpbGwgYmUgZXhwYW5kZWQgdG8KKyMuICJkYXRlbnZlcmx1c3QiLiAgQWx0ZXJuYXRpdmVseSwgdHJhbnNsYXRvcnMgY2FuIHNpbXBseSBub3QgdXNlIHRoZQorIy4gQC1leHBhbnNpb24gZmFjaWxpdHkgYXQgYWxsLgorIy4KKyMuIFRoZSBzZWNvbmQgZXhwYW5zaW9uIHdoaWNoIGlzIGRvbmUgZm9yIGUyZnNjaydzIHByb2JsZW0uYyBtZXNzYWdlcyBpcworIy4gYSBkeW5hbWljICUtZXhwYW5zaW9uLCB3aGljaCBleHBhbmRzICVpIGFzIGFuIGlub2RlIG51bWJlciwgYW5kIHNvCisjLiBvbi4gIEEgdGFibGUgb2YgdGhlc2UgZXhwYW5zaW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuICBOb3RlIHRoYXQKKyMuICUtZXhwcmVzc2lvbnMgdGhhdCBiZWdpbiB3aXRoICIlRCIgYW5kICIlSSIgYXJlIHR3by1jaGFyYWN0ZXIKKyMuIGV4cGFuc2lvbnM7IHNvIGZvciBleGFtcGxlLCAiJUl1IiBleHBhbmRzIHRvIHRoZSBpbm9kZSdzIHVzZXIgaWQKKyMuIG93bmVyc2hpcCBmaWVsZCAoaW5vZGUtPmlfdWlkKS4gIEFsc28gdGhlICIlQiIgZXhwYW5zaW9uIGlzIHNwZWNpYWw6CisjLiBpdCBjYW4gZXhwYW5kIHRvIGVpdGhlciB0aGUgc3RyaW5nICJpbmRpcmVjdCBibG9jayIgKHBvc3NpYmx5IHByZWNlZGVkCisjLiBieSB0aGUgd29yZCAiZG91YmxlIiBvciAidHJpcGxlIiksIG9yIHRoZSBzdHJpbmcgImJsb2NrICMiIGltbWVkaWF0ZWx5CisjLiBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyIGluZGljYXRpbmcgYSBibG9jayBzZXF1ZW5jZSBudW1iZXIuCisjLiAgCisjLiAJJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyMuIAklQgkiaW5kaXJlY3QgYmxvY2siIHwgImJsb2NrICMiPGJsa2NvdW50PglzdHJpbmcgfCBzdHJpbmcraW50ZWdlcgorIy4gCSVjCTxibGsyPgkJCWJsb2NrIG51bWJlcgorIy4gCSVEaQk8ZGlyZW50PiAtPiBpbm8JCWlub2RlIG51bWJlcgorIy4gCSVEbgk8ZGlyZW50PiAtPiBuYW1lCXN0cmluZworIy4gCSVEcgk8ZGlyZW50PiAtPiByZWNfbGVuCisjLiAJJURsCTxkaXJlbnQ+IC0+IG5hbWVfbGVuCisjLiAJJUR0CTxkaXJlbnQ+IC0+IGZpbGV0eXBlCisjLiAJJWQJPGRpcj4gCQkJaW5vZGUgbnVtYmVyCisjLiAJJWcJPGdyb3VwPgkJCWludGVnZXIKKyMuIAklaQk8aW5vPgkJCWlub2RlIG51bWJlcgorIy4gCSVJcwk8aW5vZGU+IC0+IGlfc2l6ZQorIy4gCSVJUwk8aW5vZGU+IC0+IGlfZXh0cmFfaXNpemUKKyMuIAklSWIJPGlub2RlPiAtPiBpX2Jsb2NrcworIy4gCSVJbAk8aW5vZGU+IC0+IGlfbGlua3NfY291bnQKKyMuIAklSW0JPGlub2RlPiAtPiBpX21vZGUKKyMuIAklSU0JPGlub2RlPiAtPiBpX210aW1lCisjLiAJJUlGCTxpbm9kZT4gLT4gaV9mYWRkcgorIy4gCSVJZgk8aW5vZGU+IC0+IGlfZmlsZV9hY2wKKyMuIAklSWQJPGlub2RlPiAtPiBpX2Rpcl9hY2wKKyMuIAklSXUJPGlub2RlPiAtPiBpX3VpZAorIy4gCSVJZwk8aW5vZGU+IC0+IGlfZ2lkCisjLiAJJUl0CTxzdHI+CQkJZmlsZSB0eXBlCisjLiAJJWoJPGlubzI+CQkJaW5vZGUgbnVtYmVyCisjLiAJJW0JPGNvbV9lcnIgZXJyb3IgbWVzc2FnZT4KKyMuIAklTgk8bnVtPgorIy4gCSVwCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPgorIy4gCSVQCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIDxkaXJlbnQ+LT5pbm8gd2l0aCA8aW5vMj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuICAoSWYgZGlyZW50IGlzIE5VTEwKKyMuIAkJCQl0aGVuIHJldHVybiB0aGUgcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8yPikKKyMuIAklcQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGRpcj4KKyMuIAklUQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4gd2l0aCA8ZGlyPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4KKyMuIAklcwk8c3RyPgkJCW1pc2NlbGxhbmVvdXMgc3RyaW5nCisjLiAJJVMJCWJhY2t1cCBzdXBlcmJsb2NrCisjLiAJJVgJPG51bT4JaGV4YWRlY2ltYWwgZm9ybWF0CisjLgorbXNnaWQgIiIKK21zZ3N0ciAiIgorIlByb2plY3QtSWQtVmVyc2lvbjogZTJmc3Byb2dzLTEuNDIuMTItcHJlMlxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wOC0zMSAxODo0NCswMjAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBCZW5ubyBTY2h1bGVuYmVyZyA8YmVubm9AdmVydGFhbHQubmw+XG4iCisiTGFuZ3VhZ2UtVGVhbTogRXNwZXJhbnRvIDx0cmFuc2xhdGlvbi10ZWFtLWVvQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKKyJMYW5ndWFnZTogZW9cbiIKKyJNSU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uICE9IDE7XG4iCisiWC1HZW5lcmF0b3I6IExva2FsaXplIDEuMFxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAiTWFsYm9uYSBibG9rbyAldSBlc3RhcyBla3N0ZXIgZ2FtbzsgxJ1pIGlnbm9yacSdYXMuXG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo0NgorbXNnaWQgIndoaWxlIHNhbml0eSBjaGVja2luZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAiZHVtIHNhbmtvbnRyb2xvIGRlIG1hbGJvbmJsb2thIGktbm9kbyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAiZHVtIGxlZ2FkbyBkZSBtYWxib25ibG9rYSBpLW5vZG8iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJkdW0gcHJvdm8gZGUgbWFsZmVybWkgJXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAiZHVtIHByb3ZvIGRlIG1hbGZlcm1pIGR1a3RvbiBhbCAnJXMnIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgImR1bSBsZWdhZG8gZGUgbGlzdG8gZGUgbWFsYm9uYWogYmxva29qIGVsIGRvc2llcm8iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImR1bSDEnWlzZGF0aWdvIGRlIG1hbGJvbmJsb2thIGktbm9kbyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIkF2ZXJ0bzogbmV2YWxpZGEgYmxva28gJXUgdHJvdmnEnWlzIG1hbGJvbmJsb2thIGktbm9kby4gIFZpxZ1pxJ1pcy5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJhcm8gZHVtIGxlZ2FkbyBkZSBibG9rbyAlbHUgKCVzKSBkdW0gJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkVyYXJvIGR1bSBsZWdhZG8gZGUgYmxva28gJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSWdub3JpIGVyYXJvbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICJEZXZpZ2kgcmVza3JpYm9uIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJhcm8gZHVtIHNrcmliYWRvIGRlIGJsb2tvICVsdSAoJXMpIGR1bSAlcy4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkVyYXJvIGR1bSBza3JpYmFkbyBkZSBibG9rbyAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgInZha2FqIHVqYWogYmxva29qIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo2MgorbXNnaWQgImVtcHR5IGRpciBtYXAiCittc2dzdHIgInZha2EgdWphIG1hcG8iCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorbXNnc3RyICJWYWthIHVqYSBibG9rbyAldSAoIyVkKSBlbiBpLW5vZG8gJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICJVem1hbmllcm8gZGUgJXM6ICAlcyBET1NJRVJOT01PIEJMT0tOT01CUk8gQkxPS0dSQU5ET1xuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIgorbXNnc3RyICJOZXZhbGlkYSBub21icm8gZGUgYmxva29qIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJNYW5rYXMgc3VmacSJYSBtZW1vcm8gcG9yIGFzaWduaSBidWZyb24gKGdyYW5kbz0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorIywgZnV6enkKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgIm1hcG8gZGUgbm9ybWFsZG9zaWVyYWogaS1ub2RvaiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIlV6bWFuaWVybzogICVzIERJU0tPXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIiIKKyJMYSAnaW9jdGwoQkxLRkxTQlVGKScgbmUgc3VidGVuYXRhcyEgIE5lIGVibGFzIHBlbGkgYnVmcmFqbiBlbmhhdm9qbi5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICJVem1hbmllcm86ICAlcyBbLUZdIFstSSBCVUZST0JMT0tOT01CUk9dIEFQQVJBVE9cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6ODEgZTJmc2NrL3VuaXguYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMgZm9yIGZsdXNoaW5nIgorbXNnc3RyICJkdW0gbWFsZmVybW8gZGUgJXMgcG9yIGVsYnVmcmlnbyIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAiZHVtIHByb3ZvIGRlIGVsYnVmcmlnaSAlcyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciCittc2dzdHIgImR1bSBwcm92byBkZSBtYWxmZXJtaSAnJXMnIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImR1bSBtYWxmZXJtbyBkZSBpLW5vZGEgc2thbm8iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEyNyBtaXNjL2UyaW1hZ2UuYzoxMzEyCittc2dpZCAid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIgorbXNnc3RyICJkdW0gcHJlbm8gZGUgc2VrdmEgaS1ub2RvIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIlNrYW5pxJ1pcyAldSBpLW5vZG9qLlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjU5MworbXNnaWQgInJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgImR1bSBsZWdhZG8gZGUga2HFnXByb3Rva29sYSDEiWVmYmxva29cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlczogbmUgdHJvdmnEnWlzIHZhbGlkYSBrYcWdcHJvdG9rb2xhIMSJZWZibG9rb1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiJXM6IGthxZ1wcm90b2tvbG8gdHJvIG1hbGxvbmdhc1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiJXM6IHJlc3Rhxa1yacSdYXMga2HFnXByb3Rva29sby4uLlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd29uJ3QgZG8gam91cm5hbCByZWNvdmVyeSB3aGlsZSByZWFkLW9ubHlcbiIKK21zZ3N0ciAiJXM6IG5lIHJlc3Rhxa1yacSdb3Mga2HFnXByb3Rva29sbyBlbiBudXJsZWdhIHN0YXRvXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJkdW0gcHJvdm8gZGUgcmVtYWxmZXJtaSAlcyIKKworIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICoqKiBMYSBzZWt2YWogbWFsbG9uZ2lnb2ogcHJlc2thxa0gxIlpdWogdXppxJ1hcyBlbiBsYSB0cmFkdWtvLiAqKioKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhZXRlbmRpdGEgYXRyaWJ1dG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFlcmFybyBkdW0gYXNpZ25vIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2tvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgIkJiaXRtYXBvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiYzxzZW51emE+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDa29uZmxpa3RhcyBrdW4gYWxpYSBkb3NpZXJzaXN0ZW1hIGJsb2tvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgImRkb3NpZXJ1am8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkRmb3JpZ2l0YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImVlcm8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVlcm8gJyVEbicgZW4gJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZmRvc2llcnNpc3RlbW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGcG9yIEBpICVpICglUSkgZXN0YXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnZ3J1cG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoJ0hUUkVFJy1hIHVqYSBAaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjcKK21zZ2lkICJpaW5vZGUiCittc2dzdHIgImlpLW5vZG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIkluZXZhbGlkYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiamthxZ1wcm90b2tvbG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImxsb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMQorbXNnaWQgIkxpcyBhIGxpbmsiCittc2dzdHIgIkxlc3RhcyBsaWdvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMgorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtcGx1cm9ibGUgcG9zZWRhdGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMzCittc2dpZCAibmludmFsaWQiCittc2dzdHIgIm5tYWx2YWxpZGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJvb3JmYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicHByb2JsZW1vIGVuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNgorbXNnaWQgInFxdW90YSIKK21zZ3N0ciAicWt2b3RvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJycmFkaWthIEBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNkZXZ1cyBlc3RpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTxIllZmJsb2tvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MAorbXNnaWQgInV1bmF0dGFjaGVkIgorbXNnc3RyICJ1bmVrb25la3RpdGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidmFwYXJhdG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieGFtcGxla3NvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiem51bGxvbmdhIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjxMYSBOVUxMLWEgaS1ub2RvPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8TGEgbWFsYm9uYmxva2EgaS1ub2RvPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8TGEgdXphbnRrdm90YSBpLW5vZG8+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorbXNnaWQgIjxUaGUgZ3JvdXAgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8TGEgZ3J1cGt2b3RhIGktbm9kbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxMYSBzdGFydGlnYSBpLW5vZG8+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPExhIG1hbGZvcmlndWphIGktbm9kbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPExhIGdydXBwcmlhxLVhIGktbm9kbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPExhIGthxZ1wcm90b2tvbGEgaS1ub2RvPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjxSZXplcnZpdGEgaS1ub2RvIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxSZXplcnZpdGEgaS1ub2RvIDEwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzMKK21zZ2lkICJyZWd1bGFyIGZpbGUiCittc2dzdHIgIm5vcm1hbGEgZG9zaWVybyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzUKK21zZ2lkICJkaXJlY3RvcnkiCittc2dzdHIgImRvc2llcnVqbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJzaWduby1hcGFyYXRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAiYmxva2FwYXJhdG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQxCittc2dpZCAibmFtZWQgcGlwZSIKK21zZ3N0ciAibm9taXRhIGR1a3RvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgInNpbWJvbGEgbGlnbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAia29uZWt0aWxvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJuZWtvbmF0YSBkb3NpZXJ0aXBvIGt1biBtb2R1c28gMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJuZXJla3RhIGJsb2tvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZHVvYmxlIG5lcmVrdGEgYmxva28iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJ0cmlvYmxlIG5lcmVrdGEgYmxva28iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAidHJhZHVrYSBibG9rbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICJibG9rbyAjIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgIm1hcG8gZGUgcGx1cm9ibGUgcG9zZWRhdGFqIGktbm9kb2oiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgIiIKKworIyBGSVhNRSAtLSBpcyBhIGRlYnVnIG1lc3NhZ2U/CisjOiBlMmZzY2svcGFzczFiLmM6OTAzCittc2dpZCAicmV0dXJuZWQgZnJvbSBjbG9uZV9maWxlX2Jsb2NrIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGlub2RlIHJlY29yZCBmb3IgJXUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJsZWdhbnRlIGRvc2llcnVqYW4gYmxva29uIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTExCittc2dpZCAiaW4tdXNlIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwbyBkZSB1emF0YWogaS1ub2RvaiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcG8gZGUgZG9zaWVydWphaiBpLW5vZG9qIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwbyBkZSBub3JtYWxkb3NpZXJhaiBpLW5vZG9qIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTQxIG1pc2MvZTJpbWFnZS5jOjEyNjgKK21zZ2lkICJpbi11c2UgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBvIGRlIHV6YXRhaiBibG9rb2oiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKKyMsIGZ1enp5Cittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBvIGRlIGJsb2tvaiBrdW4gZXRlbmRpdGFqIGF0cmlidXRvaiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAibWFsZmVybWFudGUgaS1ub2RhbiBza2Fub24iCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJwcmVuYW50ZSBzZWt2YW4gaS1ub2RvbiBlbCBza2FubyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTkzMworbXNnaWQgIlBhc3MgMSIKK21zZ3N0ciAiUGHFnW8gMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAibGVnYW50ZSBuZXJla3Rham4gYmxva29qbiBkZSBpLW5vZG8gJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBvIGRlIG1hbGJvbmFqIGktbm9kb2oiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJpLW5vZG8gZW4gbWFwbyBkZSBkaWZla3RhaiBibG9rb2oiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBvIGRlICdpbWFnaWMnLWktbm9kb2oiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAibWFwbyBkZSBwbHVyb2JsZSBwb3NlZGF0YWogaS1ub2RvaiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAibWFwbyBkZSBibG9rb2oga3VuIGV0ZW5kaXRhaiBhdHJpYnV0b2oiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM0MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTZsdSglYyk6IGV4cGVjdGluZyAlNmx1IGdvdCBwaHlzICU2bHUgKGJsa2NudCAlbGxkKVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MjcKK21zZ2lkICJibG9jayBiaXRtYXAiCittc2dzdHIgImJsb2thIGJpdG1hcG8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgImktbm9kYSBiaXRtYXBvIgorCisjOiBlMmZzY2svcGFzczEuYzozODM5Cittc2dpZCAiaW5vZGUgdGFibGUiCittc2dzdHIgImktbm9kYSB0YWJlbG8iCisKKyM6IGUyZnNjay9wYXNzMi5jOjI4NworbXNnaWQgIlBhc3MgMiIKK21zZ3N0ciAiUGHFnW8gMiIKKworIzogZTJmc2NrL3Bhc3MyLmM6MTA0MiBlMmZzY2svcGFzczIuYzoxMjA3Cittc2dpZCAiQ2FuIG5vdCBjb250aW51ZS4iCittc2dzdHIgIk5lIGVibGFzIGRhxa1yaWdpLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAiYml0bWFwbyBkZSB0cmFrdGl0YWogaS1ub2RvaiIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiUGludGEgbWVtb3J1em8iCisKKyM6IGUyZnNjay9wYXNzMy5jOjE0OQorbXNnaWQgIlBhc3MgMyIKK21zZ3N0ciAiUGHFnW8gMyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICJiaXRtYXBvIHBvciBpLW5vZGEgYnVrbG9yZWtvbm8iCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiUGHFnW8gNCIKKworIzogZTJmc2NrL3Bhc3M1LmM6ODEKK21zZ2lkICJQYXNzIDUiCittc2dzdHIgIlBhxZ1vIDUiCisKKyM6IGUyZnNjay9wYXNzNS5jOjEwNAorbXNnaWQgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTU4Cittc2dpZCAiY2hlY2tfYmxvY2tfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIihuZW5pdSBpbnZpdG8pIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyCittc2dpZCAiRml4IgorbXNnc3RyICLEiHUgcmlwYXJpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIsSIdSB2acWdaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICLEiHUgYWxpbG9raWdpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIsSIdSBhc2lnbmkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIsSIdSBldGVuZGlnaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIsSIdSBrb25la3RpZ2kgYWwgL2xvc3QrZm91bmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIsSIdSBrcmVpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAixIh1IHNhdmkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAixIh1IHRydW5raSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICLEiHUgdmnFnWkgaS1ub2RvbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICLEiHUgxIllc2kiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAixIh1IGZlbmRpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIsSIdSBkYcWtcmlnaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICLEiHUga2xvbmkgcGx1cm9ibGUgcG9zZWRhdGFqbiBibG9rb2puIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2Cittc2dpZCAiRGVsZXRlIGZpbGUiCittc2dzdHIgIsSIdSBmb3JpZ2kgZG9zaWVyb24iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAixIh1IG1hbGVibGlnaSBtZXNhxJ1vam4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIsSIdSBtYWxsaWdpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIsSIdSB2acWdaSAnSFRyZWUnLWFuIGluZGVrc29uIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgIsSIdSByZWVzdGlnaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKE5FTklVKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MAorbXNnaWQgIkZJWEVEIgorbXNnc3RyICJSSVBBUklUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MQorbXNnaWQgIkNMRUFSRUQiCittc2dzdHIgIlZJxZxJVEEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIKK21zZ2lkICJSRUxPQ0FURUQiCittc2dzdHIgIkFMSUxPS0lHSVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICJBU0lHTklUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJFVEVORElHSVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIlJFS09ORUtUSVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2Cittc2dpZCAiQ1JFQVRFRCIKK21zZ3N0ciAiS1JFSVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIlNBVklUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAiVFJVTktJVEEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkKK21zZ2lkICJJTk9ERSBDTEVBUkVEIgorbXNnc3RyICJJLU5PRE8gVknFnElUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIsSIRVNJR0lUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICJGRU5ESVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAiREHFrFJJR0lUQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiUExVUk9CTEUgUE9TRURBVEFKIEJMT0tPSiBLTE9OScScSVMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkRPU0lFUk8gRk9SSUdJxJxJUyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgIk1BTEVCTElHSVRBSiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICJNQUxMSUdJVEEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICInSFRSRUUnLUEgSU5ERUtTTyBWScWcSVRBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiRVNUT1MgUkVFU1RJR0FUQSIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiYmxva2EgQEIgcG9yIEBnICVnIG5lIGVzdGFzIGVuIEBnLiAgKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJpLW5vZGEgQEIgcG9yIEBnICVnIG5lIGVzdGFzIGVuIEBnLiAgKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJpLW5vZGEgdGFiZWxvIHBvciBAZyAlZyBuZSBlc3RhcyBlbiBAZy4gIChAYiAlYilcbiIKKyJBVkVSVE86IFNFVkVSQSBQRVJETyBERSBEQVRVTU9KTiBFQkxBUy5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIkxhIGRvc2llcnNpc3RlbWEgZ3JhbmRvIGVzdGFzICViIGJsb2tvaiAobGHFrSBsYSDEiWVmYmxva28pO1xuIgorImxhIGZpemlrYSBhcGFyYXRhIGdyYW5kbyBlc3RhcyAlYyBibG9rb2ouXG4iCisiQcWtIGxhIMSJZWZibG9rbyBhxa0gbGEgc3ViZGlza2lnYSB0YWJlbG8gZXN0YXMgZGlmZWt0YSFcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisiRW4gQFM6IGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyLEiGkgdGl1IHZlcnNpbyBkZSAnZTJmc2NrJyBuZSBzdWJ0ZW5hcyBmcmFnbWVudGdyYW5kb2puIGtpdWpcbiIKKyJtYWxzYW1hcyBhbCBibG9rZ3JhbmRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJFbiBAUzogYmxvY2tzX3Blcl9ncm91cCA9ICViLCBkZXZ1cyBlc3RpICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkVuIEBTOiBmaXJzdF9kYXRhX2Jsb2NrID0gJWIsIGRldnVzIGVzdGkgJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiRG9zaWVyc2lzdGVtbyBuZSBoYXZhcyBVVUlELW9uOyB1bnUgZ2VuZXJpxJ1hcy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorbXNnaWQgIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iCittc2dzdHIgIlRyb3ZpxJ1pcyBkaWZla3RvIGVuIEBTOyAoJXMgPSAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkVyYXJvIGR1bSBlbHRyb3ZvIGRlIGdyYW5kbyBkZSBmaXppa2EgYXBhcmF0bzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgY291bnQgaW4gc3VwZXJibG9jayBpcyAlaSwgc2hvdWxkIGJlICVqLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NAorbXNnaWQgIkBpIGNvdW50IGluIEBTIGlzICVpLCBAcyAlai5cbiIKK21zZ3N0ciAiSS1ub2RhIG5vbWJybyBlbiDEiWVmYmxva28gZXN0YXMgJWksIEBzICVqLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OAorbXNnaWQgIlRoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICLEiGVmYmxva28gaGF2YXMgbWFsdmFsaWRhbiBrYcWdcHJvdG9rb2xvbiAoQGkgJWkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIiIKKyJFa3N0ZXJhIGthxZ1wcm90b2tvbG8gaGF2YXMgcGx1cmFqbiBkb3NpZXJzaXN0ZW1ham4gdXphbnRvam4gKG5lICIKKyJzdWJ0ZW5hdGFzKS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2FuJ3QgZmluZCBleHRlcm5hbCBqb3VybmFsXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAzCittc2dpZCAiQ2FuJ3QgZmluZCBleHRlcm5hbCBAalxuIgorbXNnc3RyICJOZSBlYmxhcyB0cm92aSBla3N0ZXJhbiBrYcWdcHJvdG9rb2xvbi5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgYmFkIHN1cGVyYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgYmFkIEBTXG4iCittc2dzdHIgIkVrc3RlcmEga2HFnXByb3Rva29sbyBoYXZhcyBtYWxib25hbiDEiWVmYmxva29uLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCittc2dpZCAiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iCittc2dzdHIgIkVrc3RlcmEga2HFnXByb3Rva29sbyBuZSBzdWJ0ZW5hcyDEiWkgdGl1biBkb3NpZXJzaXN0ZW1vbi5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJLYcWdcHJvdG9rb2xhIMSJZWZibG9rbyBlc3RhcyBkaWZla3RhLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiTWFsamVzYXMgxIllZmJsb2thIGZsYWdvICdoYXNfam91cm5hbCcsIHNlZCBla3ppc3RhcyBrYcWdcHJvdG9rb2xvLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiSmVzYXMgxIllZmJsb2thIGZsYWdvICduZWVkc19yZWNvdmVyeScsIHNlZCBuZSBla3ppc3RhcyBAai5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIk1hbGplc2FzIMSJZWZibG9rYSBmbGFnbyAnbmVlZHNfcmVjb3ZlcnknLCBzZWQgQGogZW5oYXZhcyBkYXR1bW9qbi5cbiIKKworIy4gQC1leHBhbmRlZDogQ2xlYXIgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDYKK21zZ2lkICJDbGVhciBAaiIKK21zZ3N0ciAixIh1IHZpxZ1pIGthxZ1wcm90b2tvbG9uIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIkRvc2llcnNpc3RlbW8gaGF2YXMgamVzYWpuIGZ1bmtjaWFqbiBmbGFnb2puLCBzZWQgZXN0YXMgcmV2aXppbyAwLiAgIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiVzIG9yZmFuIGktbm9kb24gJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZHVzbz0lSW0sIGdyYW5kbz0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJASSAlQiAoJWIpIHRyb3ZpxJ1pcyBlbiBAbyBAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkphbXZpxZ1pdGEgJUIgKCViKSB0cm92acSdaXMgZW4gQG8gQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgIkBJIEBvIEBpICVpIGVuIEBTLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgIkBJIEBpICVpIGVuIGxpc3RvIGRlIG9yZmFqIGktbm9kb2ouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiS2HFnXByb3Rva29sYSBAUyBoYXZhcyBuZWtvbmF0YW4gamVzYW4gbnVybGVnYW4gZnVua2NpYW4gZmxhZ29uLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjg2Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIkthxZ1wcm90b2tvbGEgQFMgaGF2YXMgbmVrb25hdGFuIGplc2FuIG5la29uZ3J1YW4gZnVua2NpYW4gZmxhZ29uLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgIkxhIGthxZ1wcm90b2tvbGEgdmVyc2lvIG5lIHN1YnRlbmF0YXMgcG9yIMSJaSB0aXUgJ2UyZnNjaycuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiS2HFnXByb3Rva29sbyBtb3ZpxJ1hcyBkZSAvJXMgYWwga2HFnWl0YSBpLW5vZG8uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIG1vdmluZyBqb3VybmFsOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkVyYXJvIGR1bSBtb3ZvIGRlIGthxZ1wcm90b2tvbG86ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUnVuIGpvdXJuYWwgYW55d2F5CisjOiBlMmZzY2svcHJvYmxlbS5jOjMxMgorbXNnaWQgIlJ1biBAaiBhbnl3YXkiCittc2dzdHIgIsSIdSB0YW1lbiBydWxpIGthxZ1wcm90b2tvbG9uIgorCisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3Cittc2dpZCAiUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBAUywgc28gcnVubmluZyBAaiBhbnl3YXkuXG4iCittc2dzdHIgIlJlc3Rhxa1yYSBmbGFnbyBtYWxqZXNhcyBlbiBzYXZrb3BpYSBAUywgdGFtZW4gcnVsacSdYXMgQGouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyJGYXJpxJ1hcyBzYXZrb3BpbyBkZSBsYSBpbmZvcm1vaiBlbiBrYcWdcHJvdG9rb2xhIEBpLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJEb3NpZXJzaXN0ZW1vIGhhdmFzIG1hbGplc2FuICdyZXNpemVfaW5vZGUnLCBzZWQgJ3NfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcydcbiIKKyJlc3RhcyAlTjsgQHMgbnVsby4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJNYWxqZXNhcyAncmVzaXplX2lub2RlJywgc2VkIGxhIHJlZ3JhbmRpZ2EgQGkgZXN0YXMgbmVudWxhLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkxhIHJlZ3JhbmRpZ2EgQGkgbWFsdmFsaWRhcy4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJFbiBAUzogdGVtcG8gZGUgbGFzdGEgc3VybWV0byAoJXQsXG4iCisiICAgIG51biA9ICVUKSBlc3RhcyBlbiBsYSBlc3RvbnRlY28uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisiRW4gQFM6IHRlbXBvIGRlIGxhc3RhIHNrcmlibyAoJXQsXG4iCisiICAgIG51biA9ICVUKSBlc3RhcyBlbiBsYSBlc3RvbnRlY28uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIsSIZWZibG9rYSBpbmRpa28gcG9yIGVrc3RlcmEgQFMgQHMgJVguICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBbGRvbmnEnWFzICdkaXJoYXNoJy1hIGluZGlrbyBhbCBAZi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNjIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgIgorbXNnc3RyICJrb250cm9sc3VtbyBkZSBncnVwcHJpYcS1byAlZyBlc3RhcyAlMDR4LCBAcyAlMDR5LiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzcyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJMYXN0YSBncnVwYSBibG9rYSBiaXRtYXBvIGVzdGFzIHNlbiBwcmF2YWxvcml6by4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICJLYcWdcHJvdG9rb2xhIHRyYW5zYWtjaW8gJWkgZXN0aXMgZGlmZWt0YTsgcmVmYXJhZG8gYWJvcnRpxJ1pcy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkVuIEBTIGxhIHRlbXBvIGRlIGxhc3RhIHN1cm1ldG8gZXN0YXMgZW4gbGEgZXN0b250ZWNvLlxuIgorIiAgICAoamUgbWFscGxpIG9sIHVudSB0YWdvLCBwcm9iYWJsZSBrYcWtemUgZGUgbWFsYm9uYSBhbMSddXN0aWdvIGRlIGZpemlrYSAiCisiaG9ybG/EnW8pICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiRW4gQFMgbGEgdGVtcG8gZGUgbGFzdGEgc2tyaWJvIGVzdGFzIGVuIGxhIGVzdG9udGVjby5cbiIKKyIgICAgKGplIG1hbHBsaSBvbCB1bnUgdGFnbywgcHJvYmFibGUga2HFrXplIGRlIG1hbGJvbmEgYWzEnXVzdGlnbyBkZSBmaXppa2EgIgorImhvcmxvxJ1vKSAgIgorCisjLiBALWV4cGFuZGVkOiBPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKK21zZ2lkICJPbmUgb3IgbW9yZSBAYiBAZyBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gICIKK21zZ3N0ciAiVW51IGHFrSBwbHVyYWogYmxva2dydXBhaiBwcmlhxLVvaiBoYXZhcyBuZXZhbGlkYW4ga29udHJvbHN1bW9uLiAgIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgaW5vZGVzIGNvdW50IHRvICVqICh3YXMgJWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDA4Cittc2dpZCAiU2V0dGluZyBmcmVlIEBpcyBjb3VudCB0byAlaiAod2FzICVpKVxuIgorbXNnc3RyICJOb21icm8gZGUgbGliZXJhaiBpLW5vZG9qIGFnb3JkacSdYXMgYWwgJWogKGVzdGlzICVpKVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICJOb21icm8gZGUgbGliZXJhaiBibG9rb2ogYWdvcmRpxJ1hcyBhbCAlYyAoZXN0aXMgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIkxhIGt2b3RhIEBpICVpICglUSkgZmFyacSdYXMga2HFnWl0YS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICLEiGVmYmxva28gaGF2YXMgbmV2YWxpZGFuIE1NUC1ibG9rb24uICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAixIhlZmJsb2tvIGhhdmFzIG5ldmFsaWRhbiBtYWdpbnVtZXJvbiBwb3IgTU1QLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgImV4dDJmc19vcGVuMigpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2MoKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0IAorIy4gQC1leHBhbmRlZDogc2ltdWx0YW5lb3VzbHkuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ0NgorbXNnaWQgIiIKKyJAUyBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0ICIKKyJzaW11bHRhbmVvdXNseS4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1MgorIywgZnV6enkKK21zZ2lkICJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIgorbXNnc3RyICJLb250cm9sc3VtbyBkZSBNTVAtYmxva28gbmUga29ua29yZGFzIGt1biBNTVAtYmxva28iCisKKyMgRklYTUUgLS0gbWlzc2luZyAib2YiPworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorIkBTIGRlIDY0LWJpdGFqIGRvc2llcnNpc3RlbW9qIGJlem9uYXMgYW1wbGVrc29qbiBwb3IgYXRpbmdpIGxhIHR1dGFuICIKKyJkaXNrb24uICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDYyCittc2dpZCAiRmlyc3RfbWV0YV9iZyBpcyB0b28gYmlnLiAgKCVOLCBtYXggdmFsdWUgJWcpLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworIywgZnV6enkKK21zZ2lkICJFeHRlcm5hbCBAaiBAUyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAUy4gICIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgJ2V4dGVudCctYmxva28gbmUga29ua29yZGFzIGt1biBibG9rbyIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgIlBhxZ1vIDE6IEtvbnRyb2xvIGRlIGktbm9kb2osIGJsb2tvaiBrYWogZ3JhbmRvai4uLlxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiQHIgbmUgZXN0YXMgQGQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiQHIgaGF2YXMgJ2R0aW1lJy1hbiB2YWxvcm9uIChwcm9iYWJsZSBrYcWtemUgZGUgb2xkYSAnbWtlMmZzJykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJSZXplcnZpdGEgaS1ub2RvICVpICglUSkgaGF2YXMgbmV2YWxpZGFuIG1vZHVzb24uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICJARCBAaSAlaSBoYXZhcyBudWxhbiAnZHRpbWUnLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgIgorbXNnc3RyICJAaSAlaSB1emnEnWFzLCBzZWQgaGF2YXMgJ2R0aW1lJy1hbiB2YWxvcm9uLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiQGkgJWkgZXN0YXMgQGQga3VuIG51bGEgbG9uZ28uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiYmxva2EgQEIgKCViKSBkZSBAZyAlZyBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJpLW5vZGEgQEIgKCViKSBkZSBAZyAlZyBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSB0YWJsZSBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzOAorbXNnaWQgIkBnICVnJ3MgQGkgdGFibGUgYXQgJWIgQEMuXG4iCittc2dzdHIgImktbm9kYSB0YWJlbG8gKCViKSBkZSBAZyAlZyBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiYmxva2EgQEIgKCViKSBkZSBAZyAlZyBtYWxib25hcy4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiaS1ub2RhIEBCICglYikgZGUgQGcgJWcgbWFsYm9uYXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgJ2lfc2l6ZScgZXN0YXMgJUlzLCBAcyAlTi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgJ2lfYmxvY2tzJyBlc3RhcyAlSWIsIEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYzCittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiQEkgJUIgKCViKSBlbiBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiVCICglYikgcGFydGUga292cmFzIGRvc2llcnNpc3RlbWFqbiBtZXRhZGF0dW1vam4gZW4gQGkgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiSS1ub2RvICVpIGhhdmFzIG5ldmFsaWRhKGopbiBibG9rbyhqKW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRvbyBtYW55IGlsbGVnYWwgYmxvY2tzIGluIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3OAorIywgYy1mb3JtYXQKK21zZ2lkICJUb28gbWFueSBpbGxlZ2FsIEBicyBpbiBAaSAlaS5cbiIKK21zZ3N0ciAiVHJvIG11bHRhaiBuZXZhbGlkYWogYmxva29qIGVuIGktbm9kbyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODMKK21zZ2lkICJASSAlQiAoJWIpIGluIGJhZCBAYiBAaS4gICIKK21zZ3N0ciAiQEkgJUIgKCViKSBlbiBtYWxib25ibG9rYSBAaS4gICIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4OAorbXNnaWQgIkJhZCBAYiBAaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiTWFsYm9uYmxva2EgaS1ub2RvIGhhdmFzIG5ldmFsaWRhKGopbiBibG9rbyhqKW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJEdW9ibGEgYcWtIG1hbGJvbmEgYmxva28gdXppxJ1hcyFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAiTWFsYm9uYSBibG9rbyAlYiB1emnEnWFzIGtpZWwgbmVyZWt0YSBibG9rbyBkZSBtYWxib25ibG9rYSBpLW5vZG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIG1hbGJvbmJsb2thIGktbm9kbyB2ZXLFnWFqbmUgZGlmZWt0acSdaXMuICBQcm9iYWJsZSB2aVxuIgorImRldnVzIG51biBoYWx0aSDEiWlhbiBmYXJhZG9uIGthaiBydWxpICdlMmZzY2sgLWMnIHBvclxuIgorInRyb3ZpIGVibGFqbiBtYWxib25ham4gYmxva29qbiBlbiBsYSBkb3NpZXJzaXN0ZW1vLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlNlIGxhIGJsb2tvIHZlcmUgbWFsYm9uYXMsIG5lIGVibGFzIHJpcGFyaSBsYSBkb3NpZXJzaXN0ZW1vbi5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisiVmkgcG92YXMgZm9yaWdpIMSJaSB0aXVuIGJsb2tvbiBkZSBsYSBtYWxib25ibG9rYSBsaXN0b1xuIgorImthaiBlc3Blcmkga2UgbGEgYmxva28gZmFrdGUgYm9uYXMuICBTZWQgdGlvIG5lIGdhcmFudGlhcy5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiTGEgdW51YSDEiWVmYmxva28gKCViKSBlc3RhcyBlbiBsYSBtYWxib25ibG9rYSBsaXN0by5cbiIKKworIy4gQC1leHBhbmRlZDogQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjI2Cittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIkJsb2tvICViIGVuIGxhIHVudWFqIGdydXBwcmlhxLVvaiBlc3RhcyBlbiBsYSBtYWxib25ibG9rYSBsaXN0by5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBzdXBlcmJsb2NrICglYikgaXMgYmFkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzMgorbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgQFMgKCViKSBpcyBiYWQuXG4iCittc2dzdHIgIkF2ZXJ0bzogxIllZmJsb2tvICViIGRlIGdydXBvICVnIG1hbGJvbmFzLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJBdmVydG86IGVuIGdydXBvICVnIGxhIGtvcGlvIGRlIGxhIGdydXBwcmlhxLVvaiBoYXZhcyBtYWxib25hbiBibG9rb24gKCViKS5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorIioqUHJvZ3JhbW1pc28/KiogIEJsb2tvICViIHNlbnJlem9uZSBwcmV0ZW5kacSdaXMgZW4gcHJvY2Vzc19iYWRfYmxvY2soKS5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQEEgZGUgJU4ga29uZWtzYWogYmxva29qIGVuIEBiIEBnICVnIHBvciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkBBIGRlIGJsb2tidWZybyBwb3IgdHJhbnNsb2tpICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiRGUgQGcgJWcgdHJhbnNsb2tpxJ1hcyAlcyBkZSAlYiBhbCAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIkRlIEBnICVnIHRyYW5zbG9racSdYXMgJXMgYWwgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgIkF2ZXJ0bzogbWFsc3VrY2VzaXMgbGVnaSBibG9rb24gJWIgZGUgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQXZlcnRvOiBtYWxzdWtjZXNpcyBza3JpYmkgYmxva29uICViIHBvciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgZGUgaS1ub2RhIEBCICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0Cittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgZGUgYmxva2EgQEIgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkBBIGRlICdpY291bnQnLWEgbGlnaW5mb3JtbzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJAQSBkZSB1amEgYmxva2FybzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gc2thbmFkbyBkZSBpLW5vZG9qICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gaXRlcmFjaW8gamUgYmxva29qIGVuIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwOQorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJFcmFybyBkdW0gc2tyaWJhZG8gZGUgaW5mb3JtbyBwcmkgaS1ub2RhIG5vbWJybyAoQGk9JWksIG5vbWJybz0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJhcm8gZHVtIHNrcmliYWRvIGRlIGluZm9ybW8gcHJpIHVqYSBibG9rbyAoQGk9JWksIEBiPSViLCBudW1lcm89JU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gbGVnYWRvIGRlIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgIgorbXNnc3RyICJAaSAlaSBoYXZhcyBqZXNhbiBmbGFnb24gJ2ltYWdpYycuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVjaWFsYSBAaSAlaSAoYXBhcmF0by9rb25la3RpbG8vdmljbWVtb3JvKSBoYXZhcyBqZXNhbiBmbGFnb25cbiIKKyInaW1tdXRhYmxlJyBhxa0gJ2FwcGVuZC1vbmx5Jy4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBpbm9kZSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIEBpICVpIGhhcyBub24temVybyBzaXplLiAgIgorbXNnc3RyICJTcGVjaWFsYSBAaSAlaSAoYXBhcmF0by9rb25la3RpbG8vdmljbWVtb3JvKSBoYXZhcyBuZW51bGFuIGdyYW5kb24uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkthxZ1wcm90b2tvbGEgaS1ub2RvIG5lIHV6acSdYXMsIHNlZCBlbmhhdmFzIGRhdHVtb2puLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiS2HFnXByb3Rva29sbyBuZSBlc3RhcyBub3JtYWxhIGRvc2llcm8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiSS1ub2RvICVpIGVzdGlzIGVuIGxhIGxpc3RvIGRlIG9yZmFqIGktbm9kb2ouICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiVHJvdmnEnWlzIGktbm9kb2oga2l1aiBlc3RpcyBhbm9qIGVuIGRpZmVrdGEgbGlzdG8gZGUgb3Jmb2ouICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIkBBIGRlICdyZWZjb3VudCctYSBzdHJ1a3R1cm8gKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJFcmFybyBkdW0gbGVnYWRvIGRlIEBiICViIGRlIGV0ZW5kaXRhaiBhdHJpYnV0b2ogcG9yIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiQGkgJWkgaGF2YXMgbWFsYm9uYW4gYmxva29uICViIGRlIGV0ZW5kaXRhaiBhdHJpYnV0b2ouICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJFcmFybyBkdW0gbGVnYWRvIGRlIEBiICViIGRlIGV0ZW5kaXRhaiBhdHJpYnV0b2ogKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBoYXZhcyByZWZlcmVuY25vbWJyb24gJXIsIEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRXJhcm8gZHVtIHNrcmliYWRvIGRlIEBiICViIGRlIGV0ZW5kaXRhaiBhdHJpYnV0b2ogKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBoYXZhcyAnaF9ibG9ja3MgPiAxJy4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkBBIGRlICdpY291bnQnLWEgc3RydWt0dXJvOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBlc3RhcyBkaWZla3RhIChhc2lnbmEga29saXppbykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJAYiAlYiBkZSBldGVuZGl0YWogYXRyaWJ1dG9qIGVzdGFzIGRpZmVrdGEgKG1hbHZhbGlkYSBub21vKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBlc3RhcyBkaWZla3RhIChtYWx2YWxpZGEgdmFsb3JvKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiQGkgJWkgdHJvIGdyYW5kYXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorbXNnaWQgIiVCICglYikgY2F1c2VzIEBkIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgZXN0aWdhcyBkb3NpZXJ1am9uIHRybyBncmFuZGEuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIGVzdGlnYXMgZG9zaWVyb24gdHJvIGdyYW5kYS4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBzeW1saW5rIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgZXN0aWdhcyBzaW1ib2xhbiBsaWdvbiB0cm8gZ3JhbmRhLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJAaSAlaSBoYXZhcyBqZXNhbiBmbGFnb24gJ0lOREVYX0ZMJyBlbiBkb3NpZXJzaXN0ZW1vIHNlbiBzdWJ0ZW5vIHBvciAiCisiJ0hUUkVFJy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgIkBpICVpIGhhdmFzIGplc2FuIGZsYWdvbiAnSU5ERVhfRkwnIHNlZCBuZSBlc3RhcyBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiQGggJWkgaGF2YXMgbWFsdmFsaWRhbiByYWRpa2FuIG5vZG9uLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkBoICVpIGhhdmFzIG5lc3VidGVuYXRhbiBoYWtldGFuIHZlcnNpb24gKCVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiQGggJWkgdXphcyBuZWtvbmdydWFuIGZsYWdvbiBwb3IgJ0hUUkVFJy1hIHJhZGlrYSBub2RvLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJAaCAlaSBoYXZhcyBhcmJhbiBwcm9mdW5kb24gKCVOKSBraXUgdHJvIGdyYW5kYXNcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIk1hbGJvbmJsb2thIEBpIGhhdmFzIG5lcmVrdGFuIGJsb2tvbiAoJWIpIGtpdSBrb25mbGlrdGFzXG4iCisia3VuIGRvc2llcnNpc3RlbWFqIG1ldGFkYXR1bW9qLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICJNYWxzdWtjZXNpcyAocmUpa3JlYWRvIGRlIHJlZ3JhbmRpZ2EgQGk6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSBoYXZhcyBrcm9tYW4gZ3JhbmRvbiAoJUlTKSBraXUgbWFsdmFsaWRhc1xuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgZW4gQGkgJWkgaGF2YXMgbm9tbG9uZ29uICglTikga2l1IG1hbHZhbGlkYXNcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAYSBlbiBAaSBpIGhhdmFzIHZhbG9yYW4gcG96aWNpb24gKCVOKSBraXUgbWFsdmFsaWRhc1xuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICJAYSBlbiBAaSBpIGhhdmFzIHZhbG9yYW4gYmxva29uICglTikga2l1IG1hbHZhbGlkYXMgKGRldnVzIGVzdGkgMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIGVuIEBpIGkgaGF2YXMgdmFsb3JhbiBncmFuZG9uICglTikga2l1IG1hbHZhbGlkYXNcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIGVuIEBpIGkgaGF2YXMgaGFrZXRvbiAoJU4pIGtpdSBtYWx2YWxpZGFzXG4iCisKKyMgWFhYICB3aGF0IGlzICVJdD8/CisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJAaSAlaSBlc3RhcyAlSXQgc2VkIMWdYWpuYXMga2UgxJ1pIHZlcmUgZXN0YXMgdWpvLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gbGVnYWRvIHRyYSBhcmJvIGRlIGFtcGxla3NvaiBlbiBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisiTWFsc3VrY2VzaXMgaXRlcmFjaW8gamUgYW1wbGVrc29qIGVuIEBpICVpXG4iCisiICAgIChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzEKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSBoYXZhcyBtYWx2YWxpZGFuIGFtcGxla3NvblxuIgorIiAgICAobG9naWthIEBiICVjLCBAbiBmaXppa2EgQGIgJWIsIGxvbmdvICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGhhdmFzIG1hbHZhbGlkYW4gYW1wbGVrc29uXG4iCisiICAgIChsb2dpa2EgQGIgJWMsIGZpemlrYSBAYiAlYiwgQG4gbG9uZ28gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiQGkgJWkgaGF2YXMgamVzYW4gZmxhZ29uICdFWFRFTlRTX0ZMJyBlbiBkb3NpZXJzaXN0ZW1vIHNlbiBzdWJ0ZW5vIHBvciAiCisiYW1wbGVrc29qLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiQGkgJWkgZXN0YXMgZW4gYW1wbGVrc2EgYXJhbsSdbywgc2VkIEBTIG5lIGhhdmFzIGZ1bmtjaW9uICdFWFRFTlRTJ1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAiQGkgJWkgZXN0YXMgZW4gYW1wbGVrc2EgYXJhbsSdbywgc2VkIG5lIGhhdmFzICdFWFRFTlRfRkwnXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiUmFwaWRhIHNpbWJvbGEgbGlnbyAlaSBoYXZhcyBqZXNhbiBmbGFnb24gJ0VYVEVOVF9GTCcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYxCittc2dpZCAiIgorIkBpICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSBoYXZhcyBuZW9yZGFqbiBhbXBsZWtzb2puXG4iCisiICAgKEBuIGxvZ2lrYSBAYiAlYywgZml6aWthIEBiICViLCBsb25nbyAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjUKK21zZ2lkICJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIgorbXNnc3RyICJAaSAlaSBoYXZhcyBtYWx2YWxpZGFuIGFtcGxla3NhbiBub2RvbiAoYmxrICViLCBsYmxrICVjKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIkVyYXJvIGR1bSBrb252ZXJ0byBkZSBzdWJmYXNrYSBibG9rYSBAQjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJMYSBrdm90YSBAaSBuZSBlc3RhcyBub3JtYWxhIGRvc2llcm8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJMYSBrdm90YSBAaSBuZSB1emnEnWFzLCBzZWQgZW5oYXZhcyBkYXR1bW9qbi4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJMYSBrdm90YSBAaSBlc3RhcyB2aWRlYmxhIHBvciB1emFudG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICJMYSBtYWxib25ibG9rYSBAaSDFnWFqbmFzIEBuLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTk1Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGhhdmFzIG51bGxvbmdhbiBhbXBsZWtzb25cbiIKKyIgICAgKEBuIGxvZ2lrYSBAYiAlYywgZml6aWthIEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJAaSAlaSB0cm8gZ3JhbmRhcy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgaS1ub2RhIGJpdG1hcG8gbmUga29ua29yZGFzIGt1biBiaXRtYXBvIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBlc3RhcyBkaWZla3RhIChhc2lnbmEga29saXppbykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxOAorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkgaGF2YXMgbmVvcmRham4gYW1wbGVrc29qblxuIgorIiAgIChAbiBsb2dpa2EgQGIgJWMsIGZpemlrYSBAYiAlYiwgbG9uZ28gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAyNworbXNnaWQgIkBpICVpIEBhIEBiICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAYi4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiSW50ZXJuYSBhbXBsZWtzYSBub2RhIG5pdmVsbyAlTiBkZSBAaSAlaTpcbiIKKyJMb2dpa2Ega29tZW5jbyAlYiBuZSBrb25ncnVhcyBrdW4gbG9naWthIGtvbWVuY28gJWMgamUgcG9zdGEgbml2ZWxvLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSwgZmlubyBkZSBhbXBsZWtzbyB0cmFuc3Bhc2FzIHBlcm1lc2F0YW4gdmFsb3JvblxuIgorIiAgICAobG9naWthIEBiICVjLCBmaXppa2EgQGIgJWIsIGxvbmdvICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICJAaSAlaSBlc3RhcyBlbiBhbXBsZWtzYSBhcmFuxJ1vLCBzZWQgQFMgbmUgaGF2YXMgZnVua2Npb24gJ0VYVEVOVFMnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkBpICVpIGhhdmFzIGplc2FuIGZsYWdvbiAnSU5ERVhfRkwnIGVuIGRvc2llcnNpc3RlbW8gc2VuIHN1YnRlbm8gcG9yICIKKyInSFRSRUUnLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgImJsb2tvICViIGRlIHVqYSBAaSAlaSBkZXZ1cyBlc3RpIGplIGJsb2tvICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAidWphIEBpICVpIGhhdmFzIGFtcGxla3NvbiBtYXJraXRhbiBraWVsIHNlbiBwcmF2YWxvcml6byBqZSBAYiAlYy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICJAaSAlaSBoYXZhcyBqZXNhbiBmbGFnb24gJ0lOREVYX0ZMJyBzZWQgbmUgZXN0YXMgQGQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgJWkpIGhhcyBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVjaWFsYSBAaSAlaSAoYXBhcmF0by9rb25la3RpbG8vdmljbWVtb3JvKSBoYXZhcyBqZXNhbiBmbGFnb25cbiIKKyInaW1tdXRhYmxlJyBhxa0gJ2FwcGVuZC1vbmx5Jy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQEEgZGUgJ2ljb3VudCctYSBzdHJ1a3R1cm86ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkgaGF2YXMgbWFsdmFsaWRhbiBhbXBsZWtzb25cbiIKKyIgICAgKGxvZ2lrYSBAYiAlYywgQG4gZml6aWthIEBiICViLCBsb25nbyAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiQGIgJWIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBlc3RhcyBkaWZla3RhIChtYWx2YWxpZGEgbm9tbykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisiQWxkb25haiBwYcWdb2ogcG9yIHNvbHZpIGJsb2tvaiBraXVqIHBvc2VkYXRhcyBkZSBwbGkgb2wgdW51IGktbm9kby5cbiIKKyJQYcWdbyAxQjogUmVza2FuYWFkbyBwb3IgcGx1cm9ibGUgcG9zZWRhdGFqIGJsb2tvai4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAicGx1cm9ibGUgcG9zZWRhdGEoaikgYmxva28oaikgZW4gaS1ub2RvICVpOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gc2thbmFkbyBkZSBpLW5vZG9qICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiQEEgZGUgaS1ub2RhIEBCICgnaW5vZGVfZHVwX21hcCgpJyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkVyYXJvIGR1bSBpdGVyYWNpbyBqZSBibG9rb2ogZW4gQGkgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorIkVyYXJvIGR1bSBhbMSddXN0aWdvIGRlIHJlZmVyZW5jbm9tYnJvIHBvciBAYiAlYiBkZSBldGVuZGl0YWogYXRyaWJ1dG9qIChAaSAiCisiJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTk3Cittc2dpZCAiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIgorbXNnc3RyICIiCisiUGHFnW8gMUM6IFNrYW5hZG8gZGUgZG9zaWVydWpvaiBwb3IgaS1ub2RvaiBrdW4gcGx1cm9ibGUgcG9zZWRhdGFqIGJsb2tvai4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiUGHFnW8gMUQ6IFNvbHZhZG8gZGUgcGx1cm9ibGUgcG9zZWRhdGFqIGJsb2tvai4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyJEb3NpZXJvICVRIChAaSAlaSwgbW9kaWZhIHRlbXBvICVJTSkgXG4iCisiICBoYXZhcyAlciBwbHVyb2JsZSBwb3NlZGF0YShqKW4gYmxva28oailuLCBrdW5oYXZlIGt1biAlTiBkb3NpZXJvKGopOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXHQ8ZmlsZXN5c3RlbSBtZXRhZGF0YT5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE5Cittc2dpZCAiXHQ8QGYgbWV0YWRhdGE+XG4iCittc2dzdHIgIiAgICA8ZG9zaWVyc2lzdGVtYWogbWV0YWRhdHVtb2o+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihFa3ppc3RhcyAlTiBpLW5vZG9qIGtpdWogaGF2YXMgcGx1cm9ibGUgcG9zZWRhdGFqbiBibG9rb2puLilcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIyOQorbXNnaWQgIiIKKyJAbSBAYnMgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorInBsdXJvYmxlIHBvc2VkYXRhaiBibG9rb2ogamFtIHJlYXNpZ25pxJ1pcyBhxa0ga2xvbmnEnWlzLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAiTWFsc3VrY2VzaXMga2xvbmkgZG9zaWVyb246ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0OAorIywgZnV6enkKK21zZ2lkICJQYXNzIDFFOiBPcHRpbWl6aW5nIEB4IHRyZWVzXG4iCittc2dzdHIgIlBhxZ1vIDNBOiBPcHRpbXVtaWdvIGRlIGRvc2llcnVqb2ouLi5cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIEB4IHRyZWUgJXAgKCVpKTogJW1cbiIKK21zZ3N0ciAiRmlhc2tpcyBvcHRpbXVtaWdvIGRlIGRvc2llcnVqbyAlcSAoJWQpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKKyMsIGZ1enp5Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICJPcHRpbXVtaWdvIGRlIGRvc2llcnVqb2o6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIlBhxZ1vIDI6IEtvbnRyb2xvIGRlIGRvc2llcnVqYSBzdHJ1a3R1cm8uLi5cbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJAbiBAaSBudW1iZXIgZm9yICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiQG4gaS1ub2RhIG51bWVybyBwb3IgJy4nIGVuIHVqYSBAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgIkBFIGhhdmFzIG1hbHZhbGlkYW4gaS1ub2RhbiBub21icm9uOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkBFIGhhdmFzIGZvcmlnaXRhbi9uZXV6YXRhbiBpLW5vZG9uICVEaS4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJARSBATCBhbCAnLicgICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIkBFIHJlZmVyZW5jYXMgYWwgQGkgKCVEaSkga2l1IGVzdGFzIGVuIG1hbGJvbmEgYmxva28uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAlUCAoJURpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzIwCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgIkBFIEBMIGFsIEBkICVQICglRGkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1Cittc2dpZCAiQEUgQEwgdG8gdGhlIEByLlxuIgorbXNnc3RyICJARSBATCBhbCBAci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJARSBoYXZhcyBuZXZhbGlkYWpuIHNpZ25vam4gZW4gc2lhIG5vbW8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJNYW5rYXMgJy4nIGVuIHVqYSBAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiTWFua2FzICcuLicgZW4gdWphIEBpICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIlVudWEgQGUgJyVEbicgKEBpPSVEaSkgZW4gdWphIEBpICVpICglcCkgQHMgJy4nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiRHVhIEBlICclRG4nIChAaT0lRGkpIGVuIHVqYSBAaSAlaSBAcyAnLi4nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmFkZHIgZm9yIGlub2RlICVpICglUSkgaXMgJUlGLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzU1Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgIidpX2ZhZGRyJyBARiAlSUYsIEBzIG51bG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlmLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYwCittc2dpZCAiaV9maWxlX2FjbCBARiAlSWYsIEBzIHplcm8uXG4iCittc2dzdHIgIidpX2ZpbGVfYWNsJyBARiAlSWYsIEBzIG51bG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICInaV9kaXJfYWNsJyBARiAlSWQsIEBzIG51bG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3MAorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiJ2lfZnJhZycgQEYgJU4sIEBzIG51bG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnNpemUgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzUKK21zZ2lkICJpX2ZzaXplIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICInaV9mc2l6ZScgQEYgJU4sIEBzIG51bG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAiQGkgJWkgKCVRKSBoYXZhcyBuZXZhbGlkYW4gbW9kdXNvbiAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAidWphIEBpICVpLCAlQiwgcG96aWNpbyAlTjogQGQgZGlmZWt0YXNcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAidWphIEBpICVpLCAlQiwgcG96aWNpbyAlTjogZG9zaWVybm9tbyB0cm8gbG9uZ2FzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAidWphIEBpICVpIGhhdmFzIG5lYXNpZ25hdGFuICVCLiAgIgorCisjLiBALWV4cGFuZGVkOiAnLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwMAorIywgYy1mb3JtYXQKK21zZ2lkICInLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJ1amEgQGUgJy4nIGVuIHVqYSBAaSAlaSBuZSBmaW5pxJ1hcyBwZXIgTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgInVqYSBAZSAnLi4nIGVuIHVqYSBAaSAlaSBuZSBmaW5pxJ1hcyBwZXIgTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgIkBpICVpICglUSkgZXN0YXMgQEkgc2lnbm8tYXBhcmF0by5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGJsb2NrIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDE1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBAYiBAdi5cbiIKK21zZ3N0ciAiQGkgJWkgKCVRKSBlc3RhcyBASSBibG9rYXBhcmF0by5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjAKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJARSBlc3RhcyBkdW9ibGEgQGUgJy4nLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLi4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjUKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4uJyBAZS5cbiIKK21zZ3N0ciAiQEUgZXN0YXMgZHVvYmxhIEBlICcuLicuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzMCBlMmZzY2svcHJvYmxlbS5jOjE3NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGZpbmQgZGlyX2luZm8gZm9yICVpLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkBFIGhhdmFzICdyZWNfbGVuJyAlRHIsIEBzICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICJAQSBkZSAnaWNvdW50Jy1hIHN0cnVrdHVybzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRXJhcm8gZHVtIGl0ZXJhY2lvIGplIHVqYWogYmxva29qOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVyYXJvIGR1bSBsZWdhZG8gZGUgdWphIGJsb2tvICViIChpLW5vZG8gJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVyYXJvIGR1bSBza3JpYmFkbyBkZSB1amEgYmxva28gJWIgKGktbm9kbyAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayBmb3IgaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiQEEgZGUgbm92YSB1amEgQGIgcG9yIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgInVqYSBAZSBwb3IgJy4nIGVuICVwICglaSkgZXN0YXMgZ3JhbmRhLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGVzdGFzIEBJIHZpY21lbW9yby5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkBpICVpICglUSkgZXN0YXMgQEkga29uZWt0aWxvLlxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHRvICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAiQWdvcmRpxJ1hcyBkb3NpZXJ0aXBvIHBvciBARSBhbCAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBzaG91bGQgYmUgJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIkBFIGhhdmFzIG1hbMSddXN0YW4gZG9zaWVydGlwb24gKGVzdGFzICVEdCwgQHMgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkBFIGhhdmFzIGRvc2llcnRpcG9uIGFnb3JkaXRhLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwMAorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgIkBFIGhhdmFzIG5vbW9uIGt1biBudWxhIGxvbmdvLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIlNpbWJvbGEgbGlnbyAlUSAoQGkgJWkpIG1hbHZhbGlkYXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAiQGIgZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBARiBtYWx2YWxpZGEgKCVJZikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1Cittc2dpZCAiQGYgY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gQFMuXG4iCittc2dzdHIgIiIKKyJAZiBlbmhhdmFzIGdyYW5kYWpuIGRvc2llcm9qbiwgc2VkIG1hbGplc2FzIGZsYWdvICdMQVJHRV9GSUxFJyBlbiBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgbmUgcmVmZXJlbmNpxJ1hc1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgcmVmZXJlbmNpxJ1hcyBkdW9ibGVcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIGhhdmFzIG1hbHZhbGlkYW4gbWluaW11bWFuIGhha2V0b25cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIGhhdmFzIG1hbHZhbGlkYW4gbWFrc2ltdW1hbiBoYWtldG9uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkBuIEBoICVkICglcSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIkBwIEBoICVkICglcSk6IG1hbHZhbGlkYSBibG9rbnVtZXJvICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IHJhZGlrYSBub2RvIGVzdGFzIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBsaW1pdCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgaGF2YXMgbWFsdmFsaWRhbiBsaW1vbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBjb3VudCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gY291bnQgKCVOKVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgaGF2YXMgbWFsdmFsaWRhbiBub21icm9uICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIkBwIEBoICVkOiAlQiBoYXZhcyBuZW9yZGlnaXRhbiBoYWtldGFuIHRhYmVsb25cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGRlcHRoICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBkZXB0aCAoJU4pXG4iCittc2dzdHIgIkBwIEBoICVkOiAlQiBoYXZhcyBtYWx2YWxpZGFuIHByb2Z1bmRvbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIkR1b2JsYSBARSB0cm92acSdaXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisiQEUgaGF2YXMgbmV1bmlrYW4gZG9zaWVybm9tb24uXG4iCisixIh1IGFsaW5vbWkgYWwgJXMiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkR1b2JsYSBAZSAnJURuJyB0cm92acSdaXMuXG4iCisiICAgIE1hcmtpxJ1hcyAlcCAoJWkpIHBvciByZWtvbnN0cnVvLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICInaV9ibG9ja3NfaGknIEBGICVOLCBAcyBudWxvLlxuIgorCisjLiBALWV4cGFuZGVkOiBVbmV4cGVjdGVkIGJsb2NrIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTkKK21zZ2lkICJVbmV4cGVjdGVkIEBiIGluIEBoICVkICglcSkuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBpbiBncm91cCAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAzCittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgaW4gQGcgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4iCittc2dzdHIgIkBFIHJlZmVyZW5jYXMgaS1ub2RvbiAlRGkgZW4gQGcgJWcga2llIGplc2FzICdfSU5PREVfVU5JTklUJy5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIkBFIHJlZmVyZW5jYXMgaS1ub2RvbiAlRGkga2l1IHRyb3ZpxJ1hcyBqZSBuZXV6YXRhaiBpLW5vZG9qIGRlIEBnICVnLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiJ2lfZmlsZV9hY2xfaGknIEBGICVOLCBAcyBudWxvLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkBwIEBoICVkOiByYWRpa2Egbm9kbyBlc3RhcyBAblxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IHJhZGlrYSBub2RvIGVzdGFzIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgInVqYSBAaSAlaSwgJUIsIHBvemljaW8gJU46IEBkIGRpZmVrdGFzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJQYcWdbyAzOiBLb250cm9sbyBkZSBrb25la3RvaiBpbnRlciBkb3NpZXJ1am9qLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiQHIgbmUgYXNpZ25hdGFzLiAgIgorCisjLiBALWV4cGFuZGVkOiBObyByb29tIGluIGxvc3QrZm91bmQgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjUKK21zZ2lkICJObyByb29tIGluIEBsIEBkLiAgIgorbXNnc3RyICJOZSBlc3RhcyBwbHUgZGEgc3BhY28gZW4gZG9zaWVydWpvICdAbCcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIk5la29uZWt0aXRhIGRvc2llcnVqYSBAaSAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL0BsIG5lIHRyb3ZpxJ1pcy4gICIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAiJy4uJyBlbiAlUSAoJWkpIGVzdGFzICVQICglaiksIGRldnVzIGVzdGkgJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiTWFsYm9uYXMgYcWtIG5lIGVremlzdGFzIC9AbC4gIE5lIGVibGFzIHJla29uZWt0aS5cbiIKKworIy4gQC1leHBhbmRlZDogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBleHBhbmQgL0BsOiAlbVxuIgorbXNnc3RyICJNYWxzdWtjZXNpcyBldGVuZGkgL0BsOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlY29ubmVjdCAlaTogJW1cbiIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgcmVrb25la3RpICVpOiBtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gc2VyxIlvIGRlIC9AbDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfYmxvY2soKTogJW0gZHVtIGtyZWFkbyBkZSBkb3NpZXJ1am8gL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2lub2RlKCk6ICVtIGR1bSBrcmVhZG8gZGUgZG9zaWVydWpvIC9AbFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Rpcl9ibG9jaygpOiAlbSBkdW0ga3JlYWRvIGRlIG5vdmEgdWphIGJsb2tvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiZXh0MmZzX3dyaXRlX2Rpcl9ibG9jaygpOiAlbSBkdW0gc2tyaWJhZG8gZGUgdWphIGJsb2tvIHBvciAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiRXJhcm8gZHVtIGFsxJ11c3RpZ28gZGUgaS1ub2RhIG5vbWJybyBqZSBpLW5vZG8gJWlcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5lIGVibGFzIGZpa3NpIHBhZHJvbiBkZSBAaSAlaTogbWFsZWJsaXMgdHJvdmkgdWplcm9uIHBvciBwYWRyb1xuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgcm9vdCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0ga3JlYWRvIGRlIHJhZGlrYSBkb3NpZXJ1am8gKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiRXJhcm8gZHVtIGtyZWFkbyBkZSBkb3NpZXJ1am8gL0BsICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJAciBuZSBlc3RhcyBkb3NpZXJ1am8gLS0gxIllc2lnby5cbiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc2MAorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSBAci5cbiIKK21zZ3N0ciAiTmUgZWJsYXMgZGHFrXJpZ2kgc2VuIEByLlxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBub3QgYSBkaXJlY3RvcnkgKGlubz0laSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIi9AbCBpcyBub3QgYSBAZCAoaW5vPSVpKVxuIgorbXNnc3RyICIvQGwgbmUgZXN0YXMgZG9zaWVydWpvIChpLW5vZG89JWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvbG9zdCtmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODAKK21zZ2lkICIiCisiQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvQGwuXG4iCisiUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4KKyMuIEAtZXhwYW5kZWQ6IE1vdmUgZGF0YSBvZmYgdGhlIGZpbGVzeXN0ZW0gYW5kIHJlLXJ1biBlMmZzY2suXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODUKK21zZ2lkICIiCisiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbiIKKyJNb3ZlIGRhdGEgb2ZmIHRoZSBAZiBhbmQgcmUtcnVuIGUyZnNjay5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkwCisjLCBmdXp6eQorbXNnaWQgIi9AbCBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiQmlsZG8gKCVzKSBlc3RhcyDEiWlmcml0YVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIlBhxZ1vIDNBOiBPcHRpbXVtaWdvIGRlIGRvc2llcnVqb2ouLi5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiRmlhc2tpcyBvcHRpbXVtaWdvIGRlIGRvc2llcnVqbyAlcSAoJWQpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgIk9wdGltdW1pZ28gZGUgZG9zaWVydWpvajogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAiUGHFnW8gNDogS29udHJvbG8gZGUgbm9tYnJvaiBkZSByZWZlcmVuY29qLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiQHUgQGkgJWkga3VuIG51bGEgbG9uZ28uICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIkB1IEBpICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgInJlZmVyZW5jbm9tYnJvIGRlIEBpICVpIGVzdGFzICVJbCwgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiKipBVkVSVE8qKjogZWJsYSBwcm9ncmFtbWlzbyBlbiAnZTJmc2NrJywgYcWtIHBsaSBwcm9iYWJsZVxuIgorIiAgICBJVSBTVFVMVFVMTyAodmkpIGtvbnRyb2xhcyBWSVZBTiAoU1VSTUVUQVRBTikgRE9TSUVSU0lTVEVNT04uXG4iCisiXG4iCisiaW5vZGVfbGlua19pbmZvWyVpXSBlc3RhcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBlc3RhcyAlSWwgLS0gaWxpIGRldnVzICIKKyJlZ2FsaSFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICJQYcWdbyA1OiBLb250cm9sbyBkZSBncnVwYSByZXN1bWEgaW5mb3Jtby4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIsWcdG9wYWRvIGplIGZpbm8gZGUgaS1ub2RhIGJpdG1hcG8gbmUgYWdvcmRpxJ1hcy4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIsWcdG9wYWRvIGplIGZpbm8gZGUgYmxva2EgYml0bWFwbyBuZSBhZ29yZGnEnWFzLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJNYWxzYW1vaiBlbiBibG9rYSBiaXRtYXBvOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJNYWxzYW1vaiBlbiBpLW5vZGEgYml0bWFwbzogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorIk5vbWJybyBkZSBsaWJlcmFqIGktbm9kb2ogbWFsxJ11c3RhcyBwb3IgZ3J1cG8gJWcgKGVzdGFzICVpLCBub21icmnEnWlzICVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTgKK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKyJOb21icm8gZGUgZG9zaWVydWpvaiBtYWzEnXVzdGFzIHBvciBncnVwbyAlZyAoZXN0YXMgJWksIG5vbWJyacSdaXMgJWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJOb21icm8gZGUgbGliZXJhaiBpLW5vZG9qIG1hbMSddXN0YXMgKGVzdGFzICVpLCBub21icmnEnWlzICVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIiIKKyJOb21icm8gZGUgbGliZXJhaiBibG9rb2ogbWFsxJ11c3RhcyBwb3IgZ3J1cG8gJWcgKGVzdGFzICViLCBub21icmnEnWlzICVjKVxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJOb21icm8gZGUgbGliZXJhaiBibG9rb2ogbWFsxJ11c3RhcyAoZXN0YXMgJWIsIG5vbWJyacSdaXMgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0ga29waWFkbyBkZSBhbnN0YXRhxa1hIGktbm9kYSBAQjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBiIEBCOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0ga29waWFkbyBkZSBhbnN0YXRhxa1hIGJsb2thIEBCOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisiQGcgJWcgaGF2YXMgYmxva29qbiB1emF0YWpuLCBzZWQgbGEgQGcgZXN0YXMgbWFya2l0YSBraWVsICdCTE9DS19VTklOSVQnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKyJAZyAlZyBoYXZhcyBpLW5vZG9qbiB1emF0YWpuLCBzZWQgbGEgQGcgZXN0YXMgbWFya2l0YSBraWVsICdJTk9ERV9VTklOSVQnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY3JlYXRlIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwMQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICLEiHUgcmVrcmVpIGthxZ1wcm90b2tvbG9uIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDYKK21zZ2lkICJVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTiIKK21zZ3N0ciAixIh1IMSdaXNkYXRpZ2kga3ZvdGFuIGluZm9ybW9uIHBvciBrdm90dGlwbyAlTiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICJFcmFybyBkdW0gYWdvcmRvIGRlIGJsb2tncnVwYSBrb250cm9sc3VtbzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRXJhcm8gZHVtIHNrcmliYWRvIGRlIGRvc2llcnNpc3RlbWEgaW5mb3JtbzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiRXJhcm8gZHVtIGVsYnVmcmlnbyBkZSBza3JpYm9qIGFsIG1lbW9yYXBhcmF0bzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAixIh1IMSdaXNkYXRpZ2kga3ZvdGFuIGluZm9ybW9uIHBvciBrdm90dGlwbyAlTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiTmV0cmFrdGF0YSBlcmFya29kbyAoMHgleCkhXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICJJR05PUknEnElTIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIlV6YXRhIG1lbW9ybzogJWQsIHBhc2ludGEgdGVtcG86ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAiZ3JhbmRvIGRlIGktbm9kbz0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJkdW0ga29tZW5jbyBkZSBza2FubyBkZSBpLW5vZG9qIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICJkdW0gc2thbmFkbyBkZSBpLW5vZG9qIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgImR1bSBhbHZva28gZGUgJ2V4dDJmc19ibG9ja19pdGVyYXRlKCknIHBvciBpLW5vZG8gJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjIxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAiZHVtIGFsdm9rbyBkZSAnZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIoKScgcG9yIGktbm9kbyAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiVHJ1bmtpxJ1hcyIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIlZpxZ1pxJ1hcyIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiVXptYW5pZXJvOiAgJXMgWy1wbnljZmt0dkRGVl0gWy1iIMSJZWZibG9rb10gWy1CIGJsb2tncmFuZG9dXG4iCisiICAgICAgICAgICAgICAgICAgIFstQyBkb3NpZXJwcmlhxLVvXSBbLUUgZXRlbmRpdGFqX29wY2lval1cbiIKKyIgICAgICAgICAgICAgICAgICAgWy1JIGlfbm9kYV9idWZyb2Jsb2tval0gWy1qIGVrc3RlcmFfa2HFnXByb3Rva29sb11cbiIKKyIgICAgICAgICAgICAgICAgICAgWy1sfC1MIG1hbGJvbmJsb2thX2Rvc2llcm9dICBhcGFyYXRvXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODIKK21zZ2lkICIiCisiXG4iCisiRW1lcmdlbmN5IGhlbHA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpYyByZXBhaXIgKG5vIHF1ZXN0aW9ucylcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlc3lzdGVtXG4iCisiIC15ICAgICAgICAgICAgICAgICAgIEFzc3VtZSBcInllc1wiIHRvIGFsbCBxdWVzdGlvbnNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQ2hlY2sgZm9yIGJhZCBibG9ja3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBiYWRibG9jayAiCisibGlzdFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZSBjaGVja2luZyBldmVuIGlmIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGNsZWFuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJLcml6YSBoZWxwbzpcbiIKKyIgLXAgICAgYcWtdG9tYXRlIHJpcGFyaSAoc2VuIGRlbWFuZG9qKVxuIgorIiAtbiAgICBuZW5pZWwgxZ1hbsSdaSBsYSBkb3NpZXJzaXN0ZW1vblxuIgorIiAteSAgICBzdXBvemkgJ2plcycgamUgxIlpdSBkZW1hbmRvXG4iCisiIC1jICAgIGtvbnRyb2xpIHBvciBtYWxib25haiBibG9rb2oga2FqIGFsZG9uaSBpbGluIGFsIG1hbGJvbmJsb2thIGxpc3RvXG4iCisiIC1mICAgIGRldmlnaSBrb250cm9sb24sIGXEiSBzZSBkb3NpZXJzaXN0ZW1vIGVzdGFzIG1hcmtpdGEga2llbCBwdXJhXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKKyMsIGZ1enp5Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiIC12ICAgIGVsaWdpIGRldGFsb2puIHByaSBsYSBmYXJhZG9cbiIKKyIgLWIgPG51bWVybz4gICAgICAgIHV6ZW5kYSBhbHRlcm5hdGl2YSDEiWVmYmxva29cbiIKKyIgLUIgPG5vbWJybz4gICAgICAgIGRldmlnYSBibG9rZ3JhbmRvIGR1bSBzZXLEiW8gZGUgxIllZmJsb2tvXG4iCisiIC1qIDxwYWRvPiAgICAgICAgICBsb2tvIGRlIGxhIGVrc3RlcmEga2HFnXByb3Rva29sb1xuIgorIiAtbCA8ZG9zaWVybm9tbz4gICAgYWxkb25pIGFsIG1hbGJvbmJsb2thIGxpc3RvXG4iCisiIC1MIDxkb3NpZXJub21vPiAgICB1emVuZGEga2llbCBtYWxib25ibG9rYSBsaXN0b1xuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJXUvJXUgZG9zaWVyb2ogKCUwZC4lZCUlIG5la29udGludWEpLCAlbGx1LyVsbHUgYmxva29qXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IGlub2RlIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgaW5vZGVzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgaS1ub2RvIHV6aXRhICglMi4yZiUlLCBlbCBkZSAldSlcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgaS1ub2RvaiB1eml0YWogKCUyLjJmJSUsIGVsIGRlICV1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGUgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBuZWtvbnRpbnVhIGRvc2llcm8gKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1IG5la29udGludWFqIGRvc2llcm9qICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBuZWtvbnRpbnVhIGRvc2llcnVqbyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgbmVrb250aW51YWogZG9zaWVydWpvaiAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICAgIG5vbWJybyBkZSBpLW5vZG9qIGt1biBuZXJla3RhaiBibG9rb2o6ICV1IHNpbXBsZSwgJXUgZHVvYmxlLCAldSAiCisidHJpb2JsZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiAgICAgICAgICAgICBoaXN0b2dyYW1vIGRlIGFtcGxla3NhIHByb2Z1bmRvOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IGJsb2tvIHV6aXRhICglMi4yZiUlLCBlbCBkZSAlbGx1KVxuIgorbXNnc3RyWzFdICIlMTJsbHUgYmxva29qIHV6aXRhaiAoJTIuMmYlJSwgZWwgZGUgJWxsdSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBiYWQgYmxvY2tcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBiYWQgYmxvY2tzXG4iCittc2dzdHJbMF0gIiUxMnUgZGlmZWt0YSBibG9rb1xuIgorbXNnc3RyWzFdICIlMTJ1IGRpZmVrdGFqIGJsb2tvalxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGdyYW5kYSBkb3NpZXJvXG4iCittc2dzdHJbMV0gIiUxMnUgZ3JhbmRhaiBkb3NpZXJvalxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBub3JtYWxhIGRvc2llcm9cbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgbm9ybWFsYWogZG9zaWVyb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBkaXJlY3RvcnlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBkaXJlY3Rvcmllc1xuIgorbXNnc3RyWzBdICIlMTJ1IGRvc2llcnVqb1xuIgorbXNnc3RyWzFdICIlMTJ1IGRvc2llcnVqb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgc2lnbm8tYXBhcmF0b1xuIgorbXNnc3RyWzFdICIlMTJ1IHNpZ25vLWFwYXJhdG9qXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBibG9rYXBhcmF0b1xuIgorbXNnc3RyWzFdICIlMTJ1IGJsb2thcGFyYXRvalxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpZm9cbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWZvc1xuIgorbXNnc3RyWzBdICIlMTJ1IHZpY21lbW9yb1xuIgorbXNnc3RyWzFdICIlMTJ1IHZpY21lbW9yb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBsaWdvXG4iCittc2dzdHJbMV0gIiUxMnUgbGlnb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IHNpbWJvbGEgbGlnbyIKK21zZ3N0clsxXSAiJTEydSBzaW1ib2xhaiBsaWdvaiIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSByYXBpZGEgc2ltYm9sYSBsaWdvKVxuIgorbXNnc3RyWzFdICIgKCV1IHJhcGlkYWogc2ltYm9sYWogbGlnb2opXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IGtvbmVrdGlsb1xuIgorbXNnc3RyWzFdICIlMTJ1IGtvbmVrdGlsb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBkb3NpZXJvXG4iCittc2dzdHJbMV0gIiUxMnUgZG9zaWVyb2pcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgImR1bSBlbHRyb3ZvIHNlICVzIGVzdGFzIHN1cm1ldGF0YS4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICJBdmVydG8hICAlcyBlc3RhcyBzdXJtZXRhdGEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIkF2ZXJ0byEgICVzIHV6acSdYXMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIGVzdGFzIHN1cm1ldGF0YS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyB1emnEnWFzLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTmUgZWJsYXMgZGHFrXJpZ2kgLS0gxIllc2lnby5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIqKkFWRVJUTyoqISEgIExhIGRvc2llcnNpc3RlbW8gZXN0YXMgc3VybWV0YXRhISFcbiIKKyIgICAgU2Ugdmkga29udGludWFzLCB2aSAqKktBxaxaT1MqKiAqKlNFVkVSQUpOKiogZG9zaWVyc2lzdGVtYWpuIGRpZmVrdG9qbi5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIsSIdSB2aSB2ZXJlIHZvbGFzIGtvbnRpbnVpIgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgImtvbnRyb2xvIMSJZXNpZ2nEnWlzLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgZW5oYXZhcyBkb3NpZXJzaXN0ZW1vbiBrdW4gZXJhcm9qIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgbmUgZGVtZXRpxJ1pcyB0dXRrb3Jla3RlIgorCisjOiBlMmZzY2svdW5peC5jOjM3NQorbXNnaWQgIiBwcmltYXJ5IHN1cGVyYmxvY2sgZmVhdHVyZXMgZGlmZmVyZW50IGZyb20gYmFja3VwIgorbXNnc3RyICIgdW51YSDEiWVmYmxva28gaGF2YXMgYWxpYWpuIGZ1bmtjaW9qbiBvbCBzYXZrb3BpYSIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgc3VybWV0acSdaXMgJXUgZm9qb2puIHNlbiBlc3RpIGtvbnRyb2xhdGEiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiBoYXZhcyB0ZW1wb24gZGUga29udHJvbG8gZW4gbGEgZXN0b250ZWNvIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBwYXNpcyAldSB0YWdvam4gc2VuIGtvbnRyb2xvIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICI7IHBlcmZvcnRhIGtvbnRyb2xvLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjQzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogcHVyYSwgJXUvJXUgZG9zaWVyb2osICVsbHUvJWxsdSBibG9rb2oiCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAoa29udHJvbG8gcHJva3Jhc3Rpczsgc3VyIGJhdGVyaW8pIgorCisjIEZJWE1FOiBtYXliZSAqdXBvbiogbmV4dCBtb3VudD8KKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChrb250cm9sacSdb3MgamUgc2VrdmEgc3VybWV0bykiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIiAoa29udHJvbGnEnW9zIGVuICVsZCBzdXJtZXRvaikiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIkVyYXJvOiBmaWFza2lzIG1hbGZlcm1pIC9kZXYvbnVsbCAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJNYWx2YWxpZGEgdmVyc2lvIGRlIEVBLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjY5MgorIywgZnV6enkKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiTWFsdmFsaWRhIGFyZ3VtZW50byBwb3IgJ3Jlc2l6ZSc6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJOZWtvbmF0YSBldGVuZGl0YSBvcGNpbzogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgdmFsaWRhdGluZyBmaWxlIGRlc2NyaXB0b3IgJWQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo4MjkKK21zZ2lkICJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6ODQ0Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTg2Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo5OTIKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEwNDYKK21zZ2lkICJUaGUgLWMgYW5kIHRoZSAtbC8tTCBvcHRpb25zIG1heSBub3QgYmUgYm90aCB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTEwMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSW52YWxpZCBub24tbnVtZXJpYyBhcmd1bWVudCB0byAtJWMgKFwiJXNcIilcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyMzIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2siCittc2dzdHIgImR1bSBsZWdhZG8gZGUga2HFnXByb3Rva29sYSDEiWVmYmxva28iCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTQwNQorbXNnaWQgIm5lZWQgdGVybWluYWwgZm9yIGludGVyYWN0aXZlIHJlcGFpcnMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIsSIZWZibG9rbyBuZXZhbGlkYXMsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiR3J1cHByaWHEtW9qIGFzcGVrdGFzIG1hbGJvbmFqLi4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlczogJXMgZHVtIHV6YWRvIGRlIHNhdmtvcGlhaiBibG9rb2oiCisKKyM6IGUyZnNjay91bml4LmM6MTQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIiVzOiByZWlyacSdYXMgYWwgb3JpZ2luYWxhIMSJZWZibG9rb1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTIKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgYXBwYXJlbnRseSB0b28gaGlnaCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKKyIoT3IgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayBpcyBjb3JydXB0KVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIsSIdSBlYmxlIMSJaSB0aXUgZXN0YXMgbnVsbG9uZ2Egc3ViZGlza28/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIlZpIGJlem9uYXMgaGF2aSAlcyBhdGluZ29uIGFsIGxhIGRvc2llcnNpc3RlbW8sIGHFrSBlc3RpIMSJZWZ1emFudG9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICLEiHUgZWJsZSBhcGFyYXRvIG5lIGVremlzdGFzIGHFrSBlc3RhcyAnc3dhcCc/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIsSIdSBlYmxlIGFwYXJhdG8gbmUgZWt6aXN0YXM/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICJkdW0ga29udHJvbGFkbyBkZSBFeHQzLWthxZ1wcm90b2tvbG8gcG9yICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiTmUgZWJsYXMgZGHFrXJpZ2kgc2VuIEByLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisiQXZlcnRvOiB0cmFuc3NhbHRpxJ1hcyBrYcWdcHJvdG9rb2xhIHJlc3Rhxa1ybywgxIlhciBmYXJpxJ1hcyBudXJsZWdhIGtvbnRyb2xvIGRlICIKKyJkb3NpZXJzaXN0ZW1vLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIkthxZ1wcm90b2tvbGEgxIllZmJsb2tvIG5lIHRyb3ZpxJ1pcyFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICJLYcWdcHJvdG9rb2xvIGZvcmlnacSdaXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWNvdmVyaW5nIGpvdXJuYWwgb2YgJXMiCittc2dzdHIgImR1bSByZXN0YcWtcmFkbyBkZSBFeHQzLWthxZ1wcm90b2tvbG8gcG9yICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyBkdW0gbGVnYWRvIGRlIG1hbGJvbmJsb2thIGktbm9kb1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIKK21zZ3N0ciAiS3JlYWRvIGRlIGthxZ1wcm90b2tvbG8gKCVkIGJsb2tvaik6ICIKKworIzogZTJmc2NrL3VuaXguYzoxODI4Cittc2dpZCAiIERvbmUuXG4iCittc2dzdHIgIiBQcmV0YXMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKioga2HFnXByb3Rva29sbyByZWtyZWnEnWlzIC0tIGRvc2llcnNpc3RlbW8gZXN0YXMgZGVub3ZlIGV4dDMgKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzNgorbXNnaWQgImFib3J0ZWQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxODY5Cittc2dpZCAid2hpbGUgcmVzZXR0aW5nIGNvbnRleHQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiBET1NJRVJTSVNURU1PIE1PRElGScScSVMgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIgorbXNnc3RyICIlczogKioqKiogUkVTVEFSVElHVSBMSU5VS1NPTiAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIEFWRVJUTzogRG9zaWVyc2lzdGVtbyBhbmtvcmHFrSBlbmhhdmFzIGVyYXJvam4gKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJqSnlZIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICJuTiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTYKK21zZ2lkICJhQSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NworbXNnaWQgIiAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjxqPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxuPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIiAoai9uKSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAiamVzXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAibmVcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyBub1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IG5lXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8geWVzXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gamVzXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJqZXMiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgIm5lIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzozMzEKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MzM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdSwgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NDQwCisjLCBjLWZvcm1hdAorbXNnaWQgInRpbWU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NDgwIGUyZnNjay91dGlsLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6NzY1Cittc2dpZCAiIgorIlVORVhQRUNURUQgSU5DT05TSVNURU5DWTogdGhlIGZpbGVzeXN0ZW0gaXMgYmVpbmcgbW9kaWZpZWQgd2hpbGUgZnNjayBpcyAiCisicnVubmluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgIgorIm1heF9iYWRfYmxvY2tzXVxuIgorIiAgICAgICBbLXAgbnVtX3Bhc3Nlc10gWy10IHRlc3RfcGF0dGVybiBbLXQgdGVzdF9wYXR0ZXJuIFsuLi5dXV1cbiIKKyIgICAgICAgZGV2aWNlIFtsYXN0X2Jsb2NrIFtmaXJzdF9ibG9ja11dXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiUlIGZhcmnEnWlzLCAlcyBwYXNpcy4gKCVkLyVkLyVkIGVyYXJvaikiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzI4Cittc2dpZCAiVGVzdGluZyB3aXRoIHJhbmRvbSBwYXR0ZXJuOiAiCittc2dzdHIgIlRlc3RhbnRlIGt1biBoYXphcmRhIGFyYW7EnW86ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiVGVzdGFudGUga3VuIGFyYW7EnW8gMHgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJTdHJhbmdhIHZhbG9ybyAoJWxkKSBlbiAnZG9fcmVhZCgpJ1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ3NgorbXNnaWQgImR1cmluZyBleHQyZnNfc3luY19kZXZpY2UiCittc2dzdHIgImR1bSAnZXh0MmZzX3N5bmNfZGV2aWNlKCknIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgImR1bSBrb21lbmNvIGRlIGl0ZXJhY2lvIGplIG1hbGJvbmJsb2thIGxpc3RvIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxMSBtaXNjL2JhZGJsb2Nrcy5jOjYxMSBtaXNjL2JhZGJsb2Nrcy5jOjc2OQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVycyIKK21zZ3N0ciAiZHVtIGFzaWdubyBkZSBidWZyb2oiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIktvbnRyb2xhbnRlIGJsb2tvam4gJWx1IGFsICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyMAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtb25seSBtb2RlXG4iCittc2dzdHIgIktvbnRyb2xhbnRlIHBvciBtYWxib25haiBibG9rb2ogZW4gbnVybGVnYSBtb2R1c29cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjkKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyAocmVhZC1vbmx5IHRlc3QpOiAiCittc2dzdHIgIktvbnRyb2xhbnRlIHBvciBtYWxib25haiBibG9rb2ogKG51cmxlZ2EgdGVzdG8pOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTM2IG1pc2MvYmFkYmxvY2tzLmM6NjQzIG1pc2MvYmFkYmxvY2tzLmM6Njg1CisjOiBtaXNjL2JhZGJsb2Nrcy5jOjgzMgorbXNnaWQgIlRvbyBtYW55IGJhZCBibG9ja3MsIGFib3J0aW5nIHRlc3RcbiIKK21zZ3N0ciAiVHJvIG11bHRhaiBtYWxib25haiBibG9rb2ogLS0gxIllc2lnbyBkZSB0ZXN0b1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJLb250cm9sYW50ZSBwb3IgbWFsYm9uYWogYmxva29qIGVuIGxlZ2Etc2tyaWJhIG1vZHVzb1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYyMCBtaXNjL2JhZGJsb2Nrcy5jOjc4MgorIywgYy1mb3JtYXQKK21zZ2lkICJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiRGUgYmxva28gJWx1IGFsICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICJMZWdhbnRlIGthaiBrb21wYXJhbnRlOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJLb250cm9sYW50ZSBwb3IgbWFsYm9uYWogYmxva29qIGVuIG5lZGV0cnVhIGxlZ2Etc2tyaWJhIG1vZHVzb1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICJLb250cm9sYW50ZSBwb3IgbWFsYm9uYWogYmxva29qIChuZWRldHJ1YSBsZWdhLXNrcmliYSB0ZXN0bylcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIkludGVycm9tcG8gYWx2ZW5pcyAtLSBvcmRpZ2FudGVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJkdW0gdGVzdGEgZGF0dW1hIHNrcmlibywgYmxva28gJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBlc3RhcyBzdXJtZXRhdGE7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIidiYWRibG9ja3MnIHRhbWVuIHBlcmZvcnRpxJ1hcy4gIEVzcGVydSBrZSAvZXRjL210YWIgxJ11c3Rhcy5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICJuZSBlc3RhcyBzZW5kYW7EnWVyYSBydWxpICdiYWRibG9ja3MnIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMgxZ1ham5lIHV6acSdYXMgcGVyIGxhIHNpc3RlbW87ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIidiYWRibG9ja3MnIHRhbWVuIHBlcmZvcnRpxJ1hcy5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxNQorbXNnaWQgImxhc3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjIxCittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIgorbXNnc3RyICJVem1hbmllcm86ICAlcyBbLVJWZl0gWy0rPUFhQ2NEZGVpalNzVHR1XSBbLXYgVkVSU0lPXSBET1NJRVJPLi4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgcHJvamVjdCAtICVzXG4iCittc2dzdHIgIm1hbGJvbmEgdmVyc2lvIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJtYWxib25hIHZlcnNpbyAtICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjE5IG1pc2MvbHNhdHRyLmM6MTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzdGF0ICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzoyMzEgbWlzYy9jaGF0dHIuYzoyNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZ3Mgb2YgJXMgc2V0IGFzICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9qZWN0IG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJkdW0gcHJvdm8gZGUgbWFsZmVybWkgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIiIKKworIzogbWlzYy9jaGF0dHIuYzozMzcKK21zZ2lkICI9IGlzIGluY29tcGF0aWJsZSB3aXRoIC0gYW5kICtcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgImR1bSBsZWdhZG8gZGUgcmFkaWthIGktbm9kbyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiZHVtIGV0ZW5kYWRvIGRlIGRvc2llcnVqbyAnL2xvc3QrZm91bmQnIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAiZHVtIHNrYW5hZG8gZGUgaS1ub2RvaiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAiZHVtIHNrcmliYWRvIGRlIGktbm9kYSB0YWJlbG8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJkdW0gcHJvdm8gZGUgcmVncmFuZGlnaSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgImR1bSBtYWxmZXJtbyBkZSBpLW5vZGEgc2thbm8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgYnVmcm8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGF0dHJpYnV0ZSBcIiVzXCIgb2YgXCIlc1wiIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIHJhZGlrYSBpLW5vZG8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjAxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGF0dHJpYnV0ZSBcIiVzXCIgdG8gaW5vZGUgJXUiCittc2dzdHIgImR1bSBpdGVyYWNpbyBqZSBpLW5vZG8gJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICJkdW0gc2thbmFkbyBkZSBpLW5vZG9qIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgYnVmcm9qIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJkdW0ga29tZW5jbyBkZSBza2FubyBkZSBpLW5vZG9qIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM0MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiCittc2dzdHIgImR1bSBrcmVhZG8gZGUgZG9zaWVydWpvICcvbG9zdCtmb3VuZCciCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzYxIG1pc2MvY3JlYXRlX2lub2RlLmM6ODM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIKK21zZ3N0ciAiZHVtIHNlcsSJYWRvIGRlIGRvc2llcnVqbyAnL2xvc3QrZm91bmQnIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAiZHVtIGtyZWFkbyBkZSByYWRpa2EgZG9zaWVydWpvIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjYwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAiZHVtIG1hbGZlcm1vIGRlICVzIHBvciBlbGJ1ZnJpZ28iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJkdW0gbWFsZmVybW8gZGUgaS1ub2RhIHNrYW5vIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSBcIiVzXCIiCittc2dzdHIgIktyZWnEnWFzIG5vcm1hbGEgZG9zaWVybyAlc1xuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJNYW5rYXMgc3VmacSJYSBtZW1vcm8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVhZCBsaW5rIFwiJXNcIiIKK21zZ3N0ciAiZHVtIHByb3ZvIGRlIHJlZ3JhbmRpZ2kgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAiZHVtIHNrcmliYWRvIGRlIMSJZWZibG9rbyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgZmlsZSBcIiVzXCIiCittc2dzdHIgImR1bSBza3JpYmFkbyBkZSBpLW5vZGEgdGFiZWxvIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgImR1bSBrcmVhZG8gZGUgcmFkaWthIGRvc2llcnVqbyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJsZWdhbnRlIGRvc2llcnVqYW4gYmxva29uIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAiZHVtIGtvbWVuY28gZGUgc2thbm8gZGUgaS1ub2RvaiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgImR1bSBrb250cm9sYWRvIGRlIEV4dDMta2HFnXByb3Rva29sbyBwb3IgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJkdW0ga29tZW5jbyBkZSBza2FubyBkZSBpLW5vZG9qIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9rb2oiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIkdydXBvICVsdTogKEJsb2tvaiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiBjc3VtIDB4JTA0eCIKK21zZ3N0ciAiICBLb250cm9sc3VtbyAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChFWFBFQ1RFRCAweCUwNHgpIgorbXNnc3RyICIgKEFURU5EScScSVMgMHglMDR4KSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzMworIywgYy1mb3JtYXQKK21zZ2lkICIgICVzIHN1cGVyYmxvY2sgYXQgIgorbXNnc3RyICIgICVzIMSJZWZibG9rbyBqZSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJVbnVhIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJTYXZrb3BpYSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdydXBhaiBwcmlhxLVvaiBqZSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDIKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgUmV6ZXJ2aXRhaiBHRFQtYmxva29qIGplICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0OQorbXNnaWQgIiBHcm91cCBkZXNjcmlwdG9yIGF0ICIKK21zZ3N0ciAiIEdydXBwcmlhxLVvIGplICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICBCbG9rYSBiaXRtYXBvIGplICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MCBtaXNjL2R1bXBlMmZzLmM6MjcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIgIEtvbnRyb2xzdW1vIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NQorbXNnaWQgIiIKKyJcbiIKKyIgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKKyMsIGZ1enp5Cittc2dpZCAiIElub2RlIGJpdG1hcCBhdCAiCittc2dzdHIgIiwgaS1ub2RhIGJpdG1hcG8gamUgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBJLW5vZGEgdGFiZWxvIGplICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiICAldSBmcmVlICVzLCAldSBmcmVlIGlub2RlcywgJXUgZGlyZWN0b3JpZXMlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsICV1IG5ldXppdGFqIGktbm9kb2pcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICBMaWJlcmFqIGJsb2tvajogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgIExpYmVyYWogaS1ub2RvajogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQwCittc2dpZCAid2hpbGUgcHJpbnRpbmcgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0NgorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2tzOiAldSIKK21zZ3N0ciAiRGlmZWt0YWogYmxva29qOiAldSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM4NSBtaXNjL3R1bmUyZnMuYzozNjIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImR1bSBsZWdhZG8gZGUga2HFnXByb3Rva29sYSBpLW5vZG8iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImR1bSBtYWxmZXJtbyBkZSBrYcWdcHJvdG9rb2xhIGktbm9kbyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAiZHVtIGxlZ2FkbyBkZSBrYcWdcHJvdG9rb2xhIMSJZWZibG9rbyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiTWFsdmFsaWRhcyBtYWdpbnVtZXJvIGRlIGxhIGthxZ1wcm90b2tvbGEgxIllZmJsb2tvIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJLYcWdcHJvdG9rb2xhaiBrYXBhYmxvajogICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIkthxZ1wcm90b2tvbGEgZ3JhbmRvOiAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIkthxZ1wcm90b2tvbGEgbG9uZ286ICAgICAgICAldVxuIgorIkthxZ1wcm90b2tvbGEgc2VrdmVuY286ICAgICAweCUwOHhcbiIKKyJLYcWdcHJvdG9rb2xhIGtvbWVuY286ICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIkthxZ1wcm90b2tvbGEgZXJhcm51bWVybzogICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIGthxZ1wcm90b2tvbGEgxIllZmJsb2tvIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAiTmUgZWJsYXMgdHJvdmkga2HFnXByb3Rva29sYWpuIG1hZ2ludW1lcm9qbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBibG9jayBzaXplOiAgICAgICAldVxuIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIGZpcnN0IGJsb2NrOiAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCisiSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAldVxuIgorbXNnc3RyICIiCisiXG4iCisiS2HFnXByb3Rva29sYSBibG9rZ3JhbmRvOiAgICV1XG4iCisiS2HFnXByb3Rva29sYSBsb25nbzogICAgICAgICV1XG4iCisiS2HFnXByb3Rva29sYSB1bnVhIGJsb2tvOiAgICV1XG4iCisiS2HFnXByb3Rva29sYSBzZWt2ZW5jbzogICAgIDB4JTA4eFxuIgorIkthxZ1wcm90b2tvbGEga29tZW5jbzogICAgICAldVxuIgorIkthxZ1wcm90b2tvbGEgdXphbnRub21icm86ICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdXNlcnM6ICAgICAgICAgICAgJXNcbiIKK21zZ3N0ciAiS2HFnXByb3Rva29sYWogdXphbnRvajogICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICJNYW5rYXMgc3VmacSJYSBtZW1vcm8gcG9yIGFuYWxpemkgb3BjaW9qbiFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU1NgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN1cGVyYmxvY2sgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICIgICAgVXppxJ1hcyAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJNYWxzdWtjZXNpcyB0cm92aSB2YWxpZGFuIGRvc2llcnNpc3RlbWFuIMSJZWZibG9rb24uXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MjYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBiaXRtYXBzISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlV6bWFuaWVybzogICVzIFstcnxRXSBbLWZyXSBBUEFSQVRPIEJJTERPRE9TSUVST1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiAgICAgICAgICAgICVzIC1JIEFQQVJBVE8gQklMRE9ET1NJRVJPXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAgICAgICVzIC1yYSAgWy1jZm5wXSBbLW8gZm9udHBvemljaW9dIFstTyBjZWxwb3ppY2lvXSBmb250LWRzIFtjZWwtIgorImRzXVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgYnVmcm8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIGJsb2NrICVsbHVcbiIKK21zZ3N0ciAiU2tyaWJhZG8gZGUgYmxva28gJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJlcmFybyBkdW0gc2tyaWJhZG8gZGUgYmxva28gJWxsdSIKKworIzogbWlzYy9lMmltYWdlLmM6MTk2Cittc2dpZCAiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIgorbXNnc3RyICJlcmFybyBlbiAnZ2VuZXJpY193cml0ZSgpJyIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIkVyYXJvOiDEiWFwYSBncmFuZG8gcGxpIGdyYW5kYXMgbyAnd3J0X3NpemUnXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiTWFua2FzIHN1ZmnEiWEgbWVtb3JvIHBvciBhc2lnbmkgYnVmcm9uIHBvciDEiWFwb1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgImR1bSBza3JpYmFkbyBkZSDEiWVmYmxva28iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgImR1bSBza3JpYmFkbyBkZSBpLW5vZGEgdGFiZWxvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNjMKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiZHVtIHNrcmliYWRvIGRlIGJsb2thIGJpdG1hcG8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJkdW0gc2tyaWJhZG8gZGUgaS1ub2RhIGJpdG1hcG8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUwNQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgcmVjX2xlbiAoJWQpXG4iCittc2dzdHIgIkRpZmVrdGEgdWphIGJsb2tvICVsbHU6IG1hbGJvbmEgJ3JlY19sZW4nICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIkRpZmVrdGEgdWphIGJsb2tvICVsbHU6IG1hbGJvbmEgJ25hbWVfbGVuJyAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIlbGx1IC8gJWxsdSBibG9rb2ogKGRlICVkJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIktvcGlhZG8gIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICJIYWx0aSBudW4gZGV0cnVvcyBsYSBkb3NpZXJzaXN0ZW1vbjsgaW50ZXJyb21wdSBkZW5vdmUgc2UgdmkgY2VydGFzLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiICVzIHJlbWFpbmluZyBhdCAlLjJmIE1CL3MiCittc2dzdHIgIiByZXN0YXMgJXMgamUgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgImVyYXJvIGR1bSBsZWdhZG8gZGUgYmxva28gJWxsdSIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAiS29waWnEnWlzICVsbHUgLyAlbGx1IGJsb2tvaiAoZGUgJWQlJSkgZW4gJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICJqZSAlLjJmIE1CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgbDEtdGFiZWxvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJkdW0gYXNpZ25vIGRlIGwyLWthxZ1tZW1vcm8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgyNgorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluIHRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgZGF0YSAiCisid2lsbCBiZSBsb3N0IHNvIHRoZSBpbWFnZSBtYXkgbm90IGJlIHZhbGlkLlxuIgorbXNnc3RyICIiCisiQXZlcnRvOiBhbmtvcmHFrSBla3ppc3RhcyB0YWJlbG9qIGVuIGxhIGthxZ1tZW1vcm8gZHVtIHNpYSBrb25zZXJ2YWRvLCB0aWFsICIKKyJkYXR1bW9qIHBlcmRpxJ1vcyBrYWogbGEgYmlsZG8gZWJsZSBtYWx2YWxpZGFzLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJkdW0gYXNpZ25vIGRlICdleHQyX3Fjb3cyX2ltYWdlJyIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJkdW0gcHJhdmFsb3Jpem8gZGUgJ2V4dDJfcWNvdzJfaW1hZ2UnIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgYmxva2EgYml0bWFwbyIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiZHVtIGFzaWdubyBkZSBraXJsaXRhIGJsb2thIGJpdG1hcG8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiU2thbmFkbyBkZSBpLW5vZG9qLi4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIk1hbmthcyBzdWZpxIlhIG1lbW9ybyBwb3IgYXNpZ25pIGJ1ZnJvbiBwb3IgYmxva28iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIKK21zZ3N0ciAiZHVtIGl0ZXJhY2lvIGplIGktbm9kbyAldSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIktydWRham4ga2FqIFFDT1cyLWJpbGRvam4gbmUgZWJsYXMgaW5zdGFsaSIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiZXJhcm8gZHVtIGxlZ2FkbyBkZSBiaXRtYXBvaiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgImR1bSBtYWxmZXJtbyBkZSBhcGFyYXRkb3NpZXJvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAiZHVtIHJlc3Rhxa1ybyBkZSBiaWxkYSB0YWJlbG8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICJPcGNpbyAnLWEnIHV6ZWJsYXMgbnVyIGt1biBrcnVkYWogYcWtIFFDT1cyLWJpbGRvai4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiUG96aWNpb2ogdXplYmxhcyBudXIga3VuIGtydWRhaiBiaWxkb2ouIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJNb3Ztb2R1c28gdXplYmxhcyBudXIga3VuIGtydWRhaiBiaWxkb2ouIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTQzCittc2dpZCAiTW92ZSBtb2RlIHJlcXVpcmVzIGFsbCBkYXRhIG1vZGUuIgorbXNnc3RyICJNb3Ztb2R1c28gcG9zdHVsYXMgJ2FsbC1kYXRhJyBtb2R1c29uIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTUzCittc2dpZCAiY2hlY2tpbmcgaWYgbW91bnRlZCIKK21zZ3N0ciAia29udHJvbG8gamUgc3VybWV0byIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlJ1bGkgJ2UyaW1hZ2UnIGplIHNrcmliZWJsZSBzdXJtZXRhdGEgZG9zaWVyc2lzdGVtbyBwb3ZhcyByZXp1bHRpXG4iCisiZW4gbWFsa29oZXJhIGJpbGRvIGtpdSBuZSB1dGlsb3MgcG9yIHNlcsSJbyBkZSBwcm9ncmFtbWlzb2ouXG4iCisiVXp1IG9wY2lvICctZicgc2UgdmkgdmVyZSB2b2xhcyBmYXJpIHRpb24uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiTmUgZWJsYXMgc2tyaWJpIFFDT1cyLWJpbGRvbiBhbCDEiWVmZWxpZ3VqbyFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYyMAorbXNnaWQgIkNhbiBub3Qgc3RhdCBvdXRwdXRcbiIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgZWx0cm92aSBzdGF0aW5mb3Jtb24gcHJpIGVsaWd1am9cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiQmlsZG8gKCVzKSBlc3RhcyBkZW5zaWdpdGFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICJCaWxkbyAoJXMpIGVzdGFzIMSJaWZyaXRhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICJkdW0ga29udmVydG8gZGUgUUNPVzItYmlsZG8gKCVzKSBhbCBrcnVkYSBiaWxkbyAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJPcGNpbyAnLWMnIHV6ZWJsYXMgbnVyIGVuIGtydWRhIG1vZHVzb1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjUwCittc2dpZCAiVGhlIC1jIG9wdGlvbiBub3Qgc3VwcG9ydGVkIHdoZW4gd3JpdGluZyB0byBzdGRvdXRcbiIKK21zZ3N0ciAiT3BjaW8gJy1jJyBuZSB1emVibGFzIGR1bSBza3JpYmFkbyBhbCDEiWVmZWxpZ3Vqb1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjU3Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBjaGVja19idWYiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgJ2NoZWNrX2J1ZiciCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIk9wY2lvICctcCcgdXplYmxhcyBudXIgZW4ga3J1ZGEgbW9kdXNvXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICJFc3RpcyAlZCBibG9rb2oga2l1aiBqYW0gZW5oYXZpcyBsYSBrb3BpZW5kYWpuIGRhdHVtb2puXG4iCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiVXptYW5pZXJvOiAgJXMgRElTS09cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IG9wZW4gJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogbmUgZWJsYXMgbWFsZmVybWkgJXNcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBuZSBlYmxhcyBzYWx0aSBhbCDEiWVmYmxva29cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGVyYXJvIGR1bSBsZWdhZG8gZGUgxIllZmJsb2tvXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogbmUgZXN0YXMgRXh0Mi1kb3NpZXJzaXN0ZW1vXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIkF2ZXJ0bzogZXRpa2VkbyB0cm8gbG9uZ2FzLCDEnWkgdHJ1bmtpxJ1hcy5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDogbmUgZWJsYXMgcmVzYWx0aSBhbCDEiWVmYmxva29cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBlcmFybyBkdW0gc2tyaWJhZG8gZGUgxIllZmJsb2tvXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIlV6bWFuaWVybzogIGUybGFiZWwgQVBBUkFUTyBbTk9WRVRJS0VET11cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCittc2dpZCAiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIGthxZ1wcm90b2tvbGEgxIllZmJsb2tvIgorCisjOiBtaXNjL2UydW5kby5jOjE4MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJkdW0gc2tyaWJhZG8gZGUgxIllZmJsb2tvIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgxIllZmJsb2tvIG5lIGtvbmtvcmRhcyBrdW4gxIllZmJsb2tvIgorCisjOiBtaXNjL2UydW5kby5jOjMzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAiTmV2YWxpZGEgcG96aWNpbzogJXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJkdW0gbWFsZmVybW8gZGUgYXBhcmF0ZG9zaWVybyIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgImR1bSBsZWdhZG8gZGUgcmFkaWthIGktbm9kbyIKKworIzogbWlzYy9lMnVuZG8uYzozNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIlczogdHJvIGRhIGFwYXJhdG9qXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIktvbnRyb2xzdW1vIGRlIGktbm9kbyBuZSBrb25rb3JkYXMga3VuIGktbm9kbyIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iCittc2dzdHIgIkRpZmVrdGEgYW1wbGVrc2EgxIlhcG8iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDE5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIkthxZ1wcm90b2tvbGEgQFMgaGF2YXMgbmVrb25hdGFuIGplc2FuIG5la29uZ3J1YW4gZnVua2NpYW4gZmxhZ29uLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAiZHVtIGVsdHJvdm8gc2UgJXMgZXN0YXMgc3VybWV0YXRhLiIKKworIzogbWlzYy9lMnVuZG8uYzo0MzMKK21zZ2lkICJlMnVuZG8gc2hvdWxkIG9ubHkgYmUgcnVuIG9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICJkdW0gbWFsZmVybW8gZGUgaS1ub2RhIHNrYW5vIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAiZHVtIGxlZ2FkbyBkZSBiaXRtYXBvaiIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIkRlIGJsb2tvICVsdSBhbCAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NTggbWlzYy9lMnVuZG8uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJTa3JpYmFkbyBkZSBibG9rbyAlbGx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiZXJhcm8gZHVtIHNrcmliYWRvIGRlIGJsb2tvICVsbHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAgZmluZHN1cGVyIGRldmljZSBbc2tpcGJ5dGVzIFtzdGFydGtiXV1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGluZyBhdCAlbGx1LCB3aXRoICV1IGJ5dGUgaW5jcmVtZW50c1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy8iCisibW91bnRfdGltZSAgICAgICAgICAgc2JfdXVpZCBsYWJlbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTFMdTogZmluaXNoZWQgd2l0aCBlcnJubyAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJBVkVSVE86IG1hbHN1a2Nlc2lzIG1hbGZlcm1pICVzOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIkFWRVJUTzogbWFsdmFsaWRhIHNpbnRha3NvIGVuIGxpbmlvICVkIGRlICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisiV0FSTklORzogL2V0Yy9mc3RhYiBuZSBlbmhhdmFzIGxlIHNlc2FuIGthbXBvbiAodmljbnVtZXJvbiBwb3IgJ2ZzY2snKVxuIgorIiAgICDEiGkgdGl1IHByb2JsZW1vIG51biDEiWlya2HFrWlyacSdb3Mga2FqIGV2aXRpxJ1vcywgc2VkIHZpIGRldnVzXG4iCisiICAgIGtvcmVrdGkgdmlhbiBkb3NpZXJvbiAvZXRjL2ZzdGFiIGxhIHBsZWogZnJ1ZSBrZSB2aSBwb3Zhcy5cbiIKKyJcbiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXMgbmUgdHJvdmnEnWlzXG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiB3YWl0OiBOZSBwbHUgZWt6aXN0YXMgaWRhIHByb2Nlem8hIVxuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiQXZlcnRvLi4uICVzIHBvciBhcGFyYXRvICVzIGZpbmlzIGt1biBzaWduYWxvICVkLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgJXM6IHN0YXR1cyBpcyAleCwgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiIKK21zZ3N0ciAiJXMgJXM6IGVsaXJzdGF0byBlc3RhcyAleCAtLSB0aW8gZGV2dXMgbmVuaWFtIG9rYXppLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2NjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmluaXNoZWQgd2l0aCAlcyAoZXhpdCBzdGF0dXMgJWQpXG4iCittc2dzdHIgIkZpbmtvbnRyb2xpcyBhcGFyYXRvbiAlcyAoZWxpcnN0YXRvIGVzdGFzICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIlczogRXJhcm8gJWQgZHVtIHJ1bGFkbyBkZSAnZnNjay4lcycgcG9yICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisiQcWtIMSJaXVqIGHFrSBuZW5pdWogZGUgbGEgZG9zaWVyc2lzdGVtYWogdGlwb2ogamUgb3BjaW8gJy10J1xuIgorImRldnVzIGVzdGkgcHJlZmlrc2l0YWoga3VuICdubycgYcWtICchJy5cbiIKKworIzogbWlzYy9mc2NrLmM6NzYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBmaWxlc3lzdGVtIHR5cGVzXG4iCittc2dzdHIgIk1hbmthcyBzdWZpxIlhIG1lbW9ybyBwb3IgZG9zaWVyc2lzdGVtYWogdGlwb2pcbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiB0cmFuc3NhbHRpxJ1hcyBtYWxib25hIGxpbmlvIGVuIC9ldGMvZnN0YWI6ICdiaW5kJy1zdXJtZXRvIGhhdmFzIG5lbnVsYW4gIgorInNlc2FuIGthbXBvbiAodmljbnVtZXJvbiBwb3IgJ2ZzY2snKVxuIgorCisjOiBtaXNjL2ZzY2suYzo5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogY2Fubm90IGNoZWNrICVzOiBmc2NrLiVzIG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiBuZSBlYmxhcyBrb250cm9saSAlczogJ2ZzY2suJXMnIG5lIHRyb3ZpxJ1hc1xuIgorCisjOiBtaXNjL2ZzY2suYzo5NjcKK21zZ2lkICJDaGVja2luZyBhbGwgZmlsZSBzeXN0ZW1zLlxuIgorbXNnc3RyICJLb250cm9sbyBkZSDEiWl1aiBkb3NpZXJzaXN0ZW1vai5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS1hdGVuZGFkby0tIChwYcWdbyAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIlV6bWFuaWVybzogIGZzY2sgWy1BTU5QUlRWXSBbLUMgW2Rvc2llcnByaWHEtW9dXSBbLXQgZG9zaWVyc2lzdGVtdGlwb11cbiIKKyIgICAgICAgICAgICAgICAgIFtkb3NpZXJzaXN0ZW1vcGNpb2pdIFtkb3NpZXJzaXN0ZW1vLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiB0cm8gZGEgYXBhcmF0b2pcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IHRybyBkYSBhcmd1bWVudG9qXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJEb3NpZXJvIGVzdGFzIG1hbGZlcm1hIG51cmxlZ2UiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiVXptYW5pZXJvOiAgJXMgWy1SVmZdIFstKz1BYUNjRGRlaWpTc1R0dV0gWy12IFZFUlNJT10gRE9TSUVSTy4uLlxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIHJhZGlrYSBpLW5vZG8iCisKKyM6IG1pc2MvbHNhdHRyLmM6MTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdIFstQyBjbHVzdGVyLXNpemVdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgaW5vZGUtc2l6ZV0gWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKyJcdFstRyBmbGV4LWdyb3VwLXNpemVdIFstTiBudW1iZXItb2YtaW5vZGVzXSBbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisiXHRbLW0gcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2VdIFstbyBjcmVhdG9yLW9zXVxuIgorIlx0Wy1nIGJsb2Nrcy1wZXItZ3JvdXBdIFstTCB2b2x1bWUtbGFiZWxdIFstTSBsYXN0LW1vdW50ZWQtZGlyZWN0b3J5XVxuIgorIlx0Wy1PIGZlYXR1cmVbLC4uLl1dIFstciBmcy1yZXZpc2lvbl0gWy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXVsteiAiCisidW5kb19maWxlXVxuIgorIlx0Wy1qbnF2REZTVl0gZGV2aWNlIFtibG9ja3MtY291bnRdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICJSdWxpxJ1hcyBrb21hbmRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgImR1bSBwcm92byBkZSBydWxpICclcyciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJkdW0gdHJha3RhZG8gZGUgbGlzdG8gZGUgbWFsYm9uYWogYmxva29qIGVsIHByb2dyYW1vIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIkFib3J0acSdYXMuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgImR1bSBtYXJrYWRvIGRlIG1hbGJvbmFqIGJsb2tvaiBraWVsIHV6YXRhaiIKKworIzogbWlzYy9ta2UyZnMuYzo0MDgKK21zZ2lkICJXcml0aW5nIGlub2RlIHRhYmxlczogIgorbXNnc3RyICJTa3JpYmnEnWFzIGktbm9kYWogdGFiZWxvajogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiTWFsc3VrY2VzaXMgc2tyaWJpICVkIGJsb2tvam4gZW4gaS1ub2RhIHRhYmVsbyBla2RlICVsbHU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJmYXJpdGEgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJkdW0ga3JlYWRvIGRlIHJhZGlrYSBkb3NpZXJ1am8iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIHJhZGlrYSBpLW5vZG8iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDc4Cittc2dpZCAid2hpbGUgc2V0dGluZyByb290IGlub2RlIG93bmVyc2hpcCIKK21zZ3N0ciAiZHVtIGFnb3JkbyBkZSBwb3NlZGVjbyBkZSByYWRpa2EgaS1ub2RvIgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJkdW0ga3JlYWRvIGRlIGRvc2llcnVqbyAnL2xvc3QrZm91bmQnIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgImR1bSBzZXLEiWFkbyBkZSBkb3NpZXJ1am8gJy9sb3N0K2ZvdW5kJyIKKworIzogbWlzYy9ta2UyZnMuYzo1MTYKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgImR1bSBldGVuZGFkbyBkZSBkb3NpZXJ1am8gJy9sb3N0K2ZvdW5kJyIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiZHVtIGFnb3JkbyBkZSBtYWxib25ibG9rYSBpLW5vZG8iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIk1hbmthcyBzdWZpxIlhIG1lbW9ybyBkdW0gdmnFnWFkbyBkZSBzZWt0b3JvaiAlZC0lZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICJBdmVydG86IG1hbHN1a2Nlc2lzIGxlZ2kgYmxva29uIDA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkF2ZXJ0bzogbWFsc3VrY2VzaXMgdmnFnWkgc2VrdG9yb24gJWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjAwCittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAiZHVtIHByYXZhbG9yaXpvIGRlIGthxZ1wcm90b2tvbGEgxIllZmJsb2tvIgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiTnVscGxlbmnEnWFzIGthxZ1wcm90b2tvbGEgYXBhcmF0bzogIgorCisjOiBtaXNjL21rZTJmcy5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgImR1bSBudWxwbGVuaWdvIGRlIGthxZ1wcm90b2tvbGEgYXBhcmF0byAoYmxva28gJWxsdSwgbnVtZXJvICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzo2MzcKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAiZHVtIHNrcmliYWRvIGRlIGthxZ1wcm90b2tvbGEgxIllZmJsb2tvIgorCisjOiBtaXNjL21rZTJmcy5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggJWxsdSAlZGsgYmxvY2tzIGFuZCAldSBpbm9kZXNcbiIKK21zZ3N0ciAiS3JlYWRvIGRlIGRvc2llcnNpc3RlbW8ga3VuICVsbHUgYmxva29qIChkZSAlZEspIGthaiAldSBpLW5vZG9qXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBdmVydG86ICVsbHUgYmxva29qIG5lIHV6acSdYXMuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiRG9zaWVyc2lzdGVtYSBldGlrZWRvPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIk1hc3RydW1zaXN0ZW1hIHRpcG86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQmxva2dyYW5kbz0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiRmFza2EgZ3JhbmRvPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiRnJhZ21lbnRhIGdyYW5kbz0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIidTdHJpZGUnLXBhxZ1vPSV1IGJsb2tvaiwgJ3N0cmlwZSctbGFyxJ1vPSV1IGJsb2tvalxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1IGktbm9kb2osICVsbHUgYmxva29qXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJWxsdSBibG9rb2ogKCUyLjJmJSUpIHJlemVydmnEnWFzIHBvciBsYSDEiWVmdXphbnRvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpcnN0IGRhdGEgYmxvY2s9JXVcbiIKK21zZ3N0ciAiVW51YSBkYXR1bWJsb2tvPSV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIlBvc2VkYW50byBkZSByYWRpa2EgZG9zaWVydWpvPSV1OiV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgIk1ha3NpbXVtYSBub21icm8gZGUgZG9zaWVyc2lzdGVtYWogYmxva29qPSVsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cHNcbiIKK21zZ3N0ciAiJXUgYmxva2dydXBvalxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBibG9rZ3J1cG9cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2tvaiBwbyBncnVwbywgJXUgZmFza29qIHBvIGdydXBvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxva29qIHBvIGdydXBvLCAldSBmcmFnbWVudG9qIHBvIGdydXBvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgaS1ub2RvaiBwbyBncnVwb1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIFVVSUQ6ICVzXG4iCittc2dzdHIgIkRvc2llcnNpc3RlbWEgVVVJRD0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgIsSIZWZibG9rYWogc2F2a29waW9qIGdhcmRpxJ1hcyBlbiBibG9rb2o6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyBiZXpvbmFzICctTyA2NGJpdCdcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICInJXMnIGRldmFzIGVzdGkgYW50YcWtICdyZXNpemU9JXUnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgIk5ldmFsaWRhICdkZXNjX3NpemUnOiAnJXMnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICJOZXZhbGlkYSBwb3ppY2lvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiTmV2YWxpZGEgJ21tcF91cGRhdGVfaW50ZXJ2YWwnOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICJNYWx2YWxpZGEgbm9tYnJvIGRlIHNhdmtvcGlhaiDEiWVmYmxva29qOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk1hbHZhbGlkYSBhcmd1bWVudG8gcG9yICdzdHJpZGUnOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk1hbHZhbGlkYSBhcmd1bWVudG8gcG9yICdzdHJpcGUnLWxhcsSdbzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJNYWx2YWxpZGEgYXJndW1lbnRvIHBvciAncmVzaXplJzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MzQKK21zZ2lkICJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjk4NCBtaXNjL21rZTJmcy5jOjk5MworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIKK21zZ3N0ciAiTmV2YWxpZGEgcmFkaWtwb3NlZGFudG86ICclcydcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiTmV2YWxpZGEgZG9zaWVyc2lzdGVtYSBvcGNpbyBhZ29yZGnEnWFzOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiTmV2YWxpZGEgc3VybWV0YSBvcGNpbyBhZ29yZGnEnWFzOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiQWJvcnRpxJ1hcy4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiTWFua2FzIHN1ZmnEiWEgbWVtb3JvIHBvciBub3ZhICdQQVRIJy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU2NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrIHNpemUgLSAlcyIKK21zZ3N0ciAibmV2YWxpZGEgYmxva2dyYW5kbzogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIkF2ZXJ0bzogYmxva2dyYW5kbyAlZCBuZSB1emVibGFzIGVuIHBsZWptdWx0byBkZSBzaXN0ZW1vai5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTg3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgIm5ldmFsaWRhIGZhc2tncmFuZG86ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIm9wY2lvICctUicgYXJrYWlrYXM7IHV6dSAnLUUnIGFuc3RhdGHFrWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYyNgorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBibG9ja3MgcGVyIGdyb3VwIgorbXNnc3RyICJOZXZhbGlkYSBub21icm8gZGUgYmxva29qIHBvIGdydXBvIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiYmxva29qIHBvIGdydXBvIGRldmFzIGVzdGkgb2JsbyBkZSA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICJNYWx2YWxpZGEgbm9tYnJvIHBvciBncmFuZG8gZGUgJ2ZsZXhfYmcnIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgIkdyYW5kbyBkZSAnZmxleF9iZycgZGV2YXMgZXN0aSBwb3RlbmNvIGRlIDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgYy1mb3JtYXQKK21zZ2lkICJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMl4zMSIKK21zZ3N0ciAiR3JhbmRvIGRlICdmbGV4X2JnJyAoJWx1KSBkZXZhcyBlc3RpIG1hbHBsaSBvbCAoYcWtIGVnYWxlIGFsKSAyXjMxIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSByYXRpbyAlcyAobWluICVkL21heCAlZCkiCittc2dzdHIgIm5ldmFsaWRhIGktbm9kYSByaWxhdG8gJXMgKG1pbiAlZC9tYWtzICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJuZXZhbGlkYSBpLW5vZGEgZ3JhbmRvOiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgIm1hbmthcyBzdWZpxIlhIG1lbW9ybyBlbiAnYmFkX2Jsb2Nrc19maWxlbmFtZSgpJyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiQXZlcnRvOiBldGlrZWRvIHRybyBsb25nYXMsIMSdaSB0cnVua2nEnWFzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJuZXZhbGlkYSBlbGNlbnRvIGRlIHJlemVydml0YWogYmxva29qOiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgIm5ldmFsaWRhIG5vbWJybyBkZSBpLW5vZG9qOiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgImR1bSBhc2lnbm8gZGUgYnVmcm9qIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJldmlzaW9uIGxldmVsIC0gJXMiCittc2dzdHIgIm5ldmFsaWRhIHJldml6aWEgbml2ZWxvOiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIk9wY2lvICctdCcgdXplYmxhcyBudXIgdW51IGZvam9uIgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiT3BjaW8gJy1UJyB1emVibGFzIG51ciB1bnUgZm9qb24iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAiZHVtIHByb3ZvIGRlIG1hbGZlcm1pIGthxZ1wcm90b2tvbGFuIGFwYXJhdG9uICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorIkJsb2tncmFuZG8gJWQgZGUga2HFnXByb3Rva29sYSBhcGFyYXRvIGVzdGFzIHBsaSBtYWxncmFuZGEgb2wgbWluaW11bWEgIgorImJsb2tncmFuZG8gJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzaW5nIGpvdXJuYWwgZGV2aWNlJ3MgYmxvY2tzaXplOiAlZFxuIgorbXNnc3RyICJCbG9rZ3JhbmRvIGRlIGthxZ1wcm90b2tvbGEgYXBhcmF0byB1emnEnWFzOiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9ja3MgJyVzJyBvbiBkZXZpY2UgJyVzJyIKK21zZ3N0ciAibmV2YWxpZGFqIGJsb2tvaiAnJXMnIGVuIGFwYXJhdG8gJyVzJyIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAiZG9zaWVyc2lzdGVtbyIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgImR1bSBlbHRyb3ZvIGRlIGRvc2llcnNpc3RlbWEgZ3JhbmRvIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIk1hbHN1a2Nlc2lzIGVsdHJvdmkgYXBhcmF0YW4gZ3JhbmRvbjtcbiIKKyJuZWNlc2FzIGluZGlraSBsYSBncmFuZG9uIGRlIGxhIGRvc2llcnNpc3RlbW9cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIkRvc2llcnNpc3RlbW8gcGxpIGdyYW5kYXMgb2wgxZ1ham5hIGFwYXJhdGEgZ3JhbmRvLiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTUwCittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGZzIHR5cGVzIGxpc3RcbiIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgYW5hbGl6aSBsaXN0b24gZGUgZG9zaWVyc2lzdGVtYWogdGlwb2pcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkVrc3RlcmEga2HFnXByb3Rva29sbyBuZSBzdWJ0ZW5hcyDEiWkgdGl1biBkb3NpZXJzaXN0ZW1vbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJFa3N0ZXJhIGthxZ1wcm90b2tvbG8gbmUgc3VidGVuYXMgxIlpIHRpdW4gZG9zaWVyc2lzdGVtb24uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAyNAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgImR1bSBhZ29yZG8gZGUgYmxva2dyYW5kbzsgxJ1pIHRybyBtYWxncmFuZGFzIHBvciBhcGFyYXRvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA2MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiS2HFnXByb3Rva29sb2ogbmUgc3VidGVuYXRhcyBlbiBkb3NpZXJzaXN0ZW1vaiBkZSByZXZpemlvIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgIm5ldmFsaWRhIGVsY2VudG8gZGUgcmV6ZXJ2aXRhaiBibG9rb2o6ICVsZiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTU2Cittc2dpZCAiIgorIkV4dGVudHMgTVVTVCBiZSBlbmFibGVkIGZvciBhIDY0LWJpdCBmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIkZhc2tncmFuZG8gbmUgcG92YXMgZXN0aSBwbGkgbWFsZ3JhbmRhIG9sIGJsb2tncmFuZG8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgImluZGlraSBmYXNrZ3JhbmRvbiBiZXpvbmFzIGxhICdiaWdhbGxvYycta2FwYWJsb24iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yIGltcHJvdmVkIHN0YWJpbGl0eSBvZiB0aGUgbWV0YWRhdGEgIgorImFuZCBqb3VybmFsIGNoZWNrc3VtIGZlYXR1cmVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxOQorbXNnaWQgIiIKKyJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnIGZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKyJUaGV5IGNhbiBub3QgYmUgYm90aCBlbmFibGVkIHNpbXVsdGFuZW91c2x5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM0OAorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgY291bnQgb3V0IG9mIHJhbmdlIgorbXNnc3RyICJub21icm8gZGUgYmxva29qIHBvIGdydXBvIGVzdGFzIGVrc3RlciBnYW1vIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAibmV2YWxpZGEgaS1ub2RncmFuZG8gJWQgKG1pbiAlZC9tYWtzICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBwcm9qZWN0IHF1b3RhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgInRybyBtdWx0YWogaS1ub2RvaiAoJWxsdSk7IMSJdSBhbHRpZ2kgbGEgaS1ub2RhbiByaWxhdG9uPyIKKworIzogbWlzYy9ta2UyZnMuYzoyNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHNwZWNpZnkgPCAyXjMyIGlub2RlcyIKK21zZ3N0ciAidHJvIG11bHRhaiBpLW5vZG9qICglbGx1KTsgaW5kaWt1IG1hbHBsaSBvbCAyXjMyIGktbm9kb2oiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgImR1bSBwcmF2YWxvcml6byBkZSAnZXh0Ml9xY293Ml9pbWFnZSciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcxNQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAiZHVtIHNrcmliYWRvIGRlIGthxZ1wcm90b2tvbGEgaS1ub2RvIgorCisjOiBtaXNjL21rZTJmcy5jOjI3NDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgIm5ldmFsaWRhIHJldml6aWEgbml2ZWxvOiAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJuZWtvbmF0YSBtYXN0cnVtc2lzdGVtbzogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIkFzaWdubyBkZSBncnVwYWogdGFiZWxvajogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgImR1bSBhc2lnbm8gZGUgZG9zaWVyc2lzdGVtYWogdGFiZWxvaiIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIiAgICBkdW0ga29udmVydG8gZGUgc3ViZmFza2EgYmxva2EgYml0bWFwbyIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJkdW0gbnVscGxlbmlnbyBkZSBibG9rbyAlbGx1IGplIGZpbm8gZGUgZG9zaWVyc2lzdGVtbyIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgImthxZ1wcm90b2tvbG8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiQWxkb25pxJ1hcyBrYcWdcHJvdG9rb2xvIGFsIGFwYXJhdG8gJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyIgICAgZHVtIHByb3ZvIGRlIGFsZG9uaSBrYcWdcHJvdG9rb2xvbiBhbCBhcGFyYXRvICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzEgbWlzYy9ta2UyZnMuYzozMTYwIG1pc2MvbWtlMmZzLmM6MzIwMAorIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MTAgbWlzYy90dW5lMmZzLmM6MTQ0NCBtaXNjL3R1bmUyZnMuYzoxNDYzCittc2dpZCAiZG9uZVxuIgorbXNnc3RyICJwcmV0YXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiVHJhbnNzYWx0acSdYXMga3JlYWRvIGRlIGthxZ1wcm90b2tvbG8gZW4gbnVyxIllZmEgbW9kdXNvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIktyZWFkbyBkZSBrYcWdcHJvdG9rb2xvICgldSBibG9rb2opOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE1NgorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCIKK21zZ3N0ciAiIgorIlxuIgorIiAgICBkdW0gcHJvdm8gZGUga3JlaSBrYcWdcHJvdG9rb2xvbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBpcyBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkIHNlY29uZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCisjLCBmdXp6eQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIkVyYXJvIGR1bSBlbGJ1ZnJpZ28gZGUgc2tyaWJvaiBhbCBtZW1vcmFwYXJhdG86ICVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBwb3B1bGF0aW5nIGZpbGUgc3lzdGVtIgorbXNnc3RyICJkdW0gYXNpZ25vIGRlIGwxLXRhYmVsbyIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTMKK21zZ2lkICIiCisiZG9uZVxuIgorIlxuIgorbXNnc3RyICIiCisicHJldGFzXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQYXJ0aXRpb24gb2Zmc2V0IG9mICVsbHUgKCV1aykgYmxvY2tzIG5vdCBjb21wYXRpYmxlIHdpdGggY2x1c3RlciBzaXplICV1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIktyZWnEnWFzIG5vcm1hbGEgZG9zaWVybyAlc1xuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICIiCisiQXZlcnRvOiAlbGx1IGJsb2tvaiBuZSB1emnEnWFzLlxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlICVsdSIKK21zZ3N0ciAiZHVtIGl0ZXJhY2lvIGplIGktbm9kbyAldSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gJXM6ICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiS2HFnXByb3Rva29sYSDEiWVmYmxva28gbmUgdHJvdmnEnWlzIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJkdW0gcHJvdm8gZGUgbWFsZmVybWkgZWtzdGVyYW4ga2HFnXByb3Rva29sb24iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBuZSBlc3RhcyBrYcWdcHJvdG9rb2xhIGFwYXJhdG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJEb3NpZXJzaXN0ZW1hIFVVSUQgbmUgdHJvdmnEnWlzIGVuIGthxZ1wcm90b2tvbGEgYXBhcmF0by5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkthxZ1wcm90b2tvbG8gZm9yaWdpxJ1pc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgImR1bSBsZWdhZG8gZGUgYml0bWFwb2oiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImR1bSB2acWdYWRvIGRlIGthxZ1wcm90b2tvbGEgaS1ub2RvIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImR1bSBza3JpYmFkbyBkZSBrYcWdcHJvdG9rb2xhIGktbm9kbyIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKGthaiBwb3N0ZSByZXN0YXJ0aWd1IGxhIGtvbXB1dGlsb24hKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWZ0ZXIgcnVubmluZyBlMmZzY2ssIHBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIgLXogXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBkaXNhYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjk3NAorbXNnaWQgIiIKKyJXQVJOSU5HOiBDb3VsZCBub3QgY29uZmlybSBrZXJuZWwgc3VwcG9ydCBmb3IgbWV0YWRhdGFfY3N1bV9zZWVkLlxuIgorIiAgVGhpcyByZXF1aXJlcyBMaW51eCA+PSB2NC40LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2xlYXJpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDMzCittc2dpZCAiIgorIlRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldC4gIFBsZWFzZSBydW4gZTJmc2NrIGJlZm9yZSBjbGVhcmluZ1xuIgorInRoZSBoYXNfam91cm5hbCBmbGFnLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNTEKK21zZ2lkICIiCisiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJ3NwYXJzZV9zdXBlcicgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDY0Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDgyCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaGFzIGJlZW4gZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTU2Cittc2dpZCAiIgorIlRoZSBodWdlX2ZpbGUgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2NworbXNnaWQgIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTc1Cittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRpc2FibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzEzCittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMyNgorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiAnXnF1b3RhJyBvcHRpb24gb3ZlcnJpZGVzICctUSdhcmd1bWVudHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzYyCittc2dpZCAiIgorIlVVSUQgaGFzIGNoYW5nZWQgc2luY2UgZW5hYmxpbmcgbWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSAiCisidW5tb3VudGVkIFxuIgorInRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byBtYXRjaCB0aGUgbmV3IFVVSUQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQwOAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIGEgam91cm5hbC5cbiIKK21zZ3N0ciAiRG9zaWVyc2lzdGVtbyBqYW0gaGF2YXMga2HFnXByb3Rva29sb24uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiICAgIGR1bSBwcm92byBkZSBtYWxmZXJtaSBrYcWdcHJvdG9rb2xvbiBlbiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgb24gZGV2aWNlICVzOiAiCittc2dzdHIgIktyZWFkbyBkZSBrYcWdcHJvdG9rb2xvIGVuIGFwYXJhdG8gJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJkdW0gYWxkb25pxJ1vIGRlIGRvc2llcnNpc3RlbW8gYWwga2HFnXByb3Rva29sbyBlbiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiS3JlYWRvIGRlIGthxZ1wcm90b2tvbGEgaS1ub2RvOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIiAgICBkdW0gcHJvdm8gZGUga3JlaSBrYcWdcHJvdG9rb2xhIGRvc2llcm8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJkdW0gcHJhdmFsb3Jpem8gZGUga2HFnXByb3Rva29sYSDEiWVmYmxva28iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJkdW0gxJ1pc2RhdGlnbyBkZSBtYWxib25ibG9rYSBpLW5vZG8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJkdW0gc2tyaWJhZG8gZGUgaS1ub2RhIHRhYmVsbyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJkdW0gbGVnYWRvIGRlIHJhZGlrYSBpLW5vZG8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKK21zZ2lkICIiCisiXG4iCisiQmFkIHF1b3RhIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkZvbGxvd2luZyB2YWxpZCBxdW90YSBvcHRpb25zIGFyZSBhdmFpbGFibGUgKHBhc3MgYnkgc2VwYXJhdGluZyB3aXRoICIKKyJjb21tYSk6XG4iCisiXHRbXl11c3JbcXVvdGFdXG4iCisiXHRbXl1ncnBbcXVvdGFdXG4iCisiXHRbXl1wcmpbcXVvdGFdXG4iCisiXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGdpZC9ncm91cCBuYW1lIC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTc0NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW50ZXJ2YWwgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdWlkL3VzZXIgbmFtZSAtICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk2NworIywgYy1mb3JtYXQKK21zZ2lkICJtbXBfdXBkYXRlX2ludGVydmFsIHRvbyBiaWc6ICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaXBlLXdpZHRoOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjA1MAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUyNAorbXNnaWQgIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDEgcmVzaXplL3Jlc2l6ZTJmcy5jOjEyNzYKK21zZ2lkICJibG9ja3MgdG8gYmUgbW92ZWQiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU4NworbXNnaWQgIiIKKyJFcnJvciBpbiByZXNpemluZyB0aGUgaW5vZGUgc2l6ZS5cbiIKKyJSdW4gZTJ1bmRvIHRvIHVuZG8gdGhlIGZpbGUgc3lzdGVtIGNoYW5nZXMuIFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBibG9jayBtYWdpYyBpcyBiYWQuIFRyeSB0byBmaXggaXQgYnkgcnVubmluZzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBuZSBlc3RhcyBrYcWdcHJvdG9rb2xhIGFwYXJhdG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4NDIKK21zZ2lkICJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXJyb3IgYmVoYXZpb3IgdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDUKK21zZ2lkICIiCisiXG4iCisiU2V0dGluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2MAorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA0OAorbXNnaWQgIlRoZSBVVUlEIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJOZWNlc2FzIMSdaXNkYXRpZ2kga2HFnXByb3Rva29sYW4gxIllZmJsb2tvbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJOdXIgZWJsYXMgxZ1hbsSdaSBpLW5vZGFuIGdyYW5kb24ga2lhbSBkb3NpZXJzaXN0ZW1vIG5lIGVzdGFzIHN1cm1ldGF0YS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIgorbXNnc3RyICJBcmdvcmRpxJ1hcyBpLW5vZGEgZ3JhbmRvIGFsICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIkZpYXNraXMgxZ1hbsSdbyBkZSBpLW5vZGEgZ3JhbmRvXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICIlczogcmVzdGHFrXJpxJ1hcyBrYcWdcHJvdG9rb2xvLi4uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjEzOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aWxsIG5vdCBtYWtlIGEgJXMgaGVyZSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoxNDUKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoxNjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugam91cm5hbCBvcHRpb25zIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IGZpbmQgam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyMTMKK21zZ2lkICIiCisiXG4iCisiQmFkIGpvdXJuYWwgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiSm91cm5hbCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgam91cm5hbCBvcHRpb25zIGFyZTpcbiIKKyJcdHNpemU9PGpvdXJuYWwgc2l6ZSBpbiBtZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PGpvdXJuYWwgZGV2aWNlPlxuIgorIlx0bG9jYXRpb249PGpvdXJuYWwgbG9jYXRpb24+XG4iCisiXG4iCisiVGhlIGpvdXJuYWwgc2l6ZSBtdXN0IGJlIGJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgZmlsZXN5c3RlbSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkRvc2llcnNpc3RlbW8gdHJvIG1hbGdyYW5kYXMgcG9yIGhhdmkga2HFnXByb3Rva29sb24uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJLYcWdcHJvdG9rb2xhIGdyYW5kbyB0cm8gZ3JhbmRhcyBwb3IgZG9zaWVyc2lzdGVtby5cbiIKKworIzogbWlzYy91dGlsLmM6MjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIGZpbGVzeXN0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgZXZlcnkgJWQgbW91bnRzIG9yXG4iCisiJWcgZGF5cywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAta1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgInV1aWRkIGRhZW1vbiBhbHJlYWR5IHJ1bm5pbmcgYXQgcGlkICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCBzdWJzZXF1ZW50IFVVSURzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGtpbGwgdXVpZGQgcnVubmluZyBhdCBwaWQgJWQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjU5MgorIywgYy1mb3JtYXQKK21zZ2lkICJLaWxsZWQgdXVpZGQgcnVubmluZyBhdCBwaWQgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZGV2aWNlIFstYnwtc3xuZXdfc2l6ZV0gIgorIlsteiB1bmRvX2ZpbGVdXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZiAlcycgZmlyc3QuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXQgYW5kIHVuc2V0IDY0Yml0IGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgb24gYSBmaWxlc3lzdGVtIHRoYXQgaXMgbGFyZ2VyIHRoYW4gMl4zMiAiCisiYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJOdXIgZWJsYXMgxZ1hbsSdaSBpLW5vZGFuIGdyYW5kb24ga2lhbSBkb3NpZXJzaXN0ZW1vIG5lIGVzdGFzIHN1cm1ldGF0YS5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxhIGRvc2llcnNpc3RlbW8gamFtIGhhdmFzICVsbHUgYmxva29qbiAoZGUgJWRLKS4gIE5lbmlvIGZhcmVuZGFzLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIkRvc2llcnNpc3RlbW8gamFtIGhhdmFzIGthxZ1wcm90b2tvbG9uLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgIkRvc2llcnNpc3RlbW8gamFtIGhhdmFzIGthxZ1wcm90b2tvbG9uLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjYxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDMyLWJpdC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjYxMgorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiRG9zaWVyc2lzdGVtbyBzdXIgJXMgcmVncmFuZGlnacSdYXMgYWwgJWxsdSBibG9rb2ogKGRlICVkSykuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgImR1bSBwcm92byBkZSByZWdyYW5kaWdpICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEb3NpZXJzaXN0ZW1vIHN1ciAlcyBudW4gaGF2YXMgJWxsdSBibG9rb2puIChkZSAlZEspLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjgxCittc2dpZCAia2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6ZSB3aXRoIHNwYXJzZV9zdXBlcjIiCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6Mjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBhZGQgZ3JvdXAgIyVkIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibm92YWogbWV0YWJsb2tvaiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnZXh0Ml9maWxzeXMnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnYmFkYmxvY2tzX2xpc3QnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnYmFkYmxvY2tzX2l0ZXJhdGUnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdpbm9kZV9zY2FuJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnaW9fY2hhbm5lbCciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIFVuaWtzYSBzdHJ1a3R1cm8gJ2lvX2NoYW5uZWwnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdpb19tYW5hZ2VyJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdibG9ja19iaXRtYXAnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk1hbMSddXN0YXMgbWFnaWEgbnVtZXJvIHBvciBzdHJ1a3R1cm8gJ2lub2RlX2JpdG1hcCciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdnZW5lcmljX2JpdG1hcCciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAndGVzdCBpb19jaGFubmVsJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIk1hbMSddXN0YXMgbWFnaWEgbnVtZXJvIHBvciBzdHJ1a3R1cm8gJ2Jsb2NrIGxpc3QnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGljb3VudCBzdHJ1Y3R1cmUiCittc2dzdHIgIk1hbMSddXN0YXMgbWFnaWEgbnVtZXJvIHBvciBzdHJ1a3R1cm8gJ2ljb3VudCciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnUG93ZXJxdWVzdCBpb19jaGFubmVsJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdleHQyIGZpbGUnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIEV4dDIgSW1hZ2UgSGVhZGVyIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3IgJ0V4dDIgSW1hZ2UgSGVhZGVyJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZSBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTWFsxJ11c3RhcyBtYWdpYSBudW1lcm8gcG9yIHN0cnVrdHVybyAnaW9fY2hhbm5lbCciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3IgJ2V4dDQgZXh0ZW50IGhhbmRsZSciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2siCittc2dzdHIgIk1hbGJvbmFzIG1hZ2lhIG51bWVybyBlbiDEiWVmYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIkRvc2llcnNpc3RlbWEgcmV2aXppbyB0cm8gYWx0YXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICJQcm92byBkZSBza3JpYmkgYWwgZG9zaWVyc2lzdGVtbyBraXUgbWFsZmVybWnEnWlzIGtpZWwgbnVybGVnYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgbGVnaSBncnVwYWpuIHByaWHEtW9qbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM0Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIk1hbHN1a2Nlc2lzIHNrcmliaSBncnVwYWpuIHByaWHEtW9qbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiRGlmZWt0YSBncnVwcHJpYcS1bzogbWFsYm9uYSBibG9rbyBwb3IgYmxva2EgYml0bWFwbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRGlmZWt0YSBncnVwcHJpYcS1bzogbWFsYm9uYSBibG9rbyBwb3IgaS1ub2RhIGJpdG1hcG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNworbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRGlmZWt0YSBncnVwcHJpYcS1bzogbWFsYm9uYSBibG9rbyBwb3IgaS1ub2RhIHRhYmVsbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJNYWxzdWtjZXNpcyBza3JpYmkgaS1ub2RhbiBiaXRtYXBvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk1hbHN1a2Nlc2lzIGxlZ2kgaS1ub2RhbiBiaXRtYXBvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIk1hbHN1a2Nlc2lzIHNrcmliaSBibG9rYW4gYml0bWFwb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MQorbXNnaWQgIkNhbid0IHJlYWQgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIk1hbHN1a2Nlc2lzIGxlZ2kgYmxva2FuIGJpdG1hcG9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgc2tyaWJpIGktbm9kYW4gdGFiZWxvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgbGVnaSBpLW5vZGFuIHRhYmVsb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgbGVnaSBzZWt2YW4gaS1ub2RvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ1Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5leHBlY3RlZCBibG9jayBzaXplIgorbXNnc3RyICJEb3NpZXJzaXN0ZW1vIGhhdmFzIG5lYXRlbmRpdGFuIGJsb2tncmFuZG9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIkVYVDItZG9zaWVydWpvIGVzdGFzIGRpZmVrdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAiUHJvdm8gZGUgbGVnaSBibG9rb24gZWwgZG9zaWVyc2lzdGVtbyByZXp1bHRpcyBlbiBtYWxsb25nYSBsZWdvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIlByb3ZvIGRlIHNrcmliaSBibG9rb24gYWwgZG9zaWVyc2lzdGVtbyByZXp1bHRpcyBlbiBtYWxsb25nYSBza3JpYm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gdGhlIGRpcmVjdG9yeSIKK21zZ3N0ciAiRG9zaWVydWpvIG5lIGhhdmFzIGxpYmVyYW4gc3BhY29uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiSS1ub2RhIGJpdG1hcG8gbmUgZXN0YXMgxZ1hcmdhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MQorbXNnaWQgIkJsb2NrIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJCbG9rYSBiaXRtYXBvIG5lIGVzdGFzIMWdYXJnYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTIKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciIKK21zZ3N0ciAiTmV2YWxpZGEgaS1ub2RhIG51bWVybyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIk5ldmFsaWRhIGJsb2thIG51bWVybyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgIioqaW50ZXJuYSBwcm9ncmFtbWlzbyoqIGVuICdleHQyZnNfZXhwYW5kX2RpcigpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU1Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICJNYWxzdWZpxIlhcyBzcGFjbyBwb3Iga29uc3RydWkgcHJvcG9uYXRhIGRvc2llcnNpc3RlbW8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIk5ldmFsaWRhIGJsb2tudW1lcm8gZG9uacSdaXMgYWwgJ2V4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJOZXZhbGlkYSBibG9rbnVtZXJvIGRvbmnEnWlzIGFsICdleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiTmV2YWxpZGEgYmxva251bWVybyBkb25pxJ1pcyBhbCAnZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwKCknIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJOZXZhbGlkYSBpLW5vZG51bWVybyBkb25pxJ1pcyBhbCAnZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwKCknIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIk5ldmFsaWRhIGktbm9kbnVtZXJvIGRvbmnEnWlzIGFsICdleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiTmV2YWxpZGEgaS1ub2RudW1lcm8gZG9uacSdaXMgYWwgJ2V4dDJmc190ZXN0X2lub2RlX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICJQcm92byBkZSBzbXVyZmkgbGEgZmlub24gZGUgYmxva2EgYml0bWFwbyB0cmFucyBsYSB2ZXJhIGZpbm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiUHJvdm8gZGUgc211cmZpIGxhIGZpbm9uIGRlIGktbm9kYSBiaXRtYXBvIHRyYW5zIGxhIHZlcmEgZmlubyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiVHJvdmnEnWlzIG5ldmFsaWRhIG5lcmVrdGEgYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJUcm92acSdaXMgbmV2YWxpZGEgZHVvYmxlIG5lcmVrdGEgYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJUcm92acSdaXMgbmV2YWxpZGEgdHJpb2JsZSBuZXJla3RhIGJsb2tvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkJsb2thaiBiaXRtYXBvaiBuZSBzYW1hcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJJLW5vZGFqIGJpdG1hcG9qIG5lIHNhbWFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiTmV2YWxpZGEgYcWtIG1pc2Zvcm1pdGEgYXBhcmF0bm9tbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJNYW5rYXMgaS1ub2RhIHRhYmVsbyBlbiBpdSBibG9rYSBncnVwbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJMYSBFeHQyLcSJZWZibG9rbyBlc3RhcyBkaWZla3RhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIk5ldmFsaWRhIGtvbXVuYSBiaXRudW1lcm8gZG9uacSdaXMgYWwgJ2V4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwKCknIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiTmV2YWxpZGEga29tdW5hIGJpdG51bWVybyBkb25pxJ1pcyBhbCAnZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJOZXZhbGlkYSBrb211bmEgYml0bnVtZXJvIGRvbmnEnWlzIGFsICdleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCgpJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICJUcm92acSdaXMgdHJvIG11bHRhaiBkYSBzaW1ib2xhaiBsaWdvai4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICJMYSByZWZlcmVuY3Zva2EgZnVua2NpbyBuZSBrYXBhYmxhcyB0cmFrdGkgxIlpIHRpdW4ga2F6b24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTGEgaS1ub2RvIGVzdGFzIGVsIG1hbGJvbmEgYmxva28gZW4gbGEgaS1ub2RhIHRhYmVsbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiRG9zaWVyc2lzdGVtbyBoYXZhcyBuZXN1YnRlbmF0YShqKW4ga2FwYWJsbyhqKW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIHJlYWQtb25seSBmZWF0dXJlKHMpIgorbXNnc3RyICJEb3NpZXJzaXN0ZW1vIGhhdmFzIG5lc3VidGVuYXRhKGopbiBudXJsZWdhKGopbiBrYXBhYmxvKGopbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJFbi1lbGlnYSBrYW5hbG8gbWFsc3VrY2VzaXMgZmFyaSAnc2VlaycgamUgbGVnYWRvIGHFrSBza3JpYmFkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICJNYW5rYXMgc3VmacSJYSBtZW1vcm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAiTmV2YWxpZGEgYXJndW1lbnRvIGRvbmnEnWlzIGFsIEV4dDItYmlibGlvdGVrbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgYXNpZ25pIGJsb2tvbiBlbiBFeHQyLWRvc2llcnNpc3RlbW8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIk1hbHN1a2Nlc2lzIGFzaWduaSBpLW5vZG9uIGVuIEV4dDItZG9zaWVyc2lzdGVtbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIkV4dDItaS1ub2RvIG5lIGVzdGFzIGRvc2llcnVqbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAiVHJvIG11bHRhaiByZWZlcmVuY29qIGVuIHRhYmVsbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg3Cittc2dpZCAiRmlsZSBub3QgZm91bmQgYnkgZXh0Ml9sb29rdXAiCittc2dzdHIgIkRvc2llcm8gbmUgdHJvdmnEnWlzIHBlciAnZXh0Ml9sb29rdXAoKSciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIkRvc2llcm8gZXN0YXMgbWFsZmVybWEgbnVybGVnZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg5Cittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJFeHQyLWRvc2llcnVqYSBibG9rbyBuZSB0cm92acSdaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFeHQyLWRvc2llcnVqbyBqYW0gZWt6aXN0YXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICJOZXJlYWxpZ2l0YSBmdW5rY2lvIGVuIEV4dDItYmlibGlvdGVrbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICJOdWxpZ28gcGV0acSdaXMgZGUgdXphbnRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTMKK21zZ2lkICJFeHQyIGZpbGUgdG9vIGJpZyIKK21zZ3N0ciAiRXh0Mi1kb3NpZXJvIHRybyBncmFuZGFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIkluZGlrYXRhIGthxZ1wcm90b2tvbGEgYXBhcmF0byBuZSBlc3RhcyBibG9rYXBhcmF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiS2HFnXByb3Rva29sYSDEiWVmYmxva28gbmUgdHJvdmnEnWlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIkthxZ1wcm90b2tvbG8gZGV2YXMgZXN0aSBtaW5pbXVtZSAxMDI0IGJsb2tvaiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJOZXN1YnRlbmF0YSBrYcWdcHJvdG9rb2xhIHZlcnNpbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJFcmFybyBkdW0gxZ1hcmdvIGRlIGVrc3RlcmEga2HFnXByb3Rva29sbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk5Cittc2dpZCAiSm91cm5hbCBub3QgZm91bmQiCittc2dzdHIgIkthxZ1wcm90b2tvbG8gbmUgdHJvdmnEnWlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIlVqYSBoYWtldG8gbmUgc3VidGVuYXRhcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiTmV2YWxpZGEgbnVtZXJvIGRlIGJsb2tvIGRlIGV0ZW5kaXRhaiBhdHJpYnV0b2oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiTmUgZWJsYXMga3JlaSBkb3NpZXJzaXN0ZW1vbiBrdW4gbGEgcGV0YXRhIG5vbWJybyBkZSBpLW5vZG9qIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICJTbmFwxZ1vdG8gZGUgJ2UyaW1hZ2UnIG5lIHV6acSdYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAiVHJvIG11bHRlIGRhIHJlemVydml0YWogZ3J1cHByaWHEtWFqIGJsb2tvaiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICJSZWdyYW5kaWdhIGktbm9kbyBlc3RhcyBkaWZla3RhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJQcm92byBkZSBhZ29yZGkgYmxva2FuIGJpdG1hcG9uIGt1biBtYW5rYW50YSBuZXJla3RhIGJsb2tvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6IFN1a2Nlc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDgKK21zZ2lkICJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCittc2dzdHIgIlREQjogRGlmZWt0YSBkYXR1bWJhem8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJUREI6IEVuLWVsaWdhIGVyYXJvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IFJpZ2xhIGVyYXJvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTExCittc2dpZCAiVERCOiBPdXQgb2YgbWVtb3J5IgorbXNnc3RyICJUREI6IE1hbmthcyBzdWZpxIlhIG1lbW9ybyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCOiBSaWtvcmRvIGVremlzdGFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IFJpZ2xvIGVremlzdGFzIGplIGFsaWFqIMWdbG9zaWxvaiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorbXNnaWQgIlREQjogSW52YWxpZCBwYXJhbWV0ZXIiCittc2dzdHIgIlREQjogTmV2YWxpZGEgcGFyYW1ldHJvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE1Cittc2dpZCAiVERCOiBSZWNvcmQgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIlREQjogUmlrb3JkbyBuZSBla3ppc3RhcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiVERCOiBTa3JpYm8gbmUgcGVybWVzYXRhcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiRXh0Mi1kb3NpZXJ1amEgYmxva2EgbGlzdG8gdmFrYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICJQcm92byBkZSDFnWFuxJ1pIGJsb2thc2lnbm9uIHBlciBudXJsZWdhIGJsb2tpdGVyaWxvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gcG9yICdleHQ0IGV4dGVudCBzYXZlZCBwYXRoJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gcG9yIDY0LWJpdGEga29tdW5hIGJpdG1hcG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCittc2dzdHIgIk1hbMSddXN0YXMgbWFnaW51bWVybyBwb3IgNjQtYml0YSBibG9rYSBiaXRtYXBvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gcG9yIDY0LWJpdGEgaS1ub2RhIGJpdG1hcG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzEzIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE2IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE5IgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2ludW1lcm8gLS0gUkVTRVJWRURfMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIkRpZmVrdGEgYW1wbGVrc2EgxIlhcG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAiRGlmZWt0YSBhbXBsZWtzYSBpbmRla3NvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIkRpZmVrdGEgYW1wbGVrc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIkFtcGxla3NtYXBvIG5lIGhhdmFzIGxpYmVyYW4gc3BhY29uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgIkktbm9kbyBuZSB1emFzIGFtcGxla3Nvam4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJNYWxlc3RhcyAnbmV4dCctYW1wbGVrc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiTWFsZXN0YXMgJ3ByZXZpb3VzJy1hbXBsZWtzbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICJNYWxlc3RhcyAndXAnLWFtcGxla3NvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM4Cittc2dpZCAiTm8gJ2Rvd24nIGV4dGVudCIKK21zZ3N0ciAiTWFsZXN0YXMgJ2Rvd24nLWFtcGxla3NvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM5Cittc2dpZCAiTm8gY3VycmVudCBub2RlIgorbXNnc3RyICJOZW5pdSBha3R1YWxhIG5vZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgInRpdSBFeHQyZnMtb3BlcmFjaW8gbmUgc3VidGVuYXRhcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJNYW5rYXMgc3BhY28gcG9yIGVubWV0aSBhbXBsZWtzb24gZW4gbm9kbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAiRmVuZG8gcmV6dWx0dXMgZW4gdmFrYSBub2RvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAiQW1wbGVrc28gbmUgdHJvdmnEnWlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIk9wZXJhY2lvIG5lIHN1YnRlbmF0YXMgcG9yIGktbm9kb2oga2l1aiBlbmhhdmFzIGFtcGxla3Nvam4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDUKK21zZ2lkICJFeHRlbnQgbGVuZ3RoIGlzIGludmFsaWQiCittc2dzdHIgIkFtcGxla3NhIGxvbmdvIG1hbHZhbGlkYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICJFbi1lbGlnYSBrYW5hbG8gbmUgc3VidGVuYXMgNjQtYml0YWpuIGJsb2tudW1lcm9qbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyJOZSBlYmxhcyBrb250cm9saSBzZSBkb3NpZXJzaXN0ZW1vIGVzdGFzIG11bnRpdGEsIMSJYXIgbWFua2FzIGRvc2llcm8gJ210YWInIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICJEb3NpZXJzaXN0ZW1vIHRybyBncmFuZGFzIHBvciB1emkgYXJrYWlrYWpuIGJpdG1hcG9qbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIk1NUDogbmV2YWxpZGEgbWFnaWEgbnVtZXJvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUwCittc2dpZCAiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKK21zZ3N0ciAiTU1QOiBhcGFyYXRvIG51bmUgYWt0aXZhcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDogJ2ZzY2snIHJ1bGFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUyCittc2dpZCAiTU1QOiBibG9jayBudW1iZXIgYmV5b25kIGZpbGVzeXN0ZW0gcmFuZ2UiCittc2dzdHIgIk1NUDogYmxva251bWVybyB0cmFuc3Bhc2FzIGRvc2llcnNpc3RlbWFuIGdhbW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVA6IHNwZXJ0YXMgbmVrb25hdGFuIG9wZXJhY2lvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorbXNnaWQgIk1NUDogZmlsZXN5c3RlbSBzdGlsbCBpbiB1c2UiCittc2dzdHIgIk1NUDogZG9zaWVyc2lzdGVtbyBhbmtvcmHFrSB1emnEnWFzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU1Cittc2dpZCAiTU1QOiBvcGVuIHdpdGggT19ESVJFQ1QgZmFpbGVkIgorbXNnc3RyICJNTVA6IG1hbHN1a2Nlc2lzIG1hbGZlcm1vIGt1biAnT19ESVJFQ1QnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAiTWFsxJ11c3RhcyBncmFuZG8gZGUgYmxva2dydXBwcmlhxLVvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgIktvbnRyb2xzdW1vIGRlIGktbm9kbyBuZSBrb25rb3JkYXMga3VuIGktbm9kbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIktvbnRyb2xzdW1vIGRlIGktbm9kYSBiaXRtYXBvIG5lIGtvbmtvcmRhcyBrdW4gYml0bWFwbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIktvbnRyb2xzdW1vIGRlICdleHRlbnQnLWJsb2tvIG5lIGtvbmtvcmRhcyBrdW4gYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkRvc2llcnVqYSBibG9rbyBuZSBoYXZhcyBzcGFjb24gcG9yIGtvbnRyb2xzdW1vIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgZG9zaWVydWphIGJsb2tvIG5lIGtvbmtvcmRhcyBrdW4gZG9zaWVydWphIGJsb2tvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICJLb250cm9sc3VtbyBkZSBibG9rbyBkZSBldGVuZGl0YWogYXRyaWJ1dG9qIG5lIGtvbmtvcmRhcyBrdW4gYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIktvbnRyb2xzdW1vIGRlIMSJZWZibG9rbyBuZSBrb25rb3JkYXMga3VuIMSJZWZibG9rbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NAorbXNnaWQgIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorbXNnc3RyICJOZWtvbmF0YSBrb250cm9sc3VtYSBhbGdvcml0bW8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICJLb250cm9sc3VtbyBkZSBNTVAtYmxva28gbmUga29ua29yZGFzIGt1biBNTVAtYmxva28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkV4dDItZG9zaWVybyBqYW0gZWt6aXN0YXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjcKKyMsIGZ1enp5Cittc2dpZCAiQmxvY2sgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgaS1ub2RhIGJpdG1hcG8gbmUga29ua29yZGFzIGt1biBiaXRtYXBvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY4Cittc2dpZCAiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIG5hbWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzAKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiS29udHJvbHN1bW8gZGUgYmxva28gZGUgZXRlbmRpdGFqIGF0cmlidXRvaiBuZSBrb25rb3JkYXMga3VuIGJsb2tvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJOZXZhbGlkYSBudW1lcm8gZGUgYmxva28gZGUgZXRlbmRpdGFqIGF0cmlidXRvaiIKKworIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjICoqKiBMYSBzZWt2YWogbWFsbG9uZ2lnb2ogcHJlc2thxa0gxIlpdWogdXppxJ1hcyBlbiBsYSB0cmFkdWtvLiAqKioKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiYWV0ZW5kaXRhIGF0cmlidXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzUKK21zZ2lkICJGaWxlc3lzdGVtIGlzIG1pc3NpbmcgZXh0X2F0dHIgb3IgaW5saW5lX2RhdGEgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiSS1ub2RvIG5lIHV6YXMgYW1wbGVrc29qbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKKyMsIGZ1enp5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiQW1wbGVrc21hcG8gbmUgaGF2YXMgbGliZXJhbiBzcGFjb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzkKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgc3RydWN0dXJlIgorbXNnc3RyICJNYWzEnXVzdGFzIG1hZ2lhIG51bWVybyBwb3Igc3RydWt0dXJvICdleHQyIGZpbGUnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCisjLCBmdXp6eQorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0IgorbXNnc3RyICJSZWdyYW5kaWdhIGktbm9kbyBlc3RhcyBkaWZla3RhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorIywgZnV6enkKK21zZ2lkICJGaWxlIHN5c3RlbSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIlJlZ3JhbmRpZ2EgaS1ub2RvIGVzdGFzIGRpZmVrdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJMYSBFeHQyLcSJZWZibG9rbyBlc3RhcyBkaWZla3RhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiUmVncmFuZGlnYSBpLW5vZG8gZXN0YXMgZGlmZWt0YSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX25vZGUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNAorbXNnaWQgIlByb2ZpbGUgcmVsYXRpb24gbm90IGZvdW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE2Cittc2dpZCAiQSBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIGhhcyBhIG5vbi16ZXJvIHZhbHVlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTcKK21zZ2lkICJCYWQgbGlua2VkIGxpc3QgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTgKK21zZ2lkICJCYWQgZ3JvdXAgbGV2ZWwgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjUKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSBzZWN0aW9uIGhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI2Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNworbXNnaWQgIkV4dHJhIGNsb3NpbmcgYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI4Cittc2dpZCAiTWlzc2luZyBvcGVuIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3QiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3NlY3Rpb25fdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMgorbXNnaWQgIkludmFsaWQgcHJvZmlsZV9zZWN0aW9uIG9iamVjdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIk1hbHZhbGlkYSBidWxlYSB2YWxvcm8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIk1hbHZhbGlkYSBlbnRqZXJhIHZhbG9ybyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0Y3JlYXRlZCBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vZGlmaWVkIG9uICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4MAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZSAlcyBkb2VzIG5vdCBleGlzdCBhbmQgbm8gc2l6ZSB3YXMgc3BlY2lmaWVkLlxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAiS3JlacSdYXMgbm9ybWFsYSBkb3NpZXJvICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiTWFsc3VrY2VzaXMgbWFsZmVybWkgJXM6ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgZW5oYXZhcyAlcy1kb3NpZXJzaXN0ZW1vbiBrdW4gZXRpa2VkbyAnJXMnXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGVuaGF2YXMgJXMtZG9zaWVyc2lzdGVtb25cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgZW5oYXZhcyAlcy1kb3NpZXJzaXN0ZW1vblxuIgorCisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICJNYWx2YWxpZGEgYXJndW1lbnRvIHBvciAncXVvdGF0eXBlJzogJXNcbiIKKworI34gbXNnaWQgIkBpICVpIGhhcyBAY2lvbiBmbGFnIHNldCBvbiBAZiB3aXRob3V0IEBjaW9uIHN1cHBvcnQuICAiCisjfiBtc2dzdHIgIiIKKyN+ICJAaSAlaSBoYXZhcyBqZXNhbiBkZW5zaWdhbiBmbGFnb24gZW4gZG9zaWVyc2lzdGVtbyBzZW4gc3VidGVubyBwb3IgIgorI34gImRlbnNpZ28uICAiCisKKyN+IG1zZ2lkICJAQSBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiQEEgZGUgQGIgJWIgcG9yIGV0ZW5kaXRhaiBhdHJpYnV0b2ouICAiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCBuZXV6aXRhaiBpLW5vZG9qICV1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gb3BlbiAlc1xuIgorI34gbXNnc3RyICJNYWxzdWtjZXNpcyBtYWxmZXJtaSAlc1xuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2VzLmdtbyBiL2UyZnNwcm9ncy9wby9lcy5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJjMmJlZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9lcy5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2VzLnBvIGIvZTJmc3Byb2dzL3BvL2VzLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkODIxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZXMucG8KQEAgLTAsMCArMSw4ODkxIEBACisjIE1lbnNhamVzIGVuIGVzcGHDsW9sIHBhcmEgZTJmc3Byb2dzLgorIyBUT0RPIHBvciBvIHBhcmEKKyMgQ29weXJpZ2h0IChDKSAyMDE0IFRoZW9kb3JlIFRzbyAobXNnaWRzKQorIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZTJmc3Byb2dzIHBhY2thZ2UuCisjCisjIE1heCBkZSBNZW5kaXrDoWJhbCA8bWF4QHVwbi5teD4sIDIwMDMsIDIwMDUuCisjIEJlbm5vIFNjaHVsZW5iZXJnIDxiZW5ub0B2ZXJ0YWFsdC5ubD4sIDIwMDgsIDIwMTQuCisjIEFudG9uaW8gQ2ViYWxsb3MgPGFjZWJhbGxvc0BnbWFpbC5jb20+LCAyMDE0LCAyMDE1LgorIworIyBDb21pZW56byBkZSB1biB2b2NhYnVsYXJpbyAobGlzdGEgZGUgcGFsYWJyYXMgdXNhZGFzIGFxdcOtKToKKyMgYmxvY2sgLS0+IGJsb3F1ZQorIyBiYWQgYmxvY2sgLS0+IGJsb3F1ZSBkYcOxYWRvCisjIGlub2RlIC0tPiBub2RvLWkKKyMgYml0bWFwIC0tPiBtYXBhIGRlIGJpdHMKKyMgaWdub3JlIC0tPiBkZXNjYXJ0YXIKKyMgZXh0ZW50IC0tPiDCq2V4dGVudMK7IFRCQworIyBqb3VybmFsIC0+IGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcworIyBzb2NrZXQgLT4gwqtzb2NrZXTCuyBUQkMKKyMgcmVndWxhciBmaWxlIC0+IGZpY2hlcm8gb3JkbmFyaW8sIG5vcm1hbCBUQkMKKyMgY2hlY2tzdW0gLT4gwqtjaGVja3N1bcK7LCBzdW1hIGRlIHZlcmlmaWNhY2nDs24gVEJDCisjIGxvc3QrZm91bmQgLT4gbG9zdCtmb3VuZAorIyBsb29wIC0+IGJ1Y2xlCisjIGNsdXN0ZXIgLT4gVEJECisjIHByb2ZpbGUgLT4gwqtwcm9maWxlwrsgVEJDCisjIHByb2ZpbGUgZmlsZSAtPiBmaWNoZXJvIMKrcHJvZmlsZcK7IFRCQworIyAuLi4KKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MtMS40Mi4xMi1wcmUyXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTAyLTAzIDIzOjI5KzAxMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEFudG9uaW8gQ2ViYWxsb3MgPGFjZWJhbGxvc0BnbWFpbC5jb20+XG4iCisiTGFuZ3VhZ2UtVGVhbTogU3BhbmlzaCA8ZXNAdHAub3JnLmVzPlxuIgorIkxhbmd1YWdlOiBlc1xuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgorIlgtR2VuZXJhdG9yOiBMb2thbGl6ZSAxLjBcbiIKKworIyBPam86ICJUbyBpZ25vcmUiIG5vIGVzIGlnbm9yYXIgc2lubyAibm8gdGVuZXIgZW4gY3VlbnRhIiwKKyMgInBhc2FyIHBvciBhbHRvIiwgZXRjLiBZYSBzw6kgcXVlICJpZ25vcmFyIiBzZSBlbnRpZW5kZSwgcGVybyBzw7NsbworIyBwb3JxdWUgc3UgbWFsIHVzbyBlc3TDoSBtdXkgZXh0ZW5kaWRvLiBzdgorIyDCv1F1w6kgdGFsICJzZSBkZXNjYXJ0YSI/IE1lIGd1c3RhcsOtYSBzYWJlciBzaSBoYXkgYWxnw7puIGdsb3NhcmlvIGRlCisjIGZyYXNlcyBwYXJhIHRyYWR1Y2lyIHByb2dyYW1hcyBHTlUsIHNvbiBjb3NhcyBxdWUgZGViZXLDrWFuIHNlcgorIyBlc3TDoW5kYXIuIG1tCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAiRWwgYmxvcXVlIGRhw7FhZG8gJXUgZXN0w6EgZnVlcmEgZGVsIGludGVydmFsbzsgc2UgZGVzY2FydGEuXG4iCisKKyMgRW4gZWwgSyZSIHNlIGhhYmxhIGRlIG5vZG8taS4gwr9DdcOhbGVzIHNvbiBsYXMgcmF6b25lcyBhIGZhdm9yIHkgZW4gY29udHJhCisjIGRlICJub2RvIGkiIHNvYnJlICJub2RvLWkiPyBzdgorIyBFbCBwbHVyYWwuIFBlcm8gZXN0w6EgYmllbiwgYWRvcHRvIGxhIGNvbnZlbmNpw7NuIEsmUi4gbW0KKyM6IGUyZnNjay9iYWRibG9ja3MuYzo0NgorbXNnaWQgIndoaWxlIHNhbml0eSBjaGVja2luZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgcmV2aXNhYmEgbGEgc2FsdWQgZGVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIgorCisjIFlvIHBvbmRyw61hIG1lam9yICJlbCBub2RvIGkgZGUgYmxvcXVlcyBkYcOxYWRvcyIuIE5vIHPDqSBtdWNobyBzb2JyZSBlbAorIyBmb3JtYXRvIGV4dDIsIHBlcm8gY3JlbyBxdWUgZXMgbXV5IHBvc2libGUgcXVlIGhheWEgdW4gbm9kby1pIGVzcGVjaWFsCisjIGN1eWEgdGFyZWEgc2VhIHByZWNpc2FtZW50ZSBsYSBkZSByZWNvcmRhciBjdcOhbGVzIHNvbiBsb3MgYmxvcXVlcworIyBkYcOxYWRvcy4gSW52ZXN0aWdhcmxvIGVuIGNhc28gZGUgZHVkYS4gc3YKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGFicmlyICVzIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSBhYnJpciB1bmEgdHViZXLDrWEgYSAnJXMnIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIHVuYSBsaXN0YSBkZSBibG9xdWVzIGRhw7FhZG9zIGRlc2RlIHVuIGZpY2hlcm8iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGFjdHVhbGl6YWJhIGVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIgorCisjIFNvbGVtb3MgdHJhZHVjaXIgV2FybmluZyBwb3IgQXRlbmNpw7NuLiBzdgorIyBPaywgdW5pZm9ybWl6by4gbW0KKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisiQXRlbmNpw7NuOiBzZSBlbmNvbnRyw7MgdW4gYmxvcXVlIG5vIHbDoWxpZG8gJXUgZW4gZWwgbm9kby1pIGRlIGJsb3F1ZXMgIgorImRhw7FhZG9zLiBMaW1waWFkby5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJyb3IgYWwgbGVlciBlbCBibG9xdWUgJWx1ICglcykgbWllbnRyYXMgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkVycm9yIGFsIGxlZXIgZWwgYmxvcXVlICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiRGVzY2FydGFyIGVsIGVycm9yIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIkZvcnphciBsYSByZWVzY3JpdHVyYSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkVycm9yIGFsIGVzY3JpYmlyIGVsIGJsb3F1ZSAlbHUgKCVzKSBtaWVudHJhcyAlcy4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkVycm9yIGFsIGVzY3JpYmlyIGVsIGJsb3F1ZSAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgImJsb3F1ZXMgZGUgZGlyZWN0b3JpbyB2YWPDrW9zIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo2MgorbXNnaWQgImVtcHR5IGRpciBtYXAiCittc2dzdHIgIm1hcGEgZGUgZGlyZWN0b3Jpb3MgdmFjw61vIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiRWwgYmxvcXVlIGRlbCBkaXJlY3RvcmlvICV1ICgjJWQpIGVzdMOhIHZhY8OtbyBlbiBlbCBub2RvLWkgJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczogJXMgZmljaGVybyBuw7ptZXJvZGVibG9xdWVzIHRhbWHDsW9kZWxibG9xdWVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiwqFOw7ptZXJvIGludsOhbGlkbyBkZSBibG9xdWVzIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJObyBzZSBwdWVkZSByZXNlcnZhciB1biBiw7pmZXIgZGUgYmxvcXVlcyAodGFtYcOxbz0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorIywgZnV6enkKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kb3MtaSBkZSBmaWNoZXJvcyBub3JtYWxlcyIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIk1vZG8gZGUgZW1wbGVvOiAlcyBkaXNjb1xuIgorCisjOiBlMmZzY2svZmx1c2hiLmM6NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQkxLRkxTQlVGIGlvY3RsIG5vdCBzdXBwb3J0ZWQhICBDYW4ndCBmbHVzaCBidWZmZXJzLlxuIgorbXNnc3RyICIiCisiwqFObyBlc3TDoSBpbXBsZW1lbnRhZG8gZWwgY29udHJvbCBkZSBlbnRyYWRhL3NhbGlkYSBkZWwgQkxLRkxTQlVGISBObyBzZSAiCisicHVlZGVuIHZhY2lhciBsb3MgYsO6ZmVycy5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICIiCisiTW9kbyBkZSBlbXBsZW86ICVzIFstRl0gWy1JIGJsb3F1ZXNfZGVsX2LDumZlcl9kZWxfbm9kb19pXSBkaXNwb3NpdGl2b1xuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgIm1pZW50cmFzIHNlIGFicsOtYSAlcyBwYXJhIHN1IHZhY2lhZG8iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSB2YWNpYXIgJXMiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgYWJyaXIgJyVzJyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTE5IGUyZnNjay9zY2FudGVzdC5jOjExNCBtaXNjL2UyaW1hZ2UuYzoxMjkzCittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbmljaWFiYSBsYSBleHBsb3JhY2nDs24gZGUgbG9zIG5vZG9zLWkiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEyNyBtaXNjL2UyaW1hZ2UuYzoxMzEyCittc2dpZCAid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIgorbXNnc3RyICJtaWVudHJhcyBzZSBvYnRlbsOtYSBlbCBub2RvLWkgc2lndWllbnRlIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiV1IG5vZG9zLWkgZXhwbG9yYWRvcy5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJsZXllbmRvIGVsIHN1cGVyYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXNcbiIKKworIyBPam86IE5vIGVzIHF1ZSBzZSBoYXlhIGVuY29udHJhZG8gdW4gc3VwZXJibG9xdWUgcXVlIHJlc3VsdGEgcXVlIG5vIGVzCisjIHbDoWxpZG8sIHNpbm8gcXVlIG5vIHNlIGhhIGVuY29udHJhZG8gbmluZ8O6biBzdXBlcmJsb3F1ZSBxdWUgc2VhIHbDoWxpZG8sCisjIHF1ZSBlcyBkaXN0aW50byAoYSBsbyBtZWpvciBubyBzZSBoYSBlbmNvbnRyYWRvIG5pbmfDum4gc3VwZXJibG9xdWUKKyMgZW4gYWJzb2x1dG8pLiBDcmVvIHF1ZSBsYSB0cmFkdWNjacOzbiBkZWJlcsOtYSBjYW1iaWFyc2UuIHN2CisjIEVuIGVmZWN0bywgdGllbmVzIHRvZGEgbGEgcmF6w7NuLiBDb3JyZWdpZG8uIG1tCisjOiBlMmZzY2svam91cm5hbC5jOjY2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogbm8gdmFsaWQgam91cm5hbCBzdXBlcmJsb2NrIGZvdW5kXG4iCittc2dzdHIgIiIKKyIlczogbm8gc2UgaGEgZW5jb250cmFkbyB1biBzdXBlcmJsb3F1ZSB2w6FsaWRvIGVuIGVsIGZpY2hlcm8gZGUgIgorInRyYW5zYWNjaW9uZXNcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iCittc2dzdHIgIiVzOiBlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZXMgZGVtYXNpYWRvIGNvcnRvXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTY4IG1pc2MvZnVzZTJmcy5jOjM3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIgorbXNnc3RyICIlczogcmVjdXBlcmFuZG8gZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIiCisiJXM6IG5vIHNlIHB1ZWRlIGhhY2VyIGxhIHJlY3VwZXJhY2nDs24gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBlbiBtb2RvICIKKyJkZSBzw7NsbyBsZWN0dXJhXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgcmVhYnJpciAlcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhYXRyaWJ1dG8gZXh0ZW5kaWRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJBZXJyb3IgZW4gbGEgcmVzZXJ2YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTUKK21zZ2lkICJiYmxvY2siCittc2dzdHIgImJibG9xdWUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQm1hcGEgZGUgYml0cyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgImNjb21wcmVzacOzbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ2VudHJhIGVuIGNvbmZsaWN0byBjb24gYWxnw7puIG90cm8gQGIgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE5Cittc2dpZCAiZGRpcmVjdG9yeSIKK21zZ3N0ciAiZGRpcmVjdG9yaW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkRib3JyYWRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZWVudHJhZGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVMYSBAZSAnJURuJyBxdWUgZXN0w6EgZW4gJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZnNpc3RlbWEgZGUgZmljaGVyb3MiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGcGFyYSBlbCBAaSAlaSAoJVEpIGVzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ2dydXBvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAiaEVsIMOBUkJPTC1IIGRlbCBAaSBkZWwgQGQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpbm9kby1pIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOAorbXNnaWQgIklpbGxlZ2FsIgorbXNnc3RyICJJbm8gdsOhbGlkbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiamZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibGxvc3QrZm91bmQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGVzIHVuIGVubGFjZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibXJlY2xhbWFkbyBlbiBtw7psdGlwbGVzIG9jYXNpb25lcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibmludsOhbGlkbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm9odcOpcmZhbm8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM1Cittc2dpZCAicHByb2JsZW0gaW4iCittc2dzdHIgInBwcm9ibGVtYSBlbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFjdW90YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAickBpIHJhw616IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNkZWJlcsOtYSBzZXIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIlNzdXBlckBiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MAorbXNnaWQgInV1bmF0dGFjaGVkIgorbXNnc3RyICJ1ZGVzYWNvcGxhZG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidmRpc3Bvc2l0aXZvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgInhleHRlbnQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICJ6bG9uZ2l0dWQgY2VybyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8RWwgbm9kby1pIE5VTE8+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NQorbXNnaWQgIjxUaGUgYmFkIGJsb2NrcyBpbm9kZT4iCittc2dzdHIgIjxFbCBub2RvLWkgZGUgYmxvcXVlcyBkYcOxYWRvcz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU3Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZG8taSBkZSBsYSBjdW90YSBkZSB1c3VhcmlvPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZG8taSBkZSBsYSBjdW90YSBkZSBncnVwbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxFbCBub2RvLWkgZGVsIGNhcmdhZG9yIGRlIGFycmFucXVlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjAKK21zZ2lkICI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iCittc2dzdHIgIjxFbCBub2RvLWkgZGVsIGRpcmVjdG9yaW8gZGUgZGVzYm9ycmFkbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZG8taSBkZXNjcmlwdG9yIGRlbCBncnVwbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPEVsIG5vZG8taSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjxTZSBoYSByZXNlcnZhZG8gZWwgbm9kby1pIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxTZSBoYSByZXNlcnZhZG8gZWwgbm9kby1pIDEwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzMKK21zZ2lkICJyZWd1bGFyIGZpbGUiCittc2dzdHIgImZpY2hlcm8gbm9ybWFsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAiZGlyZWN0b3JpbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJkaXNwb3NpdGl2byBkZSBjYXJhY3RlcmVzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAiZGlzcG9zaXRpdm8gZGUgYmxvcXVlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgInR1YmVyw61hIGRlc2lnbmFkYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJlbmxhY2Ugc2ltYsOzbGljbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAiwqtzb2NrZXTCuyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAidGlwbyBkZSBmaWNoZXJvIGRlc2Nvbm9jaWRvIGNvbiBtb2RvIDAlbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjIKK21zZ2lkICJpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvcXVlIGluZGlyZWN0byIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjQKK21zZ2lkICJkb3VibGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb3F1ZSBkb2JsZW1lbnRlIGluZGlyZWN0byIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb3F1ZSB0cmlwbGVtZW50ZSBpbmRpcmVjdG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAiYmxvcXVlIGRlIHRyYWR1Y2Npw7NuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJsb3F1ZSAjIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kb3MtaSByZWNsYW1hZG9zIGVuIG3Dumx0aXBsZXMgb2Nhc2lvbmVzIgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIgorbXNnc3RyICJlcnJvciBpbnRlcm5vOiBubyBzZSBoYSBlbmNvbnRyYWRvIGVsIGR1cF9ibGsgcGFyYSAlbGx1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgInJlZ3Jlc2FkbyBkZWwgY2xvbmVfZmlsZV9ibG9jayIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiIgorIkVycm9yIGludGVybm86IG5vIHNlIHB1ZWRlIGVuY29udHJhciBlbCByZWdpc3RybyBkZSBibG9xdWUgRUEgcGFyYSAlbGx1IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiRXJyb3IgaW50ZXJubzogbm8gc2UgcHVlZGUgZW5jb250cmFyIGVsIHJlZ2lzdHJvIGRlIGJsb3F1ZSBFQSAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJsZXllbmRvIGJsb3F1ZSBkZSBkaXJlY3RvcmlvIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTExCittc2dpZCAiaW4tdXNlIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBub2Rvcy1pIHVzYWRvcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kb3MtaSBkZSBkaXJlY3RvcmlvIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBub2Rvcy1pIGRlIGZpY2hlcm9zIG5vcm1hbGVzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTQxIG1pc2MvZTJpbWFnZS5jOjEyNjgKK21zZ2lkICJpbi11c2UgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIGRlIGJsb3F1ZXMgdXNhZG9zIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCisjLCBmdXp6eQorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiYmxvcXVlcyBkZSBtZXRhZGF0b3MiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImluaWNpYW5kbyBsYSBleHBsb3JhY2nDs24gZGUgbG9zIG5vZG9zLWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJvYnRlbmllbmRvIGVsIHNpZ3VpZW50ZSBub2RvLWkgcGFyYSBleGFtaW5hciIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTkzMworbXNnaWQgIlBhc3MgMSIKK21zZ3N0ciAiUGFzbyAxIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlYWRpbmcgaW5kaXJlY3QgYmxvY2tzIG9mIGlub2RlICV1IgorbXNnc3RyICJsZXllbmRvIGJsb3F1ZXMgaW5kaXJlY3RvcyBkZWwgbm9kby1pICV1IgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBub2Rvcy1pIGRhw7FhZG9zIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAiZWwgbm9kby1pIGVzdMOhIGVuIGVsIG1hcGEgZGUgYmxvcXVlcyBkYcOxYWRvcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgZGUgbm9kb3MtaSBjb24gJ2ltYWdpYyciCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAibWFwYSBkZSBibG9xdWVzIHJlY2xhbWFkb3MgZW4gbcO6bHRpcGxlcyBvY2FzaW9uZXMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIyNDUKK21zZ2lkICJleHQgYXR0ciBibG9jayBtYXAiCittc2dzdHIgIm1hcGEgZGUgYmxvcXVlcyBkZSBhdHJpYnV0b3MgZXh0ZW5kaWRvcyIKKworIyBUT0RPIGJsa2NudCA9IG7Dum1lcm8gZGUgYmxvcXVlL27Dum1lcm8gZGUgYmxvcXVlcz8KKyM6IGUyZnNjay9wYXNzMS5jOjM0MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTZsdSglYyk6IGV4cGVjdGluZyAlNmx1IGdvdCBwaHlzICU2bHUgKGJsa2NudCAlbGxkKVxuIgorbXNnc3RyICIiCisiJTZsdSglYyk6IHNlIGVzcGVyYWJhICU2bHUsIHBlcm8gc2UgaGEgb2J0ZW5pZG8gYmxvcXVlIGbDrXNpY28gJTZsdSAobsO6bWVybyAiCisiZGUgYmxvcXVlICVsbGQpXG4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MjcKK21zZ2lkICJibG9jayBiaXRtYXAiCittc2dzdHIgIm1hcGEgZGUgYml0cyBkZSBibG9xdWVzIgorCisjOiBlMmZzY2svcGFzczEuYzozODMzCittc2dpZCAiaW5vZGUgYml0bWFwIgorbXNnc3RyICJtYXBhIGRlIGJpdHMgZGUgbm9kb3MtaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJ0YWJsYSBkZSBub2Rvcy1pIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlBhc28gMiIKKworIzogZTJmc2NrL3Bhc3MyLmM6MTA0MiBlMmZzY2svcGFzczIuYzoxMjA3Cittc2dpZCAiQ2FuIG5vdCBjb250aW51ZS4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIGNvbnRpbnVhci4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgIm1hcGEgZGUgYml0cyBkZSBub2Rvcy1pIHBhc2Fkb3MiCisKKyM6IGUyZnNjay9wYXNzMy5jOjg2Cittc2dpZCAiUGVhayBtZW1vcnkiCittc2dzdHIgIk1lbW9yaWEgcGljbyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJQYXNvIDMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorbXNnaWQgImlub2RlIGxvb3AgZGV0ZWN0aW9uIGJpdG1hcCIKK21zZ3N0ciAibWFwYSBkZSBiaXRzIGRlIGRldGVjY2nDs24gZGUgYnVjbGVzIGRlIG5vZG9zLWkiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiUGFzbyA0IgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiUGFzbyA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIoc2luIGN1cnNvcikiCisKKyMgWW8gcG9uZHLDrWEgbWVqb3IgIkFycmVnbGFyIiwgeWEgcXVlIGVzIHVuYSBwcmVndW50YSBxdWUgaGFjZSBxdWUgcXVlZGFyw61hCisjIG1lam9yIGVuIGZvcm1hIGltcGVyc29uYWwuIEbDrWphdGUgcXVlIHRvZG9zIGxvcyBkZW3DoXMgdmVyYm9zIHF1ZSBzaWd1ZW4KKyMgZXN0w6FuIGVuIGluZmluaXRpdm8uCisjIENpZXJ0by4gbW0KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIkFycmVnbGFyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIkJvcnJhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJSZXViaWNhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NQorbXNnaWQgIkFsbG9jYXRlIgorbXNnc3RyICJSZXNlcnZhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiRXhwYW5kaXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJDb25lY3RhciBhIC9sb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJDcmVhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIlJlY3VwZXJhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MAorbXNnaWQgIlRydW5jYXRlIgorbXNnc3RyICJUcnVuY2FyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIkJvcnJhciBub2RvLWkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAiSW50ZXJydW1waXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiRGl2aWRpciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJDb250aW51YXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAiQ2xvbmFyIGxvcyBibG9xdWVzIHJlY2xhbWFkb3MgZW4gbcO6bHRpcGxlcyBvY2FzaW9uZXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiQm9ycmFyIGZpY2hlcm8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAiRWxpbWluYXIgbWVuc2FqZXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIkRlc3ZpbmN1bGFyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIkJvcnJhciBlbCDDrW5kaWNlIGRlbCDDoXJib2wtSCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MAorbXNnaWQgIlJlY3JlYXRlIgorbXNnc3RyICJSZWNyZWFyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoTklOR1VOTykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAiQVJSRUdMQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiQk9SUkFETyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAiUkVVQklDQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICJSRVNFUlZBRE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAiRVhQQU5ESURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIlJFQ09ORUNUQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2Cittc2dpZCAiQ1JFQVRFRCIKK21zZ3N0ciAiQ1JFQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIlJFQ1VQRVJBRE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIlRSVU5DQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiTk9ETy1JIEJPUlJBRE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAKK21zZ2lkICJBQk9SVEVEIgorbXNnc3RyICJJTlRFUlJVTVBJRE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiRElWSURJRE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIKK21zZ2lkICJDT05USU5VSU5HIgorbXNnc3RyICJDT05USU5VQU5ETyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiU0UgQ0xPTkFST04gTE9TIEJMT1FVRVMgUkVDTEFNQURPUyBFTiBNw5pMVElQTEVTIE9DQVNJT05FUyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAiRklDSEVSTyBCT1JSQURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiU1VQUklNSURPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIkRFU1ZJTkNVTEFETyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NworbXNnaWQgIkhUUkVFIElOREVYIENMRUFSRUQiCittc2dzdHIgIlNFIEhBIExJTVBJQURPIEVMIMONTkRJQ0UgREVMIMOBUkJPTC1IIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiU0UgUkVDUkVBUsOBIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICIiCisiRWwgbWFwYSBkZSBiaXRzIGRlIGJsb3F1ZXMgcGFyYSBlbCBncnVwbyAlZyBubyBlc3TDoSBlbiBlbCBncnVwby4gIChibG9xdWUgIgorIiViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICIiCisiRWwgbWFwYSBkZSBiaXRzIGRlIG5vZG9zLWkgcGFyYSBlbCBncnVwbyAlZyBubyBlc3TDoSBlbiBlbCBncnVwby4gIChibG9xdWUgIgorIiViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJMYSB0YWJsYSBkZSBub2Rvcy1pIHBhcmEgZWwgQGcgJWcgbm8gZXN0w6EgZW4gZWwgQGcuICAoQGIgJWIpXG4iCisiQVRFTkNJw5NOOiBFUyBQT1NJQkxFIFFVRSBIQVlBIFVOQSBQw4lSRElEQSBERSBEQVRPUyBNVVkgR1JBVkUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIEBTIG5vIHNlIGhhIHBvZGlkbyBsZWVyIG8gbm8gZGVzY3JpYmUgdW4gQGYgZXh0Mi9leHQzL2V4dDQgdsOhbGlkby5cbiIKKyJTaSBlbCBAdiBlcyB2w6FsaWRvIHkgY29udGllbmUgcmVhbG1lbnRlIHVuIEBmIGV4dDIvZXh0My9leHQ0XG4iCisiKHkgbm8gdW5vIGRlIGludGVyY2FtYmlvLCB1ZnMgdSBvdHJhIGNvc2EpLCBlbnRvbmNlcyBlbCBAUyBlc3TDoVxuIgorImNvcnJvbXBpZG87IHBvZHLDrWEgaW50ZW50YXIgZWplY3V0YXIgZTJmc2NrIGNvbiB1biBAUyBhbHRlcm5hdGl2bzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIkVsIHRhbWHDsW8gZGVsIEBmIChkZSBhY3VlcmRvIGNvbiBlbCBAUykgZXMgZGUgJWIgQGJzLlxuIgorIkVsIHRhbWHDsW8gZsOtc2ljbyBkZWwgQHYgZXMgZGUgJWMgQGJzLlxuIgorIsKhRXMgcHJvYmFibGUgcXVlIGVsIEBTIG8gbGEgdGFibGEgZGUgcGFydGljaW9uZXMgZXN0w6luIGNvcnJ1cHRvcyFcbiIKKworIyAiwqFQdWVkZSBzZXIgcXVlIGVsIEBTLCBvIGxhIHRhYmxhIGRlIHBhcnRpY2lvbmVzLCBlc3TDqW4gY29ycnVwdG9zIVxuIgorIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisiRW4gZWwgQFMgZWwgdGFtYcOxbyBkZWwgQGIgPSAlYiwgZWwgdGFtYcOxbyBkZWwgZnJhZ21lbnRvID0gJWMuXG4iCisiRXN0YSB2ZXJzacOzbiBkZSBlMmZzY2sgbm8gdGllbmUgaW1wbGVtZW50YWRvIGVsIG1hbmVqbyBkZVxuIgorInRhbWHDsW9zIGRlIGZyYWdtZW50byBkaXN0aW50b3MgYWwgZGVsIEBiLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJFbCDCq2Jsb2Nrc19wZXJfZ3JvdXDCuyBkZWwgQFMgZXMgJWIgeSBkZWJlcsOtYSBoYWJlciBzaWRvICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkVsIMKrZmlyc3RfZGF0YV9ibG9ja8K7IGRlbCBAUyBlcyAlYiB5IGRlYmVyw61hIGhhYmVyIHNpZG8gJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICJFbCBAZiBubyB0aWVuZSB1biBVVUlEOyBzZSBnZW5lcmFyw6EgdW5vLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5vdGE6IHNpIHZhcmlvcyBibG9xdWVzIGRlIG1hcGFzIGRlIGJpdHMgKGRlIG5vZG9zLWkgbyBkZSBibG9xdWVzKVxuIgorIm8gcGFydGUgZGUgbGEgdGFibGEgZGUgbm9kb3MtaSBuZWNlc2l0YW4gcmV1YmljYWNpw7NuLFxuIgorImVzIHBvc2libGUgcXVlIHByaW1lcm8gc2UgcXVpZXJhIGludGVudGFyIGVqZWN1dGFyIGUyZnNjayBjb25cbiIKKyJsYSBvcGNpw7NuICctYiAlUycuIEVsIHByb2JsZW1hIHBvZHLDrWEgZXN0YXIgw7puaWNhbWVudGUgZW4gZWxcbiIKKyJkZXNjcmlwdG9yIHByaW1hcmlvIGRlbCBncnVwbyBkZSBibG9xdWVzIHkgZWxcbiIKKyJkZXNjcmlwdG9yIGRlbCBncnVwbyBkZSBibG9xdWVzIGRlIHJlc3BhbGRvIHBvZHLDrWEgZXN0YXIgYmllbi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorbXNnaWQgIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iCittc2dzdHIgIkVsIEBTIGVzdMOhIGNvcnJ1cHRvLiAgKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICJFcnJvciBhbCBkZXRlcm1pbmFyIGVsIHRhbWHDsW8gZGVsIEB2IGbDrXNpY286ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIkxhIGN1ZW50YSBAaSBlbiBlbCBAUyBlcyAlaSwgQHMgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiRWwgSHVyZCBubyB0aWVuZSBpbXBsZW1lbnRhZGEgbGEgb3BjacOzbiBkZSB0aXBvcyBkZSBmaWNoZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlICVpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGFzIGFuIEBuIEBqIChAaSAlaSkuXG4iCittc2dzdHIgIkBTIHRpZW5lIHVuIEBqIEBuIChAaSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiRWwgQGogZXh0ZXJubyB0aWVuZSB2YXJpb3MgdXN1YXJpb3MgZGVsIEBmIChubyBpbXBsZW1lbnRhZG8pLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIk5vIHNlIGhhIGVuY29udHJhZG8gdW4gQGogZXh0ZXJub1xuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiRWwgQGogZXh0ZXJubyB0aWVuZSB1biBAUyBkYcOxYWRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRWwgQGogZXh0ZXJubyBubyB0aWVuZSBpbXBsZW1lbnRhZG8gZXN0ZSBAZlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiRWwgQFMgZGVsIEBqIGRlbCBAZiBlcyBkZSB1biB0aXBvIGRlc2Nvbm9jaWRvICVOIChubyBpbXBsZW1lbnRhZG8pLlxuIgorIkVzIHByb2JhYmxlIHF1ZSBzdSBjb3BpYSBkZSBlMmZzY2sgc2VhIG11eSBhbnRpZ3VhIHkvbyBubyB0ZW5nYSAiCisiaW1wbGVtZW50YWRvXG4iCisiZXN0ZSBmb3JtYXRvIGRlIEBqLlxuIgorIlRhbWJpw6luIGVzIHBvc2libGUgcXVlIGVsIEBTIGRlbCBAaiBlc3TDqSBjb3JydXB0by5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiRWwgQFMgZGVsIEBqIGVzdMOhIGNvcnJ1cHRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiTGEgYmFuZGVyYSBoYXNfam91cm5hbCBkZWwgQFMgZXN0w6EgcXVpdGFkYSwgcGVybyBoYXkgdW4gQGouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjM2Cittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICIiCisiTGEgYmFuZGVyYSBkZSByZWN1cGVyYWNpw7NuIGRlbCBzdXBlcmJsb3F1ZSBlc3TDoSBwdWVzdGEsIHBlcm8gbm8gaGF5IEBqLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBqb3VybmFsIGhhcyBkYXRhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0MQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAiIgorIkxhIGJhbmRlcmEgZGUgcmVjdXBlcmFjacOzbiBkZWwgc3VwZXJibG9xdWUgZXN0w6EgbGltcGlhLCBwZXJvIGVsIEBqXG4iCisiY29udGllbmUgaW5mb3JtYWNpw7NuLlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICJCb3JyYXIgZWwgQGoiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiIgorIkVsIEBmIHRpZW5lIHVuYShzKSBiYW5kZXJhKHMpIGVzcGVjaWFsKGVzKSwgcGVybyBlcyB1bmEgcmV2aXNpw7NuIDAgZGVsIEBmLiAgIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiVzIEBpIEBvICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RvPSVJbSwgdGFtYcOxbz0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJASSAlQiAoJWIpIGVuY29udHJhZG8gZW4gdW4gQGkgQG8gJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJZYSBzZSBib3Jyw7MgZWwgJUIgKCViKSBlbmNvbnRyYWRvIGVuIGVsIEBpIEBvICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJAaSBAbyBASSAlaSBlbiBlbCBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJAaSBASSAlaSBlbiBsYSBsaXN0YSBkZSBub2Rvcy1pIGh1w6lyZmFub3MuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiRWwgQFMgZGVsIEBqIHRpZW5lIHB1ZXN0YSB1bmEgYmFuZGVyYSBkZXNjb25vY2lkYSBkZSBzw7NsbyBsZWN0dXJhLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjg2Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIkVsIEBTIGRlbCBAaiB0aWVuZSBwdWVzdGEgdW5hIGJhbmRlcmEgZGVzY29ub2NpZGEgaW5jb21wYXRpYmxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgIkxhIHZlcnNpw7NuIGRlbCBAaiBubyBlc3TDoSBpbXBsZW1lbnRhZGEgZW4gZXN0ZSBlMmZzY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiTW92aWVuZG8gZWwgQGogZGUgLyVzIGEgdW4gbm9kby1pIG9jdWx0by5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRXJyb3IgbW92aWVuZG8gZWwgQGo6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJTZSBlbmNvbnRyYXJvbiBjYW1wb3MgVjIgbm8gdsOhbGlkb3MgZW4gZWwgQGogZGVsIEBTXG4iCisiKGRlbCBWMSBkZWwgQGopLlxuIgorIkJvcnJhbmRvIGxvcyBjYW1wb3MgcXVlIGV4Y2VkZW4gbGEgVjEgZGVsIEBqIGRlbCBAUy4uLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBSdW4gam91cm5hbCBhbnl3YXkKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzEyCittc2dpZCAiUnVuIEBqIGFueXdheSIKK21zZ3N0ciAiRWplY3V0YXIgZWwgQGogZGUgdG9kYXMgZm9ybWFzIgorCisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3Cittc2dpZCAiUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBAUywgc28gcnVubmluZyBAaiBhbnl3YXkuXG4iCittc2dzdHIgIiIKKyJMYSBiYW5kZXJhIGRlIHJlY3VwZXJhY2nDs24gbm8gZXN0w6EgcHVlc3RhIGVuIGVsIEBTIGRlIHJlc3BhbGRvLFxuIgorInBvciBlc28gc2UgZWplY3V0YXLDoSBkZSB0b2RhcyBtYW5lcmFzIGVsIEBqLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICIiCisiUmVzcGFsZGFuZG8gbGEgaW5mb3JtYWNpw7NuIGRlbCBAaiwgZWwgQGkgeSBlbCBAYi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9pbm9kZSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGlzICVOOyBzaG91bGQgYmUgemVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMjcKK21zZ2lkICIiCisiQGYgZG9lcyBub3QgaGF2ZSByZXNpemVfQGkgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorImlzICVOOyBAcyB6ZXJvLiAgIgorbXNnc3RyICIiCisiRWwgQGYgbm8gdGllbmUgJ3Jlc2l6ZV9pbm9kZScgaGFiaWxpdGFkbywgcGVybyAnc19yZXNlcnZlZF9nZHRfYmxvY2tzJ1xuIgorImVzICVOOyBkZWJlcsOtYSBzZXIgY2Vyby4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICIiCisiRWwgJ3Jlc2l6ZV9pbm9kZScgbm8gZXN0w6EgaGFiaWxpdGFkbywgcGVybyBlbCBub2RvLWkgZGUgY2FtYmlvIGRlbCB0YW1hw7FvIG5vICIKKyJlcyBjZXJvLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkVsIG5vZG8taSBkZSBjYW1iaW8gZGVsIHRhbWHDsW8gbm8gZXMgdsOhbGlkby4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJMYSDDumx0aW1hIHZleiAoJXQsXHRub3c9JVQpXG4iCisicXVlIHNlIG1vbnTDsyBlbCBzdXBlcmJsb3F1ZSBlcyBlbiBlbCBmdXR1cm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisiTGEgw7psdGltYSB2ZXogKCV0LFx0bm93ID0gJVQpIHF1ZVxuIgorInNlIGVzY3JpYmnDsyBlbiBlbCBzdXBlcmJsb3F1ZSBlcyBlbiBlbCBmdXR1cm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIkxhIHBpc3RhIGRlIHN1cGVyYmxvcXVlIHBhcmEgdW4gc3VwZXJibG9xdWUgZXh0ZXJubyBkZWJlcsOtYSBzZXIgJVguICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBZ3JlZ2FuZG8gbGEgcGlzdGEgZGlyaGFzaCBhbCBzaXN0ZW1hIGRlIGZpY2hlcm9zXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiRWwgwqtjaGVja3N1bcK7IGRlbCBkZXNjcmlwdG9yIGRlIEBnICVnIGVzICUwNHg7IGRlYmVyw61hIHNlciAlMDR5LiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkVsIGRlc2NyaXB0b3IgZGUgQGcgJWcgZXRpcXVldGFkbyBjb21vIG5vIGluaWNpYWxpemFkbyBubyB0aWVuZSBhY3RpdmFkYSBlc2EgIgorImZ1bmNpb25hbGlkYWQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgIiIKKyJMYSBjdWVudGEgZGUgbm9kb3MtaSBubyB1dGlsaXphZG9zICViIGRlbCBkZXNjcmlwdG9yIGRlIEBnICVnIG5vIGVzIHbDoWxpZGEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJFbCBtYXBhIGRlIGJpdHMgZGUgYmxvcXVlIGRlbCDDumx0aW1vIGdydXBvIG5vIGVzdMOhIGluaWNpYWxpemFkby4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICIiCisiTGEgdHJhbnNhY2Npw7NuICVpIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZXN0YWJhIGNvcnJ1cHRhOyBzZSBoYSAiCisiaW50ZXJydW1waWRvIGxhIHJlcGV0aWNpw7NuLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4NgorbXNnaWQgIlRoZSB0ZXN0X2ZzIGZsYWcgaXMgc2V0IChhbmQgZXh0NCBpcyBhdmFpbGFibGUpLiAgIgorbXNnc3RyICJMYSBiYW5kZXJhIHRlc3RfZnMgZXN0w6EgcHVlc3RhICh5IGV4dDQgZXN0w6EgZGlzcG9uaWJsZSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiTGEgw7psdGltYSBob3JhIGRlIG1vbnRhamUgZGVsIEBTIGVzdMOhIGVuIGVsIGZ1dHVyby5cbiIKKyJcdChwb3IgbWVub3MgZGUgdW4gZMOtYSwgcHJvYmFibGVtZW50ZSBkZWJpZG8gYSBxdWUgZWwgcmVsb2ogZGVsIGhhcmR3YXJlICIKKyJlc3TDoSBtYWwgcHVlc3RvKSAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzk3CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkxhIMO6bHRpbWEgaG9yYSBkZSBlc2NyaXR1cmEgZGVsIEBTIGVzdMOhIGVuIGVsIGZ1dHVyby5cbiIKKyJcdChwb3IgbWVub3MgZGUgdW4gZMOtYSwgcHJvYmFibGVtZW50ZSBkZWJpZG8gYSBxdWUgZWwgcmVsb2ogZGVsIGhhcmR3YXJlICIKKyJlc3TDoSBtYWwgcHVlc3RvKSAgIgorCisjLiBALWV4cGFuZGVkOiBPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKK21zZ2lkICJPbmUgb3IgbW9yZSBAYiBAZyBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gICIKK21zZ3N0ciAiIgorIkxvcyDCq2NoZWNrc3Vtc8K7IGRlIHVubyBvIG3DoXMgZGVzY3JpcHRvcmVzIGRlIEBncyBkZSBAYnMgc29uIGludsOhbGlkb3MuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBpbm9kZXMgY291bnQgdG8gJWogKHdhcyAlaSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDgKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIlNlIHBvbmUgbGEgY2FudGlkYWQgZGUgbm9kb3MtaSBsaWJyZXMgYSAlaiAoZXJhICVpKVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICJTZSBwb25lIGxhIGNhbnRpZGFkIGRlIGJsb3F1ZXMgbGlicmVzIGEgJWMgKGVyYSAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAiT2N1bHRhbmRvIGVsIEBpIGRlIEBxICVpICglUSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiRWwgc3VwZXJibG9xdWUgdGllbmUgdW4gYmxvcXVlIE1NUCBpbnbDoWxpZG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiRWwgc3VwZXJibG9xdWUgdGllbmUgdW4gbsO6bWVybyBtw6FnaWNvIGRlIE1NUCBpbnbDoWxpZG8uICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yKCk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICJleHQyZnNfY2hlY2tfZGVzYygpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCisjLCBmdXp6eQorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIkVsIMKrY2hlY2tzdW3CuyBkZWwgYmxvcXVlIE1NUCBubyBjdWFkcmEgY29uIGVsIGJsb3F1ZSBNTVAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKyJAUyBkZSBzaXN0ZW1hcyBkZSBmaWNoZXJvcyBkZSA2NCBiaXRzIG5lY2VzaXRhIMKrZXh0ZW50c8K7IHBhcmEgYWNjZWRlciBhbCAiCisiZGlzY28gZW50ZXJvLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiRmlyc3RfbWV0YV9iZyBlcyBkZW1hc2lhZG8gZ3JhbmRlLiAoJU4sIHZhbG9yIG3DoXguICVnKS4gICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3CisjLCBmdXp6eQorbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJFbCDCq2NoZWNrc3VtwrsgZGVsIGJsb3F1ZSDCq2V4dGVudMK7IG5vIGN1YWRyYSBjb24gZWwgYmxvcXVlIMKrZXh0ZW50wrsiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMgUHJlZmllcm8gZWwgaW5maW5pdGl2bywgcGVybyBoYXkgb2Nhc2lvbmVzIGVuIHF1ZSBlbCBnZXJ1bmRpbyBlcworIyBpbmRpc3BlbnNhYmxlLCBjb21vIHBvciBlamVtcGxvICJ2ZXJpZmljYW5kbyIsICJyZXZpc2FuZG8iLCBlbiBkb25kZQorIyBkYSBsYSBpbXByZXNpw7NuIGRlIHF1ZSBlbiBlc2UgbW9tZW50byBzZSBlc3TDoW4gaGFjaWVuZG8gbGFzIGNvc2FzLgorIyBFbiBlc3RlIGNhc28gZW4gcGFydGljdWxhciwgY3JlbyBxdWUgZXMgY29udmVuaWVudGUgZWwgZ2VydW5kaW8uIG1tCisjLiBALWV4cGFuZGVkOiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTQKK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAiUGFzbyAxOiBWZXJpZmljYW5kbyBub2Rvcy1pLCBAYnMgeSB0YW1hw7Fvc1xuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiRWwgQHIgbm8gZXMgdW4gQGQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiIgorIkVsIEByIHRpZW5lIHB1ZXN0byBlbCBkdGltZSAocHJvYmFibGVtZW50ZSBkZWJpZG8gYSB1bmEgdmVyc2nDs24gYW50aWd1YSBkZWwgIgorIm1rZTJmcykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJFbCBAaSByZXNlcnZhZG8gJWkgJVEgdGllbmUgdW4gbW9kbyBpbmNvcnJlY3RvLiAgIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiRWwgQGkgJWkgQCwgdGllbmUgdW4gZHRpbWUgY2Vyby4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiRWwgQGkgJWkgZXN0w6EgZW4gdXNvLCBwZXJvIHRpZW5lIHB1ZXN0byBkdGltZS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSB6ZXJvLWxlbmd0aCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGEgQHogQGQuICAiCittc2dzdHIgIkVsIEBpICVpIGVzIHVuIEBkIGNvbiBAei4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjgKK21zZ2lkICJAZyAlZydzIEBiIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJFbCBAQiBkZSBibG9xdWVzIGRlbCBAZyAlZyBlbiBlbCBsdWdhciAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJFbCBAQiBkZSBub2Rvcy1pIGRlbCBAZyAlZyBlbiBlbCBsdWdhciAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSB0YWJsZSBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzOAorbXNnaWQgIkBnICVnJ3MgQGkgdGFibGUgYXQgJWIgQEMuXG4iCittc2dzdHIgIkxhIHRhYmxhIGRlIG5vZG9zLWkgZGVsIEBnICVnIGVuIGVsIGx1Z2FyICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJFbCBAQiAoJWIpIGRlIGJsb3F1ZXMgZGVsIEBnICVnIGVzdMOhIGRhw7FhZG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIkVsIEBCICglYikgZGUgbm9kb3MtaSBkZWwgQGcgJWcgZXN0w6EgZGHDsWFkby4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIkBpICVpLCBpX3NpemUgZXMgJUlzLCBAcyAlTi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgaV9AYnMgZXMgJUliLCBAcyAlTi4gICIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2MworbXNnaWQgIkBJICVCICglYikgaW4gQGkgJWkuICAiCittc2dzdHIgIkBJICVCICglYikgZW4gQGkgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKK21zZ2lkICIlQiAoJWIpIG92ZXJsYXBzIEBmIG1ldGFkYXRhIGluIEBpICVpLiAgIgorbXNnc3RyICIlQiAoJWIpIHNlIHNvbGFwYSBjb24gbG9zIG1ldGFkYXRvcyBkZWwgQGYgZW4gZWwgQGkgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiQGkgJWkgdGllbmUgQGIocykgaW52w6FsaWRvKHMpLiAgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIkRlbWFzaWFkb3MgQGJzIGludsOhbGlkb3MgZW4gZWwgQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCittc2dpZCAiQEkgJUIgKCViKSBpbiBiYWQgQGIgQGkuICAiCittc2dzdHIgIkBJICVCICglYikgZW4gZWwgbm9kby1pIGRlIGJsb3F1ZXMgZGHDsWFkb3MuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIHRpZW5lIEBiKHMpIGludsOhbGlkbyhzKS4gICIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIG9yIGJhZCBibG9jayBpbiB1c2UhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkzCittc2dpZCAiRHVwbGljYXRlIG9yIGJhZCBAYiBpbiB1c2UhXG4iCittc2dzdHIgIsKhQGIgZHVwbGljYWRvIG8gZGHDsWFkbyBlc3TDoSBlbiB1c28hXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIiIKKyJFbCBAYiBkYcOxYWRvICViIHNlIHVzYSBjb21vIGJsb3F1ZSBpbmRpcmVjdG8gZW4gZWwgbm9kby1pIGRlIGJsb3F1ZXMgZGHDsWFkb3MiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIHByb2JhYmxlbWVudGUgaGF5YSBzaWRvIGNvcnJvbXBpZG8uXG4iCisiUHJvYmFibGVtZW50ZSBzZSBkZWJlcsOtYSBkZXRlbmVyIGFob3JhIGVsIHByb2dyYW1hIHkgZWplY3V0YXJcbiIKKyJlMmZzY2sgLWMgcGFyYSBidXNjYXIgYmxvcXVlcyBkYcOxYWRvcyBlbiBlbCBAZi5cbiIKKworIyBNdWNoYXMgb3JhY2lvbmVzIGVuIHBhc2l2YSBlbiBpbmdsw6lzIHF1ZWRhbiBtZWpvciBlbiBmb3JtYSByZWZsZXhpdmEKKyMgY3VhbmRvIHNlIHRyYWR1Y2VuLgorIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IElmIHRoZSBibG9jayBpcyByZWFsbHkgYmFkLCB0aGUgZmlsZXN5c3RlbSBjYW4gbm90IGJlIGZpeGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxMAorbXNnaWQgIiIKKyJcbiIKKyJJZiB0aGUgQGIgaXMgcmVhbGx5IGJhZCwgdGhlIEBmIGNhbiBub3QgYmUgZml4ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTaSBlbCBAYiBlc3TDoSByZWFsbWVudGUgZGHDsWFkbywgZWwgQGYgbm8gc2UgcHVlZGUgYXJyZWdsYXIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlNlIHB1ZWRlIGJvcnJhciBlc3RlIGJsb3F1ZSBkZSBsYSBsaXN0YSBkZSBibG9xdWVzIGRhw7FhZG9zIGNvbiBsYSBlc3BlcmFuemFcbiIKKyJkZSBxdWUgZWwgYmxvcXVlIGVzdMOpIGNvcnJlY3RvLiAgUGVybyBubyBoYXkgbmluZ3VuYSBnYXJhbnTDrWEuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIkVsIEBTIHByaW1hcmlvICglYikgZXN0w6EgZW4gbGEgbGlzdGEgZGUgQGJzIGRhw7FhZG9zLlxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAiIgorIkVsIGJsb3F1ZSAlYiBlbiBsb3MgZGVzY3JpcHRvcmVzIHByaW1hcmlvcyBkZSBncnVwb3MgZXN0w6EgZW4gbGEgbGlzdGEgZGUgQGJzICIKKyJkYcOxYWRvc1xuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIHN1cGVyYmxvY2sgKCViKSBpcyBiYWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMyCittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBAUyAoJWIpIGlzIGJhZC5cbiIKK21zZ3N0ciAiQXRlbmNpw7NuOiBlbCBAUyAoJWIpIGRlbCBncnVwbyAlZyBlc3TDoSBkYcOxYWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJBdGVuY2nDs246IGxhIGNvcGlhIGRlIGxvcyBkZXNjcmlwdG9yZXMgZGVsIEBnICVnIHRpZW5lIHVuIEBiICglYikgZGHDsWFkby5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorIsK/U2Vyw6EgdW4gZXJyb3IgZGUgcHJvZ3JhbWFjacOzbj8gIEVsIEBiICMlYiBzZSByZWNsYW1hIHNpbiByYXrDs24gZW4gZWwgIgorInByb2Nlc3NfYmFkX2Jsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nICVOIGNvbnRpZ3VvdXMgYmxvY2socykgaW4gYmxvY2sgZ3JvdXAgJWcgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0OQorbXNnaWQgIkBBICVOIGNvbnRpZ3VvdXMgQGIocykgaW4gQGIgQGcgJWcgZm9yICVzOiAlbVxuIgorbXNnc3RyICJAQSAlTiwgZXMgY29udGlndWEgYSBsb3MgQGJzIGVuIGVsIEBiIGRlbCBAZyAlZyBwYXJhICVzOiAlbVxuIgorCisjIFRPRE8gcG9yIG8gcGFyYQorIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkBBIGRlbCBiw7pmZXIgZGVsIEBiIHBvciByZXViaWNhciAlc1xuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgIlJldWJpY2FuZG8gJXMgZGVsIEBnICVnIGRlICViIGEgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICJSZXViaWNhbmRvIGVsIEBnICVnIGRlICVzIGhhY2lhICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrICViIG9mICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2OQorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIEBiICViIG9mICVzOiAlbVxuIgorbXNnc3RyICJBdGVuY2nDs246IG5vIHNlIHB1ZWRlIGxlZXIgZWwgQGIgJWIgZGUgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQXRlbmNpw7NuOiBubyBzZSBwdWVkZSBlc2NyaWJpciBlbCBAYiAlYiBwYXJhICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3OSBlMmZzY2svcHJvYmxlbS5jOjE3NDAKK21zZ2lkICJAQSBAaSBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJIYXkgdW4gQEEgZGVsIEBCIGRlbCBAaSAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgIkhheSB1biBAQSBkZWwgQGIgZGVsIEBCICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJAQSBlbiBsYSBjdWVudGEtaSBkZSBsYSBpbmZvcm1hY2nDs24gZGVsIGVubGFjZTogJW1cbiIKKworIyBhcnJheSAtPiBtYXRyaXoKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAiQEEgZGVsIGFycmVnbG8gZGVsIEBiIGRlIEBkczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcnJvciBtaWVudHJhcyBzZSBleHBsb3JhYmEgZWwgQGkgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkVycm9yIG1pZW50cmFzIHNlIGl0ZXJhYmEgc29icmUgbG9zIEBicyBlbiBlbCBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3IgYWwgZ3VhcmRhciBsYSBpbmZvcm1hY2nDs24gZGUgbGEgY3VlbnRhIGRlbCBAaSAoQGk9JWksIGN1ZW50YT0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3IgYWwgZ3VhcmRhciBsYSBpbmZvcm1hY2nDs24gZGVsIEBiIGRlIEBkcyAoQGk9JWksIEBiPSViLCBuw7ptPSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgbGVlciBlbCBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiQGkgJWkgdGllbmUgcHVlc3RhIGxhIGJhbmRlcmEgaW1hZ2ljLiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoaW5vZGUgJWkpIGhhcyBpbW11dGFibGVcbgorIy4gQC1leHBhbmRlZDogb3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChAaSAlaSkgaGFzIGltbXV0YWJsZVxuIgorIm9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiRWwgZmljaGVybyBlc3BlY2lhbCAoZGlzcG9zaXRpdm8vwqtzb2NrZXTCuy9maWZvL2VubGFjZSBzw61tYm9saWNvKSAoQGkgJWkpXG4iCisibm8gZXMgbW9kaWZpY2FibGUgbyB0aWVuZSBsYSBiYW5kZXJhICdhcHBlbmQtb25seScgKHPDs2xvIGHDsWFkaXIpLiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIiIKKyJFbCBmaWNoZXJvIGVzcGVjaWFsIChkaXNwb3NpdGl2by/Cq3NvY2tldMK7L2ZpZm8pIChAaSAlaSlcbiIKKyJ0aWVuZSB1biB0YW1hw7FvIGRpc3RpbnRvIGRlIGNlcm8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkVsIEBpIGRlbCBAaiBubyBlc3TDoSBlbiB1c28sIHBlcm8gY29udGllbmUgaW5mb3JtYWNpw7NuLiAgIgorCisjIFRPRE8gZmljaGVybyByZWd1bGFyCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiZWwgQGogbm8gZXMgdW4gZmljaGVybyByZWd1bGFyLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgImVsIEBpICVpIGVyYSBwYXJ0ZSBkZSBsYSBsaXN0YSBkZSBub2Rvcy1pIEBvcy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisiTG9zIG5vZG9zLWkgZnVlcm9uIHBhcnRlIGRlIHVuYSBsaXN0YSBlbmxhemFkYSBxdWUgZXN0YWJhIGh1w6lyZmFuYSB5ICIKKyJkYcOxYWRhLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBkZSBsYSBlc3RydWN0dXJhIHJlZmNvdW50ICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGZvciBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViIGZvciBAaSAlaS4gICIKK21zZ3N0ciAiRXJyb3IgYWwgbGVlciBlbCBAYiBkZWwgQGEgJWIgcGFyYSBlbCBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkBpICVpIHRpZW5lIHVuIEBiIGRlbCBAYSAlYiBkYcOxYWRvLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRXJyb3IgYWwgbGVlciBlbCBAYiBkZWwgQGEgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiRWwgQGIgZGVsIEBhICViIHRpZW5lIHVuYSBjdWVudGEgZGUgcmVmZXJlbmNpYSAlciB5IEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRXJyb3IgYWwgZXNjcmliaXIgZWwgQGIgZGUgQGEgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiRWwgQGIgZGVsIEBhICViIHRpZW5lIGhfQGJzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkBBIGRlIGxhIGVzdHJ1Y3R1cmEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiZWwgQGIgZGVsIEBhICViIGVzdMOhIGRhw7FhZG8gKGh1Ym8gdW5hIGNvbGlzacOzbiBlbiBsYSByZXNlcnZhKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgImVsIEBiIGRlbCBAYSAlYiBlc3TDoSBkYcOxYWRvIChub21icmUgbm8gdsOhbGlkbykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgImVsIEBiIGRlbCBAYSAlYiBlc3TDoSBkYcOxYWRvICh2YWxvciBubyB2w6FsaWRvKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiZWwgQGkgJWkgZXMgZGVtYXNpYWRvIGdyYW5kZS4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgQGQgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBwcm92b2NhIHF1ZSBlbCBAZCBzZWEgZGVtYXNpYWRvIGdyYW5kZS4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzQKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgcHJvdm9jYSBxdWUgZWwgZmljaGVybyBzZWEgZGVtYXNpYWRvIGdyYW5kZS4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBzeW1saW5rIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgcHJvdm9jYSBxdWUgZWwgZW5sYWNlIHNpbWLDs2xpY28gc2VhIGRlbWFzaWFkbyBncmFuZGUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorImVsIEBpICVpIHRpZW5lIGxhIGJhbmRlcmEgSU5ERVhfRkwgcHVlc3RhIGVuIGVsIEBmIHNpbiBlbCDDoXJib2wtaCAiCisiaW1wbGVtZW50YWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiQGkgJWkgdGllbmUgcHVlc3RhIGxhIGJhbmRlcmEgSU5ERVhfRkwgcGVybyBubyBlcyB1biBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiRWwgQGggJWkgdGllbmUgdW4gbm9kbyByYcOteiBubyB2w6FsaWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkVsIEBoICVpIHRpZW5lIHVuYSB2ZXJzacOzbiBkZSBoYXNoIG5vIGltcGxlbWVudGFkYSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKyJFbCBAaCAlaSB1dGlsaXphIHVuYSBiYW5kZXJhIGluY29tcGF0aWJsZSBwYXJhIGVsIG5vZG8gcmHDrXogZGVsIMOhcmJvbC1oLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJFbCBAaCAlaSB0aWVuZSB1bmEgcHJvZnVuZGlkYWQgKCVOKSBtdXkgZ3JhbmRlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIiIKKyJFbCBAaSBkZWwgQGIgZXN0w6EgZGHDsWFkbyB5IHRpZW5lIHVuIEBiIGluZGlyZWN0byAoJWIpIHF1ZVxuIgorImVudHJhIGVuIGNvbmZsaWN0byBjb24gbGEgbWV0YWluZm9ybWFjacOzbiBkZWwgQGYuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6ZSBAaSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4iCittc2dzdHIgIkZhbGzDsyBsYSAocmUpY3JlYWNpw7NuIGRlbCBub2RvLWkgZGUgY2FtYmlvIGRlIHRhbWHDsW86ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJFbCBAaSAlaSB0aWVuZSB1biB0YW1hw7FvIGFkaWNpb25hbCAoJUlTKSBxdWUgZXMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkVsIEBhIGVuIGVsIEBpICVpIHRpZW5lIHVuYSBsb25naXR1ZCBkZSBub21icmUgKCVOKSBxdWUgZXMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJFbCBAYSBlbiBAaSAlaSB0aWVuZSB1biB2YWxvciBkZSBkZXNwbGF6YW1pZW50byAoJU4pIHF1ZSBlcyBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICJFbCBAYSBlbiBlbCBAaSAlaSB0aWVuZSB1biB2YWxvciBkZSBAYiAoJU4pIHF1ZSBlcyBAbiAoZGViZSBzZXIgMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkVsIEBhIGVuIGVsIEBpICVpIHRpZW5lIHVuIHZhbG9yIGRlIHRhbWHDsW8gKCVOKSBxdWUgZXMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkVsIEBhIGVuIGVsIEBpICVpIHRpZW5lIHVuIGhhc2ggKCVOKSBxdWUgZXMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorbXNnaWQgIkBpICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiRWwgbm9kby1pICVpIGVzdMOhIG1hcmNhZG8gY29tbyB1biAlSXQgcGVybyBwYXJlY2Ugc2VyIHVuIGRpcmVjdG9yaW8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkVycm9yIG1pZW50cmFzIHNlIGxlw61hIGVsIMOhcmJvbCBkZSDCq0B4c8K7IGVuIGVsIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIGlub2RlICVpXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyNQorbXNnaWQgIiIKKyJGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCittc2dzdHIgIiIKKyJGYWxsbyBhbCBpdGVyYXIgbG9zIMKrZXh0ZW50wrsgZW4gZWwgQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzEKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJFbCBAaSAlaSB0aWVuZSB1biBleHRlbnQgQG5cbiIKKyJcdChAYiBsw7NnaWNvICVjLCBAYiBmw61zaWNvIEBuICViLCBsb25naXR1ZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJFbCBAaSAlaSB0aWVuZSB1biDCq2V4dGVudMK7IEBuXG4iCisiXHQoQGIgbMOzZ2ljbyAlYywgQGIgZsOtc2ljbyAlYiwgbG9uZ2l0dWQgQG4gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiRWwgQGkgJWkgdGllbmUgbGEgYmFuZGVyYSBFWFRFTlRTX0ZMIHB1ZXN0YSBlbiBlbCBAZiBzaW4gwqtleHRlbnRzwrsgIgorImltcGxlbWVudGFkby5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJlbCBAaSAlaSBlc3TDoSBlbiBmb3JtYXRvIMKrZXh0ZW50wrssIHBlcm8gZWwgQFMgbm8gdGllbmUgbGEgY2FyYWN0ZXLDrXN0aWNhICIKKyJFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICJlbCBAaSAlaSBubyB0aWVuZSBFWFRFTlRfRkwsIHBlcm8gZXN0w6EgZW4gZm9ybWF0byDCq2V4dGVudHPCu1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIkVsIGVubGFjZSBzaW1iw7NsaWNvIHLDoXBpZG8gJWkgdGllbmUgcHVlc3RvIEVYVEVOVF9GTC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImVsIEBpICVpIHRpZW5lIMKrZXh0ZW50c8K7IGVzdHJvcGVhZG9zXG4iCisiXHQoQGIgbMOzZ2ljbyBAbiAlYywgQGIgZsOtc2ljbyAlYiwgbG9uZ2l0dWQgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1Cittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiZWwgQGkgJWkgdGllbmUgdW4gbW9kbyBkZSDCq2V4dGVudMK7IG5vIHbDoWxpZG8gKGJsayAlYiwgbGJsayAlYylcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICJFcnJvciBhbCBjb252ZXJ0aXIgZWwgQEIgZGUgQGJzIGRlbCDCq3N1YmNsdXN0ZXLCuzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJFbCBAaSBkZSBsYSBAcSBubyBlcyB1biBmaWNoZXJvIG5vcm1hbC4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkVsIEBpIGRlIGxhIEBxIG5vIGVzdMOhIGVuIHVzbywgcGVybyBjb250aWVuZSBkYXRvcy4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJFbCBAaSBkZSBsYSBAcSBlcyB2aXNpYmxlIHBhcmEgZWwgdXN1YXJpby4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIkVsIG5vZG8taSBkZSBibG9xdWVzIGRhw7FhZG9zIHBhcmVjZSBpbnbDoWxpZG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTUKK21zZ2lkICIiCisiQGkgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViKVxuIgorbXNnc3RyICIiCisiZWwgQGkgJWkgdGllbmUgwqtleHRlbnTCuyBkZSBsb25naXR1ZCBjZXJvXG4iCisiXHQoQGIgbMOzZ2ljbyBAbiAlYywgQGIgZsOtc2ljbyAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gICIKK21zZ3N0ciAiZWwgQGkgJWkgZXMgZGVtYXNpYWRvIGdyYW5kZS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiIgorIkVsIMKrY2hlY2tzdW3CuyBkZWwgbWFwYSBkZSBiaXRzIGRlbCBub2RvLWkgbm8gY3VhZHJhIGNvbiBlbCBtYXBhIGRlIGJpdHMiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgQGEgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJlbCBAYiBkZWwgQGEgJWIgZXN0w6EgZGHDsWFkbyAoaHVibyB1bmEgY29saXNpw7NuIGVuIGxhIHJlc2VydmEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImVsIEBpICVpIHRpZW5lIMKrZXh0ZW50c8K7IGVzdHJvcGVhZG9zXG4iCisiXHQoQGIgbMOzZ2ljbyBAbiAlYywgQGIgZsOtc2ljbyAlYiwgbG9uZ2l0dWQgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAyNworbXNnaWQgIkBpICVpIEBhIEBiICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAYi4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiTml2ZWwgJU4gZGUgbm9kbyBAeCBpbnRlcmlvciBkZWwgQGkgJWk6XG4iCisiRWwgY29taWVuem8gbMOzZ2ljbyAlYiBubyBjYXNhIGNvbiBlbCBjb21pZW56byBsw7NnaWNvICVjIGRlbCBzaWd1aWVudGUgIgorIm5pdmVsLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJlbCBAaSAlaSwgZmluIGRlIMKrZXh0ZW50wrssIGV4Y2VkZSBlbCB2YWxvciBwZXJtaXRpZG9cbiIKKyJcdChAYiBsw7NnaWNvICVjLCBAYiBmw61zaWNvICViLCBsb25naXR1ZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorImVsIEBpICVpIGVzdMOhIGVuIGZvcm1hdG8gwqtleHRlbnTCuywgcGVybyBlbCBAUyBubyB0aWVuZSBsYSBjYXJhY3RlcsOtc3RpY2EgIgorIkVYVEVOVFNcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gZmlsZXN5c3RlbSB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiZWwgQGkgJWkgdGllbmUgbGEgYmFuZGVyYSBJTkRFWF9GTCBwdWVzdGEgZW4gZWwgQGYgc2luIGVsIMOhcmJvbC1oICIKKyJpbXBsZW1lbnRhZG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworbXNnaWQgIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIKK21zZ3N0ciAiRWwgQGIgJWIgZGVsIEBpICVpIGRlIEBkIGRlYmVyw61hIGVzdGFyIGVuIGVsIEBiICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiIgorIkVsIEBpICVpIGRlbCBAZCB0aWVuZSB1biBAeCBtYXJjYWRvIGNvbW8gbm8gaW5pY2lhbGl6YWRvIGVuIGVsIEBiICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiRWwgQGIgbMOzZ2ljbyAlYiBkZWwgQGkgJWkgKEBiIGbDrXNpY28gJWMpIHZpb2xhIGxhcyByZWdsYXMgZGUgYXNpZ25hY2nDs24gZGUgIgorIsKrY2x1c3RlcsK7LlxuIgorIlNlIGNvcnJlZ2lyw6EgZW4gZWwgcGFzbyAxQi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiQGkgJWkgdGllbmUgcHVlc3RhIGxhIGJhbmRlcmEgSU5ERVhfRkwgcGVybyBubyBlcyB1biBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIkVsIGZpY2hlcm8gZXNwZWNpYWwgKGRpc3Bvc2l0aXZvL8Krc29ja2V0wrsvZmlmby9lbmxhY2Ugc8OtbWJvbGljbykgKEBpICVpKVxuIgorIm5vIGVzIG1vZGlmaWNhYmxlIG8gdGllbmUgbGEgYmFuZGVyYSAnYXBwZW5kLW9ubHknIChzw7NsbyBhw7FhZGlyKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQEEgZGUgbGEgZXN0cnVjdHVyYSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiRWwgQGkgJWkgdGllbmUgdW4gZXh0ZW50IEBuXG4iCisiXHQoQGIgbMOzZ2ljbyAlYywgQGIgZsOtc2ljbyBAbiAlYiwgbG9uZ2l0dWQgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0Cittc2dpZCAiQEEgbWVtb3J5IGZvciBlbmNyeXB0ZWQgQGQgbGlzdFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjkKK21zZ2lkICJAaSAlaSBAeCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgImVsIEBiIGRlbCBAYSAlYiBlc3TDoSBkYcOxYWRvIChub21icmUgbm8gdsOhbGlkbykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisiU2UgZWplY3V0YW4gcGFzb3MgYWRpY2lvbmFsZXMgcGFyYSByZXNvbHZlciBsb3MgQGJzIHJlY2xhbWFkb3MgcG9yIG3DoXMgZGUgdW4gIgorIkBpLi4uXG4iCisiUGFzbyAxQjogU2UgdnVlbHZlbiBhIGV4cGxvcmFyIHBhcmEgbG9zIEBicyByZWNsYW1hZG9zIGVuIG3Dumx0aXBsZXMgIgorIm9jYXNpb25lc1xuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAiQmxvcXVlKHMpIHJlY2xhbWFkbyhzKSBlbiBtw7psdGlwbGVzIG9jYXNpb25lcyBlbiBAaSAlaToiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWllbnRyYXMgc2UgZXhwbG9yYWJhbiBsb3Mgbm9kb3MtaSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3NworIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCittc2dzdHIgIkBBIGRlbCBAQiBkZWwgQGkgKEBpX2R1cF9tYXApOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJFcnJvciBtaWVudHJhcyBzZSBpdGVyYWJhIHNvYnJlIGxvcyBAYnMgZW4gZWwgQGkgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorIkVycm9yIGFsIGFqdXN0YXIgbGEgY3VlbnRhIGRlIHJlZmVyZW5jaWEgcGFyYSBlbCBAYiBkZWwgQGEgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlBhc28gMUM6IEV4cGxvcmFuZG8gbG9zIGRpcmVjdG9yaW9zIHBhcmEgYnVzY2FyIG5vZG9zLWkgY29uIEBicyByZWNsYW1hZG9zICIKKyJlbiBtw7psdGlwbGVzIG9jYXNpb25lc1xuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiUGFzbyAxRDogUmVjb25jaWxpYW5kbyBsb3MgQGJzIHJlY2xhbWFkb3MgZW4gbcO6bHRpcGxlcyBvY2FzaW9uZXNcbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisiRWwgZmljaGVybyAlUSAoQGkgIyVpLCBmZWNoYSBkZSBtb2RpZmljYWNpw7NuICVJTSlcbiIKKyJ0aWVuZSAlciBAYihzKSByZWNsYW1hZG8ocykgZW4gbcO6bHRpcGxlcyBvY2FzaW9uZXMsIGNvbXBhcnRpZG8ocykgY29uICVOICIKKyJmaWNoZXJvKHMpOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKEBpICMlaSwgZmVjaGEgZGUgbW9kaWZpY2FjacOzbiAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxtZXRhZGF0b3MgZGVsIEBmPlxuIgorCisjLiBALWV4cGFuZGVkOiAoVGhlcmUgYXJlICVOIGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLilcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIyNAorbXNnaWQgIiIKKyIoVGhlcmUgYXJlICVOIEBpcyBjb250YWluaW5nIEBtIEBicy4pXG4iCisiXG4iCittc2dzdHIgIiIKKyIoSGF5ICVOIG5vZG9zLWkgcXVlIGNvbnRpZW5lbiBAYnMgcmVjbGFtYWRvcyBlbiBtw7psdGlwbGVzIG9jYXNpb25lcy4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJMb3MgQGJzIHJlY2xhbWFkb3MgZW4gbcO6bHRpcGxlcyBvY2FzaW9uZXMgeWEgc2UgcmVhc2lnbmFyb24gbyBzZSBjbG9uYXJvbi5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNsb25lIGZpbGU6ICVtXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIGNsb25hciBlbCBmaWNoZXJvOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJQYXNvIDNBOiBPcHRpbWl6YW5kbyBkaXJlY3Rvcmlvc1xuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJGYWxsbyBhbCBvcHRpbWl6YXIgZWwgZGlyZWN0b3JpbyAlcSAoJWQpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKKyMsIGZ1enp5Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICJPcHRpbWl6YW5kbyBkaXJlY3RvcmlvczogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiUGFzbyAyOiBWZXJpZmljYW5kbyBsYSBlc3RydWN0dXJhIGRlIEBkc1xuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIGlub2RlIG51bWJlciBmb3IgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBuIEBpIG51bWJlciBmb3IgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJOw7ptZXJvIEBuIGRlbCBAaSBwYXJhICcuJyBlbiBlbCBAaSBkZWwgQGQgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGludmFsaWQgaW5vZGUgIzogJURpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDAKK21zZ2lkICJARSBoYXMgQG4gQGkgIzogJURpLlxuIgorbXNnc3RyICJARSB0aWVuZSB1biBAaSBAbiAjOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkBFIHRpZW5lIHVuIEBpICVEaSBARC9ubyB1dGlsaXphZG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvICcuJyAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTAKK21zZ2lkICJARSBATCB0byAnLicgICIKK21zZ3N0ciAiQEUgQEwgYSAnLicgICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIkBFIGFwdW50YSBhbCBAaSAoJURpKSB1YmljYWRvIGVuIHVuIEBiIGRhw7FhZG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAlUCAoJURpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzIwCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgIkBFIEBMIGFsIEBkICVQICglRGkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1Cittc2dpZCAiQEUgQEwgdG8gdGhlIEByLlxuIgorbXNnc3RyICJARSBATCBhbCBAci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJMYSBARSBjb250aWVuZSBjYXJhY3RlcmVzIG5vIHbDoWxpZG9zIGVuIGVsIG5vbWJyZS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkZhbHRhICcuJyBlbiBlbCBAZCBAaSAlaS5cbiIKKworIyBUT0RPIGRlbCAtPiBkZQorIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiRmFsdGEgJy4uJyBlbiBlbCBAaSBkZWwgQGQgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpcnN0IGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApIHNob3VsZCBiZSAnLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQ1Cittc2dpZCAiRmlyc3QgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgKCVwKSBAcyAnLidcbiIKK21zZ3N0ciAiTGEgcHJpbWVyYSBAZSAnJURuJyAoQGk9JURpKSBlbiBlbCBAaSBkZWwgQGQgJWkgKCVwKSBAcyAnLidcbiIKKworIy4gQC1leHBhbmRlZDogU2Vjb25kIGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSBzaG91bGQgYmUgJy4uJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTAKK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICJMYSBzZWd1bmRhIEBlICclRG4nIChAaT0lRGkpIGVuIGVsIEBpIGRlbCBAZCAlaSBAcyAnLi4nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmFkZHIgZm9yIGlub2RlICVpICglUSkgaXMgJUlGLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzU1Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgIkVsIGlfZmFkZHIgQEYgJUlGLCBAcyBjZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJFbCBpX2ZpbGVfYWNsIEBGICVJZiwgQHMgY2Vyby5cbiIKKworIy4gQC1leHBhbmRlZDogaV9kaXJfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZCwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2NQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgIkVsIGlfZGlyX2FjbCBARiAlSWQsIEBzIGNlcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3MAorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiRWwgaV9mcmFnIEBGICVOLCBAcyBjZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiRWwgaV9mc2l6ZSBARiAlTiwgQHMgY2Vyby5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJFbCBAaSAlaSAoJVEpIHRpZW5lIHVuIG1vZG8gQG4gKCVJbSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGNvcnJ1cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODUKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkVsIEBpIGRlbCBAZCAlaSwgJUIsIGRlc3BsYXphbWllbnRvICVOOiBlbCBAZCBlc3TDoSBkYcOxYWRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIiIKKyJFbCBAaSBkZWwgQGQgJWksICVCLCBkZXNwbGF6YW1pZW50byAlTjogZWwgbm9tYnJlIGRlbCBmaWNoZXJvIGVzIG11eSBsYXJnb1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIkVsIEBpICVpIGRlbCBAZCB0aWVuZSB1biAlQiBxdWUgbm8gZXN0w6EgcmVzZXJ2YWRvLiAgIgorCisjLiBALWV4cGFuZGVkOiAnLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwMAorIywgYy1mb3JtYXQKK21zZ2lkICInLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJMYSBAZSBlbiBlbCBAZCAnLicgZW4gZWwgQGkgZGVsIEBkICVpIG5vIGVzdMOhIHRlcm1pbmFkYSBjb24gTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkxhIEBlIGFsIEBkICcuLicgZW4gZWwgQGkgJWkgZGVsIEBkIG5vIGVzdMOhIHRlcm1pbmFkYSBjb24gTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgIkVsIEBpICVpICglUSkgZXMgdW4gQHYgZGUgY2Fyw6FjdGVyIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJFbCBAaSAlaSAoJVEpIGVzIHVuIEB2IGRlIEBiIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyMAorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLicgQGUuXG4iCittc2dzdHIgIkxhIEBFIGVzdMOhIGR1cGxpY2FkYSBlbiBsYSBAZSAnLicuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJMYSBARSBlc3TDoSBkdXBsaWNhZGEgZW4gbGEgQGUgJy4uJy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkVycm9yIGludGVybm86IG5vIHNlIHB1ZWRlIGVuY29udHJhciBlbCBkaXJfaW5mbyBwYXJhICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJMYSBARSB0aWVuZSB1biByZWNfbGVuIGRlICVEciB5IEBzICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICJAQSBkZSBsYSBlc3RydWN0dXJhIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgaXRlcmFyIHNvYnJlIGxvcyBAYnMgZGVsIEBkOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycm9yIGFsIGxlZXIgZWwgQGIgJWIgZGVsIEBkIChAaSAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgZXNjcmliaXIgZWwgQGIgJWIgZGVsIEBkIChAaSAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayBmb3IgaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiQEEgZGVsIEBiIGRlbCBAZCBwYXJhIGVsIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgbGliZXJhciBlbCBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICJMYSBAZSBkZWwgQGQgcGFyYSAnLicgZW4gJXAgKCVpKSBlcyBncmFuZGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIkVsIEBpICVpICglUSkgZXMgdW4gRklGTyBASS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkVsIEBpICVpICglUSkgZXMgdW4gc8OzY2tldCBASS5cbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgIlNlIHBvbmUgZWwgdGlwbyBkZSBmaWNoZXJvIHBhcmEgbGEgQEUgYSAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBzaG91bGQgYmUgJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIkxhIEBFIHRpZW5lIHVuIHRpcG8gZGUgZmljaGVybyBpbmNvcnJlY3RvIChlcmEgJUR0IHkgQHMgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkxhIEBFIHRpZW5lIHB1ZXN0byBlbCB0aXBvIGRlIGZpY2hlcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgemVyby1sZW5ndGggbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAwCittc2dpZCAiQEUgaGFzIGEgQHogbmFtZS5cbiIKK21zZ3N0ciAiTGEgQEUgdGllbmUgdW4gbm9tYnJlIGRlIEB6LlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIkVsIGVubGFjZSBzaW1iw7NsaWNvICVRIChAaSAjJWkpIGVzIEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIkVsIEBiIGRlbCBAYSBARiBlcyBAbiAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorIkVsIEBmIGNvbnRpZW5lIGZpY2hlcm9zIG11eSBncmFuZGVzLCBwZXJvIG5vIHRpZW5lIGxhIGJhbmRlcmEgTEFSR0VfRklMRSBlbiAiCisiZWwgQFMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAiSGF5IHVuIEBwIGVsIEBoICVkOiAlQiBubyBoYSBzaWRvIHJlZmVyZW5jaWFkb1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6ICVCIGhhIHNpZG8gcmVmZXJlbmNpYWRvIGRvcyB2ZWNlc1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICJIYXkgdW4gQGVuIGVsIEBoICVkOiAlQiB0aWVuZSB1biBoYXNoIG3DrW5pbW8gaW5jb3JyZWN0b1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6ICVCIHRpZW5lIHVuIGhhc2ggbcOheGltbyBpbmNvcnJlY3RvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkVsIEBoICVkIGVzIEBuICglcSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIkhheSB1biBAcCBlbCBAaCAlZCAoJXEpOiBlbCBuw7ptZXJvIGRlbCBAYiAlYiBlcyBpbmNvcnJlY3RvLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiSGF5IHVuIEBwIGVsIEBoICVkOiBlbCBub2RvIHJhw616IGVzIEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgbGltaXQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGxpbWl0ICglTilcbiIKK21zZ3N0ciAiSGF5IHVuIEBwIGVsIEBoICVkOiAlQiB0aWVuZSB1biBsw61taXRlIEBuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIkhheSB1biBAcCBlbCBAaCAlZDogJUIgdGllbmUgdW5hIGN1ZW50YSBAbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6ICVCIHRpZW5lIHVuYSB0YWJsYSBkZSBoYXNoIG5vIG9yZGVuYWRhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6ICVCIHRpZW5lIHVuYSBwcm9mdW5kaWRhZCBxdWUgbm8gZXMgdsOhbGlkYSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIkBFIGVzdMOhIGR1cGxpY2FkYS4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJMYSBARSB0aWVuZSB1biBub21icmUgZGUgZmljaGVybyBubyDDum5pY28uXG4iCisiU2UgY2FtYmlhIGVsIG5vbWJyZSBhICVzIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJTZSBlbmNvbnRyw7MgdW5hIEBlIGR1cGxpY2FkYSAnJURuJy5cbiIKKyJcdFNlIG1hcmNhICVwICglaSkgcGFyYSBzZXIgcmVjb25zdHJ1aWRvLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJFbCBpX2Jsb2Nrc19oaSBARiAlTiwgQHMgY2Vyby5cbiIKKworIy4gQC1leHBhbmRlZDogVW5leHBlY3RlZCBibG9jayBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk5Cittc2dpZCAiVW5leHBlY3RlZCBAYiBpbiBAaCAlZCAoJXEpLlxuIgorbXNnc3RyICJAYiBpbmVzcGVyYWRvIGVuIGVsIEBoICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisiQEUgaGFjZSByZWZlcmVuY2lhIGFsIEBpICVEaSBkZWwgQGcgJWcgZW4gZWwgcXVlIF9JTk9ERV9VTklOSVQgZXN0w6EgcHVlc3RvLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGZvdW5kIGluIGdyb3VwICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDgKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBmb3VuZCBpbiBAZyAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbiIKK21zZ3N0ciAiIgorIkBFIGhhY2UgcmVmZXJlbmNpYSBhbCBAaSAlRGkgZW5jb250cmFkbyBlbiBsYSB6b25hIGRlIG5vZG9zLWkgbm8gdXRpbGl6YWRvcyAiCisiZGVsIEBnICVnLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiRWwgaV9maWxlX2FjbCBARiAlTiwgQHMgY2Vyby5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6IGVsIG5vZG8gcmHDrXogZXMgQG4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJIYXkgdW4gQHAgZWwgQGggJWQ6IGVsIG5vZG8gcmHDrXogZXMgQG4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkVsIEBpIGRlbCBAZCAlaSwgJUIsIGRlc3BsYXphbWllbnRvICVOOiBlbCBAZCBlc3TDoSBkYcOxYWRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJQYXNvIDM6IFJldmlzYW5kbyBsYSBjb25lY3RpdmlkYWQgZGUgZGlyZWN0b3Jpb3NcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJFbCBAciBubyBoYSBzaWRvIHJlc2VydmFkby4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiTm8gaGF5IGVzcGFjaW8gZW4gZWwgQGQgQGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIkVsIEBkIGRlbCBAaSAlaSAoJXApIGVzdMOhIGRlc2NvbmVjdGFkb1xuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3NQorbXNnaWQgIi9AbCBub3QgZm91bmQuICAiCittc2dzdHIgIk5vIHNlIGVuY29udHLDsyAvQGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIicuLicgZW4gJVEgKGkpIGVzICVQICglaikgeSBkZWJlcsOtYSBzZXIgJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiRWwgL0BsIG5vIGV4aXN0ZSBvIGVzdMOhIGRhw7FhZG8uICBObyBzZSBwdWVkZSByZWNvbmVjdGFyLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIGV4cGFuZGlyIC9AbDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIHJlY29uZWN0YXIgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJFcnJvciBtaWVudHJhcyBzZSBpbnRlbnRhYmEgZW5jb250cmFyIC9AbDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfYmxvY2s6ICVtIG1pZW50cmFzIHNlIGludGVudGFiYSBjcmVhciBlbCBAZCAvQGwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2lub2RlOiAlbSBjdWFuZG8gc2UgaW50ZW50YWJhIGNyZWFyIGVsIEBkIC9AbC5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIG1pZW50cmFzIHNlIGNyZWFiYSB1biBudWV2byBAYiBkZSBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSBtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgQGIgZGUgQGQgcGFyYSAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiRXJyb3IgbWllbnRyYXMgc2UgYWp1c3RhYmEgbGEgY3VlbnRhIGRlbCBAaSBlbiBlbCBAaSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiTm8gc2UgcHVlZGUgYXJyZWdsYXIgYWwgcGFkcmUgZGVsIEBpICVpOiAlbVxuIgorIlxuIgorCisjIGVsIHBhZHJlCisjIFBlcmTDs24sIG5vIGVudGllbmRvLCBzZSBpbnRlbnRhIGFycmVnbGFyIEFMIHBhZHJlLCBubyBFTCBwYWRyZSBkZSB1biBkaXJlY3RvcmlvLgorIyBIYXkgYWxndW5hIHJlZ2xhIHF1ZSBzZSBtZSBlc2NhcGU/IG1tCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5vIHNlIHB1ZWRlIGFycmVnbGFyIGFsIHBhZHJlIGRlbCBAaSAlaTogbm8gc2UgcHVlZGUgZW5jb250cmFyIGxhIEBlIGFsIEBkICIKKyJwYWRyZVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgcm9vdCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJFcnJvciBhbCBjcmVhciBlbCBAZCByYcOteiAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyAvbG9zdCtmb3VuZCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIC9AbCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJFcnJvciBhbCBjcmVhciBlbCBAZCAvQGwgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgIkVsIEByIG5vIGVzIHVuIEBkOyBzZSBmaW5hbGl6YSBsYSBvcGVyYWNpw7NuLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzYwCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIgorbXNnc3RyICJObyBzZSBwdWVkZSBwcm9jZWRlciBzaW4gdW4gQHIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIkVsIC9AbCBubyBlcyB1biBAZCAoaW5vPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorIywgZnV6enkKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIkxhIGltYWdlbiAoJXMpIGVzdMOhIGNpZnJhZGFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzk3Cittc2dpZCAiUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3Rvcmllc1xuIgorbXNnc3RyICJQYXNvIDNBOiBPcHRpbWl6YW5kbyBkaXJlY3Rvcmlvc1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgIkZhbGxvIGFsIGNyZWFyIGVsIGl0ZXJhZG9yIGRpcnNfdG9faGFzaDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODA3Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIGRpcmVjdG9yeSAlcSAoJWQpOiAlbVxuIgorbXNnc3RyICJGYWxsbyBhbCBvcHRpbWl6YXIgZWwgZGlyZWN0b3JpbyAlcSAoJWQpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgIk9wdGltaXphbmRvIGRpcmVjdG9yaW9zOiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICJQYXNvIDQ6IFJldmlzYW5kbyBsYXMgY3VlbnRhcyBkZSByZWZlcmVuY2lhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiQGkgJWkgcXVlIHRpZW5lIEB6IGVzdMOhIEB1LiAgIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICJlbCBAaSAlaSBlc3TDoSBAdVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJMYSBjdWVudGEgZGUgcmVmZXJlbmNpYSBkZWwgQGkgJWkgZXMgJUlsLCB5IEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuCisjLiBALWV4cGFuZGVkOiBcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuCisjLiBALWV4cGFuZGVkOiBpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDgKK21zZ2lkICIiCisiV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbiIKKyJcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuIgorIkBpX2xpbmtfaW5mb1slaV0gaXMgJU4sIEBpLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBAcyB0aGUgc2FtZSFcbiIKK21zZ3N0ciAiIgorIsKhQVRFTkNJw5NOOiBFUlJPUiBERSBQUk9HUkFNQUNJw5NOIEVOIEUyRlNDSyFcbiIKKyJcdE8gQUxHw5pOIFRBUkFETyAoVVNURUQpIEVTVMOBIFJFVklTQU5ETyBVTiBTSVNURU1BIERFIEZJQ0hFUk9TIE1PTlRBRE8gIgorIihWSVZPKS5cbiIKKyJpbm9kZV9saW5rX2luZm9bJWldIGVzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGVzICVJbC4gIMKhWSBkZWJlcsOtYW4gc2VyIGVsICIKKyJtaXNtbyFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICJQYXNvIDU6IFJldmlzYW5kbyBlbCByZXN1bWVuIGRlIGluZm9ybWFjacOzbiBkZSBncnVwb3NcbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJObyBlc3TDoSBwdWVzdG8gZWwgcmVsbGVubyBhbCBmaW5hbCBkZWwgQEIgZGVsIEBpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2OAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiTm8gZXN0w6EgcHVlc3RvIGVsIHJlbGxlbm8gYWwgZmluYWwgZGVsIEBCIGRlbCBAYi4gIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODczCittc2dpZCAiQGIgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiRGlmZXJlbmNpYXMgZGVsIEBCIGRlbCBAYjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiRGlmZXJlbmNpYXMgZGVsIEBCIGRlbCBAaTogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorIkxhIGN1ZW50YSBkZSBub2Rvcy1pIGxpYnJlcyBlcyBpbmNvcnJlY3RhIHBhcmEgZWwgQGcgIyVnICglaSwgY29udGFkb3M9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorIkxhIGN1ZW50YSBkZSBkaXJlY3RvcmlvcyBlcyBpbmNvcnJlY3RhIHBhcmEgQGcgIyVnICglaSwgY29udGFkb3M9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJMYSBjdWVudGEgZGUgbm9kb3MtaSBsaWJyZXMgZXMgaW5jb3JyZWN0YSAoJWksIGNvbnRhZG9zPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIiIKKyJMYSBjdWVudGEgZGUgQGJzIGxpYnJlcyBlcyBpbmNvcnJlY3RhIHBhcmEgZWwgQGcgIyVnICglYiwgY29udGFkb3M9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJMYSBjdWVudGEgZGUgQGJzIGxpYnJlcyBlcyBpbmNvcnJlY3RhICglYiwgY29udGFkb3M9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQUk9HUkFNTUlORyBFUlJPUjogZmlsZXN5c3RlbSAoIyVOKSBiaXRtYXAgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgYml0bWFwIAorIy4gQC1leHBhbmRlZDogZW5kcG9pbnRzICglaSwgJWopXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorbXNnaWQgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgQEIgIgorImVuZHBvaW50cyAoJWksICVqKVxuIgorbXNnc3RyICIiCisiRVJST1IgREUgUFJPR1JBTUFDScOTTjogZWwgQGYgKCMlTikgbG9zIHB1bnRvcyBmaW5hbGVzIGRlbCAlQiAoJWIsICVjKSBubyAiCisiY29pbmNpZGVuIGNvbiBsb3MgcHVudG9zIGZpbmFsZXMgZGVsIEBCIGNhbGN1bGFkb3MgKCVpLCAlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIkVycm9yIGludGVybm86IGVsIGZpbmFsIGRlbCBiaXRtYXAgbm8gdGllbmUgc2VudGlkbyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgY29waWFyIGVsIHJlZW1wbGF6byBkZWwgQGkgQEI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgY29waWFyIGVsIHJlZW1wbGF6byBkZWwgQGIgQEI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIiIKKyJFbChsb3MpIEBiKHMpIGRlbCBAZyAlZyBlc3TDoShuKSBlbiB1c28sIHBlcm8gZWwgZ3J1cG8gZXN0w6EgZXRpcXVldGFkbyBjb21vICIKKyJCTE9DS19VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUocykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaShzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbiIKK21zZ3N0ciAiIgorIkVsKGxvcykgbm9kbyhzKS1pIGRlbCBAZyAlZyBlc3TDoShuKSBlbiB1c28sIHBlcm8gZWwgZ3J1cG8gZXN0w6EgZXRpcXVldGFkbyAiCisiY29tbyBJTk9ERV9VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgIlJlY3JlYXIgZWwgQGoiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICJBY3R1YWxpemFyIGxhIGluZm9ybWFjacOzbiBkZSBjdW90YSBwYXJhIGVsIHRpcG8gZGUgY3VvdGEgJU4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgcG9uZXIgbGEgaW5mb3JtYWNpw7NuIGRlIMKrY2hlY2tzdW3CuyBkZWwgZ3J1cG8gZGUgYmxvcXVlczogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRXJyb3IgYWwgZXNjcmliaXIgbGEgaW5mb3JtYWNpw7NuIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZmx1c2hpbmcgd3JpdGVzIHRvIHN0b3JhZ2UgZGV2aWNlOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3IgYWwgaGFjZXIgZWZlY3RpdmFzIGxhcyBlc2NyaXR1cmFzIGVuIGVsIGRpc3Bvc2l0aXZvIGRlIGFsbWFjZW5hbWllbnRvOiAiCisiJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAiQWN0dWFsaXphciBsYSBpbmZvcm1hY2nDs24gZGUgY3VvdGEgcGFyYSBlbCB0aXBvIGRlIGN1b3RhICVOIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5oYW5kbGVkIGVycm9yIGNvZGUgKDB4JXgpIVxuIgorbXNnc3RyICLCoUPDs2RpZ28gZGUgZXJyb3Igbm8gcHJldmlzdG8gKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiU0UgSUdOT1JBIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIk1lbW9yaWEgdXRpbGl6YWRhOiAlZCwgdGllbXBvIHRyYW5zY3VycmlkbzogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJ0YW1hw7FvIGRlbCBub2RvLWk9JWRcbiIKKworIyBUT0RPIGNvbWVuemFiYSAtPiBjb21lbnphYmFuCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJtaWVudHJhcyBzZSBjb21lbnphYmEgYSBleHBsb3JhciBsb3Mgbm9kb3MtaSIKKworIyBUT0RPIGV4cGxvcmFiYSAtPiBleHBsb3JhYmFuCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICJtaWVudHJhcyBzZSBleHBsb3JhYmEgbG9zIG5vZG9zLWkiCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGxhbWFiYSBhIGV4dDJmc19ibG9ja19pdGVyYXRlIHBhcmEgZWwgbm9kby1pICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBmb3IgaW5vZGUgJWQiCittc2dzdHIgIm1pZW50cmFzIHNlIGxsYW1hYmEgYSBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBwYXJhIGVsIG5vZG8taSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiVHJ1bmNhbmRvIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiQm9ycmFuZG8iCisKKyM6IGUyZnNjay91bml4LmM6NzcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisiXHRcdFstbHwtTCBiYWRfYmxvY2tzX2ZpbGVdIFstQyBmZF0gWy1qIGV4dGVybmFsX2pvdXJuYWxdXG4iCisiXHRcdFstRSBleHRlbmRlZC1vcHRpb25zXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIk1vZG8gZGUgZW1wbGVvOiAlcyBbLXBhbnlyY2RmdnRERlZdIFstYiBzdXBlcmJsb3F1ZV0gWy1CIHRhbWHDsW9kZWxibG9xdWVdXG4iCisiXHRcdFstSSBibG9xdWVzX2RlbF9iw7pmZXJfZGVsX25vZG8taV0gWy1QIHRhbWHDsW9fZGVsX3Byb2Nlc29fZGVsX25vZG8taV1cbiIKKyJcdFx0Wy1sfC1MIGZpY2hlcm9fZGVfYmxvcXVlc19kYcOxYWRvc10gWy1DIGZkXSBbLWogZmljaGVyby1kZS10cmFuc2FjY2lvbmVzLSIKKyJleHRlcm5vXVxuIgorIlx0XHRbLUUgb3BjaW9uZXMtZXh0ZW5kaWRhc10gZGlzcG9zaXRpdm9cbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkF5dWRhIGRlIGVtZXJnZW5jaWE6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIFJlcGFyYWNpw7NuIGF1dG9tw6F0aWNhIChzaW4gaGFjZXIgcHJlZ3VudGFzKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBObyBzZSBoYWNlbiBjYW1iaW9zIGFsIHNpc3RlbWEgZGUgZmljaGVyb3NcbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQ29udGVzdGFyIFwic2lcIiBhIHRvZGFzIGxhcyBwcmVndW50YXNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQnVzY2EgbG9zIGJsb3F1ZXMgZGHDsWFkb3MgeSBsb3MgYWdyZWdhIGEgbGFcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgbGlzdGEgZGUgYmxvcXVlcyBkYcOxYWRvc1xuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGdWVyemEgbGEgcmV2aXNpw7NuIGHDum4gc2kgZWwgc2lzdGVtYSBkZSBmaWNoZXJvc1xuIgorIiAgICAgICAgICAgICAgICAgICAgICBlc3TDoSBldGlxdWV0YWRvIGNvbW8gbGltcGlvXG4iCisKKyMgVE9ETzogcmV2aXNhciBhbGluZWFtaWVudG8KKyM6IGUyZnNjay91bml4LmM6ODgKKyMsIGZ1enp5Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiIC12ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYSBtw6FzIG1lbnNhamVzIGRlIGRpYWduw7NzdGljb1xuIgorIiAtYiBzdXBlcmJsb3F1ZSAgICAgICAgICBVdGlsaXphIGVsIHN1cGVyYmxvcXVlIGFsdGVybmF0aXZvXG4iCisiIC1CIHRhbWHDsW9kZWxibG9xdWUgICAgICBGdWVyemEgZWwgdGFtYcOxb2RlbGJsb3F1ZSBjdWFuZG8gYnVzY2EgIgorImFsICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyYmxvcXVlXG4iCisiIC1qIGZpY2hlcm8tZGUtdHJhbnNhY2Npb25lcy1leHRlcm5vIFxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICBJbmRpY2EgZWwgbHVnYXIgZW4gZG9uZGUgZXN0w6EgZWwgZmljaGVyb1xuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICBkZSB0cmFuc2FjY2lvbmVzIGV4dGVybm9cbiIKKyIgLWwgZmljaGVyb19kZV9ibG9xdWVzX2Rhw7FhZG9zIFxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZ2EgYSBsYSBsaXN0YSBkZSBibG9xdWVzIGRhw7FhZG9zXG4iCisiIC1MIGZpY2hlcm9fZGVfYmxvcXVlc19kYcOxYWRvcyBcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgUG9uZSBsYSBsaXN0YSBkZSBibG9xdWVzIGRhw7FhZG9zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzOiAldS8ldSBmaWNoZXJvcyAoJTBkLiVkJSUgbm8gY29udGlndW9zKSwgJWxsdS8lbGx1IGJsb3F1ZXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBub2RvLWkgdXRpbGl6YWRvICglMi4yZiUlLCBlbCAldSlcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgbm9kb3MtaSB1dGlsaXphZG9zICglMi4yZiUlLCBlbCAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgZmljaGVybyBubyBjb250aWd1byAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgZmljaGVyb3Mgbm8gY29udGlndW9zICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBkaXJlY3RvcmlvIG5vIGNvbnRpZ3VvICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBkaXJlY3RvcmlvcyBubyBjb250aWd1b3MgKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgIG7Dum1lcm8gZGUgbm9kb3MtaSBjb24gYmxvcXVlcyBpbmQvZGluZC90aW5kOiAldS8ldS8ldVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiAgICAgICAgICAgICBIaXN0b2dyYW1hIGRlIGxhcyBwcm9mdW5kaWRhZGVzIGRlIMKrZXh0ZW50c8K7OiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IGJsb3F1ZSB1c2FkbyAoJTIuMmYlJSwgZWwgJWxsdSlcbiIKK21zZ3N0clsxXSAiJTEybGx1IGJsb3F1ZXMgdXNhZG9zICglMi4yZiUlLCBlbCAlbGx1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSBibG9xdWUgZGHDsWFkb1xuIgorbXNnc3RyWzFdICIlMTJ1IGJsb3F1ZXMgZGHDsWFkb3NcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsYXJnZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGFyZ2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBmaWNoZXJvIGdyYW5kZVxuIgorbXNnc3RyWzFdICIlMTJ1IGZpY2hlcm9zIGdyYW5kZXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgZmljaGVybyByZWd1bGFyXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IGZpY2hlcm9zIHJlZ3VsYXJlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUgZGlyZWN0b3Jpb1xuIgorbXNnc3RyWzFdICIlMTJ1IGRpcmVjdG9yaW9zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGRpc3Bvc2l0aXZvIGRlIGNhcmFjdGVyZXNcbiIKK21zZ3N0clsxXSAiJTEydSBkaXNwb3NpdGl2b3MgZGUgY2FyYWN0ZXJlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgZGlzcG9zaXRpdm8gZGUgYmxvcXVlXG4iCittc2dzdHJbMV0gIiUxMnUgZGlzcG9zaXRpdm9zIGRlIGJsb3F1ZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpZm9cbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWZvc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpZm9cbiIKK21zZ3N0clsxXSAiJTEydSBmaWZvc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIlMTJ1IHbDrW5jdWxvXG4iCittc2dzdHJbMV0gIiUxMnUgdsOtbmN1bG9zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc3ltYm9saWMgbGluayIKK21zZ2lkX3BsdXJhbCAiJTEydSBzeW1ib2xpYyBsaW5rcyIKK21zZ3N0clswXSAiJTEydSBlbmxhY2Ugc2ltYsOzbGljbyIKK21zZ3N0clsxXSAiJTEydSBlbmxhY2VzIHNpbWLDs2xpY29zIgorCisjOiBlMmZzY2svdW5peC5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICIgKCV1IGZhc3Qgc3ltYm9saWMgbGluaylcbiIKK21zZ2lkX3BsdXJhbCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmtzKVxuIgorbXNnc3RyWzBdICIgKCV1IHbDrW5jdWxvIHNpbWLDs2xpY28gcsOhcGlkbylcbiIKK21zZ3N0clsxXSAiICgldSB2w61uY3Vsb3Mgc2ltYsOzbGljb3MgcsOhcGlkb3MpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IHrDs2NhbG9cbiIKK21zZ3N0clsxXSAiJTEydSB6w7NjYWxvc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpY2hlcm9cbiIKK21zZ3N0clsxXSAiJTEydSBmaWNoZXJvc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIzNSBtaXNjL2JhZGJsb2Nrcy5jOjk5MyBtaXNjL3R1bmUyZnMuYzoyODc4IG1pc2MvdXRpbC5jOjEyNgorIzogcmVzaXplL21haW4uYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAibWllbnRyYXMgc2UgZGV0ZXJtaW5hYmEgc2kgJXMgZXN0w6EgbW9udGFkby4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICLCoUF0ZW5jacOzbiEgICVzIGVzdMOhIG1vbnRhZG8uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIsKhQXRlbmNpw7NuISAgJXMgZXN0w6EgZW4gdXNvLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIlcyBlc3TDoSBtb250YWRvLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiVzIGVzdMOhIGVuIHVzby5cbiIKKworIyBUT0RPIGZpbmFsaXphIC0+CisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTm8gc2UgcHVlZGUgY29udGludWFyLCBzZSBmaW5hbGl6YS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyLCocKhQVRFTkNJw5NOISEgIEVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXN0w6EgbW9udGFkby4gU2kgc2UgY29udGluw7phIHNlICIKKyJQUk9WT0NBUsOBTlxuIgorIkdSQVZFUyBkYcOxb3MgYWwgc2lzdGVtYSBkZSBmaWNoZXJvcy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIsK/RGUgdmVyZGFkIHF1aWVyZSBjb250aW51YXI/IgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgInJldmlzacOzbiBpbnRlcnJ1bXBpZGEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MzcxCittc2dpZCAiIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMiCittc2dzdHIgIiBjb250aWVuZSB1biBzaXN0ZW1hIGRlIGZpY2hlcm9zIGNvbiBlcnJvcmVzIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgbm8gZnVlIGRlc21vbnRhZG8gbGltcGlhbWVudGUiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiIKKyIgbGFzIGNhcmFjdGVyw61zdGljYXMgZGVsIHN1cGVyYmxvcXVlIHByaW1hcmlvIGRpZmllcmVuIGRlIGxhcyBkZSBsYSBjb3BpYSBkZSAiCisic2VndXJpZGFkIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBoYSBzaWRvIG1vbnRhZG8gJXUgdmVjZXMgc2luIHNlciByZXZpc2FkbyIKKworIzogZTJmc2NrL3VuaXguYzozODYKK21zZ2lkICIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIKK21zZ3N0ciAiIgorIiB0aWVuZSBsYSBob3JhIGRlIGxhIMO6bHRpbWEgcmV2aXNpw7NuIGFsIHNpc3RlbWEgZGUgZmljaGVyb3MgZW4gZWwgZnV0dXJvIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiB5YSBsbGV2YSAldSBkw61hcyBzaW4gc2VyIHJldmlzYWRvIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIHNlIGZ1ZXJ6YSBsYSByZXZpc2nDs24uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjbGVhbiwgJXUvJXUgZmlsZXMsICVsbHUvJWxsdSBibG9ja3MiCittc2dzdHIgIiVzOiBsaW1waW8sICV1LyV1IGZpY2hlcm9zLCAlbGx1LyVsbHUgYmxvcXVlcyIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChjb21wcm9iYWNpw7NuIGFwbGF6YWRhOyBjb24gYmF0ZXLDrWFzKSIKKworIyBPICJyZXZpc2nDs24gZGVzcHXDqXMgZGVsIHNpZ3VpZW50ZSBtb250YWplIi4KKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChjb21wcm9iYWNpw7NuIGVuIGVsIHNpZ3VpZW50ZSBtb250YWplKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiIChjb21wcm9iYWNpw7NuIGRlc3B1w6lzIGRlICVsZCBtb250YWplcykiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIkVSUk9SOiBubyBzZSBwdWVkZSBhYnJpciAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAiVmVyc2nDs24gZGUgRUEgbm8gdsOhbGlkYS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKKyMsIGZ1enp5Cittc2dpZCAiSW52YWxpZCByZWFkYWhlYWQgYnVmZmVyIHNpemUuXG4iCittc2dzdHIgIlBhcsOhbWV0cm8gZGUgdmFyaWFjacOzbiBkZSB0YW1hw7FvIG5vIHbDoWxpZG86ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJPcGNpw7NuIGV4dGVuZGlkYSBkZXNjb25vY2lkYTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJFcnJvciBkZSBzaW50YXhpcyBlbiBlbCBmaWNoZXJvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGUyZnNjayAoJXMsIGzDrW5lYSAjJWQpXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiRXJyb3IgYWwgdmFsaWRhciBlbCBkZXNjcmlwdG9yIGRlIGZpY2hlcm9zICVkOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIkluZm9ybWFjacOzbiBkZSBjb25zaXN0ZW5jaWEgbm8gdsOhbGlkYSBlbiBlbCBkZXNjcmlwdG9yIGRlIGZpY2hlcm9zIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiU8OzbG8gc2UgcHVlZGUgZXNwZWNpZmljYXIgdW5hIGRlIGxhcyBvcGNpb25lcyAtcC8tYSwgLW4gbyAteS4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJMYSBvcGNpw7NuIC10IG5vIGVzdMOhIGltcGxlbWVudGFkYSBlbiBlc3RhIHZlcnNpw7NuIGRlIGUyZnNjay5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIk5vIGVzIHBvc2libGUgcmVzb2x2ZXIgJyVzJyIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxhcyBvcGNpb25lcyAtbiB5IC1EIHNlIGV4Y2x1eWVuIG11dHVhbWVudGUuIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGFzIG9wY2lvbmVzIC1uIHkgLWMgc2UgZXhjbHV5ZW4gbXV0dWFtZW50ZS4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJMYXMgb3BjaW9uZXMgLW4geSAtbC8tTCBzZSBleGNsdXllbiBtdXR1YW1lbnRlLiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxhcyBvcGNpb25lcyAtbiB5IC1EIHNlIGV4Y2x1eWVuIG11dHVhbWVudGUuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorIywgZnV6enkKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGFzIG9wY2lvbmVzIC1uIHkgLUQgc2UgZXhjbHV5ZW4gbXV0dWFtZW50ZS4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiTGFzIG9wY2lvbmVzIC1jIHkgLWwvLUwgbm8gcHVlZGVuIHNlciB1dGlsaXphZGFzIHNpbXVsdMOhbmVhbWVudGUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vIGVzIHVuIGVudGVyb1xuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBcmd1bWVudG8gbm8gbnVtw6lyaWNvIGludsOhbGlkbyBwYXJhIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyJFbCBpbnRlcnZhbG8gZGUgbGEgcHJvdGVjY2nDs24gY29udHJhIG1vbnRhamUgbcO6bHRpcGxlIChNTVApIGVzIGRlICV1ICIKKyJzZWd1bmRvcyB5IGVsIHRpZW1wbyB0b3RhbCBkZSBlc3BlcmEgZXMgZGUgJXUgc2VndW5kb3MuIFBvciBmYXZvciwgIgorImVzcGVyZS4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTAgZTJmc2NrL3VuaXguYzoxMjE1Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXZpc2FiYSBlbCBibG9xdWUgTU1QIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorIlNpIHNlIHNhYmUgY29uIGNlcnRlemEgcXVlIGVsIHNpc3RlbWEgZGUgZmljaGVyb3Mgbm8gZXN0w6EgZW4gdXNvIGVuIG5pbmfDum5cbiIKKyJtb2RvLCBlamVjdXRlICd0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJtaWVudHJhcyBzZSBsZcOtYSBlbCBibG9xdWUgTU1QLiIKKworIzogZTJmc2NrL3VuaXguYzoxMjUyIGUyZnNjay91bml4LmM6MTMwNCBtaXNjL2UydW5kby5jOjIzMCBtaXNjL2UydW5kby5jOjI3NQorIzogbWlzYy9ta2UyZnMuYzoyNTQxIG1pc2MvbWtlMmZzLmM6MjU5MiBtaXNjL3R1bmUyZnMuYzoyNjEwCisjOiBtaXNjL3R1bmUyZnMuYzoyNjU1IHJlc2l6ZS9tYWluLmM6MTg3IHJlc2l6ZS9tYWluLmM6MjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgdXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorbXNnc3RyICIiCisiU29icmVlc2NyaWJpZW5kbyBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGV4aXN0ZW50ZTsgcHVlZGUgZGVzaGFjZXJzZSBtZWRpYW50ZSAiCisiZWwgY29tYW5kbzpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTI5MyBtaXNjL2UydW5kby5jOjI2NCBtaXNjL21rZTJmcy5jOjI1ODEgbWlzYy90dW5lMmZzLmM6MjY0NAorIzogcmVzaXplL21haW4uYzoyMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGJvcnJhciAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGNvbmZpZ3VyYXIgZWwgZmljaGVybyBkZSBhbnVsYWNpw7NuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICLCoUVycm9yOiBsYSB2ZXJzacOzbiBkZSBsYSBiaWJsaW90ZWNhIGV4dDJmcyBlc3TDoSBjYWR1Y2EhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSBpbmljaWFsaXphciBlbCBwcm9ncmFtYSIKKworIzogZTJmc2NrL3VuaXguYzoxMzkzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXMsICVzXG4iCittc2dzdHIgIlx0QWwgZW1wbGVhciAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAic2UgbmVjZXNpdGEgdW5hIHRlcm1pbmFsIHBhcmEgaGFjZXIgbGFzIHJlcGFyYWNpb25lcyBpbnRlcmFjdGl2YXMiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXM6ICVzIGludGVudGFuZG8gbG9zIGJsb3F1ZXMgZGUgcmVzcGFsZG8uLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY4Cittc2dpZCAiU3VwZXJibG9jayBpbnZhbGlkLCIKK21zZ3N0ciAiU3VwZXJibG9xdWUgZXMgaW52w6FsaWRvLCIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkxvcyBkZXNjcmlwdG9yZXMgZGUgbG9zIGdydXBvcyBwYXJlY2VuIGRhw7FhZG9zLi4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlczogJXMgbWllbnRyYXMgc2UgdXRpbGl6YWJhbiBsb3MgYmxvcXVlcyBkZSByZXNwYWxkbyIKKworIyBPam86IE5vIGVzIHF1ZSBzZSBoYXlhIGVuY29udHJhZG8gdW4gc3VwZXJibG9xdWUgcXVlIHJlc3VsdGEgcXVlIG5vIGVzCisjIHbDoWxpZG8sIHNpbm8gcXVlIG5vIHNlIGhhIGVuY29udHJhZG8gbmluZ8O6biBzdXBlcmJsb3F1ZSBxdWUgc2VhIHbDoWxpZG8sCisjIHF1ZSBlcyBkaXN0aW50byAoYSBsbyBtZWpvciBubyBzZSBoYSBlbmNvbnRyYWRvIG5pbmfDum4gc3VwZXJibG9xdWUKKyMgZW4gYWJzb2x1dG8pLiBDcmVvIHF1ZSBsYSB0cmFkdWNjacOzbiBkZWJlcsOtYSBjYW1iaWFyc2UuIHN2CisjIEVuIGVmZWN0bywgdGllbmVzIHRvZGEgbGEgcmF6w7NuLiBDb3JyZWdpZG8uIG1tCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlczogdm9sdmllbmRvIGFsIHN1cGVyYmxvcXVlIG9yaWdpbmFsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJMYSB2ZXJzacOzbiBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBlcywgZW4gYXBhcmllbmNpYSwgbXV5IHN1cGVyaW9yIHBhcmEgIgorImVzdGFcbiIKKyJ2ZXJzacOzbiBkZSBlMmZzY2suIChPIGVsIHN1cGVyYmxvcXVlIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGVzdMOhIGRhw7FhZG8pXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIsK/RXN0YSBwb2Ryw61hIHNlciB1bmEgcGFydGljacOzbiBkZSBsb25naXR1ZCBjZXJvP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJTZSBkZWJlIHRlbmVyIGFjY2VzbyAlcyBhbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIG8gc2VyIHJvb3RcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICLCv0VzIHBvc2libGUgcXVlIG5vIGV4aXN0YSBvIHF1ZSBzZWEgdW4gZGlzcG9zaXRpdm8gZGUgaW50ZXJjYW1iaW8/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiwr9TaXN0ZW1hIGRlIGZpY2hlcm9zIG1vbnRhZG8gbyBhYmllcnRvIGVuIGV4Y2x1c2l2YSBwb3Igb3RybyBwcm9ncmFtYT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiwr9FcyBwb3NpYmxlIHF1ZSBubyBleGlzdGEgZWwgZGlzcG9zaXRpdm8/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiRWwgZGlzY28gZXN0w6EgcHJvdGVnaWRvIGNvbnRyYSBlc2NyaXR1cmE7IHV0aWxpY2UgbGEgb3BjacOzbiAtbiBwYXJhXG4iCisiaGFjZXIgdW5hIHJldmlzacOzbiBkZSBzw7NsbyBsZWN0dXJhIGFsIGRpc3Bvc2l0aXZvLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgIsKhQ29uc2lnYSB1bmEgdmVyc2nDs24gbcOhcyBtb2Rlcm5hIGRlIGUyZnNjayEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIHJldmlzYWJhIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBleHQzIHBhcmEgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICJObyBzZSBwdWVkZSBwcm9jZWRlciBzaW4gdW4gQHIuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY2MgorbXNnaWQgIiIKKyJXYXJuaW5nOiBza2lwcGluZyBqb3VybmFsIHJlY292ZXJ5IGJlY2F1c2UgZG9pbmcgYSByZWFkLW9ubHkgZmlsZXN5c3RlbSAiCisiY2hlY2suXG4iCittc2dzdHIgIiIKKyJBdGVuY2nDs246IHNlIG9taXRpcsOhIGxhIHJlY3VwZXJhY2nDs24gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBkZWJpZG8gYSAiCisicXVlIHNlIGVzdMOhIGhhY2llbmRvIHVuYSByZXZpc2nDs24gZGUgc8OzbG8gbGVjdHVyYSBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJubyBlcyBwb3NpYmxlIHBvbmVyIGxhcyBiYW5kZXJhcyBkZSBzdXBlcmJsb3F1ZSBlbiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gJXNcbiIKK21zZ3N0ciAiwqFObyBzZSBlbmNvbnRyw7MgZWwgc3VwZXJibG9xdWUgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICJGaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZWxpbWluYWRvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJtaWVudHJhcyBzZSByZWN1cGVyYWJhIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBleHQzIGRlICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyB0aWVuZSBjYXJhY3RlcsOtc3RpY2FzIG5vIHNvcG9ydGFkYXM6IgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIlczogJXMgbWllbnRyYXMgc2UgbGXDrWEgZWwgbm9kby1pIGRlIGxvcyBibG9xdWVzIGRhw7FhZG9zXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiRXN0byBubyBzZSB2ZSBtdXkgYmllbiwgcGVybyBzZSBpbnRlbnRhcsOhIGNvbnRpbnVhci4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICJDcmVhbmRvIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyAoJWQgYmxvcXVlcyk6ICIKKworIzogZTJmc2NrL3VuaXguYzoxODI4Cittc2dpZCAiIERvbmUuXG4iCittc2dzdHIgIiBIZWNoby5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgc2UgaGEgY3JlYWRvIGRlIG51ZXZvICoqKlxuIgorIioqKiBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIHZ1ZWx2ZSBhIHNlciBleHQzICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJmaW5hbGl6YWRvIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGUyZnNjayBjYW5jZWxlZC5cbiIKK21zZ3N0ciAiJXM6IHNlIGNhbmNlbGEgZTJmc2NrLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAiU2UgcmVpbmljaWEgZTJmc2NrIGRlc2RlIGVsIHByaW5jaXBpby4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAibWllbnRyYXMgc2UgcmVhanVzdGEgZWwgY29udGV4dG8iCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogRUwgU0lTVEVNQSBERSBGSUNIRVJPUyBGVUUgTU9ESUZJQ0FETyAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVzOiAqKioqKiBSRUlOSUNJRSBMSU5VWCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIEFURU5DScOTTjogRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB0b2RhdsOtYSB0aWVuZSBlcnJvcmVzICIKKyIqKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJzUyIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8cz4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKHMvbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICLCoWNhbmNlbGFkbyFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAic2lcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJub1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyLCvyVzPyBub1xuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiwr8lcz8gc2lcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJ5ZXMiCittc2dzdHIgInNpIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgIm5vIgorbXNnc3RyICJubyIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBibG9xdWUocykgbm8gdsOhbGlkbyhzKSBkZSBtYXBhcyBkZSBiaXRzIHBhcmEgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzA3Cittc2dpZCAicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIKK21zZ3N0ciAibGV5ZW5kbyBsb3MgbWFwYXMgZGUgYml0cyBkZWwgbm9kby1pIHkgZGVsIGJsb3F1ZSIKKworIyBUT0RPIGludGVudGFiYW4gbyBpbnRlbnRhYmEKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYW4gbGVlciBsb3MgbWFwYXMgZGUgYml0cyBwYXJhICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgImVzY3JpYmllbmRvIGxvcyBtYXBhcyBkZSBiaXRzIGRlbCBibG9xdWUgeSBkZWwgbm9kby1pIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICIiCisibWllbnRyYXMgc2UgcmVlc2NyaWLDrWFuIGxvcyBtYXBhcyBkZSBiaXRzIGRlIGJsb3F1ZXMgeSBkZSBub2Rvcy1pIHBhcmEgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyIlczogVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOyBSVU4gZnNjayBNQU5VQUxMWS5cbiIKKyJcdChpLmUuLCB3aXRob3V0IC1hIG9yIC1wIG9wdGlvbnMpXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIlczogSU5DT05TSVNURU5DSUEgSU5FU1BFUkFEQTsgRUpFQ1VURSBmc2NrIE1BTlVBTE1FTlRFLlxuIgorIihpLmUuLCBzaW4gbGFzIG9wY2lvbmVzIC1hIG8gLXApXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDI5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKK21zZ3N0ciAiTWVtb3JpYSB1dGlsaXphZGE6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIk1lbW9yaWEgdXRpbGl6YWRhOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAiZmVjaGE6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAidGllbXBvIHRyYW5zY3VycmlkbzogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSAlbHUgZW4gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgbm9kby1pICVsdSBlbiAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo3NjUKK21zZ2lkICIiCisiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBtb2RpZmllZCB3aGlsZSBmc2NrIGlzICIKKyJydW5uaW5nLlxuIgorbXNnc3RyICIiCisiSU5DT05TSVNURU5DSUEgSU5FU1BFUkFEQTogc2UgZXN0w6EgbW9kaWZpY2FuZG8gZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyAiCisibWllbnRyYXMgZnNjayBlc3TDoSBjb3JyaWVuZG8uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzIKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJoZWNobyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iIGJsb2NrX3NpemVdIFstaSBpbnB1dF9maWxlXSBbLW8gb3V0cHV0X2ZpbGVdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyBibG9ja3NfYXRfb25jZV0gWy1kIGRlbGF5X2ZhY3Rvcl9iZXR3ZWVuX3JlYWRzXSBbLWUgIgorIm1heF9iYWRfYmxvY2tzXVxuIgorIiAgICAgICBbLXAgbnVtX3Bhc3Nlc10gWy10IHRlc3RfcGF0dGVybiBbLXQgdGVzdF9wYXR0ZXJuIFsuLi5dXV1cbiIKKyIgICAgICAgZGV2aWNlIFtsYXN0X2Jsb2NrIFtmaXJzdF9ibG9ja11dXG4iCittc2dzdHIgIiIKKyJNb2RvIGRlIGVtcGxlbzogJXMgWy1iIHRhbWHDsW9fZGVsX2Jsb3F1ZV0gWy1pIGZpY2hlcm9fZGVfZW50cmFkYV0gWy1zdnduZl1cbiIKKyIgICAgICAgICAgICAgICAgWy1jIGJsb3F1ZXNfYV9sYV92ZXpdIFstZCAiCisiZmFjdG9yX2RlX3JldGFyZG9fZW50cmVfbGVjdHVyYXNdwqBbLWUgbWF4X2Jsb3F1ZXNfZGHDsWFkb3NdXG4iCisiICAgICAgICAgICAgICAgIFstcCBuw7ptX3Bhc29zXSBbLXQgcGF0csOzbl9kZV9wcnVlYmEgWy10IHBhdHLDs25fZGVfcHJ1ZWJhICIKKyJbLi4uXV1dXG4iCisiICAgICAgICAgICAgICAgIGRpc3Bvc2l0aXZvIFtibG9xdWVfZmluYWwgW2Jsb3F1ZV9pbmljaWFsXV1cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzOiBMYXMgb3BjaW9uZXMgLW4geSAtdyBzZSBleGNsdXllbiBtdXR1YW1lbnRlLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiUlIGhlY2hvLCAlcyB0cmFuc2N1cnJpZG8uICglZC8lZC8lZCBlcnJvcmVzKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAiUHJvYmFuZG8gY29uIHVuIHBhdHLDs24gYWxlYXRvcmlvOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIlByb2JhbmRvIGNvbiBlbCBwYXRyw7NuIDB4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM3OCBtaXNjL2JhZGJsb2Nrcy5jOjQ1MQorbXNnaWQgImR1cmluZyBzZWVrIgorbXNnc3RyICJkdXJhbnRlIGxhIGLDunNxdWVkYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJWYWxvciBleHRyYcOxbyAoJWxkKSBlbiBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAiZHVyYW50ZSBlbCBleHQyZnNfc3luY19kZXZpY2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAibWllbnRyYXMgc2UgY29tZW56YWJhIGxhIGl0ZXJhY2nDs24gZW4gbGEgbGlzdGEgZGUgYmxvcXVlcyBkYcOxYWRvcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgIm1pZW50cmFzIHNlIHJlc2VydmFiYW4gbG9zIGLDumZlcmVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxNQorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBibG9ja3MgJWx1IHRvICVsdVxuIgorbXNnc3RyICJSZXZpc2FuZG8gbG9zIGJsb3F1ZXMgZGVsICVsdSBhbCAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJSZXZpc2FuZG8gbG9zIGJsb3F1ZXMgZGHDsWFkb3MgZW4gbW9kbyBkZSBzw7NsbyBsZWN0dXJhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJTZSBlc3TDoW4gcmV2aXNhbmRvIGxvcyBibG9xdWVzIGRhw7FhZG9zIChwcnVlYmEgZGUgc8OzbG8gbGVjdHVyYSk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICJEZW1hc2lhZG9zIGJsb3F1ZXMgZGHDsWFkb3MsIHNlIGludGVycnVtcGUgbGEgcHJ1ZWJhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIlNlIGVzdMOhbiByZXZpc2FuZG8gbG9zIGJsb3F1ZXMgZGHDsWFkb3MgZW4gbW9kbyBkZSBsZWN0dXJhLWVzY3JpdHVyYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYyMCBtaXNjL2JhZGJsb2Nrcy5jOjc4MgorIywgYy1mb3JtYXQKK21zZ2lkICJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiRGVsIGJsb3F1ZSAlbHUgYWwgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkxleWVuZG8geSBjb21wYXJhbmRvOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisiUmV2aXNhbmRvIGxvcyBibG9xdWVzIGRhw7FhZG9zIGVuIG1vZG8gbGVjdHVyYS1lc2NyaXR1cmEgbm8gZGVzdHJ1Y3Rpdm9cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODcKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyAobm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgdGVzdClcbiIKK21zZ3N0ciAiIgorIlJldmlzYW5kbyBsb3MgYmxvcXVlcyBkYcOxYWRvcyAocHJ1ZWJhIGRlIGxlY3R1cmEtZXNjcml0dXJhIG5vIGRlc3RydWN0aXZhKVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc5NAorbXNnaWQgIiIKKyJcbiIKKyJJbnRlcnJ1cHQgY2F1Z2h0LCBjbGVhbmluZyB1cFxuIgorbXNnc3RyICIiCisiXG4iCisiU2UgaW50ZXJjZXB0w7MgdW5hIGludGVycnVwY2nDs24sIHNlIGxpbXBpYSB0b2RvXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODc3CisjLCBjLWZvcm1hdAorbXNnaWQgImR1cmluZyB0ZXN0IGRhdGEgd3JpdGUsIGJsb2NrICVsdSIKK21zZ3N0ciAiZHVyYW50ZSBsYSBwcnVlYmEgZGUgZXNjcml0dXJhIGRlIGRhdG9zIGRlbCBibG9xdWUgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBlc3TDoSBtb250YWRvOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisibG9zIGJsb3F1ZXMgZGHDsWFkb3Mgc2UgZnVlcnphbiBkZSB0b2RhcyBmb3JtYXMuICBTZSBjcmVlIHF1ZSAvZXRjL210YWIgZXN0w6kgIgorImluY29ycmVjdG8uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAiwqFObyBlcyBzZWd1cm8gZWplY3V0YXIgbG9zIGJsb3F1ZXMgZGHDsWFkb3MhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICIlcyBlc3TDoSBhcGFyZW50ZW1lbnRlIGVuIHVzbyBwb3IgZWwgc2lzdGVtYTsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAibG9zIGJsb3F1ZXMgZGHDsWFkb3Mgc2UgZnVlcnphbiBkZSB0b2RhcyBmb3JtYXMuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgIiVzIGludsOhbGlkbyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIm5vIHNlIHB1ZWRlIHJlc2VydmFyIG1lbW9yaWEgcGFyYSBlbCBwYXRyw7NuX2RlX3BydWViYSAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExODQKK21zZ2lkICJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlIHNwZWNpZmllZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiIgorIlPDs2xvIHVuIG3DoXhpbW8gZGUgdW4gcGF0csOzbl9kZV9wcnVlYmEgcHVlZGUgc2VyIGVzcGVjaWZpY2FkbyBlbiBtb2RvIHPDs2xvICIKKyJsZWN0dXJhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJFbCBwYXRyw7NuX2RlX3BydWViYSBhbGVhdG9yaW8gbm8gZXN0w6EgcGVybWl0aWRvIGVuIG1vZG8gc8OzbG8gbGVjdHVyYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjA0Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG1hbnVhbGx5XG4iCittc2dzdHIgIiIKKyJObyBzZSBwdWVkZSBkZXRlcm1pbmFyIGVsIHRhbWHDsW8gZGVsIGRpc3Bvc2l0aXZvOyBzZSBkZWJlIGVzcGVjaWZpY2FyXG4iCisiZGUgZm9ybWEgbWFudWFsXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSBkZXRlcm1pbmFyIGVsIHRhbWHDsW8gZGVsIGRpc3Bvc2l0aXZvIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICLDumx0aW1vIGJsb3F1ZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjIxCittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgInByaW1lciBibG9xdWUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyNAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHN0YXJ0aW5nIGJsb2NrICglbGx1KTogbXVzdCBiZSBsZXNzIHRoYW4gJWxsdSIKK21zZ3N0ciAiYmxvcXVlIGluaWNpYWwgbm8gdsOhbGlkbyAoJWxsdSk6IGRlYmUgc2VyIG1lbm9zIHF1ZSAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiYmxvcXVlIGZpbmFsIG5vIHbDoWxpZG8gKCVsbHUpOiBkZWJlIHNlciB1biB2YWxvciBkZSAzMiBiaXRzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyODcKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IgorbXNnc3RyICJjdWFuZG8gc2UgY3JlYWJhIGxhIGxpc3RhIGRlIGJsb3F1ZXMgZGHDsWFkb3MgZW4gbWVtb3JpYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgImZpY2hlcm8gZGUgZW50cmFkYSAtIGZvcm1hdG8gaW5jb3JyZWN0byIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgImN1YW5kbyBzZSBhw7FhZMOtYSBhIGxhIGxpc3RhIGRlIGJsb3F1ZXMgZGHDsWFkb3MgZW4gbWVtb3JpYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICIiCisiUGFzbyB0ZXJtaW5hZG8sIHNlIGVuY29udHJhcm9uICV1IGJsb3F1ZXMgZGHDsWFkb3MuICglZC8lZC8lZCBlcnJvcmVzKVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYgdmVyc2lvbl0gZmlsZXMuLi5cbiIKK21zZ3N0ciAiIgorIk1vZG8gZGUgZW1wbGVvOiAlcyBbLVJWZl0gWy0rPUFhQ2NEZGVpalNzVHR1XSBbLXYgdmVyc2nDs25dIGZpY2hlcm9zLi4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgcHJvamVjdCAtICVzXG4iCittc2dzdHIgInZlcnNpw7NuIGluY29ycmVjdGEgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgInZlcnNpw7NuIGluY29ycmVjdGEgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIHZlciBlbCBlc3RhZG8gZGVsIGZpY2hlcm8gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGVzdGFiYW4gbGV5ZW5kbyBsYXMgYmFuZGVyYXMgZW4gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIkxhcyBiYW5kZXJhcyBkZSAlcyBlc3TDoW4gcHVlc3RhcyBjb21vICIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgcG9uw61hbiBsYXMgYmFuZGVyYXMgZW4gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJMYSB2ZXJzacOzbiBkZSAlcyBlc3TDoSBwdWVzdGEgY29tbyAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc3RhYmEgcG9uaWVuZG8gbGEgdmVyc2nDs24gZW4gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQcm9qZWN0IG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiTGEgdmVyc2nDs24gZGUgJXMgZXN0w6EgcHVlc3RhIGNvbW8gJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGVzdGFiYSBwb25pZW5kbyBsYSB2ZXJzacOzbiBlbiAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyOTcKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBwYXRoIHZhcmlhYmxlIGluIGNoYXR0cl9kaXJfcHJvYyIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgcmVzZXJ2YXIgbGEgdmFyaWFibGUgZGUgcnV0YSBlbiBjaGF0dHJfZGlyX3Byb2MiCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0gZXMgaW5jb21wYXRpYmxlIGNvbiAtIHkgK1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICJTZSBkZWJlIHVzYXIgJy12JywgPSwgLSBvICtcbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgZWwgbm9kby1pICVsdSBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXhwYW5kw61hIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAibWllbnRyYXMgc2UgYWJyw61hICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjk1IG1pc2MvY3JlYXRlX2lub2RlLmM6MTIyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgbm9kby1pICVsdSBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSB0cnVuY2FyICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSAldSIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW5pY2lhYmEgbGEgZXhwbG9yYWNpw7NuIGRlIGxvcyBub2Rvcy1pIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgdW4gYsO6ZmVyIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE3NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXN0YWJhbiBsZXllbmRvIGxhcyBiYW5kZXJhcyBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXNjcmliw61hIGVsIG5vZG8taSAlbHUgZW4gJXMiCisKKyMgVE9ETyBleHBsb3JhYmEgLT4gZXhwbG9yYWJhbgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgIm1pZW50cmFzIHNlIGV4cGxvcmFiYSBsb3Mgbm9kb3MtaSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgYWwgYsO6ZmVyIGRlbCBub2RvLWkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSAlbHUgZW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXN0YWJhbiBsZXllbmRvIGxhcyBiYW5kZXJhcyBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXZpc2FiYSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIGNyZWFiYSBlbCBkaXJlY3RvcmlvIHJhw616IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjYwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAibWllbnRyYXMgc2UgYWJyw61hICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAibWllbnRyYXMgc2UgYWJyw61hICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbHN0YXQgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgdmVyIGVsIGVzdGFkbyBkZWwgZmljaGVybyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSAlbHUgZW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzYwCisjLCBmdXp6eQorbXNnaWQgIm1hbGxvYyBmYWlsZWQiCittc2dzdHIgIkZhbGxvIGVuIGxhIHJlc2VydmEgZGUgbWVtb3JpYSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgbW9kaWZpY2FyIGVsIHRhbWHDsW8gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXNjcmliw61hIGVsIG5vZG8taSAlbHUgZW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzk2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgbm9kby1pICVsdSBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJtaWVudHJhcyBzZSBhYnLDrWEgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAibGV5ZW5kbyBibG9xdWUgZGUgZGlyZWN0b3JpbyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWdub3JpbmcgZW50cnkgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGlub2RlIGZvciBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIGVzdGFiYSBwb25pZW5kbyBsYSB2ZXJzacOzbiBlbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgIm1pZW50cmFzIHNlIHBvbsOtYW4gbGFzIGJhbmRlcmFzIGVuICVzIgorCisjIFRPRE8gY29tZW56YWJhIC0+IGNvbWVuemFiYW4KKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJtaWVudHJhcyBzZSBjb21lbnphYmEgYSBleHBsb3JhciBsb3Mgbm9kb3MtaSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICIiCisiTW9kbyBkZSBlbXBsZW86ICVzIFstYmZoaXhWXSBbLW8gc3VwZXJibG9jaz08bsO6bWVybz5dIFstbyAiCisiYmxvY2tzaXplPTxuw7ptZXJvPl0gZGlzcG9zaXRpdm9cbiIKKworIyBVc2FkbyBxdWluY2UgbWVuc2FqZXMgbcOhcyBhbGzDoS4KKyM6IG1pc2MvZHVtcGUyZnMuYzoxNTkKK21zZ2lkICJibG9ja3MiCittc2dzdHIgImJsb3F1ZXMiCisKKyMgVXNhZG8gcXVpbmNlIG1lbnNhamVzIG3DoXMgYWxsw6EuCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgIsKrY2x1c3RlcnPCuyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcnVwbyAlbHU6IChCbG9xdWVzICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIGNzdW0gMHglMDR4IgorbXNnc3RyICIgIMKrQ2hlY2tzdW3CuyAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChFWFBFQ1RFRCAweCUwNHgpIgorbXNnc3RyICIgKEVTUEVSQURPIDB4JTA0eCkiCisKKyMgU2UgY29tcGxldGEgY29uIHVubyBkZSBsb3MgZG9zIG1lbnNhamVzIHNpZ3VpZW50ZXMuCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgU3VwZXJibG9xdWUgJXMgZW4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiUHJpbWFyeSIKK21zZ3N0ciAicHJpbWFyaW8iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgImRlIHJlc3BhbGRvIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM4Cittc2dpZCAiLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAiCittc2dzdHIgIiwgZGVzY3JpcHRvcmVzIGRlIGdydXBvIGVuICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorbXNnaWQgIiIKKyJcbiIKKyIgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBTZSByZXNlcnZhcm9uIGxvcyBibG9xdWVzIEdEVCBlbiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBEZXNjcmlwdG9yIGRlIGdydXBvIGVuICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICBNYXBhIGRlIGJpdHMgZGUgYmxvcXVlcyBlbiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiLCBjc3VtIDB4JTA4eCIKK21zZ3N0ciAiICDCq0NoZWNrc3VtwrsgMHglMDR4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYzCittc2dpZCAiLCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NgorIywgZnV6enkKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiLCBtYXBhIGRlIGJpdHMgZGUgbm9kb3MtaSBlbiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIFRhYmxhIGRlIG5vZG9zLWkgZW4gIgorCisjIEVsIHByaW1lciAlcyBkZSBzdXN0aXR1eWUgY29uICJibG9xdWVzIiBvICJjbHVzdGVycyIsIGVsIHNlZ3VuZG8gY29uIG5hZGEgbyAiXG4iLgorIzogbWlzYy9kdW1wZTJmcy5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiICAldSBmcmVlICVzLCAldSBmcmVlIGlub2RlcywgJXUgZGlyZWN0b3JpZXMlcyIKK21zZ3N0ciAiIgorIlxuIgorIiAgJXUgJXMgbGlicmVzLCAldSBub2Rvcy1pIGxpYnJlcywgJXUgZGlyZWN0b3Jpb3MlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiLCAldSBub2Rvcy1pIHNpbiB1c2FyXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODkKK21zZ2lkICIgIEZyZWUgYmxvY2tzOiAiCittc2dzdHIgIiAgQmxvcXVlcyBsaWJyZXM6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAiICBOb2Rvcy1pIGxpYnJlczogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQwCittc2dpZCAid2hpbGUgcHJpbnRpbmcgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgIm1pZW50cmFzIHNlIGltcHJpbcOtYSBsYSBsaXN0YSBkZSBibG9xdWVzIGRhw7FhZG9zIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICJCbG9xdWVzIGRhw7FhZG9zOiAldSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM4NSBtaXNjL3R1bmUyZnMuYzozNjIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJtaWVudHJhcyBzZSBhYnLDrWEgZWwgbm9kby1pIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIHN1cGVyYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIiIKKyLCoUVsIG7Dum1lcm8gbcOhZ2ljbyBkZWwgc3VwZXJibG9xdWUgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBlcyBpbnbDoWxpZG8hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDcgbWlzYy9kdW1wZTJmcy5jOjQ5MAorbXNnaWQgIkpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAiCittc2dzdHIgIkNhcmFjdGVyw61zdGljYXMgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lczogICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQyMAorbXNnaWQgIkpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgIgorbXNnc3RyICJUYW1hw7FvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIkxvbmdpdHVkIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM6ICAgICAgICAgICAldVxuIgorIlNlY3VlbmNpYSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAgICAgICAgICAweCUwOHhcbiIKKyJJbmljaW8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lczogICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIk7Dum1lcm8gZGUgZXJyb3IgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lczogICAgJWRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgZWwgc3VwZXJibG9xdWUgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgIiIKKyJObyBzZSBwdWVkZW4gZW5jb250cmFyIGxvcyBuw7ptZXJvcyBtw6FnaWNvcyBkZWwgc3VwZXJibG9xdWUgZGVsIGZpY2hlcm8gZGUgIgorInRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIlRhbWHDsW8gZGVsIGJsb3F1ZSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAgJXVcbiIKKyJMb25naXR1ZCBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAgICAgICAgICAgJXVcbiIKKyJQcmltZXIgYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM6ICAgICAgJXVcbiIKKyJTZWN1ZW5jaWEgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lczogICAgICAgICAgMHglMDh4XG4iCisiSW5pY2lvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM6ICAgICAgICAgICAgICV1XG4iCisiTsO6bWVybyBkZSB1c3VhcmlvcyBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdXNlcnM6ICAgICAgICAgICAgJXNcbiIKK21zZ3N0ciAiVXN1YXJpb3MgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lczogICAgICAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICIiCisiwqFObyBzZSBwdWVkZSByZXNlcnZhciBtZW1vcmlhIHBhcmEgYW5hbGl6YXIgc2ludMOhY3RpY2FtZW50ZSBsYXMgb3BjaW9uZXMhXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyw6FtZXRybyBkZSBzdXBlcmJsb3F1ZSBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyw6FtZXRybyBkZSB0YW1hw7FvIGRlbCBibG9xdWUgbm8gdsOhbGlkbzogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhcyBvcGNpb25lcyBlc3BlY2lmaWNhZGFzIHNvbiBpbmNvcnJlY3RhczogJXNcbiIKKyJcbiIKKyJPcGNpb25lcyBleHRlbmRpZGFzIGRlYmVuIGVzdGFyIHNlcGFyYWRhcyBwb3IgY29tYXMsIHkgcHVlZGVuIHRvbWFyIHVuXG4iCisiXHRhcmd1bWVudG8gcXVlIHNlIGFqdXN0YSBjb24gdW4gc2lnbm8gZGUgaWd1YWwgKCc9JykuXG4iCisiXG4iCisiTGFzIG9wY2lvbmVzIGV4dGVuZGlkYXMgdsOhbGlkYXMgc29uOlxuIgorIlx0c3VwZXJibG9jaz08bsO6bWVyb19kZWxfc3VwZXJibG9xdWU+XG4iCisiXHRibG9ja3NpemU9PHRhbWHDsW9fZGVsX2Jsb3F1ZT5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdFNlIGVtcGxlYSAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICIiCisiTm8gc2UgcHVkbyBlbmNvbnRyYXIgdW4gc3VwZXJibG9xdWUgdsOhbGlkbyBwYXJhIGVsIHNpc3RlbWEgZGUgZmljaGVyb3MuXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MjYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBiaXRtYXBzISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIGFsIGxlZXIgbG9zIG1hcGFzIGRlIGJpdHM6ICVzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwNgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWyAtcnxRIF0gWyAtZnIgXSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICJNb2RvIGRlIGVtcGxlbzogJXMgWy1yfFFdIFstZnJdIGRpc3Bvc2l0aXZvIGZpY2hlcm9fZGVfaW1hZ2VuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgICAgICVzIC1JIGRpc3Bvc2l0aXZvIGZpY2hlcm9fZGVfaW1hZ2VuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAgICAgICAlcyAtcmEgIFsgIC1jZm5wICBdIFsgLW8gZGVzcGx6X29yaWcgXSBbIC1PIGRlc3Bsel9kZXN0IF0gIgorImZzX29yaWcgWyBmc19kZXN0IF1cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgdW4gYsO6ZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIkVzY3JpYmllbmRvIGVsIGJsb3F1ZSAlbGx1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgImVycm9yIGFsIGVzY3JpYmlyIGVsIGJsb3F1ZSAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTYKK21zZ2lkICJlcnJvciBpbiBnZW5lcmljX3dyaXRlKCkiCittc2dzdHIgImVycm9yIGVuIGdlbmVyaWNfd3JpdGUoKSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIkVycm9yOiBlbCB0YW1hw7FvIGRlIGxhIGNhYmVjZXJhIGVzIG1heW9yIHF1ZSB3cnRfc2l6ZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIHJlc2VydmFyIGVsIGLDumZlciBkZWwgZW5jYWJlemFkb1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgIm1pZW50cmFzIHNlIGVzY3JpYsOtYSBlbCBzdXBlcmJsb3F1ZSIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXNjcmliw61hIGxhIHRhYmxhIGRlIG5vZG9zLWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgbWFwYSBkZSBiaXRzIGRlIGJsb3F1ZXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgbWFwYSBkZSBiaXRzIGRlIG5vZG9zLWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUwNQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgcmVjX2xlbiAoJWQpXG4iCittc2dzdHIgIkJsb3F1ZSBkZSBkaXJlY3RvcmlvIGNvcnJ1cHRvICVsbHU6IHJlY19sZW4gaW5jb3JyZWN0byAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgbmFtZV9sZW4gKCVkKVxuIgorbXNnc3RyICJCbG9xdWUgZGUgZGlyZWN0b3JpbyBjb3JydXB0byAlbGx1OiBuYW1lX2xlbiBpbmNvcnJlY3RvICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUgLyAlbGx1IGJsb3F1ZXMgKCVkJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIkNvcGlhbmRvICIKKworIzogbWlzYy9lMmltYWdlLmM6NjI2Cittc2dpZCAiIgorIlN0b3BwaW5nIG5vdyB3aWxsIGRlc3Ryb3kgdGhlIGZpbGVzeXN0ZW0sIGludGVycnVwdCBhZ2FpbiBpZiB5b3UgYXJlIHN1cmVcbiIKK21zZ3N0ciAiIgorIlBhcmFyIGFob3JhIGRlc3RydWlyw6EgZWwgc2lzdGVtYSBkZSBmaWNoZXJvczsgaW50ZXJydW1wYSBvdHJhIHZleiBzaSBlc3TDoSAiCisic2VndXJvXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiICVzIHJlc3RhbnRlIGEgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgImVycm9yIGFsIGxlZXIgZWwgYmxvcXVlICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIkNvcGlhZG9zICVsbHUgLyAlbGx1IGJsb3F1ZXMgKCVkJSUpIGluICVzICIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiYSAlLjJmIE1CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgIm1pZW50cmFzIHNlIHJlc2VydmFiYSB1bmEgdGFibGUgbDEiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgwMworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDIgY2FjaGUiCittc2dzdHIgIm1pZW50cmFzIHNlIHJlc2VydmFiYSB1bmEgY2FjaMOpIGwyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorIkF0ZW5jacOzbjogVG9kYXbDrWEgaGF5IHRhYmxhcyBlbiBsYSBjYWNow6kgbWllbnRyYXMgc2UgZXN0w6EgcG9uaWVuZG8gbGEgY2FjaMOpOyAiCisic2UgcGVyZGVyw6FuIGRhdG9zLCBwb3IgbG8gcXVlIGxhIGltYWdlbiBwb2Ryw61hIG5vIHNlciB2w6FsaWRhLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbmljaWFsaXphYmEgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTIxNCBtaXNjL2UyaW1hZ2UuYzoxMjMyCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlIHNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzIGNyZWF0ZWQhXG4iCittc2dzdHIgIiIKKyJFcnJvciBkZSBwcm9ncmFtYWNpw7NuOiDCoXNlIGhhbiBjcmVhZG8gbcO6bHRpcGxlcyBibG9xdWVzIGNvbiBjdWVudGEgZGUgIgorInJlZmVyZW5jaWEgc2VjdWVuY2lhbCFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgZWwgbWFwYSBkZSBiaXRzIGRlIGJsb3F1ZXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAibWllbnRyYXMgc2UgcmVzZXJ2YWJhIGVsIG1hcGEgZGUgYml0cyBkZSBibG9xdWVzIGRlIMKrc2NyYW1ibGXCuyIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4OAorbXNnaWQgIlNjYW5uaW5nIGlub2Rlcy4uLlxuIgorbXNnc3RyICJFeHBsb3JhbmRvIG5vZG9zLWkuLi5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTMwMAorbXNnaWQgIkNhbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgcmVzZXJ2YXIgZWwgYsO6ZmVyIGRlIGJsb3F1ZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJtaWVudHJhcyBzZSBpdGVyYWJhIHNvYnJlIGVsIG5vZG8taSAldSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIk5vIHNlIHB1ZWRlbiBpbnN0YWxhciBsYXMgaW3DoWdlbmVzIGVuIGJydXRvIHkgcWNvdzIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDcKK21zZ2lkICJlcnJvciByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgImVycm9yIG1pZW50cmFzIHNlIGxlw61hbiBsb3MgbWFwYXMgZGUgYml0cyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGFicsOtYSBlbCBmaWNoZXJvIGRlIGRpc3Bvc2l0aXZvIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgcmVzdGF1cmFiYSBsYSB0YWJsYSBkZSBsYSBpbWFnZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICJsYSBvcGNpw7NuIC1hIHNvbG8gcHVlZGUgdXRpbGl6YXJzZSBjb24gaW3DoWdlbmVzIGVuIGJydXRvIG8gUUNPVzIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIlNvbG8gc2UgcGVybWl0ZW4gZGVzcGxhemFtaWVudG9zIGNvbiBpbcOhZ2VuZXMgZW4gYnJ1dG8uIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJTb2xvIHNlIHBlcm1pdGUgZWwgbW9kbyBkZSBtb3ZpbWllbnRvIGNvbiBpbcOhZ2VuZXMgZW4gYnJ1dG8uIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTQzCittc2dpZCAiTW92ZSBtb2RlIHJlcXVpcmVzIGFsbCBkYXRhIG1vZGUuIgorbXNnc3RyICJFbCBtb2RvIGRlIG1vdmltaWVudG8gcmVxdWllcmUgZWwgbW9kbyBkZSB0b2RvcyBsb3MgZGF0b3MuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTUzCittc2dpZCAiY2hlY2tpbmcgaWYgbW91bnRlZCIKK21zZ3N0ciAiY29tcHJvYmFuZG8gc2kgZXN0w6EgbW9udGFkbyIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkVqZWN1dGFyIGUyaW1hZ2UgZW4gdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyBtb250YWRvIHBhcmEgbGVjdHVyYSB5IGVzY3JpdHVyYSAiCisicHVlZGUgZGFyXG4iCisiY29tbyByZXN1bHRhZG8gdW5hIGltYWdlbiBpbmNvbnNpc3RlbnRlIHF1ZSBubyBzZXJ2aXLDoSBwYXJhIGRlcHVyYXIuXG4iCisiVXRpbGljZSBsYSBvcGNpw7NuIC1mIHNpIHJlYWxtZW50ZSBkZXNlYSBoYWNlciBlc28uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiwqFMYSBpbWFnZW4gUUNPVzIgbm8gcHVlZGUgZXNjcmliaXJzZSBlbiBsYSBzYWxpZGEgZXN0w6FuZGFyIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICJObyBwdWVkZSBleGFtaW5hcnNlIGxhIHNhbGlkYVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICJMYSBpbWFnZW4gKCVzKSBlc3TDoSBjb21wcmltaWRhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiTGEgaW1hZ2VuICglcykgZXN0w6EgY2lmcmFkYVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAiIgorIm1pZW50cmFzIHNlIGludGVudGFiYSBjb252ZXJ0aXIgbGEgaW1hZ2VuIHFjb3cyICglcykgYSBpbWFnZW4gZW4gYnJ1dG8gKCVzKSIKKworIzogbWlzYy9lMmltYWdlLmM6MTY0NQorbXNnaWQgIlRoZSAtYyBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiTGEgb3BjacOzbiAtYyBzb2xvIGVzdMOhIGltcGxlbWVudGFkYSBlbiBlbCBtb2RvIGVuIGJydXRvXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICJMYSBvcGNpw7NuIC1jIG5vIGZ1bmNpb25hIGN1YW5kbyBzZSBlc2NyaWJlIGVuIGxhIHNhbGlkYSBlc3TDoW5kYXJcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgY2hlY2tfYnVmIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJMYSBvcGNpw7NuIC1wIHNvbG8gZXN0w6EgaW1wbGVtZW50YWRhIGVuIGVsIG1vZG8gZW4gYnJ1dG9cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY3MworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBibG9ja3MgYWxyZWFkeSBjb250YWluZWQgdGhlIGRhdGEgdG8gYmUgY29waWVkXG4iCittc2dzdHIgIiVkIGJsb3F1ZXMgeWEgY29udGVuw61hbiBsb3MgZGF0b3MgcXVlIGhhYsOtYSBxdWUgY29waWFyXG4iCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiTW9kbyBkZSBlbXBsZW86ICVzIGRpc2NvXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IG5vIHNlIHB1ZWRlIGFicmlyICVzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogbm8gc2UgcHVlZGUgYnVzY2FyIGFsIHN1cGVyYmxvcXVlXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBlcnJvciBsZXllbmRvIGVsIHN1cGVyYmxvcXVlXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogbm8gZXMgdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyBleHQyXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIkF0ZW5jacOzbjogbGEgZXRpcXVldGEgZXMgbXV5IGxhcmdhLCBzZSB0cnVuY2EuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IGRlIG51ZXZvLCBubyBzZSBwdWVkZSBlbmNvbnRyYXIgYWwgc3VwZXJibG9xdWVcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBlcnJvciBhbCBlc2NyaWJpciBlbCBzdXBlcmJsb3F1ZVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMTcgbWlzYy90dW5lMmZzLmM6MTU5MAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogZTJsYWJlbCBkZXZpY2UgW25ld2xhYmVsXVxuIgorbXNnc3RyICJNb2RvIGRlIGVtcGxlbzogZTJsYWJlbCBkaXNwb3NpdGl2byBbbnVldmFiYW5kZXJhXVxuIgorCisjOiBtaXNjL2UydW5kby5jOjExOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICJNb2RvIGRlIGVtcGxlbzogJXMgPGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcz4gPHNpc3RlbWEgZGUgZmljaGVyb3M+XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiTGEgaG9yYSBkZSBtb250YWplIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIG5vIGN1YWRyYWJhICV1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorIywgZnV6enkKK21zZ2lkICJMYXN0IG1vdW50IHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIkxhIGhvcmEgZGUgbW9udGFqZSBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBubyBjdWFkcmFiYSAldVxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICJtaWVudHJhcyBzZSBsZcOtYSBlbCBzdXBlcmJsb3F1ZSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBtaXNjL2UydW5kby5jOjE4MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgc3VwZXJibG9xdWUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJFbCDCq2NoZWNrc3VtwrsgZGVsIHN1cGVyYmxvcXVlIG5vIGN1YWRyYSBjb24gZWwgc3VwZXJibG9xdWUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbGxlZ2FsIG9mZnNldCAtICVzIgorbXNnc3RyICJEZXNwbGF6YW1pZW50byBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgIm1pZW50cmFzIHNlIGFicsOtYSBlbCBmaWNoZXJvIGRlIGRpc3Bvc2l0aXZvIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHVuZG8gZmlsZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgZWwgbm9kby1pIHJhw616IgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IE5vdCBhbiB1bmRvIGZpbGUuXG4iCittc2dzdHIgIiVzOiBkZW1hc2lhZG9zIGRpc3Bvc2l0aXZvc1xuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IEhlYWRlciBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJFbCDCq2NoZWNrc3VtwrsgZGVsIG5vZG8taSBubyBjdWFkcmEgY29uIGVsIG5vZG8taSIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iCittc2dzdHIgIkNhYmVjZXJhIGRlIMKrZXh0ZW50wrsgY29ycnVwdGEiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAidGFtYcOxbyBkZSBsb3MgYmxvcXVlcyBkYcOxYWRvcyAtICVzIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVua25vd24gdW5kbyBmaWxlIGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICJFbCBAUyBkZWwgQGogdGllbmUgcHVlc3RhIHVuYSBiYW5kZXJhIGRlc2Nvbm9jaWRhIGluY29tcGF0aWJsZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIkVycm9yIG1pZW50cmFzIHNlIGRldGVybWluYWJhIHNpICVzIGVzdMOhIG1vbnRhZG8uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCisjLCBmdXp6eQorbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICIiCisiZTJ1bmRvIHNvbG8gZGViZXLDrWEgZWplY3V0YXJzZSBzb2JyZSB1biBzaXN0ZW1hIGRlIGZpY2hlcm9zIG5vIG1vbnRhZG9cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAibWllbnRyYXMgc2UgYWJyw61hICVzIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWFuIGxvcyBtYXBhcyBkZSBiaXRzIgorCisjOiBtaXNjL2UydW5kby5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogd3Jvbmcga2V5IG1hZ2ljIGF0ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczoga2V5IGJsb2NrIGNoZWNrc3VtIGVycm9yIGF0ICVsbHUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1NDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiRGVsIGJsb3F1ZSAlbHUgYWwgJWx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiRXNjcmliaWVuZG8gZWwgYmxvcXVlICVsbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJlcnJvciBhbCBlc2NyaWJpciBlbCBibG9xdWUgJWxsdSIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICIiCisiTW9kbyBkZSBlbXBsZW86IGZpbmRzdXBlciBkaXNwb3NpdGl2byBbYnl0ZXNwb3JzYWx0YXIgW3ByaW5jaXBpbyAoZW4ga2IpXV1cbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgImJ5dGVzcG9yc2FsdGFyIGRlYmUgc2VyIHVuIG7Dum1lcm8sIG5vICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgImJ5dGVzcG9yc2FsdGFyIGRlYmUgc2VyIHVuIG3Dumx0aXBsbyBkZWwgdGFtYcOxbyBkZWwgc2VjdG9yXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAicHJpbmNpcGlvIGRlYmUgc2VyIHVuIG7Dum1lcm8sIG5vICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAicHJpbmNpcGlvIGRlYmUgc2VyIHBvc2l0aXZvLCBubyAlTGRcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgInNlIGNvbWllbnphIGVuICVMZCwgY29uIGluY3JlbWVudG9zIGRlICVkIGJ5dGVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy8iCisibW91bnRfdGltZSAgICAgICAgICAgc2JfdXVpZCBsYWJlbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MjY0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorIlxuIgorIiUxNExkOiBzZSBmaW5hbGl6YSBjb24gZWwgZXJyb3IgbsO6bWVybyAlZFxuIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiQVRFTkNJw5NOOiBubyBzZSBwdWVkZSBhYnJpciAlczogJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGJhZCBmb3JtYXQgb24gbGluZSAlZCBvZiAlc1xuIgorbXNnc3RyICJBVEVOQ0nDk046IGZvcm1hdG8gaW5jb3JyZWN0byBlbiBsYSBsw61uZWEgJWQgZGUgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzcwCittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJBVEVOQ0nDk046IEVsIC9ldGMvZnN0YWIgbm8gY29udGllbmUgZWwgY2FtcG8gcGFzc25vIGZzY2suXG4iCisiXHRTZSBpbnRlbnRhcsOhIGhhY2VyIHVuIHRydWNvLCBwZXJvIHNlIGRlYmVyw61hIGFycmVnbGFyIGVsIFxuIgorIlx0ZmljaGVybyAvZXRjL2ZzdGFiIHRhbiBwcm9udG8gY29tbyBzZWEgcG9zaWJsZS5cbiIKKyJcbiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXM6IG5vIHNlIGVuY29udHLDs1xuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogZXNwZXJhOiDCv8Khwr9ObyBoYXkgbcOhcyBwcm9jZXNvcyBoaWpvcz8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiQXRlbmNpw7NuLi4uICVzIHBhcmEgZWwgZGlzcG9zaXRpdm8gJXMgcXVlIGZpbmFsaXrDsyBjb24gbGEgc2XDsWFsICVkLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgJXM6IHN0YXR1cyBpcyAleCwgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiIKK21zZ3N0ciAiJXMgJXM6IGVsIGVzdGF0dXMgZXMgJXgsIHkgbnVuY2EgZGViacOzIGhhYmVyIHN1Y2VkaWRvLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2NjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmluaXNoZWQgd2l0aCAlcyAoZXhpdCBzdGF0dXMgJWQpXG4iCittc2dzdHIgIlNlIGZpbmFsaXphIGNvbiAlcyAoZXN0YWRvIGRlIHNhbGlkYSAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6NzIxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBFcnJvciAlZCB3aGlsZSBleGVjdXRpbmcgZnNjay4lcyBmb3IgJXNcbiIKK21zZ3N0ciAiJXM6IEVycm9yICVkIG1pZW50cmFzIHNlIGVqZWN1dGFiYSBmc2NrLiAlcyBwYXJhICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisiUHVlZGUgc2VyIHF1ZSB0b2RvcyBvIG5pbmd1bm8gZGUgbG9zIHRpcG9zIGRlIHNpc3RlbWFzIGRlIGZpY2hlcm9zIHF1ZSBzZSBcbiIKKyJwYXNhcm9uIGNvbiAtdCBkZWJhbiBlc3RhciBjb24gZWwgcHJlZmlqbyAnbm8nIG8gJyEwLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgcmVzZXJ2YXIgbWVtb3JpYSBwYXJhIGxvcyB0aXBvcyBkZSBzaXN0ZW1hIGRlIGZpY2hlcm9zXG4iCisKKyMgVE9ETzogYmluZAorIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiBzZSBpZ25vcmEgbMOtbmVhIGluY29ycmVjdGEgZW4gL2V0Yy9mc3RhYjogbW9udGFqZSDCq2JpbmTCuyBjb24gbsO6bWVybyBkZSAiCisicmFuZ28gZmNzayBkaXN0aW50byBkZSBjZXJvXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6IG5vIHNlIHB1ZWRlIHZlcmlmaWNhciAlczogZnNjay4lcyBubyBzZSBlbmN1ZW50cmFcbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiUmV2aXNhbmRvIHRvZG9zIGxvcyBzaXN0ZW1hcyBkZSBmaWNoZXJvcy5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS1lc3BlcmFuZG8tLSAocGFzbyAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIk1vZG8gZGUgZW1wbGVvOiAgZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IHRpcG9fZGVfc2ZdXG4iCisiICAgICAgICAgICAgICAgICAgICAgIFtvcGNpb25lc19kZV9zZl0gW3Npc3RlbWFfZGVfZmljaGVyb3MgLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiBkZW1hc2lhZG9zIGRpc3Bvc2l0aXZvc1xuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogZGVtYXNpYWRvcyBhcmd1bWVudG9zXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJGaWNoZXJvIGFiaWVydG8gc29sbyBwYXJhIGxlY3R1cmEiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAiIgorIlBvciBmYXZvciBlamVjdXRlIGFudGVzICdlMmZzY2sgLWYgJXMnLlxuIgorIlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzk4Cittc2dpZCAiSm91cm5hbCBuZWVkcyByZWNvdmVyeTsgcnVubmluZyBgZTJmc2NrIC1FIGpvdXJuYWxfb25seScgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFdyaXRpbmcgdG8gdGhlIGpvdXJuYWwgaXMgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiTm8gZXMgcG9zaWJsZSByZWR1Y2lyIGVsIHRhbWHDsW8gZGVsIG5vZG8taVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICJNb2RvIGRlIGVtcGxlbzogJXMgWy1SVmFkbHZdIFtmaWNoZXJvcy4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJNaWVudHJhcyBzZSBsZcOtYW4gbGFzIGJhbmRlcmFzIGVuICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIk1pZW50cmFzIHNlIGxlw61hIGxhIHZlcnNpw7NuIGVuICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIk1pZW50cmFzIHNlIGxlw61hIGxhIHZlcnNpw7NuIGVuICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiTW9kbyBkZSBlbXBsZW86ICVzIFstY3wtbCBub21icmUtZGVsLWZpY2hlcm9dIFstYiB0YW1hw7FvLWRlbC1ibG9xdWVdIFstQyAiCisidGFtYcOxby1kZWwtwqtjbHVzdGVywrtdXG4iCisiXHRbLWkgYnl0ZXMtcG9yLW5vZG8taV0gWy1JIHRhbWHDsW8tZGVsLW5vZG8taV0gLUogb3BjaW9uZXMtZGUtZmljaGVyby1kZS0iCisidHJhbnNhY2Npb25lc11cbiIKKyJcdFstRyB0YW1hw7FvLWRlbF9ncnVwb19mbGV4XSBbLU4gbsO6bWVyby1kZS1ub2Rvcy1pXVxuIgorIlx0Wy1tIHBvcmNlbnRhamUtZGUtYmxvcXVlcy1yZXNlcnZhZG9zXSBbLW8gU08tY3JlYWRvcl1cbiIKKyJcdFstZyBibG9xdWVzLXBvci1ncnVwb10gWy1MIGV0aXF1ZXRhLWRlLXZvbHVtZW5dIFstTSDDumx0aW1vLWRpcmVjdG9yaW8tIgorIm1vbnRhZG9dXG4iCisiXHRbLU8gY2FyYWN0ZXLDrXN0aWNhWywuLi5dXSBbLXIgcmV2aXNpw7NuLWRlbC1zZl0gWy1FIG9wY2nDs24tIgorImV4dGVuZGlkYXssLi4uXV1cbiIKKyJcdFstdCB0aXBvLWRlbC1zZl0gWy1UIHRpcG8tZGUtdXNvIF0gWy1VIFVVSURdIFstam5xdkRGS1NWXSBkaXNwb3NpdGl2byAiCisiW2N1ZW50YS1kZS1ibG9xdWVzXVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIkVqZWN1dGFuZG8gb3JkZW46ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBydW4gJyVzJyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGVqZWN1dGFyICclcyciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJtaWVudHJhcyBzZSBwcm9jZXNhYmEgbGEgbGlzdGEgZGUgYmxvcXVlcyBkYcOxYWRvcyBkZWwgcHJvZ3JhbWEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICIiCisiRWwgYmxvcXVlICVkIGVuIGVsIMOhcmVhIGRlbCBkZXNjcmlwdG9yIHByaW1hcmlvIGRlbCBzdXBlcmJsb3F1ZS9ncnVwbyBlc3TDoSAiCisiZGHDsWFkby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIkxvcyBibG9xdWVzIGRlbCAldSBhbCAldSBkZWJlbiBlc3RhciBjb3JyZWN0b3MgcGFyYSBwb2RlciBjb25zdHJ1aXIgdW4gIgorInNpc3RlbWEgZGUgZmljaGVyb3MuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIkZpbmFsaXphbmRvLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkF0ZW5jacOzbjogbG9zIGRlc2NyaXB0b3JlcyBkZSByZXNwYWxkbyBkZWwgc3VwZXJibG9xdWUvZ3J1cG8gZW4gZWwgYmxvcXVlICIKKyIldVxuIgorIlx0Y29udGllbmVuIGJsb3F1ZXMgZGHDsWFkb3MuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgIm1pZW50cmFzIHNlIG1hcmNhYmFuIGxvcyBibG9xdWVzIGRhw7FhZG9zIGNvbW8gdXRpbGl6YWRvcyIKKworIzogbWlzYy9ta2UyZnMuYzo0MDgKK21zZ2lkICJXcml0aW5nIGlub2RlIHRhYmxlczogIgorbXNnc3RyICJFc2NyaWJpZW5kbyBsYXMgdGFibGFzIGRlIG5vZG9zLWk6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCB3cml0ZSAlZCBibG9ja3MgaW4gaW5vZGUgdGFibGUgc3RhcnRpbmcgYXQgJWxsdTogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5vIHNlIHB1ZWRlbiBlc2NyaWJpciAlZCBibG9xdWVzIGVuIGxhIHRhYmxhIGRlIG5vZG9zLWkgY29tZW56YW5kbyBlbiAlbGx1OiAiCisiJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NDQgbWlzYy9ta2UyZnMuYzoyNjU0IG1pc2MvbWtlMmZzLmM6MzAzMAorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgImhlY2hvICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgIm1pZW50cmFzIHNlIGNyZWFiYSBlbCBkaXJlY3RvcmlvIHJhw616IgorCisjOiBtaXNjL21rZTJmcy5jOjQ2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgZWwgbm9kby1pIHJhw616IgorCisjOiBtaXNjL21rZTJmcy5jOjQ3OAorbXNnaWQgIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiCittc2dzdHIgIm1pZW50cmFzIHNlIHBvbsOtYW4gbG9zIHBlcm1pc29zIGRlbCBkdWXDsW8gZGVsIG5vZG8taSByYcOteiIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAibWllbnRyYXMgc2UgY3JlYWJhIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgIm1pZW50cmFzIHNlIHJldmlzYWJhIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXhwYW5kw61hIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUzMQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJtaWVudHJhcyBzZSBwb27DrWEgZWwgbm9kby1pIGRlIGJsb3F1ZXMgZGHDsWFkb3MiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIlNlIGFnb3TDsyBsYSBtZW1vcmlhIGN1YW5kbyBzZSBib3JyYWJhbiBsb3Mgc2VjdG9yZXMgJWQtJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiQXRlbmNpw7NuOiBubyBzZSBwdWVkZSBsZWVyIGVsIGJsb3F1ZSAwOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjU4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgZXJhc2Ugc2VjdG9yICVkOiAlc1xuIgorbXNnc3RyICJBdGVuY2nDs246IG5vIHNlIHB1ZWRlIGJvcnJhciBlbCBzZWN0b3IgJWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjAwCittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW5pY2lhbGl6YWJhIGVsIHN1cGVyYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjA4Cittc2dpZCAiWmVyb2luZyBqb3VybmFsIGRldmljZTogIgorbXNnc3RyICJTZSByZWxsZW5hIGNvbiBjZXJvcyBlbCBkaXNwb3NpdGl2byBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAiIgorIm1pZW50cmFzIHNlIGluaWNpYWxpemFiYSBjb24gY2Vyb3MgZWwgZGlzcG9zaXRpdm8gZGVsIGZpY2hlcm8gZGUgIgorInRyYW5zYWNjaW9uZXMgKGJsb3F1ZSAlbGx1LCBjdWVudGEgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgZWwgc3VwZXJibG9xdWUgZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIiIKKyJTZSBlc3TDoSBjcmVhbmRvIHVuIHNpc3RlbWEgZGUgZmljaGVyb3MgY29uICVsbHUgYmxvcXVlcyBkZSAlZGsgeSAldSBub2Rvcy1pXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBdGVuY2nDs246IGhheSAlbGx1IGJsb3F1ZXMgc2luIHVzYXIuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiRXRpcXVldGEgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3M9JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAiVGlwbyBkZSBTTzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJUYW1hw7FvIGRlbCBibG9xdWU9JXUgKGJpdMOhY29yYT0ldSlcbiIKKworIyBUT0RPIGxvZyA9IGJpdMOhY29yYSBUQkMKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJUYW1hw7FvIGRlbCDCq2NsdXN0ZXLCuz0ldSAoYml0w6Fjb3JhPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3NworIywgYy1mb3JtYXQKK21zZ2lkICJGcmFnbWVudCBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIlRhbWHDsW8gZGVsIGZyYWdtZW50bz0ldSAoYml0w6Fjb3JhPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIlN0cmlkZT0ldSBibG9xdWVzLCBhbmNodXJhIGRlIHN0cmlwZT0ldSBibG9xdWVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcywgJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXUgbm9kb3MtaSwgJWxsdSBibG9xdWVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJWxsdSBibG9xdWVzICglMi4yZiUlKSByZXNlcnZhZG9zIHBhcmEgZWwgc3VwZXJ1c3VhcmlvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpcnN0IGRhdGEgYmxvY2s9JXVcbiIKK21zZ3N0ciAiUHJpbWVyIGJsb3F1ZSBkZSBkYXRvcz0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICJQcm9waWV0YXJpbyBkZWwgZGlyZWN0b3JpbyByYcOtej0ldToldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICJOw7ptZXJvIG3DoXhpbW8gZGUgYmxvcXVlcyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcz0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IGJsb3F1ZSBkZSBncnVwb3NcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxvcXVlIGRlIGdydXBvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9xdWVzIHBvciBncnVwbywgJXUgwqtjbHVzdGVyc8K7IHBvciBncnVwb1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb3F1ZXMgcG9yIGdydXBvLCAldSBmcmFnbWVudG9zIHBvciBncnVwb1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMworIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IG5vZG9zLWkgcG9yIGdydXBvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiVVVJRCBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvczogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTMKK21zZ2lkICJTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogIgorbXNnc3RyICJSZXNwYWxkbyBkZWwgc3VwZXJibG9xdWUgZ3VhcmRhZG8gZW4gbG9zIGJsb3F1ZXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyByZXF1aWVyZSAnLU8gNjRiaXQnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAiJyVzJyBkZWJlIGVzdGFyIGFudGVzIGRlICdyZXNpemU9JXUnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgImRlc2Nfc2l6ZSBubyB2w6FsaWRvOiAnJXMnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICJEZXNwbGF6YW1pZW50byBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAibW1wX3VwZGF0ZV9pbnRlcnZhbCBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICJOw7ptZXJvIGRlIHN1cGVyYmxvcXVlcyBkZSByZXNwYWxkbyBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlRhbWHDsW8gZGUgwqtzdHJpZGXCuyBubyB2w6FsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcsOhbWV0cm8gc3RyaXBlLXdpZHRoIG5vIHbDoWxpZG86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyw6FtZXRybyBkZSB2YXJpYWNpw7NuIGRlIHRhbWHDsW8gbm8gdsOhbGlkbzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MzQKK21zZ2lkICJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkVsIG3DoXhpbW8gZGUgbGEgdmFyaWFjacOzbiBkZSB0YW1hw7FvIGRlYmUgc2VyIG1heW9yIHF1ZSBlbCB0YW1hw7FvIGRlbCBzaXN0ZW1hICIKKyJkZSBmaWNoZXJvcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJFbCBjYW1iaW8gZGUgdGFtYcOxbyBlbiBsw61uZWEgbm8gZXN0w6Egc29wb3J0YWRvIGNvbiBzaXN0ZW1hcyBkZSBhcmNoaXZvcyBkZSAiCisicmV2aXNpw7NuIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgInJvb3Rfb3duZXIgbm8gdsOhbGlkbzogJyVzJ1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiTGFzIG9wY2lvbmVzIGVzcGVjaWZpY2FkYXMgc29uIGluY29ycmVjdGFzOiAlc1xuIgorIlxuIgorIkxhcyBvcGNpb25lcyBleHRlbmRpZGFzIGRlYmVuIGVzdGFyIHNlcGFyYWRhcyBwb3IgY29tYXMsIHkgcHVlZGVuIHRvbWFyIHVuXG4iCisiXHRhcmd1bWVudG8gcXVlIHNlIGFqdXN0YSBjb24gdW4gc2lnbm8gZGUgaWd1YWwgKCc9JykuXG4iCisiXG4iCisiTGFzIG9wY2lvbmVzIGV4dGVuZGlkYXMgdsOhbGlkYXMgc29uOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWxvPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PGxvbmdpdHVkIGRlIGxhIHphbmNhZGEsIGVuIGJsb3F1ZXM+XG4iCisiXHRzdHJpcGUtd2lkdGg9PMKrc3RyaWRlwrsgZGUgUkFJRCAqIGRpc2NvcyBkZSBkYXRvcywgZW4gYmxvcXVlcz5cbiIKKyJcdG9mZnNldD08ZGVzcGxhemFtaWVudG8gcGFyYSBjcmVhciBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zPlxuIgorIlx0cmVzaXplPTxtw6F4aW1vIGRlIHZhcmlhY2nDs24gZGUgdGFtYcOxbywgZW4gYmxvcXVlcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCBwYXJhIGRlc2FjdGl2YXIsIDEgcGFyYSBhY3RpdmFyPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCBwYXJhIGRlc2FjdGl2YXIsIDEgcGFyYSBhY3RpdmFyPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgcGFyYSBkZXNhY3RpdmFyLCAxIHBhcmEgYWN0aXZhcj5cbiIKKyJcdHJvb3RfdWlkPTx1aWQgZGVsIGRpcmVjdG9yaW8gcmHDrXo+XG4iCisiXHRyb290X2dpZD08Z2lkIGRlbCBkaXJlY3RvcmlvIHJhw616PlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHVzciBPIGdycD5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdGVuY2nDs246IEVsIHBhcsOhbWV0cm8gwqtzdHJpcGUtd2lkdGjCuyBkZSBSQUlEICV1IG5vIGVzIHVuIG3Dumx0aXBsbyBwYXIgZGVsICIKKyJwYXLDoW1ldHJvIMKrc3RyaWRlwrsgJXUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIkVycm9yIGRlIHNpbnRheGlzIGVuIGVsIGZpY2hlcm8gZGUgY29uZmlndXJhY2nDs24gZGUgbWtlMmZzICglcywgbMOtbmVhICMlZClcbiIKKyJcdCVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTExNCBtaXNjL3R1bmUyZnMuYzoxMDA3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZmlsZXN5c3RlbSBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJTZSBwdXNvIHVuYSBvcGNpw7NuIG5vIHbDoWxpZGEgcGFyYSBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiU2UgcHVzbyB1bmEgb3BjacOzbiBkZSBtb250YWplIG5vIHbDoWxpZGE6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisiRWwgZmljaGVybyBta2UyZnMuY29uZiBubyBkZWZpbmUgZWwgdGlwbyBkZSBzaXN0ZW1hIGRlIGZpY2hlcm9zICVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJQcm9iYWJsZW1lbnRlIHNlYSBuZWNlc2FyaW8gaW5zdGFsYXIgdW4gZmljaGVybyBta2UyZnMuY29uZiBhY3R1YWxpemFkby5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiSW50ZXJydW1waWVuZG8uLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQXRlbmNpw7NuOiBlbCBmc190eXBlICVzIG5vIGVzdMOhIGRlZmluaWRvIGVuIG1rZTJmcy5jb25mXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIHJlc2VydmFyIG1lbW9yaWEgcGFyYSBsYSBudWV2YSBSVVRBLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIGluaWNpYWxpemFyIGNvcnJlY3RhbWVudGUgZWwgcGVyZmlsIChlcnJvcjogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJ0YW1hw7FvIGRlbCBibG9xdWUgaW52w6FsaWRvIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJBdGVuY2nDs246IGVsIHRhbWHDsW8gZGVsIGJsb3F1ZSAlZCBubyBzZSBwdWVkZSB1dGlsaXphciBlbiBtdWNob3Mgc2lzdGVtYXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJ0YW1hw7FvIGRlbCDCq2NsdXN0ZXLCuyBubyB2w6FsaWRvIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAiJy1SJyBlc3TDoSBlbiBkZXN1c287IHV0aWxpY2UgJy1FJyBlbiBzdSBsdWdhciIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgImNvbXBvcnRhbWllbnRvIGRlIGVycm9yZXMgaW5jb3JyZWN0byAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAiTsO6bWVybyBubyB2w6FsaWRvIGRlIGJsb3F1ZXMgcG9yIGdydXBvIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAibG9zIGJsb3F1ZXMgcG9yIGdydXBvIGRlYmVuIHNlciB1biBtw7psdGlwbG8gZGUgOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiTsO6bWVybyBubyB2w6FsaWRvIHBhcmEgZWwgdGFtYcOxbyBkZSBmbGV4X2JnIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgImVsIHRhbWHDsW8gZGUgZmxleF9iZyBkZWJlIHNlciB1bmEgcG90ZW5jaWEgZGUgMiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJlbCB0YW1hw7FvIGRlIGZsZXhfYmcgKCVsdSkgZGViZSBzZXIgbWVub3IgbyBpZ3VhbCBxdWUgMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJwcm9wb3JjacOzbiBkZSBub2Rvcy1pIGludsOhbGlkYSAlcyAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidGFtYcOxbyBkZSBsb3Mgbm9kb3MtaSBpbnbDoWxpZG8gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorIsKhQXRlbmNpw7NuOiBsYSBvcGNpw7NuIC1LIGVzdMOhIGVuIGRlc3VzbyB5IG5vIGRlYmVyw61hIHV0aWxpemFyc2UgbnVuY2EgbcOhcy4gIgorIlV0aWxpY2UgbGEgb3BjacOzbiBleHRlbmRpZGEgJy1FIG5vZGlzY2FyZCcgZW4gc3UgbHVnYXIhXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY5NAorbXNnaWQgImluIG1hbGxvYyBmb3IgYmFkX2Jsb2Nrc19maWxlbmFtZSIKK21zZ3N0ciAiZW4gbWFsbG9jIHBhcmEgZmljaGVyb19kZV9ibG9xdWVzX2Rhw7FhZG9zIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJBdGVuY2nDs246IGxhIGV0aXF1ZXRhIGVzIG11eSBsYXJnYSwgc2UgdHJ1bmNhLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJlbCBwb3JjZW50YWplIGRlIGJsb3F1ZXMgcmVzZXJ2YWRvcyBlcyBpbnbDoWxpZG8gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgIm7Dum1lcm8gZGUgbG9zIG5vZG9zLWkgaW52w6FsaWRvIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmFuIGxvcyBiw7pmZXJlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJuaXZlbCBkZSByZXZpc2nDs24gaW5jb3JyZWN0byAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGNyZWFyIGxhIHJldmlzacOzbiAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkxhIG9wY2nDs24gLXQgc29sbyBwdWVkZSB1dGlsaXphcnNlIHVuYSB2ZXoiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICJMYSBvcGNpw7NuIC1UIHNvbG8gcHVlZGUgdXRpbGl6YXJzZSB1bmEgdmV6IgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgIiIKKyJtaWVudHJhcyBzZSBpbnRlbnRhYmEgYWJyaXIgZWwgZGlzcG9zaXRpdm8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBkZXYgYmxvY2tzaXplICglZCkgc21hbGxlciB0aGFuIG1pbmltdW0gYmxvY2tzaXplICVkXG4iCittc2dzdHIgIiIKKyJFbCB0YW1hw7FvIGRlbCBibG9xdWUgZGVsIGRpc3Bvc2l0aXZvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgKCVkKSBlc1xuIgorIm1lbm9yIHF1ZSBlbCB0YW1hw7FvIGRlbCBibG9xdWUgbcOtbmltbyAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNpbmcgam91cm5hbCBkZXZpY2UncyBibG9ja3NpemU6ICVkXG4iCittc2dzdHIgIiIKKyJVdGlsaXphbmRvIGVsIHRhbWHDsW8gZGUgYmxvcXVlIGRlbCBkaXNwb3NpdGl2byBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzOiAiCisiJWRcbiIKKworIyBUaGUgc3BlY2lmaWVkIG51bWJlciBvZiBibG9ja3MgaXMgaW52YWxpZC4KKyM6IG1pc2MvbWtlMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrcyAnJXMnIG9uIGRldmljZSAnJXMnIgorbXNnc3RyICJibG9xdWVzIG5vIHbDoWxpZG9zICclcycgZW4gZWwgZGlzcG9zaXRpdm8gJyVzJyIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAic2lzdGVtYSBkZSBmaWNoZXJvcyIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSBkZXRlcm1pbmFyIGVsIHRhbWHDsW8gZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisiTm8gc2UgcHVlZGUgZGV0ZXJtaW5hciBlbCB0YW1hw7FvIGRlbCBkaXNwb3NpdGl2bzsgc2UgZGViZXLDoSBlc3BlY2lmaWNhclxuIgorImV4cGzDrWNpdGFtZW50ZSBlbCB0YW1hw7FvIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkxMworbXNnaWQgIiIKKyJEZXZpY2Ugc2l6ZSByZXBvcnRlZCB0byBiZSB6ZXJvLiAgSW52YWxpZCBwYXJ0aXRpb24gc3BlY2lmaWVkLCBvclxuIgorIlx0cGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgYWZ0ZXIgcnVubmluZyBmZGlzaywgZHVlIHRvXG4iCisiXHRhIG1vZGlmaWVkIHBhcnRpdGlvbiBiZWluZyBidXN5IGFuZCBpbiB1c2UuICBZb3UgbWF5IG5lZWQgdG8gcmVib290XG4iCisiXHR0byByZS1yZWFkIHlvdXIgcGFydGl0aW9uIHRhYmxlLlxuIgorbXNnc3RyICIiCisiU2UgaW5mb3Jtw7MgcXVlIGVsIHRhbWHDsW8gZGVsIGRpc3Bvc2l2byBlcyBjZXJvLiAgRXMgcG9zaWJsZSBxdWUgc2UgaGF5YVxuIgorIlx0ZXNwZWNpZmljYWRvIHVuYSBwYXJ0aWNpw7NuIG5vIHbDoWxpZGEgbyBxdWUgbGEgdGFibGEgZGUgcGFydGljaW9uZXNcbiIKKyJcdG5vIGhheWEgc2lkbyByZWxlw61kYSBkZXNwdcOpcyBkZSBlamVjdXRhciBmZGlzayBkZWJpZG8gYSBxdWUgdW5hIFxuIgorIlx0cGFydGljacOzbiBtb2RpZmljYWRhIGVzdMOhIG9jdXBhZGEgbyBlbiB1c28uICBFcyBuZWNlc2FyaW8gcmVpbmljaWFyXG4iCisiXHRwYXJhIHBvZGVyIHJlbGVlciBsYSB0YWJsYSBkZSBwYXJ0aWNpb25lcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGVzIG3DoXMgZ3JhbmRlIHF1ZSBlbCB0YW1hw7FvIGFwYXJlbnRlIGRlbCBkaXNwb3NpdGl2by4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgIkZhbGxvIGFsIGFuYWxpemFyIHNpbnTDoWN0aWNhbWVudGUgbGEgbGlzdGEgZGUgdGlwb3MgZGUgc2ZcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkVsIEh1cmQgbm8gdGllbmUgaW1wbGVtZW50YWRhIGxhIG9wY2nDs24gZGUgdGlwb3MgZGUgZmljaGVyby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJFbCBIdXJkIG5vIHRpZW5lIGltcGxlbWVudGFkYSBsYSBvcGNpw7NuIGRlIHRpcG9zIGRlIGZpY2hlcm8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIkVsIEh1cmQgbm8gdGllbmUgaW1wbGVtZW50YWRhIGxhIG9wY2nDs24gZGUgdGlwb3MgZGUgZmljaGVyby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDE4Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGRldGVybWluYXIgZWwgdGFtYcOxbyBkZWwgc2VjdG9yIHBvciBoYXJkd2FyZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGRldGVybWluYXIgZWwgdGFtYcOxbyBkZWwgc2VjdG9yIGbDrXNpY28iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA1NgorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICIiCisibWllbnRyYXMgc2UgZXN0YWJsZWPDrWEgZWwgdGFtYcOxbyBkZSBibG9xdWU7IGRlbWFzaWFkbyBwZXF1ZcOxbyBwYXJhIGVsICIKKyJkaXNwb3NpdGl2b1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJBdGVuY2nDs246IGVsIHRhbWHDsW8gZGUgYmxvcXVlIGVzcGVjaWZpY2FkbyAlZCBlcyBtZW5vciBxdWUgZWwgdGFtYcOxbyBkZSAiCisic2VjdG9yIGbDrXNpY28gZGVsIGRpc3Bvc2l0aXZvICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiVzOiBUYW1hw7FvIGRlbCBkaXNwb3NpdGl2byAoMHglbGx4IGJsb3F1ZXMpICVzIGRlbWFzaWFkbyBncmFuZGUgcGFyYSAiCisiZXhwcmVzYXJzZVxuIgorIlx0ZW4gMzIgYml0cyB1dGlsaXphbmRvIHVuIHRhbWHDsW8gZGUgYmxvcXVlIGRlICVkLlxuIgorCisjIFRPRE8gZnNfdHlwZXMKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgInJlc29sdWNpw7NuIGRlIGZzX3R5cGVzIHBhcmEgbWtlMmZzLmNvbmY6ICIKKworIyBUT0RPIHJldmlzaW9uIDAKKyM6IG1pc2MvbWtlMmZzLmM6MjEwOAorbXNnaWQgIkZpbGVzeXN0ZW0gZmVhdHVyZXMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIkNhcmFjdGVyw61zdGljYXMgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3Mgbm8gZGlzcG9uaWJsZXMgY29uIGxhIHJldmlzacOzbiAwIGRlICIKKyJsb3Mgc2lzdGVtYXMgZGUgZmljaGVyb3NcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb3F1ZXMgZGlzcGVyc29zIG5vIGRpc3BvbmlibGVzIGNvbiBsYSByZXZpc2nDs24gMCBkZSBsb3Mgc2lzdGVtYXMgZGUgIgorImZpY2hlcm9zXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEyNgorbXNnaWQgIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJGaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgbm8gaW1wbGVtZW50YWRvIHBhcmEgbGEgcmV2aXNpw7NuIDAgZGUgbG9zIHNpc3RlbWFzICIKKyJkZSBmaWNoZXJvc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVsZiIKK21zZ3N0ciAiZWwgcG9yY2VudGFqZSBkZSBibG9xdWVzIHJlc2VydmFkb3MgZXMgaW52w6FsaWRvIC0gJWxmIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNTYKK21zZ2lkICIiCisiRXh0ZW50cyBNVVNUIGJlIGVuYWJsZWQgZm9yIGEgNjQtYml0IGZpbGVzeXN0ZW0uICBQYXNzIC1PIGV4dGVudHMgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJMb3MgwqtleHRlbnRzwrsgREVCRU4gZXN0YXIgYWN0aXZhZG9zIHBhcmEgdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyBkZSA2NCBiaXRzLiAgIgorIlBhc2FyIC1PIGV4dGVudHMgcGFyYSByZWN0aWZpY2FyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNzYKK21zZ2lkICJUaGUgY2x1c3RlciBzaXplIG1heSBub3QgYmUgc21hbGxlciB0aGFuIHRoZSBibG9jayBzaXplLlxuIgorbXNnc3RyICJFbCB0YW1hw7FvIGRlIMKrY2x1c3RlcsK7IG5vIHB1ZWRlIHNlciBtZW5vciBxdWUgZWwgdGFtYcOxbyBkZSBibG9xdWUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgIiIKKyJwYXJhIGVzcGVjaWZpY2FyIHVuIHRhbWHDsW8gZGUgwqtjbHVzdGVywrsgaGFjZSBmYWx0YSBsYSBjYXJhY3RlcsOtc3RpY2EgIgorIsKrYmlnYWxsb2PCuyIKKworIzogbWlzYy9ta2UyZnMuYzoyMjAyCisjLCBjLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFVuYWJsZSB0byBnZXQgZGV2aWNlIGdlb21ldHJ5IGZvciAlc1xuIgorbXNnc3RyICJhdGVuY2nDs246IG5vIHNlIHB1ZWRlIG9idGVuZXIgbGEgZ2VvbWV0csOtYSBkZWwgZGlzcG9zaXRpdm8gcGFyYSAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgImVsIGFsaW5lYW1pZW50byBkZSAlcyBlc3TDoSBkZXNwbGF6YWRvIGVuICVsdSBieXRlcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKyJFc3RvIHB1ZWRlIHByb3ZvY2FyIHVuIHJlbmRpbWllbnRvIG11eSBiYWpvOyBzZSBzdWdpZXJlIChyZSlwYXJ0aWNpb25hci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAibG9zIGJsb3F1ZXMgZGUgJWQgYnl0ZXMgc29uIG11eSBncmFuZGVzIHBhcmEgZWwgc2lzdGVtYSAobcOheCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIkF0ZW5jacOzbjogbG9zIGJsb3F1ZXMgZGUgJWQgYnl0ZXMgc29uIG11eSBncmFuZGVzIHBhcmEgZWwgc2lzdGVtYSBcbiIKKyIobcOheCAlZCksIHNlIGhhY2UgdW4gZXNmdWVyem8gcGFyYSBjb250aW51YXJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjQwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTdWdnZXN0aW9uOiBVc2UgTGludXgga2VybmVsID49IDMuMTggZm9yIGltcHJvdmVkIHN0YWJpbGl0eSBvZiB0aGUgbWV0YWRhdGEgIgorImFuZCBqb3VybmFsIGNoZWNrc3VtIGZlYXR1cmVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICIiCisiTm8gc2UgcHVlZGUgZGlzcG9uZXIgZGUgbGEgY2FyYWN0ZXLDrXN0aWNhIMKrYmlnYWxsb2PCuyBzaW4gbGEgY2FyYWN0ZXLDrXN0aWNhICIKKyLCq2V4dGVudHPCuyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJMYXMgY2FyYWN0ZXLDrXN0aWNhcyByZXNpemVfaW5vZGUgeSBtZXRhX2JnIG5vIHNvbiBjb21wYXRpYmxlcy5cbiIKKyJObyBwdWVkZW4gZXN0YXIgYWN0aXZhZGFzIGxhcyBkb3MgYSBsYSB2ZXouXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQXRlbmNpw7NuOiBsYSBjYXJhY3RlcsOtc3RpY2EgwqtiaWdhbGxvY8K7IGHDum4gZXN0w6EgZW4gcHJvY2VzbyBkZSBkZXNhcnJvbGxvXG4iCisiVsOpYXNlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIHBhcmEgbcOhcyBpbmZvcm1hY2nDs25cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJlbCBjYW1iaW8gZGUgdGFtYcOxbyBlbiBsw61uZWEgZGUgbG9zIGJsb3F1ZXMgcmVzZXJ2YWRvcyBubyBlc3TDoSBpbXBsZW1lbnRhZG8gIgorInBhcmEgbG9zIHNpc3RlbWFzIGRlIGZpY2hlcm9zIHF1ZSBubyBlc3TDoW4gZXNwYXJjaWRvcyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImxhIGN1ZW50YSBkZSBibG9xdWVzIHBvciBncnVwbyBlc3TDoSBmdWVyYSBkZWwgaW50ZXJ2YWxvIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorIkxhIGNhcmFjdGVyw61zdGljYSBmbGV4X2JnIG5vIGVzdMOhIGFjdGl2YWRhLCBwb3IgbG8gcXVlIG5vIHB1ZWRlICIKKyJlc3BlY2lmaWNhcnNlIGVsIHRhbWHDsW8gZGUgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgInRhbWHDsW8gaW5jb3JyZWN0byBkZWwgbm9kby1pICVkIChtw61uICVkL23DoXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAiZGVtYXNpYWRvcyBub2Rvcy1pICglbGx1KSwgwr9hdW1lbnRhciBlbCByYXRpbyBkZSBsb3Mgbm9kb3MtaT8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgImRlbWFzaWFkb3Mgbm9kb3MtaSAoJWxsdSksIGVzcGVjaWZpcXVlIG1lbm9zIHF1ZSAyXjMyIG5vZG9zLWkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisidGFtYcOxb19kZV9ub2Rvc19pICgldSkgKiBuw7ptZXJvX2RlX25vZG9zX2kgKCV1KSBlcyBkZW1hc2lhZG9cbiIKKyJcdGdyYW5kZSBwYXJhIHVuIHNpc3RlbWEgZGUgZmljaGVyb3MgY29uICVsbHUgYmxvcXVlczsgZXNwZWNpZmlxdWVcbiIKKyJcdHVuIHJhdGlvIG1heW9yIGRlIG5vZG9zLWkgKC1pKSBvIHVuIG1lbm9yIG7Dum1lcm8gZGUgbm9kb3MtaSAoLU4pLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiRGVzY2FydGFuZG8gbG9zIGJsb3F1ZXMgZGVsIGRpc3Bvc2l0aXZvOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiZmFsbG8gLSAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcwOAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW5pY2lhbGl6YWJhIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcxNQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXNjcmliw61hIGVsIG5vZG8taSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI3NDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgImNvbXBvcnRhbWllbnRvIGRlIGVycm9yZXMgaW5jb3JyZWN0byAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgIm1pZW50cmFzIHNlIGFqdXN0YWJhIGVsIHN1cGVyYmxvcXVlIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzAKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFBhc3MgLU8gZXh0ZW50cyB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzNworbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKyJFbCBkZXNjYXJ0ZSBoYSBzaWRvIGNvcnJlY3RvIHkgZGV2b2x2ZXLDoSAwcyAtIHNlIHNhbHRhIGVsIGJvcnJhZG8gZGUgbGEgIgorInRhYmxhIGRlIG5vZG9zLWlcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAic2lzdGVtYSBvcGVyYXRpdm8gZGVzY29ub2NpZG8gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDE4Cittc2dpZCAiQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICIKK21zZ3N0ciAiUmVzZXJ2YW5kbyBsYXMgdGFibGFzIGRlIGdydXBvOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIHJlc2VydmFyIGxhcyB0YWJsYXMgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdG1pZW50cmFzIHNlIGNvbnZlcnTDrWEgZWwgbWFwYSBkZSBiaXRzIGRlIMKrc3ViY2x1c3RlcsK7IgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJtaWVudHJhcyBzZSBpbmljaWFsaXphYmEgYSBjZXJvIGVsIGJsb3F1ZSAlbGx1IGFsIGZpbmFsIGRlbCBzaXN0ZW1hIGRlICIKKyJmaWNoZXJvcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgcmVzZXJ2YWJhbiBsb3MgYmxvcXVlcyBwYXJhIGVsIGNhbWJpbyBkZSB0YW1hw7FvIGVuIGzDrW5lYSIKKworIzogbWlzYy9ta2UyZnMuYzozMTA3IG1pc2MvdHVuZTJmcy5jOjE0MTUKK21zZ2lkICJqb3VybmFsIgorbXNnc3RyICJmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiQcOxYWRpZW5kbyBlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgYWwgZGlzcG9zaXRpdm8gJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdG1pZW50cmFzIHNlIGludGVudGFiYSBhw7FhZGlyIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBhbCBkaXNwb3NpdGl2byAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAiaGVjaG9cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiU2Ugb21pdGUgbGEgY3JlYWNpw7NuIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZW4gbW9kbyBzb2xvLXN1cGVyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIkNyZWFuZG8gZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzICgldSBibG9xdWVzKTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJcdG1pZW50cmFzIHNlIGludGVudGFiYSBjcmVhciBlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJFcnJvciBtaWVudHJhcyBzZSBhY3RpdmFiYSBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgcHJvdGVjY2nDs24gZGUgbW9udGFqZSAiCisibcO6bHRpcGxlLiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICIiCisiTGEgcHJvdGVjY2nDs24gZGUgbW9udGFqZSBtw7psdGlwbGUgZXN0w6EgYWN0aXZhZGEgY29uIHVuIGludGVydmFsbyBkZSAiCisiYWN0dWFsaXphY2nDs24gZGUgJWQgc2VndW5kb3MuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5MQorIywgZnV6enkKK21zZ2lkICJDb3B5aW5nIGZpbGVzIGludG8gdGhlIGRldmljZTogIgorbXNnc3RyICIiCisiRXJyb3IgYWwgaGFjZXIgZWZlY3RpdmFzIGxhcyBlc2NyaXR1cmFzIGVuIGVsIGRpc3Bvc2l0aXZvIGRlIGFsbWFjZW5hbWllbnRvOiAiCisiJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgIm1pZW50cmFzIHNlIHJlc2VydmFiYSB1bmEgdGFibGUgbDEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIwNAorbXNnaWQgIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogIgorbXNnc3RyICIiCisiRXNjcmliaWVuZG8gc3VwZXJibG9xdWVzIHkgbGEgaW5mb3JtYWNpw7NuIGNvbnRhYmxlIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyJBdGVuY2nDs24sIHNlIHR1dm8gdW4gcHJvYmxlbWEgYWwgZXNjcmliaXIgbG9zIHN1cGVyYmxvcXVlcy4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJoZWNob1xuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJDcmVhbmRvIGVsIGZpY2hlcm8gb3JkaW5hcmlvICVzXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIiIKKyJBdGVuY2nDs246IGhheSAlbGx1IGJsb3F1ZXMgc2luIHVzYXIuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJtaWVudHJhcyBzZSBpdGVyYWJhIHNvYnJlIGVsIG5vZG8taSAldSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiTW9kbyBkZSBlbXBsZW86IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1vZG8gZGUgZW1wbGVvOiAgJXMgZGlzcG9zaXRpdm8uLi5cbiIKKyJcbiIKKyJFc3RlIHByb2dyYW1hIG11ZXN0cmEgbGEgaW5mb3JtYWNpw7NuIGRlIGxhIHBhcnRpY2nDs24gZGUgY2FkYSBkaXNwb3NpdGl2by5cbiIKKyJQb3IgZWplbXBsbzogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgYWJyaXIgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIk5vIHNlIHB1ZWRlIG9idGVuZXIgbGEgZ2VvbWV0csOtYSBkZSAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IHNpemUgb2YgJXM6ICVzIgorbXNnc3RyICJObyBzZSBwdWVkZSBvYnRlbmVyIGVsIHRhbWHDsW8gZGUgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIGluaWNpbz0lOGQgdGFtYcOxbz0lOGx1IGZpbj0lOGRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5CisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJQb3IgZmF2b3IgZWplY3V0ZSBlMmZzY2sgc29icmUgZWwgc2lzdGVtYSBkZSBmaWNoZXJvcy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiUG9yIGZhdm9yIGVqZWN1dGUgZTJmc2NrIHNvYnJlIGVsIHNpc3RlbWEgZGUgZmljaGVyb3MuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWMgbWF4X21vdW50c19jb3VudF0gWy1lIGVycm9yc19iZWhhdmlvcl0gWy1mXSBbLWcgZ3JvdXBdXG4iCisiXHRbLWkgaW50ZXJ2YWxbZHxtfHddXSBbLWpdIFstSiBqb3VybmFsX29wdGlvbnNdIFstbF1cbiIKKyJcdFstbSByZXNlcnZlZF9ibG9ja3NfcGVyY2VudF0gWy1vIFteXW1vdW50X29wdGlvbnNbLC4uLl1dXG4iCisiXHRbLXAgbW1wX3VwZGF0ZV9pbnRlcnZhbF0gWy1yIHJlc2VydmVkX2Jsb2Nrc19jb3VudF0gWy11IHVzZXJdXG4iCisiXHRbLUMgbW91bnRfY291bnRdIFstTCB2b2x1bWVfbGFiZWxdIFstTSBsYXN0X21vdW50ZWRfZGlyXVxuIgorIlx0Wy1PIFteXWZlYXR1cmVbLC4uLl1dIFstUSBxdW90YV9vcHRpb25zXVxuIgorIlx0Wy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV0gWy1UIGxhc3RfY2hlY2tfdGltZV0gWy1VIFVVSURdXG4iCisiXHRbLUkgbmV3X2lub2RlX3NpemVdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiTW9kbyBkZSBlbXBsZW86ICVzIFstYyBjdWVudGEtbcOheGltYS1kZS1tb250YWplc10gWy1lIGNvbXBvcnRhbWllbnRvLWRlLSIKKyJlcnJvcmVzXSBbLWcgZ3J1cG9dXG4iCisiXHRbLWkgaW50ZXJ2YWxvW2R8bXx3XV0gWy1qXSBbLUogb3BjaW9uZXMtZGVsLWZpY2hlcm8tZGUtdHJhbnNhY2Npb25lc10gWy0iCisibF1cbiIKKyJcdFstbSBwb3JjZW50YWplLWRlLWJsb3F1ZXMtcmVzZXJ2YWRvc10gWy1vIFteXW9wY2lvbmVzLWRlLW1vbnRhamVbLC4uLl1dIFstIgorInAgaW50ZXJ2YWxvLWRlLWFjdHVhbGl6YWNpw7NuLW1tcF1cbiIKKyJcdFstciBjdWVudGEtZGUtYmxvcXVlcy1yZXNlcnZhZG9zXSBbLXUgdXN1YXJpb10gWy1DIGN1ZW50YS1kZS1tb250YWplc10gWy1MICIKKyJldGlxdWV0YS1kZS12b2x1bWVuXVxuIgorIlx0Wy1NIMO6bHRpbW8tZGlyZWN0b3Jpby1tb250YWRvXSBbLU8gW15dY2FyYWN0ZXLDrXN0aWNhWywuLi5dXVxuIgorIlx0Wy1RIG9wY2lvbnNfZGUtY3VvdGFdXG4iCisiXHRbLUUgb3BjacOzbi1leHRlbmRpZGFbLC4uLl1dIFstVCDDumx0aW1hLWZlY2hhLWRlLXJldmlzw7NuXSBbLVUgVVVJRF1cbiIKKyJcdFsgLUkgbnVldm8tdGFtYcOxby1kZS1ub2RvLWkgXSBkaXNwb3NpdGl2b1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICLCoU5vIHNlIGVuY29udHLDsyBlbCBzdXBlcmJsb3F1ZSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgYWJyaXIgZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIGV4dGVybm8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBubyBlcyB1biBkaXNwb3NpdGl2byBjb24gZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTIgbWlzYy90dW5lMmZzLmM6MjcxMgorbXNnaWQgIkZpbGVzeXN0ZW0ncyBVVUlEIG5vdCBmb3VuZCBvbiBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIk5vIHNlIGVuY29udHLDsyBlbCBVVUlEIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGVuIGVsIGZpY2hlcm8gZGVcbiIKKyJ0cmFuc2FjY2lvbmVzIGRlbCBkaXNwb3NpdGl2by5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJObyBzZSBwdWVkZSBsb2NhbGl6YXIgZWwgZGlzcG9zaXRpdm8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcy4gTk8gc2UgIgorImVsaW1pbsOzXG4iCisiVXRpbGljZSBsYSBvcGNpw7NuIC1mIHBhcmEgZWxpbWluYXIgZWwgZGlzcG9zaXRpdm8gZGVsIGZpY2hlcm8gZGUgIgorInRyYW5zYWNjaW9uZXMgcGVyZGlkby5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBlbGltaW5hZG9cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJtaWVudHJhcyBzZSBsZcOtYW4gbG9zIG1hcGFzIGRlIGJpdHMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIm1pZW50cmFzIHNlIGJvcnJhYmEgZWwgbm9kby1pIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAibWllbnRyYXMgc2UgZXNjcmliw61hIGVsIG5vZG8taSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIowqF5IHJlaW5pY2llIGRlc3B1w6lzISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJQb3IgZmF2b3IgZWplY3V0ZSBhbnRlcyAnZTJmc2NrIC1mICVzJy5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiTm8gc2Ugc29wb3J0YSBkZXNhY3RpdmFyIGxhIGNhcmFjdGVyw61zdGljYSAnJXMnIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIkVsIGFqdXN0ZSBkZSBsYSBjYXJhY3RlcsOtc3RpY2EgJyVzJyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBubyBlc3TDoSAiCisiaW1wbGVtZW50YWRvLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkxhIGJhbmRlcmEgJ2hhc19qb3VybmFsJyBzw7NsbyBwdWVkZSBzZXIgYm9ycmFkYSBjdWFuZG8gZWwgc2lzdGVtYSBkZVxuIgorImZpY2hlcm9zIG5vIGVzdMOhIG1vbnRhZG8gbyBlc3TDoSBtb250YWRvIGVuIG1vZG8gZGUgc8OzbG8gbGVjdHVyYS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIkxhIGJhbmRlcmEgJ25lZWRzX3JlY292ZXJ5JyBlc3TDoSBwdWVzdGEuICBQb3IgZmF2b3IgZWplY3V0ZSBlMmZzY2sgYW50ZXNcbiIKKyJkZSBkZWFjdGl2YXIgbGEgYmFuZGVyYSAnaGFzX2pvdXJuYWwnLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJMYSBjYXJhY3RlcsOtc3RpY2EgJ3NwYXJzZV9zdXBlcicgbm8gc2UgcHVlZGUgYWN0aXZhclxuIgorImVuIHNpc3RlbWFzIGRlIGZpY2hlcm9zIHF1ZSB0ZW5nYW4gbGEgY2FyYWN0ZXLDrXN0aWNhIG1ldGFfYmcgYWN0aXZhZGEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXNpdGNhIGRlIHByb3RlY2Npw7NuIGRlIG1vbnRhamUgbcO6bHRpcGxlIG5vIHB1ZWRlXG4iCisicG9uZXJzZSBzaSBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGVzdMOhIG1vbnRhZG8gbyBlc1xuIgorImRlIHNvbG8gbGVjdHVyYS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWRzLlxuIgorbXNnc3RyICIiCisiU2UgaGEgYWN0aXZhZG8gbGEgcHJvdGVjY2nDs24gZGUgbW9udGFqZSBtw7psdGlwbGUgY29uIHVuIGludGVydmFsbyBkZSAiCisiYWN0dWFsaXphY2nDs24gZGUgJWRzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKyJMYSBjYXJhY3RlcsOtc3RpY2EgZGUgbW9udGFqZSBtw7psdGlwbGUgbm8gc2UgcHVlZGVcbiIKKyJkZXNhY3RpdmFyIHNpIGVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXMgZGUgc29sbyBsZWN0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgIkVycm9yIG1pZW50cmFzIHNlIGxlw61hbiBsb3MgbWFwYXMgZGUgYml0c1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICJFbCBuw7ptZXJvIG3DoWdpY28gZW4gZWwgYmxvcXVlIE1NUCBubyBjdWFkcmEuIGVzcGVyYWRvOiAleCwgcmVhbDogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgZWwgYmxvcXVlIE1NUC4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKyJCb3JyYXIgbGEgYmFuZGVyYSBmbGV4X2JnIHByb3ZvY2Fyw61hIHF1ZSBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIHNlXG4iCisidm9sdmllcmEgaW5jb25zaXN0ZW50ZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhICdodWdlX2ZpbGUnIHPDs2xvIHB1ZWRlIHNlciBib3JyYWRhIGN1YW5kbyBlbCBzaXN0ZW1hIGRlXG4iCisiZmljaGVyb3Mgbm8gZXN0w6EgbW9udGFkbyBvIGVzdMOhIGVuIG1vZG8gZGUgc8OzbG8gbGVjdHVyYS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2NworbXNnaWQgIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTc1Cittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorIiVzIGVzdMOhIG1vbnRhZG87IMKhTm8gc2UgcHVlZGUgY2FtYmlhciBlbCB0YW1hw7FvIGRlIHVuIHNpc3RlbWEgZGUgZmljaGVyb3MgIgorIm1vbnRhZG8hXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRpc2FibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzEzCittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMyNgorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiAnXnF1b3RhJyBvcHRpb24gb3ZlcnJpZGVzICctUSdhcmd1bWVudHMuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdGVuY2nDs246IGxhIG9wY2nDs24gJ15xdW90YScgZGVqYSBzaW4gZWZlY3RvIGxvcyBhcmd1bWVudG9zICctUScuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKKyMsIGZ1enp5Cittc2dpZCAiIgorIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyBpcyBvbmx5IHN1cHBvcnRlZFxuIgorIm9uIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhICdzcGFyc2Vfc3VwZXInIG5vIHNlIHB1ZWRlIGFjdGl2YXJcbiIKKyJlbiBzaXN0ZW1hcyBkZSBmaWNoZXJvcyBxdWUgdGVuZ2FuIGxhIGNhcmFjdGVyw61zdGljYSBtZXRhX2JnIGFjdGl2YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzYyCittc2dpZCAiIgorIlVVSUQgaGFzIGNoYW5nZWQgc2luY2UgZW5hYmxpbmcgbWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSAiCisidW5tb3VudGVkIFxuIgorInRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byBtYXRjaCB0aGUgbmV3IFVVSUQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQwOAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIGEgam91cm5hbC5cbiIKK21zZ3N0ciAiRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB5YSB0aWVuZSB1biBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiXHRtaWVudHJhcyBzZSBpbnRlbnRhYmEgYWJyaXIgZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIGVuICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiQ3JlYW5kbyB1biBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZW4gZWwgZGlzcG9zaXRpdm8gJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICIiCisibWllbnRyYXMgc2UgYWdyZWdhYmEgdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyBhbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZW4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDYKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiCittc2dzdHIgIkNyZWFuZG8gZWwgbm9kby1pIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ2MAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCBmaWxlIgorbXNnc3RyICIiCisiXG4iCisiXHRtaWVudHJhcyBpbnRlbnRhYmEgY3JlYXIgZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW5pY2lhbGl6YWJhIGVsIHN1cGVyYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJtaWVudHJhcyBzZSBhY3R1YWxpemFiYSBlbCBub2RvLWkgZGUgYmxvcXVlcyBkYcOxYWRvcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIm1pZW50cmFzIHNlIGVzY3JpYsOtYSBlbCBub2RvLWkgJWx1IGVuICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIm1pZW50cmFzIHNlIGxlw61hIGVsIG5vZG8taSByYcOteiIKKworIzogbWlzYy90dW5lMmZzLmM6MTU3NQorIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiQmFkIHF1b3RhIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkZvbGxvd2luZyB2YWxpZCBxdW90YSBvcHRpb25zIGFyZSBhdmFpbGFibGUgKHBhc3MgYnkgc2VwYXJhdGluZyB3aXRoICIKKyJjb21tYSk6XG4iCisiXHRbXl11c3JbcXVvdGFdXG4iCisiXHRbXl1ncnBbcXVvdGFdXG4iCisiXHRbXl1wcmpbcXVvdGFdXG4iCisiXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJMYXMgb3BjaW9uZXMgZGUgY3VvdGEgZXNwZWNpZmljYWRhcyBubyBzb24gY29ycmVjdGFzLlxuIgorIlxuIgorIkxhcyBzaWd1aWVudGVzIG9wY2lvbmVzIGRlIGN1b3RhIHbDoWxpZGFzIGVzdMOhbiBkaXNwb25pYmxlcyAoZGViZW4gc2VwYXJhcnNlICIKKyJwb3IgY29tYXMpOlxuIgorIlx0W15ddXNycXVvdGFcbiIKKyJcdFteXWdycHF1b3RhXG4iCisiXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgcGFyc2UgZGF0ZS90aW1lIHNwZWNpZmllcjogJXMiCittc2dzdHIgIiIKKyJObyBzZSBwdWVkZSBhbmFsaXphciBzaW50w6FjdGljYW1lbnRlIGVsIGVzcGVjaWZpY2Fkb3IgZGUgZmVjaGEvaG9yYTogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2NTggbWlzYy90dW5lMmZzLmM6MTY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbW91bnRzIGNvdW50IC0gJXMiCittc2dzdHIgImN1ZW50YSBkZSBtb250YWplcyBpbmNvcnJlY3RvcyAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJub21icmUgZGVsIGdpZC9ncnVwbyBpbmNvcnJlY3RvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgImludGVydmFsbyBpbmNvcnJlY3RvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgInByb3BvcmNpw7NuIGRlIGJsb3F1ZXMgcmVzZXJ2YWRvcyBpbmNvcnJlY3RhIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gc29sbyBwb2Ryw61hIHNlciBlc3BlY2lmaWNhZG8gdW5hIHZleiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItTyBzw7NsbyBzZSBwdWVkZSBlc3BlY2lmaWNhciB1bmEgdmV6IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODE3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9ja3MgY291bnQgLSAlcyIKK21zZ3N0ciAiY3VlbnRhIGRlIGJsb3F1ZXMgcmVzZXJ2YWRvcyBpbmNvcnJlY3RhIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAibm9tYnJlIGRlIHVpZC91c3VhcmlvIGluY29ycmVjdG8gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJ0YW1hw7FvIGRlIG5vZG8taSBubyB2w6FsaWRvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiRWwgdGFtYcOxbyBkZSBub2RvLWkgZGViZSBzZXIgcG90ZW5jaWEgZGUgZG9zIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAibW1wX3VwZGF0ZV9pbnRlcnZhbCBkZW1hc2lhZG8gZ3JhbmRlOiAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0clswXSAiIgorIlNlIHBvbmUgZWwgaW50ZXJ2YWxvIGRlIGFjdHVhbGl6YWNpw7NuIGRlIHByb3RlY2Npw7NuIGRlIG1vbnRhamUgbcO6bHRpcGxlIGEgIgorIiVsdSBzZWd1bmRvXG4iCittc2dzdHJbMV0gIiIKKyJTZSBwb25lIGVsIGludGVydmFsbyBkZSBhY3R1YWxpemFjacOzbiBkZSBwcm90ZWNjacOzbiBkZSBtb250YWplIG3Dumx0aXBsZSBhICIKKyIlbHUgc2VndW5kb3NcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICLCq1N0cmlkZcK7IGRlIFJBSUQgbm8gdsOhbGlkbzogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaXBlLXdpZHRoOiAlc1xuIgorbXNnc3RyICLCq3N0cmlwZS13aWR0aMK7IGRlIFJBSUQgbm8gdsOhbGlkbzogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICJBbGdvcml0bW8gwqtoYXNowrsgbm8gdsOhbGlkbzogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJQb25pZW5kbyBlbCBhbGdvcml0bW8gwqtoYXNowrtwcmVkZXRlcm1pbmFkbyBhICVzICglZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjA1MAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhcyBvcGNpb25lcyBlc3BlY2lmaWNhZGFzIHNvbiBpbmNvcnJlY3Rhcy5cbiIKKyJcbiIKKyJMYXMgb3BjaW9uZXMgZXh0ZW5kaWRhcyBkZWJlbiBlc3RhciBzZXBhcmFkYXMgcG9yIGNvbWFzLCB5IHB1ZWRlbiB0b21hciB1blxuIgorIlx0YXJndW1lbnRvIHF1ZSBzZSBhanVzdGEgY29uIHVuIHNpZ25vIGRlIGlndWFsICgnPScpLlxuIgorIlxuIgorIkxhcyBvcGNpb25lcyBleHRlbmRpZGFzIHbDoWxpZGFzIHNvbjpcbiIKKyJcdGNsZWFyX21tcFxuIgorIlx0aGFzaF9hbGc9PGFsZ29yaXRtbyDCq2hhc2jCuz5cbiIKKyJcdG1vdW50X29wdHM9PG9wY2lvbmVzIGRlIG1vbnRhamUgZXh0ZW5kaWRhcyBwcmVkZXRlcm1pbmFkYXM+XG4iCisiXHRzdHJpZGU9PHRhbWHDsW8gZGUgZnJhZ21lbnRvIHBvciBkaXNjbyBSQUlELCBlbiBibG9xdWVzPlxuIgorIlx0c3RyaXBlX3dpZHRoPTzCq3N0cmlkZcK7IGRlIFJBSUQgKiBkaXNjb3MgZGUgZGF0b3MsIGVuIGJsb3F1ZXM+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIkZhbGxvIG1pZW50cmFzIHNlIGxlw61hIGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kby1pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBibG9jayBiaXRtYXBcbiIKK21zZ3N0ciAiRmFsbG8gbGV5ZW5kbyBlbCBtYXBhIGRlIGJpdHMgZGVsIGJsb3F1ZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJibG9xdWVzIHBvciBzZXIgbW92aWRvcyIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorIkZhbGxvIHJlc2VydmFuZG8gZWwgbWFwYSBkZSBiaXRzIGRlbCBibG9xdWUgYWwgaW5jcmVtZW50YXIgZWwgdGFtYcOxbyBkZSBub2RvLSIKKyJpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIk5vIGhheSBlc3BhY2lvIHN1ZmljaWVudGUgcGFyYSBhdW1lbnRhciBlbCB0YW1hw7FvIGRlIG5vZG8taSBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1NQorbXNnaWQgIkZhaWxlZCB0byByZWxvY2F0ZSBibG9ja3MgZHVyaW5nIGlub2RlIHJlc2l6ZSBcbiIKK21zZ3N0ciAiIgorIkZhbGxvIG1pZW50cmFzIHNlIHJlc2VydmFiYW4gbG9zIGJsb3F1ZXMgcGFyYSBlbCBjYW1iaW8gZGUgdGFtYcOxbyBkZSBub2RvLSIKKyJpIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKyJFcnJvciBhbCBjYW1iaWFyIGVsIHRhbWHDsW8gZGVsIG5vZG8taS5cbiIKKyJFamVjdXRlIGUydW5kbyBwYXJhIGRlc2hhY2VyIGxvcyBjYW1iaW9zIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zLiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJFbCBuw7ptZXJvIG3DoWdpY28gZGVsIGJsb3F1ZSBNTVAgZXMgaW5jb3JyZWN0by4gVHJhdGUgZGUgYXJyZWdsYXJsbyAiCisiZWplY3V0YW5kbzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgbm8gZXMgdW4gZGlzcG9zaXRpdm8gY29uIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJFbCB0YW1hw7FvIGRlbCBub2RvLWkgeWEgZXMgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIk5vIGVzIHBvc2libGUgcmVkdWNpciBlbCB0YW1hw7FvIGRlbCBub2RvLWlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgIlRhbWHDsW8gaW5jb3JyZWN0byBkZWwgbm9kby1pICVsdSAobcOheCAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiU2UgcG9uZSBsYSBjdWVudGEgZGUgbW9udGFqZXMgbcOheGltYSBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIlNlIHBvbmUgbGEgY3VlbnRhIGRlIG1vbnRhamVzIGFjdHVhbCBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJTZSBwb25lIGVsIGNvbXBvcnRhbWllbnRvIGRlIGVycm9yZXMgYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAiU2UgcG9uZSBlbCBnaWQgZGUgbG9zIGJsb3F1ZXMgcmVzZXJ2YWRvcyAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICJlbCBpbnRlcnZhbG8gZW50cmUgcmV2aXNpb25lcyBlcyBkZW1hc2lhZG8gZ3JhbmRlICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAiU2UgcG9uZSBlbCBpbnRlcnZhbG8gZW50cmUgcmV2aXNpb25lcyBlbiAlbHUgc2VndW5kb3NcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICJTZSBwb25lIGVsIHBvcmNlbnRhamUgZGUgYmxvcXVlcyByZXNlcnZhZG9zIGEgJWclJSAoJWxsdSBibG9xdWVzKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAibGEgY2FudGlkYWQgZGUgYmxvcXVlcyByZXNlcnZhZG9zIGVzIGRlbWFzaWFkbyBncmFuZGUgKCVsbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IHRvICVsbHVcbiIKK21zZ3N0ciAiU2UgcG9uZSBsYSBjYW50aWRhZCBkZSBibG9xdWVzIHJlc2VydmFkb3MgYSAlbGx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisiRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB5YSB0aWVuZSBzdXBlcmJsb3F1ZXMgZGlzcGVyc29zLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIGNhcmFjdGVyw61zdGljYSBkZSBzdXBlcmJsb3F1ZXMgZGlzcGVyc29zIG5vIHNlIHB1ZWRlIGFjdGl2YXJcbiIKKyJlbiBzaXN0ZW1hcyBkZSBmaWNoZXJvcyBxdWUgdGVuZ2FuIGxhIGNhcmFjdGVyw61zdGljYSBtZXRhX2JnIGFjdGl2YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisiXG4iCisiTGEgYmFuZGVyYSBkZSBzdXBlcmJsb3F1ZXMgZGlzcGVyc29zIGVzdMOhIHB1ZXN0YS4gICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTYwCittc2dpZCAiIgorIlxuIgorIkNsZWFyaW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJObyBlcyBwb3NpYmxlIHF1aXRhciBsYSBiYW5kZXJhIGRlIHN1cGVyYmxvcXVlcyBkaXNwZXJzb3MuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIlNlIHBvbmUgbGEgaG9yYSBkZSBsYSDDumx0aW1hIHJldmlzacOzbiBhbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGEgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIlNlIHBvbmUgZWwgdWlkIGRlIGxvcyBibG9xdWVzIHJlc2VydmFkb3MgYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiRXJyb3IgYWwgdXRpbGl6YXIgY2xlYXJfbW1wLiBEZWJlIHV0aWxpemFyc2UgY29uIC1mXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkxhIGNhcmFjdGVyw61zdGljYSBkZSBjdW90YSBzw7NsbyBwdWVkZSBjYW1iaWFyc2UgY3VhbmRvIGVsIHNpc3RlbWEgZGUgIgorImZpY2hlcm9zIG5vIGVzdMOhIG1vbnRhZG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiRWwgVVVJRCBzb2xvIHB1ZWRlIGNhbWJpYXJzZSBjdWFuZG8gZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBubyBlc3TDoSBtb250YWRvLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNjAKK21zZ2lkICJTZXR0aW5nIFVVSUQgb24gYSBjaGVja3N1bW1lZCBmaWxlc3lzdGVtIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJGb3JtYXRvIGRlbCBVVUlEIG5vIHbDoWxpZG9cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEwMQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiSGFjZSBmYWx0YSBhY3R1YWxpemFyIGVsIHN1cGVyYmxvcXVlIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMjYKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiRWwgdGFtYcOxbyBkZSBub2RvLWkgc29sbyBwdWVkZSBjYW1iaWFyc2UgY3VhbmRvIGVsIHNpc3RlbWEgZGUgZmljaGVyb3Mgbm8gIgorImVzdMOhIG1vbnRhZG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIk5vIGVzIHBvc2libGUgY2FtYmlhciBlbCB0YW1hw7FvIGRlIG5vZG8taSBlbiBzaXN0ZW1hcyBkZSBmaWNoZXJvcyBxdWUgIgorInRlbmdhblxuIgorImxhIGNhcmFjdGVyw61zdGljYSBmbGV4X2JnIGFjdGl2YWRhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiU2UgcG9uZSBlbCB0YW1hw7FvIGRlIG5vZG8taSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJGYWxsbyBtaWVudHJhcyBzZSBjYW1iaWFiYSBlbCB0YW1hw7FvIGRlIG5vZG8taVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaWRlIHNpemUgdG8gJWRcbiIKK21zZ3N0ciAiQ29uZmlndXJhbmRvIGVsIHRhbWHDsW8gZGUgwqtzdHJpZGXCuyBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiQ29uZmlndXJhbmRvIGxhIGFuY2h1cmEgZGUgwqtzdHJpcGXCuyBhICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICJTZSBwb25lbiBsYXMgb3BjaW9uZXMgZGUgbW9udGFqZSBleHRlbmRpZGFzIHByZWRldGVybWluYWRhcyBhICclcydcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiJXM6IHJlY3VwZXJhbmRvIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lc1xuIgorCisjOiBtaXNjL3V0aWwuYzoxMDAKK21zZ2lkICI8cHJvY2VlZGluZz5cbiIKK21zZ3N0ciAiPHByb2NlZGllbmRvPlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIsK/Q29udGludWFyIGRlIHRvZGFzIGZvcm1hcyAobyBlc3BlcmEgJWQgc2VndW5kb3MpPyAocyxuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIsK/Q29udGludWFyIGRlIHRvZGFzIGZvcm1hcz8gKHMsbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiIgorIlNlIGZ1ZXJ6YSBkZSB0b2RhcyBmb3JtYXMgbWtlMmZzLiAgRXNwZXJlbW9zIHF1ZSAvZXRjL210YWIgc2VhIGluY29ycmVjdG8uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEzOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aWxsIG5vdCBtYWtlIGEgJXMgaGVyZSFcbiIKK21zZ3N0ciAiwqFObyBzZSBoYXLDoSB1biAlcyBhcXXDrSFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIlNlIGZ1ZXJ6YSBkZSB0b2RhcyBmb3JtYXMgbWtlMmZzLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxNjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugam91cm5hbCBvcHRpb25zIVxuIgorbXNnc3RyICIiCisiwqFObyBzZSBwdWVkZSByZXNlcnZhciBtZW1vcmlhIHBhcmEgbGEgcmV2aXNpw7NuIHNpbnTDoWN0aWNhIGRlIGxhcyBvcGNpb25lcyAiCisiZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyFcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiTm8gc2UgcHVlZGUgZW5jb250cmFyIGVsIGRpc3Bvc2l0aXZvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgIgorImNvcnJlc3BvbmRpZW50ZSBhICVzXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlNlIGVzcGVjaWZpY2Fyb24gb3BjaW9uZXMgaW5jb3JyZWN0YXMgcGFyYSBlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMuXG4iCisiXG4iCisiTGFzIG9wY2lvbmVzIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgZGViZW4gZXN0YXIgc2VwYXJhZGFzIHBvciBjb21hc1xuIgorInkgcHVlZGVuIHRlbmVyIHVuIGFyZ3VtZW50byBxdWUgc2UgcG9uZSBjb24gdW4gc2lnbm8gZGUgaWd1YWwgKCc9JykuXG4iCisiXG4iCisiTGFzIG9wY2lvbmVzIHbDoWxpZGFzIHBhcmEgZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIHNvbjpcbiIKKyJcdHNpemU9PHRhbWHDsW8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBlbiBtZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PGRpc3Bvc2l0aXZvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXM+XG4iCisiXHRsb2NhdGlvbj08bG9jYWxpemFjacOzbiBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzPlxuIgorIlxuIgorIkVsIHRhbWHDsW8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBkZWJlIGVzdGFyIGVudHJlIDEwMjQgeSAxMDI0MDAwMCAiCisiYmxvcXVlcyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcy5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXMgZGVtYXNpYWRvIHBlcXVlw7FvIHBhcmEgdW4gZmljaGVybyBkZSAiCisidHJhbnNhY2Npb25lc1xuIgorCisjOiBtaXNjL3V0aWwuYzoyNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFbCB0YW1hw7FvIGRlbCBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMgc29saWNpdGFkbyBlcyBkZSAlZCBibG9xdWVzO1xuIgorImRlYmVyw61hIGVzdGFyIGVudHJlIDEwMjQgeSAxMDI0MDAwMCBibG9xdWVzLiAgU2UgZmluYWxpemEuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkVsIHRhbWHDsW8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBlcyBtdXkgZ3JhbmRlIHBhcmEgZWwgc2lzdGVtYSBkZSAiCisiZmljaGVyb3MuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiRXN0ZSBzaXN0ZW1hIGRlIGZpY2hlcm9zIHNlIHJldmlzYXLDoSBhdXRvbcOhdGljYW1lbnRlIGNhZGEgJWQgbW9udGFqZXMgb1xuIgorIiVnIGTDrWFzLCBsbyBxdWUgc3VjZWRhIHByaW1lcm8uICBVdGlsaWNlIHR1bmUyZnMgLWMgbyAtaSBwYXJhIGNhbWJpYXJsby5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKyJNb2RvIGRlIGVtcGxlbzogJXMgWy1kXSBbLXAgZmljaGVyby1waWRdwqBbLXMgcnV0YS1zb2NrZXRdIFstVCByZXRhcmRvXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIFstcnx0XSBbLW4gbnVtXSBbLXMgc29ja2V0cGF0aF1cbiIKK21zZ3N0ciAiICAgICAgICVzIFstcnx0XSBbLW4gbsO6bV0gWy1zIHJ1dGEtc29ja2V0XVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAiYXJndW1lbnRvcyBpbmNvcnJlY3RvcyIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgImNvbmV4acOzbiIKKworIzogbWlzYy91dWlkZC5jOjE5MgorbXNnaWQgIndyaXRlIgorbXNnc3RyICJlc2NyaXR1cmEiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICJuw7ptZXJvIGRlIGxlY3R1cmFzIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAibGEgbG9uZ2l0dWQgZGUgbGEgcmVzcHVlc3RhIGVzIGluY29ycmVjdGEiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAidXVpZGQgZGFlbW9uIGFscmVhZHkgcnVubmluZyBhdCBwaWQgJXNcbiIKK21zZ3N0ciAiZWwgZGVtb25pbyB1dWlkZCB5YSBlc3TDoSBjb3JyaWVuZG8gY29uIHBpZCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJObyBzZSBwdWVkZSBjcmVhciBlbCDCq3NvY2tldMK7IHVuaXggZGUgZmx1am86ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIk5vIHNlIHB1ZWRlIGFzaWduYXIgZWwgwqtzb2NrZXTCuyB1bml4ICVzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGxpc3RlbiBvbiB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgZXNjdWNoYXIgcG9yIGVsIMKrc29ja2V0wrsgdW5peCAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICJFcnJvciBhbCBsZWVyIGRlbCBjbGllbnRlLCBsb25naXR1ZCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICJvcGVyYWNpw7NuICVkLCBuw7ptZXJvIGVudHJhbnRlID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIGNvbiBob3JhIGdlbmVyYWRvOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiVVVJRCBhbGVhdG9yaW8gZ2VuZXJhZG86ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAiVVVJRCBjb24gaG9yYSBnZW5lcmFkbyAlcyB5IGVsIFVVSUQgc2lndWllbnRlXG4iCittc2dzdHJbMV0gIlVVSUQgY29uIGhvcmEgZ2VuZXJhZG8gJXMgeSBsb3MgJWQgVVVJRHMgc2lndWllbnRlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiVkIFVVSURzIGdlbmVyYWRvczpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICJPcGVyYWNpw7NuIG5vIHbDoWxpZGEgJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIk7Dum1lcm8gaW5jb3JyZWN0bzogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNhbGxpbmcgdXVpZGQgZGFlbW9uICglcyk6ICVzXG4iCittc2dzdHIgIkVycm9yIGFsIGludm9jYXIgYWwgZGVtb25pbyB1dWlkZCAoJXMpOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiJXMgeSBlbCBVVUlEIHNpZ3VpZW50ZVxuIgorbXNnc3RyWzFdICIlcyB5IGxvcyAlZCBVVUlEcyBzaWd1aWVudGVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDgKK21zZ2lkICJMaXN0IG9mIFVVSUQnczpcbiIKK21zZ3N0ciAiTGlzdGEgZGUgVVVJRHM6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiTG9uZ2l0dWQgZGUgcmVzcHVlc3RhIGRlbCBzZXJ2aWRvciBpbmVzcGVyYWRhICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTm8gc2UgaGEgcG9kaWRvIG1hdGFyIHV1aWRkIHF1ZSBjb3JyZSBjb24gcGlkICVkOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJTZSBoYSBtYXRhZG8gdXVpZGQgcXVlIGNvcnLDrWEgY29uIHBpZCAlZFxuIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIk1vZG8gZGUgZW1wbGVvOiAlcyBbLXJdIFstdF1cbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiMgVmFjaWFkbyBleHRlbnNvOlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICIjXHROw7ptPSVsbHUsIFRhbWHDsW89JWxsdSwgQ3Vyc29yPSVsbHUsIE9yZGVuYWRvPSVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1vZG8gZGUgZW1wbGVvOiAlcyBbLWQgYmFuZGVyYXNfZGVfZGVwdXJhY2nDs25dIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSAiCisiZGlzcG9zaXRpdm8gW251ZXZvLXRhbWHDsW9dXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJFeHRlbmRpZW5kbyBsYSB0YWJsYSBkZSBub2Rvcy1pIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIlJldWJpY2FuZG8gYmxvcXVlcyIKKworIzogcmVzaXplL21haW4uYzo3OAorbXNnaWQgIlNjYW5uaW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJSZXZpc2FuZG8gbGEgdGFibGEgZGUgbm9kb3MtaSIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIkFjdHVhbGl6YW5kbyBsYXMgcmVmZXJlbmNpYXMgYSBsb3Mgbm9kb3MtaSIKKworIzogcmVzaXplL21haW4uYzo4NAorbXNnaWQgIk1vdmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTW92aWVuZG8gbGEgdGFibGEgZGUgbm9kb3MtaSIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAiwr/CocK/UGFzbyBkZXNjb25vY2lkbz8hPyIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIlNlIGNvbWllbnphIGVsIHBhc28gJWQgKG3DoXggPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJObyBlc3TDoSB0b3RhbG1lbnRlIHByb2JhZGEgbGEgZnVuY2nDs24gZGUgY2FtYmlvIGRlIHRhbWHDsW8gZGUgbG9zIHNpc3RlbWFzIGRlICIKKyJmaWNoZXJvcyDCq2JpZ2FsbG9jwrsuIMKhUHJvc2lnYVxuIgorImJham8gc3UgY3VlbnRhIHkgcmllc2dvISAgVXRpbGljZSBsYSBvcGNpw7NuIMKrZm9yY2XCuyBzaSBkZXNlYSBzZWd1aXIgYWRlbGFudGUgIgorImRlIHRvZG9zIG1vZG9zLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICJtaWVudHJhcyBzZSBhYnLDrWEgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGVzdGFiYSBvYnRlbmllbmRvIGluZm9ybWFjacOzbiBkZWwgZXN0YWRvIGRlICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBvciBmYXZvciBlamVjdXRlIGFudGVzICdlMmZzY2sgLWYgJXMnLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIlRhbWHDsW8gbcOtbmltbyBlc3RpbWFkbyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvczogJWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG5ldyBzaXplOiAlc1xuIgorbXNnc3RyICJFbCBudWV2byB0YW1hw7FvIG5vIGVzIHbDoWxpZG86ICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIkVsIG51ZXZvIHRhbWHDsW8gZXMgZGVtYXNpYWRvIGdyYW5kZSBwYXJhIHBvZGVyIGV4cHJlc2Fyc2UgZW4gMzIgYml0c1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiRWwgbnVldm8gdGFtYcOxbyBlcyBtZW5vciBxdWUgZWwgbcOtbmltbyAoJWxsdSlcbiIKKworIzogcmVzaXplL21haW4uYzo1MzQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBsZW5ndGgiCittc2dzdHIgIkxvbmdpdHVkIGRlIMKrc3RyaWRlwrsgbm8gdsOhbGlkYSIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxhIHBhcnRpY2nDs24gY29udGVuaWRhIChvIGVsIGRpc3Bvc2l0aXZvKSBzw7NsbyB0aWVuZSAlbGx1ICglZGspIGJsb3F1ZXMuXG4iCisiWSBzZSBoYSBzb2xpY2l0YWRvIHVuIG51ZXZvIHRhbWHDsW8gZGUgJWxsdSBibG9xdWVzLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIiCisiTGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGN1b3RhIHPDs2xvIHB1ZWRlIGNhbWJpYXJzZSBjdWFuZG8gZWwgc2lzdGVtYSBkZSAiCisiZmljaGVyb3Mgbm8gZXN0w6EgbW9udGFkby5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgeWEgdGllbmUgJWxsdSBibG9xdWVzICglZGspIGRlIGxvbmdpdHVkLiDCoU5vIGhheSBxdWUgIgorImhhY2VyIG5hZGEhXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDY0LWJpdC5cbiIKK21zZ3N0ciAiRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB5YSB0aWVuZSB1biBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDMyLWJpdC5cbiIKK21zZ3N0ciAiRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB5YSB0aWVuZSB1biBmaWNoZXJvIGRlIHRyYW5zYWNjaW9uZXMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiU2UgcG9uZSBsYSBob3JhIGRlIGxhIMO6bHRpbWEgcmV2aXNpw7NuIGFsIHNpc3RlbWEgZGUgZmljaGVyb3MgYSAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byAzMi1iaXQuXG4iCittc2dzdHIgIlNlIHBvbmUgbGEgaG9yYSBkZSBsYSDDumx0aW1hIHJldmlzacOzbiBhbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIiIKKyJDYW1iaWFuZG8gZWwgdGFtYcOxbyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBlbiAlcyBhICVsbHUgKCVkaykgYmxvcXVlcy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIG1vZGlmaWNhciBlbCB0YW1hw7FvICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIlBvciBmYXZvciwgZWplY3V0ZSAnZTJmc2NrIC1meSAlcycgcGFyYSBhcnJlZ2xhciBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zXG4iCisiZGVzcHXDqXMgZGUgbGEgb3BlcmFjacOzbiBkZSBjYW1iaW8gZGUgdGFtYcOxbyBpbnRlcnJ1bXBpZGEuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBvbiAlcyBpcyBub3cgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZW4gJXMgdGllbmUgYWhvcmEgJWxsdSBibG9xdWVzIChkZSAlZGspLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSB0cnVuY2FyICVzIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAiZWwgbsO6Y2xlbyBubyBwZXJtaXRlIGNhbWJpYXIgZWwgdGFtYcOxbyBlbiBsw61uZWEgY29uIHNwYXJzZV9zdXBlcjIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiIgorIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZGUgJXMgZXN0w6EgbW9udGFkbyBlbiAlczsgaGFjZSBmYWx0YSBjYW1iaWFyIGVsICIKKyJ0YW1hw7FvIGVuIGzDrW5lYVxuIgorCisjOiByZXNpemUvb25saW5lLmM6OTAKK21zZ2lkICJPbi1saW5lIHNocmlua2luZyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJMYSByZWR1Y2Npw7NuIGRlIHRhbWHDsW8gZW4gbMOtbmVhIG5vIGVzdMOhIGltcGxlbWVudGFkYSIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIkVsIHNpc3RlbWEgZGUgZmljaGVyb3Mgbm8gcGVybWl0ZSBjYW1iaWFyIGVsIHRhbWHDsW8gZW4gbMOtbmVhIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAiTm8gc2UgaGFuIHJlc2VydmFkbyBzdWZpY2llbnRlcyBibG9xdWVzIGdkdCBwYXJhIGNhbWJpYXIgZWwgdGFtYcOxbyIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiIgorIkVsIG7DumNsZW8gbm8gcGVybWl0ZSBjYW1iaWFyIGVsIHRhbWHDsW8gZGUgdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyB0YW4gZ3JhbmRlIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgIm1pZW50cmFzIHNlIGludGVudGFiYSBhYnJpciBlbCBwdW50byBkZSBtb250YWplICVzIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiU2UgaGEgc29saWNpdGFkbyBlbCBpbnRlcmZheiBkZSBjYW1iaW8gZGUgdGFtYcOxbyBhbnRpZ3VvLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiUGVybWlzbyBwYXJhIGNhbWJpYXIgZWwgdGFtYcOxbyBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBkZW5lZ2FkbyIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiTWllbnRyYXMgc2UgY29tcHJvYmFiYSBlbCBzb3BvcnRlIGRlIGNhbWJpbyBkZSB0YW1hw7FvIGVuIGzDrW5lYSIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiRWwgbsO6Y2xlbyBubyBwZXJtaXRlIGNhbWJpYXIgZWwgdGFtYcOxbyBlbiBsw61uZWEiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiUmVhbGl6YW5kbyBjYW1iaW8gZGUgdGFtYcOxbyBlbiBsw61uZWEgZGUgJXMgYSAlbGx1ICglZGspIGJsb3F1ZXMuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJtaWVudHJhcyBzZSBpbnRlbnRhYmEgZXh0ZW5kZXIgZWwgw7psdGltbyBncnVwbyIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gYWRkIGdyb3VwICMlZCIKK21zZ3N0ciAibWllbnRyYXMgc2UgaW50ZW50YWJhIGHDsWFkaXIgZWwgZ3J1cG8gIyVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiRWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBkZSAlcyBlc3TDoSBtb250YWRvIGVuICVzLCBwZXJvIGVsIGNhbWJpbyBkZSB0YW1hw7FvIGVuICIKKyJsw61uZWEgbm8gZXN0w6EgaW1wbGVtZW50YWRvIGVuIGVzdGUgc2lzdGVtYS5cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICJsb3Mgbm9kb3MtaSAoJWxsdSkgZGViZW4gc2VyIG1lbm9zIGRlICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAiYmxvcXVlcyByZXNlcnZhZG9zIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgImJsb3F1ZXMgZGUgbWV0YWRhdG9zIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibnVldm9zIGJsb3F1ZXMgZGUgbWV0YWRhdG9zIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0MAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBObyBzYiBpbiBsYXN0IHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorIsKhTnVuY2EgZGViZXLDrWEgc3VjZWRlciEgIMK/Tm8gaGF5IG5pbmfDum4gc2IgZW4gZWwgw7psdGltbyBiZyBzdXBlcl9zcGFyc2U/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQ1Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIFVuZXhwZWN0ZWQgb2xkX2Rlc2MgaW4gc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICLCoU51bmNhIGRlYmVyw61hIHN1Y2VkZXIhICDCv29sZF9kZXNjIGluZXNwZXJhZGEgZW4gZWwgYmcgc3VwZXJfc3BhcnNlP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjYxOAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW46IHJlc2l6ZSBpbm9kZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisiRXN0byBudW5jYSBkZWJlcsOtYSBzdWNlZGVyOiDCoVNlIGNhbWJpYSBlbCB0YW1hw7FvIGRlbCBub2RvLWkgY29ycnVwdG8hXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiQmlibGlvdGVjYSBFWFQyRlMgdmVyc2nDs24gMS40Mi4xMiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBleHQyX2ZpbHN5cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBiYWRibG9ja3NfbGlzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBiYWRibG9ja3NfaXRlcmF0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gcGFyYSBsYSBlc3RydWN0dXJhIGlub2RlX3NjYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBpb19jaGFubmVsIHVuaXgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBpb19tYW5hZ2VyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJsb2NrX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gcGFyYSBsYSBlc3RydWN0dXJhIGlub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBnZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB0ZXN0IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byBwYXJhIGxhIGVzdHJ1Y3R1cmEgaW9fY2hhbm5lbCBkZSB0ZXN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGRpcmVjdG9yeSBibG9jayBsaXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBkZSBsaXN0YSBkZSBibG9xdWUgZGUgZGlyZWN0b3JpbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byBwYXJhIGxhIGVzdHJ1Y3R1cmEgaWNvdW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBpb19jaGFubmVsIFBvd2VycXVlc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0MiBmaWxlIHN0cnVjdHVyZSIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gcGFyYSBsYSBlc3RydWN0dXJhIGRlIGZpY2hlcm9zIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgY2FiZWNlcmEgZGUgaW1hZ2VuIEV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBpb19jaGFubmVsIGRlIG5vZG8taSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgZWwgbWFuZWphZG9yIGRlIMKrZXh0ZW50wrsgZXh0NCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gZW4gZWwgc3VwZXJibG9xdWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIlJldmlzacOzbiBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBkZW1hc2lhZG8gYWx0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIkludGVudG8gZGUgZXNjcmliaXIgZW4gdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyBkZSBzb2xvIGxlY3R1cmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIk5vIHNlIHB1ZWRlbiBsZWVyIGxvcyBkZXNjcmlwdG9yZXMgZGUgZ3J1cG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJObyBzZSBwdWVkZW4gZXNjcmliaXIgbG9zIGRlc2NyaXB0b3JlcyBkZSBncnVwbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiIgorIkRlc2NyaXB0b3IgZGUgZ3J1cG8gY29ycnVwdG86IGJsb3F1ZSBpbmNvcnJlY3RvIHBhcmEgZWwgbWFwYSBkZSBiaXRzIGRlICIKKyJibG9xdWVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICIiCisiRGVzY3JpcHRvciBkZSBncnVwbyBjb3JydXB0bzogYmxvcXVlIGluY29ycmVjdG8gcGFyYSBlbCBtYXBhIGRlIGJpdHMgZGUgIgorIm5vZG9zLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNworbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorIkRlc2NyaXB0b3IgZGUgZ3J1cG8gY29ycnVwdG86IGJsb3F1ZSBpbmNvcnJlY3RvIHBhcmEgbGEgdGFibGEgZGUgbm9kb3MtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gZXNjcmliaXIgdW4gbWFwYSBkZSBiaXRzIGRlIG5vZG9zLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gbGVlciB1biBtYXBhIGRlIGJpdHMgZGUgbm9kb3MtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIk5vIHNlIGhhIHBvZGlkbyBlc2NyaWJpciB1biBtYXBhIGRlIGJpdHMgZGUgYmxvcXVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDEKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gbGVlciB1biBtYXBhIGRlIGJpdHMgZGUgYmxvcXVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTm8gc2UgaGEgcG9kaWRvIGVzY3JpYmlyIHVuYSB0YWJsYSBkZSBub2Rvcy1pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDMKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gbGVlciB1bmEgdGFibGEgZGUgbm9kb3MtaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gbGVlciBlbCBzaWd1aWVudGUgbm9kby1pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgdGllbmUgdW4gdGFtYcOxbyBkZSBibG9xdWUgaW5lc3BlcmFkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJEaXJlY3RvcmlvIEVYVDIgY29ycnVwdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAiIgorIkVsIGludGVudG8gZGUgbGVlciB1biBibG9xdWUgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MgcmVzdWx0w7MgZW4gdW5hIGxlY3R1cmEgIgorImNvcnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIiIKKyJFbCBpbnRlbnRvIGRlIGVzY3JpYmlyIHVuIGJsb3F1ZSBlbiBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIHJlc3VsdMOzIGVuIHVuYSAiCisiZXNjcml0dXJhIGNvcnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIk5vIGhheSBlc3BhY2lvIGxpYnJlIGVuIGVsIGRpcmVjdG9yaW8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MAorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJObyBlc3TDoSBjYXJnYWRvIGVsIG1hcGEgZGUgYml0cyBkZSBub2Rvcy1pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiTm8gZXN0w6EgY2FyZ2FkbyBlbCBtYXBhIGRlIGJpdHMgZGUgYmxvcXVlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIk7Dum1lcm8gaW52w6FsaWRvIGRlIG5vZG8taSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIk7Dum1lcm8gaW52w6FsaWRvIGRlIGJsb3F1ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgIkVycm9yIGludGVybm8gZW4gZXh0MmZzX2V4cGFuZF9kaXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorIk5vIGhheSBzdWZpY2llbnRlIGVzcGFjaW8gcGFyYSBjb25zdHJ1aXIgZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBwcm9wdWVzdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIlNlIGhhIHBhc2FkbyB1biBuw7ptZXJvIGRlIGJsb3F1ZSBubyB2w6FsaWRvIGEgZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTcKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKyJTZSBoYSBwYXNhZG8gdW4gbsO6bWVybyBkZSBibG9xdWUgbm8gdsOhbGlkbyBhIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICJTZSBoYSBwYXNhZG8gdW4gbsO6bWVybyBkZSBibG9xdWUgbm8gdsOhbGlkbyBhIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiU2UgaGEgcGFzYWRvIHVuIG7Dum1lcm8gZGUgbm9kby1pIG5vIHbDoWxpZG8gYSBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MAorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiIgorIlNlIGhhIHBhc2FkbyB1biBuw7ptZXJvIGRlIG5vZG8taSBubyB2w6FsaWRvIGEgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIlNlIGhhIHBhc2FkbyB1biBuw7ptZXJvIGRlIG5vZG8taSBubyB2w6FsaWRvIGEgZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKyJTZSBoYSBpbnRlbnRhZG8gZW1wdWphciBlbCBmaW5hbCBkZWwgbWFwYSBkZSBiaXRzIGRlIGJsb3F1ZXMgbcOhcyBhbGzDoSBkZWwgIgorImZpbmFsIHJlYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorIlNlIGhhIGludGVudGFkbyBlbXB1amFyIGVsIGZpbmFsIGRlbCBtYXBhIGRlIGJpdHMgZGUgbm9kb3MtaSBtw6FzIGFsbMOhIGRlbCAiCisiZmluYWwgcmVhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiU2UgaGEgZW5jb250cmFkbyB1biBibG9xdWUgaW5kaXJlY3RvIG5vIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJTZSBoYSBlbmNvbnRyYWRvIHVuIGJsb3F1ZSBkb2JsZW1lbnRlIGluZGlyZWN0byBubyB2w6FsaWRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiU2UgaGEgZW5jb250cmFkbyB1biBibG9xdWUgdHJpcGxlbWVudGUgaW5kaXJlY3RvIG5vIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiTG9zIG1hcGFzIGRlIGJpdHMgZGUgYmxvcXVlcyBubyBzb24gaWd1YWxlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJMb3MgbWFwYXMgZGUgYml0cyBkZSBub2Rvcy1pIG5vIHNvbiBpZ3VhbGVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiTm9tYnJlIGRlIGRpc3Bvc2l0aXZvIG5vIHbDoWxpZG8gbyBtYWwgZm9ybWFkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJBbCBncnVwbyBkZSBibG9xdWVzIGxlIGZhbHRhIGxhIHRhYmxhIGRlIG5vZG9zLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MQorbXNnaWQgIlRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiRWwgc3VwZXJibG9xdWUgZXh0MiBlc3TDoSBjb3JydXB0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcyCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBkZSBiaXQgZ2Vuw6lyaWNvIHBhc2FkbyBhIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIG5vIGVzIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBkZSBiaXQgZ2Vuw6lyaWNvIHBhc2FkbyBhIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAgbm8gZXMgdsOhbGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiRWwgbsO6bWVybyBkZSBiaXQgZ2Vuw6lyaWNvIHBhc2FkbyBhIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIG5vIGVzIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiU2UgaGFuIGVuY29udHJhZG8gZGVtYXNpYWRvcyBlbmxhY2VzIHNpbWLDs2xpY29zLiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkxhIGZ1bmNpw7NuIGRlIHJldHJvbGxhbWFkYSBubyBtYW5lamFyw6EgZXN0ZSBjYXNvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzcKK21zZ2lkICJUaGUgaW5vZGUgaXMgZnJvbSBhIGJhZCBibG9jayBpbiB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIkVsIG5vZG8taSBwcm9jZWRlIGRlIHVuIGJsb3F1ZSBpbmNvcnJlY3RvIGVuIGxhIHRhYmxhIGRlIG5vZG9zLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OAorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykiCittc2dzdHIgIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgdGllbmUgY2FyYWN0ZXLDrXN0aWNhKHMpIG5vIHNvcG9ydGFkYShzKSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIHRpZW5lIGNhcmFjdGVyw61zdGljYShzKSBubyBzb3BvcnRhZGEocykgZGUgc29sbyAiCisibGVjdHVyYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJGYWxsbyBkZSBiw7pzcXVlZGEgZW4gY2FuYWwgRVMgYWwgbGVlciBvIGVzY3JpYmlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIkZhbGxvIGVuIGxhIHJlc2VydmEgZGUgbWVtb3JpYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICJFbCBhcmd1bWVudG8gcGFzYWRvIGEgbGEgYmlibGlvdGVjYSBleHQyIG5vIGVzIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIk5vIHNlIGhhIHBvZGlkbyByZXNlcnZhciBibG9xdWUgZW4gZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgaW5vZGUgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gcmVzZXJ2YXIgbm9kby1pIGVuIGVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIkVsIG5vZG8taSBubyBlcyB1biBkaXJlY3RvcmlvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICJEZW1hc2lhZGFzIHJlZmVyZW5jaWFzIGVuIGxhIHRhYmxhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiZXh0Ml9sb29rdXAgbm8gaGEgZW5jb250cmFkbyBlbCBmaWNoZXJvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICJGaWNoZXJvIGFiaWVydG8gc29sbyBwYXJhIGxlY3R1cmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiQmxvcXVlIGRlIGRpcmVjdG9yaW8gbm8gZW5jb250cmFkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkVsIGRpcmVjdG9yaW8geWEgZXhpc3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiRnVuY2nDs24gZGUgYmlibGlvdGVjYSBleHQyIG5vIGltcGxlbWVudGFkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICJFbCB1c3VhcmlvIGhhIHNvbGljaXRhZG8gY2FuY2VsYXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJGaWNoZXJvIGRlbWFzaWFkbyBncmFuZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiIgorIkVsIGRpc3Bvc2l0aXZvIGRlIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBzdW1pbmlzdHJhZG8gbm8gZXMgdW4gZGlzcG9zaXRpdm8gIgorImRlIGJsb3F1ZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIk5vIHNlIGVuY29udHLDsyBlbCBzdXBlcmJsb3F1ZSBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIkVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBkZWJlIHRlbmVyIGFsIG1lbm9zIDEwMjQgYmxvcXVlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJWZXJzacOzbiBkZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzIG5vIHNvcG9ydGFkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJFcnJvciBtaWVudHJhcyBzZSBpbnRlbnRhYmEgY2FyZ2FyIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyBleHRlcm5vIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiTm8gc2UgZW5jb250csOzIGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMAorbXNnaWQgIkRpcmVjdG9yeSBoYXNoIHVuc3VwcG9ydGVkIgorbXNnc3RyICLCq0hhc2jCuyBkZSBkaXJlY3RvcmlvIG5vIHNvcG9ydGFkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiRWwgbsO6bWVybyBkZSBibG9xdWUgZGUgYXRyaWJ1dG8gZXh0ZW5kaWRvIG5vIGVzIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiIgorIk5vIHNlIGhhIHBvZGlkbyBjcmVhciBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGNvbiBlbCBuw7ptZXJvIGRlIG5vZG9zLWkgIgorInNvbGljaXRhZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIkxhIGluc3RhbnTDoW5lYSBFMmltYWdlIG5vIGVzdMOhIGVuIHVzbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICJEZW1hc2lhZG9zIGJsb3F1ZXMgZGUgZGVzY3JpcHRvcmVzIGRlIGdydXBvIHJlc2VydmFkb3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiRWwgbm9kby1pIGRlIGNhbWJpbyBkZSB0YW1hw7FvIGVzdMOhIGNvcnJ1cHRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJTZSBoYSBpbnRlbnRhZG8gcG9uZXIgdW4gYm1hcCBkZSBibG9xdWUgY29uIGJsb3F1ZSBpbmRpcmVjdG8gcGVyZGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCOiBCaWVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICJUREI6IEJhc2UgZGUgZGF0b3MgY29ycnVwdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJUREI6IEVycm9yIGRlIEVTIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IEVycm9yIGRlIGJsb3F1ZW8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTEKK21zZ2lkICJUREI6IE91dCBvZiBtZW1vcnkiCittc2dzdHIgIlREQjogTm8gaGF5IG3DoXMgbWVtb3JpYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCOiBZYSBleGlzdGUgZWwgcmVnaXN0cm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQjogWWEgZXhpc3RlIGVsIGJsb3F1ZW8gZW4gb3RyYXMgbGxhdmVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBQYXLDoW1ldHJvIG5vIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCOiBObyBleGlzdGUgZWwgcmVnaXN0cm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjogTm8gZXN0w6EgcGVybWl0aWRvIGVzY3JpYmlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICJMYSBsaXN0YSBkZSBibG9xdWVzIGRlbCBkaXJlY3RvcmlvIGV4dDJmcyBlc3TDoSB2YWPDrWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICIiCisiSW50ZW50byBkZSBtb2RpZmljYXIgdW5hIGFzb2NpYWNpw7NuIGRlIGJsb3F1ZXMgbWVkaWFudGUgdW4gaXRlcmFkb3IgZGUgIgorImJsb3F1ZXMgZGUgc29sbyBsZWN0dXJhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byBwYXJhIGxhIHJ1dGEgwqtleHRlbnTCuyBleHQ0IGd1YXJkYWRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgZ2VuZXJpYyBiaXRtYXAiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgZWwgYml0bWFwIGdlbsOpcmljbyBkZSA2NCBiaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byBwYXJhIGVsIGJpdG1hcCBkZSBibG9xdWVzIGRlIDY0IGJpdHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgZWwgYml0bWFwIGRlIG5vZG9zLWkgZGUgNjQtYml0cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIC0tLSBSRVNFUlZBRE9fMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byAtLS0gUkVTRVJWQURPXzE0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gLS0tIFJFU0VSVkFET18xNSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIC0tLSBSRVNFUlZBRE9fMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJOw7ptZXJvIG3DoWdpY28gaW5jb3JyZWN0byAtLS0gUkVTRVJWQURPXzE3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiTsO6bWVybyBtw6FnaWNvIGluY29ycmVjdG8gLS0tIFJFU0VSVkFET18xOCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIC0tLSBSRVNFUlZBRE9fMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIkNhYmVjZXJhIGRlIMKrZXh0ZW50wrsgY29ycnVwdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAiw41uZGljZSBkZSDCq2V4dGVudMK7IGNvcnJ1cHRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIsKrRXh0ZW50wrsgY29ycnVwdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIk5vIHF1ZWRhIGVzcGFjaW8gbGlicmUgZWwgZWwgbWFwYSBkZSDCq2V4dGVudMK7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgIkVsIG5vZG8taSBubyB1dGlsaXphIMKrZXh0ZW50c8K7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiTm8gaGF5IMKrZXh0ZW50wrsgJ25leHQnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgIk5vIGhheSDCq2V4dGVudMK7ICdwcmV2aW91cyciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzcKK21zZ2lkICJObyAndXAnIGV4dGVudCIKK21zZ3N0ciAiTm8gaGF5IMKrZXh0ZW50wrsgJ3VwJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIk5vIGhheSDCq2V4dGVudMK7ICdkb3duJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiTm8gaGF5IG5vZG8gYWN0dWFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQwCittc2dpZCAiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJMYSBvcGVyYWNpw7NuIGV4dDJmcyBubyBlc3TDoSBpbXBsZW1lbnRhZGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiTm8gaGF5IHNpdGlvIHBhcmEgaW5zZXJ0YXIgwqtleHRlbnTCuyBlbiBlbCBub2RvLWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIkxhIGRpdmlzacOzbiBkYXLDrWEgbHVnYXIgYSB1biBub2RvIHZhY8OtbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MworbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIk5vIHNlIGVuY29udHLDsyBlbCDCq2V4dGVudMK7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIkxhIG9wZXJhY2nDs24gbm8gZXN0w6EgaW1wbGVtZW50YWRhIHBhcmEgbm9kb3MtaSBxdWUgY29udGllbmVuIMKrZXh0ZW50c8K7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICJMYSBsb25naXR1ZCBkZWwgwqtleHRlbnTCuyBubyBlcyB2w6FsaWRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiRWwgY2FuYWwgZGUgRS9TIG5vIGFkbWl0ZSBuw7ptZXJvcyBkZSBibG9xdWUgZGUgNjQgYml0cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyJObyBzZSBoYSBwb2RpZG8gY29tcHJvYmFyIHNpIGVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXN0w6EgbW9udGFkbywgcG9ycXVlICIKKyJmYWx0YSBlbCBmaWNoZXJvIG10YWIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIiIKKyJFbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGVzIGRlbWFzaWFkbyBncmFuZGUgcGFyYSB1dGlsaXphciBtYXBhcyBkZSBiaXRzICIKKyJhbnRpZ3VvcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIk1NUDogbsO6bWVybyBtw6FnaWNvIG5vIHbDoWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTAKK21zZ2lkICJNTVA6IGRldmljZSBjdXJyZW50bHkgYWN0aXZlIgorbXNnc3RyICJNTVA6IGRpc3Bvc2l0aXZvIGFjdHVhbG1lbnRlIGFjdGl2byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDogZnNjayBlamVjdXTDoW5kb3NlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUyCittc2dpZCAiTU1QOiBibG9jayBudW1iZXIgYmV5b25kIGZpbGVzeXN0ZW0gcmFuZ2UiCittc2dzdHIgIk1NUDogbsO6bWVybyBkZSBibG9xdWUgZnVlcmEgZGVsIGFsY2FuY2UgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIk1NUDogY3Vyc2FuZG8gb3BlcmFjacOzbiBkZXNjb25vY2lkYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorbXNnaWQgIk1NUDogZmlsZXN5c3RlbSBzdGlsbCBpbiB1c2UiCittc2dzdHIgIk1NUDogZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyB0b2RhdsOtYSBlc3TDoSBlbiB1c28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIk1NUDogbm8gc2UgaGEgcG9kaWRvIGFicmlyIGNvbiBPX0RJUkVDVCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NgorbXNnaWQgIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCittc2dzdHIgIkVsIHRhbWHDsW8gZGVsIGRlc2NyaXB0b3IgZGVsIGdydXBvIGRlIGJsb3F1ZXMgZXMgaW5jb3JyZWN0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJFbCDCq2NoZWNrc3VtwrsgZGVsIG5vZG8taSBubyBjdWFkcmEgY29uIGVsIG5vZG8taSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiIKKyJFbCDCq2NoZWNrc3VtwrsgZGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kby1pIG5vIGN1YWRyYSBjb24gZWwgbWFwYSBkZSBiaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU5Cittc2dpZCAiRXh0ZW50IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayIKK21zZ3N0ciAiRWwgwqtjaGVja3N1bcK7IGRlbCBibG9xdWUgwqtleHRlbnTCuyBubyBjdWFkcmEgY29uIGVsIGJsb3F1ZSDCq2V4dGVudMK7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYwCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGRvZXMgbm90IGhhdmUgc3BhY2UgZm9yIGNoZWNrc3VtIgorbXNnc3RyICJFbCBibG9xdWUgZGUgZGlyZWN0b3JpbyBubyB0aWVuZSBlc3BhY2lvIHBhcmEgZWwgwqtjaGVja3N1bcK7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAiIgorIkVsIMKrY2hlY2tzdW3CuyBkZWwgYmxvcXVlIGRlIGRpcmVjdG9yaW8gbm8gY3VhZHJhIGNvbiBlbCBibG9xdWUgZGUgZGlyZWN0b3JpbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKK21zZ3N0ciAiRWwgwqtjaGVja3N1bcK7IGRlbCBibG9xdWUgZGUgYXRyaWJ1dG8gZXh0ZW5kaWRvIG5vIGN1YWRyYSBjb24gZWwgYmxvcXVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYzCittc2dpZCAiU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrIgorbXNnc3RyICJFbCDCq2NoZWNrc3VtwrsgZGVsIHN1cGVyYmxvcXVlIG5vIGN1YWRyYSBjb24gZWwgc3VwZXJibG9xdWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiQWxnb3JpdG1vIGRlIMKrY2hlY2tzdW3CuyBkZXNjb25vY2lkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NQorbXNnaWQgIk1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2siCittc2dzdHIgIkVsIMKrY2hlY2tzdW3CuyBkZWwgYmxvcXVlIE1NUCBubyBjdWFkcmEgY29uIGVsIGJsb3F1ZSBNTVAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkVsIGZpY2hlcm8geWEgZXhpc3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiIKKyJFbCDCq2NoZWNrc3VtwrsgZGVsIG1hcGEgZGUgYml0cyBkZWwgbm9kby1pIG5vIGN1YWRyYSBjb24gZWwgbWFwYSBkZSBiaXRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY4Cittc2dpZCAiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIG5hbWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzAKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiRWwgwqtjaGVja3N1bcK7IGRlbCBibG9xdWUgZGUgYXRyaWJ1dG8gZXh0ZW5kaWRvIG5vIGN1YWRyYSBjb24gZWwgYmxvcXVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJFbCBuw7ptZXJvIGRlIGJsb3F1ZSBkZSBhdHJpYnV0byBleHRlbmRpZG8gbm8gZXMgdsOhbGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiYWF0cmlidXRvIGV4dGVuZGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NAorbXNnaWQgIkluc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBleHRlbmRlZCBhdHRyaWJ1dGUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorIywgZnV6enkKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIkVsIG5vZG8taSBubyB1dGlsaXphIMKrZXh0ZW50c8K7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc3Cittc2dpZCAiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorIywgZnV6enkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJObyBxdWVkYSBlc3BhY2lvIGxpYnJlIGVsIGVsIG1hcGEgZGUgwqtleHRlbnTCuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIk7Dum1lcm8gbcOhZ2ljbyBpbmNvcnJlY3RvIHBhcmEgbGEgZXN0cnVjdHVyYSBkZSBmaWNoZXJvcyBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCisjLCBmdXp6eQorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0IgorbXNnc3RyICJFbCBub2RvLWkgZGUgY2FtYmlvIGRlIHRhbWHDsW8gZXN0w6EgY29ycnVwdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIlBlcm1pc28gcGFyYSBjYW1iaWFyIGVsIHRhbWHDsW8gZGVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZGVuZWdhZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODUKKyMsIGZ1enp5Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICJFbCBub2RvLWkgZGUgY2FtYmlvIGRlIHRhbWHDsW8gZXN0w6EgY29ycnVwdG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJFbCBzdXBlcmJsb3F1ZSBleHQyIGVzdMOhIGNvcnJ1cHRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiRWwgbm9kby1pIGRlIGNhbWJpbyBkZSB0YW1hw7FvIGVzdMOhIGNvcnJ1cHRvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiVmVyc2nDs24gZGUgwqtwcm9maWxlwrsgMC4wIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEyCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfbm9kZSIKK21zZ3N0ciAiVmFsb3IgbcOhZ2ljbyBpbmNvcnJlY3RvIGVuIHByb2ZpbGVfbm9kZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlNlY2Npw7NuIMKrcHJvZmlsZcK7IG5vIGVuY29udHJhZGEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTQKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiUmVsYWNpw7NuIMKrcHJvZmlsZcK7IG5vIGVuY29udHJhZGEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAiSW50ZW50byBkZSBhw7FhZGlyIHVuYSByZWxhY2nDs24gYSB1biBub2RvIHF1ZSBubyBlcyBzZWNjacOzbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiVW5hIGNhYmVjZXJhIGRlIHNlY2Npw7NuIGRlIMKrcHJvZmlsZcK7IHRpZW5lIHVuIHZhbG9yIG5vIG51bG8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTcKK21zZ2lkICJCYWQgbGlua2VkIGxpc3QgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJMaXN0YSBlbmxhemFkYSBpbmNvcnJlY3RhIGVuIGxhcyBlc3RydWN0dXJhcyDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIk5pdmVsIGRlIGdydXBvIGluY29ycmVjdG8gZW4gbGFzIGVzdHJ1Y3R1cmFzIMKrcHJvZmlsZcK7IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE5Cittc2dpZCAiQmFkIHBhcmVudCBwb2ludGVyIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiUHVudGVybyBwYWRyZSBpbmNvcnJlY3RvIGVuIGxhcyBlc3RydWN0dXJhcyDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICJWYWxvciBtw6FnaWNvIGluY29ycmVjdG8gZW4gZWwgaXRlcmFkb3Igwqtwcm9maWxlwrsiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gcG9uZXIgZWwgdmFsb3IgZW4gZWwgbm9kbyBkZSBzZWNjacOzbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHByb2ZpbGUgbGlicmFyeSIKK21zZ3N0ciAiU2UgaGEgcGFzYWRvIHVuIGFyZ3VtZW50byBubyB2w6FsaWRvIGEgbGEgYmlibGlvdGVjYSDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICJJbnRlbnRvIGRlIG1vZGlmaWNhciDCq3Byb2ZpbGXCuyBkZSBzb2xvIGxlY3R1cmEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIkxhIGNhYmVjZXJhIGRlIHNlY2Npw7NuIMKrcHJvZmlsZcK7IG5vIGVzdMOhIGVuIGVsIG5pdmVsIHN1cGVyaW9yIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI1Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCittc2dzdHIgIkVycm9yIGRlIHNpbnRheGlzIGVuIGxhIGNhYmVjZXJhIGRlIGxhIHNlY2Npw7NuIMKrcHJvZmlsZcK7IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI2Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCittc2dzdHIgIkVycm9yIGRlIHNpbnRheGlzIGVuIGxhIHJlbGFjacOzbiDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNworbXNnaWQgIkV4dHJhIGNsb3NpbmcgYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiU29icmEgdW5hIGxsYXZlIGRlIGNpZXJyZSBlbiDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOAorbXNnaWQgIk1pc3Npbmcgb3BlbiBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJGYWx0YSB1bmEgbGxhdmUgZGUgYXBlcnR1cmEgZW4gwqtwcm9maWxlwrsiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJWYWxvciBtw6FnaWNvIGluY29ycmVjdG8gZW4gcHJvZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJWYWxvciBtw6FnaWNvIGluY29ycmVjdG8gZW4gcHJvZmlsZV9zZWN0aW9uX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiTGEgaXRlcmFjacOzbiBwb3IgbGEgc2VjY2nDs24gZGUgbml2ZWwgc3VwZXJpb3Igbm8gZXN0w6EgaW1wbGVtZW50YWRhIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJFbCBvYmpldG8gcHJvZmlsZV9zZWN0aW9uIG5vIGVzIHbDoWxpZG8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICJObyBoYXkgbcOhcyBzZWNjaW9uZXMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzQKK21zZ2lkICJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK21zZ3N0ciAiRWwgY29uanVudG8gZGUgbm9tYnJlcyBwYXNhZG8gYSBsYSBydXRpbmEgZGUgY29uc3VsdGEgZXMgaW5jb3JyZWN0byIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICJObyBoYXkgbmluZ8O6biBmaWNoZXJvIMKrcHJvZmlsZcK7IGFiaWVydG8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIlZhbG9yIG3DoWdpY28gaW5jb3JyZWN0byBlbiBwcm9maWxlX2ZpbGVfdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICJObyBzZSBoYSBwb2RpZG8gYWJyaXIgZWwgZmljaGVybyDCq3Byb2ZpbGXCuyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkxhIHNlY2Npw7NuIHlhIGV4aXN0ZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAiVmFsb3IgbMOzZ2ljbyBubyB2w6FsaWRvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICJWYWxvciBlbnRlcm8gbm8gdsOhbGlkbyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICJWYWxvciBtw6FnaWNvIGluY29ycmVjdG8gZW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIG9uICVzIgorbXNnc3RyICJcdMO6bHRpbWEgZmVjaGEgZGUgbW9udGFqZSBkZSAlcyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIgorbXNnc3RyICJcdMO6bHRpbWEgZmVjaGEgZGUgbW9udGFqZSAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0Y3JlYXRlZCBvbiAlcyIKK21zZ3N0ciAiXHRmZWNoYSBkZSBjcmVhY2nDs24gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx0ZmVjaGEgZGUgw7psdGltYSBtb2RpZmljYWNpw7NuICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRm91bmQgYSAlcyBwYXJ0aXRpb24gdGFibGUgaW4gJXNcbiIKK21zZ3N0ciAiU2UgaGEgZW5jb250cmFkbyB1bmEgdGFibGEgZGUgcGFydGljaW9uZXMgJXMgZW4gJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIkVsIGZpY2hlcm8gJXMgbm8gZXhpc3RlIHkgbm8gc2UgaGEgZXNwZWNpZmljYWRvIG5pbmfDum4gdGFtYcOxby5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICJDcmVhbmRvIGVsIGZpY2hlcm8gb3JkaW5hcmlvICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiTm8gc2UgcHVlZGUgYWJyaXIgJXM6ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyJFbiBhcGFyaWVuY2lhLCBlbCBkaXNwb3NpdGl2byBubyBleGlzdGU7IMK/U2UgZXNwZWNpZmljw7MgY29ycmVjdGFtZW50ZT9cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBubyBlcyB1biBkaXNwb3NpdGl2byBlc3BlY2lhbCBkZSBibG9xdWVzLlxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAnJXMnXG4iCittc2dzdHIgIiVzIGNvbnRpZW5lIHVuIHNpc3RlbWEgZGUgZmljaGVyb3MgJXMgZXRpcXVldGFkbyAnJXMnXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGNvbnRpZW5lIHVuIHNpc3RlbWEgZGUgZmljaGVyb3MgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgY29udGllbmUgdW4gc2lzdGVtYSBkZSBmaWNoZXJvcyAlc1xuIgorCisjfiBtc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCisjfiBtc2dzdHIgIlBvciBmYXZvciBlamVjdXRlIGUyZnNjayBzb2JyZSBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zLlxuIgorCisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICJQYXLDoW1ldHJvIGRlIHRpcG8gZGUgY3VvdGEgbm8gdsOhbGlkbzogJXNcbiIKKworI34gbXNnaWQgIkBpICVpIGhhcyBAY2lvbiBmbGFnIHNldCBvbiBAZiB3aXRob3V0IEBjaW9uIHN1cHBvcnQuICAiCisjfiBtc2dzdHIgIiIKKyN+ICJlbCBAaSAlaSB0aWVuZSBsYSBiYW5kZXJhIGRlIEBjIHB1ZXN0YSBlbiBlbCBAZiBzaW4gcXVlIGxhIEBjIGVzdMOpICIKKyN+ICJpbXBsZW1lbnRhZGEuICAiCisKKyN+IG1zZ2lkICJAQSBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiQEEgZGUgQGEgQGIgJWIuICAiCisKKyN+IG1zZ2lkICIlczogd2FybmluZzogY29tcHJlc3Npb24gc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG4iCisjfiBtc2dzdHIgIiVzOiBhdGVuY2nDs246IGVsIHNvcG9ydGUgYSBsYSBjb21wcmVzacOzbiBlcyBleHBlcmltZW50YWwuXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IGUyZnNjayBub3QgY29tcGlsZWQgd2l0aCBIVFJFRSBzdXBwb3J0LFxuIgorI34gIlx0YnV0IGZpbGVzeXN0ZW0gJXMgaGFzIEhUUkVFIGRpcmVjdG9yaWVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IGUyZnNjayBubyBlc3TDoSBjb21waWxhZG8gY29uIHNvcG9ydGUgYSDDgVJCT0xFUy1ILFxuIgorI34gIlx0cGVybyBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zICVzIHRpZW5lIGRpcmVjdG9yaW9zIGNvbiDDgVJCT0xFUy1ILlxuIgorCisjfiBtc2dpZCAid2hpbGUgYWxsb2NhdGluZyB6ZXJvaXppbmcgYnVmZmVyIgorI34gbXNnc3RyICJtaWVudHJhcyBzZSByZXNlcnZhYmEgZWwgYsO6ZmVyIHJlbGxlbm8gY29uIGNlcm9zIgorCisjIEZJWE1FOiAldSBCRUZPUkUgdW51c2VkCisjfiBtc2dpZCAiLCB1bnVzZWQgaW5vZGVzICV1XG4iCisjfiBtc2dzdHIgIiwgJXUgbm9kb3MtaSBzaW4gdXNhclxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJGYWxsbyBtaWVudHJhcyBzZSBpbnRlbnRhYmFuIGxlZXIgbG9zIGRhdG9zIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9mZXRjaCAlc1xuIgorI34gbXNnc3RyICJGYWxsbyBlbiB0ZGJfZmV0Y2ggJXNcbiIKKworI34gbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBVVUlEIGRpZG4ndCBtYXRjaCBcbiIKKyN+IG1zZ3N0ciAiRWwgVVVJRCBkZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBubyBjdWFkcmFiYSBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfb3BlbiAlc1xuIgorI34gbXNnc3RyICJGYWxsbyBlbiB0ZGJfb3BlbiAlc1xuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIKKyN+IG1zZ3N0ciAiRmFsbG8gbWllbnRyYXMgc2UgaW50ZW50YWJhIGFicmlyICVzXG4iCisKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTZSBlamVjdXTDsyBkZSBudWV2byB1biB0cmFuc2FjY2nDs24gZGUgdGFtYcOxbyAlemQgZW4gbGEgcG9zaWNpw7NuICVsbHVcbiIKKworI34gbXNnaWQgIkZhaWxlZCB3cml0ZSAlc1xuIgorI34gbXNnc3RyICJGYWxsbyBkZSBlc2NyaXR1cmEgJXNcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBxdW90YSBvcHRpb25zIVxuIgorI34gbXNnc3RyICIiCisjfiAiwqFObyBzZSBwdWVkZSByZXNlcnZhciBtZW1vcmlhIHBhcmEgYW5hbGl6YXIgc2ludMOhY3RpY2FtZW50ZSBsYXMgb3BjaW9uZXMgIgorI34gImRlIGN1b3RhIVxuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZGIgZmlsZW5hbWVcbiIKKyN+IG1zZ3N0ciAiTm8gc2UgcHVlZGUgcmVzZXJ2YXIgbWVtb3JpYSBwYXJhIGVsIG5vbWJyZSBkZWwgZmljaGVybyB0ZGJcbiIKKworI34gbXNnaWQgIiIKKyN+ICJUbyB1bmRvIHRoZSB0dW5lMmZzIG9wZXJhdGlvbiBwbGVhc2UgcnVuIHRoZSBjb21tYW5kXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiUGFyYSBkZXNoYWNlciBsYSBvcGVyYWNpw7NuIHR1bmUyZnMsIGVqZWN1dGUgZWwgY29tYW5kb1xuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIiVzIGlzIGVudGlyZSBkZXZpY2UsIG5vdCBqdXN0IG9uZSBwYXJ0aXRpb24hXG4iCisjfiBtc2dzdHIgIsKhJXMgZXMgdG9kbyBlbCBkaXNwb3NpdGl2bywgbm8gc8OzbG8gdW5hIHBhcnRpY2nDs24hXG4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBpbmRleCBpbm9kZT4iCisjfiBtc2dzdHIgIjxFbCDDrW5kaWNlIEFDTCBkZWwgbm9kby1pPiIKKworI34gbXNnaWQgIjxUaGUgQUNMIGRhdGEgaW5vZGU+IgorI34gbXNnc3RyICI8TGEgaW5mb3JtYWNpw7NuIEFDTCBkZWwgbm9kby1pPiIKKworI34gbXNnaWQgIkBTIGRvZXNuJ3QgaGF2ZSBoYXNfQGogZmxhZywgYnV0IGhhcyBleHQzIEBqICVzLlxuIgorI34gbXNnc3RyICJFbCBAUyBubyB0aWVuZSBsYSBiYW5kZXJhIGhhc19qb3VybmFsLCBwZXJvIHRpZW5lIHVuIEBqIGV4dDMgJXMuXG4iCisKKyN+IG1zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKKyN+IG1zZ3N0ciAiIgorI34gIkVsIEBhIGVuIGVsIEBpICVpIHRpZW5lIHVuIGFycmVnbG8gYXNvY2lhdGl2byAoJU4pIHF1ZSBlcyBAbiAoZGViZSBzZXIgIgorI34gIjApXG4iCisKKyN+IG1zZ2lkICJSZWNyZWF0ZSBqb3VybmFsIHRvIG1ha2UgdGhlIGZpbGVzeXN0ZW0gZXh0MyBhZ2Fpbj9cbiIKKyN+IG1zZ3N0ciAiwr9SZWNyZWFyIGVsIEBqIHBhcmEgaGFjZXIgZWwgc2lzdGVtYSBkZSBmaWNoZXJvcyBleHQzIGRlIG51ZXZvP1xuIgorCisjfiBtc2dpZCAid2hpbGUgY2FsbGluZyBpdGVyYXRvciBmdW5jdGlvbiIKKyN+IG1zZ3N0ciAibWllbnRyYXMgc2UgbGxhbWFiYSBhIGxhIGZ1bmNpw7NuIGl0ZXJhZG9yYSIKKworI34gbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgdGFibGUgKGdyb3VwICVkKSIKKyN+IG1zZ3N0ciAibWllbnRyYXMgc2UgbGXDrWEgbGEgdGFibGEgZGUgbm9kb3MtaSAoZ3J1cG8gJWQpIgorCisjfiBtc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSAoZ3JvdXAgJWQpIgorI34gbXNnc3RyICJtaWVudHJhcyBzZSBlc2NyaWLDrWEgbGEgdGFibGEgZGUgbm9kb3MtaSAoZ3J1cG8gJWQpIgorCisjfiBtc2dpZCAiUGFzcyAwOiBEb2luZyBieXRlLXN3YXAgb2YgZmlsZXN5c3RlbVxuIgorI34gbXNnc3RyICJQYXNvIDA6IEhhY2llbmRvIGxhIHRyYXNwb3NpY2nDs24gZGUgYnl0ZXMgZGVsIHNpc3RlbWEgZGUgZmljaGVyb3NcbiIKKworI34gbXNnaWQgIiIKKyN+ICIlczogdGhlIGZpbGVzeXN0ZW0gbXVzdCBiZSBmcmVzaGx5IGNoZWNrZWQgdXNpbmcgZnNja1xuIgorI34gImFuZCBub3QgbW91bnRlZCBiZWZvcmUgdHJ5aW5nIHRvIGJ5dGUtc3dhcCBpdC5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIGRlYmUgc2VyIHJldmlzYWRvIGRlc2RlIGNlcm8gdXRpbGl6YW5kb1xuIgorI34gImZzY2sgeSBubyBkZWJlIGVzdGFyIG1vbnRhZG8gY3VhbmRvIHNlIGludGVudGUgaGFjZXIgdW5hIHRyYXNwb3NpY2nDs24gZGUgIgorI34gImJ5dGVzIGVuIMOpbC5cbiIKKworI34gbXNnaWQgIkJ5dGUgc3dhcCIKKyN+IG1zZ3N0ciAiVHJhc3Bvc2ljacOzbiBkZSBieXRlcyIKKworI34gbXNnaWQgIkJ5dGUtc3dhcHBpbmcgZmlsZXN5c3RlbXMgbm90IGNvbXBpbGVkIGluIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2tcbiIKKyN+IG1zZ3N0ciAiIgorI34gIkxvcyBzaXN0ZW1hcyBjb24gdHJhc3Bvc2ljacOzbiBkZSBieXRlcyBubyBlc3TDoW4gY29tcGlsYWRvcyBlbiBlc3RhICIKKyN+ICJ2ZXJzacOzbiBkZSBlMmZzY2tcbiIKKworI34gbXNnaWQgIkluY29tcGF0aWJsZSBvcHRpb25zIG5vdCBhbGxvd2VkIHdoZW4gYnl0ZS1zd2FwcGluZy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkxhcyBvcGNpb25lcyBpbmNvbXBhdGlibGVzIG5vIGVzdMOhbiBwZXJtaXRpZGFzIGN1YW5kbyBzZSBoYWNlICIKKyN+ICJ0cmFzcG9zaWNpw7NuIGRlIGJ5dGVzLlxuIgorCisjfiBtc2dpZCAiJXM6IEZpbGVzeXN0ZW0gYnl0ZSBvcmRlciBhbHJlYWR5IG5vcm1hbGl6ZWQuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogZWwgb3JkZW4gZGUgbG9zIGJ5dGVzIGRlbCBzaXN0ZW1hIGRlIGZpY2hlcm9zIHlhIHNlIG5vcm1hbGl6w7MuXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBkZXRlcm1pbmUgam91cm5hbCBzaXplIgorI34gbXNnc3RyICJObyBzZSBwdWVkZSBkZXRlcm1pbmFyIGVsIHRhbWHDsW8gZGVsIGZpY2hlcm8gZGUgdHJhbnNhY2Npb25lcyIKKworI34gbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHdyaXRlIGJsb2NrIGJpdG1hcHMgZm9yICVzIgorI34gbXNnc3RyICIiCisjfiAibWllbnRyYXMgc2UgcmVpbnRlbnRhYmEgZXNjcmliaXIgbG9zIG1hcGFzIGRlIGJpdHMgZGVsIGJsb3F1ZSBwYXJhICVzIgorCisjfiBtc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAtICVzIgorI34gbXNnc3RyICJibG9xdWUgaW5pY2lhbCBubyB2w6FsaWRvIC0gJXMiCisKKyN+IG1zZ2lkICJOb3RlOiBUaGlzIGlzIGEgYnl0ZS1zd2FwcGVkIGZpbGVzeXN0ZW1cbiIKKyN+IG1zZ3N0ciAiTm90YTogZXN0ZSBlcyB1biBzaXN0ZW1hIGRlIGZpY2hlcm9zIGNvbiB0cmFzcG9zaWNpw7NuIGRlIGJ5dGVzXG4iCisKKyN+IG1zZ2lkICJzaG9ydCB3cml0ZSAob25seSAlZCBieXRlcykgZm9yIHdyaXRpbmcgaW1hZ2UgaGVhZGVyIgorI34gbXNnc3RyICIiCisjfiAic2UgZXNjcmliacOzIG11eSBwb2NvIChzw7NsbyAlZCBieXRlcykgcGFyYSBlbCBlbmNhYmV6YWRvIGRlIGxhIGltYWdlbiIKKworI34gbXNnaWQgImludmFsaWQgZnJhZ21lbnQgc2l6ZSAtICVzIgorI34gbXNnc3RyICJUYW1hw7FvIGRlbCBmcmFnbWVudG8gaW52w6FsaWRvIC0gJXMiCisKKyN+IG1zZ2lkICJXYXJuaW5nOiBmcmFnbWVudHMgbm90IHN1cHBvcnRlZC4gIElnbm9yaW5nIC1mIG9wdGlvblxuIgorI34gbXNnc3RyICIiCisjfiAiQXRlbmNpw7NuOiBubyBlc3TDoW4gaW1wbGVtZW50YWRvcyBsb3MgZnJhZ21lbnRvcy4gU2UgZGVzY2FydGEgbGEgb3BjacOzbiAtIgorI34gImZcbiIKKworI34gbXNnaWQgIiIKKyN+ICJGaWxlc3lzdGVtIHRvbyBsYXJnZS4gIE5vIG1vcmUgdGhhbiAyKiozMS0xIGJsb2Nrc1xuIgorI34gIlx0ICg4VEIgdXNpbmcgYSBibG9ja3NpemUgb2YgNGspIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiIKKyN+IG1zZ3N0ciAiIgorI34gIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgZXMgZGVtYXNpYWRvIGdyYW5kZS4gIEFjdHVhbG1lbnRlIG5vIHNlXG4iCisjfiAic29wb3J0YW4gbcOhcyBkZSAyKiozMS0xIGJsb3F1ZXMgKDggVEIgY29uIHVuIHRhbWHDsW8gZGUgYmxvcXVlIGRlIDRrKS4iCisKKyN+IG1zZ2lkICIiCisjfiAiXG4iCisjfiAiV2FybmluZzogc29tZSAyLjQga2VybmVscyBkbyBub3Qgc3VwcG9ydCBibG9ja3NpemVzIGdyZWF0ZXIgdGhhbiA0MDk2XG4iCisjfiAiXHR1c2luZyBleHQzLiAgVXNlIC1iIDQwOTYgaWYgdGhpcyBpcyBhbiBpc3N1ZSBmb3IgeW91LlxuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAiQXRlbmNpw7NuOiBhbGd1bm9zIG7DumNsZW9zIDIuNCBubyBvcGVyYW4gY29uIHRhbWHDsW9zIGRlIGJsb3F1ZSBzdXBlcmlvcmVzXG4iCisjfiAiYSA0MDk2IGNvbiBleHQzLiAgVXRpbGljZSAtYiA0MDk2IHNpIGVzdG8gZXMgdW4gcHJvYmxlbWEgcGFyYSB1c3RlZC5cbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIldhcm5pbmc6ICVkLWJ5dGUgaW5vZGVzIG5vdCB1c2FibGUgb24gb2xkZXIgc3lzdGVtc1xuIgorI34gbXNnc3RyICIiCisjfiAiQXRlbmNpw7NuOiBsb3Mgbm9kb3MtaSBkZSAlZCBieXRlcyBubyBzZSBwdWVkZW4gdXRpbGl6YXIgZW4gbXVjaG9zICIKKyN+ICJzaXN0ZW1hc1xuIgorCisjfiBtc2dpZCAiSm91cm5hbCBOT1QgcmVtb3ZlZFxuIgorI34gbXNnc3RyICJOTyBzZSBoYSBlbGltaW5hZG8gZWwgZmljaGVybyBkZSB0cmFuc2FjY2lvbmVzXG4iCisKKyN+IG1zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisjfiBtc2dzdHIgImhlY2hvICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjfiBtc2dpZCAiaW52YWxpZCBibG9ja3MgcmFuZ2U6ICVsdS0lbHUiCisjfiBtc2dzdHIgImludGVydmFsbyBkZSBibG9xdWVzIGRhw7FhZG9zOiAlbHUtJWx1IgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2NrcyBkaXNhYmxlZC5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxuIgorI34gIkVsIHNpc3RlbWEgZGUgZmljaGVyb3MgeWEgdGllbmUgbG9zIHN1cGVyYmxvcXVlcyBkaXNwZXJzb3MgIgorI34gImRlc2hhYmlsaXRhZG9zLlxuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgY2xlYXJlZC4gICVzIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAiTGEgYmFuZGVyYSBkZSBzdXBlcmJsb3F1ZXMgZGlzcGVyc29zIGhhIHNpZG8gYm9ycmFkYS4gICVzIgorCisjfiBtc2dpZCAiQ2xvbmUgZHVwbGljYXRlL2JhZCBibG9ja3MiCisjfiBtc2dzdHIgIkNsb25hciBsb3MgYmxvcXVlcyBkdXBsaWNhZG9zL2Rhw7FhZG9zIgorCisjfiBtc2dpZCAiRXJyb3IgYWxsb2NhdGluZyBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiRXJyb3IgYWwgcmVzZXJ2YXIgZWwgQGIgZGVsIEBhICViLiAgIgorCisjfiBtc2dpZCAiIgorI34gIkR1cGxpY2F0ZSBAYnMgZm91bmQuLi4gaW52b2tpbmcgZHVwbGljYXRlIEBiIHBhc3Nlcy5cbiIKKyN+ICJQYXNzIDFCOiBSZXNjYW4gZm9yIGR1cGxpY2F0ZS9iYWQgQGJzXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTZSBlbmNvbnRyYXJvbiBAYnMgZHVwbGljYWRvcy4uLiBzZSBpbnZvY2FuIGxvcyBwYXNvcyBwYXJhIEBicyAiCisjfiAiZHVwbGljYWRvcy5cbiIKKyN+ICJQYXNvIDFCOiBSZS1leHBsb3JhY2nDs24gcGFyYSBidXNjYXIgQGJzIGR1cGxpY2Fkb3MvZGHDsWFkb3NcbiIKKworI34gbXNnaWQgIkR1cGxpY2F0ZS9iYWQgQGIocykgaW4gQGkgJWk6IgorI34gbXNnc3RyICJIYXkgQGIocykgZHVwbGljYWRvcy9kYcOxYWRvcyBlbiBlbCBAaSAlaToiCisKKyN+IG1zZ2lkICJGb3JjaWJseSBjbGVhcmluZyBIVFJFRSBmbGFnIG9uIEBpICVkICglcSkuICAoQmV0YSB0ZXN0IGNvZGUpXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTZSBpbnRlbnRhIGJvcnJhciBhIGxhIGZ1ZXJ6YSBsYSBiYW5kZXJhIEhUUkVFIGVuIGVsIEBpICVkICglcSkuICAoQ8OzZGlnbyAiCisjfiAiZGUgcHJ1ZWJhIGVuIGV0YXBhIGJldGEpXG4iCisKKyN+IG1zZ2lkICIgICAgICAgdGhpc29mZiAgICAgYmxvY2sgZnNfYmxrX3N6ICBibGtzeiBncnAgbGFzdF9tb3VudFxuIgorI34gbXNnc3RyICIgICAgICBlc3RlICAgICAgICBibG9xdWUgIGZzX2Jsa19zeiAgYmxrc3ogZ3JwIHVsdGltb19tb250YWRvXG4iCisKKyN+IG1zZ2lkICIodW5rbm93biBvcykiCisjfiBtc2dzdHIgIihzbyBkZXNjb25vY2lkbykiCisKKyN+IG1zZ2lkICIlcyBmYWlsZWQgZm9yICVzOiAlc1xuIgorI34gbXNnc3RyICIlcyBmYWxsw7MgcGFyYSAlczogJXNcbiIKKworI34gbXNnaWQgIk51bWJlciBvZiBmcmVlIGJsb2NrczogJWQvJWQsIE5lZWRlZDogJWRcbiIKKyN+IG1zZ3N0ciAiTsO6bWVybyBkZSBibG9xdWVzIGxpYnJlczogJWQvJWQsIHNlIG5lY2VzaXRhbjogJWRcbiIKKworI34gbXNnaWQgIkdvaW5nIGludG8gZGVzcGVyYXRpb24gbW9kZSBmb3IgYmxvY2sgYWxsb2NhdGlvbnNcbiIKKyN+IG1zZ3N0ciAiRW50cmFuZG8gYWwgbW9kbyBkZXNlc3BlcmFkbyBwYXJhIHJlc2VydmFyIGJsb3F1ZXNcbiIKKworI34gbXNnaWQgIk1vdmluZyAlZCBibG9ja3MgJXUtPiV1XG4iCisjfiBtc2dzdHIgIk1vdmllbmRvICVkIGJsb3F1ZXMgJXUtPiV1XG4iCisKKyN+IG1zZ2lkICJJbm9kZSBtb3ZlZCAldS0+JXVcbiIKKyN+IG1zZ3N0ciAiTm9kbyBpIG1vdmlkbyAldS0+JXVcbiIKKworI34gbXNnaWQgIklub2RlIHRyYW5zbGF0ZSAoZGlyPSV1LCBuYW1lPSUuKnMsICV1LT4ldSlcbiIKKyN+IG1zZ3N0ciAiVHJhZHVjY2nDs24gZGUgbm9kby1pIChkaXI9JXUsIG5vbWJyZT0lLipzLCAldS0+JXUpXG4iCisKKyN+IG1zZ2lkICJJdGFibGUgbW92ZSBncm91cCAlZCBibG9jayAldS0+JXUgKGRpZmYgJWQpXG4iCisjfiBtc2dzdHIgIkxhIHRhYmxhIGkgbXVldmUgYWwgZ3J1cG8gJWQgYmxvcXVlICV1LT4ldSAoZGlmZXJlbmNpYSAlZClcbiIKKworI34gbXNnaWQgIiVkIGJsb2NrcyBvZiB6ZXJvcy4uLlxuIgorI34gbXNnc3RyICIlZCBibG9xdWVzIGRlIGNlcm9zLi4uXG4iCisKKyN+IG1zZ2lkICJJbm9kZSB0YWJsZSBtb3ZlIGZpbmlzaGVkLlxuIgorI34gbXNnc3RyICJFbCBtb3ZpbWllbnRvIGRlIGxhIHRhYmxhIGRlIGxvcyBub2RvcyBpIGhhIHRlcm1pbmFkby5cbiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9mci5nbW8gYi9lMmZzcHJvZ3MvcG8vZnIuZ21vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmOGY2OWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vZnIuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9mci5wbyBiL2UyZnNwcm9ncy9wby9mci5wbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjg1MDNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2ZyLnBvCkBAIC0wLDAgKzEsODU5NCBAQAorIyBNZXNzYWdlcyBmcmFu52FpcyBwb3VyIEdOVSBjb25jZXJuYW50IGUyZnNwcm9ncy4KKyMgQ29weXJpZ2h0IChDKSAyMDA4IFRoZW9kb3JlIFRzbyAobXNnaWRzKQorIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZTJmc3Byb2dzIHBhY2thZ2UuCisjIENvcHlyaWdodCCpIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIE1pY2hlbCBSb2JpdGFpbGxlIDxyb2JpdGFpbEBJUk8uVU1vbnRyZWFsLkNBPiwgdHJhZHVjdGV1ciBkZXB1aXMvc2luY2UgMTk5Ni4KKyMgU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPiwgMjAwNi0yMDE2LgorIworIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4gCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyCisjLiAJJUIJImluZGlyZWN0IGJsb2NrIiB8ICJibG9jayAjIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXIKKyMuIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuIAklRGkJPGRpcmVudD4gLT4gaW5vCQlpbm9kZSBudW1iZXIKKyMuIAklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmcKKyMuIAklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4gCSVEbAk8ZGlyZW50PiAtPiBuYW1lX2xlbgorIy4gCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZQorIy4gCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4gCSVnCTxncm91cD4JCQlpbnRlZ2VyCisjLiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyMuIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisjLiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyMuIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisjLiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorIy4gCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisjLiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisjLiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuIAklSWcJPGlub2RlPiAtPiBpX2dpZAorIy4gCSVJdAk8c3RyPgkJCWZpbGUgdHlwZQorIy4gCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4gCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisjLiAJJU4JPG51bT4KKyMuIAklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuIAklUAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMCisjLiAJCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLiAJJXEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisjLiAJJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLiAJJXMJPHN0cj4JCQltaXNjZWxsYW5lb3VzIHN0cmluZworIy4gCSVTCQliYWNrdXAgc3VwZXJibG9jaworIy4gCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBlMmZzcHJvZ3MgMS40My4xXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA2LTEzIDIyOjQ5KzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz5cbiIKKyJMYW5ndWFnZS1UZWFtOiBGcmVuY2ggPHRyYWR1Y0B0cmFkdWMub3JnPlxuIgorIkxhbmd1YWdlOiBmclxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4LWJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuID4gMSk7XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJCbG9jIGTpZmVjdHVldXggJXUgaG9ycyBsaW1pdGWgOyBpZ25vcukuXG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo0NgorbXNnaWQgIndoaWxlIHNhbml0eSBjaGVja2luZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAibG9ycyBkdSBjb250cvRsZSBkZSBsJ2ludOlncml06SBkZSBsJ2ktbm9ldWQgZGVzIGJsb2NzIGTpZmVjdGV1eCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnaS1ub2V1ZCBkZXMgYmxvY3MgZOlmZWN0dWV1eCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjcyIGUyZnNjay9zY2FudGVzdC5jOjEwNyBlMmZzY2svdW5peC5jOjE1MDgKKyM6IGUyZnNjay91bml4LmM6MTYwMSBtaXNjL2JhZGJsb2Nrcy5jOjEyNDIgbWlzYy9iYWRibG9ja3MuYzoxMjUwCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyNjQgbWlzYy9iYWRibG9ja3MuYzoxMjc2IG1pc2MvZHVtcGUyZnMuYzo2ODkKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDAgbWlzYy9lMmltYWdlLmM6MTU4NCBtaXNjL2UyaW1hZ2UuYzoxNjA1CisjOiBtaXNjL21rZTJmcy5jOjIzMCBtaXNjL3R1bmUyZnMuYzoyNjkzIG1pc2MvdHVuZTJmcy5jOjI3ODcgcmVzaXplL21haW4uYzo0MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGQnb3V2ZXJ0dXJlIGRlICVzIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGQnb3V2ZXJ0dXJlIHZpYSBwb3BlbigpIKugJXOguyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjk0IG1pc2MvbWtlMmZzLmM6MjM3Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbiBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBmaWxlIgorbXNnc3RyICIiCisibG9ycyBkZSBsYSBsZWN0dXJlIGRlIGxhIGxpc3RlIGRlcyBibG9jcyBk6WZlY3R1ZXV4IOAgcGFydGlyIGR1IGZpY2hpZXIiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImxvcnMgZGUgbGEgbWlzZSDgIGpvdXIgZGUgbCdpLW5vZXVkIGRlcyBibG9jcyBk6WZlY3R1ZXV4IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgQ2xlYXJlZC5cbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnSgOiBibG9jIGlsbOlnYWwgJXUgcmVw6XLpIGRhbnMgbCdpLW5vZXVkIGRlcyBibG9jc1xuIgorImTpZmVjdHVldXguICBFZmZhY+kuXG4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkVycmV1ciBkZSBsZWN0dXJlIGR1IGJsb2MgJWx1ICglcykgbG9ycyBkZSAlcy4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJFcnJldXIgZGUgbGVjdHVyZSBkdSBibG9jICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSWdub3JlciBsJ2VycmV1ciIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICJGb3JjZXIgbGEgcukt6WNyaXR1cmUiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsJ+ljcml0dXJlIGR1IGJsb2MgJWx1ICglcykgbG9ycyBkZSAlcy4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgZCfpY3JpdHVyZSBkdSBibG9jICVsdSAoJXMpLiAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICJibG9jcyBkZXMgculwZXJ0b2lyZXMgdmlkZXMiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIHLpcGVydG9pcmVzIHZpZGUiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorbXNnc3RyICJCbG9jIGRlcyBy6XBlcnRvaXJlcyAldSAobrAlZCkgdmlkZSBkYW5zIGwnaS1ub2V1ZCAldVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzoDogJXMgbm9tLWRlLWZpY2hpZXIgbm9tYnJlLWRlLWJsb2NzIHRhaWxsZS1kZXMtYmxvY3NcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiTm9tYnJlIGlsbOlnYWwgZGUgYmxvY3OgIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJOZSBwZXV0IGFsbG91ZXIgbGUgdGFtcG9uIGRlIGJsb2MgKHRhaWxsZT0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGktbm9ldWRzIGRlIHJlY29uc3RydWN0aW9uIGRlcyBleHRlbnRzIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiVXRpbGlzYXRpb26gOiAlcyBkaXNxdWVcbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiIgorIkwnaW9jdGwgQkxLRkxTQlVGIG4nZXN0IHBhcyBzdXBwb3J06aAhIEltcG9zc2libGUgZGUgdmlkZXIgbGVzIHRhbXBvbnMuXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlV0aWxpc2F0aW9uoDogJXMgWy1GXSBbLUmgbm9tYnJlX2Jsb2NzX2R1X3RhbXBvbl9kX2lfbm9ldWRdIHDpcmlwaOlyaXF1ZVxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZGUgJXMgcG91ciBsYSB2aWRhbmdlIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICJsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkZSB2aWRhbmdlIGRlICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAibG9ycyBkZSBsYSB0ZW50YXRpdmUgZCdvdXZlcnR1cmUgZGUgJyVzJyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTE5IGUyZnNjay9zY2FudGVzdC5jOjExNCBtaXNjL2UyaW1hZ2UuYzoxMjkzCittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJsb3JzIGRlIGwnb3V2ZXJ0dXJlIGRlIGwnZXhhbWVuIGQnaS1ub2V1ZHMiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEyNyBtaXNjL2UyaW1hZ2UuYzoxMzEyCittc2dpZCAid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIgorbXNnc3RyICJsb3JzIGRlIGwnb2J0ZW50aW9uIGRlIGwnaS1ub2V1ZCBzdWl2YW50IgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiV1IGktbm9ldWRzIGV4YW1pbulzLlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjU5MworbXNnaWQgInJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgImxlY3R1cmUgZW4gY291cnMgZHUgc3VwZXJibG9jIGR1IGpvdXJuYWxcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlc6A6IGF1Y3VuIHN1cGVyYmxvYyBkZSBqb3VybmFsIHZhbGlkZSBuJ2Eg6XTpIHRyb3V26VxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiJXOgOiBqb3VybmFsIHRyb3AgY291cnRcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzoDogculjdXDpcmF0aW9uIGR1IGpvdXJuYWxcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiIKKyIlc6A6IGF1Y3VuZSBy6WN1cOlyYXRpb24gZHUgam91cm5hbCBuJ2VzdCBwb3NzaWJsZSB0YW50IHF1J2lsIGVzdCBlblxuIgorImxlY3R1cmUgc2V1bGVcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIHLpLW91dmVydHVyZSBkZSAlcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhYXR0cmlidXQg6XRlbmR1IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJBZXJyZXVyIGxvcnMgZGUgbCdhbGxvY2F0aW9uIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2MiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQmJpdG1hcCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgImNjb21wcmVzcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ2VzdCBlbiBjb25mbGl0IGF2ZWMgZGVzIEBicyBkJ2F1dHJlcyBzeXN06G1lcyBkZSBmaWNoaWVycyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkculwZXJ0b2lyZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjAKK21zZ2lkICJEZGVsZXRlZCIKK21zZ3N0ciAiRGVmZmFj6SIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImVlbnRy6WUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVAZSCroCVEbqC7IGRhbnMgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZnN5c3TobWUgZGUgZmljaGllcnMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGcG91ciBsJ0BpICVpICglUSkgZXN0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ2dyb3VwZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjYKK21zZ2lkICJoSFRSRUUgQGQgQGkiCittc2dzdHIgImhAaSBkZSBAZCBkJ0hUUkVFIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNworbXNnaWQgImlpbm9kZSIKK21zZ3N0ciAiaWktbm9ldWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklpbGzpZ2FsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOQorbXNnaWQgImpqb3VybmFsIgorbXNnc3RyICJqam91cm5hbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibGxvc3QrZm91bmQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGVzdCB1biBsaWVuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMgorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtculjbGFt6ShzKSBwbHVzaWV1cnMgZm9pcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibmludmFsaWRlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNAorbXNnaWQgIm9vcnBoYW5lZCIKK21zZ3N0ciAib29ycGhlbGluIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwcHJvYmzobWUgYXZlYyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFxdW90YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAickBpIHJhY2luZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJzZGV2cmFpdCDqdHJlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTc3VwZXJAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAidW5vbiBhdHRhY2jpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgInZw6XJpcGjpcmlxdWUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieGV4dGVudCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgInpkZSBsb25ndWV1ciB66XJvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjxMJ2ktbm9ldWQgTlVMPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8TCdpLW5vZXVkIGRlcyBibG9jcyBk6WZlY3R1ZXV4PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8TCdpLW5vZXVkIGRlIHF1b3RhIHV0aWxpc2F0ZXVyPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEwnaS1ub2V1ZCBkZSBxdW90YSBkZSBncm91cGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OQorbXNnaWQgIjxUaGUgYm9vdCBsb2FkZXIgaW5vZGU+IgorbXNnc3RyICI8TCdpLW5vZXVkIGR1IGNoYXJnZXVyIGQnYW1vcmNlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjAKK21zZ2lkICI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iCittc2dzdHIgIjxMJ2ktbm9ldWQgZHUgculwZXJ0b2lyZSBkZSBy6WN1cOlyYXRpb24gZGUgZmljaGllcnMgZWZmYWPpcz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPEwnaS1ub2V1ZCBkZXNjcmlwdGV1ciBkZSBncm91cGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MgorbXNnaWQgIjxUaGUgam91cm5hbCBpbm9kZT4iCittc2dzdHIgIjxMJ2ktbm9ldWQgZGUgam91cm5hbD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYzCittc2dpZCAiPFJlc2VydmVkIGlub2RlIDk+IgorbXNnc3RyICI8TCdpLW5vZXVkIHLpc2VydukgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPEwnaS1ub2V1ZCBy6XNlcnbpIDEwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzMKK21zZ2lkICJyZWd1bGFyIGZpbGUiCittc2dzdHIgImZpY2hpZXIgbm9ybWFsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAiculwZXJ0b2lyZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJmaWNoaWVyIGRlIHDpcmlwaOlyaXF1ZSBlbiBtb2RlIGNhcmFjdOhyZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzkKK21zZ2lkICJibG9jayBkZXZpY2UiCittc2dzdHIgImZpY2hpZXIgZGUgcOlyaXBo6XJpcXVlIGVuIG1vZGUgYmxvYyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICJ0dWJlIG5vbW3pIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgImxpZW4gc3ltYm9saXF1ZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAic29ja2V0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJ0eXBlIGRlIGZpY2hpZXIgaW5jb25udSBhdmVjIHVuIG1vZGUgMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJibG9jIGluZGlyZWN0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvYyBkb3VibGVtZW50IGluZGlyZWN0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNgorbXNnaWQgInRyaXBsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvYyB0cmlwbGVtZW50IGluZGlyZWN0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyOAorbXNnaWQgInRyYW5zbGF0b3IgYmxvY2siCittc2dzdHIgImJsb2MgZGUgdHJhZHVjdGlvbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICJibG9jIG6wIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgImNhcnRlIGRlcyBpLW5vZXVkcyBy6WNsYW3pcyBwbHVzaWV1cnMgZm9pcyIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAiZXJyZXVyIGludGVybmWgOiBuZSBwZXV0IHRyb3V2ZXIgZHVwX2JsayBwb3VyICVsbHVcbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkwMworbXNnaWQgInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIKK21zZ3N0ciAicmV0b3VybukgZGUgY2xvbmVfZmlsZV9ibG9jayIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiIgorImVycmV1ciBpbnRlcm5loDogaW1wb3NzaWJsZSBkZSB0cm91dmVyIGwnZW5yZWdpc3RyZW1lbnQgZGUgYmxvYyBFQSBwb3VyICVsbHUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICIiCisiZXJyZXVyIGludGVybmWgOiBpbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbCdlbnJlZ2lzdHJlbWVudCBkJ2ktbm9ldWQgRUEgcG91ciAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJsZWN0dXJlIGRlcyBibG9jcyBkZSBy6XBlcnRvaXJlIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTExCittc2dpZCAiaW4tdXNlIGlub2RlIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGktbm9ldWRzIHV0aWxpc+lzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTIyCittc2dpZCAiZGlyZWN0b3J5IGlub2RlIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGktbm9ldWRzIGRlIHLpcGVydG9pcmVzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGktbm9ldWRzIGRlIGZpY2hpZXJzIG5vcm1hdXgiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgImNhcnRlIGRlcyBibG9jcyB1dGlsaXPpcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE1MAorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGJsb2NzIGRlIG3pdGFkb25u6WVzIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJsJ291dmVydHVyZSBkZSBsJ2V4YW1lbiBkZXMgaS1ub2V1ZHMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJsJ29idGVudGlvbiBkZSBsJ2ktbm9ldWQgc3VpdmFudCBkZXB1aXMgbCdleGFtZW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIlBhc3NloDEiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiCittc2dzdHIgImxlY3R1cmUgZGVzIGJsb2NzIGluZGlyZWN0cyBkZSBsJ2ktbm9ldWQgJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICJjYXJ0ZSBkZXMgaS1ub2V1ZHMgZOlmZWN0dWV1eCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgImktbm9ldWQgZGFucyBsYSBjYXJ0ZSBkZXMgYmxvY3MgZOlmZWN0dWV1eCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgImNhcnRlIGQnaS1ub2V1ZHMgbWFnaXF1ZXMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAiY2FydGUgZGVzIGJsb2NzIHLpY2xhbelzIHBsdXNpZXVycyBmb2lzIgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICJjYXJ0ZSBkZXMgYmxvY3MgZCdhdHRyaWJ1dHMg6XRlbmR1cyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiU2bHUoJWMpoDogJTZsdSBhdHRlbmR1LCBvYnRlbnUgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiYml0bWFwIGRlIGJsb2NzIgorCisjOiBlMmZzY2svcGFzczEuYzozODMzCittc2dpZCAiaW5vZGUgYml0bWFwIgorbXNnc3RyICJiaXRtYXAgZCdpLW5vZXVkcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJ0YWJsZSBkJ2ktbm9ldWRzIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlBhc3NloDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJOZSBwZXV0IGNvbnRpbnVlci4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgImJpdG1hcCBkJ2ktbm9ldWRzIGNvbXBs6XTpcyIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiUG9pbnRlIG3pbW9pcmUiCisKKyM6IGUyZnNjay9wYXNzMy5jOjE0OQorbXNnaWQgIlBhc3MgMyIKK21zZ3N0ciAiUGFzc2WgMyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICJiaXRtYXAgZGUgZOl0ZWN0aW9uIGRlcyBib3VjbGVzIGQnaS1ub2V1ZHMiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiUGFzc2WgNCIKKworIzogZTJmc2NrL3Bhc3M1LmM6ODEKK21zZ2lkICJQYXNzIDUiCittc2dzdHIgIlBhc3NloDUiCisKKyM6IGUyZnNjay9wYXNzNS5jOjEwNAorbXNnaWQgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogRXJyZXVyIGQnYWxsb2NhdGlvbiBt6W1vaXJlIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IEVycmV1ciBkJ2FsbG9jYXRpb24gbeltb2lyZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIocGFzIGQnaW52aXRlKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAiQ29ycmlnZXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMKK21zZ2lkICJDbGVhciIKK21zZ3N0ciAiRWZmYWNlciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJSZWxvY2FsaXNlciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NQorbXNnaWQgIkFsbG9jYXRlIgorbXNnc3RyICJBbGxvdWVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2Cittc2dpZCAiRXhwYW5kIgorbXNnc3RyICLJdGVuZHJlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3Cittc2dpZCAiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiQ29ubmVjdGVyIOAgL2xvc3QrZm91bmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIkNy6WVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAiUuljdXDpcmVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIlRyb25xdWVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIkVmZmFjZXIgbCdpLW5vZXVkIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyCittc2dpZCAiQWJvcnQiCittc2dzdHIgIkFycup0ZXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiU2NpbmRlciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJDb250aW51ZXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAiQ2xvbmVyIGxlcyBibG9jcyBy6WNsYW3pcyBwbHVzaWV1cnMgZm9pcyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NgorbXNnaWQgIkRlbGV0ZSBmaWxlIgorbXNnc3RyICJE6XRydWlyZSBsZSBmaWNoaWVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIlN1cHByaW1lciBsZXMgbWVzc2FnZXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIkTpbGllciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OQorbXNnaWQgIkNsZWFyIEhUcmVlIGluZGV4IgorbXNnc3RyICJFZmZhY2VyIGwnaW5kZXggSFRyZWUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiUmVjcullciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKEFVQ1VOKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MAorbXNnaWQgIkZJWEVEIgorbXNnc3RyICJDT1JSSUfJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiRUZGQUPJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICJSRUxPQ0FMSVPJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICJBTExPVckiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAiyVRFTkRVIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIlJFQ09OTkVDVMkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICJDUsnJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIlLJQ1VQyVLJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICJUUk9OUVXJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiSU5PREUgRUZGQUPJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwCittc2dpZCAiQUJPUlRFRCIKK21zZ3N0ciAiQVJSylTJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxCittc2dpZCAiU1BMSVQiCittc2dzdHIgIlNDSU5EySIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIlBPVVJTVUlURSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiQkxPQ1MgUslDTEFNyVMgUExVU0lFVVJTIEZPSVMgQ0xPTslTIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0Cittc2dpZCAiRklMRSBERUxFVEVEIgorbXNnc3RyICJGSUNISUVSIETJVFJVSVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUKK21zZ2lkICJTVVBQUkVTU0VEIgorbXNnc3RyICJTVVBQUklNySIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICJEyUxJySIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NworbXNnaWQgIkhUUkVFIElOREVYIENMRUFSRUQiCittc2dzdHIgIklOREVYIEhUUkVFIEVGRkFDySIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5OAorbXNnaWQgIldJTEwgUkVDUkVBVEUiCittc2dzdHIgIlJFQ1LJRVJBIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJsZSBAQiBkZSBAYnMgcG91ciBsZSBAZyAlZyBuJ2VzdCBwYXMgZGFucyBsZSBAZy4gKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJsZSBAQiBkJ0BpcyBwb3VyIGxlIEBnICVnIG4nZXN0IHBhcyBkYW5zIGxlIEBnLiAoQGIgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorImxhIHRhYmxlIGQnQGlzIHBvdXIgbGUgQGcgJWcgbidlc3QgcGFzIGRhbnMgbGUgQGcuIChAYiAlYilcbiIKKyJBVFRFTlRJT06gOiBQRVJURSBTyVbIUkUgREUgRE9OTslFUyBQT1NTSUJMRS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiTGUgQFMgbidhIHB1IOp0cmUgbHUgb3UgbmUgY29udGllbnQgcGFzIHVuIEBmXG4iCisiZXh0Mi9leHQzL2V4dDQgY29ycmVjdC4gU2kgbGUgQHYgZXN0IHZhbGlkZSBldCBxdSdpbCBjb250aWVudCBy6WVsbGVtZW50XG4iCisidW4gQGYgZXh0Mi9leHQzL2V4dDQgKGV0IG5vbiBwYXMgZGUgdHlwZSBzd2FwLCB1ZnMgb3UgYXV0cmUpLFxuIgorImFsb3JzIGxlIEBTIGVzdCBjb3Jyb21wdSwgZXQgdm91cyBwb3VycmlleiB0ZW50ZXIgZCdleOljdXRlclxuIgorImUyZnNjayBhdmVjIHVuIGF1dHJlIEBToDpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvdVxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyJMYSB0YWlsbGUgZHUgQGYgKHNlbG9uIGxlIEBTKSBlc3QgZGUgJWIgQGJzXG4iCisiTGEgdGFpbGxlIHBoeXNpcXVlIGR1IEB2IGVzdCBkZSAlYyBAYnNcbiIKKyJMZSBAUyBvdSBsYSB0YWJsZSBkZXMgcGFydGl0aW9ucyBlc3QgcGV1dC3qdHJlIGNvcnJvbXB1ZaAhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkBTIEBiX3NpemWgPaAlYiwgZnJhZ3NpemWgPaAlYy5cbiIKKyJDZXR0ZSB2ZXJzaW9uIGQnZTJmc2NrIG5lIHN1cHBvcnRlIHBhcyBsZXMgZnJhZ21lbnRzIGRlIHRhaWxsZXMgZGlmZulyZW50ZXNcbiIKKyJkZSBsYSB0YWlsbGUgZGVzIEBiLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIGF1cmFpdCBk+yDqdHJlICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgYXVyYWl0IGT7IOp0cmUgJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiTGUgQGYgbidhIHBhcyBkJ1VVSUQ7IG9uIGVuIGfpbuhyZSB1bi5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJOb3RloDogc2kgcGx1c2lldXJzIGktbm9ldWRzIG91IGJsb2NzIGRlIGJpdG1hcHMgZGUgYmxvY3Mgb3VcbiIKKyJ1bmUgcGFydGllIGRlIGxhIHRhYmxlIGRlcyBpLW5vZXVkcyBu6WNlc3NpdGVudCB1bmUgcmVsb2NhbGlzYXRpb24sXG4iCisidm91cyBk6XNpcmVyZXogcGV1dC3qdHJlIGVzc2F5ZXIgZW4gcHJlbWllciBsaWV1IGQnZXjpY3V0ZXIgZTJmc2NrXG4iCisiYXZlYyBsJ29wdGlvbiCroC1iICVToLsuIExlIHByb2Js6G1lIHLpc2lkZSBwZXV0Lep0cmUgc2V1bGVtZW50XG4iCisiZGFucyBsZXMgZGVzY3JpcHRldXJzIGRlIGdyb3VwZXMgZGUgYmxvY3MgZHUgYmxvYyBwcmltYWlyZSwgYWxvcnNcbiIKKyJxdWUgbGVzIGRlc2NyaXB0ZXVycyBkZSBncm91cGVzIGRlIGJsb2NzIGRlIHNlY291cnMgc29udCBwZXV0Lep0cmVcbiIKKyJlbiBib24g6XRhdC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorbXNnaWQgIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iCittc2dzdHIgIkNvcnJ1cHRpb24gcmVw6XLpZSBkYW5zIGxlIEBTLiAoJXOgPaAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGxhIGTpdGVybWluYXRpb24gZGUgbGEgdGFpbGxlIGR1IEB2IHBoeXNpcXVloDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgY291bnQgaW4gc3VwZXJibG9jayBpcyAlaSwgc2hvdWxkIGJlICVqLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NAorbXNnaWQgIkBpIGNvdW50IGluIEBTIGlzICVpLCBAcyAlai5cbiIKK21zZ3N0ciAibGUgY29tcHRldXIgZCdAaSBkYW5zIGxlIEBTIGVzdCAlaSwgQHMgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiTGUgSHVyZCBuZSBzdXBwb3J0ZSBwYXMgbGEgZm9uY3Rpb25uYWxpdOkgZmlsZXR5cGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAibGUgQFMgYSB1biBAaiBAbiAoQGmgJWkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIkxlIEBqIGV4dGVybmUgYSBwbHVzaWV1cnMgdXRpbGlzYXRldXJzIGRlIEBmIChub24gc3VwcG9ydOkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIk5lIHBldXQgdHJvdXZlciBsZSBAaiBleHRlcm5lXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJMZSBAaiBleHRlcm5lIGEgdW4gQFMgY29ycm9tcHVcbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZmlsZXN5c3RlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxMworbXNnaWQgIkV4dGVybmFsIEBqIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBAZlxuIgorbXNnc3RyICJMZSBAaiBleHRlcm5lIG5lIHN1cHBvcnRlIHBhcyBjZSBAZlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiTGUgQFMgZHUgQGogZXN0IGRlIHR5cGUgaW5jb25udaAlTiAobm9uIHN1cHBvcnTpKS5cbiIKKyJJbCBzZW1ibGUgcXVlIHZvdHJlIGNvcGllIGQnZTJmc2NrIHNvaXQgdW4gcGV1IHZpZWlsbG90dGUgZXQvb3UgbmUgc3VwcG9ydGVcbiIKKyJwYXMgY2UgZm9ybWF0IGRlIEBqLlxuIgorIklsIGVzdCBhdXNzaSBwb3NzaWJsZSBxdWUgbGUgQFMgZHUgQGogc29pdCBjb3Jyb21wdS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiTGUgQFMgZHUgQGogZXN0IGNvcnJvbXB1LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiTGUgZHJhcGVhdSBoYXNfQGogZHUgQFMgbidlc3QgcGFzIGFjdGl26SwgbWFpcyB1biBAaiBlc3QgcHLpc2VudC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIkxlIEBTIGEgbGUgZHJhcGVhdSBuZWVkc19yZWNvdmVyeSBhY3RpduksIG1haXMgbidhIHBhcyBkZSBkZSBAai5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIiIKKyJsZSBkcmFwZWF1IG5lZWRzX3JlY292ZXJ5IG4nZXN0IHBhcyBhY3RpduksIG1haXMgbGUgQGogY29udGllbnQgZGVzICIKKyJkb25u6WVzLlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICJFZmZhY2VyIGxlIEBqIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIiIKKyJsZSBAZiBhIGRlcyBkcmFwZWF1eCBkZSBmb25jdGlvbm5hbGl06XMgYWN0aXbpcyBtYWlzIGVzdCB1biBAZiBkZSB2ZXJzaW9uIDAuICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyBsJ0BpIEBvICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgdGFpbGxlPSVJcylcbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2MQorbXNnaWQgIkBJICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIiVCICglYikgQEkgcmVw6XLpIGRhbnMgbCdAaSBAbyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkTpauAgZWZmYefpIGxlICVCICglYikgcmVw6XLpIGRhbnMgbCdAaSBAbyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAbyBAaSAlaSBpbiBAUy5cbiIKK21zZ3N0ciAiQGkgQG8gJWkgQEkgZGFucyBsZSBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJAaSAlaSBASSBkYW5zIGxhIGxpc3RlIGRlcyBAaXMgQG9zLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJMZSBAUyBkdSBAaiBhIHVuIGRyYXBlYXUgZGUgZm9uY3Rpb25uYWxpdOlzIGluY29ubnUgc+lsZWN0aW9ubukgZW4gbGVjdHVyZSAiCisic2V1bGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIkxlIEBTIGR1IEBqIGNvbnRpZW50IHVuIGRyYXBlYXUgbm9uIHJlY29ubnUgZGUgZm9uY3Rpb25uYWxpdOlzICIKKyJpbmNvbXBhdGlibGVzLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgImNldHRlIHZlcnNpb24gZGUgQGogbidlc3QgcGFzIHN1cHBvcnTpZSBwYXIgY2V0IGUyZnNjay5cbiIKKworIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1vdmluZyBAaiBmcm9tIC8lcyB0byBoaWRkZW4gQGkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJE6XBsYWNlbWVudCBkdSBAaiDgIHBhcnRpciBkZSAvJXMgdmVycyBsJ0BpIGNhY2jpLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJFUlJFVVIgbG9ycyBkdSBk6XBsYWNlbWVudCBkdSBAaqA6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJDaGFtcHMgZGUgQFMgZGUgQGogQG4gcmVw6XLpcyAo4CBwYXJ0aXIgZHUgQGogVjEpLlxuIgorIkVmZmFjZW1lbnQgZGVzIGNoYW1wcyBhdS1kZWzgIGR1IEBTIGRlIEBqIFYxLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJFeOljdXRlciBxdWFuZCBt6m1lIGxlIEBqIgorCisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3Cittc2dpZCAiUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBAUywgc28gcnVubmluZyBAaiBhbnl3YXkuXG4iCittc2dzdHIgIiIKKyJMZSBkcmFwZWF1IGRlIHLpY3Vw6XJhdGlvbiBuJ2VzdCBwYXMgYWN0aXbpIGRhbnMgbGUgQFMgZGUgc2Vjb3VycywgbGUgQGogIgorInNlcmEgZG9uYyBxdWFuZCBt6m1lIGV46WN1dOkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyJBcmNoaXZhZ2UgZGVzIGluZm9ybWF0aW9ucyBkdSBAYiBkZSBsJ0BpIGR1IEBqLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJMZSBAZiBuJ2EgcGFzIGwnb3B0aW9uIHJlc2l6ZV9pbm9kZSBhY3RpdullLCBtYWlzIHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorImVzdCAlTqA7IEBzIHrpcm8uICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICIiCisiUmVzaXplX2lub2RlIG4nZXN0IHBhcyBhY3RpduksIG1haXMgbCdAaSBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBuJ2VzdCBwYXMgIgorIm51bC4gIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkwnQGkgZGUgY2hhbmdlbWVudCBkZSB0YWlsbGUgbidlc3QgcGFzIHZhbGlkZS4gIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkxhIGRhdGUgZGUgZGVybmllciBtb250YWdlIGR1IEBTICgldCxcbiIKKyJcdG1haW50ZW5hbnQgPSAlVCkgZXN0IGRhbnMgbGUgZnV0dXIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisiTGEgZGF0ZSBkZSBkZXJuaehyZSDpY3JpdHVyZSBkdSBAUyAoJXQsXG4iCisiXHRtYWludGVuYW50ID0gJVQpIGVzdCBkYW5zIGxlIGZ1dHVyLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICJMJ2luZGljYXRpb24gZHUgQFMgcG91ciBsZSBAUyBleHRlcm5lIEBzICVYLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBam91dCBkZSBsJ2luZGljYXRpb24gq6BkaXJoYXNooLsgYXUgQGYuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiTGUgY2hlY2tzdW0gZHUgZGVzY3JpcHRldXIgZGUgQGcgJWcgZXN0ICUwNHgsIGRldnJhaXQg6nRyZSAlMDR5LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICIiCisiTGUgZGVzY3JpcHRldXIgZGUgQGcgJWcgZXN0IG1hcnF16SBjb21tZSBub24gaW5pdGlhbGlz6SBhbG9ycyBxdWUgbGFcbiIKKyJmb25jdGlvbm5hbGl06SBuJ2VzdCBwYXMgYWN0aXbpZS5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorIkxlIGRlc2NyaXB0ZXVyIGRlIEBnICVnIGEgdW4gbm9tYnJlIGludmFsaWRlIGQnaS1ub2V1ZHMgbm9uIHV0aWxpc+lzICViLiAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJMZSBAQiBkZSBAYiBkdSBkZXJuaWVyIEBnIG4nZXN0IHBhcyBpbml0aWFsaXPpLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdHJhbnNhY3Rpb24gJWkgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC5cbiIKK21zZ3N0ciAiIgorIkxhIHRyYW5zYWN0aW9uICVpIGR1IGpvdXJuYWwg6XRhaXQgY29ycm9tcHVlLCBsZSByZWpldSBhIOl06SBhYmFuZG9ubukuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkxlIGRyYXBlYXUgdGVzdF9mcyBlc3QgcG9zaXRpb25u6SAoZXQgZXh0NCBlc3QgZGlzcG9uaWJsZSkuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkxhIGRhdGUgZGUgZGVybmllciBtb250YWdlIGR1IEBTIGVzdCBkYW5zIGxlIGZ1dHVyLlxuIgorIlx0KGRlIG1vaW5zIGQndW4gam91ciwgcHJvYmFibGVtZW50IOAgY2F1c2UgZCd1bmUgaG9ybG9nZSBtYXTpcmllbGxlIG1hbCAiCisiY29uZmlndXLpZSlcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5NworbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkxhIGRhdGUgZGUgZGVybmnocmUg6WNyaXR1cmUgZHUgQFMgZXN0IGRhbnMgbGUgZnV0dXIuXG4iCisiXHQoZGUgbW9pbnMgZCd1biBqb3VyLCBwcm9iYWJsZW1lbnQg4CBjYXVzZSBkJ3VuZSBob3Jsb2dlIG1hdOlyaWVsbGUgbWFsICIKKyJjb25maWd1cullKVxuIgorCisjLiBALWV4cGFuZGVkOiBPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKK21zZ2lkICJPbmUgb3IgbW9yZSBAYiBAZyBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gICIKK21zZ3N0ciAiIgorIkxlIGNoZWNrc3VtIGQndW4gb3UgZGUgcGx1c2lldXJzIGRlc2NyaXB0ZXVycyBkZSBAZyBkZSBAYiBlc3QgaW52YWxpZGUuICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiROlmaW5pdGlvbiBkdSBjb21wdGV1ciBkJ0BpcyBsaWJyZXMg4CAlaiAo6XRhaXQgJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgY29tcHRldXIgZGVzIEBicyBsaWJyZXMg4CAlYyAo6XRhaXQgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIkRpc3NpbXVsYXRpb24gZGUgbCdAaSBkZSBAcSAlaSAoJVEpLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiCittc2dzdHIgIkxlIEBTIGEgdW4gQGIgTU1QIGludmFsaWRlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiQFMgYSB1biBudW3pcm8gbWFnaXF1ZSBNTVAgaW52YWxpZGUuICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX29wZW4yOiAlbVxuIgorbXNnc3RyICJleHQyZnNfb3BlbjI6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICJleGV0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisiTGUgbWV0YWRhdGFfY3N1bSBkdSBAUyBhbm51bGUgdW5pbml0X2JnoDsgbGVzIGRldXggYml0cyBkZSBmb25jdGlvbmFsaXTpcyBuZSAiCisicGV1dmVudCDqdHJlIHBvc2l0aW9ubulzIHNpbXVsdGFu6W1lbnQuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAiTGEgc29tbWUgZGUgY29udHL0bGUgZHUgYmxvYyBNTVAgZHUgQFMgbmUgY29ycmVzcG9uZCBwYXMgYXUgYmxvYyBNTVAuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorIkxlIHN1cGVyYmxvYyBkJ3VuIHN5c3TobWUgZGUgZmljaGllciA2NGJpdCBhIGJlc29pbiBkZXMgZXh0ZW50cyBwb3VyIGFjY+lkZXIgIgorIuAgbCdlbnNlbWJsZSBkdSBkaXNxdWUuICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIkZpcnN0X21ldGFfYmcgZXN0IHRyb3AgZ3JhbmQuICglTiwgdmFsZXVyIG1heGltdW0gJWcpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJMYSBzb21tZSBkZSBjb250cvRsZSBkdSBAUyBkdSBAaiBleHRlcm5lIG5lIGNvcnJlc3BvbmQgcGFzIGF1IEBTIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDcyCittc2dpZCAiQFMgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLiIKK21zZ3N0ciAiTGUgbWV0YWRhdGFfY3N1bV9zZWVkIGR1IEBTIG4nZXN0IHBhcyBu6WNlc3NhaXJlIHNhbnMgbWV0YWRhdGFfY3N1bS4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorIkVycmV1ciBsb3JzIGRlIGwnaW5pdGlhbGlzYXRpb24gZHUgY29udGV4dGUgZGUgcXVvdGEgZGFucyBsYSBiaWJsaW90aOhxdWUgIgorInN1cHBvcnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgIlBhc3NloDGgOiB26XJpZmljYXRpb24gZGVzIEBpcywgZGVzIEBicyBldCBkZXMgdGFpbGxlc1xuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAibCdAciBuJ2VzdCBwYXMgdW4gQGQuICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICJsJ0ByIGEgdW4gZHRpbWUgKHByb2JhYmxlbWVudCBlbiByYWlzb24gZCd1biB2aWV1eCBta2UyZnMpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJsJ0BpIHLpc2VydukgJWkgKCVRKSBhIHVuIG1vZGUgQG4uICIKKworIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgImwnQGkgQEQgJWkgYSB1biBkdGltZSBudWwuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAibCdAaSAlaSBlc3QgdXRpbGlz6SwgbWFpcyBhIHVuIGR0aW1lLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBhIEB6IEBkLiAgIgorbXNnc3RyICJsJ0BpICVpIGVzdCB1biBAZCBAei4gIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgImxlIEBCIGRlIEBicyBkdSBAZyAlZyDgICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgImxlIEBCIGQnQGlzIGR1IEBnICVnIOAgJWIgQEMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICJsYSB0YWJsZSBkJ0BpcyBkdSBAZyAlZyDgICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJsZSBAQiAoJWIpIGRlIEBicyBkdSBAZyAlZydzIGVzdCBjb3Jyb21wdS4gIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDgKK21zZ2lkICJAZyAlZydzIEBpIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJsZSBAQiAoJWIpIGQnQGlzIGR1IEBnICVnJ3MgZXN0IGNvcnJvbXB1LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgaV9zaXplIGVzdCAlSXMsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfQGJzIGVzdCAlSWIsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICIlQiAoJWIpIEBJIGRhbnMgbCdAaSAlaS4gIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAibGUgJUIgKCViKSBjaGV2YXVjaGUgbGVzIG3pdGFkb25u6WVzIGRlIEBmIGRhbnMgbCdAaSAlaS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgImwnQGkgJWkgYSB1bihkZXMpIEBiKHMpIGlsbOlnYWwoYXV4KS4gIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIlRyb3AgZGUgQGJzIGlsbOlnYXV4IGRhbnMgbCdAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODMKK21zZ2lkICJASSAlQiAoJWIpIGluIGJhZCBAYiBAaS4gICIKK21zZ3N0ciAiJUIgKCViKSBASSBkYW5zIGwnQGkgZGVzIEBiIGTpZmVjdHVldXguICIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4OAorbXNnaWQgIkJhZCBAYiBAaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiTCdAaSBkZXMgQGJzIGTpZmVjdHVldXggYSB1bihkZXMpIEBiKHMpIGlsbOlnYWwoYXV4KS4gIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiQGIgZHVwbGlxdekgb3UgZOlmZWN0dWV1eCBhY3R1ZWxsZW1lbnQgdXRpbGlz6aAhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIiIKKyIlYiBk6WZlY3R1ZXV4IHV0aWxpc+kgZW4gdGFudCBxdWUgQGIgaW5kaXJlY3QgZCdAaSBkZXMgQGJzIGTpZmVjdHVldXguICIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisiXG4iCisiTCdAaSBkZXMgQGJzIGTpZmVjdHVldXggYSBwcm9iYWJsZW1lbnQg6XTpIGNvcnJvbXB1LiBWb3VzIGRldnJpZXogYXJy6nRlclxuIgorIm1haW50ZW5hbnQgZXQgZXjpY3V0ZXIgZTJmc2NrIC1jIHBvdXIgZXhhbWluZXIgbGVzIGJsb2NzIGTpZmVjdHVldXhcbiIKKyJkYW5zIGxlIEBmLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlNpIGxlIEBiIGVzdCBy6WVsbGVtZW50IGTpZmVjdHVldXgsIGxlIEBmIG5lIHBldXQg6nRyZSBy6XBhcukuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlZvdXMgcG91dmV6IHN1cHByaW1lciBsZSBAYiBkZSBsYSBsaXN0ZSBkZXMgQGIgZXJyb27pcyBldCBlc3DpcmVyIHF1ZVxuIgorImxlIEBiIHNvaXQgcullbGxlbWVudCBlbiBib24g6XRhdC4gTWFpcyBpbCBuJ3kgYSBhdWN1bmUgZ2FyYW50aWUuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIkxlIEBTIHByaW1haXJlICglYikgZXN0IHN1ciBsYSBsaXN0ZSBkZXMgQGJzIGTpZmVjdHVldXguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiTGUgYmxvYyAlYiBkYW5zIGxlcyBkZXNjcmlwdGV1cnMgZGUgQGdzIHByaW1haXJlcyBlc3QgZGFucyBsYSBsaXN0ZSBkZXMgQGJzICIKKyJk6WZlY3R1ZXV4XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJBdmVydGlzc2VtZW50oDogbGUgQFMgKCViKSBkdSBAZyAlZyBlc3QgY29ycm9tcHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnSgOiBsYSBjb3BpZSBkZXMgZGVzY3JpcHRldXJzIGRlIEBncyBkdSBAZyAlZyBhIHVuIEBiICglYikgIgorImTpZmVjdHVldXguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJFcnJldXIgZGUgcHJvZ3JhbW1hdGlvbqA/IEBiIG6wJWIgcmVjbGFt6SBzYW5zIGF1Y3VuZSByYWlzb24gZGFucyAiCisicHJvY2Vzc19iYWRfYmxvY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIkBBIGRlICVOIEBiKHMpIGNvbnRpZ3VzIGRhbnMgbGUgQGcgZGUgQGIgJWcgcG91ciAlc6A6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBiIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuIgorbXNnc3RyICJAQSBkJ3VuIHRhbXBvbiBkZSBAYiBwb3VyIGxhIHJlbG9jYWxpc2F0aW9uIGRlICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiUmVsb2NhbGlzYXRpb24gZHUgJXMgZHUgQGcgJWcgZGUgJWIgdmVycyAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIlJlbG9jYWxpc2F0aW9uIHBvdXIgbGUgQGcgJWcgZHUgJXMgdmVycyAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiQXZlcnRpc3NlbWVudKA6IGltcG9zc2libGUgZGUgbGlyZSBsZSBAYiAlYiBkZSAlc6A6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQXZlcnRpc3NlbWVudKA6IGltcG9zc2libGUgZCfpY3JpcmUgbGUgQGIgJWIgcG91ciAlc6A6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc5IGUyZnNjay9wcm9ibGVtLmM6MTc0MAorbXNnaWQgIkBBIEBpIEBCICglTik6ICVtXG4iCittc2dzdHIgIkBBIGR1IEBCIGQnQGlzICglTimgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgIkBBIGR1IEBCIGRlIEBicyAoJU4poDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkBBIGRlIGwnaW5mb3JtYXRpb24gZHUgY29tcHRldXIgZGUgbGllbnOgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGRpcmVjdG9yeSBibG9jayBhcnJheTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGQgQGIgYXJyYXk6ICVtXG4iCittc2dzdHIgIkBBIGR1IHRhYmxlYXUgZGVzIEBicyBkZSBAZHOgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgQGlzICglaSk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGwnZXhhbWVuIGRlcyBAaXMgKCVpKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsYSBib3VjbGUgZCdpdOlyYXRpb24gc3VyIGxlcyBAYnMgZGFucyBsJ0BpICVpoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyZXVyIGxvcnMgZHUgc3RvY2thZ2UgZHUgY29tcHRldXIgZCdpbmZvcm1hdGlvbiBkJ0BpIChAaT0laSwgY29tcHRldXI9IgorIiVOKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyZXVyIGxvcnMgZHUgc3RvY2thZ2UgZGUgbCdpbmZvcm1hdGlvbiBkdSBAYiBkZSBAZHMgKEBpPSVpLCBAYj0lYiwgbnVtPSIKKyIlTimgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnQGkgJWmgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgIgorbXNnc3RyICJsJ0BpICVpIGEgdW4gZHJhcGVhdSBpbWFnaWMgYWN0aXbpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJMZSBmaWNoaWVyIHNw6WNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIChAaSAlaSkgYSBsZSBkcmFwZWF1XG4iCisiaW1tdXRhYmxlIG91IGFwcGVuZC1vbmx5IGFjdGl26S4gIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIkwnQGkgc3DpY2lhbCAoQHYvc29ja2V0L2ZpZm8pICVpIGEgdW5lIHRhaWxsZSBub24gbnVsbGUuICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKK21zZ2lkICJAaiBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAibCdAaSBkZSBAaiBuJ2VzdCBwYXMgdXRpbGlz6SBtYWlzIGNvbnRpZW50IGRlcyBkb25u6WVzLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJsZSBAaiBuJ2VzdCBwYXMgdW4gZmljaGllciBub3JtYWwuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHdhcyBwYXJ0IG9mIHRoZSBAbyBAaSBsaXN0LiAgIgorbXNnc3RyICJsJ0BpICVpIGZhaXQgcGFydGllIGRlIGxhIGxpc3RlIGRlcyBAaXMgQG9zLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorImRlcyBAaXMgcXVpIGZhaXNhaWVudCBwYXJ0aWUgZCd1bmUgbGlzdGUgY2hh7m7pZSBkJ29ycGhlbGlucyBjb3Jyb21wdWUgb250ICIKKyLpdOkgcmVw6XLpcy4gIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBkJ3VuZSBzdHJ1Y3R1cmUgZGUgY29tcHRhZ2UgZGUgculm6XJlbmNlcyAoJU4poDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsYSBsZWN0dXJlIGR1IEBiICViIGQnQGEgcG91ciBsJ0BpICVpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGJhZCBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzgwCittc2dpZCAiQGkgJWkgaGFzIGEgYmFkIEBhIEBiICViLiAgIgorbXNnc3RyICJsJ0BpICVpIGEgdW4gbWF1dmFpcyBAYiAlYiBkJ0BhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJFcnJldXIgZGUgbGVjdHVyZSBkdSBAYiAlYiBkJ0BhICglbSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAibGUgQGIgJWIgZCdAYSBhIHVuIGNvbXB0ZXVyIGRlIHLpZulyZW5jZSAlciwgQHMgJU4uICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkVycmV1ciBkJ+ljcml0dXJlIGR1IEBiICViIGQnQGEgKCVtKS4gIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIGhfYmxvY2tzID4gMS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICJsZSBAYiAlYiBkJ0BhIGEgaF9ibG9ja3OgPqAxLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDUKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkBBIGQndW5lIHN0cnVjdHVyZSBkJ2FsbG9jYXRpb24gZGUgculnaW9uIGQnQGEuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgImxlIEBiICViIGQnQGEgZXN0IGNvcnJvbXB1IChjb2xsaXNpb24gZCdhbGxvY2F0aW9uKS4gIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCBuYW1lKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTUKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiBuYW1lKS4gICIKK21zZ3N0ciAibGUgQGIgJWIgZCdAYSBlc3QgY29ycm9tcHUgKG5vbSBAbikuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAibGUgQGIgJWIgZCdAYSBlc3QgY29ycm9tcHUgKHZhbGV1ciBAbikuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAibCdAaSAlaSBlc3QgdHJvcCBncmFuZC4gIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJsZSAlQiAoJWIpIHJlbmQgbGUgQGQgdHJvcCBncmFuZC4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAibGUgJUIgKCViKSByZW5kIGxlIGZpY2hpZXIgdHJvcCBncmFuZC4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAibGUgJUIgKCViKSByZW5kIGxlIGxpZW4gc3ltYm9saXF1ZSB0cm9wIGdyYW5kLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorImwnQGkgJWkgYSBsZSBkcmFwZWF1IElOREVYX0ZMIGFjdGl26SBzdXIgbGUgQGYgc2FucyBzdXBwb3J0IGRlcyBodHJlZXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIEBkLlxuIgorbXNnc3RyICJsJ0BpICVpIGEgbGUgZHJhcGVhdSBJTkRFWF9GTCBhY3RpdukgbWFpcyBuJ2VzdCBwYXMgdW4gQGQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgImwnQGggJWkgYSB1biBub2V1ZCByb290IEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgImwnQGggJWkgZGlzcG9zZSBkJ3VuZSB2ZXJzaW9uIGRlIGhhY2hhZ2Ugbm9uIHN1cHBvcnTpZSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgImwnQGggJWkgdXRpbGlzZSB1biBkcmFwZWF1IGRlIG5vZXVkIHJvb3QgaW5jb21wYXRpYmxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJsJ0BoICVpIGEgdW5lIGhhdXRldXIgZCdhcmJyZSAoJU4pIHF1aSBlc3QgdHJvcCBncmFuZGVcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorImwnQGkgZGVzIEBicyBk6WZlY3R1ZXV4IGEgdW4gQGIgaW5kaXJlY3QgKCViKSBxdWkgZW50cmUgZW4gY29uZmxpdCBhdmVjIGxlcyAiCisibel0YWRvbm7pZXMgZHUgQGYuICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXplIEBpIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLiIKK21zZ3N0ciAiTGEgKHJlLSljculhdGlvbiBkZSBsJ0BpIGRlIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGEg6WNob3XpoDogJW0uIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODUKK21zZ2lkICJAaSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgImwnQGkgJWkgYSB1bmUgdGFpbGxlIGV4dHJhICglSVMpIHF1aSBlc3QgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgImwnQGEgZGFucyBsJ0BpICVpIGEgdW5lIGxvbmd1ZXVyIGRlIG5vbSAoJU4pIHF1aSBlc3QgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJsJ0BhIGRhbnMgbCdAaSAlaSBhIHVuZSB2YWxldXIgZGUgZOljYWxhZ2UgKCVOKSBxdWkgZXN0IEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgImwnQGEgZGFucyBsJ0BpICVpIGEgdW4gQGIgZGUgdmFsZXVyICglTikgcXVpIGVzdCBAbiAoZG9pdCDqdHJlIDApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJsJ0BhIGRhbnMgbCdAaSAlaSBhIHVuZSB2YWxldXIgZGUgdGFpbGxlICglTikgcXVpIGVzdCBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAibCdAYSBkYW5zIGwnQGkgJWkgYSB1biBoYWNoYWdlICglTikgcXVpIGVzdCBAblxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJsJ0BpICVpIGVzdCB1biAlSXQgbWFpcyBpbCBzZW1ibGUgcXUnaWwgc29pdCBlbiBmYWl0IHVuIHLpcGVydG9pcmUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGwnaXTpcmF0aW9uIHN1ciBsJ2FyYnJlIGQnQHhzIGRhbnMgbCdAaSAlaaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorIk4nYSBwdSBpdOlyZXIgc3VyIGxlcyBleHRlbnRzIGRlIGwnQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiTCdAaSAlaSBhIHVuIGV4dGVudCBAblxuIgorIlx0KEBiIGxvZ2lxdWUgJWMsIEBiIHBoeXNpcXVlIEBuICViLCBsb25ndWV1ciAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJMJ0BpICVpIGEgdW4gZXh0ZW50IEBuXG4iCisiXHQoQGIgbG9naXF1ZSAlYywgQGIgcGh5c2lxdWUgJWIsIGxvbmd1ZXVyIEBuICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorImwnQGkgJWkgYSBsZSBkcmFwZWF1IEVYVEVOVFNfRkwgYWN0aXbpIHN1ciBsZSBAZiBzYW5zIHN1cHBvcnQgZGVzIGV4dGVudHMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBAUyBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuIgorbXNnc3RyICIiCisiTCdAaSAlaSBhIHVuIGZvcm1hdCBkJ2V4dGVudCwgbWFpcyBsZSBAUyBuJ2EgcGFzIGxhIGZvbmN0aW9ubmFsaXTpIEVYVEVOVFNcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iCittc2dzdHIgIkwnQGkgJWkgbidhIHBhcyBsZSBkcmFwZWF1IEVYVEVOVF9GTCwgbWFpcyBhIHVuIGZvcm1hdCBkJ2V4dGVudFxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIkxlIGZhc3Qgc3ltbGluayAlaSBhIGxlIGRyYXBlYXUgRVhURU5UX0ZMIGFjdGl26S4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiTCdAaSAlaSBhIGRlcyBleHRlbnRzIGRhbnMgbGUgZOlzb3JkcmVcbiIKKyJcdChAYiBsb2dpcXVlIEBuICVjLCBAYiBwaHlzaXF1ZSAlYiwgbG9uZ3VldXIgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1Cittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiTCdAaSAlaSBhIHVuIG5vZXVkIGQnZXh0ZW50IGludmFsaWRlIChibGsgJWIsIGxibGsgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbGEgY29udmVyc2lvbiBkdSBAQiBkZSBAYiBkZSBzb3VzLWNsdXN0ZXKgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkwnQGkgZGUgQHEgbidlc3QgcGFzIHVuIGZpY2hpZXIgbm9ybWFsLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJMJ0BpIGRlIEBxIG4nZXN0IHBhcyB1dGlsaXPpIG1haXMgY29udGllbnQgZGVzIGRvbm7pZXMuICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJMJ0BpIGRlIEBxIGVzdCB2aXNpYmxlIHBhciBsJ3V0aWxpc2F0ZXVyLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICJMJ0BpIGRlcyBAYnMgZOlmZWN0dWV1eCBhIGwnYWlyIEBuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTUKK21zZ2lkICIiCisiQGkgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViKVxuIgorbXNnc3RyICIiCisiTCdAaSAlaSBhIHVuIGV4dGVudCBkZSB0YWlsbGUgbnVsbGVcbiIKKyJcdChAYiBsb2dpcXVlIEBuICVjLCBAYiBwaHlzaXF1ZSAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJsJ0BpICVpIHNlbWJsZSBjb250ZW5pciBkZXMgZG9ubullcyBpbmNvcnJlY3Rlcy4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGkuICAiCittc2dzdHIgIiIKKyJMJ0BpICVpIHBhc3NlIGxlcyB26XJpZmljYXRpb25zLCBtYWlzIGxhIHNvbW1lIGRlIGNvbnRy9GxlIG5lIGNvcnJlc3BvbmQgcGFzICIKKyLgIGwnQGkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiTCdAIGRlIGwnQGkgJWkgZXN0IGNvcnJvbXB1IChjb2xsaXNpb24gZCdhbGxvY2F0aW9uKS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKK21zZ2lkICIiCisiQGkgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiTGUgYmxvYyBkJ2V4dGVudCBkZSBsJ0BpICVpIHBhc3NlIGxlcyB26XJpZmljYXRpb25zLCBtYWlzIGxhIHNvbW1lIGRlICIKKyJjb250cvRsZSBuZSBjb3JyZXNwb25kIHBhcyDgIGwnZXh0ZW50XG4iCisiXHQoQGIgbG9naXF1ZSAlYywgQGIgcGh5c2lxdWUgJWIsIGxvbmd1ZXVyICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKyJMZSBAYiBkJ0BhIGRlIGwnQGkgJWkgcGFzc2UgbGVzIHbpcmlmaWNhdGlvbnMsIG1haXMgbGEgc29tbWUgZGUgY29udHL0bGUgbmUgIgorImNvcnJlc3BvbmQgcGFzIGF1IEBiLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEludGVyaW9yIGV4dGVudCBub2RlIGxldmVsICVOIG9mIGlub2RlICVpOlxuCisjLiBALWV4cGFuZGVkOiBMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0Cittc2dpZCAiIgorIkludGVyaW9yIEB4IG5vZGUgbGV2ZWwgJU4gb2YgQGkgJWk6XG4iCisiTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAiCittc2dzdHIgIiIKKyJFeHRlbnQgaW506XJpZXVyIGRlIG5pdmVhdSBkZSBub2V1ZCAlTiBkZSBsJ2ktbm9ldWQgJWk6XG4iCisiTGUgZOlidXQgbG9naXF1ZSAlYiBuZSBjb3JyZXNwb25kIHBhcyBhdSBk6WJ1dCBsb2dpcXVlICVjIGR1IG5pdmVhdSAiCisic3VpdmFudC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiRGFucyBsJ0BpICVpLCBsYSBmaW4gZGUgbCdleHRlbnQgZOlwYXNzZSBsYSB2YWxldXIgYXV0b3Jpc+llXG4iCisiXHQoQGIgbG9naXF1ZSAlYywgQGIgcGh5c2lxdWUgJWIsIGxvbmd1ZXVyICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgQFMgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJMJ0BpICVpIGEgZGVzIGRvbm7pZXMgZW4gbGlnbmUsIG1haXMgbGUgQFMgbidhIHBhcyBsYSBmb25jdGlvbm5hbGl06SAiCisiSU5MSU5FX0RBVEFcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gZmlsZXN5c3RlbSB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1MAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJMJ0BpICVpIGEgbGUgZHJhcGVhdSBJTkxJTkVfREFUQV9GTCBhY3Rpdukgc3VyIGxlIEBmIHNhbnMgc3VwcG9ydCBkZXMgIgorImRvbm7pZXMgZW4gbGlnbmUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisiTGUgYmxvYyAlYiBkZSBsJ0BpICVpIGNvbmZsaWN0ZSBhdmVjIGRlcyBtZXRhLWRvbm7pZXMgY3JpdGlxdWVzLCBzYXV0ZSBsZXMgIgorInbpcmlmaWNhdGlvbnMgZHUgYmxvYy5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGJsb2NrICViIHNob3VsZCBiZSBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDYzCittc2dpZCAiQGQgQGkgJWkgQGIgJWIgc2hvdWxkIGJlIGF0IEBiICVjLiAgIgorbXNnc3RyICJAaSBkZSBAZCAlaSBhIHVuIG1hdXZhaXMgQGIgJWIgZCdAYS4gIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiTCdAaSBkZSBAZCAlaSBhIHVuIEB4IG1hcnF16SBub24gaW5pdGlhbGlz6SBhdSBAYiAlYy4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiTCdAaSAlaSBAYiBsb2dpcXVlICViIChAYiBwaHlzaXF1ZSAlYykgdmlvbGUgbGVzIHLoZ2xlcyBkJ2FsbG9jYXRpb24gZGUgIgorImNsdXN0ZXIuXG4iCisiU2VyYSBjb3JyaWfpIHBlbmRhbnQgbGEgcGFzc2UgMUIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorIkwnQGkgJWkgYSBsZSBkcmFwZWF1IElOTElORV9EQVRBX0ZMIGFjdGl26SBtYWlzIGwnQGEgbidhIHBhcyDpdOkgdHJvdXbpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgJWkpIGhhcyBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIkxlIGZpY2hpZXIgc3DpY2lhbCAoQHYvc29ja2V0L2ZpZm8pIChAaSAlaSkgYSBsZSBkcmFwZWF1XG4iCisiZXh0ZW50cyBvdSBpbmxpbmUtZGF0YS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgYSB1biBlbi106nRlIGQnQHggbWFpcyBsZSBkcmFwZWF1IGRlIGRvbm7pZXMgZW4gbGlnbmUgZXN0ICIKKyJwb3NpdGlvbm7pLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgc2VtYmxlIGF2ZWMgZGVzIGRvbm7pZXMgZW4gbGlnbmUgbWFpcyBsZSBkcmFwZWF1IGQnQHggZXN0ICIKKyJwb3NpdGlvbm7pLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgc2VtYmxlIGF2b2lyIHVuZSBjYXJ0ZSBkZSBAYiBtYWlzIGxlcyBkcmFwZWF1eCBkZSBkb25u6WVzIGVuIGxpZ25lICIKKyJldCBkJ0B4IHNvbnQgcG9zaXRpb25u6XMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgYSBkZXMgZG9ubullcyBlbiBsaWduZSBldCBsZSBkcmFwZWF1IGQnQHggcG9zaXRpb25u6SBtYWlzIGwnaV9ibG9jayAiCisiY29udGllbnQgZGVzIGTpY2hldHMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisiTGEgbGlzdGUgZGVzIGJsb2NzIGTpZmVjdHVldXggaW5kaXF1ZSBxdWUgbGEgbGlzdGUgZGUgYmxvY3MgZOlmZWN0dWV1eCAlaSAiCisiZXN0IGTpZmVjdHVldXNlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJAQSBkJ3VuZSBzdHJ1Y3R1cmUgZCdhbGxvY2F0aW9uIGRlIHLpZ2lvbiBkJ0B4LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYSBkdXBsaWNhdGUgQHggbWFwcGluZ1xuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJMJ0BpICVpIGEgdW4gcGxhbiBkZSBAeCBkb3VibG9uXG4iCisiXHQoQGIgbG9naXF1ZSAlYywgQGIgcGh5c2lxdWUgQG4gJWIsIGxvbmd1ZXVyICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiQEEgZGUgbeltb2lyZSBwb3VyIGxhIGxpc3RlIGRlcyBAZCBjaGlmZnLpc1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5Cittc2dpZCAiQGkgJWkgQHggdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbiIKK21zZ3N0ciAiIgorIkwnYXJicmUgZCdAeCBkZSBsJ2ktbm9ldWQgQGkgcG91cnJhaXQg6nRyZSBtb2lucyBwcm9mb25kICglYqA7IHBvdXJyYWl0IOp0cmUgIgorIjw9ICVjKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBvbiBiaWdhbGxvYyBmaWxlc3lzdGVtIGNhbm5vdCBiZSBibG9jayBtYXBwZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBvbiBiaWdhbGxvYyBAZiBjYW5ub3QgYmUgQGIgbWFwcGVkLiAgIgorbXNnc3RyICJMJ0BpICVpIHN1ciBsZSBAZiBiaWdhbGxvYyBuZSBwZXV0IHBhcyDqdHJlIHByb2pldOkgc3VyIHVuIEBiLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgIkwnQGkgJWkgYSB1biBlbi106nRlIGQnQHggY29ycm9tcHUuICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorIkxlcyBob3JvZGF0YWdlcyBzdXIgbCdAaSAlaSBhdS1kZWzgIGR1IDA0LzA0LzIzMTAgc29udCBwcm9iYWJsZW1lbnQgIgorInBy6S0xOTcwLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFeOljdXRpb24gZGUgcGFzc2VzIGFkZGl0aW9ubmVsbGVzIHBvdXIgculzb3VkcmUgbGVzIHByb2Js6G1lcyBkZSBAYnMgIgorInLpY2xhbelzIHBhciBwbHVzIGQndW4gQGkuLi5cbiIKKyJQYXNzZaAxQqA6IHLpLWV4YW1lbiBwb3VyIGxlcyBAYnMgQG1cbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIkBiKHMpIEBtIGRhbnMgbCdAaSAlaaA6IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGwnZXhhbWVuIGRlcyBpLW5vZXVkcyAoJWkpoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJAQSBkdSBAQiBkJ0BpcyAoaV9ub2RlX2R1cF9tYXApoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGVzIGl06XJhdGlvbnMgc3VyIGxlcyBAYnMgZGFucyBsJ0BpICVpICglcymgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODcgZTJmc2NrL3Byb2JsZW0uYzoxNTQ5Cittc2dpZCAiRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBAYSBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJFcnJldXIgZCdhanVzdGVtZW50IGRlIHJlZmNvdW50IHBvdXIgbGUgQGIgJWIgZCdAYSAoQGkgJWkpoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiUGFzc2UgMUOgOiBleGFtZW4gZGVzIHLpcGVydG9pcmVzIHBvdXIgbGVzIEBpcyBhdmVjIGRlcyBAYnMgQG1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgIlBhc3NlIDFEoDogYWp1c3RlbWVudCBkZXMgQGJzIEBtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpbGUgJVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKSBcbgorIy4gQC1leHBhbmRlZDogICBoYXMgJXIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjA4Cittc2dpZCAiIgorIkZpbGUgJVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKSBcbiIKKyIgIGhhcyAlciBAbSBAYihzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbiIKK21zZ3N0ciAiIgorIkxlIGZpY2hpZXIgJVEgKEBpIG6wJWksIGRhdGUgZGUgbW9kaWZpY2F0aW9uICVJTSlcbiIKKyIgIGEgJXIgQGIocykgQG0sIHBhcnRhZ+lzIGF2ZWMgJU4gZmljaGllcihzKaA6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0JVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTQKK21zZ2lkICJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIKK21zZ3N0ciAiXHQlUSAoQGkgbrAlaSwgZGF0ZSBkZSBtb2RpZmljYXRpb24gJUlNKVxuIgorCisjLiBALWV4cGFuZGVkOiBcdDxmaWxlc3lzdGVtIG1ldGFkYXRhPlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiXHQ8bel0YWRvbm7pZSBkdSBAZj5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKK21zZ2lkICIiCisiKFRoZXJlIGFyZSAlTiBAaXMgY29udGFpbmluZyBAbSBAYnMuKVxuIgorIlxuIgorbXNnc3RyICIiCisiKElsIHkgYSAlTiBAaXMgY29udGVuYW50IGRlcyBAYnMgQG0uKVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisiQGJzIEBtIGTpauAg6XTpIHLpYXNzaWdu6XMgb3UgY2xvbulzLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAiTidhIHB1IGNsb25lciBsZSBmaWNoaWVyoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJQYXNzZSAxRaA6IE9wdGltaXNhdGlvbiBkZXMgYXJicmVzIGQnQHhcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICLJY2hlYyBkJ29wdGltaXNhdGlvbiBkZSBsJ2FyYnJlIGQnQHggJXAgKCVpKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorbXNnaWQgIk9wdGltaXppbmcgQHggdHJlZXM6ICIKK21zZ3N0ciAiT3B0aW1pc2F0aW9uIGRlcyBhcmJyZXMgZCdAeKA6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKyJFcnJldXIgaW50ZXJuZTogbGEgbGFyZ2V1ciBtYXhpbWFsZSBkZSBsJ2FyYnJlIGQnZXh0ZW50cyBlc3QgdHJvcCBncmFuZGUgIgorIiglYqA7IGF0dGVuZHU9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICJMJ2FyYnJlIGQnQHggZGUgbCdAaSAlaSAoYXUgbml2ZWF1ICViKSBwb3VycmFpdCDqdHJlIHBsdXMgY291cnQuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjgzCittc2dpZCAiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgIgorbXNnc3RyICJMJ2FyYnJlIGQnQHggZGUgbCdAaSAlaSAoYXUgbml2ZWF1ICViKSBwb3VycmFpdCDqdHJlIHBsdXMg6XRyb2l0LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTAKK21zZ2lkICJQYXNzIDI6IENoZWNraW5nIEBkIHN0cnVjdHVyZVxuIgorbXNnc3RyICJQYXNzZSAyoDogdulyaWZpY2F0aW9uIGRlIGxhIHN0cnVjdHVyZSBkZXMgQGRzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk51belybyBkJ0BpIEBuIHBvdXIgq6AuoLsgZGFucyBsJ0BpIGRlIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiTCdARSBhIHVuIG6wIGQnQGkgQG6gOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkwnQEUgYSB1biBAaSBARC9ub24gdXRpbGlz6SAlRGkuICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJMJ0BFIEBMIHZlcnMgq6AuoLsgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHBvaW50cyB0byBpbm9kZSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTUKK21zZ2lkICJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIKK21zZ3N0ciAiTCdARSBwb2ludGUgdmVycyBsJ0BpICglRGkpIGxvY2FsaXPpIGRhbnMgdW4gQGIgZOlmZWN0dWV1eC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiTCdARSBATCB2ZXJzIGxlIEBkICVQICglRGkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byB0aGUgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzI1Cittc2dpZCAiQEUgQEwgdG8gdGhlIEByLlxuIgorbXNnc3RyICJMJ0BFIEBMIHZlcnMgbCdAci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJMJ0BFIGEgdW4gY2FyYWN06HJlIGlsbOlnYWwgZGFucyBzb24gbm9tLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiq6AuoLsgbWFucXVhbnQgZGFucyBsJ0BpIGRlIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLi4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICKroC4uoLsgbWFucXVhbnQgZGFucyBsJ0BpIGRlIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIkxhIHByZW1p6HJlIEBlIKugJURuoLsgKEBpPSVEaSkgZGFucyBsJ0BpIGRlIEBkICVpICglcCkgQHMgq6AuoLtcbiIKKworIy4gQC1leHBhbmRlZDogU2Vjb25kIGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSBzaG91bGQgYmUgJy4uJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTAKK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICJMYSBzZWNvbmRlIEBlIKugJURuoLsgKEBpPSVEaSkgZGFucyBsJ0BpIGRlIEBkICVpIEBzIKugLi6gu1xuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIEBGICVJRiwgQHMgeulyby5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjAKK21zZ2lkICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbCBARiAlSWYsIEBzIHrpcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB66XJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnJhZyBARiAlTiwgQHMgeulyby5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mc2l6ZSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3NQorbXNnaWQgImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnNpemUgQEYgJU4sIEBzIHrpcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAiTCdAaSAlaSAoJVEpIGEgdW4gbW9kZSBAbiAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiQGkgZGUgQGQgJWksICVCLCBk6XBsYWNlbWVudCAlTqA6IEBkIGNvcnJvbXB1XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIkBpIGRlIEBkICVpLCAlQiwgZOlwbGFjZW1lbnQgJU6gOiBub20gZGUgZmljaGllciB0cm9wIGxvbmdcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1Cittc2dpZCAiQGQgQGkgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgIgorbXNnc3RyICJMJ0BpIGRlIEBkICVpIGEgdW4gJUIgbm9uIGFsbG916S4gIgorCisjLiBALWV4cGFuZGVkOiAnLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwMAorIywgYy1mb3JtYXQKK21zZ2lkICInLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJMJ0BlIGRlIEBkIKugLqC7IGRhbnMgbCdAaSBkZSBAZCAlaSBuJ2VzdCBwYXMgdGVybWlu6WUgcGFzIHVuIE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIicuLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJMJ0BlIGRlIEBkIKugLi6guyBkYW5zIGwnQGkgZGUgQGQgJWkgbidlc3QgcGFzIHRlcm1pbullIHBhcyB1biBOVUxMXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIKK21zZ3N0ciAiTCdAaSAlaSAoJVEpIGVzdCB1biBAdiBkZSBjYXJhY3TocmUgQEkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBibG9jayBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxNQorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgQGIgQHYuXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSBlc3QgdW4gQHYgZGUgQGIgQEkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiTCdARSBlc3QgdW4gZG91YmxvbiBkZSBsJ0BlIKugLqC7LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLi4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjUKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4uJyBAZS5cbiIKK21zZ3N0ciAiTCdARSBlc3QgdW4gZG91YmxvbiBkZSBsJ0BlIKugLi6guy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkVycmV1ciBpbnRlcm5loDogaW1wb3NzaWJsZSBkZSB0cm91dmVyIGRpcl9pbmZvIHBvdXIgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkwnQEUgYSB1biByZWNfbGVuIGRlICVEciwgQHMgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgIkBBIGQndW5lIHN0cnVjdHVyZSBpY291bnSgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJFcnJldXIgZCdpdOlyYXRpb24gc3VyIGxlcyBAYnMgZGUgQGSgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBkZSBsZWN0dXJlIGR1IEBiICViIGRlIEBkIChAaSAlaSmgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBkJ+ljcml0dXJlIGR1IEBiICViIGRlIEBkIChAaSAlaSmgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkBBIGQndW4gbm91dmVhdSBAYiBkZSBAZCBwb3VyIGwnQGkgJWkgKCVzKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbGEgZOlzYWxsb2NhdGlvbiBkZSBsJ0BpICVpoDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICJMJ0BlIGRlIEBkIHBvdXIgq6AuoLsgZGFucyAlcCAoJWkpIGVzdCBncmFuZGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSBlc3QgdW4gRklGTyBASS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSBlc3QgdW5lIHNvY2tldCBASS5cbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgdHlwZSBkZSBmaWNoaWVyIHBvdXIgbCdARSDgICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiTCdARSBhIHVuIHR5cGUgZGUgZmljaGllciBpbmNvcnJlY3QgKOl0YWl0ICVEdCwgQHMgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkwnQEUgYSB1biB0eXBlIGRlIGZpY2hpZXIgaW5pdGlhbGlz6S5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJMJ0BFIGEgdW4gbm9tIEB6LlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIkxlIGxpZW4gc3ltYm9saXF1ZSAlUSAoQGkgbrAlaSkgZXN0IEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgImxlIEBiIGQnQGEgQEYgQG4gKCVJZikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1Cittc2dpZCAiQGYgY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gQFMuXG4iCittc2dzdHIgIiIKKyJsZSBAZiBjb250aWVudCBkZSBncmFuZHMgZmljaGllcnMsIG1haXMgbidhIHBhcyBsZSBkcmFwZWF1IExBUkdFX0ZJTEUgYWN0aXbpICIKKyJkYW5zIGxlIEBTLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgIkBwIGwnQGggJWSgOiAlQiBuJ2VzdCBwYXMgculm6XJlbmPpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyNQorbXNnaWQgIkBwIEBoICVkOiAlQiByZWZlcmVuY2VkIHR3aWNlXG4iCittc2dzdHIgIkBwIGwnQGggJWSgOiAlQiBlc3Qgculm6XJlbmPpIGRldXggZm9pc1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICJAcCBsJ0BoICVkoDogJUIgYSB1biBoYWNoYWdlIG1pbmluYWwgZXJyb27pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzNQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIkBwIGwnQGggJWSgOiAlQiBhIHVuIGhhY2hhZ2UgbWF4aW1hbCBlcnJvbulcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQwCittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAiQGggJWQgQG4gKCVxKS4gIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJAcCBsJ0BoICVkICglcSmgOiBudW3pcm8gZGUgQGIgJWIgZXJyb27pLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiQHAgbCdAaCAlZKA6IGxlIG5vZXVkIHJvb3QgZXN0IEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBsaW1pdCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICJAcCBsJ0BoICVkoDogJUIgYSB1bmUgbGltaXRlIEBuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIkBwIGwnQGggJWSgOiAlQiBhIHVuIGNvbXB0ZXVyIEBuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIkBwIGwnQGggJWSgOiAlQiBhIHVuZSB0YWJsZSBkZSBoYWNoYWdlIG5vbiBvcmRvbm7pZVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgZGVwdGggKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiQHAgbCdAaCAlZKA6ICVCIGEgdW5lIHByb2ZvbmRldXIgQG4gKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc5Cittc2dpZCAiRHVwbGljYXRlIEBFIGZvdW5kLiAgIgorbXNnc3RyICJARSBkb3VibG9uIHJlcOly6WUuICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJARSBhIHVuIG5vbSBkZSBmaWNoaWVyIHF1aSBuJ2VzdCBwYXMgdW5pcXVlLlxuIgorIlJlbm9tbWFnZSBlbiAlcyIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5Cittc2dpZCAiIgorIkR1cGxpY2F0ZSBAZSAnJURuJyBmb3VuZC5cbiIKKyJcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuIgorIlxuIgorbXNnc3RyICIiCisiQGUgJyVEbicgZG91YmxvbiByZXDpcukuXG4iCisiXHRNYXJxdWFnZSBkZSAlcCAoJWkpIGNvbW1lIGRldmFudCDqdHJlIHJlLWNvbnN0cnVpdC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogaV9ibG9ja3NfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTQKK21zZ2lkICJpX2Jsb2Nrc19oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHrpcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiQGIgZGFucyBsJ0BoICVkICglcSkgaW5hdHRlbmR1LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGluIGdyb3VwICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDMKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBpbiBAZyAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbiIKK21zZ3N0ciAiQEUgculm6XJlbmNlIGwnQGkgJURpIGRhbnMgbGUgQGcgJWcgb/kgX0lOT0RFX1VOSU5JVCBlc3QgcG9zaXRpb25u6S5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIiIKKyJARSBy6WbpcmVuY2UgbCdAaSAlRGkgdHJvdXbpIGRhbnMgbGEgem9uZSBkJ2ktbm9ldWRzIG5vbiB1dGlsaXPpcyBkdSBAZyAlZy5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworbXNnaWQgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHrpcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAcCBsJ0BoICVkoDogbGUgbm9ldWQgcm9vdCBhIHVuZSBzb21tZSBkZSBjb250cvRsZSBpbmNvcnJlY3RlLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAcCBsJ0BoICVkoDogbGUgbm9ldWQgaW50ZXJuZSBhIHVuZSBzb21tZSBkZSBjb250cvRsZSBpbmNvcnJlY3RlLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyOAorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKyJAaSBkZSBAZCAlaSwgJUIsIGTpcGxhY2VtZW50ICVOoDogbGUgQGQgbidhIHBhcyBkZSBzb21tZSBkZSBjb250cvRsZS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQjogZGlyZWN0b3J5IHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzMKK21zZ2lkICJAZCBAaSAlaSwgJUI6IEBkIHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisiQGkgZGUgQGQgJWksICVCOiBsZSBAZCBwYXNzZSBsZXMgdulyaWZpY2F0aW9ucywgbWFpcyBhIHVuZSBzb21tZSBkZSBjb250cvRsZSAiCisiaW5jb3JyZWN0ZS5cbiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIkxhIHRhaWxsZSBkZSBsJ0BpIGRlIEBkIGVuIGxpZ25lICglTikgZG9pdCDqdHJlIHVuIG11bHRpcGxlIGRlIDQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpeGluZyBzaXplIG9mIGlubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgZmFpbGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRml4aW5nIHNpemUgb2YgaW5saW5lIEBkIEBpICVpIGZhaWxlZC5cbiIKK21zZ3N0ciAiTGEgY29ycmVjdGlvbiBkZSBsYSB0YWlsbGUgZGUgbCdAaSAlaSBkZSBAZCBlbiBsaWduZSBhIOljaG916S5cbiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICJMJ0BFIGNoaWZmcullIGVzdCB0cm9wIGNvdXJ0ZS5cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorbXNnaWQgIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iCittc2dzdHIgIlBhc3NloDOgOiB26XJpZmljYXRpb24gZGUgbGEgY29ubmVjdGl2aXTpIGRlcyBAZHNcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJMJ0ByIG4nZXN0IHBhcyBhbGxvdekuICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiUGFzIGQnZXNwYWNlIGRhbnMgbGUgQGQgQGwuICIKKworIy4gQC1leHBhbmRlZDogVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlICVpICglcClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuY29ubmVjdGVkIEBkIEBpICVpICglcClcbiIKK21zZ3N0ciAiQGkgJWkgKCVwKSBkZSBAZCBub24gY29ubmVjdOlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzUKK21zZ2lkICIvQGwgbm90IGZvdW5kLiAgIgorbXNnc3RyICIvQGwgbidhIHBhcyDpdOkgdHJvdXbpLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIqugLi6guyBkYW5zICVRICglaSkgZXN0ICVQICglaiksIEBzICVxICglZCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBvciBub24tZXhpc3RlbnQgL2xvc3QrZm91bmQuICBDYW5ub3QgcmVjb25uZWN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODUKK21zZ2lkICJCYWQgb3Igbm9uLWV4aXN0ZW50IC9AbC4gIENhbm5vdCByZWNvbm5lY3QuXG4iCittc2dzdHIgIi9AbCBlcnJvbukgb3UgaW5leGlzdGVudC4gTmUgcGV1dCByZWNvbm5lY3Rlci5cbiIKKworIy4gQC1leHBhbmRlZDogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBleHBhbmQgL0BsOiAlbVxuIgorbXNnc3RyICJOZSBwZXV0IOl0ZW5kcmUgL0BsoDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgIk5lIHBldXQgcmVjb25uZWN0ZXIgJWmgOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIHJlcOlyYWdlIGRlIC9AbKA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X0BioDogJW0gbG9ycyBkZSBsYSB0ZW50YXRpdmUgZGUgY3LpYXRpb24gZHUgQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X0BpoDogJW0gbG9ycyBkZSBsYSB0ZW50YXRpdmUgZGUgY3LpYXRpb24gZHUgQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X2Rpcl9AYjogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IEBkIEBiXG4iCittc2dzdHIgIiIKKyJleHQyZnNfbmV3X2Rpcl9AYqA6ICVtIGxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIGNy6WF0aW9uIGQndW4gbm91dmVhdSBAYiBkZSAiCisiQGRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICIiCisiZXh0MmZzX3dyaXRlX2Rpcl9AYqA6ICVtIGxvcnMgZGUgbGEgdGVudGF0aXZlIGQn6WNyaXR1cmUgZHUgQGIgZGUgQGQgcG91ciAvIgorIkBsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCBvbiBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGwnYWp1c3RlbWVudCBkdSBjb21wdGV1ciBkJ0BpIHN1ciBsJ0BpICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJOJ2EgcHUgY29ycmlnZXIgbGUgcGFyZW50IGRlIGwnQGkgJWmgOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk4nYSBwdSBjb3JyaWdlciBsZSBwYXJlbnQgZGUgbCdAaSAlaaA6IG4nYSBwdSB0cm91dmVyIGwnQGUgZHUgQGQgcGFyZW50XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBkZSBjculhdGlvbiBkdSBAZCByYWNpbmUgKCVzKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIkVycmV1ciBkZSBjculhdGlvbiBkdSBAZCAvQGwgKCVzKaA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJMJ0ByIG4nZXN0IHBhcyB1biBAZKA7IGFycup0IGltbelkaWF0LlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzYwCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIgorbXNnc3RyICJOZSBwZXV0IHByb2PpZGVyIHNhbnMgdW4gQHIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCBuJ2VzdCBwYXMgdW4gQGQgKGlubz0laSlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3NQorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiL0BsIGEgZGVzIGRvbm7pZXMgZW4gbGlnbmVcbiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvbG9zdCtmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODAKK21zZ2lkICIiCisiQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvQGwuXG4iCisiUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkIgorbXNnc3RyICIiCisiTmUgcGV1dCBwYXMgYWxsb3VlciBkZSBsJ2VzcGFjZSBwb3VyIC9AbC5cbiIKKyJMZXMgZmljaGllcnMgcGVyZHVzIHNlcm9udCBwbGFj6XMg4CBsYSByYWNpbmUg4CBsYSBwbGFjZSIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisiRXNwYWNlIGluc3VmZmlzYW50IHBvdXIgcmVjb3V2cmVyIGxlcyBmaWNoZXJzIHBlcmR1c6AhXG4iCisiTGli6XJleiBkZXMgZG9ubullcyBkdSBAZiBldCByZWxhbmNleiBlMmZzY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIi9AbCBlc3QgY2hpZmZy6VxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIlBhc3NlIDNBoDogb3B0aW1pc2F0aW9uIGRlcyBy6XBlcnRvaXJlc1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgIsljaGVjIGRlIGNy6WF0aW9uIGRlIGwnaXTpcmF0ZXVyIGRpcnNfdG9faGFzaKA6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiyWNoZWMgZCdvcHRpbWlzYXRpb24gZHUgculwZXJ0b2lyZSAlcSAoJWQpoDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJPcHRpbWlzYXRpb24gZGVzIHLpcGVydG9pcmVzoDogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAiUGFzc2UgNKA6IHbpcmlmaWNhdGlvbiBkZXMgY29tcHRldXJzIGRlIHLpZulyZW5jZVxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIkBpICVpIEB6IEB1LiAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIkBpICVpIEB1XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgImxlIGNvbXB0ZXVyIGRlIHLpZulyZW5jZSBkZSBsJ0BpICVpIGVzdCAlSWwsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiQVRURU5USU9OoDogQk9HVUUgREUgUFJPR1JBTU1BVElPTiBEQU5TIEUyRlNDS6AhXG4iCisiXHRPVSBVTiBJRElPVCAoVk9VUykgRVNUIEVOIFRSQUlOIERFIFbJUklGSUVSIFVOIFNZU1TITUUgREVcbiIKKyJcdEZJQ0hJRVIgTU9OVMkgKEFDVElGKS4gaW5vZGVfbGlua19pbmZvWyVpXSBlc3QgJU4sXG4iCisiXHRpLW5vZGUuaV9saW5rc19jb3VudCBlc3QgJUlsLiBJbHMgZGV2cmFpZW50IOp0cmUgbGVzIG3qbWVzoCFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICJQYXNzZSA1oDogdulyaWZpY2F0aW9uIGRlIGwnaW5mb3JtYXRpb24gZHUgc29tbWFpcmUgZGUgQGdcbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJMZSByZW1wbGlzc2FnZSDgIGxhIGZpbiBkdSBAQiBkJ0BpIG4nZXN0IHBhcyBpbml0aWFsaXPpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2OAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiTGUgcmVtcGxpc3NhZ2Ug4CBsYSBmaW4gZHUgQEIgZGUgQGJzIG4nZXN0IHBhcyBpbml0aWFsaXPpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJkaWZm6XJlbmNlcyBkZSBAQiBkZSBAYnOgOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJkaWZm6XJlbmNlcyBkZSBAQiBkJ0Bpc6A6ICIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKyJMZSBk6WNvbXB0ZSBkZXMgQGlzIGxpYnJlcyBlc3QgZXJyb27pIHBvdXIgbGUgQGcgbrAlZyAoJWksIGTpY29tcHTpPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTgKK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIiIKKyJMZSBk6WNvbXB0ZSBkZXMgculwZXJ0b2lyZXMgZXN0IGVycm9u6SBwb3VyIGxlIEBnIG6wJWcgKCVpLCBk6WNvbXB06T0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIkxlIGTpY29tcHRlIGRlcyBAaXMgbGlicmVzIGVzdCBlcnJvbukgKCVpLCBk6WNvbXB06T0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICIiCisiTGUgZOljb21wdGUgZGVzIEBicyBsaWJyZXMgZXN0IGVycm9u6SBwb3VyIGxlIEBnIG6wJWcgKCViLCBk6WNvbXB06T0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzMworbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIkxlIGTpY29tcHRlIGRlcyBAYnMgbGlicmVzIGVzdCBlcnJvbukgKCViLCBk6WNvbXB06T0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKyJFUlJFVVIgREUgUFJPR1JBTU1BVElPTqA6IGxlcyBwb2ludHMgZGUgdGVybWluYWlzb24gKCViLCAlYykgZGUgQEJzIGR1IEBmIChusCIKKyIlTikgbmUgY29uY29yZGVudCBwYXMgYXZlYyBsZXMgcG9pbnRzIGRlIHRlcm1pbmFpc29uIGRlIEBCcyBjYWxjdWzpcyAoJWksICIKKyIlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIkVycmV1ciBpbnRlcm5loDogYWp1c3RlbWVudCBhcHByb3hpbWF0aWYgZGUgbGEgZmluIGR1IGJpdG1hcCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbGEgY29waWUgZHUgQEIgZCdAaXMgZGUgcmVtcGxhY2VtZW50oDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBiIEBCOiAlbVxuIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsYSBjb3BpZSBkdSBAQiBkZXMgQGJzIGRlIHJlbXBsYWNlbWVudKA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIiIKKyJVbiBvdSBkZXMgQGIocykgZHUgQGcgJWcgZW4gY291cnMgZCd1dGlsaXNhdGlvbiBhbG9ycyBxdWUgbGUgQGcgZXN0IG1hcnF16SAiCisiQkxPQ0tfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKyJVbiBvdSBkZXMgQGkocykgZHUgQGcgJWcgZW4gY291cnMgZCd1dGlsaXNhdGlvbiBhbG9ycyBxdWUgbGUgQGcgZXN0IG1hcnF16SAiCisiSU5PREVfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICJMZSBAQiBkJ0BpIGR1IEBnICVnIG5lIGNvcnJlc3BvbmQgcGFzIOAgbGEgc29tbWUgZGUgY29udHL0bGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICJMZSBAQiBkZSBAYiBkdSBAZyAlZyBuZSBjb3JyZXNwb25kIHBhcyDgIGxhIHNvbW1lIGRlIGNvbnRy9GxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiUmVjcullciBsZSBAaiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIk1pc2Ug4CBqb3VyIGRlIGwnaW5mb3JtYXRpb24gZGUgcXVvdGEgcG91ciBsZSB0eXBlIGRlIHF1b3RhICVOIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzZXR0aW5nIGJsb2NrIGdyb3VwIGNoZWNrc3VtIGluZm86ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBzZXR0aW5nIEBiIEBnIGNoZWNrc3VtIGluZm86ICVtXG4iCittc2dzdHIgIiIKKyJFcnJldXIgbG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGRlIGwnaW5mb3JtYXRpb24gZGUgY2hlY2tzdW0gZHUgQGcgZGUgQGJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbCfpY3JpdHVyZSBkZSBsJ2luZm9ybWF0aW9uIGRlIHN5c3TobWUgZGUgZmljaGllcjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiIgorIkVycmV1ciBsb3JzIGRlIGxhIHZpZGFuZ2UgZGVzIHRhbXBvbnMgZCfpY3JpdHVyZSB2ZXJzIGxlIHDpcmlwaOlyaXF1ZSBkZSAiCisic3RvY2thZ2U6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyNgorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAiIgorIkVycmV1ciBsb3JzIGRlIGwn6WNyaXR1cmUgZGUgbCdpbmZvcm1hdGlvbiBkZSBxdW90YSBwb3VyIGxlIHR5cGUgZGUgcXVvdGEgIgorIiVOOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5oYW5kbGVkIGVycm9yIGNvZGUgKDB4JXgpIVxuIgorbXNnc3RyICJDb2RlIGQnZXJyZXVyIG5vbiB0cmFpdOkgKDB4JXgpoCFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMjcyIGUyZnNjay9wcm9ibGVtLmM6MjI3NgorbXNnaWQgIklHTk9SRUQiCittc2dzdHIgIklHTk9SySIKKworIzogZTJmc2NrL3F1b3RhLmM6MzMgZTJmc2NrL3F1b3RhLmM6NDYKK21zZ2lkICJpbiBtb3ZlX3F1b3RhX2lub2RlIgorbXNnc3RyICJkYW5zIG1vdmVfcXVvdGFfaW5vZGUiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICJN6W1vaXJlIHV0aWxpc+lloDogJWQsIHRlbXBzIHJlcXVpc6A6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAidGFpbGxlIGRlIGwnaS1ub2V1ZD0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJsb3JzIGR1IGTpbWFycmFnZSBkZSBsJ2V4YW1lbiBkZXMgaS1ub2V1ZHMiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImxvcnMgZGUgbCdleGFtZW4gZGVzIGktbm9ldWRzIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgImxvcnMgZGUgbCdhcHBlbCBkZSBleHQyZnNfYmxvY2tfaXRlcmF0ZSBwb3VyIGwnaS1ub2V1ZCAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJsb3JzIGRlIGwnYXBwZWwg4CBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBwb3VyIGwnaS1ub2V1ZCAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiTG9ycyBkZSBsYSB0cm9uY2F0dXJlIGRlIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiTG9ycyBkZSBsJ2VmZmFjZW1lbnQgZGUiCisKKyM6IGUyZnNjay91bml4LmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiVXRpbGlzYXRpb26gOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXItYmxvY10gWy1CIHRhaWxsZS1kZS1ibG9jXVxuIgorIlx0XHRbLWx8LUwgZmljaGllcnMtZGVzLWJsb2NzLWTpZmVjdHVldXhdIFstQyBmZF0gWy1qIGpvdXJuYWwtZXh0ZXJuZV1cbiIKKyJcdFx0Wy1FIG9wdGlvbnMt6XRlbmR1ZXNdIHDpcmlwaOlyaXF1ZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisiQWlkZSBkJ3VyZ2VuY2WgOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBS6XBhcmF0aW9uIGF1dG9tYXRpcXVlIChzYW5zIHF1ZXN0aW9uKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBOJ2FwcGxpcXVlciBhdWN1biBjaGFuZ2VtZW50IGF1IHN5c3TobWUgZGUgZmljaGllcnNcbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgU3VwcG9zZXIgq6BvdWmguyBwb3VyIHRvdXRlcyBsZXMgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIFbpcmlmaWVyIGxhIHBy6XNlbmNlIGRlIGJsb2NzIGTpZmVjdHVldXggZXQgbGVzXG4iCisiICAgICAgICAgICAgICAgICAgICAgIGFqb3V0ZXIg4CBsYSBsaXN0ZSBkZXMgYmxvY3MgZOlmZWN0dWV1eFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZXIgbGEgdulyaWZpY2F0aW9uIG3qbWUgc2kgbGUgc3lzdOhtZSBkZSBmaWNoaWVyc1xuIgorIiAgICAgICAgICAgICAgICAgICAgICBlc3QgbWFycXXpIHByb3ByZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiIC12ICAgICAgICAgICAgICAgICAgIFRyYXZhaWxsZXIgZW4gbW9kZSBiYXZhcmRcbiIKKyIgLWIgc3VwZXItYmxvYyAgICAgICAgVXRpbGlzZXIgdW4gYmxvYyBhbHRlcm5hdGlmIHBvdXIgbGUgc3VwZXJibG9jXG4iCisiIC1CIHRhaWxsZS1kZS1ibG9jICAgIEZvcmNlciBsYSB0YWlsbGUgZGVzIGJsb2NzIGxvcnMgZGUgbGEgcmVjaGVyY2hlIGR1XG4iCisiICAgICAgICAgICAgICAgICAgICAgIHN1cGVyYmxvY1xuIgorIiAtaiBqb3VybmFsLWV4dGVybmUgICBE6WZpbmlyIGxhIGxvY2FsaXNhdGlvbiBkdSBqb3VybmFsIGV4dGVybmVcbiIKKyIgLWwgZmljaGllci1kZXMtYmxvY3MtZXJyb27pc1xuIgorIiAgICAgICAgICAgICAgICAgICAgICBBam91dGVyIOAgbGEgbGlzdGUgZGVzIGJsb2NzIGTpZmVjdHVldXhcbiIKKyIgLUwgZmljaGllci1kZXMtYmxvY3MtZXJyb27pc1xuIgorIiAgICAgICAgICAgICAgICAgICAgICBE6WZpbmlyIGxhIGxpc3RlIGRlcyBibG9jcyBk6WZlY3R1ZXV4XG4iCisiIC16IGZpY2hpZXItZC1hbm51bGF0aW9uXG4iCisiICAgICAgICAgICAgICAgICAgICAgIENy6WVyIHVuIGZpY2hpZXIgZCdhbm51bGF0aW9uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzoDogJXUvJXUgZmljaGllcnMgKCUwZC4lZCUlIG5vbiBjb250aWd1cyksICVsbHUvJWxsdSBibG9jc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IGktbm9ldWQgdXRpbGlz6SAoJTIuMmYlJSwgc3VyICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBpLW5vZXVkcyB1dGlsaXPpcyAoJTIuMmYlJSwgc3VyICV1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGUgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBmaWNoaWVyIG5vbiBjb250aWd1ICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBmaWNoaWVycyBub24gY29udGlndXMgKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IHLpcGVydG9pcmUgbm9uIGNvbnRpZ3UgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1IHLpcGVydG9pcmVzIG5vbiBjb250aWd1cyAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICAgIG5vbWJyZSBkJ2ktbm9ldWRzIGF2ZWMgZGVzIGJsb2NzIGluZC9kaW5kL3RpbmSgOiAldS8ldS8ldVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiAgICAgICAgICAgICBIaXN0b2dyYW1tZSBkZXMgcHJvZm9uZGV1cnMgZCdleHRlbnRzoDogIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiUxMmxsdSBibG9jIHV0aWxpc+kgKCUyLjJmJSUsIHN1ciAlbGx1KVxuIgorbXNnc3RyWzFdICIlMTJsbHUgYmxvY3MgdXRpbGlz6XMgKCUyLjJmJSUsIHN1ciAlbGx1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSBibG9jIGTpZmVjdHVldXhcbiIKK21zZ3N0clsxXSAiJTEydSBibG9jcyBk6WZlY3R1ZXV4XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgZmljaGllciBkZSBncmFuZGUgdGFpbGxlXG4iCittc2dzdHJbMV0gIiUxMnUgZmljaGllcnMgZGUgZ3JhbmRlIHRhaWxsZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBmaWNoaWVyIG5vcm1hbFxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSBmaWNoaWVycyBub3JtYXV4XG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJTEydSBy6XBlcnRvaXJlXG4iCittc2dzdHJbMV0gIiUxMnUgculwZXJ0b2lyZXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgZmljaGllciBkZSBw6XJpcGjpcmlxdWUgZW4gbW9kZSBjYXJhY3TocmVcbiIKK21zZ3N0clsxXSAiJTEydSBmaWNoaWVycyBkZSBw6XJpcGjpcmlxdWUgZW4gbW9kZSBjYXJhY3TocmVcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpY2hpZXIgZGUgcOlyaXBo6XJpcXVlIGVuIG1vZGUgYmxvY1xuIgorbXNnc3RyWzFdICIlMTJ1IGZpY2hpZXJzIGRlIHDpcmlwaOlyaXF1ZSBlbiBtb2RlIGJsb2NcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSBmaWZvXG4iCittc2dzdHJbMV0gIiUxMnUgZmlmb3NcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBsaWVuXG4iCittc2dzdHJbMV0gIiUxMnUgbGllbnNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IGxpZW4gc3ltYm9saXF1ZSIKK21zZ3N0clsxXSAiJTEydSBsaWVucyBzeW1ib2xpcXVlcyIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBsaWVuIHN5bWJvbGlxdWUgcmFwaWRlKVxuIgorbXNnc3RyWzFdICIgKCV1IGxpZW5zIHN5bWJvbGlxdWVzIHJhcGlkZXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IHNvY2tldFxuIgorbXNnc3RyWzFdICIlMTJ1IHNvY2tldHNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBmaWNoaWVyXG4iCittc2dzdHJbMV0gIiUxMnUgZmljaGllcnNcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgImxvcnMgZGUgbGEgZOl0ZXJtaW5hdGlvbiDgIHNhdm9pciBzaSAlcyBlc3QgbW9udOkuIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiQXR0ZW50aW9uoCEgJXMgZXN0IG1vbnTpLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJBdHRlbnRpb26gISAlcyBlc3QgZW4gY291cnMgZCd1dGlsaXNhdGlvbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiJXMgZXN0IG1vbnTpLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiVzIGVzdCBlbiBjb3VycyBkJ3V0aWxpc2F0aW9uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTmUgcGV1dCBjb250aW51ZXIsIGFycup0IGltbelkaWF0LlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3MQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIkFUVEVOVElPTqAhISEgTGUgc3lzdOhtZSBkZSBmaWNoaWVycyBlc3QgbW9udOkuICAgU2kgdm91cyBjb250aW51ZXpcbiIKKyJ2b3VzICoqKkNBVVNFUkVaKioqIGRlcyBkb21tYWdlcyAqKipTyVbIUkVTKioqIGF1IHN5c3TobWUgZGUgZmljaGllcnMuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJTb3VoYWl0ZXotdm91cyBy6WVsbGVtZW50IGNvbnRpbnVlciIKKworIzogZTJmc2NrL3VuaXguYzoyNzgKK21zZ2lkICJjaGVjayBhYm9ydGVkLlxuIgorbXNnc3RyICJ26XJpZmljYXRpb24gc3RvcHDpZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIGNvbnRpZW50IHVuIHN5c3TobWUgZGUgZmljaGllcnMgY29tcG9ydGFudCBkZXMgZXJyZXVycyIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIG4nYSBwYXMg6XTpIGTpbW9udOkgcHJvcHJlbWVudCIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIgorIiBsZXMgZm9uY3Rpb25uYWxpdOlzIGR1IHN1cGVyYmxvYyBwcmltYWlyZSBkaWZm6HJlbnQgZGUgY2VsbGVzIGRlIGxhICIKKyJzYXV2ZWdhcmRlIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBhIOl06SBtb2506SAldSBmb2lzIHNhbnMgYXZvaXIg6XTpIHbpcmlmaekiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiIKKyIgYSB1bmUgZGF0ZSBkZSBkZXJuaehyZSB26XJpZmljYXRpb24gZHUgc3lzdOhtZSBkZSBmaWNoaWVycyBkYW5zIGxlIGZ1dHVyIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBhIHBhc3PpICV1IGpvdXJzIHNhbnMgYXZvaXIg6XTpIHbpcmlmaekiCisKKyM6IGUyZnNjay91bml4LmM6NDAxCittc2dpZCAiLCBjaGVjayBmb3JjZWQuXG4iCittc2dzdHIgIiwgdulyaWZpY2F0aW9uIGZvcmPpZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiJXOgOiBwcm9wcmUsICV1LyV1IGZpY2hpZXJzLCAlbGx1LyVsbHUgYmxvY3MiCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAodulyaWZpY2F0aW9uIHJlbWlzZSDgIHBsdXMgdGFyZKA6IHN1ciBiYXR0ZXJpZSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiICh26XJpZmljYXRpb24gbG9ycyBkdSBwcm9jaGFpbiBtb250YWdlKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiICh26XJpZmljYXRpb24gZGFucyAlbGQgbW9udGFnZXMpIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICJFUlJFVVKgOiBuZSBwZXV0IG91dnJpciAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAiVmVyc2lvbiBFQSBpbnZhbGlkZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiVGFpbGxlIGRlIHRhbXBvbiBkZSBsZWN0dXJlIGFudGljaXDpZSBpbnZhbGlkZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgIk9wdGlvbiDpdGVuZHVlIGluY29ubnVloDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJFcnJldXIgZGUgc3ludGF4ZSBkYW5zIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBkJ2UyZnNjayAoJXMsXG4iCisiXHRsaWduZSBusCVkKVxuIgorIlx0JXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgdmFsaWRhdGluZyBmaWxlIGRlc2NyaXB0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkVSUkVVUiBsb3JzIGRlIGxhIHZhbGlkYXRpb24gZHUgZGVzY3JpcHRldXIgZGUgZmljaGllciAlZKA6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAiRGVzY3JpcHRldXIgZGUgZmljaGllciBkJ2luZm9ybWF0aW9uIGRlIGNvbXBs6XRpb24gaW52YWxpZGUiCisKKyM6IGUyZnNjay91bml4LmM6ODQ0Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICJTZXVsZSB1bmUgZGVzIG9wdGlvbnMgLXAvLWEsIC1uIG91IC15IHBldXQg6nRyZSBzcOljaWZp6WUuIgorCisjOiBlMmZzY2svdW5peC5jOjg2NQorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgLXQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKK21zZ3N0ciAiTCdvcHRpb24gLXQgbidlc3QgcGFzIHN1cHBvcnTpZSBzdXIgY2V0dGUgdmVyc2lvbiBkJ2UyZnNjay5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIkltcG9zc2libGUgZGUgculzb3VkcmUgq6Alc6C7IgorCisjOiBlMmZzY2svdW5peC5jOjk1MgorbXNnaWQgIlRoZSAtbiBhbmQgLUQgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGVzIG9wdGlvbnMgLW4gZXQgLUQgc29udCBpbmNvbXBhdGlibGVzLiIKKworIzogZTJmc2NrL3VuaXguYzo5NTcKK21zZ2lkICJUaGUgLW4gYW5kIC1jIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxlcyBvcHRpb25zIC1uIGV0IC1jIHNvbnQgaW5jb21wYXRpYmxlcy4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJMZXMgb3B0aW9ucyAtbiBldCAtbC8tTCBzb250IGluY29tcGF0aWJsZXMuIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJMZXMgb3B0aW9ucyAtRCBldCAtRSBmaXhlc19vbmx5IHNvbnQgaW5jb21wYXRpYmxlcy4iCisKKyM6IGUyZnNjay91bml4LmM6OTkyCittc2dpZCAiVGhlIC1FIGJtYXAyZXh0ZW50IGFuZCBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxlcyBvcHRpb25zIC1FIGJtYXAyZXh0ZW50IGV0IGZpeGVzX29ubHkgc29udCBpbmNvbXBhdGlibGVzLiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICJMZXMgb3B0aW9ucyAtYyBldCAtbC8tTCBuZSBwZXV2ZW50IHBhcyDqdHJlIHV0aWxpc+llcyBzaW11bHRhbultZW50LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIKugJXOguyBuJ2VzdCBwYXMgdW4gZW50aWVyXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTEwMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSW52YWxpZCBub24tbnVtZXJpYyBhcmd1bWVudCB0byAtJWMgKFwiJXNcIilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkFyZ3VtZW50IG5vbiBudW3pcmlxdWUgaW52YWxpZGUgcG91ciAtJWMgKKugJXOguylcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgaW50ZXJ2YWwgaXMgJXUgc2Vjb25kcyBhbmQgdG90YWwgd2FpdCB0aW1lIGlzICV1IHNlY29uZHMuIFBsZWFzZSAiCisid2FpdC4uLlxuIgorbXNnc3RyICIiCisiTCdpbnRlcnZhbGUgZGUgcHJvdGVjdGlvbiBjb250cmUgbW9udGFnZSBtdWx0aXBsZSAoTU1QKSBlc3QgZGUgJXUgc2Vjb25kZXMgIgorImV0IHRlbXBzIHRvdGFsIGQnYXR0ZW50ZSBlc3QgZGUgJXUgc2Vjb25kcy4gVmV1aWxsZXogcGF0aWVudGVyLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgImxvcnMgZGUgbGEgdulyaWZpY2F0aW9uIGR1IGJsb2NrIE1NUCIKKworIzogZTJmc2NrL3VuaXguYzoxMjE3IG1pc2MvdHVuZTJmcy5jOjI3OTIKK21zZ2lkICIiCisiSWYgeW91IGFyZSBzdXJlIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKyIndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2RldmljZX0nXG4iCittc2dzdHIgIiIKKyJTaSB2b3VzIOp0ZXMgc/tyKGUpIHF1ZSBsZSBzeXN06G1lIGRlIGZpY2hpZXJzIG4nZXN0IGVuIGNvdXJzIGQndXRpbGlzYXRpb24gIgorInN1ciBhdWN1biBub2V1ZCwgbGFuY2VyOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2siCittc2dzdHIgImxvcnMgZGUgbGEgbGVjdHVyZSBkdSBibG9jIE1NUCIKKworIzogZTJmc2NrL3VuaXguYzoxMjUyIGUyZnNjay91bml4LmM6MTMwNCBtaXNjL2UydW5kby5jOjIzMCBtaXNjL2UydW5kby5jOjI3NQorIzogbWlzYy9ta2UyZnMuYzoyNTQxIG1pc2MvbWtlMmZzLmM6MjU5MiBtaXNjL3R1bmUyZnMuYzoyNjEwCisjOiBtaXNjL3R1bmUyZnMuYzoyNjU1IHJlc2l6ZS9tYWluLmM6MTg3IHJlc2l6ZS9tYWluLmM6MjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgdXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorbXNnc3RyICIiCisiyWNyYXNlbWVudCBkdSBzeXN06G1lIGRlIGZpY2hpZXJzIGV4aXN0YW50oDsgY2VsYSBwZXV0IOp0cmUgZOlmYWl0IGVuICIKKyJ1dGlsaXNhbnQgbGEgY29tbWFuZGWgOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICJsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkJ2VmZmFjZW1lbnQgZGUgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIG1pc2UgZW4gcGxhY2UgZHUgZmljaGllciBkJ2FubnVsYXRpb25cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzYzCittc2dpZCAiRXJyb3I6IGV4dDJmcyBsaWJyYXJ5IHZlcnNpb24gb3V0IG9mIGRhdGUhXG4iCittc2dzdHIgIkVycmV1cqA6IGxhIHZlcnNpb24gZGUgbGEgYmlibGlvdGjocXVlIGV4dDJmcyBlc3QgcOlyaW3pZaAhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGQnaW5pdGlhbGlzYXRpb24gZHUgcHJvZ3JhbW1lIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHRVdGlsaXNhdGlvbiBkZSAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAiYSBiZXNvaW4gZCd1biB0ZXJtaW5hbCBwb3VyIGRlcyBy6XBhcmF0aW9ucyBlbiBtb2RlIGludGVyYWN0aWYiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXOgOiAlcyB0ZW50b25zIGQndXRpbGlzZXIgbGVzIGJsb2NzIGRlIHNhdXZldGFnZS4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICJTdXBlcmJsb2MgaW52YWxpZGUsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiTGVzIGRlc2NyaXB0ZXVycyBkZSBncm91cGUgc2VtYmxlbnQgZW4gbWF1dmFpcyDpdGF0Li4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlc6A6ICVzIGxvcnMgZGUgbCd1dGlsaXNhdGlvbiBkZXMgYmxvY3MgZGUgc2F1dmV0YWdlIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlc6A6IHJldG91ciBhdSBzdXBlcmJsb2NrIG9yaWdpbmVsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJMYSB2ZXJzaW9uIGR1IHN5c3TobWUgZGUgZmljaGllcnMgZXN0IGFwcGFyZW1tZW50IHRyb3Ag6WxldullIHBvdXIgY2V0dGUgXG4iCisidmVyc2lvbiBkJ2UyZnNjay4gKG91IGJpZW4gbGUgc3VwZXJibG9jIGR1IHN5c3TobWUgZGUgZmljaGllcnMgZXN0XG4iCisiY29ycm9tcHUpXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIlBldXQt6nRyZSBjZXR0ZSBwYXJ0aXRpb24gZXN0LWVsbGUgZGUgdGFpbGxlIHrpcm+gP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJWb3VzIGRldmV6IGF2b2lyIHVuIGFjY+hzICVzIGF1IHN5c3TobWUgZGUgZmljaGllcnMgb3Ug6nRyZSByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiUOlyaXBo6XJpcXVlIHBldXQt6nRyZSBpbmV4aXN0ZW50IG91IHBvdXIgbGUgc3dhcKA/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiU3lzdOhtZSBkZSBmaWNoaWVyIG1vbnTpIG91IG91dmVydCBlbiBtb2RlIGV4Y2x1c2lmIHBhciB1biBhdXRyZVxuIgorInByb2dyYW1tZaA/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIlDpcmlwaOlyaXF1ZSBwZXV0Lep0cmUgaW5leGlzdGFudKA/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiRGlzcXVlIHByb3TpZ+kgZW4g6WNyaXR1cmWgOyB1dGlsaXNleiBsJ29wdGlvbiAtbiBwb3VyIGVmZmVjdHVlciB1bmVcbiIKKyJ26XJpZmljYXRpb24gZHUgcOlyaXBo6XJpcXVlIGVuIGxlY3R1cmUgc2V1bGUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiVmV1aWxsZXogb2J0ZW5pciB1bmUgdmVyc2lvbiBwbHVzIHLpY2VudGUgZCdlMmZzY2ugISIKKworIzogZTJmc2NrL3VuaXguYzoxNjQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICJsb3JzIGRlIGxhIHbpcmlmaWNhdGlvbiBkdSBqb3VybmFsIHBvdXIgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGggZmlsZSBzeXN0ZW0gY2hlY2siCittc2dzdHIgIk5lIHBldXQgcHJvY+lkZXIg4CB1bmUgdulyaWZpY2F0aW9uIGR1IHN5c3TobWUgZGUgZmljaGllci4iCisKKyM6IGUyZnNjay91bml4LmM6MTY2MgorbXNnaWQgIiIKKyJXYXJuaW5nOiBza2lwcGluZyBqb3VybmFsIHJlY292ZXJ5IGJlY2F1c2UgZG9pbmcgYSByZWFkLW9ubHkgZmlsZXN5c3RlbSAiCisiY2hlY2suXG4iCittc2dzdHIgIiIKKyJBdmVydGlzc2VtZW50oDogc2F1dGUgbGEgculjdXDpcmF0aW9uIGR1IGpvdXJuYWwgcHVpc3F1ZSBsJ29uXG4iCisicHJvY+hkZSDgIGwnZXhhbWVuIGQndW4gc3lzdOhtZSBkZSBmaWNoaWVycyBlbiBsZWN0dXJlIHNldWxlLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgImltcG9zc2libGUgZCdpbml0aWFsaXNlciBsZXMgZHJhcGVhdXggZHUgc3VwZXJibG9jIHN1ciAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICJFcnJldXIgZGUgc29tbWUgZGUgY29udHL0bGUgZGUgam91cm5hbCB0cm91dullIGRhbnMgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkpvdXJuYWwgY29ycm9tcHUgZGFucyAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJsb3JzIGRlIGxhIHLpY3Vw6XJhdGlvbiBkdSBqb3VybmFsIGRlICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyBhIHVuZShkZXMpIGZvbmN0aW9ubmFsaXTpKHMpIG5vbiBzdXBwb3J06WUocymgOiIKKworIzogZTJmc2NrL3VuaXguYzoxNzY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSByZWFkaW5nIGJhZCBibG9ja3MgaW5vZGVcbiIKK21zZ3N0ciAiJXOgOiAlcyBsb3JzIGRlIGxhIGxlY3R1cmUgZGUgbCdpLW5vZXVkIGRlcyBibG9jcyBk6WZlY3R1ZXV4XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAiQ2VsYSBuZSBzZW1ibGUgcGFzIOp0cmUgYmllbiwgbWFpcyBvbiB2YSBxdWFuZCBt6m1lIGVzc2F5ZXIuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCVkIGJsb2Nrcyk6ICIKK21zZ3N0ciAiQ3LpYXRpb24gZHUgam91cm5hbCAoJWQgYmxvY3MpoDogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiQ29tcGzpdOkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBsZSBqb3VybmFsIGEg6XTpIHJlZ+lu6XLpICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJhcnLqdOkiCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlc6A6IGUyZnNjayBhIOl06SBhbm51bOkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICJSZS1k6W1hcnJvbnMgZTJmc2NrIGRlcHVpcyBsZSBk6WJ1dC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAibG9ycyBkZSBsYSBy6WluaXRpYWxpc2F0aW9uIGR1IGNvbnRleHRlIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTMgZTJmc2NrL3V0aWwuYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqIExFIFNZU1TITUUgREUgRklDSElFUlMgQSDJVMkgTU9ESUZJySAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXOgOiAqKioqKiBSyS1BTU9SQ0VSIExFIFNZU1TITUUgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlc6A6ICoqQVRURU5USU9OoDogbGUgc3lzdOhtZSBkZSBmaWNoaWVycyBjb250aWVudCBlbmNvcmUgZGVzIGVycmV1cnMqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJvTyIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgInRUIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NworbXNnaWQgIiAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSAiCittc2dzdHIgIiAoJ3QnIGFjdGl2ZSAnb3VpJyBwb3VyIHRvdXQpICIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjxvPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxuPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIiAoby9uKSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgImFubnVs6aAhXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICJvdWkgcG91ciB0b3V0XG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgIm91aVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2OAorbXNnaWQgIm5vXG4iCittc2dzdHIgIm5vblxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlc6A/IG5vblxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXOgPyBvdWlcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJ5ZXMiCittc2dzdHIgIm91aSIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibm9uIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgImUyZnNja19yZWFkX2JpdG1hcHOgOiBibG9jKHMpIGRlIGJpdG1hcCBpbGzpZ2FsKGF1eCkgcG91ciAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICJsYSBsZWN0dXJlIGRlcyBiaXRtYXBzIGQnaS1ub2V1ZHMgZXQgZGUgYmxvY3MiCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIHJlLWxlY3R1cmUgZGVzIGJpdG1hcHMgcG91ciAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMzEKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICJsJ+ljcml0dXJlIGRlcyBiaXRtYXBzIGRlIGJsb2NzIGV0IGQnaS1ub2V1ZHMiCisKKyM6IGUyZnNjay91dGlsLmM6MzM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgIiIKKyJsb3JzIGQndW5lIG5vdXZlbGxlIHRlbnRhdGl2ZSBkJ+ljcml0dXJlIGRlIGJpdG1hcHMgZGUgYmxvY3MgZXQgZCdpLW5vZXVkcyAiCisicG91ciAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIiVzOiBJTkNPTlNJU1RFTkNFIElOQVRURU5EVUWgOyBFWMlDVVRFWiBmc2NrIE1BTlVFTExFTUVOVC5cbiIKKyJcdChpLmUuLCBzYW5zIG9wdGlvbnMgLWEgb3UgLXApXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDI5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKK21zZ3N0ciAiTeltb2lyZSB1dGlsaXPpZaA6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIk3pbW9pcmUgdXRpbGlz6WWgOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAidGVtcHOgOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgInRlbXBzIOljb3Vs6aA6ICU2LjNmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDgwIGUyZnNjay91dGlsLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJsb3JzIGRlIGxhIGxlY3R1cmUgZGUgbCdpLW5vZXVkICVsdSBkYW5zICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGRlIGwnaS1ub2V1ZCAlbHUgZGFucyAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo3NjUKK21zZ2lkICIiCisiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBtb2RpZmllZCB3aGlsZSBmc2NrIGlzICIKKyJydW5uaW5nLlxuIgorbXNnc3RyICIiCisiSU5DT0jJUkVOQ0UgSU5BVFRFTkRVRaA6IGxlIHN5c3TobWUgZGUgZmljaGllcnMgYSDpdOkgbW9kaWZp6SBwZW5kYW50IGxlICIKKyJk6XJvdWxlbWVudCBkZSBmc2NrLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiY29tcGzpdOkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiVXRpbGlzYXRpb26gOiAlcyBbLWIgdGFpbGxlX2RlX2Jsb2NdIFstaSBmaWNoaWVyX2RfZW50cullXSBbLW8gIgorImZpY2hpZXJfZGVfc29ydGllXVxuIgorIiAgICAgICBbLXN2d25mXSBbLWMgYmxvY3Nf4F9sYV9mb2lzXSBbLWQgZmFjdGV1cl9k6WxhaV9lbnRyZV9sZWN0dXJlc11cbiIKKyIgICAgICAgWy1lIG1heF9ibG9ja3NfZOlmZWN0dWV1eF0gWy1wIG5vbWJyZV9kZV9wYXNzZXNdXG4iCisiICAgICAgIFstdCBtb3RpZl9kZV90ZXN0IFstdCBtb3RpZl9kZV90ZXN0IFsuLi5dXV1cbiIKKyIgICAgICAgcOlyaXBo6XJpcXVlIFtkZXJuaWVyX2Jsb2MgW3ByZW1pZXJfYmxvY11dXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyIlczogTGVzIG9wdGlvbnMgLW4gZXQgLXcgc29udCBtdXR1ZWxsZW1lbnQgZXhjbHVzaXZlLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiUlIGVmZmVjdHXpLCAlcyDpY291bOkuICglZC8lZC8lZCBlcnJldXJzKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAiVGVzdCBlbiBjb3VycyBhdmVjIHVuIG1vdGlmIGFs6WF0b2lyZaA6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiVGVzdCBlbiBjb3VycyBhdmVjIGxlIG1vdGlmIDB4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM3OCBtaXNjL2JhZGJsb2Nrcy5jOjQ1MQorbXNnaWQgImR1cmluZyBzZWVrIgorbXNnc3RyICJsb3JzIGRlIGxhIHJlY2hlcmNoZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJWYWxldXIgYml6YXJyZSAoJWxkKSBkYW5zIGRvX3JlYWRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICJsb3JzIGRlIGwnZXjpY3V0aW9uIGQnZXh0MmZzX3N5bmNfZGV2aWNlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgImxvcnMgZHUgZOlidXQgZGUgbCdpdOlyYXRpb24gZGUgbGEgbGlzdGUgZGVzIGJsb2NzIGTpZmVjdHVldXgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJsb3JzIGRlIGwnYWxsb2NhdGlvbiBkZXMgdGFtcG9ucyIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiVulyaWZpY2F0aW9uIGRlcyBibG9jcyAlbHUg4CAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJW6XJpZmljYXRpb24gZGVzIGJsb2NzIGTpZmVjdHVldXggZW4gbW9kZSBsZWN0dXJlIHNldWxlXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJW6XJpZmljYXRpb24gZGVzIGJsb2NzIGTpZmVjdHVldXggKHRlc3QgZW4gbW9kZSBsZWN0dXJlIHNldWxlKaA6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICJUcm9wIGRlIGJsb2NzIGTpZmVjdHVldXgsIHRlc3QgYWJhbmRvbm7pXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIlbpcmlmaWNhdGlvbiBkZXMgYmxvY3MgZOlmZWN0dWV1eCBlbiBtb2RlIGxlY3R1cmUt6WNyaXR1cmVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkR1IGJsb2MgJWx1IGF1IGJsb2MgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkxlY3R1cmUgZXQgY29tcGFyYWlzb26gOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisiVulyaWZpY2F0aW9uIGRlcyBibG9jcyBk6WZlY3R1ZXV4IGRhbnMgdW4gbW9kZSBub24gZGVzdHJ1Y3RpZiBkZSBsZWN0dXJlLVxuIgorIuljcml0dXJlXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIiIKKyJW6XJpZmljYXRpb24gZGVzIGJsb2NzIGTpZmVjdHVldXggKHRlc3Qgbm9uIGRlc3RydWN0aWYgZGUgbGVjdHVyZS3pY3JpdHVyZSlcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIkludGVycnVwdGlvbiwgbmV0dG95YWdlIGVuIGNvdXJzXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODc3CisjLCBjLWZvcm1hdAorbXNnaWQgImR1cmluZyB0ZXN0IGRhdGEgd3JpdGUsIGJsb2NrICVsdSIKK21zZ3N0ciAibG9ycyBkdSB0ZXN0IGQn6WNyaXR1cmUgZGUgZG9ubullcywgYmxvYyAlbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTk4IG1pc2MvdXRpbC5jOjEzMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkOyAiCittc2dzdHIgIiVzIGVzdCBtb2506aA7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKyJsJ2V46WN1dGlvbiBkZSBiYWRibG9ja3MgZXN0IHRvdXQgZGUgbeptZSBmb3Jj6WUuXG4iCisiRXNw6XJvbnMgcXVlIC9ldGMvbXRhYiBlc3QgaW5jb3JyZWN0LlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgImlsIG4nZXN0IHBhcyBwcnVkZW50IGQnZXjpY3V0ZXIgYmFkYmxvY2tzoCFcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIiVzIGVzdCBhcHBhcmVtbWVudCB1dGlsaXPpIHBhciBsZSBzeXN06G1loDsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiYmxvY3MgZXJyb27pcyBmb3Jj6XMgZGUgdG91dGVzIG1hbmnocmVzLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCAlcyAtICVzIgorbXNnc3RyICIlcyBpbnZhbGlkZSAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIk5vbWJyZSBtYXhpbXVtIGRlIGJsb2NzIGTpZmVjdHVldXggJXUgdHJvcCBncmFuZCAtIGxlIG1heGltdW0gZXN0ICV1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZXN0X3BhdHRlcm4gLSAlcyIKK21zZ3N0ciAibmUgcGV1dCBhbGxvdWVyIGRlIGxhIG3pbW9pcmUgcG91ciBtb3RpZl9kZV90ZXN0IC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJBdSBwbHVzIHVuIHNldWwgbW90aWZfZGVfdGVzdCBwZXV0IOp0cmUgc3DpY2lm6SBlbiBtb2RlIGxlY3R1cmUgc2V1bGUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE5MAorbXNnaWQgIlJhbmRvbSB0ZXN0X3BhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIlVuIG1vdGlmX2RlX3Rlc3QgYWzpYXRvaXJlIG4nZXN0IHBhcyBwZXJtaXMgZW4gbW9kZSBsZWN0dXJlIHNldWxlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorIk5lIHBldXQgZOl0ZXJtaW5lciBsYSB0YWlsbGUgZHUgcOlyaXBo6XJpcXVloDsgdm91cyBkZXZleiBzcOljaWZpZXJcbiIKKyJsYSB0YWlsbGUgbWFudWVsbGVtZW50XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIGTpdGVybWluYXRpb24gZGUgbGEgdGFpbGxlIGR1IHDpcmlwaOlyaXF1ZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjE1Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAiZGVybmllciBibG9jIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAicHJlbWllciBibG9jIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgImJsb2MgZGUgZOlwYXJ0IGludmFsaWRlICglbGx1KaA6IGRvaXQg6nRyZSBtb2lucyBkZSAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiYmxvYyBkZSBk6XBhcnQgaW52YWxpZGUgKCVsbHUpoDogZG9pdCDqdHJlIHVuZSB2YWxldXIgc3VyIDMyIGJpdCIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAibG9ycyBkZSBsYSBjculhdGlvbiBlbiBt6W1vaXJlIGQndW5lIGxpc3RlIGRlcyBibG9jcyBk6WZlY3R1ZXV4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiZmljaGllciBkJ2VudHLpZSAtIG1hdXZhaXMgZm9ybWF0IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAibG9ycyBkZSBsJ2Fqb3V0IGVuIG3pbW9pcmUg4CBsYSBsaXN0ZSBkZXMgYmxvY3MgZOlmZWN0dWV1eCIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICJQYXNzZSBjb21wbOl06WUsICV1IGJsb2NzIGTpZmVjdHVldXggcmVw6XLpcy4gKCVkLyVkLyVkIGVycmV1cnMpXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIiIKKyJVdGlsaXNhdGlvbqA6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpY2hpZXJzLi4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAicHJvamV0IGVycm9u6SAtICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTczCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB2ZXJzaW9uIC0gJXNcbiIKK21zZ3N0ciAidmVyc2lvbiBlcnJvbullIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgImxvcnMgZGUgbCfpdmFsdWF0aW9uIHBhciBzdGF0KCkgZGUgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgImxvcnMgZGUgbGEgbGVjdHVyZSBkZXMgZHJhcGVhdXggc3VyICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICJEcmFwZWF1eCBkZSAlcyBpbml0aWFsaXPpcyBjb21tZSAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgImxvcnMgZGUgbCdpbml0aWFsaXNhdGlvbiBkZXMgZHJhcGVhdXggc3VyICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2MAorIywgYy1mb3JtYXQKK21zZ2lkICJWZXJzaW9uIG9mICVzIHNldCBhcyAlbHVcbiIKK21zZ3N0ciAiVmVyc2lvbiBkZSAlcyBpbml0aWFsaXPpZSDgICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgImxvcnMgZGUgbCdpbml0aWFsaXNhdGlvbiBkZSBsYSB2ZXJzaW9uIHN1ciAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlByb2pldCBkZSAlcyBpbml0aWFsaXPpIOAgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAibG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGR1IHByb2pldCBzdXIgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIk5lIHBldXQgYWxsb3VlciB1bmUgdmFyaWFibGUgZGUgY2hlbWluIGRhbnMgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9IGVzdCBpbmNvbXBhdGlibGUgYXZlYyAtIGV0ICtcbiIKKworIzogbWlzYy9jaGF0dHIuYzozNDUKK21zZ2lkICJNdXN0IHVzZSAnLXYnLCA9LCAtIG9yICtcbiIKK21zZ3N0ciAiVm91cyBkZXZleiB1dGlsaXNlciCroC12oLssID0gLSBvdSArXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnaS1ub2V1ZCAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJsb3JzIGRlIGwnZXh0ZW5zaW9uIGR1IHLpcGVydG9pcmUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbGEgbGlhaXNvbiBkZSCroCVzoLsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGRlIGwnaS1ub2V1ZCAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlzdGluZyBhdHRyaWJ1dGVzIG9mIFwiJXNcIiIKK21zZ3N0ciAibG9ycyBkdSBsaXN0YWdlIGRlcyBhdHRyaWJ1dHMgZGUgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJsb3JzIGRlIGwnb3V2ZXJ0dXJlIGRlIGwnaS1ub2V1ZCAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IgorbXNnc3RyICJsb3JzIGQndW5lIGFsbG9jYXRpb24gbeltb2lyZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnYXR0cmlidXQgq6Alc6C7IGRlIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBhdHRyaWJ1dGUgXCIlc1wiIHRvIGlub2RlICV1IgorbXNnc3RyICJsb3JzIGRlIGwn6WNyaXR1cmUgZGUgbCdhdHRyaWJ1dCCroCVzoLsgZGFucyBsJ2ktbm9ldWQgq6AldaC7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICJsb3JzIGRlIGxhIGZlcm1ldHVyZSBkZSBsJ2ktbm9ldWQgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJsb3JzIGRlIGwnYWxsb2NhdGlvbiBkZSBsJ2ktbm9ldWQgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbGEgY3LpYXRpb24gZGUgbCdpLW5vZXVkIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbGEgY3LpYXRpb24gZHUgbGllbiBzeW1ib2xpcXVlIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAibG9ycyBkZSBsYSBjculhdGlvbiBkdSBy6XBlcnRvaXJlIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAibG9ycyBkZSBsJ291dmVydHVyZSBkZSCroCVzoLsgcG91ciBjb3BpZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgd29ya2luZyBkaXJlY3RvcnkgdG8gXCIlc1wiIgorbXNnc3RyICJsb3JzIGR1IGNoYW5nZW1lbnQgZGUgculwZXJ0b2lyZSBjb3VyYW50IHZlcnMgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZHUgculwZXJ0b2lyZSCroCVzoLsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxzdGF0IFwiJXNcIiIKK21zZ3N0ciAibG9ycyBkJ3VuIGxzdGF0IHN1ciCroCVzoLsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzUxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbGEgY3LpYXRpb24gZHUgZmljaGllciBzcOljaWFsIKugJXOguyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjAKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICLpY2hlYyBkZSBtYWxsb2MiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkZSBsZWN0dXJlIGR1IGxpZW4gq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICJsYSB0YWlsbGUgZHUgbGllbiBzeW1ib2xpcXVlIGEgYXVnbWVudOkgZW50cmUgbHN0YXQoKSBldCByZWFkbGluaygpIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc4NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbCfpY3JpdHVyZSBkdSBsaWVuIHN5bWJvbGlxdWUgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc5NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICJsb3JzIGRlIGwn6WNyaXR1cmUgZHUgZmljaGllciCroCVzoLsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJsb3JzIGRlIGxhIGZhYnJpY2F0aW9uIGR1IHLpcGVydG9pcmUgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgyNgorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAibG9ycyBkdSBjaGFuZ2VtZW50IGRlIHLpcGVydG9pcmUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiaWdub3JvbnMgbCdlbnRy6WUgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGlub2RlIGZvciBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbCdpbml0aWFsaXNhdGlvbiBkZSBsJ2ktbm9ldWQgcG91ciCroCVzoLsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgImxvcnMgZGUgbCdpbml0aWFsaXNhdGlvbiBkZXMgeGF0dHJzIHBvdXIgq6Alc6C7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJsb3JzIGRlIGxhIHNhdXZlZ2FyZGUgZGVzIGRvbm7pZXMgZGUgbCdpLW5vZXVkIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlV0aWxpc2F0aW9uoDogJXMgWy1iZmdoaXhWXSBbLW8gc3VwZXJibG9jaz08bm9tYnJlPl0gWy1vIGJsb2Nrc2l6ZT08bm9tYnJlPl0gIgorInDpcmlwaOlyaXF1ZVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9jcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE2OAorbXNnaWQgImNsdXN0ZXJzIgorbXNnc3RyICJjbHVzdGVycyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcm91cGUgJWx1oDogKEJsb2NzICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiBjc3VtIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoQVRURU5EVSAweCUwNHgpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiBzdXBlcmJsb2MgJXMg4CAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJQcmltYWlyZSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIkJhY2t1cCIKK21zZ3N0ciAiU2Vjb3VycyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIERlc2NyaXB0ZXVycyBkZSBncm91cGVzIOAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIEJsb2NzIHLpc2VydulzIEdEVCDgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0OQorbXNnaWQgIiBHcm91cCBkZXNjcmlwdG9yIGF0ICIKK21zZ3N0ciAiIERlc2NyaXB0ZXVyIGRlIGdyb3VwZSDgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiIEJpdG1hcCBkZSBibG9jcyDgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MCBtaXNjL2R1bXBlMmZzLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiwgY3N1bSAweCUwOHgiCittc2dzdHIgIiwgY3N1bSAweCUwOHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKyJcbiIKKyIgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2Cittc2dpZCAiIElub2RlIGJpdG1hcCBhdCAiCittc2dzdHIgIiBCaXRtYXAgZCdpLW5vZXVkcyDgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiBUYWJsZSBkJ2ktbm9ldWRzIOAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSAlcyBsaWJyZXMsICV1IGktbm9ldWRzIGxpYnJlcywgJXUgculwZXJ0b2lyZXMlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiLCAldSBpLW5vZXVkcyBub24gdXRpbGlz6XNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiIEJsb2NzIGxpYnJlc6A6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAiIEktbm9ldWRzIGxpYnJlc6A6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJsb3JzIGRlIGwnYWZmaWNoYWdlIGRlIGxhIGxpc3RlIGRlcyBibG9jcyBk6WZlY3R1ZXV4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICJCbG9jcyBk6WZlY3R1ZXV4oDogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJsb3JzIGRlIGxhIGxlY3R1cmUgZGUgbCdpLW5vZXVkIGR1IGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZGUgbCdpLW5vZXVkIGR1IGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgImxvcnMgZGUgbGEgbGVjdHVyZSBkdSBqb3VybmFsIGR1IHN1cGVyYmxvYyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiTGUgbnVt6XJvIG1hZ2lxdWUgZHUgc3VwZXJibG9jIGRlIGpvdXJuYWwgZXN0IGludmFsaWRloCFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiRm9uY3Rpb25hbGl06XMgZHUgam91cm5hbKA6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQyMAorbXNnaWQgIkpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgIgorbXNnc3RyICJUYWlsbGUgZHUgam91cm5hbKA6ICAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCittc2dzdHIgIiIKKyJMb25ndWV1ciBkdSBqb3VybmFsoDogICAgICAldVxuIgorIlPpcXVlbmNlIGR1IGpvdXJuYWygOiAgICAgIDB4JTA4eFxuIgorIkTpYnV0IGR1IGpvdXJuYWygOiAgICAgICAgICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzggbWlzYy9kdW1wZTJmcy5jOjQ4MAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgY3JjMzJcbiIKK21zZ3N0ciAiVHlwZSBkZSBjc3VtIGR1IGpvdXJuYWw6ICAgY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorIlR5cGUgZGUgY3N1bSBkdSBqb3VybmFsOiAgICVzXG4iCisiQ3N1bSBkdSBqb3VybmFsOiAgICAgICAgICAweCUwOHhcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIk51belybyBlcnJldXIgZHUgam91cm5hbDogJWRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGR1IGpvdXJuYWwgZHUgc3VwZXJibG9jIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAiTmUgcGV1dCB0cm91dmVyIGxlcyBudW3pcm9zIG1hZ2lxdWVzIGR1IHN1cGVyYmxvYyBkdSBqb3VybmFsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgICV1XG4iCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgZmlyc3QgYmxvY2s6ICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIG51bWJlciBvZiB1c2VyczogICV1XG4iCittc2dzdHIgIiIKKyJcbiIKKyJUYWlsbGUgZGUgYmxvYyBkdSBqb3VybmFsoDogICAgICAgICV1XG4iCisiTG9uZ3VldXIgZHUgam91cm5hbKA6ICAgICAgICAgICAgICAldVxuIgorIlByZW1pZXIgYmxvYyBkdSBqb3VybmFsoDogICAgICAgICAgJXVcbiIKKyJT6XF1ZW5jZSBkdSBqb3VybmFsoDogICAgICAgICAgICAgIDB4JTA4eFxuIgorIkTpYnV0IGR1IGpvdXJuYWygOiAgICAgICAgICAgICAgICAgJXVcbiIKKyJOb21icmUgZCd1dGlsaXNhdGV1cnMgZHUgam91cm5hbKA6ICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICJVc2FnZXJzIGR1IGpvdXJuYWygOiAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICJJbXBvc3NpYmxlIGQnYWxsb3VlciBkZSBsYSBt6W1vaXJlIHBvdXIgYW5hbHlzZXIgbGVzIG9wdGlvbnOgIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFt6HRyZSBkZSBzdXBlcmJsb2MgaW52YWxpZGWgOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW3odHJlIGRlIHRhaWxsZSBkZSBibG9jIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlVuZSBvdSBkZXMgb3B0aW9ucyBzcOljaWZp6WVzIHNvbnQgZXJyb27pZXOgOiAlc1xuIgorIlxuIgorIkxlcyBvcHRpb25zIOl0ZW5kdWVzIHNvbnQgc+lwYXLpZXMgcGFyIGRlcyB2aXJndWxlcyBldCBwZXV2ZW50IHByZW5kcmUgdW5cbiIKKyJcdGFyZ3VtZW50IHF1aSBlc3QgZOlmaW5pIOAgbCdhaWRlIGQndW4gc2lnbmUgZCfpZ2FsaXTpICiroD2guykuXG4iCisiXG4iCisiTGVzIG9wdGlvbnMgdmFsaWRlcyBzb250OlxuIgorIlx0c3VwZXJibG9jaz08bnVt6XJvIGRlIHN1cGVyYmxvYz5cbiIKKyJcdGJsb2Nrc2l6ZT08dGFpbGxlIGRlIGJsb2M+XG4iCisiXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2NDYgbWlzYy9ta2UyZnMuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXNcbiIKK21zZ3N0ciAiXHRVdGlsaXNhdGlvbiBkZSAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIEVycmV1cnMgZGUgc29tbWUgZGUgY29udHL0bGUgZOl0ZWN06WVzIGRhbnMgbGUgc3lzdOhtZSBkZSBmaWNoaWVyoCEgICIKKyJMYW5jZXogZTJmc2NrIG1haW50ZW5hbnSgIVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSB0cm91dmVyIHVuIHN1cGVyYmxvYyBkZSBzeXN06G1lIGRlIGZpY2hpZXJzIHZhbGlkZS5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBFcnJldXJzIGRlIHNvbW1lIGRlIGNvbnRy9GxlIGTpdGVjdOllcyBkYW5zIGxlcyBiaXRtYXBzoCEgIExhbmNleiBlMmZzY2sgIgorIm1haW50ZW5hbnSgIVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzoDogJXOgOiBlcnJldXIgbG9ycyBkZSBsYSBsZWN0dXJlIGRlcyBiaXRtYXBzoDogJXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlV0aWxpc2F0aW9uoDogJXMgWyAtcnxRIF0gWyAtZnIgXSBw6XJpcGjpcmlxdWUgZmljaGllcl9pbWFnZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiAgICAgICAgICAgICAgJXMgLUkgcOlyaXBo6XJpcXVlIGZpY2hpZXJfaW1hZ2VcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICAgICAlcyAtcmEgIFsgIC1jZm5wICBdIFsgLW8gZOljYWxhZ2Utc3JjIF0gWyAtTyBk6WNhbGFnZS1kc3QgXSAiCisic3JjX2ZzIFsgZGVzdF9mcyBdXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlciIKK21zZ3N0ciAibG9ycyBkZSBsJ2FsbG9jYXRpb24gZCd1biB0YW1wb24iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIGJsb2NrICVsbHVcbiIKK21zZ3N0ciAiyWNyaXR1cmUgZHUgYmxvYyAlbGx1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgIkVycmV1ciBsb3JzIGRlIGQn6WNyaXR1cmUgZHUgYmxvYyAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTYKK21zZ2lkICJlcnJvciBpbiBnZW5lcmljX3dyaXRlKCkiCittc2dzdHIgImVycmV1ciBkYW5zIGdlbmVyaWNfd3JpdGUoKSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIkVycmV1cqA6IGxhIHRhaWxsZSBkJ2VuLXTqdGUgZXN0IHBsdXMgZ3JhbmRlIHF1ZSB3cnRfc2l6ZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIk5lIHBldXQgYWxsb3VlciB1biB0YW1wb24gZCdlbi106nRlXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGR1IHN1cGVyYmxvYyIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGRlIGxhIHRhYmxlIGQnaS1ub2V1ZHMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJsb3JzIGRlIGwn6WNyaXR1cmUgZHUgYml0bWFwIGRlIGJsb2NzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGR1IGJpdG1hcCBkJ2ktbm9ldWRzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJCbG9jIGRlcyBy6XBlcnRvaXJlcyAlbGx1IGNvcnJvbXB1OiBtYXV2YWlzIHJlY19sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAiQmxvYyBkZXMgculwZXJ0b2lyZXMgJWxsdSBjb3Jyb21wdTogbWF1dmFpcyBuYW1lX2xlbiAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIlbGx1IC8gJWxsdSBibG9jcyAoJWQlJSkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAiQ29waWUgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiQXJy6nRlciBtYWludGVuYW50IHZhIGTpdHJ1aXJlIGxlIHN5c3TobWUgZGUgZmljaGllciwgaW50ZXJyb21wZXogZGUgbm91dmVhdSAiCisic2kgdm91cyDqdGVzIHP7clxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiICVzIHJlbWFpbmluZyBhdCAlLjJmIE1CL3MiCittc2dzdHIgIiByZXN0ZSAlcyDgICUuMmYgTW8vcyIKKworIzogbWlzYy9lMmltYWdlLmM6NjY0IG1pc2MvZTJpbWFnZS5jOjExOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3IgcmVhZGluZyBibG9jayAlbGx1IgorbXNnc3RyICJlcnJldXIgZGUgbGVjdHVyZSBkdSBibG9jICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIkNvcGnpICVsbHUgLyAlbGx1IGJsb2NzICglZCUlKSBkYW5zICVzICIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAi4CAlLjJmIE1vL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgImxvcnMgZGUgbCdhbGxvY2F0aW9uIGQndW5lIHRhYmxlIGwxIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJsb3JzIGRlIGwnYWxsb2NhdGlvbiBkJ3VuIGNhY2hlIGwyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorIkF0dGVudGlvbqA6IElsIHJlc3RlIGRlcyB0YWJsZXMgZGFucyBsZSBjYWNoZSBsb3JzIGRlIGxhIGxpYulyYXRpb24gZHUgIgorImNhY2hlLCBsZXMgZG9ubullcyBzZXJvbnQgcGVyZHVlLCBldCBkb25jIGwnaW1hZ2UgcG91cnJhaXQgbmUgcGFzIOp0cmUgIgorInZhbGlkZS5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAibG9ycyBkZSBsJ2FsbG9jYXRpb24gZGUgZXh0MmZzX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImxvcnMgZGUgbCdpbml0aWFsaXphdGlvbiBkZSBleHQyZnNfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICIiCisiRXJyZXVyIGRlIHByb2dyYW1tYXRpb26gOiBwbHVzaWV1cnMgYmxvY3Mgc+lxdWVudGllbHMgcmVmY291bnQgb250IOl06SAiCisiY3Lp6XOgIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgImxvcnMgZGUgbCdhbGxvY2F0aW9uIGQndW4gYml0bWFwIGRlIGJsb2NzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBzY3JhbWJsZSBibG9jayBiaXRtYXAiCittc2dzdHIgImxvcnMgZGUgbCdhbGxvY2F0aW9uIGQndW4gYml0bWFwIGRlIGJsb2Mgc2NhbWJsZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4OAorbXNnaWQgIlNjYW5uaW5nIGlub2Rlcy4uLlxuIgorbXNnc3RyICJFeGFtZW4gZGVzIGktbm9ldWRzLi4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIk5lIHBldXQgYWxsb3VlciBsZSB0YW1wb24gZGUgYmxvYyIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJsb3JzIGRlIGwnaXRlcmF0aW9uIHN1ciBsJ2ktbm9ldWQgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICJMZXMgaW1hZ2VzIGJydXRlcyBldCBxY293MiBuZSBwZXV2ZW50IHBhcyDqdHJlIGluc3RhbGzpZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiZXJyZXVyIGxvcnMgZGUgbGEgbGVjdHVyZSBkZXMgYml0bWFwcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZHUgZmljaGllciBkZSBw6XJpcGjpcmlxdWUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MzAKK21zZ2lkICJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIgorbXNnc3RyICJsb3JzIGRlIGxhIHJlc3RhdXJhdGlvbiBkZSBkZSBsYSB0YWJsZSBkZSBsJ2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAiTCdvcHRpb24gLWEgbmUgcGV1dCDqdHJlIHV0aWxpc+llIHF1J2F2ZWMgbGVzIGltYWdlcyBicnV0ZXMgb3UgUUNPVzIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkxlcyBk6WNhbGFnZXMgbmUgc29udCBhdXRvcmlz6XMgcXUnYXZlYyBsZXMgaW1hZ2VzIGJydXRlcy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkxlIG1vZGUgZGUgZOlwbGFjZW1lbnQgbidlc3QgYXV0b3Jpc+kgcXUnYXZlYyBsZXMgaW1hZ2VzIGJydXRlcy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIkxlIG1vZGUgZGUgZOlwbGFjZW1lbnQgbuljZXNzaXRlIHRvdXMgbGVzIG1vZGUgZGUgZG9ubullcy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJ26XJpZmljYXRpb24gZGUgbW9udGFnZSBleGlzdGFudCIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhbmNlciBlMmltYWdlIHN1ciB1biBzeXN06G1lIGRlIGZpY2hpZXIgbW9udOkgZW4g6WNyaXR1cmUgcGV1dFxuIgorInByb2R1aXJlIHVuZSBpbWFnZSBpbmNvaOlyZW50ZSBxdWkgbmUgc2VyYSBwYXMgdXRpbGUgcG91ciBkZXMgZmluc1xuIgorImRlIGTpYnVnZ2FnZS4gVXRpbGlzZXogbCdvcHRpb24gLWYgc2kgdm91cyB2b3VsZXogcullbGxlbWVudCBmYWlyZVxuIgorImNlbGEuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiVW5lIGltYWdlIFFDT1cyIG5lIHBldXQgcGFzIOp0cmUg6WNyaXRlIHN1ciBzdGRvdXSgIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICJOZSBwZXV0IHBhcyBleGFtaW5lciBsYSBzb3J0aWVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiTCdpbWFnZSAoJXMpIGVzdCBjb21wcmVzc+llXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiTCdpbWFnZSAoJXMpIGVzdCBjaGlmZnLpZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAiIgorImxvcnMgZGUgbCdlc3NhaSBkZSBjb252ZXJzaW9uIGRlIGwnaW1hZ2UgcWNvdzIgKCVzKSBlbiBpbWFnZSBicnV0ZSAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJMJ29wdGlvbiAtYyBuJ2VzdCBzdXBwb3J06WUgcXUnZW4gbW9kZSBicnV0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICJMJ29wdGlvbiAtYyBuJ2VzdCBwYXMgc3VwcG9ydOllIGF2ZWMg6WNyaXR1cmUgc3VyIHN0ZG91dFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjU3Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBjaGVja19idWYiCittc2dzdHIgImxvcnMgZGUgbCdhbGxvY2F0aW9uIGRlIGNoZWNrX2J1ZiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY2MworbXNnaWQgIlRoZSAtcCBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiTCdvcHRpb24gLXAgbidlc3Qgc3VwcG9ydOllIHF1J2VuIG1vZGUgYnJ1dFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJsb2NrcyBhbHJlYWR5IGNvbnRhaW5lZCB0aGUgZGF0YSB0byBiZSBjb3BpZWRcbiIKK21zZ3N0ciAiJWQgYmxvY3MgY29udGVuYWllbnQgZOlq4CBsZXMgZG9ubullcyBkZXZhbnQg6nRyZSBjb3Bp6WVzXG4iCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICJVdGlsaXNhdGlvbqA6ICVzIC1yIHDpcmlwaOlyaXF1ZVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVsoDogaW1wb3NzaWJsZSBkJ291dnJpciAlc1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWygOiBuZSBwZXV0IGF0dGVpbmRyZSBsZSBzdXBlcmJsb2NcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWygOiBlcnJldXIgZGUgbGVjdHVyZSBkdSBzdXBlcmJsb2NcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogbm90IGFuIGV4dDIgZmlsZXN5c3RlbVxuIgorbXNnc3RyICJlMmxhYmVsoDogbidlc3QgcGFzIHVuIHN5c3TobWUgZGUgZmljaGllcnMgZXh0MlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICJBdmVydGlzc2VtZW50oDog6XRpcXVldHRlIHRyb3AgbG9uZ3VlLCBzZXJhIHRyb25xdellLlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9jayBhZ2FpblxuIgorbXNnc3RyICJlMmxhYmVsoDogbmUgcGV1dCBhdHRlaW5kcmUgbGUgc3VwZXJibG9jIOAgbm91dmVhdVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3Igd3JpdGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWygOiBlcnJldXIgbG9ycyBkZSBsJ+ljcml0dXJlIGR1IHN1cGVyYmxvY1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMTcgbWlzYy90dW5lMmZzLmM6MTU5MAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogZTJsYWJlbCBkZXZpY2UgW25ld2xhYmVsXVxuIgorbXNnc3RyICJVdGlsaXNhdGlvbqA6IGUybGFiZWwgcOlyaXBo6XJpcXVlIFtub3V2ZWxsZV/pdGlxdWV0dGVdXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuc2FjdGlvbiBmaWxlPiA8ZmlsZXN5c3RlbT5cbiIKK21zZ3N0ciAiIgorIlV0aWxpc2F0aW9uoDogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8ZmljaGllciB0cmFuc2FjdGlvbj4gPHN5c3TobWUgZGUgIgorImZpY2hpZXJzPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiIgorIkxlIHN1cGVyYmxvYyBkdSBzeXN06G1lIGRlIGZpY2hpZXIgbmUgY29ycmVzcG9uZCBwYXMgYXUgZmljaGllciAiCisiZCdhbm51bGF0aW9uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiTCdVVUlEIG5lIGNvcnJlc3BvbmQgcGFzLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiTGEgZGF0ZSBkZSBkZXJuaWVyIG1vbnRhZ2UgbmUgY29ycmVzcG9uZCBwYXMuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUwCittc2dpZCAiTGFzdCB3cml0ZSB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJMYSBkYXRlIGRlIGRlcm5p6HJlIOljcml0dXJlIG5lIGNvcnJlc3BvbmQgcGFzLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIkxlIGNvbXB0ZXVyIGRlIGR1cullIGRlIHZpZSBkJ+ljcml0dXJlIG5lIGNvcnJlc3BvbmQgcGFzLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIHN1cGVyYmxvYyBkdSBzeXN06G1lIGRlIGZpY2hpZXJzLiIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJsb3JzIGRlIGxhIHLpY3Vw6XJhdGlvbiBkdSBzdXBlcmJsb2MiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKyJMYSBzb21tZSBkZSBjb250cvRsZSBkdSBzdXBlcmJsb2MgZHUgZmljaGllciBkJ2FubnVsYXRpb24gbmUgY29ycmVzcG9uZCAiCisicGFzLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjMzNAorIywgYy1mb3JtYXQKK21zZ2lkICJpbGxlZ2FsIG9mZnNldCAtICVzIgorbXNnc3RyICJk6WNhbGFnZSBpbGzpZ2FsIC0gJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IHdyaXRlIHRvIGFuIHVuZG8gZmlsZSB3aGlsZSByZXBsYXlpbmcgaXQuXG4iCittc2dzdHIgIiIKKyJPbiBuZSBwZXV0IHBhcyDpY3JpcmUgZGFucyB1biBmaWNoaWVyIGQnYW5udWxhdGlvbiBwZW5kYW50IHNvbiByZWpldS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJsb3JzIGRlIGwnb3V2ZXJ0dXJlIGR1IGZpY2hpZXIgZCdhbm51bGF0aW9uIKugJXOgu1xuIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICJsb3JzIGRlIGxhIGxlY3R1cmUgZHUgZmljaGllciBkJ2FubnVsYXRpb24iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIlc6A6IE4nZXN0IHBhcyB1biBmaWNoaWVyIGQnYW5udWxhdGlvblxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiVzOiBMYSBzb21tZSBkZSBjb250cvRsZSBkZSBsJ2VuLXTqdGUgbmUgY29ycmVzcG9uZCBwYXMuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iCittc2dzdHIgIiVzOiBFbi106nRlIGRlIGZpY2hpZXIgZCdhbm51bGF0aW9uIGNvcnJvbXB1LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiJXM6IExhIHRhaWxsZSBkZSBibG9jIGQnYW5udWxhdGlvbiBlc3QgdHJvcCBncmFuZGUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIgorbXNnc3RyICIlczogVGFpbGxlIGRlIGJsb2MgZCdhbm51bGF0aW9uIHRyb3AgcGV0aXRlLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVzOiBGb25jdGlvbm5hbGl06SBkZSBmaWNoaWVyIGQnYW5udWxhdGlvbiBpbmNvbm51ZSBwb3NpdGlvbm7pZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgbGEgZOl0ZXJtaW5hdGlvbiDgIHNhdm9pciBzaSAlcyBlc3QgbW9udOkuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICIiCisiZTJ1bmRvIG5lIGRldnJhaXQg6nRyZSBsYW5j6SBxdWUgc3VyIGRlcyBzeXN06G1lcyBkZSBmaWNoaWVycyBub24gbW9udOlzIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGAlcyciCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZGUgq6Alc6C7IgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICJsZSBk6WNhbGFnZSBzcOljaWZp6SBlc3QgdHJvcCBncmFuZCIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgImxvcnMgZGUgbGEgbGVjdHVyZSBkZXMgY2zpcyIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiVzOiBub21icmUgbWFnaXF1ZSBkZSBjbOkgaW5jb3JyZWN0IOAgJWxsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczoga2V5IGJsb2NrIGNoZWNrc3VtIGVycm9yIGF0ICVsbHUuXG4iCittc2dzdHIgIiVzOiBlcnJldXIgZGUgc29tbWUgZGUgY29udHL0bGUgZHUgYmxvYyBkZSBjbOkg4CAlbGx1LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIiVzOiBsZSBibG9jICVsbHUgZXN0IHRyb3AgbG9uZy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJsb3JzIGRlIGxhIHLpY3Vw6XJhdGlvbiBkdSBibG9jICVsbHUuIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKyJlcnJldXIgZGUgc29tbWUgZGUgY29udHL0bGUgZGFucyBsZSBibG9jIGRlIHN5c3TobWUgZGUgZmljaGllciAlbGx1IChibG9jICIKKyJkJ2FubnVsYXRpb24gJWxsdSlcbiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAibG9ycyBkZSBkJ+ljcml0dXJlIGR1IGJsb2MgJWxsdS4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiRmljaGllciBkJ2FubnVsYXRpb24gY29ycm9tcHWgOyBsYW5jZXogZTJmc2NrIE1BSU5URU5BTlSgIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiRXJyZXVyIGQnRS9TIHBlbmRhbnQgbGUgcmVqZXWgOyBsYW5jZXogZTJmc2NrIE1BSU5URU5BTlSgIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICJFbnJlZ2lzdHJlbWVudCBkJ2FubnVsYXRpb24gaW5jb21wbGV0oDsgbGFuY2V6IGUyZnNjay5cbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICJVc2FnZaA6ICBmaW5kc3VwZXIgcOlyaXBo6XJpcXVlIFtvY3RldHNf4F9lc2NhbW90ZXIgW2TpYnV0X2VuX0tvXV1cbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIm9jdGV0cyDgIGVzY2Ftb3RlciBkb2l0IOp0cmUgdW4gbm9tYnJlLCBub24gcGFzICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgIm9jdGV0cyDgIGVzY2Ftb3RlciBkb2l0IOp0cmUgdW4gbXVsdGlwbGUgZGUgbGEgdGFpbGxlIGRlIHNlY3RldXJcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICJk6WJ1dCBlbiBLbyBkb2l0IOp0cmUgdW4gbm9tYnJlLCBub24gcGFzICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICJzdGFydGtiIGRldnJhaXQg6nRyZSBzdXDpcmlldXIgb3Ug6WdhbCDgIDAsIG5vbiBwYXMgJWxsdVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGluZyBhdCAlbGx1LCB3aXRoICV1IGJ5dGUgaW5jcmVtZW50c1xuIgorbXNnc3RyICJk6WJ1dCDgICVsbHUsIGF2ZWMgdW4gaW5jcultZW50IGRlICV1IG9jdGV0c1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKyJbKl0gcHJvYmFibGVtZW50IHVuIHN1cGVyYmxvYyDpY3JpdCBkYW5zIGxlIHN1cGVyYmxvYyBkZSBqb3VybmFsIGV4dDMsXG4iCisiXHRldCBkb25jIHN0YXJ0L2VuZC9ncnAgaW5jb3JyZWN0XG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKyJk6WNhbGFnZV9vICAgZOlidXRfbyAgICAgICAgZmluZF9vICAgIGJsb2NzX3NmICBibGtzeiAgZ3JwICBta2ZzLyIKKyJkYXRlX21vbnRhZ2UgICAgICAgICBzYl91dWlkIOl0aXF1ZXR0ZVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorIlxuIgorIiUxMUx1OiB0ZXJtaW7pIGF2ZWMgZXJybm8gJWRcbiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIkFUVEVOVElPTqA6IGltcG9zc2libGUgZCdvdXZyaXIgJXOgOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIkFUVEVOVElPTqA6IGZvcm1hdCBlcnJvbukgc3VyIGxhIGxpZ25lICVkIGRlICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisiQVRURU5USU9OoDogdm90cmUgZmljaGllciAvZXRjL2ZzdGFiIG5lIGNvbnRpZW50IHBhcyBkZSBjaGFtcFxuIgorIlx0ZGUgbnVt6XJvIGRlIHBhc3NlIGZzY2suIEplIHZhaXMgYXJyYW5nZXIgY2V0dGUgc2l0dWF0aW9uIHBvdXIgdm91c1xuIgorIlx0bWFpcyB2b3VzIGRldnJpZXogY29ycmlnZXIgdm90cmUgZmljaGllciAvZXRjL2ZzdGFiIGF1c3NpIHT0dCBxdWVcbiIKKyJcdHBvc3NpYmxlLlxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NroDogJXOgOiBub24gdHJvdXbpXG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzoDogd2FpdKA6IHBsdXMgZGUgcHJvY2Vzc3VzIGZpbHOgPyE/XG4iCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICIiCisiQXZlcnRpc3NlbWVudC4uLiAlcyBwb3VyIGxlIHDpcmlwaOlyaXF1ZSAlcyBzJ2VzdCB0ZXJtaW7pIGF2ZWMgbGUgc2lnbmFsICIKKyIlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzoDogbCfpdGF0IGVzdCAleCwgbmUgZGV2cmFpdCBqYW1haXMgc2UgcHJvZHVpcmUuXG4iCisKKyM6IG1pc2MvZnNjay5jOjY2MQorIywgYy1mb3JtYXQKK21zZ2lkICJGaW5pc2hlZCB3aXRoICVzIChleGl0IHN0YXR1cyAlZClcbiIKK21zZ3N0ciAiVGVybWlu6SBhdmVjICVzICjpdGF0IGRlIGZpbiBkJ2V46WN1dGlvbiAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6NzIxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBFcnJvciAlZCB3aGlsZSBleGVjdXRpbmcgZnNjay4lcyBmb3IgJXNcbiIKK21zZ3N0ciAiJXOgOiBFcnJldXIgJWQgbG9ycyBkZSBsJ2V46WN1dGlvbiBkZSBmc2NrLiVzIHBvdXIgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyJTb2l0IHRvdXMgb3UgYXVjdW4gZGVzIHR5cGVzIGRlIHN5c3TobWVzIGRlIGZpY2hpZXJzIHBhc3PpcyDgIC10IGRvaXZlbnRcbiIKKyLqdHJlIHBy6WZpeOlzIHBhciCroG5voLsgb3Ugq6AhoLsuXG4iCisKKyM6IG1pc2MvZnNjay5jOjc2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZmlsZXN5c3RlbSB0eXBlc1xuIgorbXNnc3RyICIiCisiSW1wb3NzaWJsZSBkJ2FsbG91ZXIgZGUgbGEgbeltb2lyZSBwb3VyIGxlcyB0eXBlcyBkZSBzeXN06G1lcyBkZSBmaWNoaWVyc1xuIgorCisjOiBtaXNjL2ZzY2suYzo4ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBza2lwcGluZyBiYWQgbGluZSBpbiAvZXRjL2ZzdGFiOiBiaW5kIG1vdW50IHdpdGggbm9uemVybyBmc2NrIHBhc3MgIgorIm51bWJlclxuIgorbXNnc3RyICIiCisiJXOgOiBzYXV0IGRlIGxhIG1hdXZhaXNlIGxpZ25lIGRlIC9ldGMvZnN0YWKgOiBtb250YWdlIKugYmluZKC7IGF2ZWMgdW4gIgorIm51belybyBkZSBwYXNzZSBmc2NrIG5vbiBudWxcbiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNja6A6IG5lIHBldXQgcGFzIHbpcmlmaWVyICVzoDogZnNjay4lcyBub24gdHJvdXbpXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIlbpcmlmaWNhdGlvbiBkZSB0b3VzIGxlcyBzeXN06G1lcyBkZSBmaWNoaWVycy5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS1lbiBhdHRlbnRlLS0gKHBhc3NlICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDc4Cittc2dpZCAiIgorIlVzYWdlOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgZnN0eXBlXSBbZnMtb3B0aW9uc10gW2ZpbGVzeXMgLi4uXVxuIgorbXNnc3RyICIiCisiVXRpbGlzYXRpb26gOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgdHlwZV9zeXNfZmljaGllcnNdICIKKyJbb3B0aW9uc19zeXNfZmljaGllcnNdIFtzeXNfZmljaGllcnMuLi5dXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXOgOiB0cm9wIGRlIHDpcmlwaOlyaXF1ZXNcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXOgOiB0cm9wIGQnYXJndW1lbnRzXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKK21zZ2lkICJNb3VudGluZyByZWFkLW9ubHkuXG4iCittc2dzdHIgIk1vbnRhZ2UgZW4gbGVjdHVyZSBzZXVsZS5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKyIlczogVXRpbGlzYXRldXJzIGF1dG9yaXPpcyDgIGFsbG91ZXIgdG91cyBsZXMgYmxvY3MuIENlY2kgZXN0IGRhbmdlcmV1eKAhXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiVzOiAlcy5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICJTVlAgZXjpY3V0ZXogZTJmc2NrIC1meSAlcy5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisiTGUgam91cm5hbCBhIGJlc29pbiBkJ3VuZSBy6WN1cOlyYXRpb26gOyBsYW5jZXIgq6BlMmZzY2sgLUUgam91cm5hbF9vbmx5oLsgIgorImVzdCBu6WNlc3NhaXJlLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiVzOiDJY3JpcmUgZGFucyBsZSBqb3VybmFsIG4nZXN0IHBhcyBzdXBwb3J06S5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJBdmVydGlzc2VtZW50OiBNb250YWdlIGQndW4gc3lzdOhtZSBkZSBmaWNoaWVyIG5vbiB26XJpZmnpLCBsYW5jZXIgZTJmc2NrICIKKyJlc3QgcmVjb21tYW5k6S5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJBdmVydGlzc2VtZW50OiBOb21icmUgbWF4aW11bSBkZSBtb250YWdlIGF0dGVpbnQsIGxhbmNlciBlMmZzY2sgZXN0ICIKKyJyZWNvbW1hbmTpLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnQ6IERhdGUgZGUgdulyaWZpY2F0aW9uIGF0dGVpbnRloDsgbGFuY2VyIGUyZnNjayBlc3QgIgorInJlY29tbWFuZOkuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzQKK21zZ2lkICJPcnBoYW5zIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiT3JwaGVsaW5zIGTpdGVjdOlzoDsgbGFuY2VyIGUyZnNjayBlc3QgcmVjb21tYW5k6S5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIkVycmV1cnMgZOl0ZWN06WVzoDsgbGFuY2VyIGUyZnNjayBlc3QgcmVxdWlzLlxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiVXRpbGlzYXRpb26gOiAlcyBbLVJWYWRscHZdIFtmaWNoaWVycy4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJMb3JzIGRlIGxhIGxlY3R1cmUgZGVzIGRyYXBlYXV4IHN1ciAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIkxvcnMgZGUgbGEgbGVjdHVyZSBkdSBwcm9qZXQgc3VyICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIkxvcnMgZGUgbGEgbGVjdHVyZSBkZSBsYSB2ZXJzaW9uIHN1ciAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiVXRpbGlzYXRpb26gOiAlcyBbLWN8LWwgbm9tLWRlLWZpY2hpZXJdIFstYiB0YWlsbGUtZGUtYmxvY10gWy1DIHRhaWxsZS1kZS0iCisiY2x1c3Rlcl1cbiIKKyJcdFstaSBvY3RldHMtcGFyLWktbm9ldWRdIFstSSB0YWlsbGUtZGVzLWktbm9ldWRzXVxuIgorIlx0Wy1KIG9wdGlvbnMtZGUtam91cm5hbF0gWy1HIHRhaWxsZS1ncm91cGUtZmxleF0gWy1OIG5vbWJyZS1kLWktbm9ldWRzXVxuIgorIlx0Wy1kIHLpcGVydG9pcmUtcmFjaW5lXSBbLW0gcG91cmNlbnRhZ2UtZGUtYmxvY3MtculzZXJ26XNdXG4iCisiXHRbLW8gc3lzdOhtZS1kLWV4cGxvaXRhdGlvbi1kZS1jculhdGlvbl0gWy1nIGJsb2NzLXBhci1ncm91cGVdXG4iCisiXHRbLUwg6XRpcXVldHRlLWR1LXZvbHVtZV0gWy1NIGRlcm5pZXItculwZXJ0b2lyZS1tb2506V1cbiIKKyJcdFstTyBmb25jdGlvbm5hbGl06VssLi4uXV0gWy1yIHLpdmlzaW9uLWR1LXN5c3TobWUtZGUtZmljaGllcnNdXG4iCisiXHRbLUUgb3B0aW9uLel0ZW5kdWVbLC4uLl1dIFstdCB0eXBlLXN5c3TobWUtZGUtZmljaGllcnNdIFstVCB0eXBlLSIKKyJkJ3V0aWxpc2F0aW9uXVxuIgorIlx0Wy1VIFVVSURdIFstZSBjb21wb3J0ZW1lbnRfZXJyZXVyXSBbLXogZmljaGllcl9hbm51bGF0aW9uXVxuIgorIlx0Wy1qbnF2REZTVl0gcOlyaXBo6XJpcXVlIFtub21icmUtZGUtYmxvY3NdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAiRXjpY3V0aW9uIGRlIGxhIGNvbW1hbmRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJ1biAnJXMnIgorbXNnc3RyICJkdXJhbnQgbGEgdGVudGF0aXZlIGQnZXjpY3V0aW9uIGRlIKugJXOguyIKKworIzogbWlzYy9ta2UyZnMuYzoyNjYKK21zZ2lkICJ3aGlsZSBwcm9jZXNzaW5nIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIHByb2dyYW0iCittc2dzdHIgIiIKKyJsb3JzIGR1IHRyYWl0ZW1lbnQgZGUgbGEgbGlzdGUgZGVzIGJsb2NzIGTpZmVjdHVldXgg4CBwYXJ0aXIgZHUgcHJvZ3JhbW1lIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiIgorIkJsb2MgJWQgZGFucyBsYSB6b25lIGR1IGRlc2NyaXB0ZXVyIGRlIHN1cGVyYmxvYy9ncm91cGUgcHJpbWFpcmUgZXN0ICIKKyJk6WZlY3R1ZXV4LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisiTGVzIGJsb2NzIGRlICV1IOAgJXUgZG9pdmVudCDqdHJlIGVuIGJvbiDpdGF0IHBvdXIgZ+lu6XJlciBsZSBzeXN06G1lIGRlICIKKyJmaWNoaWVycy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAiQXJy6nQgaW1t6WRpYXQuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiQXZlcnRpc3NlbWVudKA6IGxlcyBzYXV2ZWdhcmRlcyBkZXMgZGVzY3JpcHRldXJzIGRlIHN1cGVyYmxvY3MvZ3JvdXBlcyBhdVxuIgorIlx0YmxvYyAldSBjb250aWVubmVudCBkZXMgYmxvY3MgZOlmZWN0dWV1eC5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAibG9ycyBkdSBtYXJxdWFnZSBkZXMgYmxvY3MgZOlmZWN0dWV1eCBlbiB0YW50IHF1J3V0aWxpc+lzIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIsljcml0dXJlIGRlcyB0YWJsZXMgZCdpLW5vZXVkc6A6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCB3cml0ZSAlZCBibG9ja3MgaW4gaW5vZGUgdGFibGUgc3RhcnRpbmcgYXQgJWxsdTogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkltcG9zc2libGUgZCfpY3JpcmUgJWQgYmxvY3MgZGFucyBsYSB0YWJsZSBkJ2ktbm9ldWRzIGTpYnV0YW50IOAgJWxsdaA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJjb21wbOl06SAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJsb3JzIGRlIGxhIGNy6WF0aW9uIGR1IHLpcGVydG9pcmUgcmFjaW5lIgorCisjOiBtaXNjL21rZTJmcy5jOjQ2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGRlIGwnaS1ub2V1ZCByYWNpbmUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDc4Cittc2dpZCAid2hpbGUgc2V0dGluZyByb290IGlub2RlIG93bmVyc2hpcCIKK21zZ3N0ciAibG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGRlIGxhIHByb3Byael06SBkZSBsJ2ktbm9ldWQgcmFjaW5lIgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJsb3JzIGRlIGxhIGNy6WF0aW9uIGRlIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgImxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAibG9ycyBkZSBsJ2V4dGVuc2lvbiBkZSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAibG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGRlIGwnaS1ub2V1ZCBkZXMgYmxvY3MgZOlmZWN0dWV1eCIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiTeltb2lyZSDpcHVpc+llIGxvcnMgZGUgbCdlZmZhY2VtZW50IGRlcyBzZWN0ZXVycyAlZC0lZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICJBdmVydGlzc2VtZW50oDogaW1wb3NzaWJsZSBkZSBsaXJlIGxlIGJsb2MgMKA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIkF2ZXJ0aXNzZW1lbnSgOiBpbXBvc3NpYmxlIGQnZWZmYWNlciBsZSBzZWN0ZXVyICVkoDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJsb3JzIGRlIGwnaW5pdGlhbGlzYXRpb24gZHUgam91cm5hbCBkdSBzdXBlcmJsb2MiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjA4Cittc2dpZCAiWmVyb2luZyBqb3VybmFsIGRldmljZTogIgorbXNnc3RyICJNaXNlIOAgeulybyBkdSBw6XJpcGjpcmlxdWUgZGUgam91cm5hbKA6ICIKKworIzogbWlzYy9ta2UyZnMuYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBqb3VybmFsIGRldmljZSAoYmxvY2sgJWxsdSwgY291bnQgJWQpIgorbXNnc3RyICIiCisibG9ycyBkZSBsYSBtaXNlIOAgeulybyBkdSBw6XJpcGjpcmlxdWUgZGUgam91cm5hbCAoYmxvYyAlbGx1LCBjb21wdGUgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJsb3JzIGRlIGwn6WNyaXR1cmUgZHUgc3VwZXJibG9jIGRlIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICIiCisiRW4gdHJhaW4gZGUgY3LpZXIgdW4gc3lzdOhtZSBkZSBmaWNoaWVycyBhdmVjICVsbHUgJWRrIGJsb2NzIGV0ICV1IGktIgorIm5vZXVkcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnSgOiAlbGx1IGJsb2NzIGludXRpbGlz6XMuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiyXRpcXVldHRlIGRlIHN5c3TobWUgZGUgZmljaGllcnM9JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAiVHlwZSBkZSBzeXN06G1lIGQnZXhwbG9pdGF0aW9uoDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJUYWlsbGUgZGUgYmxvYz0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiVGFpbGxlIGRlIGNsdXN0ZXI9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJUYWlsbGUgZGUgZnJhZ21lbnQ9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICKroFN0cmlkZaC7ID0gJXUgYmxvY3MsIKugU3RyaXBlIHdpZHRooLsgPSAldSBibG9jc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1IGktbm9ldWRzLCAlbGx1IGJsb2NzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJWxsdSBibG9jcyAoJTIuMmYlJSkgculzZXJ26XMgcG91ciBsZSBzdXBlciB1dGlsaXNhdGV1clxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIlByZW1pZXIgYmxvYyBkZSBkb25u6WVzPSV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIlByb3Byael0YWlyZSBkdSBy6XBlcnRvaXJlIHJhY2luZT0ldToldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICJOb21icmUgbWF4aW11bSBkZSBibG9jcyBkdSBzeXN06G1lIGRlIGZpY2hpZXJzPSVsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cHNcbiIKK21zZ3N0ciAiJXUgZ3JvdXBlcyBkZSBibG9jc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBncm91cGUgZGUgYmxvY1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5OAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBjbHVzdGVycyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxvY3MgcGFyIGdyb3VwZSwgJXUgY2x1c3RlcnMgcGFyIGdyb3VwZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2NzIHBhciBncm91cGUsICV1IGZyYWdtZW50cyBwYXIgZ3JvdXBlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgaS1ub2V1ZHMgcGFyIGdyb3VwZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIFVVSUQ6ICVzXG4iCittc2dzdHIgIlVVSUQgZGUgc3lzdOhtZSBkZSBmaWNoaWVycz0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgIlN1cGVyYmxvY3MgZGUgc2Vjb3VycyBzdG9ja+lzIHN1ciBsZXMgYmxvY3OgOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHJlcXVpcmVzICctTyA2NGJpdCdcbiIKK21zZ3N0ciAiJXMgbuljZXNzaXRlICctTyA2NGJpdCdcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICInJXMnIGRvaXQg6nRyZSBhdmFudCAncmVzaXplPSV1J1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGRlc2Nfc2l6ZTogJyVzJ1xuIgorbXNnc3RyICJkZXNjX3NpemUgaW52YWxpZGU6ICclcydcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgIkTpY2FsYWdlIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NTMgbWlzYy90dW5lMmZzLmM6MTk1OAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCittc2dzdHIgIm1tcF91cGRhdGVfaW50ZXJ2YWwgaW52YWxpZGWgOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICJOb21icmUgZGUgc3VwZXJibG9jIGRlIHNlY291cnMgaW52YWxpZGWgOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFt6HRyZSCroHN0cmlkZaC7IGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpcGUtd2lkdGggcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJQYXJhbeh0cmUgq6BzdHJpcGUtd2lkdGiguyBpbnZhbGlkZaA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW3odHJlIGRlIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MzQKK21zZ2lkICJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkxhIHRhaWxsZSBtYXhpbWFsZSBkZSBsJ2FncmFuZGlzc2VtZW50IGRvaXQg6nRyZSBwbHVzIGdyYW5kZSBxdWUgbGEgdGFpbGxlXG4iCisiZHUgc3lzdOhtZSBkZSBmaWNoaWVycy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJMZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBlbiBsaWduZSBuJ2VzdCBwYXMgc3VwcG9ydOllIGF2ZWMgbGVzIHN5c3TobWVzIGRlXG4iCisiZmljaGllcnMgZGUgdmVyc2lvbiAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJyb290X293bmVyIGludmFsaWRloDogq6Alc6C7XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlVuZSBvdSBkZXMgb3B0aW9ucyBzcOljaWZp6WVzIHNvbnQgZXJyb27pZXOgOiAlc1xuIgorIlxuIgorIkxlcyBvcHRpb25zIOl0ZW5kdWVzIHNvbnQgc+lwYXLpZXMgcGFyIGRlcyB2aXJndWxlcyBldCBwZXV2ZW50IHByZW5kcmUgdW5cbiIKKyJcdGFyZ3VtZW50IHF1aSBlc3QgZOlmaW5pIOAgbCdhaWRlIGQndW4gc2lnbmUgZCfpZ2FsaXTpICiroD2guykuXG4iCisiXG4iCisiTGVzIG9wdGlvbnMgdmFsaWRlcyBzb250oDpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsbGU+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08dGFpbGxlIGVuIGJsb2NzIGRlcyBtb3JjZWF1eCBwYXIgZGlzcXVlIFJBSUQ+XG4iCisiXHRzdHJpcGUtd2lkdGg9PHN0cmlkZSBSQUlEICogbm9tYnJlIGRlIGRpc3F1ZXMgZW4gYmxvY3M+XG4iCisiXHRvZmZzZXQ9PGTpY2FsYWdlIG/5IGNy6WVyIGxlIHN5c3TobWUgZGUgZmljaGllcnM+XG4iCisiXHRyZXNpemU9PHRhaWxsZSBtYXhpbWFsZSBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBlbiBibG9jcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCBwb3VyIGTpc2FjdGl2ZXIsIDEgcG91ciBhY3RpdmVyPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCBwb3VyIGTpc2FjdGl2ZXIsIDEgcG91ciBhY3RpdmVyPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgcG91ciBk6XNhY3RpdmVyLCAxIHBvdXIgYWN0aXZlcj5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBkdSBy6XBlcnRvaXJlIHJhY2luZT46PGdpZCBkdSBy6XBlcnRvaXJlIHJhY2luZT5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTx0eXBlKHMpIGRlIHF1b3RhKHMpIOAgYWN0aXZlcj5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdHRlbnRpb26gOiBsZSCroHN0cmlwZS13aWR0aKC7IFJBSUQgJXUgbidlc3QgcGFzIG11bHRpcGxlIGltcGFpciBkdSAiCisiq6BzdHJpZGWguyAldS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisiRXJyZXVyIGRlIHN5bnRheGUgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZGUgbWtlMmZzXG4iCisiXHQoJXMsIGxpZ25lIG6wJWQpXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiSmV1IGQnb3B0aW9ucyBkZSBzeXN06G1lIGRlIGZpY2hpZXJzIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTI2IG1pc2MvdHVuZTJmcy5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1vdW50IG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIkpldSBkJ29wdGlvbnMgcG91ciBsZSBtb250YWdlIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjYyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJZb3VyIG1rZTJmcy5jb25mIGZpbGUgZG9lcyBub3QgZGVmaW5lIHRoZSAlcyBmaWxlc3lzdGVtIHR5cGUuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJWb3RyZSBta2UyZnMuY29uZiBuZSBwculjaXNlIHBhcyBsZSB0eXBlIGRlIHN5c3TobWUgZGUgZmljaGllcnMgZGVcbiIKKyIlcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjY2Cittc2dpZCAiIgorIllvdSBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgYW4gdXBkYXRlZCBta2UyZnMuY29uZiBmaWxlLlxuIgorIlxuIgorbXNnc3RyICIiCisiSWwgdm91cyBmYXV0IHNhbnMgZG91dGUgaW5zdGFsbGVyIHVuIGZpY2hpZXIgbWtlMmZzLmNvbmYgbWlzIOAgam91ci5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiQXJy6nQgaW1t6WRpYXQuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQXZlcnRpc3NlbWVudKA6IGxlIGZzX3R5cGUgJXMgbidlc3QgcGFzIGTpZmluaSBkYW5zIG1rZTJmcy5jb25mXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIkltcG9zc2libGUgZCdhbGxvdWVyIGRlIGxhIG3pbW9pcmUgcG91ciB1biBub3V2ZWF1IGNoZW1pbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICJOJ2EgcHUgaW5pdGlhbGlzZXIgbGUgcHJvZmlsYWdlIGNvcnJlY3RlbWVudCAoZXJyZXVyoDogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJ0YWlsbGUgaW52YWxpZGUgZGVzIGJsb2NzIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJBdmVydGlzc2VtZW50oDogbGEgdGFpbGxlIGRlIGJsb2MgJWQgbidlc3QgcGFzIHV0aWxpc2FibGVcbiIKKyJzdXIgbGEgcGx1cGFydCBkZXMgc3lzdOhtZXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJ0YWlsbGUgZGUgY2x1c3RlciBpbnZhbGlkZSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIqugLVKguyBlc3QgZOlwculjaeksIHV0aWxpc2VyIHBsdXT0dCCroC1FoLsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJtYXV2YWlzIGNvbXBvcnRlbWVudCBlbiBjYXMgZCdlcnJldXIgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIk5vbWJyZSBkZSBibG9jcyBwYXIgZ3JvdXBlIGlsbOlnYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICJsZSBub21icmUgZGUgYmxvY3MgcGFyIGdyb3VwZSBkb2l0IOp0cmUgdW4gbXVsdGlwbGUgZGUgOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiTm9tYnJlIGlsbOlnYWwgcG91ciBsYSB0YWlsbGUgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICJMYSB0YWlsbGUgZmxleF9iZyBkb2l0IOp0cmUgdW5lIHB1aXNzYW5jZSBkZSAyIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmxleF9iZyBzaXplICglbHUpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDJeMzEiCittc2dzdHIgIkxhIHRhaWxsZSBmbGV4X2JnICglbHUpIGRvaXQg6nRyZSBpbmbpcmlldXIgb3Ug6WdhbCDgIDJeMzEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAidGF1eCBkJ2ktbm9ldWRzIGludmFsaWRlcyAlcyAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidGFpbGxlIGQnaS1ub2V1ZCBpbnZhbGlkZSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2ODMKK21zZ2lkICIiCisiV2FybmluZzogLUsgb3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLiBVc2UgJy1FICIKKyJub2Rpc2NhcmQnIGV4dGVuZGVkIG9wdGlvbiBpbnN0ZWFkIVxuIgorbXNnc3RyICIiCisiQXZlcnRpc3NlbWVudKA6IGwnb3B0aW9uIC1LIGVzdCBk6XBy6WNp6WUgZXQgbmUgZGV2cmFpdCBwbHVzIOp0cmUgdXRpbGlz6WUuICIKKyJVdGlsaXNlciBwbHV09HQgbCdvcHRpb24g6XRlbmR1ZSCroC1FIG5vZGlzY2FyZKC7oCFcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICJkYW5zIG1hbGxvYyBwb3VyIGJhZF9ibG9ja3NfZmlsZW5hbWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcwMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnSgOiDpdGlxdWV0dGUgdHJvcCBsb25ndWWgOyBzZXJhIHRyb25xdellIOAgq6Alc6C7XG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiCittc2dzdHIgInBvdXJjZW50YWdlIGRlIGJsb2NzIHLpc2VydulzIGludmFsaWRlIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcyNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICJtYXV2YWlzIG5vbWJyZSBkJ2ktbm9ldWRzIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgImxvcnMgZGUgbCdhbGxvY2F0aW9uIGRlIGxhIGNoYe5uZSBmc19mZWF0dXJlIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJldmlzaW9uIGxldmVsIC0gJXMiCittc2dzdHIgIm1hdXZhaXMgbnVt6XJvIGRlIHZlcnNpb24gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIGNy6WF0aW9uIGRlIGxhIHLpdmlzaW9uICVkIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiTCdvcHRpb24gLXQgbmUgcGV1dCDqdHJlIHNw6WNpZmnpZSBxdSd1bmUgZm9pcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkwnb3B0aW9uIC1UIG5lIHBldXQg6nRyZSBzcOljaWZp6WUgcXUndW5lIGZvaXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAibG9ycyBkZSBsYSB0ZW50YXRpdmUgZCdvdXZlcnR1cmUgZHUgcOlyaXBo6XJpcXVlIGRlIGpvdXJuYWwgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICIiCisibGEgdGFpbGxlIGRlIGJsb2MgZHUgcOlyaXBo6XJpcXVlIGRlIGpvdXJuYWwgKCVkKSBlc3QgcGx1cyBwZXRpdCBxdWUgbGFcbiIKKyJ0YWlsbGUgZGUgYmxvY3MgbWluaW11bSAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNpbmcgam91cm5hbCBkZXZpY2UncyBibG9ja3NpemU6ICVkXG4iCittc2dzdHIgIlV0aWxpc2F0aW9uIGRlIGxhIHRhaWxsZSBkZSBibG9jIGR1IHDpcmlwaOlyaXF1ZSBkZSBqb3VybmFsoDogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgImJsb2NzICclcycgaW52YWxpZGVzIHN1ciBsZSBw6XJpcGjpcmlxdWUgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgInN5c3TobWUgZGUgZmljaGllcnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICIiCisibG9ycyBkZSBsYSB0ZW50YXRpdmUgZGUgZOl0ZXJtaW5hdGlvbiBkZSBsYSB0YWlsbGUgZHUgc3lzdOhtZSBkZSBmaWNoaWVycyIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIiIKKyJOZSBwZXV0IGTpdGVybWluZXIgbGEgdGFpbGxlIGR1IHDpcmlwaOlyaXF1ZaA7IHZvdXMgZGV2ZXogc3DpY2lmaWVyXG4iCisibGEgdGFpbGxlIGR1IHN5c3TobWUgZGUgZmljaGllcnNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJMYSB0YWlsbGUgcmFwcG9ydOllIGR1IHDpcmlwaOlyaXF1ZSBlc3Qgeulyby4gTGEgcGFydGl0aW9uIHNw6WNpZmnpZSBlc3RcbiIKKyJcdGludmFsaWRlIG91IGxhIHRhYmxlIGRlIHBhcnRpdGlvbnMgbidhIHBhcyDpdOkgcmVsdWUgYXBy6HNcbiIKKyJcdGwnZXjpY3V0aW9uIGRlIGZkaXNrLCBk+yBhdSBmYWl0IHF1ZSBsYSBwYXJ0aXRpb24gbW9kaWZp6WUg6XRhaXRcbiIKKyJcdG9jY3Vw6WUgZXQgdXRpbGlz6WUuIFZvdXMgZGV2ZXogcuktYW1vcmNlciBwb3VyIGZvcmNlciB1bmVcbiIKKyJcdHJlbGVjdHVyZSBkZSBsYSB0YWJsZSBkZSBwYXJ0aXRpb25zLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAiU3lzdOhtZSBkZSBmaWNoaWVycyBwbHVzIGdyYW5kIHF1ZSBsYSB0YWlsbGUgYXBwYXJlbnRlIGR1IHDpcmlwaOlyaXF1ZSIKKworIzogbWlzYy9ta2UyZnMuYzoxOTUwCittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGZzIHR5cGVzIGxpc3RcbiIKK21zZ3N0ciAiyWNoZWMgZHUgcGFyY291cnMgZGUgbGEgbGlzdGUgZGUgdHlwZXMgZGUgc3lzdOhtZXMgZGUgZmljaGllcnNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiTGUgSFVSRCBuZSBzdXBwb3J0ZSBwYXMgbGEgZm9uY3Rpb25uYWxpdOkgZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJMZSBIVVJEIG5lIHN1cHBvcnRlIHBhcyBsYSBmb25jdGlvbm5hbGl06SBodWdlX2ZpbGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiTGUgSFVSRCBuZSBzdXBwb3J0ZSBwYXMgbGEgZm9uY3Rpb25uYWxpdOkgbWV0YWRhdGFfY3N1bS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDE4Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAiIgorImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIGTpdGVybWluYXRpb24gZGUgbGEgdGFpbGxlIG1hdOlyaWVsbGUgZGUgc2VjdGV1ciIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAibG9ycyBkZSBsYSB0ZW50YXRpdmUgZGUgZOl0ZXJtaW5hdGlvbiBkZSBsYSB0YWlsbGUgZGUgc2VjdGV1ciBtYXTpcmllbCIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgIiIKKyJsb3JzIGRlIGxhIGTpZmluaXRpb24gZGUgbGEgdGFpbGxlIGRlIGJsb2OgOyB0cm9wIHBldGl0ZSBwb3VyIGxlICIKKyJw6XJpcGjpcmlxdWVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiQXZlcnRpc3NlbWVudKA6IGxhIHRhaWxsZSBkZSBibG9jICVkIHNw6WNpZmnpZSBlc3QgcGx1cyBwZXRpdGUgcXVlIGxhIHRhaWxsZSAiCisiZGUgc2VjdGV1ciBwaHlzaXF1ZSAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKyIlczogTGEgdGFpbGxlICgweCVsbHggYmxvY3MpIGR1IHDpcmlwaOlyaXF1ZSAlcyBlc3QgdHJvcCBncmFuZGUgcG91clxuIgorIlx0cG91dm9pciDqdHJlIGV4cHJpbellIHN1ciAzMiBiaXRzIGVuIHV0aWxpc2FudCB1bmUgdGFpbGxlIGRlIGJsb2MgZGUgJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgInLpc29sdXRpb24gZGUgZnNfdHlwZXMgcG91ciBta2UyZnMuY29uZqA6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiRm9uY3Rpb25uYWxpdOlzIGR1IHN5c3TobWUgZGUgZmljaGllcnMgbm9uIHN1cHBvcnTpZXMgcGFyIGxlcyBzeXN06G1lcyBkZVxuIgorImZpY2hpZXJzIGRlIHZlcnNpb24gMFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMTYKK21zZ2lkICJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIkxlcyBzdXBlcmJsb2NzIGNyZXV4IG5lIHNvbnQgcGFzIHN1cHBvcnTpcyBwYXIgbGVzIHN5c3TobWVzIGRlXG4iCisiZmljaGllcnMgZGUgdmVyc2lvbiAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEyNgorbXNnaWQgIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJMZXMgam91cm5hdXggbmUgc29udCBwYXMgc3VwcG9ydOlzIHBhciBsZXMgc3lzdOhtZXMgZGVcbiIKKyJmaWNoaWVycyBkZSB2ZXJzaW9uIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgInBvdXJjZW50YWdlIGRlIGJsb2NzIHLpc2VydulzIGludmFsaWRlIC0gJWxmIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNTYKK21zZ2lkICIiCisiRXh0ZW50cyBNVVNUIGJlIGVuYWJsZWQgZm9yIGEgNjQtYml0IGZpbGVzeXN0ZW0uICBQYXNzIC1PIGV4dGVudHMgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJMZXMgZXh0ZW50cyBET0lWRU5UIOp0cmUgYWN0aXbpZXMgcG91ciB1biBzeXN06G1lIGRlIGZpY2hpZXJzIDY0oGJpdC4gICIKKyJQYXNzZXogLU8gZXh0ZW50cyBwb3VyIGNvcnJpZ2VyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNzYKK21zZ2lkICJUaGUgY2x1c3RlciBzaXplIG1heSBub3QgYmUgc21hbGxlciB0aGFuIHRoZSBibG9jayBzaXplLlxuIgorbXNnc3RyICIiCisiTGEgdGFpbGxlIGQndW4gY2x1c3RlciBuZSBwZXV0IHBhcyDqdHJlIHBsdXMgcGV0aXRlIHF1ZSBsYSB0YWlsbGUgZCd1biAiCisiYmxvYy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAiU3DpY2lmaWVyIHVuZSB0YWlsbGUgZGUgY2x1c3RlciBu6WNlc3NpdGUgbGEgZm9uY3Rpb25hbGl06SBiaWdhbGxvYyIKKworIzogbWlzYy9ta2UyZnMuYzoyMjAyCisjLCBjLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFVuYWJsZSB0byBnZXQgZGV2aWNlIGdlb21ldHJ5IGZvciAlc1xuIgorbXNnc3RyICJhdHRlbnRpb26gOiBJbXBvc3NpYmxlIGQnb2J0ZW5pciBsYSBn6W9t6XRyaWUgZHUgcOlyaXBo6XJpcXVlICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIKK21zZ3N0ciAiTCdhbGlnbmVtZW50IGRlICVzIGVzdCBk6WNhbOkgZGUgJWx1IG9jdGV0cy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKyJDZWxhIHBldXQgaW5kdWlyZSBkZSB0cuhzIG1hdXZhaXNlcyBwZXJmb3JtYW5jZXMsIGlsIGVzdCBzdWdn6XLpIGRlIChyZSktIgorInBhcnRpdGlvbm5lci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAiYmxvY3MgZGUgJWQgb2N0ZXRzIHRyb3AgZ3JvcyBwb3VyIGxlIHN5c3TobWUgKG1heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnSgOiBibG9jcyBkZSAlZCBvY3RldHMgdHJvcCBncm9zIHBvdXIgbGUgc3lzdOhtZSAobWF4ICVkKSxcbiIKKyJwb3Vyc3VpdGUgZm9yY+llXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorIlN1Z2dlc3Rpb26gOiBVdGlsaXNleiB1biBub3lhdSBMaW51eCA+PSAzLjE4IHBvdXIgYW3pbGlvcmVyIGxhIHN0YWJpbGl06SBkZXMgIgorImZvbmN0aW9uYWxpdOlzIGRlIG3pdGEtZG9ubullcyBldCBzb21tZSBkZSBjb250cvRsZSBkZSBqb3VybmFsLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQXZlcnRpc3NlbWVudKA6IGTpY2FsYWdlIHNw6WNpZmnpIHNhbnMgdW5lIHRhaWxsZSBkZSBzeXN06G1lIGRlIGZpY2hpZXJcbiIKKyJleHBsaWNpdGUuXG4iCisiVW4gc3lzdOhtZSBkZSBmaWNoaWVyIHBvc3PpZGFudCAlbGx1IGJsb2NrcyB2YSDqdHJlIGNy6ekgbWFpcyBjZSBuJ+l0YWl0XG4iCisicGV1dC3qdHJlIHBhcyBjZSBxdWUgdm91cyB2b3VsaWV6LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTIKK21zZ2lkICJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUiCittc2dzdHIgIiIKKyJMYSBmb25jdGlvbmFsaXTpIGJpZ2FsbG9jIG5lIHBldXQgcGFzIOp0cmUgc3VwcG9ydOllIHNhbnMgbGEgZm9uY3Rpb25hbGl06SAiCisiZXh0ZW50IgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorIkxlcyBmb25jdGlvbm5hbGl06XMgcmVzaXplX2lub2RlIGV0IG1ldGFfYmcgbmUgc29udCBwYXMgY29tcGF0aWJsZXMuXG4iCisiRWxsZXMgbmUgcGV1dmVudCBwYXMg6nRyZSBhY3RpdullcyBzaW11bHRhbultZW50LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMjcKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2ZXJ0aXNzZW1lbnSgOiBsYSBmb25jdGlvbmFsaXTpIGJpZ2FsbG9jIGVzdCBlbmNvcmUgZW4gY291cnMgZGUgIgorImTpdmVsb3BwZW1lbnRcbiIKKyJWb2lyIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIHBvdXIgcGx1cyAiCisiZCdpbmZvcm1hdGlvbnNcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJsYSBy6XNlcnZhdGlvbiBkZSBibG9jcyBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBlbiBsaWduZSBuJ2VzdCBwYXNcbiIKKyJzdXBwb3J06WUgc3VyIHVuIHN5c3TobWUgZGUgZmljaGllcnMgbm9uIGNyZXV4IgorCisjOiBtaXNjL21rZTJmcy5jOjIzNDgKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIGNvdW50IG91dCBvZiByYW5nZSIKK21zZ3N0ciAiY29tcHRldXIgZGUgYmxvY3MgcGFyIGdyb3VwZSBob3JzIGxpbWl0ZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKyJMYSBmb25jdGlvbm5hbGl06SBmbGV4X2JnIG4nZXN0IHBhcyBhY3RpdullLCBsYSB0YWlsbGUgZmxleF9iZyBuZSBwZXV0IGRvbmMgIgorInBhcyDqdHJlIHNw6WNpZmnpZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgInRhaWxsZSBkJ2ktbm9ldWQgaW52YWxpZGUgJWQgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKyJkZXMgaS1ub2V1ZHMgZGUgJWQgb2N0ZXRzIHNvbnQgdHJvcCBwZXRpdHMgcG91ciBkZXMgZG9ubullcyBlbiBsaWduZaA7ICIKKyJzcOljaWZpZXogdW5lIHRhaWxsZSBwbHVzIGdyYW5kZSIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKyJkZXMgaS1ub2V1ZHMgZGUgJWQgb2N0ZXRzIHNvbnQgdHJvcCBwZXRpdHMgcG91ciBkZXMgcXVvdGEgZGUgcHJvamV0oDsgIgorInNw6WNpZmlleiB1bmUgdGFpbGxlIHBsdXMgZ3JhbmRlIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgcmFpc2UgaW5vZGUgcmF0aW8/IgorbXNnc3RyICJ0cm9wIGQnaS1ub2V1ZHMgKCVsbHUpLCBhdWdtZW50ZXIgbGUgcmF0aW8gZCdpLW5vZXVkc6A/IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICJ0cm9wIGQnaS1ub2V1ZHMgKCVsbHUpLCBpbmRpcXVlciA8IDJeMzIgaS1ub2V1ZHMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisidGFpbGxlX2lfbm9ldWQgKCV1KSAqIG5vbWJyZV9pX25vZXVkcyAoJXUpIHRyb3AgZ3JhbmQgcG91ciB1blxuIgorIlx0c3lzdOhtZSBkZSBmaWNoaWVycyBhdmVjICVsbHUgYmxvY3MsIGluZGlxdWVyIHVuIHJhdGlvX2lfbm9ldWQgKC1pKVxuIgorIlx0cGx1cyBncmFuZCBvdSB1biBub21icmUgZCdpLW5vZXVkIHBsdXMgcGV0aXQgKC1OKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjMzCittc2dpZCAiRGlzY2FyZGluZyBkZXZpY2UgYmxvY2tzOiAiCittc2dzdHIgIlJlamV0IGRlcyBibG9jcyBkZSBw6XJpcGjpcmlxdWWgOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAi6WNob3XpIC0gIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAibG9ycyBkZSBsJ2luaXRpYWxpemF0aW9uIGR1IGNvbnRleHRlIGRlIHF1b3RhIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGRlcyBpLW5vZXVkcyBkZSBxdW90YSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgIm1hdXZhaXMgY29tcG9ydGVtZW50IGVuIGNhcyBkJ2VycmV1ciBkYW5zIGxlIHByb2ZpbGUgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICJsb3JzIGRlIGwnaW5pdGlhbGlzYXRpb24gZHUgc3VwZXJibG9jIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzAKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFBhc3MgLU8gZXh0ZW50cyB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiTGVzIGV4dGVudHMgbmUgc29udCBwYXMgYWN0aXbpcy4gTCdhcmJyZSBkZXMgZXh0ZW50cyBkZSBmaWNoaWVyIHBldXQgYXZvaXIgIgorInVuZSBzb21tZSBkZSBjb250cvRsZSwgbWFpcyBsZXMgY2FydGVzIGRlIGJsb2NzIG5lIGxlIHBldXZlbnQgcGFzLiBOZSBwYXMgIgorImFjdGl2ZXIgbGVzIGV4dGVudHMgculkdWl0IGxhIGNvdXZlcnR1cmUgZGVzIHNvbW1lcyBkZSBjb250cvRsZSBkZXMgbel0YS0iCisiZG9ubullcy4gUGFzc2V6IC1PIGV4dGVudHMgcG91ciBjb3JyaWdlci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIkxlIHN1cHBvcnQgZGUgc3lzdOhtZSA2NC1iaXRzIG4nZXN0IHBhcyBhY3RpdukuIExhIHRhaWxsZSBkZSBjaGFtcHMgcGx1cyAiCisiZ3JhbmRlIGFwcG9ydOllIHBhciBjZXR0ZSBmb25jdGlvbmFsaXTpIHBlcm1ldCBkZXMgc29tbWVzIGRlIGNvbnRy9GxlICIKKyJmb3J0ZXMuIFBhc3NleiAtTyA2NGJpdCBwb3VyIGNvcnJpZ2VyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisiTGEgZm9uY3Rpb25hbGl06SBtZXRhZGF0YV9jc3VtX3NlZWQgcmVxdWnocmUgbGEgZm9uY3Rpb25hbGl06SAiCisibWV0YWRhdGFfY3N1bS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODY5Cittc2dpZCAiRGlzY2FyZCBzdWNjZWVkZWQgYW5kIHdpbGwgcmV0dXJuIDBzIC0gc2tpcHBpbmcgaW5vZGUgdGFibGUgd2lwZVxuIgorbXNnc3RyICIiCisiTGEgbGli6XJhdGlvbiBhIHLpdXNzaSBldCByZXRvdXJuZXJhIGRlcyAwcyAtIGludXRpbGUgZCdlZmZhY2VyIGxhIHRhYmxlIGRlcyAiCisiaS1ub2V1ZHNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAic3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBpbmNvbm51IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIkFsbG9jYXRpb24gZGVzIHRhYmxlcyBkZSBncm91cGWgOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAibG9ycyBkZSBsYSB0ZW50YXRpdmUgZCdhbGxvY2F0aW9uIGRlcyB0YWJsZXMgZGUgc3lzdOhtZXMgZGUgZmljaGllcnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdGxvcnMgZGUgbGEgY29udmVyc2lvbiBkdSBiaXRtYXAgZGUgc291cy1jbHVzdGVyIgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIlcyBwZXV0IOp0cmUgZW5jb3JlIHBsdXMgY29ycm9tcHUgcGFyIHVuZSBy6eljcml0dXJlIGR1IHN1cGVyYmxvY1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJsb3JzIGRlIGxhIG1pc2Ug4CB66XJvIGR1IGJsb2MgJWxsdSDgIGxhIGZpbiBkdSBzeXN06G1lIGRlIGZpY2hpZXJzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJsb3JzIGRlIGxhIHLpc2VydmF0aW9uIGRlIGJsb2NzIHBvdXIgdW4gY2hhbmdlbWVudCBkZSB0YWlsbGUgZW4gbGlnbmUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAiam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBqb3VybmFsIHRvIGRldmljZSAlczogIgorbXNnc3RyICJBam91dCBkdSBqb3VybmFsIGF1IHDpcmlwaOlyaXF1ZSAlc6A6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdGxvcnMgZGUgbGEgdGVudGF0aXZlIGQnYWpvdXQgZCd1biBqb3VybmFsIGF1IHDpcmlwaOlyaXF1ZSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAiY29tcGzpdOlcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiUGFzIGRlIGNy6WF0aW9uIGRlIGpvdXJuYWwgZW4gbW9kZSBzdXBlci1zZXVsXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIkNy6WF0aW9uIGR1IGpvdXJuYWwgKCV1IGJsb2NzKaA6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHRsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkZSBjculhdGlvbiBkdSBqb3VybmFsIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNjggbWlzYy90dW5lMmZzLmM6MTA3MgorbXNnaWQgIiIKKyJcbiIKKyJFcnJvciB3aGlsZSBlbmFibGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUuIgorbXNnc3RyICIiCisiXG4iCisiRXJyZXVyIGxvcnMgZGUgbCdhY3RpdmF0aW9uIGRlIGxhIGZvbmN0aW9ubmFsaXTpIGRlIHByb3RlY3Rpb24gY29udHJlIGxlICIKKyJtb250YWdlIG11bHRpcGxlLiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICIiCisiTGEgcHJvdGVjdGlvbiBjb250cmUgbGUgbW9udGFnZSBtdWx0aXBsZSBlc3QgYWN0aXbpZSBhdmVjIHVuIGludGVydmFsZSBkZSAiCisibWlzZSDgIGpvdXIgZGUgJWQgc2Vjb25kZXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5MQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIkNvcGllIGRlcyBmaWNoaWVycyBkYW5zIGxlIHDpcmlwaOlyaXF1ZaA6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAibG9ycyBkdSBwZXVwbGVtZW50IGR1IHN5c3TobWUgZGUgZmljaGllciIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIiIKKyLJY3JpdHVyZSBkZXMgc3VwZXJibG9jcyBldCBkZSBsJ2luZm9ybWF0aW9uIGRlIGNvbXB0YWJpbGl06SBkdSBzeXN06G1lIGRlXG4iCisiZmljaGllcnOgOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyJBdHRlbnRpb24sIGRlcyBwcm9ibOhtZXMgc29udCBzdXJ2ZW51cyBsb3JzIGRlIGwn6WNyaXR1cmUgZGVzIHN1cGVyYmxvY3MuIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTMKK21zZ2lkICIiCisiZG9uZVxuIgorIlxuIgorbXNnc3RyICIiCisiY29tcGzpdOlcbiIKKyJcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBhcnRpdGlvbiBvZmZzZXQgb2YgJWxsdSAoJXVrKSBibG9ja3Mgbm90IGNvbXBhdGlibGUgd2l0aCBjbHVzdGVyIHNpemUgJXUuXG4iCittc2dzdHIgIiIKKyJMZSBk6WNhbGFnZSBkZSBwYXJ0aXRpb24gZGUgJWxsdSAoJXVrKSBibG9jcyBuJ2VzdCBwYXMgY29tcGF0aWJsZSBhdmVjIGxhICIKKyJ0YWlsbGUgZGUgY2x1c3RlciAldS5cbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTEKK21zZ2lkICJIdWdlIGZpbGVzIHdpbGwgYmUgemVybydlZFxuIgorbXNnc3RyICJMZXMgZmljaGllcnMgZ+lhbnRzIHZvbnQg6nRyZSByZW1wbGlzIGRlIHrpcm9zXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJDculhdGlvbiBkZSAlbHUgZmljaGllcihzKSBn6WFudChzKSAiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndpdGggJWxsdSBibG9ja3MgZWFjaCIKK21zZ3N0ciAiYXZlYyAlbGx1IGJsb2NzIGNoYWN1biIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlICVsdSIKK21zZ3N0ciAibG9ycyBkZSBsYSBjculhdGlvbiBkdSBmaWNoaWVyIGfpYW50ICVsdSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiVXRpbGlzYXRpb26gOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJVdGlsaXNhdGlvbqA6ICAlcyBw6XJpcGjpcmlxdWUuLi5cbiIKKyJcbiIKKyJJbXByaW1lIGwnaW5mb3JtYXRpb24gZGUgcGFydGl0aW9uIHBvdXIgY2hhcXVlIHDpcmlwaOlyaXF1ZSBpbmRpcXXpLlxuIgorIlBhciBleGVtcGxloDogJXMgL2Rldi9oZGFcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkJ291dnJpciAlc6A6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIkltcG9zc2libGUgZCdvYnRlbmlyIGxhIGfpb23pdHJpZSBkZSAlc6A6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkJ29idGVuaXIgbGEgdGFpbGxlIGRlICVzoDogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBzdGFydD0lOGQgc2l6ZT0lOGx1IGVuZD0lOGRcbiIKK21zZ3N0ciAiJXOgOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIGTpYnV0PSU4ZCB0YWlsbGU9JThsdSBmaW49JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiU1ZQIGV46WN1dGV6IGUyZnNjayAtRCBzdXIgbGUgc3lzdOhtZSBkZSBmaWNoaWVycy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiU1ZQIGV46WN1dGV6IGUyZnNjayAtRCBzdXIgbGUgc3lzdOhtZSBkZSBmaWNoaWVycy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlV0aWxpc2F0aW9uoDogJXMgWy1jIGxpbWl0ZS1tYXhpbWFsZS1kZS1tb250YWdlXVxuIgorIlx0Wy1lIGNvbXBvcnRlbWVudC1lbi1jYXMtZC1lcnJldXJdIFstZl0gWy1nIGdyb3VwZV1cbiIKKyJcdFstaSBpbnRlcnZhbGxlW2R8bXx3XV0gWy1qXSBbLUogb3B0aW9ucy1qb3VybmFsXSBbLWxdXG4iCisiXHRbLW0gcG91cmNlbnRhZ2UtZGUtYmxvY3MtculzZXJ26XNdIFstbyBbXl1vcHRpb25zLWRlLW1vbnRhZ2VbLC4uLl1dXG4iCisiXHRbLXAgaW50ZXJ2YWxlLW1pc2Ut4C1qb3VyLW1tcF0gWy1yIG5vbWJyZS1kZS1ibG9jcy1y6XNlcnbpc11cbiIKKyJcdFstdSB1dGlsaXNhdGV1cl0gWy1DIG5vbWJyZS1kZS1tb250YWdlXSBbLUwg6XRpcXVldHRlLWR1LXZvbHVtZV1cbiIKKyJcdFstTSBkZXJuaWVyLXLpcGVydG9pcmUtbW9udOldIFstTyBbXl1mb25jdGlvbm5hbGl06VssLi4uXV1cbiIKKyJcdFstUSBvcHRpb25zLWRlLXF1b3RhXVxuIgorIlx0Wy1FIG9wdGlvbi3pdGVuZHVlWywuLi5dXSBbLVQgZGF0ZS1kZS1kZXJuaehyZS126XJpZmljYXRpb25dXG4iCisiXHRbLVUgVVVJRF0gWy1JIG5vdXZlbGxlLXRhaWxsZS1pLW5vZXVkc10gWy16IGZpY2hpZXJfYW5udWxhdGlvbl1cbiIKKyJcdHDpcmlwaOlyaXF1ZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICJMZSBzdXBlcmJsb2MgZGUgam91cm5hbCBuJ2EgcGFzIOl06SB0cm91dumgIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkJ291dmVydHVyZSBkdSBqb3VybmFsIGV4dGVybmUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBuJ2VzdCBwYXMgdW4gcOlyaXBo6XJpcXVlIGRlIGpvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiTCdVVUlEIGR1IHN5c3TobWUgZGUgZmljaGllcnMgbidhIHBhcyDpdOkgdHJvdXbpIHN1ciBsZSBw6XJpcGjpcmlxdWUgZGVcbiIKKyJqb3VybmFsLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTYKK21zZ2lkICIiCisiQ2Fubm90IGxvY2F0ZSBqb3VybmFsIGRldmljZS4gSXQgd2FzIE5PVCByZW1vdmVkXG4iCisiVXNlIC1mIG9wdGlvbiB0byByZW1vdmUgbWlzc2luZyBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIk5lIHBldXQgcmVw6XJlciBsZSBw6XJpcGjpcmlxdWUgZGUgam91cm5hbC4gSWwgbidhIFBBUyDpdOkgc3VwcHJpbelcbiIKKyJVdGlsaXNlciBsJ29wdGlvbiAtZiBwb3VyIHN1cHByaW1lciBsZSBw6XJpcGjpcmlxdWUgZGUgam91cm5hbCBtYW5xdWFudC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkpvdXJuYWwgZW5sZXbpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAibG9ycyBkZSBsYSBsZWN0dXJlIGRlcyBiaXRtYXBzIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJsb3JzIGRlIGwnZWZmYWNlbWVudCBkZSBsJ2ktbm9ldWQgZHUgam91cm5hbCIKKworIzogbWlzYy90dW5lMmZzLmM6Mzg4Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJsb3JzIGRlIGwn6WNyaXR1cmUgZGUgbCdpLW5vZXVkIGR1IGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIihldCByZWJvb3RleiBhcHLoc6AhKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWZ0ZXIgcnVubmluZyBlMmZzY2ssIHBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiQXBy6HMgYXZvaXIgbGFuY+kgZTJmc2NrLCB2ZXVpbGxleiBsYW5jZXIgq6ByZXNpemUyZnMgJXMgJXOguyIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiVmV1aWxsZXogZXjpY3V0ZXIgq6ByZXNpemUyZnMgJXMgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIgLXogXCIlc1wiIgorbXNnc3RyICIgLXogXCIlc1wiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIqC7IHBvdXIgYWN0aXZlciBsZSBtb2RlIDY0LWJpdHMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIqC7IHBvdXIgZOlzYWN0aXZlciBsZSBtb2RlIDY0LWJpdHMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjk3NAorbXNnaWQgIiIKKyJXQVJOSU5HOiBDb3VsZCBub3QgY29uZmlybSBrZXJuZWwgc3VwcG9ydCBmb3IgbWV0YWRhdGFfY3N1bV9zZWVkLlxuIgorIiAgVGhpcyByZXF1aXJlcyBMaW51eCA+PSB2NC40LlxuIgorbXNnc3RyICIiCisiQVZFUlRJU1NFTUVOVDogTidhIHBhcyBwdSBjb25maXJtZXIgbGUgc3VwcG9ydCBub3lhdSBwb3VyICIKKyJtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBDZWxhIG7pY2Vzc2l0ZSBMaW51eCA+PSB2NC40LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyJMYSBzdXBwcmVzc2lvbiBkZSBsYSBmb25jdGlvbm5hbGl06SBkZSBzeXN06G1lIGRlIGZpY2hpZXJzICclcycgbidlc3QgcGFzXG4iCisic3VwcG9ydOllLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIkwnYWpvdXQgZGUgbGEgZm9uY3Rpb25uYWxpdOkgZGUgc3lzdOhtZSBkZSBmaWNoaWVycyAnJXMnIG4nZXN0IHBhc1xuIgorInN1cHBvcnTpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkxhIGZvbmN0aW9ubmFsaXRp6SBoYXNfam91cm5hbCBwZXV0IOp0cmUgZOlzYWN0aXbpZSB1bmlxdWVtZW50IGxvcnNxdWUgbGVcbiIKKyJzeXN06G1lIGRlIGZpY2hpZXJzIGVzdCBk6W1vbnTpIG91IG1vbnTpIGVuIGxlY3R1cmUgc2V1bGUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMzMKK21zZ2lkICIiCisiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgUGxlYXNlIHJ1biBlMmZzY2sgYmVmb3JlIGNsZWFyaW5nXG4iCisidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iCittc2dzdHIgIiIKKyJMZSBkcmFwZWF1IG5lZWRzX3JlY292ZXJ5IGVzdCBhY3RpdukuIFNWUCBleOljdXRleiBlMmZzY2sgYXZhbnRcbiIKKyJkZSBk6XNhY3RpdmVyIGxlIGRyYXBlYXUgaGFzX2pvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNTEKK21zZ2lkICIiCisiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJ3NwYXJzZV9zdXBlcicgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkTpZmluaXIgbGEgZm9uY3Rpb25hbGl06SBkZSBzeXN06G1lIGRlIGZpY2hpZXIgJ3NwYXJzZV9zdXBlcicgbidlc3QgcGFzXG4iCisic3VwcG9ydOkgcG91ciBsZXMgc3lzdOhtZXMgZGUgZmljaGllcnMgYXZlYyBsYSBmb25jdGlvbmFsaXTpIGZsZXhfYmcgIgorImFjdGl26WUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiTGEgZm9uY3Rpb25uYWxpdOkgZGUgcHJvdGVjdGlvbiBjb250cmUgbGVzXG4iCisibW9udGFnZXMgbXVsdGlwbGVzIG5lIHBldXQg6nRyZSBhY3RpdullIGxvcnNxdWVcbiIKKyJsZSBzeXN06G1lIGRlIGZpY2hpZXIgZXN0IG1vbnTpIG91IGVuIGxlY3R1cmUgc2V1bGUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorIkxhIHByb3RlY3Rpb24gY29udHJlIGxlIG1vbnRhZ2UgbXVsdGlwbGUgYSDpdOkgYWN0aXbpZSBhdmVjIHVuIGludGVydmFsZSBkZSAiCisibWlzZSDgIGpvdXIgZGUgJWRzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKyJMYSBmb25jdGlvbm5hbGl06SBkZSBwcm90ZWN0aW9uIGNvbnRyZSBsZSBtb250YWdlIG11bHRpcGxlIG5lIHBldXRcbiIKKyLqdHJlIGTpc2FjdGl26WUgc2kgbGUgc3lzdOhtZSBkZSBmaWNoaWVycyBlc3QgZW4gbGVjdHVyZSBzZXVsZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5OQorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgYml0bWFwc1xuIgorbXNnc3RyICJFcnJldXIgbG9ycyBkZSBsYSBsZWN0dXJlIGRlcyBiaXRtYXBzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIiIKKyJMZSBudW3pcm8gbWFnaXF1ZSBkYW5zIGxlIGJsb2MgTU1QIG5lIGNvcnJlc3BvbmQgcGFzLiBhdHRlbmR1oDogJXgsIGFjdHVlbKA6ICIKKyIleFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTEzCittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2suIgorbXNnc3RyICJsb3JzIGRlIGxhIGxlY3R1cmUgZHUgYmxvYyBNTVAuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICIiCisiRWZmYWNlciBsZSBkcmFwZWF1IGZsZXhfYmcgcmVuZHJhaXQgbGUgc3lzdOhtZSBkZSBmaWNoaWVycyBpbmNvaOlyZW50LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTU2Cittc2dpZCAiIgorIlRoZSBodWdlX2ZpbGUgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJMYSBmb25jdGlvbm5hbGl06SBodWdlX2ZpbGUgcGV1dCDqdHJlIGTpc2FjdGl26WUgdW5pcXVlbWVudCBsb3JzcXVlIGxlXG4iCisic3lzdOhtZSBkZSBmaWNoaWVycyBlc3QgZOltb2506SBvdSBtb2506SBlbiBsZWN0dXJlIHNldWxlLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiQWN0aXZlciBsZXMgc29tbWVzIGRlIGNvbnRy9GxlIHBvdXJyYWl0IHByZW5kcmUgZHUgdGVtcHMuICIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiTmUgcGV1dCBwYXMgYWN0aXZlciBtZXRhZGF0YV9jc3VtIHN1ciB1biBzeXN06G1lIGRlIGZpY2hpZXJzIG1vbnTpoCFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJMZXMgZXh0ZW50cyBuZSBzb250IHBhcyBhY3RpdulzLiBMJ2FyYnJlIGRlcyBleHRlbnRzIGRlIGZpY2hpZXJzIHBldXQgYXZvaXIgIgorInVuZSBzb21tZSBkZSBjb250cvRsZSwgbWFpcyBsZXMgY2FydGVzIGRlIGJsb2NzIG5lIGxlIHBldXZlbnQgcGFzLiBOZSBwYXMgIgorImFjdGl2ZXIgbGVzIGV4dGVudHMgculkdWl0IGxhIGNvdXZlcnR1cmUgZGVzIHNvbW1lcyBkZSBjb250cvRsZSBkZXMgbel0YS0iCisiZG9ubullcy4gUmVsYW5jZXogYXZlYyAtTyBleHRlbnQgcG91ciBjb3JyaWdlci5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiTGUgc3VwcG9ydCBkZSBzeXN06G1lIGRlIGZpY2hpZXIgNjQtYml0cyBuJ2VzdCBwYXMgYWN0aXbpLiBMYSB0YWlsbGUgZGUgIgorImNoYW1wcyBwbHVzIGdyYW5kZSBhcHBvcnTpZSBwYXIgY2V0dGUgZm9uY3Rpb25hbGl06SBwZXJtZXQgZGVzIHNvbW1lcyBkZSAiCisiY29udHL0bGUgZm9ydGVzLiBMYW5jZXogcmVzaXplMmZzIC1iIHBvdXIgY29ycmlnZXIuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiROlzYWN0aXZlciBsc2Ugc29tbWVzIGRlIGNvbnRy9GxlIHBvdXJyYWl0IHByZW5kcmUgZHUgdGVtcHMuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorIk5lIHBldXQgcGFzIGTpc2FjdGl2ZXIgbWV0YWRhdGFfc3VtIHN1ciB1biBzeXN06G1lIGRlIGZpY2hpZXJzIG1vbnTpoCFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKyJOZSBwZXV0IHBhcyBhY3RpdmVyIGxlIG1vZGUgNjQtYml0cyBhbG9ycyBxdWUgbGUgc3lzdOhtZSBkZSBmaWNoaWVycyBlc3QgIgorIm1vbnTpoCFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisiTmUgcGV1dCBwYXMgZOlzYWN0aXZlciBsZSBtb2RlIDY0LWJpdHMgYWxvcnMgcXVlIGxlIHN5c3TobWUgZGUgZmljaGllcnMgZXN0ICIKKyJtb2506aAhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2ZXJ0aXNzZW1lbnSgOiBwcm9qZXQgYWN0aXbpIHNhbnMgcXVvdGEgZW4gbeptZSB0ZW1wc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2ZXJ0aXNzZW1lbnSgOiBsJ29wdGlvbiCroF5xdW90YaC7IHN1cHBsYW50ZSBsZXMgYXJndW1lbnRzIKugLVGguy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkTpZmluaXIgbGEgZm9uY3Rpb25hbGl06SAnbWV0YWRhdGFfY3N1bV9zZWVkJyBuJ2VzdCBzdXBwb3J06SBxdWUgc3VyXG4iCisibGVzIHN5c3TobWVzIGRlIGZpY2hpZXJzIGF2ZWMgbGEgZm9uY3Rpb25hbGl06SBtZXRhZGF0YV9jc3VtIGFjdGl26WUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorIkwnVVVJRCBhIGNoYW5n6SBkZXB1aXMgbCdhY3RpdmF0aW9uIGRlIG1ldGFkYXRhX2NzdW0uIExlIHN5c3TobWUgZGUgIgorImZpY2hpZXIgXG4iCisiZG9pdCDqdHJlIGTpbW9udOkgcG91ciBy6eljcmlyZSBzYW5zIHJpc3F1ZSB0b3V0ZXMgbGVzIGRvbm7pZXMgcG91ciBcbiIKKyJjb3JyZXNwb25kcmUgYXUgbm91dmVsIFVVSUQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIkxlIHN5c3TobWUgZGUgZmljaGllcnMgYSBk6WrgIHVuIGpvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiXHRsb3JzIGRlIGxhIHRlbnRhdGl2ZSBkJ291dmVydHVyZSBkdSBqb3VybmFsIHN1ciAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgb24gZGV2aWNlICVzOiAiCittc2dzdHIgIkNy6WF0aW9uIGR1IGpvdXJuYWwgc3VyIGxlIHDpcmlwaOlyaXF1ZSAlc6A6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJsb3JzIGRlIGwnYWpvdXQgZHUgc3lzdOhtZSBkZSBmaWNoaWVycyBhdSBqb3VybmFsIHN1ciAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiQ3LpYXRpb24gZGUgbCdpLW5vZXVkIGR1IGpvdXJuYWygOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0bG9ycyBkZSBsYSB0ZW50YXRpdmUgZGUgY3LpYXRpb24gZHUgZmljaGllciBqb3VybmFsIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICIiCisibG9ycyBkZSBsJ2luaXRpYWxpc2F0aW9uIGR1IGNvbnRleHRlIGRlIHF1b3RhIGRhbnMgbGEgYmlibGlvdGjocXVlIHN1cHBvcnQiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgImxvcnMgZGUgbGEgbWlzZSDgIGpvdXIgZGVzIGxpbWl0ZXMgZGUgcXVvdGEgKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAibG9ycyBkZSBsJ+ljcml0dXJlIGR1IGZpY2hpZXIgZGUgcXVvdGEgKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgImxvcnMgZGUgbGEgc3VwcHJlc3Npb24gZHUgZmljaGllciBkZSBxdW90YSAoJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVW5lIG91IGRlcyBvcHRpb25zIGRlIHF1b3RhIHNw6WNpZmnpZXMgc29udCBlcnJvbullcy5cbiIKKyJcbiIKKyJMZXMgb3B0aW9ucyBkZSBxdW90YSBzdWl2YW50ZXMgc29udCBkaXNwb25pYmxlcyAobGVzIGZvdXJuaXIgc+lwYXLpZXMgcGFyICIKKyJkZXMgdmlyZ3VsZXMpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICJOZSBwZXV0IGFuYWx5c2VyIGxhIHNw6WNpZmljYXRpb24gZGUgZGF0ZS9oZXVyZaA6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJjb21wdGV1ciBkZSBtb250YWdlcyBlcnJvbukgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAibm9tIGdpZC9ncm91cGUgZXJyb27pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgImludGVydmFsbGUgZXJyb27pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgInRhdXggZGUgYmxvY3MgculzZXJ26XMgZXJyb27pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gbmUgcGV1dCDqdHJlIHNw6WNpZmnpIHF1J3VuZSBmb2lzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1PIG5lIHBldXQg6nRyZSBzcOljaWZp6SBxdSd1bmUgZm9pcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgImNvbXB0ZXVyIGRlIGJsb2NzIHLpc2VydulzIGVycm9u6SAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgIm5vbSB1dGlsaXNhdGV1ci91aWQgZXJyb27pIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidGFpbGxlIGQnaS1ub2V1ZCBpbnZhbGlkZSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIkxhIHRhaWxsZSBkZXMgaS1ub2V1ZHMgZG9pdCDqdHJlIHVuZSBwdWlzc2FuY2UgZGUgZGV1eCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdHJvcCBncmFuZKA6ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICIiCisiROlmaW5pdGlvbiBkZSBsJ2ludGVydmFsZSBkZSBtaXNlIOAgam91ciBkZSBsYSBwcm90ZWN0aW9uIGNvbnRyZSBsZXMgIgorIm1vbnRhZ2VzIG11bHRpcGxlcyDgICVsdSBzZWNvbmRlXG4iCittc2dzdHJbMV0gIiIKKyJE6WZpbml0aW9uIGRlIGwnaW50ZXJ2YWxlIGRlIG1pc2Ug4CBqb3VyIGRlIGxhIHByb3RlY3Rpb24gY29udHJlIGxlcyAiCisibW9udGFnZXMgbXVsdGlwbGVzIOAgJWx1IHNlY29uZGVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlkZTogJXNcbiIKK21zZ3N0ciAiUGFyYW3odHJlIKugc3RyaWRlIFJBSUSguyBpbnZhbGlkZaA6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiUGFyYW3odHJlIKugc3RyaXBlLXdpZHRoIFJBSUSguyBpbnZhbGlkZaA6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiQWxnb3JpdGhtZSBkZSBoYWNoYWdlIGludmFsaWRloDogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJE6WZpbml0aW9uIGRlIGwnYWxnb3JpdGhtZSBkZSBoYWNoYWdlIHBhciBk6WZhdXQg4CAlcyAoJWQpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwNTAKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdGNsZWFyX21tcFxuIgorIlx0aGFzaF9hbGc9PGhhc2ggYWxnb3JpdGhtPlxuIgorIlx0bW91bnRfb3B0cz08ZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGNodW5rIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlX3dpZHRoPTxSQUlEIHN0cmlkZSpkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdF50ZXN0X2ZzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVbmUgb3UgZGVzIG9wdGlvbnMgc3DpY2lmaellcyBzb250IGVycm9u6WVzLlxuIgorIlxuIgorIkxlcyBvcHRpb25zIOl0ZW5kdWVzIHNvbnQgc+lwYXLpZXMgcGFyIGRlcyB2aXJndWxlcyBldCBwZXV2ZW50IHByZW5kcmUgdW5cbiIKKyJcdGFyZ3VtZW50IHF1aSBlc3QgZOlmaW5pIOAgbCdhaWRlIGQndW4gc2lnbmUgZCfpZ2FsaXTpICiroD2guykuXG4iCisiXG4iCisiTGVzIG9wdGlvbnMg6XRlbmR1ZXMgdmFsaWRlcyBzb250OlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08YWxnb3JpdGhtZSBkZSBoYWNoYWdlPlxuIgorIlx0bW91bnRfb3B0cz08b3B0aW9ucyBkZSBtb250YWdlcyDpdGVuZHVlcyBwYXIgZOlmYXV0PlxuIgorIlx0c3RyaWRlPTx0YWlsbGUgZW4gYmxvY3MgZGVzIG1vcmNlYXV4IHBhciBkaXNxdWUgUkFJRD5cbiIKKyJcdHN0cmlwZS13aWR0aD08c3RyaWRlIFJBSUQgKiBub21icmUgZGUgZGlzcXVlcyBlbiBibG9jcz5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdF50ZXN0X2ZzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MTkKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbm9kZSBiaXRtYXBcbiIKK21zZ3N0ciAiyWNoZWMgZGUgbGVjdHVyZSBkdSBiaXRtYXAgZCdpLW5vZXVkc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIsljaGVjIGRlIGxlY3R1cmUgZHUgYml0bWFwIGRlIGJsb2NcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0MSByZXNpemUvcmVzaXplMmZzLmM6MTI3NgorbXNnaWQgImJsb2NrcyB0byBiZSBtb3ZlZCIKK21zZ3N0ciAiYmxvY3Mg4CBk6XBsYWNlciIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorIk4nYSBwdSBhbGxvdWVyIGRlIGJpdG1hcCBkZSBibG9jcyBsb3JzIGQndW5lIGF1Z21lbnRhdGlvbiBkZSB0YWlsbGUgZCdpLSIKKyJub2V1ZCBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAiUGFzIGFzc2V6IGQnZXNwYWNlIHBvdXIgYXVnbWVudGVyIGxhIHRhaWxsZSBkJ2ktbm9ldWQgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIk4nYSBwdSByZWxvZ2VyIGRlcyBibG9jcyBsb3JzIGQndW4gY2hhbmdlbWVudCBkZSB0YWlsbGUgZCdpLW5vZXVkIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKyJFcnJldXIgbG9ycyBkdSBjaGFuZ2VtZW50IGRlIGxhIHRhaWxsZSBkZXMgaS1ub2V1ZHMuXG4iCisiRXjpY3V0ZXogZTJ1bmRvIHBvdXIgZOlmYWlyZSBsZXMgY2hhbmdlbWVudHMgZHUgc3lzdOhtZSBkZSBmaWNoaWVycy4gXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBibG9jayBtYWdpYyBpcyBiYWQuIFRyeSB0byBmaXggaXQgYnkgcnVubmluZzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorbXNnc3RyICIiCisiTGUgbnVt6XJvIG1hZ2lxdWUgZHUgYmxvYyBNTVAgZXN0IGluY29ycmVjdC4gRXNzYXllciBkZSBsZSBjb3JyaWdlciBlbiAiCisibGFu52FudDpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJOZSBwZXV0IHBhcyBtb2RpZmllciB1biBw6XJpcGjpcmlxdWUgZGUgam91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJMYSB0YWlsbGUgZGVzIGktbm9ldWRzIGVzdCBk6WrgICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICJMYSBy6WR1Y3Rpb24gZGUgbGEgdGFpbGxlIGQndW4gaS1ub2V1ZCBuJ2VzdCBwYXMgc3VwcG9ydOllXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICJUYWlsbGUgZCdpLW5vZXVkIGludmFsaWRlICVsdSAobWF4ICVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiUmV0YWlsbGVzIGxlcyBpLW5vZXVkcyBwb3VycmFpdCBwcmVuZHJlIGR1IHRlbXBzLiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiROlmaW5pdGlvbiBkdSBub21icmUgbWF4aW1hbCBkZSBtb250YWdlcyDgICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgbm9tYnJlIGNvdXJhbnQgZGUgbW9udGFnZXMg4CAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXJyb3IgYmVoYXZpb3IgdG8gJWRcbiIKK21zZ3N0ciAiROlmaW5pdGlvbiBkdSBjb21wb3J0ZW1lbnQgZW4gY2FzIGQnZXJyZXVyIOAgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgZ2lkIGRlcyBibG9jcyBy6XNlcnbpcyDgICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgImwnaW50ZXJ2YWxsZSBlbnRyZSBsZXMgdulyaWZpY2F0aW9ucyBlc3QgdHJvcCBncmFuZCAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIkTpZmluaXRpb24gZGUgbCdpbnRlcnZhbGxlIGRlIHbpcmlmaWNhdGlvbiDgICVsdSBzZWNvbmRlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnRhZ2UgdG8gJWclJSAoJWxsdSBibG9ja3MpXG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgcG91cmNlbnRhZ2UgZGUgYmxvY3MgculzZXJ26XMg4CAlZyUlICglbGx1IGJsb2NzKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAibGUgbm9tYnJlIGRlIGJsb2NzIHLpc2VydulzIGVzdCB0cm9wIGdyYW5kICglbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIkTpZmluaXRpb24gZHUgbm9tYnJlIGRlIGJsb2NzIHLpc2VydulzIOAgJWxsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgYSBk6WrgIGRlcyBzdXBlcmJsb2NzIGNyZXV4LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkTpZmluaXIgbGUgZHJhcGVhdSBjcmV1eCBkdSBzdXBlcmJsb2Mgbidlc3QgcGFzIHN1cHBvcnTpIHBvdXIgbGVzIHN5c3TobWVzXG4iCisiZGUgZmljaGllcnMgYXZlYyBsYSBmb25jdGlvbmFsaXTpIGZsZXhfYmcgYWN0aXbpZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIkRyYXBlYXUgZGUgc3VwZXJibG9jIGNyZXV4IGFjdGl26S4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIHN1cHByZXNzaW9uIGR1IGRyYXBlYXUgY3JldXggZHUgc3VwZXJibG9jIG4nZXN0IHBhcyBzdXBwb3J06WUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIiIKKyJE6WZpbml0aW9uIGRlIGxhIGRhdGUgZGUgbGEgZGVybmnocmUgdulyaWZpY2F0aW9uIGR1IHN5c3TobWUgZGVcbiIKKyJmaWNoaWVycyDgICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICJE6WZpbml0aW9uIGRlIGwndWlkIGRlIGJsb2NzIHLpc2VydulzIOAgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIiIKKyJFcnJldXIgbG9ycyBkZSBsJ3V0aWxpc2F0aW9uIGRlIGNsZWFyX21tcC4gRWxsZSBkb2l0IOp0cmUgdXRpbGlz6WUgYXZlYyAtZlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJMYSBmb25jdGlvbmFsaXTpIGRlIHF1b3RhIG5lIHBldXQg6nRyZSBjaGFuZ+llIHF1ZSBsb3JzcXVlIGxlIHN5c3TobWUgZGUgIgorImZpY2hpZXJzIGVzdCBk6W1vbnTpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4Cittc2dpZCAiVGhlIFVVSUQgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkwnVVVJRCBuZSBwZXV0IOp0cmUgY2hhbmfpIHF1ZSBsb3JzcXVlIGxlIHN5c3TobWVcbiIKKyJkZSBmaWNoaWVycyBldCBk6W1vbnTpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisiU2kgdm91cyB1dGlsaXNlciBzZXVsZW1lbnQgZGVzIG5veWF1eCBwbHVzIHLpY2VudHMgcXVlIHY0LjQsIGxhbmNleiAiCisiq6B0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZKC7IGV0IHJlbGFuY2V6IGNldHRlIGNvbW1hbmRlLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKyJE6WZpbmlyIGwnVVVJRCBzdXIgdW4gc3lzdOhtZSBkZSBmaWNoaWVyIGF2ZWMgc29tbWUgZGUgY29udHL0bGUgcG91cnJhaXQgIgorInByZW5kcmUgZHUgdGVtcHMuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJGb3JtYXQgVVVJRCBpbnZhbGlkZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJEb2l0IG1ldHRyZSDgIGpvdXIgbGUgc3VwZXJibG9jIGR1IGpvdXJuYWxcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJMYSB0YWlsbGUgZGVzIGktbm9ldWRzIG5lIHBldXQg6nRyZSBjaGFuZ+llIHF1ZSBsb3JzcXVlIGxlIHN5c3TobWVcbiIKKyJkZSBmaWNoaWVycyBldCBk6W1vbnTpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJDaGFuZ2VyIGxhIHRhaWxsZSBkZXMgaS1ub2V1ZHMgbidlc3QgcGFzIHN1cHBvcnTpIHBvdXIgbGVzIHN5c3TobWVzIGRlXG4iCisiZmljaGllcnMgYXZlYyBsYSBmb25jdGlvbmFsaXTpIGZsZXhfYmcgYWN0aXbpZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGlub2RlIHNpemUgJWx1XG4iCittc2dzdHIgIkTpZmluaXRpb24gZGUgbGEgdGFpbGxlIGRlcyBpLW5vZXVkcyDgICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIk4nYSBwdSBjaGFuZ2VyIGxhIHRhaWxsZSBkJ2ktbm9ldWQgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJE6WZpbml0aW9uIGRlIGxhIHRhaWxsZSBkZSCroHN0cmlkZaC7IOAgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICJE6WZpbml0aW9uIGRlIGxhIHRhaWxsZSBkdSCroHN0cmlwZSB3aWR0aKC7IOAgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB0byAnJXMnXG4iCittc2dzdHIgIkTpZmluaXRpb24gZGVzIG9wdGlvbnMgZGUgbW9udGFnZSDpdGVuZHVlcyBwYXIgZOlmYXV0IOAgq6Alc6C7XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZSBqb3VybmFsIGlzIGRpcnR5LiBZb3UgbWF5IHdpc2ggdG8gcmVwbGF5IHRoZSBqb3VybmFsIGxpa2U6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisiYnkgam91cm5hbCByZWNvdmVyeS5cbiIKK21zZ3N0ciAiIgorIkF2ZXJ0aXNzZW1lbnQ6IExlIGpvdXJuYWwgZXN0IHNhbGUuIFZvdXMgdm91bGV6IHBldXQt6nRyZSByZWpvdWVyIGxlICIKKyJqb3VybmFsXG4iCisiYWluc2k6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisiZXQgZW5zdWl0ZSByZWxhbmNlciBjZXR0ZSBjb21tYW5kZS4gU2lub24sIHRvdXQgY2hhbmdlbWVudCBlZmZlY3R16SAiCisicG91cnJhaXRcbiIKKyLqdHJlIOljcmFz6SBwYXIgbGEgculjdXDpcmF0aW9uIGR1IGpvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICJS6WN1cOlyYXRpb24gZHUgam91cm5hbC5cbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIjxvbiBwcm9j6GRlPlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIlByb2PpZGVyIG1hbGdy6SB0b3V0IChvdSBhdHRlbmRyZSAlZCBzZWNvbmRlcymgPyAobyxuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIlByb2PpZGVyIG1hbGdy6SB0b3V0oD8gKG8sbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiIgorImwnZXjpY3V0aW9uIGRlIG1rZTJmcyBlc3QgdG91dCBkZSBt6m1lIGZvcmPpZS5cbiIKKyJFc3Dpcm9ucyBxdWUgL2V0Yy9tdGFiIGVzdCBpbmNvcnJlY3QuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEzOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aWxsIG5vdCBtYWtlIGEgJXMgaGVyZSFcbiIKK21zZ3N0ciAibmUgZmVyYSBwYXMgdW4gJXMgaWNpoCFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgImwnZXjpY3V0aW9uIGRlIG1rZTJmcyBlc3QgdG91dCBkZSBt6m1lIGZvcmPpZS5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiTidhIHB1IGFsbG91ZXIgZGUgbGEgbeltb2lyZSBwb3VyIGFuYWx5c2VyIGxlcyBvcHRpb25zIGR1IGpvdXJuYWygIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCBmaW5kIGpvdXJuYWwgZGV2aWNlIG1hdGNoaW5nICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJOJ2EgcHUgdHJvdXZlciBsZSBw6XJpcGjpcmlxdWUgZGUgam91cm5hbCBjb3JyZXNwb25kYW50IOAgJXNcbiIKKworIzogbWlzYy91dGlsLmM6MjEzCittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVW5lIG91IGRlcyBvcHRpb25zIGRlIGpvdXJuYWwgc3DpY2lmaellcyBzb250IGVycm9u6WVzLlxuIgorIlxuIgorIkxlcyBvcHRpb25zIGRlIGpvdXJuYWwgc29udCBz6XBhcullcyBwYXIgZGVzIHZpcmd1bGVzIGV0IHBldXZlbnQgcHJlbmRyZSB1blxuIgorIlx0YXJndW1lbnQgcXVpIGVzdCBk6WZpbmkg4CBsJ2FpZGUgZCd1biBzaWduZSBkJ+lnYWxpdOkgKKugPaC7KS5cbiIKKyJcbiIKKyJMZXMgb3B0aW9ucyBkZSBqb3VybmFsIHZhbGlkZXMgc29udKA6XG4iCisiXHRzaXplPTx0YWlsbGUgZHUgam91cm5hbCBlbiBt6Wdhb2N0ZXRzPlxuIgorIlx0ZGV2aWNlPTxw6XJpcGjpcmlxdWUgZHUgam91cm5hbD5cbiIKKyJcdGxvY2F0aW9uPTxlbXBsYWNlbWVudCBkdSBqb3VybmFsPlxuIgorIlxuIgorIkxhIHRhaWxsZSBkdSBqb3VybmFsIGRvaXQg6nRyZSBjb21wcmlzZSBlbnRyZSAxMDI0IGV0IDEwMjQwMDAwIGJsb2NzIGR1XG4iCisic3lzdOhtZSBkZSBmaWNoaWVycy5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgZXN0IHRyb3AgcGV0aXQgcG91ciB1biBqb3VybmFsXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIHRhaWxsZSBkZW1hbmTpZSBkdSBqb3VybmFsIGVzdCBkZSAlZCBibG9jc6A7IGVsbGUgZG9pdCDqdHJlXG4iCisiZW50cmUgMTAyNCBldCAxMDI0MDAwMCBibG9jcy4gQXJy6nQgaW1t6WRpYXQuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkxhIHRhaWxsZSBkdSBqb3VybmFsIGVzdCB0cm9wIGdyYW5kZSBwb3VyIGxlIHN5c3TobWUgZGUgZmljaGllcnMuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiTGUgc3lzdOhtZSBkZSBmaWNoaWVycyBzZXJhIGF1dG9tYXRpcXVlbWVudCB26XJpZmnpIHRvdXMgbGVzICVkIG1vbnRhZ2VzIG91XG4iCisiYXBy6HMgJWcgam91cnMsIHNlbG9uIGxhIHByZW1p6HJlIOl2ZW50dWFsaXTpLiBVdGlsaXNlciB0dW5lMmZzIC1jIG91IC1pXG4iCisicG91ciDpY3Jhc2VyIGxhIHZhbGV1ci5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIlV0aWxpc2F0aW9uoDogJXMgWy1kXSBbLXAgZmljaGllci1waWRdIFstcyBjaGVtaW4tc29ja2V0XSBbLVQgZOlsYWldXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBjaGVtaW4tc29ja2V0XVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAibWF1dmFpcyBhcmd1bWVudHMiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICJjb25uZWN0aW9uIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgIuljcml0dXJlIgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAibm9tYnJlIGRlIGxlY3R1cmVzIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAibG9uZ3VldXIgZGUgculwb25zZaBpbnZhbGlkZSIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJsZSBk6W1vbiB1dWlkZCBlc3QgZOlq4CBlbiBjb3VycyBkJ2V46WN1dGlvbiBhdmVjIHBvdXIgcGlkICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY3JlYXRlIHVuaXggc3RyZWFtIHNvY2tldDogJXMiCittc2dzdHIgIk4nYSBwYXMgcHUgY3LpZXIgbGEgc29ja2V0IHVuaXggZGUgZmx1eKA6ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIk4nYSBwYXMgcHUgYXR0YWNoZXIgbGEgc29ja2V0IHVuaXggJXOgOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGxpc3RlbiBvbiB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiTidhIHBhcyBwdSDpY291dGVyIHN1ciBsYSBzb2NrZXQgdW5peCAlc6A6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbGEgbGVjdHVyZSBkZXB1aXMgbGUgY2xpZW50LCBsb25ndWV1ciA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICJvcOlyYXRpb24gJWQsIG51bSBlbnRyYW50ID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIGRlIHRlbXBzIGfpbuly6aA6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIGFs6WF0b2lyZSBn6W7pcumgOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCBzdWJzZXF1ZW50IFVVSURzXG4iCittc2dzdHJbMF0gIlVVSUQgZGUgdGVtcHMgJXMgZXQgJWQgc3VpdmFudCBn6W7pculzXG4iCittc2dzdHJbMV0gIlVVSUQgZGUgdGVtcHMgJXMgZXQgJWQgc3VpdmFudHMgZ+lu6XLpc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIkfpbuly6SAlZCBVVUlEc6A6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvcGVyYXRpb24gJWRcbiIKK21zZ3N0ciAiT3BlcmF0aW9uICVkIGludmFsaWRlXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICJOb21icmUgaW52YWxpZGWgOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTM0IG1pc2MvdXVpZGQuYzo1NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbCdhcHBlbCBhdSBk6W1vbiB1dWlkZCAoJXMpoDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iCittc2dzdHJbMF0gIiVzIGV0IFVVSUQgc3VpdmFudFxuIgorbXNnc3RyWzFdICIlcyBldCAlZCBVVUlEcyBzdWl2YW50c1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIkxpc3RlIGRlcyBVVUlEc6A6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiTG9uZ3VldXIgZGUgculwb25zZSBpbmF0dGVuZHVlIGRlcHVpcyBsZSBzZXJ2ZXVyICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTidhIHB1IHR1ZXIgbCd1dWlkZCBlbiBjb3VycyBkJ2V46WN1dGlvbiBzb3VzIGxlIHBpZCAlZKA6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iCittc2dzdHIgIkEgdHXpIGwndXVpZCBlbiBjb3VycyBkJ2V46WN1dGlvbiBzb3VzIGxlIHBpZCAlZFxuIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIlV0aWxpc2F0aW9uoDogJXMgWy1yXSBbLXRdXG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDIKK21zZ2lkICIjIEV4dGVudCBkdW1wOlxuIgorbXNnc3RyICIjIFZpZGFuZ2UgZGVzIGV4dGVudHOgOlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICIjXHROYj0lbGx1LCBUYWlsbGU9JWxsdSwgQ3Vyc2V1cj0lbGx1LCBUcmnpcz0lbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlV0aWxpc2F0aW9uoDogJXMgWy1kIGRyYXBlYXV4X2RlX2RlYnVnXSBbLWZdIFstRl0gWy1NXSBbIC1QXSBbLXBdICIKKyJw6XJpcGjpcmlxdWUgWy1ifC1zfG5vdXZlbGxlX3RhaWxsZV0gWy16IGZpY2hpZXJfYW5udWxhdGlvbl1cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIkV4dGVuc2lvbiBkZSBsYSB0YWJsZSBkJ2ktbm9ldWRzIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIlJlbG9jYWxpc2F0aW9uIGRlIGJsb2NzIgorCisjOiByZXNpemUvbWFpbi5jOjc4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIkV4YW1lbiBkZSBsYSB0YWJsZSBkJ2ktbm9ldWRzIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAiTWlzZSDgIGpvdXIgZGVzIHLpZulyZW5jZXMgZCdpLW5vZXVkcyIKKworIzogcmVzaXplL21haW4uYzo4NAorbXNnaWQgIk1vdmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiROlwbGFjZW1lbnQgZGUgbGEgdGFibGUgZCdpLW5vZXVkcyIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAiUGFzc2UgaW5jb25udWWgPyE/ISIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIkTpYnV0IGRlIGxhIHBhc3NlICVkIChtYXggPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJSZXRhaWxsZXIgdW4gc3lzdOhtZSBkZSBmaWNoaWVyIGJpZ2FsbG9jIG4nYSBwYXMg6XTpIGNvbXBs6HRlbWVudCB0ZXN06S5cbiIKKyJQcm9j6WRleiBzZWxvbiB2b3RyZSBwcm9wcmUgcmlzcXVloCEgVXRpbGlzZXogbCdvcHRpb24gZm9yY2Ugc2kgdm91c1xuIgorInZvdWxleiBjb250aW51ZXIgbWFsZ3LpIHRvdXQuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgImxvcnMgZGUgbCdvdXZlcnR1cmUgZGUgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgImxvcnMgZGUgbGEgculjdXDpcmFydGlvbiBkZSBsJ+l0YXQgZGUgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisiU1ZQIGV46WN1dGV6IKugZTJmc2NrIC1mICVzoLsgZCdhYm9yZC5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICJUYWlsbGUgbWluaW1hbGUgZXN0aW3pZSBkdSBzeXN06G1lIGRlIGZpY2hpZXJzoDogJWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG5ldyBzaXplOiAlc1xuIgorbXNnc3RyICJ0YWlsbGUgZCdpLW5vZXVkIGludmFsaWRlIC0gJXNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiTGEgbm91dmVsbGUgdGFpbGxlIGVzdCB0cm9wIGdyYW5kZSBwb3VyIOp0cmUgZXhwcmlt6WUgc3VyIDMyIGJpdHNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTmV3IHNpemUgc21hbGxlciB0aGFuIG1pbmltdW0gKCVsbHUpXG4iCittc2dzdHIgIkxhIG5vdXZlbGxlIHRhaWxsZSBlc3QgcGx1cyBwZXRpdGUgcXVlIGxlIG1pbmltdW0gKCVsbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIgorbXNnc3RyICJMb25ndWV1ciCroHN0cmlkZaC7IGludmFsaWRlIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiTGEgcGFydGl0aW9uIChvdSBsZSBw6XJpcGjpcmlxdWUpIGNvbnRlbmFudGUgbidhIHF1ZSAlbGx1ICglZGspIGJsb2NzLlxuIgorIlZvdXMgYXZleiBkZW1hbmTpIHVuZSBub3V2ZWxsZSB0YWlsbGUgZGUgJWxsdSBibG9jcy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiTmUgcGV1dCBwYXMgcG9zaXRpb25uZXIgZXQgZOlwb3NpdGlvbm5lciBsYSBmb25jdGlvbm5hbGl06SA2NC1iaXRzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJOZSBwZXV0IHBhcyBjaGFuZ2VyIGxhIGZvbmN0aW9ubmFsaXTpIHN1ciB1biBzeXN06G1lIGRlIGZpY2hpZXJzIHF1aSBlc3QgIgorInBsdXMgZ3JhbmQgcXVlIDJeMzIgYmxvY3MuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkxhIGZvbmN0aW9uYWxpdOkgZGUgNjSgYml0cyBuZSBwZXV0IOp0cmUgY2hhbmfpZSBsb3JzcXVlIGxlIHN5c3TobWUgZGUgIgorImZpY2hpZXJzIGVzdCBtb2506S5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorIlZldWlsbGV6IGFjdGl2ZXIgbGEgZm9uY3Rpb25uYWxpdOkgZGVzIGV4dGVudHMgYXZlYyB0dW5lMmZzIGF2YW50IGQnYWN0aXZlciAiCisibGEgZm9uY3Rpb25hbGl06SA2NC1iaXRzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgYSBk6WrgICVsbHUgYmxvY3MgKCVkaykuIFJpZW4g4CBmYWlyZaAhXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICJMZSBzeXN06G1lIGRlIGZpY2hpZXJzIGVzdCBk6WrgIDY0oGJpdHMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJMZSBzeXN06G1lIGRlIGZpY2hpZXJzIGVzdCBk6WrgIDMyoGJpdHMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICJDb252ZXJzaW9uIGR1IHN5c3TobWUgZGUgZmljaGllcnMgZW4gNjSgYml0cy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byAzMi1iaXQuXG4iCittc2dzdHIgIkNvbnZlcnNpb24gZHUgc3lzdOhtZSBkZSBmaWNoaWVycyBlbiAzMqBiaXRzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMgorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIkVuIHRyYWluIGRlIHJlZGltZW5zaW9ubmVyIGxlIHN5c3TobWUgZGUgZmljaGllcnMgc3VyICVzIOAgJWxsdSAoJWRrKSAiCisiYmxvY3MuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGRlIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGRlICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIlZldWlsbGV6IGxhbmNlciCroGUyZnNjayAtZnkgJXOguyBwb3VyIGNvcnJpZ2VyIGxlIHN5c3TobWUgZGUgZmljaGllcnNcbiIKKyJhcHLocyBsJ29w6XJhdGlvbiBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBhdm9ydOllLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJMZSBzeXN06G1lIGRlIGZpY2hpZXJzIHN1ciAlcyBhIG1haW50ZW5hbnQgdW5lIHRhaWxsZSBkZSAlbGx1IGJsb2NzICglZGspLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdHJvbmNhdHVyZSBkZSAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjgxCittc2dpZCAia2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6ZSB3aXRoIHNwYXJzZV9zdXBlcjIiCittc2dzdHIgIiIKKyJMZSBub3lhdSBuZSBzdXBwb3J0ZSBwYXMgbGUgY2hhbmdlbWVudCBkZSB0YWlsbGUgZW4gbGlnbmUgYXZlYyBzcGFyc2Vfc3VwZXIyIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKyJMZSBzeXN06G1lIGRlIGZpY2hpZXJzIGRlICVzIGVzdCBtb2506SBzdXIgJXOgOyBsZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBkb2l0ICIKKyLqdHJlIGVmZmVjdHXpIGVuIGxpZ25lXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkxhIHLpZHVjdGlvbiBlbiBsaWduZSBuJ2VzdCBwYXMgc3VwcG9ydOllIgorCisjOiByZXNpemUvb25saW5lLmM6MTE0Cittc2dpZCAiRmlsZXN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgbmUgc3VwcG9ydGUgcGFzIGxlIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGVuIGxpZ25lIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAiUGFzIGFzc2V6IGRlIGJsb2NzIGdkdCBy6XNlcnbpcyBwb3VyIHVuIGNoYW5nZW1lbnQgZGUgdGFpbGxlIgorCisjOiByZXNpemUvb25saW5lLmM6MTI5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICIiCisiTGUgbm95YXUgbmUgc2FpdCBwYXMgcmV0YWlsbGVyIHVuIHN5c3TobWUgZGUgZmljaGllcnMgZCd1bmUgdGVsbGUgdGFpbGxlIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgImxvcnMgZGUgbGEgdGVudGF0aXZlIGQnb3V2ZXJ0dXJlIGR1IHBvaW50IGRlIG1vbnRhZ2UgJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiT2xkIHJlc2l6ZSBpbnRlcmZhY2UgcmVxdWVzdGVkLlxuIgorbXNnc3RyICJVdGlsaXNhdGlvbiBkZSBsJ2FuY2llbm5lIGludGVyZmFjZSBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZS5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIlBlcm1pc3Npb24gZGUgcmVkaW1lbnNpb25uZXIgbGUgc3lzdOhtZSBkZSBmaWNoaWVycyByZWZ1c+llIgorCisjOiByZXNpemUvb25saW5lLmM6MTY0IHJlc2l6ZS9vbmxpbmUuYzoxODQKK21zZ2lkICJXaGlsZSBjaGVja2luZyBmb3Igb24tbGluZSByZXNpemluZyBzdXBwb3J0IgorbXNnc3RyICJMb3JzIGRlIGxhIHbpcmlmaWNhdGlvbiBkdSBzdXBwb3J0IGRlIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGVuIGxpZ25lIgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJMZSBub3lhdSBuZSBzdXBwb3J0ZSBwYXMgbGUgY2hhbmdlbWVudCBkZSB0YWlsbGUgZW4gbGlnbmUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIkVuIHRyYWluIGQnZWZmZWN0dWVyIHVuIGNoYW5nZW1lbnQgZGUgdGFpbGxlIGVuIGxpZ25lIGRlICVzIHZlcnMgJWxsdSAoJWRrKSAiCisiYmxvY3MuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJMb3JzIGRlIGxhIHRlbnRhdGl2ZSBkJ+l0ZW5kcmUgbGUgZGVybmllciBncm91cGUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIkxvcnMgZGUgbGEgdGVudGF0aXZlIGQnYWpvdXQgZHUgZ3JvdXBlIG51belybyAlZCIKKworIzogcmVzaXplL29ubGluZS5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzLCBhbmQgb24tbGluZSByZXNpemluZyBpcyBub3Qgc3VwcG9ydGVkIG9uICIKKyJ0aGlzIHN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgZGUgJXMgZXN0IG1vbnTpIHN1ciAlcywgZXQgbGUgY2hhbmdlbWVudCBkZSB0YWlsbGUgZW4gIgorImxpZ25lIG4nZXN0IHBhcyBzdXBwb3J06SBzdXIgY2Ugc3lzdOhtZS5cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICJsZSBub21icmUgZCdpLW5vZXVkcyAoJWxsdSkgZG9pdCDqdHJlIHBsdXMgcGV0aXQgcXVlICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAiYmxvY3MgculzZXJ26XMiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAiYmxvY3MgZGUgbel0YWRvbm7pZXMiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMzg1IHJlc2l6ZS9yZXNpemUyZnMuYzoyMzE3Cittc2dpZCAibmV3IG1ldGEgYmxvY2tzIgorbXNnc3RyICJub3V2ZWF1eCBibG9jcyBkZSBt6XRhZG9ubullcyIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKyJOZSBkZXZyYWl0IGphbWFpcyBhcnJpdmVyoCEgUGFzIGRlIHNiIGRhbnMgbGUgZGVybmllciBzdXBlcl9zcGFyc2UgYmegP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorIk5lIGRldnJhaXQgamFtYWlzIGFycml2ZXKgISBvbGRfZGVzYyBpbmF0dGVuZHUgZGFucyBzdXBlcl9zcGFyc2UgYmegP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjYxOAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW46IHJlc2l6ZSBpbm9kZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisiTmUgZGV2cmFpdCBqYW1haXMgc2UgcHJvZHVpcmWgOiBpLW5vZXVkIGRlIHJlZGltZW5zaW9ubmVtZW50IGNvcnJvbXB1oCFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCisjLCBmdXp6eQorbXNnaWQgIkVYVDJGUyBMaWJyYXJ5IHZlcnNpb24gMS40My4yIgorbXNnc3RyICJCaWJsaW90aOhxdWUgRVhUMkZTIHZlcnNpb24gMS40MyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIGV4dDJfZmlsc3lzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgYmFkYmxvY2tzX2xpc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2l0ZXJhdGUgc3RydWN0dXJlIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxhIHN0cnVjdHVyZSBiYWRibG9ja3NfaXRlcmF0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgaW5vZGVfc2NhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgaW9fY2hhbm5lbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB1bml4IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxhIHN0cnVjdHVyZSBpb19jaGFubmVsIHVuaXgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIGlvX21hbmFnZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIGlub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIGdlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIGlvX2NoYW5uZWwgZGUgdGVzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKyJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxhIHN0cnVjdHVyZSBkZSBsaXN0ZSBkZSBibG9jIGRlIHLpcGVydG9pcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgaWNvdW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGEgc3RydWN0dXJlIFBvd2VycXVlc3QgaW9fY2hhbm5lbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxhIHN0cnVjdHVyZSBkZSBmaWNoaWVyIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbCdlbi106nRlIGQnaW1hZ2UgRXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZSBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgaW9fY2hhbm5lbCBkJ2ktbm9ldWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxlIGhhbmRsZSBkJ2V4dGVudCBleHQ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBkYW5zIGxlIHN1cGVyLWJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIlLpdmlzaW9uIGRlIHN5c3TobWUgZGUgZmljaGllciB0cm9wIGdyYW5kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIiIKKyJUZW50YXRpdmUgZCfpY3JpdHVyZSBkYW5zIHVuIHN5c3TobWUgZGUgZmljaGllcnMgb3V2ZXJ0IGVuIGxlY3R1cmUgc2V1bGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIk5lIHBldXQgbGlyZSBsZXMgZGVzY3JpcHRldXJzIGRlIGdyb3VwZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJOZSBwZXV0IOljcmlyZSBsZXMgZGVzY3JpcHRldXJzIGRlIGdyb3VwZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIkRlc2NyaXB0ZXVyIGRlIGdyb3VwZSBjb3Jyb21wdaA6IGJsb2MgaW52YWxpZGUgcG91ciBsZSBiaXRtYXAgZGUgYmxvY3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNgorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAiCittc2dzdHIgIiIKKyJEZXNjcmlwdGV1ciBkZSBncm91cGUgY29ycm9tcHWgOiBibG9jIGludmFsaWRlIHBvdXIgbGUgYml0bWFwIGQnaS1ub2V1ZHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNworbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorIkRlc2NyaXB0ZXVyIGRlIGdyb3VwZSBjb3Jyb21wdaA6IGJsb2MgaW52YWxpZGUgcG91ciBsYSB0YWJsZSBkJ2ktbm9ldWRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzgKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk5lIHBldXQg6WNyaXJlIHVuIGJpdG1hcCBkJ2ktbm9ldWRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiTmUgcGV1dCBsaXJlIHVuIGJpdG1hcCBkJ2ktbm9ldWRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiTmUgcGV1dCDpY3JpcmUgdW4gYml0bWFwIGRlIGJsb2NzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDEKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJOZSBwZXV0IGxpcmUgdW4gYml0bWFwIGRlIGJsb2NzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTmUgcGV1dCDpY3JpcmUgdW5lIHRhYmxlIGQnaS1ub2V1ZHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIk5lIHBldXQgbGlyZSB1bmUgdGFibGUgZCdpLW5vZXVkcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICJOZSBwZXV0IGxpcmUgbCdpLW5vZXVkIHN1aXZhbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiTGUgc3lzdOhtZSBkZSBmaWNoaWVycyBhIHVuZSB0YWlsbGUgZGUgYmxvYyBpbmF0dGVuZHVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIlLpcGVydG9pcmUgRVhUMiBjb3Jyb21wdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisiTGEgdGVudGF0aXZlIGRlIGxlY3R1cmUgZCd1biBibG9jIGRlcHVpcyBsZSBzeXN06G1lIGRlIGZpY2hpZXJzIGEgcHJvZHVpdCAiCisidW5lIGxlY3R1cmUgdHJvbnF16WUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorIkxhIHRlbnRhdGl2ZSBkJ+ljcml0dXJlIGQndW4gYmxvY2sgdmVycyBsZSBzeXN06G1lIGRlIGZpY2hpZXJzIGEgcHJvZHVpdCB1bmUgIgorIuljcml0dXJlIHRyb25xdellIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIlBhcyBkZSBwbGFjZSBsaWJyZSBkYW5zIGxlIHLpcGVydG9pcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MAorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJCaXRtYXAgZCdpLW5vZXVkcyBub24gY2hhcmfpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQml0bWFwIGRlIGJsb2NzIG5vbiBjaGFyZ+kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJOdW3pcm8gZCdpLW5vZXVkIGlsbOlnYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIgorbXNnc3RyICJOdW3pcm8gZGUgYmxvYyBpbGzpZ2FsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTQKK21zZ2lkICJJbnRlcm5hbCBlcnJvciBpbiBleHQyZnNfZXhwYW5kX2RpciIKK21zZ3N0ciAiRXJyZXVyIGludGVybmUgZGFucyBleHQyZnNfZXhwYW5kX2RpciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU1Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICJQYXMgYXNzZXogZCdlc3BhY2UgcG91ciBjb25zdHJ1aXJlIGxlIHN5c3TobWUgZGUgZmljaGllcnMgcHJvcG9z6SIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiTnVt6XJvIGRlIGJsb2NzIGlsbOlnYWwgcGFzc+kg4CBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiTnVt6XJvIGRlIGJsb2NzIGlsbOlnYWwgcGFzc+kg4CBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiTnVt6XJvIGRlIGJsb2NzIGlsbOlnYWwgcGFzc+kg4CBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIk51belybyBkZSBibG9jcyBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIk51belybyBkZSBibG9jcyBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIk51belybyBkZSBibG9jcyBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKyJUZW50YXRpdmUgZGUgdHJ1cXVhZ2UgZGUgbGEgZmluIGR1IGJpdG1hcCBkZSBibG9jcyBhdS1kZWzgIGRlIGxhIGZpbiBy6WVsbGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorIlRlbnRhdGl2ZSBkZSB0cnVxdWFnZSBkZSBsYSBmaW4gZHUgYml0bWFwIGQnaS1ub2V1ZHMgYXUtZGVs4CBkZSBsYSBmaW4gcullbGxlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJCbG9jIGluZGlyZWN0IGlsbOlnYWwgcmVw6XLpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiQmxvYyBkb3VibGVtZW50IGluZGlyZWN0IGlsbOlnYWwgcmVw6XLpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiQmxvYyB0cmlwbGVtZW50IGluZGlyZWN0IGlsbOlnYWwgcmVw6XLpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkxlcyBiaXRtYXBzIGRlIGJsb2NzIG5lIHNvbnQgcGFzIGxlcyBt6m1lcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJMZXMgYml0bWFwcyBkJ2ktbm9ldWRzIG5lIHNvbnQgcGFzIGxlcyBt6m1lcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY5Cittc2dpZCAiSWxsZWdhbCBvciBtYWxmb3JtZWQgZGV2aWNlIG5hbWUiCittc2dzdHIgIk5vbSBkZSBw6XJpcGjpcmlxdWUgaWxs6WdhbCBvdSBtYWwgZm9ybekiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiSWwgbWFucXVlIHVuZSB0YWJsZSBkJ2ktbm9ldWRzIOAgdW4gZ3JvdXBlIGRlIGJsb2NzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzEKK21zZ2lkICJUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIkxlIHN1cGVyYmxvYyBleHQyIGVzdCBjb3Jyb21wdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcyCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJOdW3pcm8gZGUgYml0IGfpbulyaXF1ZSBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJOdW3pcm8gZGUgYml0IGfpbulyaXF1ZSBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJOdW3pcm8gZGUgYml0IGfpbulyaXF1ZSBpbGzpZ2FsIHBhc3PpIOAgZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiVHJvcCBkZSBsaWVucyBzeW1ib2xpcXVlcyByZW5jb250culzLiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkxhIGZvbmN0aW9uIGRlIHJhcHBlbCBuZSB0cmFpdGVyYSBwYXMgY2UgY2FzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzcKK21zZ2lkICJUaGUgaW5vZGUgaXMgZnJvbSBhIGJhZCBibG9jayBpbiB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIkwnaS1ub2V1ZCBwcm92aWVudCBkJ3VuIGJsb2MgZOlmZWN0dWV1eCBkYW5zIGxhIHRhYmxlIGQnaS1ub2V1ZHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OAorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykiCittc2dzdHIgIkxlIHN5c3TobWUgZGUgZmljaGllcnMgYSB1bmUoZGVzKSBmb25jdGlvbm5hbGl06ShzKSBub24gc3VwcG9ydOllKHMpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiIgorIkxlIHN5c3TobWUgZGUgZmljaGllcnMgYSB1bmUoZGVzKSBmb25jdGlvbm5hbGl06ShzKSBlbiBsZWN0dXJlIHNldWxlIG5vbiAiCisic3VwcG9ydOllcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJMZSBjYW5hbCBkJ0UvUyBuJ2EgcGFzIHB1IHNlIGTpcGxhY2VyIHN1ciB1bmUgbGVjdHVyZSBvdSDpY3JpdHVyZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICLJY2hlYyBkJ2FsbG9jYXRpb24gbeltb2lyZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICJBcmd1bWVudCBpbnZhbGlkZSBwYXNz6SDgIGxhIGJpYmxpb3Ro6HF1ZSBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODMKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJOJ2EgcHUgYWxsb3VlciBkZSBibG9jIGRhbnMgbGUgc3lzdOhtZSBkZSBmaWNoaWVycyBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgaW5vZGUgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJOJ2EgcHUgYWxsb3VlciBkJ2ktbm9ldWQgZGFucyBsZSBzeXN06G1lIGRlIGZpY2hpZXJzIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICJMJ2ktbm9ldWQgZXh0MiBuJ2VzdCBwYXMgdW4gculwZXJ0b2lyZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAiVHJvcCBkZSBy6WbpcmVuY2VzIGRhbnMgbGEgdGFibGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICJGaWNoaWVyIG5vbiB0cm91dukgcGFyIGV4dDJfbG9va3VwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICJGaWNoaWVyIG91dmVydCBlbiBsZWN0dXJlIHNldWxlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkJsb2MgZGUgculwZXJ0b2lyZSBkJ2V4dDIgbm9uIHRyb3V26SIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkxlIHLpcGVydG9pcmUgZXh0MiBleGlzdGUgZOlq4CIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgIkZ1bmN0aW9uIGRlIGJpYmxpb3Ro6HF1ZSBleHQyIG5vbiBpbXBs6W1lbnTpZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICJSZXF16nRlIGQnYW5udWxhdGlvbiB1dGlsaXNhdGV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgIkZpY2hpZXIgZXh0MiB0cm9wIGdyYW5kIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIkxlIHDpcmlwaOlyaXF1ZSBkZSBqb3VybmFsIGZvdXJuaSBuJ2VzdCBwYXMgdW4gcOlyaXBo6XJpcXVlIGRlIGJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIkxlIHN1cGVyYmxvYyBkZSBqb3VybmFsIG5vbiB0cm91dukiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiTGUgam91cm5hbCBkb2l0IGF2b2lyIGF1IG1vaW5zIDEwMjQgYmxvY3MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAiVmVyc2lvbiBkZSBqb3VybmFsIG5vbiBzdXBwb3J06WUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiRXJyZXVyIGxvcnMgZGUgbCdvdXZlcnR1cmUgZHUgam91cm5hbCBleHRlcm5lIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiSm91cm5hbCBub24gdHJvdXbpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIkhhY2hhZ2UgZGUgculwZXJ0b2lyZSBub24gc3VwcG9ydOkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIk51belybyBkZSBibG9jIGQnYXR0cmlidXQg6XRlbmR1IGlsbOlnYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiTmUgcGV1dCBjcullciBsZSBzeXN06G1lIGRlIGZpY2hpZXJzIGF2ZWMgbGUgbm9tYnJlIHJlcXVpcyBkJ2ktbm9ldWRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICJMJ2luc3RhbnRhbukgRTJpbWFnZSBuJ2VzdCBwYXMgZW4gY291cnMgZCd1dGlsaXNhdGlvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICJUcm9wIGRlIGJsb2NzIGRlIGRlc2NyaXB0ZXVycyBkZSBncm91cGVzIHLpc2VydulzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA1Cittc2dpZCAiUmVzaXplIGlub2RlIGlzIGNvcnJ1cHQiCittc2dzdHIgIkwnaS1ub2V1ZCBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBlc3QgY29ycm9tcHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIkEgZXNzYXnpIGRlIGTpZmluaXIgbGUgYml0bWFwIGRlIGJsb2NzIGF2ZWMgdW4gYmxvYyBpbmRpcmVjdCBtYW5xdWFudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCoDogU3VjY+hzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICJUREKgOiBCYXNlIGRlIGRvbm7pZXMgY29ycm9tcHVlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA5Cittc2dpZCAiVERCOiBJTyBFcnJvciIKK21zZ3N0ciAiVERCoDogRXJyZXVyIEUvUyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMAorbXNnaWQgIlREQjogTG9ja2luZyBlcnJvciIKK21zZ3N0ciAiVERCoDogRXJyZXVyIGRlIHZlcnJvdWlsbGFnZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERCoDogROlwYXNzZW1lbnQgbeltb2lyZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCoDogTCdlbnJlZ2lzdHJlbWVudCBleGlzdGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQqA6IGxlIHZlcnJvdSBleGlzdGUgc3VyIGQnYXV0cmVzIGNs6XMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTQKK21zZ2lkICJUREI6IEludmFsaWQgcGFyYW1ldGVyIgorbXNnc3RyICJUREKgOiBwYXJhbeh0cmUgaW52YWxpZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCoDogTCdlbnJlZ2lzdHJlbWVudCBuJ2V4aXN0ZSBwYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQqA6IMljcml0dXJlIG5vbiBwZXJtaXNlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICJMYSBsaXN0ZSBkZSBibG9jcyBkZSBy6XBlcnRvaXJlcyBleHQyZnMgZXN0IHZpZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICIiCisiVGVudGF0aXZlIGRlIG1vZGlmaWNhdGlvbiBkJ3VuIHBsYW4gZGUgYmxvY3MgdmlhIHVuIGl06XJhdGV1ciBkZSBibG9jcyBlbiAiCisibGVjdHVyZSBzZXVsZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsZSBjaGVtaW4gZCdleHRlbnQgZXh0NCBzYXV26SIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxlIGJpdG1hcCBn6W7pcmlxdWUgNjQtYml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSBwb3VyIGxlIGJpdG1hcCBkZSBibG9jcyA2NC1iaXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIHBvdXIgbGUgYml0bWFwIGQnaS1ub2V1ZHMgNjQtYml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgLS0tIFLJU0VSVslfMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSAtLS0gUslTRVJWyV8xNCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTUiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIC0tLSBSyVNFUlbJXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgLS0tIFLJU0VSVslfMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJOdW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSAtLS0gUslTRVJWyV8xNyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTgiCittc2dzdHIgIk51belybyBtYWdpcXVlIGludmFsaWRlIC0tLSBSyVNFUlbJXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgLS0tIFLJU0VSVslfMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIkVuLXTqdGUgZCdleHRlbnQgY29ycm9tcHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAiSW5kZXggZCdleHRlbnQgY29ycm9tcHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAiRXh0ZW50IGNvcnJvbXB1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMzCittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBleHRlbnQgbWFwIgorbXNnc3RyICJQYXMgZGUgcGxhY2UgbGlicmUgZGFucyBsYSBjYXJ0ZSBkJ2V4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICJMJ2ktbm9ldWQgbid1dGlsaXNlIHBhcyBkJ2V4dGVudHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJQYXMgZCdleHRlbnQgJ25leHQnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgIlBhcyBkJ2V4dGVudCAncHJldmlvdXMnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIlBhcyBkJ2V4dGVudCAndXAnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM4Cittc2dpZCAiTm8gJ2Rvd24nIGV4dGVudCIKK21zZ3N0ciAiUGFzIGQnZXh0ZW50ICdkb3duJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiUGFzIGRlIG5vZXVkIGNvdXJhbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIk9w6XJhdGlvbiBleHQyZnMgbm9uIHN1cHBvcnTpZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJQYXMgZGUgcGxhY2UgcG91ciBpbnPpcmVyIGwnZXh0ZW50IGRhbnMgbGUgbm9ldWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIkTpY291cGVyIHByb2R1aXJhaXQgdW4gbm9ldWQgdmlkZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MworbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIkV4dGVudCBub24gdHJvdXbpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIk9w6XJhdGlvbiBub24gc3VwcG9ydOllIHBvdXIgbGVzIGktbm9ldWRzIGNvbnRlbmFudCBkZXMgZXh0ZW50cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAiTGEgbG9uZ3VldXIgZCdleHRlbnQgZXN0IGludmFsaWRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiTGUgY2FuYWwgZCdFL1MgbmUgc3VwcG9ydGUgcGFzIGxlcyBudW3pcm9zIGRlIGJsb2MgNjQtYml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ3Cittc2dpZCAiQ2FuJ3QgY2hlY2sgaWYgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGR1ZSB0byBtaXNzaW5nIG10YWIgZmlsZSIKK21zZ3N0ciAiIgorIk5lIHBldXQgcGFzIHbpcmlmaWVyIHNpIGxlIHN5c3TobWUgZGUgZmljaGllcnMgZXN0IG1vbnTpIOAgY2F1c2UgZHUgbWFucXVlICIKKyJkZSBmaWNoaWVyIG10YWIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIiIKKyJMZSBzeXN06G1lIGRlIGZpY2hpZXIgZXN0IHRyb3AgZ3JhbmQgcG91ciB1dGlsaXNlciBsJ2FuY2llbiBzdHlsZSBkZSBiaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDkKK21zZ2lkICJNTVA6IGludmFsaWQgbWFnaWMgbnVtYmVyIgorbXNnc3RyICJNTVCgOiBudW3pcm8gbWFnaXF1ZSBpbnZhbGlkZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIk1NUKA6IHDpcmlwaOlyaXF1ZSBhY3R1ZWxsZW1lbnQgYWN0aWYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTEKK21zZ2lkICJNTVA6IGZzY2sgYmVpbmcgcnVuIgorbXNnc3RyICJNTVCgOiBmc2NrIGVuIGNvdXJzIGQnZXjpY3V0aW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUyCittc2dpZCAiTU1QOiBibG9jayBudW1iZXIgYmV5b25kIGZpbGVzeXN0ZW0gcmFuZ2UiCittc2dzdHIgIk1NUKA6IG51belybyBkZSBibG9jIGVuLWRlaG9ycyBkZSBsYSBwb3J06WUgZHUgc3lzdOhtZSBkZSBmaWNoaWVycyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MworbXNnaWQgIk1NUDogdW5kZXJnb2luZyBhbiB1bmtub3duIG9wZXJhdGlvbiIKK21zZ3N0ciAiTU1QoDogZW4gY291cnMgZCdvcOlyYXRpb24gaW5jb25udWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVCgOiBzeXN06G1lIGRlIGZpY2hpZXJzIGVuIGNvdXJzIGQndXRpbGlzYXRpb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIk1NUKA6IGwnb3V2ZXJ0dXJlIGF2ZWMgT19ESVJFQ1QgYSDpY2hvdekiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJUYWlsbGUgZHUgZGVzY3JpcHRldXIgZGUgZ3JvdXBlIGRlIGJsb2NzIGluY29ycmVjdGUuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgIkxhIHNvbW1lIGRlIGNvbnRy9GxlIGRlIGwnaS1ub2V1ZCBuZSBjb3JyZXNwb25kIHBhcyDgIGwnaS1ub2V1ZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIkxhIHNvbW1lIGRlIGNvbnRy9GxlIGR1IGJpdG1hcCBkJ2ktbm9ldWQgbmUgY29ycmVzcG9uZCBwYXMgYXUgYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU5Cittc2dpZCAiRXh0ZW50IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayIKK21zZ3N0ciAiIgorIkxhIHNvbW1lIGRlIGNvbnRy9GxlIGR1IGJsb2NrIGQnZXh0ZW50IG5lIGNvcnJlc3BvbmQgcGFzIGF1IGJsb2MgZCdleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkxlIGJsb2MgZGUgculwZXJ0b2lyZSBuJ2EgcGFzIGRlIHBsYWNlIHBvdXIgbGEgc29tbWUgZGUgY29udHL0bGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICIiCisiTGEgc29tbWUgZGUgY29udHL0bGUgZHUgYmxvYyBkZSBy6XBlcnRvaXJlIG5lIGNvcnJlc3BvbmQgcGFzIGF1IGJsb2MgZGUgIgorInLpcGVydG9pcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2siCittc2dzdHIgIiIKKyJMYSBzb21tZSBkZSBjb250cvRsZSBkdSBibG9jIGQnYXR0cmlidXQg6XRlbmR1IG5lIGNvcnJlc3BvbmQgcGFzIGF1IGJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIkxhIHNvbW1lIGRlIGNvbnRy9GxlIGR1IHN1cGVyYmxvYyBuZSBjb3JyZXNwb25kIHBhcyBhdSBzdXBlcmJsb2MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiQWxnb3JpdGhtZSBkZSBzb21tZSBkZSBjb250cvRsZSBpbmNvbm51IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiTGEgc29tbWUgZGUgY29udHL0bGUgZHUgYmxvYyBNTVAgbmUgY29ycmVzcG9uZCBwYXMgYXUgYmxvYyBNTVAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkxlIGZpY2hpZXIgZXh0MiBleGlzdGUgZOlq4CIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIkxhIHNvbW1lIGRlIGNvbnRy9GxlIGR1IGJpdG1hcCBkZSBibG9jIG5lIGNvcnJlc3BvbmQgcGFzIGF1IGJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKyJOZSBwZXV0IHBhcyBpdOlyZXIgc3VyIGxlcyBibG9jcyBkZSBkb25u6WVzIGQndW4gaS1ub2V1ZCBjb250ZW5hbnQgZGVzICIKKyJkb25u6WVzIGVuIGxpZ25lIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIG5hbWUgbGVuZ3RoIgorbXNnc3RyICJMJ2F0dHJpYnV0IOl0ZW5kdSBhIHVuZSBsb25ndWV1ciBkZSBub20gaW52YWxpZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzAKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgbGVuZ3RoIgorbXNnc3RyICJMJ2F0dHJpYnV0IOl0ZW5kdSBhIHVuZSBsb25ndWV1ciBkZSB2YWxldXIgaW52YWxpZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICJMJ2F0dHJpYnV0IOl0ZW5kdSBhIHVuIGhhY2hhZ2UgaW5jb3JyZWN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIkxlIGJsb2MgZCdhdHRyaWJ1dCDpdGVuZHUgYSB1biBlbi106nRlIGTpZmVjdHVldXgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiQ2zpIGQnYXR0cmlidXQg6XRlbmR1IG5vbiB0cm91dullIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICJFc3BhY2UgaW5zdWZmaXNhbnQgcG91ciBzdG9ja2VyIGxlcyBkb25u6WVzIGRlIGwnYXR0cmlidXQg6XRlbmR1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIiIKKyJJbCBtYW5xdWUgYXUgc3lzdOhtZSBkZSBmaWNoaWVyIGxhIGZvbmN0aW9ubmFsaXTpIGV4dF9hdHRyIG91IGlubGluZV9kYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJMJ2ktbm9ldWQgbidhIHBhcyBkZSBkb25u6WUgZW4gbGlnbmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiUGFzIGRlIGJsb2MgcG91ciB1biBpLW5vZXVkIGF2ZWMgZGVzIGRvbm7pZXMgZW4gbGlnbmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJQYXMgZGUgcGxhY2UgbGlicmUgZGFucyBsZXMgZG9ubullcyBlbiBsaWduZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiTnVt6XJvIG1hZ2lxdWUgaW52YWxpZGUgcG91ciBsYSBzdHJ1Y3R1cmUgZCdhdHRyaWJ1dCDpdGVuZHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIkwnaS1ub2V1ZCBzZW1ibGUgY29udGVuaXIgZGVzIGRvbm7pZXMgaW5jb3JyZWN0ZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICJMJ2F0dHJpYnV0IOl0ZW5kdSBhIHVuIGTpY2FsYWdlIGRlIHZhbGV1ciBpbnZhbGlkZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICJMZXMgZHJhcGVhdXggZHUgam91cm5hbCBzb250IGluY29o6XJlbnRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkZpY2hpZXIgZCdhbm51bGF0aW9uIGNvcnJvbXB1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIkZpY2hpZXIgZCdhbm51bGF0aW9uIGVycm9u6SBwb3VyIGNlIHN5c3TobWUgZGUgZmljaGllciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiTGUgc3lzdOhtZSBkZSBmaWNoaWVyIGVzdCBjb3Jyb21wdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NgorbXNnaWQgIkJhZCBDUkMgZGV0ZWN0ZWQgaW4gZmlsZSBzeXN0ZW0iCittc2dzdHIgIkNSQyBpbmNvcnJlY3QgZOl0ZWN06SBkYW5zIGxlIHN5c3TobWUgZGUgZmljaGllcnMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKK21zZ2lkICJUaGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIkxlIHN1cGVyYmxvYyBkdSBqb3VybmFsIGVzdCBjb3Jyb21wdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIkwnaS1ub2V1ZCBkZSBjaGFuZ2VtZW50IGRlIHRhaWxsZSBlc3QgY29ycm9tcHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTEKK21zZ2lkICJQcm9maWxlIHZlcnNpb24gMC4wIgorbXNnc3RyICJQcm9maWxhZ2UgdmVyc2lvbiAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJWYWxldXIgbWFnaXF1ZSBpbnZhbGlkZSBkYW5zIHByb2ZpbGVfbm9kZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlNlY3Rpb24gZGUgcHJvZmlsYWdlIG5vbiB0cm91dullIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlJlbGF0aW9uIGRlIHByb2ZpbGFnZSBub24gdHJvdXbpZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICJUZW50YXRpdmUgZCdham91dCBkJ3VuZSByZWxhdGlvbiDgIHVuIG5vZXVkIHF1aSBuJ2VzdCBwYXMgdW5lIHNlY3Rpb24iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIlVuIGVuLXTqdGUgZGUgc2VjdGlvbiBkZSBwcm9maWxhZ2UgYSB1biB2YWxldXIgbm9uIG51bGxlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiTGlzdGUgY2hh7m7pZSBpbnZhbGlkZSBkYW5zIGxlcyBzdHJ1Y3R1cmVzIGRlIHByb2ZpbGFnZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIk5pdmVhdSBkZSBncm91cGUgaW52YWxpZGUgZGFucyBsZXMgc3RydWN0dXJlcyBkZSBwcm9maWxhZ2UiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJQb2ludGV1ciBwYXJlbnQgaW52YWxpZGUgZGFucyBsZXMgc3RydWN0dXJlcyBkZSBwcm9maWxhZ2UiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAiVmFsZXVyIG1hZ2lxdWUgaW52YWxpZGUgZGFucyBsJ2l0ZXJhdGV1ciBkZSBwcm9maWxhZ2UiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICJOZSBwZXV0IGTpZmluaXJlIGxhIHZhbGV1ciBzdXIgdW4gbm9ldWQgZGUgc2VjdGlvbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHByb2ZpbGUgbGlicmFyeSIKK21zZ3N0ciAiQXJndW1lbnQgaW52YWxpZGUgcGFzc+kg4CBsYSBiaWJsaW90aOhxdWUgZGUgcHJvZmlsYWdlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIlRlbnRhdGl2ZSBkZSBtb2RpZmllciB1biBwcm9maWxhZ2UgZW4gbGVjdHVyZSBzZXVsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiTCdlbi106nRlIGRlIHNlY3Rpb24gZGUgcHJvZmlsYWdlIG4nZXN0IHBhcyBuaXZlYXUgc29tbWV0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI1Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCittc2dzdHIgIkVycmV1ciBkZSBzeW50YXhlIGRhbnMgbCdlbi106nRlIGRlIHNlY3Rpb24gZGUgcHJvZmlsYWdlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI2Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCittc2dzdHIgIkVycmV1ciBkZSBzeW50YXhlIGRhbnMgbGEgcmVsYXRpb24gZGUgcHJvZmlsYWdlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJBY2NvbGFkZSBmZXJtYW50ZSBzdXBlcmZsdWUgZGFucyBsZSBwcm9maWxhZ2UiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiQWNjb2xhZGUgb3V2cmFudGUgbWFucXVhbnRlIGRhbnMgbGUgcHJvZmlsYWdlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiVmFsZXVyIG1hZ2lxdWUgaW52YWxpZGUgZGFucyBwcm9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCittc2dzdHIgIlZhbGV1ciBtYWdpcXVlIGludmFsaWRlIGRhbnMgcHJvZmlsZV9zZWN0aW9uX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiSXTpcmF0aW9uIHN1ciB0b3V0ZXMgbGVzIHNlY3Rpb25zIGRlIG5pdmVhdSBzb21tZXQgbm9uIHN1cHBvcnTpZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMgorbXNnaWQgIkludmFsaWQgcHJvZmlsZV9zZWN0aW9uIG9iamVjdCIKK21zZ3N0ciAiT2JqZWN0IHByb2ZpbGVfc2VjdGlvbiBpbnZhbGlkZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMworbXNnaWQgIk5vIG1vcmUgc2VjdGlvbnMiCittc2dzdHIgIlBsdXMgZGUgc2VjdGlvbnMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzQKK21zZ2lkICJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK21zZ3N0ciAiRW5zZW1ibGUgZGUgbm9tIGludmFsaWRlIHBhc3PpIOAgbGEgcm91dGluZSBkZSByZXF16nRlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgIlBhcyBkZSBmaWNoaWVyIGRlIHByb2ZpbGFnZSBvdXZlcnQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIlZhbGV1ciBtYWdpcXVlIGludmFsaWRlIGRhbnMgcHJvZmlsZV9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiTidhIHB1IG91dnJpciBsZSBmaWNoaWVyIGRlIHByb2ZpbGFnZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkxhIHNlY3Rpb24gZXhpc3RlIGTpauAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIlZhbGV1ciBib29s6WVubmUgaW52YWxpZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIlZhbGV1ciBlbnRp6HJlIGludmFsaWRlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQxCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV9kYXRhX3QiCittc2dzdHIgIlZhbGV1ciBtYWdpcXVlIGludmFsaWRlIGRhbnMgcHJvZmlsZV9maWxlX2RhdGFfdCIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIG9uICVzIgorbXNnc3RyICJcdGRlcm5pZXIgbW9udGFnZSBzdXIgJXMgbGUgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHRkZXJuaWVyIG1vbnRhZ2UgbGUgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx0Y3Lp6SBsZSAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiXHRtb2RpZmnpIGxhIGRlcm5p6HJlIGZvaXMgbGUgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIgorbXNnc3RyICJUcm91dukgdW5lIHRhYmxlIGRlIHBhcnRpdGlvbnMgJXMgZGFucyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiTGUgZmljaGllciAlcyBuJ2V4aXN0ZSBwYXMgZXQgYXVjdW5lIHRhaWxsZSBuJ2Eg6XTpIHNw6WNpZmnpZS5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICJDculhdGlvbiBkJ3VuIGZpY2hpZXIgbm9ybWFsICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkJ291dnJpciAlc6A6ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyJMZSBw6XJpcGjpcmlxdWUgbidleGlzdGUgYXBwYXJlbW1lbnQgcGFzoDsgbCdhdmV6LXZvdXMgc3DpY2lmaelcbiIKKyJjb3JyZWN0ZW1lbnSgP1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIG4nZXN0IHBhcyB1biBw6XJpcGjpcmlxdWUgc3DpY2lhbCBlbiBtb2RlIGJsb2MuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgY29udGllbnQgdW4gc3lzdOhtZSBkZSBmaWNoaWVycyAlcyDpdGlxdWV06SCroCVzoLtcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAiJXMgY29udGllbnQgdW4gc3lzdOhtZSBkZSBmaWNoaWVycyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYCVzJyBkYXRhXG4iCittc2dzdHIgIiVzIGNvbnRpZW50IHVuZSBkb25u6WUgq6Alc6C7XG4iCisKKyN+IG1zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKKyN+IG1zZ3N0ciAiU1ZQIGV46WN1dGV6IGUyZnNjayBzdXIgbGUgc3lzdOhtZSBkZSBmaWNoaWVycy5cbiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9odS5nbW8gYi9lMmZzcHJvZ3MvcG8vaHUuZ21vCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYWQ2YTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vaHUuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9odS5wbyBiL2UyZnNwcm9ncy9wby9odS5wbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzFlZTMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2h1LnBvCkBAIC0wLDAgKzEsODU3NCBAQAorIyBIdW5nYXJpYW4gdHJhbnNsYXRpb24gb2YgZTJmc3Byb2dzCisjIENvcHlyaWdodCAoQykgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIyAgICAgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBieSBUaGVvZG9yZSBUcydvLgorIyBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PiwgMjAxMC4KKyMgR2Fib3IgS2VsZW1lbiA8a2VsZW1lbmcgYXQgZ25vbWUgZG90IGh1PiwgMjAxNi4KKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40My4xXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA2LTEyIDE0OjU2KzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEdhYm9yIEtlbGVtZW4gPGtlbGVtZW5nQGdub21lLmh1PlxuIgorIkxhbmd1YWdlLVRlYW06IEh1bmdhcmlhbiA8dHJhbnNsYXRpb24tdGVhbS1odUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCisiTGFuZ3VhZ2U6IGh1XG4iCisiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisiWC1HZW5lcmF0b3I6IExva2FsaXplIDEuNVxuIgorIlBsdXJhbC1Gb3JtczogIG5wbHVyYWxzPTI7IHBsdXJhbD0obiAhPSAxKTtcbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjIzIG1pc2MvbWtlMmZzLmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9jayAldSBvdXQgb2YgcmFuZ2U7IGlnbm9yZWQuXG4iCittc2dzdHIgIkEoeikgJXUuIGhpYsOhcyBibG9rayBrw612w7xsIGVzaWsgYSB0YXJ0b23DoW55b247IG1lbGzFkXp2ZS5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJhIGhpYsOhcyBibG9rayBpbm9kZSDDqXBzw6lnw6luZWsgZWxsZW7FkXJ6w6lzZSBrw7Z6YmVuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NTgKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJhIGhpYsOhcyBibG9rayBpbm9kZSBvbHZhc8Ohc2Ega8O2emJlbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjcyIGUyZnNjay9zY2FudGVzdC5jOjEwNyBlMmZzY2svdW5peC5jOjE1MDgKKyM6IGUyZnNjay91bml4LmM6MTYwMSBtaXNjL2JhZGJsb2Nrcy5jOjEyNDIgbWlzYy9iYWRibG9ja3MuYzoxMjUwCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyNjQgbWlzYy9iYWRibG9ja3MuYzoxMjc2IG1pc2MvZHVtcGUyZnMuYzo2ODkKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDAgbWlzYy9lMmltYWdlLmM6MTU4NCBtaXNjL2UyaW1hZ2UuYzoxNjA1CisjOiBtaXNjL21rZTJmcy5jOjIzMCBtaXNjL3R1bmUyZnMuYzoyNjkzIG1pc2MvdHVuZTJmcy5jOjI3ODcgcmVzaXplL21haW4uYzo0MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiCittc2dzdHIgImEoeikgJXMgbWVnbnlpdMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAiYSh6KSDigJ4lc+KAnSBtZWdueWl0w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjk0IG1pc2MvbWtlMmZzLmM6MjM3Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbiBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBmaWxlIgorbXNnc3RyICJhIGhpYsOhcyBibG9ra29rIGxpc3TDoWrDoW5hayBvbHZhc8Ohc2Frb3IgZsOhamxiw7NsIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTA1Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJhIGhpYsOhcyBibG9ra29rIGlub2RlIGZyaXNzw610w6lzZWtvciIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxlbTogYSh6KSAldS4gYmxva2sgaWxsZWfDoWxpcyBhIGhpYsOhcyBibG9ra29rIGlub2RlLWrDoWJhbi4gVMO2csO2bHZlLlxuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJIaWJhIGEoeikgJWx1ICglcykgYmxva2sgb2x2YXPDoXNha29yICVzIHNvcsOhbi4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJIaWJhIGEoeikgJWx1ICglcykgYmxva2sgb2x2YXPDoXNha29yLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSGliYSBtZWxsxZF6w6lzZSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICLDmmpyYcOtcsOhcyBrw6lueXN6ZXLDrXTDqXNlIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiSGliYSBhKHopICVsdSAoJXMpIGJsb2trIMOtcsOhc2Frb3IgJXMgc29yw6FuLiAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJIaWJhIGEoeikgJWx1ICglcykgYmxva2sgw61yw6FzYWtvci4gIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAiw7xyZXMga8O2bnl2dMOhcmJsb2trb2siCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAiw7xyZXMga8O2bnl2dMOhcnTDqXJrw6lwIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiw5xyZXMga8O2bnl2dMOhcmJsb2trICV1ICgjJWQpIGViYmVuIGF6IGlub2RlLWJhbjogJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczogJXMgZsOhamxuw6l2IGJsb2trc3rDoW0gYmxva2ttw6lyZXRcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiQSBibG9ra29rIHN6w6FtYSBpbGxlZ8OhbGlzIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJOZW0gZm9nbGFsaGF0w7MgYmxva2twdWZmZXIgKG3DqXJldD0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAiZXh0ZW50IMO6amrDocOpcMOtdGkgYXogaW5vZGUtdMOpcmvDqXBldCIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6ICVzIGxlbWV6XG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIkEgQkxLRkxTQlVGIGlvY3RsIG5lbSB0w6Ftb2dhdG90dCEgQSBwdWZmZXJlayBuZW0gw7xyw610aGV0xZFrLlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gZGV2aWNlXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6ICVzIFstRl0gWy1JIGlub2RlX3B1ZmZlcl9ibG9ra29rXSBlc3prw7Z6XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAiJXMgbWVnbnlpdMOhc2Frb3Igw7xyw610w6lzcmUiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgIiVzIMO8csOtdMOpc8OpcmUgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICLigJ4lc+KAnSBtZWdueWl0w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTE5IGUyZnNjay9zY2FudGVzdC5jOjExNCBtaXNjL2UyaW1hZ2UuYzoxMjkzCittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJpbm9kZSB2aXpzZ8OhbGF0IG1lZ255aXTDoXNhIGvDtnpiZW4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEyNyBtaXNjL2UyaW1hZ2UuYzoxMzEyCittc2dpZCAid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIgorbXNnc3RyICJrw7Z2ZXRrZXrFkSBpbm9kZSBsZWvDqXLDqXNlIGvDtnpiZW4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiJXUgaW5vZGUgdml6c2fDoWx2YS5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJuYXBsw7Mgc3p1cGVyYmxva2tqw6FuYWsgb2x2YXPDoXNhXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6IG5lbSB0YWzDoWxoYXTDsyDDqXJ2w6lueWVzIG5hcGzDsy1zenVwZXJibG9ra1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiJXM6IGEgbmFwbMOzIHTDumwgcsO2dmlkXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTY4IG1pc2MvZnVzZTJmcy5jOjM3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIgorbXNnc3RyICIlczogbmFwbMOzIGhlbHlyZcOhbGzDrXTDoXNhXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogbmVtIHByw7Niw6Fsb20gaGVseXJlw6FsbMOtdGFuaSBhIG5hcGzDs3Qgw61yw6FzdsOpZGV0dCBtw7NkYmFuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICIlcyDDumpyYW55aXTDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImFleHRlbmRlZCBhdHRyaWJ1dGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFlcnJvciBhbGxvY2F0aW5nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgIkJiaXRtYXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE3Cittc2dpZCAiY2NvbXByZXNzIgorbXNnc3RyICJjY29tcHJlc3MiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE4Cittc2dpZCAiQ2NvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgQGIiCittc2dzdHIgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgImRkaXJlY3RvcnkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkRkZWxldGVkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZWVudHJ5IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMgorbXNnaWQgIkVAZSAnJURuJyBpbiAlcCAoJWkpIgorbXNnc3RyICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZmZpbGVzeXN0ZW0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGZm9yIEBpICVpICglUSkgaXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnZ3JvdXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoSFRSRUUgQGQgQGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklpbGxlZ2FsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOQorbXNnaWQgImpqb3VybmFsIgorbXNnc3RyICJqam91cm5hbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibGxvc3QrZm91bmQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGlzIGEgbGluayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibW11bHRpcGx5LWNsYWltZWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMzCittc2dpZCAibmludmFsaWQiCittc2dzdHIgIm5pbnZhbGlkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNAorbXNnaWQgIm9vcnBoYW5lZCIKK21zZ3N0ciAib29ycGhhbmVkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwcHJvYmxlbSBpbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFxdW90YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAicnJvb3QgQGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM4Cittc2dpZCAic3Nob3VsZCBiZSIKK21zZ3N0ciAic3Nob3VsZCBiZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAiU3N1cGVyQGIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInV1bmF0dGFjaGVkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgInZkZXZpY2UiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieGV4dGVudCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgInp6ZXJvLWxlbmd0aCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8QSBOVUxMIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8QSBoaWLDoXMgYmxva2tvayBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU3Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEEgZmVsaGFzem7DoWzDs2kga3bDs3RhIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEEgY3NvcG9ydGt2w7N0YSBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxBIHJlbmRzemVydMO2bHTFkSBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYwCittc2dpZCAiPFRoZSB1bmRlbGV0ZSBkaXJlY3RvcnkgaW5vZGU+IgorbXNnc3RyICI8QSBrw7ZueXZ0w6FyIHZpc3N6YcOhbGzDrXTDoXNhIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjEKK21zZ2lkICI8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IgorbXNnc3RyICI8QSBjc29wb3J0bGXDrXLDsyBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPEEgbmFwbMOzIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjw5LiBmZW5udGFydG90dCBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPDEwLiBmZW5udGFydG90dCBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJzemFiw6FseW9zIGbDoWpsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAia8O2bnl2dMOhciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJrYXJha3RlcmVzIGVzemvDtnoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJibG9ra29zIGVzemvDtnoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQxCittc2dpZCAibmFtZWQgcGlwZSIKK21zZ3N0ciAiZWxuZXZlemV0dCBhZGF0Y3NhdG9ybmEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAic3ppbWJvbGlrdXMgbGluayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAiZm9nbGFsYXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgImlzbWVyZXRsZW4gZsOhamx0w61wdXMgMCVvIG3Ds2RkYWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImluZGlyZWt0IGJsb2trIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZHVwbGEgaW5kaXJla3QgYmxva2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJ0cmlwbGEgaW5kaXJla3QgYmxva2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAiZm9yZMOtdMOzIGJsb2trIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJsb2trICMiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAidMO2YmJzesO2csO2c2VuIGxlZm9nbGFsdCBpbm9kZSB0w6lya8OpcCIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAiYmVsc8WRIGhpYmE6IG5lbSB0YWzDoWxoYXTDsyBhIGR1cF9ibGsgZWhoZXo6ICVsbHVcbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkwMworbXNnaWQgInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIKK21zZ3N0ciAidmlzc3phYWR2YSBhIGNsb25lX2ZpbGVfYmxvY2stYsOzbCIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiYmVsc8WRIGhpYmE6IG5lbSBrZXJlc2hldMWRIGtpIGF6IEVBIGJsb2trcmVrb3JkIGVoaGV6OiAlbGx1IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiYmVsc8WRIGhpYmE6IG5lbSBrZXJlc2hldMWRIGtpIGF6IEVBIGlub2RlIHJla29yZCBlaGhlejogJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjY2NiBlMmZzY2svcGFzczIuYzo5NzAKK21zZ2lkICJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAia8O2bnl2dMOhcmJsb2trIG9sdmFzw6FzYSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgImhhc3puw6FsYXRiYW4gbMOpdsWRIGlub2RlLXTDqXJrw6lwIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTIyCittc2dpZCAiZGlyZWN0b3J5IGlub2RlIG1hcCIKK21zZ3N0ciAia8O2bnl2dMOhciBpbm9kZS10w6lya8OpcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgInN6YWLDoWx5b3MgZsOhamwgaW5vZGUtdMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgImhhc3puw6FsYXRiYW4gbMOpdsWRIGJsb2trdMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKK21zZ2lkICJtZXRhZGF0YSBibG9jayBtYXAiCittc2dzdHIgIm1ldGFhZGF0LWJsb2trdMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImlub2RlLXZpenNnw6FsYXQgbWVna2V6ZMOpc2UiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJrw7Z2ZXRrZXrFkSBpbm9kZSBsZWvDqXLDqXNlIGEgdml6c2fDoWxhdHTDs2wiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIjEuIGzDqXDDqXMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiCittc2dzdHIgIiV1LiBpbm9kZSBpbmRpcmVrdCBibG9ra2phaW5hayBvbHZhc8Ohc2EiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwNDQKK21zZ2lkICJiYWQgaW5vZGUgbWFwIgorbXNnc3RyICJoaWLDoXMgaW5vZGUtdMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJpbm9kZSBhIGhpYsOhcyBibG9ra3TDqXJrw6lwYmVuIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAiaW1hZ2ljIGlub2RlLXTDqXJrw6lwIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTMxCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAiCittc2dzdHIgInTDtmJic3rDtnLDtnNlbiBsZWZvZ2xhbHQgYmxva2t0w6lya8OpcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAiZXh0IGF0dHIgYmxva2t0w6lya8OpcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiIKKyIlNmx1KCVjKTogYSB2w6FydCAlNmx1IGhlbHlldHQgJTZsdSBmaXppa2FpIMOpcmtlemV0dCAoYmxva2tzesOhbTogJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiYmxva2tiaXR0w6lya8OpcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAiaW5vZGUgYml0dMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAiaW5vZGUgdMOhYmxhIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIjIuIGzDqXDDqXMiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJOZW0gZm9seXRhdGhhdMOzLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAiaW5vZGUga8Opc3ogYml0dMOpcmvDqXAiCisKKyM6IGUyZnNjay9wYXNzMy5jOjg2Cittc2dpZCAiUGVhayBtZW1vcnkiCittc2dzdHIgIkxlZ21hZ2FzYWJiIG1lbcOzcmlhIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIjMuIGzDqXDDqXMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorbXNnaWQgImlub2RlIGxvb3AgZGV0ZWN0aW9uIGJpdG1hcCIKK21zZ3N0ciAiaW5vZGUtY2lrbHVzdCBmZWxpc21lcsWRIGJpdHTDqXJrw6lwIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIjQuIGzDqXDDqXMiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICI1LiBsw6lww6lzIgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbcOzcmlhZm9nbGFsw6FzaSBoaWJhIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbcOzcmlhZm9nbGFsw6FzaSBoaWJhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIihuaW5jcyBrw6lyZMOpcykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIkphdsOtdMOhcyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MworbXNnaWQgIkNsZWFyIgorbXNnc3RyICJUw7ZybMOpcyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICLDgXRoZWx5ZXrDqXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiTGVmb2dsYWzDoXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIktpdGVyamVzenTDqXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJDc2F0b2zDoXMgYSAvbG9zdCtmb3VuZCBrw7ZueXZ0w6FyYmEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIkzDqXRyZWhvesOhcyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIk1lZ21lbnTDqXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiQ3NvbmvDrXTDoXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEKK21zZ2lkICJDbGVhciBpbm9kZSIKK21zZ3N0ciAiSW5vZGUgdMO2cmzDqXNlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyCittc2dpZCAiQWJvcnQiCittc2dzdHIgIk1lZ3N6YWvDrXTDoXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiU3rDqXR2w6Fnw6FzIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIkZvbHl0YXTDoXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAiVMO2YmJzesO2csO2c2VuIGxlZm9nbGFsdCBibG9ra29rIGtsw7Nub3rDoXNhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2Cittc2dpZCAiRGVsZXRlIGZpbGUiCittc2dzdHIgIkbDoWpsIHTDtnJsw6lzZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NworbXNnaWQgIlN1cHByZXNzIG1lc3NhZ2VzIgorbXNnc3RyICLDnHplbmV0ZWsgZWxueW9tw6FzYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAiVMO2cmzDqXMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjkKK21zZ2lkICJDbGVhciBIVHJlZSBpbmRleCIKK21zZ3N0ciAiSFRyZWUgaW5kZXggdMO2cmzDqXNlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgIsOaanJhbMOpdHJlaG96w6FzIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoTklOQ1MpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIkpBVsONVFZBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiVMOWUsOWTFZFIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICLDgVRIRUxZRVpWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAiTEVGT0dMQUxWQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJLSVRFUkpFU1pUVkUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODUKK21zZ2lkICJSRUNPTk5FQ1RFRCIKK21zZ3N0ciAiw5pKUkFDU0FUT0xWQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIkzDiVRSRUhPWlZBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIk1FR01FTlRWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAiQ1NPTkvDjVRWQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0RFIFTDllLDlkxWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIk1FR1NaQUvDjVRWQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICJTWsOJVFbDgUdWQSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIkZPTFlUQVTDgVMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMKK21zZ2lkICJNVUxUSVBMWS1DTEFJTUVEIEJMT0NLUyBDTE9ORUQiCittc2dzdHIgIlTDlkJCU1rDllLDllNFTiBMRUZPR0xBTFQgQkxPS0tPSyBLTMOTTk9aVkEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkbDgUpMIFTDllLDlkxWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgIkVMTllPTVZBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIlTDllLDlkxWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NworbXNnaWQgIkhUUkVFIElOREVYIENMRUFSRUQiCittc2dzdHIgIkhUUkVFIElOREVYIFTDllLDlkxWRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5OAorbXNnaWQgIldJTEwgUkVDUkVBVEUiCittc2dzdHIgIsOaSlJBIEzDiVRSRSBMRVNaIEhPWlZBIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICIlZyBjc29wb3J0IGJsb2trYml0dMOpcmvDqXBlIG5pbmNzIGEgY3NvcG9ydGJhbiAoJWIgYmxva2spXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIiVnIGNzb3BvcnQgaW5vZGUgYml0dMOpcmvDqXBlIG5pbmNzIGEgY3NvcG9ydGJhbiAoJWIgYmxva2spXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIiVnIGNzb3BvcnQgaW5vZGUgdMOhYmzDoWphIG5pbmNzIGEgY3NvcG9ydGJhbiAoJWIgYmxva2spXG4iCisiRklHWUVMTUVaVEVUw4lTOiBTw5pMWU9TIEFEQVRWRVNaVMOJUyBMRUhFVFPDiUdFUy5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQSBzenVwZXJibG9rayBuZW0gb2x2YXNoYXTDsywgdmFneSBuZW0gw6lydsOpbnllcyBleHQyL2V4dDMvZXh0NCBmw6FqbHJlbmRzemVydCAiCisiw61yXG4iCisibGUuIEhhIGF6IGVzemvDtnogw6lydsOpbnllcyDDqXMgdmFsw7NiYW4gZXh0Mi9leHQzL2V4dDQgZsOhamxyZW5kc3plcnQgdGFydGFsbWF6XG4iCisiKG5lbSBwZWRpZyBzd2FwZXQsIHVmcy10IHZhZ3kgbcOhc3QpLCBha2tvciBhIHN6dXBlcmJsb2trIHPDqXLDvGx0LCDDqXMgIgorInByw7Niw6FsamFcbiIKKyJtZWcgZnV0dGF0bmkgYXogZTJmc2NrLXQgZWd5IGFsdGVybmF0w612IHN6dXBlcmJsb2trIGhhc3puw6FsYXTDoXZhbDpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPGVzemvDtno+XG4iCisiIHZhZ3lcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxlc3prw7Z6PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXIgbcOpcmV0ZSAoYSBzenVwZXJibG9rayBzemVyaW50KSAlYiBibG9ra1xuIgorIkF6IGVzemvDtnogZml6aWthaSBtw6lyZXRlICVjIGJsb2trLlxuIgorIkEgc3p1cGVyYmxva2sgdmFneSBhIHBhcnTDrWNpw7NzIHTDoWJsYSBlZ3lpa2UgdmFsw7NzesOtbsWxbGVnIHPDqXLDvGx0IVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbgorIy4gQC1leHBhbmRlZDogVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuCisjLiBALWV4cGFuZGVkOiBmcm9tIHRoZSBibG9jayBzaXplLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKyJBIHN6dXBlcmJsb2trIGJsb2trbcOpcmV0ZSA9ICViLCBkYXJhYm3DqXJldGUgPSAlYy5cbiIKKyJBeiBlMmZzY2sgZXplbiB2ZXJ6acOzamEgbmVtIHTDoW1vZ2F0amEgYSBibG9ra23DqXJldHTFkWwgZWx0w6lyxZEgZGFyYWJtw6lyZXRldC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja3NfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiQSBzenVwZXJibG9rayBibG9ja3NfcGVyX2dyb3VwIMOpcnTDqWtlICViLCAlYyBoZWx5ZXR0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkEgc3p1cGVyYmxva2sgZmlyc3RfZGF0YV9ibG9jayAlYiwgJWMgaGVseWV0dFxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAKK21zZ2lkICIiCisiQGYgZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXJuZWsgbmluY3MgVVVJRC1qZTsgbMOpdHJlaG96b2sgZWd5ZXQuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlOiBpZiBzZXZlcmFsIGlub2RlIG9yIGJsb2NrIGJpdG1hcCBibG9ja3Mgb3IgcGFydFxuIgorIm9mIHRoZSBpbm9kZSB0YWJsZSByZXF1aXJlIHJlbG9jYXRpb24sIHlvdSBtYXkgd2lzaCB0byB0cnlcbiIKKyJydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgJVMnIG9wdGlvbiBmaXJzdC4gIFRoZSBwcm9ibGVtXG4iCisibWF5IGxpZSBvbmx5IHdpdGggdGhlIHByaW1hcnkgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMsIGFuZFxuIgorInRoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLlxuIgorIlxuIgorbXNnc3RyICIiCisiTWVnamVneXrDqXM6IGhhIHTDtmJiIGlub2RlLSwgdmFneSBibG9ra2JpdHTDqXJrw6lwLCB2YWd5IGF6IGlub2RlIHTDoWJsYVxuIgorInLDqXN6ZSDDoXRoZWx5ZXrDqXN0IGlnw6lueWVsLCBha2tvciBoYXN6bm9zIGxlaGV0IGVsxZFiYiBheiBlMmZzY2sgZnV0dGF0w6FzYVxuIgorImEg4oCeLWIgJVPigJ0ga2FwY3NvbMOzdmFsLiBMZWhldCwgaG9neSBhIHByb2Jsw6ltw6F0IGNzYWsgYXogZWxzxZFkbGVnZXNcbiIKKyJibG9ra2Nzb3BvcnQtbGXDrXLDs2sgb2tvenrDoWssIMOpcyBhIHRhcnRhbMOpayBibG9ra2Nzb3BvcnQtbGXDrXLDs2sgcmVuZGJlbiAiCisidmFubmFrXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICJTw6lyw7xsw6lzIGEgc3p1cGVyYmxva2tiYW4uICglcyA9ICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgZGV2aWNlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBAdjogJW1cbiIKK21zZ3N0ciAiSGliYSBhIGZpemlrYWkgZXN6a8O2eiBtw6lyZXTDqW5layBtZWdoYXTDoXJvesOhc2Frb3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgImF6IGlub2RlLXN6w6FtIGEgc3p1cGVyYmxva2tiYW4gJWksICVqIGhlbHlldHQuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiQSBIdXJkIG5lbSB0w6Ftb2dhdGphIGEgZsOhamx0w61wdXMtamVsbGVtesWRdC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICJBIHN6dXBlcmJsb2trIG5hcGzDs2phIMOpcnbDqW55dGVsZW4gKCVpLiBpbm9kZSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiIgorIkEga8O8bHPFkSBuYXBsw7MgdMO2YmIgZsOhamxyZW5kc3plci1mZWxoYXN6bsOhbMOzdmFsIHJlbmRlbGtlemlrIChuZW0gIgorInTDoW1vZ2F0b3R0KS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2FuJ3QgZmluZCBleHRlcm5hbCBqb3VybmFsXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAzCittc2dpZCAiQ2FuJ3QgZmluZCBleHRlcm5hbCBAalxuIgorbXNnc3RyICJOZW0gdGFsw6FsaGF0w7Mga8O8bHPFkSBuYXBsw7NcbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgYmFkIHN1cGVyYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgYmFkIEBTXG4iCittc2dzdHIgIkEga8O8bHPFkSBuYXBsw7Mgc3p1cGVyYmxva2tqYSBoaWLDoXNcbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZmlsZXN5c3RlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxMworbXNnaWQgIkV4dGVybmFsIEBqIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBAZlxuIgorbXNnc3RyICJBIGvDvGxzxZEgbmFwbMOzIG5lbSB0w6Ftb2dhdGphIGV6dCBhIGbDoWpscmVuZHN6ZXJ0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gam91cm5hbCBzdXBlcmJsb2NrIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgam91cm5hbCAKKyMuIEAtZXhwYW5kZWQ6IGZvcm1hdC5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE4Cittc2dpZCAiIgorIkBmIEBqIEBTIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuIgorIkl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBAaiAiCisiZm9ybWF0LlxuIgorIkl0IGlzIGFsc28gcG9zc2libGUgdGhlIEBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXJuYXBsw7Mgc3p1cGVyYmxva2tqYSBpc21lcmV0bGVuICVOIHTDrXB1c8O6IChuZW0gdMOhbW9nYXRvdHQpLlxuIgorIlZhbMOzc3rDrW7FsSwgaG9neSBleiBheiBlMmZzY2sgcMOpbGTDoW55IHLDqWdpLCDDqXMvdmFneSBuZW0gdMOhbW9nYXRqYSBlenQgYVxuIgorIm5hcGzDs2Zvcm3DoXR1bW90LlxuIgorIkF6IGlzIGxlaGV0LCBob2d5IGEgbmFwbMOzIHN6dXBlcmJsb2tramEgc8OpcsO8bHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNgorbXNnaWQgIkBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIkEgbmFwbMOzIHN6dXBlcmJsb2tramEgc8OpcsO8bHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorbXNnaWQgIkBTIGhhc19AaiBmbGFnIGlzIGNsZWFyLCBidXQgYSBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICJBIHN6dXBlcmJsb2trIGhhc19qb3VybmFsIGplbHrFkWplIHRpc3p0YSwgZGUgamVsZW4gdmFuIG5hcGzDsy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIiIKKyJBIHN6dXBlcmJsb2trIG5lZWRzX3JlY292ZXJ5IGplbHrFkWplIGJlIHZhbiDDoWxsw610dmEsIGRlIG5pbmNzIGplbGVuIG5hcGzDsy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIiIKKyJBIHN6dXBlcmJsb2trIG5lZWRzX3JlY292ZXJ5IGplbHrFkWplIHRpc3p0YSwgZGUgYSBuYXBsw7MgYWRhdG9rYXQgdGFydGFsbWF6LlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICJOYXBsw7MgdGlzenTDrXTDoXNhIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXIgamVsbGVtesWRamVsesWRaSBiZSB2YW5uYWsgw6FsbMOtdHZhLCBkZSAwIHJldsOtemnDs2rDuiAiCisiZsOhamxyZW5kc3plci4gIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiVzIMOhcnZhIGlub2RlOiAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiSWxsZWfDoWxpcyAlQiAoJWIpIHRhbMOhbGhhdMOzIGF6IMOhcnZhICVpLiBpbm9kZS1iYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJNw6FyIG1lZ3Rpc3p0w610b3R0ICVCICglYikgdGFsw6FsaGF0w7MgYXogw6FydmEgJWkuIGlub2RlLWJhbi5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAbyBAaSAlaSBpbiBAUy5cbiIKK21zZ3N0ciAiSWxsZWfDoWxpcyDDoXJ2YSBpbm9kZSAoJWkuKSBhIHN6dXBlcmJsb2trYmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgIklsbGVnw6FsaXMgw6FydmEgaW5vZGUgKCVpLikgYXogw6FydmEgaW5vZGUtb2sgbGlzdMOhasOhYmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJBIG5hcGzDsyBzenVwZXJibG9ra2rDoW4gaXNtZXJldGxlbiwgY3NhayBvbHZhc2hhdMOzIGplbGxlbXrFkWplbHrFkSB2YW4gIgorImJlw6FsbMOtdHZhLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjg2Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJBIG5hcGzDsyBzenVwZXJibG9ra2rDoW4gaXNtZXJldGxlbiwgaW5rb21wYXRpYmlsaXMgamVsbGVtesWRamVsesWRIHZhbiAiCisiYmXDoWxsw610dmEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5MQorbXNnaWQgIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIKK21zZ3N0ciAiQSBuYXBsw7N2ZXJ6acOzdCBleiBheiBlMmZzY2sgbmVtIHTDoW1vZ2F0amEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiQSBuYXBsw7Mgw6F0aGVseWV6w6lzZSBhIC8lcyBhbMOzbCBlZ3kgcmVqdGV0dCBpbm9kZS1yYS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiSGliYSBhIG5hcGzDsyBtb3pnYXTDoXNha29yOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBGb3VuZCBpbnZhbGlkIFYyIGpvdXJuYWwgc3VwZXJibG9jayBmaWVsZHMgKGZyb20gVjEgam91cm5hbCkuXG4KKyMuIEAtZXhwYW5kZWQ6IENsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIGpvdXJuYWwgc3VwZXJibG9jay4uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDYKK21zZ2lkICIiCisiRm91bmQgQG4gVjIgQGogQFMgZmllbGRzIChmcm9tIFYxIEBqKS5cbiIKKyJDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBAaiBAUy4uLlxuIgorIlxuIgorbXNnc3RyICIiCisiw4lydsOpbnl0ZWxlbiBWMiBuYXBsw7NzenVwZXJibG9ray1tZXrFkWsgdGFsw6FsaGF0w7NrIChWMSBuYXBsw7Niw7NsKS5cbiIKKyJNZXrFkWsgdGlzenTDrXTDoXNhIGEgVjEgbmFwbMOzc3p1cGVyYmxva2tvbiB0w7ps4oCmXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJOYXBsw7MgZnV0dGF0w6FzYSBtaW5kZW5rw6lwcCIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICIiCisiQSBoZWx5cmXDoWxsw610w6FzaSBqZWx6xZEgbmluY3MgYmXDoWxsw610dmEgYSB0YXJ0YWzDqWsgc3p1cGVyYmxva2tiYW4sIGVtaWF0dCBhXG4iCisibmFwbMOzIG1pbmRlbmvDqXBwIGZ1dHRhdMOhc3JhIGtlcsO8bC5cbiIKKworIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMjIKK21zZ2lkICIiCisiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5hcGzDsyBpbm9kZS1ibG9rayBpbmZvcm3DoWNpw7NpbmFrIG1lbnTDqXNlLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXJlbiBhIHJlc2l6ZV9pbm9kZSBuaW5jcyBlbmdlZMOpbHllenZlLCBkZSBhICIKKyJzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbiIKKyLDqXJ0w6lrZSAlTjsgw6FtIG51bGxhIGtlbGxlbmUgbGVneWVuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZV9pbm9kZSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgaW5vZGUgaXMgbm9uLXplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzMzCittc2dpZCAiUmVzaXplX0BpIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBAaSBpcyBub24temVyby4gICIKK21zZ3N0ciAiUmVzaXplX2lub2RlIG5pbmNzIGVuZ2Vkw6lseWV6dmUsIGRlIGF6IMOhdG3DqXJldGV6w6lzaSBpbm9kZSBuZW0gbnVsbGEuICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzgKK21zZ2lkICJSZXNpemUgQGkgbm90IHZhbGlkLiAgIgorbXNnc3RyICJBeiDDoXRtw6lyZXRlesOpc2kgaW5vZGUgbmVtIMOpcnbDqW55ZXMuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJBIHN6dXBlcmJsb2trIHV0b2xzw7MgY3NhdG9sw6FzaSBpZGVqZVxuIgorIigldCwgbW9zdCA9ICVUKSBhIGrDtnbFkWJlbiB2YW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisiQSBzenVwZXJibG9rayB1dG9sc8OzIMOtcsOhc2kgaWRlamVcbiIKKyIoJXQsIG1vc3QgPSAlVCkgYSBqw7Z2xZFiZW4gdmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICJBIHN6dXBlcmJsb2trdGlwcCBhIGvDvGxzxZEgc3p1cGVyYmxva2tob3ogJVgga2VsbGVuZSBsZWd5ZW4uICIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRpcmhhc2ggdGlwcCBob3p6w6FhZMOhc2EgYSBmw6FqbHJlbmRzemVyaGV6LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIiVnIGNzb3BvcnRsZcOtcsOzIGVsbGVuxZFyesWRw7Zzc3plZ2UgJTA0eCBhIHbDoXJ0ICUwNHkgaGVseWV0dC4gIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIiVnIGNzb3BvcnRsZcOtcsOzIGluaWNpYWxpesOhbGF0bGFua8OpbnQgdmFuIG1lZ2plbMO2bHZlIGEgamVsbGVtesWRIG1lZ2Fkw6FzYSAiCisibsOpbGvDvGwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgIiVnIGNzb3BvcnRsZcOtcsOzIGhhc3puw6FsYXRvbiBrw612w7xsaSBpbm9kZSBzesOhbWEgw6lydsOpbnl0ZWxlbjogJWIuICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIkF6IHV0b2xzw7MgY3NvcG9ydGJsb2trLWJpdHTDqXJrw6lwIGluaWNpYWxpesOhbGF0bGFuLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdHJhbnNhY3Rpb24gJWkgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC5cbiIKK21zZ3N0ciAiQSh6KSAlaS4gbmFwbMOzdHJhbnpha2Npw7Mgc8OpcsO8bHQsIGF6IMO6anJhasOhdHN6w6FzIG1lZ3N6YWvDrXR2YS5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiQSB0ZXN0X2ZzIGplbHrFkSBiZcOhbGzDrXR2YSAow6lzIGF6IGV4dDQgZWzDqXJoZXTFkSkuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkEgc3p1cGVyYmxva2sgdXRvbHPDsyBjc2F0b2zDoXNpIGlkZWplIGEgasO2dsWRYmVuIHZhbi5cbiIKKyJcdChlZ3kgbmFwbsOhbCBrZXZlc2ViYmVsLCB2YWzDs3N6w61uxbFsZWcgYSBoYXJkdmVyw7NyYSBoaWLDoXMgYmXDoWxsw610w6FzYSBtaWF0dClcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5NworbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkEgc3p1cGVyYmxva2sgdXRvbHPDsyDDrXLDoXNpIGlkZWplIGEgasO2dsWRYmVuIHZhbi5cbiIKKyJcdChlZ3kgbmFwbsOhbCBrZXZlc2ViYmVsLCB2YWzDs3N6w61uxbFsZWcgYSBoYXJkdmVyw7NyYSBoaWLDoXMgYmXDoWxsw610w6FzYSBtaWF0dClcbiIKKworIy4gQC1leHBhbmRlZDogT25lIG9yIG1vcmUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDAzCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIkxlZ2Fsw6FiYiBlZ3kgYmxva2tjc29wb3J0bGXDrXLDsyBlbGxlbsWRcnrFkcO2c3N6ZWdlIMOpcnbDqW55dGVsZW4uICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiQSBzemFiYWQgaW5vZGUtb2sgc3rDoW3DoW5hayBiZcOhbGzDrXTDoXNhIGVycmU6ICVqICh2b2x0OiAlaSlcbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGJsb2NrcyBjb3VudCB0byAlYyAod2FzICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxMworbXNnaWQgIlNldHRpbmcgZnJlZSBAYnMgY291bnQgdG8gJWMgKHdhcyAlYilcbiIKK21zZ3N0ciAiQSBzemFiYWQgYmxva2tvayBzesOhbcOhbmFrIGJlw6FsbMOtdMOhc2EgZXJyZTogJWMgKHZvbHQ6ICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4Cittc2dpZCAiTWFraW5nIEBxIEBpICVpICglUSkgaGlkZGVuLlxuIgorbXNnc3RyICIiCisiQSBrdsOzdGEgaW5vZGU6ICVpICglUSkgbWVnamVsw7Zsw6lzZSByZWp0ZXR0a8OpbnQuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiQSBzenVwZXJibG9rayDDqXJ2w6lueXRlbGVuIE1NUC1ibG9ra2FsIHJlbmRlbGtlemlrLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiQSBzenVwZXJibG9rayDDqXJ2w6lueXRlbGVuIE1NUC1tYWdpYyBiw6FqdG9ra2FsIHJlbmRlbGtlemlrLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisiQSBzenVwZXJibG9rayBtZXRhZGF0YV9jc3VtIGplbGxlbXrFkWplIGVsYXZ1bHR0w6EgdGVzemkgYXogdW5pbml0X2JnLXQuICIKKyJNaW5ka8OpdCBqZWxsZW16xZEgbmVtIGxlaGV0IGVneXN6ZXJyZSBiZcOhbGzDrXR2YS4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKK21zZ2lkICJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIgorbXNnc3RyICIiCisiQSBzenVwZXJibG9rayBNTVAgYmxva2sgZWxsZW7FkXJ6xZHDtnNzemVnZSBuZW0gZmVsZWwgbWVnIGF6IE1NUCBibG9ra25hay4gIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1NworbXNnaWQgIkBTIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgIgorbXNnc3RyICIiCisiQSA2NCBiaXRlcyBzenVwZXJibG9ra8O6IGbDoWpscmVuZHN6ZXJla25layBleHRlbnRla3JlIHZhbiBzesO8a3PDqWfDvGsgYSB0ZWxqZXMgIgorImxlbWV6IGVsw6lyw6lzw6loZXouICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIkEgRmlyc3RfbWV0YV9iZyB0w7psIG5hZ3kuICglTiwgYSBtYXhpbXVtIMOpcnTDqWs6ICVnKS4gIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NjcKK21zZ2lkICJFeHRlcm5hbCBAaiBAUyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAUy4gICIKK21zZ3N0ciAiIgorIkEga8O8bHPFkSBuYXBsw7Mgc3p1cGVyYmxva2sgZWxsZW7FkXJ6xZHDtnNzemVnZSBuZW0gZmVsZWwgbWVnIGEgc3p1cGVyYmxva2tuYWsuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKyJhIHN6dXBlcmJsb2trIG1ldGFkYXRhX2NzdW1fc2VlZCBqZWxsZW16xZFqZSBuZW0gc3rDvGtzw6lnZXMgYSBtZXRhZGF0YV9jc3VtICIKKyJuw6lsa8O8bC4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorIkhpYmEgYSBrdsOzdGEga29udGV4dHVzIGVsxZFrw6lzesOtdMOpc2Vrb3IgYSB0w6Ftb2dhdMOzIHByb2dyYW1rw7ZueXZ0w6FyYmFuOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICIxLiBsw6lww6lzOiBpbm9kZS1vaywgYmxva2tvayDDqXMgbcOpcmV0ZWsgZWxsZW7FkXJ6w6lzZVxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiYSBnecO2a8OpciBpbm9kZSBuZW0ga8O2bnl2dMOhci4gIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIiIKKyJhIGd5w7Zrw6lyIGlub2RlIGR0aW1lIMOpcnTDqWtlIGJlIHZhbiDDoWxsw610dmEgKHZhbMOzc3rDrW7FsWxlZyBhIHLDqWdpIG1rZTJmcyAiCisibWlhdHQpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJBKHopICVpLiBmZW5udGFydG90dCBpbm9kZSAoJVEpIMOpcnbDqW55dGVsZW4gbcOzZGRhbCByZW5kZWxrZXppay4gIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiYSh6KSAlaS4gdMO2csO2bHQgaW5vZGUgZHRpbWUtamEgbnVsbGEuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgaGFzem7DoWxhdGJhbiB2YW4sIGRlIGEgZHRpbWUgYmUgdmFuIMOhbGzDrXR2YS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgbnVsbGEgaG9zc3rDunPDoWfDuiBrw7ZueXZ0w6FyLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiJWcgY3NvcG9ydCBibG9ra2JpdHTDqXJrw6lwZSBpdHQ6ICViIG3DoXMgZsOhamxyZW5kc3plcmJsb2trYWwgw7x0a8O2emlrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiVnIGNzb3BvcnQgaW5vZGUgYml0dMOpcmvDqXBlIGl0dDogJWIgbcOhcyBmw6FqbHJlbmRzemVyYmxva2thbCDDvHRrw7Z6aWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICIlZyBjc29wb3J0IGlub2RlIHTDoWJsw6FqYSBpdHQ6ICViIG3DoXMgZsOhamxyZW5kc3plcmJsb2trYWwgw7x0a8O2emlrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICIlZyBjc29wb3J0IGJsb2trYml0dMOpcmvDqXBlICglYikgaGliw6FzLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIiVnIGNzb3BvcnQgaW5vZGUgYml0dMOpcmvDqXBlICglYikgaGliw6FzLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICIlaS4gaW5vZGU6IGlfc2l6ZT0lSXMsIGRlICVOIGtlbGxlbmUgbGVneWVuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiJWkuIGlub2RlOiBpX2Jsb2Nrcz0lSWIsIGRlICVOIGtlbGxlbmUgbGVneWVuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICJpbGxlZ8OhbGlzICVCICglYikgYSh6KSAlaS4gaW5vZGUtYmFuLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKK21zZ2lkICIlQiAoJWIpIG92ZXJsYXBzIEBmIG1ldGFkYXRhIGluIEBpICVpLiAgIgorbXNnc3RyICJBICVCICglYikgw6F0ZmVkaSBhIGbDoWpscmVuZHN6ZXIgbWV0YWFkYXRhaXQgYSh6KSAlaS4gaW5vZGUtYmFuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiJWkuIGlub2RlIGlsbGVnw6FsaXMgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIlTDumwgc29rIGlsbGVnw6FsaXMgYmxva2sgYSh6KSAlaS4gaW5vZGUtYmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJpbGxlZ8OhbGlzICVCICglYikgYSBoaWLDoXMgYmxva2sgaW5vZGUtYmFuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkEgaGliw6FzIGJsb2trIGlub2RlIGlsbGVnw6FsaXMgYmxva2tva2FsIHJlbmRlbGtlemlrLiAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJUw7ZiYnN6w7ZyIHN6ZXJlcGzFkSB2YWd5IGhpYsOhcyBibG9rayB2YW4gaGFzem7DoWxhdGJhbiFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAiQSBoaWLDoXMgJWIgYmxva2sgaGliw6FzYmxva2staW5vZGUgaW5kaXJla3QgYmxva2vDqW50IHZhbiBoYXN6bsOhbGF0YmFuLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkEgaGliw6FzIGJsb2trIGlub2RlIHZhbMOzc3rDrW7FsWxlZyBtZWdzw6lyw7xsdC4gTW9zdCDDoWxsam9uIG1lZyxcbiIKKyLDqXMgZnV0dGFzc2EgYXog4oCeZTJmc2NrIC1j4oCdIHBhcmFuY3NvdCBhIGhpYsOhcyBibG9ra29rIGtlcmVzw6lzw6loZXpcbiIKKyJhIGbDoWpscmVuZHN6ZXJlbi5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IElmIHRoZSBibG9jayBpcyByZWFsbHkgYmFkLCB0aGUgZmlsZXN5c3RlbSBjYW4gbm90IGJlIGZpeGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxMAorbXNnaWQgIiIKKyJcbiIKKyJJZiB0aGUgQGIgaXMgcmVhbGx5IGJhZCwgdGhlIEBmIGNhbiBub3QgYmUgZml4ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJIYSBhIGJsb2trIHZhbMOzYmFuIGhpYsOhcywgYWtrb3IgYSBmw6FqbHJlbmRzemVyIG5lbSBqYXbDrXRoYXTDsy5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisiRXp0IGEgYmxva2tvdCBlbHTDoXZvbMOtdGhhdGphIGEgaGliw6FzIGJsb2trb2sgbGlzdMOhasOhcsOzbCwgw6lzXG4iCisicmVtw6lsaGV0aSwgaG9neSBhIGJsb2trIHZhbMOzasOhYmFuIGrDsywgZGUgZXJyZSBuaW5jcyBnYXJhbmNpYS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiQXogZWxzxZFkbGVnZXMgc3p1cGVyYmxva2sgKCViKSBhIGhpYsOhcyBibG9ra29rIGxpc3TDoWrDoW4gdmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAiIgorIkF6IGVsc8WRZGxlZ2VzIGNzb3BvcnRsZcOtcsOza2JhbiBsw6l2xZEgYmxva2sgKCViKSBhIGhpYsOhcyBibG9ra29rIGxpc3TDoWrDoW4gdmFuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJGaWd5ZWxtZXp0ZXTDqXM6IEEoeikgJWcgY3NvcG9ydCBzenVwZXJibG9ra2phICglYikgaGliw6FzLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IEEoeikgJWcgY3NvcG9ydCBjc29wb3J0bGXDrXLDs2luYWsgbcOhc29sYXRhIGhpYsOhcyBibG9ra290ICglYikgIgorInRhcnRhbG1hei5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorIlByb2dyYW1vesOhc2kgaGliYT8gQSh6KSAlYi4gYmxva2sgb2sgbsOpbGvDvGwgbGVmb2dsYWx2YSBhIHByb2Nlc3NfYmFkX2Jsb2NrLSIKKyJiYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIiIKKyJoaWJhICVOIGZvbHl0b25vcyBibG9rayBsZWZvZ2xhbMOhc2Frb3IgYSh6KSAlZy4gYmxva2tjc29wb3J0YmFuICVzIHN6w6Ftw6FyYTogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBiIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuIgorbXNnc3RyICJoaWJhIGEgYmxva2twdWZmZXIgbGVmb2dsYWzDoXNha29yICVzIMOhdGhlbHllesOpc8OpaGV6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiJWcgY3NvcG9ydGLDs2wgJXMgw6F0aGVseWV6w6lzZSBpbm5lbjogJWIgaWRlOiAlY+KAplxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIiVnIGNzb3BvcnRiw7NsICVzIMOhdGhlbHllesOpc2UgaWRlOiAlY+KAplxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzOiBuZW0gb2x2YXNoYXTDsyAlYiBibG9rayBlYmLFkWw6ICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgYmxvY2sgJWIgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3NAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBAYiAlYiBmb3IgJXM6ICVtXG4iCittc2dzdHIgIkZpZ3llbG1lenRldMOpczogbmVtIMOtcmhhdMOzICViIGJsb2trIGVoaGV6OiAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiaGliYSBheiBpbm9kZSBiaXR0w6lya8OpcCBsZWZvZ2xhbMOhc2Frb3IgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODQKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJoaWJhIGEgYmxva2tiaXR0w6lya8OpcCBsZWZvZ2xhbMOhc2Frb3IgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgImhpYmEgYXogaWNvdW50IGxpbmtpbmZvcm3DoWNpw7NrIGxlZm9nbGFsw6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJoaWJhIGEga8O2bnl2dMOhcmJsb2trdMO2bWIgbGVmb2dsYWzDoXNha29yOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgQGlzICglaSk6ICVtXG4iCittc2dzdHIgIkhpYmEgYXogaW5vZGUtb2sgdml6c2fDoWxhdGFrb3IgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkhpYmEgYSh6KSAlaS4gaW5vZGUgYmxva2tqYWluYWsgYmVqw6Fyw6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICJIaWJhIGF6IGlub2RlIHN6w6FtaW5mb3Jtw6FjacOzaW5hayB0w6Fyb2zDoXNha29yIChpbm9kZT0laSwgc3rDoW09JU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGRpcmVjdG9yeSBibG9jayBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGJsb2NrPSViLCBudW09JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcxNAorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGQgQGIgaW5mb3JtYXRpb24gKEBpPSVpLCBAYj0lYiwgbnVtPSVOKTogJW1cbiIKK21zZ3N0ciAiIgorIkhpYmEgYSBrw7ZueXZ0w6FyYmxva2staW5mb3Jtw6FjacOzayB0w6Fyb2zDoXNha29yIChpbm9kZT0laSwgYmxva2s9JWIsIHN6w6FtPSVOKTogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkhpYmEgYSh6KSAlaS4gaW5vZGUgb2x2YXPDoXNha29yOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSBpbWFnaWMgamVsesWRamUgYmXDoWxsw610dmEuICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIkEgc3BlY2nDoWxpcyBmw6FqbCAoZXN6a8O2ei9mb2dsYWxhdC9maWZvL3N6aW1saW5rKSBmw6FqbCAoaW5vZGU6ICVpKVxuIgorIm1lZ3bDoWx0b3p0YXRoYXRhdGxhbiB2YWd5IGNzYWsgaG96esOhZsWxesOpcyBqZWx6xZFqZSBiZSB2YW4gw6FsbMOtdHZhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiIgorIkEgc3BlY2nDoWxpcyBmw6FqbCAoZXN6a8O2ei9mb2dsYWxhdC9maWZvL3N6aW1saW5rKSBmw6FqbCAlaS4gaW5vZGUtamEgbmVtIG51bGxhICIKKyJtw6lyZXTFsS4gIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJhIG5hcGzDsyBpbm9kZSBuaW5jcyBoYXN6bsOhbGF0YmFuLCBkZSBhZGF0b2thdCB0YXJ0YWxtYXouICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorbXNnaWQgIkBqIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgImEgbmFwbMOzIG5lbSBub3Jtw6FsIGbDoWpsLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgcsOpc3plIGF6IGVsw6FydnVsdCBpbm9kZS1vayBsaXN0w6Fqw6FuYWsuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICJlZ3kgc8OpcsO8bHQsIMOhcnZhIGzDoW5jb2x0IGxpc3RhIHLDqXN6w6l0IGFsa290w7MgaW5vZGUtb2sgbWVndGFsw6FsdmEuICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKK21zZ2lkICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKK21zZ3N0ciAiaGliYSBhIHJlZmNvdW50IHN0cnVrdMO6cmEgbGVmb2dsYWzDoXNha29yICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGZvciBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViIGZvciBAaSAlaS4gICIKK21zZ3N0ciAiSGliYSBhIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9rayAoJWIpIG9sdmFzw6FzYWtvciBhKHopICVpLiBpbm9kZS1ob3ouIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgYsWRdsOtdGV0dCBhdHRyaWLDunR1bWJsb2tramEgKCViKSBoaWLDoXMgLiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkhpYmEgYSBixZF2w610ZXR0ICViIGF0dHJpYsO6dHVtYmxva2sgb2x2YXPDoXNha29yICglbSkuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5MAorbXNnaWQgIkBhIEBiICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIEBzICVOLiAgIgorbXNnc3RyICJhKHopICViIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9rayByZWZlcmVuY2lhc3rDoW1hICVyIGEgdsOhcnQgJU4gaGVseWV0dC4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzk1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJIaWJhIGEgYsWRdsOtdGV0dCBhdHRyaWLDunR1bWJsb2trICglYikgw61yw6FzYWtvciAoJW0pLiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiYSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYmxva2sgKCViKSBoX2Jsb2NrcyDDqXJ0w6lrZSA+IDEuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODA1Cittc2dpZCAiQEEgQGEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICIiCisiaGliYSBhIGLFkXbDrXRldHQgYXR0cmliw7p0dW1yw6lnacOzIGZvZ2xhbMOhc2kgc3RydWt0w7pyw6Fqw6FuYWsgbGVmb2dsYWzDoXNha29yLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJhIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9rayAoJWIpIHPDqXLDvGx0IChmb2dsYWzDoXPDvHRrw7Z6w6lzKS4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJhIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9rayAoJWIpIHPDqXLDvGx0ICjDqXJ2w6lueXRlbGVuIG7DqXYpLSIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiYSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYmxva2sgKCViKSBzw6lyw7xsdCAow6lydsOpbnl0ZWxlbiDDqXJ0w6lrKS4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgImEoeikgJWkuIGlub2RlIHTDumwgbmFneS4gIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJBICVCICglYikgbWlhdHQgYSBrw7ZueXZ0w6FyIHTDumwgbmFneS4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiQSAlQiAoJWIpIG1pYXR0IGEgZsOhamwgdMO6bCBuYWd5LiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJBICVCICglYikgbWlhdHQgYSBzemltbGluayB0w7psIG5hZ3kuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgSU5ERVhfRkwgamVsesWRamUgYmUgdmFuIMOhbGzDrXR2YSBlZ3kgaHRyZWUtdCBuZW0gdMOhbW9nYXTDsyAiCisiZsOhamxyZW5kc3plcmVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiYSh6KSAlaSBpbm9kZSBJTkRFWF9GTCBqZWx6xZFqZSBiZSB2YW4gw6FsbMOtdHZhLCBkZSBuZW0ga8O2bnl2dMOhci5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiYSh6KSAlaS4gSFRSRUUga8O2bnl2dMOhciBpbm9kZSBnecO2a8OpciBjc29tw7Nwb250amEgw6lydsOpbnl0ZWxlbi5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1OQorbXNnaWQgIkBoICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuIgorbXNnc3RyICJhKHopICVpLiBIVFJFRSBrw7ZueXZ0w6FyIGhhc2ggdmVyemnDs2phIG5lbSB0w6Ftb2dhdG90dCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBIVFJFRSBrw7ZueXZ0w6FyIGlub2RlIGlua29tcGF0aWJpbGlzIGh0cmVlIGd5w7Zrw6lyY3NvbcOzcG9udC1qZWx6xZF0ICIKKyJoYXN6bsOhbC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiYSh6KSAlaS4gSFRSRUUga8O2bnl2dMOhciBpbm9kZSBmYW3DqWx5c8OpZ2UgKCVOKSB0w7psIG5hZ3lcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIkEgaGliw6FzIGJsb2trIGlub2RlIGluZGlyZWt0IGJsb2tramEgKCViKSDDvHRrw7Z6aWsgYVxuIgorImbDoWpscmVuZHN6ZXIgbWV0YWFkYXRhaXZhbC4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6ZSBAaSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4iCittc2dzdHIgIkF6IMOhdG3DqXJldGV6w6lzaSBpbm9kZSAow7pqcmEpbMOpdHJlaG96w6FzYSBzaWtlcnRlbGVuOiAlbS4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4NQorbXNnaWQgIkBpICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgZXh0cmEgbcOpcmV0ZSAoJUlTKSDDqXJ2w6lueXRlbGVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5MAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSBixZF2w610ZXR0IGF0dHJpYsO6dHVtw6FuYWsgbsOpdmhvc3N6YSAoJU4pIMOpcnbDqW55dGVsZW5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgYsWRdsOtdGV0dCBhdHRyaWLDunR1bcOhbmFrIMOpcnTDqWtlbHRvbMOhc2EgKCVOKSDDqXJ2w6lueXRlbGVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBixZF2w610ZXR0IGF0dHJpYsO6dHVtw6FuYWsgw6lydMOpa2Jsb2tramEgKCVOKSDDqXJ2w6lueXRlbGVuICgwIGtlbGwgIgorImxlZ3llbilcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgImEoeikgJWkuIGlub2RlIGLFkXbDrXRldHQgYXR0cmliw7p0dW3DoW5hayDDqXJ0w6lrbcOpcmV0ZSAoJU4pIMOpcnbDqW55dGVsZW5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgImEoeikgJWkuIGlub2RlIGLFkXbDrXRldHQgYXR0cmliw7p0dW3DoW5hayBoYXNoZSAoJU4pIMOpcnbDqW55dGVsZW5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorbXNnaWQgIkBpICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbiIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgZWd5ICVJdCwgZGUgw7pneSB0xbFuaWssIHZhbMOzasOhYmFuIGVneSBrw7ZueXZ0w6FyLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJIaWJhIGF6IGV4dGVudCBmYSBvbHZhc8Ohc2Frb3IgYSh6KSAlaS4gaW5vZGUtYmFuOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIGlub2RlICVpXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyNQorbXNnaWQgIiIKKyJGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCittc2dzdHIgIiIKKyJOZW0gc2lrZXLDvGx0IGF6IGV4dGVudGVrIGJlasOhcsOhc2EgYSh6KSAlaS4gaW5vZGUtYmFuXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgw6lydsOpbnl0ZWxlbiBleHRlbnRldCB0YXJ0YWxtYXpcbiIKKyJcdChsb2dpa2FpIGJsb2trOiAlYywgw6lydsOpbnl0ZWxlbiBmaXppa2FpIGJsb2trOiAlYiwgaG9zc3o6ICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlIMOpcnbDqW55dGVsZW4gZXh0ZW50ZXQgdGFydGFsbWF6XG4iCisiXHQobG9naWthaSBibG9razogJWMsIGZpemlrYWkgYmxva2s6ICViLCDDqXJ2w6lueXRlbGVuIGhvc3N6OiAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBFWFRFTlRTX0ZMIGplbHrFkWplIGJlIHZhbiDDoWxsw610dmEgZWd5IGV4dGVudGVrZXQgbmVtIHTDoW1vZ2F0w7MgIgorImbDoWpscmVuZHN6ZXJlbi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBleHRlbnQgZm9ybcOhdHVtw7osIGRlIGEgc3p1cGVyYmxva2tiYW4gbmluY3MgRVhURU5UUyBqZWxsZW16xZFcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iCittc2dzdHIgImEoeikgJWkuIGlub2RlLWLDs2wgaGnDoW55emlrIGF6IEVYVEVOVF9GTCwgZGUgZXh0ZW50IGZvcm3DoXR1bcO6XG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiYSh6KSAlaS4gZ3lvcnMgc3ppbWxpbmtoZXogYmUgdmFuIMOhbGzDrXR2YSBheiBFWFRFTlRfRkwuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgaGFzem7DoWxhdG9uIGvDrXbDvGxpIGV4dGVudGVrZXQgdGFydGFsbWF6XG4iCisiXHQow6lydsOpbnl0ZWxlbiBsb2dpa2FpIGJsb2trOiAlYywgZml6aWthaSBibG9razogJWIsIGhvc3N6OiAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjUKK21zZ2lkICJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgw6lydsOpbnl0ZWxlbiBleHRlbnQgY3NvbcOzcG9udG90IHRhcnRhbG1heiAoJWIuIGJsaywgJWMuIGxibGspXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiIgorIkhpYmEgYSByw6lzembDvHJ0IGJsb2trYml0dMOpcmvDqXDDqW5layDDoXRhbGFrw610w6FzYWtvcjogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJhIGt2w7N0YSBpbm9kZSBuZW0gbm9ybcOhbCBmw6FqbC4gIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiYSBrdsOzdGEgaW5vZGUgbmluY3MgaGFzem7DoWxhdGJhbiwgZGUgYWRhdG9rYXQgdGFydGFsbWF6LiAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiYSBrdsOzdGEgaW5vZGUgbMOhdGhhdMOzIGEgZmVsaGFzem7DoWzDsyBzesOhbcOhcmEuICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIkEgaGliw6FzIGJsb2trb2sgaW5vZGUgw6lydsOpbnl0ZWxlbm5layB0xbFuaWsuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBudWxsYSBob3NzesO6c8OhZ8O6IGV4dGVudGV0IHRhcnRhbG1helxuIgorIlx0KMOpcnbDqW55dGVsZW4gbG9naWthaSBibG9razogJWMsIGZpemlrYWkgYmxva2s6ICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwMAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgImEoeikgJWkuIGlub2RlIGzDoXRzesOzbGFnIHN6ZW1ldGV0IHRhcnRhbG1hei4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGkuICAiCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSDDoXRtZWd5IGF6IGVsbGVuxZFyesOpc2VrZW4sIGRlIGF6IGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsICIKKyJtZWcgZWd5IGlub2RlLW5hay4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgQGEgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYSBzw6lyw7xsdCAoZm9nbGFsw6Fzw7x0a8O2esOpcykuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlIGV4dGVudGJsb2tramEgw6F0bWVneSBheiBlbGxlbsWRcnrDqXNla2VuLCBkZSBuZW0gZmVsZWwgbWVnIGVneSAiCisiZXh0ZW50bmVrXG4iCisiXHQobG9naWthaSBibG9razogJWMsIGZpemlrYWkgYmxva2s6ICViLCBob3NzejogJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAyNworbXNnaWQgIkBpICVpIEBhIEBiICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAYi4gICIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9ra2phICglYikgw6F0bWVneSBheiBlbGxlbsWRcnrDqXNla2VuLCBkZSAiCisiYXogZWxsZW7FkXJ6xZHDtnNzemVnZSBuZW0gZmVsZWwgbWVnIGVneSBibG9ra25hay4gIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgJU4gYmVsc8WRIGV4dGVudCBjc29tw7Nwb250IHN6aW50amU6XG4iCisiQSBsb2dpa2FpICViIGtlemRldCBuZW0gZWd5ZXppayBhIGvDtnZldGtlesWRIHN6aW50ICVjIGxvZ2lrYWkga2V6ZGV0w6l2ZWwuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgZXh0ZW50amVpIHbDqWdlIG1lZ2hhbGFkamEgYXogZW5nZWTDqWx5ZXpldHQgw6lydMOpa2V0XG4iCisiXHQobG9naWthaSBibG9razogJWMsIGZpemlrYWkgYmxva2s6ICViLCBob3NzejogJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0NQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlIGJlw6FneWF6b3R0IGFkYXRva2F0IHRhcnRhbG1heiwgZGUgYSBzenVwZXJibG9ra2JhbiBuaW5jcyAiCisiSU5MSU5FX0RBVEEgamVsbGVtesWRXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgSU5MSU5FX0RBVEFfRkwgamVsesWRdmVsIHJlbmRlbGtlemlrIGVneSBiZcOhZ3lhem90dCBhZGF0b2thdCAiCisibmVtIHTDoW1vZ2F0w7MgZsOhamxyZW5kc3plcmVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlICViIGJsb2tramEga3JpdGlrdXMgbWV0YWFkYXRva2thbCDDvHRrw7Z6aWssIGJsb2trZWxsZW7FkXJ6w6lzZWsgIgorImtpaGFnecOhc2EuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworbXNnaWQgIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIKK21zZ3N0ciAiIgorImEoeikgJWkuIGvDtm55dnTDoXIgaW5vZGUgJWIgYmxva2tqw6FuYWsgYSh6KSAlYy4gYmxva2tuw6FsIGtlbGxlbmUgbGVubmllLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICIiCisiYSh6KSAlaS4ga8O2bnl2dMOhciBpbm9kZSBpbmljaWFsaXrDoWxhdGxhbm5hayBqZWzDtmx0IGV4dGVudGV0IHRhcnRhbG1heiBhKHopICIKKyIlYy4gYmxva2tuw6FsLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGxvZ2ljYWwgYmxvY2sgJWIgKHBoeXNpY2FsIGJsb2NrICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFdpbGwgZml4IGluIHBhc3MgMUIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3MworbXNnaWQgIiIKKyJAaSAlaSBsb2dpY2FsIEBiICViIChwaHlzaWNhbCBAYiAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuIgorIldpbGwgZml4IGluIHBhc3MgMUIuXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBsb2dpa2FpICViIGJsb2tramEgKCVjLiBmaXppa2FpIGJsb2trKSBtZWdzw6lydGkgYSAiCisiZsO8cnRmb2dsYWzDoXNpIHN6YWLDoWx5b2thdC5cbiIKKyJBeiAxQiBsw6lww6lzYmVuIGphdsOtdMOhc3JhIGtlcsO8bC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgSU5MSU5FX0RBVEFfRkwgamVsesWRdmVsIHJlbmRlbGtlemlrLCBkZSBhIGLFkXbDrXRldHQgYXR0cmliw7p0dW0gIgorIm5lbSB0YWzDoWxoYXTDsy4gIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGZpbGUgKGlub2RlICVpKSBoYXMgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJBIHNwZWNpw6FsaXMgZsOhamwgKGVzemvDtnovZm9nbGFsYXQvZmlmbykgZsOhamwgKGlub2RlOiAlaSlcbiIKKyJleHRlbnRzIHZhZ3kgYmXDoWd5YXpvdHQgYWRhdG9rIGplbHrFkWplIGJlIHZhbiDDoWxsw610dmEuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSByZW5kZWxrZXppayBleHRlbnQgZmVqbMOpY2NlbCwgZGUgYSBiZcOhZ3lhem90dCBhZGF0b2sgamVsesWRIGJlICIKKyJ2YW4gw6FsbMOtdHZhLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorImEoeikgJWkuIGlub2RlIMO6Z3kgdMWxbmlrIGJlw6FneWF6b3R0IGFkYXRva2thbCByZW5kZWxrZXppaywgZGUgYXogZXh0ZW50ICIKKyJqZWx6xZEgYmUgdmFuIMOhbGzDrXR2YS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSDDumd5IHTFsW5payBibG9ra3TDqXJrw6lwcGVsIHJlbmRlbGtlemlrLCBkZSBhIGJlw6FneWF6b3R0IGFkYXRvayAiCisiw6lzIGF6IGV4dGVudCBqZWx6xZEgYmUgdmFuIMOhbGzDrXR2YS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisiYSh6KSAlaS4gaW5vZGUgYmXDoWd5YXpvdHQgYWRhdG9rIMOpcyBleHRlbnQgamVsesWRaSBiZSB2YW5uYWsgw6FsbMOtdHZhLCBkZSBheiAiCisiaV9ibG9jayBzemVtZXRldCB0YXJ0YWxtYXouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisiQSBoaWLDoXMgYmxva2tvayBsaXN0w6FqYSBzemVyaW50IGEgaGliw6FzIGJsb2trb2sgbGlzdMOhasOhbmFrIGlub2RlLWphIGhpYsOhcy4gIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVudCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExNAorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiaGliYSBheiBleHRlbnRyw6lnacOzIGZvZ2xhbMOhc2kgc3RydWt0w7pyw6Fqw6FuYWsgbGVmb2dsYWzDoXNha29yLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYSBkdXBsaWNhdGUgQHggbWFwcGluZ1xuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSB0w7ZiYnN6w7Zyw7ZzIGV4dGVudGxla8OpcGV6w6lzdCB0YXJ0YWxtYXpcbiIKKyJcdChsb2dpa2FpIGJsb2trOiAlYywgw6lydsOpbnl0ZWxlbiBmaXppa2FpIGJsb2trOiAlYiwgaG9zc3o6ICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiaGliYSBtZW3Ds3JpYSBmb2dsYWzDoXNha29yIGEgdGl0a29zw610b3R0IGvDtm55dnTDoXJsaXN0YSBzesOhbcOhcmFcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgImEoeikgJWkuIGlub2RlIGV4dGVudGbDoWphIHNla8OpbHllYmIgbGVoZXRuZSAoJWI7IGxlaGV0bmUgPD0gJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKyJhKHopICVpLiBpbm9kZSBhIGJpZ2FsbG9jIGbDoWpscmVuZHN6ZXJlbiBuZW0gbGVoZXQgYmxva2tsZWvDqXBlesOpcyBhbGFueWEuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiYSh6KSAlaS4gaW5vZGUgc8OpcsO8bHQgZXh0ZW50ZmVqbMOpY2V0IHRhcnRhbG1hei4gIgorCisjLiBALWV4cGFuZGVkOiBUaW1lc3RhbXAocykgb24gaW5vZGUgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRpbWVzdGFtcChzKSBvbiBAaSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuIgorbXNnc3RyICIiCisiQSh6KSAlaS4gaW5vZGUgMjMxMC0wNC0wNCB1dMOhbmkgaWTFkWLDqWx5ZWdlaSB2YWzDs3N6w61uxbFsZWcgMTk3MCBlbMWRdHRpZWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlRvdsOhYmJpIGzDqXDDqXNlayBmdXR0YXTDoXNhIGEgdMO2YmIgaW5vZGUgw6FsdGFsIGJpcnRva29sdCBibG9ra29rICIKKyJtZWdvbGTDoXPDoWhvei4uLlxuIgorIjFCIGzDqXDDqXM6IHTDtmJic3rDtnLDtnNlbiBiaXJ0b2tvbHQgYmxva2tvayBpc23DqXRlbHQga2VyZXPDqXNlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgJWk6CisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICJ0w7ZiYnN6w7Zyw7ZzZW4gYmlydG9rb2x0IGJsb2trb2sgYSh6KSAlaS4gaW5vZGUtYmFuOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICJIaWJhIGF6IGlub2RlLW9rIHZpenNnw6FsYXRha29yICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiaGliYSBheiBpbm9kZSBiaXR0w6lya8OpcCBsZWZvZ2xhbMOhc2Frb3IgKGlub2RlX2R1cF9tYXApOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJIaWJhIGEoeikgJWkuICglcykgaW5vZGUgYmxva2tqYWluYWsgYmVqw6Fyw6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorIkhpYmEgYSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYmxva2sgKCViKSByZWZlcmVuY2lhc3rDoW3DoW5hayBtw7Nkb3PDrXTDoXNha29yICIKKyIoaW5vZGU6ICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIjFDIGzDqXDDqXM6IHTDtmJic3rDtnLDtnNlbiBsZWZvZ2xhbHQgYmxva2tva2F0IHRhcnRhbG1hesOzIGvDtm55dnTDoXJhayBrZXJlc8Opc2VcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgIjFEIGzDqXDDqXM6IHTDtmJic3rDtnLDtnNlbiBsZWZvZ2xhbHQgYmxva2tvayBlZ3llenRldMOpc2VcbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisiQSh6KSAlUSBmw6FqbCAoJWkuIGlub2RlLCBtw7Nkb3PDrXTDoXNpIGlkxZE6ICVJTSlcbiIKKyIgICVyIHTDtmJic3rDtnLDtnNlbiBsZWZvZ2xhbHQgYmxva2thbCByZW5kZWxrZXppaywgJU4gZsOhamxsYWwga8O2esO2c2VuOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgZsOhamwgKGkuIGlub2RlLCBtw7Nkb3PDrXTDoXNpIGlkxZE6ICVJTSlcbiIKKworIy4gQC1leHBhbmRlZDogXHQ8ZmlsZXN5c3RlbSBtZXRhZGF0YT5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE5Cittc2dpZCAiXHQ8QGYgbWV0YWRhdGE+XG4iCittc2dzdHIgIlx0PGbDoWpscmVuZHN6ZXItbWV0YWFkYXRvaz5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKK21zZ2lkICIiCisiKFRoZXJlIGFyZSAlTiBAaXMgY29udGFpbmluZyBAbSBAYnMuKVxuIgorIlxuIgorbXNnc3RyICIiCisiKCVOIGlub2RlIHRhcnRhbG1heiB0w7ZiYnN6w7Zyw7ZzZW4gbGVmb2dsYWx0IGJsb2trb2thdC4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJhIHTDtmJic3rDtnLDtnNlbiBsZWZvZ2xhbHQgYmxva2tvayBtw6FyIMO6anJhIGtpIHZhbm5hayBvc3p0dmEgdmFneSBrbMOzbm96dmEgIgorInZhbm5hay5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNsb25lIGZpbGU6ICVtXG4iCittc2dzdHIgIkEgZsOhamwgbmVtIGtsw7Nub3poYXTDszogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICIxRSBsw6lww6lzOiBFeHRlbnRmw6FrIG9wdGltYWxpesOhbMOhc2FcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJBKHopICVwICglaSkgZXh0ZW50ZmEgb3B0aW1hbGl6w6Fsw6FzYSBzaWtlcnRlbGVuOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIkV4dGVudGbDoWsgb3B0aW1hbGl6w6Fsw6FzYTogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiQmVsc8WRIGhpYmE6IGEgbWF4aW3DoWxpcyBleHRlbnRmYW3DqWx5c8OpZyB0w7psIG5hZ3kgKCViLCB2w6FydDogJWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSBleHRlbnRmw6FqYSAoYSh6KSAlYi4gc3ppbnRlbikgbGVoZXRuZSByw7Z2aWRlYmIuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjgzCittc2dpZCAiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSBleHRlbnRmw6FqYSAoYSh6KSAlYi4gc3ppbnRlbikgbGVoZXRuZSBzesWxa2ViYi4gIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiMi4gbMOpcMOpczoga8O2bnl2dMOhcnN6ZXJrZXpldCBlbGxlbsWRcnrDqXNlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIsOpcnbDqW55dGVsZW4gaW5vZGUgc3rDoW0gYSDigJ4u4oCdLWhveiBhKHopICVpLiBrw7ZueXZ0w6FyIGlub2RlLWJhbi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSDDqXJ2w6lueXRlbGVuIGlub2RlIHN6w6Ftb3QgdGFydGFsbWF6OiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSB0w7Zyw7ZsdC9uZW0gaGFzem7DoWx0IGlub2RlLW90IHRhcnRhbG1hejogIgorIiVEaS4gIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgImEoeikg4oCeJURu4oCdIGJlamVneXrDqXMgaXR0OiAlcCAoJWkpIGVneSBoaXZhdGtvesOhcyBhIOKAni7igJ0tcmEgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHBvaW50cyB0byBpbm9kZSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTUKK21zZ2lkICJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIKK21zZ3N0ciAiIgorImEoeikg4oCeJURu4oCdIGJlamVneXrDqXMgaXR0OiAlcCAoJWkpIGEgaGliw6FzIGJsb2trYmFuIHRhbMOhbGhhdMOzICVEaSBpbm9kZS1yYSAiCisibXV0YXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAlUCAoJURpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzIwCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBlZ3kgaGl2YXRrb3rDoXMgYSh6KSAlUCAoJURpKSBrw7ZueXZ0w6FycmEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgImEoeikg4oCeJURu4oCdIGJlamVneXrDqXMgaXR0OiAlcCAoJWkpIGVneSBoaXZhdGtvesOhcyBhIGd5w7Zrw6lyIGlub2RlLXJhLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzMAorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBuZXZlIGlsbGVnw6FsaXMga2FyYWt0ZXJla2V0IHRhcnRhbG1hei5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkhpw6FueXrDsyDigJ4u4oCdIGEoeikgJWkga8O2bnl2dMOhciBpbm9kZS1iYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkhpw6FueXrDsyDigJ4uLuKAnSBhKHopICVpIGvDtm55dnTDoXIgaW5vZGUtYmFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIiIKKyJBKHopICVpLiAoJXApIGvDtm55dnTDoXIgaW5vZGUtYmFuIGF6IGVsc8WRIOKAniVEbi7igJ0gYmVqZWd5esOpcyAoaW5vZGU9JURpKSDigJ4u4oCdICIKKyJrZWxsZW5lIGxlZ3llbi5cbiIKKworIy4gQC1leHBhbmRlZDogU2Vjb25kIGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSBzaG91bGQgYmUgJy4uJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTAKK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICIiCisiQSh6KSAlaS4ga8O2bnl2dMOhciBpbm9kZS1iYW4gYSBtw6Fzb2RpayDigJ4lRG4u4oCdIGJlamVneXrDqXMgKGlub2RlPSVEaSkg4oCeLi7igJ0gIgorImtlbGxlbmUgbGVneWVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIGEoeikgJWkuICglUSkgaW5vZGUtaG96ICVJRiwgbnVsbGEga2VsbGVuZSBsZWd5ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlmLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYwCittc2dpZCAiaV9maWxlX2FjbCBARiAlSWYsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmlsZV9hY2wgYSh6KSAlaS4gKCVRKSBpbm9kZS1ob3ogJUlmLCBudWxsYSBrZWxsZW5lIGxlZ3llbi5cbiIKKworIy4gQC1leHBhbmRlZDogaV9kaXJfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZCwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2NQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZGlyX2FjbCBhKHopICVpLiAoJVEpIGlub2RlLWhveiAlSWQsIG51bGxhIGtlbGxlbmUgbGVneWVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnJhZyBhKHopICVpLiAoJVEpIGlub2RlLWhveiAlTiwgbnVsbGEga2VsbGVuZSBsZWd5ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnNpemUgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzUKK21zZ2lkICJpX2ZzaXplIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZzaXplIGEoeikgJWkuICglUSkgaW5vZGUtaG96ICVOLCBudWxsYSBrZWxsZW5lIGxlZ3llbi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJBKHopICVpLiBpbm9kZSAoJVEpIMOpcnbDqW55dGVsZW4gbcOzZGRhbCAoJUltKSByZW5kZWxrZXppay5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiJWkuIGvDtm55dnTDoXIgaW5vZGUsICVCLCBlbHRvbMOhczogJU46IGEga8O2bnl2dMOhciBzw6lyw7xsdFxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5MAorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuIgorbXNnc3RyICIlaS4ga8O2bnl2dMOhciBpbm9kZSwgJUIsIGVsdG9sw6FzOiAlTjogYSBmw6FqbG7DqXYgdMO6bCBob3NzesO6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAiYSh6KSAlaSBrw7ZueXZ0w6FyIGlub2RlLWJhbiBlZ3kgbGVmb2dsYWxhdGxhbiAlQiB2YW4uICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiIgorIkEg4oCeLuKAnSBrw7ZueXZ0w6FyYmVqZWd5esOpcyBhKHopICVpLiBrw7ZueXZ0w6FyIGlub2RlLWJhbiBuZW0gTlVMTCB2w6lnesWRZMOpc8WxXG4iCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwNQorIywgYy1mb3JtYXQKK21zZ2lkICInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiIgorIkEg4oCeLi7igJ0ga8O2bnl2dMOhcmJlamVneXrDqXMgYSh6KSAlaS4ga8O2bnl2dMOhciBpbm9kZS1iYW4gbmVtIE5VTEwgdsOpZ3rFkWTDqXPFsVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgImEoeikgJWkuICglUSkgaW5vZGUgZWd5IGlsbGVnw6FsaXMga2FyYWt0ZXJlcyBlc3prw7Z6LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJhKHopICVpLiAoJVEpIGlub2RlIGVneSBpbGxlZ8OhbGlzIGJsb2trb3MgZXN6a8O2ei5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjAKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBlZ3kgZHVwbGlrw6FsdCDigJ4u4oCdIGJlamVneXrDqXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBlZ3kgZHVwbGlrw6FsdCDigJ4uLuKAnSBiZWplZ3l6w6lzLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAiYmVsc8WRIGhpYmE6IG5lbSB0YWzDoWxoYXTDsyBhIGRpcl9pbmZvIGVoaGV6OiAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1Cittc2dpZCAiQEUgaGFzIHJlY19sZW4gb2YgJURyLCBAcyAlTi5cbiIKK21zZ3N0ciAiIgorImEoeikg4oCeJURu4oCdIGJlamVneXrDqXMgaXR0OiAlcCAoJWkpIHJlY19sZW4gw6lydMOpa2UgJURyLCBkZSAlTiBrZWxsZW5lIGxlZ3llbi5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgc3RydWN0dXJlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IHN0cnVjdHVyZTogJW1cbiIKK21zZ3N0ciAiaGliYSBheiBpY291bnQgc3RydWt0w7pyYSBsZWZvZ2xhbMOhc2Frb3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBibG9ja3M6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpdGVyYXRpbmcgb3ZlciBAZCBAYnM6ICVtXG4iCittc2dzdHIgIkhpYmEgYSBrw7ZueXZ0w6FyYmxva2tvayBiZWrDoXLDoXNha29yOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkhpYmEgYSh6KSAlYi4ga8O2bnl2dMOhcmJsb2trICglaS4gaW5vZGUpIG9sdmFzw6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJIaWJhIGEoeikgJWIga8O2bnl2dMOhcmJsb2trICglaS4gaW5vZGUpIMOtcsOhc2Frb3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayBmb3IgaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiaGliYSDDumoga8O2bnl2dMOhcmJsb2trIGxlZm9nbGFsw6FzYWtvciBhKHopICVpLiBpbm9kZSAoJXMpIHN6w6Ftw6FyYTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGVhbGxvY2F0aW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGVhbGxvY2F0aW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJIaWJhIGEoeikgJWkuIGlub2RlIGZlbHN6YWJhZMOtdMOhc2Frb3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAiQSDigJ4u4oCdIGvDtm55dnTDoXJiZWplZ3l6w6lzZSBpdHQ6ICVwICglaSkgdMO6bCBuYWd5LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSAoJVEpIGVneSBpbGxlZ8OhbGlzIEZJRk8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBzb2NrZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4MAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgc29ja2V0LlxuIgorbXNnc3RyICJhKHopICVpLiBpbm9kZSAoJVEpIGVneSBpbGxlZ8OhbGlzIGZvZ2xhbGF0LlxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHRvICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAiRsOhamx0w61wdXMgYmXDoWxsw610w6FzYSBhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzaGV6IGl0dDogJXAgKCVpKSwgZXJyZTogJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDkwCittc2dpZCAiQEUgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgQHMgJU4pLlxuIgorbXNnc3RyICIiCisiYSh6KSDigJ4lRG7igJ0gYmVqZWd5esOpcyBpdHQ6ICVwICglaSkgaGVseXRlbGVuIGbDoWpsdMOtcHVzw7ogKHZvbHQ6ICVEdCwgZGUgJU4gIgorImtlbGxlbmUgbGVneWVuKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZmlsZXR5cGUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTUKK21zZ2lkICJARSBoYXMgZmlsZXR5cGUgc2V0LlxuIgorbXNnc3RyICJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBmw6FqbHTDrXB1c2EgYmUgdmFuIMOhbGzDrXR2YS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBudWxsYSBob3NzesO6IG7DqXZ2ZWwgcmVuZGVsa2V6aWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFN5bWxpbmsgJVEgKGlub2RlICMlaSkgaXMgaW52YWxpZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTA1Cittc2dpZCAiU3ltbGluayAlUSAoQGkgIyVpKSBpcyBAbi5cbiIKK21zZ3N0ciAiQSh6KSAlUSBzemltYm9saWt1cyBsaW5rICglaS4gaW5vZGUpIMOpcnbDqW55dGVsZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAiYSh6KSAlaS4gKCVRKSBpbm9kZSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYmxva2tqYSDDqXJ2w6lueXRlbGVuICglSWYpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICIiCisiYSBmw6FqbHJlbmRzemVyIG5hZ3kgZsOhamxva2F0IHRhcnRhbG1heiwgZGUgYSBzenVwZXJibG9ra2JhbiBuaW5jcyBMQVJHRV9GSUxFICIKKyJqZWx6xZEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhICVCIG5pbmNzIGhpdmF0a296dmFcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiIgorInByb2Jsw6ltYSBhKHopICVkLiBIVFJFRSBrw7ZueXZ0w6FyIGlub2RlLWJhbjogYSAlQiBrw6l0c3plciB2YW4gaGl2YXRrb3p2YVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhICVCIGhpYsOhcyBtaW4gaGFzaC10IHRhcnRhbG1helxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhICVCIGhpYsOhcyBtYXggaGFzaC10IHRhcnRhbG1helxuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDAKK21zZ2lkICJAbiBAaCAlZCAoJXEpLiAgIgorbXNnc3RyICLDqXJ2w6lueXRlbGVuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGU6ICVkICglcSkuICIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKTogYmFkIGJsb2NrIG51bWJlciAlYi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQ0Cittc2dpZCAiQHAgQGggJWQgKCVxKTogYmFkIEBiIG51bWJlciAlYi5cbiIKK21zZ3N0ciAiIgorInByb2Jsw6ltYSBhKHopICVkLiAoJXApIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBoaWLDoXMgYmxva2tzesOhbTogJWIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhIGd5w7Zrw6lyIGNzb23Ds3BvbnQgw6lydsOpbnl0ZWxlblxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgbGltaXQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGxpbWl0ICglTilcbiIKK21zZ3N0ciAiIgorInByb2Jsw6ltYSBhKHopICVkLiBIVFJFRSBrw7ZueXZ0w6FyIGlub2RlLWJhbjogYSAlQiBrb3Jsw6F0amEgw6lydsOpbnl0ZWxlbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBjb3VudCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gY291bnQgKCVOKVxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhICVCIHN6w6FtYSDDqXJ2w6lueXRlbGVuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIiIKKyJwcm9ibMOpbWEgYSh6KSAlZC4gSFRSRUUga8O2bnl2dMOhciBpbm9kZS1iYW46IGEgJUIgcmVuZGV6ZXRsZW4gaGFzaCB0w6FibMOhdCAiCisidGFydGFsbWF6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhICVCIG3DqWx5c8OpZ2Ugw6lydsOpbnl0ZWxlbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgImEoeikg4oCeJURu4oCdIGJlamVneXrDqXMgaXR0OiAlcCAoJWkpIGR1cGxpa8OhbHQuICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBuZW0gZWd5ZWRpIGbDoWpsbsOpdnZlbCByZW5kZWxrZXppay5cbiIKKyLDgXRuZXZlesOpcyBlcnJlOiAlcyIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5Cittc2dpZCAiIgorIkR1cGxpY2F0ZSBAZSAnJURuJyBmb3VuZC5cbiIKKyJcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuIgorIlxuIgorbXNnc3RyICIiCisiRHVwbGlrw6FsdCDigJ4lRG7igJ0gYmVqZWd5esOpcy5cbiIKKyJcdCVwICglaSkgbWVnamVsw7Zsw6lzZSDDumpqw6HDqXDDrXRlbmTFkWvDqW50LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Jsb2Nrc19oaSBhKHopICVpLiAoJVEpIGlub2RlLWhveiAlTiwgbnVsbGEga2VsbGVuZSBsZWd5ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiVsOhcmF0bGFuIGJsb2trIGEoeikgJWQuICglcSkgSFRSRUUga8O2bnl2dMOhciBpbm9kZS1iYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisiYSh6KSDigJ4lRG7igJ0gYmVqZWd5esOpcyBpdHQ6ICVwICglaSkgYSBiZcOhbGzDrXRvdHQgX0lOT0RFX1VOSU5JVCDDqXJ0w6lrxbEgJWcgIgorImNzb3BvcnQgJURpIGlub2RlLWrDoXJhIGhpdmF0a296aWtcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIiIKKyJhKHopIOKAniVEbuKAnSBiZWplZ3l6w6lzIGl0dDogJXAgKCVpKSBhKHopICVnIGNzb3BvcnQgbmVtIGhhc3puw6FsdCBpbm9kZS1qYWluYWsgIgorInRlcsO8bGV0w6luIHRhbMOhbGhhdMOzICVEaSBpbm9kZS1yYSBoaXZhdGtvemlrLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbF9oaSBhKHopICVpLiAoJVEpIGlub2RlLWhveiAlTiwgbnVsbGEga2VsbGVuZSBsZWd5ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhIGd5w7Zrw6lyIGNzb23Ds3BvbnQgIgorImVsbGVuxZFyesWRw7Zzc3plZ2UgaGliw6FzLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisicHJvYmzDqW1hIGEoeikgJWQuIEhUUkVFIGvDtm55dnTDoXIgaW5vZGUtYmFuOiBhIGJlbHPFkSBjc29tw7Nwb250ICIKKyJlbGxlbsWRcnrFkcO2c3N6ZWdlIGhpYsOhcy5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjgKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgaGFzIG5vIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisiJWkuIGvDtm55dnTDoXIgaW5vZGUsICVCLCBlbHRvbMOhczogJU46IGEga8O2bnl2dMOhcm5hayBuaW5jcyBlbGxlbsWRcnrFkcO2c3N6ZWdlLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKyIlaS4ga8O2bnl2dMOhciBpbm9kZSwgJUI6IGEga8O2bnl2dMOhciDDoXRtZWd5IGF6IGVsbGVuxZFyesOpc2VrZW4sIGRlIGF6ICIKKyJlbGxlbsWRcnrFkcO2c3N6ZWdlIGhpYsOhcy5cbiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKyJBKHopICVpLiBiZcOhZ3lhem90dCBrw7ZueXZ0w6FyIGlub2RlIG3DqXJldGUgKCVOKSA0IHTDtmJic3rDtnLDtnNlIGtlbGwgbGVneWVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIkEgYmXDoWd5YXpvdHQga8O2bnl2dMOhciBpbm9kZSAoJWkpIG3DqXJldMOpbmVrIGphdsOtdMOhc2Egc2lrZXJ0ZWxlbi5cbiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICJBIHRpdGtvc8OtdG90dCDigJ4lRG7igJ0gYmVqZWd5esOpcyBpdHQ6ICVwICglaSkgdMO6bCByw7Z2aWRcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorbXNnaWQgIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iCittc2dzdHIgIjMuIGzDqXDDqXM6IGvDtm55dnTDoXJrYXBjc29sYXRvayBlbGxlbsWRcnrDqXNlXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiYSBnecO2a8OpciBpbm9kZSBuaW5jcyBsZWZvZ2xhbHZhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IE5vIHJvb20gaW4gbG9zdCtmb3VuZCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2NQorbXNnaWQgIk5vIHJvb20gaW4gQGwgQGQuICAiCittc2dzdHIgIk5pbmNzIGhlbHkgYSBsb3N0K2ZvdW5kIGvDtm55dnTDoXJiYW4uICIKKworIy4gQC1leHBhbmRlZDogVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlICVpICglcClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuY29ubmVjdGVkIEBkIEBpICVpICglcClcbiIKK21zZ3N0ciAiTmVtIGNzYXRsYWtvenRhdG90dCBrw7ZueXZ0w6FyIGlub2RlOiAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiYSAvbG9zdCtmb3VuZCBuZW0gdGFsw6FsaGF0w7MuICIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAiQSDigJ4uLuKAnSBhICVRICglaSkgZXNldMOpbiAlUCAoJWopLCBkZSAlcSAoJWQpIGtlbGxlbmUgbGVneWVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1Cittc2dpZCAiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIgorbXNnc3RyICJIaWLDoXMgdmFneSBuZW0gbMOpdGV6xZEgL2xvc3QrZm91bmQuIE5lbSBjc2F0bGFrb3p0YXRoYXTDsyDDumpyYS5cbiIKKworIy4gQC1leHBhbmRlZDogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBleHBhbmQgL0BsOiAlbVxuIgorbXNnc3RyICJOZW0gYm9udGhhdMOzIGtpIGEgL2xvc3QrZm91bmQ6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJOZW0gbGVoZXQgw7pqcmFjc2F0bGFrb3p0YXRuaSBlenQ6ICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiSGliYSBhIC9sb3N0K2ZvdW5kIG1lZ3RhbMOhbMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW46ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19ibG9jazogJW0gYSAvbG9zdCtmb3VuZCBrw7ZueXZ0w6FyIGzDqXRyZWhvesOhc8OhcmEgdGV0dCBrw61zw6lybGV0ICIKKyJrw7Z6YmVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19pbm9kZTogJW0gYSAvbG9zdCtmb3VuZCBrw7ZueXZ0w6FyIGzDqXRyZWhvesOhc8OhcmEgdGV0dCBrw61zw6lybGV0ICIKKyJrw7Z6YmVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X2Rpcl9AYjogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IEBkIEBiXG4iCittc2dzdHIgImV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSBheiDDumoga8O2bnl2dMOhcmJsb2trIGzDqXRyZWhvesOhc2Ega8O2emJlblxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBkaXJlY3RvcnkgYmxvY2sgZm9yIC9sb3N0K2ZvdW5kXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgIiIKKyJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSBhIC9sb3N0K2ZvdW5kIGvDtm55dnTDoXJibG9ra2rDoW5hayDDrXLDoXNhIGvDtnpiZW5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiSGliYSBhKHopICVpLiBpbm9kZSBpbm9kZSBzesOhbcOhbmFrIG3Ds2Rvc8OtdMOhc2Frb3JcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5lbSBqYXbDrXRoYXTDsyBhKHopICVpLiBpbm9kZSBzesO8bMWRamU6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IGRpcmVjdG9yeSBlbnRyeVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBAZCBAZVxuIgorIlxuIgorbXNnc3RyICIiCisiTmVtIGphdsOtdGhhdMOzIGEoeikgJWkuIGlub2RlIHN6w7xsxZFqZTogTmVtIHRhbMOhbGhhdMOzIGEgc3rDvGzFkSAiCisia8O2bnl2dMOhcmJlamVneXrDqXNcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgcm9vdCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHJvb3QgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiSGliYSBhIGd5w7Zrw6lya8O2bnl2dMOhciAoJXMpIGzDqXRyZWhvesOhc2Frb3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIkhpYmEgYSAvbG9zdCtmb3VuZCBrw7ZueXZ0w6FyICglcykgbMOpdHJlaG96w6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgImEgZ3nDtmvDqXIgaW5vZGUgbmVtIGvDtm55dnTDoXIsIG1lZ3N6YWvDrXTDoXMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIkd5w7Zrw6lyIGlub2RlIG7DqWxrw7xsIG5lbSBsZWhldCBmb2x5dGF0bmkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIkEgL2xvc3QrZm91bmQgbmVtIGvDtm55dnTDoXIgKGlub2RlPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICJhIC9sb3N0K2ZvdW5kIGJlw6FneWF6b3R0IGFkYXRva2F0IHRhcnRhbG1helxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKyJOZW0gZm9nbGFsaGF0w7MgaGVseSBhIC9sb3N0K2ZvdW5kIHN6w6Ftw6FyYS5cbiIKKyJBeiBlbHZlc3pldHQgZsOhamxvayBlaGVseWV0dCBhIGd5w7Zrw6lya8O2bnl2dMOhcmJhIGtlcsO8bG5layIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisiTmluY3MgZWzDqWcgaGVseSBheiBlbHZlc3pldHQgZsOhamxvayB2aXNzemHDoWxsw610w6Fzw6Fob3ohXG4iCisiSGVseWV6emVuIMOhdCBhZGF0b2thdCBhIGbDoWpscmVuZHN6ZXJyxZFsLCDDqXMgZnV0dGFzc2Egw7pqcmEgYXogZTJmc2NrLXQuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIkEgL2xvc3QrZm91bmQgdGl0a29zw610b3R0XG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiM0EgbMOpcMOpczoga8O2bnl2dMOhcmFrIG9wdGltYWxpesOhbMOhc2FcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICJBIGRpcnNfdG9faGFzaCBpdGVyw6F0b3IgbMOpdHJlaG96w6FzYSBzaWtlcnRlbGVuOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIkEoeikgJXEgKCVkKSBrw7ZueXZ0w6FyIG9wdGltYWxpesOhbMOhc2Egc2lrZXJ0ZWxlbjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJLw7ZueXZ0w6FyYWsgb3B0aW1hbGl6w6Fsw6FzYTogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAiNC4gbMOpcMOpczogcmVmZXJlbmNpYXN6w6Ftb2sgZWxsZW7FkXJ6w6lzZVxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIm5lbSBjc2F0bGFrb3p0YXRvdHQsIG51bGxhIGhvc3N6w7pzw6Fnw7ogaW5vZGU6ICVpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIm5lbSBjc2F0bGFrb3p0YXRvdHQgaW5vZGU6ICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgIkEoeikgJWkuIGlub2RlIGhpdmF0a296w6Fzc3rDoW1hICVJbCwgZGUgJU4ga2VsbGVuZSBsZWd5ZW4uICIKKworIy4gQC1leHBhbmRlZDogV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbgorIy4gQC1leHBhbmRlZDogXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbgorIy4gQC1leHBhbmRlZDogaW5vZGVfbGlua19pbmZvWyVpXSBpcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IHNob3VsZCBiZSB0aGUgc2FtZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4Cittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKyJGSUdZRUxNRVpURVTDiVM6IFBST0dSQU1PWsOBU0kgSElCQSBBWiBFMkZTQ0stQkFOIVxuIgorIlx0VkFHWSBWQUxBTUkgRkFGRUogKFRFKSBFR1kgQ1NBVE9MVCAow4lMxZApIEbDgUpMUkVORFNaRVJUIEVMTEVOxZBSSVouXG4iCisiaW5vZGVfbGlua19pbmZvWyVpXSA9ICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50ID0gJUlsLlxuIgorIkVneWV6bmnDvGsga2VsbGVuZSFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICI1LiBsw6lww6lzOiBjc29wb3J0IMO2c3N6ZWZvZ2xhbMOzIGluZm9ybcOhY2nDs2luYWsgZWxsZW7FkXJ6w6lzZVxuIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIkEga2l0w7ZsdMOpcyBheiBpbm9kZSBiaXR0w6lya8OpcCB2w6lnw6luIG5pbmNzIGJlw6FsbMOtdHZhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2OAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiQSBraXTDtmx0w6lzIGEgYmxva2tiaXR0w6lya8OpcCB2w6lnw6luIG5pbmNzIGJlw6FsbMOtdHZhLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NzMKK21zZ2lkICJAYiBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJibG9ra2JpdHTDqXJrw6lwIGVsdMOpcsOpc2VpOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJpbm9kZSBiaXR0w6lya8OpcCBlbHTDqXLDqXNlaTogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiQSBzemFiYWQgaW5vZGUtb2sgc3rDoW1hIGhpYsOhcyBhKHopICVnLiBjc29wb3J0aG96ICglaSwgc3rDoW1vbHQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiQSBrw7ZueXZ0w6FyYWsgc3rDoW1hIGhpYsOhcyBhKHopICVnLiBjc29wb3J0aG96ICglaSwgc3rDoW1vbHQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJBIHN6YWJhZCBpbm9kZS1vayBzesOhbWEgaGliw6FzICglaSwgc3rDoW1vbHQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiQSBzemFiYWQgYmxva2tvayBzesOhbWEgaGliw6FzIGEoeikgJWcuIGNzb3BvcnRob3ogKCViLCBzesOhbW9sdD0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzMworbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIkEgc3phYmFkIGJsb2trb2sgc3rDoW1hIGhpYsOhcyAoJWIsIHN6w6Ftb2x0PSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorIlBST0dSQU1PWsOBU0kgSElCQTogYSBmw6FqbHJlbmRzemVyICglTi4pIGJpdHTDqXJrw6lww6luZWsgdsOpZ3BvbnRqYWkgKCViLCAlYykgIgorIm5lbSBlZ3llem5layBhIHN6w6Ftw610b3R0IGJpdHTDqXJrw6lwLXbDqWdwb250b2trYWwgKCVpLCAlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIkJlbHPFkSBoaWJhOiBhIGJpdHTDqXJrw6lwIHbDqWfDqW5layBtZWd0aXBwZWzDqXNlICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICJIaWJhIGEgaGVseWV0dGVzw610xZEgaW5vZGUgYml0dMOpcmvDqXAgbcOhc29sw6FzYWtvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBiIEBCOiAlbVxuIgorbXNnc3RyICJIaWJhIGEgaGVseWV0dGVzw610xZEgYmxva2tiaXR0w6lya8OpcCBtw6Fzb2zDoXNha29yOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisiJWcgY3NvcG9ydCBibG9ra2phaSBoYXN6bsOhbGF0YmFuIHZhbm5haywgZGUgYSBjc29wb3J0IEJMT0NLX1VOSU5JVC10ZWwgdmFuICIKKyJtZWdqZWzDtmx2ZVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICIiCisiJWcgY3NvcG9ydCBpbm9kZS1qYWkgaGFzem7DoWxhdGJhbiB2YW5uYWssIGRlIGEgY3NvcG9ydCBJTk9ERV9VTklOSVQtdGVsIHZhbiAiCisibWVnamVsw7ZsdmVcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiVnIGNzb3BvcnQgaW5vZGUgYml0dMOpcmvDqXBlIG5lbSBmZWxlbCBtZWcgYXogZWxsZW7FkXJ6xZHDtnNzemVnbmVrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiJWcgY3NvcG9ydCBibG9ra2JpdHTDqXJrw6lwZSBuZW0gZmVsZWwgbWVnIGF6IGVsbGVuxZFyesWRw7Zzc3plZ25lay5cbiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgIk5hcGzDsyDDumpyYWzDqXRyZWhvesOhc2EiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICJLdsOzdGFpbmZvcm3DoWNpw7NrIGZyaXNzw610w6lzZSAlTiBrdsOzdGF0w61wdXNob3oiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiSGliYSBhIGJsb2trY3NvcG9ydCBlbGxlbsWRcnrFkcO2c3N6ZWctaW5mb3Jtw6FjacOzaW5hayBiZcOhbGzDrXTDoXNha29yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvOiAlbVxuIgorbXNnc3RyICJIaWJhIGEgZsOhamxyZW5kc3plci1pbmZvcm3DoWNpw7NrIMOtcsOhc2Frb3I6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIkhpYmEgYXogw61yw6Fzb2sgdMOhcm9sw7Nlc3prw7Z6cmUgw7xyw610w6lzZWtvcjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJIaWJhIGEga3bDs3RhaW5mb3Jtw6FjacOzayDDrXLDoXNha29yICVOIGt2w7N0YXTDrXB1c2hvejogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiTmVtIGtlemVsdCBoaWJha8OzZCAoMHgleCkhXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICJNRUxMxZBaVkUiCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAiYSBtb3ZlX3F1b3RhX2lub2RlIGjDrXbDoXNiYW4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICJIYXN6bsOhbHQgbWVtw7NyaWE6ICVkLCBlbHRlbHQgaWTFkTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJheiBpbm9kZSBtw6lyZXRlPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgImF6IGlub2RlIHZpenNnw6FsYXQgbWVna2V6ZMOpc2Vrb3IiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImlub2RlIHZpenNnw6FsYXQgdsOpZ3JlaGFqdMOhc2Ega8O2emJlbiIKKworIzogZTJmc2NrL3N1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlub2RlICVkIgorbXNnc3RyICJheiBleHQyZnNfYmxvY2tfaXRlcmF0ZSBtZWdow612w6FzYWtvciBhKHopICVkLiBpbm9kZS1yYSIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJheiBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBtZWdow612w6FzYWtvciBhKHopICVkLiBpbm9kZS1yYSIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiQ3NvbmvDrXTDoXMiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NQorbXNnaWQgIkNsZWFyaW5nIgorbXNnc3RyICJUw7ZybMOpcyIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJIYXN6bsOhbGF0OiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3p1cGVyYmxva2tdIFstQiBibG9ra23DqXJldF1cbiIKKyJcdFx0Wy1sfC1MIGhpYsOhc19ibG9ra29rX2bDoWpsamFdIFstQyBmZF0gWy1qIGvDvGxzxZFfbmFwbMOzXVxuIgorIlx0XHRbLUUgYsWRdsOtdGV0dC1rYXBjc29sw7NrXSBbLXogdmlzc3phdm9uw6FzaV9mw6FqbF0gZXN6a8O2elxuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisiVsOpc3pzw7pnw7M6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpa3VzIGphdsOtdMOhcyAobmVtIGvDqXJkZXopXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE5lIG3Ds2Rvc8OtdHNhIGEgZsOhamxyZW5kc3plcnRcbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgRmVsdMOpdGVsZXp6ZSBheiDigJ5pZ2Vu4oCdIHbDoWxhc3p0IG1pbmRlbiBrw6lyZMOpc3JlXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIEhpYsOhcyBibG9ra29rIGtlcmVzw6lzZSDDqXMgaG96esOhYWTDoXNhIGEgaGliw6FzIGJsb2trb2tcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICBsaXN0w6Fqw6Fob3pcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRWxsZW7FkXJ6w6lzIGvDqW55c3plcsOtdMOpc2UsIG3DqWcgaGEgYSBmw6FqbHJlbmRzemVyICIKKyJ0aXN6dMOhbmFrXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgaXMgdmFuIGplbMO2bHZlXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKK21zZ2lkICIiCisiIC12ICAgICAgICAgICAgICAgICAgIEJlIHZlcmJvc2VcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgVXNlIGFsdGVybmF0aXZlIHN1cGVyYmxvY2tcbiIKKyIgLUIgYmxvY2tzaXplICAgICAgICAgRm9yY2UgYmxvY2tzaXplIHdoZW4gbG9va2luZyBmb3Igc3VwZXJibG9ja1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICBTZXQgbG9jYXRpb24gb2YgdGhlIGV4dGVybmFsIGpvdXJuYWxcbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAgQWRkIHRvIGJhZGJsb2NrcyBsaXN0XG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIFNldCBiYWRibG9ja3MgbGlzdFxuIgorIiAteiB1bmRvX2ZpbGUgICAgICAgICBDcmVhdGUgYW4gdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgUsOpc3psZXRlcyBtw7NkXG4iCisiIC1iIHN6dXBlcmJsb2trICAgICAgIEFsdGVybmF0w612IHN6dXBlcmJsb2trIGhhc3puw6FsYXRhXG4iCisiIC1CIGJsb2trbcOpcmV0ICAgICAgICBCbG9ra23DqXJldCBrw6lueXN6ZXLDrXTDqXNlIGEgc3p1cGVyYmxva2sga2VyZXPDqXNla29yXG4iCisiIC1qIGvDvGxzxZFfbmFwbMOzICAgICAgIEEga8O8bHPFkSBuYXBsw7MgaGVsecOpbmVrIGJlw6FsbMOtdMOhc2FcbiIKKyIgLWwgaGliw6FzX2Jsb2trb2tfZsOhamxqYSAgSG96esOhYWTDoXMgYSBoaWLDoXMgYmxva2tvayBsaXN0w6Fqw6Fob3pcbiIKKyIgLUwgaGliw6FzX2Jsb2trb2tfZsOhamxqYSAgSGliw6FzIGJsb2trb2sgbGlzdMOhasOhbmFrIGJlw6FsbMOtdMOhc2FcbiIKKyIgLXogdmlzc3phdm9uw6FzaV9mw6FqbCAgICAgVmlzc3phdm9uw6FzaSBmw6FqbCBsw6l0cmVob3rDoXNhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzOiAldS8ldSBmw6FqbCAoJTBkLiVkJSUgbmVtIMO2c3N6ZWbDvGdnxZEpLCAlbGx1LyVsbHUgYmxva2tcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBpbm9kZSBoYXN6bsOhbGF0YmFuICglMi4yZiUlLCDDtnNzemVzZW4gJXUpXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IGlub2RlIGhhc3puw6FsYXRiYW4gKCUyLjJmJSUsIMO2c3N6ZXNlbiAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgbmVtIGZvbHl0b25vcyBmw6FqbCAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgbmVtIGZvbHl0b25vcyBmw6FqbCAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3J5ICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcmllcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgbmVtIGZvbHl0b25vcyBrw7ZueXZ0w6FyICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBuZW0gZm9seXRvbm9zIGvDtm55dnTDoXIgKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiIgorIiAgICAgICAgICAgICBpbmQvZGluZC90aW5kIGJsb2trb2thdCB0YXJ0YWxtYXrDsyBpbm9kZS1vayBzesOhbWE6ICV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIEV4dGVudG3DqWx5c8OpZy1oaXN6dG9ncmFtOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IGJsb2trIGhhc3puw6FsYXRiYW4gKCUyLjJmJSUsIMO2c3N6ZXNlbiAlbGx1KVxuIgorbXNnc3RyWzFdICIlMTJsbHUgYmxva2sgaGFzem7DoWxhdGJhbiAoJTIuMmYlJSwgw7Zzc3plc2VuICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1IGhpYsOhcyBibG9ra1xuIgorbXNnc3RyWzFdICIlMTJ1IGhpYsOhcyBibG9ra1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IG5hZ3kgZsOhamxcbiIKK21zZ3N0clsxXSAiJTEydSBuYWd5IGbDoWpsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVzXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IG5vcm3DoWwgZsOhamxcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgbm9ybcOhbCBmw6FqbFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUga8O2bnl2dMOhclxuIgorbXNnc3RyWzFdICIlMTJ1IGvDtm55dnTDoXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUga2FyYWt0ZXJlcyBlc3prw7Z6IGbDoWpsXG4iCittc2dzdHJbMV0gIiUxMnUga2FyYWt0ZXJlcyBlc3prw7Z6IGbDoWpsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBibG9ra29zIGVzemvDtnogZsOhamxcbiIKK21zZ3N0clsxXSAiJTEydSBibG9ra29zIGVzemvDtnogZsOhamxcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSBmaWZvXG4iCittc2dzdHJbMV0gIiUxMnUgZmlmb1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIlMTJ1IGxpbmtcbiIKK21zZ3N0clsxXSAiJTEydSBsaW5rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc3ltYm9saWMgbGluayIKK21zZ2lkX3BsdXJhbCAiJTEydSBzeW1ib2xpYyBsaW5rcyIKK21zZ3N0clswXSAiJTEydSBzemltYm9saWt1cyBsaW5rIgorbXNnc3RyWzFdICIlMTJ1IHN6aW1ib2xpa3VzIGxpbmsiCisKKyM6IGUyZnNjay91bml4LmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rKVxuIgorbXNnaWRfcGx1cmFsICIgKCV1IGZhc3Qgc3ltYm9saWMgbGlua3MpXG4iCittc2dzdHJbMF0gIigldSBneW9ycyBzemltYm9saWt1cyBsaW5rKVxuIgorbXNnc3RyWzFdICIoJXUgZ3lvcnMgc3ppbWJvbGlrdXMgbGluaylcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUgZm9nbGFsYXRcbiIKK21zZ3N0clsxXSAiJTEydSBmb2dsYWxhdFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGbDoWpsXG4iCittc2dzdHJbMV0gIiUxMnUgZsOhamxcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIiVzIGNzYXRvbHQgw6FsbGFwb3TDoW5hayBtZWdoYXTDoXJvesOhc2Ega8O2emJlbi4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICJGaWd5ZWxtZXp0ZXTDqXMhICVzIGNzYXRvbHZhIHZhbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzISAlcyBoYXN6bsOhbGF0YmFuIHZhbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiJXMgY3NhdG9sdmEgdmFuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NworIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiVzIGhhc3puw6FsYXRiYW4gdmFuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICIiCisiTmVtIGZvbHl0YXRoYXTDsywgbWVnc3pha8OtdMOhcy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyJGSUdZRUxFTSEhISAgQSBmw6FqbHJlbmRzemVyIGNzYXRvbHZhIHZhbi4gICBIYSBmb2x5dGF0amEsIGF6emFsXG4iCisiKioqU8OaTFlPUyoqKiBmw6FqbHJlbmRzemVyLWvDoXJvc29kw6FzdCAqKipGT0cqKiogb2tvem5pIVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3NgorbXNnaWQgIkRvIHlvdSByZWFsbHkgd2FudCB0byBjb250aW51ZSIKK21zZ3N0ciAiQml6dG9zYW4gZm9seXRhdG5pIGFrYXJqYSIKKworIzogZTJmc2NrL3VuaXguYzoyNzgKK21zZ2lkICJjaGVjayBhYm9ydGVkLlxuIgorbXNnc3RyICJlbGxlbsWRcnrDqXMgbWVnc3pha8OtdHZhLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgaGliw6FzIGbDoWpscmVuZHN6ZXJ0IHRhcnRhbG1heiIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIG5lbSBsZXR0IHRpc3p0w6FuIGxldsOhbGFzenR2YSIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIGVsc8WRZGxlZ2VzIHN6dXBlcmJsb2trasOhbmFrIGplbGxlbXrFkWkgZWx0w6lybmVrIGEgdGFydGFsw6lrw6lpdMOzbCIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgJXUgYWxrYWxvbW1hbCBsZXR0IGVsbGVuxZFyesOpcyBuw6lsa8O8bCBjc2F0b2x2YSIKKworIzogZTJmc2NrL3VuaXguYzozODYKK21zZ2lkICIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIKK21zZ3N0ciAiIGbDoWpscmVuZHN6ZXLDqW5layB1dG9sc8OzIGVsbGVuxZFyesOpc2kgaWRlamUgYSBqw7Z2xZFiZW4gdmFuIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiAldSBuYXBqYSBuZW0ga2Vyw7xsdCBlbGxlbsWRcnrDqXNyZSIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAiLCBlbGxlbsWRcnrDqXMga2lrw6lueXN6ZXLDrXR2ZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiJXM6IHRpc3p0YSwgJXUvJXUgZsOhamwsICVsbHUvJWxsdSBibG9rayIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChlbGxlbsWRcnrDqXMgZWxoYWxhc3p0dmEsIGFra3VtdWzDoXRvcm9uKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICIgKGVsbGVuxZFyesOpcyBhIGvDtnZldGtlesWRIGNzYXRvbMOhcyB1dMOhbikiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIiAoZWxsZW7FkXJ6w6lzICVsZCBjc2F0b2zDoXNvbiBiZWzDvGwpIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICJISUJBOiBOZW0gbnlpdGhhdMOzIG1lZyBhIC9kZXYvbnVsbCAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGLFkXbDrXRldHQgYXR0cmliw7p0dW0gdmVyemnDsy5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBlbMWRcmVvbHZhc8Ohc2kgcHVmZmVybcOpcmV0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiSXNtZXJldGxlbiBixZF2w610ZXR0IGJlw6FsbMOtdMOhczogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTemludGFrdGlrYWkgaGliYSBheiBlMmZzY2sgYmXDoWxsw610w7Nmw6FqbGrDoWJhbiAoJXMsIGEoeikgJWQuIHNvcmJhbilcbiIKKyJcdCVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJIaWJhIGEoeikgJWQuIGbDoWpsbGXDrXLDsyDDqXJ2w6lueWVzw610w6lzZWtvcjogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjkKK21zZ2lkICJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGtpZWfDqXN6w610w6lzaW5mb3Jtw6FjacOzcyBmw6FqbGxlw61yw7MiCisKKyM6IGUyZnNjay91bml4LmM6ODQ0Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICJBIC1wLy1hLCAtbiB2YWd5IC15IGthcGNzb2zDs2sga8O2esO8bCBjc2FrIGVneSBhZGhhdMOzIG1lZy4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJBeiBlMmZzY2sgZXplbiB2ZXJ6acOzamEgbmVtIHTDoW1vZ2F0amEgYSAtdCBrYXBjc29sw7N0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjg5NiBlMmZzY2svdW5peC5jOjk3MyBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjMzMAorIzogbWlzYy90dW5lMmZzLmM6MTU5OCBtaXNjL3R1bmUyZnMuYzoxODkzIG1pc2MvdHVuZTJmcy5jOjE5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIHJlc29sdmUgJyVzJyIKK21zZ3N0ciAiTmVtIG9sZGhhdMOzIGZlbCDigJ4lc+KAnSIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkEgLW4gw6lzIC1EIGthcGNzb2zDs2sgaW5rb21wYXRpYmlsaXNlay4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJBIC1uIMOpcyAtYyBrYXBjc29sw7NrIGlua29tcGF0aWJpbGlzZWsuIgorCisjOiBlMmZzY2svdW5peC5jOjk2MgorbXNnaWQgIlRoZSAtbiBhbmQgLWwvLUwgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiQSAtbiDDqXMgLWwvLUwga2FwY3NvbMOzayBpbmtvbXBhdGliaWxpc2VrLiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiQSAtRCDDqXMgLUUgZml4ZXNfb25seSBrYXBjc29sw7NrIGlua29tcGF0aWJpbGlzZWsuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJBIC1FIGJtYXAyZXh0ZW50IMOpcyBmaXhlc19vbmx5IGthcGNzb2zDs2sgaW5rb21wYXRpYmlsaXNlay4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiQSAtYyDDqXMgLWwvLUwga2FwY3NvbMOzayBuZW0gaGFzem7DoWxoYXTDs2sgZWd5c3plcnJlLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIOKAniVz4oCdIG5lbSBlZ8Opc3ogc3rDoW1cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiw4lydsOpbnl0ZWxlbiwgbmVtIHN6w6FtIGFyZ3VtZW50dW0gYSAtJWMga2FwY3NvbMOzaG96ICjigJ4lc+KAnSlcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgaW50ZXJ2YWwgaXMgJXUgc2Vjb25kcyBhbmQgdG90YWwgd2FpdCB0aW1lIGlzICV1IHNlY29uZHMuIFBsZWFzZSAiCisid2FpdC4uLlxuIgorbXNnc3RyICIiCisiQXogTU1QIGlkxZFrw7Z6ICV1IG3DoXNvZHBlcmMsIGEgdGVsamVzIHbDoXJha296w6FzaSBpZMWRICV1IG3DoXNvZHBlcmMuIEtpcyAiCisidMO8cmVsbWV0Li4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgImF6IE1NUCBibG9rayBlbGxlbsWRcnrDqXNlIGvDtnpiZW4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisiSGEgYml6dG9zIGJlbm5lLCBob2d5IGEgZsOhamxyZW5kc3plciBuaW5jcyBoYXN6bsOhbGF0YmFuIGVneWV0bGVuICIKKyJjc29tw7Nwb250b25cbiIKKyJzZW0sIGFra29yIGZ1dHRhc3NhIGEga8O2dmV0a2V6xZF0OlxuIgorIuKAnnR1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtlc3prw7Z6feKAnVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyMzIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIKK21zZ3N0ciAiYXogTU1QIGJsb2trIG9sdmFzw6FzYSBrw7Z6YmVuIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyJNZWdsw6l2xZEgZsOhamxyZW5kc3plciBmZWzDvGzDrXLDoXNhLCBleiBhIGvDtnZldGtlesWRIHBhcmFuY2NzYWwgdm9uaGF0w7Mgdmlzc3phOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICIlcyB0w7ZybMOpc8OpcmUgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgImEgdmlzc3phdm9uw6FzaSBmw6FqbCBlbGvDqXN6w610w6lzw6lyZSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlblxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiSGliYTogYXogZXh0MmZzIHByb2dyYW1rw7ZueXZ0w6FyIHZlcnppw7NqYSBlbGF2dWx0IVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICJhIHByb2dyYW0gZWzFkWvDqXN6w610w6lzw6lyZSB0ZXR0IGvDrXPDqXJldCBrw7Z6YmVuIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHQlcywgJXMgaGFzem7DoWxhdMOhdmFsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQwNQorbXNnaWQgIm5lZWQgdGVybWluYWwgZm9yIGludGVyYWN0aXZlIHJlcGFpcnMiCittc2dzdHIgImF6IGludGVyYWt0w612IGhlbHlyZcOhbGzDrXTDoXNob3ogdGVybWluw6FsIHN6w7xrc8OpZ2VzIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyB0YXJ0YWzDqWsgYmxva2tvayBraXByw7Niw6Fsw6FzYeKAplxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICJBIHN6dXBlcmJsb2trIMOpcnbDqW55dGVsZW4sIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiQSBjc29wb3J0bGXDrXLDs2sgcm9zc3p1bCBuw6l6bmVrIGtp4oCmIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlczogJXMgYSB0YXJ0YWzDqWsgYmxva2tvayBoYXN6bsOhbGF0YSBrw7Z6YmVuIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlczogdmlzc3phdMOpcsOpcyBheiBlcmVkZXRpIHN6dXBlcmJsb2traG96XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXIgdmVyemnDs2phIG55aWx2w6FudmFsw7NhbiB0w7psIG1hZ2FzIGF6IGUyZnNjayBlemVuIHZlcnppw7Nqw6FuYWsuXG4iCisiKHZhZ3kgYSBmw6FqbHJlbmRzemVyIHN6dXBlcmJsb2tramEgc8OpcsO8bHQpXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIkxlaGV0LCBob2d5IGV6IGVneSBudWxsYSBob3NzesO6IHBhcnTDrWNpw7M/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIiIKKyIlcyBob3p6w6Fmw6lyw6lzc2VsIGtlbGwgcmVuZGVsa2V6bmllIGEgZsOhamxyZW5kc3plcmhleiwgdmFneSByb290IGpvZ29ra2FsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiTGVoZXQsIGhvZ3kgZXogZWd5IG5lbSBsw6l0ZXrFkSwgdmFneSBzd2FwIGVzemvDtno/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiQSBmw6FqbHJlbmRzemVyIGNzYXRvbHZhIHZhbiwgdmFneSBlZ3kgbcOhc2lrIHByb2dyYW0ga2l6w6Fyw7NsYWdvcyBtw7NkYmFuICIKKyJueWl0b3R0YSBtZWc/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIkxlaGV0LCBob2d5IGV6IGVneSBuZW0gbMOpdGV6xZEgZXN6a8O2ej9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJBIGxlbWV6IMOtcsOhc3bDqWRldHQsIGhhc3puw6FsamEgYSAtbiBrYXBjc29sw7N0IGF6IGVzemvDtnogY3Nha1xuIgorIm9sdmFzw6FzaSBtw7Nkw7ogZWxsZW7FkXJ6w6lzw6loZXouXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiU3plcmV6emUgYmUgYXogZTJmc2NrIMO6amFiYiB2ZXJ6acOzasOhdCEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBqb3VybmFsIGZvciAlcyIKK21zZ3N0ciAiYSBuYXBsw7MgZWxsZW7FkXJ6w6lzZWtvciBlemVuOiAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNjUxCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIGVsbGVuxZFyesOpc8OpdCBuZW0gbGVoZXQgZm9seXRhdG5pIgorCisjOiBlMmZzY2svdW5peC5jOjE2NjIKK21zZ2lkICIiCisiV2FybmluZzogc2tpcHBpbmcgam91cm5hbCByZWNvdmVyeSBiZWNhdXNlIGRvaW5nIGEgcmVhZC1vbmx5IGZpbGVzeXN0ZW0gIgorImNoZWNrLlxuIgorbXNnc3RyICIiCisiRmlneWVsbWV6dGV0w6lzOiBhIG5hcGzDsyBoZWx5cmXDoWxsw610w6Fzw6FuYWsga2loYWd5w6FzYSwgbWVydCBjc2FrIG9sdmFzw6FzaSBtw7Nkw7ogIgorImbDoWpscmVuZHN6ZXItZWxsZW7FkXJ6w6lzdCB2w6lnZXouXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY3NAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gc2V0IHN1cGVyYmxvY2sgZmxhZ3Mgb24gJXNcbiIKK21zZ3N0ciAibmVtIMOhbGzDrXRoYXTDs2sgYmUgYSBzenVwZXJibG9rayBqZWx6xZFpIGV6ZW46ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIkEgbmFwbMOzIGVsbGVuxZFyesWRw7Zzc3plZ2UgaGliw6FzIGl0dDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkEgbmFwbMOzIHPDqXLDvGx0IGl0dDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlY292ZXJpbmcgam91cm5hbCBvZiAlcyIKK21zZ3N0ciAiYSBuYXBsw7MgaGVseXJlw6FsbMOtdMOhc2Frb3IgZXplbjogJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiVzIG5lbSB0w6Ftb2dhdG90dCBqZWxsZW16xZFra2VsIHJlbmRlbGtlemlrOiIKKworIzogZTJmc2NrL3VuaXguYzoxNzY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSByZWFkaW5nIGJhZCBibG9ja3MgaW5vZGVcbiIKK21zZ3N0ciAiJXM6ICVzIGEgaGliw6FzIGJsb2trb2sgaW5vZGUgb2x2YXPDoXNhIGvDtnpiZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzcyCittc2dpZCAiVGhpcyBkb2Vzbid0IGJvZGUgd2VsbCwgYnV0IHdlJ2xsIHRyeSB0byBnbyBvbi4uLlxuIgorbXNnc3RyICJFeiBuZW0gbsOpeiBraSBqw7NuYWssIGRlIG1lZ3Byw7Niw6FsanVrIGZvbHl0YXRuaeKAplxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICJOYXBsw7MgbMOpdHJlaG96w6FzYSAoJWQgYmxva2spOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIgS8Opc3ouXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBhIG5hcGzDsyDDumpyYSBsw6l0cmVob3p2YSAqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM2Cittc2dpZCAiYWJvcnRlZCIKK21zZ3N0ciAibWVnc3pha8OtdHZhIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGUyZnNjayBjYW5jZWxlZC5cbiIKK21zZ3N0ciAiJXM6IGUyZnNjayBtZWdzemFrw610dmEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICJBeiBlMmZzY2sgw7pqcmFpbmTDrXTDoXNhIGF6IGVsZWrDqXTFkWzigKZcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY5Cittc2dpZCAid2hpbGUgcmVzZXR0aW5nIGNvbnRleHQiCittc2dzdHIgImEga29udGV4dHVzIGFsYXBoZWx5emV0YmUgw6FsbMOtdMOhc2Frb3IiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogQSBGw4FKTFJFTkRTWkVSIE3Dk0RPU8ONVFZBIExFVFQgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVzOiAqKioqKiBJTkTDjVRTQSDDmkpSQSBBIFJFTkRTWkVSVCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqIEZJR1lFTEVNOiBBIGbDoWpscmVuZHN6ZXJlbiBtw6lnIG1pbmRpZyB2YW5uYWsgaGliw6FrICoqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAiaUkiCisKKyM6IGUyZnNjay91dGlsLmM6MTk1Cittc2dpZCAibk4iCittc2dzdHIgIm5OIgorCisjIGF6IGEgZm9yZMOtdMOhc2EgbGVoZXRuZSBtIGlzLCBtaW50ICJNaW5kZW4iLCBkZSB0w7psIGvDtnplbCB2YW4gYXogbiAobmVtKS1oZXogYSBiaWxsZW50ecWxemV0ZW4uCisjOiBlMmZzY2svdXRpbC5jOjE5NgorbXNnaWQgImFBIgorbXNnc3RyICJhQSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIgKGF6IOKAnmHigJ0gamVsZW50w6lzZTog4oCeaWdlbuKAnSBtaW5kZW5yZSkgIgorCisjOiBlMmZzY2svdXRpbC5jOjIxMworbXNnaWQgIjx5PiIKK21zZ3N0ciAiPGk+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNQorbXNnaWQgIjxuPiIKK21zZ3N0ciAiPG4+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNworbXNnaWQgIiAoeS9uKSIKK21zZ3N0ciAiIChpL24pIgorCisjOiBlMmZzY2svdXRpbC5jOjI0MAorbXNnaWQgImNhbmNlbGxlZCFcbiIKK21zZ3N0ciAibWVnc3pha8OtdHZhIVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAiaWdlbiBtaW5kZW5yZVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NgorbXNnaWQgInllc1xuIgorbXNnc3RyICJpZ2VuXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAibmVtXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBuZW1cbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBpZ2VuXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJpZ2VuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgIm5vIgorbXNnc3RyICJuZW0iCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWfDoWxpcyBiaXR0w6lya8OpcGJsb2trb2sgZWhoZXo6ICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgImlub2RlLSDDqXMgYmxva2tiaXR0w6lya8OpcGVrIG9sdmFzw6FzYSIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAiJXMgYml0dMOpcmvDqXBlaSBvbHZhc8Ohc8OhbmFrIMO6anJhcHLDs2LDoWzDoXNha29yIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgImJsb2trLSDDqXMgaW5vZGUgYml0dMOpcmvDqXBlayDDrXLDoXNhIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICIlcyBibG9ray0gw6lzIGlub2RlIGJpdHTDqXJrw6lwZWluZWsgw7pqcmHDrXLDoXNha29yIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IFbDgVJBVExBTiBJTktPTlpJU1pURU5DSUE7IEZVVFRBU1NBIEvDiVpaRUwgQVogZnNjayBQQVJBTkNTT1QuXG4iCisiXHQoYXpheiBhIC1hIHZhZ3kgLXAga2FwY3NvbMOzayBuw6lsa8O8bClcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICJIYXN6bsOhbHQgbWVtw7NyaWE6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIkhhc3puw6FsdCBtZW3Ds3JpYTogJWx1LCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDQwCisjLCBjLWZvcm1hdAorbXNnaWQgInRpbWU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCittc2dzdHIgImlkxZE6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAiZWx0ZWx0IGlkxZE6ICU2LjNmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDgwIGUyZnNjay91dGlsLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICIlbHUgaW5vZGUgb2x2YXPDoXNha29yIGl0dDogJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICIlbHUgaW5vZGUgw61yw6FzYWtvciBpdHQ6ICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKyJWw4FSQVRMQU4gSU5LT05aSVNaVEVOQ0lBOiBhIGbDoWpscmVuZHN6ZXJ0IG3Ds2Rvc8OtdGrDoWsgYXogZnNjayBmdXTDoXNhIGvDtnpiZW4uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzIKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJrw6lzeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiSGFzem7DoWxhdDogJXMgWy1iIGJsb2trbcOpcmV0XSBbLWkgYmVtZW5ldGlfZsOhamxdIFstbyBraW1lbmV0aV9mw6FqbF1cbiIKKyIgICAgICAgICAgIFstc3Z3bmZdIFstYyBibG9ra29rX2VneXN6ZXJyZV0gWy1kIGvDqXNsZWx0ZXTDqXNfb2x2YXPDoXNva19rw7Z6dF1cbiIKKyIgICAgICAgICAgIFstZSBtYXhfcm9zc3pfYmxva2tva10gWy1wIGzDqXDDqXNla19zesOhbWFdIFstdCB0ZXN6dG1pbnRhXG4iCisiICAgICAgICAgICBbLXQgdGVzenRtaW50YSBbLi4uXV1dIGVzemvDtnogW3V0b2xzw7NfYmxva2sgW2Vsc8WRX2Jsb2trXV1cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzOiBhIC1uIMOpcyAtdyBrYXBjc29sw7NrIGvDtmxjc8O2bsO2c2VuIGtpesOhcmrDoWsgZWd5bcOhc3QuXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2LjJmJSUgZG9uZSwgJXMgZWxhcHNlZC4gKCVkLyVkLyVkIGVycm9ycykiCittc2dzdHIgIiU2LjJmJSUga8Opc3osICVzIHRlbHQgZWwuICglZC8lZC8lZCBoaWJhKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAiVGVzenRlbMOpcyB2w6lsZXRsZW4gbWludMOhdmFsOiIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiVGVzenRlbMOpcyAweCBtaW50w6F2YWwiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgInBvemljaW9uw6Fsw6FzIGvDtnpiZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAiRnVyYSDDqXJ0w6lrICglbGQpIGEgZG9fcmVhZC1iZW5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICJheiBleHQyZnNfc3luY19kZXZpY2UgaMOtdsOhcyBrw7Z6YmVuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgImEgaGliw6FzYmxva2stbGlzdGEgYmVqw6Fyw6Fzw6FuYWsgbWVna2V6ZMOpc2Uga8O2emJlbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgInB1ZmZlcmVrIGZvZ2xhbMOhc2Frb3IiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkJsb2trb2sgZWxsZW7FkXJ6w6lzZSAlbHUgw6lzICVsdSBrw7Z6w7Z0dFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyMAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtb25seSBtb2RlXG4iCittc2dzdHIgIkhpYsOhcyBibG9ra29rIGtlcmVzw6lzZSBjc2FrIG9sdmFzaGF0w7MgbcOzZGJhblxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiSGliw6FzIGJsb2trb2sga2VyZXPDqXNlIChjc2FrIG9sdmFzaGF0w7MgdGVzenQpOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTM2IG1pc2MvYmFkYmxvY2tzLmM6NjQzIG1pc2MvYmFkYmxvY2tzLmM6Njg1CisjOiBtaXNjL2JhZGJsb2Nrcy5jOjgzMgorbXNnaWQgIlRvbyBtYW55IGJhZCBibG9ja3MsIGFib3J0aW5nIHRlc3RcbiIKK21zZ3N0ciAiVMO6bCBzb2sgaGliw6FzIGJsb2trLCB0ZXN6dCBtZWdzemFrw610w6FzYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJIaWLDoXMgYmxva2tvayBrZXJlc8Opc2Ugw61yaGF0w7Mtb2x2YXNoYXTDsyBtw7NkYmFuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICIlbHUgw6lzICVsdSBrw7Z6dGkgYmxva2tva1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICJPbHZhc8OhcyDDqXMgw7Zzc3plaGFzb25sw610w6FzOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJIaWLDoXMgYmxva2tvayBrZXJlc8Opc2UgbmVtIGRlc3RydWt0w612IMOtcmhhdMOzLW9sdmFzaGF0w7MgbcOzZGJhblxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICJIaWLDoXMgYmxva2tvayBrZXJlc8Opc2UgKG5lbSBkZXN0cnVrdMOtdiDDrXJoYXTDsy1vbHZhc2hhdMOzIHRlc3p0XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKyJcbiIKKyJNZWdzemFrw610w6FzIMOpcmtlemV0dCwgdGFrYXLDrXTDoXNcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJ0ZXN6dGFkYXRvayDDrXLDoXNha29yLCAlbHUuIGJsb2trIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBjc2F0b2x2YSB2YW47ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgImJhZGJsb2NrcyBrw6lueXN6ZXLDrXR2ZSBtaW5kZW5rw6lwcC4gUmVtw6lsasO8aywgYSAvZXRjL210YWIgaGVseXRlbGVuLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgImEgYmFkYmxvY2tzIGZ1dHRhdMOhc2EgbmVtIGJpenRvbnPDoWdvcyFcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIiVzIG55aWx2w6FudmFsw7NhbiBoYXN6bsOhbGF0YmFuIHZhbiBhIHJlbmRzemVyIMOhbHRhbDsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiYmFkYmxvY2tzIGvDqW55c3plcsOtdHZlIG1pbmRlbmvDqXBwLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCAlcyAtICVzIgorbXNnc3RyICLDqXJ2w6lueXRlbGVuICVzIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTEyNworIywgYy1mb3JtYXQKK21zZ2lkICJUb28gYmlnIG1heCBiYWQgYmxvY2tzIGNvdW50ICV1IC0gbWF4aW11bSBpcyAldSIKK21zZ3N0ciAiQSBoaWLDoXMgYmxva2tvayBtYXhpbcOhbGlzIHN6w6FtYSAoJXUpIHTDumwgbmFneSwgYSBtYXhpbXVtOiAldSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgIm5lbSBmb2dsYWxoYXTDsyBtZW3Ds3JpYSBhIHRlc3RfcGF0dGVybiBzesOhbcOhcmEgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIkNzYWsgb2x2YXNoYXTDsyBtw7NkYmFuIGxlZ2ZlbGplYmIgZWd5IHRlc3RfcGF0dGVybiBhZGhhdMOzIG1lZyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiQSB2w6lsZXRsZW4gdGVzdF9wYXR0ZXJuIG5lbSBlbmdlZMOpbHllemV0dCBjc2FrIG9sdmFzaGF0w7MgbcOzZGJhbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjA0Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG1hbnVhbGx5XG4iCittc2dzdHIgIk5lbSBoYXTDoXJvemhhdMOzIG1lZyBheiBlc3prw7Z6bcOpcmV0LCBhZGphIG1lZyBzYWrDoXQga2V6xbFsZWdcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAiYXogZXN6a8O2em3DqXJldCBtZWdoYXTDoXJvesOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxNQorbXNnaWQgImxhc3QgYmxvY2siCittc2dzdHIgInV0b2xzw7MgYmxva2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJlbHPFkSBibG9rayIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICLDqXJ2w6lueXRlbGVuIGtlemTFkSBibG9rayAoJWxsdSk6IGtpc2ViYiBrZWxsIGxlZ3llbiwgbWludCAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiw6lydsOpbnl0ZWxlbiBiZWZlamV6xZEgYmxva2sgKCVsbHUpOiAzMiBiaXRlcyDDqXJ0w6lrIGtlbGwgbGVneWVuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyODcKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IgorbXNnc3RyICJhIGhpYsOhcyBibG9ra29rIG1lbcOzcmnDoWJhbiBsw6l2xZEgbGlzdMOhasOhbmFrIGzDqXRyZWhvesOhc2Ega8O2emJlbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgImJlbWVuZXRpIGbDoWpsIC0gaGliw6FzIGZvcm3DoXR1bSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgImEgaGliw6FzIGJsb2trb2sgbWVtw7NyacOhYmFuIGzDqXbFkSBsaXN0w6Fqw6Fob3ogYWTDoXMga8O2emJlbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICJMw6lww6lzIGvDqXN6LCAldSBoaWLDoXMgYmxva2sgbWVndGFsw6FsdmEuICglZC8lZC8lZCBoaWJhKVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIgorbXNnc3RyICJIYXN6bsOhbGF0OiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJ6acOzXSBmw6FqbG9r4oCmXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAiaGliw6FzIHByb2pla3QgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgImhpYsOhcyB2ZXJ6acOzIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgIiVzIGVsw6lyw6lzw6lyZSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAiJXMgamVsesWRaW5layBvbHZhc8Ohc2Ega8O2emJlbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMzEgbWlzYy9jaGF0dHIuYzoyNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZ3Mgb2YgJXMgc2V0IGFzICIKK21zZ3N0ciAiJXMgamVsesWRaTogIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICIlcyBqZWx6xZFpbmVrIGJlw6FsbMOtdMOhc2Frb3IiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICIlcyB2ZXJ6acOzamE6ICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIiVzIHZlcnppw7Nqw6FuYWsgYmXDoWxsw610w6FzYWtvciIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIiVzIHByb2pla3RqZSBiZcOhbGzDrXR2YSwgbWludCAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICIlcyBwcm9qZWt0asOpbmVrIGJlw6FsbMOtdMOhc2Frb3IiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgw7p0dm9uYWwgdsOhbHRvesOzdCBmb2dsYWxuaSBhIGNoYXR0cl9kaXJfcHJvYyBow612w6FzYmFuIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICJheiA9IG5lbSBoYXN6bsOhbGhhdMOzIGVnecO8dHQgYSAtIMOpcyArIGplbGVra2VsXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIkEg4oCeLXbigJ0sID0sIC0gdmFneSArIGVneWlrw6l0IGtlbGwgaGFzem7DoWxuaVxuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgIiV1LiBpbm9kZSBvbHZhc8Ohc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiYSBrw7ZueXZ0w6FyIGtpYsWRdsOtdMOpc2Vrb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGxpbmtlbMOpc2Vrb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAiJXUuIGlub2RlIMOtcsOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGF0dHJpYsO6dHVtYWluYWsga2nDrXLDoXNha29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICIldS4gaW5vZGUgbWVnbnlpdMOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAibWVtw7NyaWEgZm9nbGFsw6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAi4oCeJTIkc+KAnSDigJ4lMSRz4oCdIGF0dHJpYsO6dHVtw6FuYWsgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGF0dHJpYnV0ZSBcIiVzXCIgdG8gaW5vZGUgJXUiCittc2dzdHIgIuKAniVz4oCdIGF0dHJpYsO6dHVtICV1LiBpbm9kZS1iYSDDrXLDoXNha29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICIldS4gaW5vZGUgbGV6w6Fyw6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGlub2RlIGZvZ2xhbMOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGlub2RlIFwiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0gaW5vZGUgbMOpdHJlaG96w6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIHN6aW1ib2xpa3VzIGxpbmsgbMOpdHJlaG96w6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGtpa2VyZXPDqXNla29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICLigJ4lc+KAnSBrw7ZueXZ0w6FyIGzDqXRyZWhvesOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgIuKAniVz4oCdIG3DoXNvbMOhc3JhIG1lZ255aXTDoXNha29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIm11bmtha8O2bnl2dMOhciB2w6FsdMOhc2Frb3IgZXJyZTog4oCeJXPigJ0iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0ga8O2bnl2dMOhciBtZWdueWl0w6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbHN0YXQgXCIlc1wiIgorbXNnc3RyICLigJ4lc+KAnSBlbMOpcsOpc8OpcmUgdGV0dCBrw61zw6lybGV0a29yIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICLigJ4lc+KAnSBzcGVjacOhbGlzIGbDoWpsIGzDqXRyZWhvesOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzYwCittc2dpZCAibWFsbG9jIGZhaWxlZCIKK21zZ3N0ciAiQSBtZW3Ds3JpYWZvZ2xhbMOhcyBtZWdoacO6c3VsdCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlYWQgbGluayBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGxpbmsgb2x2YXPDoXPDoXJhIHRldHQga8Otc8OpcmxldGtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NzUKK21zZ2lkICJzeW1saW5rIGluY3JlYXNlZCBpbiBzaXplIGJldHdlZW4gbHN0YXQoKSBhbmQgcmVhZGxpbmsoKSIKK21zZ3N0ciAiYSBzemltbGluayBtw6lyZXRlIG7FkXR0IGF6IGxzdGF0KCkgw6lzIHJlYWRsaW5rKCkga8O2esO2dHQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0gc3ppbWxpbmsgw61yw6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0gZsOhamwgw61yw6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgIuKAniVz4oCdIGvDtm55dnTDoXIgbWVnbnlpdMOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJrw7ZueXZ0w6FydsOhbHTDoXNrb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0gYmVqZWd5esOpcyBmaWd5ZWxtZW4ga8OtdsO8bCBoYWd5w6FzYSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICLigJ4lc+KAnSBpbm9kZS1qw6FuYWsgYmXDoWxsw610w6FzYWtvciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAi4oCeJXPigJ0gYsWRdsOtdGV0dCBhdHRyaWLDunR1bWFpbmFrIGJlw6FsbMOtdMOhc2Frb3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgImF6IGlub2RlIGFkYXRhaW5hayBtZW50w6lzZWtvciIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iZmdoaXhWXSBbLW8gc3VwZXJibG9jaz08bnVtPl0gWy1vIGJsb2Nrc2l6ZT08bnVtPl0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJIYXN6bsOhbGF0OiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxzesOhbT5dIFstbyBibG9ja3NpemU9PHN6w6FtPl0gIgorImVzemvDtnpcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE1OQorbXNnaWQgImJsb2NrcyIKK21zZ3N0ciAiYmxva2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAiZsO8cnQiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiR3JvdXAgJWx1OiAoQmxvY2tzICIKK21zZ3N0ciAiJWx1LiBjc29wb3J0OiAoQmxva2tvayAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGNzdW0gMHglMDR4IgorbXNnc3RyICIgZcO2c3N6IDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoVsOBUlQ6IDB4JTA0eCkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAlcyBzdXBlcmJsb2NrIGF0ICIKK21zZ3N0ciAiICAlcyBzenVwZXJibG9rayBpdHQ6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgIkVsc8WRZGxlZ2VzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJUYXJ0YWzDqWsiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzgKK21zZ2lkICIsIEdyb3VwIGRlc2NyaXB0b3JzIGF0ICIKK21zZ3N0ciAiLCBDc29wb3J0bGXDrXLDs2sgaXR0OiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDIKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgRmVubnRhcnRvdHQgR0RUIGJsb2trb2sgaXR0OiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBDc29wb3J0bGXDrXLDsyBpdHQ6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICBCbG9ra2JpdHTDqXJrw6lwIGl0dDoiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIsIGXDtnNzeiAweCUwOHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKyJcbiIKKyIgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2Cittc2dpZCAiIElub2RlIGJpdG1hcCBhdCAiCittc2dzdHIgIiBJbm9kZSBiaXR0w6lya8OpcCBpdHQ6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgSW5vZGUgdMOhYmxhIGl0dDoiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKyJcbiIKKyIgICV1IHN6YWJhZCAlcywgJXUgc3phYmFkIGlub2RlLCAldSBrw7ZueXZ0w6FyJXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCAldSB1bnVzZWQgaW5vZGVzXG4iCittc2dzdHIgIiwgJXUgbmVtIGhhc3puw6FsdCBpbm9kZVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIgIFN6YWJhZCBibG9ra29rOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgU3phYmFkIGlub2RlLW9rOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiYSBoaWLDoXMgYmxva2tvayBsaXN0w6Fqw6FuYWsga2nDrXLDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIkhpYsOhcyBibG9ra29rOiAldSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM4NSBtaXNjL3R1bmUyZnMuYzozNjIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIm5hcGzDsyBpbm9kZSBvbHZhc8Ohc2Ega8O2emJlbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5MQorbXNnaWQgIndoaWxlIG9wZW5pbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAibmFwbMOzIGlub2RlIG1lZ255aXTDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgIm5hcGzDsyBzenVwZXJibG9ra2rDoW5hayBvbHZhc8Ohc2Ega8O2emJlbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiQSBuYXBsw7NzenVwZXJibG9rayBixbF2w7ZzIHN6w6FtYSDDqXJ2w6lueXRlbGVuIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJOYXBsw7MgamVsbGVtesWRaTogICAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIk5hcGzDsyBtw6lyZXRlOiAgICAgICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIk5hcGzDsyBob3NzemE6ICAgICAgICAgICAgICV1XG4iCisiTmFwbMOzc29yb3phdDogICAgICAgICAgICAgMHglMDh4XG4iCisiTmFwbMOzIGtlemRldGU6ICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICJOYXBsw7MgZWxsZW7FkXJ6xZHDtnNzemVnw6luZWsgdMOtcHVzYTogICAgY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorIk5hcGzDsyBlbGxlbsWRcnrFkcO2c3N6ZWfDqW5layB0w61wdXNhOiAgICAlc1xuIgorIk5hcGzDsyBlbGxlbsWRcnrFkcO2c3N6ZWdlOiAgICAgICAgICAgICAgMHglMDh4XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBlcnJubzogICAgICAgICAgICAlZFxuIgorbXNnc3RyICJOYXBsw7MgaGliYXN6w6FtYTogICAgICAgICAgJWRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAibmFwbMOzIHN6dXBlcmJsb2trasOhbmFrIG9sdmFzw6FzYWtvciIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgIkEgbmFwbMOzc3p1cGVyYmxva2sgYsWxdsO2cyBzesOhbWFpIG5lbSB0YWzDoWxoYXTDs2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5hcGzDsyBibG9ra23DqXJldGU6ICAgICAgICAldVxuIgorIk5hcGzDsyBob3NzemE6ICAgICAgICAgICAgICV1XG4iCisiTmFwbMOzIGVsc8WRIGJsb2tramE6ICAgICAgICV1XG4iCisiTmFwbMOzc29yb3phdDogICAgICAgICAgICAgMHglMDh4XG4iCisiTmFwbMOzIGtlemRldGU6ICAgICAgICAgICAgJXVcbiIKKyJOYXBsw7MgZmVsaGFzem7DoWzDs3N6w6FtYTogICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdXNlcnM6ICAgICAgICAgICAgJXNcbiIKK21zZ3N0ciAiTmFwbMOzIGZlbGhhc3puw6Fsw7NpOiAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZW3Ds3Jpw6F0IGZvZ2xhbG5pIGEgYmXDoWxsw610w6Fzb2sgZmVsZG9sZ296w6Fzw6Fob3ohXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBzenVwZXJibG9rayBwYXJhbcOpdGVyOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBibG9ra23DqXJldCBwYXJhbcOpdGVyOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgZXh0ZW5kZWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrIG51bWJlcj5cbiIKKyJcdGJsb2Nrc2l6ZT08YmxvY2tzaXplPlxuIgorbXNnc3RyICIiCisiXG4iCisiQSBtZWdhZG90dCBixZF2w610ZXR0IGJlw6FsbMOtdMOhc29rIGhpYsOhc2FrOiAlc1xuIgorIlxuIgorIkEgYsWRdsOtdGV0dCBiZcOhbGzDrXTDoXNva2F0IHZlc3N6xZEgdsOhbGFzenRqYSBlbCwgw6lzIGVneSBhcmd1bWVudHVtb3QgIgorInbDoXJoYXRuYWssXG4iCisiXHRhbWl0IGVneSBlZ3llbmzFkXPDqWdqZWwgKCc9Jykga2V6ZC5cbiIKKyJcbiIKKyLDiXJ2w6lueWVzIGLFkXbDrXRldHQgYmXDoWxsw610w6Fzb2s6XG4iCisiXHRzdXBlcmJsb2NrPTxzenVwZXJibG9rayBzesOhbWE+XG4iCisiXHRibG9ja3NpemU9PGJsb2trbcOpcmV0PlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx0JXMgaGFzem7DoWxhdMOhdmFsXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiogRWxsZW7FkXJ6xZHDtnNzemVnLWhpYsOhayB2YW5uYWsgYSBmw6FqbHJlbmRzemVyZW4hIEZ1dHRhc3NhIGF6IGUyZnNjay10ICIKKyJtb3N0IVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiTmVtIHRhbMOhbGhhdMOzIMOpcnbDqW55ZXMgZsOhamxyZW5kc3plci1zenVwZXJibG9ray5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBFbGxlbsWRcnrFkcO2c3N6ZWctaGliw6FrIHZhbm5hayBhIGJpdHTDqXJrw6lwZWtiZW4hIEZ1dHRhc3NhIGF6IGUyZnNjay10ICIKKyJtb3N0IVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAlczogaGliYSBhIGJpdHTDqXJrw6lwZWsgb2x2YXPDoXNha29yOiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiSGFzem7DoWxhdDogJXMgWyAtcnxRIF0gWyAtZnIgXSBlc3prw7Z6IGxlbWV6a8OpcGbDoWpsXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICAgICAlcyAtSSBlc3prw7Z6IGxlbWV6a8OpcGbDoWpsXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIGZvcnLDoXNfZWx0b2zDoXMgXSBbIC1PIGPDqWxfZWx0b2zDoXMgXSAiCisiZm9ycsOhc19mciBbIGPDqWxfZnIgXVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgInB1ZmZlciBmb2dsYWzDoXNha29yIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIiVsbHUgYmxva2sgw61yw6FzYWtvclxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJIaWJhIGEoeikgJWxsdS4gYmxva2sgw61yw6FzYWtvciIKKworIzogbWlzYy9lMmltYWdlLmM6MTk2Cittc2dpZCAiZXJyb3IgaW4gZ2VuZXJpY193cml0ZSgpIgorbXNnc3RyICJoaWJhIGEgZ2VuZXJpY193cml0ZSgpIGbDvGdndsOpbnliZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxMworbXNnaWQgIkVycm9yOiBoZWFkZXIgc2l6ZSBpcyBiaWdnZXIgdGhhbiB3cnRfc2l6ZVxuIgorbXNnc3RyICJIaWJhOiBhIGZlamzDqWMgbcOpcmV0ZSBuYWd5b2JiLCBtaW50IGEgd3J0X3NpemVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjE4Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgaGVhZGVyIGJ1ZmZlclxuIgorbXNnc3RyICJOZW0gc2lrZXLDvGx0IGZlamzDqWNwdWZmZXJ0IGZvZ2xhbG5pXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAiYSBzenVwZXJibG9rayDDrXLDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgImF6IGlub2RlIHTDoWJsYSDDrXLDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJhIGJsb2trYml0dMOpcmvDqXAgw61yw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiYXogaW5vZGUgYml0dMOpcmvDqXAgw61yw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJTw6lyw7xsdCBrw7ZueXZ0w6FyYmxva2sgKCVsbHUpOiBhIHJlY19sZW4gKCVkKSBoaWLDoXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIlPDqXLDvGx0IGvDtm55dnTDoXJibG9rayAoJWxsdSk6IGEgbmFtZV9sZW4gKCVkKSBoaWLDoXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUgLyAlbGx1IGJsb2trICglZCUlKSIKKworIzogbWlzYy9lMmltYWdlLmM6NTg5IG1pc2MvZTJpbWFnZS5jOjYyOQorbXNnaWQgIkNvcHlpbmcgIgorbXNnc3RyICJNw6Fzb2zDoXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiQSBtb3N0YW5pIGxlw6FsbMOtdMOhcyBtZWdzZW1taXPDrXRlbsOpIGEgZsOhamxyZW5kc3plcnQsIHN6YWvDrXRzYSBtZWcgw7pqcmEsIGhhICIKKyJiaXp0b3NcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIgJXMgbWFyYWQsICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NjY0IG1pc2MvZTJpbWFnZS5jOjExOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3IgcmVhZGluZyBibG9jayAlbGx1IgorbXNnc3RyICJoaWJhIGEoeikgJWxsdSBibG9rayBvbHZhc8Ohc2Frb3IiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIiVsbHUgLyAlbGx1IGJsb2trIMOhdG3DoXNvbHZhICglZCUlKSAlcyBhbGF0dCAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcyMgorIywgYy1mb3JtYXQKK21zZ2lkICJhdCAlLjJmIE1CL3MiCittc2dzdHIgIiUuMmYgTUIvcyBzZWJlc3PDqWdnZWwiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgImF6IGwxIHTDoWJsYSBmb2dsYWzDoXNha29yIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJheiBsMiBneW9yc8OtdMOzdMOhciBmb2dsYWzDoXNha29yIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorIkZpZ3llbG1lenRldMOpczogTcOpZyB2YW5uYWsgdMOhYmzDoWsgYSBneW9yc8OtdMOzdMOhcmJhbiBhbm5hayBixZF2w610w6lzZWtvciwgIgorImFkYXR2ZXN6dMOpcyBmb2cgdMO2cnTDqW5uaSwgw61neSBhIGxlbWV6a8OpcCBlc2V0bGVnIG5lbSBsZXN6IMOpcnbDqW55ZXMuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjExNDgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImF6IGV4dDJfcWNvdzJfaW1hZ2UgZm9nbGFsw6FzYWtvciIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJheiBleHQyX3Fjb3cyX2ltYWdlIGVsxZFrw6lzesOtdMOpc2Vrb3IiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICJQcm9ncmFtb3rDoXNpIGhpYmE6IHTDtmJiIGVneW3DoXN0IGvDtnZldMWRIHJlZmNvdW50IGJsb2trIGrDtnR0IGzDqXRyZSFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJhIGJsb2trYml0dMOpcmvDqXAgbGVmb2dsYWzDoXNhIGvDtnpiZW4iCisKKyMgRklYTUU6IGVubmVrIHV0w6FuYW7DqXpuaQorIzogbWlzYy9lMmltYWdlLmM6MTI4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICJhIGtldmVydCBibG9ra2JpdHTDqXJrw6lwIGxlZm9nbGFsw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjg4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGVzLi4uXG4iCittc2dzdHIgIklub2RlLW9rIHZpenNnw6FsYXRh4oCmXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIk5lbSBmb2dsYWxoYXTDsyBibG9ra3B1ZmZlciIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICIldS4gaW5vZGUgYmVqw6Fyw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzg1Cittc2dpZCAiUmF3IGFuZCBxY293MiBpbWFnZXMgY2Fubm90IGJlIGluc3RhbGxlZCIKK21zZ3N0ciAiQSByYXcgw6lzIHFjb3cyIGxlbWV6a8OpcGVrIG5lbSB0ZWxlcMOtdGhldMWRayIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiaGliYSBhIGJpdHTDqXJrw6lwZWsgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5Cittc2dpZCAid2hpbGUgb3BlbmluZyBkZXZpY2UgZmlsZSIKK21zZ3N0ciAiYXogZXN6a8O2embDoWpsIG1lZ255aXTDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MzAKK21zZ2lkICJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIgorbXNnc3RyICJhIGxlbWV6a8OpcHTDoWJsYSBoZWx5cmXDoWxsw610w6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAiYSAtYSBrYXBjc29sw7MgY3NhayByYXcgdmFneSBRQ09XMiBsZW1lemvDqXBla2tlbCBoYXN6bsOhbGhhdMOzLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJBeiBlbHRvbMOhc29rIGNzYWsgbnllcnMgbGVtZXprw6lwZWtrZWwgZW5nZWTDqWx5ZXpldHRlay4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkF6IMOhdGhlbHllesOpc2kgbcOzZCBjc2FrIG55ZXJzIGxlbWV6a8OpcGVra2VsIGVuZ2Vkw6lseWV6ZXR0LiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiQXogw6F0aGVseWV6w6lzaSBtw7NkIHRlbGplcyBhZGF0IG3Ds2RvdCBpZ8OpbnllbC4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJjc2F0b2x0c8OhZyBlbGxlbsWRcnrDqXNlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisiXG4iCisi4oCoQXogZTJpbWFnZSDDrXLDoXNyYS9vbHZhc8Ohc3JhIGNzYXRvbHQgZsOhamxyZW5kc3plcmVuIHZhbMOzIGhhc3puw6FsYXRhICIKKyJpbmtvbnppc3p0ZW5zXG4iCisibGVtZXprw6lwZXQgZXJlZG3DqW55ZXpoZXQsIGFtaSBuZW0gaGFzem5vcyBoaWJha2VyZXPDqXNpIGPDqWxva3JhLlxuIgorIkhhc3puw6FsamEgYSAtZiBrYXBjc29sw7N0LCBoYSB0w6lueWxlZyBlenQgc3plcmV0bsOpLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgImEgUUNPVzIgbGVtZXprw6lwIG5lbSDDrXJoYXTDsyBhIHN6YWJ2w6FueW9zIGtpbWVuZXRyZSFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYyMAorbXNnaWQgIkNhbiBub3Qgc3RhdCBvdXRwdXRcbiIKK21zZ3N0ciAiQSBraW1lbmV0IG5lbSDDqXJoZXTFkSBlbFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICJBIGxlbWV6a8OpcCAoJXMpIHTDtm3DtnLDrXRldHRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICJBIGxlbWV6a8OpcCAoJXMpIHRpdGtvc8OtdG90dFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAiIgorImEgY293MiBsZW1lemvDqXAgKCVzKSByYXcgbGVtZXprw6lwcMOpICglcykgYWxha8OtdMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIkEgLWMga2FwY3NvbMOzIGNzYWsgcmF3IG3Ds2RiYW4gdMOhbW9nYXRvdHRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIkEgLWMga2FwY3NvbMOzIG5lbSB0w6Ftb2dhdG90dCBhIHN6YWJ2w6FueW9zIGtpbWVuZXRyZSDDrXLDoXNrb3JcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJhIGNoZWNrX2J1ZiBmb2dsYWzDoXNha29yIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJBIC1wIGthcGNzb2zDsyBjc2FrIHJhdyBtw7NkYmFuIHTDoW1vZ2F0b3R0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCBibG9rayBtw6FyIHRhcnRhbG1henRhIGEgbcOhc29sYW5kw7MgYWRhdG9rYXRcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6ICVzIC1yIGVzemvDtnpcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IG9wZW4gJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogYSh6KSAlcyBuZW0gbnlpdGhhdMOzIG1lZ1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IG5lbSBsZWhldCBhIHN6dXBlcmJsb2trcmEgcG96aWNpb27DoWxuaVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogaGliYSBhIHN6dXBlcmJsb2trIG9sdmFzw6FzYWtvclxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGV6IG5lbSBleHQyIGbDoWpscmVuZHN6ZXJcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6OTcgbWlzYy90dW5lMmZzLmM6Mjk3OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzOiBhIGPDrW1rZSB0w7psIGhvc3N6w7osIGNzb25rw610w6FzLlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9jayBhZ2FpblxuIgorbXNnc3RyICJlMmxhYmVsOiBuZW0gbGVoZXQgw7pqcmEgYSBzenVwZXJibG9ra3JhIHBvemljaW9uw6FsbmlcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBoaWJhIGEgc3p1cGVyYmxva2sgw61yw6FzYSBrw7Z6YmVuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6IGUybGFiZWwgZXN6a8O2eiBbw7pqX2PDrW1rZV1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICJIYXN6bsOhbGF0OiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuemFrY2nDs3NfZsOhamw+IDxmw6FqbHJlbmRzemVyPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIHN6dXBlcmJsb2tramEgbmVtIGZlbGVsIG1lZyBhIHZpc3N6YXZvbsOhc2kgZsOhamzDqW5hay5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJBeiBVVUlEIG5lbSBlZ3llemlrLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiQXogdXRvbHPDsyBjc2F0b2zDoXNpIGlkxZEgbmVtIGVneWV6aWsuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUwCittc2dpZCAiTGFzdCB3cml0ZSB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJBeiB1dG9sc8OzIMOtcsOhc2kgaWTFkSBuZW0gZWd5ZXppay5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTIKK21zZ2lkICJMaWZldGltZSB3cml0ZSBjb3VudGVyIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJBeiDDqWxldHRhcnRhbS3DrXLDoXNzesOhbWzDoWzDsyBuZW0gZWd5ZXppay5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgImbDoWpscmVuZHN6ZXIgc3p1cGVyYmxva2tqw6FuYWsgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL2UydW5kby5jOjE4MgorbXNnaWQgIndoaWxlIGZldGNoaW5nIHN1cGVyYmxvY2siCittc2dzdHIgImEgc3p1cGVyYmxva2sgbGVrw6lyw6lzZWtvciIKKworIzogbWlzYy9lMnVuZG8uYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiQSB2aXNzemF2b27DoXNpIGbDoWpsIHN6dXBlcmJsb2trasOhbmFrIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGVneWV6aWsuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIsOpcnbDqW55dGVsZW4gZWx0b2zDoXMgLSAlcyIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiTmVtIGZvZ29rIGVneSB2aXNzemF2b27DoXNpIGbDoWpsYmEgw61ybmkgYW5uYWsgw7pqcmFqw6F0c3rDoXNhIGvDtnpiZW4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgdW5kbyBmaWxlIGAlcydcbiIKK21zZ3N0ciAi4oCeJXPigJ0gdmlzc3phdm9uw6FzaSBmw6FqbCBtZWdueWl0w6FzYWtvclxuIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICJhIHZpc3N6YXZvbsOhc2kgZsOhamwgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IEV6IG5lbSB2aXNzemF2b27DoXNpIGbDoWpsLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiVzOiBBIGZlamzDqWMgZWxsZW7FkXJ6xZHDtnNzemVnZSBuZW0gZWd5ZXppay5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiJXM6IEEgdmlzc3phdm9uw6FzaSBmw6FqbCBmZWpsw6ljZSBzw6lyw7xsdC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iCittc2dzdHIgIiVzOiBBIHZpc3N6YXZvbsOhc2kgYmxva2ttw6lyZXQgdMO6bCBuYWd5LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiJXM6IEEgdmlzc3phdm9uw6FzaSBibG9ra23DqXJldCB0w7psIGtpY3NpLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVzOiBBIHZpc3N6YXZvbsOhc2kgZsOhamxob3ogaXNtZXJldGxlbiBqZWxsZW16xZEgdmFuIGJlw6FsbMOtdHZhLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJIaWJhICVzIGNzYXRvbHQgw6FsbGFwb3TDoW5hayBtZWdoYXTDoXJvesOhc2Ega8O2emJlbi4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgIkF6IGUydW5kbyBwYXJhbmNzb3QgY3NhayBsZXbDoWxhc3p0b3R0IGbDoWpscmVuZHN6ZXJla2VuIGxlaGV0IGZ1dHRhdG5pIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGAlcyciCittc2dzdHIgIuKAniVz4oCdIG1lZ255aXTDoXNha29yIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICJhIG1lZ2Fkb3R0IGVsdG9sw6FzIHTDumwgbmFneSIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgImt1bGNzb2sgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL2UydW5kby5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogd3Jvbmcga2V5IG1hZ2ljIGF0ICVsbHVcbiIKK21zZ3N0ciAiJXM6IGhpYsOhcyBhIGt1bGNzIGLFsXbDtnMgc3rDoW1hIGl0dDogJWxsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczoga2V5IGJsb2NrIGNoZWNrc3VtIGVycm9yIGF0ICVsbHUuXG4iCittc2dzdHIgIiVzOiBoaWJhIGEga3VsY3NibG9rayBlbGxlbsWRcnrFkcO2c3N6ZWfDqWJlbiBpdHQ6ICVsbHUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiJXM6IGEoeikgJWxsdSBibG9rayB0w7psIGhvc3N6w7ouIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiJWxsdSBibG9rayBlbMOpcsOpc2Vrb3IuIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKyJlbGxlbsWRcnrFkcO2c3N6ZWctaGliYSBhKHopICVsbHUuIGbDoWpscmVuZHN6ZXJibG9ra2JhbiAodmlzc3phdm9uw6FzaSBibG9razogIgorIiVsbHUpXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgImEoeikgJWxsdS4gYmxva2sgw61yw6FzYWtvci4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiQSB2aXNzemF2b27DoXNpIGbDoWpsIHPDqXLDvGx0LCBmdXR0YXNzYSBheiBlMmZzY2stdCBNT1NUIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiSS9PIGhpYmEgYSB2aXNzemFqw6F0c3rDoXNrb3IsIGZ1dHRhc3NhIGF6IGUyZnNjay10IE1PU1QhXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIk5lbSB0ZWxqZXMgdmlzc3phdm9uw6FzaSByZWtvcmQsIGZ1dHRhc3NhIGF6IGUyZnNjay10LlxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6ICBmaW5kc3VwZXIgZXN6a8O2eiBba2loYWd5b3R0YsOhanRvayBba2V6ZMWRa2JdXVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiYSBraWhhZ3lvdHRiw6FqdG9rIHN6w6FtIGtlbGwgbGVneWVuLCBuZW0gJXNcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAiYSBraWhhZ3lvdHRiw6FqdG9rIGEgc3pla3Rvcm3DqXJldCB0w7ZiYnN6w7Zyw7ZzZSBrZWxsIGxlZ3llblxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgImEga2V6ZMWRa2Igc3rDoW0ga2VsbCBsZWd5ZW4sIG5lbSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAiYSBrZXpkxZFrYiBwb3ppdMOtdiBrZWxsIGxlZ3llbiwgbmVtICVsbHVcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAia2V6ZMOpcyBpdHQ6ICVsbHUsICV1IGLDoWp0b3MgbsO2dmVrbcOpbm55ZWxcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisiWypdIHZhbMOzc3rDrW7FsWxlZyBheiBleHQzIG5hcGzDsyBzenVwZXJibG9ra2JhIMOtcnQgc3p1cGVyYmxva2ssXG4iCisiXHTDrWd5IGEga2V6ZMWRL3bDqWcvY3NvcG9ydCByb3NzelxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy8iCisibW91bnRfdGltZSAgICAgICAgICAgc2JfdXVpZCBsYWJlbFxuIgorbXNnc3RyICIiCisiYsOhanRfZWx0b2wgICBiw6FqdF9rZXpkICAgICAgYsOhanRfdsOpZyAgZnNfYmxva2sgIGJsa21ydCBjc29wIG1rZnMvIgorImNzYXRvbF9pZMWRICAgICAgICAgICBzYl91dWlkIGPDrW1rZVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorIlxuIgorIiUxMUx1OiBiZWZlamV6xZFkw7Z0dCBlenplbCBhIGhpYmFzesOhbW1hbDogJWRcbiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIkZJR1lFTE1FWlRFVMOJUzogJXMgbWVnbnlpdMOhc2Egc2lrZXJ0ZWxlbjogJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGJhZCBmb3JtYXQgb24gbGluZSAlZCBvZiAlc1xuIgorbXNnc3RyICJGSUdZRUxNRVpURVTDiVM6IGhpYsOhcyBmb3Jtw6F0dW0gJTIkcyAlMSRkLiBzb3LDoWJhblxuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKK21zZ2lkICIiCisiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisiXHRmaWVsZC4gIEkgd2lsbCBrbHVkZ2UgYXJvdW5kIHRoaW5ncyBmb3IgeW91LCBidXQgeW91XG4iCisiXHRzaG91bGQgZml4IHlvdXIgL2V0Yy9mc3RhYiBmaWxlIGFzIHNvb24gYXMgeW91IGNhbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZJR1lFTE1FWlRFVMOJUzogQXogL2V0Yy9mc3RhYiBmw6FqbCBuZW0gdGFydGFsbWF6emEgYXogZnNjayBwYXNzbm8gbWV6xZF0LlxuIgorIlx0RXp0IG1vc3QgbWVna2Vyw7xsw7ZtLCBkZSB0w6lueWxlZyBraSBrZWxsZW5lIGphdsOtdGFuaSBheiAvZXRjL2ZzdGFiXG4iCisiXHRmw6FqbHQsIGFtaW50IGNzYWsgbGVoZXQuXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBuZW0gdGFsw6FsaGF0w7NcbiIKKworIzogbWlzYy9mc2NrLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3YWl0OiBObyBtb3JlIGNoaWxkIHByb2Nlc3M/IT9cbiIKK21zZ3N0ciAiJXM6IHbDoXJqdW5rIGNzYWs6IG5pbmNzIHTDtmJiIGd5ZXJtZWtmb2x5YW1hdD8/P1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzOiAlcyBlemVuIGVzemvDtnpow7Z6OiAlcywgJWQgc3ppZ27DoWxsYWwgbMOpcGV0dCBraS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBheiDDoWxsYXBvdCAleCwgc29oYSBuZW0gZm9yZHVsaGF0bmEgZWzFkS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJCZWZlamV6xZFkw7Z0dCBlenplbDogJXMgKGtpbMOpcMOpc2kgw6FsbGFwb3Q6ICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIlczogJWQuIGhpYmEgYXogZnNjay4lcyB2w6lncmVoYWp0w6FzYWtvciBlcnJlOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIkEgLXQga2FwY3NvbMOzbmFrIMOhdGFkb3R0IGbDoWpscmVuZHN6ZXJ0w61wdXNva2LDs2wgdmFneSBheiDDtnNzemVzLFxuIgorInZhZ3kgZWd5aWsgc2VtIGthcGhhdCDigJ5ub+KAnSB2YWd5IOKAniHigJ0gZWzFkXRhZ290LlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZW3Ds3Jpw6F0IGZvZ2xhbG5pIGEgZsOhamxyZW5kc3plcnTDrXB1c29raG96XG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczogaGliw6FzIHNvciDDoXR1Z3LDoXNhIGF6IC9ldGMvZnN0YWIgZsOhamxiYW46IGJpbmQgY3NhdG9sw6FzIG5lbSBudWxsYSBmc2NrICIKKyJsw6lww6lzc3rDoW1tYWxcbiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXMgbmVtIGVsbGVuxZFyaXpoZXTFkTogYXogZnNjay4lcyBuZW0gdGFsw6FsaGF0w7NcbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiTWluZGVuIGbDoWpscmVuZHN6ZXIgZWxsZW7FkXJ6w6lzZS5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS12w6FyYWtvesOhcy0tICglZC4gbMOpcMOpcylcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIkhhc3puw6FsYXQ6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmcl90w61wdXNdIFtmci1rYXBjc29sw7NdICIKKyJbZsOhamxyZW5kc3plciDigKZdXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXM6IHTDumwgc29rIGVzemvDtnpcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IFTDumwgc29rIGFyZ3VtZW50dW1cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc0MAorbXNnaWQgIk1vdW50aW5nIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiQ3NhdG9sw6FzIGNzYWsgb2x2YXNoYXTDs2vDqW50LlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBBbGxvd2luZyB1c2VycyB0byBhbGxvY2F0ZSBhbGwgYmxvY2tzLiBUaGlzIGlzIGRhbmdlcm91cyFcbiIKK21zZ3N0ciAiIgorIiVzOiBBeiDDtnNzemVzIGJsb2trIGxlZm9nbGFsw6Fzw6FuYWsgZW5nZWTDqWx5ZXrDqXNlIGEgZmVsaGFzem7DoWzDs2tuYWsgIgorInZlc3rDqWx5ZXMhXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiVzOiAlcy5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICJGdXR0YXNzYSBheiDigJ5lMmZzY2sgLWZ5ICVz4oCdIHBhcmFuY3NvdC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisiQSBuYXBsw7MgaGVseXJlw6FsbMOtdMOhc3QgaWfDqW55ZWwsIGF6IOKAnmUyZnNjayAtRSBqb3VybmFsX29ubHnigJ0gZnV0dGF0w6FzYSAiCisic3rDvGtzw6lnZXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFdyaXRpbmcgdG8gdGhlIGpvdXJuYWwgaXMgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiJXM6IEEgbmFwbMOzYmEgw61yw6FzIG5lbSB0w6Ftb2dhdG90dC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IGVsbGVuxZFyaXpldGxlbiBmw6FqbHJlbmRzemVyIGNzYXRvbMOhc2EsIGZ1dHRhc3NhIGF6IGUyZnNjay0iCisidC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IG1heGltw6FsaXMgY3NhdG9sw6Fzb2sgc3rDoW1hIGVsw6lydmUsIGZ1dHRhc3NhIGF6IGUyZnNjay10LlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzOiBlbGxlbsWRcnrDqXNpIGlkxZEgZWzDqXJ2ZSwgZnV0dGFzc2EgYXogZTJmc2NrLXQuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzQKK21zZ2lkICJPcnBoYW5zIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiw4FydmEgaW5vZGUtb2sgdGFsw6FsaGF0w7NrLCBmdXR0YXNzYSBheiBlMmZzY2stdC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIkhpYsOhayB0YWzDoWxoYXTDs2ssIGZ1dHRhc3NhIGF6IGUyZnNjay10LlxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiSGFzem7DoWxhdDogJXMgWy1SVmFkbHB2XSBbZsOhamxva+KApl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICIlcyBqZWx6xZFpbmVrIG9sdmFzw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiJXMgcHJvamVrdGrDqW5layBvbHZhc8Ohc2Ega8O2emJlbiIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICIlcyB2ZXJ6acOzasOhbmFrIG9sdmFzw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdIFstQyBjbHVzdGVyLXNpemVdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgaW5vZGUtc2l6ZV0gWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKyJcdFstRyBmbGV4LWdyb3VwLXNpemVdIFstTiBudW1iZXItb2YtaW5vZGVzXSBbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisiXHRbLW0gcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2VdIFstbyBjcmVhdG9yLW9zXVxuIgorIlx0Wy1nIGJsb2Nrcy1wZXItZ3JvdXBdIFstTCB2b2x1bWUtbGFiZWxdIFstTSBsYXN0LW1vdW50ZWQtZGlyZWN0b3J5XVxuIgorIlx0Wy1PIGZlYXR1cmVbLC4uLl1dIFstciBmcy1yZXZpc2lvbl0gWy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXVsteiAiCisidW5kb19maWxlXVxuIgorIlx0Wy1qbnF2REZTVl0gZGV2aWNlIFtibG9ja3MtY291bnRdXG4iCittc2dzdHIgIiIKKyJIYXN6bsOhbGF0OiAlcyBbLWN8LWwgZsOhamxuw6l2XSBbLWIgYmxva2ttw6lyZXRdIFstQyBmw7xydG3DqXJldF1cbiIKKyJcdFstaSBiw6FqdG9rX2lub2RlLW9ua8OpbnRdIFstSSBpbm9kZS1tw6lyZXRdIFstSiBuYXBsw7NiZcOhbGzDrXTDoXNva11cbiIKKyJcdFstRyBydWdhbG1hc19jc29wb3J0bcOpcmV0XSBbLU4gaW5vZGUtb2tfc3rDoW1hXSBbLWQgZ3nDtmvDqXJrw7ZueXZ0w6FyXVxuIgorIlx0Wy1tIGZlbm50YXJ0b3R0X2Jsb2trb2tfc3rDoXphbMOpa2FdIFstbyBsw6l0cmVob3rDs19yZW5kc3plcl1cbiIKKyJcdFstZyBibG9ra29rX2Nzb3BvcnRvbmvDqW50XSBbLUwga8O2dGV0Y8OtbWtlXSBbLU0gdXRvbHPDs19jc2F0b2zDoXNpX2vDtm55dnTDoXJdXG4iCisiXHRbLU8gamVsbGVtesWRWyzigKZdXSBbLXIgZnJfdmVyemnDs10gWy1FIGLFkXbDrXRldHRfYmXDoWxsw610w6FzWyzigKZdXVxuIgorIlx0Wy10IGZyX3TDrXB1c10gWy1UIGhhc3puw6FsYXR0w61wdXNdIFstVSBVVUlEXSBbLWUgaGliYXZpc2Vsa2Vkw6lzXVxuIgorIlx0Wy16IHZpc3N6YXZvbsOhc2lfZsOhamxdIFstam5xdkRGU1ZdIGVzemvDtnogW2Jsb2trc3rDoW1dXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAiUGFyYW5jcyBmdXR0YXTDoXNhOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgIuKAniVz4oCdIGZ1dHRhdMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJhIGhpYsOhcyBibG9ra29rIHByb2dyYW1iw7NsIHN6w6FybWF6w7MgbGlzdMOhasOhbmFrIGZlbGRvbGdvesOhc2Frb3IiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICIiCisiQSh6KSAlZC4gYmxva2sgYXogZWxzxZFkbGVnZXMgc3p1cGVyYmxva2svY3NvcG9ydGxlw61yw7MgdGVyw7xsZXRlbiBoaWLDoXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJGw6FqbHJlbmRzemVyIGvDqXN6w610w6lzw6loZXogYSh6KSAldSDDqXMgJXUga8O2esO2dHRpIGJsb2trb2tuYWsgasOza25hayBrZWxsICIKKyJsZW5uacO8ay5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAiTWVnc3pha8OtdMOhc+KAplxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IGEgdGFydGFsw6lrIHN6dXBlcmJsb2trL2Nzb3BvcnRsZcOtcsOzayBhKHopICV1LiBibG9ra27DoWxcbiIKKyJcdGhpYsOhcyBibG9ra29rYXQgdGFydGFsbWF6bmFrLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICJhIGhpYsOhcyBibG9ra29rIGhhc3puw6FsdGvDqW50IGplbMO2bMOpc2Uga8O2emJlbiIKKworIzogbWlzYy9ta2UyZnMuYzo0MDgKK21zZ2lkICJXcml0aW5nIGlub2RlIHRhYmxlczogIgorbXNnc3RyICJJbm9kZSB0w6FibMOhayDDrXLDoXNha29yOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3Qgd3JpdGUgJWQgYmxvY2tzIGluIGlub2RlIHRhYmxlIHN0YXJ0aW5nIGF0ICVsbHU6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJOZW0gc2lrZXLDvGx0ICVkIGJsb2trIMOtcsOhc2EgYXogaW5vZGUgdMOhYmzDoWJhIGlubmVuIGtlemR2ZTogJWxsdTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NDQgbWlzYy9ta2UyZnMuYzoyNjU0IG1pc2MvbWtlMmZzLmM6MzAzMAorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgImvDqXN6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJhIGd5w7Zrw6lya8O2bnl2dMOhciBsw6l0cmVob3rDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJhIGd5w7Zrw6lyIGlub2RlIG9sdmFzw6FzYSBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ3OAorbXNnaWQgIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiCittc2dzdHIgImEgZ3nDtmvDqXIgaW5vZGUgdHVsYWpkb25vc8OhbmFrIGJlw6FsbMOtdMOhc2Ega8O2emJlbiIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiYSAvbG9zdCtmb3VuZCBsw6l0cmVob3rDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiYSAvbG9zdCtmb3VuZCBraWtlcmVzw6lzZSBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiYSAvbG9zdCtmb3VuZCBraWLFkXbDrXTDqXNlIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImEgaGliw6FzIGJsb2trb2sgaW5vZGUgYmXDoWxsw610w6FzYWtvciIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiRWxmb2d5b3R0IGEgbWVtw7NyaWEgYSh6KSAlZC0lZCBzemVrdG9yb2sgdMO2cmzDqXNlIGvDtnpiZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiRmlneWVsbWV6dGV0w6lzOiBuZW0gb2x2YXNoYXTDsyBhIDAuIGJsb2trOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjU4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgZXJhc2Ugc2VjdG9yICVkOiAlc1xuIgorbXNnc3RyICJGaWd5ZWxtZXp0ZXTDqXM6IG5lbSB0w7Zyw7ZsaGV0xZEgYSh6KSAlZC4gc3pla3RvcjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJuYXBsw7Mgc3p1cGVyYmxva2tqw6FuYWsgZWzFkWvDqXN6w610w6lzZWtvciIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgIk5hcGzDs2VzemvDtnogbnVsbMOhesOhc2E6ICIKKworIzogbWlzYy9ta2UyZnMuYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBqb3VybmFsIGRldmljZSAoYmxvY2sgJWxsdSwgY291bnQgJWQpIgorbXNnc3RyICJhIG5hcGzDs2VzemvDtnogbnVsbMOhesOhc2Ega8O2emJlbiAoJWxsdS4gYmxva2ssIHN6w6FtbMOhbMOzOiAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgIm5hcGzDsyBzenVwZXJibG9ra2rDoW5hayDDrXLDoXNha29yIgorCisjOiBtaXNjL21rZTJmcy5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggJWxsdSAlZGsgYmxvY2tzIGFuZCAldSBpbm9kZXNcbiIKK21zZ3N0ciAiRsOhamxyZW5kc3plciBsw6l0cmVob3rDoXNhICVsbHUgJWQgYmxva2thbCDDqXMgJXUgaW5vZGUtZGFsXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJmaWd5ZWxtZXp0ZXTDqXM6ICVsbHUgYmxva2sgaGFzem7DoWxhdG9uIGvDrXbDvGwgdmFuLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2NQorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGxhYmVsPSVzXG4iCittc2dzdHIgIkbDoWpscmVuZHN6ZXIgY8OtbWvDqWplPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIk9TIHTDrXB1c2E6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQmxva2ttw6lyZXQ9JXUgKG5hcGzDsz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2x1c3RlciBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIkbDvHJ0bcOpcmV0PSV1IChuYXBsw7M9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiVMO2cmVkw6lrIG3DqXJldGU9JXUgKG5hcGzDsz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICJTdHJpZGU9JXUgYmxva2ssIGNzw61rc3rDqWxlc3PDqWc9JXUgYmxva2tcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBpbm9kZSwgJWxsdSBibG9ra1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUgYmxva2sgKCUyLjJmJSUpIGZlbm50YXJ0dmEgYSByZW5kc3plcmdhemRhIHN6w6Ftw6FyYVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIkVsc8WRIGFkYXRibG9raz0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICJHecO2a8OpcmvDtm55dnTDoXIgdHVsYWpkb25vc2E9JXU6JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiRsOhamxyZW5kc3plcmJsb2trb2sgbWF4aW3DoWxpcyBzesOhbWE9JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSBibG9ra2Nzb3BvcnRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxva2tjc29wb3J0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9rayBjc29wb3J0b25rw6ludCwgJXUgZsO8cnQgY3NvcG9ydG9ua8OpbnRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9rayBjc29wb3J0b25rw6ludCwgJXUgdMO2cmVkw6lrIGNzb3BvcnRvbmvDqW50XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgaW5vZGUgY3NvcG9ydG9ua8OpbnRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJGw6FqbHJlbmRzemVyIFVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiVGFydGFsw6lrIHN6dXBlcmJsb2trb2sgdMOhcm9sdmEgYSBibG9ra29rb246ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyBhIOKAni1PIDY0Yml04oCdIG1lZ2Fkw6Fzw6F0IGlnw6lueWxpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAiYSh6KSDigJ4lc+KAnSBhIOKAnnJlc2l6ZT0ldeKAnSBlbMWRdHQga2VsbCBsZWd5ZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBkZXNjX3NpemU6IOKAniVz4oCdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIG9mZnNldDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NTMgbWlzYy90dW5lMmZzLmM6MTk1OAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCAjIG9mIGJhY2t1cCBzdXBlcmJsb2NrczogJXNcbiIKK21zZ3N0ciAiQSB0YXJ0YWzDqWsgc3p1cGVyYmxva2tvayBzesOhbWEgw6lydsOpbnl0ZWxlbjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIHN0cmlkZSBwYXJhbcOpdGVyOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gc3RyaXBlLXdpZHRoIHBhcmFtw6l0ZXI6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiByZXNpemUgcGFyYW3DqXRlcjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MzQKK21zZ2lkICJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkF6IMOhdG3DqXJldGV6w6lzaSBtYXhpbXVtIG5hZ3lvYmIga2VsbCBsZWd5ZW4gYSBmw6FqbHJlbmRzemVyIG3DqXJldMOpbsOpbC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIkF6IG9ubGluZSDDoXRtw6lyZXRlesOpcyBuZW0gdMOhbW9nYXRvdHQgMCByZXbDrXppw7Nqw7ogZsOhamxyZW5kc3plcmVra2VsXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIHJvb3Rfb3duZXI6IOKAniVz4oCdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkEgbWVnYWRvdHQgYsWRdsOtdGV0dCBiZcOhbGzDrXTDoXNvayBoaWLDoXNhazogJXNcbiIKKyJcbiIKKyJBIGLFkXbDrXRldHQgYmXDoWxsw610w6Fzb2thdCB2ZXNzesWRIHbDoWxhc3p0amEgZWwsIMOpcyBlZ3kgYXJndW1lbnR1bW90ICIKKyJ2w6FyaGF0bmFrLFxuIgorIlx0YW1pdCBlZ3kgZWd5ZW5sxZFzw6lnamVsICgnPScpIGtlemQuXG4iCisiXG4iCisiw4lydsOpbnllcyBixZF2w610ZXR0IGJlw6FsbMOtdMOhc29rOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08Z3lha29yaXPDoWc+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBsZW1lemVua8OpbnRpIGFkYXRkYXJhYiBibG9ra29rYmFuPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGFkYXRsZW1lemVrIGJsb2trb2tiYW4+XG4iCisiXHRvZmZzZXQ9PGVsdG9sw6FzIGEgZsOhamxyZW5kc3plciBsw6l0cmVob3rDoXPDoWhvej5cbiIKKyJcdHJlc2l6ZT08w6F0bcOpcmV0ZXrDqXNpIG1heGltw6FsaXMgbcOpcmV0IGJsb2trb2tiYW4+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgYSBraWthcGNzb2zDoXNob3osIDEgYSBiZWthcGNzb2zDoXNob3o+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIGEga2lrYXBjc29sw6FzaG96LCAxIGEgYmVrYXBjc29sw6FzaG96PlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgYSBraWthcGNzb2zDoXNob3osIDEgYSBiZWthcGNzb2zDoXNob3o+XG4iCisiXHRyb290X293bmVyPTxhIHJvb3Qga8O2bnl2dMOhciB1aWQtamE+OjxhIHJvb3Qga8O2bnl2dMOhciBnaWQtamU+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08ZW5nZWTDqWx5ZXplbmTFkSBrdsOzdGF0w61wdXNvaz5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGaWd5ZWxtZXp0ZXTDqXM6ICV1IFJBSUQgY3PDrWtzesOpbGVzc8OpZyBuZW0gcMOhcm9zIHTDtmJic3rDtnLDtnNlICV1IHN0cmlkZS1uYWsuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIlN6aW50YWt0aWthaSBoaWJhIGF6IG1rZTJmcyBiZcOhbGzDrXTDs2bDoWpsasOhYmFuICglcywgYSh6KSAlZC4gc29yYmFuKVxuIgorIlx0JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gZsOhamxyZW5kc3plci1iZcOhbGzDrXTDoXMgbGV0dCBtZWdhZHZhOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBjc2F0b2zDoXNpIGJlw6FsbMOtdMOhcyBsZXR0IG1lZ2FkdmE6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisiQXogbWtlMmZzLmNvbmYgZsOhamwgbmVtIGRlZmluacOhbGphIGEoeikgJXMgZsOhamxyZW5kc3plciB0w61wdXPDoXQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlZhbMOzc3rDrW7FsWxlZyB0ZWxlcMOtdGVuaSBrZWxsIGVneSBmcmlzc8OtdGV0dCBta2UyZnMuY29uZiBmw6FqbHQuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgIk1lZ3N6YWvDrXTDoXPigKZcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRmlneWVsbWV6dGV0w6lzOiBheiBmc190eXBlICVzIG5pbmNzIGRlZmluacOhbHZhIGF6IG1rZTJmcy5jb25mLWJhblxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIgorbXNnc3RyICJOZW0gc2lrZXLDvGx0IG1lbcOzcmnDoXQgZm9nbGFsbmkgYXogw7pqIFBBVEggc3rDoW3DoXJhLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgYSBwcm9maWwgZWzFkWvDqXN6w610w6lzZSAoaGliYTogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICLDqXJ2w6lueXRlbGVuIGJsb2trbcOpcmV0IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IGEoeikgJWQgYmxva2ttw6lyZXQgbmVtIGhhc3puw6FsaGF0w7MgYSBsZWd0w7ZiYiByZW5kc3plcmVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjbHVzdGVyIHNpemUgLSAlcyIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBmw7xydG3DqXJldCAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIkEg4oCeLVLigJ0gZWxhdnVsdCwgaGFzem7DoWxqYSBoZWx5ZXR0ZSBhIOKAni1F4oCdIGthcGNzb2zDs3QiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJhIGhpYmF2aXNlbGtlZMOpcyBoaWLDoXMgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIkEgY3NvcG9ydG9ua8OpbnRpIGJsb2trb2sgc3rDoW1hIMOpcnbDqW55dGVsZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICJhIGNzb3BvcnRvbmvDqW50aSBibG9ra29rIHN6w6Ftw6FuYWsgOCB0w7ZiYnN6w7Zyw7Zzw6luZWsga2VsbCBsZW5uaWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBmbGV4X2JnIHNpemUiCittc2dzdHIgIkEgZmxleF9iZyBtw6lyZXRoZXogbWVnYWRvdHQgc3rDoW0gw6lydsOpbnl0ZWxlbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICJhIGZsZXhfYmcgbcOpcmV0bmVrIDIgaGF0dsOhbnnDoW5hayBrZWxsIGxlbm5pZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJhIGZsZXhfYmcgbcOpcmV0ZSAoJWx1KSBsZWdmZWxqZWJiIDJeMzEgbGVoZXQiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAiYXogaW5vZGUgYXLDoW55ICglcykgw6lydsOpbnl0ZWxlbiAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAiw6lydsOpbnl0ZWxlbiBpbm9kZSBtw6lyZXQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorIkZpZ3llbG1lenRldMOpczogYSAtSyBrYXBjc29sw7MgZWxhdnVsdCwgbcOhciBuZSBoYXN6bsOhbGphLiBIZWx5ZXR0ZSBhIOKAni1FICIKKyJub2Rpc2NhcmTigJ0gYsWRdsOtdGV0dCBiZcOhbGzDrXTDoXMgaGFzem7DoWxoYXTDsy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICJhIG1hbGxvYy1iYW4gYSBiYWRfYmxvY2tzX2ZpbGVuYW1lLWhleiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICIiCisiRmlneWVsbWV6dGV0w6lzOiBhIGPDrW1rZSB0w7psIGhvc3N6w7osIGNzb25rw610dmEgbGVzeiBlcnJlOiDigJ4lc+KAnVxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJhIGZlbm50YXJ0b3R0IGJsb2trb2sgc3rDoXphbMOpa2Egw6lydsOpbnl0ZWxlbiAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG51bSBpbm9kZXMgLSAlcyIKK21zZ3N0ciAiYXogaW5vZGUtb2sgc3rDoW1hIGhpYsOhcyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NDAKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICJheiBmc19mZWF0dXJlIGthcmFrdGVybMOhbmMgZm9nbGFsw6FzYWtvciIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJoaWLDoXMgcmV2w616acOzc3ppbnQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgIiVkIHJldsOtemnDsyBsw6l0cmVob3rDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiQSAtdCBrYXBjc29sw7MgY3NhayBlZ3lzemVyIGhhc3puw6FsaGF0w7MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICJBIC1UIGthcGNzb2zDsyBjc2FrIGVneXN6ZXIgaGFzem7DoWxoYXTDsyIKKworIzogbWlzYy9ta2UyZnMuYzoxODQwIG1pc2MvbWtlMmZzLmM6MzExNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIGRldmljZSAlc1xuIgorbXNnc3RyICIlcyBuYXBsw7Nlc3prw7Z6IG1lZ255aXTDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorIkEgbmFwbMOzZXN6a8O2eiBibG9ra23DqXJldGUgKCVkKSBraXNlYmIsIG1pbnQgYSBtaW5pbcOhbGlzICVkIGJsb2trbcOpcmV0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiQSBuYXBsw7Nlc3prw7Z6IGJsb2trbcOpcmV0ZSBsZXN6IGZlbGhhc3puw6FsdmE6ICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrcyAnJXMnIG9uIGRldmljZSAnJXMnIgorbXNnc3RyICLDqXJ2w6lueXRlbGVuIGJsb2trb2s6IOKAniVz4oCdIGV6ZW4gYXogZXN6a8O2esO2bjog4oCeJXPigJ0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgImbDoWpscmVuZHN6ZXIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJhIGbDoWpscmVuZHN6ZXJtw6lyZXQgbWVnaGF0w6Fyb3rDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIk5lbSBoYXTDoXJvemhhdMOzIG1lZyBheiBlc3prw7Z6bcOpcmV0LCBtZWcga2VsbCBhZG5pYVxuIgorImEgZsOhamxyZW5kc3plciBtw6lyZXTDqXRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJBeiBlc3prw7Z6IGplbGVudGV0dCBtw6lyZXRlIG51bGxhLiDDiXJ2w6lueXRlbGVuIHBhcnTDrWNpw7N0IGFkb3R0IG1lZyxcbiIKKyJcdHZhZ3kgYSBwYXJ0w61jacOzcyB0w6FibGEgbmVtIGxldHQgw7pqcmFvbHZhc3ZhIGF6IGZkaXNrIGZ1dHRhdMOhc2EgdXTDoW4sXG4iCisiXHRtZXJ0IGVneSBtw7Nkb3PDrXRvdHQgcGFydMOtY2nDsyBmb2dsYWx0IMOpcyBoYXN6bsOhbGF0YmFuIHZhbi4gw5pqcmFpbmTDrXTDoXNyYVxuIgorIlx0bGVoZXQgc3rDvGtzw6lnIGEgcGFydMOtY2nDs3MgdMOhYmxhIMO6anJhb2x2YXPDoXPDoWhvei5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plciBuYWd5b2JiLCBtaW50IGEgbnlpbHbDoW52YWzDsyBsZW1lem3DqXJldC4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plci10w61wdXNvayBsaXN0w6FqYSBuZW0gZG9sZ296aGF0w7MgZmVsXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkEgSFVSRCBuZW0gdMOhbW9nYXRqYSBhIGZpbGV0eXBlIGplbGxlbXrFkXQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJBIEhVUkQgbmVtIHTDoW1vZ2F0amEgYSBodWdlX2ZpbGUgamVsbGVtesWRdC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDA4Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJBIEhVUkQgbmVtIHTDoW1vZ2F0amEgYSBtZXRhZGF0YV9jc3VtIGplbGxlbXrFkXQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgImEgaGFyZHZlciBzemVrdG9ybcOpcmV0IG1lZ2hhdMOhcm96w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAiYSBmaXppa2FpIHN6ZWt0b3Jtw6lyZXQgbWVnaGF0w6Fyb3rDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNTYKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsIGZvciBkZXZpY2VcbiIKK21zZ3N0ciAiYSBibG9ra23DqXJldCBiZcOhbGzDrXTDoXNhIGvDtnpiZW46IHTDumwga2ljc2kgYXogZXN6a8O2emjDtnpcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiRmlneWVsbWV6dGV0w6lzOiBhIG1lZ2Fkb3R0ICVkIGJsb2trbcOpcmV0IGtpc2ViYiBheiBlc3prw7Z6IGZpemlrYWkgJWQgIgorInN6ZWt0b3Jtw6lyZXTDqW7DqWxcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogU2l6ZSBvZiBkZXZpY2UgKDB4JWxseCBibG9ja3MpICVzIHRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG4iCisiXHRpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIgorbXNnc3RyICIiCisiJXM6IEF6IGVzemvDtnogbcOpcmV0ZSAoMHglbGx4IGJsb2trKSAlcyBkYXJhYmJhbCBuYWd5b2JiLFxuIgorIlx0bWludCBhbWkgMzIgYml0ZW4ga2lmZWplemhldMWRICVkIGJsb2trbcOpcmV0dGVsLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDEKK21zZ2lkICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorbXNnc3RyICJmc190eXBlcyBmZWxvbGTDoXNhIGF6IG1rZTJmcy5jb25mLWhvejogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXIgamVsbGVtesWRaSBuZW0gdMOhbW9nYXRvdHRhayAwIHJldsOtemnDs2rDuiBmw6FqbHJlbmRzemVyZWtrZWxcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIkEgcml0a2Egc3p1cGVyYmxva2tvayBuZW0gdMOhbW9nYXRvdHRhayAwIHJldsOtemnDs2rDuiBmw6FqbHJlbmRzemVyZWtrZWxcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiQSBuYXBsw7NrIG5lbSB0w6Ftb2dhdG90dGFrIDAgcmV2w616acOzasO6IGbDoWpscmVuZHN6ZXJla2tlbFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVsZiIKK21zZ3N0ciAiYSBmZW5udGFydG90dCBibG9ra29rIHN6w6F6YWzDqWthIMOpcnbDqW55dGVsZW4gLSAlbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIkF6IGV4dGVudGVrZXQgZW5nZWTDqWx5ZXpuaSBLRUxMIGEgNjQgYml0ZXMgZsOhamxyZW5kc3plcmVraGV6LiBBIC1PIGV4dGVudHMgIgorIm1lZ2Fkw6Fzw6F2YWwgamF2w610aGF0amEuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIkEgZsO8cnRtw6lyZXQgbmVtIGxlaGV0IGtpc2ViYiBhIGJsb2trbcOpcmV0bsOpbC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAiYSBmw7xydG3DqXJldCBtZWdhZMOhc2EgaWfDqW55bGkgYSBiaWdhbGxvYyBqZWxsZW16xZF0IgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgImZpZ3llbG1lenRldMOpczogTmVtIGvDqXJoZXTFkSBsZSBheiBlc3prw7Z6Z2VvbWV0cmlhIGVoaGV6OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIiVzIGlnYXrDrXTDoXNhIGVsdG9sdmEgJWx1IGLDoWp0dGFsLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiRXogcm9zc3ogdGVsamVzw610bcOpbnl0IG9rb3poYXQsIGphdmFzb2x0IGEoeiDDumpyYSlwYXJ0aWNpb27DoWzDoXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgImEoeikgJWQgYsOhanRvcyBibG9ra23DqXJldCB0w7psIG5hZ3kgYSByZW5kc3plcmhleiAobWF4aW11bTogJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IGEoeikgJWQgYsOhanRvcyBibG9ra23DqXJldCB0w7psIG5hZ3kgYSByZW5kc3plcmhleiAobWF4aW11bTogIgorIiVkKSwgZm9seXRhdMOhcyBrw6lueXN6ZXLDrXR2ZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKyJKYXZhc2xhdDogaGFzem7DoWxqYSBhIDMuMTgtYXMgdmFneSDDumphYmIgTGludXgga2VybmVsdCBhIG1ldGFhZGF0LSDDqXMgbmFwbMOzLSIKKyJlbGxlbsWRcnrFkcO2c3N6ZWcgamVsbGVtesWRayBzdGFiaWxhYmIgdMOhbW9nYXTDoXPDocOpcnQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IGF6IGVsdG9sw6FzIGtvbmtyw6l0IGbDoWpscmVuZHN6ZXJtw6lyZXQgbsOpbGvDvGwgbGV0dCBtZWdhZHZhLlxuIgorIkzDqXRyZWrDtm4gZWd5ICVsbHUgYmxva2tvcyBmw6FqbHJlbmRzemVyLCBkZSBuZW0gYml6dG9zLCBob2d5IGV6dCBha2FydGEuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiQSBiaWdhbGxvYyBqZWxsZW16xZEgbmVtIHTDoW1vZ2F0aGF0w7MgYXogZXh0ZW50cyBqZWxsZW16xZEgbsOpbGvDvGwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxOQorbXNnaWQgIiIKKyJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnIGZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKyJUaGV5IGNhbiBub3QgYmUgYm90aCBlbmFibGVkIHNpbXVsdGFuZW91c2x5LlxuIgorbXNnc3RyICIiCisiQSByZXNpemVfaW5vZGUgw6lzIG1ldGFfYmcgamVsbGVtesWRayBuZW0ga29tcGF0aWJpbGlzZWsuXG4iCisiRWd5c3plcnJlIG5lbSBlbmdlZMOpbHllemhldMWRIG1pbmRrZXR0xZEuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRmlneWVsbWV6dGV0w6lzOiBhIGJpZ2FsbG9jIGplbGxlbXrFkSBtw6lnIGZlamxlc3p0w6lzIGFsYXR0IHZhblxuIgorIlRvdsOhYmJpIGluZm9ybcOhY2nDs2vDqXJ0IGzDoXNkOiBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC8iCisiQmlnYWxsb2NcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJhIGZlbm50YXJ0b3R0IG9ubGluZSDDoXRtw6lyZXRlesOpc2kgYmxva2tvayBuZW0gdMOhbW9nYXRvdHRhayBuZW0gcml0a2EgIgorImbDoWpscmVuZHN6ZXJlbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImEgY3NvcG9ydG9ua8OpbnRpIGJsb2trc3rDoW0ga8OtdsO8bCBlc2lrIGEgdGFydG9tw6FueW9uIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorIkEgZmxleF9iZyBqZWxsZW16xZEgbmluY3MgZW5nZWTDqWx5ZXp2ZSwgw61neSBhIGZsZXhfYmcgbcOpcmV0ZSBuZW0gYWRoYXTDsyBtZWciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgJWQgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJheiBpbm9kZSBtw6lyZXQgKCVkKSDDqXJ2w6lueXRlbGVuIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisiJWQgYsOhanRvcyBpbm9kZS1vayB0w7psIGtpY3NpayBhIGJlw6FneWF6b3R0IGFkYXRva2hveiwgYWRqb24gbWVnIG5hZ3lvYmIgIgorIm3DqXJldGV0IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgcHJvamVjdCBxdW90YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiIgorIiVkIGLDoWp0b3MgaW5vZGUtb2sgdMO6bCBraWNzaWsgYSBwcm9qZWt0a3bDs3TDoWhveiwgYWRqb24gbWVnIG5hZ3lvYmIgbcOpcmV0ZXQiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgInTDumwgc29rIGlub2RlICglbGx1KSwgbsO2dmVsamUgYXogaW5vZGUgYXLDoW55dCIKKworIzogbWlzYy9ta2UyZnMuYzoyNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHNwZWNpZnkgPCAyXjMyIGlub2RlcyIKK21zZ3N0ciAidMO6bCBzb2sgaW5vZGUgKCVsbHUpLCAyXjMyLW7DqWwga2V2ZXNlYmJldCBhZGpvbiBtZWciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisiYXogaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdMO6bCBuYWd5IGVneSAlbGx1XG4iCisiXHRibG9ra29zIGbDoWpscmVuZHN6ZXJuZWssIGFkam9uIG1lZyBtYWdhc2FiYiBpbm9kZV9yYXRpbyAoLWkpIMOpcnTDqWtldFxuIgorIlx0dmFneSBjc8O2a2tlbnRzZSBheiBpbm9kZSBzesOhbW90ICgtTikuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICJFc3prw7Z6Ymxva2tvayBlbGRvYsOhc2E6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyNjQ5Cittc2dpZCAiZmFpbGVkIC0gIgorbXNnc3RyICJtZWdoacO6c3VsdCAtICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgImEga3bDs3RhIGtvbnRleHR1cyBlbMWRa8Opc3rDrXTDqXNla29yIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAia3bDs3RhIGlub2RlLW9rIMOtcsOhc2Frb3IiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJoaWLDoXMgaGliYXZpc2Vsa2Vkw6lzIGEgcHJvZmlsYmFuIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgxNAorbXNnaWQgIndoaWxlIHNldHRpbmcgdXAgc3VwZXJibG9jayIKK21zZ3N0ciAiYSBzenVwZXJibG9rayBiZcOhbGzDrXTDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJBeiBleHRlbnRlayBuaW5jc2VuZWsgZW5nZWTDqWx5ZXp2ZS4gQSBmw6FqbGV4dGVudGZhIGVsbGVuxZFyesWRw7Zzc3plZ2UgIgorImtlemVsaGV0xZEsIGRlIGEgYmxva2t0w6lya8OpcGVrw6kgbmVtLiBBeiBleHRlbnRlayBraWthcGNzb2zDoXNhIGNzw7Zra2VudGkgYSAiCisibWV0YWFkYXQtZWxsZW7FkXJ6w6lzIGxlZmVkZXR0c8OpZ8OpdC4gQSAtTyBleHRlbnRzIG1lZ2Fkw6Fzw6F2YWwgamF2w610aGF0amEuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzNworbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJBIDY0IGJpdGVzIGbDoWpscmVuZHN6ZXIgdMOhbW9nYXTDoXNhIG5pbmNzIGVuZ2Vkw6lseWV6dmUuIEEgamVsbGVtesWRIMOhbHRhbCAiCisidMOhbW9nYXRvdHQgbmFneW9iYiBtZXrFkWsgbGVoZXTFkXbDqSB0ZXN6aWsgYSB0ZWxqZXMgZXLFkXNzw6lnxbEgZWxsZW7FkXJ6w6lzdC4gQSAtTyAiCisiNjRiaXQgbWVnYWTDoXPDoXZhbCBqYXbDrXRoYXRqYS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiQSBtZXRhZGF0YV9jc3VtX3NlZWQgamVsbGVtesWRIGlnw6lueWxpIGEgbWV0YWRhdGFfY3N1bSBqZWxsZW16xZF0LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKyJBeiBlbGRvYsOhcyBzaWtlcsO8bHQsIMOpcyAwLWthdCBmb2cgdmlzc3phYWRuaSAtIGF6IGlub2RlIHTDoWJsYSB0w7ZybMOpc8OpbmVrICIKKyJraWhhZ3nDoXNhXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIG9zIC0gJXMiCittc2dzdHIgImlzbWVyZXRsZW4gb3ByZW5kc3plciAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJDc29wb3J0dMOhYmzDoWsgZm9nbGFsw6FzYTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgImEgZsOhamxyZW5kc3plciB0w6FibMOhayBsZWZvZ2xhbMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdEEgcsOpc3pmw7xydCBiaXR0w6lya8OpcMOpbmVrIGtvbnZlcnTDoWzDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBtYXkgYmUgZnVydGhlciBjb3JydXB0ZWQgYnkgc3VwZXJibG9jayByZXdyaXRlXG4iCittc2dzdHIgIiVzIHRvdsOhYmIgc8OpcsO8bGhldCBhIHN6dXBlcmJsb2trIMO6anJhw61yw6Fzw6F2YWxcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMDgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgYmxvY2sgJWxsdSBhdCBlbmQgb2YgZmlsZXN5c3RlbSIKK21zZ3N0ciAiJWxsdSBibG9rayBudWxsw6F6w6FzYWtvciBhIGbDoWpscmVuZHN6ZXIgdsOpZ8OpbiIKKworIzogbWlzYy9ta2UyZnMuYzozMDk1Cittc2dpZCAid2hpbGUgcmVzZXJ2aW5nIGJsb2NrcyBmb3Igb25saW5lIHJlc2l6ZSIKK21zZ3N0ciAiYmxva2tvayBmb2dsYWzDoXNha29yIGF6IG9ubGluZSDDoXRtw6lyZXRlesOpc2hleiIKKworIzogbWlzYy9ta2UyZnMuYzozMTA3IG1pc2MvdHVuZTJmcy5jOjE0MTUKK21zZ2lkICJqb3VybmFsIgorbXNnc3RyICJuYXBsw7MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiTmFwbMOzIGhvenrDoWFkw6FzYSBhKHopICVzIGVzemvDtnpow7Z6OiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gYWRkIGpvdXJuYWwgdG8gZGV2aWNlICVzIgorbXNnc3RyICIiCisiXG4iCisiXHROYXBsw7MgJXMgZXN6a8O2emjDtnogYWTDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzEgbWlzYy9ta2UyZnMuYzozMTYwIG1pc2MvbWtlMmZzLmM6MzIwMAorIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MTAgbWlzYy90dW5lMmZzLmM6MTQ0NCBtaXNjL3R1bmUyZnMuYzoxNDYzCittc2dpZCAiZG9uZVxuIgorbXNnc3RyICJrw6lzelxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzcKK21zZ2lkICJTa2lwcGluZyBqb3VybmFsIGNyZWF0aW9uIGluIHN1cGVyLW9ubHkgbW9kZVxuIgorbXNnc3RyICJOYXBsw7Nsw6l0cmVob3rDoXMga2loYWd5w6FzYSBjc2FrIHN6dXBlciBtw7NkYmFuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIk5hcGzDsyBsw6l0cmVob3rDoXNhICgldSBibG9rayk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHROYXBsw7MgbMOpdHJlaG96w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorIlxuIgorIkhpYmEgYSB0w7ZiYnN6w7Zyw7ZzIGNzYXRvbMOhcyBlbGxlbmkgdsOpZGVsZW0gc3pvbGfDoWx0YXTDoXMgYmVrYXBjc29sw6FzYWtvci4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIkEgdMO2YmJzesO2csO2cyBjc2F0b2zDoXMgZWxsZW5pIHbDqWRlbGVtIGJla2FwY3NvbHZhICVkIG3DoXNvZHBlcmNlcyBmcmlzc8OtdMOpc2kgIgorImd5YWtvcmlzw6FnZ2FsLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTEKK21zZ2lkICJDb3B5aW5nIGZpbGVzIGludG8gdGhlIGRldmljZTogIgorbXNnc3RyICJGw6FqbG9rIG3DoXNvbMOhc2EgYXogZXN6a8O2enJlOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5NworbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgImEgZsOhamxyZW5kc3plciBmZWx0w7ZsdMOpc2Vrb3IiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIwNAorbXNnaWQgIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogIgorbXNnc3RyICJTenVwZXJibG9ra29rIMOpcyBmw6FqbHJlbmRzemVyLWvDtm55dmVsw6lzaSBpbmZvcm3DoWNpw7NrIMOtcsOhc2E6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIkZpZ3llbG1lenRldMOpczogaGliYSB0w7ZydMOpbnQgYSBzenVwZXJibG9ra29rIGtpw61yw6FzYWtvci4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJrw6lzelxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorIkEoeikgJWxsdSAoJXVrKSBibG9ra29zIHBhcnTDrWNpw7NlbHRvbMOhcyBuZW0ga29tcGF0aWJpbGlzIGEoeikgJXUgIgorImbDvHJ0bcOpcmV0dGVsLlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIkF6IMOzcmnDoXNpIGbDoWpsb2sgbnVsbMOhenZhIGxlc3puZWtcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIiVsdSDDs3Jpw6FzaSBmw6FqbCBsw6l0cmVob3rDoXNhICIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICJlZ3llbmvDqW50ICVsbHUgYmxva2thbCIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlICVsdSIKK21zZ3N0ciAiJWx1LiDDs3Jpw6FzaSBmw6FqbCBsw6l0cmVob3rDoXNhIGvDtnpiZW4iCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgIkhhc3puw6FsYXQ6IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkhhc3puw6FsYXQ6ICAlcyBlc3prw7Z6Li4uXG4iCisiXG4iCisiUGFydMOtY2nDs2luZm9ybcOhY2nDs2thdCDDrXIga2kgbWluZGVuIG1lZ2Fkb3R0IGVzemvDtnpyxZFsLlxuIgorIlDDqWxkw6F1bDogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiJXMgbmVtIG55aXRoYXTDsyBtZWc6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIk5lbSBrw6lyaGV0xZEgbGUgJXMgZ2VvbWV0cmnDoWphOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIk5lbSBrw6lyaGV0xZEgbGUgYSh6KSAlcyBtw6lyZXRlOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIgorbXNnc3RyICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBrZXpkZXQ9JThkIG3DqXJldD0lOGx1IHbDqWc9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiRnV0dGFzc2EgYXog4oCeZTJmc2NrIC1E4oCdIHBhcmFuY3NvdCBhIGbDoWpscmVuZHN6ZXJlbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiRnV0dGFzc2EgYXog4oCeZTJmc2NrIC1E4oCdIHBhcmFuY3NvdCBhIGbDoWpscmVuZHN6ZXJlbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkhhc3puw6FsYXQ6ICVzIFstYyBtYXhfY3NhdG9sw6Fzc3rDoW1dIFstZSBoaWJhX3Zpc2Vsa2Vkw6lzXSBbLWZdIFstZyBjc29wb3J0XVxuIgorIlx0Wy1pIGd5YWtvcmlzw6FnW2R8bXx3XV0gWy1qXSBbLUogbmFwbMOzYmXDoWxsw610w6Fzb2tdIFstbF1cbiIKKyJcdFstbSBmZW5udGFydG90dF9ibG9ra29rX3N6w6F6YWzDqWthXSBbLW8gW15dY3NhdG9sw6FzaV9iZcOhbGzDrXTDoXNva1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfZnJpc3PDrXTDqXNpX2d5YWtvcmlzw6FnXSBbLXIgZmVubnRhcnRvdHRfYmxva2tva19zesOhbWFdIFstdSAiCisiZmVsaGFzem7DoWzDs11cbiIKKyJcdFstQyBjc2F0b2zDoXNva19zesOhbWFdIFstTCBrw7Z0ZXRjw61ta2VdIFstTSB1dG9sc8OzX2NzYXRvbMOhc2lfa8O2bnl2dMOhcl1cbiIKKyJcdFstTyBbXl1qZWxsZW16xZFbLC4uLl1dIFstUSBrdsOzdGFiZcOhbGzDrXTDoXNva11cbiIKKyJcdFstRSBixZF2w610ZXR0X2Jlw6FsbMOtdMOhc1ssLi4uXV0gWy1UIHV0b2xzw7NfZWxsZW7FkXJ6w6lzX2lkZWplXSBbLVUgVVVJRF1cbiIKKyJcdFsgLUkgw7pqX2lub2RlX23DqXJldCBdIFsteiB2aXNzemF2b27DoXNpX2bDoWpsXSBlc3prw7Z6XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIxOAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQhXG4iCittc2dzdHIgIkEgbmFwbMOzLXN6dXBlcmJsb2trIG5lbSB0YWzDoWxoYXTDsyFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAiYSBrw7xsc8WRIG5hcGzDsyBtZWdueWl0w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyIG1pc2MvdHVuZTJmcy5jOjI3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIG5lbSBuYXBsw7Nlc3prw7Z6LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTIgbWlzYy90dW5lMmZzLmM6MjcxMgorbXNnaWQgIkZpbGVzeXN0ZW0ncyBVVUlEIG5vdCBmb3VuZCBvbiBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIFVVSUQtamEgbmVtIHRhbMOhbGhhdMOzIGEgbmFwbMOzZXN6a8O2esO2bi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJOZW0gdGFsw6FsaGF0w7MgYSBuYXBsw7Nlc3prw7Z6LiBORU0ga2Vyw7xsdCBlbHTDoXZvbMOtdMOhc3JhLlxuIgorIkhhc3puw6FsamEgYSAtZiBrYXBjc29sw7N0IGhpw6FueXrDsyBuYXBsw7Nlc3prw7Z6IGVsdMOhdm9sw610w6Fzw6Fob3ouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICJOYXBsw7MgZWx0w6F2b2zDrXR2YVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgImJpdHTDqXJrw6lwZWsgb2x2YXPDoXNha29yIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJuYXBsw7MgaW5vZGUgdMO2cmzDqXNlIGvDtnpiZW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAibmFwbMOzIGlub2RlIMOtcsOhc2Frb3IiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIijDqXMgdXTDoW5hIGluZMOtdHNhIMO6anJhISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIkF6IGUyZnNjayBmdXR0YXTDoXNhIHV0w6FuIGZ1dHRhc3NhIGEg4oCecmVzaXplMmZzICVzICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICJGdXR0YXNzYSBhIOKAnnJlc2l6ZTJmcyAlcyAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiAteiBcIiVzXCIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAi4oCdIHBhcmFuY3NvdCBhIDY0IGJpdGVzIG3Ds2QgYmVrYXBjc29sw6Fzw6Fob3ouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIuKAnSBwYXJhbmNzb3QgYSA2NCBiaXRlcyBtw7NkIGtpa2FwY3NvbMOhc8OhaG96LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo5NzQKK21zZ2lkICIiCisiV0FSTklORzogQ291bGQgbm90IGNvbmZpcm0ga2VybmVsIHN1cHBvcnQgZm9yIG1ldGFkYXRhX2NzdW1fc2VlZC5cbiIKKyIgIFRoaXMgcmVxdWlyZXMgTGludXggPj0gdjQuNC5cbiIKK21zZ3N0ciAiIgorIkZJR1lFTE1FWlRFVMOJUzogTmVtIGVyxZFzw610aGV0xZEgbWVnIGEga2VybmVsIHN1cHBvcnQgbWV0YWRhdGFfY3N1bV9zZWVkXG4iCisiIGtlcm5lbGJlbGkgdMOhbW9nYXTDoXNhLiBFaGhleiBMaW51eCA+PSB2NC40IHN6w7xrc8OpZ2VzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIuKAniVz4oCdIGbDoWpscmVuZHN6ZXItamVsbGVtesWRIHTDtnJsw6lzZSBuZW0gdMOhbW9nYXRvdHQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICLigJ4lc+KAnSBmw6FqbHJlbmRzemVyLWplbGxlbXrFkSBiZcOhbGzDrXTDoXNhIG5lbSB0w6Ftb2dhdG90dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAyNQorbXNnaWQgIiIKKyJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJBIGhhc19qb3VybmFsIGplbGxlbXrFkSBjc2FrIGFra29yIHTDtnLDtmxoZXTFkSwgaGEgYSBmw6FqbHJlbmRzemVyIG5pbmNzICIKKyJjc2F0b2x2YSxcbiIKKyJ2YWd5IGNzYWsgb2x2YXNoYXTDs2FuIHZhbiBjc2F0b2x2YS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIkEgbmVlZHNfcmVjb3ZlcnkgamVsesWRIGJlIHZhbiDDoWxsw610dmEuIEEgaGFzX2pvdXJuYWwgamVsesWRIHTDtnJsw6lzZSBlbMWRdHRcbiIKKyJmdXR0YXNzYSBheiBlMmZzY2sgcHJvZ3JhbW90LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJBIOKAnnNwYXJzZV9zdXBlcuKAnSBmw6FqbHJlbmRzemVyLWplbGxlbXrFkSBiZcOhbGzDrXTDoXNhIG5lbSB0w6Ftb2dhdG90dFxuIgorImEgYmVrYXBjc29sdCBtZXRhX2JnIGplbGxlbXrFkXZlbCByZW5kZWxrZXrFkSBmw6FqbHJlbmRzemVyZWtoZXouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiQSB0w7ZiYnN6w7Zyw7ZzIGNzYXRvbMOhcyBlbGxlbmkgdsOpZGVsZW0gbmVtIMOhbGzDrXRoYXTDsyBiZSxcbiIKKyJoYSBhIGbDoWpscmVuZHN6ZXIgY3NhdG9sdmEgdmFuLCB2YWd5IGNzYWsgb2x2YXNoYXTDsy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWRzLlxuIgorbXNnc3RyICIiCisiQSB0w7ZiYnN6w7Zyw7ZzIGNzYXRvbMOhcyBlbGxlbmkgdsOpZGVsZW0gYmVrYXBjc29sdmEgJWQgbXAgZnJpc3PDrXTDqXNpICIKKyJneWFrb3Jpc8OhZ2dhbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisiQSB0w7ZiYnN6w7Zyw7ZzIGNzYXRvbMOhcyBlbGxlbmkgdsOpZGVsZW0gbmVtIGthcGNzb2xoYXTDsyBraSxcbiIKKyJoYSBhIGbDoWpscmVuZHN6ZXIgY3NhayBvbHZhc2hhdMOzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgIkhpYmEgYSBiaXR0w6lya8OpcGVrIG9sdmFzw6FzYWtvclxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICJBeiBNTVAgYmxva2tiYW4gbMOpdsWRIGLFsXbDtnMgc3rDoW0gbmVtIGVneWV6aWsuIFbDoXJ0OiAleCwgdMOpbnlsZWdlczogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAiYXogTU1QIGJsb2trIG9sdmFzw6FzYSBrw7Z6YmVuLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiQSBmbGV4X2JnIGplbHrFkSB0w7ZybMOpc2UgaW5rb256aXN6dGVuc3PDqSB0ZW5uw6kgYSBmw6FqbHJlbmRzemVydC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiQSBodWdlX2ZpbGUgamVsbGVtesWRIGNzYWsgYWtrb3IgdMO2csO2bGhldMWRLCBoYSBhIGbDoWpscmVuZHN6ZXIgbmluY3MgIgorImNzYXRvbHZhLFxuIgorInZhZ3kgY3NhayBvbHZhc2hhdMOzYW4gdmFuIGNzYXRvbHZhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiQXogZWxsZW7FkXJ6xZHDtnNzemVnZWsgZW5nZWTDqWx5ZXrDqXNlIGVsdGFydGhhdCBlZ3kgaWRlaWcuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICJBIG1ldGFkYXRhX2NzdW0gbmVtIGVuZ2Vkw6lseWV6aGV0xZEgY3NhdG9sdCBmw6FqbHJlbmRzemVyZW4hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiQXogZXh0ZW50ZWsgbmluY3NlbmVrIGVuZ2Vkw6lseWV6dmUuIEEgZsOhamxleHRlbnRmYSBlbGxlbsWRcnrFkcO2c3N6ZWdlICIKKyJrZXplbGhldMWRLCBkZSBhIGJsb2trdMOpcmvDqXBla8OpIG5lbS4gQXogZXh0ZW50ZWsga2lrYXBjc29sw6FzYSBjc8O2a2tlbnRpIGEgIgorIm1ldGFhZGF0LWVsbGVuxZFyesOpcyBsZWZlZGV0dHPDqWfDqXQuIEZ1dHRhc3NhIMO6anJhIGEgLU8gZXh0ZW50cyBtZWdhZMOhc8OhdmFsIGEgIgorImphdsOtdMOhc2hvei5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiQSA2NCBiaXRlcyBmw6FqbHJlbmRzemVyIHTDoW1vZ2F0w6FzYSBuaW5jcyBlbmdlZMOpbHllenZlLiBBIGplbGxlbXrFkSDDoWx0YWwgIgorInTDoW1vZ2F0b3R0IG5hZ3lvYmIgbWV6xZFrIGxlaGV0xZF2w6kgdGVzemlrIGEgdGVsamVzIGVyxZFzc8OpZ8WxIGVsbGVuxZFyesOpc3QuICIKKyJGdXR0YXNzYSBhIHJlc2l6ZTJmcyAtYiBwYXJhbmNzb3QgYSBqYXbDrXTDoXNob3ouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiQXogZWxsZW7FkXJ6xZHDtnNzemVnZWsgbGV0aWx0w6FzYSBlbHRhcnRoYXQgZWd5IGlkZWlnLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIkEgbWV0YWRhdGFfY3N1bSBuZW0gdGlsdGhhdMOzIGxlIGNzYXRvbHQgZsOhamxyZW5kc3plcmVuIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiQSA2NCBiaXRlcyBtw7NkIG5lbSBlbmdlZMOpbHllemhldMWRIGNzYXRvbHQgZsOhamxyZW5kc3plcmVuIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIkEgNjQgYml0ZXMgbcOzZCBuZW0gdGlsdGhhdMOzIGxlIGNzYXRvbHQgZsOhamxyZW5kc3plcmVuIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzEzCittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGaWd5ZWxtZXp0ZXTDqXM6IHByb2pla3QgZW5nZWTDqWx5ZXp2ZSBhIGt2w7N0YSBuw6lsa8O8bFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkZpZ3llbG1lenRldMOpczogYSAnXnF1b3RhJyBqZWxsZW16xZEgZmVsw7xsw61yamEgYSAnLVEnIGFyZ3VtZW50dW1haXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJBIOKAnm1ldGFkYXRhX2NzdW1fc2VlZOKAnSBmw6FqbHJlbmRzemVyLWplbGxlbXrFkSBiZcOhbGzDrXTDoXNhIGNzYWsgYSBiZWthcGNzb2x0XG4iCisibWV0YWRhdGFfY3N1bSBqZWxsZW16xZF2ZWwgcmVuZGVsa2V6xZEgZsOhamxyZW5kc3plcmVraGV6IHTDoW1vZ2F0b3R0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzYyCittc2dpZCAiIgorIlVVSUQgaGFzIGNoYW5nZWQgc2luY2UgZW5hYmxpbmcgbWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSAiCisidW5tb3VudGVkIFxuIgorInRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byBtYXRjaCB0aGUgbmV3IFVVSUQuXG4iCittc2dzdHIgIiIKKyJBeiBVVUlEIG1lZ3bDoWx0b3pvdHQgYSBtZXRhZGF0YV9jc3VtIGVuZ2Vkw6lseWV6w6lzZSDDs3RhLiBBIGbDoWpscmVuZHN6ZXJ0IGxlICIKKyJrZWxsIHbDoWxhc3p0YW5pIGF6IMO2c3N6ZXMgbWV0YWFkYXQgYml6dG9uc8OhZ29zIMO6anJhw61yw6Fzw6Fob3osIGhvZ3kgIgorIm1lZ2ZlbGVsamVuZWsgYXogw7pqIFVVSUQtbmVrLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgbcOhciByZW5kZWxrZXppayBuYXBsw7N2YWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiXHQlcyBuYXBsw7Nqw6FuYWsgbWVnbnlpdMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIgorbXNnc3RyICJOYXBsw7MgbMOpdHJlaG96w6FzYSAlcyBlc3prw7Z6w7ZuOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWRkaW5nIGZpbGVzeXN0ZW0gdG8gam91cm5hbCBvbiAlcyIKK21zZ3N0ciAiZsOhamxyZW5kc3plciBuYXBsw7Nob3ogYWTDoXNhIGvDtnpiZW4gZXplbjogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDYKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiCittc2dzdHIgIk5hcGzDsyBpbm9kZSBsw6l0cmVob3rDoXNhOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0TmFwbMOzZsOhamwgbMOpdHJlaG96w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ5OAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAiYSBrdsOzdGEga29udGV4dHVzIGVsxZFrw6lzesOtdMOpc2Vrb3IgYSB0w6Ftb2dhdMOzIHByb2dyYW1rw7ZueXZ0w6FyYmFuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJhIGt2w7N0YWtvcmzDoXRvayBmcmlzc8OtdMOpc2Vrb3IgKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAiYSBrdsOzdGFmw6FqbCDDrXLDoXNha29yICglZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJhIGt2w7N0YWbDoWpsIGVsdMOhdm9sw610w6FzYWtvciAoJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiSGliw6FzIGt2w7N0YWJlw6FsbMOtdMOhc29rIGxldHRlayBtZWdhZHZhLlxuIgorIlxuIgorIkEga8O2dmV0a2V6xZEgw6lydsOpbnllcyBrdsOzdGFiZcOhbGzDrXTDoXNvayDDqXJoZXTFkWsgZWwgKHZlc3N6xZF2ZWwgZWx2w6FsYXN6dHZhXG4iCisiYWRoYXTDs2sgbWVnKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiQSBkw6F0dW0vaWTFkW1lZ2hhdMOhcm96w6FzIG5lbSBkb2xnb3poYXTDsyBmZWw6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJhIGNzYXRvbMOhc3N6w6FtIGhpYsOhcyAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJhIGdpZC9jc29wb3J0bsOpdiBoaWLDoXMgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc0NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW50ZXJ2YWwgLSAlcyIKK21zZ3N0ciAiYSBneWFrb3Jpc8OhZyBoaWLDoXMgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc3NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2sgcmF0aW8gLSAlcyIKK21zZ3N0ciAiYSBmZW5udGFydG90dCBibG9ra29rIGFyw6FueWEgaGliw6FzIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiYSAtbyBjc2FrIGVneXN6ZXIgYWRoYXTDsyBtZWciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MDAKK21zZ2lkICItTyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiYSAtTyBjc2FrIGVneXN6ZXIgYWRoYXTDsyBtZWciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrcyBjb3VudCAtICVzIgorbXNnc3RyICJhIGZlbm50YXJ0b3R0IGJsb2trb2sgc3rDoW1hIGhpYsOhcyAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgImhpYsOhcyB1aWQvZmVsaGFzem7DoWzDs27DqXYgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJoaWLDoXMgaW5vZGUgbcOpcmV0IC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiQXogaW5vZGUgbcOpcmV0bmVrIGtldHTFkSBoYXR2w6FuecOhbmFrIGtlbGwgbGVubmllIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAiYXogbW1wX3VwZGF0ZV9pbnRlcnZhbCB0w7psIG5hZ3k6ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICIiCisiQSB0w7ZiYnN6w7Zyw7ZzIGNzYXRvbMOhcyBlbGxlbmkgdsOpZGVsZW0gZ3lha29yaXPDoWfDoW5hayBiZcOhbGzDrXTDoXNhICVsdSAiCisibcOhc29kcGVyY3JlXG4iCittc2dzdHJbMV0gIiIKKyJBIHTDtmJic3rDtnLDtnMgY3NhdG9sw6FzIGVsbGVuaSB2w6lkZWxlbSBneWFrb3Jpc8OhZ8OhbmFrIGJlw6FsbMOtdMOhc2EgJWx1ICIKKyJtw6Fzb2RwZXJjcmVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIFJBSUQgc3RyaWRlOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gUkFJRCBjc8Ota3N6w6lsZXNzw6lnOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaGFzaCBhbGdvcml0aG06ICVzXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gaGFzaCBhbGdvcml0bXVzOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIkF6IGFsYXDDqXJ0ZWxtZXpldHQgaGFzaCBhbGdvcml0bXVzIGJlw6FsbMOtdMOhc2EgZXJyZTogJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiQSBtZWdhZG90dCBixZF2w610ZXR0IGJlw6FsbMOtdMOhc29rIGhpYsOhc2FrOiAlc1xuIgorIlxuIgorIkEgYsWRdsOtdGV0dCBiZcOhbGzDrXTDoXNva2F0IHZlc3N6xZEgdsOhbGFzenRqYSBlbCwgw6lzIGVneSBhcmd1bWVudHVtb3QgIgorInbDoXJoYXRuYWssXG4iCisiXHRhbWl0IGVneSBlZ3llbmzFkXPDqWdqZWwgKCc9Jykga2V6ZC5cbiIKKyJcbiIKKyLDiXJ2w6lueWVzIGLFkXbDrXRldHQgYmXDoWxsw610w6Fzb2s6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRtdXM+XG4iCisiXHRtb3VudF9vcHRzPTxixZF2w610ZXR0IGFsYXDDqXJ0ZWxtZXpldHQgY3NhdG9sw6FzaSBiZcOhbGzDrXTDoXNvaz5cbiIKKyJcdHN0cmlkZT08UkFJRCBsZW1lemVua8OpbnRpIGRhcmFibcOpcmV0IGJsb2trb2tiYW4+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmFkYXRsZW1lemVrIGJsb2trb2tiYW4+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgYmVvbHZhc25pIGF6IGlub2RlIGJpdHTDqXJrw6lwZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUyNAorbXNnaWQgIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIgorbXNnc3RyICJOZW0gc2lrZXLDvGx0IGJlb2x2YXNuaSBhIGJsb2trYml0dMOpcmvDqXBldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICLDoXRoZWx5ZXplbmTFkSBibG9ra29rIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQ0Cittc2dpZCAiRmFpbGVkIHRvIGFsbG9jYXRlIGJsb2NrIGJpdG1hcCB3aGVuIGluY3JlYXNpbmcgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJBIGJsb2trYml0dMOpcmvDqXAgbGVmb2dsYWzDoXNhIHNpa2VydGVsZW4gYXogaW5vZGUgbcOpcmV0IG7DtnZlbMOpc2Vrb3JcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAiTmluY3MgZWzDqWcgaGVseSBheiBpbm9kZSBtw6lyZXQgbsO2dmVsw6lzw6loZXogXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIkEgYmxva2tvayDDoXRoZWx5ZXrDqXNlIHNpa2VydGVsZW4gYXogaW5vZGUtw6F0bcOpcmV0ZXrDqXNrb3IgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIkhpYmEgYXogaW5vZGUgbcOpcmV0IG3Ds2Rvc8OtdMOhc2Frb3IuXG4iCisiRnV0dGFzc2EgYXogZTJ1bmRvIHBhcmFuY3NvdCBhIGbDoWpscmVuZHN6ZXIgbcOzZG9zw610w6FzYWluYWsgIgorInZpc3N6YXZvbsOhc8OhaG96LiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJBeiBNTVAgYmxva2sgYsWxdsO2cyBzesOhbWEgaGliw6FzLiBQcsOzYsOhbGphIGphdsOtdGFuaSBhIGvDtnZldGtlesWRIGZ1dHRhdMOhc8OhdmFsOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MTEKK21zZ2lkICJDYW5ub3QgbW9kaWZ5IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIk5lbSBsZWhldCBuYXBsw7Nlc3prw7Z6dCBtw7Nkb3PDrXRhbmkuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiQXogaW5vZGUgbcOpcmV0IG3DoXIgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIkF6IGlub2RlIG3DqXJldCBjc8O2a2tlbnTDqXNlIG5lbSB0w6Ftb2dhdG90dFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaW5vZGUgc2l6ZSAlbHUgKG1heCAlZClcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBpbm9kZSBtw6lyZXQ6ICVsdSAobWF4OiAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIkF6IGlub2RlLW9rIMOhdG3DqXJldGV6w6lzZSBlbHRhcnRoYXQgZWd5IGlkZWlnLiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiQSBtYXhpbcOhbGlzIGNzYXRvbMOhc3N6w6FtIGJlw6FsbMOtdMOhc2EgZW5ueWlyZTogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiQXogYWt0dcOhbGlzIGNzYXRvbMOhc3N6w6FtIGJlw6FsbMOtdMOhc2EgZW5ueWlyZTogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIkEgaGliYXZpc2Vsa2Vkw6lzIGJlw6FsbMOtdMOhc2EgZXJyZTogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIkEgZmVubnRhcnRvdHQgYmxva2tvayBnaWQtasOpbmVrIGJlw6FsbMOtdMOhc2EgZXJyZTogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgaXMgdG9vIGJpZyAoJWx1KSIKK21zZ3N0ciAiYXogZWxsZW7FkXJ6w6lzZWsgaWTFkWvDtnplIHTDumwgbmFneSAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIkF6IGVsbGVuxZFyesOpc2VrIGvDtnp0aSBpZMWRa8O2eiBiZcOhbGzDrXTDoXNhICVsdSBtw6Fzb2RwZXJjcmVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICIiCisiQSBmZW5udGFydG90dCBibG9ra29rIHN6w6F6YWzDqWtvcyBhcsOhbnnDoW5hayBiZcOhbGzDrXTDoXNhIGVubnlpcmU6ICVnJSUgKCVsbHUgIgorImJsb2trKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAiYSBmZW5udGFydG90dCBibG9ra29rIHN6w6FtYSB0w7psIG5hZ3kgKCVsbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IHRvICVsbHVcbiIKK21zZ3N0ciAiQSBmZW5udGFydG90dCBibG9ra29rIHN6w6Ftw6FuYWsgYmXDoWxsw610w6FzYSBlcnJlOiAlbGx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisiQSBmw6FqbHJlbmRzemVyIG3DoXIgcmVuZGVsa2V6aWsgcml0a2Egc3p1cGVyYmxva2tva2thbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0NQorbXNnaWQgIiIKKyJcbiIKKyJTZXR0aW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyJBIHJpdGthIHN6dXBlcmJsb2trIGplbHrFkSBiZcOhbGzDrXTDoXNhIG5lbSB0w6Ftb2dhdG90dFxuIgorImEgYmVrYXBjc29sdCBtZXRhX2JnIGplbGxlbXrFkXZlbCByZW5kZWxrZXrFkSBmw6FqbHJlbmRzemVyZWtoZXouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJBIHJpdGthIHN6dXBlcmJsb2trIGplbHrFkSBiZcOhbGzDrXR2YS4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkEgcml0a2Egc3p1cGVyYmxva2sgamVsesWRIHTDtnJsw6lzZSBuZW0gdMOhbW9nYXRvdHQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plciB1dG9sc8OzIGVsbGVuxZFyesOpc2kgaWRlasOpbmVrIGJlw6FsbMOtdMOhc2EgZXJyZTogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIkEgZmVubnRhcnRvdHQgYmxva2tvayB1aWQtasOpbmVrIGJlw6FsbMOtdMOhc2EgZXJyZTogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIkhpYmEgYSBjbGVhcl9tbXAgaGFzem7DoWxhdGFrb3IuIEEgLWYga2FwY3NvbMOzdmFsIGVnecO8dHQgaGFzem7DoWxhbmTDs1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJBIGt2w7N0YSBqZWxsZW16xZEgY3NhayBha2tvciBtw7Nkb3PDrXRoYXTDsywgYW1pa29yIGEgZsOhamxyZW5kc3plciBsZSB2YW4gIgorInbDoWxhc3p0dmEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiQXogVVVJRCBjc2FrIGFra29yIG3Ds2Rvc8OtdGhhdMOzLCBhbWlrb3IgYSBmw6FqbHJlbmRzemVyIGxlIHZhbiB2w6FsYXN6dHZhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisiSGEgY3NhayBhIHY0LjQtbsOpbCDDumphYmIga2VybmVsdCBoYXN6bsOhbCwgZnV0dGFzc2EgYSDigJ50dW5lMmZzIC1PICIKKyJtZXRhZGF0YV9jc3VtX3NlZWTigJ0gcGFyYW5jc290LCBtYWpkIGZ1dHRhc3NhIMO6anJhIGV6dCBhIHBhcmFuY3NvdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisiQXogVVVJRCBiZcOhbGzDrXTDoXNhIGVneSBlbGxlbsWRcnrFkcO2c3N6ZWdldCBoYXN6bsOhbMOzIGbDoWpscmVuZHN6ZXJlbiBlbHRhcnRoYXQgIgorImVneSBpZGVpZy4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gVVVJRCBmb3Jtw6F0dW1cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEwMQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiQSBuYXBsw7Mgc3p1cGVyYmxva2tqw6F0IGZyaXNzw610ZW5pIGtlbGwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMjYKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiQXogaW5vZGUgbcOpcmV0IGNzYWsgYWtrb3IgbcOzZG9zw610aGF0w7MsIGFtaWtvciBhIGbDoWpscmVuZHN6ZXIgbGUgdmFuICIKKyJ2w6FsYXN6dHZhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJBeiBpbm9kZSBtw6lyZXQgbcOzZG9zw610w6FzYSBuZW0gdMOhbW9nYXRvdHQgYSBiZWthcGNzb2x0IGZsZXhfYmdcbiIKKyJqZWxsZW16xZF2ZWwgcmVuZGVsa2V6xZEgZsOhamxyZW5kc3plcmVraGV6LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiQXogaW5vZGUgbcOpcmV0IGJlw6FsbMOtdMOhc2EgZW5ueWlyZTogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTUKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZWd2w6FsdG96dGF0bmkgYXogaW5vZGUgbcOpcmV0ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlkZSBzaXplIHRvICVkXG4iCittc2dzdHIgIkEgc3RyaWRlIG3DqXJldCBiZcOhbGzDrXTDoXNhIGVubnlpcmU6ICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiQSBjc8Ota3N6w6lsZXNzw6lnIGJlw6FsbMOtdMOhc2EgZW5ueWlyZTogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB0byAnJXMnXG4iCittc2dzdHIgIiIKKyJBIGLFkXbDrXRldHQgYWxhcMOpcnRlbG1lemV0dCBjc2F0b2zDoXNpIGJlw6FsbMOtdMOhc29rIGJlw6FsbMOtdMOhc2EgZXJyZTog4oCeJXPigJ1cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisiRmlneWVsbWV6dGV0w6lzOiBBIG5hcGzDsyBwaXN6a29zLiDDiXJkZW1lcyBsZW5uZSDDumpyYWrDoXRzemFuaSBhIG5hcGzDs3QsIMOtZ3k6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisiw6lzIHV0w6FuYSBmdXR0YXRuaSBlenQgYSBwYXJhbmNzb3QuIEVnecOpYmvDqW50IGEgbcOzZG9zw610w6Fzb2thdCBhIG5hcGzDs1xuIgorImhlbHlyZcOhbGzDrXTDoXNhIGZlbMO8bMOtcmhhdGphLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiTmFwbMOzIGhlbHlyZcOhbGzDrXTDoXNhLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDAKK21zZ2lkICI8cHJvY2VlZGluZz5cbiIKK21zZ3N0ciAiPGZvbHl0YXTDoXM+XG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiTWluZGVua8OpcHAgZm9seXRhdGphICh2YWd5IHbDoXIgJWQgbcOhc29kcGVyY2V0KT8gKGksbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJNaW5kZW5rw6lwcCBmb2x5dGF0amE/IChpLG4pICIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIm1rZTJmcyBrw6lueXN6ZXLDrXR2ZSBtaW5kZW5rw6lwcC4gUmVtw6lsasO8aywgYSAvZXRjL210YWIgaGVseXRlbGVuLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iCittc2dzdHIgIml0dCBhenTDoW4gbmVtIGrDtm4gbMOpdHJlIGVneSAlcyFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIm1rZTJmcyBrw6lueXN6ZXLDrXR2ZSBtaW5kZW5rw6lwcC5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBtZW3Ds3Jpw6F0IGZvZ2xhbG5pIGEgbmFwbMOzYmXDoWxsw610w6Fzb2sgZmVsZG9sZ296w6Fzw6Fob3ohXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IGZpbmQgam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5lbSB0YWzDoWxoYXTDsyBlbm5layBtZWdmZWxlbMWRIG5hcGzDs2VzemvDtno6ICVzXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkEgbWVnYWRvdHQgbmFwbMOzYmXDoWxsw610w6Fzb2sgaGliw6FzYWs6ICVzXG4iCisiXG4iCisiQSBuYXBsw7NiZcOhbGzDrXTDoXNva2F0IHZlc3N6xZEgdsOhbGFzenRqYSBlbCwgw6lzIGVneSBhcmd1bWVudHVtb3QgdsOhcmhhdG5hayxcbiIKKyJcdGFtaXQgZWd5IGVneWVubMWRc8OpZ2plbCAoJz0nKSBrZXpkLlxuIgorIlxuIgorIsOJcnbDqW55ZXMgbmFwbMOza2FwY3NvbMOzazpcbiIKKyJcdHNpemU9PG5hcGzDs23DqXJldCBtZWdhYsOhanRiYW4+XG4iCisiXHRkZXZpY2U9PG5hcGzDs2VzemvDtno+XG4iCisiXHRsb2NhdGlvbj08bmFwbMOzIGhlbHllPlxuIgorIlxuIgorIkEgbmFwbMOzbcOpcmV0IDEwMjQgw6lzIDEwMjQwMDAwIGbDoWpscmVuZHN6ZXJibG9rayBrw7Z6w7Z0dCBrZWxsIGxlZ3llbi5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkEgZsOhamxyZW5kc3plciB0w7psIGtpY3NpIGEgbmFwbMOzaG96XG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkEga8OpcnQgbmFwbMOzbcOpcmV0ICVkIGJsb2trLCBkZSAxMDI0IMOpcyAxMDI0MDAwMFxuIgorImJsb2trIGvDtnrDtnR0IGtlbGwgbGVubmllLiBNZWdzemFrw610w6FzLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBIG5hcGzDs23DqXJldCB0w7psIG5hZ3kgYSBmw6FqbHJlbmRzemVyaGV6LlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorIkV6IGEgZsOhamxyZW5kc3plciAlZCBjc2F0b2zDoXNvbmvDqW50LCB2YWd5ICVnIG5hcG9udGEgKGFtZWx5aWsgaGFtYXJhYmJcbiIKKyJiZWvDtnZldGtlemlrKSBhdXRvbWF0aWt1c2FuIGVsbGVuxZFyesOpc3JlIGtlcsO8bC4gQSBmZWzDvGxiw61yw6Fsw6FzaG96XG4iCisiaGFzem7DoWxqYSBhIHR1bmUyZnMgLWMgdmFneSAtaSBrYXBjc29sw7Nqw6F0LlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiIgorIkhhc3puw6FsYXQ6ICVzIFstZF0gWy1wIHBpZGbDoWpsXSBbLXMgZm9nbGFsYXRfw7p0dm9uYWxdIFstVCBpZMWRdMO6bGzDqXDDqXNdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgJXMgWy1yfHRdIFstbiBzesOhbV0gWy1zIGZvZ2xhbGF0X8O6dHZvbmFsXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAiaGliw6FzIGFyZ3VtZW50dW1vayIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgImthcGNzb2zDs2TDoXMiCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAiw61yw6FzIgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAib2x2YXPDoXNzesOhbSIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgImhpYsOhcyB2w6FsYXN6aG9zc3oiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAidXVpZGQgZGFlbW9uIGFscmVhZHkgcnVubmluZyBhdCBwaWQgJXNcbiIKK21zZ3N0ciAiYXogdXVpZGQgZMOpbW9uIG3DoXIgZnV0LCAlcyBQSUQtZGVsXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY3JlYXRlIHVuaXggc3RyZWFtIHNvY2tldDogJXMiCittc2dzdHIgIkEgdW5peCBhZGF0Zm9seWFtIHNvY2tldCBsw6l0cmVob3rDoXNhIHNpa2VydGVsZW46ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIkEoeikgJXMgdW5peCBzb2NrZXRoZXogY3NhdGxha296w6FzIHNpa2VydGVsZW46ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJBKHopICVzIHVuaXggc29ja2V0ZW4gZmlneWVsw6lzIHNpa2VydGVsZW46ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiSGliYSBhIGtsaWVuc3LFkWwgb2x2YXPDoXNrb3IsIGhvc3N6ID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIm3FsXZlbGV0OiAlZCwgYmVqw7Z2xZEgc3rDoW0gPSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQ6ICVzXG4iCittc2dzdHIgIklkxZEgVVVJRCBlbMWRw6FsbMOtdHZhOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiVsOpbGV0bGVuIFVVSUQgZWzFkcOhbGzDrXR2YTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICJJZMWRIFVVSUQgZWzFkcOhbGzDrXR2YTogJXMsIMOpcyByw6Ega8O2dmV0a2V6xZEgVVVJRFxuIgorbXNnc3RyWzFdICJJZMWRIFVVSUQgZWzFkcOhbGzDrXR2YTogJXMsIMOpcyAlZCByw6Ega8O2dmV0a2V6xZEgVVVJRFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiVkIFVVSUQgZWzFkcOhbGzDrXR2YVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uICVkXG4iCittc2dzdHIgIsOJcnbDqW55dGVsZW4gbcWxdmVsZXQ6ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICJIaWLDoXMgc3rDoW06ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICJIaWJhIGF6IFVVSUQgZMOpbW9uICglcykgaMOtdsOhc2Frb3I6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIlcywgw6lzIHLDoSBrw7Z2ZXRrZXrFkSBVVUlEXG4iCittc2dzdHJbMV0gIiVzLCDDqXMgJWQgcsOhIGvDtnZldGtlesWRIFVVSURcbiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICJVVUlELWsgbGlzdMOhamE6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiVsOhcmF0bGFuIHbDoWxhc3pob3NzeiBhKHopICVkLiBraXN6b2xnw6Fsw7N0w7NsXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTmVtIGzFkWhldMWRIGtpIGEoeikgJWQgUElELWRlbCBmdXTDsyBVVUlEOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJBKHopICVkIFBJRC1kZWwgZnV0w7MgVVVJRCBraWzFkXZlXG4iCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiSGFzem7DoWxhdDogJXMgWy1yXSBbLXRdXG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDIKK21zZ2lkICIjIEV4dGVudCBkdW1wOlxuIgorbXNnc3RyICJFeHRlbnRracOtcmF0w6FzOlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICIjXHRTesOhbT0lbGx1LCBNw6lyZXQ9JWxsdSwgS3Vyem9yPSVsbHUsIFJlbmRlemV0dD0lbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkhhc3puw6FsYXQ6ICVzIFstZCBoaWJha2VyZXPDqXNpX2plbHrFkWtdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBlc3prw7Z6IFstYnwtIgorInN8w7pqX23DqXJldF0gWy16IHZpc3N6YXZvbsOhc2lfZsOhamxdXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJBeiBpbm9kZSB0w6FibGEga2lixZF2w610w6lzZSIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICJCbG9ra29rIMOhdGhlbHllesOpc2UiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiQXogaW5vZGUgdMOhYmxhIHZpenNnw6FsYXRhIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAiSW5vZGUgaGl2YXRrb3rDoXNvayBmcmlzc8OtdMOpc2UiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIklub2RlIHTDoWJsYSDDoXRoZWx5ZXrDqXNlIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJJc21lcmV0bGVuIGzDqXDDqXM/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICIlZC4gbMOpcMOpcyBrZXpkw6lzZSAobWF4ID0gJWx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjE2MgorbXNnaWQgIiIKKyJcbiIKKyJSZXNpemluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbXMgaGFzIG5vdCBiZWVuIGZ1bGx5IHRlc3RlZC4gIFByb2NlZWQgYXRcbiIKKyJ5b3VyIG93biByaXNrISAgVXNlIHRoZSBmb3JjZSBvcHRpb24gaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW55d2F5LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQSBiaWdhbGxvYyBmw6FqbHJlbmRzemVyZWsgw6F0bcOpcmV0ZXrDqXNlIG5pbmNzIHRlbGplc2VuIGxldGVzenRlbHZlLiBTYWrDoXRcbiIKKyJmZWxlbMWRc3PDqWdyZSBmb2x5dGFzc2EhIEhhc3puw6FsamEgYSAtZiBrYXBjc29sw7N0LCBoYSBtaW5kZW5rw6lwcCBmb2x5dGF0bmlcbiIKKyJzemVyZXRuw6kuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgIiVzIG1lZ255aXTDoXNhIGvDtnpiZW4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgImF6IGVsw6lyw6lzaSBpbmZvcm3DoWNpw7NrIGxla8OpcsOpc2Vrb3IgZWhoZXo6ICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkVsxZFzesO2ciBmdXR0YXNzYSBheiDigJ5lMmZzY2sgLWYgJXPigJ0gcGFyYW5jc290LlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plciBiZWNzw7xsdCBtaW5pbcOhbGlzIG3DqXJldGU6ICVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiDDumogbcOpcmV0OiAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUyMAorbXNnaWQgIk5ldyBzaXplIHRvbyBsYXJnZSB0byBiZSBleHByZXNzZWQgaW4gMzIgYml0c1xuIgorbXNnc3RyICJBeiDDumogbcOpcmV0IHTDumwgbmFneSBhIDMyIGJpdGVuIHZhbMOzIMOhYnLDoXpvbMOhc2hvelxuIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiQXogw7pqIG3DqXJldCBraXNlYmIgYSBtaW5pbcOhbGlzbsOhbCAoJWxsdSlcbiIKKworIzogcmVzaXplL21haW4uYzo1MzQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBsZW5ndGgiCittc2dzdHIgIsOJcnbDqW55dGVsZW4gc3RyaWRlIGhvc3N6IgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiQSB0YXJ0YWxtYXrDsyBwYXJ0w61jacOzICh2YWd5IGVzemvDtnopIGNzYWsgJWxsdSAoJWRrKSBibG9ra29zLlxuIgorIkEga8OpcnQgw7pqIG3DqXJldCAlbGx1IGJsb2trLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICJBIDY0Yml0IGplbGxlbXrFkXQgbmVtIGxlaGV0IGJlw6FsbMOtdGFuaSDDqXMgdMO2csO2bG5pIGlzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJFZ3kgMl4zMiBibG9ra27DoWwgbmFneW9iYiBmw6FqbHJlbmRzemVyZW4gbmVtIG3Ds2Rvc8OtdGhhdMOzIGEgNjRiaXQgamVsbGVtesWRLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIkEgNjRiaXQgamVsbGVtesWRIG5lbSBtw7Nkb3PDrXRoYXTDsywgYW3DrWcgYSBmw6FqbHJlbmRzemVyIGNzYXRvbHZhIHZhbi5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorIkVuZ2Vkw6lseWV6emUgYXogZXh0ZW50cyBqZWxsZW16xZF0IGEgdHVuZTJmcyBoYXN6bsOhbGF0w6F2YWwgYSA2NGJpdFxuIgorImplbGxlbXrFkSBiZWthcGNzb2zDoXNhIGVsxZF0dC5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJBIGbDoWpscmVuZHN6ZXIgbcOhciAlbGx1ICglZGspIGJsb2trIGhvc3N6w7ouIE5pbmNzIHRlZW5kxZEhXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgbcOhciA2NCBiaXRlcy5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plciBtw6FyIDMyIGJpdGVzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIDY0IGJpdGVzcmUgYWxha8OtdMOhc2EuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgMzIgYml0ZXNyZSBhbGFrw610w6FzYS5cbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIkEgZsOhamxyZW5kc3plciDDoXRtw6lyZXRlesOpc2UgZXplbjogJXMsICVsbHUgKCVkaykgYmxva2tyYS5cbiIKKworIzogcmVzaXplL21haW4uYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIKK21zZ3N0ciAiJXMgw6F0bcOpcmV0ZXrDqXPDqXJlIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIkZ1dHRhc3NhIGF6IOKAnmUyZnNjayAtZnkgJXPigJ0gcGFyYW5jc290IGEgZsOhamxyZW5kc3plclxuIgorIm1lZ2phdsOtdMOhc8OhaG96IGEgbWVnc3pha8OtdG90dCDDoXRtw6lyZXRlesOpc2kgbcWxdmVsZXQgdXTDoW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBvbiAlcyBpcyBub3cgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkEgZsOhamxyZW5kc3plciBlemVuOiAlcyBtb3N0YW50w7NsICVsbHUgKCVkaykgYmxva2sgaG9zc3rDui5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo2NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHRydW5jYXRlICVzIgorbXNnc3RyICIlcyBjc29ua8OtdMOhc8OhcmEgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICIiCisiQSBrZXJuZWwgbmVtIHTDoW1vZ2F0amEgYXogb25saW5lIMOhdG3DqXJldGV6w6lzdCBhIHNwYXJzZV9zdXBlcjIgaGFzem7DoWxhdGFrb3IiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiIgorIkEgZsOhamxyZW5kc3plciAoJXMpIGNzYXRvbHZhIHZhbiBpZGU6ICVzLCBvbmxpbmUgw6F0bcOpcmV0ZXrDqXMgc3rDvGtzw6lnZXNcbiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiQXogb25saW5lIHpzdWdvcsOtdMOhcyBuZW0gdMOhbW9nYXRvdHQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgbmVtIHTDoW1vZ2F0amEgYXogb25saW5lIMOhdG3DqXJldGV6w6lzdCIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIk5pbmNzIGVsw6lnIGZlbm50YXJ0b3R0IGdkdCBibG9rayBheiDDoXRtw6lyZXRlesOpc2hleiIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiQSBrZXJuZWwgbmVtIHTDoW1vZ2F0amEgYXogaWx5ZW4gbmFneSBmw6FqbHJlbmRzemVyIMOhdG3DqXJldGV6w6lzw6l0IgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgIiVzIGNzYXRvbMOhc2kgcG9udCBtZWdueWl0w6Fzw6FyYSB0ZXR0IGvDrXPDqXJsZXQga8O2emJlbiIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIlLDqWdpIMOhdG3DqXJldGV6w6lzaSBmZWzDvGxldCBrw6lydmUuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjEgcmVzaXplL29ubGluZS5jOjE3OAorbXNnaWQgIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIgorbXNnc3RyICJIb3p6w6Fmw6lyw6lzIG1lZ3RhZ2FkdmEgYSBmw6FqbHJlbmRzemVyIMOhdG3DqXJldGV6w6lzw6loZXoiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIkF6IG9ubGluZSDDoXRtw6lyZXRlesOpcyB0w6Ftb2dhdMOhc8OhbmFrIGtlcmVzw6lzZWtvciIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiQSBrZXJuZWwgbmVtIHTDoW1vZ2F0amEgYXogb25saW5lIMOhdG3DqXJldGV6w6lzdCIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIlcyBvbmxpbmUgw6F0bcOpcmV0ZXrDqXPDqW5layB2w6lncmVoYWp0w6FzYSAlbGx1ICglZGspIGJsb2trcmEuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJBeiB1dG9sc8OzIGNzb3BvcnQga2l0ZXJqZXN6dMOpc8OpcmUgdGV0dCBrw61zw6lybGV0IGvDtnpiZW4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIkEoeikgJWQuIGNzb3BvcnQgaG96esOhYWTDoXPDoXJhIHRldHQga8Otc8OpcmxldCBrw7Z6YmVuIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiQSBmw6FqbHJlbmRzemVyICglcykgY3NhdG9sdmEgdmFuIGlkZTogJXMsIMOpcyBheiBvbmxpbmVcbiIKKyLDoXRtw6lyZXRlesOpcyBuZW0gdMOhbW9nYXRvdHQgZXplbiBhIHJlbmRzemVyZW5cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICJheiBpbm9kZS1vayAoJWxsdSkgc3rDoW1hIGtpc2ViYiBrZWxsIGxlZ3llbiwgbWludCAldSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEwMzcKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MiCittc2dzdHIgImZlbm50YXJ0b3R0IGJsb2trb2siCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAibWV0YWFkYXQtYmxva2tvayIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgIsO6aiBtZXRhYmxva2tvayIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIlNvaGEgbmVtIGZvcmR1bGhhdG5hIGVsxZEhIE5pbmNzIHNiIGF6IHV0b2xzw7Mgc3VwZXJfc3BhcnNlIGJnLWJlbj9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIlNvaGEgbmVtIGZvcmR1bGhhdG5hIGVsxZEhIFbDoXJhdGxhbiBvbGRfZGVzYyBhIHN1cGVyX3NwYXJzZSBiZy1iZW4/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIlNvaGEgbmVtIGZvcmR1bGhhdG5hIGVsxZE6IGF6IMOhdG3DqXJldGV6ZW5kxZEgaW5vZGUgc8OpcsO8bHQhXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiRVhUMkZTIHByb2dyYW1rw7ZueXZ0w6FyIDEuNDMgdmVyemnDsyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGF6IGV4dDJfZmlsc3lzIHN0cnVjdHVyZSBzdHJ1a3TDunLDoWhveiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGEgYmFkYmxvY2tzX2xpc3Qgc3RydWt0w7pyw6Fob3oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2l0ZXJhdGUgc3RydWN0dXJlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBhIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBheiBpbm9kZV9zY2FuIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBheiBpb19jaGFubmVsIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGEgdW5peCBpb19jaGFubmVsIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBheiBpb19tYW5hZ2VyIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJsb2NrX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGEgYmxvY2tfYml0bWFwIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGF6IGlub2RlX2JpdG1hcCBzdHJ1a3TDunLDoWhveiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGEgZ2VuZXJpY19iaXRtYXAgc3RydWt0w7pyw6Fob3oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSB0ZXN6dCBpb19jaGFubmVsIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGRpcmVjdG9yeSBibG9jayBsaXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSBrw7ZueXZ0w6FyYmxva2sgbGlzdGEgc3RydWt0w7pyw6Fob3oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYXogaWNvdW50IHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGEgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGF6IGV4dDIgZsOhamxzdHJ1a3TDunLDoWhveiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYXogZXh0MiBsZW1lemvDqXBmZWpsw6ljaGV6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBheiBpbm9kZSBpb19jaGFubmVsIHN0cnVrdMO6csOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IGhhbmRsZSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYXogZXh0NCBleHRlbnRrZXplbMWRaMO2eiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSBzenVwZXJibG9ra2JhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIHJldsOtemnDs2phIHTDumwgbWFnYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICJLw61zw6lybGV0IGVneSBjc2FrIG9sdmFzaGF0w7NhbiBtZWdueWl0b3R0IGbDoWpscmVuZHN6ZXIgw61yw6Fzw6FyYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTmVtIG9sdmFzaGF0w7NrIGEgY3NvcG9ydGxlw61yw7NrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTmVtIMOtcmhhdMOzayBhIGNzb3BvcnRsZcOtcsOzayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiU8OpcsO8bHQgY3NvcG9ydGxlw61yw7M6IGhpYsOhcyBibG9rayBhIGJsb2trYml0dMOpcmvDqXBoZXoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNgorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAiCittc2dzdHIgIlPDqXLDvGx0IGNzb3BvcnRsZcOtcsOzOiBoaWLDoXMgYmxva2sgYXogaW5vZGUgYml0dMOpcmvDqXBoZXoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNworbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiU8OpcsO8bHQgY3NvcG9ydGxlw61yw7M6IGhpYsOhcyBibG9rayBheiBpbm9kZSB0w6FibMOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzgKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk5lbSDDrXJoYXTDsyBlZ3kgaW5vZGUgYml0dMOpcmvDqXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJOZW0gb2x2YXNoYXTDsyBlZ3kgaW5vZGUgYml0dMOpcmvDqXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorbXNnaWQgIkNhbid0IHdyaXRlIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJOZW0gw61yaGF0w7MgZWd5IGJsb2trYml0dMOpcmvDqXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MQorbXNnaWQgIkNhbid0IHJlYWQgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIk5lbSBvbHZhc2hhdMOzIGVneSBibG9ra2JpdHTDqXJrw6lwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTmVtIMOtcmhhdMOzIGVneSBpbm9kZSB0w6FibGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIk5lbSBvbHZhc2hhdMOzIGVneSBpbm9kZSB0w6FibGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiTmVtIG9sdmFzaGF0w7MgYSBrw7Z2ZXRrZXrFkSBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ1Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5leHBlY3RlZCBibG9jayBzaXplIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgYmxva2ttw6lyZXRlIHbDoXJhdGxhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJBeiBFWFQyIGvDtm55dnTDoXIgc8OpcsO8bHQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAiIgorIkEgZsOhamxyZW5kc3plcnLFkWwgdmFsw7MgYmxva2tvbHZhc8Ohc2kga8Otc8OpcmxldCByw7Z2aWQgb2x2YXPDoXN0IGVyZWRtw6lueWV6ZXR0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIkEgZsOhamxyZW5kc3plcmUgdmFsw7MgYmxva2vDrXLDoXNpIGvDrXPDqXJsZXQgcsO2dmlkIMOtcsOhc3QgZXJlZG3DqW55ZXpldHQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gdGhlIGRpcmVjdG9yeSIKK21zZ3N0ciAiTmluY3Mgc3phYmFkIGhlbHkgYSBrw7ZueXZ0w6FyYmFuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQXogaW5vZGUgYml0dMOpcmvDqXAgbmVtIGxldHQgYmV0w7ZsdHZlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQSBibG9ra2JpdHTDqXJrw6lwIG5lbSBsZXR0IGJldMO2bHR2ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIiCittc2dzdHIgIkF6IGlub2RlIHN6w6FtYSBpbGxlZ8OhbGlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTMKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiQSBibG9ra3N6w6FtIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICJCZWxzxZEgaGliYSBheiBleHQyZnNfZXhwYW5kX2RpciBow612w6FzYmFuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgIk5pbmNzIGVsw6lnIGhlbHkgYSBqYXZhc29sdCBmw6FqbHJlbmRzemVyIGZlbMOpcMOtdMOpc8OpaGV6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTYKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJBeiBleHQyZnNfbWFya19ibG9ja19iaXRtYXAgZsO8Z2d2w6lueW5layDDoXRhZG90dCBibG9ra3N6w6FtIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiQXogZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAgZsO8Z2d2w6lueW5layDDoXRhZG90dCBibG9ra3N6w6FtIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIkF6IGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCBmw7xnZ3bDqW55bmVrIMOhdGFkb3R0IGJsb2trc3rDoW0gaWxsZWfDoWxpcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiQXogZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIGbDvGdndsOpbnluZWsgw6F0YWRvdHQgaW5vZGUgc3rDoW0gaWxsZWfDoWxpcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJBeiBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCBmw7xnZ3bDqW55bmVrIMOhdGFkb3R0IGJsb2trc3rDoW0gaWxsZWfDoWxpcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiQXogZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIGbDvGdndsOpbnluZWsgw6F0YWRvdHQgaW5vZGUgc3rDoW0gaWxsZWfDoWxpcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICJLw61zw6lybGV0IGEgYmxva2tiaXR0w6lya8OpcCB2w6lnw6luZWsgZWx0b2zDoXPDoXJhIGEgdmFsw7NzIHbDqWcgbcO2Z8OpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjMKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBpbm9kZSBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIkvDrXPDqXJsZXQgYXogaW5vZGUgYml0dMOpcmvDqXAgdsOpZ8OpbmVrIGVsdG9sw6Fzw6FyYSBhIHZhbMOzcyB2w6lnIG3DtmfDqSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiSWxsZWfDoWxpcyBpbmRpcmVrdCBibG9rayBmb3JkdWx0IGVsxZEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJJbGxlZ8OhbGlzIGR1cGzDoW4gaW5kaXJla3QgYmxva2sgZm9yZHVsdCBlbMWRIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiSWxsZWfDoWxpcyB0cmlwbMOhbiBpbmRpcmVrdCBibG9rayBmb3JkdWx0IGVsxZEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiQSBibG9ra2JpdHTDqXJrw6lwZWsgbmVtIGF6b25vc2FrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKK21zZ2lkICJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkF6IGlub2RlIGJpdHTDqXJrw6lwZWsgbmVtIGF6b25vc2FrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiSWxsZWfDoWxpcyB2YWd5IHJvc3N6dWwgZm9ybcOhem90dCBlc3prw7Z6bsOpdiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJFZ3kgYmxva2tjc29wb3J0YsOzbCBoacOhbnl6aWsgZWd5IGlub2RlIHTDoWJsYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJBeiBleHQyIHN6dXBlcmJsb2trIHPDqXLDvGx0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKyJBeiBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCBmw7xnZ3bDqW55bmVrIMOhdGFkb3R0IMOhbHRhbMOhbm9zIGJpdHN6w6FtIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiQXogZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCBmw7xnZ3bDqW55bmVrIMOhdGFkb3R0IMOhbHRhbMOhbm9zIGJpdHN6w6FtICIKKyJpbGxlZ8OhbGlzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzQKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKyJBeiBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCBmw7xnZ3bDqW55bmVrIMOhdGFkb3R0IMOhbHRhbMOhbm9zIGJpdHN6w6FtIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiVMO6bCBzb2sgc3ppbWJvbGlrdXMgbGlua2tlbCB0YWzDoWxrb3p0YW0uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzYKK21zZ2lkICJUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBub3QgaGFuZGxlIHRoaXMgY2FzZSIKK21zZ3N0ciAiQSB2aXNzemFow612w6FzIGbDvGdndsOpbnkgbmVtIGZvZ2phIGtlemVsbmkgZXp0IGF6IGVzZXRldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc3Cittc2dpZCAiVGhlIGlub2RlIGlzIGZyb20gYSBiYWQgYmxvY2sgaW4gdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJBeiBpbm9kZSBheiBpbm9kZSB0w6FibGEgaGliw6FzIGJsb2trasOhYsOzbCBzesOhcm1hemlrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgbmVtIHTDoW1vZ2F0b3R0IGplbGxlbXrFkWtrZWwgcmVuZGVsa2V6aWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIHJlYWQtb25seSBmZWF0dXJlKHMpIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXIgbmVtIHTDoW1vZ2F0b3R0LCBjc2FrIG9sdmFzaGF0w7MgamVsbGVtesWRa2tlbCByZW5kZWxrZXppayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJBeiBJTyBjc2F0b3JuYSBuZW0gdHVkb3R0IG9sdmFzw6Fza29yIHZhZ3kgw61yw6Fza29yIHBvemljaW9uw6FsbmkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MQorbXNnaWQgIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIKK21zZ3N0ciAiQSBtZW3Ds3JpYWZvZ2xhbMOhcyBtZWdoacO6c3VsdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGFyZ3VtZW50dW0gbGV0dCDDoXRhZHZhIGF6IGV4dDIgcHJvZ3JhbWvDtm55dnTDoXJuYWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIk5lbSBzaWtlcsO8bHQgYmxva2tvdCBmb2dsYWxuaSBheiBleHQyIGbDoWpscmVuZHN6ZXJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTmVtIHNpa2Vyw7xsdCBpbm9kZS1vdCBmb2dsYWxuaSBheiBleHQyIGbDoWpscmVuZHN6ZXJlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIkF6IGV4dDIgaW5vZGUgbmVtIGvDtm55dnTDoXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIlTDumwgc29rIGhpdmF0a296w6FzIGEgdMOhYmzDoWJhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg3Cittc2dpZCAiRmlsZSBub3QgZm91bmQgYnkgZXh0Ml9sb29rdXAiCittc2dzdHIgIkF6IGV4dDJfbG9va3VwIG5lbSB0YWzDoWxqYSBhIGbDoWpsdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg4Cittc2dpZCAiRmlsZSBvcGVuIHJlYWQtb25seSIKK21zZ3N0ciAiRsOhamwgbWVnbnlpdHZhIGNzYWsgb2x2YXNoYXTDs2vDqW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkF6IGV4dDIga8O2bnl2dMOhcmJsb2trIG5lbSB0YWzDoWxoYXTDsyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkF6IGV4dDIga8O2bnl2dMOhciBtw6FyIGzDqXRlemlrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiTWVndmFsw7Nzw610YXRsYW4gZXh0MiBrw7ZueXZ0w6FyZsO8Z2d2w6lueSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICJGZWxoYXN6bsOhbMOzaSBtZWdzemFrw610w6FzIGvDqXJ2ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgIkF6IGV4dDIgZsOhamwgdMO6bCBuYWd5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIkEgbWVnYWRvdHQgbmFwbMOzZXN6a8O2eiBuZW0gYmxva2tvcyBlc3prw7Z6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJBIG5hcGzDsy1zenVwZXJibG9rayBuZW0gdGFsw6FsaGF0w7MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiQSBuYXBsw7NuYWsgbGVnYWzDoWJiIDEwMjQgYmxva2tiw7NsIGtlbGwgw6FsbG5pYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJOZW0gdMOhbW9nYXRvdHQgbmFwbMOzdmVyemnDsyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJIaWJhIGEga8O8bHPFkSBuYXBsw7MgYmV0w7ZsdMOpc2Vrb3IiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorbXNnaWQgIkpvdXJuYWwgbm90IGZvdW5kIgorbXNnc3RyICJOZW0gdGFsw6FsaGF0w7MgbmFwbMOzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIkEga8O2bnl2dMOhciBoYXNoIG5lbSB0w6Ftb2dhdG90dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiQSBixZF2w610ZXR0IGF0dHJpYsO6dHVtIGJsb2trc3rDoW1hIGlsbGVnw6FsaXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiTmVtIGhvemhhdMOzIGzDqXRyZSBmw6FqbHJlbmRzemVyIGEga8OpcnQgc3rDoW3DuiBpbm9kZS1kYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIkF6IGUyaW1hZ2UgcGlsbGFuYXRrw6lwIG5pbmNzIGhhc3puw6FsYXRiYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAiVMO6bCBzb2sgZmVubnRhcnRvdHQgY3NvcG9ydGxlw61yw7MgYmxva2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiQXogw6F0bcOpcmV0ZXplbmTFkSBpbm9kZSBzw6lyw7xsdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNgorbXNnaWQgIlRyaWVkIHRvIHNldCBibG9jayBibWFwIHdpdGggbWlzc2luZyBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiS8Otc8OpcmxldCBibG9ra2JpdHTDqXJrw6lwIGJlw6FsbMOtdMOhc8OhcmEgaGnDoW55esOzIGluZGlyZWt0IGJsb2trYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDcKK21zZ2lkICJUREI6IFN1Y2Nlc3MiCittc2dzdHIgIlREQjogU2lrZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDgKK21zZ2lkICJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCittc2dzdHIgIlREQjogU8OpcsO8bHQgYWRhdGLDoXppcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOQorbXNnaWQgIlREQjogSU8gRXJyb3IiCittc2dzdHIgIlREQjogSU8gaGliYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMAorbXNnaWQgIlREQjogTG9ja2luZyBlcnJvciIKK21zZ3N0ciAiVERCOiBaw6Fyb2zDoXNpIGhpYmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTEKK21zZ2lkICJUREI6IE91dCBvZiBtZW1vcnkiCittc2dzdHIgIlREQjogRWxmb2d5b3R0IGEgbWVtw7NyaWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTIKK21zZ2lkICJUREI6IFJlY29yZCBleGlzdHMiCittc2dzdHIgIlREQjogQSByZWtvcmQgbMOpdGV6aWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQjogWsOhcm9sw6FzIGzDqXRlemlrIG3DoXMga3VsY3Nva29uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiDDiXJ2w6lueXRlbGVuIHBhcmFtw6l0ZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCOiBBIHJla29yZCBuZW0gbMOpdGV6aWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjogQXogw61yw6FzIG5lbSBlbmdlZMOpbHllemV0dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiQXogZXh0MmZzIGvDtm55dnTDoXJibG9ra2xpc3RhIMO8cmVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorIkvDrXPDqXJsZXQgYmxva2tsZWvDqXBlesOpcyBtw7Nkb3PDrXTDoXPDoXJhIGNzYWsgb2x2YXNoYXTDsyBibG9ra2l0ZXLDoXRvcm9uIGtlcmVzenTDvGwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IHNhdmVkIHBhdGgiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIHN6w6FtIGF6IGV4dDQgZXh0ZW50IG1lbnRldHQgw7p0dm9uYWxob3oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSA2NCBiaXRlcyDDoWx0YWzDoW5vcyBiaXR0w6lya8OpcGhleiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSA2NCBiaXRlcyBibG9ra2JpdHTDqXJrw6lwaGV6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyBzesOhbSBhIDY0IGJpdGVzIGlub2RlIGJpdHTDqXJrw6lwaGV6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzEzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNCIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNyIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gLS0tIFJFU0VSVkVEXzE5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMwCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaGVhZGVyIgorbXNnc3RyICJTw6lyw7xsdCBleHRlbnRmZWpsw6ljIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMxCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaW5kZXgiCittc2dzdHIgIlPDqXLDvGx0IGV4dGVudGluZGV4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIlPDqXLDvGx0IGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMworbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gZXh0ZW50IG1hcCIKK21zZ3N0ciAiTmluY3Mgc3phYmFkIGhlbHkgYXogZXh0ZW50dMOpcmvDqXBiZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiQXogaW5vZGUgbmVtIGhhc3puw6FsIGV4dGVudGVrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJOaW5jcyDigJ5rw7Z2ZXRrZXrFkeKAnSBleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiTmluY3Mg4oCeZWzFkXrFkeKAnSBleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzcKK21zZ2lkICJObyAndXAnIGV4dGVudCIKK21zZ3N0ciAiTmluY3Mg4oCeZmVsc8WR4oCdIGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIk5pbmNzIOKAnmFsc8Oz4oCdIGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiTmluY3MgYWt0dcOhbGlzIGNzb23Ds3BvbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkF6IGV4dDJmcyBtxbF2ZWxldCBuZW0gdMOhbW9nYXRvdHQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiTmluY3MgaGVseSBheiBleHRlbnQgYmVzesO6csOhc8OhaG96IGEgY3NvbcOzcG9udGJhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICJBIHN6w6l0dsOhZ8OhcyDDvHJlcyBjc29tw7Nwb250b3QgZXJlZG3DqW55ZXpuZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MworbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIkF6IGV4dGVudCBuZW0gdGFsw6FsaGF0w7MiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiQSBtxbF2ZWxldCBuZW0gdMOhbW9nYXRvdHQgZXh0ZW50ZWtldCB0YXJ0YWxtYXrDsyBpbm9kZS1va3JhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICJBeiBleHRlbnQgaG9zc3phIMOpcnbDqW55dGVsZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICJBeiBJL08gY3NhdG9ybmEgbmVtIHTDoW1vZ2F0amEgYSA2NCBiaXRlcyBibG9ra3N6w6Ftb2thdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyJBIGhpw6FueXrDsyBtdGFiIGbDoWpsIG1pYXR0IG5lbSBlbGxlbsWRcml6aGV0xZEsIGhvZ3kgYSBmw6FqbHJlbmRzemVyIGNzYXRvbHZhICIKKyJ2YW4tZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OAorbXNnaWQgIkZpbGVzeXN0ZW0gdG9vIGxhcmdlIHRvIHVzZSBsZWdhY3kgYml0bWFwcyIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIHTDumwgbmFneSBheiDDtnLDtmvDtmx0IGJpdHTDqXJrw6lwZWsgaGFzem7DoWxhdMOhaG96IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiDDqXJ2w6lueXRlbGVuIGLFsXbDtnMgc3rDoW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTAKK21zZ2lkICJNTVA6IGRldmljZSBjdXJyZW50bHkgYWN0aXZlIgorbXNnc3RyICJNTVA6IGF6IGVzemvDtnogamVsZW5sZWcgYWt0w612IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBheiBmc2NrIGZ1dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IGEgYmxva2tzesOhbSBrw612w7xsIGVzaWsgYSBmw6FqbHJlbmRzemVyIHRhcnRvbcOhbnnDoW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIk1NUDogaXNtZXJldGxlbiBtxbF2ZWxldCB2YW4gZm9seWFtYXRiYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVA6IGEgZsOhamxyZW5kc3plciBtw6lnIGhhc3puw6FsYXRiYW4gdmFuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU1Cittc2dpZCAiTU1QOiBvcGVuIHdpdGggT19ESVJFQ1QgZmFpbGVkIgorbXNnc3RyICJNTVA6IGF6IE9fRElSRUNUIG3Ds2TDuiBtZWdueWl0w6FzIG1lZ2hpw7pzdWx0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAiQSBibG9ra2Nzb3BvcnRsZcOtcsOzIG3DqXJldGUgaGVseXRlbGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgIkF6IGlub2RlIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsIG1lZyBheiBpbm9kZS1uYWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJBeiBpbm9kZSBiaXR0w6lya8OpcCBlbGxlbsWRcnrFkcO2c3N6ZWdlIG5lbSBmZWxlbCBtZWcgYSBiaXR0w6lya8OpcG5layIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIkF6IGV4dGVudGJsb2trIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsIG1lZyBheiBleHRlbnRibG9ra25hayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAiQSBrw7ZueXZ0w6FyYmxva2tiYW4gbmluY3MgaGVseSBheiBlbGxlbsWRcnrFkcO2c3N6ZWduZWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJBIGvDtm55dnTDoXJibG9rayBlbGxlbsWRcnrFkcO2c3N6ZWdlIG5lbSBmZWxlbCBtZWcgYSBrw7ZueXZ0w6FyYmxva2tuYWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2siCittc2dzdHIgIkEgYsWRdsOtdGV0dCBhdHRyaWLDunR1bWJsb2trIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsIG1lZyBhIGJsb2trbmFrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYzCittc2dpZCAiU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrIgorbXNnc3RyICJBIHN6dXBlcmJsb2trIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsIG1lZyBhIHN6dXBlcmJsb2trbmFrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIklzbWVyZXRsZW4gZWxsZW7FkXJ6xZHDtnNzemVnLWFsZ29yaXRtdXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICJBeiBNTVAgYmxva2sgZWxsZW7FkXJ6xZHDtnNzemVnZSBuZW0gZmVsZWwgbWVnIGF6IE1NUCBibG9ra25hayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NgorbXNnaWQgIkV4dDIgZmlsZSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiQXogZXh0MiBmw6FqbCBtw6FyIGzDqXRlemlrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3Cittc2dpZCAiQmxvY2sgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAiQSBibG9ra2JpdHTDqXJrw6lwIGVsbGVuxZFyesWRw7Zzc3plZ2UgbmVtIGZlbGVsIG1lZyBhIGJpdHTDqXJrw6lwbmVrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY4Cittc2dpZCAiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorIk5lbSBsZWhldCBiZWrDoXJuaSBlZ3kgYmXDoWd5YXpvdHQgYWRhdG9rYXQgdGFydGFsbWF6w7MgaW5vZGUgYWRhdGJsb2tramFpdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiQSBixZF2w610ZXR0IGF0dHJpYsO6dHVtIG7DqXZob3NzemEgw6lydsOpbnl0ZWxlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIkEgYsWRdsOtdGV0dCBhdHRyaWLDunR1bSDDqXJ0w6lraG9zc3phIMOpcnbDqW55dGVsZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICJBIGLFkXbDrXRldHQgYXR0cmliw7p0dW0gaGFzaC1lIGhlbHl0ZWxlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJBIGLFkXbDrXRldHQgYXR0cmliw7p0dW1ibG9rayBmZWpsw6ljZSBoaWLDoXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiQSBixZF2w610ZXR0IGF0dHJpYsO6dHVta3VsY3MgbmVtIHRhbMOhbGhhdMOzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICJOaW5jcyBlbMOpZyBoZWx5IGEgYsWRdsOtdGV0dCBhdHRyaWLDunR1bWFkYXRvayB0w6Fyb2zDoXPDoWhveiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICJBIGbDoWpscmVuZHN6ZXJyxZFsIGhpw6FueXppayBheiBleHRfYXR0ciB2YWd5IGlubGluZV9kYXRhIGplbGxlbXrFkSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorbXNnaWQgIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiQXogaW5vZGUgbmVtIHRhcnRhbG1heiBiZcOhZ3lhem90dCBhZGF0b2thdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICJOZW0gZWd5IGJlw6FneWF6b3R0IGFkYXRva2F0IHRhcnRhbG1hesOzIGlub2RlIGJsb2tramEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJOaW5jcyBzemFiYWQgaGVseSBhIGJlw6FneWF6b3R0IGFkYXRva25hayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgc3rDoW0gYSBixZF2w610ZXR0IGF0dHJpYsO6dHVtc3RydWt0w7pyw6Fob3oiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIkF6IGlub2RlIGzDoXRzesOzbGFnIHN6ZW1ldGV0IHRhcnRhbG1heiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCittc2dzdHIgIkEgYsWRdsOtdGV0dCBhdHRyaWLDunR1bSDDqXJ2w6lueXRlbGVuIMOpcnTDqWtlbHRvbMOhc3NhbCByZW5kZWxrZXppayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICJBIG5hcGzDs2plbHrFkWsgaW5rb256aXN6dGVuc2VrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkEgdmlzc3phdm9uw6FzaSBmw6FqbCBzw6lyw7xsdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NAorbXNnaWQgIldyb25nIHVuZG8gZmlsZSBmb3IgdGhpcyBmaWxlc3lzdGVtIgorbXNnc3RyICJSb3NzeiB2aXNzemF2b27DoXNpIGbDoWpsIGVoaGV6IGEgZsOhamxyZW5kc3plcmhleiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIHPDqXLDvGx0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg2Cittc2dpZCAiQmFkIENSQyBkZXRlY3RlZCBpbiBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiQSBmw6FqbHJlbmRzemVyZW4gaGliw6FzIENSQyB0YWzDoWxoYXTDsyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiQSBuYXBsw7Mgc3p1cGVyYmxva2sgc8OpcsO8bHQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgaXMgY29ycnVwdGVkIgorbXNnc3RyICJBeiDDoXRtw6lyZXRlemVuZMWRIGlub2RlIHPDqXLDvGx0IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiUHJvZmlsdmVyemnDsyAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyDDqXJ0w6lrIGEgcHJvZmlsZV9ub2RlLWJhbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIkEgcHJvZmlsc3pha2FzeiBuZW0gdGFsw6FsaGF0w7MiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTQKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiQSBwcm9maWxyZWzDoWNpw7MgbmVtIHRhbMOhbGhhdMOzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE1Cittc2dpZCAiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCittc2dzdHIgIkvDrXPDqXJsZXQgZWd5IHJlbMOhY2nDsyBjc29tw7Nwb250aG96IGFkw6Fzw6FyYSwgYW1pIG5lbSBzemFrYXN6IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE2Cittc2dpZCAiQSBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIGhhcyBhIG5vbi16ZXJvIHZhbHVlIgorbXNnc3RyICJFZ3kgcHJvZmlsc3pha2FzemZlamzDqWMgbmVtIG51bGxhIMOpcnTDqWvFsSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkhpYsOhcyBsw6FuY29sdCBsaXN0YSBhIHByb2ZpbHN0cnVrdMO6csOha2JhbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkhpYsOhcyBjc29wb3J0c3ppbnQgYSBwcm9maWxzdHJ1a3TDunLDoWtiYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJIaWLDoXMgc3rDvGzFkW11dGF0w7MgYSBwcm9maWxzdHJ1a3TDunLDoWtiYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgw6lydMOpayBhIHByb2ZpbGl0ZXLDoXRvcmJhbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMQorbXNnaWQgIkNhbid0IHNldCB2YWx1ZSBvbiBzZWN0aW9uIG5vZGUiCittc2dzdHIgIk5lbSDDoWxsw610aGF0w7MgYmUgw6lydMOpayBhIHN6YWthc3ogY3NvbcOzcG9udG9uIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGFyZ3VtZW50dW0gbGV0dCDDoXRhZHZhIGEgcHJvZmlsIHByb2dyYW1rw7ZueXZ0w6FybmFrIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIkvDrXPDqXJsZXQgY3NhayBvbHZhc2hhdMOzIHByb2ZpbCBtw7Nkb3PDrXTDoXPDoXJhIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICJBIHByb2ZpbHN6YWthc3ogZmVqbMOpY2UgbmVtIGEgbGVnZmVsc8WRIHN6aW50ZW4gdmFuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI1Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCittc2dzdHIgIlN6aW50YWt0aWthaSBoaWJhIGEgcHJvZmlsc3pha2FzeiBmZWpsw6ljw6liZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiU3ppbnRha3Rpa2FpIGhpYmEgYSBwcm9maWxyZWzDoWNpw7NiYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjcKK21zZ2lkICJFeHRyYSBjbG9zaW5nIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIkV4dHJhIHrDoXLDsyB6w6Fyw7NqZWwgYSBwcm9maWxiYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiSGnDoW55esOzIG55aXTDsyB6w6Fyw7NqZWwgYSBwcm9maWxiYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyDDqXJ0w6lrIGEgcHJvZmlsZV90LWJlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3NlY3Rpb25fdCIKK21zZ3N0ciAiSGliw6FzIGLFsXbDtnMgw6lydMOpayBhIHByb2ZpbGVfc2VjdGlvbl90LWJlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMQorbXNnaWQgIkl0ZXJhdGlvbiB0aHJvdWdoIGFsbCB0b3AgbGV2ZWwgc2VjdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJBeiDDtnNzemVzIGZlbHPFkSBzemludMWxIHN6YWthc3ogYmVqw6Fyw6FzYSBuZW0gdMOhbW9nYXRvdHQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzIKK21zZ2lkICJJbnZhbGlkIHByb2ZpbGVfc2VjdGlvbiBvYmplY3QiCittc2dzdHIgIsOJcnbDqW55dGVsZW4gcHJvZmlsZV9zZWN0aW9uIG9iamVrdHVtIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiTmluY3MgdMO2YmIgc3pha2FzeiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICJIaWLDoXMgbmFtZXNldCBrZXLDvGx0IMOhdGFkw6FzcmEgYSBsZWvDqXJkZXrFkSBydXRpbm5hayIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICJOaW5jcyBwcm9maWxmw6FqbCBtZWdueWl0dmEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIkhpYsOhcyBixbF2w7ZzIMOpcnTDqWsgYSBwcm9maWxlX2ZpbGVfdC1iZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiTmVtIG55aXRoYXTDsyBtZWcgYSBwcm9maWxmw6FqbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkEgc3pha2FzeiBtw6FyIGzDqXRlemlrIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM5Cittc2dpZCAiSW52YWxpZCBib29sZWFuIHZhbHVlIgorbXNnc3RyICLDiXJ2w6lueXRlbGVuIGxvZ2lrYWkgw6lydMOpayIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MAorbXNnaWQgIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKK21zZ3N0ciAiw4lydsOpbnl0ZWxlbiBlZ8Opc3ogw6lydMOpayIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICJIaWLDoXMgYsWxdsO2cyDDqXJ0w6lrIGEgcHJvZmlsZV9maWxlX2RhdGFfdC1iZW4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHR1dG9sasOhcmEgY3NhdG9sdmEgaWRlOiAlcywgZWtrb3I6ICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMiCittc2dzdHIgIlx0dXRvbGrDoXJhIGNzYXRvbHZhIGlkZTogJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx0bMOpdHJlaG96dmEgZWtrb3I6ICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vZGlmaWVkIG9uICVzIgorbXNnc3RyICJcdHV0b2xqw6FyYSBtw7Nkb3PDrXR2YSBla2tvcjogJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIgorbXNnc3RyICIlcyBwYXJ0w61jacOzcyB0w6FibGEgbWVndGFsw6FsdmEgaXR0OiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiQSh6KSAlcyBmw6FqbCBuZW0gbMOpdGV6aWssIMOpcyBuZW0gbGV0dCBtw6lyZXQgbWVnYWR2YS5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICIlcyBzemFiw6FseW9zIGbDoWpsIGzDqXRyZWhvesOhc2FcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICIlcyBuZW0gbnlpdGhhdMOzIG1lZzogJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTk0Cittc2dpZCAiIgorIlxuIgorIlRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgZGlkIHlvdSBzcGVjaWZ5IGl0IGNvcnJlY3RseT9cbiIKK21zZ3N0ciAiIgorIlxuIgorIkF6IGVzemvDtnogbnlpbHbDoW52YWzDs2FuIG5lbSBsw6l0ZXppaywgaGVseWVzZW4gYWR0YSBtZWc/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiYSh6KSAlcyBuZW0gZWd5IHNwZWNpw6FsaXMgYmxva2tvcyBlc3prw7Z6XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJTEkcyBlZ3kg4oCeJTMkc+KAnSBjw61ta8OpasWxIOKAniUyJHPigJ0gZsOhamxyZW5kc3plcnQgdGFydGFsbWF6XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGVneSAlcyBmw6FqbHJlbmRzemVydCB0YXJ0YWxtYXpcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGAlcycgZGF0YVxuIgorbXNnc3RyICIlcyDigJ4lc+KAnSBhZGF0b2thdCB0YXJ0YWxtYXpcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICJGdXR0YXNzYSBheiBlMmZzY2sgcHJvZ3JhbW90IGEgZsOhamxyZW5kc3plcmVuLlxuIgorCisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICLDiXJ2w6lueXRlbGVuIHF1b3RhdHlwZSBwYXJhbcOpdGVyOiAlc1xuIgorCisjfiBtc2dpZCAiQGkgJWkgaGFzIEBjaW9uIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgQGNpb24gc3VwcG9ydC4gICIKKyN+IG1zZ3N0ciAiIgorI34gImEoeikgJWkuIGlub2RlIHTDtm3DtnLDrXTDqXMgamVsesWRamUgYmUgdmFuIMOhbGzDrXR2YSBlZ3kgdMO2bcO2csOtdMOpc3QgbmVtICIKKyN+ICJ0w6Ftb2dhdMOzIGbDoWpscmVuZHN6ZXJlbi4gIgorCisjfiBtc2dpZCAiQEEgQGEgQGIgJWIuICAiCisjfiBtc2dzdHIgImhpYmEgYSBixZF2w610ZXR0IGF0dHJpYsO6dHVtYmxva2sgKCViKSBsZWZvZ2xhbMOhc2Frb3IuIgorCisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICIlczogZmlneWVsbWV6dGV0w6lzOiBhIHTDtm3DtnLDrXTDqXMgdMOhbW9nYXTDoXNhIG3DqWcga8Otc8OpcmxldGkuXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IGUyZnNjayBub3QgY29tcGlsZWQgd2l0aCBIVFJFRSBzdXBwb3J0LFxuIgorI34gIlx0YnV0IGZpbGVzeXN0ZW0gJXMgaGFzIEhUUkVFIGRpcmVjdG9yaWVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IGF6IGUyZnNjayBhIEhUUkVFIHTDoW1vZ2F0w6FzIG7DqWxrw7xsIGxldHQgbGVmb3Jkw610dmEsXG4iCisjfiAiXHRkZSBlemVuIGEgZsOhamxyZW5kc3plcmVuIEhUUkVFIGvDtm55dnTDoXJhayB2YW5uYWs6ICVzLlxuIgorCisjfiBtc2dpZCAid2hpbGUgYWxsb2NhdGluZyB6ZXJvaXppbmcgYnVmZmVyIgorI34gbXNnc3RyICJudWxsw6F6w7MgcHVmZmVyIGZvZ2xhbMOhc2Frb3IiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCBuZW0gaGFzem7DoWx0IGlub2RlLW9rOiAldVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIkEgZsOhamxyZW5kc3plciBhZGF0YWluYWsgb2x2YXPDoXNhIHNpa2VydGVsZW5cbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfZmV0Y2ggJXNcbiIKKyN+IG1zZ3N0ciAiQSB0ZGJfZmV0Y2ggJXMgbWVnaGnDunN1bHRcbiIKKworI34gbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBVVUlEIGRpZG4ndCBtYXRjaCBcbiIKKyN+IG1zZ3N0ciAiQSBmw6FqbHJlbmRzemVyIFVVSUQtamEgbmVtIGVneWV6ZXR0IFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgIkEgdGRiX29wZW4gJXMgbWVnaGnDunN1bHRcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0byBvcGVuICVzXG4iCisjfiBtc2dzdHIgIuKAniVz4oCdIG1lZ255aXTDoXNhIHNpa2VydGVsZW5cbiIKKworI34gbXNnaWQgIlJlcGxheWVkIHRyYW5zYWN0aW9uIG9mIHNpemUgJXpkIGF0IGxvY2F0aW9uICVsbHVcbiIKKyN+IG1zZ3N0ciAiJXpkIG3DqXJldMWxIHRyYW56YWtjacOzIMO6anJhasOhdHN6dmEgZXplbiBhIGhlbHllbjogJWxsdVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHdyaXRlICVzXG4iCisjfiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgw61ybmkgZXp0OiAlc1xuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIHF1b3RhIG9wdGlvbnMhXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJOZW0gc2lrZXLDvGx0IG1lbcOzcmnDoXQgZm9nbGFsbmkgYSBrdsOzdGFiZcOhbGzDrXTDoXNvayBmZWxkb2xnb3rDoXPDoWhveiFcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGRiIGZpbGVuYW1lXG4iCisjfiBtc2dzdHIgIk5lbSBzaWtlcsO8bHQgbWVtw7NyacOhdCBmb2dsYWxuaSBhIHRkYiBmw6FqbG7DqXYgc3rDoW3DoXJhXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiVG8gdW5kbyB0aGUgdHVuZTJmcyBvcGVyYXRpb24gcGxlYXNlIHJ1biB0aGUgY29tbWFuZFxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIkEgdHVuZTJmcyBtxbF2ZWxldCB2aXNzemF2b27DoXPDoWhveiBmdXR0YXNzYSBhelxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJwYXJhbmNzb3QuXG4iCisKKyN+IG1zZ2lkICIlcyBpcyBlbnRpcmUgZGV2aWNlLCBub3QganVzdCBvbmUgcGFydGl0aW9uIVxuIgorI34gbXNnc3RyICIlcyBhIHRlbGplcyBlc3prw7Z6LCBuZW0gY3NhayBlZ3kgcGFydMOtY2nDsyFcbiIKKworI34gbXNnaWQgIkBnICVnIEBiIEBCIHVuaW5pdGlhbGl6ZWQgYnV0IEBpIEBCIGluIHVzZS5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVnIGNzb3BvcnQgYmxva2tiaXR0w6lya8OpcGUgaW5pY2lhbGl6w6FsYXRsYW4sIGRlIGF6IGlub2RlIGJpdHTDqXJrw6lwICIKKyN+ICJoYXN6bsOhbGF0YmFuLlxuIgorCisjfiBtc2dpZCAiPFRoZSBBQ0wgaW5kZXggaW5vZGU+IgorI34gbXNnc3RyICI8QXogQUNMIGluZGV4IGlub2RlPiIKKworI34gbXNnaWQgIjxUaGUgQUNMIGRhdGEgaW5vZGU+IgorI34gbXNnc3RyICI8QXogQUNMIGFkYXQgaW5vZGU+IgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2lkLmdtbyBiL2UyZnNwcm9ncy9wby9pZC5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI1YTk2MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9pZC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2lkLnBvIGIvZTJmc3Byb2dzL3BvL2lkLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyYjc1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vaWQucG8KQEAgLTAsMCArMSw4NTI0IEBACisjIFBlc2FuIEJhaGFzYSBJbmRvbmVzaWEgdW50dWsgZTJmc3Byb2dzCisjIENvcHlyaWdodCAoQykgMjAwOCBUaGVvZG9yZSBUc28gKG1zZ2lkcykKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gZnJlZWx5IGNvcHkgYW5kIGRpc3RyaWJ1dGUKKyMgdGhpcyBmaWxlIGFuZCBtb2RpZmllZCB2ZXJzaW9ucywgcHJvdmlkZWQgdGhhdCB0aGlzCisjIGhlYWRlciBpcyBub3QgcmVtb3ZlZCBhbmQgbW9kaWZpZWQgdmVyc2lvbnMgYXJlIG1hcmtlZAorIyBhcyBzdWNoLgorIyBBcmlmIEUuIE51Z3JvaG8gPGFyaWZfZW5kcm9AeWFob28uY29tPiwgMjAwOCwgMjAwOSwgMjAxMC4KKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40MS4xMlxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxMC0wNS0yNCAxMjozMCswNzAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBBcmlmIEUuIE51Z3JvaG8gPGFyaWZfZW5kcm9AeWFob28uY29tPlxuIgorIkxhbmd1YWdlLVRlYW06IEluZG9uZXNpYW4gPHRyYW5zbGF0aW9uLXRlYW0taWRAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgorIkxhbmd1YWdlOiBpZFxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTFcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJCYWQgYmxvY2sgJXUgZGlsdWFyIGphbmdrYXVhbjsgZGlhYmFpa2FuLlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgImtldGlrYSBtZWxha3VrYW4gcGVuZ2VjaGVja2FuIGRpIGlub2RlIGJhZCBibG9jayIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgaW5vZGUgYmFkIGJsb2NrIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgdW50dWsgbWVtYnVrYSAlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSBwb3BlbiAnJXMnIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgImtldGlrYSBtZW1iYWNhIGRhbGFtIGRhZnRhciBiYWQgYmxvY2sgZGFyaSBiZXJrYXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgImtldGlrYSBtZW1wZXJiYXJ1aSBpbm9kZSBiYWQgYmxvY2siCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisiUGVyaW5nYXRhbjogaWxsZWdhbCBibG9jayAldSBkaXRlbXVrYW4gZGFsYW0gaW5vZGUgYmFkIGJsb2NrLiBEaWhhcHVzLlxuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJFcnJvciBtZW1iYWNhIGJsb2NrICVsdSAoJXMpIGtldGlrYSAlcy4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJFcnJvciBtZW1iYWNhIGJsb2NrICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NiBlMmZzY2svZWhhbmRsZXIuYzoxMTUKK21zZ2lkICJJZ25vcmUgZXJyb3IiCittc2dzdHIgIk1lbmdhYmFpa2FuIGVycm9yIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIk1lbWFrc2EgbWVudWxpcyBrZW1iYWxpIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJyb3IgbWVudWxpcyBibG9jayAlbHUgKCVzKSBrZXRpa2EgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJFcnJvciBtZW51bGlzIGJsb2NrICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAiZGlyYmxvY2sga29zb25nIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo2MgorbXNnaWQgImVtcHR5IGRpciBtYXAiCittc2dzdHIgImRpciBtYXAga29zb25nIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiRGlyZWt0b3JpIGJsb2NrICV1ICgjJWQpIGtvc29uZyBkYWxhbSBpbm9kZSAldVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIgorbXNnc3RyICJOb21vciBkYXJpIGJsb2NrIHRpZGFrIGxlZ2FsIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZW5nYWxva2FzaWthbiBibG9jayBidWZmZXIgKHVrdXJhbj0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorIywgZnV6enkKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCisKKyM6IGUyZnNjay9mbHVzaGIuYzozNQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgZGlza1xuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBkaXNrXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIkJMS0ZMU0JVRiBpb2N0bCB0aWRhayBkaXN1cHBvcnQhIFRpZGFrIGRhcGF0IG1lbWZsdXNoIGJ1ZmZlci5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tdIHBlcmFuZ2thdFxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgImtldGlrYSBtZW1idWthICVzIHVudHVrIGZsdXNoaW5nIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1mbHVzaCAlcyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1idWthICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImtldGlrYSBtZW5jb2JhIG1lbWJ1a2EgaW5vZGUgc2NhbiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgImtldGlrYSBtZW1wZXJvbGVoIGlub2RlIGJlcmlrdXRueWEiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiJXUgaW5vZGVzIGRpc2Nhbi5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJtZW1iYWNhIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogbm8gdmFsaWQgam91cm5hbCBzdXBlcmJsb2NrIGZvdW5kXG4iCittc2dzdHIgIiVzOiBqb3VybmFsIHN1cGVyYmxvY2sgdGlkYWsgdmFsaWQgZGl0ZW11a2FuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogam91cm5hbCB0ZXJsYWx1IHBlbmRla1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiJXM6IG1lcmVjb3Zlcnkgam91cm5hbFxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd29uJ3QgZG8gam91cm5hbCByZWNvdmVyeSB3aGlsZSByZWFkLW9ubHlcbiIKK21zZ3N0ciAiJXM6IHRpZGFrIGFrYW4gbWVsYWt1a2FuIGpvdXJuYWwgcmVjb3Zlcnkga2V0aWthIHJlYWQtb25seVxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk5NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmUtb3BlbiAlcyIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgdW50dWsgbWVtYnVrYSAlcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJBZXJyb3IgbWVuZ2Fsb2thc2lrYW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJiYmxvY2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQmJpdG1hcCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgImNjb21wcmVzcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ2tvbmZsaWsgZGVuZ2FuIGJlYmVyYXBhIHNpc3RlbSBiZXJrYXMgbGFpbiBAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkZGlyZWt0b3JpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEZGVsZXRlZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImVlbnRyaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjIKK21zZ2lkICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKK21zZ3N0ciAiRUBlICclRG4nIGRhbGFtICVwICglaSkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIzCittc2dpZCAiZmZpbGVzeXN0ZW0iCittc2dzdHIgImZzaXN0ZW0gYmVya2FzIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRnVudHVrIEBpICVpICglUSkgYWRhbGFoIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ2dydXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoSFRSRUUgQGQgQGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklpbGVnYWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImpqb3VybmFsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMAorbXNnaWQgImxsb3N0K2ZvdW5kIgorbXNnc3RyICJsbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICJMYWRhbGFoIHNlYnVhaCBsaW5rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMgorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtbXVsdGlwbHktY2xhaW1lZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibmludmFsaWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJvb3JwaGFuZWQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM1Cittc2dpZCAicHByb2JsZW0gaW4iCittc2dzdHIgInBwcm9ibGVtIGRhbGFtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNgorbXNnaWQgInFxdW90YSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJycm9vdCBAaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJzc2VoYXJ1c255YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAiU3N1cGVyQGIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInV1bmF0dGFjaGVkIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgInZwZXJhbmdrYXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieGV4dGVudCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgInp6ZXJvLWxlbmd0aCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8SW5vZGUgS29zb25nPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8QmFkIGJsb2NrIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKKyMsIGZ1enp5Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPElub2RlIGpvdXJuYWw+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorIywgZnV6enkKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPGlub2RlIGRlc2tyaXBzaSBncnVwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiPGJvb3QgbG9hZGVyIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjAKK21zZ2lkICI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iCittc2dzdHIgIjx1bmRlbGV0ZSBkaXJla3RvcmkgaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIjxpbm9kZSBkZXNrcmlwc2kgZ3J1cD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPElub2RlIGpvdXJuYWw+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPElub2RlIHRlcnBlc2FuIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxJbm9kZSBUZXJwZXNhbiAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJiZXJrYXMgYmlhc2EiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM1Cittc2dpZCAiZGlyZWN0b3J5IgorbXNnc3RyICJkaXJla3RvcmkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAia2FyYWt0ZXIgZGV2aWNlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAiYmxvY2sgZGV2aWNlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgIm5hbWVkIHBpcGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAic3ltYm9saWMgbGluayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAic29ja2V0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJ0aXBlIGZpbGUgdGlkYWsgZGlrZXRhaHVpIGRlbmdhbiBtb2RlIDAlbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjIKK21zZ2lkICJpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvY2sgdGlkYWsgbGFuZ3N1bmciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI0Cittc2dpZCAiZG91YmxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJibG9rIHRpZGFrIGxhbmdzdW5nIGJlcmR1YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb2sgdGlkYWsgbGFuZ3N1bmcgYmVydGlnYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjgKK21zZ2lkICJ0cmFuc2xhdG9yIGJsb2NrIgorbXNnc3RyICJibG9rIHBlbmVyamVtYWgiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAiYmxvayAjIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgImthbGlrYW4gcGV0YSBpbm9kZSB5YW5nIGRpdHVudHV0IgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAiaW50ZXJuYWwgZXJyb3I6IHRpZGFrIGRhcGF0IG1lbmVtdWthbiBkdXBfYmxrIHVudHVrICV1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgImtlbWJhbGkgZGFyaSBjbG9uZV9maWxlX2Jsb2NrIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiaW50ZXJuYWwgZXJyb3I6IHRpZGFrIGRhcGF0IG1lbmVtdWthbiBFQSBibG9jayByZWNvcmQgdW50dWsgJXUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICJpbnRlcm5hbCBlcnJvcjogdGlkYWsgZGFwYXQgbWVuZW11a2FuIEVBIGlub2RlIHJlY29yZCB1bnR1ayAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6NjY2IGUyZnNjay9wYXNzMi5jOjk3MAorbXNnaWQgInJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJtZW1iYWNhIGRpcmVrdG9yaSBibG9jayIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgImluLXVzZSBpbm9kZSBtYXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMjIKK21zZ2lkICJkaXJlY3RvcnkgaW5vZGUgbWFwIgorbXNnc3RyICJkaXJla3RvcmkgaW5vZGUgbWFwIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAiaW4tdXNlIGJsb2NrIG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE1MAorIywgZnV6enkKK21zZ2lkICJtZXRhZGF0YSBibG9jayBtYXAiCittc2dzdHIgIm1ldGEtZGF0YSBibG9rIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJtZW1idWthIGlub2RlIHNjYW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJtZW1wZXJvbGVoIGlub2RlIHNlbGFuanV0bnlhIGRhcmkgc2NhbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTkzMworbXNnaWQgIlBhc3MgMSIKK21zZ3N0ciAiVGFoYXAgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAibWVtYmFjYSBpbmRpcmVjdCBibG9jayBkYXJpIGlub2RlICV1IgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAiaW5vZGUgbWFwIGJ1cnVrIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAiaW5vZGUgZGFsYW0gYmFkIGJsb2NrIG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgImltYWdpYyBpbm9kZSBtYXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAibXVsdGlwbHkgZGlrbGFpbSBibG9jayBtYXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIyNDUKK21zZ2lkICJleHQgYXR0ciBibG9jayBtYXAiCittc2dzdHIgImV4dCBhdHRyIGJsb2NrIG1hcCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiU2bHUoJWMpOiBkaXBlcmtpcmFrYW4gJTZsdSBkaXBlcm9sZWggcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiYmxvY2sgYml0bWFwIgorCisjOiBlMmZzY2svcGFzczEuYzozODMzCittc2dpZCAiaW5vZGUgYml0bWFwIgorbXNnc3RyICJpbm9kZSBiaXRtYXAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAiaW5vZGUgdGFibGUiCisKKyM6IGUyZnNjay9wYXNzMi5jOjI4NworbXNnaWQgIlBhc3MgMiIKK21zZ3N0ciAiVGFoYXAgMiIKKworIzogZTJmc2NrL3Bhc3MyLmM6MTA0MiBlMmZzY2svcGFzczIuYzoxMjA3Cittc2dpZCAiQ2FuIG5vdCBjb250aW51ZS4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbGFuanV0a2FuLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAiaW5vZGUgc2VsZXNhaSBiaXRtYXAiCisKKyM6IGUyZnNjay9wYXNzMy5jOjg2Cittc2dpZCAiUGVhayBtZW1vcnkiCittc2dzdHIgIlB1bmNhayBwZW1ha2FpYW4gbWVtb3JpIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIlRhaGFwIDMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorbXNnaWQgImlub2RlIGxvb3AgZGV0ZWN0aW9uIGJpdG1hcCIKK21zZ3N0ciAiaW5vZGUgZGV0ZWtzaSBsb29wIGJpdG1hcCIKKworIzogZTJmc2NrL3Bhc3M0LmM6MjA3Cittc2dpZCAiUGFzcyA0IgorbXNnc3RyICJUYWhhcCA0IgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiVGFoYXAgNSIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTA0Cittc2dpZCAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEKK21zZ2lkICIobm8gcHJvbXB0KSIKK21zZ3N0ciAiKHRpZGFrIGFkYSBwcm9tcHQpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyCittc2dpZCAiRml4IgorbXNnc3RyICJCZXR1bGthbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MworbXNnaWQgIkNsZWFyIgorbXNnc3RyICJEaWhhcHVzIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0Cittc2dpZCAiUmVsb2NhdGUiCittc2dzdHIgIkRpcGluZGFoa2FuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIkRpYWxva2FzaWthbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiRGlleHBhbmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJNZW55YW1idW5na2FuIGtlIC9sb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJNZW1idWF0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAiTWVuZ2FtYmlsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIlRydW5jYXRlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIk1lbmdoYXB1cyBpbm9kZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICJNZW1iYXRhbGthbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICJNZW1iYWdpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIk1lbGFuanV0a2FuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1Cittc2dpZCAiQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCittc2dzdHIgIktvcGkgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiSGFwdXMgYmVya2FzIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIlN1cHByZXNzIHBlc2FuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4Cittc2dpZCAiVW5saW5rIgorbXNnc3RyICJVbmxpbmsiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjkKK21zZ2lkICJDbGVhciBIVHJlZSBpbmRleCIKK21zZ3N0ciAiSGFwdXMgSFRyZWUgaW5kZXgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiQnVhdCBrZW1iYWxpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoS09TT05HKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MAorbXNnaWQgIkZJWEVEIgorbXNnc3RyICJESUJFVFVMS0FOIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxCittc2dpZCAiQ0xFQVJFRCIKK21zZ3N0ciAiRElIQVBVUyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAiRElQSU5EQUhLQU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkRJQUxPS0FTSUtBTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJESUVYUEFORCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NQorbXNnaWQgIlJFQ09OTkVDVEVEIgorbXNnc3RyICJESUhVQlVOR0tBTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIkRJQlVBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NworbXNnaWQgIlNBTFZBR0VEIgorbXNnc3RyICJESUFNQU5LQU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIkRJUE9UT05HIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiSU5PREUgRElIQVBVUyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIkRJQkFUQUxLQU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiRElCQUdJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAiTUVMQU5KVVRLQU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMKK21zZ2lkICJNVUxUSVBMWS1DTEFJTUVEIEJMT0NLUyBDTE9ORUQiCittc2dzdHIgIk1VTFRJUExZLUNMQUlNRUQgQkxPSyBESUtPUEkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkJFUktBUyBESUhBUFVTIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiRElBS0hJUkkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYKK21zZ2lkICJVTkxJTktFRCIKK21zZ3N0ciAiRElMRVBBUyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NworbXNnaWQgIkhUUkVFIElOREVYIENMRUFSRUQiCittc2dzdHIgIkhUUkVFIElOREVYIERJSEFQVVMiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICJBS0FOIE1FTUJVQVQgS0VNQkFMSSIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiQGIgQEIgdW50dWsgQGcgJWcgdGlkYWsgZGFsYW0gQGcuIChAYiAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0Cittc2dpZCAiQGkgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiQGkgQEIgdW50dWsgQEcgJUcgdGlkYWsgZGFsYW0gQGcuIChAYiAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgdGFibGUgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIy4gQC1leHBhbmRlZDogV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTkKK21zZ2lkICIiCisiQGkgdGFibGUgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKKyJXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuIgorbXNnc3RyICIiCisiQGkgdGFibGUgdW50dWsgQGcgJWcgdGlkYWsgYmVyYWRhIGRhbGFtIEBnLiAoQGIgJWIpXG4iCisiUEVSSU5HQVRBTjogS0VNVU5HS0lOQU4gS0VISUxBTkdBTiBEQVRBIEJFU0FSLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBzdXBlcmJsb2NrXG4KKyMuIEAtZXhwYW5kZWQ6IGlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6XG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiAgb3JcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQFMgdGlkYWsgZGFwYXQgZGliYWNhIGF0YXUgdGlkYWsgZGFwYXQgbWVuamVsYXNrYW4gZXh0MiBkZW5nYW4gYmVuYXJcbiIKKyJAZi4gSmlrYSBAdiB0aWRhayB2YWxpZCBkYW4gaW5pIGJlcmlzaSBzZWJ1YWggZXh0MlxuIgorIkBmIChkYW4gYnVrYW4gc3dhcCBhdGF1IHVmcyBhdGF1IHNlc3VhdHUgeWFuZyBsYWluKSwgbWFrYSBAU1xuIgorImtvcnVwLCBkYW4gYW5kYSBtdW5na2luIGJpc2EgbWVuY29iYSBtZW5qYWxhbmthbiBlMmZzY2sgc2VjYXJhIGFsdGVybmF0aWYgIgorIkBTOlxuIgorIiAgICAgZTJmc2NrIC1iICVTIDxAdj5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIGZpbGVzeXN0ZW0gc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBzdXBlcmJsb2NrKSBpcyAlYiBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIGRldmljZSBpcyAlYyBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogRWl0aGVyIHRoZSBzdXBlcmJsb2NrIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2Cittc2dpZCAiIgorIlRoZSBAZiBzaXplIChhY2NvcmRpbmcgdG8gdGhlIEBTKSBpcyAlYiBAYnNcbiIKKyJUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgQHYgaXMgJWMgQGJzXG4iCisiRWl0aGVyIHRoZSBAUyBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisiVWt1cmFuIEBmIChtZW51cnV0IGRhcmkgQFMpIGFkYWxhaCAlYiBAYnNcbiIKKyJVa3VyYW4gZmlzaWsgZGFyaSBAdiBhZGFsYWggJWMgQGJzXG4iCisiS2FsYXUgbmdnYWsgQFMgYXRhdSB0YWJlbCBwYXJ0aXNpIHlhbmcgbXVuZ2tpbiBrb3J1cCFcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlZlcnNpIGUyZnNjayBpbmkgdGlkYWsgbWVuZ2ltcGxlbWVudGFzaWthbiB1bnR1ayB1a3VyYW4gZnJhZ21lbnQgeWFuZyAiCisiYmVyYmVkYVxuIgorImRhcmkgQGIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwCittc2dpZCAiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2VoYXJ1c255YSAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJAUyBmaXJzdF9kYXRhX0BiID0gJWIsIHNlaGFydXNueWEgJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiQGYgdGlkYWsgbWVtaWxpa2kgc2VidWFoIFVVSUQ7IG1lbWJ1YXQgc2F0dS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJDYXRhdGFuOiBqaWthIGJlYmVyYXBhIGlub2RlIGF0YXUgYmxvayBiaXRtYXAgYmxvayBhdGF1IGJhZ2lhblxuIgorImRhcmkgdGFiZWwgaW5vZGUgbWVtYnV0dWhrYW4gcmVsb2thc2ksIGFuZGEgbXVuZ2tpbiBiaXNhIG1lbmNvYmFcbiIKKyJkZW5nYW4gbWVuamFsYW5rYW4gZTJmc2NrIGRlbmdhbiBwaWxpaGFuICctYiAlUycgdGVybGViaWggZGFodWx1LiBNYXNhbGFoXG4iCisieWFuZyBtdW5na2luIHRpbWJ1bCBqaWthIGRlbmdhbiBtZW5nZ3VuYWthbiBibG9rIGRlc2tyaXBzaSB1dGFtYSwgZGFuXG4iCisiYmxvayBjYWRhbmdhbiBncnVwIGRlc2tyaXBzaSBtdW5na2luIE9LLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiS29ydXBzaSBkaXRlbXVrYW4gZGkgQFMuICglcyA9ICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgZGV2aWNlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBAdjogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVuZW50dWthbiB1a3VyYW4gZGFyaSBwaGlzaWsgQHY6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIkBpIHRlcmhpdHVuZyBkYWxhbSBAUyBhZGFsYWggJWksIEBzICVqLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OAorbXNnaWQgIlRoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQgdGlkYWsgbWVuZHVrdW5nIGxheWFuYW4gZmlsZXR5cGUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiQFMgbWVtaWxpa2kgc2VidWFoIEBuIEBqIChAaSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiRXh0ZXJuYWwgQGogbWVtaWxpa2kgbXVsdGlwbGUgQGYgZGFyaSBwZW5nZ3VuYSAodGlkYWsgZGlsYXlhbmkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmVtdWthbiBleHRlcm5hbCBAalxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiRXh0ZXJuYWwgQGogbWVtaWxpa2kgYmFkIEBTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRXh0ZXJuYWwgQGogdGlkYWsgbWVsYXlhbmkgaW5pIEBmXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gam91cm5hbCBzdXBlcmJsb2NrIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgam91cm5hbCAKKyMuIEAtZXhwYW5kZWQ6IGZvcm1hdC5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE4Cittc2dpZCAiIgorIkBmIEBqIEBTIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuIgorIkl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBAaiAiCisiZm9ybWF0LlxuIgorIkl0IGlzIGFsc28gcG9zc2libGUgdGhlIEBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIiIKKyJAZiBAaiBAUyBtZW1pbGlraSB0aXBlIHlhbmcgdGlkYWsgZGlrZXRhaHVpICVOICh0aWRhayBkaXN1cHBvcnQpLlxuIgorIkluaSBzYW5nYXQgbWVtdW5na2lua2FuIGppa2Egc2FsaW5hbiBkYXJpIGUyZnNjayBzdWRhaCBsYW1hIGRhbi9hdGF1IHRpZGFrICIKKyJtZWxheWFuaSBmb3JtYXQgQGogaW5pLlxuIgorIkluaSBqdWdhIG11bmdraW4gamlrYSBAaiBAUyB0ZWxhaCB0ZXJrb3J1cHNpLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJAaiBAUyB0ZWxhaCB0ZXJrb3J1cHNpLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKKyMsIGZ1enp5Cittc2dpZCAiQFMgaGFzX0BqIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIkBTIHRhbmRhIGhhc19AaiBoaWxhbmcsIHRldGFwaSBAaiAlcyBhZGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjM2Cittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICJAUyB0YW5kYSBuZWVkc19yZWNvdmVyeSBhZGEsIHRldGFwaSB0aWRhayBtZW1pbGlraSBAai5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIkBTIHRhbmRhIG5lZWRfcmVjb3Zlcnkgc3VkYWggaGlsYW5nLCB0ZXRhcGkgQGogbWVtaWxpa2kgZGF0YS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2xlYXIgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDYKK21zZ2lkICJDbGVhciBAaiIKK21zZ3N0ciAiSGFwdXMgQGoiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiQGYgbWVtaWxpa2kgZmVhdHVyZSBmbGFnKHMpIHNldCwgdGV0YXBpIG1lbWlsaWtpIHNlYnVhaCByZXZpc2kgMCBAZi4iCisKKyMuIEAtZXhwYW5kZWQ6ICVzIG9ycGhhbmVkIGlub2RlICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjU2Cittc2dpZCAiJXMgQG8gQGkgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbiIKK21zZ3N0ciAiJXMgQG8gQGkgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCB1a3VyYW49JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiQEkgJUIgKCViKSBkaXRlbXVrYW4gZGFsYW0gQG8gQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJTdWRhaCBkaWhhcHVzICVCICglYikgZGl0ZW11a2FuIGRhbGFtIEBvIEBpICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJASSBAbyBAaSAlaSBkYWxhbSBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJASSBAaSAlaSBkYWxhbSBkYWZ0YXIgQG8gQGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiQGogQFMgbWVtaWxpa2kgc2VidWFoIGZlYXR1cmUgeWFuZyB0aWRhayBkaWtldGFodWkgYWt0aWYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIkBqIEBTIG1lbWlsaWtpIHNlYnVhaCBmZWF0dXJlIHlhbmcgdGlkYWsga29tcGF0aWJlbCB5YW5nIHRpZGFrIGRpa2V0YWh1aSAiCisiYWt0aWYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5MQorbXNnaWQgIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIKK21zZ3N0ciAidmVyc2kgQGogdGlkYWsgZGlzdXBwb3J0IG9sZWggZTJmc2NrIGluaS5cbiIKKworIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1vdmluZyBAaiBmcm9tIC8lcyB0byBoaWRkZW4gQGkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJNZW1pbmRhaGthbiBAaiBkYXJpIC8lcyBrZSB0ZXJzZW1idW55aSBAaS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRXJyb3IgbWVtaW5kYWhrYW4gQGo6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJNZW5lbXVrYW4gQG4gVjIgQGogQFMgZmllbGRzIChkYXJpIFYxIEBqKS5cbiIKKyJNZW5naGFwdXMgZmllbGQgZGlhdGFzIGRhcmkgVjEgQGogQFMuLi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogUnVuIGpvdXJuYWwgYW55d2F5CisjOiBlMmZzY2svcHJvYmxlbS5jOjMxMgorbXNnaWQgIlJ1biBAaiBhbnl3YXkiCittc2dzdHIgIkphbGFua2FuIEBqIGJhZ2FpbWFuYXB1biIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICIiCisiUmVjb3ZlcnkgZmxhZyB0aWRhayBkaXNldCBkYWxhbSBiYWNrdXAgQFMsIGphZGkgbWVuamFsYW5rYW4gQGogIgorImJhZ2FpbWFuYXB1bi5cbiIKKworIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMjIKK21zZ2lkICIiCisiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1lbnlpbXBhbiBpbmZvcm1hc2kgQGogQGkgQGIuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorIkBmIHRpZGFrIG1lbWlsaWtpIHJlc2l6ZV9AaSBha3RpZiwgdGV0YXBpIF9yZXNlcnZlZF9nZHRfQGJzXG4iCisiYWRhbGFoICVOOyBAcyBub2wuICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJSZXNpemVfQGkgdGlkYWsgYWt0aWYsIHRldGFwaSByZXNpemUgQGkgYnVrYW4gbm9sLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIlJlc2l6ZSBAaSB0aWRhayB2YWxpZC4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJAUyB3YWt0dSB0ZXJha2hpciBkaXBhc2FuZyAoJXQsXG4iCisiXHRzZWthcmFuZyA9ICVUKSBiZXJhZGEgZGkgbWFzYSB5YW5nIGFrYW4gZGF0YW5nLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQ4Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkBTIHdha3R1IHRlcmFraGlyIGRpdHVsaXMgKCV0LFxuIgorIlx0c2VrYXJhbmcgPSAlVCkgYmVyYWRhIGRpIG1hc2EgeWFuZyBha2FuIGRhdGFuZy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIHNob3VsZCBiZSAlWC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBAcyAlWC4gICIKK21zZ3N0ciAiQFMgcGV0dW5qdWsgdW50dWsgc3VwZXJibG9rIGx1YXIgQHMgJVguICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJNZW5hbWJhaGthbiBkaXJoYXMgaGludCBrZSBAZi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNjIKKyMsIGZ1enp5Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiQGcgZGVza3JpcHNpICVnIGNoZWNrc3VtIHRpZGFrIHZhbGlkLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiQGcgZGVza3JpcHNpICVnIGRpdGFuZGFpIHVuaW50aWFsaXNhc2kgdGFucGEgbWVuc2V0IGZlYXR1cmUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgIkBnIGRlc2tyaXBzaSAlZyBtZW1pbGlraSBpbm9kZSB5YW5nIHRpZGFrIHZhbGlkIHRlcmhpdHVuZyAlYi4gICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIlRlcmFraGlyIEBnIEBiIEBCIHRpZGFrIHRlcmluaXRpYWxpc2FzaS4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICJKdXJuYWwgdHJhbnNha3NpICVpIHRlcmtvcnVwc2ksIGJhbGFzYW4gZGliYXRhbGthbi5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiVGFuZGEgdGVzdF9mcyB0ZWxhaCBha3RpZiAoZGFuIGV4dDQgdGVyc2VkaWEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkBTIHdha3R1IHBhc2FuZyB0ZXJha2hpciBiZXJhZGEgZGkgbWFzYSB5YW5nIGFrYW4gZGF0YW5nLlxuIgorIlx0KGxlYmloIGtlY2lsIHNlaGFyaSwgbXVuZ2tpbiBrYXJlbmEgcGVyYW5na2F0IGphbSBkaXNldCB0aWRhayBiZW5hcikgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzk3CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkBTIHdha3R1IHR1bGlzIHRlcmFraGlyIGJlcmFkYSBkaW1hc2EgeWFuZyBha2FuIGRhdGFuZy5cbiIKKyJcdChsZWJpaCBrZWNpbCBzZWhhcmksIG11bmdraW4ga2FyZW5hIHBlcmFuZ2thdCBqYW0gZGlzZXQgdGlkYWsgYmVuYXIpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICJTYXR1IGF0YXUgbGViaWggQGIgQGcgcGVuZGVza3JpcHNpIGNoZWNrc3VtIHRpZGFrIHZhbGlkLiAgIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgaW5vZGVzIGNvdW50IHRvICVqICh3YXMgJWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDA4CisjLCBmdXp6eQorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiTWVuc2V0IGp1bWxhaCByZXNlcnZlZCBibG9rIGtlICVsdVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCisjLCBmdXp6eQorbXNnaWQgIlNldHRpbmcgZnJlZSBAYnMgY291bnQgdG8gJWMgKHdhcyAlYilcbiIKK21zZ3N0ciAiTWVuc2V0IGp1bWxhaCByZXNlcnZlZCBibG9rIGtlICVsdVxuIgorCisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4CisjLCBmdXp6eQorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAiIgorIk1lbWluZGFoa2FuIEBqIGRhcmkgLyVzIGtlIHRlcnNlbWJ1bnlpIEBpLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKKyMsIGZ1enp5Cittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICJVa3VyYW4gYmxvayB0aWRhayB2YWxpZCAtICVzIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX29wZW4yOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKKyMsIGZ1enp5Cittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAiQ2FkYW5nYW4gc3VwZXJibG9rIGRpc2ltcGFuIGRpIGJsb2s6ICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NjcKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIkNhZGFuZ2FuIHN1cGVyYmxvayBkaXNpbXBhbiBkaSBibG9rOiAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJUYWhhcCAxOiBNZW1lcmlrc2EgQGksIEBicywgZGFuIHVrdXJhblxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiQHIgYnVrYW4gc2VidWFoIEBkLiAgIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIiIKKyJAciBtZW1pbGlraSBkdGltZSB0ZXJzZXQgKG11bmdraW4ga2FyZW5hIHBlbmdndW5hYW4gbWtlMmZzIHZlcnNpIGxhbWEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNlcnZlZCBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTA4Cittc2dpZCAiUmVzZXJ2ZWQgQGkgJWkgKCVRKSBoYXMgQG4gbW9kZS4gICIKK21zZ3N0ciAiUmVzZXJ2ZWQgQGkgJWkgKCVRKSBtZW1pbGlraSBAbiBtb2RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiQEQgQGkgJWkgbWVtaWxpa2kgZHRpbWUgbm9sLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgIgorbXNnc3RyICJAaSAlaSBzZWRhbmcgZGlndW5ha2FuLCB0ZXRhcGkgbWlsaWtpIGR0aW1lIHRlcnNldC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSB6ZXJvLWxlbmd0aCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGEgQHogQGQuICAiCittc2dzdHIgIkBpICVpIGFkYWxhaCBzZWJ1YWggQHogQGQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQGcgJWcncyBAYiBAQiBkaSAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJAZyAlZydzIEBpIEBCIGRpICViIEBDLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQEcgJWcncyBAaSB0YWJlbCBkaSAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQGcgJWcncyBAYiBAQiAoJWIpIGFkYWxhaCBidXJ1ay4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQGcgJWcncyBAaSBAQiAoJWIpIGFkYWxhaCBidXJ1ay4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIkBpICVpLCBpX3NpemUgYWRhbGFoICVJcywgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfQGJzIGFkYWxhaCAlSWIsIEBzICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYzCittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiQEkgJUIgKCViKSBkYWxhbSBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiVCICglYikgc2FsaW5nIGJlcnR1bXBhbmcgdGluZGloIEBmIG1ldGFkYXRhIGRhbGFtIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkBpICVpIG1lbWlsaWtpIEBiKHMpIGlsZWdhbC4gICIKKworIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IGlsbGVnYWwgQGJzIGluIEBpICVpLlxuIgorbXNnc3RyICJUZXJsYWx1IGJhbnlhayBpbGVnYWwgQGJzIGRhbGFtIEBpICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJASSAlQiAoJWIpIGRhbGFtIEBiIEBpIGJ1cnVrLiAgIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJAYiBAaSBidXJ1ayBtZW1pbGlraSBpbGVnYWwgQGIocykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJEdXBsaWthc2kgYXRhdSBAYiBidXJ1ayBzZWRhbmcgZGlndW5ha2FuIVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgJWIgdXNlZCBhcyBiYWQgYmxvY2sgaW5vZGUgaW5kaXJlY3QgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTk4Cittc2dpZCAiQmFkIEBiICViIHVzZWQgYXMgYmFkIEBiIEBpIGluZGlyZWN0IEBiLiAgIgorbXNnc3RyICJAYiAlYiBidXJ1ayB5YW5nIGRpZ3VuYWthbiBzYW1hIGJ1cnVrbnlhIGRlbmdhbiBAYiBAaSBpbmRpcmVjdCBAYi4gICIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisiXG4iCisiQGIgQGkgYnVydWsgdGVsYWggdGVya29ydXBzaS4gQW5kYSBzZWhhcnVzbnlhIGJlcmhlbnRpXG4iCisic2VrYXJhbmcgZGFuIG1lbmphbGFua2FuIGUyZnNjayAtYyB1bnR1ayBtZW5zY2FuIHVudHVrXG4iCisibWVuY2FyaSBibG9rIGJ1cnVrIGRhbGFtIEBmLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkppa2EgQGIgYWRhbGFoIHNhbmdhdCBidXJ1aywgQGYgdGlkYWsgZGFwYXQgZGliZXR1bGthbi5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisiQW5kYSBkYXBhdCBtZW5naGFwdXMgQGIgaW5pIGRhcmkgZGFmdGFyIEBiIGJ1cnVrIGRhbiBiZXJoYXJhcFxuIgorIkBiIGJlbmFyIGJlbmFyIE9LLiBUZXRhcGkgdGlkYWsgZ2FyYW5zaSB1bnR1ayBoYWwgaW5pLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyMQorbXNnaWQgIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIgorbXNnc3RyICJAUyAoJWIpIHV0YW1hIGJlcmFkYSBkYWxhbSBkYWZ0YXIgQGIgYnVydWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICJCbG9rICViIGRhbGFtIGRlc2tyaXBzaSBAZyB1dGFtYSBiZXJhZGEgZGFsYW0gZGFmdGFyIEBiIGJ1cnVrXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJQZXJpbmdhdGFuOiBHcnVwICVnJ3MgQFMgKGIpIGJ1cnVrLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJQZXJpbmdhdGFuOiBHcnVwICVnJ3Mgc2FsaW5hbiBkYXJpIGRlc2tyaXBzaSBAZyBtZW1pbGlraSBzZWJ1YWggQGIgKCViKSAiCisiYnVydWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJQcm9ncmFtbWluZyBlcnJvcj8gQGIgIyViIHRlcmtsYWltIHVudHVrIHRpZGFrIGFkYSBhbGFzYW4gZGFsYW0gIgorInByb2Nlc3NfYmFkX0BiLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nICVOIGNvbnRpZ3VvdXMgYmxvY2socykgaW4gYmxvY2sgZ3JvdXAgJWcgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0OQorbXNnaWQgIkBBICVOIGNvbnRpZ3VvdXMgQGIocykgaW4gQGIgQGcgJWcgZm9yICVzOiAlbVxuIgorbXNnc3RyICJAQSAlTiBrb250aW51IEBiKHMpIGRhbGFtIEBiIEBnICVnIHVudHVrICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAiQEEgQGIgYnVmZmVyIHVudHVrIHJlbG9rYXNpICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiTWVtaW5kYWhrYW4gQGcgJWcncyAlcyBkYXJpICViIGtlICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2NAorIywgYy1mb3JtYXQKK21zZ2lkICJSZWxvY2F0aW5nIEBnICVnJ3MgJXMgdG8gJWMuLi5cbiIKK21zZ3N0ciAiTWVtaW5kYWhrYW4gQGcgJWcncyAlcyBrZSAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiUGVyaW5nYXRhbjogdGlkYWsgZGFwYXQgbWVtYmFjYSBAYiAlYiBkYXJpICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgYmxvY2sgJWIgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3NAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBAYiAlYiBmb3IgJXM6ICVtXG4iCittc2dzdHIgIlBlcmluZ2F0YW46IHRpZGFrIGRhcGF0IG1lbnVsaXMgQGIgJWIgdW50dWsgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc5IGUyZnNjay9wcm9ibGVtLmM6MTc0MAorbXNnaWQgIkBBIEBpIEBCICglTik6ICVtXG4iCittc2dzdHIgIkBBIEBpIEBCICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0Cittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgQGIgQEIgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkBBIGljb3VudCBsaW5rIGluZm9ybWFzaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJAQSBAZCBAYiBhcnJheTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcnJvciBrZXRpa2EgbWVsYWt1a2FuIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3Iga2V0aWthIG1lbmdpdGVyYXNpIG1lbGFsdWkgQGJzIGRhbGFtIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwOQorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCittc2dzdHIgIkVycm9yIG1lbnlpbXBhbiBAaSBjb3VudCBpbmZvcm1hc2kgKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICJFcnJvciBtZW55aW1wYW4gQGQgQGIgaW5mb3JtYXNpIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkVycm9yIG1lbWJhY2EgQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgIkBpICVpIG1lbWlsaWtpIGZsYWcgaW1hZ2ljIHRlcnNldC4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZXNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGJlcmthcyAoQGkgJWkpIG1lbWlsaWtpIGtldGFoYW5hblxuIgorImF0YXUgYXBwZW5kLW9ubHkgZmxhZyB0ZXJzZXQuIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIlNwZXNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBtZW1pbGlraSB1a3VyYW4ga29zb25nLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJAaiBAaSBzZWRhbmcgdGlkYWsgZGlndW5ha2FuLCB0ZXRhcGkgYmVyaXNpIGRhdGEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAaiBidWthbiBzZWJ1YWggZmlsZSByZWd1bGFyLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgIkBpICVpIGFkYWxhaCBiYWdpYW4gZGFyaSBkYWZ0YXIgQG8gQGkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorIkBpIGFkYWxhaCBiYWdpYW4gZGFyaSBvcnBoYW4gdGVya29ydXBzaSB5YW5nIGRpdGVtdWthbiBkYXJpIGxpbmtlZCBsaXN0LiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJFcnJvciBtZW1iYWNhIEBhIEBiICViIHVudHVrIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiQGkgJWkgbWVtaWxpa2kgc2VidWFoIEBhIEBiICViIGJ1cnVrLiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkVycm9yIG1lbWJhY2EgQGEgQGIgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQGEgQGIgJWIgbWVtaWxpa2kganVtbGFoIHJlZmVyZW5zaSAlciwgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzk1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJFcnJvciBtZW51bGlzIEBhIEBiICViICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgIkBhIEBiICViIG1lbWlsaWtpIGhfQGJzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgInN0cnVrdHVyIEBBIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBhIEBiICViIGFkYWxhaCBrb3J1cCAoYmVudHJvayBkYWxhbSBhbG9rYXNpKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIkBhIEBiICViIGFkYWxhaCBrb3J1cCAoQG4gbmFtYSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgIkBhIEBiICViIGFkYWxhaCBrb3J1cCAoQG4gdmFsdWUpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICJAaSAlaSB0ZXJsYWx1IGJlc2FyLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIG1lbnllYmFia2FuIEBkIHRlcmxhbHUgYmVzYXIuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIG1lbnllYmFia2FuIGJlcmthcyB0ZXJsYWx1IGJlc2FyLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBtZW55ZWJhYmthbiBzeW1saW5rIHRlcmxhbHUgYmVzYXIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiQGkgJWkgbWVtaWxpa2kgSU5ERVhfRkwgZmxhZyB0ZXJzZXQgZGkgQGYgdGFucGEgYmFudHVhbiBodHJlZS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgIkBpICVpIG1lbWlsaWtpIElOREVYX0ZMIGZsYWcgdGVyc2V0IHRldGFwaSB0aWRhayBzZWJ1YWggQGRcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiQGggJWkgbWVtaWxpa2kgc2VidWFoIEBuIHRpdGlrIHJvb3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTkKK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAiQGggJWkgbWVtaWxpa2kgc2VidWFoIHZlcnNpIGhhc2ggeWFuZyB0aWRhayBkaWxheWFuaSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIiIKKyJAaCAlaSBtZW5nZ3VuYWthbiBzZWJ1YWggaHRyZWUgeWFuZyB0aWRhayBrb21wYXRpYmxlIGRpIHRpdGlrIHJvb3QgZmxhZy5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiQGggJWkgbWVtaWxpa2kgc2VidWFoIGtlZGFsYW1hbiBwb2hvbiAoJU4pIHlhbmcgdGVybGFsdSBiZXNhclxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGFuIGluZGlyZWN0IGJsb2NrICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIG1ldGFkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3NAorbXNnaWQgIiIKKyJCYWQgQGIgQGkgaGFzIGFuIGluZGlyZWN0IEBiICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuIgorIkBmIG1ldGFkYXRhLiAgIgorbXNnc3RyICIiCisiQnVydWsgQGIgQGkgbWVtaWxpa2kgc2VidWFoIEBiICglYikgdGlkYWsgbGFuZ3N1bmcgeWFuZyBrb25mbGlrIGRlbmdhblxuIgorIkBmIG1ldGFkYXRhLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICJSZXNpemUgQGkgZ2FnYWwgbWVtYnVhdCBrZW1iYWxpOiAlbS4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4NQorbXNnaWQgIkBpICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGkgJWkgbWVtaWxpa2kgc2VidWFoIHVrdXJhbiBleHRyYSAoJUlTKSB5YW5nIGJlcmlzaSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgZGFsYW0gQGkgJWkgbWVtaWxpa2kgc2VidWFoIHBhbmphbmcgbmFtYSAoJU4pIHlhbmcgYmVyaXNpIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODk1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgZGFsYW0gQGkgJWkgbWVtaWxpa2kgbmlsYWkgb2ZzZXQgKCVOKSB5YW5nIGJlcmlzaSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICIiCisiQGEgZGFsYW0gQGkgJWkgbWVtaWxpa2kgc2VidWFoIG5pbGFpIEBiICglTikgeWFuZyBiZXJpc2kgQG4gKHNlaGFydXNueWEgMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKyJAYSBkYWxhbSBAaSAlaSBtZW1pbGlraSBzZWJ1YWggbmlsYWkgeWFuZyBiZXJ1a3VyYW4gKCVOKSB5YW5nIGJlcmlzaSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgZGFsYW0gQGkgJWkgbWVtaWxpa2kgc2VidWFoIGhhc2ggKCVOKSB5YW5nIGJlcmlzaSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICIiCisiQGkgJWkgYWRhbGFoIHNlYnVhaCAlSXQgdGV0YXBpIHNlcGVydGlueWEgYmVuYXIgYmVuYXIgc2VidWFoIGRpcmVrdG9yaS5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIGV4dGVudCB0cmVlIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgQHggdHJlZSBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3Iga2V0aWthIG1lbWJhY2EgZGlhdGFzIEB4IHRyZWUgZGFsYW0gQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorIkdhZ2FsIG1lbmdpdGVyYXNpIGV4dGVucyBkYWxhbSBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzMQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIG1lbWlsaWtpIHNlYnVhaCBleHRlbnNpIEBuXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSBtZW1pbGlraSBzZWJ1YWggZW50ZW5zaSBAblxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICJAaSAlaSBtZW1pbGlraSBFWFRFTlRTX0ZMIHRhbmRhIHNldCBkaSBAZiB0YW5wYSBzdXBwb3J0IGV4dGVuc2kuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIGV4dGVudCBmb3JtYXQsIGJ1dCBAUyBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuIgorbXNnc3RyICJAaSAlaSBhZGFsYWggc2VidWFoIGZvcm1hdCBleHRlbnNpLCB0ZXRhcGkgQFMgaGlsYW5nIGZlYXR1cmUgRVhURU5UU1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAiQGkgJWkgaGlsYW5nIEVYVEVOVF9GTCwgdGV0YXBpIGFkYWxhaCBzZWJ1YWggZm9ybWF0IGV4dGVuc2lcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIgorbXNnc3RyICJGYXN0IHN5bWxpbmsgJWkgbWVtaWxpa2kgRVhURU5UX0ZMIHRlcnNldC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIHRlbGFoIHRpZGFrIHRlcmF0dXIgZXh0ZW5zaW55YVxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1Cittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiQGkgJWkgbWVtaWxpa2kgc2VidWFoIHRpdGlrIGVrc3RlbnNpIHRpZGFrIHZhbGlkIChibGsgJWIsIGxibGsgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIkVycm9yIG1lbmdpdGVyYXNpIG1lbGFsdWkgQGQgQGJzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorIywgZnV6enkKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAaiBidWthbiBzZWJ1YWggZmlsZSByZWd1bGFyLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKKyMsIGZ1enp5Cittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkBqIEBpIHNlZGFuZyB0aWRhayBkaWd1bmFrYW4sIHRldGFwaSBiZXJpc2kgZGF0YS4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKKyMsIGZ1enp5Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiQGkgJWkgc2VkYW5nIGRpZ3VuYWthbiwgdGV0YXBpIG1pbGlraSBkdGltZSB0ZXJzZXQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKK21zZ3N0ciAiPEJhZCBibG9jayBpbm9kZT4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTUKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorIkBpICVpIHRlbGFoIHRpZGFrIHRlcmF0dXIgZXh0ZW5zaW55YVxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgIkBpICVpIHRlcmxhbHUgYmVzYXIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGkuICAiCittc2dzdHIgIiwgSW5vZGUgYml0bWFwIGRpICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBhIEBiICViIGFkYWxhaCBrb3J1cCAoYmVudHJvayBkYWxhbSBhbG9rYXNpKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAaSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSB0ZWxhaCB0aWRhayB0ZXJhdHVyIGV4dGVuc2lueWFcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkgbWVtaWxpa2kgc2VidWFoIGV4dGVuc2kgQG5cbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICJAaSAlaSBhZGFsYWggc2VidWFoIGZvcm1hdCBleHRlbnNpLCB0ZXRhcGkgQFMgaGlsYW5nIGZlYXR1cmUgRVhURU5UU1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIkBpICVpIG1lbWlsaWtpIElOREVYX0ZMIGZsYWcgdGVyc2V0IGRpIEBmIHRhbnBhIGJhbnR1YW4gaHRyZWUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkBpICVpIG1lbWlsaWtpIHNlYnVhaCBAYSBAYiAlYiBidXJ1ay4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiQGQgQGkgJWkgbWVtaWxpa2kgIyVCIHlhbmcgdGlkYWsgdGVyYWxva2FzaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICJAaSAlaSBtZW1pbGlraSBJTkRFWF9GTCBmbGFnIHRlcnNldCB0ZXRhcGkgdGlkYWsgc2VidWFoIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgJWkpIGhhcyBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVzaWFsIChAdi9zb2NrZXQvZmlmby9zeW1saW5rKSBiZXJrYXMgKEBpICVpKSBtZW1pbGlraSBrZXRhaGFuYW5cbiIKKyJhdGF1IGFwcGVuZC1vbmx5IGZsYWcgdGVyc2V0LiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAic3RydWt0dXIgQEEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmdcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTkKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIG1lbWlsaWtpIHNlYnVhaCBleHRlbnNpIEBuXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiQGEgQGIgJWIgYWRhbGFoIGtvcnVwIChAbiBuYW1hKS4gICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJNZW5qYWxhbmthbiB0YWhhcCB0YW1iYWhhbiB1bnR1ayBtZXJlc29sdmUgQGJzIGRpa2xhaW0gb2xlaCBsZWJpaCBkYXJpIHNhdHUgIgorIkBpLi4uXG4iCisiVGFoYXAgMUI6IE1lbnNjYW4ga2VtYmFsaSB1bnR1ayBAbSBAYnNcbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIkBtIEBiKHMpIGRhbGFtIEBpICVpOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcnJvciBrZXRpa2EgbWVuc2NhbiBpbm9kZXMgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkVycm9yIGtldGlrYSBtZW5naXRlcmFzaSBkaSBAYnMgZGFsYW0gQGkgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVueWVzdWFpa2FuIHJlZmNvdW50IHVudHVrIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOTcKK21zZ2lkICJQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgQGlzIHdpdGggQG0gQGJzXG4iCittc2dzdHIgIlRhaGFwIDFDOiBNZW1lcmlrc2EgZGlyZWt0b3JpIHVudHVrIEBpcyBkZW5nYW4gQG0gQGJzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwMworbXNnaWQgIlBhc3MgMUQ6IFJlY29uY2lsaW5nIEBtIEBic1xuIgorbXNnc3RyICJUYWhhcCAxRDogTWVtYmV0dWxrYW4gQG0gQGJzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpbGUgJVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKSBcbgorIy4gQC1leHBhbmRlZDogICBoYXMgJXIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjA4Cittc2dpZCAiIgorIkZpbGUgJVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKSBcbiIKKyIgIGhhcyAlciBAbSBAYihzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbiIKK21zZ3N0ciAiIgorIkJlcmthcyAlUSAoQGkgIyVpLCB3YWt0dSBiZXJ1YmFoICVJTSkgXG4iCisiICBtZW1pbGlraSAlciBAbSBAYihzKSwgZGliYWdpIGRlbmdhbiAlTiBiZXJrYXM6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0JVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTQKK21zZ2lkICJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIKK21zZ3N0ciAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxAZiBtZXRhZGF0YT5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKK21zZ2lkICIiCisiKFRoZXJlIGFyZSAlTiBAaXMgY29udGFpbmluZyBAbSBAYnMuKVxuIgorIlxuIgorbXNnc3RyICIiCisiKEFkYSAlTiBAaXMgYmVyaXNpIEBtIEBicy4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJAbSBAYnMgdGVsYWggZGlhc3NpZ24gYXRhdSBkaWtvcGkuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZW55YWxpbiBmaWxlOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICJUYWhhcCAzQTogTWVuZ29wdGltYXNpIGRpcmVrdG9yaVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJHYWdhbCBtZW5nb3B0aW1hc2kgZGlyZWt0b3JpICVxICglZCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIywgZnV6enkKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIk1lbmdvcHRpbWFzaSBkaXJla3Rvcmk6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIlRhaGFwIDI6IE1lbWVyaWtzYSBzdHJ1a3R1ciBAZFxuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIGlub2RlIG51bWJlciBmb3IgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBuIEBpIG51bWJlciBmb3IgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJAbiBAaSBqdW1sYWggdW50dWsgJy4nIGRhbGFtIEBkIEBpICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiQEUgbWVtaWxpa2kgQG4gQGkgIzogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorbXNnaWQgIkBFIGhhcyBARC91bnVzZWQgQGkgJURpLiAgIgorbXNnc3RyICJARSBtZW1pbGlraSBARC90aWRhayBkaXBha2FpIEBpICVEaS4gICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvICcuJyAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTAKK21zZ2lkICJARSBATCB0byAnLicgICIKK21zZ3N0ciAiQEUgQEwga2UgJy4nICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICJARSBtZW51bmp1ayBrZSBAaSAoJURpKSB0ZXJsZXRhayBkaSBkYWxhbSBAYiBidXJ1ay5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiQEUgQEwga2UgQGQgJVAgKCVEaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIkBFIEBMIGtlIEByLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzMAorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgIkBFIG1lbWlsaWtpIGthcmFrdGVyIGlsZWdhbCBkYWxhbSBuYW1hbnlhLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiSGlsYW5nICcuJyBkYWxhbSBAZCBAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4uJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiSGlsYW5nICcuLicgZGFsYW0gQGQgQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpcnN0IGVudHJ5ICclRG4nIChpbm9kZT0lRGkpIGluIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApIHNob3VsZCBiZSAnLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzQ1Cittc2dpZCAiRmlyc3QgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgKCVwKSBAcyAnLidcbiIKK21zZ3N0ciAiUGVydGFtYSBAZSAnJURuJyAoQGk9JURpKSBkYWxhbSBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIktlZHVhIEBlICclRG4nIChAaT0lRGkpIGRhbGFtIEBkIEBpICVpIEBzICcuLidcbiIKKworIy4gQC1leHBhbmRlZDogaV9mYWRkciBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSUYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTUKK21zZ2lkICJpX2ZhZGRyIEBGICVJRiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mYWRkciBARiAlSUYsIEBzIG5vbC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjAKK21zZ2lkICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbCBARiAlSWYsIEBzIG5vbC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9kaXJfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZCwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2NQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZGlyX2FjbCBARiAlSWQsIEBzIG5vbC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCittc2dpZCAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZyYWcgQEYgJU4sIEBzIG5vbC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mc2l6ZSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3NQorbXNnaWQgImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnNpemUgQEYgJU4sIEBzIG5vbC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIG1lbWlsaWtpIG1vZGUgQG4gKCVJbSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGNvcnJ1cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODUKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkBkIEBpICVpLCAlQiwgb2ZzZXQgJU46IEBkIHRlcmtvcnVwc2lcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiQGQgQGkgJWksICVCLCBvZnNldCAlTjogbmFtYSBiZXJrYXMgdGVybGFsdSBwYW5qYW5nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAiQGQgQGkgJWkgbWVtaWxpa2kgIyVCIHlhbmcgdGlkYWsgdGVyYWxva2FzaS4gICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiJy4nIEBkIEBlIGRhbGFtIEBkIEBpICVpIHRpZGFrIHRlcmFraGlyaSBkZW5nYW4gTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIicuLicgQGQgQGUgZGFsYW0gQGQgQGkgJWkgdGlkYWsgdGVyYWtoaXJpIGRlbmdhbiBOVUxMXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIKK21zZ3N0ciAiQGkgJWkgKCVRKSBhZGFsYWggc2VidWFoIGthcmFrdGVyIEBJIEB2LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGFkYWxhaCBzZWJ1YWggQEkgQGIgQHYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiQEUgYWRhbGFoIHNhbGluYW4gJy4nIEBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLi4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjUKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4uJyBAZS5cbiIKK21zZ3N0ciAiQEUgYWRhbGFoIGR1cGxpa2FzaSBkYXJpICcuLicgQGUuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzMCBlMmZzY2svcHJvYmxlbS5jOjE3NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGZpbmQgZGlyX2luZm8gZm9yICVpLlxuIgorbXNnc3RyICJJbnRlcm5hbCBlcnJvcjogdGlkYWsgZGFwYXQgbWVuY2FyaSBkaXJfaW5mbyB1bnR1ayAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1Cittc2dpZCAiQEUgaGFzIHJlY19sZW4gb2YgJURyLCBAcyAlTi5cbiIKK21zZ3N0ciAiQEUgbWVtaWxpa2kgcmVjX2xlbiBkYXJpICVEciwgQHMgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgInN0cnVrdHVyIEBBIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVuZ2l0ZXJhc2kgbWVsYWx1aSBAZCBAYnM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1MAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVtYmFjYSBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycm9yIG1lbnVsaXMgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJAQSBiYXJ1IEBkIEBiIHVudHVrIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVuZGVhbG9rYXNpa2FuIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgIkBkIEBlIHVudHVrICcuJyBkYWxhbSAlcCAoJWkpIGJlc2FyLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGFkYWxhaCBzZWJ1YWggQEkgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkBpICVpICglUSkgYWRhbGFoIHNlYnVhaCBASSBzb2NrZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJTZXR0aW5nIGZpbGV0eXBlIHVudHVrIEBFIGtlICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiIgorIkBFIG1lbWlsaWtpIHNlYnVhaCB0aXBlIGJlcmthcyB5YW5nIHRpZGFrIGJlbmFyIChzZWJlbHVtbnlhICVEdCwgQHMgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkBFIG1lbWlsaWtpIGZpbGV0eXBlIHNldC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJARSBtZW1pbGlraSBzZWJ1YWggbmFtYSBAei5cbiIKKworIy4gQC1leHBhbmRlZDogU3ltbGluayAlUSAoaW5vZGUgIyVpKSBpcyBpbnZhbGlkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDUKK21zZ2lkICJTeW1saW5rICVRIChAaSAjJWkpIGlzIEBuLlxuIgorbXNnc3RyICJTeW1saW5rICVRIChAaSAjJWkpIGFkYWxhaCBAbi5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAlaSAoJVEpIGlzIGludmFsaWQgKCVJZikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxMAorbXNnaWQgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorbXNnc3RyICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiQGYgYmVyaXNpIGJlcmthcyBiZXNhciwgdGV0YXBpIGt1cmFuZyBMQVJHRV9GSUxFIGZsYWcgZGFsYW0gQFMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIHRpZGFrIG1lbWlsaWtpIHJlZmVyZW5zaVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgbWVtaWxpa2kgZHVhIHJlZmVyZW5zaS5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIG1lbWlsaWtpIG1pbiBoYXNoIGJ1cnVrXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzNQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIkBwIEBoICVkOiAlQiBtZW1pbGlraSBtYXggaGFzIGJ1cnVrXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkBuIEBoICVkICglcSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIkBwIEBoICVkICglcSk6IGJ1cnVrIEBiIG5vbW9yICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IHRpdGlrIHJvb3QgYWRhbGFoIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBsaW1pdCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgbWVtaWxpa2kgQG4gYmF0YXMgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgY291bnQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIG1lbWlsaWtpIEBuIGp1bWxhaCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgbWVtaWxpa2kgc2VidWFoIHRhYmVsIGhhc2ggeWFuZyB0aWRhayB0ZXJ1cnV0XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgbWVtaWxpa2kgQG4ga2VkYWxhbWFuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAiRHVwbGlrYXNpIEBFIGRpdGVtdWthbi4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJARSBtZW1pbGlraSBzZWJ1YWggbmFtYSBmaWxlIHlhbmcgdGlkYWsgdW5pcS5cbiIKKyJNZW5ndWJhaCBuYW1hbnlhIGtlICVzIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdXBsaWthc2kgQGUgJyVEbicgZGl0ZW11a2FuLlxuIgorIlx0IE1lbmFuZGFpICVwICglaSkgdW50dWsgZGlidWF0IGtlbWJhbGkuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfYmxvY2tzX2hpIEBGICVOLCBAcyBub2wuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiVGlkYWsgdGVyZHVnYSBAYiBkYWxhbSBAaCAlZCAoJXEpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGluIGdyb3VwICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDMKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBpbiBAZyAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbiIKK21zZ3N0ciAiQEUgcmVmZXJlbnNpIEBpICVEaSBkYWxhbSBAZyAlZyBkaW1hbmEgX0lOT0RFX1VOSU5JVCB0ZWxhaCBkaXNldC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIiIKKyJARSByZWZlcmVuc2kgQGkgJURpIGRpdGVtdWthbiBkYWxhbSBAZyAlZydzIGRpIGRhZXJhaCBpbm9kZSB5YW5nIHRpZGFrICIKKyJkaWd1bmFrYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyBub2wuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IHRpdGlrIHJvb3QgYWRhbGFoIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAcCBAaCAlZDogdGl0aWsgcm9vdCBhZGFsYWggQG5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjgKKyMsIGZ1enp5Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGQgQGkgJWksICVCLCBvZnNldCAlTjogQGQgdGVya29ydXBzaVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVuY3J5cHRlZCBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIHRvbyBzaG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQ4Cittc2dpZCAiRW5jcnlwdGVkIEBFIGlzIHRvbyBzaG9ydC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjU1Cittc2dpZCAiUGFzcyAzOiBDaGVja2luZyBAZCBjb25uZWN0aXZpdHlcbiIKK21zZ3N0ciAiVGFoYXAgMzogTWVtZXJpa3NhIGtvbmVrdGl2aXRhcyBAZFxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2MAorbXNnaWQgIkByIG5vdCBhbGxvY2F0ZWQuICAiCittc2dzdHIgIkByIHRpZGFrIGRpYWxva2FzaWthbi4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiVGlkYWsgYWRhIHJ1YW5nIGRhbGFtIEBsIEBkLiAgIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICJUaWRhayB0ZXJodWJ1bmcgQGQgQGkgJWkgKCVwKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3NQorbXNnaWQgIi9AbCBub3QgZm91bmQuICAiCittc2dzdHIgIi9AbCB0aWRhayBkaXRlbXVrYW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIicuLicgZGFsYW0gJVEgKCVpKSBhZGFsYWggJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiQnVydWsgYXRhdSB0aWRhayBhZGEgL0BsLiBUaWRhayBkYXBhdCBkaWh1YnVuZ2thbiBrZW1iYWxpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdleHBhbiAvQGw6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZW5naHVidW5na2FuICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiRXJyb3Iga2V0aWthIG1lbmNvYmEgbWVuY2FyaSAvQGw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X0BiOiAlbSBrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1idWF0IC9AbCBAZFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2lub2RlOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AaTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19AaTogJW0ga2V0aWthIG1lbmNvYmEgdW50dWsgbWVtYnVhdCAvQGwgQGRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfQGI6ICVtIGtldGlrYSBtZW1idWF0IEBkIEBiIGJhcnVcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSBrZXRpa2EgbWVudWxpcyBAZCBAYiB1bnR1ayAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiRXJyb3Iga2V0aWthIG1lbnllc3VhaWthbiBqdW1sYWggQGkgZGkgQGkgJWlcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRpZGFrIGRhcGF0IG1lbWJldHVsa2FuIHBhcmVudCBkYXJpIEBpICVpOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRpZGFrIGRhcGF0IG1lbWJldHVsa2FuIHBhcmVudCBkYXJpIEBpICVpOiBUaWRhayBkYXBhdCBtZW5jYXJpIHBhcmVudCBAZCBAZVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgcm9vdCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJFcnJvciBtZW1idWF0IHJvb3QgQGQgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVtYnVhdCAvQGwgQGQgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgIkByIGJ1a2FuIHNlYnVhaCBAZDogbWVtYmF0YWxrYW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbGFuanV0a2FuIHRhbnBhIHNlYnVhaCBAci5cbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgbm90IGEgZGlyZWN0b3J5IChpbm89JWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICIvQGwgaXMgbm90IGEgQGQgKGlubz0laSlcbiIKK21zZ3N0ciAiL0BsIGJ1a2FuIHNlYnVhaCBAZCAoaW5vPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorbXNnaWQgIi9AbCBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIlRhaGFwIDNBOiBNZW5nb3B0aW1hc2kgZGlyZWt0b3JpXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAiR2FnYWwgbWVtYnVhdCBwZW5nLWl0ZXJhc2kgZGlyc190b19oYXNoOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIkdhZ2FsIG1lbmdvcHRpbWFzaSBkaXJla3RvcmkgJXEgKCVkKTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJNZW5nb3B0aW1hc2kgZGlyZWt0b3JpOiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICJUYWhhcCA0OiBNZW1lcmlrc2EganVtbGFoIHJlZmVyZW5zaVxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIkB1IEB6IEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICJAdSBAaSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSByZWYgY291bnQgYWRhbGFoICVJbCwgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiUEVSSU5HQVRBTjogQlVHIERBTEFNIFBFTVJPR1JBTUFOIEUyRlNDSyFcbiIKKyJcdEFUQVUgU0VPUkFORyBLRVJBUyBLRVBBTEEgKEFOREEpIE1FTUVSSUtTQSBTRUJVQUggU0lTVEVNIEJFUktBUyAoSElEVVApICIKKyJZQU5HIFRFUlBBU0FORy5cbiIKKyJAaV9saW5rX2luZm9bJWldIGFkYWxhaCAlTiwgQGkuaV9saW5rc19jb3VudCBhZGFsYWggJUlsLiBNZXJla2EgQHMgYWRhbGFoICIKKyJzYW1hIVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb25cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODU4Cittc2dpZCAiUGFzcyA1OiBDaGVja2luZyBAZyBzdW1tYXJ5IGluZm9ybWF0aW9uXG4iCittc2dzdHIgIlRhaGFwIDU6IE1lbWVyaWtzYSByaW5na2FzYW4gaW5mb3JtYXNpIEBnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiTWVuYW1iYWhrYW4gcGFkIGRpYWtoaXIgZGFyaSBAaSBAQiB5YW5nIHRpZGFrIHRlcnNldC4gICIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4Cittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGIgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJNZW5hbWJhaGthbiBwYWQgZGkgYWtoaXIgZGFyaSBAYiBAQiBhZGFsYWggdGVyIHNldC4gICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIkBiIEBCIHBlcmJlZGFhbjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiQGkgQEIgcGVyYmVkYWFuOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJLb3NvbmcgQGlzIHRlcmhpdHVuZyBzYWxhaCB1bnR1ayBAZyAjJWcgKCVpLCB0ZXJoaXR1bmc9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiRGlyZWt0b3JpIHRlcmhpdHVuZyBzYWxhaCB1bnR1ayBAZyAjJWcgKCVpLCB0ZXJoaXR1bmc9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJLb3NvbmcgQGlzIHRlcmhpdHVuZyBzYWxhaCAoJWksIHRlcmhpdHVuZz0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJLb3NvbmcgQGJzIHRlcmhpdHVuZyBzYWxhaCB1bnR1ayBAZyAjJWcgKCViLCB0ZXJoaXR1bmc9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJLb3NvbmcgQGJzIHRlcmhpdHVuZyBzYWxhaCAoJWIsIHRlcmhpdHVuZz0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIHRpZGFrIGRhcGF0IG1lbmNvY29rYW4gIgorInBlcmhpdHVuZ2FuIEBCIHRpdGlrIHVqdW5nICglaSwgJWopXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0NAorbXNnaWQgIkludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKCVOKVxuIgorbXNnc3RyICJJbnRlcm5hbCBlcnJvcjogZnVkZ2luZyBiZXJha2hpciBkYXJpIGJpdG1hcCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiRXJyb3IgbWVueWFsaW4gZGFsYW0gbWVuZ2dhbnRpIEBpIEBCOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iCittc2dzdHIgIkVycm9yIG1lbnlhbGluIGRhbGFtIG1lbmdnYW50aSBAYiBAQjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2socykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk3OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYihzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbiIKK21zZ3N0ciAiQGcgJWcgQGIocykgc2VkYW5nIGRpZ3VuYWthbiB0ZXRhcGkgQGcgdGVydGFuZGEgQkxPQ0tfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIkBnICVnIEBpKHMpIHNlZGFuZyBkaWd1bmFrYW4gdGV0YXBpIEBnIHRlcnRhbmRhIElOT0RFX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZSBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaSBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiTWVtYnVhdCBrZW1iYWxpIEBqIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDYKK21zZ2lkICJVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzZXR0aW5nIGJsb2NrIGdyb3VwIGNoZWNrc3VtIGluZm86ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICJrZXRpa2Egc2VkYW5nIG1lbnNldCBpbmZvcm1hc2kgY2hlY2tzdW0gZGkgZ3J1cCBibG9rIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRXJyb3Iga2V0aWthIG1lbmdoYXB1cyBleHRlbnNpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZmx1c2hpbmcgd3JpdGVzIHRvIHN0b3JhZ2UgZGV2aWNlOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyNgorIywgZnV6enkKK21zZ2lkICJFcnJvciB3cml0aW5nIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU46ICVtXG4iCittc2dzdHIgIkVycm9yIGtldGlrYSBtZW5naGFwdXMgZXh0ZW5zaTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiS29kZSBlcnJvciB0aWRhayB0ZXJ0YW5nYW5pICgweCV4KSFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMjcyIGUyZnNjay9wcm9ibGVtLmM6MjI3NgorbXNnaWQgIklHTk9SRUQiCittc2dzdHIgIkRJQUJBSUtBTiIKKworIzogZTJmc2NrL3F1b3RhLmM6MzMgZTJmc2NrL3F1b3RhLmM6NDYKK21zZ2lkICJpbiBtb3ZlX3F1b3RhX2lub2RlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICJNZW1vcmkgeWFuZyBkaWd1bmFrYW46ICVkLCB3YWt0dSB5YW5nIGRpZ3VuYWthbjogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJ1a3VyYW4gZGFyaSBpbm9kZT0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJrZXRpa2EgbWVtdWxhaSBzY2FuIGRhcmkgaW5vZGUiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImtldGlrYSBtZWxha3VrYW4gcGVtZXJpa3NhYW4gaW5vZGUiCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAia2V0aWthIG1lbWFuZ2dpbCBleHQyZnNfYmxvY2tfaXRlcmF0ZSB1bnR1ayBpbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAia2V0aWthIG1lbWFuZ2dpbCBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50IHVudHVrIGlub2RlICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzQKK21zZ2lkICJUcnVuY2F0aW5nIgorbXNnc3RyICJUcnVuY2F0aW5nIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiTWVuZ2hhcHVzIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJQZW5nZ3VuYWFuOiAlcyBbLXBhbnlyY2RmdnRERlZdIFstYiBzdXBlcmJsb2tdIFstQiB1a3VyYW4gYmxva11cbiIKKyJcdFx0Wy1JIGlub2RlX2J1ZmZlcl9ibG9ja10gWy1QIHByb2Nlc3NfaW5vZGVfc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVuZC1vcHRpb25zXSBwZXJhbmdrYXRcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlBlcnRvbG9uZ2FuIGRhcnVyYXQ6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIE90b21hdGlzIHBlcmJhaWthbiAodGFucGEgcGVydGFueWFhbilcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgVGlkYWsgbWVtYnVhdCBwZXJ1YmFoYW4gZGkgc2lzdGVtIGJlcmthc1xuIgorIiAteSAgICAgICAgICAgICAgICAgICBNZW5nYXN1bXNpIFwieWVzXCIgdW50dWsgc2VtdWEgcGVydGFueWFhblxuIgorIiAtYyAgICAgICAgICAgICAgICAgICBNZW1lcmlrc2EgYmxvayBidXJ1ayBkYW4gbWVuYW1iYWhrYW4gaGFzaWxueWEga2UgIgorImRhZnRhciBibG9rIGJ1cnVrXG4iCisiIC1mICAgICAgICAgICAgICAgICAgIE1lbWFrc2EgbWVtZXJpa3NhIHdhbGF1cHVuIHNpc3RlbSBiZXJrYXMgZGl0YW5kYWkgIgorImJlcnNpaFxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4CisjLCBmdXp6eQorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBUYW1waWxrYW4gcGVzYW4gcGVzYW5cbiIKKyIgLWIgc3VwZXIgYmxvayAgICAgICAgR3VuYWthbiBzdXBlcmJsb2sgbGFpblxuIgorIiAtQiB1a3VyYW4gYmxvayAgICAgICBQYWtzYSBtZW5nZ3VuYWthbiB1a3VyYW4gYmxvayBrZXRpa2EgbWVuY2FyaSBzdXBlciAiCisiYmxva1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICBTZXQgbG9rYXNpIGRhcmkgam91cm5hbCBsdWFyXG4iCisiIC1sIGJhZF9ibG9rX2ZpbGUgICAgIFRhbWJhaGthbiBrZSBkYWZ0YXIgYmxvayBidXJ1a1xuIgorIiAtTCBiYWRfYmxva19maWxlICAgICBTZXQgZGFmdGFyIGJsb2sgYnVydWtcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzOiAldS8ldSBiZXJrYXMgKCUwZC4lZCUlIHRpZGFrIGtvbnRpbnUpLCAldS8ldSBibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiV1IGlub2RlcyBkaXNjYW4uXG4iCittc2dzdHJbMV0gIiV1IGlub2RlcyBkaXNjYW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgIyBkYXJpIGlub2RlcyBkZW5nYW4gaW5kL2RpbmQvdGluZCBibG9rOiAldS8ldS8ldVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorIywgZnV6enkKK21zZ2lkICIgICAgICAgICAgICAgRXh0ZW50IGRlcHRoIGhpc3RvZ3JhbTogIgorbXNnc3RyICIgICAgICAgICBLZWRhbGFtYW4gRXh0ZW5zaSBoaXN0b2dyYW06ICIKKworIzogZTJmc2NrL3VuaXguYzoxOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEybGx1IGJsb2NrIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnaWRfcGx1cmFsICIlMTJsbHUgYmxvY2tzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIldSBpbm9kZXMsICV1IGJsb2tcbiIKK21zZ3N0clsxXSAiJXUgaW5vZGVzLCAldSBibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICJiZXJrYXMgYmlhc2EiCittc2dzdHJbMV0gImJlcmthcyBiaWFzYSIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVzXG4iCittc2dzdHJbMF0gImJlcmthcyBiaWFzYSIKK21zZ3N0clsxXSAiYmVya2FzIGJpYXNhIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJTEydSBkaXJlY3RvcnlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBkaXJlY3Rvcmllc1xuIgorbXNnc3RyWzBdICJkaXJla3RvcmkiCittc2dzdHJbMV0gImRpcmVrdG9yaSIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICJrYXJha3RlciBkZXZpY2UiCittc2dzdHJbMV0gImthcmFrdGVyIGRldmljZSIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiYmxvY2sgZGV2aWNlIgorbXNnc3RyWzFdICJibG9jayBkZXZpY2UiCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjIxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc3ltYm9saWMgbGluayIKK21zZ2lkX3BsdXJhbCAiJTEydSBzeW1ib2xpYyBsaW5rcyIKK21zZ3N0clswXSAic3ltYm9saWMgbGluayIKK21zZ3N0clsxXSAic3ltYm9saWMgbGluayIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rKVxuIgorbXNnaWRfcGx1cmFsICIgKCV1IGZhc3Qgc3ltYm9saWMgbGlua3MpXG4iCittc2dzdHJbMF0gInN5bWJvbGljIGxpbmsiCittc2dzdHJbMV0gInN5bWJvbGljIGxpbmsiCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAic29ja2V0IgorbXNnc3RyWzFdICJzb2NrZXQiCisKKyM6IGUyZnNjay91bml4LmM6MjIyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICJiZXJrYXMgYmlhc2EiCittc2dzdHJbMV0gImJlcmthcyBiaWFzYSIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgImtldGlrYSBzZWRhbmcgbWVuZW50dWthbiBhcGFrYWggJXMgc2VkYW5nIGRpbW91bnQuIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIlBlcmluZ2F0YW4hICVzIHNlZGFuZyBkaW1vdW50LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiUGVyaW5nYXRhbiEgJXMgc2VkYW5nIGRpbW91bnQuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIlcyBzZWRhbmcgZGltb3VudC4gICAiCisKKyM6IGUyZnNjay91bml4LmM6MjY3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgIiVzIHNlZGFuZyBkaW1vdW50LiAgICIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRpZGFrIGRhcGF0IG1lbGFuanV0a2FuLCBtZW1iYXRhbGthbi5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIlxuIgorIldBUk5JTkchISEgIFRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuICAgSWYgeW91IGNvbnRpbnVlIHlvdSAqKipXSUxMKioqXG4iCisiY2F1c2UgKioqU0VWRVJFKioqIGZpbGVzeXN0ZW0gZGFtYWdlLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiXGFcYVxhXGFQRVJJTkdBVEFOISEhIFNpc3RlbSBiZXJrYXMgdGVsYWggdGVycGFzYW5nLiBKaWthIGFuZGEgbGFuanV0a2FuICIKKyJhbmRhICoqKkFLQU4qKipcbiIKKyJiaXNhIG1lbnllYmFia2FuIGtlcnVzYWthbiAqKipQQVJBSCoqKiBkaSBzaXN0ZW0gYmVya2FzLlxhXGFcYVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3NgorbXNnaWQgIkRvIHlvdSByZWFsbHkgd2FudCB0byBjb250aW51ZSIKK21zZ3N0ciAiQXBha2FoIGFuZGEgeWFraW4gaW5naW4gbWVsYW5qdXRrYW4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc4Cittc2dpZCAiY2hlY2sgYWJvcnRlZC5cbiIKK21zZ3N0ciAicGVtZXJpa3NhYW4gZGliYXRhbGthbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIGJlcmlzaSBzZWJ1YWggZmlsZSBzeXN0ZW0gZGVuZ2FuIGVycm9ycyIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIHRpZGFrIGJlcnNpaCBzZXRlbGFoIGRpdW5tb3VudC4iCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiBzdXBlcmJsb2sgdXRhbWEgbWVtaWxpa2kgZmVhdHVyZSBiZXJiZWRhIGRhcmkgYmFja3VwIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiB0ZWxhaCBkaW1vdW50ICV1IGthbGkgdGFucGEgZGlsYWt1a2FuIHBlbWVyaWtzYWFuIgorCisjOiBlMmZzY2svdW5peC5jOjM4NgorbXNnaWQgIiBoYXMgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdGltZSBpbiB0aGUgZnV0dXJlIgorbXNnc3RyICIiCisiIG1lbWlsaWtpIHNpc3RlbSBiZXJrYXMgeWFuZyB3YWt0dSB0ZXJha2hpciBkaXBlcmlrc2EgYmVyYWRhIGRpIG1hc2EgeWFuZyAiCisiYWthbiBkYXRhbmciCisKKyM6IGUyZnNjay91bml4LmM6MzkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiBoYXMgZ29uZSAldSBkYXlzIHdpdGhvdXQgYmVpbmcgY2hlY2tlZCIKK21zZ3N0ciAiIHRlbGFoIGxld2F0ICV1IGhhcmkgdGFucGEgZGlsYWt1a2FuIHBlbWVyaWtzYWFuIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIHBlbWVyaWtzYWFuIGRpcGFrc2FrYW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogYmVyc2loLCAldS8ldSBiZXJrYXMsICV1LyV1IGJsb2siCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAocGVtZXJpa3NhYW4gZGliYXRhbGthbjsgcG93ZXIgbWVuZ2d1bmFrYW4gYmF0ZXJlKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICIgKHBlbWVyaWtzYWFuIGRpbGFrdWthbiBzZXRlbGFoIG1vdW50IHNlbGFuanV0bnlhKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiIChwZW1lcmlrc2FhbiBkaWxha3VrYW4gZGFsYW0gJWxkIG1vdW50cykiCisKKyM6IGUyZnNjay91bml4LmM6NjA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVSUk9SOiBDb3VsZG4ndCBvcGVuIC9kZXYvbnVsbCAoJXMpXG4iCittc2dzdHIgIkVSUk9SOiBUaWRhayBkYXBhdCBtZW1idWthIC9kZXYvbnVsbCAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJWZXJzaSBFQSB0aWRhayB2YWxpZC5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKKyMsIGZ1enp5Cittc2dpZCAiSW52YWxpZCByZWFkYWhlYWQgYnVmZmVyIHNpemUuXG4iCittc2dzdHIgIlBhcmFtZXRlciByZXNpemUgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJQaWxpaGFuIGV4dGVuZGVkIHRpZGFrIGRpa2V0YWh1aTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YXggZXJyb3IgZGFsYW0gYmVya2FzIGtvbmZpZ3VyYXNpIGUyZnNjayAoJXMsIGJhcmlzICMlZClcbiIKKyJcdCVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJFcnJvciBtZW12YWxpZGFzaSBiZXJrYXMgZGVza3JpcHNpICVkOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIkluZm9ybWFzaSBGaWxlIGJlcmthcyBjb21wbGV0aW9uIHRpZGFrIHZhbGlkIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiIgorIkhhbnlhIHNhbGFoIHNhdHUgZGFyaSBwaWxpaGFuIC1wLy1hLCAtbiBhdGF1IC15IHlhbmcgYm9sZWggZGlzcGVzaWZpa2FzaWthbi4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJQaWxpaGFuIC10IHRpZGFrIGRpbGF5YW5pIGRhbGFtIHZlcnNpIGUyZnNjayBpbmkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZXJlc29sdmUgJyVzJyIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIlBpbGloYW4gLW4gZGFuIC1EIHRpZGFrIGtvbXBhdGliZWwuIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiUGlsaWhhbiAtbiBkYW4gLWMgdGlkYWsga29tcGF0aWJlbC4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJQaWxpaGFuIC1uIGRhbiAtbC8tTCB0aWRhayBrb21wYXRpYmVsLiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIlBpbGloYW4gLW4gZGFuIC1EIHRpZGFrIGtvbXBhdGliZWwuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorIywgZnV6enkKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiUGlsaWhhbiAtbiBkYW4gLUQgdGlkYWsga29tcGF0aWJlbC4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiIgorIlBpbGloYW4gLWMgZGFuIC1sLy1MIHRpZGFrIGJvbGVoIGRpZ3VuYWthbiBzZWNhcmEgYmVyc2FtYWFuIGRhbGFtIHNhdHUgIgorIndha3R1LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBidWthbiBzZWJ1YWggaW50ZWdlclxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBcmd1bWVudCBidWthbiBudW1lcmlrIHRpZGFrIHZhbGlkIHVudHVrIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgImtldGlrYSBtZW5zZXR1cCBzdXBlcmJsb2siCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIKK21zZ3N0ciAia2V0aWthIHNlZGFuZyBtZW1iYWNhIGlub2RlIGJsb2sgYnVydWsiCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1lbWFrc2EgbWVudWxpcyBzaXN0ZW0gYmVya2FzIHlhbmcgc3VkYWggYWRhOyBpbmkgdGlkYWsgZGFwYXQgZGl1bmRvIGRlbmdhbiAiCisicGVyaW50YWg6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmdoYXB1cyAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdGtldGlrYSBtZW5jb2JhIG1lbWJ1YXQgZmlsZSBqdXJuYWwiCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICJFcnJvcjogZXh0MmZzIHZlcnNpIGxpYnJhcmkga2V0aW5nZ2FsYW4gamFtYW4hXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmdpbmlzaWFsaXNhc2kgYXBsaWthc2kiCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICJcdE1lbmdndW5ha2FuICVzLCAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE0MDUKK21zZ2lkICJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIgorbXNnc3RyICJidXR1aCB0ZXJtaW5hbCB1bnR1ayByZXBhcmFzaSBpbnRlcmFjdGl2ZSIKKworIzogZTJmc2NrL3VuaXguYzoxNDY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIgorbXNnc3RyICIlczogJXMgbWVuY29iYSBtZW1iYWNrdXAgYmxvay4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICJTdXBlcmJsb2sgdGlkYWsgdmFsaWQsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiRGVza3JpcHNpIGdydXAgdGVybGloYXQgYnVydWsuLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlczogJXMgbWVuY29iYSBtZW1iYWNrdXAgYmxvay4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlczoga2VtYmFsaSBrZSBzdXBlcmJsb2NrIGFzbGlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlJldmlzaSBzaXN0ZW0gYmVya2FzIGtlbGloYXRhbm55YSB0ZXJsYWx1IHRpbmdnaSB1bnR1ayB2ZXJzaSBlMmZzY2sgaW5pLlxuIgorIihBdGF1IHNpc3RlbSBiZXJrYXMgc3VwZXJibG9rIHRlcmtvcnVwc2kpXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgIk11bmdraW5rYW4gaW5pIHNlYnVhaCBwYXJ0aXNpIGRlbmdhbiBwYW5qYW5nIG5vbD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIKK21zZ3N0ciAiQW5kYSBoYXJ1cyBtZW1pbGlraSAlcyBha3NlcyBrZSBzaXN0ZW0gYmVya2FzIGF0YXUgbWVuamFkaSByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiTXVuZ2tpbiB0aWRhayBhZGEgYXRhdSBzZWJ1YWggcGVyYW5na2F0IHN3YXA/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiU2lzdGVtIGJlcmthcyBkaW1vdW50IGF0YXUgZGlidWthIHNlY2FyYSBleGNsdXNpdmVseSBvbGVoIGFwbGlrYXNpIGxhaW4/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworIywgZnV6enkKK21zZ2lkICJQb3NzaWJseSBub24tZXhpc3RlbnQgZGV2aWNlP1xuIgorbXNnc3RyICJNdW5na2luIHRpZGFrIGFkYSBhdGF1IHNlYnVhaCBwZXJhbmdrYXQgc3dhcD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJEaXNrIHRlcnByb3Rla3NpIHVudHVrIGRpdHVsaXM7IGd1bmFrYW4gcGlsaWhhbiAtbiB1bnR1ayBtZWxha3VrYW4gc2VjYXJhICIKKyJiYWNhLXNhamFcbiIKKyJkYWxhbSBtZW1lcmlrc2EgcGVyYW5na2F0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgIkRhcGF0a2FuIHZlcnNpIHlhbmcgbGViaWggYmFydSBkYXJpIGUyZnNjayEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgImtldGlrYSBtZW1lcmlrc2EgZXh0MyBqdXJuYWwgdW50dWsgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZWxhbmp1dGthbiB0YW5wYSBzZWJ1YWggQHIuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY2MgorbXNnaWQgIiIKKyJXYXJuaW5nOiBza2lwcGluZyBqb3VybmFsIHJlY292ZXJ5IGJlY2F1c2UgZG9pbmcgYSByZWFkLW9ubHkgZmlsZXN5c3RlbSAiCisiY2hlY2suXG4iCittc2dzdHIgIiIKKyJQZXJpbmdhdGFuOiBtZWxld2F0a2FuIHJlY292ZXJ5IGp1cm5hbCBrYXJlbmEgc2VkYW5nIG1lbGFrdWthbiBwZW1lcmlrc2FhbiAiCisiZGkgc2lzdGVtIGJlcmthcyB5YW5nIGJhY2Etc2FqYSAocmVhZC1vbmx5KS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJ0aWRhayBkYXBhdCBtZW5zZXQgc3VwZXJibG9rIGZsYWcgZGkgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIkp1cm5hbCBzdXBlcmJsb2sgdGlkYWsgZGl0ZW11a2FuIVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkp1cm5hbCBkaWhhcHVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJrZXRpa2EgbWVyZWNvdmVyeSBleHQzIGp1cm5hbCBkYXJpICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyBtZW1pbGlraSBmZWF0dXJlIHlhbmcgdGlkYWsgZGlzdXBwb3J0OiIKKworIzogZTJmc2NrL3VuaXguYzoxNzY5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgImtldGlrYSBzZWRhbmcgbWVtYmFjYSBpbm9kZSBibG9rIGJ1cnVrIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIiIKKyJJbmkgYnVrYW4gcGVydGFuZGEgYmFpaywgdGFwaSBraXRhIGFrYW4gdGV0YXAgbWVuY29iYSB1bnR1ayBtZW5lcnVza2FuLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICglZCBibG9ja3MpOiAiCittc2dzdHIgIk1lbWJ1YXQganVybmFsICglZCBibG9rKTogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiIFNlbGVzYWkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKioganVybmFsIHRlbGFoIGRpYnVhdCBrZW1iYWxpIC0gc2lzdGVtIGJlcmthcyBzZWthcmFuZyBleHQzIGxhZ2kgKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzNgorbXNnaWQgImFib3J0ZWQiCittc2dzdHIgImRpYmF0YWxrYW4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlczogZTJmc2NrIGRpYmF0YWxrYW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICJNZW5ndWxhbmcga2VtYmFsaSBlMmZzY2sgZGFyaSBhd2FsLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2OQorbXNnaWQgIndoaWxlIHJlc2V0dGluZyBjb250ZXh0IgorbXNnc3RyICJrZXRpa2EgbWVyZXNldCBjb250ZXh0IgorCisjOiBlMmZzY2svdW5peC5jOjE5MTMgZTJmc2NrL3V0aWwuYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqIEZJTEUgU1lTVEVNIFRFTEFIIFRFUk1PRElGSUtBU0kgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIgorbXNnc3RyICIlczogKioqKiogUkVCT09UIExJTlVYICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkyNSBlMmZzY2svdXRpbC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogUEVSSU5HQVRBTjogU2lzdGVtIGJlcmthcyBtYXNpaCBtZW1pbGlraSBlcnJvcnMgKioqKioqKioqXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk0IG1pc2MvdXRpbC5jOjkzCittc2dpZCAieVkiCittc2dzdHIgInlZIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICJuTiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTYKK21zZ2lkICJhQSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NworbXNnaWQgIiAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjx5PiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxuPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIih5L24pIgorCisjOiBlMmZzY2svdXRpbC5jOjI0MAorbXNnaWQgImNhbmNlbGxlZCFcbiIKK21zZ3N0ciAiZGliYXRhbGthbiFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAieWFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJ0aWRha1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gdGlkYWtcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyB5YVxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgInllcyIKK21zZ3N0ciAieWEiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgInRpZGFrIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsZWdhbCBiaXRtYXAgYmxvayB1bnR1ayAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICJtZW1iYWNhIGlub2RlIGRhbiBibG9rIGJpdG1hcCIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAia2V0aWthIHNlZGFuZyBtZW5jb2JhIHVudHVrIG1lbWJhY2EgYml0bWFwIHVudHVrICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgIm1lbnVsaXMgYmxvayBkYW4gaW5vZGUgYml0bWFwcyIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgdW50dWsgbWVudWxpcyBibG9rIGRhbiBpbm9kZSBiaXRtYXAgdW50dWsgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyIlczogVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOyBSVU4gZnNjayBNQU5VQUxMWS5cbiIKKyJcdChpLmUuLCB3aXRob3V0IC1hIG9yIC1wIG9wdGlvbnMpXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIlczogVEVSSkFESSBJTktPTlNJVEVOU0kgWUFORyBUSURBSyBESUhBUkFQS0FOOyBKQUxBTktBTiBmc2NrIFNFQ0FSQSAiCisiTUFOVUFMLlxuIgorIlx0KGkuZSwgdGFucGEgcGlsaWhhbiAtYSBhdGF1IC1wKVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIk1lbW9yaSB5YW5nIGRpZ3VuYWthbjogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHUsICIKK21zZ3N0ciAiTWVtb3JpIHlhbmcgZGlndW5ha2FuOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAid2FrdHU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAid2FrdHUgeWFuZyBkaWphbGFuaTogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgImtldGlrYSAgbWVtYmFjYSBpbm9kZSAlbHUgZGFsYW0gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBpbm9kZSAlbHUgZGFsYW0gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NzY1Cittc2dpZCAiIgorIlVORVhQRUNURUQgSU5DT05TSVNURU5DWTogdGhlIGZpbGVzeXN0ZW0gaXMgYmVpbmcgbW9kaWZpZWQgd2hpbGUgZnNjayBpcyAiCisicnVubmluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCisjLCBmdXp6eQorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgInNlbGVzYWkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiUGVuZ2d1bmFhbjogJXMgWy1iIHVrdXJhbl9ibG9rXSBbLWkgYmVya2FzX21hc3VrYW5dIFstbyBiZXJrYXNfa2VsdWFyYW5dIFstIgorInN2d25mXVxuIgorIiAgICAgICBbLWMgYmxva19kaV9zZWthbGldIFstcCBqdW1sYWhfdGFoYXBdIFstZSBtYWtzaW1hbF9ibG9rX2J1cnVrXSBbLWQgIgorImZha3Rvcl9kZWxheV9hbnRhcmFfYmFjYV1cbiIKKyIgICAgICAgWy1lIHBhdHRlcm5fdGVzXSBbLXQgcGF0dGVybl90ZXN0IFsuLi5dXV1cbiIKKyIgICAgICAgcGVyYW5na2F0IFtibG9rX3RlcmFraGlyIFtibG9rX3BlcnRhbWFdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IFBpbGloYW4gLW4gZGFuIC13IGFkYWxhaCBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiUlIHNlbGVzYWksICVzIGJlcmphbGFuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICJNZW1lcmlrc2EgZGVuZ2FuIHBhdHRlcm4gcmFuZG9tOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIk1lbWVyaWtzYSBkZW5nYW4gcGF0dGVybiAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAia2V0aWthIG1lbmNhcmkoc2VlaykiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAiTmlsYWkgYW5laCAoJWxkKSBkYWxhbSBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAia2V0aWthIGV4dDJmc19zeW5jX2RldmljZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0OTYgbWlzYy9iYWRibG9ja3MuYzo3NTgKK21zZ2lkICJ3aGlsZSBiZWdpbm5pbmcgYmFkIGJsb2NrIGxpc3QgaXRlcmF0aW9uIgorbXNnc3RyICJrZXRpa2EgZGkgYXdhbCBpdGVyYXNpIGRhZnRhcmEgYmxvayBidXJ1ayIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgImtldGlrYSBtZW5nYWxva2FzaWthbiBidWZmZXIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIk1lbWVyaWtzYSBibG9rICVsdSBrZSAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJNZW1lcmlrc2EgYmxvayBidXJ1ayBkYWxhbSBtb2RlIGJhY2Etc2FqYSAocmVhZC1vbmx5KVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiTWVtZXJpa3NhIGJsb2sgYnVydWsgKHBlbWVyaWtzYWFuIGJhY2Etc2FqYSk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICJUZXJsYWx1IGJhbnlhayBibG9rIGJ1cnVrLCBtZW1iYXRhbGthbiBwZW1lcmlrc2FhblxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJNZW1lcmlrc2EgdW50dWsgYmxvayBidXJ1ayBkYWxhbSBtb2RlIGJhY2EtdHVsaXNcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkRhcmkgYmxvayAlbHUga2UgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIk1lbWJhY2EgZGFuIG1lbWJhbmRpbmdrYW46ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODEKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIk1lbWVyaWtzYSB1bnR1ayBibG9rIGJ1cnVrIGRhbGFsIG1vZGUgdGlkYWstbWVydXNhayBiYWNhLXR1bGlzXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIk1lbWVyaWtzYSB1bnR1ayBibG9rIGJ1cnVrIChwZW1lcmlrc2FhbiB0aWRhay1tZXJ1c2FrIGJhY2EtdHVsaXMpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKyJcbiIKKyJJbnRlcnVwc2kgdGVydGFuZ2thcCwgbWVtYmVyc2loa2FuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODc3CisjLCBjLWZvcm1hdAorbXNnaWQgImR1cmluZyB0ZXN0IGRhdGEgd3JpdGUsIGJsb2NrICVsdSIKK21zZ3N0ciAia2V0aWthIG1lbWVyaWthcyBkYXRhIGRpdHVsaXMsIGJsb2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBzZWRhbmcgZGltb3VudDsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDAKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiYmFkYmxva3MgdGV0YXAgZGlwYWtzYWthbi4gTXVkYWgtbXVkYWhhbiAvZXRjL210YWIgdGlkYWsgYmVuYXJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICJpbmkgdGlkYWsgYW1hbiB1bnR1ayBtZW5qYWxhbmthbiBiYWRibG9ja3MhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICIlcyBrZWxpaGF0YW5ueWEgc2VkYW5nIGRpZ3VuYWthbiBvbGVoIHN5c3RlbTsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiYmFkYmxvY2tzIGRpcGFrc2FrYW4gc2FqYS5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAidGlkYWsgdmFsaWQgJXMgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBiaWcgbWF4IGJhZCBibG9ja3MgY291bnQgJXUgLSBtYXhpbXVtIGlzICV1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE1NAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRlc3RfcGF0dGVybiAtICVzIgorbXNnc3RyICJ0aWRhayBkYXBhdCBtZW5nYWxva2FzaWthbiBtZW1vcmkgdW50dWsgdGVzdF9wYXR0ZXJuIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICIiCisiTWFrc2ltdW0gZGFyaSBzYXR1IHRlc3RfcGF0dGVybiBib2xlaCBkaXNwZXNpZmlrYXNpIGRhbGFtIG1vZGUgYmFjYS1zYWphIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJSYW5kb20gdGVzdF9wYXR0ZXJuIHRpZGFrIGRpcGVyYm9sZWhrYW4gZGFsYW0gbW9kZSBiYWNhLXNhamEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIwNAorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBtYW51YWxseVxuIgorbXNnc3RyICIiCisiVGlkYWsgZGFwYXQgbWVuZW50dWthbiB1a3VyYW4gcGVyYW5na2F0OyBhbmRhIGhhcnVzIG1lbnNwZXNpZmlrYXNpa2FuXG4iCisidWt1cmFuIHBlcmFuZ2thdCBzZWNhcmEgbWFudWFsXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmVudHVrYWtuIHVrdXJhbiBwZXJhbmdrYXQiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxNQorbXNnaWQgImxhc3QgYmxvY2siCittc2dzdHIgImJsb2sgdGVyYWtoaXIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJibG9rIHBlcnRhbWEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgImF3YWwgYmxvayB0aWRhayB2YWxpZCAoJWx1KTogaGFydXMgbGViaWgga2VjaWwgZGFyaSAlbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiYXdhbCBibG9rIHRpZGFrIHZhbGlkICglbHUpOiBoYXJ1cyBsZWJpaCBrZWNpbCBkYXJpICVsdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAia2V0aWthIG1lbWJ1YXQgZGFmdGFyIGJsb2sgYnVydWsgZGFsYW0gbWVtb3JpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAia2V0aWthIG1lbmFtYmFoa2FuIGRhZnRhciBibG9rIGJ1cnVrIGRhbGFtIG1lbW9yaSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQYXNzIGNvbXBsZXRlZCwgJXUgYmFkIGJsb2NrcyBmb3VuZC4gKCVkLyVkLyVkIGVycm9ycylcbiIKK21zZ3N0ciAiVGFoYXAgc2VsZXNhaSwgJXUgYmxvayBidXJ1ayBkaXRlbXVrYW4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBbLVJWZl0gWy0rPUFhY0RkZWlqc1N1XSBbLXYgdmVyc2ldIGJlcmthcy4uLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICJ2ZXJzaSBidXJ1ayAtICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTczCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB2ZXJzaW9uIC0gJXNcbiIKK21zZ3N0ciAidmVyc2kgYnVydWsgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgdW50dWsgbWVsYWt1a2FuIHN0YXRpc3RpayAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgZmxhZ3MgZGkgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIkZsYWdzIGRhcmkgJXMgZGlzZXQgc2ViYWdhaSAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgImtldGlrYSBtZW5zZXQgZmxhZ3MgZGkgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJWZXJzaSBkYXJpICVzIGRpc2V0IHNlYmFnYWkgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAia2V0aWthIG1lbnNldCB2ZXJzaSBkaSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJWZXJzaSBkYXJpICVzIGRpc2V0IHNlYmFnYWkgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgImtldGlrYSBtZW5zZXQgdmVyc2kgZGkgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdhbG9rYXNpa2FuIHZhcmlhYmxlIHBhdGggZGkgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9IHRpZGFrIGtvbXBhdGliZWwgZGVuZ2FuIC0gZGFuICtcbiIKKworIzogbWlzYy9jaGF0dHIuYzozNDUKK21zZ2lkICJNdXN0IHVzZSAnLXYnLCA9LCAtIG9yICtcbiIKK21zZ3N0ciAiSGFydXMgbWVuZ2d1bmFrYW4gJy12JywgPSwgLSBhdGF1ICtcbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAia2V0aWthICBtZW1iYWNhIGlub2RlICVsdSBkYWxhbSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAia2V0aWthIG1lbmdla3NwYW5zaSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW1idWthICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjk1IG1pc2MvY3JlYXRlX2lub2RlLmM6MTIyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBpbm9kZSAlbHUgZGFsYW0gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1vdG9uZyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIG1lbWJ1a2EgaW5vZGUgc2NhbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAia2V0aWthIG1lbmdhbG9rYXNpa2FuIGJ1ZmZlciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW1iYWNhIGZsYWdzIGRpICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIwMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBhdHRyaWJ1dGUgXCIlc1wiIHRvIGlub2RlICV1IgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBpbm9kZSAlbHUgZGFsYW0gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICJrZXRpa2EgbWVsYWt1a2FuIHBlbWVyaWtzYWFuIGlub2RlIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW5nYWxva2FzaWthbiBidWZmZXIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImtldGlrYSAgbWVtYmFjYSBpbm9kZSAlbHUgZGFsYW0gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgZmxhZ3MgZGkgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzYxIG1pc2MvY3JlYXRlX2lub2RlLmM6ODM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIKK21zZ3N0ciAia2V0aWthIG1lbmNhcmkgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJrZXRpa2EgbWVtYnVhdCBkaXJla3Rvcmkgcm9vdCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgImtldGlrYSBtZW1idWthICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAia2V0aWthIG1lbWJ1a2EgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbGFrdWthbiBzdGF0aXN0aWsgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzUxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICJrZXRpa2EgIG1lbWJhY2EgaW5vZGUgJWx1IGRhbGFtICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJBZXJyb3IgbWVuZ2Fsb2thc2lrYW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVhZCBsaW5rIFwiJXNcIiIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgdW50dWsgbWVuZ3ViYWggdWt1cmFuICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW51bGlzIGlub2RlICVsdSBkYWxhbSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgZmlsZSBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW51bGlzIGlub2RlICVsdSBkYWxhbSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJrZXRpa2EgbWVtYnVrYSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICJtZW1iYWNhIGRpcmVrdG9yaSBibG9jayIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWdub3JpbmcgZW50cnkgXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGlub2RlIGZvciBcIiVzXCIiCittc2dzdHIgImtldGlrYSBtZW5zZXQgdmVyc2kgZGkgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODUyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHhhdHRycyBmb3IgXCIlc1wiIgorbXNnc3RyICJrZXRpa2EgbWVuc2V0IGZsYWdzIGRpICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAia2V0aWthIG1lbXVsYWkgc2NhbiBkYXJpIGlub2RlIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iZmdoaXhWXSBbLW8gc3VwZXJibG9jaz08bnVtPl0gWy1vIGJsb2Nrc2l6ZT08bnVtPl0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJQZW5nZ3VuYWFuOiAlcyBbLWJmaGl4Vl0gWy1vIHN1cGVyYmxvaz08anVtbGFoPl0gWy1vIHVrdXJhbmJsb2s9PGJlc2FyPl0gIgorInBlcmFuZ2thdFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5CisjLCBmdXp6eQorbXNnaWQgImJsb2NrcyIKK21zZ3N0ciAiYmJsb2NrIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcnVwICVsdTogKGJsb2sgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiAgQ2hlY2tzdW0gMHglMDR4LCBpbm9kZSB5YW5nIHRpZGFrIGRpZ3VuYWthbiAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoRVhQRUNURUQgMHglMDR4KSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMgc3VwZXJibG9rIGRpICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgIlV0YW1hIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJDYWRhbmdhbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdydXAgZGVza3JpcHNpIGRpICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorbXNnaWQgIiIKKyJcbiIKKyIgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvayBkaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBHcnVwIGRlc2tyaXBzaSBkaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgQmxvayBiaXRtYXAgZGkgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYwIG1pc2MvZHVtcGUyZnMuYzoyNzEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiwgY3N1bSAweCUwOHgiCittc2dzdHIgIiAgQ2hlY2tzdW0gMHglMDR4LCBpbm9kZSB5YW5nIHRpZGFrIGRpZ3VuYWthbiAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYzCittc2dpZCAiLCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NgorIywgZnV6enkKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiLCBJbm9kZSBiaXRtYXAgZGkgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjczCittc2dpZCAiIgorIlxuIgorIiAgSW5vZGUgdGFibGUgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBJbm9kZSB0YWJlbCBkaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSBibG9rIGJlYmFzLCAldSBpbm9kZSBiZWJhcywgJXUgZGlyZWt0b3JpJXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCAldSB1bnVzZWQgaW5vZGVzXG4iCittc2dzdHIgIiwgJXUgaW5vZGUgeWFuZyB0aWRhayBkaWd1bmFrYW5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICBCbG9rIGJlYmFzOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgSW5vZGUgYmViYXM6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJrZXRpa2EgbWVuY2V0YWsgZGFmdGFyIGJsb2sgYnVydWsiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIkJsb2sgYnVydWs6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EganVybmFsIGlub2RlIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJrZXRpa2EgbWVtYnVrYSBqdXJuYWwgaW5vZGUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgImtldGlrYSBtZW1iYWNhIHN1cGVyIGJsb2sganVybmFsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA0CisjLCBmdXp6eQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiSnVybmFsIHN1cGVyYmxvayB0aWRhayBkaXRlbXVrYW4hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDcgbWlzYy9kdW1wZTJmcy5jOjQ5MAorbXNnaWQgIkpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAiCittc2dzdHIgIkZhc2lsaXRhcyBqdXJuYWw6ICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MjAKK21zZ2lkICJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIKK21zZ3N0ciAiVWt1cmFuIGp1cm5hbDogICAgICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIlBhbmphbmcganVybmFsOiAgICAgICAgICAgJXVcbiIKKyJVcnV0YW4ganVybmFsOiAgICAgICAgICAgIDB4JTA4eFxuIgorIkF3YWwgZGFyaSBqdXJuYWw6ICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBlcnJubzogICAgICAgICAgICAlZFxuIgorbXNnc3RyICJQZW5nZ3VuYSBqdXJuYWw6ICAgICAgICAgJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAia2V0aWthbiBtZW1iYWNhIHN1cGVyYmxvayBqdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICJUaWRhayBkYXBhdCBtZW5jYXJpIG5vbW9yIG1hZ2ljIGRpIGp1cm5hbCBzdXBlcmJsb2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIlVrdXJhbiBibG9rIGp1cm5hbDogICAgICAgJXVcbiIKKyJQYW5qYW5nIGp1cm5hbDogICAgICAgICAgICV1XG4iCisiQmxvayBwZXJ0YW1hIGp1cm5hbDogICAgICAldVxuIgorIlVydXRhbiBqdXJuYWw6ICAgICAgICAgICAgMHglMDh4XG4iCisiQXdhbCBkYXJpIGp1cm5hbDogICAgICAgICAldVxuIgorIkp1bWxhaCBwZW5nZ3VuYSBkYXJpIGp1cm5hbDogJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUxNAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHVzZXJzOiAgICAgICAgICAgICVzXG4iCittc2dzdHIgIlBlbmdndW5hIGp1cm5hbDogICAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIG1lbXBhcnNlIHBpbGloYW4hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldGVyIHN1cGVyYmxvayB0aWRhayB2YWxpZDogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFtZXRlciB1a3VyYW4tYmxvayB0aWRhayB2YWxpZDogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlBpbGloYW4gZXh0ZW5kZWQgYnVydWsgZGlzcGVzaWZpa2FzaWthbjogJXNcbiIKKyJcbiIKKyJQaWxpaGFuIGV4dGVuZGVkIGRpcGlzYWhrYW4gZGVuZ2FuIGtvbWEsIGRhbiBib2xlaCBtZW1iYXdhIGFyZ3VtZW50IGRpbWFuYVxuIgorIlx0aW5pIGRpIHNldCBvZmYgb2xlaCBzZWJ1YWggdGFuZGEgc2FtYSBkZW5nYW4gKCc9JykuXG4iCisiXG4iCisiUGlsaWhhbiBleHRlbmRlZCB5YW5nIHZhbGlkIGFkYWxhaDpcbiIKKyJcdHN1cGVyYmxvY2s9PG5vbW9yIHN1cGVyYmxvaz5cbiIKKyJcdGJsb2Nrc2l6ZT08YmVzYXIgYmxvaz5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdE1lbmdndW5ha2FuICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY5MSBtaXNjL2UyaW1hZ2UuYzoxNTg2IG1pc2MvdHVuZTJmcy5jOjI4MDUKKyM6IHJlc2l6ZS9tYWluLmM6NDE1Cittc2dpZCAiQ291bGRuJ3QgZmluZCB2YWxpZCBmaWxlc3lzdGVtIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmNhcmkgc3VwZXJibG9rIHNpc3RlbSBiZXJrYXMgeWFuZyB2YWxpZC5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAlczogZXJyb3IgbWVtYmFjYSBiaXRtYXBzOiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlBlbmdndW5hYW46ICVzIFstcnNJXSBwZXJhbmdrYXQgaW1hZ2VfZmlsZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAtSSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBbLXJzSV0gcGVyYW5na2F0IGltYWdlX2ZpbGVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgImtldGlrYSBtZW5nYWxva2FzaWthbiBidWZmZXIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIk1lbWVyaWtzYSBibG9rICVsdSBrZSAlbHVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgIkVycm9yIG1lbnVsaXMgYmxvY2sgJWx1ICglcykuICAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdhbG9rYXNpa2FuIGJ1ZmZlciBoZWFkZXJcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBzdXBlcmJsb2siCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgImtldGlrYSBtZW51bGlzIHRhYmVsIGlub2RlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNjMKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAia2V0aWthIG1lbnVsaXMgYmxvayBiaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBpbm9kZSBiaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJEaXJla3RvcmkgYmxvY2sgJXUgKCMlZCkga29zb25nIGRhbGFtIGlub2RlICV1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAiRGlyZWt0b3JpIGJsb2NrICV1ICgjJWQpIGtvc29uZyBkYWxhbSBpbm9kZSAldVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiV1IGlub2RlcywgJXUgYmxva1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NjI2Cittc2dpZCAiIgorIlN0b3BwaW5nIG5vdyB3aWxsIGRlc3Ryb3kgdGhlIGZpbGVzeXN0ZW0sIGludGVycnVwdCBhZ2FpbiBpZiB5b3UgYXJlIHN1cmVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiICVzIHJlbWFpbmluZyBhdCAlLjJmIE1CL3MiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NjY0IG1pc2MvZTJpbWFnZS5jOjExOTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHJlYWRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiRXJyb3IgbWVtYmFjYSBibG9jayAlbHUgKCVzKS4gICIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICJrZXRpa2EgbWVuZ2Fsb2thc2lrYW4gYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAia2V0aWthIG1lbmdhbG9rYXNpa2FuIGJ1ZmZlciIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImtldGlrYSBtZW5nYWxva2FzaWthbiB6ZXJvaXppbmcgYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJrZXRpa2EgbWVuZ2luaXNpYWxpc2FzaSBqdXJuYWwgc3VwZXJibG9rIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBibG9rIGJpdG1hcCIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAia2V0aWthIG1lbnVsaXMgYmxvayBiaXRtYXAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKKyMsIGZ1enp5Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGVzLi4uXG4iCittc2dzdHIgIk1lbWVyaWtzYSB0YWJlbCBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTMwMAorIywgZnV6enkKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdhbG9rYXNpa2FuIGJsb2NrIGJ1ZmZlciAodWt1cmFuPSVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzM5IG1pc2MvZTJpbWFnZS5jOjEzNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJrZXRpa2EgbWVtcGVyb2xlaCBpbm9kZSBiZXJpa3V0bnlhIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzg1Cittc2dpZCAiUmF3IGFuZCBxY293MiBpbWFnZXMgY2Fubm90IGJlIGluc3RhbGxlZCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3CisjLCBmdXp6eQorbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgYml0bWFwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIG1lbWJ1a2EgaW5vZGUgc2NhbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZXN0b3JpbmcgdGhlIGltYWdlIHRhYmxlIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyB0YWJlbCBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTUyNworbXNnaWQgIi1hIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggcmF3IG9yIFFDT1cyIGltYWdlcy4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTUzCisjLCBmdXp6eQorbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgIiAocGVtZXJpa3NhYW4gZGlsYWt1a2FuIGRhbGFtICVsZCBtb3VudHMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBjb21wcmVzc2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJQaWxpaGFuIC10IHRpZGFrIGRpbGF5YW5pIGRhbGFtIHZlcnNpIGUyZnNjayBpbmkuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBub3Qgc3VwcG9ydGVkIHdoZW4gd3JpdGluZyB0byBzdGRvdXRcbiIKK21zZ3N0ciAiUGlsaWhhbiAtdCB0aWRhayBkaWxheWFuaSBkYWxhbSB2ZXJzaSBlMmZzY2sgaW5pLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjU3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJrZXRpa2EgbWVuZ2Fsb2thc2lrYW4gYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtcCBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiUGlsaWhhbiAtdCB0aWRhayBkaWxheWFuaSBkYWxhbSB2ZXJzaSBlMmZzY2sgaW5pLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJsb2NrcyBhbHJlYWR5IGNvbnRhaW5lZCB0aGUgZGF0YSB0byBiZSBjb3BpZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgIlBlbmdndW5hYW46ICVzIGRpc2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IG9wZW4gJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogdGlkYWsgZGFwYXQgbWVtYnVrYSAlc1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IHRpZGFrIGRhcGF0IG1lbmNhcmkgc3VwZXJibG9rXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBlcnJvciBtZW1iYWNhIHN1cGVyYmxva1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGJ1a2FuIHNlYnVhaCBleHQyIHNpc3RlbSBiZXJrYXNcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6OTcgbWlzYy90dW5lMmZzLmM6Mjk3OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIKK21zZ3N0ciAiUGVyaW5nYXRhbjogbGFiZWwgdGVybGFsdSBwYW5qYW5nLCBtZW1vdG9uZy5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDogdGlkYWsgZGFwYXQgbWVuY2FyaSBzdXBlcmJsb2sgbGFnaVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3Igd3JpdGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGVycm9yIG1lbnVsaXMgc3VwZXJibG9rXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIlBlbmdndW5hYW46IGUybGFiZWwgcGVyYW5na2F0IFtsYWJlbGJhcnVdXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgIlBlbmdndW5hYW46ICVzIDxiZXJrYXMgdHJhbnNha3NpPiA8c2lzdGVtIGJlcmthcz5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIgorbXNnc3RyICJTaXN0ZW0gYmVya2FzIHdha3R1IG1vdW50IHRpZGFrIGNvY29rICV1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorIywgZnV6enkKK21zZ2lkICJMYXN0IG1vdW50IHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgd2FrdHUgbW91bnQgdGlkYWsgY29jb2sgJXVcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTAKK21zZ2lkICJMYXN0IHdyaXRlIHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTIKK21zZ2lkICJMaWZldGltZSB3cml0ZSBjb3VudGVyIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTY2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAia2V0aWthbiBtZW1iYWNhIHN1cGVyYmxvayBqdXJuYWwiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGZldGNoaW5nIHN1cGVyYmxvY2siCittc2dzdHIgImtldGlrYSBtZW51bGlzIHN1cGVyYmxvayIKKworIzogbWlzYy9lMnVuZG8uYzoxOTUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIkNhZGFuZ2FuIHN1cGVyYmxvayBkaXNpbXBhbiBkaSBibG9rOiAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbGxlZ2FsIG9mZnNldCAtICVzIgorbXNnc3RyICJVa3VyYW4gaW5vZGUgYmFydSB0aWRhayB2YWxpZDogJXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSBtZW1idWthIGlub2RlIHNjYW4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICJrZXRpa2EgbWVtYmFjYSBpbm9kZSByb290IgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IE5vdCBhbiB1bmRvIGZpbGUuXG4iCittc2dzdHIgIiVzOiB0ZXJsYWx1IGJhbnlhayBwZXJhbmdrYXRcbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBIZWFkZXIgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiLCBJbm9kZSBiaXRtYXAgZGkgIgorCisjOiBtaXNjL2UydW5kby5jOjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAidWt1cmFuIGJsb2sgYnVydWsgLSAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkBqIEBTIG1lbWlsaWtpIHNlYnVhaCBmZWF0dXJlIHlhbmcgdGlkYWsga29tcGF0aWJlbCB5YW5nIHRpZGFrIGRpa2V0YWh1aSAiCisiYWt0aWYuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJFcnJvciBrZXRpa2EgbWVuZW50dWthbiBhcGFrYWggJXMgc3VkYWggZGltb3VudC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MzMKKyMsIGZ1enp5Cittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgIiIKKyJlMnVuZG8gc2VoYXJ1c255YSBoYW55YSBkaWphbGFua2FuIGRpIHNpc3RlbSBiZXJrYXMgeWFuZyBzdWRhaCBkaXVubW91bnRcbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAia2V0aWthIG1lbWJ1a2EgJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBrZXlzIgorbXNnc3RyICJrZXRpa2EgbWVtYmFjYSBiaXRtYXAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICJEYXJpIGJsb2sgJWx1IGtlICVsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgIk1lbWVyaWtzYSBibG9rICVsdSBrZSAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJFcnJvciBtZW51bGlzIGJsb2NrICVsdSAoJXMpLiAgIgorCisjOiBtaXNjL2UydW5kby5jOjYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5jb21wbGV0ZSB1bmRvIHJlY29yZDsgcnVuIGUyZnNjay5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgcG9zaXRpdmUsIG5vdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiWypdIHByb2JhYmx5IHN1cGVyYmxvY2sgd3JpdHRlbiBpbiB0aGUgZXh0MyBqb3VybmFsIHN1cGVyYmxvY2ssXG4iCisiXHRzbyBzdGFydC9lbmQvZ3JwIHdyb25nXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiUEVSSU5HQVRBTjogdGlkYWsgZGFwYXQgbWVtYnVrYSAlczogJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGJhZCBmb3JtYXQgb24gbGluZSAlZCBvZiAlc1xuIgorbXNnc3RyICJQRVJJTkdBVEFOOiBmb3JtYXQgYnVydWsgZGkgYmFyaSAlZCBkYXJpICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorIywgZnV6enkKK21zZ2lkICIiCisiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisiXHRmaWVsZC4gIEkgd2lsbCBrbHVkZ2UgYXJvdW5kIHRoaW5ncyBmb3IgeW91LCBidXQgeW91XG4iCisiXHRzaG91bGQgZml4IHlvdXIgL2V0Yy9mc3RhYiBmaWxlIGFzIHNvb24gYXMgeW91IGNhbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxhXGFcYVBFUklOR0FUQU46IC9ldGMvZnN0YWIgYW5kYSB0aWRhayBiZXJpc2kgZnNjayBwYXNzbm9cbiIKKyJcdHBpbGloYW4uIFNheWEgYWthbiBrbHVkZSBhcm91bmQgdGhpbmdzIHVudHVrIGFuZGEsIHRldGFwaSBhbmRhXG4iCisiXHRzZWhhcnVzbnlhIG1lbWJldHVsa2FuIGJlcmthcyAvZXRjL2ZzdGFiIGFuZGEgc2VjZXBhdG55YS5cbiIKKyJcbiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXM6IHRpZGFrIGRpdGVtdWthblxuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogdHVuZ2d1OiBUaWRhayBhZGEgbGFnaSBwcm9zZXMgYW5haz8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiUGVyaW5nYXRhbi4uLiAlcyB1bnR1ayBwZXJhbmdrYXQgJXMga2VsdWFyIGRlbmdhbiBzaW55YWwgJWQuXG4iCisKKyM6IG1pc2MvZnNjay5jOjYyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIgorbXNnc3RyICIlcyAlczogc3RhdHVzIGFkYWxhaCAleCwgc2VoYXJ1c255YSB0aWRhayBwZXJuYWggdGVyamFkaS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJCZXJha2hpciBkZW5nYW4gJXMgKHN0YXR1cyBrZWx1YXIgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBFcnJvciAlZCBrZXRpa2EgbWVuamFsYW5rYW4gZnNjay4lcyB1bnR1ayAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIlNlbXVhIGF0YXUgdGlkYWsgc2FtYSBzZWthbGkgZGFyaSB0aXBlIHNpc3RlbSBiZXJrYXMgZGlsZXdhdGthbiBtZWxhbHVpICIKKyJwaWxpaGFuIC10IGhhcnVzIGRpd2FsaVxuIgorImRlbmdhbiAnbm8nIGF0YXUgJyEnLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIHRpcGUgc2lzdGVtIGJlcmthc1xuIgorCisjOiBtaXNjL2ZzY2suYzo4ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBza2lwcGluZyBiYWQgbGluZSBpbiAvZXRjL2ZzdGFiOiBiaW5kIG1vdW50IHdpdGggbm9uemVybyBmc2NrIHBhc3MgIgorIm51bWJlclxuIgorbXNnc3RyICIiCisiJXM6IG1lbGV3YXRrYW4gYmFyaXMgYnVydWsgZGkgL2V0Yy9mc3RhYjogYmluZCBtb3VudCBkZW5nYW4gdGlkYWsgbm9sIGZzY2sgIgorInRhaGFwIG5vbW9yXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6IHRpZGFrIGRhcGF0IG1lbWVyaWtzYSAlczogZnNjay4lcyB0aWRhayBkaXRlbXVrYW5cbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiTWVtZXJpa3NhIHNlbXVhIGZpbGVzeXRlbS5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS1tZW51bmdndS0tICh0YWhhcCAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIlBlbmdndW5hYW46IGZzY2sgWy1BTU5QUlRWXSAtQyBbZmRdIF0gWy10IGZzdHlwZV0gW2ZzLXBpbGloYW5dICIKKyJbZmlsZXN5cyAuLi5dXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXM6IHRlcmxhbHUgYmFueWFrIHBlcmFuZ2thdFxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogdGVybGFsdSBiYW55YWsgYXJndW1lblxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzQwCittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAiIgorIlRvbG9uZyBqYWxhbmthbiAnZTJmc2NrIC1mICVzJyB0ZXJsZWJpaCBkYWh1bHUuXG4iCisiXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogV3JpdGluZyB0byB0aGUgam91cm5hbCBpcyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJNZW5nZWNpbGthbiB1a3VyYW4gaW5vZGUgeWFuZyB0aWRhayBkaWxheWFuaVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBbLVJWYWRsdl0gW2Jlcmthcy4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJLZXRpa2EgbWVtYmFjYSBmbGFncyBkaSAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJLZXRpa2EgbWVtYmFjYSB2ZXJzaSBkaSAlcyIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJLZXRpa2EgbWVtYmFjYSB2ZXJzaSBkaSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jfC1sIGZpbGVuYW1lXSBbLWIgYmxvY2stc2l6ZV0gWy1DIGNsdXN0ZXItc2l6ZV1cbiIKKyJcdFstaSBieXRlcy1wZXItaW5vZGVdIFstSSBpbm9kZS1zaXplXSBbLUogam91cm5hbC1vcHRpb25zXVxuIgorIlx0Wy1HIGZsZXgtZ3JvdXAtc2l6ZV0gWy1OIG51bWJlci1vZi1pbm9kZXNdIFstZCByb290LWRpcmVjdG9yeV1cbiIKKyJcdFstbSByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZV0gWy1vIGNyZWF0b3Itb3NdXG4iCisiXHRbLWcgYmxvY2tzLXBlci1ncm91cF0gWy1MIHZvbHVtZS1sYWJlbF0gWy1NIGxhc3QtbW91bnRlZC1kaXJlY3RvcnldXG4iCisiXHRbLU8gZmVhdHVyZVssLi4uXV0gWy1yIGZzLXJldmlzaW9uXSBbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXVxuIgorIlx0Wy10IGZzLXR5cGVdIFstVCB1c2FnZS10eXBlIF0gWy1VIFVVSURdIFstZSBlcnJvcnNfYmVoYXZpb3JdWy16ICIKKyJ1bmRvX2ZpbGVdXG4iCisiXHRbLWpucXZERlNWXSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cbiIKK21zZ3N0ciAiIgorIlBlbmdndW5hYW46ICVzIFstY3wtbCBuYW1hZmlsZV0gWy1iIHVrdXJhbi1ibG9rXSBbLWYgdWt1cmFuLWZyYWdtZW5dXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgdWt1cmFuLWlub2RlXSBbLUogcGlsaWhhbi1qdXJuYWxdXG4iCisiXHRbLUcgdWt1cmFuIG1ldGEgZ3J1cF0gWy1OIGp1bWxhaC1kYXJpLWlub2RlXVxuIgorIlx0Wy1tIHBlcnNlbnRhc2ktcmVzZXJ2ZWQtYmxva10gWy1vIHNpc3RlbS1vcGVyYXNpLXBlbWJ1YXRdXG4iCisiXHRbLWcgYmxvay1wZXItZ3J1cF0gWy1MIGxhYmVsLXZvbHVtZV0gWy1NIGRpcmVrdG9yaS10ZXJha2hpci1kaXBhc2FuZ11cbiIKKyJcdFstTyBmYXNpbGl0YXNbLC4uLl1dIFstciByZXZpc2ktZnNdIFstRSBwaWxpaGFuLXRhbWJhaGFuWywuLi5dXVxuIgorIlx0Wy1UIHR5cGUtZnNdIFstVSBVVUlEXSBbLWpucXZGS1NWXSBwZXJhbmdrYXQgW2p1bWxhaC1ibG9rXVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIk1lbmphbGFua2FuIHBlcmludGFoOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmphbGFua2FuICclcyciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJrZXRpa2EgbWVtcHJvc2VzIGRhZnRhciBkYXJpIGJsb2sgYnVydWsgZGFyaSBhcGxpa2FzaSIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgIkJsb2sgJWQgZGFsYW0gZGFlcmFoIGRlc2tyaXBzaSBzdXBlcmJsb2svZ3J1cCB1dGFtYSBidXJ1ay5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIkJsb2sgJXUgc2FtcGFpICV1IGhhcnVzIGRhbGFtIGtlYWRhYW4gYmFpayB1bnR1ayBtZW1idWF0IHNlYnVhaCBzaXN0ZW0gIgorImJlcmthcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAiTWVtYmF0YWxrYW4uLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiUGVyaW5nYXRhbjogZGVza3JpcHNpIHN1cGVyYmxvay9ncnVwIGNhZGFuZ2FuIGRpIGJsb2sgJXUgYmVyaXNpXG4iCisiXHRibG9rIGJ1cnVrLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICJrZXRpa2EgbWVuYW5kYWkgYmxvayBidXJ1ayBzZWJhZ2FpIGRpZ3VuYWthbiIKKworIzogbWlzYy9ta2UyZnMuYzo0MDgKK21zZ2lkICJXcml0aW5nIGlub2RlIHRhYmxlczogIgorbXNnc3RyICJNZW51bGlzIHRhYmVsIGlub2RlOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDMwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiVGlkYWsgZGFwYXQgbWVudWxpcyAlZCBibG9rIGRhbGFtIHRhYmVsIGlub2RlIGRpbXVsYWkgZGkgJXU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJzZWxlc2FpICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgImtldGlrYSBtZW1idWF0IGRpcmVrdG9yaSByb290IgorCisjOiBtaXNjL21rZTJmcy5jOjQ2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgaW5vZGUgcm9vdCIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJrZXRpa2EgbWVuc2V0IGtlcGVtaWxpa2FuIGlub2RlIHJvb3QiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDk2Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgImtldGlrYSBtZW1idWF0IC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgImtldGlrYSBtZW5jYXJpIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAia2V0aWthIG1lbmdla3NwYW5zaSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAia2V0aWthIG1lbnNldCBpbm9kZSBibG9rIGJ1cnVrIgorCisjOiBtaXNjL21rZTJmcy5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICJPdXQgb2YgbWVtb3J5IGVyYXNpbmcgc2VjdG9ycyAlZC0lZFxuIgorbXNnc3RyICJLZWhhYmlzYW4gbWVtb3JpIG1lbmdoYXB1cyBzZWt0b3IgJWQtJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiUGVyaW5nYXRhbjogdGlkYWsgZGFwYXQgbWVtYmFjYSBibG9rIDA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIlBlcmluZ2F0YW46IHRpZGFrIGRhcGF0IG1lbmdoYXB1cyBzZWt0b3IgJWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjAwCittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAia2V0aWthIG1lbmdpbmlzaWFsaXNhc2kganVybmFsIHN1cGVyYmxvayIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgIk1lbmdvc29uZ2thbiBwZXJhbmdrYXQganVybmFsOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgImtldGlrYSBtZW5nb3NvbmdrYW4gcGVyYW5na2F0IGp1cm5hbCAoYmxvayAldSwganVtbGFoICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzo2MzcKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAia2V0aWthIG1lbnVsaXMganVybmFsIHN1cGVyYmxvayIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICJNZW5ndWJhaCBzaXN0ZW0gYmVya2FzIGRpICVzIGtlICV1ICglZGspIGJsb2suXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisid2FybmluZzogJWxsdSBibG9ja3MgdW51c2VkLlxuIgorIlxuIgorbXNnc3RyICIiCisicGVyaW5nYXRhbjogJXUgYmxvayB0aWRhayBkaWd1bmFrYW4uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiU2lzdGVtIGJlcmthcyBsYWJlbD0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAiVGlwZSBPUzogIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIlVrdXJhbiBibG9rPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiVWt1cmFuIGJsb2s9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJVa3VyYW4gcGVjYWhhbj0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIlN0cmlkZT0ldSBibG9rLCBMZWJhciBzdHJpcGU9JXUgYmxva1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBpbm9kZXMsICV1IGJsb2tcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJXUgYmxvayAoJTIuMmYlJSkgcmVzZXJ2ZWQgdW50dWsgc3VwZXIgdXNlclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIkRhdGEgYmxvayBwZXJ0YW1hPSV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiTWFrc2ltdW0gYmxvayBzaXN0ZW0gYmVya2FzPSVsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cHNcbiIKK21zZ3N0ciAiJXUgZ3J1cCBibG9rXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiV1IGdydXAgYmxva1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2sgcGVyIGdydXAsICV1IHBvdG9uZ2FuIHBlciBncnVwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxvayBwZXIgZ3J1cCwgJXUgcG90b25nYW4gcGVyIGdydXBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBpbm9kZSBwZXIgZ3J1cFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJTaXN0ZW0gYmVya2FzIGxhYmVsPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiQ2FkYW5nYW4gc3VwZXJibG9rIGRpc2ltcGFuIGRpIGJsb2s6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiVWt1cmFuIGlub2RlIGJhcnUgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAiVWt1cmFuIGlub2RlIGJhcnUgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAicGlsaWhhbiBtb3VudCB0aWRhayB2YWxpZCBkaXNldDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgIlBhcmFtZXRlciBzdXBlcmJsb2sgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaWRlIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldGVyIHN0cmlkZSB0aWRhayB2YWxpZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpcGUtd2lkdGggcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJQYXJhbWV0ZXIgc3RyaXBlLXdpZHRoIHRpZGFrIHZhbGlkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFtZXRlciByZXNpemUgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIlJlc2l6ZSBtYWtzaW11bSBoYXJ1cyBsZWJpaCBiZXNhciBkYXJpcGFkYSB1a3VyYW4gc2lzdGVtIGJlcmthcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIk9uLWxpbmUgcmVzaXppbmcgdGlkYWsgZGlsYXlhbmkgZGVuZ2FuIHNpc3RlbSBiZXJrYXMgcmV2aXNpIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJwaWxpaGFuIG1vdW50IHRpZGFrIHZhbGlkIGRpc2V0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiUGlsaWhhbiBidXJ1ayBkaXNwZXNpZmlrYXNpa2FuOiAlc1xuIgorIlxuIgorIlBpbGloYW4gZXh0ZW5kZWQgZGlwaXNhaGthbiBkZW5nYW4ga29tYSwgZGFuIGJvbGVoIG1lbmdndW5ha2FuIGFyZ3VtZW4geWFuZ1xuIgorIlx0ZGkgc2V0IG9mZiBvbGVoIHRhbmRhIHNhbWEgZGVuZ2FuICgnPScpLlxuIgorIlxuIgorIlBpbGloYW4gZXh0ZW5kZWQgeWFuZyB2YWxpZCBhZGFsYWg6XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBkYWxhbSBibG9rPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlzayBkYWxhbSBibG9rPlxuIgorIlx0cmVzaXplPTxyZXNpemUgdWt1cmFuIG1ha3NpbXVtIGRhbGFtIGJsb2s+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHVudHVrIG1lbm9uYWt0aWZrYW4sIDEgdW50dWsgbWVuZ2FrdGlma2FuPlxuIgorIlx0dGVzdF9mc1xuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlBlcmluZ2F0YW46IFJBSUQgc3RyaXBlLXdpZHRoICV1IGJ1a2FuIHNlYnVhaCBldmVuIG11bHRpcGxlIGRhcmkgc3RyaWRlICV1LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBta2UyZnMgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YXggZXJyb3IgZGFsYW0gbWtlMmZzIGJlcmthcyBrb25maWd1cmFzaSAoJXMsIGJhcmlzICMlZClcbiIKKyJcdCVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTExNCBtaXNjL3R1bmUyZnMuYzoxMDA3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZmlsZXN5c3RlbSBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJQaWxpaGFuIHNpc3RlbSBiZXJrYXMgdGlkYWsgdmFsaWQgZGlzZXQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEyNiBtaXNjL3R1bmUyZnMuYzo0MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtb3VudCBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJwaWxpaGFuIG1vdW50IHRpZGFrIHZhbGlkIGRpc2V0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJZb3VyIG1rZTJmcy5jb25mIGZpbGUgZG9lcyBub3QgZGVmaW5lIHRoZSAlcyBmaWxlc3lzdGVtIHR5cGUuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJQZXJpbmdhdGFuISBCZXJrYXMgbWtlMmZzLmNvbmYgYW5kYSB0aWRhayBtZW5kZWZpbmlzaWthbiB0aXBlIHNpc3RlbSBiZXJrYXMgIgorIiVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBbmRhIG11bmdraW4gYnV0dWggdW50dWsgbWVtYXNhbmcgc2VidWFoIHVwZGF0ZSBkYXJpIGJlcmthcyBta2UyZnMuY29uZi5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCisjLCBmdXp6eQorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgIk1lbWJhdGFsa2FuLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTMxMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGZzX3R5cGUgJXMgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmZcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKKyMsIGZ1enp5Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIG5hbWEgYmVya2FzIHRkYlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJVa3VyYW4gYmxvayB0aWRhayB2YWxpZCAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogYmxvY2tzaXplICVkIG5vdCB1c2FibGUgb24gbW9zdCBzeXN0ZW1zLlxuIgorbXNnc3RyICJQZXJpbmdhdGFuOiB1a3VyYW5ibG9rICVkIHRpZGFrIGJlcmd1bmEgZGFsYW0ga2ViYW55YWthbiBzeXN0ZW0uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjbHVzdGVyIHNpemUgLSAlcyIKK21zZ3N0ciAiVWt1cmFuIGJsb2sgdGlkYWsgdmFsaWQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjAwCittc2dpZCAiJy1SJyBpcyBkZXByZWNhdGVkLCB1c2UgJy1FJyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJwZXJpbGFrdSBlcnJvciBidXJ1ayAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAiSnVtbGFoIGlsZWdhbCB1bnR1ayBibG9rIHBlciBncnVwIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiYmxvayBwZXIgZ3J1cCBoYXJ1cyBrZWxpcGF0YW4gZGFyaSA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICJKdW1sYWggaWxlZ2FsIHVudHVrIHVrdXJhbiBmbGV4X2JnIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgInVrdXJhbiBmbGV4X2JnIGhhcnVzIGtlbGlwYXRhbiBkYXJpIDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiZmxleF9iZyBzaXplICglbHUpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDJeMzEiCittc2dzdHIgInVrdXJhbiBmbGV4X2JnIGhhcnVzIGtlbGlwYXRhbiBkYXJpIDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAicmFzaW8gZGFyaSBpbm9kZSB0aWRhayB2YWxpZCAlcyAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidWt1cmFuIGlub2RlIHRpZGFrIHZhbGlkIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICJkYWxhbSBtYWxsb2MgdW50dWsgYmFkX2Jsb2NrX2ZpbGVuYW1lIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJQZXJpbmdhdGFuOiBsYWJlbCB0ZXJsYWx1IHBhbmphbmcsIG1lbW90b25nLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJwZXJzZW50YXNpIHJlc2VydmVkIGJsb2sgdGlkYWsgdmFsaWQgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgImp1bWxhaCBpbm9kZSBidXJ1ayAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NDAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBmc19mZWF0dXJlIHN0cmluZyIKK21zZ3N0ciAia2V0aWthIG1lbmdhbG9rYXNpa2FuIGJ1ZmZlciIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJsZXZlbCByZXZpc2kgYnVydWsgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHJldmlzaW9uICVkIgorbXNnc3RyICIiCisiXG4iCisiXHRrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1idWF0IGp1cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtdCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICItbyBoYW55YSBib2xlaCBkaXNwZXNpZmlrYXNpa2FuIHNla2FsaSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICItbyBoYW55YSBib2xlaCBkaXNwZXNpZmlrYXNpa2FuIHNla2FsaSIKKworIzogbWlzYy9ta2UyZnMuYzoxODQwIG1pc2MvbWtlMmZzLmM6MzExNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIGRldmljZSAlc1xuIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSBtZW1idWthIHBlcmFuZ2thdCBqdXJuYWwgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICIiCisiUGVyYW5na2F0IGp1cm5hbCB1a3VyYW5ibG9rICglZCkgbGViaWgga2VjaWwgZGFyaXBhZGEgbWluaW11bSB1a3VyYW5ibG9rICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiTWVuZ2d1bmFrYW4gcGVyYW5na2F0IGp1cm5hbCB1a3VyYW5ibG9rOiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgImp1bWxhaCBibG9rIHRpZGFrIHZhbGlkIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgInNpc3RlbSBiZXJrYXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW5lbnR1a2FuIHVrdXJhbiBzaXN0ZW0gYmVya2FzIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIlRpZGFrIGRhcGF0IG1lbmVudHVrYW4gdWt1cmFuIHBlcmFuZ2thdDsgYW5kYSBoYXJ1cyBtZW5zcGVzaWZpa2FzaWthblxuIgorInVrdXJhbiBkYXJpIHNpc3RlbSBiZXJrYXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJVa3VyYW4gcGVyYW5na2F0IHlhbmcgZGlsYXBvcmthbiBub2wuIFBhcnRpc2kgeWFuZyBkaXNwZXNpZmlrYXNpa2FuIHRpZGFrICIKKyJ2YWxpZCwgYXRhdVxuIgorIlx0dGFiZWwgcGFydGlzaSB0aWRhayBkaWJhY2Ega2VtYmFsaSBzZXRlbGFoIG1lbmphbGFua2FuIGZkaXNrLCBrYXJlbmFcbiIKKyJcdHBhcnRpc2kgeWFuZyBkaXViYWggc2VkYW5nIHNpYnVrIGRhbiBzZWRhbmcgZGlndW5ha2FuLiBBbmRhIGJpc2EgbWVsYWt1a2FuICIKKyJyZWJvb3RcbiIKKyJcdHVudHVrIG1lbWJhY2Ega2VtYmFsaSB0YWJlbCBwYXJ0aXNpLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAiU2lzdGVtIGJlcmthcyBsZWJpaCBiZXNhciBkYXJpIHVrdXJhbiBwZXJhbmdrYXQgeWFuZyB0ZXJsaWhhdC4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgIkdhZ2FsIHVudHVrIG1lbXBhcnNlIGRhZnRhciB0eXBlIGZzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIHRpZGFrIG1lbmR1a3VuZyBsYXlhbmFuIGZpbGV0eXBlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQgdGlkYWsgbWVuZHVrdW5nIGxheWFuYW4gZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQgdGlkYWsgbWVuZHVrdW5nIGxheWFuYW4gZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmVudHVrYW4gdWt1cmFuIHNla3RvciBwZXJhbmdrYXQiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAyNAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmVudHVrYW4gdWt1cmFuIGZpc2lrIHNla3RvciIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgIiIKKyJrZXRpa2Egc2VkYW5nIG1lbGFrdWthbiBrb25maWd1cmFzaSB1a3VyYW4gYmxvazt0ZXJsYWx1IGtlY2lsIHVudHVrICIKKyJwZXJhbmdrYXRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorIlBlcmluZ2F0YW46IHVrdXJhbiBibG9rIHlhbmcgZGlzcGVzaWZpa2FzaWthbiAlZCBsZWJpaCBrZWNpbCBkYXJpcGFkYSB1a3VyYW4gIgorImZpc2lrIHNla3RvciBwZXJhbmdrYXQgJWQsIHRldGFwIGRpbGFuanV0a2FuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKyIlczogVWt1cmFuIGRhcmkgcGVyYW5na2F0ICVzIHRlcmxhbHUgYmVzYXIgdW50dWsgZGlleHByZXNpa2FuIGRhbGFtIDMyIGJpdFxuIgorIlx0bWVuZ2d1bmFrYW4gc2VidWFoIHVrdXJhbmJsb2sgZGFyaSAlZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiZnNfdHlwZXMgdW50dWsgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgZmVhdHVyZXMgdGlkYWsgZGlsYXlhbmkgZGVuZ2FuIHNpc3RlbSBiZXJrYXMgcmV2aXNpIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIlNwYXJzZSBzdXBlcmJsb2sgdGlkYWsgZGlsYXlhbmkgZGVuZ2FuIHNpc3RlbSBiZXJrYXMgcmV2aXNpIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiSnVybmFsIHRpZGFrIGRpbGF5YW5pIGRlbmdhbiBzaXN0ZW0gYmVya2FzIHJldmlzaSAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVsZiIKK21zZ3N0ciAicGVyc2VudGFzaSByZXNlcnZlZCBibG9rIHRpZGFrIHZhbGlkIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNzYKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAiUmVzaXplIG1ha3NpbXVtIGhhcnVzIGxlYmloIGJlc2FyIGRhcmlwYWRhIHVrdXJhbiBzaXN0ZW0gYmVya2FzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxODIKK21zZ2lkICJzcGVjaWZ5aW5nIGEgY2x1c3RlciBzaXplIHJlcXVpcmVzIHRoZSBiaWdhbGxvYyBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAiUGVyaW5nYXRhbjogVGlkYWsgZGFwYXQgbWVuZGFwYXRrYW4gZ2VvbWV0cmkgdW50dWsgcGVyYW5na2F0ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIKK21zZ3N0ciAiJXMgcGVueWVzdWFpYW4gb2ZzZXQgc2ViZXNhciAlbHUgYnl0ZXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisiSW5pIG11bmdraW4gYWthbiBiZXJ1anVuZyBrZSBwZXJmb3JtYSB5YW5nIHRpZGFrIGJhaWssIGRpc2FyYW5rYW4gdW50dWsgIgorIm1lbGFrdWthbiBwZW1iYWdpYW4gdWxhbmcuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIiVkLWJ5dGUgYmxva3MgdGVybGFsdSBiZXNhciB1bnR1ayBzeXN0ZW0gKG1ha3NpbWFsICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisiUGVyaW5nYXRhbjogJWQtYnl0ZSBibG9rIHRlcmxhbHUgYmVzYXIgdW50dWsgc3lzdGVtIChtYWtzaW1hbCAlZCksIGRpcGFrc2EgIgorInVudHVrIG1lbGFuanV0a2FuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorInJlc2l6ZV9pbm9kZSBkYW4gbWV0YV9iZyBmZWF0dXJlIHRpZGFrIHNhbGluZyBrb21wYXRpYmVsLlxuIgorIk1lcmFrYSB0aWRhayBkYXBhdCBkaWFrdGlma2FuIHNlY2FyYSBiZXJzYW1hYW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICJyZXNlcnZlZCBvbmxpbmUgcmVzaXplIGJsb2sgdGlkYWsgZGlsYXlhbmkgZGkgbm9uLXNwYXJzZSBzaXN0ZW0gYmVya2FzIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNDgKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIGNvdW50IG91dCBvZiByYW5nZSIKK21zZ3N0ciAianVtbGFoIGJsb2sgcGVyIGdydXAgZGlsdWFyIGphbmdrYXVhbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKyJGbGV4X2JnIGZlYXR1cmUgdGlkYWsgZGlha3RpZmthbiwgamFkaSB1a3VyYW4gZmxleF9idyBtdW5na2luIHRpZGFrIGRhcGF0ICIKKyJkaXNwZXNpZmlrYXNpa2FuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAidWt1cmFuIGlub2RlIHRpZGFrIHZhbGlkICVkIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBwcm9qZWN0IHF1b3RhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgInRlcmxhbHUgYmFueWFrIGlub2RlICglbGx1KSwgbmFpa2thbiByYXNpbyBpbm9kZT8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgInRlcmxhbHUgYmFueWFrIGlub2RlICglbGx1KSwgc3Blc2lmaWthc2lrYW4gPCAywrMyIGlub2RlIgorCisjOiBtaXNjL21rZTJmcy5jOjI0NDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSB0b28gYmlnIGZvciBhXG4iCisiXHRmaWxlc3lzdGVtIHdpdGggJWxsdSBibG9ja3MsIHNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG9yIGxvd2VyIGlub2RlIGNvdW50ICgtTikuXG4iCittc2dzdHIgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZV9jb3VudCAoJXUpIHRlcmxhbHUgYmVzYXIgdW50dWsgc2VidWFoXG4iCisiXHRzaXN0ZW0gYmVya2FzIGRlbmdhbiAlbHUgYmxvaywgc3Blc2lmaWthbiBsZWJpaCB0aW5nZ2kgaW5vZGVfcmF0aW8gKC1pKVxuIgorIlx0YXRhdSBsZWJpaCByZW5kYWgganVtbGFoIGlub2RlICgtTikuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworIywgZnV6enkKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiTWVuZ2d1bmFrYW4gcGVyYW5na2F0IGp1cm5hbCB1a3VyYW5ibG9rOiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKKyMsIGZ1enp5Cittc2dpZCAiZmFpbGVkIC0gIgorbXNnc3RyICJnYWdhbC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IgorbXNnc3RyICJrZXRpa2EgbWVuZ2luaXNpYWxpc2FzaSBqdXJuYWwgc3VwZXJibG9rIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgImtldGlrYSBtZW51bGlzIGlub2RlIGp1cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJwZXJpbGFrdSBlcnJvciBidXJ1ayAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgImtldGlrYSBtZW5zZXR1cCBzdXBlcmJsb2siCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJvcyB0aWRhayBkaWtldGFodWkgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDE4CisjLCBmdXp6eQorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIk1lbnVsaXMgdGFiZWwgaW5vZGU6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSBtZW5nYWxva2FzaWthbiB0YWJlbCBzaXN0ZW0gYmVya2FzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAia2V0aWthIG1lbnVsaXMgYmxvayBiaXRtYXAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBtYXkgYmUgZnVydGhlciBjb3JydXB0ZWQgYnkgc3VwZXJibG9jayByZXdyaXRlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMDgyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgImtldGlrYSBtZW5na29zb25na2FuIGJsb2sgJXUgZGkgYWtoaXIgZGFyaSBzaXN0ZW0gYmVya2FzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJrZXRpa2EgbWVucmVzZXJ2ZSBibG9rIHVudHVrIG9ubGluZSByZXNpemUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAianVybmFsIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiCittc2dzdHIgIk1lbmFtYmFoa2FuIGp1cm5hbCBrZSBwZXJhbmdrYXQgJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdGtldGlrYSBtZW5jb2JhIHVudHVrIG1lbmFtYmFoa2FuIGp1cm5hbCBrZSBwZXJhbmdrYXQgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgInNlbGVzYWlcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiTWVsZXdhdGthbiBwZW1idWF0YW4ganVybmFsIGRhbGFtIG1vZGUgc3VwZXItc2FqYVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJNZW1idWF0IGp1cm5hbCAoJXUgYmxvayk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHRrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW1idWF0IGp1cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBpcyBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkIHNlY29uZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTcKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAia2V0aWthIG1lbmdhbG9rYXNpa2FuIGJ1ZmZlciIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIk1lbnVsaXMgc3VwZXJibG9rIGRhbiBpbmZvcm1hc2kgYWt1bnRhc2kgc2lzdGVtIGJlcmthczogIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTEKK21zZ2lkICIiCisiXG4iCisiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIgorbXNnc3RyICIiCisiXG4iCisiUGVyaW5nYXRhbiwgbWVtaWxpa2kgbWFzYWxhaCBtZW51bGlzIGRpbHVhciBzdXBlcmJsb2suIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTMKK21zZ2lkICIiCisiZG9uZVxuIgorIlxuIgorbXNnc3RyICIiCisic2VsZXNhaVxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJiZXJrYXMgYmlhc2EiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIiIKKyJwZXJpbmdhdGFuOiAldSBibG9rIHRpZGFrIGRpZ3VuYWthbi5cbiIKKyJcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGh1Z2UgZmlsZSAlbHUiCittc2dzdHIgImtldGlrYSBtZW1wZXJvbGVoIGlub2RlIGJlcmlrdXRueWEiCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgIlBlbmdndW5hYW46IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBlbmdndW5hYW46ICVzIHBlcmFuZ2thdC4uLlxuIgorIlxuIgorIlRhbXBpbGthbiBpbmZvcm1hc2kgcGFydGlzaSB1bnR1ayBzZXRpYXAgcGVyYW5na2F0IHlhbmcgZGliZXJpa2FuLlxuIgorIkNvbnRvaDogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAidGlkYWsgZGFwYXQgbWVtYnVrYSAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVtcGVyb2xlaCBnZW9tZXRyeSBkYXJpICVzOyAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbXBlcm9sZWggdWt1cmFuIGRhcmkgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIGF3YWw9JThkIHVrdXJhbj0lOGx1IGFraGlyPSU2ZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTkKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIlRvbG9uZyBqYWxhbmthbiBlMmZzY2sgdW50dWsgc2lzdGVtIGJlcmthcy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiVG9sb25nIGphbGFua2FuIGUyZnNjayB1bnR1ayBzaXN0ZW0gYmVya2FzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlBlbmdndW5hYW46ICVzIFstYyBqdW1sYWhfbWF4X21vdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWcgZ3J1cF1cbiIKKyJcdFstdCBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIHBpbGloYW5fanVybmFsXSBbLWxdXG4iCisiXHRbLW0gcGVyc2VudGFzaV9yZXNlcnZlZF9ibG9rXSBbLW8gW15dcGlsaWhhbl9tb3VudFssLi4uXV0gXG4iCisiXHRbLXIganVtbGFoX3Jlc2VydmVkX2Jsb2tdIFstdSBwZW5nZ3VuYV0gWy1DIGp1bWxhaF9tb3VudF0gWy1MICIKKyJsYWJlbF92b2x1bWVdXG4iCisiXHRbLUUgcGlsaWhhbi10YW1iYWhhblssLi4uXV0gWy1UIHdha3R1X3RlcmFraGlyX2RpcGVyaWtzYV0gWy1VIFVVSURdXG4iCisiXHRbLUkgdWt1cmFuX2lub2RlX2JhcnVdIHBlcmFuZ2thdFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICJKdXJuYWwgc3VwZXJibG9rIHRpZGFrIGRpdGVtdWthbiFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgbWVtYnVrYSBqdXJuYWwgZXh0ZXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBidWthbiBzZWJ1YWggcGVyYW5na2F0IGp1cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgVVVJRCB0aWRhayBkaXRlbXVrYW4gZGFsYW0gcGVyYW5na2F0IGp1cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkp1cm5hbCBkaWhhcHVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAia2V0aWthIG1lbWJhY2EgYml0bWFwIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJrZXRpa2EgbWVuZ2hhcHVzIGlub2RlIGp1cm5hbCIKKworIzogbWlzYy90dW5lMmZzLmM6Mzg4Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyBpbm9kZSBqdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIihkYW4gcmVib290IHNldGVsYWggaW5pISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJUb2xvbmcgamFsYW5rYW4gJ2UyZnNjayAtZiAlcycgdGVybGViaWggZGFodWx1LlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIC16IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZGlzYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo5NzQKK21zZ2lkICIiCisiV0FSTklORzogQ291bGQgbm90IGNvbmZpcm0ga2VybmVsIHN1cHBvcnQgZm9yIG1ldGFkYXRhX2NzdW1fc2VlZC5cbiIKKyIgIFRoaXMgcmVxdWlyZXMgTGludXggPj0gdjQuNC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIk1lbmdoYXB1cyBmZWF0dXJlIHNpc3RlbSBiZXJrYXMgJyVzJyB0aWRhayBkaWxheWFuaS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIlRhdGFuYW4gZml0dXIgc2lzdGVtIGJlcmthcyAnJXMnIHRpZGFrIGRpbGF5YW5pLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkhhc19qb3VybmFsIGZlYXR1cmUgbXVuZ2tpbiBoYW55YSBiaXNhIGRpaGFwdXMga2V0aWthIHNpc3RlbSBiZXJrYXMgc2VkYW5nXG4iCisiZGltb3VudCBiYWNhLXNhamEgYXRhdSB0aWRhayBkaW1vdW50LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDMzCittc2dpZCAiIgorIlRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldC4gIFBsZWFzZSBydW4gZTJmc2NrIGJlZm9yZSBjbGVhcmluZ1xuIgorInRoZSBoYXNfam91cm5hbCBmbGFnLlxuIgorbXNnc3RyICIiCisiTmVlZHNfcmVjb3ZlcnkgZmxhZyBkaXNldC4gVG9sb25nIGphbGFua2FuIGUyZnNjayBzZWJlbHVtIG1lbmdoYXB1c1xuIgorImhhc19qb3VybmFsIGZsYWcuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJQZW5ndWJhaGFuIHVrdXJhbiBpbm9kZSB0aWRhayBkaWR1a3VuZyB1bnR1ayBzaXN0ZW0gYmVya2FzIGRlbmdhbiBmbGV4X2JnXG4iCisiZml0dXIgYWt0aWYuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKKyMsIGZ1enp5Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkh1Z2VfZmlsZSBmZWF0dXJlIGhhbnlhIGJvbGVoIGRpaGFwdXMga2V0aWthIHNpc3RlbSBiZXJrYXMgc2VkYW5nXG4iCisiZGltb3VudCBiYWNhLXNhamEgYXRhdSB0aWRhayBkaW1vdW50LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDgyCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaGFzIGJlZW4gZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgImtldGlrYSBtZW1iYWNhIGJpdG1hcCIKKworIzogbWlzYy90dW5lMmZzLmM6MTEwOAorIywgYy1mb3JtYXQKK21zZ2lkICJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90IG1hdGNoLiBleHBlY3RlZDogJXgsIGFjdHVhbDogJXhcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTEzCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAia2V0aWthIHNlZGFuZyBtZW1iYWNhIGlub2RlIGJsb2sgYnVydWsiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKyJNZW5naGFwdXMgZmxleF9iZyBmbGFnIGFrYW4gbWVuZ2FraWJhdGthbiBzaXN0ZW0gYmVya2FzIG1lbmphZGlcbiIKKyJ0aWRhayBrb25zaXN0ZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkh1Z2VfZmlsZSBmZWF0dXJlIGhhbnlhIGJvbGVoIGRpaGFwdXMga2V0aWthIHNpc3RlbSBiZXJrYXMgc2VkYW5nXG4iCisiZGltb3VudCBiYWNhLXNhamEgYXRhdSB0aWRhayBkaW1vdW50LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExODIKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUnVuIHJlc2l6ZTJmcyAtYiB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQ0CisjLCBmdXp6eQorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlBlbmd1YmFoYW4gdWt1cmFuIGlub2RlIHRpZGFrIGRpZHVrdW5nIHVudHVrIHNpc3RlbSBiZXJrYXMgZGVuZ2FuIGZsZXhfYmdcbiIKKyJmaXR1ciBha3RpZi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgdGVsYWggbWVtaWxpa2kgc2VidWFoIGp1cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdGtldGlrYSBtZW5jb2JhIHVudHVrIG1lbWJ1a2EganVybmFsIGRpICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiTWVtYnVhdCBqdXJuYWwgZGkgcGVyYW5na2F0ICVzOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWRkaW5nIGZpbGVzeXN0ZW0gdG8gam91cm5hbCBvbiAlcyIKK21zZ3N0ciAia2V0aWthIG1lbmFtYmFoa2FuIHNpc3RlbSBiZXJrYXMgZGkganVybmFsIGRpICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICJNZW1idWF0IGp1cm5hbCBpbm9kZTogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDYwCittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIGZpbGUiCittc2dzdHIgIiIKKyJcbiIKKyJcdGtldGlrYSBtZW5jb2JhIG1lbWJ1YXQgZmlsZSBqdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJrZXRpa2EgbWVuZ2luaXNpYWxpc2FzaSBqdXJuYWwgc3VwZXJibG9rIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBxdW90YSBsaW1pdHMgKCVkKSIKK21zZ3N0ciAia2V0aWthIG1lbXBlcmJhcnVpIGlub2RlIGJhZCBibG9jayIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgImtldGlrYSBtZW51bGlzIGlub2RlICVsdSBkYWxhbSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJrZXRpa2EgbWVtYmFjYSBpbm9kZSByb290IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgcGFyc2UgZGF0ZS90aW1lIHNwZWNpZmllcjogJXMiCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbXBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJqdW1sYWggbW91bnQgYnVydWsgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAibmFtYSBnaWQvZ3J1cCBidXJ1ayAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICJpbnRlcnZhbCBidXJ1ayAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICJyYXNpbyByZXNlcnZlZCBibG9rIGJ1cnVrIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gaGFueWEgYm9sZWggZGlzcGVzaWZpa2FzaWthbiBzZWthbGkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MDAKK21zZ2lkICItTyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLU8gaGFueWEgYm9sZWggZGlzcGVzaWZpa2FzaWthbiBzZWthbGkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrcyBjb3VudCAtICVzIgorbXNnc3RyICJqdW1sYWggcmVzZXJ2ZWQgYmxvayBidXJ1ayAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgIm5hbWEgdWlkL3BlbmdndW5hIGJ1cnVrIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAidWt1cmFuIGlub2RlIGJ1cnVrIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAiVWt1cmFuIGlub2RlIGhhcnVzIGtlbGlwYXRhbiBkYXJpIGR1YSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk3MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIk1lbnNldCBtYWtzaW1hbCBqdW1sYWggbW91bnQga2UgJWRcbiIKK21zZ3N0clsxXSAiTWVuc2V0IG1ha3NpbWFsIGp1bWxhaCBtb3VudCBrZSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCittc2dzdHIgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICJBbGdvcml0bWEgaGFzaCB0aWRhayB2YWxpZDogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJNZW5zZXQgZGVmYXVsdCBhbGdvcml0bWEgaGFzaCBrZSAlcyAoJWQpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwNTAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiUGlsaWhhbiBidXJ1ayBkaXNwZXNpZmlrYXNpa2FuLlxuIgorIlxuIgorIlBpbGloYW4gZXh0ZW5kZWQgZGlwaXNhaGthbiBvbGVoIGtvbWEsIGRhbiBib2xlaCBtZW5nYW1iaWwgYXJndW1lblxuIgorIlx0eWFuZyBkaSBzZXQgb2Ygb2xlaCBzZWJ1YWggdGFuZGEgc2FtYSBkZW5nYW4gKCc9JykuXG4iCisiXG4iCisiUGlsaWhhbiBleHRlbmRlZCB5YW5nIHZhbGlkIGFkYWxhaDpcbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayB1a3VyYW4gY2h1bmsgZGFsYW0gYmxvaz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrIGRhbGFtIGJsb2s+XG4iCisiXHRoYXNoX2FsZz08YWxnb3JpdG1hX2hhc2g+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICJrZXRpa2EgbWVtYmFjYSBiaXRtYXAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKKyMsIGZ1enp5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIm1lbWJhY2EgaW5vZGUgZGFuIGJsb2sgYml0bWFwIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJibG9rIGFrYW4gZGlwaW5kYWhrYW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIiIKKyJHYWdhbCB1bnR1ayBtZW5nYWxva2FzaWthbiBiaXRtYXAgYmxvayBrZXRpa2EgbWVuaW5na2F0a2FuIHVrdXJhbiBpbm9kZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICJUaWRhayBjdWt1cCBydWFuZyB1bnR1ayBtZW5pbmdrYXRrYW4gdWt1cmFuIGlub2RlIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICJHYWdhbCB1bnR1ayBtZW1pbmRhaGthbiBibG9rIGtldGlrYSBwZW5ndWJhaGFuIHVrdXJhbiBpbm9kZSBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU4NworbXNnaWQgIiIKKyJFcnJvciBpbiByZXNpemluZyB0aGUgaW5vZGUgc2l6ZS5cbiIKKyJSdW4gZTJ1bmRvIHRvIHVuZG8gdGhlIGZpbGUgc3lzdGVtIGNoYW5nZXMuIFxuIgorbXNnc3RyICIiCisiRXJyb3IgZGFsYW0gbWVuZ3ViYWggdWt1cmFuIGRhcmkgdWt1cmFuIGlub2RlLlxuIgorIkphbGFua2FuIGUydW5kbyB1bnR1ayB1bmRvIHBlcnViYWhhbiBzaXN0ZW0gYmVya2FzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5IHJ1bm5pbmc6XG4iCisiJ2UyZnNjayAtZiAlcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgYnVrYW4gc2VidWFoIHBlcmFuZ2thdCBqdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiVWt1cmFuIGlub2RlIHRlbGFoICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCisjLCBmdXp6eQorbXNnaWQgIlNocmlua2luZyBpbm9kZSBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIKK21zZ3N0ciAiTWVuZ2VjaWxrYW4gdWt1cmFuIGlub2RlIHlhbmcgdGlkYWsgZGlsYXlhbmlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICJ1a3VyYW4gaW5vZGUgdGlkYWsgdmFsaWQgJWQgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbWF4aW1hbCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICJNZW5zZXQgbWFrc2ltYWwganVtbGFoIG1vdW50IGtlICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIk1lbnNldCBqdW1sYWggbW91bnQgc2VrYXJhbmcga2UgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIk1lbnNldCBwZXJpbGFrdSBlcnJvciBrZSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAiTWVuc2V0IGdpZCByZXNlcnZlZCBibG9rIGtlICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICJNZW5zZXQgaW50ZXJ2YWwgZGlhbnRhcmEgY2hlY2sga2UgJWx1IGRldGlrXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICJNZW5zZXQgaW50ZXJ2YWwgZGlhbnRhcmEgY2hlY2sga2UgJWx1IGRldGlrXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnRhZ2UgdG8gJWclJSAoJWxsdSBibG9ja3MpXG4iCittc2dzdHIgIk1lbnNldCBwZXJzZW50YXNpIHJlc2VydmVkIGJsb2sga2UgJWclJSAoJXUgYmxvaylcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICJqdW1sYWggcmVzZXJ2ZWQgYmxvayB0ZXJsYWx1IGJlc2FyICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIk1lbnNldCBqdW1sYWggcmVzZXJ2ZWQgYmxvayBrZSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0MgorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBzcGFyc2Ugc3VwZXJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTaXN0ZW0gYmVya2FzIHRlbGFoIG1lbWlsaWtpIHNwYXJzZSBzdXBlcmJsb2suXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlBlbmd1YmFoYW4gdWt1cmFuIGlub2RlIHRpZGFrIGRpZHVrdW5nIHVudHVrIHNpc3RlbSBiZXJrYXMgZGVuZ2FuIGZsZXhfYmdcbiIKKyJmaXR1ciBha3RpZi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2sgZmxhZyBkaXNldC4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkNsZWFyaW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJNZW5naGFwdXMgc3BhcnNlIHN1cGVyZmxhZyB0aWRhayBkaWxheWFuaS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2OAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHRpbWUgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdG8gJXNcbiIKK21zZ3N0ciAiTWVuc2V0IHdha3R1IHNpc3RlbSBiZXJrYXMgdGVyYWtoaXIgZGlwZXJpa3NhIGtlICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICJNZW5zZXQgdWlkIHJlc2VydmVkIGJsb2sga2UgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAyNAorIywgZnV6enkKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIlVrdXJhbiBpbm9kZSBtdW5na2luIGFrYW4gYmVydWJhaCBrZXRpa2Egc2lzdGVtIGJlcmthcyB0aWRhayBkaW1vdW50LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBVVUlEIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJVa3VyYW4gaW5vZGUgbXVuZ2tpbiBha2FuIGJlcnViYWgga2V0aWthIHNpc3RlbSBiZXJrYXMgdGlkYWsgZGltb3VudC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAiSW52YWxpZCBmb3JtYXQgVVVJRFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCisjLCBmdXp6eQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAibWVtYmFjYSBqb3VybmFsIHN1cGVyYmxvY2tcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJVa3VyYW4gaW5vZGUgbXVuZ2tpbiBha2FuIGJlcnViYWgga2V0aWthIHNpc3RlbSBiZXJrYXMgdGlkYWsgZGltb3VudC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiUGVuZ3ViYWhhbiB1a3VyYW4gaW5vZGUgdGlkYWsgZGlkdWt1bmcgdW50dWsgc2lzdGVtIGJlcmthcyBkZW5nYW4gZmxleF9iZ1xuIgorImZpdHVyIGFrdGlmLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiTWVuc2V0IHVrdXJhbiBpbm9kZSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorIywgZnV6enkKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiR2FnYWwgdW50dWsgbWVtaW5kYWhrYW4gYmxvayBrZXRpa2EgcGVuZ3ViYWhhbiB1a3VyYW4gaW5vZGUgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJNZW5zZXQgdWt1cmFuIHN0cmlkZSBrZSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgIk1lbnNldCBsZWJhciBzdHJpcGUga2UgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICJNZW5zZXQganVtbGFoIG1vdW50IHNla2FyYW5nIGtlICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZSBqb3VybmFsIGlzIGRpcnR5LiBZb3UgbWF5IHdpc2ggdG8gcmVwbGF5IHRoZSBqb3VybmFsIGxpa2U6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisiYnkgam91cm5hbCByZWNvdmVyeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJSZWNvdmVyaW5nIGpvdXJuYWwuXG4iCittc2dzdHIgIiVzOiBtZXJlY292ZXJ5IGpvdXJuYWxcbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiSmFsYW5rYW4gc2FqYT8gKHksbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJKYWxhbmthbiBzYWphPyAoeSxuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICJta2UyZnMgZGlwYWtzYWthbiBzYWphLiBNdWRhaCBtdWRhaGFuIC9ldGMvbXRhYiB0aWRhayBiZW5hci5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICJ0aWRhayBha2FuIG1lbWJ1YXQgc2VidWFoICVzIGRpc2luaSFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIm1rZTJmcyBkaXBha3Nha2FuIHNhamEuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdhbG9rYXNpa2FuIG1lbW9yaSB1bnR1ayBtZW1wYXJzZSBwaWxpaGFuIGp1cm5hbCFcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiVGlkYWsgZGFwYXQgbWVuZW11a2FuIHBlcmFuZ2thdCBqdXJuYWwgeWFuZyBjb2NvayAlc1xuIgorCisjOiBtaXNjL3V0aWwuYzoyMTMKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiUGlsaWhhbiBqdXJuYWwgYnVydWsgZGlzcGVzaWZpa2FzaWthbi5cbiIKKyJcbiIKKyJQaWxpaGFuIGp1cm5hbCBkaXBpc2Foa2FuIGRlbmdhbiBrb21hLCBkYW4gYm9sZWggbWVuZ2d1bmFrYW4gYXJndW1lbiB5YW5nXG4iCisiXHRkaXNldCBvZmYgZGVuZ2FuIHNlYnVhaCB0YW5kYSBzYW1hIGRlbmdhbiAoJz0nKS5cbiIKKyJcbiIKKyJQaWxpaGFuIGp1cm5hbCB2YWxpZCBhZGFsYWg6XG4iCisiXHRzaXplPTx1a3VyYW4ganVybmFsIGRhbGFtIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08cGVyYW5na2F0IGp1cm5hbD5cbiIKKyJcbiIKKyJVa3VyYW4ganVybmFsIGhhcnVzIGRpYW50YXJhIDEwMjQgZGFuIDEwMjQwMDAwIGJsb2sgc2lzdGVtIGJlcmthcy5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIlNpc3RlbSBiZXJrYXMgdGVybGFsdSBrZWNpbCB1bnR1ayBzZWJ1YWgganVybmFsXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlVrdXJhbiBqdXJuYWwgeWFuZyBkaW1pbnRhIGFkYWxhaCAlZCBibG9rOyBpbmkgaGFydXMgYmVyYWRhXG4iCisiZGlhbnRhcmEgMTAyNCBkYW4gMTAyNDAwMDAgYmxvay4gTWVtYmF0YWxrYW4uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlVrdXJhbiBqdXJuYWwgdGVybGFsdSBiZXNhciB1bnR1ayBzaXN0ZW0gYmVya2FzLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorIlNpc3RlbSBiZXJrYXMgaW5pIGFrYW4gc2VjYXJhIG90b21hdGlzIGRpcGVyaWtzYSBzZXRpYXAgJWQgbW91bnRzIGF0YXVcbiIKKyIlZyBoYXJpLCB5YW5nIG1hbmEgeWFuZyBkYXRhbmcgbGViaWggZHVsdS4gR3VuYWthbiB0dW5lMmZzIC1jIGF0YXUgLWlcbiIKKyJ1bnR1ayBtZW5ndWJhaG55YS5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAta1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKKyMsIGZ1enp5Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAiJXM6IHRlcmxhbHUgYmFueWFrIGFyZ3VtZW5cbiIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjE5MgorbXNnaWQgIndyaXRlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDYKKyMsIGZ1enp5Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiUGFuamFuZyBzdHJpZGUgdGlkYWsgdmFsaWQiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAidXVpZGQgZGFlbW9uIGFscmVhZHkgcnVubmluZyBhdCBwaWQgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjcmVhdGUgdW5peCBzdHJlYW0gc29ja2V0OiAlcyIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVtcGFyc2UgZGF0ZS90aW1lIHNwZWNpZmllcjogJXMiCisKKyM6IG1pc2MvdXVpZGQuYzozMDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmdodWJ1bmdrYW4gJWk6ICVtXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGxpc3RlbiBvbiB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2h1YnVuZ2thbiAlaTogJW1cbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiRXJyb3IgbWVtYmFjYSBAaSAlaTogJW1cbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IG1pc2MvdXVpZGQuYzo0MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkICVkIFVVSUQnczpcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDMzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICJWZXJzaSBFQSB0aWRhayB2YWxpZC5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICJFcnJvciBtZW1idWF0IC9AbCBAZCAoJXMpOiAlbVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NDgKK21zZ2lkICJMaXN0IG9mIFVVSUQnczpcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZXhwZWN0ZWQgcmVwbHkgbGVuZ3RoIGZyb20gc2VydmVyICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjU4NgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBraWxsIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZ2VuLmM6MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcl0gWy10XVxuIgorbXNnc3RyICJQZW5nZ3VuYWFuOiAlcyBbLXJdIFstdF1cbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiMgRXh0ZW50IGR1bXA6XG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICIjXHROdW09JWQsIFVrdXJhbj0lZCwgQ3Vyc29yPSVkLCBTb3J0ZWQ9JWRcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBlbmdndW5hYW46ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIHBlcmFuZ2thdCAiCisiW3VrdXJhbl9iYXJ1XVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjcyCittc2dpZCAiRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTWVtcGVyYmVzYXIgdGFiZWwgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzUKK21zZ2lkICJSZWxvY2F0aW5nIGJsb2NrcyIKK21zZ3N0ciAiTWVtaW5kYWhrYW4gYmxvayIKKworIzogcmVzaXplL21haW4uYzo3OAorbXNnaWQgIlNjYW5uaW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJNZW1lcmlrc2EgdGFiZWwgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODEKK21zZ2lkICJVcGRhdGluZyBpbm9kZSByZWZlcmVuY2VzIgorbXNnc3RyICJNZW1wZXJiYXJ1aSByZWZlcmVuc2kgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIk1lbWluZGFoa2FuIHRhYmVsIGlub2RlIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJUYWhhcCB0aWRhayBkaWtldGFodWk/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICJBd2FsIHRhaGFwICVkIChtYXggPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzozNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyIKK21zZ3N0ciAia2V0aWthIG1lbWJ1a2EgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgImtldGlrYSBtZW1wZXJvbGVoIGluZm9ybWFzaSBzdGF0aXN0aWsgdW50dWsgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisiVG9sb25nIGphbGFua2FuICdlMmZzY2sgLWYgJXMnIHRlcmxlYmloIGRhaHVsdS5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAiRXN0aW1hc2kgbWluaW11bSBkYXJpIHVrdXJhbiBzaXN0ZW0gYmVya2FzOiAldVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG5ldyBzaXplOiAlc1xuIgorbXNnc3RyICJVa3VyYW4gaW5vZGUgYmFydSB0aWRhayB2YWxpZDogJXNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiTmV3IHNpemUgc21hbGxlciB0aGFuIG1pbmltdW0gKCVsbHUpXG4iCittc2dzdHIgIlVrdXJhbiBiYXJ1IGxlYmloIGtlY2lsIGRhcmlwYWRhIG1pbmltdW0gKCV1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiUGFuamFuZyBzdHJpZGUgdGlkYWsgdmFsaWQiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTU4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiUGFydGlzaSAoYXRhdSBwZXJhbmdrYXQpIGhhbnlhIGJlcmlzaSAldSAoJWRrKSBibG9rLlxuIgorIkFuZGEgbWVtaW50YSB1a3VyYW4gYmFydSAldSBibG9rLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIiCisiVWt1cmFuIGlub2RlIG11bmdraW4gYWthbiBiZXJ1YmFoIGtldGlrYSBzaXN0ZW0gYmVya2FzIHRpZGFrIGRpbW91bnQuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuICBOb3RoaW5nIHRvIGRvIVxuIgorIlxuIgorbXNnc3RyICIiCisiU2lzdGVtIGJlcmthcyB0ZWxhaCBtZW1pbGlraSBwYW5qYW5nICV1IGJsb2suIFRpZGFrIGFkYSB5YW5nIGhhcnVzICIKKyJkaWxha3VrYW4gIVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgdGVsYWggbWVtaWxpa2kgc2VidWFoIGp1cm5hbC5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJTaXN0ZW0gYmVya2FzIHRlbGFoIG1lbWlsaWtpIHNlYnVhaCBqdXJuYWwuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiTWVuc2V0IHdha3R1IHNpc3RlbSBiZXJrYXMgdGVyYWtoaXIgZGlwZXJpa3NhIGtlICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDMyLWJpdC5cbiIKK21zZ3N0ciAiTWVuc2V0IHdha3R1IHNpc3RlbSBiZXJrYXMgdGVyYWtoaXIgZGlwZXJpa3NhIGtlICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiTWVuZ3ViYWggc2lzdGVtIGJlcmthcyBkaSAlcyBrZSAldSAoJWRrKSBibG9rLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVzaXplICVzIgorbXNnc3RyICJrZXRpa2EgbWVuY29iYSB1bnR1ayBtZW5ndWJhaCB1a3VyYW4gJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWZ5ICVzJyB0byBmaXggdGhlIGZpbGVzeXN0ZW1cbiIKKyJhZnRlciB0aGUgYWJvcnRlZCByZXNpemUgb3BlcmF0aW9uLlxuIgorbXNnc3RyICIiCisiTW9ob24gamFsYW5rYW4gJ2UyZnNjayAtZnkgJXMnIHVudHVrIG1lbWJldHVsa2FuIHNpc3RlbSBiZXJrYXNcbiIKKyJzZXRlbGFoIHBlbWJhdGFsYW4gb3BlcmFzaSBwZW5ndWJhaGFuIHVrdXJhbi5cbiIKKworIzogcmVzaXplL21haW4uYzo2MzAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBvbiAlcyBpcyBub3cgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlNpc3RlbSBiZXJrYXMgZGkgJXMgc2VrYXJhbmcgbWVtaWxpa2kgcGFuamFuZyAldSBibG9rLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIHVudHVrIG1lbW90b25nICVzIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKKyMsIGZ1enp5Cittc2dpZCAia2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6ZSB3aXRoIHNwYXJzZV9zdXBlcjIiCittc2dzdHIgIktlcm5lbCB0aWRhayBtZWxheWFuaSBvbmxpbmUgcmVzaXppbmciCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiU2lzdGVtIGJlcmthcyBkaSAlcyBkaW1vdW50IGRpICVzOyBvbi1saW5lIHJlc2l6aW5nIGRpYnV0dWhrYW5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCisjLCBmdXp6eQorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIk9uLWxpbmUgc2hyaW5raW5nIGRhcmkgJXUga2UgJXUgdGlkYWsgZGlsYXlhbmkuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJTaXN0ZW0gYmVya2FzIHRpZGFrIG1lbGF5YW5pIG9ubGluZSByZXNpemluZyIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorIywgZnV6enkKK21zZ2lkICJOb3QgZW5vdWdoIHJlc2VydmVkIGdkdCBibG9ja3MgZm9yIHJlc2l6aW5nIgorbXNnc3RyICJrZXRpa2EgbWVucmVzZXJ2ZSBibG9rIHVudHVrIG9ubGluZSByZXNpemUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjkKKyMsIGZ1enp5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICJLZXJuZWwgdGlkYWsgbWVsYXlhbmkgb25saW5lIHJlc2l6aW5nIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgImtldGlrYSBtZW5jb2JhIG1lbWJ1a2EgbW91bnRwb2ludCAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIklqaW4gZGl0b2xhayBrZXRpa2EgbWVuZ3ViYWggdWt1cmFuIHNpc3RlbSBiZXJrYXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIktldGlrYSBtZW1lcmlrc2EgdW50dWsgbGF5YW5hbiBvbi1saW5lIHJlc2l6aW5nIgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJLZXJuZWwgdGlkYWsgbWVsYXlhbmkgb25saW5lIHJlc2l6aW5nIgorCisjOiByZXNpemUvb25saW5lLmM6MjIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICJNZW5qYWxhbmthbiBzZWJ1YWggb24tbGluZSByZXNpemUgZGFyaSAlcyBrZSAldSAoJWRrKSBibG9rLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiS2V0aWthIG1lbmNvYmEgdW50dWsgbWVuZ2V4dGVuIGdydXAgdGVyYWtoaXIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIktldGlrYSBtZW5jb2JhIHVudHVrIG1lbmFtYmFoa2FuIGdydXAgIyVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiU2lzdGVtIGJlcmthcyBkaSAlcyBkaW1vdW50IGRpICVzLCBkYW4gb24tbGluZSByZXNpemluZyB0aWRhayBkaXN1cHBvcnQgZGkgIgorInN5c3RlbSBpbmkuXG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5vZGVzICglbGx1KSBtdXN0IGJlIGxlc3MgdGhhbiAldSIKK21zZ3N0ciAiaW5vZGUgKCVsbHUpIGhhcnVzIGxlYmloIGtlY2lsIGRhcmkgJXUiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJyZXNlcnZlZCBibG9rIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgIm1ldGEtZGF0YSBibG9rIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworIywgZnV6enkKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgIm1ldGEtZGF0YSBibG9rIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0MAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBObyBzYiBpbiBsYXN0IHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjYxOAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW46IHJlc2l6ZSBpbm9kZSBjb3JydXB0IVxuIgorbXNnc3RyICJTZWhhcnVzbnlhIHRpZGFrIHBlcm5haCB0ZXJqYWRpOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCittc2dpZCAiRVhUMkZTIExpYnJhcnkgdmVyc2lvbiAxLjQzLjIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB0ZXN0IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZSBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IGhhbmRsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKKyMsIGZ1enp5Cittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAibWVtYmFjYSBqb3VybmFsIHN1cGVyYmxvY2tcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzMKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiLCBHcnVwIGRlc2tyaXBzaSBkaSAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorIywgZnV6enkKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiLCBHcnVwIGRlc2tyaXBzaSBkaSAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4CisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAibWVudWxpcyBpbm9kZSBiaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOQorIywgZnV6enkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAibWVudWxpcyBpbm9kZSBiaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorIywgZnV6enkKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAibWVtYmFjYSBpbm9kZSBkYW4gYmxvayBiaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MQorIywgZnV6enkKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJtZW1iYWNhIGlub2RlIGRhbiBibG9rIGJpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJrZXRpa2EgbWVudWxpcyB0YWJlbCBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIk1lbWVyaWtzYSB0YWJlbCBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorIywgZnV6enkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgbGViaWggYmVzYXIgZGFyaSB1a3VyYW4gcGVyYW5na2F0IHlhbmcgdGVybGloYXQuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUwCisjLCBmdXp6eQorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICIsIElub2RlIGJpdG1hcCBkaSAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MQorIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiICBCbG9rIGJpdG1hcCBkaSAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciIKK21zZ3N0ciAiTm9tb3IgZGFyaSBibG9jayB0aWRhayBsZWdhbCFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIgorbXNnc3RyICJOb21vciBkYXJpIGJsb2NrIHRpZGFrIGxlZ2FsIVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTQKK21zZ2lkICJJbnRlcm5hbCBlcnJvciBpbiBleHQyZnNfZXhwYW5kX2RpciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKKyMsIGZ1enp5Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICJUaWRhayBjdWt1cCBydWFuZyB1bnR1ayBtZW5pbmdrYXRrYW4gdWt1cmFuIGlub2RlIFxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTYKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKKyMsIGZ1enp5Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiYmxvayB0aWRhayBsYW5nc3VuZyBiZXJkdWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiYmxvayB0aWRhayBsYW5nc3VuZyBiZXJkdWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiYmxvayB0aWRhayBsYW5nc3VuZyBiZXJ0aWdhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKKyMsIGZ1enp5Cittc2dpZCAiQmxvY2sgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICIgIEJsb2sgYml0bWFwIGRpICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiLCBJbm9kZSBiaXRtYXAgZGkgIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzAKK21zZ2lkICJBIGJsb2NrIGdyb3VwIGlzIG1pc3NpbmcgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzQKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKKyMsIGZ1enp5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiJXMgbWVtaWxpa2kgZmVhdHVyZSB5YW5nIHRpZGFrIGRpc3VwcG9ydDoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorIywgZnV6enkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiJXMgbWVtaWxpa2kgZmVhdHVyZSB5YW5nIHRpZGFrIGRpc3VwcG9ydDoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKKyMsIGZ1enp5Cittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICJBZXJyb3IgbWVuZ2Fsb2thc2lrYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODMKKyMsIGZ1enp5Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIHRpcGUgc2lzdGVtIGJlcmthc1xuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKKyMsIGZ1enp5Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIHRpcGUgc2lzdGVtIGJlcmthc1xuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg5CisjLCBmdXp6eQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiRGlyZWt0b3JpIGJsb2NrICV1ICgjJWQpIGtvc29uZyBkYWxhbSBpbm9kZSAldVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk0CisjLCBmdXp6eQorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiTWVuZ2d1bmFrYW4gcGVyYW5na2F0IGp1cm5hbCB1a3VyYW5ibG9rOiAlZFxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiSnVybmFsIHN1cGVyYmxvayB0aWRhayBkaXRlbXVrYW4hXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTcKK21zZ2lkICJVbnN1cHBvcnRlZCBqb3VybmFsIHZlcnNpb24iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk4CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAia2V0aWthIG1lbmNvYmEgbWVtYnVrYSBqdXJuYWwgZXh0ZXJuYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorIywgZnV6enkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiSnVybmFsIHN1cGVyYmxvayB0aWRhayBkaXRlbXVrYW4hXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAxCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiYWV4dGVuZGVkIGF0dHJpYnV0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorIywgZnV6enkKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAiPGlub2RlIGRlc2tyaXBzaSBncnVwPiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKKyMsIGZ1enp5Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICIiCisiR2FnYWwgdW50dWsgbWVuZ2Fsb2thc2lrYW4gYml0bWFwIGJsb2sga2V0aWthIG1lbmluZ2thdGthbiB1a3VyYW4gaW5vZGVcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorIywgZnV6enkKK21zZ2lkICJUREI6IEludmFsaWQgcGFyYW1ldGVyIgorbXNnc3RyICJQYXJhbWV0ZXIgc3RyaWRlIHRpZGFrIHZhbGlkOiAlc1xuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE1Cittc2dpZCAiVERCOiBSZWNvcmQgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IHNhdmVkIHBhdGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMwCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaGVhZGVyIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMworbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gZXh0ZW50IG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNQorIywgZnV6enkKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJ4ZXh0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQxCittc2dpZCAiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCisjLCBmdXp6eQorbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIi9AbCB0aWRhayBkaXRlbXVrYW4uICAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorbXNnaWQgIk1NUDogZmlsZXN5c3RlbSBzdGlsbCBpbiB1c2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCittc2dzdHIgIjxpbm9kZSBkZXNrcmlwc2kgZ3J1cD4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTcKK21zZ2lkICJJbm9kZSBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiwgSW5vZGUgYml0bWFwIGRpICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKKyMsIGZ1enp5Cittc2dpZCAiU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrIgorbXNnc3RyICJDYWRhbmdhbiBzdXBlcmJsb2sgZGlzaW1wYW4gZGkgYmxvazogIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NQorbXNnaWQgIk1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NgorbXNnaWQgIkV4dDIgZmlsZSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIiwgSW5vZGUgYml0bWFwIGRpICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTczCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIgorbXNnc3RyICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzUKK21zZ2lkICJGaWxlc3lzdGVtIGlzIG1pc3NpbmcgZXh0X2F0dHIgb3IgaW5saW5lX2RhdGEgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc4Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODMKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0CisjLCBmdXp6eQorbXNnaWQgIldyb25nIHVuZG8gZmlsZSBmb3IgdGhpcyBmaWxlc3lzdGVtIgorbXNnc3RyICJJamluIGRpdG9sYWsga2V0aWthIG1lbmd1YmFoIHVrdXJhbiBzaXN0ZW0gYmVya2FzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1CisjLCBmdXp6eQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiU2lzdGVtIGJlcmthcyBsZWJpaCBiZXNhciBkYXJpIHVrdXJhbiBwZXJhbmdrYXQgeWFuZyB0ZXJsaWhhdC4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJKdXJuYWwgc3VwZXJibG9rIHRpZGFrIGRpdGVtdWthbiFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIlNpc3RlbSBiZXJrYXMgbGViaWggYmVzYXIgZGFyaSB1a3VyYW4gcGVyYW5na2F0IHlhbmcgdGVybGloYXQuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEyCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEzCisjLCBmdXp6eQorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgImtldGlrYSBtZW1idWF0IC9sb3N0K2ZvdW5kIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0CisjLCBmdXp6eQorbXNnaWQgIlByb2ZpbGUgcmVsYXRpb24gbm90IGZvdW5kIgorbXNnc3RyICJrZXRpa2EgbWVtYnVhdCAvbG9zdCtmb3VuZCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcHJvZmlsZV9zZWN0aW9uIG9iamVjdCIKK21zZ3N0ciAiUGlsaWhhbiBzaXN0ZW0gYmVya2FzIHRpZGFrIHZhbGlkIGRpc2V0OiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworIywgZnV6enkKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiVGlkYWsgZGFwYXQgbWVueWFsaW4gZmlsZTogJW1cbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKK21zZ3N0ciAiUGFuamFuZyBzdHJpZGUgdGlkYWsgdmFsaWQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIG9uICVzIgorbXNnc3RyICJqdW1sYWggbW91bnQgYnVydWsgLSAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAianVtbGFoIG1vdW50IGJ1cnVrIC0gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRm91bmQgYSAlcyBwYXJ0aXRpb24gdGFibGUgaW4gJXNcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICJiZXJrYXMgYmlhc2EiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgInRpZGFrIGRhcGF0IG1lbWJ1a2EgJXM6ICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiUGVyYW5na2F0IGtlbGloYXRhbm55YSB0aWRhayBhZGE7IGFwYWthaCBhbmRhIG1lbnNwZXNpZmlrYXNpa2FubnlhIGRlbmdhbiAiCisiYmVuYXI/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgYnVrYW4gc2VidWFoIHBlcmFuZ2thdCBibG9rIHNwZXNpYWwuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAnJXMnXG4iCittc2dzdHIgIiBiZXJpc2kgc2VidWFoIGZpbGUgc3lzdGVtIGRlbmdhbiBlcnJvcnMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIgYmVyaXNpIHNlYnVhaCBmaWxlIHN5c3RlbSBkZW5nYW4gZXJyb3JzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGAlcycgZGF0YVxuIgorbXNnc3RyICIgYmVyaXNpIHNlYnVhaCBmaWxlIHN5c3RlbSBkZW5nYW4gZXJyb3JzIgorCisjfiBtc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCisjfiBtc2dzdHIgIlRvbG9uZyBqYWxhbmthbiBlMmZzY2sgdW50dWsgc2lzdGVtIGJlcmthcy5cbiIKKworIywgZnV6enkKKyN+IG1zZ2lkICJJbnZhbGlkIHF1b3RhdHlwZSBwYXJhbWV0ZXI6ICVzXG4iCisjfiBtc2dzdHIgIlBhcmFtZXRlciBzdHJpZGUgdGlkYWsgdmFsaWQ6ICVzXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICJAaSAlaSBtZW1pbGlraSBAY2lvbiBmbGFnIHRlcnNldCBwYWRhIEBmIHRhbnBhIGxheWFuYW4gQGNpb24uICAiCisKKyN+IG1zZ2lkICJAQSBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAiQEEgQGEgQGIgJWIuICAiCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICJQZXJpbmdhdGFuOiBzdXBwb3J0IHVudHVrIGtvbXByZXNpIGFkYWxhaCBleHBlcmltZW50YWwuXG4iCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiIgorI34gIiVzOiBlMmZzY2sgbm90IGNvbXBpbGVkIHdpdGggSFRSRUUgc3VwcG9ydCxcbiIKKyN+ICJcdGJ1dCBmaWxlc3lzdGVtICVzIGhhcyBIVFJFRSBkaXJlY3Rvcmllcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkUyZnNjayB0aWRhayBkaWtvbXBpbGFzaSBkZW5nYW4gbGF5YW5hbiBIVFJFRSxcbiIKKyN+ICJcdCB0ZXRhcGkgc2lzdGVtIGJlcmthcyAlcyBtZW1pbGlraSBkaXJla3RvcmkgSFRSRUUuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHplcm9pemluZyBidWZmZXIiCisjfiBtc2dzdHIgImtldGlrYSBtZW5nYWxva2FzaWthbiB6ZXJvaXppbmcgYnVmZmVyIgorCisjLCBmdXp6eQorI34gbXNnaWQgIiwgdW51c2VkIGlub2RlcyAldVxuIgorI34gbXNnc3RyICIsICV1IGlub2RlIHlhbmcgdGlkYWsgZGlndW5ha2FuXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVhZCB0aGUgZmlsZSBzeXN0ZW0gZGF0YSBcbiIKKyN+IG1zZ3N0ciAiR2FnYWwgbWVtYmFjYSBkYXRhIGZpbGVzeXN0ZW0gXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX2ZldGNoICVzXG4iCisjfiBtc2dzdHIgIkdhZ2FsIHRkYl9mZXRjaCAlc1xuIgorCisjfiBtc2dpZCAiVGhlIGZpbGUgc3lzdGVtIFVVSUQgZGlkbid0IG1hdGNoIFxuIgorI34gbXNnc3RyICJTaXN0ZW0gYmVya2FzIFVVSUQgdGlkYWsgY29jb2sgXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX29wZW4gJXNcbiIKKyN+IG1zZ3N0ciAiR2FnYWwgdGRiX29wZW4gJXNcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0byBvcGVuICVzXG4iCisjfiBtc2dzdHIgIkdhZ2FsIG1lbWJ1a2EgJXNcbiIKKworIywgZnV6enkKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgIkJhbGFzYW4gdWt1cmFuIHRyYW5zYWtzaSAlemQgZGkgbG9rYXNpICVsZFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHdyaXRlICVzXG4iCisjfiBtc2dzdHIgIkdhZ2FsIG1lbnVsaXMgJXNcbiIKKworIywgZnV6enkKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIKKyN+IG1zZ3N0ciAiVGlkYWsgZGFwYXQgbWVuZ2Fsb2thc2lrYW4gbWVtb3JpIHVudHVrIG1lbXBhcnNlIHBpbGloYW4hXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRkYiBmaWxlbmFtZVxuIgorI34gbXNnc3RyICJUaWRhayBkYXBhdCBtZW5nYWxva2FzaWthbiBtZW1vcmkgdW50dWsgbmFtYSBiZXJrYXMgdGRiXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiVG8gdW5kbyB0aGUgdHVuZTJmcyBvcGVyYXRpb24gcGxlYXNlIHJ1biB0aGUgY29tbWFuZFxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlVudHVrIG1lbmdlbWJhbGlrYW4gb3BlcmFzaSB0dW5lMmZzIG1vaG9uIGphbGFua2FuIHBlcmludGFoXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorCisjfiBtc2dpZCAiJXMgaXMgZW50aXJlIGRldmljZSwgbm90IGp1c3Qgb25lIHBhcnRpdGlvbiFcbiIKKyN+IG1zZ3N0ciAiJXMgYWRhbGFoIHNlbHVydWggcGVyYW5na2F0bSBidWthbiBoYW55YSBzZWJ1YWggcGFydGlzaSFcbiIKKworI34gbXNnaWQgIkNsZWFyaW5nIGV4dGVudCBmbGFnIG5vdCBzdXBwb3J0ZWQgb24gJXMiCisjfiBtc2dzdHIgIk1lbmdoYXB1cyB0YW5kYSBla3N0ZW5zaSB5YW5nIHRpZGFrIGRpZHVrdW5nIGRpICVzIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJXMgLS0tICVzXG4iCisjfiBtc2dzdHIgIlRpZGFrIGRhcGF0IG1lbGFrdWthbiBzdGF0aXN0aWsgJXMgLS0tICVzXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IFRoZSBjb21iaW5hdGlvbiBvZiBmbGV4X2JnIGFuZFxuIgorI34gIlx0IXJlc2l6ZV9pbm9kZSBmZWF0dXJlcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHJlc2l6ZTJmcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBLb21iaW5hc2kgZGFyaSBmbGV4X2JnIGRhblxuIgorI34gIlx0IXJlc2l6ZV9pbm9kZSBmZWF0dXJlcyB0aWRhayBkaWxheWFuaSBvbGVoIHJlc2l6ZTJmcy5cbiIKKworI34gbXNnaWQgIjxUaGUgQUNMIGluZGV4IGlub2RlPiIKKyN+IG1zZ3N0ciAiPEFDTCBpbmRleCBpbm9kZT4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBkYXRhIGlub2RlPiIKKyN+IG1zZ3N0ciAiPEFDTCBkYXRhIGlub2RlPiIKKworI34gbXNnaWQgIkBnICVnIEBiIEBCIHVuaW5pdGlhbGl6ZWQgYnV0IEBpIEBCIGluIHVzZS5cbiIKKyN+IG1zZ3N0ciAiQGcgJWcgQGIgQEIgdGlkYWsgdGVyaW5pdGlhbGlzYXNpIHRldGFwaSBAaSBAQiBzZWRhbmcgZGlndW5ha2FuLlxuIgorCisjfiBtc2dpZCAiQGkgJWkgc2hvdWxkIG5vdCBoYXZlIEVPRkJMT0NLU19GTCBzZXQgKHNpemUgJUlzLCBsYmxrICVyKVxuIgorI34gbXNnc3RyICJAaSAlaSBzZWhhcnVzbnlhIEVPRkJMT0NLU19GTCB0aWRhayBha3RpZiAodWt1cmFuICVJcywgbGJsayAlcilcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGRldGVybWluZSBqb3VybmFsIHNpemUiCisjfiBtc2dzdHIgIlRpZGFrIGRhcGF0IG1lbmVudHVrYW4gdWt1cmFuIGp1cm5hbCIKKworI34gbXNnaWQgInNob3J0IHdyaXRlIChvbmx5ICVkIGJ5dGVzKSBmb3Igd3JpdGluZyBpbWFnZSBoZWFkZXIiCisjfiBtc2dzdHIgIm1lbnVsaXMgcGVuZGVrIChoYW55YSAlZCBieXRlcykgdW50dWsgbWVudWxpcyBoZWFkZXIgaW1hZ2UiCisKKyN+IG1zZ2lkICJpbnZhbGlkIGZyYWdtZW50IHNpemUgLSAlcyIKKyN+IG1zZ3N0ciAidWt1cmFuIHBvdG9uZ2FuL2ZyYWdtZW4gdGlkYWsgdmFsaWQgLSAlcyIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIlBlcmluZ2F0YW46IGZyYWdtZW50IHRpZGFrIGRpbGF5YW5pLiBNZW5nYWJhaWthbiBwaWxpaGFuIC1mXG4iCisKKyN+IG1zZ2lkICJDYWxsaW5nIEJMS0RJU0NBUkQgZnJvbSAlbGx1IHRvICVsbHUgIgorI34gbXNnc3RyICJNZW1hbmdnaWwgQkxLRElTQ0FSRCBkYXJpICVsbHUga2UgJWxsdSAiCisKKyN+IG1zZ2lkICJzdWNjZWVkZWQuXG4iCisjfiBtc2dzdHIgImJlcmhhc2lsLlxuIgorCisjfiBtc2dpZCAiSm91cm5hbCBOT1QgcmVtb3ZlZFxuIgorI34gbXNnc3RyICJKdXJuYWwgVElEQUsgZGloYXB1c1xuIgorCisjfiBtc2dpZCAiI1x0XHQgJXUgLT4gJXUgKCVkKVxuIgorI34gbXNnc3RyICIjXHRcdCAldSAtPiAldSAoJWQpXG4iCisKKyN+IG1zZ2lkICJTZXR0aW5nIHNpc3RlbSBiZXJrYXMgZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCisjfiBtc2dzdHIgIk1lbnNldCBzaXN0ZW0gYmVya2FzIGZlYXR1cmUgJyVzJyB0aWRhayBkaWxheWFuaS5cbiIKKworI34gbXNnaWQgIkBTIGRvZXNuJ3QgaGF2ZSBoYXNfQGogZmxhZywgYnV0IGhhcyBleHQzIEBqICVzLlxuIgorI34gbXNnc3RyICJAUyB0aWRhayBtZW1pbGlraSBAaiB0YW5kYSwgdGV0YXBpIG1lbWlsaWtpIGV4dDMgQGogJXMuXG4iCisKKyN+IG1zZ2lkICJSZWNyZWF0ZSBqb3VybmFsIHRvIG1ha2UgdGhlIGZpbGVzeXN0ZW0gZXh0MyBhZ2Fpbj9cbiIKKyN+IG1zZ3N0ciAiTWVtYnVhdCBrZW1iYWxpIGp1cm5hbCB1bnR1ayBtZW1idWF0IHNpc3RlbSBiZXJrYXMgZXh0MyBsYWdpP1xuIgorCisjfiBtc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gd3JpdGUgYmxvY2sgYml0bWFwcyBmb3IgJXMiCisjfiBtc2dzdHIgImtldGlrYSBzZWRhbmcgbWVuY29iYSB1bnR1ayBtZW51bGlzIGJsb2sgYml0bWFwIHVudHVrICVzIgorCisjfiBtc2dpZCAiJXMgZmFpbGVkIGZvciAlczogJXNcbiIKKyN+IG1zZ3N0ciAiJXMgZ2FnYWwgdW50dWsgJXM6ICVzXG4iCisKKyN+IG1zZ2lkICJvcGVuIgorI34gbXNnc3RyICJidWthIgorCisjfiBtc2dpZCAiSERJT19HRVRHRU8gaW9jdGwiCisjfiBtc2dzdHIgIkhESU9fR0VUR0VPIGlvY3RsIgorCisjfiBtc2dpZCAiQkxLR0VUU0laRSBpb2N0bCIKKyN+IG1zZ3N0ciAiQkxLR0VUU0laRSBpb2N0bCIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9pbnNlcnQtaGVhZGVyLnNpbiBiL2UyZnNwcm9ncy9wby9pbnNlcnQtaGVhZGVyLnNpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjZkZTAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL2luc2VydC1oZWFkZXIuc2luCkBAIC0wLDAgKzEsMjMgQEAKKyMgU2VkIHNjcmlwdCB0aGF0IGluc2VydHMgdGhlIGZpbGUgY2FsbGVkIEhFQURFUiBiZWZvcmUgdGhlIGhlYWRlciBlbnRyeS4KKyMKKyMgQXQgZWFjaCBvY2N1cnJlbmNlIG9mIGEgbGluZSBzdGFydGluZyB3aXRoICJtc2dpZCAiLCB3ZSBleGVjdXRlIHRoZSBmb2xsb3dpbmcKKyMgY29tbWFuZHMuIEF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlLCBpbnNlcnQgdGhlIGZpbGUuIEF0IHRoZSBmb2xsb3dpbmcKKyMgb2NjdXJyZW5jZXMsIGRvIG5vdGhpbmcuIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZworIyBvY2N1cnJlbmNlcyBpcyBhY2hpZXZlZCBieSBsb29raW5nIGF0IHRoZSBob2xkIHNwYWNlLgorL15tc2dpZCAveworeAorIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5Lgorcy9tL20vCit0YQorIyBZZXMgaXQgd2FzIGVtcHR5LiBGaXJzdCBvY2N1cnJlbmNlLiBSZWFkIHRoZSBmaWxlLgorciBIRUFERVIKKyMgT3V0cHV0IHRoZSBmaWxlJ3MgY29udGVudHMgYnkgcmVhZGluZyB0aGUgbmV4dCBsaW5lLiBCdXQgZG9uJ3QgbG9zZSB0aGUKKyMgY3VycmVudCBsaW5lIHdoaWxlIGRvaW5nIHRoaXMuCitnCitOCitiYgorOmEKKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCit4Cis6YgorfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2l0LmdtbyBiL2UyZnNwcm9ncy9wby9pdC5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzY2UwOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9pdC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL2l0LnBvIGIvZTJmc3Byb2dzL3BvL2l0LnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4OTI3NzIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vaXQucG8KQEAgLTAsMCArMSw4NDA3IEBACisjIEl0YWxpYW4gdHJhbnNsYXRpb24gZm9yIGUyZnNwcm9ncworIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTMgMjAxNCBUaGVvZG9yZSBUc28gKG1zZ2lkcykKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIyBBbmRyZWEgU3BhZGFjY2luaSA8bHVwaW44NUBlbWFpbC5pdD4sIDIwMDQKKyMgTWFyY28gQ29sb21ibyA8bS5jb2xvbWJvQGVkLmFjLnVrPiwgMjAwNAorIyBNaWxvIENhc2FncmFuZGUgPG1pbG9AbWlsby5uYW1lPiwgMjAxMy4KKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MtMS40Mi4xMFxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wNS0zMSAxNjowOSswMTAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBNaWxvIENhc2FncmFuZGUgPG1pbG9AbWlsby5uYW1lPlxuIgorIkxhbmd1YWdlLVRlYW06IEl0YWxpYW4gPHRwQGxpc3RzLmxpbnV4Lml0PlxuIgorIkxhbmd1YWdlOiBpdFxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuIT0xKTtcbiIKKyJYLUdlbmVyYXRvcjogUG9lZGl0IDEuNi41XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJCbG9jY28gbm9uIHZhbGlkbyAldSBmdW9yaSBkYWxsJ2ludGVydmFsbG87IGlnbm9yYXRvLlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgIm5lbCBjb250cm9sbGFyZSBsJ2ludGVncml0w6AgZGVnbGkgaW5vZGUgZGVpIGJsb2NjaGkgZGFubmVnZ2lhdGkiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgIm5lbCBsZWdnZXJlIGdsaSBpbm9kZSBkZWkgYmxvY2NoaSBkYW5uZWdnaWF0aSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjcyIGUyZnNjay9zY2FudGVzdC5jOjEwNyBlMmZzY2svdW5peC5jOjE1MDgKKyM6IGUyZnNjay91bml4LmM6MTYwMSBtaXNjL2JhZGJsb2Nrcy5jOjEyNDIgbWlzYy9iYWRibG9ja3MuYzoxMjUwCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyNjQgbWlzYy9iYWRibG9ja3MuYzoxMjc2IG1pc2MvZHVtcGUyZnMuYzo2ODkKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDAgbWlzYy9lMmltYWdlLmM6MTU4NCBtaXNjL2UyaW1hZ2UuYzoxNjA1CisjOiBtaXNjL21rZTJmcy5jOjIzMCBtaXNjL3R1bmUyZnMuYzoyNjkzIG1pc2MvdHVuZTJmcy5jOjI3ODcgcmVzaXplL21haW4uYzo0MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJXMiCittc2dzdHIgIm5lbGwnYXByaXJlICVzIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgIm5lbGwnZXNlZ3VpcmUgcG9wZW4gc3UgXCIlc1wiIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgIm5lbCBsZWdnZXJlIGwnZWxlbmNvIGRpIGJsb2NjaGkgZGFubmVnZ2lhdGkgZGEgZmlsZSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAibmVsbCdhZ2dpb3JuYXJlIGwnaW5vZGUgZGkgdW4gYmxvY2NvIGRhbm5lZ2dpYXRvIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgQ2xlYXJlZC5cbiIKK21zZ3N0ciAiIgorIkF0dGVuemlvbmU6IGJsb2NjbyAldSBub24gdmFsaWRvIHRyb3ZhdG8gbmVsbCdpbm9kZSBkaSB1biBibG9jY28gIgorImRhbm5lZ2dpYXRvLiBBenplcmF0by5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJyb3JlIG5lbCBsZWdnZXJlIGlsIGJsb2NjbyAlbHUgKCVzKSBtZW50cmUgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkVycm9yZSBuZWwgbGVnZ2VyZSBpbCBibG9jY28gJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSWdub3JhIGwnZXJyb3JlIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIkZvcnphIGxhIHJpc2NyaXR0dXJhIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRXJyb3JlIG5lbGxvIHNjcml2ZXJlIGlsIGJsb2NjbyAlbHUgKCVzKSBtZW50cmUgJXMuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiRXJyb3JlIG5lbGxvIHNjcml2ZXJlIGlsIGJsb2NjbyAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgImJsb2NjaGkgZGlyZWN0b3J5IHZ1b3RpIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo2MgorbXNnaWQgImVtcHR5IGRpciBtYXAiCittc2dzdHIgIm1hcHBhIGRpcmVjdG9yeSB2dW90YSIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIkJsb2NjbyBkaXJlY3RvcnkgJXUgKCMlZCkgdnVvdG8gbmVsbCdpbm9kZSAldVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzOiAlcyBub21lZmlsZSBuYmxvY2NoaSBkaW1fYmxvY2NvXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIk51bWVybyBkaSBibG9jY2hpIG5vbiB2YWxpZG8uXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgIkltcG9zc2liaWxlIGFsbG9jYXJlIGlsIGJ1ZmZlciBibG9jY28gKGRpbWVuc2lvbmU9JWQpXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKKyMsIGZ1enp5Cittc2dpZCAiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIgorbXNnc3RyICJtYXBwYSBkZWdsaSBpbm9kZSBkZWkgZmlsZSByZWdvbGFyaSIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIlVzbzogJXMgZGlzY29cbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiSW9jdGwgQkxLRkxTQlVGIG5vbiBzdXBwb3J0YXRhOiBpbXBvc3NpYmlsZSBzdnVvdGFyZSBpIGJ1ZmZlci5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICJVc286ICVzIFstRl0gWy1JIGJsb2NjaGlfYnVmZmVyX2lub2RlXSBkZXZpY2VcbiIKKworIzogZTJmc2NrL2lzY2FuLmM6ODEgZTJmc2NrL3VuaXguYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMgZm9yIGZsdXNoaW5nIgorbXNnc3RyICJuZWxsJ2FwcmlyZSAlcyBwZXIgbG8gc3Z1b3RhbWVudG8iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgIm5lbCB0ZW50YXJlIGxvIHN2dW90YW1lbnRvIGRpICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAibmVsIHRlbnRhcmUgZGkgYXByaXJlIFwiJXNcIiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTE5IGUyZnNjay9zY2FudGVzdC5jOjExNCBtaXNjL2UyaW1hZ2UuYzoxMjkzCittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJuZWxsJ2F2dmlhcmUgbCdhbmFsaXNpIGRlZ2xpIGlub2RlIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAibmVsIHJlY3VwZXJhcmUgbCdpbm9kZSBzdWNjZXNzaXZvIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiV1IGlub2RlIGFuYWxpenphdGkuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NTkzCittc2dpZCAicmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAibGV0dHVyYSBkZWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWxcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlczogbm9uIMOoIHN0YXRvIHRyb3ZhdG8gdW4gc3VwZXJibG9jY28gdmFsaWRvIGRlbCBqb3VybmFsXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogam91cm5hbCB0cm9wcG8gY29ydG9cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiByaXByaXN0aW5vIGRlbCBqb3VybmFsXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogaW1wb3NzaWJpbGUgcmlwcml0aW5hcmUgaWwgam91cm5hbCBpbiBtb2RhbGl0w6Agc29sYSBsZXR0dXJhXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJuZWwgdGVudGFyZSBkaSByaWFwcmlyZSAlcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhYXR0cmlidXRvIGVzdGVzbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAiQWVycm9yZSBuZWxsJ2FsbG9jYXJlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2NjbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTYKK21zZ2lkICJCYml0bWFwIgorbXNnc3RyICJCYml0bWFwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY2NvbXByaW1pIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDdmEgaW4gY29uZmxpdHRvIGNvbiBhbHRyaSBibG9jY2hpIG5lbCBmaWxlIHN5c3RlbSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkZGlyZWN0b3J5IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEZWxpbWluYXRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZWVsZW1lbnRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMgorbXNnaWQgIkVAZSAnJURuJyBpbiAlcCAoJWkpIgorbXNnc3RyICJFQGUgXCIlRG5cIiBpbiAlcCAoJWkpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMworbXNnaWQgImZmaWxlc3lzdGVtIgorbXNnc3RyICJmZmlsZSBzeXN0ZW0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGcGVyIGwnQGkgJWkgKCVRKSDDqCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjUKK21zZ2lkICJnZ3JvdXAiCittc2dzdHIgImdncnVwcG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoQGkgZGVsbGEgQGQgSFRSRUUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklpbGxlZ2FsZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiampvdXJuYWwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImxsb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMQorbXNnaWQgIkxpcyBhIGxpbmsiCittc2dzdHIgIkzDqCB1biBjb2xsZWdhbWVudG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCisjLCBmdXp6eQorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtYXBwYSBkZWdsaSBpbm9kZSByaWNoaWVzdGEgcGnDuSB2b2x0ZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibm5vbiB2YWxpZG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJvb3JmYW5vIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwcHJvYmxlbWEgaW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICJxcXVvdGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgInJAaSByb290IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNkb3ZyZWJiZSBlc3NlcmUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIlNzdXBlci1AYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAidW5vbiBjb2xsZWdhdG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidmRldmljZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDIKK21zZ2lkICJ4ZXh0ZW50IgorbXNnc3RyICJ4ZXh0ZW50IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiemx1bmdoZXp6YS16ZXJvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjxJbm9kZSBOVUxMPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8SW5vZGUgZGVpIGJsb2NjaGkgZGFubmVnZ2lhdGk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NworbXNnaWQgIjxUaGUgdXNlciBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxJbm9kZSBkZWxsYSBxdW90YSB1dGVudGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorbXNnaWQgIjxUaGUgZ3JvdXAgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8SW5vZGUgZGVsbGEgcXVvdGEgZGVsIGdydXBwbz4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxJbm9kZSBkZWwgYm9vdCBsb2FkZXI+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPElub2RlIGRlbGxhIGRpcmVjdG9yeSB1bmRlbGV0ZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPElub2RlIGRlbCBkZXNjcml0dG9yZSBkaSBncnVwcG8+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MgorbXNnaWQgIjxUaGUgam91cm5hbCBpbm9kZT4iCittc2dzdHIgIjxJbm9kZSBkZWwgam91cm5hbD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYzCittc2dpZCAiPFJlc2VydmVkIGlub2RlIDk+IgorbXNnc3RyICI8SW5vZGUgcmlzZXJ2YXRvIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxJbm9kZSByaXNlcnZhdG8gMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAiZmlsZSByZWdvbGFyZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzUKK21zZ2lkICJkaXJlY3RvcnkiCittc2dzdHIgImRkaXJlY3RvcnkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAiZGV2aWNlIGEgY2FyYXR0ZXJpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAiZGV2aWNlIGEgYmxvY2NoaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKKyMsIGZ1enp5Cittc2dpZCAibmFtZWQgcGlwZSIKK21zZ3N0ciAicGlwZSBjb24gbm9tZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJjb2xsZWdhbWVudG8gc2ltYm9saWNvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NSBtaXNjL3V1aWRkLmM6MTYyCittc2dpZCAic29ja2V0IgorbXNnc3RyICJzb2NrZXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgInRpcG8gZGkgZmlsZSBzY29ub3NjaXV0byBjb24gbW9kYWxpdMOgIDAlbyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjIKK21zZ2lkICJpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvY2NvIGluZGlyZXR0byIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjQKK21zZ2lkICJkb3VibGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb2NjbyBkb3BwaW8gaW5kaXJldHRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNgorbXNnaWQgInRyaXBsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvY2NvIHRyaXBsbyBpbmRpcmV0dG8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAiYmxvY2NvIHRyYWR1dHRvcmUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAiYmxvY2NvIG7CsCAiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwcGEgZGVnbGkgaW5vZGUgcmljaGllc3RhIHBpw7kgdm9sdGUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgImVycm9yZSBpbnRlcm5vOiBpbXBvc3NpYmlsZSB0cm92YXJlIGR1cF9ibGsgcGVyICVsbHVcbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkwMworbXNnaWQgInJldHVybmVkIGZyb20gY2xvbmVfZmlsZV9ibG9jayIKK21zZ3N0ciAicml0b3JuYXRvIGRhIGNsb25lX2ZpbGVfYmxvY2siCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgIkVycm9yZSBpbnRlcm5vOiBpbXBvc3NpYmlsZSB0cm92YXJlIGlsIGJsb2NjbyBFQSBwZXIgJWxsdSIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGlub2RlIHJlY29yZCBmb3IgJXUiCittc2dzdHIgIkVycm9yZSBpbnRlcm5vOiBpbXBvc3NpYmlsZSB0cm92YXJlIGwnaW5vZGUgRUEgcGVyICV1IgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgImxldHR1cmEgYmxvY2NvIGRpcmVjdG9yeSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIGluIHVzbyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIGRlbGxlIGRpcmVjdG9yeSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIGRlaSBmaWxlIHJlZ29sYXJpIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTQxIG1pc2MvZTJpbWFnZS5jOjEyNjgKK21zZ2lkICJpbi11c2UgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBwYSBkZWkgYmxvY2NoaSBpbiB1c28iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKKyMsIGZ1enp5Cittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJibG9jY2hpIGRpIG1ldGEtZGF0aSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiaW5pemlvIGFuYWxpc2kgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJyZWN1cGVybyBpbm9kZSBzdWNjZXNzaXZvIGRhbGwnYW5hbGlzaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTkzMworbXNnaWQgIlBhc3MgMSIKK21zZ3N0ciAiUGFzc28gMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAibGV0dHVyYSBkZWkgYmxvY2NoaSBpbmRpcmV0dGkgZGVsbCdpbm9kZSAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIG5vbiB2YWxpZGEiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJpbm9kZSBuZWxsYSBtYXBwYSBkZWkgYmxvY2NoaSBkYW5uZWdnaWF0aSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIGltYWdpYyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBwYSBkZWkgYmxvY2NoaSByaWNoaWVzdGEgcGnDuSB2b2x0ZSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICJiaXRtYXAgZGVsIGJsb2NjbyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAiYml0bWFwIGRlbGwnaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAidGFiZWxsYSBkZWxsJ2lub2RlIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlBhc3NvIDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJJbXBvc3NpYmlsZSBjb250aW51YXJlLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICJNZW1vcmlhIGRpIHBpY2NvIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIlBhc3NvIDMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorIywgZnV6enkKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgIm1hcHBhIGRlaSBiaXQgZGVsIGNpY2xvIGRpIHJpbGV2YW1lbnRvIGlub2RlIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIlBhc3NvIDQiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICJQYXNzbyA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIobmVzc3VuIHByb21wdCkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIkNvcnJlZ2dpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIkF6emVyYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJSaWNvbGxvY2EiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiQWxsb2NhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2Cittc2dpZCAiRXhwYW5kIgorbXNnc3RyICJFc3BhbmRpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3Cittc2dpZCAiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiQ29sbGVnYSBhIC9sb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJDcmVhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAiUmVjdXBlcmEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiVHJvbmNhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIkF6emVyYSBpbm9kZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICJBbm51bGxhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzCittc2dpZCAiU3BsaXQiCittc2dzdHIgIkRpdmlkaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJDb250aW51YSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorIywgZnV6enkKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAibWFwcGEgZGVpIGJsb2NjaGkgcmljaGllc3RhIHBpw7kgdm9sdGUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiRWxpbWluYSBmaWxlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIlNvcHByaW1pIG1lc3NhZ2dpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4Cittc2dpZCAiVW5saW5rIgorbXNnc3RyICJTY29sbGVnYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OQorbXNnaWQgIkNsZWFyIEhUcmVlIGluZGV4IgorbXNnc3RyICJBenplcmEgbCdpbmRpY2UgSFRyZWUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiUmljcmVhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoTkVTU1VOTykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAiQ09SUkVUVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICJBWlpFUkFUTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAiUklDT0xMT0NBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkFMTE9DQVRPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0Cittc2dpZCAiRVhQQU5ERUQiCittc2dzdHIgIkVTUEFOU08iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODUKK21zZ2lkICJSRUNPTk5FQ1RFRCIKK21zZ3N0ciAiUklDT0xMRUdBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICJDUkVBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAiUkVDVVBFUkFUTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAiVFJPTkNBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkKK21zZ2lkICJJTk9ERSBDTEVBUkVEIgorbXNnc3RyICJJTk9ERSBBWlpFUkFUTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIklOVEVSUk9UVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiRElWSVNPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAiQ09OVElOVUEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMKKyMsIGZ1enp5Cittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJDTE9OQVRJIEJMT0NDSEkgRFVQTElDQVRJL05PTiBWQUxJREkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkZJTEUgRUxJTUlOQVRPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiU09QUFJFU1NPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIlNDT0xMRUdBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICJJTkRJQ0UgSFRSRUUgQVpaRVJBVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICJSSUNSRUVSw4AiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMAorbXNnaWQgIkBiIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIkBCIGRlbCBAYiBwZXIgaWwgQGcgJWcgbm9uIMOoIGluIEBnLiAoQGIgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIkBCIGRlbGwnQGkgcGVyIGlsIEBnICVnIG5vbiDDqCBpbiBAZy4gKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJMYSB0YXZvbGEgZGVnbGkgQGkgcGVyIGlsIEBnICVnIG5vbiDDqCBpbiBAZy4gKEBiICViKVxuIgorIkFUVEVOWklPTkU6IFNPTk8gUE9TU0lCSUxJIE5PVEVWT0xJIFBFUkRJVEUgREkgREFUSS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1CisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIklsIEBTIMOoIGlsbGVnZ2liaWxlLCBvIG5vbiBkZXNjcml2ZSB1biBjb3JyZXR0byBAZiBleHQyXG4iCisiU2UgaWwgQHYgw6ggdmFsaWRvIGUgY29udGllbmUgcmVhbG1lbnRlIHVuIEBmIGV4dDJcbiIKKyIoZSBub24gc3dhcCwgdWZzIG8gYWx0cm8pLCBhbGxvcmEgaWwgQFMgw6ggY29ycm90dG8sIGUgc2kgcG90cmViYmVcbiIKKyJwcm92YXJlIGFkIGVzZWd1aXJlIGUyZnNjayBjb24gdW4gQFMgYWx0ZXJuYXRpdm86XG4iCisiICAgIGUyZnNjayAtYiAlUyA8QHY+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIkxhIGRpbWVuc2lvbmUgZGVsIEBmIChzZWNvbmRvIGlsIEBTKSDDqCAlYiBAYihpKVxuIgorIkxhIGRpbWVuc2lvbmUgZmlzaWNhIGRlbCBAdiDDqCAlYyBAYihpKVxuIgorIsOIIHByb2JhYmlsZSBjaGUgaWwgQFMgbyBsYSB0YXZvbGEgZGVsbGUgcGFydGl6aW9uaSBzaWFubyBjb3Jyb3R0aSFcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisiRGltZW5zaW9uZSBkZWwgQGIgZGVsIEBTID0gJWIsIGRpbWVuc2lvbmUgZnJhbW1lbnRvID0gJWMuXG4iCisiUXVlc3RhIHZlcnNpb25lIGRpIGUyZnNjayBub24gc3VwcG9ydGEgZGltZW5zaW9uaSBkaSBmcmFtbWVudG9cbiIKKyJkaWZmZXJlbnRpIGRhbGxhIGRpbWVuc2lvbmUgZGVsIEBiLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJAUyBAYihpKV9wZXJfZ3J1cHBvID0gJWIsIGF2cmViYmUgZG92dXRvIGVzc2VyZSAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorIywgZnV6enkKK21zZ2lkICJAUyBmaXJzdF9kYXRhX0BiID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiUHJpbW8gQGIgY29udGVuZW50ZSBkYXRpIGRlbCBAUyA9ICViLCBhdnJlYmJlIGRvdnV0byBlc3NlcmUgJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiaWwgQGYgbm9uIGF2ZXZhIHVuIFVVSUQ7IGdlbmVyYXppb25lIGRpIHVuIFVVSUQuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk5vdGE6IHNlIG1vbHRlIG1hcHBlIGRlaSBiaXQgZGVnbGkgaW5vZGUgbyBkZWkgYmxvY2NoaVxuIgorInJpY2hpZWRvbm8gaWwgcmlsb2NhbWVudG8sIG8gdW5hIHBhcnRlIGRlbGxhIHRhdm9sYSBkZWdsaVxuIgorImlub2RlIGRldmUgZXNzZXJlIHNwb3N0YXRhLCBzaSBwdcOyIHByaW1hIHByb3ZhcmUgYWQgZXNlZ3VpcmVcbiIKKyJlMmZzY2sgY29uIGwnb3B6aW9uZSAnLWIgJVMnLiBJbCBwcm9ibGVtYSBwb3RyZWJiZSByaXNpZWRlcmVcbiIKKyJuZWwgZGVzY3JpdHRvcmUgZGkgZ3J1cHBvIGRlaSBibG9jY2hpIHByaW1hcmlvLCBlZCBpbCBkZXNjcml0dG9yZVxuIgorImRpIGdydXBwbyBkZWkgYmxvY2NoaSBwb3RyZWJiZSBlc3NlcmUgT0suXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICJUcm92YXRhIGNvcnJ1emlvbmUgbmVsIEBTLiAoJXMgPSAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIkVycm9yZSBkZXRlcm1pbmFuZG8gbGEgZGltZW5zaW9uZSBkZWwgQHYgZmlzaWNvOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0CisjLCBmdXp6eQorbXNnaWQgIkBpIGNvdW50IGluIEBTIGlzICVpLCBAcyAlai5cbiIKK21zZ3N0ciAiSWwgbnVtZXJvIGRpIEBpIGluIEBTIMOoICVpLCBkb3ZyZWJiZSBlc3NlcmUgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSWwga2VybmVsIEh1cmQgbm9uIHN1cHBvcnRhIGxhIGNhcmF0dGVyaXN0aWNhIGZpbGV0eXBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlICVpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICJJbCBAUyBoYSB1biBAaiBleHQzIG5vbiB2YWxpZG8gKEBpICVpKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbSB1c2VycyAodW5zdXBwb3J0ZWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBtdWx0aXBsZSBAZiB1c2VycyAodW5zdXBwb3J0ZWQpLlxuIgorbXNnc3RyICJJbCBAaiBlc3Rlcm5vIGhhIGRpdmVyc2kgdXRlbnRpIGRlbCBAZiAobm9uIHN1cHBvcnRhdG8pLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIkltcG9zc2liaWxlIHRyb3ZhcmUgaWwgQGogZXN0ZXJub1xuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiSWwgQGogZXN0ZXJubyBoYSB1biBAUyBub24gdmFsaWRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiSWwgQGogZXN0ZXJubyBub24gc3VwcG9ydGEgcXVlc3RvIEBmXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gam91cm5hbCBzdXBlcmJsb2NrIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgam91cm5hbCAKKyMuIEAtZXhwYW5kZWQ6IGZvcm1hdC5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE4CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiSWwgQFMgZGVsIEBqIGV4dDMgw6ggZGVsIHRpcG8gc2Nvbm9zY2l1dG8gJU4gKG5vbiBzdXBwb3J0YXRvKS5cbiIKKyJFJyBwcm9iYWJpbGUgY2hlIHF1ZXN0YSBjb3BpYSBkaSBlMmZzY2sgc2lhIHZlY2NoaWEgZS9vIG5vbiBzdXBwb3J0aSBxdWVzdG8gIgorImZvcm1hdG8gZGkgQGouXG4iCisiRScgYW5jaGUgcG9zc2liaWxlIGNoZSBpbCBAUyBkZWwgQGogc2lhIGNvcnJvdHRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKKyMsIGZ1enp5Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiSWwgQFMgZGVsIEBqIGV4dDMgw6ggY29ycm90dG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorIywgZnV6enkKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiSWwgQFMgaGEgaWwgZmxhZyBleHQzIG5lZWRzX3JlY292ZXJ5IGltcG9zdGF0bywgbWEgbm9uIGhhIEBqLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorIywgZnV6enkKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIklsIEBTIGhhIGlsIGZsYWcgZXh0MyBuZWVkc19yZWNvdmVyeSBpbXBvc3RhdG8sIG1hIG5vbiBoYSBAai5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKKyMsIGZ1enp5Cittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICJmbGFnIGRlbCByZWN1cGVybyBleHQzIHB1bGl0bywgbWEgaWwgQGogY29udGllbmUgYW5jb3JhIGRhdGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIkF6emVyYXJlIEBqIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kYWxpdMOgPSVJbSwgZGltZW5zaW9uZT0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKKyMsIGZ1enp5Cittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiQGIgQEkgIyVCICglYikgdHJvdmF0byBpbiB1biBAaSBAbyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2CisjLCBmdXp6eQorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJHacOgIGF6emVyYXRvIGlsIEBiICMlQiAoJWIpIHRyb3ZhdG8gaW4gdW4gQGkgQG8gJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgIkBpIEBvIEBJICVpIG5lbCBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJAaSBASSAlaSBuZWxsYSBsaXN0YSBkZWdsaSBAaSBAby5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4MQorIywgZnV6enkKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIklsIEBTIGRlbCBAaiBleHQzIGhhIGltcG9zdGF0byBpbCBmbGFnIGEgc29sYSBsZXR0dXJhIGRpIHVuYSBjYXJhdHRlcmlzdGljYSAiCisic2Nvbm9zY2l1dGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKKyMsIGZ1enp5Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJJbCBAUyBkZWwgQGogZXh0MyBoYSBpbXBvc3RhdG8gaWwgZmxhZyBkaSB1bmEgY2FyYXR0ZXJpc3RpY2Egbm9uICIKKyJjb21wYXRpYmlsZS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICJWZXJzaW9uZSBkZWwgQGogbm9uIHN1cHBvcnRhdGEgZGEgcXVlc3RvIGUyZnNjay5cbiIKKworIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiU3Bvc3RhbWVudG8gZGkgQGogZGEgLyVzIGFsbCdpbm9kZSBuYXNjb3N0by5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRXJyb3JlIHNwb3N0YW5kbyBAajogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2CisjLCBmdXp6eQorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJUcm92YXRpIGRlaSBjYW1waSBWMiBkZWwgQFMgZGVsIEBqIG5vbiB2YWxpZGkgKGRhbCBqb3VybmFsIFYxKS5cbiIKKyJQdWxpdHVyYSBkZWkgY2FtcGkgYWwgZGkgbMOgIGRlbCBAUyBkZWwgQGogVjEuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUnVuIGpvdXJuYWwgYW55d2F5CisjOiBlMmZzY2svcHJvYmxlbS5jOjMxMgorbXNnaWQgIlJ1biBAaiBhbnl3YXkiCittc2dzdHIgIkVzZWd1aXJlIEBqIGNvbXVucXVlIgorCisjLiBALWV4cGFuZGVkOiBSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIHN1cGVyYmxvY2ssIHNvIHJ1bm5pbmcgam91cm5hbCBhbnl3YXkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzE3Cittc2dpZCAiUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBAUywgc28gcnVubmluZyBAaiBhbnl3YXkuXG4iCittc2dzdHIgIkZsYWcgZGkgcmVjdXBlcm8gbm9uIGltcG9zdGF0byBuZWwgQFMgZGkgYmFja3VwLCBlc2VndW8gQGogY29tdW5xdWUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyJFc2VjdXppb25lIGRlbCBiYWNrdXAgZGVsbCdpbmZvcm1hemlvbmUgQGogQGkgQGIuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemVfaW5vZGUgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzMworbXNnaWQgIlJlc2l6ZV9AaSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgQGkgaXMgbm9uLXplcm8uICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzgKKyMsIGZ1enp5Cittc2dpZCAiUmVzaXplIEBpIG5vdCB2YWxpZC4gICIKK21zZ3N0ciAiTCdAciBub24gw6ggdW5hIEBkLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDMKK21zZ2lkICIiCisiQFMgbGFzdCBtb3VudCB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBMYXN0IGdyb3VwIGJsb2NrIGJpdG1hcCB1bmluaXRpYWxpemVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3NworbXNnaWQgIkxhc3QgQGcgQGIgQEIgdW5pbml0aWFsaXplZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogT25lIG9yIG1vcmUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDAzCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorIywgZnV6enkKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIkltcG9zdGF6aW9uZSBkZWwgbnVtZXJvIGRpIGJsb2NjaGkgcmlzZXJ2YXRpIGEgJWx1XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKKyMsIGZ1enp5Cittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIG51bWVybyBkaSBibG9jY2hpIHJpc2VydmF0aSBhICVsdVxuIgorCisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4Cittc2dpZCAiTWFraW5nIEBxIEBpICVpICglUSkgaGlkZGVuLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX29wZW4yOiAlbVxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKKyMsIGZ1enp5Cittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAiSWwgY2hlY2tzdW0gZGVsIGJsb2NjbyBNTVAgbm9uIGNvcnJpc3BvbmRlIGFsIGJsb2NjbyBNTVAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3CisjLCBmdXp6eQorbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICJJbCBjaGVja3N1bSBkZWwgc3VwZXItYmxvY2NvIG5vbiBjb3JyaXNwb25kZSBhbCBzdXBlci1ibG9jY28iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJQYXNzbyAxOiBDb250cm9sbG8gZGkgQGksIEBiKGkpIGUgZGltZW5zaW9uaVxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiTCdAciBub24gw6ggdW5hIEBkLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiIgorIkwnQHIgaGEgaWwgZHRpbWUgaW1wb3N0YXRvIChwcm9iYWJpbG1lbnRlIGEgY2F1c2EgZGkgdW4gdmVjY2hpbyBta2UyZnMpLiIKKworIy4gQC1leHBhbmRlZDogUmVzZXJ2ZWQgaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwOAorIywgZnV6enkKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJMJ0BpIHJpc2VydmF0byAlaSAlUSBoYSB1bmEgbW9kYWxpdMOgIGVycmF0YS4gIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiTCdAaSBARCAgJWkgaGEgZHRpbWUgemVyby4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiTCdAaSAlaSDDqCBpbiB1c28sIG1hIGhhIGlsIGR0aW1lIGltcG9zdGF0by4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiTCdAaSAlaSDDqCB1bmEgQGQgYSBAei4gIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIkxhIEBCIGRlaSBAYihpKSBkZWwgQGcgJWcgYSAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICJMYSBAQiBkZWdsaSBAaSBkZWwgQGcgJWcgYSAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSB0YWJsZSBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzOAorbXNnaWQgIkBnICVnJ3MgQGkgdGFibGUgYXQgJWIgQEMuXG4iCittc2dzdHIgIkxhIHRhdm9sYSBkZWdsaSBAaSBkZWwgQGcgJWcgYSAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiTGEgQEIgZGVpIEBiKGkpIGRlbCBAZyAlZyAoJWIpIG5vbiDDqCB2YWxpZGEuICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiTGEgQEIgZGVnbGkgQGkgZGVsIEBnICVnICglYikgbm9uIMOoIHZhbGlkYS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9zaXplIGlzICVJcywgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfc2l6ZSDDqCAlSXMsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKKyMsIGZ1enp5Cittc2dpZCAiQGkgJWksIGlfQGJzIGlzICVJYiwgQHMgJU4uICAiCittc2dzdHIgIkBpICVpLCBpX2Jsb2NrcyDDqCAlSWIsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKKyMsIGZ1enp5Cittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiQGIgQEkgIyVCICglYikgbmVsbCdAaSAlaS4gIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIkwnQGkgJWkgaGEgQGIoaSkgaWxsZWdhbGkuICIKKworIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IGlsbGVnYWwgQGJzIGluIEBpICVpLlxuIgorbXNnc3RyICJUcm9wcGkgQGIoaSkgaWxsZWdhbGkgaW4gQGkgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCisjLCBmdXp6eQorbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJAYiBASSAjJUIgKCViKSBuZWxsJ0BpIGRlbCBAYiBub24gdmFsaWRvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKKyMsIGZ1enp5Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJMJ0BpIGRlbCBAYiBub24gdmFsaWRvIGhhIEBiKGkpIGlsbGVnYWxpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJAYiBkdXBsaWNhdG8gbyBub24gdmFsaWRvIGluIHVzbyFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorIywgZnV6enkKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIklsIEBiICViIHVzYSBjb21lIEBpIGRlbCBAYiBub24gdmFsaWRvIHVuIEBiIGluZGlyZXR0by4gIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbgorIy4gQC1leHBhbmRlZDogc2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaW4gdGhlIGZpbGVzeXN0ZW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAzCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJMJ0BpIGRlbCBAYiBub24gdmFsaWRvIMOoIHN0YXRvIHByb2JhYmlsbWVudGUgY29ycm90dG8uIEUnIGNvbnNpZ2xpYWJpbGVcbiIKKyJmZXJtYXJzaSBvcmEgZWQgZXNlZ3VpcmUgZTJmc2NrIC1jIHBlciBjZXJjYXJlIGJsb2NjaGkgbm9uIHZhbGlkaVxuIgorIm5lbCBAZi5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IElmIHRoZSBibG9jayBpcyByZWFsbHkgYmFkLCB0aGUgZmlsZXN5c3RlbSBjYW4gbm90IGJlIGZpeGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxMAorbXNnaWQgIiIKKyJcbiIKKyJJZiB0aGUgQGIgaXMgcmVhbGx5IGJhZCwgdGhlIEBmIGNhbiBub3QgYmUgZml4ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTZSBpbCBAYiDDqCBtb2x0byBjb3Jyb3R0bywgaWwgQGYgbm9uIHB1w7IgZXNzZXJlIHJpcGFyYXRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBZb3UgY2FuIHJlbW92ZSB0aGlzIGJsb2NrIGZyb20gdGhlIGJhZCBibG9jayBsaXN0IGFuZCBob3BlXG4KKyMuIEAtZXhwYW5kZWQ6IHRoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjE1CisjLCBmdXp6eQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisiRScgcG9zc2liaWxlIGVsaW1pbmFyZSBxdWVzdG8gQGIgKGUgc3BlcmFyZSBpbCBtZWdsaW8pIGRhbGxhXG4iCisibGlzdGEgZGVpIEBiKGkpIG5vbiB2YWxpZGksIGUgc3BlcmFyZSBjaGUgc2lhIGRhdnZlcm8gYSBwb3N0bywgbWFcbiIKKyJub24gY2kgc29ubyBnYXJhbnppZS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiSWwgQFMgcHJpbWFyaW8gKCViKSDDqCBuZWxsYSBsaXN0aSBkZWkgQGIoaSkgbm9uIHZhbGlkaS5cbiIKKworIy4gQC1leHBhbmRlZDogQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjI2Cittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIiIKKyJJbCBibG9jY28gJWIgbmVpIGRlc2NyaXR0b3JpIHByaW1hcmkgZGVsIEBnIMOoIG5lbGxhIGxpc3RhIGRlaSBAYihpKSBub24gIgorInZhbGlkaVxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIHN1cGVyYmxvY2sgKCViKSBpcyBiYWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMyCittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBAUyAoJWIpIGlzIGJhZC5cbiIKK21zZ3N0ciAiQXR0ZW56aW9uZTogSWwgQFMgKCViKSBkZWwgZ3J1cHBvICVnIG5vbiDDqCB2YWxpZG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3CisjLCBmdXp6eQorbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJBdHRlbnppb25lOiBMYSBjb3BpYSBkZWkgZGVzY3JpdHRvcmkgZGkgQGcgZGVsIGdydXBwbyAlZyBoYSB1biBAYiAoJWIpIG5vbiAiCisidmFsaWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBQcm9ncmFtbWluZyBlcnJvcj8gIGJsb2NrICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQzCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I/ICBAYiAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX0BiLlxuIgorbXNnc3RyICIiCisiRXJyb3JlIGRpIHByb2dyYW1tYXppb25lPyBAYiAjJWIgcmVjbGFtYXRvIHNlbnphIHJhZ2lvbmUgaW4gcHJvY2Vzc19iYWRfQGIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5CisjLCBmdXp6eQorbXNnaWQgIkBBICVOIGNvbnRpZ3VvdXMgQGIocykgaW4gQGIgQGcgJWcgZm9yICVzOiAlbVxuIgorbXNnc3RyICJAQSAlTiBAYihpKSBjb250aWd1aSBuZWwgQGcgZGkgQGIgJWcgcGVyICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAiQEEgaWwgYnVmZmVyIEBiIHBlciBsYSByaWxvY2F6aW9uZSBkaSAlc1xuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgIlJpbG9jYXppb25lIGRlbCAlcyBkZWwgQGcgJWcgZGEgJWIgYSAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICJSaWxvY2F6aW9uZSBkZWwgJXMgZGVsIEBnICVnIGluICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrICViIG9mICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2OQorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIEBiICViIG9mICVzOiAlbVxuIgorbXNnc3RyICJBdHRlbnppb25lOiBpbXBvc3NpYmlsZSBsZWdnZXJlIEBiICViIGRpICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgYmxvY2sgJWIgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3NAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBAYiAlYiBmb3IgJXM6ICVtXG4iCittc2dzdHIgIkF0dGVuemlvbmU6IGltcG9zc2liaWxlIHNjcml2ZXJlIEBiICViIHBlciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgbGEgQEIgZGVsbCdAaSAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorIywgZnV6enkKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBsYSBAQiBkZWxsJ0BpICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbiIKK21zZ3N0ciAiQEEgbGUgaW5mb3JtYXppb25pIGRlbCBjb2xsZWdhbWVudG8gaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGRpcmVjdG9yeSBibG9jayBhcnJheTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJAQSBsJ2FycmF5IGRlaSBAYiBkaSBAZDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgYW5hbGl6emFuZG8gQGlzICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgc2NvcnJlbmRvIGkgQGIoaSkgbmVsbCdAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3JlIHNhbHZhbmRvIGxlIGluZm9ybWF6aW9uaSBzdWwgbnVtZXJvIGRpIEBpIChAaT0laSwgbnVtZXJvPSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3JlIHNhbHZhbmRvIGxlIGluZm9ybWF6aW9uaSBzdWkgQGIoaSkgZGkgQGQgKEBpPSVpLCBAYj0lYiwgbnVtPSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRXJyb3JlIGR1cmFudGUgbGEgbGV0dHVyYSBkZWxsJ0BpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgIgorbXNnc3RyICJMJ0BpICVpIGhhIGlsIGZsYWcgaW1hZ2ljIGltcG9zdGF0by4gIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoaW5vZGUgJWkpIGhhcyBpbW11dGFibGVcbgorIy4gQC1leHBhbmRlZDogb3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChAaSAlaSkgaGFzIGltbXV0YWJsZVxuIgorIm9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiVW4gZmlsZSAoQGkgJWkpIHNwZWNpYWxlIChAdi9zb2NrZXQvZmlmby9zeW1saW5rKSBoYSBpbCBmbGFnXG4iCisiaW1tdXRhYmxlIG8gYXBwZW5kLW9ubHkgaW1wb3N0YXRvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIiIKKyJVbiBmaWxlIChAaSAlaSkgc3BlY2lhbGUgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGhhIGlsIGZsYWdcbiIKKyJpbW11dGFibGUgbyBhcHBlbmQtb25seSBpbXBvc3RhdG8uICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKKyMsIGZ1enp5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkwnQGkgJWkgw6ggaW4gdXNvLCBtYSBoYSBpbCBkdGltZSBpbXBvc3RhdG8uICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorbXNnaWQgIkBqIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIklsIEBqIG5vbiDDqCB1biBmaWxlIHJlZ29sYXJlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgIkwnQGkgJWkgZmFjZXZhIHBhcnRlIGRlbGxhIGxpc3RhIGRlZ2xpIEBpIG9yZmFuaS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc2NQorIywgZnV6enkKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisidHJvdmF0aSBAaSBjaGUgZmFjZXZhbm8gcGFydGUgZGkgdW5hIGxpc3RhIGRpIG9yZmFuaSBjb3Jyb3R0aSBjb2xsZWdhdGkuICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKKyMsIGZ1enp5Cittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIkBBIGxhIHN0cnV0dHVyYSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGZvciBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzUKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiCittc2dzdHIgIkVycm9yZSBsZWdnZW5kbyBsJ0BhIGRpIEBiICViIHBlciBsJ0BpICVpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGJhZCBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzgwCisjLCBmdXp6eQorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiTCdAaSAlaSBoYSB1biBAYSBkaSBAYiAlYiBub24gdmFsaWRvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRXJyb3JlIGxlZ2dlbmRvIGwnQGEgZGkgQGIgJWIgKCVtKS4gIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5MAorIywgZnV6enkKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiTCdAYSBkaSBAYiAlYiDDqCBjb250YXRvIGNvbWUgJWIsIGRvdnJlYmJlIGVzc2VyZSAlTi4gIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorIywgZnV6enkKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkVycm9yZSBzY3JpdmVuZG8gbCdAYSBAYiAlYiAoJW0pLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorIywgZnV6enkKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICJMJ0BhIEBiICViIGhhIGlsIHZhbG9yZSBoX2Jsb2NrcyA+IDEuICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkBBIGxhIHN0cnV0dHVyYSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCisjLCBmdXp6eQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiTCdAYSBkaSBAYiAlYiDDqCBjb3Jyb3R0byAoY29sbGlzaW9uZSBkaSBhbGxvY2F6aW9uZSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1CisjLCBmdXp6eQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJMJ0BhIGRpIEBiICViIMOoIGNvcnJvdHRvIChub21lIG5vbiB2YWxpZG8pLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKKyMsIGZ1enp5Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIgorbXNnc3RyICJMJ0BhIGRpIEBiICViIMOoIGNvcnJvdHRvICh2YWxvcmUgbm9uIHZhbGlkbykuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiTCdAaSAlaSDDqCB0cm9wcG8gZ3JhbmRlLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorIywgZnV6enkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJJbCBAYiAjJUIgKCViKSBmYSBkaXZlbnRhcmUgaWwgQGQgdHJvcHBvIGdyYW5kZS4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorIywgZnV6enkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIklsIEBiICMlQiAoJWIpIGZhIGRpdmVudGFyZSBpbCBmaWxlIHRyb3BwbyBncmFuZGUuICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzkKKyMsIGZ1enp5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJJbCBAYiAjJUIgKCViKSBmYSBkaXZlbnRhcmUgaWwgbGluayBzaW1ib2xpY28gdHJvcHBvIGdyYW5kZS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJMJ0BpICVpIGdhIGlsIGZsYWcgSU5ERVhfRkwgaW1wb3N0YXRvIG5lbCBAZiBzZW56YSBpbCBzdXBwb3J0byBodHJlZS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgIkwnQGkgJWkgaGEgaWwgZmxhZyBJTkRFWF9GTCBpbXBvc3RhdG8sIG1hIG5vbiDDqCB1biBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIkwnQGggJWkgaGEgdW4gbm9kbyByb290IG5vbiB2YWxpZG8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTkKK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAiTCdAaCAlaSBoYSB1bmEgdmVyc2lvbmUgZGVsbCdoYXNoIG5vbiBzdXBwb3J0YXRhICglTilcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiTCdAaCAlaSB1c2EgdW4gZmxhZyBkaSBub2RvIGh0cmVlIGRpIHJvb3Qgbm9uIGNvbXBhdGliaWxlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJMJ0BoICVpIGhhIHVuIGxpdmVsbG8gZGkgcHJvZm9uZGl0w6AgKCVOKSB0cm9wcG8gZWxldmF0b1xuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGFuIGluZGlyZWN0IGJsb2NrICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIG1ldGFkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3NAorbXNnaWQgIiIKKyJCYWQgQGIgQGkgaGFzIGFuIGluZGlyZWN0IEBiICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuIgorIkBmIG1ldGFkYXRhLiAgIgorbXNnc3RyICIiCisiTCdAaSBkZWwgQGIgbm9uIHZhbGlkbyBoYSB1biBAYiBpbmRpcmV0dG8gKCViKSBjaGUgZW50cmEgaW5cbiIKKyJjb25mbGl0dG8gY29uIGlsIG1ldGFkYXRhIGRlbCBAZi4gIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4NQorIywgZnV6enkKK21zZ2lkICJAaSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkwnQGggJWkgaGEgdW4gbGl2ZWxsbyBkaSBwcm9mb25kaXTDoCAoJU4pIHRyb3BwbyBlbGV2YXRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5MAorIywgZnV6enkKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiTCdAaCAlaSBoYSB1biBsaXZlbGxvIGRpIHByb2ZvbmRpdMOgICglTikgdHJvcHBvIGVsZXZhdG9cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKKyMsIGZ1enp5Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiTCdAaCAlaSBoYSB1biBsaXZlbGxvIGRpIHByb2ZvbmRpdMOgICglTikgdHJvcHBvIGVsZXZhdG9cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIGJsb2NrICglTikgd2hpY2ggaXMgaW52YWxpZCAobXVzdCBiZSAwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwMAorIywgZnV6enkKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIkwnQGggJWkgaGEgdW4gbGl2ZWxsbyBkaSBwcm9mb25kaXTDoCAoJU4pIHRyb3BwbyBlbGV2YXRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorIywgZnV6enkKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiTCdAaCAlaSBoYSB1biBsaXZlbGxvIGRpIHByb2ZvbmRpdMOgICglTikgdHJvcHBvIGVsZXZhdG9cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCisjLCBmdXp6eQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJMJ0BoICVpIGhhIHVuIGxpdmVsbG8gZGkgcHJvZm9uZGl0w6AgKCVOKSB0cm9wcG8gZWxldmF0b1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgc2NvcnJlbmRvIGkgQGIoaSkgbmVsbCdAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgaW52YWxpZCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTM2Cittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgQG4gbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgZ2EgaWwgZmxhZyBJTkRFWF9GTCBpbXBvc3RhdG8gbmVsIEBmIHNlbnphIGlsIHN1cHBvcnRvIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorIywgZnV6enkKK21zZ2lkICJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIgorbXNnc3RyICJMJ0BoICVpIGhhIHVuIG5vZG8gcm9vdCBub24gdmFsaWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgc2NvcnJlbmRvIGkgQGIoaSkgZGVsbGUgQGQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTc1CisjLCBmdXp6eQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIklsIEBqIG5vbiDDqCB1biBmaWxlIHJlZ29sYXJlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorIywgZnV6enkKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiTCdAaSAlaSDDqCBpbiB1c28sIG1hIGhhIGlsIGR0aW1lIGltcG9zdGF0by4gIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4NQorIywgZnV6enkKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJMJ0BpICVpIMOoIGluIHVzbywgbWEgaGEgaWwgZHRpbWUgaW1wb3N0YXRvLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKK21zZ3N0ciAiPElub2RlIG51bWVybyAxPiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gICIKK21zZ3N0ciAiTCdAaSAlaSDDqCB0cm9wcG8gZ3JhbmRlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiTCdAYSBkaSBAYiAlYiDDqCBjb3Jyb3R0byAoY29sbGlzaW9uZSBkaSBhbGxvY2F6aW9uZSkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkwnQGkgJWkgZ2EgaWwgZmxhZyBJTkRFWF9GTCBpbXBvc3RhdG8gbmVsIEBmIHNlbnphIGlsIHN1cHBvcnRvIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKKyMsIGZ1enp5Cittc2dpZCAiQGQgQGkgJWkgQGIgJWIgc2hvdWxkIGJlIGF0IEBiICVjLiAgIgorbXNnc3RyICJMJ0BpICVpIGhhIHVuIEBhIGRpIEBiICViIG5vbiB2YWxpZG8uICIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICJMJ0BpICVpIGRlbGxhIEBkIGhhIHVuIEBiICgjJUIpIG5vbiBhbGxvY2F0by4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIkwnQGkgJWkgaGEgaWwgZmxhZyBJTkRFWF9GTCBpbXBvc3RhdG8sIG1hIG5vbiDDqCB1biBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlVuIGZpbGUgKEBpICVpKSBzcGVjaWFsZSAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgaGEgaWwgZmxhZ1xuIgorImltbXV0YWJsZSBvIGFwcGVuZC1vbmx5IGltcG9zdGF0by4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgaW5vZGUgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDkKK21zZ2lkICJCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBAaSBpcyBiYWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTQKKyMsIGZ1enp5Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJAQSBsYSBzdHJ1dHR1cmEgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmdcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0Cittc2dpZCAiQEEgbWVtb3J5IGZvciBlbmNyeXB0ZWQgQGQgbGlzdFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjkKK21zZ2lkICJAaSAlaSBAeCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgIkwnQGEgZGkgQGIgJWIgw6ggY29ycm90dG8gKG5vbWUgbm9uIHZhbGlkbykuICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICJAYiBASSAjJUIgKCViKSBuZWxsJ0BpICVpLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiRXJyb3JlIGFuYWxpenphbmRvIGdsaSBpbm9kZSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJAQSBsYSBAQiBkZWdsaSBAaSAoaW5vZGVfZHVwX21hcCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkVycm9yZSBzY29ycmVuZG8gaSBAYihpKSBuZWxsJ0BpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBAYSBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICIiCisiRXJyb3JlIHNpc3RlbWFuZG8gaWwgY29udGVnZ2lvIGRlaSByaWZlcmltZW50aSBwZXIgaWwgQGIgQGEgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworIywgZnV6enkKK21zZ2lkICJQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgQGlzIHdpdGggQG0gQGJzXG4iCittc2dzdHIgIiIKKyJQYXNzbyAxQzogQW5hbGlzaSBkZWxsZSBkaXJlY3RvcnkgcmVsYXRpdmEgYWdsaSBAaSBjb24gQGIoaSkgZHVwbGljYXRpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgIlBhc3NvIDFEOiBSaWNvbmNpbGlhbWVudG8gZGVsIEBiKGkpIGR1cGxpY2F0aVxuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorIywgZnV6enkKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisiSWwgZmlsZSAlUSAoQGkgIyVpLCB1bHRpbWEgbW9kaWZpY2EgJUlNKSBcbiIKKyIgIGhhICViIEBiKGkpIGR1cGxpY2F0aSwgY29uZGl2aXNpIGNvbiAlTiBmaWxlOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKEBpICMlaSwgdWx0aW1hIG1vZGlmaWNhICVJTSlcbiIKKworIy4gQC1leHBhbmRlZDogXHQ8ZmlsZXN5c3RlbSBtZXRhZGF0YT5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE5Cittc2dpZCAiXHQ8QGYgbWV0YWRhdGE+XG4iCittc2dzdHIgIlx0PG1ldGFkYXRhIGRlbCBAZj5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKKyMsIGZ1enp5Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihDaSBzb25vICVuIEBpIGNvbnRlbmVudGkgQGIoaSkgZHVwbGljYXRvL25vbiB2YWxpZG8oaSkuKVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAbSBAYnMgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkBiKGkpIGR1cGxpY2F0aSBnacOgIHJpYXNzZWduYXRpIG8gY2xvbmF0aS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNsb25lIGZpbGU6ICVtXG4iCittc2dzdHIgIkltcG9zc2liaWxlIGNsb25hcmUgaWwgZmlsZTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4CisjLCBmdXp6eQorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAiUGFzc28gM0E6IE90dGltaXp6YXppb25lIGRlbGxlIGRpcmVjdG9yeVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gb3B0aW1pemUgZXh0ZW50IHRyZWUgJXAgKCVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJJbXBvc3NpYmlsZSBvdHRpbWl6emFyZSBsYSBkaXJlY3RvcnkgJXEgKCVkKTogJW0iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIywgZnV6enkKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIk90dGltaXp6YXppb25lIGRlbGxlIGRpcmVjdG9yeTogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiUGFzc28gMjogQW5hbGlzaSBkZWxsYSBzdHJ1dHR1cmEgZGVsbGUgQGRcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk51bWVybyBkaSBAaSBub24gdmFsaWRvIHBlciAnLicgbmVsbCdAaSBAZCAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorIywgZnV6enkKK21zZ2lkICJARSBoYXMgQG4gQGkgIzogJURpLlxuIgorbXNnc3RyICJMJ0BFIGhhIHVuIEBpIG5vbiB2YWxpZG8gIzogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorIywgZnV6enkKK21zZ2lkICJARSBoYXMgQEQvdW51c2VkIEBpICVEaS4gICIKK21zZ3N0ciAiTCdARSBoYSBAaSBub24gdXRpbGl6emF0by9ARCAlRGkuICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJMJ0BFIEBMIGEgJy4nICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIkwnQEUgcHVudGEgYWxsJ0BpICglRGkpLCBwb3NpemlvbmF0byBpbiB1biBAYiBub24gdmFsaWRvLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJMJ0BFIEBMIGFsbGEgQGQgJVAgKCVEaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIkwnQEUgQEwgYWxsJ0ByLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzMAorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgIkwnQEUgaGEgY2FyYXR0ZXJpIG5vbiB2YWxpZGkgbmVsIHN1byBub21lLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiJy4nIG1hbmNhbnRlIG5lbGwnQGkgJWkgZGVsbGEgQGQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIicuLicgbWFuY2FudGUgbmVsbCdAaSAlaSBkZWxsYSBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKKyMsIGZ1enp5Cittc2dpZCAiRmlyc3QgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgKCVwKSBAcyAnLidcbiIKK21zZ3N0ciAiSWwgcHJpbW8gQGUgJyVEbicgKGlub2RlPSVEaSkgbmVsbCdAaSAlaSBkZWxsYSBAZCAoJXApIEBzICcuJ1xuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorIywgZnV6enkKK21zZ2lkICJTZWNvbmQgQGUgJyVEbicgKEBpPSVEaSkgaW4gQGQgQGkgJWkgQHMgJy4uJ1xuIgorbXNnc3RyICJJbCBzZWNvbmRvIEBlICclRG4nIChpbm9kZT0lRGkpIG5lbGwnQGkgJWkgZGVsbGEgQGQgKCVwKSBAcyAnLidcbiIKKworIy4gQC1leHBhbmRlZDogaV9mYWRkciBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSUYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTUKKyMsIGZ1enp5Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmFkZHIgQEYgJUlGIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlmLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYwCisjLCBmdXp6eQorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIEBGICVJZiBAcyB6ZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1CisjLCBmdXp6eQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZGlyX2FjbCBARiAlSWQgQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCisjLCBmdXp6eQorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mcmFnIEBGICVOIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnNpemUgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzUKKyMsIGZ1enp5Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBARiAlTiBAcyB6ZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorIywgZnV6enkKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJMJ0BvICVpICglUSkgaGEgdW5hIG1vZGFsaXTDoCBub24gdmFsaWRhICglSW0pLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBjb3JydXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzg1CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiQGkgJWkgZGVsbGEgQGQsIG9mZnNldCAlTjogQGQgY29ycm90dGFcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKKyMsIGZ1enp5Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIkBpICVpIGRlbGxhIEBkLCBvZmZzZXQgJU46IG5vbWUgZmlsZSB0cm9wcG8gbHVuZ29cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAiTCdAaSAlaSBkZWxsYSBAZCBoYSB1biBAYiAoIyVCKSBub24gYWxsb2NhdG8uICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiTCdAZSBkZWxsYSBAZCAnLicgbmVsbCdAaSAlaSBkZWxsYSBAZCBub24gw6ggdGVybWluYXRvIGRhIE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIicuLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJMJ0BlIGRlbGxhIEBkICcuLicgbmVsbCdAaSAlaSBkZWxsYSBAZCBub24gw6ggdGVybWluYXRvIGRhIE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJMJ0BpICVpICglUSkgw6ggdW4gQHYgYSBjYXJhdHRlcmkgQEkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBibG9jayBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxNQorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgQGIgQHYuXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSDDqCB1biBAdiBhIEBiKGkpIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyMAorIywgZnV6enkKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJMJ0BFIMOoIHVuIGR1cGxpY2F0byBkZWxsJ0BlICcuJy5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDI1Cittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuLicgQGUuXG4iCittc2dzdHIgIkwnQEUgw6ggdW4gZHVwbGljYXRvIGRlbGwnQGUgJy4uJy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkVycm9yZSBpbnRlcm5vOiBpbXBvc3NpYmlsZSB0cm92YXJlIGRpcl9pbmZvIHBlciAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1CisjLCBmdXp6eQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkwnQEUgaGEgcmVjX2xlbiBkaSAlRHIsIGRvdnJlYmJlIGVzc2VyZSAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgc3RydWN0dXJlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IHN0cnVjdHVyZTogJW1cbiIKK21zZ3N0ciAiQEEgbGEgc3RydXR0dXJhIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRXJyb3JlIHNjb3JyZW5kbyBpIEBiKGkpIGRlbGxlIEBkOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycm9yZSBsZWdnZW5kbyBpbCBAYiBkZWxsYSBAZCAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkVycm9yZSBzY3JpdmVuZG8gaWwgQGIgZGVsbGEgQGQgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJAQSB1biBudW92byBAYiBkZWxsYSBAZCBwZXIgbCdAaSAlaSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGVhbGxvY2F0aW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgZGVhbGxvY2FuZG8gbCdAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAiTCdAZSBkZWxsYSBAZCBkaSAnLicgw6ggZ3JhbmRlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSDDqCB1bmEgRklGTyBASS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkwnQGkgJWkgKCVRKSDDqCB1biBzb2NrZXQgQEkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIHRpcG8gZGkgZmlsZSBwZXIgbCdARSBhICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorIywgZnV6enkKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIkwnQEUgbm9uIMOoIGRlbCBnaXVzdG8gdGlwbyBkaSBmaWxlIChlcmEgJUR0LCBkb3ZyZWJiZSBlc3NlcmUgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkUnIGltcG9zdGF0byBpbCB0aXBvIGRpIGZpbGUgcGVyIGwnQEUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgemVyby1sZW5ndGggbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAwCisjLCBmdXp6eQorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgIklsIG5vbWUgZGVsbCdARSDDqCBkaSBsdW5naGV6emEgbnVsbGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFN5bWxpbmsgJVEgKGlub2RlICMlaSkgaXMgaW52YWxpZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTA1CisjLCBmdXp6eQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIklsIHN5bWxpbmsgJVEgKEBpICMlaSkgbm9uIMOoIHZhbGlkby5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAlaSAoJVEpIGlzIGludmFsaWQgKCVJZikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxMAorbXNnaWQgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1Cittc2dpZCAiQGYgY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gQFMuXG4iCittc2dzdHIgIiIKKyJJbCBAZiBjb250aWVuZSBmaWxlcyBkaSBncmFuZGkgZGltZW5zaW9uaSwgbWEgbmVsIEBTIG5vbiDDqCBzcGVjaWZpY2F0byBpbCAiCisiZmxhZyBMQVJHRV9GSUxFLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJAcCB1biBAaCAoJWQpOiBub2RvICglQikgbm9uIHJlZmVyZW56aWF0b1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKKyMsIGZ1enp5Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiQHAgdW4gQGggKCVkKTogbm9kbyAoJWIpIHJlZmVyZW56aWF0byBkdWUgdm9sdGVcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIkBwIHVuIEBoICglZCk6IG5vZG8gKCVCKSBjb24gaGFzaCBtaW5pbW8gbm9uIHZhbGlkb1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKKyMsIGZ1enp5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiQHAgdW4gQGggKCVkKTogbm9kbyAoJWIpIGNvbiBoYXNoIG1hc3NpbW8gbm9uIHZhbGlkb1xuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDAKKyMsIGZ1enp5Cittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAiQGggJWQgbm9uIHZhbGlkbyAoJXEpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIkBwIHVuIEBoICVkICglcSk6IEBiIG5vbiB2YWxpZG8gbnVtZXJvICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGlzIEBuXG4iCittc2dzdHIgIkBwIHVuIEBoICglZCk6IG5vZG8gcm9vdCBub24gdmFsaWRvXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBsaW1pdCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorIywgZnV6enkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGxpbWl0ICglTilcbiIKK21zZ3N0ciAiQHAgdW4gQGggKCVkKTogbm9kbyAoJUIpIGNvbiBsaW1pdGUgbm9uIHZhbGlkbyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBjb3VudCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorIywgZnV6enkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIKK21zZ3N0ciAiQHAgdW4gQGggKCVkKTogbnVtZXJvICglTikgZGkgbm9kbyAoJUIpIG5vbiB2YWxpZG9cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKKyMsIGZ1enp5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICJAcCB1biBAaCAoJWQpOiBub2RvICglQikgY29uIHRhYmVsbGEgaGFzaCBub24gb3JkaW5hdGFcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGRlcHRoICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc0CisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJAcCB1biBAaCAoJWQpOiBub2RvICglQikgY29uIHByb2ZvbmRpdMOgIG5vbiB2YWxpZGFcbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAiVHJvdmF0byBARSBkdXBsaWNhdG8uICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuCisjLiBALWV4cGFuZGVkOiBSZW5hbWUgdG8gJXMKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4NAorIywgbm8tYy1mb3JtYXQKK21zZ2lkICIiCisiQEUgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbiIKKyJSZW5hbWUgdG8gJXMiCittc2dzdHIgIiIKKyJARSBoYSB1biBub21lIGZpbGUgbm9uIHVuaXZvY28uXG4iCisiQ2FtYmlhcmUgaWwgbm9tZSBpbiAlcyIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBcdE1hcmtpbmcgJXAgKCVpKSB0byBiZSByZWJ1aWx0LlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg5CisjLCBmdXp6eQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRyb3ZhdG8gQGUgZHVwbGljYXRvICclRG4nLlxuIgorIlx0JXAgKCVpKSDDqCBkYSByaWNvc3RydWlyZS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogaV9ibG9ja3NfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTQKKyMsIGZ1enp5Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnNpemUgQEYgJU4gQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogVW5leHBlY3RlZCBibG9jayBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk5Cittc2dpZCAiVW5leHBlY3RlZCBAYiBpbiBAaCAlZCAoJXEpLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKKyMsIGZ1enp5Cittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbCBARiAlSWYgQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAcCB1biBAaCAoJWQpOiBub2RvIHJvb3Qgbm9uIHZhbGlkb1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQHAgdW4gQGggKCVkKTogbm9kbyByb290IG5vbiB2YWxpZG9cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjgKKyMsIGZ1enp5Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGkgJWkgZGVsbGEgQGQsIG9mZnNldCAlTjogQGQgY29ycm90dGFcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQjogZGlyZWN0b3J5IHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzMKK21zZ2lkICJAZCBAaSAlaSwgJUI6IEBkIHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IElubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgc2l6ZSAoJU4pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzgKK21zZ2lkICJJbmxpbmUgQGQgQGkgJWkgc2l6ZSAoJU4pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEZpeGluZyBzaXplIG9mIGlubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgZmFpbGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRml4aW5nIHNpemUgb2YgaW5saW5lIEBkIEBpICVpIGZhaWxlZC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFbmNyeXB0ZWQgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyB0b28gc2hvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0OAorbXNnaWQgIkVuY3J5cHRlZCBARSBpcyB0b28gc2hvcnQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorbXNnaWQgIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iCittc2dzdHIgIlBhc3NvIDM6IENvbnRyb2xsbyBkZWxsYSBjb25uZXR0aXZpdMOgIGRpIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiQHIgbm9uIGFsbG9jYXRvLiIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiTm9uIGMnw6ggc3BhemlvIG5lbGxhIEBkIEBsIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL0BsIG5vbiB0cm92YXRhLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIicuLicgaW4gJVEgKCVpKSDDqCAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1CisjLCBmdXp6eQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiL0BsIG5vbiB2YWxpZGEgbyBpbmVzaXN0ZW50ZS4gSW1wb3NzaWJpbGUgcmljb25uZXR0ZXJlLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIkltcG9zc2liaWxlIGVzcGFuZGVyZSAvQGw6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlY29ubmVjdCAlaTogJW1cbiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgcmljb25uZXR0ZXJlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiRXJyb3JlIGNlcmNhbmRvIC9AbDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Jsb2NrOiAlbSBjZXJjYW5kbyBkaSBjcmVhcmUgbGEgQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X0BpOiAlbSBjZXJjYW5kbyBkaSBjcmVhcmUgbGEgQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICJleHQyZl9uZXdfZGlyX2Jsb2NrOiAlbSBjcmVhbmRvIHVuIG51b3ZvIEBiIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgImV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHNjcml2ZW5kbyBpbCBAYiBAZCBwZXIgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCBvbiBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iCittc2dzdHIgIkVycm9yZSBhZ2dpdXN0YW5kbyBpbCBudW1lcm8gQGkgbmVsbCdAaSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IGRpcmVjdG9yeSBlbnRyeVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBAZCBAZVxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkVycm9yZSBjcmVhbmRvIGxhIEBkIHJvb3QgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiRXJyb3JlIGNyZWFuZG8gbGEgQGQgL0BsICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1CisjLCBmdXp6eQorbXNnaWQgIkByIGlzIG5vdCBhIEBkOyBhYm9ydGluZy5cbiIKK21zZ3N0ciAiTCdAciBub24gw6ggdW5hIEBkOyBjYW5jZWxsYXppb25lLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzYwCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIgorbXNnc3RyICJJbXBvc3NpYmlsZSBwcm9jZWRlcmUgc2VuemEgdW4gQHIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCBub24gw6ggdW5hIEBkIChpbm89JWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvbG9zdCtmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODAKK21zZ2lkICIiCisiQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvQGwuXG4iCisiUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4KKyMuIEAtZXhwYW5kZWQ6IE1vdmUgZGF0YSBvZmYgdGhlIGZpbGVzeXN0ZW0gYW5kIHJlLXJ1biBlMmZzY2suXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODUKK21zZ2lkICIiCisiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbiIKKyJNb3ZlIGRhdGEgb2ZmIHRoZSBAZiBhbmQgcmUtcnVuIGUyZnNjay5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkwCittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiUGFzc28gM0E6IE90dGltaXp6YXppb25lIGRlbGxlIGRpcmVjdG9yeVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICJJbXBvc3NpYmlsZSBjcmVhcmUgdW4gaXRlcmF0b3JlIGRpcnNfdG9faGFzaDogJW0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworIywgZnV6enkKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIkltcG9zc2liaWxlIG90dGltaXp6YXJlIGxhIGRpcmVjdG9yeSAlcSAoJWQpOiAlbSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJPdHRpbWl6emF6aW9uZSBkZWxsZSBkaXJlY3Rvcnk6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIlBhc3MgNDogQ29udHJvbGxvIGRlbCBudW1lcm8gZGVpIHJpZmVyaW1lbnRpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIkBpIEBvIEBJICVpIG5lbCBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQGkgJWlcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorIywgZnV6enkKK21zZ2lkICJAaSAlaSByZWYgY291bnQgaXMgJUlsLCBAcyAlTi4gICIKK21zZ3N0ciAiSWwgY29udGF0b3JlIHJpZmVyaW1lbnRpIGRlbGwnQGkgJWkgw6ggJUlsLCBAcyAlTi4gIgorCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuCisjLiBALWV4cGFuZGVkOiBcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuCisjLiBALWV4cGFuZGVkOiBpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDgKK21zZ2lkICIiCisiV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbiIKKyJcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuIgorIkBpX2xpbmtfaW5mb1slaV0gaXMgJU4sIEBpLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBAcyB0aGUgc2FtZSFcbiIKK21zZ3N0ciAiIgorIkFUVEVOWklPTkU6IEVSUk9SRSBESSBQUk9HUkFNTUFaSU9ORSBJTiBFMkZTQ0shXG4iCisiXHRPIFFVQUxDSEUgVEVTVEEgVlVPVEEgKFRVKSBTVEEgQ09OVFJPTExBTkRPIFVOIEZJTEUgU1lTVEVNIE1PTlRBVE8gIgorIihMSVZFKS5cbiIKKyJAaV9saW5rX2luZm9bJWldIMOoICVOLCBAaS5pX2xpbmtzX2NvdW50IMOoICVJbC4gRG92cmViYmVybyBlc3NlcmUgaWRlbnRpY2khXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKKyMsIGZ1enp5Cittc2dpZCAiUGFzcyA1OiBDaGVja2luZyBAZyBzdW1tYXJ5IGluZm9ybWF0aW9uXG4iCittc2dzdHIgIlBhc3NvIDU6IENvbnRyb2xsbyBkZWwgcmllcGlsb2dvIGRlbGxlIGluZm9ybWF6aW9uaSBkZWwgQGdcbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCisjLCBmdXp6eQorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiUmllbXBpbWVudG8gYWxsYSBmaW5lIGRpIEBpIEBCIG5vbiBpbXBvc3RhdG8uICIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4CisjLCBmdXp6eQorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiUmllbXBpbWVudG8gYWxsYSBmaW5lIGRpIEBiIEBCIG5vbiBpbXBvc3RhdG8uICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIkRpZmZlcmVuemUgbmVsbGEgQEIgZGVpIEBiOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJEaWZmZXJlbnplIG5lbGxhIEBCIGRlZ2xpIEBpOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJOdW1lcm8gZGVnbGkgQGkgbGliZXJpIGVycmF0byBwZXIgaWwgQGcgIyVnICglaSwgY29udGF0aT0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IERpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4Cittc2dpZCAiRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJOdW1lcm8gZGVsbGUgZGlyZWN0b3J5IGVycmF0byBwZXIgaWwgQGcgIyVnICglaSwgY29udGF0aT0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIk51bWVybyBkZWdsaSBAaSBsaWJlcmkgZXJyYXRvICglaSwgY29udGF0aT0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJOdW1lcm8gZGVpIEBiKGkpIGxpYmVyaSBlcnJhdG8gcGVyIGlsIEBnICMlZyAoJWIsIGNvbnRhdGk9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJOdW1lcm8gZGVpIEBiKGkpIGxpYmVyaSBlcnJhdG8gKCViLCBjb250YXRpPSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDQKKyMsIGZ1enp5Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIiIKKyJFcnJvcmUgaW50ZXJubzogaW1wb3NzaWJpbGUgaW5kaXZpZHVhcmUgbGEgZmluZSBkZWxsYSBtYXBwYSBkaSBiaXQgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGlub2RlIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgZHVyYW50ZSBsYSBsZXR0dXJhIGRlbGwnQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCisjLCBmdXp6eQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICJSaWNyZWEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBzZXR0aW5nIEBiIEBnIGNoZWNrc3VtIGluZm86ICVtXG4iCittc2dzdHIgImltcG9zdGFuZG8gbCdpbm9kZSBkZWwgYmxvY2NvIGRpZmV0dG9zbyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIkVycm9yZSBkdXJhbnRlIGxhIGxldHR1cmEgZGVsbCdAaSAlaTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJFcnJvcmUgZHVyYW50ZSBsYSBsZXR0dXJhIGRlbGwnQGkgJWk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgIkNvZGljZSBlcnJvcmUgbm9uIGdlc3RpdG8gKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiSUdOT1JBVE8iCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo3OQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKK21zZ3N0ciAiTWVtb3JpYSB1c2F0YTogJWQsIHRlbXBvIHJpbWFzdG86ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAiZGltZW5zaW9uZSBkaSB1biBpbm9kZT0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJpbml6aWFuZG8gbGEgc2NhbnNpb25lIGRlZ2xpIGlub2RlIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICJkdXJhbnRlIGxhIHNjYW5zaW9uZSBkZWxsJ2lub2RlIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgImNoaWFtYW5kbyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBwZXIgbCdpbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAiY2hpYW1hbmRvIGV4dDJmc19hZGp1c3RfZWFfcmVmb2N1bnQgcGVyIGwnaW5vZGUgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiVXRpbGl6em86ICVzIFstcGFueXJjZGZ2c3RERlNWXSBbLWIgc3VwZXJibG9jY29dIFstQiBkaW1lbnNpb25lX2Jsb2Njb11cbiIKKyJcdFx0Wy1JIGJsb2NjaGlfYnVmZmVyX2lub2RlXSBbLVAgcHJvY2Vzc2FfZGltZW5zaW9uZV9pbm9kZV1cbiIKKyJcdFx0Wy1sfC1MIGZpbGVfYmxvY2NoaV9ub25fdmFsaWRpXSBbLUMgZmRdIFstaiBleHQtam91cm5hbF1cbiIKKyJcdFx0Wy1FIG9wemlvbmktZXN0ZXNlXSBkZXZpY2VcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkFpdXRvIGRpIGVtZXJnZW56YTpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgUmlwYXJhemlvbmUgYXV0b21hdGljYSAoc2VuemEgZG9tYW5kZSlcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTm9uIGVmZmV0dHVhIG1vZGlmaWNoZSBuZWwgZmlsZSBzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgUmlzcG9zdGEgYWZmZXJtYXRpdmEgYSB0dXR0ZSBsZSBkb21hbmRlXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENlcmNhIGJsb2NjaGkgbm9uIHZhbGlkaSBlIGxpIGFnZ2l1bmdlIG5lbGwnYXBwb3NpdG8gIgorImVsZW5jb1xuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3J6YSBpbCBjb250cm9sbG8gYW5jaGUgc2UgaWwgZmlsZSBzeXN0ZW0gw6ggc2VnbmF0byAiCisiY29tZSBwdWxpdG9cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OAorIywgZnV6enkKK21zZ2lkICIiCisiIC12ICAgICAgICAgICAgICAgICAgIEJlIHZlcmJvc2VcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgVXNlIGFsdGVybmF0aXZlIHN1cGVyYmxvY2tcbiIKKyIgLUIgYmxvY2tzaXplICAgICAgICAgRm9yY2UgYmxvY2tzaXplIHdoZW4gbG9va2luZyBmb3Igc3VwZXJibG9ja1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICBTZXQgbG9jYXRpb24gb2YgdGhlIGV4dGVybmFsIGpvdXJuYWxcbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAgQWRkIHRvIGJhZGJsb2NrcyBsaXN0XG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIFNldCBiYWRibG9ja3MgbGlzdFxuIgorIiAteiB1bmRvX2ZpbGUgICAgICAgICBDcmVhdGUgYW4gdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgTW9kYWxpdMOgIHByb2xpc3NhXG4iCisiIC1iIHN1cGVyYmxvY2NvICAgICAgIFVzYSB1biBzdXBlcmJsb2NjbyBhbHRlcm5hdGl2b1xuIgorIiAtQiBkaW1fYmxvY2NvICAgICAgICBGb3J6YSBsYSBkaW1lbnNpb25lIGRlaSBibG9jY2hpIGR1cmFudGUgbGEgcmljZXJjYSBkZWwgIgorInN1cGVyYmxvY2NvXG4iCisiIC1qIGpvdXJuYWwtZXN0ZXJubyAgIFNwZWNpZmljYSBsYSBwb3NpemlvbmUgZGVsIGpvdXJuYWwgZXN0ZXJub1xuIgorIiAtbCBmaWxlX2JhZF9ibG9ja3MgICBBZ2dpdW5naSBhbGxhIGxpc3RhIGRlaSBibG9jY2hpIG5vbiB2YWxpZGlcbiIKKyIgLUwgZmlsZV9iYWRfYmxvY2tzICAgSW1wb3N0YSBsYSBsaXN0YSBkZWkgYmxvY2NoaSBub24gdmFsaWRpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJWQvJWQgZmlsZXMgKCUwZC4lZCUlIG5vbiBjb250aWd1aSksICVkLyVkIGJsb2NjaGlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIgICAgICAgICAjIGRpIGlub2RlIGNvbiBibG9jY2hpIGluZC9kaW5kL3RpbmQ6ICVkLyVkLyVkXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSBibG9jY28gZGFubmVnZ2lhdG9cbiIKK21zZ3N0clsxXSAiJTEydSBibG9jY2hpIGRhbm5lZ2dpYXRpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBmaWxlIHJlZ29sYXJlXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IGZpbGUgcmVnb2xhcmlcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBkaXJlY3RvcnlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBkaXJlY3Rvcmllc1xuIgorbXNnc3RyWzBdICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnc3RyWzFdICIlMTJ1IGRpcmVjdG9yeVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiUxMnUgZmlmb1xuIgorbXNnc3RyWzFdICIlMTJ1IGZpZm9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBjb2xsZWdhbWVudG9cbiIKK21zZ3N0clsxXSAiJTEydSBjb2xsZWdhbWVudGlcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IGNvbGxlZ2FtZW50byBzaW1ib2xpY28iCittc2dzdHJbMV0gIiUxMnUgY29sbGVnYW1lbnRpIHNpbWJvbGljaSIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IHNvY2tldFxuIgorbXNnc3RyWzFdICIlMTJ1IHNvY2tldFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpbGVcbiIKK21zZ3N0clsxXSAiJTEydSBmaWxlXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjM1IG1pc2MvYmFkYmxvY2tzLmM6OTkzIG1pc2MvdHVuZTJmcy5jOjI4NzggbWlzYy91dGlsLmM6MTI2CisjOiByZXNpemUvbWFpbi5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJuZWwgZGV0ZXJtaW5hcmUgc2UgJXMgw6ggbW9udGF0by4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiQXR0ZW56aW9uZTogJXMgw6ggJXMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJBdHRlbnppb25lOiAlcyDDqCAlcy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIMOoIG1vbnRhdG86ICIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgw6ggJXMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY5Cittc2dpZCAiIgorIkNhbm5vdCBjb250aW51ZSwgYWJvcnRpbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJJbXBvc3NpYmlsZSBjb250aW51YXJlLCBvcGVyYXppb25lIGFubnVsbGF0YS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyJBVFRFTlpJT05FOiBpbCBmaWxlIHN5c3RlbSDDqCBtb250YXRvLiBDb250aW51YW5kbyBsJ29wZXJhemlvbmVcbiIKKyJ2ZXJyYW5ubyBjYXVzYXRpIHNlcmkgZGFubmkgYWwgZmlsZSBzeXN0ZW0uXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJDb250aW51YXJlIgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgImNvbnRyb2xsbyBhbm51bGxhdG8uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MzcxCittc2dpZCAiIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMiCittc2dzdHIgIiBjb250aWVuZSB1biBmaWxlIHN5c3RlbSBjb24gZXJyb3JpIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgbm9uIMOoIHN0YXRvIHNtb250YXRvIGluIG1hbmllcmEgY29ycmV0dGEiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgw6ggc3RhdG8gbW9udGF0byAldSB2b2x0ZSBzZW56YSBlc3NlcmUgY29udHJvbGxhdG8iCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiBwcmVzZW50YSBvcmFyaW8gZGkgdWx0aW1vIGNvbnRyb2xsbyBkZWwgZmlsZSBzeXN0ZW0gbmVsIGZ1dHVybyIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgbm9uIMOoIHN0YXRvIGNvbnRyb2xsYXRvIG5lZ2xpIHVsdGltaSAldSBnaW9ybmkiCisKKyM6IGUyZnNjay91bml4LmM6NDAxCittc2dpZCAiLCBjaGVjayBmb3JjZWQuXG4iCittc2dzdHIgIiwgY29udHJvbGxvIGZvcnphdG8uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogYSBwb3N0bywgJWQvJWQgZmlsZSwgJWQvJWQgYmxvY2NoaSIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKKyMsIGZ1enp5Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAoY29udHJvbGxvIGRvcG8gaWwgcHJvc3NpbW8gbW91bnQpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NworbXNnaWQgIiAoY2hlY2sgYWZ0ZXIgbmV4dCBtb3VudCkiCittc2dzdHIgIiAoY29udHJvbGxvIGRvcG8gaWwgcHJvc3NpbW8gbW91bnQpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1OQorIywgYy1mb3JtYXQKK21zZ2lkICIgKGNoZWNrIGluICVsZCBtb3VudHMpIgorbXNnc3RyICIgKGNvbnRyb2xsbyB0cmEgJWxkIG1vdW50KSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAiRVJST1JFOiBJbXBvc3NpYmlsZSBhcHJpcmUgL2Rldi9udWxsICglcylcbiIKKworIzogZTJmc2NrL3VuaXguYzo2NzkKK21zZ2lkICJJbnZhbGlkIEVBIHZlcnNpb24uXG4iCittc2dzdHIgIlZlcnNpb25lIEVBIG5vbiB2YWxpZGEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICJQYXJhbWV0cm8gZGkgc3RyaWRlIG5vbiB2YWxpZG8uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6NzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gZTJmc2NrIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJFcnJvcmUgY29udmFsaWRhbmRvIGlsIGRlc2NyaXR0b3JlIGRpIGZpbGUgJWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5CisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIkluZm9ybWF6aW9uaSBkaSBjb21wbGV0YW1lbnRvIGRlc2NyaXR0b3JlIGRpIGZpbGUgbm9uIHZhbGlkZSIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKKyMsIGZ1enp5Cittc2dpZCAiT25seSBvbmUgb2YgdGhlIG9wdGlvbnMgLXAvLWEsIC1uIG9yIC15IG1heSBiZSBzcGVjaWZpZWQuIgorbXNnc3RyICJTb2xvIHVuYSB0cmEgbGUgb3B6aW9uaSAtcC8tYSwgLW4gbyAteSBwdcOyIGVzc2VyZSBzcGVjaWZpY2F0YS4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJMJ29wemlvbmUgLXQgbm9uIMOoIHN1cHBvcnRhdGEgZGEgcXVlc3RhIHZlcnNpb25lIGRpIGUyZnNjay5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIkltcG9zc2liaWxlIHJpc29sdmVyZSAnJXMnIgorCisjOiBlMmZzY2svdW5peC5jOjk1MgorbXNnaWQgIlRoZSAtbiBhbmQgLUQgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjk2MgorIywgZnV6enkKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkxlIG9wemlvbmkgLWMgZSAtSS8tTCBub24gcG9zc29ubyBlc3NlcmUgdXNhdGUgY29udGVtcG9yYW5lYW1lbnRlLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorIywgZnV6enkKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiTGUgb3B6aW9uaSAtYyBlIC1JLy1MIG5vbiBwb3Nzb25vIGVzc2VyZSB1c2F0ZSBjb250ZW1wb3JhbmVhbWVudGUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6OTkyCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJMZSBvcHppb25pIC1jIGUgLUkvLUwgbm9uIHBvc3Nvbm8gZXNzZXJlIHVzYXRlIGNvbnRlbXBvcmFuZWFtZW50ZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICJMZSBvcHppb25pIC1jIGUgLUkvLUwgbm9uIHBvc3Nvbm8gZXNzZXJlIHVzYXRlIGNvbnRlbXBvcmFuZWFtZW50ZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTEwMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSW52YWxpZCBub24tbnVtZXJpYyBhcmd1bWVudCB0byAtJWMgKFwiJXNcIilcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgImltcG9zdGFuZG8gaWwgc3VwZXJibG9jY28iCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIKK21zZ3N0ciAibGVnZ2VuZG8gbCdpbm9kZSBudW1lcm8gMSIKKworIzogZTJmc2NrL3VuaXguYzoxMjUyIGUyZnNjay91bml4LmM6MTMwNCBtaXNjL2UydW5kby5jOjIzMCBtaXNjL2UydW5kby5jOjI3NQorIzogbWlzYy9ta2UyZnMuYzoyNTQxIG1pc2MvbWtlMmZzLmM6MjU5MiBtaXNjL3R1bmUyZnMuYzoyNjEwCisjOiBtaXNjL3R1bmUyZnMuYzoyNjU1IHJlc2l6ZS9tYWluLmM6MTg3IHJlc2l6ZS9tYWluLmM6MjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgdXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTI5MyBtaXNjL2UydW5kby5jOjI2NCBtaXNjL21rZTJmcy5jOjI1ODEgbWlzYy90dW5lMmZzLmM6MjY0NAorIzogcmVzaXplL21haW4uYzoyMjEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgInByb3ZhbmRvIGEgcmlkaW1lbnNpb25hcmUgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHNldHVwIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiXG4iCisiXHRjZXJjYW5kbyBkaSBjcmVhcmUgaWwgZmlsZSBkaSBqb3VybmFsIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiRXJyb3JlOiB2ZXJzaW9uZSBvYnNvbGV0YSBkZWxsYSBsaWJyZXJpYSBleHQyZnMhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgInRlbnRhbmRvIGRpIGluaXppYWxpenphcmUgaWwgcHJvZ3JhbW1hIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHRVdGlsaXp6YW5kbyAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAic2VydmUgaWwgdGVybWluYWxlIHBlciBpbCByaXBhcm8gaW50ZXJhdHRpdm8iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzIGNlcmNhbmRvIHRyYSBpIGJsb2NjaGkgZGkgYmFja3VwLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkkgZGVzY3JpdHRvcmkgZGkgZ3J1cHBvIHNlbWJyYW5vIG5vbiB2YWxpZGkuLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICJkdXJhbnRlIGxhIGxldHR1cmEgZGVsbCdpbm9kZSBudW1lcm8gMSIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIiVzOiBub24gw6ggc3RhdG8gdHJvdmF0byB1biBzdXBlcmJsb2NjbyB2YWxpZG8gZGVsIGpvdXJuYWxcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxhIHJldmlzaW9uZSBkZWwgZmlsZSBzeXN0ZW0gc2VtYnJhIHRyb3BwbyBhbHRhIHBlciBxdWVzdGEgdmVyc2lvbmUgZGkgIgorImUyZnNjay5cbiIKKyIoTyBpbCBzdXBlci1ibG9jY28gZGVsIGZpbGUgc3lzdGVtIMOoIGRhbm5lZ2dpYXRvKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTkKK21zZ2lkICJDb3VsZCB0aGlzIGJlIGEgemVyby1sZW5ndGggcGFydGl0aW9uP1xuIgorbXNnc3RyICJFJyBwb3NzaWJpbGUgY2hlIHF1ZXN0YSBzaWEgdW5hIHBhcnRpemlvbmUgZGkgZGltZW5zaW9uZSB6ZXJvP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJTZXJ2ZSBhY2Nlc3NvIGRpIHRpcG8gJXMgYWwgZmlsZSBzeXN0ZW0gbyDDqCBuZWNlc3NhcmlvIGVzc2VyZSByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiRGV2aWNlIG5vbiBlc2lzdGVudGUgbyBkaSBzd2FwP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjkKK21zZ2lkICJGaWxlc3lzdGVtIG1vdW50ZWQgb3Igb3BlbmVkIGV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzMKKyMsIGZ1enp5Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiRGV2aWNlIG5vbiBlc2lzdGVudGUgbyBkaSBzd2FwP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIkRpc2NvIHByb3RldHRvIGRhIHNjcml0dHVyYTogdXNhcmUgbCdvcHppb25lIC1uIHBlciBjb250cm9sbGFyZVxuIgorImluIG1vZGFsaXTDoCBzb2xhIGxldHR1cmEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiVXRpbGl6emFyZSB1bmEgdmVyc2lvbmUgcGnDuSBudW92YSBkaSBlMmZzY2suIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICJjb250cm9sbGFuZG8gaWwgam91cm5hbCBleHQzIHBlciAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNjUxCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGggZmlsZSBzeXN0ZW0gY2hlY2siCittc2dzdHIgIkltcG9zc2liaWxlIHByb2NlZGVyZSBzZW56YSB1biBAci5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIkF0dGVuemlvbmU6IGVzc2VuZG8gdW4gY29udHJvbGxvIGEgc29sYSBsZXR0dXJhLCBpbCBqb3VybmFsIG5vbiB2ZXJyw6AgIgorInJpcHJpc3RpbmF0by5cbiIKKworIyBmdXp6eQorIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJpbXBvc3NpYmlsZSBpbXBvc3RhcmVpIGkgZmxhZyBkZWwgc3VwZXJibG9jY28gYSAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gJXNcbiIKK21zZ3N0ciAiU3VwZXJibG9jY28gZGVsIGpvdXJuYWwgbm9uIHRyb3ZhdG8hXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIKK21zZ3N0ciAiSm91cm5hbCByaW1vc3NvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJyaXByaXN0aW5hbmRvIGlsIGpvdXJuYWwgZXh0MyBkaSAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIkwnQGggJWkgaGEgdW5hIHZlcnNpb25lIGRlbGwnaGFzaCBub24gc3VwcG9ydGF0YSAoJU4pXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICJsZWdnZW5kbyBsJ2lub2RlIG51bWVybyAxIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIlF1ZXN0byBub24gw6ggdW4gYnVvbiBzZWdubywgbWEgc2kgdGVudGVyw6AgZGkgY29udGludWFyZS4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICJDcmVhemlvbmUgZGVsIGpvdXJuYWwgKCVkIGJsb2NjaGkpOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTgzMAorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJhbm51bGxhdG8iCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlczogZTJmc2NrIGNhbmNlbGxhdG8uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICJSaWF2dmlvIGRpIGUyZnNjayBkYWxsJ2luaXppby4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAicmVzZXR0YW5kbyBpbCBjb250ZXN0byIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiBJTCBGSUxFIFNZU1RFTSDDiCBTVEFUTyBNT0RJRklDQVRPICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqIFJJQVZWSUFSRSBMSU5VWCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIEFUVEVOWklPTkU6IElsIGZpbGUgc3lzdGVtIGNvbnRpZW5lIGFuY29yYSBlcnJvcmkgIgorIioqKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJzUyIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8cz4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKHMvbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJjYW5jZWxsYXRvIVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NgorbXNnaWQgInllc1xuIgorbXNnc3RyICJzw6xcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJub1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gbm9cbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBzw6xcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJ5ZXMiCittc2dzdHIgInPDrCIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibm8iCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgImxldHR1cmEgZGVsbGUgbWFwcGUgZGkgYml0IGlub2RlIGUgYmxvY2NvIgorCisjOiBlMmZzY2svdXRpbC5jOjMxOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXRyeWluZyB0byByZWFkIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICJyaXByb3ZhbmRvIGEgbGVnZ2VyZSBsZSBtYXBwZSBkaSBiaXQgcGVyICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorIywgZnV6enkKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICJzY3JpdmVuZG8gbGUgbWFwcGUgZGkgYml0IGRpIGJsb2NjbyIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgInJpcHJvdmFuZG8gYSBzY3JpdmVyZSBsZSBtYXBwZSBkaSBiaXQgZGkgaW5vZGUgcGVyICVzIgorCisjIGZ1enp5CisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IElOQ09OU0lTVEVOWkEgSU5BU1BFVFRBVEE6IEVTRUdVSVJFIGZzY2sgTUFOVUFMTUVOVEUuXG4iCisiXHQoZXMuLCBzZW56YSBsZSBvcHppb25pIC1hIG8gLXApXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDI5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIk1lbW9yaWEgdXNhdGE6ICVkay8lZGsgKCVkay8lZGspLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIk1lbW9yaWEgdXNhdGE6ICVkLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDQwCisjLCBjLWZvcm1hdAorbXNnaWQgInRpbWU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCittc2dzdHIgImR1cmF0YTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIgorbXNnc3RyICJ0ZW1wbyByaW1hbmVudGU6ICU2LjNmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDgwIGUyZnNjay91dGlsLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAibGVnZ2VuZG8gbCdpbm9kZSAlbGQgaW4gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAic2NyaXZlbmRvIGwnaW5vZGUgJWxkIGluICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3MgorIywgZnV6enkKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJmYXR0byAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiVXNvOiAlcyBbLWIgZGltX2Jsb2Njb10gWy1pIGZpbGVfZGlfaW5wdXRdIFstbyBmaWxlX2RpX291dHB1dF0gWy1zdnduZl1cbiIKKyIgWy1jIGJsb2Nrc19hdF9vbmNlXSBbLXAgbnVtX3Bhc3NpXSBbLXQgbW9kZWxsb19kaV9wcm92YSBbLXQgIgorIm1vZGVsbG9fZGlfcHJvdmEgWy4uLl1dXVxuIgorIiBkZXZpY2UgW2Jsb2Njb19maW5hbGUgW2Jsb2Njb19pbml6aWFsZV1dXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICJDb250cm9sbG8gY29uIHVuIG1vZGVsbG8gY2FzdWFsZTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM0NgorbXNnaWQgIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IgorbXNnc3RyICJDb250cm9sbG8gY29uIG1vZGVsbG8gMHgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgImR1cmFudGUgbGEgcmljZXJjYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJWYWxvcmUgc3RyYW5vICglbGQpIG5lbGxhIGRvX3JlYWRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICJkdXJhbnRlIGxhIGV4dDJmc19zeW5jX2RldmljZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0OTYgbWlzYy9iYWRibG9ja3MuYzo3NTgKK21zZ2lkICJ3aGlsZSBiZWdpbm5pbmcgYmFkIGJsb2NrIGxpc3QgaXRlcmF0aW9uIgorbXNnc3RyICJpbml6aWFuZG8gYSBzY29ycmVyZSBsYSBsaXN0YSBkZWkgYmxvY2NoaSBkaWZldHRvc2kiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJhbGxvY2FuZG8gaSBidWZmZXIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkNvbnRyb2xsbyBkZWkgYmxvY2NoaSBkYSAlbHUgYSAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJSaWNlcmNhIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkgaW4gbW9kYWxpdMOgIHNvbGEgbGV0dHVyYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiUmljZXJjYSBkZWkgYmxvY2NoaSBub24gdmFsaWRpICh0ZXN0IGEgc29sYSBsZXR0dXJhKTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MTgKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAiUmljZXJjYSBkZWkgYmxvY2NoaSBub24gdmFsaWRpIGluIG1vZGFsaXTDoCBsZXR0dXJhLXNjcml0dHVyYVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYyMCBtaXNjL2JhZGJsb2Nrcy5jOjc4MgorIywgYy1mb3JtYXQKK21zZ2lkICJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiRGFsIGJsb2NjbyAlbHUgYWwgYmxvY2NvICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICJMZXR0dXJhIGUgY29uZnJvbnRvOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisiUmljZXJjYSBkZWkgYmxvY2NoaSBub24gdmFsaWRpIGluIG1vZGFsaXTDoCBsZXR0dXJhLXNjcml0dHVyYSBub24gIgorImRpc3RydXR0aXZhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIiIKKyJSaWNlcmNhIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkgKHRlc3QgaW4gbW9hbGl0w6AgbGV0dHVyYS1zY3JpdHR1cmEgbm9uICIKKyJkaXN0cnV0dGl2YSlcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIlJpbGV2YXRvIGludGVycnVwdCwgcHVsaXppYSBpbiBjb3Jzb1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgImR1cmFudGUgbGEgc2NyaXR0dXJhIGRlaSBkYXRpIGRlbCB0ZXN0LCBibG9jY28gJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyDDqCBtb250YXRvOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorIywgZnV6enkKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiZm9yemF0byBjb211bnF1ZSBiYWRibG9ja3MuIFNwZXJpYW1vIGNoZSAvZXRjL210YWIgc2kgZXJyYXRvLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgIm5vbiDDqCBzaWN1cm8gZXNlZ3VpcmUgYmFkYmxvY2tzIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKKyMsIGZ1enp5Cittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgImZvcnphdG8gY29tdW5xdWUgYmFkYmxvY2tzLiBTcGVyaWFtbyBjaGUgL2V0Yy9tdGFiIHNpIGVycmF0by5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgImludGVydmFsbG8gbm9uIHZhbGlkbyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgImltcG9zc2liaWxlIGFsbG9jYXJlIG1lbW9yaWEgcGVyIGlsIG1vZGVsbG8gZGkgcHJvdmEgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIiIKKyJFJyBwb3NzaWJpbGUgc3BlY2lmaWNhcmUgdW4gc29sbyBtb2RlbGxvIGRpIHByb3ZhIGluIG1vZGFsaXTDoCBzb2xhIGxldHR1cmEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE5MAorbXNnaWQgIlJhbmRvbSB0ZXN0X3BhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIk1vZGVsbG8gZGkgcHJvdmEgY2FzdWFsZSBub24gY29uc2VudGl0byBpbiBtb2RhbGl0w6Agc29sYSBsZXR0dXJhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorIkltcG9zc2liaWxlIGRldGVybWluYXJlIGxhIGRpbWVuc2lvbmUgZGVsIGRldmljZTpcbiIKKyJzcGVjaWZpY2FybGEgbWFudWFsbWVudGVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAidGVudGFuZG8gZGkgZGV0ZXJtaW5hcmUgbGEgZGltZW5zaW9uZSBkZWwgZGV2aWNlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKKyMsIGZ1enp5Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAiUmlsb2NhemlvbmUgZGVpIGJsb2NjaGkiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorIywgZnV6enkKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAiUHJpbW8gYmxvY2NvIGRhdGk9JXVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IgorbXNnc3RyICJjcmVhbmRvIGxhIGxpc3RhIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkgaW4gbWVtb3JpYSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhZGRpbmcgdG8gaW4tbWVtb3J5IGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJhZ2dpdW5nZW5kbyB1biBlbGVtZW50byBhbGxhIGxpc3RhIGRlaSBibG9jY2hpIGRpZmV0dG9zaSBpbiBtZW1vcmlhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICJQYXNzbyBjb21wbGV0YXRvLiAldSBibG9jY2hpIG5vbiB2YWxpZGkgdHJvdmF0aS5cbiIKKworIzogbWlzYy9jaGF0dHIuYzo4OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgInVzbzogJXMgWy1SVl0gWy0rPUFhY0RkaWpzU3VdIFstdiB2ZXJzaW9uZV0gZmlsZS4uLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICJ2ZXJzaW9uZSBub24gdmFsaWRhIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJ2ZXJzaW9uZSBub24gdmFsaWRhIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgInRlbnRhbmRvIGRpIGZhcmUgbG8gc3RhdCBkaSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAibGVnZ2VuZG8gaSBmbGFnIGRpICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICJmbGFnIGRpICVzIGltcG9zdGF0aSBjb21lIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJpbXBvc3RhbmRvIGkgZmxhZyBkaSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlZlcnNpb25lIGRpICVzIGltcG9zdGF0YSBhICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgImltcG9zdGFuZG8gbGEgdmVyc2lvbmUgYSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJWZXJzaW9uZSBkaSAlcyBpbXBvc3RhdGEgYSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiaW1wb3N0YW5kbyBsYSB2ZXJzaW9uZSBhICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICJJbXBvc3NpYmlsZSBhbGxvY2FyZSBsYSB2YXJpYWJpbGUgZGkgcGVyY29yc28gbmVsbGEgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9IMOoIGluY29tcGF0aWJpbGUgY29uICsgZSAtXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIlNpIGRldmUgdXNhcmUgJy12JywgPSwgLSBvICtcbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAibGVnZ2VuZG8gbCdpbm9kZSAlbGQgaW4gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgImVzcGFuZGVuZG8gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICJhdnZpYW5kbyBsYSBzY2Fuc2lvbmUgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiCittc2dzdHIgInNjcml2ZW5kbyBsJ2lub2RlICVsZCBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgInRlbnRhbmRvIGRpIGZhcmUgbG8gc3RhdCBkaSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgIm5lbGwnYXZ2aWFyZSBsJ2FuYWxpc2kgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgImFsbG9jYW5kbyBpIGJ1ZmZlciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgImxlZ2dlbmRvIGkgZmxhZyBkaSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAic2NyaXZlbmRvIGwnaW5vZGUgJWxkIGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2xvc2luZyBpbm9kZSAldSIKK21zZ3N0ciAiZHVyYW50ZSBsYSBzY2Fuc2lvbmUgZGVsbCdpbm9kZSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJhbGxvY2FuZG8gaSBidWZmZXIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgImxlZ2dlbmRvIGwnaW5vZGUgJWxkIGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM0MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiCittc2dzdHIgImxlZ2dlbmRvIGkgZmxhZyBkaSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgXCIlc1wiIgorbXNnc3RyICJjZXJjYW5kbyAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgImNyZWFuZG8gbGEgZGlyZWN0b3J5IHJvb3QiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIFwiJXNcIiB0byBjb3B5IgorbXNnc3RyICJhdnZpYW5kbyBsYSBzY2Fuc2lvbmUgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJhdnZpYW5kbyBsYSBzY2Fuc2lvbmUgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgInRlbnRhbmRvIGRpIGZhcmUgbG8gc3RhdCBkaSAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSBcIiVzXCIiCittc2dzdHIgImxlZ2dlbmRvIGwnaW5vZGUgJWxkIGluICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJBbGxvY2F6aW9uZSBkaSBtZW1vcmlhIG5vbiByaXVzY2l0YSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJwcm92YW5kbyBhIHJpZGltZW5zaW9uYXJlICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgInNjcml2ZW5kbyBsJ2lub2RlICVsZCBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgZmlsZSBcIiVzXCIiCittc2dzdHIgInNjcml2ZW5kbyBsJ2lub2RlICVsZCBpbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJhdnZpYW5kbyBsYSBzY2Fuc2lvbmUgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAibGV0dHVyYSBibG9jY28gZGlyZWN0b3J5IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAiaW1wb3N0YW5kbyBsYSB2ZXJzaW9uZSBhICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAiaW1wb3N0YW5kbyBpIGZsYWcgZGkgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJpbml6aWFuZG8gbGEgc2NhbnNpb25lIGRlZ2xpIGlub2RlIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1iZmdoaXhWXSBbLW8gc3VwZXJibG9jaz08bnVtPl0gWy1vIGJsb2Nrc2l6ZT08bnVtPl0gZGV2aWNlXG4iCittc2dzdHIgIlVzbzogJXMgWy1iZmhpeFZdIFstb2Igc3VwZXJibG9jY29dIFstb0IgZGltX2Jsb2Njb10gZGV2aWNlXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNTkKKyMsIGZ1enp5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJiYmxvY2NvIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcnVwcG8gJWx1OiAoQmxvY2NoaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGNzdW0gMHglMDR4IgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChFWFBFQ1RFRCAweCUwNHgpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAlcyBzdXBlcmJsb2NrIGF0ICIKK21zZ3N0ciAiIHN1cGVyYmxvY2NvICVzIGEgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiUHJpbWFyeSIKK21zZ3N0ciAiUHJpbWFyaW8iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIkJhY2t1cCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIERlc2NyaXR0b3JpIGRpIGdydXBwbyBhICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiYmxvY2NoaSByaXNlcnZhdGkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBEZXNjcml0dG9yaSBkaSBncnVwcG8gYSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICBNYXBwYSBkZWkgYml0IGRpIGJsb2NjbyBhICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2CisjLCBmdXp6eQorbXNnaWQgIiBJbm9kZSBiaXRtYXAgYXQgIgorbXNnc3RyICIsIG1hcHBhIGRlaSBiaXQgaW5vZGUgYSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIFRhdm9sYSBkZWdsaSBpbm9kZSBhICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKyJcbiIKKyIgICVkIGJsb2NjaGkgbGliZXJpLCAlZCBpbm9kZSBsaWJlcmksICVkIGRpcmVjdG9yeVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODkKK21zZ2lkICIgIEZyZWUgYmxvY2tzOiAiCittc2dzdHIgIiAgQmxvY2NoaSBsaWJlcmk6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAiICBJbm9kZSBsaWJlcmk6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJzdGFtcGFuZG8gbGEgbGlzdGEgZGVpIGJsb2NjaGkgZGlmZXR0b3NpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2tzOiAldSIKK21zZ3N0ciAiQmxvY2NoaSBub24gdmFsaWRpOiAlZCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM4NSBtaXNjL3R1bmUyZnMuYzozNjIKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgImxlZ2dlbmRvIGwnaW5vZGUgZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJsZWdnZW5kbyBsJ2lub2RlIGRlbCBqb3VybmFsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAibGVnZ2VuZG8gaWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlciBpbnZhbGlkIVxuIgorbXNnc3RyICJTdXBlcmJsb2NjbyBkZWwgam91cm5hbCBub24gdHJvdmF0byFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIkRpbWVuc2lvbmUgZGVpIGJsb2NjaGkgZGVsIGpvdXJuYWw6ICAgJWRcbiIKKyJEaW1lbnNpb25lIGRlbCBqb3VybmFsOiAgICAgICAgICAgICAgICVkXG4iCisiUHJpbW8gYmxvY2NvIGRlbCBqb3VybmFsOiAgICAgICAgICAgICAlZFxuIgorIlNlcXVlbnphIGRlbCBqb3VybmFsOiAgICAgICAgICAgICAgICAgb3glMDh4XG4iCisiSW5pemlvIGRlbCBqb3VybmFsOiAgICAgICAgICAgICAgICAgICAlZFxuIgorIk51bWVybyBkaSB1dGVudGkgZGVsIGpvdXJuYWw6ICAgICAgICAgJWRcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ2NiBtaXNjL3R1bmUyZnMuYzoyMTEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAibGVnZ2VuZG8gaWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICJJbXBvc3NpYmlsZSB0cm92YXJlIGkgbWFnaWMgbnVtYmVycyBkZWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgICV1XG4iCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgZmlyc3QgYmxvY2s6ICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIG51bWJlciBvZiB1c2VyczogICV1XG4iCittc2dzdHIgIiIKKyJcbiIKKyJEaW1lbnNpb25lIGRlaSBibG9jY2hpIGRlbCBqb3VybmFsOiAgICVkXG4iCisiRGltZW5zaW9uZSBkZWwgam91cm5hbDogICAgICAgICAgICAgICAlZFxuIgorIlByaW1vIGJsb2NjbyBkZWwgam91cm5hbDogICAgICAgICAgICAgJWRcbiIKKyJTZXF1ZW56YSBkZWwgam91cm5hbDogICAgICAgICAgICAgICAgIG94JTA4eFxuIgorIkluaXppbyBkZWwgam91cm5hbDogICAgICAgICAgICAgICAgICAgJWRcbiIKKyJOdW1lcm8gZGkgdXRlbnRpIGRlbCBqb3VybmFsOiAgICAgICAgICVkXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorIywgZnV6enkKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgYWxsb2NhcmUgbWVtb3JpYSBwZXIgZmFyZSBpbCBwYXJzaW5nIGRlbGxlIG9wemlvbmkgcmFpZCFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFtZXRybyBkaSBzdHJpZGUgbm9uIHZhbGlkby5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKyJcbiIKKyJPcHppb25pIHJhaWQgbm9uIHZhbGlkZS5cbiIKKyJcbiIKKyJMZSBvcHppb25pIHJhaWQgc29ubyBzZXBhcnRlIGRhIHZpcmdvbGUsIGUgcG9zc29ubyBhdmVyZSB1biBwYXJhbWV0cm8sIGNoZVxuIgorIlx0w6ggcGFzc2F0byBkYSB1biBzZWdubyBkaSB1Z3VhbGUgKCc9JykuXG4iCisiXG4iCisiTGUgb3B6aW9uaSByYWlkIHZhbGlkZSBzb25vOlxuIgorIlx0c3RyaWRlPWx1bmdoZXp6YSBzdHJpZGUgaW4gYmxvY2NoaT5cbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdFVzYW5kbyAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJJbXBvc3NpYmlsZSB0cm92YXJlIHVuIHZhbGlkbyBzdXBlci1ibG9jY28gcGVyIGlsIGZpbGUgc3lzdGVtLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzI2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gYml0bWFwcyEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAlczogZXJyb3IgcmVhZGluZyBiaXRtYXBzOiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICVzOiBlcnJvcmUgbGVnZ2VuZG8gbGUgbWFwcGUgZGkgYml0OiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlVzbzogJXMgWy1yXSBkaXNwb3NpdGl2byBmaWxlX2ltbWFnaW5lXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlVzbzogJXMgWy1yXSBkaXNwb3NpdGl2byBmaWxlX2ltbWFnaW5lXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICJhbGxvY2FuZG8gaSBidWZmZXIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIkNvbnRyb2xsbyBkZWkgYmxvY2NoaSBkYSAlbHUgYSAlbHVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgIkVycm9yZSBuZWxsbyBzY3JpdmVyZSBpbCBibG9jY28gJWx1ICglcykuICAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIkltcG9zc2liaWxlIGFsbG9jYXJlIGlsIGJ1ZmZlciBkJ2ludGVzdGF6aW9uZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgInNjcml2ZW5kbyBpbCBzdXBlcmJsb2NjbyIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAic2NyaXZlbmRvIGxhIHRhdm9sYSBkZWdsaSBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgInNjcml2ZW5kbyBsYSBtYXBwYSBkZWkgYml0IGRlbCBibG9jY28iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJzY3JpdmVuZG8gbGEgbWFwcGEgZGVpIGJpdCBkZWxsJ2lub2RlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCByZWNfbGVuICglZClcbiIKK21zZ3N0ciAiQmxvY2NvIGRpcmVjdG9yeSAldSAoIyVkKSB2dW90byBuZWxsJ2lub2RlICV1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAiQmxvY2NvIGRpcmVjdG9yeSAldSAoIyVkKSB2dW90byBuZWxsJ2lub2RlICV1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSIKK21zZ3N0ciAiJXUgaW5vZGUsICV1IGJsb2NjaGlcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTg5IG1pc2MvZTJpbWFnZS5jOjYyOQorbXNnaWQgIkNvcHlpbmcgIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY2NCBtaXNjL2UyaW1hZ2UuYzoxMTkxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgIkVycm9yZSBuZWwgbGVnZ2VyZSBpbCBibG9jY28gJWx1ICglcykuICAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAiYWxsb2NhbmRvIGkgYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAiYWxsb2NhbmRvIGkgYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiY2hpYW1hbmRvIGV4dDJmc19ibG9ja19pdGVyYXRlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJjaGlhbWFuZG8gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyNzIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgInNjcml2ZW5kbyBsYSBtYXBwYSBkZWkgYml0IGRlbCBibG9jY28iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBzY3JhbWJsZSBibG9jayBiaXRtYXAiCittc2dzdHIgInNjcml2ZW5kbyBsYSBtYXBwYSBkZWkgYml0IGRlbCBibG9jY28iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKKyMsIGZ1enp5Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGVzLi4uXG4iCittc2dzdHIgIlNjYW5zaW9uZSBkZWxsYSB0YXZvbGEgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICJJbXBvc3NpYmlsZSBhbGxvY2FyZSBpbCBidWZmZXIgYmxvY2NvIChkaW1lbnNpb25lPSVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzM5IG1pc2MvZTJpbWFnZS5jOjEzNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJuZWwgcmVjdXBlcmFyZSBsJ2lub2RlIHN1Y2Nlc3Npdm8iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDcKKyMsIGZ1enp5Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJsZWdnZW5kbyBsZSBtYXBwZSBkZWkgYml0IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgIm5lbGwnYXZ2aWFyZSBsJ2FuYWxpc2kgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MzAKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAic2NyaXZlbmRvIGxhIHRhdm9sYSBkZWdsaSBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTUyNworbXNnaWQgIi1hIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggcmF3IG9yIFFDT1cyIGltYWdlcy4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTUzCisjLCBmdXp6eQorbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgIiAoY29udHJvbGxvIHRyYSAlbGQgbW91bnQpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBjb21wcmVzc2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJMJ29wemlvbmUgLXQgbm9uIMOoIHN1cHBvcnRhdGEgZGEgcXVlc3RhIHZlcnNpb25lIGRpIGUyZnNjay5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorIywgZnV6enkKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICJMJ29wemlvbmUgLXQgbm9uIMOoIHN1cHBvcnRhdGEgZGEgcXVlc3RhIHZlcnNpb25lIGRpIGUyZnNjay5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAiYWxsb2NhbmRvIGkgYnVmZmVyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtcCBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiTCdvcHppb25lIC10IG5vbiDDqCBzdXBwb3J0YXRhIGRhIHF1ZXN0YSB2ZXJzaW9uZSBkaSBlMmZzY2suXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiVXNvOiAlcyBkaXNjb1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVsOiBpbXBvc3NpYmlsZSBhcHJpcmUgJXNcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBpbXBvc3NpYmlsZSByYWdnaXVuZ2VyZSBpbCBzdXBlcmJsb2Njb1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogZXJyb3JlIGR1cmFudGUgbGEgbGV0dHVyYSBkZWwgc3VwZXJibG9jY29cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogbm90IGFuIGV4dDIgZmlsZXN5c3RlbVxuIgorbXNnc3RyICJlMmxhYmVsOiBub24gw6ggdW4gZmlsIGVzeXN0ZW0gZXh0MlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICJBdHRlbnppb25lOiB0cm9uY2FtZW50byBkZWxsJ2V0aWNoZXR0YSwgdHJvcHBvIGx1bmdhLlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9jayBhZ2FpblxuIgorbXNnc3RyICJlMmxhYmVsOiBpbXBvc3NpYmlsZSBzcG9zdGFyc2kgbnVvdmFtZW50ZSBzdWwgc3VwZXJibG9jY29cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBlcnJvcmUgZHVyYW50ZSBsYSBzY3JpdHR1cmEgZGVsIHN1cGVyYmxvY2NvXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIlVzbzogZTJsYWJlbCBkZXZpY2UgW251b3ZhX2V0aWNoZXR0YV1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCittc2dpZCAiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICJsZWdnZW5kbyBpbCBzdXBlcmJsb2NjbyBkZWwgam91cm5hbCIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAic2NyaXZlbmRvIGlsIHN1cGVyYmxvY2NvIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiSWwgY2hlY2tzdW0gZGVsIHN1cGVyLWJsb2NjbyBub24gY29ycmlzcG9uZGUgYWwgc3VwZXItYmxvY2NvIgorCisjOiBtaXNjL2UydW5kby5jOjMzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgIm5lbGwnYXZ2aWFyZSBsJ2FuYWxpc2kgZGVnbGkgaW5vZGUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICJjcmVhbmRvIGwnaW5vZGUgcm9vdCIKKworIzogbWlzYy9lMnVuZG8uYzozNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIlczogdHJvcHBpIGRldmljZVxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IEhlYWRlciBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJJbCBjaGVja3N1bSBkZWwgc3VwZXItYmxvY2NvIG5vbiBjb3JyaXNwb25kZSBhbCBzdXBlci1ibG9jY28iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICJFeHRlbnQgaW50ZXN0YXppb25lIGRhbm5lZ2dpYXRvIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVua25vd24gdW5kbyBmaWxlIGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICIiCisiSWwgQFMgZGVsIEBqIGV4dDMgaGEgaW1wb3N0YXRvIGlsIGZsYWcgZGkgdW5hIGNhcmF0dGVyaXN0aWNhIG5vbiAiCisiY29tcGF0aWJpbGUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJkZXRlcm1pbmFuZG8gc2UgJXMgw6ggbW9udGF0by4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAiYXZ2aWFuZG8gbGEgc2NhbnNpb25lIGRlZ2xpIGlub2RlIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAibGVnZ2VuZG8gbGUgbWFwcGUgZGVpIGJpdCIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIkRhbCBibG9jY28gJWx1IGFsIGJsb2NjbyAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NTggbWlzYy9lMnVuZG8uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJDb250cm9sbG8gZGVpIGJsb2NjaGkgZGEgJWx1IGEgJWx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiRXJyb3JlIG5lbGxvIHNjcml2ZXJlIGlsIGJsb2NjbyAlbHUgKCVzKS4gICIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIkFUVEVOWklPTkU6IGltcG9zc2liaWxlIGFwcmlyZSAlczogJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGJhZCBmb3JtYXQgb24gbGluZSAlZCBvZiAlc1xuIgorbXNnc3RyICJBVFRFTlpJT05FOiBmb3JtYXRvIG5vbiB2YWxpZG8gYWxsYSBsaW5lYSAlZCBkaSAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJBVFRFTlpJT05FOiBJbCBmaWxlIC9ldGMvZnN0YWIgbm9uIGNvbnRpZW5lIGlsIGNhbXBvIGZzY2tcbiIKKyJcdHBhc3NuLiBMJ2Vycm9yZSB2ZXJyw6AgaWdub3JhdG8sIG1hIGlsIGZpbGUgL2V0Yy9mc3RhYiBkb3ZyZWJiZVxuIgorIlx0ZXNzZXJlIHNpc3RlbWF0byBhbCBwacO5IHByZXN0by5cbiIKKyJcbiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXM6IG5vbiB0cm92YXRvXG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiBhc3BldHRhOiBOb24gY2kgc29ubyBwcm9jZXNzaSBmaWdsaT8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiQXR0ZW56aW9uZS4uLiAlcyBwZXIgaWwgZGV2aWNlICVzIMOoIHVzY2l0byBjb24gaWwgc2VnbmFsZSAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBsbyBzdGF0byDDqCAleCwgbm9uIGRvdnJlYmJlIGF2dmVuaXJlIG1haS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJUZXJtaW5hdG8gY29uICVzIChzdGF0byBkaSB1c2NpdGEgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBFcnJvcmUgJWQgZXNlZ3VlbmRvIGZzY2suICVzIHBlciAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIlR1dHRpLCBvIG5lc3N1bm8sIGkgdGlwaSBkaSBmaWxlIHN5c3RlbSBwYXNzYXRpIGNvbiBsJ29wemlvbmUgLXQgZGV2b25vICIKKyJlc3NlcmUgcHJlY2VkdXRpXG4iCisiZGEgXCJub1wiIG8gXCIhXCIuXG4iCisKKyM6IG1pc2MvZnNjay5jOjc2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZmlsZXN5c3RlbSB0eXBlc1xuIgorbXNnc3RyICJJbXBvc3NpYmlsZSBhbGxvY2FyZSBtZW1vcmlhIHBlciBpIHRpcGkgZGkgZmlsZSBzeXN0ZW1cbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZzY2suYzo5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogY2Fubm90IGNoZWNrICVzOiBmc2NrLiVzIG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiBpbXBvc3NpYmlsZSBjb250cm9sbGFyZSAlczogZnNjay4lcyBub24gdHJvdmF0b1xuIgorCisjOiBtaXNjL2ZzY2suYzo5NjcKK21zZ2lkICJDaGVja2luZyBhbGwgZmlsZSBzeXN0ZW1zLlxuIgorbXNnc3RyICJDb250cm9sbG8gZGkgdHV0dGkgaSBmaWxlIHN5c3RlbS5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS1hdHRlc2EtLSAocGFzc28gJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKKyMsIGZ1enp5Cittc2dpZCAiIgorIlVzYWdlOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgZnN0eXBlXSBbZnMtb3B0aW9uc10gW2ZpbGVzeXMgLi4uXVxuIgorbXNnc3RyICJVc286IGZzY2sgWy1BQ05QUlRWXSBbLXQgdGlwb2ZzXSBbb3B6aW9uaS1mc10gW2ZpbGVzeXMgLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiB0cm9wcGkgZGV2aWNlXG4iCisKKyM6IG1pc2MvZnNjay5jOjExNTMgbWlzYy9mc2NrLmM6MTIzOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogdG9vIG1hbnkgYXJndW1lbnRzXG4iCittc2dzdHIgIiVzOiB0cm9wcGkgcGFyYW1ldHJpXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKK21zZ2lkICJNb3VudGluZyByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NiBtaXNjL2Z1c2UyZnMuYzozNzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc3IG1pc2MvZnVzZTJmcy5jOjM3OTEgbWlzYy90dW5lMmZzLmM6MzIwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisiRXNlZ3VpcmUgcHJpbWEgJ2UyZnNjayAtZiAlcycuXG4iCisiXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogV3JpdGluZyB0byB0aGUgam91cm5hbCBpcyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiSW1wb3N0YXppb25lIGRpIGRhdGEgZWQgb3JhIGRlbGwndWx0aW1vIGNvbnRyb2xsbyBkZWwgZmlsZSBzeXN0ZW0gYSAlc1xuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICJVc286ICVzIFtSVmFkbHZdIFtmaWxlIC4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJEdXJhbnRlIGxhIGxldHR1cmEgZGVpIGZsYWcgZGkgJXMiCisKKyM6IG1pc2MvbHNhdHRyLmM6OTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiRHVyYW50ZSBsYSBsZXR0dXJhIGRlbGxhIHZlcnNpb25lIGRpICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIkR1cmFudGUgbGEgbGV0dHVyYSBkZWxsYSB2ZXJzaW9uZSBkaSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jfC1sIGZpbGVuYW1lXSBbLWIgYmxvY2stc2l6ZV0gWy1DIGNsdXN0ZXItc2l6ZV1cbiIKKyJcdFstaSBieXRlcy1wZXItaW5vZGVdIFstSSBpbm9kZS1zaXplXSBbLUogam91cm5hbC1vcHRpb25zXVxuIgorIlx0Wy1HIGZsZXgtZ3JvdXAtc2l6ZV0gWy1OIG51bWJlci1vZi1pbm9kZXNdIFstZCByb290LWRpcmVjdG9yeV1cbiIKKyJcdFstbSByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZV0gWy1vIGNyZWF0b3Itb3NdXG4iCisiXHRbLWcgYmxvY2tzLXBlci1ncm91cF0gWy1MIHZvbHVtZS1sYWJlbF0gWy1NIGxhc3QtbW91bnRlZC1kaXJlY3RvcnldXG4iCisiXHRbLU8gZmVhdHVyZVssLi4uXV0gWy1yIGZzLXJldmlzaW9uXSBbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXVxuIgorIlx0Wy10IGZzLXR5cGVdIFstVCB1c2FnZS10eXBlIF0gWy1VIFVVSURdIFstZSBlcnJvcnNfYmVoYXZpb3JdWy16ICIKKyJ1bmRvX2ZpbGVdXG4iCisiXHRbLWpucXZERlNWXSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cbiIKK21zZ3N0ciAiIgorIlVzbzogJXMgWy1jfC10fC1sIG5vbWVmaWxlXSBbLWIgZGltX2Jsb2NjaGldIFstZiBkaW1fZnJhbW1lbnRvXVxuIgorIlx0Wy1pIGJ5dGUtcGVyLWlub2RlXSBbLWpdIFstSiBvcHppb25pLWpvdXJuYWxdIFstTiBudW1lcm8tZGktaW5vZGVdXG4iCisiXHRbLW0gcGVyY2VudHVhbGUtYmxvY2NoaS1yaXNlcnZhdGldIFstbyBvcy1vcmlnaW5lXSBbLWcgYmxvY2NoaS1wZXItIgorImdydXBwb11cbiIKKyJcdFstTCBldGljaGV0dGEtdm9sdW1lXSBbLU0gdWx0aW1hLWRpci1tb250YXRhXSBbLU8gY2FyYXR0ZXJpc3RpY2FbLC4uLl1dXG4iCisiXHRbLXIgcmV2aXNpb25lLWZzXSBbLVIgb3B6X3JhaWRdIFstcXZTVl0gZGV2aWNlIFtudW1lcm8tYmxvY2NoaV1cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICJFc2VjdXppb25lIGRlbCBjb21hbmRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJ1biAnJXMnIgorbXNnc3RyICJwcm92YW5kbyBhIGNhcmljYXJlICclcyciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJhbmFsaXp6YW5kbyB1bmEgbGlzdGEgZGkgYmxvY2NoaSBub24gdmFsaWRpIGRhbCBwcm9ncmFtbWEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICIiCisiQmxvY2NvICVkIG5vbiB2YWxpZG8gbmVsIHN1cGVyYmxvY2NvIHByaW1hcmlvL2FyZWEgZGVsIGRlc2NyaXR0b3JlIGRpICIKKyJncnVwcG8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJJIGJsb2NjaGkgZGEgJXUgYSAldSBkZXZvbm8gZXNzZXJlIHZhbGlkaSBwZXIgY29zdHJ1aXJlIHVuIGZpbGUgc3lzdGVtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5OAorbXNnaWQgIkFib3J0aW5nLi4uLlxuIgorbXNnc3RyICJBbm51bGxhbWVudG8uLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJBdHRlbnppb25lOiBpbCBzdXBlcmJsb2NjbyBkaSBiYWNrdXAvZGVzY3JpdHRvcmkgZGkgZ3J1cHBvIGFpIGJsb2NjaGkgJWRcbiIKKyJcdGNvbnRlbmdvbm8gYmxvY2NoaSBub24gdmFsaWRpLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICJjb250cmFzc2VnbmFuZG8gaSBibG9jY2hpIG5vbiB2YWxpZGkgY29tZSB1dGlsaXp6YXRpIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIlNjcml0dHVyYSBkZWxsZSB0YXZvbGUgZGVnbGkgaW5vZGU6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3Qgd3JpdGUgJWQgYmxvY2tzIGluIGlub2RlIHRhYmxlIHN0YXJ0aW5nIGF0ICVsbHU6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJJbXBvc3NpYmlsZSBzY3JpdmVyZSAlZCBibG9jY2hpIG5lbGxhIHRhdm9sYSBkZWdsaSBpbm9kZSBpbml6aWFuZG8gZGEgJWQ6ICIKKyIlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ0NCBtaXNjL21rZTJmcy5jOjI2NTQgbWlzYy9ta2UyZnMuYzozMDMwCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiZmF0dG8gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAiY3JlYW5kbyBsYSBkaXJlY3Rvcnkgcm9vdCIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgImNyZWFuZG8gbCdpbm9kZSByb290IgorCisjOiBtaXNjL21rZTJmcy5jOjQ3OAorbXNnaWQgIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiCittc2dzdHIgImltcG9zdGFuZG8gaSBwZXJtZXNzaSBkZWxsJ2lub2RlIHJvb3QiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDk2Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgImNyZWFuZG8gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiY2VyY2FuZG8gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJlc3BhbmRlbmRvIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUzMQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJpbXBvc3RhbmRvIGwnaW5vZGUgZGVsIGJsb2NjbyBkaWZldHRvc28iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIkZpbmUgbWVtb3JpYSBjYW5jZWxsYW5kbyBpIHNldHRvcmkgJWQtJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiQXR0ZW56aW9uZTogaW1wb3NzaWJpbGUgbGVnZ2VyZSBpbCBibG9jY28gMDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIKK21zZ3N0ciAiQXR0ZW56aW9uZTogaW1wb3NzaWJpbGUgY2FuY2VsbGFyZSBpbCBzZXR0b3JlICVkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjYwMAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgImluaXppYWxpenphbmRvIGlsIHN1cGVyYmxvY2NvIGRlbCBqb3VybmFsIgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiQXp6ZXJhbWVudG8gZGVsIGRldmljZSBkaSBqb3VybmFsaW5nOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgImF6emVyYW5kbyBpbCBkZXZpY2UgZGkgam91cm5hbGluZyAoYmxvY2NvICV1LCBudW1lcm8gJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJzY3JpdmVuZG8gaWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICJDcmVhemlvbmUgZGVsIGZpbGUgc3lzdGVtIGNvbiAlbGx1ICVkayBibG9jY2hpIGUgJXUgaW5vZGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJhdHRlbnppb25lOiAlZCBibG9jY2hpIGludXRpbGl6emF0aS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBsYWJlbD0lc1xuIgorbXNnc3RyICJFdGljaGV0dGEgZGVsIGZpbGUgc3lzdGVtPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJUaXBvIFNPOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiRGltZW5zaW9uZSBibG9jY289JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJEaW1lbnNpb25lIGJsb2Njbz0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3NworIywgYy1mb3JtYXQKK21zZ2lkICJGcmFnbWVudCBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIkRpbWVuc2lvbmUgZnJhbW1lbnRvPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBpbm9kZSwgJXUgYmxvY2NoaVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIldSBibG9jY2hpICglMi4yZiUlKSByaXNlcnZhdGkgcGVyIGwndXRlbnRlIHJvb3RcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJQcmltbyBibG9jY28gZGF0aT0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgIkJsb2NjaGkgbWFzc2ltaSBuZWwgZmlsZSBzeXN0ZW09JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSBncnVwcGkgZGkgYmxvY2NoaVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgZ3J1cHBvIGRpIGJsb2NjaGlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9jY2hpIHBlciBncnVwcG8sICV1IGZyYW1tZW50aSBwZXIgZ3J1cHBvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxvY2NoaSBwZXIgZ3J1cHBvLCAldSBmcmFtbWVudGkgcGVyIGdydXBwb1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMworIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGlub2RlIHBlciBncnVwcG9cbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJFdGljaGV0dGEgZGVsIGZpbGUgc3lzdGVtPSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiQmFja3VwIGRlbCBzdXBlcmJsb2NjbyBzYWx2YXRpIG5laSBibG9jY2hpOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHJlcXVpcmVzICctTyA2NGJpdCdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgxMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIG11c3QgYmUgYmVmb3JlICdyZXNpemU9JXUnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo4MjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgIlBhcmFtZXRybyBkaSBzdHJpZGUgbm9uIHZhbGlkby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICJQYXJhbWV0cm8gZGkgc3RyaWRlIG5vbiB2YWxpZG8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAibW9kZWxsbyBkaSBwcm92YSBub24gdmFsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCAjIG9mIGJhY2t1cCBzdXBlcmJsb2NrczogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJQYXJhbWV0cm8gZGkgc3RyaWRlIG5vbiB2YWxpZG8uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlBhcmFtZXRybyBkaSBzdHJpZGUgbm9uIHZhbGlkby5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6OTU4Cittc2dpZCAiT24tbGluZSByZXNpemluZyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIKK21zZ3N0ciAiSW5zaWVtZSBkaSBvcHppb25pIGRpIG1vdW50IG5vbiB2YWxpZG86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjExMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBta2UyZnMgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIlNldCBkaSBvcHppb25pIGRlbCBmaWxlIHN5c3RlbSBub24gdmFsaWRvOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiSW5zaWVtZSBkaSBvcHppb25pIGRpIG1vdW50IG5vbiB2YWxpZG86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNzAKKyMsIGZ1enp5Cittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiQW5udWxsYW1lbnRvLi4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgYWxsb2NhcmUgbWVtb3JpYSBwZXIgaSB0aXBpIGRpIGZpbGUgc3lzdGVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogJWxkKS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJkaW1lbnNpb25lIGRlbCBibG9jY28gZGlmZXR0b3NvIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJBdHRlbnppb25lOiBsYSBkaW1lbnNpb25lIGRpIGJsb2NjbyAlZCBub24gw6ggdXRpbGl6emFiaWxlIHN1IG1vbHRpIHNpc3RlbWkuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJkaW1lbnNpb25lIGZpbGUgc3lzdGVtIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjAwCittc2dpZCAiJy1SJyBpcyBkZXByZWNhdGVkLCB1c2UgJy1FJyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgLSAlcyIKK21zZ3N0ciAiY29tcG9ydGFtZW50byByZWxhdGl2byBhZCB1biBlcnJvcmUgbm9uIHZhbGlkbyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAiTnVtZXJvIGRpIGJsb2NjaGkgcGVyIGdydXBwbyBub24gdmFsaWRvIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiaSBibG9jY2hpIHBlciBncnVwcG8gZGV2b25vIGVzc2VyZSBtdWx0aXBsaSBkaSA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKKyMsIGZ1enp5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiTnVtZXJvIGRpIGJsb2NjaGkgcGVyIGdydXBwbyBub24gdmFsaWRvIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSByYXRpbyAlcyAobWluICVkL21heCAlZCkiCittc2dzdHIgInRhc3NvIGRpIGlub2RlIG5vbiB2YWxpZG8gJXMgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJkaW1lbnNpb25lIGlub2RlIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjgzCittc2dpZCAiIgorIldhcm5pbmc6IC1LIG9wdGlvbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYW55bW9yZS4gVXNlICctRSAiCisibm9kaXNjYXJkJyBleHRlbmRlZCBvcHRpb24gaW5zdGVhZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgIm5lbGxhIG1hbGxvYyBwZXIgYmFkX2Jsb2Nrc19maWxlbmFtZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiQXR0ZW56aW9uZTogdHJvbmNhbWVudG8gZGVsbCdldGljaGV0dGEsIHRyb3BwbyBsdW5nYS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzEyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiCittc2dzdHIgInBlcmNlbnR1YWxlIGRpIGJsb2NjaGkgcmlzZXJ2YXRpIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICJkaW1lbnNpb25lIGlub2RlIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgImFsbG9jYW5kbyBpIGJ1ZmZlciIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAidmVyc2lvbmUgbm9uIHZhbGlkYSAtICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAiIgorIlxuIgorIlx0Y2VyY2FuZG8gZGkgY3JlYXJlIGlsIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc3NgorIywgZnV6enkKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiLW8gcHXDsiBlc3NlcmUgc3BlY2lmaWNhdGEgc29sbyB1bmEgdm9sdGEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorIywgZnV6enkKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiLW8gcHXDsiBlc3NlcmUgc3BlY2lmaWNhdGEgc29sbyB1bmEgdm9sdGEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAiZHVyYW50ZSBsJ2FwZXJ0dXJhIGRlbCBkaXNwb3NpdGl2byBkaSBqb3VybmFsaW5nICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorIkRpbWVuc2lvbmUgZGVpIGJsb2NjaGkgZGVsIGRldmljZSBkaSBqb3VybmFsaW5nICglZCkgbWlub3JlIGRlbGxhIGRpbSBtaW5pbWEgIgorImRlaSBibG9jY2hpICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNpbmcgam91cm5hbCBkZXZpY2UncyBibG9ja3NpemU6ICVkXG4iCittc2dzdHIgIkFnZ2l1bnRhIGRlbCBqb3VybmFsIGFsIGRldmljZSAlczogIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9ja3MgJyVzJyBvbiBkZXZpY2UgJyVzJyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJmaWxlIHN5c3RlbSIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgInRlbnRhbmRvIGRpIGRldGVybWluYXJlIGxhIGRpbWVuc2lvbmUgZGVsIGZpbGUgc3lzdGVtIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDYKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiIgorIkltcG9zc2liaWxlIGRldGVybWluYXJlIGxhIGRpbWVuc2lvbmUgZGVsIGRldmljZTogYmlzb2duYVxuIgorInNwZWNpZmljYXJlIGxhIGRpbWVuc2lvbmUgZGVsIGZpbGUgc3lzdGVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkxMworbXNnaWQgIiIKKyJEZXZpY2Ugc2l6ZSByZXBvcnRlZCB0byBiZSB6ZXJvLiAgSW52YWxpZCBwYXJ0aXRpb24gc3BlY2lmaWVkLCBvclxuIgorIlx0cGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgYWZ0ZXIgcnVubmluZyBmZGlzaywgZHVlIHRvXG4iCisiXHRhIG1vZGlmaWVkIHBhcnRpdGlvbiBiZWluZyBidXN5IGFuZCBpbiB1c2UuICBZb3UgbWF5IG5lZWQgdG8gcmVib290XG4iCisiXHR0byByZS1yZWFkIHlvdXIgcGFydGl0aW9uIHRhYmxlLlxuIgorbXNnc3RyICIiCisiU2VtYnJhIGNoZSBsYSBkaW1lbnNpb25lIGRlbCBkZXZpY2Ugc2lhIHplcm8uIFNwZWNpZmljYXRhIHBhcnRpemlvbmUgbm9uXG4iCisiXHR2YWxpZGEgbyBsYSB0YWJlbGxhIGRlbGxlIHBhcnRpemlvbmkgbm9uIMOoIHN0YXRhIHJpbGV0dGEgZG9wbyAiCisibCdlc2VjdXppb25lXG4iCisiXHRkaSBmZGlzaywgcG9pY2jDqSB1bmEgcGFydGl6aW9uZSBtb2RpZmljYXRhIGVyYSBvY2N1cGF0YS4gUG90cmViYmUgZXNzZXJlXG4iCisiXHRuZWNlc3NhcmlvIHJpYXZ2aWFyZSBwZXIgcmlsZWdnZXJlIGxhIHRhYmVsbGEgZGVsbGUgcGFydGl6aW9uaS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIklsIGZpbGUgc3lzdGVtIMOoIHBpw7kgZ3JhbmRlIGRlbGxhIGRpbWVuc2lvbmUgYXBwYXJlbnRlIGRlbCBkZXZpY2UuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJJbCBrZXJuZWwgSHVyZCBub24gc3VwcG9ydGEgbGEgY2FyYXR0ZXJpc3RpY2EgZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBodWdlX2ZpbGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSWwga2VybmVsIEh1cmQgbm9uIHN1cHBvcnRhIGxhIGNhcmF0dGVyaXN0aWNhIGZpbGV0eXBlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJJbCBrZXJuZWwgSHVyZCBub24gc3VwcG9ydGEgbGEgY2FyYXR0ZXJpc3RpY2EgZmlsZXR5cGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgInByb3ZhbmRvIGEgZGV0ZXJtaW5hcmUgbGEgZGltZW5zaW9uZSBkZWwgc2V0dG9yZSBoYXJkd2FyZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgcGh5c2ljYWwgc2VjdG9yIHNpemUiCittc2dzdHIgInByb3ZhbmRvIGEgZGV0ZXJtaW5hcmUgbGEgZGltZW5zaW9uZSBkZWwgc2V0dG9yZSBoYXJkd2FyZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICJsZWdnZW5kbyBsJ2lub2RlIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA2MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiSm91cm5hbCBub24gc3VwcG9ydGF0aSBjb24gaWwgbnVtZXJvIGRpIHJldmlzaW9uZSAwIGRlbCBmaWxlIHN5c3RlbVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgInBlcmNlbnR1YWxlIGRpIGJsb2NjaGkgcmlzZXJ2YXRpIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyMTU2Cittc2dpZCAiIgorIkV4dGVudHMgTVVTVCBiZSBlbmFibGVkIGZvciBhIDY0LWJpdCBmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgImJsb2NjaGkgZGkgJWQgYnl0ZSB0cm9wcG8gZ3JhbmRpIHBlciBpbCBzaXN0ZW1hIChtYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIiIKKyJBdHRlbnppb25lOiBibG9jY2hpIGRpICVkIGJ5dGVzIHRyb3BwbyBncmFuZGkgcGVyIGlsIHNpc3RlbWEgKG1heCAlZCksICIKKyJjb250aW51byBjb211bnF1ZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBvZmZzZXQgc3BlY2lmaWVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZmlsZSBzeXN0ZW0gc2l6ZS5cbiIKKyJDcmVhdGluZyBhIGZpbGUgc3lzdGVtIHdpdGggJWxsdSBibG9ja3MgYnV0IHRoaXMgbWlnaHRcbiIKKyJub3QgYmUgd2hhdCB5b3Ugd2FudC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTIKK21zZ2lkICJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImNvbnRlZ2dpbyBkZWkgYmxvY2NoaSBwZXIgZ3J1cHBvIGZ1b3JpIGRhbGwnaW50ZXJ2YWxsbyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgJWQgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJkaW1lbnNpb25lIGRlbGwnaW5vZGUgbm9uIHZhbGlkYTogJWQgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgImNoaWFtYW5kbyBleHQyZnNfYmxvY2tfaXRlcmF0ZSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgaW5vZGVzIgorbXNnc3RyICJzY3JpdmVuZG8gbCdpbm9kZSBkZWwgam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJjb21wb3J0YW1lbnRvIHJlbGF0aXZvIGFkIHVuIGVycm9yZSBub24gdmFsaWRvIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgxNAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgImltcG9zdGFuZG8gaWwgc3VwZXJibG9jY28iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJTTyBzY29ub3NjaXV0byAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKKyMsIGZ1enp5Cittc2dpZCAiQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICIKK21zZ3N0ciAiU2NyaXR0dXJhIGRlbGxlIHRhdm9sZSBkZWdsaSBpbm9kZTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgInRlbnRhbmRvIGRpIGFsbG9jYXJlIGxlIHRhYmVsbGUgZGVsIGZpbGUgc3lzdGVtIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAic2NyaXZlbmRvIGxhIG1hcHBhIGRlaSBiaXQgZGVsIGJsb2NjbyIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJuZWxsJ2F6emVyYXJlIGlsIGJsb2NjbyAlbGx1IGFsbGEgZmluZSBkZWwgZmlsZSBzeXN0ZW0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJsZWdnZW5kbyBsJ2lub2RlIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAiam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBqb3VybmFsIHRvIGRldmljZSAlczogIgorbXNnc3RyICJBZ2dpdW50YSBkZWwgam91cm5hbCBhbCBkZXZpY2UgJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdGNlcmNhbmRvIGRpIGFnaWd1bmdlcmUgaWwgam91cm5hbCBhbCBkZXZpY2UgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgImZhdHRvXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTQ3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIkNyZWF6aW9uZSBkZWwgam91cm5hbCAoJWQgYmxvY2NoaSk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHRjZXJjYW5kbyBkaSBjcmVhcmUgaWwgam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBpcyBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkIHNlY29uZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTcKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiYWxsb2NhbmRvIGkgYnVmZmVyIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAiIgorIlNjcml0dHVyYSBkZWxsZSBpbmZvcm1hemlvbmkgZGVpIHN1cGVyLWJsb2NjaGkgZSBkZWxsJ2FjY291bnRpbmcgZGVsIGZpbGUgIgorInN5c3RlbTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTEKK21zZ2lkICIiCisiXG4iCisiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIgorbXNnc3RyICIiCisiXG4iCisiQXR0ZW56aW9uZSwgcHJvYmxlbWkgZHVyYW50ZSBsYSBzY3JpdHR1cmEgZGVpIHN1cGVyYmxvY2NoaS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJmYXR0b1xuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJmaWxlIHJlZ29sYXJlIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICIiCisiYXR0ZW56aW9uZTogJWQgYmxvY2NoaSBpbnV0aWxpenphdGkuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJuZWwgcmVjdXBlcmFyZSBsJ2lub2RlIHN1Y2Nlc3Npdm8iCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgIlVzbzogbWtsb3N0K2ZvdW5kXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo0MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlVzbzogJXMgPGRldjE+IDxkZXYyPiA8ZGV2Mz5cbiIKKyJcbiIKKyJRdWVzdG8gcHJvZ3JhbW1hIHN0YW1wYSBsZSBpbmZvcm1hemlvbmkgZGkgcGFydGl6aW9uZSBwZXIgdW4gaW5zaWVtZSBkaSAiCisiZGV2aWNlXG4iCisiVW4gdXRpbGl6em8gY29tdW5lIGRpIHF1ZXN0byBwcm9ncmFtbWEgw6g6XG4iCisiXG4iCisiXHQlcyAvZGV2L2hkYT9cbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgb3BlbiAlczogJXMiCittc2dzdHIgImUybGFiZWw6IGltcG9zc2liaWxlIGFwcmlyZSAlc1xuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiRXNlZ3VpcmUgZTJmc2NrIHN1bCBmaWxlIHN5c3RlbS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiRXNlZ3VpcmUgZTJmc2NrIHN1bCBmaWxlIHN5c3RlbS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJVc286ICVzIFstYyBtYXgtbnVtZXJvLW1vdW50XSBbLWUgY29tcG9ydGFtZW50by1lcnJvcmldIFstZyBncnVwcG9dXG4iCisiXHRbLWkgaW50ZXJ2YWxsb1tkfG18d11dIFstal0gWy1KIG9wemlvbmktam91cm5hbF1cbiIKKyJcdFstbF0gWy1zIGZsYWctc3BhcnNlXSBbLW0gcGVyY2VudHVhbGUtYmxvY2NoaS1yaXNlcnZhdGldXG4iCisiXHRbLW8gW15db3B6aW9uaS1tb3VudFssLi4uXV0gWy1yIG51bWVyby1ibG9jY2hpLXJpc2VydmF0aV1cbiIKKyJcdFstdSB1dGVudGVdIFstQyBudW1lcm8tbW91bnRdIFstTCBldGljaGV0dGEtdm9sdW1lXSBbLU0gdWx0aW1hLWRpci0iCisibW9udGF0YV1cbiIKKyJcdFstTyBbXl1jYXJhdHRlcmlzdGljYVssLi4uXV0gWy1UIHVsdGltby1jb250cm9sbG9dIFstVSBVVUlEXSBkZXZpY2VcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiU3VwZXJibG9jY28gZGVsIGpvdXJuYWwgbm9uIHRyb3ZhdG8hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3NgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgImNlcmNhbmRvIGRpIGFwcmlyZSBpbCBqb3VybmFsIGVzdGVybm8iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBub24gw6ggdW4gZGlzcG9zaXRpdm8gZGkgam91cm5hbGluZy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIlVVSUQgZGVsIGZpbGUgc3lzdGVtIG5vbiB0cm92YXRvIHN1bCBkaXNwb3NpdGl2byBkaSBqb3VybmFsaW5nLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTYKK21zZ2lkICIiCisiQ2Fubm90IGxvY2F0ZSBqb3VybmFsIGRldmljZS4gSXQgd2FzIE5PVCByZW1vdmVkXG4iCisiVXNlIC1mIG9wdGlvbiB0byByZW1vdmUgbWlzc2luZyBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAiSm91cm5hbCByaW1vc3NvXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAibGVnZ2VuZG8gbGUgbWFwcGUgZGVpIGJpdCIKKworIzogbWlzYy90dW5lMmZzLmM6Mzc3Cittc2dpZCAid2hpbGUgY2xlYXJpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiYXp6ZXJhbmRvIGwnaW5vZGUgZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAic2NyaXZlbmRvIGwnaW5vZGUgZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJFc2VndWlyZSBwcmltYSAnZTJmc2NrIC1mICVzJy5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiSW1wb3N0YXppb25lIGRpIGRhdGEgZWQgb3JhIGRlbGwndWx0aW1vIGNvbnRyb2xsbyBkZWwgZmlsZSBzeXN0ZW0gYSAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIklsIGZsYWcgaGFzX2pvdXJuYWwgcHXDsiBlc3NlcmUgYXp6ZXJhdG8gcXVhbmRvIGlsIGZpbGUgc3lzdGVtIG5vblxuIgorIsOoIG1vbnRhdG8gbyDDqCBtb250YXRvIHNvbG8gaW4gbGV0dHVyYS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIklsIGZsYWcgbmVlZHNfcmVjb3Zlcnkgw6ggaW1wb3N0YXRvLiBFc2VndWlyZSBlMmZzY2sgcHJpbWEgZGkgYXp6ZXJhcmVcbiIKKyJpbCBmbGFnIGhhc19qb3VybmFsLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJJbXBvc3RhemlvbmUgZGkgZGF0YSBlZCBvcmEgZGVsbCd1bHRpbW8gY29udHJvbGxvIGRlbCBmaWxlIHN5c3RlbSBhICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiSWwgZmxhZyBoYXNfam91cm5hbCBwdcOyIGVzc2VyZSBhenplcmF0byBxdWFuZG8gaWwgZmlsZSBzeXN0ZW0gbm9uXG4iCisiw6ggbW9udGF0byBvIMOoIG1vbnRhdG8gc29sbyBpbiBsZXR0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDgyCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaGFzIGJlZW4gZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZHMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgImxlZ2dlbmRvIGxlIG1hcHBlIGRlaSBiaXQiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgImxlZ2dlbmRvIGwnaW5vZGUgbnVtZXJvIDEiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiSWwgZmxhZyBoYXNfam91cm5hbCBwdcOyIGVzc2VyZSBhenplcmF0byBxdWFuZG8gaWwgZmlsZSBzeXN0ZW0gbm9uXG4iCisiw6ggbW9udGF0byBvIMOoIG1vbnRhdG8gc29sbyBpbiBsZXR0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExODIKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUnVuIHJlc2l6ZTJmcyAtYiB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQ0CisjLCBmdXp6eQorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkltcG9zdGF6aW9uZSBkaSBkYXRhIGVkIG9yYSBkZWxsJ3VsdGltbyBjb250cm9sbG8gZGVsIGZpbGUgc3lzdGVtIGEgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIklsIGZpbGUgc3lzdGVtIGhhIGdpw6AgdW4gam91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdHRlbnRhbmRvIGRpIGFwcmlyZSBpbCBqb3VybmFsIGluICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiQ3JlYW5kbyBpbCBqb3VybmFsIHBlciBpbCBkZXZpY2UgJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJhZ2dpdW5nZW5kbyB1biBmaWxlIHN5c3RlbSBhbCBqb3VybmFsIGluICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICJDcmVhemlvbmUgZGVsbCdpbm9kZSBkZWwgam91cm5hbDogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDYwCittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIGZpbGUiCittc2dzdHIgIiIKKyJcbiIKKyJcdGNlcmNhbmRvIGRpIGNyZWFyZSBpbCBmaWxlIGRpIGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0OTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJpbml6aWFsaXp6YW5kbyBpbCBzdXBlcmJsb2NjbyBkZWwgam91cm5hbCIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgIm5lbGwnYWdnaW9ybmFyZSBsJ2lub2RlIGRpIHVuIGJsb2NjbyBkYW5uZWdnaWF0byIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgInNjcml2ZW5kbyBsJ2lub2RlICVsZCBpbiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJjcmVhbmRvIGwnaW5vZGUgcm9vdCIKKworIzogbWlzYy90dW5lMmZzLmM6MTU3NQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRm9sbG93aW5nIHZhbGlkIHF1b3RhIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSAocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggIgorImNvbW1hKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICJJbXBvc3NpYmlsZSBjb21wcmVuZGVyZSBpbCBmb3JtYXRvIGRpIGRhdGEvb3JhOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTY1OCBtaXNjL3R1bmUyZnMuYzoxNjcxCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBtb3VudHMgY291bnQgLSAlcyIKK21zZ3N0ciAibnVtZXJvIGRpIG1vdW50IG5vbiB2YWxpZGkgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAiZ2lkL25vbWUgZ3J1cHBvIG5vbiB2YWxpZG8gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc0NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW50ZXJ2YWwgLSAlcyIKK21zZ3N0ciAiaW50ZXJ2YWxsbyBub24gdmFsaWRvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgInBlcmNlbnR1YWxlIGRpIGJsb2NjaGkgcmlzZXJ2YXRpIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItbyBwdcOyIGVzc2VyZSBzcGVjaWZpY2F0YSBzb2xvIHVuYSB2b2x0YSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItTyBwdcOyIGVzc2VyZSBzcGVjaWZpY2F0YSBzb2xvIHVuYSB2b2x0YSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIm51bWVybyBkaSBibG9jY2hpIHJpc2VydmF0aSBub24gdmFsaWRvIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAidWlkL25vbWUgdXRlbnRlIG5vbiB2YWxpZG8gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJkaW1lbnNpb25lIGlub2RlIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg3MAorIywgYy1mb3JtYXQKK21zZ2lkICJJbm9kZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28tICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0clswXSAiSW1wb3N0YXppb25lIGRlbCBudW1lcm8gbWFzc2ltbyBkaSBtb3VudCBhICVkXG4iCittc2dzdHJbMV0gIkltcG9zdGF6aW9uZSBkZWwgbnVtZXJvIG1hc3NpbW8gZGkgbW91bnQgYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICJJbnNpZW1lIGRpIG9wemlvbmkgZGkgbW91bnQgbm9uIHZhbGlkbzogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAxMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDI1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICJQYXJhbWV0cm8gZGkgc3RyaWRlIG5vbiB2YWxpZG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtIHRvICVzICglZClcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk9wemlvbmkgcmFpZCBub24gdmFsaWRlLlxuIgorIlxuIgorIkxlIG9wemlvbmkgcmFpZCBzb25vIHNlcGFydGUgZGEgdmlyZ29sZSwgZSBwb3Nzb25vIGF2ZXJlIHVuIHBhcmFtZXRybywgY2hlXG4iCisiXHTDqCBwYXNzYXRvIGRhIHVuIHNlZ25vIGRpIHVndWFsZSAoJz0nKS5cbiIKKyJcbiIKKyJMZSBvcHppb25pIHJhaWQgdmFsaWRlIHNvbm86XG4iCisiXHRzdHJpZGU9bHVuZ2hlenphIHN0cmlkZSBpbiBibG9jY2hpPlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICJsZWdnZW5kbyBsZSBtYXBwZSBkZWkgYml0IgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIgorbXNnc3RyICJsZXR0dXJhIGRlbGxlIG1hcHBlIGRpIGJpdCBpbm9kZSBlIGJsb2NjbyIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0MSByZXNpemUvcmVzaXplMmZzLmM6MTI3NgorbXNnaWQgImJsb2NrcyB0byBiZSBtb3ZlZCIKK21zZ3N0ciAiYmxvY2NoaSBkYSBzcG9zdGFyZSIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKKyMsIGZ1enp5Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICJsZWdnZW5kbyBsJ2lub2RlIGRlaSBibG9jY2hpIG5vbiB2YWxpZGkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzk5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgYmxvY2sgbWFnaWMgaXMgYmFkLiBUcnkgdG8gZml4IGl0IGJ5IHJ1bm5pbmc6XG4iCisiJ2UyZnNjayAtZiAlcydcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgbm9uIMOoIHVuIGRpc3Bvc2l0aXZvIGRpIGpvdXJuYWxpbmcuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICIiCisiSW1wb3N0YXppb25lIGRpIGRhdGEgZWQgb3JhIGRlbGwndWx0aW1vIGNvbnRyb2xsbyBkZWwgZmlsZSBzeXN0ZW0gYSAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgImRpbWVuc2lvbmUgZGVsbCdpbm9kZSBub24gdmFsaWRhOiAlZCAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4NDIKK21zZ2lkICJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIkltcG9zdGF6aW9uZSBkZWwgbnVtZXJvIG1hc3NpbW8gZGkgbW91bnQgYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgY3VycmVudCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIG51bWVybyBhdHR1YWxlIGRpIG1vdW50IGEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIGNvbXBvcnRhbWVudG8gZGEgZXJyb3JlIGEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIkltcG9zdGF6aW9uZSBkZWwgZ2lkIGRlaSBibG9jY2hpIHJpc2VydmF0aSBhICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICJpbCBudW1lcm8gZGkgYmxvY2NoaSByaXNlcnZhdGkgw6ggdHJvcHBvIGFsdG8gKCVsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAiSW1wb3N0YXppb25lIGRlbGwnaW50ZXJ2YWxsbyB0cmEgaSBjb250cm9sbGkgYSAlbHUgc2Vjb25kaVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTI0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICIiCisiSW1wb3N0YXppb25lIGRlbGxhIHBlcmNlbnR1YWxlIGRpIGJsb2NjaGkgcmlzZXJ2YXRpIGEgJWx1ICgldSBibG9jY2hpKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MgY291bnQgaXMgdG9vIGJpZyAoJWxsdSkiCittc2dzdHIgImlsIG51bWVybyBkaSBibG9jY2hpIHJpc2VydmF0aSDDqCB0cm9wcG8gYWx0byAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIG51bWVybyBkaSBibG9jY2hpIHJpc2VydmF0aSBhICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIklsIGZpbGUgc3lzdGVtIGhhIGdpw6AgZGVpIHN1cGVyLWJsb2NjaGkgc3BhcnNpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisKKyMgZnV6enkKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkNsZWFyaW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgImltcG9zc2liaWxlIGltcG9zdGFyZWkgaSBmbGFnIGRlbCBzdXBlcmJsb2NjbyBhICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIiIKKyJJbXBvc3RhemlvbmUgZGkgZGF0YSBlIG9yYSBkZWxsJ3VsdGltbyBjb250cm9sbG8gZGVsIGZpbGUgc3lzdGVtIGEgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIkltcG9zdGF6aW9uZSBkZWxsJ3VpZCBkZWkgYmxvY2NoaSByaXNlcnZhdGkgYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJJbCBmbGFnIGhhc19qb3VybmFsIHB1w7IgZXNzZXJlIGF6emVyYXRvIHF1YW5kbyBpbCBmaWxlIHN5c3RlbSBub25cbiIKKyLDqCBtb250YXRvIG8gw6ggbW9udGF0byBzb2xvIGluIGxldHR1cmEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiSWwgZmxhZyBoYXNfam91cm5hbCBwdcOyIGVzc2VyZSBhenplcmF0byBxdWFuZG8gaWwgZmlsZSBzeXN0ZW0gbm9uXG4iCisiw6ggbW9udGF0byBvIMOoIG1vbnRhdG8gc29sbyBpbiBsZXR0dXJhLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNjAKK21zZ2lkICJTZXR0aW5nIFVVSUQgb24gYSBjaGVja3N1bW1lZCBmaWxlc3lzdGVtIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJGb3JtYXRvIFVVSUQgbm9uIHZhbGlkb1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCisjLCBmdXp6eQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAibGV0dHVyYSBkZWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWxcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJJbCBmbGFnIGhhc19qb3VybmFsIHB1w7IgZXNzZXJlIGF6emVyYXRvIHF1YW5kbyBpbCBmaWxlIHN5c3RlbSBub25cbiIKKyLDqCBtb250YXRvIG8gw6ggbW9udGF0byBzb2xvIGluIGxldHR1cmEuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGlub2RlIHNpemUgJWx1XG4iCittc2dzdHIgImRpbWVuc2lvbmUgaW5vZGUgbm9uIHZhbGlkYSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJpbml6aWFuZG8gbGEgc2NhbnNpb25lIGRlZ2xpIGlub2RlIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTY5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlkZSBzaXplIHRvICVkXG4iCittc2dzdHIgIkltcG9zdGF6aW9uZSBkZWwgZ2lkIGRlaSBibG9jY2hpIHJpc2VydmF0aSBhICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIGdpZCBkZWkgYmxvY2NoaSByaXNlcnZhdGkgYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICJJbXBvc3RhemlvbmUgZGVsIG51bWVybyBhdHR1YWxlIGRpIG1vdW50IGEgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiJXM6IHJpcHJpc3Rpbm8gZGVsIGpvdXJuYWxcbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiUHJvY2VkZXJlIGNvbXVucXVlPyAocyxuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIlByb2NlZGVyZSBjb211bnF1ZT8gKHMsbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiIgorIm1rZTJmcyDDqCBzdGF0byBmb3J6YXRvIGNvbXVucXVlLiBTaSBzcGVyYSBjaGUgL2V0Yy9tdGFiIHNpYSBzYmFnbGlhdG8uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEzOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aWxsIG5vdCBtYWtlIGEgJXMgaGVyZSFcbiIKK21zZ3N0ciAibm9uIGZhcsOyIHVuICVzIHF1aSFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiIgorIkltcG9zc2liaWxlIGFsbG9jYXJlIG1lbW9yaWEgcGVyIGZhcmUgaWwgcGFyc2luZyBkZWxsZSBvcHppb25pIGRlbCBqb3VybmFsIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICJJbXBvc3NpYmlsZSB0cm92YXJlIGkgbWFnaWMgbnVtYmVycyBkZWwgc3VwZXJibG9jY28gZGVsIGpvdXJuYWwiCisKKyM6IG1pc2MvdXRpbC5jOjIxMworIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiQmFkIGpvdXJuYWwgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiSm91cm5hbCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgam91cm5hbCBvcHRpb25zIGFyZTpcbiIKKyJcdHNpemU9PGpvdXJuYWwgc2l6ZSBpbiBtZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PGpvdXJuYWwgZGV2aWNlPlxuIgorIlx0bG9jYXRpb249PGpvdXJuYWwgbG9jYXRpb24+XG4iCisiXG4iCisiVGhlIGpvdXJuYWwgc2l6ZSBtdXN0IGJlIGJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgZmlsZXN5c3RlbSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTb25vIHN0YXRlIHNwZWNpZmljYXRlIG9wemlvbmkgbm9uIHZhbGlkZSBwZXIgaWwgam91cm5hbC5cbiIKKyJcbiIKKyJMZSBvcHppb25pIHBlciBpbCBqb3VybmFsIHNvbm8gc2VwYXJhdGUgZGEgdmlyZ29sZSwgZSBwb3Nzb25vIGF2ZXJlIHVuICIKKyJwYXJhbWV0cm8sXG4iCisiXHRwYXNzYXRvIGRhIHVuIHNlZ25vIGRpIHVndWFsZSAoJz0nKS5cbiIKKyJcbiIKKyJPcHppb25pIHZhbGlkZSBwZXIgaWwgam91cm5hbCBzb25vOlxuIgorIlx0c2l6ZT08ZGltZW5zaW9uZSBkZWwgam91cm5hbCBpbiBNQj5cbiIKKyJcdGRldmljZT08ZGlzcG9zaXRpdm8gZGkgam91cm5hbD5cbiIKKyJcbiIKKyJMYSBkaW1lbnNpb25lIGRlbCBqb3VybmFsIGRldidlc3NlcmUgY29tcHJlc28gdHJhIDEwMjQgZSAxMDI0MDAgYmxvY2NoaSBkZWwgIgorImZpbGVzeXN0ZW0uXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRyb3BwbyBwaWNjb2xvIHBlciB1biBqb3VybmFsXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJMYSBkaW1lbnNpb25lIHNwZWNpZmljYXRhIGRlbCBqb3VybmFsIMOoIGRpICVkIGJsb2NjaGksIG1hIGVzc2FcbiIKKyJkZXYnZXNzZXJlIGNvbXByZXNhIHRyYSAxMDI0IGUgMTAyNDAwIGJsb2NjaGkuIE9wZXJhemlvbmUgYW5udWxsYXRhLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyJEaW1lbnNpb25lIGRlbCBqb3VybmFsIHRyb3BwbyBncmFuZGUgcGVyIGlsIGZpbGVzeXN0ZW0uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiUXVlc3RvIGZpbGVzeXN0ZW0gdmVycsOgIGF1dG9tYXRpY2FtZW50ZSBjb250cm9sbGF0byBvZ25pICVkIG1vdW50LCBvXG4iCisiJWcgZ2lvcm5pLCBhIHNlY29uZGEgZGkgcXVhbGUgdmVuZ2EgcHJpbWEuIFVzYXJlIHR1bmUyZnMgLWMgbyAtaSBwZXIgIgorImNhbWJpYXJlLlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIFstcnx0XSBbLW4gbnVtXSBbLXMgc29ja2V0cGF0aF1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjE1NQorIywgZnV6enkKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICJkaW1lbnNpb25lIGRlbCBmcmFtbWVudG8gbm9uIHZhbGlkYSAtICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MTczCittc2dpZCAiY29ubmVjdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjIwMAorbXNnaWQgInJlYWQgY291bnQiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJJbXBvc3NpYmlsZSBjb21wcmVuZGVyZSBpbCBmb3JtYXRvIGRpIGRhdGEvb3JhOiAlcyIKKworIzogbWlzYy91dWlkZC5jOjMwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYmluZCB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgdHJvdmFyZSBpbCBzdXBlcmJsb2NjbyBleHQyIgorCisjOiBtaXNjL3V1aWRkLmM6MzE2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIkltcG9zc2liaWxlIHJpY29ubmV0dGVyZSAlaTogJW1cbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAiRXJyb3JlIGR1cmFudGUgbGEgbGV0dHVyYSBkZWxsJ0BpICVpOiAlbVxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIm9wZXJhdGlvbiAlZCwgaW5jb21pbmcgbnVtID0gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjM5MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgcmFuZG9tIFVVSUQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogbWlzYy91dWlkZC5jOjQyMQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgJWQgVVVJRCdzOlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo0MzMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uICVkXG4iCittc2dzdHIgIlZlcnNpb25lIEVBIG5vbiB2YWxpZGEuXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAiRXJyb3JlIGNyZWFuZG8gbGEgQGQgL0BsICglcyk6ICVtXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIiCittc2dzdHJbMV0gIiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGtpbGwgdXVpZGQgcnVubmluZyBhdCBwaWQgJWQ6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjU5MgorIywgYy1mb3JtYXQKK21zZ2lkICJLaWxsZWQgdXVpZGQgcnVubmluZyBhdCBwaWQgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIlVzbzogJXMgWy1yXSBbLXRdXG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDIKKyMsIGZ1enp5Cittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBEdW1wIGVzdGVzbzpcbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIGRldmljZSBbLWJ8LXN8bmV3X3NpemVdICIKKyJbLXogdW5kb19maWxlXVxuIgorIlxuIgorbXNnc3RyICIiCisiVXNvOiAlcyBbLWQgZmxhZ19kaV9kZWJ1Z10gWy1mXSBbLUZdIFstcF0gZGV2aWNlIFtudW92YS1kaW1lbnNpb25lXVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjcyCittc2dpZCAiRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRXN0ZW5zaW9uZSBkZWxsYSB0YXZvbGEgZGVnbGkgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzUKK21zZ2lkICJSZWxvY2F0aW5nIGJsb2NrcyIKK21zZ3N0ciAiUmlsb2NhemlvbmUgZGVpIGJsb2NjaGkiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiU2NhbnNpb25lIGRlbGxhIHRhdm9sYSBkZWdsaSBpbm9kZSIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIkFnZ2lvcm5hbWVudG8gZGVpIHJpZmVyaW1lbnRpIGRlZ2xpIGlub2RlIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJTcG9zdGFtZW50byBkZWxsYSB0YXZvbGEgZGVnbGkgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgIlBhc3NvIHNjb25vc2NpdXRvPyE/IgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAiSW5pemlvIGRlbCBwYXNzbyAlZCAobWF4ID0gJWx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjE2MgorbXNnaWQgIiIKKyJcbiIKKyJSZXNpemluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbXMgaGFzIG5vdCBiZWVuIGZ1bGx5IHRlc3RlZC4gIFByb2NlZWQgYXRcbiIKKyJ5b3VyIG93biByaXNrISAgVXNlIHRoZSBmb3JjZSBvcHRpb24gaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW55d2F5LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICJhdnZpYW5kbyBsYSBzY2Fuc2lvbmUgZGVnbGkgaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICJpbXBvc3RhbmRvIGxhIHZlcnNpb25lIGEgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisiRXNlZ3VpcmUgcHJpbWEgJ2UyZnNjayAtZiAlcycuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjUyMAorbXNnaWQgIk5ldyBzaXplIHRvbyBsYXJnZSB0byBiZSBleHByZXNzZWQgaW4gMzIgYml0c1xuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiIgorIkRpbWVuc2lvbmUgZGVpIGJsb2NjaGkgZGVsIGRldmljZSBkaSBqb3VybmFsaW5nICglZCkgbWlub3JlIGRlbGxhIGRpbSBtaW5pbWEgIgorImRlaSBibG9jY2hpICVkXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0CisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkxhIHBhcnRpemlvbmUgKG8gZGV2aWNlKSBjb250ZW5lbnRlIMOoIHNvbG8gZGkgJWQgKCVkaykgYmxvY2NoaS5cbiIKKyJFJyBzdGF0YSByaWNoaWVzdGEgdW5hIG51b3ZhIGRpbWVuc2lvbmUgZGkgJWQgYmxvY2NoaS5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIklsIGZsYWcgaGFzX2pvdXJuYWwgcHXDsiBlc3NlcmUgYXp6ZXJhdG8gcXVhbmRvIGlsIGZpbGUgc3lzdGVtIG5vblxuIgorIsOoIG1vbnRhdG8gbyDDqCBtb250YXRvIHNvbG8gaW4gbGV0dHVyYS5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJJbCBmaWxlc3lzdGVtIMOoIGdpw6AgbHVuZ28gJWQgYmxvY2NoaS4gTnVsbGEgZGEgZmFyZSFcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICJJbCBmaWxlIHN5c3RlbSBoYSBnacOgIHVuIGpvdXJuYWwuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDMyLWJpdC5cbiIKK21zZ3N0ciAiSWwgZmlsZSBzeXN0ZW0gaGEgZ2nDoCB1biBqb3VybmFsLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byA2NC1iaXQuXG4iCittc2dzdHIgIiIKKyJJbXBvc3RhemlvbmUgZGkgZGF0YSBlIG9yYSBkZWxsJ3VsdGltbyBjb250cm9sbG8gZGVsIGZpbGUgc3lzdGVtIGEgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICIiCisiSW1wb3N0YXppb25lIGRpIGRhdGEgZSBvcmEgZGVsbCd1bHRpbW8gY29udHJvbGxvIGRlbCBmaWxlIHN5c3RlbSBhICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIklsIGZpbGVzeXN0ZW0gc3UgJXMgw6ggb3JhIGx1bmdvICVkIGJsb2NjaGkuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgInByb3ZhbmRvIGEgcmlkaW1lbnNpb25hcmUgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWZ5ICVzJyB0byBmaXggdGhlIGZpbGVzeXN0ZW1cbiIKKyJhZnRlciB0aGUgYWJvcnRlZCByZXNpemUgb3BlcmF0aW9uLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NjMwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJJbCBmaWxlc3lzdGVtIHN1ICVzIMOoIG9yYSBsdW5nbyAlZCBibG9jY2hpLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHRydW5jYXRlICVzIgorbXNnc3RyICJ0ZW50YW5kbyBkaSBmYXJlIGxvIHN0YXQgZGkgJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorIywgZnV6enkKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAiSWwgQGogZXN0ZXJubyBub24gc3VwcG9ydGEgcXVlc3RvIEBmXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6OTAKK21zZ2lkICJPbi1saW5lIHNocmlua2luZyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjIKKyMsIGZ1enp5Cittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAibGVnZ2VuZG8gbCdpbm9kZSBkZWkgYmxvY2NoaSBub24gdmFsaWRpIgorCisjOiByZXNpemUvb25saW5lLmM6MTI5CisjLCBmdXp6eQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiSWwga2VybmVsIEh1cmQgbm9uIHN1cHBvcnRhIGxhIGNhcmF0dGVyaXN0aWNhIGZpbGV0eXBlLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBtb3VudHBvaW50ICVzIgorbXNnc3RyICIiCisiXG4iCisiXHR0ZW50YW5kbyBkaSBhcHJpcmUgaWwgam91cm5hbCBpbiAlc1xuIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTY0IHJlc2l6ZS9vbmxpbmUuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAibGVnZ2VuZG8gbCdpbm9kZSBkZWkgYmxvY2NoaSBub24gdmFsaWRpIgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCisjLCBmdXp6eQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiSWwgQGogZXN0ZXJubyBub24gc3VwcG9ydGEgcXVlc3RvIEBmXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCisjLCBmdXp6eQorbXNnaWQgIldoaWxlIHRyeWluZyB0byBleHRlbmQgdGhlIGxhc3QgZ3JvdXAiCittc2dzdHIgImNlcmNhbmRvIGRpIGFwcmlyZSBpbCBqb3VybmFsIGVzdGVybm8iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBhZGQgZ3JvdXAgIyVkIgorbXNnc3RyICJkdXJhbnRlIGwnYXBlcnR1cmEgZGkgJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJibG9jY2hpIHJpc2VydmF0aSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEyODEKK21zZ2lkICJtZXRhLWRhdGEgYmxvY2tzIgorbXNnc3RyICJibG9jY2hpIGRpIG1ldGEtZGF0aSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKKyMsIGZ1enp5Cittc2dpZCAibmV3IG1ldGEgYmxvY2tzIgorbXNnc3RyICJibG9jY2hpIGRpIG1ldGEtZGF0aSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB1bml4IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGdlbmVyaWNfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2siCittc2dzdHIgIlZhbG9yZSBtYWdpYyBub24gY29ycmV0dG8gbmVsIHN1cGVyLWJsb2NjbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiTnVtZXJvIGRpIHJldmlzaW9uZSBkZWwgZmlsZXN5c3RlbSB0cm9wcG8gZWxldmF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIlRlbnRhdGl2byBkaSBzY3JpdmVyZSBzdSB1biBmaWxlc3lzdGVtIGFwZXJ0byBpbiBzb2xhIGxldHR1cmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworIywgZnV6enkKK21zZ2lkICJDYW4ndCByZWFkIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICIsIERlc2NyaXR0b3JpIGRpIGdydXBwbyBhICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM0CisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICIsIERlc2NyaXR0b3JpIGRpIGdydXBwbyBhICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNworbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzgKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJzY3JpdmVuZG8gbGUgbWFwcGUgZGkgYml0IGRpIGlub2RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgInNjcml2ZW5kbyBsZSBtYXBwZSBkaSBiaXQgZGkgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorIywgZnV6enkKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAic2NyaXZlbmRvIGxlIG1hcHBlIGRpIGJpdCBkaSBibG9jY28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MQorIywgZnV6enkKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJsZXR0dXJhIGRlbGxlIG1hcHBlIGRpIGJpdCBpbm9kZSBlIGJsb2NjbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJzY3JpdmVuZG8gbGEgdGF2b2xhIGRlZ2xpIGlub2RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDMKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiU2NhbnNpb25lIGRlbGxhIHRhdm9sYSBkZWdsaSBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ0Cittc2dpZCAiQ2FuJ3QgcmVhZCBuZXh0IGlub2RlIgorbXNnc3RyICJJbXBvc3NpYmlsZSBsZWdnZXJlIGwnaW5vZGUgc3VjY2Vzc2l2byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ1Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5leHBlY3RlZCBibG9jayBzaXplIgorbXNnc3RyICJJbCBmaWxlc3lzdGVtIGhhIHVuYSBkaW1lbnNpb25lIGRlbCBibG9jY28gbm9uIGF0dGVzYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJEaXJlY3RvcnkgRVhUMiBkYW5uZWdnaWF0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIlNwYXppbyBub24gc3VmZmljaWVudGUgbmVsbGEgZGlyZWN0b3J5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQml0bWFwIGRlZ2xpIGlub2RlIG5vbiBjYXJpY2F0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIkJpdG1hcCBkZWkgYmxvY2NoaSBub24gY2FyaWNhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJOdW1lcm8gZGkgaW5vZGUgbm9uIHZhbGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIk51bWVybyBkaSBibG9jY2hpIG5vbiB2YWxpZG8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTYKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKKyMsIGZ1enp5Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAibGV0dHVyYSBkZWkgYmxvY2NoaSBpbmRpcmV0dGkgZGVsbCdpbm9kZSAldSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY1CisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgZG91Ymx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJsZXR0dXJhIGRlaSBibG9jY2hpIGluZGlyZXR0aSBkZWxsJ2lub2RlICV1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKKyMsIGZ1enp5Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgImxldHR1cmEgZGVpIGJsb2NjaGkgaW5kaXJldHRpIGRlbGwnaW5vZGUgJXUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIiAgTWFwcGEgZGVpIGJpdCBkaSBibG9jY28gYSAgIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICIsIG1hcHBhIGRlaSBiaXQgaW5vZGUgYSAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OQorbXNnaWQgIklsbGVnYWwgb3IgbWFsZm9ybWVkIGRldmljZSBuYW1lIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzEKK21zZ2lkICJUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQiCittc2dzdHIgIklsIHN1cGVyLWJsb2NjbyBleHQyIMOoIGRhbm5lZ2dpYXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjczCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiVHJvdmF0aSB0cm9wcGkgY29sbGVnYW1lbnRpIHNpbWJvbGljaS4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICJMYSBmdW56aW9uZSBkaSBjYWxsYmFjayBub24gZ2VzdGlyw6AgcXVlc3RvIGNhc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTCdpbm9kZSBhcnJpdmEgZGEgdW4gYmxvY2NvIGRhbm5lZ2dpYXRvIG5lbGxhIHRhYmVsbGEgZGVnbGkgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OAorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MQorbXNnaWQgIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIKK21zZ3N0ciAiQWxsb2NhemlvbmUgZGkgbWVtb3JpYSBub24gcml1c2NpdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAiQXJnb21lbnRvIG5vbiB2YWxpZG8gcGFzc2F0byBhbGxhIGxpYnJlcmlhIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworIywgZnV6enkKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJJbXBvc3NpYmlsZSBhbGxvY2FyZSBtZW1vcmlhIHBlciBpIHRpcGkgZGkgZmlsZXN5c3RlbVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKKyMsIGZ1enp5Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiSW1wb3NzaWJpbGUgYWxsb2NhcmUgbWVtb3JpYSBwZXIgaSB0aXBpIGRpIGZpbGVzeXN0ZW1cbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorIywgZnV6enkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkJsb2NjbyBkaXJlY3RvcnkgJWQgKCMlZCkgdnVvdG8gbmVsbCdpbm9kZSAlZFxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiTGEgZGlyZWN0b3J5IEV4dDIgZXNpc3RlIGdpw6AiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MgorbXNnaWQgIlVzZXIgY2FuY2VsIHJlcXVlc3RlZCIKK21zZ3N0ciAiTCd1dGVudGUgaGEgYW5udWxsYXRvIGxhIHJpY2hpZXN0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgIkZpbGUgRXh0MiB0cm9wcG8gZ3JhbmRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1CisjLCBmdXp6eQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIlN1cGVyYmxvY2NvIGRlbCBqb3VybmFsIG5vbiB0cm92YXRvIVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorIywgZnV6enkKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgImNlcmNhbmRvIGRpIGFwcmlyZSBpbCBqb3VybmFsIGVzdGVybm8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorIywgZnV6enkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiU3VwZXJibG9jY28gZGVsIGpvdXJuYWwgbm9uIHRyb3ZhdG8hXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAxCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiYWF0dHJpYnV0byBlc3Rlc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKKyMsIGZ1enp5Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIjxJbm9kZSBkZWwgZGVzY3JpdHRvcmUgZGkgZ3J1cHBvPiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCOiBzdWNjZXNzbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBkYXRhYmFzZSBkYW5uZWdnaWF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOQorbXNnaWQgIlREQjogSU8gRXJyb3IiCittc2dzdHIgIlREQjogZXJyb3JlIEkvTyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMAorbXNnaWQgIlREQjogTG9ja2luZyBlcnJvciIKK21zZ3N0ciAiVERCOiBlcnJvcmUgbmVsbCdvdHRlbmVyZSBpbCBibG9jY28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTEKK21zZ2lkICJUREI6IE91dCBvZiBtZW1vcnkiCittc2dzdHIgIlREQjogbWVtb3JpYSBlc2F1cml0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCOiBpbCByZWNvcmQgZXNpc3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IGJsb2NjbyBlc2lzdGVudGUgc3UgYWx0cmUgY2hpYXZpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBwYXJhbWV0cm8gbm9uIHZhbGlkbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJUREI6IGlsIHJlY29yZCBub24gZXNpc3RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE2Cittc2dpZCAiVERCOiBXcml0ZSBub3QgcGVybWl0dGVkIgorbXNnc3RyICJUREI6IHNjcml0dHVyYSBub24gY29uc2VudGl0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBpbm9kZSBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAiRXh0ZW50IGludGVzdGF6aW9uZSBkYW5uZWdnaWF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJFeHRlbnQgaW5kaWNlIGRhbm5lZ2dpYXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgIkV4dGVudCBkYW5uZWdnaWF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMworbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gZXh0ZW50IG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgIkwnaW5vZGUgbm9uIHVzYSBnbGkgZXh0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQxCittc2dpZCAiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAiRXh0ZW50IG5vbiB0cm92YXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ3Cittc2dpZCAiQ2FuJ3QgY2hlY2sgaWYgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGR1ZSB0byBtaXNzaW5nIG10YWIgZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDkKK21zZ2lkICJNTVA6IGludmFsaWQgbWFnaWMgbnVtYmVyIgorbXNnc3RyICJNTVA6IG51bWVybyBtYWdpYyBub24gdmFsaWRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUwCittc2dpZCAiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKK21zZ3N0ciAiTU1QOiBkZXZpY2UgYXR0aXZvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBmc2NrIGluIGVzZWN1emlvbmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTIKK21zZ2lkICJNTVA6IGJsb2NrIG51bWJlciBiZXlvbmQgZmlsZXN5c3RlbSByYW5nZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKKyMsIGZ1enp5Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAiZGltZW5zaW9uZSBmaWxlc3lzdGVtIG5vbiB2YWxpZGEgLSAlcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCittc2dzdHIgIjxJbm9kZSBkZWwgZGVzY3JpdHRvcmUgZGkgZ3J1cHBvPiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTkKK21zZ2lkICJFeHRlbnQgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50IGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MQorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYzCittc2dpZCAiU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrIgorbXNnc3RyICJJbCBjaGVja3N1bSBkZWwgc3VwZXItYmxvY2NvIG5vbiBjb3JyaXNwb25kZSBhbCBzdXBlci1ibG9jY28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiQWxnb3JpdG1vIGRpIGNoZWNrc3VtIHNjb25vc2NpdXRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiSWwgY2hlY2tzdW0gZGVsIGJsb2NjbyBNTVAgbm9uIGNvcnJpc3BvbmRlIGFsIGJsb2NjbyBNTVAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIklsIGZpbGUgRXh0MiBlc2lzdGUgZ2nDoCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJJbCBjaGVja3N1bSBkZWwgYmxvY2NvIE1NUCBub24gY29ycmlzcG9uZGUgYWwgYmxvY2NvIE1NUCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJhYXR0cmlidXRvIGVzdGVzbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiYWF0dHJpYnV0byBlc3Rlc28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJMJ2lub2RlIG5vbiB1c2EgZ2xpIGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKKyMsIGZ1enp5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiU3BhemlvIG5vbiBzdWZmaWNpZW50ZSBuZWxsYSBkaXJlY3RvcnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MAorbXNnaWQgIklub2RlIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIG9mZnNldCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgyCittc2dpZCAiSm91cm5hbCBmbGFncyBpbmNvbnNpc3RlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MworbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKK21zZ2lkICJXcm9uZyB1bmRvIGZpbGUgZm9yIHRoaXMgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1CisjLCBmdXp6eQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiSWwgZmlsZXN5c3RlbSBoYSB1bmEgZGltZW5zaW9uZSBkZWwgYmxvY2NvIG5vbiBhdHRlc2EiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJJbCBzdXBlci1ibG9jY28gZXh0MiDDqCBkYW5uZWdnaWF0byIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIklsIGZpbGVzeXN0ZW0gaGEgdW5hIGRpbWVuc2lvbmUgZGVsIGJsb2NjbyBub24gYXR0ZXNhIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjExCittc2dpZCAiUHJvZmlsZSB2ZXJzaW9uIDAuMCIKK21zZ3N0ciAiUHJvZmlsbyB2ZXJzaW9uZSAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJWYWxvcmUgbWFnaWMgbm9uIGNvcnJldHRvIGluIHByb2ZpbGVfbm9kZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMworbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBub3QgZm91bmQiCittc2dzdHIgIlNlemlvbmUgZGVsIHByb2ZpbG8gbm9uIHRyb3ZhdGEiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTQKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiUmVsYXppb25lIGRlbCBwcm9maWxlIG5vbiB0cm92YXRhIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE1Cittc2dpZCAiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE5Cittc2dpZCAiQmFkIHBhcmVudCBwb2ludGVyIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGUgaXRlcmF0b3IiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMQorbXNnaWQgIkNhbid0IHNldCB2YWx1ZSBvbiBzZWN0aW9uIG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHByb2ZpbGUgbGlicmFyeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI1Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICJFcnJvcmUgZGkgc2ludGFzc2kgbmVsbGEgcmVsYXppb25lIGRlbCBwcm9maWxvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiUGFyZW50ZXNpIGRpIGFwZXJ0dXJhIG1hbmNhbnRlIG5lbCBwcm9maWxvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiVmFsb3JlIG1hZ2ljIG5vbiBjb3JyZXR0byBpbiBwcm9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCittc2dzdHIgIlZhbG9yZSBtYWdpYyBub24gY29ycmV0dG8gaW4gcHJvZmlsZV9zZWN0aW9uX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJPZ2dldHRvIHByb2ZpbGVfc2VjdGlvbiBub24gdmFsaWRvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiU2V6aW9uaSBlc2F1cml0ZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICJOYW1lc2V0IGVycmF0byBwYXNzYXRvIGFsbGEgcm91dGluZSBkaSBpbnRlcnJvZ2F6aW9uZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICJOZXNzdW4gZmlsZSBkaSBwcm9maWxvIGRhIGFwcmlyZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfdCIKK21zZ3N0ciAiVmFsb3JlIG1hZ2ljIG5vbiBjb3JyZXR0byBpbiBwcm9maWxlX2ZpbGVfdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICJJbXBvc3NpYmlsZSBhcHJpcmUgaWwgZmlsZSBkZWwgcHJvZmlsbyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkxhIHNlemlvbmUgZXNpc3RlIGdpw6AiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIlZhbG9yZSBib29sZWFubyBub24gdmFsaWRvIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICJWYWxvcmUgaW50ZXJvIG5vbiB2YWxpZG8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiVmFsb3JlIG1hZ2ljIG5vbiBjb3JyZXR0byBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIG9uICVzIgorbXNnc3RyICJudW1lcm8gZGkgbW91bnQgbm9uIHZhbGlkaSAtICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIgorbXNnc3RyICJudW1lcm8gZGkgbW91bnQgbm9uIHZhbGlkaSAtICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRjcmVhdGVkIG9uICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAiZmlsZSByZWdvbGFyZSIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogaW1wb3NzaWJpbGUgYXByaXJlICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyJTZW1icmEgY2hlIGlsIGRpc3Bvc2l0aXZvIG5vbiBlc2lzdGE7IMOoIHN0YXRvIHNwZWNpZmljYXRvIGNvcnJldHRhbWVudGU/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgbm9uIMOoIHVuIGRldmljZSBzcGVjaWFsZSBhIGJsb2NjaGkuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgY29udGllbmUgdW4gZmlsZSBzeXN0ZW0gJXMgY29uIGV0aWNoZXR0YSBcIiVzXCJcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAiJXMgY29udGllbmUgdW4gZmlsZSBzeXN0ZW0gJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgY29udGllbmUgdW4gZmlsZSBzeXN0ZW0gJXNcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICJFc2VndWlyZSBlMmZzY2sgc3VsIGZpbGUgc3lzdGVtLlxuIgorCisjLCBmdXp6eQorI34gbXNnaWQgIkludmFsaWQgcXVvdGF0eXBlIHBhcmFtZXRlcjogJXNcbiIKKyN+IG1zZ3N0ciAiUGFyYW1ldHJvIGRpIHN0cmlkZSBub24gdmFsaWRvLlxuIgorCisjLCBmdXp6eQorI34gbXNnaWQgIkBBIEBhIEBiICViLiAgIgorI34gbXNnc3RyICJMJ0BpICVpIGhhIHVuIEBhIGRpIEBiICViIG5vbiB2YWxpZG8uICIKKworIywgZnV6enkKKyN+IG1zZ2lkICIlczogd2FybmluZzogY29tcHJlc3Npb24gc3VwcG9ydCBpcyBleHBlcmltZW50YWwuXG4iCisjfiBtc2dzdHIgIkF0dGVuemlvbmU6IGlsIHN1cHBvcnRvIHBlciBsYSBjb21wcmVzc2lvbmUgw6ggc3BlcmltZW50YWxlLlxuIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBlMmZzY2sgbm90IGNvbXBpbGVkIHdpdGggSFRSRUUgc3VwcG9ydCxcbiIKKyN+ICJcdGJ1dCBmaWxlc3lzdGVtICVzIGhhcyBIVFJFRSBkaXJlY3Rvcmllcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBlMmZzY2sgbm9uIMOoIHN0YXRvIGNvbXBpbGF0byBjb24gaWwgc3VwcG9ydG8gSFRSRUUsXG4iCisjfiAiXHRtYSBpbCBmaWxlIHN5c3RlbSAlcyBjb250aWVuZSBkaXJlY3RvcnkgSFRSRUUuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHplcm9pemluZyBidWZmZXIiCisjfiBtc2dzdHIgImFsbG9jYW5kbyBpIGJ1ZmZlciB6ZXJvaXppbmciCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiLCB1bnVzZWQgaW5vZGVzICV1XG4iCisjfiBtc2dzdHIgIm1hcHBhIGRlZ2xpIGlub2RlIGluIHV0aWxpenpvIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIkxldHR1cmEgZGVpIGRhdGkgZGVsIGZpbGUgc3lzdGVtIG5vbiByaXVzY2l0YVxuIgorCisjLCBmdXp6eQorI34gbXNnaWQgIkZhaWxlZCB0byBvcGVuICVzXG4iCisjfiBtc2dzdHIgImR1cmFudGUgbCdhcGVydHVyYSBkaSAlcyIKKworIywgZnV6enkKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIKKyN+IG1zZ3N0ciAiIgorI34gIkltcG9zc2liaWxlIGFsbG9jYXJlIG1lbW9yaWEgcGVyIGZhcmUgaWwgcGFyc2luZyBkZWxsZSBvcHppb25pIHJhaWQhXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRkYiBmaWxlbmFtZVxuIgorI34gbXNnc3RyICJJbXBvc3NpYmlsZSBhbGxvY2FyZSBtZW1vcmlhIHBlciBpIHRpcGkgZGkgZmlsZSBzeXN0ZW1cbiIKKworI34gbXNnaWQgIiVzIGlzIGVudGlyZSBkZXZpY2UsIG5vdCBqdXN0IG9uZSBwYXJ0aXRpb24hXG4iCisjfiBtc2dzdHIgIiVzIMOoIHVuIGRldmljZSBpbnRlcm8sIG5vbiBzb2xvIHVuYSBwYXJ0aXppb25lLlxuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL25sLmdtbyBiL2UyZnNwcm9ncy9wby9ubC5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmMjMxMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9ubC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL25sLnBvIGIvZTJmc3Byb2dzL3BvL25sLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWEyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vbmwucG8KQEAgLTAsMCArMSw4NzExIEBACisjIER1dGNoIHRyYW5zbGF0aW9ucyBmb3IgZTJmc3Byb2dzLgorIyBDb3B5cmlnaHQgKEMpIDIwMTYgVGhlb2RvcmUgVHNvIChtc2dpZHMpCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMKKyMgIldpciBoYWJlbiBlaW5lIE1lbmdlIHZlcnNjaGllZGVuZXIgT3B0aW9uZW4gYmVrYW0uIgorIyBCZW5ubyBTY2h1bGVuYmVyZyA8YmVubm9AdmVydGFhbHQubmw+LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE2LgorIworIyBXb29yZGdlYnJ1aWs6CisjIGJsb2NrICAgLT4gYmxvaworIyBzZWN0b3IgIC0+IHNlY3RvcgorIyAoaW5vZGUgYmxpamZ0IG9udmVydGFhbGQpCisjIChleHRlbnQgYmxpamZ0IG9udmVydGFhbGQpCisjIChqb3VybmFsIGJsaWpmdCBvbnZlcnRhYWxkKQorIyAoJ3RyeWluZyB0bycgd29yZHQgd2VnZ2VsYXRlbikKKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MtMS40My4xXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA4LTA4IDEwOjQxKzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEJlbm5vIFNjaHVsZW5iZXJnIDxiZW5ub0B2ZXJ0YWFsdC5ubD5cbiIKKyJMYW5ndWFnZS1UZWFtOiBEdXRjaCA8dmVydGFsaW5nQHZyaWpzY2hyaWZ0Lm9yZz5cbiIKKyJMYW5ndWFnZTogbmxcbiIKKyJNSU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyJYLUdlbmVyYXRvcjogTG9rYWxpemUgMS4wXG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJTbGVjaHQgYmxvayAldSBsaWd0IGJ1aXRlbiBiZXJlaWs7IGdlbmVnZWVyZC5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJ0aWpkZW5zIGNvbnRyb2xlIHZhbiBkZSBzbGVjaHRlYmxva2tlbi1pbm9kZSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gZGUgc2xlY2h0ZWJsb2trZW4taW5vZGUiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJ0aWpkZW5zIG9wZW5lbiB2YW4gJXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo4MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgcG9wZW4gJyVzJyIKK21zZ3N0ciAidGlqZGVucyBlZW4gcG9wZW4oKSB2YW4gJXMiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gbGlqc3QgdmFuIHNsZWNodGUgYmxva2tlbiB1aXQgYmVzdGFuZCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAidGlqZGVucyBiaWp3ZXJrZW4gdmFuIGRlIGlub2RlIHZhbiBlZW4gc2xlY2h0IGJsb2siCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisiV2FhcnNjaHV3aW5nOiBvbmdlbGRpZyBibG9rICV1IGdldm9uZGVuIGluIGlub2RlIHZhbiBzbGVjaHQgYmxvay4gIEdld2lzdC5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIGxlemVuIHZhbiBibG9rICVsdSAoJXMpIHRpamRlbnMgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyBsZXplbiB2YW4gYmxvayAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjYgZTJmc2NrL2VoYW5kbGVyLmM6MTE1Cittc2dpZCAiSWdub3JlIGVycm9yIgorbXNnc3RyICJGb3V0IG5lZ2VyZW4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAiSGVyc2NocmlqdmVuIGFmZHdpbmdlbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIGJsb2sgJWx1ICglcykgdGlqZGVucyAlcy4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIGJsb2sgJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICJsZWdlIG1hcGJsb2trZW4iCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAibGVnZSBtYXB0YWJlbCIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIkxlZWcgbWFwYmxvayAldSAoIyVkKSBpbiBpbm9kZSAldS5cbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICJHZWJydWlrIHZhbiAlczogICVzIGJlc3RhbmRzbmFhbSBibG9ra2VuYWFudGFsIGJsb2tncm9vdHRlXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIk9uZ2VsZGlnIGFhbnRhbCBibG9ra2VuIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJLYW4gZ2VlbiBibG9rYnVmZmVyIHJlc2VydmVyZW4gKGdyb290dGU9JWQpLlxuIgorCisjOiBlMmZzY2svZXh0ZW50cy5jOjQyCisjLCBmdXp6eQorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAiYml0a2FhcnQgdmFuIG5vcm1hbGUgYmVzdGFuZGVuIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiR2VicnVpazogICVzIHNjaGlqZm5hYW1cbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiIgorImlvY3RsKEJMS0ZMU0JVRikgd29yZHQgbmlldCBvbmRlcnN0ZXVuZCEgIEthbiBidWZmZXJzIG5pZXQgbGVlZ21ha2VuLlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gZGV2aWNlXG4iCittc2dzdHIgIkdlYnJ1aWs6ICAlcyBbLUZdIFstSSBpbm9kZWJ1ZmZlcmJsb2trZW5dIGFwcGFyYWF0XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdmFuICVzIG9tIGRlemUgbGVlZyB0ZSBtYWtlbiIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAidGlqZGVucyBsZWVnbWFrZW4gdmFuICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdmFuICclcyciCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdm9vciBpbm9kZS1zY2FuIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAidGlqZGVucyBoYWxlbiB2YW4gdm9sZ2VuZGUgaW5vZGUiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiJXUgaW5vZGVzIGdlc2NhbmQuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NTkzCittc2dpZCAicmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAibGV6ZW4gdmFuIGpvdXJuYWwtc3VwZXJibG9rLi4uXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6IGdlZW4gZ2VsZGlnIGpvdXJuYWwtc3VwZXJibG9rIGdldm9uZGVuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogam91cm5hbCBpcyB0ZSBrb3J0XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTY4IG1pc2MvZnVzZTJmcy5jOjM3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIgorbXNnc3RyICIlczogaGVyc3RlbGxlbiB2YW4gam91cm5hbC4uLlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd29uJ3QgZG8gam91cm5hbCByZWNvdmVyeSB3aGlsZSByZWFkLW9ubHlcbiIKK21zZ3N0ciAiJXM6IGdlZW4gaGVyc3RlbGxpbmcgdmFuIGpvdXJuYWwgYmlqIGFsbGVlbi1sZXplblxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk5NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmUtb3BlbiAlcyIKK21zZ3N0ciAidGlqZGVucyBoZXJvcGVuZW4gdmFuICVzIgorCisjIEJlaGFsdmUgRSBlbiBGIHdvcmRlbiBkZSB2b2xnZW5kZSAzMCBsZXR0ZXJhZmtvcnRpbmdlbiBuaWV0IGdlYnJ1aWt0LgorIzogZTJmc2NrL21lc3NhZ2UuYzoxMTMKK21zZ2lkICJhZXh0ZW5kZWQgYXR0cmlidXRlIgorbXNnc3RyICJhPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJBPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYjxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTYKK21zZ2lkICJCYml0bWFwIgorbXNnc3RyICJCPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiYzxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQzxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZTxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjIKK21zZ2lkICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKK21zZ3N0ciAiRUl0ZW0gJyVEbicgaW4gJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZjxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjQKK21zZ2lkICJGZm9yIEBpICVpICglUSkgaXMiCittc2dzdHIgIkZ2b29yIGlub2RlICVpICglUSkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAiaDxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjcKK21zZ2lkICJpaW5vZGUiCittc2dzdHIgImk8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIkk8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImo8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImw8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTDxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibTxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibjxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm88Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM1Cittc2dpZCAicHByb2JsZW0gaW4iCittc2dzdHIgInA8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICJxPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJyPGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInM8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIlM8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInU8Zm91dD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidjxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDIKK21zZ2lkICJ4ZXh0ZW50IgorbXNnc3RyICJ4PGZvdXQ+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiejxmb3V0PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8ZGUgTlVMTC1pbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU1Cittc2dpZCAiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIKK21zZ3N0ciAiPGRlIHNsZWNodGVibG9ra2VuLWlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8ZGUgZ2VicnVpa2Vyc3F1b3RhLWlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPGRlIGdyb2Vwc3F1b3RhLWlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiPGRlIG9wc3RhcnQtaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPGRlIHdpcy1vbmdlZGFhbm1ha2luZ3NtYXAtaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MQorbXNnaWQgIjxUaGUgZ3JvdXAgZGVzY3JpcHRvciBpbm9kZT4iCittc2dzdHIgIjxkZSBncm9lcHNiZXNjaHJpanZlci1pbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPGRlIGpvdXJuYWwtaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPGdlcmVzZXJ2ZWVyZGUgaW5vZGUgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPGdlcmVzZXJ2ZWVyZGUgaW5vZGUgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAibm9ybWFhbCBiZXN0YW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAibWFwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNworbXNnaWQgImNoYXJhY3RlciBkZXZpY2UiCittc2dzdHIgImJ5dGUtYXBwYXJhYXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJibG9rLWFwcGFyYWF0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgImJlbm9lbWRlIHBpanAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAic3ltYm9saXNjaGUga29wcGVsaW5nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NSBtaXNjL3V1aWRkLmM6MTYyCittc2dpZCAic29ja2V0IgorbXNnc3RyICJzb2NrZXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgIm9uYmVrZW5kIGJlc3RhbmRzdHlwZSBtZXQgbW9kdXMgMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJpbmRpcmVjdCBibG9rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZHViYmVsLWluZGlyZWN0IGJsb2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJkcmlldm91ZGlnLWluZGlyZWN0IGJsb2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAidHJhbnNsYXRvci1ibG9rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJsb2sgIyIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICJrYWFydCB2YW4gbWVlcnZvdWRpZy1nZWNsYWltZGUgaW5vZGVzIgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIgorbXNnc3RyICIqKmludGVybmUgcHJvZ3JhbW1hZm91dCoqOiBrYW4gZ2VlbiAnZHVwX2Jsaycgdm9vciAlbGx1IHZpbmRlblxuIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTAzCittc2dpZCAicmV0dXJuZWQgZnJvbSBjbG9uZV9maWxlX2Jsb2NrIgorbXNnc3RyICIjIyMgdGVydWdnZWtlZXJkIHZhbiBjbG9uZV9maWxlX2Jsb2NrKCkiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgIiIKKyIqKmludGVybmUgcHJvZ3JhbW1hZm91dCoqOiBrYW4gZGUgcmVjb3JkIHZhbiBFQS1ibG9ra2VuIHZvb3IgJWxsdSBuaWV0ICIKKyJvcHZyYWdlbiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGlub2RlIHJlY29yZCBmb3IgJXUiCittc2dzdHIgIiIKKyIqKmludGVybmUgcHJvZ3JhbW1hZm91dCoqOiBrYW4gZGUgcmVjb3JkIHZhbiBFQS1pbm9kZXMgdm9vciAldSBuaWV0IG9wdnJhZ2VuIgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIG1hcGJsb2siCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMTEKK21zZ2lkICJpbi11c2UgaW5vZGUgbWFwIgorbXNnc3RyICJiaXRrYWFydCB2YW4gZ2VicnVpa3RlIGlub2RlcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgImJpdGthYXJ0IHZhbiBtYXBwZW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMzIKK21zZ2lkICJyZWd1bGFyIGZpbGUgaW5vZGUgbWFwIgorbXNnc3RyICJiaXRrYWFydCB2YW4gbm9ybWFsZSBiZXN0YW5kZW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgImJpdGthYXJ0IHZhbiBnZWJydWlrdGUgYmxva2tlbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE1MAorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiYml0a2FhcnQgdmFuIGJsb2trZW4gbWV0IG1ldGFnZWdldmVucyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAidGlqZGVucyBzdGFydGVuIHZhbiBpbm9kZS1zY2FuIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjQ3Cittc2dpZCAiZ2V0dGluZyBuZXh0IGlub2RlIGZyb20gc2NhbiIKK21zZ3N0ciAidGlqZGVucyBoYWxlbiB2YW4gdm9sZ2VuZGUgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIlN0YXAgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAibGV6ZW4gdmFuIGluZGlyZWN0ZSBibG9ra2VuIHZhbiBpbm9kZSAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgImJpdGthYXJ0IHZhbiBzbGVjaHRlIGlub2RlcyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgImlub2RlIHN0YWF0IGluIGthYXJ0IHZhbiBzbGVjaHRlIGJsb2trZW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICJpbWFnaWMtaW5vZGVrYWFydCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJrYWFydCB2YW4gbWVlcnZvdWRpZy1nZWNsYWltZGUgYmxva2tlbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAia2FhcnQgdmFuIGJsb2trZW4gbWV0IHVpdGdlYnJlaWRlIGtlbm1lcmtlbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiU2bHUoJWMpOiB2ZXJ3YWNodHRlICU2bHUsIGtyZWVnIGZ5c2llayAlNmx1IChibG9ra2VuYWFudGFsICVsbGQpXG4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MjcKK21zZ2lkICJibG9jayBiaXRtYXAiCittc2dzdHIgImJsb2stYml0a2FhcnQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgImlub2RlLWJpdGthYXJ0IgorCisjOiBlMmZzY2svcGFzczEuYzozODM5Cittc2dpZCAiaW5vZGUgdGFibGUiCittc2dzdHIgImlub2RldGFiZWwiCisKKyM6IGUyZnNjay9wYXNzMi5jOjI4NworbXNnaWQgIlBhc3MgMiIKK21zZ3N0ciAiU3RhcCAyIgorCisjOiBlMmZzY2svcGFzczIuYzoxMDQyIGUyZnNjay9wYXNzMi5jOjEyMDcKK21zZ2lkICJDYW4gbm90IGNvbnRpbnVlLiIKK21zZ3N0ciAiS2FuIG5pZXQgdmVyZGVyZ2Fhbi4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgImJpdGthYXJ0IHZhbiBiZWhhbmRlbGRlIGlub2RlcyIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiUGlla2dlaGV1Z2VuZ2VicnVpayIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJTdGFwIDMiCisKKyM6IGUyZnNjay9wYXNzMy5jOjM0NAorbXNnaWQgImlub2RlIGxvb3AgZGV0ZWN0aW9uIGJpdG1hcCIKK21zZ3N0ciAiYml0a2FhcnQgdmFuIGlub2RlLWx1c2RldGVjdGllIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIlN0YXAgNCIKKworIzogZTJmc2NrL3Bhc3M1LmM6ODEKK21zZ2lkICJQYXNzIDUiCittc2dzdHIgIlN0YXAgNSIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTA0Cittc2dpZCAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEKK21zZ2lkICIobm8gcHJvbXB0KSIKK21zZ3N0ciAiKGdlZW4gcHJvbXB0KSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAiUmVwYXJlcmVuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIldpc3NlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJIZXJwbGFhdHNlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NQorbXNnaWQgIkFsbG9jYXRlIgorbXNnc3RyICJQbGFhdHNlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiVWl0YnJlaWRlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIlZlcmJpbmRlbiBtZXQgL2xvc3QrZm91bmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIkFhbm1ha2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAiQmVyZ2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIkFma2FwcGVuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIklub2RlIHdpc3NlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICJBZmJyZWtlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICJTcGxpdHNlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJEb29yZ2FhbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICJNZWVydm91ZGlnLWdlY2xhaW1kZSBibG9ra2VuIGtsb25lbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NgorbXNnaWQgIkRlbGV0ZSBmaWxlIgorbXNnc3RyICJCZXN0YW5kIHZlcndpamRlcmVuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIkJlcmljaHRlbiBvbmRlcmRydWtrZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIkxvc21ha2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIidodHJlZSctaW5kZXggd2lzc2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgIkhlcmFhbm1ha2VuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoR0VFTikiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAiR0VSRVBBUkVFUkQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICJHRVdJU1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIKK21zZ2lkICJSRUxPQ0FURUQiCittc2dzdHIgIkhFUlBMQUFUU1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkdFUExBQVRTVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJVSVRHRUJSRUlEIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIkhFUlZFUkJPTkRFTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIkFBTkdFTUFBS1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAiR0VCT1JHRU4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIkFGR0VLQVBUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiSU5PREUgR0VXSVNUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwCittc2dpZCAiQUJPUlRFRCIKK21zZ3N0ciAiQUZHRUJST0tFTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICJHRVNQTElUU1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIKK21zZ2lkICJDT05USU5VSU5HIgorbXNnc3RyICJWRVJERVJHQUFORCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiTUVFUlZPVURJRy1HRUNMQUlNREUgQkxPS0tFTiBHRUtMT09ORCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAiQkVTVEFORCBWRVJXSUpERVJEIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiT05ERVJEUlVLVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICJMT1NHRU1BQUtUIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3Cittc2dpZCAiSFRSRUUgSU5ERVggQ0xFQVJFRCIKK21zZ3N0ciAiJ0hUUkVFJy1JTkRFWCBHRVdJU1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICJaQUwgSEVSQUFOTUFLRU4iCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMAorbXNnaWQgIkBiIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgImJsb2stYml0a2FhcnQgdm9vciBncm9lcCAlZyB6aXQgbmlldCBpbiBncm9lcCAgKGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgImlub2RlLWJpdGthYXJ0IHZvb3IgZ3JvZXAgJWcgeml0IG5pZXQgaW4gZ3JvZXAgIChibG9rICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJpbm9kZXRhYmVsIHZvb3IgZ3JvZXAgJWcgeml0IG5pZXQgaW4gZ3JvZXAgIChibG9rICViKVxuIgorIldBQVJTQ0hVV0lORzogRVJOU1RJRyBWRVJMSUVTIFZBTiBHRUdFVkVOUyBJUyBNT0dFTElKSy5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiSGV0IHN1cGVyYmxvayBpcyBvbmxlZXNiYWFyIG9mIG9tc2NocmlqZnQgZ2VlbiBnZWxkaWcgZXh0Mi8zLzQtIgorImJlc3RhbmRzc3lzdGVlbS5cbiIKKyJBbHMgaGV0IGFwcGFyYWF0IGp1aXN0IGlzIGVuIHdlcmtlbGlqayBlZW4gZXh0Mi0sIGV4dDMtIG9mIGV4dDQtIgorImJlc3RhbmRzc3lzdGVlbVxuIgorImJldmF0IChlbiBuaWV0IHN3YXAgb2YgVUZTIG9mIGlldHMgYW5kZXJzKSwgZGFuIGlzIGhldCBzdXBlcmJsb2sgIgorImJlc2NoYWRpZ2QuXG4iCisiVSBrdW50IGRhbiBwcm9iZXJlbiBlZW4gYW5kZXIgc3VwZXJibG9rIHRlIGdlYnJ1aWtlbiwgYmlqdm9vcmJlZWxkOlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA8YXBwYXJhYXQ+XG4iCisib2Y6XG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8YXBwYXJhYXQ+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIlZvbGdlbnMgaGV0IHN1cGVyYmxvayBpcyBkZSBncm9vdHRlIHZhbiBoZXQgYmVzdGFuZHNzeXN0ZWVtICViIGJsb2trZW4uXG4iCisiTWFhciBkZSBmeXNpZWtlIGdyb290dGUgdmFuIGhldCBhcHBhcmFhdCBpcyAlYyBibG9ra2VuLlxuIgorIldhYXJzY2hpam5saWprIGlzIG9md2VsIGhldCBzdXBlcmJsb2sgb2Z3ZWwgZGUgcGFydGl0aWV0YWJlbCBiZXNjaGFkaWdkIVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbgorIy4gQC1leHBhbmRlZDogVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuCisjLiBALWV4cGFuZGVkOiBmcm9tIHRoZSBibG9jayBzaXplLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb2s6IGJsb2tncm9vdHRlID0gJWIsIGZyYWdtZW50Z3Jvb3R0ZSA9ICVjLlxuIgorIkRlemUgdmVyc2llIHZhbiAnZTJmc2NrJyBvbmRlcnN0ZXVudCBnZWVuXG4iCisiZnJhZ21lbnRncm9vdHRlIGRpZSB2ZXJzY2hpbHQgdmFuIGRlIGJsb2tncm9vdHRlLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJTdXBlcmJsb2s6IGJsb2trZW5fcGVyX2dyb2VwID0gJWIsIHpvdSAlYyBtb2V0ZW4gemlqbi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBmaXJzdF9kYXRhX2Jsb2NrID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTUKK21zZ2lkICJAUyBmaXJzdF9kYXRhX0BiID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiU3VwZXJibG9rOiBlZXJzdGVfZ2VnZXZlbnNfYmxvayA9ICViLCB6b3UgJWMgbW9ldGVuIHppam4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkJlc3RhbmRzc3lzdGVlbSBoZWVmdCBnZWVuIFVVSUQ7IGVyIHdvcmR0IGVlbnRqZSBhYW5nZW1hYWt0LlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk9wbWVya2luZzogYWxzIG1lZXJkZXJlIGJsb2trZW4gdmFuIGlub2RlLWJpdGthYXJ0ZW4gb2YgYmxvay1iaXRrYWFydGVuXG4iCisiaGVycGxhYXRzdCBtb2V0ZW4gd29yZGVuLCBvZiBlZW4gZGVlbCB2YW4gZGUgaW5vZGV0YWJlbCwga3VudCB1IGJldGVyXG4iCisiZWVyc3QgJ2UyZnNjaycgdWl0dm9lcmVuIG1ldCBkZSBvcHRpZSAnLWIgJVMnLiAgTWlzc2NoaWVuIGRvZXQgaGV0XG4iCisicHJvYmxlZW0gemljaCBhbGxlZW4gdm9vciBpbiBoZXQgZWVyc3RlIHN1cGVyYmxvazsgbW9nZWxpamsgaXMgZWVuXG4iCisicmVzZXJ2ZWtvcGllIG5vZyBpbiBvcmRlLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiQmVzY2hhZGlnaW5nIGdldm9uZGVuIGluIGhldCBzdXBlcmJsb2s6ICAlcyA9ICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgYmVwYWxlbiB2YW4gZGUgZ3Jvb3R0ZSB2YW4gZnlzaWVrIGFwcGFyYWF0OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICJJbm9kZXRhbCBpbiBzdXBlcmJsb2sgaXMgJWksIHpvdSAlaiBtb2V0ZW4gemlqbi5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODgKK21zZ2lkICJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJEZSBIdXJkIG9uZGVyc3RldW50IGRlIGJlc3RhbmRzdHlwZW5mdW5jdGllIG5pZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiU3VwZXJibG9rIGhlZWZ0IGVlbiBvbmdlbGRpZyBqb3VybmFsIChpbm9kZSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiIgorIkhldCBleHRlcm5lIGpvdXJuYWwgaGVlZnQgbWVlcmRlcmUgYmVzdGFuZHNzeXN0ZWVtLWdlYnJ1aWtlcnM7XG4iCisiZGl0IHdvcmR0IG5pZXQgb25kZXJzdGV1bmQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbid0IGZpbmQgZXh0ZXJuYWwgam91cm5hbFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMworbXNnaWQgIkNhbid0IGZpbmQgZXh0ZXJuYWwgQGpcbiIKK21zZ3N0ciAiS2FuIGdlZW4gZXh0ZXJuIGpvdXJuYWwgdmluZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiSGV0IGV4dGVybmUgam91cm5hbCBoZWVmdCBlZW4gc2xlY2h0IHN1cGVyYmxvay5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZmlsZXN5c3RlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxMworbXNnaWQgIkV4dGVybmFsIEBqIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBAZlxuIgorbXNnc3RyICJIZXQgZXh0ZXJuZSBqb3VybmFsIG9uZGVyc3RldW50IGRpdCBiZXN0YW5kc3N5c3RlZW0gbmlldC5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorIkhldCBzdXBlcmJsb2sgdmFuIGhldCBqb3VybmFsIGlzIHZhbiBlZW4gb25iZWtlbmQgZW4gbmlldC1vbmRlcnN0ZXVuZCB0eXBlICIKKyIlTi5cbiIKKyJWZXJtb2VkZWxpamsgZ2VicnVpa3QgdSBlZW4gb3VkZXIgJ2UyZnNjayctcHJvZ3JhbW1hIGRhdCBkZXplIGpvdXJuYWwtIgorImluZGVsaW5nXG4iCisibmlldCBvbmRlcnN0ZXVudC4gIEhldCBrYW4gb29rIHppam4gZGF0IGhldCBqb3VybmFsLXN1cGVyYmxvayBiZXNjaGFkaWdkICIKKyJpcy5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiSGV0IHN1cGVyYmxvayB2YW4gaGV0IGpvdXJuYWwgaXMgYmVzY2hhZGlnZC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXNfam91cm5hbCBmbGFnIGlzIGNsZWFyLCBidXQgYSBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjMxCittc2dpZCAiQFMgaGFzX0BqIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIkpvdXJuYWwtdmxhZyBpbiBzdXBlcmJsb2sgaXMgbmlldCBnZXpldCwgbWFhciBlciBpcyB3ZWwgZWVuIGpvdXJuYWwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjM2Cittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICJSZWRkaW5nc3ZsYWcgaW4gc3VwZXJibG9rIGlzIGdlemV0LCBtYWFyIGVyIGlzIGdlZW4gam91cm5hbC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgIiIKKyJSZWRkaW5nc3ZsYWcgaW4gc3VwZXJibG9rIGlzIG5pZXQgZ2V6ZXQsIG1hYXIgaGV0IGpvdXJuYWwgYmV2YXQgZ2VnZXZlbnMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIkpvdXJuYWwgd2lzc2VuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIkJlc3RhbmRzc3lzdGVlbSBpcyBlZW4gdmVyc2llIDAsIG1hYXIgaGVlZnQgZnVuY3RpZXZsYWcoZ2VuKSBnZXpldC4gICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyB2YW4gdmVyd2Vlc2RlIGlub2RlICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICJPbmdlbGRpZyAlQiAoJWIpIGdldm9uZGVuIGluIHZlcndlZXNkZSBpbm9kZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIlJlZWRzLWdld2lzdCAlQiAoJWIpIGdldm9uZGVuIGluIHZlcndlZXNkZSBpbm9kZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAbyBAaSAlaSBpbiBAUy5cbiIKK21zZ3N0ciAiT25nZWxkaWdlIHZlcndlZXNkZSBpbm9kZSAlaSBpbiBzdXBlcmJsb2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgaW5vZGUgJWkgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKK21zZ3N0ciAiT25nZWxkaWdlIGlub2RlICVpIGluIGxpanN0IHZhbiB2ZXJ3ZWVzZGUgaW5vZGVzLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJKb3VybmFsLXN1cGVyYmxvayBoZWVmdCBlZW4gb25iZWtlbmRlIGFsbGVlbi1sZXplbi1mdW5jdGlldmxhZyBnZXpldC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICIiCisiSm91cm5hbC1zdXBlcmJsb2sgaGVlZnQgZWVuIG9uYmVrZW5kZSBlbiBpbmNvbXBhdGliZWxlIGZ1bmN0aWV2bGFnIGdlemV0LlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgIkpvdXJuYWwtdmVyc2llIHdvcmR0IG5pZXQgb25kZXJzdGV1bmQgZG9vciBkZXplIGUyZnNjay5cbiIKKworIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1vdmluZyBAaiBmcm9tIC8lcyB0byBoaWRkZW4gQGkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJKb3VybmFsIHdvcmR0IHZlcnBsYWF0c3QgdmFuIC8lcyBuYWFyIGVlbiB2ZXJib3JnZW4gaW5vZGUuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIG1vdmluZyBqb3VybmFsOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkZvdXQgdGlqZGVucyB2ZXJwbGFhdHNlbiB2YW4gam91cm5hbDogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk9uZ2VsZGlnZSBWMi1qb3VybmFsLXN1cGVyYmxva3ZlbGRlbiBnZXZvbmRlbiBpbiBWMS1qb3VybmFsLlxuIgorIlZlbGRlbiB2b29yYmlqIGhldCBWMS1qb3VybmFsLXN1cGVyYmxvayB3b3JkZW4gZ2V3aXN0Li4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJKb3VybmFsIHRvY2ggYWZzcGVsZW4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorIlJlc2VydmVrb3BpZcOrbiB2YW4gaGV0IHN1cGVyYmxvayBrZW5uZW4gZ2VlbiByZWRkaW5nc3ZsYWc7XG4iCisiaGV0IG5pZXQtbGVnZSBqb3VybmFsIHdvcmR0IGRhYXJvbSBhZmdlc3BlZWxkLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICIiCisiTWFrZW4gdmFuIHJlc2VydmVrb3BpZSB2YW4gaW5mb3JtYXRpZSBpbiBqb3VybmFsLWlub2RlYmxva2tlbi4uLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJCZXN0YW5kc3N5c3RlZW0gaGVlZnQgZnVuY3RpZSAncmVzaXplX2lub2RlJyB1aXRnZXNjaGFrZWxkLFxuIgorIm1hYXIgJ3NfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcycgaXMgJU47IHpvdSBudWwgbW9ldGVuIHppam4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZV9pbm9kZSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgaW5vZGUgaXMgbm9uLXplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzMzCittc2dpZCAiUmVzaXplX0BpIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBAaSBpcyBub24temVyby4gICIKK21zZ3N0ciAiIgorIkZ1bmN0aWUgJ3Jlc2l6ZV9pbm9kZScgaXMgdWl0Z2VzY2hha2VsZCwgbWFhciBkZSAncmVzaXplJy1pbm9kZSBpcyBuaWV0ICIKKyJudWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzM4Cittc2dpZCAiUmVzaXplIEBpIG5vdCB2YWxpZC4gICIKK21zZ3N0ciAiT25nZWxkaWdlICdyZXNpemUnLWlub2RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkxhYXRzdGUgYWFua29wcGVsaW5nc3RpamQgKCV0KSBsaWd0IHZvbGdlbnMgc3VwZXJibG9rXG4iCisiICAgIGluIGRlIHRvZWtvbXN0IChudSA9ICVUKS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJMYWF0c3RlIHNjaHJpamZ0aWpkICgldCkgbGlndCB2b2xnZW5zIHN1cGVyYmxva1xuIgorIiAgICBpbiBkZSB0b2Vrb21zdCAobnUgPSAlVCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIkRlIHN1cGVyYmxva2hpbnQgdm9vciBlZW4gZXh0ZXJuIHN1cGVyYmxvayBkaWVudCAlWCB0ZSB6aWpuLiAgIgorCisjLiBALWV4cGFuZGVkOiBBZGRpbmcgZGlyaGFzaCBoaW50IHRvIGZpbGVzeXN0ZW0uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1NworbXNnaWQgIiIKKyJBZGRpbmcgZGlyaGFzaCBoaW50IHRvIEBmLlxuIgorIlxuIgorbXNnc3RyICIiCisiVG9ldm9lZ2VuIHZhbiAnZGlyaGFzaCctaGludCBhYW4gYmVzdGFuZHNzeXN0ZWVtLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIiIKKyJWYW4gZ3JvZXBzYmVzY2hyaWp2ZXIgJWcgaXMgZGUgY29udHJvbGVzb20gJTA0eCwgem91ICUwNHkgbW9ldGVuIHppam4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICIiCisiR3JvZXBzYmVzY2hyaWp2ZXIgJWcgaXMgZ2VtYXJrZWVyZCBhbHMgb25nZcOvbml0aWFsaXNlZXJkIHpvbmRlciBmdW5jdGllcy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorIkdyb2Vwc2Jlc2NocmlqdmVyICVnIGhlZWZ0IGVlbiBvbmdlbGRpZyBhYW50YWwgKCViKSBvbmdlYnJ1aWt0ZSBpbm9kZXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJCbG9rLWJpdGthYXJ0IHZhbiBsYWF0c3RlIGdyb2Vwc2Jlc2NocmlqdmVyIGlzIG9uZ2XDr25pdGlhbGlzZWVyZC4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICJKb3VybmFsLXRyYW5zYWN0aWUgJWkgaXMgYmVzY2hhZGlnZDsgaGV0IGFmc3BlbGVuIGlzIGFmZ2Vicm9rZW4uXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkRlIGZ1bmN0aWV2bGFnICd0ZXN0X2ZzJyBpcyBnZXpldCAoZW4gZXh0NCBpcyBiZXNjaGlrYmFhcikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiTGFhdHN0ZSBhYW5rb3BwZWxpbmdzdGlqZCBsaWd0IHZvbGdlbnMgaGV0IHN1cGVyYmxvayBpbiBkZSB0b2Vrb21zdC5cbiIKKyIgICAgKE1hYXIgbWluZGVyIGRhbiBlZW4gZGFnOyB2ZXJtb2VkZWxpamsgaXMgZGUgaGFyZHdhcmVrbG9rIG9uanVpc3QgIgorImluZ2VzdGVsZC4pICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiTGFhdHN0ZSBzY2hyaWpmdGlqZCBsaWd0IHZvbGdlbnMgaGV0IHN1cGVyYmxvayBpbiBkZSB0b2Vrb21zdC5cbiIKKyIgICAgKE1hYXIgbWluZGVyIGRhbiBlZW4gZGFnOyB2ZXJtb2VkZWxpamsgaXMgZGUgaGFyZHdhcmVrbG9rIG9uanVpc3QgIgorImluZ2VzdGVsZC4pICAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICJFZW4gb2YgbWVlciBncm9lcHNiZXNjaHJpanZlcnMgaGViYmVuIGVlbiBvbmdlbGRpZ2UgY29udHJvbGVzb20uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBpbm9kZXMgY291bnQgdG8gJWogKHdhcyAlaSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDgKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIkhldCBhYW50YWwgdnJpamUgaW5vZGVzIGlzIG9wICVqIGdlemV0ICh3YXMgJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIkhldCBhYW50YWwgdnJpamUgYmxva2tlbiBpcyBvcCAlYyBnZXpldCAod2FzICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBNYWtpbmcgcXVvdGEgaW5vZGUgJWkgKCVRKSBoaWRkZW4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDE4Cittc2dpZCAiTWFraW5nIEBxIEBpICVpICglUSkgaGlkZGVuLlxuIgorbXNnc3RyICJEZSBxdW90YS1pbm9kZSAlaSAoJVEpIHdvcmR0IHZlcmJvcmdlbi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICJTdXBlcmJsb2sgaGVlZnQgb25nZWxkaWcgTU1QLWJsb2suICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAiU3VwZXJibG9rIGhlZWZ0IG9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciBNTVAuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yKCk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICJleHQyZnNfY2hlY2tfZGVzYygpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCisjLCBmdXp6eQorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBNTVAtYmxvayBrb210IG5pZXQgb3ZlcmVlbiBtZXQgTU1QLWJsb2siCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKyJTdXBlcmJsb2sgdmFuIDY0LWJpdHMgYmVzdGFuZHNzeXN0ZW1lbiBoZWVmdCBleHRlbnRzIG5vZGlnIG9tIGdlaGVsZSBzY2hpamYgIgorInRlIGt1bm5lbiBiZXJlaWtlbi4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIldhYXJkZSB2YW4gJ2ZpcnN0X21ldGFfYmcnIGlzIHRlIGdyb290ICglTiwgbWF4aW11bSBpcyAlZykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworIywgZnV6enkKK21zZ2lkICJFeHRlcm5hbCBAaiBAUyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAUy4gICIKK21zZ3N0ciAiQ29udHJvbGVzb20gdmFuIGV4dGVudC1ibG9rIGtvbXQgbmlldCBvdmVyZWVuIG1ldCBleHRlbnQtYmxvayIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgIlN0YXAgMTogQ29udHJvbGUgdmFuIGlub2RlcywgYmxva2tlbiwgZW4gZ3Jvb3R0ZXNcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgIkRlIGhvb2ZkLWlub2RlIGlzIGdlZW4gbWFwLiAgIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIiIKKyJEZSB2ZXJ3aWpkZXJpbmdzdGlqZCB2YW4gZGUgaG9vZmQtaW5vZGUgaXMgbmlldCBudWwgKHdhYXJzY2hpam5saWprICIKKyJ2ZXJvb3J6YWFrdCBkb29yIGVlbiBvdWRlIG1rZTJmcykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJHZXJlc2VydmVlcmRlIGlub2RlICVpICVRIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgbW9kdXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICJEZSB2ZXJ3aWpkZXJpbmdzdGlqZCB2YW4gdmVyd2lqZGVyZGUgaW5vZGUgJWkgaXMgbnVsLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgIgorbXNnc3RyICJJbm9kZSAlaSBpcyBpbiBnZWJydWlrLCBtYWFyIGhlZWZ0IGVlbiBpbmdldnVsZGUgdmVyd2lqZGVyaW5nc3RpamQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBhIEB6IEBkLiAgIgorbXNnc3RyICJJbm9kZSAlaSBpcyBlZW4gbWFwIG1ldCBsZW5ndGUgbnVsLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyJEZSBibG9rLWJpdGthYXJ0IHZhbiBncm9lcCAlZyBib3RzdCBiaWogJWIgbWV0IGVlbiBiZXN0YW5kc3N5c3RlZW1ibG9rLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyJEZSBpbm9kZS1iaXRrYWFydCB2YW4gZ3JvZXAgJWcgYm90c3QgYmlqICViIG1ldCBlZW4gYmVzdGFuZHNzeXN0ZWVtYmxvay5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSB0YWJsZSBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzOAorbXNnaWQgIkBnICVnJ3MgQGkgdGFibGUgYXQgJWIgQEMuXG4iCittc2dzdHIgIkRlIGlub2RldGFiZWwgdmFuIGdyb2VwICVnIGJvdHN0IGJpaiAlYiBtZXQgZWVuIGJlc3RhbmRzc3lzdGVlbWJsb2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0MworbXNnaWQgIkBnICVnJ3MgQGIgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIkRlIGJsb2stYml0a2FhcnQgJWIgdmFuIGdyb2VwICVnIGlzIG9uZ2VsZGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDgKK21zZ2lkICJAZyAlZydzIEBpIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJEZSBpbm9kZS1iaXRrYWFydCAlYiB2YW4gZ3JvZXAgJWcgaXMgb25nZWxkaWcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICJJbm9kZSAlaSwgJ2lfc2l6ZScgaXMgJUlzLCB6b3UgJU4gbW9ldGVuIHppam4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiSW5vZGUgJWksICdpX2Jsb2NrcycgaXMgJUliLCB6b3UgJU4gbW9ldGVuIHppam4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICJPbmdlbGRpZyAlQiAoJWIpIGluIGlub2RlICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiJUIgKCViKSBvdmVybGFwdCBtZXRhZGF0YSB2YW4gYmVzdGFuZHNzeXN0ZWVtIGluIGlub2RlICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIklub2RlICVpIGJldmF0IG9uZ2VsZGlnKGUpIGJsb2soa2VuKS4gICIKKworIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IGlsbGVnYWwgQGJzIGluIEBpICVpLlxuIgorbXNnc3RyICJUZSB2ZWVsIG9uZ2VsZGlnZSBibG9ra2VuIGluIGlub2RlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJPbmdlbGRpZyAlQiAoJWIpIGluIHNsZWNodGVibG9ra2VuLWlub2RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJTbGVjaHRlYmxva2tlbi1pbm9kZSBiZXZhdCBvbmdlbGRpZyhlKSBibG9rKGtlbikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJFZW4gZHViYmVsIG9mIHNsZWNodCBibG9rIGlzIGluIGdlYnJ1aWshXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIiIKKyJTbGVjaHQgYmxvayAlYiBpcyBpbiBnZWJydWlrIGFscyBpbmRpcmVjdCBibG9rIHZvb3IgZGUgc2xlY2h0ZWJsb2trZW4tIgorImlub2RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbgorIy4gQC1leHBhbmRlZDogc2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaW4gdGhlIGZpbGVzeXN0ZW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAzCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJEZSBzbGVjaHRlYmxva2tlbi1pbm9kZSBpcyB2ZXJtb2VkZWxpamsgYmVzY2hhZGlnZC5cbiIKKyJVIGt1bnQgbnUgYmV0ZXIgc3RvcHBlbiBlbiAnZTJmc2NrIC1jJyB1aXR2b2VyZW4gb21cbiIKKyJoZXQgYmVzdGFuZHNzeXN0ZWVtIHRlIGRvb3J6b2VrZW4gbmFhciBzbGVjaHRlIGJsb2trZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiQWxzIGhldCBibG9rIGVjaHQgc2xlY2h0IGlzLCBrYW4gaGV0IGJlc3RhbmRzc3lzdGVlbSBuaWV0IGdlcmVwYXJlZXJkICIKKyJ3b3JkZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlUga3VudCBkaXQgYmxvayB1aXQgZGUgbGlqc3QgdmFuIHNsZWNodGUgYmxva2tlbiB3aXNzZW4gZW4gaG9wZW5cbiIKKyJkYXQgaGV0IGJsb2sgdG9jaCBnb2VkIGlzLiAgTWFhciBlciB6aWpuIGdlZW4gZ2FyYW50aWVzLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyMQorbXNnaWQgIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIgorbXNnc3RyICJIZXQgcHJpbWFpcmUgc3VwZXJibG9rICglYikgc3RhYXQgaW4gZGUgbGlqc3QgdmFuIHNsZWNodGUgYmxva2tlbi5cbiIKKworIy4gQC1leHBhbmRlZDogQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjI2Cittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIiIKKyJFZW4gZ3JvZXBzYmVzY2hyaWp2ZXJzYmxvayAoJWIpIHN0YWF0IGluIGRlIGxpanN0IHZhbiBzbGVjaHRlIGJsb2trZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJXYWFyc2NodXdpbmc6IGdyb2VwICVnIGhlZWZ0IGVlbiBzbGVjaHQgc3VwZXJibG9rICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiIgorIldhYXJzY2h1d2luZzogZ3JvZXAgJWcgYmV2YXQgZWVuIHNsZWNodCBibG9rICglYikgaW4gZGUgZ3JvZXBzYmVzY2hyaWp2ZXJzLlxuIgorCisjLiBALWV4cGFuZGVkOiBQcm9ncmFtbWluZyBlcnJvcj8gIGJsb2NrICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQzCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I/ICBAYiAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX0BiLlxuIgorbXNnc3RyICIiCisiSW50ZXJuZSBmb3V0PzogYmxvayAlYiBpcyB6b25kZXIgcmVkZW4gZ2VjbGFpbWQgaW4gcHJvY2Vzc19iYWRfYmxvY2soKS5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiIgorIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiAlTiBhYW5lZW5nc2xvdGVuIGJsb2trZW4gaW4gZ3JvZXAgJWcgdm9vciAlczogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBiIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gYnVmZmVyIHZvb3IgdmVycGxhYXRzZW4gdmFuICVzLlxuIgorCisjIHNyYy9kZWxlZ2F0ZS5jOjM2OAorIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTkKK21zZ2lkICJSZWxvY2F0aW5nIEBnICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuIgorbXNnc3RyICJCZXppZyBtZXQgdmVycGxhYXRzZW4gdmFuIGdyb2VwICVnJ3MgJXMgdmFuICViIG5hYXIgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICJCZXppZyBtZXQgdmVycGxhYXRzZW4gdmFuIGdyb2VwICVnJ3MgJXMgbmFhciAlYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiV2FhcnNjaHV3aW5nOiBrYW4gYmxvayAlYiB2YW4gJXMgbmlldCBsZXplbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICJXYWFyc2NodXdpbmc6IGthbiBibG9rICViIHZhbiAlcyBuaWV0IHNjaHJpanZlbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGlub2RlLWJpdGthYXJ0ICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg0Cittc2dpZCAiQEEgQGIgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJsb2stYml0a2FhcnQgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiAnaWNvdW50Jy1saW5rLWluZm9ybWF0aWU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJsb2tyZWVrcyB2b29yIG1hcDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgc2Nhbm5lbiB2YW4gaW5vZGVzICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgbGFuZ3Nsb3BlbiB2YW4gYmxva2tlbiB2YW4gaW5vZGUgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBjb3VudD0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIG9wc2xhYW4gdmFuIGlub2RldGFsIChpbm9kZT0laSwgYWFudGFsPSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJGb3V0IHRpamRlbnMgb3BzbGFhbiB2YW4gbWFwYmxva2tlbmluZm9ybWF0aWUgKGlub2RlPSVpLCBibG9rPSViLCBhYW50YWw9IgorIiVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIGxlemVuIHZhbiBpbm9kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiSW5vZGUgJWkgaGVlZnQgZGUgaW1hZ2ljLXZsYWcgZ2V6ZXQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVjaWFhbCBiZXN0YW5kIChhcHBhcmFhdC9zb2NrZXQvZmlmby9zeW1saW5rKSBoZWVmdCBkZSBvbnZlcmFuZGVyYmFhci1cbiIKKyJvZiBkZSBhbGxlZW4tdG9ldm9lZ2VudmxhZyBnZXpldCAoaW5vZGUgJWkpLiAgIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlICVpIGhhcyBub24temVybyBzaXplLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczOQorIywgYy1mb3JtYXQKK21zZ2lkICJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgQGkgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAiCittc2dzdHIgIlNwZWNpYWxlIGlub2RlICVpIChhcHBhcmFhdC9zb2NrZXQvZmlmbykgaGVlZnQgbmlldCBsZW5ndGUgbnVsLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJKb3VybmFsLWlub2RlIGlzIG5pZXQgaW4gZ2VicnVpaywgbWFhciBiZXZhdCBnZWdldmVucy4gICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorbXNnaWQgIkBqIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkpvdXJuYWwgaXMgZ2VlbiBub3JtYWFsIGJlc3RhbmQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiSW5vZGUgJWkgd2FzIGRlZWwgdmFuIGRlIGxpanN0IHZhbiB2ZXJ3ZWVzZGUgaW5vZGVzLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc2NQorbXNnaWQgIkBpcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAiCittc2dzdHIgIiIKKyJJbm9kZXMgZ2V2b25kZW4gZGllIGRlZWwgd2FyZW4gdmFuIGVlbiBiZXNjaGFkaWdkZSBsaWpzdCB2YW4gdmVyd2Vlc2RlICIKKyJpbm9kZXMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiAncmVmY291bnQnLXN0cnVjdHV1ciAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBmb3IgaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzc1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiCittc2dzdHIgIiIKKyJGb3V0IHRpamRlbnMgbGV6ZW4gdmFuIGJsb2sgJWIgbWV0IHVpdGdlYnJlaWRlIGtlbm1lcmtlbiB2b29yIGlub2RlICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiSW5vZGUgJWkgYmV2YXQgZWVuIHNsZWNodCBibG9rICViIG1ldCB1aXRnZWJyZWlkZSBrZW5tZXJrZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJGb3V0IHRpamRlbnMgbGV6ZW4gdmFuIGJsb2sgJWIgbWV0IHVpdGdlYnJlaWRlIGtlbm1lcmtlbjogJW0gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiIgorIkJsb2sgJWIgbWV0IHVpdGdlYnJlaWRlIGtlbm1lcmtlbiBoZWVmdCB2ZXJ3aWp6aW5nc3RhbCAlciwgem91ICVOIG1vZXRlbiAiCisiemlqbi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIGJsb2sgJWIgbWV0IHVpdGdlYnJlaWRlIGtlbm1lcmtlbjogJW0gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiQmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuIGhlZWZ0IGhfYmxvY2tzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiAnaWNvdW50Jy1zdHJ1Y3R1dXI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICIiCisiQmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuIGlzIGJlc2NoYWRpZ2QgKHJlc2VydmVyaW5nc292ZXJsYXApLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCBuYW1lKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTUKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiBuYW1lKS4gICIKK21zZ3N0ciAiQmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuIGlzIGJlc2NoYWRpZ2QgKG9uZ2VsZGlnZSBuYWFtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiQmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuIGlzIGJlc2NoYWRpZ2QgKG9uZ2VsZGlnZSB3YWFyZGUpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICJJbm9kZSAlaSBpcyB0ZSBncm9vdC4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgQGQgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBtYWFrdCBtYXAgdGUgZ3Jvb3QuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIG1hYWt0IGJlc3RhbmQgdGUgZ3Jvb3QuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIG1hYWt0IHN5bWJvbGlzY2hlIGtvcHBlbGluZyB0ZSBncm9vdC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGVlZnQgZGUgJ0lOREVYX0ZMJy12bGFnIGdlemV0IG9wIGVlbiBiZXN0YW5kc3N5c3RlZW0gem9uZGVyICIKKyInaHRyZWUnLW9uZGVyc3RldW5pbmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIEBkLlxuIgorbXNnc3RyICJJbm9kZSAlaSBoZWVmdCBkZSAnSU5ERVhfRkwnLXZsYWcgZ2V6ZXQgbWFhciBoZXQgaXMgZ2VlbiBtYXAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIklub2RlICVpIHZhbiAnaHRyZWUnLW1hcCBoZWVmdCBlZW4gb25nZWxkaWdlIHdvcnRlbGtub29wLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSB2YW4gJ2h0cmVlJy1tYXAgZ2VicnVpa3QgZWVuIG5pZXQtb25kZXJzdGV1bmRlIGhhc2gtdmVyc2llICglTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIklub2RlICVpIHZhbiAnaHRyZWUnLW1hcCBnZWJydWlrdCBlZW4gaW5jb21wYXRpYmVsZSB3b3J0ZWxrbm9vcHZsYWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2OQorbXNnaWQgIkBoICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4iCittc2dzdHIgIklub2RlICVpIHZhbiAnaHRyZWUnLW1hcCBoZWVmdCBlZW4gdGUgZ3JvdGUgYm9vbWRpZXB0ZSAoJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGFuIGluZGlyZWN0IGJsb2NrICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIG1ldGFkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3NAorbXNnaWQgIiIKKyJCYWQgQGIgQGkgaGFzIGFuIGluZGlyZWN0IEBiICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuIgorIkBmIG1ldGFkYXRhLiAgIgorbXNnc3RyICIiCisiU2xlY2h0ZWJsb2trZW4taW5vZGUgYmV2YXQgZWVuIGluZGlyZWN0IGJsb2sgKCViKSBkYXQgc3RyaWpkaWdcbiIKKyJpcyBtZXQgZGUgbWV0YWdlZ2V2ZW5zIHZhbiBoZXQgYmVzdGFuZHNzeXN0ZWVtLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICJBYW5tYWtlbiB2YW4gJ3Jlc2l6ZSctaW5vZGUgaXMgbWlzbHVrdDogJW0iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4NQorbXNnaWQgIkBpICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiSW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSBleHRyYSBncm9vdHRlICglSVMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorIkVlbiB1aXRnZWJyZWlkIGtlbm1lcmsgaW4gaW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSBuYWFtbGVuZ3RlICglTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODk1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorIkVlbiB1aXRnZWJyZWlkIGtlbm1lcmsgaW4gaW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSB3YWFyZGVvZmZzZXQgKCVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIGJsb2NrICglTikgd2hpY2ggaXMgaW52YWxpZCAobXVzdCBiZSAwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKK21zZ3N0ciAiIgorIkVlbiB1aXRnZWJyZWlkIGtlbm1lcmsgaW4gaW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnIHdhYXJkZWJsb2sgKCVOLCBtb2V0IDAgIgorInppam4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorIkVlbiB1aXRnZWJyZWlkIGtlbm1lcmsgaW4gaW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSB3YWFyZGVncm9vdHRlICglTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICIiCisiRWVuIHVpdGdlYnJlaWQga2VubWVyayBpbiBpbm9kZSAlaSBoZWVmdCBlZW4gb25nZWxkaWdlIGhhc2gtd2FhcmRlICglTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTUKK21zZ2lkICJAaSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBpcyBnZW1hcmtlZXJkIGFscyBlZW4gJUl0LCBtYWFyIGxpamt0IGZlaXRlbGlqayBlZW4gbWFwIHRlIHppam4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyBkb29ybGV6ZW4gdmFuICdleHRlbnRzJy1ib29tIGluIGlub2RlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIGlub2RlICVpXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyNQorbXNnaWQgIiIKKyJGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCittc2dzdHIgIiIKKyJMYW5nc2xvcGVuIHZhbiAnZXh0ZW50cycgaW4gaW5vZGUgJWkgaXMgbWlzbHVrdFxuIgorIiAgICAob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSAnZXh0ZW50J1xuIgorIiAgKGxvZ2lzY2ggYmxvayAlYywgb25nZWxkaWcgZnlzaWVrIGJsb2sgJWIsIGxlbmd0ZSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoZWVmdCBlZW4gb25nZWxkaWdlICdleHRlbnQnXG4iCisiICAobG9naXNjaCBibG9rICVjLCBmeXNpZWsgYmxvayAlYiwgb25nZWxkaWdlIGxlbmd0ZSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoZWVmdCBkZSAnRVhURU5UU19GTCctdmxhZyBnZXpldCBvcCBlZW4gYmVzdGFuZHNzeXN0ZWVtIHpvbmRlciAiCisiJ2h0cmVlJy1vbmRlcnN0ZXVuaW5nLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhlZWZ0IGV4dGVudC1vcG1hYWssIG1hYXIgc3VwZXJibG9rIGhlZWZ0IEVYVEVOVFMtZnVuY3RpZXZsYWcgbmlldCAiCisiZ2V6ZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGVlZnQgJ2V4dGVudCctb3BtYWFrLCBtYWFyIGhlZWZ0ICdFWFRFTlRfRkwnLXZsYWcgbmlldCBnZXpldC5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIgorbXNnc3RyICJTbmVsbGUgc3ltYm9saXNjaGUga29wcGVsaW5nICVpIGhlZWZ0ICdFWFRFTlRfRkwnLXZsYWcgZ2V6ZXQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYxCittc2dpZCAiIgorIkBpICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaSBoZWVmdCAnZXh0ZW50cycgZGllIG5pZXQgb3Agdm9sZ29yZGUgbGlnZ2VuXG4iCisiICAob25nZWxkaWcgbG9naXNjaCBibG9rICVjLCBmeXNpZWsgYmxvayAlYiwgbGVuZ3RlICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIklub2RlICVpIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgJ2V4dGVudCcta25vb3AgKGJsayAlYiwgbGJsayAlYylcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgY29udmVydGVyZW4gdmFuIHN1YmNsdXN0ZXJibG9ra2VuLWJpdGthYXJ0OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIlF1b3RhLWlub2RlIGlzIGdlZW4gbm9ybWFhbCBiZXN0YW5kLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiUXVvdGEtaW5vZGUgaXMgbmlldCBpbiBnZWJydWlrLCBtYWFyIGJldmF0IGdlZ2V2ZW5zLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4NQorbXNnaWQgIkBxIEBpIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAiCittc2dzdHIgIlF1b3RhLWlub2RlIGlzIHppY2h0YmFhciB2b29yIGRlIGdlYnJ1aWtlci4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIkRlIHNsZWNodGVibG9ra2VuLWlub2RlIGxpamt0IG9uZ2VsZGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTk1Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhlZWZ0IGVlbiAnZXh0ZW50JyBtZXQgbGVuZ3RlIG51bFxuIgorIiAgKG9uZ2VsZGlnIGxvZ2lzY2ggYmxvayAlYywgZnlzaWVrIGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gICIKK21zZ3N0ciAiSW5vZGUgJWkgc2NoaWpudCByb21tZWwgdGUgYmV2YXR0ZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiIgorIklub2RlICVpIGtvbXQgZG9vciBkZSB0ZXN0cywgbWFhciBjb250cm9sZXNvbSBrb210IG5pZXQgb3ZlcmVlbiBtZXQgaW5vZGUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIlVpdGdlYnJlaWQga2VubWVyayB2YW4gaW5vZGUgJWkgaXMgYmVzY2hhZGlnZCAocmVzZXJ2ZXJpbmdzb3ZlcmxhcCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxOAorbXNnaWQgIiIKKyJAaSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJFeHRlbnQtYmxvayB2YW4gaW5vZGUgJWkga29tdCBkb29yIGRlIHRlc3RzLCBtYWFyIGNvbnRyb2xlc29tIGtvbXQgbmlldCAiCisib3ZlcmVlbiBtZXQgZXh0ZW50XG4iCisiICAobG9naXNjaCBibG9rICVjLCBmeXNpZWsgYmxvayAlYiwgbGVuZ3RlICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDI3Cittc2dpZCAiQGkgJWkgQGEgQGIgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBiLiAgIgorbXNnc3RyICIiCisiVWl0Z2VicmVpZGVrZW5tZXJrZW5ibG9rIHZhbiBpbm9kZSAlaSBrb210IGRvb3IgZGUgdGVzdHMsIG1hYXIgY29udHJvbGVzb20gIgorImtvbXQgbmlldCBvdmVyZWVuIG1ldCBibG9rLiAgIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiSW53ZW5kaWcgJ2V4dGVudCcta25vb3BuaXZlYXUgJU4gdmFuIGlub2RlICVpOlxuIgorIkxvZ2lzY2ggYmVnaW4gJWIga29tdCBuaWV0IG92ZXJlZW4gbWV0IGxvZ2lzY2ggYmVnaW4gJWMgb3Agdm9sZ2VuZGUgbml2ZWF1LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJJbm9kZSAlaTogZWluZGUgdmFuICdleHRlbnQnIG92ZXJzY2hyaWpkdCB0b2VnZXN0YW5lIHdhYXJkZVxuIgorIiAgKGxvZ2lzY2ggYmxvayAlYywgZnlzaWVrIGJsb2sgJWIsIGxlbmd0ZSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhlZWZ0IGV4dGVudC1vcG1hYWssIG1hYXIgc3VwZXJibG9rIGhlZWZ0IEVYVEVOVFMtZnVuY3RpZXZsYWcgbmlldCAiCisiZ2V6ZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIklub2RlICVpIGhlZWZ0IGRlICdJTkRFWF9GTCctdmxhZyBnZXpldCBvcCBlZW4gYmVzdGFuZHNzeXN0ZWVtIHpvbmRlciAiCisiJ2h0cmVlJy1vbmRlcnN0ZXVuaW5nLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkluIG1hcC1pbm9kZSAlaSB6b3UgYmxvayAlYiBibG9rICVjIG1vZXRlbiB6aWpuLiAgIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiTWFwLWlub2RlICVpIGJldmF0IGVlbiBvbmdlw69uaXRpYWxpc2VlcmRlIGV4dGVudCBpbiBibG9rICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiTG9naXNjaCBibG9rICViIChmeXNpZWsgYmxvayAlYykgaW4gaW5vZGUgJWkgc2NoZW5kdCAiCisiY2x1c3RlcnJlc2VydmVyaW5nc3JlZ2Vscy5cbiIKKyJaYWwgd29yZGVuIGdlcmVwYXJlZXJkIGluIHN0YXAgMUIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIklub2RlICVpIGhlZWZ0IGRlICdJTkRFWF9GTCctdmxhZyBnZXpldCBtYWFyIGhldCBpcyBnZWVuIG1hcC5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZWNpYWFsIGJlc3RhbmQgKGFwcGFyYWF0L3NvY2tldC9maWZvL3N5bWxpbmspIGhlZWZ0IGRlIG9udmVyYW5kZXJiYWFyLVxuIgorIm9mIGRlIGFsbGVlbi10b2V2b2VnZW52bGFnIGdlemV0IChpbm9kZSAlaSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBleHRlbnQgaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBAeCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IGV4dGVudCBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IEB4IGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgYmxvY2sgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgQGIgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBpbm9kZSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwOQorbXNnaWQgIkJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IEBpIGlzIGJhZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVudCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExNAorIywgZnV6enkKK21zZ2lkICJAQSBAeCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiAnaWNvdW50Jy1zdHJ1Y3R1dXI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorIywgZnV6enkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSW5vZGUgJWkgaGVlZnQgZWVuIG9uZ2VsZGlnZSAnZXh0ZW50J1xuIgorIiAgKGxvZ2lzY2ggYmxvayAlYywgb25nZWxkaWcgZnlzaWVrIGJsb2sgJWIsIGxlbmd0ZSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiQmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuIGlzIGJlc2NoYWRpZ2QgKG9uZ2VsZGlnZSBuYWFtKS4gICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJFciB6aWpuIGV4dHJhIHN0YXBwZW4gbm9kaWcgdm9vciBoZXQgb250d2FycmVuIHZhbiBibG9ra2VuIGRpZSBkb29yXG4iCisibWVlciBkYW4gw6nDqW4gaW5vZGUgZ2VjbGFpbWQgd29yZGVuLlxuIgorIlN0YXAgMUI6IE9wbmlldXcgem9la2VuIG5hYXIgbWVlcnZvdWRpZy1nZWNsYWltZGUgYmxva2tlblxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAiTWVlcnZvdWRpZy1nZWNsYWltZCBibG9rIChvZiBibG9ra2VuKSBpbiBpbm9kZSAlaToiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIHNjYW5uZW4gdmFuIGlub2RlcyAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3NworIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyByZXNlcnZlcmVuIHZhbiB2ZXJ2YW5nZW5kZSBpbm9kZS1iaXRrYWFydDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIGxhbmdzbG9wZW4gdmFuIGJsb2trZW4gdmFuIGlub2RlICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJGb3V0IHRpamRlbnMgYmlqc3RlbGxlbiB2YW4gdmVyd2lqemluZ3N0YWwgdmFuIGJsb2sgJWIgbWV0IHVpdGdlYnJlaWRlICIKKyJrZW5tZXJrZW4gKGlub2RlICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlN0YXAgMUM6IERvb3J6b2VrZW4gdmFuIG1hcHBlbiBuYWFyIGlub2RlcyBtZXQgbWVlcnZvdWRpZy1nZWNsYWltZGUgYmxva2tlblxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiU3RhcCAxRDogVmVyem9lbmVuIHZhbiBtZWVydm91ZGlnLWdlY2xhaW1kZSBibG9ra2VuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpbGUgJVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKSBcbgorIy4gQC1leHBhbmRlZDogICBoYXMgJXIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjA4Cittc2dpZCAiIgorIkZpbGUgJVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKSBcbiIKKyIgIGhhcyAlciBAbSBAYihzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbiIKK21zZ3N0ciAiIgorIkJlc3RhbmQgJVEgKGlub2RlICVpLCB3aWp6aWdpbmdzdGlqZCAlSU0pXG4iCisiICAgIGJldmF0ICVyIG1lZXJ2b3VkaWctZ2VjbGFpbWQoZSkgYmxvayhrZW4pLCBnZWRlZWxkIG1ldCAlTiBiZXN0YW5kKGVuKTpcbiIKKworIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorbXNnaWQgIlx0JVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKVxuIgorbXNnc3RyICJcdCVRIChpbm9kZSAlaSwgd2lqemlnaW5nc3RpamQgJUlNKVxuIgorCisjLiBALWV4cGFuZGVkOiBcdDxmaWxlc3lzdGVtIG1ldGFkYXRhPlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiXHQ8bWV0YWdlZ2V2ZW5zIHZhbiBiZXN0YW5kc3N5c3RlZW0+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihFciB6aWpuICVOIGlub2RlcyBtZXQgbWVlcnZvdWRpZy1nZWNsYWltZGUgYmxva2tlbi4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJNZWVydm91ZGlnLWdlY2xhaW1kZSBibG9ra2VuIHppam4gYWwgZ2VrbG9vbmQgb2Ygb3BuaWV1dyB0b2VnZWtlbmQuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJLYW4gYmVzdGFuZCBuaWV0IGtsb25lbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4CisjLCBmdXp6eQorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAiU3RhcCAzQTogT3B0aW1hbGlzYXRpZSB2YW4gbWFwcGVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBvcHRpbWl6ZSBleHRlbnQgdHJlZSAlcCAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBAeCB0cmVlICVwICglaSk6ICVtXG4iCittc2dzdHIgIk9wdGltYWxpc2VyZW4gdmFuIG1hcCAlcSAoJWQpIGlzIG1pc2x1a3Q6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIywgZnV6enkKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIk9wdGltYWxpc2VyZW4gdmFuIG1hcHBlbjogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiU3RhcCAyOiBDb250cm9sZSB2YW4gbWFwcGVuc3RydWN0dXVyXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk9uZ2VsZGlnIGlub2RlbnVtbWVyIHZvb3IgJy4nIGluIG1hcC1pbm9kZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgIkBFIGhlZWZ0IGVlbiBvbmdlbGRpZyBpbm9kZW51bW1lcjogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorbXNnaWQgIkBFIGhhcyBARC91bnVzZWQgQGkgJURpLiAgIgorbXNnc3RyICJARSBiZXZhdCBlZW4gdmVyd2lqZGVyZGUgb2Ygb25nZWJydWlrdGUgaW5vZGUgJURpLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIkBFIGlzIGVlbiBrb3BwZWxpbmcgbmFhciAnLicgICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIkBFIHZlcndpanN0IG5hYXIgZWVuIGlub2RlICglRGkpIGluIGVlbiBzbGVjaHQgYmxvay5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiQEUgaXMgZWVuIGtvcHBlbGluZyBuYWFyIG1hcCAlUCAoJURpKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyNQorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAiQEUgaXMgZWVuIGtvcHBlbGluZyBuYWFyIGRlIGhvb2ZkLWlub2RlLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzMAorbXNnaWQgIkBFIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuXG4iCittc2dzdHIgIkBFIGJldmF0IG9uZ2VsZGlnZSB0ZWtlbnMgaW4gZGUgbmFhbS5cbiIKKworIy4gQC1leHBhbmRlZDogTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk9udGJyZWtlbmRlICcuJyBpbiBtYXAtaW5vZGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIk9udGJyZWtlbmRlICcuLicgaW4gbWFwLWlub2RlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIkVlcnN0ZSBpdGVtICclRG4nIChpbm9kZT0lRGkpIGluIG1hcC1pbm9kZSAlaSAoJXApIG1vZXQgJy4nIHppam4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiVHdlZWRlIGl0ZW0gJyVEbicgKGlub2RlPSVEaSkgaW4gbWFwLWlub2RlICVpIG1vZXQgJy4uJyB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICInaV9mYWRkcicgQEYgaXMgJUlGLCBtb2V0IG51bCB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICInaV9maWxlX2FjbCcgQEYgaXMgJUlmLCBtb2V0IG51bCB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1Cittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiJ2lfZGlyX2FjbCcgQEYgaXMgJUlkLCBtb2V0IG51bCB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIidpX2ZyYWcnIEBGIGlzICVOLCBtb2V0IG51bCB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiJ2lfZnNpemUnIEBGIGlzICVOLCBtb2V0IG51bCB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorbXNnaWQgIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iCittc2dzdHIgIklub2RlICVpICglUSkgaGVlZnQgZWVuIG9uZ2VsZGlnZSBtb2R1cyAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAiTWFwLWlub2RlICVpLCAlQiwgcG9zaXRpZSAlTjogbWFwIGlzIGJlc2NoYWRpZ2RcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiTWFwLWlub2RlICVpLCAlQiwgcG9zaXRpZSAlTjogYmVzdGFuZHNuYWFtIGlzIHRlIGxhbmdcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1Cittc2dpZCAiQGQgQGkgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgIgorbXNnc3RyICJNYXAtaW5vZGUgJWkgYmV2YXQgZWVuIG9uZ2VyZXNlcnZlZXJkICVCLiAgIgorCisjLiBALWV4cGFuZGVkOiAnLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwMAorIywgYy1mb3JtYXQKK21zZ2lkICInLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJJdGVtICcuJyBpbiBtYXAtaW5vZGUgJWkgZWluZGlndCBuaWV0IG9wIE5VTEwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwNQorIywgYy1mb3JtYXQKK21zZ2lkICInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiSXRlbSAnLi4nIGluIG1hcC1pbm9kZSAlaSBlaW5kaWd0IG5pZXQgb3AgTlVMTC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJJbm9kZSAlaSAoJVEpIGlzIGVlbiBvbmdlbGRpZyBieXRlLWFwcGFyYWF0LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJJbm9kZSAlaSAoJVEpIGlzIGVlbiBvbmdlbGRpZyBibG9rLWFwcGFyYWF0LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyMAorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLicgQGUuXG4iCittc2dzdHIgIkBFIGlzIGVlbiBkdXBsaWNhYXQtJy4nLWl0ZW0uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJARSBpcyBlZW4gZHVwbGljYWF0LScuLictaXRlbS5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIioqSW50ZXJuZSBwcm9ncmFtbWFmb3V0Kio6IGthbiAnZGlyX2luZm8nIHZvb3IgJWkgbmlldCB2aW5kZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkBFIGhlZWZ0IGVlbiAncmVjX2xlbicgdmFuICVEciwgem91ICVOIG1vZXRlbiB6aWpuLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gJ2ljb3VudCctc3RydWN0dXVyOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgbGFuZ3Nsb3BlbiB2YW4gbWFwYmxva2tlbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgbGV6ZW4gdmFuIG1hcGJsb2sgJWIgKGlub2RlICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgc2NocmlqdmVuIHZhbiBtYXBibG9rICViIChpbm9kZSAlaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayBmb3IgaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIHJlc2VydmVyZW4gdmFuIG5pZXV3IG1hcGJsb2sgdm9vciBpbm9kZSAlaSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWFsbG9jYXRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyB2cmlqZ2V2ZW4gdmFuIGlub2RlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgIk1hcGl0ZW0gdm9vciAnLicgaW4gJXAgKCVpKSBpcyBncm9vdC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIEZJRk8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3NQorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgRklGTy5cbiIKK21zZ3N0ciAiSW5vZGUgJWkgKCVRKSBpcyBlZW4gb25nZWxkaWdlIEZJRk8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBzb2NrZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4MAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgc29ja2V0LlxuIgorbXNnc3RyICJJbm9kZSAlaSAoJVEpIGlzIGVlbiBvbmdlbGRpZ2Ugc29ja2V0LlxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHRvICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAiQmVzdGFuZHN0eXBlIHZhbiBARSB3b3JkdCBvcCAlTiBnZXpldC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBzaG91bGQgYmUgJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIkBFIGhlZWZ0IGVlbiBvbmdlbGRpZyBiZXN0YW5kc3R5cGUgKCVEdCwgem91ICVOIG1vZXRlbiB6aWpuKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZmlsZXR5cGUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTUKK21zZ2lkICJARSBoYXMgZmlsZXR5cGUgc2V0LlxuIgorbXNnc3RyICJARSBoZWVmdCBlZW4gaW5nZXZ1bGQgYmVzdGFuZHN0eXBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwMAorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgIkBFIGhlZWZ0IGVlbiBuYWFtIG1ldCBsZW5ndGUgbnVsLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIlN5bWJvbGlzY2hlIGtvcHBlbGluZyAlUSAoaW5vZGUgJWkpIGlzIG9uZ2VsZGlnLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIkJsb2sgdmFuIHVpdGdlYnJlaWRlIGtlbm1lcmtlbiBARiBpcyBvbmdlbGRpZyAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorIkJlc3RhbmRzc3lzdGVlbSBiZXZhdCBncm90ZSBiZXN0YW5kZW4sIG1hYXIgaGVlZnQgaW4gaGV0IHN1cGVyYmxvayBuaWV0IGRlICIKKyInbGFyZ2UtZmlsZSctdmxhZyBnZXpldC5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogbmFhciAlQiB3b3JkdCBuaWV0IHZlcndlemVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogbmFhciAlQiB3b3JkdCB0d2VlIGtlZXIgdmVyd2V6ZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIiIKKyJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogJUIgaGVlZnQgZWVuIG9uZ2VsZGlnZSBtaW5pbXVtIGhhc2guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzNQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIiIKKyJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogJUIgaGVlZnQgZWVuIG9uZ2VsZGlnZSBtYXhpbXVtIGhhc2guXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIk9uZ2VsZGlnZSAnaHRyZWUnLW1hcC1pbm9kZSAlZCAoJXEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZCAoJXEpOiBvbmdlbGRpZyBibG9rbnVtbWVyICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiUHJvYmxlZW0gaW4gJ2h0cmVlJy1tYXAtaW5vZGUgJWQ6IGRlIHdvcnRlbGtub29wIGlzIG9uZ2VsZGlnLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgbGltaXQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGxpbWl0ICglTilcbiIKK21zZ3N0ciAiIgorIlByb2JsZWVtIGluICdodHJlZSctbWFwLWlub2RlICVkOiAlQiBoZWVmdCBlZW4gb25nZWxkaWdlIGxpbWlldCAoJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgY291bnQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIKK21zZ3N0ciAiUHJvYmxlZW0gaW4gJ2h0cmVlJy1tYXAtaW5vZGUgJWQ6ICVCIGhlZWZ0IGVlbiBvbmdlbGRpZyBhYW50YWwgKCVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIiIKKyJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogJUIgaGVlZnQgZWVuIG9uZ2VvcmRlbmRlIGhhc2gtdGFiZWwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICIiCisiUHJvYmxlZW0gaW4gJ2h0cmVlJy1tYXAtaW5vZGUgJWQ6ICVCIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgZGllcHRlICglTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIkR1YmJlbCBpdGVtICclRG4nIGluICVwICglaSkgZ2V2b25kZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisiQEUgaGVlZnQgZWVuIG5pZXQtdW5pZWtlIGJlc3RhbmRzbmFhbS5cbiIKKyJIZXJub2VtZW4gdG90ICVzIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdWJiZWwgaXRlbSAnJURuJyBnZXZvbmRlbi5cbiIKKyIgICAgTWFwICVwICglaSkgd29yZHQgZ2VtYXJrZWVyZCBvbSBvcG5pZXV3IHRlIHdvcmRlbiBvcGdlYm91d2QuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIidpX2Jsb2Nrc19oaScgQEYgaXMgJU4sIG1vZXQgbnVsIHppam4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiT252ZXJ3YWNodCBibG9rIGluICdodHJlZSctbWFwLWlub2RlICVkICglcSlcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBpbiBncm91cCAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAzCittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgaW4gQGcgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4iCittc2dzdHIgIiIKKyJARSB2ZXJ3aWpzdCBuYWFyIGlub2RlICVEaSBpbiBncm9lcCAlZyBkaWUgZ2VtYXJrZWVyZCBpcyBhbHMgX0lOT0RFX1VOSU5JVC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIiIKKyJARSB2ZXJ3aWpzdCBuYWFyIGlub2RlICVEaSBpbiBoZXQgZ2ViaWVkIG1ldCBvbmdlYnJ1aWt0ZSBpbm9kZXMgdmFuIGdyb2VwICIKKyIlZy5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworbXNnaWQgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIidpX2ZpbGVfYWNsJyBARiBpcyAlTiwgbW9ldCBudWwgemlqbi5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogZGUgd29ydGVsa25vb3AgaXMgb25nZWxkaWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJQcm9ibGVlbSBpbiAnaHRyZWUnLW1hcC1pbm9kZSAlZDogZGUgd29ydGVsa25vb3AgaXMgb25nZWxkaWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIk1hcC1pbm9kZSAlaSwgJUIsIHBvc2l0aWUgJU46IG1hcCBpcyBiZXNjaGFkaWdkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJTdGFwIDM6IENvbnRyb2xlIHZhbiB2ZXJiaW5kaW5nZW4gdHVzc2VuIG1hcHBlblxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2MAorbXNnaWQgIkByIG5vdCBhbGxvY2F0ZWQuICAiCittc2dzdHIgIkhvb2ZkLWlub2RlIGlzIG5pZXQgZ2VyZXNlcnZlZXJkLiAgIgorCisjLiBALWV4cGFuZGVkOiBObyByb29tIGluIGxvc3QrZm91bmQgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjUKK21zZ2lkICJObyByb29tIGluIEBsIEBkLiAgIgorbXNnc3RyICJHZWVuIHJ1aW10ZSBtZWVyIGluIC9sb3N0K2ZvdW5kLiAgIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICJPbnZlcmJvbmRlbiBtYXAtaW5vZGUgJWkgKCVwKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3NQorbXNnaWQgIi9AbCBub3QgZm91bmQuICAiCittc2dzdHIgIi9sb3N0K2ZvdW5kIG5pZXQgZ2V2b25kZW4uICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIicuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBtb2V0ICVxICglZCkgemlqbi5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiIgorIkJlc2NoYWRpZ2RlIG9mIG5pZXQtYmVzdGFhbmRlIC9sb3N0K2ZvdW5kLiAgS2FuIGlub2RlIG5pZXQgaGVydmVyYmluZGVuLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIkthbiAvbG9zdCtmb3VuZCBuaWV0IHVpdGJyZWlkZW46ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJLYW4gaW5vZGUgJWkgbmlldCBoZXJ2ZXJiaW5kZW46ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgem9la2VuIHZhbiAvbG9zdCtmb3VuZDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfYmxvY2soKTogJW0gdGlqZGVucyBtYWtlbiB2YW4gL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfaW5vZGUoKTogJW0gdGlqZGVucyBtYWtlbiB2YW4gL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzE1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgQGQgQGJcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfYmxvY2soKTogJW0gdGlqZGVucyBtYWtlbiB2YW4gbmlldXcgbWFwYmxva1xuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBkaXJlY3RvcnkgYmxvY2sgZm9yIC9sb3N0K2ZvdW5kXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgIiIKKyJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrKCk6ICVtIHRpamRlbnMgbWFrZW4gdmFuIG1hcGJsb2sgdm9vciAvbG9zdCtmb3VuZFxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBhZGp1c3RpbmcgaW5vZGUgY291bnQgb24gaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGFkanVzdGluZyBAaSBjb3VudCBvbiBAaSAlaVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgYmlqd2Vya2VuIHZhbiBpbm9kZXRhbCB2YW4gaW5vZGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJLYW4gb3VkZXJ2ZXJ3aWp6aW5nIHZhbiBpbm9kZSAlaSBuaWV0IGhlcnN0ZWxsZW46ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IGRpcmVjdG9yeSBlbnRyeVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBAZCBAZVxuIgorIlxuIgorbXNnc3RyICIiCisiS2FuIG91ZGVydmVyd2lqemluZyB2YW4gaW5vZGUgJWkgbmlldCBoZXJzdGVsbGVuOiBrYW4gZGUgb3VkZXJtYXAgbmlldCAiCisidmluZGVuLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgcm9vdCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgbWFrZW4gdmFuIGhvb2ZkbWFwICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyBtYWtlbiB2YW4gL2xvc3QrZm91bmQtbWFwICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJEZSBob29mZC1pbm9kZSBpcyBnZWVuIG1hcC4gIEdlc3RvcHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIkthbiBuaWV0IHZlcmRlciB6b25kZXIgZWVuIGhvb2ZkLWlub2RlLlxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBub3QgYSBkaXJlY3RvcnkgKGlubz0laSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIi9AbCBpcyBub3QgYSBAZCAoaW5vPSVpKVxuIgorbXNnc3RyICIvbG9zdCtmb3VuZCAoaW5vZGUgJWkpIGlzIGdlZW4gbWFwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGhlZWZ0IGlubGluZS1nZWdldmVuc1xuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGlzIHZlcnNsZXV0ZWxkXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiU3RhcCAzQTogT3B0aW1hbGlzYXRpZSB2YW4gbWFwcGVuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAiTWFrZW4gdmFuICdkaXJzX3RvX2hhc2gtaXRlcmF0b3InIGlzIG1pc2x1a3Q6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiT3B0aW1hbGlzZXJlbiB2YW4gbWFwICVxICglZCkgaXMgbWlzbHVrdDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJPcHRpbWFsaXNlcmVuIHZhbiBtYXBwZW46ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIlN0YXAgNDogQ29udHJvbGUgdmFuIHZlcndpanppbmdzYWFudGFsbGVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiT252ZXJib25kZW4gaW5vZGUgJWkgbWV0IGxlbmd0ZSBudWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIk9udmVyYm9uZGVuIGlub2RlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJWZXJ3aWp6aW5nc2FhbnRhbCB2YW4gaW5vZGUgJWkgaXMgJUlsLCB6b3UgJU4gbW9ldGVuIHppam4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiV0FBUlNDSFVXSU5HOiBwcm9ncmFtbWFmb3V0IGluIGUyZnNjayFcbiIKKyIgICAgKm9mKiBVIEJFTlQgRUVOIEFBTkdFS09QUEVMRCBCRVNUQU5EU1NZU1RFRU0gQUFOIEhFVCBDT05UUk9MRVJFTiFcbiIKKyJcbiIKKyJpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC5cbiIKKyJEZXplIGhvcmVuIGhldHplbGZkZSB0ZSB6aWpuIVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb25cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODU4Cittc2dpZCAiUGFzcyA1OiBDaGVja2luZyBAZyBzdW1tYXJ5IGluZm9ybWF0aW9uXG4iCittc2dzdHIgIlN0YXAgNTogQ29udHJvbGUgdmFuIGdyb2Vwc3NhbWVudmF0dGluZ2VuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiT3B2dWxsaW5nIGFhbiBoZXQgZWluZCB2YW4gaW5vZGUtYml0a2FhcnQgaXMgbmlldCBnZXpldC4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIk9wdnVsbGluZyBhYW4gaGV0IGVpbmQgdmFuIGJsb2stYml0a2FhcnQgaXMgbmlldCBnZXpldC4gIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODczCittc2dpZCAiQGIgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiQmxvay1iaXRrYWFydC12ZXJzY2hpbGxlbjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiSW5vZGUtYml0a2FhcnQtdmVyc2NoaWxsZW46ICIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIlZlcmtlZXJkIGFhbnRhbCB2cmlqZSBpbm9kZXMgdm9vciBncm9lcCAjJWcgKCVpLCBnZXRlbGQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiVmVya2VlcmQgYWFudGFsIG1hcHBlbiB2b29yIGdyb2VwICMlZyAoJWksIGdldGVsZD0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIlZlcmtlZXJkIGFhbnRhbCBpbm9kZXMgKCVpLCBnZXRlbGQ9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiVmVya2VlcmQgYWFudGFsIGJsb2trZW4gdm9vciBncm9lcCAjJWcgKCViLCBnZXRlbGQ9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJWZXJrZWVyZCBhYW50YWwgYmxva2tlbiAoJWIsIGdldGVsZD0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKyJQUk9HUkFNTUFGT1VUIGluIGUyZnNjazogaW4gYmVzdGFuZHNzeXN0ZWVtICVOIGtvbWVuIGRlIGJpdGthYXJ0LWVpbmRwdW50ZW4gIgorIiglYiwgJWMpIG5pZXQgb3ZlcmVlbiBtZXQgZGUgYmVyZWtlbmRlIGVpbmRwdW50ZW4gKCVpLCAlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIioqSW50ZXJuZSBwcm9ncmFtbWFmb3V0Kio6IGVpbmRlIHZhbiBiaXRtYXAgaXMgZ2Vmb2V6ZWxkICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICJGb3V0IHRpamRlbnMga29wacOrcmVuIG5hYXIgdmVydmFuZ2VuZGUgaW5vZGUtYml0a2FhcnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIGtvcGnDq3JlbiBuYWFyIHZlcnZhbmdlbmRlIGJsb2stYml0a2FhcnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIiIKKyJCbG9rKGtlbikgdmFuIGdyb2VwICVnIGluIGdlYnJ1aWssIG1hYXIgZ3JvZXAgaXMgZ2VtYXJrZWVyZCBhbHMgIgorIkJMT0NLX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZShzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuIgorbXNnc3RyICIiCisiSW5vZGUocykgdmFuIGdyb2VwICVnIGluIGdlYnJ1aWssIG1hYXIgZ3JvZXAgaXMgZ2VtYXJrZWVyZCBhbHMgSU5PREVfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICJJbm9kZS1iaXRrYWFydCB2YW4gZ3JvZXAgJWcga29tdCBuaWV0IG92ZXJlZW4gbWV0IGNvbnRyb2xlc29tLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQmxvay1iaXRrYWFydCB2YW4gZ3JvZXAgJWcga29tdCBuaWV0IG92ZXJlZW4gbWV0IGNvbnRyb2xlc29tLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiSm91cm5hbCBoZXJhYW5tYWtlbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIlF1b3RhLWluZm9ybWF0aWUgYmlqd2Vya2VuIHZvb3IgcXVvdGF0eXBlICVOIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzZXR0aW5nIGJsb2NrIGdyb3VwIGNoZWNrc3VtIGluZm86ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBzZXR0aW5nIEBiIEBnIGNoZWNrc3VtIGluZm86ICVtXG4iCittc2dzdHIgIkZvdXQgYmlqIGluc3RlbGxlbiB2YW4gYmxva2dyb2VwY29udHJvbGVzb21pbmZvcm1hdGllOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBmaWxlIHN5c3RlbSBpbmZvOiAlbVxuIgorbXNnc3RyICJGb3V0IGJpaiBzY2hyaWp2ZW4gdmFuIGJlc3RhbmRzc3lzdGVlbWluZm9ybWF0aWU6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIkZvdXQgYmlqIHdlZ3NjaHJpanZlbiB2YW4gYnVmZmVycyBuYWFyIG9wc2xhZ2FwcGFyYWF0OiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKK21zZ2lkICJFcnJvciB3cml0aW5nIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU46ICVtXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIHF1b3RhLWluZm9ybWF0aWUgdm9vciBxdW90YXR5cGUgJU46ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgIk9uYmVrZW5kZSBmb3V0Y29kZSAoMHgleCkhXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICJHRU5FR0VFUkQiCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo3OQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKK21zZ3N0ciAiR2VicnVpa3QgZ2VoZXVnZW46ICVkLCB2ZXJsb3BlbiB0aWpkOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJzaXplIG9mIGlub2RlPSVkXG4iCittc2dzdHIgImdyb290dGUgdmFuIGlub2RlIGlzICVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgInRpamRlbnMgc3RhcnQgdmFuIGlub2RlLXNjYW4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInRpamRlbnMgdWl0dm9lcmluZyB2YW4gaW5vZGUtc2NhbiIKKworIzogZTJmc2NrL3N1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlub2RlICVkIgorbXNnc3RyICJ0aWpkZW5zIGFhbnJvZXAgdmFuIGV4dDJmc19ibG9ja19pdGVyYXRlKCkgdm9vciBpbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJ0aWpkZW5zIGFhbnJvZXAgdmFuIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyKCkgdm9vciBpbm9kZSAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiQWZrYXBwZW4gdmFuIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAiV2lzc2VuIHZhbiIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiR2VicnVpazogICVzIFstY2Rma25wdHZ5REZWXSBbLWIgc3VwZXJibG9rXSBbLUIgYmxva2dyb290dGVdXG4iCisiICAgICAgICAgICAgICAgICBbLUMgYmVzdGFuZHNkZXNjcmlwdG9yXSBbLUUgdWl0Z2VicmVpZGVfb3B0aWVzXVxuIgorIiAgICAgICAgICAgICAgICAgWy1JIGlub2RlYnVmZmVyYmxva2tlbl0gWy1sfC1MIHNsZWNodGVibG9ra2VuYmVzdGFuZF1cbiIKKyIgICAgICAgICAgICAgICAgIFstaiBleHRlcm5fam91cm5hbF0gWy1QIHByb2Nlc2lub2RlLWdyb290dGVdXG4iCisiICAgICAgICAgICAgICAgICBhcHBhcmFhdFxuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisiTm9vZGh1bHA6XG4iCisiIC1wICAgQXV0b21hdGlzY2hlIHJlcGFyYXRpZSAoem9uZGVyIHZyYWdlbikuXG4iCisiIC1uICAgQmVzdGFuZHNzeXRlZW0gbmlldCB2ZXJhbmRlcmVuOyBvcCBhbGxlIHZyYWdlbiBcIm5lZVwiIGFhbm5lbWVuLlxuIgorIiAteSAgIEFscyBhbnR3b29yZCBvcCBhbGxlIHZyYWdlbiBcImphXCIgYWFubmVtZW4uXG4iCisiIC1jICAgT3Agc2xlY2h0ZSBibG9ra2VuIGNvbnRyb2xlcmVuIGVuIGRlemUgYWFuIGxpanN0IHRvZXZvZWdlbi5cbiIKKyIgLWYgICBFZW4gY29udHJvbGUgYWZkd2luZ2VuLCBvb2sgYWxzIGhldCBiZXN0YW5kc3N5c3RlZW0gc2Nob29uIGlzLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4CisjLCBmdXp6eQorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgIEdlZGV0YWlsbGVlcmRlIHVpdHZvZXIgcHJvZHVjZXJlbi5cbiIKKyIgLWIgc3VwZXJibG9rICAgICAgICBEaXQgc3VwZXJibG9rIGdlYnJ1aWtlbi5cbiIKKyIgLUIgYmxva2dyb290dGUgICAgICBEZXplIGJsb2tncm9vdHRlIGdlYnJ1aWtlbiBiaWogem9la2VuIG5hYXIgc3VwZXJibG9rLlxuIgorIiAtaiBleHRlcm5fam91cm5hbCAgIERpdCBleHRlcm5lIGpvdXJuYWwgZ2VicnVpa2VuLlxuIgorIiAtbCBzbGVjaHRlYmxva2tlbmJlc3RhbmQgICBEZXplIGxpanN0IGFhbiBkZSBzbGVjaHRlYmxva2tlbmxpanN0ICIKKyJ0b2V2b2VnZW4uXG4iCisiIC1MIHNsZWNodGVibG9ra2VuYmVzdGFuZCAgIERlemUgc2xlY2h0ZWJsb2trZW5saWpzdCBnZWJydWlrZW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiIKKyIlczogJXUvJXUgYmVzdGFuZGVuICglMGQuJWQlJSBuaWV0LWFhbmVlbmdlc2xvdGVuKSwgJWxsdS8lbGx1IGJsb2trZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBpbm9kZSBnZWJydWlrdCAoJTIuMmYlJSB2YW4gJXUpXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyBnZWJydWlrdCAoJTIuMmYlJSB2YW4gJXUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IG5pZXQtYWFuZWVuZ2VzbG90ZW4gYmVzdGFuZCAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgbmlldC1hYW5lZW5nZXNsb3RlbiBiZXN0YW5kZW4gKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IG5pZXQtYWFuZWVuZ2VzbG90ZW4gbWFwICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBuaWV0LWFhbmVlbmdlc2xvdGVuIG1hcHBlbiAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICAgIGFhbnRhbCBpbm9kZXMgbWV0IGluZGlyZWN0ZSBibG9ra2VuOiAldSBlbmtlbCwgJXUgZHViYmVsLCAldSAiCisidHJpcGxlXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIEV4dGVudHMtZGllcHRlaGlzdG9ncmFtOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IGJsb2sgZ2VicnVpa3QgKCUyLjJmJSUgdmFuICVsbHUpXG4iCittc2dzdHJbMV0gIiUxMmxsdSBibG9ra2VuIGdlYnJ1aWt0ICglMi4yZiUlIHZhbiAlbGx1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSBzbGVjaHQgYmxva1xuIgorbXNnc3RyWzFdICIlMTJ1IHNsZWNodGUgYmxva2tlblxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGdyb290IGJlc3RhbmRcbiIKK21zZ3N0clsxXSAiJTEydSBncm90ZSBiZXN0YW5kZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgbm9ybWFhbCBiZXN0YW5kXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IG5vcm1hbGUgYmVzdGFuZGVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJTEydSBtYXBcbiIKK21zZ3N0clsxXSAiJTEydSBtYXBwZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgYnl0ZS1hcHBhcmFhdFxuIgorbXNnc3RyWzFdICIlMTJ1IGJ5dGUtYXBwYXJhdGVuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBibG9rLWFwcGFyYWF0XG4iCittc2dzdHJbMV0gIiUxMnUgYmxvay1hcHBhcmF0ZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSBmaWZvXG4iCittc2dzdHJbMV0gIiUxMnUgZmlmbydzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGlua1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxpbmtzXG4iCittc2dzdHJbMF0gIiUxMnUga29wcGVsaW5nXG4iCittc2dzdHJbMV0gIiUxMnUga29wcGVsaW5nZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IHN5bWJvbGlzY2hlIGtvcHBlbGluZyIKK21zZ3N0clsxXSAiJTEydSBzeW1ib2xpc2NoZSBrb3BwZWxpbmdlbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBzbmVsbGUga29wcGVsaW5nKVxuIgorbXNnc3RyWzFdICIgKCV1IHNuZWxsZSBrb3BwZWxpbmdlbilcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUgc29ja2V0XG4iCittc2dzdHJbMV0gIiUxMnUgc29ja2V0c1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGJlc3RhbmRcbiIKK21zZ3N0clsxXSAiJTEydSBiZXN0YW5kZW5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgInRpamRlbnMgYmVwYWxlbiBvZiAlcyBhYW5nZWtvcHBlbGQgaXMuIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiV2FhcnNjaHV3aW5nISAgJXMgaXMgYWFuZ2Vrb3BwZWxkLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJXYWFyc2NodXdpbmchICAlcyBpcyBpbiBnZWJydWlrLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIlcyBpcyBhYW5nZWtvcHBlbGQuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgaXMgaW4gZ2VicnVpay5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkthbiBuaWV0IGRvb3JnYWFuLiAgR2VzdG9wdC5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyIqKldBQVJTQ0hVV0lORyoqISEhICBIZXQgYmVzdGFuZHNzeXN0ZWVtIGlzIGFhbmdla29wcGVsZCFcbiIKKyIgICAgQWxzIHUgZG9vcmdhYXQgKipaQUwqKiBkaXQgdG90ICoqWldBUkUqKiBiZXNjaGFkaWdpbmdlbiBsZWlkZW4uXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJXaWx0IHUgZWNodCBkb29yZ2FhbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzgKK21zZ2lkICJjaGVjayBhYm9ydGVkLlxuIgorbXNnc3RyICJEZSBjb250cm9sZSBpcyBhZmdlYnJva2VuLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgYmV2YXQgZWVuIGJlc3RhbmRzc3lzdGVlbSBtZXQgZm91dGVuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgaXMgbmlldCBnb2VkIG9udGtvcHBlbGQiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiIKKyIgaGV0IHByaW1haXJlIHN1cGVyYmxvayBoZWVmdCBhbmRlcmUgZnVuY3RpZXZsYWdnZW4gZ2V6ZXQgZGFuIGRlICIKKyJyZXNlcnZlYmxva2tlbiIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgaXMgJXUga2VlciBhYW5nZWtvcHBlbGQgZ2V3ZWVzdCB6b25kZXIgY29udHJvbGUiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiBpcyBzY2hpam5iYWFyIGhldCBsYWF0c3QgZ2Vjb250cm9sZWVyZCBpbiBkZSB0b2Vrb21zdCIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgaXMgZ2VkdXJlbmRlICV1IGRhZ2VuIG5pZXQgZ2Vjb250cm9sZWVyZCIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAiLCBnZWR3b25nZW4gY29udHJvbGUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjbGVhbiwgJXUvJXUgZmlsZXMsICVsbHUvJWxsdSBibG9ja3MiCittc2dzdHIgIiVzOiBzY2hvb24sICV1LyV1IGJlc3RhbmRlbiwgJWxsdS8lbGx1IGJsb2trZW4iCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAoY29udHJvbGUgaXMgdWl0Z2VzdGVsZDsgY29tcHV0ZXIgbG9vcHQgb3AgYWNjdSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChjb250cm9sZSBiaWogdm9sZ2VuZGUgYWFua29wcGVsaW5nKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiIChjb250cm9sZSBuYSAlbGQgYWFua29wcGVsaW5nZW4pIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICJGT1VUOiBrYW4gL2Rldi9udWxsIG5pZXQgb3BlbmVuICglcylcbiIKKworIzogZTJmc2NrL3VuaXguYzo2NzkKK21zZ2lkICJJbnZhbGlkIEVBIHZlcnNpb24uXG4iCittc2dzdHIgIk9uZ2VsZGlnZSB2ZXJzaWUgdmFuIHVpdGdlYnJlaWRlIGtlbm1lcmtlbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKKyMsIGZ1enp5Cittc2dpZCAiSW52YWxpZCByZWFkYWhlYWQgYnVmZmVyIHNpemUuXG4iCittc2dzdHIgIk9uZ2VsZGlnIGFyZ3VtZW50IHZhbiAncmVzaXplJzogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgIk9uYmVrZW5kZSB1aXRnZWJyZWlkZSBvcHRpZTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YXhmb3V0IGluICdlMmZzY2snLWNvbmZpZ3VyYXRpZWJlc3RhbmQgKCVzLCByZWdlbCAjJWQpXG4iCisiICAgICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJGb3V0IHRpamRlbnMgdmFsaWRlcmVuIHZhbiBiZXN0YW5kc2Rlc3JpcHRvciAlZDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjkKK21zZ2lkICJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIgorbXNnc3RyICJPbmdlbGRpZ2UgY29tcGxldGVyaW5nc2luZm9ybWF0aWUgdm9vciBiZXN0YW5kc2Rlc2NyaXB0b3IuIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiU2xlY2h0cyDDqcOpbiB2YW4gZGUgb3B0aWVzIC1hLCAtcCwgLW4gb2YgLXkgbWFnIHdvcmRlbiBvcGdlZ2V2ZW4uIgorCisjOiBlMmZzY2svdW5peC5jOjg2NQorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgLXQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKK21zZ3N0ciAiT3B0aWUgJy10JyB3b3JkdCBuaWV0IG9uZGVyc3RldW5kIGRvb3IgZGV6ZSB2ZXJzaWUgdmFuIGUyZnNjay5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIkthbiBhcHBhcmFhdCAnJXMnIG5pZXQgdmluZGVuLiIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIk9wdGllcyAnLW4nIGVuICctRCcgZ2FhbiBuaWV0IHNhbWVuLiIKKworIzogZTJmc2NrL3VuaXguYzo5NTcKK21zZ2lkICJUaGUgLW4gYW5kIC1jIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIk9wdGllcyAnLW4nIGVuICctYycgZ2FhbiBuaWV0IHNhbWVuLiIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkRlIG9wdGllcyAnLW4nIGVuICctbCcgb2YgJy1MJyBnYWFuIG5pZXQgc2FtZW4uIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJPcHRpZXMgJy1EJyBlbiAnLUUgZml4ZXNfb25seScgZ2FhbiBuaWV0IHNhbWVuLiIKKworIzogZTJmc2NrL3VuaXguYzo5OTIKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiT3B0aWVzICctRSBibWFwMmV4dGVudCcgZW4gJy1FIGZpeGVzX29ubHknIGdhYW4gbmlldCBzYW1lbi4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiRGUgb3B0aWVzICctYycgZW4gJy1sJyBvZiAnLUwnIGt1bm5lbiBuaWV0IHNhbWVuIGdlYnJ1aWt0IHdvcmRlbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisiRTJGU0NLX0pCRF9ERUJVRyAtLSBcIiVzXCIgaXMgZ2VlbiBnZWhlZWwgZ2V0YWxcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiT25nZWxkaWcgbmlldC1udW1lcmllayBhcmd1bWVudCB2YW4gJy0lYyc6IFwiJXNcIlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyJIZXQgTU1QLWludGVydmFsIGlzICV1IHNlY29uZGVuLCBlbiBkZSB0b3RhbGUgd2FjaHR0aWpkIGlzICV1IHNlY29uZGVuLiAgIgorIkV2ZW4gZ2VkdWxkLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgInRpamRlbnMgY29udHJvbGVyZW4gdmFuIE1NUC1ibG9rIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorIkFscyB1IHpla2VyIHdlZXQgZGF0IGhldCBiZXN0YW5kc3N5c3RlZW0gbmVyZ2VucyBnZWJydWlrdCB3b3JkdCxcbiIKKyJnZWVmIGRhbiBkZXplIG9wZHJhY2h0OiAndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2FwcGFyYWF0fSdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBNTVAtYmxvayIKKworIzogZTJmc2NrL3VuaXguYzoxMjUyIGUyZnNjay91bml4LmM6MTMwNCBtaXNjL2UydW5kby5jOjIzMCBtaXNjL2UydW5kby5jOjI3NQorIzogbWlzYy9ta2UyZnMuYzoyNTQxIG1pc2MvbWtlMmZzLmM6MjU5MiBtaXNjL3R1bmUyZnMuYzoyNjEwCisjOiBtaXNjL3R1bmUyZnMuYzoyNjU1IHJlc2l6ZS9tYWluLmM6MTg3IHJlc2l6ZS9tYWluLmM6MjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJPdmVyd3JpdGluZyBleGlzdGluZyBmaWxlc3lzdGVtOyB0aGlzIGNhbiBiZSB1bmRvbmUgdXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorbXNnc3RyICIiCisiRWVuIGJlc3RhYW5kIGJlc3RhbmRzc3lzdGVlbSB3b3JkdCBvdmVyc2NocmV2ZW47XG4iCisiZGl0IGthbiBvbmdlZGFhbiBnZW1hYWt0IHdvcmRlbiBtZXQgZGUgb3BkcmFjaHQ6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgInRpamRlbnMgdmVyd2lqZGVyZW4gdmFuICVzIgorCisjOiBlMmZzY2svdW5peC5jOjEzMTkgbWlzYy9ta2UyZnMuYzoyNjA3IHJlc2l6ZS9tYWluLmM6MjQyCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHNldHVwIHVuZG8gZmlsZVxuIgorbXNnc3RyICJ0aWpkZW5zIGFhbm1ha2VuIHZhbiAndW5kbyctYmVzdGFuZFxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNjMKK21zZ2lkICJFcnJvcjogZXh0MmZzIGxpYnJhcnkgdmVyc2lvbiBvdXQgb2YgZGF0ZSFcbiIKK21zZ3N0ciAiRm91dDogZGUgZXh0MmZzLWJpYmxpb3RoZWVrIGlzIHRlIG91ZCFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAidGlqZGVucyBwcm9ncmFtbWEtaW5pdGlhbGlzYXRpZSIKKworIzogZTJmc2NrL3VuaXguYzoxMzkzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXMsICVzXG4iCittc2dzdHIgIiAgICBnZWJydWlrIG1ha2VuZCB2YW4gJXMsICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQwNQorbXNnaWQgIm5lZWQgdGVybWluYWwgZm9yIGludGVyYWN0aXZlIHJlcGFpcnMiCittc2dzdHIgInZvb3IgaW50ZXJhY3RpZXZlIHJlcGFyYXRpZXMgaXMgZWVuIHRlcm1pbmFsIHZlcmVpc3QiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXM6ICVzIHJlc2VydmVrb3BpZWJsb2trZW4gd29yZGVuIGJla2VrZW4uLi5cbiIKKworIyBHZWJydWlrIHZhbiAnLS0nIGluIGRlemUgZW4gdm9sZ2VuZGUgc3RyaW5nIGlzIG9wemV0dGVsaWprOworIyDDqcOpbiB2YW4gZGV6ZSBzdHJpbmdzIHdvcmR0IGluZ2V2dWxkIHZvb3IgZGUgdHdlZWRlICVzIGhpZXJib3Zlbi4KKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIlN1cGVyYmxvayBpcyBvbmdlbGRpZyAtLSIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkdyb2Vwc2Jlc2NocmlqdmVycyB6aWVuIGVyIHNsZWNodCB1aXQgLS0iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyB0aWpkZW5zIGdlYnJ1aWsgdmFuIGRlIHJlc2VydmVrb3BpZWJsb2trZW4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIiVzOiBlciB3b3JkdCB0ZXJ1Z2dldmFsbGVuIG9wIGhldCBlZXJzdGUgc3VwZXJibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyJEZSBiZXN0YW5kc3N5c3RlZW12ZXJzaWUgaXMgYmxpamtiYWFyIHRlIG5pZXV3IHZvb3IgZGV6ZSB2ZXJzaWUgdmFuIGUyZnNjay5cbiIKKyIoT2YgaGV0IHN1cGVyYmxvayBpcyBiZXNjaGFkaWdkLilcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiSXMgZGl0IG1pc3NjaGllbiBlZW4gcGFydGl0aWUgbWV0IGxlbmd0ZSBudWw/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIiIKKyJVIGRpZW50ICVzLXRvZWdhbmcgdG90IGhldCBiZXN0YW5kc3N5dGVlbSB0ZSBoZWJiZW4sIG9mIHJvb3QgdGUgemlqbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICJNb2dlbGlqayBlZW4gbmlldC1iZXN0YWFuZCBhcHBhcmFhdCBvZiBlZW4gc3dhcC1hcHBhcmFhdD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI5Cittc2dpZCAiRmlsZXN5c3RlbSBtb3VudGVkIG9yIG9wZW5lZCBleGNsdXNpdmVseSBieSBhbm90aGVyIHByb2dyYW0/XG4iCittc2dzdHIgIiIKKyJJcyBiZXN0YW5kc3N5c3RlZW0gZXhjbHVzaWVmIGFhbmdla29wcGVsZCBvZiBnZW9wZW5kIGRvb3IgZWVuIGFuZGVyICIKKyJwcm9ncmFtbWE/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIk1vZ2VsaWprIGVlbiBuaWV0LWJlc3RhYW5kIGFwcGFyYWF0P1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIkRlIHNjaGlqZiBpcyBzY2hyaWpmYmV2ZWlsaWdkLiAgR2VicnVpayBkZSBvcHRpZSAnLW4nIG9tIGVlblxuIgorImFsbGVlbi1sZXplbmNvbnRyb2xlIHZhbiBoZXQgYXBwYXJhYXQgdWl0IHRlIHZvZXJlbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjA0Cittc2dpZCAiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIgorbXNnc3RyICJJbnN0YWxsZWVyIGVlbiBuaWV1d2VyZSB2ZXJzaWUgdmFuIGUyZnNjayEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgInRpamRlbnMgY29udHJvbGUgdmFuIGhldCBleHQzLWpvdXJuYWwgdmFuICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiS2FuIG5pZXQgdmVyZGVyIHpvbmRlciBlZW4gaG9vZmQtaW5vZGUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY2MgorbXNnaWQgIiIKKyJXYXJuaW5nOiBza2lwcGluZyBqb3VybmFsIHJlY292ZXJ5IGJlY2F1c2UgZG9pbmcgYSByZWFkLW9ubHkgZmlsZXN5c3RlbSAiCisiY2hlY2suXG4iCittc2dzdHIgIiIKKyJXYWFyc2NodXdpbmc6IGFmc3BlbGVuIHZhbiBqb3VybmFsIHdvcmR0IG92ZXJnZXNsYWdlblxuIgorIm9tZGF0IGVlbiBhbGxlZW4tbGV6ZW5jb250cm9sZSB1aXRnZXZvZXJkIHdvcmR0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgIkthbiBzdXBlcmJsb2t2bGFnZ2VuIHZhbiAlcyBuaWV0IHpldHRlbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIkdlZW4gam91cm5hbC1zdXBlcmJsb2sgZ2V2b25kZW4hXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIKK21zZ3N0ciAiSm91cm5hbCBpcyB2ZXJ3aWpkZXJkLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlY292ZXJpbmcgam91cm5hbCBvZiAlcyIKK21zZ3N0ciAidGlqZGVucyBhZnNwZWxlbiB2YW4gaGV0IGV4dDMtam91cm5hbCB2YW4gJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiIKKyJCZXN0YW5kc3N5c3RlZW0gJXMgaGVlZnQgZnVuY3RpZXMgaW5nZXNjaGFrZWxkIGRpZSBuaWV0IG9uZGVyc3RldW5kIHdvcmRlbjoiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyB0aWpkZW5zIGxlemVuIHZhbiBzbGVjaHRlYmxva2tlbi1pbm9kZVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIkRpdCB6aWV0IGVyIG5pZXQgZ29lZCB1aXQsIG1hYXIgd2UgenVsbGVuIGRvb3JnYWFuLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICglZCBibG9ja3MpOiAiCittc2dzdHIgIkFhbm1ha2VuIHZhbiBqb3VybmFsICglZCBibG9ra2VuKTogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiIHZvbHRvb2lkLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIGpvdXJuYWwgaXMgb3BuaWV1dyBhYW5nZW1hYWt0IC0tIGhldCBiZXN0YW5kc3N5c3RlZW0gaXMgbnUgd2VlciBleHQzICIKKyIqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM2Cittc2dpZCAiYWJvcnRlZCIKK21zZ3N0ciAiYWZnZWJyb2tlbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiAnZTJmc2NrJyBpcyBnZWFubnVsZWVyZC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgIkUyZnNjayB3b3JkdCBvcG5pZXV3IGdlc3RhcnQgdmFuYWYgaGV0IGJlZ2luLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2OQorbXNnaWQgIndoaWxlIHJlc2V0dGluZyBjb250ZXh0IgorbXNnc3RyICJ0aWpkZW5zIHdpc3NlbiB2YW4gZGUgY29udGV4dCIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiBCRVNUQU5EU1NZU1RFRU0gSVMgVkVSQU5ERVJEICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqIEhFUlNUQVJUIFVXIFNZU1RFRU0gKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQUFSU0NIVVdJTkc6IGJlc3RhbmRzc3lzdGVlbSBiZXZhdCBub2cgZm91dGVuICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAiakp5WSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8aj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8bj4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKGovbikiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJnZWFubnVsZWVyZCFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgIiIKKworIyBzcmMvbWFpbi5jOjQxNyBzcmMvbWFpbi5jOjQxOCBzcmMvbWFpbi5jOjQ4MyBzcmMvbWFpbi5jOjQ4NCBzcmMvbWFpbi5jOjQ4OQorIyBzcmMvbWFpbi5jOjQ5MCBzcmMvbWFpbi5jOjU3NAorIzogZTJmc2NrL3V0aWwuYzoyNjYKK21zZ2lkICJ5ZXNcbiIKK21zZ3N0ciAiamFcbiIKKworIyBzcmMvbWFpbi5jOjQxNyBzcmMvbWFpbi5jOjQxOCBzcmMvbWFpbi5jOjQzMiBzcmMvbWFpbi5jOjQ4MyBzcmMvbWFpbi5jOjQ4NAorIyBzcmMvbWFpbi5jOjQ4OSBzcmMvbWFpbi5jOjQ5MCBzcmMvbWFpbi5jOjU3NAorIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJuZWVcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyBub1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IG5lZVxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IGphXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJqYSIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibmVlIgorCisjOiBlMmZzY2svdXRpbC5jOjMwMgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBpbGxlZ2FsIGJpdG1hcCBibG9jayhzKSBmb3IgJXMiCittc2dzdHIgImUyZnNja19yZWFkX2JpdG1hcHMoKTogb25nZWxkaWdlIGJpdGthYXJ0Ymxva2tlbiB2b29yICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgImxlemVuIHZhbiBpbm9kZS0gZW4gYmxvay1iaXRrYWFydGVuIgorCisjOiBlMmZzY2svdXRpbC5jOjMxOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXRyeWluZyB0byByZWFkIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICJ0aWpkZW5zIGhlcmxlemVuIHZhbiBiaXRrYWFydGVuIHZvb3IgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzMxCittc2dpZCAid3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyIKK21zZ3N0ciAic2NocmlqdmVuIHZhbiBibG9rLSBlbiBpbm9kZS1iaXRrYWFydGVuIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICJ0aWpkZW5zIGhlcnNjaHJpanZlbiB2YW4gYmxvay0gZW4gaW5vZGUtYml0a2FhcnRlbiB2b29yICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IE9OVkVSV0FDSFRFIElOQ09OU0lTVEVOVElFOyB2b2VyICdmc2NrJyBtZXQgZGUgaGFuZCB1aXRcbiIKKyIgICAgKGRhdCB3aWwgemVnZ2VuOiB6b25kZXIgZGUgb3B0aWVzICctYScgb2YgJy1wJykuXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDI5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKK21zZ3N0ciAiR2VicnVpa3QgZ2VoZXVnZW46ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIkdlYnJ1aWt0IGdlaGV1Z2VuOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAidGlqZDogJTUuMmYvJTUuMmYvJTUuMmZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIgorbXNnc3RyICJ2ZXJsb3BlbiB0aWpkOiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gaW5vZGUgJWx1IGluICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAidGlqZGVucyBzY2hyaWp2ZW4gdmFuIGlub2RlICVsdSBpbiAlcyIKKworIzogZTJmc2NrL3V0aWwuYzo3NjUKK21zZ2lkICIiCisiVU5FWFBFQ1RFRCBJTkNPTlNJU1RFTkNZOiB0aGUgZmlsZXN5c3RlbSBpcyBiZWluZyBtb2RpZmllZCB3aGlsZSBmc2NrIGlzICIKKyJydW5uaW5nLlxuIgorbXNnc3RyICIiCisiT05WRVJXQUNIVEUgSU5DT05TSVNURU5USUU6IGhldCBiZXN0YW5kc3N5c3RlZW0gd29yZHQgZ2V3aWp6aWdkIHRlcndpamwgIgorIidmc2NrJyB1aXRnZXZvZXJkIHdvcmR0LlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAidm9sdG9vaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiR2VicnVpazogICVzIFstYiBibG9rZ3Jvb3R0ZV0gWy1pIGludm9lcmJlc3RhbmRdIFstbyB1aXR2b2VyYmVzdGFuZF1cbiIKKyIgICAgICAgICAgWy1jIGFhbnRhbF9ibG9ra2VuX3RlZ2VsaWprXSBbLWQgIgorInZlcnRyYWdpbmdzZmFjdG9yX3R1c3Nlbl9sZWVzYWN0aWVzXVxuIgorIiAgICAgICAgICBbLWUgbWF4aW11bV9hYW50YWxfc2xlY2h0ZV9ibG9ra2VuXSBbLXAgYWFudGFsX2NvbnRyb2xlc11cbiIKKyIgICAgICAgICAgWy10IHRlc3RwYXRyb29uIFstdCB0ZXN0cGF0cm9vbiBbLi4uXV1dICBbLWZuc3Z3XVxuIgorIiAgICAgICAgICBhcHBhcmFhdCAgW2VpbmRibG9rIFtiZWdpbmJsb2tdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IE9wdGllcyAnLW4nIGVuICctdycgZ2FhbiBuaWV0IHNhbWVuLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiUlIGdlZGFhbiwgJXMgdmVybG9wZW4gICglZC8lZC8lZCBmb3V0ZW4pIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICJUZXN0IHdvcmR0IHVpdGdldm9lcmQgbWV0IGRpdCB3aWxsZWtldXJpZ2UgcGF0cm9vbjogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM0NgorbXNnaWQgIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IgorbXNnc3RyICJUZXN0IHdvcmR0IHVpdGdldm9lcmQgbWV0IHBhdHJvb24gMHgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgInRpamRlbnMgJ3NlZWsnIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIlZyZWVtZGUgd2FhcmRlICglbGQpIGJpaiBsZWVzcG9naW5nXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAidGlqZGVucyBsZWVnbWFrZW4gdmFuIGRlIGJ1ZmZlcnMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAiIgorInRpamRlbnMgdm9vcmJlcmVpZGluZyB2YW4gaGV0IGxhbmdzbG9wZW4gdmFuIGRlIGxpanN0IG1ldCBzbGVjaHRlIGJsb2trZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJ1ZmZlcnMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIkNvbnRyb2xlcmVuIHZhbiBibG9ra2VuICVsdSB0b3QgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiWm9la2VuIG5hYXIgc2xlY2h0ZSBibG9ra2VuIGluIGFsbGVlbi1sZXplbi1tb2R1c1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAiWm9la2VuIG5hYXIgc2xlY2h0ZSBibG9ra2VuIChhbGxlZW4tbGV6ZW4tdGVzdCk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICJUZSB2ZWVsIHNsZWNodGUgYmxva2tlbiAtLSBjb250cm9sZSBpcyBhZmdlYnJva2VuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIlpvZWtlbiBuYWFyIHNsZWNodGUgYmxva2tlbiBpbiBsZXplbi1lbi1zY2hyaWp2ZW4tbW9kdXNcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIlZhbiBibG9rICVsdSB0b3QgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkxlemVuIGVuIHZlcmdlbGlqa2VuOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICIiCisiWm9la2VuIG5hYXIgc2xlY2h0ZSBibG9ra2VuIGluIG5pZXQtZGVzdHJ1Y3RpZXZlIGxlemVuLWVuLXNjaHJpanZlbi1tb2R1c1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICIiCisiWm9la2VuIG5hYXIgc2xlY2h0ZSBibG9ra2VuIChuaWV0LWRlc3RydWN0aWV2ZSBsZXplbi1lbi1zY2hyaWp2ZW4tdGVzdClcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIkludGVycnVwdCBvbnR2YW5nZW4sIGJlemlnIG1ldCBvcHNjaG9uZW4uLi5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gdGVzdHBhdHJvb24sIGJsb2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBpcyBhYW5nZWtvcHBlbGQ7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKyJtYWFyICdiYWRibG9ja3MnIHdvcmR0IGdlZHdvbmdlbiB1aXRnZXZvZXJkLlxuIgorIkhvb3AgZGF0IC9ldGMvbXRhYiBvbmp1aXN0IGlzLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgImhldCBpcyBuaWV0IHZlaWxpZyBvbSAnYmFkYmxvY2tzJyB1aXQgdGUgdm9lcmVuIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMgd29yZHQgYmxpamtiYWFyIGdlYnJ1aWt0IGRvb3IgaGV0IHN5c3RlZW07ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIm1hYXIgJ2JhZGJsb2Nrcycgd29yZHQgZ2Vkd29uZ2VuIHVpdGdldm9lcmQuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgIm9uZ2VsZGlnZSAlczogJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTEyNworIywgYy1mb3JtYXQKK21zZ2lkICJUb28gYmlnIG1heCBiYWQgYmxvY2tzIGNvdW50ICV1IC0gbWF4aW11bSBpcyAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZXN0X3BhdHRlcm4gLSAlcyIKK21zZ3N0ciAia2FuIGdlZW4gZ2VoZXVnZW4gcmVzZXJ2ZXJlbiB2b29yIHRlc3RwYXRyb29uIC0tICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExODQKK21zZ2lkICJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlIHNwZWNpZmllZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiSW4gYWxsZWVuLWxlemVuLW1vZHVzIG1hZyBzbGVjaHRzIMOpw6luIHRlc3RwYXRyb29uIGdlZ2V2ZW4gd29yZGVuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJJbiBhbGxlZW4tbGV6ZW4tbW9kdXMgaXMgZWVuIHdpbGxla2V1cmlnIHRlc3RwYXRyb29uIG5pZXQgdG9lZ2VzdGFhbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjA0Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG1hbnVhbGx5XG4iCittc2dzdHIgIkthbiBkZSBhcHBhcmFhdGdyb290dGUgbmlldCBiZXBhbGVuOyBnZWVmIGRlIGdyb290dGUgaGFuZG1hdGlnIG9wLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICJ0aWpkZW5zIGJlcGFsZW4gdmFuIGFwcGFyYWF0Z3Jvb3R0ZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjE1Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAibGFhdHN0ZSBibG9rIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAiZWVyc3RlIGJsb2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyNAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHN0YXJ0aW5nIGJsb2NrICglbGx1KTogbXVzdCBiZSBsZXNzIHRoYW4gJWxsdSIKK21zZ3N0ciAib25nZWxkaWcgYmVnaW5ibG9rOiAlbGx1IC0tIG1vZXQga2xlaW5lciBkYW4gJWxsdSB6aWpuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAib25nZWxkaWcgYmVnaW5ibG9rOiAlbGx1IC0tIG1vZXQgZWVuIDMyLWJpdHMgd2FhcmRlIHppam4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgInRpamRlbnMgb3BzdGVsbGVuIHZhbiBsaWpzdCB2YW4gc2xlY2h0ZSBibG9ra2VuIGluIGdlaGV1Z2VuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiaW52b2VyYmVzdGFuZCBoZWVmdCBvbmdlbGRpZ2Ugb3BtYWFrIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAidGlqZGVucyB0b2V2b2VnZW4gYWFuIGxpanN0IHZhbiBzbGVjaHRlIGJsb2trZW4gaW4gZ2VoZXVnZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMzOAorIywgYy1mb3JtYXQKK21zZ2lkICJQYXNzIGNvbXBsZXRlZCwgJXUgYmFkIGJsb2NrcyBmb3VuZC4gKCVkLyVkLyVkIGVycm9ycylcbiIKK21zZ3N0ciAiQ29udHJvbGUgaXMgdm9sdG9vaWQ7ICV1IHNsZWNodGUgYmxva2tlbiBnZXZvbmRlbiAoJWQvJWQvJWQgZm91dGVuKS5cbiIKKworIzogbWlzYy9jaGF0dHIuYzo4OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIkdlYnJ1aWs6ICAlcyBbLVJWZl0gWy0rPUFhQ2NEZGVpalNzVHR1XSBbLXYgVkVSU0lFXSBCRVNUQU5ELi4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAib25nZWxkaWcgcHJvamVjdDogJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJvbmdlbGRpZ2UgdmVyc2llOiAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAidGlqZGVucyBvcHZyYWdlbiB2YW4gZGUgc3RhdHVzIHZhbiAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gdmxhZ2dlbiBvcCAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMzEgbWlzYy9jaGF0dHIuYzoyNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZ3Mgb2YgJXMgc2V0IGFzICIKK21zZ3N0ciAiVmxhZ2dlbiB2YW4gJXMgemlqbiBnZXpldCBhbHMgIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJ0aWpkZW5zIHpldHRlbiB2YW4gdmxhZ2dlbiBvcCAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlZlcnNpZSB2YW4gJXMgaXMgZ2V6ZXQgYWxzICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgInRpamRlbnMgemV0dGVuIHZhbiB2ZXJzaWUgb3AgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJQcm9qZWN0IHZhbiAlcyBpcyBnZXpldCBhbHMgJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAidGlqZGVucyBpbnN0ZWxsZW4gdmFuIHByb2plY3Qgb3AgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgIkthbiBnZWVuIHBhZHZhcmlhYmVsZSByZXNlcnZlcmVuIGluIGNoYXR0cl9kaXJfcHJvYygpIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICInPScgZ2FhdCBuaWV0IHNhbWVuIG1ldCAnLScgZW4gJysnXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIkdlYnJ1aWsgJy12JywgJz0nLCAnLScgb2YgJysnLlxuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIGlub2RlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwIG1pc2MvY3JlYXRlX2lub2RlLmM6MjcyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzM2CisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM3NAorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgInRpamRlbnMgdWl0YnJlaWRlbiB2YW4gbWFwIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIGtvcHBlbGVuIHZhbiBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAidGlqZGVucyBzY2hyaWp2ZW4gdmFuIGlub2RlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEzOSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE2MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIG9wc29tbWVuIHZhbiBrZW5tZXJrZW4gdmFuIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSAldSIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdmFuIGlub2RlICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgInRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gZ2VoZXVnZW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIGtlbm1lcmsgXCIlc1wiIHZhbiBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAidGlqZGVucyBzY2hyaWp2ZW4gdmFuIGtlbm1lcmsgXCIlc1wiIG5hYXIgaW5vZGUgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgInRpamRlbnMgc2x1aXRlbiB2YW4gaW5vZGUgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGdlaGV1Z2VuIHZvb3IgaW5vZGUgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgYWFubWFrZW4gdmFuIGlub2RlIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3ltbGluayBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgYWFubWFrZW4gdmFuIHN5bWJvbGlzY2hlIGtvcHBlbGluZyBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzYxIG1pc2MvY3JlYXRlX2lub2RlLmM6ODM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIG9wem9la2VuIHZhbiBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgYWFubWFrZW4gdmFuIG1hcCBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgInRpamRlbnMgb3BlbmVuIHZhbiBcIiVzXCIgdm9vciBrb3Bpw6tyZW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAidGlqZGVucyB2ZXJhbmRlcmVuIHZhbiB3ZXJrbWFwIG5hYXIgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgb3BlbmVuIHZhbiBtYXAgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgbHN0YXQoKSB2YW4gXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIGFhbm1ha2VuIHZhbiBzcGVjaWFhbCBiZXN0YW5kIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjAKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJvbnZvbGRvZW5kZSBnZWhldWdlbiBiZXNjaGlrYmFhciIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlYWQgbGluayBcIiVzXCIiCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIGtvcHBlbGluZyBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgInN5bWJvbGlzY2hlIGtvcHBlbGluZyBpcyBncm90ZXIgZ2V3b3JkZW4gdHVzc2VuIGxzdGF0KCkgZW4gcmVhZGxpbmsoKSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBzeW1saW5rXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gc3ltYm9saXNjaGUga29wcGVsaW5nIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAidGlqZGVucyBzY2hyaWp2ZW4gdmFuIGJlc3RhbmQgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBtYWtpbmcgZGlyIFwiJXNcIiIKK21zZ3N0ciAidGlqZGVucyBhYW5tYWtlbiB2YW4gbWFwIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiCittc2dzdHIgInRpamRlbnMgd2lqemlnZW4gdmFuIG1hcCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWdub3JpbmcgZW50cnkgXCIlc1wiIgorbXNnc3RyICJpdGVtIFwiJXNcIiB3b3JkdCBnZW5lZ2VlcmQiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAidGlqZGVucyBpbnN0ZWxsZW4gdmFuIGlub2RlIHZvb3IgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHhhdHRycyBmb3IgXCIlc1wiIgorbXNnc3RyICJ0aWpkZW5zIGluc3RlbGxlbiB2YW4gdWl0Z2VicmVpZGUga2VubWVya2VuIHZvb3IgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJ0aWpkZW5zIG9wc2xhYW4gdmFuIGlub2RlLWdlZ2V2ZW5zIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkdlYnJ1aWs6ICAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW1tZXI+XSBbLW8gYmxvY2tzaXplPTxnZXRhbD5dICIKKyJhcHBhcmFhdFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9ra2VuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgImNsdXN0ZXJzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIkdyb2VwICVsdTogKEJsb2trZW4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiBjc3VtIDB4JTA0eCIKK21zZ3N0ciAiIGMuc29tIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoMHglMDR4IFdFUkQgVkVSV0FDSFQpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMgc3VwZXJibG9rIG9wICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgIlByaW1haXIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIlJlc2VydmVrb3BpZSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdyb2Vwc2Jlc2NocmlqdmVycyBvcCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDIKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgQmxva2tlbiB2b29yIGdyb2Vwc2Jlc2NocmlqdmVyc3RhYmVsIGdlcmVzZXJ2ZWVyZCBvcCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBHcm9lcHNiZXNjaHJpanZlciBvcCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgQmxvay1iaXRrYWFydCBvcCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIsIGMuc29tIDB4JTA4eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorIlxuIgorIiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiIElub2RlLWJpdGthYXJ0IG9wICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgSW5vZGV0YWJlbCBvcCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKyJcbiIKKyIgICV1IHZyaWplICVzLCAldSB2cmlqZSBpbm9kZXMsICV1IG1hcHBlbiVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsICV1IG9uZ2VicnVpa3RlIGlub2Rlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIgIFZyaWplIGJsb2trZW46ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAiICBWcmlqZSBpbm9kZXM6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJ0aWpkZW5zIHByaW50ZW4gdmFuIGxpanN0IHZhbiBzbGVjaHRlIGJsb2trZW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIlNsZWNodGUgYmxva2tlbjogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBqb3VybmFsLWlub2RlIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJ0aWpkZW5zIG9wZW5lbiB2YW4gam91cm5hbC1pbm9kZSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gam91cm5hbC1zdXBlcmJsb2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIk1hZ2lzY2ggZ2V0YWwgdmFuIGpvdXJuYWwtc3VwZXJibG9rIGlzIG9uZ2VsZGlnIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJKb3VybmFsLWZ1bmN0aWVzOiAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQyMAorbXNnaWQgIkpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgIgorbXNnc3RyICJHcm9vdHRlIHZhbiBqb3VybmFsOiAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisiTGVuZ3RlIHZhbiBqb3VybmFsOiAgICAgICAldVxuIgorIkpvdXJuYWwtc2VxdWVudGllOiAgICAgICAgMHglMDh4XG4iCisiQmVnaW4gdmFuIGpvdXJuYWw6ICAgICAgICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDM4IG1pc2MvZHVtcGUyZnMuYzo0ODAKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgIGNyYzMyXG4iCittc2dzdHIgIkpvdXJuYWwtY29udHJvbGVzb210eXBlOiAgY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorIkpvdXJuYWwtY29udHJvbGVzb210eXBlOiAgJXNcbiIKKyJKb3VybmFsLWNvbnRyb2xlc29tOiAgICAgIDB4JTA4eFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZXJybm86ICAgICAgICAgICAgJWRcbiIKK21zZ3N0ciAiSm91cm5hbC1mb3V0bW51bW1lcjogICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBqb3VybmFsLXN1cGVyYmxvayIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgIkthbiBtYWdpc2NoZSBnZXRhbGxlbiB2YW4gam91cm5hbC1zdXBlcmJsb2sgbmlldCB2aW5kZW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIkJsb2tncm9vdHRlIGluIGpvdXJuYWw6ICAgICAldVxuIgorIkxlbmd0ZSB2YW4gam91cm5hbDogICAgICAgICAldVxuIgorIkVlcnN0ZSBqb3VybmFsLWJsb2s6ICAgICAgICAldVxuIgorIktvcGNvZGUgdmFuIGpvdXJuYWwtcmVla3M6ICAweCUwOHhcbiIKKyJCZWdpbiB2YW4gam91cm5hbDogICAgICAgICAgJXVcbiIKKyJBYW50YWwgam91cm5hbC1nZWJydWlrZXJzOiAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUxNAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHVzZXJzOiAgICAgICAgICAgICVzXG4iCittc2dzdHIgIkpvdXJuYWwtZ2VicnVpa2VyczogICAgICAgJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUzMCBtaXNjL21rZTJmcy5jOjc4NSBtaXNjL3R1bmUyZnMuYzoxOTMwCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIG9wdGlvbnMhXG4iCittc2dzdHIgIkthbiBnZWVuIGdlaGV1Z2VuIHJlc2VydmVyZW4gb20gb3B0aWVzIHRlIG9udGxlZGVuIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnIHN1cGVyYmxvayBvcGdlZ2V2ZW46ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJPbmdlbGRpZ2UgYmxva2dyb290dGUgb3BnZWdldmVuOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgZXh0ZW5kZWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrIG51bWJlcj5cbiIKKyJcdGJsb2Nrc2l6ZT08YmxvY2tzaXplPlxuIgorbXNnc3RyICIiCisiXG4iCisiT25nZWxkaWdlIG9wdGllIG9wZ2VnZXZlbjogJXNcbiIKKyJcbiIKKyJVaXRnZWJyZWlkZSBvcHRpZXMgd29yZGVuIGdlc2NoZWlkZW4gZG9vciBrb21tYSdzO1xuIgorImh1biBhcmd1bWVudCB3b3JkdCB2b29yYWZnZWdhYW4gZG9vciBlZW4gJz0nLXRla2VuLlxuIgorIlxuIgorIkdlbGRpZ2UgdWl0Z2VicmVpZGUgb3B0aWVzIHppam46XG4iCisiICAgIHN1cGVyYmxvY2s9PHN1cGVyYmxva251bW1lcj5cbiIKKyIgICAgYmxvY2tzaXplPTxibG9rZ3Jvb3R0ZT5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdGdlYnJ1aWsgbWFrZW5kIHZhbiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIENvbnRyb2xlc29tZm91dGVuIGdldm9uZGVuIGluIGJlc3RhbmRzc3lzdGVlbSEgIERyYWFpICdlMmZzY2snIG51IVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiS2FuIGdlZW4gZ2VsZGlnIGJlc3RhbmRzc3lzdGVlbS1zdXBlcmJsb2sgdmluZGVuLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzI2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gYml0bWFwcyEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIENvbnRyb2xlc29tZm91dGVuIGdldm9uZGVuIGluIGJpdGthYXJ0ZW4hICBEcmFhaSAnZTJmc2NrJyBudSFcbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogJXM6IGZvdXQgdGlqZGVucyBsZXplbiB2YW4gYml0a2FhcnRlbjogJXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIkdlYnJ1aWs6ICAlcyBbLXJ8LVFdIFstZnJdIGFwcGFyYWF0IGltYWdlYmVzdGFuZFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiAgICAgICAgICAlcyAtSSBhcHBhcmFhdCBpbWFnZWJlc3RhbmRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICVzIC1yYSBbLWNmbnBdIFstbyBicm9ucG9zaXRpZV0gWy1PIGRvZWxwb3NpdGllXSBicm9uLWJzIFtkb2VsLSIKKyJic11cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJ1ZmZlciIKKworIzogbWlzYy9lMmltYWdlLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIldyaXRpbmcgYmxvY2sgJWxsdVxuIgorbXNnc3RyICJTY2hyaWp2ZW4gdmFuIGJsb2sgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJmb3V0IHRpamRlbnMgc2NocmlqdmVuIHZhbiBibG9rICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiZm91dCBpbiBnZW5lcmljX3dyaXRlKCkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxMworbXNnaWQgIkVycm9yOiBoZWFkZXIgc2l6ZSBpcyBiaWdnZXIgdGhhbiB3cnRfc2l6ZVxuIgorbXNnc3RyICJGb3V0OiBoZWFkZXItZ3Jvb3R0ZSBpcyBncm90ZXIgZGFuIHdydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiS2FuIGdlZW4gaGVhZGVyLWJ1ZmZlciByZXNlcnZlcmVuLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgInRpamRlbnMgc2NocmlqdmVuIHZhbiBzdXBlcmJsb2siCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgInRpamRlbnMgYWFubWFrZW4gdmFuIGlub2RldGFiZWwiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gYmxvay1iaXRrYWFydCIKKworIzogbWlzYy9lMmltYWdlLmM6MjcxCittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSBiaXRtYXAiCittc2dzdHIgInRpamRlbnMgc2NocmlqdmVuIHZhbiBpbm9kZS1iaXRrYWFydCIKKworIzogbWlzYy9lMmltYWdlLmM6NTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCByZWNfbGVuICglZClcbiIKK21zZ3N0ciAiQmVzY2hhZGlnZCBtYXBibG9rICVsbHU6IG9uanVpc3RlICdyZWNfbGVuJyAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgbmFtZV9sZW4gKCVkKVxuIgorbXNnc3RyICJCZXNjaGFkaWdkIG1hcGJsb2sgJWxsdTogb25qdWlzdGUgJ25hbWVfbGVuJyAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIlbGx1IC8gJWxsdSBibG9ra2VuICglZCUlKSIKKworIzogbWlzYy9lMmltYWdlLmM6NTg5IG1pc2MvZTJpbWFnZS5jOjYyOQorbXNnaWQgIkNvcHlpbmcgIgorbXNnc3RyICJLb3Bpw6tyZW4gdmFuICIKKworIzogbWlzYy9lMmltYWdlLmM6NjI2Cittc2dpZCAiIgorIlN0b3BwaW5nIG5vdyB3aWxsIGRlc3Ryb3kgdGhlIGZpbGVzeXN0ZW0sIGludGVycnVwdCBhZ2FpbiBpZiB5b3UgYXJlIHN1cmVcbiIKK21zZ3N0ciAiIgorIk51IHN0b3BwZW4gemFsIGhldCBiZXN0YW5kc3N5c3RlZW0gdmVybmlldGlnZW47IG9uZGVyYnJlZWsgb3BuaWV1dyBhbHMgdSBoZXQgIgorInpla2VyIHdlZXQuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIG5vZyAlcyBiaWogJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgImZvdXQgdGlqZGVucyBsZXplbiB2YW4gYmxvayAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29waWVkICVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkgaW4gJXMgIgorbXNnc3RyICJFciB6aWpuICVsbHUgLyAlbGx1IGJsb2trZW4gZ2Vrb3BpZWVyZCAoJWQlJSkgaW4gJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICJtZXQgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGwxLXRhYmVsIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MDMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGwyLWNhY2hlIgorCisjIFhYWCAgIndoaWxlIHB1dHRpbmciPz8KKyM6IG1pc2MvZTJpbWFnZS5jOjgyNgorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluIHRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgZGF0YSAiCisid2lsbCBiZSBsb3N0IHNvIHRoZSBpbWFnZSBtYXkgbm90IGJlIHZhbGlkLlxuIgorbXNnc3RyICIiCisiV2FhcnNjaHV3aW5nOiBlciB6aXR0ZW4gbm9nIHRhYmVsbGVuIGluIGRlIGNhY2hlIHRlcndpamwgZGV6ZSBvcGdlc2xhZ2VuICIKKyJ3b3JkdDtcbiIKKyJlciB6dWxsZW4gZ2VnZXZlbnMgdmVybG9yZW4gZ2FhbiwgZHVzIGRlIGltYWdlIGthbiBvbmdlbGRpZyB6aWpuLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuICdleHQyX3Fjb3cyX2ltYWdlJyIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJ0aWpkZW5zIGluaXRpYWxpc2VyZW4gdmFuICdleHQyX3Fjb3cyX2ltYWdlJyIKKworIzogbWlzYy9lMmltYWdlLmM6MTIxNCBtaXNjL2UyaW1hZ2UuYzoxMjMyCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlIHNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzIGNyZWF0ZWQhXG4iCittc2dzdHIgIiIKKyIqKlByb2dyYW1tYWZvdXQqKjogbWVlcmRlcmUgb3BlZW52b2xnZW5kZSAncmVmY291bnQnLWJsb2trZW4gYWFuZ2VtYWFrdCFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJsb2stYml0a2FhcnQiCisKKyMgWFhYICBtYXliZSAnc2NyYW1ibGVkJz8KKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAidGlqZGVucyByZXNlcnZlcmVuIHZhbiBnZWh1c3NlbGRlIGJsb2stYml0a2FhcnQiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAiU2Nhbm5lbiB2YW4gaW5vZGVzLi4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIkthbiBnZWVuIGJsb2tidWZmZXIgcmVzZXJ2ZXJlbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJ0aWpkZW5zIGl0ZXJhdGllIG92ZXIgaW5vZGUgJXUiCisKKyMgWFhYICB1cHBlcmNhc2UgUUNPVzIsIGFkZCBzcGFjZQorIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIidyYXcnLSBlbiBRQ09XMi1pbWFnZXMga3VubmVuIG5pZXQgZ2XDr25zdGFsbGVlcmQgd29yZGVuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJmb3V0IHRpamRlbnMgbGV6ZW4gdmFuIGJpdGthYXJ0ZW4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MTkKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRldmljZSBmaWxlIgorbXNnc3RyICJ0aWpkZW5zIG9wZW5lbiB2YW4gYXBwYXJhYXRiZXN0YW5kIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAidGlqZGVucyBoZXQgaGVyc3RlbGxlbiB2YW4gZGUgaW1hZ2UtdGFiZWwiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICJPcHRpZSAnLWEnIGthbiBhbGxlZW4gZ2VicnVpa3Qgd29yZGVuIG1ldCAncmF3Jy0gb2YgUUNPVzItaW1hZ2VzLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJQb3NpdGllcyB6aWpuIGFsbGVlbiB0b2VnZXN0YWFuIG1ldCAncmF3Jy1pbWFnZXMuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICJWZXJwbGFhdHNpbmdzbW9kdXMgaXMgYWxsZWVuIHRvZWdlc3RhYW4gbWV0ICdyYXcnLWltYWdlcy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIlZlcnBsYWF0c2luZ3Ntb2R1cyB2ZXJlaXN0ICdhbGwtZGF0YSctbW9kdXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJjb250cm9sZSBvcCBhYW5rb3BwZWxpbmciCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NjAKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBlMmltYWdlIG9uIGEgUi9XIG1vdW50ZWQgZmlsZXN5c3RlbSBjYW4gcmVzdWx0IGluIGFuXG4iCisiaW5jb25zaXN0ZW50IGltYWdlIHdoaWNoIHdpbGwgbm90IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuIgorIlVzZSAtZiBvcHRpb24gaWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJIZXQgZHJhYWllbiB2YW4gJ2UyaW1hZ2UnIG9wIGVlbiBzY2hyaWpmYmFhciBhYW5nZWtvcHBlbGQgYmVzdGFuZHNzeXN0ZWVtXG4iCisia2FuIHJlc3VsdGVyZW4gaW4gZWVuIGluY29uc2lzdGVudGUgaW1hZ2UgZGllIG9uYnJ1aWtiYWFyIGlzIHZvb3IgIgorImRlYnVnZ2luZy5cbiIKKyJHZWJydWlrIG9wdGllICctZicgYWxzIHUgZGl0IGVjaHQgd2lsdCBkb2VuLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIkVlbiBRQ09XMi1pbWFnZSBrYW4gbmlldCBuYWFyIHN0YW5kYWFyZHVpdHZvZXIgZ2VzY2hyZXZlbiB3b3JkZW4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIkthbiBzdGF0dXMgdmFuIHVpdHZvZXIgbmlldCBvcHZyYWdlblxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICJJbWFnZSAoJXMpIGlzIGdlY29tcHJpbWVlcmQuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiSW1hZ2UgKCVzKSBpcyB2ZXJzbGV1dGVsZC5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY29udmVydCBxY293MiBpbWFnZSAoJXMpIGludG8gcmF3IGltYWdlICglcykiCittc2dzdHIgIiIKKyJ0aWpkZW5zIGNvbnZlcnRlcmVuIHZhbiBlZW4gcWNvdzItaW1hZ2UgKCVzKSBuYWFyIGVlbiByYXctaW1hZ2ViZXN0YW5kICglcykiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIk9wdGllICctYycgd29yZHQgYWxsZWVuIG9uZGVyc3RldW5kIGluICdyYXcnLW1vZHVzLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjUwCittc2dpZCAiVGhlIC1jIG9wdGlvbiBub3Qgc3VwcG9ydGVkIHdoZW4gd3JpdGluZyB0byBzdGRvdXRcbiIKK21zZ3N0ciAiIgorIk9wdGllICctYycgd29yZHQgbmlldCBvbmRlcnN0ZXVuZCBiaWogc2NocmlqdmVuIG5hYXIgc3RhbmRhYXJkdWl0dm9lci5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuICdjaGVja19idWYnIgorCisjIFhYWCAgYWRkICdpcycgYmVmb3JlICdvbmx5JworIzogbWlzYy9lMmltYWdlLmM6MTY2MworbXNnaWQgIlRoZSAtcCBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiT3B0aWUgJy1wJyB3b3JkdCBhbGxlZW4gb25kZXJzdGV1bmQgaW4gJ3JhdyctbW9kdXMuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCBibG9ra2VuIGJldmF0dGVuIHJlZWRzIGRlIHRlIGtvcGnDq3JlbiBnZWdldmVuc1xuIgorCisjOiBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiR2VicnVpazogICVzIC1yIGFwcGFyYWF0XG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IGthbiAlcyBuaWV0IG9wZW5lblxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGthbiBnZWVuICdzZWVrJyBkb2VuIG5hYXIgc3VwZXJibG9rXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBmb3V0IHRpamRlbnMgbGV6ZW4gdmFuIHN1cGVyYmxva1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGRpdCBpcyBnZWVuIGV4dDItYmVzdGFuZHNzeXN0ZWVtXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIldhYXJzY2h1d2luZzogbGFiZWwgaXMgdGUgbGFuZywgd29yZHQgYWZnZWthcHQuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IGthbiBuaWV0IG9wbmlldXcgJ3NlZWsnIGRvZW4gbmFhciBzdXBlcmJsb2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBmb3V0IHRpamRlbnMgc2NocmlqdmVuIHZhbiBzdXBlcmJsb2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTE3IG1pc2MvdHVuZTJmcy5jOjE1OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6IGUybGFiZWwgZGV2aWNlIFtuZXdsYWJlbF1cbiIKK21zZ3N0ciAiR2VicnVpazogIGUybGFiZWwgYXBwYXJhYXQgW25pZXV3X2xhYmVsXVxuIgorCisjOiBtaXNjL2UydW5kby5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgIiIKKyJHZWJydWlrOiAgJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3RpZWJlc3RhbmQ+IDxiZXN0YW5kc3N5c3RlZW0+XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCittc2dpZCAiVGhlIGZpbGUgc3lzdGVtIHN1cGVyYmxvY2sgZG9lc24ndCBtYXRjaCB0aGUgdW5kbyBmaWxlLlxuIgorbXNnc3RyICIiCisiU3VwZXJibG9rIHZhbiBiZXN0YW5kc3N5c3RlZW0ga29tdCBuaWV0IG92ZXJlZW4gbWV0IGRpZSBpbiAndW5kbyctYmVzdGFuZC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJVVUlEIGtvbXQgbmlldCBvdmVyZWVuLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiTGFhdHN0ZS1hYW5rb3BwZWxpbmdzdGlqZCBrb210IG5pZXQgb3ZlcmVlbi5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTAKK21zZ2lkICJMYXN0IHdyaXRlIHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIkxhYXRzdGUtc2NocmlqZnRpamQga29tdCBuaWV0IG92ZXJlZW4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiU2NocmlqZnRlbGxlciBrb210IG5pZXQgb3ZlcmVlbi5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIGJlc3RhbmRzc3lzdGVlbS1zdXBlcmJsb2siCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAidGlqZGVucyBvcGhhbGVuIHZhbiBzdXBlcmJsb2siCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBzdXBlcmJsb2sgaW4gJ3VuZG8nLWJlc3RhbmQga29tdCBuaWV0IG92ZXJlZW4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIm9uZ2VsZGlnZSBwb3NpdGllOiAlcyIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJ0aWpkZW5zIG9wZW5lbiB2YW4gYXBwYXJhYXRiZXN0YW5kIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHVuZG8gZmlsZSIKK21zZ3N0ciAidGlqZGVucyBsZXplbiB2YW4gaG9vZmQtaW5vZGUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IHRlIHZlZWwgYXBwYXJhdGVuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBpbm9kZSBrb210IG5pZXQgb3ZlcmVlbiBtZXQgaW5vZGUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICJFeHRlbnQtaGVhZGVyIGlzIGJlc2NoYWRpZ2QiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIGxhcmdlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAib25nZWxkaWdlIGJsb2tncm9vdHRlOiAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkpvdXJuYWwtc3VwZXJibG9rIGhlZWZ0IGVlbiBvbmJla2VuZGUgZW4gaW5jb21wYXRpYmVsZSBmdW5jdGlldmxhZyBnZXpldC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIkZvdXQgdGlqZGVucyBiZXBhbGVuIG9mICVzIGFhbmdla29wcGVsZCBpcy5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MzMKKyMsIGZ1enp5Cittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgIlZvZXIgJ2UydW5kbycgYWxsZWVuIHVpdCBvcCBlZW4gbmlldC1hYW5nZWtvcHBlbGQgYmVzdGFuZHNzeXN0ZWVtLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICJ0aWpkZW5zIG9wZW5lbiB2YW4gJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBrZXlzIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBiaXRrYWFydGVuIgorCisjOiBtaXNjL2UydW5kby5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogd3Jvbmcga2V5IG1hZ2ljIGF0ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICIlczoga2V5IGJsb2NrIGNoZWNrc3VtIGVycm9yIGF0ICVsbHUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo1NDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiVmFuIGJsb2sgJWx1IHRvdCAlbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NTggbWlzYy9lMnVuZG8uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJTY2hyaWp2ZW4gdmFuIGJsb2sgJWxsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgImZvdXQgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIGJsb2sgJWxsdSIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIldBQVJTQ0hVV0lORzoga2FuICVzIG5pZXQgb3BlbmVuOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIldBQVJTQ0hVV0lORzogZm91dGUgaW5kZWxpbmcgb3AgcmVnZWwgJWQgdmFuICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisiV0FBUlNDSFVXSU5HOiAvZXRjL2ZzdGFiIGJldmF0IGdlZW4gemVzZGUgdmVsZCAoZWVuIGZzY2stdm9sZ251bW1lcikuXG4iCisiICAgIEVyIHdvcmR0IG51IG9taGVlbmdld2Vya3QsIG1hYXIgdSB6b3UgZGl0IHZlbGQgYmlqXG4iCisiICAgIGRlIGVlcnN0dm9sZ2VuZGUgZ2VsZWdlbmhlaWQgdG9lIGRpZW5lbiB0ZSB2b2VnZW4uXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBuaWV0IGdldm9uZGVuXG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiB3YWl0OiBnZWVuIGRvY2h0ZXJwcm9jZXNzZW4gbWVlcj8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiV2FhcnNjaHV3aW5nOiAlcyB2b29yIGFwcGFyYWF0ICVzIHdlcmQgYmXDq2luZGlnZCBtZXQgc2lnbmFhbCAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBkZSBzdGF0dXMgaXMgJXgsIGRpdCB6b3Ugbm9vaXQgdm9vciBtb2dlbiBrb21lbi5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJBZmdlc2xvdGVuIG1ldCAlcyAoYWZzbHVpdHdhYXJkZSAlZCkuXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBGb3V0ICVkIHRpamRlbnMgdWl0dm9lcmluZyB2YW4gZnNjay4lcyB2b29yICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisiw5NmIGdlZW4gw7NmIGFsbGUgYmVzdGFuZHNzc3lzdGVlbXNvb3J0ZW4gYmlqIG9wdGllIC10XG4iCisiZGllbmVuIHZvb3JhZmdlZ2FhbiB0ZSB3b3JkZW4gZG9vciAnbm8nIG9mICchJy5cbiIKKworIzogbWlzYy9mc2NrLmM6NzYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBmaWxlc3lzdGVtIHR5cGVzXG4iCittc2dzdHIgIkthbiBnZWVuIGdlaGV1Z2VuIHJlc2VydmVyZW4gdm9vciBiZXN0YW5kc3N5c3RlZW1zb29ydGVuLlxuIgorCisjOiBtaXNjL2ZzY2suYzo4ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBza2lwcGluZyBiYWQgbGluZSBpbiAvZXRjL2ZzdGFiOiBiaW5kIG1vdW50IHdpdGggbm9uemVybyBmc2NrIHBhc3MgIgorIm51bWJlclxuIgorbXNnc3RyICIiCisiJXM6IG9uZ2VsZGlnZSByZWdlbCBpbiAvZXRjL2ZzdGFiIHdvcmR0IG92ZXJnZXNsYWdlbjpcbiIKKyJ6ZXNkZSB2ZWxkIHZhbiAnYmluZCctYWFua29wcGVsaW5nIGlzIG5pZXQgbnVsIChmc2NrLXZvbGdudW1tZXIpXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6IGthbiAlcyBuaWV0IGNvbnRyb2xlcmVuOiBmc2NrLiVzIG5pZXQgZ2V2b25kZW5cbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiQWxsZSBiZXN0YW5kc3N5c3RlbWVuIHdvcmRlbiBnZWNvbnRyb2xlZXJkLlxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDU4CisjLCBjLWZvcm1hdAorbXNnaWQgIi0td2FpdGluZy0tIChwYXNzICVkKVxuIgorbXNnc3RyICItLXdhY2h0ZW4tLSAodm9sZ251bW1lciAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIkdlYnJ1aWs6ICBmc2NrIFstQU1OUFJUVl0gWy1DIFtkZXNjcmlwdG9yXV0gWy10IGJlc3RhbmRzc3lzdGVlbXNvb3J0XVxuIgorIiAgICAgICAgICBbYmVzdGFuZHNzeXN0ZWVtb3B0aWVzXSBbYmVzdGFuZHNzeXN0ZWVtLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiB0ZSB2ZWVsIGFwcGFyYXRlblxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogdGUgdmVlbCBhcmd1bWVudGVuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICJCZXN0YW5kIGlzIGdlb3BlbmQgdm9vciBhbGxlZW4tbGV6ZW4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAiIgorIlZvZXIgZWVyc3QgJ2UyZnNjayAtZiAlcycgdWl0LlxuIgorIlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzk4Cittc2dpZCAiSm91cm5hbCBuZWVkcyByZWNvdmVyeTsgcnVubmluZyBgZTJmc2NrIC1FIGpvdXJuYWxfb25seScgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFdyaXRpbmcgdG8gdGhlIGpvdXJuYWwgaXMgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiSGV0IHZlcmtsZWluZW4gdmFuIGRlIGlub2RlLWdyb290dGUgd29yZHQgbmlldCBvbmRlcnN0ZXVuZC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiR2VicnVpazogICVzIFstUlZhZGx2XSBbYmVzdGFuZC4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJUaWpkZW5zIGxlemVuIHZhbiB2bGFnZ2VuIG9wICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIlRpamRlbnMgbGV6ZW4gdmFuIHZlcnNpZSBvcCAlcyIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJUaWpkZW5zIGxlemVuIHZhbiB2ZXJzaWUgb3AgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdIFstQyBjbHVzdGVyLXNpemVdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgaW5vZGUtc2l6ZV0gWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKyJcdFstRyBmbGV4LWdyb3VwLXNpemVdIFstTiBudW1iZXItb2YtaW5vZGVzXSBbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisiXHRbLW0gcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2VdIFstbyBjcmVhdG9yLW9zXVxuIgorIlx0Wy1nIGJsb2Nrcy1wZXItZ3JvdXBdIFstTCB2b2x1bWUtbGFiZWxdIFstTSBsYXN0LW1vdW50ZWQtZGlyZWN0b3J5XVxuIgorIlx0Wy1PIGZlYXR1cmVbLC4uLl1dIFstciBmcy1yZXZpc2lvbl0gWy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXVsteiAiCisidW5kb19maWxlXVxuIgorIlx0Wy1qbnF2REZTVl0gZGV2aWNlIFtibG9ja3MtY291bnRdXG4iCittc2dzdHIgIiIKKyJHZWJydWlrOiAgJXMgWy1iIGJsb2tncm9vdHRlXSBbLWN8LWwgYmVzdGFuZHNuYWFtXSBbLUMgY2x1c3Rlcmdyb290dGVdXG4iCisiICAgICAgICAgIFstZyBibG9ra2VuX3Blcl9ncm9lcF0gWy1HIGZsZXhncm9lcGdyb290dGVdIFstaSBieXRlc19wZXJfaW5vZGVdXG4iCisiICAgICAgICAgIFstSSBpbm9kZS1ncm9vdHRlXSBbLUogam91cm5hbC1vcHRpZXNdIFstTCBsYWJlbF0gWy1OICIKKyJhYW50YWxfaW5vZGVzXVxuIgorIiAgICAgICAgICBbLW0gcGVyY2VudGFnZV9nZXJlc2VydmVlcmRlX2Jsb2trZW5dIFstTSAiCisibGFhdHN0ZV9hYW5rb3BwZWxpbmdzcHVudF1cbiIKKyIgICAgICAgICAgWy1vIG5hYW1fdmFuX2Fhbm1ha2VuZGVfYmVzdHVyaW5nc3N5dGVlbV0gWy1PIGZ1bmN0aWVbLC4uLl1dIFstVSAiCisiVVVJRF1cbiIKKyIgICAgICAgICAgWy1yIGJlc3RhbmRzc3lzdGVlbXZlcnNpZV0gWy10IGJlc3RhbmRzc3lzdGVlbXNvb3J0XSBbLVQgIgorImdlYnJ1aWtzdHlwZV1cbiIKKyIgICAgICAgICAgWy1FIHVpdGdlYnJlaWRlX29wdGllWywuLi5dXSBbLWpucXZERktTVl0gIGFwcGFyYWF0ICAiCisiW2FhbnRhbF9ibG9ra2VuXVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIlVpdGdldm9lcmRlIG9wZHJhY2h0IGlzOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgInRpamRlbnMgdWl0dm9lcmluZyB2YW4gJyVzJyIKKworIzogbWlzYy9ta2UyZnMuYzoyNjYKK21zZ2lkICJ3aGlsZSBwcm9jZXNzaW5nIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIHByb2dyYW0iCittc2dzdHIgInRpamRlbnMgdmVyd2Vya2VuIHZhbiBkZSBnZW1hYWt0ZSBsaWpzdCB2YW4gc2xlY2h0ZSBibG9ra2VuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiIgorIkJsb2sgJWQgaW4gaGV0IHByaW1haXJlIHN1cGVyYmxvayBvZiBkZSBncm9lcHNiZXNjaHJpanZlcnMgaXMgc2xlY2h0LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisiQmxva2tlbiAldSB0b3QgZW4gbWV0ICV1IG1vZXRlbiBnb2VkIHppam5cbiIKKyJvbSBlZW4gYmVzdGFuZHNzeXN0ZWVtIGFhbiB0ZSBrdW5uZW4gbWFrZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk4Cittc2dpZCAiQWJvcnRpbmcuLi4uXG4iCittc2dzdHIgIkdlc3RvcHQuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiV2FhcnNjaHV3aW5nOiBkZSByZXNlcnZla29waWUgdmFuIGhldCBzdXBlcmJsb2sgZW4gZGUgZ3JvZXBzYmVzY2hyaWp2ZXJzLFxuIgorImJlZ2lubmVuZCBiaWogYmxvayAldSwgYmV2YXQgc2xlY2h0ZSBibG9ra2VuLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICJ0aWpkZW5zIGhldCBtYXJrZXJlbiB2YW4gc2xlY2h0ZSBibG9ra2VuIChhbHMgemlqbmRlIGluIGdlYnJ1aWspIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIlNjaHJpanZlbiB2YW4gaW5vZGV0YWJlbGxlbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiS2FuICVkIGJsb2trZW4gaW4gaW5vZGV0YWJlbCBuaWV0IHNjaHJpanZlbiwgYmVnaW5uZW5kIGJpaiAlbGx1OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ0NCBtaXNjL21rZTJmcy5jOjI2NTQgbWlzYy9ta2UyZnMuYzozMDMwCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAidm9sdG9vaWQgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAidGlqZGVucyBhYW5tYWtlbiB2YW4gaG9vZmRtYXAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBob29mZC1pbm9kZSIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJ0aWpkZW5zIHpldHRlbiB2YW4gZWlnZW5hYXIgdmFuIGhvb2ZkLWlub2RlIgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ0aWpkZW5zIGFhbm1ha2VuIHZhbiAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MDMKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ0aWpkZW5zIHpvZWtlbiB2YW4gL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ0aWpkZW5zIHVpdGJyZWlkZW4gdmFuIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUzMQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJ0aWpkZW5zIHpldHRlbiB2YW4gc2xlY2h0ZWJsb2trZW4taW5vZGUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIk9udm9sZG9lbmRlIGdlaGV1Z2VuIHRpamRlbnMgd2lzc2VuIHZhbiBzZWN0b3JlbiAlZC0lZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAiV2FhcnNjaHV3aW5nOiBrYW4gYmxvayAwIG5pZXQgbGV6ZW46ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIldhYXJzY2h1d2luZzoga2FuIHNlY3RvciAlZCBuaWV0IHdpc3NlbjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ0aWpkZW5zIGluaXRpYWxpc2VyZW4gdmFuIGhldCBqb3VybmFsLXN1cGVyYmxvayIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgIk51bG1ha2VuIHZhbiBqb3VybmFsLWFwcGFyYWF0OiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAidGlqZGVucyBudWxtYWtlbiB2YW4gam91cm5hbC1hcHBhcmFhdCAoYmxvayAlbGx1LCBudW1tZXIgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gam91cm5hbC1zdXBlcmJsb2siCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICIiCisiQWFubWFrZW4gdmFuIGJlc3RhbmRzc3lzdGVlbSBtZXQgJWxsdSBibG9ra2VuICh2YW4gJWRLKSBlbiAldSBpbm9kZXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJXYWFyc2NodXdpbmc6ICVsbHUgb25nZWJydWlrdGUgYmxva2tlbi5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBsYWJlbD0lc1xuIgorbXNnc3RyICJCZXN0YW5kc3N5c3RlZW1sYWJlbD0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJTb29ydCBiZXN0dXJpbmdzc3lzdGVlbTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJCbG9rZ3Jvb3R0ZT0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQ2x1c3Rlcmdyb290dGU9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJGcmFnbWVudGdyb290dGU9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICInc3RyaWRlJz0ldSBibG9ra2VuLCAnc3RyaXBlJy1icmVlZHRlPSV1IGJsb2trZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBpbm9kZXMsICVsbHUgYmxva2tlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUgYmxva2tlbiAoJTIuMmYlJSkgZ2VyZXNlcnZlZXJkIHZvb3Igc3lzdGVlbWJlaGVlclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgIkVlcnN0ZSBnZWdldmVuc2Jsb2s9JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAiSG9vZmRtYXAtZWlnZW5hYXI9JXU6JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiTWF4aW11bSBhYW50YWwgYmVzdGFuZHNzeXN0ZWVtYmxva2tlbj0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IGJsb2tncm9lcGVuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2tncm9lcFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5OAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBjbHVzdGVycyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxva2tlbiBwZXIgZ3JvZXAsICV1IGNsdXN0ZXJzIHBlciBncm9lcFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGJsb2trZW4gcGVyIGdyb2VwLCAldSBmcmFnbWVudGVuIHBlciBncm9lcFxuIgorCisjIHNyYy9tYWluLmM6NDI1CisjOiBtaXNjL21rZTJmcy5jOjcwMworIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGlub2RlcyBwZXIgZ3JvZXBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJCZXN0YW5kc3N5c3RlZW0tVVVJRDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTMKK21zZ2lkICJTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogIgorbXNnc3RyICJTdXBlcmJsb2tyZXNlcnZla29waWXDq24gemlqbiBvcGdlc2xhZ2VuIGluIGJsb2trZW46ICIKKworIyBYWFggIG1hbnBhZ2UgZG9lcyBub3QgbWVudGlvbiAtTyA2NGJpdAorIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyB2ZXJlaXN0ICctTyA2NGJpdCdcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICInJXMnIG1vZXQgdsOzw7NyICdyZXNpemU9JXUnIHN0YWFuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgIk9uZ2VsZGlnZSAnZGVzY19zaXplJzogJyVzJ1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAiT25nZWxkaWdlIHBvc2l0aWU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIgorbXNnc3RyICJPbmdlbGRpZyAnbW1wX3VwZGF0ZV9pbnRlcnZhbCc6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnIGFhbnRhbCByZXNlcnZla29waWUtc3VwZXJibG9ra2VuOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnIGFyZ3VtZW50IHZhbiAnc3RyaWRlJzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpcGUtd2lkdGggcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJPbmdlbGRpZyBhcmd1bWVudCB2YW4gJ3N0cmlwZV93aWR0aCc6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiT25nZWxkaWcgYXJndW1lbnQgdmFuICdyZXNpemUnOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICIiCisiRGUgbWF4aW11bSBncm9vdHRlIG1vZXQgZ3JvdGVyIHppam4gZGFuIGRlIGh1aWRpZ2UgYmVzdGFuZHNzeXN0ZWVtZ3Jvb3R0ZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJMaXZlIHZlcmdyb3RlbiBvZiB2ZXJrbGVpbmVuIGlzIG5pZXQgbW9nZWxpamsgb3AgZWVuIGJlc3RhbmRzc3lzdGVlbSB2YW4gIgorInZlcnNpZSAwLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk4NCBtaXNjL21rZTJmcy5jOjk5MworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIKK21zZ3N0ciAiT25nZWxkaWdlIGhvb2ZkbWFwLWVpZ2VuYWFyOiAnJXMnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHRvZmZzZXQ9PG9mZnNldCB0byBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtPlxuIgorIlx0cmVzaXplPTxyZXNpemUgbWF4aW11bSBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBvZiByb290IGRpcj46PGdpZCBvZiByb290IGRpcj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxxdW90YSB0eXBlKHMpIHRvIGJlIGVuYWJsZWQ+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJPbmdlbGRpZ2Ugb3B0aWUgb3BnZWdldmVuOiAlc1xuIgorIlxuIgorIlVpdGdlYnJlaWRlIG9wdGllcyB3b3JkZW4gZ2VzY2hlaWRlbiBkb29yIGtvbW1hJ3M7XG4iCisiaHVuIGFyZ3VtZW50IHdvcmR0IHZvb3JhZmdlZ2FhbiBkb29yIGVlbiAnPSctdGVrZW4uXG4iCisiXG4iCisiR2VsZGlnZSB1aXRnZWJyZWlkZSBvcHRpZXMgemlqbjpcbiIKKyIgICAgbW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiICAgIG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIiAgICBzdHJpZGU9PGFhbnRhbCBibG9ra2VuIGRhdCBzYW1lbiBwZXIgUkFJRC1zY2hpamYgd29yZHQgZ2VsZXplbi8iCisiZ2VzY2hyZXZlbj5cbiIKKyIgICAgc3RyaXBlX3dpZHRoPTxhYW50YWwgYmxva2tlbiBwZXIgc3RyaXBlPiAobWVlc3RhbCBzdHJpZGUgw5cgYWFudGFsICIKKyJzY2hpanZlbilcbiIKKyIgICAgb2Zmc2V0PTxwb3NpdGllIHdhYXJvcCBoZXQgYmVzdGFuZHNzeXN0ZWVtIHRlIGJlZ2lubmVuPlxuIgorIiAgICByZXNpemU9PG1heGltdW0gZ3Jvb3R0ZSB2YW4gYmVzdGFuZHNzeXN0ZWVtIGluIGJsb2trZW4+XG4iCisiICAgIHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB2b29yIHVpdHNjaGFrZWxlbiwgMSB2b29yIGluc2NoYWtlbGVuPlxuIgorIiAgICBsYXp5X2l0YWJsZV9pbml0PTwwIHZvb3IgdWl0c2NoYWtlbGVuLCAxIHZvb3IgaW5zY2hha2VsZW4+XG4iCisiICAgIGxhenlfam91cm5hbF9pbml0PTwwIHZvb3IgdWl0c2NoYWtlbGVuLCAxIHZvb3IgaW5zY2hha2VsZW4+XG4iCisiICAgIHJvb3RfdWlkPTxVSUQgdmFuIGhvb2ZkbWFwPlxuIgorIiAgICByb290X2dpZD08R0lEIHZhbiBob29mZG1hcD5cbiIKKyIgICAgdGVzdF9mc1xuIgorIiAgICBkaXNjYXJkXG4iCisiICAgIG5vZGlzY2FyZFxuIgorIiAgICBxdW90YXR5cGU9PHVzciBPRiBncnA+XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiV2FhcnNjaHV3aW5nOiAnc3RyaXBlJy1icmVlZHRlICV1IGlzIGdlZW4gZXZlbiB2ZWVsdm91ZCB2YW4gJ3N0cmlkZScgJXUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIlN5bnRheGZvdXQgaW4gbWtlMmZzLWNvbmZpZ3VyYXRpZWJlc3RhbmQgKCVzLCByZWdlbCAjJWQpXG4iCisiICAgICVzXG4iCisKKyMgRGl0IGdhYXQgb3ZlciBoZXQgYXJndW1lbnQgdmFuIG9wdGllIC1PLgorIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnZSBiZXN0YW5kc3N5c3RlZW1mdW5jdGllOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiT25nZWxkaWdlIGFhbmtvcHBlbGluZ3NvcHRpZTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjYyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJZb3VyIG1rZTJmcy5jb25mIGZpbGUgZG9lcyBub3QgZGVmaW5lIHRoZSAlcyBmaWxlc3lzdGVtIHR5cGUuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVdyBta2UyZnMuY29uZiBkZWZpbmllZXJ0IGdlZW4gYmVzdGFuZHNzeXN0ZWVtdHlwZSAlcy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjY2Cittc2dpZCAiIgorIllvdSBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgYW4gdXBkYXRlZCBta2UyZnMuY29uZiBmaWxlLlxuIgorIlxuIgorbXNnc3RyICIiCisiVSBkaWVudCB3YWFyc2NoaWpubGlqayBlZW4gbmlldXdlciBta2UyZnMuY29uZi1iZXN0YW5kIHRlIGluc3RhbGxlcmVuLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNzAKK21zZ2lkICJBYm9ydGluZy4uLlxuIgorbXNnc3RyICJHZXN0b3B0Li4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTMxMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGZzX3R5cGUgJXMgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmZcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIldhYXJzY2h1d2luZzogYmVzdGFuZHNzeXN0ZWVtdHlwZSAlcyBpcyBuaWV0IGdlZGVmaW5pZWVyZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIgorbXNnc3RyICJLYW4gZ2VlbiBnZWhldWdlbiByZXNlcnZlcmVuIHZvb3IgbmlldXdlIFBBVEguXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogJWxkKS5cbiIKK21zZ3N0ciAiSW5pdGlhbGlzZXJlbiB2YW4gcHJvZmlsZSBpcyBtaXNsdWt0IChmb3V0OiAlbGQpLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9jayBzaXplIC0gJXMiCittc2dzdHIgIm9uZ2VsZGlnZSBibG9rZ3Jvb3R0ZTogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIiIKKyJXYWFyc2NodXdpbmc6IGJsb2tncm9vdHRlICVkIGlzIG9wIGRlIG1lZXN0ZSBzeXN0ZW1lbiBuaWV0IGJydWlrYmFhci5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTg3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgIm9uZ2VsZGlnZSBjbHVzdGVyZ3Jvb3R0ZTogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAiJ29wdGllICctUicgaXMgdmVyb3VkZXJkOyBnZWJydWlrICctRSciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJvbmp1aXN0IGFyZ3VtZW50IHZhbiAtZSAoZ2VkcmFnIGJpaiBlZW4gZm91dCk6ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAiT25nZWxkaWcgYWFudGFsIGJsb2trZW4gcGVyIGdyb2VwIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiYXJndW1lbnQgdmFuIC1nIChibG9ra2VuIHBlciBncm9lcCkgaXMgZ2VlbiB2ZWVsdm91ZCB2YW4gOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiT25nZWxkaWcgZ2V0YWwgdm9vciBtZXRhZ3JvZXBncm9vdHRlIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgIk1ldGFncm9lcGdyb290dGUgbW9ldCBlZW4gbWFjaHQgdmFuIDIgemlqbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJNZXRhZ3JvZXBncm9vdHRlICglbHUpIG1vZXQga2xlaW5lciB6aWpuIGRhbiBvZiBnZWxpamsgemlqbiBhYW4gMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJvbmdlbGRpZ2UgaW5vZGV2ZXJob3VkaW5nICVzIChtaW4gJWQgLyBtYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgIm9uZ2VsZGlnZSBncm9vdHRlIHZhbiBpbm9kZTogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyJXYWFyc2NodXdpbmc6IG9wdGllICctSycgaXMgdmVyb3VkZXJkIGVuIHpvdSB1IG5pZXQgbWVlciBtb2V0ZW4gZ2VicnVpa2VuO1xuIgorImdlYnJ1aWsgaW4gcGxhYXRzIGRhYXJ2YW4gZGUgdWl0Z2VicmVpZGUgb3B0aWUgJy1FIG5vZGlzY2FyZCcuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY5NAorbXNnaWQgImluIG1hbGxvYyBmb3IgYmFkX2Jsb2Nrc19maWxlbmFtZSIKK21zZ3N0ciAib252b2xkb2VuZGUgZ2VoZXVnZW4gaW4gYmFkX2Jsb2Nrc19maWxlbmFtZSgpIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJXYWFyc2NodXdpbmc6IGxhYmVsIGlzIHRlIGxhbmcsIHdvcmR0IGFmZ2VrYXB0LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJvbmdlbGRpZyBwZXJjZW50YWdlIGdlcmVzZXJ2ZWVyZGUgYmxva2tlbjogJXMiCisKKyMgbGliL3ByYW5nZS5jOjI5OSBsaWIvcHJhbmdlLmM6MzE2CisjOiBtaXNjL21rZTJmcy5jOjE3MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG51bSBpbm9kZXMgLSAlcyIKK21zZ3N0ciAib25nZWxkaWcgYWFudGFsIGlub2RlczogJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIGJ1ZmZlcnMiCisKKyMgbGliL3ByYW5nZS5jOjI5OSBsaWIvcHJhbmdlLmM6MzE2CisjOiBtaXNjL21rZTJmcy5jOjE3NTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJvbmdlbGRpZyB2ZXJzaWVudW1tZXI6ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAidGlqZGVucyBhYW5tYWtlbiB2YW4gdmVyc2llICVkIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiT3B0aWUgJy10JyBtYWcgc2xlY2h0cyDDqcOpbiBrZWVyIGdlZ2V2ZW4gd29yZGVuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiT3B0aWUgJy1UJyBtYWcgc2xlY2h0cyDDqcOpbiBrZWVyIGdlZ2V2ZW4gd29yZGVuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgInRpamRlbnMgb3BlbmVuIHZhbiBqb3VybmFsLWFwcGFyYWF0ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorIkJsb2tncm9vdHRlICVkIHZhbiBqb3VybmFsLWFwcGFyYWF0IGlzIGtsZWluZXIgZGFuIG1pbmltdW0gYmxva2dyb290dGUgJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiQmxva2dyb290dGUgdmFuIGhldCBqb3VybmFsLWFwcGFyYWF0IHdvcmR0IGdlYnJ1aWt0OiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9ja3MgJyVzJyBvbiBkZXZpY2UgJyVzJyIKK21zZ3N0ciAib25nZWxkaWdlIGJsb2trZW4gJyVzJyBvcCBhcHBhcmFhdCAnJXMnIgorCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJiZXN0YW5kc3N5c3RlZW0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJ0aWpkZW5zIGJlcGFsZW4gdmFuIGdyb290dGUgdmFuIGJlc3RhbmRzc3lzdGVlbSIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIiIKKyJLYW4gZGUgZ3Jvb3R0ZSB2YW4gaGV0IGFwcGFyYWF0IG5pZXQgYmVwYWxlbjtcbiIKKyJ1IGRpZW50IHplbGYgZGUgZ3Jvb3R0ZSB2YW4gaGV0IGJlc3RhbmRzc3lzdGVlbSBhYW4gdGUgZ2V2ZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkxMworbXNnaWQgIiIKKyJEZXZpY2Ugc2l6ZSByZXBvcnRlZCB0byBiZSB6ZXJvLiAgSW52YWxpZCBwYXJ0aXRpb24gc3BlY2lmaWVkLCBvclxuIgorIlx0cGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgYWZ0ZXIgcnVubmluZyBmZGlzaywgZHVlIHRvXG4iCisiXHRhIG1vZGlmaWVkIHBhcnRpdGlvbiBiZWluZyBidXN5IGFuZCBpbiB1c2UuICBZb3UgbWF5IG5lZWQgdG8gcmVib290XG4iCisiXHR0byByZS1yZWFkIHlvdXIgcGFydGl0aW9uIHRhYmxlLlxuIgorbXNnc3RyICIiCisiQXBwYXJhYXRncm9vdHRlIHdvcmR0IGdlcmFwcG9ydGVlcmQgYWxzIG51bC4gIERpdCBiZXRla2VudCBkYXQgZXIgZWVuXG4iCisiICAgIG9uZ2VsZGlnZSBwYXJ0aXRpZSBpcyBvcGdlZ2V2ZW4sIG9mIGRhdCBkZSBwYXJ0aXRpZXRhYmVsIG5pZXQgb3BuaWV1d1xuIgorIiAgICBnZWxlemVuIGlzIG5hIGdlYnJ1aWsgdmFuIGVlbiBwYXJ0aXRpb25lcmluZ3Nwcm9ncmFtbWEsIHdlZ2VucyBoZXRcbiIKKyIgICAgaW4tZ2VicnVpay16aWpuIHZhbiBlZW4gZ2V3aWp6aWdkZSBwYXJ0aXRpZS4gIE1vZ2VsaWprIGRpZW50IHUgdXdcbiIKKyIgICAgY29tcHV0ZXIgdGUgaGVyc3RhcnRlbiBvbSBkZSBqdWlzdGUgcGFydGl0aWV0YWJlbCB0ZSB2ZXJrcmlqZ2VuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAiQmVzdGFuZHNzeXN0ZWVtIGlzIGdyb3RlciBkYW4gZGUgc2NoaWpuYmFyZSBhcHBhcmFhdGdyb290dGUuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICJWZXJ3ZXJrZW4gdmFuIGxpanN0IG1ldCBiZXN0YW5kc3N5c3RlZW1zb29ydGVuIGlzIG1pc2x1a3RcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkRlIEh1cmQgb25kZXJzdGV1bnQgZGUgYmVzdGFuZHN0eXBlbmZ1bmN0aWUgbmlldC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJEZSBIdXJkIG9uZGVyc3RldW50IGRlIGJlc3RhbmRzdHlwZW5mdW5jdGllIG5pZXQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIkRlIEh1cmQgb25kZXJzdGV1bnQgZGUgYmVzdGFuZHN0eXBlbmZ1bmN0aWUgbmlldC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDE4Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAidGlqZGVucyBiZXBhbGVuIHZhbiBkZSBoYXJkd2FyZS1zZWN0b3Jncm9vdHRlIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHBoeXNpY2FsIHNlY3RvciBzaXplIgorbXNnc3RyICJ0aWpkZW5zIGJlcGFsZW4gdmFuIGRlIGZ5c2lla2Ugc2VjdG9yZ3Jvb3R0ZSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgInRpamRlbnMgaW5zdGVsbGVuIHZhbiBkZSBibG9rZ3Jvb3R0ZTsgdGUga2xlaW4gdm9vciBhcHBhcmFhdFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJXYWFyc2NodXdpbmc6IGRlIGdlZ2V2ZW4gYmxva2dyb290dGUgJWQgaXMga2xlaW5lciBkYW4gZGUgZnlzaWVrZSAiCisic2VjdG9yZ3Jvb3R0ZSAlZCB2YW4gaGV0IGFwcGFyYWF0XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiVzOiBEZSBncm9vdHRlICgweCVsbHggYmxva2tlbikgdmFuIGFwcGFyYWF0ICVzIGthbiBuaWV0IHVpdGdlZHJ1a3RcbiIKKyIgICAgd29yZGVuIGluIDMyIGJpdHMgYmlqIGVlbiBibG9rZ3Jvb3R0ZSB2YW4gJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgIkxpanN0IG1ldCBiZXN0YW5kc3N5c3RlZW1zb29ydGVuIHZvb3IgbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiRXh0cmEgZnVuY3RpZXMgd29yZGVuIG5pZXQgb25kZXJzdGV1bmQgb3AgZWVuIGJlc3RhbmRzc3lzdGVlbSB2YW4gdmVyc2llIDAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjExNgorbXNnaWQgIlNwYXJzZSBzdXBlcmJsb2NrcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiU2NoYWFyc2Ugc3VwZXJibG9ra2VuIHppam4gbmlldCBtb2dlbGlqayBvcCBlZW4gYmVzdGFuZHNzeXN0ZWVtIHZhbiB2ZXJzaWUgIgorIjAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEyNgorbXNnaWQgIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIkVlbiBqb3VybmFsIGlzIG5pZXQgbW9nZWxpamsgb3AgZWVuIGJlc3RhbmRzc3lzdGVlbSB2YW4gdmVyc2llIDAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICJvbmdlbGRpZyBwZXJjZW50YWdlIGdlcmVzZXJ2ZWVyZGUgYmxva2tlbjogJWxmIgorCisjIFhYWCAgb3B0aW9uIHNob3VsZCAnLU8gZXh0ZW50Jywgc2luZ3VsYXIKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIkV4dGVudHMgTU9FVEVOIGluZ2VzY2hha2VsZCB6aWpuIHZvb3IgZWVuIDY0LWJpdHMgYmVzdGFuZHNzeXN0ZWVtLlxuIgorIkdlZWYgb3B0aWUgJy1PIGV4dGVudCcgb20gZGl0IHRlIGRvZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIkRlIGNsdXN0ZXJncm9vdHRlIG1hZyBuaWV0IGtsZWluZXIgemlqbiBkYW4gZGUgYmxva2dyb290dGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgImhldCBvcGdldmVuIHZhbiBlZW4gY2x1c3Rlcmdyb290dGUgdmVyZWlzdCBkZSAnYmlnYWxsb2MnLWZ1bmN0aWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAiV2FhcnNjaHV3aW5nOiBrYW4gbG9naXNjaGUgc2NoaWpmb3Bib3V3IHZhbiAlcyBuaWV0IHZlcmtyaWpnZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbGlnbm1lbnQgaXMgb2Zmc2V0IGJ5ICVsdSBieXRlcy5cbiIKK21zZ3N0ciAiVWl0bGlqbmluZyB2YW4gJXMgaXMgJWx1IGJ5dGVzIHZlcnNjaG92ZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisiRGl0IGthbiB6ZWVyIHNsZWNodGUgcHJlc3RhdGllcyB0b3QgZ2V2b2xnIGhlYmJlbjtcbiIKKyIoaGVyKXBhcnRpdGlvbmVyaW5nIHdvcmR0IGFhbmJldm9sZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIkJsb2trZW4gdmFuICVkIGJ5dGVzIHppam4gdGUgZ3Jvb3Qgdm9vciBkaXQgc3lzdGVlbSAobWF4ICVkKS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIldhYXJzY2h1d2luZzogYmxva2tlbiB2YW4gJWQgYnl0ZXMgemlqbiB0ZSBncm9vdCB2b29yIGRpdCBzeXN0ZWVtLFxuIgorImhldCBtYXhpbXVtIGlzICVkIC0tIG1hYXIgJ21rZTJmcycgd29yZHQgZ2Vkd29uZ2VuIHVpdGdldm9lcmQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiS2FuICdiaWdhbGxvYyctZnVuY3RpZSBuaWV0IG9uZGVyc3RldW5lbiB6b25kZXIgJ2V4dGVudHMnLWZ1bmN0aWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxOQorbXNnaWQgIiIKKyJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnIGZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKyJUaGV5IGNhbiBub3QgYmUgYm90aCBlbmFibGVkIHNpbXVsdGFuZW91c2x5LlxuIgorbXNnc3RyICIiCisiRGUgZnVuY3RpZXMgJ3Jlc2l6ZV9pbm9kZScgZW4gJ21ldGFfYmcnIGdhYW4gbmlldCBzYW1lbi5cbiIKKyJaZSBrdW5uZW4gbmlldCBiZWlkZSBpbmdlc2NoYWtlbGQgd29yZGVuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMjcKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIldhYXJzY2h1d2luZzogZGUgJ2JpZ2FsbG9jJy1mdW5jdGllIGlzIG5vZyBpbiBvbnR3aWtrZWxpbmcuXG4iCisiWmllIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIHZvb3IgbWVlciBpbmZvcm1hdGllLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMzkKK21zZ2lkICJyZXNlcnZlZCBvbmxpbmUgcmVzaXplIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIG5vbi1zcGFyc2UgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorImhldCByZXNlcnZlcmVuIHZhbiBibG9ra2VuIHZvb3IgYmVzdGFuZHNzeXN0ZWVtdmVyZ3JvdGluZyB3b3JkdCBuaWV0ICIKKyJvbmRlcnN0ZXVuZCBvcCBlZW4gbmlldC1zY2hhYXJzIGJlc3RhbmRzc3lzdGVlbSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgInRlbGxlciB2YW4gYmxva2tlbi1wZXItZ3JvZXAgbGlndCBidWl0ZW4gaGV0IHRvZWdlc3RhbmUgYmVyZWlrIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorIkRlIGZ1bmN0aWUgJ2ZsZXhfYmcnIGlzIG5pZXQgaW5nZXNjaGFrZWxkLCBkdXMgZGUgbWV0YWdyb2VwZ3Jvb3R0ZSBtYWcgbmlldCAiCisib3BnZWdldmVuIHdvcmRlbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgIm9uZ2VsZGlnZSBpbm9kZS1ncm9vdHRlICVkIChtaW4gJWQgLyBtYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAidGUgdmVlbCBpbm9kZXMgKCVsbHUpIC0tIGlub2RldmVyaG91ZGluZyB2ZXJob2dlbj8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgInRlIHZlZWwgaW5vZGVzICglbGx1KSAtLSBnZWVmIG1pbmRlciBkYW4gMl4zMiBvcCIKKworIzogbWlzYy9ta2UyZnMuYzoyNDQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSB0b28gYmlnIGZvciBhXG4iCisiXHRmaWxlc3lzdGVtIHdpdGggJWxsdSBibG9ja3MsIHNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG9yIGxvd2VyIGlub2RlIGNvdW50ICgtTikuXG4iCittc2dzdHIgIiIKKyJEZSBpbm9kZS1ydWltdGUgKGlub2RlLWdyb290dGUgJXUgKiBhYW50YWxfaW5vZGVzICV1KVxuIgorImlzIHRlIGdyb290IHZvb3IgZWVuIGJlc3RhbmRzc3lzdGVlbSBtZXQgJWxsdSBibG9ra2VuIC0tXG4iCisiICAgZ2VlZiBlZW4gaG9nZXJlIGJ5dGVzLXBlci1pbm9kZXZlcmhvdWRpbmcgb3AgKC1pKSxcbiIKKyIgICBvZiB2ZXJrbGVpbiBoZXQgYWFudGFsIGlub2RlcyAoLU4pLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiVmVyd2VycGVuIHZhbiBibG9ra2VuOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiaXMgbWlzbHVrdCAtICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IgorbXNnc3RyICJ0aWpkZW5zIGluaXRpYWxpc2VyZW4gdmFuICdleHQyX3Fjb3cyX2ltYWdlJyIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgaW5vZGVzIgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gam91cm5hbC1pbm9kZSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJvbmp1aXN0IGFyZ3VtZW50IHZhbiAtZSAoZ2VkcmFnIGJpaiBlZW4gZm91dCk6ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgInRpamRlbnMgYWFubWFrZW4gdmFuIHN1cGVyYmxvayIKKworIzogbWlzYy9ta2UyZnMuYzoyODMwCittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBQYXNzIC1PIGV4dGVudHMgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzcKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg0NQorbXNnaWQgIlRoZSBtZXRhZGF0YV9jc3VtX3NlZWQgZmVhdHVyZSByZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODY5Cittc2dpZCAiRGlzY2FyZCBzdWNjZWVkZWQgYW5kIHdpbGwgcmV0dXJuIDBzIC0gc2tpcHBpbmcgaW5vZGUgdGFibGUgd2lwZVxuIgorbXNnc3RyICIiCisiVmVyd2VycGluZyBpcyBnZWx1a3QgZW4gemFsIG51bGxlbiByZXRvdXJuZXJlbiAtLSB3aXNzZW4gdmFuIGlub2RlLXRhYmVsICIKKyJ3b3JkdCBvdmVyZ2VzbGFnZW5cbiIKKworIyBYWFggIHVwcGVyY2FzZSBPUworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAib25iZWtlbmQgYmVzdHVyaW5nc3N5c3RlZW06ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJSZXNlcnZlcmVuIHZhbiBncm9lcHN0YWJlbGxlbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgInRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gYmVzdGFuZHNzeXN0ZWVtdGFiZWxsZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyIgICAgdGlqZGVucyBjb252ZXJ0ZXJlbiB2YW4gc3ViY2x1c3Rlci1iaXRrYWFydCIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJ0aWpkZW5zIG51bG1ha2VuIHZhbiBibG9rICVsbHUgYWFuIGhldCBlaW5kIHZhbiBoZXQgYmVzdGFuZHNzeXN0ZWVtIgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIHVpdGJyZWlkaW5nc2Jsb2trZW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAiam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBqb3VybmFsIHRvIGRldmljZSAlczogIgorbXNnc3RyICJUb2V2b2VnZW4gdmFuIGpvdXJuYWwgYWFuIGFwcGFyYWF0ICVzOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gYWRkIGpvdXJuYWwgdG8gZGV2aWNlICVzIgorbXNnc3RyICIiCisiXG4iCisiICAgIHRpamRlbnMgdG9ldm9lZ2VuIHZhbiBqb3VybmFsIGFhbiBhcHBhcmFhdCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAidm9sdG9vaWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiQWFubWFrZW4gdmFuIGpvdXJuYWwgd29yZHQgb3Zlcmdlc2xhZ2VuIHdlZ2VucyBvcHRpZSAnLVMnLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJBYW5tYWtlbiB2YW4gam91cm5hbCAoJXUgYmxva2tlbik6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiICAgIHRpamRlbnMgYWFubWFrZW4gdmFuIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJGb3V0IHRpamRlbnMgaW5zY2hha2VsZW4gdmFuIE1NUCAoYmVzY2hlcm1pbmcgdGVnZW4gbWVlcnZvdWRpZ2UgIgorImFhbmtvcHBlbGluZ2VuKS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIkJlc2NoZXJtaW5nIHRlZ2VuIG1lZXJ2b3VkaWdlIGFhbmtvcHBlbGluZ2VuIGlzIGluZ2VzY2hha2VsZFxuIgorIm1ldCBlZW4gYmlqd2Vya2luZ3NpbnRlcnZhbCB2YW4gJWQgc2Vjb25kZW4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5MQorIywgZnV6enkKK21zZ2lkICJDb3B5aW5nIGZpbGVzIGludG8gdGhlIGRldmljZTogIgorbXNnc3RyICJGb3V0IGJpaiB3ZWdzY2hyaWp2ZW4gdmFuIGJ1ZmZlcnMgbmFhciBvcHNsYWdhcHBhcmFhdDogJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgInRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gbDEtdGFiZWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIwNAorbXNnaWQgIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogIgorbXNnc3RyICJTY2hyaWp2ZW4gdmFuIHN1cGVyYmxva2tlbiBlbiBiZXN0YW5kc3N5c3RlZW0tbWV0YWdlZ2V2ZW5zOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyJXYWFyc2NodXdpbmc6IHByb2JsZW1lbiB0aWpkZW5zIHNjaHJpanZlbiB2YW4gc3VwZXJibG9ra2VuLiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorInZvbHRvb2lkXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQYXJ0aXRpb24gb2Zmc2V0IG9mICVsbHUgKCV1aykgYmxvY2tzIG5vdCBjb21wYXRpYmxlIHdpdGggY2x1c3RlciBzaXplICV1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIkFhbm1ha2VuIHZhbiBub3JtYWFsIGJlc3RhbmQgJXNcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndpdGggJWxsdSBibG9ja3MgZWFjaCIKK21zZ3N0ciAiIgorIldhYXJzY2h1d2luZzogJWxsdSBvbmdlYnJ1aWt0ZSBibG9ra2VuLlxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlICVsdSIKK21zZ3N0ciAidGlqZGVucyBpdGVyYXRpZSBvdmVyIGlub2RlICV1IgorCisjOiBtaXNjL21rbG9zdCtmb3VuZC5jOjUwCittc2dpZCAiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIgorbXNnc3RyICJHZWJydWlrOiAgbWtsb3N0K2ZvdW5kXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo0MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICAlcyBkZXZpY2UuLi5cbiIKKyJcbiIKKyJQcmludHMgb3V0IHRoZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIGVhY2ggZ2l2ZW4gZGV2aWNlLlxuIgorIkZvciBleGFtcGxlOiAlcyAvZGV2L2hkYVxuIgorIlxuIgorbXNnc3RyICIiCisiR2VicnVpazogICVzIGFwcGFyYWF0Li4uXG4iCisiXG4iCisiVG9vbnQgZGUgcGFydGl0aWUtaW5mb3JtYXRpZSB2b29yIGVsayBnZWdldmVuIGFwcGFyYWF0LlxuIgorIlxuIgorIlZvb3JiZWVsZDogICVzIC9kZXYvaGRhXG4iCisiXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgb3BlbiAlczogJXMiCittc2dzdHIgIkthbiAlcyBuaWV0IG9wZW5lbjogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiS2FuIGdlb21ldHJpZSB2YW4gJXMgbmlldCBiZXBhbGVuOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIkthbiBncm9vdHRlIHZhbiAlcyBuaWV0IGJlcGFsZW46ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBrb3A9JTNkIHNlYz0lM2QgY2lsPSU0ZCAgIGJlZ2luPSU4ZCBncm9vdHRlPSU4bHUgZWluZGU9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiQ29udHJvbGVlciBoZXQgYmVzdGFuZHNzeXN0ZWVtIG1ldCAnZTJmc2NrJy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiQ29udHJvbGVlciBoZXQgYmVzdGFuZHNzeXN0ZWVtIG1ldCAnZTJmc2NrJy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJHZWJydWlrOiAgJXMgWy1jIG1heGltdW1fYWFudGFsX2FhbmtvcHBlbGluZ2VuXSBbLUMgYWFua29wcGVsaW5nZW50YWxdXG4iCisiICAgICAgICAgIFstZSBnZWRyYWdfYmlqX2ZvdXRlbl0gWy1FIHVpdGdlYnJlaWRlX29wdGllWywuLi5dXSBbLWZdIFstZyAiCisiZ3JvZXBdXG4iCisiICAgICAgICAgIFstaSBpbnRlcnZhbFtkfHd8bV1dIFstal0gWy1KIGpvdXJuYWwtb3B0aWVzXSBbLWxdIFstTCBsYWJlbF1cbiIKKyIgICAgICAgICAgWy1tIHBlcmNlbnRhZ2VfZ2VyZXNlcnZlZXJkZV9ibG9ra2VuXSBbLU0gIgorImxhYXRzdGVfYWFua29wcGVsaW5nc3B1bnRdXG4iCisiICAgICAgICAgIFstbyBbXl1hYW5rb3BwZWxpbmdzb3B0aWVzWywuLi5dXSBbLU8gW15dZnVuY3RpZVssLi4uXV1cbiIKKyIgICAgICAgICAgWy1wIE1NUC1iaWp3ZXJraW5nc2ludGVydmFsXSBbLXIgYWFudGFsX2dlcmVzZXJ2ZWVyZGVfYmxva2tlbl1cbiIKKyIgICAgICAgICAgWy1UIHRpamRzdGlwX3Zhbl9sYWF0c3RlX2NvbnRyb2xlXSBbLXUgZ2VicnVpa2VyXSBbLVUgVVVJRF1cbiIKKyIgICAgICAgICAgWy1JIG5pZXV3ZV9pbm9kZS1ncm9vdHRlXSBbLVEgcXVvdGEtb3B0aWVzXSAgYXBwYXJhYXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiR2VlbiBqb3VybmFsLXN1cGVyYmxvayBnZXZvbmRlbiFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdmFuIGV4dGVybiBqb3VybmFsIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODIgbWlzYy90dW5lMmZzLmM6MjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXM6IGlzIGdlZW4gam91cm5hbC1hcHBhcmFhdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIlVVSUQgdmFuIGJlc3RhbmRzc3lzdGVlbSBuaWV0IGdldm9uZGVuIG9wIGpvdXJuYWwtYXBwYXJhYXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiS2FuIGpvdXJuYWwtYXBwYXJhYXQgbmlldCBsb2thbGlzZXJlbi4gIEhldCBpcyBOSUVUIHZlcndpamRlcmQuXG4iCisiR2VicnVpayBvcHRpZSAnLWYnIG9tIGhldCBvbnRicmVrZW5kZSBqb3VybmFsLWFwcGFyYWF0IHRlIHZlcndpamRlcmVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAiSm91cm5hbCBpcyB2ZXJ3aWpkZXJkLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgInRpamRlbnMgbGV6ZW4gdmFuIGJpdGthYXJ0ZW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInRpamRlbnMgd2lzc2VuIHZhbiBqb3VybmFsLWlub2RlIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInRpamRlbnMgc2NocmlqdmVuIHZhbiBqb3VybmFsLWlub2RlIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIoRW4gaGVyc3RhcnQgZGFhcm5hIHV3IGNvbXB1dGVyISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIiIKKyJWb2VyIGVlcnN0ICdlMmZzY2sgLWYgJXMnIHVpdC5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICJIZXQgdWl0c2NoYWtlbGVuIHZhbiBiZXN0YW5kc3N5c3RlZW1mdW5jdGllICclcycgaXMgbmlldCBtb2dlbGlqay5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIkhldCBpbnNjaGFrZWxlbiB2YW4gYmVzdGFuZHNzeXN0ZWVtZnVuY3RpZSAnJXMnIGlzIG5pZXQgbW9nZWxpamsuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMjUKK21zZ2lkICIiCisiVGhlIGhhc19qb3VybmFsIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiRGUgam91cm5hbC12bGFnIG1hZyBhbGxlZW4gZ2V3aXN0IHdvcmRlbiB3YW5uZWVyIGhldCBiZXN0YW5kc3N5c3RlZW1cbiIKKyJvbnRrb3BwZWxkIGlzIG9mIGFhbmdla29wcGVsZCBhbHMgYWxsZWVuLWxlemVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDMzCittc2dpZCAiIgorIlRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldC4gIFBsZWFzZSBydW4gZTJmc2NrIGJlZm9yZSBjbGVhcmluZ1xuIgorInRoZSBoYXNfam91cm5hbCBmbGFnLlxuIgorbXNnc3RyICIiCisiRGUgcmVkZGluZ3N2bGFnIHZhbiBoZXQgam91cm5hbCBpcyBnZXpldC5cbiIKKyJWb2VyIGVlcnN0ICdlMmZzY2snIHVpdCwgdm9vcmRhdCB1IGRlIGpvdXJuYWwtdmxhZyB3aXN0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJIZXQgaW5zY2hha2VsZW4gdmFuIGJlc3RhbmRzc3lzdGVlbWZ1bmN0aWUgJ3NwYXJzZV9zdXBlcicgaXMgbmlldCBtb2dlbGlqayAiCisidm9vclxuIgorImJlc3RhbmRzc3lzdGVtZW4gbWV0IGluZ2VzY2hha2VsZGUgJ21ldGFfYmcnLWZ1bmN0aWV2bGFnLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDY0Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkJlc2NoZXJtaW5nIHRlZ2VuIG1lZXJ2b3VkaWdlIGFhbmtvcHBlbGluZ2VuIGthblxuIgorIm5pZXQgaW5nZXNjaGFrZWxkIHdvcmRlbiBhbHMgaGV0IGJlc3RhbmRzc3lzdGVlbVxuIgorImFhbmdla29wcGVsZCBvZiBhbGxlZW4tbGV6ZW4gaXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorIkJlc2NoZXJtaW5nIHRlZ2VuIG1lZXJ2b3VkaWdlIGFhbmtvcHBlbGluZ2VuIGlzIGluZ2VzY2hha2VsZFxuIgorIm1ldCBlZW4gYmlqd2Vya2luZ3NpbnRlcnZhbCB2YW4gJWQgc2Vjb25kZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTEKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW5ub3RcbiIKKyJiZSBkaXNhYmxlZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyByZWFkb25seS5cbiIKK21zZ3N0ciAiIgorIkJlc2NoZXJtaW5nIHRlZ2VuIG1lZXJ2b3VkaWdlIGFhbmtvcHBlbGluZ2VuIGthblxuIgorIm5pZXQgdWl0Z2VzY2hha2VsZCB3b3JkZW4gYWxzIGhldCBiZXN0YW5kc3N5c3RlZW1cbiIKKyJhbGxlZW4tbGV6ZW4gaXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiRm91dCB0aWpkZW5zIGxlemVuIHZhbiBiaXRrYWFydGVuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIk1hZ2lzY2ggZ2V0YWwgaW4gTU1QLWJsb2sga2xvcHQgbmlldCAtLSB2ZXJ3YWNodDogJXgsIGdldm9uZGVuOiAleFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTEzCittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2suIgorbXNnc3RyICJ0aWpkZW5zIGxlemVuIHZhbiBNTVAtYmxvayIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiIgorIkhldCB1aXRzY2hha2VsZW4gdmFuIGJlc3RhbmRzc3lzdGVlbWZ1bmN0aWUgJ2ZsZXhfYmcnIHpvdSBoZXRcbiIKKyJiZXN0YW5kc3N5c3RlZW0gaW5jb25zaXN0ZW50IG1ha2VuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTU2Cittc2dpZCAiIgorIlRoZSBodWdlX2ZpbGUgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJEZSAnaHVnZV9maWxlJy1mdW5jdGlldmxhZyBtYWcgYWxsZWVuIGdld2lzdCB3b3JkZW4gd2FubmVlciBoZXRcbiIKKyJiZXN0YW5kc3N5c3RlZW0gb250a29wcGVsZCBpcyBvZiBhYW5nZWtvcHBlbGQgYWxzIGFsbGVlbi1sZXplbi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2NworbXNnaWQgIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTc1Cittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisiS2FuIDY0LWJpdC1tb2R1cyBuaWV0IGluc2NoYWtlbGVuIHRlcndpamwgYmVzdGFuZHNzeXN0ZWVtIGFhbmdla29wcGVsZCBpcyFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisiS2FuIDY0LWJpdC1tb2R1cyBuaWV0IHVpdHNjaGFrZWxlbiB0ZXJ3aWpsIGJlc3RhbmRzc3lzdGVlbSBhYW5nZWtvcHBlbGQgaXMhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIldhYXJzY2h1d2luZzogJ15xdW90YSctb3B0aWUgb3ZlcnN0aWpndCAnLVEnLWFyZ3VtZW50ZW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKKyMsIGZ1enp5Cittc2dpZCAiIgorIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyBpcyBvbmx5IHN1cHBvcnRlZFxuIgorIm9uIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiSGV0IGluc2NoYWtlbGVuIHZhbiBiZXN0YW5kc3N5c3RlZW1mdW5jdGllICdzcGFyc2Vfc3VwZXInIGlzIG5pZXQgbW9nZWxpamsgIgorInZvb3JcbiIKKyJiZXN0YW5kc3N5c3RlbWVuIG1ldCBpbmdlc2NoYWtlbGRlICdtZXRhX2JnJy1mdW5jdGlldmxhZy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MDgKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBhIGpvdXJuYWwuXG4iCittc2dzdHIgIkhldCBiZXN0YW5kc3N5c3RlZW0gaGVlZnQgYWwgZWVuIGpvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiICAgIHRpamRlbnMgb3BlbmVuIHZhbiBqb3VybmFsIG9wICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiQWFubWFrZW4gdmFuIGpvdXJuYWwgb3AgYXBwYXJhYXQgJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJ0aWpkZW5zIHRvZXZvZWdlbiB2YW4gYmVzdGFuZHNzeXN0ZWVtIGFhbiBqb3VybmFsIG9wICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICJBYW5tYWtlbiB2YW4gam91cm5hbC1pbm9kZTogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDYwCittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIGZpbGUiCittc2dzdHIgIiIKKyJcbiIKKyIgICAgdGlqZGVucyBhYW5tYWtlbiB2YW4gam91cm5hbC1pbm9kZSIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ5OAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAidGlqZGVucyBpbml0aWFsaXNlcmVuIHZhbiBxdW90YS1jb250ZXh0IGluIG9uZGVyc3RldW5lbmRlIGJpYmxpb3RoZWVrIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJ0aWpkZW5zIGJpandlcmtlbiB2YW4gcXVvdGEtZ3JlbnplbiAoJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJ0aWpkZW5zIHNjaHJpanZlbiB2YW4gcXVvdGEtYmVzdGFuZCAoJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAidGlqZGVucyB2ZXJ3aWpkZXJlbiB2YW4gcXVvdGEtYmVzdGFuZCAoJWQpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1CisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRm9sbG93aW5nIHZhbGlkIHF1b3RhIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSAocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggIgorImNvbW1hKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIk9uZ2VsZGlnZSBxdW90YS1vcHRpZSBvcGdlZ2V2ZW4uXG4iCisiXG4iCisiR2VsZGlnZSBxdW90YS1vcHRpZXMgemlqbiAodGUgc2NoZWlkZW4gbWV0IGVlbiBrb21tYSk6XG4iCisiICAgIFteXXVzcnF1b3RhXG4iCisiICAgIFteXWdycHF1b3RhXG4iCisiXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgcGFyc2UgZGF0ZS90aW1lIHNwZWNpZmllcjogJXMiCittc2dzdHIgIkthbiBkYXR1bS90aWpkLXNwZWNpZmljYXRpZSBuaWV0IG9udGxlZGVuOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTY1OCBtaXNjL3R1bmUyZnMuYzoxNjcxCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBtb3VudHMgY291bnQgLSAlcyIKK21zZ3N0ciAib25qdWlzdCBhYW5rb3BwZWxpbmdlbmFhbnRhbDogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGdpZC9ncm91cCBuYW1lIC0gJXMiCittc2dzdHIgIm9uanVpc3RlIEdJRCBvZiBncm9lcHNuYWFtOiAlcyIKKworIyBsaWIvcHJhbmdlLmM6Mjk5IGxpYi9wcmFuZ2UuYzozMTYKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgIm9uanVpc3QgaW50ZXJ2YWw6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICJvbmp1aXN0ZSB2ZXJob3VkaW5nICglcykgdm9vciBnZXJlc2VydmVlcmRlIGJsb2trZW4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiT3B0aWUgJy1vJyBtYWcgc2xlY2h0cyDDqcOpbiBrZWVyIGdlZ2V2ZW4gd29yZGVuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIk9wdGllICctbycgbWFnIHNsZWNodHMgw6nDqW4ga2VlciBnZWdldmVuIHdvcmRlbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIm9uanVpc3QgYWFudGFsIGdlcmVzZXJ2ZWVyZGUgYmxva2tlbjogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAib25qdWlzdGUgVUlEIG9mIGdlYnJ1aWtlcnNuYWFtOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJvbmdlbGRpZ2UgZ3Jvb3R0ZSB2YW4gaW5vZGU6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIklub2RlLWdyb290dGUgbW9ldCBlZW4gbWFjaHQgdmFuIDIgemlqbiAtLSBuaWV0ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIk1NUC1iaWp3ZXJraW5nc2ludGVydmFsIGlzIHRlIGdyb290OiAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0clswXSAiSGV0IE1NUC1iaWp3ZXJraW5nc2ludGVydmFsIGlzIG9wICVsdSBzZWNvbmRlIGdlemV0XG4iCittc2dzdHJbMV0gIkhldCBNTVAtYmlqd2Vya2luZ3NpbnRlcnZhbCBpcyBvcCAlbHUgc2Vjb25kZW4gZ2V6ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICJPbmdlbGRpZyBhcmd1bWVudCB2YW4gJ3N0cmlkZSc6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiT25nZWxkaWcgYXJndW1lbnQgdmFuICdzdHJpcGVfd2lkdGgnOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaGFzaCBhbGdvcml0aG06ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnIGhhc2gtYWxnb3JpdG1lOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIkhldCBzdGFuZGFhcmQtaGFzaC1hbGdvcml0bWUgaXMgb3AgJXMgKCVkKSBnZXpldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiT25nZWxkaWdlIG9wdGllIG9wZ2VnZXZlbi5cbiIKKyJcbiIKKyJVaXRnZWJyZWlkZSBvcHRpZXMgd29yZGVuIGdlc2NoZWlkZW4gZG9vciBrb21tYSdzO1xuIgorImh1biBhcmd1bWVudCB3b3JkdCB2b29yYWZnZWdhYW4gZG9vciBlZW4gJz0nLXRla2VuLlxuIgorIlxuIgorIkdlbGRpZ2UgdWl0Z2VicmVpZGUgb3B0aWVzIHppam46XG4iCisiICAgIGNsZWFyX21tcFxuIgorIiAgICBoYXNoX2FsZz08aGFzaC1hbGdvcml0bWU+XG4iCisiICAgIG1vdW50X29wdHM9PHVpdGdlYnJlaWRlIHN0YW5kYWFyZCBhYW5rb3BwZWxpbmdzb3B0aWVzPlxuIgorIiAgICBzdHJpZGU9PGFhbnRhbCBibG9ra2VuIGRhdCBzYW1lbiBwZXIgUkFJRC1zY2hpamYgd29yZHQgZ2VsZXplbi8iCisiZ2VzY2hyZXZlbj5cbiIKKyIgICAgc3RyaXBlX3dpZHRoPTxhYW50YWwgYmxva2tlbiBwZXIgc3RyaXBlPiAobWVlc3RhbCBzdHJpZGUgw5cgYWFudGFsICIKKyJzY2hpanZlbilcbiIKKyIgICAgdGVzdF9mc1xuIgorIiAgICBedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIkxlemVuIHZhbiBpbm9kZS1iaXRrYWFydCBpcyBtaXNsdWt0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBibG9jayBiaXRtYXBcbiIKK21zZ3N0ciAiTGV6ZW4gdmFuIGJsb2stYml0a2FhcnQgaXMgbWlzbHVrdFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJ0ZSB2ZXJwbGFhdHNlbiBibG9ra2VuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQ0Cittc2dpZCAiRmFpbGVkIHRvIGFsbG9jYXRlIGJsb2NrIGJpdG1hcCB3aGVuIGluY3JlYXNpbmcgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICIiCisiUmVzZXJ2ZXJlbiB2YW4gYmxvay1iaXRrYWFydCB0aWpkZW5zIGlub2RlLWdyb290dGV2ZXJhbmRlcmluZyBpcyBtaXNsdWt0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTUwCittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBpbmNyZWFzZSBpbm9kZSBzaXplIFxuIgorbXNnc3RyICJFciBpcyBvbnZvbGRvZW5kZSBydWltdGUgb20gZGUgaW5vZGUtZ3Jvb3R0ZSB0ZSB2ZXJncm90ZW4uIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICIiCisiSGVycGxhYXRzZW4gdmFuIGJsb2trZW4gdGlqZGVucyBpbm9kZS1ncm9vdHRldmVyYW5kZXJpbmcgaXMgbWlzbHVrdC4gXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIkZvdXQgdGlqZGVucyB2ZXJhbmRlcmVuIHZhbiBkZSBpbm9kZS1ncm9vdHRlLlxuIgorIlZvZXIgJ2UydW5kbycgdWl0IG9tIGRlIGJlc3RhbmRzc3lzdGVlbXdpanppZ2luZ2VuIG9uZ2VkYWFuIHRlIG1ha2VuLiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIGluIE1NUC1ibG9rLlxuIgorIlByb2JlZXIgaGV0IHRlIHJlcGFyZXJlbiBtZXQ6XG4iCisiICAgIGUyZnNjayAtZiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXM6IGlzIGdlZW4gam91cm5hbC1hcHBhcmFhdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJEZSBpbm9kZS1ncm9vdHRlIGlzIGFsICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICJIZXQgdmVya2xlaW5lbiB2YW4gZGUgaW5vZGUtZ3Jvb3R0ZSB3b3JkdCBuaWV0IG9uZGVyc3RldW5kLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaW5vZGUgc2l6ZSAlbHUgKG1heCAlZClcbiIKK21zZ3N0ciAib25nZWxkaWdlIGlub2RlLWdyb290dGUgJWx1IChtYXggJWQpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4NDIKK21zZ2lkICJSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIkhldCBtYXhpbXVtIGFhbnRhbCBhYW5rb3BwZWxpbmdlbiBpcyBvcCAlZCBnZXpldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgY3VycmVudCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICJIZXQgaHVpZGlnZSBhYW50YWwgYWFua29wcGVsaW5nZW4gaXMgb3AgJWQgZ2V6ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIkdlZHJhZyBiaWogZm91dGVuIGlzIG9wICVkIGdlemV0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgZ2lkIHRvICVsdVxuIgorbXNnc3RyICJHSUQgdmFuIGdlcmVzZXJ2ZWVyZGUgYmxva2tlbiBpcyBvcCAlbHUgZ2V6ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICJpbnRlcnZhbCB0dXNzZW4gY29udHJvbGVzIGlzIHRlIGdyb290ICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAiSW50ZXJ2YWwgdHVzc2VuIGNvbnRyb2xlcyBpcyBvcCAlbHUgc2Vjb25kZW4gZ2V6ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICJQZXJjZW50YWdlIGdlcmVzZXJ2ZWVyZGUgYmxva2tlbiBpcyBvcCAlZyUlIGdlemV0ICglbGx1IGJsb2trZW4pXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICJhYW50YWwgZ2VyZXNlcnZlZXJkZSBibG9ra2VuIGlzIHRlIGdyb290ICglbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIkhldCBhYW50YWwgZ2VyZXNlcnZlZXJkZSBibG9ra2VuIGlzIG9wICVsbHUgZ2V6ZXRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0MgorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBzcGFyc2Ugc3VwZXJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJIZXQgYmVzdGFuZHNzeXN0ZWVtIGlzIGFsIHp1aW5pZyBtZXQgc3VwZXJibG9ra2VuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkhldCBpbnNjaGFrZWxlbiB2YW4gZGUgJ3NwYXJzZV9zdXBlcictZnVuY3RpZXZsYWcgaXMgbmlldCBtb2dlbGlqayB2b29yXG4iCisiYmVzdGFuZHNzeXN0ZW1lbiBtZXQgaW5nZXNjaGFrZWxkZSAnbWV0YV9iZyctZnVuY3RpZXZsYWcuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJEZSB6dWluaWctbWV0LXN1cGVyYmxva2tlbnZsYWcgaXMgYWFuZ2V6ZXQuICAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2MAorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiSGV0IHVpdHpldHRlbiB2YW4gZGUgJ3NwYXJzZV9zdXBlcictZnVuY3RpZXZsYWcgaXMgbmlldCBtb2dlbGlqay5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2OAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHRpbWUgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdG8gJXNcbiIKK21zZ3N0ciAiVGlqZCB2YW4gbGFhdHN0ZSBjb250cm9sZSBpcyBvcCAlcyBnZXpldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAiVUlEIHZhbiBnZXJlc2VydmVlcmRlIGJsb2trZW4gaXMgb3AgJWx1IGdlemV0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIkZvdXQgaW4gZ2VicnVpayB2YW4gJ2NsZWFyX21tcCcuICBIZXQgbW9ldCBzYW1lbmdhYW4gbWV0ICctZicuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkRlIHF1b3RhLWZ1bmN0aWUgbWFnIGFsbGVlbiBnZXdpanppZ2Qgd29yZGVuIHdhbm5lZXIgaGV0IGJlc3RhbmRzc3lzdGVlbVxuIgorIm9udGtvcHBlbGQgaXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiRGUgVVVJRCBtYWcgYWxsZWVuIGdld2lqemlnZCB3b3JkZW4gd2FubmVlciBoZXQgYmVzdGFuZHNzeXN0ZWVtIG9udGtvcHBlbGQgIgorImlzLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNjAKK21zZ2lkICJTZXR0aW5nIFVVSUQgb24gYSBjaGVja3N1bW1lZCBmaWxlc3lzdGVtIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJPbmp1aXN0ZSBVVUlELWluZGVsaW5nXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMDEKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIkhldCBqb3VybmFsLXN1cGVyYmxvayBtb2V0IGJpamdld2Vya3Qgd29yZGVuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkRlIGlub2RlLWdyb290dGUgbWFnIGFsbGVlbiBnZXdpanppZ2Qgd29yZGVuIHdhbm5lZXIgaGV0IGJlc3RhbmRzc3lzdGVlbVxuIgorIm9udGtvcHBlbGQgaXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIkhldCB2ZXJhbmRlcmVuIHZhbiBkZSBpbm9kZS1ncm9vdHRlIGlzIG5pZXQgbW9nZWxpamsgdm9vclxuIgorImJlc3RhbmRzc3lzdGVtZW4gbWV0IGluZ2VzY2hha2VsZGUgJ2ZsZXhfYmcnLWZ1bmN0aWV2bGFnLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiRGUgaW5vZGUtZ3Jvb3RlIGlzIG9wICVsdSBnZXpldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIkhldCB2ZXJhbmRlcmVuIHZhbiBkZSBpbm9kZS1ncm9vdHRlIGlzIG1pc2x1a3QuIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaWRlIHNpemUgdG8gJWRcbiIKK21zZ3N0ciAiRGUgJ3N0cmlkZSctbGVuZ3RlIGlzIG9wICVkIGdlemV0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiRGUgJ3N0cmlwZSctYnJlZWR0ZSBpcyBvcCAlZCBnZXpldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiRGUgdWl0Z2VicmVpZGUgc3RhbmRhYXJkIGFhbmtvcHBlbGluZ3NvcHRpZXMgemlqbiBvcCAnJXMnIGdlemV0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZSBqb3VybmFsIGlzIGRpcnR5LiBZb3UgbWF5IHdpc2ggdG8gcmVwbGF5IHRoZSBqb3VybmFsIGxpa2U6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisiYnkgam91cm5hbCByZWNvdmVyeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiSGVyc3RlbGxlbiB2YW4gam91cm5hbC5cbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIjx2ZXJkZXJnYWFuZD5cbiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2NlZWQgYW55d2F5IChvciB3YWl0ICVkIHNlY29uZHMpID8gKHksbikgIgorbXNnc3RyICJUb2NoIGRvb3JnYWFuIChvZiAlZCBzZWNvbmRlbiB3YWNodGVuKT8gKGosbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICJUb2NoIGRvb3JnYWFuPyAoaixuKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICInbWtlMmZzJyB3b3JkdCBnZWR3b25nZW4gdWl0Z2V2b2VyZC4gIEhvb3AgZGF0IC9ldGMvbXRhYiBvbmp1aXN0IGlzLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iCittc2dzdHIgInphbCBoaWVyIGdlZW4gJXMgbWFrZW4hXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICInbWtlMmZzJyB3b3JkdCBnZWR3b25nZW4gdWl0Z2V2b2VyZC5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiS2FuIGdlZW4gZ2VoZXVnZW4gcmVzZXJ2ZXJlbiBvbSBqb3VybmFsLW9wdGllcyB0ZSBvbnRsZWRlbiFcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiS2FuIGdlZW4gam91cm5hbC1hcHBhcmFhdCB2aW5kZW4gZGF0IG92ZXJlZW5rb210IG1ldCAlc1xuIgorCisjOiBtaXNjL3V0aWwuYzoyMTMKK21zZ2lkICIiCisiXG4iCisiQmFkIGpvdXJuYWwgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiSm91cm5hbCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgam91cm5hbCBvcHRpb25zIGFyZTpcbiIKKyJcdHNpemU9PGpvdXJuYWwgc2l6ZSBpbiBtZWdhYnl0ZXM+XG4iCisiXHRkZXZpY2U9PGpvdXJuYWwgZGV2aWNlPlxuIgorIlx0bG9jYXRpb249PGpvdXJuYWwgbG9jYXRpb24+XG4iCisiXG4iCisiVGhlIGpvdXJuYWwgc2l6ZSBtdXN0IGJlIGJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgZmlsZXN5c3RlbSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJPbmdlbGRpZ2Ugam91cm5hbC1vcHRpZXMgb3BnZWdldmVuLlxuIgorIlxuIgorIkpvdXJuYWwtb3B0aWVzIHdvcmRlbiBnZXNjaGVpZGVuIGRvb3Iga29tbWEncyxcbiIKKyJodW4gYXJndW1lbnQgd29yZHQgdm9vcmFmZ2VnYWFuIGRvb3IgZWVuICc9Jy10ZWtlbi5cbiIKKyJcbiIKKyJHZWxkaWdlIGpvdXJuYWwtb3B0aWVzIHppam46XG4iCisiICAgIHNpemU9PGpvdXJuYWwtZ3Jvb3R0ZSBpbiBtZWdhYnl0ZXM+XG4iCisiICAgIGRldmljZT08am91cm5hbC1hcHBhcmFhdD5cbiIKKyIgICAgbG9jYXRpb249PGpvdXJuYWwtbG9jYXRpZT5cbiIKKyJcbiIKKyJEZSBncm9vdHRlIHZhbiBoZXQgam91cm5hbCBpcyBtaW5pbWFhbCAxMDI0IGVuIG1heGltYWFsIDEwMjQwMDAwIGJsb2trZW4uXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyJCZXN0YW5kc3N5c3RlZW0gaXMgdGUga2xlaW4gdm9vciBlZW4gam91cm5hbC5cbiIKKworIzogbWlzYy91dGlsLmM6MjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgcmVxdWVzdGVkIGpvdXJuYWwgc2l6ZSBpcyAlZCBibG9ja3M7IGl0IG11c3QgYmVcbiIKKyJiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGJsb2Nrcy4gIEFib3J0aW5nLlxuIgorbXNnc3RyICIiCisiXG4iCisiRGUgZ2V2cmFhZ2RlIGpvdXJuYWwtYWZtZXRpbmcgaXMgJWQgYmxva2tlbjsgbWFhciBkZXplIGRpZW50XG4iCisidHVzc2VuIGRlIDEwMjQgZW4gZGUgMTAuMjQwLjAwMCBibG9ra2VuIHRlIGxpZ2dlbi4gIEdlc3RvcHQuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkpvdXJuYWwtYWZtZXRpbmcgaXMgdGUgZ3Jvb3Qgdm9vciBiZXN0YW5kc3N5c3RlZW0uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiRGl0IGJlc3RhbmRzc3lzdGVlbSB6YWwgYXV0b21hdGlzY2ggZ2Vjb250cm9sZWVyZCB3b3JkZW4gbmEgZWxrZVxuIgorIiVkIGFhbmtvcHBlbGluZ2VuIG9mIG5hICVnIGRhZ2VuLCBhZmhhbmtlbGlqayB2YW4gd2F0IGhldCBlZXJzdCB2b29ya29tdC5cbiIKKyJVIGt1bnQgJ3R1bmUyZnMnIG1ldCAnLWMnIG9mICctaScgZ2VicnVpa2VuIG9tIGRpdCBiaWogdGUgc3RlbGxlbi5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIkdlYnJ1aWs6ICAlcyBbLWRdIFstcCBQSUQtYmVzdGFuZF0gWy1zIHNvY2tldC1wYWRdIFstVCB0aWpkc2xpbWlldF1cbiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiAgICAgICAgICAlcyBbLXJ8dF0gWy1uIG51bW1lcl0gWy1zIHNvY2tldC1wYWRdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiICAgICAgICAgICVzIC1rXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICJvbmdlbGRpZ2UgYXJndW1lbnRlbiIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgInZlcmJpbmRlbiIKKworIzogbWlzYy91dWlkZC5jOjE5MgorbXNnaWQgIndyaXRlIgorbXNnc3RyICJzY2hyaWp2ZW4iCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICJnZWxlemVuIGFhbnRhbCIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgIm9uZ2VsZGlnZSBhbnR3b29yZGxlbmd0ZSIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJ1dWlkZC1kaWVuc3QgZHJhYWl0IGFsIG9uZGVyIFBJRCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJLYW4gZ2VlbiBVTklYLXN0cmVhbS1zb2NrZXQgYWFubWFrZW46ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIkthbiBVTklYLXN0cmVhbS1zb2NrZXQgJXMgbmlldCBiaW5kZW46ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJLYW4gbmlldCBsdWlzdGVyZW4gb3AgVU5JWC1zdHJlYW0tc29ja2V0ICVzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgIkZvdXQgdGlqZGVucyBsZXplbiB2YW4gY2xpw6tudDsgbGVuZ3RlID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgImJld2Vya2luZyAlZCwgZ2VnZXZlbiBnZXRhbCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiR2VnZW5lcmVlcmRlIHRpamRzLVVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICJHZWdlbmVyZWVyZGUgd2lsbGVrZXVyaWdlIFVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAiVGlqZHMtVVVJRCAlcyB3ZXJkIGdlZ2VuZXJlZXJkLCBlbiDDqcOpbiBvcHZvbGdlbmRlXG4iCittc2dzdHJbMV0gIlRpamRzLVVVSUQgJXMgd2VyZCBnZWdlbmVyZWVyZCwgZW4gJWQgb3B2b2xnZW5kZVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIkVyIHppam4gJWQgVVVJRCdzIGdlZ2VuZXJlZXJkOlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uICVkXG4iCittc2dzdHIgIk9uZ2VsZGlnZSBiZXdlcmtpbmcgJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIk9uZ2VsZGlnIGdldGFsOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTM0IG1pc2MvdXVpZGQuYzo1NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAiRm91dCBiaWogYWFucm9lcGVuIHZhbiB1dWlkZC1kaWVuc3QgKCVzKTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iCittc2dzdHJbMF0gIiVzIGVuIMOpw6luIG9wdm9sZ2VuZGUgVVVJRFxuIgorbXNnc3RyWzFdICIlcyBlbiAlZCBvcHZvbGdlbmRlIFVVSUQnc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIkxpanN0IHZhbiBVVUlEJ3M6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiT252ZXJ3YWNodGUgYW50d29vcmRsZW5ndGUgKCVkKSB2YW4gc2VydmVyXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiS2FuIHV1aWRkIG1ldCBQSUQgJWQgbmlldCBlbGltaW5lcmVuOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJ1dWlkZCBtZXQgUElEICVkIGlzIGdlw6tsaW1pbmVlcmRcbiIKKworIzogbWlzYy91dWlkZ2VuLmM6MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcl0gWy10XVxuIgorbXNnc3RyICJHZWJydWlrOiAgJXMgWy1yXSBbLXRdXG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDIKK21zZ2lkICIjIEV4dGVudCBkdW1wOlxuIgorbXNnc3RyICIjIChkZWJ1ZykgRXh0ZW50IGR1bXA6XG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiI1x0TnVtPSVsbHUsIFNpemU9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRlZD0lbGx1XG4iCittc2dzdHIgIiMgKGRlYnVnKVx0TnVtPSVsbHUgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkdlYnJ1aWs6ICAlcyBbLWQgZGVidWd2bGFnZ2VuXSBbLWZGTXBQXSBhcHBhcmFhdCBbbmlldXdlX2dyb290dGVdXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJVaXRicmVpZGVuIHZhbiBpbm9kZXRhYmVsIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIlZlcnBsYWF0c2VuIHZhbiBibG9ra2VuIgorCisjOiByZXNpemUvbWFpbi5jOjc4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIlNjYW5uZW4gdmFuIGlub2RldGFiZWwiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODEKK21zZ2lkICJVcGRhdGluZyBpbm9kZSByZWZlcmVuY2VzIgorbXNnc3RyICJCaWp3ZXJrZW4gdmFuIGlub2RlLXZlcndpanppbmdlbiIKKworIzogcmVzaXplL21haW4uYzo4NAorbXNnaWQgIk1vdmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiVmVycGxhYXRzZW4gdmFuIGlub2RldGFiZWwiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgIk9uYmVrZW5kZSBzdGFwPyE/IgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAiQmVnaW4gdmFuIHN0YXAgJWQgKG1heCA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkhldCB2YW4gZ3Jvb3R0ZSB2ZXJhbmRlcmVuIHZhbiBlZW4gJ2JpZ2FsbG9jJy1iZXN0YW5kc3N5c3RlZW0gaXMgbm9nXG4iCisib252b2xkb2VuZGUgZ2V0ZXN0LiAgRG9vcmdhYW4gaXMgZ2VoZWVsIHZvb3IgZWlnZW4gcmlzaWNvISAgR2VicnVpa1xuIgorImRlIGR3YW5nb3B0aWUgYWxzIHUgdG9jaCBkb29yIHdpbHQgZ2Fhbi5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzozNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyIKK21zZ3N0ciAidGlqZGVucyBvcGVuZW4gdmFuICVzIgorCisjOiByZXNpemUvbWFpbi5jOjM3MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICJ0aWpkZW5zIG9wdnJhZ2VuIHZhbiBzdGF0dXMgdmFuICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlZvZXIgZWVyc3QgJ2UyZnNjayAtZiAlcycgdWl0LlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIkdlc2NoYXR0ZSBtaW5pbXVtIGdyb290dGUgdmFuIGhldCBiZXN0YW5kc3N5c3RlZW06ICVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAiT25nZWxkaWdlIG5pZXV3ZSBncm9vdHRlOiAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUyMAorbXNnaWQgIk5ldyBzaXplIHRvbyBsYXJnZSB0byBiZSBleHByZXNzZWQgaW4gMzIgYml0c1xuIgorbXNnc3RyICIiCisiTmlldXdlIGdyb290dGUgaXMgdGUgZ3Jvb3Qgb20gdWl0Z2VkcnVrdCB0ZSBrdW5uZW4gd29yZGVuIGluIDMyIGJpdHMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICJOaWV1d2UgZ3Jvb3R0ZSBpcyBrbGVpbmVyIGRhbiBtaW5pbXVtICglbGx1KS5cbiIKKworIzogcmVzaXplL21haW4uYzo1MzQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBsZW5ndGgiCittc2dzdHIgIk9uZ2VsZGlnZSBsZW5ndGUgdm9vciAnc3RyaWRlJyIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRlIHBhcnRpdGllIChvZiBoZXQgYXBwYXJhYXQpIGlzIHNsZWNodHMgJWxsdSBibG9ra2VuICh2YW4gJWRLKS5cbiIKKyJVIHZyb2VnIG9tIGVlbiBuaWV1d2UgZ3Jvb3R0ZSB2YW4gJWxsdSBibG9ra2VuLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICJLYW4gNjQtYml0LWZ1bmN0aWUgbmlldCBpbi0gZW4gdWl0c2NoYWtlbGVuLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJLYW4gNjQtYml0LWZ1bmN0aWUgbmlldCB3aWp6aWdlbiBvcCBlZW4gYmVzdGFuZHNzeXN0ZWVtIGRhdCBncm90ZXIgaXMgZGFuICIKKyIyXjMyIGJsb2trZW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTc1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkthbiA2NC1iaXQtZnVuY3RpZSBuaWV0IHdpanppZ2VuIHRlcndpamwgYmVzdGFuZHNzeXN0ZWVtIGFhbmdla29wcGVsZCBpcy5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkhldCBiZXN0YW5kc3N5c3RlZW0gaXMgYWwgJWxsdSBibG9ra2VuICh2YW4gJWRLKSBncm9vdC4gIEVyIGlzIG5pZXRzIHRlICIKKyJkb2VuIVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDY0LWJpdC5cbiIKK21zZ3N0ciAiSGV0IGJlc3RhbmRzc3lzdGVlbSBpcyBhbCA2NC1iaXQuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJIZXQgYmVzdGFuZHNzeXN0ZWVtIGlzIGFsIDMyLWJpdC5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byA2NC1iaXQuXG4iCittc2dzdHIgIkNvbnZlcnRlcmVuIHZhbiBiZXN0YW5kc3N5c3RlZW0gbmFhciA2NC1iaXQuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJDb252ZXJ0ZXJlbiB2YW4gYmVzdGFuZHNzeXN0ZWVtIG5hYXIgMzItYml0LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMgorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlZhbiBncm9vdHRlIHZlcmFuZGVyZW4gdmFuIGJlc3RhbmRzc3lzdGVlbSBvcCAlcyBuYWFyICVsbHUgYmxva2tlbiAodmFuICIKKyIlZEspLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVzaXplICVzIgorbXNnc3RyICJ0aWpkZW5zIHZlcmFuZGVyZW4gdmFuIGRlIGdyb290dGUgdmFuICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIlZvZXIgJ2UyZnNjayAtZnkgJXMnIHVpdCBvbSBoZXQgYmVzdGFuZHNzeXN0ZWVtXG4iCisidGUgcmVwYXJlcmVuIG5hIGRlIGFmZ2Vicm9rZW4gZ3Jvb3R0ZXZlcmFuZGVyaW5nLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJIZXQgYmVzdGFuZHNzeXN0ZWVtIG9wICVzIGlzIG51ICVsbHUgYmxva2tlbiAodmFuICVkSykgZ3Jvb3QuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byB0cnVuY2F0ZSAlcyIKK21zZ3N0ciAidGlqZGVucyBpbmtvcnRlbiB2YW4gJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICIiCisiZGUga2VybmVsIG9uZGVyc3RldW50IGhldCBsaXZlIHZlcmdyb3Rlbi92ZXJrbGVpbmVuIG1ldCAnc3BhcnNlX3N1cGVyMicgbmlldCIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisiQmVzdGFuZHNzeXN0ZWVtIG9wICVzIGlzIGFhbmdla29wcGVsZCBvcCAlcztcbiIKKyJoZXQgdmVyZ3JvdGVuL3ZlcmtsZWluZW4gemFsIGxpdmUgZ2VkYWFuIG1vZXRlbiB3b3JkZW4uXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkhldCBsaXZlIGtyaW1wZW4gd29yZHQgbmlldCBvbmRlcnN0ZXVuZCIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIkJlc3RhbmRzc3lzdGVlbSBvbmRlcnN0ZXVudCBsaXZlIHZlcmdyb3Rlbi92ZXJrbGVpbmVuIG5pZXQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjIKK21zZ2lkICJOb3QgZW5vdWdoIHJlc2VydmVkIGdkdCBibG9ja3MgZm9yIHJlc2l6aW5nIgorbXNnc3RyICJOaWV0IGdlbm9lZyBnZXJlc2VydmVlcmRlIEdEVC1ibG9ra2VuIG9tIGdyb290dGUgdGUga3VubmVuIHZlcmFuZGVyZW4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjkKK21zZ2lkICJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCByZXNpemluZyBhIGZpbGUgc3lzdGVtIHRoaXMgbGFyZ2UiCittc2dzdHIgIiIKKyJEZSBrZXJuZWwgb25kZXJzdGV1bnQgaGV0IHZlcmdyb3Rlbi92ZXJrbGVpbmVuIHZhblxuIgorImVlbiBiZXN0YW5kc3N5c3RlZW0gbWV0IGRlemUgYWZtZXRpbmdlbiBuaWV0IgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgInRpamRlbnMgb3BlbmVuIHZhbiBhYW5rb3BwZWxpbmdzcHVudCAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIk91ZGUgaW50ZXJmYWNlIHZvb3IgZ3Jvb3R0ZXZlcmFuZGVyaW5nIGlzIGdldnJhYWdkLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiVG9lZ2FuZyBnZXdlaWdlcmQgdm9vciBoZXQgdmVyZ3JvdGVuL3ZlcmtsZWluZW4gdmFuIGJlc3RhbmRzc3lzdGVlbSIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiVGlqZGVucyBjb250cm9sZSBvcCBvbmRlcnN0ZXVuaW5nIHZvb3IgbGl2ZSB2ZXJncm90ZW4vdmVya2xlaW5lbiIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiRGUga2VybmVsIG9uZGVyc3RldW50IGhldCBsaXZlIHZlcmdyb3Rlbi92ZXJrbGVpbmVuIG5pZXQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiVWl0dm9lcmVuIHZhbiBsaXZlIHZlcmFuZGVyaW5nIHZhbiAlcyBuYWFyICVsbHUgYmxva2tlbiAodmFuICVkSykuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJUaWpkZW5zIHVpdGJyZWlkZW4gdmFuIGRlIGxhYXRzdGUgZ3JvZXAiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIlRpamRlbnMgdG9ldm9lZ2VuIHZhbiBncm9lcCAjJWQiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJCZXN0YW5kc3N5c3RlZW0gb3AgJXMgaXMgYWFuZ2Vrb3BwbGVkIG9wICVzO1xuIgorIm9wIGRpdCBzeXN0ZWVtIGlzIGxpdmUgdmVyZ3JvdGVuL3ZlcmtsZWluZW4gbmlldCBtb2dlbGlqay5cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICJhYW50YWwgaW5vZGVzICglbGx1KSBtb2V0IGtsZWluZXIgemlqbiBkYW4gJXUiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJnZXJlc2VydmVlcmRlIGJsb2trZW4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAiYmxva2tlbiB2b29yIG1ldGFnZWdldmVucyIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgIm5pZXV3ZSBtZXRhYmxva2tlbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKyJab3Ugbm9vaXQgbW9nZW4gZ2ViZXVyZW46IGdlZW4gc3VwZXJibG9rIGluIGxhYXRzdGUgJ3N1cGVyX3NwYXJzZScgIgorImJsb2tncm9lcCFcbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKyJab3Ugbm9vaXQgbW9nZW4gZ2ViZXVyZW46IG9udmVyd2FjaHRlICdvbGRfZGVzYycgaW4gJ3N1cGVyX3NwYXJzZScgIgorImJsb2tncm9lcCFcbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiWm91IG5vb2l0IG1vZ2VuIGdlYmV1cmVuOiBkZSAncmVzaXplJy1pbm9kZSBpcyBiZXNjaGFkaWdkIVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKKyMsIGZ1enp5Cittc2dpZCAiRVhUMkZTIExpYnJhcnkgdmVyc2lvbiAxLjQzLjIiCittc2dzdHIgIkVYVDJGUy1iaWJsaW90aGVlayAgdmVyc2llIDEuNDMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2V4dDJfZmlsc3lzJy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2JhZGJsb2Nrc19saXN0Jy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2l0ZXJhdGUgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2JhZGJsb2Nrc19pdGVyYXRlJy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfc2NhbiBzdHJ1Y3R1cmUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciAnaW5vZGVfc2Nhbictc3RydWN0dXVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2lvX2NoYW5uZWwnLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB1bml4IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgVW5peC0naW9fY2hhbm5lbCctc3RydWN0dXVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2lvX21hbmFnZXInLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2Jsb2NrX2JpdG1hcCctc3RydWN0dXVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciAnaW5vZGVfYml0bWFwJy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgJ2dlbmVyaWNfYml0bWFwJy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCB2b29yIHRlc3QtJ2lvX2NoYW5uZWwnLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciBtYXBwZW5ibG9rbGlqc3Qtc3RydWN0dXVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGljb3VudCBzdHJ1Y3R1cmUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciAnaWNvdW50Jy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCB2b29yIFBvd2VycXVlc3QtJ2lvX2NoYW5uZWwnLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgZXh0Mi1iZXN0YW5kcy1zdHJ1Y3R1dXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciBFeHQyLWltYWdlaGVhZGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgaW5vZGUtJ2lvX2NoYW5uZWwnLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciBFeHQ0LWV4dGVudC1oYW5kbGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2siCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgaW4gc3VwZXJibG9rIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzEKK21zZ2lkICJGaWxlc3lzdGVtIHJldmlzaW9uIHRvbyBoaWdoIgorbXNnc3RyICJCZXN0YW5kc3N5c3RlZW12ZXJzaWUgaXMgdGUgaG9vZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIiIKKyJQb2dpbmcgdG90IHNjaHJpanZlbiBuYWFyIGJlc3RhbmRzc3lzdGVlbSBkYXQgZ2VvcGVuZCBpcyB2b29yIGFsbGVlbi1sZXplbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiS2FuIGdyb2Vwc2Jlc2NocmlqdmVycyBuaWV0IGxlemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiS2FuIGdyb2Vwc2Jlc2NocmlqdmVycyBuaWV0IHNjaHJpanZlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiQmVzY2hhZGlnZGUgZ3JvZXBzYmVzY2hyaWp2ZXI6IG9uZ2VsZGlnIGJsb2sgdm9vciBibG9rLWJpdGthYXJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICJCZXNjaGFkaWdkZSBncm9lcHNiZXNjaHJpanZlcjogb25nZWxkaWcgYmxvayB2b29yIGlub2RlLWJpdGthYXJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgIkJlc2NoYWRpZ2RlIGdyb2Vwc2Jlc2NocmlqdmVyOiBvbmdlbGRpZyBibG9rIHZvb3IgaW5vZGV0YWJlbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJLYW4gZWVuIGlub2RlLWJpdGthYXJ0IG5pZXQgc2NocmlqdmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiS2FuIGVlbiBpbm9kZS1iaXRrYWFydCBuaWV0IGxlemVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiS2FuIGVlbiBibG9rLWJpdGthYXJ0IG5pZXQgc2NocmlqdmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDEKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJLYW4gZWVuIGJsb2stYml0a2FhcnQgbmlldCBsZXplbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIkthbiBlZW4gaW5vZGV0YWJlbCBuaWV0IHNjaHJpanZlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiS2FuIGVlbiBpbm9kZXRhYmVsIG5pZXQgbGV6ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiS2FuIHZvbGdlbmRlIGlub2RlIG5pZXQgbGV6ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiQmVzdGFuZHNzeXN0ZWVtIGhlZWZ0IGVlbiBvbnZlcndhY2h0ZSBibG9rZ3Jvb3R0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJFWFQyLW1hcCBpcyBiZXNjaGFkaWdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIlBvZ2luZyB0b3QgbGV6ZW4gdmFuIGJsb2sgdWl0IGJlc3RhbmRzc3lzdGVlbSBsYXMgdGUgd2VpbmlnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIlBvZ2luZyB0b3Qgc2NocmlqdmVuIHZhbiBibG9rIG5hYXIgYmVzdGFuZHNzeXN0ZWVtIHNjaHJlZWYgdGUgd2VpbmlnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIkdlZW4gdnJpamUgcnVpbXRlIG1lZXIgaW4gZGUgbWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiSW5vZGUtYml0a2FhcnQgaXMgbmlldCBnZWxhZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQmxvay1iaXRrYWFydCBpcyBuaWV0IGdlbGFkZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJPbmdlbGRpZyBpbm9kZW51bW1lciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIk9uZ2VsZGlnIGJsb2tudW1tZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICIqKkludGVybmUgcHJvZ3JhbW1hZm91dCoqIGluIGV4dDJmc19leHBhbmRfZGlyKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorIkVyIGlzIG9udm9sZG9lbmRlIHJ1aW10ZSBvbSBoZXQgdm9vcmdlc3RlbGRlIGJlc3RhbmRzc3lzdGVlbSB0ZSBjcmXDq3JlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiT25nZWxkaWcgYmxva251bW1lciBnZWdldmVuIGFhbiBleHQyZnNfbWFya19ibG9ja19iaXRtYXAoKSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJPbmdlbGRpZyBibG9rbnVtbWVyIGdlZ2V2ZW4gYWFuIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIk9uZ2VsZGlnIGJsb2tudW1tZXIgZ2VnZXZlbiBhYW4gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIk9uZ2VsZGlnIGJsb2tudW1tZXIgZ2VnZXZlbiBhYW4gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MAorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiT25nZWxkaWcgYmxva251bW1lciBnZWdldmVuIGFhbiBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCgpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjEKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIgorbXNnc3RyICJPbmdlbGRpZyBibG9rbnVtbWVyIGdlZ2V2ZW4gYWFuIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCgpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIlBvZ2luZyBvbSBoZXQgZWluZCB2YW4gYmxvay1iaXRrYWFydCB2b29yYmlqIGhldCBlY2h0ZSBlaW5kIHRlIHNtdXJmZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorIlBvZ2luZyBvbSBoZXQgZWluZCB2YW4gaW5vZGUtYml0a2FhcnQgdm9vcmJpaiBoZXQgZWNodGUgZWluZCB0ZSBzbXVyZmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJPbmdlbGRpZyBpbmRpcmVjdCBibG9rIGdldm9uZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiT25nZWxkaWcgZHViYmVsLWluZGlyZWN0IGJsb2sgZ2V2b25kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJPbmdlbGRpZyBkcmlldm91ZGlnLWluZGlyZWN0IGJsb2sgZ2V2b25kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiQmxvay1iaXRrYWFydGVuIHppam4gbmlldCBoZXR6ZWxmZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OAorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiSW5vZGUtYml0a2FhcnRlbiB6aWpuIG5pZXQgaGV0emVsZmRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiT25nZWxkaWdlIG9mIG1pc3Zvcm1kZSBhcHBhcmFhdG5hYW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRXIgb250YnJlZWt0IGVlbiBibG9rZ3JvZXAgaW4gZGUgaW5vZGV0YWJlbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJIZXQgRXh0Mi1zdXBlcmJsb2sgaXMgYmVzY2hhZGlnZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcyCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJPbmdlbGRpZyBnZW5lcmllayBiaXRudW1tZXIgZ2VnZXZlbiBhYW4gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAoKSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjczCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIk9uZ2VsZGlnIGdlbmVyaWVrIGJpdG51bW1lciBnZWdldmVuIGFhbiBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NAorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiT25nZWxkaWcgZ2VuZXJpZWsgYml0bnVtbWVyIGdlZ2V2ZW4gYWFuIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwKCkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAiVGUgdmVlbCBzeW1ib2xpc2NoZSBrb3BwZWxpbmdlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkRlIGNhbGxiYWNrLWZ1bmN0aWUga2FuIGRpdCBnZXZhbCBuaWV0IGFhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc3Cittc2dpZCAiVGhlIGlub2RlIGlzIGZyb20gYSBiYWQgYmxvY2sgaW4gdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJEZSBpbm9kZSBrb210IHVpdCBlZW4gc2xlY2h0IGJsb2sgaW4gZGUgaW5vZGV0YWJlbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiQmVzdGFuZHNzeXN0ZWVtIGhlZWZ0IG5pZXQtb25kZXJzdGV1bmRlIGZ1bmN0aWVzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiQmVzdGFuZHNzeXN0ZWVtIGhlZWZ0IG5pZXQtb25kZXJzdGV1bmRlIGFsbGVlbi1sZXplbiBmdW5jdGllcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICJJbi0vdWl0dm9lcmthbmFhbCBrb24gZ2VlbiAnc2VlaycgZG9lbiBiaWogbGV6ZW4gb2Ygc2NocmlqdmVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIk9udm9sZG9lbmRlIGdlaGV1Z2VuIGJlc2NoaWtiYWFyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkiCittc2dzdHIgIk9uZ2VsZGlnIGFyZ3VtZW50IGdlZ2V2ZW4gYWFuIEV4dDItYmlibGlvdGhlZWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIkthbiBnZWVuIGJsb2sgcmVzZXJ2ZXJlbiBpbiBFeHQyLWJlc3RhbmRzc3lzdGVlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiS2FuIGdlZW4gaW5vZGUgcmVzZXJ2ZXJlbiBpbiBFeHQyLWJlc3RhbmRzc3lzdGVlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgIkV4dDItaW5vZGUgaXMgZ2VlbiBtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIlRlIHZlZWwgdmVyd2lqemluZ2VuIGluIHRhYmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiQmVzdGFuZCBpcyBuaWV0IGdldm9uZGVuIGRvb3IgJ2V4dDJfbG9va3VwKCknIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICJCZXN0YW5kIGlzIGdlb3BlbmQgdm9vciBhbGxlZW4tbGV6ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiRXh0Mi1tYXBibG9rIG5pZXQgZ2V2b25kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFeHQyLW1hcCBiZXN0YWF0IGFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiT25nZcOvbXBsZW1lbnRlZXJkZSBFeHQyLWJpYmxpb3RoZWVrZnVuY3RpZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICJBbm51bGVyaW5nIGlzIHZlcnpvY2h0IGRvb3IgZ2VicnVpa2VyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTMKK21zZ2lkICJFeHQyIGZpbGUgdG9vIGJpZyIKK21zZ3N0ciAiRXh0Mi1iZXN0YW5kIGlzIHRlIGdyb290IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIkFhbmdlZ2V2ZW4gam91cm5hbC1hcHBhcmFhdCBpcyBnZWVuIGJsb2stYXBwYXJhYXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NQorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQiCittc2dzdHIgIkdlZW4gam91cm5hbC1zdXBlcmJsb2sgZ2V2b25kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiSm91cm5hbCBtb2V0IG1pbnN0ZW5zIDEwMjQgYmxva2tlbiB6aWpuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTcKK21zZ2lkICJVbnN1cHBvcnRlZCBqb3VybmFsIHZlcnNpb24iCittc2dzdHIgIk5pZXQtb25kZXJzdGV1bmRlIGpvdXJuYWwtdmVyc2llIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgIkZvdXQgdGlqZGVucyBsYWRlbiB2YW4gZXh0ZXJuIGpvdXJuYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorbXNnaWQgIkpvdXJuYWwgbm90IGZvdW5kIgorbXNnc3RyICJHZWVuIGpvdXJuYWwgZ2V2b25kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiTWFwLWhhc2ggd29yZHQgbmlldCBvbmRlcnN0ZXVuZCIKKworIyBCZWhhbHZlIEUgZW4gRiB3b3JkZW4gZGUgdm9sZ2VuZGUgMzAgbGV0dGVyYWZrb3J0aW5nZW4gbmlldCBnZWJydWlrdC4KKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIk9uZ2VsZGlnIGJsb2tudW1tZXIgdm9vciB1aXRnZWJyZWlkIGtlbm1lcmsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiS2FuIGdlZW4gYmVzdGFuZHNzeXN0ZWVtIGFhbm1ha2VuIG1ldCBoZXQgZ2V2cmFhZ2RlIGFhbnRhbCBpbm9kZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIkUyaW1hZ2Utc25hcHNob3Qgd29yZHQgbmlldCBnZWJydWlrdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICJUZSB2ZWVsIGdlcmVzZXJ2ZWVyZGUgZ3JvZXBzYmVzY2hyaWp2ZXJibG9ra2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA1Cittc2dpZCAiUmVzaXplIGlub2RlIGlzIGNvcnJ1cHQiCittc2dzdHIgIkRlIHJlc2l6ZS1pbm9kZSBpcyBiZXNjaGFkaWdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJQb2dpbmcgdG90IHpldHRlbiB2YW4gYmxvay1iaXRrYWFydCBtZXQgb250YnJla2VuZCBpbmRpcmVjdCBibG9rIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6IGdlbHVrdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBkYXRhYmFuayBpcyBiZXNjaGFkaWdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA5Cittc2dpZCAiVERCOiBJTyBFcnJvciIKK21zZ3N0ciAiVERCOiBpbi0vdWl0dm9lcmZvdXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIlREQjogdmVyZ3JlbmRlbGluZ3Nmb3V0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTExCittc2dpZCAiVERCOiBPdXQgb2YgbWVtb3J5IgorbXNnc3RyICJUREI6IG9udm9sZG9lbmRlIGdlaGV1Z2VuIGJlc2NoaWtiYWFyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJUREI6IHJlY29yZCBiZXN0YWF0IGFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IGFuZGVyZSBzbGV1dGVscyB6aWpuIHZlcmdyZW5kZWxkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBvbmdlbGRpZ2UgcGFyYW1ldGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE1Cittc2dpZCAiVERCOiBSZWNvcmQgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIlREQjogcmVjb3JkIGJlc3RhYXQgbmlldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiVERCOiBzY2hyaWp2ZW4gaXMgbmlldCB0b2VnZXN0YWFuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICJFeHQyZnMtbWFwYmxva2tlbmxpanN0IGlzIGxlZWciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTgKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSBhIGJsb2NrIG1hcHBpbmcgdmlhIGEgcmVhZC1vbmx5IGJsb2NrIGl0ZXJhdG9yIgorbXNnc3RyICJQb2dpbmcgdG90IHdpanppZ2VuIHZhbiBibG9rdG9ld2lqemluZyB2aWEgZWVuIGFsbGVlbi1sZXplbiBpdGVyYXRvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCB2b29yIG9wZ2VzbGFnZW4gcGFkIHZhbiBFeHQ0LWV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgNjQtYml0IGdlbmVyaWVrZSBiaXRrYWFydCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCB2b29yIDY0LWJpdCBibG9rLWJpdGthYXJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIHZvb3IgNjQtYml0IGlub2RlLWJpdGthYXJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzEzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNyIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCAgLS0gIFJFU0VSVkVEXzE5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMwCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaGVhZGVyIgorbXNnc3RyICJFeHRlbnQtaGVhZGVyIGlzIGJlc2NoYWRpZ2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAiRXh0ZW50LWluZGV4IGlzIGJlc2NoYWRpZ2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAiRXh0ZW50IGlzIGJlc2NoYWRpZ2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIkdlZW4gdnJpamUgcnVpbXRlIG1lZXIgaW4gZXh0ZW50LWthYXJ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgIklub2RlIGdlYnJ1aWt0IGdlZW4gZXh0ZW50cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNQorbXNnaWQgIk5vICduZXh0JyBleHRlbnQiCittc2dzdHIgIkVyIGlzIGdlZW4gJ25leHQnIGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICJFciBpcyBnZWVuICdwcmV2aW91cycgZXh0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIkVyIGlzIGdlZW4gJ3VwJyBleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICJFciBpcyBnZWVuICdkb3duJyBleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIkVyIGlzIGdlZW4gaHVpZGlnZSBrbm9vcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiRXh0MmZzLWJld2Vya2luZyB3b3JkdCBuaWV0IG9uZGVyc3RldW5kIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQxCittc2dpZCAiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCittc2dzdHIgIkVyIGlzIGdlZW4gcnVpbXRlIG9tIGVlbiBleHRlbnQgaW4gZGUga25vb3AgaW4gdGUgdm9lZ2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICJTcGxpdHNlbiB6b3UgcmVzdWx0ZXJlbiBpbiBlZW4gbGVnZSBrbm9vcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MworbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIkV4dGVudCBuaWV0IGdldm9uZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIkJld2Vya2luZyB3b3JkdCBuaWV0IG9uZGVyc3RldW5kIHZvb3IgaW5vZGVzIGRpZSBleHRlbnRzIGJldmF0dGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICJFeHRlbnQtbGVuZ3RlIGlzIG9uZ2VsZGlnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiSW4tL3VpdHZvZXJrYW5hYWwgb25kZXJzdGV1bnQgZ2VlbiA2NC1iaXQgYmxva251bW1lcnMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisiS2FuIGdlZW4gY29udHJvbGUgdWl0dm9lcmVuIGFscyBoZXQgYmVzdGFuZHNzeXN0ZWVtIGFhbmdla29wcGVsZCBpc1xuIgorIndlZ2VucyBlZW4gb250YnJla2VuZCAnbXRhYictYmVzdGFuZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OAorbXNnaWQgIkZpbGVzeXN0ZW0gdG9vIGxhcmdlIHRvIHVzZSBsZWdhY3kgYml0bWFwcyIKK21zZ3N0ciAiQmVzdGFuZHNzeXN0ZWVtIGlzIHRlIGdyb290IG9tIG91ZGUgYml0a2FhcnRlbiB0ZSBrdW5uZW4gZ2VicnVpa2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBvbmdlbGRpZyBtYWdpc2NoIGdldGFsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUwCittc2dpZCAiTU1QOiBkZXZpY2UgY3VycmVudGx5IGFjdGl2ZSIKK21zZ3N0ciAiTU1QOiBhcHBhcmFhdCBpcyBtb21lbnRlZWwgYWN0aWVmIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiAnZnNjaycgd29yZHQgdWl0Z2V2b2VyZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IGJsb2tudW1tZXIgdmFsdCBidWl0ZW4gYmVyZWlrIHZhbiBiZXN0YW5kc3N5c3RlZW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIk1NUDogb25kZXJnYWF0IGVlbiBvbmJla2VuZGUgYmV3ZXJraW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU0Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAiTU1QOiBiZXN0YW5kc3N5c3RlZW0gaXMgbm9nIGluIGdlYnJ1aWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIk1NUDogb3BlbmVuIG1ldCAnT19ESVJFQ1QnIGlzIG1pc2x1a3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJHcm9vdHRlIHZhbiBibG9rZ3JvZXBzYmVzY2hyaWp2ZXIgaXMgb25qdWlzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJDb250cm9sZXNvbSB2YW4gaW5vZGUga29tdCBuaWV0IG92ZXJlZW4gbWV0IGlub2RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU4Cittc2dpZCAiSW5vZGUgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAiQ29udHJvbGVzb20gdmFuIGlub2RlLWJpdGthYXJ0IGtvbXQgbmlldCBvdmVyZWVuIG1ldCBiaXRrYWFydCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBleHRlbnQtYmxvayBrb210IG5pZXQgb3ZlcmVlbiBtZXQgZXh0ZW50LWJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIk1hcC1ibG9rIGhlZWZ0IGdlZW4gcnVpbXRlIHZvb3IgZWVuIGNvbnRyb2xlc29tIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAiQ29udHJvbGVzb20gdmFuIG1hcC1ibG9rIGtvbXQgbmlldCBvdmVyZWVuIG1ldCBtYXAtYmxvayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKK21zZ3N0ciAiQ29udHJvbGVzb20gdmFuIHVpdGdlYnJlaWRla2VubWVya2VuLWJsb2sga29tdCBuaWV0IG92ZXJlZW4gbWV0IGJsb2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBzdXBlcmJsb2sga29tdCBuaWV0IG92ZXJlZW4gbWV0IHN1cGVyYmxvayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NAorbXNnaWQgIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorbXNnc3RyICJPbmdlbGRpZyBjb250cm9sZXNvbS1hbGdvcml0bWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjUKK21zZ2lkICJNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrIgorbXNnc3RyICJDb250cm9sZXNvbSB2YW4gTU1QLWJsb2sga29tdCBuaWV0IG92ZXJlZW4gbWV0IE1NUC1ibG9rIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFeHQyLWJlc3RhbmQgYmVzdGFhdCBhbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIkNvbnRyb2xlc29tIHZhbiBibG9rLWJpdGthYXJ0IGtvbXQgbmlldCBvdmVyZWVuIG1ldCBiaXRrYWFydCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiVWl0Z2VicmVpZCBrZW5tZXJrIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgbGVuZ3RlIHZhbiBkZSBuYWFtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiVWl0Z2VicmVpZCBrZW5tZXJrIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgbGVuZ3RlIHZhbiBkZSB3YWFyZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICJVaXRnZWJyZWlkIGtlbm1lcmsgaGVlZnQgZWVuIG9uanVpc3RlIGhhc2giCisKKyMgQmVoYWx2ZSBFIGVuIEYgd29yZGVuIGRlIHZvbGdlbmRlIDMwIGxldHRlcmFma29ydGluZ2VuIG5pZXQgZ2VicnVpa3QuCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJVaXRnZWJyZWlka2VubWVya2Jsb2sgaGVlZnQgZWVuIG9uZ2VsZGlnZSBoZWFkZXIiCisKKyMgQmVoYWx2ZSBFIGVuIEYgd29yZGVuIGRlIHZvbGdlbmRlIDMwIGxldHRlcmFma29ydGluZ2VuIG5pZXQgZ2VicnVpa3QuCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTczCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGtleSBub3QgZm91bmQiCittc2dzdHIgIlVpdGdlYnJlaWRrZW5tZXJrc2xldXRlbCBpcyBuaWV0IGdldm9uZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzUKK21zZ2lkICJGaWxlc3lzdGVtIGlzIG1pc3NpbmcgZXh0X2F0dHIgb3IgaW5saW5lX2RhdGEgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiSW5vZGUgZ2VicnVpa3QgZ2VlbiBleHRlbnRzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc3Cittc2dpZCAiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorIywgZnV6enkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICJHZWVuIHZyaWplIHJ1aW10ZSBtZWVyIGluIGV4dGVudC1rYWFydCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgdm9vciBleHQyLWJlc3RhbmRzLXN0cnVjdHV1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MAorbXNnaWQgIklub2RlIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZSIKK21zZ3N0ciAiSW5vZGUgc2NoaWpudCByb21tZWwgdGUgYmV2YXR0ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICJVaXRnZWJyZWlkIGtlbm1lcmsgaGVlZnQgZWVuIG9uZ2VsZGlnZSBwb3NpdGllIHZhbiBkZSB3YWFyZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiSm91cm5hbC12bGFnZ2VuIHppam4gaW5jb25zaXN0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkhldCAndW5kbyctYmVzdGFuZCBpcyBiZXNjaGFkaWdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIk9uanVpc3QgJ3VuZG8nLWJlc3RhbmQgdm9vciBkaXQgYmVzdGFuZHNzeXN0ZWVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICJIZXQgYmVzdGFuZHNzeXN0ZWVtIGlzIGJlc2NoYWRpZ2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICJPbmp1aXN0ZSBDUkMgYWFuZ2V0cm9mZmVuIGluIGJlc3RhbmRzc3lzdGVlbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiSGV0IGpvdXJuYWwtc3VwZXJibG9rIGlzIGJlc2NoYWRpZ2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgaXMgY29ycnVwdGVkIgorbXNnc3RyICJEZSByZXNpemUtaW5vZGUgaXMgYmVzY2hhZGlnZCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIlByb2ZpbGUgIHZlcnNpZSAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJPbmdlbGRpZyBtYWdpc2NoIGdldGFsIGluICdwcm9maWxlX25vZGUnIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEzCittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiUHJvZmlsZS1zZWN0aWUgbmlldCBnZXZvbmRlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNAorbXNnaWQgIlByb2ZpbGUgcmVsYXRpb24gbm90IGZvdW5kIgorbXNnc3RyICJQcm9maWxlLXJlbGF0aWUgbmlldCBnZXZvbmRlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICIiCisiUG9naW5nIHRvdCBoZXQgdG9ldm9lZ2VuIHZhbiBlZW4gcmVsYXRpZSBhYW4gZWVuIGtub29wIGRpZSBnZWVuIHNlY3RpZSBpcyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiRWVuIHByb2ZpbGUtc2VjdGlla29wIGhlZWZ0IGVlbiB3YWFyZGUgZGllIG5pZXQgbnVsIGlzIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiT25nZWxkaWdlIGdla29wcGVsZGUgbGlqc3QgaW4gcHJvZmlsZS1zdHJ1Y3R1cmVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiT25nZWxkaWcgZ3JvZXBzbml2ZWF1IGluIHByb2ZpbGUtc3RydWN0dXJlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIk9uZ2VsZGlnZSBwb2ludGVyIG5hYXIgb3VkZXIgaW4gcHJvZmlsZS1zdHJ1Y3R1cmVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGUgaXRlcmF0b3IiCittc2dzdHIgIk9uZ2VsZGlnIG1hZ2lzY2ggZ2V0YWwgaW4gcHJvZmlsZS1pdGVyYXRvciIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMQorbXNnaWQgIkNhbid0IHNldCB2YWx1ZSBvbiBzZWN0aW9uIG5vZGUiCittc2dzdHIgIkthbiB3YWFyZGUgbmlldCBpbnN0ZWxsZW4gaW4gc2VjdGlla25vb3AiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIk9uZ2VsZGlnIGFyZ3VtZW50IGdlZ2V2ZW4gYWFuIFByb2ZpbGUtYmlibGlvdGhlZWsiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiUG9naW5nIHRvdCB3aWp6aWdlbiB2YW4gZWVuIGFsbGVlbi1sZXplbiBwcm9maWxlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICJQcm9maWxlLXNlY3RpZWtvcCBpcyBuaWV0IG9wIHRvcG5pdmVhdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICJTeW50YXhmb3V0IGluIHByb2ZpbGUtc2VjdGlla29wIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI2Cittc2dpZCAiU3ludGF4IGVycm9yIGluIHByb2ZpbGUgcmVsYXRpb24iCittc2dzdHIgIlN5bnRheGZvdXQgaW4gcHJvZmlsZS1yZWxhdGllIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJPdmVydG9sbGlnZSBzbHVpdGFjY29sYWRlIGluIHByb2ZpbGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiT250YnJla2VuZGUgb3BlbmluZ3NhY2NvbGFkZSBpbiBwcm9maWxlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCBpbiAncHJvZmlsZV90JyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3NlY3Rpb25fdCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCBpbiAncHJvZmlsZV9zZWN0aW9uX3QnIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkRvb3Jsb3BlbiB2YW4gYWxsZSB0b3BuaXZlYXUtc2VjdGllcyB3b3JkdCBuaWV0IG9uZGVyc3RldW5kIgorCisjIERpdCBnYWF0IG92ZXIgaGV0IGFyZ3VtZW50IHZhbiBvcHRpZSAtTy4KKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzIKK21zZ2lkICJJbnZhbGlkIHByb2ZpbGVfc2VjdGlvbiBvYmplY3QiCittc2dzdHIgIk9uZ2VsZGlnICdwcm9maWxlX3NlY3Rpb24nLW9iamVjdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMworbXNnaWQgIk5vIG1vcmUgc2VjdGlvbnMiCittc2dzdHIgIkVyIHppam4gZ2VlbiB2ZXJkZXJlIHNlY3RpZXMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzQKK21zZ2lkICJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK21zZ3N0ciAiT25nZWxkaWdlIG5hYW1zZXQgZ2VnZXZlbiBhYW4gYmV2cmFnaW5nc3JvdXRpbmUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAiRXIgaXMgZ2VlbiBvcGVuIHByb2ZpbGUtYmVzdGFuZCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfdCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCBpbiAncHJvZmlsZV9maWxlX3QnIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM3Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgIkthbiBwcm9maWxlLWJlc3RhbmQgbmlldCBvcGVuZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJTZWN0aWUgYmVzdGFhdCBhbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAiT25nZWxkaWdlIGJvb2xlYWFuc2Ugd2FhcmRlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICJPbmdlbGRpZyBnZWhlZWwgZ2V0YWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiT25nZWxkaWcgbWFnaXNjaCBnZXRhbCBpbiAncHJvZmlsZV9maWxlX2RhdGFfdCciCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHRsYWF0c3QgYWFuZ2Vrb3BwZWxkIG9wICVzIG9wICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMiCittc2dzdHIgIlx0bGFhdHN0IGFhbmdla29wcGVsZCBvcCAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0Y3JlYXRlZCBvbiAlcyIKK21zZ3N0ciAiXHRhYW5nZW1hYWt0IG9wICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vZGlmaWVkIG9uICVzIgorbXNnc3RyICJcdGxhYXRzdCBnZXdpanppZ2Qgb3AgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIgorbXNnc3RyICJFciBpcyBlZW4gJXMtcGFydGl0aWV0YWJlbCBnZXZvbmRlbiBpbiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiQmVzdGFuZCAlcyBiZXN0YWF0IG5pZXQgZW4gZXIgaXMgZ2VlbiBncm9vdHRlIG9wZ2VnZXZlbi5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICJBYW5tYWtlbiB2YW4gbm9ybWFhbCBiZXN0YW5kICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiS2FuICVzIG5pZXQgb3BlbmVuOiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiSGV0IGFwcGFyYWF0IGJlc3RhYXQgYmxpamtiYWFyIG5pZXQ7IGhlZWZ0IHUgaGV0IGp1aXN0IG9wZ2VnZXZlbj9cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBpcyBnZWVuIGJsb2stYXBwYXJhYXQuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgYmV2YXQgZWVuICVzLWJlc3RhbmRzc3lzdGVlbSBtZXQgbGFiZWwgJyVzJ1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIlcyBiZXZhdCBlZW4gJXMtYmVzdGFuZHNzeXN0ZWVtXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgYmV2YXQgJyVzJy1nZWdldmVuc1xuIgorCisjfiBtc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCisjfiBtc2dzdHIgIkNvbnRyb2xlZXIgaGV0IGJlc3RhbmRzc3lzdGVlbSBtZXQgJ2UyZnNjaycuXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICIiCisjfiAiSW5vZGUgJWkgaGVlZnQgZGUgY29tcHJlc3NpZXZsYWcgZ2V6ZXQgb3AgZWVuIGJlc3RhbmRzc3lzdGVlbSB6b25kZXIgIgorI34gImNvbXByZXNzaWUtb25kZXJzdGV1bmluZy4gICIKKworI34gbXNnaWQgIkBBIEBhIEBiICViLiAgIgorI34gbXNnc3RyICJGb3V0IHRpamRlbnMgcmVzZXJ2ZXJlbiB2YW4gYmxvayAlYiBtZXQgdWl0Z2VicmVpZGUga2VubWVya2VuLiAgIgorCisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICIlczogV2FhcnNjaHV3aW5nOiBjb21wcmVzc2llLW9uZGVyc3RldW5pbmcgaXMgbm9nIGV4cGVyaW1lbnRlZWwuXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IGUyZnNjayBub3QgY29tcGlsZWQgd2l0aCBIVFJFRSBzdXBwb3J0LFxuIgorI34gIlx0YnV0IGZpbGVzeXN0ZW0gJXMgaGFzIEhUUkVFIGRpcmVjdG9yaWVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IERlemUgJ2UyZnNjaycgaXMgbmlldCBnZWNvbXBpbGVlcmQgbWV0ICdodHJlZSctb25kZXJzdGV1bmluZyxcbiIKKyN+ICIgICAgbWFhciBoZXQgYmVzdGFuZHNzeXN0ZWVtICVzIGJldmF0ICdodHJlZSctbWFwcGVuLlxuIgorCisjfiBtc2dpZCAid2hpbGUgYWxsb2NhdGluZyB6ZXJvaXppbmcgYnVmZmVyIgorI34gbXNnc3RyICJ0aWpkZW5zIHJlc2VydmVyZW4gdmFuIG51bG1ha2luZ3NidWZmZXIiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCAldSBvbmdlYnJ1aWt0ZSBpbm9kZXNcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0byByZWFkIHRoZSBmaWxlIHN5c3RlbSBkYXRhIFxuIgorI34gbXNnc3RyICJMZXplbiB2YW4gYmVzdGFuZHNzeXN0ZWVtZ2VnZXZlbnMgaXMgbWlzbHVrdCBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfZmV0Y2ggJXNcbiIKKyN+IG1zZ3N0ciAiTGV6ZW4gdmFuIHRyYW5zYWN0aWVnZWdldmVucyBpcyBtaXNsdWt0OiAlc1xuIgorCisjfiBtc2dpZCAiVGhlIGZpbGUgc3lzdGVtIFVVSUQgZGlkbid0IG1hdGNoIFxuIgorI34gbXNnc3RyICIiCisjfiAiVVVJRCdzIHZhbiBiZXN0YW5kc3N5c3RlZW0gZW4gdWl0IHRyYW5zYWN0aWViZXN0YW5kIGtvbWVuIG5pZXQgb3ZlcmVlblxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgIk9wZW5lbiB2YW4gdHJhbnNhY3RpZWJlc3RhbmQgJXMgaXMgbWlzbHVrdFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIKKyN+IG1zZ3N0ciAiT3BlbmVuIHZhbiAlcyBpcyBtaXNsdWt0XG4iCisKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgIkVlbiB0cmFuc2FjdGllIG1ldCBncm9vdHRlICV6ZCBpcyBhZmdlc3BlZWxkIG9wIGxvY2F0aWUgJWxsdS5cbiIKKworI34gbXNnaWQgIkZhaWxlZCB3cml0ZSAlc1xuIgorI34gbXNnc3RyICJTY2hyaWp2ZW4gaXMgbWlzbHVrdDogJXNcbiIKKworI34gbXNnaWQgIkludmFsaWQgcXVvdGF0eXBlIHBhcmFtZXRlcjogJXNcbiIKKyN+IG1zZ3N0ciAiT25nZWxkaWcgYXJndW1lbnQgdmFuICdxdW90YXR5cGUnOiAlc1xuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIHF1b3RhIG9wdGlvbnMhXG4iCisjfiBtc2dzdHIgIkthbiBnZWVuIGdlaGV1Z2VuIHJlc2VydmVyZW4gb20gcXVvdGEtb3B0aWVzIHRlIG9udGxlZGVuIVxuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZGIgZmlsZW5hbWVcbiIKKyN+IG1zZ3N0ciAiS2FuIGdlZW4gZ2VoZXVnZW4gcmVzZXJ2ZXJlbiB2b29yICd0ZGInLWJlc3RhbmRzbmFhbVxuIgorCisjfiBtc2dpZCAiIgorI34gIlRvIHVuZG8gdGhlIHR1bmUyZnMgb3BlcmF0aW9uIHBsZWFzZSBydW4gdGhlIGNvbW1hbmRcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJEZSB2ZXJhbmRlcmluZ2VuIGRpZSBkb29yICd0dW5lMmZzJyBnZW1hYWt0IHppam5cbiIKKyN+ICJrdW5uZW4gb25nZWRhYW4gZ2VtYWFrdCB3b3JkZW4gbWV0IGRlIG9wZHJhY2h0OlxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIiVzIGlzIGVudGlyZSBkZXZpY2UsIG5vdCBqdXN0IG9uZSBwYXJ0aXRpb24hXG4iCisjfiBtc2dzdHIgIiVzIGlzIGhldCBoZWxlIGFwcGFyYWF0LCBuaWV0IHNsZWNodHMgZWVuIHBhcnRpdGllIVxuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIldhcm5pbmc6IHRoZSBxdW90YSBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisjfiAiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL1F1b3RhIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICJXYWFyc2NodXdpbmc6IGRlICdxdW90YSctZnVuY3RpZSBpcyBub2cgaW4gb250d2lra2VsaW5nLlxuIgorI34gIlppZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9RdW90YSB2b29yIG1lZXIgaW5mb3JtYXRpZS5cbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIkNvdWxkIG5vdCBzdGF0ICVzIC0tLSAlc1xuIgorI34gbXNnc3RyICJLYW4gZGUgc3RhdHVzIHZhbiAlcyBuaWV0IG9wdnJhZ2VuIC0tICVzXG4iCisKKyN+IG1zZ2lkICJDbGVhcmluZyBleHRlbnQgZmxhZyBub3Qgc3VwcG9ydGVkIG9uICVzIgorI34gbXNnc3RyICIiCisjfiAiSGV0IHVpdHpldHRlbiB2YW4gZGUgJ2V4dGVudCctZnVuY3RpZXZsYWcgd29yZHQgbmlldCBvbmRlcnN0ZXVuZCBvcCAlcyIKKworI34gbXNnaWQgIiIKKyN+ICIlczogVGhlIGNvbWJpbmF0aW9uIG9mIGZsZXhfYmcgYW5kXG4iCisjfiAiXHQhcmVzaXplX2lub2RlIGZlYXR1cmVzIGlzIG5vdCBzdXBwb3J0ZWQgYnkgcmVzaXplMmZzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IERlIGZ1bmN0aWUgJ2ZsZXhfYmcnIHpvbmRlciBkZSBmdW5jdGllICdyZXNpemVfaW5vZGUnXG4iCisjfiAiICAgIHdvcmR0IGRvb3IgJ3Jlc2l6ZTJmcycgbmlldCBvbmRlcnN0ZXVuZC5cbiIKKworI34gbXNnaWQgIkBnICVnIEBiIEBCIHVuaW5pdGlhbGl6ZWQgYnV0IEBpIEBCIGluIHVzZS5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIkdyb2Vwc2Jlc2NocmlqdmVyICVnIGhlZWZ0IGVlbiBvbmdlw69uaXRpYWxpc2VlcmRlIGJsb2stYml0a2FhcnQgbWFhciBkZSAiCisjfiAiaW5vZGUtYml0a2FhcnQgaXMgaW4gZ2VicnVpay5cbiIKKworI34gbXNnaWQgIkBpICVpIHNob3VsZCBub3QgaGF2ZSBFT0ZCTE9DS1NfRkwgc2V0IChzaXplICVJcywgbGJsayAlcilcbiIKKyN+IG1zZ3N0ciAiIgorI34gIklub2RlICVpIHpvdSBuaWV0IGRlICdFT0ZCTE9DS1NfRkwnLXZsYWcgZ2V6ZXQgbW9ldGVuIGhlYmJlbiAoZ3Jvb3R0ZSAiCisjfiAiJUlzLCBsYmxrICVyKVxuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgZGV0ZXJtaW5lIGpvdXJuYWwgc2l6ZSIKKyN+IG1zZ3N0ciAiS2FuIGpvdXJuYWwtZ3Jvb3R0ZSBuaWV0IGJlcGFsZW4iCisKKyN+IG1zZ2lkICJNaXNzaW5nIGluZGlyZWN0IGJsb2NrIG5vdCBwcmVzZW50IgorI34gbXNnc3RyICJPbnRicmVrZW5kIGluZGlyZWN0IGJsb2sgaXMgYWZ3ZXppZyIKKworI34gbXNnaWQgIjxUaGUgQUNMIGluZGV4IGlub2RlPiIKKyN+IG1zZ3N0ciAiPGRlIEFDTC1pbmRleC1pbm9kZT4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBkYXRhIGlub2RlPiIKKyN+IG1zZ3N0ciAiPGRlIEFDTC1kYXRhLWlub2RlPiIKKworI34gbXNnaWQgInNob3J0IHdyaXRlIChvbmx5ICVkIGJ5dGVzKSBmb3Igd3JpdGluZyBpbWFnZSBoZWFkZXIiCisjfiBtc2dzdHIgIm9udm9sbGVkaWcgYmxvayAoc2xlY2h0cyAlZCBieXRlcykgdGlqZGVucyBzY2hyaWp2ZW4gdmFuIGltYWdlLWtvcCIKKworI34gbXNnaWQgImludmFsaWQgZnJhZ21lbnQgc2l6ZSAtICVzIgorI34gbXNnc3RyICJvbmdlbGRpZ2UgZnJhZ21lbnRncm9vdHRlOiAlcyIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJXYWFyc2NodXdpbmc6IGZyYWdtZW50ZW4gd29yZGVuIG5pZXQgb25kZXJzdGV1bmQ7IG9wdGllICctZicgd29yZHQgIgorI34gImdlbmVnZWVyZFxuIgorCisjfiBtc2dpZCAiQ2FsbGluZyBCTEtESVNDQVJEIGZyb20gJWxsdSB0byAlbGx1ICIKKyN+IG1zZ3N0ciAiQWFucm9lcGVuIHZhbiBCTEtESVNDQVJEIHZhbiAlbGx1IHRvdCAlbGx1ICIKKworI34gbXNnaWQgInN1Y2NlZWRlZC5cbiIKKyN+IG1zZ3N0ciAiaXMgZ2VzbGFhZ2QuXG4iCisKKyN+IG1zZ2lkICJKb3VybmFsIE5PVCByZW1vdmVkXG4iCisjfiBtc2dzdHIgIkpvdXJuYWwgaXMgTklFVCB2ZXJ3aWpkZXJkLlxuIgorCisjfiBtc2dpZCAiQFMgZG9lc24ndCBoYXZlIGhhc19AaiBmbGFnLCBidXQgaGFzIGV4dDMgQGogJXMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTdXBlcmJsb2sgaGVlZnQgam91cm5hbC12bGFnIG5pZXQgZ2V6ZXQsIG1hYXIgaGVlZnQgd2VsIGVlbiBleHQzLWpvdXJuYWwgIgorI34gIiVzLlxuIgorCisjfiBtc2dpZCAiUmVjcmVhdGUgam91cm5hbCB0byBtYWtlIHRoZSBmaWxlc3lzdGVtIGV4dDMgYWdhaW4/XG4iCisjfiBtc2dzdHIgIiIKKyN+ICJIZXQgam91cm5hbCBoZXJhYW5tYWtlbiBvbSBoZXQgYmVzdGFuZHNzeXN0ZWVtIHdlZXIgZXh0MyB0ZSBtYWtlbj9cbiIKKworI34gbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHdyaXRlIGJsb2NrIGJpdG1hcHMgZm9yICVzIgorI34gbXNnc3RyICJ0aWpkZW5zIGhlcnNjaHJpanZlbiB2YW4gYmxvay1iaXRrYWFydGVuIHZvb3IgJXMiCisKKyN+IG1zZ2lkICIlcyBmYWlsZWQgZm9yICVzOiAlc1xuIgorI34gbXNnc3RyICIlcyBpcyBtaXNsdWt0IHZvb3IgJXM6ICVzXG4iCisKKyN+IG1zZ2lkICJIRElPX0dFVEdFTyBpb2N0bCIKKyN+IG1zZ3N0ciAiT3B2cmFnZW4gdmFuIGdlb21ldHJpZSIKKworI34gbXNnaWQgIkJMS0dFVFNJWkUgaW9jdGwiCisjfiBtc2dzdHIgIk9wdnJhZ2VuIHZhbiBncm9vdHRlIgorCisjfiBtc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJFZW4gdWl0Z2VicmVpZCBrZW5tZXJrIGluIGlub2RlICVpIGhlZWZ0IGVlbiBvbmdlbGRpZ2UgaGFzaHdhYXJkZSAoJU4sICIKKyN+ICJtb2V0IDAgemlqbikuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBjYWxsaW5nIGl0ZXJhdG9yIGZ1bmN0aW9uIgorI34gbXNnc3RyICJ0aWpkZW5zIGFhbnJvZXAgdmFuIGl0ZXJhdG9yLWZ1bmN0aWUiCisKKyN+IG1zZ2lkICJQYXNzIDA6IERvaW5nIGJ5dGUtc3dhcCBvZiBmaWxlc3lzdGVtXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJTdGFwIDA6IE9td2lzc2VsaW5nIHZhbiBob2dlIGVuIGxhZ2UgYnl0ZXMgaW4gaGVsZSBiZXN0YW5kc3N5c3RlZW1cbiIKKworI34gbXNnaWQgIiIKKyN+ICIlczogdGhlIGZpbGVzeXN0ZW0gbXVzdCBiZSBmcmVzaGx5IGNoZWNrZWQgdXNpbmcgZnNja1xuIgorI34gImFuZCBub3QgbW91bnRlZCBiZWZvcmUgdHJ5aW5nIHRvIGJ5dGUtc3dhcCBpdC5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiBoZXQgYmVzdGFuZHNzeXN0ZWVtIGRpZW50IG9wbmlldXcgZ2Vjb250cm9sZWVyZCB0ZSB3b3JkZW4gbWV0ICdmc2NrJ1xuIgorI34gImVuIG5pZXQgYWFuZ2Vrb3BwZWxkIHRlIHdvcmRlbiB2b29yZGF0IGRlIGJ5dGUtb213aXNzZWxpbmcgZ2ViZXVyZCBpcy5cbiIKKworI34gbXNnaWQgIkJ5dGUgc3dhcCIKKyN+IG1zZ3N0ciAiQnl0ZS1vbXdpc3NlbGluZyIKKworI34gbXNnaWQgIkJ5dGUtc3dhcHBpbmcgZmlsZXN5c3RlbXMgbm90IGNvbXBpbGVkIGluIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2tcbiIKKyN+IG1zZ3N0ciAiQnl0ZS1vbXdpc3NlbGluZyBpcyBuaWV0IG1vZ2VsaWprIG1ldCBkZXplIHZlcnNpZSB2YW4gZTJmc2NrLlxuIgorCisjfiBtc2dpZCAiSW5jb21wYXRpYmxlIG9wdGlvbnMgbm90IGFsbG93ZWQgd2hlbiBieXRlLXN3YXBwaW5nLlxuIgorI34gbXNnc3RyICJCaWogYnl0ZS1vbXdpc3NlbGluZyB6aWpuIGJvdHNlbmRlIG9wdGllcyBuaWV0IHRvZWdlc3RhYW4uXG4iCisKKyN+IG1zZ2lkICIlczogRmlsZXN5c3RlbSBieXRlIG9yZGVyIGFscmVhZHkgbm9ybWFsaXplZC5cbiIKKyN+IG1zZ3N0ciAiJXM6IGJ5dGV2b2xnb3JkZSB2YW4gYmVzdGFuZHNzeXN0ZWVtIGlzIGFsIGdlbm9ybWFsaXNlZXJkLlxuIgorCisjfiBtc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAtICVzIgorI34gbXNnc3RyICJvbmdlbGRpZyBiZWdpbmJsb2s6ICVzIgorCisjfiBtc2dpZCAiTm90ZTogVGhpcyBpcyBhIGJ5dGUtc3dhcHBlZCBmaWxlc3lzdGVtXG4iCisjfiBtc2dzdHIgIk9wbWVya2luZzogZGl0IGlzIGVlbiBieXRlLXZlcndpc3NlbGQgYmVzdGFuZHNzeXN0ZWVtLlxuIgorCisjfiBtc2dpZCAiIgorI34gIkZpbGVzeXN0ZW0gdG9vIGxhcmdlLiAgTm8gbW9yZSB0aGFuIDIqKjMxLTEgYmxvY2tzXG4iCisjfiAiXHQgKDhUQiB1c2luZyBhIGJsb2Nrc2l6ZSBvZiA0aykgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQuIgorI34gbXNnc3RyICIiCisjfiAiQmVzdGFuZHNzeXN0ZWVtIGlzIHRlIGdyb290LiAgTW9tZW50ZWVsIHppam4gbmlldCBtZWVyIGRhblxuIgorI34gIjIqKjMxLTEgYmxva2tlbiBtb2dlbGlqayAoOFRCIGJpaiBlZW4gYmxva2dyb290dGUgdmFuIDRLKS4iCisKKyN+IG1zZ2lkICIiCisjfiAiXG4iCisjfiAiV2FybmluZzogc29tZSAyLjQga2VybmVscyBkbyBub3Qgc3VwcG9ydCBibG9ja3NpemVzIGdyZWF0ZXIgdGhhbiA0MDk2XG4iCisjfiAiXHR1c2luZyBleHQzLiAgVXNlIC1iIDQwOTYgaWYgdGhpcyBpcyBhbiBpc3N1ZSBmb3IgeW91LlxuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAiV2FhcnNjaHV3aW5nOiBzb21taWdlIDIuNC1rZXJuZWxzIG9uZGVyc3RldW5lbiB2b29yIGV4dDMgZ2VlblxuIgorI34gImJsb2tncm9vdHRlcyBncm90ZXIgZGFuIDQwOTYuICBHZWJydWlrIGluIGRhdCBnZXZhbCAnLWIgNDA5NicuXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICJXYXJuaW5nOiAlZC1ieXRlIGlub2RlcyBub3QgdXNhYmxlIG9uIG9sZGVyIHN5c3RlbXNcbiIKKyN+IG1zZ3N0ciAiIgorI34gIldhYXJzY2h1d2luZzogaW5vZGVzIHZhbiAlZCBieXRlcyB6aWpuIG9uYnJ1aWtiYWFyIG9wIG91ZGVyZSBzeXN0ZW1lblxuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3BsLmdtbyBiL2UyZnNwcm9ncy9wby9wbC5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1YzUxYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9wbC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3BsLnBvIGIvZTJmc3Byb2dzL3BvL3BsLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZWQ5MjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vcGwucG8KQEAgLTAsMCArMSw4NDA3IEBACisjIFBvbGlzaCB0cmFuc2xhdGlvbiBmb3IgZTJmc3Byb2dzLgorIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgVGhlb2RvcmUgVHNvIChtc2dpZHMpCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMgSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLWxpbnV4Lm9yZz4sIDIwMDItMjAxNi4KKyMKKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40My4xXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA3LTA2IDE1OjMwKzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC1saW51eC5vcmc+XG4iCisiTGFuZ3VhZ2UtVGVhbTogUG9saXNoIDx0cmFuc2xhdGlvbi10ZWFtLXBsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKKyJMYW5ndWFnZTogcGxcbiIKKyJNSU1FLVZlcnNpb246IDEuMFxuIgorIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKKyJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTM7IHBsdXJhbD0obj09MSA/IDAgOiBuJTEwPj0yICYmIG4lMTA8PTQgJiYgKG4lMTAwPDEwICIKKyJ8fCBuJTEwMD49MjApID8gMSA6IDIpO1xuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAiV2FkbGl3eSBibG9rICV1IHBvemEgemFrcmVzZW0gLSB6aWdub3Jvd2FueS5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJwb2RjemFzIHNwcmF3ZHphbmlhIHBvcHJhd25vxZtjaSBpLXfEmXrFgmEgd2FkbGl3eWNoIGJsb2vDs3ciCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo1OAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInBvZGN6YXMgb2Rjenl0dSBpLXfEmXrFgmEgd2FkbGl3eWNoIGJsb2vDs3ciCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBvdHdvcnplbmlhICVzIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgInBvZGN6YXMgcHLDs2J5IHBvcGVuICclcyciCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAicG9kY3phcyB3Y3p5dHl3YW5pYSB6IHBsaWt1IGxpc3R5IHdhZGxpd3ljaCBibG9rw7N3IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTA1Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJwb2RjemFzIHVha3R1YWxuaWFuaWEgaS13xJl6xYJhIHdhZGxpd2VnbyBibG9rdSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIiIKKyJVd2FnYTogem5hbGV6aW9ubyBuaWVkb3B1c3pjemFsbnkgYmxvayAldSB3IGktd8SZxbpsZSB3YWRsaXdlZ28gYmxva3UuICIKKyJXeWN6eXN6Y3pvbm8uXG4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkLFgsSFZCBwcnp5IG9kY3p5Y2llIGJsb2t1ICVsdSAoJXMpIHBvZGN6YXMgJXMuICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiQsWCxIVkIHByenkgb2RjenljaWUgYmxva3UgJWx1ICglcykuICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjYgZTJmc2NrL2VoYW5kbGVyLmM6MTE1Cittc2dpZCAiSWdub3JlIGVycm9yIgorbXNnc3RyICJaaWdub3Jvd2HEhyBixYLEhWQiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAiV3ltdXNpxIcgcG9ub3dueSB6YXBpcyIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkLFgsSFZCBwcnp5IHphcGlzaWUgYmxva3UgJWx1ICglcykgcG9kY3phcyAlcy4gIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiQsWCxIVkIHByenkgemFwaXNpZSBibG9rdSAlbHUgKCVzKS4gIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAicHVzdGUgYmxva2kga2F0YWxvZ3UiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAicHVzdGEgbWFwYSBrYXRhbG9ndSIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCittc2dzdHIgIlB1c3R5IGJsb2sga2F0YWxvZ3UgJXUgKCMlZCkgdyBpLXfEmcW6bGUgJXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczogJXMgbmF6d2FfcGxpa3UgbGljemJhX2Jsb2vDs3cgcm96bWlhcl9ibG9rdVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIgorbXNnc3RyICJOaWVkb3B1c3pjemFsbmEgbGljemJhIGJsb2vDs3chXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgcHJ6eWR6aWVsacSHIGJ1Zm9yYSBibG9rdSAocm96bWlhcj0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBpLXfEmXrFgsOzdyBkbyBwcnplYnVkb3d5IGVrc3RlbnR1IgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiU2vFgmFkbmlhOiAlcyBkeXNrXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgImlvY3RsIEJMS0ZMU0JVRiBuaWUgb2JzxYJ1Z2l3YW55ISBOaWUgbW/FvG5hIG9wcsOzxbxuacSHIGJ1Zm9yw7N3LlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1GXSBbLUkgaW5vZGVfYnVmZmVyX2Jsb2Nrc10gZGV2aWNlXG4iCittc2dzdHIgIlNrxYJhZG5pYTogJXMgWy1GXSBbLUkgYmxva2lfYnVmb3JhX2ktd8SZesWCw7N3XSB1cnrEhWR6ZW5pZVxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgInBvZGN6YXMgb3R3aWVyYW5pYSAlcyB3IGNlbHUgb3Byw7PFvG5pZW5pYSIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAicG9kY3phcyBwcsOzYnkgb3Byw7PFvG5pZW5pYSAlcyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciCittc2dzdHIgInBvZGN6YXMgcHLDs2J5IG90d2FyY2lhICclcyciCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAicG9kY3phcyBvdHdpZXJhbmlhIG9icmF6dSBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgInBvZGN6YXMgcG9iaWVyYW5pYSBuYXN0xJlwbmVnbyBpLXfEmXrFgmEiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiUHJ6ZXN6dWthbm8gaS13xJl6xYLDs3c6ICV1LlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjU5MworbXNnaWQgInJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIm9kY3p5dCBzdXBlcmJsb2t1IGtyb25pa2lcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlczogbmllIHpuYWxlemlvbm8gcG9wcmF3bmVnbyBzdXBlcmJsb2t1IGtyb25pa2lcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iCittc2dzdHIgIiVzOiBrcm9uaWthIHphIGtyw7N0a2FcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiBvZHR3YXJ6YW5pZSB6IGtyb25pa2lcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiIKKyIlczogb2R0d29yemVuaWUgeiBrcm9uaWtpIG5pZSB6b3N0YW5pZSB3eWtvbmFuZSB3IHRyeWJpZSB0eWxrbyBkbyBvZGN6eXR1XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBwb25vd25lZ28gb3R3YXJjaWEgJXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTEzCittc2dpZCAiYWV4dGVuZGVkIGF0dHJpYnV0ZSIKK21zZ3N0ciAiYXJvenN6ZXJ6b255IGF0cnlidXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFixYLEhWQgcG9kY3phcyBwcnp5ZHppZWxhbmlhIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNQorbXNnaWQgImJibG9jayIKK21zZ3N0ciAiYmJsb2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQmJpdG1hcGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE3Cittc2dpZCAiY2NvbXByZXNzIgorbXNnc3RyICJja29tcHJlc2phIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDa29uZmxpa3QgeiBpbm55bSBAYmllbSBzeXN0ZW11IHBsaWvDs3ciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE5Cittc2dpZCAiZGRpcmVjdG9yeSIKK21zZ3N0ciAiZGthdGFsb2ciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkR1c3VuacSZdHkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIxCittc2dpZCAiZWVudHJ5IgorbXNnc3RyICJld3BpcyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjIKK21zZ2lkICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKK21zZ3N0ciAiRUBlICclRG4nIHcgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZnN5c3RlbSBwbGlrw7N3IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRmRsYSBpLXfEmXrFgmEgJWkgKCVRKSB3eW5vc2kiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICJnZ3J1cGEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoQGkgQGR1IEhUUkVFIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNworbXNnaWQgImlpbm9kZSIKK21zZ3N0ciAiaWktd8SZemXFgiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAiSW5pZWRvcHVzemN6YWxueSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAiamtyb25pa2EiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImxsb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMQorbXNnaWQgIkxpcyBhIGxpbmsiCittc2dzdHIgIkxqZXN0IGRvd2nEhXphbmllbSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibXdpZWxva3JvdG5pZSB6YWRla2xhcm93YW55IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICJuYsWCxJlkbnkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJvb3NpZXJvY29ueSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicHByb2JsZW0gdyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFsaW1pdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAicmfFgsOzd255IEBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInNwb3dpbm5vIGJ5xIciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIlNzdXBlckBiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MAorbXNnaWQgInV1bmF0dGFjaGVkIgorbXNnc3RyICJ1bmllZG/FgsSFY3pvbnkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidnVyesSFZHplbmllIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgInhla3N0ZW50IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAienplcm93ZWogZMWCdWdvxZtjaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8cHVzdHkgaS13xJl6ZcWCPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8aS13xJl6ZcWCIHdhZGxpd3ljaCBibG9rw7N3PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8aS13xJl6ZcWCIGxpbWl0w7N3IHXFvHl0a293bmlrw7N3PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPGktd8SZemXFgiBsaW1pdMOzdyBncnVwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiPGktd8SZemXFgiBib290LWxvYWRlcmE+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPGktd8SZemXFgiBrYXRhbG9ndSB1bmRlbGV0ZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPGktd8SZemXFgiBkZXNrcnlwdG9yYSBncnVweT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPGktd8SZemXFgiBrcm9uaWtpPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjx6YXJlemVyd293YW55IGktd8SZemXFgiA5PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjQKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgMTA+IgorbXNnc3RyICI8emFyZXplcndvd2FueSBpLXfEmXplxYIgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAicGxpayB6d3lrxYJ5IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAia2F0YWxvZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzcKK21zZ2lkICJjaGFyYWN0ZXIgZGV2aWNlIgorbXNnc3RyICJ1cnrEhWR6ZW5pZSB6bmFrb3dlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAidXJ6xIVkemVuaWUgYmxva293ZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICJuYXp3YW55IHBvdG9rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgImRvd2nEhXphbmllIHN5bWJvbGljem5lIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NSBtaXNjL3V1aWRkLmM6MTYyCittc2dpZCAic29ja2V0IgorbXNnc3RyICJnbmlhemRvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJuaWV6bmFueSByb2R6YWogcGxpa3UgdHlwdSAwJW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb2sgcG/Fm3JlZG5pIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiYmxvayBwb2R3w7NqbmllIHBvxZtyZWRuaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImJsb2sgcG90csOzam5pZSBwb8WbcmVkbmkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAiYmxvayB0xYJ1bWFjesSFY3kiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAiYmxvayAjIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgIndpZWxva3JvdG5pZSB6YWRla2xhcm93YW5hIG1hcGEgaS13xJl6xYLDs3ciCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgImLFgsSFZCB3ZXduxJl0cnpueTsgbmllIG1vxbxuYSB6bmFsZcW6xIcgZHVwX2JsayBkbGEgJWxsdVxuIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTAzCittc2dpZCAicmV0dXJuZWQgZnJvbSBjbG9uZV9maWxlX2Jsb2NrIgorbXNnc3RyICJwb3dyw7N0IHogY2xvbmVfZmlsZV9ibG9jayIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiYsWCxIVkIHdld27EmXRyem55OiBuaWUgbW/FvG5hIHpuYWxlxbrEhyByZWtvcmR1IGJsb2t1IEVBIGRsYSAlbGx1IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiQsWCxIVkIHdld27EmXRyem55OiBuaWUgbW/FvG5hIHpuYWxlxbrEhyByZWtvcmR1IGktd8SZesWCYSBFQSBkbGEgJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjY2NiBlMmZzY2svcGFzczIuYzo5NzAKK21zZ2lkICJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAib2Rjenl0dSBibG9rdSBrYXRhbG9ndSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgdcW8eXdhbnljaCBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgaS13xJl6xYLDs3cga2F0YWxvZ8OzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIm1hcGEgaS13xJl6xYLDs3cgend5a8WCeWNoIHBsaWvDs3ciCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgIm1hcGEgdcW8eXdhbnljaCBibG9rw7N3IgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIGJsb2vDs3cgbWV0YWRhbnljaCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAicm96cG9jenluYW5pYSBwcnplc3p1a2l3YW5pYSBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTI0NworbXNnaWQgImdldHRpbmcgbmV4dCBpbm9kZSBmcm9tIHNjYW4iCittc2dzdHIgInBvYmllcmFuaWEgbmFzdMSZcG5lZ28gaS13xJl6xYJhIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICJQcnplYmllZyAxIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgInJlYWRpbmcgaW5kaXJlY3QgYmxvY2tzIG9mIGlub2RlICV1IgorbXNnc3RyICJvZGN6eXR1IG5pZWJlenBvxZtyZWRuaWNoIGJsb2vDs3cgaS13xJl6xYJhICV1IgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAiYsWCxJlkbmEgbWFwYSBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgImktd8SZemXFgiB3IG1hcGllIHdhZGxpd3ljaCBibG9rw7N3IgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAibWFwYSBpLXfEmXrFgsOzdyBpbWFnaWMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAid2llbG9rcm90bmllIHphZGVrbGFyb3dhbmEgbWFwYSBibG9rw7N3IgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICJtYXBhIGJsb2vDs3cgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3IgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IG9jemVraXdhbm8gJTZsdSwgb3RyenltYW5vIHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MjcKK21zZ2lkICJibG9jayBiaXRtYXAiCittc2dzdHIgImJpdG1hcGEgYmxva8OzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAiYml0bWFwYSBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJ0YWJsaWNhIGktd8SZesWCw7N3IgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIlByemViaWVnIDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJOaWUgbW/FvG5hIGtvbnR5bnVvd2HEhy4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgImJpdG1hcGEgd3lrb25hbnljaCBpLXfEmXrFgsOzdyIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiTmFqd2nEmWtzemUgdcW8eWNpZSBwYW1pxJljaSIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJQcnplYmllZyAzIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgImJpdG1hcGEgd3lrcnl3YW5pYSBwxJl0bGkgaS13xJl6xYLDs3ciCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiUHJ6ZWJpZWcgNCIKKworIzogZTJmc2NrL3Bhc3M1LmM6ODEKK21zZ2lkICJQYXNzIDUiCittc2dzdHIgIlByemViaWVnIDUiCisKKyM6IGUyZnNjay9wYXNzNS5jOjEwNAorbXNnaWQgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogYsWCxIVkIHByenlkemllbGFuaWEgcGFtacSZY2kiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogYsWCxIVkIHByenlkemllbGFuaWEgcGFtacSZY2kiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEKK21zZ2lkICIobm8gcHJvbXB0KSIKK21zZ3N0ciAiKGJleiBweXRhbmlhKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAiUG9wcmF3acSHIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIld5Y3p5xZtjacSHIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0Cittc2dpZCAiUmVsb2NhdGUiCittc2dzdHIgIlByemVuaWXFm8SHIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgIlByenlkemllbGnEhyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NgorbXNnaWQgIkV4cGFuZCIKK21zZ3N0ciAiUm96c3plcnp5xIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJEb8WCxIVjennEhyBkbyAvbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OAorbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAiV3ljennFm2NpxIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkKK21zZ2lkICJTYWx2YWdlIgorbXNnc3RyICJVcmF0b3dhxIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAiVWNpxIXEhyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICJXeWN6ecWbY2nEhyBpLXfEmXplxYIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAiUHJ6ZXJ3YcSHIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzCittc2dpZCAiU3BsaXQiCittc2dzdHIgIlBvZHppZWxpxIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAiS29udHludW93YcSHIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1Cittc2dpZCAiQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCittc2dzdHIgIlNrbG9ub3dhxIcgd2llbG9rcm90bmllIHphZGVrbGFyb3dhbmUgYmxva2kiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiVXN1bsSFxIcgcGxpayIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NworbXNnaWQgIlN1cHByZXNzIG1lc3NhZ2VzIgorbXNnc3RyICJQb21pbsSFxIcga29tdW5pa2F0eSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAiT2TFgsSFY3p5xIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjkKK21zZ2lkICJDbGVhciBIVHJlZSBpbmRleCIKK21zZ3N0ciAiV3ljennFm2NpxIcgaW5kZWtzIEhUcmVlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgIk9kdHdvcnp5xIciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzkKK21zZ2lkICIoTk9ORSkiCittc2dzdHIgIihOSUMpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIlBPUFJBV0lPTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICJXWUNaWVNaQ1pPTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIKK21zZ2lkICJSRUxPQ0FURUQiCittc2dzdHIgIlBSWkVOSUVTSU9OTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAiUFJaWURaSUVMT05PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0Cittc2dpZCAiRVhQQU5ERUQiCittc2dzdHIgIlJPWlNaRVJaT05PIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIlBPRMWBxIRDWk9OTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIlVUV09SWk9OTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NworbXNnaWQgIlNBTFZBR0VEIgorbXNnc3RyICJVUkFUT1dBTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIlNLUsOTQ09OTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIkktV8SYWkXFgSBXWUNaWVNaQ1pPTlkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAKK21zZ2lkICJBQk9SVEVEIgorbXNnc3RyICJQUlpFUldBTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiUE9EWklFTE9OTyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIktPTlRZTlVBQ0pBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJTS0xPTk9XQU5PIFdJRUxPS1JPVE5JRSBaQURFS0xBUk9XQU5FIEJMT0tJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0Cittc2dpZCAiRklMRSBERUxFVEVEIgorbXNnc3RyICJQTElLIFVTVU5JxJhUWSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgIlBPTUlOScSYVE8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYKK21zZ2lkICJVTkxJTktFRCIKK21zZ3N0ciAiT0TFgcSEQ1pPTk8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICJJTkRFS1MgSFRSRUUgV1lDWllTWkNaT05ZIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiWk9TVEFOSUUgT0RUV09SWk9OWSIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiQEIgQGLDs3cgZGxhIGdydXB5ICVnIG5pZSBqZXN0IHcgZ3J1cGllLiAoQGIgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIkBCIGktd8SZesWCw7N3IGRsYSBncnVweSAlZyBuaWUgamVzdCB3IGdydXBpZS4gKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJ0YWJsaWNhIGktd8SZesWCw7N3IGRsYSBncnVweSAlZyBuaWUgamVzdCB3IGdydXBpZS4gKEBiICViKVxuIgorIlVXQUdBOiBNT8W7TElXQSBQT1dBxbtOQSBVVFJBVEEgREFOWUNILlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBzdXBlcmJsb2NrXG4KKyMuIEAtZXhwYW5kZWQ6IGlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6XG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiAgb3JcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUKK21zZ2lkICIiCisiXG4iCisiVGhlIEBTIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbiIKKyJAZi4gIElmIHRoZSBAdiBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4iCisiQGYgKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBAU1xuIgorImlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIEBTOlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA8QHY+XG4iCisiIG9yXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJAUyBuaWUgbcOzZ8WCIGJ5xIcgb2Rjenl0YW55IGx1YiBuaWUgb3Bpc3VqZSBwcmF3aWTFgm93ZWdvIHN5c3RlbXVcbiIKKyJwbGlrw7N3IGV4dDIvZXh0My9leHQ0LiBKZcW8ZWxpIEB2IGplc3QgcHJhd2lkxYJvd2UgaSBuYXByYXdkxJkgemF3aWVyYVxuIgorIkBmIGV4dDIvZXh0My9leHQ0IChuaWUgamVzdCBzd2FwZW0sIHVmcy1lbSBhbmkgbmljenltIGlubnltKSxcbiIKKyJ0byBAUyBqZXN0IHVzemtvZHpvbnkgLSBtb8W8bmEgcHLDs2Jvd2HEhyB1cnVjaG9tacSHIGUyZnNjayB6IGlubnltXG4iCisiQFNpZW06XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgbHViXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIlJvem1pYXIgc3lzdGVtdSBwbGlrw7N3ICh3ZWTFgnVnIEBTdSkgd3lub3NpICViIEBiw7N3XG4iCisiRml6eWN6bnkgcm96bWlhciB1cnrEhWR6ZW5pYSB3eW5vc2kgJWMgQGLDs3dcbiIKKyJNb8W8bGl3ZSwgxbxlIEBTIGFsYm8gdGFibGljYSBwYXJ0eWNqaSBqZXN0IHVzemtvZHpvbmEhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIlcgQFN1IGJsb2NrX3NpemUgKHJvem0uIGJsb2t1KSA9ICViLCBmcmFnc2l6ZSAocm96bS4gZnJhZ21lbnR1KSA9ICVjLlxuIgorIlRhIHdlcnNqYSBlMmZzY2sgbmllIG9ic8WCdWd1amUgcm96bWlhcsOzdyBmcmFnbWVudHUgcsOzxbxueWNoIG9kIHJvem1pYXJ1XG4iCisiQGJ1LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJXIEBTdSBibG9ja3NfcGVyX2dyb3VwIChibG9rw7N3IHcgZ3J1cGllKSA9ICViLCBwb3dpbm5vIGJ5xIcgJWNcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBmaXJzdF9kYXRhX2Jsb2NrID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTUKK21zZ2lkICJAUyBmaXJzdF9kYXRhX0BiID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAiVyBAU3UgZmlyc3RfZGF0YV9ibG9jayAoMS4gQGIgZGFueWNoKSA9ICViLCBwb3dpbmllbiBiecSHICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkBmIG5pZSBtaWHFgiBVVUlELWE7IHd5Z2VuZXJvd2Fuby5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJVd2FnYTogamXFm2xpIGpha2llxZsgYmxva2kgYml0bWFwIGktd8SZesWCw7N3IGx1YiBibG9rw7N3IGFsYm8gY3rEmcWbxIdcbiIKKyJ0YWJlbGkgaS13xJl6xYLDs3cgd3ltYWdhIHJlbG9rYWNqaSwgbW/FvG5hIHVydWNob21pxIcgbmFqcGllcncgZTJmc2NrXG4iCisieiBvcGNqxIUgJy1iICVTJy4gUHJvYmxlbSBtb8W8ZSB0a3dpxIcgdHlsa28gdyBkZXNrcnlwdG9yYWNoIGfFgsOzd25lalxuIgorImdydXB5IGJsb2vDs3csIGEgemFwYXNvd2UgZGVza3J5cHRvcnkgZ3J1cHkgYmxva8OzdyBtb2fEhSBiecSHIHBvcHJhd25lLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAiWm5hbGV6aW9ubyB1c3prb2R6ZW5pYSB3IEBTdS4gKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBva3JlxZtsYW5pYSByb3ptaWFydSBmaXp5Y3puZWdvIHVyesSFZHplbmlhOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICJsaWN6bmlrIGktd8SZesWCw7N3IHcgQFN1IHd5bm9zaSAlaSwgcG93aW5pZW4gYnnEhyAlai5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODgKK21zZ2lkICJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIG5pZSBvYnPFgnVndWplIHfFgmFzbm/Fm2NpIGZpbGV0eXBlLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlICVpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGFzIGFuIEBuIEBqIChAaSAlaSkuXG4iCittc2dzdHIgIkBTIG1hIGLFgsSZZG7EhSBrcm9uaWvEmSAoQGkgJWkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIiIKKyJaZXduxJl0cnpuYSBAaiBtYSB3aWVsdSB1xbx5dGtvd25pa8OzdyBzeXN0ZW11IHBsaWvDs3cgKG5pZSBvYnPFgnVnaXdhbmUpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgem5hbGXFusSHIHpld27EmXRyem5laiBrcm9uaWtpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJaZXduxJl0cnpuYSBAaiBtYSBixYLEmWRueSBAU1xuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCittc2dpZCAiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iCittc2dzdHIgIlpld27EmXRyem5hIEBqIG5pZSBvYnPFgnVndWplIHRlZ28gc3lzdGVtdSBwbGlrw7N3XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gam91cm5hbCBzdXBlcmJsb2NrIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgam91cm5hbCAKKyMuIEAtZXhwYW5kZWQ6IGZvcm1hdC5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE4Cittc2dpZCAiIgorIkBmIEBqIEBTIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuIgorIkl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBAaiAiCisiZm9ybWF0LlxuIgorIkl0IGlzIGFsc28gcG9zc2libGUgdGhlIEBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIiIKKyJAUyBrcm9uaWtpIHN5c3RlbXUgcGxpa8OzdyBtYSBuaWV6bmFueSB0eXAgJU4gKG5pZSBvYnPFgnVnaXdhbnkpLlxuIgorIk1vxbxsaXdlLCDFvGUgdGEga29waWEgZTJmc2NrIGplc3Qgc3RhcmEgaS9sdWIgbmllIG9ic8WCdWd1amUgdGVnbyBmb3JtYXR1XG4iCisia3JvbmlraS5cbiIKKyJNb8W8bGl3ZSB0ZcW8LCDFvGUgQFMga3JvbmlraSBqZXN0IHVzemtvZHpvbnkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNgorbXNnaWQgIkBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIkBTIGtyb25pa2kgamVzdCB1c3prb2R6b255LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiZmxhZ2EgQFN1IGhhc19qb3VybmFsIGplc3Qgd3l6ZXJvd2FuYSwgYWxlIEBqIGlzdG5pZWplLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiQFMgbWEgdXN0YXdpb27EhSBmbGFnxJkgbmVlZHNfcmVjb3ZlcnksIGFsZSBuaWUgbWEga3JvbmlraS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgam91cm5hbCBoYXMgZGF0YS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDEKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIGNsZWFyLCBidXQgQGogaGFzIGRhdGEuXG4iCittc2dzdHIgImZsYWdhIG5lZWRzX3JlY292ZXJ5IEBTdSBqZXN0IHd5emVyb3dhbmEsIGFsZSBAaiB6YXdpZXJhIGRhbmUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENsZWFyIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQ2Cittc2dpZCAiQ2xlYXIgQGoiCittc2dzdHIgIld5Y3p5xZtjacSHIGtyb25pa8SZIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgIkBmIG1hIHVzdGF3aW9uZSBmbGFnaSBjZWNoLCBhbGUgbWEgd2Vyc2rEmSAwIHN5c3RlbXUgcGxpa8Ozdy4gIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCB1cHJhd25pZW5pYT0lSW0sIHJvem1pYXI9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiem5hbGV6aW9ubyBASSAlQiAoJWIpIHcgQG9tIGktd8SZxbpsZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkp1xbwgd3ljenlzemN6b25vICVCICglYikgem5hbGV6aW9ueSB3IEBvbSBpLXfEmcW6bGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgIkBJIEBvIEBpICVpIHcgQFN1LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgIkBJIEBpICVpIHcgbGnFm2NpZSBAb2NoIGktd8SZesWCw7N3LlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIkBTIGtyb25pa2kgbWEgdXN0YXdpb27EhSBuaWV6bmFuxIUgZmxhZ8SZIHR5bGtvIGRvIG9kY3p5dHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODYKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiQFMga3JvbmlraSBtYSB1c3Rhd2lvbsSFIGZsYWfEmSBuaWV6bmFuZWogY2VjaHkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5MQorbXNnaWQgIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIKK21zZ3N0ciAiV2Vyc2phIGtyb25pa2kgbmllIG9ic8WCdWdpd2FuYSBwcnpleiB0ZW4gZTJmc2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBNb3Zpbmcgam91cm5hbCBmcm9tIC8lcyB0byBoaWRkZW4gaW5vZGUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTW92aW5nIEBqIGZyb20gLyVzIHRvIGhpZGRlbiBAaS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlByemVub3N6ZW5pZSBrcm9uaWtpIHogLyVzIGRvIHVrcnl0ZWdvIGktd8SZesWCYS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiQsWCxIVkIHBvZGN6YXMgcHJ6ZW5vc3plbmlhIGtyb25pa2k6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJabmFsZXppb25vIGLFgsSZZG5lIHBvbGEgQFN1IGtyb25pa2kgVjIgKHoga3JvbmlraSBWMSkuXG4iCisiQ3p5c3pjemVuaWUgcMOzbCBzcG96YSBAU3Uga3JvbmlraSBWMS4uLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBSdW4gam91cm5hbCBhbnl3YXkKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzEyCittc2dpZCAiUnVuIEBqIGFueXdheSIKK21zZ3N0ciAiV3lrb25hxIcgemFwaXN5IHoga3JvbmlraSIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICIiCisiRmxhZ2Egb2R0d29yemVuaWEgbmllIHVzdGF3aW9uYSB3IHphcGFzb3d5bSBAU3UsXG4iCisid2nEmWMgd3lrb251asSZIHphcGlzeSB6IGtyb25pa2kgbWltbyB0by5cbiIKKworIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMjIKK21zZ2lkICIiCisiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKK21zZ3N0ciAiVHdvcnplbmllIGtvcGlpIHphcGFzb3dlaiBpbmZvcm1hY2ppIHogQGJ1IGktd8SZesWCYSBrcm9uaWtpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJAZiBuaWUgbWEgd8WCxIVjem9uZWdvIHJlc2l6ZV9pbm9kZSwgYWxlIHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuIgorInd5bm9zaSAlTjsgQHMgemVyby4gIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemVfaW5vZGUgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzMworbXNnaWQgIlJlc2l6ZV9AaSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgQGkgaXMgbm9uLXplcm8uICAiCittc2dzdHIgIiIKKyJSZXNpemVfaW5vZGUgbmllIHfFgsSFY3pvbmUsIGFsZSBpLXfEmXplxYIgem1pYW55IHJvem1pYXJ1IGplc3QgbmllemVyb3d5LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzM4Cittc2dpZCAiUmVzaXplIEBpIG5vdCB2YWxpZC4gICIKK21zZ3N0ciAiaS13xJl6ZcWCIHptaWFueSByb3ptaWFydSAocmVzaXplKSBuaWVwcmF3aWTFgm93eS4gIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkN6YXMgb3N0YXRuaWVnbyBtb250b3dhbmlhIEBTdSAoJXQsXG4iCisiXHR0ZXJheiA9ICVUKSBqZXN0IHcgcHJ6eXN6xYJvxZtjaS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJDemFzIG9zdGF0bmllZ28gemFwaXN1IEBTdSAoJXQsXG4iCisiXHR0ZXJheiA9ICVUKSBqZXN0IHcgcHJ6eXN6xYJvxZtjaS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIHNob3VsZCBiZSAlWC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBAcyAlWC4gICIKK21zZ3N0ciAiUG9kcG93aWVkxbogQFN1IGRsYSB6ZXduxJl0cnpuZWdvIHN1cGVyYmxva3UgcG93aW5uYSBiecSHICVYLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEb2Rhd2FuaWUgcG9kcG93aWVkemkgZGlyaGFzaCBkbyBzeXN0ZW11IHBsaWvDs3cuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgZGVza3J5cHRvcmEgZ3J1cHkgJWcgdG8gJTA0eCwgcG93aW5uYSB3eW5vc2nEhyAlMDR5LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICJEZXNrcnlwdG9yIGdydXB5ICVnIG96bmFjem9ueSBqYWtvIG5pZSB6YWluaWNqb3dhbnkgYmV6IHpiaW9ydSBjZWNoLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzcyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgIgorbXNnc3RyICJEZXNrcnlwdG9yIGdydXB5ICVnIG1hIGLFgsSZZG7EhSBsaWN6YsSZIG5pZSB1xbx5d2FueWNoIGktd8SZesWCw7N3ICViLiAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICJAQiBAYnUgb3N0YXRuaWVqIGdydXB5IG5pZXphaW5pY2pvd2FuYS4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIlRyYW5zYWtjamEgJWkga3JvbmlraSBiecWCYSB1c3prb2R6b25hLCBvZHR3YXJ6YW5pZSBwcnplcndhbm8uXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkZsYWdzIHRlc3RfZnMgamVzdCB1c3Rhd2lvbmEgKGkgZXh0NCBqZXN0IGRvc3TEmXBueSkuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkN6YXMgb3N0YXRuaWVnbyBtb250b3dhbmlhIEBTdSBqZXN0IHcgcHJ6eXN6xYJvxZtjaVxuIgorIlx0KG8gbW5pZWogbmnFvCBkemllxYQsIHphcGV3bmUgeiBwb3dvZHUgesWCZWdvIHVzdGF3aWVuaWEgemVnYXJhIHNwcnrEmXRvd2VnbylcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5NworbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkN6YXMgb3N0YXRuaWVnbyB6YXBpc3UgQFN1IGplc3QgdyBwcnp5c3rFgm/Fm2NpXG4iCisiXHQobyBtbmllaiBuacW8IGR6aWXFhCwgemFwZXduZSB6IHBvd29kdSB6xYJlZ28gdXN0YXdpZW5pYSB6ZWdhcmEgc3ByesSZdG93ZWdvKVxuIgorCisjLiBALWV4cGFuZGVkOiBPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKK21zZ2lkICJPbmUgb3IgbW9yZSBAYiBAZyBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gICIKK21zZ3N0ciAiSmVkZW4gbHViIHdpxJljZWogZGVza3J5cHRvcsOzdyBncnVwIGJsb2vDs3cgamVzdCBixYLEmWRueWNoLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBpbm9kZXMgY291bnQgdG8gJWogKHdhcyAlaSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDgKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgbGljemJ5IHdvbG55Y2ggaS13xJl6xYLDs3cgbmEgJWogKGJ5xYJvICVpKVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICJVc3Rhd2lhbmllIGxpY3pieSB3b2xueWNoIEBiw7N3IG5hICVjIChiecWCbyAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAiWm1pYW5hIGktd8SZesWCYSBAccOzdyBuYSB1a3J5dHkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gICIKK21zZ3N0ciAiQFMgbWEgYsWCxJlkbnkgYmxvayBNTVAuICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDI4Cittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgIgorbXNnc3RyICJAUyBtYSBixYLEmWRuxIUgbGljemLEmSBtYWdpY3puxIUgTU1QLiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisiUG9sZSBAU3UgbWV0YWRhdGFfY3N1bSB6YXN0xJlwdWplIHVuaW5pdF9iZzogb2JhIGJpdHkgY2VjaCBuaWUgbW9nxIUgYnnEhyB1xbx5dGUgIgorImplZG5vY3plxZtuaWUuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgYmxva3UgTU1QIEBTdSBuaWUgemdhZHphIHNpxJkgeiBibG9raWVtIE1NUCIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorIkBTIDY0LWJpdG93eWNoIHN5c3RlbcOzdyBwbGlrw7N3IHd5bWFnYSBla3N0ZW50w7N3IGRvIGRvc3TEmXB1IGRvIGNhxYJlZ28gZHlza3UuICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIkZpcnN0X21ldGFfYmcgamVzdCB6Ynl0IGR1xbxlICglTiwgd2FydG/Fm8SHIG1ha3N5bWFsbmEgJWcpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICIiCisiU3VtYSBrb250cm9sbmEgc3VwZXJibG9rdSB6ZXduxJl0cnpuZWoga3JvbmlraSBuaWUgemdhZHphIHNpxJkgeiBzdXBlcmJsb2tpZW0iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICJQb2xlIG1ldGFkYXRhX2NzdW1fc2VlZCBAU3UgbmllIGplc3QgcG90cnplYm5lIGJleiBtZXRhZGF0YV9jc3VtLiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICJCxYLEhWQgaW5pY2pvd2FuaWEga29udGVrc3R1IGxpbWl0w7N3IHcgYmlibGlvdGVjZSB3c3BpZXJhasSFY2VqOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJQcnplYmllZyAxOiBTcHJhd2R6YW5pZSBpLXfEmXrFgsOzdywgQGLDs3cgaSByb3ptaWFyw7N3XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5OAorbXNnaWQgIkByIGlzIG5vdCBhIEBkLiAgIgorbXNnc3RyICJAciBuaWUgamVzdCBAZGllbS4gIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIkByIG1hIHVzdGF3aW9ueSBkdGltZSAoemFwZXduZSBwcnpleiBzdGFyeSBta2UyZnMpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJaYXJlemVyd293YW55IEBpICVpICglUSkgbWEgYsWCxJlkbmUgdXByYXduaWVuaWEuICIKKworIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgIkBEIEBpICVpIG1hIHplcm93eSBkdGltZS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgIgorbXNnc3RyICJAaSAlaSBqZXN0IHXFvHl3YW55LCBhbGUgbWEgdXN0YXdpb255IGR0aW1lLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBhIEB6IEBkLiAgIgorbXNnc3RyICJAaSAlaSBqZXN0IEBkaWVtIEB6LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQEIgQGLDs3cgZ3J1cHkgJWcgdyAlYiBqZXN0IHcga29uZmxpa2NpZSB6IGlubnltIEBiaWVtLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIkBCIGktd8SZesWCw7N3IGdydXB5ICVnIHcgJWIgamVzdCB3IGtvbmZsaWtjaWUgeiBpbm55bSBAYmllbS5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSB0YWJsZSBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzOAorbXNnaWQgIkBnICVnJ3MgQGkgdGFibGUgYXQgJWIgQEMuXG4iCittc2dzdHIgInRhYmxpY2EgaS13xJl6xYLDs3cgZ3J1cHkgJWcgdyAlYiBqZXN0IHcga29uZmxpa2NpZSB6IGlubnltIEBiaWVtLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDMKK21zZ2lkICJAZyAlZydzIEBiIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJAQiBAYsOzdyBncnVweSAlZyAoJWIpIGplc3QgYsWCxJlkbmEuICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQEIgaS13xJl6xYLDs3cgZ3J1cHkgJWcgKCViKSBqZXN0IGLFgsSZZG5hLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgaV9zaXplIHd5bm9zaSAlSXMsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfYmxvY2tzIHd5bm9zaSAlSWIsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICJASSAlQiAoJWIpIHcgaS13xJnFumxlICVpLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKK21zZ2lkICIlQiAoJWIpIG92ZXJsYXBzIEBmIG1ldGFkYXRhIGluIEBpICVpLiAgIgorbXNnc3RyICIlQiAoJWIpIG5ha8WCYWRhIHNpxJkgbmEgbWV0YWRhbmUgc3lzdGVtdSBwbGlrw7N3IHcgaS13xJnFumxlICVpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiQGkgJWkgbWEgbmllZG9wdXN6Y3phbG5lIEBiaS4gIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIlphIGR1xbxvIG5pZWRvcHVzemN6YWxueWNoIEBiw7N3IHcgaS13xJnFumxlICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJASSAlQiAoJWIpIHcgaS13xJnFumxlIHdhZGxpd3ljaCBAYsOzdy4gIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJJLXfEmXplxYIgd2FkbGl3eWNoIEBiw7N3IG1hIG5pZWRvcHVzemN6YWxuZSBAYmkuICIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIG9yIGJhZCBibG9jayBpbiB1c2UhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkzCittc2dpZCAiRHVwbGljYXRlIG9yIGJhZCBAYiBpbiB1c2UhXG4iCittc2dzdHIgIlBvZHfDs2pueSBsdWIgd2FkbGl3eSBAYiBqZXN0IHXFvHl3YW55IVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgJWIgdXNlZCBhcyBiYWQgYmxvY2sgaW5vZGUgaW5kaXJlY3QgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTk4Cittc2dpZCAiQmFkIEBiICViIHVzZWQgYXMgYmFkIEBiIEBpIGluZGlyZWN0IEBiLiAgIgorbXNnc3RyICIiCisiV2FkbGl3eSBAYiAlYiBqZXN0IHXFvHl3YW55IGpha28gbmllYmllenBvxZtyZWRuaSBAYiBpLXfEmcW6xYJhIHogd2FkbGl3eW0gQGJpZW0uICIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisiXG4iCisiSS13xJl6ZcWCIHogd2FkbGl3eW0gQGJpZW0gem9zdGHFgiBwcmF3ZG9wb2RvYm5pZSB1c3prb2R6b255LlxuIgorIlByYXdkb3BvZG9ibmllIG5hbGXFvGHFgm9ieSB0ZXJheiB6YXRyenltYcSHIGkgdXJ1Y2hvbWnEhyBlMmZzY2sgLWNcbiIKKyJhYnkgcHJ6ZXN6dWthxIcgQGYgcG9kIGvEhXRlbSB3YWRsaXd5Y2ggYmxva8Ozdy5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IElmIHRoZSBibG9jayBpcyByZWFsbHkgYmFkLCB0aGUgZmlsZXN5c3RlbSBjYW4gbm90IGJlIGZpeGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxMAorbXNnaWQgIiIKKyJcbiIKKyJJZiB0aGUgQGIgaXMgcmVhbGx5IGJhZCwgdGhlIEBmIGNhbiBub3QgYmUgZml4ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJKZcW8ZWxpIEBiIGplc3QgbmFwcmF3ZMSZIHdhZGxpd3ksIEBmIG5pZSBtb8W8ZSBiecSHIG5hcHJhd2lvbnkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk1vxbxuYSB3eWN6ecWbY2nEhyB0ZW4gQGIgeiBsaXN0eSB3YWRsaXd5Y2ggQGLDs3cgaSBtaWXEhyBuYWR6aWVqxJksXG4iCisixbxlIEBiIGplc3QgbmFwcmF3ZMSZIGRvYnJ5LiBBbGUgbmllIG1hIHRha2llaiBnd2FyYW5jamkuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIkfFgsOzd255IEBTICglYikgamVzdCBuYSBsacWbY2llIHdhZGxpd3ljaCBAYsOzdy5cbiIKKworIy4gQC1leHBhbmRlZDogQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjI2Cittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIkJsb2sgJWIgeiBkZXNrcnlwdG9yw7N3IGfFgsOzd25laiBncnVweSBqZXN0IG5hIGxpxZtjaWUgd2FkbGl3eWNoIEBiw7N3XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJVd2FnYTogdyBncnVwaWUgJWcgQFMgKCViKSBqZXN0IHdhZGxpd3kuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiVXdhZ2E6IGtvcGlhIGRlc2tyeXB0b3LDs3cgZ3J1cHkgJWcgbWEgYsWCxJlkbnkgQGIgKCViKS5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiQsWCxIVkIHByb2dyYW11PyBAYiAjJWIgdXpuYW55IGJleiBwb3dvZHUgdyBwcm9jZXNzX2JhZF9ibG9jay5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQEEgJU4gY2nEhWfFgnljaCBAYsOzdyB3IGdydXBpZSBAYsOzdyAlZyBkbGEgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgYmxvY2sgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBiIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuIgorbXNnc3RyICJAQSBidWZvcmEgQGLDs3cgZG8gcHJ6ZW5vc3plbmlhICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiUHJ6ZW5vc3plbmllIHcgZ3J1cGllICVnICVzIHogJWIgZG8gJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICJQcnplbm9zemVuaWUgdyBncnVwaWUgJWcgJXMgZG8gJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgIlV3YWdhOiBuaWUgbW/FvG5hIG9kY3p5dGHEhyBAYnUgJWIgeiAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICJVd2FnYTogbmllIG1vxbxuYSB6YXBpc2HEhyBAYnUgJWIgZG8gJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc5IGUyZnNjay9wcm9ibGVtLmM6MTc0MAorbXNnaWQgIkBBIEBpIEBCICglTik6ICVtXG4iCittc2dzdHIgIkBBIGJpdG1hcHkgaS13xJl6xYLDs3cgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODQKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBiaXRtYXB5IGktd8SZesWCw7N3ICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJAQSBpbmZvcm1hY2ppIG8gbGljem5pa3UgZG93acSFemHFhCAoaWNvdW50KTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJAQSB0YWJsaWN5IEBkY2ggQGLDs3c6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBAaXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgcHJ6ZXN6dWtpd2FuaWEgaS13xJl6xYLDs3cgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIGl0ZXJhY2ppIHBvIEBiYWNoIHcgaS13xJnFumxlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwOQorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgcG9kY3phcyB6YXBpc3UgaW5mb3JtYWNqaSBvIGxpY3piaWUgaS13xJl6xYLDs3cgKEBpPSVpLCBsaWN6YmE9JU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGRpcmVjdG9yeSBibG9jayBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGJsb2NrPSViLCBudW09JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcxNAorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGQgQGIgaW5mb3JtYXRpb24gKEBpPSVpLCBAYj0lYiwgbnVtPSVOKTogJW1cbiIKK21zZ3N0ciAiIgorIkLFgsSFZCBwb2RjemFzIHphcGlzdSBpbmZvcm1hY2ppIG8gQGRjaCBAYmFjaCAoQGk9JWksIEBiPSViLCBsaWN6YmE9JU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBvZGN6eXR1IGktd8SZesWCYSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiQGkgJWkgbWEgdXN0YXdpb27EhSBmbGFnxJkgaW1hZ2ljLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJTcGVjamFsbnkgcGxpayAoQHYvZ25pYXpkby9wb3Rvay9kb3dpxIV6YW5pZSkgKEBpICVpKSBtYSB1c3Rhd2lvbsSFXG4iCisiZmxhZ8SZIG5pZW5hcnVzemFsbm/Fm2NpIChpbW11dGFibGUpIGx1YiBkb3Bpc3l3YW5pYSAoYXBwZW5kLW9ubHkpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiU3BlY2phbG55IChAdi9nbmlhemRvL3BvdG9rL2Rvd2nEhXphbmllKSBAaSAlaSBtYSBuaWV6ZXJvd3kgcm96bWlhci4gIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJAaSBrcm9uaWtpIG5pZSBqZXN0IHXFvHl3YW55LCBhbGUgemF3aWVyYSBkYW5lLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAaiBuaWUgamVzdCB6d3lrxYJ5bSBwbGlraWVtLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiQGkgJWkgYnnFgiBjesSZxZtjacSFIGxpc3R5IG9zaWVyb2NvbnljaCBpLXfEmXrFgsOzdy4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc2NQorbXNnaWQgIkBpcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAiCittc2dzdHIgIlpuYWxlemlvbm8gaS13xJl6xYJ5LCBrdMOzcmUgYnnFgnkgY3rEmcWbY2nEhSB1c3prb2R6b25laiBsaXN0eSBzaWVyb3QuICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKK21zZ2lkICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgc3RydWt0dXJ5IHJlZmNvdW50ICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGZvciBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViIGZvciBAaSAlaS4gICIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgb2Rjenl0dSBAYnUgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3ICViIGRsYSBpLXfEmXrFgmEgJWkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkBpICVpIG1hIGLFgsSZZG55IEBiIHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyAlYi4gIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgb2Rjenl0dSBAYnUgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3ICViICglbSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQGIgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3ICViIG1hIGxpY3pixJkgb2RuaWVzaWXFhCAlciwgcG93aW5ubyBiecSHICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzk1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyB6YXBpc3UgQGJ1IHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyAlYiAoJW0pLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgIkBiIHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyAlYiBtYSBoX2Jsb2NrcyA+IDEuICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorbXNnaWQgIkBBIEBhIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQEEgc3RydWt0dXJ5IHByenlkemllbGFuaWEgcmVnaW9udSByb3pzemVyem9ueWNoIGF0cnlidXTDs3cuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIiIKKyJAYiByb3pzemVyem9ueWNoIGF0cnlidXTDs3cgJWIgamVzdCB1c3prb2R6b255IChrb2xpemphIHByenlkemllbGFuaWEpLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJAYiByb3pzemVyem9ueWNoIGF0cnlidXTDs3cgJWIgamVzdCB1c3prb2R6b255IChixYLEmWRuYSBuYXp3YSkuICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiQGIgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3ICViIGplc3QgdXN6a29kem9ueSAoYsWCxJlkbmEgd2FydG/Fm8SHKS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICJAaSAlaSBqZXN0IHpieXQgZHXFvHkuICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgQGQgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBwb3dvZHVqZSwgxbxlIEBkIGplc3QgemJ5dCBkdcW8eS4gIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBwb3dvZHVqZSwgxbxlIHBsaWsgamVzdCB6Ynl0IGR1xbx5LiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIHBvd29kdWplLCDFvGUgZG93acSFemFuaWUgamVzdCB6Ynl0IGR1xbxlLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkBpICVpIG1hIHVzdGF3aW9uxIUgZmxhZ8SZIElOREVYX0ZMIG5hIHN5c3RlbWllIHBsaWvDs3cgYmV6IG9ic8WCdWdpIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiQGkgJWkgbWEgdXN0YXdpb27EhSBmbGFnxJkgSU5ERVhfRkwsIGFsZSBuaWUgamVzdCBAZGllbS5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiQGggJWkgbWEgYsWCxJlkbnkgZ8WCw7N3bnkgd8SZemXFgi5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1OQorbXNnaWQgIkBoICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuIgorbXNnc3RyICJAaCAlaSBtYSBuaWUgb2JzxYJ1Z2l3YW7EhSB3ZXJzasSZIGhhc3phICglTilcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiQGggJWkgdcW8eXdhIG5pZWtvbXBhdHliaWxuZWogZmxhZ2kgZ8WCw7N3bmVnbyB3xJl6xYJhIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJAaCAlaSBtYSB6Ynl0IGR1xbzEhSBnxYLEmWJva2/Fm8SHIGRyemV3YSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIiIKKyJJLXfEmXplxYIgeiB3YWRsaXd5bSBAYmllbSBtYSBuaWViZXpwb8WbcmVkbmkgQGIgKCViKSBixJlkxIVjeVxuIgorIncga29uZmxpa2NpZSB6IG1ldGFkYW55bWkgc3lzdGVtdSBwbGlrw7N3LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6ZSBAaSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4iCittc2dzdHIgIlR3b3J6ZW5pZS9vZHR3YXJ6YW5pZSBpLXfEmXrFgmEgem1pYW55IHJvem1pYXJ1IG5pZSBwb3dpb2TFgm8gc2nEmTogJW0uIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODUKK21zZ2lkICJAaSAlaSBoYXMgYSBleHRyYSBzaXplICglSVMpIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBpICVpIG1hIGRvZGF0a293eSByb3ptaWFyICglSVMpLCBjbyBqZXN0IGLFgsSZZG5lXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5MAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAYSB3IGktd8SZxbpsZSAlaSBtYSBuYW1lbGVuICglTiksIGNvIGplc3QgYsWCxJlkbmVcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAYSB3IGktd8SZxbpsZSAlaSBtYSBwcnplc3VuacSZY2llIHdhcnRvxZtjaSAoJU4pLCBjbyBqZXN0IGLFgsSZZG5lXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIkBhIHcgaS13xJnFumxlICVpIG1hIEBiIHdhcnRvxZtjaSAoJU4pLCBjbyBqZXN0IGLFgsSZZG5lIChtdXNpIGJ5xIcgMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIHcgaS13xJnFumxlICVpIG1hIHJvem1pYXIgd2FydG/Fm2NpICglTiksIGNvIGplc3QgYsWCxJlkbmVcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIHcgaS13xJnFumxlICVpIG1hIGhhc2ggKCVOKSwgY28gamVzdCBixYLEmWRuZVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJAaSAlaSB0byAlSXQsIGFsZSB3eWdsxIVkYSBqYWtieSB3IHJ6ZWN6eXdpc3RvxZtjaSBiecWCIGthdGFsb2dpZW0uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIGN6eXRhbmlhIHBvIEB4YWNoIHcgaS13xJnFumxlICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIGlub2RlICVpXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyNQorbXNnaWQgIiIKKyJGYWlsZWQgdG8gaXRlcmF0ZSBleHRlbnRzIGluIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCittc2dzdHIgIiIKKyJOaWUgdWRhxYJvIHNpxJkgcHJ6ZWrFm8SHIGVrc3RlbnTDs3cgdyBpLXfEmcW6bGUgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzEKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSBtYSBAbiBla3N0ZW50XG4iCisiXHQoQGIgbG9naWN6bnkgJWMsIEBuIEBiIGZpenljem55ICViLCBkxYJ1Z2/Fm8SHICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIG1hIGLFgsSZZG55IGVrc3RlbnRcbiIKKyJcdChAYiBsb2dpY3pueSAlYywgQGIgZml6eWN6bnkgJWIsIGLFgsSZZG5hIGTFgnVnb8WbxIcgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiQGkgJWkgbWEgdXN0YXdpb27EhSBmbGFnxJkgRVhURU5UU19GTCBuYSBzeXN0ZW1pZSBwbGlrw7N3IGJleiBvYnPFgnVnaSAiCisiZWtzdGVudMOzdy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJAaSAlaSBtYSBmb3JtYXQgeiBla3N0ZW50YW1pLCBhbGUgdyBzdXBlcmJsb2t1IGJyYWt1amUgd8WCYcWbY2l3b8WbY2kgRVhURU5UU1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAiQGkgJWkgbmllIG1hIGZsYWdpIEVYVEVOVF9GTCwgYWxlIGplc3QgdyBmb3JtYWNpZSB6IGVrc3RlbnRhbWlcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIgorbXNnc3RyICJTenlia2llIGRvd2nEhXphbmllIHN5bWJvbGljem5lICVpIG1hIHVzdGF3aW9uxIUgZmxhZ8SZIEVYVEVOVF9GTC4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkgbWEgZWtzdGVudHkgc3BvemEga29sZWpub8WbY2lcbiIKKyJcdChAbiBAYiBsb2dpY3pueSAlYywgQGIgZml6eWN6bnkgJWIsIGTFgnVnb8WbxIcgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTY1Cittc2dpZCAiQGkgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbiIKK21zZ3N0ciAiQGkgJWkgbWEgYsWCxJlkbnkgd8SZemXFgiBla3N0ZW50dSAoYmxrICViLCBsYmxrICVjKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHByemVrc3p0YcWCY2FuaWEgYml0bWFweSBAYsOzdyBwb2RrbGFzdHJhOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkBpIEBxw7N3IG5pZSBqZXN0IHp3eWvFgnltIHBsaWtpZW0uICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkBpIEBxw7N3IG5pZSBqZXN0IHXFvHl3YW55LCBhbGUgemF3aWVyYSBkYW5lLiAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiQGkgQHHDs3cgamVzdCB3aWRvY3pueSBkbGEgdcW8eXRrb3duaWthLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICJJLXfEmXplxYIgd2FkbGl3eWNoIEBiw7N3IHd5Z2zEhWRhIG5hIGLFgsSZZG55LiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTUKK21zZ2lkICIiCisiQGkgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViKVxuIgorbXNnc3RyICIiCisiQGkgJWkgbWEgZWtzdGVudCB6ZXJvd2VqIGTFgnVnb8WbY2lcbiIKKyJcdChAbiBAYiBsb2dpY3pueSAlYywgQGIgZml6eWN6bnkgJWIsIGTFgnVnb8WbxIcgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gICIKK21zZ3N0ciAiQGkgJWkgemRhamUgc2nEmSB6YXdpZXJhxIcgxZttaWVjaS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGkuICAiCittc2dzdHIgIkBpICVpIHByemVjaG9kemkgdGVzdHksIGFsZSBzdW1hIGtvbnRyb2xuYSBuaWUgemdhZHphIHNpxJkgeiBpLXfEmXrFgmVtLiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBhIGktd8SZesWCYSAlaSBqZXN0IHVzemtvZHpvbnkgKGtvbGl6amEgcHJ6eWR6aWVsYW5pYSkuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImJsb2sgZWtzdGVudMOzdyBpLXfEmXrFgmEgJWkgcHJ6ZWNob2R6aSB0ZXN0eSwgYWxlIHN1bWEga29udHJvbG5hIG5pZSB6Z2FkemEgIgorInNpxJkgeiBla3N0ZW50ZW1cbiIKKyJcdChAYiBsb2dpY3pueSAlYywgQGIgZml6eWN6bnkgJWIsIGTFgnVnb8WbxIcgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAyNworbXNnaWQgIkBpICVpIEBhIEBiICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAYi4gICIKK21zZ3N0ciAiIgorIkBiIHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyBpLXfEmXrFgmEgJWkgJWIgcHJ6ZWNob2R6aSB0ZXN0eSwgYWxlIHN1bWEgIgorImtvbnRyb2xuYSBuaWUgemdhZHphIHNpxJkgeiBAYmllbS4gIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiUG96aW9tIHdld27EmXRyem5lZ28gd8SZesWCYSBla3N0ZW50dSAlTiBpLXfEmXrFgmEgJWk6XG4iCisiUG9jesSFdGVrIGxvZ2ljem55ICViIG5pZSB6Z2FkemEgc2nEmSB6IHBvY3rEhXRraWVtIGxvZ2ljem55bSAlYyBrb2xlam5lZ28gIgorInBvemlvbXUuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWksIGtvbmllYyBla3N0ZW50dSBwcnpla3JhY3phIGRvendvbG9uxIUgd2FydG/Fm8SHXG4iCisiXHQoQGIgbG9naWN6bnkgJWMsIEBiIGZpenljem55ICViLCBkxYJ1Z2/Fm8SHICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgQFMgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4iCittc2dzdHIgIkBpICVpIG1hIGRhbmUgd2V3bsSZdHJ6bmUsIGFsZSB3IEBTdSBicmFrIHfFgmHFm2Npd2/Fm2NpIElOTElORV9EQVRBXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiQGkgJWkgbWEgZmxhZ8SZIElOTElORV9EQVRBX0ZMIHcgc3lzdGVtaWUgcGxpa8OzdyBiZXogb2JzxYJ1Z2kgZGFueWNoICIKKyJ3ZXduxJl0cnpueWNoLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorImJsb2sgaS13xJl6xYJhICVpICViIGplc3QgdyBrb25mbGlrY2llIHoga3J5dHljem55bWkgbWV0YWRhbnltaSwgcG9taW5pxJl0byAiCisic3ByYXdkemFuaWUgYmxva3UuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworbXNnaWQgIkBkIEBpICVpIEBiICViIHNob3VsZCBiZSBhdCBAYiAlYy4gICIKK21zZ3N0ciAiRGxhIGktd8SZesWCYSBAZHUgJWkgQGIgJWIgcG93aW5pZW4gYnnEhyBwcnp5IEBidSAlYy4gIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiQGkgQGR1ICVpIG1hIEB4IG96bmFjem9ueSBqYWtvIG5pZXphaW5pY2pvd2FueSBwcnp5IEBidSAlYy4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiRGxhIGktd8SZesWCYSAlaSBAYiBsb2dpY3pueSAlYiAoQGIgZml6eWN6bnkgJWMpIG5hcnVzemEgemFzYWR5IHByenlkemllbGFuaWEgIgorImtsYXN0csOzdy5cbiIKKyJab3N0YW5pZSBwb3ByYXdpb255IHcgcHJ6ZWJpZWd1IDFCLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIiIKKyJAaSAlaSBtYSBmbGFnxJkgSU5MSU5FX0RBVEFfRkwsIGFsZSBuaWUgem5hbGV6aW9ubyByb3pzemVyem9ueWNoIGF0cnlidXTDs3cuICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIGZpbGUgKEBpICVpKSBoYXMgZXh0ZW50c1xuIgorIm9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisiU3BlY2phbG55IHBsaWsgKEB2L2duaWF6ZG8vcG90b2svZG93acSFemFuaWUpIChAaSAlaSkgbWEgdXN0YXdpb27EhVxuIgorImZsYWfEmSBuaWVuYXJ1c3phbG5vxZtjaSAoaW1tdXRhYmxlKSBsdWIgZG9waXN5d2FuaWEgKGFwcGVuZC1vbmx5KS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiQGkgJWkgbWEgbmFnxYLDs3dlayBAeHUsIGFsZSBmbGFnYSBkYW55Y2ggd2V3bsSZdHJ6bnljaCBqZXN0IHVzdGF3aW9uYS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIkBpICVpIHd5ZGFqZSBzacSZIG1pZcSHIGRhbmUgd2V3bsSZdHJ6bmUsIGFsZSB1c3Rhd2lvbmEgamVzdCBmbGFnYSBAeHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgYmxvY2sgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgQGIgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0LlxuIgorbXNnc3RyICIiCisiQGkgJWkgd3lkYWplIHNpxJkgbWllxIcgbWFwxJkgQGLDs3csIGFsZSB1c3Rhd2lvbmUgZmxhZ2kgZGFueWNoIHdld27EmXRyem55Y2ggaSAiCisiQHh1LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIiIKKyJAaSAlaSBtYSB1c3Rhd2lvbmUgZmxhZ2kgZGFueWNoIHdld27EmXRyem55Y2ggaSBAeHUsIGFsZSBwb2xlIGlfYmxvY2sgemF3aWVyYSAiCisixZttaWVjaS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgaW5vZGUgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDkKK21zZ2lkICJCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBAaSBpcyBiYWQuICAiCittc2dzdHIgIiIKKyJMaXN0YSB3YWRsaXd5Y2ggYmxva8OzdyB0d2llcmR6aSwgxbxlIEBpIGxpc3R5IHdhZGxpd3ljaCBibG9rw7N3IGplc3Qgd2FkbGl3eS4gIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVudCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExNAorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQEEgc3RydWt0dXJ5IHByenlkemllbGFuaWEgcmVnaW9udSBAeHUuICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIG1hIHBvd3TDs3J6b25lIG9kd3pvcm93YW5pZSBAeHVcbiIKKyJcdChAYiBsb2dpY3pueSAlYywgQG4gQGIgZml6eWN6bnkgJWIsIGTFgnVnb8WbxIcgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0Cittc2dpZCAiQEEgbWVtb3J5IGZvciBlbmNyeXB0ZWQgQGQgbGlzdFxuIgorbXNnc3RyICJAQSBwYW1pxJljaSBkbGEgbGlzdHkgemFzenlmcm93YW55Y2ggQGTDs3dcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKyJkcnpld28gZWtzdGVudMOzdyBpLXfEmXrFgmEgJWkgbW9nxYJvYnkgYnnEhyBwxYJ5dHN6ZSAoJWI7IG1vZ8WCb2J5IGJ5xIcgPD0gJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIkBpICVpIHcgc3lzdGVtaWUgcGxpa8OzdyBiaWdhbGxvYyBuaWUgbW/FvGUgYnnEhyBvZHd6b3Jvd2FueSBuYSBAYi4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICJAaSAlaSBtYSB1c3prb2R6b255IG5hZ8WCw7N3ZWsgQHh1LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKyJabmFjem5pa2kgY3phc3UgdyBpLXfEmcW6bGUgJWkgcG8gMjMxMC0wNC0wNCBzxIUgcHJhd2RvcG9kb2JuaWUgc3ByemVkIDE5NzAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlVydWNoYW1pYW5pZSBkb2RhdGtvd3ljaCBwcnplYmllZ8OzdyBkbyByb3p3acSFemFuaWEgYmxva8OzdyB6YWRla2xhcm93YW55Y2hcbiIKKyJwcnpleiB3acSZY2VqIG5pxbwgamVkZW4gQGkuLi5cbiIKKyJQcnplYmllZyAxQjogUG9ub3duZSBwcnplc3p1a2l3YW5pZSBAbWNoIEBiw7N3XG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgJWk6CisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG0gQGIocykgaW4gQGkgJWk6IgorbXNnc3RyICJAbSBAYihpKSB3IGktd8SZxbpsZSAlaToiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgc3p1a2FuaWEgaS13xJl6xYJhICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiQEEgYml0bWFweSBpLXfEmXrFgsOzdyAoaW5vZGVfZHVwX21hcCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIGl0ZXJhY2ppIHBvIEBiYWNoIHcgaS13xJnFumxlICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgcG9kY3phcyBwb3ByYXdpYW5pYSByZWZjb3VudCBkbGEgQGJ1IHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyAlYiAoQGkgIgorIiVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlByemViaWVnIDFDOiBQcnplc3p1a2l3YW5pZSBrYXRhbG9nw7N3IHBvZCBrxIV0ZW0gaS13xJl6xYLDs3cgeiBAbW1pIEBiYW1pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwMworbXNnaWQgIlBhc3MgMUQ6IFJlY29uY2lsaW5nIEBtIEBic1xuIgorbXNnc3RyICJQcnplYmllZyAxRDogVXpnYWRuaWFuaWUgQG1jaCBAYsOzd1xuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyJQbGlrICVRIChAaSAjJWksIGN6YXMgbW9keWZpa2FjamkgJUlNKSBcbiIKKyIgIG1hICVyIEBtY2ggQGLDs3csIGR6aWVsb255Y2ggeiAlTiBwbGlrYW1pOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKEBpICMlaSwgY3phcyBtb2R5ZmlrYWNqaSAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxtZXRhZGFuZSBzeXN0ZW11IHBsaWvDs3c+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihKZXN0ICVOIGktd8SZesWCw7N3IHphd2llcmFqxIVjeWNoIHBvZHfDs2puaWUgemFkZWtsYXJvd2FuZSBAYmkuKVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisiUG9kd8Ozam5pZSB6YWRla2xhcm93YW5lIEBiaSBqdcW8IHByemVwaXNhbmUgbHViIHNrbG9ub3dhbmUuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJOaWUgbW/FvG5hIHNrbG9ub3dhxIcgcGxpa3U6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0OAorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAiUHJ6ZWJpZWcgMUU6IE9wdHltYWxpemFjamEgZHJ6ZXcgQHjDs3dcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgem9wdHltYWxpem93YcSHIGRyemV3YSBAeMOzdyAlcCAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIk9wdHltYWxpemFjamEgZHJ6ZXcgQHjDs3c6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgd2V3bsSZdHJ6bnk6IHpidXQgZHXFvGEgZ8WCxJlib2tvxZvEhyBtYWtzeW1hbG5hIGRyemV3YSBla3N0ZW50w7N3ICglYjsgIgorIm9jemVraXdhbmE9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICJkcnpld28gQHjDs3cgaS13xJl6xYJhICVpIChuYSBwb3ppb21pZSAlYikgbW9nxYJvYnkgYnnEhyBrcsOzdHN6ZS4gIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgImRyemV3byBAeMOzdyBpLXfEmXrFgmEgJWkgKG5hIHBvemlvbWllICViKSBtb2fFgm9ieSBiecSHIHfEmcW8c3plLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTAKK21zZ2lkICJQYXNzIDI6IENoZWNraW5nIEBkIHN0cnVjdHVyZVxuIgorbXNnc3RyICJQcnplYmllZyAyOiBTcHJhd2R6YW5pZSBzdHJ1a3R1cnkgQGTDs3dcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJAbiBAaSBudW1iZXIgZm9yICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiQsWCxJlkbnkgbnVtZXIgaS13xJl6xYJhIGRsYSAnLicgdyBpLXfEmcW6bGUgQGR1ICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiQEUgbWEgYsWCxJlkbnkgbnVtZXIgaS13xJl6xYJhOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkBFIG1hIEBEL25pZSB1xbx5d2FueSBAaSAlRGkuICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJARSBATCBkbyAnLicgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHBvaW50cyB0byBpbm9kZSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTUKK21zZ2lkICJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIKK21zZ3N0ciAiQEUgd3NrYXp1amUgbmEgQGkgKCVEaSkgcG/Fgm/FvG9ueSB3IHdhZGxpd3ltIEBiLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJARSBATCBkbyBAZHUgJVAgKCVEaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIkBFIEBMIGRvIGfFgsOzd25lZ28ga2F0YWxvZ3UuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzMwCittc2dpZCAiQEUgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbiIKK21zZ3N0ciAiQEUgbWEgbmllZG9wdXN6Y3phbG5lIHpuYWtpIHcgbmF6d2llLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiQnJha3VqZSAnLicgdyBpLXfEmcW6bGUgQGR1ICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLi4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJCcmFrdWplICcuLicgdyBpLXfEmcW6bGUgQGR1ICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIlBpZXJ3c3p5bSBAZWVtICclRG4nIChAaT0lRGkpIHcgaS13xJnFumxlIEBkdSAlaSAoJXApIEBzICcuJ1xuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIkRydWdpbSBAZWVtICclRG4nIChAaT0lRGkpIHcgaS13xJnFumxlIEBkdSAlaSBAcyAnLi4nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmFkZHIgZm9yIGlub2RlICVpICglUSkgaXMgJUlGLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzU1Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogaV9kaXJfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZCwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2NQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZnJhZyBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3MAorbXNnaWQgImlfZnJhZyBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIG1hIGLFgsSZZG5lIHVwcmF3bmllbmlhICglSW0pLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBjb3JydXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzg1Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGNvcnJ1cHRlZFxuIgorbXNnc3RyICJAaSBAZHUgJWksICVCLCBvZmZzZXQgJU46IEBkIHVzemtvZHpvbnlcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiQGkgQGR1ICVpLCAlQiwgb2Zmc2V0ICVOOiBuYXp3YSBwbGlrdSB6Ynl0IGTFgnVnYVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIkBpIEBkdSAlaSBtYSBuaWUgcHJ6eWR6aWVsb255ICVCLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkBlIEBkdSAnLicgdyBpLXfEmcW6bGUgQGR1ICVpIG5pZSBqZXN0IHpha2/FhGN6b255IHByemV6IE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIicuLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJAZSBAZHUgJy4uJyB3IGktd8SZxbpsZSBAZHUgJWkgbmllIGplc3QgemFrb8WEY3pvbnkgcHJ6ZXogTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgIkBpICVpICglUSkgamVzdCBASW0gQHZtIHpuYWtvd3ltLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGplc3QgQEltIEB2bSBAYm93eW0uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiQEUgamVzdCBwb3dpZWxvbnltIEBlZW0gJy4nLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLi4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjUKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4uJyBAZS5cbiIKK21zZ3N0ciAiQEUgamVzdCBwb3dpZWxvbnltIEBlZW0gJy4uJy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkLFgsSFZCB3ZXduxJl0cnpueTogbmllIG1vxbxuYSB6bmFsZcW6xIcgZGlyX2luZm8gZGxhICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJARSBtYSByZWNfbGVuICVEciwgQHMgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgIkBBIHN0cnVrdHVyeSBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGl0ZXJhdGluZyBvdmVyIGRpcmVjdG9yeSBibG9ja3M6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpdGVyYXRpbmcgb3ZlciBAZCBAYnM6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIGl0ZXJhY2ppIHBvIEBiYWNoIEBkdTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBvZGN6eXR1IEBiICViIEBkdSAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHphcGlzdSBAYiAlYiBAZHUgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJAQSBub3dlZ28gQGJ1IEBkdSBkbGEgaS13xJl6xYJhICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgendhbG5pYW5pYSBpLXfEmXrFgmEgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAiQGUgQGR1IGRsYSAnLicgdyAlcCAoJWkpIGplc3QgZHXFvHkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIkBpICVpICglUSkgamVzdCBASW0gRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkBpICVpICglUSkgamVzdCBASW0gZ25pYXpkZW0uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJVc3Rhd2lvbm8gZmlsZXR5cGUgZGxhIEBldSAnJURuJyB3ICVwICglaSkgbmEgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDkwCittc2dpZCAiQEUgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgQHMgJU4pLlxuIgorbXNnc3RyICJARSBtYSBixYLEmWRueSBmaWxldHlwZSAoYnnFgiAlRHQsIHBvd2luaWVuIGJ5xIcgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkBFIG1hIHVzdGF3aW9uZSBmaWxldHlwZS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJARSBtYSBuYXp3xJkgemVyb3dlaiBkxYJ1Z2/Fm2NpLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIkRvd2nEhXphbmllIHN5bWJvbGljem5lICVRIChAaSAjJWkpIGplc3QgYsWCxJlkbmUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAiQGIgcm96c3plcnpvbnljaCBhdHJ5YnV0w7N3IGRsYSBpLXfEmXrFgmEgJWkgKCVRKSBqZXN0IGLFgsSZZG55ICglSWYpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICJAZiB6YXdpZXJhIGR1xbxlIHBsaWtpLCBhbGUgYnJhayBmbGFnaSBMQVJHRV9GSUxFIHcgQFN1LlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgIkBwIGktd8SZxbpsZSBAZHUgSFRSRUUgJWQ6ICVCIG5pZSBtYSBvZHdvxYJhxYRcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZDogJUIgbWEgcG9kd8Ozam5lIG9kd2/FgmFuaWVcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZDogJUIgbWEgYsWCxJlkbnkgbWluaW1hbG55IGhhc3pcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZDogJUIgbWEgYsWCxJlkbnkgbWFrc3ltYWxueSBoYXN6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkLFgsSZZG5lIEBoICVkICglcSkuICIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKTogYmFkIGJsb2NrIG51bWJlciAlYi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQ0Cittc2dpZCAiQHAgQGggJWQgKCVxKTogYmFkIEBiIG51bWJlciAlYi5cbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZCAoJXEpOiBixYLEmWRueSBudW1lciBAYnUgJWIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICJAcCBpLXfEmcW6bGUgQGR1IEhUUkVFICVkOiBnxYLDs3dueSB3xJl6ZcWCIGplc3QgYsWCxJlkbnlcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIkBwIGktd8SZxbpsZSBAZHUgSFRSRUUgJWQ6ICVCIG1hIGLFgsSZZG55IGxpbWl0ICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIkBwIGktd8SZxbpsZSBAZHUgSFRSRUUgJWQ6ICVCIG1hIGLFgsSZZG55IGxpY3puaWsgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZDogJUIgbWEgbmllIHVwb3J6xIVka293YW7EhSB0YWJsaWPEmSBoYXN6dWrEhWPEhVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgZGVwdGggKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiQHAgaS13xJnFumxlIEBkdSBIVFJFRSAlZDogJUIgbWEgYsWCxJlkbsSFIGfFgsSZYm9rb8WbxIcgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc5Cittc2dpZCAiRHVwbGljYXRlIEBFIGZvdW5kLiAgIgorbXNnc3RyICJabmFsZXppb25vIHBvZHfDs2pueSBARS4gIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4KKyMuIEAtZXhwYW5kZWQ6IFJlbmFtZSB0byAlcworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorbXNnaWQgIiIKKyJARSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuIgorIlJlbmFtZSB0byAlcyIKK21zZ3N0ciAiIgorIkBFIG1hIG5pZXVuaWthbG7EhSBuYXp3xJkgcGxpa3UuXG4iCisiWm1pZW5pxIcgbmEgJXMiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlpuYWxlemlvbm8gcG9kd8Ozam55IEBlICclRG4nLlxuIgorIlx0WmF6bmFjem9ubyAlcCAoJWkpIGRvIHByemVidWRvd2FuaWEuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorCisjLiBALWV4cGFuZGVkOiBVbmV4cGVjdGVkIGJsb2NrIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTkKK21zZ2lkICJVbmV4cGVjdGVkIEBiIGluIEBoICVkICglcSkuXG4iCittc2dzdHIgIk5pZW9jemVraXdhbnkgQGIgdyBpLXfEmcW6bGUgQGR1IEhUUkVFICVkICglcSlcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBpbiBncm91cCAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAzCittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgaW4gQGcgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4iCittc2dzdHIgIiIKKyJAaSAlRGkgem5hbGV6aW9ueSB3IGdydXBpZSAlZywga3TDs3JhIG1hIHVzdGF3aW9uxIUgZmxhZ8SZIF9JTk9ORV9VTklOSVQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICJAaSAlRGkgem5hbGV6aW9ueSB3IGdydXBpZSAlZyBvYnN6YXJ1IG5pZSB1xbx5d2FueWNoIGktd8SZesWCw7N3LlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjEzCittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkBwIGktd8SZxbpsZSBAZHUgSFRSRUUgJWQ6IGfFgsOzd255IHfEmXplxYIgbWEgYsWCxJlkbsSFIHN1bcSZIGtvbnRyb2xuxIUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiBpbnRlcm5hbCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkBwIGktd8SZxbpsZSBAZHUgSFRSRUUgJWQ6IHdld27EmXRyem55IHfEmXplxYIgbWEgYsWCxJlkbsSFIHN1bcSZIGtvbnRyb2xuxIUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGkgQGR1ICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBuaWUgbWEgc3VteSBrb250cm9sbmVqLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkBpIEBkdSAlaSwgJUI6IEBkIHByemVjaG9kemkgdGVzdHksIGFsZSBtYSBixYLEmWRuxIUgc3VtxJkga29udHJvbG7EhS5cbiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIlJvem1pYXIgaS13xJl6xYJhIEBkdSB3ZXduxJl0cnpuZWdvICVpICglTikgbXVzaSBiecSHIHdpZWxva3JvdG5vxZtjacSFIDQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZpeGluZyBzaXplIG9mIGlubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgZmFpbGVkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRml4aW5nIHNpemUgb2YgaW5saW5lIEBkIEBpICVpIGZhaWxlZC5cbiIKK21zZ3N0ciAiUG9wcmF3aWVuaWUgcm96bWlhcnUgaS13xJl6xYJhIEBkdSB3ZXduxJl0cnpuZWdvICVpIG5pZSBwb3dpb2TFgm8gc2nEmS5cbiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICJTenlmcm93YW55IEBFIGplc3QgemJ5dCBrcsOzdGtpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjU1Cittc2dpZCAiUGFzcyAzOiBDaGVja2luZyBAZCBjb25uZWN0aXZpdHlcbiIKK21zZ3N0ciAiUHJ6ZWJpZWcgMzogU3ByYXdkemFuaWUgxYLEhWN6bm/Fm2NpIEBkw7N3XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiQHIgamVzdCBuaWUgcHJ6eWR6aWVsb255LiAiCisKKyMuIEAtZXhwYW5kZWQ6IE5vIHJvb20gaW4gbG9zdCtmb3VuZCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2NQorbXNnaWQgIk5vIHJvb20gaW4gQGwgQGQuICAiCittc2dzdHIgIkJyYWsgbWllanNjYSB3IEBkdSBAbC4gIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICJOaWUgcG9kxYLEhWN6b255IEBpIEBkdSAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gL0BsLiAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBzaG91bGQgYmUgJXEgKCVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjgwCittc2dpZCAiJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIEBzICVxICglZCkuXG4iCittc2dzdHIgIicuLicgdyAlUSAoJWkpIGplc3QgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiQsWCxJlkbnkgbHViIG5pZSBpc3RuaWVqxIVjeSAvQGwuIE5pZSBtb8W8bmEgcG9kxYLEhWN6ecSHLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgcm96c3plcnp5xIcgL0BsOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlY29ubmVjdCAlaTogJW1cbiIKK21zZ3N0ciAiTmllIG1vxbxuYSBwb2TFgsSFY3p5xIcgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBzenVrYW5pYSAvQGw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Jsb2NrOiAlbSBwb2RjemFzIHByw7NieSB1dHdvcnplbmlhIEBkdSAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfaW5vZGU6ICVtIHBvZGN6YXMgcHLDs2J5IHV0d29yemVuaWEgQGR1IC9AbFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gcG9kY3phcyB0d29yemVuaWEgbm93ZWdvIEBidSBAZHVcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSBwb2RjemFzIHphcGlzdSBAYnUgQGR1IGRsYSAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgcG9wcmF3aWFuaWEgbGljemJ5IGktd8SZesWCw7N3IHcgaS13xJnFumxlICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIHBvcHJhd2nEhyByb2R6aWNhIGktd8SZesWCYSAlaTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIHBvcHJhd2nEhyByb2R6aWNhIGktd8SZesWCYSAlaTogbmllIHpuYWxlemlvbm8gd3Bpc3UgQGR1IHJvZHppY2FcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgcm9vdCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHJvb3QgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgdHdvcnplbmlhIGfFgsOzd25lZ28gQGR1ICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHR3b3J6ZW5pYSBAZHUgL0BsICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJAciBuaWUgamVzdCBAZGllbTsgcHJ6ZXJ3YW5pZS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc2MAorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSBAci5cbiIKK21zZ3N0ciAiTmllIG1vxbxuYSBrb250eW51b3dhxIcgYmV6IGfFgsOzd25lZ28ga2F0YWxvZ3UuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCBuaWUgamVzdCBAZGllbSAoQGk9JWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIi9AbCBtYSBkYW5lIHdld27EmXRyem5lXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorIk5pZSBtb8W8bmEgcHJ6eWR6aWVsacSHIG1pZWpzY2EgbmEgL0BsLlxuIgorIlV0cmFjb25lIHBsaWtpIHpvc3RhbsSFIHVtaWVzemN6b25lIHcga2F0YWxvZ3UgZ8WCw7N3bnltIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKyJCcmFrIG1pZWpzY2EgbmEgb2R6eXNrYW5pZSB1dHJhY29ueWNoIHBsaWvDs3chXG4iCisiUHJvc3rEmSB1c3VuxIXEhyBkYW5lIHogc3lzdGVtdSBwbGlrw7N3IGkgdXJ1Y2hvbWnEhyBwb25vd25pZSBlMmZzY2suXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIi9AbCBqZXN0IHphc3p5ZnJvd2FueVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIlByemViaWVnIDNBOiBPcHR5bWFsaXphY2phIGthdGFsb2fDs3dcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICJUd29yemVuaWUgaXRlcmF0b3JhIGRpcnNfdG9faGFzaCBuaWUgcG93aW9kxYJvIHNpxJk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiT3B0eW1hbGl6YWNqYSBrYXRhbG9ndSAlcSAoJWQpIG5pZSBwb3dpb2TFgmEgc2nEmTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICJPcHR5bWFsaXphY2phIGthdGFsb2fDs3c6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIlByemViaWVnIDQ6IFNwcmF3ZHphbmllIGxpY3puaWvDs3cgb2R3b8WCYcWEXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiQHUgQGkgQHogJWkuICIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQGkgJWlcbiIKK21zZ3N0ciAiQHUgQGkgJWlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcmVmIGNvdW50IGlzICVJbCwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDQKK21zZ2lkICJAaSAlaSByZWYgY291bnQgaXMgJUlsLCBAcyAlTi4gICIKK21zZ3N0ciAibGljem5payBvZHdvxYJhxYQgaS13xJl6xYJhICVpIHd5bm9zaSAlSWwsIEBzICVOLiAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisiVVdBR0E6IELFgcSERCBQUk9HUkFNVSBXIEUyRlNDSyFcbiIKKyJcdExVQiBLVE/FmiBCRVpNw5NaR0kgKFRZKSBTUFJBV0RaQSBQT0RNT05UT1dBTlkgKMW7WVdZKSBTWVNURU0gUExJS8OTVy5cbiIKKyJpbm9kZV9saW5rX2luZm9bJWldPSVOLCBpbm9kZS5pX2xpbmtzX2NvdW50PSVJbC4gUG93aW5ueSBiecSHIHRha2llIHNhbWUhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiUHJ6ZWJpZWcgNTogU3ByYXdkemFuaWUgc3VtYXJ5Y3pueWNoIGluZm9ybWFjamkgbyBAZ2NoXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGlub2RlIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2MworbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBpIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAiV3lwZcWCbmllbmllIG5hIGtvxYRjdSBiaXRtYXB5IGktd8SZesWCw7N3IG5pZSBqZXN0IHVzdGF3aW9uZS4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIld5cGXFgm5pZW5pZSBuYSBrb8WEY3UgYml0bWFweSBAYsOzdyBuaWUgamVzdCB1c3Rhd2lvbmUuICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIlLDs8W8bmljZSBiaXRtYXB5IEBiw7N3OiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICJSw7PFvG5pY2UgYml0bWFweSBpLXfEmXrFgsOzdzogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIHdvbG55Y2ggaS13xJl6xYLDs3cgZGxhIGdydXB5ICMlZyAoJWksIG5hbGljem9ubyAlaikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IERpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4Cittc2dpZCAiRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEga2F0YWxvZ8OzdyBkbGEgZ3J1cHkgIyVnICglaSwgbmFsaWN6b25vICVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTIzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIHdvbG55Y2ggaS13xJl6xYLDs3cgKCVpLCBuYWxpY3pvbm8gJWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIHdvbG55Y2ggQGLDs3cgZGxhIGdydXB5ICMlZyAoJWIsIG5hbGljem9ubyAlYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzMworbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSB3b2xueWNoIEBiw7N3ICglYiwgbmFsaWN6b25vICVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorIkLFgcSERCBQUk9HUkFNVToga2/FhGNlIGJpdG1hcCBzeXN0ZW11IHBsaWvDs3cgKCMlTikgKCViLCAlYykgbmllIHpnYWR6YWrEhSBzacSZIHogIgorInBvbGljem9ueW1pIGtvxYRjYW1pIGJpdG1hcCAoJWksICVqKVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogZnVkZ2luZyBlbmQgb2YgYml0bWFwICglTilcbiIKK21zZ3N0ciAiQsWCxIVkIHdld27EmXRyem55OiBmYcWCc3p5d3kga29uaWVjIGJpdG1hcHkgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGlub2RlIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGkgQEI6ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIGtvcGlvd2FuaWEgdyB6YXN0xJlwY3plaiBiaXRtYXBpZSBpLXfEmXrFgsOzdzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBiIEBCOiAlbVxuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBrb3Bpb3dhbmlhIHcgemFzdMSZcGN6ZWogYml0bWFwaWUgQGLDs3c6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIkBiKGkpIGdydXB5ICVnIHPEhSB1xbx5d2FuZSwgYWxlIEBnIG1hIGZsYWfEmSBCTE9DS19VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUocykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaShzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbiIKK21zZ3N0ciAiaS13xJl6xYJ5IGdydXB5ICVnIHPEhSB1xbx5d2FuZSwgYWxlIEBnIG1hIGZsYWfEmSBJTk9ERV9VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIkBCIGktd8SZesWCw7N3IGdydXB5ICVnIG5pZSB6Z2FkemEgc2nEmSB6IHN1bcSFIGtvbnRyb2xuxIUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAQiBAYsOzdyBncnVweSAlZyBuaWUgemdhZHphIHNpxJkgeiBzdW3EhSBrb250cm9sbsSFLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiT2R0d29yennEhyBrcm9uaWvEmSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIlVha3R1YWxuacSHIGluZm9ybWFjamUgbyBsaW1pdGFjaCB0eXB1ICVOIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzZXR0aW5nIGJsb2NrIGdyb3VwIGNoZWNrc3VtIGluZm86ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBzZXR0aW5nIEBiIEBnIGNoZWNrc3VtIGluZm86ICVtXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgcG9kY3phcyB1c3Rhd2lhbmlhIGluZm9ybWFjamkgbyBzdW1pZSBrb250cm9sbmVqIGdydXB5IGJsb2vDs3c6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHphcGlzdSBpbmZvcm1hY2ppIG8gc3lzdGVtaWUgcGxpa8OzdzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMgenJ6dWNhbmlhIHphcGlzw7N3IG5hIHVyesSFZHplbmllIHByemVjaG93dWrEhWNlOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKK21zZ2lkICJFcnJvciB3cml0aW5nIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU46ICVtXG4iCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHphcGlzdSBpbmZvcm1hY2ppIG8gbGltaXRhY2ggdHlwdSAlTjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiTmllIG9ic8WCdcW8b255IGtvZCBixYLEmWR1ICgweCV4KSFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMjcyIGUyZnNjay9wcm9ibGVtLmM6MjI3NgorbXNnaWQgIklHTk9SRUQiCittc2dzdHIgIlpJR05PUk9XQU5PIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIncgbW92ZV9xdW90YV9pbm9kZSIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIlXFvHl0YSBwYW1pxJnEhzogJWQsIHVwxYJ5bsSFxYIgY3phczogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJyb3ptaWFyIGktd8SZesWCYT0lZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJwb2RjemFzIHJvenBvY3p5bmFuaWEgcHJ6ZXN6dWtpd2FuaWEgaS13xJl6xYLDs3ciCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInBvZGN6YXMgcHJ6ZXN6dWtpd2FuaWEgaS13xJl6xYLDs3ciCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAicG9kY3phcyB3eXdvxYJhbmlhIGV4dDJmc19ibG9ja19pdGVyYXRlIGRsYSBpLXfEmXrFgmEgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjIxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAicG9kY3phcyB3eXdvxYJhbmlhIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGRsYSBpLXfEmXrFgmEgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgIlNrcmFjYW5pZSIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIkN6eXN6Y3plbmllIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisiXHRcdFstbHwtTCBiYWRfYmxvY2tzX2ZpbGVdIFstQyBmZF0gWy1qIGV4dGVybmFsX2pvdXJuYWxdXG4iCisiXHRcdFstRSBleHRlbmRlZC1vcHRpb25zXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIlNrxYJhZG5pYTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxva10gWy1CIHJvem1fYmxva3VdXG4iCisiXHRcdFstbHwtTCBwbGlrX3dhZGxpd3ljaF9ibG9rw7N3XSBbLUMgZmRdIFstaiB6ZXduLWtyb25pa2FdXG4iCisiXHRcdFstRSBvcGNqZS1yb3pzemVyem9uZV0gWy16IHBsaWstdW5kb10gdXJ6xIVkemVuaWVcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlBvbW9jIGF3YXJ5am5hOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0eWN6bmUgbmFwcmF3aWFuaWUgKGJleiBweXRhxYQpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE5pZSB3eWtvbnl3YW5pZSB6bWlhbiB3IHN5c3RlbWllIHBsaWvDs3dcbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgUHJ6eWrEmWNpZSBvZHBvd2llZHppIFwidGFrXCIgbmEgd3N6eXN0a2llIHB5dGFuaWFcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgU3p1a2FuaWUgd2FkbGl3eWNoIGJsb2vDs3cgaSBkb2RhbmllIGljaCBkbyBsaXN0eVxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBXeW11c3plbmllIHNwcmF3ZHplbmlhIG5hd2V0IFwiY3p5c3RlZ29cIiBzeXN0ZW11ICIKKyJwbGlrw7N3XG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKK21zZ2lkICIiCisiIC12ICAgICAgICAgICAgICAgICAgIEJlIHZlcmJvc2VcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgVXNlIGFsdGVybmF0aXZlIHN1cGVyYmxvY2tcbiIKKyIgLUIgYmxvY2tzaXplICAgICAgICAgRm9yY2UgYmxvY2tzaXplIHdoZW4gbG9va2luZyBmb3Igc3VwZXJibG9ja1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICBTZXQgbG9jYXRpb24gb2YgdGhlIGV4dGVybmFsIGpvdXJuYWxcbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAgQWRkIHRvIGJhZGJsb2NrcyBsaXN0XG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIFNldCBiYWRibG9ja3MgbGlzdFxuIgorIiAteiB1bmRvX2ZpbGUgICAgICAgICBDcmVhdGUgYW4gdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgUG9rYXp5d2FuaWUgd2nEmWtzemVqIGlsb8WbY2kgaW5mb3JtYWNqaVxuIgorIiAtYiBzdXBlcmJsb2sgICAgICAgICBVxbx5Y2llIGlubmVnbyBzdXBlcmJsb2t1XG4iCisiIC1CIHJvem0uYmxva3UgICAgICAgIFd5bXVzemVuaWUgcm96bWlhcnUgYmxva3UgcHJ6eSBwb3N6dWtpd2FuaXUgIgorInN1cGVyYmxva3VcbiIKKyIgLWogemV3bi1rcm9uaWthICAgICAgVXN0YXdpZW5pZSBwb8WCb8W8ZW5pYSB6ZXduxJl0cnpuZWoga3JvbmlraVxuIgorIiAtbCBwbGlrX3rFgnljaF9ibG9rw7N3IERvZGFuaWUgZG8gbGlzdHkgd2FkbGl3eWNoIGJsb2vDs3dcbiIKKyIgLUwgcGxpa196xYJ5Y2hfYmxva8OzdyBVc3Rhd2llbmllIGxpc3R5IHdhZGxpd3ljaCBibG9rw7N3XG4iCisiIC16IHBsaWtfdW5kbyAgICAgICAgIFV0d29yemVuaWUgcGxpa3UgXCJ1bmRvXCIgcG96d2FsYWrEhWNlZ28gd3ljb2ZhxIcgIgorInptaWFueVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJXUvJXUgcGxpa8OzdyAoJTBkLiVkJSUgbmllY2nEhWfFgnljaCksICVsbHUvJWxsdSBibG9rw7N3XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IGlub2RlIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgaW5vZGVzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgdcW8eXR5IGktd8SZemXFgiAoJTIuMmYlJSB6ICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSB1xbx5dGUgaS13xJl6xYJ5ICglMi4yZiUlIHogJXUpXG4iCittc2dzdHJbMl0gIiIKKyJcbiIKKyIlMTJ1IHXFvHl0eWNoIGktd8SZesWCw7N3ICglMi4yZiUlIHogJXUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IHBsaWsgbmllY2nEhWfFgnkgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1IHBsaWtpIG5pZWNpxIVnxYJlICglMGQuJWQlJSlcbiIKK21zZ3N0clsyXSAiJTEydSBwbGlrw7N3IG5pZWNpxIVnxYJ5Y2ggKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IGthdGFsb2cgbmllY2nEhWfFgnkgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1IGthdGFsb2dpIG5pZWNpxIVnxYJlICglMGQuJWQlJSlcbiIKK21zZ3N0clsyXSAiJTEydSBrYXRhbG9nw7N3IG5pZWNpxIVnxYJ5Y2ggKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgIGxpY3piYSBpLXfEmXrFgsOzdyB6IGJsb2thbWkgaW5kL2RpbmQvdGluZDogJXUvJXUvJXVcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODIKK21zZ2lkICIgICAgICAgICAgICAgRXh0ZW50IGRlcHRoIGhpc3RvZ3JhbTogIgorbXNnc3RyICIgICAgICAgICAgICAgSGlzdG9ncmFtIGfFgsSZYm9rb8WbY2kgZWtzdGVudMOzdzogIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiUxMmxsdSB1xbx5dHkgYmxvayAoJTIuMmYlJSB6ICVsbHUpXG4iCittc2dzdHJbMV0gIiUxMmxsdSB1xbx5dGUgYmxva2kgKCUyLjJmJSUgeiAlbGx1KVxuIgorbXNnc3RyWzJdICIlMTJsbHUgdcW8eXR5Y2ggYmxva8OzdyAoJTIuMmYlJSB6ICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1IHdhZGxpd3kgYmxva1xuIgorbXNnc3RyWzFdICIlMTJ1IHdhZGxpd2UgYmxva2lcbiIKK21zZ3N0clsyXSAiJTEydSB3YWRsaXd5Y2ggYmxva8Ozd1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGR1xbx5IHBsaWtcbiIKK21zZ3N0clsxXSAiJTEydSBkdcW8ZSBwbGlraVxuIgorbXNnc3RyWzJdICIlMTJ1IGR1xbx5Y2ggcGxpa8Ozd1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSB6d3lrxYJ5IHBsaWtcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgend5a8WCZSBwbGlraVxuIgorbXNnc3RyWzJdICIiCisiXG4iCisiJTEydSB6d3lrxYJ5Y2ggcGxpa8Ozd1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUga2F0YWxvZ1xuIgorbXNnc3RyWzFdICIlMTJ1IGthdGFsb2dpXG4iCittc2dzdHJbMl0gIiUxMnUga2F0YWxvZ8Ozd1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBwbGlrIHVyesSFZHplbmlhIHpuYWtvd2Vnb1xuIgorbXNnc3RyWzFdICIlMTJ1IHBsaWtpIHVyesSFZHplxYQgem5ha293eWNoXG4iCittc2dzdHJbMl0gIiUxMnUgcGxpa8OzdyB1cnrEhWR6ZcWEIHpuYWtvd3ljaFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgcGxpayB1cnrEhWR6ZW5pYSBibG9rb3dlZ29cbiIKK21zZ3N0clsxXSAiJTEydSBwbGlraSB1cnrEhWR6ZcWEIGJsb2tvd3ljaFxuIgorbXNnc3RyWzJdICIlMTJ1IHBsaWvDs3cgdXJ6xIVkemXFhCBibG9rb3d5Y2hcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSBwb3Rva1xuIgorbXNnc3RyWzFdICIlMTJ1IHBvdG9raVxuIgorbXNnc3RyWzJdICIlMTJ1IHBvdG9rw7N3XG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGlua1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxpbmtzXG4iCittc2dzdHJbMF0gIiUxMnUgZG93acSFemFuaWVcbiIKK21zZ3N0clsxXSAiJTEydSBkb3dpxIV6YW5pYVxuIgorbXNnc3RyWzJdICIlMTJ1IGRvd2nEhXphxYRcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IGRvd2nEhXphbmllIHN5bWJvbGljem5lIgorbXNnc3RyWzFdICIlMTJ1IGRvd2nEhXphbmlhIHN5bWJvbGljem5lIgorbXNnc3RyWzJdICIlMTJ1IGRvd2nEhXphxYQgc3ltYm9saWN6bnljaCIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBzenlia2llIGRvd2nEhXphbmllIHN5bWJvbGljem5lKVxuIgorbXNnc3RyWzFdICIgKCV1IHN6eWJraWUgZG93acSFemFuaWEgc3ltYm9saWN6bmUpXG4iCittc2dzdHJbMl0gIiAoJXUgc3p5YmtpY2ggZG93acSFemHFhCBzeW1ib2xpY3pueWNoKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAiJTEydSBnbmlhemRvXG4iCittc2dzdHJbMV0gIiUxMnUgZ25pYXpkYVxuIgorbXNnc3RyWzJdICIlMTJ1IGduaWF6ZFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IHBsaWtcbiIKK21zZ3N0clsxXSAiJTEydSBwbGlraVxuIgorbXNnc3RyWzJdICIlMTJ1IHBsaWvDs3dcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgInBvZGN6YXMgc3ByYXdkemFuaWEsIGN6eSAlcyBqZXN0IHphbW9udG93YW55LiIKKworIzogZTJmc2NrL3VuaXguYzoyNTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIlV3YWdhISAlcyBqZXN0IHphbW9udG93YW55LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJVd2FnYSEgJXMgamVzdCB3IHXFvHljaXUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIGplc3QgemFtb250b3dhbnkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgamVzdCB3IHXFvHljaXUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY5Cittc2dpZCAiIgorIkNhbm5vdCBjb250aW51ZSwgYWJvcnRpbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIGtvbnR5bnVvd2HEhywgcHJ6ZXJ3YW5vLlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3MQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIlVXQUdBISEhIFN5c3RlbSBwbGlrw7N3IGplc3QgemFtb250b3dhbnkuIEtvbnR5bnVhY2phICoqKlNQT1dPRFVKRSoqKlxuIgorIioqKlBPV0HFu05FKioqIHVzemtvZHplbmllIHN5c3RlbXUgcGxpa8Ozdy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIk5hcHJhd2TEmSBrb250eW51b3dhxIc/IgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgInNwcmF3ZHphbmllIHByemVyd2FuZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIHphd2llcmEgc3lzdGVtIHBsaWvDs3cgeiBixYLEmWRhbWkiCisKKyM6IGUyZnNjay91bml4LmM6MzczCittc2dpZCAiIHdhcyBub3QgY2xlYW5seSB1bm1vdW50ZWQiCittc2dzdHIgIiBuaWUgYnnFgiBjenlzdG8gb2Rtb250b3dhbnkiCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiBjZWNoeSBnxYLDs3duZWdvIHN1cGVyYmxva3UgcsOzxbxuacSFIHNpxJkgb2Qga29waWkgemFwYXNvd2VqIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBiecWCIG1vbnRvd2FueSAldSByYXp5IGJleiBzcHJhd2R6YW5pYSIKKworIzogZTJmc2NrL3VuaXguYzozODYKK21zZ2lkICIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIKK21zZ3N0ciAiIG1hIGN6YXMgb3N0YXRuaWVnbyBzcHJhd2R6ZW5pYSBzeXN0ZW11IHBsaWvDs3cgdyBwcnp5c3rFgm/Fm2NpIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBwcnpldHJ3YcWCICV1IGRuaSBiZXogc3ByYXdkemFuaWEiCisKKyM6IGUyZnNjay91bml4LmM6NDAxCittc2dpZCAiLCBjaGVjayBmb3JjZWQuXG4iCittc2dzdHIgIiwgd3ltdXN6b25vIHNwcmF3ZHplbmllLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjQzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogY3p5c3R5LCAldS8ldSBwbGlrw7N3LCAlbGx1LyVsbHUgYmxva8OzdyIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChzcHJhd2R6ZW5pZSB3c3RyenltYW5lOyB6YXNpbGFuaWUgeiBiYXRlcmlpKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICIgKHNwcmF3ZHplbmllIHBvIG5hc3TEmXBueW0gbW9udG93YW5pdSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIihzcHJhd2R6ZW5pZSB6YSAlbGQgbW9udG93YcWEKSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAiQsWBxIREOiBOaWUgbW/FvG5hIG90d29yennEhyAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAiQsWCxJlkbmEgd2Vyc2phIEVBLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjY5MgorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICJCxYLEmWRueSBwYXJhbWV0ciByb3ptaWFydSBidWZvcmEgb2Rjenl0dSB6IHd5cHJ6ZWR6ZW5pZW0uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVua25vd24gZXh0ZW5kZWQgb3B0aW9uOiAlc1xuIgorbXNnc3RyICJOaWV6bmFuYSBvcGNqYSByb3pzemVyem9uYTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgc2vFgmFkbmkgdyBwbGlrdSBrb25maWd1cmFjeWpueW0gZTJmc2NrICglcywgbGluaWEgJWQpXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiQsWCxIVkIHBvZGN6YXMga29udHJvbGkgZGVza3J5cHRvcmEgcGxpa3UgJWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAiQsWCxJlkbmUgaW5mb3JtYWNqZSBkb3BlxYJuaWFqxIVjZSBkZXNrcnlwdG9yYSBwbGlrw7N3IgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiTW/FvG5hIHBvZGHEhyB0eWxrbyBqZWRuxIUgeiBvcGNqaSAtcC8tYSwgLW4gbHViIC15LiIKKworIzogZTJmc2NrL3VuaXguYzo4NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIC10IG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCittc2dzdHIgIk9wY2phIC10IG5pZSBqZXN0IG9ic8WCdWdpd2FuYSBwcnpleiB0xJkgd2Vyc2rEmSBlMmZzY2suXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgcm96d2nEhXphxIcgJyVzJyIKKworIzogZTJmc2NrL3VuaXguYzo5NTIKK21zZ2lkICJUaGUgLW4gYW5kIC1EIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIk9wY2plIC1uIGkgLUQgc8SFIG5pZWtvbXBhdHliaWxuZS4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJPcGNqZSAtbiBpIC1jIHPEhSBuaWVrb21wYXR5YmlsbmUuIgorCisjOiBlMmZzY2svdW5peC5jOjk2MgorbXNnaWQgIlRoZSAtbiBhbmQgLWwvLUwgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiT3BjamUgLW4gaSAtbC8tTCBzxIUgbmlla29tcGF0eWJpbG5lLiIKKworIzogZTJmc2NrL3VuaXguYzo5ODYKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiT3BjamUgLUQgaSAtRSBmaXhlc19vbmx5IHPEhSBuaWVrb21wYXR5YmlsbmUuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJPcGNqZSAtRSBibWFwMmV4dGVudCBpIGZpeGVzX29ubHkgc8SFIG5pZWtvbXBhdHliaWxuZS4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAiT3BjamUgLWMgb3JheiAtbC8tTCBuaWUgbW9nxIUgYnnEhyBwb2RhbmUgamVkbm9jemXFm25pZS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbmllIGplc3QgbGljemLEhSBjYcWCa293aXTEhVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJCxYLEmWRueSBhcmd1bWVudCBuaWVsaWN6Ym93eSBkbGEgLSVjIChcIiVzXCIpXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTE5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGludGVydmFsIGlzICV1IHNlY29uZHMgYW5kIHRvdGFsIHdhaXQgdGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2UgIgorIndhaXQuLi5cbiIKK21zZ3N0ciAiIgorIlByemVkemlhxYIgTU1QIHRvICV1IHNlaywgYSBjYcWCa293aXR5IGN6YXMgb2N6ZWtpd2FuaWEgJXUgc2VrLiBQcm9zesSZICIKKyJjemVrYcSHLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgInBvZGN6YXMgc3ByYXdkemFuaWEgYmxva3UgTU1QIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTcgbWlzYy90dW5lMmZzLmM6Mjc5MgorbXNnaWQgIiIKKyJJZiB5b3UgYXJlIHN1cmUgdGhlIGZpbGVzeXN0ZW0gaXMgbm90IGluIHVzZSBvbiBhbnkgbm9kZSwgcnVuOlxuIgorIid0dW5lMmZzIC1mIC1FIGNsZWFyX21tcCB7ZGV2aWNlfSdcbiIKK21zZ3N0ciAiIgorIkplxZtsaSBzeXN0ZW0gcGxpa8OzdyBuaWUgamVzdCBuYSBwZXdubyB1xbx5d2FueSBwcnpleiDFvGFkZW4gc3lzdGVtLCBtb8W8bmEgIgorInVydWNob21pxIc6XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHt1cnrEhWR6ZW5pZX0nXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJwb2RjemFzIG9kY3p5dHUgYmxva3UgTU1QIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyJOYWRwaXN5d2FuaWUgaXN0bmllasSFY2VnbyBzeXN0ZW11IHBsaWvDs3c7IG1vxbxuYSB0byB3eWNvZmHEhyBwb2xlY2VuaWVtOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICJwb2RjemFzIHByw7NieSB1c3VuacSZY2lhICVzIgorCisjOiBlMmZzY2svdW5peC5jOjEzMTkgbWlzYy9ta2UyZnMuYzoyNjA3IHJlc2l6ZS9tYWluLmM6MjQyCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHNldHVwIHVuZG8gZmlsZVxuIgorbXNnc3RyICJwb2RjemFzIHByw7NieSB1dHdvcnplbmlhIHBsaWt1IGNvZm5pxJljaWEgKHVuZG8pXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICJCxYLEhWQ6IHdlcnNqYSBiaWJsaW90ZWtpIGV4dDJmcyBqZXN0IHphIHN0YXJhIVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICJwb2RjemFzIHByw7NieSB6YWluaWNqb3dhbmlhIHByb2dyYW11IgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHRVxbx5d2FuZSAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAiaW50ZXJha3R5d25hIG5hcHJhd2Egd3ltYWdhIHRlcm1pbmFsYSIKKworIzogZTJmc2NrL3VuaXguYzoxNDY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIgorbXNnc3RyICIlczogJXMgcHLDs2JhIHXFvHljaWEgemFwYXNvd3ljaCBibG9rw7N3Li4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIlN1cGVyYmxvayBixYLEmWRueSwiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OQorbXNnaWQgIkdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIgorbXNnc3RyICJEZXNrcnlwdG9yeSBncnVwIHd5Z2zEhWRhasSFIMW6bGUuLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyBwb2RjemFzIHByw7NieSB1xbx5Y2lhIHphcGFzb3d5Y2ggYmxva8OzdyIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6IHBvd3JhY2FuaWUgZG8gb3J5Z2luYWxuZWdvIHN1cGVyYmxva3VcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIldlcnNqYSBzeXN0ZW11IHBsaWvDs3cgamVzdCB6Ynl0IGR1xbxhIGRsYSB0ZWogd2Vyc2ppIGUyZnNjay5cbiIKKyIobHViIHN1cGVyYmxvayBzeXN0ZW11IHBsaWvDs3cgamVzdCB1c3prb2R6b255KVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTkKK21zZ2lkICJDb3VsZCB0aGlzIGJlIGEgemVyby1sZW5ndGggcGFydGl0aW9uP1xuIgorbXNnc3RyICJDenkgdG8gbW/FvGUgamVzdCBwYXJ0eWNqYSB6ZXJvd2VqIGTFgnVnb8WbY2k/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIlRyemViYSBtaWXEhyBkb3N0xJlwICVzIGRvIHN5c3RlbXUgcGxpa8OzdyBsdWIgYnnEhyByb290ZW1cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICJaYXBld25lIG5pZSBpc3RuaWVqxIVjZSB1cnrEhWR6ZW5pZSBsdWIgc3dhcD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI5Cittc2dpZCAiRmlsZXN5c3RlbSBtb3VudGVkIG9yIG9wZW5lZCBleGNsdXNpdmVseSBieSBhbm90aGVyIHByb2dyYW0/XG4iCittc2dzdHIgIiIKKyJTeXN0ZW0gcGxpa8OzdyB6YW1vbnRvd2FueSBsdWIgb3R3YXJ0eSBuYSB3ecWCxIVjem5vxZvEhyBwcnpleiBpbm55IHByb2dyYW0/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIlphcGV3bmUgbmllIGlzdG5pZWrEhWNlIHVyesSFZHplbmllP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIkR5c2sgemFiZXpwaWVjem9ueSBwcnplZCB6YXBpc2VtOyBtb8W8bmEgdcW8ecSHIG9wY2ppIC1uIGFieSBzcHJhd2R6acSHXG4iCisidXJ6xIVkemVuaWUgdyB0cnliaWUgdHlsa28gZG8gb2Rjenl0dS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjA0Cittc2dpZCAiR2V0IGEgbmV3ZXIgdmVyc2lvbiBvZiBlMmZzY2shIgorbXNnc3RyICJQb3RyemViYSBub3dzemVqIHdlcnNqaSBlMmZzY2shIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgInBvZGN6YXMgc3ByYXdkemFuaWEga3JvbmlraSBkbGEgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGggZmlsZSBzeXN0ZW0gY2hlY2siCittc2dzdHIgIk5pZSBtb8W8bmEga29udHludW93YcSHIHNwcmF3ZHphbmlhIHN5c3RlbXUgcGxpa8OzdyIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIlV3YWdhOiBwb21pbmnEmXRvIG9kdHdhcnphbmllIHoga3JvbmlraSB6IHBvd29kdSBzcHJhd2R6YW5pYSB3IHRyeWJpZSB0eWxrb1xuIgorImRvIG9kY3p5dHUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY3NAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gc2V0IHN1cGVyYmxvY2sgZmxhZ3Mgb24gJXNcbiIKK21zZ3N0ciAibmllIG1vxbxuYSB1c3Rhd2nEhyBmbGFnIHN1cGVyYmxva3UgbmEgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gJXNcbiIKK21zZ3N0ciAiTmFwb3RrYW5vIGLFgsSFZCBzdW15IGtvbnRyb2xuZWoga3JvbmlraSB3ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICJVc3prb2R6b25hIGtyb25pa2EgdyAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJwb2RjemFzIG9kdHdhcnphbmlhIGtyb25pa2kgZGxhICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyBtYSB3xYLEhWN6b25lIG5pZSBvYnPFgnVnaXdhbmUgY2VjaHk6IgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIlczogJXMgcG9kY3phcyBvZGN6eXR1IGktd8SZesWCYSB3YWRsaXd5Y2ggYmxva8Ozd1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIk5pZSB3csOzxbx5IHRvIGRvYnJ6ZSwgYWxlIHNwcsOzYnVqxJkga29udHludW93YcSHLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICglZCBibG9ja3MpOiAiCittc2dzdHIgIlR3b3J6ZW5pZSBrcm9uaWtpICglZCBibG9rw7N3KTogIgorCisjOiBlMmZzY2svdW5peC5jOjE4MjgKK21zZ2lkICIgRG9uZS5cbiIKK21zZ3N0ciAiIFd5a29uYW5vLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKK21zZ2lkICIiCisiXG4iCisiKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKioga3JvbmlrYSB6b3N0YcWCYSB6cmVnZW5lcm93YW5hICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICJwcnplcndhbm8iCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlczogZTJmc2NrIHByemVyd2FueS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgIlJlc3RhcnQgZTJmc2NrIG9kIHBvY3rEhXRrdS4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAicG9kY3phcyByZXNldG93YW5pYSBrb250ZWtzdHUiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiogU1lTVEVNIFBMSUvDk1cgWk1PRFlGSUtPV0FOWSAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqIFdZTUFHQU5ZIFJFU1RBUlQgU1lTVEVNVSAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFVXQUdBOiBTeXN0ZW0gcGxpa8OzdyBuYWRhbCBtYSBixYLEmWR5ICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAidFR5WSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIndXYUEiCisKKyM6IGUyZnNjay91dGlsLmM6MTk3Cittc2dpZCAiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIKK21zZ3N0ciAiICgndycgd8WCxIVjemEgJ3RhaycgbmEgd3N6eXN0a28pICIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjx0PiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxuPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIiAodC9uKSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgImFudWxvd2FubyFcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjQKK21zZ2lkICJ5ZXMgdG8gYWxsXG4iCittc2dzdHIgInRhayBuYSB3c3p5c3Rrb1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NgorbXNnaWQgInllc1xuIgorbXNnc3RyICJ0YWtcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICJuaWVcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyBub1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IG5pZVxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IHllc1xuIgorIlxuIgorbXNnc3RyICIiCisiJXM/IHRha1xuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgInllcyIKK21zZ3N0ciAidGFrIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgIm5vIgorbXNnc3RyICJuaWUiCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiZTJmc2NrX3JlYWRfYml0bWFwczogbmllZG9wdXN6Y3phbG5lIGJsb2tpIGJpdG1hcHkgZGxhICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMwNworbXNnaWQgInJlYWRpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMiCittc2dzdHIgIm9kY3p5dHUgYml0bWFwIGktd8SZesWCw7N3IGkgYmxva8OzdyIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAicG9kY3phcyBwb25hd2lhbmlhIHByw7NieSBvZGN6eXR1IGJpdG1hcCBkbGEgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzMxCittc2dpZCAid3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyIKK21zZ3N0ciAiemFwaXN1IGJpdG1hcCBibG9rw7N3IGkgaS13xJl6xYLDs3ciCisKKyM6IGUyZnNjay91dGlsLmM6MzM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJld3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgInBvZGN6YXMgcG9ub3duZWdvIHphcGlzdSBiaXRtYXAgYmxpa8OzdyBpIGktd8SZesWCw7N3IGRsYSAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIiVzOiBOSUVPQ1pFS0lXQU5BIE5JRVNQw5NKTk/FmsSGOyBUUlpFQkEgVVJVQ0hPTUnEhiBmc2NrIFLEmENaTklFLlxuIgorIlx0KHR6bi4gYmV6IG9wY2ppIC1hIGFuaSAtcClcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICJVxbx5dGEgcGFtacSZxIc6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIlXFvHl0YSBwYW1pxJnEhzogJWx1LCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDQwCisjLCBjLWZvcm1hdAorbXNnaWQgInRpbWU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCittc2dzdHIgImN6YXM6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAidXDFgnluxIXFgiBjemFzOiAlNi5mXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDgwIGUyZnNjay91dGlsLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJwb2RjemFzIG9kY3p5dHUgaS13xJl6xYJhICVsdSB3ICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAicG9kY3phcyB6YXBpc3UgaS13xJl6xYJhICVsdSB3ICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKyJOSUVPQ1pFS0lXQU5BIE5JRVNQw5NKTk/FmsSGOiBzeXN0ZW0gcGxpa8OzdyB6b3N0YcWCIHptb2R5Zmlrb3dhbnkgcG9kY3phcyAiCisiZHppYcWCYW5pYSBmc2NrLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiemFrb8WEY3pvbm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWIgYmxvY2tfc2l6ZV0gWy1pIGlucHV0X2ZpbGVdIFstbyBvdXRwdXRfZmlsZV0gWy1zdnduZl1cbiIKKyIgICAgICAgWy1jIGJsb2Nrc19hdF9vbmNlXSBbLWQgZGVsYXlfZmFjdG9yX2JldHdlZW5fcmVhZHNdIFstZSAiCisibWF4X2JhZF9ibG9ja3NdXG4iCisiICAgICAgIFstcCBudW1fcGFzc2VzXSBbLXQgdGVzdF9wYXR0ZXJuIFstdCB0ZXN0X3BhdHRlcm4gWy4uLl1dXVxuIgorIiAgICAgICBkZXZpY2UgW2xhc3RfYmxvY2sgW2ZpcnN0X2Jsb2NrXV1cbiIKK21zZ3N0ciAiIgorIlNrxYJhZG5pYTogJXMgWy1iIHJvem1fYmxva3VdIFstaSBwbGlrX3dlal0gWy1vIHBsaWtfd3lqXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxva8Ozd19uYXJhel0gWy1kIHdzcF9vcMOzxbpuX21pxJlkenlfb2Rjenl0YW1pXVxuIgorIiAgICAgICBbLWUgbWFrc193YWRsaXd5Y2hfYmxva8Ozd10gWy1wIHByemViaWVnw7N3XVxuIgorIiAgICAgICBbLXQgd3rDs3JfdGVzdG93eSBbLXQgd3rDs3JfdGVzdG93eSBbLi4uXV1dXG4iCisiICAgICAgIHVyesSFZHplbmllIFtvc3RhdG5pX2Jsb2sgW3BpZXJ3c3p5X2Jsb2tdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IE9wY2plIC1uIGkgLXcgd3lrbHVjemFqxIUgc2nEmSB3emFqZW1uaWUuXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2LjJmJSUgZG9uZSwgJXMgZWxhcHNlZC4gKCVkLyVkLyVkIGVycm9ycykiCittc2dzdHIgIkdvdG93ZSB3ICU2LjJmJSUsIG1pbsSZxYJvICVzIChixYLEmWTDs3c6ICVkLyVkLyVkKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAiVGVzdG93YW5pZSB3em9yY2VtIGxvc293eW06ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiVGVzdG93YW5pZSB3em9yY2VtIDB4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM3OCBtaXNjL2JhZGJsb2Nrcy5jOjQ1MQorbXNnaWQgImR1cmluZyBzZWVrIgorbXNnc3RyICJwb2RjemFzIHByemVza2FraXdhbmlhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIkR6aXduYSB3YXJ0b8WbxIcgKCVsZCkgdyBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAicG9kY3phcyBleHQyZnNfc3luY19kZXZpY2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAicG9kY3phcyByb3pwb2N6eW5hbmlhIGl0ZXJhY2ppIHBvIGxpxZtjaWUgd2FkbGl3eWNoIGJsb2vDs3ciCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICJwb2RjemFzIHByenlkemllbGFuaWEgYnVmb3LDs3ciCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTE1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGJsb2NrcyAlbHUgdG8gJWx1XG4iCittc2dzdHIgIlNwcmF3ZHphbmllIGJsb2vDs3cgb2QgJWx1IGRvICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyMAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtb25seSBtb2RlXG4iCittc2dzdHIgIlBvc3p1a2l3YW5pZSB3YWRsaXd5Y2ggYmxva8OzdyB3IHRyeWJpZSB0eWxrbyBkbyBvZGN6eXR1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJQb3N6dWtpd2FuaWUgd2FkbGl3eWNoIGJsb2vDs3cgKHR5bGtvIG9kY3p5dCk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICJaYnl0IGR1xbxvIHdhZGxpd3ljaCBibG9rw7N3LCBwcnplcndhbmllIHRlc3R1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIlBvc3p1a2l3YW5pZSB3YWRsaXd5Y2ggYmxva8OzdyB3IHRyeWJpZSBvZGN6eXR1IGkgemFwaXN1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICJPZCBibG9rdSAlbHUgZG8gJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIk9kY3p5dCBpIHBvcsOzd255d2FuaWU6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODEKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIlBvc3p1a2l3YW5pZSB3YWRsaXd5Y2ggYmxva8OzdyB3IHRyeWJpZSB6IG5pZWRlc3RydWt0eXdueW0gemFwaXNlbVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICJQb3N6dWtpd2FuaWUgd2FkbGl3eWNoIGJsb2vDs3cgKG9kY3p5dCBpIG5pZWRlc3RydWt0eXdueSB6YXBpcylcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIk90cnp5bWFubyBwcnplcndhbmllLCBzcHJ6xIV0YW1cbiIKKyJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICJwb2RjemFzIHphcGlzdSB0ZXN0b3d5Y2ggZGFueWNoLCBibG9rICVsdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5OTggbWlzYy91dGlsLmM6MTMxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQ7ICIKK21zZ3N0ciAiJXMgamVzdCB6YW1vbnRvd2FueTsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDAKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAiYmFkYmxvY2tzIHd5bXVzem9uZSBtaW1vIHRvLiBNYW0gbmFkemllasSZLCDFvGUgL2V0Yy9tdGFiIHNpxJkgbXlsaS5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICJuaWUgamVzdCBiZXpwaWVjem5pZSB1cnVjaGFtaWHEhyBiYWRibG9ja3MhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICIlcyBqZXN0IG5hand5cmHFum5pZWogdcW8eXdhbnkgcHJ6ZXogc3lzdGVtOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMworbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJiYWRibG9ja3Mgd3ltdXN6b25lIG1pbW8gdG8uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgImLFgsSZZG55ICVzIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTEyNworIywgYy1mb3JtYXQKK21zZ2lkICJUb28gYmlnIG1heCBiYWQgYmxvY2tzIGNvdW50ICV1IC0gbWF4aW11bSBpcyAldSIKK21zZ3N0ciAiWmJ5dCBkdcW8YSBtYWtzeW1hbG5hIGxpY3piYSB3YWRsaXd5Y2ggYmxva8OzdyAldSAtIG1ha3N5bWFsbmEgdG8gJXUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE1NAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRlc3RfcGF0dGVybiAtICVzIgorbXNnc3RyICJuaWUgbW/FvG5hIHByenlkemllbGnEhyBwYW1pxJljaSBuYSB3em9yemVjX3Rlc3Rvd3kgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIlcgdHJ5YmllIG9kY3p5dHUtemFwaXN1IG1vxbxuYSBwb2RhxIcgbmFqd3nFvGVqIGplZGVuIHd6b3J6ZWMgdGVzdG93eSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTkwCittc2dpZCAiUmFuZG9tIHRlc3RfcGF0dGVybiBpcyBub3QgYWxsb3dlZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAiVyB0cnliaWUgc2FtZWdvIG9kY3p5dHUgbmllIG1vxbxuYSBwb2RhxIcgd3pvcmNhX3Rlc3Rvd2VnbyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjA0Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG1hbnVhbGx5XG4iCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIG9rcmXFm2xpxIcgcm96bWlhcnUgdXJ6xIVkemVuaWE7IHRyemViYSBwb2RhxIdcbiIKKyJyb3ptaWFyIHLEmWN6bmllXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgInBvZGN6YXMgcHLDs2J5IG9rcmXFm2xlbmlhIHJvem1pYXJ1IHVyesSFZHplbmlhIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICJvc3RhdG5pIGJsb2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJwaWVyd3N6eSBibG9rIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgImLFgsSZZG55IHBvY3rEhXRrb3d5IGJsb2sgKCVsbHUpOiBtdXNpIGJ5xIcgbW5pZWpzenkgbmnFvCAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiYsWCxJlkbnkgcG9jesSFdGtvd3kgYmxvayAoJWxsdSk6IG11c2kgYnnEhyB3YXJ0b8WbY2nEhSAzMi1iaXRvd8SFIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyODcKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbi1tZW1vcnkgYmFkIGJsb2NrcyBsaXN0IgorbXNnc3RyICJwb2RjemFzIHR3b3J6ZW5pYSBsaXN0eSB3YWRsaXd5Y2ggYmxva8OzdyB3IHBhbWnEmWNpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAicGxpayB3ZWrFm2Npb3d5IC0gYsWCxJlkbnkgZm9ybWF0IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAicG9kY3phcyBkb2Rhd2FuaWEgZG8gbGlzdHkgd2FkbGl3eWNoIGJsb2vDs3cgdyBwYW1pxJljaSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICIiCisiUHJ6ZWJpZWcgemFrb8WEY3pvbnksIHpuYWxlemlvbm8gJXUgd2FkbGl3eWNoIGJsb2vDs3cgKGLFgsSZZMOzdzogJWQvJWQvJWQpLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXBSVmZdIFstKz1hQWNDZERlaWpQc1N0VHVdIFstdiB2ZXJzaW9uXSBmaWxlcy4uLlxuIgorbXNnc3RyICJTa8WCYWRuaWE6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHdlcnNqYV0gcGxpa2kuLi5cbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICJixYLEmWRueSBwcm9qZWt0IC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICJixYLEmWRuYSB3ZXJzamEgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAicG9kY3phcyBwcsOzYnkgc3RhdCAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAicG9kY3phcyBvZGN6eXR1IGZsYWcgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIkZsYWdpICVzIHVzdGF3aW9ubyBqYWtvICIKKworIzogbWlzYy9jaGF0dHIuYzoyNTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAicG9kY3phcyB1c3Rhd2lhbmlhIGZsYWcgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJXZXJzamEgJXMgdXN0YXdpb25hIGpha28gJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAicG9kY3phcyB1c3Rhd2lhbmlhIHdlcnNqaSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlByb2pla3QgJXMgdXN0YXdpb255IG5hICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgInBvZGN6YXMgdXN0YXdpYW5pYSBwcm9qZWt0dSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyOTcKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBwYXRoIHZhcmlhYmxlIGluIGNoYXR0cl9kaXJfcHJvYyIKK21zZ3N0ciAiTmllIG1vxbxuYSBwcnp5ZHppZWxpxIcgem1pZW5uZWogcGF0aCB3IGNoYXR0cl9kaXJfcHJvYyIKKworIzogbWlzYy9jaGF0dHIuYzozMzcKK21zZ2lkICI9IGlzIGluY29tcGF0aWJsZSB3aXRoIC0gYW5kICtcbiIKK21zZ3N0ciAiPSBqZXN0IG5pZWtvbXBhdHliaWxuZSB6IC0gaSArXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIlRyemViYSB1xbx5xIcgJy12JywgPSwgLSBsdWIgK1xuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgInBvZGN6YXMgb2Rjenl0dSBpLXfEmXrFgmEgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAicG9kY3phcyByb3pzemVyemFuaWEga2F0YWxvZ3UiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgZG93acSFenl3YW5pYSBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSAldSIKK21zZ3N0ciAicG9kY3phcyB6YXBpc3UgaS13xJl6xYJhICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEzOSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE2MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHd5cGlzeXdhbmlhIGF0cnlidXTDs3cgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJwb2RjemFzIG90d2llcmFuaWEgaS13xJl6xYJhICV1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgInBvZGN6YXMgcHJ6eWR6aWVsYW5pYSBwYW1pxJljaSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNzYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyBvZGN6eXR1IGF0cnVieXR1IFwiJXNcIiBkbGEgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGF0dHJpYnV0ZSBcIiVzXCIgdG8gaW5vZGUgJXUiCittc2dzdHIgInBvZGN6YXMgemFwaXN1IGF0cnlidXR1IFwiJXNcIiBkbyBpLXfEmXrFgmEgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgInBvZGN6YXMgemFteWthbmlhIGktd8SZesWCYSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgcHJ6eWR6aWVsYW5pYSBpLXfEmXrFgmEgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgdHdvcnplbmlhIGktd8SZesWCYSBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHR3b3J6ZW5pYSBkb3dpxIV6YW5pYSBzeW1ib2xpY3puZWdvIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgc3p1a2FuaWEgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHR3b3J6ZW5pYSBrYXRhbG9ndSBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgInBvZGN6YXMgb3R3aWVyYW5pYSBcIiVzXCIgdyBjZWx1IHNrb3Bpb3dhbmlhIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgem1pYW55IGthdGFsb2d1IHJvYm9jemVnbyBuYSBcIiVzXCIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyBvdHdpZXJhbmlhIGthdGFsb2d1IFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbHN0YXQgXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHd5a29ueXdhbmlhIGxzdGF0IG5hIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyB0d29yemVuaWEgcGxpa3Ugc3BlY2phbG5lZ28gXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorbXNnaWQgIm1hbGxvYyBmYWlsZWQiCittc2dzdHIgIm1hbGxvYyBuaWUgcG93aW9kxYJvIHNpxJkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBvZGN6eXR1IGRvd2nEhXphbmlhIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NzUKK21zZ2lkICJzeW1saW5rIGluY3JlYXNlZCBpbiBzaXplIGJldHdlZW4gbHN0YXQoKSBhbmQgcmVhZGxpbmsoKSIKK21zZ3N0ciAiZG93acSFemFuaWUgc3ltYm9saWN6bmUgendpxJlrc3p5xYJvIHJvem1pYXIgbWnEmWR6eSBsc3RhdCgpIGEgcmVhZGxpbmsoKSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBzeW1saW5rXCIlc1wiIgorbXNnc3RyICJwb2RjemFzIHphcGlzdSBkb3dpxIV6YW5pYSBzeW1ib2xpY3puZWdvIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyB6YXBpc3UgcGxpa3UgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBtYWtpbmcgZGlyIFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyB0d29yemVuaWEga2F0YWxvZ3UgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgyNgorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAicG9kY3phcyB6bWlhbnkga2F0YWxvZ3UiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiaWdub3Jvd2FuaWUgd3Bpc3UgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGlub2RlIGZvciBcIiVzXCIiCittc2dzdHIgInBvZGN6YXMgdXN0YXdpYW5pYSBpLXfEmXrFgmEgZGxhIFwiJXNcIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAicG9kY3phcyB1c3Rhd2lhbmlhIHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyBkbGEgXCIlc1wiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorbXNnaWQgIndoaWxlIHNhdmluZyBpbm9kZSBkYXRhIgorbXNnc3RyICJwb2RjemFzIHphcGlzeXdhbmlhIGRhbnljaCBpLXfEmXrFgmEiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICIiCisiU2vFgmFkbmlhOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2s9PG51bWVyPl0gWy1vIGJsb2Nrc2l6ZT08cm96bWlhcj5dICIKKyJ1cnrEhWR6ZW5pZVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9rw7N3IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgImtsYXN0csOzdyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJHcnVwYSAlbHU6IChCbG9raSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGNzdW0gMHglMDR4IgorbXNnc3RyICIgIHN1bWEga29udHIuIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoT0NaRUtJV0FOQSAweCUwNHgpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMgc3VwZXJibG9rIHBvZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJHxYLDs3dueSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIkJhY2t1cCIKK21zZ3N0ciAiWmFwYXNvd3kiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzgKK21zZ2lkICIsIEdyb3VwIGRlc2NyaXB0b3JzIGF0ICIKK21zZ3N0ciAiLCBEZXNrcnlwdG9yeSBncnVwIHBvZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDIKK21zZ2lkICIiCisiXG4iCisiICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgWmFyZXplcndvd2FuZSBibG9raSBHRFQgcG9kICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0OQorbXNnaWQgIiBHcm91cCBkZXNjcmlwdG9yIGF0ICIKK21zZ3N0ciAiLCBEZXNrcnlwdG9yeSBncnVwIHBvZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgQml0bWFwYSBibG9rw7N3IHBvZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIsIHN1bWEga29udHIuIDB4JTA4eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorIlxuIgorIiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiIEJpdG1hcGEgaS13xJl6xYLDs3cgcG9kICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgVGFibGljYSBpLXfEmXrFgsOzdyBwb2QgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICB3b2xueWNoICUyJHM6ICUxJHUsIHdvbG55Y2ggaS13xJl6xYLDs3c6ICUzJHUsIGthdGFsb2fDs3c6ICU0JHUlNSRzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsIG5pZSB1xbx5d2FueWNoIGktd8SZesWCw7N3OiAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIgIFdvbG5lIGJsb2tpOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgV29sbmUgaS13xJl6xYJ5OiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAicG9kY3phcyB3eXBpc3l3YW5pYSBsaXN0eSB3YWRsaXd5Y2ggYmxva8OzdyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0NgorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2tzOiAldSIKK21zZ3N0ciAiV2FkbGl3ZSBibG9raTogJXUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozODUgbWlzYy90dW5lMmZzLmM6MzYyCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJwb2RjemFzIG9kY3p5dHUgaS13xJl6xYJhIGtyb25pa2kiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInBvZGN6YXMgb3R3aWVyYW5pYSBpLXfEmXrFgmEga3JvbmlraSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAicG9kY3phcyBvZGN6eXR1IHN1cGVyYmxva3Uga3JvbmlraSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIHN1cGVyYmxva3Uga3JvbmlraSFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiQ2VjaHkga3JvbmlraTogICAgICAgICAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIlJvem1pYXIga3JvbmlraTogICAgICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisiRMWCdWdvxZvEhyBrcm9uaWtpOiAgICAgICAgICAgICAgJXVcbiIKKyJTZWt3ZW5jamEga3JvbmlraTogICAgICAgICAgICAweCUwOHhcbiIKKyJQb2N6xIV0ZWsga3JvbmlraTogICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICJUeXAgc3VteSBrb250ci4ga3JvbmlraTogIGNyYzMyXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKyJUeXAgc3VteSBrb250ci4ga3JvbmlraTogICVzXG4iCisiU3VtYSBrb250cm9sbmEga3JvbmlraTogICAweCUwOHhcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIkLFgsSFZCBrcm9uaWtpOiAgICAgICAgICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJwb2RjemFzIG9kY3p5dHUgc3VwZXJibG9rdSBrcm9uaWtpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAiTmllIG1vxbxuYSB6bmFsZcW6xIcgbWFnaWN6bnljaCBsaWN6YiBzdXBlcmJsb2t1IGtyb25pa2kiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIlJvem1pYXIgYmxva3Uga3JvbmlraTogICAgICAgICV1XG4iCisiRMWCdWdvxZvEhyBrcm9uaWtpOiAgICAgICAgICAgICAgJXVcbiIKKyJQaWVyd3N6eSBibG9rIGtyb25pa2k6ICAgICAgICAldVxuIgorIlNla3dlbmNqYSBrcm9uaWtpOiAgICAgICAgICAgIDB4JTA4eFxuIgorIlBvY3rEhXRlayBrcm9uaWtpOiAgICAgICAgICAgICAldVxuIgorIkxpY3piYSB1xbx5dGtvd25pa8OzdyBrcm9uaWtpOiAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUxNAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHVzZXJzOiAgICAgICAgICAgICVzXG4iCittc2dzdHIgIlXFvHl0a293bmljeSBrcm9uaWtpOiAgICAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiTmllIG1vxbxuYSBwcnp5ZHppZWxpxIcgcGFtacSZY2kgZG8gYW5hbGl6eSBvcGNqaSFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU1NgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN1cGVyYmxvY2sgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJCxYLEmWRueSBwYXJhbWV0ciBzdXBlcmJsb2NrOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgcGFyYW1ldHIgYmxvY2tzaXplOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgZXh0ZW5kZWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrIG51bWJlcj5cbiIKKyJcdGJsb2Nrc2l6ZT08YmxvY2tzaXplPlxuIgorbXNnc3RyICIiCisiXG4iCisiUG9kYW5vIGLFgsSZZG5lIG9wY2plIHJvenN6ZXJ6b25lOiAlcy5cbiIKKyJcbiIKKyJPcGNqZSByb3pzemVyem9uZSBzxIUgb2RkemllbGFuZSBwcnplY2lua2FtaSBpIG1vZ8SFIHByenlqbW93YcSHIHBhcmFtZXRyLFxuIgorIlx0a3TDs3J5IGplc3QgdXN0YXdpYW55IHpuYWtpZW0gJz0nLlxuIgorIlxuIgorIlBvcHJhd25lIG9wY2plIHJvenN6ZXJ6b25lIHRvOlxuIgorIlx0c3VwZXJibG9jaz08bnVtZXIgc3VwZXJibG9rdT5cbiIKKyJcdGJsb2Nrc2l6ZT08cm96bWlhciBibG9rdT5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdFXFvHl3YW5lICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiogVyBzeXN0ZW1pZSBwbGlrw7N3IHd5a3J5dG8gYsWCxJlkeSBzdW15IGtvbnRyb2xuZWohIFByb3N6xJkgdXJ1Y2hvbWnEhyB0ZXJheiAiCisiZTJmc2NrIVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiTmllIG1vxbxuYSB6bmFsZcW6xIcgcG9wcmF3bmVnbyBzdXBlcmJsb2t1IHN5c3RlbXUgcGxpa8Ozdy5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBXIGJpdG1hcGFjaCB3eWtyeXRvIGLFgsSZZHkgc3VteSBrb250cm9sbmVqISBQcm9zesSZIHVydWNob21pxIcgdGVyYXogIgorImUyZnNjayFcbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogJXM6IGLFgsSFZCBwb2RjemFzIGN6eXRhbmlhIGJpdG1hcDogJXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIlNrxYJhZG5pYTogJXMgWy1yfFEgXSBbIC1mciBdIHVyesSFZHplbmllIHBsaWtfb2JyYXp1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICVzIC1JIHVyesSFZHplbmllIHBsaWtfb2JyYXp1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBzcmNfb2Zmc2V0IF0gWyAtTyBkZXN0X29mZnNldCBdIHNyY19mcyAiCisiWyBkZXN0X2ZzIF1cbiIKK21zZ3N0ciAiIgorIiAgICAgICAlcyAtcmEgIFsgIC1jbmZwICBdIFsgLW8gb2Zmc2V0X8W6ciBdIFsgLU8gb2Zmc2V0X2RvYyBdIGZzX8W6ciAiCisiWyBmc19kb2MgXVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgInBvZGN6YXMgcHJ6eWR6aWVsYW5pYSBidWZvcmEiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIGJsb2NrICVsbHVcbiIKK21zZ3N0ciAiWmFwaXN5d2FuaWUgYmxva3UgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJixYLEhWQgcHJ6eSB6YXBpc2llIGJsb2t1ICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiYsWCxIVkIHcgZ2VuZXJpY193cml0ZSgpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiQsWCxIVkOiByb3ptaWFyIG5hZ8WCw7N3a2EgamVzdCB3acSZa3N6eSBuacW8IHdydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiTmllIG1vxbxuYSBwcnp5ZHppZWxpxIcgYnVmb3JhIG5hZ8WCw7N3a2FcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJwb2RjemFzIHphcGlzdSBzdXBlcmJsb2t1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJwb2RjemFzIHphcGlzdSB0YWJlbGkgaS13xJl6xYLDs3ciCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI2MworbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICJwb2RjemFzIHphcGlzdSBiaXRtYXB5IGJsb2vDs3ciCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICJwb2RjemFzIHphcGlzdSBiaXRtYXB5IGktd8SZesWCw7N3IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJVc3prb2R6b255IGJsb2sga2F0YWxvZ3UgJWxsdTogYsWCxJlkbmUgcmVjX2xlbiAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjUxNworIywgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgbmFtZV9sZW4gKCVkKVxuIgorbXNnc3RyICJVc3prb2R6b255IGJsb2sga2F0YWxvZ3UgJWxsdTogYsWCxJlkbmUgbmFtZV9sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSIKK21zZ3N0ciAiQmxva8OzdzogJWxsdSAvICVsbHUgKCVkJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIktvcGlvd2FuaWUgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiWmF0cnp5bWFuaWUgdGVyYXogem5pc3pjenkgc3lzdGVtIHBsaWvDs3c7IGFieSBwb3R3aWVyZHppxIcsIG1vxbxuYSBwcnplcndhxIcgIgorInBvbm93bmllXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiICVzIHBvem9zdGHFgm8gcHJ6eSAlLjJmIE1CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY2NCBtaXNjL2UyaW1hZ2UuYzoxMTkxCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHJlYWRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiYsWCxIVkIHByenkgb2RjenljaWUgYmxva3UgJWxsdSIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAiU2tvcGlvd2FubyBibG9rw7N3OiAlbGx1IC8gJWxsdSAoJWQlJSkgdyAlcyAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcyMgorIywgYy1mb3JtYXQKK21zZ2lkICJhdCAlLjJmIE1CL3MiCittc2dzdHIgInByenkgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICJwb2RjemFzIHByenlkemllbGFuaWEgdGFibGljeSBsMSIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAicG9kY3phcyBwcnp5ZHppZWxhbmlhIGJ1Zm9yYSBsMiIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKyJVd2FnYTogdyBwYW1pxJljaSBwb2RyxJljem5laiBzxIUgbmFkYWwgdGFibGljZSB3IHRyYWtjaWUgemFwaXN1IGJ1Zm9yYSwgZGFuZSAiCisiem9zdGFuxIUgdXRyYWNvbmUsIHdpxJljIG9icmF6IG1vxbxlIG5pZSBiecSHIHBvcHJhd255LlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJwb2RjemFzIHByenlkemllbGFuaWEgZXh0X3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgInBvZGN6YXMgaW5pY2pvd2FuaWEgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTIxNCBtaXNjL2UyaW1hZ2UuYzoxMjMyCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlIHNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzIGNyZWF0ZWQhXG4iCittc2dzdHIgIiIKKyJCxYLEhWQgcHJvZ3JhbXU6IHV0d29yem9ubyB3aWVsZSBibG9rw7N3IHNla3dlbmN5am55Y2ggbGljem5pa8OzdyBvZHdvxYJhxYQhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyNzIKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAicG9kY3phcyBwcnp5ZHppZWxhbmlhIGJpdG1hcHkgYmxva8OzdyIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICJwb2RjemFzIHByenlkemllbGFuaWEgYml0bWFweSBibG9rw7N3IHNjcmFtYmxlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjg4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGVzLi4uXG4iCittc2dzdHIgIlByemVzenVraXdhbmllIGktd8SZesWCw7N3Li4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIk5pZSBtb8W8bmEgcHJ6eWR6aWVsacSHIGJ1Zm9yYSBibG9rdSIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICJwb2RjemFzIGl0ZXJhY2ppIHBvIGktd8SZxbpsZSAldSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIk9icmF6w7N3IHN1cm93ZWdvIGkgcWNvdzIgbmllIG1vxbxuYSB6YWluc3RhbG93YcSHIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJixYLEhWQgcG9kY3phcyBvZGN6eXR1IGJpdG1hcCIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgInBvZGN6YXMgb3R3aWVyYW5pYSBwbGlrdSB1cnrEhWR6ZW5pYSIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgInBvZGN6YXMgb2R0d2FyemFuaWEgdGFiZWxpIG9icmF6dSIKKworIzogbWlzYy9lMmltYWdlLmM6MTUyNworbXNnaWQgIi1hIG9wdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggcmF3IG9yIFFDT1cyIGltYWdlcy4iCittc2dzdHIgIk9wY2phIC1hIG1vxbxlIGJ5xIcgdcW8eXRhIHR5bGtvIHogb2JyYXphbWkgc3Vyb3d5bSBsdWIgUUNPVzIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIk9mZnNldHkgc8SFIGRvendvbG9uZSB0eWxrbyB6IG9icmF6YW1pIHN1cm93eW1pLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzOAorbXNnaWQgIk1vdmUgbW9kZSBpcyBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiVHJ5YiBwcnplc3VuacSZY2lhIGplc3QgZG96d29sb255IHR5bGtvIHogb2JyYXphbWkgc3Vyb3d5bWkuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTQzCittc2dpZCAiTW92ZSBtb2RlIHJlcXVpcmVzIGFsbCBkYXRhIG1vZGUuIgorbXNnc3RyICJUcnliIHByemVzdW5pxJljaWEgd3ltYWdhIHRyeWJ1IHdzenlzdGtpY2ggZGFueWNoLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgInNwcmF3ZHphbmllLCBjenkgemFtb250b3dhbnkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NjAKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBlMmltYWdlIG9uIGEgUi9XIG1vdW50ZWQgZmlsZXN5c3RlbSBjYW4gcmVzdWx0IGluIGFuXG4iCisiaW5jb25zaXN0ZW50IGltYWdlIHdoaWNoIHdpbGwgbm90IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuIgorIlVzZSAtZiBvcHRpb24gaWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVcnVjaGFtaWFuaWUgZTJpbWFnZSBuYSBzeXN0ZW1pZSBwbGlrw7N3IHphbW9udG93YW55bSBkbyBvZGN6eXR1IGkgemFwaXN1XG4iCisibW/FvGUgc3Bvd29kb3dhxIcsIMW8ZSBvYnJheiBixJlkemllIG5pZXNww7NqbnksIHByemV6IGNvIG5pZSBixJlkemllIHByenlkYXRueVxuIgorImRvIGNlbMOzdyBkaWFnbm9zdHljem55Y2guIEFieSBuYSBwZXdubyB0byB6cm9iacSHLCBtb8W8bmEgdcW8ecSHIG9wY2ppIC1mLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIk9icmF6dSBRQ09XMiBuaWUgbW/FvG5hIHphcGlzYcSHIG5hIHN0YW5kYXJkb3dlIHd5asWbY2llIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICJOaWUgbW/FvG5hIHd5a29uYcSHIHN0YXQgbmEgd3lqxZtjaXVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAiT2JyYXogKCVzKSBqZXN0IHNrb21wcmVzb3dhbnlcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICJPYnJheiAoJXMpIGplc3QgemFzenlmcm93YW55XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBwcnpla3N6dGHFgmNlbmlhIG9icmF6dSBxY293MiAoJXMpIG5hIG9icmF6IHN1cm93eSAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJPcGNqYSAtYyBqZXN0IG9ic8WCdWdpd2FuYSB0eWxrbyB3IHRyeWJpZSBzdXJvd3ltXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTAKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgd2hlbiB3cml0aW5nIHRvIHN0ZG91dFxuIgorbXNnc3RyICJPcGNqYSAtYyBuaWUgamVzdCBvYnPFgnVnaXdhbmEgcHJ6eSB6YXBpc2llIG5hIHN0YW5kYXJkb3dlIHd5anNjaWVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJwb2RjemFzIHByenlkemllbGFuaWEgY2hlY2tfYnVmIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJPcGNqYSAtcCBqZXN0IG9ic8WCdWdpd2FuYSB0eWxrbyB3IHRyeWJpZSBzdXJvd3ltXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCBibG9rw7N3IGp1xbwgemF3aWVyYcWCbyBkYW5lIGRvIHNrb3Bpb3dhbmlhXG4iCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICJTa8WCYWRuaWE6ICVzIC1yIHVyesSFZHplbmllXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IG5pZSBtb8W8bmEgb3R3b3J6ecSHICVzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogbmllIG1vxbxuYSBwcnplasWbxIcgZG8gc3VwZXJibG9rdVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogYsWCxIVkIHBvZGN6YXMgb2Rjenl0dSBzdXBlcmJsb2t1XG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDogdG8gbmllIGplc3Qgc3lzdGVtIHBsaWvDs3cgZXh0MlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICJVd2FnYTogZXR5a2lldGEgemEgZMWCdWdhLCBza3LDs2Nvbm8uXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IG5pZSBtb8W8bmEgcHJ6ZWrFm8SHIHBvbm93bmllIGRvIHN1cGVyYmxva3VcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBixYLEhWQgcG9kY3phcyB6YXBpc3Ugc3VwZXJibG9rdVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMTcgbWlzYy90dW5lMmZzLmM6MTU5MAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogZTJsYWJlbCBkZXZpY2UgW25ld2xhYmVsXVxuIgorbXNnc3RyICJTa8WCYWRuaWE6IGUybGFiZWwgdXJ6xIVkemVuaWUgW25vd2EtZXR5a2lldGFdXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuc2FjdGlvbiBmaWxlPiA8ZmlsZXN5c3RlbT5cbiIKK21zZ3N0ciAiU2vFgmFkbmlhOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDxwbGlrX3RyYW5zYWtjamk+IDxzeXN0ZW1fcGxpa8Ozdz5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDMKK21zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gc3VwZXJibG9jayBkb2Vzbid0IG1hdGNoIHRoZSB1bmRvIGZpbGUuXG4iCittc2dzdHIgIlN1cGVyYmxvayBzeXN0ZW11IHBsaWvDs3cgbmllIHBhc3VqZSBkbyBwbGlrdSB1bmRvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0NgorbXNnaWQgIlVVSUQgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIlVVSUQgc2nEmSBuaWUgemdhZHphLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiQ3phcyBvc3RhdG5pZWdvIG1vbnRvd2FuaWEgc2nEmSBuaWUgemdhZHphLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiQ3phcyBvc3RhdG5pZWdvIHphcGlzdSBzacSZIG5pZSB6Z2FkemEuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiTGljem5payB6YXBpc3UgY3phc3Ugxbx5Y2lhIHNpxJkgbmllIHpnYWR6YS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgInBvZGN6YXMgb2Rjenl0dSBzdXBlcmJsb2t1IHN5c3RlbXUgcGxpa8Ozdy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAicG9kY3phcyBwb2JpZXJhbmlhIHN1cGVyYmxva3UiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIlN1bWEga29udHJvbG5hIHN1cGVyYmxva3UgcGxpa3UgdW5kbyBuaWUgemdhZHphIHNpxJkuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIkLFgsSZZG55IG9mZnNldCAtICVzIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICJOaWUgYsSZZHppZSB6YXBpc3UgZG8gcGxpa3UgdW5kbyBwb2RjemFzIG9kdHdhcnphbmlhIGdvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgInBvZGN6YXMgb3R3aWVyYW5pYSBwbGlrdSB1bmRvIGAlcydcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHVuZG8gZmlsZSIKK21zZ3N0ciAicG9kY3phcyBvZGN6eXR1IHBsaWt1IHVuZG8iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBOb3QgYW4gdW5kbyBmaWxlLlxuIgorbXNnc3RyICIlczogVG8gbmllIGplc3QgcGxpayB1bmRvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiVzOiBTdW1hIGtvbnRyb2xuYSBuYWfFgsOzd2thIHNpxJkgbmllIHpnYWR6YS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiJXM6IFVzemtvZHpvbnkgbmFnxYLDs3dlayBwbGlrdSB1bmRvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiJXM6IFJvem1pYXIgYmxva3UgdW5kbyB6Ynl0IGR1xbx5LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiJXM6IFJvem1pYXIgYmxva3UgdW5kbyB6Ynl0IG1hxYJ5LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVzOiBOaWV6bmFueSB6YmnDs3IgY2VjaCBwbGlrdSB1bmRvLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBzcHJhd2R6YW5pYSwgY3p5ICVzIGplc3QgemFtb250b3dhbnkuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICJlMnVuZG8gcG93aW5ubyBiecSHIHVydWNoYW1pYW5lIHR5bGtvIG5hIG9kbW9udG93YW55Y2ggc3lzdGVtYWNoIHBsaWvDs3ciCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAicG9kY3phcyBvdHdpZXJhbmlhIGAlcyciCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgInBvZGFueSBvZmZzZXQgamVzdCB6Ynl0IGR1xbx5IgorCisjOiBtaXNjL2UydW5kby5jOjUwMQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAicG9kY3phcyBvZGN6eXR1IGtsdWN6eSIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiVzOiBixYLEmWRuYSB3YXJ0b8WbxIcgbWFnaWN6bmEga2x1Y3phIHBvZCAlbGx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiJXM6IGLFgsSFZCBzdW15IGtvbnRyb2xuZWoga2x1Y3phIHBvZCAlbGx1LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogYmxvY2sgJWxsdSBpcyB0b28gbG9uZy4iCittc2dzdHIgIiVzOiBibG9rICVsbHUgamVzdCB6Ynl0IGTFgnVnaS4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJwb2RjemFzIHBvYmllcmFuaWEgYmxva3UgJWxsdS4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAiYsWCxIVkIHN1bXkga29udHJvbG5laiB3IGJsb2t1IHN5c3RlbXUgcGxpa8OzdyAlbGx1IChibG9rIHVuZG8gJWxsdSlcbiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAicG9kY3phcyB6YXBpc3UgYmxva3UgJWxsdS4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiVXN6a29kemVuaWUgcGxpa3UgdW5kbzsgcHJvc3rEmSBURVJBWiB1cnVjaG9tacSHIGUyZnNjayFcbiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIkLFgsSFZCB3ZS93eSBwb2RjemFzIG9kdHdhcnphbmlhOiBwcm9zesSZIFRFUkFaIHVydWNob21pxIcgZTJmc2NrIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICJOaWVrb21wbGV0bnkgcmVrb3JkIHVuZG87IHByb3N6xJkgdXJ1Y2hvbWnEhyBlMmZzYy5cbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICJTa8WCYWRuaWEgIGZpbmRzdXBlciB1cnrEhWR6ZW5pZSBba3JvayBbc3RhcnRrYl1dXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICJrcm9rIHBvd2luaWVuIGJ5xIcgbGljemLEhSwgYSBuaWUgJXNcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAia3JvayBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgcm96bWlhcnUgc2VrdG9yYVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgInN0YXJ0a2IgcG93aW5ubyBiecSHIGxpY3pixIUsIGEgbmllICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICJzdGFydGtiIHBvd2lubm8gYnnEhyBkb2RhdG5pZSwgYSBuaWUgJWxsdVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGluZyBhdCAlbGx1LCB3aXRoICV1IGJ5dGUgaW5jcmVtZW50c1xuIgorbXNnc3RyICJyb3pwb2N6xJljaWUgb2QgJWxsdSwgeiBwcnp5cm9zdGFtaSBjbyAldSBCXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorIlsqXSBwcmF3ZG9wb2RvYm5pZSBzdXBlcmJsb2sgemFwaXNhbm8gdyBzdXBlcmJsb2t1IGtyb25pa2kgZXh0MyxcbiIKKyJcdHdpxJljIGLEmWR6aWUgYsWCxJlkbnkgcG9jesSFdGVrL2tvbmllYy9ncnBcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorIm9mZnNldF9iICAgICBwb2N6X2IgICAgICAgICBrb25pZWNfYiAgYmxva2lfZnMgIHJvem1iICBncnAgIG1rZnMvIgorImN6YXNfbW9udCAgICAgICAgICAgIHNiX3V1aWQgZXR5a2lldGFcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlMTFMdTogemFrb8WEY3pvbm8geiBlcnJubyAlZFxuIgorCisjOiBtaXNjL2ZzY2suYzozNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogY291bGRuJ3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiVVdBR0E6IG5pZSBtb8W8bmEgb3R3b3J6ecSHICVzOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIlVXQUdBOiB6xYJ5IGZvcm1hdCB3IGxpbmlpICVkIHBsaWt1ICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisiVVdBR0E6IC9ldGMvZnN0YWIgbmllIHphd2llcmEgcG9sYSBwYXNzbm8gZGxhIGZzY2suXG4iCisiUG9taW7EmSB0ZW4gYsWCxIVkLCBhbGUgL2V0Yy9mc3RhYiBuYWxlxbx5IGphayBuYWpzenliY2llaiBwb3ByYXdpxIcuXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBuaWUgem5hbGV6aW9ub1xuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogd2FpdDogTmllIG1hIHdpxJljZWogcHJvY2Vzw7N3IHBvdG9tbnljaD8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAiVXdhZ2EuLi4gJXMgZGxhIHVyesSFZHplbmlhICVzIHpha2/FhGN6ecWCIHNpxJkgc3lnbmHFgmVtICVkLlxuIgorCisjOiBtaXNjL2ZzY2suYzo2MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgJXM6IHN0YXR1cyBpcyAleCwgc2hvdWxkIG5ldmVyIGhhcHBlbi5cbiIKK21zZ3N0ciAiJXMgJXM6IHN0YXR1cyB3eW5vc2kgJXgsIHRvIHNpxJkgbmllIHBvd2lubm8gbmlnZHkgemRhcnp5xIcuXG4iCisKKyM6IG1pc2MvZnNjay5jOjY2MQorIywgYy1mb3JtYXQKK21zZ2lkICJGaW5pc2hlZCB3aXRoICVzIChleGl0IHN0YXR1cyAlZClcbiIKK21zZ3N0ciAiU2tvxYRjem9ubyB6ICVzIChzdGF0dXMgd3lqxZtjaWEgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBCxYLEhWQgJWQgcG9kY3phcyB3eWtvbnl3YW5pYSBmc2NrLiVzIGRsYSAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIkFsYm8gd3N6eXN0a2llLCBhbGJvIMW8YWRlbiByb2R6YWogc3lzdGVtdSBwbGlrw7N3IHogcG9kYW55Y2ggcG8gLXQgbXVzaSBiecSHXG4iCisicG9wcnplZHpvbnkgJ25vJyBsdWIgJyEnLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiTmllIG1vxbxuYSBwcnp5ZHppZWxpxIcgcGFtacSZY2kgbmEgcm9kemFqZSBzeXN0ZW3Ds3cgcGxpa8Ozd1xuIgorCisjOiBtaXNjL2ZzY2suYzo4ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBza2lwcGluZyBiYWQgbGluZSBpbiAvZXRjL2ZzdGFiOiBiaW5kIG1vdW50IHdpdGggbm9uemVybyBmc2NrIHBhc3MgIgorIm51bWJlclxuIgorbXNnc3RyICIiCisiJXM6IHBvbWluacSZdG8gYsWCxJlkbsSFIGxpbmnEmSB3IC9ldGMvZnN0YWI6IG1vbnRvd2FuaWUgYmluZCB6IG5pZXplcm93eW0gIgorIm51bWVyZW0gcHJ6ZWJpZWd1IGZzY2tcbiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogbmllIG1vxbxuYSBzcHJhd2R6acSHICVzOiBmc2NrLiVzIG5pZSB6bmFsZXppb255XG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIlNwcmF3ZHphbmllIHdzenlzdGtpY2ggc3lzdGVtw7N3IHBsaWvDs3cuXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iCittc2dzdHIgIi0tb2N6ZWtpd2FuaWUtLSAocHJ6ZWJpZWcgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyJTa8WCYWRuaWE6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZGVza3J5cHRvciBdIF0gWy10IHJvZHphai1mc10gW29wY2plLWZzXSAiCisiW3N5c3RlbS1wbGlrw7N3IC4uLl1cbiIKKworIzogbWlzYy9mc2NrLmM6MTEyMAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogdG9vIG1hbnkgZGV2aWNlc1xuIgorbXNnc3RyICIlczogemEgZHXFvG8gdXJ6xIVkemXFhFxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogemEgZHXFvG8gcGFyYW1ldHLDs3dcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc0MAorbXNnaWQgIk1vdW50aW5nIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiTW9udG93YW5pZSB0eWxrbyBkbyBvZGN6eXR1LlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBBbGxvd2luZyB1c2VycyB0byBhbGxvY2F0ZSBhbGwgYmxvY2tzLiBUaGlzIGlzIGRhbmdlcm91cyFcbiIKK21zZ3N0ciAiIgorIiVzOiBaZXp3b2xlbmllIHXFvHl0a293bmlrb20gbmEgcHJ6eWR6aWVsZW5pZSB3c3p5c3RraWNoIGJsb2vDs3cuIFRvICIKKyJuaWViZXpwaWVjem5lIVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc2IG1pc2MvZnVzZTJmcy5jOjM3ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzLlxuIgorbXNnc3RyICIlczogJXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzcgbWlzYy9mdXNlMmZzLmM6Mzc5MSBtaXNjL3R1bmUyZnMuYzozMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAiUHJvc3rEmSB1cnVjaG9tacSHIGUyZnNjayAtZnkgJXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorIktyb25pa2Egd3ltYWdhIG9kdHdvcnplbmlhOyB3eW1hZ2FuZSB1cnVjaG9taWVuaWUgYGUyZnNjayAtRSBqb3VybmFsX29ubHknLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiVzOiBaYXBpcyBkbyBrcm9uaWtpIG5pZSBqZXN0IG9ic8WCdWdpd2FueS5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJVd2FnYTogTW9udG93YW5pZSBuaWUgc3ByYXdkem9uZWdvIHN5c3RlbXUgcGxpa8OzdywgemFsZWNhbmUgamVzdCAiCisidXJ1Y2hvbWllbmllIGUyZnNjay5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJVd2FnYTogT3NpxIVnbmnEmXRvIG1ha3N5bWFsbsSFIGxpY3pixJkgbW9udG93YcWELCB6YWxlY2FuZSBqZXN0IHVydWNob21pZW5pZSAiCisiZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorIlV3YWdhOiBPc2nEhWduacSZdG8gY3phcyBzcHJhd2R6ZW5pYTsgemFsZWNhbmUgamVzdCB1cnVjaG9taWVuaWUgZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIld5a3J5dG8gc2llcm90eTsgemFsZWNhbmUgamVzdCB1cnVjaG9taWVuaWUgZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM4Cittc2dpZCAiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiV3lrcnl0byBixYLEmWR5OyBrb25pZWN6bmUgamVzdCB1cnVjaG9taWVuaWUgZTJmc2NrLlxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiU2vFgmFkbmlhOiAlcyBbLVJWYWRscHZdIFtwbGlraS4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJQb2RjemFzIG9kY3p5dHUgZmxhZyAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIlBvZGN6YXMgb2Rjenl0dSBwcm9qZWt0dSAlcyIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICJQb2RjemFzIG9kY3p5dHUgd2Vyc2ppICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstY3wtbCBmaWxlbmFtZV0gWy1iIGJsb2NrLXNpemVdIFstQyBjbHVzdGVyLXNpemVdXG4iCisiXHRbLWkgYnl0ZXMtcGVyLWlub2RlXSBbLUkgaW5vZGUtc2l6ZV0gWy1KIGpvdXJuYWwtb3B0aW9uc11cbiIKKyJcdFstRyBmbGV4LWdyb3VwLXNpemVdIFstTiBudW1iZXItb2YtaW5vZGVzXSBbLWQgcm9vdC1kaXJlY3RvcnldXG4iCisiXHRbLW0gcmVzZXJ2ZWQtYmxvY2tzLXBlcmNlbnRhZ2VdIFstbyBjcmVhdG9yLW9zXVxuIgorIlx0Wy1nIGJsb2Nrcy1wZXItZ3JvdXBdIFstTCB2b2x1bWUtbGFiZWxdIFstTSBsYXN0LW1vdW50ZWQtZGlyZWN0b3J5XVxuIgorIlx0Wy1PIGZlYXR1cmVbLC4uLl1dIFstciBmcy1yZXZpc2lvbl0gWy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQgdXNhZ2UtdHlwZSBdIFstVSBVVUlEXSBbLWUgZXJyb3JzX2JlaGF2aW9yXVsteiAiCisidW5kb19maWxlXVxuIgorIlx0Wy1qbnF2REZTVl0gZGV2aWNlIFtibG9ja3MtY291bnRdXG4iCittc2dzdHIgIiIKKyJTa8WCYWRuaWE6ICVzIFstY3wtbCBuYXp3YS1wbGlrdV0gWy1iIHJvem0uYmxva3VdIFstQyByb3ptLmtsYXN0cmFdXG4iCisiXHRbLWkgYmFqdMOzdy1uYS1pLXfEmXplxYJdIFstSSByb3ptLWktd8SZesWCYV0gWy1KIG9wY2plLWtyb25pa2ldXG4iCisiXHRbLUcgcm96bWlhci1ncnVweS1mbGV4XSBbLU4gbGljemJhLWktd8SZesWCw7N3XSBbLWQga2F0YWxvZy1nxYLDs3dueV1cbiIKKyJcdFstbSBwcm9jZW50LXJlemVydy4tYmxva8Ozd10gWy1vIG9zLXR3w7NyY3ldXG4iCisiXHRbLWcgYmxva8Ozdy13LWdydXBpZV0gWy1MIGV0eWtpZXRhLXdvbHVtZW51XSBbLU0gb3N0Li1tb250Li1rYXRhbG9nXVxuIgorIlx0Wy1PIGNlY2hhWywuLi5dXSBbLXIgd2Vyc2phLWZzXSBbLUUgb3BjamEtcm96c3plcnpvbmFbLC4uLl1dXG4iCisiXHRbLXQgdHlwLWZzXSBbLVQgdHlwLXXFvHljaWFdIFstVSBVVUlEXSBbLWUgdHJha3Rvd2FuaWVfYsWCxJlkw7N3XVxuIgorIlx0Wy16IHBsaWtfdW5kb10gWy1qbnF2REZTVl0gdXJ6xIVkemVuaWUgW2xpY3piYS1ibG9rw7N3XVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIlVydWNoYW1pYW5pZSBwb2xlY2VuaWE6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBydW4gJyVzJyIKK21zZ3N0ciAicG9kY3phcyBwcsOzYnkgdXJ1Y2hvbWllbmlhICclcyciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY2Cittc2dpZCAid2hpbGUgcHJvY2Vzc2luZyBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBwcm9ncmFtIgorbXNnc3RyICJwb2RjemFzIHByemV0d2FyemFuaWEgbGlzdHkgd2FkbGl3eWNoIGJsb2vDs3cgeiBwcm9ncmFtdSIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgIldhZGxpd3kgYmxvayAlZCB3IGfFgsOzd255bSBzdXBlcmJsb2t1L29ic3phcnplIGRlc2tyeXB0b3JhIGdydXAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkJsb2tpIG9kICV1IGRvICV1IG11c3rEhSBiecSHIGRvYnJlLCBhYnkgc3R3b3J6ecSHIHN5c3RlbSBwbGlrw7N3LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5OAorbXNnaWQgIkFib3J0aW5nLi4uLlxuIgorbXNnc3RyICJQcnplcndhbm8uLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiVXdhZ2E6IHphcGFzb3d5IHN1cGVyYmxvay9kZXNrcnlwdG9yeSBncnVwIHcgYmxva3UgJXUgemF3aWVyYWrEhVxuIgorIlx0d2FkbGl3ZSBibG9raS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAicG9kY3phcyB6YXpuYWN6YW5pYSB3YWRsaXd5Y2ggYmxva8OzdyBqYWtvIHXFvHl3YW5lIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIlphcGlzIHRhYmxpY3kgaS13xJl6xYLDs3c6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCB3cml0ZSAlZCBibG9ja3MgaW4gaW5vZGUgdGFibGUgc3RhcnRpbmcgYXQgJWxsdTogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5pZSB1ZGHFgm8gc2nEmSB6YXBpc2HEhyAlZCBibG9rw7N3IHcgdGFibGljeSBpLXfEmXrFgsOzdyBwb2N6xIV3c3p5IG9kICVsbHU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJ6YWtvxYRjem9ubyAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAicG9kY3phcyB0d29yemVuaWEgZ8WCw7N3bmVnbyBrYXRhbG9ndSIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgInBvZGN6YXMgb2Rjenl0dSBnxYLDs3duZWdvIGktd8SZesWCYSIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJwb2RjemFzIHVzdGF3aWFuaWEgd8WCYcWbY2ljaWVsYSBnxYLDs3duZWdvIGktd8SZesWCYSIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAicG9kY3phcyB0d29yemVuaWEgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAicG9kY3phcyBzenVrYW5pYSAvbG9zdCtmb3VuZCIKKworIzogbWlzYy9ta2UyZnMuYzo1MTYKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgInBvZGN6YXMgcm96c3plcnphbmlhIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUzMQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICJwb2RjemFzIHVzdGF3aWFuaWEgaS13xJl6xYJhIHdhZGxpd3ljaCBibG9rw7N3IgorCisjOiBtaXNjL21rZTJmcy5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICJPdXQgb2YgbWVtb3J5IGVyYXNpbmcgc2VjdG9ycyAlZC0lZFxuIgorbXNnc3RyICJCcmFrIHBhbWnEmWNpIHBvZGN6YXMgY3p5c3pjemVuaWEgc2VrdG9yw7N3ICVkLSVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrIDA6ICVzXG4iCittc2dzdHIgIlV3YWdhOiBuaWUgbW/FvG5hIG9kY3p5dGHEhyBibG9rdSAwOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjU4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgZXJhc2Ugc2VjdG9yICVkOiAlc1xuIgorbXNnc3RyICJVd2FnYTogbmllIG1vxbxuYSB3eWN6ecWbY2nEhyBzZWt0b3JhICVkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjYwMAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgInBvZGN6YXMgaW5pY2pvd2FuaWEgc3VwZXJibG9rdSBrcm9uaWtpIgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiWmVyb3dhbmllIHVyesSFZHplbmlhIGtyb25pa2k6ICIKKworIzogbWlzYy9ta2UyZnMuYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBqb3VybmFsIGRldmljZSAoYmxvY2sgJWxsdSwgY291bnQgJWQpIgorbXNnc3RyICJwb2RjemFzIHplcm93YW5pYSB1cnrEhWR6ZW5pYSBrcm9uaWtpIChibG9rICVsbHUsIGxpY3piYSAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgInBvZGN6YXMgemFwaXN1IHN1cGVyYmxva3Uga3JvbmlraSIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIlR3b3J6ZW5pZSBzeXN0ZW11IHBsaWvDs3cgbyAlbGx1IGJsb2thY2ggJWRrIG9yYXogJXUgaS13xJl6xYJhY2hcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorInV3YWdhOiAlbGx1IGJsb2vDs3cgbmllIHXFvHl3YW55Y2guXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiRXR5a2lldGEgc3lzdGVtdSBwbGlrw7N3PSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIlR5cCBPUzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJSb3ptaWFyIGJsb2t1PSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJSb3ptaWFyIGtsYXN0cmE9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJSb3ptaWFyIGZyYWdtZW50dT0ldSAobG9nPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3OQorIywgYy1mb3JtYXQKK21zZ2lkICJTdHJpZGU9JXUgYmxvY2tzLCBTdHJpcGUgd2lkdGg9JXUgYmxvY2tzXG4iCittc2dzdHIgIlN0cmlkZT0ldSBibG9rw7N3LCBzemVyb2tvxZvEhyBTdHJpcGU9JXUgYmxva8Ozd1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1IGktd8SZesWCw7N3LCAlbGx1IGJsb2vDs3dcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIlbGx1IGJsb2vDs3cgKCUyLjJmJSUpIHphcmV6ZXJ3b3dhbnljaCBkbGEgc3VwZXJ1xbx5dGtvd25pa2FcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJQaWVyd3N6eSBibG9rIGRhbnljaD0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICJXxYJhxZtjaWNpZWwgZ8WCw7N3bmVnbyBrYXRhbG9ndT0ldToldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICJNYWtzeW1hbG5hIGxpY3piYSBibG9rw7N3IHN5c3RlbXUgcGxpa8Ozdz0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IGdydXAgYmxva8Ozd1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBncnVwYSBibG9rw7N3XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9rw7N3IHcgZ3J1cGllLCAldSBrbGFzdHLDs3cgdyBncnVwaWVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9rw7N3IHcgZ3J1cGllLCAldSBmcmFnbWVudMOzdyB3IGdydXBpZVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMworIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1IGktd8SZesWCw7N3IHcgZ3J1cGllXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiVVVJRCBzeXN0ZW11IHBsaWvDs3c6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiS29waWUgemFwYXNvd2Ugc3VwZXJibG9rdSB6YXBpc2FuZSB3IGJsb2thY2g6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyB3eW1hZ2EgJy1PIDY0Yml0J1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgxMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIG11c3QgYmUgYmVmb3JlICdyZXNpemU9JXUnXG4iCittc2dzdHIgIiclcycgbXVzaSBiecSHIHByemVkICdyZXNpemU9JXUnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgIkLFgsSZZG55IGRlc2Nfc2l6ZTogJyVzJ1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgb2Zmc2V0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgb2tyZXMgdWFrdHVhbG5pYW5pYSBtbXA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBrb3BpaSB6YXBhc293eWNoIHN1cGVyYmxva3U6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaWRlIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgcGFyYW1ldHIgc3RyaWRlOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIkLFgsSZZG55IHBhcmFtZXRyIHN0cmlwZS13aWR0aDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJCxYLEmWRueSBwYXJhbWV0ciByZXNpemU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKyJNYWtzeW1hbG55IHJvem1pYXIgKHJlc2l6ZSkgbXVzaSBiecSHIHdpxJlrc3p5IG9kIHJvem1pYXJ1IHN5c3RlbXUgcGxpa8Ozdy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJabWlhbmEgcm96bWlhcnUgdyBsb2NpZSBuaWUgamVzdCBvYnPFgnVnaXdhbmEgcHJ6ZXogc3lzdGVteSBwbGlrw7N3IHcgd2Vyc2ppICIKKyIwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJCxYLEmWRueSByb290X293bmVyOiAnJXMnXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlBvZGFubyBixYLEmWRuZSBvcGNqZTogJXNcbiIKKyJcbiIKKyJPcGNqZSByb3pzemVyem9uZSBzxIUgb2RkemllbGFuZSBwcnplY2lua2FtaSBpIG1vZ8SFIHByenlqbW93YcSHIHBhcmFtZXRyLFxuIgorIlx0a3TDs3J5IGplc3QgdXN0YXdpYW55IHpuYWtpZW0gJz0nLlxuIgorIlxuIgorIlBvcHJhd25lIG9wY2plIHJvenN6ZXJ6b25lIHRvOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08cHJ6ZWR6aWHFgj5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxyb3ptaWFyIHBvcmNqaSBkYW55Y2ggUkFJRCBuYSBkeXNrdSB3IGJsb2thY2g+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogbGljemJhIGR5c2vDs3cgZGFueWNoIHcgYmxva2FjaD5cbiIKKyJcdG9mZnNldD08cHJ6ZXN1bmnEmWNpZSBzeXN0ZW11IHBsaWvDs3cgZG8gdXR3b3J6ZW5pYT5cbiIKKyJcdHJlc2l6ZT08bWFrc3ltYWxueSByb3ptaWFyIHBvd2nEmWtzemVuaWEgdyBibG9rYWNoPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIGFieSB3ecWCxIVjennEhywgMSBhYnkgd8WCxIVjennEhz5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgYWJ5IHd5xYLEhWN6ecSHLCAxIGFieSB3xYLEhWN6ecSHPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgYWJ5IHd5xYLEhWN6ecSHLCAxIGFieSB3xYLEhWN6ecSHPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIGthdGFsb2d1IGfFgsOzd25lZ28+OjxnaWQga2F0YWxvZ3UgZ8WCw7N3bmVnbz5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxyb2R6YWooZSkgbGltaXTDs3cgZG8gd8WCxIVjemVuaWE+XG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVXdhZ2E6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5pZSBqZXN0IHBhcnp5c3TEhSB3aWVsb2tyb3Rub8WbY2nEhSBzdHJpZGUgJXUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorIkLFgsSFZCBza8WCYWRuaSB3IHBsaWt1IGtvbmZpZ3VyYWN5am55bSBta2UyZnMgKCVzLCBsaW5pYSAlZClcbiIKKyJcdCVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTExNCBtaXNjL3R1bmUyZnMuYzoxMDA3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZmlsZXN5c3RlbSBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJVc3Rhd2lvbmEgYsWCxJlkbmEgb3BjamEgc3lzdGVtdSBwbGlrw7N3OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiVXN0YXdpb25hIGLFgsSZZG5hIG9wY2phIG1vbnRvd2FuaWE6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisiVXdhZ2EhIFBsaWsgbWtlMmZzLmNvbmYgbmllIG9rcmXFm2xhIHR5cHUgc3lzdGVtdSBwbGlrw7N3ICVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJQcmF3ZG9wb2RvYm5pZSB0cnplYmEgemFpbnN0YWxvd2HEhyB1YWt0dWFsbmlvbnkgcGxpayBta2UyZnMuY29uZi5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiUHJ6ZXJ3YW5vLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTMxMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGZzX3R5cGUgJXMgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmZcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlV3YWdhOiB0eXAgc3lzdGVtdSBwbGlrw7N3ICVzIG5pZSBqZXN0IHpkZWZpbmlvd2FueSB3IG1rZTJmcy5jb25mXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTQ5MworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgbmV3IFBBVEguXG4iCittc2dzdHIgIk5pZSB1ZGHFgm8gc2nEmSBwcnp5ZHppZWxpxIcgcGFtacSZY2kgbmEgbm93xIUgUEFUSFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIk5pZSB1ZGHFgm8gc2nEmSBwb3ByYXduaWUgemFpbmljam93YcSHIHByb2ZpbHUgKGLFgsSFZDogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJixYLEmWRueSByb3ptaWFyIGJsb2t1IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBibG9ja3NpemUgJWQgbm90IHVzYWJsZSBvbiBtb3N0IHN5c3RlbXMuXG4iCittc2dzdHIgIlV3YWdhOiByb3ptaWFyIGJsb2t1ICVkIG5pZSB1xbx5d2FsbnkgbmEgd2nEmWtzem/Fm2NpIHN5c3RlbcOzdy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTg3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgImLFgsSZZG55IHJvem1pYXIga2xhc3RyYSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIictJScgamVzdCBwcnplc3RhcnphxYJlLCB6YW1pYXN0IG5pZWdvIG5hbGXFvHkgdcW8eXdhxIcgJy1FJyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgImLFgsSZZG5lIHRyYWt0b3dhbmllIGLFgsSZZMOzdyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIGJsb2vDs3cgdyBncnVwaWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICJsaWN6YmEgYmxva8OzdyB3IGdydXBpZSBtdXNpIGJ5xIcgd2llbG9rcm90bm/Fm2NpxIUgOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAiTmllZG9wdXN6Y3phbG55IHJvem1pYXIgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICJyb3ptaWFyIGZsZXhfYmcgbXVzaSBiecSHIHBvdMSZZ8SFIDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgYy1mb3JtYXQKK21zZ2lkICJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMl4zMSIKK21zZ3N0ciAicm96bWlhciBmbGV4X2JnICglbHUpIG11c2kgYnnEhyBtbmllanN6eSBsdWIgcsOzd255IDJeMzEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAiYsWCxJlkbnkgc3Rvc3VuZWsgaS13xJl6xYLDs3cgJXMgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgImLFgsSZZG55IHJvem1pYXIgaS13xJl6xYJhIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyJVd2FnYTogb3BjamEgLUsgamVzdCBwcnplc3RhcnphxYJhIGkgbmllIHBvd2lubmEganXFvCBiecSHIHXFvHl3YW5hLiBaYW1pYXN0ICIKKyJuaWVqIG5hbGXFvHkgdcW8ecSHIG9wY2ppIHJvenN6ZXJ6b25laiAnLUUgbm9kaXNjYXJkJy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICJ3IG1hbGxvYyBkbGEgYmFkX2Jsb2Nrc19maWxlbmFtZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICJVd2FnYTogZXR5a2lldGEgemEgZMWCdWdhOyB6b3N0YW5pZSBza3LDs2NvbmEgZG8gJyVzJ1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJixYLEmWRueSBwcm9jZW50IHphcmV6ZXJ3b3dhbnljaCBibG9rw7N3IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcyNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICJixYLEmWRuYSBsaWN6YmEgaS13xJl6xYLDs3cgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBmc19mZWF0dXJlIHN0cmluZyIKK21zZ3N0ciAicG9kY3phcyBwcnp5ZHppZWxhbmlhIMWCYcWEY3VjaGEgZnNfZmVhdHVyZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJixYLEmWRueSBwb3ppb20gd2Vyc2ppIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIHJldmlzaW9uICVkIgorbXNnc3RyICJ0cG9kY3phcyBwcsOzYnkgdXR3b3J6ZW5pYSByZXdpemppICVkIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKK21zZ2lkICJUaGUgLXQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiT3BjamEgLXQgbW/FvGUgYnnEhyB1xbx5dGEgdHlsa28gcmF6IgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAiT3BjamEgLVQgbW/FvGUgYnnEhyB1xbx5dGEgdHlsa28gcmF6IgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgInBvZGN6YXMgcHLDs2J5IG90d2FyY2lhIHVyesSFZHplbmlhIGtyb25pa2kgJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICJSb3ptaWFyIGJsb2t1IHVyesSFZHplbmlhIHoga3JvbmlrxIUgKCVkKSBtbmllanN6eSBvZCBtaW5pbWFsbmVnbyAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNpbmcgam91cm5hbCBkZXZpY2UncyBibG9ja3NpemU6ICVkXG4iCittc2dzdHIgIlXFvHljaWUgcm96bWlhcnUgYmxva3UgdXJ6xIVkemVuaWEga3JvbmlraTogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgImLFgsSZZG5hIGxpY3piYSBibG9rw7N3ICclcycgbmEgdXJ6xIVkemVuaXUgJyVzJyIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAic3lzdGVtIHBsaWvDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBva3JlxZtsZW5pYSByb3ptaWFydSBzeXN0ZW11IHBsaWvDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisiTmllIG1vxbxuYSBva3JlxZtsacSHIHJvem1pYXJ1IHVyesSFZHplbmlhOyByb3ptaWFyIHN5c3RlbXVcbiIKKyJwbGlrw7N3IG11c2kgYnnEhyBwb2RhbnlcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJPZGN6eXRhbnkgcm96bWlhciB1cnrEhWR6ZW5pYSB3eW5vc2kgemVyby4gUG9kYW5vIGLFgsSZZG7EhSBwYXJ0eWNqxJlcbiIKKyJcdGx1YiB0YWJsaWNhIHBhcnR5Y2ppIG5pZSBiecWCYSBvZGN6eXRhbmEgcG9ub3duaWUgcG8gdXJ1Y2hvbWllbml1XG4iCisiXHRmZGlza2EgeiBwb3dvZHUgemFqxJl0ZWogbW9keWZpa293YW5laiBwYXJ0eWNqaS4gUG9ub3dueSBvZGN6eXRcbiIKKyJcdHRhYmxpY3kgcGFydHljamkgbW/FvGUgd3ltYWdhxIcgcmVib290dS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgIlN5c3RlbSBwbGlrw7N3IHdpxJlrc3p5IG9kIHdpZG9jem5lZ28gcm96bWlhcnUgdXJ6xIVkemVuaWEuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgcHJ6ZWFuYWxpem93YcSHIGxpc3R5IHR5cMOzdyBzeXN0ZW3Ds3cgcGxpa8Ozd1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5OTgKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIVVJEIG5pZSBvYnPFgnVndWplIHfFgmHFm2Npd2/Fm2NpIGZpbGV0eXBlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDMKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBodWdlX2ZpbGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSFVSRCBuaWUgb2JzxYJ1Z3VqZSB3xYJhxZtjaXdvxZtjaSBodWdlX2ZpbGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiSFVSRCBuaWUgb2JzxYJ1Z3VqZSB3xYJhxZtjaXdvxZtjaSBtZXRhZGF0YV9jc3VtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBva3JlxZtsZW5pYSByb3ptaWFydSBzcHJ6xJl0b3dlZ28gc2VrdG9yYSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAicG9kY3phcyBwcsOzYnkgb2tyZcWbbGVuaWEgcm96bWlhcnUgc2VrdG9yYSBmaXp5Y3puZWdvIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNTYKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsIGZvciBkZXZpY2VcbiIKK21zZ3N0ciAicG9kY3phcyB1c3Rhd2lhbmlhIHJvem1pYXJ1IGJsb2t1OyB6Ynl0IG1hxYJ5IGRsYSB1cnrEhWR6ZW5pYVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJVd2FnYTogcG9kYW55IHJvem1pYXIgYmxva3UgJWQgamVzdCBtbmllanN6eSBuacW8IHJvem1pYXIgc2VrdG9yYSBmaXp5Y3puZWdvICIKKyIlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKyIlczogUm96bWlhciB1cnrEhWR6ZW5pYSAoMHglbGx4IGJsb2vDs3cpICVzIGplc3QgemJ5dCBkdcW8eSwgYWJ5IHd5cmF6acSHIGdvXG4iCisiXHR3IDMyIGJpdGFjaCBwcnp5IHXFvHljaXUgcm96bWlhcnUgYmxva3UgJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgIlJvendpbmnEmWNpZSBmc190eXBlcyBkbGEgbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJDZWNoeSBzeXN0ZW11IHBsaWvDs3cgbmllIG9ic8WCdWdpd2FuZSBwcnpleiBzeXN0ZW15IHBsaWvDs3cgdyB3ZXJzamkgMFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMTYKK21zZ2lkICJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIlJ6YWRraWUgc3VwZXJibG9raSBuaWUgc8SFIG9ic8WCdWdpd2FuZSBwcnpleiBzeXN0ZW15IHBsaWvDs3cgdyB3ZXJzamkgMFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJLcm9uaWtpIG5pZSBzxIUgb2JzxYJ1Z2l3YW5lIHByemV6IHN5c3RlbXkgcGxpa8OzdyB3IHdlcnNqaSAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICJixYLEmWRueSBwcm9jZW50IHphcmV6ZXJ3b3dhbnljaCBibG9rw7N3IC0gJWxmIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNTYKK21zZ2lkICIiCisiRXh0ZW50cyBNVVNUIGJlIGVuYWJsZWQgZm9yIGEgNjQtYml0IGZpbGVzeXN0ZW0uICBQYXNzIC1PIGV4dGVudHMgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJFa3N0ZW50eSBNVVNaxIQgYnnEhyB3xYLEhWN6b25lIGRsYSA2NC1iaXRvd2VnbyBzeXN0ZW11IHBsaWvDs3cuIEFieSB0byBwb3ByYXdpxIcsICIKKyJuYWxlxbx5IHByemVrYXphxIcgLU8gZXh0ZW50cy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAiUm96bWlhciBrbGFzdHJhIG5pZSBtb8W8ZSBiecSHIG1uaWVqc3p5IG5pxbwgcm96bWlhciBibG9rdS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAib2tyZcWbbGVuaWUgcm96bWlhcnUga2xhc3RyYSB3eW1hZ2Egd8WCYXNub8WbY2kgYmlnYWxsb2MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAidXdhZ2E6IG5pZSB1ZGHFgm8gc2nEmSBvZGN6eXRhxIcgZ2VvbWV0cmlpIHVyesSFZHplbmlhIGRsYSAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIld5csOzd25hbmllICVzIGplc3QgcHJ6ZXN1bmnEmXRlIG8gJWx1IGJhanTDs3cuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisiTW/FvGUgdG8gcG93b2Rvd2HEhyBiYXJkem8gbmlza8SFIHd5ZGFqbm/Fm8SHLCB6YWxlY2FuZSBqZXN0ICIKKyIocHJ6ZSlwYXJ0eWNqb25vd2FuaWUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIiVkLWJhanRvd2UgYmxva2kgc8SFIHpieXQgZHXFvGUgZGxhIHN5c3RlbXUgKG1heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIlV3YWdhOiAlZC1iYWp0b3dlIGJsb2tpIHPEhSB6Ynl0IGR1xbxlIGRsYSBzeXN0ZW11IChtYXggJWQpLCB3eW11c3pvbm8gIgorImtvbnR5bnVhY2rEmVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKyJTdWdlc3RpYTogasSFZHJvIExpbnVrc2EgPj0gMy4xOCBkYWplIGxlcHN6xIUgc3RhYmlsbm/Fm8SHIG1ldGFkYW55Y2ggb3JheiBzdW15ICIKKyJrb250cm9sbmUga3JvbmlraS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBvZmZzZXQgc3BlY2lmaWVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZmlsZSBzeXN0ZW0gc2l6ZS5cbiIKKyJDcmVhdGluZyBhIGZpbGUgc3lzdGVtIHdpdGggJWxsdSBibG9ja3MgYnV0IHRoaXMgbWlnaHRcbiIKKyJub3QgYmUgd2hhdCB5b3Ugd2FudC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlV3YWdhOiBvZmZzZXQgcG9kYW55IGJleiBqYXduZWdvIHJvem1pYXJ1IHN5c3RlbXUgcGxpa8Ozdy5cbiIKKyJUd29yemVuaWUgc3lzdGVtdSBwbGlrw7N3IG8gJWxsdSBibG9rYWNoLCBhbGUgYnnEhyBtb8W8ZSBuaWUgbyB0byBjaG9kemnFgm8uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiT2JzxYJ1Z2Egd8WCYXNub8WbY2kgYmlnYWxsb2MgamVzdCBuaWVtb8W8bGl3YSBiZXogd8WCYXNub8WbY2kgZXh0ZW50cyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJDZWNoeSByZXNpemVfaW5vZGUgaSBtZXRhX2JnIG5pZSBzxIUga29tcGF0eWJpbG5lLlxuIgorIk5pZSBtb8W8bmEgaWNoIHfFgsSFY3p5xIcgamVkbm9jemXFm25pZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVd2FnYTogd8WCYXNub8WbxIcgYmlnYWxsb2MgamVzdCBuYWRhbCB3IHRyYWtjaWUgcm96d29qdS5cbiIKKyJXacSZY2VqIGluZm9ybWFjamkgcG9kIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisiemFyZXplcndvd2FuZSBibG9raSBkbyB6bWlhbnkgcm96bWlhcnUgdyBsb2NpZSBuaWUgb2JzxYJ1Z2l3YW5lIG5hIG5pZWNpxIVnxYJ5bSAiCisic3lzdGVtaWUgcGxpa8OzdyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImxpY3piYSBibG9rw7N3IHcgZ3J1cGllIHNwb3phIHpha3Jlc3UiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM3MAorbXNnaWQgIkZsZXhfYmcgZmVhdHVyZSBub3QgZW5hYmxlZCwgc28gZmxleF9iZyBzaXplIG1heSBub3QgYmUgc3BlY2lmaWVkIgorbXNnc3RyICIiCisiQ2VjaGEgZmxleF9iZyBuaWUgamVzdCB3xYLEhWN6b25hLCB3acSZYyBuaWUgbW/FvG5hIG9rcmXFm2xpxIcgcm96bWlhcnUgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgImLFgsSZZG55IHJvem1pYXIgaS13xJl6xYJhICVkIChtaW4gJWQvbWF4ICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIGlubGluZSBkYXRhOyBzcGVjaWZ5IGxhcmdlciBzaXplIgorbXNnc3RyICIiCisiaS13xJl6xYJ5ICVkLWJhanRvd2Ugc8SFIHpieXQgbWHFgmUgZGxhIGRhbnljaCB3ZXduxJl0cnpueWNoOyBwcm9zesSZIHBvZGHEhyAiCisid2nEmWtzenkgcm96bWlhciIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKyJpLXfEmXrFgnkgJWQtYmFqdG93ZSBzxIUgemJ5dCBtYcWCZSBkbGEgbGltaXTDs3cgcHJvamVrdHU7IHByb3N6xJkgcG9kYcSHIHdpxJlrc3p5ICIKKyJyb3ptaWFyIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgcmFpc2UgaW5vZGUgcmF0aW8/IgorbXNnc3RyICJ6Ynl0IGR1xbxvIGktd8SZesWCw7N3ICglbGx1KSwgendpxJlrc3p5xIcgd3Nww7PFgmN6eW5uaWsgaS13xJl6xYLDs3c/IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICJ6Ynl0IGR1xbxvIGktd8SZesWCw7N3ICglbGx1KSwgbmFsZcW8eSBwb2RhxIcgPCAyXjMyIgorCisjOiBtaXNjL21rZTJmcy5jOjI0NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImlub2RlX3NpemUgKCV1KSAqIGlub2Rlc19jb3VudCAoJXUpIHRvbyBiaWcgZm9yIGFcbiIKKyJcdGZpbGVzeXN0ZW0gd2l0aCAlbGx1IGJsb2Nrcywgc3BlY2lmeSBoaWdoZXIgaW5vZGVfcmF0aW8gKC1pKVxuIgorIlx0b3IgbG93ZXIgaW5vZGUgY291bnQgKC1OKS5cbiIKK21zZ3N0ciAiIgorInJvem1faXfEmXrFgmEgKCV1KSAqIGxpY3piYV9pd8SZesWCw7N3ICgldSkgemJ5dCBkdcW8ZSBkbGEgc3lzdGVtdVxuIgorIlx0cGxpa8OzdyBvIGxpY3piaWUgYmxva8OzdyAlbGx1LCBuYWxlxbx5IHBvZGHEhyB3acSZa3N6eSB3c3DDs8WCY3p5bm5payAoLWkpXG4iCisiXHRsdWIgbW5pZWpzesSFIGxpY3pixJkgaS13xJl6xYLDs3cgKC1OKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjMzCittc2dpZCAiRGlzY2FyZGluZyBkZXZpY2UgYmxvY2tzOiAiCittc2dzdHIgIlBvcnp1Y2FuaWUgYmxva8OzdyB1cnrEhWR6ZW5pYTogIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKK21zZ2lkICJmYWlsZWQgLSAiCittc2dzdHIgIm5pZSBwb3dpb2TFgm8gc2nEmSAtICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgInBvZGN6YXMgaW5pY2pvd2FuaWEga29udGVrc3R1IGxpbWl0w7N3IgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAicG9kY3phcyB6YXBpc3UgaS13xJl6xYLDs3cgbGltaXTDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJixYLEmWRuZSB0cmFrdG93YW5pZSBixYLEmWTDs3cgdyBwcm9maWx1IC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgxNAorbXNnaWQgIndoaWxlIHNldHRpbmcgdXAgc3VwZXJibG9jayIKK21zZ3N0ciAicG9kY3phcyB1c3Rhd2lhbmlhIHN1cGVyYmxva3UiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJFa3N0ZW50eSBuaWUgc8SFIHfFgsSFY3pvbmUuIERyemV3byBla3N0ZW7Ds3cgcGxpa8OzdyBtb8W8ZSBtaWXEhyBzdW15IGtvbnRyb2xuZSwgYSAiCisibWFweSBibG9rw7N3IG5pZS4gTmlld8WCxIVjemVuaWUgZWtzdGVudMOzdyB6bW5pZWpzemEgcG9rcnljaWUgc3VtIGtvbnRyb2xueWNoICIKKyJtZXRhZGFueWNoLiBBYnkgdG8gcG9wcmF3acSHLCBuYWxlxbx5IGRvZGHEhyBvcGNqxJkgLU8gZXh0ZW50cy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIk9ic8WCdWdhIDY0LWJpdG93ZWdvIHN5c3RlbXUgcGxpa8OzdyBuaWUgamVzdCB3xYLEhWN6b25hLiBXacSZa3N6ZSBwb2xhICIKKyJkb3N0YXJjemFuZSBwcnpleiB0xJkgY2VjaMSZIHBvendhbGFqxIUgbmEgc2lsbmllanN6ZSBzdW15IGtvbnRyb2xuZS4gQWJ5IHRvICIKKyJwb3ByYXdpxIcsIG5hbGXFvHkgZG9kYcSHIG9wY2rEmSAtTyA2NGJpdC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiQ2VjaGEgbWV0YWRhdGFfY3N1bV9zZWVkIHd5bWFnYSBjZWNoeSBtZXRhZGF0YV9jc3VtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKyJDenlzemN6ZW5pZSBzacSZIHBvd2lvZMWCbyBpIGLEmWR6aWUgendyYWNhxIcgemVyYSAtIHBvbWluacSZdG8gY3p5c3pjemVuaWUgIgorInRhYmxpY3kgaS13xJl6xYLDs3dcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAibmllem5hbnkgb3MgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDE4Cittc2dpZCAiQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICIKK21zZ3N0ciAiUHJ6eWR6aWVsYW5pZSB0YWJsaWN5IGdydXA6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBwcnp5ZHppZWxlbmlhIHRhYmxpYyBzeXN0ZW11IHBsaWvDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdHBvZGN6YXMgcHLDs2J5IHByemVrc3p0YcWCY2VuaWEgYml0bWFweSBwb2RrbGFzdHLDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBtYXkgYmUgZnVydGhlciBjb3JydXB0ZWQgYnkgc3VwZXJibG9jayByZXdyaXRlXG4iCittc2dzdHIgIiVzIG1vxbxlIGJ5xIcgYmFyZHppZWogdXN6a29kem9ueSBwb3ByemV6IG5hZHBpc2FuaWUgc3VwZXJibG9rdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJwb2RjemFzIHplcm93YW5pYSBibG9rdSAlbGx1IG5hIGtvxYRjdSBzeXN0ZW11IHBsaWvDs3ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorbXNnaWQgIndoaWxlIHJlc2VydmluZyBibG9ja3MgZm9yIG9ubGluZSByZXNpemUiCittc2dzdHIgInBvZGN6YXMgcmV6ZXJ3b3dhbmlhIGJsb2vDs3cgbmEgem1pYW7EmSByb3ptaWFydSB3IGxvY2llIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgImtyb25pa2EiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiRG9kYW5vIGtyb25pa8SZIGRvIHVyesSFZHplbmlhICVzOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gYWRkIGpvdXJuYWwgdG8gZGV2aWNlICVzIgorbXNnc3RyICIiCisiXG4iCisiXHRwb2RjemFzIHByw7NieSBkb2RhbmlhIGtyb25pa2kgZG8gdXJ6xIVkemVuaWEgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgInd5a29uYW5vXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzNworbXNnaWQgIlNraXBwaW5nIGpvdXJuYWwgY3JlYXRpb24gaW4gc3VwZXItb25seSBtb2RlXG4iCittc2dzdHIgIlBvbWluacSZdG8gdHdvcnplbmllIGtyb25pa2kgdyB0cnliaWUgc3VwZXItb25seVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICJUd29yemVuaWUga3JvbmlraSAoJXUgYmxva8Ozdyk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHRwb2RjemFzIHByw7NieSB1dHdvcnplbmlhIGtyb25pa2kiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJCxYLEhWQgcG9kY3phcyB3xYLEhWN6YW5pYSBmdW5rY2ppIHphYmV6cGllY3plbmlhIHByemVkIHdpZWxva3JvdG55bSBtb250b3dhbmllbS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIlphYmV6cGllY3plbmllIHByemVkIHdpZWxva3JvdG55bSBtb250b3dhbmllbSBqZXN0IHfFgsSFY3pvbmUgeiBva3Jlc2VtICIKKyJ1YWt0dWFsbmlhbmlhICVkIHNla3VuZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCittc2dpZCAiQ29weWluZyBmaWxlcyBpbnRvIHRoZSBkZXZpY2U6ICIKK21zZ3N0ciAiS29waW93YW5pZSBwbGlrw7N3IG5hIHVyesSZZHplbmllOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5NworbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgInBvZGN6YXMgemFwZcWCbmlhbmlhIHN5c3RlbXUgcGxpa8OzdyIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIlphcGlzIHN1cGVyYmxva8OzdyBpIHBvZHN1bW93YW5pYSBzeXN0ZW11IHBsaWvDs3c6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIlV3YWdhLCBwcm9ibGVteSB6IHphcGlzZW0gc3VwZXJibG9rw7N3LiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorInd5a29uYW5vXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQYXJ0aXRpb24gb2Zmc2V0IG9mICVsbHUgKCV1aykgYmxvY2tzIG5vdCBjb21wYXRpYmxlIHdpdGggY2x1c3RlciBzaXplICV1LlxuIgorbXNnc3RyICIiCisiUHJ6ZXN1bmnEmWNpZSBwYXJ0eWNqaSB3IGJsb2thY2ggJWxsdSAoJXVrKSBuaWUgamVzdCB6Z29kbmUgeiByb3ptaWFyZW0gIgorImtsYXN0cmEgJXUuXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAiRHXFvGUgcGxpa2kgYsSZZMSFIHd5emVyb3dhbmVcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIlR3b3J6ZW5pZSBkdcW8eWNoIHBsaWvDs3cgdyBsaWN6YmllICVsdSAiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndpdGggJWxsdSBibG9ja3MgZWFjaCIKK21zZ3N0ciAibWFqxIVjeWNoIHBvICVsbHUgYmxvayjDs3cpIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUwNQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJwb2RjemFzIHR3b3J6ZW5pYSBkdcW8ZWdvIHBsaWt1ICVsdSIKKworIzogbWlzYy9ta2xvc3QrZm91bmQuYzo1MAorbXNnaWQgIlVzYWdlOiBta2xvc3QrZm91bmRcbiIKK21zZ3N0ciAiU2vFgmFkbmlhOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJTa8WCYWRuaWE6ICVzIHVyesSFZHplbmllLi4uXG4iCisiXG4iCisiV3lwaXNhbmllIGluZm9ybWFjamkgbyBwYXJ0eWNqYWNoIG5hIGthxbxkeW0gcG9kYW55bSB1cnrEhWR6ZW5pdS5cbiIKKyJQcnp5a8WCYWQ6ICVzIC9kZXYvaGRhXG4iCisiXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgb3BlbiAlczogJXMiCittc2dzdHIgIk5pZSBtb8W8bmEgb3R3b3J6ecSHICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgZ2VvbWV0cnkgb2YgJXM6ICVzIgorbXNnc3RyICJOaWUgbW/FvG5hIHBvYnJhxIcgZ2VvbWV0cmlpICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIk5pZSBtb8W8bmEgcG9icmHEhyByb3ptaWFydSAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBzdGFydD0lOGQgc2l6ZT0lOGx1IGVuZD0lOGRcbiIKK21zZ3N0ciAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgcG9jesSFdGVrPSU4ZCByb3ptaWFyPSU4bHUga29uaWVjPSU4ZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTkKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIlByb3N6xJkgdXJ1Y2hvbWnEhyBlMmZzY2sgLUQgbmEgc3lzdGVtaWUgcGxpa8Ozdy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxCisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiUHJvc3rEmSB1cnVjaG9tacSHIGUyZnNjayAtRCBuYSBzeXN0ZW1pZSBwbGlrw7N3LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWMgbWF4X21vdW50c19jb3VudF0gWy1lIGVycm9yc19iZWhhdmlvcl0gWy1mXSBbLWcgZ3JvdXBdXG4iCisiXHRbLWkgaW50ZXJ2YWxbZHxtfHddXSBbLWpdIFstSiBqb3VybmFsX29wdGlvbnNdIFstbF1cbiIKKyJcdFstbSByZXNlcnZlZF9ibG9ja3NfcGVyY2VudF0gWy1vIFteXW1vdW50X29wdGlvbnNbLC4uLl1dXG4iCisiXHRbLXAgbW1wX3VwZGF0ZV9pbnRlcnZhbF0gWy1yIHJlc2VydmVkX2Jsb2Nrc19jb3VudF0gWy11IHVzZXJdXG4iCisiXHRbLUMgbW91bnRfY291bnRdIFstTCB2b2x1bWVfbGFiZWxdIFstTSBsYXN0X21vdW50ZWRfZGlyXVxuIgorIlx0Wy1PIFteXWZlYXR1cmVbLC4uLl1dIFstUSBxdW90YV9vcHRpb25zXVxuIgorIlx0Wy1FIGV4dGVuZGVkLW9wdGlvblssLi4uXV0gWy1UIGxhc3RfY2hlY2tfdGltZV0gWy1VIFVVSURdXG4iCisiXHRbLUkgbmV3X2lub2RlX3NpemVdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiU2vFgmFkbmlhOiAlcyBbLWMgbWF4X2xpY3puaWtfbW9udG93YcWEXSBbLWUgdHJha3QuX2LFgsSZZMOzd10gWy1mXSBbLWcgZ3J1cGFdXG4iCisiXHRbLWkgb2RzdMSZcFtkfG18d11dIFstal0gWy1KIG9wY2plX2tyb25pa2ldIFstbF1cbiIKKyJcdFstbSBwcm9jZW50X3JlemVydy5fYmxva8Ozd10gWy1vIFteXW9wY2plX21vbnRvd2FuaWFbLC4uLl1dXG4iCisiXHRbLXAgb2tyZXNfdWFrdC5fbW1wXSBbLXIgbGljemJhX3phcmV6Ll9ibG9rw7N3XSBbLXUgdcW8eXRrb3duaWtdXG4iCisiXHRbLUMgbGljem5pa19tb250b3dhxYRdIFstTCBldHlraWV0YV93b2x1bWVudV0gWy1NIG9zdGF0bmlvX21vbnQuX2thdGFsb2ddXG4iCisiXHRbLU8gW15dY2VjaGFbLC4uLl1dIFstUSBvcGNqZV9saW1pdMOzd11cbiIKKyJcdFstRSBvcGNqYV9yb3pzemVyem9uYVssLi4uXV0gWy1UIGN6YXNfb3N0Ll9zcHJhd2R6Ll0gWy1VIFVVSURdXG4iCisiXHRbLUkgbm93eV9yb3ptaWFyX2ktd8SZesWCYV0gWy16IHBsaWtfdW5kb10gdXJ6xIVkemVuaWVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjE4Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCFcbiIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gc3VwZXJibG9rdSBrcm9uaWtpIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBvdHdvcnplbmlhIHpld27EmXRyem5laiBrcm9uaWtpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODIgbWlzYy90dW5lMmZzLmM6MjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgbmllIGplc3QgdXJ6xIVkemVuaWVtIGtyb25pa2kuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJVVUlEIHN5c3RlbXUgcGxpa8OzdyBuaWUgem5hbGV6aW9ueSBuYSB1cnrEhWR6ZW5pdSBrcm9uaWtpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTYKK21zZ2lkICIiCisiQ2Fubm90IGxvY2F0ZSBqb3VybmFsIGRldmljZS4gSXQgd2FzIE5PVCByZW1vdmVkXG4iCisiVXNlIC1mIG9wdGlvbiB0byByZW1vdmUgbWlzc2luZyBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIk5pZSBtb8W8bmEgemxva2FsaXpvd2HEhyB1cnrEhWR6ZW5pYSBrcm9uaWtpLiBOSUUgem9zdGHFgm8gdXN1bmnEmXRlLlxuIgorIk1vxbxuYSB1xbx5xIcgb3BjamkgLWYsIGFieSB1c3VuxIXEhyBuaWVpc3RuaWVqxIVjZSB1cnrEhWR6ZW5pZSBrcm9uaWtpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAiS3JvbmlrYSB1c3VuacSZdGFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJwb2RjemFzIG9kY3p5dHUgYml0bWFwIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJwb2RjemFzIGN6eXN6Y3plbmlhIGktd8SZesWCYSBrcm9uaWtpIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInBvZGN6YXMgemFwaXN1IGktd8SZesWCYSBrcm9uaWtpIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIocHJvc3rEmSB6cmVzdGFydG93YcSHIHBvdGVtIHN5c3RlbSEpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3NgorIywgYy1mb3JtYXQKK21zZ2lkICJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICJQbyB1cnVjaG9taWVuaXUgZTJmc2NrIHByb3N6xJkgdXJ1Y2hvbWnEhyBgcmVzaXplMmZzICVzICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICJQcm9zesSZIHVydWNob21pxIcgYHJlc2l6ZTJmcyAlcyAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiAteiBcIiVzXCIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiJywgYWJ5IHfFgsSFY3p5xIcgdHJ5YiA2NC1iaXRvd3kuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIicsIGFieSB3ecWCxIVjennEhyB0cnliIDY0LWJpdG93eS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKyJVV0FHQTogbmllIHVkYcWCbyBzacSZIHVwZXduacSHIGNvIGRvIG9ic8WCdWdpIGNlY2h5IG1ldGFkYXRhX2NzdW1fc2VlZCB3ICIKKyJqxIVkcnplLlxuIgorIiAgV3ltYWdhIHRvIExpbnVrc2EgdyB3ZXJzamkgPj0gNC40LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIlVzdXdhbmllIGNlY2h5IHN5c3RlbXUgcGxpa8OzdyAnJXMnIG5pZSBqZXN0IG9ic8WCdWdpd2FuZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgY2VjaHkgc3lzdGVtdSBwbGlrw7N3ICclcycgbmllIGplc3Qgb2JzxYJ1Z2l3YW5lLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkZsYWdhIGhhc19qb3VybmFsIG1vxbxlIGJ5xIcgd3ljenlzemN6b25hIHR5bGtvIGtpZWR5IHN5c3RlbSBwbGlrw7N3XG4iCisiamVzdCBvZG1vbnRvd2FueSBsdWIgemFtb250b3dhbnkgdHlsa28gZG8gb2Rjenl0dS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIkZsYWdhIG5lZWRzX3JlY292ZXJ5IGplc3QgdXN0YXdpb25hLiBQcm9zesSZIHVydWNob21pxIcgZTJmc2NrIHByemVkXG4iCisiY3p5c3pjemVuaWVtIGZsYWdpIGhhc19qb3VybmFsLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJVc3Rhd2llbmllIHfFgmHFm2Npd2/Fm2NpIHN5c3RlbXUgcGxpa8OzdyAnc3BhcnNlX3N1cGVyJyBuaWUgamVzdCBvYnPFgnVnaXdhbmVcbiIKKyJkbGEgc3lzdGVtw7N3IHBsaWvDs3cgeiB3xYLEhWN6b27EhSBjZWNoxIUgbWV0YV9iZy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA2NAorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbid0XG4iCisiYmUgc2V0IGlmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgb3JcbiIKKyJyZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJGdW5rY2phIG9jaHJvbnkgcHJ6ZWQgd2llbG9rcm90bnltIG1vbnRvd2FuaWVtIG5pZSBtb8W8ZSB6b3N0YcSHXG4iCisid8WCxIVjem9uYSwgamXFm2xpIHN5c3RlbSBwbGlrw7N3IGplc3QgemFtb250b3dhbnkgbHViIHR5bGtvIGRvIG9kY3p5dHUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorIlphdmV6cGllY3plbmllIHByemVkIHdpZWxva3JvdG55bSBtb250b3dhbmllbSB6b3N0YcWCYSB3xYLEhWN6b25hIHogY3phc2VtICIKKyJ1YWt0dWFsbmlhbmlhICVkcy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisiRnVua2NqYSB6YWJlenBpZWN6ZW5pYSBwcnplZCB3aWVsb2tyb3RueW0gbW9udG93YW5pZW0gbmllIG1vxbxlIHpvc3RhxIdcbiIKKyJ3ecWCxIVjem9uYSwgamXFm2xpIHN5c3RlbSBwbGlrw7N3IGplc3QgdHlsa28gZG8gb2Rjenl0dS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5OQorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgYml0bWFwc1xuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyBvZGN6eXR1IGJpdG1hcFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICJMaWN6YmEgbWFnaWN6bmEgdyBibG9rdSBNTVAgc2nEmSBuaWUgemdhZHphOyBvY3pla2l3YW5vICV4LCBqZXN0ICV4XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgInBvZGN6YXMgb2Rjenl0dSBibG9rdSBNTVAuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICJXecWCxIVjemVuaWUgZmxhZ2kgZmxleF9iZyBzcG93b2R1amUgbmllc3DDs2pub8WbxIcgc3lzdGVtdSBwbGlrw7N3LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTU2Cittc2dpZCAiIgorIlRoZSBodWdlX2ZpbGUgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJGbGFnYSBodWdlX2ZpbGUgbW/FvGUgYnnEhyB3eWN6eXN6Y3pvbmEgdHlsa28ga2llZHkgc3lzdGVtIHBsaWvDs3dcbiIKKyJqZXN0IG9kbW9udG93YW55IGx1YiB6YW1vbnRvd2FueSB0eWxrbyBkbyBvZGN6eXR1LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiV8WCxIVjemVuaWUgc3VtIGtvbnRyb2xueWNoIG1vxbxlIHphasSFxIcgdHJvY2jEmSBjemFzdS4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIHfFgsSFY3p5xIcgY2VjaHkgbWV0YWRhdGFfY3N1bSBuYSB6YW1vbnRvd2FueW0gc3lzdGVtaWUgcGxpa8OzdyFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyJFa3N0ZW50eSBuaWUgc8SFIHfFgsSFY3pvbmUuIERyemV3byBla3N0ZW7Ds3cgcGxpa8OzdyBtb8W8ZSBtaWXEhyBzdW15IGtvbnRyb2xuZSwgYSAiCisibWFweSBibG9rw7N3IG5pZS4gTmlld8WCxIVjemVuaWUgZWtzdGVudMOzdyB6bW5pZWpzemEgcG9rcnljaWUgc3VtIGtvbnRyb2xueWNoICIKKyJtZXRhZGFueWNoLiBBYnkgdG8gcG9wcmF3acSHLCBuYWxlxbx5IHVydWNob21pxIcgcG9ub3duaWUgeiBvcGNqxIUgLU8gZXh0ZW50cy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiT2JzxYJ1Z2EgNjQtYml0b3dlZ28gc3lzdGVtdSBwbGlrw7N3IG5pZSBqZXN0IHfFgsSFY3pvbmEuIFdpxJlrc3plIHBvbGEgIgorImRvc3RhcmN6YW5lIHByemV6IHTEmSBjZWNoxJkgcG96d2FsYWrEhSBuYSBzaWxuaWVqc3plIHN1bXkga29udHJvbG5lLiBBYnkgdG8gIgorInBvcHJhd2nEhywgbmFsZcW8eSB1cnVjaG9tacSHIHJlc2l6ZTJmcyAtYi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICJXecWCxIVjemVuaWUgc3VtIGtvbnRyb2xueWNoIG1vxbxlIHphasSFxIcgdHJvY2jEmSBjemFzdS4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisiTmllIG1vxbxuYSB3ecWCxIVjennEhyBjZWNoeSBtZXRhZGF0YV9jc3VtIG5hIHphbW9udG93YW55bSBzeXN0ZW1pZSBwbGlrw7N3IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorIk5pZSBtb8W8bmEgd8WCxIVjennEhyB0cnlidSA2NC1iaXRvd2Vnbywga2llZHkgc3lzdGVtIHBsaWvDs3cgamVzdCB6YW1vbnRvd2FueSFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisiTmllIG1vxbxuYSB3ecWCxIVjennEhyB0cnlidSA2NC1iaXRvd2Vnbywga2llZHkgc3lzdGVtIHBsaWvDs3cgamVzdCB6YW1vbnRvd2FueSFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisiXG4iCisiVXdhZ2E6IHfFgsSFY3pvbm8gcHJvamVrdCBiZXogamVkbm9jemVzbmVnbyB3xYLEhWN6ZW5pYSBsaW1pdMOzd1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlV3YWdhOiBvcGNqYSAnXnF1b3RhJyBuYWRwaXN1amUgYXJndW1lbnR5ICctUScuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJVc3Rhd2llbmllIGNlY2h5ICdtZXRhZGF0YV9jc3VtX3NlZWQnIGplc3Qgb2JzxYJ1Z2l3YW5lXG4iCisidHlsa28gZGxhIHN5c3RlbcOzdyBwbGlrw7N3IHogd8WCxIVjem9uxIUgY2VjaMSFIG1ldGFkYXRhX2NzdW0uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorIlVVSUQgem1pZW5pxYIgc2nEmSBvZCBjemFzdSB3xYLEhWN6ZW5pYSBjZWNoeSBtZXRhZGF0YV9jc3VtLiBTeXN0ZW0gcGxpa8OzdyBtdXNpXG4iCisiYnnEhyBvZG1vbnRvd2FueSwgYWJ5IGJlenBpZWN6bmllIG5hZHBpc2HEhyB3c3p5c3RraWUgbWV0YWRhbmUsIMW8ZWJ5IHpnYWR6YcWCeVxuIgorInNpxJkgeiBub3d5bSBVVUlELWVtLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJTeXN0ZW0gcGxpa8OzdyBqdcW8IG1hIGtyb25pa8SZLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgb24gJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlx0cG9kY3phcyBwcsOzYnkgb3R3b3J6ZW5pYSBrcm9uaWtpIG5hICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiVHdvcnplbmllIGtyb25pa2kgbmEgdXJ6xIVkemVuaXUgJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJwb2RjemFzIGRvZGF3YW5pYSBzeXN0ZW11IHBsaWvDs3cgZG8ga3JvbmlraSBuYSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiVHdvcnplbmllIGktd8SZesWCYSBrcm9uaWtpOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0cG9kY3phcyBwcsOzYnkgdXR3b3J6ZW5pYSBwbGlrdSBrcm9uaWtpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJwb2RjemFzIGluaWNqb3dhbmlhIGtvbnRla3N0dSBsaW1pdMOzdyB3IGJpYmxpb3RlY2Ugd3NwaWVyYWrEhWNlaiIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBxdW90YSBsaW1pdHMgKCVkKSIKK21zZ3N0ciAicG9kY3phcyB1YWt0dWFsbmlhbmlhIGxpbWl0w7N3ICglZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgInBvZGN6YXMgemFwaXN1IHBsaWt1IGxpbWl0w7N3ICglZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJwb2RjemFzIHVzdXdhbmlhIHBsaWt1IGxpbWl0w7N3ICglZCkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKK21zZ2lkICIiCisiXG4iCisiQmFkIHF1b3RhIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkZvbGxvd2luZyB2YWxpZCBxdW90YSBvcHRpb25zIGFyZSBhdmFpbGFibGUgKHBhc3MgYnkgc2VwYXJhdGluZyB3aXRoICIKKyJjb21tYSk6XG4iCisiXHRbXl11c3JbcXVvdGFdXG4iCisiXHRbXl1ncnBbcXVvdGFdXG4iCisiXHRbXl1wcmpbcXVvdGFdXG4iCisiXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJQb2Rhbm8gYsWCxJlkbmUgb3BjamUgbGltaXTDs3cuXG4iCisiXG4iCisiRG9zdMSZcG5lIHPEhSBuYXN0xJlwdWrEhWNlIG9wY2plIGxpbWl0w7N3IChtb8W8bmEgamUgcHJ6ZWthenl3YcSHIG9kZHppZWxvbmUgIgorInByemVjaW5raWVtKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiTmllIG1vxbxuYSBwcnplYW5hbGl6b3dhxIcgcG9kYW5laiBkYXR5L2N6YXN1OiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTY1OCBtaXNjL3R1bmUyZnMuYzoxNjcxCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBtb3VudHMgY291bnQgLSAlcyIKK21zZ3N0ciAiYsWCxJlkbmEgbGljemJhIG1vbnRvd2HFhCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJixYLEmWRueSBnaWQvbmF6d2EgZ3J1cHkgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc0NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW50ZXJ2YWwgLSAlcyIKK21zZ3N0ciAiYsWCxJlkbnkgb2RzdMSZcCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICJixYLEmWRueSBwcm9jZW50IHphcmV6ZXJ3b3dhbnljaCBibG9rw7N3IC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gbW/FvGUgYnnEhyBwb2RhbmUgdHlsa28gcmF6IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1PIG1vxbxlIGJ5xIcgcG9kYW5lIHR5bGtvIHJheiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgImLFgsSZZG5hIGxpY3piYSB6YXJlemVyd293YW55Y2ggYmxva8OzdyAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgImLFgsSZZG55IHVpZC9uYXp3YSB1xbx5dGtvd25pa2EgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJixYLEmWRueSByb3ptaWFyIGktd8SZesWCYSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIlJvem1pYXIgaS13xJl6xYJhIG11c2kgYnnEhyBwb3TEmWfEhSBkd8OzamtpIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAiT2tyZXMgdWFrdHVhbG5pYW5pYSBtbXAgemJ5dCBkdcW8eTogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKKyJVc3Rhd2lhbmllIG9rcmVzdSB1YWt0dWFsbmlhbmlhIHphYmV6cGllY3plbmlhIHByemVkIHdpZWxva3JvdG55bSAiCisibW9udG93YW5pZW0gbmEgJWx1IHNla3VuZMSZXG4iCittc2dzdHJbMV0gIiIKKyJVc3Rhd2lhbmllIG9rcmVzdSB1YWt0dWFsbmlhbmlhIHphYmV6cGllY3plbmlhIHByemVkIHdpZWxva3JvdG55bSAiCisibW9udG93YW5pZW0gbmEgJWx1IHNla3VuZHlcbiIKK21zZ3N0clsyXSAiIgorIlVzdGF3aWFuaWUgb2tyZXN1IHVha3R1YWxuaWFuaWEgemFiZXpwaWVjemVuaWEgcHJ6ZWQgd2llbG9rcm90bnltICIKKyJtb250b3dhbmllbSBuYSAlbHUgc2VrdW5kXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlkZTogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgcGFyYW1ldHIgUkFJRCBzdHJpZGU6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgcGFyYW1ldHIgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiQsWCxJlkbnkgYWxnb3J5dG0gaGFzem93YW5pYTogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJVc3Rhd2lhbmllIGRvbXnFm2xuZWdvIGFsZ29yeXRtdSBoYXN6b3dhbmlhIG5hICVzICglZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjA1MAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlBvZGFubyBixYLEmWRuZSBvcGNqZS5cbiIKKyJcbiIKKyJPcGNqZSByb3pzemVyem9uZSBzxIUgb2RkemllbGFuZSBwcnplY2lua2FtaSBpIG1vZ8SFIHByenlqbW93YcSHIHBhcmFtZXRyLFxuIgorIlx0a3TDs3J5IGplc3QgdXN0YXdpYW55IHpuYWtpZW0gJz0nLlxuIgorIlxuIgorIlBvcHJhd25lIG9wY2plIHRvOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08YWxnb3J5dG0gaGFzem93YW5pYT5cbiIKKyJcdG1vdW50X29wdHM9PHJvenN6ZXJ6b25lIGRvbXnFm2xuZSBvcGNqZSBtb250b3dhbmlhPlxuIgorIlx0c3RyaWRlPTxyb3ptaWFyIHBvcmNqaSBkYW55Y2ggUkFJRCBuYSBkeXNrdSB3IGJsb2thY2g+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlICogbGljemJhIGR5c2vDs3cgZGFueWNoIHcgYmxva2FjaD5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdF50ZXN0X2ZzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MTkKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBpbm9kZSBiaXRtYXBcbiIKK21zZ3N0ciAiTmllIHVkYcWCbyBzacSZIG9kY3p5dGHEhyBiaXRtYXB5IGktd8SZesWCw7N3XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1MjQKK21zZ2lkICJGYWlsZWQgdG8gcmVhZCBibG9jayBiaXRtYXBcbiIKK21zZ3N0ciAiTmllIHVkYcWCbyBzacSZIG9kY3p5dGHEhyBiaXRtYXB5IGJsb2vDs3dcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0MSByZXNpemUvcmVzaXplMmZzLmM6MTI3NgorbXNnaWQgImJsb2NrcyB0byBiZSBtb3ZlZCIKK21zZ3N0ciAiYmxva2kgZG8gcHJ6ZW5pZXNpZW5pYSIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorIk5pZSB1ZGHFgm8gc2nEmSBwcnp5ZHppZWxpxIcgYml0bWFweSBibG9rw7N3IHBvZGN6YXMgendpxJlrc3phbmlhIHJvem1pYXJ1IGktIgorInfEmXrFgmFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAiWmEgbWHFgm8gbWllanNjYSwgYWJ5IHp3acSZa3N6ecSHIHJvem1pYXIgaS13xJl6xYJhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIk5pZSB1ZGHFgm8gc2nEmSBwcnplbWllxZtjacSHIGJsb2vDs3cgcG9kY3phcyB6bWlhbnkgcm96bWlhcnUgaS13xJl6xYJhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIkLFgsSFZCBwb2RjemFzIHptaWFueSByb3ptaWFydSBpLXfEmXrFgmEuXG4iCisiTmFsZcW8eSB1cnVjaG9tacSHIGUydW5kbyB3IGNlbHUgd3ljb2ZhbmlhIHptaWFuIHcgc3lzdGVtaWUgcGxpa8Ozdy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJMaWN6YmEgbWFnaWN6bmEgYmxva3UgTU1QIGplc3QgYsWCxJlkbmEuIE1vxbxuYSBwcsOzYm93YcSHIHRvIG5hcHJhd2nEhyAiCisidXJ1Y2hhbWlhasSFYzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJOaWUgbW/FvG5hIHptb2R5Zmlrb3dhxIcgdXJ6xIVkemVuaWEga3JvbmlraS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJSb3ptaWFyIGktd8SZesWCYSBqdcW8IHd5bm9zaSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzMQorbXNnaWQgIlNocmlua2luZyBpbm9kZSBzaXplIGlzIG5vdCBzdXBwb3J0ZWRcbiIKK21zZ3N0ciAiWm1uaWVqc3phbmllIHJvem1pYXJ1IGktd8SZesWCYSBuaWUgamVzdCBvYnPFgnVnaXdhbmVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgIkLFgsSZZG55IHJvem1pYXIgaS13xJl6xYJhICVsdSAobWF4ICVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiWm1pYW5hIHJvem1pYXJ1IGktd8SZesWCw7N3IG1vxbxlIHphasSFxIcgdHJvY2jEmSBjemFzdS4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgbWFrc3ltYWxuZWogbGljemJ5IG1vbnRvd2HFhCBuYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgY3VycmVudCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICJVc3Rhd2lhbmllIGFrdHVhbG5lZ28gbGljem5pa2EgbW9udG93YcWEIG5hICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJVc3Rhd2lhbmllIHRyYWt0b3dhbmlhIGLFgsSZZMOzdyBuYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAiVXN0YXdpYW5pZSBnaWQtYSB6YXJlemVyd293YW55Y2ggYmxva8OzdyBuYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxMAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyBpcyB0b28gYmlnICglbHUpIgorbXNnc3RyICJvZHN0xJlwIHBvbWnEmWR6eSBzcHJhd2R6ZW5pYW1pIGplc3QgemJ5dCBkdcW8eSAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgb2RzdMSZcHUgcG9tacSZZHp5IHNwcmF3ZHplbmlhbWkgbmEgJWx1IHNla3VuZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnRhZ2UgdG8gJWclJSAoJWxsdSBibG9ja3MpXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgcHJvY2VudHUgemFyZXplcndvd2FueWNoIGJsb2vDs3cgbmEgJWclJSAoJWxsdSBibG9rw7N3KVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAibGljemJhIHphcmV6ZXJ3b3dhbnljaCBibG9rw7N3IGplc3QgemJ5dCBkdcW8YSAoJWxsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICJVc3Rhd2lhbmllIGxpY3pieSB6YXJlemVyd293YW55Y2ggYmxva8OzdyBuYSAlbGx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisiU3lzdGVtIHBsaWvDs3cganXFvCBtYSByemFka2llIHN1cGVyYmxva2kuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDUKK21zZ2lkICIiCisiXG4iCisiU2V0dGluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiVXN0YXdpZW5pZSBmbGFnaSByemFka2llZ28gc3VwZXJibG9rdSBuaWUgamVzdCBvYnPFgnVnaXdhbmVcbiIKKyJkbGEgc3lzdGVtw7N3IHBsaWvDs3cgeiB3xYLEhWN6b27EhSBjZWNoxIUgbWV0YV9iZy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIkZsYWdhIHJ6YWRraWNoIHN1cGVyYmxva8OzdyB1c3Rhd2lvbmEuICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTYwCittc2dpZCAiIgorIlxuIgorIkNsZWFyaW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJVc3V3YW5pZSBmbGFnaSByemFka2llZ28gc3VwZXJibG9rdSBuaWUgamVzdCBvYnPFgnVnaXdhbmUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgY3phc3Ugb3N0YXRuaWVnbyBzcHJhd2R6ZW5pYSBzeXN0ZW11IHBsaWvDs3cgbmEgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIlVzdGF3aWFuaWUgdWlkLWEgemFyZXplcndvd2FueWNoIGJsb2vDs3cgbmEgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMDYKK21zZ2lkICJFcnJvciBpbiB1c2luZyBjbGVhcl9tbXAuIEl0IG11c3QgYmUgdXNlZCB3aXRoIC1mXG4iCittc2dzdHIgIkLFgsSFZCB3IHXFvHljaXUgY2xlYXJfbW1wLiBPcGNqYSB0YSBtdXNpIGJ5xIcgdcW8eXRhIHogLWZcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAyNAorbXNnaWQgIiIKKyJUaGUgcXVvdGEgZmVhdHVyZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiRnVua2NqxJkgbGltaXTDs3cgbW/FvG5hIHptaWVuacSHIHR5bGtvIG5hIG5pZXphbW9udG93YW55bSBzeXN0ZW1pZSBwbGlrw7N3LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4Cittc2dpZCAiVGhlIFVVSUQgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiVVVJRCBtb8W8bmEgem1pZW5pxIcgdHlsa28gbmEgbmllemFtb250b3dhbnltIHN5c3RlbWllIHBsaWvDs3cuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKyJKZcW8ZWxpIHXFvHl3YW5lIHPEhSB0eWxrbyBqxIVkcmEgbm93c3plIG5pxbwgNC40LCBtb8W8bmEgdXJ1Y2hvbWnEhyAndHVuZTJmcyAtTyAiCisibWV0YWRhdGFfY3N1bV9zZWVkJywgYSBuYXN0xJlwbmllIHBvbm93bmllIHRvIHBvbGVjZW5pZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisiVXN0YXdpZW5pZSBVVUlELWEgc3lzdGVtdSBwbGlrw7N3IHogc3VtYW1pIGtvbnRyb2xueW1pIG1vxbxlIHphasSFxIcgdHJvY2jEmSAiCisiY3phc3UuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJCxYLEmWRueSBmb3JtYXQgVVVJRC1hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMDEKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIlRyemViYSB1YWt0dWFsbmnEhyBzdXBlcmJsb2sga3JvbmlraS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJSb3ptaWFyIGktd8SZesWCYSBtb8W8bmEgem1pZW5pxIcgdHlsa28gbmEgbmllemFtb250b3dhbnltIHN5c3RlbWllIHBsaWvDs3cuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlptaWFuYSByb3ptaWFydSBpLXfEmXrFgmEgbmllIGplc3Qgb2JzxYJ1Z2l3YW5hIGRsYSBzeXN0ZW3Ds3cgcGxpa8Ozd1xuIgorInogd8WCxIVjem9uxIUgY2VjaMSFIGZsZXhfYmcuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIgorbXNnc3RyICJVc3Rhd2lhbmllIHJvem1pYXJ1IGktd8SZesWCYSBuYSAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgem1pZW5pxIcgcm96bWlhcnUgaS13xJl6xYJhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJVc3Rhd2lhbmllIHJvem1pYXJ1IHN0cmlkZSBuYSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgIlVzdGF3aWFuaWUgc3plcm9rb8WbY2kgc3RyaXBlIG5hIG5hICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICJVc3Rhd2lhbmllIHJvenN6ZXJ6b255Y2ggZG9tecWbbG55Y2ggb3BjamkgbW9udG93YW5pYSBuYSAnJXMnXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZSBqb3VybmFsIGlzIGRpcnR5LiBZb3UgbWF5IHdpc2ggdG8gcmVwbGF5IHRoZSBqb3VybmFsIGxpa2U6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisiYnkgam91cm5hbCByZWNvdmVyeS5cbiIKK21zZ3N0ciAiIgorIlV3YWdhOiBrcm9uaWthIG5pZSBqZXN0IGN6eXN0YS4gTW/FvG5hIG9kdHdvcnp5xIcga3JvbmlrxJkgcG9sZWNlbmllbTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJhIG5hc3TEmXBuaWUgdXJ1Y2hvbWnEhyBwb25vd25pZSB0byBwb2xlY2VuaWUuIFcgaW5ueW0gcHJ6eXBhZGt1IHdzemVsa2llXG4iCisid3lrb25hbmUgem1pYW55IG1vZ8SFIHpvc3RhxIcgbmFkcGlzYW5lIHByenkgb2R0d2FyemFuaXUga3JvbmlraS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgYy1mb3JtYXQKK21zZ2lkICJSZWNvdmVyaW5nIGpvdXJuYWwuXG4iCittc2dzdHIgIk9kdHdhcnphbmllIGtyb25pa2kuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICI8a29udHludWFjamE+XG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiS29udHludW93YcSHIG1pbW8gdG8gKGx1YiBvZGN6ZWthxIcgJWQgcyk/ICh0LG4pICIKKworIzogbWlzYy91dGlsLmM6MTA4Cittc2dpZCAiUHJvY2VlZCBhbnl3YXk/ICh5LG4pICIKK21zZ3N0ciAiS29udHludW93YcSHIG1pbW8gdG8/ICh0LG4pICIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIm1rZTJmcyB3eW11c3pvbmUgbWltbyB0by4gTWFtIG5hZHppZWrEmSwgxbxlIC9ldGMvbXRhYiBzacSZIG15bGkuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEzOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aWxsIG5vdCBtYWtlIGEgJXMgaGVyZSFcbiIKK21zZ3N0ciAibmllIHpyb2JpxJkgdHV0YWogJXMhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJta2UyZnMgd3ltdXN6b25lIG1pbW8gdG8uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgcHJ6eWR6aWVsacSHIHBhbWnEmWNpIG5hIGFuYWxpesSZIG9wY2ppIGtyb25pa2khXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IGZpbmQgam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIk5pZSBtb8W8bmEgem5hbGXFusSHIHVyesSFZHplbmlhIGtyb25pa2kgcGFzdWrEhWNlZ28gZG8gJXNcbiIKKworIzogbWlzYy91dGlsLmM6MjEzCittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiUG9kYW5vIGLFgsSZZG5lIG9wY2plIGtyb25pa2kuXG4iCisiXG4iCisiT3BjamUga3JvbmlraSBzxIUgb2RkemllbGFuZSBwcnplY2lua2FtaSBpIG1vZ8SFIHByenlqbW93YcSHIHBhcmFtZXRyLFxuIgorIlx0a3TDs3J5IHVzdGF3aWEgc2nEmSB6bmFraWVtICc9Jy5cbiIKKyJcbiIKKyJQb3ByYXduZSBvcGNqZSBrcm9uaWtpIHRvOlxuIgorIlx0c2l6ZT08cm96bWlhciBrcm9uaWtpIHcgbWVnYWJhanRhY2g+XG4iCisiXHRkZXZpY2U9PHVyesSFZHplbmllIGtyb25pa2k+XG4iCisiXHRsb2NhdGlvbj08cG/Fgm/FvGVuaWUga3JvbmlraT5cbiIKKyJcbiIKKyJSb3ptaWFyIGtyb25pa2kgbXVzaSBiecSHIHBvbWnEmWR6eSAxMDI0IGEgMTAyNDAwMDAgYmxva2FtaSBzeXN0ZW11IHBsaWvDs3cuXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTeXN0ZW0gcGxpa8OzdyB6YSBtYcWCeSBuYSBrcm9uaWvEmVxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLFu8SFZGFueSByb3ptaWFyIGtyb25pa2kgdG8gJWQgYmxva8OzdzsgbXVzaSBiecSHXG4iCisicG9tacSZZHp5IDEwMjQgYSAxMDI0MDAwMCBibG9rw7N3LiBQcnplcndhbm8uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlJvem1pYXIga3JvbmlraSB6Ynl0IGR1xbx5IGRsYSBzeXN0ZW11IHBsaWvDs3cuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI3MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBmaWxlc3lzdGVtIHdpbGwgYmUgYXV0b21hdGljYWxseSBjaGVja2VkIGV2ZXJ5ICVkIG1vdW50cyBvclxuIgorIiVnIGRheXMsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gIFVzZSB0dW5lMmZzIC1jIG9yIC1pIHRvIG92ZXJyaWRlLlxuIgorbXNnc3RyICIiCisiVGVuIHN5c3RlbSBwbGlrw7N3IGLEmWR6aWUgYXV0b21hdHljem5pZSBzcHJhd2R6YW55IGNvIGthxbxkZSAlZCBtb250b3dhxYRcbiIKKyJsdWIgY28gJWcgZG5pLCB6YWxlxbxuaWUgY28gbmFzdMSFcGkgcGllcndzemUuIE1vxbxuYSB0byB6bWllbmnEhyBwb3ByemV6XG4iCisidHVuZTJmcyAtYyBsdWIgLWkuXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0OQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1kXSBbLXAgcGlkZmlsZV0gWy1zIHNvY2tldHBhdGhdIFstVCB0aW1lb3V0XVxuIgorbXNnc3RyICIiCisiU2vFgmFkbmlhOiAlcyBbLWRdIFstcCBwbGlrX3BpZF0gWy1zIMWbY2llxbxrYV9nbmlhemRhXSBbLVQgbGltaXRfY3phc3VdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIgICAgICAgICAgJXMgWy1yfHRdIFstbiBpbGVdIFstcyDFm2NpZcW8a2FfZ25pYXpkYV1cbiIKKworIzogbWlzYy91dWlkZC5jOjUzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAta1xuIgorbXNnc3RyICIgICAgICAgICAgJXMgLWtcbiIKKworIzogbWlzYy91dWlkZC5jOjE1NQorbXNnaWQgImJhZCBhcmd1bWVudHMiCittc2dzdHIgImLFgsSZZG5lIGFyZ3VtZW50eSIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgIsWCxIVjemVuaWUiCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAiemFwaXMiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICJvZGN6eXQgbGljemJ5IgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiYsWCxJlkbmEgZMWCdWdvxZvEhyBvZHBvd2llZHppIgorCisjOiBtaXNjL3V1aWRkLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgInV1aWRkIGRhZW1vbiBhbHJlYWR5IHJ1bm5pbmcgYXQgcGlkICVzXG4iCittc2dzdHIgImRlbW9uIHV1aWRkIGp1xbwgZHppYcWCYSB6IHBpZGVtICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY3JlYXRlIHVuaXggc3RyZWFtIHNvY2tldDogJXMiCittc2dzdHIgIk5pZSB1ZGHFgm8gc2nEmSB1dHdvcnp5xIcgdW5pa3Nvd2VnbyBnbmlhemRhIHN0cnVtaWVuaW93ZWdvOiAlcyIKKworIzogbWlzYy91dWlkZC5jOjMwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBiaW5kIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgcG9kcGnEhcSHIGduaWF6ZGEgdW5pa3Nvd2VnbyAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgbmFzxYJ1Y2hpd2HEhyBuYSBnbmllxbpkemllIHVuaWtzb3d5bSAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICJCxYLEhWQgb2Rjenl0dSBvZCBrbGllbnRhLCBkxYJ1Z2/Fm8SHID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIm9wZXJhY2phICVkLCBsaWN6YmEgcHJ6eWNob2R6xIVjYSA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiV3lnZW5lcm93YW55IFVVSUQgY3phc293eTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM5MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgcmFuZG9tIFVVSUQ6ICVzXG4iCittc2dzdHIgIld5Z2VuZXJvd2FueSBVVUlEIGxvc293eTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICJXeWdlbmVyb3dhbnkgVVVJRCBjemFzb3d5ICVzIGkga29sZWpueVxuIgorbXNnc3RyWzFdICJXeWdlbmVyb3dhbnkgVVVJRCBjemFzb3d5ICVzIGkgJWQga29sZWpuZVxuIgorbXNnc3RyWzJdICJXeWdlbmVyb3dhbnkgVVVJRCBjemFzb3d5ICVzIGkgJWQga29sZWpueWNoXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkICVkIFVVSUQnczpcbiIKK21zZ3N0ciAiV3lnZW5lcm93YW5vICVkIFVVSUQtw7N3OlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uICVkXG4iCittc2dzdHIgIkLFgsSZZG5hIG9wZXJhY2phICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmE6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICJCxYLEhWQgcG9kY3phcyB3eXdvxYJhbmlhIGRlbW9uYSB1dWlkZCAoJXMpOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiJXMgaSBrb2xlam55IFVVSURcbiIKK21zZ3N0clsxXSAiJXMgaSAlZCBrb2xlam5lIFVVSUQteVxuIgorbXNnc3RyWzJdICIlcyBpICVkIGtvbGVqbnljaCBVVUlELcOzd1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIkxpc3RhIFVVSUQtw7N3OlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZXhwZWN0ZWQgcmVwbHkgbGVuZ3RoIGZyb20gc2VydmVyICVkXG4iCittc2dzdHIgIk5pZW9jemVraXdhbmEgZMWCdWdvxZvEhyBvZHBvd2llZHppIHNlcndlcmE6ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiTmllIHVkYcWCbyBzacSZIHphYmnEhyB1dWlkZCBkemlhxYJhasSFY2VnbyB6IHBpZGVtICVkOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICJaYXBpdG8gdXVpZGQgZHppYcWCYWrEhWN5IHogcGlkZW0gJWRcbiIKKworIzogbWlzYy91dWlkZ2VuLmM6MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcl0gWy10XVxuIgorbXNnc3RyICJTa8WCYWRuaWE6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBacnp1dCBla3N0ZW50dTpcbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiI1x0TnVtPSVsbHUsIFJvem1pYXI9JWxsdSwgS3Vyc29yPSVsbHUsIFNvcnRvd2FuZT0lbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlNrxYJhZG5pYTogJXMgWy1kIGZsYWdpX8WbbGVkemVuaWFdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSB1cnrEhWR6ZW5pZSBbLWJ8LXN8IgorIm5vd3lfcm96bV0gWy16IHBsaWtfdW5kb11cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIlJvenN6ZXJ6YW5pZSB0YWJsaWN5IGktd8SZesWCw7N3IgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIlJlbG9rb3dhbmllIGJsb2vDs3ciCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiUHJ6ZXN6dWtpd2FuaWUgdGFibGljeSBpLXfEmXrFgsOzdyIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIlVha3R1YWxuaWFuaWUgb2R3b8WCYcWEIGRvIGktd8SZesWCw7N3IgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJQcnplbm9zemVuaWUgdGFibGljeSBpLXfEmXrFgsOzdyIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAiTmllem5hbnkgcHJ6ZWJpZWc/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICJQb2N6xIV0a293eSBwcnplYmllZyAlZCAobWFrc3ltYWxueSA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlptaWFuYSByb3ptaWFyw7N3IHN5c3RlbcOzdyBwbGlrw7N3IGJpZ2FsbG9jIG5pZSB6b3N0YcWCYSBqZXN6Y3plIHcgcGXFgm5pXG4iCisicHJ6ZXRlc3Rvd2FuYS4gS29udHludWFjamEgdHlsa28gbmEgd8WCYXNuZSByeXp5a28hIEFieSBtaW1vIHdzenlzdGtvXG4iCisidG8gd3lrb25hxIcsIG5hbGXFvHkgdcW8ecSHIG9wY2ppIGZvcmNlLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICJwb2RjemFzIG90d2llcmFuaWEgJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6MzczCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGdldHRpbmcgc3RhdCBpbmZvcm1hdGlvbiBmb3IgJXMiCittc2dzdHIgInBvZGN6YXMgcG9iaWVyYW5pYSBpbmZvcm1hY2ppIHN0YXQgZGxhICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlByb3N6xJkgdXJ1Y2hvbWnEhyBuYWpwaWVydyAnZTJmc2NrIC1mICVzJy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICJQcnp5YmxpxbxvbnkgbWluaW1hbG55IHJvem1pYXIgc3lzdGVtdSBwbGlrw7N3OiAlbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgIkLFgsSZZG55IG5vd3kgcm96bWlhcjogJXNcbiIKKworIzogcmVzaXplL21haW4uYzo1MjAKK21zZ2lkICJOZXcgc2l6ZSB0b28gbGFyZ2UgdG8gYmUgZXhwcmVzc2VkIGluIDMyIGJpdHNcbiIKK21zZ3N0ciAiTm93eSByb3ptaWFyIHpieXQgZHXFvHksIGJ5IG3Ds2fFgiBiecSHIHd5cmHFvG9ueSB3IDMyIGJpdGFjaFxuIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAiTm93eSByb3ptaWFyIGplc3QgbW5pZWpzenkgbmnFvCBtaW5pbWFsbnkgKCVsbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIgorbXNnc3RyICJCxYLEmWRuYSBkxYJ1Z2/Fm8SHIHN0cmlkZSIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlBhcnR5Y2phIHphd2llcmFqxIVjYSAobHViIHVyesSFZHplbmllKSBtYSB0eWxrbyAlbGx1IGJsb2vDs3cgKCVkaykuXG4iCisiWmHFvMSFZGFubyBub3dlZ28gcm96bWlhcnUgJWxsdSBibG9rw7N3LlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICJOaWUgbW/FvG5hIHfFgsSFY3p5xIcgaSB3ecWCxIVjennEhyBjZWNoeSA2NGJpdC5cbiIKKworIzogcmVzaXplL21haW4uYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgb24gYSBmaWxlc3lzdGVtIHRoYXQgaXMgbGFyZ2VyIHRoYW4gMl4zMiAiCisiYmxvY2tzLlxuIgorbXNnc3RyICIiCisiTmllIG1vxbxuYSB6bWllbmnEhyBjZWNoeSA2NGJpdCB3IHN5c3RlbWllIHBsaWvDs3cgd2nEmWtzenltIG5pxbwgMl4zMiBibG9rw7N3LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIk5pZSBtb8W8bmEgem1pZW5pxIcgY2VjaHkgNjRiaXQsIGtpZWR5IHN5c3RlbSBwbGlrw7N3IGplc3QgemFtb250b3dhbnkuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgZW5hYmxlIHRoZSBleHRlbnRzIGZlYXR1cmUgd2l0aCB0dW5lMmZzIGJlZm9yZSBlbmFibGluZyB0aGUgNjRiaXQgIgorImZlYXR1cmUuXG4iCittc2dzdHIgIiIKKyJQcm9zesSZIHfFgsSFY3p5xIcgY2VjaMSZIGV4dGVudHMgcHJ6eSB1xbx5Y2l1IHR1bmUyZnMgcHJ6ZWQgd8WCxIVjemVuaWVtIGNlY2h5ICIKKyI2NGJpdC5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyJTeXN0ZW0gcGxpa8OzdyBqdcW8IG1hIHdpZWxrb8WbxIcgJWxsdSAoJWRrKSBibG9rw7N3LiBOaWUgbWEgbmljIGRvIHJvYm90eSFcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIlN5c3RlbSBwbGlrw7N3IGplc3QganXFvCA2NC1iaXRvd3kuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJTeXN0ZW0gcGxpa8OzdyBqZXN0IGp1xbwgMzItYml0b3d5LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiS29ud2Vyc2phIHN5c3RlbXUgcGxpa8OzdyBuYSA2NCBiaXR5LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDMyLWJpdC5cbiIKK21zZ3N0ciAiS29ud2Vyc2phIHN5c3RlbXUgcGxpa8OzdyBuYSAzMiBiaXR5LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMgorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAiWm1pYW5hIHJvem1pYXJ1IHN5c3RlbXUgcGxpa8OzdyAlcyBuYSAlbGx1ICglZGspIGJsb2vDs3cuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgInBvZGN6YXMgcHLDs2J5IHptaWFueSByb3ptaWFydSAlcyIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKyJQcm9zesSZIHVydWNob21pxIcgJ2UyZnNjayAtZnkgJXMnLCBhYnkgbmFwcmF3acSHIHN5c3RlbSBwbGlrw7N3XG4iCisicG8gcHJ6ZXJ3YW5laiBvcGVyYWNqaSB6bWlhbnkgcm96bWlhcnUuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBvbiAlcyBpcyBub3cgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlN5c3RlbSBwbGlrw7N3IG5hICVzIG1hIHRlcmF6ICVsbHUgKCVkaykgYmxva8Ozdy5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo2NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHRydW5jYXRlICVzIgorbXNnc3RyICJwb2RjemFzIHByw7NieSBza3LDs2NlbmlhICVzIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAiasSFZHJvIG5pZSBvYnPFgnVndWplIHptaWFueSByb3ptaWFydSB3IGxvY2llIHByenkgZmxhZHplIHNwYXJzZV9zdXBlcjIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiIgorIlN5c3RlbSBwbGlrw7N3ICVzIGplc3QgemFtb250b3dhbnkgcG9kICVzOyB3eW1hZ2FuYSB6bWlhbmEgcm96bWlhcnUgdyBsb2NpZVxuIgorCisjOiByZXNpemUvb25saW5lLmM6OTAKK21zZ2lkICJPbi1saW5lIHNocmlua2luZyBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJabW5pZWpzemFuaWUgdyBsb2NpZSBuaWUgamVzdCBvYnPFgnVnaXdhbmUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJTeXN0ZW0gcGxpa8OzdyBuaWUgb2JzxYJ1Z3VqZSB6bWlhbnkgcm96bWlhcnUgdyBsb2NpZSIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIlpieXQgbWHFgm8gemFyZXplcndvd2FueWNoIGJsb2vDs3cgZ2R0IGRvIHptaWFueSByb3ptaWFydSIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiSsSFZHJvIG5pZSBvYnPFgnVndWplIHptaWFueSByb3ptaWFydSB0YWsgZHXFvGVnbyBzeXN0ZW11IHBsaWvDs3ciCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIKK21zZ3N0ciAicG9kY3phcyBwcsOzYnkgb3R3YXJjaWEgcHVua3R1IG1vbnRvd2FuaWEgJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiT2xkIHJlc2l6ZSBpbnRlcmZhY2UgcmVxdWVzdGVkLlxuIgorbXNnc3RyICJaYcW8xIVkYW5vIHN0YXJlZ28gaW50ZXJmZWpzdSByZXNpemUuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjEgcmVzaXplL29ubGluZS5jOjE3OAorbXNnaWQgIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIgorbXNnc3RyICJCcmFrIHVwcmF3bmllxYQgZG8gem1pYW55IHJvem1pYXJ1IHN5c3RlbXUgcGxpa8OzdyIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiUG9kY3phcyBzcHJhd2R6YW5pYSBvYnPFgnVnaSB6bWlhbnkgcm96bWlhcnUgdyBsb2NpZSIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiSsSFZHJvIG5pZSBvYnPFgnVndWplIHptaWFueSByb3ptaWFydSB3IGxvY2llIgorCisjOiByZXNpemUvb25saW5lLmM6MjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIlBlcmZvcm1pbmcgYW4gb24tbGluZSByZXNpemUgb2YgJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIld5a29ueXdhbmllIHptaWFueSByb3ptaWFydSB3IGxvY2llICVzIG5hICVsbHUgKCVkaykgYmxva8Ozdy5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjIzMAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBleHRlbmQgdGhlIGxhc3QgZ3JvdXAiCittc2dzdHIgIlBvZGN6YXMgcHLDs2J5IHJvenN6ZXJ6ZW5pYSBvc3RhdG5pZWogZ3J1cHkiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIlBvZGN6YXMgcHLDs2J5IGRvZGFuaWEgZ3J1cHkgIyVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiU3lzdGVtIHBsaWvDs3cgbmEgJXMgamVzdCB6YW1vbnRvd2FueSBwb2QgJXMsIHptaWFuYSByb3ptaWFydSB3IGxvY2llIG5pZSAiCisiamVzdCBvYnPFgnVnaXdhbmEgbmEgdHltIHN5c3RlbWllLlxuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgImxpY3piYSBpLXfEmXrFgsOzdyAoJWxsdSkgbXVzaSBiecSHIG1uaWVqc3phIG5pxbwgJXUiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJ6YXJlemVyd293YW5lIGJsb2tpIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgImJsb2tpIG1ldGFkYW55Y2giCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMzg1IHJlc2l6ZS9yZXNpemUyZnMuYzoyMzE3Cittc2dpZCAibmV3IG1ldGEgYmxvY2tzIgorbXNnc3RyICJub3dlIGJsb2tpIG1ldGEiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICJUbyBzacSZIG5pZSBwb3dpbm5vIHpkYXJ6ecSHISBCcmFrIHNiIHcgb3N0YXRuaW0gc3VwZXJfc3BhcnNlIGJnP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorIlRvIHNpxJkgbmllIHBvd2lubm8gemRhcnp5xIchIE5pZW9jemVraXdhbmUgb2xkX2Rlc2MgdyBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIk5pZ2R5IHNpxJkgbmllIHBvd2lubm8gemRhcnp5xIc6IGktd8SZemXFgiB6bWlhbnkgcm96bWlhcnUgdXN6a29kem9ueSFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCisjLCBmdXp6eQorbXNnaWQgIkVYVDJGUyBMaWJyYXJ5IHZlcnNpb24gMS40My4yIgorbXNnc3RyICJCaWJsaW90ZWthIEVYVDJGUyB3IHdlcnNqaSAxLjQzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIGRsYSBzdHJ1a3R1cnkgZXh0Ml9maWxzeXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBiYWRibG9ja3NfbGlzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IGJhZGJsb2Nrc19pdGVyYXRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBpbm9kZV9zY2FuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IGlvX2NoYW5uZWwgdHlwdSB1bml4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBpb19tYW5hZ2VyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJsb2NrX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IGJsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBpbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrdHVyeSBnZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB0ZXN0IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHN0cnVrcnV0eSBpb19jaGFubmVsIHR5cHUgdGVzdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IGxpc3R5IGJsb2vDs3cga2F0YWxvZ3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIGRsYSBzdHJ1a3R1cnkgaWNvdW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IGlvX2NoYW5uZWwgdHlwdSBQb3dlcnF1ZXN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IHBsaWt1IGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgbmFnxYLDs3drYSBvYnJhenUgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZSBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIGRsYSBzdHJ1a3R1cnkgaW9fY2hhbm5lbCBpLXfEmXrFgmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIHVjaHd5dHUgZWtzdGVudHUgZXh0NCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIHcgc3VwZXJibG9rdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiV2Vyc2phIHN5c3RlbXUgcGxpa8OzdyB6Ynl0IGR1xbxhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAiUHLDs2JhIHphcGlzdSB3IHN5c3RlbWllIHBsaWvDs3cgb3R3YXJ0eW0gdHlsa28gZG8gb2Rjenl0dSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTmllIG1vxbxuYSBvZGN6eXRhxIcgZGVza3J5cHRvcsOzdyBncnVwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiTmllIG1vxbxuYSB6YXBpc2HEhyBkZXNrcnlwdG9yw7N3IGdydXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIlVzemtvZHpvbnkgZGVza3J5cHRvciBncnVweTogd2FkbGl3eSBibG9rIGJpdG1hcHkgYmxva8OzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiVXN6a29kem9ueSBkZXNrcnlwdG9yIGdydXB5OiB3YWRsaXd5IGJsb2sgYml0bWFweSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICJVc3prb2R6b255IGRlc2tyeXB0b3IgZ3J1cHk6IHdhZGxpd3kgYmxvayB0YWJsaWN5IGktd8SZesWCw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzgKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk5pZSBtb8W8bmEgemFwaXNhxIcgYml0bWFweSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIk5pZSBtb8W8bmEgb2Rjenl0YcSHIGJpdG1hcHkgaS13xJl6xYLDs3ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorbXNnaWQgIkNhbid0IHdyaXRlIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJOaWUgbW/FvG5hIHphcGlzYcSHIGJpdG1hcHkgYmxva8OzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiTmllIG1vxbxuYSBvZGN6eXRhxIcgYml0bWFweSBibG9rw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTmllIG1vxbxuYSB6YXBpc2HEhyB0YWJsaWN5IGktd8SZesWCw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDMKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJOaWUgbW/FvG5hIG9kY3p5dGHEhyB0YWJsaWN5IGktd8SZesWCw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDQKK21zZ2lkICJDYW4ndCByZWFkIG5leHQgaW5vZGUiCittc2dzdHIgIk5pZSBtb8W8bmEgb2Rjenl0YcSHIGtvbGVqbmVnbyBpLXfEmXrFgmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiU3lzdGVtIHBsaWvDs3cgbWEgbmllb2N6ZWtpd2FueSByb3ptaWFyIGJsb2t1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIkthdGFsb2cgRVhUMiB1c3prb2R6b255IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIlByw7NiYSBvZGN6eXR1IGJsb2t1IHogc3lzdGVtdSBwbGlrw7N3IHpha2/FhGN6ecWCYSBzacSZIHNrcsOzY29ueW0gb2Rjenl0ZW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiUHLDs2JhIHphcGlzdSBibG9rdSB3IHN5c3RlbWllIHBsaWvDs3cgemFrb8WEY3p5xYJhIHNpxJkgc2tyw7Njb255bSB6YXBpc2VtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIkJyYWsgd29sbmVnbyBtaWVqc2NhIHcga2F0YWxvZ3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MAorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJOaWUgd2N6eXRhbm8gYml0bWFweSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIk5pZSB3Y3p5dGFubyBiaXRtYXB5IGJsb2vDs3ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJOaWVkb3p3b2xvbmEgbGljemJhIGktd8SZesWCw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTMKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiTmllZG96d29sb25hIGxpY3piYSBibG9rw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTQKK21zZ2lkICJJbnRlcm5hbCBlcnJvciBpbiBleHQyZnNfZXhwYW5kX2RpciIKK21zZ3N0ciAiQsWCxIVkIHdld27EmXRyem55IHcgZXh0MmZzX2V4cGFuZF9kaXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NQorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gYnVpbGQgcHJvcG9zZWQgZmlsZXN5c3RlbSIKK21zZ3N0ciAiWmEgbWHFgm8gbWllanNjYSBkbyB6YnVkb3dhbmlhIHByb3Bvbm93YW5lZ28gc3lzdGVtdSBwbGlrw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTYKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJOaWVkb3p3b2xvbnkgbnVtZXIgYmxva3UgcHJ6ZWthemFueSBkbyBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiTmllZG96d29sb255IG51bWVyIGJsb2t1IHByemVrYXphbnkgZG8gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIk5pZWRvendvbG9ueSBudW1lciBibG9rdSBwcnpla2F6YW55IGRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiTmllZG96d29sb255IG51bWVyIGktd8SZesWCYSBwcnpla2F6YW55IGRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJOaWVkb3p3b2xvbnkgbnVtZXIgaS13xJl6xYJhIHByemVrYXphbnkgZG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIk5pZWRvendvbG9ueSBudW1lciBpLXfEmXrFgmEgcHJ6ZWthemFueSBkbyBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MgorbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGJsb2NrIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiUHLDs2JhIHNmYcWCc3pvd2FuaWEga2/FhGNhIGJpdG1hcHkgYmxva8OzdyB6YSBwcmF3ZHppd3ltIGtvxYRjZW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiUHLDs2JhIHNmYcWCc3pvd2FuaWEga2/FhGNhIGJpdG1hcHkgaS13xJl6xYLDs3cgemEgcHJhd2R6aXd5bSBrb8WEY2VtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJabmFsZXppb25vIG5pZWRvendvbG9ueSBibG9rIHBvxZtyZWRuaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY1Cittc2dpZCAiSWxsZWdhbCBkb3VibHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIlpuYWxlemlvbm8gbmllZG96d29sb255IGJsb2sgcG9kd8Ozam5pZSBwb8WbcmVkbmkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJabmFsZXppb25vIG5pZWRvendvbG9ueSBibG9rIHBvdHLDs2puaWUgcG/Fm3JlZG5pIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIkJpdG1hcHkgYmxva8OzdyBuaWUgc8SFIHRha2llIHNhbWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OAorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiQml0bWFweSBpLXfEmXrFgsOzdyBuaWUgc8SFIHRha2llIHNhbWUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OQorbXNnaWQgIklsbGVnYWwgb3IgbWFsZm9ybWVkIGRldmljZSBuYW1lIgorbXNnc3RyICJOaWVkb3p3b2xvbmEgbHViIMW6bGUgemFwaXNhbmEgbmF6d2EgdXJ6xIVkemVuaWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiR3J1cGEgYmxva8OzdyBuaWUgbWEgdGFibGljeSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJTdXBlcmJsb2sgZXh0MiBqZXN0IHVzemtvZHpvbnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiTmllZG96d29sb255IG51bWVyIGJpdHUgcHJ6ZWthemFueSBkbyBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjczCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIk5pZWRvendvbG9ueSBudW1lciBiaXR1IHByemVrYXphbnkgZG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJOaWVkb3p3b2xvbnkgbnVtZXIgYml0dSBwcnpla2F6YW55IGRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzUKK21zZ2lkICJUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZC4iCittc2dzdHIgIk5hcG90a2FubyB6Ynl0IGR1xbxvIGRvd2nEhXphxYQgc3ltYm9saWN6bnljaC4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICJGdW5rY2phIHd5d2/FgmFuaWEgendyb3RuZWdvIG5pZSBvYnPFgnXFvHkgdGVnbyBwcnp5cGFka3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiSS13xJl6ZcWCIHBvY2hvZHrEhWN5IHogd2FkbGl3ZWdvIGJsb2t1IHcgdGFibGljeSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiU3lzdGVtIHBsaWvDs3cgbWEgd8WCxIVjem9uZSBuaWUgb2JzxYJ1Z2l3YW5lIGNlY2h5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiU3lzdGVtIHBsaWvDs3cgbWEgd8WCxIVjem9uZSBuaWUgb2JzxYJ1Z2l3YW5lIGNlY2h5IHR5bGtvIGRvIG9kY3p5dHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiIgorIk5pZSBwb3dpb2TFgm8gc2nEmSBwcnplbWllc3pjemVuaWUgdyBrYW5hxYIgd2Uvd3kgcHJ6eSBvZGN6eWNpZSBsdWIgemFwaXNpZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICJQcnp5ZHppZWxlbmllIHBhbWnEmWNpIG5pZSBwb3dpb2TFgm8gc2nEmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICJQcnpla2F6YW5vIGLFgsSZZG55IGFyZ3VtZW50IGRvIGJpYmxpb3Rla2kgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTmllIHVkYcWCbyBzacSZIHByenlkemllbGnEhyBibG9rdSB3IHN5c3RlbWllIHBsaWvDs3cgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiTmllIHVkYcWCbyBzacSZIHByenlkemllbGnEhyBpLXfEmXrFgmEgdyBzeXN0ZW1pZSBwbGlrw7N3IGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICJJLXfEmXplxYIgZXh0MiBuaWUgamVzdCBrYXRhbG9naWVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODYKK21zZ2lkICJUb28gbWFueSByZWZlcmVuY2VzIGluIHRhYmxlIgorbXNnc3RyICJaYnl0IGR1xbxvIG9kbmllc2llxYQgdyB0YWJsaWN5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gcGxpa3UgdyBleHQyX2xvb2t1cCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg4Cittc2dpZCAiRmlsZSBvcGVuIHJlYWQtb25seSIKK21zZ3N0ciAiUGxpayBvdHdhcnR5IHR5bGtvIGRvIG9kY3p5dHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gYmxva3Uga2F0YWxvZ3UgZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkthdGFsb2cgZXh0MiBqdcW8IGlzdG5pZWplIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTEKK21zZ2lkICJVbmltcGxlbWVudGVkIGV4dDIgbGlicmFyeSBmdW5jdGlvbiIKK21zZ3N0ciAiTmllIHphaW1wbGVtZW50b3dhbmEgZnVua2NqYSBiaWJsaW90ZWtpIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MgorbXNnaWQgIlVzZXIgY2FuY2VsIHJlcXVlc3RlZCIKK21zZ3N0ciAixbvEhWRhbmllIHByemVyd2FuaWEgb2QgdcW8eXRrb3duaWthIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTMKK21zZ2lkICJFeHQyIGZpbGUgdG9vIGJpZyIKK21zZ3N0ciAiUGxpayBleHQyIHpieXQgZHXFvHkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiUHJ6ZWthemFuZSB1cnrEhWR6ZW5pZSBrcm9uaWtpIG5pZSBqZXN0IHVyesSFZHplbmllbSBibG9rb3d5bSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gc3VwZXJibG9rdSBrcm9uaWtpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgIktyb25pa2EgbXVzaSBtaWXEhyBwcnp5bmFqbW5pZWogMTAyNCBibG9raSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJOaWUgb2JzxYJ1Z2l3YW5hIHdlcnNqYSBrcm9uaWtpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgIkLFgsSFZCBwb2RjemFzIHdjenl0eXdhbmlhIHpld27EmXRyem5laiBrcm9uaWtpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8ga3JvbmlraSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMAorbXNnaWQgIkRpcmVjdG9yeSBoYXNoIHVuc3VwcG9ydGVkIgorbXNnc3RyICJOaWUgb2JzxYJ1Z2l3YW5lIGhhc3pvd2FuaWUga2F0YWxvZ3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIkLFgsSZZG55IG51bWVyIGJsb2t1IGF0cnlidXR1IHJvenN6ZXJ6b25lZ28iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAiTmllIG1vxbxuYSB1dHdvcnp5xIcgc3lzdGVtdSBwbGlrw7N3IG8gxbzEhWRhbmVqIGxpY3piaWUgaS13xJl6xYLDs3ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIk1pZ2F3a2EgZTJpbWFnZSBuaWUgamVzdCB3IHXFvHljaXUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAiWmJ5dCBkdcW8byB6YXJlemVyd293YW55Y2ggYmxva8OzdyBkZXNrcnlwdG9yw7N3IGdydXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiSS13xJl6ZcWCIHptaWFueSByb3ptaWFydSBqZXN0IHVzemtvZHpvbnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIlByw7Nib3dhbm8gdXN0YXdpxIcgYml0bWFwxJkgYmxva8OzdyB6IGJyYWt1asSFY3ltIGJsb2tpZW0gYmV6cG/Fm3JlZG5pbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERCOiBzdWtjZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDgKK21zZ2lkICJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCittc2dzdHIgIlREQjogdXN6a29kem9uYSBiYXphIGRhbnljaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOQorbXNnaWQgIlREQjogSU8gRXJyb3IiCittc2dzdHIgIlREQjogYsWCxIVkIHdlL3d5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IGLFgsSFZCBibG9rb3dhbmlhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTExCittc2dpZCAiVERCOiBPdXQgb2YgbWVtb3J5IgorbXNnc3RyICJUREI6IGJyYWsgcGFtacSZY2kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTIKK21zZ2lkICJUREI6IFJlY29yZCBleGlzdHMiCittc2dzdHIgIlREQjogcmVrb3JkIGlzdG5pZWplIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IGlzdG5pZWplIGJsb2thZGEgbmEgaW5ueWNoIGtsdWN6YWNoIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiBixYLEmWRueSBwYXJhbWV0ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJUREI6IHJla29yZCBuaWUgaXN0bmllamUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjogemFwaXMgbmllZG96d29sb255IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICJMaXN0YSBibG9rw7N3IGthdGFsb2d1IGV4dDJmcyBqZXN0IHB1c3RhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorIlByw7NiYSB6bW9keWZpa293YW5pYSBtYXB5IGJsb2vDs3cgcG9wcnpleiBpdGVyYXRvciBibG9rw7N3IHR5bGtvIGRvIG9kY3p5dHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDQgZXh0ZW50IHNhdmVkIHBhdGgiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSDFm2NpZcW8a2kgemFjaG93YW55Y2ggZWtzdGVudMOzdyBleHQ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgZ2VuZXJpYyBiaXRtYXAiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgb2fDs2xuZWogYml0bWFweSA2NC1iaXRvd2VqIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIDY0LWJpdG93ZWogYml0bWFweSBibG9rw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgZGxhIDY0LWJpdG93ZWogYml0bWFweSBpLXfEmXrFgsOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSAtLS0gUkVTRVJWRURfMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgLS0tIFJFU0VSVkVEXzE0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIC0tLSBSRVNFUlZFRF8xNSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSAtLS0gUkVTRVJWRURfMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJCxYLEmWRuYSBsaWN6YmEgbWFnaWN6bmEgLS0tIFJFU0VSVkVEXzE3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiQsWCxJlkbmEgbGljemJhIG1hZ2ljem5hIC0tLSBSRVNFUlZFRF8xOCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSAtLS0gUkVTRVJWRURfMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIlVzemtvZHpvbnkgbmFnxYLDs3dlayBla3N0ZW50dSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJVc3prb2R6b255IGluZGVrcyBla3N0ZW50dSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMgorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IgorbXNnc3RyICJVc3prb2R6b255IGVrc3RlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIkJyYWsgd29sbmVnbyBtaWVqc2NhIHcgbWFwaWUgZWtzdGVudMOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICJJLXfEmXplxYIgbmllIHd5a29yenlzdHVqZSBla3N0ZW50w7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiQnJhayBla3N0ZW50dSBuYXN0xJlwbmVnbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICJCcmFrIGVrc3RlbnR1IHBvcHJ6ZWRuaWVnbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICJCcmFrIGVrc3RlbnR1ICd3IGfDs3LEmSciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICJCcmFrIGVrc3RlbnR1ICd3IGTDs8WCJyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiQnJhayBiaWXFvMSFY2VnbyB3xJl6xYJhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQwCittc2dpZCAiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJPcGVyYWNqYSBleHQyZnMgbmllIG9ic8WCdWdpd2FuYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJCcmFrIG1pZWpzY2EgbmEgd3N0YXdpZW5pZSBla3N0ZW50dSB3IHfEmcW6bGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIlBvZHppZWxlbmllIHV0d29yennFgm9ieSBwdXN0eSB3xJl6ZcWCIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8gZWtzdGVudHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiT3BlcmFjamEgbmllIG9ic8WCdWdpd2FuYSBkbGEgaS13xJl6xYLDs3cgemF3aWVyYWrEhWN5Y2ggZWtzdGVudHkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDUKK21zZ2lkICJFeHRlbnQgbGVuZ3RoIGlzIGludmFsaWQiCittc2dzdHIgIkLFgsSZZG5hIGTFgnVnb8WbxIcgZWtzdGVudHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICJLYW5hxYIgd2Uvd3kgbmllIG9ic8WCdWd1amUgNjQtYml0b3d5Y2ggbnVtZXLDs3cgYmxva8OzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIHNwcmF3ZHppxIcsIGN6eSBzeXN0ZW0gcGxpa8OzdyBqZXN0IHphbW9udG93YW55IHogcG93b2R1IGJyYWt1IHBsaWt1ICIKKyJtdGFiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICJTeXN0ZW0gcGxpa8OzdyB6Ynl0IGR1xbx5LCBhYnkgdcW8ecSHIGJpdG1hcCBzdGFyZWdvIHR5cHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDkKK21zZ2lkICJNTVA6IGludmFsaWQgbWFnaWMgbnVtYmVyIgorbXNnc3RyICJNTVA6IGLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIk1NUDogdXJ6xIVkemVuaWUgb2JlY25pZSBha3R5d25lIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBmc2NrIGplc3QgdXJ1Y2hvbWlvbnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTIKK21zZ2lkICJNTVA6IGJsb2NrIG51bWJlciBiZXlvbmQgZmlsZXN5c3RlbSByYW5nZSIKK21zZ3N0ciAiTU1QOiBudW1lciBibG9rdSBwb3phIHpha3Jlc2VtIHN5c3RlbXUgcGxpa8OzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MworbXNnaWQgIk1NUDogdW5kZXJnb2luZyBhbiB1bmtub3duIG9wZXJhdGlvbiIKK21zZ3N0ciAiTU1QOiB3eWtvbnl3YW5hIGplc3Qgbmllem5hbmEgb3BlcmFjamEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVA6IHN5c3RlbSBwbGlrw7N3IG5hZGFsIHcgdcW8eWNpdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiTU1QOiBvdHdhcmNpZSB6IGZsYWfEhSBPX0RJUkVDVCBuaWUgcG93aW9kxYJvIHNpxJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJOaWVwb3ByYXdueSByb3ptaWFyIGRlc2tyeXB0b3JhIGdydXB5IGJsb2vDs3ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTcKK21zZ2lkICJJbm9kZSBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZSIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgaS13xJl6xYJhIG5pZSB6Z2FkemEgc2nEmSB6IGktd8SZesWCZW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJTdW1hIGtvbnRyb2xuYSBiaXRtYXB5IGktd8SZesWCw7N3IG5pZSB6Z2FkemEgc2nEmSB6IGJpdG1hcMSFIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU5Cittc2dpZCAiRXh0ZW50IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgYmxva3UgZWtzdGVudMOzdyBuaWUgemdhZHphIHNpxJkgeiBibG9raWVtIGVrc3RlbnTDs3ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkJsb2sga2F0YWxvZ3UgbmllIG1hIG1pZWpzY2EgbmEgc3VtxJkga29udHJvbG7EhSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MQorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIlN1bWEga29udHJvbG5hIGJsb2t1IGthdGFsb2d1IG5pZSB6Z2FkemEgc2nEmSB6IGJsb2tpZW0ga2F0YWxvZ3UiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2siCittc2dzdHIgIlN1bWFyIGtvbnRyb2xuYSBibG9rdSByb3pzemVyem9ueWNoIGF0cnlidXTDs3cgbmllIHpnYWR6YSBzacSZIHogYmxva2llbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MworbXNnaWQgIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgc3VwZXJibG9rdSBuaWUgemdhZHphIHNpxJkgeiBzdXBlcmJsb2tpZW0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiTmllem5hbnkgYWxnb3J5dG0gc3VteSBrb250cm9sbmVqIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiU3VtYSBrb250cm9sbmEgYmxva3UgTU1QIG5pZSB6Z2FkemEgc2nEmSB6IGJsb2tpZW0gTU1QIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJQbGlrIGV4dDIganXFvCBpc3RuaWVqZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIlN1bWEga29udHJvbG5hIGJpdG1hcHkgYmxva8OzdyBuaWUgemdhZHphIHNpxJkgeiBiaXRtYXDEhSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKyJOaWUgbW/FvG5hIGl0ZXJvd2HEhyBwbyBibG9rYWNoIGRhbnljaCBpLXfEmXrFgmEgemF3aWVyYWrEhWNlZ28gZGFuZSB3ZXduxJl0cnpuZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiUm96c3plcnpvbnkgYXRyeWJ1dCBtYSBixYLEmWRuxIUgZMWCdWdvxZvEhyBuYXp3eSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIlJvenN6ZXJ6b255IGF0cnlidXQgbWEgYsWCxJlkbsSFIGTFgnVnb8WbxIcgd2FydG/Fm2NpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiUm96c3plcnpvbnkgYXRyeWJ1dCBtYSBuaWVwcmF3aWTFgm93eSBza3LDs3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaGFzIGEgYmFkIGhlYWRlciIKK21zZ3N0ciAiQmxvayByb3pzemVyem9uZWdvIGF0cnlidXR1IG1hIGLFgsSZZG55IG5hZ8WCw7N3ZWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiTmllIHpuYWxlemlvbm8ga2x1Y3phIHJvenN6ZXJ6b25lZ28gYXRyeWJ1dHUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIlphIG1hxYJvIG1pZWpzY2EgbmEgemFwaXNhbmllIGRhbnljaCByb3pzemVyem9uZWdvIGF0cnlidXR1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIlN5c3RlbSBwbGlrw7N3IG5pZSBtYSBjZWNoeSBleHRfYXR0ciBsdWIgaW5saW5lX2RhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKK21zZ2lkICJJbm9kZSBkb2Vzbid0IGhhdmUgaW5saW5lIGRhdGEiCittc2dzdHIgIkktd8SZemXFgiBuaWUgemF3aWVyYSBkYW55Y2ggd2V3bsSZdHJ6bnljaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICJCcmFrIGJsb2t1IGRsYSBpLXfEmXrFgmEgeiBkYW55bWkgd2V3bsSZdHJ6bnltaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCittc2dzdHIgIkJyYWsgd29sbmVnbyBtaWVqc2NhIHcgZGFueWNoIHdld27EmXRyem55Y2giCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkLFgsSZZG5hIGxpY3piYSBtYWdpY3puYSBkbGEgc3RydWt0dXJ5IHJvenN6ZXJ6b255Y2ggYXRyeWJ1dMOzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MAorbXNnaWQgIklub2RlIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZSIKK21zZ3N0ciAiSS13xJl6ZcWCIHpkYWplIHNpxJkgemF3aWVyYcSHIMWbbWllY2kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICJSb3pzemVyem9ueSBhdHJ5YnV0IG1hIGLFgsSZZG55IG9mZnNldCB3YXJ0b8WbY2kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiTmllc3DDs2puZSBmbGFnaSBrcm9uaWtpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIlVzemtvZHpvbnkgcGxpayB1bmRvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIk5pZXfFgmHFm2Npd3kgcGxpayB1bmRvIGRsYSB0ZWdvIHN5c3RlbXUgcGxpa8OzdyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAiU3lzdGVtIHBsaWvDs3cgamVzdCB1c3prb2R6b255IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg2Cittc2dpZCAiQmFkIENSQyBkZXRlY3RlZCBpbiBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiV3lrcnl0byBixYLEmWRuZSBDUkMgdyBzeXN0ZW1pZSBwbGlrw7N3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg3Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJTdXBlcmJsb2sga3JvbmlraSBqZXN0IHVzemtvZHpvbnkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgaXMgY29ycnVwdGVkIgorbXNnc3RyICJJLXfEmXplxYIgem1pYW55IHJvem1pYXJ1IGplc3QgdXN6a29kem9ueSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIlByb2ZpbCB3IHdlcnNqaSAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJCxYLEmWRuYSB3YXJ0b8WbxIcgbWFnaWN6bmEgdyBwcm9maWxlX25vZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICJOaWUgem5hbGV6aW9ubyBzZWtjamkgcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNAorbXNnaWQgIlByb2ZpbGUgcmVsYXRpb24gbm90IGZvdW5kIgorbXNnc3RyICJOaWUgem5hbGV6aW9ubyByZWxhY2ppIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAiUHLDs2JhIGRvZGFuaWEgcmVsYWNqaSBkbyB3xJl6xYJhLCBrdMOzcnkgbmllIGplc3Qgc2VrY2rEhSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiTmFnxYLDs3dlayBzZWtjamkgcHJvZmlsdSBtYSBuaWV6ZXJvd8SFIHdhcnRvxZvEhyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkLFgsSZZG5hIGxpc3RhIHcgc3RydWt0dXJhY2ggcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkLFgsSZZG55IHBvemlvbSBncnVweSB3IHN0cnVrdHVyYWNoIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJCxYLEmWRueSB3c2thxbpuaWsgcm9kemljYSB3IHN0cnVrdHVyYWNoIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAiQsWCxJlkbmEgd2FydG/Fm8SHIG1hZ2ljem5hIHcgaXRlcmF0b3J6ZSBwcm9maWx1IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAiTmllIG1vxbxuYSB1c3Rhd2nEhyB3YXJ0b8WbY2kgdyB3xJnFumxlIHNla2NqaSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIHByb2ZpbGUgbGlicmFyeSIKK21zZ3N0ciAiQsWCxJlkbnkgYXJndW1lbnQgcHJ6ZWthemFueSBkbyBiaWJsaW90ZWtpIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiUHLDs2JhIHptb2R5Zmlrb3dhbmlhIHByb2ZpbHUgdHlsa28gZG8gb2Rjenl0dSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiTmFnxYLDs3dlayBzZWtjamkgcHJvZmlsdSBuaWUgbmEgbmFqd3nFvHN6eW0gcG96aW9taWUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjUKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSBzZWN0aW9uIGhlYWRlciIKK21zZ3N0ciAiQsWCxIVkIHNrxYJhZG5pIHcgbmFnxYLDs3drdSBzZWtjamkgcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICJCxYLEhWQgc2vFgmFkbmkgdyByZWxhY2ppIHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjcKK21zZ2lkICJFeHRyYSBjbG9zaW5nIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgIk5hZG1pYXJvd3kgbmF3aWFzIHphbXlrYWrEhWN5IHcgcHJvZmlsdSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyOAorbXNnaWQgIk1pc3Npbmcgb3BlbiBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJCcmFrdWrEhWN5IG5hd2lhcyBvdHdpZXJhasSFY3kgdyBwcm9maWx1IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiQsWCxJlkbmEgd2FydG/Fm8SHIG1hZ2ljem5hIHcgcHJvZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJCxYLEmWRuYSB3YXJ0b8WbxIcgbWFnaWN6bmEgdyBwcm9maWxlX3NlY3Rpb25fdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMQorbXNnaWQgIkl0ZXJhdGlvbiB0aHJvdWdoIGFsbCB0b3AgbGV2ZWwgc2VjdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICIiCisiSXRlcm93YW5pZSBwb3ByemV6IHdzenlzdGtpZSBzZWtjamUgbmFqd3nFvHN6ZWdvIHBvemlvbXUgbmllIGplc3Qgb2JzxYJ1Z2l3YW5lIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICJCxYLEmWRueSBvYmlla3QgcHJvZmlsZV9zZWN0aW9uIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiTmllIG1hIHdpxJljZWogc2VrY2ppIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIkLFgsSZZG55IG5hbWVzZXQgcHJ6ZWthemFueSBkbyBmdW5rY2ppIG9kcHl0dWrEhWNlaiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICJCcmFrIG90d2FydGVnbyBwbGlrdSBwcm9maWx1IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICJCxYLEmWRuYSB3YXJ0b8WbxIcgbWFnaWN6bmEgdyBwcm9maWxlX2ZpbGVfdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgb3R3b3J6ecSHIHBsaWt1IHByb2ZpbHUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJTZWtjamEganXFvCBpc3RuaWVqZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAiQsWCxJlkbmEgd2FydG/Fm8SHIGxvZ2ljem5hIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICJCxYLEmWRuYSB3YXJ0b8WbxIcgY2HFgmtvd2l0YSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICJCxYLEmWRuYSB3YXJ0b8WbxIcgbWFnaWN6bmEgdyBwcm9maWxlX2ZpbGVfZGF0YV90IgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgIlx0b3N0YXRuaW8gbW9udG93YW5vICVzIHBvZCAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb3VudGVkIG9uICVzIgorbXNnc3RyICJcdG9zdGF0bmlvIG1vbnRvd2FubyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0Y3JlYXRlZCBvbiAlcyIKK21zZ3N0ciAiXHR1dHdvcnpvbm8gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx0b3N0YXRuaW8gem1vZHlmaWtvd2FubyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIlpuYWxlemlvbm8gdGFibGljxJkgcGFydHljamkgJXMgdyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiUGxpayAlcyBuaWUgaXN0bmllamUgaSBuaWUgcG9kYW5vIHJvem1pYXJ1LlxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgcmVndWxhciBmaWxlICVzXG4iCittc2dzdHIgIlR3b3J6ZW5pZSB6d3lrxYJlZ28gcGxpa3UgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJOaWUgdWRhxYJvIHNpxJkgb3R3b3J6ecSHICVzOiAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiVXJ6xIVkemVuaWUgbmFqd3lyYcW6bmllaiBuaWUgaXN0bmllamU7IGN6eSB6b3N0YcWCbyBwb2RhbmUgcG9wcmF3bmllP1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIG5pZSBqZXN0IHNwZWNqYWxueW0gdXJ6xIVkemVuaWVtIGJsb2tvd3ltLlxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAnJXMnXG4iCittc2dzdHIgIiVzIHphd2llcmEgc3lzdGVtIHBsaWvDs3cgJXMgeiBldHlraWV0xIUgJyVzJ1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIlcyB6YXdpZXJhIHN5c3RlbSBwbGlrw7N3ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgemF3aWVyYSBkYW5lIGAlcydcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICJQcm9zesSZIHVydWNob21pxIcgZTJmc2NrIG5hIHN5c3RlbWllIHBsaWvDs3cuXG4iCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vcXVvdC5zZWQgYi9lMmZzcHJvZ3MvcG8vcXVvdC5zZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyMmM0NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9xdW90LnNlZApAQCAtMCwwICsxLDYgQEAKK3MvIlwoW14iXSpcKSIv4oCcXDHigJ0vZworcy9gXChbXmAnXSpcKScv4oCYXDHigJkvZworcy8gJ1woW15gJ10qXCknIC8g4oCYXDHigJkgL2cKK3MvICdcKFteYCddKlwpJyQvIOKAmFwx4oCZL2cKK3MvXidcKFteYCddKlwpJyAv4oCYXDHigJkgL2cKK3Mv4oCc4oCdLyIiL2cKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9wby9yZW1vdmUtcG90Y2RhdGUuc2luIGIvZTJmc3Byb2dzL3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQzNmM0OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9yZW1vdmUtcG90Y2RhdGUuc2luCkBAIC0wLDAgKzEsMTkgQEAKKyMgU2VkIHNjcmlwdCB0aGF0IHJlbW92ZSB0aGUgUE9ULUNyZWF0aW9uLURhdGUgbGluZSBpbiB0aGUgaGVhZGVyIGVudHJ5CisjIGZyb20gYSBQT1QgZmlsZS4KKyMKKyMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUgZm9sbG93aW5nIG9jY3VycmVuY2VzIG9mIHRoZQorIyBwYXR0ZXJuIGlzIGFjaGlldmVkIGJ5IGxvb2tpbmcgYXQgdGhlIGhvbGQgc3BhY2UuCisvXiJQT1QtQ3JlYXRpb24tRGF0ZTogLioiJC97Cit4CisjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCitzL1AvUC8KK3RhCisjIFllcyBpdCB3YXMgZW1wdHkuIEZpcnN0IG9jY3VycmVuY2UuIFJlbW92ZSB0aGUgbGluZS4KK2cKK2QKK2JiCis6YQorIyBUaGUgaG9sZCBzcGFjZSB3YXMgbm9uZW1wdHkuIEZvbGxvd2luZyBvY2N1cnJlbmNlcy4gRG8gbm90aGluZy4KK3gKKzpiCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vc3IuZ21vIGIvZTJmc3Byb2dzL3BvL3NyLmdtbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTc3Yzg1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL3NyLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vc3IucG8gYi9lMmZzcHJvZ3MvcG8vc3IucG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjEyNjEzMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9zci5wbwpAQCAtMCwwICsxLDg1NTAgQEAKKyMgU2VyYmlhbiB0cmFuc2xhdGlvbiBvZiBlMmZzcHJvZ3MuCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMKKyMgVHJhbnNsYXRvcnM6CisjIE1hcmtvIFVza29rb3ZpYyA8dXNrb2tvdmljQGV0Zi5iZy5hYy55dT4sIDIwMDcsIDIwMDguCisjINCQ0LvQvtGY0Lcg0IjQsNC60L7QsSA8amFrb2J5dUB5YWhvby5jb20+LCAyMDA4LgorIyDQnNC40YDQvtGB0LvQsNCyINCd0LjQutC+0LvQuNGbIDxtaXJvc2xhdm5pa29saWNAcm9ja2V0bWFpbC5jb20+LCAyMDE2LgorIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4gCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyCisjLiAJJUIJImluZGlyZWN0IGJsb2NrIiB8ICJibG9jayAjIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXIKKyMuIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuIAklRGkJPGRpcmVudD4gLT4gaW5vCQlpbm9kZSBudW1iZXIKKyMuIAklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmcKKyMuIAklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4gCSVEbAk8ZGlyZW50PiAtPiBuYW1lX2xlbgorIy4gCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZQorIy4gCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4gCSVnCTxncm91cD4JCQlpbnRlZ2VyCisjLiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyMuIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisjLiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyMuIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisjLiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorIy4gCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisjLiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisjLiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuIAklSWcJPGlub2RlPiAtPiBpX2dpZAorIy4gCSVJdAk8c3RyPgkJCWZpbGUgdHlwZQorIy4gCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4gCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisjLiAJJU4JPG51bT4KKyMuIAklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuIAklUAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMCisjLiAJCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLiAJJXEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisjLiAJJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLiAJJXMJPHN0cj4JCQltaXNjZWxsYW5lb3VzIHN0cmluZworIy4gCSVTCQliYWNrdXAgc3VwZXJibG9jaworIy4gCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IEdOVSBlMmZzcHJvZ3MgMS40Mi4xMi1wcmUyXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA2LTA5IDE0OjI3KzAyMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6INCc0LjRgNC+0YHQu9Cw0LIg0J3QuNC60L7Qu9C40ZsgPG1pcm9zbGF2bmlrb2xpY0Byb2NrZXRtYWlsLmNvbT5cbiIKKyJMYW5ndWFnZS1UZWFtOiBTZXJiaWFuIDwobm90aGluZyk+XG4iCisiTGFuZ3VhZ2U6IHNyXG4iCisiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0zOyBwbHVyYWw9KG4lMTA9PTEgJiYgbiUxMDAhPTExID8gMCA6IG4lMTA+PTIgJiYgbiIKKyIlMTA8PTQgJiYgKG4lMTAwPDEwIHx8IG4lMTAwPj0yMCkgPyAxIDogMik7XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICLQm9C+0Ygg0LHQu9C+0Log4oCeJXXigJwg0ZjQtSDQstCw0L0g0L7Qv9GB0LXQs9CwOyDQt9Cw0L3QtdC80LDRgNGD0ZjQtdC8LlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9GA0L7QstC10YDQtSDQuNGB0L/RgNCw0LLQvdC+0YHRgtC4INC4LdGH0LLQvtGA0LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuC3Rh9Cy0L7RgNCwINC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICLQtNC+0Log0YHQsNC8INC/0L7QutGD0YjQsNCy0LDQviDQtNCwINC+0YLQstC+0YDQuNC8IOKAniVz4oCcIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgItC00L7QuiDRgdCw0Lwg0L/QvtC60YPRiNCw0LLQsNC+INC00LAg0L8t0L7RgtCy0L7RgNC40Lwg4oCeJXPigJwiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDRgdC/0LjRgdC60LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCDQuNC3INC00LDRgtC+0YLQtdC60LUiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtGB0LLQtdC20LDQstCw0ZrQsCDQuC3Rh9Cy0L7RgNCwINC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisi0KPQv9C+0LfQvtGA0LXRmtC1OiDQvdCw0ZLQvtGFINC90LXQtNC+0LfQstC+0ZnQtdC90Lgg0LHQu9C+0Log4oCeJXXigJwg0YMg0Lgt0YfQstC+0YDRgyDQu9C+0YjQtdCzINCx0LvQvtC60LAuICDQntGH0LjRgdGC0LjRhSDQs9CwLlxuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINCx0LvQvtC60LAg4oCeJWx14oCcICglcykg0LfQsCDQstGA0LXQvNC1ICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINCx0LvQvtC60LAg4oCeJWx14oCcICglcykuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAi0JfQsNC90LXQvNCw0YDQuCDQs9GA0LXRiNC60YMiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAi0J/RgNC40YHQuNC70Lgg0L/RgNC10L/QuNGB0LjQstCw0ZrQtSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9C40YHQsNGa0LAg0LHQu9C+0LrQsCDigJ4lbHXigJwgKCVzKSDQt9CwINCy0YDQtdC80LUgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QuNGB0LDRmtCwINCx0LvQvtC60LAg4oCeJWx14oCcICglcykuICAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICLQv9GA0LDQt9C90Lgg0LHQu9C+0LrQvtCy0Lgg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAi0L/RgNCw0LfQvdCwINC80LDQv9CwINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAi0J/RgNCw0LfQsNC9INCx0LvQvtC6INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwICV1ICglZC4pINGDINC4LdGH0LLQvtGA0YMg4oCeJXXigJxcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyBmaWxlbmFtZSBuYmxvY2tzIGJsb2Nrc2l6ZVxuIgorbXNnc3RyICIlczog0LLQtdC70LjRh9C40L3QsCDQsdC70L7QutCwINC9LdCx0LvQvtC60L7QstCwIOKAniVz4oCcINC90LDQt9C40LLQsCDQtNCw0YLQvtGC0LXQutC1XG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgItCd0LXQtNC+0LfQstC+0ZnQtdC90Lgg0LHRgNC+0Zgg0LHQu9C+0LrQvtCy0LAhXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LTQtdC70LjQvCDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0YMg0LHQu9C+0LrQsCAo0LLQtdC70LjRh9C40L3QsD0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorIywgZnV6enkKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgItC80LDQv9CwINC4LdGH0LLQvtGA0LAg0L7QsdC40YfQvdC1INC00LDRgtC+0YLQtdC60LUiCisKKyM6IGUyZnNjay9mbHVzaGIuYzozNQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgZGlza1xuIgorbXNnc3RyICLQo9C/0L7RgtGA0LXQsdCwOiAlcyDQtNC40YHQulxuIgorCisjOiBlMmZzY2svZmx1c2hiLmM6NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQkxLRkxTQlVGIGlvY3RsIG5vdCBzdXBwb3J0ZWQhICBDYW4ndCBmbHVzaCBidWZmZXJzLlxuIgorbXNnc3RyICLigJ5CTEtGTFNCVUYgaW9jdGzigJwg0L3QuNGY0LUg0L/QvtC00YDQttCw0L3QviEgINCd0LUg0LzQvtCz0YMg0LTQsCDQv9GA0LXRgdGD0L3QtdC8INC80LXRktGD0LzQtdC80L7RgNC40ZjQtS5cbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICLQo9C/0L7RgtGA0LXQsdCwOiAlcyBbLUZdIFstSSDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0LBf0LHQu9C+0LrQvtCy0LBf0Lgt0YfQstC+0YDQsF0g0YPRgNC10ZLQsNGYXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQvtGC0LLQsNGA0LDRmtCwIOKAniVz4oCcINC30LAg0L/RgNC10YHQuNC/0LDRmtC1IgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICLQtNC+0Log0YHQsNC8INC/0L7QutGD0YjQsNCy0LDQviDQtNCwINC/0YDQtdGB0YPQvdC10Lwg4oCeJXPigJwiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICLQtNC+0Log0YHQsNC8INC/0L7QutGD0YjQsNCy0LDQviDQtNCwINC+0YLQstC+0YDQuNC8IOKAniVz4oCcIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtGC0LLQsNGA0LDRmtCwINGB0LrQtdC90LjRgNCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC00L7QsdCw0LLRmdCw0ZrQsCDRgdC70LXQtNC10ZvQtdCzINC4LdGH0LLQvtGA0LAiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAi0YHQutC10L3QuNGA0LDQvdC40YUg0Lgt0YfQstC+0YDQvtCy0LA6ICV1LlxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjU5MworbXNnaWQgInJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgItGH0LjRgtCw0Lwg0YHRg9C/0LXRgCDQsdC70L7QuiDQtNC90LXQstC90LjQutCwXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6INC90LjRgdCw0Lwg0L3QsNGI0LDQviDQuNGB0L/RgNCw0LLQsNC9INGB0YPQv9C10YDQsdC70L7QuiDQtNC90LXQstC90LjQutCwXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczog0LTQvdC10LLQvdC40Log0ZjQtSDQv9GA0LXQutGA0LDRgtCw0LpcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiDQvtC/0L7RgNCw0LLRmdCw0Lwg0LTQvdC10LLQvdC40LpcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiVzOiDQvdC10ZvRgyDQvtC/0L7RgNCw0LLQuNGC0Lgg0LTQvdC10LLQvdC40Log0LTQvtC6INGY0LUg0YHQsNC80L4g0LfQsCDRh9C40YLQsNGa0LVcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiCittc2dzdHIgItC00L7QuiDRgdCw0Lwg0L/QvtC60YPRiNCw0LLQsNC+INC/0L7QvdC+0LLQviDQtNCwINC+0YLQstC+0YDQuNC8IOKAniVz4oCcIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgItC/0YDQvtGI0LjRgNC10L3QuCDQsNGC0YDQuNCx0YPRgiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAi0LPRgNC10YjQutCwINC00L7QtNC10LvQtSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTUKK21zZ2lkICJiYmxvY2siCittc2dzdHIgItCx0LvQvtC6IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgItCx0LjRgtC80LDQv9CwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAi0YHQsNC20LzQuCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAi0YHQtSDRgdGD0LrQvtCx0ZnQsNCy0LAg0YHQsCDQvdC10LrQuNC8INC00YDRg9Cz0LjQvCDQsdC70L7QutC+0Lwg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICLQtNC40YDQtdC60YLQvtGA0LjRmNGD0LwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgItC+0LHRgNC40YHQsNC90L4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIxCittc2dpZCAiZWVudHJ5IgorbXNnc3RyICLRg9C90L7RgSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjIKK21zZ2lkICJFQGUgJyVEbicgaW4gJXAgKCVpKSIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIzCittc2dpZCAiZmZpbGVzeXN0ZW0iCittc2dzdHIgItGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAi0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI1Cittc2dpZCAiZ2dyb3VwIgorbXNnc3RyICLQs9GA0YPQv9CwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAi0KUt0KHQotCQ0JHQm9CeINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINC4LdGH0LLQvtGA0LAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAi0L3QtdC00L7Qt9Cy0L7RmdC10L3QviIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjkKK21zZ2lkICJqam91cm5hbCIKK21zZ3N0ciAi0LTQvdC10LLQvdC40LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgItC40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAi0ZjQtSDQstC10LfQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAi0LLQuNGI0LUg0L/Rg9GC0LAg0LfQsNGC0YDQsNC20LXQvdC+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICLQvdC10LjRgdC/0YDQsNCy0L3QviIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgItC90LDQv9GD0YjRgtC10L3QviIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAi0L/RgNC+0LHQu9C10Lwg0YMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICLQutCy0L7RgtCwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICLQutC+0YDQtdC90Lgg0Lgt0YfQstC+0YAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM4Cittc2dpZCAic3Nob3VsZCBiZSIKK21zZ3N0ciAi0YLRgNC10LHQsCDQsdC40YLQuCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzkKK21zZ2lkICJTc3VwZXJAYiIKK21zZ3N0ciAi0YHRg9C/0LXRgC3QsdC70L7QuiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAi0L3QuNGY0LUg0LfQsNC60LDRh9C10L0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAi0YPRgNC10ZLQsNGYIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgItGA0LDRgdC/0L7QvSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgItC90YPQu9GC0LAg0LTRg9C20LjQvdCwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjzQndCY0KjQotCQ0JLQkNCdINC4LdGH0LLQvtGAPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI80Lgt0YfQstC+0YAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU3Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPNC4LdGH0LLQvtGAINC60LLQvtGC0LUg0LrQvtGA0LjRgdC90LjQutCwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPNC4LdGH0LLQvtGAINC60LLQvtGC0LUg0LPRgNGD0L/QtT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjzQuC3Rh9Cy0L7RgCDRg9GH0LjRgtCw0LLQsNGH0LAg0YHQuNGB0YLQtdC80LA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPNCd0LXQvtCx0YDQuNGB0LDQvSDQuC3Rh9Cy0L7RgCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPNC4LdGH0LLQvtGAINC+0L/QuNGB0L3QuNC60LAg0LPRgNGD0L/QtT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPNC4LdGH0LLQvtGAINC00L3QtdCy0L3QuNC60LA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPNCg0LXQt9C10YDQstC40YHQsNC90Lgg0Lgt0YfQstC+0YAgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPNCg0LXQt9C10YDQstC40YHQsNC90Lgg0Lgt0YfQstC+0YAgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAi0L7QsdC40YfQvdCwINC00LDRgtC+0YLQtdC60LAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM1Cittc2dpZCAiZGlyZWN0b3J5IgorbXNnc3RyICLQtNC40YDQtdC60YLQvtGA0LjRmNGD0LwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAi0LfQvdCw0LrQvtCy0L3QuCDRg9GA0LXRktCw0ZgiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICLQsdC70L7QuiDRg9GA0LXRktCw0ZgiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQxCittc2dpZCAibmFtZWQgcGlwZSIKK21zZ3N0ciAi0LjQvNC10L3QvtCy0LDQvdCwINGB0L/QvtGY0LrQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICLRgdC40LzQsdC+0LvQuNGH0LrQsCDQstC10LfQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAi0L/RgNC40LrRmdGD0YfQvdC40YbQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAi0L3QtdC/0L7Qt9C90LDRgtCwINCy0YDRgdGC0LAg0LTQsNGC0L7RgtC10LrQtSDRgdCwINGA0LXQttC40LzQvtC8IOKAnjAlb+KAnCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjIKK21zZ2lkICJpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAi0LjQvdC00LjRgNC10LrRgtC90Lgg0LHQu9C+0LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI0Cittc2dpZCAiZG91YmxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICLQtNCy0L7RgdGC0YDRg9C60L4g0LjQvdC00LjRgNC10LrRgtC90Lgg0LHQu9C+0LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI2Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICLRgtGA0L7RgdGC0YDRg9C60L4g0LjQvdC00LjRgNC10LrRgtC90Lgg0LHQu9C+0LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAi0LHQu9C+0Log0L/RgNC10LLQvtC00LjQvtGG0LAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAi0LHRgC4g0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICLQstC40YjQtSDQv9GD0YLQsCDQt9Cw0YLRgNCw0LbQtdC90LAg0LzQsNC/0LAg0Lgt0YfQstC+0YDQvtCy0LAiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo2NDUgZTJmc2NrL3Bhc3MxYi5jOjc5MworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgItGD0L3Rg9GC0YDQsNGI0ZrQsCDQs9GA0LXRiNC60LA6INC90LUg0LzQvtCz0YMg0LTQsCDQvdCw0ZLQtdC8INC00YPQv9C70Lhf0LHQu9C+0Log0LfQsCDigJ4lbGx14oCcXG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgItCy0YDQsNGb0LXQvdC+INC40Lcg0LHQu9C+0LrQsF/QtNCw0YLQvtGC0LXQutC1X9C60LvQvtC90LAiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgItGD0L3Rg9GC0YDQsNGI0ZrQsCDQs9GA0LXRiNC60LA6INC90LUg0LzQvtCz0YMg0LTQsCDQv9GA0LXRgtGA0LDQttC40Lwg0LfQsNC/0LjRgSDQldCQINCx0LvQvtC60LAg0LfQsCDigJ4lbGx14oCcIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAi0YPQvdGD0YLRgNCw0YjRmtCwINCz0YDQtdGI0LrQsDog0L3QtSDQvNC+0LPRgyDQtNCwINC/0YDQtdGC0YDQsNC20LjQvCDQt9Cw0L/QuNGBINCV0JAg0Lgt0YfQstC+0YDQsCDQt9CwIOKAniV14oCcIgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgItGH0LjRgtCw0Lwg0LHQu9C+0Log0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMTEKK21zZ2lkICJpbi11c2UgaW5vZGUgbWFwIgorbXNnc3RyICLQvNCw0L/QsCDQuC3Rh9Cy0L7RgNCwINGDINGD0L/QvtGC0YDQtdCx0LgiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMjIKK21zZ2lkICJkaXJlY3RvcnkgaW5vZGUgbWFwIgorbXNnc3RyICLQvNCw0L/QsCDQuC3Rh9Cy0L7RgNCwINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAi0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCDQvtCx0LjRh9C90LUg0LTQsNGC0L7RgtC10LrQtSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAi0LzQsNC/0LAg0LHQu9C+0LrQsCDRgyDRg9C/0L7RgtGA0LXQsdC4IgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCisjLCBmdXp6eQorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAi0LHQu9C+0LrQvtCy0Lgg0LzQtdGC0LDQv9C+0LTQsNGC0LDQutCwIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICLQvtGC0LLQsNGA0LDQvCDRgdC60LXQvdC40YDQsNGa0LUg0Lgt0YfQstC+0YDQvtCy0LAiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICLQtNC+0LHQsNCy0ZnQsNC8INGB0LvQtdC00LXRm9C4INC4LdGH0LLQvtGAINC40Lcg0YHQutC10L3QuNGA0LDQvdC40YUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIjEuINC/0YDQvtC70LDQtyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAi0YfQuNGC0LDQvCDQuNC90LTQuNGA0LXQutGC0L3QtSDQsdC70L7QutC+0LLQtSDQuC3Rh9Cy0L7RgNCwIOKAniV14oCcIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAi0LvQvtGI0LAg0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgItC4LdGH0LLQvtGAINGDINC80LDQv9C4INC70L7RiNC10LMg0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEwNAorbXNnaWQgImltYWdpYyBpbm9kZSBtYXAiCittc2dzdHIgItGB0LvQuNC60L7QstC90LAg0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICLQstC40YjQtSDQv9GD0YLQsCDQt9Cw0YLRgNCw0LbQtdC90LAg0LzQsNC/0LAg0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAi0LzQsNC/0LAg0LHQu9C+0LrQvtCy0LAg0YHQv9C+0ZnQvdC40YUg0LDRgtGA0LjQsdGD0YLQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiU2bHUoJWMpOiDQvtGH0LXQutC40LLQsNGFIOKAniU2bHXigJwg0LAg0LTQvtCx0LjRhSDRhNC40LfQuNGH0LrQuCDigJ4lNmx14oCcICjQsdGALiDQsdC70L7QutC+0LLQsDogJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0LHQuNGC0LzQsNC/0LAg0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0LHQuNGC0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICLRgtCw0LHQtdC70LAg0Lgt0YfQstC+0YDQsCIKKworIzogZTJmc2NrL3Bhc3MyLmM6Mjg3Cittc2dpZCAiUGFzcyAyIgorbXNnc3RyICIyLiDQv9GA0L7Qu9Cw0LciCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0L3QsNGB0YLQsNCy0LjQvC4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgItCz0L7RgtC+0LLQsCDQsdC40YLQvNCw0L/QsCDQuC3Rh9Cy0L7RgNCwIgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICLQktGA0YXRg9C90LDRhiDQvNC10LzQvtGA0LjRmNC1IgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIjMuINC/0YDQvtC70LDQtyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICLQsdC40YLQvNCw0L/QsCDQvdCw0LvQsNC20LXRmtCwINC/0LXRgtGZ0LUg0Lgt0YfQstC+0YDQsCIKKworIzogZTJmc2NrL3Bhc3M0LmM6MjA3Cittc2dpZCAiUGFzcyA0IgorbXNnc3RyICI0LiDQv9GA0L7Qu9Cw0LciCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICI1LiDQv9GA0L7Qu9Cw0LciCisKKyM6IGUyZnNjay9wYXNzNS5jOjEwNAorbXNnaWQgImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTU4Cittc2dpZCAiY2hlY2tfYmxvY2tfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIijQvdC10LzQsCDRg9C/0LjRgtCwKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAi0JjRgdC/0YDQsNCy0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMKK21zZ2lkICJDbGVhciIKK21zZ3N0ciAi0J7Rh9C40YHRgtC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0Cittc2dpZCAiUmVsb2NhdGUiCittc2dzdHIgItCf0YDQtdC80LXRgdGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAi0JTQvtC00LXQu9C4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2Cittc2dpZCAiRXhwYW5kIgorbXNnc3RyICLQoNCw0YjQuNGA0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICLQn9C+0LLQtdC20Lgg0YHQtSDRgdCwIOKAni/QuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+4oCcIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICLQndCw0L/RgNCw0LLQuCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgItCh0LDRh9GD0LLQsNGYIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgItCh0LrRgNCw0YLQuCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICLQntGH0LjRgdGC0Lgg0Lgt0YfQstC+0YAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAi0J/RgNC10LrQuNC90LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAi0J/QvtC00LXQu9C4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgItCd0LDRgdGC0LDQstC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1Cittc2dpZCAiQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MiCittc2dzdHIgItCa0LvQvtC90LjRgNCw0Zgg0LLQuNGI0LUg0L/Rg9GC0LAg0LfQsNGC0YDQsNC20LXQvdC1INCx0LvQvtC60L7QstC1IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2Cittc2dpZCAiRGVsZXRlIGZpbGUiCittc2dzdHIgItCe0LHRgNC40YjQuCDQtNCw0YLQvtGC0LXQutGDIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgItCf0L7RgtC40YHQvdC4INC/0L7RgNGD0LrQtSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAi0KDQsNC30LLQtdC20LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjkKK21zZ2lkICJDbGVhciBIVHJlZSBpbmRleCIKK21zZ3N0ciAi0J7Rh9C40YHRgtC4INC40L3QtNC10LrRgSDQpS3RgdGC0LDQsdC70LAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAi0J/QvtC90L7QstC+INC90LDQv9GA0LDQstC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIo0J3QmNCo0KLQkCkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAi0JjQodCf0KDQkNCS0InQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICLQntCn0JjQqNCL0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICLQn9Cg0JXQnNCV0KjQotCV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAi0JTQntCU0JXQidCV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICLQoNCQ0KjQmNCg0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgItCf0J7QndCe0JLQnl/Qn9Ce0JLQldCX0JDQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2Cittc2dpZCAiQ1JFQVRFRCIKK21zZ3N0ciAi0J3QkNCf0KDQkNCS0InQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODcKK21zZ2lkICJTQUxWQUdFRCIKK21zZ3N0ciAi0KHQn9CQ0KjQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgItCh0JrQoNCQ0IvQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkKK21zZ2lkICJJTk9ERSBDTEVBUkVEIgorbXNnc3RyICLQntCR0KDQmNCh0JDQnSDQmC3Qp9CS0J7QoCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgItCf0KDQldCa0JjQndCj0KLQniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICLQn9Ce0JTQldCJ0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAi0J3QkNCh0KLQkNCS0InQkNCcIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICLQktCY0KjQlSDQn9Cj0KLQkCDQl9CQ0KLQoNCQ0JbQldCd0Jgg0JHQm9Ce0JrQntCS0Jgg0KHQoyDQmtCb0J7QndCY0KDQkNCd0JgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgItCe0JHQoNCY0KHQkNCd0JAg0JTQkNCi0J7QotCV0JrQkCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgItCf0J7QotCY0KHQndCj0KLQniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICLQoNCQ0JfQktCV0JfQkNCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICLQmNCd0JTQldCa0KEg0KUt0KHQotCQ0JHQm9CQINCI0JUg0J7Qp9CY0KjQi9CV0J0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICLQndCQ0J/QoNCQ0JLQmNCL0KMg0J/QntCd0J7QktCeIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICLQkdC40YLQvNCw0L/QsCDQsdC70L7QutCwINC30LAg0LPRgNGD0L/RgyDigJ4lZ+KAnCDQvdC40ZjQtSDRgyDQs9GA0YPQv9C4LiAgKCViLiDQsdC70L7QuilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0Cittc2dpZCAiQGkgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAi0JHQuNGC0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCDQt9CwINCz0YDRg9C/0YMg4oCeJWfigJwg0L3QuNGY0LUg0YMg0LPRgNGD0L/QuC4gICglYi4g0LHQu9C+0LopXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorItCi0LDQsdC10LvQsCDQuC3Rh9Cy0L7RgNCwINC30LAg0LPRgNGD0L/RgyDigJ4lZ+KAnCDQvdC40ZjQtSDRgyDQs9GA0YPQv9C4LiAgKCViLiDQsdC70L7QuilcbiIKKyLQo9Cf0J7Ql9Ce0KDQldCK0JU6INCc0J7Qk9Cj0Isg0IjQlSDQl9Cd0JDQp9CQ0IjQndCY0IjQmCDQk9Cj0JHQmNCi0JDQmiDQn9Ce0JTQkNCi0JDQmtCQLlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBzdXBlcmJsb2NrXG4KKyMuIEAtZXhwYW5kZWQ6IGlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6XG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiAgb3JcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjUKK21zZ2lkICIiCisiXG4iCisiVGhlIEBTIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbiIKKyJAZi4gIElmIHRoZSBAdiBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0XG4iCisiQGYgKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBAU1xuIgorImlzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIEBTOlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA8QHY+XG4iCisiIG9yXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQndC1INC80L7Qs9GDINC00LAg0L/RgNC+0YfQuNGC0LDQvCDRgdGD0L/QtdGALdCx0LvQvtC6INC40LvQuCDQvdC1INC+0L/QuNGB0YPRmNC1INC40YHQv9GA0LDQstCw0L0g0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAgIgorIuKAntC10LrRgdGCMi/QtdC60YHRgjMv0LXQutGB0YI04oCcLlxuIgorItCQ0LrQviDRmNC1INGD0YDQtdGS0LDRmCDQuNGB0L/RgNCw0LLQsNC9INC4INCw0LrQviDRgdGC0LLQsNGA0L3QviDRgdCw0LTRgNC20Lgg4oCe0LXQutGB0YIyL9C10LrRgdGCMy/QtdC60YHRgjTigJxcbiIKKyLRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCAo0LAg0L3QtSDRgNCw0LfQvNC10L3RgdC60YMg0L/QsNGA0YLQuNGG0LjRmNGDINC40LvQuCDRg9GB0LQg0LjQu9C4INC90LXRiNGC0L4g0LTRgNGD0LPQviksINC+0L3QtNCwINGY0LUgIgorItGB0YPQv9C10YAt0LHQu9C+0LpcbiIKKyLQvtGI0YLQtdGb0LXQvSwg0L7QvdC00LAg0LzQvtGA0LDRgtC1INC/0L7QutGA0LXQvdGD0YLQuCDigJ5lMmZzY2vigJwg0YHQsCDQvdC10LrQuNC8INC00YDRg9Cz0LjQvCDRgdGD0L/QtdGALdCx0LvQvtC60L7QvDpcbiIKKyIgICAg4oCeZTJmc2Nr4oCcIC1iIDgxOTMgPNGD0YDQtdGS0LDRmD5cbiIKKyIg0LjQu9C4XG4iCisiICAgIOKAnmUyZnNja+KAnCAtYiAzMjc2OCA80YPRgNC10ZLQsNGYPlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyLQktC10LvQuNGH0LjQvdCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAgKNGDINGB0LrQu9Cw0LTRgyDRgdCwINGB0YPQv9C10YAt0LHQu9C+0LrQvtC8KSDRmNC1ICViINCx0LvQvtC60LBcbiIKKyLQpNC40LfQuNGH0LrQsCDQstC10LvQuNGH0LjQvdCwINGD0YDQtdGS0LDRmNCwINGY0LUgJWMg0LHQu9C+0LrQsFxuIgorItCd0LDRmNCy0LXRgNC+0LLQsNGC0L3QuNGY0LUg0LTQsCDRmNC1INC+0YjRgtC10ZvQtdC9INGB0YPQv9C10YAt0LHQu9C+0Log0LjQu9C4INC/0LDRgNGC0LjRhtC40L7QvdCwINGC0LDQsdC10LvQsCFcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisi0JLQtdC70LjRh9C40L3QsF/QsdC70L7QutCwINGB0YPQv9C10YDQsdC70L7QutCwID0gJWIsINCy0LXQu9C40YfQuNC90LBf0L7QtNC70L7QvNC60LAgPSAlYy5cbiIKKyLQntCy0L4g0LjQt9C00LDRmtC1IOKAnmUyZnNja+KAnC3QsCDQvdC1INC/0L7QtNGA0LbQsNCy0LAg0LLQtdC70LjRh9C40L3QtSDQvtC00LvQvtC80LDQutCwINGA0LDQt9C70LjRh9C40YLQtVxuIgorItC+0LQg0LLQtdC70LjRh9C40L3QtSDQsdC70L7QutCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICLQkdC70L7QutC+0LLQsF/Qv9C+X9Cz0YDRg9C/0Lgg0YHRg9C/0LXRgNCx0LvQvtC60LAgPSAlYiwg0YLRgNC10LHQsCDQtNCwINCx0YPQtNC1ICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgItCf0YDQstC4X9Cx0LvQvtC6X9C/0L7QtNCw0YLQsNC60LAg0YHRg9C/0LXRgNCx0LvQvtC60LAgPSAlYiwg0YLRgNC10LHQsCDQtNCwINCx0YPQtNC1ICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MAorbXNnaWQgIiIKKyJAZiBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC90LXQvNCwINCj0KPQmNCUOyDRgdGC0LLQsNGA0LDQvCDQs9CwLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCd0LDQv9C+0LzQtdC90LA6INCw0LrQviDQvdC10LrQvtC70LjQutC+INCx0LvQvtC60L7QstCwINC4LdGH0LLQvtGA0L7QstCwINC40LvQuCDQsdC40YLQvNCw0L/QtSDQsdC70L7QutC+0LLQsCDQuNC70Lgg0LTQtdC+XG4iCisi0YLQsNCx0LXQu9C1INC4LdGH0LLQvtGA0L7QstCwINC30LDRhdGC0LXQstCw0ZjRgyDQv9GA0LXQvNC10YjRgtCw0ZrQtSwg0LzQvtC20LXRgtC1INC/0L7QutGD0YjQsNGC0LhcbiIKKyLQv9GA0LLQviDQtNCwINC/0L7QutGA0LXQvdC10YLQtSDigJ5lMmZzY2vigJwg0YHQsCDQvtC/0YbQuNGY0L7QvCDigJ4tYiAlU+KAnC4gINCf0YDQvtCx0LvQtdC8XG4iCisi0LzQvtC20LUg0LHQuNGC0Lgg0YHQsNC80L4g0YHQsCDQvtC/0LjRgdC90LjRhtC40LzQsCDQs9C70LDQstC90LUg0LPRgNGD0L/QtSDQsdC70L7QutC+0LLQsCwg0LBcbiIKKyLQvtC/0LjRgdC90LjRhtC4INGA0LXQt9C10YDQstC90LUg0LrQvtC/0LjRmNC1INC40YHRgtC40YUg0LzQvtCz0YMg0LHQuNGC0Lgg0YMg0YDQtdC00YMuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICLQndCw0ZLQvtGFINC+0YjRgtC10ZvQtdGa0LUg0YMg0YHRg9C/0LXRgC3QsdC70L7QutGDLiAgKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L7QtNGA0LXRktC40LLQsNGa0LAg0LLQtdC70LjRh9C40L3QtSDRhNC40LfQuNGH0LrQvtCzINGD0YDQtdGS0LDRmNCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICLQkdGA0L7RmCDQuC3Rh9Cy0L7RgNC+0LLQsCDRgyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDRmNC1ICVpLCDRgtGA0LXQsdCwINCx0LjRgtC4ICVqLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OAorbXNnaWQgIlRoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgItCl0YPRgNC0INC90LUg0L/QvtC00YDQttCw0LLQsCDRhNGD0L3QutGG0LjRmNGDINCy0YDRgdGC0LUg0LTQsNGC0L7RgtC10LrQtS5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICLQodGD0L/QtdGA0LHQu9C+0Log0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQsNC9INC00L3QtdCy0L3QuNC6ICglaS4g0Lgt0YfQstC+0YApLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgItCh0L/QvtGZ0L3QuCDQtNC90LXQstC90LjQuiDQuNC80LAg0LLQuNGI0LUg0LrQvtGA0LjRgdC90LjQutCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAgKNC90LjRmNC1INC/0L7QtNGA0LbQsNC90L4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQvdCw0ZLQtdC8INGB0L/QvtGZ0L3QuCDQtNC90LXQstC90LjQulxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAi0KHQv9C+0ZnQvdC4INC00L3QtdCy0L3QuNC6INC40LzQsCDQu9C+0Ygg0YHRg9C/0LXRgNCx0LvQvtC6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAi0KHQv9C+0ZnQvdC4INC00L3QtdCy0L3QuNC6INC90LUg0L/QvtC00YDQttCw0LLQsCDQvtCy0LDRmCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsFxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisi0KHRg9C/0LXRgNCx0LvQvtC6INC00L3QtdCy0L3QuNC60LAg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDRmNC1INC90LXQv9C+0LfQvdCw0YLQtSDQstGA0YHRgtC1IOKAniVO4oCcICjQvdC10L/QvtC00YDQttCw0L3QvikuXG4iCisi0J3QsNGY0LLQtdGA0L7QstCw0YLQvdC40ZjQtSDQtNCwINGY0LUg0LLQsNGIINC/0YDQuNC80LXRgNCw0Log4oCeZTJmc2Nr4oCcLdCwINGB0YLQsNGAINC4L9C40LvQuCDQvdC1INC/0L7QtNGA0LbQsNCy0LAg0L7QstCw0ZggIgorItC30LDQv9C40YEg0LTQvdC10LLQvdC40LrQsC5cbiIKKyLQotCw0LrQvtGS0LUg0LzQvtC20LUg0LHQuNGC0Lgg0LTQsCDRmNC1INC+0YjRgtC10ZvQtdC9INGB0YPQv9C10YDQsdC70L7QuiDQtNC90LXQstC90LjQutCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICLQodGD0L/QtdGA0LHQu9C+0Log0LTQvdC10LLQvdC40LrQsCDRmNC1INC+0YjRgtC10ZvQtdC9LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiIgorItCX0LDRgdGC0LDQstC40YbQsCDRgdGD0L/QtdGA0LHQu9C+0LrQsCDigJ7QuNC80LBf0LTQvdC10LLQvdC40LrigJwg0ZjQtSDQv9C+0L3QuNGI0YLQtdC90LAsINCw0LvQuCDRmNC1INC00L3QtdCy0L3QuNC6INC/0YDQuNGB0YPRgtCw0L0uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjM2Cittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQsIGJ1dCBubyBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICIiCisi0JfQsNGB0YLQsNCy0LjRhtCwINGB0YPQv9C10YDQsdC70L7QutCwIOKAntC30LDRhdGC0LXQstCwX9C+0L/QvtGA0LDQstCw0LrigJwg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L3QsCwg0LDQu9C4INC90LXQvNCwINC90LjQutCw0LrQstC+0LMgIgorItC00L3QtdCy0L3QuNC60LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICIiCisi0JfQsNGB0YLQsNCy0LjRhtCwINGB0YPQv9C10YDQsdC70L7QutCwIOKAntC30LDRhdGC0LXQstCwX9C+0L/QvtGA0LDQstCw0LrigJwg0ZjQtSDQv9C+0L3QuNGI0YLQtdC90LAsINCw0LvQuCDQtNC90LXQstC90LjQuiDRgdCw0LTRgNC20LggIgorItC/0L7QtNCw0YLQutC1LlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICLQntGH0LjRgdGC0Lgg0LTQvdC10LLQvdC40LoiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiIgorItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg0YTRg9C90LrRhtC40ZjQtSwg0LDQu9C4INGY0LUg0YDQtdCy0LjQt9C40ZjQsCAwINGB0LjRgdGC0LXQvNCwICIKKyLQtNCw0YLQvtGC0LXQutCwLiAgIgorCisjLiBALWV4cGFuZGVkOiAlcyBvcnBoYW5lZCBpbm9kZSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1NgorbXNnaWQgIiVzIEBvIEBpICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4iCittc2dzdHIgIiIKKyIlcyDQvdCw0L/Rg9GI0YLQtdC90LjRhSDQuC3Rh9Cy0L7RgNC+0LLQsCAlaSAo0YPQuNC0PSVJdSwg0LPQuNC0PSVJZywg0YDQtdC20LjQvD0lSW0sINCy0LXQu9C40YfQuNC90LA9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAi0J3QsNGS0L7RhSDQvdC10LTQvtC30LLQvtGZ0LXQvdC4IOKAniVC4oCcICglYikg0YMg0L3QsNC/0YPRiNGC0LXQvdC+0Lwg0Lgt0YfQstC+0YDRgyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgItCd0LDRktC+0YUg0LLQtdGbINC+0YfQuNGI0ZvQtdC90Lgg4oCeJULigJwgKCViKSDRgyDQvdCw0L/Rg9GI0YLQtdC90L7QvCDQuC3Rh9Cy0L7RgNGDICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICLQndC10LTQvtC30LLQvtGZ0LXQvdC4INC90LDQv9GD0YjRgtC10L3QuCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCDRgyDRgdGD0L/QtdGA0LHQu9C+0LrRgy5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICLQndC10LTQvtC30LLQvtGZ0LXQvdC4INC4LdGH0LLQvtGAIOKAniVp4oCcINC90LAg0YHQv9C40YHQutGDINC90LDQv9GD0YjRgtC10L3QuNGFINC4LdGH0LLQvtGA0L7QstCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyLQodGD0L/QtdGA0LHQu9C+0Log0LTQvdC10LLQvdC40LrQsCDQuNC80LAg0L/QvtGB0YLQsNCy0ZnQtdC90YMg0L3QtdC/0L7Qt9C90LDRgtGDINC30LDRgdGC0LDQstC40YbRgyDRhNGD0L3QutGG0LjRmNC1INGB0LDQvNC+LdGH0LjRgtCw0ZrQsC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICIiCisi0KHRg9C/0LXRgNCx0LvQvtC6INC00L3QtdCy0L3QuNC60LAg0LjQvNCwINC/0L7RgdGC0LDQstGZ0LXQvdGDINC90LXQv9C+0LfQvdCw0YLRgyDQvdC10YHQsNCz0LvQsNGB0L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg0YTRg9C90LrRhtC40ZjQtS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICLQntCy0LDRmCDigJ5lMmZzY2vigJwg0L3QtSDQv9C+0LTRgNC20LDQstCwINC40LfQtNCw0ZrQtSDQtNC90LXQstC90LjQutCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBNb3Zpbmcgam91cm5hbCBmcm9tIC8lcyB0byBoaWRkZW4gaW5vZGUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTW92aW5nIEBqIGZyb20gLyVzIHRvIGhpZGRlbiBAaS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0YDQtdC80LXRiNGC0LDQvCDQtNC90LXQstC90LjQuiDQuNC3IOKAni8lc+KAnCDRgyDRgdC60YDQuNCy0LXQvdC4INC4LdGH0LLQvtGALlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyLQk9GA0LXRiNC60LAg0L/RgNC10LzQtdGI0YLQsNGa0LAg0LTQvdC10LLQvdC40LrQsDogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0YDQvtC90LDRktC+0YUg0L3QtdC40YHQv9GA0LDQstC90LAg0L/QvtGZ0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAgVjIg0LTQvdC10LLQvdC40LrQsCAo0LjQtyBWMSDQtNC90LXQstC90LjQutCwKS5cbiIKKyLQkdGA0LjRiNC10Lwg0L/QvtGZ0LAg0LjQt9Cy0LDQvSDRgdGD0L/QtdGA0LHQu9C+0LrQsCBWMSDQtNC90LXQstC90LjQutCwLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICLQmNC/0LDQuiDQv9C+0LrRgNC10L3QuCDQtNC90LXQstC90LjQuiIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICIiCisi0JfQsNGB0YLQsNCy0LjRhtCwINC+0L/QvtGA0LDQstC60LAg0L3QuNGY0LUg0L/QvtGB0YLQsNCy0ZnQtdC90LAg0YMg0YHRg9C/0LXRgNCx0LvQvtC60YMg0YDQtdC30LXRgNCy0LUsINGC0LDQutC+INC00LAg0LjQv9Cw0LogIgorItC/0L7QutGA0LXRm9C10Lwg0LTQvdC10LLQvdC40LouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyLQn9GA0LDQstC40Lwg0YDQtdC30LXRgNCy0YMg0L/QvtC00LDRgtCw0LrQsCDQsdC70L7QutCwINC4LdGH0LLQvtGA0LAg0LTQvdC10LLQvdC40LrQsC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9pbm9kZSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGlzICVOOyBzaG91bGQgYmUgemVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMjcKK21zZ2lkICIiCisiQGYgZG9lcyBub3QgaGF2ZSByZXNpemVfQGkgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorImlzICVOOyBAcyB6ZXJvLiAgIgorbXNnc3RyICIiCisi0J3QsCDRgdC40YHRgtC10LzRgyDQtNCw0YLQvtGC0LXQutCwINC90LjRmNC1INGD0LrRmdGD0YfQtdC90LAg0L/RgNC+0LzQtdC90LAg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwLCDQsNC70LggIgorIuKAntGBX9GA0LXQt9C10YDQstC40YHQsNC90Lhf0LPQtNGCX9Cx0LvQvtC60L7QstC44oCcXG4iCisi0ZjQtSAlTjsg0YLRgNC10LHQsCDQsdC40YLQuCDQvdGD0LvQsC4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICIiCisi0J3QuNGY0LUg0YPQutGZ0YPRh9C10L3QsCDQv9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LAsINCw0LvQuCDQv9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LAg0L3QuNGY0LUgIgorItC90YPQu9CwLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgItCf0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg0Lgt0YfQstC+0YDQsCDQvdC40ZjQtSDQuNGB0L/RgNCw0LLQvdCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorItCS0YDQtdC80LUg0L/QvtGB0LvQtdC00ZrQtdCzINC60LDRh9C10ZrQsCDRgdGD0L/QtdGA0LHQu9C+0LrQsCAoJXQsXG4iCisiXHTRgdCw0LTQsCA9ICVUKSDRmNC1INGDINCx0YPQtNGD0ZvQvdC+0YHRgtC4LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQ4Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorItCS0YDQtdC80LUg0L/QvtGB0LvQtdC00ZrQtdCzINC/0LjRgdCw0ZrQsCDRgdGD0L/QtdGA0LHQu9C+0LrQsCAoJXQsXG4iCisiXHTRgdCw0LTQsCA9ICVUKSDRmNC1INGDINCx0YPQtNGD0ZvQvdC+0YHRgtC4LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICLQn9C+0LPQvtC00LDQuiDRgdGD0L/QtdGA0LHQu9C+0LrQsCDQt9CwINGB0L/QvtGZ0L3QuCDRgdGD0L/QtdGA0LHQu9C+0Log0YLRgNC10LHQsCDQsdC40YLQuCAlWC4gICIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCU0L7QtNCw0ZjQtdC8INC/0L7Qs9C+0LTQsNC6INC00LjRgNGF0LXRiNCwINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0L7Qv9C40YHQvdC40LrQsCDQs9GA0YPQv9C1IOKAniVn4oCcINGY0LUgJTA0eCwg0YLRgNC10LHQsCDQsdC40YLQuCAlMDR5LiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorItCe0L/QuNGB0L3QuNC6INCz0YDRg9C/0LUg4oCeJWfigJwg0ZjQtSDQvtC30L3QsNGH0LXQvSDQutCw0L4g0L3QtdC/0L7QutGA0LXQvdGD0YIg0LHQtdC3INC/0L7RgdGC0LDQstGZ0LXQvdC1INGE0YPQvdC60YbQuNGY0LUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgItCe0L/QuNGB0L3QuNC6INCz0YDRg9C/0LUg4oCeJWfigJwg0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQsNC9INCx0YDQvtGYINC90LXQutC+0YDQuNGI0ZvQtdC90LjRhSDQuC3Rh9Cy0L7RgNC+0LLQsCAlYi4gICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgItCd0LjRmNC1INC/0L7QutGA0LXQvdGD0YLQsCDQsdC40YLQvNCw0L/QsCDQv9C+0YHQu9C10LTRmtC10LMg0LHQu9C+0LrQsCDQs9GA0YPQv9C1LiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgItCf0YDQtdC90L7RgSDQtNC90LXQstC90LjQutCwIOKAniVp4oCcINCx0LXRiNC1INC+0YjRgtC10ZvQtdC9LCDQvtC00LPQvtCy0L7RgCDRmNC1INC/0YDQtdC60LjQvdGD0YIuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgItCX0LDRgdGC0LDQstC40YbQsCDigJ7QuNGB0L/RgNC+0LHQsNGYX9GB0LTigJwg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L3QsCAo0LAg0Lgg0LXQutGB0YI0INGY0LUg0LTQvtGB0YLRg9C/0LDQvSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisi0JLRgNC10LzQtSDQv9C+0YHQu9C10LTRmtC10LMg0LrQsNGH0LXRmtCwINGB0YPQv9C10YDQsdC70L7QutCwINGY0LUg0YMg0LHRg9C00YPRm9C90L7RgdGC0LguXG4iCisiXHQo0LzQsNGa0LUg0L7QtCDRmNC10LTQvdC+0LMg0LTQsNC90LAsINCy0LXRgNC+0LLQsNGC0L3QviDRg9GB0LvQtdC0INC/0L7Qs9GA0LXRiNC90L4g0L/QvtC00LXRiNC10L3QvtCzINGF0LDRgNC00LLQtdGA0YHQutC+0LMgIgorItGB0LDRgtCwKSAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzk3CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorItCS0YDQtdC80LUg0L/QvtGB0LvQtdC00ZrQtdCzINC/0LjRgdCw0ZrQsCDRgdGD0L/QtdGA0LHQu9C+0LrQsCDRmNC1INGDINCx0YPQtNGD0ZvQvdC+0YHRgtC4LlxuIgorIlx0KNC80LDRmtC1INC+0LQg0ZjQtdC00L3QvtCzINC00LDQvdCwLCDQstC10YDQvtCy0LDRgtC90L4g0YPRgdC70LXQtCDQv9C+0LPRgNC10YjQvdC+INC/0L7QtNC10YjQtdC90L7QsyDRhdCw0YDQtNCy0LXRgNGB0LrQvtCzICIKKyLRgdCw0YLQsCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICIiCisi0J3QtdC40YHQv9GA0LDQstC90LAg0ZjQtSDRmNC10LTQvdCwINC40LvQuCDQvdC10LrQvtC70LjQutC+INGB0YPQvNCwINC/0YDQvtCy0LXRgNC1INC+0L/QuNGB0L3QuNC60LAg0LPRgNGD0L/QtSDQsdC70L7QutC+0LLQsC4gICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INCx0YDQvtGYINGB0LvQvtCx0L7QtNC90LjRhSDQuC3Rh9Cy0L7RgNC+0LLQsCDQvdCwICVqICjQsdC10YjQtSAlaSlcbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGJsb2NrcyBjb3VudCB0byAlYyAod2FzICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxMworbXNnaWQgIlNldHRpbmcgZnJlZSBAYnMgY291bnQgdG8gJWMgKHdhcyAlYilcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INCx0YDQvtGYINGB0LvQvtCx0L7QtNC90LjRhSDQsdC70L7QutC+0LLQsCDQvdCwICVjICjQsdC10YjQtSAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAi0KfQuNC90LjQvCDRgdC60YDQuNCy0LXQvdC40Lwg0Lgt0YfQstC+0YAg0LrQstC+0YLQtSAlaSAoJVEpLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiCittc2dzdHIgItCh0YPQv9C10YAt0LHQu9C+0Log0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQsNC9INCc0JzQnyDQsdC70L7Qui4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDI4Cittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgIgorbXNnc3RyICLQodGD0L/QtdGALdCx0LvQvtC6INC40LzQsCDQvdC10LjRgdC/0YDQsNCy0L3RgyDQnNCc0J8g0LzQsNCz0LjRmNGDLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgItC10LrRgdGCMtGB0LRf0L7RgtCy0L7RgNC4MjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCittc2dzdHIgItC10LrRgdGCMtGB0LRf0L/RgNC+0LLQtdGA0Lhf0L7Qv9C40YHQvdC40Lo6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKKyMsIGZ1enp5Cittc2dpZCAiQFMgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gICIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0JzQnNCfINCx0LvQvtC60LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINCc0JzQnyDQsdC70L7QutGDIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1NworbXNnaWQgIkBTIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgIgorbXNnc3RyICIiCisi0KHRg9C/0LXRgNCx0LvQvtC60YMgNjQt0LHQuNGC0L3QvtCzINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0YHRgyDQv9C+0YLRgNC10LHQvdC4INGA0LDRgdC/0L7QvdC4INC00LAg0LHQuCDQv9GA0LjRgdGC0YPQv9C40L4gIgorItGH0LjRgtCw0LLQvtC8INC00LjRgdC60YMuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDYyCittc2dpZCAiRmlyc3RfbWV0YV9iZyBpcyB0b28gYmlnLiAgKCVOLCBtYXggdmFsdWUgJWcpLiAgIgorbXNnc3RyICLQn9GA0LLQuF/QvNC10YLQsF/QsdCzINGY0LUg0L/RgNC10LLQtdC70LjQui4gICglTiwg0L3QsNGY0LLQtdGb0LAg0LLRgNC10LTQvdC+0YHRgiDRmNC1ICVnKS4gICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3CisjLCBmdXp6eQorbXNnaWQgIkV4dGVybmFsIEBqIEBTIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBTLiAgIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC70L7QutCwINGA0LDRgdC/0L7QvdCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDQsdC70L7QutGDINGA0LDRgdC/0L7QvdCwIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDcyCittc2dpZCAiQFMgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3NworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCBpbiBzdXBwb3J0IGxpYnJhcnk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODIKK21zZ2lkICJCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDg3Cittc2dpZCAiQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTQKK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAiMS4g0L/RgNC+0LvQsNC3OiDQn9GA0L7QstC10YDQsNCy0LDQvCDQuC3Rh9Cy0L7RgNC+0LLQtSwg0LHQu9C+0LrQvtCy0LUsINC4INCy0LXQu9C40YfQuNC90LVcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgItC60L7RgNC10L3QuCDQuC3Rh9Cy0L7RgCDQvdC40ZjQtSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiIgorItC60L7RgNC10L3QuCDQuC3Rh9Cy0L7RgCDQuNC80LAg0L/QvtC00LXRiNC10L3QviDQtC3QstGA0LXQvNC1ICjQstC10YDQvtCy0LDRgtC90L4g0LfQsdC+0LMg0YHRgtCw0YDQvtCzIOKAnm1rZTJmc+KAnC3QsCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICLQoNC10LfQtdGA0LLQuNGB0LDQvdC4INC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQsNC9INGA0LXQttC40LwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICLQvtCx0YDQuNGB0LDQvdC4INC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQvdGD0LvRgtC+INC0LdCy0YDQtdC80LUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcINGY0LUg0YMg0YPQv9C+0YLRgNC10LHQuCwg0LDQu9C4INC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3QviDQtC3QstGA0LXQvNC1LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0ZjQtSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0Lwg0L3Rg9C70YLQtSDQtNGD0LbQuNC90LUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorItCx0LjRgtC80LDQv9CwINCx0LvQvtC60L7QstCwINCz0YDRg9C/0LUg4oCeJWfigJwg0L3QsCDigJ4lYuKAnCDRgdC1INGB0YPQutC+0LHRmdCw0LLQsCDRgdCwINC90LXQutC40Lwg0LTRgNGD0LPQuNC8INCx0LvQvtC60L7QvCAiCisi0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisi0LHQuNGC0LzQsNC/0LAg0Lgt0YfQstC+0YDQvtCy0LAg0LPRgNGD0L/QtSDigJ4lZ+KAnCDQvdCwIOKAniVi4oCcINGB0LUg0YHRg9C60L7QsdGZ0LDQstCwINGB0LAg0L3QtdC60LjQvCDQtNGA0YPQs9C40Lwg0LHQu9C+0LrQvtC8ICIKKyLRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorItGC0LDQsdC10LvQsCDQuC3Rh9Cy0L7RgNCwINCz0YDRg9C/0LUg4oCeJWfigJwg0L3QsCDigJ4lYuKAnCDRgdC1INGB0YPQutC+0LHRmdCw0LLQsCDRgdCwINC90LXQutC40Lwg0LTRgNGD0LPQuNC8INCx0LvQvtC60L7QvCAiCisi0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAi0LHQuNGC0LzQsNC/0LAg0LHQu9C+0LrQvtCy0LAgKCViKSDQs9GA0YPQv9C1IOKAniVn4oCcINGY0LUg0LvQvtGI0LAuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgItCx0LjRgtC80LDQv9CwINC4LdGH0LLQvtGA0LAgKCViKSDQs9GA0YPQv9C1IOKAniVn4oCcINGY0LUg0LvQvtGI0LAuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCAlaSwg0Lhf0LLQtdC70LjRh9C40L3QsCDRmNC1ICVJcywg0YLRgNC10LHQsCDQsdC40YLQuCAlTi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCAlaSwg0Lhf0LHQu9C+0LrQvtCy0LAg0ZjQtSAlSWIsINGC0YDQtdCx0LAg0LHQuNGC0LggJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICLQvdC10LTQvtC30LLQvtGZ0LXQvdC+IOKAniVC4oCcICglYikg0YMg0Lgt0YfQstC+0YDRgyAlaS4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIuKAniVC4oCcICglYikg0L/RgNC10LrQu9Cw0L/QsCDQvNC10YLQsNC/0L7QtNCw0YLQutC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0YMg0Lgt0YfQstC+0YDRgyAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTczCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQuNC80LAg0L3QtdC00L7Qt9Cy0L7RmdC10L0o0LUpINCx0LvQvtC6KNC+0LLQtSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRvbyBtYW55IGlsbGVnYWwgYmxvY2tzIGluIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3OAorIywgYy1mb3JtYXQKK21zZ2lkICJUb28gbWFueSBpbGxlZ2FsIEBicyBpbiBAaSAlaS5cbiIKK21zZ3N0ciAi0J/RgNC10LLQuNGI0LUg0L3QtdC00L7Qt9Cy0L7RmdC10L3QuNGFINCx0LvQvtC60L7QstCwINGDINC4LdGH0LLQvtGA0YMgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCittc2dpZCAiQEkgJUIgKCViKSBpbiBiYWQgQGIgQGkuICAiCittc2dzdHIgItCd0LXQtNC+0LfQstC+0ZnQtdC90L4g4oCeJULigJwgKCViKSDRgyDQuC3Rh9Cy0L7RgNGDINC70L7RiNC10LMg0LHQu9C+0LrQsC4gICIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4OAorbXNnaWQgIkJhZCBAYiBAaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg0LvQvtGI0LXQsyDQsdC70L7QutCwINC40LzQsCDQvdC10LTQvtC30LLQvtGZ0LXQvSjQtSkg0LHQu9C+0Loo0L7QstC1KS4gICIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIG9yIGJhZCBibG9jayBpbiB1c2UhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkzCittc2dpZCAiRHVwbGljYXRlIG9yIGJhZCBAYiBpbiB1c2UhXG4iCittc2dzdHIgItCj0LTQstC+0YHRgtGA0YPRh9C10L3QuCDQuNC70Lgg0LvQvtGIINCx0LvQvtC6INGY0LUg0YMg0YPQv9C+0YLRgNC10LHQuCFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAi0JvQvtGIINCx0LvQvtC6IOKAniVi4oCcINGB0LUg0LrQvtGA0LjRgdGC0Lgg0LrQsNC+INC40L3QtNC40YDQtdC60YLQvdC4INCx0LvQvtC6INC4LdGH0LLQvtGA0LAg0LvQvtGI0LXQsyDQsdC70L7QutCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbgorIy4gQC1leHBhbmRlZDogc2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaW4gdGhlIGZpbGVzeXN0ZW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAzCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQuC3Rh9Cy0L7RgCDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwINGY0LUg0LLQtdGA0L7QstCw0YLQvdC+INC+0YjRgtC10ZvQtdC9LiDQotGA0LXQsdCw0LvQviDQsdC4INGB0LDQtNCwXG4iCisi0LTQsCDQt9Cw0YPRgdGC0LDQstC40YLQtSDQuCDQtNCwINC/0L7QutGA0LXQvdC10YLQtSDigJ5lMmZzY2sgLWPigJwg0LTQsCDQstC40LTQuNGC0LUg0LjQvNCwINC70Lgg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsFxuIgorItGDINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisi0JDQutC+INGY0LUg0LHQu9C+0Log0YHRgtCy0LDRgNC90L4g0LvQvtGILCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQvdC1INC80L7QttC1INCx0LjRgtC4INC/0L7Qv9GA0LDQstGZ0LXQvS5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisi0JzQvtC20LXRgtC1INC00LAg0YPQutC70L7QvdC40YLQtSDRgtCw0Zgg0LHQu9C+0Log0YHQsCDRgdC/0LjRgdC60LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCDQuCDQtNCwINGB0LUg0L3QsNC00LDRgtC1XG4iCisi0LTQsCDRmNC1INCx0LvQvtC6INGB0YLQstCw0YDQvdC+INC00L7QsdCw0YAuINCQ0LvQuCDQvdC40LrQviDQstCw0Lwg0L3QuNGI0YLQsCDQvdC1INCz0LDRgNCw0L3RgtGD0ZjQtS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAi0J/RgNC40LzQsNGA0L3QuCDRgdGD0L/QtdGALdCx0LvQvtC6ICglYikg0ZjQtSDQvdCwINGB0L/QuNGB0LrRgyDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwLlxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAi0JHQu9C+0Log4oCeJWLigJwg0YMg0L7Qv9C40YHQvdC40YbQuNC80LAg0L/RgNC40LzQsNGA0L3QtSDQs9GA0YPQv9C1INGY0LUg0L3QsCDRgdC/0LjRgdC60YMg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsFxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIHN1cGVyYmxvY2sgKCViKSBpcyBiYWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMyCittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBAUyAoJWIpIGlzIGJhZC5cbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1OiDQodGD0L/QtdGALdCx0LvQvtC6ICglYikg0LPRgNGD0L/QtSDigJ4lZ+KAnCDRmNC1INC70L7RiC5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBncm91cCBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgYmxvY2sgKCViKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzcKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIEBnIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBAYiAoJWIpLlxuIgorbXNnc3RyICLQo9C/0L7Qt9C+0YDQtdGa0LU6INCj0LzQvdC+0LbQsNC6INCz0YDRg9C/0LUg4oCeJWfigJwg0L7Qv9C40YHQvdC40LrQsCDQs9GA0YPQv9C1INC40LzQsCDQu9C+0Ygg0LHQu9C+0LogKCViKS5cbiIKKworIy4gQC1leHBhbmRlZDogUHJvZ3JhbW1pbmcgZXJyb3I/ICBibG9jayAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX2Jsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0MworbXNnaWQgIlByb2dyYW1taW5nIGVycm9yPyAgQGIgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9AYi5cbiIKK21zZ3N0ciAiIgorItCT0YDQtdGI0LrQsCDQv9GA0L7Qs9GA0LDQvNCwPyDQkdC70L7QuiDQsdGALiAlYiDRmNC1INC30LDRgtGA0LDQttC10L0g0LHQtdC3INGA0LDQt9C70L7Qs9CwINGDICIKKyLQvtCx0YDQsNC00Lhf0LvQvtGI0LjRhV/QsdC70L7QutC+0LLQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiIgorItCT0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUgJU4g0L3QtdC/0YDQtdC60LjQtNC90LAo0LjRhSkg0LHQu9C+0LrQsCjQvtCy0LApINGDINCz0YDRg9C/0Lgg0LHQu9C+0LrQsCDigJ4lZ+KAnCDQt9CwIOKAniVz4oCcOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAi0LPRgNC10YjQutCwINC00L7QtNC10LvQtSDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0LUg0LHQu9C+0LrQsCDQt9CwINC/0YDQtdC80LXRiNGC0LDRmtC1IOKAniVz4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAi0J/RgNC10LzQtdGI0YLQsNC8IOKAniVn4oCcINCz0YDRg9C/0LUg4oCeJXPigJwg0LjQtyDigJ4lYuKAnCDRgyDigJ4lY+KAnC4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgItCf0YDQtdC80LXRiNGC0LDQvCDigJ4lZ+KAnCDQs9GA0YPQv9C1IOKAniVz4oCcINGDIOKAniVj4oCcLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrICViIG9mICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2OQorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIEBiICViIG9mICVzOiAlbVxuIgorbXNnc3RyICLQo9C/0L7Qt9C+0YDQtdGa0LU6INC90LUg0LzQvtCz0YMg0LTQsCDQv9GA0L7Rh9C40YLQsNC8INCx0LvQvtC6IOKAniVi4oCcINC+0LQg4oCeJXPigJw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1OiDQvdC1INC80L7Qs9GDINC00LAg0YPQv9C40YjQtdC8INCx0LvQvtC6IOKAniVi4oCcINC+0LQg4oCeJXPigJw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc5IGUyZnNjay9wcm9ibGVtLmM6MTc0MAorbXNnaWQgIkBBIEBpIEBCICglTik6ICVtXG4iCittc2dzdHIgItCz0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUg0LHQuNGC0LzQsNC/0LUg0Lgt0YfQstC+0YDQsCAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgItCz0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUg0LHQuNGC0LzQsNC/0LUg0LHQu9C+0LrQvtCy0LAgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgItCz0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUg0L/QvtC00LDRgtCw0LrQsCDQstC10LfQtSDQuC3QsdGA0L7RmNCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGRpcmVjdG9yeSBibG9jayBhcnJheTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGQgQGIgYXJyYXk6ICVtXG4iCittc2dzdHIgItCz0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUg0L3QuNC30LAg0LHQu9C+0LrQvtCy0LAg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBAaXMgKCVpKTogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINC/0YDQuNC70LjQutC+0Lwg0YHQutC10L3QuNGA0LDRmtCwINC4LdGH0LLQvtGA0L7QstCwICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/RgNC40LvQuNC60L7QvCDQv9C+0L3QsNCy0ZnQsNGa0LAg0L3QsCDQsdC70L7QutC+0LLQuNC80LAg0YMg0Lgt0YfQstC+0YDRgyDigJ4laeKAnDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YHQvNC10YjRgtCw0ZrQsCDQv9C+0LTQsNGC0LDQutCwINC+INCx0YDQvtGY0YMg0Lgt0YfQstC+0YDQvtCy0LAgKNC4LdGH0LLQvtGAPSVpLCDQsdGA0L7RmD0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisi0JPRgNC10YjQutCwINGB0LzQtdGI0YLQsNGa0LAg0L/QvtC00LDRgtCw0LrQsCDQsdC70L7QutCwINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwICjQuC3Rh9Cy0L7RgD0laSwg0LHQu9C+0Lo9JWIsINCx0YDQvtGYPSVOKTogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDRh9C40YLQsNGa0LAg0Lgt0YfQstC+0YDQsCDigJ4laeKAnDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINC/0L7RgdGC0LDQstGZ0LXQvdGDINC4LdC80LDQs9C40YfQvdGDINC30LDRgdGC0LDQstC40YbRgy4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorItCd0LDRgNC+0YfQuNGC0LAg0LTQsNGC0L7RgtC10LrQsCAo0YPRgNC10ZLQsNGYL9C/0YDQuNC60ZnRg9GH0L3QuNGG0LAv0L/Rg9C/0Lgv0YHQuNC80LHQvtC70LjRh9C60LBf0LLQtdC30LApICjQuC3Rh9Cy0L7RgCDigJ4laeKAnCkgIgorItC40LzQsCDQvdC10L/RgNC+0LzQtdC90ZnQuNCy0YNcbiIKKyLQuNC70Lgg0L/QvtGB0YLQsNCy0ZnQtdC90YMg0LfQsNGB0YLQsNCy0LjRhtGDINC/0YDQuNC60LDRh9C40ZrQsNGa0LAt0YHQsNC80L4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiIgorItCd0LDRgNC+0YfQuNGC0Lgg0Lgt0YfQstC+0YAg4oCeJWnigJwgKNGD0YDQtdGS0LDRmC/Qv9GA0LjQutGZ0YPRh9C90LjRhtCwL9C/0YPQv9C4KSDQuNC80LAg0L3QtS3QvdGD0LvRgtGDINCy0LXQu9C40YfQuNC90YMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzQ5Cittc2dpZCAiQGogQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgItC4LdGH0LLQvtGAINC00L3QtdCy0L3QuNC60LAg0L3QuNGY0LUg0YMg0YPQv9C+0YLRgNC10LHQuCwg0LDQu9C4INGB0LDQtNGA0LbQuCDQv9C+0LTQsNGC0LrQtS4gICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorbXNnaWQgIkBqIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgItC00L3QtdCy0L3QuNC6INC90LjRmNC1INC+0LHQuNGH0L3QsCDQtNCw0YLQvtGC0LXQutCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcINCx0LXRiNC1INC00LXQviDRgdC/0LjRgdC60LAg0L3QsNC/0YPRiNGC0LXQvdC40YUg0Lgt0YfQstC+0YDQvtCy0LAuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiIgorItCd0LDRktC+0YUg0Lgt0YfQstC+0YDQvtCy0LUg0LrQvtGY0Lgg0YHRgyDQsdC40LvQuCDQtNC10L4g0L7RiNGC0LXRm9C10L3QvtCzINC90LDQv9GD0YjRgtC10L3QvtCzINGB0LLQtdC30LDQvdC+0LMg0YHQv9C40YHQutCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICLQs9GA0LXRiNC60LAg0LTQvtC00LXQu9C1INGB0YLRgNGD0LrRgtGD0YDQtSDQsdGA0L7RmNCwINGD0L/Rg9GC0LUgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINCx0LvQvtC60LAg4oCeJWLigJwg0L/RgNC+0YjQuNGA0LXQvdC+0LMg0LDRgtGA0LjQsdGD0YLQsCDQt9CwINC4LdGH0LLQvtGAIOKAniVp4oCcLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINC70L7RiCDQsdC70L7QuiDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGH0LjRgtCw0ZrQsCDQsdC70L7QutCwIOKAniVi4oCcINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAi0LHQu9C+0Log4oCeJWLigJwg0L/RgNC+0YjQuNGA0LXQvdC+0LMg0LDRgtGA0LjQsdGD0YLQsCDQuNC80LAg0LHRgNC+0Zgg0YPQv9GD0YLQtSAlciwg0YLRgNC10LHQsCDQsdC40YLQuCAlTi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9C40YHQsNGa0LAg0LHQu9C+0LrQsCDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgItCx0LvQvtC6IOKAniVi4oCcINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAg0LjQvNCwIGhf0LHQu9C+0LrQvtCy0LXCoD7CoDEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDUKKyMsIGZ1enp5Cittc2dpZCAiQEEgQGEgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICLQs9GA0LXRiNC60LAg0LTQvtC00LXQu9C1INGB0YLRgNGD0LrRgtGD0YDQtSDQuC3QsdGA0L7RmNCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAi0LHQu9C+0Log4oCeJWLigJwg0L/RgNC+0YjQuNGA0LXQvdC+0LMg0LDRgtGA0LjQsdGD0YLQsCDRmNC1INC+0YjRgtC10ZvQtdC9ICjRgdGD0LrQvtCxINC00L7QtNC10LvQtSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICLQsdC70L7QuiDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwINGY0LUg0L7RiNGC0LXRm9C10L0gKNC90LXQuNGB0L/RgNCw0LLQsNC9INC90LDQt9C40LIpLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCB2YWx1ZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIgorbXNnc3RyICLQsdC70L7QuiDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwINGY0LUg0L7RiNGC0LXRm9C10L0gKNC90LXQuNGB0L/RgNCw0LLQvdCwINCy0YDQtdC00L3QvtGB0YIpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDRmNC1INC/0YDQtdCy0LXQu9C40LouICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorbXNnaWQgIiVCICglYikgY2F1c2VzIEBkIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIuKAniVC4oCcICglYikg0LTQvtCy0L7QtNC4INC00L4g0YLQvtCz0LAg0LTQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0Lwg0LHRg9C00LUg0L/RgNC10LLQtdC70LjQui4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzQKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIuKAniVC4oCcICglYikg0LTQvtCy0L7QtNC4INC00L4g0YLQvtCz0LAg0LTQsCDQtNCw0YLQvtGC0LXQutCwINCx0YPQtNC1INC/0YDQtdCy0LXQu9C40LrQsC4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBzeW1saW5rIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIuKAniVC4oCcICglYikg0LTQvtCy0L7QtNC4INC00L4g0YLQvtCz0LAg0LTQsCDRgdC40LzQsdC+0LvQuNGH0LrQsCDQstC10LfQsCDQsdGD0LTQtSDQv9GA0LXQstC10LvQuNC60LAuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg4oCeSU5ERVhfRkzigJwg0L3QsCDRgdC40YHRgtC10LzRgyDQtNCw0YLQvtGC0LXQutCwINCx0LXQtyAiCisi0L/QvtC00YDRiNC60LUg0YUt0YHRgtCw0LHQu9CwLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg4oCeSU5ERVhfRkzigJwg0LDQu9C4INC90LjRmNC1INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQINC40LzQsCDQvdC10LjRgdC/0YDQsNCy0LDQvSDQutC+0YDQtdC90Lgg0YfQstC+0YAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTkKK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQINC40LzQsCDQvdC10L/QvtC00YDQttCw0L3QviDQuNC30LTQsNGa0LUg0YXQtdGI0LAgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQINC60L7RgNC40YHRgtC4INC90LXQvtC00LPQvtCy0LDRgNCw0ZjRg9Gb0YMg0LfQsNGB0YLQsNCy0LjRhtGDINC60L7RgNC10L3QvtCzICIKKyLRh9Cy0L7RgNCwINGFLdGB0YLQsNCx0LvQsC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINClLdCh0KLQkNCR0JvQkCDQuNC80LAg0LTRg9Cx0LjQvdGDINGB0YLQsNCx0LvQsCAoJU4pINC60L7RmNCwINGY0LUg0L/RgNC10LLQtdC70LjQutCwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDQu9C+0YjQtdCzINCx0LvQvtC60LAg0LjQvNCwINC40L3QtNC40YDQtdC60YLQvdC4INCx0LvQvtC6ICglYikg0LrQvtGY0Lgg0ZjQtSDRgyDRgdGD0LrQvtCx0YMg0YHQsFxuIgorItC80LXRgtCw0L/QvtC00LDRhtC40LzQsCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICLQndC40ZjQtSDRg9GB0L/QtdC70L4gKNC/0L7QvdC+0LLQvdC+KdGB0YLQstCw0YDQsNGa0LUg0L/RgNC+0LzQtdC90LUg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwOiAlbS4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4NQorbXNnaWQgIkBpICVpIGhhcyBhIGV4dHJhIHNpemUgKCVJUykgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINC00L7QtNCw0YLQvdGDINCy0LXQu9C40YfQuNC90YMgKCVJUykg0LrQvtGY0LAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0L3QsFxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiIgorItC/0YDQvtGI0LjRgNC10L3QuCDQsNGC0YDQuNCx0YPRgiDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVp4oCcINC40LzQsCDQtNGD0LbQuNC90YMg0L3QsNC30LjQstCwICglTikg0LrQvtGY0LAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0L3QsFxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKyLQv9GA0L7RiNC40YDQtdC90Lgg0LDRgtGA0LjQsdGD0YIg0YMg0Lgt0YfQstC+0YDRgyDigJ4laeKAnCDQuNC80LAg0L/QvtC80LXRgNCw0Zgg0LLRgNC10LTQvdC+0YHRgtC4ICglTikg0LrQvtGY0Lgg0ZjQtSAiCisi0L3QtdC40YHQv9GA0LDQstCw0L1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIGJsb2NrICglTikgd2hpY2ggaXMgaW52YWxpZCAobXVzdCBiZSAwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKK21zZ3N0ciAiIgorItC/0YDQvtGI0LjRgNC10L3QuCDQsNGC0YDQuNCx0YPRgiDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVp4oCcINC40LzQsCDQsdC70L7QuiDQstGA0LXQtNC90L7RgdGC0LggKCVOKSDQutC+0ZjQuCDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9ICIKKyIo0LzQvtGA0LAg0LHQuNGC0LggMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiIKKyLQv9GA0L7RiNC40YDQtdC90Lgg0LDRgtGA0LjQsdGD0YIg0YMg0Lgt0YfQstC+0YDRgyDigJ4laeKAnCDQuNC80LAg0LLQtdC70LjRh9C40L3RgyDQstGA0LXQtNC90L7RgdGC0LggKCVOKSDQutC+0ZjQsCDRmNC1ICIKKyLQvdC10LjRgdC/0YDQsNCy0L3QsFxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAi0L/RgNC+0YjQuNGA0LXQvdC4INCw0YLRgNC40LHRg9GCINGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJwg0LjQvNCwINGF0LXRiCAoJU4pINC60L7RmNC4INGY0LUg0L3QtdC40YHQv9GA0LDQstCw0L1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxNQorbXNnaWQgIkBpICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0ZjQtSAlSXQg0LDQu9C4INC40LfQs9C70LXQtNCwINC60LDQviDQtNCwINGY0LUg0YHRgtCy0LDRgNCw0L0g0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8LlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/RgNC40LvQuNC60L7QvCDRh9C40YLQsNGa0LAg0YHRgtCw0LHQu9CwINGA0LDRgdC/0L7QvdCwINGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorItCd0LjRgdCw0Lwg0YPRgdC/0LXQviDQtNCwINC/0L7QvdC+0LLQuNC8INGA0LDRgdC/0L7QvdC1INGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJxcbiIKKyJcdCjQvtC/ICVzLCDQsdC70LogJWIsINC70LHQu9C6ICVjKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzEKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQuNC80LAg0L3QtdC40YHQv9GA0LDQstCw0L0g0YDQsNGB0L/QvtC9XG4iCisiXHQo0LvQvtCz0LjRh9C60Lgg0LHQu9C+0Log4oCeJWPigJwsINC90LXQuNGB0L/RgNCw0LLQsNC9INGE0LjQt9C40YfQutC4INCx0LvQvtC6IOKAniVi4oCcLCDQtNGD0LbQuNC90LUgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgaW52YWxpZCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTM2Cittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgQG4gbGVuICVOKVxuIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQsNC9INGA0LDRgdC/0L7QvVxuIgorIlx0KNC70L7Qs9C40YfQutC4INCx0LvQvtC6IOKAniVj4oCcLCDRhNC40LfQuNGH0LrQuCDQsdC70L7QuiDigJ4lYuKAnCwg0L3QtdC40YHQv9GA0LDQstC90LUg0LTRg9C20LjQvdC1ICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg4oCeRVhURU5UU19GTOKAnCDQvdCwINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAg0LHQtdC3ICIKKyLQv9C+0LTRgNGI0LrQtSDRgNCw0YHQv9C+0L3QsC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDRmNC1INGDINC30LDQv9C40YHRgyDRgNCw0YHQv9C+0L3QsCwg0LDQu9C4INGB0YPQv9C10YAt0LHQu9C+0LrRgyDQvdC10LTQvtGB0YLQsNGY0LUg0YTRg9C90LrRhtC40ZjQsCAiCisi4oCeRVhURU5UU+KAnFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YDRgyDigJ4laeKAnCDQvdC10LTQvtGB0YLQsNGY0LUg4oCeRVhURU5UX0ZM4oCcLCDQsNC70Lgg0ZjQtSDRgyDQt9Cw0L/QuNGB0YMg0YDQsNGB0L/QvtC90LBcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIgorbXNnc3RyICLQkdGA0LfQsCDRgdC40LzQsdC+0LvQuNGH0LrQsCDQstC10LfQsCDigJ4laeKAnCDQuNC80LAg0L/QvtGB0YLQsNCy0ZnQtdC90L4g4oCeRVhURU5UX0ZM4oCcLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogXHQoaW52YWxpZCBsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2MQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHNcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINGA0LDRgdC/0L7QvdC1INCy0LDQvSDQv9C+0YDQtdGC0LrQsFxuIgorIlx0KNC90LXQuNGB0L/RgNCw0LLQsNC9INC70L7Qs9C40YfQutC4INCx0LvQvtC6IOKAniVj4oCcLCDRhNC40LfQuNGH0LrQuCDQsdC70L7QuiDigJ4lYuKAnCwg0LTRg9C20LjQvdCwICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQvdC10LjRgdC/0YDQsNCy0LDQvSDRh9Cy0L7RgCDRgNCw0YHQv9C+0L3QsCAo0LHQu9C+0Log4oCeJWLigJwsINC70LHQu9C6ICVjKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9GA0LXRgtCy0LDRgNCw0ZrQsCDQsdC40YLQvNCw0L/QtSDQsdC70L7QutCwINC/0L7QtNC60LvQsNGB0YLQtdGA0LA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTc1Cittc2dpZCAiQHEgQGkgaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg0LrQstC+0YLQtSDQvdC40ZjQtSDQvtCx0LjRh9C90LAg0LTQsNGC0L7RgtC10LrQsC4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgItC4LdGH0LLQvtGAINC60LLQvtGC0LUg0L3QuNGY0LUg0YMg0YPQv9C+0YLRgNC10LHQuCwg0LDQu9C4INGB0LDQtNGA0LbQuCDQv9C+0LTQsNGC0LrQtS4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDQutCy0L7RgtC1INGY0LUg0LLQuNC00ZnQuNCyINC60L7RgNC40YHQvdC40LrRgy4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgItC4LdGH0LLQvtGAINC70L7RiNC10LMg0LHQu9C+0LrQsCDQuNC30LPQu9C10LTQsCDQvdC10LjRgdC/0YDQsNCy0L3Qvi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQuNC80LAg0YDQsNGB0L/QvtC9INC90YPQu9GC0LUg0LLQtdC70LjRh9C40L3QtVxuIgorIlx0KNC90LXQuNGB0L/RgNCw0LLQsNC9INC70L7Qs9C40YfQutC4INCx0LvQvtC6IOKAniVj4oCcLCDRhNC40LfQuNGH0LrQuCDQsdC70L7QuiDigJ4lYuKAnClcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gICIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0ZjQtSDQv9GA0LXQstC10LvQuNC6LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDQsdC40YLQvNCw0L/QuCIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgItCx0LvQvtC6IOKAniVi4oCcINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAg0ZjQtSDQvtGI0YLQtdGb0LXQvSAo0YHRg9C60L7QsSDQtNC+0LTQtdC70LUpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDRgNCw0YHQv9C+0L3QtSDQstCw0L0g0L/QvtGA0LXRgtC60LBcbiIKKyJcdCjQvdC10LjRgdC/0YDQsNCy0LDQvSDQu9C+0LPQuNGH0LrQuCDQsdC70L7QuiDigJ4lY+KAnCwg0YTQuNC30LjRh9C60Lgg0LHQu9C+0Log4oCeJWLigJwsINC00YPQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDI3Cittc2dpZCAiQGkgJWkgQGEgQGIgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBiLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEludGVyaW9yIGV4dGVudCBub2RlIGxldmVsICVOIG9mIGlub2RlICVpOlxuCisjLiBALWV4cGFuZGVkOiBMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0Cittc2dpZCAiIgorIkludGVyaW9yIEB4IG5vZGUgbGV2ZWwgJU4gb2YgQGkgJWk6XG4iCisiTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAiCittc2dzdHIgIiIKKyLQndC40LLQviDRg9C90YPRgtGA0LDRiNGa0LXQsyDRh9Cy0L7RgNCwINGA0LDRgdC/0L7QvdCwICVOINC4LdGH0LLQvtGA0LAg4oCeJWnigJw6XG4iCisi0JvQvtCz0LjRh9C60Lgg0L/QvtGH0LXRgtCw0Log4oCeJWLigJwg0L3QtSDQvtC00LPQvtCy0LDRgNCwINC70L7Qs9C40YfQutC+0Lwg0L/QvtGH0LXRgtC60YMg4oCeJWPigJwg0L3QsCDRgdC70LXQtNC10ZvQtdC8INC90LjQstC+0YMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDAKK21zZ2lkICIiCisiQGkgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcLCDQutGA0LDRmCDRgNCw0YHQv9C+0L3QsCDQv9GA0LXQstCw0LfQuNC70LDQt9C4INC00L7Qt9Cy0L7RmdC10L3RgyDQstGA0LXQtNC90L7RgdGCXG4iCisiXHQo0LvQvtCz0LjRh9C60Lgg0LHQu9C+0Log4oCeJWPigJwsINGE0LjQt9C40YfQutC4INCx0LvQvtC6IOKAniVi4oCcLCDQtNGD0LbQuNC90LAgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgQFMgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDRmNC1INGDINC30LDQv9C40YHRgyDRgNCw0YHQv9C+0L3QsCwg0LDQu9C4INGB0YPQv9C10YAt0LHQu9C+0LrRgyDQvdC10LTQvtGB0YLQsNGY0LUg0YTRg9C90LrRhtC40ZjQsCAiCisi4oCeRVhURU5UU+KAnFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQuNC80LAg0L/QvtGB0YLQsNCy0ZnQtdC90YMg0LfQsNGB0YLQsNCy0LjRhtGDIOKAnklOREVYX0ZM4oCcINC90LAg0YHQuNGB0YLQtdC80YMg0LTQsNGC0L7RgtC10LrQsCDQsdC10LcgIgorItC/0L7QtNGA0YjQutC1INGFLdGB0YLQsNCx0LvQsC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDU4Cittc2dpZCAiIgorIkBpICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGJsb2NrICViIHNob3VsZCBiZSBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDYzCittc2dpZCAiQGQgQGkgJWkgQGIgJWIgc2hvdWxkIGJlIGF0IEBiICVjLiAgIgorbXNnc3RyICLQsdC70L7QuiDigJ4lYuKAnCDQuC3Rh9Cy0L7RgNCwIOKAniVp4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINGC0YDQtdCx0LAg0LTQsCDQsdGD0LTQtSDQvdCwINCx0LvQvtC60YMg4oCeJWPigJwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0LjQvNCwINGA0LDRgdC/0L7QvSDQvtC30L3QsNGH0LXQvSDQvdC10LrQvtGA0LjRiNGb0LXQvdC40Lwg0L3QsCDQsdC70L7QutGDIOKAniVj4oCcLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LvQvtCz0LjRh9C60L7QsyDQsdC70L7QutCwIOKAniVi4oCcICjRhNC40LfQuNGH0LrQuCDQsdC70L7QuiDigJ4lY+KAnCkg0L3QsNGA0YPRiNCw0LLQsCDQv9GA0LDQstC40LvQsCDQtNC+0LTQtdC70LUgIgorItC60LvQsNGB0YLQtdGA0LAuXG4iCisi0JHQuNGb0LUg0L/QvtC/0YDQsNCy0ZnQtdC9INGDINC/0YDQvtC70LDQt9GDIDFCLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICIiCisi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LjQvNCwINC/0L7RgdGC0LDQstGZ0LXQvdGDINC30LDRgdGC0LDQstC40YbRgyDigJ5JTkRFWF9GTOKAnCDQsNC70Lgg0L3QuNGY0LUg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8LlxuIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGZpbGUgKGlub2RlICVpKSBoYXMgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDgzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIGZpbGUgKEBpICVpKSBoYXMgZXh0ZW50c1xuIgorIm9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisi0J3QsNGA0L7Rh9C40YLQsCDQtNCw0YLQvtGC0LXQutCwICjRg9GA0LXRktCw0Zgv0L/RgNC40LrRmdGD0YfQvdC40YbQsC/Qv9GD0L/QuC/RgdC40LzQsdC+0LvQuNGH0LrQsF/QstC10LfQsCkgKNC4LdGH0LLQvtGAIOKAniVp4oCcKSAiCisi0LjQvNCwINC90LXQv9GA0L7QvNC10L3RmdC40LLRg1xuIgorItC40LvQuCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg0L/RgNC40LrQsNGH0LjRmtCw0ZrQsC3RgdCw0LzQvi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAi0LPRgNC10YjQutCwINC00L7QtNC10LvQtSDRgdGC0YDRg9C60YLRg9GA0LUg0Lgt0LHRgNC+0ZjQsDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE5CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYSBkdXBsaWNhdGUgQHggbWFwcGluZ1xuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQuNC80LAg0L3QtdC40YHQv9GA0LDQstCw0L0g0YDQsNGB0L/QvtC9XG4iCisiXHQo0LvQvtCz0LjRh9C60Lgg0LHQu9C+0Log4oCeJWPigJwsINC90LXQuNGB0L/RgNCw0LLQsNC9INGE0LjQt9C40YfQutC4INCx0LvQvtC6IOKAniVi4oCcLCDQtNGD0LbQuNC90LUgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBlbmNyeXB0ZWQgZGlyZWN0b3J5IGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI0Cittc2dpZCAiQEEgbWVtb3J5IGZvciBlbmNyeXB0ZWQgQGQgbGlzdFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjkKK21zZ2lkICJAaSAlaSBAeCB0cmVlIGNvdWxkIGJlIG1vcmUgc2hhbGxvdyAoJWI7IGNvdWxkIGJlIDw9ICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgItCx0LvQvtC6IOKAniVi4oCcINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAg0ZjQtSDQvtGI0YLQtdGb0LXQvSAo0L3QtdC40YHQv9GA0LDQstCw0L0g0L3QsNC30LjQsikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC60YDQtdGb0LXQvCDQtNC+0LTQsNGC0L3QtSDQv9GA0L7Qu9Cw0LfQtSDQtNCwINGA0LXRiNC40Lwg0LHQu9C+0LrQvtCy0LUg0LrQvtGY0LUg0YLRgNCw0LbQuCDQstC40YjQtSDQvtC0INGY0LXQtNC90L7QsyDQuC0iCisi0YfQstC+0YDQsC4uLlxuIgorItCf0YDQvtC70LDQt8KgMUI6INCf0L7QvdC+0LLQviDQv9GA0LXQs9C70LXQtNCw0Lwg0LjQvNCwINC70Lgg0LHQu9C+0LrQvtCy0LAg0LrQvtGY0Lgg0YHRgyDQvdC10LrQvtC70LjQutC+INC/0YPRgtCwINC30LDRgtGA0LDQttC10L3QuFxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAi0LHQu9C+0Loo0L7QstC4KSDQvdC10LrQvtC70LjQutC+INC/0YPRgtCwINC30LDRgtGA0LDQttC10L3QuCDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVp4oCcOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/RgNC40LvQuNC60L7QvCDRgdC60LXQvdC40YDQsNGa0LAg0Lgt0YfQstC+0YDQvtCy0LAgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICLQs9GA0LXRiNC60LAg0LTQvtC00LXQu9C1INCx0LjRgtC80LDQv9C1INC4LdGH0LLQvtGA0LAgKNC00LLQvtGB0YLRgNGD0LrQsF/QvNCw0L/QsF/QuF/Rh9Cy0L7RgNCwKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINC/0YDQuNC70LjQutC+0Lwg0L/QvtC90LDQstGZ0LDRmtCwINC90LAg0LHQu9C+0LrQvtCy0LjQvNCwINGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJwgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorItCT0YDQtdGI0LrQsCDQtNC+0YLQtdGA0LjQstCw0ZrQsCDQsdGA0L7RmNCwINGD0L/Rg9GC0LAg0LfQsCDQsdC70L7QuiDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwICjQuC3Rh9Cy0L7RgCAiCisi4oCeJWnigJwpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTk3Cittc2dpZCAiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIgorbXNnc3RyICIiCisi0J/RgNC+0LvQsNC3IDFDOiDQn9GA0LXQs9C70LXQtNCw0Lwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LUg0LfQsCDQuC3Rh9Cy0L7RgNC+0LLQuNC80LAg0YHQsCDQvdC10LrQvtC70LjQutC+INC/0YPRgtCwICIKKyLQt9Cw0YLRgNCw0LbQtdC90LjQvCDQsdC70L7QutC+0LLQuNC80LBcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgItCf0YDQvtC70LDQtyAxRDog0J/QvtC90L7QstC+INC00L7RgtC10YDRg9GY0LXQvCDQvdC10LrQvtC70LjQutC+INC/0YPRgtCwINC30LDRgtGA0LDQttC10L3QtSDQsdC70L7QutC+0LLQtVxuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyLQlNCw0YLQvtGC0LXQutCwIOKAniVR4oCcICjQuC3Rh9Cy0L7RgCDigJ4laeKAnCwg0LTQsNGC0YPQvCDQuNC30LzQtdC90LUgJUlNKVxuIgorIiAg0LjQvNCwICVyINC90LXQutC+0LvQuNC60L4g0L/Rg9GC0LAg0LfQsNGC0YDQsNC20LXQvSjQtSkg0LHQu9C+0Loo0L7QstC1KSwg0LTQtdGZ0LXQvSjQtSkg0YHQsCAlTiDQtNCw0YLQvtGC0LXQutC+0Lwo0LUpOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKNC4LdGH0LLQvtGAIOKAniVp4oCcLCDQtNCw0YLRg9C8INC40LfQvNC10L3QtSAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDzQvNC10YLQsNC/0L7QtNCw0YbQuCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwPlxuIgorCisjLiBALWV4cGFuZGVkOiAoVGhlcmUgYXJlICVOIGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLilcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIyNAorbXNnaWQgIiIKKyIoVGhlcmUgYXJlICVOIEBpcyBjb250YWluaW5nIEBtIEBicy4pXG4iCisiXG4iCittc2dzdHIgIiIKKyIo0JjQvNCwICVOINC4LdGH0LLQvtGAKNC+0LIp0LAg0LrQvtGY0Lgg0YHQsNC00YDQttC4KNC1KSDQvdC10LrQvtC70LjQutC+INC/0YPRgtCwINC30LDRgtGA0LDQttC10L3QtSDQsdC70L7QutC+0LLQtS4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQvdC10LrQvtC70LjQutC+INC/0YPRgtCwINC30LDRgtGA0LDQttC10L3QuCDQsdC70L7QutC+0LLQuCDRgdGDINCy0LXRmyDQv9C+0L3QvtCy0L4g0LTQvtC00LXRmdC10L3QuCDQuNC70Lgg0LrQu9C+0L3QuNGA0LDQvdC4LlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC60LvQvtC90LjRgNCw0Lwg0LTQsNGC0L7RgtC10LrRgzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4CisjLCBmdXp6eQorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAi0J/RgNC+0LvQsNC3IDNBOiDQntC/0YLQuNC80LjQt9GD0ZjQtdC8INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNC1XG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBvcHRpbWl6ZSBleHRlbnQgdHJlZSAlcCAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBAeCB0cmVlICVwICglaSk6ICVtXG4iCittc2dzdHIgItCd0LjRgdCw0Lwg0YPRgdC/0LXQviDQtNCwINC+0L/RgtC40LzQuNC30YPRmNC10Lwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8IOKAniVx4oCcICglZCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIywgZnV6enkKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgItCe0L/RgtC40LzQuNC30LDRhtC40ZjQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsDogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzMKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogbWF4IGV4dGVudCB0cmVlIGRlcHRoIHRvbyBsYXJnZSAoJWI7IGV4cGVjdGVkPSVjKS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAiMi4g0L/RgNC+0LvQsNC3OiDQn9GA0L7QstC10YDQsNCy0LDQvCDRgdGC0YDRg9C60YLRg9GA0YMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LBcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJAbiBAaSBudW1iZXIgZm9yICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAi0L3QtdC40YHQv9GA0LDQstCw0L0g0LHRgNC+0Zgg0Lgt0YfQstC+0YDQsCDQt9CwIOKAni7igJwg0YMg4oCeJWnigJwg0Lgt0YfQstC+0YDRgyDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgItGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINC40LzQsCDQvdC10LjRgdC/0YDQsNCy0LDQvSDQuC3Rh9Cy0L7RgCDQsdGALjogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorbXNnaWQgIkBFIGhhcyBARC91bnVzZWQgQGkgJURpLiAgIgorbXNnc3RyICLRg9C90L7RgSDigJ4lRG7igJwg0YMg4oCeJXDigJwgKCVpKSDQuNC80LAg0L7QsdGA0LjRgdCw0L0v0L3QtdC60L7RgNC40YjRm9C10L3QuCDQuC3Rh9Cy0L7RgCAlRGkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvICcuJyAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTAKK21zZ2lkICJARSBATCB0byAnLicgICIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0ZjQtSDQstC10LfQsCDRgdCwIOKAni7igJwgICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIiIKKyLRg9C90L7RgSDigJ4lRG7igJwg0YMg4oCeJXDigJwgKCVpKSDRg9C60LDQt9GD0ZjQtSDQvdCwINC4LdGH0LLQvtGAICglRGkpINC60L7RmNC4INGB0LUg0L3QsNC70LDQt9C4INGDINC70L7RiNC10LwgIgorItCx0LvQvtC60YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAlUCAoJURpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzIwCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgItGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINGY0LUg0LLQtdC30LAg0LrQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzRgyDigJ4lUOKAnCAoJURpKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyNQorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0ZjQtSDQstC10LfQsCDQutCwINC60L7RgNC10L3QvtC8INC4LdGH0LLQvtGA0YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzMwCittc2dpZCAiQEUgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0LjQvNCwINC90LXQtNC+0LfQstC+0ZnQtdC90Lgg0LfQvdCw0Log0YMg0L3QsNC30LjQstGDLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAi0J3QtdC00L7RgdGC0LDRmNC1wqDigJ4u4oCcINGDIOKAniVp4oCcINC4LdGH0LLQvtGA0YMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgItCd0LXQtNC+0YHRgtCw0ZjRg8Kg4oCeLi7igJwg0YMg4oCeJWnigJwg0Lgt0YfQstC+0YDRgyDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsC5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICIiCisi0J/RgNCy0Lgg0YPQvdC+0YEg4oCeJURu4oCcICjQuC3Rh9Cy0L7RgD0lRGkpINGDIOKAniVp4oCcINC4LdGH0LLQvtGA0YMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAgKCVwKSDRgtGA0LXQsdCwINCx0LjRgtC4ICIKKyLigJ4u4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiIgorItCU0YDRg9Cz0Lgg0YPQvdC+0YEg4oCeJURu4oCcICjQuC3Rh9Cy0L7RgD0lRGkpINGDIOKAniVp4oCcINC4LdGH0LLQvtGA0YMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0YLRgNC10LHQsCDQsdC40YLQuCDigJ4uLuKAnFxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICLigJ5pX2ZhZGRy4oCcINC30LAg0Lgt0YfQstC+0YAg4oCeJWnigJwgKCVRKSDRmNC1IOKAniVJRuKAnCwg0YLRgNC10LHQsCDQsdC40YLQuCDQvdGD0LvQsC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjAKK21zZ2lkICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKK21zZ3N0ciAi4oCeaV9maWxlX2FjbOKAnCDQt9CwINC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0ZjQtSDigJ4lSWbigJwsINGC0YDQtdCx0LAg0LHQuNGC0Lgg0L3Rg9C70LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICLigJ5pX2Rpcl9hY2zigJwg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg4oCeJUlk4oCcLCDRgtGA0LXQsdCwINCx0LjRgtC4INC90YPQu9CwLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIuKAnmlfZnJhZ+KAnCDQt9CwINC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0ZjQtSDigJ4lTuKAnCwg0YLRgNC10LHQsCDQsdC40YLQuCDQvdGD0LvQsC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mc2l6ZSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3NQorbXNnaWQgImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIuKAnmlfZnNpemXigJwg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg4oCeJU7igJwsINGC0YDQtdCx0LAg0LHQuNGC0Lgg0L3Rg9C70LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwgKCVRKSDQuNC80LAg0L3QtdC40YHQv9GA0LDQstCw0L0g0YDQtdC20LjQvCAoJUltKS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBjb3JydXB0ZWRcbiIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAsICVCLCDQv9C+0LzQtdGA0LDRmCDigJ4lTuKAnDog0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8INGY0LUg0L7RiNGC0LXRm9C10L1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiIgorItC4LdGH0LLQvtGAIOKAniVp4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwLCAlQiwg0L/QvtC80LXRgNCw0Zgg4oCeJU7igJw6INC90LDQt9C40LIg0LTQsNGC0L7RgtC10LrQtSDRmNC1INC/0YDQtdC00YPQs1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINC40LzQsCDQvdC10LTQvtC00LXRmdC10L0gJUIuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIiIKKyLRg9C90L7RgSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDigJ4u4oCcINGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0YHQtSDQvdC1INC30LDQstGA0YjQsNCy0LAg0L3QsCDQndCY0KjQotCQXG4iCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwNQorIywgYy1mb3JtYXQKK21zZ2lkICInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiIgorItGD0L3QvtGBINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwIOKAni4u4oCcINGDINC4LdGH0LLQvtGA0YMg4oCeJWnigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0YHQtSDQvdC1INC30LDQstGA0YjQsNCy0LAg0L3QsCAiCisi0J3QmNCo0KLQkFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0ZjQtSDQvdC10LTQvtC30LLQvtGZ0LXQvdC4INC30L3QsNC60L7QstC90Lgg0YPRgNC10ZLQsNGYLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg0L3QtdC00L7Qt9Cy0L7RmdC10L3QuCDQsdC70L7QuiDRg9GA0LXRktCw0ZguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0ZjQtSDRg9C00LLQvtGB0YLRgNGD0YfQtdC90Lgg0YPQvdC+0YEg4oCeLuKAnC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDI1Cittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuLicgQGUuXG4iCittc2dzdHIgItGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINGY0LUg0YPQtNCy0L7RgdGC0YDRg9GH0LXQvdC4INGD0L3QvtGBIOKAni4u4oCcLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAi0KPQvdGD0YLRgNCw0YjRmtCwINCz0YDQtdGI0LrQsDog0L3QtSDQvNC+0LPRgyDQtNCwINC90LDRktC10Lwg0L/QvtC00LDRgtC60LVf0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0LfQsCDigJ4laeKAnC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgcmVjX2xlbiBvZiAlRHIsIHNob3VsZCBiZSAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDM1Cittc2dpZCAiQEUgaGFzIHJlY19sZW4gb2YgJURyLCBAcyAlTi5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0LjQvNCwINC00YPQttC40L3Rg1/Qt9Cw0L/QuNGB0LAgJURyLCDRgtGA0LXQsdCwINCx0LjRgtC4ICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICLQs9GA0LXRiNC60LAg0LTQvtC00LXQu9C1INGB0YLRgNGD0LrRgtGD0YDQtSDQuC3QsdGA0L7RmNCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QvtC90LDQstGZ0LDRmtCwINGDINCx0LvQvtC60L7QstC40LzQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINCx0LvQvtC60LAg4oCeJWLigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAgKNC4LdGH0LLQvtGAIOKAniVp4oCcKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QuNGB0LDRmtCwINCx0LvQvtC60LAg4oCeJWLigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAgKNC4LdGH0LLQvtGAIOKAniVp4oCcKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICLQs9GA0LXRiNC60LAg0LTQvtC00LXQu9C1INC90L7QstC+0LMg0LHQu9C+0LrQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQt9CwINC4LdGH0LLQvtGAIOKAniVp4oCcICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGA0LDQt9C80LXRiNGC0LDRmtCwINC4LdGH0LLQvtGA0LAg4oCeJWnigJw6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0LfQsCDigJ4u4oCcINGDIOKAniVw4oCcICglaSkg0ZjQtSDQstC10LvQuNC6LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg0L3QtdC00L7Qt9Cy0L7RmdC10L3QuCDQn9Cj0J/QmC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgItC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0ZjQtSDQvdC10LTQvtC30LLQvtGZ0LXQvdCwINC/0YDQuNC60ZnRg9GH0L3QuNGG0LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0LLRgNGB0YLRgyDQtNCw0YLQvtGC0LXQutC1INGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINC90LAg4oCeJU7igJwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDkwCittc2dpZCAiQEUgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgQHMgJU4pLlxuIgorbXNnc3RyICIiCisi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0LjQvNCwINC90LXQuNGB0L/RgNCw0LLQvdGDINCy0YDRgdGC0YMg0LTQsNGC0L7RgtC10LrQsCAo0LHQtdGI0LUg4oCeJUR04oCcLCDRgtGA0LXQsdCwINCx0LjRgtC4ICIKKyLigJ4lTuKAnCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDk1Cittc2dpZCAiQEUgaGFzIGZpbGV0eXBlIHNldC5cbiIKK21zZ3N0ciAi0YPQvdC+0YEg4oCeJURu4oCcINGDIOKAniVw4oCcICglaSkg0LjQvNCwINC/0L7RgdGC0LDQstGZ0LXQvdGDINCy0YDRgdGC0YMg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICLRg9C90L7RgSDigJ4lRG7igJwg0YMg4oCeJXDigJwgKCVpKSDQuNC80LAg0L3QsNC30LjQsiDQvdGD0LvRgtC1INC00YPQttC40L3QtS5cbiIKKworIy4gQC1leHBhbmRlZDogU3ltbGluayAlUSAoaW5vZGUgIyVpKSBpcyBpbnZhbGlkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDUKK21zZ2lkICJTeW1saW5rICVRIChAaSAjJWkpIGlzIEBuLlxuIgorbXNnc3RyICLQodC40LzQsdC+0LvQuNGH0LrQsCDQstC10LfQsCDigJ4lUeKAnCAo0Lgt0YfQstC+0YAg4oCeJWnigJwpINGY0LUg0L3QtdC40YHQv9GA0LDQstC90LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAi0LHQu9C+0Log0L/RgNC+0YjQuNGA0LXQvdC+0LMg0LDRgtGA0LjQsdGD0YLQsCDQt9CwINC4LdGH0LLQvtGAIOKAniVp4oCcICglUSkg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvSAoJUlmKS5cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiIgorItGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGB0LDQtNGA0LbQuCDQstC10LvQuNC60LUg0LTQsNGC0L7RgtC10LrQtSwg0LDQu9C4INC80YMg0L3QtdC00L7RgdGC0LDRmNC1INC30LDRgdGC0LDQstC40YbQsCAiCisi4oCeTEFSR0VfRklMReKAnCDRgyDRgdGD0L/QtdGALdCx0LvQvtC60YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAi0L/RgNC+0LHQu9C10Lwg0YMg0Lgt0YfQstC+0YDRgyDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JA6IOKAniVC4oCcINC90LXQvNCwINGD0L/Rg9GC0YNcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAi0L/RgNC+0LHQu9C10Lwg0YMg0Lgt0YfQstC+0YDRgyDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JA6IOKAniVC4oCcINGY0LUg0LTQstC+0YPQv9GD0YLQvdC+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIiIKKyLQv9GA0L7QsdC70LXQvCDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVk4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINClLdCh0KLQkNCR0JvQkDog4oCeJULigJwg0LjQvNCwINC70L7RiCDQvdCw0ZjQvNCw0ZrQuCDRhdC10YhcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC8INGDINC4LdGH0LLQvtGA0YMg4oCeJWTigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQOiDigJ4lQuKAnCDQuNC80LAg0LvQvtGIINC90LDRmNCy0LXRm9C4INGF0LXRiFxuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDAKK21zZ2lkICJAbiBAaCAlZCAoJXEpLiAgIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvSAoJXEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICIiCisi0L/RgNC+0LHQu9C10Lwg0YMg0Lgt0YfQstC+0YDRgyDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JAgKCVxKTog0LvQvtGIINCx0YDQvtGYINCx0LvQvtC60LAgJWIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICIiCisi0L/RgNC+0LHQu9C10Lwg0YMg0Lgt0YfQstC+0YDRgyDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JA6INC60L7RgNC10L3QuCDRh9Cy0L7RgCDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBsaW1pdCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICIiCisi0L/RgNC+0LHQu9C10Lwg0YMg0Lgt0YfQstC+0YDRgyDigJ4lZOKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQpS3QodCi0JDQkdCb0JA6IOKAniVC4oCcINC40LzQsCDQvdC10LjRgdC/0YDQsNCy0L3QviAiCisi0L7Qs9GA0LDQvdC40YfQtdGa0LUgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgY291bnQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGNvdW50ICglTilcbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC8INGDINC4LdGH0LLQvtGA0YMg4oCeJWTigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQOiDigJ4lQuKAnCDQuNC80LAg0L3QtdC40YHQv9GA0LDQstCw0L0g0LHRgNC+0ZggIgorIiglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIiIKKyLQv9GA0L7QsdC70LXQvCDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVk4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINClLdCh0KLQkNCR0JvQkDog4oCeJULigJwg0LjQvNCwINC90LXRg9GA0LXRktC10L3RgyDRhdC10YggIgorItGC0LDQsdC10LvRg1xuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgZGVwdGggKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC8INGDINC4LdGH0LLQvtGA0YMg4oCeJWTigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQOiDigJ4lQuKAnCDQuNC80LAg0L3QtdC40YHQv9GA0LDQstC90YMg0LTRg9Cx0LjQvdGDICIKKyIoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgItCd0LDRktC+0YUg0YPQtNCy0L7RgdGC0YDRg9GH0LXQvdC4INGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4KKyMuIEAtZXhwYW5kZWQ6IFJlbmFtZSB0byAlcworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorbXNnaWQgIiIKKyJARSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuIgorIlJlbmFtZSB0byAlcyIKK21zZ3N0ciAiIgorItGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINC40LzQsCDQvdC1LdGY0LXQtNC40L3RgdGC0LLQtdC9INC90LDQt9C40LIg0LTQsNGC0L7RgtC10LrQtS5cbiIKKyLQn9GA0LXQuNC80LXQvdGD0ZjQtdC8INCz0LAg0YMg4oCeJXPigJwiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCd0LDRktC+0YUg0YPQtNCy0L7RgdGC0YDRg9GH0LXQvdC4INGD0L3QvtGBIOKAniVEbuKAnC5cbiIKKyJcdNCe0LfQvdCw0YfQsNCy0LDQvCDigJ4lcOKAnCAoJWkpINC30LAg0L/QvtC90L7QstC90YMg0LjQt9Cz0YDQsNC00ZrRgy5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogaV9ibG9ja3NfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTQKK21zZ2lkICJpX2Jsb2Nrc19oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAi4oCeaV9ibG9ja3NfaGnigJwg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg4oCeJU7igJwsINGC0YDQtdCx0LAg0LHQuNGC0Lgg0L3Rg9C70LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAi0J3QtdC+0YfQtdC60LjQstCw0L3QuCDQsdC70L7QuiDRgyDQuC3Rh9Cy0L7RgNGDIOKAniVk4oCcINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINClLdCh0KLQkNCR0JvQkCAoJXEpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGluIGdyb3VwICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDMKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBpbiBAZyAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorItGD0L3QvtGBIOKAniVEbuKAnCDRgyDigJ4lcOKAnCAoJWkpINGD0L/Rg9Gb0YPRmNC1INC90LAg0Lgt0YfQstC+0YAg4oCeJURp4oCcINGDINCz0YDRg9C/0Lgg4oCeJWfigJwg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L3QviAiCisi4oCeX0lOT0RFX1VOSU5JVOKAnC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIiIKKyLRg9C90L7RgSDigJ4lRG7igJwg0YMg4oCeJXDigJwgKCVpKSDRg9C/0YPRm9GD0ZjQtSDQvdCwINC4LdGH0LLQvtGAIOKAniVEaeKAnCDQvdCw0ZLQtdC9INGDINCz0YDRg9C/0Lgg4oCeJWfigJwgIgorItC90LXQutC+0YDQuNGI0ZvQtdC90LUg0L7QsdC70LDRgdGC0Lgg0Lgt0YfQstC+0YDQsC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworbXNnaWQgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgIuKAnmlfZmlsZV9hY2xfaGnigJwg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJVEpINGY0LUg4oCeJU7igJwsINGC0YDQtdCx0LAg0LHQuNGC0Lgg0L3Rg9C70LAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC8INGDINC4LdGH0LLQvtGA0YMg4oCeJWTigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQOiDQutC+0YDQtdC90Lgg0YfQstC+0YAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC8INGDINC4LdGH0LLQvtGA0YMg4oCeJWTigJwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0KUt0KHQotCQ0JHQm9CQOiDQutC+0YDQtdC90Lgg0YfQstC+0YAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyOAorIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgaGFzIG5vIGNoZWNrc3VtLlxuIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCwgJUIsINC/0L7QvNC10YDQsNGYIOKAniVO4oCcOiDQtNC40YDQtdC60YLQvtGA0LjRmNGD0Lwg0ZjQtSDQvtGI0YLQtdGb0LXQvVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVuY3J5cHRlZCBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIHRvbyBzaG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQ4Cittc2dpZCAiRW5jcnlwdGVkIEBFIGlzIHRvbyBzaG9ydC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjU1Cittc2dpZCAiUGFzcyAzOiBDaGVja2luZyBAZCBjb25uZWN0aXZpdHlcbiIKK21zZ3N0ciAiMy4g0L/RgNC+0LvQsNC3OiDQn9GA0L7QstC10YDQsNCy0LDQvCDQv9C+0LLQtdC30LjQstC+0YHRgiDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsFxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2MAorbXNnaWQgIkByIG5vdCBhbGxvY2F0ZWQuICAiCittc2dzdHIgItC60L7RgNC10L3QuCDQuC3Rh9Cy0L7RgCDQvdC40ZjQtSDQtNC+0LTQtdGZ0LXQvS4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAi0J3QtdC80LAg0LzQtdGB0YLQsCDRgyDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzRgyDQuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+LiAgIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDigJ4laeKAnCAoJXApINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINC90LjRmNC1INC/0L7QstC10LfQsNC9XG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAi0L3QuNGB0LDQvCDQvdCw0YjQsNC+IOKAni/QuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+4oCcLiAgIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgc2hvdWxkIGJlICVxICglZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4MAorbXNnaWQgIicuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIgorbXNnc3RyICLigJ4uLuKAnCDRgyDigJ4lUeKAnCAoJWkpINGY0LUg4oCeJVDigJwgKCVqKSwg0YLRgNC10LHQsCDQsdC40YLQuCDigJ4lceKAnCAoJWQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1Cittc2dpZCAiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIgorbXNnc3RyICIiCisi4oCeL9C40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L7igJwg0ZjQtSDQu9C+0Ygg0LjQu9C4INC90LUg0L/QvtGB0YLQvtGY0LguICDQndC1INC80L7Qs9GDINC/0L7QvdC+0LLQviDQtNCwINGB0LUg0L/QvtCy0LXQttC10LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkIG5vdCBleHBhbmQgL2xvc3QrZm91bmQ6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgZXhwYW5kIC9AbDogJW1cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGA0LDRiNC40YDQuNC8IOKAni/QuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+4oCcOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IHJlY29ubmVjdCAlaTogJW1cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQv9C+0L3QvtCy0L4g0LTQsCDQv9C+0LLQtdC20LXQvCDigJ4laeKAnDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL2xvc3QrZm91bmQ6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvQGw6ICVtXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDQutCw0LTQsCDRgdCw0Lwg0L/QvtC60YPRiNCw0L4g0LTQsCDQvdCw0ZLQtdC8IOKAni/QuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+4oCcOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Jsb2NrOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AYjogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiIgorItC10LrRgdGCMtGB0LRf0L3QvtCy0Lhf0LHQu9C+0Lo6IOKAniVt4oCcINC60LDQtNCwINGB0LDQvCDQv9C+0LrRg9GI0LDQviDQtNCwINC90LDQv9GA0LDQstC40Lwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8IOKAni/QuNC30LPRg9Cx0ZnQtdC90L4iCisiK9C90LDRktC10L3QvuKAnFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2lub2RlOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AaTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiIgorItC10LrRgdGCMtGB0LRf0L3QvtCy0Lhf0Lgt0YfQstC+0YA6IOKAniVt4oCcINC60LDQtNCwINGB0LDQvCDQv9C+0LrRg9GI0LDQviDQtNCwINC90LDQv9GA0LDQstC40Lwg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8IOKAni8iCisi0LjQt9Cz0YPQsdGZ0LXQvdC+K9C90LDRktC10L3QvuKAnFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICIiCisi0LXQutGB0YIy0YHQtF/QvdC+0LLQuF/QtNC40YBf0LHQu9C+0Lo6IOKAniVt4oCcINC60LDQtNCwINGB0LDQvCDQv9C+0LrRg9GI0LDQviDQtNCwINC90LDQv9GA0LDQstC40Lwg0L3QvtCy0Lgg0LHQu9C+0LogIgorItC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiIgorItC10LrRgdGCMtGB0LRf0L/QuNGI0Lhf0LTQuNGAX9Cx0LvQvtC6OiDigJ4lbeKAnCDQutCw0LTQsCDRgdCw0Lwg0L/QuNGB0LDQviDQsdC70L7QuiDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQt9CwIOKAni/QuNC30LPRg9Cx0ZnQtdC90L4iCisiK9C90LDRktC10L3QvuKAnFxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBhZGp1c3RpbmcgaW5vZGUgY291bnQgb24gaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGFkanVzdGluZyBAaSBjb3VudCBvbiBAaSAlaVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/RgNC40LvQuNC60L7QvCDQtNC+0YLQtdGA0LjQstCw0ZrQsCDQsdGA0L7RmNCwINC4LdGH0LLQvtGA0LAg0L3QsCDQuC3Rh9Cy0L7RgNGDIOKAniVp4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7Qs9GDINC00LAg0L/QvtC/0YDQsNCy0LjQvCDQv9C+0LvQsNC30LjRiNGC0LUg0Lgt0YfQstC+0YDQsCDigJ4laeKAnDogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7Qs9GDINC00LAg0L/QvtC/0YDQsNCy0LjQvCDQv9C+0LvQsNC30LjRiNGC0LUg0Lgt0YfQstC+0YDQsCDigJ4laeKAnDog0J3QtSDQvNC+0LPRgyDQtNCwINC90LDRktC10Lwg0YPQvdC+0YEg0L/QvtC70LDQt9C90L7QsyAiCisi0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LBcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgcm9vdCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHJvb3QgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGB0YLQstCw0YDQsNGa0LAg0LrQvtGA0LXQvdC+0LMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGB0YLQstCw0YDQsNGa0LAg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg4oCeL9C40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L7igJwgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgItC60L7RgNC10L3QuCDQuC3Rh9Cy0L7RgCDQvdC40ZjQtSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0Lw7INC/0YDQtdC60LjQtNCw0LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQvdCw0YHRgtCw0LLQuNC8INCx0LXQtyDQutC+0YDQtdC90L7QsyDQuC3Rh9Cy0L7RgNCwLlxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBub3QgYSBkaXJlY3RvcnkgKGlubz0laSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIi9AbCBpcyBub3QgYSBAZCAoaW5vPSVpKVxuIgorbXNnc3RyICLigJ4v0LjQt9Cz0YPQsdGZ0LXQvdC+K9C90LDRktC10L3QvuKAnCDQvdC40ZjQtSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LwgKNC4LdGH0LLQvtGAPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorIywgZnV6enkKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgItCh0LvQuNC60LAgKCVzKSDRmNC1INGI0LjRhNGA0L7QstCw0L3QsFxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgItCf0YDQvtC70LDQtyAzQTog0J7Qv9GC0LjQvNC40LfRg9GY0LXQvCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQtVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgItCd0LjRgdCw0Lwg0YPRgdC/0LXQviDQtNCwINGB0YLQstC+0YDQuNC8INC/0YDQuNGB0YLRg9C/0L3QuNC6IOKAntC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNC4X9GDX9GF0LXRiOKAnDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODA3Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIGRpcmVjdG9yeSAlcSAoJWQpOiAlbVxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQvtC/0YLQuNC80LjQt9GD0ZjQtdC8INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvCDigJ4lceKAnCAoJWQpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgItCe0L/RgtC40LzQuNC30LDRhtC40ZjQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsDogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAi0J/RgNC+0LvQsNC3IDQ6INCf0YDQvtCy0LXRgNCw0LLQsNC8INCx0YDQvtGY0LXQstC1INGD0L/Rg9GC0LBcbiIKKworIy4gQC1leHBhbmRlZDogdW5hdHRhY2hlZCB6ZXJvLWxlbmd0aCBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEB6IEBpICVpLiAgIgorbXNnc3RyICLQvdC1INC30LDQutCw0YfQtdC9INC4LdGH0LLQvtGAIOKAniVp4oCcINC90YPQu9GC0LUg0LTRg9C20LjQvdC1LiAgIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICLQvdC1INC30LDQutCw0YfQtdC9INC4LdGH0LLQvtGAIOKAniVp4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgItCx0YDQvtGYINGD0L/Rg9GC0LAg0Lgt0YfQstC+0YDQsCDigJ4laeKAnCDRmNC1ICVJbCwg0YLRgNC10LHQsCDQsdC40YLQuCAlTi4gICIKKworIy4gQC1leHBhbmRlZDogV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbgorIy4gQC1leHBhbmRlZDogXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbgorIy4gQC1leHBhbmRlZDogaW5vZGVfbGlua19pbmZvWyVpXSBpcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IHNob3VsZCBiZSB0aGUgc2FtZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4Cittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKyLQo9Cf0J7Ql9Ce0KDQldCK0JU6INCT0KDQldCo0JrQkCDQn9Cg0J7Qk9Cg0JDQnNCY0KDQkNCK0JAg0KMg4oCeRTJGU0NL4oCcLdGDIVxuIgorIlx00JjQm9CYINCd0JXQmtCYINCi0KPQn9CQ0JLQmtCeICjQnNCe0JbQlNCQINCS0JgpINCf0KDQntCS0JXQoNCQ0JLQkCDQn9Cg0JjQmtCQ0KfQldCd0JggKNCW0JjQktCYKSDQodCY0KHQotCV0Jwg0JTQkNCi0J7QotCV0JrQkFxuIgorItC/0L7QtNCw0YLQsNC6X9Cy0LXQt9C1X9C4LdGH0LLQvtGA0LBbJWldINGY0LUgJU4sXHTigJ7QuC3Rh9Cy0L7RgC7QsdGA0L7RmF/QuF/QstC10LfQteKAnCDRmNC1ICVJbC4g0KLRgNC10LHQsNC70L4g0LHQuCDQtNCwICIKKyLQsdGD0LTRgyDQuNGB0YLQuCFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICLQn9GA0L7Qu9Cw0LcgNTog0J/RgNC+0LLQtdGA0LDQstCw0Lwg0L/QvtC00LDRgtC60LUg0YHQsNC20LXRgtC60LAg0LPRgNGD0L/QtVxuIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgItCf0L7Qv9GD0ZrQsNCy0LDRmtC1INC90LAg0LrRgNCw0ZjRgyDQsdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNCwINC90LjRmNC1INC/0L7RgdGC0LDQstGZ0LXQvdC+LiAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhZGRpbmcgYXQgZW5kIG9mIGJsb2NrIGJpdG1hcCBpcyBub3Qgc2V0LiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg2OAorbXNnaWQgIlBhZGRpbmcgYXQgZW5kIG9mIEBiIEBCIGlzIG5vdCBzZXQuICIKK21zZ3N0ciAi0J/QvtC/0YPRmtCw0LLQsNGa0LUg0L3QsCDQutGA0LDRmNGDINCx0LjRgtC80LDQv9C1INCx0LvQvtC60LAg0L3QuNGY0LUg0L/QvtGB0YLQsNCy0ZnQtdC90L4uICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgItGA0LDQt9C70LjQutC1INCx0LjRgtC80LDQv9C1INCx0LvQvtC60L7QstCwOiAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OTMKK21zZ2lkICJAaSBAQiBkaWZmZXJlbmNlczogIgorbXNnc3RyICLRgNCw0LfQu9C40LrQtSDQsdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNC+0LLQsDogIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxMworbXNnaWQgIkZyZWUgQGlzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiIgorItCR0YDQvtGYINGB0LvQvtCx0L7QtNC90LjRhSDQuC3Rh9Cy0L7RgNC+0LLQsCDRmNC1INC/0L7Qs9GA0LXRiNCw0L0g0LfQsCDQs9GA0YPQv9GDINCx0YAuICVnICglaSwg0LjQt9Cx0YDQvtGY0LDQvdC+PSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTgKK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgItCR0YDQvtGYINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINGY0LUg0L/QvtCz0YDQtdGI0LDQvSDQt9CwINCz0YDRg9C/0YMg0LHRgC4gJWcgKCVpLCDQuNC30LHRgNC+0ZjQsNC90L49JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICLQkdGA0L7RmCDRgdC70L7QsdC+0LTQvdC40YUg0Lgt0YfQstC+0YDQvtCy0LAg0ZjQtSDQv9C+0LPRgNC10YjQsNC9ICglaSwg0LjQt9Cx0YDQvtGY0LDQvdC+PSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIiIKKyLQkdGA0L7RmCDRgdC70L7QsdC+0LTQvdC40YUg0LHQu9C+0LrQvtCy0LAg0ZjQtSDQv9C+0LPRgNC10YjQsNC9INC30LAg0LPRgNGD0L/RgyDQsdGALiAlZyAoJWksINC40LfQsdGA0L7RmNCw0L3Qvj0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzMworbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgItCR0YDQvtGYINGB0LvQvtCx0L7QtNC90LjRhSDQsdC70L7QutC+0LLQsCDRmNC1INC/0L7Qs9GA0LXRiNCw0L0gKCVpLCDQuNC30LHRgNC+0ZjQsNC90L49JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQUk9HUkFNTUlORyBFUlJPUjogZmlsZXN5c3RlbSAoIyVOKSBiaXRtYXAgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgYml0bWFwIAorIy4gQC1leHBhbmRlZDogZW5kcG9pbnRzICglaSwgJWopXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorbXNnaWQgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgQEIgIgorImVuZHBvaW50cyAoJWksICVqKVxuIgorbXNnc3RyICIiCisi0JPQoNCV0KjQmtCQINCf0KDQntCT0KDQkNCc0JjQoNCQ0IrQkDog0LrRgNCw0ZjRmtC1INGC0LDRh9C60LUgKCViLCAlYykg0LHQuNGC0LzQsNC/0LUg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCAo0LHRgC4gJU4pICIKKyLQvdC1INC+0LTQs9C+0LLQsNGA0LDRmNGDINC40LfRgNCw0YfRg9C90LDRgtC40Lwg0LrRgNCw0ZjRmtC40Lwg0YLQsNGH0LrQsNC80LAg0LHQuNGC0LzQsNC/0LUgKCVpLCAlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgItCj0L3Rg9GC0YDQsNGI0ZrQsCDQs9GA0LXRiNC60LA6INC/0YDQuNCy0LjQtNC90L4g0LTQvtGC0LXRgNGD0ZjQtdC8INC60YDQsNGYINCx0LjRgtC80LDQv9C1ICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0YPQvNC90L7QttCw0LLQsNGa0LAg0YMg0LHQuNGC0LzQsNC/0Lgg0LfQsNC80LXQvdC1INC4LdGH0LLQvtGA0LA6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGD0LzQvdC+0LbQsNCy0LDRmtCwINGDINCx0LjRgtC80LDQv9C4INC30LDQvNC10L3QtSDQsdC70L7QutCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisi0LHQu9C+0Loo0L7QstC4KSDQs9GA0YPQv9C1IOKAniVn4oCcINGY0LUo0YHRgykg0YMg0YPQv9C+0YLRgNC10LHQuCDQsNC70Lgg0ZjQtSDQs9GA0YPQv9CwINC+0LfQvdCw0YfQtdC90LAg4oCeQkxPQ0tfVU5JTklU4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKyLQuC3Rh9Cy0L7RgCjQvtCy0LgpINCz0YDRg9C/0LUg4oCeJWfigJwg0ZjQtSjRgdGDKSDRgyDRg9C/0L7RgtGA0LXQsdC4INCw0LvQuCDRmNC1INCz0YDRg9C/0LAg0L7Qt9C90LDRh9C10L3QsCAiCisi4oCeSU5PREVfVU5JTklU4oCcXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBpIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiIEBCIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY3JlYXRlIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwMQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICLQn9C+0L3QvtCy0L4g0L3QsNC/0YDQsNCy0Lgg0LTQvdC10LLQvdC40LoiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICLQntGB0LLQtdC20Lgg0L/QvtC00LDRgtC60LUg0LrQstC+0YLQtSDQt9CwINCy0YDRgdGC0YMg0LrQstC+0YLQtSDigJ4lTuKAnCIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0L/QvtC00LDRgtCw0LrQsCDRgdGD0LzQtSDQv9GA0L7QstC10YDQtSDQs9GA0YPQv9C1INCx0LvQvtC60LBcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINC/0LjRgdCw0ZrQsCDQv9C+0LTQsNGC0LDQutCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LA6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9GA0LXRgdC40L/QsNGa0LAg0L/QuNGB0LDRmtCwINC90LAg0YHQutC70LDQtNC40YjQvdC4INGD0YDQtdGS0LDRmDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2CisjLCBmdXp6eQorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAi0J7RgdCy0LXQttC4INC/0L7QtNCw0YLQutC1INC60LLQvtGC0LUg0LfQsCDQstGA0YHRgtGDINC60LLQvtGC0LUg4oCeJU7igJwiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgItCd0LXQv9C+0LfQvdCw0YLQsCDQs9GA0LXRiNC60LAg0LrQvtC00LAgKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAi0JfQkNCd0JXQnNCQ0KDQldCd0J4iCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo3OQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKK21zZ3N0ciAi0JrQvtGA0LjRiNGb0LXQvdCwINC80LXQvNC+0YDQuNGY0LA6ICVkLCDQv9GA0L7RgtC10LrQu9C+INCy0YDQtdC80LU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgInNpemUgb2YgaW5vZGU9JWRcbiIKK21zZ3N0ciAi0LLQtdC70LjRh9C40L3QsCDQuC3Rh9Cy0L7RgNCwPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0LrRgNC10YLQsNGa0LAg0YHQutC10L3QuNGA0LDRmtCwINC4LdGH0LLQvtGA0LAiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtCx0LDQstGZ0LDRmtCwINGB0LrQtdC90LjRgNCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0LfQuNCy0LDRmtCwIOKAnmV4dDJmc19ibG9ja19pdGVyYXRl4oCcINC30LAg0Lgt0YfQstC+0YAg4oCeJWTigJwiCisKKyM6IGUyZnNjay9zdXBlci5jOjIxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0L7Qt9C40LLQsNGa0LAg4oCeZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDLigJwg0LfQsCDQuC3Rh9Cy0L7RgCDigJ4lZOKAnCIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAi0KHQutGA0LDRm9GD0ZjQtdC8IgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAi0KfQuNGB0YLQuNC8IgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyLQo9C/0L7RgtGA0LXQsdCwOiAlcyBbLXBhbnlyY2RmdnRERlZdIFstYiDRgdGD0L/QtdGALdCx0LvQvtC6XSBbLUIg0LLQtdC70LjRh9C40L3QsF/QsdC70L7QutCwXVxuIgorIlx0XHRbLUkg0LHQu9C+0LrQvtCy0Lhf0LzQtdGS0YPQvNC10LzQvtGA0LjRmNC1X9C4LdGH0LLQvtGA0LBdIFstUCDQstC10LvQuNGH0LjQvdCwX9C4LdGH0LLQvtGA0LBf0L/RgNC+0YbQtdGB0LBdXG4iCisiXHRcdFstbHwtTCDQtNCw0YLQvtGC0LXQutCwX9C70L7RiNC40YVf0LHQu9C+0LrQvtCy0LBdIFstQyDQvtC/0LjRgdC90LjQul/QtNCw0YLQvtGC0LXQutC1XSBbLWogIgorItGB0L/QvtGZ0L3QuF/QtNC90LXQstC90LjQul1cbiIKKyJcdFx0Wy1FINC00L7QtNCw0YLQvdC1X9C+0L/RhtC40ZjQtV0g0YPRgNC10ZLQsNGYXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODIKK21zZ2lkICIiCisiXG4iCisiRW1lcmdlbmN5IGhlbHA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpYyByZXBhaXIgKG5vIHF1ZXN0aW9ucylcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlc3lzdGVtXG4iCisiIC15ICAgICAgICAgICAgICAgICAgIEFzc3VtZSBcInllc1wiIHRvIGFsbCBxdWVzdGlvbnNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQ2hlY2sgZm9yIGJhZCBibG9ja3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBiYWRibG9jayAiCisibGlzdFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZSBjaGVja2luZyBldmVuIGlmIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGNsZWFuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQkdGA0LfQsCDQv9C+0LzQvtGbOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICDQkNGD0YLQvtC80LDRgtGB0LrQsCDQv9C+0L/RgNCw0LLQutCwICjQsdC10Lcg0L/QuNGC0LDRmtCwKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICDQndC1INGD0L3QvtGB0Lgg0L3QuNC60LDQutCy0LUg0LjQt9C80LXQvdC1INGDINGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwXG4iCisiIC15ICAgICAgICAgICAgICAgICAgINCf0L7QtNGA0LDQt9GD0LzQtdCy0LAg4oCe0LTQsOKAnCDQt9CwINGB0LLQsCDQv9C40YLQsNGa0LBcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAg0J/RgNC+0LLQtdGA0LDQstCwINC00LAg0LvQuCDQuNC80LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCDQuFxuIgorIlx0XHRcdNC00L7QtNCw0ZjQtSDQuNGFINC90LAg0YHQv9C40YHQsNC6INC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LBcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAg0J/RgNC40LzQvtGA0LDQstCwINC/0YDQvtCy0LXRgNGDINGH0LDQuiDQuCDQsNC60L4g0ZjQtSDRgdC40YHRgtC10LxcbiIKKyJcdFx0XHTQtNCw0YLQvtGC0LXQutCwINC+0LfQvdCw0YfQtdC9INC60LDQviDRh9C40YHRglxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4CisjLCBmdXp6eQorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgICAgICAgICAgICAgICAgICDQkdC40LLQsCDQvtC/0YjQuNGA0LDQvVxuIgorIiAtYiDRgdGD0L/QtdGA0LHQu9C+0LogICAgICAgICDQmtC+0YDQuNGB0YLQuCDQt9Cw0LzQtdC90YHQutC4INGB0YPQv9C10YDQsdC70L7QulxuIgorIiAtQiDQstC10LvQuNGH0LjQvdCwINCx0LvQvtC60LAgICAg0J/RgNC40YHQuNGZ0LDQstCwINCy0LXQu9C40YfQuNC90YMg0LHQu9C+0LrQsCDQutCw0LTQsCDRgtGA0LDQttC4INGB0YPQv9C10YDQsdC70L7QulxuIgorIiAtaiDRgdC/0L7RmdC90Lhf0LTQvdC10LLQvdC40LogICAg0J/QvtGB0YLQsNCy0ZnQsCDQvNC10YHRgtC+INGB0L/QvtGZ0L3QvtCzINC00L3QtdCy0L3QuNC60LBcbiIKKyIgLWwg0LTRgtGC0LrQsF/Qu9GI0YVf0LHQu9C60LLQsCAgINCU0L7QtNCw0ZjQtSDQvdCwINGB0L/QuNGB0LDQuiDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwXG4iCisiIC1MINC00YLRgtC60LBf0LvRiNGFX9Cx0LvQutCy0LAgICDQn9C+0YHRgtCw0LLRmdCwINGB0L/QuNGB0LDQuiDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzOiAldS8ldSDQtNCw0YLQvtGC0LXQutC1ICglMGQuJWQlJSDRgdCwINC/0YDQtdC60LjQtNC40LzQsCksICVsbHUvJWxsdSDQsdC70L7QutCwXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTJ1IGlub2RlIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgaW5vZGVzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAldSlcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUg0Lgt0YfQstC+0YAg0ZjQtSDQutC+0YDQuNGI0ZvQtdC9ICglMi4yZiUlLCDQvtC0ICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJTEydSDQuC3Rh9Cy0L7RgNCwINGB0YMg0LrQvtGA0LjRiNGb0LXQvdCwICglMi4yZiUlLCDQvtC0ICV1KVxuIgorbXNnc3RyWzJdICIiCisiXG4iCisiJTEydSDQuC3Rh9Cy0L7RgNC+0LLQsCDRmNC1INC60L7RgNC40YjRm9C10L3QviAoJTIuMmYlJSwg0L7QtCAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUg0LTQsNGC0L7RgtC10LrQsCDRgdCwINC/0YDQtdC60LjQtNC40LzQsCAoJTBkLiVkJSUpXG4iCittc2dzdHJbMV0gIiUxMnUg0LTQsNGC0L7RgtC10LrQtSDRgdCwINC/0YDQtdC60LjQtNC40LzQsCAoJTBkLiVkJSUpXG4iCittc2dzdHJbMl0gIiUxMnUg0LTQsNGC0L7RgtC10LrQsCDRgdCwINC/0YDQtdC60LjQtNC40LzQsCAoJTBkLiVkJSUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3J5ICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcmllcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8INGB0LAg0L/RgNC10LrQuNC00LjQvNCwICglMGQuJWQlJSlcbiIKK21zZ3N0clsxXSAiJTEydSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDRgdCwINC/0YDQtdC60LjQtNC40LzQsCAoJTBkLiVkJSUpXG4iCittc2dzdHJbMl0gIiUxMnUg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg0YHQsCDQv9GA0LXQutC40LTQuNC80LAgKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgINCx0YDQvtGYINC4LdGH0LLQvtGA0L7QstCwINGB0LAg4oCeaW5kL2RpbmQvdGluZOKAnCDQsdC70L7QutC+0LLQsDogJXUvJXUvJXVcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODIKK21zZ2lkICIgICAgICAgICAgICAgRXh0ZW50IGRlcHRoIGhpc3RvZ3JhbTogIgorbXNnc3RyICIgICAgICAgICAgICAg0KXQuNGB0YLQvtCz0YDQsNC8INC00YPQsdC40L3QtSDRgNCw0YHQv9C+0L3QsDogIgorCisjOiBlMmZzY2svdW5peC5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJsbHUgYmxvY2sgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dpZF9wbHVyYWwgIiUxMmxsdSBibG9ja3MgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICVsbHUpXG4iCittc2dzdHJbMF0gIiUxMmxsdSDQsdC70L7QuiDRmNC1INC60L7RgNC40YjRm9C10L0gKCUyLjJmJSUsINC+0LQgJWxsdSlcbiIKK21zZ3N0clsxXSAiJTEybGx1INCx0LvQvtC60LAg0YHRgyDQutC+0YDQuNGI0ZvQtdC90LAgKCUyLjJmJSUsINC+0LQgJWxsdSlcbiIKK21zZ3N0clsyXSAiJTEybGx1INCx0LvQvtC60L7QstCwINGY0LUg0LrQvtGA0LjRiNGb0LXQvdC+ICglMi4yZiUlLCDQvtC0ICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1INC70L7RiCDQsdC70L7QulxuIgorbXNnc3RyWzFdICIlMTJ1INC70L7RiNCwINCx0LvQvtC60LBcbiIKK21zZ3N0clsyXSAiJTEydSDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUg0LLQtdC70LjQutCwINC00LDRgtC+0YLQtdC60LBcbiIKK21zZ3N0clsxXSAiJTEydSDQstC10LvQuNC60LUg0LTQsNGC0L7RgtC10LrQtVxuIgorbXNnc3RyWzJdICIlMTJ1INCy0LXQu9C40LrQuNGFINC00LDRgtC+0YLQtdC60LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUg0L7QsdC40YfQvdCwINC00LDRgtC+0YLQtdC60LBcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUg0L7QsdC40YfQvdC1INC00LDRgtC+0YLQtdC60LVcbiIKK21zZ3N0clsyXSAiIgorIlxuIgorIiUxMnUg0L7QsdC40YfQvdC40YUg0LTQsNGC0L7RgtC10LrQsFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8XG4iCittc2dzdHJbMV0gIiUxMnUg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LBcbiIKK21zZ3N0clsyXSAiJTEydSDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSDQtNCw0YLQvtGC0LXQutCwINC30L3QsNC60L7QstC90L7QsyDRg9GA0LXRktCw0ZjQsFxuIgorbXNnc3RyWzFdICIlMTJ1INC00LDRgtC+0YLQtdC60LUg0LfQvdCw0LrQvtCy0L3QvtCzINGD0YDQtdGS0LDRmNCwXG4iCittc2dzdHJbMl0gIiUxMnUg0LTQsNGC0L7RgtC10LrQsCDQt9C90LDQutC+0LLQvdC+0LMg0YPRgNC10ZLQsNGY0LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1INC00LDRgtC+0YLQtdC60LAg0LHQu9C+0Log0YPRgNC10ZLQsNGY0LBcbiIKK21zZ3N0clsxXSAiJTEydSDQtNCw0YLQvtGC0LXQutC1INCx0LvQvtC6INGD0YDQtdGS0LDRmNCwXG4iCittc2dzdHJbMl0gIiUxMnUg0LTQsNGC0L7RgtC10LrQsCDQsdC70L7QuiDRg9GA0LXRktCw0ZjQsFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpZm9cbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWZvc1xuIgorbXNnc3RyWzBdICIlMTJ1INC/0YPQv9C4XG4iCittc2dzdHJbMV0gIiUxMnUg0L/Rg9C/0Lgt0ZjQsFxuIgorbXNnc3RyWzJdICIlMTJ1INC/0YPQv9C4LdGY0LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSDQstC10LfQsFxuIgorbXNnc3RyWzFdICIlMTJ1INCy0LXQt9C1XG4iCittc2dzdHJbMl0gIiUxMnUg0LLQtdC30LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1INGB0LjQvNCx0L7Qu9C40YfQutCwINCy0LXQt9CwIgorbXNnc3RyWzFdICIlMTJ1INGB0LjQvNCx0L7Qu9C40YfQutC1INCy0LXQt9C1IgorbXNnc3RyWzJdICIlMTJ1INGB0LjQvNCx0L7Qu9C40YfQutC40YUg0LLQtdC30LAiCisKKyM6IGUyZnNjay91bml4LmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rKVxuIgorbXNnaWRfcGx1cmFsICIgKCV1IGZhc3Qgc3ltYm9saWMgbGlua3MpXG4iCittc2dzdHJbMF0gIiAoJXUg0LHRgNC30LAg0YHQuNC80LHQvtC70LjRh9C60LAg0LLQtdC30LApXG4iCittc2dzdHJbMV0gIiAoJXUg0LHRgNC30LUg0YHQuNC80LHQvtC70LjRh9C60LUg0LLQtdC30LUpXG4iCittc2dzdHJbMl0gIiAoJXUg0LHRgNC30LjRhSDRgdC40LzQsdC+0LvQuNGH0LrQuNGFINCy0LXQt9CwKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAiJTEydSDQv9GA0LjQutGZ0YPRh9C90LjRhtCwXG4iCittc2dzdHJbMV0gIiUxMnUg0L/RgNC40LrRmdGD0YfQvdC40YbQtVxuIgorbXNnc3RyWzJdICIlMTJ1INC/0YDQuNC60ZnRg9GH0L3QuNGG0LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSDQtNCw0YLQvtGC0LXQutCwXG4iCittc2dzdHJbMV0gIiUxMnUg0LTQsNGC0L7RgtC10LrQtVxuIgorbXNnc3RyWzJdICIlMTJ1INC00LDRgtC+0YLQtdC60LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L7QtNGA0LXRktC40LLQsNGa0LAg0LTQsCDQu9C4INGY0LUg4oCeJXPigJwg0L/RgNC40LrQsNGH0LXQvS4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICLQo9C/0L7Qt9C+0YDQtdGa0LUhIOKAniVz4oCcINGY0LUg0L/RgNC40LrQsNGH0LXQvS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1ISDigJ4lc+KAnCDRmNC1INGDINGD0L/QvtGC0YDQtdCx0LguXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIuKAniVz4oCcINGY0LUg0L/RgNC40LrQsNGH0LXQvS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICLigJ4lc+KAnCDRmNC1INGDINGD0L/QvtGC0YDQtdCx0LguXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY5Cittc2dpZCAiIgorIkNhbm5vdCBjb250aW51ZSwgYWJvcnRpbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7Qs9GDINC00LAg0L3QsNGB0YLQsNCy0LjQvCwg0L/RgNC10LrQuNC00LDQvC5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyLQn9CQ0JbQitCQISEhINCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGY0LUg0L/RgNC40LrQsNGH0LXQvS4gICAg0JDQutC+INC90LDRgdGC0LDQstC40YLQtVxuIgorIioqKtCe0JfQkdCY0InQndCeKioqINGb0LXRgtC1ICoqKtCe0KjQotCV0KLQmNCi0JgqKiog0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICLQlNCwINC70Lgg0YHRgtCy0LDRgNC90L4g0LbQtdC70LjRgtC1INC00LAg0L3QsNGB0YLQsNCy0LjRgtC1IgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgItC/0YDQvtCy0LXRgNCwINGY0LUg0L/RgNC10LrQuNC90YPRgtCwLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIg0YHQsNC00YDQttC4INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGB0LAg0LPRgNC10YjQutCw0LzQsCIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiINC90LjRmNC1INC40YHQv9GA0LDQstC90L4g0L7RgtC60LDRh9C10L0iCisKKyM6IGUyZnNjay91bml4LmM6Mzc1Cittc2dpZCAiIHByaW1hcnkgc3VwZXJibG9jayBmZWF0dXJlcyBkaWZmZXJlbnQgZnJvbSBiYWNrdXAiCittc2dzdHIgIiDRhNGD0L3QutGG0LjRmNC1INC/0YDQuNC80LDRgNC90L7QsyDRgdGD0L/QtdGA0LHQu9C+0LrQsCDRgdC1INGA0LDQt9C70LjQutGD0ZjRgyDQvtC0INGA0LXQt9C10YDQstC1IgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiDRmNC1INCx0LjQviDQv9GA0LjQutCw0YfQtdC9ICV1INC/0YPRgtCwINCwINC00LAg0L3QuNGY0LUg0L/RgNC+0LLQtdGA0LDQstCw0L0iCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiDQuNC80LAg0LLRgNC10LzQtSDQv9GA0L7QstC10YDQtSDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINGDINCx0YPQtNGD0ZvQvdC+0YHRgtC4IgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiDQv9GA0L7RiNC70LAg0YHRgyAldSDQtNCw0L3QsCDQsCDQtNCwINC90LjRmNC1INC/0YDQvtCy0LXRgNCw0LLQsNC9IgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsINC/0YDQvtCy0LXRgNCwINGY0LUg0L/RgNC40YHQuNC70L3QsC5cbiIKKworIzogZTJmc2NrL3VuaXguYzo0MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGNsZWFuLCAldS8ldSBmaWxlcywgJWxsdS8lbGx1IGJsb2NrcyIKK21zZ3N0ciAiJXM6INGH0LjRgdGCLCAldS8ldSDQtNCw0YLQvtGC0LXQutC1LCAlbGx1LyVsbHUg0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiICjQv9GA0L7QstC10YDQsCDRmNC1INC+0LTQu9C+0LbQtdC90LA7INGA0LDQtNC4INC90LAg0LHQsNGC0LXRgNC40ZjQuCkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiICjQv9GA0L7QstC10YDQsCDQvdCw0LrQvtC9INGB0LvQtdC00LXRm9C10LMg0LrQsNGH0LXRmtCwKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiICjQv9GA0L7QstC10YDQsCDQvdCw0LrQvtC9ICVsZCDQutCw0YfQtdGa0LApIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICLQk9Cg0JXQqNCa0JA6INCd0LUg0LzQvtCz0YMg0LTQsCDQvtGC0LLQvtGA0LjQvCDigJ4vZGV2L251bGzigJwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstC90L4g0JXQkCDQuNC30LTQsNGa0LUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQv9Cw0YDQsNC80LXRgtCw0YAg0L/RgNC+0LzQtdC90LUg0LLQtdC70LjRh9C40L3QtTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgItCd0LXQv9C+0LfQvdCw0YLQsCDQv9GA0L7RiNC40YDQtdC90LAg0L7Qv9GG0LjRmNCwOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjc1MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIGUyZnNjayBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorItCT0YDQtdGI0LrQsCDRgdC40L3RgtCw0LrRgdC1INGDINC00LDRgtC+0YLQtdGG0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LAg4oCeZTJmc2Nr4oCcLdCwICglcywgJWQuINGA0LXQtClcbiIKKyJcdCVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QvtGC0LLRgNGS0LjQstCw0ZrQsCDQvtC/0LjRgdC90LjQutCwINC00LDRgtC+0YLQtdC60LUg4oCeJWTigJw6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L7Qv9C40YHQvdC40Log0LTQsNGC0L7RgtC10LrQtSDQv9C+0LTQsNGC0LDQutCwINC00L7QstGA0YjQsNCy0LDRmtCwIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAi0JzQvtC20LUg0LHQuNGC0Lgg0L3QsNCy0LXQtNC10L3QsCDRgdCw0LzQviDRmNC10LTQvdCwINC+0LQg0L7Qv9GG0LjRmNCwIOKAni1wLy1h4oCcLCDigJ4tbuKAnCDQuNC70Lgg4oCeLXnigJwuIgorCisjOiBlMmZzY2svdW5peC5jOjg2NQorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgLXQgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKK21zZ3N0ciAi0J7Qv9GG0LjRmNCwIOKAni104oCcINC90LjRmNC1INC/0L7QtNGA0LbQsNC90LAg0L3QsCDQvtCy0L7QvCDQuNC30LTQsNGa0YMg4oCeZTJmc2Nr4oCcLdCwLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjg5NiBlMmZzY2svdW5peC5jOjk3MyBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjMzMAorIzogbWlzYy90dW5lMmZzLmM6MTU5OCBtaXNjL3R1bmUyZnMuYzoxODkzIG1pc2MvdHVuZTJmcy5jOjE5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIHJlc29sdmUgJyVzJyIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGA0LXRiNC40Lwg4oCeJXPigJwiCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLUTigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLWPigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLWwvLUzigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLUTigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS4iCisKKyM6IGUyZnNjay91bml4LmM6OTkyCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLUTigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS4iCisKKyM6IGUyZnNjay91bml4LmM6MTA0NgorbXNnaWQgIlRoZSAtYyBhbmQgdGhlIC1sLy1MIG9wdGlvbnMgbWF5IG5vdCBiZSBib3RoIHVzZWQgYXQgdGhlIHNhbWUgdGltZS5cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LbQtdGC0LUg0LrQvtGA0LjRgdGC0LjRgtC4INGDINC40YHRgtC+INCy0YDQtdC80LUg0L7Qv9GG0LjRmNC1IOKAni1j4oCcINC4IOKAni1sLy1M4oCcLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkUyRlNDS19KQkRfREVCVUcgXCIlc1wiIG5vdCBhbiBpbnRlZ2VyXG4iCisiXG4iCittc2dzdHIgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIOKAniVz4oCcINC90LjRmNC1INGG0LXQviDQsdGA0L7RmFxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQndC10LjRgdC/0YDQsNCy0LDQvSDQvdC1LdCx0YDQvtGY0LXQstC90Lgg0LDRgNCz0YPQvNC10L3RgiDQt9CwIOKAni0lY+KAnCAoJXMpXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTE5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGludGVydmFsIGlzICV1IHNlY29uZHMgYW5kIHRvdGFsIHdhaXQgdGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2UgIgorIndhaXQuLi5cbiIKK21zZ3N0ciAiIgorItCc0JzQnyDQv9C10YDQuNC+0LQg0ZjQtSAldSDRgdC10LrRg9C90LTQtSDQsCDRg9C60YPQv9C90L4g0LLRgNC10LzQtSDRh9C10LrQsNGa0LAg0ZjQtSAldSDRgdC10LrRg9C90LTQtS4g0KHQsNGH0LXQutCw0ZjRgtC1ICIKKyLQvNCw0LvQutC+Li4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBNTVAgYmxvY2siCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9GA0L7QstC10YDQtSDQnNCc0J8g0LHQu9C+0LrQsCIKKworIzogZTJmc2NrL3VuaXguYzoxMjE3IG1pc2MvdHVuZTJmcy5jOjI3OTIKK21zZ2lkICIiCisiSWYgeW91IGFyZSBzdXJlIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKyIndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2RldmljZX0nXG4iCittc2dzdHIgIiIKKyLQkNC60L4g0YHRgtC1INGB0LjQs9GD0YDQvdC4INC00LAg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0L3QuNGY0LUg0YMg0YPQv9C+0YLRgNC10LHQuCDQvdC4INC90LAg0ZjQtdC00L3QvtC8INGH0LLQvtGA0YMsICIKKyLQv9C+0LrRgNC10L3QuNGC0LU6XG4iCisi4oCedHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge9GD0YDQtdGS0LDRmH3igJxcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INGH0LjRgtCw0ZrQsCDQnNCc0J8g0LHQu9C+0LrQsC4iCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0YDQtdC/0LjRgdGD0ZjQtdC8INC/0L7RgdGC0L7RmNC10ZvQuCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsDsg0L7QstC+INC80L7QttC1INCx0LjRgtC4INC/0L7QvdC40YjRgtC10L3QviDQvdCw0YDQtdC00LHQvtC8OlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QutGD0YjQsNGY0LAg0LHRgNC40YHQsNGa0LAg4oCeJXPigJwiCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQv9C+0YHRgtCw0LLRmdCw0ZrQsCDQtNCw0YLQvtGC0LXQutC1INC/0L7QvdC40YjRgtCw0LLQsNGa0LBcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzYzCittc2dpZCAiRXJyb3I6IGV4dDJmcyBsaWJyYXJ5IHZlcnNpb24gb3V0IG9mIGRhdGUhXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsDog0LjQt9C00LDRmtC1INCx0LjQsdC70LjQvtGC0LXQutC1IOKAnmV4dDJmc+KAnCDRmNC1INC30LDRgdGC0LDRgNC10LvQviFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAi0LrQsNC00LAg0YHQsNC8INC/0L7QutGD0YjQsNC+INC00LAg0L/QvtC60YDQtdC90LXQvCDQv9GA0L7Qs9GA0LDQvCIKKworIzogZTJmc2NrL3VuaXguYzoxMzkzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXMsICVzXG4iCittc2dzdHIgIlx00JrQvtGA0LjRgdGC0LjQvCDigJ4lc+KAnCwgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAi0L/QvtGC0YDQtdCx0LDQvSDRmNC1INGC0LXRgNC80LjQvdCw0Lsg0LfQsCDQvNC10ZLRg9C00LXRmNGB0YLQstC10L3QtSDQv9C+0L/RgNCw0LLQutC1IgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiDigJ4lc+KAnCDQv9C+0LrRg9GI0LDQstCw0Lwg0LTQsCDQvdCw0L/RgNCw0LLQuNC8INGA0LXQt9C10YDQstGDINCx0LvQvtC60L7QstCwLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgItCh0YPQv9C10YDQsdC70L7QuiDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9LCIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgItCe0L/QuNGB0L3QuNC6INCz0YDRg9C/0LUg0LjQt9Cz0LvQtdC00LAg0LvQvtGI0LUuLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiDigJ4lc+KAnCDQv9GA0LjQu9C40LrQvtC8INC60L7RgNC40YjRm9C10ZrQsCDRgNC10LfQtdGA0LLQtSDQsdC70L7QutC+0LLQsCIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6INCy0YDQsNGb0LDQvCDRgdC1INC90LAg0LjQt9Cy0L7RgNC90Lgg0YHRg9C/0LXRgNCx0LvQvtC6XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyLQoNC10LLQuNC30LjRmNCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0ZjQtSDQv9GA0LjQstC40LTQvdC+INC/0YDQtdCy0LjRgdC+0LrQsCDQt9CwINC+0LLQviDQuNC30LTQsNGa0LUg4oCeZTJmc2Nr4oCcLdCwLlxuIgorIijQmNC70Lgg0ZjQtSDRgdGD0L/QtdGA0LHQu9C+0Log0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDQvtGI0YLQtdGb0LXQvSlcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAi0JTQsCDQvdC40ZjQtSDQvtCy0L4g0L/QsNGA0YLQuNGG0LjRmNCwINC90YPQu9GC0LUg0LTRg9C20LjQvdC1P1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICLQnNC+0YDQsNGC0LUg0LjQvNCw0YLQuCDQv9GA0LDQstC+IOKAniVz4oCcINC90LAg0YHQuNGB0YLQtdC80YMg0LTQsNGC0L7RgtC10LrQsCDQuNC70Lgg0LHQuNGC0Lgg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YBcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICLQnNC+0LbQtNCwINGY0LUg0L3QtdC/0L7RgdGC0L7RmNC10ZvQuCDQuNC70Lgg0YDQsNC30LzQtdC90YHQutC4INGD0YDQtdGS0LDRmD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI5Cittc2dpZCAiRmlsZXN5c3RlbSBtb3VudGVkIG9yIG9wZW5lZCBleGNsdXNpdmVseSBieSBhbm90aGVyIHByb2dyYW0/XG4iCittc2dzdHIgItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGY0LUg0L/RgNC40LrQsNGH0LXQvSDQuNC70Lgg0L7RgtCy0L7RgNC10L0g0LjRgdC60ZnRg9GH0LjQstC+INC00YDRg9Cz0LjQvCDQv9GA0L7Qs9GA0LDQvNC+0Lw/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgItCc0L7QttC00LAg0ZjQtSDQvdC10L/QvtGB0YLQvtGY0LXRm9C4INC40LvQuCDRg9GA0LXRktCw0Zg/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisi0JTQuNGB0Log0ZjQtSDQt9Cw0YjRgtC40ZvQtdC9INC+0LQg0L/QuNGB0LDRmtCwOyDQutC+0YDQuNGB0YLQuNGC0LUg0L7Qv9GG0LjRmNGDIOKAni1u4oCcINC00LAg0L7QtNGA0LDQtNC40YLQtSDQv9GA0L7QstC10YDRg1xuIgorItGB0LDQvNC+INC30LAg0YfQuNGC0LDRmtC1INGD0YDQtdGS0LDRmNCwLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgItCd0LDQsdCw0LLQuNGC0LUg0L3QsNGY0L3QvtCy0LjRmNC1INC40LfQtNCw0ZrQtSDigJ5lMmZzY2vigJwt0LAhIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0YDQvtCy0LXRgNC1INC10LrRgdGCMyDQtNC90LXQstC90LjQutCwINC30LAg4oCeJXPigJwiCisKKyM6IGUyZnNjay91bml4LmM6MTY1MQorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0L3QsNGB0YLQsNCy0LjQvCDQsdC10Lcg0LrQvtGA0LXQvdC+0LMg0Lgt0YfQstC+0YDQsC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorItCj0L/QvtC30L7RgNC10ZrQtTog0L/RgNC10YHQutCw0YfQtdC8INC+0L/QvtGA0LDQstCw0Log0LTQvdC10LLQvdC40LrQsCDQt9Cw0YLQvlxuIgorItGI0YLQviDQstGA0YjQuNC8INC/0YDQvtCy0LXRgNGDINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0YHQsNC80L4g0LfQsCDRh9C40YLQsNGa0LUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY3NAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gc2V0IHN1cGVyYmxvY2sgZmxhZ3Mgb24gJXNcbiIKK21zZ3N0ciAi0L3QtSDQvNC+0LPRgyDQtNCwINC/0L7RgdGC0LDQstC40Lwg0LfQsNGB0YLQsNCy0LjRhtC1INGB0YPQv9C10YDQsdC70L7QutCwINC90LAg4oCeJXPigJxcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgItCd0LjRgdCw0Lwg0L3QsNGI0LDQviDRgdGD0L/QtdGA0LHQu9C+0Log0LTQvdC10LLQvdC40LrQsCFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNvcnJ1cHRlZCBpbiAlc1xuIgorbXNnc3RyICLQlNC90LXQstC90LjQuiDRmNC1INGD0LrQu9C+0ZrQtdC9XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7Qv9GA0LDQstC60LUg0LXQutGB0YIzINC00L3QtdCy0L3QuNC60LAg0LfQsCDigJ4lc+KAnCIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIKK21zZ3N0ciAi4oCeJXPigJwg0LjQvNCwINC90LXQv9C+0LTRgNC20LDQvdGDKNC1KSDRhNGD0L3QutGG0LjRmNGDKNC1KToiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiDigJ4lc+KAnCDQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC4LdGH0LLQvtGA0LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsFxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgItCe0LLQviDQvdC1INGB0LvRg9GC0Lgg0L3QsCDQtNC+0LHRgNC+LCDQsNC70Lgg0ZvQtdC80L4g0L/QvtC60YPRiNCw0YLQuCDQtNCwINC90LDRgdGC0LDQstC40LzQvi4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICLQn9GA0LDQstC40Lwg0LTQvdC10LLQvdC40LogKCVkINCx0LvQvtC60LApOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIg0JPQvtGC0L7QstC+LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqINC00L3QtdCy0L3QuNC6INGY0LUg0L/QvtC90L7QstC+INC90LDQv9GA0LDQstGZ0LXQvSDigJQg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0ZjQtSDQv9C+0L3QvtCy0L4g0LXQutGB0YIzICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICLQv9GA0LXQutC40L3Rg9GC0L4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlczog4oCeZTJmc2Nr4oCcINGY0LUg0L7RgtC60LDQt9Cw0L0uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2NQorbXNnaWQgIlJlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLlxuIgorbXNnc3RyICLQn9C+0L3QvtCy0L4g0L/QvtC60YDQtdGb0LXQvCDigJ5lMmZzY2vigJwg0LjQtyDQv9C+0YfQtdGC0LrQsC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQstGA0LDRm9Cw0ZrQsCDQv9C+0YHRgtCw0LLQutC4INC60L7QvdGC0LXQutGB0YLQsCIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiDQodCY0KHQotCV0Jwg0JTQkNCi0J7QotCV0JrQkCDQiNCVINCY0JfQnNCV0IrQldCdICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqINCf0J7QndCe0JLQniDQn9Ce0JTQmNCW0JXQnCDQm9CY0J3Qo9Ca0KEgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiDQo9Cf0J7Ql9Ce0KDQldCK0JU6INCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGY0L7RiCDRg9Cy0LXQuiDQuNC80LAg0LPRgNC10YjQsNC60LAgKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICLQtNCUIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICLQvdCdIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NgorbXNnaWQgImFBIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MTk3Cittc2dpZCAiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjIxMworbXNnaWQgIjx5PiIKK21zZ3N0ciAiPNC0PiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjzQvT4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKNC0L9C9KSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgItC+0YLQutCw0LfQsNC90L4hXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgItC00LBcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICLQvdC1XG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyDQvdC1XG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8geWVzXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8g0LTQsFxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgInllcyIKK21zZ3N0ciAi0LTQsCIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAi0L3QtSIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiDQvdC10LTQvtC30LLQvtGZ0LXQvdC4INCx0LvQvtC6KNC+0LLQuCkg0LHQuNGC0LzQsNC/0LUg0LfQsCDigJ4lc+KAnCIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICLRh9C40YLQsNC8INCx0LjRgtC80LDQv9C1INC4LdGH0LLQvtGA0LAg0Lgg0LHQu9C+0LrQvtCy0LAiCisKKyM6IGUyZnNjay91dGlsLmM6MzE5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJldHJ5aW5nIHRvIHJlYWQgYml0bWFwcyBmb3IgJXMiCittc2dzdHIgItC00L7QuiDRgdCw0Lwg0L/QvtC90L7QstC+INC/0L7QutGD0YjQsNC+INC00LAg0YfQuNGC0LDQvCDQsdC40YLQvNCw0L/QtSDQt9CwIOKAniVz4oCcIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgItC/0LjRiNC10Lwg0LHQuNGC0LzQsNC/0LUg0LHQu9C+0LrQsCDQuCDQuC3Rh9Cy0L7RgNCwIgorCisjOiBlMmZzY2svdXRpbC5jOjMzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0L/RgNC10L/QuNGB0LjQstCw0ZrQsCDQsdC40YLQvNCw0L/QsCDQsdC70L7QutCwINC4INC4LdGH0LLQvtGA0LAg0LfQsCDigJ4lc+KAnCIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIiVzOiDQndCV0J7Qp9CV0JrQmNCS0JDQndCQINCd0JXQlNCe0KHQm9CV0JTQndCe0KHQojsg0J/QntCa0KDQldCd0JjQotCVIOKAnmZzY2vigJwg0KDQo9Cn0J3Qni5cbiIKKyJcdCjRgtGYLiwg0LHQtdC3IOKAni1h4oCcINC40LvQuCDigJ4tcOKAnClcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICLQmtC+0YDQuNGI0ZvQtdC90LAg0LzQtdC80L7RgNC40ZjQsDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHUsICIKK21zZ3N0ciAi0JrQvtGA0LjRiNGb0LXQvdCwINC80LXQvNC+0YDQuNGY0LA6ICVsdSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorbXNnc3RyICLQstGA0LXQvNC1OiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgItC/0YDQvtGC0LXQutC70L4g0LLRgNC10LzQtTogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDRh9C40YLQsNGa0LAg0Lgt0YfQstC+0YDQsCDigJ4lbHXigJwg0YMg4oCeJXPigJwiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0L/QuNGB0LDRmtCwINC4LdGH0LLQvtGA0LAg4oCeJWx14oCcINGDIOKAniVz4oCcIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKyLQndCV0J7Qp9CV0JrQmNCS0JDQndCQINCd0JXQlNCe0KHQm9CV0JTQndCe0KHQojog0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0ZjQtSDQuNC30LzQtdGa0LXQvSDQtNC+0Log0ZjQtSDigJ5mc2Nr4oCcINCx0LjQviAiCisi0L/QvtC60YDQtdC90YPRgi5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3MgorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgItCz0L7RgtC+0LLQviAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiVXNhZ2U6ICVzIFstYiDQstC10LvQuNGH0LjQvdCwX9Cx0LvQvtC60LBdIFstaSDRg9C70LDQt9C90LBf0LTRgtGC0LrQsF0gWy1vINC40LfQu9Cw0LfQvdCwX9C00YLRgtC60LBdIFstc3Z3bmZdXG4iCisiICAgICAgIFstYyDQsdC70L7QutC+0LLQuF/QvtC00ZjQtdC00L3QvtC8XSBbLWQg0YfQuNC90LjQu9Cw0YZf0LfQsNGB0YLQvtGY0LBf0LjQt9C80LXRktGDX9GH0LjRgtCw0ZrQsF0gWy1lINC90LDRmNCyLiIKKyJf0LvQvtGI0LjRhV/QsdC70L7QutC+0LLQsF1cbiIKKyIgICAgICAgWy1wINCx0YAuX9C/0YDQvtC70LDQt9CwXSBbLXQg0YLQtdGB0YJf0YjQsNCx0LvQvtC9IFstdCDRgtC10YHRgl/RiNCw0LHQu9C+0L0gWy4uLl1dXVxuIgorIiAgICAgICDRg9GA0LXRktCw0ZggW9C/0L7RgdC70LXQtNGa0Lhf0LHQu9C+0LogW9C/0YDQstC4X9Cx0LvQvtC6XV1cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzOiDQntC/0YbQuNGY0LUg4oCeLW7igJwg0Lgg4oCeLXfigJwg0YHQtSDRg9C30LDRmNCw0LzQvdC+INC40YHQutGZ0YPRh9GD0ZjRgy5cbiIKKyJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAiJTYuMmYlJSDRg9GA0LDRktC10L3QviwgJXMg0L/RgNC+0YLQtdC60LvQvi4gKCVkLyVkLyVkINCz0YDQtdGI0LDQutCwKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAi0JjRgdC/0YDQvtCx0LDQstCw0Lwg0L3QsNGB0YPQvNC40YfQvdC40Lwg0YjQsNCx0LvQvtC90L7QvDogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM0NgorbXNnaWQgIlRlc3Rpbmcgd2l0aCBwYXR0ZXJuIDB4IgorbXNnc3RyICLQmNGB0L/RgNC+0LHQsNCy0LDQvCDRiNCw0LHQu9C+0L3QvtC8IDB4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM3OCBtaXNjL2JhZGJsb2Nrcy5jOjQ1MQorbXNnaWQgImR1cmluZyBzZWVrIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YLRgNCw0LbQtdGa0LAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAi0KfRg9C00L3QsCDQstGA0LXQtNC90L7RgdGCICglbGQpINGDIOKAnmRvX3JlYWTigJxcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg4oCeZXh0MmZzX3N5bmNfZGV2aWNl4oCcIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0YfQuNGa0LDRmtCwINC/0L7QvdCw0LLRmdCw0ZrQsCDRgdC/0LjRgdC60LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LXQu9C1INC80LXRktGD0LzQtdC80L7RgNC40ZjQsCIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAi0J/RgNC+0LLQtdGA0LDQstCw0Lwg0LHQu9C+0LrQvtCy0LUg0L7QtCAlbHUg0LTQviAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICLQn9GA0L7QstC10YDQsNCy0LDQvCDQuNC80LAg0LvQuCDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwINGDINGA0LXQttC40LzRgyDRgdCw0LzQvi3Qt9CwLdGH0LjRgtCw0ZrQtVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyOQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChyZWFkLW9ubHkgdGVzdCk6ICIKK21zZ3N0ciAi0KLRgNCw0LbQuNC8INC70L7RiNC1INCx0LvQvtC60L7QstC1ICjRgtC10YHRgiDRgdCw0LzQvi3Qt9CwLdGH0LjRgtCw0ZrQtSk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICLQn9GA0LXQstC40YjQtSDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwLCDQv9GA0LXQutC40LTQsNC8INGC0LXRgdGCXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgItCf0YDQvtCy0LXRgNCw0LLQsNC8INC40LzQsCDQu9C4INC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAg0YMg0YDQtdC20LjQvNGDINC/0LjRgdCw0ZrQsCDQuCDRh9C40YLQsNGa0LBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgItCe0LQg0LHQu9C+0LrQsCAlbHUg0LTQviAlbHVcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2NzUKK21zZ2lkICJSZWFkaW5nIGFuZCBjb21wYXJpbmc6ICIKK21zZ3N0ciAi0KfQuNGC0LDQvCDQuCDRg9C/0L7RgNC10ZLRg9GY0LXQvDogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4MQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAiIgorItCf0YDQvtCy0LXRgNCw0LLQsNC8INC40LzQsCDQu9C4INC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAg0YMg0L3QtS3RgNCw0LfQsNGA0LDRmNGD0ZvQtdC8INGA0LXQttC40LzRgyDQv9C40YHQsNGa0LAg0Lgg0YfQuNGC0LDRmtCwXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgItCf0YDQvtCy0LXRgNCw0LLQsNC8INC40LzQsCDQu9C4INC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAgKNC90LUt0YDQsNC30LDRgNCw0ZjRg9Gb0Lgg0YLQtdGB0YIg0L/QuNGB0LDRmtCwINC4INGH0LjRgtCw0ZrQsClcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorItCU0L7RiNC70L4g0ZjQtSDQtNC+INC/0YDQtdC60LjQtNCwLCDRh9C40YHRgtC40LxcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo4NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiZHVyaW5nIHRlc3QgZGF0YSB3cml0ZSwgYmxvY2sgJWx1IgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0L/QuNGB0LDRmtCwINC/0L7QtNCw0YLQsNC60LAg0YLQtdGB0YLQsCwg0LHQu9C+0LogJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICLigJ4lc+KAnCDRmNC1INC/0YDQuNC60LDRh9C10L07ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgItC70L7RiNC4INCx0LvQvtC60L7QstC4INGB0YMg0LjQv9Cw0Log0L/RgNC40YHQuNGZ0LXQvdC4LiAg0J3QsNC00LDQvCDRgdC1INC00LAg0ZjQtSDigJ4vZXRjL210YWLigJwg0L3QtdGC0LDRh9Cw0L0uXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAi0L3QuNGY0LUg0LHQtdC30LHQtdC00L3QviDQv9C+0LrRgNC10L3Rg9GC0Lgg0LvQvtGI0LUg0LHQu9C+0LrQvtCy0LUhXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMCBtaXNjL3V0aWwuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgYXBwYXJlbnRseSBpbiB1c2UgYnkgdGhlIHN5c3RlbTsgIgorbXNnc3RyICLigJ4lc+KAnCDRgdC1INC00LXQu9C40LzQuNGH0L3QviDQutC+0YDQuNGB0YLQuCDQvdCwINGB0LjRgdGC0LXQvNGDOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMworbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICLQu9C+0YjQuCDQsdC70L7QutC+0LLQuCDRgdGDINC40L/QsNC6INC/0YDQuNGB0LjRmdC10L3QuC5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAi0L3QtdC40YHQv9GA0LDQstCw0L3QviDigJ4lc+KAnCDigJQgJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTEyNworIywgYy1mb3JtYXQKK21zZ2lkICJUb28gYmlnIG1heCBiYWQgYmxvY2tzIGNvdW50ICV1IC0gbWF4aW11bSBpcyAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZXN0X3BhdHRlcm4gLSAlcyIKK21zZ3N0ciAi0L3QtSDQvNC+0LPRgyDQtNCwINC00L7QtNC10LvQuNC8INC80LXQvNC+0YDQuNGY0YMg0LfQsCDRgtC10YHRgl/RiNCw0LHQu9C+0L0g4oCUICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExODQKK21zZ2lkICJNYXhpbXVtIG9mIG9uZSB0ZXN0X3BhdHRlcm4gbWF5IGJlIHNwZWNpZmllZCBpbiByZWFkLW9ubHkgbW9kZSIKK21zZ3N0ciAi0JzQsNC60YHQuNC80YPQvCDRmNC10LTQvdC+0LMg0YLQtdGB0YJf0YjQsNCx0LvQvtC90LAg0LzQvtC20LUg0LHQuNGC0Lgg0L3QsNCy0LXQtNC10L0g0YMg0YDQtdC20LjQvNGDINGB0LDQvNC+INC30LAg0YfQuNGC0LDRmtC1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICLQndCw0YHRg9C80LjRh9C90Lgg0YLQtdGB0YJf0YjQsNCx0LvQvtC9INC90LjRmNC1INC00L7Qt9Cy0L7RmdC10L0g0YMg0YDQtdC20LjQvNGDINGB0LDQvNC+INC30LAg0YfQuNGC0LDRmtC1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorItCd0LUg0LzQvtCz0YMg0LTQsCDQvtC00YDQtdC00LjQvCDQstC10LvQuNGH0LjQvdGDINGD0YDQtdGS0LDRmNCwOyDQvNC+0YDQsNGC0LUg0YDRg9GH0L3QvlxuIgorItC90LDQstC10YHRgtC4INCy0LXQu9C40YfQuNC90YNcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAi0LTQvtC6INGB0LDQvCDQv9C+0LrRg9GI0LDQstCw0L4g0LTQsCDQvtC00YDQtdC00LjQvCDQstC10LvQuNGH0LjQvdGDINGD0YDQtdGS0LDRmNCwIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICLQv9C+0YHQu9C10LTRmtC4INCx0LvQvtC6IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAi0L/RgNCy0Lgg0LHQu9C+0LoiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyNAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHN0YXJ0aW5nIGJsb2NrICglbGx1KTogbXVzdCBiZSBsZXNzIHRoYW4gJWxsdSIKK21zZ3N0ciAi0L3QtdC40YHQv9GA0LDQstCw0L0g0L/QvtGH0LXRgtC90Lgg0LHQu9C+0LogKCVsbHUpOiDQvNC+0YDQsCDQsdC40YLQuCDQvNCw0ZrQtSDQvtC0ICVsbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICLQvdC10LjRgdC/0YDQsNCy0LDQvSDQutGA0LDRmNGa0Lgg0LHQu9C+0LogKCVsbHUpOiDQvNC+0YDQsCDQsdC40YLQuCAzMi3QsdC40YLQvdCwINCy0YDQtdC00L3QvtGB0YIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDRgdGC0LLQsNGA0LDRmtCwINGB0L/QuNGB0LrQsCDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwINGDLdC80LXQvNC+0YDQuNGY0LgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI5NgorbXNnaWQgImlucHV0IGZpbGUgLSBiYWQgZm9ybWF0IgorbXNnc3RyICLRg9C70LDQt9C90LAg0LTQsNGC0L7RgtC10LrQsCDigJQg0LvQvtGIINC30LDQv9C40YEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMwNCBtaXNjL2JhZGJsb2Nrcy5jOjEzMTMKK21zZ2lkICJ3aGlsZSBhZGRpbmcgdG8gaW4tbWVtb3J5IGJhZCBibG9jayBsaXN0IgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0LTQvtC00LDQstCw0ZrQsCDRgdC/0LjRgdC60LAg0LvQvtGI0LjRhSDQsdC70L7QutC+0LLQsCDRgy3QvNC10LzQvtGA0LjRmNC4IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgItCf0YDQvtC70LDQtyDRmNC1INC+0LHQsNCy0ZnQtdC9LCDQvdCw0ZLQtdC90LjRhSDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwOiAldS4gKNCz0YDQtdGI0LDQutCwOiAlZC8lZC8lZClcbiIKKworIzogbWlzYy9jaGF0dHIuYzo4OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgItCj0L/QvtGC0YDQtdCx0LA6ICVzIFstUlZmXSBbLSs9YUFjQ2REZWlqc1N0VHVdIFstdiDQuNC30LTQsNGa0LVdINC00LDRgtC+0YLQtdC60LUuLi5cbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAi0LvQvtGI0LUg0LjQt9C00LDRmtC1IOKAlCAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgItC70L7RiNC1INC40LfQtNCw0ZrQtSDigJQgJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQtNCwINC00L7QsdCw0LLQuNC8INC/0L7QtNCw0YLQutC1IOKAniVz4oCcIgorCisjOiBtaXNjL2NoYXR0ci5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC30LDRgdGC0LDQstC40YbQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICLQl9Cw0YHRgtCw0LLQuNGG0LUg0LfQsCDigJ4lc+KAnCDRgdGDINC/0L7RgdGC0LDQstGZ0LXQvdC1INC60LDQviAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0YHRgtCw0LLRmdCw0ZrQsCDQt9Cw0YHRgtCw0LLQuNGG0LAg0L3QsCDigJ4lc+KAnCIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgItCY0LfQtNCw0ZrQtSDQt9CwIOKAniVz4oCcINGY0LUg0L/QvtGB0YLQsNCy0ZnQtdC90L4g0LrQsNC+ICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0YHRgtCw0LLRmdCw0ZrQsCDQuNC30LTQsNGa0LAg0L3QsCDigJ4lc+KAnCIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICLQmNC30LTQsNGa0LUg0LfQsCDigJ4lc+KAnCDRmNC1INC/0L7RgdGC0LDQstGZ0LXQvdC+INC60LDQviAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0L7RgdGC0LDQstGZ0LDRmtCwINC40LfQtNCw0ZrQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0LTQvtC00LXQu9C40Lwg0L/RgNC+0LzQtdC90ZnQuNCy0YMg0L/Rg9GC0LDRmtC1INGDIOKAnmNoYXR0cl9kaXJfcHJvY+KAnCIKKworIzogbWlzYy9jaGF0dHIuYzozMzcKK21zZ2lkICI9IGlzIGluY29tcGF0aWJsZSB3aXRoIC0gYW5kICtcbiIKK21zZ3N0ciAiPSDQvdC40ZjQtSDRgdCw0LPQu9Cw0YHQvdC+INGB0LAgLSDQuCArXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgItCc0L7RgNCw0YLQtSDQutC+0YDQuNGB0YLQuNGC0Lgg4oCeLXbigJwsID0sIC0g0LjQu9C4ICtcbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIOKAniVsdeKAnCDRgyDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDRiNC40YDQtdGa0LAg4oCeL9C40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L7igJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC+0YLQstCw0YDQsNGa0LAg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6OTUgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMjIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJXUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C40YHQsNGa0LAg0Lgt0YfQstC+0YDQsCDigJ4lbHXigJwg0YMg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QutGD0YjQsNGY0LAg0YHQutGA0LDRm9C40LLQsNGa0LAg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0L7RgtCy0LDRgNCw0ZrQsCDRgdC60LXQvdC40YDQsNGa0LAg0Lgt0YfQstC+0YDQsCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQtNC+0LTQtdC70LUg0LzQtdGS0YPQvNC10LzQvtGA0LjRmNC1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE3NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBhdHRyaWJ1dGUgXCIlc1wiIG9mIFwiJXNcIiIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQt9Cw0YHRgtCw0LLQuNGG0LAg0L3QsCDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0LjRgdCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIOKAniVsdeKAnCDRgyDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtCx0LDQstGZ0LDRmtCwINGB0LrQtdC90LjRgNCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LXQu9C1INC80LXRktGD0LzQtdC80L7RgNC40ZjQsCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGlub2RlIFwiJXNcIiIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIOKAniVsdeKAnCDRgyDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC30LDRgdGC0LDQstC40YbQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM2MSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0YLRgNCw0LbQtdGa0LAg4oCeL9C40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L7igJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INGB0YLQstCw0YDQsNGa0LAg0LrQvtGA0LXQvdC+0LMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIFwiJXNcIiB0byBjb3B5IgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC+0YLQstCw0YDQsNGa0LAg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC+0YLQstCw0YDQsNGa0LAg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQtNCwINC00L7QsdCw0LLQuNC8INC/0L7QtNCw0YLQutC1IOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuC3Rh9Cy0L7RgNCwIOKAniVsdeKAnCDRgyDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjAKKyMsIGZ1enp5Cittc2dpZCAibWFsbG9jIGZhaWxlZCIKK21zZ3N0ciAi0JTQvtC00LXQu9CwINC80LXQvNC+0YDQuNGY0LUg0L3QuNGY0LUg0YPRgdC/0LXQu9CwIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlYWQgbGluayBcIiVzXCIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQv9GA0L7QvNC10L3QtSDQstC10LvQuNGH0LjQvdC1IOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C40YHQsNGa0LAg0Lgt0YfQstC+0YDQsCDigJ4lbHXigJwg0YMg4oCeJXPigJwiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzk2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0L/QuNGB0LDRmtCwINC4LdGH0LLQvtGA0LAg4oCeJWx14oCcINGDIOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L7RgtCy0LDRgNCw0ZrQsCDigJ4lc+KAnCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICLRh9C40YLQsNC8INCx0LvQvtC6INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgaW5vZGUgZm9yIFwiJXNcIiIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0L7RgdGC0LDQstGZ0LDRmtCwINC40LfQtNCw0ZrQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0L7RgdGC0LDQstGZ0LDRmtCwINC30LDRgdGC0LDQstC40YbQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0L7QutGA0LXRgtCw0ZrQsCDRgdC60LXQvdC40YDQsNGa0LAg0Lgt0YfQstC+0YDQsCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICIiCisi0KPQv9C+0YLRgNC10LHQsDogJXMgWy1iZmhpeFZdIFstbyDRgdGD0L/QtdGA0LHQu9C+0Lo9PNCx0YAuPl0gWy1vINCy0LXQu9C40YfQuNC90LBf0LHQu9C+0LrQsD080LHRgC4+XSAiCisi0YPRgNC10ZLQsNGYXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNTkKK21zZ2lkICJibG9ja3MiCittc2dzdHIgItCx0LvQvtC60L7QstCwIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTY4Cittc2dpZCAiY2x1c3RlcnMiCittc2dzdHIgItC60LvQsNGB0YLQtdGA0LAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiR3JvdXAgJWx1OiAoQmxvY2tzICIKK21zZ3N0ciAi0JPRgNGD0L/QsCAlbHU6ICjQkdC70L7QutC+0LLQsCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiBjc3VtIDB4JTA0eCIKK21zZ3N0ciAiICDQodGD0LzQsCDQv9GA0L7QstC10YDQtSAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChFWFBFQ1RFRCAweCUwNHgpIgorbXNnc3RyICIgKNCe0KfQldCa0JjQktCQ0KUgMHglMDR4KSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzMworIywgYy1mb3JtYXQKK21zZ2lkICIgICVzIHN1cGVyYmxvY2sgYXQgIgorbXNnc3RyICIgINGB0YPQv9C10YDQsdC70L7QuiDigJ4lc+KAnCDQvdCwICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgItCf0YDQuNC80LDRgNC90L4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgItCg0LXQt9C10YDQstCwIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM4Cittc2dpZCAiLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAiCittc2dzdHIgIiwg0J7Qv9C40YHQvdC40YbQuCDQs9GA0YPQv9C1INC90LAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgINCg0LXQt9C10YDQstC40YHQsNC90LjRhSDQk9CU0KIg0LHQu9C+0LrQvtCy0LAg0L3QsCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiDQntC/0LjRgdC90LjQuiDQs9GA0YPQv9C1INC90LAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjU1Cittc2dpZCAiICBCbG9jayBiaXRtYXAgYXQgIgorbXNnc3RyICIgINCR0LjRgtC80LDQv9CwINCx0LvQvtC60LAg0L3QsCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiLCBjc3VtIDB4JTA4eCIKK21zZ3N0ciAiICDQodGD0LzQsCDQv9GA0L7QstC10YDQtSAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2CisjLCBmdXp6eQorbXNnaWQgIiBJbm9kZSBiaXRtYXAgYXQgIgorbXNnc3RyICIsINCR0LjRgtC80LDQv9CwINC4LdGH0LLQvtGA0LAg0L3QsCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgINCi0LDQsdC10LvQsCDQuC3Rh9Cy0L7RgNCwINC90LAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSAlcyDRgdC70L7QsdC+0LTQvdC+LCAldSDRgdC70L7QsdC+0LTQvdC40YUg0Lgt0YfQstC+0YDQvtCy0LAsICV1INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwJXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCAldSB1bnVzZWQgaW5vZGVzXG4iCittc2dzdHIgIiwgJXUg0L3QtdC60L7RgNC40YjRm9C10L3QuCDQuC3Rh9Cy0L7RgNC+0LLQuFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg5Cittc2dpZCAiICBGcmVlIGJsb2NrczogIgorbXNnc3RyICIgINCh0LvQvtCx0L7QtNC90LjRhSDQsdC70L7QutC+0LLQsDogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgINCh0LvQvtCx0L7QtNC90LjRhSDQuC3Rh9Cy0L7RgNC+0LLQsDogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQwCittc2dpZCAid2hpbGUgcHJpbnRpbmcgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDRiNGC0LDQvNC/0LDRmtCwINGB0L/QuNGB0LrQsCDQvtGI0YLQtdGb0LXQvdC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgItCb0L7RiNC40YUg0LHQu9C+0LrQvtCy0LA6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuC3Rh9Cy0L7RgNCwINC00L3QtdCy0L3QuNC60LAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtGC0LLQsNGA0LDRmtCwINC4LdGH0LLQvtGA0LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDRgdGD0L/QtdGA0LHQu9C+0LrQsCDQtNC90LXQstC90LjQutCwIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA0Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlciBpbnZhbGlkIVxuIgorbXNnc3RyICLQp9Cw0YDQvtCx0L3QuCDQsdGA0L7RmCDRgdGD0L/QtdGA0LHQu9C+0LrQsCDQtNC90LXQstC90LjQutCwINGY0LUg0L3QtdC40YHQv9GA0LDQstCw0L0hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDcgbWlzYy9kdW1wZTJmcy5jOjQ5MAorbXNnaWQgIkpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAiCittc2dzdHIgItCk0YPQvdC60YbQuNGY0LUg0LTQvdC10LLQvdC40LrQsDogICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQyMAorbXNnaWQgIkpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgIgorbXNnc3RyICLQktC10LvQuNGH0LjQvdCwINC00L3QtdCy0L3QuNC60LA6ICAgICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisi0JTRg9C20LjQvdCwINC00L3QtdCy0L3QuNC60LA6ICAgICAgJXVcbiIKKyLQndC40Lcg0LTQvdC10LLQvdC40LrQsDogICAgICAgICAweCUwOHhcbiIKKyLQn9C+0YfQtdGC0LDQuiDQtNC90LXQstC90LjQutCwOiAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgItCR0YDQvtGYINCz0YDQtdGI0LrQtSDQtNC90LXQstC90LjQutCwOiAgICAgICAgICAgICVkXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NjYgbWlzYy90dW5lMmZzLmM6MjExCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDRh9C40YLQsNGa0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ3NAorbXNnaWQgIkNvdWxkbid0IGZpbmQgam91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlcnMiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQvdCw0ZLQtdC8INGH0LDRgNC+0LHQvdC1INCx0YDQvtGY0LXQstC1INGB0YPQv9C10YDQsdC70L7QutCwINC00L3QtdCy0L3QuNC60LAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorItCS0LXQu9C40YfQuNC90LAg0LHQu9C+0LrQsCDQtNC90LXQstC90LjQutCwOiAgJXVcbiIKKyLQlNGD0LbQuNC90LAg0LTQvdC10LLQvdC40LrQsDogICAgICAgICAgJXVcbiIKKyLQn9GA0LLQuCDQsdC70L7QuiDQtNC90LXQstC90LjQutCwOiAgICAgICAldVxuIgorItCd0LjQtyDQtNC90LXQstC90LjQutCwOiAgICAgICAgICAgICAweCUwOHhcbiIKKyLQn9C+0YfQtdGC0LDQuiDQtNC90LXQstC90LjQutCwOiAgICAgICAgICV1XG4iCisi0JHRgNC+0Zgg0LrQvtGA0LjRgdC90LjQutCwINC00L3QtdCy0L3QuNC60LA6ICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdXNlcnM6ICAgICAgICAgICAgJXNcbiIKK21zZ3N0ciAi0JrQvtGA0LjRgdC90LjRhtC4INC00L3QtdCy0L3QuNC60LA6ICAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0LTQvtC00LXQu9C40Lwg0LzQtdC80L7RgNC40ZjRgyDQtNCwINCx0LjRhSDQvtCx0YDQsNC00LjQviDQvtC/0YbQuNGY0LUhXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L/QsNGA0LDQvNC10YLQsNGAINGB0YPQv9C10YDQsdC70L7QutCwOiAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgYmxvY2tzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L/QsNGA0LDQvNC10YLQsNGAINCy0LXQu9C40YfQuNC90LUg0LHQu9C+0LrQsDogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCd0LDQstC10LTQtdC90LUg0YHRgyDQu9C+0YjQtSDQv9GA0L7RiNC40YDQtdC90LUg0L7Qv9GG0LjRmNC1OiAlc1xuIgorIlxuIgorItCf0YDQvtGI0LjRgNC10L3QtSDQvtC/0YbQuNGY0LUg0YHRgyDRgNCw0LfQtNCy0L7RmNC10L3QtSDQt9Cw0YDQtdC30LjQvNCwLCDQuCDQvNC+0LPRgyDQuNC80LDRgtC4INCw0YDQs9GD0LzQtdC90YJcbiIKKyJcdNC60L7RmNC4INGY0LUg0L/QvtGB0YLQsNCy0ZnQtdC9INC30L3QsNC60L7QvCDRmNC10LTQvdCw0LrQvtGB0YLQuCAoPSkuXG4iCisiXG4iCisi0JjRgdC/0YDQsNCy0L3QtSDQv9GA0L7RiNC40YDQtdC90LUg0L7Qv9GG0LjRmNC1INGB0YM6XG4iCisiXHRzdXBlcmJsb2NrPTzQsdGA0L7RmCDRgdGD0L/QtdGA0LHQu9C+0LrQsD5cbiIKKyJcdGJsb2Nrc2l6ZT080LLQtdC70LjRh9C40L3QsCDQsdC70L7QutCwPlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx00JrQvtGA0LjRgdGC0LjQvCDigJ4lc+KAnFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0L3QsNGS0LXQvCDQuNGB0L/RgNCw0LLQsNC9INGB0YPQv9C10YDQsdC70L7QuiDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzI2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gYml0bWFwcyEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAlczogZXJyb3IgcmVhZGluZyBiaXRtYXBzOiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICVzOiDQs9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINCx0LjRgtC80LDQv9CwOiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAi0KPQv9C+0YLRgNC10LHQsDogJXMgWyAtcnxRIF0gWyAtZnIgXSDRg9GA0LXRktCw0Zgg0LTQsNGC0L7RgtC10LrQsF/RgdC70LjQutC1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICVzIC1JINGD0YDQtdGS0LDRmCDQtNCw0YLQvtGC0LXQutCwX9GB0LvQuNC60LVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyDQv9C+0LzQtdGA0LDRmF/QuNC30LLQvtGA0LAgXSBbIC1PINC/0L7QvNC10YDQsNGYX9C+0LTRgNC10LTQuNGI0YLQsCBdICIKKyLRgdC0X9C40LfQstC+0YDQsCBbINGB0LRf0L7QtNGA0LXQtNC40YjRgtCwIF1cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC00L7QtNC10LvQtSDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0LUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIGJsb2NrICVsbHVcbiIKK21zZ3N0ciAi0J/QuNGI0LXQvCDQsdC70L7QuiAlbGx1XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciB3cml0aW5nIGJsb2NrICVsbHUiCittc2dzdHIgItCz0YDQtdGI0LrQsCDQv9C40YHQsNGa0LAg0LHQu9C+0LrQsCAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTYKK21zZ2lkICJlcnJvciBpbiBnZW5lcmljX3dyaXRlKCkiCittc2dzdHIgItCz0YDQtdGI0LrQsCDRgyDRhNGD0L3QutGG0LjRmNC4IOKAnmdlbmVyaWNfd3JpdGUoKeKAnCIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsDog0LLQtdC70LjRh9C40L3QsCDQt9Cw0LPQu9Cw0LLRmdCwINGY0LUg0LLQtdGb0LAg0L7QtCDQstC10LvQuNGH0LjQvdC1INC/0LjRgdCw0ZrQsFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LTQtdC70LjQvCDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0YMg0LfQsNCz0LvQsNCy0ZnQsFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNDYKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN1cGVyYmxvY2siCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QuNGB0LDRmtCwINGB0YPQv9C10YDQsdC70L7QutCwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0LjRgdCw0ZrQsCDRgtCw0LHQtdC70LUg0Lgt0YfQstC+0YDQsCIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QuNGB0LDRmtCwINCx0LjRgtC80LDQv9C1INCx0LvQvtC60LAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0LjRgdCw0ZrQsCDQsdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNCwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICLQntGI0YLQtdGb0LXQvdC4INCx0LvQvtC6INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwICVsbHU6INC70L7RiNCwINC00YPQttC40L3QsF/Qt9Cw0L/QuNGB0LAgKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAi0J7RiNGC0LXRm9C10L3QuCDQsdC70L7QuiDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCAlbGx1OiDQu9C+0YjQsCDQtNGD0LbQuNC90LBf0L3QsNC30LjQstCwICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUgLyAlbGx1INCx0LvQvtC60LAgKCVkJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgItCj0LzQvdC+0LbQsNCy0LDQvCAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIiIKKyLQl9Cw0YPRgdGC0LDQstGZ0LDRmtC1INGb0LUg0L7RiNGC0LXRgtC40YLQuCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCwg0L/RgNC10LrQuNC90LjRgtC1INC+0L/QtdGCINCw0LrQviDRgdGC0LUg0YHQuNCz0YPRgNC90LhcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIg0L/RgNC10L7RgdGC0LDRmNC1ICVzINC/0YDQuCAlLjJmIE1CL3MiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY2NCBtaXNjL2UyaW1hZ2UuYzoxMTkxCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHJlYWRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAi0LPRgNC10YjQutCwINGH0LjRgtCw0ZrQsCDQsdC70L7QutCwICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgItCj0LzQvdC+0LbQuNGFICVsbHUgLyAlbGx1INCx0LvQvtC60LAgKCVkJSUpINGDIOKAniVz4oCcICIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAi0L/RgNC4ICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzU4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQtNC+0LTQtdGZ0LjQstCw0ZrQsCDRgtCw0LHQtdC70LUg4oCebDHigJwiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgwMworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDIgY2FjaGUiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LXRmdC40LLQsNGa0LAg0L7RgdGC0LDQstC1IOKAnmwy4oCcIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo4MjYKK21zZ2lkICIiCisiV2FybmluZzogVGhlcmUgYXJlIHN0aWxsIHRhYmxlcyBpbiB0aGUgY2FjaGUgd2hpbGUgcHV0dGluZyB0aGUgY2FjaGUsIGRhdGEgIgorIndpbGwgYmUgbG9zdCBzbyB0aGUgaW1hZ2UgbWF5IG5vdCBiZSB2YWxpZC5cbiIKK21zZ3N0ciAiIgorItCj0L/QvtC30L7RgNC10ZrQtTog0IjQvtGIINGD0LLQtdC6INC40LzQsCDRgtCw0LHQtdC70LAg0YMg0L7RgdGC0LDQstC4INC/0YDQuNC70LjQutC+0Lwg0YHRgtCw0LLRmdCw0ZrQsCDQvtGB0YLQsNCy0LUsINC/0L7QtNCw0YbQuCDRm9C1ICIKKyLQsdC40YLQuCDQuNC30LPRg9Cx0ZnQtdC90Lgg0YLQsNC60L4g0LTQsCDRgdC70LjQutCwINC80L7QttC00LAg0L3QtdGb0LUg0LHQuNGC0Lgg0LjRgdC/0YDQsNCy0L3QsC5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQtNC+0LTQtdC70LUg4oCeZXh0Ml9xY293Ml9pbWFnZeKAnCIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QutGA0LXRgtCw0ZrQsCDigJ5leHQyX3Fjb3cyX2ltYWdl4oCcIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorItCT0YDQtdGI0LrQsCDQv9GA0L7Qs9GA0LDQvNCwOiDQvdCw0L/RgNCw0LLRmdC10L3QviDRmNC1INC90LXQutC+0LvQuNC60L4g0YHQtdC60LLQtdC90YLQvdC40YUg0LHQu9C+0LrQvtCy0LAg0LHRgNC+0ZjQsCDRg9C/0YPRgtCwIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LXQu9C1INCx0LjRgtC80LDQv9C1INCx0LvQvtC60LAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQtNC+0LTQtdC70LUg0LHQuNGC0LzQsNC/0LUg0LjRgdC/0YDQtdC80LXRiNGC0LDQvdC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAi0J/RgNC10LPQu9C10LTQsNC8INC4LdGH0LLQvtGA0L7QstC1Li4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LTQtdC70LjQvCDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0YMg0LHQu9C+0LrQsCIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QvdCw0LLRmdCw0ZrQsCDQvdCwINC4LdGH0LLQvtGA0YMgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICLQodC40YDQvtCy0LAg0Lgg4oCecWNvdzLigJwg0YHQu9C40LrQtSDQvdC1INC80L7Qs9GDINCx0LjRgtC4INC40L3RgdGC0LDQu9C40YDQsNC90LUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MDcKK21zZ2lkICJlcnJvciByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgItCz0YDQtdGI0LrQsCDRh9C40YLQsNGa0LAg0LHQuNGC0LzQsNC/0LAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MTkKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRldmljZSBmaWxlIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC+0YLQstCw0YDQsNGa0LAg0LTQsNGC0L7RgtC10LrQtSDRg9GA0LXRktCw0ZjQsCIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LLRgNCw0ZvQsNGa0LAg0YLQsNCx0LXQu9C1INGB0LvQuNC60LUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICLQntC/0YbQuNGY0LAg4oCeLWHigJwg0YHQtSDQvNC+0LbQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQsNC80L4g0YHQsCDRgdC40YDQvtCy0LjQvCDQuNC70Lgg4oCeUUNPVzLigJwg0YHQu9C40LrQsNC80LAuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgItCf0L7QvNC10YDQsNGY0Lgg0YHRgyDQtNC+0LfQstC+0ZnQtdC90Lgg0YHQsNC80L4g0YHQsCDRgdC40YDQvtCy0LjQvCDRgdC70LjQutCw0LzQsC4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgItCg0LXQttC40Lwg0L/RgNC10LzQtdGI0YLQsNGa0LAg0ZjQtSDQtNC+0LfQstC+0ZnQtdC9INGB0LDQvNC+INGB0LAg0YHQuNGA0L7QstC40Lwg0YHQu9C40LrQsNC80LAuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTQzCittc2dpZCAiTW92ZSBtb2RlIHJlcXVpcmVzIGFsbCBkYXRhIG1vZGUuIgorbXNnc3RyICLQoNC10LbQuNC8INC/0YDQtdC80LXRiNGC0LDRmtCwINC30LDRhdGC0LXQstCwINGB0LLQtSDRgNC10LbQuNC80LUg0L/QvtC00LDRgtCw0LrQsC4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICLQv9GA0L7QstC10YDQsNCy0LDQvCDQtNCwINC70Lgg0ZjQtSDQv9GA0LjQutCw0YfQtdC9IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC60YDQtdGC0LDRmtC1IOKAnmUyaW1hZ2XigJwt0LAg0L3QsCDRgdC40YHRgtC10LzQuNC80LAg0LTQsNGC0L7RgtC10LrQsCDQvNC+0L3RgtC40YDQsNC90LjQvCDQt9CwINGH0LjRgtCw0ZrQtS/Qv9C40YHQsNGa0LUg0LzQvtC20LUgIgorItC00L7QstC10YHRgtC4INC00L5cbiIKKyLQvdC10LTQvtGB0LvQtdC00L3QvtGB0YLQuCDRgdC70LjQutC1INC60L7RmNCwINC/0L7RgtC+0Lwg0L3QtdGb0LUg0LHQuNGC0Lgg0LrQvtGA0LjRgdC90LAg0YMg0YHQstGA0YXQtSDQuNGB0L/RgNCw0LLRmdCw0ZrQsCAiCisi0LPRgNC10YjQsNC60LAuXG4iCisi0JrQvtGA0LjRgdGC0LjRgtC1INC+0L/RhtC40ZjRgyDigJ4tZuKAnCDQsNC60L4g0YHRgtCy0LDRgNC90L4g0LbQtdC70LjRgtC1INC+0LLQvi5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYxNAorbXNnaWQgIlFDT1cyIGltYWdlIGNhbiBub3QgYmUgd3JpdHRlbiB0byB0aGUgc3Rkb3V0IVxuIgorbXNnc3RyICLigJ5RQ09XMuKAnCDRgdC70LjQutCwINC90LUg0LzQvtC20LUg0LHQuNGC0Lgg0LjRgdC/0LjRgdCw0L3QsCDQvdCwINGB0YLQsNC90LTQsNGA0LTQvdC+0Lwg0LjQt9C70LDQt9GDIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0LTQvtCx0LDQstC40Lwg0L/QvtC00LDRgtC60LUg0LjQt9C70LDQt9CwXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBjb21wcmVzc2VkXG4iCittc2dzdHIgItCh0LvQuNC60LAgKCVzKSDRmNC1INGB0LDQttC10YLQsFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgItCh0LvQuNC60LAgKCVzKSDRmNC1INGI0LjRhNGA0L7QstCw0L3QsFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQv9C+0LrRg9GI0LDRmNCwINC/0YDQtdGC0LLQsNGA0LDRmtCwIOKAnnFjb3cy4oCcINGB0LvQuNC60LUgKCVzKSDRgyDRgdC40YDQvtCy0YMg0YHQu9C40LrRgyAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICLQntC/0YbQuNGY0LAg4oCeLWPigJwg0ZjQtSDQv9C+0LTRgNC20LDQvdCwINGY0LXQtNC40L3QviDRgyDRgdC40YDQvtCy0L7QvCDRgNC10LbQuNC80YNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgItCe0L/RhtC40ZjQsCDigJ4tY+KAnCDQvdC40ZjQtSDQv9C+0LTRgNC20LDQvdCwINC/0YDQuNC70LjQutC+0Lwg0L/QuNGB0LDRmtCwINC90LAg0YHRgtCw0L3QtNCw0YDQtNC90L7QvCDQuNC30LvQsNC30YNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC00L7QtNC10LvQtSDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0LUg0L/RgNC+0LLQtdGA0LUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgItCe0L/RhtC40ZjQsCDigJ4tcOKAnCDRmNC1INC/0L7QtNGA0LbQsNC90LAg0ZjQtdC00LjQvdC+INGDINGB0LjRgNC+0LLQvtC8INGA0LXQttC40LzRg1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJsb2NrcyBhbHJlYWR5IGNvbnRhaW5lZCB0aGUgZGF0YSB0byBiZSBjb3BpZWRcbiIKK21zZ3N0ciAiJWQg0LHQu9C+0LrQsCDQstC10Zsg0YHQsNC00YDQttC1INC/0L7QtNCw0YLQutC1INC30LAg0YPQvNC90L7QttCw0LLQsNGa0LVcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIC1yIGRldmljZVxuIgorbXNnc3RyICLQo9C/0L7RgtGA0LXQsdCwOiAlcyDQtNC40YHQulxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVsOiDQvdC1INC80L7Qs9GDINC00LAg0L7RgtCy0L7RgNC40Lwg4oCeJXPigJxcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQvdC1INC80L7Qs9GDINC00LAg0L/RgNC10ZLQtdC8INC90LAg0YHRg9C/0LXRgNCx0LvQvtC6XG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQs9GA0LXRiNC60LAg0YfQuNGC0LDRmtCwINGB0YPQv9C10YDQsdC70L7QutCwXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbDog0L3QuNGY0LUg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0LXQutGB0YIyXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgItCj0L/QvtC30L7RgNC10ZrQtTog0L3QsNGC0L/QuNGBINGY0LUg0L/RgNC10LTRg9CzLCDRgdC60YDQsNGb0YPRmNC10LwuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6INC90LUg0LzQvtCz0YMg0L7Qv9C10YIg0LTQsCDQv9GA0LXRktC10Lwg0L3QsCDRgdGD0L/QtdGA0LHQu9C+0LpcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQs9GA0LXRiNC60LAg0L/QuNGB0LDRmtCwINGB0YPQv9C10YDQsdC70L7QutCwXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgItCj0L/QvtGC0YDQtdCx0LA6IGUybGFiZWwg0YPRgNC10ZLQsNGYIFvQvdC+0LLQuF/QvdCw0YLQv9C40YFdXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgItCj0L/QvtGC0YDQtdCx0LA6ICVzIDzQtNCw0YLQvtGC0LXQutCwINC/0YDQtdC90L7RgdCwPiA80YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LA+XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAi0JLRgNC10LzQtSDQutCw0YfQtdGa0LAg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDRgdC1INGA0LDQt9C70LjQutGD0ZjQtSDQvtC0ICV1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorIywgZnV6enkKK21zZ2lkICJMYXN0IG1vdW50IHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgItCS0YDQtdC80LUg0LrQsNGH0LXRmtCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0YHQtSDRgNCw0LfQu9C40LrRg9GY0LUg0L7QtCAldVxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINGB0YPQv9C10YDQsdC70L7QutCwINC00L3QtdCy0L3QuNC60LAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGZldGNoaW5nIHN1cGVyYmxvY2siCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QuNGB0LDRmtCwINGB0YPQv9C10YDQsdC70L7QutCwIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0YHRg9C/0LXRgNCx0LvQvtC60LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINGB0YPQv9C10YDQsdC70L7QutGDIgorCisjOiBtaXNjL2UydW5kby5jOjMzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L/QvtC80LXRgNCw0Zg6ICVzXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IHdyaXRlIHRvIGFuIHVuZG8gZmlsZSB3aGlsZSByZXBsYXlpbmcgaXQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzozNjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgdW5kbyBmaWxlIGAlcydcbiIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQvtGC0LLQsNGA0LDRmtCwINC00LDRgtC+0YLQtdC60LUg0YPRgNC10ZLQsNGY0LAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC60L7RgNC10L3QvtCzINC4LdGH0LLQvtGA0LAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6INC/0YDQtdCy0LjRiNC1INGD0YDQtdGS0LDRmNCwXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgItCh0YPQvNCwINC/0YDQvtCy0LXRgNC1INC4LdGH0LLQvtGA0LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINC4LdGH0LLQvtGA0YMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICLQl9Cw0LPQu9Cw0LLRmdC1INGA0LDRgdC/0L7QvdCwINGY0LUg0L7RiNGC0LXRm9C10L3QviIKKworIzogbWlzYy9lMnVuZG8uYzo0MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gc21hbGwuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorItCh0YPQv9C10YDQsdC70L7QuiDQtNC90LXQstC90LjQutCwINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQvdC10L/QvtC30L3QsNGC0YMg0L3QtdGB0LDQs9C70LDRgdC90YMg0LfQsNGB0YLQsNCy0LjRhtGDINGE0YPQvdC60YbQuNGY0LUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/RgNC40LvQuNC60L7QvCDQvtC00YDQtdGS0LjQstCw0ZrQsCDQtNCwINC70Lgg0ZjQtSDigJ4lc+KAnCDQv9GA0LjQutCw0YfQtdC9LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworIywgZnV6enkKK21zZ2lkICJlMnVuZG8gc2hvdWxkIG9ubHkgYmUgcnVuIG9uIHVubW91bnRlZCBmaWxlc3lzdGVtcyIKK21zZ3N0ciAi4oCeZTJ1bmRv4oCcINGC0YDQtdCx0LAg0L/QvtC60YDQtdGC0LDRgtC4INGB0LDQvNC+INC90LAg0L7RgtC60LDRh9C10L3QvtC8INGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LBcbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQvtGC0LLQsNGA0LDRmtCwIOKAniVz4oCcIgorCisjOiBtaXNjL2UydW5kby5jOjQ2MAorbXNnaWQgInNwZWNpZmllZCBvZmZzZXQgaXMgdG9vIGxhcmdlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTAxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcga2V5cyIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDRh9C40YLQsNGa0LAg0LHQuNGC0LzQsNC/0LAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICLQntC0INCx0LvQvtC60LAgJWx1INC00L4gJWx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAi0J/QuNGI0LXQvCDQsdC70L7QuiAlbGx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAi0LPRgNC10YjQutCwINC/0LjRgdCw0ZrQsCDQsdC70L7QutCwICVsbHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAgZmluZHN1cGVyIGRldmljZSBbc2tpcGJ5dGVzIFtzdGFydGtiXV1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGluZyBhdCAlbGx1LCB3aXRoICV1IGJ5dGUgaW5jcmVtZW50c1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy8iCisibW91bnRfdGltZSAgICAgICAgICAgc2JfdXVpZCBsYWJlbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTFMdTogZmluaXNoZWQgd2l0aCBlcnJubyAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICLQo9Cf0J7Ql9Ce0KDQldCK0JU6INC90LUg0LzQvtCz0YMg0LTQsCDQvtGC0LLQvtGA0LjQvCDigJ4lc+KAnDogJXNcbiIKKworIzogbWlzYy9mc2NrLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGJhZCBmb3JtYXQgb24gbGluZSAlZCBvZiAlc1xuIgorbXNnc3RyICLQo9Cf0J7Ql9Ce0KDQldCK0JU6INC70L7RiCDQt9Cw0L/QuNGBINGDICVkLiDRgNC10LTRgyDQt9CwIOKAniVz4oCcXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisi0KPQn9Ce0JfQntCg0JXQitCVOiDQktCw0YjQsCDigJ4vZXRjL2ZzdGFi4oCcINC90LUg0YHQsNC00YDQttC4INC/0L7RmdC1IOKAnmZzY2sgcGFzc25v4oCcXG4iCisiXHTQiNCwINGb0YMg0YPQvNC10YHRgtC+INCy0LDRgSDRgdC60LvQtdC/0LDRgtC4INC90LXRiNGC0L4sINCw0LvQuCDQstC4XG4iCisiXHTRgtGA0LXQsdCwINC00LAg0L/QvtC/0YDQsNCy0LjRgtC1INC00LDRgtC+0YLQtdC60YMg4oCeL2V0Yy9mc3RhYuKAnCDRiNGC0L4g0L/RgNC1INCx0YPQtNC10YLQtSDQvNC+0LPQu9C4LlxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiAlczog0L3QuNGB0LDQvCDQvdCw0YjQsNC+XG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiDRgtGA0LXQvdGD0YLQsNC6OiDQndC10LzQsCDQstC40YjQtSDQv9GA0L7QuNC30LDRiNC70LjRhSDQv9GA0L7RhtC10YHQsD8hP1xuIgorCisjOiBtaXNjL2ZzY2suYzo2MTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZy4uLiAlcyBmb3IgZGV2aWNlICVzIGV4aXRlZCB3aXRoIHNpZ25hbCAlZC5cbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1Li4uIOKAniVz4oCcINC30LAg0YPRgNC10ZLQsNGYIOKAniVz4oCcINGY0LUg0LfQsNCy0YDRiNC40L4g0YHQuNCz0L3QsNC70L7QvCAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiDRgdGC0LDRmtC1INGY0LUg4oCeJXjigJwsINC+0LLQviDQvdC1INCx0Lgg0YLRgNC10LHQsNC70L4g0L3QuNC60LDQtNCwINC00LAg0YHQtSDQtNC10YHQuC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICLQl9Cw0LLRgNGI0LXQvdC+INGY0LUg0YHQsCDigJ4lc+KAnCAo0YHRgtCw0ZrQtSDQuNC30LvQsNC30LAgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiDQk9GA0LXRiNC60LAg4oCeJWTigJwg0L/RgNC40LvQuNC60L7QvCDQuNC30LLRgNGI0LDQstCw0ZrQsCDigJ5mc2NrLiVz4oCcINC30LAg4oCeJXPigJxcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyLQmNC70Lgg0YHQstC1INC40LvQuCDQvdC40ZjQtdC00L3QsCDQstGA0YHRgtCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0L/RgNC+0YHQu9C10ZLQtdC90LAg0LfQsCDigJ4tdOKAnCDQvNC+0YDQsCDQuNC80LDRgtC4ICIKKyLQv9GA0LXRhNC40LrRgVxuIgorIuKAnm5v4oCcINC40LvQuCDigJ4h4oCcLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC00L7QtNC10LvQuNC8INC80LXQvNC+0YDQuNGY0YMg0LfQsCDQstGA0YHRgtC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LBcbiIKKworIzogbWlzYy9mc2NrLmM6ODg0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogc2tpcHBpbmcgYmFkIGxpbmUgaW4gL2V0Yy9mc3RhYjogYmluZCBtb3VudCB3aXRoIG5vbnplcm8gZnNjayBwYXNzICIKKyJudW1iZXJcbiIKK21zZ3N0ciAiIgorIiVzOiDQv9GA0LXRgdC60LDRh9C10Lwg0LvQvtGIINGA0LXQtCDRgyDQtNCw0YLQvtGC0LXRhtC4IOKAni9ldGMvZnN0YWLigJw6INGB0LLQtdC30YPRmNC10Lwg0LrQsNGH0LXRmtC1INGB0LAg0L3QtS3QvdGD0LvRgtC40LwgIgorItCx0YDQvtGY0LXQvCDQv9GA0L7Qu9Cw0LfQsCDigJ5mc2Nr4oCcLdCwXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6INC90LUg0LzQvtCz0YMg0LTQsCDQv9GA0L7QstC10YDQuNC8IOKAniVz4oCcOiDQvdC40YHQsNC8INC90LDRiNCw0L4g4oCeZnNjay4lc+KAnFxuIgorCisjOiBtaXNjL2ZzY2suYzo5NjcKK21zZ2lkICJDaGVja2luZyBhbGwgZmlsZSBzeXN0ZW1zLlxuIgorbXNnc3RyICLQn9GA0L7QstC10YDQsNCy0LDQvCDRgdCy0LUg0YHQuNGB0YLQtdC80LUg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAi4oCU4oCU0YfQtdC60LDQvOKAlOKAlCAoJWQuINC60L7RgNCw0LopXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyLQo9C/0L7RgtGA0LXQsdCwOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbINC+0LQgXSBdIFstdCDQstGA0YHRgtCwX9GB0LjRgV/QtNCw0YJdIFvQvtC/0YbQuNGY0LVf0YHQuNGBX9C00LDRgl0gIgorIlvRgdC40YFf0LTRgtGC0LrQsC4uLl1cbiIKKworIzogbWlzYy9mc2NrLmM6MTEyMAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogdG9vIG1hbnkgZGV2aWNlc1xuIgorbXNnc3RyICIlczog0L/RgNC10LLQuNGI0LUg0YPRgNC10ZLQsNGY0LBcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6INC/0YDQtdCy0LjRiNC1INCw0YDQs9GD0LzQtdC90LDRgtCwXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKKyMsIGZ1enp5Cittc2dpZCAiTW91bnRpbmcgcmVhZC1vbmx5LlxuIgorbXNnc3RyICLQlNCw0YLQvtGC0LXQutCwINGY0LUg0L7RgtCy0L7RgNC10L3QsCDRgdCw0LzQviDQt9CwINGH0LjRgtCw0ZrQtSIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NiBtaXNjL2Z1c2UyZnMuYzozNzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc3IG1pc2MvZnVzZTJmcy5jOjM3OTEgbWlzYy90dW5lMmZzLmM6MzIwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisi0J/RgNCy0L4g0L/QvtC60YDQtdC90LjRgtC1IOKAnmUyZnNjayAtZiAlc+KAnC5cbiIKKyJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgItCh0LrRg9C/0ZnQsNGa0LUg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90L5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAi0KPQv9C+0YLRgNC10LHQsDogJXMgWy1SVmFkbHZdIFvQtNCw0YLQvtGC0LXQutC1Li4uXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgItCX0LAg0LLRgNC10LzQtSDRh9C40YLQsNGa0LAg0LfQsNGB0YLQsNCy0LjRhtCwINC90LAg4oCeJXPigJwiCisKKyM6IG1pc2MvbHNhdHRyLmM6OTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAi0JfQsCDQstGA0LXQvNC1INGH0LjRgtCw0ZrQsCDQuNC30LTQsNGa0LAg0L3QsCDigJ4lc+KAnCIKKworIzogbWlzYy9sc2F0dHIuYzoxMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICLQl9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC40LfQtNCw0ZrQsCDQvdCwIOKAniVz4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisi0KPQv9C+0YLRgNC10LHQsDogJXMgWy1jfC1sINC90LDQt9C40LJf0LTQsNGC0L7RgtC10LrQtV0gWy1iINCy0LXQu9C40YfQuNC90LBf0LHQu9C+0LrQsF0gWy1DICIKKyLQstC10LvQuNGH0LjQvdCwX9C60LvQsNGB0YLQtdGA0LBdXG4iCisiXHRbLWkg0LHQsNGY0YLQvtCy0LBf0L/Qvl/QuC3Rh9Cy0L7RgNGDXSBbLUkg0LLQtdC70LjRh9C40L3QsF/QuC3Rh9Cy0L7RgNCwXSBbLUog0L7Qv9GG0LjRmNC1X9C00L3QtdCy0L3QuNC60LBdXG4iCisiXHRbLUcg0LLQtdC70LjRh9C40L3QsF/RhNC70LXQutGBX9Cz0YDRg9C/0LVdIFstTiDQsdGA0L7RmF/QuC3Rh9Cy0L7RgNC+0LLQsF1cbiIKKyJcdFstbSDQv9GA0L7RhtC10L3QsNGCX9GA0LXQt9C10YDQstC40YHQsNC90LjRhV/QsdC70L7QutC+0LLQsF0gWy1vINC+0YFf0YLQstC+0YDRhtCwXVxuIgorIlx0Wy1nINCx0LvQvtC60L7QstCwX9C/0L5f0LPRgNGD0L/QuF0gWy1MINC90LDRgtC/0LjRgV/QstC+0LvRg9C80LXQvdCwXSBbLU0gIgorItC/0L7RgdC70LXQtNGa0Lhf0L/RgNC40LrQsNGH0LXQvdC4X9C00LjRgNC10LrRgtC+0YDQuNGY0YPQvF1cbiIKKyJcdFstTyDRhNGD0L3QutGG0LjRmNCwWywuLi5dXSBbLXIg0YDQtdCy0LjQt9C40ZjQsF/RgdC0LdCwXSBbLUUg0L/RgNC+0YjQuNGA0LXQvdCwX9C+0L/RhtC40ZjQsFssLi4uXV1cbiIKKyJcdFstdCBmcy10eXBlXSBbLVQg0LLRgNGB0YLQsF/Rg9C/0L7RgtGA0LXQsdC1IF0gWy1VIFVVSURdIFstam5xdkRGS1NWXSDRg9GA0LXRktCw0ZggIgorIlvQsdGA0L7RmF/QsdC70L7QutC+0LLQsF1cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICLQn9C+0LrRgNC10ZvQtdC8INC90LDRgNC10LTQsdGDOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgItC00L7QuiDRgdCw0Lwg0L/QvtC60YPRiNCw0LLQsNC+INC00LAg0L/QvtC60YDQtdC90LXQvCDigJ4lc+KAnCIKKworIzogbWlzYy9ta2UyZnMuYzoyNjYKK21zZ2lkICJ3aGlsZSBwcm9jZXNzaW5nIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIHByb2dyYW0iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L7QsdGA0LDQtNC1INGB0L/QuNGB0LrQsCDQu9C+0YjQuNGFINCx0LvQvtC60L7QstCwINC40Lcg0L/RgNC+0LPRgNCw0LzQsCIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgItCR0LvQvtC6ICVkINGDINC+0LHQu9Cw0YHRgtC4INC+0L/QuNGB0L3QuNC60LAg0L/RgNC40LzQsNGA0L3QvtCzINGB0YPQv9C10YDQsdC70L7QutCwL9Cz0YDRg9C/0LUg0ZjQtSDQu9C+0YguXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyLQkdC70L7QutC+0LLQuCDQvtC0ICV1INC00L4gJXUg0LzQvtGA0LDRmNGDINCx0LjRgtC4INC00L7QsdGA0Lgg0LTQsCDQsdC4INGB0LUg0LjQt9Cz0YDQsNC00LjQviDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAi0J/RgNC10LrQuNC00LDQvC4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQo9C/0L7Qt9C+0YDQtdGa0LU6INGA0LXQt9C10YDQstCwINC+0L/QuNGB0L3QuNC60LAg0YHRg9C/0LXRgNCx0LvQvtC60LAv0LPRgNGD0L/QtSDQvdCwINCx0LvQvtC60YMgJXUg0YHQsNC00YDQttC4XG4iCisiXHTQu9C+0YjQtSDQsdC70L7QutC+0LLQtS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQvtCx0LXQu9C10LbQsNCy0LDRmtCwINC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAg0LrQvtGA0LjRiNGb0LXQvdC40LwiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAi0J/QuNGI0LXQvCDRgtCw0LHQtdC70LUg0Lgt0YfQstC+0YDQsDogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisi0J3QtSDQvNC+0LPRgyDQtNCwINC30LDQv9C40YjQtdC8ICVkINCx0LvQvtC60LAg0YMg0YLQsNCx0LXQu9C4INC4LdGH0LLQvtGA0LAg0YHQsCDQv9C+0YfQtdGC0LrQvtC8ICVsbHU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICLQs9C+0YLQvtCy0L4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0YHRgtCy0LDRgNCw0ZrQsCDQutC+0YDQtdC90L7QsyDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDRh9C40YLQsNGa0LAg0LrQvtGA0LXQvdC+0LMg0Lgt0YfQstC+0YDQsCIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7RgdGC0LDQstGZ0LDRmtCwINCy0LvQsNGB0L3QuNGI0YLQstCwINC60L7RgNC10L3QvtCzINC4LdGH0LLQvtGA0LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDk2Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0YHRgtCy0LDRgNCw0ZrQsCDigJ4v0LjQt9Cz0YPQsdGZ0LXQvdC+K9C90LDRktC10L3QvuKAnCIKKworIzogbWlzYy9ta2UyZnMuYzo1MDMKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIC9sb3N0K2ZvdW5kIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INGC0YDQsNC20LXRmtCwIOKAni/QuNC30LPRg9Cx0ZnQtdC90L4r0L3QsNGS0LXQvdC+4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDRiNC40YDQtdGa0LAg4oCeL9C40LfQs9GD0LHRmdC10L3QvivQvdCw0ZLQtdC90L7igJwiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0Lgt0YfQstC+0YDQsCDQvtGI0YLQtdGb0LXQvdC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgItCd0LXRgdGC0LDQu9C+INGY0LUg0LzQtdC80L7RgNC40ZjQtSDRgtC+0LrQvtC8INCx0YDQuNGB0LDRmtCwINGB0LXQutGC0L7RgNCwICVkLSVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrIDA6ICVzXG4iCittc2dzdHIgItCj0L/QvtC30L7RgNC10ZrQtTog0L3QtSDQvNC+0LPRgyDQtNCwINGH0LjRgtCw0Lwg0LHQu9C+0LogMDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1OiDQvdC1INC80L7Qs9GDINC00LAg0L7QsdGA0LjRiNC10Lwg0YHQtdC60YLQvtGAICVkOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjYwMAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0LrRgNC10YLQsNGa0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQvdCwINC90YPQu9GDINGD0YDQtdGS0LDRmCDQtNC90LXQstC90LjQutCwOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQv9C+0YHRgtCw0LLRmdCw0ZrQsCDQvdCwINC90YPQu9GDINGD0YDQtdGS0LDRmNCwINC00L3QtdCy0L3QuNC60LAgKNCx0LvQvtC6ICVsbHUsINGD0LrRg9C/0L3QviAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C40YHQsNGa0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgItCh0YLQstCw0YDQsNC8INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGB0LAgJWxsdSAlZGsg0LHQu9C+0LrQsCDQuCAldSDQuC3Rh9Cy0L7RgNCwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyLRg9C/0L7Qt9C+0YDQtdGa0LU6ICVsbHUg0LHQu9C+0LrQsCDRgdC1INC90LUg0LrQvtGA0LjRgdGC0LUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAi0J3QsNGC0L/QuNGBINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LA9JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAi0JLRgNGB0YLQsCDQntChLdCwOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgItCS0LXQu9C40YfQuNC90LAg0LHQu9C+0LrQsD0ldSAo0LfQsNC/0LjRgdC90LjQuj0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2x1c3RlciBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgItCS0LXQu9C40YfQuNC90LAg0LrQu9Cw0YHRgtC10YDQsD0ldSAo0LfQsNC/0LjRgdC90LjQuj0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICLQktC10LvQuNGH0LjQvdCwINGE0YDQsNCz0LzQtdC90YLQsD0ldSAo0LfQsNC/0LjRgdC90LjQuj0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3RyaWRlPSV1IGJsb2NrcywgU3RyaXBlIHdpZHRoPSV1IGJsb2Nrc1xuIgorbXNnc3RyICLQmNGB0LrQvtGA0LDQuiA9ICV1INCx0LvQvtC60LAsINGI0LjRgNC40L3QsCDRgtGA0LDQutC1ID0gJXUg0LHQu9C+0LrQsFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1INC4LdGH0LLQvtGA0LAsICVsbHUg0LHQu9C+0LrQsFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUg0LHQu9C+0LrQsCAoJTIuMmYlJSkg0ZjQtSDRgNC10LfRgNC10LLQuNGB0LDQvdC+INC30LAg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQsFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaXJzdCBkYXRhIGJsb2NrPSV1XG4iCittc2dzdHIgItCf0YDQstC4INCx0LvQvtC6INC/0L7QtNCw0YLQsNC60LA9JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUm9vdCBkaXJlY3Rvcnkgb3duZXI9JXU6JXVcbiIKK21zZ3N0ciAi0JLQu9Cw0YHQvdC40Log0LrQvtGA0LXQvdC+0LMg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LA9JXU6JXVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAi0J3QsNGY0LLQtdGb0Lgg0LHRgNC+0Zgg0LHQu9C+0LrQvtCy0LAg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LA9JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSDQs9GA0YPQv9C1INCx0LvQvtC60L7QstCwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiV1INCz0YDRg9C/0LAg0LHQu9C+0LrQvtCy0LBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1INCx0LvQvtC60LAg0L/QviDQs9GA0YPQv9C4LCAldSDQutC70LDRgdGC0LXRgNCwINC/0L4g0LPRgNGD0L/QuFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1INCx0LvQvtC60LAg0L/QviDQs9GA0YPQv9C4LCAldSDRhNGA0LDQs9C80LXQvdGC0LAg0L/QviDQs9GA0YPQv9C4XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUg0Lgt0YfQstC+0YDQsCDQv9C+INCz0YDRg9C/0LhcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICLQo9Cj0JjQlCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgItCg0LXQt9C10YDQstC1INGB0YPQv9C10YDQsdC70L7QutCwINGB0LzQtdGI0YLQtdC90LUg0L3QsCDQsdC70L7QutC+0LLQuNC80LA6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICLigJ4lc+KAnCDQt9Cw0YXRgtC10LLQsCDigJ4tTyA2NNCx0LjRgtCw4oCcXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAi4oCeJXPigJwg0LzQvtGA0LAg0LHQuNGC0Lgg0L/RgNC1IOKAnnJlc2l6ZT0ldeKAnFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGRlc2Nfc2l6ZTogJyVzJ1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDQstC10LvQuNGH0LjQvdCwINC+0L/QuNGB0L3QuNC60LA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQv9C+0LzQtdGA0LDRmDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NTMgbWlzYy90dW5lMmZzLmM6MTk1OAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INC/0LXRgNC40L7QtCDQvtGB0LLQtdC20LDQstCw0ZrQsCDQvNC80L8t0LA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INCx0YDQvtGYINGB0YPQv9C10YDQsdC70L7QutC+0LLQsCDRgNC10LfQtdGA0LLQtTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQv9Cw0YDQsNC80LXRgtCw0YAg0LjRgdC60L7RgNCw0LrQsDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpcGUtd2lkdGggcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQv9Cw0YDQsNC80LXRgtCw0YAg0YjQuNGA0LjQvdC1INGC0YDQsNC60LU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcmVzaXplIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L/QsNGA0LDQvNC10YLQsNGAINC/0YDQvtC80LXQvdC1INCy0LXQu9C40YfQuNC90LU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKyLQndCw0ZjQstC10ZvQsCDQstGA0LXQtNC90L7RgdGCINC/0YDQvtC80LXQvdC1INCy0LXQu9C40YfQuNC90LUg0LzQvtGA0LAg0LHQuNGC0Lgg0LLQtdGb0LAg0L7QtCDQstC10LvQuNGH0LjQvdC1INGB0LjRgdGC0LXQvNCwICIKKyLQtNCw0YLQvtGC0LXQutCwLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorItCf0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg0L3QsCDQvNGA0LXQttC4INC90LjRmNC1INC/0L7QtNGA0LbQsNC90LAg0YHQsCDRgdC40YHRgtC10LzQuNC80LAg0LTQsNGC0L7RgtC10LrQsCDRgNC10LLQuNC30LjRmNC1IDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INC60L7RgNC10L3QuCDQstC70LDRgdC90LjQujogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCd0LDQstC10LTQtdC90LAg0ZjQtSDQu9C+0YjQsCDQvtC/0YbQuNGY0LA6ICVzXG4iCisiXG4iCisi0J/RgNC+0YjQuNGA0LXQvdC1INC+0L/RhtC40ZjQtSDRgdGDINGA0LDQt9C00LLQvtGY0LXQvdC1INC30LDRgNC10LfQuNC80LAsINC4INC80L7Qs9GDINC40LzQsNGC0Lgg0LDRgNCz0YPQvNC10L3RglxuIgorIlx00LrQvtGY0Lgg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L0g0LfQvdCw0LrQvtC8INGY0LXQtNC90LDQutC+0YHRgtC4ICg9KS5cbiIKKyJcbiIKKyLQmNGB0L/RgNCw0LLQvdC1INC/0YDQvtGI0LjRgNC10L3QtSDQvtC/0YbQuNGY0LUg0YHRgzpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PNC/0LXRgNC40L7QtD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTzQoNCQ0JjQlCDQutC+0LzQsNC00LAg0L/QvtC00LDRgtCw0LrQsCDQv9C+INC00LjRgdC60YMg0YMg0LHQu9C+0LrQvtCy0LjQvNCwPlxuIgorIlx0c3RyaXBlLXdpZHRoPTzQoNCQ0JjQlCDQuNGB0LrQvtGA0LDQuiAqINC/0L7QtNCw0YLQsNC6INC00LjRgdC60L7QstCwINGDINCx0LvQvtC60L7QstC40LzQsD5cbiIKKyJcdG9mZnNldD080L/QvtC80LXRgNCw0Zgg0LfQsCDRgdGC0LLQsNGA0LDRmtC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LA+XG4iCisiXHRyZXNpemU9PNC/0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg0L3QsNGY0LLQtdGb0LUg0LLQtdC70LjRh9C40L3QtSDRgyDQsdC70L7QutC+0LLQuNC80LA+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAg0LjRgdC60ZnRg9GH0YPRmNC1LCAxINGD0LrRmdGD0YfRg9GY0LU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwINC40YHQutGZ0YPRh9GD0ZjQtSwgMSDRg9C60ZnRg9GH0YPRmNC1PlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAg0LjRgdC60ZnRg9GH0YPRmNC1LCAxINGD0LrRmdGD0YfRg9GY0LU+XG4iCisiXHRyb290X3VpZD080YPQuNC0INC60L7RgNC10L3QvtCzINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwPlxuIgorIlx0cm9vdF9naWQ9PNCz0LjQtCDQutC+0YDQtdC90L7QsyDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsD5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTzQutC+0YDQuNGB0L3QuNC6INCY0JvQmCDQs9GA0YPQv9CwPlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCj0L/QvtC30L7RgNC10ZrQtTog0KDQkNCY0JQg0YjQuNGA0LjQvdCwINGC0YDQsNC60LUgJXUg0L3QuNGY0LUg0L/QsNGA0L3QuCDRg9C80L3QvtC20LDQuiDQuNGB0LrQvtGA0LDQutCwICV1LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBta2UyZnMgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyLQk9GA0LXRiNC60LAg0YHQuNC90YLQsNC60YHQtSDRgyDQtNCw0YLQvtGC0LXRhtC4INC/0L7QtNC10YjQsNCy0LDRmtCwIOKAnm1rZTJmc+KAnC3QsCAoJXMsICVkLiDRgNC10LQpXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQtdC90LAg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0L3QsCDQvtC/0YbQuNGY0LAg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTI2IG1pc2MvdHVuZTJmcy5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1vdW50IG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LXQvdCwINGY0LUg0L3QtdC40YHQv9GA0LDQstC90LAg0L7Qv9GG0LjRmNCwINC60LDRh9C10ZrQsDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjYyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJZb3VyIG1rZTJmcy5jb25mIGZpbGUgZG9lcyBub3QgZGVmaW5lIHRoZSAlcyBmaWxlc3lzdGVtIHR5cGUuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQktCw0YjQsCDQtNCw0YLQvtGC0LXQutCwIOKAnm1rZTJmcy5jb25m4oCcINC90LUg0LTQtdGE0LjQvdC40YjQtSDigJ4lc+KAnCDQstGA0YHRgtGDINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCS0LXRgNC+0LLQsNGC0L3QviDRgtGA0LXQsdCwINC00LAg0LjQvdGB0YLQsNC70LjRgNCw0YLQtSDQvtGB0LLQtdC20LXQvdGDINC00LDRgtC+0YLQtdC60YMg4oCebWtlMmZzLmNvbmbigJwuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgItCf0YDQtdC60LjQtNCw0LwuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0KPQv9C+0LfQvtGA0LXRmtC1OiDQstGA0YHRgtCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg4oCeJXPigJwg0L3QuNGY0LUg0LTQtdGE0LjQvdC40YHQsNC90LAg0YMg0LTQsNGC0L7RgtC10YbQuCDigJ5ta2UyZnMuIgorImNvbmbigJxcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC00L7QtNC10LvQuNC8INC80LXQvNC+0YDQuNGY0YMg0LfQsCDQvdC+0LLRgyDQn9Cj0KLQkNCK0KMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogJWxkKS5cbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDRg9GB0L/QtdGI0L3QviDQtNCwINC/0L7QutGA0LXQvdC10Lwg0L/RgNC+0YTQuNC7ICjQs9GA0LXRiNC60LA6ICVsZCkuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU2NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrIHNpemUgLSAlcyIKK21zZ3N0ciAi0L3QtdC40YHQv9GA0LDQstC90LAg0LLQtdC70LjRh9C40L3QsCDQsdC70L7QutCwIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAi0KPQv9C+0LfQvtGA0LXRmtC1OiDQstC10LvQuNGH0LjQvdCwINCx0LvQvtC60LAgJWQg0L3QuNGY0LUg0YPQv9C+0YLRgNC10LHRmdC40LLQsCDQvdCwINCy0LXRm9C40L3QuCDRgdC40YHRgtC10LzQsC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTg3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgItC90LXQuNGB0L/RgNCw0LLQvdCwINCy0LXQu9C40YfQuNC90LAg0LrQu9Cw0YHRgtC10YDQsCDigJQgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAi4oCeLVLigJwg0ZjQtSDQt9Cw0YHRgtCw0YDQtdC70L4sINC60L7RgNC40YHRgtC40YLQtSDigJ4tReKAnCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgItC70L7RiNC1INC/0L7QvdCw0YjQsNGa0LUg0LPRgNC10YjQutC1IOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgItCd0LXQtNC+0LfQstC+0ZnQtdC90Lgg0LHRgNC+0Zgg0LfQsCDQsdC70L7QutC+0LLQtSDQv9C+INCz0YDRg9C/0LgiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICLQsdC70L7QutC+0LLQsCDQv9C+INCz0YDRg9C/0Lgg0LzQvtGA0LAg0LHQuNGC0Lgg0YPQvNC90L7QttCw0Log0L7QtCA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICLQndC10LTQvtC30LLQvtGZ0LXQvdC4INCx0YDQvtGYINC30LAg0LLQtdC70LjRh9C40L3RgyDigJ5mbGV4X2Jn4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgItCS0LXQu9C40YfQuNC90LAg4oCeZmxleF9iZ+KAnCDQvNC+0YDQsCDQsdC40YLQuCDRgdGC0LXQv9C10L0gMiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICLQktC10LvQuNGH0LjQvdCwIOKAnmZsZXhfYmfigJwgKCVsdSkg0LzQvtGA0LAg0LHQuNGC0Lgg0LzQsNGa0LUg0LjQu9C4INGY0LXQtNC90LDQutCwINGB0LAgMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICLQvdC10LjRgdC/0YDQsNCy0LDQvSDQvtC/0YHQtdCzINC4LdGH0LLQvtGA0LAgJXMgKNC90LDRmNC8LiAlZC/QvdCw0ZjQsi4gJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgItC90LXQuNGB0L/RgNCw0LLQvdCwINCy0LXQu9C40YfQuNC90LAg0Lgt0YfQstC+0YDQsCDigJQgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyLQo9C/0L7Qt9C+0YDQtdGa0LU6INCe0L/RhtC40ZjQsCDigJ4tS+KAnCDRmNC1INC30LDRgdGC0LDRgNC10LvQsCDQuCDQvdC1INGC0YDQtdCx0LAg0LLQuNGI0LUg0LTQsCDRgdC1INC60L7RgNC40YHRgtC4LiDQmtC+0YDQuNGB0YLQuNGC0LUgIgorItC/0YDQvtGI0LjRgNC10L3RgyDQvtC/0YbQuNGY0YMg4oCeLUUgbm9kaXNjYXJk4oCcIVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgItGDINC00L7QtNC10LvQuCDQvNC10LzQvtGA0LjRmNC1INC30LAg0L3QsNC30LjQsl/QtNCw0YLQvtGC0LXQutC1X9C70L7RiNC40YVf0LHQu9C+0LrQvtCy0LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nOyB3aWxsIGJlIHRydW5jYXRlZCB0byAnJXMnXG4iCisiXG4iCittc2dzdHIgItCj0L/QvtC30L7RgNC10ZrQtTog0L3QsNGC0L/QuNGBINGY0LUg0L/RgNC10LTRg9CzLCDRgdC60YDQsNGb0YPRmNC10LwuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcxMgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJXMiCittc2dzdHIgItC90LXQuNGB0L/RgNCw0LLQsNC9INC/0YDQvtGG0LXQvdCw0YIg0YDQtdC30LXRgNCy0LjRgdCw0L3QuNGFINCx0LvQvtC60L7QstCwIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgItC70L7RiCDQsdGA0L7RmCDQuC3Rh9Cy0L7RgNC+0LLQsCDigJQgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC00L7QtNC10LvQtSDQvNC10ZLRg9C80LXQvNC+0YDQuNGY0LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc1NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAi0LvQvtGIINC90LjQstC+INGA0LXQstC40LfQuNGY0LUg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQv9C+0LrRg9GI0LDRmNCwINGB0YLQstCw0YDQsNGa0LAg0YDQtdCy0LjQt9C40ZjQtSAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgItCe0L/RhtC40ZjQsCDigJ4tdOKAnCDRgdC1INC80L7QttC1INC60L7RgNC40YHRgtC40YLQuCDRgdCw0LzQviDRmNC10LTQvdC+0LwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICLQntC/0YbQuNGY0LAg4oCeLVTigJwg0YHQtSDQvNC+0LbQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQsNC80L4g0ZjQtdC00L3QvtC8IgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQvtGC0LLQsNGA0LDRmtCwINGD0YDQtdGS0LDRmNCwINC00L3QtdCy0L3QuNC60LAg4oCeJXPigJxcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICIiCisi0JLQtdC70LjRh9C40L3QsCDQsdC70L7QutCwINGD0YDQtdGS0LDRmNCwINC00L3QtdCy0L3QuNC60LAgKCVkKSDRmNC1INC80LDRmtCwINC+0LQg0L3QsNGY0LzQsNGa0LUg0LLQtdC70LjRh9C40L3QtSDQsdC70L7QutCwICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAi0JrQvtGA0LjRgdGC0LjQvCDQstC10LvQuNGH0LjQvdGDINCx0LvQvtC60LAg0YPRgNC10ZLQsNGY0LAg0LTQvdC10LLQvdC40LrQsDogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgItC90LXQuNGB0L/RgNCw0LLQvdC4INCx0LvQvtC60L7QstC4IOKAniVz4oCcINC90LAg0YPRgNC10ZLQsNGY0YMg4oCeJXPigJwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgItGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDAgcmVzaXplL21haW4uYzo0OTEKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGZpbGVzeXN0ZW0gc2l6ZSIKK21zZ3N0ciAi0LTQvtC6INGB0LDQvCDQv9C+0LrRg9GI0LDQstCw0L4g0LTQsCDQvtC00YDQtdC00LjQvCDQstC10LvQuNGH0LjQvdGDINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisi0J3QtSDQvNC+0LPRgyDQtNCwINC+0LTRgNC10LTQuNC8INCy0LXQu9C40YfQuNC90YMg0YPRgNC10ZLQsNGY0LA7INC80L7RgNCw0YLQtSDQvdCw0LLQtdGB0YLQuFxuIgorItCy0LXQu9C40YfQuNC90YMg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorItCY0LfQstC10YjRgtC10L3QviDRmNC1INC00LAg0ZjQtSDQstC10LvQuNGH0LjQvdCwINGD0YDQtdGS0LDRmNCwINC90YPQu9CwLiAg0J3QsNCy0LXQtNC10L3QsCDRmNC1INC90LXQuNGB0L/RgNCw0LLQvdCwINC/0LDRgNGC0LjRhtC40ZjQsCwgIgorItC40LvQuFxuIgorIlx00YLQsNCx0LXQu9CwINC/0LDRgNGC0LjRhtC40ZjQsCDQvdC40ZjQtSDQv9C+0L3QvtCy0L4g0L/RgNC+0YfQuNGC0LDQvdCwINC90LDQutC+0L0g0L/QvtC60YDQtdGC0LDRmtCwIOKAnmZkaXNr4oCcLdCwLCDQt9Cw0YLQviDRiNGC0L4gIgorItGY0LVcbiIKKyJcdNC40LfQvNC10ZrQtdC90LAg0L/QsNGA0YLQuNGG0LjRmNCwINC30LDRg9C30LXRgtCwINC4INGDINGD0L/QvtGC0YDQtdCx0LguICDQnNC+0YDQsNGC0LUg0L/QvtC90L7QstC+INC00LAg0L/QvtC00LjQs9C90LXRgtC1XG4iCisiXHTRgdC40YHRgtC10Lwg0LTQsCDQsdC40YHRgtC1INC/0L7QvdC+0LLQviDQv9GA0L7Rh9C40YLQsNC70Lgg0YLQsNCx0LXQu9GDINC/0LDRgtGA0LjRhtC40ZjQsC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTMwCittc2dpZCAiRmlsZXN5c3RlbSBsYXJnZXIgdGhhbiBhcHBhcmVudCBkZXZpY2Ugc2l6ZS4iCittc2dzdHIgItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGY0LUg0LLQtdGb0Lgg0L7QtCDQv9GA0LjQstC40LTQvdC1INCy0LXQu9C40YfQuNC90LUg0YPRgNC10ZLQsNGY0LAuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQvtCx0YDQsNC00LjQvCDRgdC/0LjRgdCw0Log0LLRgNGB0YLQsCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICLQpdGD0YDQtCDQvdC1INC/0L7QtNGA0LbQsNCy0LAg0YTRg9C90LrRhtC40ZjRgyDQstGA0YHRgtC1INC00LDRgtC+0YLQtdC60LUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworIywgZnV6enkKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBodWdlX2ZpbGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAi0KXRg9GA0LQg0L3QtSDQv9C+0LTRgNC20LDQstCwINGE0YPQvdC60YbQuNGY0YMg0LLRgNGB0YLQtSDQtNCw0YLQvtGC0LXQutC1LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICLQpdGD0YDQtCDQvdC1INC/0L7QtNGA0LbQsNCy0LAg0YTRg9C90LrRhtC40ZjRgyDQstGA0YHRgtC1INC00LDRgtC+0YLQtdC60LUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAxOAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaGFyZHdhcmUgc2VjdG9yIHNpemUiCittc2dzdHIgItC00L7QuiDRgdCw0Lwg0L/QvtC60YPRiNCw0LLQsNC+INC00LAg0L7QtNGA0LXQtNC40Lwg0LLQtdC70LjRh9C40L3RgyDRhdCw0YDQtNCy0LXRgNGB0LrQvtCzINGB0LXQutGC0L7RgNCwIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHBoeXNpY2FsIHNlY3RvciBzaXplIgorbXNnc3RyICLQtNC+0Log0YHQsNC8INC/0L7QutGD0YjQsNCy0LDQviDQtNCwINC+0LTRgNC10LTQuNC8INCy0LXQu9C40YfQuNC90YMg0YTQuNC30LjRh9C60L7QsyDRgdC10LrRgtC+0YDQsCIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0LLQtdC70LjRh9C40L3QtSDQsdC70L7QutCwOyDQv9GA0LXQvNCw0LvQsCDRmNC1INC30LAg0YPRgNC10ZLQsNGYXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA2MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorItCj0L/QvtC30L7RgNC10ZrQtTog0L3QsNCy0LXQtNC10L3QsCDQstC10LvQuNGH0LjQvdCwINCx0LvQvtC60LAgJWQg0ZjQtSDQvNCw0ZrQsCDQvtC0INCy0LXQu9C40YfQuNC90LUg0YTQuNC30LjRh9C60L7QsyDRgdC10LrRgtC+0YDQsCAiCisi0YPRgNC10ZLQsNGY0LAgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogU2l6ZSBvZiBkZXZpY2UgKDB4JWxseCBibG9ja3MpICVzIHRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG4iCisiXHRpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIgorbXNnc3RyICIiCisiJXM6INCS0LXQu9C40YfQuNC90LAg0YPRgNC10ZLQsNGY0LAgKDB4JWxseCBibG9jcykg4oCeJXPigJwg0ZjQtSDQv9GA0LXQstC40YjQtSDQstC10LvQuNC60LAg0LTQsCDQsdC4INCx0LjQu9CwICIKKyLQuNC30YDQsNC20LXQvdCwXG4iCisiXHTRgdCwIDMyINCx0LjRgtCwINC60L7RgNC40YjRm9C10ZrQtdC8INCy0LXQu9C40YfQuNC90LUg0LHQu9C+0LrQsCDQvtC0ICVkLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDEKK21zZ2lkICJmc190eXBlcyBmb3IgbWtlMmZzLmNvbmYgcmVzb2x1dGlvbjogIgorbXNnc3RyICLQstGA0YHRgtC1X9GB0LQt0LAg0LfQsCDRgNC10LfQvtC70YPRhtC40ZjRgyDigJ5ta2UyZnMuY29uZuKAnC3QsDogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyLQpNGD0L3QutGG0LjRmNC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0L3QuNGB0YMg0L/QvtC00YDQttCw0L3QtSDRgdCwINGB0LjRgdGC0LXQvNC40LzQsCDQtNCw0YLQvtGC0LXQutCwINGA0LXQstC40LfQuNGY0LUgMFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMTYKK21zZ2lkICJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAi0J7RgdC60YPQtNC90Lgg0YHRg9C/0LXRgNCx0LvQvtC60L7QstC4INC90LjRgdGDINC/0L7QtNGA0LbQsNC90Lgg0YHQsCDRgdC40YHRgtC10LzQuNC80LAg0LTQsNGC0L7RgtC10LrQsCDRgNC10LLQuNC30LjRmNC1IDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAi0JTQvdC10LLQvdC40YbQuCDQvdC40YHRgyDQv9C+0LTRgNC20LDQvdC4INGB0LAg0YHQuNGB0YLQtdC80LjQvNCwINC00LDRgtC+0YLQtdC60LAg0YDQtdCy0LjQt9C40ZjQtSAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICLQvdC10LjRgdC/0YDQsNCy0LDQvSDQv9GA0L7RhtC10L3QsNGCINGA0LXQt9C10YDQstC40YHQsNC90LjRhSDQsdC70L7QutC+0LLQsCDigJQgJWxmIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNTYKK21zZ2lkICIiCisiRXh0ZW50cyBNVVNUIGJlIGVuYWJsZWQgZm9yIGEgNjQtYml0IGZpbGVzeXN0ZW0uICBQYXNzIC1PIGV4dGVudHMgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLQoNCw0YHQv9C+0L3QuCDQnNCe0KDQkNCI0KMg0LHQuNGC0Lgg0YPQutGZ0YPRh9C10L3QuCDQt9CwIDY0LdCx0LjRgtC90Lgg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAuINCf0YDQvtGB0LvQtdC00LjRgtC1INGA0LDRgdC/0L7QvdC1ICIKKyLigJ4tT+KAnCDQtNCwINC40YHQv9GA0LDQstC40YLQtS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAi0JLQtdC70LjRh9C40L3QsCDQutC70LDRgdGC0LXRgNCwINC90LUg0LzQvtC20LUg0LHQuNGC0Lgg0LzQsNGa0LAg0L7QtCDQstC10LvQuNGH0LjQvdC1INCx0LvQvtC60LAuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgItC90LDQstC+0ZLQtdGa0LUg0LLQtdC70LjRh9C40L3QtSDQutC70LDRgdGC0LXRgNCwINC30LDRhdGC0LXQstCwINGE0YPQvdC60YbQuNGY0YMg4oCeYmlnYWxsb2PigJwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAi0YPQv9C+0LfQvtGA0LXRmtC1OiDQndC1INC80L7Qs9GDINC00LAg0LTQvtCx0LDQstC40Lwg0LPQtdC+0LzQtdGC0YDQuNGY0YMg0YPRgNC10ZLQsNGY0LAg0LfQsCDigJ4lc+KAnFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgItCf0L7RgNCw0LLQvdCw0ZrQtSDigJ4lc+KAnCDRmNC1INC/0L7QvNC10YDQtdC90L4g0LfQsCAlbHUg0LHQsNGY0YLQsC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKyLQntCy0L4g0LzQvtC20LUg0LTQvtCy0LXRgdGC0Lgg0LTQviDQstGA0LvQviDRgdC70LDQsdC+0LMg0YPRh9C40L3QutCwLCDQv9GA0LXQtNC70LDQttC1INCy0LDQvCDRgdC1ICjQv9C+0L3QvtCy0L3QviktIgorItC/0LDRgNGC0LjRhtC40L7QvdC40YHQsNGa0LUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgItCx0LvQvtC60L7QstC4INC+0LQgJWQg0LHQsNGY0YLQsCDRgdGDINC/0YDQtdCy0LXQu9C40LrQuCDQt9CwINGB0LjRgdGC0LXQvCAo0L3QsNGY0LIuICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisi0KPQv9C+0LfQvtGA0LXRmtC1OiDQsdC70L7QutC+0LLQuCDQvtC0ICVkINCx0LDRmNGC0LAg0YHRgyDQv9GA0LXQstC10LvQuNC60Lgg0LfQsCDRgdC40YHRgtC10LwgKNC90LDRmNCyLiAlZCksINC/0YDQuNC80L7RgNCw0L3QviAiCisi0ZjQtSDQvdCw0YHRgtCw0LLRmdCw0ZrQtVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBvZmZzZXQgc3BlY2lmaWVkIHdpdGhvdXQgYW4gZXhwbGljaXQgZmlsZSBzeXN0ZW0gc2l6ZS5cbiIKKyJDcmVhdGluZyBhIGZpbGUgc3lzdGVtIHdpdGggJWxsdSBibG9ja3MgYnV0IHRoaXMgbWlnaHRcbiIKKyJub3QgYmUgd2hhdCB5b3Ugd2FudC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTIKK21zZ2lkICJDYW4ndCBzdXBwb3J0IGJpZ2FsbG9jIGZlYXR1cmUgd2l0aG91dCBleHRlbnRzIGZlYXR1cmUiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQv9C+0LTRgNC20LjQvCDRhNGD0L3QutGG0LjRmNGDIOKAnmJpZ2FsbG9j4oCcINCx0LXQtyDRhNGD0L3QutGG0LjRmNC1INGA0LDRgdC/0L7QvdCwIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorItCk0YPQvdC60YbQuNGY0LUg4oCecmVzaXplX2lub2Rl4oCcINC4IOKAnm1ldGFfYmfigJwg0L3QuNGB0YMg0YHQsNCz0LvQsNGB0L3QtS5cbiIKKyLQndC1INC80L7Qs9GDINCx0LjRgtC4INGD0LrRmdGD0YfQtdC90LUg0LjRgdGC0L7QstGA0LXQvNC10L3Qvi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQo9C/0L7Qt9C+0YDQtdGa0LU6INGE0YPQvdC60YbQuNGY0LAg4oCeYmlnYWxsb2PigJwg0ZjQtSDRmNC+0Ygg0YPQstC10Log0YMg0YDQsNC30LLQvtGY0YNcbiIKKyLQktC40LTQuNGC0LUg4oCeaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2PigJwg0LfQsCDQstC40YjQtSDQviDRgtC+0LzQtVxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMzkKK21zZ2lkICJyZXNlcnZlZCBvbmxpbmUgcmVzaXplIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIG5vbi1zcGFyc2UgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorItGA0LXQt9C10YDQstC40YHQsNC90Lgg0LHQu9C+0LrQvtCy0Lgg0L/RgNC+0LzQtdC90LUg0LLQtdC70LjRh9C40L3QtSDQvdCwINC80YDQtdC20Lgg0L3QuNGB0YMg0L/QvtC00YDQttCw0L3QuCDQvdCwINC90LUt0L7RgdC60YPQtNC90L7QvCAiCisi0YHQuNGB0YLQtdC80YMg0LTQsNGC0L7RgtC10LrQsCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgItCx0YDQvtGYINCx0LvQvtC60L7QstCwINC/0L4g0LPRgNGD0L/QuCDRmNC1INCy0LDQvSDQvtC/0YHQtdCz0LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM3MAorbXNnaWQgIkZsZXhfYmcgZmVhdHVyZSBub3QgZW5hYmxlZCwgc28gZmxleF9iZyBzaXplIG1heSBub3QgYmUgc3BlY2lmaWVkIgorbXNnc3RyICIiCisi0KTRg9C90LrRhtC40ZjQsCDigJ5mbGV4X2Jn4oCcINC90LjRmNC1INGD0LrRmdGD0YfQtdC90LAsINGC0LDQutC+INC00LAg0LLQtdC70LjRh9C40L3QsCDigJ5mbGV4X2Jn4oCcINC90LUg0LzQvtC20LUg0LHQuNGC0LggIgorItC90LDQstC10LTQtdC90LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgJWQgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICLQvdC10LjRgdC/0YDQsNCy0L3QsCDQstC10LvQuNGH0LjQvdCwINC4LdGH0LLQvtGA0LAgJWQgKNC90LDRmNC8LiAlZC/QvdCw0ZjQsi4gJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAi0L/RgNC10LLQuNGI0LUg0Lgt0YfQstC+0YDQvtCy0LAgKCVsbHUpLCDQtNCwINC/0L7QstC10ZvQsNC8INC+0L/RgdC10LMg0Lgt0YfQstC+0YDQsD8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgItC/0YDQtdCy0LjRiNC1INC4LdGH0LLQvtGA0L7QstCwICglbGx1KSwg0L3QsNCy0LXQtNC4IDwgMl4zMiDQuC3Rh9Cy0L7RgNCwIgorCisjOiBtaXNjL21rZTJmcy5jOjI0NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImlub2RlX3NpemUgKCV1KSAqIGlub2Rlc19jb3VudCAoJXUpIHRvbyBiaWcgZm9yIGFcbiIKKyJcdGZpbGVzeXN0ZW0gd2l0aCAlbGx1IGJsb2Nrcywgc3BlY2lmeSBoaWdoZXIgaW5vZGVfcmF0aW8gKC1pKVxuIgorIlx0b3IgbG93ZXIgaW5vZGUgY291bnQgKC1OKS5cbiIKK21zZ3N0ciAiIgorItCy0LXQu9C40YfQuNC90LBf0Lgt0YfQstC+0YDQsCAoJXUpICog0LHRgNC+0Zhf0Lgt0YfQstC+0YDQvtCy0LAgKCV1KSDRmNC1INC/0YDQtdCy0LXQu9C40LrQviDQt9CwXG4iCisiXHTRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRgdCwICVsbHUg0LHQu9C+0Loo0L7QsinQsCwg0L3QsNCy0LXQtNC40YLQtSDQstC10ZvQuCDQvtC/0YHQtdCzX9C4LdGH0LLQvtGA0LAgKC1pKVxuIgorIlx00LjQu9C4INGB0LzQsNGa0LjRgtC1INCx0YDQvtGYX9C4LdGH0LLQvtGA0L7QstCwICgtTikuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICLQntC00LHQsNGG0YPRmNC10Lwg0LHQu9C+0LrQvtCy0LUg0YPRgNC10ZLQsNGY0LA6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyNjQ5Cittc2dpZCAiZmFpbGVkIC0gIgorbXNnc3RyICLQvdC10YPRgdC/0LXRhSDigJQgIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YDQtdGC0LDRmtCwIOKAnmV4dDJfcWNvdzJfaW1hZ2XigJwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcxNQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAi0LfQsCDQstGA0LXQvNC1INC/0LjRgdCw0ZrQsCDQuC3Rh9Cy0L7RgNCwINC00L3QtdCy0L3QuNC60LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIGluIHByb2ZpbGUgLSAlcyIKK21zZ3N0ciAi0LvQvtGI0LUg0L/QvtC90LDRiNCw0ZrQtSDQs9GA0LXRiNC60LUg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorItCe0LTQsdCw0YbQuNCy0LDRmtC1INGY0LUg0YPRgdC/0LXQu9C+INCwINC60LDQviDRgNC10LfRg9C70YLQsNGCINC00LDRm9C1IDBzIOKAlCDQv9GA0LXRgdC60LDRh9C10Lwg0LHRgNC40YHQsNGa0LUg0YLQsNCx0LXQu9C1INC4LSIKKyLRh9Cy0L7RgNCwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIG9zIC0gJXMiCittc2dzdHIgItC90LXQv9C+0LfQvdCw0YIg0L7RgSDigJQgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgItCU0L7QtNC10ZnRg9GY0LXQvCDRgtCw0LHQtdC70LUg0LPRgNGD0L/QtTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQtNC+0LTQtdGZ0LjQstCw0ZrQsCDRgtCw0LHQtdC70LAg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIlx00L/RgNC40LvQuNC60L7QvCDQv9GA0LXRgtCy0LDRgNCw0ZrQsCDQsdC40YLQvNCw0L/QtSDQv9C+0LTQutC70LDRgdGC0LXRgNCwIgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0L3QsCDQvdGD0LvRgyDQsdC70L7QutCwICVsbHUg0L3QsCDQutGA0LDRmNGDINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorbXNnaWQgIndoaWxlIHJlc2VydmluZyBibG9ja3MgZm9yIG9ubGluZSByZXNpemUiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0YDQtdC30LXRgNCy0LjRgdCw0ZrQsCDQsdC70L7QutC+0LLQsCDQt9CwINC/0YDQvtC80LXQvdGDINCy0LXQu9C40YfQuNC90LUg0L3QsCDQvNGA0LXQttC4IgorCisjOiBtaXNjL21rZTJmcy5jOjMxMDcgbWlzYy90dW5lMmZzLmM6MTQxNQorbXNnaWQgImpvdXJuYWwiCittc2dzdHIgItC00L3QtdCy0L3QuNC6IgorCisjOiBtaXNjL21rZTJmcy5jOjMxMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiCittc2dzdHIgItCU0L7QtNCw0ZjQtdC8INC00L3QtdCy0L3QuNC6INGD0YDQtdGS0LDRmNGDIOKAniVz4oCcOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gYWRkIGpvdXJuYWwgdG8gZGV2aWNlICVzIgorbXNnc3RyICIiCisiXG4iCisiXHTQv9GA0LjQu9C40LrQvtC8INC/0L7QutGD0YjQsNGY0LAg0LTQvtC00LDQstCw0ZrQsCDQtNC90LXQstC90LjQutCwINGD0YDQtdGS0LDRmNGDIOKAniVz4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzEgbWlzYy9ta2UyZnMuYzozMTYwIG1pc2MvbWtlMmZzLmM6MzIwMAorIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MTAgbWlzYy90dW5lMmZzLmM6MTQ0NCBtaXNjL3R1bmUyZnMuYzoxNDYzCittc2dpZCAiZG9uZVxuIgorbXNnc3RyICLQs9C+0YLQvtCy0L5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAi0J/RgNC10YHQutCw0YfQtdC8INGB0YLQstCw0YDQsNGa0LUg0LTQvdC10LLQvdC40LrQsCDRgyDRgNC10LbQuNC80YMg0YHQsNC80L4t0YHRg9C/0LXRgFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJXUgYmxvY2tzKTogIgorbXNnc3RyICLQn9GA0LDQstC40Lwg0LTQvdC10LLQvdC40LogKCV1INCx0LvQvtC60LApOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE1NgorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCIKK21zZ3N0ciAiIgorIlxuIgorIlx00L/RgNC40LvQuNC60L7QvCDQv9C+0LrRg9GI0LDRmNCwINGB0YLQstCw0YDQsNGa0LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorIlxuIgorItCT0YDQtdGI0LrQsCDQv9GA0LjQu9C40LrQvtC8INGD0LrRmdGD0YfQuNCy0LDRmtCwINGE0YPQvdC60YbQuNGY0LUg0LfQsNGI0YLQuNGC0LUg0L7QtCDQstC40YjQtdGB0YLRgNGD0LrQvtCzINC60LDRh9C10ZrQsC4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorItCX0LDRiNGC0LjRgtCwINC+0LQg0LLQuNGI0LXRgdGC0YDRg9C60L7QsyDQutCw0YfQtdGa0LAg0ZjQtSDRg9C60ZnRg9GH0LXQvdCwINGB0LAg0L/QtdGA0LjQvtC00L7QvCDQvtGB0LLQtdC20LDQstCw0ZrQsCDQvtC0ICVkICIKKyLRgdC10LrRg9C90LTQtS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCisjLCBmdXp6eQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9GA0LXRgdC40L/QsNGa0LAg0L/QuNGB0LDRmtCwINC90LAg0YHQutC70LDQtNC40YjQvdC4INGD0YDQtdGS0LDRmDogJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LXRmdC40LLQsNGa0LAg0YLQsNCx0LXQu9C1IOKAnmwx4oCcIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAi0JfQsNC/0LjRgdGD0ZjQtdC8INC/0L7QtNCw0YLQutC1INC/0YDQtdC00YDQsNGH0YPQvdCwINGB0YPQv9C10YDQsdC70L7QutC+0LLQsCDQuCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyLQo9C/0L7Qt9C+0YDQtdGa0LUsINC40LzQsNC8INC/0YDQvtCx0LvQtdC80LAg0YHQsCDQv9C40YHQsNGa0LXQvCDRgdGD0L/QtdGA0LHQu9C+0LrQvtCy0LAuIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTMKK21zZ2lkICIiCisiZG9uZVxuIgorIlxuIgorbXNnc3RyICIiCisi0LPQvtGC0L7QstC+XG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQYXJ0aXRpb24gb2Zmc2V0IG9mICVsbHUgKCV1aykgYmxvY2tzIG5vdCBjb21wYXRpYmxlIHdpdGggY2x1c3RlciBzaXplICV1LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgItCh0YLQstCw0YDQsNC8INC+0LHQuNGH0L3RgyDQtNCw0YLQvtGC0LXQutGDIOKAniVz4oCcXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIiIKKyLRg9C/0L7Qt9C+0YDQtdGa0LU6ICVsbHUg0LHQu9C+0LrQsCDRgdC1INC90LUg0LrQvtGA0LjRgdGC0LUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QvdCw0LLRmdCw0ZrQsCDQvdCwINC4LdGH0LLQvtGA0YMgJXUiCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgItCj0L/QvtGC0YDQtdCx0LA6IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorItCj0L/QvtGC0YDQtdCx0LA6ICAlcyDRg9GA0LXRktCw0ZguLi5cbiIKKyJcbiIKKyLQmNGB0L/QuNGB0YPRmNC1INC/0L7QtNCw0YLQutC1INC+INC/0LDRgNGC0LjRhtC40ZjQuCDQt9CwINGB0LLQsNC60Lgg0LTQsNGC0Lgg0YPRgNC10ZLQsNGYLlxuIgorItCd0LAg0L/RgNC40LzQtdGAOiAlcyAvZGV2L2hkYVxuIgorIlxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gJXM6ICVzIgorbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0L7RgtCy0L7RgNC40Lwg4oCeJXPigJw6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LHQsNCy0LjQvCDQs9C10L7QvNC10YLRgNC40ZjRgyDQt9CwIOKAniVz4oCcOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LHQsNCy0LjQvCDQstC10LvQuNGH0LjQvdGDINC30LAg4oCeJXPigJw6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgINC/0L7Rh9C10YLQsNC6PSU4ZCDQstC10LvQuNGH0LjQvdCwPSU4bHUg0LrRgNCw0Zg9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAi0J/QvtC60YDQtdC90LjRgtC1IOKAnmUyZnNja+KAnCDQvdCwINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgItCf0L7QutGA0LXQvdC40YLQtSDigJ5lMmZzY2vigJwg0L3QsCDRgdC40YHRgtC10LzRgyDQtNCw0YLQvtGC0LXQutCwLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorItCj0L/QvtGC0YDQtdCx0LA6ICVzIFstYyDQvdCw0ZjQstC10ZvQuF/QsdGA0L7RmF/QutCw0YfQtdGa0LBdIFstZSDQv9C+0L3QsNGI0LDRmtC1X9Cz0YDQtdGI0LDQutCwXSBbLWcg0LPRgNGD0L/QsF1cbiIKKyJcdFstaSDQv9C10YDQuNC+0LRb0LR80Lx80LJdXSBbLWpdIFstSiDQvtC/0YbQuNGY0LVf0LTQvdC10LLQvdC40LrQsF0gWy1sXVxuIgorIlx0Wy1tINC/0YDQvtGG0LXQvdCw0YJf0YDQtdC30LXRgNCy0LjRgdCw0L3QuNGFX9Cx0LvQvtC60L7QstCwXSBbLW8gW15d0L7Qv9GG0LjRmNC1X9C60LDRh9C10ZrQsFssLi4uXV0gWy1wICIKKyLQv9C10YDQuNC+0LRf0LzQvNC/X9C+0YHQstC10LbQsNCy0LDRmtCwXVxuIgorIlx0Wy1yINCx0YDQvtGYX9GA0LXQt9C10YDQstC40YHQsNC90LjRhV/QsdC70L7QutC+0LLQsF0gWy11INC60L7RgNC40YHQvdC40LpdIFstQyDQsdGA0L7RmF/QutCw0YfQtdGa0LBdIFstTCAiCisi0L3QsNGC0L/QuNGBX9Cy0L7Qu9GD0LzQtdC90LBdXG4iCisiXHRbLU0g0L/QvtGB0LvQtdC00ZrQuF/Qv9GA0LjQutCw0YfQtdC90Lhf0LTQuNGAXSBbLU8gW15d0YTRg9C90LrRhtC40ZjQsFssLi4uXV1cbiIKKyJcdFstUSDQvtC/0YbQuNGY0LVf0LrQstC+0YLQtV1cbiIKKyJcdFstRSDQv9GA0L7RiNC40YDQtdC90LBf0L7Qv9GG0LjRmNCwWywuLi5dXSBbLVQg0LLRgNC10LzQtV/Qv9C+0YHQu9C10LTRmtC1X9C/0YDQvtCy0LXRgNC1XSBbLVUg0KPQo9CY0JRdXG4iCisiXHRbIC1JINC90L7QstCwX9Cy0LXQu9C40YfQuNC90LBf0Lgt0YfQstC+0YDQsCBdINGD0YDQtdGS0LDRmFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICLQndC40YHQsNC8INC90LDRiNCw0L4g0YHRg9C/0LXRgNCx0LvQvtC6INC00L3QtdCy0L3QuNC60LAhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3NgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQvtGC0LLQsNGA0LDRmtCwINGB0L/QvtGZ0L3QvtCzINC00L3QtdCy0L3QuNC60LAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICLigJ4lc+KAnCDQvdC40ZjQtSDRg9GA0LXRktCw0Zgg0LTQvdC10LLQvdC40LrQsC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgItCd0LjRgdCw0Lwg0L3QsNGI0LDQviDQo9Cj0JjQlCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINC90LAg0YPRgNC10ZLQsNGY0YMg0LTQvdC10LLQvdC40LrQsC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7Qs9GDINC00LAg0L3QsNGS0LXQvCDRg9GA0LXRktCw0Zgg0LTQvdC10LLQvdC40LrQsC4g0J3QmNCI0JUg0YPQutC70L7RmtC10L1cbiIKKyLQmtC+0YDQuNGB0YLQuNGC0LUg0L7Qv9GG0LjRmNGDIOKAni1m4oCcINC00LAg0YPQutC70L7QvdC40YLQtSDQvdC10LTQvtGB0YLQsNGY0YPRm9C4INGD0YDQtdGS0LDRmCDQtNC90LXQstC90LjQutCwLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjUKK21zZ2lkICJKb3VybmFsIHJlbW92ZWRcbiIKK21zZ3N0ciAi0JTQvdC10LLQvdC40Log0ZjQtSDRg9C60LvQvtGa0LXQvVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0YfQuNGC0LDRmtCwINCx0LjRgtC80LDQv9CwIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0LHRgNC40YHQsNGa0LAg0Lgt0YfQstC+0YDQsCDQtNC90LXQstC90LjQutCwIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C40YHQsNGa0LAg0Lgt0YfQstC+0YDQsCDQtNC90LXQstC90LjQutCwIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIo0Lgg0L/QvtGB0LvQtSDQv9C+0L3QvtCy0L4g0L/QvtC00LjQs9C90LjRgtC1INGB0LjRgdGC0LXQvCEpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3NgorIywgYy1mb3JtYXQKK21zZ2lkICJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisi0J/RgNCy0L4g0L/QvtC60YDQtdC90LjRgtC1IOKAnmUyZnNjayAtZiAlc+KAnC5cbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZW5hYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NworIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGRpc2FibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICLQkdGA0LjRgdCw0ZrQtSDigJ4lc+KAnCDRhNGD0L3QutGG0LjRmNC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0L3QuNGY0LUg0L/QvtC00YDQttCw0L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDRmtC1IOKAniVz4oCcINGE0YPQvdC60YbQuNGY0LUg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDQvdC40ZjQtSDQv9C+0LTRgNC20LDQvdC+LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorItCk0YPQvdC60YbQuNGY0LAg4oCeaGFzX2pvdXJuYWzigJwg0LzQvtC20LUg0LHQuNGC0Lgg0L7Rh9C40YjRm9C10L3QsCDRgdCw0LzQviDQutCw0LTQsCDRmNC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwXG4iCisi0L7RgtC60LDRh9C10L0g0LjQu9C4INC/0YDQuNC60LDRh9C10L0g0YHQsNC80L4g0LfQsCDRh9C40YLQsNGa0LUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMzMKK21zZ2lkICIiCisiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgUGxlYXNlIHJ1biBlMmZzY2sgYmVmb3JlIGNsZWFyaW5nXG4iCisidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iCittc2dzdHIgIiIKKyLQl9Cw0YHRgtCw0LLQuNGG0LAg4oCebmVlZHNfcmVjb3ZlcnnigJwg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L3QsC4g0J/QvtC60YDQtdC90LjRgtC1IOKAnmUyZnNja+KAnCDQv9GA0LVcbiIKKyLQsdGA0LjRgdCw0ZrQsCDQt9Cw0YHRgtCw0LLQuNGG0LUg4oCeaGFzX2pvdXJuYWzigJwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNTEKK21zZ2lkICIiCisiU2V0dGluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJ3NwYXJzZV9zdXBlcicgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorItCf0L7RgdGC0LDQstGZ0LDRmtC1IOKAnnNwYXJzZV9zdXBlcuKAnCDRhNGD0L3QutGG0LjRmNC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0L3QuNGY0LUg0L/QvtC00YDQttCw0L3QvlxuIgorItC30LAg0YHQuNGB0YLQtdC80LUg0LTQsNGC0L7RgtC10LrQsCDRgdCwINGD0LrRmdGD0YfQtdC90L7QvCDRhNGD0L3QutGG0LjRmNC+0Lwg4oCebWV0YV9iZ+KAnC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA2NAorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbid0XG4iCisiYmUgc2V0IGlmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgb3JcbiIKKyJyZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyLQpNGD0L3QutGG0LjRmNCwINC30LDRiNGC0LjRgtC1INC+0LQg0LLQuNGI0LXRgdGC0YDRg9C60L7QsyDQutCw0YfQtdGa0LAg0L3QtSDQvNC+0LbQtVxuIgorItCx0LjRgtC4INC/0L7RgdGC0LDQstGZ0LXQvdCwINCw0LrQviDRmNC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC/0YDQuNC60LDRh9C10L1cbiIKKyLQuNC70Lgg0YHQsNC80L4g0LfQsCDRh9C40YLQsNGa0LUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorItCX0LDRiNGC0LjRgtCwINC+0LQg0LLQuNGI0LXRgdGC0YDRg9C60L7QsyDQutCw0YfQtdGa0LAg0ZjQtSDQsdC40LvQsCDRg9C60ZnRg9GH0LXQvdCwINGB0LAg0L/QtdGA0LjQvtC00L7QvCDQvtGB0LLQtdC20LDQstCw0ZrQsCDQvtC0ICVkICIKKyLRgdC10LouXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTEKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW5ub3RcbiIKKyJiZSBkaXNhYmxlZCBpZiB0aGUgZmlsZXN5c3RlbSBpcyByZWFkb25seS5cbiIKK21zZ3N0ciAiIgorItCk0YPQvdC60YbQuNGY0LAg0LfQsNGI0YLQuNGC0LUg0L7QtCDQstC40YjQtdGB0YLRgNGD0LrQvtCzINC60LDRh9C10ZrQsCDQvdC1INC80L7QttC1INCx0LjRgtC4XG4iCisi0LjRgdC60ZnRg9GH0LXQvdCwINCw0LrQviDRmNC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGB0LDQvNC+INC30LAg0YfQuNGC0LDRmtC1LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDQv9GA0LjQu9C40LrQvtC8INGH0LjRgtCw0ZrQsCDQsdC40YLQvNCw0L/QsFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICLQnNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDRgyDQnNCc0J8g0LHQu9C+0LrRgyDQvdC1INC+0LTQs9C+0LLQsNGA0LAuINC+0YfQtdC60LjQstCw0L06ICV4LCDRgdGC0LLQsNGA0LDQvTogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDRh9C40YLQsNGa0LAg0JzQnNCfINCx0LvQvtC60LAuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICIiCisi0JHRgNC40YHQsNGa0LUg0LfQsNGB0YLQsNCy0LjRhtC1IOKAnmZsZXhfYmfigJwg0ZvQtSDQtNC+0LLQtdGB0YLQuCDQtNC+INC90LXQtNC+0YHQu9C10LTQvdC+0YHRgtC4XG4iCisi0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorbXNnaWQgIiIKKyJUaGUgaHVnZV9maWxlIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2xlYXJlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzXG4iCisidW5tb3VudGVkIG9yIG1vdW50ZWQgcmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisi0KTRg9C90LrRhtC40ZjQsCDigJ5odWdlX2ZpbGXigJwg0LzQvtC20LUg0LHQuNGC0Lgg0L7Rh9C40YjRm9C10L3QsCDRgdCw0LzQviDQutCw0LTQsCDRmNC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwXG4iCisi0L7RgtC60LDRh9C10L0g0LjQu9C4INC/0YDQuNC60LDRh9C10L0g0YHQsNC80L4g0LfQsCDRh9C40YLQsNGa0LUuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisiXG4iCisi0KPQv9C+0LfQvtGA0LXRmtC1OiDQntC/0YbQuNGY0LAg4oCeXnF1b3Rh4oCcINC/0YDQtdCy0LDQt9C40LvQsNC30Lgg0LDRgNCz0YPQvNC10L3RgtC1wqDigJ4tUeKAnC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorIywgZnV6enkKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyLQn9C+0YHRgtCw0LLRmdCw0ZrQtSDigJ5zcGFyc2Vfc3VwZXLigJwg0YTRg9C90LrRhtC40ZjQtSDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90L5cbiIKKyLQt9CwINGB0LjRgdGC0LXQvNC1INC00LDRgtC+0YLQtdC60LAg0YHQsCDRg9C60ZnRg9GH0LXQvdC+0Lwg0YTRg9C90LrRhtC40ZjQvtC8IOKAnm1ldGFfYmfigJwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQstC10Zsg0LjQvNCwINC00L3QtdCy0L3QuNC6LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgb24gJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIlx00L/RgNC40LvQuNC60L7QvCDQv9C+0LrRg9GI0LDRmNCwINC+0YLQstCw0YDQsNGa0LAg0LTQvdC10LLQvdC40LrQsCDQvdCwIOKAniVz4oCcXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAi0KHRgtCy0LDRgNCw0Lwg0LTQvdC10LLQvdC40Log0L3QsCDRg9GA0LXRktCw0ZjRgyDigJ4lc+KAnDogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0LTQvtC00LDQstCw0ZrQsCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINC00L3QtdCy0L3QuNC60YMg0L3QsCDigJ4lc+KAnCIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAi0KHRgtCy0LDRgNCw0Lwg0Lgt0YfQstC+0YAg0LTQvdC10LLQvdC40LrQsDogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDYwCittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIGZpbGUiCittc2dzdHIgIiIKKyJcbiIKKyJcdNC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDRgdGC0LLQsNGA0LDRmtCwINC00LDRgtC+0YLQtdC60LUg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ5OAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCBpbiBzdXBwb3J0IGxpYnJhcnkiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQv9C+0LrRgNC10YLQsNGa0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAg0LTQvdC10LLQvdC40LrQsCIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgItC30LAg0LLRgNC10LzQtSDQvtGB0LLQtdC20LDQstCw0ZrQsCDQuC3Rh9Cy0L7RgNCwINC70L7RiNC40YUg0LHQu9C+0LrQvtCy0LAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0LjRgdCw0ZrQsCDRgtCw0LHQtdC70LUg0Lgt0YfQstC+0YDQsCIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVtb3ZpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICLQt9CwINCy0YDQtdC80LUg0YfQuNGC0LDRmtCwINC60L7RgNC10L3QvtCzINC4LdGH0LLQvtGA0LAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0J3QsNCy0LXQtNC10L3QtSDRgdGDINC70L7RiNC1INC+0L/RhtC40ZjQtSDQutCy0L7RgtC1LlxuIgorIlxuIgorItCU0L7RgdGC0YPQv9C90LUg0YHRgyDRgdC70LXQtNC10ZvQtSDQuNGB0L/RgNCw0LLQvdC1INC+0L/RhtC40ZjQtSDQutCy0L7RgtC1ICjQv9GA0L7RgdC70LXRktGD0ZjRgyDRgdC1INGA0LDQt9C00LLQvtGY0LXQvdC1ICIKKyLQt9Cw0YDQtdC30L7QvCk6XG4iCisiXHRbXl11c3JxdW90YVxuIgorIlx0W15dZ3JwcXVvdGFcbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC+0LHRgNCw0LTQuNC8INC+0LTRgNC10LTQvdC40Log0LTQsNGC0YPQvNCwL9Cy0YDQtdC80LXQvdCwOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTY1OCBtaXNjL3R1bmUyZnMuYzoxNjcxCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBtb3VudHMgY291bnQgLSAlcyIKK21zZ3N0ciAi0LvQvtGIINCx0YDQvtGYINC60LDRh9C10ZrQsCDigJQgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGdpZC9ncm91cCBuYW1lIC0gJXMiCittc2dzdHIgItC70L7RiCDQvdCw0LfQuNCyINCz0LjQtC3QsC/Qs9GA0YPQv9C1IOKAlCAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc0NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW50ZXJ2YWwgLSAlcyIKK21zZ3N0ciAi0LvQvtGIINC/0LXRgNC40L7QtCDigJQgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgItC70L7RiCDQvtC/0YHQtdCzINGA0LXQt9C10YDQstC40YHQsNC90L7QsyDQsdC70L7QutCwIOKAlCAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICLigJ4tb+KAnCDRgdC1INC80L7QttC1INC90LDQstC10YHRgtC4INGB0LDQvNC+INGY0LXQtNC90L7QvCIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICLigJ4tT+KAnCDRgdC1INC80L7QttC1INC90LDQstC10YHRgtC4INGB0LDQvNC+INGY0LXQtNC90L7QvCIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgItC70L7RiCDQsdGA0L7RmCDRgNC10LfQtdGA0LLQuNGB0LDQvdC40YUg0LHQu9C+0LrQvtCy0LAg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgItC70L7RiCDQvdCw0LfQuNCyINGD0LjQtC3QsC/QutC+0YDQuNGB0L3QuNC60LAg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgItC70L7RiNCwINCy0LXQu9C40YfQuNC90LAg0Lgt0YfQstC+0YDQsCDigJQgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5vZGUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvLSAlcyIKK21zZ3N0ciAi0JLQtdC70LjRh9C40L3QsCDQuC3Rh9Cy0L7RgNCwINC80L7RgNCwINCx0LjRgtC4INGB0YLQtdC/0LXQvSDQtNCy0L7RmNC60LUg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgItC/0LXRgNC40L7QtF/QvNC80L9f0L7RgdCy0LXQttCw0LLQsNGa0LAg0ZjQtSDQv9GA0LXQstC10LvQuNC6OiAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk3MgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0clswXSAiIgorItCf0L7RgdGC0LDQstGZ0LDQvCDQv9C10YDQuNC+0LQg0L7RgdCy0LXQttCw0LLQsNGa0LAg0LfQsNGI0YLQuNGC0LUg0L7QtCDQstC40YjQtdGB0YLRgNGD0LrQvtCzINC60LDRh9C10ZrQsCDQvdCwICVsdSDRgdC10LrRg9C90LTRg1xuIgorbXNnc3RyWzFdICIiCisi0J/QvtGB0YLQsNCy0ZnQsNC8INC/0LXRgNC40L7QtCDQvtGB0LLQtdC20LDQstCw0ZrQsCDQt9Cw0YjRgtC40YLQtSDQvtC0INCy0LjRiNC10YHRgtGA0YPQutC+0LMg0LrQsNGH0LXRmtCwINC90LAgJWx1INGB0LXQutGD0L3QtNC1XG4iCittc2dzdHJbMl0gIiIKKyLQn9C+0YHRgtCw0LLRmdCw0Lwg0L/QtdGA0LjQvtC0INC+0YHQstC10LbQsNCy0LDRmtCwINC30LDRiNGC0LjRgtC1INC+0LQg0LLQuNGI0LXRgdGC0YDRg9C60L7QsyDQutCw0YfQtdGa0LAg0L3QsCAlbHUg0YHQtdC60YPQvdC00LhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQoNCQ0JjQlCDQuNGB0LrQvtGA0LDQujogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaXBlLXdpZHRoOiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDQoNCQ0JjQlCDRiNC40YDQuNC90LAg0YLRgNCw0LrQtTogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDRhdC10Ygg0LDQu9Cz0L7RgNC40YLQsNC8OiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQvtGB0L3QvtCy0L3QuCDRhdC10Ygg0LDQu9Cz0L7RgNC40YLQsNC8INC90LAg4oCeJXPigJwgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisi0J3QsNCy0LXQtNC10L3QtSDRgdGDINC70L7RiNC1INC+0L/RhtC40ZjQtS5cbiIKKyJcbiIKKyLQn9GA0L7RiNC40YDQtdC90LUg0L7Qv9GG0LjRmNC1INGB0YMg0YDQsNC30LTQstC+0ZjQtdC90LUg0LfQsNGA0LXQt9C40LzQsCwg0Lgg0LzQvtCz0YMg0LjQvNCw0YLQuCDQsNGA0LPRg9C80LXQvdGCXG4iCisiXHTQutC+0ZjQuCDRmNC1INC/0L7RgdGC0LDQstGZ0LXQvSDQt9C90LDQutC+0Lwg0ZjQtdC00L3QsNC60L7RgdGC0LggKD0pLlxuIgorIlxuIgorItCY0YHQv9GA0LDQstC90LUg0L/RgNC+0YjQuNGA0LXQvdC1INC+0L/RhtC40ZjQtSDRgdGDOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz080YXQtdGIINCw0LvQs9C+0YDQuNGC0LDQvD5cbiIKKyJcdG1vdW50X29wdHM9PNC/0YDQvtGI0LjRgNC10L3QtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QtSDQvtC/0YbQuNGY0LUg0LrQsNGH0LXRmtCwPlxuIgorIlx0c3RyaWRlPTzQoNCQ0JjQlCDQstC10LvQuNGH0LjQvdCwINC60L7QvNCw0LTQsCDQv9C+INC00LjRgdC60YMg0YMg0LHQu9C+0LrQvtCy0LjQvNCwPlxuIgorIlx0c3RyaXBlX3dpZHRoPTzQoNCQ0JjQlCDQtNC40YHQutC+0LLQuCDQuNGB0LrQvtGA0LDQuirQv9C+0LTQsNGG0Lgg0YMg0LHQu9C+0LrQvtCy0LjQvNCwPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUxOQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQv9GA0L7Rh9C40YLQsNC8INCx0LjRgtC80LDQv9GDINC4LdGH0LLQvtGA0LBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUyNAorbXNnaWQgIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQv9GA0L7Rh9C40YLQsNC8INCx0LjRgtC80LDQv9GDINCx0LvQvtC60LBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0MSByZXNpemUvcmVzaXplMmZzLmM6MTI3NgorbXNnaWQgImJsb2NrcyB0byBiZSBtb3ZlZCIKK21zZ3N0ciAi0LHQu9C+0LrQvtCy0Lgg0LfQsCDQv9GA0LXQvNC10YjRgtCw0ZrQtSIKKworIzogbWlzYy90dW5lMmZzLmM6MjU0NAorbXNnaWQgIkZhaWxlZCB0byBhbGxvY2F0ZSBibG9jayBiaXRtYXAgd2hlbiBpbmNyZWFzaW5nIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiIgorItCd0LjRgdCw0Lwg0YPRgdC/0LXQviDQtNCwINC00L7QtNC10LvQuNC8INCx0LjRgtC80LDRgyDQsdC70L7QutCwINC/0YDQuNC70LjQutC+0Lwg0L/QvtCy0LXRm9Cw0ZrQsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAi0J3QtdC80LAg0LTQvtCy0L7RmdC90L4g0L/RgNC+0YHRgtC+0YDQsCDQt9CwINC/0L7QstC10ZvQsNGa0LUg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQv9GA0LXQvNC10YHRgtC40Lwg0LHQu9C+0LrQvtCy0LUg0LfQsCDQstGA0LXQvNC1INC/0YDQvtC80LXQvdC1INCy0LXQu9C40YfQuNC90LUg0Lgt0YfQstC+0YDQsCBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU4NworbXNnaWQgIiIKKyJFcnJvciBpbiByZXNpemluZyB0aGUgaW5vZGUgc2l6ZS5cbiIKKyJSdW4gZTJ1bmRvIHRvIHVuZG8gdGhlIGZpbGUgc3lzdGVtIGNoYW5nZXMuIFxuIgorbXNnc3RyICIiCisi0JPRgNC10YjQutCwINC/0YDQvtC80LXQvdC1INCy0LXQu9C40YfQuNC90LUg0Lgt0YfQstC+0YDQsC5cbiIKKyLQn9C+0LrRgNC10L3QuNGC0LUg4oCeZTJ1bmRv4oCcINC00LAg0L/QvtC90LjRiNGC0LjRgtC1INC40LfQvNC10L3QtSDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwLiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyLQnNCw0LPQuNGY0LAg0JzQnNCfINCx0LvQvtC60LAg0ZjQtSDQu9C+0YjQsC4g0J/QvtC60YPRiNCw0ZjRgtC1INC00LAg0ZjQtSDQv9C+0L/RgNCw0LLQuNGC0LUg0L/QvtC60YDQtdGC0LDRmtC10Lw6XG4iCisi4oCeZTJmc2NrIC1mICVz4oCcXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICLigJ4lc+KAnCDQvdC40ZjQtSDRg9GA0LXRktCw0Zgg0LTQvdC10LLQvdC40LrQsC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICLQktC10LvQuNGH0LjQvdCwINC4LdGH0LLQvtGA0LAg0ZjQtSDQstC10ZsgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgItCh0LrRg9C/0ZnQsNGa0LUg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90L5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQvdCwINCy0LXQu9C40YfQuNC90LAg0Lgt0YfQstC+0YDQsCAlbHUgKNC90LDRmNCyLiAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INC90LDRmNCy0LXRm9C4INCx0YDQvtGYINC60LDRh9C10ZrQsCDQvdCwICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDRgtC10LrRg9Gb0Lgg0LHRgNC+0Zgg0LrQsNGH0LXRmtCwINC90LAgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQv9C+0L3QsNGI0LDRmtC1INCz0YDQtdGI0LrQtSDQvdCwICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgZ2lkIHRvICVsdVxuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0LPQuNC0INGA0LXQt9C10YDQstC40YHQsNC90LjRhSDQsdC70L7QutC+0LLQsCDQvdCwICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgItC/0LXRgNC40L7QtCDQuNC30LzQtdGS0YMg0L/RgNC+0LLQtdGA0LAg0ZjQtSDQv9GA0LXQstC10LvQuNC6ICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INC/0LXRgNC40L7QtCDQuNC30LzQtdGS0YMg0L/RgNC+0LLQtdGA0LAg0L3QsCAlbHUg0YHQtdC60YPQvdC00LVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0L/RgNC+0YbQtdC90LDRgiDRgNC10LfQtdGA0LLQuNGB0LDQvdC40YUg0LHQu9C+0LrQvtCy0LAg0L3QsCAlZyUlICglbGx1INCx0LvQvtC60LApXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICLQsdGA0L7RmCDRgNC10LfQtdGA0LLQuNGB0LDQvdC40YUg0LHQu9C+0LrQvtCy0LAg0ZjQtSDQv9GA0LXQstC10LvQuNC6ICglbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQsdGA0Zgg0YDQtdC30LXRgNCy0LjRgdCw0L3QuNGFINCx0LvQvtC60L7QstCwINC90LAgJWxsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINCy0LXRmyDQuNC80LAg0L7RgdC60YPQtNC90LUg0YHRg9C/0LXRgNCx0LvQvtC60L7QstC1LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCf0L7RgdGC0LDQstGZ0LDRmtC1INC30LDRgdGC0LDQstC40YbQtSDQvtGB0LrRg9C00L3QvtCzINGB0YPQv9C10YDQsdC70L7QutCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90L5cbiIKKyLQt9CwINGB0LjRgdGC0LXQvNC1INC00LDRgtC+0YLQtdC60LAg0YHQsCDRg9C60ZnRg9GH0LXQvdC+0Lwg0YTRg9C90LrRhtC40ZjQvtC8IOKAnm1ldGFfYmfigJwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKyJcbiIKKyLQl9Cw0YHRgtCw0LLQuNGG0LAg0L7RgdC60YPQtNC90L7QsyDRgdGD0L/QtdGA0LHQu9C+0LrQsCDRmNC1INC/0L7RgdGC0LDQstGZ0LXQvdCwLiAgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCR0YDQuNGB0LDRmtC1INC30LDRgdGC0LDQstC40YbQtSDQvtGB0LrRg9C00L3QvtCzINGB0YPQv9C10YDQsdC70L7QutCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90L4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQstGA0LXQvNC1INC/0L7RgdC70LXQtNGa0LUg0L/RgNC+0LLQtdGA0LUg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDQvdCwICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0YPQuNC0INGA0LXQt9C10YDQstC40YHQsNC90LjRhSDQsdC70L7QutC+0LLQsCDQvdCwICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDA2Cittc2dpZCAiRXJyb3IgaW4gdXNpbmcgY2xlYXJfbW1wLiBJdCBtdXN0IGJlIHVzZWQgd2l0aCAtZlxuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0LrQvtGA0LjRiNGb0LXRmtCwIOKAnmNsZWFyX21tcOKAnC3QsC4g0JzQvtGA0LAg0YHQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQsCDigJ4tZuKAnFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyLQpNGD0L3QutGG0LjRmNCwINC60LLQvtGC0LUg0YHQtSDQvNC+0LbQtSDQuNC30LzQtdC90LjRgtC4INGB0LDQvNC+INC60LDQtNCwINGY0LUg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0L7RgtC60LDRh9C10L0uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICLQo9Cj0JjQlCDRgdC1INC80L7QttC1INC40LfQvNC10L3QuNGC0Lgg0YHQsNC80L4g0LrQsNC00LAg0ZjQtSDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQvtGC0LrQsNGH0LXQvS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0KPQo9CY0JQg0LfQsNC/0LjRgVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICLQn9C+0YLRgNC10LHQvdC+INGY0LUg0L7RgdCy0LXQttCw0LLQsNGa0LUg0YHRg9C/0LXRgNCx0LvQvtC60LAg0LTQvdC10LLQvdC40LrQsC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEyNgorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyLQktC10LvQuNGH0LjQvdCwINC4LdGH0LLQvtGA0LAg0YHQtSDQvNC+0LbQtSDQuNC30LzQtdC90LjRgtC4INGB0LDQvNC+INC60LDQtNCwINGY0LUg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0L7RgtC60LDRh9C10L0uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMzMKK21zZ2lkICIiCisiQ2hhbmdpbmcgdGhlIGlub2RlIHNpemUgbm90IHN1cHBvcnRlZCBmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgZmxleF9iZ1xuIgorImZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorItCf0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg0Lgt0YfQstC+0YDQsCDQvdC40ZjQtSDQv9C+0LTRgNC20LDQvdCwINC30LAg0YHQuNGB0YLQtdC80LUg0LTQsNGC0L7RgtC10LrQsCDRgdCwINGD0LrRmdGD0YfQtdC90L7QvFxuIgorItGE0YPQvdC60YbQuNGY0L7QvCDigJ5mbGV4X2Jn4oCcLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INCy0LXQu9C40YfQuNC90YMg0Lgt0YfQstC+0YDQsCAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICLQndC40YHQsNC8INGD0YHQv9C10L4g0LTQsCDQuNC30LzQtdC90LjQvCDQstC10LvQuNGH0LjQvdGDINC4LdGH0LLQvtGA0LBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlkZSBzaXplIHRvICVkXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDQstC10LvQuNGH0LjQvdGDINC40YHQutC+0YDQsNC60LAg0L3QsCAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaXBlIHdpZHRoIHRvICVkXG4iCittc2dzdHIgItCf0L7RgdGC0LDQstGZ0LDQvCDRiNC40YDQuNC90YMg0YLRgNCw0LrQtSDQvdCwICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0L/RgNC+0YjQuNGA0LXQvdC1INC+0YHQvdC+0LLQvdC1INC+0L/RhtC40ZjQtSDQutCw0YfQtdGa0LAg0L3QsCDigJ4lc+KAnFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzIwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICIlczog0L7Qv9C+0YDQsNCy0ZnQsNC8INC00L3QtdCy0L3QuNC6XG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICI80L3QsNGB0YLQsNCy0ZnQsNC8PlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgItCU0LAg0L3QsNGB0YLQsNCy0LjQvCDQuNC/0LDQuiAo0LjQu9C4INC00LAg0YHQsNGH0LXQutCw0LwgJWQg0YHQtdC6LinCoD8gKNC0LNC9KSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgItCU0LAg0L3QsNGB0YLQsNCy0LjQvCDQuNC/0LDQuj8gKNC0LNC9KSAiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICLigJ5ta2UyZnPigJwg0ZjQtSDQuNC/0LDQuiDQv9GA0LjRgdC40ZnQtdC90L4uICDQndCw0LTQsNC8INGB0LUg0LTQsCDRmNC1IOKAni9ldGMvbXRhYuKAnCDQvdC10LjRgdC/0YDQsNCy0L3Qvi5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICLQvdC10ZvQtSDQvtCy0LTQtSDQvdCw0L/RgNCw0LLQuNGC0Lgg4oCeJXPigJwhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICLigJ5ta2UyZnPigJwg0ZjQtSDQuNC/0LDQuiDQv9GA0LjRgdC40ZnQtdC90L4uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LTQtdC70LjQvCDQvNC10LzQvtGA0LjRmNGDINC30LAg0L7QsdGA0LDQtNGDINC+0L/RhtC40ZjQsCDQtNC90LXQstC90LjQutCwIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkNvdWxkIG5vdCBmaW5kIGpvdXJuYWwgZGV2aWNlIG1hdGNoaW5nICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQndC1INC80L7Qs9GDINC00LAg0L3QsNGS0LXQvCDRg9GA0LXRktCw0Zgg0LTQvdC10LLQvdC40LrQsCDQutC+0ZjQuCDQvtC00LPQvtCy0LDRgNCwIOKAniVz4oCcXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCd0LDQstC10LTQtdC90LUg0YHRgyDQu9C+0YjQtSDQvtC/0YbQuNGY0LUg0LTQvdC10LLQvdC40LrQsC5cbiIKKyJcbiIKKyLQntC/0YbQuNGY0LUg0LTQvdC10LLQvdC40LrQsCDRgdGDINGA0LDQt9C00LLQvtGY0LXQvdC1INC30LDRgNC10LfQuNC80LAsINC4INC80L7Qs9GDINC40LzQsNGC0Lgg0LDRgNCz0YPQvNC10L3RglxuIgorIlx00LrQvtGY0Lgg0ZjQtSDQv9C+0YHRgtCw0LLRmdC10L0g0LfQvdCw0LrQvtC8INGY0LXQtNC90LDQutC+0YHRgtC4IOKAnj3igJwuXG4iCisiXG4iCisi0JjRgdC/0YDQsNCy0L3QtSDQvtC/0YbQuNGY0LUg0LTQvdC10LLQvdC40LrQsCDRgdGDOlxuIgorIlx0c2l6ZT080LLQtdC70LjRh9C40L3QsCDQtNC90LXQstC90LjQutCwINGDINC80LXQs9Cw0LHQsNGY0YLQuNC80LA+XG4iCisiXHRkZXZpY2U9PNGD0YDQtdGS0LDRmCDQtNC90LXQstC90LjQutCwPlxuIgorIlx0bG9jYXRpb249PNC80LXRgdGC0L4g0LTQvdC10LLQvdC40LrQsD5cbiIKKyJcbiIKKyLQktC10LvQuNGH0LjQvdCwINC00L3QtdCy0L3QuNC60LAg0LzQvtGA0LAg0LHQuNGC0Lgg0LjQt9C80LXRktGDIDEwMjQg0LggMTAyNDAwMDAg0LHQu9C+0LrQvtCy0LAg0YHQuNGB0YLQtdC80LAgIgorItC00LDRgtC+0YLQtdC60LAuXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRmNC1INC/0YDQtdC80LDQu9C4INC30LAg0LTQvdC10LLQvdC40LpcbiIKKworIzogbWlzYy91dGlsLmM6MjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgcmVxdWVzdGVkIGpvdXJuYWwgc2l6ZSBpcyAlZCBibG9ja3M7IGl0IG11c3QgYmVcbiIKKyJiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGJsb2Nrcy4gIEFib3J0aW5nLlxuIgorbXNnc3RyICIiCisiXG4iCisi0JfQsNGC0YDQsNC20LXQvdCwINCy0LXQu9C40YfQuNC90LAg0LTQvdC10LLQvdC40LrQsCDRmNC1ICVkINCx0LvQvtC60LA7INC80L7RgNCwINCx0LjRgtC4XG4iCisi0LjQt9C80LXRktGDIDEwMjQg0LggMTAyNDAwMDAg0LHQu9C+0LrQvtCy0LAuICDQn9GA0LXQutC40LTQsNC8LlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQktC10LvQuNGH0LjQvdCwINC00L3QtdCy0L3QuNC60LAg0ZjQtSDQv9GA0LXQstC10LvQuNC60LAg0LfQsCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsC5cbiIKKworIzogbWlzYy91dGlsLmM6MjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIGZpbGVzeXN0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgZXZlcnkgJWQgbW91bnRzIG9yXG4iCisiJWcgZGF5cywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iCittc2dzdHIgIiIKKyLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRm9C1INCx0LjRgtC4INGB0LDQvNC+0YHRgtCw0LvQvdC+INC/0YDQvtCy0LXRgNC10L0g0L3QsNC60L7QvSAlZCDQutCw0YfQtdGa0LAg0LjQu9C4INC90LDQutC+0L0gJWcgIgorItC00LDQvdCwLFxuIgorItC00L4g0YfQtdCz0LAg0L/RgNCy0L4g0LTQvtGS0LUuICDQmtC+0YDQuNGB0YLQuNGC0LUg4oCedHVuZTJmcyAtY+KAnCDQuNC70Lgg4oCeLWnigJwg0LfQsCDQv9GA0LXRgdC60LDQutCw0ZrQtS5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKyLQo9C/0L7RgtGA0LXQsdCwOiAlcyBbLWRdIFstcCDQtNCw0YLQvtGC0LXQutCwX9C/0LjQtC3QsF0gWy1zINC/0YPRgtCw0ZrQsF/Rg9GC0LjRh9C90LjRhtC1XSBbLVQg0LLRgNC10LzQtV1cbiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiAgICAgICAlcyBbLXJ8dF0gWy1uINCx0YDQvtGYXSBbLXMg0L/Rg9GC0LDRmtCwX9GD0YLQuNGH0L3QuNGG0LVdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiICAgICAgICVzIC1rXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICLQu9C+0YjQuCDQsNGA0LPRg9C80LXQvdGC0LgiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICLQv9C+0LLQtdC20LgiCisKKyM6IG1pc2MvdXVpZGQuYzoxOTIKK21zZ2lkICJ3cml0ZSIKK21zZ3N0ciAi0L/QuNGI0LgiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICLQsdGA0L7RmCDRh9C40YLQsNGa0LAiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDYKK21zZ2lkICJiYWQgcmVzcG9uc2UgbGVuZ3RoIgorbXNnc3RyICLQu9C+0YjQsCDQtNGD0LbQuNC90LAg0L7QtNCz0L7QstC+0YDQsCIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICLigJ7Qo9Cj0JjQlGTigJwg0LTQtdC80L7QvSDRmNC1INCy0LXRmyDQv9C+0LrRgNC10L3Rg9GCINC90LAg0L/QuNC0LdGDIOKAniVz4oCcXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY3JlYXRlIHVuaXggc3RyZWFtIHNvY2tldDogJXMiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDRgdGC0LLQvtGA0LjQvCDRg9GC0LjRh9C90LjRhtGDINGY0YPQvdC40LrRgSDRgtC+0LrQsDogJXMiCisKKyM6IG1pc2MvdXVpZGQuYzozMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYmluZCB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGB0LLQtdC20LXQvCDRmNGD0L3QuNC60YEg0YPRgtC40YfQvdC40YbRgyDigJ4lc+KAnDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQvtGB0LvRg9GI0LrRg9GY0LXQvCDQvdCwINGY0YPQvdC40LrRgSDRg9GC0LjRh9C90LjRhtC4IOKAniVz4oCcOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgItCT0YDQtdGI0LrQsCDRh9C40YLQsNGa0LAg0YHQsCDQutC70LjRmNC10L3RgtCwLCDQtNGD0LbQuNC90LAgPSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIm9wZXJhdGlvbiAlZCwgaW5jb21pbmcgbnVtID0gJWRcbiIKK21zZ3N0ciAi0L7Qv9C10YDQsNGG0LjRmNCwICVkLCDQtNC+0LvQsNC30L3QuCDQsdGA0L7RmCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAi0JLRgNC10LzQtSDRgdGC0LLQsNGA0LDRmtCwINCj0KPQmNCULdCwOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAi0KHRgtCy0L7RgNC10L0g0ZjQtSDQvdCw0YHRg9C80LjRh9C90Lgg0KPQo9CY0JQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kICVkIHN1YnNlcXVlbnQgVVVJRHNcbiIKK21zZ3N0clswXSAi0KHRgtCy0L7RgNC10L0g0ZjQtSDQstGA0LXQvNC10L3RgdC60Lgg0KPQo9CY0JQgJXMg0LggJWQg0LrQsNGB0L3QuNGY0Lgg0KPQo9CY0JRcbiIKK21zZ3N0clsxXSAi0KHRgtCy0L7RgNC10L0g0ZjQtSDQstGA0LXQvNC10L3RgdC60Lgg0KPQo9CY0JQgJXMg0LggJWQg0LrQsNGB0L3QuNGY0LAg0KPQo9CY0JQt0LBcbiIKK21zZ3N0clsyXSAi0KHRgtCy0L7RgNC10L0g0ZjQtSDQstGA0LXQvNC10L3RgdC60Lgg0KPQo9CY0JQgJXMg0LggJWQg0LrQsNGB0L3QuNGY0LjRhSDQo9Cj0JjQlC3QsFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgItCh0YLQstC+0YDQtdC90Lgg0YHRgyDigJ4lZOKAnCDQo9Cj0JjQlC3QuDpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDRgNCw0LTRmtCwICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICLQm9C+0Ygg0LHRgNC+0Zg6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICLQk9GA0LXRiNC60LAg0L/QvtC30LjQstCw0ZrQsCDigJ51dWlkZOKAnCDQtNC10LzQvtC90LAgKCVzKTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iCittc2dzdHJbMF0gIiVzINC4ICVkINC60LDRgdC90LjRmNC4INCj0KPQmNCUXG4iCittc2dzdHJbMV0gIiVzINC4ICVkINC60LDRgdC90LjRmNCwINCj0KPQmNCULdCwXG4iCittc2dzdHJbMl0gIiVzINC4ICVkINC60LDRgdC90LjRmNC40YUg0KPQo9CY0JQt0LBcbiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICLQodC/0LjRgdCw0Log0KPQo9CY0JQt0LA6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAi0J3QtdC+0YfQtdC60LjQstCw0L3QsCDQtNGD0LbQuNC90LAg0L7QtNCz0L7QstC+0YDQsCDRgdCwINGB0LXRgNCy0LXRgNCwIOKAniVk4oCcXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGD0LHQuNGY0LXQvCDRg9GD0LjQtCDQtNC10LzQvtC90LAg0YHQsCDQv9C40LQt0L7QvCAlZDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjU5MgorIywgYy1mb3JtYXQKK21zZ2lkICJLaWxsZWQgdXVpZGQgcnVubmluZyBhdCBwaWQgJWRcbiIKK21zZ3N0ciAi0KPQsdC40YUg0YPRg9C40LQg0LTQtdC80L7QvdCwINGB0LAg0L/QuNC0LdC+0LwgJWRcbiIKKworIzogbWlzYy91dWlkZ2VuLmM6MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcl0gWy10XVxuIgorbXNnc3RyICLQo9C/0L7RgtGA0LXQsdCwOiAlcyBbLXJdIFstdF1cbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMgorbXNnaWQgIiMgRXh0ZW50IGR1bXA6XG4iCittc2dzdHIgIiMg0JjQt9Cx0LDRh9Cw0Zgg0YDQsNGB0L/QvtC90LA6XG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiI1x0TnVtPSVsbHUsIFNpemU9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRlZD0lbGx1XG4iCittc2dzdHIgIiNcdNCR0YDQvtGYPSVsbHUsINCS0LXQu9C40YfQuNC90LA9JWxsdSwg0JrRg9GA0LfQvtGAPSVsbHUsINCf0L7RgNC10ZLQsNC90L49JWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIGRldmljZSBbLWJ8LXN8bmV3X3NpemVdICIKKyJbLXogdW5kb19maWxlXVxuIgorIlxuIgorbXNnc3RyICIiCisi0KPQv9C+0YLRgNC10LHQsDogJXMgWy1kINC30LDRgdGC0LDQstC40YbQtV/Qv9GA0L7Rh9C40YjRm9Cw0LLQsNGa0LBdIFstZl0gWy1GXSBbLU1dIFsgLVBdIFstcF0g0YPRgNC10ZLQsNGYICIKKyJb0L3QvtCy0LBf0LLQtdC70LjRh9C40L3QsF1cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgItCf0YDQvtGI0LjRgNGD0ZjQtdC8INGC0LDQsdC10LvRgyDQuC3Rh9Cy0L7RgNCwIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgItCf0YDQtdC80LXRiNGC0LDQvCDQsdC70L7QutC+0LLQtSIKKworIzogcmVzaXplL21haW4uYzo3OAorbXNnaWQgIlNjYW5uaW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICLQn9GA0LXQs9C70LXQtNCw0Lwg0YLQsNCx0LXQu9GDINC4LdGH0LLQvtGA0L7QstCwIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAi0J7RgdCy0LXQttCw0LLQsNC8INGD0L/Rg9GC0LUg0Lgt0YfQstC+0YDQsCIKKworIzogcmVzaXplL21haW4uYzo4NAorbXNnaWQgIk1vdmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0J/RgNC10LzQtdGI0YLQsNC8INGC0LDQsdC10LvRgyDQuC3Rh9Cy0L7RgNC+0LLQsCIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAi0J3QtdC/0L7Qt9C90LDRgiDQv9GA0L7Qu9Cw0Lc/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICLQn9C+0YfQtdGC0L3QuCDQv9GA0L7Qu9Cw0LcgJWQgKNC90LDRmNCyLiA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCf0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg4oCeYmlnYWxsb2PigJwg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDQvdC40ZjQtSDRgyDQv9C+0YLQv9GD0L3QvtGB0YLQuCDQuNGB0L/RgNC+0LHQsNC90LAuICAiCisi0J3QsNGB0YLQsNCy0LjRgtC1INC90LBcbiIKKyLRgdC+0L/RgdGC0LLQtdC90YMg0L7QtNCz0L7QstC+0YDQvdC+0YHRgiEgINCa0L7RgNC40YHRgtC40YLQtSDQvtC/0YbQuNGY0YMg4oCeZm9yY2XigJwg0LDQutC+INC40L/QsNC6INC20LXQu9C40YLQtSDQtNCwICIKKyLQvdCw0YHRgtCw0LLQuNGC0LUuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L7RgtCy0LDRgNCw0ZrQsCDigJ4lc+KAnCIKKworIzogcmVzaXplL21haW4uYzozNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQtNC+0LHQsNCy0ZnQsNGa0LAg0L/QvtC00LDRgtCw0LrQsCDRgdGC0LDRmtCwINC30LAg4oCeJXPigJwiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisi0J/RgNCy0L4g0L/QvtC60YDQtdC90LjRgtC1IOKAnmUyZnNjayAtZiAlc+KAnC5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICLQn9GA0L7RhtC10ZrQtdC90LAg0L3QsNGY0LzQsNGa0LAg0LLQtdC70LjRh9C40L3QsCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwOiAlbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQvdCwINC90L7QstCwINCy0LXQu9C40YfQuNC90LA6ICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgItCd0L7QstCwINCy0LXQu9C40YfQuNC90LAg0ZjQtSDQv9GA0LXQstC40YjQtSDQstC10LvQuNC60LAg0LTQsCDQsdC4INCx0LjQu9CwINC40LfRgNCw0LbQtdC90LAg0YHQsCAzMiDQsdC40YLQsFxuIgorCisjOiByZXNpemUvbWFpbi5jOjUyOAorIywgYy1mb3JtYXQKK21zZ2lkICJOZXcgc2l6ZSBzbWFsbGVyIHRoYW4gbWluaW11bSAoJWxsdSlcbiIKK21zZ3N0ciAi0J3QvtCy0LAg0LLQtdC70LjRh9C40L3QsCDRmNC1INC80LDRmtCwINC+0LQg0L3QsNGY0LzQsNGa0LUgKCVsbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDQtNGD0LbQuNC90LAg0LjRgdC60L7RgNCw0LrQsCIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCh0LDQtNGA0LbQsNGY0L3QsCDQv9Cw0YDRgtC40YbQuNGY0LAgKNC40LvQuCDRg9GA0LXRktCw0ZgpINC40LzQsCDRgdCw0LzQviAlbGx1ICglZGspINCx0LvQvtC60LAuXG4iCisi0JfQsNGC0YDQsNC20LjQu9C4INGB0YLQtSDQvdC+0LLRgyDQstC10LvQuNGH0LjQvdGDINC+0LQgJWxsdSDQsdC70L7QutCwLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU2NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSB3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIiCisi0KTRg9C90LrRhtC40ZjQsCDQutCy0L7RgtC1INGB0LUg0LzQvtC20LUg0LjQt9C80LXQvdC40YLQuCDRgdCw0LzQviDQutCw0LTQsCDRmNC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC+0YLQutCw0YfQtdC9LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU4MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVuYWJsZSB0aGUgZXh0ZW50cyBmZWF0dXJlIHdpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKyJmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTg3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuICBOb3RoaW5nIHRvIGRvIVxuIgorIlxuIgorbXNnc3RyICIiCisi0KHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0ZjQtSDQstC10Zsg0L7QtCAlbGx1INCx0LvQvtC60LAgKCVkaykuINCd0LjRiNGC0LAg0LfQsCDRg9GA0LDQtNC40YLQuCFcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQstC10Zsg0LjQvNCwINC00L3QtdCy0L3QuNC6LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINCy0LXRmyDQuNC80LAg0LTQvdC10LLQvdC40LouXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAi0J/QvtGB0YLQsNCy0ZnQsNC8INCy0YDQtdC80LUg0L/QvtGB0LvQtdC00ZrQtSDQv9GA0L7QstC10YDQtSDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINC90LAgJXNcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICLQn9C+0YHRgtCw0LLRmdCw0Lwg0LLRgNC10LzQtSDQv9C+0YHQu9C10LTRmtC1INC/0YDQvtCy0LXRgNC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0L3QsCAlc1xuIgorCisjOiByZXNpemUvbWFpbi5jOjYxMgorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAi0JzQtdGa0LDQvCDQstC10LvQuNGH0LjQvdGDINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg4oCeJXPigJwt0LAg0L3QsCAlbGx1ICglZGspINCx0LvQvtC60LAuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgItC/0YDQuNC70LjQutC+0Lwg0L/QvtC60YPRiNCw0ZjQsCDQv9GA0L7QvNC10L3QtSDQstC10LvQuNGH0LjQvdC1IOKAniVz4oCcIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorItCf0L7QutGA0LXQvdC40YLQtSDigJ5lMmZzY2sgLWZ5ICVz4oCcINC00LAg0L/QvtC/0YDQsNCy0LjRgtC1INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwXG4iCisi0L3QsNC60L7QvSDQv9GA0LXQutC40L3Rg9GC0LUg0YDQsNC00ZrQtSDQv9GA0L7QvNC10L3QtSDQstC10LvQuNGH0LjQvdC1LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQvdCwIOKAniVz4oCcINGY0LUg0YHQsNC00LAg0LLQtdC70LjRh9C40L3QtSAlbGx1INCx0LvQvtC60LAgKCVkaykuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byB0cnVuY2F0ZSAlcyIKK21zZ3N0ciAi0L/RgNC40LvQuNC60L7QvCDQv9C+0LrRg9GI0LDRmNCwINGB0LrRgNCw0ZvQuNCy0LDRmtCwIOKAniVz4oCcIgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAi0ZjQtdC30LPRgNC+INC90LUg0L/QvtC00YDQttCw0LLQsCDQv9GA0L7QvNC10L3RgyDQstC10LvQuNGH0LjQvdC1INGB0LAg4oCec3BhcnNlX3N1cGVyMuKAnCIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisi0KHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg4oCeJXPigJwg0ZjQtSDQv9GA0LjQutCw0YfQtdC9INC90LAg4oCeJXPigJw7INC/0L7RgtGA0LXQsdC90LAg0ZjQtSDQv9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC90LAgIgorItC80YDQtdC20LhcbiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAi0KHQutGD0L/RmdCw0ZrQtSDQvdCwINC80YDQtdC20Lgg0L3QuNGY0LUg0L/QvtC00YDQttCw0L3QviIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC90LUg0L/QvtC00YDQttCw0LLQsCDQv9GA0L7QvNC10L3RgyDQstC10LvQuNGH0LjQvdC1INC90LAg0LzRgNC10LbQuCIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgItCd0LXQvNCwINC00L7QstC+0ZnQvdC+INGA0LXQt9C10YDQstC40YHQsNC90LjRhSDQs9C00YIg0LHQu9C+0LrQvtCy0LAg0LfQsCDQv9GA0L7QvNC10L3RgyDQstC10LvQuNGH0LjQvdC1IgorCisjOiByZXNpemUvb25saW5lLmM6MTI5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICLQiNC10LfQs9GA0L4g0L3QtSDQv9C+0LTRgNC20LDQstCwINC/0YDQvtC80LXQvdGDINCy0LXQu9C40YfQuNC90LUg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDQvtCy0LUg0LLQtdC70LjRh9C40L3QtSIKKworIzogcmVzaXplL29ubGluZS5jOjEzNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBtb3VudHBvaW50ICVzIgorbXNnc3RyICLQv9GA0LjQu9C40LrQvtC8INC/0L7QutGD0YjQsNGY0LAg0L7RgtCy0LDRgNCw0ZrQsCDRgtCw0YfQutC1INC60LDRh9C10ZrQsCDigJ4lc+KAnCIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgItCX0LDRgtGA0LDQttC10L3QviDRmNC1INGB0YLQsNGA0L4g0YHRg9GH0LXRmdC1INC/0YDQvtC80LXQvdC1INCy0LXQu9C40YfQuNC90LUuXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjEgcmVzaXplL29ubGluZS5jOjE3OAorbXNnaWQgIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIgorbXNnc3RyICLQndC40ZjQtSDQtNC+0LfQstC+0ZnQtdC90LAg0L/RgNC+0LzQtdC90LAg0LLQtdC70LjRh9C40L3QtSDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwIgorCisjOiByZXNpemUvb25saW5lLmM6MTY0IHJlc2l6ZS9vbmxpbmUuYzoxODQKK21zZ2lkICJXaGlsZSBjaGVja2luZyBmb3Igb24tbGluZSByZXNpemluZyBzdXBwb3J0IgorbXNnc3RyICLQn9GA0LjQu9C40LrQvtC8INC/0YDQvtCy0LXRgNC1INC/0L7QtNGA0YjQutC1INC30LAg0L/RgNC+0LzQtdC90YMg0LLQtdC70LjRh9C40L3QtSDQvdCwINC80YDQtdC20LgiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxODEKK21zZ2lkICJLZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgItCI0LXQt9Cz0YDQviDQvdC1INC/0L7QtNGA0LbQsNCy0LAg0L/RgNC+0LzQtdC90YMg0LLQtdC70LjRh9C40L3QtSDQvdCwINC80YDQtdC20LgiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAi0J7QsdCw0LLRmdCw0Lwg0L/RgNC+0LzQtdC90YMg0LLQtdC70LjRh9C40L3QtSDQvdCwINC80YDQtdC20Lgg0LfQsCDigJ4lc+KAnCDQvdCwICVsbHUgKCVkaykg0LHQu9C+0LrQsC5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjIzMAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBleHRlbmQgdGhlIGxhc3QgZ3JvdXAiCittc2dzdHIgItCa0LDQtNCwINGB0LDQvCDQv9C+0LrRg9GI0LDQviDQtNCwINGA0LDRiNC40YDQuNC8INC/0L7RgdC70LXQtNGa0YMg0LPRgNGD0L/RgyIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gYWRkIGdyb3VwICMlZCIKK21zZ3N0ciAi0JrQsNC00LAg0YHQsNC8INC/0L7QutGD0YjQsNC+INC00LAg0LTQvtC00LDQvCDQs9GA0YPQv9GDINCx0YAuICVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisi0KHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0LfQsCDigJ4lc+KAnCDRmNC1INC/0YDQuNC60LDRh9C10L0g0L3QsCDigJ4lc+KAnCwg0LAg0L/RgNC+0LzQtdC90LAg0LLQtdC70LjRh9C40L3QtSDQvdC40ZjQtSAiCisi0L/QvtC00YDQttCw0L3QsCDQvdCwINGC0L7QvCDRgdC40YHRgtC10LzRgy5cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICLQsdGA0L7RmCDQuC3Rh9Cy0L7RgNC+0LLQsCAoJWxsdSkg0LzQvtGA0LAg0LHQuNGC0Lgg0LzQsNGa0Lgg0L7QtCAldSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEwMzcKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MiCittc2dzdHIgItGA0LXQt9C10YDQstC40YHQsNC90Lgg0LHQu9C+0LrQvtCy0LgiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAi0LHQu9C+0LrQvtCy0Lgg0LzQtdGC0LDQv9C+0LTQsNGC0LDQutCwIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTM4NSByZXNpemUvcmVzaXplMmZzLmM6MjMxNworbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAi0L3QvtCy0Lgg0LzQtdGC0LAg0LHQu9C+0LrQvtCy0LgiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICIiCisi0J7QstC+INC90LjRmNC1INGC0YDQtdCx0LDQu9C+INC00LAg0YHQtSDQtNC10YHQuCEg0J3QtdC80LAg0YHRg9C/0LXRgNCx0LvQvtC60LAg0YMg0L/QvtGB0LvQtdC00ZrQvtGYIOKAnnN1cGVyX3NwYXJzZeKAnCAiCisi0LPRgNGD0L/QuCDQsdC70L7QutCwP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorItCe0LLQviDQvdC40ZjQtSDRgtGA0LXQsdCw0LvQviDQtNCwINGB0LUg0LTQtdGB0LghINCd0LXQvtGH0LXQutC40LLQsNC90Lgg0YHRgtCw0YDQuCDQvtC/0LjRgdC90LjQuiAob2xkX2Rlc2MpINGDICIKKyLigJ5zdXBlcl9zcGFyc2XigJwg0LPRgNGD0L/QuCDQsdC70L7QutCwP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjYxOAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW46IHJlc2l6ZSBpbm9kZSBjb3JydXB0IVxuIgorbXNnc3RyICLQntCy0L4g0L3QuNGY0LUg0YLRgNC10LHQsNC70L4g0LTQsCDRgdC1INC00LXRgdC4OiDQv9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LAg0ZjQtSDQvtGI0YLQtdGb0LXQvdCwIVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKKyMsIGZ1enp5Cittc2dpZCAiRVhUMkZTIExpYnJhcnkgdmVyc2lvbiAxLjQzLjIiCittc2dzdHIgIuKAnkVYVDJGU+KAnCDQsdC40LHQu9C40L7RgtC10LrQsCDQuNC30LTQsNGa0LAgMS40Mi4xMiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyX2ZpbHN5cyBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCeZXh0Ml9maWxzeXPigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAnmJhZGJsb2Nrc19saXN04oCcIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDQt9CwINGB0YLRgNGD0LrRgtGD0YDRgyDigJ5iYWRibG9ja3NfaXRlcmF0ZeKAnCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDQt9CwINGB0YLRgNGD0LrRgtGD0YDRgyDigJ5pbm9kZV9zY2Fu4oCcIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAnmlvX2NoYW5uZWzigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDQt9CwINGB0YLRgNGD0LrRgtGD0YDRgyDigJ5pb19jaGFubmVsIHVuaXjigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCeaW9fbWFuYWdlcuKAnCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAnmJsb2NrX2JpdG1hcOKAnCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAnmlub2RlX2JpdG1hcOKAnCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCeZ2VuZXJpY19iaXRtYXDigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDQt9CwINGB0YLRgNGD0LrRgtGD0YDRgyDigJ5pb19jaGFubmVsIHRlc3TigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAntGB0L/QuNGB0LrQsCDQsdC70L7QutCwINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCw4oCcIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGljb3VudCBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCeaWNvdW504oCcIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIFBvd2VycXVlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCeUG93ZXJxdWVzdCBpb19jaGFubmVs4oCcIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCe0LXQutGB0YIyINC00LDRgtC+0YLQtdC60LXigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDQt9Cw0LPQu9Cw0LLRmdC1INC10LrRgdGCMiDRgdC70LjQutC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAg0YHRgtGA0YPQutGC0YPRgNGDIOKAnmlvX2NoYW5uZWwg0Lgt0YfQstC+0YDQsOKAnCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgNGD0LrQvtCy0LDRmtC1IGV4dDQg0YDQsNGB0L/QvtC90L7QvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAi0JvQvtGIINC80LDQs9C40YfQvdC4INCx0YDQvtGYINGDINGB0YPQv9C10YDQsdC70L7QutGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzEKK21zZ2lkICJGaWxlc3lzdGVtIHJldmlzaW9uIHRvbyBoaWdoIgorbXNnc3RyICLQoNC10LLQuNC30LjRmNCwINGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAg0ZjQtSDQv9GA0LXQstC40YHQvtC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICLQn9C+0LrRg9GI0LDQstCw0Lwg0LTQsCDQv9C40YjQtdC8INGDINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAg0LrQvtGY0Lgg0ZjQtSDQvtGC0LLQvtGA0LXQvSDRgdCw0LzQviDQt9CwINGH0LjRgtCw0ZrQtSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMzCittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtGH0LjRgtCw0Lwg0L7Qv9C40YHQvdC40LrQtSDQs9GA0YPQv9C1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzQKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGD0L/QuNGI0LXQvCDQvtC/0LjRgdC90LjQutC1INCz0YDRg9C/0LUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgItCe0YjRgtC10ZvQtdC90Lgg0L7Qv9C40YHQvdC40Log0LPRgNGD0L/QtTog0LvQvtGIINCx0LvQvtC6INC30LAg0LHQuNGC0LzQsNC/0YMg0LHQu9C+0LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0J7RiNGC0LXRm9C10L3QuCDQvtC/0LjRgdC90LjQuiDQs9GA0YPQv9C1OiDQu9C+0Ygg0LHQu9C+0Log0LfQsCDQsdC40YLQvNCw0L/RgyDQuC3Rh9Cy0L7RgNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgItCe0YjRgtC10ZvQtdC90Lgg0L7Qv9C40YHQvdC40Log0LPRgNGD0L/QtTog0LvQvtGIINCx0LvQvtC6INC30LAg0YLQsNCx0LXQu9GDINC4LdGH0LLQvtGA0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOAorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINGD0L/QuNGI0LXQvCDQsdC40YLQvNCw0L/RgyDQuC3Rh9Cy0L7RgNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtGH0LjRgtCw0Lwg0LHQuNGC0LzQsNC/0YMg0Lgt0YfQstC+0YDQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDRg9C/0LjRiNC10Lwg0LHQuNGC0LzQsNC/0YMg0LHQu9C+0LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtGH0LjRgtCw0Lwg0LHQuNGC0LzQsNC/0YMg0LHQu9C+0LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDRg9C/0LjRiNC10Lwg0YLQsNCx0LXQu9GDINC4LdGH0LLQvtGA0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MworbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQv9GA0L7Rh9C40YLQsNC8INGC0LDQsdC10LvRgyDQuC3Rh9Cy0L7RgNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDQKK21zZ2lkICJDYW4ndCByZWFkIG5leHQgaW5vZGUiCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQv9GA0L7Rh9C40YLQsNC8INGB0LvQtdC00LXRm9C4INC4LdGH0LLQvtGAIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgItCh0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINC40LzQsCDQvdC10L7Rh9C10LrQuNCy0LDQvdGDINCy0LXQu9C40YfQuNC90YMg0LHQu9C+0LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICLQtdC60YHRgjIg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8INGY0LUg0L7RiNGC0LXRm9C10L0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAi0J/QvtC60YPRiNCw0Zgg0YfQuNGC0LDRmtCwINCx0LvQvtC60LAg0YHQsCDRgdC40YHRgtC10LzQsCDQtNCw0YLQvtGC0LXQutCwINGY0LUg0YDQtdC30YPQu9GC0LjRgNCw0L4g0LrRgNCw0YLQutC40Lwg0YfQuNGC0LDRmtC10LwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAi0J/QvtC60YPRiNCw0Zgg0L/QuNGB0LDRmtCwINCx0LvQvtC60LAg0L3QsCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRmNC1INGA0LXQt9GD0LvRgtC40YDQsNC+INC60YDQsNGC0LrQuNC8INC/0LjRgdCw0ZrQtdC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgItCd0LXQvNCwINGB0LvQvtCx0L7QtNC90L7QsyDQv9GA0L7RgdGC0L7RgNCwINGDINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAi0JHQuNGC0LzQsNC/0LAg0Lgt0YfQstC+0YDQsCDQvdC40ZjQtSDRg9GH0LjRgtCw0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgItCR0LjRgtC80LDQv9CwINCx0LvQvtC60LAg0L3QuNGY0LUg0YPRh9C40YLQsNC90LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICLQndC10LTQvtC30LLQvtGZ0LXQvdC4INCx0YDQvtGYINC4LdGH0LLQvtGA0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIgorbXNnc3RyICLQndC10LTQvtC30LLQvtGZ0LXQvdC4INCx0YDQvtGYINCx0LvQvtC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICLQo9C90YPRgtGA0LDRiNGa0LAg0LPRgNC10YjQutCwINGDIOKAnmV4dDJmc19leHBhbmRfZGly4oCcLdGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgItCd0LXQvNCwINC00L7QstC+0ZnQvdC+INC/0YDQvtGB0YLQvtGA0LAg0LfQsCDQuNC30LPRgNCw0LTRmtGDINC/0YDQtdC00LvQvtC20LXQvdC+0LMg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0LHRgNC+0Zgg0LHQu9C+0LrQsCDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDigJ5leHQyZnNfbWFya19ibG9ja19iaXRtYXDigJwt0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0LHRgNC+0Zgg0LHQu9C+0LrQsCDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDigJ5leHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcOKAnC3QuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0LHRgNC+0Zgg0LHQu9C+0LrQsCDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDigJ5leHQyZnNfdGVzdF9ibG9ja19iaXRtYXDigJwt0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INCx0YDQvtGYINCx0LvQvtC60LAg0ZjQtSDQv9GA0L7RgdC70LXRktC10L0g4oCeZXh0MmZzX21hcmtfaW5vZGVfYml0bWFw4oCcLdC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INCx0YDQvtGYINCx0LvQvtC60LAg0ZjQtSDQv9GA0L7RgdC70LXRktC10L0g4oCeZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXDigJwt0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INCx0YDQvtGYINCx0LvQvtC60LAg0ZjQtSDQv9GA0L7RgdC70LXRktC10L0g4oCeZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFw4oCcLdC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKyLQn9C+0LrRg9GI0LDRmCDQtNCwINC/0YDQuNCy0LjQtNC90L4g0LTQvtGC0LXRgNCw0Lwg0LrRgNCw0Zgg0LHQuNGC0LzQsNC/0LUg0LHQu9C+0LrQvtCy0LAg0ZjQtSDQv9GA0L7RiNCw0L4g0YHRgtCy0LDRgNC90Lgg0LrRgNCw0ZgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorItCf0L7QutGD0YjQsNGYINC00LAg0L/RgNC40LLQuNC00L3QviDQtNC+0YLQtdGA0LDQvCDQutGA0LDRmCDQsdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNC+0LLQsCDRmNC1INC/0YDQvtGI0LDQviDRgdGC0LLQsNGA0L3QuCDQutGA0LDRmCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi0J3QsNGS0L7RhSDQvdC10LTQvtC30LLQvtGZ0LXQvdC4INC40L3QtNC40YDQtdC60YLQvdC4INCx0LvQvtC6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi0J3QsNGS0L7RhSDQtNCy0L7RgdGC0YDRg9C60Lgg0L3QtdC00L7Qt9Cy0L7RmdC10L3QuCDQuNC90LTQuNGA0LXQutGC0L3QuCDQsdC70L7QuiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY2Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgItCd0LDRktC+0YUg0YLRgNC+0YHRgtGA0YPQutC4INC90LXQtNC+0LfQstC+0ZnQtdC90Lgg0LjQvdC00LjRgNC10LrRgtC90Lgg0LHQu9C+0LoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NworbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAi0JHQuNGC0LzQsNC/0LUg0LHQu9C+0LrQsCDQvdC40YHRgyDQuNGB0YLQtSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICLQkdC40YLQvNCw0L/QtSDQuC3Rh9Cy0L7RgNCwINC90LjRgdGDINC40YHRgtC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAi0J3QtdC00L7Qt9Cy0L7RmdC10L3QuCDQuNC70Lgg0LvQvtGIINC90LDQt9C40LIg0YPRgNC10ZLQsNGY0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0JPRgNGD0L/QuCDQsdC70L7QutCwINC90LXQtNC+0YHRgtCw0ZjQtSDRgtCw0LHQtdC70LAg0Lgt0YfQstC+0YDQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICLQtdC60YHRgjIg0YHRg9C/0LXRgNCx0LvQvtC6INGY0LUg0L7RiNGC0LXRm9C10L0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L7Qv9GI0YLQuCDQsdGA0L7RmCDQsdC40YLQsCDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDigJ5leHQyZnNfbWFya19nZW5lcmljX2JpdG1hcOKAnC3QuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjczCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKyLQndC10LjRgdC/0YDQsNCy0LDQvSDQvtC/0YjRgtC4INCx0YDQvtGYINCx0LjRgtCwINGY0LUg0L/RgNC+0YHQu9C10ZLQtdC9IOKAnmV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXDigJwt0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NAorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0L7Qv9GI0YLQuCDQsdGA0L7RmCDQsdC40YLQsCDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDigJ5leHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcOKAnC3QuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICLQn9GA0LXQstC40YjQtSDRgdC40LzQsdC+0LvQuNGH0LrQuNGFINCy0LXQt9CwLiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgItCk0YPQvdC60YbQuNGY0LAg0L7Qv9C+0LfQuNCy0LAg0L3QtdGb0LUg0L7QtNGA0LDQtNC40YLQuCDQvtCy0LDRmCDRgdC70YPRh9Cw0ZgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0Lgt0YfQstC+0YAg0ZjQtSDQuNC3INC70L7RiNC10LMg0LHQu9C+0LrQsCDRgyDRgtCw0LHQtdC70Lgg0Lgt0YfQstC+0YDQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAi0KHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0LjQvNCwINC90LXQv9C+0LTRgNC20LDQvdGDINGE0YPQvdC60YbQuNGY0YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIHJlYWQtb25seSBmZWF0dXJlKHMpIgorbXNnc3RyICLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDQuNC80LAg0L3QtdC/0L7QtNGA0LbQsNC90YMg0YTRg9C90LrRhtC40ZjRgyDRgdCw0LzQvi3Qt9CwLdGH0LjRgtCw0ZrQtSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICLQo9CYINC60LDQvdCw0Lsg0L3QuNGY0LUg0YPRgdC/0LXQviDQtNCwINC/0YDQtdC80L7RgtCwINC/0YDQuCDRh9C40YLQsNGa0YMg0LjQu9C4INC/0LjRgdCw0ZrRgyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICLQlNC+0LTQtdC70LAg0LzQtdC80L7RgNC40ZjQtSDQvdC40ZjQtSDRg9GB0L/QtdC70LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAi0J3QtdC40YHQv9GA0LDQstCw0L0g0LDRgNCz0YPQvNC10L3RgiDRmNC1INC/0YDQvtGB0LvQtdGS0LXQvSDQsdC40LHQu9C40L7RgtC10YbQuCDQtdC60YHRgjIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQtNC+0LTQtdC70LjQvCDQsdC70L7QuiDRgyDQtdC60YHRgjIg0YHQuNGB0YLQtdC80YMg0LTQsNGC0L7RgtC10LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg0Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC00L7QtNC10LvQuNC8INC4LdGH0LLQvtGAINGDINC10LrRgdGCMiDRgdC40YHRgtC10LzRgyDQtNCw0YLQvtGC0LXQutCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAi0LXQutGB0YIyINC4LdGH0LLQvtGAINC90LjRmNC1INC00LjRgNC10LrRgtC+0YDQuNGY0YPQvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAi0J/RgNC10LLQuNGI0LUg0YPQv9GD0YLQsCDRgyDRgtCw0LHQtdC70LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICLigJ5leHQyX2xvb2t1cOKAnCDQvdC40ZjQtSDQvdCw0YjQsNC+INC00LDRgtC+0YLQtdC60YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgItCU0LDRgtC+0YLQtdC60LAg0ZjQtSDQvtGC0LLQvtGA0LXQvdCwINGB0LDQvNC+INC30LAg0YfQuNGC0LDRmtC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgItCd0LjRgdCw0Lwg0L3QsNGI0LDQviDQsdC70L7QuiDQtdC60YHRgjIg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICLQtdC60YHRgjIg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C8INCy0LXRmyDQv9C+0YHRgtC+0ZjQuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgItCk0YPQvdC60YbQuNGY0LAg0LXQutGB0YIyINCx0LjQsdC70LjQvtGC0LXQutC1INC90LjRmNC1INC/0YDQuNC80LXRmtC10L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICLQmtC+0YDQuNGB0L3QuNC6INGY0LUg0L7RgtC60LDQt9Cw0L4g0LfQsNGF0YLQtdCy0LDQvdC+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTMKK21zZ2lkICJFeHQyIGZpbGUgdG9vIGJpZyIKK21zZ3N0ciAi0LXQutGB0YIyINC00LDRgtC+0YLQtdC60LAg0ZjQtSDQv9GA0LXQstC10LvQuNC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAi0JTQvtGB0YLQsNCy0ZnQtdC90Lgg0YPRgNC10ZLQsNGYINC00L3QtdCy0L3QuNC60LAg0L3QuNGY0LUg0LHQu9C+0Log0YPRgNC10ZLQsNGYIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICLQndC40YHQsNC8INC90LDRiNCw0L4g0YHRg9C/0LXRgNCx0LvQvtC6INC00L3QtdCy0L3QuNC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAi0JTQvdC10LLQvdC40Log0LzQvtGA0LAg0LHQuNGC0Lgg0LHQsNGA0LXQvCDQvtC0IDEwMjQg0LHQu9C+0LrQvtCy0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAi0J3QtdC/0L7QtNGA0LbQsNC90L4g0LjQt9C00LDRmtC1INC00L3QtdCy0L3QuNC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGD0YfQuNGC0LDQstCw0ZrQsCDRgdC/0L7RmdC90L7QsyDQtNC90LXQstC90LjQutCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAi0J3QuNGB0LDQvCDQvdCw0YjQsNC+INC00L3QtdCy0L3QuNC6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgItCl0LXRiCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQvdC40ZjQtSDQv9C+0LTRgNC20LDQvSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAi0J3QtdC00L7Qt9Cy0L7RmdC10L3QuCDQsdGA0L7RmCDQsdC70L7QutCwINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDIKK21zZ2lkICJDYW5ub3QgY3JlYXRlIGZpbGVzeXN0ZW0gd2l0aCByZXF1ZXN0ZWQgbnVtYmVyIG9mIGlub2RlcyIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC90LDQv9GA0LDQstC40Lwg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0YHQsCDQt9Cw0YLRgNCw0LbQtdC90LjQvCDQsdGA0L7RmNC10Lwg0Lgt0YfQstC+0YDQvtCy0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDMKK21zZ2lkICJFMmltYWdlIHNuYXBzaG90IG5vdCBpbiB1c2UiCittc2dzdHIgIuKAnkUyaW1hZ2XigJwg0YHQvdC40LzQsNC6INC90LjRmNC1INGDINGD0L/QvtGC0YDQtdCx0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAi0J/RgNC10LLQuNGI0LUg0YDQtdC30LXRgNCy0LjRgdCw0L3QuNGFINCx0LvQvtC60L7QstCwINC+0L/QuNGB0L3QuNC60LAg0LPRgNGD0L/QtSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICLQn9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LAg0ZjQtSDQvtGI0YLQtdGb0LXQvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICIiCisi0J/QvtC60YPRiNCw0L4g0YHQsNC8INC00LAg0L/QvtGB0YLQsNCy0LjQvCDQsdC40YLQvNCw0L/RgyDQsdC70L7QutCwINGB0LAg0L3QtdC00L7RgdGC0LDRmNGD0ZvQuNC8INC40L3QtNC40YDQtdC60YLQvdC40Lwg0LHQu9C+0LrQvtC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6INCj0YHQv9C10LvQviDRmNC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICJUREI6INCR0LDQt9CwINC/0L7QtNCw0YLQsNC60LAg0ZjQtSDQvtGI0YLQtdGb0LXQvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA5Cittc2dpZCAiVERCOiBJTyBFcnJvciIKK21zZ3N0ciAiVERCOiDQo9CYINCz0YDQtdGI0LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMAorbXNnaWQgIlREQjogTG9ja2luZyBlcnJvciIKK21zZ3N0ciAiVERCOiDQk9GA0LXRiNC60LAg0LfQsNC60ZnRg9GH0LDQstCw0ZrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERCOiDQndC10LzQsCDQstC40YjQtSDQvNC10LzQvtGA0LjRmNC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJUREI6INCX0LDQv9C40YEg0ZjQtSDQuNC30LDRiNCw0L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQjog0JrQsNGC0LDQvdCw0YYg0L/QvtGB0YLQvtGY0Lgg0L3QsCDQtNGA0YPQs9C40Lwg0LrRmdGD0YfQtdCy0LjQvNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVERCOiDQndC10LjRgdC/0YDQsNCy0LDQvSDQv9Cw0YDQsNC80LXRgtCw0YAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiVERCOiDQl9Cw0L/QuNGBINC90LUg0L/QvtGB0YLQvtGY0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQjog0J/QuNGB0LDRmtC1INC90LjRmNC1INC00L7Qt9Cy0L7RmdC10L3QviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAi0KHQv9C40YHQsNC6INCx0LvQvtC60LAg0LTQuNGA0LXQutGC0L7RgNC40ZjRg9C80LAg4oCeZXh0MmZz4oCcLdCwINGY0LUg0L/RgNCw0LfQsNC9IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE4Cittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgYSBibG9jayBtYXBwaW5nIHZpYSBhIHJlYWQtb25seSBibG9jayBpdGVyYXRvciIKK21zZ3N0ciAiIgorItCf0L7QutGD0YjQsNCy0LDQvCDQtNCwINC40LfQvNC10L3QuNC8INC80LDQv9C40YDQsNGa0LUg0LHQu9C+0LrQsCDQv9GD0YLQtdC8INC/0YDQuNGB0YLRg9C/0L3QuNC60LAg0LHQu9C+0LrQsCDRgdCw0LzQviDQt9CwINGH0LjRgtCw0ZrQtSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDQt9CwINGB0LDRh9GD0LLQsNC90YMg0L/Rg9GC0LDRmtGDINC10LrRgdGCNCDRgNCw0YHQv9C+0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGdlbmVyaWMgYml0bWFwIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAgNjQt0LHQuNGC0L3RgyDQvtC/0YjRgtGDINCx0LjRgtC80LDQv9GDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAgNjQt0LHQuNGC0L3RgyDQsdC40YLQvNCw0L/RgyDQsdC70L7QutCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYINC30LAgNjQt0LHQuNGC0L3RgyDQsdC40YLQvNCw0L/RgyDQuC3Rh9Cy0L7RgNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDigJTigJQg0KDQldCX0JXQoNCS0JjQodCQ0J3Qnl8xMyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg4oCU4oCUINCg0JXQl9CV0KDQktCY0KHQkNCd0J5fMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYIOKAlOKAlCDQoNCV0JfQldCg0JLQmNCh0JDQndCeXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDigJTigJQg0KDQldCX0JXQoNCS0JjQodCQ0J3Qnl8xNiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg4oCU4oCUINCg0JXQl9CV0KDQktCY0KHQkNCd0J5fMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICLQn9C+0LPRgNC10YjQsNC9INC80LDQs9C40YfQvdC4INCx0YDQvtGYIOKAlOKAlCDQoNCV0JfQldCg0JLQmNCh0JDQndCeXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAi0J/QvtCz0YDQtdGI0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCDigJTigJQg0KDQldCX0JXQoNCS0JjQodCQ0J3Qnl8xOSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAi0JfQsNCz0LvQsNCy0ZnQtSDRgNCw0YHQv9C+0L3QsCDRmNC1INC+0YjRgtC10ZvQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzEKK21zZ2lkICJDb3JydXB0IGV4dGVudCBpbmRleCIKK21zZ3N0ciAi0JjQvdC00LXQutGBINGA0LDRgdC/0L7QvdCwINGY0LUg0L7RiNGC0LXRm9C10L0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAi0KDQsNGB0L/QvtC9INGY0LUg0L7RiNGC0LXRm9C10L0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgItCd0LXQvNCwINGB0LvQvtCx0L7QtNC90L7QsyDQv9GA0L7RgdGC0L7RgNCwINGDINC80LDQv9C4INGA0LDRgdC/0L7QvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM0Cittc2dpZCAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCittc2dzdHIgItC4LdGH0LLQvtGAINC90LUg0LrQvtGA0LjRgdGC0Lgg0YDQsNGB0L/QvtC90LUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICLQndC10LzQsCDigJ5uZXh04oCcICjRgdC70LXQtNC10ZvQtdCzKSDRgNCw0YHQv9C+0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICLQndC10LzQsCDigJ5wcmV2aW91c+KAnCAo0L/RgNC10YLRhdC+0LTQvdC+0LMpINGA0LDRgdC/0L7QvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgItCd0LXQvNCwIOKAnnVw4oCcICjQs9C+0YDRmtC10LMpINGA0LDRgdC/0L7QvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM4Cittc2dpZCAiTm8gJ2Rvd24nIGV4dGVudCIKK21zZ3N0ciAi0J3QtdC80LAg4oCeZG93buKAnCAo0LTQvtGa0LXQsykg0YDQsNGB0L/QvtC90LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgItCd0LXQvNCwINGC0LXQutGD0ZvQtdCzINGH0LLQvtGA0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgItCe0L/QtdGA0LDRhtC40ZjQsCDigJ5leHQyZnPigJwg0L3QuNGY0LUg0L/QvtC00YDQttCw0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICLQndC10LzQsCDQvNC10YHRgtCwINC30LAg0YPQvNC10YLQsNGa0LUg0YDQsNGB0L/QvtC90LAg0YMg0Lgt0YfQstC+0YAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgItCU0LXRmdC10ZrQtSDRm9C1INGA0LXQt9GD0LvRgtC40YDQsNGC0Lgg0L/RgNCw0LfQvdC40Lwg0YfQstC+0YDQvtC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAi0J3QuNGB0LDQvCDQvdCw0YjQsNC+INGA0LDRgdC/0L7QvSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NAorbXNnaWQgIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGZvciBpbm9kZXMgY29udGFpbmluZyBleHRlbnRzIgorbXNnc3RyICLQoNCw0LTRmtCwINC90LjRmNC1INC/0L7QtNGA0LbQsNC90LAg0LfQsCDQuC3Rh9Cy0L7RgNC+0LLQtSDQutC+0ZjQuCDRgdCw0LTRgNC20LUg0YDQsNGB0L/QvtC90LUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDUKK21zZ2lkICJFeHRlbnQgbGVuZ3RoIGlzIGludmFsaWQiCittc2dzdHIgItCU0YPQttC40L3QsCDRgNCw0YHQv9C+0L3QsCDQvdC40ZjQtSDQuNGB0L/RgNCw0LLQvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAi0KPQmCDQutCw0L3QsNC7INC90LUg0L/QvtC00YDQttCw0LLQsCA2NC3QsdC40YLQvdC1INCx0YDQvtGY0LXQstC1INCx0LvQvtC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtCy0LXRgNC40Lwg0LTQsCDQu9C4INGY0LUg0YHQuNGB0YLQtdC8INC00LDRgtC+0YLQtdC60LAg0L/RgNC40LrQsNGH0LXQvSDQt9Cw0YLQviDRiNGC0L4g0L3QtdC00L7RgdGC0LDRmNC1ICIKKyLQvNGC0LDQsSDQtNCw0YLQvtGC0LXQutCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICLQodC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRmNC1INC/0YDQtdCy0LXQu9C40Log0LfQsCDQutC+0YDQuNGI0ZvQtdGa0LUg0YHRgtCw0YDQuNGFINCx0LjRgtC80LDQv9CwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAi0JzQnNCfOiDQvdC10LjRgdC/0YDQsNCy0LDQvSDQvNCw0LPQuNGH0L3QuCDQsdGA0L7RmCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgItCc0JzQnzog0YPRgNC10ZLQsNGYINGY0LUg0YLRgNC10L3Rg9GC0L3QviDQsNC60YLQuNCy0LDQvSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgItCc0JzQnzog4oCeZnNja+KAnCDRmNC1INC/0L7QutGA0LXQvdGD0YIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTIKK21zZ2lkICJNTVA6IGJsb2NrIG51bWJlciBiZXlvbmQgZmlsZXN5c3RlbSByYW5nZSIKK21zZ3N0ciAi0JzQnNCfOiDQsdGA0L7RmCDQsdC70L7QutC+0LLQsCDRmNC1INCy0LDQvSDQvtC/0YHQtdCz0LAg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MworbXNnaWQgIk1NUDogdW5kZXJnb2luZyBhbiB1bmtub3duIG9wZXJhdGlvbiIKK21zZ3N0ciAi0JzQnNCfOiDRgyDRgtC+0LrRgyDRmNC1INC90LXQv9C+0LfQvdCw0YLQsCDRgNCw0LTRmtCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU0Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAi0JzQnNCfOiDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsCDRmNC1INGY0L7RiCDRg9Cy0LXQuiDRgyDRgtC+0LrRgyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAi0JzQnNCfOiDQvtGC0LLQsNGA0LDRmtC1INGB0LAg4oCeT19ESVJFQ1TigJwg0L3QuNGY0LUg0YPRgdC/0LXQu9C+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAi0JLQtdC70LjRh9C40L3QsCDQvtC/0LjRgdC90LjQutCwINCz0YDRg9C/0LUg0LHQu9C+0LrQvtCy0LAg0L3QuNGY0LUg0LjRgdC/0YDQsNCy0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQuC3Rh9Cy0L7RgNCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDQuC3Rh9Cy0L7RgNGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU4Cittc2dpZCAiSW5vZGUgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0LHQuNGC0LzQsNC/0LUg0Lgt0YfQstC+0YDQsCDQvdC1INC+0LTQs9C+0LLQsNGA0LAg0LHQuNGC0LzQsNC/0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTkKK21zZ2lkICJFeHRlbnQgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50IGJsb2NrIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC70L7QutCwINGA0LDRgdC/0L7QvdCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDQsdC70L7QutGDINGA0LDRgdC/0L7QvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYwCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGRvZXMgbm90IGhhdmUgc3BhY2UgZm9yIGNoZWNrc3VtIgorbXNnc3RyICLQkdC70L7QuiDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQsCDQvdC10LzQsCDQv9GA0L7RgdGC0L7RgNCwINC30LAg0YHRg9C80YMg0L/RgNC+0LLQtdGA0LUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC70L7QutCwINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDQsdC70L7QutGDINC00LjRgNC10LrRgtC+0YDQuNGY0YPQvNCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC70L7QutCwINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINCx0LvQvtC60YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgItCh0YPQvNCwINC/0YDQvtCy0LXRgNC1INGB0YPQv9C10YDQsdC70L7QutCwINC90LUg0L7QtNCz0L7QstCw0YDQsCDRgdGD0L/QtdGA0LHQu9C+0LrRgyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NAorbXNnaWQgIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorbXNnc3RyICLQkNC70LPQvtGA0LjRgtCw0Lwg0YHRg9C80LUg0L/RgNC+0LLQtdGA0LUg0L3QuNGY0LUg0L/QvtC30L3QsNGCIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0JzQnNCfINCx0LvQvtC60LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINCc0JzQnyDQsdC70L7QutGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICLQtdC60YHRgjIg0LTQsNGC0L7RgtC10LrQsCDQstC10Zsg0L/QvtGB0YLQvtGY0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjcKKyMsIGZ1enp5Cittc2dpZCAiQmxvY2sgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAi0KHRg9C80LAg0L/RgNC+0LLQtdGA0LUg0LHQuNGC0LzQsNC/0LUg0Lgt0YfQstC+0YDQsCDQvdC1INC+0LTQs9C+0LLQsNGA0LAg0LHQuNGC0LzQsNC/0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgbmFtZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MAorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MQorIywgZnV6enkKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGluY29ycmVjdCBoYXNoIgorbXNnc3RyICLQodGD0LzQsCDQv9GA0L7QstC10YDQtSDQsdC70L7QutCwINC/0YDQvtGI0LjRgNC10L3QvtCzINCw0YLRgNC40LHRg9GC0LAg0L3QtSDQvtC00LPQvtCy0LDRgNCwINCx0LvQvtC60YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgItCd0LXQtNC+0LfQstC+0ZnQtdC90Lgg0LHRgNC+0Zgg0LHQu9C+0LrQsCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTczCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIgorbXNnc3RyICLQv9GA0L7RiNC40YDQtdC90Lgg0LDRgtGA0LjQsdGD0YIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICLQuC3Rh9Cy0L7RgCDQvdC1INC60L7RgNC40YHRgtC4INGA0LDRgdC/0L7QvdC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc3Cittc2dpZCAiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorIywgZnV6enkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICLQndC10LzQsCDRgdC70L7QsdC+0LTQvdC+0LMg0L/RgNC+0YHRgtC+0YDQsCDRgyDQvNCw0L/QuCDRgNCw0YHQv9C+0L3QsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7Qs9GA0LXRiNCw0L0g0LzQsNCz0LjRh9C90Lgg0LHRgNC+0Zgg0LfQsCDRgdGC0YDRg9C60YLRg9GA0YMg4oCe0LXQutGB0YIyINC00LDRgtC+0YLQtdC60LXigJwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODMKKyMsIGZ1enp5Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgItCf0YDQvtC80LXQvdCwINCy0LXQu9C40YfQuNC90LUg0Lgt0YfQstC+0YDQsCDRmNC1INC+0YjRgtC10ZvQtdC90LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgItCd0LjRmNC1INC00L7Qt9Cy0L7RmdC10L3QsCDQv9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODUKKyMsIGZ1enp5Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICLQn9GA0L7QvNC10L3QsCDQstC10LvQuNGH0LjQvdC1INC4LdGH0LLQvtGA0LAg0ZjQtSDQvtGI0YLQtdGb0LXQvdCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg2Cittc2dpZCAiQmFkIENSQyBkZXRlY3RlZCBpbiBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg3CisjLCBmdXp6eQorbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAi0LXQutGB0YIyINGB0YPQv9C10YDQsdC70L7QuiDRmNC1INC+0YjRgtC10ZvQtdC9IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAi0J/RgNC+0LzQtdC90LAg0LLQtdC70LjRh9C40L3QtSDQuC3Rh9Cy0L7RgNCwINGY0LUg0L7RiNGC0LXRm9C10L3QsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgItCY0LfQtNCw0ZrQtSDQv9GA0L7RhNC40LvQsCAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICLQm9C+0YjQsCDQvNCw0LPQuNGH0L3QsCDQstGA0LXQtNC90L7RgdGCINGDINGH0LLQvtGA0YMg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICLQndC40YHQsNC8INC90LDRiNCw0L4g0L7QtNC10ZnQsNC6INC/0YDQvtGE0LjQu9CwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgItCd0LjRgdCw0Lwg0L3QsNGI0LDQviDRgNC10LvQsNGG0LjRmNGDINC/0YDQvtGE0LjQu9CwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE1Cittc2dpZCAiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCittc2dzdHIgItCf0L7QutGD0YjQsNC+INGB0LDQvCDQtNCwINC00L7QtNCw0Lwg0YDQtdC70LDRhtC40ZjRgyDRh9Cy0L7RgNGDINC60L7RmNC4INC90LjRmNC1INC+0LTQtdGZ0LDQuiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAi0JfQsNCz0LvQsNCy0ZnQtSDQvtC00LXRmdC60LAg0L/RgNC+0YTQuNC70LAg0LjQvNCwINC90LUt0L3Rg9C70YLRgyDQstGA0LXQtNC90L7RgdGCIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE3Cittc2dpZCAiQmFkIGxpbmtlZCBsaXN0IGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAi0JvQvtGIINGB0LLQtdC30LDQvdC4INGB0L/QuNGB0LDQuiDRgyDRgdGC0YDRg9C60YLRg9GA0Lgg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTgKK21zZ2lkICJCYWQgZ3JvdXAgbGV2ZWwgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICLQm9C+0Ygg0L3QuNCy0L4g0LPRgNGD0L/QtSDRgyDRgdGC0YDRg9C60YLRg9GA0Lgg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICLQm9C+0Ygg0L/QvtC60LDQt9C40LLQsNGHINC/0L7Qu9Cw0LfQuNGI0YLQsCDRgyDRgdGC0YDRg9C60YLRg9GA0Lgg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZSBpdGVyYXRvciIKK21zZ3N0ciAi0JvQvtGI0LAg0LzQsNCz0LjRh9C90LAg0LLRgNC10LTQvdC+0YHRgiDRgyDQv9GA0LjRgdGC0YPQv9C90LjQutGDINC/0YDQvtGE0LjQu9CwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0L7RgdGC0LDQstC40Lwg0LLRgNC10LTQvdC+0YHRgiDQvdCwINGH0LLQvtGA0YMg0L7QtNC10ZnQutCwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQsNGA0LPRg9C80LXQvdGCINGY0LUg0L/RgNC+0YHQu9C10ZLQtdC9INCx0LjQsdC70LjQvtGC0LXRhtC4INC/0YDQvtGE0LjQu9CwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIzCittc2dpZCAiQXR0ZW1wdCB0byBtb2RpZnkgcmVhZC1vbmx5IHByb2ZpbGUiCittc2dzdHIgItCf0L7QutGD0YjQsNCy0LDQvCDQtNCwINC40LfQvNC10L3QuNC8INC/0YDQvtGE0LjQuyDRgdCw0LzQviDQt9CwINGH0LjRgtCw0ZrQtSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAi0JfQsNCz0LvQsNCy0ZnQtSDQvtC00LXRmdC60LAg0L/RgNC+0YTQuNC70LAg0L3QuNGY0LUg0L3QsCDQvdCw0ZjQstC40YjQtdC8INC90LjQstC+0YMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjUKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSBzZWN0aW9uIGhlYWRlciIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGB0LjQvdGC0LDQutGB0LUg0YMg0LfQsNCz0LvQsNCy0ZnRgyDQvtC00LXRmdC60LAg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAi0JPRgNC10YjQutCwINGB0LjQvdGC0LDQutGB0LUg0YMg0YDQtdC70LDRhtC40ZjQuCDQv9GA0L7RhNC40LvQsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNworbXNnaWQgIkV4dHJhIGNsb3NpbmcgYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAi0JLQuNGI0LDQuiDQt9Cw0YLQstC+0YDQtdC90LUg0LfQsNCz0YDQsNC00LUg0YMg0L/RgNC+0YTQuNC70YMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAi0J3QtdC00L7RgdGC0LDRmNC1INC+0YLQstC+0YDQtdC90LAg0LfQsNCz0YDQsNC00LAg0YMg0L/RgNC+0YTQuNC70YMiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICLQm9C+0YjQsCDQvNCw0LPQuNGH0L3QsCDQstGA0LXQtNC90L7RgdGCINGDINGC0LDQsdC10LvQuCDQv9GA0L7RhNC40LvQsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3NlY3Rpb25fdCIKK21zZ3N0ciAi0JvQvtGI0LAg0LzQsNCz0LjRh9C90LAg0LLRgNC10LTQvdC+0YHRgiDRgyDRgtCw0LHQtdC70Lgg0L7QtNC10ZnQutCwINC/0YDQvtGE0LjQu9CwIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgItCf0L7QvdCw0LLRmdCw0ZrQtSDQutGA0L7QtyDRgdCy0LUg0L7QtNC10ZnQutC1INC90LDRmNCy0LjRiNC10LMg0L3QuNCy0L7QsCDQvdC40ZjQtSDQv9C+0LTRgNC20LDQvdC+IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0LDQvSDQvtCx0ZjQtdC60LDRgiDQvtC00LXRmdC60LAg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICLQndC10LzQsCDQstC40YjQtSDQvtC00LXRmdCw0LrQsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICLQm9C+0Ygg0YHQutGD0L8g0L3QsNC30LjQstCwINGY0LUg0L/RgNC+0YHQu9C10ZLQtdC9INC/0L7RgdGC0YPQv9C60YMg0YPQv9C40YLQsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNQorbXNnaWQgIk5vIHByb2ZpbGUgZmlsZSBvcGVuIgorbXNnc3RyICLQndC40ZjQtSDQvtGC0LLQvtGA0LXQvdCwINC90LjRmNC10LTQvdCwINC00LDRgtC+0YLQtdC60LAg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgItCb0L7RiNCwINC80LDQs9C40YfQvdCwINCy0YDQtdC00L3QvtGB0YIg0YMg0YLQsNCx0LXQu9C4INC00LDRgtC+0YLQtdC60LUg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC+0YLQstC+0YDQuNC8INC00LDRgtC+0YLQtdC60YMg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICLQktC10Zsg0L/QvtGB0YLQvtGY0Lgg0L7QtNC10ZnQsNC6IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM5Cittc2dpZCAiSW52YWxpZCBib29sZWFuIHZhbHVlIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDQu9C+0LPQuNGH0LrQsCDQstGA0LXQtNC90L7RgdGCIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICLQndC10LjRgdC/0YDQsNCy0L3QsCDQstGA0LXQtNC90L7RgdGCINGG0LXQu9C+0LMg0LHRgNC+0ZjQsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICLQm9C+0YjQsCDQvNCw0LPQuNGH0L3QsCDQstGA0LXQtNC90L7RgdGCINGDINGC0LDQsdC10LvQuCDQv9C+0LTQsNGC0LDQutCwINC00LDRgtC+0YLQtdC60LUg0L/RgNC+0YTQuNC70LAiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHTQv9C+0YHQu9C10LTRmtC4INC/0YPRgiDRmNC1INC/0YDQuNC60LDRh9C10L0g0YMgJXMg0YMgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHTQv9C+0YHQu9C10LTRmtC4INC/0YPRgiDRmNC1INC/0YDQuNC60LDRh9C10L0g0YMgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx00L3QsNC/0YDQsNCy0ZnQtdC9INGY0LUg0YMgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx00L/QvtGB0LvQtdC00ZrQuCDQv9GD0YIg0ZjQtSDQuNC30LzQtdGa0LXQvSDRgyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgItCd0LDRiNCw0L4g0YHQsNC8INC/0LDRgNGC0LjRhtC40L7QvdGDINGC0LDQsdC10LvRgyDigJ4lc+KAnCDRgyDigJ4lc+KAnFxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAi0J3QtSDQv9C+0YHRgtC+0ZjQuCDQtNCw0YLQvtGC0LXQutCwIOKAniVz4oCcINC4INC90LjQutCw0LrQstCwINCy0LXQu9C40YfQuNC90LAg0L3QuNGY0LUg0L3QsNCy0LXQtNC10L3QsC5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICLQodGC0LLQsNGA0LDQvCDQvtCx0LjRh9C90YMg0LTQsNGC0L7RgtC10LrRgyDigJ4lc+KAnFxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQvtGC0LLQvtGA0LjQvCDigJ4lc+KAnDogJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTk0Cittc2dpZCAiIgorIlxuIgorIlRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgZGlkIHlvdSBzcGVjaWZ5IGl0IGNvcnJlY3RseT9cbiIKK21zZ3N0ciAiIgorIlxuIgorItCj0YDQtdGS0LDRmCDQutCw0L4g0LTQsCDQvdC1INC/0L7RgdGC0L7RmNC4OyDQtNCwINC70Lgg0YHRgtC1INCz0LAg0LjRgdC/0YDQsNCy0L3QviDQvdCw0LLQtdC70Lg/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAi4oCeJXPigJwg0L3QuNGY0LUg0YHQv9C10YbQuNGY0LDQu9C90Lgg0YPRgNC10ZLQsNGYINCx0LvQvtC60LAuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAi4oCeJXPigJwg0YHQsNC00YDQttC4IOKAniVz4oCcINGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwINGB0LAg0L3QsNGC0L/QuNGB0L7QvMKg4oCeJXPigJxcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAi4oCeJXPigJwg0YHQsNC00YDQttC4IOKAniVz4oCcINGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI2NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYCVzJyBkYXRhXG4iCittc2dzdHIgIuKAniVz4oCcINGB0LDQtNGA0LbQuCDigJ4lc+KAnCDRgdC40YHRgtC10Lwg0LTQsNGC0L7RgtC10LrQsFxuIgorCisjfiBtc2dpZCAiQGkgJWkgaGFzIEBjaW9uIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgQGNpb24gc3VwcG9ydC4gICIKKyN+IG1zZ3N0ciAiIgorI34gItC4LdGH0LLQvtGAIOKAniVp4oCcINC40LzQsCDQv9C+0YHRgtCw0LLRmdC10L3RgyDQt9Cw0YHRgtCw0LLQuNGG0YMg0YHQsNC20LjQvNCw0ZrQsCDQvdCwINGB0LjRgdGC0LXQvNGDINC00LDRgtC+0YLQtdC60LAg0LHQtdC3ICIKKyN+ICLQv9C+0LTRgNGI0LrQtSDRgdCw0LbQuNC80LDRmtCwLiAgIgorCisjfiBtc2dpZCAiQEEgQGEgQGIgJWIuICAiCisjfiBtc2dzdHIgItCz0YDQtdGI0LrQsCDQtNC+0LTQtdC70LUg0LHQu9C+0LrQsCDigJ4lYuKAnCDQv9GA0L7RiNC40YDQtdC90L7QsyDQsNGC0YDQuNCx0YPRgtCwLiAgIgorCisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICIlczog0YPQv9C+0LfQvtGA0LXRmtC1OiDQv9C+0LTRgNGI0LrQsCDRgdCw0LbQuNC80LDRmtCwINGY0LUg0LXQutGB0L/QtdGA0LjQvNC10L3RgtCw0LvQvdCwLlxuIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBlMmZzY2sgbm90IGNvbXBpbGVkIHdpdGggSFRSRUUgc3VwcG9ydCxcbiIKKyN+ICJcdGJ1dCBmaWxlc3lzdGVtICVzIGhhcyBIVFJFRSBkaXJlY3Rvcmllcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiDigJ5lMmZzY2vigJwg0L3QuNGY0LUg0L/RgNC10LLQtdC00LXQvSDRgdCwINC/0L7QtNGA0YjQutC+0Lwg0KUt0KHQotCQ0JHQm9CQLFxuIgorI34gIlx00LDQu9C4INGB0LjRgdGC0LXQvCDQtNCw0YLQvtGC0LXQutCwIOKAniVz4oCcINC40LzQsCDQtNC40YDQtdC60YLQvtGA0LjRmNGD0LzQtSDQpS3QodCi0JDQkdCb0JAuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHplcm9pemluZyBidWZmZXIiCisjfiBtc2dzdHIgItC30LAg0LLRgNC10LzQtSDQtNC+0LTQtdC70LUg0LzQtdGS0YPQvNC10LzQvtGA0LjRmNC1INC/0L7QvdC40YjRgtCw0LLQsNGa0LAiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCDQvdC10LrQvtGA0LjRiNGb0LXQvdC4INC4LdGH0LLQvtGA0L7QstC4ICV1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVhZCB0aGUgZmlsZSBzeXN0ZW0gZGF0YSBcbiIKKyN+IG1zZ3N0ciAi0J3QuNGB0LDQvCDRg9GB0L/QtdC+INC00LAg0L/RgNC+0YfQuNGC0LDQvCDQv9C+0LTQsNGC0LDQutC1INGB0LjRgdGC0LXQvNCwINC00LDRgtC+0YLQtdC60LAgXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX2ZldGNoICVzXG4iCisjfiBtc2dzdHIgItCd0LjRmNC1INGD0YHQv9C10LvQviDigJ50ZGJfZmV0Y2jigJwgJXNcbiIKKworI34gbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBVVUlEIGRpZG4ndCBtYXRjaCBcbiIKKyN+IG1zZ3N0ciAi0KPQo9CY0JQg0YHQuNGB0YLQtdC80LAg0LTQsNGC0L7RgtC10LrQsCDRgdC1INGA0LDQt9C70LjQutGD0ZjQtSBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfb3BlbiAlc1xuIgorI34gbXNnc3RyICLQndC40ZjQtSDRg9GB0L/QtdC70L4g4oCedGRiX29wZW7igJwgJXNcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0byBvcGVuICVzXG4iCisjfiBtc2dzdHIgItCd0LjRgdCw0Lwg0YPRgdC/0LXQviDQtNCwINC+0YLQstC+0YDQuNC8IOKAniVz4oCcXG4iCisKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgItCf0L7QvdC+0LLQviDQvtC00YDQsNGS0LXQvSDQv9GA0LXQvdC+0YEg0LLQtdC70LjRh9C40L3QtSAlemQg0L3QsCDQvNC10YHRgtGDICVsbHVcbiIKKworI34gbXNnaWQgIkZhaWxlZCB3cml0ZSAlc1xuIgorI34gbXNnc3RyICLQndC40ZjQtSDRg9GB0L/QtdC70L4g0L/QuNGB0LDRmtC1IOKAniVz4oCcXG4iCisKKyN+IG1zZ2lkICJJbnZhbGlkIHF1b3RhdHlwZSBwYXJhbWV0ZXI6ICVzXG4iCisjfiBtc2dzdHIgItCd0LXQuNGB0L/RgNCw0LLQsNC9INC/0LDRgNCw0LzQtdGC0LDRgCDQstGA0YHRgtC1INC60LLQvtGC0LU6ICVzXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIKKyN+IG1zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC00L7QtNC10LvQuNC8INC80LXQvNC+0YDQuNGY0YMg0LfQsCDQvtCx0YDQsNC00YMg0L7Qv9GG0LjRmNCwINC60LLQvtGC0LUhXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRkYiBmaWxlbmFtZVxuIgorI34gbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0LTQvtC00LXQu9C40Lwg0LzQtdC80L7RgNC40ZjRgyDQt9CwINC90L7QstGDINGC0LTQsSDQvdCw0LfQuNCyINC00LDRgtC+0YLQtdC60LVcbiIKKworI34gbXNnaWQgIiIKKyN+ICJUbyB1bmRvIHRoZSB0dW5lMmZzIG9wZXJhdGlvbiBwbGVhc2UgcnVuIHRoZSBjb21tYW5kXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAi0JTQsCDQv9C+0L3QuNGI0YLQuNGC0LUg0YDQsNC00ZrQtSDigJ50dW5lMmZz4oCcLdCwLCDQv9C+0LrRgNC10L3QuNGC0LUg0L3QsNGA0LXQtNCx0YNcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICIlcyBpcyBlbnRpcmUgZGV2aWNlLCBub3QganVzdCBvbmUgcGFydGl0aW9uIVxuIgorI34gbXNnc3RyICLigJ4lc+KAnCDRmNC1INGH0LjRgtCw0LIg0YPRgNC10ZLQsNGYLCDQsCDQvdC1INGB0LDQvNC+INGY0LXQtNC90LAg0L/QsNGA0YLQuNGG0LjRmNCwIVxuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3N2LmdtbyBiL2UyZnNwcm9ncy9wby9zdi5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk5MjZjOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby9zdi5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3N2LnBvIGIvZTJmc3Byb2dzL3BvL3N2LnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZDZiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vc3YucG8KQEAgLTAsMCArMSw4NDA1IEBACisjIFN3ZWRpc2ggbWVzc2FnZXMgZm9yIGUyZnNwcm9ncy4KKyMgQ29weXJpZ2h0IMKpIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTQsIDIwMTYgVGhlb2RvcmUgVHNvIChtc2dpZHMpCisjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBlMmZzcHJvZ3MgcGFja2FnZS4KKyMKKyMgR8O2cmFuIFVkZGVib3JnIDxnb2VyYW5AdWRkZWJvcmcuc2U+LCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDE0LCAyMDE2LgorIworIyAkUmV2aXNpb246IDEuODcgJAorIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4gCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyCisjLiAJJUIJImluZGlyZWN0IGJsb2NrIiB8ICJibG9jayAjIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXIKKyMuIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuIAklRGkJPGRpcmVudD4gLT4gaW5vCQlpbm9kZSBudW1iZXIKKyMuIAklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmcKKyMuIAklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4gCSVEbAk8ZGlyZW50PiAtPiBuYW1lX2xlbgorIy4gCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZQorIy4gCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4gCSVnCTxncm91cD4JCQlpbnRlZ2VyCisjLiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyMuIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisjLiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyMuIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisjLiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorIy4gCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisjLiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisjLiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuIAklSWcJPGlub2RlPiAtPiBpX2dpZAorIy4gCSVJdAk8c3RyPgkJCWZpbGUgdHlwZQorIy4gCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4gCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisjLiAJJU4JPG51bT4KKyMuIAklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuIAklUAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMCisjLiAJCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLiAJJXEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisjLiAJJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLiAJJXMJPHN0cj4JCQltaXNjZWxsYW5lb3VzIHN0cmluZworIy4gCSVTCQliYWNrdXAgc3VwZXJibG9jaworIy4gCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGUyZnNwcm9ncyAxLjQzLjFcbiIKKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogdHl0c29AYWx1bS5taXQuZWR1XG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDktMDQgMjE6MjctMDQwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTYtMDctMTQgMTM6MDQrMDIwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogR8O2cmFuIFVkZGVib3JnIDxnb2VyYW5AdWRkZWJvcmcuc2U+XG4iCisiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgorIkxhbmd1YWdlOiBzdlxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAiRMOlbGlndCBibG9jayAldSB1dGFuZsO2ciBnaWx0aWd0IGludGVydmFsbDsgaWdub3JlcmFzLlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInZpZCByaW1saWdoZXRza29udHJvbGwgYXYgaW5vZGVuIGbDtnIgZMOlbGlnYSBibG9jayIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAidmlkIGzDpHNuaW5nIGF2IGlub2RlbiBmw7ZyIGTDpWxpZ2EgYmxvY2siCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IMO2cHBuYSAlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGFudsOkbmRhIHBvcGVuIOKAnSVz4oCdIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgInZpZCBsw6RzbmluZyBpIGxpc3RhbiDDtnZlciBkw6VsaWdhIGJsb2NrIGZyw6VuIGZpbCIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAidmlkIHVwcGRhdGVyaW5nIGF2IGlub2RlbiBmw7ZyIGTDpWxpZ2EgYmxvY2siCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICJWYXJuaW5nOiBvdGlsbMOldGV0IGJsb2NrICV1IGhpdHRhdCBpIGlub2RlbiBmw6VyIGTDpWxpZ2EgYmxvY2suICBUw7ZtdC5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiRmVsIHZpZCBsw6RzbmluZyBhdiBibG9jayAlbHUgKCVzKSB2aWQgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgYXYgYmxvY2sgJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSWdub3JlcmEgZmVsIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgIkZyYW10dmluZ2Egb21za3Jpdm5pbmciCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICJGZWwgdmlkIHNrcml2bmluZyBhdiBibG9jayAlbHUgKCVzKSB2aWQgJXMuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJGZWwgdmlkIHNrcml2bmluZyBhdiBibG9jayAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgInRvbW1hIGthdGFsb2dibG9jayIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NjIKK21zZ2lkICJlbXB0eSBkaXIgbWFwIgorbXNnc3RyICJ0b20ga2F0YWxvZ2thcnRhIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiVG9tdCBrYXRhbG9nYmxvY2sgJXUgKG5yLiAlZCkgaSBpbm9kICV1XG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzoyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgZmlsZW5hbWUgbmJsb2NrcyBibG9ja3NpemVcbiIKK21zZ3N0ciAiJXM6ICVzIGZpbG5hbW4gbmJsb2NrIGJsb2Nrc3Rvcmxla1xuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIgorbXNnc3RyICJPdGlsbMOldGV0IGFudGFsIGJsb2NrIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJLdW5kZSBpbnRlIGFsbG9rZXJhIGJsb2NrYnVmZmVydCAoc3Rvcmxlaz0lZClcbiIKKworIzogZTJmc2NrL2V4dGVudHMuYzo0MgorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAiaW5vZHNrYXJ0YSDDtnZlciB1dHN0csOkY2tuaW5nc29tYnlnZ25hZCIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIkFudsOkbmRuaW5nOiAlcyBkaXNrXG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIkJMS0ZMU0JVRi1pb2N0bCBzdMO2ZHMgaW50ZSEgIEthbiBpbnRlIHTDtm1tYSBidWZmZXJ0YXIuXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICVzIFstRl0gWy1JIGlub2RidWZmZXJ0YmxvY2tdIGVuaGV0XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAidmlkIMO2cHBuaW5nIGF2ICVzIGbDtnIgdXRza3Jpdm5pbmciCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgInZpZCBmw7Zyc8O2ayBhdHQgc2tyaXZhIHV0ICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCDDtnBwbmEg4oCdJXPigJ0iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAidmlkIMO2cHBuaW5nIGF2IGlub2Rzw7ZrbmluZyIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgIm7DpHIgbsOkc3RhIGlub2QgaMOkbXRhZGVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHNjYW5uZWQuXG4iCittc2dzdHIgIiV1IGlub2RlciBnZW5vbXPDtmt0YS5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJsw6RzZXIgam91cm5hbHN1cGVyYmxvY2tcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlczogaW5nZXQgZ2lsdGlndCBqb3VybmFsc3VwZXJibG9jayBoaXR0YWRlc1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiJXM6IGpvdXJuYWxlbiBmw7ZyIGtvcnRcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiDDpXRlcmjDpG10YXIgam91cm5hbGVuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogw6V0ZXJow6RtdGFyIGludGUgam91cm5hbGVuIGkgc2tyaXZza3lkZGF0IGzDpGdlXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IMOldGVyw7ZwcG5hICVzIgorCisjIEbDtnJzdGEgYm9rc3RhdmVuIGkgZGV0dGEgb2NoIGbDtmxqYW5kZSBtZWRkZWxhbmRlbiDDpHIgZXR0IGluZGV4IHNvbQorIyBhbnbDpG5kcyBzb20gZW4gZsO2cmtvcnRuaW5nIGkgYW5kcmEgbWVkZGVsYW5kZW4sIG9jaCBpbnRlIHNrcml2cyB1dC4KKyMgVXBwc2xhZ25pbmdlbiBza2VyIHDDpSBkZXQgdXJzcHJ1bmdsaWdhIG1lZGRlbGFuZGV0LCBzw6UgZGV0IHNwZWxhcgorIyBlZ2VudGxpZ2VuIGluZ2VuIHJvbGwgdmlsa2V0IHRlY2tlbiBzb20gc3TDpXIgZsO2cnN0IGkgZGVuIMO2dmVyc2F0dGEKKyMgc3Ryw6RuZ2VuLiAgRGV0IHZpa3RpZ2Egw6RyIGF0dCBkZXQgc3TDpXIgbsOlZ29uIHBsYXRzaMOlbGxhcmUgZMOkciwgZsO2cnN0YQorIyB0ZWNrbmV0IHNrcml2cyBpbnRlIHV0LCB2YXJlIHNpZyBpIG9yaWdpbmFsc3Ryw6RuZ2VuIGVsbGVyIGRlbiDDtnZlcnNhdHRhCisjIHN0csOkbmdlbi4gIEphZyB0eWNrdGUgZGV0IHZhciBiw6RzdCBhdHQgYmVow6VsbGEgb3JnaW5hbHRlY2tuZXQuCisjCisjIEphZyBoYXIgZmVscmFwcG9ydGVyYXQgaGVsYSBpZMOpbi4gIERldCBpbm5lYsOkciBqdSBhdHQgbWFuIGJ5Z2dlciBpaG9wCisjIG1lbmluZ2FyIGZyw6VuIGRlbGFyLCBvY2ggZGV0IGJydWthciBqdSBnw6Ugc8O2bmRlciBpIMO2dmVyc8OkdHRuaW5nYXIgbWVkCisjIG9saWthIGdlbnVzIG9jaCBkeWxpa3QuICBNZW4gZsO2cmZhdHRhcmVuIGhhciBlbiBkZWwgYnJhIGFyZ3VtZW50IG9tCisjIGF0dCBmw7Zya29ydG5pbmdzc3lzdGVtZXQgw6RyIGVuIGbDtnJkZWwgbsOkciBtYW4gc2thbGwgZsOlIHBsYXRzIG1lZCBzw6UKKyMgbXlja2V0IHNvbSBtw7ZqbGlndCBww6UgZW4gcsOkZGRuaW5nc2Rpc2tldHQuICBJIGRldCBmYWxsZXQgw6RyIMOkbmTDpQorIyBrbmFwcGFzdCDDtnZlcnPDpHR0bmluZ2FyIG1lZC4gIFPDpSBkZW4gYsOkc3RhIGzDtnNuaW5nZW4gw6RyIG5vZyBhdHQgbMOldGEKKyMgc3lzdGVtZXQgc29tIHPDpWRhbnQgZmlubmFzIGt2YXIsIG1lbiBpbnRlIGFudsOkbmRhIGRldCBhbGxzIGkgw7Z2ZXJzYXR0YQorIyBtZWRkZWxhbmRlbi4KKyM6IGUyZnNjay9tZXNzYWdlLmM6MTEzCittc2dpZCAiYWV4dGVuZGVkIGF0dHJpYnV0ZSIKK21zZ3N0ciAiYXV0w7ZrYXQgYXR0cmlidXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkFmZWwgdmlkIGFsbG9rZXJpbmciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJiYmxvY2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQmJpdGthcnRhIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY2tvbXByaW1lcmEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE4Cittc2dpZCAiQ2NvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgQGIiCittc2dzdHIgIkNrb25mbGlrdCBtZWQgbsOlZ290IGFubmF0IGZzIEBiIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgImRrYXRhbG9nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMAorbXNnaWQgIkRkZWxldGVkIgorbXNnc3RyICJEcmFkZXJhZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImVwb3N0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMgorbXNnaWQgIkVAZSAnJURuJyBpbiAlcCAoJWkpIgorbXNnc3RyICJFcG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMworbXNnaWQgImZmaWxlc3lzdGVtIgorbXNnc3RyICJmZmlsc3lzdGVtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRmbDtnIgaW5vZCAlaSAoJVEpIMOkciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjUKK21zZ2lkICJnZ3JvdXAiCittc2dzdHIgImdncnVwcCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjYKK21zZ2lkICJoSFRSRUUgQGQgQGkiCittc2dzdHIgImhIVFJFRSBrYXRhbG9nLWlub2QiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAiSW90aWxsw6V0ZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImpqb3VybmFsIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMAorbXNnaWQgImxsb3N0K2ZvdW5kIgorbXNnc3RyICJsbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICJMw6RyIGVuIGzDpG5rIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMgorbXNnaWQgIm1tdWx0aXBseS1jbGFpbWVkIgorbXNnc3RyICJtZmxlcmZhbGRpZ3QgaWFuc3Byw6Vrc3RhZ25hIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICJub2dpbHRpZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm9mw7Zyw6RsZHJhbMO2cyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicHByb2JsZW0gaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzYKK21zZ2lkICJxcXVvdGEiCittc2dzdHIgInFrdm90IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJycm90aW5vZCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJzc2t1bGxlIHZhcml0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTc3VwZXJibG9jayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAidWzDtnMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQxCittc2dpZCAidmRldmljZSIKK21zZ3N0ciAidmVuaGV0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgInh1dHN0csOkY2tuaW5nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiem5vbGzDpG5nZHMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU0Cittc2dpZCAiPFRoZSBOVUxMIGlub2RlPiIKK21zZ3N0ciAiPElub2Qgbm9sbD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU1Cittc2dpZCAiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIKK21zZ3N0ciAiPElub2RlbiBmw7ZyIGTDpWxpZ2EgYmxvY2s+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NworbXNnaWQgIjxUaGUgdXNlciBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxJbm9kZW4gZsO2ciBhbnbDpG5kYXJrdm90ZXI+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorbXNnaWQgIjxUaGUgZ3JvdXAgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8SW5vZGVuIGbDtnIgZ3J1cHBrdm90ZXI+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OQorbXNnaWQgIjxUaGUgYm9vdCBsb2FkZXIgaW5vZGU+IgorbXNnc3RyICI8VXBwc3RhcnRzcHJvZ3JhbWlub2Rlbj4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYwCittc2dpZCAiPFRoZSB1bmRlbGV0ZSBkaXJlY3RvcnkgaW5vZGU+IgorbXNnc3RyICI8SW5vZGVuIGbDtnIgw6V0ZXJow6RtdG5pbmcgYXYgYm9ydHRhZ25hIGthdGFsb2dlcj4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPEdydXBwaWRlbnRpZmllcmFyaW5vZGVuPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI8Sm91cm5hbGlub2Rlbj4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYzCittc2dpZCAiPFJlc2VydmVkIGlub2RlIDk+IgorbXNnc3RyICI8UmVzZXJ2ZXJhZCBpbm9kIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxSZXNlcnZlcmFkIGlub2QgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAibm9ybWFsIGZpbCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzUKK21zZ2lkICJkaXJlY3RvcnkiCittc2dzdHIgImthdGFsb2ciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAidGVja2VuZW5oZXQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJibG9ja2VuaGV0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgIm5hbW5naXZldCByw7ZyIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgInN5bWJvbGlzayBsw6RuayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAidXR0YWcgKHNvY2tldCkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwJW8iCittc2dzdHIgIm9rw6RuZCBmaWx0eXAgbWVkIHR5cCAwJW8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImluZGlyZWt0IGJsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiZHViYmVsdCBpbmRpcmVrdCBibG9jayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgInRyaXBwZWx0IGluZGlyZWt0IGJsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyOAorbXNnaWQgInRyYW5zbGF0b3IgYmxvY2siCittc2dzdHIgIsO2dmVyc8OkdHRuaW5nc2Jsb2NrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQzMAorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJsb2NrIG5yLiIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICJrYXJ0YSDDtnZlciBmbGVyZmFsZGlndCBpIGFuc3Byw6Vrc3RhZ25hIGlub2RlciIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAiaW50ZXJudCBmZWw6IGthbiBpbnRlIGhpdHRhIGR1cF9ibGsgZsO2ciAlbGx1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgIsOldGVydsOkbmRlIGZyw6VuIGNsb25lX2ZpbGVfYmxvY2siCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgImludGVybnQgZmVsOiBkZXQgZ2ljayBpbnRlIGF0dCBzbMOlIHVwcCBFQS1ibG9ja3Bvc3QgZsO2ciAlbGx1IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiaW50ZXJudCBmZWw6IGRldCBnaWNrIGludGUgYXR0IHNsw6UgdXBwIEVBLWlub2Rwb3N0IGbDtnIgJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjY2NiBlMmZzY2svcGFzczIuYzo5NzAKK21zZ2lkICJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAibMOkc2VyIGthdGFsb2dibG9jayIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgImthcnRhIMO2dmVyIGFudsOkbmRhIGlub2RlciIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgImthdGFsb2dpbm9kc2thcnRhIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAiaW5vZHNrYXJ0YSDDtnZlciByZWd1bGrDpHJhIGZpbGVyIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTQxIG1pc2MvZTJpbWFnZS5jOjEyNjgKK21zZ2lkICJpbi11c2UgYmxvY2sgbWFwIgorbXNnc3RyICJrYXJ0YSDDtnZlciBhbnbDpG5kYSBibG9jayIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE1MAorbXNnaWQgIm1ldGFkYXRhIGJsb2NrIG1hcCIKK21zZ3N0ciAiYmxvY2trYXJ0YSDDtnZlciBtZXRhZGF0YSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiw7ZwcG5hciBpbm9kc8O2a25pbmciCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICJow6RtdGFyIG7DpHN0YSBpbm9kIGZyw6VuIHPDtmtuaW5nIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICJQYXNzIDEiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiCittc2dzdHIgImzDpHNlciBpbmRpcmVrdGJsb2NrIGbDtnIgaW5vZCAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgImthcnRhIMO2dmVyIGTDpWxpZ2EgaW5vZGVyIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAiaW5vZCBpIGthcnRhIMO2dmVyIGTDpWxpZ2EgYmxvY2siCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICJpbWFnaWMgaW5vZHNrYXJ0YSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJrYXJ0YSDDtnZlciBmbGVyZmFsZGlndCBpIGFuc3Byw6Vrc3RhZ25hIGJsb2NrIgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICJrYXJ0YSDDtnZlciBibG9jayBmw7ZyIHV0w7ZrYWRlIGF0dHJpYnV0IgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSglYyk6IGbDtnJ2w6RudGFkZSAlNmx1IGZpY2sgZnlzICU2bHUgKGJsa2FudCAlbGxkKVxuIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICJibG9ja2JpdGthcnRhIgorCisjOiBlMmZzY2svcGFzczEuYzozODMzCittc2dpZCAiaW5vZGUgYml0bWFwIgorbXNnc3RyICJpbm9kYml0a2FydGEiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAiaW5vZHN0YWJlbGwiCisKKyM6IGUyZnNjay9wYXNzMi5jOjI4NworbXNnaWQgIlBhc3MgMiIKK21zZ3N0ciAiUGFzcyAyIgorCisjOiBlMmZzY2svcGFzczIuYzoxMDQyIGUyZnNjay9wYXNzMi5jOjEyMDcKK21zZ2lkICJDYW4gbm90IGNvbnRpbnVlLiIKK21zZ3N0ciAiS2FuIGludGUgZm9ydHPDpHR0YS4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgImlub2Qga2xhciBiaXRrYXJ0YSIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiTWF4IG1pbm5lIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgIlBhc3MgMyIKKworIzogZTJmc2NrL3Bhc3MzLmM6MzQ0Cittc2dpZCAiaW5vZGUgbG9vcCBkZXRlY3Rpb24gYml0bWFwIgorbXNnc3RyICJiaXRrYXJ0YSBmw7ZyIHVwcHTDpGNrdCBhdiBpbm9kc3NsaW5nb3IiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAiUGFzcyA0IgorCisjOiBlMmZzY2svcGFzczUuYzo4MQorbXNnaWQgIlBhc3MgNSIKK21zZ3N0ciAiUGFzcyA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1pbm5lc2FsbG9rZXJpbmdzZmVsIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1pbm5lc2FsbG9rZXJpbmdzZmVsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIihpbmdlbiBwcm9tcHQpIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyCittc2dpZCAiRml4IgorbXNnc3RyICJGaXhhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgIlTDtm0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQKK21zZ2lkICJSZWxvY2F0ZSIKK21zZ3N0ciAiUmVsb2tlcmEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiQWxsb2tlcmEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIkV4cGFuZGVyYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIktvcHBsYSB0aWxsIC9sb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJTa2FwYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIlLDpGRkYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MAorbXNnaWQgIlRydW5jYXRlIgorbXNnc3RyICJLYXBhIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgIlTDtm0gaW5vZCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICJBdmJyeXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAiRGVsYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJGb3J0c8OkdHQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAiS2xvbmEgZmxlcmZhbGRpZ3QgaWFuc3Byw6Vrc3RhZ25hIGJsb2NrIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2Cittc2dpZCAiRGVsZXRlIGZpbGUiCittc2dzdHIgIlRhIGJvcnQgZmlsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIlVuZGVydHJ5Y2sgbWVkZGVsYW5kZW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgIkF2bMOkbmthIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIlTDtm0gSFRyZWUtaW5kZXgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzAKK21zZ2lkICJSZWNyZWF0ZSIKK21zZ3N0ciAiw4V0ZXJza2FwYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKElOR0VUKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MAorbXNnaWQgIkZJWEVEIgorbXNnc3RyICJGSVhBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MQorbXNnaWQgIkNMRUFSRUQiCittc2dzdHIgIlTDlk1EIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICJSRUxPS0VSQVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIkFMTE9LRVJBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICJFWFBBTkRFUkFEIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIsOFVEVSS09QUExBRCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIlNLQVBBRCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NworbXNnaWQgIlNBTFZBR0VEIgorbXNnc3RyICJSw4REREFEIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICJLQVBBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0QgVMOWTUQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAKK21zZ2lkICJBQk9SVEVEIgorbXNnc3RyICJBVkJSVVRFVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICJERUxBRCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIkZPUlRTw4RUVEVSIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJGTEVSRkFMRElHIElBTlNQUsOFS1NUQUdOQSBCTE9DSyBLTE9OQURFIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0Cittc2dpZCAiRklMRSBERUxFVEVEIgorbXNnc3RyICJGSUwgQk9SVFRBR0VOIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiVU5ERVJUUllDS1QiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYKK21zZ2lkICJVTkxJTktFRCIKK21zZ3N0ciAiQVZMw4ROS0FEIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3Cittc2dpZCAiSFRSRUUgSU5ERVggQ0xFQVJFRCIKK21zZ3N0ciAiSFRSRUUtSU5ERVggVMOWTVQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICJLT01NRVIgw4VURVJTS0FQQSIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwCittc2dpZCAiQGIgQEIgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKK21zZ3N0ciAiYmxvY2tiaXRrYXJ0YSBmw7ZyIGdydXBwICVnIMOkciBpbnRlIGkgZ3J1cHBlbi4gKGJsb2NrICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJpbm9kc2JpdGthcnRhIGbDtnIgZ3J1cHAgJWcgw6RyIGludGUgaSBncnVwcGVuLiAgKGJsb2NrICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSB0YWJsZSBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOQorbXNnaWQgIiIKKyJAaSB0YWJsZSBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorIldBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4iCittc2dzdHIgIiIKKyJpbm9kdGFiZWxsIGbDtnIgZ3J1cHAgJWcgw6RyIGludGUgaSBncnVwcGVuLiAgKGJsb2NrICViKVxuIgorIlZBUk5JTkc6IEFMTFZBUkxJRyBEQVRBRsOWUkxVU1Qgw4RSIE3DlkpMSUcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlN1cGVyYmxvY2tldCBrdW5kZSBpbnRlIGzDpHNhcyBlbGxlciBiZXNrcml2ZXIgaW50ZSBldHQgZ2lsdGlndFxuIgorImV4dDIvZXh0My9leHQ0LWZpbHN5c3RlbS4gIE9tIGVuaGV0ZW4gw6RyIGdpbHRpZyBvY2ggZGVuIHZlcmtsaWdlbiBpbm5laMOlbGxlciAiCisiZXR0XG4iCisiZXh0Mi9leHQzL2V4dDQtZmlsc3lzdGVtIChvY2ggaW50ZSB2w6R4bGluZ3N1dHJ5bW1lIGVsbGVyIHVmcyBlbGxlciBuw6Vnb3QgIgorImFubmF0KVxuIgorIsOkciBzdXBlcmJsb2NrZXQgdHJhc2lndCwgb2NoIGR1IGthbiBmw7Zyc8O2a2Ega8O2cmEgbWVkIGV0dCBhbHRlcm5hdGl2dFxuIgorInN1cGVyYmxvY2s6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxlbmhldD5cbiIKKyIgZWxsZXJcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxlbmhldD5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIGZpbGVzeXN0ZW0gc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBzdXBlcmJsb2NrKSBpcyAlYiBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIGRldmljZSBpcyAlYyBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogRWl0aGVyIHRoZSBzdXBlcmJsb2NrIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2Cittc2dpZCAiIgorIlRoZSBAZiBzaXplIChhY2NvcmRpbmcgdG8gdGhlIEBTKSBpcyAlYiBAYnNcbiIKKyJUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgQHYgaXMgJWMgQGJzXG4iCisiRWl0aGVyIHRoZSBAUyBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtc3N0b3JsZWtlbiAoZW5saWd0IHN1cGVyYmxvY2tldCkgw6RyICViIGJsb2NrXG4iCisiRGVuIGZ5c2lza2Egc3Rvcmxla2VuIHDDpSBlbmhldGVuIMOkciAlYyBibG9ja1xuIgorIlN1cGVyYmxvY2tldCBlbGxlciBwYXJ0aXRpb25zdGFiZWxsZW4gw6RyIGbDtnJtb2RsaWdlbiB0cmFzaWchXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIlN1cGVyYmxvY2tldHMgYmxvY2tzdG9ybGVrID0gJWIsIGZyYWdtZW50c3RvcmxlayA9ICVjLlxuIgorIkRlbm5hIHZlcnNpb24gYXYgZTJmc2NrIHN0w7ZkamVyIGludGUgYW5kcmEgZnJhZ21lbnRzdG9ybGVrYXIgw6RuXG4iCisiYmxvY2tzdG9ybGVrZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwCittc2dpZCAiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIlN1cGVyYmxvY2tldHMgYmxvY2sgcGVyIGdydXBwID0gJWIsIHNrdWxsZSBoYSB2YXJpdCAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGZpcnN0X2RhdGFfYmxvY2sgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NQorbXNnaWQgIkBTIGZpcnN0X2RhdGFfQGIgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJTdXBlcmJsb2NrZXRzIGbDtnJzdGEgZGF0YWJsb2NrID0gJWIsIHNrdWxsZSBoYSB2YXJpdCAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAKK21zZ2lkICIiCisiQGYgZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJmaWxzeXN0ZW1ldCBoYWRlIGluZ2VuIFVVSUQ7IGdlbmVyZXJhciBlbi5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0XG4iCisib2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeVxuIgorInJ1bm5pbmcgZTJmc2NrIHdpdGggdGhlICctYiAlUycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW1cbiIKKyJtYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kXG4iCisidGhlIGJhY2t1cCBibG9jayBncm91cCBkZXNjcmlwdG9ycyBtYXkgYmUgT0suXG4iCisiXG4iCittc2dzdHIgIiIKKyJPYnNlcnZlcmE6IG9tIGRldCDDpHIgZmxlcmEgaW5vZC0gZWxsZXIgYmxvY2tiaXRrYXJ0ZWJsb2NrIGVsbGVyIGVuIGRlbFxuIgorImF2IGlub2RzdGFiZWxsZW4gc29tIG3DpXN0ZSBmbHl0dGFzLCBrYW5za2UgZHUgdmlsbCBrw7ZyYSBlMmZzY2sgbWVkXG4iCisiZmxhZ2dhbiDigJ0tYiAlU+KAnSBmw7Zyc3QuICBQcm9ibGVtZXQga2FuIGxpZ2dhIGJhcmEgaSBkZW4gcHJpbcOkcmFcbiIKKyJibG9ja2dydXBwYmVza3JpdmFyZW4sIG9jaCByZXNlcnZibG9ja2dydXBwYmVza3JpdmFyZW4ga2FuIHZhcmEgT0suXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICJTa2FkYSBoaXR0YWQgaSBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGJlc3TDpG1uaW5nIGF2IGRlbiBmeXNpc2thIGVuaGV0ZW46ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgImlub2RzYW50YWwgaSBzdXBlcmJsb2NrIMOkciAlaSwgc2thbGwgdmFyYSAlai5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODgKK21zZ2lkICJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkIHN0w7ZkamVyIGludGUgZnVua3Rpb25lbiBmaWx0eXAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgJWkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MworIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiU3VwZXJibG9jayBoYXIgZW4gb2dpbHRpZyBqb3VybmFsIChpbm9kICVpKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgbXVsdGlwbGUgZmlsZXN5c3RlbSB1c2VycyAodW5zdXBwb3J0ZWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBtdWx0aXBsZSBAZiB1c2VycyAodW5zdXBwb3J0ZWQpLlxuIgorbXNnc3RyICJFeHRlcm4gam91cm5hbCBoYXIgZmxlcmEgZmlsc3lzdGVtc2FudsOkbmRhcmUgKHN0w7ZkanMgZWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIkthbiBpbnRlIGhpdHRhIGV4dGVybiBqb3VybmFsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJFeHRlcm4gam91cm5hbCBoYXIgZMOlbGlndCBzdXBlcmJsb2NrXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiRXh0ZXJuIGpvdXJuYWwgc3TDtmRqZXIgaW50ZSBkZXR0YSBmaWxzeXN0ZW1cbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorIkZpbHN5c3RlbXNqb3VybmFsc3VwZXJibG9jayDDpHIgYXYgb2vDpG5kIHR5cCAlTiAoZWogc3TDtnR0KS5cbiIKKyJEZXQgw6RyIHRyb2xpZ3QgYXR0IGRpdHQgZXhlbXBsYXIgYXYgZTJmc2NrIMOkciBnYW1tYWx0IG9jaC9lbGxlciBpbnRlXG4iCisic3TDtmRqZXIgZGV0dGEgam91cm5hbGZvcm1hdC5cbiIKKyJEZXQgw6RyIG9ja3PDpSBtw7ZqbGlndCBhdHQgam91cm5hbHN1cGVyYmxvY2tldCDDpHIgdHJhc2lndC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxvY2sgw6RyIHRyYXNpZ3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorbXNnaWQgIkBTIGhhc19AaiBmbGFnIGlzIGNsZWFyLCBidXQgYSBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICJTdXBlcmJsb2Nrc2ZsYWdnYW4gaGFzX2pvdXJuYWwgw6RyIG5vbGxzdMOkbGxkLCBtZW4gZW4gam91cm5hbCBmaW5ucy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIlN1cGVyYmxvY2tmbGFnZ2EgYmVow7Z2ZXJfcsOkdHRhcyDDpHIgc2F0dCwgbWVuIGluZ2VuIGpvdXJuYWwgZmlubnMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICIiCisiU3VwZXJibG9ja3NmbGFnZ2EgYmVow7Z2ZXJfcsOkdHRhcyDDpHIgbm9sbHN0w6RsbGQsIG1lbiBqb3VybmFsIGhhciBkYXRhLlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICJUw7ZtIGpvdXJuYWwiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiIgorImZpbHN5c3RlbWV0IGhhciBmdW5rdGlvbnNmbGFnZ29yIHNhdHRhLCBtZW4gw6RyIGV0dCByZXZpc2lvbiAwLWZpbHN5c3RlbS4gICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIiCisiJXMgZsO2csOkbGRyYWzDtnMgaW5vZCAlaSAodWlkPSVJdSwgZ2lkPSVJZywgcsOkdHRpZ2hldD0lSW0sIHN0b3JsZWs9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiT2dpbHRpZ3QgJUIgKCViKSBoaXR0YXQgaSBmw7Zyw6RsZHJhbMO2cyBpbm9kICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBBbHJlYWR5IGNsZWFyZWQgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjYKK21zZ2lkICJBbHJlYWR5IGNsZWFyZWQgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiUmVkYW4gdMO2bXQgJUIgKCViKSBoaXR0YXQgaSBmw7Zyw6RsZHJhbMO2cyBpbm9kICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIG9ycGhhbmVkIGlub2RlICVpIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBvIEBpICVpIGluIEBTLlxuIgorbXNnc3RyICJPZ2lsdGlnIGbDtnLDpGxkcmFsw7ZzIGlub2QgJWkgaSBzdXBlcmJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgIk9naWx0aWcgaW5vZCAlaSBpIGbDtnLDpGxkcmFsw7ZzIGlub2RsaXN0YS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4MQorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICJKb3VybmFsc3VwZXJibG9jayBoYXIgb2vDpG5kIHNrcml2c2t5ZGRhZCBmdW5rdGlvbnNmbGFnZ2Egc2F0dC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICJKb3VybmFsc3VwZXJibG9jayBoYXIgb2vDpG5kIGlua29tcGF0aWJlbCBmdW5rdGlvbnNmbGFnZ2Egc2F0dC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICJKb3VybmFsdmVyc2lvbiBzdMO2ZHMgaW50ZSBhdiBkZW5uYSBlMmZzY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiRmx5dHRhciBqb3VybmFsIGZyw6VuIC8lcyB0aWxsIGRvbGQgaW5vZC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRmVsIHZpZCBmbHl0dG5pbmcgYXYgam91cm5hbDogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkhpdHRhZGUgb2dpbHRpZ2EgVjItam91cm5hbHN1cGVyYmxvY2tmw6RsdCAoZnLDpW4gVjEtam91cm5hbCkuXG4iCisiVMO2bW1lciBmw6RsdCBlZnRlciBWMS1qb3VybmFsc3VwZXJibG9jayAuLi5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogUnVuIGpvdXJuYWwgYW55d2F5CisjOiBlMmZzY2svcHJvYmxlbS5jOjMxMgorbXNnaWQgIlJ1biBAaiBhbnl3YXkiCittc2dzdHIgIkvDtnIgam91cm5hbCDDpG5kw6UiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiUsOkdHRuaW5nc2ZsYWdnYSBpbnRlIHNhdHQgaSByZXNlcnZzdXBlcmJsb2NrLCBzw6Uga8O2ciBqb3VybmFsIMOkbmTDpS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMjIKK21zZ2lkICIiCisiQmFja2luZyB1cCBAaiBAaSBAYiBpbmZvcm1hdGlvbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlPDpGtlcmhldHNrb3BpZXJhciBibG9ja2luZm9ybWF0aW9uIGbDtnIgam91cm5hbGlub2QuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorIkZpbHN5c3RlbWV0IGhhciBpbnRlIHJlc2l6ZV9pbm9kZSBha3RpdmVyYXQsIG1lbiByX3Jlc2VydmVkX2dkdF9ibG9ja3NcbiIKKyLDpHIgJU47IHNrdWxsZSB2YXJpdCBub2xsLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemVfaW5vZGUgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIGlub2RlIGlzIG5vbi16ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzMworbXNnaWQgIlJlc2l6ZV9AaSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgQGkgaXMgbm9uLXplcm8uICAiCittc2dzdHIgIiIKKyJSZXNpemVfaW5vZGUgw6RyIGludGUgYWt0aXZlcmF0LCBtZW4gc3Rvcmxla3PDpG5kcmluZ3Npbm9kZW4gw6RyIGludGUgbm9sbC4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzgKK21zZ2lkICJSZXNpemUgQGkgbm90IHZhbGlkLiAgIgorbXNnc3RyICJTdG9ybGVrc8OkbmRyaW5nc2lub2Qgw6RyIGludGUgZ2lsdGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIlN1cGVyYmxvY2tldHMgc2VuYXN0ZSBtb250ZXJpbmdzdGlkICgldCxcbiIKKyJcdG51ID0gJVQpIMOkciBpIGZyYW10aWRlbi5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb2NrZXRzIHNlbmFzdGUgc2tyaXZuaW5nc3RpZCAoJXQsXG4iCisiXHRudSA9ICVUKSDDpHIgaSBmcmFtdGlkZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIlN1cGVyYmxvY2t0aXBzIGbDtnIgZXh0ZXJudCBzdXBlcmJsb2NrIGJvcmRlIHZhcmEgJVguIgorCisjLiBALWV4cGFuZGVkOiBBZGRpbmcgZGlyaGFzaCBoaW50IHRvIGZpbGVzeXN0ZW0uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1NworbXNnaWQgIiIKKyJBZGRpbmcgZGlyaGFzaCBoaW50IHRvIEBmLlxuIgorIlxuIgorbXNnc3RyICIiCisiTMOkZ2dlciB0aWxsIGRpcmhhc2gtdGlwcyB0aWxsIGZpbHN5c3RlbS5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNjIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgIgorbXNnc3RyICJrb250cm9sbHN1bW1hIGbDtnIgZ3J1cHBiZXNrcml2YXJlICVnIMOkciAlMDR4LCBza2FsbCB2YXJhICUwNHkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICIiCisiZ3J1cHBiZXNrcml2YXJlICVnIMOkciBtYXJrZXJhZCBvaW5pdGllcmFkIHV0YW4gYXR0IGVnZW5za2FwZW4gw6RyIHNhdHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzIKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIGhhcyBpbnZhbGlkIHVudXNlZCBpbm9kZXMgY291bnQgJWIuICAiCittc2dzdHIgImdydXBwYmVza3JpdmFyZSAlZyBoYXIgb2dpbHRpZ3QgYW50YWwgb2FudsOkbmRhIGlub2RlciAlYi4gICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIlNpc3RhIGdydXBwYmxvY2tiaXRrYXJ0YSBvaW5pdGllcmFkLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIkpvdXJuYWx0cmFuc2FrdGlvbiAlaSB2YXIgdHJhc2lnLCDDpXRlcnVwcHNwZWxuaW5nZW4gYXZicsO2dHMuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIkZsYWdnYW4gdGVzdF9mcyDDpHIgc2F0dCAob2NoIGV4dDQgw6RyIHRpbGxnw6RuZ2xpZ3QpLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiU3VwZXJibG9ja2V0cyBzZW5hc3RlIG1vbnRlcmluZ3N0aWQgbGlnZ2VyIGkgZnJhbXRpZGVuLlxuIgorIlx0KG1lZCBtaW5kcmUgw6RuIGVuIGRhZywgZsO2cm1vZGxpZ2VuIGbDtnIgYXR0IGjDpXJkdmFydWtsb2NrYW4gZ8OlciBmZWwpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKyJTdXBlcmJsb2NrZXRzIHNrcmV2cyBzZW5hc3QgaSBmcmFtdGlkZW4uXG4iCisiXHQobWVkIG1pbmRyZSDDpG4gZW4gZGFnLCBmw7ZybW9kbGlnZW4gZsO2ciBhdHQgaMOlcmR2YXJ1a2xvY2thbiBnw6VyIGZlbClcbiIKKworIy4gQC1leHBhbmRlZDogT25lIG9yIG1vcmUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDAzCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIktvbnRyb2xsc3VtbWEgZsO2ciBlbiBlbGxlciBmbGVyYSBibG9ja2dydXBwYmVza3JpdmFyZSDDpHIgb2dpbHRpZy4gICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAiU8OkdHRlciBhbnRhbGV0IGZyaWEgaW5vZGVyICVqICh2YXIgJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIlPDpHR0ZXIgYW50YWxldCBmcmlhIGJsb2NrIHRpbGwgJWMgKHZhciAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAiIgorIkfDtnIga3ZvdGlub2QgJWkgKCVRKSBkb2xkLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiCittc2dzdHIgInN1cGVyYmxvY2tldCBoYXIgZXR0IGZlbGFrdGlndCBNTVAtYmxvY2suICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyOAorbXNnaWQgIkBTIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gICIKK21zZ3N0ciAic3VwZXJibG9ja2V0IGhhciBvZ2lsdGlndCBNTVAtbWFnaXNrdCB0YWwuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisic3VwZXJibG9ja2V0cyBtZXRhZGF0YV9jc3VtIGVyc8OkdHRlciB1bmluaXRfYmc7IGLDpWRhIGZ1bmt0aW9uc2JpdGFybmEga2FuICIKKyJpbnRlIHZhcmEgc2F0dGEgc2FtdGlkaWd0LiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1MgorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIktvbnRyb2xsc3VtbWFuIGbDtnIgc3VwZXItTU1QLWJsb2NrZXQgc3TDpG1tZXIgaW50ZSBtZWQgTU1QLWJsb2NrZXQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIiIKKyJzdXBlcmJsb2NrIHDDpSA2NC1iaXRhcnMgZmlsc3lzdGVtIGJlaMO2dmVyIHV0c3Ryw6Rja25pbmdhciBmw7ZyIGF0dCBrb21tYSDDpXQgIgorImhlbGEgZGlza2VuLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiRmlyc3RfbWV0YV9iZyDDpHIgZsO2ciBzdG9ydC4gICglTiwgbWF4dsOkcmRlICVnKS4gICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIiIKKyJFeHRlcm4ga29udHJvbGxzdW1tYSBmw7ZyIGpvdXJuYWxzdXBlcmJsb2NrIHN0w6RtbWVyIGludGUgbWVkIHN1cGVyYmxvY2tldC4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKyJzdXBlcmJsb2NrZXRzIG1ldGFkYXRhX2NzdW1fc2VlZCDDpHIgaW50ZSBuw7ZkdsOkbmRpZ3QgdXRhbiBtZXRhZGF0YV9jc3VtLiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGluaXRpZXJpbmcgYXYga3ZvdGtvbnRleHQgaSBzdMO2ZGJpYmxpb3Rla2V0OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4MgorbXNnaWQgIkJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODcKK21zZ2lkICJCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBAUyAoJU4pLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5NAorbXNnaWQgIlBhc3MgMTogQ2hlY2tpbmcgQGlzLCBAYnMsIGFuZCBzaXplc1xuIgorbXNnc3RyICJQYXNzIDE6IEtvbnRyb2xsZXJhciBpbm9kZXIsIGJsb2NrIG9jaCBzdG9ybGVrYXJcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgIlJvdGlub2Qgw6RyIGludGUgZW4ga2F0YWxvZy4gICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICJyb3Rpbm9kIGhhciBkdGlkIHNhdHQgKGbDtnJtb2RsaWdlbiBww6UgZ3J1bmQgYXYgZ2FtbWFsIG1rZTJmcykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJSZXNlcnZlcmFkIGlub2QgJWkgKCVRKSBoYXIgb2dpbHRpZ2EgcsOkdHRpZ2hldGVyLiAgIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiUmFkZXJhZCBpbm9kICVpIGhhciBkdGlkIG5vbGwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiCittc2dzdHIgIklub2QgJWkgYW52w6RuZHMsIG1lbiBoYXIgZHRpZCBzYXR0LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiSW5vZCAlaSDDpHIgZW4gbm9sbMOkbmdkcyBrYXRhbG9nLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyJHcnVwcCAlZzpzIGJsb2NrYml0a2FydGEgdmlkICViIHN0w6VyIGkga29uZmxpa3QgbWVkIGFubmF0IGZpbHN5c3RlbWJsb2NrLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzMworbXNnaWQgIkBnICVnJ3MgQGkgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyJHcnVwcCAlZzpzIGlub2RiaXRrYXJ0YSB2aWQgJWIgc3TDpXIgaSBrb25mbGlrdCBtZWQgYW5uYXQgZmlsc3lzdGVtYmxvY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisiR3J1cHAgJWc6cyBpbm9kdGFiZWxsIHZpZCAlYiBzdMOlciBpIGtvbmZsaWt0IG1lZCBhbm5hdCBmaWxzeXN0ZW1ibG9jay5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiR3J1cHAgJWc6cyBibG9ja2JpdGthcnRhICglYikgw6VyIGZlbGFrdGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDgKK21zZ2lkICJAZyAlZydzIEBpIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJHcnVwcCAlZzpzIGlub2RiaXRrYXJ0YSAoJWIpIMOkciBmZWxha3RpZy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfc2l6ZSBpcyAlSXMsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTMKK21zZ2lkICJAaSAlaSwgaV9zaXplIGlzICVJcywgQHMgJU4uICAiCittc2dzdHIgIklub2QgJWksIGlfc3RvcmxlayDDpHIgJUlzLCBza3VsbGUgdmFyaXQgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX2Jsb2NrcyBpcyAlSWIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NTgKK21zZ2lkICJAaSAlaSwgaV9AYnMgaXMgJUliLCBAcyAlTi4gICIKK21zZ3N0ciAiSW5vZCAlaSwgaV9ibG9jayDDpHIgJUliLCBza3VsbGUgdmFyaXQgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICJPZ2lsdGlndCAlQiAoJWIpIGkgaW5vZCAlaS4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiVCICglYikgw7Z2ZXJsYXBwYXIgZmlsc3lzdGVtbWV0YWRhdGEgaSBpbm9kICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIklub2QgJWkgaGFyIG9naWx0aWdhIGJsb2NrLiAgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIkbDtnIgbcOlbmdhIG9naWx0aWdhIGJsb2NrIGkgaW5vZCAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODMKK21zZ2lkICJASSAlQiAoJWIpIGluIGJhZCBAYiBAaS4gICIKK21zZ3N0ciAiT2dpbHRpZ3QgJUIgKCViKSBpIGlub2QgZsO2ciBmZWxha3RpZ2EgYmxvY2suICAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIklub2QgZsO2ciBmZWxha3RpZ2EgYmxvY2sgaGFyIG9naWx0aWdhIGJsb2NrLiAgIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiRHVwbGljZXJhdCBlbGxlciBmZWxha3RpZ3QgYmxvY2sgYW52w6RuZHMhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIiIKKyJGZWxha3RpZ3QgYmxvY2sgJWIgYW52w6RudCBzb20gaW5kaXJla3RibG9jayBmw7ZyIGlub2QgZsO2ciBkw6VsaWdhIGJsb2NrLiAgIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbgorIy4gQC1leHBhbmRlZDogc2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaW4gdGhlIGZpbGVzeXN0ZW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAzCittc2dpZCAiIgorIlxuIgorIlRoZSBiYWQgQGIgQGkgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4iCisic2hvdWxkIHN0b3Agbm93IGFuZCBydW4gZTJmc2NrIC1jIHRvIHNjYW4gZm9yIGJhZCBibG9ja3NcbiIKKyJpbiB0aGUgQGYuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJJbm9kZW4gZsO2ciBkw6VsaWdhIGJsb2NrIGhhciBhbnRhZ2xpZ2VuIGJsaXZpdCBza2FkYWQuICBEdSBiw7ZyXG4iCisiYW50YWdsaWdlbiBzbHV0YSBudSBvY2gga8O2cmEgZTJmc2NrIC1jIGbDtnIgYXR0IHPDtmthIGVmdGVyIGTDpWxpZ2EgYmxvY2tcbiIKKyJpIGZpbHN5c3RlbWV0LlxuIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogSWYgdGhlIGJsb2NrIGlzIHJlYWxseSBiYWQsIHRoZSBmaWxlc3lzdGVtIGNhbiBub3QgYmUgZml4ZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjEwCittc2dpZCAiIgorIlxuIgorIklmIHRoZSBAYiBpcyByZWFsbHkgYmFkLCB0aGUgQGYgY2FuIG5vdCBiZSBmaXhlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk9tIGJsb2NrZXQgdmVya2xpZ2VuIMOkciBkw6VsaWd0IGthbiBpbnRlIGZpbHN5c3RlbWV0IGxhZ2FzLlxuIgorCisjLiBALWV4cGFuZGVkOiBZb3UgY2FuIHJlbW92ZSB0aGlzIGJsb2NrIGZyb20gdGhlIGJhZCBibG9jayBsaXN0IGFuZCBob3BlXG4KKyMuIEAtZXhwYW5kZWQ6IHRoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjE1Cittc2dpZCAiIgorIllvdSBjYW4gcmVtb3ZlIHRoaXMgQGIgZnJvbSB0aGUgYmFkIEBiIGxpc3QgYW5kIGhvcGVcbiIKKyJ0aGF0IHRoZSBAYiBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdSBrYW4gdGEgYm9ydCBkZXR0YSBibG9jayBmcsOlbiBsaXN0YW4gw7Z2ZXIgZMOlbGlnYSBibG9jayBvY2ggaG9wcGFzXG4iCisiYXR0IGJsb2NrZXQgdmVya2xpZ2VuIMOkciBPSy4gbWVuIGRldCBmaW5ucyBpbmdhIGdhcmFudGllci5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiRGV0IHByaW3DpHJhIHN1cGVyYmxvY2tldCAoJWIpIMOkciBww6UgbGlzdGFuIMO2dmVyIGTDpWxpZ2EgYmxvY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiQmxvY2sgJWIgaSBkZSBwcmltw6RyYSBncnVwcGJlc2tyaXZhcm5hIMOkciBww6UgbGlzdGFuIMO2dmVyIGTDpWxpZ2EgYmxvY2tcbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBzdXBlcmJsb2NrICglYikgaXMgYmFkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzMgorbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgQFMgKCViKSBpcyBiYWQuXG4iCittc2dzdHIgIlZhcm5pbmc6IEdydXBwICVnOnMgc3VwZXJibG9jayAoJWIpIMOkciBkw6VsaWd0LlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBHcnVwcCAlZzpzIGtvcGlhIGF2IGdydXBwYmVza3JpdmFybmEgaGFyIGV0dCBkw6VsaWd0IGJsb2NrICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJQcm9ncmFtbWVyaW5nc2ZlbD8gIEJsb2NrIG5yLiAlYiB0YXMgaSBhbnNwcsOlayB1dGFuIGFubGVkbmluZyBpICIKKyJwcm9jZXNzX2JhZF9ibG9jay5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiIgorIkZlbCB2aWQgYWxsb2tlcmluZyBhdiAlTiBrb25zZWt1dGl2YSBibG9jayBpIGJsb2NrZ3J1cHAgJWcgZsO2ciAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkZpbCB2aWQgYWxsb2tlcmluZyBhdiBibG9ja2J1ZmZlcnQgZsO2ciByZWxva2VyaW5nIGF2ICVzXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAiUmVsb2tlcmFyIGdydXBwICVnOnMgJXMgZnLDpW4gJWIgdGlsbCAlYyAuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICJSZWxva2VyYXIgZ3J1cHAgJWc6cyAlcyB0aWxsICVjIC4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiVmFybmluZzoga3VuZGUgaW50ZSBsw6RzYSBibG9jayAlYiBhdiAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICJWYXJuaW5nOiBrdW5kZSBpbnRlIHNrcml2YSBibG9jayAlYiBhdiAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBhbGxva2VyaW5nIGF2IGlub2RiaXRrYXJ0YSAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgYWxsb2tlcmluZyBhdiBibG9ja2JpdGthcnRhICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGFsbG9rZXJpbmcgYXYgaWNvdW50LWzDpG5raW5mb3JtYXRpb246ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBhbGxva2VyaW5nIGF2IGthdGFsb2dibG9ja3Zla3RvcjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGdlbm9tc8O2a25pbmcgYXYgaW5vZGVyICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGl0ZXJlcmluZyDDtnZlciBibG9jayBpIGlub2QgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBjb3VudD0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBsYWdyaW5nIGF2IGlub2RzcsOka25hcmluZm9ybWF0aW9uIChpbm9kPSVpLCBhbnRhbD0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisiRmVsIHZpZCBsYWdyaW5nIGF2IGthdGFsb2dibG9ja3NpbmZvcm1hdGlvbiAoaW5vZD0laSwgYmxvY2s9JWIsIGFudGFsPSVOKTogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgYXYgaW5vZCAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiSW5vZCAlaSBoYXIgZmxhZ2dhbiBpbWFnaWMgc2F0dC4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZWNpYWxmaWwgKGVuaGV0L3V0dGFnIChzb2NrZXQpL2ZpZm8vc3ltbMOkbmspIChpbm9kICVpKSBoYXIgZmxhZ2dhblxuIgorIm9mw7Zyw6RuZGVybGlnIGVsbGVyIGVuZGFzdCB0aWxsw6RnZyBzYXR0LiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBpbm9kZSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIEBpICVpIGhhcyBub24temVybyBzaXplLiAgIgorbXNnc3RyICJTcGVjaWFsaW5vZCAoZW5oZXQvdXR0YWcgKHNvY2tldCkvZmlmbykgJWkgaGFyIG5vbGxza2lsZCBzdG9ybGVrLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJKb3VybmFsaW5vZCBhbnbDpG5kcywgbWVuIGlubmVow6VsbGVyIGRhdGEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJKb3VybmFsIMOkciBpbnRlIGVuIHZhbmxpZyBmaWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiSW5vZCAlaSB2YXIgbWVkIGkgbGlzdGFuIMO2dmVyIGbDtnLDpGxkcmFsw7ZzYSBpbm9kZXIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiSW5vZGVyIHNvbSB2YXIgbWVkIGkgdHJhc2lnIGxpc3RhIMO2dmVyIGbDtnLDpGxkcmFsw7ZzYSBpbm9kZXIgaGl0dGFkLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3MAorbXNnaWQgIkBBIHJlZmNvdW50IHN0cnVjdHVyZSAoJU4pOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGFsbG9rZXJpbmcgYXYgcmVmZXJlbnNyw6RrbmFyc3RydWt0dXIgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJGZWwgdmlkIGzDpHNuaW5nIGF2IHV0w7ZrYWRlIGF0dHJpYnV0LWJsb2NrICViIGbDtnIgaW5vZCAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIklub2QgJWkgaGFyIGV0dCBmZWxha3RpZ3QgdXTDtmthZGUgYXR0cmlidXQtYmxvY2sgJWIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzg1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJGZWwgdmlkIGzDpHNuaW5nIGF2IHV0w7ZrYWRlIGF0dHJpYnV0LWJsb2NrICViICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzkwCittc2dpZCAiQGEgQGIgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgQHMgJU4uICAiCittc2dzdHIgIlV0w7ZrYWRlIGF0dHJpYnV0LWJsb2NrICViIGhhciByZWZlcmVuc3LDpGtuYXJlICVyLCBza2FsbCB2YXJhICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRmVsIHZpZCBza3Jpdm5pbmcgYXYgdXTDtmthZGUgYXR0cmlidXQtYmxvY2sgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyBoX2Jsb2NrcyA+IDEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAwCittc2dpZCAiQGEgQGIgJWIgaGFzIGhfQGJzID4gMS4gICIKK21zZ3N0ciAiVXTDtmthZGUgYXR0cmlidXQtYmxvY2sgJWIgaGFyIGhfYmxvY2tzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorbXNnaWQgIkBBIEBhIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiRmVsIHZpZCBhbGxva2VyaW5nIHV0w7ZrYWRlIGF0dHJpYnV0cyByZWdpb25hbGxva2VyaW5nc3N0cnVrdHVyLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiVXTDtmthZGUgYXR0cmlidXQtYmxvY2sgJWIgw6RyIHRyYXNpZ3QgKGFsbG9rZXJpbmdza29sbGlzaW9uKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIlV0w7ZrYWRlIGF0dHJpYnV0LWJsb2NrICViIMOkciB0cmFzaWd0IChvZ2lsdGlndCBuYW1uKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgdmFsdWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyMAorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIHZhbHVlKS4gICIKK21zZ3N0ciAiVXTDtmthZGUgYXR0cmlidXQtYmxvY2sgJWIgw6RyIHRyYXNpZ3QgKG9naWx0aWd0IHbDpHJkZSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgIklub2QgJWkgw6RyIGbDtnIgc3Rvci4gICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgQGQgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBmw6VyIGthdGFsb2cgYXR0IGJsaSBmw7ZyIHN0b3IuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIGbDpXIgZmlsIGF0dCBibGkgZsO2ciBzdG9yLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSBmw6VyIHN5bWzDpG5rIGF0dCBibGkgZsO2ciBzdG9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIklub2QgJWkgaGFyIGZsYWdnYSBJTkRFWF9GTCBzYXR0IHDDpSBmaWxzeXN0ZW0gdXRhbiBzdMO2ZCBmw7ZyIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAiSW5vZCAlaSBoYXIgZmxhZ2dhIElOREVYX0ZMIHNhdHQgbWVuIMOkciBpbnRlIGVuIGthdGFsb2cuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIkhUUkVFIGthdGFsb2dpbm9kICVpIGhhciBlbiBvZ2lsdGlnIHJvdG5vZC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1OQorbXNnaWQgIkBoICVpIGhhcyBhbiB1bnN1cHBvcnRlZCBoYXNoIHZlcnNpb24gKCVOKVxuIgorbXNnc3RyICJIVFJFRSBrYXRhbG9nLWlub2QgJWkgaGFyIGVuIGhhc2h2ZXJzaW9uIHNvbSBpbnRlIHN0w7ZkcyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIkhUUkVFIGthdGFsb2ctaW5vZCAlaSBhbnbDpG5kZXIgZW4gaW5rb21wYXRpYmVsIGh0cmVlIHJvdG5vZHNmbGFnZ2EuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2OQorbXNnaWQgIkBoICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4iCittc2dzdHIgIkhUUkVFIGthdGFsb2ctaW5vZCAlaSBoYXIgZXR0IHRyw6RkZGp1cCAoJU4pIHNvbSDDpHIgZsO2ciBzdG9ydFxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGFuIGluZGlyZWN0IGJsb2NrICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIG1ldGFkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3NAorbXNnaWQgIiIKKyJCYWQgQGIgQGkgaGFzIGFuIGluZGlyZWN0IEBiICglYikgdGhhdCBjb25mbGljdHMgd2l0aFxuIgorIkBmIG1ldGFkYXRhLiAgIgorbXNnc3RyICIiCisiSW5vZGVuIGbDtnIgZMOlbGlnYSBibG9jayBoYXIgZXR0IGluZGlyZWt0YmxvY2sgKCViKSBzb20gc3TDpXIgaSBrb25mbGlrdFxuIgorIm1lZCBmaWxzeXN0ZW1zbWV0YWRhdGEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6ZSBAaSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4iCittc2dzdHIgIk1pc3NseWNrYWRlcyBhdHQgw6V0ZXJza2FwYSBzdG9ybGVrc8OkbmRyaW5nc2lub2Q6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJJbm9kICVpIGhhciBlbiBleHRyYSBzdG9ybGVrICglSVMpIHNvbSDDpHIgb2dpbHRpZ1xuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiVXTDtmthdCBhdHRyaWJ1dCBpIGlub2QgJWkgaGFyIGV0dCBuYW1lbGVuICglTikgc29tIMOkciBvZ2lsdGlnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODk1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiVXTDtmthdCBhdHRyaWJ1dCBpIGlub2QgJWkgaGFyIGVuIHbDpHJkZXBvc2l0aW9uICglTikgc29tIMOkciBvZ2lsdGlnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIiIKKyJVdMO2a2F0IGF0dHJpYnV0IGkgaW5vZCAlaSBoYXIgZXR0IHbDpHJkZWJsb2NrICglTikgc29tIMOkciBvZ2lsdGlndCAobcOlc3RlICIKKyJ2YXJhIDApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJVdMO2a2F0IGF0dHJpYnV0IGkgaW5vZCAlaSBoYXIgZXR0IHbDpHJkZXN0b3JsZWsgKCVOKSBzb20gw6RyIG9naWx0aWdcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIlV0w7ZrYXQgYXR0cmlidXQgaSBpbm9kICVpIGhhciBoYXNoICglTikgc29tIMOkciBvZ2lsdGlnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTUKK21zZ2lkICJAaSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4iCittc2dzdHIgImlub2QgJWkgw6RyIGVuICVJdCBtZW4gZGV0IHNlciB1dCBzb20gZGV0IGVnZW50bGlnZW4gw6RyIGVuIGthdGFsb2cuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgw7Z2ZXIgdXRzdHLDpGNrbmluZ3N0csOkZCBpIGlub2QgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorIk1pc3NseWNrYWRlcyBhdHQgaXRlcmVyYSDDtnZlciB1dHN0csOkY2tuaW5nYXIgaSBpbm9kICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiaW5vZCAlaSBoYXIgZW4gb2dpbHRpZyB1dHN0csOkY2tuaW5nXG4iCisiXHQobG9naXNrdCBibG9jayAlYywgb2dpbHRpZ3QgZnlzaXNrdCBibG9jayAlYiwgbMOkbmdkICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImlub2QgJWkgaGFyIGVuIG9naWx0aWcgdXRzdHLDpGNrbmluZ1xuIgorIlx0KGxvZ2lza3QgYmxvY2sgJWMsIGZ5c2lza3QgYmxvY2sgJWIsIG9naWx0aWcgbMOkbmdkICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgZXh0ZW50cyBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIklub2QgJWkgaGFyIGZsYWdnYW4gRVhURU5UU19GTCBzYXR0IHDDpSBmaWxzeXN0ZW1ldCB1dGFuIHN0w7ZkIGbDtnIgIgorInV0c3Ryw6Rja25pbmdhci5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJpbm9kICVpIMOkciBpIHV0c3Ryw6Rja25pbmdzZm9ybWF0LCBtZW4gc3VwZXJibG9ja2V0IHNha25hciBlZ2Vuc2thcGVuICIKKyJFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICJpbm9kICVpIHNha25hciBFWFRFTlRfRkwsIG1lbiDDpHIgaSB1dHN0csOkY2tuaW5nc2Zvcm1hdFxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIlNuYWJiIHN5bWzDpG5rICVpIGhhciBFWFRFTlRfRkwgc2F0dC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorImlub2QgJWkgaGFyIHV0c3Ryw6Rja25pbmdhciBpIG9vcmRuaW5nXG4iCisiXHQob2dpbHRpZ3QgbG9naXNrdCBibG9jayAlYywgZnlzaXNrdCBibG9jayAlYiwgbMOkbmdkICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgImlub2QgJWkgaGFyIGVuIG9naWx0aWcgdXRzdHLDpGNrbmluZ3Nub2QgKGJsayAlYiwgbGJsayAlYylcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGtvbnZlcnRlcmluZyBhdiBibG9ja2JpdGthcnRhIMO2dmVyIHN1YmtsdXN0ZXI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTc1Cittc2dpZCAiQHEgQGkgaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiS3ZvdGlub2RlbiDDpHIgaW50ZSBlbiB2YW5saWcgZmlsLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiS3ZvdGlub2RlbiBhbnbDpG5kcyBpbnRlLCBtZW4gaW5uZWjDpWxsZXIgZGF0YS4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJLdm90aW5vZGVuIMOkciBzeW5saWcgZsO2ciBhbnbDpG5kYXJlbi4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgIklub2RlbiBmw7ZyIGTDpWxpZ2EgYmxvY2sgdmVya2FyIGZlbGFrdGlnLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTk1Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorImlub2QgJWkgaGFyIGVuIHV0c3Ryw6Rja25pbmcgbWVkIG5vbGwgbMOkbmdkXG4iCisiXHQob2dpbHRpZ3QgbG9naXNrdCBibG9jayAlYywgZnlzaXNrdCBibG9jayAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJJbm9kICVpIHZlcmthciBpbm5laMOlbGxhIHNrcsOkcC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICIiCisiSW5vZCAlaSBrbGFyYXIga29udHJvbGxlciwgbWVuIGtvbnRyb2xsc3VtbWFuIHN0w6RtbWVyIGludGUgbWVkIGlub2Rlbi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiRGUgdXTDtmthZGUgYXR0cmlidXRlbiBmw7ZyIGlub2QgJWkgw6RyIHRyYXNpZ2EgKGFsbG9rZXJpbmdza29sbGlzaW9uKS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIlV0c3Ryw6Rja25pbmdzYmxvY2tlbiBmw7ZyIGlub2QgJWkga2xhcmFyIGtvbnRyb2xsZXIsIG1lbiBrb250cm9sbHN1bW1hbiAiCisic3TDpG1tZXIgaW50ZSBtZWQgdXRzdHLDpGNrbmluZ2FybmFcbiIKKyJcdChsb2dpc2t0IGJsb2NrICVjLCBmeXNpc2t0IGJsb2NrICViLCBsw6RuZ2QgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAyNworbXNnaWQgIkBpICVpIEBhIEBiICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAYi4gICIKK21zZ3N0ciAiIgorImlub2QgJWk6cyB1dMO2a2FkZSBhdHRyaWJ1dGJsb2NrICViIHBhc3NlcmFyIGtvbnRyb2xsZXJuYSwgbWVuIGtvbnRyb2xsc3VtbWFuICIKKyJzdMOkbW1lciBpbnRlIG1lZCBibG9ja2V0LiAgIgorCisjLiBALWV4cGFuZGVkOiBJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAlTiBvZiBpbm9kZSAlaTpcbgorIy4gQC1leHBhbmRlZDogTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAzNAorbXNnaWQgIiIKKyJJbnRlcmlvciBAeCBub2RlIGxldmVsICVOIG9mIEBpICVpOlxuIgorIkxvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgIgorbXNnc3RyICIiCisiSW50ZXJuIHV0c3Ryw6Rja25pbmdzbm9kIHDDpSBuaXbDpSAlTiBhdiBpbm9kICVpOlxuIgorIkxvZ2lzayBzdGFydCAlYiBzdMOkbW1lciBpbnRlIG1lZCBsb2dpc2sgc3RhcnQgJWMgcMOlIG7DpHN0YSBuaXbDpS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiaW5vZCAlaSwgc2x1dGV0IHDDpSB1dHN0csOkY2tuaW5nZW4gw7Z2ZXJza3JpZGVyIHRpbGzDpXRldCB2w6RyZGVcbiIKKyJcdChsb2dpc2t0IGJsb2NrICVjLCBmeXNpc2t0IGJsb2NrICViLCBsw6RuZ2QgJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0NQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIklub2QgJWkgaGFyIGlubGluZS1kYXRhLCBtZW4gc3VwZXJibG9ja2V0IHNha25hciBlZ2Vuc2thcGVuIElOTElORV9EQVRBXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gQGYgd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuIgorbXNnc3RyICIiCisiSW5vZCAlaSBoYXIgZmxhZ2dhbiBJTkxJTkVfREFUQV9GTCBzYXR0IHDDpSBmaWxzeXN0ZW0gdXRhbiBzdMO2ZCBmw7ZyIGlubGluZS0iCisiZGF0YS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDU4Cittc2dpZCAiIgorIkBpICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4iCittc2dzdHIgIiIKKyJpbm9kICVpIGJsb2NrICViIHN0w6VyIGkga29uZmxpa3QgbWVkIGtyaXRpc2sgbWV0YWRhdGEsIGhvcHBhciDDtnZlciAiCisiYmxvY2trb250cm9sbGVyLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkthdGFsb2dpbm9kICVpIGJsb2NrICViIHNrdWxsZSB2YXJpdCB2aWQgJWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICJLYXRhbG9naW5vZCAlaSBlbiB1dHN0csOkY2tuaW5nIG1hcmtlcmFkIG9pbml0aWVyYWQgdmlkIGJsb2NrICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBsb2dpY2FsIGJsb2NrICViIChwaHlzaWNhbCBibG9jayAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuCisjLiBALWV4cGFuZGVkOiBXaWxsIGZpeCBpbiBwYXNzIDFCLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzMKK21zZ2lkICIiCisiQGkgJWkgbG9naWNhbCBAYiAlYiAocGh5c2ljYWwgQGIgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbiIKKyJXaWxsIGZpeCBpbiBwYXNzIDFCLlxuIgorbXNnc3RyICIiCisiaW5vZCAlaSBsb2dpc2t0IGJsb2NrICViIChmeXNpc2t0IGJsb2NrICVjKSBicnl0ZXIgbW90ICIKKyJrbHVzdGVyYWxsb2tlcmluZ3NyZWdsZXIuXG4iCisiS29tbWVyIGZpeGEgaSBwYXNzIDFCLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBAYSBub3QgZm91bmQuICAiCittc2dzdHIgIiIKKyJJbm9kICVpIGhhciBmbGFnZ2FuIElOTElORV9EQVRBX0ZMIHNhdHQgbWVuIHV0w7ZrYWRlIGF0dHJpYnV0IGZpbm5zIGludGUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgJWkpIGhhcyBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlNwZWNpYWxmaWwgKGVuaGV0L3V0dGFnIChzb2NrZXQpL2ZpZm8pIChpbm9kICVpKSBoYXIgdXRzdHLDpGNrbmluZ3MtXG4iCisiZWxsZXIgaW5saW5lLWRhdGEtZmxhZ2dhbiBzYXR0LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiaW5vZCAlaSBoYXMgdXRzdHLDpGNrbmluZ3NodXZ1ZCBtZW4gaW5saW5lLWRhdGFmbGFnZ2FuIHNhdHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IGV4dGVudCBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IEB4IGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICJpbm9kICVpIHZlcmthciBoYSBpbmxpbmUtZGF0YSBtZW4gdXRzdHLDpGNrbmluZ3NmbGFnZ2FuIMOkciBzYXR0LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiIgorImlub2QgJWkgdmVya2FyIGhhIGJsb2Nra2FydGEgbWVuIGlubGluZS1kYXRhIG9jaCB1dHN0csOkY2tuaW5nc2ZsYWdnb3IgIgorInNhdHRhLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIiIKKyJpbm9kICVpIGhhciBpbmxpbmUtZGF0YSBvY2ggdXRzdHLDpGNrbmluZ3NmbGFnZ29yIHNhdHRhIG1lbiBpX2Jsb2NrICIKKyJpbm5laMOlbGxlciBza3LDpHAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisiVHJhc2lnLWJsb2NrLWxpc3RhIHPDpGdlciBhdHQgaW5vZGVuIGbDtnIgbGlzdGFuIMO2dmVyIHRyYXNpZ2EgYmxvY2sgw6RyICIKKyJ0cmFzaWcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJGZWwgdmlkIGFsbG9rZXJpbmcgdXRzdHLDpGNrbmluZ2FycyByZWdpb25hbGxva2VyaW5nc3N0cnVrdHVyLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmdcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTkKK21zZ2lkICIiCisiQGkgJWkgaGFzIGEgZHVwbGljYXRlIEB4IG1hcHBpbmdcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiSW5vZCAlaSBoYXIgZHViYmxlcmFkIHV0c3Ryw6Rja25pbmdtYXBwbmluZ1xuIgorIlx0KGxvZ2lza3QgYmxvY2sgJWMsIG9naWx0aWd0IGZ5c2lza3QgYmxvY2sgJWIsIGzDpG5nZCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgImZlbCB2aWQgYWxsb2tlcmluZyBhdiBtaW5uZSBmw7ZyIGtyeXB0ZXJhZCBrYXRhbG9nbGlzdGFcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKyJpbm9kICVpOnMgdXRzdHLDpGNrbmluZ3N0csOkZCBrdW5kZSB2YXJhIGdydW5kYXJlICglYjsga3VuZGUgdmFyYSDiiaQgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgImlub2QgJWkgcMOlIGV0dCBiaWdhbGxvYy1maWxzeXN0ZW0ga2FuIGludGUgdmFyYSBibG9ja2thcnRlc3R5cmQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgIklub2QgJWkgaGFyIHRyYXNpZ3QgdXRzdHLDpGNrbmluZ3NodXZ1ZC4gICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiVGlkc3N0w6RtcGxhciBww6UgaW5vZCAlaSBib3J0b20gMjMxMC0wNC0wNCDDpHIgc2Fubm9saWt0IGbDtnJlIDE5NzAuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkvDtnIgeXR0ZXJsaWdhcmUgcGFzcyBmw7ZyIGF0dCBsw7ZzYSB1cHAgYmxvY2sgc29tIGFudsOkbmRzIGF2IG1lciDDpG4gZW4gIgorImlub2QgLi4uXG4iCisiUGFzcyAxQjogU8O2a2VyIGlnZW4gZWZ0ZXIgYmxvY2sgc29tIGFudsOkbmRzIGZsZXJhIGfDpW5nZXJcbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIkZsZXJmYWxkaWd0IGlhbnNwcsOla3N0YWduYSBibG9jayBpIGlub2QgJWk6IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgZ2Vub21zw7ZrbmluZyBhdiBpbm9kZXIgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGFsbG9rZXJpbmcgYXYgaW5vZGJpdGthcnRhIChpbm9kZV9kdXBfbWFwKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBpdGVyZXJpbmcgw7Z2ZXIgYmxvY2sgaSBpbm9kICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJGZWwgdmlkIGp1c3RlcmluZyBhdiByZWZlcmVuc3LDpGtuYXJlIGbDtnIgZXh0ZXJuYSBhdHRyaWJ1dC1ibG9jayAlYiAoaW5vZCAiCisiJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTk3Cittc2dpZCAiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIgorbXNnc3RyICIiCisiUGFzcyAxQzogU8O2a2VyIGthdGFsb2dlciBlZnRlciBpbm9kZXIgbWVkIGZsZXJmYWxkaWd0IGlhbnNwcsOla3N0YWduYSBibG9ja1xuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiUGFzcyAxRDogRsO2cmxpa2FyIGZsZXJmYWxkaWd0IGlhbnNwcsOla3N0YWduYSBibG9ja1xuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyJGaWwgJVEgKGlub2QgbnIuICVpLCBtb2RpZmllcmluZ3N0aWQgJUlNKSBcbiIKKyIgIGhhciAlciBmbGVyZmFsZGlndCBpYW5zcHLDpWtzdGFnbmEgYmxvY2ssIGRlbGFkZSBtZWQgJU4gZmlsZXI6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0JVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTQKK21zZ2lkICJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIKK21zZ3N0ciAiXHQlUSAoaW5vZCBuci4gJWksIG1vZGlmaWVyaW5nc3RpZCAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxmaWxzeXN0ZW1zbWV0YWRhdGE+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihEZXQgZmlubnMgJU4gaW5vZGVyIHNvbSBpbm5laMOlbGxlciBmbGVyZmFsZGlndCBpYW5zcHLDpWtzdGFnbmEgYmxvY2suKVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisiRmxlcmZhbGRpZyBpYW5zcHLDpWtzdGFnbmEgYmxvY2sgcmVkYW4gw7Z2ZXJsw6V0bmEgZWxsZXIga2xvbmFkZS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNsb25lIGZpbGU6ICVtXG4iCittc2dzdHIgIkt1bmRlIGludGUga2xvbmEgZmlsOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDgKK21zZ2lkICJQYXNzIDFFOiBPcHRpbWl6aW5nIEB4IHRyZWVzXG4iCittc2dzdHIgIlBhc3MgMUU6IE9wdGltZXJhciB1dHN0csOkY2tuaW5nc3Ryw6RkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBvcHRpbWl6ZSBleHRlbnQgdHJlZSAlcCAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIEB4IHRyZWUgJXAgKCVpKTogJW1cbiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGF0dCBvcHRpbWVyYSB1dHN0csOkY2tuaW5nc3Ryw6RkICVwICglaSk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorbXNnaWQgIk9wdGltaXppbmcgQHggdHJlZXM6ICIKK21zZ3N0ciAiT3B0aW1lcmFyIHV0c3Ryw6Rja25pbmdzdHLDpGQ6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKyJJbnRlcm50IGZlbDogbWF4IGRqdXAgcMOlIHV0c3Ryw6Rja25pbmdzdHLDpGQgw6RyIGbDtnIgc3RvcnQgKCViOyBmw7ZydsOkbnRhdD0lYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjc4Cittc2dpZCAiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAiCittc2dzdHIgImlub2QgJWk6cyB1dHN0csOkY2tuaW5nc3Ryw6RkIChww6Ugbml2w6UgJWIpIGt1bmRlIHZhcmEga29ydGFyZS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjgzCittc2dpZCAiQGkgJWkgQHggdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgIgorbXNnc3RyICJpbm9kICVpOnMgdXRzdHLDpGNrbmluZ3N0csOkZCAocMOlIG5pdsOlICViKSBrdW5kZSB2YXJhIHNtYWxhcmUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTAKK21zZ2lkICJQYXNzIDI6IENoZWNraW5nIEBkIHN0cnVjdHVyZVxuIgorbXNnc3RyICJQYXNzIDI6IEtvbnRyb2xsZXJhciBrYXRhbG9nc3RydWt0dXJcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJAbiBAaSBudW1iZXIgZm9yICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiT2dpbHRpZ3QgaW5vZHNudW1tZXIgZsO2ciDigJ0u4oCdIGkga2F0YWxvZ2lub2QgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGludmFsaWQgaW5vZGUgIzogJURpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDAKK21zZ2lkICJARSBoYXMgQG4gQGkgIzogJURpLlxuIgorbXNnc3RyICJQb3N0IOKAnSVEbuKAnSBpICVwICglaSkgaGFyIG9naWx0aWd0IGlub2RzbnVtbWVyOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSBoYXIgcmFkZXJhZC9vYW52w6RuZCBpbm9kICVEaS4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJQb3N0IOKAnSVEbuKAnSBpICVwICglaSkgw6RyIGVuIGzDpG5rIHRpbGwg4oCdLuKAnSAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHBvaW50cyB0byBpbm9kZSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMTUKK21zZ2lkICJARSBwb2ludHMgdG8gQGkgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBAYi5cbiIKK21zZ3N0ciAiIgorIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSBwZWthciBww6UgaW5vZCAoJURpKSBzb20gZmlubnMgaSBldHQgdHJhc2lndCBibG9jay5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIMOkciBlbiBsw6RuayB0aWxsIGthdGFsb2cgJVAgKCVEaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSDDpHIgZW4gbMOkbmsgdGlsbCByb3Rpbm9kZW4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzMwCittc2dpZCAiQEUgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbiIKK21zZ3N0ciAiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIGhhciBvZ2lsdGlnYSB0ZWNrZW4gaSBuYW1uZXQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICLigJ0u4oCdIHNha25hcyBpIGthdGFsb2dpbm9kICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLi4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICLigJ0uLuKAnSBzYWtuYXMgaSBrYXRhbG9naW5vZCAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICJGw7Zyc3RhIHBvc3Qg4oCdJURu4oCdIChpbm9kPSVEaSkgaSBrYXRhbG9naW5vZCAlaSAoJXApIHNrdWxsZSB2YXJpdCDigJ0u4oCdXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiQW5kcmEgcG9zdCDigJ0lRG7igJ0gKGlub2Q9JURpKSBpIGthdGFsb2dpbm9kICVpIHNrdWxsZSB2YXJpdCDigJ0uLuKAnVxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZhZGRyIGbDtnIgaW5vZCAlaSAoJVEpIMOkciAlSUYsIHNrdWxsZSB2YXJpdCBub2xsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIGbDtnIgaW5vZCAlaSAoJVEpIMOkciAlSWYsIHNrdWxsZSB2YXJpdCBub2xsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Rpcl9hY2wgZm9yIGlub2RlICVpICglUSkgaXMgJUlkLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzY1Cittc2dpZCAiaV9kaXJfYWNsIEBGICVJZCwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9kaXJfYWNsIGbDtnIgaW5vZCAlaSAoJVEpIMOkciAlSWQsIHNrdWxsZSB2YXJpdCBub2xsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZyYWcgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNzAKK21zZ2lkICJpX2ZyYWcgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnJhZyBmw7ZyIGlub2QgJWkgKCVRKSDDpHIgJU4sIHNrdWxsZSB2YXJpdCBub2xsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBmw7ZyIGlub2QgJWkgKCVRKSDDpHIgJU4sIHNrdWxsZSB2YXJpdCBub2xsLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorbXNnaWQgIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iCittc2dzdHIgIklub2QgJWkgKCVRKSBoYXIgb2dpbHRpZ2EgcsOkdHRpZ2hldGVyICglSW0pLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBjb3JydXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzg1Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGNvcnJ1cHRlZFxuIgorbXNnc3RyICJLYXRhbG9naW5vZCAlaSwgJUIsIHBvc2l0aW9uICVOOiBrYXRhbG9nZW4gdHJhc2lnXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIkthdGFsb2dpbm9kICVpLCAlQiwgcG9zaXRpb24gJU46IGbDtnIgbMOlbmd0IGZpbG5hbW5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1Cittc2dpZCAiQGQgQGkgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgIgorbXNnc3RyICJLYXRhbG9naW5vZCAlaSBoYXIgZXR0IG9hbGxva2VyYXQgJUIuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkthdGFsb2dwb3N0ZW4g4oCdLuKAnSBpIGthdGFsb2dpbm9kICVpIMOkciBpbnRlIG5vbGx0ZXJtaW5lcmFkXG4iCisKKyMuIEAtZXhwYW5kZWQ6ICcuLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwNQorIywgYy1mb3JtYXQKK21zZ2lkICInLi4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiS2F0YWxvZ3Bvc3RlbiDigJ0uLuKAnSBpIGthdGFsb2dpbm9kICVpIMOkciBpbnRlIG5vbGx0ZXJtaW5lcmFkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIKK21zZ3N0ciAiSW5vZCAlaSAoJVEpIMOkciBlbiBvZ2lsdGlnIHRlY2tlbmVuaGV0LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJJbm9kICVpIChUUSDDpHIgZW4gb2dpbHRpZyBibG9ja2VuaGV0LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyMAorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLicgQGUuXG4iCittc2dzdHIgIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSDDpHIgZHVwbGljZXJhZCDigJ0u4oCdLXBvc3QuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJQb3N0IOKAnSVEbuKAnSBpICVwICglaSkgw6RyIGR1cGxpY2VyYWQg4oCdLi7igJ0tcG9zdC5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgIkludGVybnQgZmVsOiBrdW5kZSBpbnRlIGhpdHRhIGRpcl9pbmZvIGbDtnIgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSBoYXIgcmVjX2xlbiAlRHIsIHNrdWxsZSB2YXJpdCAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgc3RydWN0dXJlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IHN0cnVjdHVyZTogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBhbGxva2VyaW5nIGF2IGljb3VudC1zdHJ1a3R1cjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBpdGVyZXJpbmcgw7Z2ZXIga2F0YWxvZ2Jsb2NrOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgYXYga2F0YWxvZ2Jsb2NrICViIChpbm9kICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIHNrcml2bmluZyBhdiBrYXRhbG9nYmxvY2sgJWIgKGlub2QgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgYWxsb2tlcmluZyBhdiBueXR0IGthdGFsb2dibG9jayBmw7ZyIGlub2QgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGVhbGxvY2F0aW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGVhbGxvY2F0aW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGRlYWxsb2tlcmluZyBhdiBpbm9kICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBlIGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4iCittc2dzdHIgIkthdGFsb2dwb3N0IGbDtnIg4oCdLuKAnSBpICVwICglaSkgw6RyIHN0b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBGSUZPLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEZJRk8uXG4iCittc2dzdHIgIklub2QgJWkgKCVRKSDDpHIgZW4gb2dpbHRpZyBGSUZPLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgc29ja2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIHNvY2tldC5cbiIKK21zZ3N0ciAiSW5vZCAlaSAoJVEpIMOkciBldHQgb2dpbHRpZ3QgdXR0YWcgKHNvY2tldCkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICclRG4nIGluICVwICglaSkgdG8gJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4NQorbXNnaWQgIlNldHRpbmcgZmlsZXR5cGUgZm9yIEBFIHRvICVOLlxuIgorbXNnc3RyICJTw6R0dGVyIGZpbHR5cCBmw7ZyIHBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSB0aWxsICVOLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIGhhciBmZWxha3RpZyBmaWx0eXAgKHZhciAlRHQsIHNrdWxsZSB2YXJpdCAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDk1Cittc2dpZCAiQEUgaGFzIGZpbGV0eXBlIHNldC5cbiIKK21zZ3N0ciAiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIGhhciBmaWx0eXAgc2F0dC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJQb3N0IOKAnSVEbuKAnSBpICVwICglaSkgaGFyIG5vbGzDpG5nZHNuYW1uLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIlN5bWzDpG5rICVRIChpbm9kIG5yLiAlaSkgw6RyIG9naWx0aWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgJWkgKCVRKSBpcyBpbnZhbGlkICglSWYpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTAKK21zZ2lkICJAYSBAYiBARiBAbiAoJUlmKS5cbiIKK21zZ3N0ciAiVXTDtmthdCBhdHRyaWJ1dC1ibG9jayBmw7ZyIGlub2QgJWkgKCVRKSDDpHIgb2dpbHRpZ3QgKCVJZikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTE1Cittc2dpZCAiQGYgY29udGFpbnMgbGFyZ2UgZmlsZXMsIGJ1dCBsYWNrcyBMQVJHRV9GSUxFIGZsYWcgaW4gQFMuXG4iCittc2dzdHIgIiIKKyJGaWxzeXN0ZW0gaW5uZWjDpWxsZXIgc3RvcmEgZmlsZXIsIG1lbiBzYWtuYXIgZmxhZ2dhbiBMQVJHRV9GSUxFIGkgIgorInN1cGVyYmxvY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjAKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAiUHJvYmxlbSBpIEhUUkVFLWthdGFsb2dpbm9kICVkOiAlQiBpbnRlIHJlZmVyZXJhZFxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJQcm9ibGVtIGkgSFRSRUUta2F0YWxvZ2lub2QgJWQ6ICVCIHJlZmVyZXJhdCB0dsOlIGfDpW5nZXJcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIKK21zZ3N0ciAiUHJvYmxlbSBpIEhUUkVFLWthdGFsb2dpbm9kICVkOiAlQiBoYXIgZmVsYWt0aWcgbWluLWhhc2hcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbiIKK21zZ3N0ciAiUHJvYmxlbSBpIEhUUkVFLWthdGFsb2dpbm9kICVkOiAlQiBoYXIgZmVsYWt0aWcgbWF4LWhhc2hcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQwCittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAiT2dpbHRpZyBIVFJFRS1rYXRhbG9naW5vZCAlZCAoJXEpLiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJQcm9ibGVtIGkgSFRSRUUta2F0YWxvZ2lub2QgJWQgKCVxKTogZmVsYWt0aWd0IGJsb2NrbnVtbWVyICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiUHJvYmxlbSBpIEhUUkVFLWthdGFsb2dpbm9kICVkOiBvZ2lsdGlnIHJvdG5vZC5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIlByb2JsZW0gaSBIVFJFRS1rYXRhbG9naW5vZCAlZDogJUIgaGFyIG9naWx0aWcgZ3LDpG5zICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIiIKKyJQcm9ibGVtIGkgSFRSRUUta2F0YWxvZ2lub2QgJWQ6ICVCIGhhciBvZ2lsdGlndCBhbnRhbCAoJU4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuIgorbXNnc3RyICJQcm9ibGVtIGkgSFRSRUUta2F0YWxvZ2lub2QgJWQ6ICVCIGhhciBlbiBvb3JkbmFkIGhhc2gtdGFiZWxsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICJQcm9ibGVtIGkgSFRSRUUta2F0YWxvZ2lub2QgJWQ6ICVCIGhhciBvZ2lsdGlndCBkanVwICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAiRHVwbGljZXJhZCBwb3N0IOKAnSVEbuKAnSBpICVwICglaSkgaGl0dGFkLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4KKyMuIEAtZXhwYW5kZWQ6IFJlbmFtZSB0byAlcworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorbXNnaWQgIiIKKyJARSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuIgorIlJlbmFtZSB0byAlcyIKK21zZ3N0ciAiIgorIlBvc3Qg4oCdJURu4oCdIGkgJXAgKCVpKSBoYXIgZXR0IGlja2UgdW5pa3QgZmlsbmFtbi5cbiIKKyJCeXQgbmFtbiB0aWxsICVzIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdXBsaWNlcmFkIHBvc3Qg4oCdJURu4oCdIGhpdHRhZC5cbiIKKyJcdE1hcmtlcmFyICVwICglaSkgZsO2ciBvbWJ5Z2duYWQuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfYmxvY2tzX2hpIGbDtnIgaW5vZCAlaSAoJVEpIMOkciAlTiwgc2t1bGxlIHZhcml0IG5vbGwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiT3bDpG50YXQgYmxvY2sgaSBIVFJFRS1rYXRhbG9nICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIHJlZmVyZXJhciBpbm9kICVEaSBpIGdydXBwICVnIGTDpHIgX0lOT0RFX1VOSU5JVCDDpHIgIgorInNhdHQuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisiUG9zdCDigJ0lRG7igJ0gaSAlcCAoJWkpIHJlZmVyZXJhciBpbm9kICVEaSBmdW5uZW4gaSBvYW52w6RudCBpbm9kc29tcsOlZGUgaSBncnVwcCAiCisiJWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsX2hpIGbDtnIgaW5vZCAlaSAoJVEpIMOkciAlTiwgc2t1bGxlIHZhcml0IG5vbGwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxOAorIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisiUHJvYmxlbSBpIEhUUkVFLWthdGFsb2dpbm9kICVkOiByb3Rub2RlbiBzdMOkbW1lciBpbnRlIG1lZCBrb250cm9sbHN1bW1hbi5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorIlByb2JsZW0gaSBIVFJFRS1rYXRhbG9naW5vZCAlZDogaW50ZXJuIG5vZCBoYXIgaW50ZSByw6R0dCBrb250cm9sbHN1bW1hLlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyOAorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkthdGFsb2dpbm9kICVpLCAlQiwgcG9zaXRpb24gJU46IGthdGFsb2dlbiBoYXIgaW5nZW4ga29udHJvbGxzdW1tYS5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQjogZGlyZWN0b3J5IHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzMKK21zZ2lkICJAZCBAaSAlaSwgJUI6IEBkIHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICIiCisia2F0YWxvZ2lub2QgJWksICVCOiBrYXRhbG9nZW4gcGFzc2VyYXIga29udHJvbGxlcm5hIG1lbiBrb250cm9sbHN1bW1hbiAiCisic3TDpG1tZXIgaW50ZS5cbiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIklubGluZS1rYXRhbG9naW5vZCAlaTpzIHN0b3JsZWsgKCVOKSBtw6VzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiA0LlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIkF0dCByw6R0dGEgc3Rvcmxla2VuIHDDpSBpbmxpbmUta2F0YWxvZ2lub2QgJWkgbWlzc2x5Y2thZGVzLlxuIgorCisjLiBALWV4cGFuZGVkOiBFbmNyeXB0ZWQgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyB0b28gc2hvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0OAorbXNnaWQgIkVuY3J5cHRlZCBARSBpcyB0b28gc2hvcnQuXG4iCittc2dzdHIgIktyeXB0ZXJhZCBwb3N0IOKAnSVEbuKAnSBpICVwICglaSkgw6RyIGbDtnIga29ydC5cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1NQorbXNnaWQgIlBhc3MgMzogQ2hlY2tpbmcgQGQgY29ubmVjdGl2aXR5XG4iCittc2dzdHIgIlBhc3MgMzogS29udHJvbGxlcmFyIGthdGFsb2dmw7ZyYmluZGVsc2VyXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiUm90aW5vZCBpbnRlIGFsbG9rZXJhZC4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAiSW5nZW4gcGxhdHMgaSBsb3N0K2ZvdW5kLWthdGFsb2cuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIk9mw7ZyYnVuZGVuIGthdGFsb2dpbm9kICVpICglcClcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzUKK21zZ2lkICIvQGwgbm90IGZvdW5kLiAgIgorbXNnc3RyICIvbG9zdCtmb3VuZCBpbnRlIGZ1bm5lbi4gICIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAi4oCdLi7igJ0gaSAlUSAoJWkpIMOkciAlUCAoJWopLCBza3VsbGUgdmFyaXQgJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiRmVsYWt0aWcgZWxsZXIgZWogZXhpc3RlcmFuZGUgL2xvc3QrZm91bmQuICBLYW4gaW50ZSDDpXRlcmFuc2x1dGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkIG5vdCBleHBhbmQgL2xvc3QrZm91bmQ6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgZXhwYW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBleHBhbmRlcmEgL2xvc3QrZm91bmQ6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJLdW5kZSBpbnRlIMOldGVyZsO2cmJpbmRhICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSB0cnlpbmcgdG8gZmluZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9AbDogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBmw7Zyc8O2ayBhdHQgaGl0dGEgL2xvc3QrZm91bmQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfYmxvY2s6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcwNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BiOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Jsb2NrOiAlbSB2ZWQgZsO2cnPDtmsgYXR0IHNrYXBhIC9sb3N0K2ZvdW5kLWthdGFsb2dcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfaW5vZGU6ICVtIHZpZCBmw7Zyc8O2ayBhdHQgc2thcGEgL2xvc3QrZm91bmQta2F0YWxvZ1xuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICJleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gbsOkciBueXR0IGthdGFsb2dibG9jayBza2FwYWRlc1xuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBkaXJlY3RvcnkgYmxvY2sgZm9yIC9sb3N0K2ZvdW5kXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB3aGlsZSB3cml0aW5nIHRoZSBAZCBAYiBmb3IgL0BsXG4iCittc2dzdHIgIiIKKyJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSB2aWQgc2tyaXZuaW5nIGF2IGthdGFsb2dibG9ja2V0IGbDtnIgL2xvc3QrZm91bmRcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiRmVsIHZpZCBqdXN0ZXJpbmcgYXYgaW5vZHLDpGtuYXJlIHDDpSBpbm9kICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJLdW5kZSBpbnRlIHLDpHR0YSBmw7Zyw6RsZGVyIHRpbGwgaW5vZCAlaTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKyJLdW5kZSBpbnRlIHLDpHR0YSBmw7Zyw6RsZGVyIHRpbGwgaW5vZCAlaTogS3VuZGUgaW50ZSBoaXR0YSAiCisiZsO2csOkbGRyYWthdGFsb2dwb3N0XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgc2thcGFuZGUgYXYgcm90a2F0YWxvZyAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyAvbG9zdCtmb3VuZCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIC9AbCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIHNrYXBhbmRlIGF2IC9sb3N0K2ZvdW5kLWthdGFsb2cgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3Rvcnk7IGFib3J0aW5nLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTUKK21zZ2lkICJAciBpcyBub3QgYSBAZDsgYWJvcnRpbmcuXG4iCittc2dzdHIgIlJvdGlub2Qgw6RyIGludGUgZW4ga2F0YWxvZzsgYXZicnl0ZXIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIkthbiBpbnRlIGZvcnRzw6R0dGEgdXRhbiBlbiByb3Rpbm9kLlxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBub3QgYSBkaXJlY3RvcnkgKGlubz0laSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzcwCisjLCBjLWZvcm1hdAorbXNnaWQgIi9AbCBpcyBub3QgYSBAZCAoaW5vPSVpKVxuIgorbXNnc3RyICIvbG9zdCtmb3VuZCDDpHIgaW50ZSBlbiBrYXRhbG9nIChpbm89JWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGhhciBpbmxpbmUtZGF0YVxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKyJLYW4gaW50ZSBhbGxva2VyYSB1dHJ5bW1lIGbDtnIgL2xvc3QrZm91bmQuXG4iCisiUGxhY2VyYSBib3J0dGFwcGFkZSBmaWxlciBpIHJvdGthdGFsb2dlbiBpc3TDpGxsZXQiCisKKyMuIEAtZXhwYW5kZWQ6IEluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4KKyMuIEAtZXhwYW5kZWQ6IE1vdmUgZGF0YSBvZmYgdGhlIGZpbGVzeXN0ZW0gYW5kIHJlLXJ1biBlMmZzY2suXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODUKK21zZ2lkICIiCisiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbiIKKyJNb3ZlIGRhdGEgb2ZmIHRoZSBAZiBhbmQgcmUtcnVuIGUyZnNjay5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIk90aWxscsOkY2tsaWd0IHV0cnltbWUgZsO2ciBhdHQgw6V0ZXJow6RtdGEgZsO2cmxvcmFkZSBmaWxlciFcbiIKKyJGbHl0dGEgZGF0YSBmcsOlbiBmaWxzeXN0ZW1ldCBvY2gga8O2ciBvbSBlMmZzY2suXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKK21zZ2lkICIvQGwgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIMOkciBrcnlwdGVyYWRcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzk3Cittc2dpZCAiUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3Rvcmllc1xuIgorbXNnc3RyICJQYXNzIDNBOiBPcHRpbWVyYXIga2F0YWxvZ2VyXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGF0dCBza2FwYSBkaXJzX3RvX2hhc2gtaXRlcmF0b3I6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwNworbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBkaXJlY3RvcnkgJXEgKCVkKTogJW1cbiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGF0dCBvcHRpbWVyYSBrYXRhbG9nICVxICglZCk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgxMgorbXNnaWQgIk9wdGltaXppbmcgZGlyZWN0b3JpZXM6ICIKK21zZ3N0ciAiT3B0aW1lcmFyIGthdGFsb2dlcjogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAiUGFzcyA0OiBLb250cm9sbGVyYXIgcmVmZXJlbnNyw6RrbmFyZVxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgIkzDtnMgbm9sbMOkbmdkc2lub2QgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgImzDtnMgaW5vZCAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJJbm9kICVpIHJlZmVyZW5zcsOka25hcmUgw6RyICVJbCwgc2t1bGxlIHZhcml0ICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuCisjLiBALWV4cGFuZGVkOiBcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuCisjLiBALWV4cGFuZGVkOiBpbm9kZV9saW5rX2luZm9bJWldIGlzICVOLCBpbm9kZS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgc2hvdWxkIGJlIHRoZSBzYW1lIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDgKK21zZ2lkICIiCisiV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbiIKKyJcdE9SIFNPTUUgQk9ORUhFQUQgKFlPVSkgSVMgQ0hFQ0tJTkcgQSBNT1VOVEVEIChMSVZFKSBGSUxFU1lTVEVNLlxuIgorIkBpX2xpbmtfaW5mb1slaV0gaXMgJU4sIEBpLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBAcyB0aGUgc2FtZSFcbiIKK21zZ3N0ciAiIgorIlZBUk5JTkc6IFBST0dSQU1NRVJJTkdTRkVMIEkgRTJGU0NLIVxuIgorIlx0RUxMRVIgTsOFR09OIEtMQU5UU0tBTExFIChEVSkgS09OVFJPTExFUkFSIEVUVCBNT05URVJBVCAoQUtUSVZUKSAiCisiRklMU1lTVEVNLlxuIgorImlub2RfbGlua19pbmZvWyVpXSDDpHIgJU4sIGlub2QuaV9saW5rc19jb3VudCDDpHIgJUlsLiAgRGUgc2t1bGxlIHZhcmEgc2FtbWEhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiUGFzcyA1OiBLb250cm9sbGVyYXIgZ3J1cHBzYW1tYW5mYXR0bmluZ3NpbmZvcm1hdGlvblxuIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIlV0ZnlsbG5hZCB2aWQgc2x1dGV0IGF2IGlub2RzYml0a2FydGEgw6RyIGludGUgc2F0dC4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIlV0ZnlsbG5hZCB2aWQgc2x1dGV0IGF2IGJsb2NrYml0a2FydGEgw6RyIGludGUgc2F0dC4gIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODczCittc2dpZCAiQGIgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiQmxvY2tiaXRrYXJ0ZXNraWxsbmFkZXI6ICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg5MworbXNnaWQgIkBpIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIklub2RzYml0a2FydGVza2lsbG5hZGVyOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJBbnRhbCBmcmlhIGlub2RlciDDpHIgZmVsIGbDtnIgZ3J1cHAgbnIuICVnICglaSwgcsOka25hZGU9JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglaSwgY291bnRlZD0laikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkxOAorbXNnaWQgIkRpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiS2F0YWxvZ2FudGFsIGZlbCBmw7ZyIGdydXBwIG5yLiAlZyAoJWksIHLDpGtuYWRlPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTIzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAiQW50YWwgZnJpYSBpbm9kZXIgw6RyIGZlbCAoJWksIHLDpGtuYWRlPSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgIkFudGFsIGZyaWEgYmxvY2sgw6RyIGZlbCBmw7ZyIGdydXBwIG5yLiAlZyAoJWIsIHLDpGtuYWRlPSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiQW50YWwgZnJpYSBibG9jayDDpHIgZmVsICglYiwgcsOka25hZGU9JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQUk9HUkFNTUlORyBFUlJPUjogZmlsZXN5c3RlbSAoIyVOKSBiaXRtYXAgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgYml0bWFwIAorIy4gQC1leHBhbmRlZDogZW5kcG9pbnRzICglaSwgJWopXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorbXNnaWQgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgQEIgIgorImVuZHBvaW50cyAoJWksICVqKVxuIgorbXNnc3RyICIiCisiUFJPR1JBTU1FUklOR1NGRUw6IGZpbHN5c3RlbSAobnIuICVOKSBiaXRrYXJ0YXMgw6RuZHB1bmt0ZXIgKCViLCAlYykgc3TDpG1tZXJcbiIKKyJpbnRlIG1lZCBiZXLDpGtuYWRlIGJpdGthcnRlw6RuZHB1bmt0ZXIgKCVpLCAlailcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIkludGVybnQgZmVsOiBmdXNrYXIgdGlsbCBzbHV0IHDDpSBiaXRrYXJ0YSAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiRmVsIHZpZCBrb3BpZXJpbmcgYXYgZXJzw6R0dG5pbmdzaW5vZHNrYXJ0YTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBiIEBCOiAlbVxuIgorbXNnc3RyICJGZWwgdmlkIGlua29waWVyaW5nIGF2IGVyc8OkdHRuaW5nc2JpdGthcnRhOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICJibG9jayBpIGdydXBwICVnIGFudsOkbmRzIG1lbiBncnVwcGVuIMOkciBtYXJrZXJhZCBCTE9DS19VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUocykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaShzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbiIKK21zZ3N0ciAiaW5vZGVyIGkgZ3J1cHAgJWcgYW52w6RuZHMgbWVuIGdydXBwZW4gw6RyIG1hcmtlcmFkIElOT0RFX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZSBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaSBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiZ3J1cHAgJWc6cyBpbm9kc2JpdGthcnRhIHN0w6RtbWVyIGludGUgbWVkIGtvbnRyb2xsc3VtbWFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiZ3J1cHAgJWc6cyBibG9ja2JpdGthcnRhIHN0w6RtbWVyIGludGUgbWVkIGtvbnRyb2xsc3VtbWFuLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiw4V0ZXJza2FwYSBqb3VybmFsIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDYKK21zZ2lkICJVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTiIKK21zZ3N0ciAiVXBwZGF0ZXJhIGt2b3RpbmZvcm1hdGlvbiBmw7ZyIGt2b3R0eXAgJU4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRmVsIG7DpHIga29udHJvbGxzdW1tZWluZm9ybWF0aW9uIGbDtnIgYmxvY2tncnVwcCBzYXR0ZXM6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIkZlbCB2aWQgc2tyaXZuaW5nIGF2IGZpbHN5c3RlbXNpbmZvcm1hdGlvbjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiRmVsIG7DpHIgc2tyaXZuaW5nYXIgdMO2bWRlcyB0aWxsIGxhZ3JpbmdzZW5oZXRlbjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJGZWwgbsOkciBrdm90aW5mb3JtYXRpb24gc2tyZXZzIGbDtnIga3ZvdHR5cCAlTjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiRWogaGFudGVyYWQgZmVsa29kICgweCV4KSFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMjcyIGUyZnNjay9wcm9ibGVtLmM6MjI3NgorbXNnaWQgIklHTk9SRUQiCittc2dzdHIgIklHTk9SRVJBVCIKKworIzogZTJmc2NrL3F1b3RhLmM6MzMgZTJmc2NrL3F1b3RhLmM6NDYKK21zZ2lkICJpbiBtb3ZlX3F1b3RhX2lub2RlIgorbXNnc3RyICJpIG1vdmVfcXVvdGFfaW5vZGUiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICJBbnbDpG50IG1pbm5lOiAlZCwgZsO2cmx1cGVuIHRpZDogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJzdG9ybGVrIHDDpSBpbm9kPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgInZpZCBzdGFydCBhdiBpbm9kc2dlbm9tc8O2a25pbmciCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjEzMAorbXNnaWQgIndoaWxlIGRvaW5nIGlub2RlIHNjYW4iCittc2dzdHIgInZpZCBpbm9kc2dlbm9tc8O2a25pbmciCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAidmlkIGFucm9wIGF2IGV4dDJmc19ibG9ja19pdGVyYXRlIGbDtnIgaW5vZCAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJ2aWQgYW5yb3AgYXYgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZsO2ciBpbm9kICVkIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzQKK21zZ2lkICJUcnVuY2F0aW5nIgorbXNnc3RyICJLYXBhciIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIlTDtm1tZXIiCisKKyM6IGUyZnNjay91bml4LmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiQW52w6RuZG5pbmc6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzdG9ybGVrXVxuIgorIlx0XHRbLWx8LUwgZMOlbGlnYV9ibG9ja19maWxdIFstQyBmZF0gWy1qIGV4dGVybl9qb3VybmFsXVxuIgorIlx0XHRbLUUgdXTDtmthZGUtZmxhZ2dvcl0gWy16IGfDtnJfb2dqb3J0X2ZpbF0gZW5oZXRcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MgorbXNnaWQgIiIKKyJcbiIKKyJFbWVyZ2VuY3kgaGVscDpcbiIKKyIgLXAgICAgICAgICAgICAgICAgICAgQXV0b21hdGljIHJlcGFpciAobm8gcXVlc3Rpb25zKVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICBNYWtlIG5vIGNoYW5nZXMgdG8gdGhlIGZpbGVzeXN0ZW1cbiIKKyIgLXkgICAgICAgICAgICAgICAgICAgQXNzdW1lIFwieWVzXCIgdG8gYWxsIHF1ZXN0aW9uc1xuIgorIiAtYyAgICAgICAgICAgICAgICAgICBDaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgYWRkIHRoZW0gdG8gdGhlIGJhZGJsb2NrICIKKyJsaXN0XG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEZvcmNlIGNoZWNraW5nIGV2ZW4gaWYgZmlsZXN5c3RlbSBpcyBtYXJrZWQgY2xlYW5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk7DtmRoasOkbHA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIFJlcGFyZXJhIGF1dG9tYXRpc2t0IChpbmdhIGZyw6Vnb3IpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIEfDtnIgaW5nYSBmw7Zyw6RuZHJpbmdhciBhdiBmaWxzeXN0ZW1ldFxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBbnRhIOKAnWph4oCdIHNvbSBzdmFyIHDDpSBhbGxhIGZyw6Vnb3JcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgTGV0YSBlZnRlciBkw6VsaWdhIGJsb2NrIG9jaCBsw6RnZyB0aWxsIGRlbSBpIGxpc3RhblxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGcmFtdHZpbmdhIGtvbnRyb2xsIMOkdmVuIG9tIGZpbHN5c3RlbWV0IMOkciBtYXJrZXJhdCAiCisicmVudFxuIgorCisjOiBlMmZzY2svdW5peC5jOjg4Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiIC12ICAgICAgICAgICAgICAgICAgIFZhciB1dGbDtnJsaWdcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgQW52w6RuZCBhbHRlcm5hdGl2dCBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc3RvcmxlayAgICAgIEZyYW10dmluZ2EgYmxvY2tzdG9ybGVrIHZpZCBzw7ZrYW5kZSBlZnRlciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybl9qb3VybmFsICAgIEJlc3TDpG0gcGxhdHMgZsO2ciBkZW4gZXh0ZXJuYSBqb3VybmFsZW5cbiIKKyIgLWwgZMOlbGlnYV9ibG9ja19maWwgIEzDpGdnIHRpbGwgdGlsbCBsaXN0YW4gw7Z2ZXIgZMOlbGlnYSBibG9ja1xuIgorIiAtTCBkw6VsaWdhX2Jsb2NrX2ZpbCAgQW5nZSBsaXN0YSDDtnZlciBkw6VsaWdhIGJsb2NrXG4iCisiIC16IGfDtnJfb2dqb3J0X2ZpbCAgICBTa2FwYSBlbiBnw7ZyLW9nam9ydC1maWxcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICV1LyV1IGZpbGVzICglMGQuJWQlJSBub24tY29udGlndW91cyksICVsbHUvJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXM6ICV1LyV1IGZpbGVyICglMGQuJWQlJSBlaiBzYW1tYW5ow6RuZ2FuZGUpLCAlbGx1LyVsbHUgYmxvY2tcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBpbm9kIGFudsOkbmQgKCUyLjJmICUlLCBhdiAldSlcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUgaW5vZGVyIGFudsOkbmRhICglMi4yZiAlJSwgYXYgJXUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IGVqIGtvbnNla3V0aXYgZmlsICglMGQuJWQgJSUpXG4iCittc2dzdHJbMV0gIiUxMnUgZWoga29uc2VrdXRpdmEgZmlsZXIgKCUwZC4lZCAlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSBlaiBrb25zZWt1dGl2IGthdGFsb2cgKCUwZC4lZCAlJSlcbiIKK21zZ3N0clsxXSAiJTEydSBlaiBrb25zZWt1dGl2YSBrYXRhbG9nZXIgKCUwZC4lZCAlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiAgICAgICAgICAgICBhbnRhbCBpbm9kZXIgbWVkIGluZC9kaW5kL3RpbmQtYmxvY2s6ICV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIEhpc3RvZ3JhbSDDtnZlciB1dHN0csOkY2tuaW5nYXJzIGRqdXA6ICIKKworIzogZTJmc2NrL3VuaXguYzoxOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEybGx1IGJsb2NrIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnaWRfcGx1cmFsICIlMTJsbHUgYmxvY2tzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnc3RyWzBdICIlMTJsbHUgYW52w6RudCBibG9jayAoJTIuMmYgJSUsIGF2ICVsbHUpXG4iCittc2dzdHJbMV0gIiUxMmxsdSBhbnbDpG5kYSBibG9jayAoJTIuMmYgJSUsIGF2ICVsbHUpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmFkIGJsb2NrXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmFkIGJsb2Nrc1xuIgorbXNnc3RyWzBdICIlMTJ1IGTDpWxpZ3QgYmxvY2tcbiIKK21zZ3N0clsxXSAiJTEydSBkw6VsaWdhIGJsb2NrXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgc3RvciBmaWxcbiIKK21zZ3N0clsxXSAiJTEydSBzdG9yYSBmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSBub3JtYWwgZmlsXG4iCittc2dzdHJbMV0gIiIKKyJcbiIKKyIlMTJ1IG5vcm1hbGEgZmlsZXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBkaXJlY3RvcnlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBkaXJlY3Rvcmllc1xuIgorbXNnc3RyWzBdICIlMTJ1IGthdGFsb2dcbiIKK21zZ3N0clsxXSAiJTEydSBrYXRhbG9nZXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgdGVja2VuZW5oZXRzZmlsXG4iCittc2dzdHJbMV0gIiUxMnUgdGVja2VuZW5oZXRzZmlsZXJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IGJsb2NrZW5oZXRzZmlsXG4iCittc2dzdHJbMV0gIiUxMnUgYmxvY2tlbmhldHNmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpZm9cbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWZvc1xuIgorbXNnc3RyWzBdICIlMTJ1IGZpZm9cbiIKK21zZ3N0clsxXSAiJTEydSBmaWZvblxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIlMTJ1IGzDpG5rXG4iCittc2dzdHJbMV0gIiUxMnUgbMOkbmthclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHN5bWJvbGljIGxpbmsiCittc2dpZF9wbHVyYWwgIiUxMnUgc3ltYm9saWMgbGlua3MiCittc2dzdHJbMF0gIiUxMnUgc3ltYm9saXNrIGzDpG5rIgorbXNnc3RyWzFdICIlMTJ1IHN5bWJvbGlza2EgbMOkbmthciIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSBzbmFiYiBzeW1ib2xpc2sgbMOkbmspXG4iCittc2dzdHJbMV0gIiAoJXUgc25hYmJhIHN5bWJvbGlza2EgbMOkbmthcilcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUgdXR0YWcgKHNvY2tldClcbiIKK21zZ3N0clsxXSAiJTEydSB1dHRhZyAoc29ja2V0cylcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSBmaWxcbiIKK21zZ3N0clsxXSAiJTEydSBmaWxlclxuIgorCisjOiBlMmZzY2svdW5peC5jOjIzNSBtaXNjL2JhZGJsb2Nrcy5jOjk5MyBtaXNjL3R1bmUyZnMuYzoyODc4IG1pc2MvdXRpbC5jOjEyNgorIzogcmVzaXplL21haW4uYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAibsOkciBkZXQgYXZnam9yZGVzIG9tICVzIMOkciBtb250ZXJhdC4iCisKKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICJWYXJuaW5nISAgJXMgw6RyIG1vbnRlcmF0LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJWYXJuaW5nISAgJXMgYW52w6RuZHMuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIMOkciBtb250ZXJhdC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyBhbnbDpG5kcy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkthbiBpbnRlIGZvcnRzw6R0dGEsIGF2YnJ5dGVyLlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3MQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIlZBUk5JTkchISEgIEZpbHN5c3RlbWV0IMOkciBtb250ZXJhdC4gIE9tIGR1IGZvcnRzw6R0dGVyICoqKktPTU1FUioqKlxuIgorImR1IGF0dCBvcnNha2EgKioqQUxMVkFSTElHKioqIHNrYWRhIHDDpSBmaWxzeXN0ZW1ldC5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIlZpbGwgZHUgdmVya2xpZ2VuIGZvcnRzw6R0dGEiCisKKyM6IGUyZnNjay91bml4LmM6Mjc4Cittc2dpZCAiY2hlY2sgYWJvcnRlZC5cbiIKK21zZ3N0ciAia29udHJvbGwgYXZicnV0ZW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MzcxCittc2dpZCAiIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMiCittc2dzdHIgIiBpbm5laMOlbGxlciBldHQgZmlsc3lzdGVtIG1lZCBmZWwiCisKKyM6IGUyZnNjay91bml4LmM6MzczCittc2dpZCAiIHdhcyBub3QgY2xlYW5seSB1bm1vdW50ZWQiCittc2dzdHIgIiB2YXIgaW50ZSBmbMOkY2tmcml0dCBhdm1vbnRlcmF0IgorCisjOiBlMmZzY2svdW5peC5jOjM3NQorbXNnaWQgIiBwcmltYXJ5IHN1cGVyYmxvY2sgZmVhdHVyZXMgZGlmZmVyZW50IGZyb20gYmFja3VwIgorbXNnc3RyICIgZGV0IHByaW3DpHJhIHN1cGVyYmxvY2tldHMgZWdlbnNrYXBlciBza2lsamVyIGZyw6VuIHJlc2VydmVucyIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgaGFyIG1vbnRlcmF0cyAldSBnw6VuZ2VyIHV0YW4gYXR0IGtvbnRyb2xsZXJhcyIKKworIzogZTJmc2NrL3VuaXguYzozODYKK21zZ2lkICIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIKK21zZ3N0ciAiIGhhciB0aWRwdW5rdGVuIGbDtnIgc2VuYXN0ZSBmaWxzeXN0ZW1za29udHJvbGwgaSBmcmFtdGlkZW4iCisKKyM6IGUyZnNjay91bml4LmM6MzkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiBoYXMgZ29uZSAldSBkYXlzIHdpdGhvdXQgYmVpbmcgY2hlY2tlZCIKK21zZ3N0ciAiIGhhciBpbnRlIGtvbnRyb2xsZXJhdHMgcMOlICV1IGRhZ2FyIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIGtvbnRyb2xsIGZyYW10dmluZ2FkLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjQzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogcmVudCwgJXUvJXUgZmlsZXIsICVsbHUvJWxsdSBibG9jayIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIChrb250cm9sbCBzZW5hcmVsYWdkOyBww6UgYmF0dGVyaSkiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChrb250cm9sbGVyYSBlZnRlciBuw6RzdGEgbW9udGVyaW5nKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiIChrb250cm9sbGVyYSBvbSAlbGQgbW9udGVyaW5nYXIpIgorCisjOiBlMmZzY2svdW5peC5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFUlJPUjogQ291bGRuJ3Qgb3BlbiAvZGV2L251bGwgKCVzKVxuIgorbXNnc3RyICJGRUw6IEt1bmRlIGludGUgw7ZwcG5hIC9kZXYvbnVsbCAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJPZ2lsdGlnIEVBLXZlcnNpb24uXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCittc2dpZCAiSW52YWxpZCByZWFkYWhlYWQgYnVmZmVyIHNpemUuXG4iCittc2dzdHIgIk9naWx0aWcgYnVmZmVydHN0b3JsZWsgZsO2ciBmw7ZyaGFuZHNsw6RzbmluZy5cbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgIk9rw6RuZCB1dMO2a2FkIGZsYWdnYTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJTeW50YXhmZWwgaSBlMmZzY2s6cyBrb25maWd1cmF0aW9uc2ZpbCAoJXMsIHJhZCBuciAlZClcbiIKKyJcdCVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHZhbGlkYXRpbmcgZmlsZSBkZXNjcmlwdG9yICVkOiAlc1xuIgorbXNnc3RyICJGZWwgdmlkIHZhbGlkZXJpbmcgYXYgZmlsaWRlbnRpZmllcmFyZSAlZDogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4MjkKK21zZ2lkICJJbnZhbGlkIGNvbXBsZXRpb24gaW5mb3JtYXRpb24gZmlsZSBkZXNjcmlwdG9yIgorbXNnc3RyICJPZ2lsdGlnIGZpbGlkZW50aWZpZXJhcmUgZsO2ciBmw7ZybG9wcHNpbmZvcm1hdGlvbiIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKK21zZ2lkICJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iCittc2dzdHIgIkVuZGFzdCBlbiBhdiBmbGFnZ29ybmEgLXAvLWEsIC1uIGVsbGVyIC15IGthbiBhbmdlcy4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJGbGFnZ2FuIC10IHN0w7ZkanMgaW50ZSBpIGRlbm5hIHZlcnNpb24gYXYgZTJmc2NrLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjg5NiBlMmZzY2svdW5peC5jOjk3MyBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjMzMAorIzogbWlzYy90dW5lMmZzLmM6MTU5OCBtaXNjL3R1bmUyZnMuYzoxODkzIG1pc2MvdHVuZTJmcy5jOjE5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5hYmxlIHRvIHJlc29sdmUgJyVzJyIKK21zZ3N0ciAiS2FuIGludGUgaGl0dGEg4oCdJXPigJ0iCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJGbGFnZ29ybmEgLW4gb2NoIC1EIMOkciBpbmtvbXBhdGlibGEuIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiRmxhZ2dvcm5hIC1uIG9jaCAtYyDDpHIgaW5rb21wYXRpYmxhLiIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkZsYWdnb3JuYSAtbiBvY2ggLWwvLUwgw6RyIGlua29tcGF0aWJsYS4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkZsYWdnb3JuYSAtRCBvY2ggLUUgZml4ZXNfb25seSDDpHIgaW5rb21wYXRpYmxhLiIKKworIzogZTJmc2NrL3VuaXguYzo5OTIKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiRmxhZ2dvcm5hIC1FIGJtYXAyZXh0ZW50IG9jaCBmaXhlc19vbmx5IMOkciBpbmtvbXBhdGlibGEuIgorCisjOiBlMmZzY2svdW5peC5jOjEwNDYKK21zZ2lkICJUaGUgLWMgYW5kIHRoZSAtbC8tTCBvcHRpb25zIG1heSBub3QgYmUgYm90aCB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4iCittc2dzdHIgIkZsYWdnb3JuYSAtYyBvY2ggLWwvLUwga2FuIGludGUgYsOlZGEgYW52w6RuZGFzIHDDpSBzYW1tYSBnw6VuZy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisiRTJGU0NLX0pCRF9ERUJVRyDigJ0lc+KAnSDDpHIgaW50ZSBldHQgaGVsdGFsXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTEwMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSW52YWxpZCBub24tbnVtZXJpYyBhcmd1bWVudCB0byAtJWMgKFwiJXNcIilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIk9naWx0aWd0IGlja2VudW1lcmlza3QgYXJndW1lbnQgdGlsbCAtJWMgKOKAnSVz4oCdKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyJNTVAtaW50ZXJ2YWxsIMOkciAldSBzZWt1bmRlciBvY2ggZGVuIHRvdGFsYSB2w6RudGV0aWRlbiDDpHIgJXUgc2VrdW5kZXIuICBWYXIgIgorImdvZCBkcsO2aiAuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAidmlkIHVwcHPDpHR0bmluZyBhdiBNTVAtYmxvY2siCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisiT20gZHUgw6RyIHPDpGtlciBww6UgYXR0IGZpbHN5c3RlbWV0IGludGUgYW52w6RuZHMgcMOlIG7DpWdvbiBub2QsIGvDtnI6XG4iCisi4oCddHVuZTJmcy1mLUUgY2xlYXJfbW1wIHtlbmhldH3igJ1cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2siCittc2dzdHIgInZpZCBsw6RzbmluZyBhdiBNTVAtYmxvY2siCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlNrcml2ZXIgw7Z2ZXIgZXhpc3RlcmFuZGUgZmlsc3lzdGVtLCBkZXR0YSBrYW4gZ8O2cmFzIG9nam9ydCBtZWQga29tbWFuZG90OlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjkzIG1pc2MvZTJ1bmRvLmM6MjY0IG1pc2MvbWtlMmZzLmM6MjU4MSBtaXNjL3R1bmUyZnMuYzoyNjQ0CisjOiByZXNpemUvbWFpbi5jOjIyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IHRhIGJvcnQgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgInZpZCBmw7Zyc8O2ayBhdHQgc2thcGEgZW4gZ8O2ci1vZ2pvcnQtZmlsXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICJGZWw6IGV4dDJmcy1iaWJsaW90ZWtzdmVyc2lvbiBpbmFrdHVlbGwhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM3MAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBpbml0aWFsaXplIHByb2dyYW0iCittc2dzdHIgInZpZCBmw7Zyc8O2ayBhdHQgaW5pdGllcmEgcHJvZ3JhbSIKKworIzogZTJmc2NrL3VuaXguYzoxMzkzCisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXMsICVzXG4iCittc2dzdHIgIlx0QW52w6RuZGVyICVzLCAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE0MDUKK21zZ2lkICJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIgorbXNnc3RyICJiZWjDtnZlciB0ZXJtaW5hbCBmw7ZyIGludGVyYWt0aXZhIHJlcGFyYXRpb25lciIKKworIzogZTJmc2NrL3VuaXguYzoxNDY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLlxuIgorbXNnc3RyICIlczogJXMgZsO2cnPDtmtlciBtZWQgcmVzZXJ2YmxvY2sgLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OAorbXNnaWQgIlN1cGVyYmxvY2sgaW52YWxpZCwiCittc2dzdHIgIlN1cGVyYmxvY2tldCDDpHIgb2dpbHRpZ3QsIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAiR3J1cHBiZXNrcml2YXJuYSBzZXIgdHJhc2lnYSB1dCAuLi4iCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyBuw6RyIHJlc2VydmJsb2NrZW4gYW52w6RuZGVzIgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGdvaW5nIGJhY2sgdG8gb3JpZ2luYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICIlczogZ8OlciB0aWxsYmFrYSB0aWxsIG9yaWdpbmFsc3VwZXJibG9ja1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTIKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgYXBwYXJlbnRseSB0b28gaGlnaCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKKyIoT3IgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayBpcyBjb3JydXB0KVxuIgorIlxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtc3JldmlzaW9uZW4gw6RyIHVwcGVuYmFybGlnZW4gZsO2ciBow7ZnIGbDtnIgZGVubmEgdmVyc2lvbiBhdiBlMmZzY2suXG4iCisiKEVsbGVyIHPDpSDDpHIgZmlsc3lzdGVtZXRzIHN1cGVyYmxvY2sgdHJhc2lndClcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiS2FuIGRldHRhIHZhcmEgZW4gbm9sbMOkbmdkc3BhcnRpdGlvbj9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIKK21zZ3N0ciAiRHUgbcOlc3RlIGhhICVzLcOldGtvbXN0IHRpbGwgZmlsc3lzdGVtZXQgZWxsZXIgdmFyYSByb290XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiS2Fuc2tlIGludGUgZXhpc3RlcmFyIGVsbGVyIHbDpHhsaW5nc2VuaGV0P1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjkKK21zZ2lkICJGaWxlc3lzdGVtIG1vdW50ZWQgb3Igb3BlbmVkIGV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIKK21zZ3N0ciAiRmlsc3lzdGVtZXQgbW9udGVyYXQgZWxsZXIgw7ZwcG5hdCBleGtsdXNpdnQgYXYgZXR0IGFubmF0IHByb2dyYW0/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIkthbnNrZSBlbiBlbmhldCBzb20gaW50ZSBleGlzdGVyYXI/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzNgorbXNnaWQgIiIKKyJEaXNrIHdyaXRlLXByb3RlY3RlZDsgdXNlIHRoZSAtbiBvcHRpb24gdG8gZG8gYSByZWFkLW9ubHlcbiIKKyJjaGVjayBvZiB0aGUgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiU2tyaXZza3lkZGFkIGRpc2s7IGFudsOkbmQgZmxhZ2dhbiAtbiBmw7ZyIGF0dCBnw7ZyYSBlbiBsw6RzbmluZ3Nrb250cm9sbFxuIgorImF2IGVuaGV0ZW4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAiSMOkbXRhIGVuIG55YXJlIHZlcnNpb24gYXYgZTJmc2NrISIKKworIzogZTJmc2NrL3VuaXguYzoxNjQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICJ2aWQga29udHJvbGwgYXYgam91cm5hbCBmw7ZyICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICJLYW4gaW50ZSBmb3J0c8OkdHRhIG1lZCBmaWxzeXN0ZW1za29udHJvbGxlbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIlZhcm5pbmc6IGhvcHBhciDDtnZlciBqb3VybmFsw6V0ZXJow6RtdG5pbmcgZWZ0ZXJzb20gZW4gbMOkc25pbmdza29udHJvbGwgYXYgIgorImZpbHN5c3RlbSBnw7Zycy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjc0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBzZXQgc3VwZXJibG9jayBmbGFncyBvbiAlc1xuIgorbXNnc3RyICJrYW4gaW50ZSBzw6R0dGEgc3VwZXJibG9ja3NmbGFnZ29yIHDDpSAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjaGVja3N1bSBlcnJvciBmb3VuZCBpbiAlc1xuIgorbXNnc3RyICJGZWwgaSBqb3VybmFsa29udHJvbGxzdW1tYW4gZnVubmV0IGkgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIkpvdXJuYWxlbiB0cmFzaWcgaSAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICJ2aWQgw6V0ZXJow6RtdG5pbmcgYXYgam91cm5hbGVuIGbDtnIgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiVzIGhhciBmdW5rdGlvbmVyIHNvbSBpbnRlIHN0w7ZkczoiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyB2aWQgbMOkc25pbmcgYXYgaW5vZCBmw7ZyIGTDpWxpZ2EgYmxvY2tcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzcyCittc2dpZCAiVGhpcyBkb2Vzbid0IGJvZGUgd2VsbCwgYnV0IHdlJ2xsIHRyeSB0byBnbyBvbi4uLlxuIgorbXNnc3RyICJEZXR0YSBiw6VkYXIgaW50ZSBnb3R0LCBtZW4gdmkgc2thbGwgZsO2cnPDtmthIGF0dCBmb3J0c8OkdHRhIC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICJTa2FwYXIgam91cm5hbCAoJWQgYmxvY2spOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIgS2xhci5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIGpvdXJuYWxlbiBoYXIgZ2VuZXJlcmF0cyBvbSAqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM2Cittc2dpZCAiYWJvcnRlZCIKK21zZ3N0ciAiYXZicnV0ZW4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogZTJmc2NrIGNhbmNlbGVkLlxuIgorbXNnc3RyICIlczogZTJmc2NrIGluc3TDpGxsZC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgIlN0YXJ0YXIgb20gZTJmc2NrIGZyw6VuIGLDtnJqYW4gLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTg2OQorbXNnaWQgIndoaWxlIHJlc2V0dGluZyBjb250ZXh0IgorbXNnc3RyICJ2aWQgw6V0ZXJzdMOkbGxuaW5nIGF2IG9tZ2l2bmluZyIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxTWVNURU1FVCBNT0RJRklFUkFERVMgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVzOiAqKioqKiBTVEFSVEEgT00gU1lTVEVNRVQgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBWQVJOSU5HOiBGaWxzeXN0ZW1ldCBoYXIgZm9ydGZhcmFuZGUgZmVsICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAieVlqSiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAibk4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgImFBIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NworbXNnaWQgIiAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSAiCittc2dzdHIgIiAo4oCdYeKAnSAgYWt0aXZlcmFyIOKAnWph4oCdIGbDtnIgYWxsYSkgIgorCisjOiBlMmZzY2svdXRpbC5jOjIxMworbXNnaWQgIjx5PiIKK21zZ3N0ciAiPGo+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNQorbXNnaWQgIjxuPiIKK21zZ3N0ciAiPG4+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNworbXNnaWQgIiAoeS9uKSIKK21zZ3N0ciAiIChqL24pIgorCisjOiBlMmZzY2svdXRpbC5jOjI0MAorbXNnaWQgImNhbmNlbGxlZCFcbiIKK21zZ3N0ciAiaW5zdMOkbGxkIVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAiamEgZsO2ciBhbGxhXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgImphXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAibmVqXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBuZWpcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBqYVxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgInllcyIKK21zZ3N0ciAiamEiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgIm5laiIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBvZ2lsdGlnYSBiaXRrYXJ0ZWJsb2NrIGbDtnIgJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzA3Cittc2dpZCAicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIKK21zZ3N0ciAibMOkc2VyIGlub2QtIG9jaCBibG9ja2JpdGthcnRvciIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAidmlkIHVwcHJlcGF0IGbDtnJzw7ZrIGF0dCBsw6RzYSBiaXRrYXJ0YSBmw7ZyICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgInNrcml2ZXIgYmxvY2stIG9jaCBpbm9kc2JpdGthcnRvciIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAidmlkIG9tc2tyaXZuaW5nIGF2IGJsb2NrLSBvY2ggaW5vZHNiaXRrYXJ0b3IgZsO2ciAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIiVzOiBPVsOETlRBRCBJTktPTlNFS1ZFTlM7IEvDllIgZnNjayBNQU5VRUxMVC5cbiIKKyJcdChkLnYucy4sIHV0YW4gZmxhZ2dvcm5hIC1hIGVsbGVyIC1wKVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIkFudsOkbnQgbWlubmU6ICVsdSBrLyVsdSBrICglbHUgay8lbHUgayksICIKKworIzogZTJmc2NrL3V0aWwuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdSwgIgorbXNnc3RyICJBbnbDpG50IG1pbm5lOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAidGlkOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgImbDtnJmbHV0ZW4gdGlkOiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAibsOkciBpbm9kICVsdSBpICVzIGzDpHN0ZXMiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgJWx1IGluICVzIgorbXNnc3RyICJuw6RyIGlub2QgJWx1IGkgJXMgc2tyZXZzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIk9Ww4ROVEFEIElOS09OU0lTVEVOUzogZmlsc3lzdGVtZXQgbW9kaWZpZXJhcyBtZWRhbiBmc2NrIGvDtnJzLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAia2xhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiQW52w6RuZG5pbmc6ICVzIFstYiBibG9ja3N0b3JsZWtdIFstaSBpbmZpbF0gWy1vIHV0ZmlsXSBbLXN2d25mXVxuIgorIiAgICAgICAgICAgIFstYyBibG9ja1/DpXRfZ8Olbmdlbl0gWy1kIGbDtnJkcsO2am5pbmdzZmFrdG9yIG1lbGxhbiBsw6RzbmluZ2FyXVxuIgorIiAgICAgICAgICAgIFstZSBtYXhfZMOlbGlnYV9ibG9ja10gWy1wIGFudGFsX3Bhc3NdXG4iCisiICAgICAgICAgICAgWy10IHRlc3Rtw7Zuc3RlciBbLXQgdGVzdG3Dtm5zdGVyIFsuLi5dXV1cbiIKKyIgICAgICAgICAgICBlbmhldCBbc2lzdGFfYmxvY2sgW2bDtnJzdGFfYmxvY2tdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IEZsYWdnb3JuYSAtbiBvY2ggLXcgw6RyIMO2bXNlc2lkaWd0IHV0ZXNsdXRhbmRlLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIlNi4yZiAlJSBrbGFyLCAlcyBoYXIgZ8OldHQuICglZC8lZC8lZCBmZWwpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjMyOAorbXNnaWQgIlRlc3Rpbmcgd2l0aCByYW5kb20gcGF0dGVybjogIgorbXNnc3RyICJUZXN0YXIgbWVkIHNsdW1wbcO2bnN0ZXI6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiVGVzdGFyIG1lZCBtw7Zuc3RlciAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAidmlkIHPDtmtuaW5nIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjM4OQorIywgYy1mb3JtYXQKK21zZ2lkICJXZWlyZCB2YWx1ZSAoJWxkKSBpbiBkb19yZWFkXG4iCittc2dzdHIgIlVuZGVybGlndCB2w6RyZGUgKCVsZCkgaSBkb19yZWFkXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAidmlkIGV4dDJmc19zeW5jX2RldmljZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0OTYgbWlzYy9iYWRibG9ja3MuYzo3NTgKK21zZ2lkICJ3aGlsZSBiZWdpbm5pbmcgYmFkIGJsb2NrIGxpc3QgaXRlcmF0aW9uIgorbXNnc3RyICJ2aWQgYsO2cmphbiBhdiBpdGVyYXRpb24gw7Z2ZXIgbGlzdGEgYXYgZMOlbGlnYSBibG9jayIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgInZpZCBhbGxva2VyaW5nIGF2IGJ1ZmZlcnRhciIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiS29udHJvbGxlcmFyIGJsb2NrICVsdSB0aWxsICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUyMAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtb25seSBtb2RlXG4iCittc2dzdHIgIkxldGFyIGVmdGVyIGTDpWxpZ2EgYmxvY2sgaSBza3JpdnNreWRkYXQgbMOkZ2VcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjkKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyAocmVhZC1vbmx5IHRlc3QpOiAiCittc2dzdHIgIkxldGFyIGVmdGVyIGTDpWxpZ2EgYmxvY2sgKHNrcml2c2t5ZGRhZCB0ZXN0KTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIkbDtnIgbcOlbmdhIGTDpWxpZ2EgYmxvY2ssIGF2YnJ5dGVyIHRlc3RldFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJMZXRhciBlZnRlciBkw6VsaWdhIGJsb2NrIGkgbMOkcy1za3Jpdi1sw6RnZVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYyMCBtaXNjL2JhZGJsb2Nrcy5jOjc4MgorIywgYy1mb3JtYXQKK21zZ2lkICJGcm9tIGJsb2NrICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiRnLDpW4gYmxvY2sgJWx1IHRpbGwgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIkzDpHNlciBvY2ggasOkbWbDtnI6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3ODEKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiBub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIkxldGFyIGVmdGVyIGTDpWxpZ2EgYmxvY2sgaSBpY2tlZsO2cnN0w7ZyYW5kZSBsw6RzLXNrcml2LWzDpGdlXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIkxldGFyIGVmdGVyIGTDpWxpZ2EgYmxvY2sgKGlja2Vmw7Zyc3TDtnJhbmRlIGzDpHMtc2tyaXYtdGVzdClcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIkF2YnJvdHQgZsOlbmdhdCwgcmVuc2FyIHVwcFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgInZpZCB0ZXN0ZGF0YXNrcml2bmluZywgYmxvY2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyDDpHIgbW9udGVyYXQsICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgImJhZGJsb2NrcyBmcmFtdHZpbmdhdCDDpG5kw6UuICBIb3BwYXMgL2V0Yy9tdGFiIMOkciBmZWxha3RpZy5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICJkZXQgw6RyIGludGUgc8Oka2VydCBhdHQga8O2cmEgYmFkYmxvY2tzIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMgYW52w6RuZHMgdXBwZW5iYXJsaWdlbiBhdiBzeXN0ZW1ldDsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiYmFkYmxvY2tzIGZyYW10dmluZ2F0IMOkbmTDpS5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAib2dpbHRpZyAlcyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIkbDtnIgc3RvcnQgbWF4aW1hbHQgYW50YWwgZMOlbGlnYSBibG9jayAldSDigJQgbWF4aW11bSDDpHIgJXUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE1NAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRlc3RfcGF0dGVybiAtICVzIgorbXNnc3RyICJrdW5kZSBpbnRlIGFsbG9rZXJhIG1pbm5lIGbDtnIgdGVzdG3Dtm5zdGVyIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJIw7Znc3QgZXR0IHRlc3Rtw7Zuc3RlciBmw6VyIGFuZ2VzIGkgc2tyaXZza3lkZGF0IGzDpGdlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJTbHVtcHZpcyB0ZXN0bcO2bnN0ZXIgw6RyIGludGUgdGlsbMOldGV0IGkgc2tyaXZza3lkZGF0IGzDpGdlIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorIkt1bmRlIGludGUgYXZnw7ZyYSBlbmhldHNzdG9ybGVrOyBkdSBtw6VzdGUgYW5nZVxuIgorInN0b3JsZWtlbiBtYW51ZWxsdFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGF2Z8O2cmEgZW5oZXRzc3RvcmxlayIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjE1Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAic2lzdGEgYmxvY2siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIyMQorbXNnaWQgImZpcnN0IGJsb2NrIgorbXNnc3RyICJmw7Zyc3RhIGJsb2NrIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgImZlbGFrdGlndCBzdGFydGJsb2NrICglbGx1KTogbcOlc3RlIHZhcmEgbWluZHJlIMOkbiAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAiZmVsYWt0aWd0IHN0YXJ0YmxvY2sgKCVsbHUpOiBtw6VzdGUgdmFyYSBldHQgMzItYml0YXJzIHbDpHJkZSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAibsOkciBsaXN0YSDDtnZlciBkw6VsaWdhIGJsb2NrIGkgbWlubmV0IHNrYXBhZGVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiaW5kYXRhZmlsIOKAlCBmZWxha3RpZ3QgZm9ybWF0IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAibsOkciB0aWxsw6RnZyBnam9yZGVzIHRpbGwgbGlzdGEgaSBtaW5uZXQgw7Z2ZXIgZMOlbGlnYSBibG9jayBnam9yZGVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgIlBhc3MgYXZzbHV0YXQsICV1IGTDpWxpZ2EgYmxvY2sgaGl0dGFkZS4gKCVkLyVkLyVkIGZlbClcbiIKKworIzogbWlzYy9jaGF0dHIuYzo4OQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYgdmVyc2lvbl0gZmlsZXMuLi5cbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVy4oCmXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAiZmVsYWt0aWd0IHByb2pla3QgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgImZlbGFrdGlnIHZlcnNpb24gLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCB0YSBzdGF0dXMgcMOlICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJ2aWQgbMOkc25pbmcgYXYgZmxhZ2dvciBww6UgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIkZsYWdnb3IgcMOlICVzIHNhdHRhIHNvbSAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgInZpZCBzw6R0dG5pbmcgYXYgZmxhZ2dvciBww6UgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJWZXJzaW9uIGF2ICVzIHNhdHQgc29tICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgInZpZCBzw6R0dG5pbmcgYXYgdmVyc2lvbiBww6UgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICJQcm9qZWt0ZXQgZsO2ciAlcyBzYXR0IHNvbSAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJuw6RyIHByb2pla3RldCBzYXR0ZXMgcMOlICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICJLdW5kZSBpbnRlIGFsbG9rZXJhIHPDtmt2w6Rnc3ZhcmlhYmVsIGkgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9IMOkciBpbmtvbXBhdGliZWx0IG1lZCAtIG9jaCArXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIk3DpXN0ZSBhbnbDpG5kYSDigJ0tduKAnSwgPSwgLSBlbGxlciArXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAibsOkciBpbm9kICV1IGzDpHN0ZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAidmlkIHV0dmlkZ25pbmcgYXYga2F0YWxvZ2VuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICJuw6RyIOKAnSVz4oCdIGzDpG5rYWRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICJuw6RyIGlub2QgJXUgc2tyZXZzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEzOSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE2MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJuw6RyIGF0dHJpYnV0ZW4gcMOlIOKAnSVz4oCdIGxpc3RhZGVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJuw6RyIGlub2QgJXUgw7ZwcG5hZGVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBtZW1vcnkiCittc2dzdHIgInZpZCBhbGxva2VyaW5nIGF2IG1pbm5lIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE3NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE5MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGF0dHJpYnV0ZSBcIiVzXCIgb2YgXCIlc1wiIgorbXNnc3RyICJuw6RyIGF0dHJpYnV0ZXQg4oCdJXPigJ0gcMOlIOKAnSVz4oCdIGzDpHN0ZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAibsOkciBhdHRyaWJ1dGV0IOKAnSVz4oCdIHNrcmV2cyB0aWxsIGlub2QgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgIm7DpHIgaW5vZCAldSBzdMOkbmdkZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJuw6RyIGlub2Qg4oCdJXPigJ0gYWxsb2tlcmFkZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGlub2RlIFwiJXNcIiIKK21zZ3N0ciAibsOkciBpbm9kIOKAnSVz4oCdIHNrYXBhZGVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAibsOkciBzeW1sw6RuayDigJ0lc+KAnSBza2FwYWRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgIm7DpHIg4oCdJXPigJ0gc2xvZ3MgdXBwIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJuw6RyIGthdGFsb2dlbiDigJ0lc+KAnSBza2FwYWRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAibsOkciDigJ0lc+KAnSDDtnBwbmFkZXMgZsO2ciBhdHQga29waWVyYXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAibsOkciBhcmJldHNrYXRhbG9nIGJ5dHRlcyB0aWxsIOKAnSVz4oCdIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwOAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgIm7DpHIga2F0YWxvZ2VuIOKAnSVz4oCdIMO2cHBuYWRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbHN0YXQgXCIlc1wiIgorbXNnc3RyICJ2aWQgbHN0YXQg4oCdJXPigJ0iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzUxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHNwZWNpYWwgZmlsZSBcIiVzXCIiCittc2dzdHIgIm7DpHIgc3BlY2lhbGZpbGVuIOKAnSVz4oCdIHNrYXBhZGVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorbXNnaWQgIm1hbGxvYyBmYWlsZWQiCittc2dzdHIgIm1hbGxvYyBtaXNzbHlja2FkZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGzDpHNhIGzDpG5rZW4g4oCdJXPigJ0iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgInN5bWzDpG5rIMO2a2FkZSBpIHN0b3JsZWsgbWVsbGFuIGxzdGF0KCkgb2NoIHJlYWRsaW5rKCkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAibsOkciBzeW1sw6Rua2VuIOKAnSVz4oCdIHNrcmV2cyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAibsOkciBmaWxlbiDigJ0lc+KAnSBza3JldnMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJuw6RyIGthdGFsb2dlbiDigJ0lc+KAnSBza2FwYWRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiCittc2dzdHIgInZpZCBieXRlIGF2IGthdGFsb2ciCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiaWdub3JlcmFyIHBvc3RlbiDigJ0lc+KAnSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICJuw6RyIGlub2RlbiBmw7ZyIOKAnSVz4oCdIHNhdHRlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAibsOkciB4YXR0cnMgZsO2ciDigJ0lc+KAnSBzYXR0ZXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgIm7DpHIgaW5vZHNkYXRhIHNwYXJhZGVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkFudsOkbmRuaW5nOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBlbmhldFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJibG9jayIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE2OAorbXNnaWQgImNsdXN0ZXJzIgorbXNnc3RyICJrbHVzdGVyIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIkdydXBwICVsdTogKEJsb2NrICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiBjc3VtIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAoMHglMDR4IEbDllJWw4ROVEFERVMpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXNzdXBlcmJsb2NrIHZpZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJQcmltw6RydCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIlJlc2VydiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIsIEdydXBwYmVza3JpdmFyZSB2aWQgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIFJlc2VydmVyYWRlIEdEVC1ibG9jayB2aWQgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQ5Cittc2dpZCAiIEdyb3VwIGRlc2NyaXB0b3IgYXQgIgorbXNnc3RyICIgR3J1cHBiZXNrcml2YXJlIHZpZCAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgQmxvY2tiaXRrYXJ0YSB2aWQgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYwIG1pc2MvZHVtcGUyZnMuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCBjc3VtIDB4JTA4eCIKK21zZ3N0ciAiLCBjc3VtIDB4JTA4eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MworbXNnaWQgIiwiCittc2dzdHIgIiwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorIlxuIgorIiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiIElub2RzYml0a2FydGEgdmlkICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgSW5vZHN0YWJlbGwgdmlkICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiICAldSBmcmVlICVzLCAldSBmcmVlIGlub2RlcywgJXUgZGlyZWN0b3JpZXMlcyIKK21zZ3N0ciAiIgorIlxuIgorIiAgJXUgZnJpdHQgJXMsICV1IGZyaWEgaW5vZGVyLCAldSBrYXRhbG9nZXIlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAiLCAldSBvYW52w6RuZGEgaW5vZGVyXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODkKK21zZ2lkICIgIEZyZWUgYmxvY2tzOiAiCittc2dzdHIgIiAgRnJpYSBibG9jazogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgIEZyaWEgaW5vZGVyOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAidmlkIHV0c2tyaWZ0IGF2IGxpc3RhIMO2dmVyIGTDpWxpZ2EgYmxvY2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIkTDpWxpZ2EgYmxvY2s6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAidmlkIGzDpHNuaW5nIGF2IGpvdXJuYWxpbm9kIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzkxCittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJuw6RyIGpvdXJuYWxpbm9kZW4gw7ZwcG5hZGVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzk3Cittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyIGJsb2NrIgorbXNnc3RyICJuw6RyIGpvdXJuYWxzdXBlcmJsb2NrZXQgbMOkc3RlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxvY2tldHMgbWFnaXNrYSB0YWwgZmVsYWt0aWd0IVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICJKb3VybmFsZnVua3Rpb25lcjogICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDIwCittc2dpZCAiSm91cm5hbCBzaXplOiAgICAgICAgICAgICAiCittc2dzdHIgIkpvdXJuYWxzdG9ybGVrOiAgICAgICAgICAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCittc2dzdHIgIiIKKyJKb3VybmFsbMOkbmdkOiAgICAgICAgICAgICAldVxuIgorIkpvdXJuYWxzZWt2ZW5zOiAgICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbHN0YXJ0OiAgICAgICAgICAgICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDM4IG1pc2MvZHVtcGUyZnMuYzo0ODAKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgIGNyYzMyXG4iCittc2dzdHIgIkpvdXJuYWxrb250cm9sbHN1bW1ldHlwOiAgY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorIkpvdXJuYWxrb250cm9sbHN1bW1ldHlwOiAgJXNcbiIKKyJKb3VybmFsa29udHJvbGxzdW1tYTogICAgIDB4JTA4eFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZXJybm86ICAgICAgICAgICAgJWRcbiIKK21zZ3N0ciAiSm91cm5hbGZlbG51bW1lcjogICAgICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ2aWQgbMOkc25pbmcgYXYgam91cm5hbHN1cGVyYmxvY2siCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIGpvdXJuYWxzdXBlcmJsb2NrZXRzIG1hZ2lza2EgdGFsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgICV1XG4iCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgZmlyc3QgYmxvY2s6ICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIG51bWJlciBvZiB1c2VyczogICV1XG4iCittc2dzdHIgIiIKKyJcbiIKKyJKb3VybmFsYmxvY2tzdG9ybGVrOiAgICAgICV1XG4iCisiSm91cm5hbGzDpG5nZDogICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsZW5zIGbDtnJzdGEgYmxvY2s6ICAldVxuIgorIkpvdXJuYWxzZWt2ZW5zOiAgICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbHN0YXJ0OiAgICAgICAgICAgICAldVxuIgorIkpvdXJuYWxlbnMgYW52w6RuZGFyYW50YWw6ICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICJKb3VybmFsYW52w6RuZGFyZTogICAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBtaW5uZSBmw7ZyIGF0dCB0b2xrYSBmbGFnZ29yIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk9naWx0aWcgc3VwZXJibG9ja3BhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk9naWx0aWcgYmxvY2tzdG9ybGVrc3BhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkZlbGFrdGlnYSB1dMO2a2FkZSBmbGFnZ29yIGFuZ2l2bmE6ICVzXG4iCisiXG4iCisiVXTDtmthZGUgZmxhZ2dvciBzZXBhcmVyYXMgbWVkIGtvbW1hbiwgb2NoIGthbiB0YSBldHQgYXJndW1lbnQgc29tIGF2ZGVsYXMgIgorIm1lZFxuIgorIlx0ZXR0IGxpa2hldHN0ZWNrZW4gKOKAnT3igJ0pLlxuIgorIlxuIgorIkdpbHRpZ2EgdXTDtmthZGUgZmxhZ2dvciDDpHI6XG4iCisiXHRzdXBlcmJsb2NrPTxzdXBlcmJsb2NrbnVtbWVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3N0b3JsZWs+XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2NDYgbWlzYy9ta2UyZnMuYzoxODE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0VXNpbmcgJXNcbiIKK21zZ3N0ciAiXHRBbnbDpG5kZXIgJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY4NgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGZpbGVzeXN0ZW0hICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBLb250cm9sbHN1bW1lZmVsIHVwcHTDpGNrdCBpIGZpbHN5c3RlbWV0ISAgS8O2ciBlMmZzY2sgbnUhXG4iCisiXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2OTEgbWlzYy9lMmltYWdlLmM6MTU4NiBtaXNjL3R1bmUyZnMuYzoyODA1CisjOiByZXNpemUvbWFpbi5jOjQxNQorbXNnaWQgIkNvdWxkbid0IGZpbmQgdmFsaWQgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJLdW5kZSBpbnRlIGhpdHRhIGdpbHRpZ3QgZmlsc3lzdGVtc3N1cGVyYmxvY2suXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MjYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBiaXRtYXBzISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiogS29udHJvbGxzdW1tZWZlbCB1cHB0w6Rja3QgaSBiaXRrYXJ0b3IhICBLw7ZyIGUyZnNjayBudSFcbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogJXM6IGZlbCB2aWQgbMOkc25pbmcgYXYgYml0a2FydG9yOiAlc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZW5oZXQgYXZiaWxkc2ZpbFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1JIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIiAgICAgICAgICAgICVzIC1JIGVuaGV0IGF2YmlsZHNmaWxcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyBrw6RsbGF2c3TDpW5kIF0gWyAtTyBtw6VsYXZzdMOlbmQgXSBrw6RsbC1mcyAiCisiWyBtw6VsLWZzIF1cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICJ2aWQgYWxsb2tlcmluZyBhdiBidWZmZXJ0IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIk7DpHIgYmxvY2sgJWxsdSBza3JldnNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHdyaXRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiZmVsIG7DpHIgYmxvY2sgJWxsdSBza3JldnMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiZmVsIGkgZ2VuZXJpY193cml0ZSgpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiRmVsOiBodXZ1ZHN0b3JsZWsgw6RyIHN0w7ZycmUgw6RuIHdydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBodXZ1ZGJ1ZmZlcnRcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJ2aWQgc2tyaXZuaW5nIGF2IHN1cGVyYmxvY2siCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI1NQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgInZpZCBza3Jpdm5pbmcgYXYgaW5vZHRhYmVsbCIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgInZpZCBza3Jpdm5pbmcgYXYgYmxvY2tiaXRrYXJ0YSIKKworIzogbWlzYy9lMmltYWdlLmM6MjcxCittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSBiaXRtYXAiCittc2dzdHIgInZpZCBza3Jpdm5pbmcgYXYgaW5vZGJpdGthcnRhIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJUcmFzaWd0IGthdGFsb2dibG9jayAlbGx1OiBmZWxha3RpZyByZWNfbGVuICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIlRyYXNpZ3Qga2F0YWxvZ2Jsb2NrICVsbHU6IGZlbGFrdGlnIG5hbWVfbGVuICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiVsbHUgLyAlbGx1IGJsb2NrICglZCAlJSkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAiS29waWVyYXIgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICJBdHQgc2x1dGEgbnUga29tbWVyIGbDtnJzdMO2cmEgZmlsc3lzdGVtZXQsIGF2YnJ5dCBpZ2VuIG9tIGR1IMOkciBzw6RrZXJcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIgJXMgw6V0ZXJzdMOlciBtZWQgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgImZlbCBuw6RyIGJsb2NrICVsbHUgbMOkc3RlcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAiS29waWVyYWRlICVsbHUgLyAlbGx1IGJsb2NrICglZCAlJSkgcMOlICVzICIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAibWVkICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzU4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAibsOkciBsMS10YWJlbGwgYWxsb2tlcmFkZXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgwMworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDIgY2FjaGUiCittc2dzdHIgIm7DpHIgbDItY2FjaGUgYWxsb2tlcmFkZXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgyNgorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluIHRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgZGF0YSAiCisid2lsbCBiZSBsb3N0IHNvIHRoZSBpbWFnZSBtYXkgbm90IGJlIHZhbGlkLlxuIgorbXNnc3RyICIiCisiVmFybmluZzogZGV0IGZpbm5zIGZvcnRmYXJhbmRlIHRhYmVsbGVyIGkgY2FjaGVuIG1lZGFuIGNhY2hlbiBza3JpdnMsIGRhdGEgIgorImtvbW1lciBnw6UgZsO2cmxvcmFkZSBzw6UgYXZiaWxkZW4ga29tbWVyIGthbnNrZSBpbnRlIHZhcmEga29ycmVrdC5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAibsOkciBleHQyX3Fjb3cyX2ltYWdlIGFsbG9rZXJhZGVzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgIm7DpHIgZXh0Ml9xY293Ml9pbWFnZSBpbml0aWVyYWRlcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTIxNCBtaXNjL2UyaW1hZ2UuYzoxMjMyCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlIHNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzIGNyZWF0ZWQhXG4iCittc2dzdHIgIiIKKyJQcm9ncmFtbWVyaW5nc2ZlbDogbXVsdGlwbGEgc2VrdmVudGllbGxhIHJlZmVyZW5zcsOka25hcmJsb2NrIHNrYXBhZGUhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyNzIKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAibsOkciBibG9ja2JpdGthcnRhIGFsbG9rZXJhZGVzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBzY3JhbWJsZSBibG9jayBiaXRtYXAiCittc2dzdHIgIm7DpHIgZsO2cnZyw6RuZ2QgYmxvY2tiaXRrYXJ0YSBhbGxva2VyYWRlcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTI4OAorbXNnaWQgIlNjYW5uaW5nIGlub2Rlcy4uLlxuIgorbXNnc3RyICJTw7ZrZXIgaWdlbm9tIGlub2RlciDigKZcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTMwMAorbXNnaWQgIkNhbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciIKK21zZ3N0ciAiS2FuIGludGUgYWxsb2tlcmEgZW4gYmxvY2tidWZmZXJ0IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzM5IG1pc2MvZTJpbWFnZS5jOjEzNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5vZGUgJXUiCittc2dzdHIgInZpZCBpdGVyYXRpb24gw7Z2ZXIgaW5vZCAldSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIlJhdy0gb2NoIHFjb3cyLWF2YmlsZGVyIGthbiBpbnRlIGluc3RhbGxlcmFzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDA3Cittc2dpZCAiZXJyb3IgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJmZWwgbsOkciBiaXRrYXJ0b3IgbMOkc3RlcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgIm7DpHIgZW5oZXRzZmlsIMO2cHBuYWRlcyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgIm7DpHIgYXZiaWxkc3RhYmVsbGVuIMOldGVyc3TDpGxsZGVzIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAiZmxhZ2dhbiAtYSBrYW4gZW5kYXN0IGFudsOkbmRhcyBtZWQgcmF3LSBlbGxlciBRQ09XMi1hdmJpbGRlci4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiQXZzdMOlbmQgw6RyIGVuZGFzdCB0aWxsw6V0bmEgbWVkIHJhdy1hdmJpbGRlci4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkZseXR0bmluZ3Nsw6RnZSDDpHIgZW5kYXN0IHRpbGzDpXRldCBtZWQgcmF3LWF2YmlsZGVyLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiRmx5dHRuaW5nc2zDpGdlIGJlaMO2dmVyIGzDpGdldCBhbGwgZGF0YS4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJrb250cm9sbGVyYXIgb20gbW9udGVyYWQiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NjAKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBlMmltYWdlIG9uIGEgUi9XIG1vdW50ZWQgZmlsZXN5c3RlbSBjYW4gcmVzdWx0IGluIGFuXG4iCisiaW5jb25zaXN0ZW50IGltYWdlIHdoaWNoIHdpbGwgbm90IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLlxuIgorIlVzZSAtZiBvcHRpb24gaWYgeW91IHJlYWxseSB3YW50IHRvIGRvIHRoYXQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdHQga8O2cmEgZTJpbWFnZSBww6UgZXR0IGZpbHN5c3RlbSBtb250ZXJhdCBiw6VkZSBmw7ZyIHNrcml2bmluZyBvY2ggbMOkc25pbmdcbiIKKyJrYW4gcmVzdWx0ZXJhIGkgZW4gaW5rb25zaXN0ZW50IGF2YmlsZCBzb20gaW50ZSBrb21tZXIgdmFyYSBhbnbDpG5kYmFyIGbDtnJcbiIKKyJmZWxzw7ZrbmluZ3PDpG5kYW3DpWwuICBBbnbDpG5kIGZsYWdnYW4gLWYgb20gZHUgdmVya2xpZ2VuIHZpbGwgZ8O2cmEgZGV0LlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIkVuIFFDT1cyLWF2YmlsZCBrYW4gaW50ZSBza3JpdmFzIHRpbGwgc3RhbmRhcmQgdXQhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIkthbiBpbnRlIHRhIHN0YXR1cyBww6UgdXRkYXRhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBjb21wcmVzc2VkXG4iCittc2dzdHIgIkF2YmlsZGVuICglcykgw6RyIGtvbXByaW1lcmFkXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiQXZiaWxkZW4gKCVzKSDDpHIga3J5cHRlcmFkXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGtvbnZlcnRlcmEgZW4gcWNvdzItYmlsZCAoJXMpIHRpbGwgZW4gcsOlIGJpbGQgKCVzKSIKKworIzogbWlzYy9lMmltYWdlLmM6MTY0NQorbXNnaWQgIlRoZSAtYyBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiRmxhZ2dhbiAtYyBzdMO2ZGpzIGVuZGFzdCBpIHJhdy1sw6RnZVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjUwCittc2dpZCAiVGhlIC1jIG9wdGlvbiBub3Qgc3VwcG9ydGVkIHdoZW4gd3JpdGluZyB0byBzdGRvdXRcbiIKK21zZ3N0ciAiRmxhZ2dhbiAtYyBzdMO2ZGpzIGludGUgdmlkIHNrcml2bmluZyB0aWxsIHN0YW5kYXJkIHV0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NTcKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAibsOkciBjaGVja19idWYgYWxsb2tlcmFkZXMiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIkZsYWdnYW4gLXAgc3TDtmRqcyBlbmRhc3QgaSByYXctbMOkZ2VcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY3MworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBibG9ja3MgYWxyZWFkeSBjb250YWluZWQgdGhlIGRhdGEgdG8gYmUgY29waWVkXG4iCittc2dzdHIgIiVkIGJsb2NrIGlubmVow7ZsbCByZWRhbiBkZSBkYXRhIHNvbSBza3VsbGUga29waWVyYXNcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgIkFudsOkbmRuaW5nOiAlcyAtciBlbmhldFxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVsOiBrYW4gaW50ZSDDtnBwbmEgJXNcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiBrYW4gaW50ZSBzw7ZrYSB0aWxsIHN1cGVyYmxvY2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IGZlbCB2aWQgbMOkc25pbmcgYXYgc3VwZXJibG9ja1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGludGUgZXR0IGV4dDItZmlsc3lzdGVtXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIlZhcm5pbmc6IGV0aWtldHQgZsO2ciBsw6VuZywgYXZrb3J0YXIuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwMAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrIGFnYWluXG4iCittc2dzdHIgImUybGFiZWw6IGthbiBpbnRlIHPDtmthIHRpbGwgc3VwZXJibG9jayBpZ2VuXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwNQorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciB3cml0aW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogZmVsIHZpZCBza3Jpdm5pbmcgYXYgc3VwZXJibG9ja1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMTcgbWlzYy90dW5lMmZzLmM6MTU5MAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogZTJsYWJlbCBkZXZpY2UgW25ld2xhYmVsXVxuIgorbXNnc3RyICJBbnbDpG5kbmluZzogZTJsYWJlbCBlbmhldCBbbnktZXRpa2V0dF1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICJBbnbDpG5kbmluZzogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNha3Rpb25zZmlsPiA8Zmlsc3lzdGVtPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiRmlsc3lzdGVtZXRzIHN1cGVyYmxvY2sgc3TDpG1tZXIgaW50ZSBtZWQgZ8O2ci1vZ2pvcnQtZmlsZW4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiVVVJRCBzdMOkbW1lciBpbnRlLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiU2VuYXN0ZSBtb250ZXJpbmdzdGlkIHN0w6RtbWVyIGludGUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUwCittc2dpZCAiTGFzdCB3cml0ZSB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJTaXN0YSBza3Jpdm5pbmdzdGlkZW4gc3TDpG1tZXIgaW50ZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTIKK21zZ2lkICJMaWZldGltZSB3cml0ZSBjb3VudGVyIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJMaXZzdGlkc3Nrcml2bmluZ3Nyw6RrbmFyZW4gc3TDpG1tZXIgaW50ZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgIm7DpHIgZmlsc3lzdGVtZXRzIHN1cGVyYmxvY2sgbMOkc3Rlcy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAibsOkciBzdXBlcmJsb2NrZXQgc2tyZXZzIgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJHw7ZyLW9nam9ydC1zdXBlcmJsb2NrZXRzIGtvbnRyb2xsc3VtbWEgc3TDpG1tZXIgaW50ZS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAiZmVsYWt0aWd0IGF2c3TDpW5kIC0gJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IHdyaXRlIHRvIGFuIHVuZG8gZmlsZSB3aGlsZSByZXBsYXlpbmcgaXQuXG4iCittc2dzdHIgIiIKKyJLb21tZXIgaW50ZSBza3JpdmEgdGlsbCBlbiBnw7ZyLW9nam9ydC1maWwgdW5kZXIgw6V0ZXJ1cHBzcGVsbmluZyBhdiBkZW4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgdW5kbyBmaWxlIGAlcydcbiIKK21zZ3N0ciAibsOkciBnw7ZyLW9nam9ydC1maWxlbiDigJ0lc+KAnSDDtnBwbmFkZXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHVuZG8gZmlsZSIKK21zZ3N0ciAibsOkciBnw7ZyLW9nam9ydC1maWxlbiBsw6RzdGVzIgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IEludGUgZW4gZ8O2ci1vZ2pvcnQtZmlsLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5MAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIiVzOiBIdXZ1ZGV0cyBrb250cm9sbHN1bW1hIHN0w6RtbWVyIGludGUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBDb3JydXB0IHVuZG8gZmlsZSBoZWFkZXIuXG4iCittc2dzdHIgIiVzOiBUcmFzaWcgaHV2dWQgaSBnw7ZyLW9nam9ydC1maWxlbi5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iCittc2dzdHIgIiVzOiBHw7ZyLW9nam9ydC1ibG9ja3N0b3JsZWtlbiDDpHIgZsO2ciBzdG9yLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiJXM6IEfDtnItb2dqb3J0LWJsb2Nrc3Rvcmxla2VuIMOkciBmw7ZyIGxpdGVuLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVzOiBPa8OkbmQgZnVua3Rpb25zdXBwc8OkdHRuaW5nIGkgZ8O2ci1vZ2pvcnQtZmlsLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJGZWwgbsOkciBkZXQgYXZnam9yZGVzIG9tICVzIMOkciBtb250ZXJhdC4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgImUydW5kbyBza2FsbCBlbmRhc3Qga8O2cmFzIHDDpSBvbW9udGVyYWRlIGZpbHN5c3RlbSIKKworIzogbWlzYy9lMnVuZG8uYzo0NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICJuw6RyIOKAnSVz4oCdIMO2cHBuYWRlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0NjAKK21zZ2lkICJzcGVjaWZpZWQgb2Zmc2V0IGlzIHRvbyBsYXJnZSIKK21zZ3N0ciAiYW5naXZldCBhdnN0w6VuZCDDpHIgZsO2ciBzdG9ydCIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgIm7DpHIgbnlja2xhciBsw6RzdGVzIgorCisjOiBtaXNjL2UydW5kby5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogd3Jvbmcga2V5IG1hZ2ljIGF0ICVsbHVcbiIKK21zZ3N0ciAiJXM6IGZlbCBueWNrZWxtYWdpIHZpZCAlbGx1XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiJXM6IGtvbnRyb2xsc3VtbWFuIGbDtnIgbnlja2VsYmxvY2sgw6RyIGZlbCB2aWQgJWxsdS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICIlczogYmxvY2sgJWxsdSDDpHIgZsO2ciBsw6VuZ3QuIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAibsOkciBibG9jayAlbGx1IGjDpG10YWRlcy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAia29udHJvbGxzdW1tYW4gaSBmaWxzeXN0ZW1ibG9jayAlbGx1IChnw7ZyLW9nam9ydC1ibG9jayAlbGx1KVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICJmZWwgbsOkciBibG9jayAlbGx1IHNrcmV2cy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiR8O2ci1vZ2pvcnQtZmlsZW4gdHJhc2lnOyBrw7ZyIGUyZnNjayBOVSFcbiIKKworIzogbWlzYy9lMnVuZG8uYzo2MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSU8gZXJyb3IgZHVyaW5nIHJlcGxheTsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgIklPLWZlbCB2aWQgw6V0ZXJ1cHBzcGVsbmluZzsga8O2ciBlMmZzY2sgTlUhXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIk9mdWxsc3TDpG5kaWcgZ8O2ci1vZ2pvcnQtcG9zdDsga8O2ciBlMmZzY2suXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAgZmluZHN1cGVyIGRldmljZSBbc2tpcGJ5dGVzIFtzdGFydGtiXV1cbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICBmaW5kc3VwZXIgZW5oZXQgW3NraXBwYWJ5dGUgW3N0YXJ0a2JdXVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAic2tpcHBhYnl0ZSBza2FsbCB2YXJhIGV0dCB0YWwsIGludGUgJXNcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAic2tpcGJ5dGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2VjdG9yIHNpemVcbiIKK21zZ3N0ciAic2tpcHBhYnl0ZSBtw6VzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiBzZWt0b3JzdG9ybGVrZW5cbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRrYiBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICJzdGFydGtiIHNrYWxsIHZhcmEgZXR0IHRhbCwgaW50ZSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAic3RhcnRrYiBza2FsbCB2YXJhIHBvc2l0aXZ0LCBpbnRlICVsbHVcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODYKKyMsIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAic3RhcnRhciB2aWQgJWxsdSwgbWVkICV1LWJ5dGVzdGVnXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorIlsqXSBmw7ZybW9kbGlnZW4gZXR0IHN1cGVyYmxvY2sgc2tyaXZldCBpIGV4dDMtam91cm5hbHN1cGVyYmxvY2tldCxcbiIKKyJcdHPDpSBzdGFydC9zbHV0L2dydXBwIMOkciBmZWxcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorImJ5dGVhdnN0w6VuZCAgYnl0ZXN0YXJ0ICAgICAgYnl0ZXNsdXQgIGZzX2Jsb2NrICBibGtzdCAgZ3JwICBta2ZzLyIKKyJtb250ZXJpbmdzdGlkICAgICAgICBzYl91dWlkIGV0aWtldHRcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMUx1OiBmaW5pc2hlZCB3aXRoIGVycm5vICVkXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlMTFMdTogYXZzbHV0YWRlIG1lZCBmZWxudW1tZXIgJWRcbiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgIlZBUk5JTkc6IGt1bmRlIGludGUgw7ZwcG5hICVzOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIlZBUk5JTkc6IGZlbCBmb3JtYXQgcMOlIHJhZCAlZCBhdiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKK21zZ2lkICIiCisiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisiXHRmaWVsZC4gIEkgd2lsbCBrbHVkZ2UgYXJvdW5kIHRoaW5ncyBmb3IgeW91LCBidXQgeW91XG4iCisiXHRzaG91bGQgZml4IHlvdXIgL2V0Yy9mc3RhYiBmaWxlIGFzIHNvb24gYXMgeW91IGNhbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlZBUk5JTkc6IERpbiAvZXRjL2ZzdGFiIGlubmVow6VsbGVyIGludGUgZnNjay1wYXNzbnItZsOkbHRldC5cbiIKKyJcdEphZyBmaXhhciBtaWcgZsO2cmJpIGRldHRhIMOldCBkaWcsIG1lbiBkdVxuIgorIlx0YsO2ciByw6R0dGEgZGluIC9ldGMvZnN0YWItZmlsIHPDpSBzbmFydCBkdSBrYW4uXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiBpbnRlIGZ1bm5lblxuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczogd2FpdDogSW5nYSBmbGVyIGJhcm5wcm9jZXNzZXI/IT9cbiIKKworIzogbWlzYy9mc2NrLmM6NjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmcuLi4gJXMgZm9yIGRldmljZSAlcyBleGl0ZWQgd2l0aCBzaWduYWwgJWQuXG4iCittc2dzdHIgIlZhcm5pbmcuLi4gJXMgZsO2ciBlbmhldCAlcyBhdnNsdXRhZGUgbWVkIHNpZ25hbCAlZC5cbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVzOiBzdGF0dXMgw6RyICV4LCBza3VsbGUgYWxkcmlnIGludHLDpGZmYS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICJBdnNsdXRhZGUgbWVkICVzIChzbHV0c3RhdHVzICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIlczogRmVsICVkIG7DpHIgZnNjay4lcyBrw7ZyZGVzIGbDtnIgJXNcbiIKKworIzogbWlzYy9mc2NrLmM6NzQyCittc2dpZCAiIgorIkVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZmlsZXN5c3RlbSB0eXBlcyBwYXNzZWQgdG8gLXQgbXVzdCBiZSBwcmVmaXhlZFxuIgorIndpdGggJ25vJyBvciAnIScuXG4iCittc2dzdHIgIiIKKyJBbnRpbmdlbiBhbGxhIGVsbGVyIGluZ2EgYXYgZmlsc3lzdGVtc3R5cGVybmEgc29tIGdlcyB0aWxsIC10IG3DpXN0ZSBoYVxuIgorInByZWZpeCDigJ1ub+KAnSBlbGxlciDigJ0h4oCdLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBtaW5uZSBmw7ZyIGZpbHN5c3RlbXR5cGVyXG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczogaG9wcGFyIMO2dmVyIGZlbGFrdGlnIHJhZCBpIC9ldGMvZnN0YWI6IGJpbmQtbW9udGVyaW5nIG1lZCBmc2NrLSIKKyJwYXNzbnVtbWVyIHNvbSBpbnRlIMOkciBub2xsXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6IGthbiBpbnRlIGtvbnRyb2xsZXJhICVzOiBmc2NrLiVzIGZpbm5zIGludGVcbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAiS29udHJvbGxlcmFyIGFsbGEgZmlsc3lzdGVtLlxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDU4CisjLCBjLWZvcm1hdAorbXNnaWQgIi0td2FpdGluZy0tIChwYXNzICVkKVxuIgorbXNnc3RyICItLXbDpG50YXItLSAocGFzcyAlZClcbiIKKworIzogbWlzYy9mc2NrLmM6MTA3OAorbXNnaWQgIiIKKyJVc2FnZTogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGZzdHlwZV0gW2ZzLW9wdGlvbnNdIFtmaWxlc3lzIC4uLl1cbiIKK21zZ3N0ciAiIgorIkFudsOkbmRuaW5nOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZoIF0gXSBbLXQgZnN0eXBdIFtmcy1mbGFnZ29yXSAiCisiW2ZpbHN5cyAuLi5dXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXM6IGbDtnIgbcOlbmdhIGVuaGV0ZXJcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IGbDtnIgbcOlbmdhIGFyZ3VtZW50XG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKK21zZ2lkICJNb3VudGluZyByZWFkLW9ubHkuXG4iCittc2dzdHIgIk1vbnRlcmFyIGVuZGFzdCBsw6RzYmFydC5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiVzOiBMw6V0ZXIgYW52w6RuZGFyZSBhbGxva2VyYSBhbGxhIGJsb2NrLiAgRGV0dGEgw6RyIGZhcmxpZ3QhXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzYgbWlzYy9mdXNlMmZzLmM6Mzc4OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMuXG4iCittc2dzdHIgIiVzOiAlcy5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NyBtaXNjL2Z1c2UyZnMuYzozNzkxIG1pc2MvdHVuZTJmcy5jOjMyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICJLw7ZyIGUyZnNjayAtZnkgJXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3OTgKK21zZ2lkICJKb3VybmFsIG5lZWRzIHJlY292ZXJ5OyBydW5uaW5nIGBlMmZzY2sgLUUgam91cm5hbF9vbmx5JyBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAiIgorIkpvdXJuYWxlbiBiZWjDtnZlciDDpXRlcmjDpG10YXM7IOKAnWUyZnNjayAtRSBqb3VybmFsX29ubHnigJ0gYmVow7Z2ZXIga8O2cmFzLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiVzOiBBdHQgc2tyaXZhIHRpbGwgam91cm5hbGZpbGVuIHN0w7ZkanMgaW50ZS5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIlZhcm5pbmc6IG1vbnRlcmFyIG9rb250cm9sbGVyYXQgZnMsIGF0dCBrw7ZyYSBlMmZzY2sgcmVrb21tZW5kZXJhcy5cbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBtYXhpbWFsdCBhbnRhbCBtb250ZXJpbmdhciB1cHBuw6V0dCwgYXR0IGvDtnJhIGUyZnNjayByZWtvbW1lbmRlcmFzLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiVmFybmluZzoga29udHJvbGx0aWRlbiB1cHBuw6VkZDsgYXR0IGvDtnJhIGUyZnNjayByZWtvbW1lbmRlcmFzLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIkbDtnLDpGxkcmFsw7ZzYSBoaXR0YWRlOyBhdHQga8O2cmEgZTJmc2NrIHJla29tbWVuZGVyYXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICJGZWwgdXBwdMOkY2t0YTsgYXR0IGvDtnJhIGUyZnNjayByZWtvbW1lbmRlcmFzLlxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjc1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICVzIFstUlZhZGxwdl0gW2ZpbGVy4oCmXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIlZpZCBsw6RzbmluZyBhdiBmbGFnZ29yIHDDpSAlcyIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIk7DpHIgcHJvamVrdGV0IHDDpSAlcyBsw6RzdGVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIlZpZCBsw6RzbmluZyBhdiB2ZXJzaW9uIHDDpSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiQW52w6RuZG5pbmc6ICVzIFstY3wtbCBmaWxuYW1uXSBbLWIgYmxvY2tzdG9ybGVrXSBbLUMga2x1c3RlcnN0b3JsZWtdXG4iCisiXHRbLWkgYnl0ZS1wZXItaW5vZF0gWy1JIGlub2RzdG9ybGVrXSBbLUogam91cm5hbGZsYWdnb3JdXG4iCisiXHRbLUcgZmxleGdydXBwc3Rvcmxla10gWy1OIGFudGFsLWlub2Rlcl0gWy1kIHJvdGthdGFsb2ddXG4iCisiXHRbLW0gcmVzZXJ2ZXJhZGUtYmxvY2stcHJvY2VudF0gWy1vIHNrYXBhci1vc11cbiIKKyJcdFstZyBibG9jay1wZXItZ3J1cHBdIFstTCB2b2x5bWV0aWtldHRdIFstTSBzZW5hc3QtbW9udGVyYWQta2F0YWxvZ11cbiIKKyJcdFstTyBmdW5rdGlvblssLi4uXV0gWy1yIGZzLXJldmlzaW9uXSBbLUUgdXTDtmthZC1mbGFnZ2FbLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwXSBbLVQgYW52w6RuZG5pbmdzdHlwXSBbLVUgVVVJRF0gWy1lIGZlbGJldGVlbmRlXVxuIgorIiAgICAgICAgWy16IGfDtnItb2dqb3J0LWZpbF0gWy1qbnF2REZTVl0gZW5oZXQgW2Jsb2NrYW50YWxdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAiS8O2ciBrb21tYW5kbzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJ1biAnJXMnIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGvDtnJhIOKAnSVz4oCdIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAidmlkIGJlYXJiZXRuaW5nIGF2IGxpc3RhIMO2dmVyIGTDpWxpZ2EgYmxvY2sgZnLDpW4gcHJvZ3JhbSIKKworIzogbWlzYy9ta2UyZnMuYzoyOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgJWQgaW4gcHJpbWFyeSBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3IgYXJlYSBiYWQuXG4iCittc2dzdHIgIkJsb2NrICVkIGkgcHJpbcOkciBzdXBlcmJsb2NrLS9ncnVwcGJlc2tyaXZhcmUgw6RyIGZlbGFrdGlndC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiQmxvY2sgJXUgdGlsbCAldSBtw6VzdGUgdmFyYSBicmEgZsO2ciBhdHQgYnlnZ2EgZXR0IGZpbHN5c3RlbS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAiQXZicnl0ZXIuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHRoZSBiYWNrdXAgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9ycyBhdCBibG9jayAldSBjb250YWluXG4iCisiXHRiYWQgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiVmFybmluZzogcmVzZXJ2c3VwZXJibG9jay0vLWdydXBwYmVza3JpdmFyZSB2aWQgYmxvY2sgJXUgaW5uZWjDpWxsZXJcbiIKKyJcdGTDpWxpZ2EgYmxvY2suXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgInZpZCBtYXJrZXJpbmcgYXYgZMOlbGlnYSBibG9jayBzb20gYW52w6RuZGEiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAiU2tyaXZlciBpbm9kc3RhYmVsbGVyOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3Qgd3JpdGUgJWQgYmxvY2tzIGluIGlub2RlIHRhYmxlIHN0YXJ0aW5nIGF0ICVsbHU6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJLdW5kZSBpbnRlIHNrcml2YSAlZCBibG9jayBpIGlub2RzdGFiZWxsIHNvbSBiw7ZyamFyIHZpZCAlbGx1OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ0NCBtaXNjL21rZTJmcy5jOjI2NTQgbWlzYy9ta2UyZnMuYzozMDMwCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAia2xhciAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAidmlkIHNrYXBhbmRlIGF2IHJvdGthdGFsb2ciCisKKyM6IG1pc2MvbWtlMmZzLmM6NDY2Cittc2dpZCAid2hpbGUgcmVhZGluZyByb290IGlub2RlIgorbXNnc3RyICJ2aWQgbMOkc25pbmcgYXYgcm90aW5vZCIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICJ2aWQgaW5zdMOkbGxuaW5nIGF2IHJvdGlub2RlbnMgw6RnYXJza2FwIgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICJ2aWQgc2thcGFuZGUgYXYgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAidmlkIHPDtmtuaW5nIGVmdGVyIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAidmlkIHV0dmlkZ25pbmcgYXYgL2xvc3QrZm91bmQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTMxCittc2dpZCAid2hpbGUgc2V0dGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgInZpZCBpbnN0w6RsbG5pbmcgYXYgaW5vZCBmw7ZyIGTDpWxpZ2EgYmxvY2siCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIlNsdXQgcMOlIG1pbm5lIHZpZCByYWRlcmluZyBhdiBzZWt0b3JlciAlZC0lZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICJWYXJuaW5nOiBrdW5kZSBpbnRlIGzDpHNhIGJsb2NrIDA6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIlZhcm5pbmc6IGt1bmRlIGludGUgcmFkZXJhIHNla3RvciAlZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ2aWQgaW5pdGllcmluZyBhdiBqb3VybmFsc3VwZXJibG9jayIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgIk5vbGxzdMOkbGxlciBqb3VybmFsZW5oZXQ6ICIKKworIzogbWlzYy9ta2UyZnMuYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBqb3VybmFsIGRldmljZSAoYmxvY2sgJWxsdSwgY291bnQgJWQpIgorbXNnc3RyICJ2aWQgbm9sbHN0w6RsbG5pbmcgYXYgam91cm5hbGVuaGV0IChibG9jayAlbGx1LCBhbnRhbCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgInZpZCBza3Jpdm5pbmcgYXYgam91cm5hbHN1cGVyYmxvY2siCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICJTa2FwYXIgZXR0IGZpbHN5c3RlbSBtZWQgJWxsdSAlZCBrLWJsb2NrIG9jaCAldSBpbm9kZXJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorInZhcm5pbmc6ICVsbHUgYmxvY2sgb2FudsOkbmRhLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2NQorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGxhYmVsPSVzXG4iCittc2dzdHIgIkZpbHN5c3RlbXNldGlrZXR0PSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIk9TLXR5cDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJCbG9ja3N0b3JsZWs9JXUgKGxvZz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2x1c3RlciBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIktsdXN0ZXJzdG9ybGVrPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiRnJhZ21lbnRzdG9ybGVrPSV1IChsb2c9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiS2xpdj0ldSBibG9jaywgcmVtc3ZpZGQ9JXUgYmxvY2tcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBpbm9kZXIsICVsbHUgYmxvY2tcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIlbGx1IGJsb2NrICglMi4yZiUlKSByZXNlcnZlcmFkZSBmw7ZyIHN1cGVyYW52w6RuZGFyZW5cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJGw7Zyc3RhIGRhdGFibG9jaz0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICJSb3RrYXRhbG9nw6RnYXJlPSV1OiV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgIk1heGltYWx0IGFudGFsIGZpbHN5c3RlbXNibG9jaz0lbHVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBzXG4iCittc2dzdHIgIiV1IGJsb2NrZ3J1cHBlclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBibG9ja2dydXBwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBibG9jayBwZXIgZ3J1cHAsICV1IGtsdXN0ZXIgcGVyIGdydXBwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgYmxvY2sgcGVyIGdydXBwLCAldSBmcmFnbWVudCBwZXIgZ3J1cHBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBpbm9kZXIgcGVyIGdydXBwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAiRmlsc3lzdGVtcy1VVUlEOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgIlN1cGVyYmxvY2trb3Bpb3IgbGFncmFkZSBww6UgYmxvY2s6ICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIlcyBmw7ZydXRzw6R0dGVyIOKAnS1PIDY0Yml04oCdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAi4oCdJXPigJ0gbcOlc3RlIGtvbW1hIGbDtnJlIOKAnXJlc2l6ZT0ldeKAnVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGRlc2Nfc2l6ZTogJyVzJ1xuIgorbXNnc3RyICJPZ2lsdGlnIGRlc2Nfc2l6ZTog4oCdJXPigJ1cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgIk9naWx0aWd0IGF2c3TDpW5kOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKK21zZ3N0ciAiT2dpbHRpZ3QgbW1wX3VwZGF0ZV9pbnRlcnZhbDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCAjIG9mIGJhY2t1cCBzdXBlcmJsb2NrczogJXNcbiIKK21zZ3N0ciAiT2dpbHRpZ3QgYW50YWwgc3VwZXJibG9ja3Nrb3Bpb3I6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaWRlIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiT2dpbHRpZyBrbGl2cGFyYW1ldGVyOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkwNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlwZS13aWR0aCBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIk9naWx0aWcgcmVtc2JyZWRkc3BhcmFtZXRlcjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJPZ2lsdGlnIHN0b3JsZWtzw6RuZHJpbmdzcGFyYW1ldGVyOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICIiCisiU3Rvcmxla3PDpG5kcmluZ2VucyBtYXhpbXVtIG3DpXN0ZSB2YXJhIHN0w7ZycmUgw6RuIGZpbHN5c3RlbWV0cyBzdG9ybGVrLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiU3Rvcmxla3PDpG5kcmluZyB1bmRlciBkcmlmdCBzdMO2ZHMgaW50ZSBtZWQgcmV2aXNpb24gMC1maWxzeXN0ZW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgIk9naWx0aWcgcm90w6RnYXJlOiDigJ0lc+KAnVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHRvZmZzZXQ9PG9mZnNldCB0byBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtPlxuIgorIlx0cmVzaXplPTxyZXNpemUgbWF4aW11bSBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBvZiByb290IGRpcj46PGdpZCBvZiByb290IGRpcj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxxdW90YSB0eXBlKHMpIHRvIGJlIGVuYWJsZWQ+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGZWxha3RpZ2EgZmxhZ2dvciBhbmdpdm5hOiAlc1xuIgorIlxuIgorIlV0w7ZrYWRlIGZsYWdnb3Igc2VwYXJlcmFzIG1lZCBrb21tYW4sIG9jaCBrYW4gdGEgZXR0IGFyZ3VtZW50IHNvbSBhdmRlbGFzICIKKyJtZWRcbiIKKyJcdGV0dCBsaWtoZXRzdGVja2VuICjigJ094oCdKS5cbiIKKyJcbiIKKyJHaWx0aWdhIHV0w7ZrYWRlIGZsYWdnb3Igw6RyOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWxsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQtZGF0YXN0eWNrZW4gcGVyIGRpc2sgaSBibG9jaz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRC1rbGl2IMK3IGRhdGFkaXNrYXIgaSBibG9jaz5cbiIKKyJcdG9mZnNldD08YXZzdMOlbmQgYXR0IHNrYXBhIGZpbHN5c3RlbWV0IHDDpT5cbiIKKyJcdHJlc2l6ZT08bWF4aW1hbCBzdG9ybGVrc8OkbmRyaW5nc3N0b3JsZWsgaSBibG9jaz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCBmw7ZyIGF0dCBhdmFrdGl2ZXJhLCAxIGbDtnIgYXR0IGFrdGl2ZXJhPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCBmw7ZyIGF0dCBhdmFrdGl2ZXJhLCAxIGbDtnIgYXR0IGFrdGl2ZXJhPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgZsO2ciBhdHQgYXZha3RpdmVyYSwgMSBmw7ZyIGF0dCBha3RpdmVyYT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBmw7ZyIHJvdGthdGFsb2dlbj46PGdpZCBmw7ZyIHJvdGthdGFsb2dlbj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxrdm90dHlwZXIgYXR0IGFrdGl2ZXJhPlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IFJBSUQgc3RyaXBlLXdpZHRoICV1IG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHN0cmlkZSAldS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlZhcm5pbmc6IFJBSUQtcmVtc2JyZWRkICV1IMOkciBpbnRlIGVuIGrDpG1uIG11bHRpcGVsIGF2IGtsaXZldCAldS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisiU3ludGF4ZmVsIGkgbWtlMmZzIGtvbmZpZ3VyYXRpb25zZmlsICglcywgcmFkIG5yICVkKVxuIgorIlx0JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIk9naWx0aWcgZmlsc3lzdGVtc2ZsYWdnYSBzYXR0OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAiT2dpbHRpZyBtb250ZXJpbmdzZmxhZ2dhIHNhdHQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisiRGluIG1rZTJmcy5jb25mLWZpbCBkZWZpbmllcmFyIGludGUgZmlsc3lzdGVtc3R5cGVuICVzLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjYKK21zZ2lkICIiCisiWW91IHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBhbiB1cGRhdGVkIG1rZTJmcy5jb25mIGZpbGUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEdSBiZWjDtnZlciBmw7ZybW9kbGlnZW4gaW5zdGFsbGVyYSBlbiB1cHBkYXRlcmFkIG1rZTJmcy5jb25mLWZpbC5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAiQXZicnl0ZXIuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVmFybmluZzogZnNfdHlwZSAlcyDDpHIgaW50ZSBkZWZpbmllcmFkIGkgbWtlMmZzLmNvbmZcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBtaW5uZSBmw7ZyIG55IFPDlktWw4RHLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIkt1bmRlIGludGUgaW5pdGllcmEgcHJvZmlsZW4gKGZlbDogJWxkKS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICJmZWxha3RpZyBibG9ja3N0b3JsZWsgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAiVmFybmluZzogYmxvY2tzdG9ybGVrICVkIMOkciBpbnRlIGFudsOkbmRiYXIgcMOlIGRlIGZsZXN0YSBzeXN0ZW0uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJmZWxha3RpZyBrbHVzdGVyc3RvcmxlayAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIuKAnS1S4oCdIHVuZGFuYmVkZXMsIGFudsOkbmQg4oCdLUXigJ0gaXN0w6RsbGV0IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MTQgbWlzYy90dW5lMmZzLmM6MTY4NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgLSAlcyIKK21zZ3N0ciAiZmVsYWt0aWd0IGZlbGJldGVlbmRlIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYyNgorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBibG9ja3MgcGVyIGdyb3VwIgorbXNnc3RyICJPZ2lsdGlndCBhbnRhbCBmw7ZyIGJsb2NrIHBlciBncnVwcCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjMxCittc2dpZCAiYmxvY2tzIHBlciBncm91cCBtdXN0IGJlIG11bHRpcGxlIG9mIDgiCittc2dzdHIgImJsb2NrIHBlciBncnVwcCBtw6VzdGUgdmFyYSBlbiBtdWx0aXBlbCBhdiA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICJGZWxha3RpZ3QgdGFsIGbDtnIgZmxleF9iZy1zdG9ybGVrIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgInN0b3JsZWsgcMOlIGZsZXhfYmcgbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgMiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICJzdG9ybGVrIHDDpSBmbGV4X2JnICglbHUpIG3DpXN0ZSB2YXJhIG1pbmRyZSDDpG4gZWxsZXIgbGlrYSBtZWQgMsKzwrkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAib2dpbHRpZyBpbm9kc2bDtnJow6VsbGFuZGUgJXMgKG1pbiAlZC9tYXggJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgIm9naWx0aWcgaW5vZHNzdG9ybGVrIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBmbGFnZ2FuIC1LIHVuZGFuYmVkZXMgb2NoIHNrYWxsIGludGUgYW52w6RuZGFzIG1lcmEuICBBbnbDpG5kIGRlbiAiCisidXTDtmthZGUgZmxhZ2dhbiDigJ0tRSBub2Rpc2NhcmTigJ0gaXN0w6RsbGV0IVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgImkgbWFsbG9jIGbDtnIgYmFkX2Jsb2Nrc19maWxlbmFtZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICIiCisiVmFybmluZzogZXRpa2V0dGVuIGbDtnIgbMOlbmcsIGtvbW1lciBhdmtvcnRhcyB0aWxsIOKAnSVz4oCdLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJvZ2lsdGlnIHByb2NlbnRhbmRlbCByZXNlcnZlcmFkZSBibG9jayAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG51bSBpbm9kZXMgLSAlcyIKK21zZ3N0ciAiZmVsYWt0aWd0IGFudGFsIGlub2RlciAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NDAKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGZzX2ZlYXR1cmUgc3RyaW5nIgorbXNnc3RyICJ2aWQgYWxsb2tlcmluZyBhdiBmc19mZWF0dXJlLXN0csOkbmciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc1NworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmV2aXNpb24gbGV2ZWwgLSAlcyIKK21zZ3N0ciAiZmVsYWt0aWcgdmVyc2lvbnNuaXbDpSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCBza2FwYSByZXZpc2lvbiAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIkZsYWdnYW4gLXQgZsOlciBlbmRhc3QgYW5nZXMgZW4gZ8OlbmciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICJGbGFnZ2FuIC1UIGbDpXIgZW5kYXN0IGFuZ2VzIGVuIGfDpW5nIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgInZpZCBmw7Zyc8O2ayBhdHQgw7ZwcG5hIGpvdXJuYWxlbmhldCAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBkZXYgYmxvY2tzaXplICglZCkgc21hbGxlciB0aGFuIG1pbmltdW0gYmxvY2tzaXplICVkXG4iCittc2dzdHIgIkpvdXJuYWxlbmhldGVucyBibG9ja3N0b3JsZWsgKCVkKSBtaW5kcmUgw6RuIG1pbnN0YSBibG9ja3N0b3JsZWsgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzaW5nIGpvdXJuYWwgZGV2aWNlJ3MgYmxvY2tzaXplOiAlZFxuIgorbXNnc3RyICJBbnbDpG5kZXIgam91cm5hbGVuaGV0ZW5zIGJsb2Nrc3RvcmxlazogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgImZlbGFrdGlnYSBibG9jayDigJ0lc+KAnSBww6UgZW5oZXQg4oCdJXPigJ0iCisKKyMgIkV0dCIgZsO2ciBhdHQgZGV0dGEgc8OkdHRzIGluIGkgYW5uYW4gc3Ryw6RuZyBkw6RyIGRldCBmw7ZyZWfDpXMgYXYgImEiLgorIyDDhHZlbiAiam91cm5hbCIga2FuIHPDpHR0YXMgaW4gcMOlIHNhbW1hIHBsYXRzLiAgRmVscmFwcG9ydGVyYXQuCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJldHQgZmlsc3lzdGVtIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDAgcmVzaXplL21haW4uYzo0OTEKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGZpbGVzeXN0ZW0gc2l6ZSIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCBhdmfDtnJhIGZpbHN5c3RlbXN0b3JsZWsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisiS3VuZGUgaW50ZSBhdmfDtnJhIGVuaGV0c3N0b3JsZWs7IGR1IG3DpXN0ZSBhbmdlXG4iCisic3Rvcmxla2VuIHDDpSBmaWxzeXN0ZW1ldFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorIkVuaGV0c3N0b3JsZWsgcmFwcG9ydGVyYWRlcyBzb20gbm9sbC4gIE9naWx0aWcgcGFydGl0aW9uIGFuZ2l2ZW4sIGVsbGVyXG4iCisiXHRwYXJ0aXRpb25zdGFiZWxsZW4gdmFyIGludGUgb21sw6RzdCBlZnRlciBhdHQgaGEga8O2cnQgZnNjaywgcMOlIGdydW5kXG4iCisiXHRhdiBlbiBtb2RpZmllcmFkIHBhcnRpdGlvbiBhbnbDpG5kcyBvY2ggw6RyIGkgYnJ1ay4gIER1IGthbiBiZWjDtnZhXG4iCisiXHRzdGFydGEgb20gZsO2ciBhdHQgbMOkc2Egb20gZGluIHBhcnRpdGlvbnN0YWJlbGwuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkzMAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFyZ2VyIHRoYW4gYXBwYXJlbnQgZGV2aWNlIHNpemUuIgorbXNnc3RyICJGaWxzeXN0ZW0gc3TDtnJyZSDDpG4gc3luYmFyIGVuaGV0c3N0b3JsZWsuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICJNaXNzbHlja2FkZXMgdG9sa2EgZnMtdHlwbGlzdGFcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSFVSRCBzdMO2ZGplciBpbnRlIGZ1bmt0aW9uZW4gZmlsdHlwZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkhVUkQgc3TDtmRqZXIgaW50ZSBmdW5rdGlvbmVuIGh1Z2VfZmlsZS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDA4Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJIVVJEIHN0w7ZkamVyIGludGUgZnVua3Rpb25lbiBtZXRhZGF0YV9jc3VtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGF2Z8O2cmEgaMOlcmR2YXJ1c2VrdG9yc3RvcmxlayIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCBhdmfDtnJhIGZ5c2lzayBzZWt0b3JzdG9ybGVrIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNTYKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsIGZvciBkZXZpY2VcbiIKK21zZ3N0ciAibsOkciBibG9ja3N0b3JsZWsgc2F0dGVzOyBmw7ZyIGxpdGVuIGbDtnIgZW5oZXRlblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBhbmdpdmVuIGJsb2Nrc3RvcmxlayAlZCDDpHIgbWluZHJlIMOkbiBlbmhldGVucyBmeXNpc2thIHNla3RvcnN0b3JsZWsgIgorIiVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiVzOiBTdG9ybGVrZW4gcMOlIGVuaGV0ICgweCVsbHggYmxvY2spICVzIMOkciBmw7ZyIHN0b3IgZsO2ciBhdHQgdXR0cnlja2FzXG4iCisiXHRtZWQgMzIgYml0YXIgbWVkIGFudsOkbmRuaW5nIGF2IGVuIGJsb2Nrc3RvcmxlayBww6UgJWQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwMQorbXNnaWQgImZzX3R5cGVzIGZvciBta2UyZnMuY29uZiByZXNvbHV0aW9uOiAiCittc2dzdHIgInVwcGzDtnNuaW5nIGF2IGZzX3R5cGVzIGbDtnIgbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJGaWxzeXN0ZW1zZnVua3Rpb25lciBzb20gaW50ZSBzdMO2ZHMgbWVkIHJldmlzaW9uIDAtZmlsc3lzdGVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjExNgorbXNnaWQgIlNwYXJzZSBzdXBlcmJsb2NrcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJHbGVzYSBzdXBlcmJsb2NrIHN0w7ZkcyBpbnRlIG1lZCByZXZpc2lvbiAwLWZpbHN5c3RlbVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICJKb3VybmFsZXIgc3TDtmRzIGludGUgbWVkIHJldmlzaW9uIDAtZmlsc3lzdGVtXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICJvZ2lsdGlnIHByb2NlbnRhbmRlbCByZXNlcnZlcmFkZSBibG9jayAtICVsZiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTU2Cittc2dpZCAiIgorIkV4dGVudHMgTVVTVCBiZSBlbmFibGVkIGZvciBhIDY0LWJpdCBmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiVXRzdHLDpGNrbmluZ2FyIE3DhVNURSB2YXJhIGFrdGl2ZXJhZGUgcMOlIGV0dCA2NC1iaXRhcnMgZmlsc3lzdGVtLiAgU2tpY2thIC1PICIKKyJleHRlbnRzIGbDtnIgYXR0IHLDpHR0YS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAiS2x1c3RlcnN0b3JsZWtlbiBmw6VyIGludGUgdmFyYSBtaW5kcmUgw6RuIGJsb2Nrc3Rvcmxla2VuLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxODIKK21zZ2lkICJzcGVjaWZ5aW5nIGEgY2x1c3RlciBzaXplIHJlcXVpcmVzIHRoZSBiaWdhbGxvYyBmZWF0dXJlIgorbXNnc3RyICJhdHQgYW5nZSBlbiBrbHVzdGVyc3RvcmxlayBmw7ZydXRzw6R0dGVyIGZ1bmt0aW9uZW4gYmlnYWxsb2MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAidmFybmluZzogS2FuIGludGUgdGEgcmVkYSBww6UgZW5oZXRlbnMgZ2VvbWV0cmkgZsO2ciAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIiVzIGp1c3RlcmluZyDDpHIgZsO2cnNranV0ZW4gbWVkICVsdSBieXRlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiIgorIkRldHRhIGthbiBtZWRmw7ZyYSB2w6RsZGlndCBkw6VsaWdhIHByZXN0YW5kYSwgKG9tKXBhcnRpdGlvbmVyaW5nIGbDtnJlc2zDpXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIiVkLWJ5dGVibG9jayBmw7ZyIHN0b3J0IGbDtnIgc3lzdGVtZXQgKG1heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpLCBmb3JjZWQgdG8gY29udGludWVcbiIKK21zZ3N0ciAiIgorIlZhcm5pbmc6ICVkLWJ5dGVibG9jayBmw7ZyIHN0b3J0IGbDtnIgc3lzdGVtZXQgKG1heCAlZCksIHR2aW5nYXMgZm9ydHPDpHR0YVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKyJGw7Zyc2xhZzogYW52w6RuZCBlbiBMaW51eGvDpHJuYSDiiaUgMy4xOCBmw7ZyIGbDtnJiw6R0dHJhZCBzdGFiaWxpdGV0IGF2IG1ldGFkYXRhbiAiCisib2NoIGZ1bmt0aW9uZXJuYSBmw7ZyIGpvdXJuYWxrb250cm9sbHN1bW1hLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVmFybmluZzogYXZzdMOlbmQgYW5naXZldCB1dGFuIGVuIHV0dHJ5Y2tsaWcgZmlsc3lzdGVtc3Rvcmxlay5cbiIKKyJTa2FwYXIgZXR0IGZpbHN5c3RlbSBtZWQgJWxsdSBibG9jayBtZW4gZGV0dGEga2Fuc2tlIGludGVcbiIKKyLDpHIgdmFkIGR1IHZpbGwuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiS2FuIGludGUgc3TDtmRqYSBmdW5rdGlvbmVuIGJpZ2FsbG9jIHV0YW4gZnVua3Rpb25lbiB1dHN0csOkY2tuaW5nYXIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxOQorbXNnaWQgIiIKKyJUaGUgcmVzaXplX2lub2RlIGFuZCBtZXRhX2JnIGZlYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZS5cbiIKKyJUaGV5IGNhbiBub3QgYmUgYm90aCBlbmFibGVkIHNpbXVsdGFuZW91c2x5LlxuIgorbXNnc3RyICIiCisiRWdlbnNrYXBlcm5hIHJlc2l6ZV9pbm9kZSBvY2ggbWV0YV9iZyDDpHIgaW50ZSBrb21wYXRpYmxhXG4iCisiRGUga2FuIGludGUgYsOlZGEgYWt0aXZlcmFzIHNhbXRpZGlndC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJWYXJuaW5nOiBmdW5rdGlvbmVuIGJpZ2FsbG9jIMOkciBmb3J0ZmFyYW5kZSB1bmRlciB1dHZlY2tsaW5nXG4iCisiU2UgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZsO2ciBtZXIgaW5mb3JtYXRpb25cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIiIKKyJyZXNlcnZlcmFkZSBibG9jayBmw7ZyIHN0b3JsZWtzw6RuZHJpbmcgdW5kZXIgZHJpZnQgc3TDtmRzIGludGUgcMOlIGlja2UtZ2xlc2EgIgorImZpbHN5c3RlbSIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgImFudGFsIGJsb2NrIHBlciBncnVwcCB1dGFuZsO2ciBnaWx0aWd0IGludGVydmFsbCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKyJGdW5rdGlvbmVuIGZsZXhfYmcgw6RyIGludGUgYWt0aXZlcmFkLCBzw6UgZmxlZ19iZy1zdG9ybGVrIGthbiBpbnRlIGFuZ2VzIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAib2dpbHRpZyBpbm9kc3RvcmxlayAlZCAobWluICVkL21heCAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBpbmxpbmUgZGF0YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiJWQtYnl0ZWlub2RlciDDpHIgZsO2ciBzbcOlIGbDtnIgaW5saW5lLWRhdGE7IGFuZ2UgZW4gc3TDtnJyZSBzdG9ybGVrIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgcHJvamVjdCBxdW90YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiJWQtYnl0ZWlub2RlciDDpHIgZsO2ciBzbcOlIGbDtnIgcHJvamVrdGt2b3RlcjsgYW5nZSBlbiBzdMO2cnJlIHN0b3JsZWsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgImbDtnIgbcOlbmdhIGlub2RlciAoJWxsdSksIMO2a2EgaW5vZHNmw7ZyaMOlbGxhbmRldD8iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCBzcGVjaWZ5IDwgMl4zMiBpbm9kZXMiCittc2dzdHIgImbDtnIgbcOlbmdhIGlub2RlciAoJWxsdSksIGFuZ2UgPCAywrPCsiBpbm9kZXIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisiaW5vZHNzdG9ybGVrICgldSkgwrcgaW5vZGFudGFsICgldSkgZsO2ciBzdG9ydCBmw7ZyIGV0dFxuIgorIlx0Zmlsc3lzdGVtIG1lZCAlbGx1IGJsb2NrLCBhbmdlIGjDtmdyZSBpbm9kc2bDtnJow6VsbGFuZGUgKC1pKVxuIgorIlx0ZWxsZXIgbMOkZ3JlIGlub2RhbnRhbCAoLU4pLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAiVXRyYW5nZXJhciBlbmhldHNibG9jazogIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NDkKK21zZ2lkICJmYWlsZWQgLSAiCittc2dzdHIgIm1pc3NseWNrYWRlcyAtICIKKworIzogbWlzYy9ta2UyZnMuYzoyNzA4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgIm7DpHIga3ZvdGtvbnRleHRlbiBpbml0aWVyYWRlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgIm7DpHIga3ZvdGlub2RlciBza3JldnMiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJmZWxha3RpZ3QgZmVsYmV0ZWVuZGUgaSBwcm9maWxlbiAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgInZpZCB1cHBzw6R0dG5pbmcgYXYgc3VwZXJibG9jayIKKworIzogbWlzYy9ta2UyZnMuYzoyODMwCittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBQYXNzIC1PIGV4dGVudHMgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIlV0c3Ryw6Rja25pbmdhciDDpHIgaW50ZSBha3RpdmVyYWRlLiAgSSB0csOkZGV0IG1lZCBmaWx1dHN0csOkY2tuaW5nYXIga2FuICIKKyJibG9ja3N1bW1vciBiZXLDpGtuYXMsIG1lZGFuIGJsb2Nra2FydG9yIGludGUga2FuIGRldC4gIEF0dCBpbnRlIGFrdGl2ZXJhICIKKyJ1dHN0csOkY2tuaW5nYXIgcmVkdWNlcmFyIHTDpGNrbmluZ2VuIGF2IGtvbnRyb2xsc3VtbW9yIGbDtnIgbWV0YWRhdGEuICBTa2lja2EgLSIKKyJPIGV4dGVudHMgZsO2ciBhdHQgcsOkdHRhLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzcKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiU3TDtmQgZsO2ciA2NC1iaXRhcnMgZmlsc3lzdGVtIMOkciBpbnRlIGFrdGl2ZXJhdC4gIERlIHN0w7ZycmUgZsOkbHRlbiBzb20gZGVubmEgIgorImZ1bmt0aW9uIGVyYmp1ZGVyIGfDtnIga29udHJvbGxzdW1tb3IgbWVkIGZ1bGwgc3R5cmthIG3DtmpsaWdhLiAgU2tpY2thIC1PICIKKyI2NGJpdCBmw7ZyIGF0dCByw6R0dGEuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg0NQorbXNnaWQgIlRoZSBtZXRhZGF0YV9jc3VtX3NlZWQgZmVhdHVyZSByZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgIkZ1bmt0aW9uZW4gbWV0YWRhdGFfY3N1bV9zZWVkIGbDtnJ1dHPDpHR0ZXIgZnVua3Rpb25lbiBtZXRhZGF0YV9jc3VtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKyJVdHJhbmdlcmluZyBseWNrYWRlcyBvY2gga29tbWVyIHJldHVybmVyYSAwcyDigJQgaG9wcGFyIMO2dmVyIHJlbnNuaW5nIGF2ICIKKyJpbm9kc3RhYmVsbFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBvcyAtICVzIgorbXNnc3RyICJva8OkbnQgb3MgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMDE4Cittc2dpZCAiQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICIKK21zZ3N0ciAiQWxsb2tlcmFyIGdydXBwdGFiZWxsZXI6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMDI2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGFsbG9jYXRlIGZpbGVzeXN0ZW0gdGFibGVzIgorbXNnc3RyICJ2aWQgZsO2cnPDtmsgYXR0IGFsbG9rZXJhIGZpbHN5c3RlbXN0YWJlbGxlciIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIlx0dmlkIGtvbnZlcnRlcmluZyBhdiB1bmRlcmtsdXN0cmV0cyBiaXRrYXJ0YSIKKworIzogbWlzYy9ta2UyZnMuYzozMDQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIG1heSBiZSBmdXJ0aGVyIGNvcnJ1cHRlZCBieSBzdXBlcmJsb2NrIHJld3JpdGVcbiIKK21zZ3N0ciAiJXMga2FuIGfDtnJhcyDDpG5udSB0cmFzaWdhcmUgYXYgb21za3Jpdm5pbmcgYXYgc3VwZXJibG9ja1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICJ2aWQgbm9sbHN0w6RsbG5pbmcgYXYgYmxvY2sgJWxsdSB2aWQgc2x1dGV0IGF2IGZpbHN5c3RlbWV0IgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICJ2aWQgcmVzZXJ2YXRpb24gYXYgYmxvY2sgZsO2ciBzdG9ybGVrc8OkbmRyaW5nIHVuZGVyIGRyaWZ0IgorCisjICJFbiIgZsO2ciBhdHQgZGV0dGEgc8OkdHRzIGluIGkgYW5uYW4gc3Ryw6RuZyBkw6RyIGRldCBmw7ZyZWfDpXMgYXYgImEiLgorIyDDhHZlbiAiZmlsc3lzdGVtIiBrYW4gc8OkdHRhcyBpbiBww6Ugc2FtbWEgcGxhdHMuICBGZWxyYXBwb3J0ZXJhdC4KKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAiZW4gam91cm5hbCIKKworIzogbWlzYy9ta2UyZnMuYzozMTE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkFkZGluZyBqb3VybmFsIHRvIGRldmljZSAlczogIgorbXNnc3RyICJMw6RnZ2VyIHRpbGwgam91cm5hbCB0aWxsIGVuaGV0ICVzOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEyNgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gYWRkIGpvdXJuYWwgdG8gZGV2aWNlICVzIgorbXNnc3RyICIiCisiXG4iCisiXHR2aWQgZsO2cnPDtmsgYXR0IGzDpGdnYSB0aWxsIGpvdXJuYWwgdGlsbCBlbmhldCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAia2xhclxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzcKK21zZ2lkICJTa2lwcGluZyBqb3VybmFsIGNyZWF0aW9uIGluIHN1cGVyLW9ubHkgbW9kZVxuIgorbXNnc3RyICJIb3BwYXIgw7Z2ZXIgYXR0IHNrYXBhIGpvdXJuYWwgaSBsw6RnZXQgZW5kYXN0IHN1cGVyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE0NworIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICgldSBibG9ja3MpOiAiCittc2dzdHIgIlNrYXBhciBqb3VybmFsICgldSBibG9jayk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTU2Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSBqb3VybmFsIgorbXNnc3RyICIiCisiXG4iCisiXHR2aWQgZsO2cnPDtmsgYXR0IHNrYXBhIGpvdXJuYWwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE2OCBtaXNjL3R1bmUyZnMuYzoxMDcyCittc2dpZCAiIgorIlxuIgorIkVycm9yIHdoaWxlIGVuYWJsaW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZS4iCittc2dzdHIgIiIKKyJcbiIKKyJGZWwgdmlkIGFrdGl2ZXJpbmcgYXYgZnVua3Rpb25lbiBmw7ZyIHNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZy4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorIlNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZyDDpHIgYWt0aXZlcmF0IG1lZCB1cHBkYXRlcmluZ3NpbnRlcnZhbGwgJWQgIgorInNla3VuZGVyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTEKK21zZ2lkICJDb3B5aW5nIGZpbGVzIGludG8gdGhlIGRldmljZTogIgorbXNnc3RyICJLb3BpZXJhciBmaWxlciB0aWxsIGVuaGV0ZW46ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAibsOkciBmaWxzeXN0ZW1ldCBwb3B1bGVyYWRlcyIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIlNrcml2ZXIgc3VwZXJibG9jayBvY2ggYm9rZsO2cmluZ3NpbmZvcm1hdGlvbiBmw7ZyIGZpbHN5c3RlbWV0OiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMQorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nLCBoYWQgdHJvdWJsZSB3cml0aW5nIG91dCBzdXBlcmJsb2Nrcy4iCittc2dzdHIgIiIKKyJcbiIKKyJWYXJuaW5nLCBoYWRlIHByb2JsZW0gYXR0IHNrcml2YSB1dCBzdXBlcmJsb2NrLiIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorImtsYXJcbiIKKyJcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBhcnRpdGlvbiBvZmZzZXQgb2YgJWxsdSAoJXVrKSBibG9ja3Mgbm90IGNvbXBhdGlibGUgd2l0aCBjbHVzdGVyIHNpemUgJXUuXG4iCittc2dzdHIgIiIKKyJFdHQgcGFydGl0aW9uc2F2c3TDpW5kIHDDpSAlbGx1ICgldSBrKSBibG9jayDDpHIgaW50ZSBrb21wYXRpYmVsdCBtZWQgIgorImtsdXN0ZXJzdG9ybGVrZW4gJXUuXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAiU3RvcmEgZmlsZXIga29tbWVyIGF0dCBub2xsc3TDpGxsYXNcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgIlNrYXBhciAlbHUgc3RvcmEgZmlsZXIgIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIm1lZCAlbGx1IGJsb2NrIHZhciIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlICVsdSIKK21zZ3N0ciAibsOkciBkZW4gc3RvcmEgZmlsZW4gJWx1IHNrYXBhZGVzIgorCisjOiBtaXNjL21rbG9zdCtmb3VuZC5jOjUwCittc2dpZCAiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIgorbXNnc3RyICJBbnbDpG5kbmluZzogbWtsb3N0K2ZvdW5kXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo0MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICAlcyBkZXZpY2UuLi5cbiIKKyJcbiIKKyJQcmludHMgb3V0IHRoZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIGVhY2ggZ2l2ZW4gZGV2aWNlLlxuIgorIkZvciBleGFtcGxlOiAlcyAvZGV2L2hkYVxuIgorIlxuIgorbXNnc3RyICIiCisiQW52w6RuZG5pbmc6ICAlcyBlbmhldC4uLlxuIgorIlxuIgorIlNrcml2IHV0IHBhcnRpdGlvbnNpbmZvcm1hdGlvbmVuIGbDtnIgdmFyamUgYW5naXZlbiBlbmhldC5cbiIKKyJUaWxsIGV4ZW1wZWw6ICVzIC9kZXYvaGRhXG4iCisiXG4iCisKKyM6IG1pc2MvcGFydGluZm8uYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgb3BlbiAlczogJXMiCittc2dzdHIgIkthbiBpbnRlIMO2cHBuYSAlczogJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAiS2FuIGludGUgZsOlIGdlb21ldHJpbiBmw7ZyICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIkthbiBpbnRlIGbDpSBzdG9ybGVrIGF2ICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIgorbXNnc3RyICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICBzdGFydD0lOGQgc3Rvcmxlaz0lOGx1IHNsdXQ9JThkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiS8O2ciBlMmZzY2sgLUQgcMOlIGZpbHN5c3RlbWV0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJLw7ZyIGUyZnNjayAtRCBww6UgZmlsc3lzdGVtZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJBbnbDpG5kbmluZzogJXMgWy1jIG1heF9hbnRhbF9tb250ZXJpbmdhcl0gWy1lIGZlbGJldGVlbmRlXSBbLWZdIFstZyBncnVwcF1cbiIKKyJcdFstaSBpbnRlcnZhbGxbZHxtfHddXSBbLWpdIFstSiBqb3VybmFsZmxhZ2dvcl0gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVyYWRlX2Jsb2NrX3Byb2NlbnRdIFstbyBbXl1tb250ZXJpbmdzZmxhZ2dvclss4oCmXV1cbiIKKyJcdFstcCBtbXBfdXBwZGF0ZXJpbmdzaW50ZXJ2YWxsXSBbLXIgYW50YWxfcmVzZXJ2ZXJhZGVfYmxvY2tdXG4iCisiXHRbLXUgYW52w6RuZGFyZV0gWy1DIGFudGFsX21vbnRlcmluZ2FyXSBbLUwgdm9seW1ldGlrZXR0XVxuIgorIlx0Wy1NIHNlbmFzdF9tb250ZXJhZF9rYXRhbG9nXSBbLU8gW15dZnVua3Rpb25bLOKApl1dIFstUSBrdm90ZmxhZ2dvcl1cbiIKKyJcdFstRSB1dMO2a2FkLWZsYWdnYVss4oCmXV0gWy1UIHNlbmFzdGVfa29udHJvbGx0aWRdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG55X2lub2RzdG9ybGVrXSBbLXogZ8O2ci1vZ2pvcnQtZmlsXSBlbmhldFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICJKb3VybmFsc3VwZXJibG9jayBpbnRlIGZ1bm5ldCFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc2Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCDDtnBwbmEgZXh0ZXJuIGpvdXJuYWwiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyDDpHIgaW50ZSBlbiBqb3VybmFsZW5oZXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJGaWxzeXN0ZW1zIFVVSUQgaW50ZSBmdW5uZXQgcMOlIGpvdXJuYWxlbmhldC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJLYW4gaW50ZSBoaXR0YSBqb3VybmFsZW5oZXRlbi4gICBEZW4gdG9ncyBJTlRFIGJvcnQuXG4iCisiQW52w6RuZCBmbGFnZ2FuIC1mIGbDtnIgYXR0IHRhIGJvcnQgZW4gc2FrbmFkIGpvdXJuYWxlbmhldC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIkpvdXJuYWwgYm9ydHRhZ2VuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAidmlkIGzDpHNuaW5nIGF2IGJpdGthcnRvciIKKworIzogbWlzYy90dW5lMmZzLmM6Mzc3Cittc2dpZCAid2hpbGUgY2xlYXJpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAidmlkIG5vbGxzdMOkbGxuaW5nIGF2IGpvdXJuYWxpbm9kIgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgInZpZCBza3Jpdm5pbmcgYXYgam91cm5hbGlub2QiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQyMyBtaXNjL3R1bmUyZnMuYzo0NDUgbWlzYy90dW5lMmZzLmM6NDU4Cittc2dpZCAiKGFuZCByZWJvb3QgYWZ0ZXJ3YXJkcyEpXG4iCittc2dzdHIgIihvY2ggc3RhcnRhIG9tIGVmdGVyw6V0ISlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIkVmdGVyIGF0dCBoYSBrw7ZydCBlMmZzY2ssIGvDtnIg4oCdcmVzaXplMmZzICVzICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICJLw7ZyIOKAnXJlc2l6ZTJmcyAlcyAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiAteiBcIiVzXCIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAi4oCdIGbDtnIgYXR0IGFrdGl2ZXJhIDY0LWJpdGFyc2zDpGdlLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBkaXNhYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICLigJ0gZsO2ciBhdHQgYXZha3RpdmVyYSA2NC1iaXRhcnNsw6RnZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6OTc0Cittc2dpZCAiIgorIldBUk5JTkc6IENvdWxkIG5vdCBjb25maXJtIGtlcm5lbCBzdXBwb3J0IGZvciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBUaGlzIHJlcXVpcmVzIExpbnV4ID49IHY0LjQuXG4iCittc2dzdHIgIiIKKyJWQVJOSU5HOiBLdW5kZSBpbnRlIGJla3LDpGZ0YSBzdMO2ZCBpIGvDpHJuYW4gZsO2ciBtZXRhZGF0YV9jc3VtX3NlZWQuXG4iCisiICBEZXR0YSBrcsOkdmVyIExpbnV4IOKJpSB2NC40LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIk5vbGxzdMOkbGxuaW5nIGF2IGZpbHN5c3RlbXNmdW5rdGlvbiDigJ0lc+KAnSBzdMO2ZHMgaW50ZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIkF0dCBzw6R0dGEgZmlsc3lzdGVtc2Z1bmt0aW9uIOKAnSVz4oCdIHN0w7ZkcyBpbnRlLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkZsYWdnYW4gaGFzX2pvdXJuYWwgZsOlciBlbmRhc3Qgbm9sbHN0w6RsbGFzIG7DpHIgZmlsc3lzdGVtZXQgw6RyXG4iCisib21vbnRlcmF0IGVsbGVyIG1vbnRlcmF0IGVuYmFydCBmw7ZyIGzDpHNuaW5nLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDMzCittc2dpZCAiIgorIlRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldC4gIFBsZWFzZSBydW4gZTJmc2NrIGJlZm9yZSBjbGVhcmluZ1xuIgorInRoZSBoYXNfam91cm5hbCBmbGFnLlxuIgorbXNnc3RyICIiCisiRmxhZ2dhbiBuZWVkc19yZWNvdmVyeSDDpHIgc2F0dC4gIEvDtnIgZTJmc2NrIGbDtnJlIGZsYWdnYW4gaGFzX2pvdXJuYWxcbiIKKyJub2xsc3TDpGxscy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiQXR0IHPDpHR0YSBmaWxzeXN0ZW1zZnVua3Rpb25lbiDigJ1zcGFyc2Vfc3VwZXLigJ0gc3TDtmRqcyBpbnRlXG4iCisiZsO2ciBmaWxzeXN0ZW0gbWVkIGZ1bmt0aW9uZW4gbWV0YV9iZyBha3RpdmVyYWQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiRnVua3Rpb25lbiBmw7ZyIHNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZ1xuIgorImthbiBpbnRlIHPDpHR0YXMgcMOlIG9tIGZpbHN5c3RlbWV0IMOkciBtb250ZXJhdFxuIgorImVsbGVyIHNrcml2c2t5ZGRhdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGhhcyBiZWVuIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWRzLlxuIgorbXNnc3RyICIiCisiU2t5ZGQgbW90IGZsZXJmYWxkaWcgbW9udGVyaW5nIGhhciBha3RpdmVyYXRzIG1lZCB1cHBkYXRlcmluZ3NpbnRlcnZhbGxldCAlZCAiCisicy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5MQorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbm5vdFxuIgorImJlIGRpc2FibGVkIGlmIHRoZSBmaWxlc3lzdGVtIGlzIHJlYWRvbmx5LlxuIgorbXNnc3RyICIiCisiRnVua3Rpb25lbiBmw7ZyIHNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZyBrYW4gaW50ZVxuIgorImF2YWt0aXZlcmFzIG9tIGZpbHN5c3RlbWV0IMOkciBza3JpdnNreWRkYXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwOTkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiRmVsIHZpZCBsw6RzbmluZyBhdiBiaXRrYXJ0b3JcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTEwOAorIywgYy1mb3JtYXQKK21zZ2lkICJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90IG1hdGNoLiBleHBlY3RlZDogJXgsIGFjdHVhbDogJXhcbiIKK21zZ3N0ciAiTWFnaXNrdCB0YWwgaSBNTVAtYmxvY2sgc3TDpG1tZXIgaW50ZS4gIGbDtnJ2w6RudGF0OiAleCwgZmFrdGlza3Q6ICV4XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgInZpZCBsw6RzbmluZyBhdiBNTVAtYmxvY2suIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICIiCisiQXR0IG5vbGxzdMOkbGxhIGZsYWdnYW4gZmxleF9iZyBza3VsbGUgZsOlIGZpbHN5c3RlbWV0IGF0dCBibGlcbiIKKyJpbmtvbnNpc3RlbnQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIkZsYWdnYW4gaHVnZV9maWxlIGbDpXIgZW5kYXN0IG5vbGxzdMOkbGxhcyBuw6RyIGZpbHN5c3RlbWV0IMOkclxuIgorIm9tb250ZXJhdCBlbGxlciBtb250ZXJhdCBlbmJhcnQgZsO2ciBsw6RzbmluZy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2NworbXNnaWQgIkVuYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIkF0dCBha3RpdmVyYSBrb250cm9sbHN1bW1vciBrYW4gdGEgZXR0IHRhZy4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIkthbiBpbnRlIGFrdGl2ZXJhIG1ldGFkYXRhX2NzdW0gcMOlIGV0dCBtb250ZXJhdCBmaWxzeXN0ZW0hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiVXRzdHLDpGNrbmluZ2FyIMOkciBpbnRlIGFrdGl2ZXJhZGUuICBJIHRyw6RkZXQgbWVkIGZpbHV0c3Ryw6Rja25pbmdhciBrYW4gIgorImJsb2Nrc3VtbW9yIGJlcsOka25hcywgbWVkYW4gYmxvY2trYXJ0b3IgaW50ZSBrYW4gZGV0LiAgQXR0IGludGUgYWt0aXZlcmEgIgorInV0c3Ryw6Rja25pbmdhciByZWR1Y2VyYXIgdMOkY2tuaW5nZW4gYXYga29udHJvbGxzdW1tb3IgZsO2ciBtZXRhZGF0YS4gIEvDtnIgb20gIgorIm1lZCAtTyBleHRlbnRzIGbDtnIgYXR0IHLDpHR0YS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisiU3TDtmQgZsO2ciA2NC1iaXRhcnMgZmlsc3lzdGVtIMOkciBpbnRlIGFrdGl2ZXJhdC4gIERlIHN0w7ZycmUgZsOkbHRlbiBzb20gZGVubmEgIgorImZ1bmt0aW9uIGVyYmp1ZGVyIGfDtnIga29udHJvbGxzdW1tb3IgbWVkIGZ1bGwgc3R5cmthIG3DtmpsaWdhLiAgS8O2ciByZXNpemUyZnMgIgorIi1iIGbDtnIgYXR0IHLDpHR0YS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICJBdHQgYXZha3RpdmVyYSBrb250cm9sbHN1bW1vciBrYW4gdGEgZXR0IHRhZy4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMTAKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICJLYW4gaW50ZSBhdmFrdGl2ZXJhIG1ldGFkYXRhX2NzdW0gcMOlIGV0dCBtb250ZXJhdCBmaWxzeXN0ZW0hXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGVuYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICJLYW4gaW50ZSBha3RpdmVyYSA2NC1iaXRhcnNsw6RnZSBuw6RyIGRldCDDpHIgbW9udGVyYXQhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGRpc2FibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiS2FuIGludGUgYXZha3RpdmVyYSA2NC1iaXRhcnNsw6RnZSBuw6RyIGRldCDDpHIgbW9udGVyYXQhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlZhcm5pbmc6IGFrdGl2ZXJhdCBwcm9qZWt0IHV0YW4ga3ZvdCB0aWxsc2FtbWFuc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlZhcm5pbmc6IGZsYWdnYW4g4oCdXnF1b3Rh4oCdIMOlc2lkb3PDpHR0ZXIg4oCdLVHigJ0tYXJndW1lbnQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJBdHQgc8OkdHRhIGZ1bmt0aW9uZW4g4oCdbWV0YWRhdGFfY3N1bV9zZWVk4oCdIHN0w7ZkanMgYmFyYVxuIgorImbDtnIgZmlsc3lzdGVtIG1lZCBmdW5rdGlvbmVuIG1ldGFkYXRhX2NzdW0gYWt0aXZlcmFkLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzYyCittc2dpZCAiIgorIlVVSUQgaGFzIGNoYW5nZWQgc2luY2UgZW5hYmxpbmcgbWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSAiCisidW5tb3VudGVkIFxuIgorInRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byBtYXRjaCB0aGUgbmV3IFVVSUQuXG4iCittc2dzdHIgIiIKKyJVVUlEIGhhciDDpG5kcmF0cyBzZWRhbiBtZXRhZGF0YV9jc3VtIGFrdGl2ZXJhZGVzLiAgRmlsc3lzdGVtIG3DpXN0ZSB2YXJhICIKKyJvbW9udGVyYWRlIGbDtnIgYXR0IHPDpGtlcnQgc2tyaXZhIG9tIGFsbGEgbWV0YWRhdGEgdGlsbCBhdHQgbWF0Y2hhIGRldCBueWEgIgorIlVVSUQ6dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQwOAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIGEgam91cm5hbC5cbiIKK21zZ3N0ciAiRmlsc3lzdGVtZXQgaGFyIHJlZGFuIGVuIGpvdXJuYWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiXHR2aWQgZsO2cnPDtmsgYXR0IMO2cHBuYSBqb3VybmFsIHDDpSAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgb24gZGV2aWNlICVzOiAiCittc2dzdHIgIlNrYXBhciBqb3VybmFsIHDDpSBlbmhldCAlczogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgInZpZCB0aWxsw6RnZyBhdiBmaWxzeXN0ZW0gdGlsbCBqb3VybmFsIHDDpSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0NgorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgaW5vZGU6ICIKK21zZ3N0ciAiU2thcGFyIGpvdXJuYWxpbm9kOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0dmlkIGbDtnJzw7ZrIGF0dCBza2FwYSBqb3VybmFsZmlsIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICJuw6RyIGt2b3Rrb250ZXh0ZW4gaSBzdMO2ZGJpYmxpb3Rla2V0IGluaXRpZXJhZGVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICJuw6RyIGt2b3RncsOkbnNlciAoJWQpIHVwcGRhdGVyYWRlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAibsOkciBrdm90ZmlsICglZCkgc2tyZXZzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAibsOkciBrdm90ZmlsICglZCkgdG9ncyBib3J0IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRmVsYWt0aWd0IGt2b3RhbHRlcm5hdGl2IGFuZ2l2ZXQuXG4iCisiXG4iCisiRsO2bGphbmRlIGdpbHRpZ2Ega3ZvdGFsdGVybmF0aXYgZmlubnMgKHNraWNrYSBkZW0gc2VwYXJlcmFkZSBtZWQgIgorImtvbW1hdGVja2VuKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiS3VuZGUgaW50ZSB0b2xrYSBkYXR1bS0vdGlkc2FuZ2l2ZWxzZTogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2NTggbWlzYy90dW5lMmZzLmM6MTY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbW91bnRzIGNvdW50IC0gJXMiCittc2dzdHIgImZlbGFrdGlndCBhbnRhbCBtb250ZXJpbmdhciAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJmZWxha3RpZ3QgZ2lkL2dydXBwbmFtbiAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICJmZWxha3RpZ3QgaW50ZXJ2YWxsIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgImZlbGFrdGlnIGFuZGVsIHJlc2VydmVyYWRlIGJsb2NrIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLW8gZsOlciBlbmRhc3QgYW5nZXMgZW4gZ8OlbmciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MDAKK21zZ2lkICItTyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLU8gZsOlciBlbmRhc3QgYW5nZXMgZW4gZ8OlbmciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrcyBjb3VudCAtICVzIgorbXNnc3RyICJmZWxha3RpZ3QgYW50YWwgcmVzZXJ2ZXJhZGUgYmxvY2sgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdWlkL3VzZXIgbmFtZSAtICVzIgorbXNnc3RyICJmZWxha3RpZ3QgdWlkL2FudsOkbmRhcm5hbW4gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJmZWxha3RpZyBpbm9kc3N0b3JsZWsgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg3MAorIywgYy1mb3JtYXQKK21zZ2lkICJJbm9kZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28tICVzIgorbXNnc3RyICJJbm9kc3N0b3JsZWsgbcOlc3RlIHZhcmEgZW4gbXVsdGlwZWwgYXYgdHbDpS0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAibW1wX3VwZGF0ZV9pbnRlcnZhbCB0b28gYmlnOiAlbHVcbiIKK21zZ3N0ciAibW1wX3VwZGF0ZV9pbnRlcnZhbCDDpHIgZsO2ciBzdG9ydDogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKKyJTw6R0dGVyIHVwcGRhdGVyaW5nc2ludGVydmFsbCBmw7ZyIHNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZyB0aWxsICVsdSAiCisic2VrdW5kXG4iCittc2dzdHJbMV0gIiIKKyJTw6R0dGVyIHVwcGRhdGVyaW5nc2ludGVydmFsbCBmw7ZyIHNreWRkIG1vdCBmbGVyZmFsZGlnIG1vbnRlcmluZyB0aWxsICVsdSAiCisic2VrdW5kZXJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICJPZ2lsdGlnIFJBSUQta2xpdjogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaXBlLXdpZHRoOiAlc1xuIgorbXNnc3RyICJPZ2lsdGlnIFJBSUQtcmVtc2JyZWRkOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgaGFzaCBhbGdvcml0aG06ICVzXG4iCittc2dzdHIgIk9naWx0aWcgaGFzaC1hbGdvcml0bTogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICJTw6R0dGVyIHN0YW5kYXJkaGFzaGFsZ29yaXRtIHRpbGwgJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisiRmVsYWt0aWdhIGZsYWdnb3IgYW5naXZuYS5cbiIKKyJcbiIKKyJVdMO2a2FkZSBmbGFnZ29yIHNlcGFyZXJhcyBtZWQga29tbWFuLCBvY2gga2FuIHRhIGV0dCBhcmd1bWVudCBzb20gYXZkZWxhcyAiCisibWVkXG4iCisiXHRldHQgbGlraGV0c3RlY2tlbiAo4oCdPeKAnSkuXG4iCisiXG4iCisiR2lsdGlnYSB1dMO2a2FkZSBmbGFnZ29yIMOkcjpcbiIKKyJcdGNsZWFyX21tcFxuIgorIlx0aGFzaF9hbGc9PGhhc2gtYWxnb3JpdG0+XG4iCisiXHRtb3VudF9vcHRzPTx1dMO2a2FkZSBzdGFuZGFyZG1vbnRlcmluZ3NmbGFnZ29yPlxuIgorIlx0c3RyaWRlPTxSQUlELXN0eWNrZXN0b3JsZWsgcGVyIGRpc2sgaSBibG9jaz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRC1rbGl2wrdkYXRhZGlza2FyIGkgYmxvY2s+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgaW5vZGUgYml0bWFwXG4iCittc2dzdHIgIk1pc3NseWNrYWRlcyBhdHQgbMOkc2EgaW5vZHNiaXRrYXJ0YVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIk1pc3NseWNrYWRlcyBhdHQgbMOkc2EgYmxvY2tiaXRrYXJ0YVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJibG9jayBhdHQgZmx5dHRhIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQ0Cittc2dpZCAiRmFpbGVkIHRvIGFsbG9jYXRlIGJsb2NrIGJpdG1hcCB3aGVuIGluY3JlYXNpbmcgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICJLdW5kZSBpbnRlIGFsbG9rZXJhIGJsb2NrYml0a2FydGEgbsOkciBpbm9kc3N0b3JsZWtlbiDDtmthZGVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIkludGUgdGlsbHLDpGNrbGlndCBtZWQgdXRyeW1tZSBmw7ZyIGF0dCDDtmthIGlub2Rzc3Rvcmxla2VuIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICJNaXNzbHlja2FkZXMgb21sb2thbGlzZXJhIGJsb2NrIHVuZGVyIHN0b3JsZWtzw6RuZHJpbmcgYXYgaW5vZGVyIFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKyJGZWwgbsOkciBzdG9ybGVrZW4gcMOlIGlub2RlciDDpG5kcmFkZXMuXG4iCisiS8O2ciBlMnVuZG8gZsO2ciBhdHQgZ8O2cmEgZmlsc3lzdGVtc8OkbmRyaW5nYXJuYSBvZ2pvcmRhLiBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJNTVAtYmxvY2tldHMgbWFnaXNrYSB0YWwgw6RyIGZlbGFrdGlndC4gIEbDtnJzw7ZrIGF0dCByw6R0dGEgZGV0IGdlbm9tIGF0dCAiCisia8O2cmE6XG4iCisi4oCdZTJmc2NrLWYgJXPigJ1cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgxMQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiS2FuIGludGUgbW9kaWZpZXJhIGVuIGpvdXJuYWxlbmhldC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJJbm9kc3N0b3JsZWtlbiDDpHIgcmVkYW4gJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIkF0dCBrcnltcGEgaW5vZHNzdG9ybGVrZW4gc3TDtmRqcyBpbnRlXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICJPZ2lsdGlnIGlub2RzdG9ybGVrICVsdSAobWF4ICVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODQyCittc2dpZCAiUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiQXR0IMOkbmRyYSBzdG9ybGVrIHDDpSBpbm9kZXIga2FuIHRhIGV0dCB0YWcuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODg5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbWF4aW1hbCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICJTw6R0dGVyIG1heCBhbnRhbCBtb250ZXJpbmdhciB0aWxsICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4OTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBjdXJyZW50IG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIlPDpHR0ZXIgYWt0dWVsbHQgYW50YWwgbW9udGVyaW5nYXIgdGlsbCAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXJyb3IgYmVoYXZpb3IgdG8gJWRcbiIKK21zZ3N0ciAiU8OkdHRlciBmZWxiZXRlZW5kZSB0aWxsICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgZ2lkIHRvICVsdVxuIgorbXNnc3RyICJTw6R0dGVyIGdpZCBmw7ZyIHJlc2VydmVyYWRlIGJsb2NrIHRpbGwgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgaXMgdG9vIGJpZyAoJWx1KSIKK21zZ3N0ciAiaW50ZXJ2YWxsIG1lbGxhbiBrb250cm9sbGVyIMOkciBmw7ZyIHN0b3J0ICglbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgdG8gJWx1IHNlY29uZHNcbiIKK21zZ3N0ciAiU8OkdHRlciBpbnRlcnZhbGwgbWVsbGFuIGtvbnRyb2xsZXIgdGlsbCAlbHUgc2VrdW5kZXJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICJTw6R0dGVyIHByb2NlbnQgcmVzZXJ2ZXJhZGUgYmxvY2sgdGlsbCAlZyAlJSAoJWxsdSBibG9jaylcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzMAorIywgYy1mb3JtYXQKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MgY291bnQgaXMgdG9vIGJpZyAoJWxsdSkiCittc2dzdHIgImFudGFsIHJlc2VydmVyYWRlIGJsb2NrIGbDtnIgc3RvcnQgKCVsbHUpIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IHRvICVsbHVcbiIKK21zZ3N0ciAiU8OkdHRlciBhbnRhbCByZXNlcnZlcmFkZSBibG9jayB0aWxsICVsbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0MgorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBzcGFyc2Ugc3VwZXJibG9ja3MuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJGaWxzeXN0ZW1ldCBoYXIgcmVkYW4gZ2xlc2Egc3VwZXJibG9jay5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0NQorbXNnaWQgIiIKKyJcbiIKKyJTZXR0aW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdHQgc8OkdHRhIHN1cGVyYmxvY2tmbGFnZ2FuIGdsZXMgc3TDtmRqcyBpbnRlXG4iCisiZsO2ciBmaWxzeXN0ZW0gbWVkIGZ1bmt0aW9uZW4gbWV0YV9iZyBha3RpdmVyYWQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJGbGFnZ2FuIGbDtnIgZ2xlc2Egc3VwZXJibG9jayBzYXR0LiAgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjAKK21zZ2lkICIiCisiXG4iCisiQ2xlYXJpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIk5vbGxzdMOkbGxuaW5nIGF2IHN1cGVyYmxvY2tzZmxhZ2dhbiBnbGVzIHN0w7ZkanMgaW50ZS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2OAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHRpbWUgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdG8gJXNcbiIKK21zZ3N0ciAiU8OkdHRlciB0aWRwdW5rdCBmw7ZyIHNlbmFzdGUgZmlsc3lzdGVtc2tvbnRyb2xsIHRpbGwgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyB1aWQgdG8gJWx1XG4iCittc2dzdHIgIlPDpHR0ZXIgdWlkIGbDtnIgcmVzZXJ2ZXJhZGUgYmxvY2sgdGlsbCAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiRmVsIHZpZCBhbnbDpG5kbmluZyBhdiBjbGVhcl9tbXAuICBEZXQgbcOlc3RlIGFudsOkbmRhcyBtZWQgLWZcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAyNAorbXNnaWQgIiIKKyJUaGUgcXVvdGEgZmVhdHVyZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICJLdm90ZnVua3Rpb25lbiBrYW4gZW5kYXN0IMOkbmRyYXMgbsOkciBmaWxzeXN0ZW1ldCDDpHIgb21vbnRlcmF0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4Cittc2dpZCAiVGhlIFVVSUQgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiVVVJRDpuIGbDpXIgZW5kYXN0IMOkbmRyYXMgbsOkciBmaWxzeXN0ZW1ldCDDpHIgb21vbnRlcmF0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDUxCittc2dpZCAiIgorIklmIHlvdSBvbmx5IHVzZSBrZXJuZWxzIG5ld2VyIHRoYW4gdjQuNCwgcnVuICd0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCcgIgorImFuZCByZS1ydW4gdGhpcyBjb21tYW5kLlxuIgorbXNnc3RyICIiCisiT20gZHUgYmFyYSBhbnbDpG5kZXIga8Okcm5vciBueWFyZSDDpG4gdjQuNCwga8O2ciDigJ10dW5lMmZzIC1PICIKKyJtZXRhZGF0YV9jc3VtX3NlZWTigJ0gb2NoIGvDtnIgb20gZGV0dGEga29tbWFuZG8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNjAKK21zZ2lkICJTZXR0aW5nIFVVSUQgb24gYSBjaGVja3N1bW1lZCBmaWxlc3lzdGVtIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiQXR0IHPDpHR0YSBVVUlEIHDDpSBldHQga29udHJvbGxzdW1tZXJhdCBmaWxzeXN0ZW0ga2FuIHRhIGV0dCB0YWcuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDg1Cittc2dpZCAiSW52YWxpZCBVVUlEIGZvcm1hdFxuIgorbXNnc3RyICJPZ2lsdGlndCBVVUlELWZvcm1hdFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJCZWjDtnZlciB1cHBkYXRlcmEgam91cm5hbHN1cGVyYmxvY2suXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMjYKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICJJbm9kc3N0b3JsZWtlbiBmw6VyIGVuZGFzdCDDpG5kcmFzIG7DpHIgZmlsc3lzdGVtZXQgw6RyIG9tb250ZXJhdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiQXR0IMOkbmRyYSBpbm9kc3N0b3JsZWsgc3TDtmRzIGludGUgZsO2ciBmaWxzeXN0ZW0gbWVkIGZ1bmt0aW9uZW4gZmxleF9iZ1xuIgorImFrdGl2ZXJhZC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGlub2RlIHNpemUgJWx1XG4iCittc2dzdHIgIlPDpHR0ZXIgaW5vZHNzdG9ybGVrIHRpbGwgJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTUKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiTWlzc2x5Y2thZGVzIGF0dCDDpG5kcmEgaW5vZHNzdG9ybGVrXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICJTw6R0dGVyIGtsaXZzdG9ybGVrIHRpbGwgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICJTw6R0dGVyIHJlbXNicmVkZCB0aWxsICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICJTw6R0dGVyIHV0w7ZrYWRlIHN0YW5kYXJkbW9udGVyaW5nc2ZsYWdnb3IgdGlsbCDigJ0lc+KAnVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKyJWYXJuaW5nOiBqb3VybmFsZW4gw6RyIHNtdXRzaWcuICBEdSBrYW5za2UgdmlsbCBrw7ZyYSBvbSBqb3VybmFsZW4gc8OlIGjDpHI6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisia8O2ciBzZWRhbiBvbSBkZXR0YSBrb21tYW5kby4gIEFubmFycyBrYW4gZXZlbnR1ZWxsYSDDpG5kcmluZ2FyIHNrcml2YXMgw7Z2ZXJcbiIKKyJuw6RyIGpvdXJuYWxlbiDDpXRlcmjDpG10YXMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICLDhXRlcmjDpG10YXIgam91cm5hbGVuLlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDAKK21zZ2lkICI8cHJvY2VlZGluZz5cbiIKK21zZ3N0ciAiPGZvcnRzw6R0dGVyPlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIkZvcnRzw6R0dCDDpG5kw6UgKGVsbGVyIHbDpG50YSAlZCBzZWt1bmRlcik/IChqLG4pICIKKworIzogbWlzYy91dGlsLmM6MTA4Cittc2dpZCAiUHJvY2VlZCBhbnl3YXk/ICh5LG4pICIKK21zZ3N0ciAiRm9ydHPDpHR0IMOkbmTDpT8gKGosbikgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAibWtlMmZzIGZyYW10dmluZ2F0IMOkbmTDpS4gIEhvcHBhcyAvZXRjL210YWIgw6RyIGZlbGFrdGlnLlxuIgorCisjICVzIGthbiBibGkgImZpbHN5c3RlbSIgZWxsZXIgImpvdXJuYWwiLiAgSmFnIGhhciBsYWd0IHRpbGwgImVuIgorIyByZXNwZWt0aXZlICJldHQiIGkgw7Z2ZXJzw6R0dG5pbmdhcm5hIGF2IGRlc3NhIHN0csOkbmdhciBpc3TDpGxsZXQuCisjIEZlbHJhcHBvcnRlcmF0LgorIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICJza2FwYXIgaW50ZSAlcyBow6RyIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxNDUKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAibWtlMmZzIGZyYW10dmluZ2FkIMOkbmTDpS5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBtaW5uZSBmw7ZyIGF0dCB0b2xrYSBqb3VybmFsZmxhZ2dvciFcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiS3VuZGUgaW50ZSBoaXR0YSBqb3VybmFsZW5oZXQgc29tIG1hdGNoYXIgJXNcbiIKKworIzogbWlzYy91dGlsLmM6MjEzCittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiRmVsYWt0aWdhIGpvdXJuYWxmbGFnZ29yIGFuZ2l2bmEuXG4iCisiXG4iCisiSm91cm5hbGZsYWdnb3Igc2VwYXJlcmFzIG1lZCBrb21tYXRlY2tlbiwgb2NoIGthbiB0YSBldHQgYXJndW1lbnQgc29tXG4iCisiXHRhdmdyw6Ruc2FzIG1lZCBldHQgbGlraGV0c3RlY2tlbiAo4oCdPeKAnSkuXG4iCisiXG4iCisiR2lsdGlnYSBqb3VybmFsZmxhZ2dvciDDpHI6XG4iCisiXHRzaXplPTxqb3VybmFsc3RvcmxlayBpIG1lZ2FieXRlPlxuIgorIlx0ZW5oZXQ9PGpvdXJuYWxlbmhldD5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFscGxhdHM+XG4iCisiXG4iCisiSm91cm5hbHN0b3JsZWtlbiBtw6VzdGUgdmFyYSBtZWxsYW4gMTAyNCBvY2ggMTAyNDAwMDAgZmlsc3lzdGVtc2Jsb2NrLlxuIgorIlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNDQKK21zZ2lkICIiCisiXG4iCisiRmlsZXN5c3RlbSB0b28gc21hbGwgZm9yIGEgam91cm5hbFxuIgorbXNnc3RyICIiCisiXG4iCisiRmlsc3lzdGVtIGbDtnIgbGl0ZXQgZsO2ciBlbiBqb3VybmFsXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkRlbiBiZWfDpHJkYSBqb3VybmFsc3Rvcmxla2VuIMOkciAlZCBibG9jazsgZGVuIG3DpXN0ZSB2YXJhXG4iCisibWVsbGFuIDEwMjQgb2NoIDEwMjQwMDAwIGJsb2NrLiAgQXZicnl0ZXIuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkpvdXJuYWxzdG9ybGVrZW4gZsO2ciBzdG9yIGbDtnIgZmlsc3lzdGVtLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorIkRldHRhIGZpbHN5c3RlbSBrb21tZXIgYXV0b21hdGlza3Qga29udHJvbGxlcmFzIHZhciAlZCBtb250ZXJpbmcgZWxsZXJcbiIKKyIlZyBkYWcsIHZpbGtldCBzb20ga29tbWVyIGbDtnJzdC4gIEFudsOkbmQgdHVuZTJmcyAtYyBlbGxlciAtaSBmw7ZyIGF0dCDDpG5kcmEuXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0OQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1kXSBbLXAgcGlkZmlsZV0gWy1zIHNvY2tldHBhdGhdIFstVCB0aW1lb3V0XVxuIgorbXNnc3RyICJBbnbDpG5kbmluZzogJXMgWy1kXSBbLXAgcGlkLWZpbF0gWy1zIHV0dGFnc3PDtmt2w6RnXSBbLVQgdGlkc2dyw6Ruc11cbiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiAgICAgICAlcyBbLXJ8dF0gWy1uIGFudF0gWy1zIHV0dGFnc3PDtmt2w6RnXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAiZmVsYWt0aWdhIGFyZ3VtZW50IgorCisjOiBtaXNjL3V1aWRkLmM6MTczCittc2dpZCAiY29ubmVjdCIKK21zZ3N0ciAiYW5zbHV0IgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgInNrcml2IgorCisjOiBtaXNjL3V1aWRkLmM6MjAwCittc2dpZCAicmVhZCBjb3VudCIKK21zZ3N0ciAibMOkc2FudGFsIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAiZmVsYWt0aWcgc3ZhcnNsw6RuZ2QiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAidXVpZGQgZGFlbW9uIGFscmVhZHkgcnVubmluZyBhdCBwaWQgJXNcbiIKK21zZ3N0ciAidXVpZGQtZGVtb25lbiBzb20ga8O2cnMgcmVkYW4gbWVkIHBpZCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJLdW5kZSBpbnRlIHNrYXBhIHVuaXgtc3Ryw7ZtdXR0YWc6ICVzIgorCisjOiBtaXNjL3V1aWRkLmM6MzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIkt1bmRlIGludGUgYmluZGEgdW5peC11dHRhZyAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIkt1bmRlIGludGUgbHlzc25hIHDDpSB1bml4LXV0dGFnICVzOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MzU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgZnLDpW4ga2xpZW50LCBsZW4gPSAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6MzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIm9wZXJhdGlvbiAlZCwgaW5jb21pbmcgbnVtID0gJWRcbiIKK21zZ3N0ciAib3BlcmF0aW9uICVkLCBpbmtvbW1hbmRlIGFudCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiR2VuZXJlcmFkZSB0aWRzLVVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICJHZW5lcmVyYWRlIHNsdW1wbcOkc3NpZ3QgVVVJRDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICJHZW5lcmVyYWRlIHRpZHMtVVVJRCAlcyBvY2ggZWZ0ZXJmw7ZsamFuZGUgVVVJRFxuIgorbXNnc3RyWzFdICJHZW5lcmVyYWRlIHRpZHMtVVVJRCAlcyBvY2ggJWQgZWZ0ZXJmw7ZsamFuZGUgVVVJRDplclxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIkdlbmVyZXJhZGUgJWQgVVVJRDplcjpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICJPZ2lsdGlnIG9wZXJhdGlvbiAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDc3IG1pc2MvdXVpZGQuYzo0OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIG51bWJlcjogJXNcbiIKK21zZ3N0ciAiRmVsYWt0aWd0IHRhbDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNhbGxpbmcgdXVpZGQgZGFlbW9uICglcyk6ICVzXG4iCittc2dzdHIgIkZlbCB2aWQgYW5yb3AgYXYgdXVpZGQtZGVtb25lbiAoJXMpOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiJXMgb2NoIGVmdGVyZsO2bGphbmRlIFVVSURcbiIKK21zZ3N0clsxXSAiJXMgb2NoIGVmdGVyZsO2bGphbmRlICVkIFVVSUQ6ZXJcbiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICJMaXN0YSDDtnZlciBVVUlEOmVyOlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZXhwZWN0ZWQgcmVwbHkgbGVuZ3RoIGZyb20gc2VydmVyICVkXG4iCittc2dzdHIgIk92w6RudGFkIHN2YXJzbMOkbmdkIGZyw6VuIHNlcnZlcm4gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjU4NgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBraWxsIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkOiAlc1xuIgorbXNnc3RyICJLdW5kZSBpbnRlIGTDtmRhIHV1aWRkIHNvbSBrw7ZyIG1lZCBwaWQgJWQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iCittc2dzdHIgIkTDtmRhZGUgdXVpZGQgc29tIGvDtnJkZSBtZWQgcGlkICVkXG4iCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiQW52w6RuZG5pbmc6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBPbXLDpWRlc2R1bXA6XG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiI1x0TnVtPSVsbHUsIFNpemU9JWxsdSwgQ3Vyc29yPSVsbHUsIFNvcnRlZD0lbGx1XG4iCittc2dzdHIgIiNcdEFudGFsPSVsbHUsIFN0b3JsZWs9JWxsdSwgTWFya8O2cj0lbGx1LCBTb3J0ZXJhZD0lbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkFudsOkbmRuaW5nOiAlcyBbLWQgZmVsc8O2a25pbmdmbGFnZ29yXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZW5oZXQgWy1ifC1zfCIKKyJueV9zdG9ybGVrXSBbLXogZ8O2cl9vZ2pvcnRfZmlsXVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjcyCittc2dpZCAiRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiVXTDtmthciBpbm9kc3RhYmVsbGVuIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIkZseXR0YXIgb20gYmxvY2siCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiU8O2a2VyIGlnZW5vbSBpbm9kc3RhYmVsbCIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIlVwcGRhdGVyYXIgaW5vZHNyZWZlcmVuc2VyIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJGbHl0dGFyIGlub2RzdGFiZWxsIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJPa8OkbnQgcGFzcz8hPyIKKworIzogcmVzaXplL21haW4uYzo5MAorIywgYy1mb3JtYXQKK21zZ2lkICJCZWdpbiBwYXNzICVkIChtYXggPSAlbHUpXG4iCittc2dzdHIgIkLDtnJqYSBwYXNzICVkIChtYXggPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJBdHQgw6RuZHJhIHN0b3JsZWsgcMOlIGJpZ2FsbG9jLWZpbHN5c3RlbSBoYXIgaW50ZSB0ZXN0YXRzIGZ1bGx0IHV0LlxuIgorIkZvcnRzw6R0dCBww6UgZWdlbiByaXNrISAgQW52w6RuZCBkZW4gdHZpbmdhbmRlIGZsYWdnYW4gb20gZHUgdmlsbCBnw7ZyYVxuIgorImRldCDDpG5kw6UuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgIm7DpHIgJXMgw7ZwcG5hZGVzIgorCisjOiByZXNpemUvbWFpbi5jOjM3MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICJuw6RyIHN0YXR1c2luZm9ybWF0aW9uIGbDtnIgJXMgaMOkbXRhZGVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkvDtnIg4oCdZTJmc2NrIC1mICVz4oCdIGbDtnJzdC5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo0NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIgorbXNnc3RyICJVcHBza2F0dGFkIG1pbnN0YSBzdG9ybGVrIHDDpSBmaWxzeXN0ZW1ldDogJWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG5ldyBzaXplOiAlc1xuIgorbXNnc3RyICJPZ2lsdGlnIG55IHN0b3JsZWs6ICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIk55IHN0b3JsZWsgZsO2ciBzdG9yIGbDtnIgYXR0IHV0dHJ5Y2thcyBpIDMyIGJpdGFyXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICJOeSBzdG9ybGVrIG1pbmRyZSDDpG4gbWluaW11bSAoJWxsdSlcbiIKKworIzogcmVzaXplL21haW4uYzo1MzQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBsZW5ndGgiCittc2dzdHIgIk9naWx0aWcga2xpdmzDpG5nZCIKKworIzogcmVzaXplL21haW4uYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRlbiByeW1tYW5kZSBwYXJ0aXRpb25lbiAoZWxsZXIgZW5oZXRlbikgw6RyIGJhcmEgJWxsdSAoJWQgaykgYmxvY2suXG4iCisiRHUgYmVnw6RyZGUgZW4gbnkgc3RvcmxlayBww6UgJWxsdSBibG9jay5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiS2FuIGludGUgc2zDpSBww6Ugb2NoIGF2IDY0LWJpdGFyc2Z1bmt0aW9uZW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIkthbiBpbnRlIMOkbmRyYSA2NC1iaXRhcnNmdW5rdGlvbmVuIHDDpSBldHQgZmlsc3lzdGVtIHNvbSDDpHIgc3TDtnJyZSDDpG4gMsKzwrIgIgorImJsb2NrLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIkthbiBpbnRlIMOkbmRyYSA2NC1iaXRhcnNmdW5rdGlvbmVuIG7DpHIgZmlsc3lzdGVtZXQgw6RyIG1vbnRlcmF0LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU4MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVuYWJsZSB0aGUgZXh0ZW50cyBmZWF0dXJlIHdpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKyJmZWF0dXJlLlxuIgorbXNnc3RyICIiCisiQWt0aXZlcmEgdXRzdHLDpGNrbmluZ3NmdW5rdGlvbmVuIG1lZCB0dW5lMmZzIGbDtnJlIGFrdGl2ZXJpbmcgYXYgNjQtIgorImJpdGFyc2Z1bmt0aW9uZW4uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTg3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuICBOb3RoaW5nIHRvIGRvIVxuIgorIlxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXQgw6RyIHJlZGFuICVsbHUgKCVkIGspIGJsb2NrIGzDpW5ndC4gIEluZ2V0IGJlaMO2dmVyIGfDtnJhcyFcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIkZpbHN5c3RlbWV0IMOkciByZWRhbiA2NC1iaXRhcnMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJGaWxzeXN0ZW1ldCDDpHIgcmVkYW4gMzItYml0YXJzLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAiS29udmVydGVyYXIgZmlsc3lzdGVtZXQgdGlsbCA2NC1iaXRhcnMuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJLb252ZXJ0ZXJhciBmaWxzeXN0ZW1ldCB0aWxsIDMyLWJpdGFycy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgIsOEbmRyYXIgc3RvcmxlayBww6UgZmlsc3lzdGVtZXQgcMOlICVzIHRpbGwgJWxsdSAoJWQgaykgYmxvY2suXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgInZpZCBmw7Zyc8O2ayBhdHQgw6RuZHJhIHN0b3JsZWsgcMOlICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorIkvDtnIg4oCdZTJmc2NrIC1meSAlc+KAnSBmw7ZyIGF0dCBsYWdhIGZpbHN5c3RlbWV0XG4iCisiZWZ0ZXIgZGVuIGF2YnJ1dG5hIHN0b3JsZWtzw6RuZHJpbmdlbi5cbiIKKworIzogcmVzaXplL21haW4uYzo2MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIG9uICVzIGlzIG5vdyAlbGx1ICglZGspIGJsb2NrcyBsb25nLlxuIgorIlxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXQgcMOlICVzIMOkciBudSAlbGx1ICglZCBrKSBibG9jayBsw6VuZ3QuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byB0cnVuY2F0ZSAlcyIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCBrb3J0YSBhdiAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjgxCittc2dpZCAia2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6ZSB3aXRoIHNwYXJzZV9zdXBlcjIiCittc2dzdHIgImvDpHJuYW4gc3TDtmRqZXIgaW50ZSBzdG9ybGVrc8OkbmRyaW5nIHVwcGtvcHBsYXQgbWVkIHNwYXJzZV9zdXBlcjIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiRmlsc3lzdGVtIHDDpSAlcyDDpHIgbW9udGVyYXQgcMOlICVzLCBvbi1saW5lLXN0b3JsZWtzw6RuZHJpbmcga3LDpHZzXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkF0dCBrcnltcGEgdXBwa29wcGxhdCBzdMO2ZGpzIGludGUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJGaWxzeXN0ZW1ldCBzdMO2ZGplciBpbnRlIHN0b3JsZWtzw6RuZHJpbmcgdXBwa29wcGxhdCIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIkludGUgdGlsbHLDpGNrbGlndCBtZWQgcmVzZXJ2ZXJhZGUgZ2R0LWJsb2NrIGbDtnIgc3Rvcmxla3PDpG5kcmluZyIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiS8Okcm5hbiBzdMO2ZGplciBpbnRlIMOkbmRyaW5nIGF2IHN0b3JsZWsgcMOlIHPDpSBzdG9yYSBmaWxzeXN0ZW0iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIKK21zZ3N0ciAidmlkIGbDtnJzw7ZrIGF0dCDDtnBwbmEgbW9udGVyaW5nc3B1bmt0ICVzIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiR2FtbWFsdCBncsOkbnNzbml0dCBmw7ZyIHN0b3JsZWtzw6RuZHJpbmcgYmVnw6RydC5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIlLDpHR0aWdoZXQgYXR0IMOkbmRyYSBzdG9ybGVrIHDDpSBmaWxzeXN0ZW0gbmVrYXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgIlZpZCBrb250cm9sbCBhdiBzdMO2ZCBmw7ZyIHN0b3JsZWtzw6RuZHJpbmcgdXBwa29wcGxhdCIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiS8Okcm5hbiBzdMO2ZGplciBpbnRlIHN0b3JsZWtzw6RuZHJpbmcgdXBwa29wcGxhdCIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICJVdGbDtnIgZW4gc3Rvcmxla3PDpG5kcmluZyBvbi1saW5lIGF2ICVzIHRpbGwgJWxsdSAoJWQgaykgYmxvY2suXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gZXh0ZW5kIHRoZSBsYXN0IGdyb3VwIgorbXNnc3RyICJWaWQgZsO2cnPDtmsgYXR0IHV0w7ZrYSBkZW4gc2lzdGEgZ3J1cHBlbiIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gYWRkIGdyb3VwICMlZCIKK21zZ3N0ciAiVmlkIGbDtnJzw7ZrIGF0dCDDtnBwbmEgZ3J1cHAgbnIuICVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiRmlsc3lzdGVtZXQgcMOlICVzIMOkciBtb250ZXJhdCBww6UgJXMsIG9jaCBzdG9ybGVrc8OkbmRyaW5nIG9uLWxpbmUgc3TDtmRzIGludGUgIgorInDDpSBkZXR0YSBzeXN0ZW0uXG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW5vZGVzICglbGx1KSBtdXN0IGJlIGxlc3MgdGhhbiAldSIKK21zZ3N0ciAiaW5vZGVyICglbGx1KSBtw6VzdGUgdmFyYSBtaW5kcmUgw6RuICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAicmVzZXJ2ZXJhZGUgYmxvY2siCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMjgxCittc2dpZCAibWV0YS1kYXRhIGJsb2NrcyIKK21zZ3N0ciAibWV0YWRhdGFibG9jayIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgIm55YSBtZXRhYmxvY2siCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICJCb3JkZSBhbGRyaWcgaMOkbmRhISAgSW5nZW4gc2IgaSBzaXN0YSBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQ1Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIFVuZXhwZWN0ZWQgb2xkX2Rlc2MgaW4gc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICJCb3JkZSBhbGRyaWcgaMOkbmRhISAgT3bDpG50YWQgb2xkX2Rlc2MgaSBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIlNrdWxsZSBhbGRyaWcgaW50csOkZmZhOiBzdG9ybGVrc8OkbmRyaW5nc2lub2RlbiB0cmFzaWchXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiRVhUMkZTLWJpYmxpb3RlayB2ZXJzaW9uIDEuNDMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICJGZWwgbWFnaXNrdCB0YWwgZsO2ciBleHQyX2ZpbHN5cy1wb3N0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgYmFkYmxvY2tzX2xpc3QtcG9zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIGJhZGJsb2Nrc19pdGVyYXRlLXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfc2NhbiBzdHJ1Y3R1cmUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIGlub2RlX3NjYW4tcG9zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgaW9fY2hhbm5lbC1wb3N0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIHVuaXgtaW9fY2hhbm5lbC1wb3N0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICJGZWwgbWFnaXNrdCB0YWwgZsO2ciBpb19tYW5hZ2VyLXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmxvY2tfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgYmxvY2tfYml0bWFwLXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgaW5vZGVfYml0bWFwLXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJGZWwgbWFnaXNrdCB0YWwgZsO2ciBnZW5lcmljX2JpdG1hcC1wb3N0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIHRlc3QgaW9fY2hhbm5lbC1wb3N0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGRpcmVjdG9yeSBibG9jayBsaXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIga2F0YWxvZ2VuYmxvY2tsaXN0ZXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgaWNvdW50LXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgUG93ZXJRdWVzdC1pb19jaGFubmVsLXBvc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0MiBmaWxlIHN0cnVjdHVyZSIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgZXh0Mi1maWxzdHJ1a3R1ciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgdGFsIGbDtnIgZXh0Mi1hdmJpbGRzaHV2dWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIGlub2RzLWlvX2NoYW5uZWwtcG9zdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIkZlbCBtYWdpc2t0IHRhbCBmw7ZyIGV4dDQtdXRzdHLDpGNrbmluZ3NoYW5kdGFnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJGZWwgbWFnaXNrdCB0YWwgaSBzdXBlcmJsb2NrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgIkZpbGVzeXN0ZW12ZXJzaW9uZW4gw6RyIGbDtnIgaMO2ZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIkbDtnJzw7ZrIGF0dCBza3JpdmEgdGlsbCBldHQgZmlsc3lzdGVtIMO2cHBuYXQgc2tyaXZza3lkZGF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzMKK21zZ2lkICJDYW4ndCByZWFkIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJLYW4gaW50ZSBsw6RzYSBncnVwcGJlc2tyaXZhcmUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJLYW4gaW50ZSBza3JpdmEgZ3J1cHBiZXNrcml2YXJlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzUKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwIgorbXNnc3RyICJUcmFzaWcgZ3J1cHBiZXNrcml2YXJlOiBmZWxha3RpZ3QgYmxvY2sgZsO2ciBibG9ja2JpdGthcnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICJUcmFzaWcgZ3J1cHBiZXNrcml2YXJlOiBmZWxha3RpZ3QgYmxvY2sgZsO2ciBpbm9kc2JpdGthcnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgIlRyYXNpZyBncnVwcGJlc2tyaXZhcmU6IGTDpWxpZ3QgYmxvY2sgZsO2ciBpbm9kc3RhYmVsbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJLYW4gaW50ZSBza3JpdmEgZW4gaW5vZHNiaXRrYXJ0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIkthbiBpbnRlIGzDpHNhIGVuIGlub2RzYml0a2FydGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MAorbXNnaWQgIkNhbid0IHdyaXRlIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICJLYW4gaW50ZSBza3JpdmEgZW4gYmxvY2tiaXRrYXJ0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiS2FuIGludGUgbMOkc2EgZW4gYmxvY2tiaXRrYXJ0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIkthbiBpbnRlIHNrcml2YSBlbiBpbm9kc3RhYmVsbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiS2FuIGludGUgbMOkc2EgZW4gaW5vZHN0YWJlbGwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiS2FuIGludGUgbMOkc2EgbsOkc3RhIGlub2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAiRmlsc3lzdGVtZXQgaGFyIG92w6RudGFkIGJsb2Nrc3RvcmxlayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJFWFQyLWthdGFsb2cgc2thZGFkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDcKK21zZ2lkICJBdHRlbXB0IHRvIHJlYWQgYmxvY2sgZnJvbSBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHJlYWQiCittc2dzdHIgIkbDtnJzw7ZrIGF0dCBsw6RzYSBibG9jayBmcsOlbiBmaWxzeXN0ZW1ldCByZXN1bHRlcmFkZSBpIGVuIGtvcnQgbMOkc25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorIkbDtnJzw7ZrIGF0dCBza3JpdmEgYmxvY2sgdGlsbCBmaWxzeXN0ZW1ldCByZXN1bHRlcmFkZSBpIGVuIGtvcnQgc2tyaXZuaW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIkluZ2V0IGxlZGlndCB1dHJ5bW1lIGkga2F0YWxvZ2VuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiSW5vZHNiaXRrYXJ0YW4gaW50ZSBpbmzDpHN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTEKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiQmxvY2tiaXRrYXJ0YW4gaW50ZSBpbmzDpHN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTIKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciIKK21zZ3N0ciAiT3RpbGzDpXRldCBpbm9kc251bW1lciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIk90aWxsw6V0ZXQgYmxvY2tudW1tZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NAorbXNnaWQgIkludGVybmFsIGVycm9yIGluIGV4dDJmc19leHBhbmRfZGlyIgorbXNnc3RyICJJbnRlcm50IGZlbCBpIGV4dDJmc19leHBhbmRfZGlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgIkludGUgdGlsbHLDpGNrbGlndCBtZWQgdXRyeW1tZSBmw7ZyIGF0dCBieWdnYSBkZXQgZsO2cmVzbGFnbmEgZmlsc3lzdGVtZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIk90aWxsw6V0ZXQgYmxvY2tudW1tZXIgc2tpY2thdCB0aWxsIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICJPdGlsbMOldGV0IGJsb2NrbnVtbWVyIHNraWNrYXQgdGlsbCBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU4Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiT3RpbGzDpXRldCBibG9ja251bW1lciBza2lja2F0IHRpbGwgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJPdGlsbMOldGV0IGlub2RzbnVtbWVyIHNraWNrYXQgdGlsbCBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MAorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiT3RpbGzDpXRldCBpbm9kc251bW1lciBza2lja2F0IHRpbGwgZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgIk90aWxsw6V0ZXQgaW5vZHNudW1tZXIgc2tpY2thdCB0aWxsIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisiRsO2cnPDtmsgYXR0IGZ1c2thIHRpbGwgc2x1dGV0IGF2IGJsb2NrYml0a2FydGFuIGJvcnRvbSBkZXQgcmlrdGlnYSBzbHV0ZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiIgorIkbDtnJzw7ZrIGF0dCBmdXNrYSB0aWxsIHNsdXRldCBhdiBpbm9kc2JpdGthcnRhbiBib3J0b20gZGV0IHJpa3RpZ2Egc2x1dGV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJPdGlsbMOldGV0IGluZGlyZWt0YmxvY2sgaGl0dGF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiT3RpbGzDpXRldCBkdWJiZWx0IGluZGlyZWt0YmxvY2sgaGl0dGF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiT3RpbGzDpXRldCB0cmlwcGVsdCBpbmRpcmVrdGJsb2NrIGhpdHRhdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY3Cittc2dpZCAiQmxvY2sgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJCbG9ja2JpdGthcnRvcm5hIMOkciBpbnRlIGRlc2FtbWEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OAorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiSW5vZHNiaXRrYXJ0b3JuYSDDpHIgaW50ZSBkZXNhbW1hIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiT3RpbGzDpXRldCBlbGxlciBmZWxmb3JtYXQgZW5oZXRzbmFtbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJFbiBibG9ja2dydXBwIHNha25hciBlbiBpbm9kc3RhYmVsbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJFeHQyLXN1cGVyYmxvY2tldCDDpHIgc2thZGF0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIk90aWxsw6V0ZXQgZ2VuZXJpc2t0IGJpdHRhbCBza2lja2F0IHRpbGwgZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MworbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICJPdGlsbMOldGV0IGdlbmVyaXNrdCBiaXR0YWwgc2tpY2thdCB0aWxsIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NAorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiT3RpbGzDpXRldCBnZW5lcmlza3QgYml0dGFsIHNraWNrYXQgdGlsbCBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICJBbGx0ZsO2ciBtw6VuZ2Egc3ltYm9saXNrYSBsw6Rua2FyIHDDpXRyw6RmZmFkZS4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICLDhXRlcmFucm9wc2Z1bmt0aW9uZW4ga29tbWVyIGludGUgYXR0IGhhbnRlcmEgZGV0dGEgZmFsbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc3Cittc2dpZCAiVGhlIGlub2RlIGlzIGZyb20gYSBiYWQgYmxvY2sgaW4gdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICJJbm9kZW4gw6RyIGZyw6VuIGV0dCBkw6VsaWd0IGJsb2NrIGkgaW5vZHN0YWJlbGxlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiRmlsc3lzdGVtZXQgaGFyIGZ1bmt0aW9uZXIgc29tIGludGUgc3TDtmRqcyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIkZpbHN5c3RlbWV0IGhhciBlbmRhc3QtbMOkc2JhcnQtZnVua3Rpb25lciBzb20gaW50ZSBzdMO2ZGpzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODAKK21zZ2lkICJJTyBDaGFubmVsIGZhaWxlZCB0byBzZWVrIG9uIHJlYWQgb3Igd3JpdGUiCittc2dzdHIgIklPLWthbmFsZW4gbWlzc2x5Y2thZGVzIHPDtmthIHZpZCBsw6RzbmluZyBlbGxlciBza3Jpdm5pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MQorbXNnaWQgIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIKK21zZ3N0ciAiTWlubmVzYWxsb2tlcmluZyBtaXNzbHlja2FkZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAiT2dpbHRpZ3QgYXJndW1lbnRldCBza2lja2F0IHRpbGwgZXh0Mi1iaWJsaW90ZWtldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiS3VuZGUgaW50ZSBhbGxva2VyYSBibG9jayBpIGV4dDItZmlsc3lzdGVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKK21zZ2lkICJDb3VsZCBub3QgYWxsb2NhdGUgaW5vZGUgaW4gZXh0MiBmaWxlc3lzdGVtIgorbXNnc3RyICJLdW5kZSBpbnRlIGFsbG9rZXJhIGlub2RlciBpIGV4dDItZmlsc3lzdGVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAiRXh0Mi1pbm9kIMOkciBpbnRlIGVuIGthdGFsb2ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIkbDtnIgbcOlbmdhIHJlZmVyZW5zZXIgaSB0YWJlbGxlbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg3Cittc2dpZCAiRmlsZSBub3QgZm91bmQgYnkgZXh0Ml9sb29rdXAiCittc2dzdHIgIkZpbGVuIGhpdHRhZGVzIGludGUgYXYgZXh0Ml9sb29rdXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OAorbXNnaWQgIkZpbGUgb3BlbiByZWFkLW9ubHkiCittc2dzdHIgIkZpbGVuIMO2cHBuYXMgc2tyaXZza3lkZGFkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkV4dDIta2F0YWxvZ2Jsb2NrIGhpdHRhZGVzIGludGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MAorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJFeHQyLWthdGFsb2dlbiBmaW5ucyByZWRhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgIk9pbXBsZW1lbnRlcmFkIGV4dDItYmlibGlvdGVrc2Z1bmt0aW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIkFudsOkbmRhcmFubnVsbGVyaW5nIGJlZ8OkcmQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJFeHQyLWZpbCBmw7ZyIHN0b3IiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiQW5naXZlbiBqb3VybmFsZW5oZXQgw6RyIGludGUgZW4gYmxvY2tlbmhldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxvY2sgaW50ZSBmdW5uZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAiSm91cm5hbGVuIG3DpXN0ZSB2YXJhIG1pbnN0IDEwMjQgYmxvY2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAiRWogc3TDtmRkIGpvdXJuYWx2ZXJzaW9uIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgIkZlbCB2aWQgbMOkc25pbmcgYXYgZW4gZXh0ZXJuIGpvdXJuYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorbXNnaWQgIkpvdXJuYWwgbm90IGZvdW5kIgorbXNnc3RyICJKb3VybmFsZW4gaW50ZSBmdW5uZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiS2F0YWxvZy1oYXNoIHN0w7ZkanMgaW50ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiT2dpbHRpZ3QgYmxvY2tudW1tZXIgZsO2ciB1dMO2a2F0IGF0dHJpYnV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAyCittc2dpZCAiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCittc2dzdHIgIkthbiBpbnRlIHNrYXBhIGV0dCBmaWxzeXN0ZW0gbWVkIGJlZ8OkcnQgYW50YWwgaW5vZGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICJFMmltYWdlLcO2Z29uYmxpY2tzYmlsZCBhbnbDpG5kcyBpbnRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgIkbDtnIgbcOlbmdhIHJlc2VydmVyYWRlIGdydXBwaWRlbnRpZmllcmFyYmxvY2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiU3Rvcmxla3PDpG5kcmluZ3Npbm9kZW4gw6RyIHRyYXNpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNgorbXNnaWQgIlRyaWVkIHRvIHNldCBibG9jayBibWFwIHdpdGggbWlzc2luZyBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAiRsO2cnPDtmt0ZSBzw6R0dGEgZW4gYmxvY2tiaXRrYXJ0YSBtZWQgc2FrbmF0IGluZGlyZWt0YmxvY2siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDcKK21zZ2lkICJUREI6IFN1Y2Nlc3MiCittc2dzdHIgIlREQjogR2ljayBicmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDgKK21zZ2lkICJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCittc2dzdHIgIlREQjogVHJhc2lnIGRhdGFiYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJUREI6IEkvTy1mZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIlREQjogTMOlc25pbmdzZmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTExCittc2dpZCAiVERCOiBPdXQgb2YgbWVtb3J5IgorbXNnc3RyICJUREI6IFNsdXQgcMOlIG1pbm5lIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJUREI6IFBvc3RlbiBmaW5ucyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMworbXNnaWQgIlREQjogTG9jayBleGlzdHMgb24gb3RoZXIga2V5cyIKK21zZ3N0ciAiVERCOiBMw6VzIGZpbm5zIHDDpSBhbmRyYSBueWNrbGFyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE0Cittc2dpZCAiVERCOiBJbnZhbGlkIHBhcmFtZXRlciIKK21zZ3N0ciAiVEJEOiBPZ2lsdGlnIHBhcmFtZXRlciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJUREI6IFBvc3RlbiBmaW5ucyBpbnRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE2Cittc2dpZCAiVERCOiBXcml0ZSBub3QgcGVybWl0dGVkIgorbXNnc3RyICJUREI6IFNrcml2bmluZyDDpHIgaW50ZSB0aWxsw6V0ZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTcKK21zZ2lkICJFeHQyZnMgZGlyZWN0b3J5IGJsb2NrIGxpc3QgaXMgZW1wdHkiCittc2dzdHIgIkV4dDJmcy1rYXRhbG9nYmxvY2tsaXN0YW4gw6RyIHRvbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIkbDtnJzw7ZrIGF0dCDDpG5kcmEgZW4gYmxvY2ttYXBwbmluZyB2aWEgZW4gZW5kYXN0IGzDpHNiYXIgYmxvY2tpdGVyYXRvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgbnVtbWVyIGbDtnIgc3BhcmFkIHPDtmt2w6RnIHRpbGwgZXh0NC11dHN0csOkY2tuaW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgZ2VuZXJpYyBiaXRtYXAiCittc2dzdHIgIkZlbCBtYWdpc2t0IG51bW1lciBmw7ZyIDY0LWJpdGFycyBhbGxtw6RuIGJpdGthcnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIgZsO2ciA2NC1iaXRhcnMgYmxvY2tiaXRrYXJ0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiRmVsIG1hZ2lza3QgbnVtbWVyIGbDtnIgNjQtYml0YXJzIGlub2RzYml0a2FydGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzEzIgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE2IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE5IgorbXNnc3RyICJGZWwgbWFnaXNrdCBudW1tZXIg4oCUIFJFU0VSVkVSQVRfMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIlRyYXNpZ3QgdXRzdHLDpGNrbmluZ3NodXZ1ZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJUcmFzaWd0IHV0c3Ryw6Rja25pbmdzaW5kZXgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAiVHJhc2lnIHV0c3Ryw6Rja25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIkluZ2V0IGZyaXR0IHV0cnltbWUgaSB1dHN0csOkY2tuaW5nc2thcnRhbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNAorbXNnaWQgIklub2RlIGRvZXMgbm90IHVzZSBleHRlbnRzIgorbXNnc3RyICJJbm9kZXIgYW52w6RuZGVyIGludGUgdXRzdHLDpGNrbmluZ2FyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiSW5nZW4g4oCdbsOkc3Rh4oCdLXV0c3Ryw6Rja25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAiSW5nZW4g4oCdZsO2cmVnw6VlbmRl4oCdLXV0c3Ryw6Rja25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzcKK21zZ2lkICJObyAndXAnIGV4dGVudCIKK21zZ3N0ciAiSW5nZW4g4oCddXBw4oCdLXV0c3Ryw6Rja25pbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICJJbmdlbiDigJ1uZXLigJwtdXRzdHLDpGNrbmluZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAiSW5nZW4gYWt0dWVsbCBub2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkV4dDJmcy1vcGVyYXRpb25lbiBzdMO2ZGpzIGludGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDEKK21zZ2lkICJObyByb29tIHRvIGluc2VydCBleHRlbnQgaW4gbm9kZSIKK21zZ3N0ciAiSW5nZW4gcGxhdHMgYXR0IGzDpGdnYSBpbiBlbiB1dHN0csOkY2tuaW5nIGkgbm9kZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDIKK21zZ2lkICJTcGxpdHRpbmcgd291bGQgcmVzdWx0IGluIGVtcHR5IG5vZGUiCittc2dzdHIgIlVwcGRlbG5pbmcgc2t1bGxlIHJlc3VsdGVyYSBpIGVuIHRvbSBub2QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICJVdHN0csOkY2tuaW5nZW4gaW50ZSBmdW5uZW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiT3BlcmF0aW9uZW4gc3TDtmRqcyBpbnRlIGbDtnIgaW5vZGVyIHNvbSBpbm5laMOlbGxlciB1dHN0csOkY2tuaW5nYXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDUKK21zZ2lkICJFeHRlbnQgbGVuZ3RoIGlzIGludmFsaWQiCittc2dzdHIgIlV0c3Ryw6Rja25pbmdzbMOkbmdkZW4gw6RyIGZlbGFrdGlnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ2Cittc2dpZCAiSS9PIENoYW5uZWwgZG9lcyBub3Qgc3VwcG9ydCA2NC1iaXQgYmxvY2sgbnVtYmVycyIKK21zZ3N0ciAiSS9PLWthbmFsZXIgc3TDtmRqZXIgaW50ZSA2NC1iaXRhcnMgYmxvY2tudW1tZXIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisiS2FuIGludGUga29udHJvbGxlcmEgb20gZmlsc3lzdGVtIMOkciBtb250ZXJhZGUgZsO2ciBhdHQgbXRhYi1maWxlbiBzYWtuYXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIkZpbHN5c3RlbWVuIMOkciBmw7ZyIHN0b3JhIGbDtnIgYXR0IGFudsOkbmRhIGdhbW1hbGRhZ3MgYml0a2FydG9yIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBvZ2lsdGlndCBtYWdpc2t0IG51bW1lciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIk1NUDogZW5oZXRlbiDDpHIgZsO2ciBuw6RydmFyYW5kZSBha3RpdiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDogZnNjayBrw7ZycyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IGJsb2NrbnVtbWVyIHV0YW5mw7ZyIGZpbHN5c3RlbWV0cyByw6Rja3ZpZGQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIk1NUDogdXRmw7ZyIGVuIG9rw6RuZCBvcGVyYXRpb24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVA6IGZpbHN5c3RlbWV0IGFudsOkbmRzIGZvcnRmYXJhbmRlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU1Cittc2dpZCAiTU1QOiBvcGVuIHdpdGggT19ESVJFQ1QgZmFpbGVkIgorbXNnc3RyICJNTVA6IMO2cHBuaW5nIG1lZCBPX0RJUkVDVCBtaXNzbHlja2FkZXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTYKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICJTdG9ybGVrIHDDpSBibG9ja2dydXBwYmVza3JpdmFyZSBmZWxha3RpZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICJJbm9kZW5zIGtvbnRyb2xsc3VtbWEgc3TDpG1tZXIgaW50ZSBtZWQgaW5vZGVuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU4Cittc2dpZCAiSW5vZGUgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAiS29udHJvbGxzdW1tYW4gZsO2ciBpbm9kc2JpdGthcnRhbiBzdMOkbW1lciBpbnRlIG1lZCBiaXRrYXJ0YW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTkKK21zZ2lkICJFeHRlbnQgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50IGJsb2NrIgorbXNnc3RyICJVdMO2a25pbmdlbnMgYmxvY2trb250cm9sbHN1bW1hIHN0w6RtbWVyIGludGUgdXTDtmtuaW5nc2Jsb2NrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIkthdGFsb2dibG9ja2V0IGhhciBpbnRlIHBsYXRzIGbDtnIga29udHJvbGxzdW1tYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJLYXRhbG9nYmxvY2tzdW1tYW4gc3TDpG1tZXIgaW50ZSBtZWQga2F0YWxvZ2Jsb2NrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2siCittc2dzdHIgIiIKKyJLb250cm9sbHN1bW1hbiBmw7ZyIGJsb2NrZXQgZsO2ciB1dMO2a2FkZSBhdHRyaWJ1dCBzdMOkbW1lciBpbnRlIG1lZCBibG9ja2V0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYzCittc2dpZCAiU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrIgorbXNnc3RyICJLb250cm9sbHN1bW1hbiBmw7ZyIHN1cGVyYmxvY2tldCBzdMOkbW1lciBpbnRlIG1lZCBzdXBlcmJsb2NrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAiT2vDpG5kIGtvbnRyb2xsc3VtbWVhbGdvcml0bSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NQorbXNnaWQgIk1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2siCittc2dzdHIgIktvbnRyb2xsc3VtbWFuIGbDtnIgTU1QLWJsb2NrZXQgc3TDpG1tZXIgaW50ZSBtZWQgTU1QLWJsb2NrZXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIkV4dDItZmlsZW4gZmlubnMgcmVkYW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjcKK21zZ2lkICJCbG9jayBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJCbG9ja2JpdGthcnRhbiBzdMOkbW1lciBpbnRlIG1lZCBiaXRrYXJ0YW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICJLYW4gaW50ZSBpdGVyZXJhIMO2dmVyIGRhdGFibG9jayBmw7ZyIGVuIGlub2Qgc29tIGlubmVow6VsbGVyIGlubGluZS1kYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIG5hbWUgbGVuZ3RoIgorbXNnc3RyICJFdHQgdXTDtmthdCBhdHRyaWJ1dCBoYXIgZW4gb2dpbHRpZyBuYW1ubMOkbmdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiRXR0IHV0w7ZrYXQgYXR0cmlidXQgaGFyIGVuIG9naWx0aWcgdsOkcmRlbMOkbmdkIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiS29udHJvbGxzdW1tYW4gZsO2ciB1dMO2a2FkZSBhdHRyaWJ1dCBoYXIgZW4gZmVsYWt0aWcgaGFzaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJCbG9jayBtZWQgdXTDtmthZGUgYXR0cmlidXQgaGFyIGV0dCBmZWxha3RpZ3QgaHV2dWQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAiTnlja2VsbiBmw7ZyIHV0w7ZrYWRlIGF0dHJpYnV0IGZpbm5zIGludGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIk9mdWxsc3TDpG5kaWd0IHV0cnltbWUgZsO2ciBhdHQgbGFncmEgdXTDtmthZGUgYXR0cmlidXRkYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIkZpbHN5c3RlbWV0IHNha25hciBmdW5rdGlvbmVuIGV4dF9hdHRyIGVsbGVyIGlubGluZV9kYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJJbm9kZXIgaGFyIGludGUgaW5saW5lLWRhdGEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiSW5nYSBibG9jayBmw7ZyIGVuIGlub2QgbWVkIGlubGluZS1kYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc4Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiSW5nZXQgZnJpdHQgdXRyeW1tZSBpIGlubGluZS1kYXRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgc3RydWN0dXJlIgorbXNnc3RyICJGZWwgbWFnaXNrdCB0YWwgZsO2ciBzdHJ1a3R1ciBmw7ZyIHV0w7ZrYWRlIGF0dHJpYnV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICJJbm9kZW4gdmVya2FyIGlubmVow6VsbGEgc2tyw6RwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIG9mZnNldCIKK21zZ3N0ciAiVXTDtmthZGUgYXR0cmlidXQgaGFyIGV0dCBvZ2lsdGlndCB2w6RyZGVhdnN0w6VuZCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICJKb3VybmFsZmxhZ2dvcm5hIMOkciBpbmtvbnNpc3RlbnRhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIkfDtnItb2dqb3J0LWZpbGVuIMOkciB0cmFzaWciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKK21zZ2lkICJXcm9uZyB1bmRvIGZpbGUgZm9yIHRoaXMgZmlsZXN5c3RlbSIKK21zZ3N0ciAiRmVsYWt0aWcgZ8O2ci1vZ2pvcnQtZmlsIGbDtnIgZGV0dGEgZmlsc3lzdGVtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg1Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICJGaWxzeXN0ZW1ldCDDpHIgdHJhc2lndCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NgorbXNnaWQgIkJhZCBDUkMgZGV0ZWN0ZWQgaW4gZmlsZSBzeXN0ZW0iCittc2dzdHIgIkZlbGFrdGlnIENSQyB1cHB0w6Rja3QgaSBmaWxzeXN0ZW1ldCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NworbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiSm91cm5hbHN1cGVyYmxvY2tldCDDpHIgdHJhc2lndCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIlN0b3JsZWtzw6RuZHJpbmdzaW5vZGVuIMOkciB0cmFzaWciCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTEKK21zZ2lkICJQcm9maWxlIHZlcnNpb24gMC4wIgorbXNnc3RyICJQcm9maWwgdmVyc2lvbiAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJGZWxha3RpZ3QgbWFnaXNrdCB2w6RyZGUgaSBwcm9maWxlX25vZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICJQcm9maWxzZWt0aW9uZW4gaW50ZSBmdW5uZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTQKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiUHJvZmlscmVsYXRpb25lbiBpbnRlIGZ1bm5lbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICJGw7Zyc8O2ayBhdHQgbMOkZ2dhIHRpbGwgZW4gcmVsYXRpb24gdGlsbCBlbiBub2Qgc29tIGludGUgw6RyIGVuIHNla3Rpb24iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIkV0dCBodXZ1ZCB0aWxsIGVuIHByb2ZpbHNla3Rpb24gaGFyIGV0dCB2w6RyZGUgc2tpbHQgZnLDpW4gbm9sbCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkZlbGFrdGlnIGzDpG5rYWQgbGlzdGEgaSBwcm9maWxzdHJ1a3R1cmVyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAiRmVsYWt0aWcgZ3J1cHBuaXbDpSBpIHByb2ZpbHN0cnVrdHVyZXIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJGZWxha3RpZyBmw7Zyw6RsZHJhcGVrYXJlIGkgcHJvZmlsc3RydWt0dXJlciIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICJGZWxha3RpZ3QgbWFnaXNrdCB2w6RyZGUgaSBwcm9maWxpdGVyYXRvciIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMQorbXNnaWQgIkNhbid0IHNldCB2YWx1ZSBvbiBzZWN0aW9uIG5vZGUiCittc2dzdHIgIkthbiBpbnRlIHPDpHR0YSB2w6RyZGUgcMOlIHNla3Rpb25zbm9kIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICJPZ2lsdGlndCBhcmd1bWVudCBza2lja2F0IHRpbGwgcHJvZmlsYmlibGlvdGVrZXQiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiRsO2cnPDtmsgYXR0IMOkbmRyYSBlbiBlbmRhc3QgbMOkc2JhciBwcm9maWwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIkh1dnVkZXQgdGlsbCBwcm9maWxzZWt0aW9uZW4gw6RyIGludGUgcMOlIHRvcHBuaXbDpW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjUKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSBzZWN0aW9uIGhlYWRlciIKK21zZ3N0ciAiU3ludGF4ZmVsIGkgaHV2dWRldCB0aWxsIHByb2ZpbHNla3Rpb25lbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICJTeW50YXhmZWwgaSBlbiBwcm9maWxyZWxhdGlvbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNworbXNnaWQgIkV4dHJhIGNsb3NpbmcgYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiRXh0cmEgYXZzbHV0YW5kZSBrbGFtbWVyIGkgcHJvZmlsZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiSW5sZWRhbmRlIGtsYW1tZXIgc2FrbmFzIGkgcHJvZmlsZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJGZWxha3RpZ3QgbWFnaXNrdCB2w6RyZGUgaSBwcm9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9zZWN0aW9uX3QiCittc2dzdHIgIkZlbGFrdGlndCBtYWdpc2t0IHbDpHJkZSBpIHByb2ZpbGVfc2VjdGlvbl90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMxCittc2dpZCAiSXRlcmF0aW9uIHRocm91Z2ggYWxsIHRvcCBsZXZlbCBzZWN0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIkl0ZXJhdGlvbiDDtnZlciBhbGxhIHRvcHBuaXbDpXNla3Rpb25lciBzdMO2ZGpzIGludGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzIKK21zZ2lkICJJbnZhbGlkIHByb2ZpbGVfc2VjdGlvbiBvYmplY3QiCittc2dzdHIgIk9naWx0aWd0IHByb2ZpbGVfc2VjdGlvbi1vYmpla3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICJJbmdhIGZsZXIgc2VrdGlvbmVyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgIkZlbGFrdGlnIG5hbW5tw6RuZ2Qgc2tpY2thZCB0aWxsIGZyw6VnZXJ1dGluZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAiSW5nZW4gcHJvZmlsZmlsIMO2cHBlbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNgorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfdCIKK21zZ3N0ciAiRmVsYWt0aWd0IG1hZ2lza3QgdsOkcmRlIGkgcHJvZmlsZV9maWxlX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKK21zZ2lkICJDb3VsZG4ndCBvcGVuIHByb2ZpbGUgZmlsZSIKK21zZ3N0ciAiS3VuZGUgaW50ZSDDtnBwbmEgcHJvZmlsZmlsZW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJTZWt0aW9uZW4gZmlubnMgcmVkYW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIk9naWx0aWd0IGJvb2xlc2t0IHbDpHJkZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MAorbXNnaWQgIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKK21zZ3N0ciAiT2dpbHRpZ3QgaGVsdGFsc3bDpHJkZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICJGZWxha3RpZ3QgbWFnaXNrdCB2w6RyZGUgaSBwcm9maWxlX2ZpbGVfZGF0YV90IgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgIlx0c2VuYXN0IG1vbnRlcmFkIHDDpSAlcyBww6UgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHRzZW5hc3QgbW9udGVyYWQgcMOlICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRjcmVhdGVkIG9uICVzIgorbXNnc3RyICJcdHNrYXBhZCAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiXHRzZW5hc3QgbW9kaWZpZXJhZCBww6UgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE1MAorIywgYy1mb3JtYXQKK21zZ2lkICJGb3VuZCBhICVzIHBhcnRpdGlvbiB0YWJsZSBpbiAlc1xuIgorbXNnc3RyICJIaXR0YWRlIGVuICVzLXBhcnRpdGlvbnN0YWJlbGwgaSAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiRmlsZW4gJXMgZmlubnMgaW50ZSBvY2ggaW5nZW4gc3RvcmxlayBhbmdhdnMuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAiU2thcGFyIG5vcm1hbCBmaWwgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJLdW5kZSBpbnRlIMO2cHBuYSAlczogJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTk0Cittc2dpZCAiIgorIlxuIgorIlRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgZGlkIHlvdSBzcGVjaWZ5IGl0IGNvcnJlY3RseT9cbiIKK21zZ3N0ciAiIgorIlxuIgorIkVuaGV0ZW4gZXhpc3RlcmFyIHVwcGVuYmFybGlnZW4gaW50ZTsgYW5nYXYgZHUgZGVuIGtvcnJla3Q/XG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIxNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBibG9jayBzcGVjaWFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgw6RyIGludGUgZW4gYmxvY2tzcGVjaWFsZW5oZXQuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMgaW5uZWjDpWxsZXIgZXR0ICVzLWZpbHN5c3RlbSBtZWQgZXRpa2V0dGVuIOKAnSVz4oCdXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzIGlubmVow6VsbGVyIGV0dCAlcy1maWxzeXN0ZW1cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGAlcycgZGF0YVxuIgorbXNnc3RyICIlcyBpbm5laMOlbGxlciDigJ0lc+KAnS1kYXRhXG4iCisKKyN+IG1zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKKyN+IG1zZ3N0ciAiS8O2ciBlMmZzY2sgcMOlIGZpbHN5c3RlbWV0LlxuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3RyLmdtbyBiL2UyZnNwcm9ncy9wby90ci5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMxNmUzMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby90ci5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3RyLnBvIGIvZTJmc3Byb2dzL3BvL3RyLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYTQzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vdHIucG8KQEAgLTAsMCArMSw4ODkwIEBACisjIFR1cmtpc2ggdHJhbnNsYXRpb25zIGZvciBlMmZzcHJvZ3MgbWVzc2FnZXMuCisjIENvcHlyaWdodCAoQykgMjAwNyBUaGVvZG9yZSBUc28gKG1zZ2lkcykKKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIworIyBOaWxnw7xuIEJlbG1hIEJ1Z8O8bmVyIDxuaWxndW5AYnVndW5lci5uYW1lLnRyPiwgMjAwMSwuLi4sIDIwMDcuCisjIFZvbGthbiBHZXplciA8dmxrbmd6ckBnbWFpbC5jb20+LCAyMDEzLgorIy4gVGhlIHN0cmluZ3MgaW4gZTJmc2NrJ3MgcHJvYmxlbS5jIGNhbiBiZSB2ZXJ5IGhhcmQgdG8gdHJhbnNsYXRlLAorIy4gc2luY2UgdGhlIHN0cmluZ3MgYXJlIGV4cGFuZGVkIGluIHR3byBkaWZmZXJlbnQgd2F5cy4gIEZpcnN0IG9mIGFsbCwKKyMuIHRoZXJlIGlzIGFuIEAtZXhwYW5zaW9uLCB3aGVyZSBzdHJpbmdzIGxpa2UgIkBpIiBhcmUgZXhwYW5kZWQgdG8KKyMuICJpbm9kZSIsIGFuZCBzbyBvbi4gIEluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0cmFuc2xhdG9ycywgdGhlCisjLiBlMmZzcHJvZ3MgcG8gdGVtcGxhdGUgZmlsZSBoYXMgYmVlbiBlbmhhbmNlZCB3aXRoIGNvbW1lbnRzIHRoYXQgc2hvdworIy4gdGhlIEAtZXhwYW5zaW9uLCBmb3IgdGhlIHN0cmluZ3MgaW4gdGhlIHByb2JsZW0uYyBmaWxlLgorIy4KKyMuIFRyYW5zbGF0b3JzIGFyZSBmcmVlIHRvIHVzZSB0aGUgQC1leHBhbnNpb24gZmFjaWxpdHkgaWYgdGhleSBzbworIy4gY2hvb3NlLCBieSBwcm92aWRpbmcgdHJhbnNsYXRpb25zIGZvciBzdHJpbmdzIGluIGUyZnNjay9tZXNzYWdlLmMuCisjLiBUaGVzZSB0cmFuc2xhdGlvbiBjYW4gY29tcGxldGVseSByZXBsYWNlIGFuIGV4cGFuc2lvbjsgZm9yIGV4YW1wbGUsCisjLiBpZiAiYmJsb2NrIiAod2hpY2ggaW5kaWNhdGVkIHRoYXQgIkBiIiB3b3VsZCBiZSBleHBhbmRlZCB0byAiYmxvY2siKQorIy4gaXMgdHJhbnNsYXRlZCBhcyAiZGRhdGVudmVybHVzdCIsIHRoZW4gIkBkIiB3aWxsIGJlIGV4cGFuZGVkIHRvCisjLiAiZGF0ZW52ZXJsdXN0Ii4gIEFsdGVybmF0aXZlbHksIHRyYW5zbGF0b3JzIGNhbiBzaW1wbHkgbm90IHVzZSB0aGUKKyMuIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGF0IGFsbC4KKyMuCisjLiBUaGUgc2Vjb25kIGV4cGFuc2lvbiB3aGljaCBpcyBkb25lIGZvciBlMmZzY2sncyBwcm9ibGVtLmMgbWVzc2FnZXMgaXMKKyMuIGEgZHluYW1pYyAlLWV4cGFuc2lvbiwgd2hpY2ggZXhwYW5kcyAlaSBhcyBhbiBpbm9kZSBudW1iZXIsIGFuZCBzbworIy4gb24uICBBIHRhYmxlIG9mIHRoZXNlIGV4cGFuc2lvbnMgY2FuIGJlIGZvdW5kIGJlbG93LiAgTm90ZSB0aGF0CisjLiAlLWV4cHJlc3Npb25zIHRoYXQgYmVnaW4gd2l0aCAiJUQiIGFuZCAiJUkiIGFyZSB0d28tY2hhcmFjdGVyCisjLiBleHBhbnNpb25zOyBzbyBmb3IgZXhhbXBsZSwgIiVJdSIgZXhwYW5kcyB0byB0aGUgaW5vZGUncyB1c2VyIGlkCisjLiBvd25lcnNoaXAgZmllbGQgKGlub2RlLT5pX3VpZCkuICBBbHNvIHRoZSAiJUIiIGV4cGFuc2lvbiBpcyBzcGVjaWFsOgorIy4gaXQgY2FuIGV4cGFuZCB0byBlaXRoZXIgdGhlIHN0cmluZyAiaW5kaXJlY3QgYmxvY2siIChwb3NzaWJseSBwcmVjZWRlZAorIy4gYnkgdGhlIHdvcmQgImRvdWJsZSIgb3IgInRyaXBsZSIpLCBvciB0aGUgc3RyaW5nICJibG9jayAjIiBpbW1lZGlhdGVseQorIy4gZm9sbG93ZWQgYnkgYW4gaW50ZWdlciBpbmRpY2F0aW5nIGEgYmxvY2sgc2VxdWVuY2UgbnVtYmVyLgorIy4gIAorIy4gCSViCTxibGs+CQkJYmxvY2sgbnVtYmVyCisjLiAJJUIJImluZGlyZWN0IGJsb2NrIiB8ICJibG9jayAjIjxibGtjb3VudD4Jc3RyaW5nIHwgc3RyaW5nK2ludGVnZXIKKyMuIAklYwk8YmxrMj4JCQlibG9jayBudW1iZXIKKyMuIAklRGkJPGRpcmVudD4gLT4gaW5vCQlpbm9kZSBudW1iZXIKKyMuIAklRG4JPGRpcmVudD4gLT4gbmFtZQlzdHJpbmcKKyMuIAklRHIJPGRpcmVudD4gLT4gcmVjX2xlbgorIy4gCSVEbAk8ZGlyZW50PiAtPiBuYW1lX2xlbgorIy4gCSVEdAk8ZGlyZW50PiAtPiBmaWxldHlwZQorIy4gCSVkCTxkaXI+IAkJCWlub2RlIG51bWJlcgorIy4gCSVnCTxncm91cD4JCQlpbnRlZ2VyCisjLiAJJWkJPGlubz4JCQlpbm9kZSBudW1iZXIKKyMuIAklSXMJPGlub2RlPiAtPiBpX3NpemUKKyMuIAklSVMJPGlub2RlPiAtPiBpX2V4dHJhX2lzaXplCisjLiAJJUliCTxpbm9kZT4gLT4gaV9ibG9ja3MKKyMuIAklSWwJPGlub2RlPiAtPiBpX2xpbmtzX2NvdW50CisjLiAJJUltCTxpbm9kZT4gLT4gaV9tb2RlCisjLiAJJUlNCTxpbm9kZT4gLT4gaV9tdGltZQorIy4gCSVJRgk8aW5vZGU+IC0+IGlfZmFkZHIKKyMuIAklSWYJPGlub2RlPiAtPiBpX2ZpbGVfYWNsCisjLiAJJUlkCTxpbm9kZT4gLT4gaV9kaXJfYWNsCisjLiAJJUl1CTxpbm9kZT4gLT4gaV91aWQKKyMuIAklSWcJPGlub2RlPiAtPiBpX2dpZAorIy4gCSVJdAk8c3RyPgkJCWZpbGUgdHlwZQorIy4gCSVqCTxpbm8yPgkJCWlub2RlIG51bWJlcgorIy4gCSVtCTxjb21fZXJyIGVycm9yIG1lc3NhZ2U+CisjLiAJJU4JPG51bT4KKyMuIAklcAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4KKyMuIAklUAkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiA8ZGlyZW50Pi0+aW5vIHdpdGggPGlubzI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LiAgKElmIGRpcmVudCBpcyBOVUxMCisjLiAJCQkJdGhlbiByZXR1cm4gdGhlIHBhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vMj4pCisjLiAJJXEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxkaXI+CisjLiAJJVEJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+IHdpdGggPGRpcj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuCisjLiAJJXMJPHN0cj4JCQltaXNjZWxsYW5lb3VzIHN0cmluZworIy4gCSVTCQliYWNrdXAgc3VwZXJibG9jaworIy4gCSVYCTxudW0+CWhleGFkZWNpbWFsIGZvcm1hdAorIy4KK21zZ2lkICIiCittc2dzdHIgIiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGUyZnNwcm9ncyAxLjQyLjhcbiIKKyJSZXBvcnQtTXNnaWQtQnVncy1UbzogdHl0c29AYWx1bS5taXQuZWR1XG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDktMDQgMjE6MjctMDQwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMTEtMDEgMjI6NDkrMDEwMFxuIgorIkxhc3QtVHJhbnNsYXRvcjogVm9sa2FuIEdlemVyIDx2bGtuZ3pyQGdtYWlsLmNvbT5cbiIKKyJMYW5ndWFnZS1UZWFtOiBUdXJraXNoIDxnbnUtdHItdTEyYUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCisiTGFuZ3VhZ2U6IHRyXG4iCisiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0yOyBwbHVyYWw9KG4gIT0gMSk7XG4iCisiWC1HZW5lcmF0b3I6IExva2FsaXplIDEuNVxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAiSGF0YWzEsSBibG9rICV1IGthcHNhbWTEscWfxLE7IHlva3NhecSxbGTEsS5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICItIGhhdGFsxLEgYmxva2xhciBkw7zEn8O8bcO8bmRlIGRvxJ9ydWx1ayBkZW5ldGxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgZMO8xJ/DvG3DvCBva3VudXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAiLSAlcyBhw6fEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICItICclcycgdmVyaSB5b2x1IGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgIi0gZG9zeWFkYW4gaGF0YWzEsSBibG9rbGFyIGxpc3Rlc2luaW4gb2t1bm1hc8SxIHPEsXJhc8SxbmRhIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgZMO8xJ/DvG3DvCBnw7xuY2VsbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTMzCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGlsbGVnYWwgYmxvY2sgJXUgZm91bmQgaW4gYmFkIGJsb2NrIGlub2RlLiAgQ2xlYXJlZC5cbiIKK21zZ3N0ciAiVXlhcsSxOiBIYXRhbMSxIGJsb2sgZMO8xJ/DvG3DvG5kZSAldS4gYmxvayBrdXJhbGTEscWfxLE7IHRlbWl6bGVuZGkuXG4iCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIiUzJHMgacWfbGVtaSBzxLFyYXPEsW5kYSBibG9rICUxJGx1IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUgKCUyJHMpLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJibG9rICVsdSBva3VudXJrZW4gaGF0YSBvbHXFn3R1ICglcykuICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY2IGUyZnNjay9laGFuZGxlci5jOjExNQorbXNnaWQgIklnbm9yZSBlcnJvciIKK21zZ3N0ciAiSGF0YSBnw7ZybWV6ZGVuIGdlbGluZGkiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjY3Cittc2dpZCAiRm9yY2UgcmV3cml0ZSIKK21zZ3N0ciAiWWVuaWRlbiB5YXoiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICIlMyRzIGnFn2xlbWkgc8SxcmFzxLFuZGEgYmxvayAlMSRsdSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1ICglMiRzKS4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIiVsdSBibG/En3UgeWF6xLFsxLFya2VuIGhhdGE6ICVzLiAgIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAiYm/FnyBkaXppbiBibG9rbGFyxLEiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAiYm/FnyBkaXppbiBlxZ9sZW1pIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiRW1wdHkgZGlyZWN0b3J5IGJsb2NrICV1ICgjJWQpIGluIGlub2RlICV1XG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzoyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgZmlsZW5hbWUgbmJsb2NrcyBibG9ja3NpemVcbiIKK21zZ3N0ciAiJXM6ICVzIGRvc3lhX2lzbWkgYmxva19zYXnEsXPEsSBibG9rX2JveXVcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIklsbGVnYWwgbnVtYmVyIG9mIGJsb2NrcyFcbiIKK21zZ3N0ciAiQmxvayBzYXnEsXPEsSBrdXJhbGTEscWfxLEhXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgIkJsb2sgdGFtcG9udSBheXLEsWxhbWFkxLEgKGJveXU9JWQpXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKKyMsIGZ1enp5Cittc2dpZCAiZXh0ZW50IHJlYnVpbGQgaW5vZGUgbWFwIgorbXNnc3RyICJub3JtYWwgZG9zeWEgZMO8xJ/DvG3DvCBlxZ9sZW1pIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAiS3VsbGFuxLFtxLE6ICVzIGRpc2tcbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJMS0ZMU0JVRiBpb2N0bCBub3Qgc3VwcG9ydGVkISAgQ2FuJ3QgZmx1c2ggYnVmZmVycy5cbiIKK21zZ3N0ciAiQkxLRkxTQlVGIGlvY3RsIGRlc3Rla2xlbm1peW9yISAgVGFtcG9ubGFyIGJvxZ9hbHTEsWxhbWFkxLEuXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAiS3VsbGFuxLFtxLE6ICVzIFstRl0gWy1JIGTDvMSfw7xtX3RhbXBvbl9ibG9rbGFyxLFdIGF5Z8SxdFxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgIiVzIHRlbWl6bGlrIGnDp2luIGHDp8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjg2IGUyZnNjay91bml4LmM6MTAzOSByZXNpemUvbWFpbi5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiCittc2dzdHIgIiVzIGJvxZ9hbHTEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAnJXMnIgorbXNnc3RyICItICVzIGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTkgZTJmc2NrL3NjYW50ZXN0LmM6MTE0IG1pc2MvZTJpbWFnZS5jOjEyOTMKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgImTDvMSfw7xtIHRhcmFtYXPEsSBiYcWfbGF0xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgInNvbnJha2kgZMO8xJ/DvG1lIGdlw6dpbGlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL2lzY2FuLmM6MTM2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBzY2FubmVkLlxuIgorbXNnc3RyICIldSBkw7zEn8O8bSB0YXJhbmTEsS5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICJnw7xubMO8ayBkb3N5YXPEsSBzdXBlciBibG/En3Ugb2t1bnV5b3JcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlczogZ2XDp2VybGkgZ8O8bWzDvGsgZG9zeWFzxLEgc3VwZXIgYmxvxJ91IHlva1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY3NQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogam91cm5hbCB0b28gc2hvcnRcbiIKK21zZ3N0ciAiJXM6IGfDvG1sw7xrIGRvc3lhc8SxIMOnb2sga8Sxc2FcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NjggbWlzYy9mdXNlMmZzLmM6Mzc4NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogcmVjb3ZlcmluZyBqb3VybmFsXG4iCittc2dzdHIgIiVzOiBnw7xubMO8ayBkb3N5YXPEsW5hIGfDtnJlIGt1cnRhcsSxbMSxeW9yXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogc2FsdC1va3VudXIgZHVydW1kYXlrZW4gZ8O8bmzDvGsgZG9zeWFzxLFuYSBnw7ZyZSBrdXJ0YXJtYSB5YXDEsWxhbWF6XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICIlcyB5ZW5pZGVuIGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImFlayDDtnplbGxpayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAiQWF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJiYmxvayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTYKK21zZ2lkICJCYml0bWFwIgorbXNnc3RyICJCYml0ZcWfbGVtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY3PEsWvEscWfdMSxcm1hIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDYmF6xLEgZG9zeWEgc2lzdGVtaSBibG9rbGFyxLEgaWxlIMOnZWxpxZ9peW9yIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOQorbXNnaWQgImRkaXJlY3RvcnkiCittc2dzdHIgImRkaXppbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjAKK21zZ2lkICJEZGVsZXRlZCIKK21zZ3N0ciAiRHNpbGluZW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIxCittc2dpZCAiZWVudHJ5IgorbXNnc3RyICJlZ2lyZGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVARSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZmRvc3lhIHNpc3RlbWkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGJWkgKCVRKSBkw7zEn8O8bcO8IGnDp2luIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ2dydXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoSFRSRUUgZGl6aW4gZMO8xJ/DvG0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpZMO8xJ/DvG0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIklrdXJhbGTEscWfxLEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImpnw7xubMO8ayIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibGxvc3QrZm91bmQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGJpciBiYcSfZMSxciIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibcOnb2sgZMO8xJ/DvG1sw7wiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMzCittc2dpZCAibmludmFsaWQiCittc2dzdHIgIm5nZcOnZXJzaXoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJvYXJ0xLFrIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJwc29ydW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM3Cittc2dpZCAicnJvb3QgQGkiCittc2dzdHIgInJrw7ZrIGTDvMSfw7xtw7wiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM4Cittc2dpZCAic3Nob3VsZCBiZSIKK21zZ3N0ciAic29sbWFsxLF5ZMSxIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTc8O8cGVyIGJsb2siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQwCittc2dpZCAidXVuYXR0YWNoZWQiCittc2dzdHIgInViYcSfbGFudMSxc8SxeiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDEKK21zZ2lkICJ2ZGV2aWNlIgorbXNnc3RyICJ2YXlnxLF0IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDMKK21zZ2lkICJ6emVyby1sZW5ndGgiCittc2dzdHIgInpzxLFmxLFyIHV6dW5sdWtsdSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8TlVMTCBkw7zEn8O8bT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU1Cittc2dpZCAiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIKK21zZ3N0ciAiPEhhdGFsxLEgYmxva2xhciBkw7zEn8O8bcO8PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKKyMsIGZ1enp5Cittc2dpZCAiPFRoZSB1c2VyIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPGfDvG5sw7xrIGTDvMSfw7xtw7w+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorIywgZnV6enkKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPEdydXAgdGFuxLFtbGF5xLFjxLEgZMO8xJ/DvG3DvD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjzDlm55w7xrbGV5aWNpIGTDvMSfw7xtw7w+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPEt1cnRhcsSxbGFuIGRpemluaW4gZMO8xJ/DvG3DvD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPEdydXAgdGFuxLFtbGF5xLFjxLEgZMO8xJ/DvG3DvD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYyCittc2dpZCAiPFRoZSBqb3VybmFsIGlub2RlPiIKK21zZ3N0ciAiPGfDvG5sw7xrIGTDvMSfw7xtw7w+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPFllZGVrIGTDvMSfw7xtIDk+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2NAorbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSAxMD4iCittc2dzdHIgIjxZZWRlayBkw7zEn8O8bSAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICJvbGHEn2FuIGRvc3lhIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAiZGl6aW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAia2FyYWt0ZXIgYXlnxLF0xLEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM5Cittc2dpZCAiYmxvY2sgZGV2aWNlIgorbXNnc3RyICJheWfEsXTEsSBlbmdlbGxlIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgImlzaW1saSB2ZXJpIHlvbHUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQzCittc2dpZCAic3ltYm9saWMgbGluayIKK21zZ3N0ciAic2VtYm9saWsgYmHEnyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAieXV2YSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAiMCVvIGtpcGluZGUgYmlsaW5tZXllbiBkb3N5YSB0w7xyw7wiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCisjLCBmdXp6eQorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJrdWxsYW7EsW1kYWtpIGJsb2sgZcWfbGVtaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjQKK21zZ2lkICJkb3VibGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKKyMsIGZ1enp5Cittc2dpZCAidHJpcGxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICIldSBkw7zEn8O8bcO8bsO8biBkb2xheWzEsSBibG9rbGFyxLEgb2t1bnV5b3IiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4CisjLCBmdXp6eQorbXNnaWQgInRyYW5zbGF0b3IgYmxvY2siCittc2dzdHIgIm1ldGEtdmVyaSBibG9rbGFyxLEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCisjLCBmdXp6eQorbXNnaWQgImJsb2NrICMiCittc2dzdHIgImJibG9rIgorCisjOiBlMmZzY2svcGFzczFiLmM6MjIyCittc2dpZCAibXVsdGlwbHkgY2xhaW1lZCBpbm9kZSBtYXAiCittc2dzdHIgInRla3JhcmxhbmFuIGJsb2tsYXLEsW4gZMO8xJ/DvG0gZcWfbGVtaSIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY2FuJ3QgZmluZCBkdXBfYmxrIGZvciAlbGx1XG4iCittc2dzdHIgImnDpyBoYXRhOyAldSBpw6dpbiBkdXBfYmxrIGJ1bHVuYW3EsXlvclxuIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTAzCittc2dpZCAicmV0dXJuZWQgZnJvbSBjbG9uZV9maWxlX2Jsb2NrIgorbXNnc3RyICJjbG9uZV9maWxlX2Jsb2NrIGnFn2xldmluZGVuIGTDtm5kw7xyw7xsZMO8IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAiacOnIGhhdGE7ICV1IGnDp2luIGR1cF9ibGsgYnVsdW5hbcSxeW9yXG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICLEsMOnIGhhdGE6ICV1IGnDp2luIGRpemluIGJpbGdpbGVyaSBidWx1bmFtxLF5b3IuIgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgImJsb2sgZGl6aW5pIG9rdW51eW9yIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTExCittc2dpZCAiaW4tdXNlIGlub2RlIG1hcCIKK21zZ3N0ciAia3VsbGFuxLFtZGFraSBkw7zEn8O8bSBlxZ9sZW1pIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTIyCittc2dpZCAiZGlyZWN0b3J5IGlub2RlIG1hcCIKK21zZ3N0ciAiZGl6aW4gZMO8xJ/DvG3DvCBlxZ9sZW1pIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTMyCittc2dpZCAicmVndWxhciBmaWxlIGlub2RlIG1hcCIKK21zZ3N0ciAibm9ybWFsIGRvc3lhIGTDvMSfw7xtw7wgZcWfbGVtaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAia3VsbGFuxLFtZGFraSBibG9rIGXFn2xlbWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKKyMsIGZ1enp5Cittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJtZXRhLXZlcmkgYmxva2xhcsSxIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjA5Cittc2dpZCAib3BlbmluZyBpbm9kZSBzY2FuIgorbXNnc3RyICJkw7zEn8O8bSB0YXJhbWEgYcOnxLFsxLF5b3IiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIjEuIGdlw6dpxZ8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiCittc2dzdHIgIiV1IGTDvMSfw7xtw7xuw7xuIGRvbGF5bMSxIGJsb2tsYXLEsSBva3VudXlvciIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgImhhdGFsxLEgZMO8xJ/DvG0gZcWfbGVtaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA4NAorbXNnaWQgImlub2RlIGluIGJhZCBibG9jayBtYXAiCittc2dzdHIgImhhdGFsxLEgYmxvayBlxZ9sZW1pbmRla2kgZMO8xJ/DvG0iCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMDQKK21zZ2lkICJpbWFnaWMgaW5vZGUgbWFwIgorbXNnc3RyICJpbWFnaWMgZMO8xJ/DvG0gZcWfbGVtaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICJ0ZWtyYXJsYW5hbiBibG9rbGFyxLFuIGXFn2xlbWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIyNDUKK21zZ2lkICJleHQgYXR0ciBibG9jayBtYXAiCittc2dzdHIgImVrIMO2emVsbGlrIGJsb8SfdSBlxZ9sZW1pIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICJibG9rIGJpdGXFn2xlbWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgImTDvMSfw7xtIGJpdGXFn2xlbWkiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAiZMO8xJ/DvG0gdGFibG9zdSIKKworIzogZTJmc2NrL3Bhc3MyLmM6Mjg3Cittc2dpZCAiUGFzcyAyIgorbXNnc3RyICIyLiBnZcOnacWfIgorCisjOiBlMmZzY2svcGFzczIuYzoxMDQyIGUyZnNjay9wYXNzMi5jOjEyMDcKK21zZ2lkICJDYW4gbm90IGNvbnRpbnVlLiIKK21zZ3N0ciAiRGV2YW0gZWRpbGVtaXlvci4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgImTDvMSfw7xtbGVyaSBpbmRla3NsaSBiaXRlxZ9sZW0iCisKKyM6IGUyZnNjay9wYXNzMy5jOjg2Cittc2dpZCAiUGVhayBtZW1vcnkiCittc2dzdHIgIkRvcnVrIGJlbGxlayIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICIzLiBnZcOnacWfIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgImTDvMSfw7xtIGTDtm5nw7xzw7wgc2FwdGFtYSBiaXRlxZ9sZW1pIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIjQuIGdlw6dpxZ8iCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICI1LiBnZcOnacWfIgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIoa29tdXQgaXN0ZW1pIHlvaykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIkTDvHplbHQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMKK21zZ2lkICJDbGVhciIKK21zZ3N0ciAiVGVtaXpsZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICJLb251bWxhbmTEsXIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiVGFoc2lzIGV0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2Cittc2dpZCAiRXhwYW5kIgorbXNnc3RyICJHZW5pxZ9sZXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTcKK21zZ2lkICJDb25uZWN0IHRvIC9sb3N0K2ZvdW5kIgorbXNnc3RyICIvbG9zdCtmb3VuZCBhIGJhxJ9sYW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgIk9sdcWfdHVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAiS3VydGFyxLFsYWNha2xhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MAorbXNnaWQgIlRydW5jYXRlIgorbXNnc3RyICJLxLFycCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICJEw7zEn8O8bcO8IHRlbWl6bGUiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAiVmF6Z2XDpyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICJBecSxciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NAorbXNnaWQgIkNvbnRpbnVlIgorbXNnc3RyICJEZXZhbSBldCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICLDh29rIGTDvMSfw7xtbMO8IGJsb2tsYXLEsSBrb3B5YWxhciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NgorbXNnaWQgIkRlbGV0ZSBmaWxlIgorbXNnc3RyICJEb3N5YXnEsSBTaWwiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAixLBsZXRpbGVyaSBlbmdlbGxlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4Cittc2dpZCAiVW5saW5rIgorbXNnc3RyICJCYcSfxLEga2FsZMSxciIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OQorbXNnaWQgIkNsZWFyIEhUcmVlIGluZGV4IgorbXNnc3RyICJIVHJlZSBpbmRla3NpbmkgdGVtaXpsZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MAorbXNnaWQgIlJlY3JlYXRlIgorbXNnc3RyICJZZW5pZGVuIG9sdcWfdHVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIoSMSww4dCxLBSxLApIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIkTDnFpFTFTEsExExLAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICJURU3EsFpMRU5ExLAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIKK21zZ2lkICJSRUxPQ0FURUQiCittc2dzdHIgIktPTlVNTEFOREkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODMKK21zZ2lkICJBTExPQ0FURUQiCittc2dzdHIgIlRBSFPEsFMgRUTEsExExLAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAiR0VOxLDFnkxFVMSwTETEsCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NQorbXNnaWQgIlJFQ09OTkVDVEVEIgorbXNnc3RyICJURUtSQVIgQkHEnkxBTkRJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2Cittc2dpZCAiQ1JFQVRFRCIKK21zZ3N0ciAiT0xVxZ5UVVJVTERVIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIktVUlRBUklMQULEsEzEsFJMRVIgTMSwU1RFTEVORMSwIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4Cittc2dpZCAiVFJVTkNBVEVEIgorbXNnc3RyICJLSVJQSUxESSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIkTDnMSew5xNIFRFTcSwWkxFTkTEsCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIlZBWkdFw4fEsExExLAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAiQVlSSUxESSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgIlPDnFLDnFlPUiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MworbXNnaWQgIk1VTFRJUExZLUNMQUlNRUQgQkxPQ0tTIENMT05FRCIKK21zZ3N0ciAiw4dPSyBEw5zEnsOcTUzDnCBCTE9LTEFSIEtPUFlBTEFOREkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQKK21zZ2lkICJGSUxFIERFTEVURUQiCittc2dzdHIgIkRPU1lBIFPEsEzEsE5ExLAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUKK21zZ2lkICJTVVBQUkVTU0VEIgorbXNnc3RyICJFTkdFTExFTkTEsCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICJCQcSeIEtBTERJUklMREkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICJIVFJFRSDEsE5ERUtTxLAgVEVNxLBaTEVORMSwIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAiVEVLUkFSIE9MVcWeVFVSVUxBQ0FLIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICIlZyBncnVidW51biBibG9rIGJpdGXFn2xlbWkgZ3J1cCBpw6dpbmRlIGRlxJ9pbC4gKGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIiVnIGdydWJ1bnVuIGTDvMSfw7xtIGJpdGXFn2xlbWkgZ3J1cCBpw6dpbmRlIGRlxJ9pbC4gKGJsb2sgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIiVnIGdydWJ1bnVuIGTDvMSfw7xtIHRhYmxvc3UgZ3J1cCBpw6dpbmRlIGRlxJ9pbC4gKGJsb2sgJWIpXG4iCisiVVlBUkk6IEPEsERExLAgVkVSxLAgS0FZQkkgT0xBU0lMScSeSS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1CisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlPDvHBlciBibG9rIG9rdW5hbcSxeW9yIHlhIGRhIGRvxJ9ydSBleHQyIGRvc3lhIHNpc3RlbWkgdGFuxLFtbGFtxLF5b3IuXG4iCisiQXlnxLF0IGdlw6dlcmxpeXNlIHZlIGdlcsOnZWt0ZW4gYmlyIGV4dDIgZG9zeWEgc2lzdGVtaSBpw6dlcml5b3JzYSxcbiIKKyIodmUgYmlyIHRha2FzIGLDtmzDvG3DvCB2ZXlhIHVmcyB5YSBkYSBoZXIgbmV5c2UgZGXEn2lsc2UpXG4iCisic8O8cGVyIGJsb2sgYm96dWxtdcWfIGRlbWVrdGlyLiBCYcWfa2EgYmlyIHPDvHBlciBibG9rIGlsZSBlMmZzY2sgw6dhbMSxxZ90xLFybWF5xLFcbiIKKyJkZW5lbWVsaXNpbml6OlxuIgorIiAgICAgIGUyZnNjayAtYiAlUyA8YXlnxLF0PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyJEb3N5YSBzaXN0ZW1pIHV6dW5sdcSfdSAoc8O8cGVyYmxvayBpbGUgaWxpxZ9raWxpKSAlYiBibG9rLFxuIgorImF5Z8SxdMSxbiBnZXLDp2VrIGJveXV0dSBpc2UgJWMgYmxva3R1ci5cbiIKKyJIZW0gc8O8cGVyIGJsb2sgaGVtIGRlIGRpc2sgYsO2bMO8bWxlbWUgdGFibG9zdSBib3p1ayBvbGFiaWxpciFcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja19zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4KKyMuIEAtZXhwYW5kZWQ6IFRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbgorIy4gQC1leHBhbmRlZDogZnJvbSB0aGUgYmxvY2sgc2l6ZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMKK21zZ2lkICIiCisiQFMgQGJfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuIgorIlRoaXMgdmVyc2lvbiBvZiBlMmZzY2sgZG9lcyBub3Qgc3VwcG9ydCBmcmFnbWVudCBzaXplcyBkaWZmZXJlbnRcbiIKKyJmcm9tIHRoZSBAYiBzaXplLlxuIgorbXNnc3RyICIiCisiU8O8cGVyYmxvayBibG9rX3V6dW5sdcSfdSA9ICViLCBhZMSxbWxhbWFfdXp1bmx1xJ91ID0gJWMuXG4iCisiQnUgZTJmc2NrIHPDvHLDvG3DvG5kZSBhZMSxbWxhbWEgdXp1bmx1a2xhcsSxbsSxbiBibG9rIHV6dW5sdWtsYXLEsW5kYW5cbiIKKyJmYXJrbMSxIG9sbWFzxLEgZGVzdGVrbGVubWl5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwCittc2dpZCAiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIlPDvHBlcmJsb2sgZ3J1cF9iYcWfxLFuYV9ibG9rX3NhecSxc8SxID0gJWI7ICVjIG9sbWFsxLF5ZMSxXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIlPDvHBlciBibG9rIGlsa192ZXJpX2Jsb8SfdSA9ICViOyAlYyBvbG1hbMSxeWTEsVxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAKK21zZ2lkICIiCisiQGYgZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJEb3N5YSBzaXN0ZW1pIGJpciBVVUlEIGnDp2VybWl5b3I7IGJpciB0YW5lIMO8cmV0aWxpeW9yLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkJpbGdpOiBUYcWfxLFubWFzxLEgZ2VyZWtlbiBkw7zEn8O8bSB0YWJsb3N1bnVuIGJpciBwYXLDp2FzxLEgb2xhblxuIgorInlhIGRhIHllbmlkZW4ga29udW1sYW5tYXPEsSBnZXJla2VuIGJsb2sgYml0ZcWfbGVtIGJsb2tsYXLEsVxuIgorInlhIGRhIGTDvMSfw7xtbGVyaSB2YXJzYSwgZTJmc2NrJ3nEsSDDtm5jZSAnLWIgJVMnIHNlw6dlbmXEn2l5bGVcbiIKKyLDp2FsxLHFn3TEsXJtYWzEsXPEsW7EsXouIFNvcnVuIHNhZGVjZSBiaXJpbmNpbCBibG/En3VuIGdydXBcbiIKKyJ0YW7EsW1sYXnEsWPEsXPEsSBpbGUgaWxnaWxpIG9sYWJpbGlyIHZlIHllZGVrbGVtZSBibG/En3UgZ3J1cFxuIgorInRhbsSxbWxhecSxY8Sxc8SxIGRhIGRvxJ9ydSBvbGFiaWxpci5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ29ycnVwdGlvbiBmb3VuZCBpbiBzdXBlcmJsb2NrLiAgKCVzID0gJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NAorbXNnaWQgIkNvcnJ1cHRpb24gZm91bmQgaW4gQFMuICAoJXMgPSAlTikuXG4iCittc2dzdHIgIlPDvHBlcmJsb2sgacOnaW5kZSBib3p1a2x1ayBzYXB0YW5kxLEuICglcyA9ICVOKS5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgZGV2aWNlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBAdjogJW1cbiIKK21zZ3N0ciAiQXlnxLF0xLFuIGZpemlrc2VsIHV6dW5sdcSfdSBzYXB0YW7EsXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICJTw7xwZXJibG9rIGnDp2luZGVraSBkw7zEn8O8bSBzYXnEsXPEsSAlaTsgJWogb2xtYWzEsXlkxLEuXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCwgZG9zeWEgdMO8csO8IMO2emVsbGnEn2luaSBkZXN0ZWtsZW1lei5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAUyBoYXMgYW4gQG4gQGogKEBpICVpKS5cbiIKK21zZ3N0ciAiU8O8cGVyYmxvayBoYXRhbMSxIGV4dDMgZ8O8bmzDvMSfw7wgacOnZXJpeW9yIChkw7zEn8O8bSAlaSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIG11bHRpcGxlIGZpbGVzeXN0ZW0gdXNlcnMgKHVuc3VwcG9ydGVkKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgbXVsdGlwbGUgQGYgdXNlcnMgKHVuc3VwcG9ydGVkKS5cbiIKK21zZ3N0ciAiIgorIkTEscWfIGfDvG5sw7xrIMOnb2sgc2F5xLFkYSBkb3N5YSBzaXN0ZW1pIGt1bGxhbsSxY8Sxc8SxIGnDp2VyaXlvci4gKGRlc3Rla2xlbm1peW9yKVxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgIkTEscWfIGfDvG5sw7xrIGJ1bHVuYW3EsXlvclxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAiRMSxxZ8gZ8O8bmzDvGsgaGF0YWzEsSBzw7xwZXJibG9rIGnDp2VyaXlvclxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCittc2dpZCAiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iCittc2dzdHIgIkTEscWfIGfDvG5sw7xrIGJ1IGRvc3lhIHNpc3RlbWluaSBkZXN0ZWtsZW1peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gam91cm5hbCBzdXBlcmJsb2NrIGlzIHVua25vd24gdHlwZSAlTiAodW5zdXBwb3J0ZWQpLlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgam91cm5hbCAKKyMuIEAtZXhwYW5kZWQ6IGZvcm1hdC5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE4CisjLCBmdXp6eQorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiRXh0MyBnw7xubMO8xJ/DvCBzw7xwZXJibG9rIHTDvHLDvCAlTiBiaWxpbm1peW9yIChkZXN0ZWtsZW5taXlvcikuXG4iCisiQnUga29weWEsIGJ1IGRvc3lhIHNpc3RlbWkgdGFyYWbEsW5kYW4gZGVzdGVrbGVubWV5ZW4gdmUveWFcbiIKKyJlc2tpIGJpciBiacOnaW0gZ2liaSBnw7Zyw7xuw7x5b3IuXG4iCisiQXlyxLFjYSwgZ8O8bmzDvGsgc8O8cGVyYmxva3VudW4gYm96dWsgb2xtYXPEsSBkYSBtw7xta8O8bi5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2CisjLCBmdXp6eQorbXNnaWQgIkBqIEBTIGlzIGNvcnJ1cHQuXG4iCittc2dzdHIgIkV4dDMgZ8O8bmzDvMSfw7wgc8O8cGVyYmxva3UgYm96dWsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorIywgZnV6enkKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiZXh0MyBrdXJ0YXJtYSBiYXlyYcSfxLEgdGVtaXogYW1hIGfDvG5sw7xrIHZlcmkgacOnZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorIywgZnV6enkKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIlPDvHBlcmJsb2sgZXh0MyBuZWVkc19yZWNvdmVyeSBiYXlyYcSfxLEgacOnZXJpeW9yIGFtYSBnw7xubMO8ayB5b2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCisjLCBmdXp6eQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAiZXh0MyBrdXJ0YXJtYSBiYXlyYcSfxLEgdGVtaXogYW1hIGfDvG5sw7xrIHZlcmkgacOnZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICJHw7xubMO8xJ/DvCBUZW1pemxlIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIGZpbGVzeXN0ZW0uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjUxIGUyZnNjay9wcm9ibGVtLmM6NzQ0Cittc2dpZCAiQGYgaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgQGYuICAiCittc2dzdHIgImRvc3lhc2lzdGVtaW5pbiDDtnplbGxpayBiYXlyYWtsYXLEsSBldGtpbiBhbWEgZG9zeWFzaXN0ZW1pbmluIHPDvHLDvG3DvCAwLiIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICIlcyBhcnTEsWsgZMO8xJ/DvG0gJWkgKGt1bGxfa2ltbD0lSXUsIGdydXBfa2ltbD0lSWcsIGtpcD0lSW0sIGJveT0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKKyMsIGZ1enp5Cittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAiZMO8xJ/DvG0gJWkgacOnaW5kZWtpIGJsb2sgIyVCICglYikga3VyYWxkxLHFn8SxLlxuIgorCisjLiBALWV4cGFuZGVkOiBBbHJlYWR5IGNsZWFyZWQgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjYKKyMsIGZ1enp5Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgImFydMSxayBkw7zEn8O8bSAlaSBpw6dpbmRla2kgYmxvayAjJUIgKCViKSB6YXRlbiB0ZW1pemxlbm1pxZ8uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgInPDvHBlciBibG9rIGnDp2luZGVraSBhcnTEsWsgZMO8xJ/DvG0gJWkga3VyYWxkxLHFn8SxLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsIGlub2RlICVpIGluIG9ycGhhbmVkIGlub2RlIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkBJIEBpICVpIGluIEBvIEBpIGxpc3QuXG4iCittc2dzdHIgImFydMSxayBkw7zEn8O8bSBsaXN0ZXNpbmRla2kgZMO8xJ/DvG0gJWkga3VyYWxkxLHFn8SxXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKKyMsIGZ1enp5Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyJFeHQzIGfDvG5sw7zEn8O8IHPDvHBlciBibG/En3UgYmlsaW5tZXllbiBzYWx0LW9rdW51ciDDtnplbGxpa2xpIGJpciBiYXlyYWsgIgorImnDp2VyaXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorIywgZnV6enkKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biBpbmNvbXBhdGlibGUgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorIkV4dDMgZ8O8bmzDvMSfw7xuw7xuIHPDvHBlciBibG/En3UgYmlsaW5tZXllbiB1eXVtc3V6IMO2emVsbGlrbGkgYmlyIGJheXJhayAiCisiacOnZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTEKK21zZ2lkICJAaiB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4iCittc2dzdHIgImfDvG5sw7xrIHPDvHLDvG3DvCBidSBlMmZzY2sgdGFyYWbEsW5kYW4gZGVzdGVrbGVubWl5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisiR8O8bmzDvGsgLyVzIGRlbiBnaXpsaSBkw7zEn8O8bWUgdGHFn8SxbsSxeW9yLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJnw7xubMO8ayB0YcWfxLFuxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkdlw6dlcnNpeiBWMiBnw7xubMO8xJ/DvCBzw7xwZXIgYmxvayBhbGFubGFyxLEgYnVsdW5kdSAoVjEgZ8O8bmzDvMSfw7xuZGVuKS5cbiIKKyJWMSBnw7xubMO8xJ/DvCBzw7xwZXIgYmxvxJ91bmRhbiBzb25yYWtpIGFsYW5sYXIgdGVtaXpsZW5peW9yLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJHw7xubMO8xJ/DvCB5aW5lIGRlIMOnYWzEscWfdMSxciIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICIiCisiWWVkZWsgc8O8cGVyIGJsb2tkYSBrdXJ0YXJtYSBiYXlyYcSfxLEgdGVtaXogb2xkdcSfdW5kYW4gZ8O8bmzDvGsgaGVyxZ9leWUgcmHEn21lbiAiCisiw6dhbMSxxZ9hY2FrLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICIiCisiR8O8bmzDvGsgZMO8xJ/DvG3DvCBibG9rIGJpbGdpbGVyaSB5ZWRla2xlbml5b3IuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorImRvc3lhIHNpc3RlbWluZGUgcmVzaXplX8Sxbm9kZSBldGtpbiBkZcSfaWwsIGFtYSBzX3Jlc2VydmVkX2dkdF9ibG9ja3MgacOnaW5cbiIKKyIlTiBkZcSfZXJpIHZhcjsgc8SxZsSxciBvbG1hbMSxeWTEsS4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJSZXNpemVfaW5vZGUgZXRraW4gZGXEn2lsLCBhbWEgZMO8xJ/DvG0gYm95dXRsYW5kxLFybWEgc8SxZsSxcmRhbiBmYXJrbMSxLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkTDvMSfw7xtIGJveXV0bGFuZMSxcm1hIGdlw6dlcnNpei4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworIywgZnV6enkKK21zZ2lkICIiCisiQFMgbGFzdCBtb3VudCB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICJTw7xwZXJibG/En3VuIHNvbiBiYcSfbGFtYSB6YW1hbsSxIGdlbGVjZWt0ZS4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorIywgZnV6enkKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICJTw7xwZXJibG9rdW4gc29uIHlhem1hIHphbWFuxLEgZ2VsZWNla3RlLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgc2hvdWxkIGJlICVYLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM1MgorIywgYy1mb3JtYXQKK21zZ2lkICJAUyBoaW50IGZvciBleHRlcm5hbCBzdXBlcmJsb2NrIEBzICVYLiAgIgorbXNnc3RyICJoYXJpY2kgc8O8cGVyYmxva3UgJVggb2xtYXPEsSBnZXJla2VuIGRvc3lhc2lzdGVtaSBpw6dpbiBzw7xwZXJibG9rIGltYXPEsSIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJAZyBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBMYXN0IGdyb3VwIGJsb2NrIGJpdG1hcCB1bmluaXRpYWxpemVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3NworbXNnaWQgIkxhc3QgQGcgQGIgQEIgdW5pbml0aWFsaXplZC4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogT25lIG9yIG1vcmUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDAzCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorIywgZnV6enkKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGlzIGNvdW50IHRvICVqICh3YXMgJWkpXG4iCittc2dzdHIgIlllZGVrIGJsb2sgc2F5xLFzxLEgJWx1IG9sYXJhayBiZWxpcmxlbml5b3JcbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGJsb2NrcyBjb3VudCB0byAlYyAod2FzICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxMworIywgZnV6enkKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgIlllZGVrIGJsb2sgc2F5xLFzxLEgJWx1IG9sYXJhayBiZWxpcmxlbml5b3JcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorIywgZnV6enkKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIiIKKyJHw7xubMO8ayAvJXMgZGVuIGdpemxpIGTDvMSfw7xtZSB0YcWfxLFuxLF5b3IuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQyMworIywgZnV6enkKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiCittc2dzdHIgImJsb2sgdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDI4Cittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCisjLCBmdXp6eQorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gYnVsdW5kdcSfdSBibG9rbGFyOiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NjcKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gYnVsdW5kdcSfdSBibG9rbGFyOiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgIjEuIGdlw6dpxZ86IGTDvMSfw7xtbGVyLCBibG9rbGFyIHZlIHV6dW5sdWtsYXIgZGVuZXRsZW5peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ5OAorbXNnaWQgIkByIGlzIG5vdCBhIEBkLiAgIgorbXNnc3RyICJLw7ZrIGTDvMSfw7xtw7wgYmlyIGRpemluIGRlxJ9pbC4gICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICJLw7ZrIGTDvMSfw7xtw7wgacOnaW4gZHRpbWUgYmVsaXJ0aWxtacWfIChlc2tpIG1rZTJmcydkZW4gZG9sYXnEsSBvbGFiaWxpcikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJZZWRlayBkw7zEn8O8bSAlaSAoJVEpIGhhdGFsxLEga2lwIGnDp2VyaXlvci4gICIKKworIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgIlNpbGluZW4gZMO8xJ/DvG0gJWkgc8SxZsSxciBkdGltZSBpw6dlcml5b3IuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICAiCittc2dzdHIgIkTDvMSfw7xtICVpIGt1bGxhbsSxbWRhLCBhbWEgZHRpbWUgYmVsaXJ0aWxtacWfLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgYmlyIHPEsWbEsXIgdXp1bmx1a2x1IGRpemluZGlyLiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGJsb2NrIGJpdG1hcCBhdCAlYiBjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIGJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyOAorbXNnaWQgIkBnICVnJ3MgQGIgQEIgYXQgJWIgQEMuXG4iCittc2dzdHIgIiIKKyIlZyBncnVidW51biAlYiBkZWtpIGJsb2sgYml0ZcWfbGVtaSBkacSfZXIgZG9zeWEgc2lzdGVtaSBibG9rbGFyxLEgaWxlICIKKyLDp2VsacWfaXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzMKK21zZ2lkICJAZyAlZydzIEBpIEBCIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisiJWcgZ3J1YnVudW4gJWIgZGVraSBkw7zEn8O8bSBiaXRlxZ9sZW1pIGRpxJ9lciBkb3N5YSBzaXN0ZW1pIGJsb2tsYXLEsSBpbGUgIgorIsOnZWxpxZ9peW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorIiVnIGdydWJ1bnVuICViIGRla2kgZMO8xJ/DvG0gdGFibG9zdSBkacSfZXIgZG9zeWEgc2lzdGVtaSBibG9rbGFyxLEgaWxlICIKKyLDp2VsacWfaXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiJWcgZ3J1YnVudW4gYmxvayBiaXRlxZ9sZW1pICglYikgaGF0YWzEsS4gICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiJWcgZ3J1YnVudW4gZMO8xJ/DvG0gYml0ZcWfbGVtaSAoJWIpIGhhdGFsxLEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpLCBpX3NpemUgaXMgJUlzLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUzCittc2dpZCAiQGkgJWksIGlfc2l6ZSBpcyAlSXMsIEBzICVOLiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBkw7zEn8O8bSB1enVubHXEn3UgJUlzLCAlTiBvbG1hbMSxeWTEsS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICJEb3N5YSBkw7zEn8O8bSAlaSwgYmxvayBkw7zEn8O8bcO8ICVJYiwgJU4gb2xtYWzEsXlkxLEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKKyMsIGZ1enp5Cittc2dpZCAiQEkgJUIgKCViKSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgacOnaW5kZWtpIGJsb2sgIyVCICglYikga3VyYWxkxLHFn8SxLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4CisjLCBmdXp6eQorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiIKKyJEw7zEn8O8bSAlaSBpw6dpbmRla2kgYmxvayAjJUIgKCViKSBkb3N5YSBzaXN0ZW1pIG1ldGF2ZXJpc2luaW4gw7x6ZXJpbmUgIgorInRhxZ/EsXlvci4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTczCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBrdXJhbGTEscWfxLEgYmxvayhsYXIpIGnDp2VyaXlvci4gICIKKworIy4gQC1leHBhbmRlZDogVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBtYW55IGlsbGVnYWwgQGJzIGluIEBpICVpLlxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSBpw6dpbmRlIMOnb2sgZmF6bGEga3VyYWxkxLHFn8SxIGJsb2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCisjLCBmdXp6eQorbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICJIYXRhbMSxIGJsb2sgZMO8xJ/DvG3DvCBpw6dpbmRla2kgYmxvayAlQiAoJWIpIGt1cmFsZMSxxZ/EsS4gICIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4OAorbXNnaWQgIkJhZCBAYiBAaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiSGF0YWzEsSBibG9rIGTDvMSfw7xtw7wga3VyYWxkxLHFn8SxIGJsb2sobGFyKSBpw6dlcml5b3IuICAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICJUZWtyYXJsYW5txLHFnyB5YSBkYSBoYXRhbMSxIGJsb2sga3VsbGFuxLFtZGEhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIkhhdGFsxLEgYmxvayAlYiwgaGF0YWzEsSBibG9rIGTDvMSfw7xtw7wgZG9sYXlsxLEgYmxvxJ91IG9sYXJhayBrdWxsYW7EsWxtxLHFny4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkhhdGFsxLEgYmxvayBkw7zEn8O8bcO8IGdhbGliYSBib3p1bG11xZ8uIEJ1IGR1cnVtZGEgaGVyxZ9leWkgZHVyZHVydXBcbiIKKyJkb3N5YSBzaXN0ZW1pbmRla2kgaGF0YWzEsSBibG9rbGFyxLEgdGFyYW1hayBpw6dpbiBlMmZzY2sgLWNcbiIKKyLDp2FsxLHFn3TEsXJtYWzEsXPEsW7EsXouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiQmxvayBnZXLDp2VrdGVuIGhhdGFsxLF5c2EsIGRvc3lhIHNpc3RlbWkgZMO8emVsdGlsZW1lei5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisiQnUgYmxvxJ91IGhhdGFsxLEgYmxva2xhciBsaXN0ZXNpbmRlbiBzaWxlYmlsaXIgdmUgYnUgYmxvxJ91biBnZXLDp2VrdGVuXG4iCisiZG/En3J1IG9sZHXEn3VudSB1bWFiaWxpcnNpbml6LCBhbmNhayBoacOnYmlyIGdhcmFudGlzaSB5b2t0dXIuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIkJpcmluY2lsIGRvc3lhIHNpc3RlbWkgKCViKSBoYXRhbMSxIGJsb2tsYXIgbGlzdGVzaW5kZSBrYXnEsXRsxLEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJsb2NrICViIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyNgorbXNnaWQgIkJsb2NrICViIGluIHRoZSBwcmltYXJ5IEBnIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgQGIgbGlzdFxuIgorbXNnc3RyICIiCisiQmlyaW5jaWwgZ3J1cCB0YW7EsW1sYXLEsW5kYWtpIGJsb2sgJWIsIGhhdGFsxLEgYmxva2xhciBsaXN0ZXNpbmRlIGthecSxdGzEsVxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIHN1cGVyYmxvY2sgKCViKSBpcyBiYWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMyCittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBAUyAoJWIpIGlzIGJhZC5cbiIKK21zZ3N0ciAiVXlhcsSxOiAlZyBncnVidW51biBzdXBlcmJsb8SfdSAoJWIpIGhhdGFsxLEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiIgorIlV5YXLEsSAlZyBncnVidW51biBncnVwIHRhbsSxbWxhcsSxIGtvcHlhc8SxIGJpciBoYXRhbMSxIGJsb2sgacOnZXJpeW9yICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJQcm9ncmFtbGFtYSBoYXRhc8SxPyAgYmxvayAlYiwgaGF0YWzEsSBibG9rIGnFn2xlbWluZGUgc2ViZXBzaXogb2xhcmFrIHRhbGVwICIKKyJlZGlsZGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIiIKKyIlcyBpw6dpbiAlZyBibG9rIGdydWJ1bmRhICVOIGJpdGnFn2lrIGJsb8SfYSB5ZXIgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIiVzIHRla3JhciBrb251bWxhbWFzxLEgacOnaW4gYmxvayB0YW1wb251bmEgeWVyIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHVcbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTkKK21zZ2lkICJSZWxvY2F0aW5nIEBnICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuIgorbXNnc3RyICIlZyBncnVidW51biAlcyAlYiBkZW4gJWMgeWUgYWt0YXLEsWzEsXlvci4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgdG8gJWMuLi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIHRvICVjLi4uXG4iCittc2dzdHIgIiVnIGdydWJ1bnVuICVzICVjIHllIGFrdGFyxLFsxLF5b3IuLi5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgIlV5YXLEsTogJXNuaW4gJWIgYmxvxJ91IG9rdW5hbWFkxLE6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiVXlhcsSxOiAlc25pbiAlYiBibG/En3UgeWF6xLFsYW1hZMSxOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3OSBlMmZzY2svcHJvYmxlbS5jOjE3NDAKK21zZ2lkICJAQSBAaSBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJEw7zEn8O8bSBiaXRlxZ9sZW1pICglTikgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODQKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJEw7zEn8O8bSBiaXRlxZ9sZW1pICglTikgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4iCittc2dzdHIgIkTDvMSfw7xtIHNhecSxc8SxIGJhxJ8gYmlsZ2lzaW5lIHllciBheXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGRpcmVjdG9yeSBibG9jayBhcnJheTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGQgQGIgYXJyYXk6ICVtXG4iCittc2dzdHIgIkRpemluIGJsb8SfdSBkaXppc2luZSB5ZXIgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICJEw7zEn8O8bWxlciAoJWkpIHRhcmFuxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIiIKKyJEw7zEn8O8bSAlaSBpw6dpbmRla2kgYmxva2xhciDDvHplcmluZGUgacWfbGVtbGVyIHRla3JhcmxhbsSxcmtlbiBoYXRhIG9sdcWfdHU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBjb3VudD0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiIgorIkTDvMSfw7xtIHNhecSxc8SxIGJpbGdpc2kgKGTDvMSfw7xtID0gJWksIHNhecSxc8SxID0gJU4pXG4iCisic2FrbGFuxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCittc2dzdHIgIiIKKyJEaXppbiBibG/En3UgYmlsZ2lzaSAoZMO8xJ/DvG0gPSAlaSwgYmxvayA9ICViLCBudW0gPSAlTilcbiIKKyJzYWtsYW7EsXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSBva3VudXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjcyOAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW1hZ2ljIGZsYWcgc2V0LiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBpbWFnaWMgYmF5cmHEn8SxIGnDp2VyaXlvci4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlICVpKSBoYXMgaW1tdXRhYmxlXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjczMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoQGkgJWkpIGhhcyBpbW11dGFibGVcbiIKKyJvciBhcHBlbmQtb25seSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIsOWemVsIChheWfEsXQvc29rZXQvZmlmby9zZW1iYcSfKSBkb3N5YSAoZMO8xJ/DvG0gJWkpLFxuIgorInNhbHQtZWtsZW5pciB5YSBkYSBkZcSfacWfbWV6IGJheXJhxJ/EsSBpw6dlcml5b3IuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiw5Z6ZWwgKGF5Z8SxdC9zb2tldC9maWZvKSBkw7zEn8O8bSAlaSBzxLFmxLFyZGFuIGZhcmtsxLEgYm95dXR0YS4gICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKK21zZ2lkICJAaiBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiR8O8bmzDvGsgZMO8xJ/DvG3DvCBrdWxsYW7EsW1kYSBkZcSfaWwgYW1hIHZlcmkgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiR8O8bmzDvGsgZG9zeWFzxLEgbm9ybWFsIGJpciBkb3N5YSBkZcSfaWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgw7Zrc8O8eiBkw7zEn8O8bSBsaXN0ZXNpbmluIHBhcsOnYXPEsXlkxLEuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiQm96dWsgYmlyIGFydMSxayBiYcSfbMSxIGxpc3RlbmluIGJpciBwYXLDp2FzxLFuxLEgYnVsdW5kdXJhbiBkw7zEn8O8bWxlci4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKK21zZ2lkICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKK21zZ3N0ciAicmVmY291bnQgdmVyaSB5YXDEsXPEsSBpw6dpbiB5ZXIgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBpw6dpbiBlayDDtnplbGxpayBibG/En3UgJWIgb2t1bnVya2VuIGhhdGEgb2x1xZ90dS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkTDvMSfw7xtICVpICViIGhhdGFsxLEgZWsgw7Z6ZWxsaWsgYmxvxJ91bnUgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAiRWsgw7Z6ZWxsaWsgYmxvxJ91ICViIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKKyMsIGZ1enp5Cittc2dpZCAiQGEgQGIgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgQHMgJU4uICAiCittc2dzdHIgIkVrIMO2emVsbGlrbGVyIGJsb8SfdSAlYiAlQiBiYcWfdnVydSBzYXnEsXPEsW5hIHNhaGlwLCAlTiBvbG1hbMSxeWTEsS4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkVrIMO2emVsbGlrIGJsb8SfdSAlYiB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1ICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgIkVrIMO2emVsbGlrbGVyIGJsb8SfdSAlYiBpw6dpbiAgaF9ibG9ja3MgPiAxLiAgIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODA1CisjLCBmdXp6eQorbXNnaWQgIkBBIEBhIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiaWNvdW50IHZlcmkgeWFwxLFzxLEgacOnaW4geWVyIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJFayDDtnplbGxpayBibG/En3UgJWIgYm96dWsgKHRhaHNpcyDDp2F0xLHFn21hc8SxKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgIkVrIMO2emVsbGlrbGVyIGJsb8SfdSAlYiBib3p1ayAoZ2XDp2Vyc2l6IGlzaW0pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCB2YWx1ZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIgorbXNnc3RyICJFayDDtnplbGxpa2xlciBibG/En3UgJWIgYm96dWsgKGdlw6dlcnNpeiBkZcSfZXIpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyB0b28gYmlnLiAgIgorbXNnc3RyICJkw7zEn8O8bSAlaSDDp29rIGLDvHnDvGsuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorIywgZnV6enkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICJCbG9rICMlQiAoJWIpIMOnb2sgYsO8ecO8ayBkaXppbiBvbHXFn3R1cnV5b3IuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0CisjLCBmdXp6eQorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiQmxvayAjJUIgKCViKSDDp29rIGLDvHnDvGsgZG9zeWEgb2x1xZ90dXJ1eW9yLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorIywgZnV6enkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBzeW1saW5rIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIkJsb2sgIyVCICglYikgw6dvayBiw7x5w7xrIHNlbWJvbGlrIGJhxJ8gb2x1xZ90dXJ1eW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJEw7zEn8O8bSAlaSBodHJlZSBkZXN0ZcSfaSBidWx1bm1heWFuIGRvc3lhIHNpc3RlbWluZGUgSU5ERVhfRkwgYmF5cmHEn8SxICIKKyJpw6dlcml5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIEBkLlxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSBJTkRFWF9GTCBiYXlyYcSfxLEgacOnZXJpeW9yIGFtYSBvIGJpciBkaXppbiBkZcSfaWwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIkhUUkVFIGRpemluIGTDvMSfw7xtw7wgJWkgZ2XDp2Vyc2l6IGJpciBrw7ZrIGTDvMSfw7xtw7wgacOnZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkhUUkVFIGRpemluIGTDvMSfw7xtw7wgJWkgZGVzdGVrbGVubWV5ZW4gYmlyIGhhc2ggc8O8csO8bcO8ICglTikgacOnZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuIgorbXNnc3RyICIiCisiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlaSB1eXVtc3V6IGJpciBodHJlZSBrw7ZrIGTDvMSfw7xtw7wgYmF5cmHEn8SxIGt1bGxhbsSxeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjkKK21zZ2lkICJAaCAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuIgorbXNnc3RyICJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVpIMOnb2sgYsO8ecO8ayBiaXIgYcSfYcOnIGRlcmlubGnEn2luZSAoJU4pIHNhaGlwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIiIKKyJIYXRhbMSxIGTDvMSfw7xtIGJsb8SfdSBkb3N5YSBzaXN0ZW1pbmluIG1ldGEgdmVyaXNpIGlsZSDDp2VsacWfZW5cbiIKKyJiaXIgZG9sYXlsxLEgYmxvayAoJWIpIGnDp2VyaXlvci4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZSBpbm9kZSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6ZSBAaSAocmUpY3JlYXRpb24gZmFpbGVkOiAlbS4iCittc2dzdHIgIkTDvMSfw7xtw7wgYm95dXRsYW5kxLFybWFrIGnDp2luICh0ZWtyYXIpIG9sdcWfdHVybWEgYmHFn2FyxLFzxLF6OiAlbSIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICIlaS4gZMO8xJ/DvG0gZ2XDp2Vyc2l6IGJpciBlayBib3l1dCBpw6dlcml5b3IgKCVJUylcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiVpLiBkw7zEn8O8bWRla2kgZWsgw7Z6ZWxsaWsgZ2XDp2Vyc2l6IGJpciBpc2ltIGFsYW7EsSBpw6dlcml5b3IgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiVpLiBkw7zEn8O8bWRla2kgZWsgw7Z6ZWxsaWsgZ2XDp2Vyc2l6IGJpciBkZcSfZXIgYmHFn2xhbmfEsWPEsSBpw6dlcml5b3IgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgYmxvY2sgKCVOKSB3aGljaCBpcyBpbnZhbGlkIChtdXN0IGJlIDApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgQGIgKCVOKSB3aGljaCBpcyBAbiAobXVzdCBiZSAwKVxuIgorbXNnc3RyICIiCisiJWkuIGTDvMSfw7xtZGVraSBlayDDtnplbGxpayBnZcOnZXJzaXogYmlyIGRlxJ9lciBibG/En3UgacOnZXJpeW9yICglTiksIDAgb2xtYWzEsVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiJWkuIGTDvMSfw7xtZGVraSBlayDDtnplbGxpayBnZcOnZXJzaXogYmlyIGRlxJ9lciBpw6dlcml5b3IgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKKyMsIGZ1enp5Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIiVpLiBkw7zEn8O8bWRla2kgZWsgw7Z6ZWxsaWsgZ2XDp2Vyc2l6IGJpciBpc2ltIGFsYW7EsSBpw6dlcml5b3IgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJAaSAlaSBiaXIgJUl0IGFuY2FrIGdlcsOnZWt0ZW4gYmlyIGRpemluIGdpYmkgZ8O2csO8bsO8eW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgQHggdHJlZSBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiIgorIkTDvMSfw7xtICVpIGnDp2luZGVraSBibG9rbGFyIMO8emVyaW5kZSBpxZ9sZW1sZXIgdGVrcmFybGFuxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgaW52YWxpZCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTM2Cittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgQG4gbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTQxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgRVhURU5UU19GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorIkTDvMSfw7xtICVpIGh0cmVlIGRlc3RlxJ9pIGJ1bHVubWF5YW4gZG9zeWEgc2lzdGVtaW5kZSBJTkRFWF9GTCBiYXlyYcSfxLEgIgorImnDp2VyaXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFzdCBzeW1saW5rICVpIGhhcyBFWFRFTlRfRkwgc2V0LiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYxCittc2dpZCAiIgorIkBpICVpIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50c1xuIgorIlx0KEBuIGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjUKK21zZ2lkICJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgQGIgQEI6ICVtXG4iCittc2dzdHIgIkRpemluIGJsb2tsYXLEsSB5aW5lbGVuaXJrZW4gaGF0YTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKKyMsIGZ1enp5Cittc2dpZCAiQHEgQGkgaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAiR8O8bmzDvGsgZG9zeWFzxLEgbm9ybWFsIGJpciBkb3N5YSBkZcSfaWwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorIywgZnV6enkKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiR8O8bmzDvGsgZMO8xJ/DvG3DvCBrdWxsYW7EsW1kYSBkZcSfaWwgYW1hIHZlcmkgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4NQorIywgZnV6enkKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBrdWxsYW7EsW1kYSwgYW1hIGR0aW1lIGJlbGlydGlsbWnFny4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorIywgZnV6enkKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICI8SGF0YWzEsSBibG9rbGFyIGTDvMSfw7xtw7w+IgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTk1Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJkw7zEn8O8bSAlaSDDp29rIGLDvHnDvGsuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIEBhIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gICIKK21zZ3N0ciAiRWsgw7Z6ZWxsaWsgYmxvxJ91ICViIGJvenVrICh0YWhzaXMgw6dhdMSxxZ9tYXPEsSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxOAorbXNnaWQgIiIKKyJAaSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDI3Cittc2dpZCAiQGkgJWkgQGEgQGIgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBiLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEludGVyaW9yIGV4dGVudCBub2RlIGxldmVsICVOIG9mIGlub2RlICVpOlxuCisjLiBALWV4cGFuZGVkOiBMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0Cittc2dpZCAiIgorIkludGVyaW9yIEB4IG5vZGUgbGV2ZWwgJU4gb2YgQGkgJWk6XG4iCisiTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBJTkxJTkVfREFUQSBmZWF0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0NQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBAUyBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyJEw7zEn8O8bSAlaSBodHJlZSBkZXN0ZcSfaSBidWx1bm1heWFuIGRvc3lhIHNpc3RlbWluZGUgSU5ERVhfRkwgYmF5cmHEn8SxICIKKyJpw6dlcml5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1OAorbXNnaWQgIiIKKyJAaSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBibG9jayAlYiBzaG91bGQgYmUgYXQgYmxvY2sgJWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA2MworIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkTDvMSfw7xtICVpICViIGhhdGFsxLEgZWsgw7Z6ZWxsaWsgYmxvxJ91bnUgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAZCBAaSAlaSBoYXMgQHggbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgQGIgJWMuICAiCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWkgYmlyIGF5csSxbG1heWFuIGJsb2sgIyVCIGnDp2VyaXlvci4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICJEw7zEn8O8bSAlaSBJTkRFWF9GTCBiYXlyYcSfxLEgacOnZXJpeW9yIGFtYSBvIGJpciBkaXppbiBkZcSfaWwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgJWkpIGhhcyBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IG9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyLDlnplbCAoYXlnxLF0L3Nva2V0L2ZpZm8vc2VtYmHEnykgZG9zeWEgKGTDvMSfw7xtICVpKSxcbiIKKyJzYWx0LWVrbGVuaXIgeWEgZGEgZGXEn2nFn21leiBiYXlyYcSfxLEgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgaW5vZGUgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMDkKK21zZ2lkICJCYWQgYmxvY2sgbGlzdCBzYXlzIHRoZSBiYWQgYmxvY2sgbGlzdCBAaSBpcyBiYWQuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTQKKyMsIGZ1enp5Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICJpY291bnQgdmVyaSB5YXDEsXPEsSBpw6dpbiB5ZXIgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5Cittc2dpZCAiQGkgJWkgQHggdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBvbiBiaWdhbGxvYyBmaWxlc3lzdGVtIGNhbm5vdCBiZSBibG9jayBtYXBwZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBvbiBiaWdhbGxvYyBAZiBjYW5ub3QgYmUgQGIgbWFwcGVkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICJFayDDtnplbGxpa2xlciBibG/En3UgJWIgYm96dWsgKGdlw6dlcnNpeiBpc2ltKS4gICIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBcbgorIy4gQC1leHBhbmRlZDogUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi5cbgorIy4gQC1leHBhbmRlZDogUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTUxCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBAYnMgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIEBpLi4uXG4iCisiUGFzcyAxQjogUmVzY2FubmluZyBmb3IgQG0gQGJzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJCaXJkZW4gZmF6bGEgZMO8xJ/DvG0gZ2VyZWt0aXJlbiBibG9rbGFyxLEgw6fDtnrDvG1sZW1layBpw6dpbiBlayBnZcOnacWfbGVyICIKKyJ5YXDEsWzEsXlvci4uLlxuIgorIkdlw6dpxZ8gMUI6IMOHb2sgZMO8xJ/DvG1sw7wgYmxva2xhciB5ZW5pZGVuIHRhcmFuxLF5b3JcbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIkTDvMSfw7xtICVpIGnDp2luZGUgw6dvayBkw7zEn8O8bWzDvCBibG9rbGFyIHZhcjoiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiRMO8xJ/DvG1sZXIgKCVpKSB0YXJhbsSxcmtlbiBoYXRhIG9sdcWfdHU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAiRMO8xJ/DvG0gYml0ZcWfbGVtaSAoaW5vZGVfZHVwX21hcCkgacOnaW4geWVyIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHU6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIiIKKyJEw7zEn8O8bSAlaSBpw6dpbmRla2kgYmxva2xhciDDvHplcmluZGVraSBpxZ9sZW1sZXIgdGVrcmFybGFuxLFya2VuXG4iCisiaGF0YSBvbHXFn3R1ICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIiIKKyJFayDDtnplbGxpa2xlciBibG/En3UgJWIgKGTDvMSfw7xtICVpKSBpw6dpbiByZWZjb3VudCBheWFybGFuxLFya2VuIGhhdGEgb2x1xZ90dTogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExOTcKK21zZ2lkICJQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgQGlzIHdpdGggQG0gQGJzXG4iCittc2dzdHIgIkdlw6dpxZ8gMUM6IFRla3JhcmxhbmFuIGJsb2tsYXLEsW4gZMO8xJ/DvG1sZXJpIGnDp2luIGRpemlubGVyIHRhcmFuxLF5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwMworbXNnaWQgIlBhc3MgMUQ6IFJlY29uY2lsaW5nIEBtIEBic1xuIgorbXNnc3RyICJHZcOnacWfIDFEOiDDh29rIGTDvMSfw7xtbMO8IGJsb2tsYXIgeWVuaWRlbiBoYWxsZWRpbGl5b3JcbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkZpbGUgJVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKSBcbiIKKyIgIGhhcyAlciBAbSBAYihzKSwgc2hhcmVkIHdpdGggJU4gZmlsZShzKTpcbiIKK21zZ3N0ciAiIgorIkRvc3lhICVRIChkw7zEn8O8bSAlaSwgZGXEn2nFn2lrbGlrIHphbWFuxLEgJUlNKSBcbiIKKyIgICVOIGRvc3lhIGlsZSBwYXlsYcWfxLFtbMSxLCDDp29rIGTDvMSfw7xtbMO8ICVCIGJsb2sgacOnZXJpeW9yOlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVEgKGTDvMSfw7xtICVpLCBkZcSfacWfaWtsaWsgemFtYW7EsSAlSU0pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxkb3N5YSBzaXN0ZW1pIG1ldGF2ZXJpc2k+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIijDh29rIGTDvMSfw7xtbMO8IGJsb2sgacOnZXJlbiAlTiBkw7zEn8O8bSB2YXIuKVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisiw4dvayBkw7zEn8O8bWzDvCBibG9rbGFyIHphdGVuIHllbmlkZW4gYXRhbm3EscWfIHlhIGRhIGtvcHlhbGFubcSxxZ90xLEuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICJEb3N5YSBrb3B5YWxhbmFtYWTEsTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4CisjLCBmdXp6eQorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAiUGFzcyAzQTogRGl6aW5sZXIgZW5peWlsZW5peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBvcHRpbWl6ZSBleHRlbnQgdHJlZSAlcCAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBvcHRpbWl6ZSBAeCB0cmVlICVwICglaSk6ICVtXG4iCittc2dzdHIgIkRpemluICVxICglZCkgZW5peWlsZW5lbWVkaTogJW0iCisKKyMuIEAtZXhwYW5kZWQ6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1OAorIywgZnV6enkKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgIkVuaXlpbGVuZW4gZGl6aW5sZXI6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIkdlw6dpxZ8gMjogRGl6aW4geWFwxLFzxLEgZGVuZXRsZW5peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWkgacOnaW5kZWtpICcuJyBpw6dpbiBkw7zEn8O8bSBudW1hcmFzxLEgZ2XDp2Vyc2l6LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBpbnZhbGlkIGlub2RlICM6ICVEaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzAwCittc2dpZCAiQEUgaGFzIEBuIEBpICM6ICVEaS5cbiIKK21zZ3N0ciAiQEUgaGF0YWzEsSBkw7zEn8O8bSBudW1hcmFzxLEgacOnZXJpeW9yOiAlRGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkBFIHNpbGlubWnFny9rdWxsYW7EsWxtYXlhbiBkw7zEn8O8bSAlRGkgacOnZXJpeW9yLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIkBFICcuJyB5YSBiaXIgYmHEn2TEsXIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICJARSBiaXIgaGF0YWzEsSBibG9rIGnDp2luZGVraSBkw7zEn8O8bcO8ICglRGkpIGfDtnN0ZXJpeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJARSBkaXppbiAlUCAoJURpKSBpw6dpbiBiaXIgYmHEn2TEsXIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIkBFIGvDtmsgZMO8xJ/DvG3DvG5lIGJpciBiYcSfZMSxci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJARSBpc21pbmRlIGt1cmFsZMSxxZ/EsSBrYXJha3RlcmxlciBpw6dlcml5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzM1CisjLCBjLWZvcm1hdAorbXNnaWQgIk1pc3NpbmcgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJEaXppbiBkw7zEn8O8bcO8ICVpIGnDp2luZGUgJy4nIGVrc2lrLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLi4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJEaXppbiBkw7zEn8O8bcO8ICVpIGnDp2luZGUgJy4uJyBla3Npay5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICIiCisiRGl6aW4gZMO8xJ/DvG3DvCAlaSAoJXApIGnDp2luZGVraSBpbGsgZ2lyZGkgJyVEbicgKGTDvMSfw7xtPSVEaSkgJy4nIG9sbWFsxLF5ZMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBTZWNvbmQgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpIHNob3VsZCBiZSAnLi4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1MAorbXNnaWQgIlNlY29uZCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSBAcyAnLi4nXG4iCittc2dzdHIgIiIKKyJEaXppbiBkw7zEn8O8bcO8ICVpIGnDp2luZGVraSBpa2luY2kgZ2lyZGkgJyVEbicgKGTDvMSfw7xtPSVEaSkgJy4uJyBvbG1hbMSxeWTEsS5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mYWRkciBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSUYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTUKK21zZ2lkICJpX2ZhZGRyIEBGICVJRiwgQHMgemVyby5cbiIKK21zZ3N0ciAiZMO8xJ/DvG0gJWkgKCVRKSAlSUYgacOnaW4gaV9mYWRkciwgc8SxZsSxciBvbG1hbMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJkw7zEn8O8bSAlaSAoJVEpICVJZiBpw6dpbiBpX2ZpbGVfYWNsLCBzxLFmxLFyIG9sbWFsxLEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJkw7zEn8O8bSAlaSAoJVEpICVJZCBpw6dpbiBpX2Rpcl9hY2wsIHPEsWbEsXIgb2xtYWzEsS5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCittc2dpZCAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJkw7zEn8O8bSAlaSAoJVEpICVOIGnDp2luIGlfZnJhZywgc8SxZsSxciBvbG1hbMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiZMO8xJ/DvG0gJWkgKCVRKSAgJU4gacOnaW4gaV9mc2l6ZSwgc8SxZsSxciBvbG1hbMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUgKCVJbSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4MAorbXNnaWQgIkBpICVpICglUSkgaGFzIEBuIG1vZGUgKCVJbSkuXG4iCittc2dzdHIgIkTDvMSfw7xtICVpICglUSkgYmlyIGhhdGFsxLEga2lwICglSW0pIGnDp2VyaXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgY29ycnVwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM4NQorIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWksIGJsb2sgJUIsIGtvbnVtICVOOiBkaXppbiBib3p1a1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5MAorIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiRGl6aW4gZMO8xJ/DvG3DvCAlaSwgYmxvayAlQiwga29udW0gJU46IGRvc3lhIGlzbWkgw6dvayB1enVuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorIywgZnV6enkKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWkgYmlyIGF5csSxbG1heWFuIGJsb2sgIyVCIGnDp2VyaXlvci4gICIKKworIy4gQC1leHBhbmRlZDogJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4nIEBkIEBlIGluIEBkIEBpICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbiIKK21zZ3N0ciAiRGl6aW4gZMO8xJ/DvG3DvCAlaSBkZWtpICcuJyBkaXppbiBnaXJkaXNpIE5VTEwgc29ubGFuZMSxcm1hbMSxIGRlxJ9pbFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWkgZGVraSAnLi4nIGRpemluIGdpcmRpc2kgTlVMTCBzb25sYW5kxLFybWFsxLEgZGXEn2lsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIGNoYXJhY3RlciBAdi5cbiIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgKCVRKSBiaXIga3VyYWxkxLHFn8SxIGthcmFrdGVyIGF5Z8SxdMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSAoJVEpIGJpciBrdXJhbGTEscWfxLEgYmxvayBheWfEsXTEsS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjAKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJARSB0ZWtyYXJsYXlhbiAnLicgZ2lyZGlzaSBpw6dlcml5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJARSB0ZWtyYXJsYXlhbiAnLi4nIGdpcmRpc2kgacOnZXJpeW9yLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAixLDDpyBoYXRhOiAlaSBpw6dpbiBkaXppbiBiaWxnaWxlcmkgYnVsdW5hbcSxeW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJARSAlRHIga2F5xLF0IHV6dW5sdcSfdW5kYSwgJU4gb2xtYWzEsXlkxLEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgImljb3VudCB2ZXJpIHlhcMSxc8SxIGnDp2luIHllciBheXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICJEaXppbiBibG9rbGFyxLEgeWluZWxlbmlya2VuIGhhdGE6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1MAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiRGl6aW4gYmxvxJ91ICViIChkw7zEn8O8bSAlaSkgb2t1bnVya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDU1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICJEaXppbiBibG/En3UgJWIgKGTDvMSfw7xtICVpKSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkTDvMSfw7xtICVpIGnDp2luIHllbmkgZGl6aW4gYmxva3UgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWFsbG9jYXRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIkTDvMSfw7xtICVpIGLEsXJha8SxbMSxcmtlbiBoYXRhOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgZW50cnkgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDcwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICInLicgacOnaW4gZGl6aW4gZ2lyZGlzaSBiw7x5w7xrLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSAoJVEpIGJpciBrdXJhbGTEscWfxLEgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkTDvMSfw7xtICVpICglUSkgYmlyIGt1cmFsZMSxxZ/EsSBzb2tldC5cbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgIkBFIGnDp2luIGRvc3lhIHTDvHLDvCAlTiBvbGFyYWsgYmVsaXJsZW5peW9yLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIHNob3VsZCBiZSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5MAorbXNnaWQgIkBFIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAlRHQsIEBzICVOKS5cbiIKK21zZ3N0ciAiQEUgeWFubMSxxZ8gZG9zeWEgdMO8csO8bmRlICglRHQgaWRpLCAlTiBvbG1hbMSxeWTEsSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDk1Cittc2dpZCAiQEUgaGFzIGZpbGV0eXBlIHNldC5cbiIKK21zZ3N0ciAiQEUgacOnaW4gZG9zeWEgdMO8csO8IGJlbGlydGlsbWnFny5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJARW5pbiBpc21pIHPEsWbEsXIgdXp1bmx1a3RhLlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIiVRIHNlbWJvbGlrIGJhxJ/EsSAoZMO8xJ/DvG0gJWkpIGdlw6dlcnNpei5cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAlaSAoJVEpIGlzIGludmFsaWQgKCVJZikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxMAorbXNnaWQgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorbXNnc3RyICJARiBlayDDtnplbGxpayBibG/En3UgZ2XDp2Vyc2l6ICglSWYpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICIiCisiRG9zeWEgc2lzdGVtaSDDp29rIGLDvHnDvGsgZG9zeWFsYXIgacOnZXJpeW9yLCBhbWEgc8O8cGVyYmxva3RhIExBUkdFX0ZJTEUgIgorImJheXJhxJ/EsSB5b2tcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorIywgZnV6enkKK21zZ2lkICJAcCBAaCAlZDogJUIgbm90IHJlZmVyZW5jZWRcbiIKK21zZ3N0ciAiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlZCBpw6dpbmRlIHNvcnVuOiBkw7zEn8O8bSAoJUIpIHJlZmVyYW5zc8SxelxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKKyMsIGZ1enp5Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlZCBpw6dpbmRlIHNvcnVuOiBkw7zEn8O8bSAoJUIpIGlraSBrZXJlIHJlZmVyYW5zbMSxXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorIywgZnV6enkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICIiCisiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlZCBpw6dpbmRlIHNvcnVuOiBkw7zEn8O8bSAoJUIpIGhhdGFsaSBhc2dhcmkgaGFzaCBpw6dlcml5b3JcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWF4IGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTM1CisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIiIKKyJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVkIGnDp2luZGUgc29ydW46IGTDvMSfw7xtICglQikgIGhhdGFsaSBhemFtaSBoYXNoIGnDp2VyaXlvclxuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDAKK21zZ2lkICJAbiBAaCAlZCAoJXEpLiAgIgorbXNnc3RyICJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVkICglcSkgZ2XDp2Vyc2l6LiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVkIGnDp2luZGUgc29ydW46IGJsb2sgbnVtYXJhc8SxICViIGhhdGFsxLEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVkIGnDp2luZGUgc29ydW46IGvDtmsgZMO8xJ/DvG3DvCBnZcOnZXJzaXpcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5CisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gbGltaXQgKCVOKVxuIgorbXNnc3RyICIiCisiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlZCBpw6dpbmRlIHNvcnVuOiBkw7zEn8O8bSAoJUIpIGhhdGFsxLEgc8SxbsSxciAoJU4pIGnDp2VyaXlvclxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgY291bnQgKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjQKKyMsIGZ1enp5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIiIKKyJIVFJFRSBkaXppbiBkw7zEn8O8bcO8ICVkIGnDp2luZGUgc29ydW46IGTDvMSfw7xtICglQikgaGF0YWzEsSBzYXnEsW0gKCVOKSBpw6dlcml5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY5CisjLCBmdXp6eQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbiIKK21zZ3N0ciAiIgorIkhUUkVFIGRpemluIGTDvMSfw7xtw7wgJWQgacOnaW5kZSBzb3J1bjogZMO8xJ/DvG0gKCVCKSBzxLFyYXPEsXogYml0IGhhc2ggdGFibG9zdSAiCisiacOnZXJpeW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorIywgZnV6enkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiIgorIkhUUkVFIGRpemluIGTDvMSfw7xtw7wgJWQgacOnaW5kZSBzb3J1bjogZMO8xJ/DvG0gKCVCKSBnZcOnZXJzaXogZGVyaW5saWsgacOnZXJpeW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgIllpbmVsZW5tacWfIEBFIGJ1bHVuZHUuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisiQEUgYmVuemVyc2l6IG9sbWF5YW4gYmlyIGRvc3lhIGlzbWkgacOnZXJpeW9yLlxuIgorIiVzIG9sYXJhayBkZcSfacWfdGlyaWxtZWxpIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyInJURuJyBnaXJkaXNpIHlpbmVsZW5tacWfLlxuIgorIlx0JXAgKCVpKSB5ZW5pZGVuIGt1cmd1bGFubWFrIMO8emVyZSBpbWxlbml5b3IuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfYmxvY2tzX2hpIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk0Cittc2dpZCAiaV9ibG9ja3NfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfYmxvY2tzX2hpIEBGICVOLCBAcyBzxLFmxLFyLlxuIgorCisjLiBALWV4cGFuZGVkOiBVbmV4cGVjdGVkIGJsb2NrIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTkKK21zZ2lkICJVbmV4cGVjdGVkIEBiIGluIEBoICVkICglcSkuXG4iCittc2dzdHIgIkJla2xlbm1leWVuIEBiLCBAaCBpw6dpbmRlICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgZm91bmQgaW4gZ3JvdXAgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwOAorbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGZvdW5kIGluIEBnICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKKyMsIGZ1enp5Cittc2dpZCAiaV9maWxlX2FjbF9oaSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiZMO8xJ/DvG0gJWkgKCVRKSAlSWYgacOnaW4gaV9maWxlX2FjbCwgc8SxZsSxciBvbG1hbMSxLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkhUUkVFIGRpemluIGTDvMSfw7xtw7wgJWQgacOnaW5kZSBzb3J1bjoga8O2ayBkw7zEn8O8bcO8IGdlw6dlcnNpelxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiSFRSRUUgZGl6aW4gZMO8xJ/DvG3DvCAlZCBpw6dpbmRlIHNvcnVuOiBrw7ZrIGTDvMSfw7xtw7wgZ2XDp2Vyc2l6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4CisjLCBmdXp6eQorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkRpemluIGTDvMSfw7xtw7wgJWksIGJsb2sgJUIsIGtvbnVtICVOOiBkaXppbiBib3p1a1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEVuY3J5cHRlZCBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIHRvbyBzaG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQ4Cittc2dpZCAiRW5jcnlwdGVkIEBFIGlzIHRvbyBzaG9ydC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjU1Cittc2dpZCAiUGFzcyAzOiBDaGVja2luZyBAZCBjb25uZWN0aXZpdHlcbiIKK21zZ3N0ciAiR2XDp2nFnyAzOiBEaXppbiBiYcSfbGFuYWJpbGlybGnEn2kgZGVuZXRsZW5peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiS8O2ayBkw7zEn8O8bcO8IHRhaHNpc2xpIGRlxJ9pbC4gICIKKworIy4gQC1leHBhbmRlZDogTm8gcm9vbSBpbiBsb3N0K2ZvdW5kIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjY1Cittc2dpZCAiTm8gcm9vbSBpbiBAbCBAZC4gICIKK21zZ3N0ciAibG9zdCtmb3VuZCBkaXppbmluZGUgeWVyIHlvay4gICIKKworIy4gQC1leHBhbmRlZDogVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlICVpICglcClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuY29ubmVjdGVkIEBkIEBpICVpICglcClcbiIKK21zZ3N0ciAiRGl6aW4gZMO8xJ/DvG3DvCAlaSAoJXApIGJhxJ9sYW50xLFzxLF6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL2xvc3QrZm91bmQgZGl6aW5pIHlvay4gICIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAiJVEgKCVpKSBkYWtpICcuLicgJVAgKCVqKSwgc8O8cGVyYmxvayAlcSAoJWQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1Cittc2dpZCAiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIgorbXNnc3RyICIvbG9zdCtmb3VuZCBkaXppbmkgeWEgeW9rIHlhIGRhIGhhdGFsxLEuIHRla3JhciBiYcSfbGFuxLFsYW3EsXlvci5cbiIKKworIy4gQC1leHBhbmRlZDogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBleHBhbmQgL0BsOiAlbVxuIgorbXNnc3RyICIvbG9zdCtmb3VuZCBkaXppbmkgZ2VuacWfbGV0aWxlbWl5b3I6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICIlaSB5ZSB0ZWtyYXIgYmHEn2xhbsSxbGFtxLF5b3I6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICIvbG9zdCtmb3VuZCBkaXppbmkgYnVsdW5tYXlhIMOnYWzEscWfxLFsxLFya2FuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgIiIKKyJleHQyZnNfbmV3X2Jsb2NrOiAlbVxuIgorIi9sb3N0K2ZvdW5kIGRpemluaSBvbHXFn3R1cnVsbWF5YSDDp2FsxLHFn8SxbMSxcmthbiBoYXRhIG9sdcWfdHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfaW5vZGU6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL2xvc3QrZm91bmQgZGlyZWN0b3J5XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X0BpOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9AbCBAZFxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19pbm9kZTogJW1cbiIKKyIvbG9zdCtmb3VuZCBkaXppbmkgb2x1xZ90dXJ1bG1heWEgw6dhbMSxxZ/EsWzEsXJrYW4gaGF0YSBvbHXFn3R1LlxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Rpcl9ibG9jazogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19kaXJfQGI6ICVtIHdoaWxlIGNyZWF0aW5nIG5ldyBAZCBAYlxuIgorbXNnc3RyICIiCisiZXh0MmZzX25ld19kaXJfYmxvY2s6ICVtXG4iCisieWVuaSBkaXppbiBibG/En3Ugb2x1xZ90dXJ1bHVya2VuIGhhdGEuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiIgorImV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtXG4iCisiL2xvc3QrZm91bmQgacOnaW4gZGl6aW4gYmxvxJ91IHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGFkanVzdGluZyBpbm9kZSBjb3VudCBvbiBpbm9kZSAlaVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgYWRqdXN0aW5nIEBpIGNvdW50IG9uIEBpICVpXG4iCittc2dzdHIgIkTDvMSfw7xtICVpIMO8emVyaW5kZSBkw7zEn8O8bSBzYXnEsXPEsSBheWFybGFuxLFya2VuIGhhdGEgb2x1xZ90dVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiRMO8xJ/DvG0gJWkgacOnaW4gw7xzdCBkw7zEn8O8bSBiZWxpcmxlbmVtZWRpOiAlbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkTDvMSfw7xtICVpIGnDp2luIMO8c3QgZMO8xJ/DvG0gYmVsaXJsZW5lbWVkaTogw7xzdCBkaXppbiBnaXJkaXNpIGJ1bHVuYW1hZMSxXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkvDtmsgZGl6aW5pIG9sdcWfdHVydWx1cmtlbiBoYXRhICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgL0BsIEBkICglcyk6ICVtXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGRpemluaSBvbHXFn3R1cnVsdXJrZW4gaGF0YSAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeTsgYWJvcnRpbmcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1NQorbXNnaWQgIkByIGlzIG5vdCBhIEBkOyBhYm9ydGluZy5cbiIKK21zZ3N0ciAiS8O2ayBkw7zEn8O8bcO8IGJpciBkaXppbiBkZcSfaWw7IMOnxLFrxLFsxLF5b3IuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIkJpciBrw7ZrIGTDvMSfw7xtw7wgb2xtYWtzxLF6xLFuIGnFn2xlbmVtZXouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9sb3N0K2ZvdW5kIGJpciBkaXppbiBkZcSfaWwgKGTDvMSfw7xtID0gJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGhhcyBpbmxpbmUgZGF0YVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzUKK21zZ2lkICIvQGwgaGFzIGlubGluZSBkYXRhXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvbG9zdCtmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODAKK21zZ2lkICIiCisiQ2Fubm90IGFsbG9jYXRlIHNwYWNlIGZvciAvQGwuXG4iCisiUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4KKyMuIEAtZXhwYW5kZWQ6IE1vdmUgZGF0YSBvZmYgdGhlIGZpbGVzeXN0ZW0gYW5kIHJlLXJ1biBlMmZzY2suXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3ODUKK21zZ2lkICIiCisiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbiIKKyJNb3ZlIGRhdGEgb2ZmIHRoZSBAZiBhbmQgcmUtcnVuIGUyZnNjay5cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkwCittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5NworbXNnaWQgIlBhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXNcbiIKK21zZ3N0ciAiUGFzcyAzQTogRGl6aW5sZXIgZW5peWlsZW5peW9yXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgImRpcnNfdG9faGFzaCB5aW5lbGV5aWNpIG9sdcWfdHVydWxhbWFkxLE6ICVtIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKKyMsIGZ1enp5Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIGRpcmVjdG9yeSAlcSAoJWQpOiAlbVxuIgorbXNnc3RyICJEaXppbiAlcSAoJWQpIGVuaXlpbGVuZW1lZGk6ICVtIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MTIKK21zZ2lkICJPcHRpbWl6aW5nIGRpcmVjdG9yaWVzOiAiCittc2dzdHIgIkVuaXlpbGVuZW4gZGl6aW5sZXI6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIkdlw6dpxZ8gNDogQmHFn3Z1cnUgc2F5xLFzxLEgZGVuZXRsZW5peW9yXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiYXJ0xLFrIGTDvMSfw7xtICVpIHPEsWbEsXIgdXp1bmx1a3RhLiAgIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAaSAlaVxuIgorbXNnc3RyICJhcnTEsWsgZMO8xJ/DvG0gJWlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcmVmIGNvdW50IGlzICVJbCwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NDQKK21zZ2lkICJAaSAlaSByZWYgY291bnQgaXMgJUlsLCBAcyAlTi4gICIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgacOnaW4gYmHFn3Z1cnUgc2F5xLFzxLEgJUlsLCAlTiBvbG1hbMSxeWTEsS4gICIKKworIy4gQC1leHBhbmRlZDogV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbgorIy4gQC1leHBhbmRlZDogXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbgorIy4gQC1leHBhbmRlZDogaW5vZGVfbGlua19pbmZvWyVpXSBpcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IHNob3VsZCBiZSB0aGUgc2FtZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4Cittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKyJVWUFSSTogRTJGU0NLJ0RBIFlBWklMSU0gSEFUQVNJIVxuIgorIiAgICBZQSBEQSBCxLBSIE1BTktBRkEgKFPEsFopIEJBxJ5MSSAoQ0FOTEkpIERPU1lBIFPEsFNURU3EsE7EsCBERU5FVExFVMSwWU9SLlxuIgorIiAgICAgICAgIChwYXJkb24sIHlhemFyIEJPTkVIRUFEIChZT1UpIHlhem3EscWfIGRhKVxuIgorImlub2RlX2xpbmtfaW5mb1slaV0gPSAlTiwgaW5vZGUuaW5vZGVfbGlua3NfY291bnQgPSAlSWwuXG4iCisiQnVubGFyIGF5bsSxIG9sbWFsxLF5ZMSxIVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb25cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODU4Cittc2dpZCAiUGFzcyA1OiBDaGVja2luZyBAZyBzdW1tYXJ5IGluZm9ybWF0aW9uXG4iCittc2dzdHIgIjUuIEdlw6dpxZ86IGdydXAgw7Z6ZXQgYmlsZ2lsZXJpIGRlbmV0bGVuaXlvclxuIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBpbm9kZSBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjMKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAaSBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgIkTDvMSfw7xtIGJpdGXFn2xlbWluaW4gc29udW5kYWtpIGFsYW4gYmVsaXJsZW5tZW1pxZ8uICIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4Cittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGIgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJCbG9rIGJpdGXFn2xlbWluaW4gc29udW5kYWtpIGFsYW4gYmVsaXJsZW5tZW1pxZ8uICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgImJsb2sgYml0ZcWfbGVtaSBmYXJrbGFyxLE6ICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg5MworbXNnaWQgIkBpIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgImTDvMSfw7xtIGJpdGXFn2xlbWkgZmFya2xhcsSxOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICIlZy4gZ3J1cCBpw6dpbiBzZXJiZXN0IGTDvMSfw7xtIHNhecSxc8SxIHlhbmzEscWfICglaSwgc2F5xLFsYW4gPSAlaikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IERpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4Cittc2dpZCAiRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICIlZy4gZ3J1cCBpw6dpbiBkaXppbiBzYXnEsXPEsSB5YW5sxLHFnyAoJWksIHNhecSxbGFuID0gJWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJTZXJiZXN0IGTDvMSfw7xtIHNhecSxc8SxIHlhbmzEscWfICglaSwgc2F5xLFsYW4gPSAlaikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICIlZy4gZ3J1cCBpw6dpbiBzZXJiZXN0IGJsb2sgc2F5xLFzxLEgeWFubMSxxZ8gKCViLCBzYXnEsWxhbiA9ICVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiU2VyYmVzdCBibG9rIHNhecSxc8SxIHlhbmzEscWfICglYiwgc2F5xLFsYW4gPSAlYykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIiIKKyJQUk9HUkFNTEFNQSBIQVRBU0k6IGRvc3lhIHNpc3RlbWkgKCMlTikgYml0ZcWfbGVtIHPEsW7EsXJsYXLEsSAoJWIsICVjKVxuIgorImlsZSBoZXNhcGxhbmFuIGJpdGXFn2xlbSBzxLFuxLFybGFyxLEgKCVpLCAlaikgdXl1xZ9tdXlvclxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogZnVkZ2luZyBlbmQgb2YgYml0bWFwICglTilcbiIKK21zZ3N0ciAixLDDpyBoYXRhOiBiaXRlxZ9sZW1pbiBzb251bmRhIGJvenVsbWEgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGlub2RlIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGkgQEI6ICVtXG4iCittc2dzdHIgIlllZGVrIGTDvMSfw7xtIGJpdGXFn2xlbWluZGUga29weWFsYW1hIGhhdGFzxLE6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiWWVkZWsgYmxvayBiaXRlxZ9sZW1pbmRlIGtvcHlhbGFtYSBoYXRhc8SxOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCisjLCBmdXp6eQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICJZZW5pZGVuIG9sdcWfdHVyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDYKK21zZ2lkICJVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzZXR0aW5nIGJsb2NrIGdyb3VwIGNoZWNrc3VtIGluZm86ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICItIGhhdGFsxLEgYmxvayBkw7zEn8O8bcO8IGJlbGlybGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiRMO8xJ/DvG0gJWkgb2t1bnVya2VuIGhhdGEgb2x1xZ90dTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJEw7zEn8O8bSAlaSBva3VudXJrZW4gaGF0YSBvbHXFn3R1OiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5oYW5kbGVkIGVycm9yIGNvZGUgKDB4JXgpIVxuIgorbXNnc3RyICJFbGRlIGVkaWxlbWV5ZW4gaGF0YSBrb2R1ICgoMHgleCkhXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICJZT0tTQVlJTERJIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVkLCBlbGFwc2VkIHRpbWU6ICU2LjNmLyU2LjNmLyU2LjNmXG4iCittc2dzdHIgIkt1bGxhbsSxbGFuIGJlbGxlazogJWQsIGdlw6dlbiBzw7xyZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICJkw7zEn8O8bSB1enVubHXEn3UgPSAlZFxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMTkKK21zZ2lkICJ3aGlsZSBzdGFydGluZyBpbm9kZSBzY2FuIgorbXNnc3RyICItIGTDvMSfw7xtIHRhcmFtYXPEsSBiYcWfbGF0xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTMwCittc2dpZCAid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAiLSBkw7zEn8O8bSB0YXJhbWFzxLEgeWFwxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3N1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlub2RlICVkIgorbXNnc3RyICJEw7zEn8O8bSAlZCBpw6dpbiBleHQyZnNfYmxvY2tfaXRlcmF0ZSBpxZ9sZXZpIMOnYcSfcsSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay9zdXBlci5jOjIxMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiBmb3IgaW5vZGUgJWQiCittc2dzdHIgIkTDvMSfw7xtICVkIGnDp2luIGV4dDJmc19ibG9ja19pdGVyYXRlIGnFn2xldmkgw6dhxJ9yxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAiS8SxcnDEsWzEsXlvciIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIlRlbWl6bGVuaXlvciIKKworIzogZTJmc2NrL3VuaXguYzo3NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLXBhbnlyY2Rma3R2REZWXSBbLWIgc3VwZXJibG9ja10gWy1CIGJsb2Nrc2l6ZV1cbiIKKyJcdFx0Wy1sfC1MIGJhZF9ibG9ja3NfZmlsZV0gWy1DIGZkXSBbLWogZXh0ZXJuYWxfam91cm5hbF1cbiIKKyJcdFx0Wy1FIGV4dGVuZGVkLW9wdGlvbnNdIFsteiB1bmRvX2ZpbGVdIGRldmljZVxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6ICVzIFstcGFueXJjZGZ2c3RERlNWXSBbLWIgc3VwZXJibG9rXSBbLUIgYmxva2JveXVdXG4iCisiXHRbLUkgZMO8xJ/DvG1fdGFtcG9udV9ibG9rX3NhecSxc8SxXSBbLVAgacWfbGVtX2TDvMSfw7xtw7xfYm95dV1cbiIKKyJcdFstbHwtTCBoYXRhbMSxX2Jsb2tsYXJfZG9zeWFzxLFdIFstQyBkb3N5YV90YW7EsW1sYXnEsWPEsV1cbiIKKyJcdFstaiBkxLHFn19nw7xubMO8a19heWfEsXTEsV0gWy1FIGVrX3Nlw6dlbmVrbGVyXSAgYXlnxLF0XG4iCisiTGludXggaWtpbmNpIGdlbGnFn21pxZ8gZG9zeWEgc2lzdGVtaW5pbiAoZTJmcykgZGVuZXRsZW5tZXNpIGnDp2luXG4iCisia3VsbGFuxLFsxLFyLiBleHQzIGRlc3Rla2xlbm1pxZ90aXIuXG4iCisiXG4iCisiU2XDp2VuZWtsZXI6XG4iCisiICAgLWEgICAgICAgICAgICAgICAgICAgICAgICAtcCBpbGUgYXluxLFcbiIKKyIgICAtQyBkb3N5YV90YW7EsW1sYXnEsWPEsSAgICAgIGUyZnNjayd5xLEgw6dhbMSxxZ90xLFyYW4gdXlndWxhbWFsYXJjYSBrdWxsYW7EsWzEsXJcbiIKKyIgICAtZCAgICAgICAgICAgICAgICAgICAgICAgIEhhdGEgYXnEsWtsYW1hIGlsZXRpbGVyaW5pIGfDtnN0ZXJpclxuIgorIiAgIC1EICAgICAgICAgICAgICAgICAgICAgICAgZGl6aW5sZXIgZW5peWlsZW5pclxuIgorIiAgIC1GICAgICAgICAgICAgICAgICAgICAgICAgdGFtcG9uIGJlbGxlayBpxZ9sZW0gw7ZuY2VzaSBib8WfYWx0xLFsxLFyXG4iCisiICAgLXIgICAgICAgICAgICAgICAgICAgICAgICBidSBzZcOnZW5layB5b2tzYXnEsWzEsXJcbiIKKyIgICAtcyAgICAgICAgICAgICAgICAgICAgICAgIGRvc3lhIHNpc3RlbWkgYmF5dCBzxLFyYWxhbWFzxLEgdGVyc3NlICIKKyJrdWxsYW7EsWzEsXIuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3JtYWwgc8SxcmFkYSBpc2UgZXRraXNpemRpci5cbiIKKyIgICAtUyAgICAgICAgICAgICAgICAgICAgICAgIE1ldmN1dCBiYXl0IHPEsXJhbGFtYXPEsW5hIGJha8SxbG1ha3PEsXrEsW4gZG9zeWFcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpc3RlbWluaW4gYmF5dCBzxLFyYWxhbWFzxLEgdGVycyDDp2V2cmlsaXJcbiIKKyIgICAtdCAgICAgICAgICAgICAgICAgICAgICAgIGlzdGF0aXN0aWtsZXIgZ8O2c3RlcmlsaXIsIGlraSBrZXJlIHZlcmlsbWnFn3NlXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXIgZ2XDp2nFn2luIGlzdGF0aXN0aWtsZXJpIGRlIGfDtnN0ZXJpbGlyLlxuIgorIiAgIC1WICAgICAgICAgICAgICAgICAgICAgICAgc8O8csO8bSBiaWxnaWxlcmkgZ8O2c3RlcmlsaXIgdmUgw6fEsWthclxuIgorIlxuIgorIsOHZXZpcmkgaGF0YWxhcsSxbsSxIDxnbnUtdHJAYmVsZ2VsZXIub3JnPiBhZHJlc2luZSBiaWxkaXJpbml6LlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisiQWNpbCB5YXJkxLFtOlxuIgorIiAgIC1wICAgICAgICAgICAgICAgICAgICAgICAgSGnDpyBzb3J1IHNvcm1hZGFuIHNpc3RlbSBvdG9tYXRpayBvbmFyxLFsxLFyXG4iCisiICAgLW4gICAgICAgICAgICAgICAgICAgICAgICBkb3N5YSBzaXN0ZW1pIHNhbHQtb2t1bnVyIGHDp8SxbMSxci4gRGVuZXRpbVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc8SxcmFzxLFuZGEgdMO8bSBzb3J1bGFyYSBIQVlJUiBjZXZhYsSxIHZlcmlsZGnEn2lcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnNhecSxbMSxci5cbiIKKyIgICAteSAgICAgICAgICAgICAgICAgICAgICAgIERlbmV0aW0gc8SxcmFzxLFuZGEgdMO8bSBzb3J1bGFyYSBFVkVUIGNldmFixLFcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmlsZGnEn2kgdmFyc2F5xLFsxLFyLlxuIgorIiAgIC1jICAgICAgICAgICAgICAgICAgICAgICAgdmFyc2EgaGF0YWzEsSBibG9rbGFyIGJ1bHVudXIgdmUgaGF0YWzEsSBibG9rbGFyXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXNpbmUgZWtsZW5pclxuIgorIiAgIC1mICAgICAgICAgICAgICAgICAgICAgICAgZGlzayBiw7Zsw7xtw7wgdGVtaXogYmlsZSBvbHNhIGRlbmV0aW0geWFwxLFsxLFyXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODgKKyMsIGZ1enp5Cittc2dpZCAiIgorIiAtdiAgICAgICAgICAgICAgICAgICBCZSB2ZXJib3NlXG4iCisiIC1iIHN1cGVyYmxvY2sgICAgICAgIFVzZSBhbHRlcm5hdGl2ZSBzdXBlcmJsb2NrXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIEZvcmNlIGJsb2Nrc2l6ZSB3aGVuIGxvb2tpbmcgZm9yIHN1cGVyYmxvY2tcbiIKKyIgLWogZXh0ZXJuYWxfam91cm5hbCAgU2V0IGxvY2F0aW9uIG9mIHRoZSBleHRlcm5hbCBqb3VybmFsXG4iCisiIC1sIGJhZF9ibG9ja3NfZmlsZSAgIEFkZCB0byBiYWRibG9ja3MgbGlzdFxuIgorIiAtTCBiYWRfYmxvY2tzX2ZpbGUgICBTZXQgYmFkYmxvY2tzIGxpc3RcbiIKKyIgLXogdW5kb19maWxlICAgICAgICAgQ3JlYXRlIGFuIHVuZG8gZmlsZVxuIgorbXNnc3RyICIiCisiICAgLXYgICAgICAgICAgICAgICAgICAgICAgICBheXLEsW50xLFsxLEgYmlsZ2kgdmVyaWxpclxuIgorIiAgIC1iIHN1cGVyYmxvayAgICAgICAgICAgICAgbm9ybWFsIHPDvHBlcmJsb2sgeWVyaW5lIGJlbGlydGlsZW4ga3VsbGFuxLFsxLFyXG4iCisiICAgLUIgYmxva2JveXUgICAgICAgICAgICAgICBzw7xwZXJibG9rIGFyYW7EsXJrZW4ga3VsbGFuxLFsYW4gYmxvayBib3l1XG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ZXJpbmUgYmVsaXJ0aWxlbiBrdWxsYW7EsWzEsXJcbiIKKyIgICAtaiBkxLHFny1nw7xubMO8ay1heWfEsXTEsSAgICAgIGfDvG5sw7xrIGRvc3lhc8SxbsSxbiBhcmFuYWNhxJ/EsSBheWfEsXQgYmVsaXJ0aWxpclxuIgorIiAgIC1sIGhhdGFsxLFfYmxva2xhcl9kb3N5YXPEsSBiZWxpcnRpbGVuIGRvc3lhZGFraSBoYXRhbMSxIGJsb2tsYXIgbGlzdGV5ZVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWtsZW5pclxuIgorIiAgIC1MIGhhdGFsxLFfYmxva2xhcl9kb3N5YXPEsSBoYXRhbMSxIGJsb2tsYXIgbGlzdGVzaSBiZWxpcnRpbGVuIGRvc3lhZGFraWxlclxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWxlIG9sdcWfdHVydWx1clxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICV1LyV1IGZpbGVzICglMGQuJWQlJSBub24tY29udGlndW91cyksICVsbHUvJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXM6ICVkLyVkIGRvc3lhICglJSUwZC4lZCB5YW55YW5hIG9sbWF5YW4gZMO8xJ/DvG0pLCAldS8ldSBibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlOGQgZMO8xJ/DvG0ga3VsbGFuxLFsZMSxICglJSVkKVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisiJThkIGTDvMSfw7xtIGt1bGxhbsSxbGTEsSAoJSUlZClcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZmlsZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlOGQgYml0acWfaWsgb2xtYXlhbiBkw7zEn8O8bSAoJSUlMGQuJWQpXG4iCittc2dzdHJbMV0gIiU4ZCBiaXRpxZ9payBvbG1heWFuIGTDvMSfw7xtICglJSUwZC4lZClcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3J5ICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcmllcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiU4ZCBiaXRpxZ9payBvbG1heWFuIGTDvMSfw7xtICglJSUwZC4lZClcbiIKK21zZ3N0clsxXSAiJThkIGJpdGnFn2lrIG9sbWF5YW4gZMO8xJ/DvG0gKCUlJTBkLiVkKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiAgICAgICAgIGluZC9kaW5kL3RpbmQgYmxva2xhcsSxbsSxbiBkw7zEn8O8bSBzYXnEsWxhcsSxOiAlZC8lZC8lZFxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MgorbXNnaWQgIiAgICAgICAgICAgICBFeHRlbnQgZGVwdGggaGlzdG9ncmFtOiAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3VuaXguYzoxOTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJThkIGJsb2sga3VsbGFuxLFsZMSxICglJSVkKVxuIgorbXNnc3RyWzFdICIlOGQgYmxvayBrdWxsYW7EsWxkxLEgKCUlJWQpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJThkIGhhdGFsxLEgYmxva1xuIgorbXNnc3RyWzFdICIlOGQgaGF0YWzEsSBibG9rXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlOGQgYsO8ecO8ayBkb3N5YVxuIgorbXNnc3RyWzFdICIlOGQgYsO8ecO8ayBkb3N5YVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiU4ZCBub3JtYWwgZG9zeWFcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiU4ZCBub3JtYWwgZG9zeWFcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJThkIGRpemluXG4iCittc2dzdHJbMV0gIiU4ZCBkaXppblxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiU4ZCBrYXJha3RlciBheWfEsXTEsSBkb3N5YXPEsVxuIgorbXNnc3RyWzFdICIlOGQga2FyYWt0ZXIgYXlnxLF0xLEgZG9zeWFzxLFcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJThkIGJsb2sgYXlnxLF0xLEgZG9zeWFzxLFcbiIKK21zZ3N0clsxXSAiJThkIGJsb2sgYXlnxLF0xLEgZG9zeWFzxLFcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiU4ZCBmaWZvXG4iCittc2dzdHJbMV0gIiU4ZCBmaWZvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxpbmtcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsaW5rc1xuIgorbXNnc3RyWzBdICIlOGQgYmHEn1xuIgorbXNnc3RyWzFdICIlOGQgYmHEn1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlOGQgc2VtYm9saWsgYmHEnyIKK21zZ3N0clsxXSAiJThkIHNlbWJvbGlrIGJhxJ8iCisKKyM6IGUyZnNjay91bml4LmM6MjE0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgKCV1IGZhc3Qgc3ltYm9saWMgbGluaylcbiIKK21zZ2lkX3BsdXJhbCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmtzKVxuIgorbXNnc3RyWzBdICIgKCVkIGjEsXpsxLEgc2VtYm9saWsgYmHEnylcbiIKK21zZ3N0clsxXSAiICglZCBoxLF6bMSxIHNlbWJvbGlrIGJhxJ8pXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAiJThkIHNva2V0XG4iCittc2dzdHJbMV0gIiU4ZCBzb2tldFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJThkIGRvc3lhXG4iCittc2dzdHJbMV0gIiU4ZCBkb3N5YVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIzNSBtaXNjL2JhZGJsb2Nrcy5jOjk5MyBtaXNjL3R1bmUyZnMuYzoyODc4IG1pc2MvdXRpbC5jOjEyNgorIzogcmVzaXplL21haW4uYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAiLSAlcydpbiBiYcSfbMSxIG9sdXAgb2xtYWTEscSfxLEgc2FwdGFubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUuIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIlV5YXLEsSEgICVzIGJhxJ9sxLEuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICJVeWFyxLEhICAlcyBiYcSfbMSxLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiJXMgYmHEn2xhbmTEsS4gICIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiJXMgYmHEn2xhbmTEsS4gICIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRldmFtIGVkaWxlbWl5b3IuIMOnxLFrxLFsxLF5b3IuXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjcxCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIioqKipExLBLS0FUISEhISAgZTJmc2NrJ27EsW4gYmHEn2zEsSBiaXIgZG9zeWEgc2lzdGVtaW5kZSDDp2FsxLHFn3TEsXLEsWxtYXPEsVxuIgorIsOHT0sgQ8SwRETEsCBoYXNhcmxhcmEgc2ViZXAgb2xhYmlsaXIuKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3NgorbXNnaWQgIkRvIHlvdSByZWFsbHkgd2FudCB0byBjb250aW51ZSIKK21zZ3N0ciAiR2Vyw6dla3RlbiBkZXZhbSBldG1layBpc3RpeW9yIG11c3VudXo/IgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgImRlbmV0aW0gZHVyZHUuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MzcxCittc2dpZCAiIGNvbnRhaW5zIGEgZmlsZSBzeXN0ZW0gd2l0aCBlcnJvcnMiCittc2dzdHIgIiBoYXRhbMSxIGJpciBkb3N5YSBzaXN0ZW1pIGnDp2VyaXlvciIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIHVzdWzDvG5jZSBzaXN0ZW1kZW4gYXlyxLFsbWFtxLHFnyIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIGJpcmluY2lsIHPDvHBlcmJsb2sgw7Z6ZWxsaWtsZXJpIHllZGVrbGVtZWRlbiBmYXJrbMSxIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBkZW5ldGxlbm1la3NpemluICV1IGtlcmUgYmHEn2xhbmTEsSIKKworIzogZTJmc2NrL3VuaXguYzozODYKKyMsIGZ1enp5Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIkRvc3lhIHNpc3RlbWluaW4gc29uIGRlbmV0aW0gemFtYW7EsSAlcyB5YXDEsWzEsXlvclxuIgorCisjOiBlMmZzY2svdW5peC5jOjM5MgorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGdvbmUgJXUgZGF5cyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiBkZW5ldGxlbm1la3NpemluICV1IGfDvG4gZ2XDp3RpIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIGRlbmV0aW0gYmHFn2xhdMSxbGFjYWsuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogdGVtaXosICVkLyVkIGRvc3lhLCAldS8ldSBibG9rIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NAorbXNnaWQgIiAoY2hlY2sgZGVmZXJyZWQ7IG9uIGJhdHRlcnkpIgorbXNnc3RyICIgKGRlbmV0bGVtZSBlcnRlbGVuZGk7IGJhdGFyeWEpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1NworbXNnaWQgIiAoY2hlY2sgYWZ0ZXIgbmV4dCBtb3VudCkiCittc2dzdHIgIiAoc2lzdGVtIGJhxJ9sYW5kxLFrdGFuIHNvbnJhIGRlbmV0bGUpIgorCisjOiBlMmZzY2svdW5peC5jOjQ1OQorIywgYy1mb3JtYXQKK21zZ2lkICIgKGNoZWNrIGluICVsZCBtb3VudHMpIgorbXNnc3RyICIgKHNpc3RlbSAlbGQga2VyZSBiYcSfbGFuZMSxxJ/EsW5kYSBkZW5ldGxlKSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAiSEFUQTogL2Rldi9udWxsIGHDp8SxbGFtYWTEsSAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJFayDDtnplbGxpayBzw7xyw7xtw7wgZ2XDp2Vyc2l6LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjY5MgorIywgZnV6enkKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAiWWVuaWRlbiBib3l1dGxhbWEgcGFyYW1ldHJlc2kgZ2XDp2Vyc2l6OiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAiQmlsaW5tZXllbiBlayBzZcOnZW5lazogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJlMmZzY2sgeWFwxLFsYW5kxLFybWEgZG9zeWFzxLFuZGEgKCVzLCAlZC5zYXTEsXJkYSkgc8O2emRpemltaSBoYXRhc8SxXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiRG9zeWEgdGFuxLFtbGF5xLFjxLEgJWQgZGXEn2VybGVuZGlyaWxpcmtlbiBoYXRhOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgIlRhbWFtbGFtYSBiaWxnaXNpIGRvc3lhIHRhbsSxbWxhecSxY8Sxc8SxIGdlw6dlcnNpeiIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKK21zZ2lkICJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iCittc2dzdHIgIlNhZGVjZSAtcC8tYSwgLW4gdmV5YSAteSBzZcOnZW5la2xlcmluZGVuIHNhZGVjZSBiaXJpIGJlbGlydGlsZWJpbGlyLiIKKworIzogZTJmc2NrL3VuaXguYzo4NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIC10IG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCittc2dzdHIgIiAtdCBzZcOnZW5lxJ9pIGUyZnNjayduxLFuIGJ1IHPDvHLDvG3DvG5kZSBkZXN0ZWtsZW5taXlvci5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIiclcycgw6fDtnrDvG1sZW5lbWl5b3IiCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6OTYyCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtbiBhbmQgLWwvLUwgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorIiAtYyBzZcOnZW5lxJ9pIGlsZSAtbCB2ZSAtTCBzZcOnZW5la2xlcmkgYXluxLEgYW5kYSBiaXJsaWt0ZSBrdWxsYW7EsWxhbWF6LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorIywgZnV6enkKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorIiAtYyBzZcOnZW5lxJ9pIGlsZSAtbCB2ZSAtTCBzZcOnZW5la2xlcmkgYXluxLEgYW5kYSBiaXJsaWt0ZSBrdWxsYW7EsWxhbWF6LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorIywgZnV6enkKK21zZ2lkICJUaGUgLUUgYm1hcDJleHRlbnQgYW5kIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiIgorIiAtYyBzZcOnZW5lxJ9pIGlsZSAtbCB2ZSAtTCBzZcOnZW5la2xlcmkgYXluxLEgYW5kYSBiaXJsaWt0ZSBrdWxsYW7EsWxhbWF6LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEwNDYKK21zZ2lkICJUaGUgLWMgYW5kIHRoZSAtbC8tTCBvcHRpb25zIG1heSBub3QgYmUgYm90aCB1c2VkIGF0IHRoZSBzYW1lIHRpbWUuXG4iCittc2dzdHIgIiIKKyIgLWMgc2XDp2VuZcSfaSBpbGUgLWwgdmUgLUwgc2XDp2VuZWtsZXJpIGF5bsSxIGFuZGEgYmlybGlrdGUga3VsbGFuxLFsYW1hei5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMDkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFMkZTQ0tfSkJEX0RFQlVHIFwiJXNcIiBub3QgYW4gaW50ZWdlclxuIgorIlxuIgorbXNnc3RyICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgYmlyIHRhbXNhecSxIGRlxJ9pbFxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJTYXnEsXNhbCBvbG1heWFuIGdlw6dlcnNpeiBiYcSfxLFtc8SxeiBkZcSfacWfa2VuLCAtJWMgKFwiJXNcIilcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgaW50ZXJ2YWwgaXMgJXUgc2Vjb25kcyBhbmQgdG90YWwgd2FpdCB0aW1lIGlzICV1IHNlY29uZHMuIFBsZWFzZSAiCisid2FpdC4uLlxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIxMCBlMmZzY2svdW5peC5jOjEyMTUKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgTU1QIGJsb2NrIgorbXNnc3RyICItIHPDvHBlcmJsb2sgYXlhcmxhbsSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jayIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgZMO8xJ/DvG3DvCBva3VubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay91bml4LmM6MTI1MiBlMmZzY2svdW5peC5jOjEzMDQgbWlzYy9lMnVuZG8uYzoyMzAgbWlzYy9lMnVuZG8uYzoyNzUKKyM6IG1pc2MvbWtlMmZzLmM6MjU0MSBtaXNjL21rZTJmcy5jOjI1OTIgbWlzYy90dW5lMmZzLmM6MjYxMAorIzogbWlzYy90dW5lMmZzLmM6MjY1NSByZXNpemUvbWFpbi5jOjE4NyByZXNpemUvbWFpbi5jOjIzMgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lIHVzaW5nIHRoZSBjb21tYW5kOlxuIgorIiAgICBlMnVuZG8gJXMgJXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGVsZXRlICVzIgorbXNnc3RyICItICVzIHllbmlkZW4gYm95dXRsYW5kxLFyxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdGfDvG5sw7xrIGRvc3lhc8SxIG9sdcWfdHVydWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3VuaXguYzoxMzYzCittc2dpZCAiRXJyb3I6IGV4dDJmcyBsaWJyYXJ5IHZlcnNpb24gb3V0IG9mIGRhdGUhXG4iCittc2dzdHIgIkhhdGE6IGV4dDJmcyBraXRhcGzEsWsgc8O8csO8bcO8IHV5Z3VuIGRlxJ9pbCFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAiLSB1eWd1bGFtYSBiYcWfbGF0xLFsbWF5YSDDp2VsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay91bml4LmM6MTM5MworIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzLCAlc1xuIgorbXNnc3RyICJcdCVzLCAlcyBrdWxsYW7EsWzEsXlvclxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0MDUKK21zZ2lkICJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIgorbXNnc3RyICJldGtpbGXFn2ltbGkgb25hcsSxbSBpw6dpbiB1w6diaXJpbSBnZXJla2xpIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyBibG9rbGFyxLEgeWVkZWtsZW1leWUgw6dhbMSxxZ/EsXlvci4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICJTw7xwZXJibG9rIGdlw6dlcnNpeiwiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OQorbXNnaWQgIkdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIgorbXNnc3RyICJHcnVwIHRhbsSxbWxhecSxY8SxbGFyIGhhdGFsxLEgZ8O2csO8bsO8eW9yLi4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSB1c2luZyB0aGUgYmFja3VwIGJsb2NrcyIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgZMO8xJ/DvG3DvCBva3VudXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svdW5peC5jOjE0ODMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXM6IGdlw6dlcmxpIGfDvG1sw7xrIGRvc3lhc8SxIHN1cGVyIGJsb8SfdSB5b2tcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRvc3lhIHNpc3RlbWkgZTJmc2NrJ27EsW4gYnUgc8O8csO8bcO8bmRlbiBkYWhhIHnDvGtzZWsgYmlyIHPDvHLDvG3DvFxuIgorImRlc3Rla2xpeW9yIGdpYmkuIChZYSBkYSBkb3N5YSBzaXN0ZW1pbmluIHPDvHBlcmJsb8SfdSBib3p1ayBvbGFiaWxpcilcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiQnUgc8SxZsSxciB1enVubHVrbHUgYmlyIGRpc2sgYsO2bMO8bcO8IG9sYWJpbGlyIG1pP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiWW91IG11c3QgaGF2ZSAlcyBhY2Nlc3MgdG8gdGhlIGZpbGVzeXN0ZW0gb3IgYmUgcm9vdFxuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmUgJXMgZXJpxZ9pbWluaXogb2xtYWzEsSB5YSBkYSByb290IG9sbWFsxLFzxLFuxLF6XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyNworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBvciBzd2FwIGRldmljZT9cbiIKK21zZ3N0ciAiQnUgbWV2Y3V0IG9sbWF5YW4gYmlyIGF5Z8SxdCB5YSBkYSBiaXIgdGFrYXMgYXlnxLF0xLEgbcSxIGFjYWJhP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjkKK21zZ2lkICJGaWxlc3lzdGVtIG1vdW50ZWQgb3Igb3BlbmVkIGV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIKK21zZ3N0ciAiIgorIkRvc3lhc2lzdGVtaSBiYcWfa2EgYmlyIHV5Z3VsYW1hIHRhcmFmxLFuZGFuIMO2emVsbGlrbGUgYmHEn2xhbm3EscWfIHZleWEgYcOnxLFsbcSxxZ9cbiIKKyJvbGFiaWxpciBtaT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCisjLCBmdXp6eQorbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIkJ1IG1ldmN1dCBvbG1heWFuIGJpciBheWfEsXQgeWEgZGEgYmlyIHRha2FzIGF5Z8SxdMSxIG3EsSBhY2FiYT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTM2Cittc2dpZCAiIgorIkRpc2sgd3JpdGUtcHJvdGVjdGVkOyB1c2UgdGhlIC1uIG9wdGlvbiB0byBkbyBhIHJlYWQtb25seVxuIgorImNoZWNrIG9mIHRoZSBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyJEaXNrIHlhem1hIGtvcnVtYWzEsTsgLW4gc2XDp2VuZcSfaW5pIGt1bGxhbmFyYWsgc2FsdC1va3Uga2lwaW5kZVxuIgorImRlbmV0aW0geWFwxLFuxLF6LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgImUyZnNjayduxLFuIGRhaGEgeWVuaSBiaXIgc8O8csO8bcO8bsO8IGFsxLFuISIKKworIzogZTJmc2NrL3VuaXguYzoxNjQ4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGVja2luZyBqb3VybmFsIGZvciAlcyIKK21zZ3N0ciAiLSAlcyBpw6dpbiBleHQzIGfDvG5sw7zEn8O8IGRlbmV0bGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiQmlyIGvDtmsgZMO8xJ/DvG3DvCBvbG1ha3PEsXrEsW4gacWfbGVuZW1lei5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIlV5YXLEsTogRG9zeWEgc2lzdGVtaSBzYWx0LW9rdSBraXBpbmRlIGRlbmV0bGVuZGnEn2luZGVuXG4iCisiZ8O8bmzDvGsgZG9zeWFzxLFuYSBnw7ZyZSBrdXJ0YXJtYSBhdGxhbsSxeW9yLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgIiVzIMO8emVyaW5lIHPDvHBlcmJsb2sgYmF5cmFrbGFyxLEga29udWxhbWFkxLFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIkfDvG5sw7xrIHPDvHBlcmJsb8SfdSB5b2shXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIKK21zZ3N0ciAiR8O8bmzDvGsgc2lsaW5kaVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlY292ZXJpbmcgam91cm5hbCBvZiAlcyIKK21zZ3N0ciAiLSAlcyBleHQzIGfDvG5sw7xrIGRvc3lhc8SxIGt1cnRhcsSxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyBkZXN0ZWtsZW5tZXllbiDDtnplbGxpayhsZXJpKToiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICItIGhhdGFsxLEgYmxva2xhciBkw7zEn8O8bcO8IG9rdW5tYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3VuaXguYzoxNzcyCittc2dpZCAiVGhpcyBkb2Vzbid0IGJvZGUgd2VsbCwgYnV0IHdlJ2xsIHRyeSB0byBnbyBvbi4uLlxuIgorbXNnc3RyICJCdSBwZWsgaGF5cmEgYWxhbWV0IGRlxJ9pbCwgYW1hIMO8c3TDvG5lIGdpZGlsZWNlay4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICJHw7xubMO8ayBvbHXFn3R1cnVsdXlvciAoJWQgYmxvayk6ICIKKworIzogZTJmc2NrL3VuaXguYzoxODI4Cittc2dpZCAiIERvbmUuXG4iCittc2dzdHIgIiBUYW1hbWxhbmTEsS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyIqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiBnw7xubMO8ayB5ZW5pZGVuIG9sdcWfdHVydWxkdSAtIGRvc3lhIHNpc3RlbWkgeWVuaWRlbiBleHQzICoqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzYKK21zZ2lkICJhYm9ydGVkIgorbXNnc3RyICLDp8Sxa3TEsSIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiBlMmZzY2sgZHVyZHVydWxkdS5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgImUyZnNjayBiYcWfdGFuIGJhxZ9sxLF5b3IuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY5Cittc2dpZCAid2hpbGUgcmVzZXR0aW5nIGNvbnRleHQiCittc2dzdHIgIi0gYmHEn2xhbSBzxLFmxLFybGFuxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3VuaXguYzoxOTEzIGUyZnNjay91dGlsLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKipcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKiBET1NZQSBTxLBTVEVNxLAgREXEnsSwxZ5UxLBSxLBMRMSwICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkxNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6ICoqKioqIFJFQk9PVCBTWVNURU0gKioqKipcbiIKK21zZ3N0ciAiJXM6ICoqKioqIE1BS8SwTkFZSSBZRU7EsERFTiBCQcWeTEFUSU4gKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTI1IGUyZnNjay91dGlsLmM6NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBVWUFSSTogRG9zeWEgc2lzdGVtaSBoYWxhIGhhdGFsxLEgKioqKioqKioqKlxuIgorIlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NCBtaXNjL3V0aWwuYzo5MworbXNnaWQgInlZIgorbXNnc3RyICJlRSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAiaEgiCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjEzCittc2dpZCAiPHk+IgorbXNnc3RyICI8ZT4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE1Cittc2dpZCAiPG4+IgorbXNnc3RyICI8aD4iCisKKyM6IGUyZnNjay91dGlsLmM6MjE3Cittc2dpZCAiICh5L24pIgorbXNnc3RyICIgKGUvaCkiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICJkdXJkdXJ1bGR1IVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NgorbXNnaWQgInllc1xuIgorbXNnc3RyICJldmV0XG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY4Cittc2dpZCAibm9cbiIKK21zZ3N0ciAiaGF5xLFyXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBoYXnEsXJcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyBldmV0XG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJldmV0IgorCisjOiBlMmZzY2svdXRpbC5jOjI4NgorbXNnaWQgIm5vIgorbXNnc3RyICJoYXnEsXIiCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiZTJmc2NrX3JlYWRfYml0bWFwczogJXMgacOnaW4gYml0ZcWfbGVtIGJsb2tsYXLEsSBrdXJhbGTEscWfxLEiCisKKyM6IGUyZnNjay91dGlsLmM6MzA3Cittc2dpZCAicmVhZGluZyBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcyIKK21zZ3N0ciAiZMO8xJ/DvG0gdmUgYmxvayBiaXRlxZ9sZW1sZXJpIG9rdW51eW9yIgorCisjOiBlMmZzY2svdXRpbC5jOjMxOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXRyeWluZyB0byByZWFkIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICItICVzIGnDp2luIGJpdGXFn2xlbWxlcmluIG9rdW5tYXPEsSB5aW5lbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorIywgZnV6enkKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICJibG9rIGJpdGXFn2xlbWxlcmkgeWF6xLFsxLF5b3IiCisKKyM6IGUyZnNjay91dGlsLmM6MzM2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZXdyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMgZm9yICVzIgorbXNnc3RyICItICVzIGnDp2luIGTDvMSfw7xtIGJpdGXFn2xlbWxlcmluaW4geWF6xLFsbWFzxLEgeWluZWxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogZTJmc2NrL3V0aWwuYzozNDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlxuIgorIiVzOiBVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k7IFJVTiBmc2NrIE1BTlVBTExZLlxuIgorIlx0KGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucylcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIiVzOiBCRUtMRU5NRVlFTiBVWUdVTlNVWkxVSzsgZnNjayDDh0FMScWeVElSTUFMSVNJTklaLlxuIgorIlx0KC1hIHZlIC1wIHNlw6dlbmVrbGVyaW5pIGt1bGxhbm1hZGFuKVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICJLdWxsYW7EsWxhbiBiZWxsZWs6ICVkay8lZGsgKCVkay8lZGspLCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgIkt1bGxhbsSxbGFuIGJlbGxlazogJWQsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAiemFtYW46ICU1LjJmLyU1LjJmLyU1LjJmXG4iCisKKyM6IGUyZnNjay91dGlsLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgImVsYXBzZWQgdGltZTogJTYuM2ZcbiIKK21zZ3N0ciAiZ2XDp2VuIHPDvHJlOiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgIi0gJWxkIGTDvMSfw7xtw7wgJXMgZGVuIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay91dGlsLmM6NTA4IGUyZnNjay91dGlsLmM6NTIxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAiLSAlbGQgZMO8xJ/DvG3DvCAlcyBlIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IGUyZnNjay91dGlsLmM6NzY1Cittc2dpZCAiIgorIlVORVhQRUNURUQgSU5DT05TSVNURU5DWTogdGhlIGZpbGVzeXN0ZW0gaXMgYmVpbmcgbW9kaWZpZWQgd2hpbGUgZnNjayBpcyAiCisicnVubmluZy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCisjLCBmdXp6eQorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgImJpdHRpICAgICAgICAgICAgICAgICAgICAgICAgICAgLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6ICVzIFstYiBibG9rX2JveXVdIFstaSBnaXJkaV9kb3N5YXPEsV0gWy1vIMOnxLFrdMSxX2Rvc3lhc8SxXVxuIgorIiAgICAgICAgICBbLXN2d25mXSBbLWMgYmxva19zYXnEsXPEsV0gWy1wIGdlw6dpxZ9fc2F5xLFzxLFdXG4iCisiICAgICAgICAgIFstdCBkZW5lbWVfxZ9hYmxvbnUgWy10IGRlbmVtZV/Fn2FibG9udVxuIgorIiBbLi4uXV1dXG4iCisiICAgICAgICAgIGF5Z8SxdCBbc29uX2Jsb2sgW2lsa19ibG9rXV1cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzOiAtbiB2ZSAtdyBzZcOnZW5la2xlcmkgYmlyYmlyaW5kZW4gYmHEn8SxbXPEsXpkxLFyLlxuIgorIlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjIyMworIywgYy1mb3JtYXQKK21zZ2lkICIlNi4yZiUlIGRvbmUsICVzIGVsYXBzZWQuICglZC8lZC8lZCBlcnJvcnMpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzI4Cittc2dpZCAiVGVzdGluZyB3aXRoIHJhbmRvbSBwYXR0ZXJuOiAiCittc2dzdHIgIlJhc2dlbGUgxZ9hYmxvbiBpbGUgc8SxbmFuxLF5b3I6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiU8SxbmFtYSDFn2FibG9udTogMHgiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgImVyacWfaW0gc8SxcmFzxLFuZGEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAiZG9fcmVhZCBpw6dpbiB0dWhhZiBkZcSfZXIgKCVsZClcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICJleHQyZnNfc3luY19kZXZpY2Ugc8SxcmFzxLFuZGEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2sgbGlzdGVzaSB5aW5lbGVtZXNpbmUgYmHFn2xhbsSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTExIG1pc2MvYmFkYmxvY2tzLmM6NjExIG1pc2MvYmFkYmxvY2tzLmM6NzY5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXJzIgorbXNnc3RyICItIHRhbXBvbiBiZWxsZWsgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAiJWx1IGlsZSAlbHUgYXJhc8SxbmRha2kgYmxva2xhciBkZW5ldGxlbml5b3JcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MjAKK21zZ2lkICJDaGVja2luZyBmb3IgYmFkIGJsb2NrcyBpbiByZWFkLW9ubHkgbW9kZVxuIgorbXNnc3RyICJIYXRhbMSxIGJsb2tsYXIgc2FsdC1va3VudXIga2lwdGUgZGVuZXRsZW5peW9yXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICJIYXRhbMSxIGJsb2tsYXIgacOnaW4gZGVuZXRsZW5peW9yIChzYWx0LW9rdSB0ZXN0aSk6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MzYgbWlzYy9iYWRibG9ja3MuYzo2NDMgbWlzYy9iYWRibG9ja3MuYzo2ODUKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODMyCittc2dpZCAiVG9vIG1hbnkgYmFkIGJsb2NrcywgYWJvcnRpbmcgdGVzdFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgIkhhdGFsxLEgYmxva2xhciBva3UteWF6IGtpcGluZGUgZGVuZXRsZW5peW9yXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICJCbG9rICVsdSBkYW4gJWx1IHlhIGthZGFyXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgIk9rdW51eW9yIHZlIGthcsWfxLFsYcWfdMSxcsSxbMSxeW9yOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICJIYXRhbMSxIGJsb2tsYXIgdmVyaSBib3ptYXlhbiBva3UteWF6IGtpcGluZGUgZGVuZXRsZW5peW9yXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIkhhdGFsxLEgYmxva2xhciBkZW5ldGxlbml5b3IgKHnEsWvEsWPEsSBvbG1heWFuIG9rdS15YXogc8SxbmFtYXPEsSlcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3OTQKK21zZ2lkICIiCisiXG4iCisiSW50ZXJydXB0IGNhdWdodCwgY2xlYW5pbmcgdXBcbiIKK21zZ3N0ciAiIgorIlxuIgorIktlc21lIHlha2FsYW5kxLEsIGthbGTEsXLEsWzEsXlvclxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgInZlcmkgeWF6bWEgZGVuZW1lc2kgc8SxcmFzxLFuZGEsIGJsb2sgJWx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjk5OCBtaXNjL3V0aWwuYzoxMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZDsgIgorbXNnc3RyICIlcyBiYcSfbGFuZMSxOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisiYmFkYmxvY2tzIG4nb2x1cnNhIG9sc3VuIMOnYWzEscWfdMSxcsSxbGFjYWsuIMSwbsWfYWxsYWggL2V0Yy9tdGFiIHlhbmzEscWfdMSxci5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDA1Cittc2dpZCAiaXQncyBub3Qgc2FmZSB0byBydW4gYmFkYmxvY2tzIVxuIgorbXNnc3RyICInYmFkYmxvY2tzJyDDp2FsxLHFn3TEsXJtYWsgZ8O8dmVubGkgZGXEn2lsIVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMgZ8O2csO8bsO8xZ9lIGfDtnJlIHNpc3RlbSB0YXJhZsSxbmRhbiBrdWxsYW7EsWzEsXlvcjsgIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTMKK21zZ2lkICJiYWRibG9ja3MgZm9yY2VkIGFueXdheS5cbiIKK21zZ3N0ciAiYmFkYmxvY2tzIG4nb2x1cnNhIG9sc3VuIMOnYWzEscWfdMSxcsSxbGFjYWsuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCAlcyAtICVzIgorbXNnc3RyICJibG9rIHV6dW5sdcSfdSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTEyNworIywgYy1mb3JtYXQKK21zZ2lkICJUb28gYmlnIG1heCBiYWQgYmxvY2tzIGNvdW50ICV1IC0gbWF4aW11bSBpcyAldSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZXN0X3BhdHRlcm4gLSAlcyIKK21zZ3N0ciAic8SxbmFtYSDFn2FibG9udSAtICVzIGnDp2luIGJlbGxlayBheXLEsWxhbWFkxLEiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJTYWx0IG9rdW51ciBraXB0ZSBlbiDDp29rIGJpciBzxLFuYW1hIMWfYWJsb251IGJlbGlydGlsZWJpbGlyIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJTYWx0IG9rdW51ciBraXB0ZSByYXNnZWxlIHPEsW5hbWEgxZ9hYmxvbnUga3VsbGFuxLFtxLFuYSBpemluIHZlcmlsbWV6IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiQXlnxLF0IGFsYW7EsSBzYXB0YW5hbWFkxLE7IEVsbGUgYmlyIGRlxJ9lciBnaXJtZWxpc2luaXpcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAiLSBheWfEsXQgYWxhbsSxIHNhcHRhbm1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKKyMsIGZ1enp5Cittc2dpZCAibGFzdCBibG9jayIKK21zZ3N0ciAiQmxva2xhciB5ZW5pZGVuIGtvbnVtbGFuZMSxcsSxbMSxeW9yIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKKyMsIGZ1enp5Cittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgIsSwbGsgdmVyaSBibG/En3UgPSAldVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICJiYcWfbGFuZ8Sxw6cgYmxvxJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjMxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICJiYcWfbGFuZ8Sxw6cgYmxvxJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAiaGF0YWzEsSBibG9rbGFyIGxpc3Rlc2kgYmVsbGVrdGUgb2x1xZ90dXJ1bHVya2VuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyOTYKK21zZ2lkICJpbnB1dCBmaWxlIC0gYmFkIGZvcm1hdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMDQgbWlzYy9iYWRibG9ja3MuYzoxMzEzCittc2dpZCAid2hpbGUgYWRkaW5nIHRvIGluLW1lbW9yeSBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiYmVsbGVrdGVraSBoYXRhbMSxIGJsb2tsYXIgbGlzdGVzaW5lIGVrbGVuaXJrZW4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMzOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgIkdlw6dpxZ8gdGFtYW1sYW5kxLEsICV1IGhhdGFsxLEgYmxvayBidWx1bmR1LlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYgdmVyc2lvbl0gZmlsZXMuLi5cbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbLVJWXSBbLSs9QWFjRGRpanNTdV0gWy12IHPDvHLDvG1dIGRvc3lhbGFyLi4uXG4iCisiXG4iCisiRG9zeWEgw7Z6ZWxsaWtsZXJpbmkgZGXEn2nFn3Rpcm1la3RlIGt1bGxhbsSxbMSxci5cbiIKKyJcbiIKKyJTZW1ib2xpayBraXAgc2XDp2VuZWtsZXJpOlxuIgorIlxuIgorIkJ1IGtpcHRlIMO2emVsbGlrbGVyICsgaWxlIG1ldmN1dCBzZcOnZW5la2xlcmUgZWtsZW5pciwgLSBpbGUga2FsZMSxcsSxbMSxcixcbiIKKyI9IGlsZSBzYWRlY2UgYmVsaXJ0aWxlbiDDtnplbGxpa2xlciBpw6dlcmlsaXIuXG4iCisiXG4iCisiICAgQTogZXJpxZ9pbSB6YW1hbsSxIGfDvG5jZWxsZW5tZXpcbiIKKyIgICBhOiBzYWRlY2UgZG9zeWFuxLFuIHNvbnVuYSBla2xlbWUgeWFwxLFsYWJpbGlyLiByb290IGRlxJ9pxZ90aXJlYmlsaXIuXG4iCisiICAgYzogc8Sxa8SxxZ90xLFyxLFsbcSxxZ87IGRvc3lhbsSxbiBva3VtYS15YXptYSBzxLFyYXPEsW5kYWtpIGHDp8SxbG1hc8SxLyIKKyJzxLFrxLHFn3TEsXLEsWxtYXPEsVxuIgorIiAgICAgIMOnZWtpcmRlxJ9pbiBkZW5ldGltaW5kZWRpci5cbiIKKyIgICBkOiBkw7Zrw7xtbGVubWV6OyBkdW1wIHV5Z3VsYW1hc8SxbmRhbiBldGtpbGVubWV6LlxuIgorIiAgIEQ6IGJpciBkaXppbmUgdXlndWxhbsSxciB2ZSBkaXppbmRla2kgZGXEn2nFn2lrbGlrbGVyIGXFn3phbWFubMSxIGnFn2xlbmlyLlxuIgorIiAgIGk6IGRlxJ9pxZ9tZXo7IGRvc3lhIGnDp2VyacSfaSBzaWxpbmVtZXosIHlhesSxbGFtYXosIGRvc3lheWEgYmHEnyAiCisib2x1xZ90dXJ1bGFtYXpcbiIKKyIgICAgICB2ZSBpc21pIGRlxJ9pxZ90aXJpbGVtZXouIFNhZGVjZSByb290IGJ1IMO2emVsbGnEn2kgZGXEn2nFn3RpcmViaWxpci5cbiIKKyIgICBqOiBnw7xubMO8a2xlbWU7IGRvc3lhIHNpc3RlbWkgZXh0MyBvbGFyYWsgYmHEn2xhbm3EscWfc2EgYnUgw7Z6ZWxsaWsgIgorImV0a2lzaXpkaXJcbiIKKyIgICBzOiBzaWxpbm1lIGfDvHZlbmxpxJ9pOyBidSDDtnplbGxpayB2ZXJpbGVuIGJpciBkb3N5YSBzaWxpbmRpxJ9pbmRlIHZlcmkgIgorImFsYW7EsVxuIgorIiAgICAgIHPEsWbEsXJsYXJsYSBkb2xkdXJ1bHVyXG4iCisiICAgUzogZcWfemFtYW5sxLEgZ8O8bmNlbGxlbWVsZXI7IGJ1IMO2emVsbGnEn2kgacOnZXJlbiBiaXIgZG9zeWF5YSB0w7xtXG4iCisiICAgICAgZGXEn2nFn2lrbGlrbGVyIGFuxLFuZGEgeWF6xLFsxLFyLCBzaXN0ZW1pbiAnc3luYycgc2XDp2VuZcSfaSBpbGUgIgorImJhxJ9sYW5tYXPEsW5hXG4iCisiICAgICAgZcWfZGXEn2VyIMO2emVsbGlrIHNhxJ9sYXJcbiIKKyIgICB1OiBzaWxpbmVtZW1lemxpazsgYnUgZG9zeWEgc2lsaW5kacSfaW5kZSBpw6dlcmnEn2kgc2FrbGFuxLFyLCBzaWxlY2VrXG4iCisiICAgICAga3VsbGFuxLFjxLF5YSBzaWxpbm1lIHPEsXJhc8SxbmRhIHNvcnVsbWFzxLFuxLEgc2HEn2xhci5cbiIKKyJcbiIKKyJTZcOnZW5la2xlcjpcbiIKKyIgICAtUiAgICAgICAgIGRpemlubGVyIHZlIGnDp2VyaWtsZXJpbmRlIGFyZMSxxZ/EsWsgacWfbGVtIHlhcMSxbMSxclxuIgorIiAgIC1WICAgICAgICAgc8O8csO8bSBiaWxnaXNpIGlsZSBpxZ9sZW0gaGFra8SxbmRhIGRhaGEgYXlyxLFudMSxbMSxIGJpbGdpIHZlcmlsaXJcbiIKKyIgICAtdiBzw7xyw7xtICAgZG9zeWFuxLFuIHPDvHLDvG0vw7xyZXRpbSBudW1hcmFzxLEgYmVsaXJ0aWxpclxuIgorIlxuIgorIsOHZXZpcmkgaGF0YWxhcsSxbsSxIDxnbnUtdHJAYmVsZ2VsZXIub3JnPiBhZHJlc2luZSBiaWxkaXJpbml6LlxuIgorIlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICJzw7xyw7xtIGhhdGFsxLEgLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgInPDvHLDvG0gaGF0YWzEsSAtICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjE5IG1pc2MvbHNhdHRyLmM6MTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzdGF0ICVzIgorbXNnc3RyICItIHN0YXQgJXMgeWFwxLFsbWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIi0gJXMgw7x6ZXJpbmRlIGJheXJha2xhciBva3VudXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICJCZWxpcmxlbmVuICVzIGJheXJha2xhcsSxOiAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIi0gJXMgw7x6ZXJpbmRlIGJheXJha2xhciBiZWxpcmxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIiVzIHPDvHLDvG3DvCAlbHUgb2xhcmFrIGJlbGlybGVuZGlcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB2ZXJzaW9uIG9uICVzIgorbXNnc3RyICItICVzIMO8emVyaW5kZSBzw7xyw7xtIGJlbGlybGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NoYXR0ci5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIiVzIHPDvHLDvG3DvCAlbHUgb2xhcmFrIGJlbGlybGVuZGlcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAiLSAlcyDDvHplcmluZGUgc8O8csO8bSBiZWxpcmxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jaGF0dHIuYzoyOTcKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBwYXRoIHZhcmlhYmxlIGluIGNoYXR0cl9kaXJfcHJvYyIKK21zZ3N0ciAiY2hhdHRyX2Rpcl9wcm9jIGnFn2xldmluZGUgZG9zeWEgeW9sdSBkZcSfacWfa2VuaW5lIHllciBheXLEsWxhbWFkxLEiCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0gaWxlICsgdmUgLSB1eXVtc3V6XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIictdicsID0sIC0gdmV5YSArIGt1bGxhbsSxbG1hbMSxXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgIi0gJWxkIGTDvMSfw7xtw7wgJXMgZGVuIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgIi0gL2xvc3QrZm91bmQgZGl6aW5pIGdlbmnFn2xldGlsaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAiJXMgYcOnxLFsxLFya2VuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjk1IG1pc2MvY3JlYXRlX2lub2RlLmM6MTIyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICItICVsZCBkw7zEn8O8bcO8ICVzIGUgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpc3RpbmcgYXR0cmlidXRlcyBvZiBcIiVzXCIiCittc2dzdHIgIi0gc3RhdCAlcyB5YXDEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgImTDvMSfw7xtIHRhcmFtYXPEsSBiYcWfbGF0xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAiLSB0YW1wb24gYmVsbGVrIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGF0dHJpYnV0ZSBcIiVzXCIgb2YgXCIlc1wiIgorbXNnc3RyICItICVzIMO8emVyaW5kZSBiYXlyYWtsYXIgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAiLSAlbGQgZMO8xJ/DvG3DvCAlcyBlIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjbG9zaW5nIGlub2RlICV1IgorbXNnc3RyICItIGTDvMSfw7xtIHRhcmFtYXPEsSB5YXDEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgIi0gZMO8xJ/DvG0gdGFtcG9uIGJlbGxlxJ9pIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgIi0gJWxkIGTDvMSfw7xtw7wgJXMgZGVuIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzeW1saW5rIFwiJXNcIiIKK21zZ3N0ciAiLSAlcyDDvHplcmluZGUgYmF5cmFrbGFyIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzYxIG1pc2MvY3JlYXRlX2lub2RlLmM6ODM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsb29raW5nIHVwIFwiJXNcIiIKK21zZ3N0ciAiLSAvbG9zdCtmb3VuZCBkaXppbmUgYmFrxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozODEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgIi0ga8O2ayBkaXppbiBvbHXFn3R1cnVsdXJrZW4gaGF0YSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgIiVzIGHDp8SxbMSxcmtlbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgd29ya2luZyBkaXJlY3RvcnkgdG8gXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgIiVzIGHDp8SxbMSxcmtlbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxzdGF0IFwiJXNcIiIKK21zZ3N0ciAiLSBzdGF0ICVzIHlhcMSxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAiLSAlbGQgZMO8xJ/DvG3DvCAlcyBkZW4gb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjAKKyMsIGZ1enp5Cittc2dpZCAibWFsbG9jIGZhaWxlZCIKK21zZ3N0ciAiQWF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzY4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVhZCBsaW5rIFwiJXNcIiIKK21zZ3N0ciAiLSAlcyB5ZW5pZGVuIGJveXV0bGFuZMSxcsSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAiLSAlbGQgZMO8xJ/DvG3DvCAlcyBlIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzk2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICItICVsZCBkw7zEn8O8bcO8ICVzIGUgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICIlcyBhw6fEsWzEsXJrZW4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODI2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGNoYW5naW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAiYmxvayBkaXppbmkgb2t1bnV5b3IiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICItICVzIMO8emVyaW5kZSBzw7xyw7xtIGJlbGlybGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAiLSAlcyDDvHplcmluZGUgYmF5cmFrbGFyIGJlbGlybGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAiLSBkw7zEn8O8bSB0YXJhbWFzxLEgYmHFn2xhdMSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbLWJmaGl4Vl0gWy1vYiBzw7xwZXJibG9rXSBbLW9CIGJsb2tib3l1XSBheWfEsXRcbiIKKyJcbiIKKyJEb3N5YSBzaXN0ZW1pIGJpbGdpbGVyaW5pIGTDtmvDvG1sZXIuXG4iCisiXG4iCisiU2XDp2VuZWtsZXI6XG4iCisiICAgLWIgICAgICAgICAgICAgIGhhdGFsxLEgb2xhcmFrIGltbGVubWnFnyBibG9rbGFyxLEgZ8O2c3RlcmlyXG4iCisiICAgLWYgICAgICAgICAgICAgIGRvc3lhIHNpc3RlbWkgZHVtcGUyZnMnaW4gYmlsbWVkacSfaSDDtnplbGxpa2xlciBpw6dlcnNlICIKKyJiaWxlXG4iCisiICAgICAgICAgICAgICAgICAgIGJpbGdpbGVyaW4gZMO2a8O8bWxlbm1lc2luaSBzYcSfbGFyXG4iCisiICAgLWggICAgICAgICAgICAgIGdydXAgdGFuxLFtbGF5xLFjxLFsYXLEsSBkZcSfaWwgc2FkZWNlIHPDvHBlcmJsb2sgYmlsZ2lsZXJpbmlcbiIKKyIgICAgICAgICAgICAgICAgICAgZ8O2c3RlcmlyXG4iCisiICAgLWkgICAgICAgICAgICAgIGJlbGlydGlsZW4gYXlnxLF0IGnDp2luIGUyaW1hZ2UgdGFyYWbEsW5kYW4gb2x1xZ90dXJ1bG11xZ8gIgorImRpc2tcbiIKKyIgICAgICAgICAgICAgICAgICAgZ8O2csO8bnTDvHPDvCBkb3N5YXPEsW7EsW4gdmVyaWxlcmluaSBnw7ZzdGVyaXJcbiIKKyIgICAteCAgICAgICAgICAgICAgYXlyxLFudMSxbMSxIG9sYXJhayBncnVwbGFyxLFuIGJpbGdpbGVyaSBnw7ZzdGVyaWxpclxuIgorIiAgIC1WICAgICAgICAgICAgICBzw7xyw7xtIGJpbGdpbGVyaSBnw7ZzdGVyaWxpciB2ZSDDp8Sxa2FyXG4iCisiICAgLW9iIHPDvHBlcmJsb2sgICBkb3N5YSBzaXN0ZW1pbmkgdGFuxLFtbGF5YW4gc8O8cGVyYmxvayBiZWxpcnRpbGlyXG4iCisiICAgLW9CIGJsb2tib3l1ICAgIGRvc3lhIHNpc3RlbWluaSB0YW7EsW1sYXlhbiBibG9rIHV6dW5sdcSfdSBiZWxpcnRpbGlyXG4iCisiXG4iCisiw4dldmlyaSBoYXRhbGFyxLFuxLEgPGdudS10ckBiZWxnZWxlci5vcmc+IGFkcmVzaW5lIGJpbGRpcmluaXouXG4iCisiXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNTkKKyMsIGZ1enp5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJiYmxvayIKKworIzogbWlzYy9kdW1wZTJmcy5jOjE2OAorbXNnaWQgImNsdXN0ZXJzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiR3JvdXAgJWx1OiAoQmxvY2tzICIKK21zZ3N0ciAiR3J1cCAlbHU6ICAoQmxva2xhcjogICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzMworIywgYy1mb3JtYXQKK21zZ2lkICIgICVzIHN1cGVyYmxvY2sgYXQgIgorbXNnc3RyICIgICAlcyBzw7xwZXJibG9rOiAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiUHJpbWFyeSIKK21zZ3N0ciAiICDEsGxrIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM0Cittc2dpZCAiQmFja3VwIgorbXNnc3RyICJZZWRlayIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzOAorbXNnaWQgIiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgIgorbXNnc3RyICIiCisiIFxuIgorIiAgR3J1cCB0YW7EsW1sYXnEsWPEsTogICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorbXNnaWQgIiIKKyJcbiIKKyIgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICBZZWRlayBHRFQgYmxva2xhcsSxICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0OQorbXNnaWQgIiBHcm91cCBkZXNjcmlwdG9yIGF0ICIKK21zZ3N0ciAiIgorIiBcbiIKKyIgIEdydXAgdGFuxLFtbGF5xLFjxLE6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiAgICBCbG9rIGJpdGXFn2xlbWk6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2CisjLCBmdXp6eQorbXNnaWQgIiBJbm9kZSBiaXRtYXAgYXQgIgorbXNnc3RyICIiCisiIFxuIgorIiAgIETDvMSfw7xtIGJpdGXFn2xlbWk6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgICAgIETDvMSfw7xtIHRhYmxvc3U6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAlZCBzZXJiZXN0IGJsb2ssICVkIHNlcmJlc3QgZMO8xJ/DvG0sICVkIGRpemluXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCAldSB1bnVzZWQgaW5vZGVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICAgU2VyYmVzdCBibG9rbGFyOiAgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgIFNlcmJlc3QgZMO8xJ/DvG1sZXI6ICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDAKK21zZ2lkICJ3aGlsZSBwcmludGluZyBiYWQgYmxvY2sgbGlzdCIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgbGlzdGVzaSBiYXPEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICJIYXRhbMSxIGJsb2tsYXI6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiLSBnw7xubMO8ayBkw7zEn8O8bcO8IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgb3BlbmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICItIGfDvG5sw7xrIGTDvMSfw7xtw7wgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgIi0gZ8O8bmzDvGsgZG9zeWFzxLEgc8O8cGVyYmxvxJ91IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG1hZ2ljIG51bWJlciBpbnZhbGlkIVxuIgorbXNnc3RyICJHw7xubMO8ayBzw7xwZXJibG/En3UgeW9rIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAiR8O8bmzDvGsga3VsbGFuxLFjxLFsYXLEsTogICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MjAKK21zZ2lkICJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIKK21zZ3N0ciAiR8O8bmzDvGsgYm95dXR1OiAgICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIkfDvG5sw7xrIGJsb8SfdSBib3l1OiAgICAgICAgJXVcbiIKKyJHw7xubMO8ayB1enVubHXEn3U6ICAgICAgICAgICV1XG4iCisiR8O8bmzDvGsgaWxrIGJsb8SfdTogICAgICAgICAldVxuIgorIkfDvG5sw7xrIHPEsXJhbGFtYXPEsTogICAgICAgIDB4JTA4eFxuIgorIkfDvG5sw7xrIGJhxZ9sYW5nxLFjxLE6ICAgICAgICAldVxuIgorIkfDvG5sw7xrIGt1bGxhbsSxY8SxIHNhecSxc8SxOiAgJWx1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzggbWlzYy9kdW1wZTJmcy5jOjQ4MAorbXNnaWQgIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgY3JjMzJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDQzIG1pc2MvZHVtcGUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgJXNcbiIKKyJKb3VybmFsIGNoZWNrc3VtOiAgICAgICAgIDB4JTA4eFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZXJybm86ICAgICAgICAgICAgJWRcbiIKK21zZ3N0ciAiR8O8bmzDvGsga3VsbGFuxLFjxLFsYXLEsTogICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NjYgbWlzYy90dW5lMmZzLmM6MjExCittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgIi0gZ8O8bmzDvGsgZG9zeWFzxLEgc8O8cGVyYmxvxJ91IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICJHw7xubMO8ayBkb3N5YXPEsSBzw7xwZXJibG/En3UgdGFuxLFtIG51bWFyYXPEsSBidWx1bmFtYWTEsSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjUwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBibG9jayBzaXplOiAgICAgICAldVxuIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIGZpcnN0IGJsb2NrOiAgICAgICV1XG4iCisiSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweCUwOHhcbiIKKyJKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgICV1XG4iCisiSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAldVxuIgorbXNnc3RyICIiCisiXG4iCisiR8O8bmzDvGsgYmxvxJ91IGJveXU6ICAgICAgICAldVxuIgorIkfDvG5sw7xrIHV6dW5sdcSfdTogICAgICAgICAgJXVcbiIKKyJHw7xubMO8ayBpbGsgYmxvxJ91OiAgICAgICAgICV1XG4iCisiR8O8bmzDvGsgc8SxcmFsYW1hc8SxOiAgICAgICAgMHglMDh4XG4iCisiR8O8bmzDvGsgYmHFn2xhbmfEsWPEsTogICAgICAgICV1XG4iCisiR8O8bmzDvGsga3VsbGFuxLFjxLEgc2F5xLFzxLE6ICAldVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdXNlcnM6ICAgICAgICAgICAgJXNcbiIKK21zZ3N0ciAiR8O8bmzDvGsga3VsbGFuxLFjxLFsYXLEsTogICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICJTZcOnZW5la2xlcmkgw6fDtnrDvG1sZW1layBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxIVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3VwZXJibG9jayBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIkdlw6dlcnNpeiBzw7xwZXIgYmxvayBwYXJhbWV0cmVzaTogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIkdlLmVycyx6IGJsb2sgYm95dXQgcGFyYW1ldHJlc2k6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKyJcbiIKKyJCb3p1ayBnZW5pxZ9sZXRpbG1pxZ8gc2XDp2VuZWsobGVyKSBiZWxpcnRpbGRpOiAlc1xuIgorIlxuIgorIlV6YXTEsWxtxLHFnyBzZcOnZW5la2xlciB2aXJnw7xsbGUgYXlyxLFsxLFyIHZlIGJpciBlxZ9pdHRpciAoJz0nKSBzaW1nZXNpIGlsZSAiCisiYXlhcmxhbmFiaWxlblxuIgorIlx0YmlyIGFyZ8O8bWFuIGFsYWJpbGlybGVyLlxuIgorIlxuIgorIkdlw6dlcmxpIGdlbmnFn2xldGlsbWnFnyBzZcOnZW5la2xlcjpcbiIKKyJcdHN1cGVyYmxvY2s9PHPDvHBlcmJsb2sgc2F5xLFzxLE+XG4iCisiXHRibG9ja3NpemU9PGJsb2sgYm95dXR1PlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx0JXMga3VsbGFuxLFsxLF5b3JcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY4NgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGZpbGVzeXN0ZW0hICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAiR2XDp2VybGkgc8O8cGVyYmxvayBidWx1bmFtYWTEsS5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAlczogYml0ZcWfbGVtbGVyIG9rdW51cmtlbiBoYXRhIG9sdcWfdHU6ICVzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbLXJzSV0gQVlHSVQgRE9TWUFcbiIKKyJcbiIKKyJBWUdJVCDDvHplcmluZGVraSBleHQyIGRvc3lhIHNpc3RlbWluaW4ga3JpdGlrIHZlcmlsZXJpbmkgRE9TWUF5YSBrYXlkZWRlci5cbiIKKyLDlnJuOiA0R0IgbMSxayBiaXIgc2lzdGVtIGnDp2luIHlha2xhxZ/EsWsgM01CIGzEsWsgYmlyIGfDtnLDvG50w7wgZG9zeWFzxLFcbiIKKyJvbHXFn3R1cnVsdXIuIEJ1IGRvc3lhLCBkb3N5YSBzaXN0ZW1pbmkga3VydGFybWFrIGnDp2luIHV6bWFubGFyY2FcbiIKKyJrdWxsYW7EsWxhYmlsaXIuIEJlbGxpIGFyYWzEsWtsYXJsYSBidSBkb3N5YW7EsW4gYmHFn2thIGJpciBkb3N5YSBzaXN0ZW1pbmVcbiIKKyJrYXlkZWRpbG1lc2kgw7ZuZXJpbGlyLiAtciBzZcOnZW5lxJ9pIHRlbWVsIGJpw6dpbWxpIGJpciBkb3N5YSDDvHJldGlyLCDDp29rICIKKyJiw7x5w7xrXG4iCisib2xhY2HEn8SxbmRhbiDDtm5lcmlsbWV6LiBET1NZQSB5ZXJpbmUgLSB2ZXJpbGlyc2UgZG9zeWEgc3RhbmRhcnQgw6fEsWt0xLF5YVxuIgorInlhesSxbMSxci5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbLXJzSV0gQVlHSVQgRE9TWUFcbiIKKyJcbiIKKyJBWUdJVCDDvHplcmluZGVraSBleHQyIGRvc3lhIHNpc3RlbWluaW4ga3JpdGlrIHZlcmlsZXJpbmkgRE9TWUF5YSBrYXlkZWRlci5cbiIKKyLDlnJuOiA0R0IgbMSxayBiaXIgc2lzdGVtIGnDp2luIHlha2xhxZ/EsWsgM01CIGzEsWsgYmlyIGfDtnLDvG50w7wgZG9zeWFzxLFcbiIKKyJvbHXFn3R1cnVsdXIuIEJ1IGRvc3lhLCBkb3N5YSBzaXN0ZW1pbmkga3VydGFybWFrIGnDp2luIHV6bWFubGFyY2FcbiIKKyJrdWxsYW7EsWxhYmlsaXIuIEJlbGxpIGFyYWzEsWtsYXJsYSBidSBkb3N5YW7EsW4gYmHFn2thIGJpciBkb3N5YSBzaXN0ZW1pbmVcbiIKKyJrYXlkZWRpbG1lc2kgw7ZuZXJpbGlyLiAtciBzZcOnZW5lxJ9pIHRlbWVsIGJpw6dpbWxpIGJpciBkb3N5YSDDvHJldGlyLCDDp29rICIKKyJiw7x5w7xrXG4iCisib2xhY2HEn8SxbmRhbiDDtm5lcmlsbWV6LiBET1NZQSB5ZXJpbmUgLSB2ZXJpbGlyc2UgZG9zeWEgc3RhbmRhcnQgw6fEsWt0xLF5YVxuIgorInlhesSxbMSxci5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgIi0gdGFtcG9uIGJlbGxlayBheXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIldyaXRpbmcgYmxvY2sgJWxsdVxuIgorbXNnc3RyICIlbHUgaWxlICVsdSBhcmFzxLFuZGFraSBibG9rbGFyIGRlbmV0bGVuaXlvclxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHdyaXRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAiJWx1IGJsb8SfdSB5YXrEsWzEsXJrZW4gaGF0YTogJXMuICAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTMKK21zZ2lkICJFcnJvcjogaGVhZGVyIHNpemUgaXMgYmlnZ2VyIHRoYW4gd3J0X3NpemVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyMTgKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBoZWFkZXIgYnVmZmVyXG4iCittc2dzdHIgIkJhxZ9sxLFrIGnDp2luIHRhbXBvbiBiZWxsZWsgYXlyxLFsYW1hZMSxXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAiLSBzw7xwZXJibG/En2EgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiLSBkw7zEn8O8bSB0YWJsb3N1bmEgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgIi0gYmxvayBiaXRlxZ9sZW1pIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI3MQorbXNnaWQgIndoaWxlIHdyaXRpbmcgaW5vZGUgYml0bWFwIgorbXNnc3RyICItIGTDvMSfw7xtIGJpdGXFn2xlbWkgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb3JydXB0IGRpcmVjdG9yeSBibG9jayAlbGx1OiBiYWQgcmVjX2xlbiAoJWQpXG4iCittc2dzdHIgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkiCittc2dzdHIgIiV1IGTDvMSfw7xtLCAldSBibG9rXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjY1MgorIywgYy1mb3JtYXQKK21zZ2lkICIgJXMgcmVtYWluaW5nIGF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiZXJyb3IgcmVhZGluZyBibG9jayAlbGx1IgorbXNnc3RyICJibG9rICVsdSBva3VudXJrZW4gaGF0YSBvbHXFn3R1ICglcykuICAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAiLSB0YW1wb24gYmVsbGVrIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgwMworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwyIGNhY2hlIgorbXNnc3RyICItIHRhbXBvbiBiZWxsZWsgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTE0OAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgImV4dDJmc19ibG9ja19pdGVyYXRlIGnFn2xldmkgw6dhxJ9yxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgZXh0Ml9xY293Ml9pbWFnZSIKK21zZ3N0ciAiZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgacWfbGV2aSDDp2HEn3LEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjE0IG1pc2MvZTJpbWFnZS5jOjEyMzIKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcjogbXVsdGlwbGUgc2VxdWVudGlhbCByZWZjb3VudCBibG9ja3MgY3JlYXRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICItIGJsb2sgYml0ZcWfbGVtaSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjgxCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgc2NyYW1ibGUgYmxvY2sgYml0bWFwIgorbXNnc3RyICItIGJsb2sgYml0ZcWfbGVtaSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjg4CisjLCBmdXp6eQorbXNnaWQgIlNjYW5uaW5nIGlub2Rlcy4uLlxuIgorbXNnc3RyICJEb3N5YSBpbmRla3NpIHRhYmxvc3UgdGFyYW7EsXlvciIKKworIzogbWlzYy9lMmltYWdlLmM6MTMwMAorIywgZnV6enkKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIkJsb2sgdGFtcG9udSBheXLEsWxhbWFkxLEgKGJveXU9JWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgaXRlcmF0aW5nIG92ZXIgaW5vZGUgJXUiCittc2dzdHIgInNvbnJha2kgZMO8xJ/DvG1lIGdlw6dpbGlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMmltYWdlLmM6MTM4NQorbXNnaWQgIlJhdyBhbmQgcWNvdzIgaW1hZ2VzIGNhbm5vdCBiZSBpbnN0YWxsZWQiCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworIywgZnV6enkKK21zZ2lkICJlcnJvciByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgIi0gYml0ZcWfbGVtbGVyIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE0MTkKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgb3BlbmluZyBkZXZpY2UgZmlsZSIKK21zZ3N0ciAiZMO8xJ/DvG0gdGFyYW1hc8SxIGJhxZ9sYXTEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgIi0gZMO8xJ/DvG0gdGFibG9zdW5hIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MjcKK21zZ2lkICItYSBvcHRpb24gY2FuIG9ubHkgYmUgdXNlZCB3aXRoIHJhdyBvciBRQ09XMiBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworIywgZnV6enkKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICIgKHNpc3RlbSAlbGQga2VyZSBiYcSfbGFuZMSxxJ/EsW5kYSBkZW5ldGxlKSIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYyMAorbXNnaWQgIkNhbiBub3Qgc3RhdCBvdXRwdXRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW1hZ2UgKCVzKSBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjM2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjb252ZXJ0IHFjb3cyIGltYWdlICglcykgaW50byByYXcgaW1hZ2UgKCVzKSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1CisjLCBmdXp6eQorbXNnaWQgIlRoZSAtYyBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAiIC10IHNlw6dlbmXEn2kgZTJmc2NrJ27EsW4gYnUgc8O8csO8bcO8bmRlIGRlc3Rla2xlbm1peW9yLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjUwCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIiAtdCBzZcOnZW5lxJ9pIGUyZnNjayduxLFuIGJ1IHPDvHLDvG3DvG5kZSBkZXN0ZWtsZW5taXlvci5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGNoZWNrX2J1ZiIKK21zZ3N0ciAiLSB0YW1wb24gYmVsbGVrIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICIgLXQgc2XDp2VuZcSfaSBlMmZzY2snbsSxbiBidSBzw7xyw7xtw7xuZGUgZGVzdGVrbGVubWl5b3IuXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiS3VsbGFuxLFtxLE6ICVzIGRpc2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IG9wZW4gJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogJXMgYcOnxLFsYW3EsXlvclxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2MworIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgc2VlayB0byBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IHPDvHBlcmJsb2thIGVyacWfaWxlbWl5b3JcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWw6IHPDvHBlcmJsb2sgb2t1bnVya2VuIGhhdGEgb2x1xZ90dVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6IGJpciBleHQyIGRvc3lhIHNpc3RlbWkgZGXEn2lsXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjk3IG1pc2MvdHVuZTJmcy5jOjI5NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogbGFiZWwgdG9vIGxvbmcsIHRydW5jYXRpbmcuXG4iCittc2dzdHIgIlV5YXLEsTogZXRpa2V0IMOnb2sgdXp1biwga8SxcnDEsWzEsXlvci5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDogc8O8cGVyYmxvxJ9hIHlpbmUgZXJpxZ9pbGVtZWRpXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwNQorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciB3cml0aW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogc8O8cGVyYmxvxJ9hIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHVcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTE3IG1pc2MvdHVuZTJmcy5jOjE1OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6IGUybGFiZWwgZGV2aWNlIFtuZXdsYWJlbF1cbiIKK21zZ3N0ciAiIgorIiBcbiIKKyJLdWxsYW7EsW3EsTogZTJsYWJlbCBBWUdJVCBbZXRpa2V0XVxuIgorIkFZR0lUIGLDtmzDvG0gaXNtaW5pIGF0YW1hay9va3VtYWsgacOnaW4ga3VsbGFuxLFsxLFyLlxuIgorIlxuIgorCisjOiBtaXNjL2UydW5kby5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1mXSBbLWhdIFstbl0gWy12XSA8dHJhbnNhY3Rpb24gZmlsZT4gPGZpbGVzeXN0ZW0+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDMKK21zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gc3VwZXJibG9jayBkb2Vzbid0IG1hdGNoIHRoZSB1bmRvIGZpbGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ4Cittc2dpZCAiTGFzdCBtb3VudCB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUwCittc2dpZCAiTGFzdCB3cml0ZSB0aW1lIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE2NgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZpbGVzeXN0ZW0gc3VwZXJibG9jay4iCittc2dzdHIgIi0gZ8O8bmzDvGsgZG9zeWFzxLEgc8O8cGVyYmxvxJ91IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGZldGNoaW5nIHN1cGVyYmxvY2siCittc2dzdHIgIi0gc8O8cGVyYmxvxJ9hIHlhesSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTk1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICJTw7xwZXJibG9rbGFyxLFuIGJ1bHVuZHXEn3UgYmxva2xhcjoiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbGxlZ2FsIG9mZnNldCAtICVzIgorbXNnc3RyICJkw7zEn8O8bSB1enVubHXEn3UgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzY3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgImTDvMSfw7xtIHRhcmFtYXPEsSBiYcWfbGF0xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9lMnVuZG8uYzozNzQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgIi0ga8O2ayBkw7zEn8O8bcO8IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IGF5Z8SxdCBzYXnEsXPEsSDDp29rIGZhemxhXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogSGVhZGVyIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gYnVsdW5kdcSfdSBibG9rbGFyOiIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gc21hbGwuXG4iCittc2dzdHIgImJsb2sgdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorIkV4dDMgZ8O8bmzDvMSfw7xuw7xuIHPDvHBlciBibG/En3UgYmlsaW5tZXllbiB1eXVtc3V6IMO2emVsbGlrbGkgYmlyIGJheXJhayAiCisiacOnZXJpeW9yLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAiLSAlcydpbiBiYcSfbMSxIG9sdXAgb2xtYWTEscSfxLEgc2FwdGFubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUuIgorCisjOiBtaXNjL2UydW5kby5jOjQzMworbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGAlcyciCittc2dzdHIgIiVzIGHDp8SxbMSxcmtlbiIKKworIzogbWlzYy9lMnVuZG8uYzo0NjAKK21zZ2lkICJzcGVjaWZpZWQgb2Zmc2V0IGlzIHRvbyBsYXJnZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjUwMQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgIi0gYml0ZcWfbGVtbGVyIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICJCbG9rICVsdSBkYW4gJWx1IHlhIGthZGFyXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAiJWx1IGlsZSAlbHUgYXJhc8SxbmRha2kgYmxva2xhciBkZW5ldGxlbml5b3JcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2hlY2tzdW0gZXJyb3IgaW4gZmlsZXN5c3RlbSBibG9jayAlbGx1ICh1bmRvIGJsayAlbGx1KVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICIlbHUgYmxvxJ91IHlhesSxbMSxcmtlbiBoYXRhOiAlcy4gICIKKworIzogbWlzYy9lMnVuZG8uYzo2MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHRpb247IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE3CisjLCBjLWZvcm1hdAorbXNnaWQgIklPIGVycm9yIGR1cmluZyByZXBsYXk7IHJ1biBlMmZzY2sgTk9XIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkluY29tcGxldGUgdW5kbyByZWNvcmQ7IHJ1biBlMmZzY2suXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICBmaW5kc3VwZXIgZGV2aWNlIFtza2lwYnl0ZXMgW3N0YXJ0a2JdXVxuIgorbXNnc3RyICJLdWxsYW7EsW3EsTogIGZpbmRzdXBlciBheWfEsXQgW2F0bGFuYWNha19iYXl0bGFyIFtiYcWfbGFuZ8Sxw6dfa2JdXVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiYXRsYW5hY2FrX2JheXRsYXIgYmlyIHNhecSxIG9sbWFsxLEsICVzIGRlxJ9pbFxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICJhdGxhbmFjYWtfYmF5dGxhciBzZWt0w7ZyIGJveXVudW4ga2F0bGFyxLEgb2xtYWzEsVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgImJhxZ9sYW5nxLHDp19rYiBiaXIgc2F5xLEgb2xtYWzEsSwgJXMgZGXEn2lsXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAiYmHFn2xhbmfEscOnX2tiIHBvcml0aWYgb2xtYWzEsSwgJUxkIGRlxJ9pbFxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAic3RhcnRpbmcgYXQgJWxsdSwgd2l0aCAldSBieXRlIGluY3JlbWVudHNcbiIKK21zZ3N0ciAiJUxkIGRlIGJhxZ9sYXnEsXAgJWQgYmF5dCBhcnR0xLFyxLFtbGFcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoyNjQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTFMdTogZmluaXNoZWQgd2l0aCBlcnJubyAlZFxuIgorbXNnc3RyICIiCisiXG4iCisiJTE0TGQ6ICVkIGhhdGFzxLEgaWxlIGJpdHRpXG4iCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJVWUFSSTogJXMgYcOnxLFsYW1hZMSxOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIlVZQVJJOiAlMiRzIG5pbiAlMSRkLiBzYXTEsXLEsW5kYSBiacOnZW0gaGF0YXPEsVxuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIldBUk5JTkc6IFlvdXIgL2V0Yy9mc3RhYiBkb2VzIG5vdCBjb250YWluIHRoZSBmc2NrIHBhc3Nub1xuIgorIlx0ZmllbGQuICBJIHdpbGwga2x1ZGdlIGFyb3VuZCB0aGluZ3MgZm9yIHlvdSwgYnV0IHlvdVxuIgorIlx0c2hvdWxkIGZpeCB5b3VyIC9ldGMvZnN0YWIgZmlsZSBhcyBzb29uIGFzIHlvdSBjYW4uXG4iCisiXG4iCittc2dzdHIgIiIKKyIgKioqRMSwS0tBVDogL2V0Yy9mc3RhYiBkb3N5YW7EsXpkYSBmc2NrIGdlw6dpxZ8gc2F5xLFzxLEgKHBhc3NubylcbiIKKyIgICAgICAgICAgICBhbGFuxLEgIGJ1bHVubXV5b3IuIEJ1IHNlZmVybGlrIGnFn2xlbSB5YXDEsWxhY2FrLFxuIgorIiAgICAgICAgICAgIGFuY2FrIGVuIGvEsXNhIHphbWFuZGEgL2V0Yy9mc3RhYiBkb3N5YW7EsXrEsVxuIgorIiAgICAgICAgICAgIGTDvHplbHRtZWxpc2luaXouXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjQ3OAorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiAlczogbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6ICVzOiB5b2tcbiIKKworIzogbWlzYy9mc2NrLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3YWl0OiBObyBtb3JlIGNoaWxkIHByb2Nlc3M/IT9cbiIKK21zZ3N0ciAiJXM6IGJla2xpeW9yOiBCYcWfa2EgYXN0IHPDvHJlw6cgeW9rPyE/XG4iCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICJVeWFyxLEuLi4gJXMgJXMgYXlnxLF0xLEgacOnaW4gJWQgc2lueWFsaSBpbGUgw6fEsWt0xLEuXG4iCisKKyM6IG1pc2MvZnNjay5jOjYyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIgorbXNnc3RyICIlcyAlczogZHVydW0gJXgsIGFzbGEgb2xtYW1hbMSxeWTEsS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICIlcyBpbGUgYml0dGkgKMOnxLFrxLHFnyBkdXJ1bXU6ICVkKVxuIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIlczogSGF0YSAlZDogZnNjay4lcyAlcyBpw6dpbiDDp2FsxLF0xLFyxLFsxLFya2VuIG9sdcWfdHUuXG4iCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisiLXQgaWxlIGlzdGVyIHTDvG0gZG9zeWEgc2lzdGVtaSB0w7xybGVyaSBiZWxpcnRpbHNpbiBpc3RlciBiaXIgZG9zeWEgc2lzdGVtaVxuIgorInTDvHLDvCBiZWxpcnRpbG1lc2luLCB5YSAnbm8nIHlhIGRhICchJyDDtm5la2kga3VsbGFuxLFsbWFsxLFkxLFyLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaSB0w7xybGVyaSBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxXG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczogL2V0Yy9mc3RhYiBpw6dlcmlzaW5kZWtpIGJvenVrIHNhdMSxciBhdGxhbsSxeW9yOiBzxLFmxLFyIG9sbWF5YW4gZnNjayBnZcOnacWfICIKKyJzYXnEsXPEsSBpbGUgYmHEn2xhbWEgYXRhbWFzxLFcbiIKKworIzogbWlzYy9mc2NrLmM6OTExCisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6IGNhbm5vdCBjaGVjayAlczogZnNjay4lcyBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXMgZGVuZXRsZW5lbWl5b3I6IGZzY2suJXMgeW9rXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIlTDvG0gZG9zeWEgc2lzdGVtbGVyaSBkZW5ldGxlbml5b3IuXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiLS13YWl0aW5nLS0gKHBhc3MgJWQpXG4iCittc2dzdHIgIi0tYmVrbGVtZWRlLS0gKCVkLiBnZcOnacWfKVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDc4Cittc2dpZCAiIgorIlVzYWdlOiBmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQgZnN0eXBlXSBbZnMtb3B0aW9uc10gW2ZpbGVzeXMgLi4uXVxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSAiCisiW2ZpbGVzeXMgLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiBheWfEsXQgc2F5xLFzxLEgw6dvayBmYXpsYVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczogYXJnw7xtYW4gc2F5xLFzxLEgZmF6bGFcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc0MAorbXNnaWQgIk1vdW50aW5nIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBBbGxvd2luZyB1c2VycyB0byBhbGxvY2F0ZSBhbGwgYmxvY2tzLiBUaGlzIGlzIGRhbmdlcm91cyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc2IG1pc2MvZnVzZTJmcy5jOjM3ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzcgbWlzYy9mdXNlMmZzLmM6Mzc5MSBtaXNjL3R1bmUyZnMuYzozMjA3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZnkgJXMuXG4iCittc2dzdHIgIiIKKyJMw7x0ZmVuIMO2bmNlICdlMmZzY2sgLWYgJXMnIGtvbXV0dW51IMOnYWzEscWfdMSxcsSxbi5cbiIKKyJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiclcycgZG9zeWEgc2lzdGVtaSDDtnplbGxpxJ9pbmkgdGVtaXpsZW1lIGRlc3Rla2xlbm1peW9yLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODMwCittc2dpZCAiV2FybmluZzogQ2hlY2sgdGltZSByZWFjaGVkOyBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzOAorbXNnaWQgIkVycm9ycyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6ICVzIFstUlZhZHZdIFtkb3N5YWxhci4uLl1cbiIKKyJcbiIKKyJEb3N5YWxhcsSxbiDDtnplbGxpa2xlcmluaSBsaXN0ZWxlci5cbiIKKyJcbiIKKyJTZcOnZW5la2xlcjpcbiIKKyIgICAtYSAgICAnLicgaWxlIGJhxZ9sYXlhbmxhciBkYWhpbCBkaXppbmxlcmluIGnDp2luZGVraSB0w7xtIGRvc3lhbGFyxLEgIgorImxpc3RlbGVyXG4iCisiICAgLWQgICAgZG9zeWFsYXIgZ2liaSBkaXppbmxlcmkgZGUgbGlzdGVsZXJcbiIKKyIgICAtUiAgICBkaXppbmxlciB2ZSBpw6dlcmlrbGVyaSBhcmTEscWfxLFrIG9sYXJhayBsaXN0ZWxlbmlyXG4iCisiICAgLVYgICAgc8O8csO8bSBiaWxnaWxlcmkgZ8O2c3RlcmlsaXJcbiIKKyIgICAtdiAgICBkb3N5YWxhcsSxbiBzw7xyw7xtL8O8cmV0aW0gbnVtYXJhbGFyxLFuxLEgbGlzdGVsZXJcbiIKKyJcbiIKKyLDh2V2aXJpIGhhdGFsYXLEsW7EsSA8Z251LXRyQGJlbGdlbGVyLm9yZz4gYWRyZXNpbmUgYmlsZGlyaW5pei5cbiIKKyJcbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICItICVzIMO8emVyaW5kZSBiYXlyYWtsYXIgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICItICVzIMO8emVyaW5kZSBzw7xyw7xtIG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbHNhdHRyLmM6MTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAiLSAlcyDDvHplcmluZGUgc8O8csO8bSBva3VudXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6ICVzIFtzZcOnZW5la2xlcl0gYXlnxLF0IFtibG9rLXNhecSxc8SxXVxuIgorIlxuIgorIkdlbmVsbGlrbGUgYmlyIGRpc2sgYsO2bMO8bcO8IMO8emVyaW5kZSBiaXIgZXh0MiBkb3N5YSBzaXN0ZW1pIG9sdcWfdHVydXIuXG4iCisiZXh0MyBkZSBkZXN0ZWtsZW5tacWfdGlyLlxuIgorIlxuIgorIlNlw6dlbmVrbGVyOlxuIgorIiAgIC1iIDEwMjR8MjA0OHw0MDk2ICAgICAgICAgZG9zeWEgc2lzdGVtaW5pbiBibG9rIHV6dW5sdcSfdSBiZWxpcnRpbGlyXG4iCisiICAgLWMgICAgICAgICAgICAgICAgICAgICAgICBzYWx0LW9rdW51ciBraXB0ZSBoYXRhbMSxIGJsb2tsYXIgYXJhbsSxclxuIgorIiAgIC1mIGFkxLFtLWJveXUgICAgICAgICAgICAgIGJ1IHPDvHLDvG1kZSBhZMSxbSBib3l1IGJsb2sgYm95dW5hIGXFn2l0dGlyXG4iCisiICAgLWcgaGVyLWdydXB0YWtpLWJsb2stc2F5xLFzxLFcbiIKKyIgICAtaSBkw7zEn8O8bS11enVubHXEn3UgICAgICAgICBib8WfIGJpciBkaXppbmluIGRpc2sgw7x6ZXJpbmRlIGthcGxheWFiaWxlY2XEn2lcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuIGvDvMOnw7xrIGFsYW4sIGJheXQgY2luc2luZGVuIHZlcmlsaXIuXG4iCisiICAgLWogICAgICAgICAgICAgICAgICAgICAgICBleHQzIGRvc3lhIHNpc3RlbWkgacOnaW4gZ8O8bmzDvGsgZG9zeWFzxLEgIgorIm9sdcWfdHVydXJcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1KIGlsZSBnw7xubMO8ayBkb3N5YXPEsW7EsW4gw7Z6ZWxsaWtsZXJpICIKKyJ2ZXJpbG1lenNlXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3N5YSDDtm50YW7EsW1sxLEgw7Z6ZWxsaWtscmVsZSBvbHXFn3R1cnVsdXIuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBExLBLS0FUOiBMaW51eCDDp2VraXJkZcSfaW5kZSBleHQzIGRlc3RlxJ9pIHlva3NhXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXN0ZW0gZXh0MiBvbGFyYWsga3VsbGFuxLFsYWJpbGlyXG4iCisiICAgLUogZ8O8bmzDvGstc2XDp2VuZWtsZXJpICAgICBnw7xubMO8ayBzZcOnZW5la2xlcmkgYcWfYcSfxLFkYSB2ZXJpbG1pxZ90aXJcbiIKKyIgICAtbCBET1NZQSAgICAgICAgICAgICAgICAgIGhhdGFsxLEgYmxva2xhciBET1NZQWRhbiBva3VudXJcbiIKKyIgICAtTCBldGlrZXQgICAgICAgICAgICAgICAgIGRvc3lhIHNpc3RlbWluZSBiaXIgZXRpa2V0IGF0YXJcbiIKKyIgICAtbSB5ZWRlay1ibG9rLXnDvHpkZXNpICAgICByb290IGt1bGxhbsSxY8SxIGnDp2luIGF5csSxbGFuIHllZGVrIGJsb2tsYXLEsW5cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHnDvHpkZXNpLiDDlm50YW7EsW1sxLEgZGXEn2VyaSAlJTUgdGlyXG4iCisiICAgLU0gc29uLWJhxJ9sYW5hbi1kaXppbiAgICAgZG9zeWEgc2lzdGVtaW5lIHNvbiBiYcSfbGFuYW4gZGl6aW4gYmVsaXJ0aWxpclxuIgorIiAgIC1OIGTDvMSfw7xtLXNhecSxc8SxICAgICAgICAgICBzaXN0ZW1kZWtpIHRvcGxhbSBkw7zEn8O8bSBzYXnEsXPEsSBiZWxpcnRpbGlyXG4iCisiICAgLW8gacWfbGV0aW0tc2lzdGVtaSAgICAgICAgZG9zeWEgc2lzdGVtaW5pbiAnY3JlYXRvciBvcycgYWxhbsSxbmEgIgorInlhesSxbGFjYWtcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlxJ9lci4gTm9ybWFsZGUgTGludXgndHVyLlxuIgorIiAgIC1PIMO2emVsbGlrWywuLi5dICAgICAgICAgIGJlbGlydGlsZW4gw7Z6ZWxsaWt0ZSBkb3N5YSBzaXN0ZW1pIG9sdcWfdHVydXIuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICDDlnplbGxpa2xlciBhxZ9hxJ/EsWRhIHZlcmlsbWnFn3Rpci5cbiIKKyIgICAtcSAgICAgICAgICAgICAgICAgICAgICAgIGnFn2xlbSBzxLFyYXPEsW5kYSBiaWxnaSB2ZXJpbG1lelxuIgorIiAgIC1yIGRvc3lhLXNpc3RlbWktc8O8csO8bcO8ICAgMS4yIMOnZWtpcmRla2xlciBkxLHFn8SxbmRhIMO2bnRhbsSxbWzEsSBkZcSfZXJpIDEgZGlyXG4iCisiICAgLVIgcmFpZF9zZcOnZW5la2xlcmkgICAgICAgYnUgc2XDp2VuZWtsZXIgacOnaW4gbWFuIHNheWZhc8SxbmEgYmFrxLFuxLF6XG4iCisiICAgLVMgICAgICAgICAgICAgICAgICAgICAgICBrdXJ0YXJtYSBhbWFjxLF5bGEgc2FkZWNlIHPDvHBlciBibG9rIHZlIGdydXBcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhbsSxbWxhecSxY8SxbGFyIHllbmlkZW4geWF6xLFsxLFyXG4iCisiICAgLXYgICAgICAgICAgICAgICAgICAgICAgICBpxZ9sZW0gc8SxcmFzxLFuZGEgYXlyxLFudMSxbMSxIGJpbGdpIHZlcmlsaXJcbiIKKyIgICAtViAgICAgICAgICAgICAgICAgICAgICAgIHPDvHLDvG0gYmlsZ2lsZXJpIGfDtnN0ZXJpbGlyIHZlIMOnxLFrYXJcbiIKKyJHw7xubMO8a2xlbWUgc2XDp2VuZWtsZXJpOlxuIgorIiAgICAgc2l6ZT1nw7xubMO8ay11enVubHXEn3UgICAgIEfDvG5sw7xrIGRvc3lhc8SxbsSxbiB1enVubHXEn3UgTUIgb2xhcmFrICIKKyJiZWxpcnRpbGlyXG4iCisiICAgICBkZXZpY2U9ZMSxxZ8tZ8O8bmzDvGstYXlnxLF0xLEgQmHFn2thIGJpciBheWfEsXQgw7x6ZXJpbmRla2kgZ8O8bmzDvGsgZG9zeWFzxLFuxLFuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3VsbGFuxLFsbWFzxLEgc2HEn2xhbsSxci5cbiIKKyJcbiIKKyLDlnplbGxpa2xlcjpcbiIKKyIgICAgIHNwYXJzZV9zdXBlciAgICBZZWRlayBzw7xwZXJibG9rbGFyxLFuIHNhecSxc8SxbsSxIHPEsW7EsXJsYW1ha3RhIGt1bGxhbsSxbMSxci5cbiIKKyIgICAgIGZpbGV0eXBlICAgICAgICBEaXppbiBrYXnEsXRsYXLEsW5kYSBkb3N5YSB0w7xyw7wgYmlsZ2lzaSBzYWtsYW7EsXIuXG4iCisiICAgICBoYXNfam91cm5hbCAgICAgLWogc2XDp2VuZcSfaSBpbGUgYXluxLEuIEJpciBleHQzIGfDvG5sw7xrIGRvc3lhc8SxICIKKyJvbHXFn3R1cnVyLlxuIgorIlxuIgorIsOHZXZpcmkgaGF0YWxhcsSxbsSxIDxnbnUtdHJAYmVsZ2VsZXIub3JnPiBhZHJlc2luZSBiaWxkaXJpbml6LlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIsOHYWzEscWfYW4ga29tdXQ6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBydW4gJyVzJyIKK21zZ3N0ciAiLSAnJXMnIMOnYWzEscWfdMSxcsSxbMSxcmtlbiBvbGR1IgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgbGlzdGVzaSBpxZ9sZW5pcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICJCaXJpbmNpbCBzw7xwZXJibG9rL2dydXAgdGFuxLFtxLEgYWxhbsSxbmRha2kgYmxvayAlZCBoYXRhbMSxXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrcyAldSB0aHJvdWdoICV1IG11c3QgYmUgZ29vZCBpbiBvcmRlciB0byBidWlsZCBhIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJCaXIgZG9zeWEgc2lzdGVtaSBvbHXFn3R1cnVsdXJrZW4gJXUgZGVuICV1IHllIGthZGFyIG9sYW5cbiIKKyJibG9rbGFyIGhhdGFzxLF6IG9sbWFrIHpvcnVuZGFkxLFyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5OAorbXNnaWQgIkFib3J0aW5nLi4uLlxuIgorbXNnc3RyICLDh8Sxa8SxbMSxeW9yLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlV5YXLEsTogQmxvayAldSBkZWtpIHllZGVrIHPDvHBlcmJsb2svZ3J1cCB0YW7EsW1sYXLEsVxuIgorIlx0aGF0YWzEsSBibG9rbGFyIGnDp2VyaXlvci5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIga3VsbGFuxLFsbcSxxZ8gb2xhcmFrIGltbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgIkTDvMSfw7xtIHRhYmxvbGFyxLEgeWF6xLFsxLF5b3I6ICIKKworIzogbWlzYy9ta2UyZnMuYzo0MzAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3Qgd3JpdGUgJWQgYmxvY2tzIGluIGlub2RlIHRhYmxlIHN0YXJ0aW5nIGF0ICVsbHU6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlMiR1IGRlIGJhxZ9sYXlhbiBkw7zEn8O8bSB0YWJsb3N1bmRha2kgJTEkZCBibG9rIHlhesSxbGFtYWTEsTogJTMkc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ0NCBtaXNjL21rZTJmcy5jOjI2NTQgbWlzYy9ta2UyZnMuYzozMDMwCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiYml0dGkgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAiLSBrw7ZrIGRpemluIG9sdcWfdHVydWx1cmtlbiBoYXRhIgorCisjOiBtaXNjL21rZTJmcy5jOjQ2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgcm9vdCBpbm9kZSIKK21zZ3N0ciAiLSBrw7ZrIGTDvMSfw7xtw7wgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzo0NzgKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHJvb3QgaW5vZGUgb3duZXJzaGlwIgorbXNnc3RyICItIGvDtmsgZMO8xJ/DvG3DvG7DvG4gc2FoaWJpIGJlbGlybGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICItIC9sb3N0K2ZvdW5kIGRpemluaSBvbHXFn3R1cnVsdXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgIi0gL2xvc3QrZm91bmQgZGl6aW5lIGJha8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICItIC9sb3N0K2ZvdW5kIGRpemluaSBnZW5pxZ9sZXRpbGlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2sgZMO8xJ/DvG3DvCBiZWxpcmxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiJWQtJWQgYXJhc8SxbmRha2kgc2VrdMO2cmxlciBzaWxpbmlya2VuIGJlbGxlayB5ZXRtZWRpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrIDA6ICVzXG4iCittc2dzdHIgIlV5YXLEsTogYmxvayAwIG9rdW5hbWFkxLE6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCBlcmFzZSBzZWN0b3IgJWQ6ICVzXG4iCittc2dzdHIgIlV5YXLEsTogJWQuIHNla3TDtnIgc2lsaW5lbWVkaTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICItIGfDvG1sw7xrIHN1cGVyYmxvxJ91IGlsa2xlbmRpcmlsaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAiR8O8bmzDvGsgYXlnxLF0xLEgdGVtaXpsZW5peW9yOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGpvdXJuYWwgZGV2aWNlIChibG9jayAlbGx1LCBjb3VudCAlZCkiCittc2dzdHIgIi0gZ8O8bmzDvGsgYXlnxLF0xLEgdGVtaXpsZW5pcmtlbiAoYmxvayAldSwgJWQgYmxvaykgaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjYzNworbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICItIGfDvG5sw7xrIHPDvHBlcmJsb8SfdSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjY1MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIiIKKyIlcyDDvHplcmluZGVraSBkb3N5YSBzaXN0ZW1pIMWfaW1kaSAldSBibG9rIHV6dW5sdWt0YS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJ1eWFyxLE6ICV1IGJsb2sga3VsbGFuxLFsbWFtxLHFny5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBsYWJlbD0lc1xuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pIGlzbWkgPSAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiT1MgdHlwZTogJXNcbiIKK21zZ3N0ciAixLDFn2wuIFNpc3QuIHTDvHLDvDogIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIkJsb2sgYm95dSA9ICV1IChnw7xubMO8ayBrYXlkxLEgPSAldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNsdXN0ZXIgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJCbG9rIGJveXUgPSAldSAoZ8O8bmzDvGsga2F5ZMSxID0gJXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQWTEsW1sYW1hIGJveXUgPSAldSAoZ8O8bmzDvGsga2F5ZMSxID0gJXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBkw7zEn8O8bSwgJXUgYmxva1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJWxsdSBibG9ja3MgKCUyLjJmJSUpIHJlc2VydmVkIGZvciB0aGUgc3VwZXIgdXNlclxuIgorbXNnc3RyICIldSBibG9rICglJSUyLjJmKSBzw7xwZXIga3VsbGFuxLFjxLEgacOnaW4gYXlyxLFsZMSxXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpcnN0IGRhdGEgYmxvY2s9JXVcbiIKK21zZ3N0ciAixLBsayB2ZXJpIGJsb8SfdSA9ICV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWF4aW11bSBmaWxlc3lzdGVtIGJsb2Nrcz0lbHVcbiIKK21zZ3N0ciAiQXphbWkgZG9zeWFzaXN0ZW1pIGJsb8SfdSBzYXnEsXPEsSA9ICVsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cHNcbiIKK21zZ3N0ciAiJXUgYmxvayBncnVidVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cFxuIgorbXNnc3RyICIldSBibG9rIGdydWJ1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBjbHVzdGVycyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiR3J1cCBiYcWfxLFuYSAldSBibG9rIHZlICV1IHNla21lXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGZyYWdtZW50cyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiR3J1cCBiYcWfxLFuYSAldSBibG9rIHZlICV1IHNla21lXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAiZ3J1cCBiYcWfxLFuYSAldSBkw7zEn8O8bVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pIGlzbWkgPSAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjcxMworbXNnaWQgIlN1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAiCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gYnVsdW5kdcSfdSBibG9rbGFyOiIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgbXVzdCBiZSBiZWZvcmUgJ3Jlc2l6ZT0ldSdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBkZXNjX3NpemU6ICclcydcbiIKK21zZ3N0ciAiZMO8xJ/DvG0gdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb2Zmc2V0OiAlc1xuIgorbXNnc3RyICJkw7zEn8O8bSB1enVubHXEn3UgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjg1MyBtaXNjL3R1bmUyZnMuYzoxOTU4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCittc2dzdHIgInPEsW5hbWEgxZ9hYmxvbnUgZ2XDp2Vyc2l6OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCAjIG9mIGJhY2t1cCBzdXBlcmJsb2NrczogJXNcbiIKK21zZ3N0ciAiR2XDp2Vyc2l6IHPDvHBlciBibG9rIHBhcmFtZXRyZXNpOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIidzdHJpZGUnIHBhcmFtZXRyZXNpIGdlw6dlcnNpejogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpcGUtd2lkdGggcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJHZcOnZXJzaXogw6dpemdpIGdlbmnFn2xpayBwYXJhbWV0cmVzaTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJZZW5pZGVuIGJveXV0bGFtYSBwYXJhbWV0cmVzaSBnZcOnZXJzaXo6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgIiIKKyJBemFtaSB5ZW5pZGVuIGJveXV0bGFtYSBkZcSfZXJpIGRvc3lhIHNpc3RlbWkgYm95dXR1bmRhbiBiw7x5w7xrIG9sbWFsxLFkxLFyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIlNhdMSxcmRhIGJveXV0bGFuZMSxcm1hLCAwLiBnw7Z6ZGVuIGdlw6dpcm1lZGVraSBkb3N5YSBzaXN0ZW1sZXJpbmRlICIKKyJkZXN0ZWtsZW5tZW1la3RlZGlyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJvb3Rfb3duZXI6ICclcydcbiIKK21zZ3N0ciAiR2XDp2Vyc2l6IGRvc3lhIHNpc3RlbWkgc2XDp2VuZcSfaSBiZWxpcnRpZGk6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHRvZmZzZXQ9PG9mZnNldCB0byBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtPlxuIgorIlx0cmVzaXplPTxyZXNpemUgbWF4aW11bSBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBvZiByb290IGRpcj46PGdpZCBvZiByb290IGRpcj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxxdW90YSB0eXBlKHMpIHRvIGJlIGVuYWJsZWQ+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJCZWxpcnRpbGVuIHNlw6dlbmVrbGVyIGhhdGFsxLEuXG4iCisiXG4iCisiRWsgc2XDp2VuZWtsZXIgdmlyZ8O8bGxlcmxlIGF5csSxbGFyYWsgYmVsaXJ0aWxpci4gQmlyIHNlw6dlbmXEn2UgZGXEn2VyXG4iCisiYmVsaXJ0aWxlY2Vrc2UgYnUgJz0nIGnFn2FyZXRpbmRlbiBzb25yYSB5YXrEsWzEsXIuXG4iCisiXG4iCisiR2XDp2VybGkgZWsgc2XDp2VuZWtsZXI6XG4iCisiXHRzdHJpZGU9PGJsb2sgY2luc2luZGVuIGFkxLFtIHV6dW5sdcSfdT5cbiIKKyJcdHJlc2l6ZT08eWVuaWRlbiBib3l1dGxhbmFjYcSfxLEgYmxvayBzYXnEsXPEsT5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisibWtlMmZzIHlhcMSxbGFuZMSxcm1hIGRvc3lhc8SxbmRhICglcywgJWQuc2F0xLFyZGEpIHPDtnpkaXppbWkgaGF0YXPEsVxuIgorIlx0JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIkdlw6dlcnNpeiBkb3N5YSBzaXN0ZW1pIHNlw6dlbmXEn2k6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEyNiBtaXNjL3R1bmUyZnMuYzo0MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtb3VudCBvcHRpb24gc2V0OiAlc1xuIgorbXNnc3RyICJHZcOnZXJzaXogZG9zeWEgc2lzdGVtaSBzZcOnZW5lxJ9pIGJlbGlydGlkaTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjYyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJZb3VyIG1rZTJmcy5jb25mIGZpbGUgZG9lcyBub3QgZGVmaW5lIHRoZSAlcyBmaWxlc3lzdGVtIHR5cGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjY2Cittc2dpZCAiIgorIllvdSBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgYW4gdXBkYXRlZCBta2UyZnMuY29uZiBmaWxlLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorIywgZnV6enkKK21zZ2lkICJBYm9ydGluZy4uLlxuIgorbXNnc3RyICLDh8Sxa8SxbMSxeW9yLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTMxMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGZzX3R5cGUgJXMgaXMgbm90IGRlZmluZWQgaW4gbWtlMmZzLmNvbmZcbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKKyMsIGZ1enp5Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaSB0w7xybGVyaSBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBpbml0IHByb2ZpbGUgc3VjY2Vzc2Z1bGx5IChlcnJvcjogJWxkKS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9jayBzaXplIC0gJXMiCittc2dzdHIgImJsb2sgdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAiVXlhcsSxOiBibG9rIHV6dW5sdcSfdSAlZCBiaXLDp29rIHNpc3RlbWRlIGt1bGxhbsSxbWTEscWfxLFkxLFyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1ODcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgY2x1c3RlciBzaXplIC0gJXMiCittc2dzdHIgImJsb2sgdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjAwCittc2dpZCAiJy1SJyBpcyBkZXByZWNhdGVkLCB1c2UgJy1FJyBpbnN0ZWFkIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICJoYXRhIGRhdnJhbsSxxZ/EsSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYyNgorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBibG9ja3MgcGVyIGdyb3VwIgorbXNnc3RyICJHcnVwIGJhxZ/EsW5hIGJsb2sgc2F5xLFzxLEga3VyYWxkxLHFn8SxIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAiZ3J1cCBiYcWfxLFuYSBibG9rIHNhecSxc8SxIDgnaW4ga2F0bGFyxLEgb2xtYWzEsWTEsXIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICJHcnVwIGJhxZ/EsW5hIGJsb2sgc2F5xLFzxLEga3VyYWxkxLHFn8SxIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjUwCisjLCBjLWZvcm1hdAorbXNnaWQgImZsZXhfYmcgc2l6ZSAoJWx1KSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAyXjMxIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAiZMO8xJ/DvG0gb3JhbsSxICVzIGhhdGFsxLEgKGVuIGF6ICVkL2VuIMOnb2sgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgImTDvMSfw7xtIHV6dW5sdcSfdSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICItIGJhZF9ibG9ja3NfZmlsZW5hbWUgacOnaW4gYmVsbGVrIGF5csSxbMSxcmtlbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiVXlhcsSxOiBldGlrZXQgw6dvayB1enVuLCBrxLFycMSxbMSxeW9yLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICJ5ZWRlayBibG9rIHnDvHpkZXNpIGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgImTDvMSfw7xtIHNhecSxc8SxIGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgIi0gdGFtcG9uIGJlbGxlayBheXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjE3NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJldmlzaW9uIGxldmVsIC0gJXMiCittc2dzdHIgImRlxJ9pxZ9pa2xpayBzZXZpeWVzaSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc2MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAiIgorIlxuIgorIlx0Z8O8bmzDvGsgb2x1xZ90dXJ1bG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjE3NzYKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIi1vIHlhbG7EsXogYmlyIGtlcmUga3VsbGFuxLFsYWJpbGlyIgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKKyMsIGZ1enp5Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIi1vIHlhbG7EsXogYmlyIGtlcmUga3VsbGFuxLFsYWJpbGlyIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgIi0gJXMgZ8O8bmzDvGsgYXlnxLF0xLEgYcOnxLFsbWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiR8O8bmzDvGsgYXlnxLF0xLFuxLFuIGJsb2sgYm95dSAoJWQpIGFzZ2FyaSBibG9rIGJveXVuZGFuICglZCkga8O8w6fDvGtcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAiJXMnZSBnw7xubMO8ayBla2xlbml5b3I6ICIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGJsb2NrcyAnJXMnIG9uIGRldmljZSAnJXMnIgorbXNnc3RyICJibG9rIHNhecSxc8SxIGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAiZG9zeWEgc2lzdGVtaSIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgIi0gZG9zeWEgc2lzdGVtaSB1enVubHXEn3Ugc2FwdGFubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisiQXlnxLF0IGFsYW7EsSBzYXB0YW5hbWFkxLE7IGRvc3lhIHNpc3RlbWkgacOnaW5cbiIKKyJiaXIgdXp1bmx1ayBiZWxpcnRtZWxpc2luaXpcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTEzCittc2dpZCAiIgorIkRldmljZSBzaXplIHJlcG9ydGVkIHRvIGJlIHplcm8uICBJbnZhbGlkIHBhcnRpdGlvbiBzcGVjaWZpZWQsIG9yXG4iCisiXHRwYXJ0aXRpb24gdGFibGUgd2Fzbid0IHJlcmVhZCBhZnRlciBydW5uaW5nIGZkaXNrLCBkdWUgdG9cbiIKKyJcdGEgbW9kaWZpZWQgcGFydGl0aW9uIGJlaW5nIGJ1c3kgYW5kIGluIHVzZS4gIFlvdSBtYXkgbmVlZCB0byByZWJvb3RcbiIKKyJcdHRvIHJlLXJlYWQgeW91ciBwYXJ0aXRpb24gdGFibGUuXG4iCittc2dzdHIgIiIKKyJBeWfEsXR0YWtpIGFsYW4gc8SxZsSxciBvbGFyYWsgcmFwb3JsYW5kxLEuICBZYSBkZcSfacWfdGlyaWxlbiBiaXIgZGlzayBiw7Zsw7xtw7xcbiIKKyJoYWxhIG1lxZ9ndWwgdmV5YSBrdWxsYW7EsW1kYSBvbGR1xJ91bmRhbiBmZGlzayDDp2FsxLHFn3TEsXLEsWxkxLFrdGFuIHNvbnJhXG4iCisiZGlzayBiw7Zsw7xtbGVtZSB0YWJsb3N1IHllbmlkZW4gb2t1bmFtYWTEsSB5YSBkYSB5YW5sxLHFnyBiw7Zsw7xtIGJlbGlydGlsZGkuXG4iCisiRGlzayBiw7Zsw7xtbGVtZSB0YWJsb3N1bnVuIHllbmlkZW4gb2t1bm1hc8SxIGnDp2luIHNpc3RlbWluaXppIHllbmlkZW5cbiIKKyJiYcWfbGF0bWFsxLFzxLFuxLF6LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaW5pbiB1enVubHXEn3UgZ8O2csO8bsO8cmRla2kgdXp1bmx1a3RhbiBiw7x5w7xrLiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTUwCittc2dpZCAiRmFpbGVkIHRvIHBhcnNlIGZzIHR5cGVzIGxpc3RcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjE5OTgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCwgZG9zeWEgdMO8csO8IMO2emVsbGnEn2luaSBkZXN0ZWtsZW1lei5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkLCBkb3N5YSB0w7xyw7wgw7Z6ZWxsacSfaW5pIGRlc3Rla2xlbWV6LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICJIdXJkLCBkb3N5YSB0w7xyw7wgw7Z6ZWxsacSfaW5pIGRlc3Rla2xlbWV6LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICItIGRvbmFuxLFtc2FsIHNla3TDtnIgYm95dSBzYXB0YW5tYXlhIMOnYWzEscWfxLFsxLFya2VuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAiLSBkb25hbsSxbXNhbCBzZWt0w7ZyIGJveXUgc2FwdGFubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICItIHllbmlkZW4gYm95dXRsYW1hIGnDp2luIGJsb2tsYXIgeWVkZWtsZW5pcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA2MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogc3BlY2lmaWVkIGJsb2Nrc2l6ZSAlZCBpcyBsZXNzIHRoYW4gZGV2aWNlIHBoeXNpY2FsIHNlY3RvcnNpemUgJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIwODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBTaXplIG9mIGRldmljZSAoMHglbGx4IGJsb2NrcykgJXMgdG9vIGJpZyB0byBiZSBleHByZXNzZWRcbiIKKyJcdGluIDMyIGJpdHMgdXNpbmcgYSBibG9ja3NpemUgb2YgJWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJEb3N5YXNpc3RlbWkgw7Z6ZWxsaWtsZXJpIDAgcmV2aXp5b25sdSBkb3N5YXNpc3RlbWxlcmluZGUgZGVzdGVrbGVubWl5b3JcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTI2Cittc2dpZCAiSm91cm5hbHMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgInllZGVrIGJsb2sgecO8emRlc2kgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjIxNTYKK21zZ2lkICIiCisiRXh0ZW50cyBNVVNUIGJlIGVuYWJsZWQgZm9yIGEgNjQtYml0IGZpbGVzeXN0ZW0uICBQYXNzIC1PIGV4dGVudHMgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2CisjLCBmdXp6eQorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIiIKKyJBemFtaSB5ZW5pZGVuIGJveXV0bGFtYSBkZcSfZXJpIGRvc3lhIHNpc3RlbWkgYm95dXR1bmRhbiBiw7x5w7xrIG9sbWFsxLFkxLFyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxODIKK21zZ2lkICJzcGVjaWZ5aW5nIGEgY2x1c3RlciBzaXplIHJlcXVpcmVzIHRoZSBiaWdhbGxvYyBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIG1heSByZXN1bHQgaW4gdmVyeSBwb29yIHBlcmZvcm1hbmNlLCAocmUpLXBhcnRpdGlvbmluZyBzdWdnZXN0ZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjI4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSIKK21zZ3N0ciAiJWQgYmF5dGzEsWsgYmxva2xhciBzaXN0ZW0gacOnaW4gw6dvayBiw7x5w7xrIChlbiDDp29rICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisiVXlhcsSxOiAlZCBiYXl0bMSxayBibG9rbGFyIHNpc3RlbSBpw6dpbiDDp29rIGLDvHnDvGsgKGVuIMOnb2sgJWQpLCBhbWEgZGV2YW0gIgorImVkaWxpeW9yXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMjcKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMzkKK21zZ2lkICJyZXNlcnZlZCBvbmxpbmUgcmVzaXplIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIG5vbi1zcGFyc2UgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorInPDvHBlcmJsb2sgYXphbHRtYXPEsSB1eWd1bGFubWFtxLHFnyBkb3N5YSBzaXN0ZW1pbmRlXG4iCisieWVkZWsgYmxva2xhciBrdWxsYW7EsWxhcmFrIHllbmlkZW4gYm95dXRsYW1hIGRlc3Rla2xlbm1peW9yLiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgIkdydXAgYmHFn8SxbmEgYmxvayBzYXnEsXPEsSBrYXBzYW1kxLHFn8SxIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIzODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplICVkIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAiZMO8xJ/DvG0gdXp1bmx1xJ91ICVkIGhhdGFsxLEgKGVuIGF6ICVkL2VuIMOnb2sgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQiCittc2dzdHIgImV4dDJmc19ibG9ja19pdGVyYXRlIGnFn2xldmkgw6dhxJ9yxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgaW5vZGVzIgorbXNnc3RyICItIGfDvG5sw7xrIGTDvMSfw7xtw7wgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICJoYXRhIGRhdnJhbsSxxZ/EsSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgxNAorbXNnaWQgIndoaWxlIHNldHRpbmcgdXAgc3VwZXJibG9jayIKK21zZ3N0ciAiLSBzw7xwZXJibG9rIGF5YXJsYW7EsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjI4MzAKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFBhc3MgLU8gZXh0ZW50cyB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzNworbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NjkKK21zZ2lkICJEaXNjYXJkIHN1Y2NlZWRlZCBhbmQgd2lsbCByZXR1cm4gMHMgLSBza2lwcGluZyBpbm9kZSB0YWJsZSB3aXBlXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAiYmlsaW5tZXllbiBpxZ9sZXRpbSBzaXN0ZW1pIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorIywgZnV6enkKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJEw7zEn8O8bSB0YWJsb2xhcsSxIHlhesSxbMSxeW9yOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAiLSBkb3N5YSBzaXN0ZW1pIHRhYmxvbGFyxLEgYXlyxLFsbWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorIywgZnV6enkKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYml0bWFwIgorbXNnc3RyICItIGJsb2sgYml0ZcWfbGVtaSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICItIGRvc3lhIHNpc3RlbWluaW4gc29udW5kYSBibG9rICV1IHPEsWbEsXJsYW7EsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICItIHllbmlkZW4gYm95dXRsYW1hIGnDp2luIGJsb2tsYXIgeWVkZWtsZW5pcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAiZ8O8bmzDvGsiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAiJXMnZSBnw7xubMO8ayBla2xlbml5b3I6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdGfDvG5sw7xrICVzIGUgZWtsZW5tZXllIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzozMTMxIG1pc2MvbWtlMmZzLmM6MzE2MCBtaXNjL21rZTJmcy5jOjMyMDAKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTEwIG1pc2MvdHVuZTJmcy5jOjE0NDQgbWlzYy90dW5lMmZzLmM6MTQ2MworbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAidGFtYW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNDcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCV1IGJsb2Nrcyk6ICIKK21zZ3N0ciAiR8O8bmzDvGsgb2x1xZ90dXJ1bHV5b3IgKCVkIGJsb2spOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE1NgorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCIKK21zZ3N0ciAiIgorIlxuIgorIlx0Z8O8bmzDvGsgb2x1xZ90dXJ1bG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL21rZTJmcy5jOjMxNjggbWlzYy90dW5lMmZzLmM6MTA3MgorbXNnaWQgIiIKKyJcbiIKKyJFcnJvciB3aGlsZSBlbmFibGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE3MworIywgYy1mb3JtYXQKK21zZ2lkICJNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgJWQgc2Vjb25kcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOTEKK21zZ2lkICJDb3B5aW5nIGZpbGVzIGludG8gdGhlIGRldmljZTogIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5NworIywgZnV6enkKK21zZ2lkICJ3aGlsZSBwb3B1bGF0aW5nIGZpbGUgc3lzdGVtIgorbXNnc3RyICItIHRhbXBvbiBiZWxsZWsgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy9ta2UyZnMuYzozMjA0Cittc2dpZCAiV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAiCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gdmUgZG9zeWEgc2lzdGVtaW5pbiBoZXNhcCBiaWxnaWxlcmkgeWF6xLFsxLF5b3I6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIlV5YXLEsSwgc8O8cGVyYmxva2xhcsSxbiB0YW1hbcSxbmEgeWF6bWEgc29ydW51IHZhci4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJiaXR0aVxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICJvbGHEn2FuIGRvc3lhIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICIiCisidXlhcsSxOiAldSBibG9rIGt1bGxhbsSxbG1hbcSxxZ8uXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJzb25yYWtpIGTDvMSfw7xtZSBnZcOnaWxpcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgIkt1bGxhbsSxbcSxOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICAlcyBkZXZpY2UuLi5cbiIKKyJcbiIKKyJQcmludHMgb3V0IHRoZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIGVhY2ggZ2l2ZW4gZGV2aWNlLlxuIgorIkZvciBleGFtcGxlOiAlcyAvZGV2L2hkYVxuIgorIlxuIgorbXNnc3RyICIiCisiS3VsbGFuxLFtxLE6ICVzIDxheWfEsXQxPiA8YXlnxLF0Mj4gPGF5Z8SxdDM+XG4iCisiXG4iCisiQmlyIGF5Z8SxdCBrw7xtZXNpIGnDp2luIGRpc2sgYsO2bMO8bWxlbWUgYmlsZ2lsZXJpbmkgZ8O2c3RlcmlyXG4iCisiQnUgdXlndWxhbWFuxLFuIMOnb2sga3VsbGFuxLFsYW4gYmnDp2ltaTpcbiIKKyJcbiIKKyJcdCVzIC9kZXYvaGRhP1xuIgorIlxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiZTJsYWJlbDogJXMgYcOnxLFsYW3EsXlvclxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBnZXQgc2l6ZSBvZiAlczogJXMiCittc2dzdHIgIiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExOQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiTMO8dGZlbiBkb3N5YSBzaXN0ZW1pbmRlIGUyZnNjayDDp2FsxLHFn3TEsXLEsW4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIkzDvHRmZW4gZG9zeWEgc2lzdGVtaW5kZSBlMmZzY2sgw6dhbMSxxZ90xLFyxLFuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbc2XDp2VuZWtsZXJdIGF5Z8SxdFxuIgorIlxuIgorIkRvc3lhIHNpc3RlbWluaW4gYXlhcmxhbmFiaWxpciBwYXJhbWV0cmVsZXJpbmkgZGXEn2nFn3Rpcm1la3RlIGt1bGxhbsSxbMSxci5cbiIKKyJcbiIKKyJTZcOnZW5la2xlcjpcbiIKKyIgICAtYyBTQVlJICAgICAgICAgICAgICAgIMSwa2kgZG9zeWFzaXN0ZW1pIGRlbmV0aW1pIGFyYXPEsW5kYSBkb3N5YSAiCisic2lzdGVtaW5pblxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgZW4gw6dvayBrYcOnIGRlZmEgYmHEn2xhbmFiaWxlY2XEn2kgYmVsaXJ0aWxpci5cbiIKKyIgICAtQyBTQVlJICAgICAgICAgICAgICAgIC1jIGlsZSBheW7EsVxuIgorIiAgIC1lIGhhdGEtZGF2cmFuxLHFn8SxICAgICAgSGF0YSBvbHXFn3R1xJ91bmRhIG5lIHlhcMSxbGFjYcSfxLEgYmVsaXJ0aWxpci5cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250aW51ZSc6IGhhdGEgeW9rc2F5xLFsxLFyLiAncmVtb3VudC1ybyc6IGRvc3lhXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICBzaXN0ZW1pIHNhbHQtb2t1bnVyIG9sYXJhayBiYcSfbGFuxLFyLiAncGFuaWMnOlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgw6dla2lyZGVrIHBhbmnEn2kgb2x1xZ91ci5cbiIKKyIgICAtZyBncnVwICAgICAgICAgICAgICAgIFllZGVrIGJsb2tsYXLEsW4gaGFuZ2kga3VsbGFuxLFjxLEgZ3J1YnVuYSAiCisiYXlyxLFsYWNhxJ/EsVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgYmVsaXJ0aWxpci4gR3J1cCBpc21pIHlhIGRhIG51bWFyYXPEsSB2ZXJpbGViaWxpci5cbiIKKyIgICAtdSBrdWxsYW7EsWPEsSAgICAgICAgICAgWWVkZWsgYmxva2xhcsSxbiBoYW5naSBrdWxsYW7EsWPEsXlhIGF5csSxbGFjYcSfxLFcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIGJlbGlydGlsaXIuIEt1bGwuIGlzbWkgeWEgZGEgbnVtYXJhc8SxICIKKyJ2ZXJpbGViaWxpci5cbiIKKyIgICAtaSBzw7xyZVtkfG18d10gICAgICAgICDEsGtpIGRlbmV0aW0gYXJhc8SxbmRha2kgZW4gYsO8ecO8ayBzw7xyZSBiZWxpcnRpbGlyLlxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgR8O8bihkKSwgYXkobSksIGhhZnRhKHcpIG9sYXJhayB2ZXJpbGViaWxpci4gMCBpbGVcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIHphbWFuYSBiYcSfbMSxIGRlbmV0aW0gYXlhcsSxIGthbGTEsXLEsWzEsXIuXG4iCisiICAgLWogICAgICAgICAgICAgICAgICAgICBEb3N5YSBzaXN0ZW1pbmUgZ8O8bmzDvGsgZG9zeWFzxLEgZWtsZW5pci4gLUpcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIHNlw6dlbmXEn2kgaWxlIHNlw6dlbmVrbGVyIGJlbGlydGlsbWV6c2UgZG9zeWFcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIMO2bnRhbsSxbWzEsSDDtnplbGxpa2xlcmxlIG9sdcWfdHVydWx1ci5cbiIKKyIgICAtSiBzZcOnZW5la1ssLi4uXSAgICAgICBBxZ9hxJ/EsWRhIGHDp8Sxa2xhbWFsYXLEsSB2ZXJpbGVuIHNlw6dlbmVrbGVyIGJ1cmFkYVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlyZ8O8bGxlcmxlIGF5csSxbGFyYWsgdmVyaWxlYmlsaXIuXG4iCisiICAgLWwgICAgICAgICAgICAgICAgICAgICBEb3N5YSBzaXN0ZW1pbmluIMO2emVsbGlrbGVyaSBsaXN0ZWxlbmlyLlxuIgorIiAgIC1MIGV0aWtldCAgICAgICAgICAgICAgRG9zeWEgc2lzdGVtaW5pbiBiw7Zsw7xtIGlzbWkgYmVsaXJ0aWxpci5cbiIKKyIgICAtbSB5ZWRlay1ibG9rLXnDvHpkZXNpICBZZWRlayBibG9rbGFyxLFuIHnDvHpkZXNpIGJlbGlydGlsaXIuIMOWbnRhbsSxbWzEsSAlJTVcbiIKKyIgICAtTSBExLBaxLBOICAgICAgICAgICAgICAgRG9zeWEgc2lzdGVtaW5lIHNvbiBiYcSfbGFuYW4gZGl6aW4gYmVsaXJ0aWxpci5cbiIKKyIgICAtbyBbXl1zZcOnZW5la1ssLi4uXSAgICBCYcSfbGFtYSBzZcOnZW5la2xlcmlcbiIKKyIgICAtTyBbXl3DtnplbGxpa1ssLi4uXSAgICBBxZ9hxJ/EsWRhIGHDp8Sxa2xhbWFsYXLEsSB2ZXJpbGVuIMO2emVsbGlrbGVyIGJ1cmFkYVxuIgorIiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlyZ8O8bGxlcmxlIGF5csSxbGFyYWsgdmVyaWxlYmlsaXIuXG4iCisiICAgLXIgeWVkZWstYmxvay1zYXnEsXPEsSAgIFllZGVrIGJsb2tsYXLEsW4gc2F5xLFzxLEgYmVsaXJ0aWxpci5cbiIKKyIgICAtcyBbMHwxXSAgICAgICAgICAgICAgIMOHb2sgYsO8ecO8ayBkb3N5YSBzaXN0ZW1sZXJpbmRlIHllciBrYXphbmTEsXLEsXIuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAtTyBzcGFyc2Vfc3VwZXIgaWxlIGF5bsSxZMSxci5cbiIKKyIgICAtVCBzb24tZGVuZXRpbS16YW1hbsSxICBCZXRpa2xlcmxlIGt1bGxhbm1hayBpw6dpbmRpclxuIgorIiAgIC1VIFVVSUR8Y2xlYXJ8cmFuZG9tfHRpbWVcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIERvc3lhIHNpc3RlbWluaW4gZXZyZW5zZWwgdGVrIGtpbWxpxJ9pIHZleWEgKFVVSUQpXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5naSB5w7ZudGVtbGUgYmVsaXJsZW5lY2XEn2kgYmVsaXJ0aWxpci4nY2xlYXInICIKKyJpbGVcbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgIHNpbGluaXI7ICdyYW5kb20nIHJhc2dlbGUsICd0aW1lJyB6YW1hbmEgZ8O2cmUgYmlyXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICBraW1saWsgw7xyZXRpci5cbiIKKyJcbiIKKyJHw7xubMO8a2xlbWUgc2XDp2VuZWtsZXJpOlxuIgorIiAgICAgc2l6ZT1nw7xubMO8ay11enVubHXEn3UgICAgIEfDvG5sw7xrIGRvc3lhc8SxbsSxbiB1enVubHXEn3UgTUIgb2xhcmFrICIKKyJiZWxpcnRpbGlyXG4iCisiICAgICBkZXZpY2U9ZMSxxZ8tZ8O8bmzDvGstYXlnxLF0xLEgQmHFn2thIGJpciBheWfEsXQgw7x6ZXJpbmRla2kgZ8O8bmzDvGsgZG9zeWFzxLFuxLFuXG4iCisiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3VsbGFuxLFsbWFzxLEgc2HEn2xhbsSxci5cbiIKKyJcbiIKKyLDlnplbGxpa2xlcjpcbiIKKyInXicgw7ZuZWtpIGlsZSB2ZXJpbGVuIMO2emVsbGlrbGVyIHPDvHBlcmJsb8SfYSBlc2tpbGVyIGthbGTEsXLEsWxhcmFrIHlhesSxbMSxci5cbiIKKyInKycgw7ZuZWtpeWxlIHlhIGRhIMO2bmVrc2l6IHZlcmlsZW4gw7Z6ZWxsaWtsZXIgc8O8cGVyYmxva3Rha2kgw7Z6ZWxsaWtsZXJlXG4iCisiZWtsZW5pci5cbiIKKyIgICAgIHNwYXJzZV9zdXBlciAgICBZZWRlayBzw7xwZXJibG9rbGFyxLFuIHNhecSxc8SxbsSxIHPEsW7EsXJsYW1ha3RhIGt1bGxhbsSxbMSxci5cbiIKKyIgICAgIGZpbGV0eXBlICAgICAgICBEaXppbiBrYXnEsXRsYXLEsW5kYSBkb3N5YSB0w7xyw7wgYmlsZ2lzaSBzYWtsYW7EsXIuXG4iCisiICAgICBoYXNfam91cm5hbCAgICAgLWogc2XDp2VuZcSfaSBpbGUgYXluxLEuIEJpciBleHQzIGfDvG5sw7xrIGRvc3lhc8SxICIKKyJvbHXFn3R1cnVyLlxuIgorIlxuIgorIsOHZXZpcmkgaGF0YWxhcsSxbsSxIDxnbnUtdHJAYmVsZ2VsZXIub3JnPiBhZHJlc2luZSBiaWxkaXJpbml6LlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICJHw7xubMO8ayBzw7xwZXJibG/En3UgeW9rIVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICItIGTEscWfIGfDvG5sw7xrIGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODIgbWlzYy90dW5lMmZzLmM6MjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBub3QgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMgYmlyIGfDvG5sw7xrbGVtZSBheWfEsXTEsSBkZcSfaWwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisiR8O8bmzDvGtsZW1lIGF5Z8SxdMSxbmRhIGRvc3lhIHNpc3RlbWluaW4gZXZyZW5zZWwgdGVrIGtpbWxpxJ9pIChVVUlEKSB5b2suXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICJHw7xubMO8ayBzaWxpbmRpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM2OQorbXNnaWQgIndoaWxlIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAiLSBiaXRlxZ9sZW1sZXIgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy90dW5lMmZzLmM6Mzc3Cittc2dpZCAid2hpbGUgY2xlYXJpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAiLSBnw7xubMO8ayBkw7zEn8O8bcO8IHRlbWl6bGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIi0gZ8O8bmzDvGsgZMO8xJ/DvG3DvCB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3NgorIywgYy1mb3JtYXQKK21zZ2lkICJBZnRlciBydW5uaW5nIGUyZnNjaywgcGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ3OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICJyZXNpemUyZnMgJXMgKCVzKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIC16IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZGlzYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo5NzQKK21zZ2lkICIiCisiV0FSTklORzogQ291bGQgbm90IGNvbmZpcm0ga2VybmVsIHN1cHBvcnQgZm9yIG1ldGFkYXRhX2NzdW1fc2VlZC5cbiIKKyIgIFRoaXMgcmVxdWlyZXMgTGludXggPj0gdjQuNC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNsZWFyaW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiclcycgZG9zeWEgc2lzdGVtaSDDtnplbGxpxJ9pbmkgdGVtaXpsZW1lIGRlc3Rla2xlbm1peW9yLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1CisjLCBmdXp6eQorbXNnaWQgIiIKKyJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyJoYXNfam91cm5hbCBiYXlyYcSfxLEgc2FkZWNlIGRvc3lhIHNpc3RlbWkgYmHEn2zEsSBkZcSfaWxrZW4geWEgZGEgc2FsdC1va3VudXJcbiIKKyJiYcSfbMSxeWtlbiB0ZW1pemxlbmViaWxpci5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorIm5lZWRzX3JlY292ZXJ5IGJheXJhxJ/EsSBnZXJla2l5b3IuIEzDvHRmZW4gaGFzX2pvdXJuYWwgYmF5cmHEn8SxXG4iCisidGVtaXpsZW5tZWRlbiDDtm5jZSBlMmZzY2sgw6dhbMSxxZ90xLFyxLFuLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA2NAorIywgZnV6enkKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiaGFzX2pvdXJuYWwgYmF5cmHEn8SxIHNhZGVjZSBkb3N5YSBzaXN0ZW1pIGJhxJ9sxLEgZGXEn2lsa2VuIHlhIGRhIHNhbHQtb2t1bnVyXG4iCisiYmHEn2zEsXlrZW4gdGVtaXpsZW5lYmlsaXIuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA5OQorIywgZnV6enkKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIGJpdG1hcHNcbiIKK21zZ3N0ciAiLSBiaXRlxZ9sZW1sZXIgb2t1bnVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy90dW5lMmZzLmM6MTEwOAorIywgYy1mb3JtYXQKK21zZ2lkICJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90IG1hdGNoLiBleHBlY3RlZDogJXgsIGFjdHVhbDogJXhcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTEzCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAiLSBoYXRhbMSxIGJsb2tsYXIgZMO8xJ/DvG3DvCBva3VubWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNDUKK21zZ2lkICIiCisiQ2xlYXJpbmcgdGhlIGZsZXhfYmcgZmxhZyB3b3VsZCBjYXVzZSB0aGUgdGhlIGZpbGVzeXN0ZW0gdG8gYmVcbiIKKyJpbmNvbnNpc3RlbnQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE1NgorIywgZnV6enkKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorImhhc19qb3VybmFsIGJheXJhxJ/EsSBzYWRlY2UgZG9zeWEgc2lzdGVtaSBiYcSfbMSxIGRlxJ9pbGtlbiB5YSBkYSBzYWx0LW9rdW51clxuIgorImJhxJ9sxLF5a2VuIHRlbWl6bGVuZWJpbGlyLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY3Cittc2dpZCAiRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTY5Cittc2dpZCAiQ2Fubm90IGVuYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNzUKK21zZ2lkICIiCisiRXh0ZW50cyBhcmUgbm90IGVuYWJsZWQuICBUaGUgZmlsZSBleHRlbnQgdHJlZSBjYW4gYmUgY2hlY2tzdW1tZWQsIHdoZXJlYXMgIgorImJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgIgorImNoZWNrc3VtbWluZy4gIFJlLXJ1biB3aXRoIC1PIGV4dGVudCB0byByZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExODIKK21zZ2lkICIiCisiNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5ICIKKyJ0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUnVuIHJlc2l6ZTJmcyAtYiB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSBtZXRhZGF0YV9jc3VtIG9uIGEgbW91bnRlZCBmaWxlc3lzdGVtIVxuIgorbXNnc3RyICIlcyBiYcSfbMSxOyBiYcSfbMSxIGJpciBkb3N5YSBzaXN0ZW1pIHllbmlkZW4gYm95dXRsYW5kxLFyxLFsYW1heiFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI3MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZW5hYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTI4MworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZGlzYWJsZSA2NC1iaXQgbW9kZSB3aGlsZSBtb3VudGVkIVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMTMKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogZW5hYmxlZCBwcm9qZWN0IHdpdGhvdXQgcXVvdGEgdG9nZXRoZXJcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzI2Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6ICdecXVvdGEnIG9wdGlvbiBvdmVycmlkZXMgJy1RJ2FyZ3VtZW50cy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQ0Cittc2dpZCAiIgorIlNldHRpbmcgZmVhdHVyZSAnbWV0YWRhdGFfY3N1bV9zZWVkJyBpcyBvbmx5IHN1cHBvcnRlZFxuIgorIm9uIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmRlIGJpciBnw7xubMO8ayBkb3N5YXPEsSB6YXRlbiB2YXIuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiXHQlcyDDvHplcmluZGVraSBnw7xubMO8ayBhw6fEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgb24gZGV2aWNlICVzOiAiCittc2dzdHIgIiVzIMO8emVyaW5kZSBnw7xubMO8ayBkb3N5YXPEsSBvbHXFn3R1cnVsdXlvcjogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgIi0gJXMgw7x6ZXJpbmRla2kgZ8O8bmzDvGsgZG9zeWFzxLFuYSBkb3N5YSBzaXN0ZW1pIGVrbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICJHw7xubMO8ayBkw7zEn8O8bcO8IG9sdcWfdHVydWx1eW9yOiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx0Z8O8bmzDvGsgZG9zeWFzxLEgb2x1xZ90dXJ1bG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAiLSBnw7xtbMO8ayBzdXBlcmJsb8SfdSBpbGtsZW5kaXJpbGlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgIi0gaGF0YWzEsSBibG9rbGFyIGTDvMSfw7xtw7wgZ8O8bmNlbGxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIi0gJWxkIGTDvMSfw7xtw7wgJXMgZSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTM0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIi0ga8O2ayBkw7zEn8O8bcO8IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKK21zZ2lkICIiCisiXG4iCisiQmFkIHF1b3RhIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkZvbGxvd2luZyB2YWxpZCBxdW90YSBvcHRpb25zIGFyZSBhdmFpbGFibGUgKHBhc3MgYnkgc2VwYXJhdGluZyB3aXRoICIKKyJjb21tYSk6XG4iCisiXHRbXl11c3JbcXVvdGFdXG4iCisiXHRbXl1ncnBbcXVvdGFdXG4iCisiXHRbXl1wcmpbcXVvdGFdXG4iCisiXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiVGFyaWgvemFtYW4gYmVsaXJ0ZWNpIMOnw7Z6w7xtbGVuZW1lZGk6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJiYcSfbGFtYSBzYXnEsXPEsSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGdpZC9ncm91cCBuYW1lIC0gJXMiCittc2dzdHIgImdydXAgaXNtaS9udW1hcmFzxLEgaGF0YWzEsSAtJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgInPDvHJlIGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc3NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2sgcmF0aW8gLSAlcyIKK21zZ3N0ciAieWVkZWsgYmxvayBvcmFuxLEgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzkxCittc2dpZCAiLW8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1vIHlhbG7EsXogYmlyIGtlcmUga3VsbGFuxLFsYWJpbGlyIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgIi1PIHlhbG7EsXogYmlyIGtlcmUga3VsbGFuxLFsYWJpbGlyIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODE3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9ja3MgY291bnQgLSAlcyIKK21zZ3N0ciAieWVkZWsgYmxvayBzYXnEsXPEsSBoYXRhbMSxIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAia3VsbGFuxLFjxLEgaXNtaS9udW1hcmFzxLEgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICJkw7zEn8O8bSB1enVubHXEn3UgaGF0YWzEsSAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk2NworIywgYy1mb3JtYXQKK21zZ2lkICJtbXBfdXBkYXRlX2ludGVydmFsIHRvbyBiaWc6ICVsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICJFbiBmYXpsYSBiYcSfbGFtYSBzYXnEsXPEsSAlZCBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCittc2dzdHJbMV0gIkVuIGZhemxhIGJhxJ9sYW1hIHNhecSxc8SxICVkIG9sYXJhayBiZWxpcmxlbml5b3JcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDI1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICInc3RyaWRlJyBwYXJhbWV0cmVzaSBnZcOnZXJzaXo6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtIHRvICVzICglZClcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkJlbGlydGlsZW4gc2XDp2VuZWtsZXIgaGF0YWzEsS5cbiIKKyJcbiIKKyJFayBzZcOnZW5la2xlciB2aXJnw7xsbGVybGUgYXlyxLFsYXJhayBiZWxpcnRpbGlyLiBCaXIgc2XDp2VuZcSfZSBkZcSfZXJcbiIKKyJiZWxpcnRpbGVjZWtzZSBidSAnPScgacWfYXJldGluZGVuIHNvbnJhIHlhesSxbMSxci5cbiIKKyJcbiIKKyJHZcOnZXJsaSBlayBzZcOnZW5la2xlcjpcbiIKKyJcdHN0cmlkZT08YmxvayBjaW5zaW5kZW4gYWTEsW0gdXp1bmx1xJ91PlxuIgorIlx0cmVzaXplPTx5ZW5pZGVuIGJveXV0bGFuYWNhxJ/EsSBibG9rIHNhecSxc8SxPlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTE5CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICItIGJpdGXFn2xlbWxlciBva3VudXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGJsb2NrIGJpdG1hcFxuIgorbXNnc3RyICJkw7zEn8O8bSB2ZSBibG9rIGJpdGXFn2xlbWxlcmkgb2t1bnV5b3IiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDEgcmVzaXplL3Jlc2l6ZTJmcy5jOjEyNzYKK21zZ2lkICJibG9ja3MgdG8gYmUgbW92ZWQiCittc2dzdHIgInRhxZ/EsW5hY2FrIGJsb2tsYXIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1CisjLCBmdXp6eQorbXNnaWQgIkZhaWxlZCB0byByZWxvY2F0ZSBibG9ja3MgZHVyaW5nIGlub2RlIHJlc2l6ZSBcbiIKK21zZ3N0ciAiLSB5ZW5pZGVuIGJveXV0bGFtYSBpw6dpbiBibG9rbGFyIHllZGVrbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTg3Cittc2dpZCAiIgorIkVycm9yIGluIHJlc2l6aW5nIHRoZSBpbm9kZSBzaXplLlxuIgorIlJ1biBlMnVuZG8gdG8gdW5kbyB0aGUgZmlsZSBzeXN0ZW0gY2hhbmdlcy4gXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgxMQorIywgZnV6enkKK21zZ2lkICJDYW5ub3QgbW9kaWZ5IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIGJpciBnw7xubMO8a2xlbWUgYXlnxLF0xLEgZGXEn2lsLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBpbm9kZSBzaXplIGlzIGFscmVhZHkgJWx1XG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgzMQorIywgZnV6enkKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIiclcycgZG9zeWEgc2lzdGVtaSDDtnplbGxpxJ9pbmkgdGVtaXpsZW1lIGRlc3Rla2xlbm1peW9yLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODM2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGlub2RlIHNpemUgJWx1IChtYXggJWQpXG4iCittc2dzdHIgImTDvMSfw7xtIHV6dW5sdcSfdSAlZCBoYXRhbMSxIChlbiBheiAlZC9lbiDDp29rICVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAiRW4gZmF6bGEgYmHEn2xhbWEgc2F5xLFzxLEgJWQgb2xhcmFrIGJlbGlybGVuaXlvclxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgY3VycmVudCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICLFnmltZGlraSBiYcSfbGFtYSBzYXnEsXPEsSAlZCBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICJIYXRhIGRhdnJhbsSxxZ/EsSAlZCBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgZ2lkIHRvICVsdVxuIgorbXNnc3RyICJZZWRlayBibG9rbGFyxLFuIGdydXAgbnVtYXJhc8SxICVsdSBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgIkRlbmV0aW1sZXIgYXJhc8SxbmRha2kgc8O8cmUgJWx1IHNhbml5ZSBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICJEZW5ldGltbGVyIGFyYXPEsW5kYWtpIHPDvHJlICVsdSBzYW5peWUgb2xhcmFrIGJlbGlybGVuaXlvclxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTI0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICJZZWRlayBibG9rbGFyxLFuIHnDvHpkZXNpICUlJWcgKCV1IGJsb2spIG9sYXJhayBiZWxpcmxlbml5b3JcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIGNvdW50IGlzIHRvbyBiaWcgKCVsbHUpIgorbXNnc3RyICJ5ZWRlayBheXLEsWxtxLHFnyBibG9rIHNhecSxc8SxIMOnb2sgYsO8ecO8ayAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICJZZWRlayBibG9rIHNhecSxc8SxICVsdSBvbGFyYWsgYmVsaXJsZW5peW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisiRG9zeWEgc2lzdGVtaW5kZWtpIHPDvHBlcmJsb2tsYXIgemF0ZW4gYXphbHTEsWxtxLHFny5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0NQorbXNnaWQgIiIKKyJcbiIKKyJTZXR0aW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIlPDvHBlcmJsb2sgYXphbHRtYSBiYXlyYcSfxLEga29udWxkdS4gICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTYwCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICInJXMnIGRvc3lhIHNpc3RlbWkgw7Z6ZWxsacSfaW5pIHRlbWl6bGVtZSBkZXN0ZWtsZW5taXlvci5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2OAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHRpbWUgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdG8gJXNcbiIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaW5pbiBzb24gZGVuZXRpbSB6YW1hbsSxICVzIHlhcMSxbMSxeW9yXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgdWlkIHRvICVsdVxuIgorbXNnc3RyICJBeXLEsWxhbiBibG9rbGFyxLFuIGt1bGxhbsSxY8SxIG51bWFyYXPEsSAlbHUgb2xhcmFrIGF5YXJsYW7EsXlvclxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDA2Cittc2dpZCAiRXJyb3IgaW4gdXNpbmcgY2xlYXJfbW1wLiBJdCBtdXN0IGJlIHVzZWQgd2l0aCAtZlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKKyMsIGZ1enp5Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJoYXNfam91cm5hbCBiYXlyYcSfxLEgc2FkZWNlIGRvc3lhIHNpc3RlbWkgYmHEn2zEsSBkZcSfaWxrZW4geWEgZGEgc2FsdC1va3VudXJcbiIKKyJiYcSfbMSxeWtlbiB0ZW1pemxlbmViaWxpci5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA0OAorIywgZnV6enkKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICIiCisiaGFzX2pvdXJuYWwgYmF5cmHEn8SxIHNhZGVjZSBkb3N5YSBzaXN0ZW1pIGJhxJ9sxLEgZGXEn2lsa2VuIHlhIGRhIHNhbHQtb2t1bnVyXG4iCisiYmHEn2zEsXlrZW4gdGVtaXpsZW5lYmlsaXIuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA2MAorbXNnaWQgIlNldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgIkdlw6dlcnNpeiBVVUlEIGJpw6dlbWlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEwMQorIywgZnV6enkKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgImfDvG5sw7xrIGRvc3lhc8SxIHN1cGVyIGJsb8SfdSBva3VudXlvclxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2CisjLCBmdXp6eQorbXNnaWQgIlRoZSBpbm9kZSBzaXplIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyJoYXNfam91cm5hbCBiYXlyYcSfxLEgc2FkZWNlIGRvc3lhIHNpc3RlbWkgYmHEn2zEsSBkZcSfaWxrZW4geWEgZGEgc2FsdC1va3VudXJcbiIKKyJiYcSfbMSxeWtlbiB0ZW1pemxlbmViaWxpci5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAiZMO8xJ/DvG0gdXp1bmx1xJ91IGhhdGFsxLEgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorIywgZnV6enkKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAiLSBkw7zEn8O8bSB0YXJhbWFzxLEgYmHFn2xhdMSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpcGUgd2lkdGggdG8gJWRcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB0byAnJXMnXG4iCittc2dzdHIgIsWeaW1kaWtpIGJhxJ9sYW1hIHNhecSxc8SxICVkIG9sYXJhayBiZWxpcmxlbml5b3JcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAiJXM6IGfDvG5sw7xrIGRvc3lhc8SxbmEgZ8O2cmUga3VydGFyxLFsxLF5b3JcbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAiWWluZSBkZSBkZXZhbSBlZGlsc2luIG1pPyAoZS9oKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIllpbmUgZGUgZGV2YW0gZWRpbHNpbiBtaT8gKGUvaCkgIgorCisjOiBtaXNjL3V0aWwuYzoxMzMKK21zZ2lkICJta2UyZnMgZm9yY2VkIGFueXdheS4gIEhvcGUgL2V0Yy9tdGFiIGlzIGluY29ycmVjdC5cbiIKK21zZ3N0ciAibWtlMmZzIG4nb2x1cnNhIG9sc3VuIMOnYWzEscWfdMSxcsSxbGFjYWsuIMSwbsWfYWxsYWggL2V0Yy9tdGFiIHlhbmzEscWfdMSxci5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICJidXJhZGEgYmlyICVzIHlhcMSxbG1heWFjYWshXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJta2UyZnMgbmUgb2x1cnNhIG9sc3VuIMOnYWzEscWfdMSxcsSxbGFjYWsuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBqb3VybmFsIG9wdGlvbnMhXG4iCittc2dzdHIgIkfDvG5sw7xrIHNlw6dlbmVrbGVyaSBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxIVxuIgorCisjOiBtaXNjL3V0aWwuYzoxODYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICJHw7xubMO8ayBkb3N5YXPEsSBzw7xwZXJibG/En3UgdGFuxLFtIG51bWFyYXPEsSBidWx1bmFtYWTEsSIKKworIzogbWlzYy91dGlsLmM6MjEzCisjLCBmdXp6eQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkfDvG5sw7xrIHNlw6dlbmVrbGVyaSBoYXRhbMSxIGJlbGlydGlsbWnFny5cbiIKKyJcbiIKKyJHw7xubMO8ayBzZcOnZW5la2xlcmkgJ2lzaW09ZGXEn2VyJyDDp2lmdGxlcmkgaGFsaW5kZVxuIgorInZpcmfDvGxsZXJsZSBheXLEsWxhcmFrIHZlcmlsaXIuXG4iCisiXG4iCisiR2XDp2VybGkgZ8O8bmzDvGtsZW1lIHNlw6dlbmVrbGVyaTpcbiIKKyJcdHNpemU9PE1CIG9sYXJhayBnw7xubMO8ayB1enVubHXEn3U+XG4iCisiXHRkZXZpY2U9PGfDvG5sw7xrIGRvc3lhc8SxbsSxbiBidWx1bmFjYcSfxLEgYXlnxLF0PlxuIgorIlxuIgorIkfDvG5sw7xrIGRvc3lhc8SxbsSxbiB1enVubHXEn3UgMTAyNCBpbGUgMTAyNDAwIGJsb2sgYXJhc8SxbmRhIHNlw6dpbGViaWxpci5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorIkRvc3lhIHNpc3RlbWkgYmlyIGfDvG5sw7xrIGnDp2luIMOnb2sga8O8w6fDvGtcbiIKKworIzogbWlzYy91dGlsLmM6MjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgcmVxdWVzdGVkIGpvdXJuYWwgc2l6ZSBpcyAlZCBibG9ja3M7IGl0IG11c3QgYmVcbiIKKyJiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGJsb2Nrcy4gIEFib3J0aW5nLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkfDvG5sw7xrIGRvc3lhc8SxIGRvc3lhIHNpc3RlbWkgacOnaW4gw6dvayBiw7x5w7xrLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorIkJ1IGRvc3lhIHNpc3RlbWkgaGVyICVkIGJhxJ9sYW1hZGEgYmlyIHlhIGRhICVnIGfDvG5kZSBiaXIsIGhhbmdpc2kgw7ZuY2VcbiIKKyJnZXLDp2VrbGXFn2lyc2UsIG90b21hdGlrIG9sYXJhayBkZW5ldGxlbmVjZWt0aXIuIEJ1IGRlxJ9lcmxlcmkgZGXEn2nFn3Rpcm1la1xuIgorImnDp2luIHR1bmUyZnMneWkgLWMgdmV5YSAtaSBzZcOnZW5lxJ9pIGlsZSDDp2FsxLHFn3TEsXLEsW7EsXouXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0OQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1kXSBbLXAgcGlkZmlsZV0gWy1zIHNvY2tldHBhdGhdIFstVCB0aW1lb3V0XVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1MQorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgWy1yfHRdIFstbiBudW1dIFstcyBzb2NrZXRwYXRoXVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1CisjLCBmdXp6eQorbXNnaWQgImJhZCBhcmd1bWVudHMiCittc2dzdHIgIiVzOiBhcmfDvG1hbiBzYXnEsXPEsSBmYXpsYVxuIgorCisjOiBtaXNjL3V1aWRkLmM6MTczCittc2dpZCAiY29ubmVjdCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjIwMAorbXNnaWQgInJlYWQgY291bnQiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICJUYXJpaC96YW1hbiBiZWxpcnRlY2kgw6fDtnrDvG1sZW5lbWVkaTogJXMiCisKKyM6IG1pc2MvdXVpZGQuYzozMDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGJpbmQgdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgImV4dDIgc8O8cGVyYmxvxJ91IGJ1bHVuYW1hZMSxLCIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgbGlzdGVuIG9uIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICIlaSB5ZSB0ZWtyYXIgYmHEn2xhbsSxbGFtxLF5b3I6ICVtXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgZnJvbSBjbGllbnQsIGxlbiA9ICVkXG4iCittc2dzdHIgIkTDvMSfw7xtICVpIG9rdW51cmtlbiBoYXRhIG9sdcWfdHU6ICVtXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6MzkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCByYW5kb20gVVVJRDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCB0aW1lIFVVSUQgJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCAlZCBzdWJzZXF1ZW50IFVVSURzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvcGVyYXRpb24gJWRcbiIKK21zZ3N0ciAiRWsgw7Z6ZWxsaWsgc8O8csO8bcO8IGdlw6dlcnNpei5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjUzNCBtaXNjL3V1aWRkLmM6NTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICIvbG9zdCtmb3VuZCBkaXppbmkgb2x1xZ90dXJ1bHVya2VuIGhhdGEgKCVzKTogJW1cbiIKKworIzogbWlzYy91dWlkZC5jOjU0NAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBhbmQgc3Vic2VxdWVudCBVVUlEXG4iCittc2dpZF9wbHVyYWwgIiVzIGFuZCBzdWJzZXF1ZW50ICVkIFVVSURzXG4iCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIiIKKworIzogbWlzYy91dWlkZC5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIHJlcGx5IGxlbmd0aCBmcm9tIHNlcnZlciAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbc2XDp2VuZWtdXG4iCisiRXZyZW5kZWtpIHRlayB0YW7EsW1sYXnEsWPEsXnEsSAoVVVJRCkgb2x1xZ90dXJ1ci5cbiIKKyJcbiIKKyJTZcOnZW5la2xlcjpcbiIKKyIgICAtciAgICAgIHJhc2dlbGUgc2F5xLEgw7xyZXRlY2kga3VsbGFuxLFsYXJhayByYXNnZWxlIGJpciBudW1hcmEgw7xyZXRpbGlyXG4iCisiICAgLXQgICAgICB2YXJzYSBldGVybmV0IGthcnTEsW7EsW4gYWRyZXNpIHZlIHNpc3RlbSB6YW1hbsSxbmEgZ8O2cmUgYmlyXG4iCisiICAgICAgICAgICBudW1hcmEgw7xyZXRpclxuIgorIlxuIgorIsOHZXZpcmkgaGF0YWxhcsSxbsSxIDxnbnUtdHJAYmVsZ2VsZXIub3JnPiBhZHJlc2luZSBiaWxkaXJpbml6LlxuIgorIlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBFayBkw7Zrw7xtOlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiI1x0TnVtID0gJWQsIEJveSA9ICVkLCDEsG1sZcOnID0gJWQsIFPEsXJhbMSxID0gJWRcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWQgZGVidWdfZmxhZ3NdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSAiCisiWy16IHVuZG9fZmlsZV1cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkt1bGxhbsSxbcSxOiAlcyBbc2XDp2VuZWtsZXJdIGF5Z8SxdCBbeWVuaS1ib3l1dF1cbiIKKyJcbiIKKyJEb3N5YSBzaXN0ZW1pbmkgeWVuaWRlbiBib3l1dGxhbmTEsXLEsXIuXG4iCisiXG4iCisiU2XDp2VuZWtsZXI6XG4iCisiICAgLWQgYmF5cmFrbGFyICAgIGhhdGEgYXnEsWtsYW1hIHNlw6dlbmXEn2kgaWxlIGRlcmxlbm1pxZ9zZSBoYXRhIGF5xLFrbGFtYVxuIgorIiAgICAgICAgICAgICAgICAgICBzZXZpeWVsZXJpIGJlbGlydGlsaXJcbiIKKyIgICAtZiAgICAgICAgICAgICAgYmF6xLEgZ8O8dmVubGlrIGRlbmV0aW1sZXJpbmkgZW5nZWxsZXllcmVrIGJveXV0bGFuZMSxcm1heWFcbiIKKyIgICAgICAgICAgICAgICAgICAgem9ybGFyXG4iCisiICAgLUYgICAgICAgICAgICAgIGJhxZ9sYW1hZGFuIMO2bmNlIGRvc3lhIHNpc3RlbWluaW4gdGFtcG9uIGJlbGxla2xlcmluaVxuIgorIiAgICAgICAgICAgICAgICAgICBib8WfYWx0xLFyXG4iCisiICAgLXAgICAgICAgICAgICAgIGnFn2xlbSBpbGVybGV5acWfaW5pIGfDtnN0ZXJlbiBiaXIgw6d1YnVrIMO8cmV0aXJcbiIKKyJcbiIKKyLDh2V2aXJpIGhhdGFsYXLEsW7EsSA8Z251LXRyQGJlbGdlbGVyLm9yZz4gYWRyZXNpbmUgYmlsZGlyaW5pei5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIkRvc3lhIGluZGVrc2kgdGFibG9zdSBnZW5pxZ9sZXRpbGl5b3IiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzUKK21zZ2lkICJSZWxvY2F0aW5nIGJsb2NrcyIKK21zZ3N0ciAiQmxva2xhciB5ZW5pZGVuIGtvbnVtbGFuZMSxcsSxbMSxeW9yIgorCisjOiByZXNpemUvbWFpbi5jOjc4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIkRvc3lhIGluZGVrc2kgdGFibG9zdSB0YXJhbsSxeW9yIgorCisjOiByZXNpemUvbWFpbi5jOjgxCittc2dpZCAiVXBkYXRpbmcgaW5vZGUgcmVmZXJlbmNlcyIKK21zZ3N0ciAiRG9zeWEgaW5kZWtzaSBiYcWfdnVydWxhcsSxIGfDvG5jZWxsZW5peW9yIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICJEb3N5YSBpbmRla3NpIHRhYmxvc3UgdGHFn8SxbsSxeW9yIgorCisjOiByZXNpemUvbWFpbi5jOjg3Cittc2dpZCAiVW5rbm93biBwYXNzPyE/IgorbXNnc3RyICJiaWxpbm1leWVuIGdlw6dpxZ8/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICJHZcOnacWfICVkIGJhxZ9sxLF5b3IgKGVuIMOnb2sgPSAlbHUpXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzozNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyIKK21zZ3N0ciAiJXMgYcOnxLFsxLFya2VuIgorCisjOiByZXNpemUvbWFpbi5jOjM3MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIHN0YXQgaW5mb3JtYXRpb24gZm9yICVzIgorbXNnc3RyICIlcyBpw6dpbiBkdXJ1bSBiaWxnaXNpIGFsxLFuxLFya2VuIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkzDvHRmZW4gw7ZuY2UgJ2UyZnNjayAtZiAlcycga29tdXR1bnUgw6dhbMSxxZ90xLFyxLFuLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgImTDvMSfw7xtIHV6dW5sdcSfdSBoYXRhbMSxIC0gJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1MjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICJHw7xubMO8ayBheWfEsXTEsW7EsW4gYmxvayBib3l1ICglZCkgYXNnYXJpIGJsb2sgYm95dW5kYW4gKCVkKSBrw7zDp8O8a1xuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBjb250YWluaW5nIHBhcnRpdGlvbiAob3IgZGV2aWNlKSBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuIgorIllvdSByZXF1ZXN0ZWQgYSBuZXcgc2l6ZSBvZiAlbGx1IGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRpc2sgYsO2bMO8bcO8ICh5YSBkYSBheWfEsXQpIHNhZGVjZSAldSAoJWRrKSBibG9rIGnDp2VyaXlvci5cbiIKKyJTaXogaXNlICV1IGJsb2tsdWsgYmlyIGJveXV0IGlzdGVkaW5pei5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHNldCBhbmQgdW5zZXQgNjRiaXQgZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSBvbiBhIGZpbGVzeXN0ZW0gdGhhdCBpcyBsYXJnZXIgdGhhbiAyXjMyICIKKyJibG9ja3MuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgd2hpbGUgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiIgorImhhc19qb3VybmFsIGJheXJhxJ/EsSBzYWRlY2UgZG9zeWEgc2lzdGVtaSBiYcSfbMSxIGRlxJ9pbGtlbiB5YSBkYSBzYWx0LW9rdW51clxuIgorImJhxJ9sxLF5a2VuIHRlbWl6bGVuZWJpbGlyLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU4MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVuYWJsZSB0aGUgZXh0ZW50cyBmZWF0dXJlIHdpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKyJmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTg3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkRvc3lhIHNpc3RlbWkgemF0ZW4gJXUgYmxvayB1enVubHVrdGEuICBIacOnYmlyIMWfZXkgeWFwxLFsbWFkxLEhXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5IDY0LWJpdC5cbiIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaW5kZSBiaXIgZ8O8bmzDvGsgZG9zeWFzxLEgemF0ZW4gdmFyLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgIkRvc3lhIHNpc3RlbWluZGUgYmlyIGfDvG5sw7xrIGRvc3lhc8SxIHphdGVuIHZhci5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmluIHNvbiBkZW5ldGltIHphbWFuxLEgJXMgeWFwxLFsxLF5b3JcbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmluIHNvbiBkZW5ldGltIHphbWFuxLEgJXMgeWFwxLFsxLF5b3JcbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisiJXMgw7x6ZXJpbmRla2kgZG9zeWEgc2lzdGVtaSDFn2ltZGkgJXUgYmxvayB1enVubHVrdGEuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZXNpemUgJXMiCittc2dzdHIgIi0gJXMgeWVuaWRlbiBib3l1dGxhbmTEsXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIG9uICVzIGlzIG5vdyAlbGx1ICglZGspIGJsb2NrcyBsb25nLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXMgw7x6ZXJpbmRla2kgZG9zeWEgc2lzdGVtaSDFn2ltZGkgJXUgYmxvayB1enVubHVrdGEuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjQ1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgIi0gc3RhdCAlcyB5YXDEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogcmVzaXplL29ubGluZS5jOjgxCisjLCBmdXp6eQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICJExLHFnyBnw7xubMO8ayBidSBkb3N5YSBzaXN0ZW1pbmkgZGVzdGVrbGVtaXlvclxuIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTE0CisjLCBmdXp6eQorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIiIKKyJEb3N5YXNpc3RlbWkgw7Z6ZWxsaWtsZXJpIDAgcmV2aXp5b25sdSBkb3N5YXNpc3RlbWxlcmluZGUgZGVzdGVrbGVubWl5b3JcbiIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorIywgZnV6enkKK21zZ2lkICJOb3QgZW5vdWdoIHJlc2VydmVkIGdkdCBibG9ja3MgZm9yIHJlc2l6aW5nIgorbXNnc3RyICItIHllbmlkZW4gYm95dXRsYW1hIGnDp2luIGJsb2tsYXIgeWVkZWtsZW5pcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjkKKyMsIGZ1enp5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICJIdXJkLCBkb3N5YSB0w7xyw7wgw7Z6ZWxsacSfaW5pIGRlc3Rla2xlbWV6LlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBtb3VudHBvaW50ICVzIgorbXNnc3RyICIiCisiXG4iCisiXHQlcyDDvHplcmluZGVraSBnw7xubMO8ayBhw6fEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dVxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvb25saW5lLmM6MTY0IHJlc2l6ZS9vbmxpbmUuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiLSB5ZW5pZGVuIGJveXV0bGFtYSBpw6dpbiBibG9rbGFyIHllZGVrbGVuaXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCisjLCBmdXp6eQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiRMSxxZ8gZ8O8bmzDvGsgYnUgZG9zeWEgc2lzdGVtaW5pIGRlc3Rla2xlbWl5b3JcbiIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMzAKKyMsIGZ1enp5Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiLSBkxLHFnyBnw7xubMO8ayBhw6fEsWxtYXlhIMOnYWzEscWfxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgIi0gJXMgYcOnxLFsbWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJ5ZWRlayBibG9rbGFyIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgIm1ldGEtdmVyaSBibG9rbGFyxLEiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMzg1IHJlc2l6ZS9yZXNpemUyZnMuYzoyMzE3CisjLCBmdXp6eQorbXNnaWQgIm5ldyBtZXRhIGJsb2NrcyIKK21zZ3N0ciAibWV0YS12ZXJpIGJsb2tsYXLEsSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAiQnUgb2xtYW1hbMSxeWTEsTogYm95dXRsYW5kxLFyxLFya2VuIGTDvMSfw7xtw7wga2F5YmV0dGlrIVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB1bml4IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGdlbmVyaWNfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHRlc3QgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBFeHQyIEltYWdlIEhlYWRlciIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMAorIywgZnV6enkKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJnw7xubMO8ayBkb3N5YXPEsSBzdXBlciBibG/En3Ugb2t1bnV5b3JcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMxCittc2dpZCAiRmlsZXN5c3RlbSByZXZpc2lvbiB0b28gaGlnaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzMKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgcmVhZCBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiIgorIiBcbiIKKyIgIEdydXAgdGFuxLFtbGF5xLFjxLE6ICAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorIywgZnV6enkKK21zZ2lkICJDYW4ndCB3cml0ZSBncm91cCBkZXNjcmlwdG9ycyIKK21zZ3N0ciAiIgorIiBcbiIKKyIgIEdydXAgdGFuxLFtbGF5xLFjxLE6ICAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNQorbXNnaWQgIkNvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4CisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiZMO8xJ/DvG0gYml0ZcWfbGVtbGVyaSB5YXrEsWzEsXlvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5CisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJkw7zEn8O8bSBiaXRlxZ9sZW1sZXJpIHlhesSxbMSxeW9yIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgImJsb2sgYml0ZcWfbGVtbGVyaSB5YXrEsWzEsXlvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHJlYWQgYSBibG9jayBiaXRtYXAiCittc2dzdHIgImTDvMSfw7xtIHZlIGJsb2sgYml0ZcWfbGVtbGVyaSBva3VudXlvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCisjLCBmdXp6eQorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICItIGTDvMSfw7xtIHRhYmxvc3VuYSB5YXrEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDMKKyMsIGZ1enp5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiRG9zeWEgaW5kZWtzaSB0YWJsb3N1IHRhcmFuxLF5b3IiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKKyMsIGZ1enp5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5leHBlY3RlZCBibG9jayBzaXplIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmluIHV6dW5sdcSfdSBnw7Zyw7xuw7xyZGVraSB1enVubHVrdGFuIGLDvHnDvGsuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ3Cittc2dpZCAiQXR0ZW1wdCB0byByZWFkIGJsb2NrIGZyb20gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCByZWFkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OAorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgYmxvY2sgdG8gZmlsZXN5c3RlbSByZXN1bHRlZCBpbiBzaG9ydCB3cml0ZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDkKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIHRoZSBkaXJlY3RvcnkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUwCisjLCBmdXp6eQorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICIiCisiIFxuIgorIiAgIETDvMSfw7xtIGJpdGXFn2xlbWk6ICAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MQorIywgZnV6enkKK21zZ2lkICJCbG9jayBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAiICAgIEJsb2sgYml0ZcWfbGVtaTogICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUyCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJCbG9rIHNhecSxc8SxIGt1cmFsZMSxxZ/EsSFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIgorbXNnc3RyICJCbG9rIHNhecSxc8SxIGt1cmFsZMSxxZ/EsSFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU1Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU3Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OAorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU5Cittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjAKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NAorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICIldSBkw7zEn8O8bcO8bsO8biBkb2xheWzEsSBibG9rbGFyxLEgb2t1bnV5b3IiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NQorIywgZnV6enkKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiJXUgZMO8xJ/DvG3DvG7DvG4gZG9sYXlsxLEgYmxva2xhcsSxIG9rdW51eW9yIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKKyMsIGZ1enp5Cittc2dpZCAiSWxsZWdhbCB0cmlwbHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIiV1IGTDvMSfw7xtw7xuw7xuIGRvbGF5bMSxIGJsb2tsYXLEsSBva3VudXlvciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiICAgIEJsb2sgYml0ZcWfbGVtaTogICIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4CisjLCBmdXp6eQorbXNnaWQgIklub2RlIGJpdG1hcHMgYXJlIG5vdCB0aGUgc2FtZSIKK21zZ3N0ciAiIgorIiBcbiIKKyIgICBEw7zEn8O8bSBiaXRlxZ9sZW1pOiAgIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzAKK21zZ2lkICJBIGJsb2NrIGdyb3VwIGlzIG1pc3NpbmcgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzQKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzgKKyMsIGZ1enp5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAiIgorIkRvc3lhc2lzdGVtaSDDtnplbGxpa2xlcmkgMCByZXZpenlvbmx1IGRvc3lhc2lzdGVtbGVyaW5kZSBkZXN0ZWtsZW5taXlvclxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKKyMsIGZ1enp5Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgcmVhZC1vbmx5IGZlYXR1cmUocykiCittc2dzdHIgIiIKKyJEb3N5YXNpc3RlbWkgw7Z6ZWxsaWtsZXJpIDAgcmV2aXp5b25sdSBkb3N5YXNpc3RlbWxlcmluZGUgZGVzdGVrbGVubWl5b3JcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgwCittc2dpZCAiSU8gQ2hhbm5lbCBmYWlsZWQgdG8gc2VlayBvbiByZWFkIG9yIHdyaXRlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MQorIywgZnV6enkKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgIkFheXLEsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCisjLCBmdXp6eQorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIkRvc3lhIHNpc3RlbWkgdMO8cmxlcmkgacOnaW4gYmVsbGVrIGF5csSxbGFtYWTEsVxuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODQKKyMsIGZ1enp5Cittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGlub2RlIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAiRG9zeWEgc2lzdGVtaSB0w7xybGVyaSBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg3Cittc2dpZCAiRmlsZSBub3QgZm91bmQgYnkgZXh0Ml9sb29rdXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg4Cittc2dpZCAiRmlsZSBvcGVuIHJlYWQtb25seSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKKyMsIGZ1enp5Cittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICJEw7zEn8O8bSAlMyRkIGRla2kgZGl6aW4gYmxva3UgJTEkdSAoIyUyJGQpIGJvxZ9cbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiR8O8bmzDvGsgc8O8cGVyYmxvxJ91IHlvayFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk2Cittc2dpZCAiSm91cm5hbCBtdXN0IGJlIGF0IGxlYXN0IDEwMjQgYmxvY2tzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NworbXNnaWQgIlVuc3VwcG9ydGVkIGpvdXJuYWwgdmVyc2lvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3IgbG9hZGluZyBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICItIGTEscWfIGfDvG5sw7xrIGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKKyMsIGZ1enp5Cittc2dpZCAiSm91cm5hbCBub3QgZm91bmQiCittc2dzdHIgIkfDvG5sw7xrIHPDvHBlcmJsb8SfdSB5b2shXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAxCisjLCBmdXp6eQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiYWVrIMO2emVsbGlrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAyCittc2dpZCAiQ2Fubm90IGNyZWF0ZSBmaWxlc3lzdGVtIHdpdGggcmVxdWVzdGVkIG51bWJlciBvZiBpbm9kZXMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0CisjLCBmdXp6eQorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICI8R3J1cCB0YW7EsW1sYXnEsWPEsSBkw7zEn8O8bcO8PiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorIywgZnV6enkKK21zZ2lkICJUREI6IEludmFsaWQgcGFyYW1ldGVyIgorbXNnc3RyICInc3RyaWRlJyBwYXJhbWV0cmVzaSBnZcOnZXJzaXo6ICVzXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTUKK21zZ2lkICJUREI6IFJlY29yZCBkb2VzIG5vdCBleGlzdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE2Cittc2dpZCAiVERCOiBXcml0ZSBub3QgcGVybWl0dGVkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTcKK21zZ2lkICJFeHQyZnMgZGlyZWN0b3J5IGJsb2NrIGxpc3QgaXMgZW1wdHkiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgZ2VuZXJpYyBiaXRtYXAiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzEzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE2IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE5IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMzCittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBleHRlbnQgbWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM1Cittc2dpZCAiTm8gJ25leHQnIGV4dGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzgKK21zZ2lkICJObyAnZG93bicgZXh0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQxCittc2dpZCAiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCisjLCBmdXp6eQorbXNnaWQgIkV4dGVudCBub3QgZm91bmQiCittc2dzdHIgIi9sb3N0K2ZvdW5kIGRpemluaSB5b2suICAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDcKK21zZ2lkICJDYW4ndCBjaGVjayBpZiBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgZHVlIHRvIG1pc3NpbmcgbXRhYiBmaWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTMKK21zZ2lkICJNTVA6IHVuZGVyZ29pbmcgYW4gdW5rbm93biBvcGVyYXRpb24iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NAorIywgZnV6enkKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJkb3N5YSBzaXN0ZW1pIHV6dW5sdcSfdSBoYXRhbMSxIC0gJXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NgorIywgZnV6enkKK21zZ2lkICJCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0IgorbXNnc3RyICI8R3J1cCB0YW7EsW1sYXnEsWPEsSBkw7zEn8O8bcO8PiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NworbXNnaWQgIklub2RlIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTkKK21zZ2lkICJFeHRlbnQgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50IGJsb2NrIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MQorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MgorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jayIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYzCisjLCBmdXp6eQorbXNnaWQgIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKK21zZ3N0ciAiU8O8cGVyYmxva2xhcsSxbiBidWx1bmR1xJ91IGJsb2tsYXI6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NQorbXNnaWQgIk1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2siCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NgorbXNnaWQgIkV4dDIgZmlsZSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIlPDvHBlcmJsb2tsYXLEsW4gYnVsdW5kdcSfdSBibG9rbGFyOiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OAorbXNnaWQgIkNhbm5vdCBpdGVyYXRlIGRhdGEgYmxvY2tzIG9mIGFuIGlub2RlIGNvbnRhaW5pbmcgaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCisjLCBmdXp6eQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBoYXMgYSBiYWQgaGVhZGVyIgorbXNnc3RyICJhZWsgw7Z6ZWxsaWsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGtleSBub3QgZm91bmQiCittc2dzdHIgImFlayDDtnplbGxpayIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NAorbXNnaWQgIkluc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBleHRlbmRlZCBhdHRyaWJ1dGUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorbXNnaWQgIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc3Cittc2dpZCAiTm8gYmxvY2sgZm9yIGFuIGlub2RlIHdpdGggaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NAorbXNnaWQgIldyb25nIHVuZG8gZmlsZSBmb3IgdGhpcyBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODUKKyMsIGZ1enp5Cittc2dpZCAiRmlsZSBzeXN0ZW0gaXMgY29ycnVwdGVkIgorbXNnc3RyICJEb3N5YSBzaXN0ZW1pbmluIHV6dW5sdcSfdSBnw7Zyw7xuw7xyZGVraSB1enVubHVrdGFuIGLDvHnDvGsuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg2Cittc2dpZCAiQmFkIENSQyBkZXRlY3RlZCBpbiBmaWxlIHN5c3RlbSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg3CisjLCBmdXp6eQorbXNnaWQgIlRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiR8O8bmzDvGsgc8O8cGVyYmxvxJ91IHlvayFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIkRvc3lhIHNpc3RlbWluaW4gdXp1bmx1xJ91IGfDtnLDvG7DvHJkZWtpIHV6dW5sdWt0YW4gYsO8ecO8ay4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTEKK21zZ2lkICJQcm9maWxlIHZlcnNpb24gMC4wIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKKyMsIGZ1enp5Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiLSAvbG9zdCtmb3VuZCBkaXppbmkgb2x1xZ90dXJ1bHVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNAorIywgZnV6enkKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiLSAvbG9zdCtmb3VuZCBkaXppbmkgb2x1xZ90dXJ1bHVya2VuIGhhdGEgb2x1xZ90dSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcHJvZmlsZV9zZWN0aW9uIG9iamVjdCIKK21zZ3N0ciAiR2XDp2Vyc2l6IGRvc3lhIHNpc3RlbWkgc2XDp2VuZcSfaTogJXNcbiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMworbXNnaWQgIk5vIG1vcmUgc2VjdGlvbnMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzcKKyMsIGZ1enp5Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgIkRvc3lhIGtvcHlhbGFuYW1hZMSxOiAlbVxuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM4Cittc2dpZCAiU2VjdGlvbiBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM5Cittc2dpZCAiSW52YWxpZCBib29sZWFuIHZhbHVlIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MQorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX2ZpbGVfZGF0YV90IgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgImJhxJ9sYW1hIHNhecSxc8SxIGhhdGFsxLEgLSAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiYmHEn2xhbWEgc2F5xLFzxLEgaGF0YWzEsSAtICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRjcmVhdGVkIG9uICVzIgorbXNnc3RyICIiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTgwCisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlICVzIGRvZXMgbm90IGV4aXN0IGFuZCBubyBzaXplIHdhcyBzcGVjaWZpZWQuXG4iCittc2dzdHIgIiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAib2xhxJ9hbiBkb3N5YSIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiZTJsYWJlbDogJXMgYcOnxLFsYW3EsXlvclxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxOTQKK21zZ2lkICIiCisiXG4iCisiVGhlIGRldmljZSBhcHBhcmVudGx5IGRvZXMgbm90IGV4aXN0OyBkaWQgeW91IHNwZWNpZnkgaXQgY29ycmVjdGx5P1xuIgorbXNnc3RyICIiCisiXG4iCisiQXlnxLF0IGfDtnLDvG5tw7x5b3I7IGRvxJ9ydSBiZWxpcnR0acSfaW5pemUgZW1pbiBtaXNpbml6P1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIGJsb2sgw7Z6ZWxsaWtsaSBiaXIgYXlnxLF0IGRlxJ9pbC5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjM4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiIGhhdGFsxLEgYmlyIGRvc3lhIHNpc3RlbWkgacOnZXJpeW9yIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAiIGhhdGFsxLEgYmlyIGRvc3lhIHNpc3RlbWkgacOnZXJpeW9yIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGAlcycgZGF0YVxuIgorbXNnc3RyICIgaGF0YWzEsSBiaXIgZG9zeWEgc2lzdGVtaSBpw6dlcml5b3IiCisKKyN+IG1zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayBvbiB0aGUgZmlsZXN5c3RlbS5cbiIKKyN+IG1zZ3N0ciAiTMO8dGZlbiBkb3N5YSBzaXN0ZW1pbmRlIGUyZnNjayDDp2FsxLHFn3TEsXLEsW4uXG4iCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICInc3RyaWRlJyBwYXJhbWV0cmVzaSBnZcOnZXJzaXo6ICVzXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICIiCisjfiAiRMO8xJ/DvG0gJWkgc8Sxa8SxxZ90xLFybWEgZGVzdGVrbGVubWV5ZW4gZG9zeWEgc2lzdGVtaW5kZSBzxLFrxLHFn3TEsXJtYSBiYXlyYcSfxLEgIgorI34gImnDp2VyaXlvci4gICIKKworI34gbXNnaWQgIkBBIEBhIEBiICViLiAgIgorI34gbXNnc3RyICJFayDDtnplbGxpa2xlciBibG/En3UgJWIgYXlyxLFsxLFya2VuIGhhdGEuICAiCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICJVeWFyxLE6IHPEsWvEscWfdMSxcm1hIGRlc3RlxJ9pIGRlbmV5c2VsZGlyLlxuIgorCisjLCBmdXp6eQorI34gbXNnaWQgIiIKKyN+ICIlczogZTJmc2NrIG5vdCBjb21waWxlZCB3aXRoIEhUUkVFIHN1cHBvcnQsXG4iCisjfiAiXHRidXQgZmlsZXN5c3RlbSAlcyBoYXMgSFRSRUUgZGlyZWN0b3JpZXMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJFMmZzY2sgSFRSRUUgZGVzdGXEn2kgaWxlIGRlcmxlbm1lbWnFnyxcbiIKKyN+ICJcdGFtYSBkb3N5YSBzaXN0ZW1pICVzIEhUUkVFIGRpemlubGVyaSBpw6dlcml5b3IuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHplcm9pemluZyBidWZmZXIiCisjfiBtc2dzdHIgIi0gc8SxZsSxcmxhbWEgdGFtcG9uIGJlbGxlxJ9pIGF5csSxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiLCB1bnVzZWQgaW5vZGVzICV1XG4iCisjfiBtc2dzdHIgImTDvMSfw7xtIHNhecSxc8SxIGhhdGFsxLEgLSAlcyIKKworIywgZnV6enkKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVhZCB0aGUgZmlsZSBzeXN0ZW0gZGF0YSBcbiIKKyN+IG1zZ3N0ciAiLSBkb3N5YSBzaXN0ZW1pIHRhYmxvbGFyxLEgYXlyxLFsbWF5YSDDp2FsxLHFn8SxbMSxcmtlbiBoYXRhIG9sdcWfdHUiCisKKyMsIGZ1enp5CisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgIiVzIGHDp8SxbMSxcmtlbiIKKworIywgZnV6enkKKyN+IG1zZ2lkICJGYWlsZWQgdG8gb3BlbiAlc1xuIgorI34gbXNnc3RyICItICVzIGHDp8SxbG1heWEgw6dhbMSxxZ/EsWzEsXJrZW4gaGF0YSBvbHXFn3R1IgorCisjLCBmdXp6eQorI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBxdW90YSBvcHRpb25zIVxuIgorI34gbXNnc3RyICJTZcOnZW5la2xlcmkgw6fDtnrDvG1sZW1layBpw6dpbiBiZWxsZWsgYXlyxLFsYW1hZMSxIVxuIgorCisjLCBmdXp6eQorI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGRiIGZpbGVuYW1lXG4iCisjfiBtc2dzdHIgIkRvc3lhIHNpc3RlbWkgdMO8cmxlcmkgacOnaW4gYmVsbGVrIGF5csSxbGFtYWTEsVxuIgorCisjfiBtc2dpZCAiJXMgaXMgZW50aXJlIGRldmljZSwgbm90IGp1c3Qgb25lIHBhcnRpdGlvbiFcbiIKKyN+IG1zZ3N0ciAiJXMgZGlza2luIHRhbWFtxLEhIEJpciBkaXNrIGLDtmzDvG3DvCBkZcSfaWwhXG4iCisKKyN+IG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAlcyAtLS0gJXNcbiIKKyN+IG1zZ3N0ciAic3RhdCAlcyB5YXDEsWxhbWFkxLEgLS0tICVzXG4iCisKKyN+IG1zZ2lkICI8VGhlIEFDTCBpbmRleCBpbm9kZT4iCisjfiBtc2dzdHIgIjxBQ0wgaW5kZWtzaW5pbiBkw7zEn8O8bcO8PiIKKworI34gbXNnaWQgIjxUaGUgQUNMIGRhdGEgaW5vZGU+IgorI34gbXNnc3RyICI8QUNMIHZlcmlzaW5pbiBkw7zEn8O8bcO8PiIKKworI34gbXNnaWQgIkBTIGRvZXNuJ3QgaGF2ZSBoYXNfQGogZmxhZywgYnV0IGhhcyBleHQzIEBqICVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiU8O8cGVyYmxvayBoYXNfam91cm5hbCBiYXlyYcSfxLEgacOnZXJtaXlvciwgYW1hIGV4dDMgZ8O8bmzDvMSfw7wgJXMgacOnZXJpeW9yLlxuIgorCisjfiBtc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlaS4gZMO8xJ/DvG1kZWtpIGVrIMO2emVsbGlrIGdlw6dlcnNpeiBiaXIgw6fEsXJwxLEgKGhhc2gpIGnDp2VyaXlvciAoJU4pLCAwICIKKyN+ICJvbG1hbMSxXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBjYWxsaW5nIGl0ZXJhdG9yIGZ1bmN0aW9uIgorI34gbXNnc3RyICItIHlpbmVsZW1lIGnFn2xldmkgw6dhxJ9yxLFsxLFya2VuIGhhdGEgb2x1xZ90dSIKKworI34gbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgdGFibGUgKGdyb3VwICVkKSIKKyN+IG1zZ3N0ciAiLSBkw7zEn8O8bSB0YWJsb3N1IG9rdW51cmtlbiBoYXRhIG9sdcWfdHUgKGdydXAgJWQpIgorCisjfiBtc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSAoZ3JvdXAgJWQpIgorI34gbXNnc3RyICItIGTDvMSfw7xtIHRhYmxvc3UgeWF6xLFsxLFya2VuIGhhdGEgb2x1xZ90dSAoZ3J1cCAlZCkiCisKKyN+IG1zZ2lkICJQYXNzIDA6IERvaW5nIGJ5dGUtc3dhcCBvZiBmaWxlc3lzdGVtXG4iCisjfiBtc2dzdHIgIkdlw6dpxZ8gMDogZG9zeWEgc2lzdGVtaW5pbiBiYXl0IHPEsXJhbGFtYXPEsSBkw7x6ZWx0aWxpeW9yXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IHRoZSBmaWxlc3lzdGVtIG11c3QgYmUgZnJlc2hseSBjaGVja2VkIHVzaW5nIGZzY2tcbiIKKyN+ICJhbmQgbm90IG1vdW50ZWQgYmVmb3JlIHRyeWluZyB0byBieXRlLXN3YXAgaXQuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogZG9zeWEgc2l0ZW1pIGZzY2sga3VsbGFuxLFsYXJhayB0YW1hbWVuIGRlbmV0bGVubWVsaSB2ZVxuIgorI34gInRlcnMgYmF5dGxhciBub3JtYWwgZMO8emVuZSBkw7ZuZMO8csO8bG1lZGVuIGJhxJ9sYW5tYW1hbMSxZMSxci5cbiIKKworI34gbXNnaWQgIkJ5dGUgc3dhcCIKKyN+IG1zZ3N0ciAiVGVycyBiYXl0bMSxIgorCisjfiBtc2dpZCAiQnl0ZS1zd2FwcGluZyBmaWxlc3lzdGVtcyBub3QgY29tcGlsZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIGUyZnNja1xuIgorI34gbXNnc3RyICJlMmZzY2snbsSxbiBidSBzw7xyw7xtw7xuZGUgZGVybGVubWVtacWfIHRlcnMgYmF5dGzEsSBzaXN0ZW1sZXIgXG4iCisKKyN+IG1zZ2lkICJJbmNvbXBhdGlibGUgb3B0aW9ucyBub3QgYWxsb3dlZCB3aGVuIGJ5dGUtc3dhcHBpbmcuXG4iCisjfiBtc2dzdHIgIlRlcnMgYmF5dGxhciBkw7x6ZWx0aWxpcmtlbiB1eXVtc3V6IHNlw6dlbmVrbGVyZSBpemluIHZlcmlsbWV6LlxuIgorCisjfiBtc2dpZCAiJXM6IEZpbGVzeXN0ZW0gYnl0ZSBvcmRlciBhbHJlYWR5IG5vcm1hbGl6ZWQuXG4iCisjfiBtc2dzdHIgIiVzIERvc3lhIHNpc3RlbWluZGUgYmF5dGxhciB6YXRlbiBub3JtYWwuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSByZXRyeWluZyB0byB3cml0ZSBibG9jayBiaXRtYXBzIGZvciAlcyIKKyN+IG1zZ3N0ciAiLSAlcyBpw6dpbiBibG9rIGJpdGXFn2xlbWxlcmluaW4geWF6xLFsbWFzxLEgeWluZWxlbmlya2VuIGhhdGEgb2x1xZ90dSIKKworI34gbXNnaWQgImludmFsaWQgYmxvY2tzIHJhbmdlOiAlbHUtJWx1IgorI34gbXNnc3RyICJoYXRhbMSxIGJsb2sgYXJhbMSxxJ/EsTogJWx1LSVsdSIKKworI34gbXNnaWQgIk5vdGU6IFRoaXMgaXMgYSBieXRlLXN3YXBwZWQgZmlsZXN5c3RlbVxuIgorI34gbXNnc3RyICJCaWxnaTogQnUgYmlyIHRlcnMtYmF5dGzEsSBkb3N5YSBzaXN0ZW1pXG4iCisKKyN+IG1zZ2lkICJzaG9ydCB3cml0ZSAob25seSAlZCBieXRlcykgZm9yIHdyaXRpbmcgaW1hZ2UgaGVhZGVyIgorI34gbXNnc3RyICJnw7Zyw7xudMO8IGJhxZ9sxLHEn8SxbsSxIHlhem1hayBpw6dpbiBrxLFzYSB5YXptYSAoc2FkZWNlICVkIGJheXQpIgorCisjfiBtc2dpZCAiaW52YWxpZCBmcmFnbWVudCBzaXplIC0gJXMiCisjfiBtc2dzdHIgInNla21lIGJveXUgaGF0YWzEsSAtICVzIgorCisjfiBtc2dpZCAiV2FybmluZzogZnJhZ21lbnRzIG5vdCBzdXBwb3J0ZWQuICBJZ25vcmluZyAtZiBvcHRpb25cbiIKKyN+IG1zZ3N0ciAiVXlhcsSxOiBzZWttZWxlciBkZXN0ZWtsZW5tZWRpxJ9pbmRlbiAtZiBzZcOnZW5lxJ9pIHlva3NhecSxbMSxeW9yXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiRmlsZXN5c3RlbSB0b28gbGFyZ2UuICBObyBtb3JlIHRoYW4gMioqMzEtMSBibG9ja3NcbiIKKyN+ICJcdCAoOFRCIHVzaW5nIGEgYmxvY2tzaXplIG9mIDRrKSBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4iCisjfiBtc2dzdHIgIiIKKyN+ICJEb3N5YSBzaXN0ZW1pIMOnb2sgYsO8ecO8ay4gIDIqKjMxLTEgYmxva3RhbiBmYXpsYXPEsVxuIgorI34gIlx0ICg0aydsxLFrIGJsb2tsYXJsYSA4VEIgbcO8bWvDvG4pIGRlc3Rla2xlbm1peW9yLiIKKworI34gbXNnaWQgIiIKKyN+ICJcbiIKKyN+ICJXYXJuaW5nOiBzb21lIDIuNCBrZXJuZWxzIGRvIG5vdCBzdXBwb3J0IGJsb2Nrc2l6ZXMgZ3JlYXRlciB0aGFuIDQwOTZcbiIKKyN+ICJcdHVzaW5nIGV4dDMuICBVc2UgLWIgNDA5NiBpZiB0aGlzIGlzIGFuIGlzc3VlIGZvciB5b3UuXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICJVeWFyxLE6IEJhesSxIDIuNCDDp2VraXJkZWtsZXIgZXh0MyBrdWxsYW7EsXJrZW4gNDA5NidkYW4gZGFoYSBiw7x5w7xrIGJsb2tcbiIKKyN+ICJcdGJveWxhcsSxbsSxIGRlc3Rla2xlbWV6LiBCdSBzaXppbiBpw6dpbiBkZSBnZcOnZXJsaXlzZSwgLWIgNDA5NiBodWxsYW7EsW4uXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICJXYXJuaW5nOiAlZC1ieXRlIGlub2RlcyBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtc1xuIgorI34gbXNnc3RyICJVeWFyxLE6ICVkIGJheXRsxLFrIGTDvMSfw7xtbGVyIGJpciDDp29rIHNpc3RlbWRlIGt1bGxhbsSxbWTEscWfxLFkxLFyLlxuIgorCisjfiBtc2dpZCAiSm91cm5hbCBOT1QgcmVtb3ZlZFxuIgorI34gbXNnc3RyICJHw7xubMO8ayBzaWxpbk1FZGlcbiIKKworI34gbXNnaWQgIiIKKyN+ICJcbiIKKyN+ICJUaGUgZmlsZXN5c3RlbSBhbHJlYWR5IGhhcyBzcGFyc2Ugc3VwZXJibG9ja3MgZGlzYWJsZWQuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICJEb3N5YSBzaXN0ZW1pbmRlIHPDvHBlcmJsb2sgYXphbHRtYSBiYXlyYcSfxLEgemF0ZW4gZXRraW4gZGXEn2lsLlxuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgY2xlYXJlZC4gICVzIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAiU8O8cGVyYmxvayBhemFsdG1hIGJheXJhxJ/EsSB0ZW1pemxlbmRpLiAgJXMiCisKKyN+IG1zZ2lkICIjXHRcdCAldSAtPiAldSAoJWQpXG4iCisjfiBtc2dzdHIgIiNcdFx0ICV1IC0+ICV1ICglZClcbiIKKworI34gbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyN+IG1zZ3N0ciAiYml0dGkgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjfiBtc2dpZCAiQ2xvbmUgZHVwbGljYXRlL2JhZCBibG9ja3MiCisjfiBtc2dzdHIgInRla3JhcmzEsS9oYXRhbMSxIGJsb2tsYWxhcsSxIGtvcHlhbGEiCisKKyN+IG1zZ2lkICJFcnJvciBhbGxvY2F0aW5nIEBhIEBiICViLiAgIgorI34gbXNnc3RyICJFayDDtnplbGxpayBibG/En3UgJWIgYXlyxLFsxLFya2VuIGhhdGEgb2x1xZ90dS4gICIKKworI34gbXNnaWQgIiIKKyN+ICJEdXBsaWNhdGUgQGJzIGZvdW5kLi4uIGludm9raW5nIGR1cGxpY2F0ZSBAYiBwYXNzZXMuXG4iCisjfiAiUGFzcyAxQjogUmVzY2FuIGZvciBkdXBsaWNhdGUvYmFkIEBic1xuIgorI34gbXNnc3RyICIiCisjfiAiVGVrcmFybGFubcSxxZ8gYmxva2xhciBidWx1bmR1Li4uIHRla3JhcmxhbmFuIGJsb2sgdGFyYW1hc8SxIGJhxZ9sYXTEsWzEsXlvci5cbiIKKyN+ICJHZcOnacWfIDFCOiB0ZWtyYXJsYW5txLHFny9oYXRhbMSxIGJsb2tsYXIgeWVuaWRlbiB0YXJhbsSxeW9yXG4iCisKKyN+IG1zZ2lkICJEdXBsaWNhdGUvYmFkIEBiKHMpIGluIEBpICVpOiIKKyN+IG1zZ3N0ciAiRMO8xJ/DvG0gJWkgacOnaW5kZWtpIHRla3Jhcmxhbm3EscWfL2hhdGFsxLEgYmxvayhsYXIpOiIKKworI34gbXNnaWQgIiIKKyN+ICJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyN+ICJpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLiAgVmFsaWQgcmFpZCBvcHRpb25zIGFyZTpcbiIKKyN+ICJcdGVhX3Zlcj08ZWFfdmVyc2lvbiAoMSBvciAyKVxuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiQmVsaXJ0aWxlbiBlayBzZcOnZW5la2xlciBoYXRhbMSxLiBFayBzZcOnZW5la2xlciAnPScgacWfYXJldGxpIMOnaWZ0bGVyXG4iCisjfiAidmlyZ8O8bGxlcmxlIGF5csSxbGFyYWsgdmVyaWxpci4gR2XDp2VybGkgcmFpZCBzZcOnZW5la2xlcmk6XG4iCisjfiAiXHRlYV92ZXI9PGVrX8O2emVsbGlrX3PDvHLDvG3DvD4gKDEgeWEgZGEgMilcbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIiAgICAgICB0aGlzb2ZmICAgICBibG9jayBmc19ibGtfc3ogIGJsa3N6IGdycCBsYXN0X21vdW50XG4iCisjfiBtc2dzdHIgIiAgICAgICB0aGlzb2ZmICAgICBibG9rIGRzX2Jsb2tfYm95dSAgYmxva2JveXUgZ3J1cCBzb25fYmHEn2xhbWFcbiIKKworI34gbXNnaWQgIiVzIGZhaWxlZCBmb3IgJXM6ICVzXG4iCisjfiBtc2dzdHIgIiVzICVzIGnDp2luIGJhxZ9hcsSxc8SxejogJXNcbiIKKworI34gbXNnaWQgIkhESU9fR0VUR0VPIGlvY3RsIgorI34gbXNnc3RyICJIRElPX0dFVEdFTyBpb2N0bCIKKworI34gbXNnaWQgIkJMS0dFVFNJWkUgaW9jdGwiCisjfiBtc2dzdHIgIkJMS0dFVFNJWkUgaW9jdGwiCisKKyN+IG1zZ2lkICJGb3JjaWJseSBjbGVhcmluZyBIVFJFRSBmbGFnIG9uIEBpICVkICglcSkuICAoQmV0YSB0ZXN0IGNvZGUpXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJEw7zEn8O8bSAlZCAoJXEpIMO8emVyaW5kZWtpIEhUUkVFIGJheXJhxJ/EsSB6b3JsYSB0ZW1pemxlbml5b3IuICAoQmV0YSB0ZXN0ICIKKyN+ICJrb2R1KVxuIgorCisjfiBtc2dpZCAiKHVua25vd24gb3MpIgorI34gbXNnc3RyICIoYmlsaW5tZXllbiBpxZ9sLiBzaXN0LikiCisKKyN+IG1zZ2lkICJOdW1iZXIgb2YgZnJlZSBibG9ja3M6ICVkLyVkLCBOZWVkZWQ6ICVkXG4iCisjfiBtc2dzdHIgIlNlcmJlc3QgYmxvayBzYXnEsXPEsTogJWQvJWQsIEdlcmVrZW46ICVkXG4iCisKKyN+IG1zZ2lkICJHb2luZyBpbnRvIGRlc3BlcmF0aW9uIG1vZGUgZm9yIGJsb2NrIGFsbG9jYXRpb25zXG4iCisjfiBtc2dzdHIgIkJsb2sgdGFoc2lzbGVyaW5kZSB1bXV0c3V6IGtpcGUgZ2XDp2lsaXlvclxuIgorCisjfiBtc2dpZCAiTW92aW5nICVkIGJsb2NrcyAldS0+JXVcbiIKKyN+IG1zZ3N0ciAiJWQgYmxvayB0YcWfxLFuxLF5b3IgJXUtPiV1XG4iCisKKyN+IG1zZ2lkICJpbm89JXUsIGJsb2NrY250PSVsbGQsICV1LT4ldVxuIgorI34gbXNnc3RyICJkw7zEn8O8bSA9ICV1LCBibG9ja19zYXnEsXPEsSA9ICVsbGQsICV1LT4ldVxuIgorCisjfiBtc2dpZCAiSW5vZGUgbW92ZWQgJXUtPiV1XG4iCisjfiBtc2dzdHIgIkTDvMSfw7xtIHRhxZ/EsW5kxLEgJXUtPiV1XG4iCisKKyN+IG1zZ2lkICJJbm9kZSB0cmFuc2xhdGUgKGRpcj0ldSwgbmFtZT0lLipzLCAldS0+JXUpXG4iCisjfiBtc2dzdHIgIkTDvMSfw7xtIMOnZXZpcmlzaSAoZGl6aW4gPSAldSwgaXNpbT0gJS4qcywgJXUtPiV1KVxuIgorCisjfiBtc2dpZCAiSXRhYmxlIG1vdmUgZ3JvdXAgJWQgYmxvY2sgJXUtPiV1IChkaWZmICVkKVxuIgorI34gbXNnc3RyICIiCisjfiAiRMO8xJ/DvG0gdGFibG9zdSAlZC4gZ3J1YnVuIGJsb2tsYXLEsSAldSAtPiAldSBhcmFzxLFuZGEgdGHFn8SxbsSxeW9yIChmYXJrICVkKVxuIgorCisjfiBtc2dpZCAiJWQgYmxvY2tzIG9mIHplcm9zLi4uXG4iCisjfiBtc2dzdHIgIiVkIHPEsWbEsXJsxLEgYmxvay4uLlxuIgorCisjfiBtc2dpZCAiSW5vZGUgdGFibGUgbW92ZSBmaW5pc2hlZC5cbiIKKyN+IG1zZ3N0ciAiRMO8xJ/DvG0gdGFibG9zdW51biB0YcWfxLFubWFzxLEgdGFtYW1sYW5kxLEuXG4iCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vdWsuZ21vIGIvZTJmc3Byb2dzL3BvL3VrLmdtbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjg2ZjJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL3VrLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vdWsucG8gYi9lMmZzcHJvZ3MvcG8vdWsucG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZjNWU1YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby91ay5wbwpAQCAtMCwwICsxLDg2NTggQEAKKyMgVWthcmFpbmlhbiB0cmFuc2xhdGlvbiBvZiBFMmZzcHJvZ3MKKyMgQ29weXJpZ2h0IChDKSAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAorIyAgICAgIDIwMTMgYnkgVGhlb2RvcmUgVHMnbworIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZTJmc3Byb2dzIHBhY2thZ2UuCisjCisjICAgICAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLC4KKyMgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4sIDIwMTMuCisjIFl1cmkgQ2hvcm5vaXZhbiA8eXVyY2hvckB1a3IubmV0PiwgMjAxMywgMjAxNCwgMjAxNi4KKyMuIFRoZSBzdHJpbmdzIGluIGUyZnNjaydzIHByb2JsZW0uYyBjYW4gYmUgdmVyeSBoYXJkIHRvIHRyYW5zbGF0ZSwKKyMuIHNpbmNlIHRoZSBzdHJpbmdzIGFyZSBleHBhbmRlZCBpbiB0d28gZGlmZmVyZW50IHdheXMuICBGaXJzdCBvZiBhbGwsCisjLiB0aGVyZSBpcyBhbiBALWV4cGFuc2lvbiwgd2hlcmUgc3RyaW5ncyBsaWtlICJAaSIgYXJlIGV4cGFuZGVkIHRvCisjLiAiaW5vZGUiLCBhbmQgc28gb24uICBJbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciBmb3IgdHJhbnNsYXRvcnMsIHRoZQorIy4gZTJmc3Byb2dzIHBvIHRlbXBsYXRlIGZpbGUgaGFzIGJlZW4gZW5oYW5jZWQgd2l0aCBjb21tZW50cyB0aGF0IHNob3cKKyMuIHRoZSBALWV4cGFuc2lvbiwgZm9yIHRoZSBzdHJpbmdzIGluIHRoZSBwcm9ibGVtLmMgZmlsZS4KKyMuCisjLiBUcmFuc2xhdG9ycyBhcmUgZnJlZSB0byB1c2UgdGhlIEAtZXhwYW5zaW9uIGZhY2lsaXR5IGlmIHRoZXkgc28KKyMuIGNob29zZSwgYnkgcHJvdmlkaW5nIHRyYW5zbGF0aW9ucyBmb3Igc3RyaW5ncyBpbiBlMmZzY2svbWVzc2FnZS5jLgorIy4gVGhlc2UgdHJhbnNsYXRpb24gY2FuIGNvbXBsZXRlbHkgcmVwbGFjZSBhbiBleHBhbnNpb247IGZvciBleGFtcGxlLAorIy4gaWYgImJibG9jayIgKHdoaWNoIGluZGljYXRlZCB0aGF0ICJAYiIgd291bGQgYmUgZXhwYW5kZWQgdG8gImJsb2NrIikKKyMuIGlzIHRyYW5zbGF0ZWQgYXMgImRkYXRlbnZlcmx1c3QiLCB0aGVuICJAZCIgd2lsbCBiZSBleHBhbmRlZCB0bworIy4gImRhdGVudmVybHVzdCIuICBBbHRlcm5hdGl2ZWx5LCB0cmFuc2xhdG9ycyBjYW4gc2ltcGx5IG5vdCB1c2UgdGhlCisjLiBALWV4cGFuc2lvbiBmYWNpbGl0eSBhdCBhbGwuCisjLgorIy4gVGhlIHNlY29uZCBleHBhbnNpb24gd2hpY2ggaXMgZG9uZSBmb3IgZTJmc2NrJ3MgcHJvYmxlbS5jIG1lc3NhZ2VzIGlzCisjLiBhIGR5bmFtaWMgJS1leHBhbnNpb24sIHdoaWNoIGV4cGFuZHMgJWkgYXMgYW4gaW5vZGUgbnVtYmVyLCBhbmQgc28KKyMuIG9uLiAgQSB0YWJsZSBvZiB0aGVzZSBleHBhbnNpb25zIGNhbiBiZSBmb3VuZCBiZWxvdy4gIE5vdGUgdGhhdAorIy4gJS1leHByZXNzaW9ucyB0aGF0IGJlZ2luIHdpdGggIiVEIiBhbmQgIiVJIiBhcmUgdHdvLWNoYXJhY3RlcgorIy4gZXhwYW5zaW9uczsgc28gZm9yIGV4YW1wbGUsICIlSXUiIGV4cGFuZHMgdG8gdGhlIGlub2RlJ3MgdXNlciBpZAorIy4gb3duZXJzaGlwIGZpZWxkIChpbm9kZS0+aV91aWQpLiAgQWxzbyB0aGUgIiVCIiBleHBhbnNpb24gaXMgc3BlY2lhbDoKKyMuIGl0IGNhbiBleHBhbmQgdG8gZWl0aGVyIHRoZSBzdHJpbmcgImluZGlyZWN0IGJsb2NrIiAocG9zc2libHkgcHJlY2VkZWQKKyMuIGJ5IHRoZSB3b3JkICJkb3VibGUiIG9yICJ0cmlwbGUiKSwgb3IgdGhlIHN0cmluZyAiYmxvY2sgIyIgaW1tZWRpYXRlbHkKKyMuIGZvbGxvd2VkIGJ5IGFuIGludGVnZXIgaW5kaWNhdGluZyBhIGJsb2NrIHNlcXVlbmNlIG51bWJlci4KKyMuICAKKyMuIAklYgk8YmxrPgkJCWJsb2NrIG51bWJlcgorIy4gCSVCCSJpbmRpcmVjdCBibG9jayIgfCAiYmxvY2sgIyI8YmxrY291bnQ+CXN0cmluZyB8IHN0cmluZytpbnRlZ2VyCisjLiAJJWMJPGJsazI+CQkJYmxvY2sgbnVtYmVyCisjLiAJJURpCTxkaXJlbnQ+IC0+IGlubwkJaW5vZGUgbnVtYmVyCisjLiAJJURuCTxkaXJlbnQ+IC0+IG5hbWUJc3RyaW5nCisjLiAJJURyCTxkaXJlbnQ+IC0+IHJlY19sZW4KKyMuIAklRGwJPGRpcmVudD4gLT4gbmFtZV9sZW4KKyMuIAklRHQJPGRpcmVudD4gLT4gZmlsZXR5cGUKKyMuIAklZAk8ZGlyPiAJCQlpbm9kZSBudW1iZXIKKyMuIAklZwk8Z3JvdXA+CQkJaW50ZWdlcgorIy4gCSVpCTxpbm8+CQkJaW5vZGUgbnVtYmVyCisjLiAJJUlzCTxpbm9kZT4gLT4gaV9zaXplCisjLiAJJUlTCTxpbm9kZT4gLT4gaV9leHRyYV9pc2l6ZQorIy4gCSVJYgk8aW5vZGU+IC0+IGlfYmxvY2tzCisjLiAJJUlsCTxpbm9kZT4gLT4gaV9saW5rc19jb3VudAorIy4gCSVJbQk8aW5vZGU+IC0+IGlfbW9kZQorIy4gCSVJTQk8aW5vZGU+IC0+IGlfbXRpbWUKKyMuIAklSUYJPGlub2RlPiAtPiBpX2ZhZGRyCisjLiAJJUlmCTxpbm9kZT4gLT4gaV9maWxlX2FjbAorIy4gCSVJZAk8aW5vZGU+IC0+IGlfZGlyX2FjbAorIy4gCSVJdQk8aW5vZGU+IC0+IGlfdWlkCisjLiAJJUlnCTxpbm9kZT4gLT4gaV9naWQKKyMuIAklSXQJPHN0cj4JCQlmaWxlIHR5cGUKKyMuIAklagk8aW5vMj4JCQlpbm9kZSBudW1iZXIKKyMuIAklbQk8Y29tX2VyciBlcnJvciBtZXNzYWdlPgorIy4gCSVOCTxudW0+CisjLiAJJXAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8+CisjLiAJJVAJCWV4dDJmc19nZXRfcGF0aG5hbWUgb2YgPGRpcmVudD4tPmlubyB3aXRoIDxpbm8yPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4gIChJZiBkaXJlbnQgaXMgTlVMTAorIy4gCQkJCXRoZW4gcmV0dXJuIHRoZSBwYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubzI+KQorIy4gCSVxCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8ZGlyPgorIy4gCSVRCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPiB3aXRoIDxkaXI+IGFzCisjLiAJCQkJdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5LgorIy4gCSVzCTxzdHI+CQkJbWlzY2VsbGFuZW91cyBzdHJpbmcKKyMuIAklUwkJYmFja3VwIHN1cGVyYmxvY2sKKyMuIAklWAk8bnVtPgloZXhhZGVjaW1hbCBmb3JtYXQKKyMuCittc2dpZCAiIgorbXNnc3RyICIiCisiUHJvamVjdC1JZC1WZXJzaW9uOiBlMmZzcHJvZ3MgMS40My4xXG4iCisiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IHR5dHNvQGFsdW0ubWl0LmVkdVxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTA5LTA0IDIxOjI3LTA0MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDE2LTA2LTEyIDA5OjA2KzAzMDBcbiIKKyJMYXN0LVRyYW5zbGF0b3I6IFl1cmkgQ2hvcm5vaXZhbiA8eXVyY2hvckB1a3IubmV0PlxuIgorIkxhbmd1YWdlLVRlYW06IFVrcmFpbmlhbiA8dHJhbnNsYXRpb24tdGVhbS11a0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCisiTGFuZ3VhZ2U6IHVrXG4iCisiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0zOyBwbHVyYWw9KG4lMTA9PTEgJiYgbiUxMDAhPTExID8gMCA6IG4lMTA+PTIgJiYgbiIKKyIlMTA8PTQgJiYgKG4lMTAwPDEwIHx8IG4lMTAwPj0yMCkgPyAxIDogMik7XG4iCisiWC1HZW5lcmF0b3I6IExva2FsaXplIDEuNVxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MjMgbWlzYy9ta2UyZnMuYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrICV1IG91dCBvZiByYW5nZTsgaWdub3JlZC5cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC40Lkg0LHQu9C+0LogJXUg0L/QvtC30LAg0LTQvtGB0YLRg9C/0L3QuNC8INC00ZbQsNC/0LDQt9C+0L3QvtC8OyDQv9GA0L7RltCz0L3QvtGA0L7QstCw0L3Qvi5cbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICLQv9GA0Lgg0L/QtdGA0LXQstGW0YDRhtGWINC/0YDQsNCy0LjQu9GM0L3QvtGB0YLRliBpbm9kZSDQv9C+0YjQutC+0LTQttC10L3QuNGFINCx0LvQvtC60ZbQsiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAi0L/RgNC4INGH0LjRgtCw0L3QvdGWIGlub2RlINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLQuCAlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICLQv9GA0Lgg0YHQv9GA0L7QsdGWINCy0ZbQtNC60YDQuNGC0LggJyVzJyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjk0IG1pc2MvbWtlMmZzLmM6MjM3Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbiBsaXN0IG9mIGJhZCBibG9ja3MgZnJvbSBmaWxlIgorbXNnc3RyICLQv9GA0Lgg0YfQuNGC0LDQvdC90ZYg0YHQv9C40YHQutGDINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyINC3INGE0LDQudC70LAiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMDUKK21zZ2lkICJ3aGlsZSB1cGRhdGluZyBiYWQgYmxvY2sgaW5vZGUiCittc2dzdHIgItC/0YDQuCDQvtC90L7QstC70LXQvdC90ZYgaW5vZGUg0L/QvtGI0LrQvtC00LbQtdC90LjRhSDQsdC70L7QutGW0LIiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoxMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogaWxsZWdhbCBibG9jayAldSBmb3VuZCBpbiBiYWQgYmxvY2sgaW5vZGUuICBDbGVhcmVkLlxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQsiBpbm9kZSDQv9C+0YjQutC+0LTQttC10L3QuNGFINCx0LvQvtC60ZbQsiDQt9C90LDQudC00LXQvdC+INC90LXQtNC+0L/Rg9GB0YLQuNC80LjQuSDQsdC70L7QuiAldS4gIgorItCe0YfQuNGJ0LXQvdC+LlxuIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDRh9C40YLQsNC90L3RjyDQsdC70L7QutGDICVsdSAoJXMpINC00L7QutC4ICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDRh9C40YLQsNC90L3RjyDQsdC70L7QutCwICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NiBlMmZzY2svZWhhbmRsZXIuYzoxMTUKK21zZ2lkICJJZ25vcmUgZXJyb3IiCittc2dzdHIgItCG0LPQvdC+0YDRg9Cy0LDRgtC4INC/0L7QvNC40LvQutGDIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NworbXNnaWQgIkZvcmNlIHJld3JpdGUiCittc2dzdHIgItCf0YDQuNC80YPRgdC+0LLQviDQv9C10YDQtdC30LDQv9C40YHQsNGC0LgiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQt9Cw0L/QuNGB0YMg0LHQu9C+0LrRgyAlbHUgKCVzKSDQtNC+0LrQuCAlcy4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgItCf0L7QvNC40LvQutCwINC30LDQv9C40YHRgyDQsdC70L7QutGDICVsdSAoJXMpLiAgIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo1NworbXNnaWQgImVtcHR5IGRpcmJsb2NrcyIKK21zZ3N0ciAi0L/QvtGA0L7QttC90ZYg0LHQu9C+0LrQuCDQutCw0YLQsNC70L7Qs9GW0LIiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAi0L/QvtGA0L7QttC90Y8g0LrQsNGA0YLQsCDQutCw0YLQsNC70L7Qs9GW0LIiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorbXNnc3RyICLQn9C+0YDQvtC20L3RltC5INCx0LvQvtC6INC60LDRgtCw0LvQvtCz0YMgJXUgKOKEliVkKSDRgyBpbm9kZSAldVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzOiAlcyDQvdCw0LfQstCwINGE0LDQudC70YMg0YDQvtC30LzRltGAINCx0LvQvtC60ZbQsiBuYmxvY2tzXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQsdC70L7QutGW0LIhXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo1MAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIgKHNpemU9JWQpXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQv9Cw0LzigJnRj9GC0Ywg0L/RltC0INCx0YPRhNC10YAg0LHQu9C+0LrRltCyICjRgNC+0LfQvNGW0YA9JWQpXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgItC60LDRgNGC0LAg0L/QtdGA0LXQsdGD0LTQvtCy0LggaW5vZGUg0YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGUyZnNjay9mbHVzaGIuYzozNQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgZGlza1xuIgorbXNnc3RyICLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86ICVzINC00LjRgdC6XG4iCisKKyM6IGUyZnNjay9mbHVzaGIuYzo2NAorIywgYy1mb3JtYXQKK21zZ2lkICJCTEtGTFNCVUYgaW9jdGwgbm90IHN1cHBvcnRlZCEgIENhbid0IGZsdXNoIGJ1ZmZlcnMuXG4iCittc2dzdHIgIiIKKyLQn9GW0LTRgtGA0LjQvNC60LggaW9jdGwgQkxLRkxTQlVGINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviEg0KHQutC40LTQsNC90L3RjyDQsdGD0YTQtdGA0ZbQsiDQvdC10LzQvtC20LvQuNCy0LUuXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAi0JLQuNC60L7RgNC40YHRgtCw0L3QvdGPOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSDQv9GA0LjRgdGC0YDRltC5XG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLRgtGPICVzINC00LvRjyDRgdC/0L7RgNC+0LbQvdC10L3QvdGPIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdC/0L7RgNC+0LbQvdC10L3QvdGPICVzIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gJyVzJyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLQuCDCqyVzwrsiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQv9C+0YfQsNGC0LrQvtCy0L7Qs9C+INGB0LrQsNC90YPQstCw0L3QvdGPIGlub2RlIgorCisjOiBlMmZzY2svaXNjYW4uYzoxMjcgbWlzYy9lMmltYWdlLmM6MTMxMgorbXNnaWQgIndoaWxlIGdldHRpbmcgbmV4dCBpbm9kZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQvtGC0YDQuNC80LDQvdC90Y8g0L3QsNGB0YLRg9C/0L3QvtCz0L4gaW5vZGUiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAi0JLQuNC60L7QvdCw0L3QviDRgdC60LDQvdGD0LLQsNC90L3RjyAldSBpbm9kZS5cbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICLRh9C40YLQsNC90L3RjyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQttGD0YDQvdCw0LvRg1xuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjY2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogbm8gdmFsaWQgam91cm5hbCBzdXBlcmJsb2NrIGZvdW5kXG4iCittc2dzdHIgIiVzOiDQvdC1INC30L3QsNC50LTQtdC90L4g0LrQvtGA0LXQutGC0L3QvtCz0L4g0YHRg9C/0LXRgNCx0LvQvtC60YMg0LbRg9GA0L3QsNC70YNcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iCittc2dzdHIgIiVzOiDQttGD0YDQvdCw0Lsg0ZQg0L3QsNC00YLQviDQutC+0YDQvtGC0LrQuNC8XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTY4IG1pc2MvZnVzZTJmcy5jOjM3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHJlY292ZXJpbmcgam91cm5hbFxuIgorbXNnc3RyICIlczog0LLRltC00L3QvtCy0LvRjtGU0LzQviDQttGD0YDQvdCw0LtcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiIKKyIlczog0LLRltC00L3QvtCy0LvQtdC90L3RjyDQttGD0YDQvdCw0LvRgyDQvdC1INCx0YPQtNC1INCy0LjQutC+0L3QsNC90L4g0LTQviDQstC40YXQvtC00YMg0Lcg0YDQtdC20LjQvNGDINC70LjRiNC1INGH0LjRgtCw0L3QvdGPXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQv9C+0LLRgtC+0YDQvdC+INCy0ZbQtNC60YDQuNGC0LggJXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTEzCittc2dpZCAiYWV4dGVuZGVkIGF0dHJpYnV0ZSIKK21zZ3N0ciAiYdGA0L7Qt9GI0LjRgNC10L3QuNC5INCw0YLRgNC40LHRg9GCIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNAorbXNnaWQgIkFlcnJvciBhbGxvY2F0aW5nIgorbXNnc3RyICJB0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgNC+0LfQv9C+0LTRltC70YMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJi0LHQu9C+0LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQtCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNworbXNnaWQgImNjb21wcmVzcyIKK21zZ3N0ciAiY9GB0YLQuNGB0LrQsNC90L3RjyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTgKK21zZ2lkICJDY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBAYiIKK21zZ3N0ciAiQ9C60L7QvdGE0LvRltC60YLRg9GUINC3INGP0LrQvtGO0YHRjCDRltC90YjQvtGOINGE0LDQudC70L7QstC+0Y4g0YHQuNGB0YLQtdC80L7RjiBAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJk0LrQsNGC0LDQu9C+0LMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIwCittc2dpZCAiRGRlbGV0ZWQiCittc2dzdHIgIkTQstC40LvRg9GH0LXQvdC+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMQorbXNnaWQgImVlbnRyeSIKK21zZ3N0ciAiZdC30LDQv9C40YEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkXQt9Cw0L/QuNGBIMKrJURuwrsg0YMgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZtGE0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRtC00LvRjyBAaSAlaSAoJVEpINGUIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ9Cz0YDRg9C/0LAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI2Cittc2dpZCAiaEhUUkVFIEBkIEBpIgorbXNnc3RyICJoaW5vZGUg0LrQsNGC0LDQu9C+0LPRgyBIVFJFRSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjcKK21zZ2lkICJpaW5vZGUiCittc2dzdHIgImlpbm9kZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAiSdC30LDQsdC+0YDQvtC90LXQvdC40LkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImrQttGD0YDQvdCw0LsiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImzQt9Cw0LPRg9Cx0LvQtdC90ZYr0LfQvdCw0LnQtNC10L3RliIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzEKK21zZ2lkICJMaXMgYSBsaW5rIgorbXNnc3RyICJM0ZQg0L/QvtGB0LjQu9Cw0L3QvdGP0LwiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCittc2dpZCAibW11bHRpcGx5LWNsYWltZWQiCittc2dzdHIgIm3QutGA0LDRgtC90LUg0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMworbXNnaWQgIm5pbnZhbGlkIgorbXNnc3RyICJu0L3QtdC60L7RgNC10LrRgtC90LjQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzQKK21zZ2lkICJvb3JwaGFuZWQiCittc2dzdHIgIm/QvtGB0LjRgNC+0YLRltC70LjQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicNC/0YDQvtCx0LvQtdC80LAg0YMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM2Cittc2dpZCAicXF1b3RhIgorbXNnc3RyICJx0LrQstC+0YLQsCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAictC60L7RgNC10L3QtdCy0LjQuSBpbm9kZSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzgKK21zZ2lkICJzc2hvdWxkIGJlIgorbXNnc3RyICJz0LzQsNGUINCx0YPRgtC4IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICLQodGB0YPQv9C10YBAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAiddC90LXQv9GA0LjRlNC00L3QsNC90LjQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDEKK21zZ2lkICJ2ZGV2aWNlIgorbXNnc3RyICJ20L/RgNC40YHRgtGA0ZbQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDIKK21zZ2lkICJ4ZXh0ZW50IgorbXNnc3RyICJ40YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICJ60L3Rg9C70YzQvtCy0L7RlyDQtNC+0LLQttC40L3QuCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI80J/QvtGA0L7QttC90ZbQuSBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU1Cittc2dpZCAiPFRoZSBiYWQgYmxvY2tzIGlub2RlPiIKK21zZ3N0ciAiPGlub2RlINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTcKK21zZ2lkICI8VGhlIHVzZXIgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8aW5vZGUg0LrQstC+0YLQuCDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTgKK21zZ2lkICI8VGhlIGdyb3VwIHF1b3RhIGlub2RlPiIKK21zZ3N0ciAiPGlub2RlINC60LLQvtGC0Lgg0LPRgNGD0L/QuD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjxpbm9kZSDQt9Cw0LLQsNC90YLQsNC20YPQstCw0YfQsD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYwCittc2dpZCAiPFRoZSB1bmRlbGV0ZSBkaXJlY3RvcnkgaW5vZGU+IgorbXNnc3RyICI8aW5vZGUg0LLRltC00L3QvtCy0LvRjtCy0LDQvdC+0LPQviDQutCw0YLQsNC70L7Qs9GDPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjEKK21zZ2lkICI8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IgorbXNnc3RyICI8aW5vZGUg0LTQtdGB0LrRgNC40L/RgtC+0YDQsCDQs9GA0YPQv9C4PiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI8aW5vZGUg0LbRg9GA0L3QsNC70YM+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPNCX0LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40LkgaW5vZGUgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPNCX0LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40LkgaW5vZGUgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAi0LfQstC40YfQsNC50L3QuNC5INGE0LDQudC7IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzNQorbXNnaWQgImRpcmVjdG9yeSIKK21zZ3N0ciAi0LrQsNGC0LDQu9C+0LMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAi0YHQuNC80LLQvtC70YzQvdC40Lkg0L/RgNC40YHRgtGA0ZbQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzkKK21zZ2lkICJibG9jayBkZXZpY2UiCittc2dzdHIgItCx0LvQvtC60L7QstC40Lkg0L/RgNC40YHRgtGA0ZbQuSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICLRltC80LXQvdC+0LLQsNC90LjQuSDQutCw0L3QsNC7IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MworbXNnaWQgInN5bWJvbGljIGxpbmsiCittc2dzdHIgItGB0LjQvNCy0L7Qu9GW0YfQvdC1INC/0L7RgdC40LvQsNC90L3RjyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAi0YHQvtC60LXRgiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAi0YTQsNC50Lsg0L3QtdCy0ZbQtNC+0LzQvtCz0L4g0YLQuNC/0YMg0Lcg0YDQtdC20LjQvNC+0Lwg0LTQvtGB0YLRg9C/0YMgMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICLQvtC/0L7RgdC10YDQtdC00LrQvtCy0LDQvdC40Lkg0LHQu9C+0LoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI0Cittc2dpZCAiZG91YmxlIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICLQtNCy0ZbRh9GWINC+0L/QvtGB0LXRgNC10LTQutC+0LLQsNC90LjQuSDQsdC70L7QuiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgItGC0YDQuNGH0ZYg0L7Qv9C+0YHQtdGA0LXQtNC60L7QstCw0L3QuNC5INCx0LvQvtC6IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyOAorbXNnaWQgInRyYW5zbGF0b3IgYmxvY2siCittc2dzdHIgItCx0LvQvtC6INC/0LXRgNC10L3QtdGB0LXQvdC90Y8iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAi4oSWINCx0LvQvtC60YMiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAi0LrQsNGA0YLQsCBpbm9kZSDQutGA0LDRgtC90L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAi0LLQvdGD0YLRgNGW0YjQvdGPINC/0L7QvNC40LvQutCwOiDQvdC1INCy0LTQsNC70L7RgdGPINC30L3QsNC50YLQuCBkdXBfYmxrINC00LvRjyAlbGx1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgItC/0L7QstC10YDQvdGD0YLQviDQtyBjbG9uZV9maWxlX2Jsb2NrIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTI3CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgYmxvY2sgcmVjb3JkIGZvciAlbGx1IgorbXNnc3RyICIiCisi0LLQvdGD0YLRgNGW0YjQvdGPINC/0L7QvNC40LvQutCwOiDQvdC1INCy0LTQsNC70L7RgdGPINCy0LjQutC+0L3QsNGC0Lgg0L/QvtGI0YPQuiDQt9Cw0L/QuNGB0YMg0LHQu9C+0LrRgyDQtyDRgNC+0LfRiNC40YDQtdC90LjQvCAiCisi0LDRgtGA0LjQsdGD0YLQvtC8INC00LvRjyAlbGx1IgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAiIgorItCy0L3Rg9GC0YDRltGI0L3RjyDQv9C+0LzQuNC70LrQsDog0L3QtSDQstC00LDQu9C+0YHRjyDQstC40LrQvtC90LDRgtC4INC/0L7RiNGD0Log0LfQsNC/0LjRgdGDIGlub2RlINC3INGA0L7Qt9GI0LjRgNC10L3QuNC8ICIKKyLQsNGC0YDQuNCx0YPRgtC+0Lwg0LTQu9GPICV1IgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgItGH0LjRgtCw0L3QvdGPINCx0LvQvtC60YMg0LrQsNGC0LDQu9C+0LPRgyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgItC60LDRgNGC0LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDQvdC40YUgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMjIKK21zZ2lkICJkaXJlY3RvcnkgaW5vZGUgbWFwIgorbXNnc3RyICLQutCw0YDRgtCwIGlub2RlINC60LDRgtCw0LvQvtCz0ZbQsiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgItC60LDRgNGC0LAgaW5vZGUg0LfQstC40YfQsNC50L3QuNGFINGE0LDQudC70ZbQsiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAi0LrQsNGA0YLQsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNC90LjRhSDQsdC70L7QutGW0LIiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKK21zZ2lkICJtZXRhZGF0YSBibG9jayBtYXAiCittc2dzdHIgItC60LDRgNGC0LAg0LHQu9C+0LrRltCyINC80LXRgtCw0LTQsNC90LjRhSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTIwOQorbXNnaWQgIm9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAi0YDQvtC30L/QvtGH0LjQvdCw0ZTQvNC+INGB0LrQsNC90YPQstCw0L3QvdGPIGlub2RlIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjQ3Cittc2dpZCAiZ2V0dGluZyBuZXh0IGlub2RlIGZyb20gc2NhbiIKK21zZ3N0ciAi0L7RgtGA0LjQvNGD0ZTQvNC+INC90LDRgdGC0YPQv9C90LjQuSBpbm9kZSDQstGW0LQg0LfQsNGB0L7QsdGDINGB0LrQsNC90YPQstCw0L3QvdGPIgorCisjOiBlMmZzY2svcGFzczEuYzoxOTMzCittc2dpZCAiUGFzcyAxIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgMSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAi0YfQuNGC0LDRlNC80L4g0L7Qv9C+0YHQtdGA0LXQtNC60L7QstCw0L3RliDQsdC70L7QutC4IGlub2RlICV1IgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAi0LrQsNGA0YLQutCwINC/0L7RiNC60L7QtNC20LXQvdC40YUgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIwODQKK21zZ2lkICJpbm9kZSBpbiBiYWQgYmxvY2sgbWFwIgorbXNnc3RyICJpbm9kZSDRgyDQutCw0YDRgtGWINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAi0LrQsNGA0YLQsCBpbm9kZSBpbWFnaWMiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAi0LrQsNGA0YLQsCDQsdC70L7QutGW0LIg0LrRgNCw0YLQvdC+0LPQviDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8iCisKKyM6IGUyZnNjay9wYXNzMS5jOjIyNDUKK21zZ2lkICJleHQgYXR0ciBibG9jayBtYXAiCittc2dzdHIgItC60LDRgNGC0LAg0LHQu9C+0LrRltCyINC3INGA0L7Qt9GI0LjRgNC10L3QuNC8INCw0YLRgNC40LHRg9GC0L7QvCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzQxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlNmx1KCVjKTogZXhwZWN0aW5nICU2bHUgZ290IHBoeXMgJTZsdSAoYmxrY250ICVsbGQpXG4iCittc2dzdHIgIiU2bHUoJWMpOiDQvNCw0LvQviDQsdGD0YLQuCAlNmx1INC80LDRlNC80L4g0YTRltC30LjRh9C90LjRhSAlNmx1ICjQui3RgtGMINCx0LvQvtC60ZbQsiAlbGxkKVxuIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICLQutCw0YDRgtCwINCx0ZbRgtGW0LIg0LHQu9C+0LrRgyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0LHRltGC0L7QstCwINC60LDRgNGC0LAgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzkKK21zZ2lkICJpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0YLQsNCx0LvQuNGG0Y8gaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMi5jOjI4NworbXNnaWQgIlBhc3MgMiIKK21zZ3N0ciAi0J/RgNC+0YXRltC0IDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICLQn9GA0L7QtNC+0LLQttC10L3QvdGPINC90LXQvNC+0LbQu9C40LLQtS4iCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwINC30LDQstC10YDRiNC10L3QvdGPIGlub2RlIgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICLQn9GW0LrQvtCy0LUg0YHQv9C+0LbQuNCy0LDQvdC90Y8g0L/QsNC84oCZ0Y/RgtGWIgorCisjOiBlMmZzY2svcGFzczMuYzoxNDkKK21zZ2lkICJQYXNzIDMiCittc2dzdHIgItCf0YDQvtGF0ZbQtCAzIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwINCy0LjRj9Cy0LvQtdC90L3RjyDRhtC40LrQu9GW0LIgaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzNC5jOjIwNworbXNnaWQgIlBhc3MgNCIKK21zZ3N0ciAi0J/RgNC+0YXRltC0IDQiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICLQn9GA0L7RhdGW0LQgNSIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTA0Cittc2dpZCAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiIgorImNoZWNrX2lub2RlX2JpdG1hcF9jaGVja3N1bTog0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0YDQvtC30L/QvtC00ZbQu9C40YLQuCDQv9Cw0LzigJnRj9GC0YwiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTog0L/QvtC80LjQu9C60LAg0YDQvtC30LzRltGJ0LXQvdC90Y8g0YMg0L/QsNC84oCZ0Y/RgtGWIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxCittc2dpZCAiKG5vIHByb21wdCkiCittc2dzdHIgIijQsdC10Lcg0LfQsNC/0LjRgtGDKSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MgorbXNnaWQgIkZpeCIKK21zZ3N0ciAi0JLQuNC/0YDQsNCy0LjRgtC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUzCittc2dpZCAiQ2xlYXIiCittc2dzdHIgItCe0YfQuNGB0YLQuNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQKK21zZ2lkICJSZWxvY2F0ZSIKK21zZ3N0ciAi0JfQvNGW0L3QuNGC0Lgg0YDQvtC30YLQsNGI0YPQstCw0L3QvdGPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1Cittc2dpZCAiQWxsb2NhdGUiCittc2dzdHIgItCg0L7Qt9C/0L7QtNGW0LvQuNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgItCg0L7Qt9Cz0L7RgNC90YPRgtC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3Cittc2dpZCAiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIKK21zZ3N0ciAi0JfigJnRlNC00L3QsNGC0Lgg0LcgL2xvc3QrZm91bmQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgKK21zZ2lkICJDcmVhdGUiCittc2dzdHIgItCh0YLQstC+0YDQuNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTkKK21zZ2lkICJTYWx2YWdlIgorbXNnc3RyICLQktGA0Y/RgtGD0LLQsNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjAKK21zZ2lkICJUcnVuY2F0ZSIKK21zZ3N0ciAi0JLQutC+0YDQvtGC0LjRgtC4IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxCittc2dpZCAiQ2xlYXIgaW5vZGUiCittc2dzdHIgItCh0L/QvtGA0L7QttC90LjRgtC4IGlub2RlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyCittc2dpZCAiQWJvcnQiCittc2dzdHIgItCf0LXRgNC10YDQstCw0YLQuCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICLQoNC+0LfQtNGW0LvQuNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQKK21zZ2lkICJDb250aW51ZSIKK21zZ3N0ciAi0J/RgNC+0LTQvtCy0LbQuNGC0LgiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjUKK21zZ2lkICJDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyIKK21zZ3N0ciAi0JrQu9C+0L3Rg9Cy0LDRgtC4INCx0LvQvtC60Lgg0LrRgNCw0YLQvdC+0LPQviDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAi0JLQuNC70YPRh9C40YLQuCDRhNCw0LnQuyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NworbXNnaWQgIlN1cHByZXNzIG1lc3NhZ2VzIgorbXNnc3RyICLQn9GA0LjQtNGD0YjQuNGC0Lgg0LLQuNCy0LXQtNC10L3QvdGPINC/0L7QstGW0LTQvtC80LvQtdC90YwiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjgKK21zZ2lkICJVbmxpbmsiCittc2dzdHIgItCS0ZbQtOKAmdGU0LTQvdCw0YLQuCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OQorbXNnaWQgIkNsZWFyIEhUcmVlIGluZGV4IgorbXNnc3RyICLQodC/0L7RgNC+0LbQvdC40YLQuCDQv9C+0LrQsNC20YfQuNC6IEhUcmVlIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgItCh0YLQstC+0YDQuNGC0Lgg0LfQsNC90L7QstC+IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5Cittc2dpZCAiKE5PTkUpIgorbXNnc3RyICIo0J3QldCc0JDQhCkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAi0JLQmNCf0KDQkNCS0JvQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICLQntCn0JjQqdCV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAi0JfQnNCG0J3QldCd0J4g0KDQntCX0KLQkNCo0KPQktCQ0J3QndCvIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICLQoNCe0JfQnNCG0KnQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAi0KDQntCX0KjQmNCg0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgItCf0J7QktCi0J7QoNCd0J4g0JfigJnQhNCU0J3QkNCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICLQodCi0JLQntCg0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgItCS0KDQr9Ci0J7QktCQ0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OAorbXNnaWQgIlRSVU5DQVRFRCIKK21zZ3N0ciAi0J7QkdCg0IbQl9CQ0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0RFINCh0J/QntCg0J7QltCd0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwCittc2dpZCAiQUJPUlRFRCIKK21zZ3N0ciAi0J/QldCg0JXQoNCS0JDQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxCittc2dpZCAiU1BMSVQiCittc2dzdHIgItCg0J7Ql9CU0IbQm9CV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MgorbXNnaWQgIkNPTlRJTlVJTkciCittc2dzdHIgItCf0KDQntCU0J7QktCW0JXQndCeIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICLQmtCb0J7QndCe0JLQkNCd0J4g0JHQm9Ce0JrQmCDQmtCg0JDQotCd0J7Qk9CeINCS0JjQmtCe0KDQmNCh0KLQkNCd0J3QryIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAi0KTQkNCZ0Jsg0JLQmNCb0KPQp9CV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NQorbXNnaWQgIlNVUFBSRVNTRUQiCittc2dzdHIgItCf0KDQmNCU0KPQqNCV0J3QniIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NgorbXNnaWQgIlVOTElOS0VEIgorbXNnc3RyICLQktCG0JTigJnQhNCU0J3QkNCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcKK21zZ2lkICJIVFJFRSBJTkRFWCBDTEVBUkVEIgorbXNnc3RyICLQhtCd0JTQldCa0KEgSFRSRUUg0J7Qp9CY0KnQldCd0J4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgKK21zZ2lkICJXSUxMIFJFQ1JFQVRFIgorbXNnc3RyICLQn9CV0KDQldCh0KLQktCe0KDQmNCi0KwiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMAorbXNnaWQgIkBiIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwINCx0LvQvtC60ZbQsiDQtNC70Y8g0LPRgNGD0L/QuCAlZyDQvdC1INC/0LXRgNC10LHRg9Cy0LDRlCDRgyDQs9GA0YPQv9GWLiAo0LHQu9C+0LogJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwIGlub2RlINC00LvRjyDQs9GA0YPQv9C4ICVnINC90LUg0L/QtdGA0LXQsdGD0LLQsNGUINGDINCz0YDRg9C/0ZYuICjQsdC70L7QuiAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgdGFibGUgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIy4gQC1leHBhbmRlZDogV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTkKK21zZ2lkICIiCisiQGkgdGFibGUgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKKyJXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuIgorbXNnc3RyICIiCisi0YLQsNCx0LvQuNGG0Y8gQGkg0LTQu9GPINCz0YDRg9C/0LggJWcg0L3QtSDQv9C10YDQtdCx0YPQstCw0ZQg0YMg0LPRgNGD0L/Rli4gKNCx0LvQvtC6ICViKVxuIgorItCj0JLQkNCT0JA6INCc0J7QltCb0JjQktCQINCX0J3QkNCn0J3QkCDQktCi0KDQkNCi0JAg0JTQkNCd0JjQpS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0J3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0YHRg9C/0LXRgNCx0LvQvtC6INCw0LHQviDRgdGD0L/QtdGA0LHQu9C+0Log0L3QtSDQvtC/0LjRgdGD0ZQg0LrQvtGA0LXQutGC0L3QvtGXXG4iCisi0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCBleHQyL2V4dDMvZXh0NC4g0K/QutGJ0L4g0L/RgNC40YHRgtGA0ZbQuSDRlCDQutC+0YDQtdC60YLQvdC40Lwg0ZYg0L3QsNGB0L/RgNCw0LLQtNGWXG4iCisi0LzRltGB0YLQuNGC0Ywg0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMgZXh0Mi9leHQzL2V4dDQgKNCwINC90LUgc3dhcCDRh9C4INCw0LHQviDRidC+0YHRjCDRltC90YjQtSksINGC0L7QtNGWXG4iCisi0YHRg9C/0LXRgNCx0LvQvtC6INC/0L7RiNC60L7QtNC20LXQvdC+LCDRliDQstC4INC80L7QttC10YLQtSDRgdC/0YDQvtCx0YPQstCw0YLQuCDQt9Cw0L/Rg9GB0YLQuNGC0LggZTJmc2NrINC3XG4iCisi0LDQu9GM0YLQtdGA0L3QsNGC0LjQstC90LjQvCDRgdGD0L/QtdGA0LHQu9C+0LrQvtC8OlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA80L/RgNC40YHRgtGA0ZbQuT5cbiIKKyIg0LDQsdC+XG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA80L/RgNC40YHRgtGA0ZbQuT5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIGZpbGVzeXN0ZW0gc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBzdXBlcmJsb2NrKSBpcyAlYiBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIGRldmljZSBpcyAlYyBibG9ja3NcbgorIy4gQC1leHBhbmRlZDogRWl0aGVyIHRoZSBzdXBlcmJsb2NrIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2Cittc2dpZCAiIgorIlRoZSBAZiBzaXplIChhY2NvcmRpbmcgdG8gdGhlIEBTKSBpcyAlYiBAYnNcbiIKKyJUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgQHYgaXMgJWMgQGJzXG4iCisiRWl0aGVyIHRoZSBAUyBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuIgorbXNnc3RyICIiCisi0KDQvtC30LzRltGAINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LggKNCy0ZbQtNC/0L7QstGW0LTQvdC+INC00L4g0YHRg9C/0LXRgNCx0LvQvtC60YMpINC00L7RgNGW0LLQvdGO0ZQgJWIg0LHQu9C+0LrRltCyXG4iCisi0KTRltC30LjRh9C90LjQuSDRgNC+0LfQvNGW0YAg0L/RgNC40YHRgtGA0L7RjiDQtNC+0YDRltCy0L3RjtGUICVjINCx0LvQvtC60ZbQslxuIgorItCZ0LzQvtCy0ZbRgNC90L4sINC/0L7RiNC60L7QtNC20LXQvdC+INC00LDQvdGWINCw0LHQviDRgdGD0L/QtdGA0LHQu9C+0LrRgywg0LDQsdC+INGC0LDQsdC70LjRhtGWINGA0L7Qt9C00ZbQu9GW0LIhXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorItCg0L7Qt9C80ZbRgCDQsdC70L7QutGDINGB0YPQv9GA0LXQsdC70L7QutGDID0gJWIsINGA0L7Qt9C80ZbRgCDRhNGA0LDQs9C80LXQvdGC0LAgPSAlYy5cbiIKKyLQoyDRhtGW0Lkg0LLQtdGA0YHRltGXIGUyZnNjayDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LLQsNGA0ZbQsNC90YLQsCwg0LrQvtC70Lgg0YDQvtC30LzRltGA0Lgg0YTRgNCw0LPQvNC10L3RgtCwICIKKyLQstGW0LTRgNGW0LfQvdGP0Y7RgtGM0YHRj1xuIgorItCy0ZbQtCDRgNC+0LfQvNGW0YDRltCyINCx0LvQvtC60YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwCittc2dpZCAiQFMgQGJzX3Blcl9ncm91cCA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgItC60ZbQu9GM0LrRltGB0YLRjCDQsdC70L7QutGW0LIg0L3QsCDQs9GA0YPQv9GDINGDINGB0YPQv9C10YDQsdC70L7RhtGWID0gJWIsINC80LDQu9C+INCxINCx0YPRgtC4ICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgItC/0LXRgNGI0LjQuSDQsdC70L7QuiDQtNCw0L3QuNGFINGDINGB0YPQv9GA0LXRgNCx0LvQvtGG0ZYgPSAlYiwg0LzQsNCyINCx0Lgg0LHRg9GC0LggJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisi0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0L3QtSDQvNCw0LvQsCBVVUlEOyDRgdGC0LLQvtGA0Y7RlNC80L4g0LLRltC00L/QvtCy0ZbQtNC90LjQuSBVVUlELlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCX0LDRg9Cy0LDQttC10L3QvdGPOiDRj9C60YnQviDQtNC10LrRltC70YzQutCwINCx0LvQvtC60ZbQsiDQsdGW0YLQvtCy0LjRhSDQutCw0YDRgiBpbm9kZSDQsNCx0L5cbiIKKyLQsdC70L7QutGW0LIg0LDQsdC+INGH0LDRgdGC0LjQvdCwINGC0LDQsdC70LjRhtGWIGlub2RlINC/0L7RgtGA0LXQsdGD0Y7RgtGMINC/0LXRgNC10YHRg9Cy0LDQvdC90Y8sINCy0LDQvFxuIgorItCy0LDRgNGC0L4g0YHQv9GA0L7QsdGD0LLQsNGC0Lgg0YHQv9C+0YfQsNGC0LrRgyDQt9Cw0L/Rg9GB0YLQuNGC0LggZTJmc2NrINC3INC/0LDRgNCw0LzQtdGC0YDQvtC8XG4iCisiwqstYiAlU8K7LiDQn9GA0L7QsdC70LXQvNGDINC80L7QttC1INCx0YPRgtC4INC/0L7QsuKAmdGP0LfQsNC90L4g0ZbQtyDQtNC10YHQutGA0LjQv9GC0L7RgNCw0LzQuCDQs9GA0YPQv1xuIgorItC+0YHQvdC+0LLQvdC+0LPQviDQsdC70L7QutGDLCDQsCDQtNC10YHQutGA0LjQv9GC0L7RgNC4INCz0YDRg9C/INGA0LXQt9C10YDQstC90L7Qs9C+INCx0LvQvtC60YMg0LzQvtC20LVcbiIKKyLQsdGD0YLQuCDQvdC1INC/0L7RiNC60L7QtNC20LXQvdC+LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAi0JLQuNGP0LLQu9C10L3QviDQv9C+0YjQutC+0LTQttC10L3QvdGPINGDIEBTLiAgKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qt9C80ZbRgNGDINGE0ZbQt9C40YfQvdC+0LPQviDRgtC+0LzRgzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgY291bnQgaW4gc3VwZXJibG9jayBpcyAlaSwgc2hvdWxkIGJlICVqLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NAorbXNnaWQgIkBpIGNvdW50IGluIEBTIGlzICVpLCBAcyAlai5cbiIKK21zZ3N0ciAi0JrRltC70YzQutGW0YHRgtGMIEBpINGDINGB0YPQv9C10YDQsdC70L7RhtGWINC00L7RgNGW0LLQvdGO0ZQsINC80LDRlCDQsdGD0YLQuCAlai5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODgKK21zZ2lkICJUaGUgSHVyZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBmaWxldHlwZSBmZWF0dXJlLlxuIgorbXNnc3RyICLQoyBIdXJkINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQv9GW0LTRgtGA0LjQvNC60Lgg0LzQvtC20LvQuNCy0L7RgdGC0ZYg0LLQuNC30L3QsNGH0LXQvdC90Y8g0YLQuNC/0YMg0YTQsNC50LvRltCyLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlICVpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGFzIGFuIEBuIEBqIChAaSAlaSkuXG4iCittc2dzdHIgItCW0YPRgNC90LAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQvCAoQGkgJWkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIiIKKyLQoyDQt9C+0LLQvdGW0YjQvdGM0L7QvNGDINC20YPRgNC90LDQu9GWINCy0LjQt9C90LDRh9C10L3QviDQtNC10LrRltC70YzQutCwINC60L7RgNC40YHRgtGD0LLQsNGH0ZbQsiDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4ICjRgtCw0LrQsCAiCisi0LrQvtC90YTRltCz0YPRgNCw0YbRltGPINC90LUg0L/RltC00YLRgNC40LzRg9GU0YLRjNGB0Y8pLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW4ndCBmaW5kIGV4dGVybmFsIGpvdXJuYWxcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDMKK21zZ2lkICJDYW4ndCBmaW5kIGV4dGVybmFsIEBqXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfQvdCw0LnRgtC4INC30L7QstC90ZbRiNC90YzQvtCz0L4gQGpcbiIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBoYXMgYmFkIHN1cGVyYmxvY2tcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDgKK21zZ2lkICJFeHRlcm5hbCBAaiBoYXMgYmFkIEBTXG4iCittc2dzdHIgItCjINC30L7QstC90ZbRiNC90YzQvtCz0L4g0LbRg9GA0L3QsNC70YMg0L/QvtGI0LrQvtC00LbQtdC90L4g0YHRg9C/0LXRgNCx0LvQvtC6XG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiIgorItCU0LvRjyDQt9C+0LLQvdGW0YjQvdGM0L7Qs9C+INC20YPRgNC90LDQu9GDINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQv9GW0LTRgtGA0LjQvNC60Lgg0YbRltGU0Zcg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuFxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisi0YHRg9C/0LXRgNCx0LvQvtC6INC20YPRgNC90LDQu9GDINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QsNC70LXQttC40YLRjCDQtNC+INC90LXQstGW0LTQvtC80L7Qs9C+INGC0LjQv9GDICVOICjQvdC1ICIKKyLQv9GW0LTRgtGA0LjQvNGD0ZTRgtGM0YHRjykuXG4iCisi0JnQvNC+0LLRltGA0L3Qviwg0LLQsNGI0LAg0LrQvtC/0ZbRjyBlMmZzY2sg0ZQg0LfQsNGB0YLQsNGA0ZbQu9C+0Y4g0ZYv0LDQsdC+INC90LUg0L/RltC00YLRgNC40LzRg9GUINGG0YzQvtCz0L4g0YTQvtGA0LzQsNGC0YMgIgorItC20YPRgNC90LDQu9GDLlxuIgorItCZ0LzQvtCy0ZbRgNC90L4sINGB0YPQv9C10YDQsdC70L7QuiDQttGD0YDQvdCw0LvRgyDQv9C+0YjQutC+0LTQttC10L3Qvi5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI2Cittc2dpZCAiQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAi0YHRg9C/0LXRgNCx0LvQvtC6INC20YPRgNC90LDQu9GDINC/0L7RiNC60L7QtNC20LXQvdC+LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzEKK21zZ2lkICJAUyBoYXNfQGogZmxhZyBpcyBjbGVhciwgYnV0IGEgQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAi0L/RgNCw0L/QvtGA0LXRhtGMINGB0YPQv9C10YDQsdC70L7QutGDIGhhc19qb3VybmFsINGB0LrQuNC90YPRgtC+LCDQsNC70LUg0L3QsNGP0LLQvdC40Lwg0ZQg0LbRg9GA0L3QsNC7LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiIgorItCS0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMIG5lZWRzX3JlY292ZXJ5INC00LvRjyDRgdGD0L/QtdGA0LHQu9C+0LrRgywg0LDQu9C1INC90LUg0LLQuNGP0LLQu9C10L3QviAiCisi0LbRg9GA0L3QsNC70YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IGpvdXJuYWwgaGFzIGRhdGEuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjQxCittc2dpZCAiQFMgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBjbGVhciwgYnV0IEBqIGhhcyBkYXRhLlxuIgorbXNnc3RyICIiCisi0JfQvdGP0YLQviDQv9GA0LDQv9C+0YDQtdGG0YwgbmVlZHNfcmVjb3Zlcnkg0LTQu9GPINGB0YPQv9C10YDQsdC70L7QutGDLCDQsNC70LUg0YMg0LbRg9GA0L3QsNC70ZYg0L3QtdC80LDRlCDQtNCw0L3QuNGFLlxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICLQntGH0LjRgdGC0LjRgtC4INC20YPRgNC90LDQuyIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBmaWxlc3lzdGVtLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1MSBlMmZzY2svcHJvYmxlbS5jOjc0NAorbXNnaWQgIkBmIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIEBmLiAgIgorbXNnc3RyICIiCisi0JTQu9GPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQv9GA0LDQv9C+0YDRhtGWINC80L7QttC70LjQstC+0YHRgtC10LksINCw0LvQtSDRhtGPINGE0LDQudC70L7QstCwICIKKyLRgdC40YHRgtC10LzQsCDQvNCw0ZQg0LLQtdGA0YHRltGOIDAuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVzIG9ycGhhbmVkIGlub2RlICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjU2Cittc2dpZCAiJXMgQG8gQGkgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbiIKK21zZ3N0ciAi0L7RgdC40YDQvtGC0ZbQu9C40LkgaW5vZGUgJXMgJWkgKHVpZD0lSXUsIGdpZD0lSWcsINGA0LXQttC40Lw9JUltLCDRgNC+0LfQvNGW0YA9JUlzKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjYxCittc2dpZCAiQEkgJUIgKCViKSBmb3VuZCBpbiBAbyBAaSAlaS5cbiIKK21zZ3N0ciAi0LfQvdCw0LnQtNC10L3QviDQvdC10LrQvtGA0LXQutGC0L3QuNC5ICVCICglYikg0YMg0L7RgdC40YDQvtGC0ZbQu9C+0LzRgyBpbm9kZSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgItCS0LbQtSDRgdC/0YDQvtC20L3QtdC90L4g0LfQvdCw0LnQtNC10L3RliAlQiAoJWIpINGDINC+0YHQuNGA0L7RgtGW0LvQvtC80YMgaW5vZGUgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgb3JwaGFuZWQgaW5vZGUgJWkgaW4gc3VwZXJibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQG8gQGkgJWkgaW4gQFMuXG4iCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40Lkg0L7RgdC40YDQvtGC0ZbQu9C40LkgQGkgJWkg0YMg0YHRg9C/0LXRgNCx0LvQvtGG0ZYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgaW5vZGUgJWkgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90LjQuSBAaSAlaSDRgyDRgdC/0LjRgdC60YMg0L7RgdC40YDQvtGC0ZbQu9C40YUgQGkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgc3VwZXJibG9jayBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyODEKK21zZ2lkICJAaiBAUyBoYXMgYW4gdW5rbm93biByZWFkLW9ubHkgZmVhdHVyZSBmbGFnIHNldC5cbiIKK21zZ3N0ciAiIgorItCU0LvRjyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQttGD0YDQvdCw0LvRgyDQstGB0YLQsNC90L7QstC70LXQvdC+INC90LXQstGW0LTQvtC80LjQuSDQv9GA0LjQtNCw0YLQvdC40Lkg0LvQuNGI0LUg0LTQviDRh9C40YLQsNC90L3RjyAiCisi0L/RgNCw0L/QvtGA0LXRhtGMINC80L7QttC70LjQstC+0YHRgtGWLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjg2Cittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gaW5jb21wYXRpYmxlIGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIiIKKyLQlNC70Y8g0YHRg9C/0LXRgNCx0LvQvtC60YMg0LbRg9GA0L3QsNC70YMg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQvdC10LLRltC00L7QvNC40Lkg0ZYg0L3QtdGB0YPQvNGW0YHQvdC40Lkg0L/RgNCw0L/QvtGA0LXRhtGMICIKKyLQvNC+0LbQu9C40LLQvtGB0YLRli5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICIiCisi0J/RltC00YLRgNC40LzQutC4INGG0ZbRlNGXINCy0LXRgNGB0ZbRlyDQttGD0YDQvdCw0LvRgyDRgyDQv9C+0YLQvtGH0L3RltC5INCy0LXRgNGB0ZbRlyBlMmZzY2sg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+LlxuIgorCisjLiBALWV4cGFuZGVkOiBNb3Zpbmcgam91cm5hbCBmcm9tIC8lcyB0byBoaWRkZW4gaW5vZGUuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTW92aW5nIEBqIGZyb20gLyVzIHRvIGhpZGRlbiBAaS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0LXRgNC10YHRg9Cy0LDRlNC80L4g0LbRg9GA0L3QsNC7INC3IC8lcyDQtNC+INC/0YDQuNGF0L7QstCw0L3QvtCz0L4gQGkuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIG1vdmluZyBqb3VybmFsOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkVycm9yIG1vdmluZyBAajogJW1cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC/0LXRgNC10YHRg9C90YPRgtC4INC20YPRgNC90LDQuzogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRm91bmQgaW52YWxpZCBWMiBqb3VybmFsIHN1cGVyYmxvY2sgZmllbGRzIChmcm9tIFYxIGpvdXJuYWwpLlxuCisjLiBALWV4cGFuZGVkOiBDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBqb3VybmFsIHN1cGVyYmxvY2suLi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzA2Cittc2dpZCAiIgorIkZvdW5kIEBuIFYyIEBqIEBTIGZpZWxkcyAoZnJvbSBWMSBAaikuXG4iCisiQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgQGogQFMuLi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCS0LjRj9Cy0LvQtdC90L4g0L3QtdC60L7RgNC10LrRgtC90ZYg0L/QvtC70Y8g0YHRg9C/0LXRgNCx0LvQvtC60YMg0LbRg9GA0L3QsNC70YMgVjIgKNC3INC20YPRgNC90LDQu9GDIFYxKS5cbiIKKyLQodC/0L7RgNC+0LbQvdGO0ZTQvNC+INC/0L7Qu9GPINC30LAg0YHRg9C/0LXRgNCx0LvQvtC60L7QvCDQttGD0YDQvdCw0LvRgyBWMS4uLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBSdW4gam91cm5hbCBhbnl3YXkKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzEyCittc2dpZCAiUnVuIEBqIGFueXdheSIKK21zZ3N0ciAi0JfQsNC/0YPRgdGC0LjRgtC4INC20YPRgNC90LDQu9GO0LLQsNC90L3RjyDQv9C+0L/RgNC4INGG0LUiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiIgorItCjINGA0LXQt9C10YDQstC90L7QvNGDINGB0YPQv9C10YDQsdC70L7RhtGWINC90LUg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQv9GA0LDQv9C+0YDQtdGG0Ywg0LLRltC00L3QvtCy0LvQtdC90L3Rjywg0L7RgtC20LUsINC/0L7Qv9GA0LggIgorItCy0YHQtSDQt9Cw0L/Rg9GB0LrQsNGU0LzQviDQttGD0YDQvdCw0LsuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyLQodGC0LLQvtGA0Y7RlNC80L4g0YDQtdC30LXRgNCy0L3RgyDQutC+0L/RltGOINC00LDQvdC40YUg0YnQvtC00L4g0LHQu9C+0LrRltCyIEBqINC20YPRgNC90LDQu9GDLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyLRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWINC90LUg0YPQstGW0LzQutC90LXQvdC+IHJlc2l6ZV9AaSwg0LDQu9C1IHNfcmVzZXJ2ZWRfZ2R0X0Bic1xuIgorItC80LDRlCDQt9C90LDRh9C10L3QvdGPICVOOyDQvNCw0ZQg0LHRg9GC0Lgg0L3Rg9C70YzQvtCy0LjQvC4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICJSZXNpemVfQGkg0L3QtSDRg9Cy0ZbQvNC60L3QtdC90L4sINCw0LvQtSDQt9C80ZbQvdCwINGA0L7Qt9C80ZbRgNGDIEBpINGUINC90LXQvdGD0LvRjNC+0LLQvtGOLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgItCX0LzRltC90LAg0YDQvtC30LzRltGA0YMgQGkg0ZQg0L3QtdC60L7RgNC10LrRgtC90L7Rji4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0MworbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyLRh9Cw0YEg0L7RgdGC0LDQvdC90YzQvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y8g0YHRg9C/0LXRgNCx0LvQvtC60YMgKCV0LFxuIgorIlx00YLQtdC/0LXRgCA9ICVUKSDQu9C10LbQuNGC0Ywg0YMg0LzQsNC50LHRg9GC0L3RjNC+0LzRgy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyLRh9Cw0YEg0L7RgdGC0LDQvdC90YzQvtCz0L4g0LfQsNC/0LjRgdGDINGB0YPQv9C10YDQsdC70L7QutGDICgldCxcbiIKKyJcdNGC0LXQv9C10YAgPSAlVCkg0LvQtdC20LjRgtGMINGDINC80LDQudCx0YPRgtC90YzQvtC80YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgItC/0ZbQtNC60LDQt9C60L7RjiDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQtNC70Y8g0LfQvtCy0L3RltGI0L3RjNC+0LPQviDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQvNCw0ZQg0LHRg9GC0LggJVguICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQlNC+0LTQsNGU0LzQviDQv9GW0LTQutCw0LfQutGDIGRpcmhhc2gg0LTQviDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgItC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINC00LXRgdC60YDQuNC/0YLQvtGA0LAg0LPRgNGD0L/QuCAlZyDQtNC+0YDRltCy0L3RjtGUICUwNHgsINCwINC80LDRlCDQsdGD0YLQuCAlMDR5LiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiIgorItC00LXRgdC60YDQuNC/0YLQvtGAINCz0YDRg9C/0LggJWcg0L/QvtC30L3QsNGH0LXQvdC+INC90LXRltC90ZbRhtGW0LDQu9GW0LfQvtCy0LDQvdC40Lwg0LHQtdC3INCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyDQstGW0LTQv9C+0LLRltC00L3QvtGXICIKKyLQvNC+0LbQu9C40LLQvtGB0YLRli5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiIgorItC00LXRgdC60YDQuNC/0YLQvtGAINCz0YDRg9C/0LggJWcg0LzRltGB0YLQuNGC0Ywg0LTQsNC90ZYg0YnQvtC00L4g0L3QtdC60L7RgNC10LrRgtC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0L3QtdCy0LjQutC+0YDQuNGB0YLQsNC90LjRhSAiCisiaW5vZGUgJWIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICLQkdGW0YLQvtCy0YMg0LrQsNGA0YLRgyDQvtGB0YLQsNC90L3RjNC+0LPQviDQsdC70L7QutGDINCz0YDRg9C/0Lgg0L3QtSDRltC90ZbRhtGW0LDQu9GW0LfQvtCy0LDQvdC+LiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIHRyYW5zYWN0aW9uICVpIHdhcyBjb3JydXB0LCByZXBsYXkgd2FzIGFib3J0ZWQuXG4iCittc2dzdHIgItCX0LDQv9C40YEg0LTRltGXINC20YPRgNC90LDQu9GDICVpINC/0L7RiNC60L7QtNC20LXQvdC+LCDQv9C+0LLRgtC+0YDQvdC1INCy0LjQutC+0L3QsNC90L3RjyDQv9C10YDQtdGA0LLQsNC90L4uXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMIHRlc3RfZnMgKNGWINC00L7RgdGC0YPQv9C90LAgZXh0NCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTEKK21zZ2lkICIiCisiQFMgbGFzdCBtb3VudCB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKyLQp9Cw0YEg0L7RgdGC0LDQvdC90YzQvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y8g0YHRg9C/0LXRgNCx0LvQvtC60YMg0LvQtdC20LjRgtGMINGDINC80LDQudCx0YPRgtC90YzQvtC80YMuXG4iCisiXHQo0LzQtdC90YjQtSDQvdGW0LYg0L3QsCDQtNC10L3RjCwg0LnQvNC+0LLRltGA0L3QviDRh9C10YDQtdC3INC/0L7QvNC40LvQutC+0LLQuNC5INGH0LDRgSDQvdCwINCw0L/QsNGA0LDRgtC90L7QvNGDICIKKyLQs9C+0LTQuNC90L3QuNC60YMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4iCisiXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5ICIKKyJzZXQpXG4iCittc2dzdHIgIiIKKyLQp9Cw0YEg0L7RgdGC0LDQvdC90YzQvtCz0L4g0LfQsNC/0LjRgdGDINGB0YPQv9C10YDQsdC70L7QutGDINC70LXQttC40YLRjCDRgyDQvNCw0LnQsdGD0YLQvdGM0L7QvNGDLlxuIgorIlx0KNC80LXQvdGI0LUg0L3RltC2INC90LAg0LTQtdC90YwsINC50LzQvtCy0ZbRgNC90L4g0YfQtdGA0LXQtyDQv9C+0LzQuNC70LrQvtCy0LjQuSDRh9Cw0YEg0L3QsCDQsNC/0LDRgNCw0YLQvdC+0LzRgyAiCisi0LPQvtC00LjQvdC90LjQutGDKVxuIgorCisjLiBALWV4cGFuZGVkOiBPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MDMKK21zZ2lkICJPbmUgb3IgbW9yZSBAYiBAZyBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gICIKK21zZ3N0ciAiIgorItCe0LTQvdCwINCw0LHQviDQtNC10LrRltC70YzQutCwINC60L7QvdGC0YDQvtC70YzQvdC40YUg0YHRg9C8INC00LXRgdC60YDQuNC/0YLQvtGA0ZbQsiDQs9GA0YPQvyDQsdC70L7QutGW0LIg0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQvNC4LiAgIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgaW5vZGVzIGNvdW50IHRvICVqICh3YXMgJWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDA4Cittc2dpZCAiU2V0dGluZyBmcmVlIEBpcyBjb3VudCB0byAlaiAod2FzICVpKVxuIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70Y7RlNC80L4g0LTQu9GPINC60ZbQu9GM0LrQvtGB0YLRliDQstGW0LvRjNC90LjRhSBAaW5vZGUg0LfQvdCw0YfQtdC90L3RjyAlaiAo0LHRg9C70L4gJWkpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNldHRpbmcgZnJlZSBibG9ja3MgY291bnQgdG8gJWMgKHdhcyAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTMKK21zZ2lkICJTZXR0aW5nIGZyZWUgQGJzIGNvdW50IHRvICVjICh3YXMgJWIpXG4iCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvRjtGU0LzQviDQtNC70Y8g0LrRltC70YzQutC+0YHRgtGWINCy0ZbQu9GM0L3QuNGFINCx0LvQvtC60ZbQsiDQt9C90LDRh9C10L3QvdGPICVjICjQsdGD0LvQviAlYilcbiIKKworIy4gQC1leHBhbmRlZDogTWFraW5nIHF1b3RhIGlub2RlICVpICglUSkgaGlkZGVuLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQxOAorbXNnaWQgIk1ha2luZyBAcSBAaSAlaSAoJVEpIGhpZGRlbi5cbiIKK21zZ3N0ciAi0KDQvtCx0LjQvNC+IEBpINC60LLQvtGC0LggJWkgKCVRKSDQv9GA0LjRhdC+0LLQsNC90LjQvC5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICLQkdC70L7QuiBNTVAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQvC4gICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDI4Cittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIG1hZ2ljLiAgIgorbXNnc3RyICLQmtC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCBNTVAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0ZQg0L3QtdC60L7RgNC10LrRgtC90L7Rji4gICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX29wZW4yOiAlbVxuIgorbXNnc3RyICJleHQyZnNfb3BlbjI6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDM4CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorbXNnc3RyICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0IAorIy4gQC1leHBhbmRlZDogc2ltdWx0YW5lb3VzbHkuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ0NgorbXNnaWQgIiIKKyJAUyBtZXRhZGF0YV9jc3VtIHN1cGVyc2VkZXMgdW5pbml0X2JnOyBib3RoIGZlYXR1cmUgYml0cyBjYW5ub3QgYmUgc2V0ICIKKyJzaW11bHRhbmVvdXNseS4iCittc2dzdHIgIiIKKyJtZXRhZGF0YV9jc3VtINGB0YPQv9C10YDQsdC70L7QutGDINC30LDQvNGW0YnRg9GUIHVuaW5pdF9iZzsg0L3QtSDQvNC+0LbQvdCwINCy0YHRgtCw0L3QvtCy0LvRjtCy0LDRgtC4INC+0LHQuNC00LLQsCAiCisi0LHRltGC0Lgg0LLQu9Cw0YHRgtC40LLQvtGB0YLQtdC5INC+0LTQvdC+0YfQsNGB0L3Qvi4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKK21zZ2lkICJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIgorbXNnc3RyICLQmtC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDQsdC70L7QutGDIE1NUCDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQvdC1INCy0ZbQtNC/0L7QstGW0LTQsNGUINCx0LvQvtC60YMgTU1QLiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTcKK21zZ2lkICJAUyA2NGJpdCBmaWxlc3lzdGVtcyBuZWVkcyBleHRlbnRzIHRvIGFjY2VzcyB0aGUgd2hvbGUgZGlzay4gICIKK21zZ3N0ciAiIgorIjY0LdCx0ZbRgtC+0LLRliDRhNCw0LnQu9C+0LLRliDRgdC40YHRgtC10LzQuCDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQv9C+0YLRgNC10LHRg9GO0YLRjCDRgNC+0LfRiNC40YDQtdC90Ywg0LTQu9GPINC00L7RgdGC0YPQv9GDINC00L4gIgorItGD0YHRjNC+0LPQviDQtNC40YHQutCwLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiIgorItCX0L3QsNGH0LXQvdC90Y8gRmlyc3RfbWV0YV9iZyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8LiAoJU4sINC80LDQutGB0LjQvNCw0LvRjNC90LjQvCDRlCDQt9C90LDRh9C10L3QvdGPICVnKS4gICIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIiIKKyLQmtC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQt9C+0LLQvdGW0YjQvdGM0L7Qs9C+INC20YPRgNC90LDQu9GDINC90LUg0LLRltC00L/QvtCy0ZbQtNCw0ZQg0YHRg9C/0LXRgNCx0LvQvtC60YMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NzIKK21zZ2lkICJAUyBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uIgorbXNnc3RyICJtZXRhZGF0YV9jc3VtX3NlZWQg0YHRg9C/0LXRgNCx0LvQvtC60YMg0L3QtdC+0LHQvtCy4oCZ0Y/Qt9C60L7QstC+INCx0LXQtyBtZXRhZGF0YV9jc3VtLiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5OiAlbVxuIgorbXNnc3RyICIiCisi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0ZbQvdGW0YbRltCw0LvRltC30YPQstCw0YLQuCDQutC+0L3RgtC10LrRgdGCINC60LLQvtGCINGDINCx0ZbQsdC70ZbQvtGC0LXRhtGWINC/0ZbQtNGC0YDQuNC80LrQuDogIgorIiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCByZXF1aXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDgyCittc2dpZCAiQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoJU4pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ4NworbXNnaWQgIkJhZCBkZXNpcmVkIGV4dHJhIGlzaXplIGluIEBTICglTikuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk0Cittc2dpZCAiUGFzcyAxOiBDaGVja2luZyBAaXMsIEBicywgYW5kIHNpemVzXG4iCittc2dzdHIgItCf0YDQvtGF0ZbQtCAxOiDQv9C10YDQtdCy0ZbRgNGP0ZTQvNC+IEBpLCDQsdC70L7QutC4INGC0LAg0YDQvtC30LzRltGA0LhcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgItC60L7RgNC10L3QtdCy0LjQuSBpbm9kZSDQvdC1INGUINC60LDRgtCw0LvQvtCz0L7QvC4gICIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTAzCittc2dpZCAiQHIgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgIgorbXNnc3RyICIiCisi0LTQu9GPINC60L7RgNC10L3QtdCy0L7Qs9C+IGlub2RlINCy0YHRgtCw0L3QvtCy0LvQtdC90L4gZHRpbWUgKNC50LzQvtCy0ZbRgNC90L4sINGH0LXRgNC10Lcg0LfQsNGB0YLQsNGA0ZbQu9GDINC/0YDQvtCz0YDQsNC80YMgIgorIm1rZTJmcykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICLQlNC70Y8g0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90L7Qs9C+IEBpICVpICglUSkg0LLQuNC30L3QsNGH0LXQvdC+INC90LXQutC+0YDQtdC60YLQvdC40Lkg0YDQtdC20LjQvC4gICIKKworIy4gQC1leHBhbmRlZDogZGVsZXRlZCBpbm9kZSAlaSBoYXMgemVybyBkdGltZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEQgQGkgJWkgaGFzIHplcm8gZHRpbWUuICAiCittc2dzdHIgItC00LvRjyDQstC40LvRg9GH0LXQvdC+0LPQviBAaSAlaSDQstC40LfQvdCw0YfQtdC90L4g0L3Rg9C70YzQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyBkdGltZS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiQGkgJWkg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8sINCw0LvQtSDQtNC70Y8g0L3RjNC+0LPQviDQstGB0YLQsNC90L7QstC70LXQvdC+IGR0aW1lLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiQGkgJWkg0ZQg0LrQsNGC0LDQu9C+0LPQvtC8INC90YPQu9GM0L7QstC+0Zcg0LTQvtCy0LbQuNC90LguICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwINCx0LvQvtC60ZbQsiDQs9GA0YPQv9C4ICVnINC30LAg0LDQtNGA0LXRgdC+0Y4gJWIg0LrQvtC90YTQu9GW0LrRgtGD0ZQg0Lcg0ZbQvdGI0LjQvCDQsdC70L7QutC+0LwgIgorItGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMzCittc2dpZCAiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiIgorItCx0ZbRgtC+0LLQsCDQutCw0YDRgtCwIGlub2RlINCz0YDRg9C/0LggJWcg0YMgJWIg0LrQvtC90YTQu9GW0LrRgtGD0ZQg0Lcg0Y/QutC40LzQvtGB0Ywg0ZbQvdGI0LjQvCDQsdC70L7QutC+0Lwg0YTQsNC50LvQvtCy0L7RlyAiCisi0YHQuNGB0YLQtdC80LguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICIiCisi0YLQsNCx0LvQuNGG0Y8gaW5vZGUg0LPRgNGD0L/QuCAlZyDRgyAlYiDQutC+0L3RhNC70ZbQutGC0YPRlCDQtyDQv9C10LLQvdC40Lwg0LHQu9C+0LrQvtC8INGW0L3RiNC+0Zcg0YTQsNC50LvQvtCy0L7RlyAiCisi0YHQuNGB0YLQtdC80LguXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0MworbXNnaWQgIkBnICVnJ3MgQGIgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgItCx0ZbRgtC+0LLRgyDQutCw0YDRgtGDINCx0LvQvtC60ZbQsiDQs9GA0YPQv9C4ICVnICglYikg0L/QvtGI0LrQvtC00LbQtdC90L4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0OAorbXNnaWQgIkBnICVnJ3MgQGkgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgItC60LDRgNGC0YMgaW5vZGUg0LPRgNGD0L/QuCAlZyAoJWIpINC/0L7RiNC60L7QtNC20LXQvdC+LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9zaXplIGlzICVJcywgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfc2l6ZSDQtNC+0YDRltCy0L3RjtGUICVJcywg0LzQsNGUINCx0YPRgtC4ICVOLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9ibG9ja3MgaXMgJUliLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTU4Cittc2dpZCAiQGkgJWksIGlfQGJzIGlzICVJYiwgQHMgJU4uICAiCittc2dzdHIgIkBpICVpLCBpX2Jsb2NrcyDigJQgJUliLCDQvNCw0ZQg0LHRg9GC0LggJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICLQvdC10LrQvtGA0LXQutGC0L3QtSDQt9C90LDRh9C10L3QvdGPICVCICglYikg0YMgQGkgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgb3ZlcmxhcHMgZmlsZXN5c3RlbSBtZXRhZGF0YSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjgKK21zZ2lkICIlQiAoJWIpIG92ZXJsYXBzIEBmIG1ldGFkYXRhIGluIEBpICVpLiAgIgorbXNnc3RyICIlQiAoJWIpINC/0LXRgNC10LrRgNC40LLQsNGUINC80LXRgtCw0LTQsNC90ZYg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDRgyBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTczCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJAaSAlaSDQvNGW0YHRgtC40YLRjCDQvdC10LrQvtGA0LXQutGC0L3RliDQsdC70L7QutC4LiAgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgItCjIEBpICVpINC30LDQsdCw0LPQsNGC0L4g0L3QtdC/0YDQuNC/0YPRgdGC0LjQvNC40YUg0LHQu9C+0LrRltCyLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbGxlZ2FsICVCICglYikgaW4gYmFkIGJsb2NrIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4MworbXNnaWQgIkBJICVCICglYikgaW4gYmFkIEBiIEBpLiAgIgorbXNnc3RyICLQvdC10LrQvtGA0LXQutGC0L3QtSAlQiAoJWIpINGDINC/0L7QvNC40LvQutC+0LLQvtC80YMg0LHQu9C+0LrQvtCy0L7QvNGDIEBpLiAgIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgaW5vZGUgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTg4Cittc2dpZCAiQmFkIEBiIEBpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LjQuSBAaSDQsdC70L7QutGDINC80ZbRgdGC0LjRgtGMINC90LXQutC+0YDQtdC60YLQvdGWINCx0LvQvtC60LguICAiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBvciBiYWQgYmxvY2sgaW4gdXNlIVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5MworbXNnaWQgIkR1cGxpY2F0ZSBvciBiYWQgQGIgaW4gdXNlIVxuIgorbXNnc3RyICLQktC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtNGD0LHQu9GW0LrQsNGCINCw0LHQviDQv9C+0LzQuNC70LrQvtCy0LjQuSDQsdC70L7QuiFcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrICViIHVzZWQgYXMgYmFkIGJsb2NrIGlub2RlIGluZGlyZWN0IGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5OAorbXNnaWQgIkJhZCBAYiAlYiB1c2VkIGFzIGJhZCBAYiBAaSBpbmRpcmVjdCBAYi4gICIKK21zZ3N0ciAiIgorItCf0L7RiNC60L7QtNC20LXQvdC40Lkg0LHQu9C+0LogJWIg0LLQuNC60L7RgNC40YHRgtCw0L3QviDRj9C6INC+0L/QvtGB0LXRgNC10LTQutC+0LLQsNC90LjQuSDQsdC70L7QuiBAaSDQv9C+0YjQutC+0LTQttC10L3QvtCz0L4gIgorItCx0LvQvtC60YMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuCisjLiBALWV4cGFuZGVkOiBzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpbiB0aGUgZmlsZXN5c3RlbS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MDMKK21zZ2lkICIiCisiXG4iCisiVGhlIGJhZCBAYiBAaSBoYXMgcHJvYmFibHkgYmVlbiBjb3JydXB0ZWQuICBZb3UgcHJvYmFibHlcbiIKKyJzaG91bGQgc3RvcCBub3cgYW5kIHJ1biBlMmZzY2sgLWMgdG8gc2NhbiBmb3IgYmFkIGJsb2Nrc1xuIgorImluIHRoZSBAZi5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCZ0LzQvtCy0ZbRgNC90L4sINC/0L7QvNC40LvQutC+0LLQuNC5IEBpINCx0LvQvtC60YMg0LHRg9C70L4g0L/QvtGI0LrQvtC00LbQtdC90L4uINCS0LDQvCDQstCw0YDRgtC+XG4iCisi0LfRg9C/0LjQvdC40YLQuNGB0Y8g0ZYg0LfQsNC/0YPRgdGC0LjRgtC4IGUyZnNjayAtYyDQtNC70Y8g0L/QvtGI0YPQutGDINC/0L7QvNC40LvQutC+0LLQuNGFINCx0LvQvtC60ZbQslxuIgorItGDINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisi0K/QutGJ0L4g0LHQu9C+0Log0YHQtdGA0LnQvtC30L3QviDQv9C+0YjQutC+0LTQttC10L3Qviwg0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0L3QtSDQvNC+0LbQvdCwINCx0YPQtNC1INCy0LjQv9GA0LDQstC40YLQuC5cbiIKKworIy4gQC1leHBhbmRlZDogWW91IGNhbiByZW1vdmUgdGhpcyBibG9jayBmcm9tIHRoZSBiYWQgYmxvY2sgbGlzdCBhbmQgaG9wZVxuCisjLiBALWV4cGFuZGVkOiB0aGF0IHRoZSBibG9jayBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYxNQorbXNnaWQgIiIKKyJZb3UgY2FuIHJlbW92ZSB0aGlzIEBiIGZyb20gdGhlIGJhZCBAYiBsaXN0IGFuZCBob3BlXG4iCisidGhhdCB0aGUgQGIgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuIgorIlxuIgorbXNnc3RyICIiCisi0JLQuCDQvNC+0LbQtdGC0LUg0LLQuNC70YPRh9C40YLQuCDRhtC10Lkg0LHQu9C+0Log0LfRliDRgdC/0LjRgdC60YMg0L/QvtGI0LrQvtC00LbQtdC90LjRhSDQsdC70L7QutGW0LIg0ZYg0YHQv9C+0LTRltCy0LDRgtC40YHRjyDQvdCwICIKKyLRgtC1LFxuIgorItGJ0L4g0LHQu9C+0Log0L3QsNGB0L/RgNCw0LLQtNGWINC90LUg0L/QvtGI0LrQvtC00LbQtdC90L4uINCS0YLRltC8LCDQs9Cw0YDQsNC90YLRg9Cy0LDRgtC4INGG0LUg0L3QtdC80L7QttC70LjQstC+LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgcHJpbWFyeSBzdXBlcmJsb2NrICglYikgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYyMQorbXNnaWQgIlRoZSBwcmltYXJ5IEBTICglYikgaXMgb24gdGhlIGJhZCBAYiBsaXN0LlxuIgorbXNnc3RyICLQntGB0L3QvtCy0L3QuNC5INGB0YPQv9C10YDQsdC70L7QuiAoJWIpINC/0LXRgNC10LHRg9Cy0LDRlCDRgyDRgdC/0LjRgdC60YMg0L/QvtC80LjQu9C60L7QstC40YUg0LHQu9C+0LrRltCyLlxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAiIgorItCR0LvQvtC6ICViINGDINC+0YHQvdC+0LLQvdC40YUg0LTQtdGB0LrRgNC40L/RgtC+0YDQsNGFINCz0YDRg9C/INC/0LXRgNC10LHRg9Cy0LDRlCDRgyDRgdC/0LjRgdC60YMg0L/QvtC80LjQu9C60L7QstC40YUg0LHQu9C+0LrRltCyXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INGB0YPQv9C10YDQsdC70L7QuiDQs9GA0YPQv9C4ICVnICglYikg0ZQg0L/QvtC80LjQu9C60L7QstC40LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiIgorItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0LrQvtC/0ZbRjyDQtNC10YHQutGA0LjQv9GC0L7RgNGW0LIg0LPRgNGD0L8g0LPRgNGD0L/QuCAlZyDQvNGW0YHRgtC40YLRjCDQv9C+0YjQutC+0LTQttC10L3QuNC5INCx0LvQvtC6ICIKKyIoJWIpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQcm9ncmFtbWluZyBlcnJvcj8gIGJsb2NrICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQzCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I/ICBAYiAjJWIgY2xhaW1lZCBmb3Igbm8gcmVhc29uIGluIHByb2Nlc3NfYmFkX0BiLlxuIgorbXNnc3RyICIiCisi0J/QvtC80LjQu9C60LAg0YMg0L/RgNC+0LPRgNCw0LzRlj8g0JHQu9C+0Log4oSWJWIg0LLQuNGC0YDQtdCx0YPQstCw0L3QviDQsdC10Lcg0L/RgNC40YfQuNC90Lgg0YMgcHJvY2Vzc19iYWRfYmxvY2suXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgJU4gY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAlZyBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjQ5Cittc2dpZCAiQEEgJU4gY29udGlndW91cyBAYihzKSBpbiBAYiBAZyAlZyBmb3IgJXM6ICVtXG4iCittc2dzdHIgIiIKKyLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINC+0YLRgNC40LzQsNC90L3RjyAlTiDQvdC10L/QtdGA0LXRgNCy0L3QuNGFINCx0LvQvtC60ZbQsiDRgyDQs9GA0YPQv9GWINCx0LvQvtC60ZbQsiAlZyDQtNC70Y8gJXM6ICIKKyIlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQvtGC0YDQuNC80LDQvdC90Y8g0LHRg9GE0LXRgNCwINCx0LvQvtC60ZbQsiDQtNC70Y8g0L/QtdGA0LXRgdGD0LLQsNC90L3RjyAlc1xuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgItCf0LXRgNC10YHRg9Cy0LDQvdC90Y8gJWcg0LPRgNGD0L/QuCAlcyDQtyAlYiDQtNC+ICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2NAorIywgYy1mb3JtYXQKK21zZ2lkICJSZWxvY2F0aW5nIEBnICVnJ3MgJXMgdG8gJWMuLi5cbiIKK21zZ3N0ciAi0J/QtdGA0LXRgdGD0LLQsNC90L3RjyAlZyDQs9GA0YPQv9C4ICVzINC00L4gJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgJWIgb2YgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY5Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgQGIgJWIgb2YgJXM6ICVtXG4iCittc2dzdHIgItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0L3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0LHQu9C+0LogJWIg0LcgJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQvdC1INCy0LTQsNC70L7RgdGPINC30LDQv9C40YHQsNGC0Lgg0LHQu9C+0LogJWIg0LTQu9GPICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3OSBlMmZzY2svcHJvYmxlbS5jOjE3NDAKK21zZ2lkICJAQSBAaSBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINC+0YLRgNC40LzQsNC90L3RjyDQsdGW0YLQvtCy0L7RlyDQutCw0YDQuCBAaSAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgItC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0L7RgtGA0LjQvNCw0L3QvdGPINC60LDRgNGC0Lgg0LHQu9C+0LrRltCyICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINC+0YLRgNC40LzQsNC90L3RjyDQtNCw0L3QuNGFINGJ0L7QtNC+INC/0L7RgdC40LvQsNC90L3RjyBpY291bnQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZGlyZWN0b3J5IGJsb2NrIGFycmF5OiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAZCBAYiBhcnJheTogJW1cbiIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQvtGC0YDQuNC80LDQvdC90Y8g0LzQsNGB0LjQstGDINCx0LvQvtC60ZbQsiDQutCw0YLQsNC70L7Qs9GW0LI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBAaXMgKCVpKTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC60LDQvdGD0LLQsNC90L3RjyBAaSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQstC40LrQvtC90LDQvdC90Y8g0ZbRgtC10YDQsNGG0ZbRlyDQvdCw0LQg0LHQu9C+0LrQsNC80Lgg0YMgQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgaW5vZGUgY291bnQgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBjb3VudD0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzA5Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAaSBjb3VudCBpbmZvcm1hdGlvbiAoQGk9JWksIGNvdW50PSVOKTogJW1cbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC30LHQtdGA0LXQs9GC0Lgg0LTQsNC90ZYg0YnQvtC00L4g0LrRltC70YzQutC+0YHRgtGWIEBpIChAaT0laSwg0LrRltC70YzQutGW0YHRgtGMPSIKKyIlTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICIiCisi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQsdC10YDQtdCz0YLQuCDQtNCw0L3RliDRidC+0LTQviDQsdC70L7QutGW0LIg0LrQsNGC0LDQu9C+0LPRgyAoQGk9JWksINCx0LvQvtC6PSViLCDQui0iCisi0YLRjD0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8gQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzI4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbWFnaWMgZmxhZyBzZXQuICAiCittc2dzdHIgItCU0LvRjyBAaSAlaSDQstGB0YLQsNC90L7QstC70LXQvdC+INC/0YDQsNC/0L7RgNC10YbRjCBpbWFnaWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyLQlNC70Y8g0YHQv9C10YbRltCw0LvRjNC90L7Qs9C+INGE0LDQudC70LAgKNC/0YDQuNGB0YLRgNC+0Y4v0YHQvtC60LXRgtCwL2ZpZm8v0YHQuNC80LLQvtC70ZbRh9C90L7Qs9C+INC/0L7RgdC40LvQsNC90L3RjyhAaSAlaSkpXG4iCisi0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQv9GA0LDQv9C+0YDQtdGG0Ywg0L3QtdC30LzRltC90L3QvtGB0YLRliDQsNCx0L4g0LvQuNGI0LUg0LTQvtC/0LjRgdGD0LLQsNC90L3Rjy4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBpbm9kZSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIEBpICVpIGhhcyBub24temVybyBzaXplLiAgIgorbXNnc3RyICLQodC/0LXRhtGW0LDQu9GM0L3QuNC5IEBpICjQv9GA0LjRgdGC0YDRltC5L9GB0L7QutC10YIvZmlmbykgJWkg0LzQsNGUINC90LXQvdGD0LvRjNC+0LLQuNC5INGA0L7Qt9C80ZbRgC4gICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKK21zZ2lkICJAaiBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiQGkg0LbRg9GA0L3QsNC70YMg0L3QtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjywg0LDQu9C1INC80ZbRgdGC0LjRgtGMINC00LDQvdGWLiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlzIG5vdCByZWd1bGFyIGZpbGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU0Cittc2dpZCAiQGogaXMgbm90IHJlZ3VsYXIgZmlsZS4gICIKK21zZ3N0ciAi0LbRg9GA0L3QsNC7INC90LUg0ZQg0LfQstC40YfQsNC50L3QuNC8INGE0LDQudC70L7QvC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHdhcyBwYXJ0IG9mIHRoZSBAbyBAaSBsaXN0LiAgIgorbXNnc3RyICJAaSAlaSDRlCDRh9Cw0YHRgtC40L3QvtGOINGB0L/QuNGB0LrRgyDQvtGB0LjRgNC+0YLRltC70LjRhSBAaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGVzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NjUKK21zZ2lkICJAaXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgIgorbXNnc3RyICIiCisi0LLQuNGP0LLQu9C10L3QviBAaSwg0Y/QutGWINCx0YPQu9C4INGH0LDRgdGC0LjQvdC+0Y4g0L/QvtCy4oCZ0Y/Qt9Cw0L3QvtCz0L4g0YHQv9C40YHQutGDINC/0L7RiNC60L7QtNC20LXQvdC40YUg0L7RgdC40YDQvtGC0ZbQu9C40YUgIgorItCx0LvQvtC60ZbQsi4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKK21zZ2lkICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgNC+0LfQvNGW0YnQtdC90L3RjyDRgdGC0YDRg9C60YLRg9GA0Lgg0LrRltC70YzQutC+0YHRgtGWINC/0L7RgdC40LvQsNC90YwgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGH0LjRgtCw0L3QvdGPINCx0LvQvtC60YMg0LDRgtGA0LjQsdGD0YLRltCyICViINC00LvRjyBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkBpICVpINC80ZbRgdGC0LjRgtGMINC/0L7RiNC60L7QtNC20LXQvdC40Lkg0LHQu9C+0Log0YDQvtC30YjQuNGA0LXQvdC+0LPQviDQsNGC0YDQuNCx0YPRgtCwICViLiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDQsdC70L7QutGDINGA0L7Qt9GI0LjRgNC10L3QuNGFINCw0YLRgNC40LHRg9GC0ZbQsiAlYiAoJW0pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIHJlZmVyZW5jZSBjb3VudCAlciwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5MAorbXNnaWQgIkBhIEBiICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIEBzICVOLiAgIgorbXNnc3RyICIiCisi0YMg0LHQu9C+0LrRgyDRgNC+0LfRiNC40YDQtdC90L7Qs9C+INCw0YLRgNC40LHRg9GC0LAgJWIg0LrRltC70YzQutGW0YHRgtGMINC/0L7RgdC40LvQsNC90Ywg0LTQvtGA0ZbQstC90Y7RlCAlciwg0LAg0LzQsNGUINCx0YPRgtC4ICIKKyIlTi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd3JpdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LfQsNC/0LjRgdGD0LLQsNC90L3RjyDQsdC70L7QutGDINGA0L7Qt9GI0LjRgNC10L3QuNGFINCw0YLRgNC40LHRg9GC0ZbQsiAlYiAoJW0pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIGhfYmxvY2tzID4gMS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICLQsdC70L7QuiDRgNC+0LfRiNC40YDQtdC90L7Qs9C+INCw0YLRgNC40LHRg9GC0LAgJWIg0LzQsNGUIGhfYmxvY2tzID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorbXNnaWQgIkBBIEBhIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiIgorItC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGA0L7Qt9C80ZbRgdGC0LjRgtC4INGB0YLRgNGD0LrRgtGD0YDRgyDRgNC+0LfQvNGW0YnQtdC90L3RjyDRgNC10LPRltC+0L3RltCyINGA0L7Qt9GI0LjRgNC10L3QuNGFICIKKyLQsNGC0YDQuNCx0YPRgtGW0LIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICLQsdC70L7QuiDRgNC+0LfRiNC40YDQtdC90L7Qs9C+INCw0YLRgNC40LHRg9GC0LAgJWIg0L/QvtGI0LrQvtC00LbQtdC90L7Qs9C+ICjQutC+0L3RhNC70ZbQutGCINGA0L7Qt9C80ZbRidC10L3QvdGPKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGludmFsaWQgbmFtZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODE1Cittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gbmFtZSkuICAiCittc2dzdHIgItCx0LvQvtC6INGA0L7Qt9GI0LjRgNC10L3QuNGFINCw0YLRgNC40LHRg9GC0ZbQsiAlYiDQv9C+0YjQutC+0LTQttC10L3QviAo0L3QtdC60L7RgNC10LrRgtC90LAg0L3QsNC30LLQsCkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgItCx0LvQvtC6INGA0L7Qt9GI0LjRgNC10L3QuNGFINCw0YLRgNC40LHRg9GC0ZbQsiAlYiDQv9C+0YjQutC+0LTQttC10L3QviAo0L3QtdC60L7RgNC10LrRgtC90LUg0LfQvdCw0YfQtdC90L3RjykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgIkBpICVpINGUINC90LDQtNGC0L4g0LLQtdC70LjQutC40LwuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorbXNnaWQgIiVCICglYikgY2F1c2VzIEBkIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikg0YDQvtCx0LjRgtGMINC60LDRgtCw0LvQvtCzINC90LDQtNGC0L4g0LLQtdC70LjQutC40LwuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM0Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgZmlsZSB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpINGA0L7QsdC40YLRjCDRhNCw0LnQuyDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8LiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJUIgKCViKSDRgNC+0LHQuNGC0Ywg0YHQuNC80LLQvtC70ZbRh9C90LUg0L/QvtGB0LjQu9Cw0L3QvdGPINC90LDQtNGC0L4g0LLQtdC70LjQutC40LwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIEBmIHdpdGhvdXQgaHRyZWUgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorItC00LvRjyBAaSAlaSDQstGB0YLQsNC90L7QstC70LXQvdC+INC/0YDQsNC/0L7RgNC10YbRjCBJTkRFWF9GTCDRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWLCDQtNC1INC/0ZbQtNGC0YDQuNC80LrQuCAiCisiaHRyZWUg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBAZC5cbiIKK21zZ3N0ciAi0LTQu9GPIEBpICVpINCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMIElOREVYX0ZMLCDQsNC70LUg0LLRltC9INC90LUg0ZQg0LrQsNGC0LDQu9C+0LPQvtC8LlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgcm9vdCBub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSBoYXMgYW4gQG4gcm9vdCBub2RlLlxuIgorbXNnc3RyICJpbm9kZSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVpINC80LDRlCDQvdC10LrQvtGA0LXQutGC0L3QuNC5INC60L7RgNC10L3QtdCy0LjQuSDQstGD0LfQvtC7LlxuIgorCisjLiBALWV4cGFuZGVkOiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU5Cittc2dpZCAiQGggJWkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoJU4pXG4iCittc2dzdHIgIkBoICVpINC90LDQu9C10LbQuNGC0Ywg0LTQviDQvdC10L/RltC00YLRgNC40LzRg9Cy0LDQvdC+0Zcg0LLQtdGA0YHRltGXINGF0LXRiNGDICglTilcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiIgorImlub2RlINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWkg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GUINC90LXRgdGD0LzRltGB0L3QuNC5INC/0YDQsNC/0L7RgNC10YbRjCDQutC+0YDQtdC90LXQstC+0LPQviDQstGD0LfQu9CwICIKKyJodHJlZS5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiIgorImlub2RlINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWkg0LzQsNGUINGA0ZbQstC10L3RjCDQstC60LvQsNC00LXQvdC+0YHRgtGWINGDINGW0ZTRgNCw0YDRhdGW0ZcgKCVOKSwg0Y/QutC40Lkg0ZQg0L3QsNC00YLQviAiCisi0LLQtdC70LjQutC40LxcbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIkBpINC/0L7QvNC40LvQutC+0LLQvtCz0L4g0LHQu9C+0LrRgyDQvNGW0YHRgtC40YLRjCDQvtC/0L7RgdC10YDQtdC00LrQvtCy0LDQvdC40Lkg0LHQu9C+0LogKCViKSwg0Y/QutC40Lkg0LrQvtC90YTQu9GW0LrRgtGD0ZQg0LdcbiIKKyLQvNC10YLQsNC00LDQvdC40LzQuCDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjg4MAorIywgYy1mb3JtYXQKK21zZ2lkICJSZXNpemUgQGkgKHJlKWNyZWF0aW9uIGZhaWxlZDogJW0uIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCAo0L/QvtCy0YLQvtGA0L3QvtCz0L4pINGB0YLQstC+0YDQtdC90L3RjyBAaSDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LI6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSDQvNCw0ZQg0L3QsNC00LzRltGA0L3QuNC5INGA0L7Qt9C80ZbRgCAoJUlTKSwg0YbQtSDQvdC10LrQvtGA0LXQutGC0L3QvlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAi0YDQvtC30YjQuNGA0LXQvdC40Lkg0LDRgtGA0LjQsdGD0YIg0YMgQGkgJWkg0LzQsNGUINC90LXQutC+0YDQtdC60YLQvdC1INC30L3QsNGH0LXQvdC90Y8gbmFtZWxlbiAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODk1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAi0YDQvtC30YjQuNGA0LXQvdC40Lkg0LDRgtGA0LjQsdGD0YIg0YMgQGkgJWkg0LzQsNGUINC90LXQutC+0YDQtdC60YLQvdC40Lkg0LLRltC00YHRgtGD0L8g0LfQvdCw0YfQtdC90L3RjyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIiIKKyLRgNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiDRgyBAaSAlaSDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQuSDQsdC70L7QuiDQt9C90LDRh9C10L3QvdGPICglTiksINC80LDRlCDQsdGD0YLQuCAwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwNQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICLRgNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiDRgyBAaSAlaSDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQuSDRgNC+0LfQvNGW0YAg0LfQvdCw0YfQtdC90L3RjyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICLRgNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiDRgyBAaSAlaSDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQuSDRhdC10YggKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJAaSAlaSDRlCAlSXQsINCw0LvQtSwg0LfQtNCw0ZTRgtGM0YHRjywg0LLRltC9INC90LDRgdC/0YDQsNCy0LTRliDRlCDQutCw0YLQsNC70L7Qs9C+0LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBleHRlbnQgdHJlZSBpbiBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIEB4IHRyZWUgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0YDQvtC30YjQuNGA0LXQvdC+0Zcg0ZbRlNGA0LDRgNGF0ZbRlyDRgyBpbm9kZSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisi0J3QtSDQstC00LDQu9C+0YHRjyDRltGC0LXRgNCw0YLQuNCy0L3QviDQv9GA0L7QudGC0LjRgdGPINC30LAg0YDQvtC30YjQuNGA0LXQvdC90Y/QvNC4INGDIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkg0LzQsNGUINC90LXQutC+0YDQtdC60YLQvdC1INGA0L7Qt9GI0LjRgNC10L3QvdGPXG4iCisiXHQo0LvQvtCz0ZbRh9C90LjQuSDQsdC70L7QuiAlYywg0L3QtdC60L7RgNC10LrRgtC90LjQuSDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViLCDQtNC+0LLQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LUg0YDQvtC30YjQuNGA0LXQvdC90Y9cbiIKKyJcdCjQu9C+0LPRltGH0L3QuNC5INCx0LvQvtC6ICVjLCDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViLCDQvdC10LrQvtGA0LXQutGC0L3QsCDQtNC+0LLQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIiIKKyLQtNC70Y8gQGkgJWkg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQv9GA0LDQv9C+0YDQtdGG0YwgRVhURU5UU19GTCDQvdCwINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0LHQtdC3INC/0ZbQtNGC0YDQuNC80LrQuCAiCisi0YDQvtC30YjQuNGA0LXQvdGMLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk0NgorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgQFMgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbiIKK21zZ3N0ciAiIgorIkBpICVpINC30LDQv9C40YHQsNC90L4g0YMg0YTQvtGA0LzQsNGC0ZYg0YDQvtC30YjQuNGA0LXQvdC90Y8sINCw0LvQtSDRgyDRgdGD0L/QtdGA0LHQu9C+0YbRliDQvdC10LzQsNGUINC80L7QttC70LjQstC+0YHRgtGWICIKKyJFWFRFTlRTXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuIgorbXNnc3RyICJAaSAlaSDQvdC1INC80LDRlCBFWFRFTlRfRkwsINCw0LvQtSDQudC+0LPQviDQt9Cw0L/QuNGB0LDQvdC+INGDINGE0L7RgNC80LDRgtGWINGA0L7Qt9GI0LjRgNC10L3QvdGPXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAi0JTQu9GPINGI0LLQuNC00LrQvtCz0L4g0YHQuNC80LLQvtC70ZbRh9C90L7Qs9C+INC/0L7RgdC40LvQsNC90L3RjyAlaSDQstGB0YLQsNC90L7QstC70LXQvdC+IEVYVEVOVF9GTC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpINC80LDRlCDQvdC10LLQv9C+0YDRj9C00LrQvtCy0LDQvdGWINGA0L7Qt9GI0LjRgNC10L3QvdGPXG4iCisiXHQo0L3QtdC60L7RgNC10LrRgtC90LjQuSDQu9C+0LPRltGH0L3QuNC5INCx0LvQvtC6ICVjLCDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViLCDQtNC+0LLQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50IG5vZGUgKGJsayAlYiwgbGJsayAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjUKK21zZ2lkICJAaSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuIgorbXNnc3RyICJAaSAlaSDQvNGW0YHRgtC40YLRjCDQvdC10LrQvtGA0LXQutGC0L3QuNC5INCy0YPQt9C+0Lsg0YDQvtC30YjQuNGA0LXQvdC90Y8gKGJsayAlYiwgbGJsayAlYylcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINC/0LXRgNC10YLQstC+0YDQtdC90L3RjyDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4INCx0LvQvtC60ZbQsiDQv9GW0LTQutC70LDRgdGC0LXRgNCwOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3NQorbXNnaWQgIkBxIEBpIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkBpINC60LLQvtGC0Lgg0L3QtSDRlCDQt9Cy0LjRh9Cw0LnQvdC40Lwg0YTQsNC50LvQvtC8LiAgIgorCisjLiBALWV4cGFuZGVkOiBxdW90YSBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODAKK21zZ2lkICJAcSBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiQGkg0LrQstC+0YLQuCDQvdC1INCy0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPLCDQsNC70LUg0LzRltGB0YLQuNGC0Ywg0LTQsNC90ZYuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiQGkg0LrQstC+0YLQuCDRlCDQstC40LTQuNC80LjQvCDQutC+0YDQuNGB0YLRg9Cy0LDRh9C10LLRli4gICIKKworIy4gQC1leHBhbmRlZDogVGhlIGJhZCBibG9jayBpbm9kZSBsb29rcyBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5MAorbXNnaWQgIlRoZSBiYWQgQGIgQGkgbG9va3MgQG4uICAiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQuNC5IEBpINCx0LvQvtC60YMg0LLQuNCz0LvRj9C00LDRlCDQvdC10LrQvtGA0LXQutGC0L3QuNC8LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTk1Cittc2dpZCAiIgorIkBpICVpIGhhcyB6ZXJvIGxlbmd0aCBleHRlbnRcbiIKKyJcdChAbiBsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYilcbiIKK21zZ3N0ciAiIgorIkBpICVpINC80LDRlCDRgNC+0LfRiNC40YDQtdC90L3RjyDQvdGD0LvRjNC+0LLQvtGXINC00L7QstC20LjQvdC4XG4iCisiXHQo0L3QtdC60L7RgNC10LrRgtC90LjQuSDQu9C+0LPRltGH0L3QuNC5INCx0LvQvtC6ICVjLCDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwMAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgItC30LTQsNGU0YLRjNGB0Y8sIEBpICVpINC80ZbRgdGC0LjRgtGMINC80L7RgtC70L7RhS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICJAaSAlaSDQv9GA0L7QudGI0L7QsiDQv9C10YDQtdCy0ZbRgNC60YMsINCw0LvQtSDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDQvdC1INCy0ZbQtNC/0L7QstGW0LTQsNGUIEBpLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgQGEgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICLRgNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiBAaSAlaSDQv9C+0YjQutC+0LTQttC10L3QviAo0LrQvtC90YTQu9GW0LrRgiDRgNC+0LfQvNGW0YnQtdC90L3RjykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAxOAorbXNnaWQgIiIKKyJAaSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyLQsdC70L7QuiDRgNC+0LfRiNC40YDQtdC90L3RjyBAaSAlaSDQv9GA0L7QudGI0L7QsiDQv9C10YDQtdCy0ZbRgNC60YMsINCw0LvQtSDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDQvdC1INCy0ZbQtNC/0L7QstGW0LTQsNGUICIKKyLRgNC+0LfRiNC40YDQtdC90L3RjlxuIgorIlx0KNC70L7Qs9GW0YfQvdC40Lkg0LHQu9C+0LogJWMsINGE0ZbQt9C40YfQvdC40Lkg0LHQu9C+0LogJWIsINC00L7QstC20LjQvdCwICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKyLQsdC70L7QuiDRgNC+0LfRiNC40YDQtdC90L7Qs9C+INCw0YLRgNC40LHRg9GC0LAgQGkgJWkgJWIg0L/RgNC+0LnRiNC+0LIg0L/QtdGA0LXQstGW0YDQutGDLCDQsNC70LUg0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0L3QtSAiCisi0LLRltC00L/QvtCy0ZbQtNCw0ZQg0LHQu9C+0LrQvtCy0ZYuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEludGVyaW9yIGV4dGVudCBub2RlIGxldmVsICVOIG9mIGlub2RlICVpOlxuCisjLiBALWV4cGFuZGVkOiBMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDM0Cittc2dpZCAiIgorIkludGVyaW9yIEB4IG5vZGUgbGV2ZWwgJU4gb2YgQGkgJWk6XG4iCisiTG9naWNhbCBzdGFydCAlYiBkb2VzIG5vdCBtYXRjaCBsb2dpY2FsIHN0YXJ0ICVjIGF0IG5leHQgbGV2ZWwuICAiCittc2dzdHIgIiIKKyLQktC90YPRgtGA0ZbRiNC90ZbQuSDRgNC+0LfRiNC40YDQtdC90LjQuSDRgNGW0LLQtdC90Ywg0LLRg9C30LvQsCAlTiBAaSAlaTpcbiIKKyLQm9C+0LPRltGH0L3QuNC5INC/0L7Rh9Cw0YLQvtC6ICViINC90LUg0LLRltC00L/QvtCy0ZbQtNCw0ZQg0LvQvtCz0ZbRh9C90L7QvNGDINC/0L7Rh9Cw0YLQutGDICVjINC90LAg0L3QsNGB0YLRg9C/0L3QvtC80YMg0YDRltCy0L3Rli4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWksINC60ZbQvdC10YbRjCDRgNC+0LfRiNC40YDQtdC90L3RjyDQv9C10YDQtdCy0LjRidGD0ZQg0LTQvtC30LLQvtC70LXQvdC1INC30L3QsNGH0LXQvdC90Y9cbiIKKyJcdCjQu9C+0LPRltGH0L3QuNC5INCx0LvQvtC6ICVjLCDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViLCDQtNC+0LLQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICIiCisiQGkgJWkg0LzRltGB0YLQuNGC0Ywg0LLQsdGD0LTQvtCy0LDQvdGWINC00LDQvdGWLCDQsNC70LUg0YMg0YHRg9C/0LXRgNCx0LvQvtC60YMg0L3QtdC80LDRlCDQstC70LDRgdGC0LjQstC+0YHRgtGWICIKKyJJTkxJTkVfREFUQVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiIgorItC00LvRjyBAaSAlaSDQstGB0YLQsNC90L7QstC70LXQvdC+INC/0YDQsNC/0L7RgNC10YbRjCBJTkxJTkVfREFUQV9GTCDQvdCwINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0LHQtdC3ICIKKyLQv9GW0LTRgtGA0LjQvNC60Lgg0LLQsdGD0LTQvtCy0LDQvdC40YUg0LTQsNC90LjRhS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDU4Cittc2dpZCAiIgorIkBpICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4iCittc2dzdHIgIiIKKyJAaSAlaSwg0LHQu9C+0LogJWIg0LrQvtC90YTQu9GW0LrRgtGD0ZQg0ZbQtyDQutGA0LjRgtC40YfQvdC40LzQuCDQvNC10YLQsNC00LDQvdC40LzQuCwg0L/RgNC+0L/Rg9GB0LrQsNGU0LzQviDQv9C10YDQtdCy0ZbRgNC60LggIgorItCx0LvQvtC60ZbQsi5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGJsb2NrICViIHNob3VsZCBiZSBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDYzCittc2dpZCAiQGQgQGkgJWkgQGIgJWIgc2hvdWxkIGJlIGF0IEBiICVjLiAgIgorbXNnc3RyICJAaSDQutCw0YLQsNC70L7Qs9GDICVpLCDQsdC70L7QuiAlYiwg0LzQsNGUINCx0YPRgtC4INGDINCx0LvQvtGG0ZYgJWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICJAaSDQutCw0YLQsNC70L7Qs9GDICVpINC/0L7Qt9C90LDRh9C10L3QviDRj9C6INC90LXRltC90ZbRhtGW0LDQu9GW0LfQvtCy0LDQvdC40Lkg0YMg0LHQu9C+0YbRliAlYy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorItC70L7Qs9GW0YfQvdC40Lkg0LHQu9C+0LogQGkgJWkgJWIgKNGE0ZbQt9C40YfQvdC40Lkg0LHQu9C+0LogJWMpINC/0L7RgNGD0YjRg9GUINC/0YDQsNCy0LjQu9CwINGA0L7Qt9C/0L7QtNGW0LvRgyAiCisi0LrQu9Cw0YHRgtC10YDRltCyLlxuIgorItCR0YPQtNC1INCy0LjQv9GA0LDQstC70LXQvdC+INC90LAg0LrRgNC+0YbRliAxQi5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IGV4dGVuZGVkIGF0dHJpYnV0ZSBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3OAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICIiCisi0LTQu9GPIEBpICVpINCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMIElOTElORV9EQVRBX0ZMLCDQsNC70LUg0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INCw0YLRgNC40LHRg9GC0LAg0L3QtSAiCisi0LfQvdCw0LnQtNC10L3Qvi4gICIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3BlY2lhbCAoQHYvc29ja2V0L2ZpZm8pIGZpbGUgKEBpICVpKSBoYXMgZXh0ZW50c1xuIgorIm9yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgIgorbXNnc3RyICIiCisi0JTQu9GPINGB0L/QtdGG0ZbQsNC70YzQvdC+0LPQviDRhNCw0LnQu9CwICjQv9GA0LjRgdGC0YDQvtGOL9GB0L7QutC10YLQsC9maWZvLCAoQGkgJWkpKVxuIgorItCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0YDQvtC30YjQuNGA0LXQvdC90Y8g0LDQsdC+INC/0YDQsNC/0L7RgNC10YbRjCDQstCx0YPQtNC+0LLQsNC90LjRhSDQtNCw0L3QuNGFLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgZXh0ZW50IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgQHggaGVhZGVyIGJ1dCBpbmxpbmUgZGF0YSBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorIkBpICVpINC80LDRlCDRgNC+0LfRiNC40YDQtdC90LjQuSDQt9Cw0LPQvtC70L7QstC+0LosINCw0LvQtSDQstGB0YLQsNC90L7QstC70LXQvdC+INC/0YDQsNC/0L7RgNC10YbRjCDQstCx0YPQtNC+0LLQsNC90LjRhSDQtNCw0L3QuNGFLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBleHRlbnQgZmxhZyBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIGlubGluZSBkYXRhIGJ1dCBAeCBmbGFnIGlzIHNldC5cbiIKK21zZ3N0ciAiIgorItC30LTQsNGU0YLRjNGB0Y8sIEBpICVpINC80ZbRgdGC0LjRgtGMINCy0LHRg9C00L7QstCw0L3RliDQtNCw0L3Rliwg0LDQu9C1INC00LvRjyDQvdGM0L7Qs9C+INCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMICIKKyLRgNC+0LfRiNC40YDQtdC90L3Rjy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKyLQt9C00LDRlNGC0YzRgdGPLCBAaSAlaSDQvNGW0YHRgtC40YLRjCDQutCw0YDRgtGDINCx0LvQvtC60ZbQsiwg0LDQu9C1INCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0YbRliDQstCx0YPQtNC+0LLQsNC90LjRhSAiCisi0LTQsNC90LjRhSDRliDRgNC+0LfRiNC40YDQtdC90L3Rjy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisiQGkgJWkg0LzRltGB0YLQuNGC0Ywg0LLQsdGD0LTQvtCy0LDQvdGWINC00LDQvdGWINGWINCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0YbRliDRgNC+0LfRiNC40YDQtdC90L3Rjywg0LDQu9C1INGDICIKKyJpX2Jsb2NrINC80ZbRgdGC0LjRgtGM0YHRjyDQvNC+0YLQu9C+0YUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisi0KMg0YHQv9C40YHQutGDINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyINC/0L7QstGW0LTQvtC80LvRj9GU0YLRjNGB0Y8sINGJ0L4gQGkg0YHQv9C40YHQutGDINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyICIKKyLQv9C+0YjQutC+0LTQttC10L3Qvi4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbnQgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTQKK21zZ2lkICJAQSBAeCByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIiIKKyLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgNC+0LfQvNGW0YHRgtC40YLQuCDRgdGC0YDRg9C60YLRg9GA0YMg0YDQvtC30LzRltGJ0LXQvdC90Y8g0YDQtdCz0ZbQvtC90ZbQsiDRgNC+0LfRiNC40YDQtdC90L3Rjy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZHVwbGljYXRlIGV4dGVudCBtYXBwaW5nXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpINC80ZbRgdGC0LjRgtGMINC00YPQsdC70Y7QstCw0L3QvdGPINC/0YDQuNCy4oCZ0Y/Qt9C60Lgg0YDQvtC30YjQuNGA0LXQvdGMXG4iCisiXHQo0LvQvtCz0ZbRh9C90LjQuSDQsdC70L7QuiAlYywg0L3QtdC60L7RgNC10LrRgtC90LjQuSDRhNGW0LfQuNGH0L3QuNC5INCx0LvQvtC6ICViLCDQtNC+0LLQttC40L3QsCAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgItC/0L7QvNC40LvQutCwINGA0L7Qt9C80ZbRidC10L3QvdGPINGDINC/0LDQvOKAmdGP0YLRliDRgdC/0LjRgdC60YMg0LfQsNGI0LjRhNGA0L7QstCw0L3QuNGFINC60LDRgtCw0LvQvtCz0ZbQslxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTI5Cittc2dpZCAiQGkgJWkgQHggdHJlZSBjb3VsZCBiZSBtb3JlIHNoYWxsb3cgKCViOyBjb3VsZCBiZSA8PSAlYylcbiIKK21zZ3N0ciAi0LTQtdGA0LXQstC+INGA0L7Qt9GI0LjRgNC10L3RjCBAaSAlaSDQvNC+0LPQu9C+INCxINCx0YPRgtC4INCy0YPQttGH0LjQvCAoJWI7INC80L7Qs9C70L4g0LHRg9GC0LggPD0gJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIG9uIGJpZ2FsbG9jIGZpbGVzeXN0ZW0gY2Fubm90IGJlIGJsb2NrIG1hcHBlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG9uIGJpZ2FsbG9jIEBmIGNhbm5vdCBiZSBAYiBtYXBwZWQuICAiCittc2dzdHIgIkBpICVpINC90LAg0YTQsNC50LvQvtCy0ZbQuSDRgdC40YHRgtC10LzRliBiaWdhbGxvYyDQvdC1INC80L7QttC1INCx0YPRgtC4INC/0L7QsuKAmdGP0LfQsNC90LUg0ZbQtyDQsdC70L7QutC+0LwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgY29ycnVwdCBAeCBoZWFkZXIuICAiCittc2dzdHIgIkBpICVpINC80LDRlCDQv9C+0YjQutC+0LTQttC10L3QuNC5INC30LDQs9C+0LvQvtCy0L7QuiDRgNC+0LfRiNC40YDQtdC90YwuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRpbWVzdGFtcChzKSBvbiBpbm9kZSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGltZXN0YW1wKHMpIG9uIEBpICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4iCittc2dzdHIgIiIKKyLQp9Cw0YHQvtCy0ZYg0L/QvtC30L3QsNGH0LrQuCDQvdCwIEBpICVpINC/0ZbRgdC70Y8gNCDQutCy0ZbRgtC90Y8gMjMxMCDRgNC+0LrRgyDQudC80L7QstGW0YDQvdC+INGUINGH0LDRgdC+0LLQuNC80LggIgorItC/0L7Qt9C90LDRh9C60LDQvNC4INC/0LXRgNGW0L7QtNGDINGH0LDRgdGDINC00L4gMTk3MCDRgNC+0LrRgy5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisi0JLQuNC60L7QvdGD0ZTQvNC+INC00L7QtNCw0YLQutC+0LLRliDQv9GA0L7RhdC+0LTQuCDQtNC70Y8g0YPRgdGD0LLQsNC90L3RjyDQsdC70L7QutGW0LIsINGP0LrRliDQstC40LrQvtGA0LjRgdGC0LDQvdC+INC/0L7QvdCw0LQg0L7QtNC90LjQvCAiCisiQGkuLi5cbiIKKyLQn9GA0L7RhdGW0LQgMUI6INC/0L7QstGC0L7RgNGO0ZTQvNC+INGB0LrQsNC90YPQstCw0L3QvdGPINC00LvRjyDQsdC70L7QutGW0LIg0LrRgNCw0YLQvdC+0LPQviDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y9cbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgItCx0LvQvtC6KNC4KSDQutGA0LDRgtC90L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDRgyBAaSAlaToiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBpbm9kZXMgKCVpKTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC60LDQvdGD0LLQsNC90L3RjyBpbm9kZSAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoaW5vZGVfZHVwX21hcCk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE3NworIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAaSBAQiAoQGlfZHVwX21hcCk6ICVtXG4iCittc2dzdHIgItC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGA0L7Qt9C80ZbRidC10L3QvdGPIEBpIChAaV9kdXBfbWFwKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4MgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQstC40LrQvtC90LDQvdC90Y8g0ZbRgtC10YDQsNGG0ZbRlyDQvdCw0LQg0LHQu9C+0LrQsNC80Lgg0YMgQGkgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTg3IGUyZnNjay9wcm9ibGVtLmM6MTU0OQorbXNnaWQgIkVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgQGEgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC60L7RgNC40LPRg9Cy0LDQvdC90Y8g0LrRltC70YzQutC+0YHRgtGWINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPINCx0LvQvtC60YMg0YDQvtC30YjQuNGA0LXQvdC+0LPQviAiCisi0LDRgtGA0LjQsdGD0YLQsCAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTk3Cittc2dpZCAiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgMUM6INGI0YPQutCw0ZTQvNC+INGDINC60LDRgtCw0LvQvtCz0LDRhSBAaSDQtyDQutGA0LDRgtC90LjQvCDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y/QvCDQsdC70L7QutGW0LJcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjAzCittc2dpZCAiUGFzcyAxRDogUmVjb25jaWxpbmcgQG0gQGJzXG4iCittc2dzdHIgItCf0YDQvtGF0ZbQtCAxRDog0YPQt9Cz0L7QtNC20YPRlNC80L4g0LHQu9C+0LrQuCDQutGA0LDRgtC90L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3Rj1xuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyLQpNCw0LnQuyAlUSAoQGkgJWksINGH0LDRgSDQstC90LXRgdC10L3QvdGPINC30LzRltC9OiAlSU0pIFxuIgorIiAg0LzQsNGUICVyINCx0LvQvtC60ZbQsiDQutGA0LDRgtC90L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3Rjywg0Y/QutGWINGUINGB0L/RltC70YzQvdC40LzQuCDQtyAlTiDRhNCw0LnQu9Cw0LzQuDpcbiIKKworIy4gQC1leHBhbmRlZDogXHQlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxNAorbXNnaWQgIlx0JVEgKEBpICMlaSwgbW9kIHRpbWUgJUlNKVxuIgorbXNnc3RyICJcdCVRIChAaSAlaSwg0YfQsNGBINCy0L3QtdGB0LXQvdC90Y8g0LfQvNGW0L06ICVJTSlcbiIKKworIy4gQC1leHBhbmRlZDogXHQ8ZmlsZXN5c3RlbSBtZXRhZGF0YT5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE5Cittc2dpZCAiXHQ8QGYgbWV0YWRhdGE+XG4iCittc2dzdHIgIlx0PNC80LXRgtCw0LTQsNC90ZYg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuD5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKK21zZ2lkICIiCisiKFRoZXJlIGFyZSAlTiBAaXMgY29udGFpbmluZyBAbSBAYnMuKVxuIgorIlxuIgorbXNnc3RyICIiCisiKNCG0YHQvdGD0ZQgJU4gQGksINGJ0L4g0LzRltGB0YLRj9GC0Ywg0LHQu9C+0LrQuCDQutGA0LDRgtC90L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3Rjy4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQsdC70L7QutC4INC60YDQsNGC0L3QvtCz0L4g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINCy0LbQtSDQv9C+0LLRgtC+0YDQvdC+INC/0YDQuNC30L3QsNGH0LXQvdC+INCw0LHQviDQutC70L7QvdC+0LLQsNC90L4uXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI0MgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBjbG9uZSBmaWxlOiAlbVxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC60LvQvtC90YPQstCw0YLQuCDRhNCw0LnQuzogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgMUE6INC+0L/RgtC40LzRltC30YPRlNC80L4g0ZbRlNGA0LDRgNGF0ZbRlyDRgNC+0LfRiNC40YDQtdC90YxcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC+0L/RgtC40LzRltC30YPQstCw0YLQuCDRltGU0YDQsNGA0YXRltGOINGA0L7Qt9GI0LjRgNC10L3RjCAlcCAoJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKK21zZ2lkICJPcHRpbWl6aW5nIEB4IHRyZWVzOiAiCittc2dzdHIgItCe0L/RgtC40LzRltC30YPRlNC80L4g0ZbRlNGA0LDRgNGF0ZbRlyDRgNC+0LfRiNC40YDQtdC90Yw6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKyLQktC90YPRgtGA0ZbRiNC90Y8g0L/QvtC80LjQu9C60LA6INC00LXRgNC10LLQviDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQviDRgNC+0LfRiNC40YDQtdC90L3RjyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8ICglYjsg0LzQsNC70L4gIgorItCx0YPRgtC4PSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAi0LTQtdGA0LXQstC+INGA0L7Qt9GI0LjRgNC10L3RjCBAaSAlaSAo0L3QsCDRgNGW0LLQvdGWICViKSDQvNCw0LvQviDQsSDQsdGD0YLQuCDQutC+0YDQvtGC0YjQuNC8LiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgItC00LXRgNC10LLQviDRgNC+0LfRiNC40YDQtdC90YwgQGkgJWkgKNC90LAg0YDRltCy0L3RliAlYikg0LzQsNC70L4g0LEg0LHRg9GC0Lgg0LLRg9C20YfQuNC8LiAgIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAi0J/RgNC+0YXRltC0IDI6INC/0LXRgNC10LLRltGA0Y/RlNC80L4g0YHRgtGA0YPQutGC0YPRgNGDINC60LDRgtCw0LvQvtCz0ZbQslxuIgorCisjLiBALWV4cGFuZGVkOiBpbnZhbGlkIGlub2RlIG51bWJlciBmb3IgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBuIEBpIG51bWJlciBmb3IgJy4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICLQvdC10LrQvtGA0LXQutGC0L3QuNC5INC90L7QvNC10YAgQGkg0LTQu9GPIMKrLsK7INGDIEBpINC60LDRgtCw0LvQvtCz0YMgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGludmFsaWQgaW5vZGUgIzogJURpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDAKK21zZ2lkICJARSBoYXMgQG4gQGkgIzogJURpLlxuIgorbXNnc3RyICJARSDQvNGW0YHRgtC40YLRjCDQvdC10LrQvtGA0LXQutGC0L3QuNC5IEBpINC3INC90L7QvNC10YDQvtC8ICVEaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgJURpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMDUKK21zZ2lkICJARSBoYXMgQEQvdW51c2VkIEBpICVEaS4gICIKK21zZ3N0ciAiQEUg0LzRltGB0YLQuNGC0Ywg0LLQuNC70YPRh9C10L3QuNC5INCw0LHQviDQvdC10LLQuNC60L7RgNC40YHRgtCw0L3QuNC5IEBpICVEaS4gICIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gJy4nICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxMAorbXNnaWQgIkBFIEBMIHRvICcuJyAgIgorbXNnc3RyICJARSBATCDQvdCwIMKrLsK7ICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICJARSDQstC60LDQt9GD0ZQg0L3QsCBAaSAoJURpKSwg0YDQvtC30YLQsNGI0L7QstCw0L3QuNC5INGDINC/0L7QvNC40LvQutC+0LLQvtC80YMg0LHQu9C+0YbRli5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gZGlyZWN0b3J5ICVQICglRGkpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjAKK21zZ2lkICJARSBATCB0byBAZCAlUCAoJURpKS5cbiIKK21zZ3N0ciAiQEUgQEwg0L3QsCDQutCw0YLQsNC70L7QsyAlUCAoJURpKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyNQorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAiQEUgQEwg0L3QsCBAci5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJARSDQvNGW0YHRgtC40YLRjCDQvdC10LrQvtGA0LXQutGC0L3RliDRgdC40LzQstC+0LvQuCDRgyDQvdCw0LfQstGWLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAi0J/RgNC+0L/Rg9GJ0LXQvdC+IMKrLsK7INGDIGlub2RlINC60LDRgtCw0LvQvtCz0YMgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgItCd0LUg0LLQuNGB0YLQsNGH0LDRlCDCqy4uwrsg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICLQn9C10YDRiNC40Lwg0LfQsNC/0LjRgdC+0LwgwqslRG7CuyAoQGk9JURpKSDRgyBAaSDQutCw0YLQsNC70L7Qs9GDICVpICglcCkg0LzQsNGUINCx0YPRgtC4IMKrLsK7XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAi0JTRgNGD0LPQuNC8INC30LDQv9C40YHQvtC8IMKrJURuwrsgKEBpPSVEaSkg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyAlaSDQvNCw0ZQg0LHRg9GC0LggwqsuLsK7XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmFkZHIgZm9yIGlub2RlICVpICglUSkgaXMgJUlGLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzU1Cittc2dpZCAiaV9mYWRkciBARiAlSUYsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmFkZHIg0LTQu9GPIGlub2RlINC00L7RgNGW0LLQvdGO0ZQgJUlGLCDQvNCw0ZQg0LHRg9GC0Lgg0L3Rg9C70YzQvtCy0LjQvC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjAKK21zZ2lkICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9maWxlX2FjbCBARiAlSWYsINCwINC80LDRlCDQsdGD0YLQuCDQvdGD0LvRjC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9kaXJfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZCwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2NQorbXNnaWQgImlfZGlyX2FjbCBARiAlSWQsIEBzIHplcm8uXG4iCittc2dzdHIgImlfZGlyX2FjbCBARiAlSWQsINCwINC80LDRlCDQsdGD0YLQuCDQvdGD0LvRjC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCittc2dpZCAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZyYWcgQEYgJU4sINCwINC80LDRlCDQsdGD0YLQuCDQvdGD0LvRjC5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mc2l6ZSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM3NQorbXNnaWQgImlfZnNpemUgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZnNpemUgQEYgJU4sINCwINC80LDRlCDQsdGD0YLQuCDQvdGD0LvRjC5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpINC80LDRlCDQvdC10LrQvtGA0LXQutGC0L3QuNC5INGA0LXQttC40LwgKCVJbSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGNvcnJ1cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODUKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkBpINC60LDRgtCw0LvQvtCz0YMgJWksICVCLCDQstGW0LTRgdGC0YPQvyAlTjog0LrQsNGC0LDQu9C+0LMg0L/QvtGI0LrQvtC00LbQtdC90L5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTAKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbiIKK21zZ3N0ciAiaW5vZGUg0LrQsNGC0LDQu9C+0LPRgyAlaSwgJUIsINCy0ZbQtNGB0YLRg9C/ICVOOiDQvdCw0LfQstCwINGE0LDQudC70LAg0ZQg0L3QsNC00YLQviDQtNC+0LLQs9C+0Y5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzk1Cittc2dpZCAiQGQgQGkgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgIgorbXNnc3RyICJAaSDQutCw0YLQsNC70L7Qs9GDICVpINC80ZbRgdGC0LjRgtGMINC90LXRgNC+0LfQv9C+0LTRltC70LXQvdC40LkgJUIuICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgItC30LDQv9C40YEg0LrQsNGC0LDQu9C+0LPRgyDCqy7CuyDRgyBAaSDQutCw0YLQsNC70L7Qs9GDICVpINC90LUg0LfQsNCy0LXRgNGI0LXQvdC+INGB0LjQvNCy0L7Qu9C+0LwgTlVMTFxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgItC30LDQv9C40YEg0LrQsNGC0LDQu9C+0LPRgyDCqy4uwrsg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyAlaSDQvdC1INC30LDQstC10YDRiNC10L3QviDRgdC40LzQstC+0LvQvtC8IE5VTExcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJAaSAlaSAoJVEpINGUINC90LXQutC+0YDQtdC60YLQvdC40Lwg0YHQuNC80LLQvtC70YzQvdC40Lwg0L/RgNC40YHRgtGA0L7RlNC8LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJAaSAlaSAoJVEpINGUINC90LXQutC+0YDQtdC60YLQvdC40Lwg0LHQu9C+0LrQvtCy0LjQvCDQv9GA0LjRgdGC0YDQvtGU0LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiQEUg0ZQg0LTRg9Cx0LvRltC60LDRgtC+0Lwg0LfQsNC/0LjRgdGDIMKrLsK7LlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGR1cGxpY2F0ZSAnLi4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjUKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4uJyBAZS5cbiIKK21zZ3N0ciAiQEUg0ZQg0LTRg9Cx0LvRltC60LDRgtC+0Lwg0LfQsNC/0LjRgdGDIMKrLi7Cuy5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNDMwIGUyZnNjay9wcm9ibGVtLmM6MTc2NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgZmluZCBkaXJfaW5mbyBmb3IgJWkuXG4iCittc2dzdHIgItCS0L3Rg9GC0YDRltGI0L3RjyDQv9C+0LzQuNC70LrQsDog0L3QtSDQstC00LDQu9C+0YHRjyDQt9C90LDQudGC0LggZGlyX2luZm8g0LTQu9GPICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyByZWNfbGVuIG9mICVEciwgc2hvdWxkIGJlICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzUKK21zZ2lkICJARSBoYXMgcmVjX2xlbiBvZiAlRHIsIEBzICVOLlxuIgorbXNnc3RyICJARSDQvNCw0ZQgcmVjX2xlbiAlRHIsINC80LDRlCDQsdGD0YLQuCAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpY291bnQgc3RydWN0dXJlOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgaWNvdW50IHN0cnVjdHVyZTogJW1cbiIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0YDQvtC30LzRltGB0YLQuNGC0Lgg0YHRgtGA0YPQutGC0YPRgNGDIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQstC40LrQvtC90LDQvdC90Y8g0ZbRgtC10YDQsNGG0ZbRlyDRgdC/0LjRgdC60L7QvCDQsdC70L7QutGW0LIg0LrQsNGC0LDQu9C+0LPRltCyOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTAKK21zZ2lkICJFcnJvciByZWFkaW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGH0LjRgtCw0L3QvdGPINCx0LvQvtC60YMg0LrQsNGC0LDQu9C+0LPRgyAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC30LDQv9C40YHQsNGC0Lgg0LHQu9C+0Log0LrQsNGC0LDQu9C+0LPRgyAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG5ldyBkaXJlY3RvcnkgYmxvY2sgZm9yIGlub2RlICVpICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBuZXcgQGQgQGIgZm9yIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIiIKKyLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgNC+0LfQvNGW0YHRgtC40YLQuCDQvdC+0LLQuNC5INCx0LvQvtC6INC60LDRgtCw0LvQvtCz0YMg0LTQu9GPIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRlYWxsb2NhdGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRlYWxsb2NhdGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0YDQvtC30LzRltGJ0LXQvdC90Y8gQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAi0LfQsNC/0LjRgSDQutCw0YLQsNC70L7Qs9GDINC00LvRjyDCqy7CuyDRgyAlcCAoJWkpINGUINCy0LXQu9C40LrQuNC8LlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpINGUINC90LXQutC+0YDQtdC60YLQvdC40LwgRklGTy5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIHNvY2tldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDgwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBzb2NrZXQuXG4iCittc2dzdHIgIkBpICVpICglUSkg0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQvCDRgdC+0LrQtdGC0L7QvC5cbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvRjtGU0LzQviDRgtC40L8g0YTQsNC50LvQsCDQtNC70Y8gQEUg0YMg0LfQvdCw0YfQtdC90L3RjyAlTi5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBzaG91bGQgYmUgJU4pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0OTAKK21zZ2lkICJARSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgJUR0LCBAcyAlTikuXG4iCittc2dzdHIgIkBFINC90LDQu9C10LbQuNGC0Ywg0LTQviDQvdC10LrQvtGA0LXQutGC0L3QvtCz0L4g0YLQuNC/0YMg0YTQsNC50LvRltCyICjQsdGD0LvQviAlRHQsINC80LDRlCDQsdGD0YLQuCAlTikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDk1Cittc2dpZCAiQEUgaGFzIGZpbGV0eXBlIHNldC5cbiIKK21zZ3N0ciAiQEUg0LzQsNGUINGD0YHRgtCw0L3QvtCy0LvQtdC90LjQuSDRgtC40L8g0YTQsNC50LvQsC5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJARSDQvNCw0ZQg0L3QsNC30LLRgyDQvdGD0LvRjNC+0LLQvtGXINC00L7QstC20LjQvdC4LlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgItCh0LjQvNCy0L7Qu9GW0YfQvdC1INC/0L7RgdC40LvQsNC90L3RjyAlUSAoQGkgIyVpKSDRlCDQvdC10LrQvtGA0LXQutGC0L3QuNC8LlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgItCx0LvQvtC6INGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0LDRgtGA0LjQsdGD0YLQsCBARiDQvdC10LrQvtGA0LXQutGC0L3QuNC8ICglSWYpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICIiCisi0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0LzRltGB0YLQuNGC0Ywg0LLQtdC70LjQutGWINGE0LDQudC70LgsINCw0LvQtSDQvdC1INC80LDRlCDQv9GA0LDQv9C+0YDRhtGPIExBUkdFX0ZJTEUg0YMgIgorItGB0YPQv9C10YDQsdC70L7RhtGWLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgbm90IHJlZmVyZW5jZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTIwCittc2dpZCAiQHAgQGggJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4iCittc2dzdHIgItC/0YDQvtCx0LvQtdC80LAg0YMgaW5vZGUg0LrQsNGC0LDQu9C+0LPRgyBIVFJFRSAlZDog0L3QtdC80LDRlCDQv9C+0YHQuNC70LDQvdC90Y9cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTI1Cittc2dpZCAiQHAgQGggJWQ6ICVCIHJlZmVyZW5jZWQgdHdpY2VcbiIKK21zZ3N0ciAi0L/RgNC+0LHQu9C10LzQsCDRgyBpbm9kZSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVkOiDQv9C+0LTQstGW0LnQvdC1INC/0L7RgdC40LvQsNC90L3RjyDQvdCwICVCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzMAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1pbiBoYXNoXG4iCittc2dzdHIgIiIKKyLQv9GA0L7QsdC70LXQvNCwINGDIEBpINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWQ6ICVCINC80LDRlCDQv9C+0LzQuNC70LrQvtCy0YMg0LzRltC90ZbQvNCw0LvRjNC90YMg0YXQtdGILdGB0YPQvNGDXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUzNQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYmFkIG1heCBoYXNoXG4iCittc2dzdHIgIiIKKyLQv9GA0L7QsdC70LXQvNCwINGDIEBpINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWQ6ICVCINC80LDRlCDQv9C+0LzQuNC70LrQvtCy0YMg0LzQsNC60YHQuNC80LDQu9GM0L3RgyDRhdC10Ygt0YHRg9C80YNcbiIKKworIy4gQC1leHBhbmRlZDogaW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTQwCittc2dpZCAiQG4gQGggJWQgKCVxKS4gICIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90LjQuSBpbm9kZSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVkICglcSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgItC/0YDQvtCx0LvQtdC80LAg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyBIVFJFRSAlZCAoJXEpOiDQv9C+0LzQuNC70LrQvtCy0LjQuSDQvdC+0LzQtdGAINCx0LvQvtC60YMgJWIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICLQv9GA0L7QsdC70LXQvNCwINGDIEBpINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWQ6INC60L7RgNC10L3QtdCy0LjQuSDQstGD0LfQvtC7INGUINC90LXQutC+0YDQtdC60YLQvdC40LxcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgItC/0YDQvtCx0LvQtdC80LAg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyBIVFJFRSAlZDogJUIg0LzQsNGUINC90LXQutC+0YDQtdC60YLQvdC1INC+0LHQvNC10LbQtdC90L3RjyAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBjb3VudCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gY291bnQgKCVOKVxuIgorbXNnc3RyICLQv9GA0L7QsdC70LXQvNCwINGDIEBpINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWQ6ICVCINC80LDRlCDQvdC10LrQvtGA0LXQutGC0L3RgyDQutGW0LvRjNC60ZbRgdGC0YwgKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbiIKK21zZ3N0ciAi0L/RgNC+0LHQu9C10LzQsCDRgyBAaSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVkOiAlQiDQvNCw0ZQg0L3QtdCy0L/QvtGA0Y/QtNC60L7QstCw0L3RgyDRgtCw0LHQu9C40YbRjiDRhdC10YjRltCyXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiAlQiBoYXMgaW52YWxpZCBkZXB0aCAoJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3NAorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgQG4gZGVwdGggKCVOKVxuIgorbXNnc3RyICIiCisi0L/RgNC+0LHQu9C10LzQsCDRgyBAaSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVkOiAlQiDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQuSDRgNGW0LLQtdC90Ywg0LLQutC70LDQtNC10L3QvtGB0YLRliAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzkKK21zZ2lkICJEdXBsaWNhdGUgQEUgZm91bmQuICAiCittc2dzdHIgItCS0LjRj9Cy0LvQtdC90L4g0LTRg9Cx0LvRltC60LDRgiDQt9Cw0L/QuNGB0YMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisi0KMg0LfQsNC/0LjRgdGWINC80ZbRgdGC0LjRgtGM0YHRjyDQvdC10YPQvdGW0LrQsNC70YzQvdCwINC90LDQt9Cy0LAg0YTQsNC50LvQsC5cbiIKKyLQn9C10YDQtdC50LzQtdC90L7QstGD0ZTQvNC+INC90LAgJXMiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCS0LjRj9Cy0LvQtdC90L4g0LTRg9Cx0LvRltC60LDRgiDQt9Cw0L/QuNGB0YMgwqslRG7Cuy5cbiIKKyJcdNCf0L7Qt9C90LDRh9Cw0ZTQvNC+ICVwICglaSkg0LTQu9GPINC/0L7QstGC0L7RgNC90L7RlyDQv9C+0LHRg9C00L7QstC4LlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Jsb2Nrc19oaSBARiAlTiwg0LzQsNGUINCx0YPRgtC4INC90YPQu9GMLlxuIgorCisjLiBALWV4cGFuZGVkOiBVbmV4cGVjdGVkIGJsb2NrIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1OTkKK21zZ2lkICJVbmV4cGVjdGVkIEBiIGluIEBoICVkICglcSkuXG4iCittc2dzdHIgItCd0LXQvtGH0ZbQutGD0LLQsNC90LjQuSDQsdC70L7QuiDRgyBAaSDQutCw0YLQsNC70L7Qs9GDIEhUUkVFICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICJARSDQv9C+0YHQuNC70LDRlNGC0YzRgdGPINC90LAgQGkgJURpINGDINCz0YDRg9C/0ZYgJWcsINC00LUg0LLRgdGC0LDQvdC+0LLQu9C10L3QviBfSU5PREVfVU5JTklULlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGZvdW5kIGluIGdyb3VwICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDgKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBmb3VuZCBpbiBAZyAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbiIKK21zZ3N0ciAiIgorIkBFINC/0L7RgdC40LvQsNGU0YLRjNGB0Y8g0L3QsCBAaSAlRGksINGP0LrQuNC5INC30L3QsNC50LTQtdC90L4g0YMg0L7QsdC70LDRgdGC0ZYg0L3QtdCy0LjQutC+0YDQuNGB0YLQsNC90LjRhSBAaSDQs9GA0YPQv9C4ICIKKyIlZy5cbiIKKworIy4gQC1leHBhbmRlZDogaV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYxMworbXNnaWQgImlfZmlsZV9hY2xfaGkgQEYgJU4sIEBzIHplcm8uXG4iCittc2dzdHIgImlfZmlsZV9hY2xfaGkgQEYgJU4sINC80LDRlCDQsdGD0YLQuCDQvdGD0LvRjC5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKyLQv9GA0L7QsdC70LXQvNCwINGDIEBpINC60LDRgtCw0LvQvtCz0YMgSFRSRUUgJWQ6INC60L7RgNC10L3QtdCy0LjQuSDQstGD0LfQvtC7INC90LUg0L/RgNC+0LnRiNC+0LIg0L/QtdGA0LXQstGW0YDQutC4ICIKKyLQutC+0L3RgtGA0L7Qu9GM0L3QvtGOINGB0YPQvNC+0Y5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorItC/0YDQvtCx0LvQtdC80LAg0YMgQGkg0LrQsNGC0LDQu9C+0LPRgyBIVFJFRSAlZDog0LLQvdGD0YLRgNGW0YjQvdGW0Lkg0LLRg9C30L7QuyDQvdC1INC/0YDQvtC50YjQvtCyINC/0LXRgNC10LLRltGA0LrQuCAiCisi0LrQvtC90YLRgNC+0LvRjNC90L7RjiDRgdGD0LzQvtGOXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjI4Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGkg0LrQsNGC0LDQu9C+0LPRgyAlaSwgJUIsINCy0ZbQtNGB0YLRg9C/ICVOOiDQutCw0YLQsNC70L7QsyDQvdC1INC80LDRlCDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4LlxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzMworbXNnaWQgIkBkIEBpICVpLCAlQjogQGQgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIiIKKyJAaSAlaSDQutCw0YLQsNC70L7Qs9GDLCAlQjog0LrQsNGC0LDQu9C+0LMg0L/RgNC+0LnRiNC+0LIg0L/QtdGA0LXQstGW0YDQutGDLCDQsNC70LUg0LzQsNGUINC90LXQstGW0LTQv9C+0LLRltC00L3RgyAiCisi0LrQvtC90YLRgNC+0LvRjNC90YMg0YHRg9C80YMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IElubGluZSBkaXJlY3RvcnkgaW5vZGUgJWkgc2l6ZSAoJU4pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MzgKK21zZ2lkICJJbmxpbmUgQGQgQGkgJWkgc2l6ZSAoJU4pIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LlxuIgorbXNnc3RyICLQoNC+0LfQvNGW0YAgQGkgJWkg0LLQsdGD0LTQvtCy0LDQvdC+0LPQviDQutCw0YLQsNC70L7Qs9GDICglTikg0LzQsNGUINCx0YPRgtC4INC60YDQsNGC0L3QuNC8INC00L4gNC5cbiIKKworIy4gQC1leHBhbmRlZDogRml4aW5nIHNpemUgb2YgaW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBmYWlsZWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0MworIywgYy1mb3JtYXQKK21zZ2lkICJGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgQGQgQGkgJWkgZmFpbGVkLlxuIgorbXNnc3RyICIiCisi0KHQv9GA0L7QsdCwINCy0LjQv9GA0LDQstC70LXQvdC90Y8g0YDQvtC30LzRltGA0YMgQGkgJWkg0LLQsdGD0LTQvtCy0LDQvdC+0LPQviDQutCw0YLQsNC70L7Qs9GDINC30LDQt9C90LDQu9CwINC90LXQstC00LDRh9GWLlxuIgorCisjLiBALWV4cGFuZGVkOiBFbmNyeXB0ZWQgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyB0b28gc2hvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0OAorbXNnaWQgIkVuY3J5cHRlZCBARSBpcyB0b28gc2hvcnQuXG4iCittc2dzdHIgItCX0LDRiNC40YTRgNC+0LLQsNC90LjQuSBARSDRlCDQvdCw0LTRgtC+INC60L7RgNC+0YLQutC40LwuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgMzog0L/QtdGA0LXQstGW0YDRj9GU0LzQviDQvNC+0LbQu9C40LLRltGB0YLRjCDQt+KAmdGU0LTQvdCw0L3QvdGPINC60LDRgtCw0LvQvtCz0YNcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICLQutC+0YDQtdC90LXQstC40LkgaW5vZGUg0L3QtSDRgNC+0LfQvNGW0YnQtdC90L4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IE5vIHJvb20gaW4gbG9zdCtmb3VuZCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2NQorbXNnaWQgIk5vIHJvb20gaW4gQGwgQGQuICAiCittc2dzdHIgItCd0LXQtNC+0YHRgtCw0YLQvdGM0L4g0LzRltGB0YbRjyDQtNC70Y8g0LrQsNGC0LDQu9C+0LPRgyBAbC4gICIKKworIy4gQC1leHBhbmRlZDogVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlICVpICglcClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuY29ubmVjdGVkIEBkIEBpICVpICglcClcbiIKK21zZ3N0ciAi0J3QtdC34oCZ0ZTQtNC90LDQvdC40LkgQGkg0LrQsNGC0LDQu9C+0LPRgyAlaSAoJXApXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjc1Cittc2dpZCAiL0BsIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiL0BsINC90LUg0LfQvdCw0LnQtNC10L3Qvi4gICIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAiwqsuLsK7INGDICVRICglaSkg0LTQvtGA0ZbQstC90Y7RlCAlUCAoJWopLCDQvNCw0ZQg0LHRg9GC0LggJXEgKCVkKS5cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIG9yIG5vbi1leGlzdGVudCAvbG9zdCtmb3VuZC4gIENhbm5vdCByZWNvbm5lY3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4NQorbXNnaWQgIkJhZCBvciBub24tZXhpc3RlbnQgL0BsLiAgQ2Fubm90IHJlY29ubmVjdC5cbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutC+0LLQuNC5INC60LDRgtCw0LvQvtCzIC9AbCDQsNCx0L4g0LrQsNGC0LDQu9C+0LPRgyDQvdC1INGW0YHQvdGD0ZQuINCf0L7QstGC0L7RgNC90LUg0L/RgNC40ZTQtNC90LDQvdC90Y8gIgorItC90LXQvNC+0LbQu9C40LLQtS5cbiIKKworIy4gQC1leHBhbmRlZDogQ291bGQgbm90IGV4cGFuZCAvbG9zdCtmb3VuZDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBleHBhbmQgL0BsOiAlbVxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINGA0L7Qt9Cz0L7RgNC90YPRgtC4IC9AbDogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCByZWNvbm5lY3QgJWk6ICVtXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/QvtCy0YLQvtGA0L3QviDQv9GA0LjRlNC00L3QsNGC0LggJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9C90LDQudGC0LggL0BsOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Jsb2NrOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AYjogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19AYjog0L/QvtCy0ZbQtNC+0LzQu9C10L3QvdGPICVtINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQuNGC0Lgg0LrQsNGC0LDQu9C+0LPRgyAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfQGk6INC/0L7QstGW0LTQvtC80LvQtdC90L3RjyAlbSDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdGC0LLQvtGA0LjRgtC4INC60LDRgtCw0LvQvtCz0YMgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X2Rpcl9AYjogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IEBkIEBiXG4iCittc2dzdHIgImV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSDQv9GW0LQg0YfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDQsdC70L7QutGDINC60LDRgtCw0LvQvtCz0YNcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX2Jsb2NrOiAlbSDQv9GW0LQg0YfQsNGBINC30LDQv9C40YHRgyDQsdC70L7QutGDINC60LDRgtCw0LvQvtCz0YMg0LTQu9GPIC9AbFxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBhZGp1c3RpbmcgaW5vZGUgY291bnQgb24gaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGFkanVzdGluZyBAaSBjb3VudCBvbiBAaSAlaVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQutC+0YDQuNCz0YPQstCw0L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliBAaSDQvdCwIEBpICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvdWxkbid0IGZpeCBwYXJlbnQgb2YgaW5vZGUgJWk6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC1INCy0LTQsNC70L7RgdGPINCy0LjQv9GA0LDQstC40YLQuCDQsdCw0YLRjNC60ZbQstGB0YzQutC40Lkg0LLRg9C30L7QuyBAaSAlaTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC1INCy0LTQsNC70L7RgdGPINCy0LjQv9GA0LDQstC40YLQuCDQsdCw0YLRjNC60ZbQstGB0YzQutC40Lkg0LrQsNGC0LDQu9C+0LMgQGkgJWk6INC90LUg0LLQtNCw0LvQvtGB0Y8g0LfQvdCw0LnRgtC4INC30LDQv9C40YEgIgorItCx0LDRgtGM0LrRltCy0YHRjNC60L7Qs9C+INC60LDRgtCw0LvQvtCz0YNcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgcm9vdCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIHJvb3QgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8g0LrQvtGA0LXQvdC10LLQvtCz0L4g0LrQsNGC0LDQu9C+0LPRgyAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyAvbG9zdCtmb3VuZCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIC9AbCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDQutCw0YLQsNC70L7Qs9GDIC9AbCAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeTsgYWJvcnRpbmcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1NQorbXNnaWQgIkByIGlzIG5vdCBhIEBkOyBhYm9ydGluZy5cbiIKK21zZ3N0ciAi0LrQvtGA0LXQvdC10LLQuNC5IEBpINC90LUg0ZQg0LrQsNGC0LDQu9C+0LPQvtC8OyDQv9C10YDQtdGA0LjQstCw0ZTQvNC+INC+0LHRgNC+0LHQutGDLlxuIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgcm9vdCBpbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzYwCittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIEByLlxuIgorbXNnc3RyICLQn9GA0L7QtNC+0LLQttC10L3QvdGPINC+0LHRgNC+0LHQutC4INCx0LXQtyDQutC+0YDQtdC90LXQstC+0LPQviBAaSDQvdC10LzQvtC20LvQuNCy0LUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCDQvdC1INGUINC60LDRgtCw0LvQvtCz0L7QvCAoaW5vPSVpKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIvQGwg0LzRltGB0YLQuNGC0Ywg0LLQsdGD0LTQvtCy0LDQvdGWINC00LDQvdGWXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorItCd0LUg0LLQtNCw0LvQvtGB0Y8g0YDQvtC30LzRltGB0YLQuNGC0Lgg0LTQsNC90ZYgL0BsLlxuIgorItCg0L7Qt9GC0LDRiNC+0LLRg9GU0LzQviDQstGC0YDQsNGH0LXQvdGWINGE0LDQudC70Lgg0YMg0LrQvtGA0LXQvdC10LLQvtC80YMg0LrQsNGC0LDQu9C+0LfRliIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisi0J3QtdC00L7RgdGC0LDRgtC90YzQviDQstGW0LvRjNC90L7Qs9C+INC80ZbRgdGG0Y8g0LTQu9GPINCy0ZbQtNC90L7QstC70LXQvdC90Y8g0LLRgtGA0LDRh9C10L3QuNGFINGE0LDQudC70ZbQsiFcbiIKKyLQn9C10YDQtdGB0YPQvdGM0YLQtSDRj9C60ZbRgdGMINC00LDQvdGWINC3INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0ZYg0L/QvtCy0YLQvtGA0L3QviDQt9Cw0L/Rg9GB0YLRltGC0YwgZTJmc2NrLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkwCittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICIvQGwg0LfQsNGI0LjRhNGA0L7QstCw0L3QvlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgItCf0YDQvtGF0ZbQtCAzQTog0L7Qv9GC0LjQvNGW0LfRg9GU0LzQviDQutCw0YLQsNC70L7Qs9C4XG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgwMgorIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIGRpcnNfdG9faGFzaCBpdGVyYXRvcjogJW1cbiIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDRgdGC0LLQvtGA0LjRgtC4INGW0YLQtdGA0LDRgtC+0YAgZGlyc190b19oYXNoOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7Qv9GC0LjQvNGW0LfRg9Cy0LDRgtC4INC60LDRgtCw0LvQvtCzICVxICglZCk6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgxMgorbXNnaWQgIk9wdGltaXppbmcgZGlyZWN0b3JpZXM6ICIKK21zZ3N0ciAi0J7Qv9GC0LjQvNGW0LfRg9GU0LzQviDQutCw0YLQsNC70L7Qs9C4OiAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgyOQorbXNnaWQgIlBhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50c1xuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgNDog0L/QtdGA0LXQstGW0YDRj9GU0LzQviDQutGW0LvRjNC60L7RgdGC0ZYg0L/QvtGB0LjQu9Cw0L3RjFxuIgorCisjLiBALWV4cGFuZGVkOiB1bmF0dGFjaGVkIHplcm8tbGVuZ3RoIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHUgQHogQGkgJWkuICAiCittc2dzdHIgItC90LXQt+KAmdGU0LTQvdCw0L3QuNC5IEBpINC90YPQu9GM0L7QstC+0Zcg0LTQvtCy0LbQuNC90LggJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgItC90LXQt+KAmdGU0LTQvdCw0L3QuNC5IEBpICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgItC60ZbQu9GM0LrRltGB0YLRjCDQv9C+0YHQuNC70LDQvdGMIEBpICVpINC00L7RgNGW0LLQvdGO0ZQgJUlsLCDQsCDQvNCw0ZQg0LHRg9GC0LggJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4KKyMuIEAtZXhwYW5kZWQ6IFx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4KKyMuIEAtZXhwYW5kZWQ6IGlub2RlX2xpbmtfaW5mb1slaV0gaXMgJU4sIGlub2RlLmlfbGlua3NfY291bnQgaXMgJUlsLiAgVGhleSBzaG91bGQgYmUgdGhlIHNhbWUhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0OAorbXNnaWQgIiIKKyJXQVJOSU5HOiBQUk9HUkFNTUlORyBCVUcgSU4gRTJGU0NLIVxuIgorIlx0T1IgU09NRSBCT05FSEVBRCAoWU9VKSBJUyBDSEVDS0lORyBBIE1PVU5URUQgKExJVkUpIEZJTEVTWVNURU0uXG4iCisiQGlfbGlua19pbmZvWyVpXSBpcyAlTiwgQGkuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IEBzIHRoZSBzYW1lIVxuIgorbXNnc3RyICIiCisi0KPQktCQ0JPQkDog0J/QntCc0JjQm9Ca0JAg0KMg0JrQntCU0IYgRTJGU0NLIVxuIgorIlx00JDQkdCeINCl0KLQntCh0KwgKNCS0JgpINCf0JXQoNCV0JLQhtCg0K/QhCDQl9Cc0J7QndCi0J7QktCQ0J3QoyAo0KDQntCR0J7Qp9CjKSDQpNCQ0JnQm9Ce0JLQoyDQodCY0KHQotCV0JzQoy5cbiIKKyJAaV9saW5rX2luZm9bJWldINC00L7RgNGW0LLQvdGO0ZQgJU4sINCwIEBpLmlfbGlua3NfY291bnQg0LTQvtGA0ZbQstC90Y7RlCAlSWwuINCm0ZYg0LfQvdCw0YfQtdC90L3RjyAiCisi0LzQsNGO0YLRjCDQsdGD0YLQuCDQvtC00L3QsNC60L7QstC40LzQuCFcbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg1OAorbXNnaWQgIlBhc3MgNTogQ2hlY2tpbmcgQGcgc3VtbWFyeSBpbmZvcm1hdGlvblxuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQgNTog0L/QtdGA0LXQstGW0YDRj9GU0LzQviDRltC90YTQvtGA0LzQsNGG0ZbRjiDRgNC10LfRjtC80LUg0YnQvtC00L4g0LPRgNGD0L9cbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICLQndC1INCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0LTQvtC/0L7QstC90LXQvdC90Y8g0L3QsNC/0YDQuNC60ZbQvdGG0ZYg0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCBpbm9kZS4gIgorCisjLiBALWV4cGFuZGVkOiBQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NjgKK21zZ2lkICJQYWRkaW5nIGF0IGVuZCBvZiBAYiBAQiBpcyBub3Qgc2V0LiAiCittc2dzdHIgItCd0LUg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDQtNC+0L/QvtCy0L3QtdC90L3RjyDQvdCw0L/RgNC40LrRltC90YbRliDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4INCx0LvQvtC60ZbQsi4gIgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODczCittc2dpZCAiQGIgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAi0LLRltC00LzRltC90L3QvtGB0YLRliDRgyDQsdGW0YLQvtCy0ZbQuSDQutCw0YDRgtGWINCx0LvQvtC60ZbQsjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAi0LLRltC00LzRltC90L3QvtGB0YLRliDRgyDQsdGW0YLQvtCy0ZbQuSDQutCw0YDRgtGWIEBpOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICLQmtGW0LvRjNC60ZbRgdGC0Ywg0LLRltC70YzQvdC40YUgQGkg0YMg0LPRgNGD0L/RliAlZyDRlCDQv9C+0LzQuNC70LrQvtCy0L7RjiAoJWksINC90LDRgNCw0YXQvtCy0LDQvdC+PSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTgKK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQsCDQutGW0LvRjNC60ZbRgdGC0Ywg0LrQsNGC0LDQu9C+0LPRltCyINC00LvRjyDQs9GA0YPQv9C4ICVnICglaSwg0L/QvtGA0LDRhdC+0LLQsNC90L49JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LAg0LrRltC70YzQutGW0YHRgtGMIEBpICglaSwg0L7QsdGH0LjRgdC70LXQvdC+PSVqKS5cbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjgKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglYiwgY291bnRlZD0lYykuXG4iCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQsCDQutGW0LvRjNC60ZbRgdGC0Ywg0LLRltC70YzQvdC40YUg0LHQu9C+0LrRltCyINC00LvRjyDQs9GA0YPQv9C4ICVnICglYiwg0L3QsNGA0LDRhdC+0LLQsNC90L49JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LAg0LrRltC70YzQutGW0YHRgtGMINCy0ZbQu9GM0L3QuNGFINCx0LvQvtC60ZbQsiAoJWIsINC90LDRgNCw0YXQvtCy0LDQvdC+PSVjKS5cbiIKKworIy4gQC1leHBhbmRlZDogUFJPR1JBTU1JTkcgRVJST1I6IGZpbGVzeXN0ZW0gKCMlTikgYml0bWFwIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIGJpdG1hcCAKKyMuIEAtZXhwYW5kZWQ6IGVuZHBvaW50cyAoJWksICVqKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzgKK21zZ2lkICIiCisiUFJPR1JBTU1JTkcgRVJST1I6IEBmICgjJU4pIEBCIGVuZHBvaW50cyAoJWIsICVjKSBkb24ndCBtYXRjaCBjYWxjdWxhdGVkIEBCICIKKyJlbmRwb2ludHMgKCVpLCAlailcbiIKK21zZ3N0ciAiIgorItCf0J7QnNCY0JvQmtCQINCjINCa0J7QlNCGOiDQutGW0L3RhtC10LLRliDRgtC+0YfQutC4INCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0LrQuCDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4ICglTikgKCViLCAlYykgIgorItC90LUg0LfQsdGW0LPQsNGO0YLRjNGB0Y8g0ZbQtyDQvtCx0YfQuNGB0LvQtdC90LjQvNC4INC60ZbQvdGG0LXQstC40LzQuCDRgtC+0YfQutCw0LzQuCDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4ICglaSwgJWopXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0NAorbXNnaWQgIkludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKCVOKVxuIgorbXNnc3RyICLQktC90YPRgtGA0ZbRiNC90Y8g0L/QvtC80LjQu9C60LA6INC/0L7QvNC40LvQutC+0LLQtSDQt9Cw0LLQtdGA0YjQtdC90L3RjyDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4ICglTilcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBpbm9kZSBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IEBpIEBCOiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINC60L7Qv9GW0Y7QstCw0L3QvdGPINC30LDQvNGW0L3QvdC40LrQsCDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4IEBpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LrQvtC/0ZbRjtCy0LDQvdC90Y8g0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCDQsdC70L7QutGW0LI6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgItCx0LvQvtC60Lgg0LPRgNGD0L/QuCAlZyDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjywg0LDQu9C1INCz0YDRg9C/0YMg0L/QvtC30L3QsNGH0LXQvdC+INGP0LogQkxPQ0tfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgImlub2RlINCz0YDRg9C/0LggJWcg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GO0YLRjNGB0Y8sINCw0LvQtSDQs9GA0YPQv9GDINC/0L7Qt9C90LDRh9C10L3QviDRj9C6IElOT0RFX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZSBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaSBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAi0LPRgNGD0L/QsCAlZywg0LHRltGC0L7QstCwINC60LDRgNGC0LAgQGkg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDQutC+0L3RgtGA0L7Qu9GM0L3RltC5INGB0YPQvNGWLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAi0LPRgNGD0L/QsCAlZywg0LHRltGC0L7QstCwINC60LDRgNGC0LAg0LHQu9C+0LrRltCyINC90LUg0LLRltC00L/QvtCy0ZbQtNCw0ZQg0LrQvtC90YLRgNC+0LvRjNC90ZbQuSDRgdGD0LzRli5cbiIKKworIy4gQC1leHBhbmRlZDogUmVjcmVhdGUgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDAxCittc2dpZCAiUmVjcmVhdGUgQGoiCittc2dzdHIgItCf0L7QstGC0L7RgNC90L4g0YHRgtCy0L7RgNGO0ZTQvNC+INC20YPRgNC90LDQuyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgItCe0L3QvtCy0LjRgtC4INC00LDQvdGWINGJ0L7QtNC+INC60LLQvtGC0Lgg0LTQu9GPINGC0LjQv9GDINC60LLQvtGC0LggJU4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINC00LDQvdC40YUg0YnQvtC00L4g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDQs9GA0YPQv9C4INCx0LvQvtC60ZbQsjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQt9Cw0L/QuNGB0YMg0LTQsNC90LjRhSDRidC+0LTQviDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4OiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZmx1c2hpbmcgd3JpdGVzIHRvIHN0b3JhZ2UgZGV2aWNlOiAlbVxuIgorbXNnc3RyICIiCisi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDQt9Cw0L/QuNGB0YMg0LTQu9GPINCy0LjRgtC40YDQsNC90L3RjyDQvdCwINC/0YDQuNGB0YLRgNGW0Lkg0LfQsdC10YDRltCz0LDQvdC90Y8g0LTQsNC90LjRhTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDI2Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9Cw0L/QuNGB0LDRgtC4INC00LDQvdGWINGJ0L7QtNC+INC60LLQvtGCINC00LvRjyDRgtC40L/RgyDQutCy0L7RgtC4ICVOOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5oYW5kbGVkIGVycm9yIGNvZGUgKDB4JXgpIVxuIgorbXNnc3RyICLQmtC+0LQg0L3QtdC/0YDQuNC00LDRgtC90L7RlyDQtNC+INC+0LHRgNC+0LHQutC4INC/0L7QvNC40LvQutC4ICgweCV4KSFcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMjcyIGUyZnNjay9wcm9ibGVtLmM6MjI3NgorbXNnaWQgIklHTk9SRUQiCittc2dzdHIgItCf0KDQntCG0JPQndCe0KDQntCS0JDQndCeIgorCisjOiBlMmZzY2svcXVvdGEuYzozMyBlMmZzY2svcXVvdGEuYzo0NgorbXNnaWQgImluIG1vdmVfcXVvdGFfaW5vZGUiCittc2dzdHIgItGDIG1vdmVfcXVvdGFfaW5vZGUiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICLQktC40LrQvtGA0LjRgdGC0LDQvdC+INC/0LDQvOKAmdGP0YLRljogJWQsINCy0LjRgtGA0LDRh9C10L3QviDRh9Cw0YHRgzogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAic2l6ZSBvZiBpbm9kZT0lZFxuIgorbXNnc3RyICLRgNC+0LfQvNGW0YAgaW5vZGU9JWRcbiIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTE5Cittc2dpZCAid2hpbGUgc3RhcnRpbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAi0L3QsCDQv9C+0YfQsNGC0LrRgyDRgdC60LDQvdGD0LLQsNC90L3RjyBpbm9kZSIKKworIzogZTJmc2NrL3NjYW50ZXN0LmM6MTMwCittc2dpZCAid2hpbGUgZG9pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstC40LrQvtC90LDQvdC90Y8g0YHQutCw0L3Rg9Cy0LDQvdC90Y8gaW5vZGUiCisKKyM6IGUyZnNjay9zdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19ibG9ja19pdGVyYXRlIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstC40LrQu9C40LrRgyBleHQyZnNfYmxvY2tfaXRlcmF0ZSDQtNC70Y8gaW5vZGUgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjIxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19hZGp1c3RfZWFfcmVmY291bnQyIGZvciBpbm9kZSAlZCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstC40LrQu9C40LrRgyBleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MiDQtNC70Y8gaW5vZGUgJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgItCe0LHRgNGW0LfQsNGU0LzQviIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgItCn0LjRidC10L3QvdGPIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisiXHRcdFstbHwtTCBiYWRfYmxvY2tzX2ZpbGVdIFstQyBmZF0gWy1qIGV4dGVybmFsX2pvdXJuYWxdXG4iCisiXHRcdFstRSBleHRlbmRlZC1vcHRpb25zXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iINGB0YPQv9C10YDQsdC70L7Qul0gWy1CINGA0L7Qt9C80ZbRgCDQsdC70L7QutGDXVxuIgorIlx0XHRbLWx8LUwg0YTQsNC50Lsg0L/QvtGI0LrQvtC00LbQtdC90LjRhSDQsdC70L7QutGW0LJdIFstQyBmZF0gWy1qINC30L7QstC90ZbRiNC90ZbQuSDQttGD0YDQvdCw0LtdXG4iCisiXHRcdFstRSDQtNC+0LTQsNGC0LrQvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4XSBbLXog0YTQsNC50Lsg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5XSDQv9GA0LjRgdGC0YDRltC5XG4iCisKKyM6IGUyZnNjay91bml4LmM6ODIKK21zZ2lkICIiCisiXG4iCisiRW1lcmdlbmN5IGhlbHA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgIEF1dG9tYXRpYyByZXBhaXIgKG5vIHF1ZXN0aW9ucylcbiIKKyIgLW4gICAgICAgICAgICAgICAgICAgTWFrZSBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlc3lzdGVtXG4iCisiIC15ICAgICAgICAgICAgICAgICAgIEFzc3VtZSBcInllc1wiIHRvIGFsbCBxdWVzdGlvbnNcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgQ2hlY2sgZm9yIGJhZCBibG9ja3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBiYWRibG9jayAiCisibGlzdFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICBGb3JjZSBjaGVja2luZyBldmVuIGlmIGZpbGVzeXN0ZW0gaXMgbWFya2VkIGNsZWFuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQotC10YDQvNGW0L3QvtCy0LAg0LTQvtCy0ZbQtNC60LA6XG4iCisiIC1wICAgICAgICAgICAgICAgICAgINCw0LLRgtC+0LzQsNGC0LjRh9C90LUg0LLQuNC/0YDQsNCy0LvQtdC90L3RjyAo0LHQtdC3INC00L7QtNCw0YLQutC+0LLQuNGFINC30LDQv9C40YLQsNC90YwpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgINC90LUg0LLQvdC+0YHQuNGC0Lgg0LfQvNGW0L0g0LTQviDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4XG4iCisiIC15ICAgICAgICAgICAgICAgICAgINCy0ZbQtNC/0L7QstGW0YHRgtC4INC90LAg0YPRgdGWINC/0LjRgtCw0L3QvdGPIMKr0YLQsNC6wrtcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAg0LfQvdCw0LnRgtC4INC/0L7RiNC60L7QtNC20LXQvdGWINCx0LvQvtC60Lgg0ZYg0LTQvtC00LDRgtC4INGX0YUg0LTQviDRgdC/0LjRgdC60YNcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAg0L/RgNC40LzRg9GB0L7QstCwINC/0LXRgNC10LLRltGA0LrQsCwg0L3QsNCy0ZbRgtGMINGP0LrRidC+INGB0LjRgdGC0LXQvNGDINC/0L7Qt9C90LDRh9C10L3QviDRj9C6ICIKKyLQvdC10L/QvtGI0LrQvtC00LbQtdC90YNcbiIKKworIzogZTJmc2NrL3VuaXguYzo4OAorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgICAgICAgICAgICAgICAgICDRgNC10LbQuNC8INC00L7QutC70LDQtNC90LjRhSDQv9C+0LLRltC00L7QvNC70LXQvdGMXG4iCisiIC1iINGB0YPQv9C10YDQsdC70L7QuiAgICAgICAgINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQsNC70YzRgtC10YDQvdCw0YLQuNCy0L3QuNC5INGB0YPQv9C10YDQsdC70L7QulxuIgorIiAtQiDRgNC+0LfQvNGW0YBf0LHQu9C+0LrRgyAgICAgINC/0YDQuNC80YPRgdC+0LLQviDQstC40LfQvdCw0YfQuNGC0Lgg0YDQvtC30LzRltGAINC00LvRjyDQv9C+0YjRg9C60YMg0YHRg9C/0LXRgNCx0LvQvtC60YNcbiIKKyIgLWog0LfQvtCy0L1f0LbRg9GA0L3QsNC70YMgICAgICDQstC60LDQt9Cw0YLQuCDRgNC+0LfRgtCw0YjRg9Cy0LDQvdC90Y8g0LfQvtCy0L3RltGI0L3RjNC+0LPQviDQttGD0YDQvdCw0LvRg1xuIgorIiAtbCDRhNCw0LnQu1/Qv9C+0Lxf0LHQu9C+0LrRltCyICAg0LTQvtC00LDRgtC4INC00L4g0YHQv9C40YHQutGDINC/0L7QvNC40LvQutC+0LLQuNGFINCx0LvQvtC60ZbQslxuIgorIiAtTCDRhNCw0LnQu1/Qv9C+0Lxf0LHQu9C+0LrRltCyICAg0LLQutCw0LfQsNGC0Lgg0YHQv9C40YHQvtC6INC/0L7QvNC40LvQutC+0LLQuNGFINCx0LvQvtC60ZbQslxuIgorIiAteiDRhNCw0LnQu1/RgdC60LDRgSAgICAgICAgINGB0YLQstC+0YDQuNGC0Lgg0YTQsNC50Lsg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAldS8ldSBmaWxlcyAoJTBkLiVkJSUgbm9uLWNvbnRpZ3VvdXMpLCAlbGx1LyVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiVzOiAldS8ldSDRhNCw0LnQu9GW0LIgKCUwZC4lZCUlINGA0L7Qt9GA0LjQstC90LjRhSksICVsbHUvJWxsdSDQsdC70L7QutGW0LJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgaW5vZGUgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnaWRfcGx1cmFsICIiCisiXG4iCisiJTEydSBpbm9kZXMgdXNlZCAoJTIuMmYlJSwgb3V0IG9mICV1KVxuIgorbXNnc3RyWzBdICIiCisiXG4iCisi0JLQuNC60L7RgNC40YHRgtCw0L3QviAlMTJ1IGlub2RlICglMi4yZiUlINC3ICV1KVxuIgorbXNnc3RyWzFdICIiCisiXG4iCisi0JLQuNC60L7RgNC40YHRgtCw0L3QviAlMTJ1IGlub2RlICglMi4yZiUlINC3ICV1KVxuIgorbXNnc3RyWzJdICIiCisiXG4iCisi0JLQuNC60L7RgNC40YHRgtCw0L3QviAlMTJ1IGlub2RlICglMi4yZiUlINC3ICV1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGUgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSDRgNC+0LfRgNC40LLQvdC40Lkg0YTQsNC50LsgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1INGA0L7Qt9GA0LjQstC90LjRhSDRhNCw0LnQu9CwICglMGQuJWQlJSlcbiIKK21zZ3N0clsyXSAiJTEydSDRgNC+0LfRgNC40LLQvdC40YUg0YTQsNC50LvRltCyICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSDRgNC+0LfRgNC40LLQvdC40Lkg0LrQsNGC0LDQu9C+0LMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzFdICIlMTJ1INGA0L7Qt9GA0LjQstC90LjRhSDQutCw0YLQsNC70L7Qs9C4ICglMGQuJWQlJSlcbiIKK21zZ3N0clsyXSAiJTEydSDRgNC+0LfRgNC40LLQvdC40YUg0LrQsNGC0LDQu9C+0LPRltCyICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICAgICAgICMgb2YgaW5vZGVzIHdpdGggaW5kL2RpbmQvdGluZCBibG9ja3M6ICV1LyV1LyV1XG4iCittc2dzdHIgIiAgICAgICAgICAgICDQmi3RgtGMIGlub2RlINC3INCx0LvQvtC60LDQvNC4IGluZC9kaW5kL3RpbmQ6ICV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgINCT0ZbRgdGC0L7Qs9GA0LDQvNCwINCz0LvQuNCx0LjQvdC4INGA0L7Qt9GI0LjRgNC10L3QvdGPOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAi0LLQuNC60L7RgNC40YHRgtCw0L3QviAlMTJsbHUg0LHQu9C+0LogKCUyLjJmJSUg0LcgJWxsdSlcbiIKK21zZ3N0clsxXSAi0LLQuNC60L7RgNC40YHRgtCw0L3QviAlMTJsbHUg0LHQu9C+0LrQuCAoJTIuMmYlJSDQtyAlbGx1KVxuIgorbXNnc3RyWzJdICLQstC40LrQvtGA0LjRgdGC0LDQvdC+ICUxMmxsdSDQsdC70L7QutGW0LIgKCUyLjJmJSUg0LcgJWxsdSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBiYWQgYmxvY2tcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBiYWQgYmxvY2tzXG4iCittc2dzdHJbMF0gIiUxMnUg0L/QvtC80LjQu9C60L7QstC40Lkg0LHQu9C+0LpcbiIKK21zZ3N0clsxXSAiJTEydSDQv9C+0LzQuNC70LrQvtCy0ZYg0LHQu9C+0LrQuFxuIgorbXNnc3RyWzJdICIlMTJ1INC/0L7QvNC40LvQutC+0LLQuNGFINCx0LvQvtC60ZbQslxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGxhcmdlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBsYXJnZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1INCy0LXQu9C40LrQuNC5INGE0LDQudC7XG4iCittc2dzdHJbMV0gIiUxMnUg0LLQtdC70LjQutC40YUg0YTQsNC50LvQsFxuIgorbXNnc3RyWzJdICIlMTJ1INCy0LXQu9C40LrQuNGFINGE0LDQudC70ZbQslxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSByZWd1bGFyIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlc1xuIgorbXNnc3RyWzBdICIiCisiXG4iCisiJTEydSDQt9Cy0LjRh9Cw0LnQvdC40Lkg0YTQsNC50LtcbiIKK21zZ3N0clsxXSAiIgorIlxuIgorIiUxMnUg0LfQstC40YfQsNC50L3QuNGFINGE0LDQudC70LBcbiIKK21zZ3N0clsyXSAiIgorIlxuIgorIiUxMnUg0LfQstC40YfQsNC50L3QuNGFINGE0LDQudC70ZbQslxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUg0LrQsNGC0LDQu9C+0LNcbiIKK21zZ3N0clsxXSAiJTEydSDQutCw0YLQsNC70L7Qs9C4XG4iCittc2dzdHJbMl0gIiUxMnUg0LrQsNGC0LDQu9C+0LPRltCyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgY2hhcmFjdGVyIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1INGE0LDQudC7INGB0LjQvNCy0L7Qu9GM0L3QuNGFINC/0YDQuNGB0YLRgNC+0ZfQslxuIgorbXNnc3RyWzFdICIlMTJ1INGE0LDQudC70Lgg0YHQuNC80LLQvtC70YzQvdC40YUg0L/RgNC40YHRgtGA0L7Rl9CyXG4iCittc2dzdHJbMl0gIiUxMnUg0YTQsNC50LvRltCyINGB0LjQvNCy0L7Qu9GM0L3QuNGFINC/0YDQuNGB0YLRgNC+0ZfQslxuIgorCisjOiBlMmZzY2svdW5peC5jOjIwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUg0YTQsNC50Lsg0LHQu9C+0LrQvtCy0LjRhSDQv9GA0LjRgdGC0YDQvtGX0LJcbiIKK21zZ3N0clsxXSAiJTEydSDRhNCw0LnQu9C4INCx0LvQvtC60L7QstC40YUg0L/RgNC40YHRgtGA0L7Rl9CyXG4iCittc2dzdHJbMl0gIiUxMnUg0YTQsNC50LvRltCyINCx0LvQvtC60L7QstC40YUg0L/RgNC40YHRgtGA0L7Rl9CyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiUxMnUgZmlmb1xuIgorbXNnc3RyWzFdICIlMTJ1IGZpZm9cbiIKK21zZ3N0clsyXSAiJTEydSBmaWZvXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGlua1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxpbmtzXG4iCittc2dzdHJbMF0gIiUxMnUg0L/QvtGB0LjQu9Cw0L3QvdGPXG4iCittc2dzdHJbMV0gIiUxMnUg0L/QvtGB0LjQu9Cw0L3QvdGPXG4iCittc2dzdHJbMl0gIiUxMnUg0L/QvtGB0LjQu9Cw0L3RjFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHN5bWJvbGljIGxpbmsiCittc2dpZF9wbHVyYWwgIiUxMnUgc3ltYm9saWMgbGlua3MiCittc2dzdHJbMF0gIiUxMnUg0YHQuNC80LLQvtC70ZbRh9C90LUg0L/QvtGB0LjQu9Cw0L3QvdGPIgorbXNnc3RyWzFdICIlMTJ1INGB0LjQvNCy0L7Qu9GW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3QvdGPIgorbXNnc3RyWzJdICIlMTJ1INGB0LjQvNCy0L7Qu9GW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3RjCIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiICgldSDRiNCy0LjQtNC60LUg0YHQuNC80LLQvtC70ZbRh9C90LUg0L/QvtGB0LjQu9Cw0L3QvdGPKVxuIgorbXNnc3RyWzFdICIgKCV1INGI0LLQuNC00LrQuNGFINGB0LjQvNCy0L7Qu9GW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3QvdGPKVxuIgorbXNnc3RyWzJdICIgKCV1INGI0LLQuNC00LrQuNGFINGB0LjQvNCy0L7Qu9GW0YfQvdC40YUg0L/QvtGB0LjQu9Cw0L3RjClcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzb2NrZXRcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBzb2NrZXRzXG4iCittc2dzdHJbMF0gIiUxMnUg0YHQvtC60LXRglxuIgorbXNnc3RyWzFdICIlMTJ1INGB0L7QutC10YLQuFxuIgorbXNnc3RyWzJdICIlMTJ1INGB0L7QutC10YLRltCyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUg0YTQsNC50LtcbiIKK21zZ3N0clsxXSAiJTEydSDRhNCw0LnQu9C4XG4iCittc2dzdHJbMl0gIiUxMnUg0YTQsNC50LvRltCyXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjM1IG1pc2MvYmFkYmxvY2tzLmM6OTkzIG1pc2MvdHVuZTJmcy5jOjI4NzggbWlzYy91dGlsLmM6MTI2CisjOiByZXNpemUvbWFpbi5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstC40LfQvdCw0YfQuNGC0LgsINGH0Lgg0LfQvNC+0L3RgtC+0LLQsNC90L4gJXMuIgorCisjOiBlMmZzY2svdW5peC5jOjI1NgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nISAgJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAi0KPQstCw0LPQsCEgJXMg0LfQvNC+0L3RgtC+0LLQsNC90L4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBpbiB1c2UuXG4iCittc2dzdHIgItCj0LLQsNCz0LAhICVzINCy0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2NQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICIlcyDQt9C80L7QvdGC0L7QstCw0L3Qvi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0YDQvtC00L7QstC20LXQvdC90Y8g0L3QtdC80L7QttC70LjQstC1LCDQv9C10YDQtdGA0LjQstCw0ZTQvNC+INGA0L7QsdC+0YLRgy5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyLQo9CS0JDQk9CQISEhINCk0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINC30LzQvtC90YLQvtCy0LDQvdC+LiDQr9C60YnQviDQstC40LrQvtC90LDQvdC90Y8g0LTRltGXINCx0YPQtNC1INC/0YDQvtC00L7QstC20LXQvdC+LFxuIgorItC80L7QttC70LjQstGWICoqKtCX0J3QkNCn0J3QhioqKiDRg9GI0LrQvtC00LbQtdC90L3RjyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3NgorbXNnaWQgIkRvIHlvdSByZWFsbHkgd2FudCB0byBjb250aW51ZSIKK21zZ3N0ciAi0JLQuCDQtNGW0LnRgdC90L4g0LHQsNC20LDRlNGC0LUg0L/RgNC+0LTQvtCy0LbQuNGC0LgiCisKKyM6IGUyZnNjay91bml4LmM6Mjc4Cittc2dpZCAiY2hlY2sgYWJvcnRlZC5cbiIKK21zZ3N0ciAi0L/QtdGA0LXQstGW0YDQutGDINC/0LXRgNC10YDQstCw0L3Qvi5cbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiINC80ZbRgdGC0LjRgtGMINGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINC3INC/0L7QvNC40LvQutCw0LzQuCIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiINC90LUg0LHRg9C70L4g0LTQtdC80L7QvdGC0L7QstCw0L3QviDRgyDRiNGC0LDRgtC90L7QvNGDINGA0LXQttC40LzRliIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIgorIiDQvNC+0LbQu9C40LLQvtGB0YLRliDQvtGB0L3QvtCy0L3QvtCz0L4g0YHRg9C/0LXRgNCx0LvQvtC60YMg0LLRltC00YDRltC30L3Rj9GU0YLRjNGB0Y8g0LLRltC0INC80L7QttC70LjQstC+0YHRgtC10Lkg0YMg0YDQtdC30LXRgNCy0L3RltC5ICIKKyLQutC+0L/RltGXIgorCisjOiBlMmZzY2svdW5peC5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIgaGFzIGJlZW4gbW91bnRlZCAldSB0aW1lcyB3aXRob3V0IGJlaW5nIGNoZWNrZWQiCittc2dzdHIgIiDQt9C80L7QvdGC0L7QstCw0L3QviAldSDRgNCw0LfRltCyINCx0LXQtyDQv9C10YDQtdCy0ZbRgNC60LgiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiIKKyIg0LzRltGB0YLQuNGC0Ywg0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMsINGH0LDRgSDQvtGB0YLQsNC90L3RjNC+0Zcg0L/QtdGA0LXQstGW0YDQutC4INGP0LrQvtGXINC/0LXRgNC10LHRg9Cy0LDRlCDRgyAiCisi0LzQsNC50LHRg9GC0L3RjNC+0LzRgyIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIg0L/RgNC+0LnRiNC70L4gJXUg0LTQvdGW0LIg0LHQtdC3INC/0LXRgNC10LLRltGA0LrQuCIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAiLCDQv9GA0LjQvNGD0YHQvtCy0LAg0L/QtdGA0LXQstGW0YDQutCwLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjQzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczog0LHQtdC3INC/0L7QvNC40LvQvtC6LCAldS8ldSDRhNCw0LnQu9GW0LIsICVsbHUvJWxsdSDQsdC70L7QutGW0LIiCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAo0L/QtdGA0LXQstGW0YDQutGDINCy0ZbQtNC60LvQsNC00LXQvdC+LCDQv9GA0LDRhtGO0ZTQvNC+INCy0ZbQtCDQsNC60YPQvNGD0LvRj9GC0L7RgNCwKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICIgKNC/0LXRgNC10LLRltGA0LrQsCDQv9GW0YHQu9GPINC90LDRgdGC0YPQv9C90L7Qs9C+INC80L7QvdGC0YPQstCw0L3QvdGPKSIKKworIzogZTJmc2NrL3VuaXguYzo0NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChjaGVjayBpbiAlbGQgbW91bnRzKSIKK21zZ3N0ciAiICjQv9C10YDQtdCy0ZbRgNC60LAg0LfQsCAlbGQg0LzQvtC90YLRg9Cy0LDQvdGMKSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAi0J/QntCc0JjQm9Ca0JA6INC90LUg0LLQtNCw0LvQvtGB0Y8g0LLRltC00LrRgNC40YLQuCAvZGV2L251bGwgKCVzKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjY3OQorbXNnaWQgIkludmFsaWQgRUEgdmVyc2lvbi5cbiIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LAg0LLQtdGA0YHRltGPINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0LDRgtGA0LjQsdGD0YLQsC5cbiIKKworIzogZTJmc2NrL3VuaXguYzo2OTIKK21zZ2lkICJJbnZhbGlkIHJlYWRhaGVhZCBidWZmZXIgc2l6ZS5cbiIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LjQuSDRgNC+0LfQvNGW0YAg0LHRg9GE0LXRgNCwINCy0LjQv9C10YDQtdC00LbQsNC70YzQvdC+0LPQviDRh9C40YLQsNC90L3Rjy5cbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgItCd0LXQstGW0LTQvtC80LjQuSDRgNC+0LfRiNC40YDQtdC90LjQuSDQv9Cw0YDQsNC80LXRgtGAOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjc1MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIGUyZnNjayBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorItCh0LjQvdGC0LDQutGB0LjRh9C90LAg0L/QvtC80LjQu9C60LAg0YMg0YTQsNC50LvRliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMIGUyZnNjayAoJXMsINGA0Y/QtNC+0LogJWQpXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLQuNC60L7QvdCw0YLQuCDQv9C10YDQtdCy0ZbRgNC60YMg0LTQtdGB0LrRgNC40L/RgtC+0YDQsCDRhNCw0LnQu9CwICVkOiAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyOQorbXNnaWQgIkludmFsaWQgY29tcGxldGlvbiBpbmZvcm1hdGlvbiBmaWxlIGRlc2NyaXB0b3IiCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0LTQtdGB0LrRgNC40L/RgtC+0YAg0YTQsNC50LvQsCDQtNCw0L3QuNGFINC00LvRjyDQsNCy0YLQvtC80LDRgtC40YfQvdC+0LPQviDQtNC+0L/QvtCy0L3QtdC90L3RjyIKKworIzogZTJmc2NrL3VuaXguYzo4NDQKK21zZ2lkICJPbmx5IG9uZSBvZiB0aGUgb3B0aW9ucyAtcC8tYSwgLW4gb3IgLXkgbWF5IGJlIHNwZWNpZmllZC4iCittc2dzdHIgItCc0L7QttC90LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INC70LjRiNC1INC+0LTQuNC9INC3INC90LDQsdC+0YDRgyDQv9Cw0YDQsNC80LXRgtGA0ZbQsiAtcC8tYSwgLW4g0YLQsCAteS4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICLQn9GW0LTRgtGA0LjQvNC60Lgg0L/QsNGA0LDQvNC10YLRgNCwIC10INGDINGG0ZbQuSDQstC10YDRgdGW0ZcgZTJmc2NrINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi5cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LLQuNC60L7QvdCw0YLQuCDQstC40LfQvdCw0YfQtdC90L3RjyDCqyVzwrsiCisKKyM6IGUyZnNjay91bml4LmM6OTUyCittc2dpZCAiVGhlIC1uIGFuZCAtRCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQn9Cw0YDQsNC80LXRgtGA0LggLW4g0ZYgLUQg0ZQg0LLQt9Cw0ZTQvNC90L4g0L3QtdGB0YPQvNGW0YHQvdC40LzQuC4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQn9Cw0YDQsNC80LXRgtGA0LggLW4g0ZYgLWMg0ZQg0LLQt9Cw0ZTQvNC90L4g0L3QtdGB0YPQvNGW0YHQvdC40LzQuC4iCisKKyM6IGUyZnNjay91bml4LmM6OTYyCittc2dpZCAiVGhlIC1uIGFuZCAtbC8tTCBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQn9Cw0YDQsNC80LXRgtGA0LggLW4g0ZYgLWwvLUwg0ZQg0LLQt9Cw0ZTQvNC90L4g0L3QtdGB0YPQvNGW0YHQvdC40LzQuC4iCisKKyM6IGUyZnNjay91bml4LmM6OTg2Cittc2dpZCAiVGhlIC1EIGFuZCAtRSBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgItCf0LDRgNCw0LzQtdGC0YDQuCAtRCDRliAtRSBmaXhlc19vbmx5INGUINC90LXRgdGD0LzRltGB0L3QuNC80LguIgorCisjOiBlMmZzY2svdW5peC5jOjk5MgorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICLQn9Cw0YDQsNC80LXRgtGA0LggLUUgYm1hcDJleHRlbnQg0ZYgZml4ZXNfb25seSDRlCDQvdC10YHRg9C80ZbRgdC90LjQvNC4LiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICLQn9Cw0YDQsNC80LXRgtGA0LggLWMg0ZYgLWwvLUwg0L3QtSDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQvtC00L3QvtGH0LDRgdC90L4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcgwqslc8K7INC90LUg0ZQg0YbRltC70LjQvNC4INGH0LjRgdC70L7QvFxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkludmFsaWQgbm9uLW51bWVyaWMgYXJndW1lbnQgdG8gLSVjIChcIiVzXCIpXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQndC10LrQvtGA0LXQutGC0L3QuNC5INC90LXRh9C40YHQu9C+0LLQuNC5INCw0YDQs9GD0LzQtdC90YIg0L/QsNGA0LDQvNC10YLRgNCwIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjExOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBpbnRlcnZhbCBpcyAldSBzZWNvbmRzIGFuZCB0b3RhbCB3YWl0IHRpbWUgaXMgJXUgc2Vjb25kcy4gUGxlYXNlICIKKyJ3YWl0Li4uXG4iCittc2dzdHIgIiIKKyLQhtC90YLQtdGA0LLQsNC7IE1NUCDQtNC+0YDRltCy0L3RjtGUICV1INGB0LXQutGD0L3QtCwg0LAg0LfQsNCz0LDQu9GM0L3QuNC5INGH0LDRgSDQvtGH0ZbQutGD0LLQsNC90L3RjyDQtNC+0YDRltCy0L3RjtGUICV1ICIKKyLRgdC10LrRg9C90LQuINCR0YPQtNGMINC70LDRgdC60LAsINC30LDRh9C10LrQsNC50YLQtS4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyMTAgZTJmc2NrL3VuaXguYzoxMjE1Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgTU1QIGJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC/0LXRgNC10LLRltGA0LrQuCDQsdC70L7QutGDIE1NUCIKKworIzogZTJmc2NrL3VuaXguYzoxMjE3IG1pc2MvdHVuZTJmcy5jOjI3OTIKK21zZ2lkICIiCisiSWYgeW91IGFyZSBzdXJlIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKyIndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2RldmljZX0nXG4iCittc2dzdHIgIiIKKyLQr9C60YnQviDQstC4INCy0L/QtdCy0L3QtdC90ZYsINGJ0L4g0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0L3QtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQttC+0LTQvdC40Lwg0LLRg9C30LvQvtC8LiAiCisi0JLRltC00LTQsNC50YLQtSDQutC+0LzQsNC90LTRgzpcbiIKKyLCq3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHvQv9GA0LjRgdGC0YDRltC5fcK7XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTIzMgorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGH0LjRgtCw0L3QvdGPINCx0LvQvtC60YMgTU1QIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyLQn9C10YDQtdC30LDQv9C40YHRg9GU0LzQviDQvdCw0Y/QstC90YMg0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YM7INGB0LrQsNGB0YPQstCw0YLQuCDQv9C10YDQtdC30LDQv9C40YHRg9Cy0LDQvdC90Y8g0LzQvtC20L3QsCDQt9CwICIKKyLQtNC+0L/QvtC80L7Qs9C+0Y4g0LrQvtC80LDQvdC00Lg6XG4iCisiICAgIGUydW5kbyAlcyAlc1xuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEyOTMgbWlzYy9lMnVuZG8uYzoyNjQgbWlzYy9ta2UyZnMuYzoyNTgxIG1pc2MvdHVuZTJmcy5jOjI2NDQKKyM6IHJlc2l6ZS9tYWluLmM6MjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZWxldGUgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0LjQu9GD0YfQuNGC0LggJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTMxOSBtaXNjL21rZTJmcy5jOjI2MDcgcmVzaXplL21haW4uYzoyNDIKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc2V0dXAgdW5kbyBmaWxlXG4iCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC90LDQu9Cw0YjRgtC+0LLRg9Cy0LDQvdC90Y8g0YTQsNC50LvQsCDQtNCw0L3QuNGFINC00LvRjyDRgdC60LDRgdGD0LLQsNC90L3RjyDQtNGW0LlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzYzCittc2dpZCAiRXJyb3I6IGV4dDJmcyBsaWJyYXJ5IHZlcnNpb24gb3V0IG9mIGRhdGUhXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwOiDQt9Cw0YHRgtCw0YDRltC70LAg0LLQtdGA0YHRltGPINCx0ZbQsdC70ZbQvtGC0LXQutC4IGV4dDJmcyFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0ZbQvdGW0YbRltCw0LvRltC30YPQstCw0YLQuCDQv9GA0L7Qs9GA0LDQvNGDIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHTQktC40LrQvtGA0LjRgdGC0L7QstGD0ZTQvNC+ICVzLCAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE0MDUKK21zZ2lkICJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIgorbXNnc3RyICLQtNC70Y8g0ZbQvdGC0LXRgNCw0LrRgtC40LLQvdC+0LPQviDQstGW0LTQvdC+0LLQu9C10L3QvdGPINC90LXQvtCx0YXRltC00L3QuNC5INGC0LXRgNC80ZbQvdCw0LsiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXM6ICVzLCDQvdCw0LzQsNCz0LDRlNC80L7RgdGPINGB0YLQstC+0YDQuNGC0Lgg0YDQtdC30LXRgNCy0L3RliDQutC+0L/RltGXINCx0LvQvtC60ZbQsi4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjgKK21zZ2lkICJTdXBlcmJsb2NrIGludmFsaWQsIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5INGB0YPQv9C10YDQsdC70L7QuiwiCisKKyM6IGUyZnNjay91bml4LmM6MTQ2OQorbXNnaWQgIkdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIgorbXNnc3RyICLQmdC80L7QstGW0YDQvdC+LCDQtNC10YHQutGA0LjQv9GC0L7RgNC4INCz0YDRg9C/INGUINC/0L7QvNC40LvQutC+0LLQuNC80LjigKYiCisKKyM6IGUyZnNjay91bml4LmM6MTQ3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MiCittc2dzdHIgIiVzOiAlcyDQv9GW0LQg0YfQsNGBINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQsdC70L7QutGW0LIg0YDQtdC30LXRgNCy0L3QvtGXINC60L7Qv9GW0ZciCisKKyM6IGUyZnNjay91bml4LmM6MTQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIiVzOiDQv9C+0LLQtdGA0YLQsNGU0LzQvtGB0Y8g0LTQviDQv9C+0YfQsNGC0LrQvtCy0L7Qs9C+INGB0YPQv9C10YDQsdC70L7QutGDXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxMgorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSByZXZpc2lvbiBpcyBhcHBhcmVudGx5IHRvbyBoaWdoIGZvciB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorIihPciB0aGUgZmlsZXN5c3RlbSBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQpXG4iCisiXG4iCittc2dzdHIgIiIKKyLQndC+0LzQtdGAINC80L7QtNC40YTRltC60LDRhtGW0Zcg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8INC00LvRjyDRhtGW0ZTRlyDQstC10YDRgdGW0ZcgZTJmc2NrLlxuIgorIijQsNCx0L4g0YHRg9C/0LXRgNCx0LvQvtC6INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0L/QvtGI0LrQvtC00LbQtdC90L4pXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUxOQorbXNnaWQgIkNvdWxkIHRoaXMgYmUgYSB6ZXJvLWxlbmd0aCBwYXJ0aXRpb24/XG4iCittc2dzdHIgItCc0L7QttC70LjQstC+LCDRhtC1INGA0L7Qt9C00ZbQuyDQtyDQvdGD0LvRjNC+0LLQvtGOINC00L7QstC20LjQvdC+0Y4/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJZb3UgbXVzdCBoYXZlICVzIGFjY2VzcyB0byB0aGUgZmlsZXN5c3RlbSBvciBiZSByb290XG4iCittc2dzdHIgIiIKKyLQktCw0Lwg0L/QvtGC0YDRltCx0LXQvSDQtNC+0YHRgtGD0L8gJXMg0LTQviDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4INCw0LHQviDQsNC00LzRltC90ZbRgdGC0YDQsNGC0LjQstC90LjQuSDQtNC+0YHRgtGD0L8gIgorIihyb290KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjcKK21zZ2lkICJQb3NzaWJseSBub24tZXhpc3RlbnQgb3Igc3dhcCBkZXZpY2U/XG4iCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLQviwg0L/RgNC40YHRgtGA0L7RjiDQvdC1INGW0YHQvdGD0ZQg0LDQsdC+INGG0LUg0L/RgNC40YHRgtGA0ZbQuSDRgNC10LfQtdGA0LLQvdC+0Zcg0L/QsNC84oCZ0Y/RgtGWICjRgdCy0L7Qv9GW0L3Qs9GDKT9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI5Cittc2dpZCAiRmlsZXN5c3RlbSBtb3VudGVkIG9yIG9wZW5lZCBleGNsdXNpdmVseSBieSBhbm90aGVyIHByb2dyYW0/XG4iCittc2dzdHIgIiIKKyLQpNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDQt9C80L7QvdGC0L7QstCw0L3QviDQsNCx0L4g0LLRltC00LrRgNC40YLQviDRltC90YjQvtGOINC/0YDQvtCz0YDQsNC80L7RjiDRgyDRgNC10LbQuNC80ZYsINGJ0L4gIgorItCy0LjQutC70Y7Rh9Cw0ZQg0LTQvtGB0YLRg9C/INGB0YLQvtGA0L7QvdC90ZbRhSDQv9GA0L7Qs9GA0LDQvD9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAi0JzQvtC20LvQuNCy0L4sINC/0YDQuNGB0YLRgNC+0Y4g0L3QtSDRltGB0L3Rg9GUP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorItCU0LjRgdC6INC30LDRhdC40YnQtdC90L4g0LLRltC0INC30LDQv9C40YHRgzsg0YHQutC+0YDQuNGB0YLQsNC50YLQtdGB0Y8g0L/QsNGA0LDQvNC10YLRgNC+0LwgLW4g0LTQu9GPXG4iCisi0LLQuNC60L7QvdCw0L3QvdGPINC/0LXRgNC10LLRltGA0LrQuCDQtNC40YHQutCwINGH0LjRgtCw0L3QvdGP0LwuXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTYwNAorbXNnaWQgIkdldCBhIG5ld2VyIHZlcnNpb24gb2YgZTJmc2NrISIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLRltGC0Ywg0L3QvtCy0ZbRiNGDINCy0LXRgNGB0ZbRjiBlMmZzY2shIgorCisjOiBlMmZzY2svdW5peC5jOjE2NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0L/QtdGA0LXQstGW0YDQutC4INC20YPRgNC90LDQu9GDICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICLQn9GA0L7QtNC+0LLQttC10L3QvdGPINC/0LXRgNC10LLRltGA0LrQuCDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4INC90LXQvNC+0LbQu9C40LLQtSIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0L3QtSDQstC40LrQvtC90YPRlNC80L4g0LLRltC00L3QvtCy0LvQtdC90L3RjyDQttGD0YDQvdCw0LvRgywg0L7RgdC60ZbQu9GM0LrQuCDQv9C10YDQtdCy0ZbRgNC60LAgIgorItCy0LjQutC+0L3Rg9GU0YLRjNGB0Y8g0LTQu9GPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LgsINC00L7RgdGC0YPQvyDQtNC+INGP0LrQvtGXINC30LTRltC50YHQvdGO0ZTRgtGM0YHRjyDRgyDRgNC10LbQuNC80ZYg0LvQuNGI0LUgIgorItGH0LjRgtCw0L3QvdGPLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgItC90LUg0LLQtNCw0LvQvtGB0Y8g0LLRgdGC0LDQvdC+0LLQuNGC0Lgg0L/RgNCw0L/QvtGA0YbRliDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQvdCwICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgItCS0LjRj9Cy0LvQtdC90L4g0L/QvtC80LjQu9C60YMg0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDRgyAlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIKK21zZ3N0ciAi0KMgJXMg0L/QvtGI0LrQvtC00LbQtdC90L4g0LbRg9GA0L3QsNC7XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWNvdmVyaW5nIGpvdXJuYWwgb2YgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LLRltC00L3QvtCy0LvQtdC90L3RjyDQttGD0YDQvdCw0LvRgyAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGhhcyB1bnN1cHBvcnRlZCBmZWF0dXJlKHMpOiIKK21zZ3N0ciAiJXMg0LzQsNGUINC90LXQv9GW0LTRgtGA0LjQvNGD0LLQsNC90ZYg0LzQvtC20LvQuNCy0L7RgdGC0ZY6IgorCisjOiBlMmZzY2svdW5peC5jOjE3NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHJlYWRpbmcgYmFkIGJsb2NrcyBpbm9kZVxuIgorbXNnc3RyICIlczogJXMg0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyBpbm9kZSDQv9C+0YjQutC+0LTQttC10L3QuNGFINCx0LvQvtC60ZbQslxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgItCf0YDQvtCz0L3QvtC30YPQstCw0L3QvdGOINC90LUg0L/RltC00LTQsNGU0YLRjNGB0Y8sINCw0LvQtSDQvNC4INGB0L/RgNC+0LHRg9GU0LzQviDRidC+0YHRjCDQt9GA0L7QsdC40YLQuC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICLQodGC0LLQvtGA0Y7RlNC80L4g0LbRg9GA0L3QsNC7ICglZCDQsdC70L7QutGW0LIpOiAiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICIg0JLQuNC60L7QvdCw0L3Qvi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqINC20YPRgNC90LDQuyDQsdGD0LvQviDRgdGC0LLQvtGA0LXQvdC+INC/0L7QstGC0L7RgNC90L4gKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzNgorbXNnaWQgImFib3J0ZWQiCittc2dzdHIgItC/0LXRgNC10YDQstCw0L3QviIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiDQvtCx0YDQvtCx0LrRgyDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiBlMmZzY2sg0YHQutCw0YHQvtCy0LDQvdC+LlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAi0J/QtdGA0LXQt9Cw0L/Rg9GB0LrQsNGU0LzQviBlMmZzY2sg0Lcg0L/QvtGH0LDRgtC60YMuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY5Cittc2dpZCAid2hpbGUgcmVzZXR0aW5nIGNvbnRleHQiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQutC40LTQsNC90L3RjyDQutC+0L3RgtC10LrRgdGC0YMiCisKKyM6IGUyZnNjay91bml4LmM6MTkxMyBlMmZzY2svdXRpbC5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogKioqKiog0JTQniDQpNCQ0JnQm9Ce0JLQntCHINCh0JjQodCi0JXQnNCYINCR0KPQm9CeINCS0J3QldCh0JXQndCeINCX0JzQhtCd0JggKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVzOiAqKioqKiDQn9CV0KDQldCX0JDQktCQ0J3QotCQ0JbQotCVINCh0JjQodCi0JXQnNCjICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkyNSBlMmZzY2svdXRpbC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqKioqKiog0J/QntCf0JXQoNCV0JTQltCV0J3QndCvOiDRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWINGD0YHQtSDRidC1INGUINC/0L7QvNC40LvQutC4ICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAieVnRgtCiIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICJuTtC90J0iCisKKyM6IGUyZnNjay91dGlsLmM6MTk2Cittc2dpZCAiYUEiCittc2dzdHIgImFB0YPQoyIKKworIzogZTJmc2NrL3V0aWwuYzoxOTcKK21zZ2lkICIgKCdhJyBlbmFibGVzICd5ZXMnIHRvIGFsbCkgIgorbXNnc3RyICIgKMKrYcK7INCy0LzQuNC60LDRlCDCq3llcy/RgtCw0LrCuyDQtNC70Y8g0YPRgdGW0YUpICIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjx5PiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxuPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIiAoeS9uINCw0LHQviDRgi/QvSkiCisKKyM6IGUyZnNjay91dGlsLmM6MjQwCittc2dpZCAiY2FuY2VsbGVkIVxuIgorbXNnc3RyICLRgdC60LDRgdC+0LLQsNC90L4uXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICLCq9GC0LDQusK7INC00LvRjyDRg9GB0ZbRhVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NgorbXNnaWQgInllc1xuIgorbXNnc3RyICLRgtCw0LpcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyNjgKK21zZ2lkICJub1xuIgorbXNnc3RyICLQvdGWXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjc4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8gbm9cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyDQvdGWXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8geWVzXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8g0YLQsNC6XG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICLRgtCw0LoiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgItC90ZYiCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiZTJmc2NrX3JlYWRfYml0bWFwczog0L3QtdC60L7RgNC10LrRgtC90ZYg0LHQu9C+0LrQuCDQsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4INC00LvRjyAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICLRh9C40YLQsNC90L3RjyDQsdGW0YLQvtCy0LjRhSDQutCw0YDRgiBpbm9kZSDRgtCwINCx0LvQvtC60ZbQsiIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQv9C+0LLRgtC+0YDQtdC90L3RjyDRgdC/0YDQvtCx0YMg0YfQuNGC0LDQvdC90Y8g0LHRltGC0L7QstC40YUg0LrQsNGA0YIg0LTQu9GPICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjMzMQorbXNnaWQgIndyaXRpbmcgYmxvY2sgYW5kIGlub2RlIGJpdG1hcHMiCittc2dzdHIgItC30LDQv9C40YHRg9GU0LzQviDQsdGW0YLQvtCy0ZYg0LrQsNGA0YLQuCDQsdC70L7QutGW0LIg0YLQsCBpbm9kZSIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQv9C10YDQtdC30LDQv9C40YHRgyDQsdC70L7QutGDINGC0LAg0LHRltGC0L7QstC40YUg0LrQsNGA0YIgaW5vZGUg0LTQu9GPICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6INCd0JXQntCn0IbQmtCj0JLQkNCd0JAg0JLQotCg0JDQotCQINCm0IbQm9CG0KHQndCe0KHQotCGOyDQl9CQ0J/Qo9Ch0KLQhtCi0KwgZnNjayDQktCg0KPQp9Cd0KMuXG4iCisiXHQo0YLQvtCx0YLQviDQsdC10Lcg0L/QsNGA0LDQvNC10YLRgNGW0LIgLWEg0YLQsCAtcClcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0MjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIgorbXNnc3RyICLQktC40LrQvtGA0LjRgdGC0LDQvdC+INC/0LDQvOKAmdGP0YLRljogJWx1INC60JEvJWx1INC60JEgKCVsdSDQutCRLyVsdSDQutCRKSwgIgorCisjOiBlMmZzY2svdXRpbC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1LCAiCittc2dzdHIgItCS0LjQutC+0YDQuNGB0YLQsNC90L4g0L/QsNC84oCZ0Y/RgtGWOiAlbHUsICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAi0YfQsNGBOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgItCy0LjRgtGA0LDRh9C10L3QviDRh9Cw0YHRgzogJTYuM2ZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0ODAgZTJmc2NrL3V0aWwuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAlbHUgaW4gJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8gaW5vZGUgJWx1INGDICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQt9Cw0L/QuNGB0YMgaW5vZGUgJWx1INC00L4gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6NzY1Cittc2dpZCAiIgorIlVORVhQRUNURUQgSU5DT05TSVNURU5DWTogdGhlIGZpbGVzeXN0ZW0gaXMgYmVpbmcgbW9kaWZpZWQgd2hpbGUgZnNjayBpcyAiCisicnVubmluZy5cbiIKK21zZ3N0ciAiIgorItCd0JXQntCn0IbQmtCj0JLQkNCd0JAg0JLQotCg0JDQotCQINCm0IbQm9CG0KHQndCe0KHQotCGOiDQv9GW0LQg0YfQsNGBINCy0LjQutC+0L3QsNC90L3RjyBmc2NrINC00L4g0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCAiCisi0LHRg9C70L4g0LLQvdC10YHQtdC90L4g0LfQvNGW0L3QuC5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3MgorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgItCy0LjQutC+0L3QsNC90L4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisi0JrQvtGA0LjRgdGC0YPQstCw0L3QvdGPOiAlcyBbLWIg0YDQvtC30LzRltGAX9Cx0LvQvtC60YNdIFstaSDQstGF0ZbQtNC90LjQuV/RhNCw0LnQu10gWy1vINGE0LDQudC7X9Cy0LjQstC10LTQtdC90L3Rj10gWy0iCisic3Z3bmZdXG4iCisiICAgICAgIFstYyDQsdC70L7QutGW0LJf0L7QtNC90L7Rh9Cw0YHQvdC+XSBbLWQg0LrQvtC10YRf0LfQsNGC0YDQuNC80LrQuF/QvNGW0LZf0YfQuNGC0LDQvdC90Y/QvNC4XSBbLWUgIgorItC80LDQutGBX9C/0L7RiNC6X9Cx0LvQvtC60ZbQsl1cbiIKKyIgICAgICAgWy1wINC6LdGC0Yxf0L/RgNC+0YXQvtC00ZbQsl0gWy10INGC0LXRgdGCX9C30YDQsNC30L7QuiBbLXQg0YLQtdGB0YJf0LfRgNCw0LfQvtC6IFsuLi5dXV1cbiIKKyIgICAgICAg0L/RgNC40YHRgtGA0ZbQuSBb0L7RgdGC0LDQvdC90ZbQuV/QsdC70L7QuiBb0L/QtdGA0YjQuNC5X9Cx0LvQvtC6XV1cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzOiBUaGUgLW4gYW5kIC13IG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzOiDQv9Cw0YDQsNC80LXRgtGA0LggLW4g0ZYgLXcg0L3QtSDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQvtC00L3QvtGH0LDRgdC90L4uXG4iCisiXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MjIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2LjJmJSUgZG9uZSwgJXMgZWxhcHNlZC4gKCVkLyVkLyVkIGVycm9ycykiCittc2dzdHIgItCS0LjQutC+0L3QsNC90L4g0L3QsCAlNi4yZiUlLCDQu9C40YjQuNC70L7RgdGPICVzLiAo0L/QvtC80LjQu9C60Lg6ICVkLyVkLyVkKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAi0KLQtdGB0YLRg9Cy0LDQvdC90Y8g0Lcg0LLQuNC/0LDQtNC60L7QstC40Lwg0LLQt9GW0YDRhtC10Lw6ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAi0KLQtdGB0YLRg9Cy0LDQvdC90Y8g0LfRliDQstC30ZbRgNGG0LXQvCAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQv9C+0LfQuNGG0ZbRjtCy0LDQvdC90Y8iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIldlaXJkIHZhbHVlICglbGQpIGluIGRvX3JlYWRcbiIKK21zZ3N0ciAi0JTQuNCy0L3QtSDQt9C90LDRh9C10L3QvdGPICglbGQpINGDIGRvX3JlYWRcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo0NzYKK21zZ2lkICJkdXJpbmcgZXh0MmZzX3N5bmNfZGV2aWNlIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINCy0LjQutC+0L3QsNC90L3RjyBleHQyZnNfc3luY19kZXZpY2UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAi0L3QsCDQv9C+0YfQsNGC0LrRgyDRltGC0LXRgNCw0YbRltGXINGB0L/QuNGB0LrQvtC8INC/0L7QvNC40LvQutC+0LLQuNGFINCx0LvQvtC60ZbQsiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YDQvtC30LzRltGJ0LXQvdC90Y8g0LHRg9GE0LXRgNGW0LIg0YMg0L/QsNC84oCZ0Y/RgtGWIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUxNQorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBibG9ja3MgJWx1IHRvICVsdVxuIgorbXNnc3RyICLQn9C10YDQtdCy0ZbRgNGP0ZTQvNC+INCx0LvQvtC60Lgg0LcgJWx1INC00L4gJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAi0KjRg9C60LDRlNC80L4g0L/QvtC80LjQu9C60L7QstGWINCx0LvQvtC60Lgg0YMg0YDQtdC20LjQvNGWINC70LjRiNC1INGH0LjRgtCw0L3QvdGPXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICLQn9C10YDQtdCy0ZbRgNGP0ZTQvNC+INC90LDRj9Cy0L3RltGB0YLRjCDQv9C+0LzQuNC70LrQvtCy0LjRhSDQsdC70L7QutGW0LIgKNC/0LXRgNC10LLRltGA0LrQsCDQu9C40YjQtSDRh9C40YLQsNC90L3Rj9C8KTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgItCX0LDQvdCw0LTRgtC+INCx0LDQs9Cw0YLQviDQv9C+0LzQuNC70LrQvtCy0LjRhSDQsdC70L7QutGW0LIsINC/0LXRgNC10YDQuNCy0LDRlNC80L4g0L/QtdGA0LXQstGW0YDQutGDXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjE4Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC13cml0ZSBtb2RlXG4iCittc2dzdHIgItCo0YPQutCw0ZTQvNC+INC/0L7QvNC40LvQutC+0LLRliDQsdC70L7QutC4INGDINGA0LXQttC40LzRliDRh9C40YLQsNC90L3Rjy3Qt9Cw0L/QuNGB0YNcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgItCS0ZbQtCDQsdC70L7QutGDICVsdSDQtNC+INCx0LvQvtC60YMgJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Njc1Cittc2dpZCAiUmVhZGluZyBhbmQgY29tcGFyaW5nOiAiCittc2dzdHIgItCn0LjRgtCw0L3QvdGPINGWINC/0L7RgNGW0LLQvdGP0L3QvdGPOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICLQqNGD0LrQsNGU0LzQviDQv9C+0LzQuNC70LrQvtCy0ZYg0LHQu9C+0LrQuCDRgyDRgNC10LbQuNC80ZYg0YfQuNGC0LDQvdC90Y8t0LfQsNC/0LjRgdGDINCx0LXQtyDRgNGD0LnQvdGD0LLQsNC90L3RjyDQtNCw0L3QuNGFXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIiIKKyLQn9C10YDQtdCy0ZbRgNGP0ZTQvNC+INC90LAg0L/QvtGI0LrQvtC00LbQtdC90ZYg0LHQu9C+0LrQuCAo0L/QtdGA0LXQstGW0YDQutCwINGH0LjRgtCw0L3QvdGP0Lwt0LfQsNC/0LjRgdC+0Lwg0LHQtdC3INGA0YPQudC90YPQstCw0L3QvdGPICIKKyLQtNCw0L3QuNGFKVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc5NAorbXNnaWQgIiIKKyJcbiIKKyJJbnRlcnJ1cHQgY2F1Z2h0LCBjbGVhbmluZyB1cFxuIgorbXNnc3RyICIiCisiXG4iCisi0J/QtdGA0LXRgNC40LLQsNC90L3Rjywg0YHQv9C+0YDQvtC20L3RjtGU0LzQviDQtNCw0L3RllxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YLQtdGB0YLQvtCy0L7Qs9C+INC30LDQv9C40YHRgyDQtNCw0L3QuNGFLCDQsdC70L7QuiAlbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTk4IG1pc2MvdXRpbC5jOjEzMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkOyAiCittc2dzdHIgIiVzINC30LzQvtC90YLQvtCy0LDQvdC+OyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwMAorbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICIiCisi0J/RgNC40LzRg9GB0L7QstC1INCy0LjQutC+0L3QsNC90L3RjyBiYWRibG9ja3MuINCh0L/QvtC00ZbQstCw0ZTQvNC+0YHRjywg0YnQviAvZXRjL210YWIg0LzRltGB0YLQuNGC0Ywg0L/QvtC80LjQu9C60LguXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAwNQorbXNnaWQgIml0J3Mgbm90IHNhZmUgdG8gcnVuIGJhZGJsb2NrcyFcbiIKK21zZ3N0ciAi0LfQsNC/0YPRgdC60LDRgtC4IGJhZGJsb2NrcyDQvdC10LHQtdC30L/QtdGH0L3QviFcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIiVzLCDQudC80L7QstGW0YDQvdC+LCDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDRgdC40YHRgtC10LzQvtGOOyAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAxMworbXNnaWQgImJhZGJsb2NrcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJiYWRibG9ja3Mg0LHRg9C00LUg0L/RgNC40LzRg9GB0L7QstC+INC00L7QtNCw0L3QviDQv9C+0L/RgNC4INGG0LUuXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkICVzIC0gJXMiCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40LkgJXMgLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIlRvbyBiaWcgbWF4IGJhZCBibG9ja3MgY291bnQgJXUgLSBtYXhpbXVtIGlzICV1IgorbXNnc3RyICIiCisi0JfQsNCy0LXQu9C40LrQsCDQvNCw0LrRgdC40LzQsNC70YzQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQv9C+0YjQutC+0LTQttC10L3QuNGFINCx0LvQvtC60ZbQsiwgJXUg4oCUINC90LUg0LzQvtC20LUg0LHRg9GC0Lgg0LHRltC70YzRiNC+0Y4gIgorItC30LAgJXUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE1NAorIywgYy1mb3JtYXQKK21zZ2lkICJjYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRlc3RfcGF0dGVybiAtICVzIgorbXNnc3RyICLQvdC1INCy0LTQsNC70L7RgdGPINGA0L7Qt9C80ZbRgdGC0LjRgtC4INGDINC/0LDQvOKAmdGP0YLRliB0ZXN0X3BhdHRlcm4gLSAlcyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTg0Cittc2dpZCAiTWF4aW11bSBvZiBvbmUgdGVzdF9wYXR0ZXJuIG1heSBiZSBzcGVjaWZpZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgItCjINGA0LXQttC40Lwg0LvQuNGI0LUg0YfQuNGC0LDQvdC90Y8g0LzQvtC20LUg0LHRg9GC0Lgg0LLQutCw0LfQsNC90L4g0LzQsNC60YHQuNC80YPQvCDQvtC00L3QvtCz0L4gdGVzdF9wYXR0ZXJuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExOTAKK21zZ2lkICJSYW5kb20gdGVzdF9wYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICLQktC40L/QsNC00LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyB0ZXN0X3BhdHRlcm4g0YMg0YDQtdC20LjQvNGWINC70LjRiNC1INGH0LjRgtCw0L3QvdGPIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMDQKK21zZ2lkICIiCisiQ291bGRuJ3QgZGV0ZXJtaW5lIGRldmljZSBzaXplOyB5b3UgbXVzdCBzcGVjaWZ5XG4iCisidGhlIHNpemUgbWFudWFsbHlcbiIKK21zZ3N0ciAiIgorItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LLQuNC30L3QsNGH0LjRgtC4INGA0L7Qt9C80ZbRgCDQv9GA0LjRgdGC0YDQvtGOOyDQstCw0Lwg0YHQu9GW0LQg0LLQutCw0LfQsNGC0LhcbiIKKyLRgNC+0LfQvNGW0YAg0LLRgNGD0YfQvdGDXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxMAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZGV2aWNlIHNpemUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0LjQt9C90LDRh9C10L3QvdGPINC80ZbRgdGC0LrQvtGB0YLRliDQv9GA0LjRgdGC0YDQvtGOIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICLQvtGB0YLQsNC90L3RltC5INCx0LvQvtC6IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAi0L/QtdGA0YjQuNC5INCx0LvQvtC6IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBzdGFydGluZyBibG9jayAoJWxsdSk6IG11c3QgYmUgbGVzcyB0aGFuICVsbHUiCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40Lkg0L/QvtGH0LDRgtC60L7QstC40Lkg0LHQu9C+0LogKCVsbHUpOiDQvdC+0LzQtdGAINC80LDRlCDQsdGD0YLQuCDQvNC10L3RiNC40Lwg0LfQsCAlbGx1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBlbmQgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIDMyLWJpdCB2YWx1ZSIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90LjQuSDQt9Cw0LLQtdGA0YjQsNC70YzQvdC40Lkg0LHQu9C+0LogKCVsbHUpOiDQvNCw0ZQg0LHRg9GC0LggMzIt0LHRltGC0L7QstC1INC30L3QsNGH0LXQvdC90Y8iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyDRgdC/0LjRgdC60YMg0L/QvtC80LjQu9C60L7QstC40YUg0LHQu9C+0LrRltCyINGDINC/0LDQvOKAmdGP0YLRliIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgItGE0LDQudC7INCy0YXRltC00L3QuNGFINC00LDQvdC40YUg4oCUINC/0L7QvNC40LvQutC+0LLQuNC5INGE0L7RgNC80LDRgiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LTQvtC00LDQstCw0L3QvdGPINC00L4g0YHQv9C40YHQutGDINC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyINGDINC/0LDQvOKAmdGP0YLRliIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICLQn9GA0L7RhdGW0LQg0LfQsNCy0LXRgNGI0LXQvdC+LCDQt9C90LDQudC00LXQvdC+ICV1INC/0L7RiNC60L7QtNC20LXQvdC40YUg0LHQu9C+0LrRltCyLiAoJWQvJWQvJWQg0L/QvtC80LjQu9C+0LopXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYg0LLQtdGA0YHRltGPXSDRhNCw0LnQu9C4Li4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstC40Lkg0L/RgNC+0LXQutGCIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LAg0LLQtdGA0YHRltGPIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyMTkgbWlzYy9sc2F0dHIuYzoxMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHN0YXQgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC+0YLRgNC40LzQsNC90L3RjyDRgdGC0LDRgtC40YHRgtC40YfQvdC40YUg0LTQsNC90LjRhSDRidC+0LTQviAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDQv9GA0LDQv9C+0YDRhtGW0LIg0L3QsCAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMzEgbWlzYy9jaGF0dHIuYzoyNDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmxhZ3Mgb2YgJXMgc2V0IGFzICIKK21zZ3N0ciAi0J/RgNCw0L/QvtGA0YbRliAlcyDQstGB0YLQsNC90L7QstC70LXQvdC+INGP0LogIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyDQv9GA0LDQv9C+0YDRhtGW0LIg0L3QsCAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgItCS0LXRgNGB0ZbRjiAlcyDQstGB0YLQsNC90L7QstC70LXQvdC+INGDINC30L3QsNGH0LXQvdC90Y8gJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstGB0YLQsNC90L7QstC70LXQvdC90Y8g0LLQtdGA0YHRltGXINC90LAgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2plY3Qgb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICLQn9GA0L7QtdC60YIgJXMg0LLRgdGC0LDQvdC+0LLQu9C10L3QviDRj9C6ICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINC/0YDQvtC10LrRgtGDINC90LAgJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6Mjk3Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgcGF0aCB2YXJpYWJsZSBpbiBjaGF0dHJfZGlyX3Byb2MiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0YDQvtC30LzRltGB0YLQuNGC0Lgg0LfQvNGW0L3QvdGDINGI0LvRj9GF0YMg0YMgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9INGUINC90LXRgdGD0LzRltGB0L3QuNC8INC3IC0g0ZYgK1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICLQodC70ZbQtCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0LggwqstdsK7LCA9LCAtINCw0LHQviArXG4iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAgbWlzYy9jcmVhdGVfaW5vZGUuYzoxMDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBpbm9kZSAldSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyBpbm9kZSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MCBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3MiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMzNgorIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNzQKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgZGlyZWN0b3J5IgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0LrQsNGC0LDQu9C+0LPRgyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaW5raW5nIFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LrQvtC80L/QvtC90YPQstCw0L3QvdGPIMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC30LDQv9C40YHRgyBpbm9kZSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxMzkgbWlzYy9jcmVhdGVfaW5vZGUuYzoxNjMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlzdGluZyBhdHRyaWJ1dGVzIG9mIFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8g0YHQv9C40YHQutGDINCw0YLRgNC40LHRg9GC0ZbQsiDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgJXUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0LggaW5vZGUgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTU2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTgzIG1pc2MvY3JlYXRlX2lub2RlLmM6OTA0CisjOiBtaXNjL2UydW5kby5jOjE3NiBtaXNjL2UydW5kby5jOjQ3MyBtaXNjL2UydW5kby5jOjQ3OSBtaXNjL2UydW5kby5jOjQ4NQorIzogbWlzYy9ta2UyZnMuYzozNTMKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIG1lbW9yeSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgNC+0LfQvNGW0YnQtdC90L3RjyDRgyDQv9Cw0LzigJnRj9GC0ZYiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LDRgtGA0LjQsdGD0YLQsCDCqyVzwrsgwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGF0dHJpYnV0ZSBcIiVzXCIgdG8gaW5vZGUgJXUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LfQsNC/0LjRgdGDINCw0YLRgNC40LHRg9GC0LAgwqslc8K7INC00L4gaW5vZGUgJXUiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LfQsNC60YDQuNGC0YLRjyBpbm9kZSAldSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YDQvtC30LzRltGJ0LXQvdC90Y8gaW5vZGUgwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyBpbm9kZSDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdGC0LLQvtGA0LXQvdC90Y8g0YHQuNC80LLQvtC70ZbRh9C90L7Qs9C+INC/0L7RgdC40LvQsNC90L3RjyDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzYxIG1pc2MvY3JlYXRlX2lub2RlLmM6ODM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgXCIlc1wiIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC/0L7RiNGD0LrRgyDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGRpcmVjdG9yeSBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyDQutCw0YLQsNC70L7Qs9GDIMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLRgtGPIMKrJXPCuyDQtNC70Y8g0LrQvtC/0ZbRjtCy0LDQvdC90Y8iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQvNGW0L3QuNGC0Lgg0YDQvtCx0L7Rh9C40Lkg0LrQsNGC0LDQu9C+0LMg0L3QsCDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstGW0LTQutGA0LjRgtGC0Y8g0LrQsNGC0LDQu9C+0LPRgyDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxzdGF0IFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLQuNC60L7QvdCw0YLQuCBsc3RhdCDQtNC70Y8gwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBzcGVjaWFsIGZpbGUgXCIlc1wiIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdGC0LLQvtGA0LXQvdC90Y8g0YHQv9C10YbRltCw0LvRjNC90L7Qs9C+INGE0LDQudC70LAgwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorbXNnaWQgIm1hbGxvYyBmYWlsZWQiCittc2dzdHIgItC90LXQstC00LDQu9CwINGB0L/RgNC+0LHQsCDQstC40LrQvtC90LDRgtC4IG1hbGxvYyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlYWQgbGluayBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC/0YDQvtGH0LjRgtCw0YLQuCDQv9C+0YHQuNC70LDQvdC90Y8gwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICLRgdC40LzQstC+0LvRltGH0L3QtSDQv9C+0YHQuNC70LDQvdC90Y8g0LfRgNC+0YHQu9C+INGDINGA0L7Qt9C80ZbRgNGWINC80ZbQtiBsc3RhdCgpINGWIHJlYWRsaW5rKCkiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3ltbGlua1wiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQsNC/0LjRgdCw0YLQuCDRgdC40LzQstC+0LvRltGH0L3QtSDQv9C+0YHQuNC70LDQvdC90Y8gwqslc8K7IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc5NgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGZpbGUgXCIlc1wiIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9Cw0L/QuNGB0LDRgtC4INGE0LDQudC7IMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbWFraW5nIGRpciBcIiVzXCIiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyDQutCw0YLQsNC70L7Qs9GDIMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC30LzRltC90LjRgtC4INC60LDRgtCw0LvQvtCzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjgzMgorIywgYy1mb3JtYXQKK21zZ2lkICJpZ25vcmluZyBlbnRyeSBcIiVzXCIiCittc2dzdHIgItGW0LPQvdC+0YDRg9GU0LzQviDQt9Cw0L/QuNGBIMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstGB0YLQsNC90L7QstC70LXQvdC90Y8gaW5vZGUg0LTQu9GPIMKrJXPCuyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyB4YXR0cnMgZm9yIFwiJXNcIiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINGA0L7Qt9GI0LjRgNC10L3QuNGFINCw0YLRgNC40LHRg9GC0ZbQsiAoeGF0dHIpINC00LvRjyDCqyVzwrsiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC30LHQtdGA0LXQs9GC0Lgg0LTQsNC90ZYgaW5vZGUiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICIiCisi0JrQvtGA0LjRgdGC0YPQstCw0L3QvdGPOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTzQvdC+0LzQtdGAPl0gWy1vIGJsb2Nrc2l6ZT080L3QvtC80LXRgD5dICIKKyLQv9GA0LjRgdGC0YDRltC5XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNTkKK21zZ2lkICJibG9ja3MiCittc2dzdHIgItCx0LvQvtC60LgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAi0LrQu9Cw0YHRgtC10YDQuCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICLQk9GA0YPQv9CwICVsdTogKNCx0LvQvtC60LggIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiBjc3VtIDB4JTA0eCIKK21zZ3N0ciAiINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwIDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiAo0J7Qp9CG0JrQo9CS0JDQm9Ce0KHQryAweCUwNHgpIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAg0YHRg9C/0LXRgNCx0LvQvtC6ICVzINGDICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgItCe0YHQvdC+0LLQvdC40LkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgItCX0LDQv9Cw0YHQvdC40LkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzgKK21zZ2lkICIsIEdyb3VwIGRlc2NyaXB0b3JzIGF0ICIKK21zZ3N0ciAiLCDQtNC10YHQutGA0LjQv9GC0L7RgNC4INCz0YDRg9C/INGDICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI0MgorbXNnaWQgIiIKKyJcbiIKKyIgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgIgorbXNnc3RyICIiCisiXG4iCisiICDQl9Cw0YDQtdC30LXRgNCy0L7QstCw0L3RliDQsdC70L7QutC4IEdEVCDRgyAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiDQlNC10YHQutGA0LjQv9GC0L7RgCDQs9GA0YPQv9C4INGDICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI1NQorbXNnaWQgIiAgQmxvY2sgYml0bWFwIGF0ICIKK21zZ3N0ciAiICDQkdGW0YLQvtCy0LAg0LrQsNGA0YLQsCDQsdC70L7QutGW0LIg0YMgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYwIG1pc2MvZHVtcGUyZnMuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCBjc3VtIDB4JTA4eCIKK21zZ3N0ciAiLCDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCAweCUwOHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICIsIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKyJcbiIKKyIgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY2Cittc2dpZCAiIElub2RlIGJpdG1hcCBhdCAiCittc2dzdHIgIiDQsdGW0YLQvtCy0LAg0LrQsNGA0YLQsCBJbm9kZSDRgyAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzMKK21zZ2lkICIiCisiXG4iCisiICBJbm9kZSB0YWJsZSBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgINCi0LDQsdC70LjRhtGPIElub2RlINC30LAg0LDQtNGA0LXRgdC+0Y4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSDQstGW0LvRjNC90LjRhSAlcywgJXUg0LLRltC70YzQvdC40YUgaW5vZGUsICV1INC60LDRgtCw0LvQvtCz0ZbQsiVzIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiwgJXUgdW51c2VkIGlub2Rlc1xuIgorbXNnc3RyICIsICV1INC90LXQstC40LrQvtGA0LjRgdGC0LDQvdC40YUgaW5vZGVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICDQktGW0LvRjNC90LjRhSDQsdC70L7QutGW0LI6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjMwNAorbXNnaWQgIiAgRnJlZSBpbm9kZXM6ICIKK21zZ3N0ciAi0JLRltC70YzQvdC40YUgaW5vZGU6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINCy0LjQstC10LTQtdC90L3RjyDRgdC/0LjRgdC60YMg0L/QvtC80LjQu9C60L7QstC40YUg0LHQu9C+0LrRltCyIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9ja3M6ICV1IgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LjRhSDQsdC70L7QutGW0LI6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyBpbm9kZSDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5MQorbXNnaWQgIndoaWxlIG9wZW5pbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLQuCBpbm9kZSDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5NworbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlciBibG9jayIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXIgaW52YWxpZCFcbiIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0LbRg9GA0L3QsNC70YMg0ZQg0L3QtdC60L7RgNC10LrRgtC90L7RjiFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQwNyBtaXNjL2R1bXBlMmZzLmM6NDkwCittc2dpZCAiSm91cm5hbCBmZWF0dXJlczogICAgICAgICIKK21zZ3N0ciAi0JzQvtC20LvQuNCy0L7RgdGC0ZYg0LbRg9GA0L3QsNC70YM6ICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MjAKK21zZ2lkICJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIKK21zZ3N0ciAi0KDQvtC30LzRltGAINC20YPRgNC90LDQu9GDOiAgICAgICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKK21zZ3N0ciAiIgorItCU0L7QstC20LjQvdCwINC20YPRgNC90LDQu9GDOiAgICAgICAgICAldVxuIgorItCf0L7RgdC70ZbQtNC+0LLQvdGW0YHRgtGMINC20YPRgNC90LDQu9GDOiAgICAweCUwOHhcbiIKKyLQn9C+0YfQsNGC0L7QuiDQttGD0YDQvdCw0LvRgzogICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICLQotC40L8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDQttGD0YDQvdCw0LvRgzogY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorItCi0LjQvyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC20YPRgNC90LDQu9GDOiAlc1xuIgorItCa0L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINC20YPRgNC90LDQu9GDOiAgICAgIDB4JTA4eFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZXJybm86ICAgICAgICAgICAgJWRcbiIKK21zZ3N0ciAi0JrRltC70YzQutGW0YHRgtGMINC/0L7QvNC40LvQvtC6INC20YPRgNC90LDQu9GDOiAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGH0LjRgtCw0L3QvdGPINGB0YPQv9C10YDQsdC70L7QutGDINC20YPRgNC90LDQu9GDIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQt9C90LDQudGC0Lgg0LrQvtC90YLRgNC+0LvRjNC90ZYg0YHRg9C80Lgg0YHRg9C/0LXRgNCx0LvQvtC60YMg0LbRg9GA0L3QsNC70YMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorItCg0L7Qt9C80ZbRgCDQsdC70L7QutGDINC20YPRgNC90LDQu9GDOiAgICAgJXVcbiIKKyLQlNC+0LLQttC40L3QsCDQttGD0YDQvdCw0LvRgzogICAgICAgICAgJXVcbiIKKyLQn9C10YDRiNC40Lkg0LHQu9C+0Log0LbRg9GA0L3QsNC70YM6ICAgICAgJXVcbiIKKyLQn9C+0YHQu9GW0LTQvtCy0L3RltGB0YLRjCDQttGD0YDQvdCw0LvRgzogICAgMHglMDh4XG4iCisi0J/QvtGH0LDRgtC+0Log0LbRg9GA0L3QsNC70YM6ICAgICAgICAgICV1XG4iCisi0Jot0YLRjCDQutC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIg0LbRg9GA0L3QsNC70YM6ICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICLQmtC+0YDQuNGB0YLRg9Cy0LDRh9GWINC20YPRgNC90LDQu9GDOiAgICAgICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MzAgbWlzYy9ta2UyZnMuYzo3ODUgbWlzYy90dW5lMmZzLmM6MTkzMAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBvcHRpb25zIVxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC+0YLRgNC40LzQsNGC0Lgg0L7QsdC70LDRgdGC0Ywg0L/QsNC84oCZ0Y/RgtGWINC00LvRjyDQvtCx0YDQvtCx0LrQuCDQv9Cw0YDQsNC80LXRgtGA0ZbQsiFcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU1NgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN1cGVyYmxvY2sgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5INC/0LDRgNCw0LzQtdGC0YAg0YHRg9C/0LXRgNCx0LvQvtC60YM6ICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBibG9ja3NpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5INC/0LDRgNCw0LzQtdGC0YAg0YDQvtC30LzRltGA0YMg0LHQu9C+0LrRgzogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCS0LrQsNC30LDQvdC+INC/0L7QvNC40LvQutC+0LLRliDQtNC+0LTQsNGC0LrQvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4OiAlc1xuIgorIlxuIgorItCU0L7QtNCw0YLQutC+0LLRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0YHQu9GW0LQg0LLRltC00L7QutGA0LXQvNC70Y7QstCw0YLQuCDQutC+0LzQsNC80LguINCU0L7QtNCw0YLQutC+0LLRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0LzQvtC20YPRgtGMXG4iCisiXHTQv9GA0LjQudC80LDRgtC4INCw0YDQs9GD0LzQtdC90YLQuCwg0LfQvdCw0YfQtdC90L3RjyDRj9C60LjRhSDQstGB0YLQsNC90L7QstC70Y7RjtGC0YzRgdGPINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30L3QsNC60YMgIgorItGA0ZbQstC90L7RgdGC0ZYgKD0pLlxuIgorIlxuIgorItCa0L7RgNC10LrRgtC90ZYg0LTQvtC00LDRgtC60L7QstGWINC/0LDRgNCw0LzQtdGC0YDQuDpcbiIKKyJcdHN1cGVyYmxvY2s9PNC90L7QvNC10YAg0YHRg9C/0LXRgNCx0LvQvtC60YM+XG4iCisiXHRibG9ja3NpemU9PNGA0L7Qt9C80ZbRgCDQsdC70L7QutGDPlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx00JLQuNC60L7RgNC40YHRgtC+0LLRg9GU0LzQviAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Njg2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gZmlsZXN5c3RlbSEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqINCjINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0LLQuNGP0LLQu9C10L3QviDQv9C+0LzQuNC70LrQuCDRgyDQutC+0L3RgtGA0L7Qu9GM0L3QuNGFINGB0YPQvNCw0YUhINCX0LDQv9GD0YHRgtGW0YLRjCAiCisiZTJmc2NrINC30LDRgNCw0Lcg0LbQtSFcbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY5MSBtaXNjL2UyaW1hZ2UuYzoxNTg2IG1pc2MvdHVuZTJmcy5jOjI4MDUKKyM6IHJlc2l6ZS9tYWluLmM6NDE1Cittc2dpZCAiQ291bGRuJ3QgZmluZCB2YWxpZCBmaWxlc3lzdGVtIHN1cGVyYmxvY2suXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfQvdCw0LnRgtC4INC60L7RgNC10LrRgtC90LjQuSDRgdGD0L/QtdGA0LHQu9C+0Log0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuC5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjcyNgorbXNnaWQgIiIKKyJcbiIKKyIqKiogQ2hlY2tzdW0gZXJyb3JzIGRldGVjdGVkIGluIGJpdG1hcHMhICBSdW4gZTJmc2NrIG5vdyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIioqKiDQoyDQsdGW0YLQvtCy0LjRhSDQutCw0YDRgtC60LAg0LLQuNGP0LLQu9C10L3QviDQv9C+0LzQuNC70LrQuCDRgyDQutC+0L3RgtGA0L7Qu9GM0L3QuNGFINGB0YPQvNCw0YUhINCX0LDQv9GD0YHRgtGW0YLRjCBlMmZzY2sgIgorItC30LDRgNCw0Lcg0LbQtSFcbiIKKyJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjczMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICVzOiBlcnJvciByZWFkaW5nIGJpdG1hcHM6ICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyIlczogJXM6INC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LHRltGC0L7QstC40YUg0LrQsNGA0YI6ICVzXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwNgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWyAtcnxRIF0gWyAtZnIgXSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86ICVzIFsgLXJ8USBdIFsgLWZyIF0g0L/RgNC40YHRgtGA0ZbQuSDRhNCw0LnQuy3QvtCx0YDQsNC30YNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAtSSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICIgICAgICAgJXMgLUkg0L/RgNC40YHRgtGA0ZbQuSDRhNCw0LnQuy3QvtCx0YDQsNC30YNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyDQstGW0LTRgdGC0YPQvyDQtNC20LXRgNC10LvQsCBdIFsgLU8g0LLRltC00YHRgtGD0L8g0L/RgNC40LfQvdCw0YfQtdC90L3RjyBdICIKKyLQpNChX9C00LbQtdGA0LXQu9CwIFsg0KTQoV/Qv9GA0LjQt9C90LDRh9C10L3QvdGPIF1cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc0IG1pc2MvZTJpbWFnZS5jOjU3OSBtaXNjL2UyaW1hZ2UuYzo1ODUgbWlzYy9lMmltYWdlLmM6MTE4MQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYnVmZmVyIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGA0L7Qt9C80ZbRidC10L3QvdGPINCx0YPRhNC10YDQsCDRgyDQv9Cw0LzigJnRj9GC0ZYiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3OQorIywgYy1mb3JtYXQKK21zZ2lkICJXcml0aW5nIGJsb2NrICVsbHVcbiIKK21zZ3N0ciAi0JfQsNC/0LjRgdGD0ZTQvNC+INCx0LvQvtC6ICVsbHVcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgImVycm9yIHdyaXRpbmcgYmxvY2sgJWxsdSIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQsNC/0LjRgdCw0YLQuCDQsdC70L7QuiAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTYKK21zZ2lkICJlcnJvciBpbiBnZW5lcmljX3dyaXRlKCkiCittc2dzdHIgItC/0L7QvNC40LvQutCwINGDIGdlbmVyaWNfd3JpdGUoKSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwOiDRgNC+0LfQvNGW0YAg0LfQsNCz0L7Qu9C+0LLQutCwINC/0LXRgNC10LLQuNGJ0YPRlCDRgNC+0LfQvNGW0YBf0LfQsNC/0LjRgdGDXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDRgNC+0LfQvNGW0YHRgtC40YLQuCDQsdGD0YTQtdGAINC30LDQs9C+0LvQvtCy0LrQsCDRgyDQv9Cw0LzigJnRj9GC0ZZcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9Cw0L/QuNGB0LDRgtC4INGB0YPQv9C10YDQsdC70L7QuiIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQsNC/0LjRgdCw0YLQuCDRgtCw0LHQu9C40YbRjiBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LfQsNC/0LjRgdGDINCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0Lgg0LHQu9C+0LrRltCyIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQt9Cw0L/QuNGB0YMg0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCBpbm9kZSIKKworIzogbWlzYy9lMmltYWdlLmM6NTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCByZWNfbGVuICglZClcbiIKK21zZ3N0ciAi0J/QvtGI0LrQvtC00LbQtdC90L4g0LHQu9C+0Log0LrQsNGC0LDQu9C+0LPRgyAlbGx1OiDQv9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyByZWNfbGVuICglZClcbiIKKworIzogbWlzYy9lMmltYWdlLmM6NTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcnJ1cHQgZGlyZWN0b3J5IGJsb2NrICVsbHU6IGJhZCBuYW1lX2xlbiAoJWQpXG4iCittc2dzdHIgItCf0L7RiNC60L7QtNC20LXQvdC+INCx0LvQvtC6INC60LDRgtCw0LvQvtCz0YMgJWxsdTog0L/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8gbmFtZV9sZW4gKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSIKK21zZ3N0ciAiJWxsdSDQtyAlbGx1INCx0LvQvtC60ZbQsiAoJWQlJSkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU4OSBtaXNjL2UyaW1hZ2UuYzo2MjkKK21zZ2lkICJDb3B5aW5nICIKK21zZ3N0ciAi0JrQvtC/0ZbRjtGU0LzQviAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIiIKKyLQr9C60YnQviDQt9Cw0YDQsNC3INC30YPQv9C40L3QuNGC0Lgg0L7QsdGA0L7QsdC60YMsINGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINCx0YPQtNC1INC30YDRg9C50L3QvtCy0LDQvdC+LiDQn9C10YDQtdGA0LLRltGC0YwgIgorItC+0LHRgNC+0LHQutGDINGJ0LUg0YDQsNC3LCDRj9C60YnQviDRhtC1INGB0LDQvNC1INGC0LUsINGJ0L4g0L/QvtGC0YDRltCx0L3Qvi5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIgJXMg0YLRgNC40LzQsNGU0YLRjNGB0Y8g0L3QsCDRiNCy0LjQtNC60L7RgdGC0ZYgJS4yZiDQnNCRL9GBIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgItC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LHQu9C+0LrRgyAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29waWVkICVsbHUgLyAlbGx1IGJsb2NrcyAoJWQlJSkgaW4gJXMgIgorbXNnc3RyICLQodC60L7Qv9GW0LnQvtCy0LDQvdC+ICVsbHUgLyAlbGx1INCx0LvQvtC60ZbQsiAoJWQlJSkg0YMgJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICLQvdCwINGI0LLQuNC00LrQvtGB0YLRliAlLjJmINCc0JEv0YEiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjc1OAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbDEgdGFibGUiCittc2dzdHIgItC/0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGA0L7Qt9C80ZbRgdGC0LjRgtC4INGDINC/0LDQvOKAmdGP0YLRliDRgtCw0LHQu9C40YbRjiBsMSIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgNC+0LfQvNGW0YnQtdC90L3RjyDQutC10YjRgyBsMiDRgyDQv9Cw0LzigJnRj9GC0ZYiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgyNgorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluIHRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgZGF0YSAiCisid2lsbCBiZSBsb3N0IHNvIHRoZSBpbWFnZSBtYXkgbm90IGJlIHZhbGlkLlxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQv9GW0LQg0YfQsNGBINGA0L7Qt9C80ZbRidC10L3QvdGPINC60LXRiNGDINGDINC90YzQvtC80YMg0LfQsNC70LjRiNC40LvQuNGB0Y8g0YLQsNCx0LvQuNGG0ZYuICIKKyLQndC10LzQvtC20LvQuNCy0ZbRgdGC0Ywg0YDQvtC30LzRltGB0YLQuNGC0Lgg0YbRliDRgtCw0LHQu9C40YbRliDQv9GA0LjQt9Cy0LXQtNC1INC00L4g0LLRgtGA0LDRgtC4INC00LDQvdC40YUsINC+0YLQttC1INC+0LHRgNCw0Lcg0LzQvtC20LUgIgorItCy0LjRj9Cy0LjRgtC40YHRjyDQvdC10LrQvtGA0LXQutGC0L3QuNC8LlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGA0L7Qt9C80ZbRidC10L3QvdGPINGDINC/0LDQvOKAmdGP0YLRliBleHQyX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGW0L3RltGG0ZbQsNC70ZbQt9GD0LLQsNGC0LggZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTIxNCBtaXNjL2UyaW1hZ2UuYzoxMjMyCittc2dpZCAiUHJvZ3JhbW1pbmcgZXJyb3I6IG11bHRpcGxlIHNlcXVlbnRpYWwgcmVmY291bnQgYmxvY2tzIGNyZWF0ZWQhXG4iCittc2dzdHIgIiIKKyLQn9C+0LzQuNC70LrQsCDRgyDQutC+0LTRljog0YHRgtCy0L7RgNC10L3QviDQtNC10LrRltC70YzQutCwINC/0L7RgdC70ZbQtNC+0LLQvdC40YUg0LHQu9C+0LrRltCyINC/0ZbQtNGA0LDRhdGD0L3QutGDINC/0L7RgdC40LvQsNC90YwhXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyNzIKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgNC+0LfQvNGW0YnQtdC90L3RjyDRgyDQv9Cw0LzigJnRj9GC0ZYg0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCDQsdC70L7QutGW0LIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgNC+0LfQvNGW0YnQtdC90L3RjyDRgyDQv9Cw0LzigJnRj9GC0ZYg0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCDRiNC40YTRgNC+0LLQsNC90LjRhSDQsdC70L7QutGW0LIiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAi0KHQutCw0L3Rg9GU0LzQviBpbm9kZS4uLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzAwCittc2dpZCAiQ2FuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC+0YLRgNC40LzQsNGC0Lgg0L/QsNC84oCZ0Y/RgtGMINC/0ZbQtCDQsdGD0YTQtdGAINCx0LvQvtC60ZbQsiIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGW0YLQtdGA0LDRgtC40LLQvdC+0Zcg0L7QsdGA0L7QsdC60LggaW5vZGUgJXUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70LXQvdC90Y8g0L7QsdGA0LDQt9GW0LIgUmF3INGWIHFjb3cyINC90LXQvNC+0LbQu9C40LLQtSIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAg0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDQsdGW0YLQvtCy0LjRhSDQutCw0YDRgiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQxOQorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGV2aWNlIGZpbGUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0Lgg0YTQsNC50Lsg0L/RgNC40YHRgtGA0L7RjiIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC90L7QstC70LXQvdC90Y8g0YLQsNCx0LvQuNGG0ZYg0L7QsdGA0LDQt9GDIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAi0J/QsNGA0LDQvNC10YLRgCAtYSDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQu9C40YjQtSDQtNC70Y8g0L7QsdGA0LDQt9GW0LIgcmF3INGWIFFDT1cyLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTUzMworbXNnaWQgIk9mZnNldHMgYXJlIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICLQktGW0LTRgdGC0YPQv9C4INC80L7QttC90LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INC70LjRiNC1INC00LvRjyDQvtCx0YDQsNC30ZbQsiByYXcuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICLQoNC10LbQuNC8INC/0LXRgNC10YHRg9Cy0LDQvdC90Y8g0LzQvtC20L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0LvQuNGI0LUg0LTQu9GPINC+0LHRgNCw0LfRltCyIHJhdy4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgItCg0LXQttC40Lwg0L/QtdGA0LXRgdGD0LLQsNC90L3RjyDQv9C+0YLRgNC10LHRg9GUINGA0LXQttC40LzRgyDQstGB0ZbRhSDQtNCw0L3QuNGFLiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgItC/0LXRgNC10LLRltGA0LrQsCDQt9C80L7QvdGC0L7QstCw0L3QvtGB0YLRliIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCX0LDQv9GD0YHQuiBlMmltYWdlINC00LvRjyDQvtCx0YDQvtCx0LrQuCDQt9C80L7QvdGC0L7QstCw0L3QuNGFINC00LvRjyDRh9C40YLQsNC90L3RjyDRliDQt9Cw0L/QuNGB0YMg0YTQsNC50LvQvtCy0LjRhVxuIgorItGB0LjRgdGC0LXQvCDQvNC+0LbQtSDQv9GA0LjQt9Cy0LXRgdGC0Lgg0LTQviDQv9C+0YDRg9GI0LXQvdC90Y8g0YbRltC70ZbRgdC90L7RgdGC0ZYg0L7QsdGA0LDQt9GDLCDRidC+INC/0L7Qt9C90LDRh9C40YLRjNGB0Y9cbiIKKyLQvdCwINC80L7QttC70LjQstC+0YHRgtGWINC50L7Qs9C+INCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtNC70Y8g0LTRltCw0LPQvdC+0YHRgtC40LrQuCDQv9C+0LzQuNC70L7Qui5cbiIKKyLQodC60L7RgNC40YHRgtCw0LnRgtC10YHRjyDQv9Cw0YDQsNC80LXRgtGA0L7QvCAtZiwg0Y/QutGJ0L4g0YbRjiDQtNGW0Y4g0YHQu9GW0LQg0LLQuNC60L7QvdCw0YLQuCDQv9GA0LjQvNGD0YHQvtCy0L4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAi0J7QsdGA0LDQtyBRQ09XMiDQvdC1INC80L7QttC90LAg0LfQsNC/0LjRgdGD0LLQsNGC0Lgg0LTQviDRgdGC0LDQvdC00LDRgNGC0L3QvtCz0L4g0LLQuNCy0LXQtNC10L3QvdGPIChzdGRvdXQpIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjIwCittc2dpZCAiQ2FuIG5vdCBzdGF0IG91dHB1dFxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC+0LHRgNC+0LHQuNGC0Lgg0LLQuNCy0LXQtNC10L3RliDQtNCw0L3RllxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICLQntCx0YDQsNC3ICglcykg0YHRgtC40YHQvdGD0YLQvlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgItCe0LHRgNCw0LcgKCVzKSDQt9Cw0YjQuNGE0YDQvtCy0LDQvdC+XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQv9C10YDQtdGC0LLQvtGA0LXQvdC90Y8g0L7QsdGA0LDQt9GDIHFjb3cyICglcykg0YMg0L7QsdGA0LDQtyByYXcgKCVzKSIKKworIzogbWlzYy9lMmltYWdlLmM6MTY0NQorbXNnaWQgIlRoZSAtYyBvcHRpb24gb25seSBzdXBwb3J0ZWQgaW4gcmF3IG1vZGVcbiIKK21zZ3N0ciAi0J/RltC00YLRgNC40LzQutGDINC/0LDRgNCw0LzQtdGC0YDQsCAtYyDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC70LjRiNC1INGDINGA0LXQttC40LzRliByYXdcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIiIKKyLQn9GW0LTRgtGA0LjQvNC60Lgg0LfQsNC/0LjRgdGD0LLQsNC90L3RjyDQtNC+INGB0YLQsNC90LTQsNGA0YLQvdC+0LPQviDQstC40LLQtdC00LXQvdC90Y8g0Lcg0L/QsNGA0LDQvNC10YLRgNC+0LwgLWMg0L3QtSAiCisi0L/QtdGA0LXQtNCx0LDRh9C10L3QvlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjU3Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBjaGVja19idWYiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGA0L7Qt9C80ZbRgdGC0LjRgtC4IGNoZWNrX2J1ZiDRgyDQv9Cw0LzigJnRj9GC0ZYiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgItCf0ZbQtNGC0YDQuNC80LrRgyDQv9Cw0YDQsNC80LXRgtGA0LAgLXAg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQu9C40YjQtSDRgyDRgNC10LbQuNC80ZYgcmF3XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCDQsdC70L7QutGW0LIg0LLQttC1INC80ZbRgdGC0LjQu9C4INC00LDQvdGWLCDRj9C60ZYg0YHQu9GW0LQg0LHRg9C70L4g0YHQutC+0L/RltGO0LLQsNGC0LhcbiIKKworIzogbWlzYy9lMmluaXRyZF9oZWxwZXIuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgLXIgZGV2aWNlXG4iCittc2dzdHIgItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgLXIg0L/RgNC40YHRgtGA0ZbQuVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVsOiDQvdC1INCy0LTQsNC70L7RgdGPINCy0ZbQtNC60YDQuNGC0LggJXNcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQv9C+0LfQuNGG0ZbRjtCy0LDQvdC90Y8g0L3QsCDRgdGD0L/QtdGA0LHQu9C+0Log0L3QtdC80L7QttC70LjQstC1XG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHJlYWRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRh9C40YLQsNC90L3RjyDRgdGD0L/QtdGA0LHQu9C+0LrRg1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo3MgorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBub3QgYW4gZXh0MiBmaWxlc3lzdGVtXG4iCittc2dzdHIgImUybGFiZWw6INC90LUg0ZQg0YTQsNC50LvQvtCy0L7RjiDRgdC40YHRgtC10LzQvtGOIGV4dDJcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6OTcgbWlzYy90dW5lMmZzLmM6Mjk3OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIKK21zZ3N0ciAi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQvdCw0LTRgtC+INC00L7QstCz0LAg0LzRltGC0LrQsCwg0L7QsdGA0ZbQt9Cw0ZTQvNC+LlxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogY2Fubm90IHNlZWsgdG8gc3VwZXJibG9jayBhZ2FpblxuIgorbXNnc3RyICJlMmxhYmVsOiDQv9C+0LLRgtC+0YDQvdC1INC/0L7Qt9C40YbRltGO0LLQsNC90L3RjyDQvdCwINGB0YPQv9C10YDQsdC70L7QuiDQvdC10LzQvtC20LvQuNCy0LVcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVsOiDQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9Cw0L/QuNGB0LDRgtC4INGB0YPQv9C10YDQsdC70L7QulxuIgorCisjOiBtaXNjL2UybGFiZWwuYzoxMTcgbWlzYy90dW5lMmZzLmM6MTU5MAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogZTJsYWJlbCBkZXZpY2UgW25ld2xhYmVsXVxuIgorbXNnc3RyICLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86IGUybGFiZWwg0L/RgNC40YHRgtGA0ZbQuSBb0L3QvtCy0LAg0LzRltGC0LrQsF1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZl0gWy1oXSBbLW5dIFstdl0gPHRyYW5zYWN0aW9uIGZpbGU+IDxmaWxlc3lzdGVtPlxuIgorbXNnc3RyICIiCisi0JrQvtGA0LjRgdGC0YPQstCw0L3QvdGPOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDzRhNCw0LnQuyDRgtGA0LDQvdC30LDQutGG0ZbQuT4gPNGE0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAi0KHRg9C/0LXRgNCx0LvQvtC6INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDRhNCw0LnQu9GDINGB0LrQsNGB0YPQstCw0L3QvdGPINC00ZbQuS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICJVVUlEINGUINC90LXQstGW0LTQv9C+0LLRltC00L3QuNC8LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0OAorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAi0JfQsNC/0LjRgSDRh9Cw0YHRgyDQvtGB0YLQsNC90L3RjNC+0LPQviDQvNC+0L3RgtGD0LLQsNC90L3RjyDRlCDQvdC10LLRltC00L/QvtCy0ZbQtNC90LjQvC5cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNTAKK21zZ2lkICJMYXN0IHdyaXRlIHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgItCn0LDRgSDQvtGB0YLQsNC90L3RjNC+0LPQviDQt9Cw0L/QuNGB0YMg0ZQg0L3QtdCy0ZbQtNC/0L7QstGW0LTQvdC40LwuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAi0JrRltC70YzQutGW0YHRgtGMINC30LDQv9C40YHRltCyINC/0YDQvtGC0Y/Qs9C+0Lwg0ZbRgdC90YPQstCw0L3QvdGPINGUINC90LXQstGW0LTQv9C+0LLRltC00L3QvtGOLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE2NgorbXNnaWQgIndoaWxlIHJlYWRpbmcgZmlsZXN5c3RlbSBzdXBlcmJsb2NrLiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LiIKKworIzogbWlzYy9lMnVuZG8uYzoxODIKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQvtGC0YDQuNC80LDRgtC4INGB0YPQv9C10YDQsdC70L7QuiIKKworIzogbWlzYy9lMnVuZG8uYzoxOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5kbyBmaWxlIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0YMg0YTQsNC50LvRliDRgdC60LDRgdGD0LLQsNC90L3RjyDQtNGW0Lkg0ZQg0L3QtdCy0ZbQtNC/0L7QstGW0LTQvdC+0Y4uXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzM0CisjLCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0LLRltC00YHRgtGD0L86ICVzIgorCisjOiBtaXNjL2UydW5kby5jOjM1OAorIywgYy1mb3JtYXQKK21zZ2lkICJXaWxsIG5vdCB3cml0ZSB0byBhbiB1bmRvIGZpbGUgd2hpbGUgcmVwbGF5aW5nIGl0LlxuIgorbXNnc3RyICIiCisi0JfQsNC/0LjRgSDQtNC+INGE0LDQudC70LAg0YHQutCw0YHQvtCy0YPQstCw0L3QvdGPINC00ZbQuSDQvdC1INCy0LXRgdGC0LjQvNC10YLRjNGB0Y8g0L/RgNC+0YLRj9Cz0L7QvCDQudC+0LPQviDQstGW0LTRgtCy0L7RgNC10L3QvdGPLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0Lgg0YTQsNC50Lsg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5IMKrJXPCu1xuIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorbXNnaWQgIndoaWxlIHJlYWRpbmcgdW5kbyBmaWxlIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQv9GA0L7Rh9C40YLQsNGC0Lgg0YTQsNC50Lsg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5IgorCisjOiBtaXNjL2UydW5kby5jOjM3OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6INC90LUg0ZQg0YTQsNC50LvQvtC8INGB0LrQsNGB0YPQstCw0L3QvdGPINC00ZbQuS5cbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEhlYWRlciBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICIlczog0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0LfQsNCz0L7Qu9C+0LLQutCwINGUINC90LXQstGW0LTQv9C+0LLRltC00L3QvtGOLlxuIgorCisjOiBtaXNjL2UydW5kby5jOjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICIlczog0LfQsNCz0L7Qu9C+0LLQvtC6INGE0LDQudC70LAg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5INC/0L7RiNC60L7QtNC20LXQvdC+LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBsYXJnZS5cbiIKK21zZ3N0ciAiJXM6INGA0L7Qt9C80ZbRgCDQsdC70L7QutGDINC/0ZbRgdC70Y8g0YHQutCw0YHQvtCy0YPQstCw0L3QvdGPINC00ZbRlyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5kbyBibG9jayBzaXplIHRvbyBzbWFsbC5cbiIKK21zZ3N0ciAiJXM6INGA0L7Qt9C80ZbRgCDQsdC70L7QutGDINC/0ZbRgdC70Y8g0YHQutCw0YHQvtCy0YPQstCw0L3QvdGPINC00ZbRlyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVzOiDQvdC10LLRltC00L7QvNC40Lkg0L3QsNCx0ZbRgCDQvNC+0LbQu9C40LLQvtGB0YLQtdC5INGDINGE0LDQudC70ZYg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5LlxuIgorCisjOiBtaXNjL2UydW5kby5jOjQyNworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstC40LfQvdCw0YfQtdC90L3Rjywg0YfQuCDQt9C80L7QvdGC0L7QstCw0L3QviAlcy4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgImUydW5kbyDRgdC70ZbQtCDQt9Cw0L/Rg9GB0LrQsNGC0Lgg0LvQuNGI0LUg0L3QsCDQtNC10LzQvtC90YLQvtCy0LDQvdC40YUg0YTQsNC50LvQvtCy0LjRhSDRgdC40YHRgtC10LzQsNGFIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGAlcyciCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0YLRjyDCqyVzwrsiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgItCy0LrQsNC30LDQvdC40Lkg0LLRltC00YHRgtGD0L8g0ZQg0L3QsNC00YLQviDQstC10LvQuNC60LjQvCIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LrQu9GO0YfRltCyIgorCisjOiBtaXNjL2UydW5kby5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICIlczogd3Jvbmcga2V5IG1hZ2ljIGF0ICVsbHVcbiIKK21zZ3N0ciAiJXM6INC/0L7QvNC40LvQutC+0LLQsCDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDQutC70Y7Rh9CwINGDICVsbHVcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIlczog0L/QvtC80LjQu9C60LAg0YMg0LrQvtC90YLRgNC+0LvRjNC90ZbQuSDRgdGD0LzRliDQutC70Y7Rh9C+0LLQvtCz0L4g0LHQu9C+0LrRgyDQvdCwICVsbHUuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiJXM6INCx0LvQvtC6ICVsbHUg0ZQg0L3QsNC00YLQviDQtNC+0LLQs9C40LwuIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBibG9jayAlbGx1LiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0L7RgtGA0LjQvNCw0L3QvdGPINCx0LvQvtC60YMgJWxsdS4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAiIgorItC/0L7QvNC40LvQutCwINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0YMg0LHQu9C+0YbRliDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4ICVsbHUgKNGB0LrQsNGB0L7QstGD0LLQsNC90L3RjyDQsdC70L7QutGDICIKKyIlbGx1KVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQt9Cw0L/QuNGB0LDRgtC4INCx0LvQvtC6ICVsbHUuIgorCisjOiBtaXNjL2UydW5kby5jOjYxNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdGlvbjsgcnVuIGUyZnNjayBOT1chXG4iCittc2dzdHIgItCk0LDQudC7INGB0LrQsNGB0L7QstGD0LLQsNC90L3RjyDQtNGW0Lkg0L/QvtGI0LrQvtC00LbQtdC90L47INC30LDQv9GD0YHRgtGW0YLRjCBlMmZzY2sg0JfQkNCg0JDQlyDQltCVIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINCy0LLQtdC00LXQvdC90Y8t0LLQuNCy0LXQtNC10L3QvdGPINC/0ZbQtCDRh9Cw0YEg0YHQutCw0YHQvtCy0YPQstCw0L3QvdGPINC00ZbQuTsg0LfQsNC/0YPRgdGC0ZbRgtGMIGUyZnNjayDQl9CQ0KDQkNCXICIKKyLQltCVIVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICLQndC10L/QvtCy0L3QuNC5INC30LDQv9C40YEg0YHQutCw0YHQvtCy0YPQstCw0L3QvdGPOyDQt9Cw0L/Rg9GB0YLRltGC0YwgZTJmc2NrLlxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogIGZpbmRzdXBlciDQv9GA0LjRgdGC0YDRltC5IFvQv9GA0L7Qv9GD0YnQtdC90ZZf0LHQsNC50YLQuCBb0L/QvtGH0LDRgtC+0Lpf0YNf0LrQkV1dXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBzaG91bGQgYmUgYSBudW1iZXIsIG5vdCAlc1xuIgorbXNnc3RyICLQt9C90LDRh9C10L3QvdGPIMKr0L/RgNC+0L/Rg9GJ0LXQvdGWX9Cx0LDQudGC0LjCuyDQvNCw0ZQg0LHRg9GC0Lgg0YfQuNGB0LvQvtCy0LjQvCwg0LAg0L3QtSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICLQt9C90LDRh9C10L3QvdGPIMKr0L/RgNC+0L/Rg9GJ0LXQvdGWX9Cx0LDQudGC0LjCuyDQvNCw0ZQg0LHRg9GC0Lgg0LrRgNCw0YLQvdC40Lwg0LTQviDRgNC+0LfQvNGW0YDRgyDRgdC10LrRgtC+0YDQsFxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgItC30L3QsNGH0LXQvdC90Y8gwqvQv9C+0YfQsNGC0L7Qul/Rg1/QutCRwrsg0LzQsNGUINCx0YPRgtC4INGH0LjRgdC70L7QvCwg0LAg0L3QtSAlc1xuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAi0LfQvdCw0YfQtdC90L3RjyDCq9C/0L7Rh9Cw0YLQvtC6X9GDX9C60JHCuyDQvNCw0ZQg0LHRg9GC0Lgg0LTQvtC00LDRgtC90LjQvCwg0LAg0L3QtSAlbGx1XG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgItC/0L7Rh9C40L3QsNGU0LzQviDQtyAlbGx1INGW0Lcg0LrRgNC+0LrQvtC8INGDICV1INCx0LDQudGCXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorIlsqXSDQudC80L7QstGW0YDQvdC+LCDRgdGD0L/QtdGA0LHQu9C+INC30LDQv9C40YHQsNC90L4g0LTQviDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQttGD0YDQvdCw0LvRgyBleHQzLFxuIgorIlx00L7RgtC20LUg0L/QvtGH0LDRgtC+0Lov0LrRltC90LXRhtGML2dycCDRlCDQv9C+0LzQuNC70LrQvtCy0LjQvNC4XG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJieXRlX29mZnNldCAgYnl0ZV9zdGFydCAgICAgYnl0ZV9lbmQgIGZzX2Jsb2NrcyBibGtzeiAgZ3JwICBta2ZzLyIKKyJtb3VudF90aW1lICAgICAgICAgICBzYl91dWlkIGxhYmVsXG4iCittc2dzdHIgIiIKKyLQt9C80ZbRiV/Rg1/QsdCw0LnRgiAg0L/QvtGHX9Cx0LDQudGCICAgICAgINC60ZbQvdGGX9Cx0LDQudGCINCx0LvQvtC6X9GE0YEgICDRgNC+0Ldf0LHQuyDQs9GA0L8gINGH0LDRgV9ta2ZzLyIKKyJtb3VudCAgICAgICAgICAgIHNiX3V1aWQg0LzRltGC0LrQsFxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorIlxuIgorIiUxMUx1OiDQt9Cw0LLQtdGA0YjQtdC90L4g0Lcg0L3QvtC80LXRgNC+0Lwg0L/QvtC80LjQu9C60LggJWRcbiIKKworIzogbWlzYy9mc2NrLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IGNvdWxkbid0IG9wZW4gJXM6ICVzXG4iCittc2dzdHIgItCf0J7Qn9CV0KDQldCU0JbQldCd0J3Qrzog0L3QtSDQstC00LDQu9C+0YHRjyDQstGW0LTQutGA0LjRgtC4ICVzOiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgItCf0J7Qn9CV0KDQldCU0JbQldCd0J3Qrzog0L/QvtC80LjQu9C60L7QstC1INGE0L7RgNC80LDRgtGD0LLQsNC90L3RjyDRgyDRgNGP0LTQutGDICVkINGDICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisi0J/QntCf0JXQoNCV0JTQltCV0J3QndCvOiDRgyDQstCw0YjQvtC80YMg0YTQsNC50LvRliAvZXRjL2ZzdGFiINC90LXQvNCw0ZQg0L/QvtC70Y8gcGFzc25vXG4iCisiXHRmc2NrLiDQnNC4INGB0L/RgNC+0LHRg9GU0LzQviDRidC+0YHRjCDQt9GA0L7QsdC40YLQuCwg0LDQu9C1INCy0LDQvCDRgdC70ZbQtCDQstC40L/RgNCw0LLQuNGC0LhcbiIKKyJcdNCy0LDRiCDRhNCw0LnQuyAvZXRjL2ZzdGFiINGP0LrQvtC80L7Qs9CwINGI0LLQuNC00YjQtS5cbiIKKyJcbiIKKworIzogbWlzYy9mc2NrLmM6NDc4CisjLCBjLWZvcm1hdAorbXNnaWQgImZzY2s6ICVzOiBub3QgZm91bmRcbiIKK21zZ3N0ciAiZnNjazogJXM6INC90LUg0LfQvdCw0LnQtNC10L3QvlxuIgorCisjOiBtaXNjL2ZzY2suYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdhaXQ6IE5vIG1vcmUgY2hpbGQgcHJvY2Vzcz8hP1xuIgorbXNnc3RyICIlczog0L7Rh9GW0LrRg9Cy0LDQvdC90Y86INC90LUg0LfQsNC70LjRiNC40LvQvtGB0Y8g0LTQvtGH0ZbRgNC90ZbRhSDQv9GA0L7RhtC10YHRltCyPyE/XG4iCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPLi4uINCy0LjQutC+0L3QsNC90L3RjyAlcyDQtNC70Y8g0L/RgNC40YHRgtGA0L7RjiAlcyDQt9Cw0LLQtdGA0YjQuNC70L7RgdGPINGB0LjQs9C90LDQu9C+0LwgJWQuXG4iCisKKyM6IG1pc2MvZnNjay5jOjYyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIgorbXNnc3RyICIlcyAlczog0YHRgtCw0L0g4oCUICV4LCDRgtCw0LrQvtCz0L4g0L3QtSDQv9C+0LLQuNC90L3QviDQsdGD0LvQviDRgdGC0LDRgtC40YHRjy5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICLQl9Cw0LLQtdGA0YjQtdC90L4sICVzICjRgdGC0LDQvSDQstC40YXQvtC00YMgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiDQv9C+0LzQuNC70LrQsCAlZCDQv9GW0LQg0YfQsNGBINCy0LjQutC+0L3QsNC90L3RjyBmc2NrLiVzINC00LvRjyAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorItCf0YDQtdGE0ZbQutGBIMKrbm/CuyDQsNCx0L4gwqshwrsg0LzQsNGUINCx0YPRgtC4INC/0LXRgNC10LTQsNC90L4g0LDQsdC+INCy0YHRltC8INCw0LHQviDQttC+0LTQvdC+0LzRgyDQtyDRgtC40L/RltCyICIKKyLRhNCw0LnQu9C+0LLQuNGFXG4iCisi0YHQuNGB0YLQtdC8LCDQv9C10YDQtdC00LDQvdC40YUg0LTQviAtdC5cbiIKKworIzogbWlzYy9mc2NrLmM6NzYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBmaWxlc3lzdGVtIHR5cGVzXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0YDQvtC30LzRltGB0YLQuNGC0Lgg0YMg0L/QsNC84oCZ0Y/RgtGWINGC0LjQv9C4INGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC8XG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczog0L/RgNC+0L/Rg9GB0LrQsNGU0LzQviDQv9C+0LzQuNC70LrQvtCy0LjQuSDRgNGP0LTQvtC6INGDIC9ldGMvZnN0YWI6INC80L7QvdGC0YPQstCw0L3QvdGPINC3INC/0YDQuNCy4oCZ0Y/Qt9GD0LLQsNC90L3Rj9C8INGWICIKKyLQvdC10L3Rg9C70YzQvtCy0L7RjiDQutGW0LvRjNC60ZbRgdGC0Y4g0L/RgNC+0YXQvtC00ZbQsiBmc2NrXG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2s6INC90LUg0LLQtNCw0LvQvtGB0Y8g0L/QtdGA0LXQstGW0YDQuNGC0LggJXM6INC90LAg0LLQuNGP0LLQu9C10L3QviBmc2NrLiVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgItCf0LXRgNC10LLRltGA0LrQsCDQstGB0ZbRhSDRhNCw0LnQu9C+0LLQuNGFINGB0LjRgdGC0LXQvC5cbiIKKworIzogbWlzYy9mc2NrLmM6MTA1OAorIywgYy1mb3JtYXQKK21zZ2lkICItLXdhaXRpbmctLSAocGFzcyAlZClcbiIKK21zZ3N0ciAiLS3QvtGH0ZbQutGD0LLQsNC90L3Rjy0tICjQv9GA0L7RhdGW0LQgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsg0LTQtdGB0LrRgNC40L/RgtC+0YAg0YTQsNC50LvQsCBdIF0gWy10INGC0LjQvyDQpNChXSAiCisiW9C/0LDRgNCw0LzQtdGC0YDQuCDQpNChXSBb0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAgLi4uXVxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBkZXZpY2VzXG4iCittc2dzdHIgIiVzOiDQt9Cw0LHQsNCz0LDRgtC+INC/0YDQuNGB0YLRgNC+0ZfQslxuIgorCisjOiBtaXNjL2ZzY2suYzoxMTUzIG1pc2MvZnNjay5jOjEyMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGFyZ3VtZW50c1xuIgorbXNnc3RyICIlczog0LfQsNC90LDQtNGC0L4g0LHQsNCz0LDRgtC+INCw0YDQs9GD0LzQtdC90YLRltCyXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NDAKK21zZ2lkICJNb3VudGluZyByZWFkLW9ubHkuXG4iCittc2dzdHIgItCc0L7QvdGC0YPRlNC80L4g0LvQuNGI0LUg0LTQu9GPINGH0LjRgtCw0L3QvdGPLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBBbGxvd2luZyB1c2VycyB0byBhbGxvY2F0ZSBhbGwgYmxvY2tzLiBUaGlzIGlzIGRhbmdlcm91cyFcbiIKK21zZ3N0ciAiJXM6INC00L7Qt9Cy0L7Qu9GP0ZTQvNC+INC60L7RgNC40YHRgtGD0LLQsNGH0LDQvCDRgNC+0LfQvNGW0YnRg9Cy0LDRgtC4INGD0YHRliDQsdC70L7QutC4LiDQptC1INC90LXQsdC10LfQv9C10YfQvdC+IVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc2IG1pc2MvZnVzZTJmcy5jOjM3ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzLlxuIgorbXNnc3RyICIlczogJXMuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzcgbWlzYy9mdXNlMmZzLmM6Mzc5MSBtaXNjL3R1bmUyZnMuYzozMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAi0JHRg9C00Ywg0LvQsNGB0LrQsCwg0LLRltC00LTQsNC50YLQtSDQutC+0LzQsNC90LTRgyBlMmZzY2sgLWZ5ICVzLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzk4Cittc2dpZCAiSm91cm5hbCBuZWVkcyByZWNvdmVyeTsgcnVubmluZyBgZTJmc2NrIC1FIGpvdXJuYWxfb25seScgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIiIKKyLQltGD0YDQvdCw0Lsg0L/QvtGC0YDQtdCx0YPRlCDQstGW0LTQvdC+0LLQu9C10L3QvdGPOyDRgdC70ZbQtCDQt9Cw0L/Rg9GB0YLQuNGC0LggwqtlMmZzY2sgLUUgam91cm5hbF9vbmx5wrsuXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFdyaXRpbmcgdG8gdGhlIGpvdXJuYWwgaXMgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiJXM6INC/0ZbQtNGC0YDQuNC80LrQuCDQt9Cw0L/QuNGB0YMg0LTQviDQttGD0YDQvdCw0LvRgyDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4uXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MjEKK21zZ2lkICJXYXJuaW5nOiBNb3VudGluZyB1bmNoZWNrZWQgZnMsIHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQvNC+0L3RgtGD0ZTQvNC+INC90LXQv9C10YDQtdCy0ZbRgNC10L3RgyDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgywg0YDQtdC60L7QvNC10L3QtNGD0ZTQvNC+INC30LDQv9GD0YHRgtC40YLQuCAiCisiZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0LTQvtGB0Y/Qs9C90YPRgtC+INC80LDQutGB0LjQvNCw0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0LzQvtC90YLRg9Cy0LDQvdGMLCDRgNC10LrQvtC80LXQvdC00YPRlNC80L4gIgorItC30LDQv9GD0YHRgtC40YLQuCBlMmZzY2suXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzAKK21zZ2lkICJXYXJuaW5nOiBDaGVjayB0aW1lIHJlYWNoZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INC/0YDQuNC50YjQvtCyINGH0LDRgSDQv9C10YDQtdCy0ZbRgNC60Lg7INGA0LXQutC+0LzQtdC90LTRg9GU0LzQviDQt9Cw0L/Rg9GB0YLQuNGC0LggZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM0Cittc2dpZCAiT3JwaGFucyBkZXRlY3RlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgItCS0LjRj9Cy0LvQtdC90L4g0L7RgdC40YDQvtGC0ZbQu9GWINCx0LvQvtC60Lg7INGA0LXQutC+0LzQtdC90LTRg9GU0LzQviDQt9Cw0L/Rg9GB0YLQuNGC0LggZTJmc2NrLlxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODM4Cittc2dpZCAiRXJyb3JzIGRldGVjdGVkOyBydW5uaW5nIGUyZnNjayBpcyByZXF1aXJlZC5cbiIKK21zZ3N0ciAi0JLQuNGP0LLQu9C10L3QviDQv9C+0LzQuNC70LrQuDsg0YHQu9GW0LQg0LfQsNC/0YPRgdGC0LjRgtC4IGUyZnNjay5cbiIKKworIzogbWlzYy9sc2F0dHIuYzo3NQorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1SVmFkbHB2XSBbZmlsZXMuLi5dXG4iCittc2dzdHIgItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgWy1SVmFkbHB2XSBb0YTQsNC50LvQuC4uLl1cbiIKKworIzogbWlzYy9sc2F0dHIuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICLQn9GW0LQg0YfQsNGBINGH0LjRgtCw0L3QvdGPINC/0YDQsNC/0L7RgNGG0ZbQsiDQvdCwICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgcHJvamVjdCBvbiAlcyIKK21zZ3N0ciAi0J/RltC0INGH0LDRgSDRh9C40YLQsNC90L3RjyDQv9GA0L7QtdC60YLRgyDQvdCwICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgItCf0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LLQtdGA0YHRltGXINC90LAgJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jfC1sIGZpbGVuYW1lXSBbLWIgYmxvY2stc2l6ZV0gWy1DIGNsdXN0ZXItc2l6ZV1cbiIKKyJcdFstaSBieXRlcy1wZXItaW5vZGVdIFstSSBpbm9kZS1zaXplXSBbLUogam91cm5hbC1vcHRpb25zXVxuIgorIlx0Wy1HIGZsZXgtZ3JvdXAtc2l6ZV0gWy1OIG51bWJlci1vZi1pbm9kZXNdIFstZCByb290LWRpcmVjdG9yeV1cbiIKKyJcdFstbSByZXNlcnZlZC1ibG9ja3MtcGVyY2VudGFnZV0gWy1vIGNyZWF0b3Itb3NdXG4iCisiXHRbLWcgYmxvY2tzLXBlci1ncm91cF0gWy1MIHZvbHVtZS1sYWJlbF0gWy1NIGxhc3QtbW91bnRlZC1kaXJlY3RvcnldXG4iCisiXHRbLU8gZmVhdHVyZVssLi4uXV0gWy1yIGZzLXJldmlzaW9uXSBbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXVxuIgorIlx0Wy10IGZzLXR5cGVdIFstVCB1c2FnZS10eXBlIF0gWy1VIFVVSURdIFstZSBlcnJvcnNfYmVoYXZpb3JdWy16ICIKKyJ1bmRvX2ZpbGVdXG4iCisiXHRbLWpucXZERlNWXSBkZXZpY2UgW2Jsb2Nrcy1jb3VudF1cbiIKK21zZ3N0ciAiIgorItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgWy1jfC1sINC90LDQt9Cy0LAg0YTQsNC50LvQsF0gWy1iINGA0L7Qt9C80ZbRgCDQsdC70L7QutGDXSBbLUMg0YDQvtC30LzRltGAINC60LvQsNGB0YLQtdGA0LBdXG4iCisiXHRbLWkg0LHQsNC50YLRltCyINC90LAgaW5vZGVdIFstSSDRgNC+0LfQvNGW0YAgaW5vZGVdIFstSiDQv9Cw0YDQsNC80LXRgtGA0Lgg0LbRg9GA0L3QsNC70YNdXG4iCisiXHRbLUcg0YDQvtC30LzRltGAINGE0LvQtdC60YEt0LPRgNGD0L/QuF0gWy1OINC60ZbQu9GM0LrRltGB0YLRjCBpbm9kZV0gWy1kINC60L7RgNC10L3QtdCy0LjQuSDQutCw0YLQsNC70L7Qs11cbiIKKyJcdFstbSDQstGW0LTRgdC+0YLQvtC6INC30LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40YUg0LHQu9C+0LrRltCyXSBbLW8g0J7QoSDRgdGC0LLQvtGA0LXQvdC90Y9dXG4iCisiXHRbLWcg0LHQu9C+0LrRltCyINC90LAg0LPRgNGD0L/Rg10gWy1MINC80ZbRgtC60LAg0YLQvtC80YNdIFstTSDQvtGB0YLQsNC90L3RltC5INC30LzQvtC90YLQvtCy0LDQvdC40Lkg0LrQsNGC0LDQu9C+0LNdXG4iCisiXHRbLU8g0LzQvtC20LvQuNCy0ZbRgdGC0YxbLC4uLl1dIFstciDQvNC+0LTQuNGE0ZbQutCw0YbRltGPINCk0KFdIFstRSDRgNC+0LfRiNC40YDQtdC90LjQuSDQv9Cw0YDQsNC80LXRgtGAWywuLi5dXVxuIgorIlx0Wy10INGC0LjQvyDQpNChXSBbLVQg0YLQuNC/INCy0LjQutC+0YDQuNGB0YLQsNC90L3Rj10gWy1VIFVVSURdIFstZSDQv9C+0LLQtdC00ZbQvdC60LAg0L/RgNC4INC/0L7QvNC40LvQutCw0YVdXG4iCisiXHRbLXog0YTQsNC50LvQsCDRgdC60LDRgdGD0LLQsNC90L3RjyDQtNGW0LldIFstam5xdkRGU1ZdINC/0YDQuNGB0YLRgNGW0LkgW9C70ZbRh9C40LvRjNC90LjQuiDQsdC70L7QutGW0LJdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU1CisjLCBjLWZvcm1hdAorbXNnaWQgIlJ1bm5pbmcgY29tbWFuZDogJXNcbiIKK21zZ3N0ciAi0JLQuNC60L7QvdCw0L3QvdGPINC60L7QvNCw0L3QtNC4OiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0LjQutC+0L3QsNGC0Lggwqslc8K7IgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQvtCx0YDQvtCx0LrQuCDRgdC/0LjRgdC60YMg0L/QvtC80LjQu9C60L7QstC40YUg0LHQu9C+0LrRltCyINC3INC/0YDQvtCz0YDQsNC80LgiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkJsb2NrICVkIGluIHByaW1hcnkgc3VwZXJibG9jay9ncm91cCBkZXNjcmlwdG9yIGFyZWEgYmFkLlxuIgorbXNnc3RyICLQn9C+0YjQutC+0LTQttC10L3QviDQsdC70L7QuiAlZCDRgyDQvtGB0L3QvtCy0L3QvtC80YMg0LTQtdGB0LrRgNC40L/RgtC+0YDRliDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQsNCx0L4g0LPRgNGD0L/QuC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorItCp0L7QsSDQv9C+0LHRg9C00YPQstCw0YLQuCDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgywg0LHQu9C+0LrQuCDQstGW0LQgJXUg0LTQviAldSDQvNCw0ZQg0LHRg9GC0Lgg0L3QtSDQv9C+0YjQutC+0LTQttC10L3Qvi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAi0J/QtdGA0LXRgNC40LLQsNGU0LzQviDQvtCx0YDQvtCx0LrRgy4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INGA0LXQt9C10YDQstC90ZYg0LTQtdGB0LrRgNC40L/RgtC+0YDQuCDRgdGD0L/QtdGA0LHQu9C+0LrRltCyINCw0LHQviDQs9GA0YPQvyDRgyDQsdC70L7RhtGWICV1XG4iCisiXHTQvNGW0YHRgtGP0YLRjCDQv9C+0LzQuNC70LrQvtCy0ZYg0LHQu9C+0LrQuC5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMzcKK21zZ2lkICJ3aGlsZSBtYXJraW5nIGJhZCBibG9ja3MgYXMgdXNlZCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0L/QvtC30L3QsNGH0LjRgtC4INC/0L7RiNC60L7QtNC20LXQvdGWINCx0LvQvtC60Lgg0Y/QuiDQstC40LrQvtGA0LjRgdGC0LDQvdGWIgorCisjOiBtaXNjL21rZTJmcy5jOjQwOAorbXNnaWQgIldyaXRpbmcgaW5vZGUgdGFibGVzOiAiCittc2dzdHIgItCX0LDQv9C40YHRg9GU0LzQviDRgtCw0LHQu9C40YbRliBpbm9kZTogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisi0J3QtSDQstC00LDQu9C+0YHRjyDQt9Cw0L/QuNGB0LDRgtC4ICVkINCx0LvQvtC60ZbQsiDQtNC+INGC0LDQsdC70LjRhtGWIGlub2RlLCDRidC+INC/0L7Rh9C40L3QsNGU0YLRjNGB0Y8g0LcgJWxsdTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NDQgbWlzYy9ta2UyZnMuYzoyNjU0IG1pc2MvbWtlMmZzLmM6MzAzMAorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgItCy0LjQutC+0L3QsNC90L4gICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo0NTkKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyByb290IGRpciIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8g0LrQvtGA0LXQvdC10LLQvtCz0L4g0LrQsNGC0LDQu9C+0LPRgyIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LrQvtGA0LXQvdC10LLQvtCz0L4gaW5vZGUiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDc4Cittc2dpZCAid2hpbGUgc2V0dGluZyByb290IGlub2RlIG93bmVyc2hpcCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQstGB0YLQsNC90L7QstC70LXQvdC90Y8g0LTQsNC90LjRhSDRidC+0LTQviDQstC70LDRgdC90LjQutCwINC60L7RgNC10L3QtdCy0L7Qs9C+IGlub2RlIgorCisjOiBtaXNjL21rZTJmcy5jOjQ5NgorbXNnaWQgIndoaWxlIGNyZWF0aW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdGC0LLQvtGA0LjRgtC4IC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0L/QvtGI0YPQutGDIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUxNgorbXNnaWQgIndoaWxlIGV4cGFuZGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPIC9sb3N0K2ZvdW5kIgorCisjOiBtaXNjL21rZTJmcy5jOjUzMQorbXNnaWQgIndoaWxlIHNldHRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyBpbm9kZSDQv9C+0LzQuNC70LrQvtCy0L7Qs9C+INCx0LvQvtC60YMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgItCd0LUg0LLQuNC30L3QsNGH0LDRlCDQv9Cw0LzigJnRj9GC0ZYg0LTQu9GPINCy0LjRgtC40YDQsNC90L3RjyDRgdC10LrRgtC+0YDRltCyICVkLSVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NTY4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrIDA6ICVzXG4iCittc2dzdHIgItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0L3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0LHQu9C+0LogMDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIKK21zZ3N0ciAi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQvdC1INCy0LTQsNC70L7RgdGPINCy0LjRgtC10YDRgtC4INGB0LXQutGC0L7RgCAlZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRltC90ZbRhtGW0LDQu9GW0LfQsNGG0ZbRlyDRgdGD0L/QtdGA0LHQu9C+0LrRgyDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgItCX0LDQvdGD0LvQtdC90L3RjyDQv9GA0LjRgdGC0YDQvtGOINC20YPRgNC90LDQu9GDOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQt9Cw0L3Rg9C70LXQvdC90Y8g0L/RgNC40YHRgtGA0L7RjiDQttGD0YDQvdCw0LvRgyAo0LHQu9C+0LogJWxsdSwg0LrRltC70YzQutGW0YHRgtGMICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzo2MzcKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQsNC/0LjRgdCw0YLQuCDRgdGD0L/QtdGA0LHQu9C+0Log0LbRg9GA0L3QsNC70YMiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAlbGx1ICVkayBibG9ja3MgYW5kICV1IGlub2Rlc1xuIgorbXNnc3RyICLQodGC0LLQvtGA0Y7RlNC80L4g0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0LcgJWxsdSAlZNCaINCx0LvQvtC60LDQvNC4INGC0LAgJXUgaW5vZGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItC/0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0L3QtSDQstC40LrQvtGA0LjRgdGC0LDQvdC+ICVsbHUg0LHQu9C+0LrRltCyLlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2NQorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGxhYmVsPSVzXG4iCittc2dzdHIgItCc0ZbRgtC60LAg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuD0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICLQotC40L8g0J7QoTogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICLQoNC+0LfQvNGW0YAg0LHQu9C+0LrRgz0ldSAo0LbRg9GA0L3QsNC7PSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAi0KDQvtC30LzRltGAINC60LvQsNGB0YLQtdGA0LA9JXUgKNC20YPRgNC90LDQuz0ldSlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJhZ21lbnQgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICLQoNC+0LfQvNGW0YAg0YTRgNCw0LPQvNC10L3RgtCwPSV1ICjQttGD0YDQvdCw0Ls9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiU3RyaWRlPSV1INCx0LvQvtC60ZbQsiwgU3RyaXBlIHdpZHRoPSV1INCx0LvQvtC60ZbQslxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMsICVsbHUgYmxvY2tzXG4iCittc2dzdHIgIiV1IGlub2RlLCAlbGx1INCx0LvQvtC60ZbQslxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4MworIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IGJsb2NrcyAoJTIuMmYlJSkgcmVzZXJ2ZWQgZm9yIHRoZSBzdXBlciB1c2VyXG4iCittc2dzdHIgIiVsbHUg0LHQu9C+0LrRltCyICglMi4yZiUlKSDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QviDQtNC70Y8g0YHRg9C/0LXRgNC60L7RgNC40YHRgtGD0LLQsNGH0LBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICLQn9C10YDRiNC40Lkg0LHQu9C+0Log0LTQsNC90LjRhT0ldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY4OAorIywgYy1mb3JtYXQKK21zZ2lkICJSb290IGRpcmVjdG9yeSBvd25lcj0ldToldVxuIgorbXNnc3RyICLQktC70LDRgdC90LjQuiDQutC+0YDQtdC90LXQstC+0LPQviDQutCw0YLQsNC70L7Qs9GDPSV1OiV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIk1heGltdW0gZmlsZXN5c3RlbSBibG9ja3M9JWx1XG4iCittc2dzdHIgItCc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINCx0LvQvtC60ZbQsiDRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWPSVsdVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5NAorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9jayBncm91cHNcbiIKK21zZ3N0ciAiJXUg0LPRgNGD0L8g0LHQu9C+0LrRltCyXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3VwXG4iCittc2dzdHIgIiV1LdCx0LvQvtC60L7QstCwINCz0YDRg9C/0LBcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgY2x1c3RlcnMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiV1INCx0LvQvtC60ZbQsiDQvdCwINCz0YDRg9C/0YMsICV1INC60LvQsNGB0YLQtdGA0ZbQsiDQvdCwINCz0YDRg9C/0YNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSDQsdC70L7QutGW0LIg0L3QsCDQs9GA0YPQv9GDLCAldSDRhNGA0LDQs9C80LXQvdGC0ZbQsiDQvdCwINCz0YDRg9C/0YNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBpbm9kZSDQvdCwINCz0YDRg9C/0YNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lg6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAi0KDQtdC30LXRgNCy0L3RliDQutC+0L/RltGXINGB0YPQv9C10YDQsdC70L7QutGDINC30LHQtdGA0ZbQs9Cw0Y7RgtGM0YHRjyDRgyDRgtCw0LrQuNGFINCx0LvQvtC60LDRhTogIgorCisjOiBtaXNjL21rZTJmcy5jOjgwNworIywgYy1mb3JtYXQKK21zZ2lkICIlcyByZXF1aXJlcyAnLU8gNjRiaXQnXG4iCittc2dzdHIgIiVzINC/0L7RgtGA0LXQsdGD0ZQgJy1PIDY0Yml0J1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjgxMworIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIG11c3QgYmUgYmVmb3JlICdyZXNpemU9JXUnXG4iCittc2dzdHIgIsKrJXPCuyDQvNCw0ZQg0LHRg9GC0Lgg0LTQviDCq3Jlc2l6ZT0ldcK7XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC1INC30L3QsNGH0LXQvdC90Y8gZGVzY19zaXplOiDCqyVzwrtcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0LLRltC00YHRgtGD0L86ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5IG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDRgNC10LfQtdGA0LLQvdC40YUg0YHRg9C/0LXRgNCx0LvQvtC60ZbQsjogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QtSDQt9C90LDRh9C10L3QvdGPINC/0LDRgNCw0LzQtdGC0YDQsCBzdHJpZGU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LUg0LfQvdCw0YfQtdC90L3RjyDQv9Cw0YDQsNC80LXRgtGA0LAgc3RyaXBlLXdpZHRoOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHJlc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0L/QsNGA0LDQvNC10YLRgCDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LI6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTM0Cittc2dpZCAiVGhlIHJlc2l6ZSBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmaWxlc3lzdGVtIHNpemUuXG4iCittc2dzdHIgItCc0LDQutGB0LjQvNGD0Lwg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRgyDQvNCw0ZQg0L/QtdGA0LXQstC40YnRg9Cy0LDRgtC4INGA0L7Qt9C80ZbRgCDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorItCf0ZbQtNGC0YDQuNC80LrQuCDRltC90YLQtdGA0LDQutGC0LjQstC90L7RlyDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LIg0LTQu9GPINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC8INC80L7QtNC40YTRltC60LDRhtGW0ZcgMCDQvdC1ICIKKyLQv9C10YDQtdC00LHQsNGH0LXQvdC+XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QtSDQt9C90LDRh9C10L3QvdGPIHJvb3Rfb3duZXI6IMKrJXPCu1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGludGVydmFsPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgZGF0YSBjaHVuayBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGUtd2lkdGg9PFJBSUQgc3RyaWRlICogZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHRvZmZzZXQ9PG9mZnNldCB0byBjcmVhdGUgdGhlIGZpbGUgc3lzdGVtPlxuIgorIlx0cmVzaXplPTxyZXNpemUgbWF4aW11bSBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdHJvb3Rfb3duZXI9PHVpZCBvZiByb290IGRpcj46PGdpZCBvZiByb290IGRpcj5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTxxdW90YSB0eXBlKHMpIHRvIGJlIGVuYWJsZWQ+XG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQktC60LDQt9Cw0L3QviDQv9C+0LzQuNC70LrQvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4OiAlc1xuIgorIlxuIgorItCU0L7QtNCw0YLQutC+0LLRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0YHQu9GW0LQg0LLRltC00L7QutGA0LXQvNC70Y7QstCw0YLQuCDQutC+0LzQsNC80LgsINC00L4g0L3QuNGFINC80L7QttC90LAg0LTQvtC00LDQstCw0YLQuCAiCisi0LDRgNCz0YPQvNC10L3RgixcbiIKKyJcdNC30L3QsNGH0LXQvdC90Y8g0Y/QutC+0LPQviDQt9Cw0L/QuNGB0YPRlNGC0YzRgdGPINC/0ZbRgdC70Y8g0LfQvdCw0LrRgyDRgNGW0LLQvdC+0YHRgtGWICjCqz3CuykuXG4iCisiXG4iCisi0JrQvtGA0LXQutGC0L3RliDQtNC+0LTQsNGC0LrQvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4OlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD080ZbQvdGC0LXRgNCy0LDQuz5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTzRhNGA0LDQs9C80LXQvdGCINC00LDQvdC40YUg0L3QsCDQtNC40YHQuiBSQUlEINGDINCx0LvQvtC60LDRhT5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiDQutGW0LvRjNC60ZbRgdGC0Ywg0LTQuNGB0LrRltCyINC3INC00LDQvdC40LzQuCDRgyDQsdC70L7QutCw0YU+XG4iCisiXHRvZmZzZXQ9PNCy0ZbQtNGB0YLRg9C/INC00LvRjyDRgdGC0LLQvtGA0LXQvdC90Y8g0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuD5cbiIKKyJcdHJlc2l6ZT080LzQsNC60YHQuNC80LDQu9GM0L3QsCDQt9C80ZbQvdCwINGA0L7Qt9C80ZbRgNGW0LIg0YMg0LHQu9C+0LrQsNGFPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIC0g0LLQuNC80LrQvdGD0YLQuCwgMSAtINGD0LLRltC80LrQvdGD0YLQuD5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgLSDQstC40LzQutC90YPRgtC4LCAxIC0g0YPQstGW0LzQutC90YPRgtC4PlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgLSDQstC40LzQutC90YPRgtC4LCAxIC0g0YPQstGW0LzQutC90YPRgtC4PlxuIgorIlx0cm9vdF9vd25lcj08dWlkINC60L7RgNC10L3QtdCy0L7Qs9C+INC60LDRgtCw0LvQvtCz0YM+OjxnaWQg0LrQvtGA0LXQvdC10LLQvtCz0L4g0LrQsNGC0LDQu9C+0LPRgz5cbiIKKyJcdHRlc3RfZnNcbiIKKyJcdGRpc2NhcmRcbiIKKyJcdG5vZGlzY2FyZFxuIgorIlx0cXVvdGF0eXBlPTzRg9Cy0ZbQvNC60L3QtdC90ZYg0YLQuNC/0Lgg0LrQstC+0YI+XG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiBzdHJpcGUtd2lkdGggUkFJRCwgJXUsINC90LUg0ZQg0L/QsNGA0L3QuNC8INC60YDQsNGC0L3QuNC8IHN0cmlkZSwgJXUuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTEwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3ludGF4IGVycm9yIGluIG1rZTJmcyBjb25maWcgZmlsZSAoJXMsIGxpbmUgIyVkKVxuIgorIlx0JXNcbiIKK21zZ3N0ciAiIgorItCh0LjQvdGC0LDQutGB0LjRh9C90LAg0L/QvtC80LjQu9C60LAg0YMg0YTQsNC50LvRliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMIG1rZTJmcyAoJXMsINGA0Y/QtNC+0LogJWQpXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9C10L3QviDQvdC10LrQvtGA0LXQutGC0L3QuNC5INC/0LDRgNCw0LzQtdGC0YAg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTI2IG1pc2MvdHVuZTJmcy5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1vdW50IG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvQtdC90L4g0L3QtdC60L7RgNC10LrRgtC90LjQuSDQv9Cw0YDQsNC80LXRgtGAINC80L7QvdGC0YPQstCw0L3QvdGPOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCjINCy0LDRiNC+0LzRgyDRhNCw0LnQu9GWIG1rZTJmcy5jb25mINC90LUg0LzRltGB0YLQuNGC0YzRgdGPINGC0LjQv9GDINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LggJXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorItCZ0LzQvtCy0ZbRgNC90L4sINCy0LDQvCDRgdC70ZbQtCDQstGB0YLQsNC90L7QstC40YLQuCDQvtC90L7QstC70LXQvdC40Lkg0YTQsNC50LsgbWtlMmZzLmNvbmYuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgItCf0LXRgNC10YDQuNCy0LDRlNC80L4g0L7QsdGA0L7QsdC60YMuLi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMzExCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgZnNfdHlwZSAlcyBpcyBub3QgZGVmaW5lZCBpbiBta2UyZnMuY29uZlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiBmc190eXBlINC00LvRjyAlcyDRgyBta2UyZnMuY29uZiDQvdC1INCy0LjQt9C90LDRh9C10L3QvlxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINGA0L7Qt9C80ZbRgdGC0LjRgtC4INGDINC/0LDQvOKAmdGP0YLRjCDQvdC+0LLRgyDQt9C80ZbQvdC90YMgUEFUSC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINGD0YHQv9GW0YjQvdC+INGW0L3RltGG0ZbQsNC70ZbQt9GD0LLQsNGC0Lgg0L/RgNC+0YTRltC70YwgKNC/0L7QvNC40LvQutCwOiAlbGQpLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9jayBzaXplIC0gJXMiCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40Lkg0YDQvtC30LzRltGAINCx0LvQvtC60YMgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDRgNC+0LfQvNGW0YAg0LHQu9C+0LrRgyAlZCDRlCDQvdC10L/RgNC40LTQsNGC0L3QuNC8INC00LvRjyDQsdGW0LvRjNGI0L7RgdGC0ZYg0YHQuNGB0YLQtdC8LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjbHVzdGVyIHNpemUgLSAlcyIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90LjQuSDRgNC+0LfQvNGW0YAg0LrQu9Cw0YHRgtC10YDQsCAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIsKrLVLCuyDRlCDQt9Cw0YHRgtCw0YDRltC70LjQvCwg0LLQsNC8INCy0LDRgNGC0L4g0YHQutC+0YDQuNGB0YLQsNGC0LjRgdGPIMKrLUXCuyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgItC/0L7QvNC40LvQutC+0LLQsCDQv9C+0LLQtdC00ZbQvdC60LAg0YMg0LLRltC00L/QvtCy0ZbQtNGMINC90LAg0L/QvtC80LjQu9C60YM6ICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MjYKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgYmxvY2tzIHBlciBncm91cCIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LAg0LrRltC70YzQutGW0YHRgtGMINCx0LvQvtC60ZbQsiDQvdCwINCz0YDRg9C/0YMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzMQorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgbXVzdCBiZSBtdWx0aXBsZSBvZiA4IgorbXNnc3RyICLQutGW0LvRjNC60ZbRgdGC0Ywg0LHQu9C+0LrRltCyINC90LAg0LPRgNGD0L/RgyDQvNCw0ZQg0LHRg9GC0Lgg0LrRgNCw0YLQvdC+0Y4gOCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjM5Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGZsZXhfYmcgc2l6ZSIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LUg0YfQuNGB0LvQviDQtNC70Y8g0YDQvtC30LzRltGA0YMgZmxleF9iZyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICLQoNC+0LfQvNGW0YAgZmxleF9iZyDQvNCw0ZQg0LHRg9GC0Lgg0YHRgtC10L/QtdC90LXQvCAyIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmxleF9iZyBzaXplICglbHUpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDJeMzEiCittc2dzdHIgItGA0L7Qt9C80ZbRgCBmbGV4X2JnICglbHUpINC80LDRlCDQsdGD0YLQuCDQvdC1INCx0ZbQu9GM0YjQuNC8INC30LAgMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICLQvdC10LrQvtGA0LXQutGC0L3QtSDQstGW0LTQvdC+0YjQtdC90L3RjyBpbm9kZSAlcyAo0LzRltC9LiAlZC/QvNCw0LrRgS4gJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40Lkg0YDQvtC30LzRltGAIGlub2RlIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY4MworbXNnaWQgIiIKKyJXYXJuaW5nOiAtSyBvcHRpb24gaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSAnLUUgIgorIm5vZGlzY2FyZCcgZXh0ZW5kZWQgb3B0aW9uIGluc3RlYWQhXG4iCittc2dzdHIgIiIKKyLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INC/0LDRgNCw0LzQtdGC0YAgLUsg0ZQg0LfQsNGB0YLQsNGA0ZbQu9C40LwsINC90LjQvCDQvdC1INCy0LDRgNGC0L4g0LHRltC70YzRiNC1INC60L7RgNC40YHRgtGD0LLQsNGC0LjRgdGPLiAiCisi0JLQsNC8INCy0LDRgNGC0L4g0LrQvtGA0LjRgdGC0YPQstCw0YLQuNGB0Y8g0L/QsNGA0LDQvNC10YLRgNC+0LwgwqstRSBub2Rpc2NhcmTCuyFcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNjk0Cittc2dpZCAiaW4gbWFsbG9jIGZvciBiYWRfYmxvY2tzX2ZpbGVuYW1lIgorbXNnc3RyICLRgyBtYWxsb2Mg0LTQu9GPIGJhZF9ibG9ja3NfZmlsZW5hbWUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcwMworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiIgorItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0L3QsNC00YLQviDQtNC+0LLQs9CwINC80ZbRgtC60LAsINC+0LHRgNGW0LfQsNGU0LzQviDQtNC+IMKrJXPCuy5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzEyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlcyIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90LjQuSDQstGW0LTRgdC+0YLQvtC6INC30LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40YUg0LHQu9C+0LrRltCyIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTcyNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbnVtIGlub2RlcyAtICVzIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LAg0LrRltC70YzQutGW0YHRgtGMIGlub2RlIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YDQvtC30LzRltGJ0LXQvdC90Y8g0YMg0L/QsNC84oCZ0Y/RgtGWINGA0Y/QtNC60LAgZnNfZmVhdHVyZSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LjQuSDRgNGW0LLQtdC90Ywg0LzQvtC00LjRhNGW0LrQsNGG0ZbRlyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3NjIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSByZXZpc2lvbiAlZCIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8g0LzQvtC00LjRhNGW0LrQsNGG0ZbRlyAlZCIKKworIzogbWlzYy9ta2UyZnMuYzoxNzc2Cittc2dpZCAiVGhlIC10IG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgItCf0LDRgNCw0LzQtdGC0YAgLXQg0LzQvtC20L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC0Lgg0LvQuNGI0LUg0L7QtNC40L0g0YDQsNC3IgorCisjOiBtaXNjL21rZTJmcy5jOjE3ODQKK21zZ2lkICJUaGUgLVQgb3B0aW9uIG1heSBvbmx5IGJlIHVzZWQgb25jZSIKK21zZ3N0ciAi0J/QsNGA0LDQvNC10YLRgCAtVCDQvNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQu9C40YjQtSDQvtC00LjQvSDRgNCw0LciCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLQuCDQv9GA0LjRgdGC0YDRltC5INC20YPRgNC90LDQu9GDICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGRldiBibG9ja3NpemUgKCVkKSBzbWFsbGVyIHRoYW4gbWluaW11bSBibG9ja3NpemUgJWRcbiIKK21zZ3N0ciAiIgorItCg0L7Qt9C80ZbRgCDQsdC70L7QutGDINC/0YDQuNGB0YLRgNC+0Y4g0LbRg9GA0L3QsNC70YMgKCVkKSDRlCDQvNC10L3RiNC40Lwg0LfQsCDQvNGW0L3RltC80LDQu9GM0L3QuNC5INGA0L7Qt9C80ZbRgCDQsdC70L7QutGDICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAi0JLQuNC60L7RgNC40YHRgtC+0LLRg9GU0LzQviDRgNC+0LfQvNGW0YAg0LHQu9C+0LrRgyDQv9GA0LjRgdGC0YDQvtGOINC20YPRgNC90LDQu9GDOiAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9ja3MgJyVzJyBvbiBkZXZpY2UgJyVzJyIKK21zZ3N0ciAi0L3QtdC60L7RgNC10LrRgtC90ZYg0LHQu9C+0LrQuCDCqyVzwrsg0L3QsCDQv9GA0LjRgdGC0YDQvtGXIMKrJXPCuyIKKworIzogbWlzYy9ta2UyZnMuYzoxODg3Cittc2dpZCAiZmlsZXN5c3RlbSIKK21zZ3N0ciAi0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwMCByZXNpemUvbWFpbi5jOjQ5MQorbXNnaWQgIndoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgZmlsZXN5c3RlbSBzaXplIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstC40LfQvdCw0YfQuNGC0Lgg0YDQvtC30LzRltGAINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LgiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkwNgorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbVxuIgorbXNnc3RyICIiCisi0J3QtSDQstC00LDQu9C+0YHRjyDQstC40LfQvdCw0YfQuNGC0Lgg0YDQvtC30LzRltGAINC/0YDQuNGB0YLRgNC+0Y47INCy0LDQvCDRgdC70ZbQtCDQstC60LDQt9Cw0YLQuFxuIgorItGA0L7Qt9C80ZbRgCDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkxMworbXNnaWQgIiIKKyJEZXZpY2Ugc2l6ZSByZXBvcnRlZCB0byBiZSB6ZXJvLiAgSW52YWxpZCBwYXJ0aXRpb24gc3BlY2lmaWVkLCBvclxuIgorIlx0cGFydGl0aW9uIHRhYmxlIHdhc24ndCByZXJlYWQgYWZ0ZXIgcnVubmluZyBmZGlzaywgZHVlIHRvXG4iCisiXHRhIG1vZGlmaWVkIHBhcnRpdGlvbiBiZWluZyBidXN5IGFuZCBpbiB1c2UuICBZb3UgbWF5IG5lZWQgdG8gcmVib290XG4iCisiXHR0byByZS1yZWFkIHlvdXIgcGFydGl0aW9uIHRhYmxlLlxuIgorbXNnc3RyICIiCisi0J7RgtGA0LjQvNCw0L3QviDQtNCw0L3RliDRidC+0LTQviDQvdGD0LvRjNC+0LLQvtCz0L4g0YDQvtC30LzRltGA0YMg0L/RgNC40YHRgtGA0L7Rji4g0JLQutCw0LfQsNC90L4g0L3QtdC60L7RgNC10LrRgtC90LjQuVxuIgorIlx00YDQvtC30LTRltC7INCw0LHQviDRgtCw0LHQu9C40YbRjiDRgNC+0LfQtNGW0LvRltCyINC90LUg0LHRg9C70L4g0L/QvtCy0YLQvtGA0L3QviDQv9GA0L7Rh9C40YLQsNC90L4g0L/RltGB0LvRj1xuIgorIlx00LfQsNC/0YPRgdC60YMgZmRpc2sg0YfQtdGA0LXQtyDQstC90LXRgdC10L3QvdGPINC30LzRltC9INC00L4g0YDQvtC30LTRltC70YMsINGP0LrQuNC5INC/0LXRgNC10LHRg9Cy0LDQsiDRg1xuIgorIlx00LrQvtGA0LjRgdGC0YPQstCw0L3QvdGWLiDQktCw0Lwg0LLQsNGA0YLQviDQv9C10YDQtdC30LDQstCw0L3RgtCw0LbQuNGC0Lgg0YHQuNGB0YLQtdC80YMsINGJ0L7QsVxuIgorIlx00LTQsNC90ZYg0YLQsNCx0LvQuNGG0ZYg0YDQvtC30LTRltC70ZbQsiDQsdGD0LvQviDQv9GA0L7Rh9C40YLQsNC90L4g0L/RgNCw0LLQuNC70YzQvdC+LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAi0KTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0ZQg0LHRltC70YzRiNC+0Y4g0LfQsCDQstC40LTQuNC80LjQuSDRgNC+0LfQvNGW0YAg0L/RgNC40YHRgtGA0L7Rji4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7QsdGA0L7QsdC40YLQuCDRgdC/0LjRgdC+0Log0YLQuNC/0ZbQsiDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk5OAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgItCjIEhVUkQg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC/0ZbQtNGC0YDQuNC80LrQuCDQvNC+0LbQu9C40LLQvtGB0YLRliDQstC40LfQvdCw0YfQtdC90L3RjyDRgtC40L/RgyDRhNCw0LnQu9GW0LIuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwMworbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIGh1Z2VfZmlsZSBmZWF0dXJlLlxuIgorbXNnc3RyICLQoyBIVVJEINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQv9GW0LTRgtGA0LjQvNC60Lgg0LzQvtC20LvQuNCy0L7RgdGC0ZYgaHVnZV9maWxlLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDgKK21zZ2lkICJUaGUgSFVSRCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgItCjIEhVUkQg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC/0ZbQtNGC0YDQuNC80LrQuCDQvNC+0LbQu9C40LLQvtGB0YLRliBtZXRhZGF0YV9jc3VtLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstC40LfQvdCw0YfQuNGC0Lgg0LDQv9Cw0YDQsNGC0L3QuNC5INGA0L7Qt9C80ZbRgCDRgdC10LrRgtC+0YDQsCIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLQuNC30L3QsNGH0LjRgtC4INGE0ZbQt9C40YfQvdC40Lkg0YDQvtC30LzRltGAINGB0LXQutGC0L7RgNCwIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNTYKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJsb2Nrc2l6ZTsgdG9vIHNtYWxsIGZvciBkZXZpY2VcbiIKK21zZ3N0ciAiIgorItC/0ZbQtCDRh9Cw0YEg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINGA0L7Qt9C80ZbRgNGDINCx0LvQvtC60YM7INGA0L7Qt9C80ZbRgCDRlCDQvdCw0LTRgtC+INC80LDQu9C40Lwg0LTQu9GPINC/0YDQuNGB0YLRgNC+0Y5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQstC60LDQt9Cw0L3QuNC5INGA0L7Qt9C80ZbRgCDQsdC70L7QutGDLCAlZCwg0ZQg0LzQtdC90YjQuNC8INC30LAg0YTRltC30LjRh9C90LjQuSDRgNC+0LfQvNGW0YAg0YHQtdC60YLQvtGA0LAgIgorItC/0YDQuNGB0YLRgNC+0Y4sICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFNpemUgb2YgZGV2aWNlICgweCVsbHggYmxvY2tzKSAlcyB0b28gYmlnIHRvIGJlIGV4cHJlc3NlZFxuIgorIlx0aW4gMzIgYml0cyB1c2luZyBhIGJsb2Nrc2l6ZSBvZiAlZC5cbiIKK21zZ3N0ciAiIgorIiVzOiDRgNC+0LfQvNGW0YDQuCDQv9GA0LjRgdGC0YDQvtGOICgweCVsbHgg0LHQu9C+0LrRltCyKSAlcyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC80Lgg0LTQu9GPXG4iCisiXHTQt9Cw0L/QuNGB0YMg0ZfRhSDRgyAzMi3QsdGW0YLQvtCy0L7QvNGDINGE0L7RgNC80LDRgtGWINC3INGA0L7Qt9C80ZbRgNC+0Lwg0LHQu9C+0LrRgyAlZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiZnNfdHlwZXMg0LTQu9GPINGA0L7Qt9Cy4oCZ0Y/Qt9Cw0L3QvdGPIG1rZTJmcy5jb25mOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEwOAorbXNnaWQgIkZpbGVzeXN0ZW0gZmVhdHVyZXMgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorItCjINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC80LDRhSDQvNC+0LTQuNGE0ZbQutCw0YbRltGXIDAg0LzQvtC20LvQuNCy0L7RgdGC0ZYg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDQvdC1ICIKKyLQv9GW0LTRgtGA0LjQvNGD0Y7RgtGM0YHRj1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMTYKK21zZ2lkICJTcGFyc2Ugc3VwZXJibG9ja3Mgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorItCjINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC80LDRhSDQvNC+0LTQuNGE0ZbQutCw0YbRltGXIDAg0L/RltC00YLRgNC40LzQutC4INGA0L7Qt9GA0ZbQtNC20LXQvdC40YUg0YHRg9C/0LXRgNCx0LvQvtC60ZbQsiDQvdC1ICIKKyLQv9C10YDQtdC00LHQsNGH0LXQvdC+XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEyNgorbXNnaWQgIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgItCjINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC80LDRhSDQvNC+0LTQuNGE0ZbQutCw0YbRltGXIDAg0L/RltC00YLRgNC40LzQutC4INC20YPRgNC90LDQu9GW0LIg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEzOQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50IC0gJWxmIgorbXNnc3RyICLQvdC10LrQvtGA0LXQutGC0L3QuNC5INCy0ZbQtNGB0L7RgtC+0Log0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90LjRhSDQsdC70L7QutGW0LIgLSAlbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorItCU0LvRjyA2NC3QsdGW0YLQvtCy0L7RlyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4INGB0LvRltC0INGD0LLRltC80LrQvdGD0YLQuCDRgNC+0LfRiNC40YDQtdC90L3Rjy4g0J/QtdGA0LXQtNCw0LnRgtC1ICIKKyLQv9GA0L7Qs9GA0LDQvNGWIC1PIGV4dGVudHMsINGJ0L7QsSDQstC40L/RgNCw0LLQuNGC0Lgg0YbQtS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAi0KDQvtC30LzRltGAINC60LvQsNGB0YLQtdGA0LAg0L3QtSDQvNC+0LbQtSDQsdGD0YLQuCDQvNC10L3RiNC40Lwg0LfQsCDRgNC+0LfQvNGW0YAg0LHQu9C+0LrRgy5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTgyCittc2dpZCAic3BlY2lmeWluZyBhIGNsdXN0ZXIgc2l6ZSByZXF1aXJlcyB0aGUgYmlnYWxsb2MgZmVhdHVyZSIKK21zZ3N0ciAi0LTQu9GPINCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qt9C80ZbRgNGDINC60LvQsNGB0YLQtdGA0LAg0L/QvtGC0YDRltCx0L3QsCDQvNC+0LbQu9C40LLRltGB0YLRjCBiaWdhbGxvYyIKKworIzogbWlzYy9ta2UyZnMuYzoyMjAyCisjLCBjLWZvcm1hdAorbXNnaWQgIndhcm5pbmc6IFVuYWJsZSB0byBnZXQgZGV2aWNlIGdlb21ldHJ5IGZvciAlc1xuIgorbXNnc3RyICLQv9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INC90LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQv9Cw0YDQsNC80LXRgtGA0Lgg0L/RgNC40YHRgtGA0L7RjiDQtNC70Y8gJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICLQstC40YDRltCy0L3RjtCy0LDQvdC90Y8gJXMg0LfRgdGD0L3Rg9GC0L4g0L3QsCAlbHUg0LHQsNC50YLRltCyLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAiIgorItCm0LUg0LzQvtC20LUg0L/RgNC40LfQstC10YHRgtC4INC00L4g0LfQvdCw0YfQvdC+0Zcg0LLRgtGA0LDRgtC4INGI0LLQuNC00LrQvtC00ZbRly4g0JLQsNC8INCy0LDRgNGC0L4g0LLQuNC60L7QvdCw0YLQuCDQv9C+0LLRgtC+0YDQvdC40LkgIgorItGA0L7Qt9C/0L7QtNGW0Lsg0L/RgNC40YHRgtGA0L7RjiDQvdCwINGA0L7Qt9C00ZbQu9C4LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQtYnl0ZSBibG9ja3MgdG9vIGJpZyBmb3Igc3lzdGVtIChtYXggJWQpIgorbXNnc3RyICIlZC3QsdCw0LnRgtC+0LLRliDQsdC70L7QutC4INGUINC90LDQtNGC0L4g0LLQtdC70LjQutC40LzQuCDQtNC70Y8g0YHQuNGB0YLQtdC80LggKNC80LDQutGBLiAtICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiAlZC3QsdCw0LnRgtC+0LLRliDQsdC70L7QutC4INGUINC90LDQtNGC0L4g0LLQtdC70LjQutC40LzQuCDQtNC70Y8g0YHQuNGB0YLQtdC80LggKNC80LDQutGBLiAtICVkKSwgIgorItC/0YDQuNC80YPRgdC+0LLQviDQv9GA0L7QtNC+0LLQttGD0ZTQvNC+INGA0L7QsdC+0YLRg1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN1Z2dlc3Rpb246IFVzZSBMaW51eCBrZXJuZWwgPj0gMy4xOCBmb3IgaW1wcm92ZWQgc3RhYmlsaXR5IG9mIHRoZSBtZXRhZGF0YSAiCisiYW5kIGpvdXJuYWwgY2hlY2tzdW0gZmVhdHVyZXMuXG4iCittc2dzdHIgIiIKKyLQn9GA0L7Qv9C+0LfQuNGG0ZbRjzog0YHQutC+0YDQuNGB0YLQsNC50YLQtdGB0Y8g0Y/QtNGA0L7QvCBMaW51eCA+PSAzLjE4LCDRidC+0LEg0L/QvtC70ZbQv9GI0LjRgtC4INGB0YLQsNCx0ZbQu9GM0L3RltGB0YLRjCAiCisi0YDQvtCx0L7RgtC4INC3INC80LXRgtCw0LTQsNC90LjQvNC4INGC0LAg0LzQvtC20LvQuNCy0L7RgdGC0ZYg0Lcg0L7QsdGH0LjRgdC70LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90LjRhSDRgdGD0Lwg0LbRg9GA0L3QsNC70YMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INCy0ZbQtNGB0YLRg9C/INCy0LrQsNC30LDQvdC+INCx0LXQtyDRj9Cy0L3QvtCz0L4g0YDQvtC30LzRltGA0YMg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuC5cbiIKKyLQodGC0LLQvtGA0Y7RlNC80L4g0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0ZbQtyAlbGx1INCx0LvQvtC60ZbQsiwg0LDQu9C1INGA0LXQt9GD0LvRjNGC0LDRgiDQvNC+0LbQtVxuIgorItC90LUg0LfQsdGW0LPQsNGC0LjRgdGPINGW0Lcg0LLQsNGI0LjQvNC4INC+0YfRltC60YPQstCw0L3QvdGP0LzQuC5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICLQn9GW0LTRgtGA0LjQvNC60LAg0LzQvtC20LvQuNCy0L7RgdGC0ZYgYmlnYWxsb2Mg0L3QtdC80L7QttC70LjQstCwINCx0LXQtyDQvNC+0LbQu9C40LLQvtGB0YLRliBleHRlbnRzIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMTkKK21zZ2lkICIiCisiVGhlIHJlc2l6ZV9pbm9kZSBhbmQgbWV0YV9iZyBmZWF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUuXG4iCisiVGhleSBjYW4gbm90IGJlIGJvdGggZW5hYmxlZCBzaW11bHRhbmVvdXNseS5cbiIKK21zZ3N0ciAiIgorItCc0L7QttC70LjQstC+0YHRgtGWIHJlc2l6ZV9pbm9kZSDRliBtZXRhX2JnINGUINC90LXRgdGD0LzRltGB0L3QuNC80LguXG4iCisi0IfRhSDQvdC1INC80L7QttC90LAg0LLQvNC40LrQsNGC0Lgg0L7QtNC90L7Rh9Cw0YHQvdC+LlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMjcKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnRcbiIKKyJTZWUgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2MgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCf0L7Qv9C10YDQtdC00LbQtdC90L3Rjzog0YDQvtC30YDQvtCx0LrRgyDRliDRgtC10YHRgtGD0LLQsNC90L3RjyDQvNC+0LbQu9C40LLQvtGB0YLRliBiaWdhbGxvYyDRidC1INC90LUg0LfQsNCy0LXRgNGI0LXQvdC+XG4iCisi0JTQvtC60LvQsNC00L3RltGI0LAg0ZbQvdGE0L7RgNC80LDRhtGW0Y86IGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMzOQorbXNnaWQgInJlc2VydmVkIG9ubGluZSByZXNpemUgYmxvY2tzIG5vdCBzdXBwb3J0ZWQgb24gbm9uLXNwYXJzZSBmaWxlc3lzdGVtIgorbXNnc3RyICIiCisi0YMg0L3QtdGA0L7Qt9GA0ZbQtNC20LXQvdC40YUg0YTQsNC50LvQvtCy0LjRhSDRgdC40YHRgtC10LzQsNGFINC/0ZbQtNGC0YDQuNC80LrQuCDRltC90YLQtdGA0LDQutGC0LjQstC90L7RlyDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LIgIgorItCx0LvQvtC60ZbQsiDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM0OAorbXNnaWQgImJsb2NrcyBwZXIgZ3JvdXAgY291bnQgb3V0IG9mIHJhbmdlIgorbXNnc3RyICLQutGW0LvRjNC60ZbRgdGC0Ywg0LHQu9C+0LrRltCyINC90LAg0LPRgNGD0L/RgyDQu9C10LbQuNGC0Ywg0LfQsCDQvNC10LbQsNC80Lgg0L/RgNC40L/Rg9GB0YLQuNC80L7Qs9C+INC00ZbQsNC/0LDQt9C+0L3RgyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLRltGB0YLRjCBmbGV4X2JnINC90LUg0YPQstGW0LzQutC90LXQvdC+LCDQvtGC0LbQtSwg0YDQvtC30LzRltGAIGZsZXhfYmcg0L3QtSDQvNC+0LbQvdCwINCy0LrQsNC30YPQstCw0YLQuCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgItC90LXQutC+0YDQtdC60YLQvdC40Lkg0YDQvtC30LzRltGAIGlub2RlICVkICjQvNGW0L0uICVkL9C80LDQutGBLiAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBpbmxpbmUgZGF0YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiIgorImlub2RlINGW0LcgJWQg0LHQsNC50YLRltCyINGUINC90LDQtNGC0L4g0LzQsNC70LjQvCDQtNC70Y8g0LLQsdGD0LTQvtCy0LDQvdC40YUg0LTQsNC90LjRhTsg0LLQutCw0LbRltGC0Ywg0LHRltC70YzRiNC40Lkg0YDQvtC30LzRltGAIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgcHJvamVjdCBxdW90YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiIgorImlub2RlINGW0LcgJWQg0LHQsNC50YLRltCyINGUINC90LDQtNGC0L4g0LzQsNC70LjQvCDQtNC70Y8g0LrQstC+0YIg0L/RgNC+0LXQutGC0ZbQsjsg0LLQutCw0LbRltGC0Ywg0LHRltC70YzRiNC40Lkg0YDQvtC30LzRltGAIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgcmFpc2UgaW5vZGUgcmF0aW8/IgorbXNnc3RyICLQt9Cw0L3QsNC00YLQviDQsdCw0LPQsNGC0L4gaW5vZGUgKCVsbHUpLCDQt9Cx0ZbQu9GM0YjQuNGC0Lgg0LLRltC00L3QvtGI0LXQvdC90Y8gaW5vZGU/IgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICLQt9Cw0L3QsNC00YLQviDQsdCw0LPQsNGC0L4gaW5vZGUgKCVsbHUpLCDQstC60LDQttGW0YLRjCA8IDJeMzIgaW5vZGUiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisi0JfQvdCw0YfQtdC90L3RjyBpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8XG4iCisiXHTQtNC70Y8g0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDQtyAlbGx1INCx0LvQvtC60ZbQsiwg0LLQutCw0LbRltGC0Ywg0LHRltC70YzRiNC1INC30L3QsNGH0LXQvdC90Y8gaW5vZGVfcmF0aW8gKC0iCisiaSlcbiIKKyJcdNCw0LHQviDQt9C80LXQvdGI0ZbRgtGMINC60ZbQu9GM0LrRltGB0YLRjCBpbm9kZSAoLU4pLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI2MzMKK21zZ2lkICJEaXNjYXJkaW5nIGRldmljZSBibG9ja3M6ICIKK21zZ3N0ciAi0JLRltC00LrQuNC00LDRlNC80L4g0LHQu9C+0LrQuCDQv9GA0LjRgdGC0YDQvtGOOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAi0L/QvtC80LjQu9C60LAgLSAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcwOAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRltC90ZbRhtGW0LDQu9GW0LfQsNGG0ZbRlyDQutC+0L3RgtC10LrRgdGC0YMg0LrQstC+0YLQuCIKKworIzogbWlzYy9ta2UyZnMuYzoyNzE1Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC30LDQv9C40YHRgyBpbm9kZS3RltCyINC60LLQvtGC0LgiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZXJyb3IgYmVoYXZpb3IgaW4gcHJvZmlsZSAtICVzIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LAg0L/QvtCy0LXQtNGW0L3QutCwINGDINCy0ZbQtNC/0L7QstGW0LTRjCDQvdCwINC/0L7QvNC40LvQutC4INGDINC/0YDQvtGE0ZbQu9GWIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoyODE0Cittc2dpZCAid2hpbGUgc2V0dGluZyB1cCBzdXBlcmJsb2NrIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC90LDQu9Cw0YjRgtC+0LLRg9Cy0LDQvdC90Y8g0YHRg9C/0LXRgNCx0LvQvtC60YMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLQoNC+0LfRiNC40YDQtdC90L3RjyDQvdC1INGD0LLRltC80LrQvdC10L3Qvi4g0JTQu9GPINGW0ZTRgNCw0YDRhdGW0Zcg0YDQvtC30YjQuNGA0LXQvdGMINGE0LDQudC70ZbQsiDQvNC+0LbQvdCwINC+0LHRh9C40YHQu9GO0LLQsNGC0LggIgorItC60L7QvdGC0YDQvtC70YzQvdGWINGB0YPQvNC4LCDQsCDQtNC70Y8g0LrQsNGA0YIg0LHQu9C+0LrRltCyIOKAlCDQvdGWLiDQktC40LzQuNC60LDQvdC90Y8g0YDQvtC30YjQuNGA0LXQvdGMINC30LzQtdC90YjRg9GUICIKKyLQv9C+0LrRgNC40YLRgtGPINC60L7QvdGC0YDQvtC70YzQvdC40YUg0YHRg9C8INC80LXRgtCw0LTQsNC90LjRhS4g0J/QtdGA0LXQtNCw0LnRgtC1INC/0LDRgNCw0LzQtdGC0YAgLU8gZXh0ZW50cywg0YnQvtCxICIKKyLQstC40L/RgNCw0LLQuNGC0LguXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzNworbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLQndC1INGD0LLRltC80LrQvdC10L3QviDQv9GW0LTRgtGA0LjQvNC60YMgNjQt0LHRltGC0L7QstC40YUg0YTQsNC50LvQvtCy0LjRhSDRgdC40YHRgtC10LwuINCX0LHRltC70YzRiNC10L3QvdGPINGA0L7Qt9C80ZbRgNGDINC/0L7Qu9GW0LIsICIKKyLRj9C60ZYg0L3QsNC00LDRjtGC0YzRgdGPINGG0ZbRlNGOINC80L7QttC70LjQstGW0YHRgtGOLCDRg9C80L7QttC70LjQstC70Y7RlCDQv9C+0LLQvdC+0YbRltC90L3QtSDQvtCx0YfQuNGB0LvQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QuNGFICIKKyLRgdGD0LwuINCf0LXRgNC10LTQsNC50YLQtSDQv9Cw0YDQsNC80LXRgtGAIC1PIDY0Yml0LCDRidC+0LEg0LLQuNC/0YDQsNCy0LjRgtC4INGG0Y4g0L/QvtC80LjQu9C60YMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg0NQorbXNnaWQgIlRoZSBtZXRhZGF0YV9jc3VtX3NlZWQgZmVhdHVyZSByZXF1cmVzIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUuXG4iCittc2dzdHIgItCc0L7QttC70LjQstGW0YHRgtGMIG1ldGFkYXRhX2NzdW1fc2VlZCDQv9C+0YLRgNC10LHRg9GUINC80L7QttC70LjQstC+0YHRgtGWIG1ldGFkYXRhX2NzdW0uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiIgorItCj0YHQv9GW0YjQvdC+INCy0ZbQtNC60LjQvdGD0YLQviwg0LHRg9C00LUg0L/QvtCy0LXRgNC90YPRgtC+IDBzIC0g0L/RgNC+0L/Rg9GB0LrQsNGU0LzQviDQstC40YLQuNGA0LDQvdC90Y8g0YLQsNCx0LvQuNGG0ZYgaW5vZGVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAi0L3QtdCy0ZbQtNC+0LzQsCDQntChIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgItCg0L7Qt9C80ZbRidGD0ZTQvNC+INGC0LDQsdC70LjRhtGWINCz0YDRg9C/OiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0YDQvtC30LzRltGB0YLQuNGC0Lgg0YLQsNCx0LvQuNGG0ZYg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCIKKworIzogbWlzYy9ta2UyZnMuYzozMDM1Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgY29udmVydGluZyBzdWJjbHVzdGVyIGJpdG1hcCIKK21zZ3N0ciAiIgorIlxuIgorIlx00L/RltC0INGH0LDRgSDQv9C10YDQtdGC0LLQvtGA0LXQvdC90Y8g0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCDQv9GW0LTQutC70LDRgdGC0LXRgNCwIgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIlcyDQvNC+0LbQtSDQsdGD0YLQuCDQv9C+0YjQutC+0LTQttC10L3QviDRgdC10YDQudC+0LfQvdGW0YjQtSDQv9C10YDQtdC30LDQv9C40YHQvtC8INGB0YPQv9C10YDQsdC70L7QutGDXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LfQsNC90YPQu9C10L3QvdGPINCx0LvQvtC60YMgJWxsdSDQvdCw0L/RgNC40LrRltC90YbRliDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4IgorCisjOiBtaXNjL21rZTJmcy5jOjMwOTUKK21zZ2lkICJ3aGlsZSByZXNlcnZpbmcgYmxvY2tzIGZvciBvbmxpbmUgcmVzaXplIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGA0LXQt9C10YDQstGD0LLQsNC90L3RjyDQsdC70L7QutGW0LIg0LTQu9GPINGW0L3RgtC10YDQsNC60YLQuNCy0L3QvtGXINC30LzRltC90Lgg0YDQvtC30LzRltGA0YMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEwNyBtaXNjL3R1bmUyZnMuYzoxNDE1Cittc2dpZCAiam91cm5hbCIKK21zZ3N0ciAi0LbRg9GA0L3QsNC7IgorCisjOiBtaXNjL21rZTJmcy5jOjMxMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiCittc2dzdHIgItCU0L7QtNCw0LLQsNC90L3RjyDQttGD0YDQvdCw0LvRgyDQvdCwINC/0YDQuNGB0YLRgNC+0ZcgJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJcdNC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC00L7QtNCw0LLQsNC90L3RjyDQttGD0YDQvdCw0LvRgyDQvdCwINC/0YDQuNGB0YLRgNC+0Y4gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgItCy0LjQutC+0L3QsNC90L5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTM3Cittc2dpZCAiU2tpcHBpbmcgam91cm5hbCBjcmVhdGlvbiBpbiBzdXBlci1vbmx5IG1vZGVcbiIKK21zZ3N0ciAi0J/RgNC+0L/Rg9GB0LrQsNGU0LzQviDRgdGC0LLQvtGA0LXQvdC90Y8g0LbRg9GA0L3QsNC70YMg0YMg0LvQuNGI0LUt0YHRg9C/0LXRgCDRgNC10LbQuNC80ZZcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCV1IGJsb2Nrcyk6ICIKK21zZ3N0ciAi0KHRgtCy0L7RgNGO0ZTQvNC+INC20YPRgNC90LDQuyAoJXUg0LHQu9C+0LrRltCyKTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJcdNC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorIlxuIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LLQvNC40LrQsNC90L3RjyDQvNC+0LbQu9C40LLQvtGB0YLRliDQt9Cw0L/QvtCx0ZbQs9Cw0L3QvdGPINC/0L7QstGC0L7RgNC90LjQvCDQvNC+0L3RgtGD0LLQsNC90L3Rj9C8LiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICIiCisi0KPQstGW0LzQutC90LXQvdC+INC30LDRhdC40YHRgiDQstGW0LQg0L/QvtCy0YLQvtGA0L3QvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y8g0Lcg0ZbQvdGC0LXRgNCy0LDQu9C+0Lwg0L7QvdC+0LLQu9C10L3QvdGPINGDICVkICIKKyLRgdC10LrRg9C90LQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5MQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgItCa0L7Qv9GW0Y7QstCw0L3QvdGPINGE0LDQudC70ZbQsiDQvdCwINC/0YDQuNGB0YLRgNGW0Lk6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQt9Cw0L/QvtCy0L3QtdC90L3RjyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4IgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAi0JfQsNC/0LjRgdGD0ZTQvNC+INC00LDQvdGWINGJ0L7QtNC+INC+0LHQu9GW0LrRgyDRgdGD0L/QtdGA0LHQu9C+0LrRltCyINGC0LAg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuDogIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTEKK21zZ2lkICIiCisiXG4iCisiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPLCDQstC40L3QuNC60LvQuCDQv9GA0L7QsdC70LXQvNC4INC3INC30LDQv9C40YHQvtC8INGB0YPQv9C10YDQsdC70L7QutGW0LIuIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTMKK21zZ2lkICIiCisiZG9uZVxuIgorIlxuIgorbXNnc3RyICIiCisi0LLQuNC60L7QvdCw0L3QvlxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorItCX0LzRltGJ0LXQvdC90Y8g0YDQvtC30LTRltC70YMg0YMgJWxsdSAoJXVrKSDQsdC70L7QutGW0LIg0ZQg0L3QtdGB0YPQvNGW0YHQvdC40Lwg0ZbQtyDRgNC+0LfQvNGW0YDQvtC8INC60LvQsNGB0YLQtdGA0LAsICV1LlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgItCS0LXQu9C40LrRliDRhNCw0LnQu9C4INCx0YPQtNC1INC/0LXRgNC10LfQsNC/0LjRgdCw0L3QviDQvdGD0LvRj9C80LhcbiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgJWx1IGh1Z2UgZmlsZShzKSAiCittc2dzdHIgItCh0YLQstC+0YDRjtGU0LzQviAlbHUg0LLQtdC70LjQutC40YUg0YTQsNC50LvRltCyICIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICLRltC3ICVsbHUg0LHQu9C+0LrQsNC80Lgg0YMg0LrQvtC20L3QvtC80YMiCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGh1Z2UgZmlsZSAlbHUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INGB0YLQstC+0YDQtdC90L3RjyDQstC10LvQuNC60L7Qs9C+INGE0LDQudC70LAgJWx1IgorCisjOiBtaXNjL21rbG9zdCtmb3VuZC5jOjUwCittc2dpZCAiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIgorbXNnc3RyICLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86IG1rbG9zdCtmb3VuZFxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAgJXMgZGV2aWNlLi4uXG4iCisiXG4iCisiUHJpbnRzIG91dCB0aGUgcGFydGl0aW9uIGluZm9ybWF0aW9uIGZvciBlYWNoIGdpdmVuIGRldmljZS5cbiIKKyJGb3IgZXhhbXBsZTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKK21zZ3N0ciAiIgorItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogICVzINC/0YDQuNGB0YLRgNGW0LkuLi5cbiIKKyJcbiIKKyLQktC40LLQvtC00LjRgtGMINC00LDQvdGWINGJ0L7QtNC+INGA0L7Qt9C00ZbQu9GW0LIg0LTQu9GPINC60L7QttC90L7Qs9C+INCy0LrQsNC30LDQvdC+0LPQviDQv9GA0LjRgdGC0YDQvtGOLlxuIgorItCf0YDQuNC60LvQsNC0OiAlcyAvZGV2L2hkYVxuIgorIlxuIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IG9wZW4gJXM6ICVzIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINCy0ZbQtNC60YDQuNGC0LggJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQv9Cw0YDQsNC80LXRgtGA0LggJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQvtGC0YDQuNC80LDRgtC4INC00LDQvdGWINGJ0L7QtNC+INGA0L7Qt9C80ZbRgNGDICVzOiAlcyIKKworIzogbWlzYy9wYXJ0aW5mby5jOjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIHN0YXJ0PSU4ZCBzaXplPSU4bHUgZW5kPSU4ZFxuIgorbXNnc3RyICIlczogaD0lM2Qgcz0lM2QgYz0lNGQgICDQv9C+0YfQsNGC0L7Quj0lOGQg0YDQvtC30LzRltGAPSU4bHUg0LrRltC90LXRhtGMPSU4ZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTkKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWYgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgItCR0YPQtNGMINC70LDRgdC60LAsINC30LDQv9GD0YHRgtGW0YLRjCBlMmZzY2sgLUQg0LTQu9GPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LguXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgItCR0YPQtNGMINC70LDRgdC60LAsINC30LDQv9GD0YHRgtGW0YLRjCBlMmZzY2sgLUQg0LTQu9GPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LguXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYyBtYXhfbW91bnRzX2NvdW50XSBbLWUgZXJyb3JzX2JlaGF2aW9yXSBbLWZdIFstZyBncm91cF1cbiIKKyJcdFstaSBpbnRlcnZhbFtkfG18d11dIFstal0gWy1KIGpvdXJuYWxfb3B0aW9uc10gWy1sXVxuIgorIlx0Wy1tIHJlc2VydmVkX2Jsb2Nrc19wZXJjZW50XSBbLW8gW15dbW91bnRfb3B0aW9uc1ssLi4uXV1cbiIKKyJcdFstcCBtbXBfdXBkYXRlX2ludGVydmFsXSBbLXIgcmVzZXJ2ZWRfYmxvY2tzX2NvdW50XSBbLXUgdXNlcl1cbiIKKyJcdFstQyBtb3VudF9jb3VudF0gWy1MIHZvbHVtZV9sYWJlbF0gWy1NIGxhc3RfbW91bnRlZF9kaXJdXG4iCisiXHRbLU8gW15dZmVhdHVyZVssLi4uXV0gWy1RIHF1b3RhX29wdGlvbnNdXG4iCisiXHRbLUUgZXh0ZW5kZWQtb3B0aW9uWywuLi5dXSBbLVQgbGFzdF9jaGVja190aW1lXSBbLVUgVVVJRF1cbiIKKyJcdFstSSBuZXdfaW5vZGVfc2l6ZV0gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86ICVzIFstYyDQvNCw0LrRgV/Qui3RgtGMX9C80L7QvdGC0YPQstCw0L3RjF0gWy1lINC/0L7QstC10LRf0LTQu9GPX9C/0L7QvNC40LvQvtC6XSBbLWZdIFstZyAiCisi0LPRgNGD0L/QsF1cbiIKKyJcdFstaSDRltC90YLQtdGA0LLQsNC7W2R8bXx3XV0gWy1qXSBbLUog0L/QsNGA0LDQvNC10YLRgNC4X9C20YPRgNC90LDQu9GDXSBbLWxdXG4iCisiXHRbLW0g0LLRltC00YFf0LfQsNGA0LXQt1/QsdC70L7QutGW0LJdIFstbyBbXl3Qv9Cw0YDQsNC80LXRgtGA0Lhf0LzQvtC90YLRg9Cy0LDQvdC90Y9bLC4uLl1dXG4iCisiWy1wINGW0L3RgtC10YDQstCw0Ltf0L7QvdC+0LLQu9C10L3QvdGPX21tcF0gWy1yINC6LdGC0Yxf0LfQsNGA0LXQt1/QsdC70L7QutGW0LJdIFstdSDQutC+0YDQuNGB0YLRg9Cy0LDRh11cbiIKKyJcdFstQyDQui3RgtGMX9C80L7QvdGC0YPQstCw0L3RjF0gWy1MINC80ZbRgtC60LBf0YLQvtC80YNdIFstTSDQvtGB0YJf0LfQvNC+0L3Rgl/QutCw0YLQsNC70L7Qs11cbiIKKyJcdFstTyBbXl3QvNC+0LbQu9C40LLRltGB0YLRjFssLi4uXV0gWy1RINC/0LDRgNCw0LzQtdGC0YDQuF/QutCy0L7RgtGD0LLQsNC90L3Rj11cbiIKKyJcdFstRSDQtNC+0LTQsNGC0LrQvtCy0LjQuV/Qv9Cw0YDQsNC80LXRgtGAWywuLi5dXSBbLVQg0YfQsNGBX9C+0YHRgl/Qv9C10YDQtdCy0ZbRgNC60LhdIFstVSBVVUlEXVxuIgorIlx0WyAtSSDQvdC+0LLQuNC5X9GA0L7Qt9C80ZbRgF9pbm9kZV0gWy16INGE0LDQudC7INGB0LrQsNGB0YPQstCw0L3QvdGPINC00ZbQuV0g0L/RgNC40YHRgtGA0ZbQuVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMTgKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIVxuIgorbXNnc3RyICLQodGD0L/QtdGA0LHQu9C+0Log0LbRg9GA0L3QsNC70YMg0L3QtSDQstC40Y/QstC70LXQvdC+IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstGW0LTQutGA0LjRgtC4INC30L7QstC90ZbRiNC90ZbQuSDQttGD0YDQvdCw0LsiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyDQvdC1INGUINC20YPRgNC90LDQu9GM0L7QstCw0L3QuNC8INC/0YDQuNGB0YLRgNC+0ZTQvC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIlVVSUQg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDQvdC1INC30L3QsNC50LTQtdC90L4g0L3QsCDQttGD0YDQvdCw0LvRjNC+0LLQsNC90L7QvNGDINC/0YDQuNGB0YLRgNC+0ZcuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNgorbXNnaWQgIiIKKyJDYW5ub3QgbG9jYXRlIGpvdXJuYWwgZGV2aWNlLiBJdCB3YXMgTk9UIHJlbW92ZWRcbiIKKyJVc2UgLWYgb3B0aW9uIHRvIHJlbW92ZSBtaXNzaW5nIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIiCisi0J3QtSDQstC00LDQu9C+0YHRjyDQstC40Y/QstC40YLQuCDQttGD0YDQvdCw0LvRjNC+0LLQsNC90LjQuSDQv9GA0LjRgdGC0YDRltC5LiDQmdC+0LPQviDQndCVINCy0LjQu9GD0YfQtdC90L4uXG4iCisi0KHQutC+0YDQuNGB0YLQsNC50YLQtdGB0Y8g0L/QsNGA0LDQvNC10YLRgNC+0LwgLWYg0LTQu9GPINCy0LjQu9GD0YfQtdC90L3RjyDQttGD0YDQvdCw0LvRjNC+0LLQsNC90L7Qs9C+INC/0YDQuNGB0YLRgNC+0Y4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICLQltGD0YDQvdCw0Lsg0LLQuNC70YPRh9C10L3QvlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNjkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGJpdG1hcHMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LHRltGC0L7QstC40YUg0LrQsNGA0YIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9C+0YDQvtC20L3QtdC90L3RjyBpbm9kZSDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy90dW5lMmZzLmM6Mzg4Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC30LDQv9C40YHRgyBpbm9kZSDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKNGWINC/0LXRgNC10LfQsNCy0LDQvdGC0LDQttGC0LUg0LrQvtC80L/igJnRjtGC0LXRgCDQv9GW0YHQu9GPINGG0YzQvtCz0L4hKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWZ0ZXIgcnVubmluZyBlMmZzY2ssIHBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAi0J/RltGB0LvRjyDQt9Cw0L/Rg9GB0LrRgyBlMmZzY2ssINCx0YPQtNGMINC70LDRgdC60LAsINC30LDQv9GD0YHRgtGW0YLRjCDCq3Jlc2l6ZTJmcyAlcyAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAi0JHRg9C00Ywg0LvQsNGB0LrQsCwg0LLRltC00LTQsNC50YLQtSDQutC+0LzQsNC90LTRgyDCq3Jlc2l6ZTJmcyAlcyAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6NDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAteiBcIiVzXCIiCittc2dzdHIgIiAteiBcIiVzXCIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiwrssINGJ0L7QsSDRg9Cy0ZbQvNC60L3Rg9GC0LggNjQt0LHRltGC0L7QstC40Lkg0YDQtdC20LjQvC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZGlzYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiwrssINGJ0L7QsSDQstC40LzQutC90YPRgtC4IDY0LdCx0ZbRgtC+0LLQuNC5INGA0LXQttC40LwuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjk3NAorbXNnaWQgIiIKKyJXQVJOSU5HOiBDb3VsZCBub3QgY29uZmlybSBrZXJuZWwgc3VwcG9ydCBmb3IgbWV0YWRhdGFfY3N1bV9zZWVkLlxuIgorIiAgVGhpcyByZXF1aXJlcyBMaW51eCA+PSB2NC40LlxuIgorbXNnc3RyICIiCisi0J/QntCf0JXQoNCV0JTQltCV0J3QndCvOiDQvdC1INCy0LTQsNC70L7RgdGPINC/0ZbQtNGC0LLQtdGA0LTQuNGC0Lgg0L/RltC00YLRgNC40LzQutGDIG1ldGFkYXRhX2NzdW1fc2VlZCDRgyDRj9C00YDRli5cbiIKKyIgINCi0LDQutCwINC/0ZbQtNGC0YDQuNC80LrQsCDQv9C+0YLRgNC10LHRg9GUIExpbnV4ID49IHY0LjQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2xlYXJpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiIgorItCf0ZbQtNGC0YDQuNC80LrQuCDRgdC/0L7RgNC+0LbQvdC10L3QvdGPINC80L7QttC70LjQstC+0YHRgtGWINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lggwqslc8K7INC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyLQn9GW0LTRgtGA0LjQvNC60Lgg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINC80L7QttC70LjQstC+0YHRgtGWINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lggwqslc8K7INC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAyNQorbXNnaWQgIiIKKyJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLRltGB0YLRjCBoYXNfam91cm5hbCDQvNC+0LbQvdCwINC30L3RltC80LDRgtC4LCDQu9C40YjQtSDRj9C60YnQviDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRg1xuIgorItC00LXQvNC+0L3RgtC+0LLQsNC90L4g0LDQsdC+INC30LzQvtC90YLQvtCy0LDQvdC+INC70LjRiNC1INGDINGA0LXQttC40LzRliDRh9C40YLQsNC90L3Rjy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAzMworbXNnaWQgIiIKKyJUaGUgbmVlZHNfcmVjb3ZlcnkgZmxhZyBpcyBzZXQuICBQbGVhc2UgcnVuIGUyZnNjayBiZWZvcmUgY2xlYXJpbmdcbiIKKyJ0aGUgaGFzX2pvdXJuYWwgZmxhZy5cbiIKK21zZ3N0ciAiIgorItCS0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMIG5lZWRzX3JlY292ZXJ5LiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDQt9Cw0L/Rg9GB0YLRltGC0YwgZTJmc2NrINC00L5cbiIKKyLQt9C90Y/RgtGC0Y8g0L/RgNCw0L/QvtGA0YbRjyBoYXNfam91cm5hbC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisi0JTQu9GPINGB0LjRgdGC0LXQvCDQtyDRg9Cy0ZbQvNC60L3QtdC90L7RjiDQvNC+0LbQu9C40LLRltGB0YLRjiBtZXRhX2JnINCy0YHRgtCw0L3QvtCy0LvQtdC90L3RjyDQvNC+0LbQu9C40LLQvtGB0YLRllxuIgorItGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lggc3BhcnNlX3N1cGVyINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA2NAorbXNnaWQgIiIKKyJUaGUgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlIGNhbid0XG4iCisiYmUgc2V0IGlmIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQgb3JcbiIKKyJyZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLRltGB0YLRjCDQt9Cw0YXQuNGB0YLRgyDQstGW0LQg0L/QvtCy0YLQvtGA0L3QvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y9cbiIKKyLQvdC1INC80L7QttC90LAg0LLQvNC40LrQsNGC0LgsINGP0LrRidC+INGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINC30LzQvtC90YLQvtCy0LDQvdC+XG4iCisi0LDQsdC+INCy0L7QvdCwINC/0LXRgNC10LHRg9Cy0LDRlCDRgyDRgNC10LbQuNC80ZYg0LvQuNGI0LUg0YfQuNGC0LDQvdC90Y8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiIgorItCj0LLRltC80LrQvdC10L3QviDQt9Cw0YXQuNGB0YIg0LLRltC0INC/0L7QstGC0L7RgNC90L7Qs9C+INC80L7QvdGC0YPQstCw0L3QvdGPINC3INGW0L3RgtC10YDQstCw0LvQvtC8INC+0L3QvtCy0LvQtdC90L3RjyDRgyAlZCAiCisi0YHQtdC60YPQvdC0LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLRltGB0YLRjCDQt9Cw0YXQuNGB0YLRgyDQstGW0LQg0L/QvtCy0YLQvtGA0L3QvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y8g0L3QtSDQvNC+0LbQvdCwXG4iCisi0LLQuNC80LrQvdGD0YLQuCwg0Y/QutGJ0L4g0YTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0L/RgNC40LTQsNGC0L3QsCDQu9C40YjQtSDQtNC70Y8g0LfQsNC/0LjRgdGDLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LHRltGC0L7QstC40YUg0LrQsNGA0YJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTEwOAorIywgYy1mb3JtYXQKK21zZ2lkICJNYWdpYyBudW1iZXIgaW4gTU1QIGJsb2NrIGRvZXMgbm90IG1hdGNoLiBleHBlY3RlZDogJXgsIGFjdHVhbDogJXhcbiIKK21zZ3N0ciAiIgorItCa0L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINGDINCx0LvQvtGG0ZYgTU1QINGUINC90LXQstGW0LTQv9C+0LLRltC00L3QvtGOLiDQnNCw0LvQviDQsdGD0YLQuDogJXgsINC80LDRlNC80L46ICV4XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8g0LHQu9C+0LrRgyBNTVAuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTQ1Cittc2dpZCAiIgorIkNsZWFyaW5nIHRoZSBmbGV4X2JnIGZsYWcgd291bGQgY2F1c2UgdGhlIHRoZSBmaWxlc3lzdGVtIHRvIGJlXG4iCisiaW5jb25zaXN0ZW50LlxuIgorbXNnc3RyICIiCisi0JfQvdGP0YLRgtGPINC/0YDQsNC/0L7RgNGG0Y8gZmxleF9iZyDQvNC+0LbQtSDQv9GA0LjQt9Cy0LXRgdGC0Lgg0LTQviDQstGC0YDQsNGC0Lgg0YbRltC70ZbRgdC90L7RgdGC0ZZcbiIKKyLRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTU2Cittc2dpZCAiIgorIlRoZSBodWdlX2ZpbGUgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIiIKKyLQnNC+0LbQu9C40LLRltGB0YLRjCBodWdlX2ZpbGUg0LzQvtC20L3QsCDQt9C90ZbQvNCw0YLQuCwg0LvQuNGI0LUg0Y/QutGJ0L4g0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YNcbiIKKyLQtNC10LzQvtC90YLQvtCy0LDQvdC+INCw0LHQviDQt9C80L7QvdGC0L7QstCw0L3QviDQu9C40YjQtSDRgyDRgNC10LbQuNC80ZYg0YfQuNGC0LDQvdC90Y8uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICLQktC80LjQutCw0L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC40YUg0YHRg9C8INC/0L7RgtGA0LXQsdGD0LLQsNGC0LjQvNC1INC/0LXQstC90L7Qs9C+INGH0LDRgdGDLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE2OQorbXNnaWQgIkNhbm5vdCBlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LbQvdCwINCy0LzQuNC60LDRgtC4IG1ldGFkYXRhX2NzdW0g0LTQu9GPINC30LzQvtC90YLQvtCy0LDQvdC+0Zcg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLQoNC+0LfRiNC40YDQtdC90L3RjyDQvdC1INGD0LLRltC80LrQvdC10L3Qvi4g0JTQu9GPINGW0ZTRgNCw0YDRhdGW0Zcg0YDQvtC30YjQuNGA0LXQvdGMINGE0LDQudC70ZbQsiDQvNC+0LbQvdCwINC+0LHRh9C40YHQu9GO0LLQsNGC0LggIgorItC60L7QvdGC0YDQvtC70YzQvdGWINGB0YPQvNC4LCDQsCDQtNC70Y8g0LrQsNGA0YIg0LHQu9C+0LrRltCyIOKAlCDQvdGWLiDQktC40LzQuNC60LDQvdC90Y8g0YDQvtC30YjQuNGA0LXQvdGMINC30LzQtdC90YjRg9GUICIKKyLQv9C+0LrRgNC40YLRgtGPINC60L7QvdGC0YDQvtC70YzQvdC40YUg0YHRg9C8INC80LXRgtCw0LTQsNC90LjRhS4g0J/QvtCy0YLQvtGA0L3QviDQt9Cw0L/Rg9GB0YLRltGC0Ywg0ZbQtyAtTyBleHRlbnQsINGJ0L7QsSAiCisi0LLQuNC/0YDQsNCy0LjRgtC4LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLQndC1INGD0LLRltC80LrQvdC10L3QviDQv9GW0LTRgtGA0LjQvNC60YMgNjQt0LHRltGC0L7QstC40YUg0YTQsNC50LvQvtCy0LjRhSDRgdC40YHRgtC10LwuINCX0LHRltC70YzRiNC10L3QvdGPINGA0L7Qt9C80ZbRgNGDINC/0L7Qu9GW0LIsICIKKyLRj9C60ZYg0L3QsNC00LDRjtGC0YzRgdGPINGG0ZbRlNGOINC80L7QttC70LjQstGW0YHRgtGOLCDRg9C80L7QttC70LjQstC70Y7RlCDQv9C+0LLQvdC+0YbRltC90L3QtSDQvtCx0YfQuNGB0LvQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QuNGFICIKKyLRgdGD0LwuINCX0LDQv9GD0YHRgtGW0YLRjCByZXNpemUyZnMgLWIsINGJ0L7QsSDQstC40L/RgNCw0LLQuNGC0Lgg0YbRjiDQv9C+0LzQuNC70LrRgy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIwOAorbXNnaWQgIkRpc2FibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICLQktC40LzQuNC60LDQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90LjRhSDRgdGD0Lwg0L/QvtGC0YDQtdCx0YPQstCw0YLQuNC80LUg0L/QtdCy0L3QvtCz0L4g0YfQsNGB0YMuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LbQvdCwINCy0LjQvNC40LrQsNGC0LggbWV0YWRhdGFfY3N1bSDQtNC70Y8g0LfQvNC+0L3RgtC+0LLQsNC90L7RlyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAi0J3QtSDQvNC+0LbQvdCwINCy0LzQuNC60LDRgtC4IDY0LdCx0ZbRgtC+0LLQuNC5INGA0LXQttC40LwsINC00L7QutC4INGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINC30LzQvtC90YLQvtCy0LDQvdC+IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgItCd0LUg0LzQvtC20L3QsCDQstC40LzQuNC60LDRgtC4IDY0LdCx0ZbRgtC+0LLQuNC5INGA0LXQttC40LwsINC00L7QutC4INGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINC30LzQvtC90YLQvtCy0LDQvdC+IVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzEzCittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IGVuYWJsZWQgcHJvamVjdCB3aXRob3V0IHF1b3RhIHRvZ2V0aGVyXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INGD0LLRltC80LrQvdC10L3QviDQv9GA0L7QtdC60YIg0LHQtdC3INGB0L/RltC70YzQvdC+0Zcg0LrQstC+0YLQuCAodG9nZXRoZXIpXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisiXG4iCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQv9Cw0YDQsNC80LXRgtGAIMKrXnF1b3Rhwrsg0L/QtdGA0LXQstC40LfQvdCw0YfQsNGUINCw0YDQs9GD0LzQtdC90YLQuCDCqy1RwrsuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNDQKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyLQktGB0YLQsNC90L7QstC70LXQvdC90Y8g0LzQvtC20LvQuNCy0L7RgdGC0ZYgwqttZXRhZGF0YV9jc3VtX3NlZWTCuyDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC70LjRiNC1XG4iCisi0LTQu9GPINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC8INGW0Lcg0YPQstGW0LzQutC90LXQvdC+0Y4g0LzQvtC20LvQuNCy0ZbRgdGC0Y4gbWV0YWRhdGFfY3N1bS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM2MgorbXNnaWQgIiIKKyJVVUlEIGhhcyBjaGFuZ2VkIHNpbmNlIGVuYWJsaW5nIG1ldGFkYXRhX2NzdW0uICBGaWxlc3lzdGVtIG11c3QgYmUgIgorInVubW91bnRlZCBcbiIKKyJ0byBzYWZlbHkgcmV3cml0ZSBhbGwgbWV0YWRhdGEgdG8gbWF0Y2ggdGhlIG5ldyBVVUlELlxuIgorbXNnc3RyICIiCisi0Jcg0YfQsNGB0YMg0LLQvNC40LrQsNC90L3RjyBtZXRhZGF0YV9jc3VtINC30LzRltC90LjQu9C+0YHRjyDQt9C90LDRh9C10L3QvdGPIFVVSUQuINCk0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDINGB0LvRltC0ICIKKyLQtNC10LzQvtC90YLRg9Cy0LDRgtC4LCBcbiIKKyLRidC+0LEg0LHQtdC30L/QtdGH0L3QviDQv9C10YDQtdC30LDQv9C40YHQsNGC0Lgg0YPRgdGWINC80LXRgtCw0LTQsNC90ZYsINGJ0L4g0LLRltC00L/QvtCy0ZbQtNCw0Y7RgtGMINC90L7QstC+0LzRgyBVVUlELlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICLQndCwINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0LLQttC1INGUINC20YPRgNC90LDQuy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdNC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0Lgg0LbRg9GA0L3QsNC7INC90LAgJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIgorbXNnc3RyICLQodGC0LLQvtGA0Y7RlNC80L4g0LbRg9GA0L3QsNC7INC90LAg0L/RgNC40YHRgtGA0L7RlyAlczogIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFkZGluZyBmaWxlc3lzdGVtIHRvIGpvdXJuYWwgb24gJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LTQvtC00LDQstCw0L3QvdGPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0LTQviDQttGD0YDQvdCw0LvRgyDQvdCwICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICLQodGC0LLQvtGA0Y7RlNC80L4gaW5vZGUg0LbRg9GA0L3QsNC70YM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ2MAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBjcmVhdGUgam91cm5hbCBmaWxlIgorbXNnc3RyICIiCisiXG4iCisiXHTQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgdGC0LLQvtGA0LXQvdC90Y8g0YTQsNC50LvQsCDQttGD0YDQvdCw0LvRgyIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ5OAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0ZbQvdGW0YbRltCw0LvRltC30LDRhtGW0Zcg0LrQvtC90YLQtdC60YHRgtGDINC60LLQvtGC0Lgg0YMg0LHRltCx0LvRltC+0YLQtdGG0ZYg0L/RltC00YLRgNC40LzQutC4IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHVwZGF0aW5nIHF1b3RhIGxpbWl0cyAoJWQpIgorbXNnc3RyICLQv9GW0LQg0YfQsNGBINC+0L3QvtCy0LvQtdC90L3RjyDQvtCx0LzQtdC20LXQvdGMINC60LLQvtGC0LggKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQt9Cw0L/QuNGB0YPQstCw0L3QvdGPINGE0LDQudC70LAg0LrQstC+0YIgKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0LLQuNC70YPRh9C10L3QvdGPINGE0LDQudC70LAg0LrQstC+0YIgKCVkKSIKKworIzogbWlzYy90dW5lMmZzLmM6MTU3NQorbXNnaWQgIiIKKyJcbiIKKyJCYWQgcXVvdGEgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRm9sbG93aW5nIHZhbGlkIHF1b3RhIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSAocGFzcyBieSBzZXBhcmF0aW5nIHdpdGggIgorImNvbW1hKTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCS0LrQsNC30LDQvdC+INC90LXQutC+0YDQtdC60YLQvdGWINC/0LDRgNCw0LzQtdGC0YDQuCDQutCy0L7RgtGD0LLQsNC90L3Rjy5cbiIKKyJcbiIKKyLQnNC+0LbQvdCwINCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDRgtCw0LrRliDQutC+0YDQtdC60YLQvdGWINC/0LDRgNCw0LzQtdGC0YDQuCDQutCy0L7RgtGD0LLQsNC90L3RjyAo0L/RgNC4INC/0LXRgNC10LTQsNCy0LDQvdC90ZYgIgorItGB0LvRltC0INCy0ZbQtNC+0LrRgNC10LzQu9GO0LLQsNGC0Lgg0LrQvtC80LDQvNC4KTpcbiIKKyJcdFteXXVzcltxdW90YV1cbiIKKyJcdFteXWdycFtxdW90YV1cbiIKKyJcdFteXXByaltxdW90YV1cbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQvtCx0YDQvtCx0LjRgtC4INGB0L/QtdGG0LjRhNGW0LrQsNGC0L7RgCDQtNCw0YLQuC/Rh9Cw0YHRgzogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2NTggbWlzYy90dW5lMmZzLmM6MTY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbW91bnRzIGNvdW50IC0gJXMiCittc2dzdHIgItC/0L7QvNC40LvQutC+0LLQsCDQutGW0LvRjNC60ZbRgdGC0Ywg0LzQvtC90YLRg9Cy0LDQvdGMOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTcxNAorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgZ2lkL2dyb3VwIG5hbWUgLSAlcyIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstC40Lkg0ZbQtNC10L3RgtC40YTRltC60LDRgtC+0YAg0LDQsdC+INC90LDQt9Cy0LAg0LPRgNGD0L/QuDogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgItC/0L7QvNC40LvQutC+0LLQuNC5INGW0L3RgtC10YDQstCw0Ls6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LAg0YfQsNGB0YLQutCwINC30LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40YUg0LHQu9C+0LrRltCyOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItbyDQvNC+0LbQvdCwINCy0LrQsNC30YPQstCw0YLQuCDQu9C40YjQtSDQvtC00LjQvSDRgNCw0LciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4MDAKK21zZ2lkICItTyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiLU8g0LzQvtC20L3QsCDQstC60LDQt9GD0LLQsNGC0Lgg0LvQuNGI0LUg0L7QtNC40L0g0YDQsNC3IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODE3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9ja3MgY291bnQgLSAlcyIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstCwINC60ZbQu9GM0LrRltGB0YLRjCDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QuNGFINCx0LvQvtC60ZbQsjogJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHVpZC91c2VyIG5hbWUgLSAlcyIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstC40Lkg0ZbQtNC10L3RgtC40YTRltC60LDRgtC+0YAg0LDQsdC+INGW0LzigJnRjyDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwOiAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICLQv9C+0LzQuNC70LrQvtCy0LjQuSDRgNC+0LfQvNGW0YAgaW5vZGU6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgItCg0L7Qt9C80ZbRgCBpbm9kZSDQvNCw0ZQg0LHRg9GC0Lgg0YHRgtC10L/QtdC90LXQvCDQtNCy0ZbQudC60Lg6ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgItCd0LDQtNGC0L4g0LLQtdC70LjQutC1INC30L3QsNGH0LXQvdC90Y8gbW1wX3VwZGF0ZV9pbnRlcnZhbDogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE5NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kXG4iCittc2dpZF9wbHVyYWwgIiIKKyJTZXR0aW5nIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gdXBkYXRlIGludGVydmFsIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHJbMF0gIiIKKyLQktGB0YLQsNC90L7QstC70LXQvdC90Y8g0ZbQvdGC0LXRgNCy0LDQu9GDINC+0L3QvtCy0LvQtdC90L3RjyDQt9Cw0YXQuNGB0YLRgyDQstGW0LQg0L/QvtCy0YLQvtGA0L3QvtCz0L4g0LzQvtC90YLRg9Cy0LDQvdC90Y8g0YMgJWx1ICIKKyLRgdC10LrRg9C90LTRg1xuIgorbXNnc3RyWzFdICIiCisi0JLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINGW0L3RgtC10YDQstCw0LvRgyDQvtC90L7QstC70LXQvdC90Y8g0LfQsNGF0LjRgdGC0YMg0LLRltC0INC/0L7QstGC0L7RgNC90L7Qs9C+INC80L7QvdGC0YPQstCw0L3QvdGPINGDICVsdSAiCisi0YHQtdC60YPQvdC00LhcbiIKK21zZ3N0clsyXSAiIgorItCS0YHRgtCw0L3QvtCy0LvQtdC90L3RjyDRltC90YLQtdGA0LLQsNC70YMg0L7QvdC+0LLQu9C10L3QvdGPINC30LDRhdC40YHRgtGDINCy0ZbQtCDQv9C+0LLRgtC+0YDQvdC+0LPQviDQvNC+0L3RgtGD0LLQsNC90L3RjyDRgyAlbHUgIgorItGB0LXQutGD0L3QtFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC1INC30L3QsNGH0LXQvdC90Y8gc3RyaWRlIFJBSUQ6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LUg0LfQvdCw0YfQtdC90L3RjyBzdHJpcGUtd2lkdGggUkFJRDogJXNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAyNQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGhhc2ggYWxnb3JpdGhtOiAlc1xuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5INCw0LvQs9C+0YDQuNGC0Lwg0YXQtdGI0YPQstCw0L3QvdGPOiDCqyVzwrtcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjAzMQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGRlZmF1bHQgaGFzaCBhbGdvcml0aG0gdG8gJXMgKCVkKVxuIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70Y7RlNC80L4g0YLQuNC/0L7QstC40Lkg0LDQu9Cz0L7RgNC40YLQvCDRhdC10YjRg9Cy0LDQvdC90Y8gJXMgKCVkKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisi0JLQutCw0LfQsNC90L4g0L/QvtC80LjQu9C60L7QstGWINC/0LDRgNCw0LzQtdGC0YDQuC5cbiIKKyJcbiIKKyLQlNC+0LTQsNGC0LrQvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4INGB0LvRltC0INCy0ZbQtNC+0LrRgNC10LzQu9GO0LLQsNGC0Lgg0LrQvtC80LDQvNC4LCDQvNC+0LbQvdCwINCy0YHRgtCw0L3QvtCy0LvRjtCy0LDRgtC4XG4iCisiXHTQt9C90LDRh9C10L3QvdGPINCw0YDQs9GD0LzQtdC90YLRltCyINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30L3QsNC60LAg0YDRltCy0L3QvtGB0YLRliAowqs9wrspLlxuIgorIlxuIgorItCc0L7QttC70LjQstGWINC00L7QtNCw0YLQutC+0LLRliDQv9Cw0YDQsNC80LXRgtGA0Lg6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTzQsNC70LPQvtGA0LjRgtC8INGF0LXRiNGD0LLQsNC90L3Rjz5cbiIKKyJcdG1vdW50X29wdHM9PNGA0L7Qt9GI0LjRgNC10L3RliDRgtC40L/QvtCy0ZYg0L/QsNGA0LDQvNC10YLRgNC4INC80L7QvdGC0YPQstCw0L3QvdGPPlxuIgorIlx0c3RyaWRlPTzRgNC+0LfQvNGW0YAg0YTRgNCw0LPQvNC10L3RgtCwIFJBSUQg0L3QsCDQvtC60YDQtdC80L7QvNGDINC00LjRgdC60YMg0YMg0LHQu9C+0LrQsNGFPlxuIgorIlx0c3RyaXBlX3dpZHRoPTzRgdGC0YDQsNC50LQgUkFJRCrQtNC40YHQutC4INC00LDQvdC40YUg0YMg0LHQu9C+0LrQsNGFPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUxOQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC/0YDQvtGH0LjRgtCw0YLQuCDQsdGW0YLQvtCy0YMg0LrQsNGA0YLRgyBpbm9kZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/RgNC+0YfQuNGC0LDRgtC4INCx0ZbRgtC+0LLRgyDQutCw0YDRgtGDINCx0LvQvtC60ZbQslxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICLQsdC70L7QutC4LCDRj9C60ZYg0LHRg9C00LUg0L/QtdGA0LXRgdGD0L3Rg9GC0L4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIiIKKyLQndC1INCy0LTQsNC70L7RgdGPINGA0L7Qt9C80ZbRgdGC0LjRgtC4INCx0ZbRgtC+0LLRgyDQutCw0YDRgtGDINCx0LvQvtC60ZbQsiDQv9GW0LQg0YfQsNGBINC30LHRltC70YzRiNC10L3QvdGPINGA0L7Qt9C80ZbRgNGW0LIgaW5vZGVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAi0J3QtdC00L7RgdGC0LDRgtC90YzQviDQv9GA0L7RgdGC0L7RgNGDINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90L3RjyDRgNC+0LfQvNGW0YDRgyBpbm9kZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTU1Cittc2dpZCAiRmFpbGVkIHRvIHJlbG9jYXRlIGJsb2NrcyBkdXJpbmcgaW5vZGUgcmVzaXplIFxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC/0LXRgNC10YHRg9C90YPRgtC4INCx0LvQvtC60Lgg0L/RltC0INGH0LDRgSDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LIgaW5vZGUgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyIGlub2RlLlxuIgorItCX0LDQv9GD0YHRgtGW0YLRjCBlMnVuZG8g0LTQu9GPINGB0LrQsNGB0YPQstCw0L3QvdGPINC30LzRltC9LCDQstC90LXRgdC10L3QuNGFINC00L4g0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuC4gXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBibG9jayBtYWdpYyBpcyBiYWQuIFRyeSB0byBmaXggaXQgYnkgcnVubmluZzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorbXNnc3RyICIiCisi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0LHQu9C+0LrRgyBNTVAg0LLQutCw0LfRg9GUINC90LAg0L/QvtGI0LrQvtC00LbQtdC90ZbRgdGC0YwuINCh0L/RgNC+0LHRg9C50YLQtSDQstC40L/RgNCw0LLQuNGC0Lgg0YbQtSDQt9CwICIKKyLQtNC+0L/QvtC80L7Qs9C+0Y4g0LrQvtC80LDQvdC00Lg6XG4iCisiwqtlMmZzY2sgLWYgJXPCu1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCittc2dpZCAiQ2Fubm90IG1vZGlmeSBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICLQndC1INC80L7QttC90LAg0LLQvdC+0YHQuNGC0Lgg0LfQvNGW0L3QuCDQtNC+INC/0YDQuNGB0YLRgNC+0Y4g0LbRg9GA0L3QsNC70Y7QstCw0L3QvdGPLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODI0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBpbm9kZSBzaXplIGlzIGFscmVhZHkgJWx1XG4iCittc2dzdHIgItCg0L7Qt9C80ZbRgNC+0LwgaW5vZGUg0YPQttC1INGUICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICLQn9GW0LTRgtGA0LjQvNC60Lgg0LfQvNC10L3RiNC10L3QvdGPINGA0L7Qt9C80ZbRgNGW0LIgaW5vZGUg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QuNC5INGA0L7Qt9C80ZbRgCBpbm9kZSAlbHUgKNC80LDQutGB0LjQvNCw0LvRjNC90LjQvCDRlCAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgItCX0LzRltC90LAg0YDQvtC30LzRltGA0ZbQsiBpbm9kZS3RltCyINC80L7QttC1INCx0YPRgtC4INC00L7QstC+0LvRliDRgtGA0LjQstCw0LvQvtGOLiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INC30L3QsNGH0LXQvdC90Y8g0LzQsNC60YHQuNC80LDQu9GM0L3QvtGXINC60ZbQu9GM0LrQvtGB0YLRliDQvNC+0L3RgtGD0LLQsNC90YwgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INC/0L7RgtC+0YfQvdGDINC60ZbQu9GM0LrRltGB0YLRjCDQvNC+0L3RgtGD0LLQsNC90Ywg0YMg0LfQvdCw0YfQtdC90L3RjyAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXJyb3IgYmVoYXZpb3IgdG8gJWRcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INGA0LXQttC40Lwg0L/QvtCy0LXQtNGW0L3QutC4INGDINCy0ZbQtNC/0L7QstGW0LTRjCDQvdCwINC/0L7QvNC40LvQutGDICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgZ2lkIHRvICVsdVxuIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70Y7RlNC80L4gZ2lkINC00LvRjyDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QuNGFINCx0LvQvtC60ZbQsiDRgyDQt9C90LDRh9C10L3QvdGPICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgItGW0L3RgtC10YDQstCw0Lsg0LzRltC2INC/0LXRgNC10LLRltGA0LrQsNC80Lgg0ZQg0L3QsNC00YLQviDQstC10LvQuNC60LjQvCAoJWx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvRjtGU0LzQviDRltC90YLQtdGA0LLQsNC7INC80ZbQtiDQv9C10YDQtdCy0ZbRgNC60LDQvNC4INGDICVsdSDRgdC10LrRg9C90LRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70Y7RlNC80L4g0YfQsNGB0YLRgyDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QuNGFINCx0LvQvtC60ZbQsiAlZyUlICglbGx1INCx0LvQvtC60ZbQsilcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzMAorIywgYy1mb3JtYXQKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MgY291bnQgaXMgdG9vIGJpZyAoJWxsdSkiCittc2dzdHIgItC60ZbQu9GM0LrRltGB0YLRjCDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QuNGFINCx0LvQvtC60ZbQsiDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQvtGOICglbGx1KSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgItCS0YHRgtCw0L3QvtCy0LvRjtGU0LzQviDQutGW0LvRjNC60ZbRgdGC0Ywg0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90LjRhSDQsdC70L7QutGW0LIg0YMgJWxsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCh0YPQv9C10YDQsdC70L7QutC4INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0LLQttC1INGA0L7Qt9GA0ZbQtNC20LXQvdC+LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQ1Cittc2dpZCAiIgorIlxuIgorIlNldHRpbmcgdGhlIHNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgbm90IHN1cHBvcnRlZFxuIgorImZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhX2JnIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCU0LvRjyDRgdC40YHRgtC10Lwg0Lcg0YPQstGW0LzQutC90LXQvdC+0Y4g0LzQvtC20LvQuNCy0ZbRgdGC0Y4gbWV0YV9iZyDQstGB0YLQsNC90L7QstC70LXQvdC90Y9cbiIKKyLQv9GA0LDQv9C+0YDRhtGPINGA0L7Qt9GA0ZbQtNC20LXQvdC40YUg0YHRg9C/0LXRgNCx0LvQvtC60ZbQsiDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlNwYXJzZSBzdXBlcmJsb2NrIGZsYWcgc2V0LiAgJXMiCittc2dzdHIgIiIKKyJcbiIKKyLQktGB0YLQsNC90L7QstC70LXQvdC+INC/0YDQsNC/0L7RgNC10YbRjCDRgNC+0LfRgNGW0LTQttC10L3QvdGPINGB0YPQv9C10YDQsdC70L7QutGW0LIuICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTYwCittc2dpZCAiIgorIlxuIgorIkNsZWFyaW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQn9GW0LTRgtGA0LjQvNC60Lgg0LfQvdGP0YLRgtGPINC/0YDQsNC/0L7RgNGG0Y8g0YDQvtC30YDRltC00LbQtdC90L3RjyDRgdGD0L/QtdGA0LHQu9C+0LrRltCyINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2OAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHRpbWUgZmlsZXN5c3RlbSBsYXN0IGNoZWNrZWQgdG8gJXNcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INGH0LDRgSDQvtGB0YLQsNC90L3RjNC+0Zcg0L/QtdGA0LXQstGW0YDQutC4INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0YMg0LfQvdCw0YfQtdC90L3RjyAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+IHVpZCDQtNC70Y8g0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90LjRhSDQsdC70L7QutGW0LIg0YMg0LfQvdCw0YfQtdC90L3RjyAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60LAg0YMg0LLQuNC60L7RgNC40YHRgtCw0L3QvdGWIGNsZWFyX21tcC4g0KHQu9GW0LQg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INC3IC1mXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorItCX0LzRltC90Y7QstCw0YLQuCDQt9C90LDRh9C10L3QvdGPINGG0ZbRlNGXINC80L7QttC70LjQstC+0YHRgtGWINC+0LHQvNC10LbQtdC90L3RjyDQutCy0L7RgtC4INC80L7QttC90LAsINC70LjRiNC1INGP0LrRidC+INGE0LDQudC70L7QstGDICIKKyLRgdC40YHRgtC10LzRgyDQtNC10LzQvtC90YLQvtCy0LDQvdC+LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDQ4Cittc2dpZCAiVGhlIFVVSUQgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAi0JfQvNGW0L3RjtCy0LDRgtC4IFVVSUQg0LzQvtC20L3QsCwg0LvQuNGI0LUg0Y/QutGJ0L4g0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0LTQtdC80L7QvdGC0L7QstCw0L3Qvi5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorItCv0LrRidC+INCy0Lgg0LrQvtGA0LjRgdGC0YPRlNGC0LXRgdGPINC70LjRiNC1INGP0LTRgNCw0LzQuCwg0L3QvtCy0ZbRiNC40LzQuCDQt9CwINCy0LXRgNGB0ZbRjiA0LjQsINC30LDQv9GD0YHRgtGW0YLRjCDCq3R1bmUyZnMgIgorIi1PIG1ldGFkYXRhX2NzdW1fc2VlZMK7LCDQv9C+0YLRltC8INC30L3QvtCy0YMg0LLRltC00LTQsNC50YLQtSDRhtGOINC60L7QvNCw0L3QtNGDLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKyLQktGB0YLQsNC90L7QstC70LXQvdC90Y8gVVVJRCDQvdCwINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0ZbQtyDQutC+0L3RgtGA0L7Qu9GM0L3QuNC80Lgg0YHRg9C80LDQvNC4INC80L7QttC1INCx0YPRgtC4ICIKKyLQtNC+0LLQvtC70ZYg0YLRgNC40LLQsNC70LjQvC4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwODUKK21zZ2lkICJJbnZhbGlkIFVVSUQgZm9ybWF0XG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0YTQvtGA0LzQsNGCIFVVSURcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEwMQorbXNnaWQgIk5lZWQgdG8gdXBkYXRlIGpvdXJuYWwgc3VwZXJibG9jay5cbiIKK21zZ3N0ciAi0KHQu9GW0LQg0L7QvdC+0LLQuNGC0Lgg0YHRg9C/0LXRgNCx0LvQvtC6INC20YPRgNC90LDQu9GDLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAi0JfQvNGW0L3RjtCy0LDRgtC4INGA0L7Qt9C80ZbRgCBpbm9kZSDQvNC+0LbQvdCwLCDQu9C40YjQtSDRj9C60YnQviDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDQtNC10LzQvtC90YLQvtCy0LDQvdC+LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyLQn9GW0LTRgtGA0LjQvNC60Lgg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyIGlub2RlIHNpemUg0LTQu9GPINGE0LDQudC70L7QstC40YUg0YHQuNGB0YLQtdC8INC3INGD0LLRltC80LrQvdC10L3QvtGOICIKKyLQvNC+0LbQu9C40LLRltGB0YLRjiBmbGV4X2JnXG4iCisi0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INGA0L7Qt9C80ZbRgCBpbm9kZSDRgyAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE1NQorbXNnaWQgIkZhaWxlZCB0byBjaGFuZ2UgaW5vZGUgc2l6ZVxuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC30LzRltC90LjRgtC4INGA0L7Qt9C80ZbRgCBpbm9kZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgc3RyaWRlIHNpemUgdG8gJWRcbiIKK21zZ3N0ciAi0JLRgdGC0LDQvdC+0LLQu9GO0ZTQvNC+INGA0L7Qt9C80ZbRgCBzdHJpZGUgJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICLQktGB0YLQsNC90L7QstC70Y7RlNC80L4g0YjQuNGA0LjQvdGDIHN0cmlwZSAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTgxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZXh0ZW5kZWQgZGVmYXVsdCBtb3VudCBvcHRpb25zIHRvICclcydcbiIKK21zZ3N0ciAiIgorItCS0YHRgtCw0L3QvtCy0LvRjtGU0LzQviDQtNC70Y8g0YDQvtC30YjQuNGA0LXQvdC40YUg0YLQuNC/0L7QstC40YUg0L/QsNGA0LDQvNC10YLRgNGW0LIg0LzQvtC90YLRg9Cy0LDQvdC90Y8g0LfQvdCw0YfQtdC90L3RjyDCqyVzwrtcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE5MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogVGhlIGpvdXJuYWwgaXMgZGlydHkuIFlvdSBtYXkgd2lzaCB0byByZXBsYXkgdGhlIGpvdXJuYWwgbGlrZTpcbiIKKyJcbiIKKyJcdGUyZnNjayAtRSBqb3VybmFsX29ubHkgJXNcbiIKKyJcbiIKKyJ0aGVuIHJlcnVuIHRoaXMgY29tbWFuZC4gIE90aGVyd2lzZSwgYW55IGNoYW5nZXMgbWFkZSBtYXkgYmUgb3ZlcndyaXR0ZW5cbiIKKyJieSBqb3VybmFsIHJlY292ZXJ5LlxuIgorbXNnc3RyICIiCisi0J/QvtC/0LXRgNC10LTQttC10L3QvdGPOiDQttGD0YDQvdCw0Lsg0LzRltGB0YLQuNGC0Ywg0YHQu9GW0LTQuCDQv9C+0YjQutC+0LTQttC10L3QvdGPLiDQktCw0Lwg0LLQsNGA0YLQviDQstGW0LTRgtCy0L7RgNC40YLQuCDQttGD0YDQvdCw0LsgIgorItC30LAg0LTQvtC/0L7QvNC+0LPQvtGOXG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisi0LAg0L/QvtGC0ZbQvCDQv9C+0LLRgtC+0YDQvdC+INCy0ZbQtNC00LDRgtC4INGG0Y4g0LrQvtC80LDQvdC00YMuINCv0LrRidC+INCy0Lgg0YbRjNC+0LPQviDQvdC1INC30YDQvtCx0LjRgtC1LCDQstC90LXRgdC10L3RliDQvdC10Y4gIgorItC30LzRltC90LhcbiIKKyLQvNC+0LbQtSDQsdGD0YLQuCDQv9C10YDQtdC30LDQv9C40YHQsNC90L4g0L/RltGB0LvRjyDQstGW0LTQvdC+0LLQu9C10L3QvdGPINC20YPRgNC90LDQu9GDLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlY292ZXJpbmcgam91cm5hbC5cbiIKK21zZ3N0ciAi0JLRltC00L3QvtCy0LvRjtGU0LzQviDQttGD0YDQvdCw0LsuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwMAorbXNnaWQgIjxwcm9jZWVkaW5nPlxuIgorbXNnc3RyICI80L/RgNC+0LTQvtCy0LbQtdC90L3Rjz5cbiIKKworIzogbWlzYy91dGlsLmM6MTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIlByb2NlZWQgYW55d2F5IChvciB3YWl0ICVkIHNlY29uZHMpID8gKHksbikgIgorbXNnc3RyICLQn9GA0L7QtNC+0LLQttGD0LLQsNGC0LggKNGH0Lgg0LfQsNGH0LXQutCw0YLQuCAlZCDRgdC10LrRg9C90LQpPyAoeSAtINGC0LDQuiwgbiAtINC90ZYpICIKKworIzogbWlzYy91dGlsLmM6MTA4Cittc2dpZCAiUHJvY2VlZCBhbnl3YXk/ICh5LG4pICIKK21zZ3N0ciAi0J/RgNC+0LTQvtCy0LbRg9Cy0LDRgtC4PyAoeSAtINGC0LDQuiwgbiAtINC90ZYpICIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKyLQn9GA0LjQvNGD0YHQvtCy0LUg0LLQuNC60L7QvdCw0L3QvdGPIG1rZTJmcy4g0KHQv9C+0LTRltCy0LDRlNC80L7RgdGPLCDRidC+IC9ldGMvbXRhYiDQvNGW0YHRgtC40YLRjCDQv9C+0LzQuNC70LrQuC5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICLQvdC1INGB0YLQstC+0YDRjtCy0LDRgtC40LzQtSAlcyDRgtGD0YIhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICLQn9GA0LjQvNGD0YHQvtCy0LUg0LLQuNC60L7QvdCw0L3QvdGPIG1rZTJmcy5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQvtGC0YDQuNC80LDRgtC4INC+0LHQu9Cw0YHRgtGMINC/0LDQvOKAmdGP0YLRliDQtNC70Y8g0L7QsdGA0L7QsdC60Lgg0L/QsNGA0LDQvNC10YLRgNGW0LIg0LbRg9GA0L3QsNC70YMhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IGZpbmQgam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfQvdCw0LnRgtC4INC/0YDQuNGB0YLRgNGW0Lkg0LbRg9GA0L3QsNC70YMsINGJ0L4g0LLRltC00L/QvtCy0ZbQtNCw0ZQg0LLQutCw0LfQsNC90L7QvNGDICVzXG4iCisKKyM6IG1pc2MvdXRpbC5jOjIxMworbXNnaWQgIiIKKyJcbiIKKyJCYWQgam91cm5hbCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJKb3VybmFsIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBqb3VybmFsIG9wdGlvbnMgYXJlOlxuIgorIlx0c2l6ZT08am91cm5hbCBzaXplIGluIG1lZ2FieXRlcz5cbiIKKyJcdGRldmljZT08am91cm5hbCBkZXZpY2U+XG4iCisiXHRsb2NhdGlvbj08am91cm5hbCBsb2NhdGlvbj5cbiIKKyJcbiIKKyJUaGUgam91cm5hbCBzaXplIG11c3QgYmUgYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBmaWxlc3lzdGVtIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorItCS0LrQsNC30LDQvdC+INC/0L7QvNC40LvQutC+0LLRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0LbRg9GA0L3QsNC70YMuXG4iCisiXG4iCisi0J/QsNGA0LDQvNC10YLRgNC4INC20YPRgNC90LDQu9GDINCy0ZbQtNC+0LrRgNC10LzQu9GO0Y7RgtGM0YHRjyDQutC+0LzQsNC80Lgg0ZYg0LzQvtC20YPRgtGMINC/0YDQuNC50LzQsNGC0Lgg0LDRgNCz0YPQvNC10L3RgtC4LFxuIgorIlx00Y/QutGWINCy0YHRgtCw0L3QvtCy0LvRjtGO0YLRjNGB0Y8g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0YHQuNC80LLQvtC70YMg0YDRltCy0L3QvtGB0YLRliAowqs9wrspLlxuIgorIlxuIgorItCa0L7RgNC10LrRgtC90ZYg0L/QsNGA0LDQvNC10YLRgNC4INC20YPRgNC90LDQu9GDOlxuIgorIlx0c2l6ZT080YDQvtC30LzRltGAINC20YPRgNC90LDQu9GDINGDINC80LXQs9Cw0LHQsNC50YLQsNGFPlxuIgorIlx0ZGV2aWNlPTzQv9GA0LjRgdGC0YDRltC5INC20YPRgNC90LDQu9GO0LLQsNC90L3Rjz5cbiIKKyJcdGxvY2F0aW9uPTzRgNC+0LfRgtCw0YjRg9Cy0LDQvdC90Y8g0LbRg9GA0L3QsNC70YM+XG4iCisiXG4iCisi0KDQvtC30LzRltGAINC20YPRgNC90LDQu9GDINC80LDRlCDQvdCw0LvQtdC20LDRgtC4INC00ZbQsNC/0LDQt9C+0L3RgyDQstGW0LQgMTAyNCDQtNC+IDEwMjQwMDAwINCx0LvQvtC60ZbQsiDRhNCw0LnQu9C+0LLQvtGXICIKKyLRgdC40YHRgtC10LzQuC5cbiIKKyJcbiIKKworIzogbWlzYy91dGlsLmM6MjQ0Cittc2dpZCAiIgorIlxuIgorIkZpbGVzeXN0ZW0gdG9vIHNtYWxsIGZvciBhIGpvdXJuYWxcbiIKK21zZ3N0ciAiIgorIlxuIgorItCk0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwINC90LDQtNGC0L4g0LzQsNC70LAg0LTQu9GPINC20YPRgNC90LDQu9GO0LLQsNC90L3Rj1xuIgorCisjOiBtaXNjL3V0aWwuYzoyNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlRoZSByZXF1ZXN0ZWQgam91cm5hbCBzaXplIGlzICVkIGJsb2NrczsgaXQgbXVzdCBiZVxuIgorImJldHdlZW4gMTAyNCBhbmQgMTAyNDAwMDAgYmxvY2tzLiAgQWJvcnRpbmcuXG4iCittc2dzdHIgIiIKKyJcbiIKKyLQoNC+0LfQvNGW0YAg0LbRg9GA0L3QsNC70YMsINC90LAg0Y/QutC40Lkg0L3QsNC00ZbQudGI0L7QsiDQt9Cw0L/QuNGCLCDQtNC+0YDRltCy0L3RjtGUICVkINCx0LvQvtC60LDQvDtcbiIKKyLRgNC+0LfQvNGW0YDQuCDQvNCw0Y7RgtGMINC90LDQu9C10LbQsNGC0Lgg0LTRltCw0L/QsNC30L7QvdGDINCy0ZbQtCAxMDI0INC00L4gMTAyNDAwMDAg0LHQu9C+0LrRltCyLlxuIgorItCf0LXRgNC10YDQuNCy0LDRlNC80L4g0L7QsdGA0L7QsdC60YMuXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorItCg0L7Qt9C80ZbRgCDQttGD0YDQvdCw0LvRgyDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8INC00LvRjyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4LlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorItCf0LXRgNC10LLRltGA0LrQsCDRhtGW0ZTRlyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4INCy0LjQutC+0L3Rg9Cy0LDRgtC40LzQtdGC0YzRgdGPINC60L7QttC90ZYgJWQg0LzQvtC90YLRg9Cy0LDQvdGMINCw0LHQvlxuIgorIiVnINC00L3RltCyLCDRidC+0LnQvdC+INCx0YPQtNC1INC00L7RgdGP0LPQvdGD0YLQviDQvtC00L3QvtCz0L4g0Lcg0YbQuNGFINC+0LHQvNC10LbQtdC90YwuINCf0LXRgNC10LLQuNC30L3QsNGH0LjRgtC4XG4iCisi0YbRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0LzQvtC20L3QsCDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiB0dW5lMmZzIC1jINCw0LHQviAtaS5cbiIKKworIzogbWlzYy91dWlkZC5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWRdIFstcCBwaWRmaWxlXSBbLXMgc29ja2V0cGF0aF0gWy1UIHRpbWVvdXRdXG4iCittc2dzdHIgIiIKKyLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86ICVzIFstZF0gWy1wINGE0LDQudC7X3BpZF0gWy1zINGI0LvRj9GFX9C00L5f0YHQvtC60LXRgtCwXSBbLVQg0YfQsNGBX9C+0YfRltC60YPQstCw0L3QvdGPXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIFstcnx0XSBbLW4gbnVtXSBbLXMgc29ja2V0cGF0aF1cbiIKK21zZ3N0ciAiICAgICAgICVzIFstcnx0XSBbLW4g0YfQuNGB0LvQvl0gWy1zINGI0LvRj9GFINC00L4g0YHQvtC60LXRgtCwXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstGWINC/0LDRgNCw0LzQtdGC0YDQuCIKKworIzogbWlzYy91dWlkZC5jOjE3MworbXNnaWQgImNvbm5lY3QiCittc2dzdHIgItC3J9GU0LTQvdCw0L3QvdGPIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgItC30LDQv9C40YEiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICLQutGW0LvRjNC60ZbRgdGC0Ywg0YfQuNGC0LDQvdGMIgorCisjOiBtaXNjL3V1aWRkLmM6MjA2Cittc2dpZCAiYmFkIHJlc3BvbnNlIGxlbmd0aCIKK21zZ3N0ciAi0L/QvtC80LjQu9C60L7QstCwINC00L7QstC20LjQvdCwINCy0ZbQtNC/0L7QstGW0LTRliIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICLRhNC+0L3QvtCy0YMg0YHQu9GD0LbQsdGDIHV1aWRkINCy0LbQtSDQt9Cw0L/Rg9GJ0LXQvdC+INC3IHBpZCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINGB0YLQstC+0YDQuNGC0Lgg0YHQvtC60LXRgiDQv9C+0YLQvtC60YMg0LTQsNC90LjRhSBVTklYOiAlcyIKKworIzogbWlzYy91dWlkZC5jOjMwOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBiaW5kIHVuaXggc29ja2V0ICVzOiAlc1xuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC/0YDQuNCy4oCZ0Y/Qt9Cw0YLQuNGB0Y8g0LTQviDRgdC+0LrQtdGC0LAgdW5peCAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/QvtGH0LDRgtC4INC+0YfRltC60YPQstCw0L3QvdGPINC00LDQvdC40YUg0L3QsCDRgdC+0LrQtdGC0ZYgdW5peCAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGH0LjRgtCw0L3QvdGPINC3INC60LvRltGU0L3RgtCwLCDQtNC+0LLQttC40L3QsCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICLQvtC/0LXRgNCw0YbRltGPICVkLCDQstGF0ZbQtNC90LUg0YfQuNGB0LvQviA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAi0KHRgtCy0L7RgNC10L3QuNC5INC90LAg0L7RgdC90L7QstGWINGH0LDRgdGDIFVVSUQ6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICLQodGC0LLQvtGA0LXQvdC40Lkg0L/RgdC10LLQtNC+0LLQuNC/0LDQtNC60L7QstC40LkgVVVJRDogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICLQodGC0LLQvtGA0LXQvdC+INGH0LDRgdC+0LLQuNC5IFVVSUQgJXMg0ZYgJWQg0L/QvtGB0LvRltC00L7QstC90LjQuSBVVUlEXG4iCittc2dzdHJbMV0gItCh0YLQstC+0YDQtdC90L4g0YfQsNGB0L7QstC40LkgVVVJRCAlcyDRliAlZCDQv9C+0YHQu9GW0LTQvtCy0L3QuNGFIFVVSURcbiIKK21zZ3N0clsyXSAi0KHRgtCy0L7RgNC10L3QviDRh9Cw0YHQvtCy0LjQuSBVVUlEICVzINGWICVkINC/0L7RgdC70ZbQtNC+0LLQvdC40YUgVVVJRFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkdlbmVyYXRlZCAlZCBVVUlEJ3M6XG4iCittc2dzdHIgItCh0YLQstC+0YDQtdC90L4gJWQgVVVJRDpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QsCDQtNGW0Y8gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjQ3NyBtaXNjL3V1aWRkLmM6NDk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBudW1iZXI6ICVzXG4iCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQuNC5INC90L7QvNC10YA6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICLQn9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDQstC40LrQu9C40LrQsNGC0Lgg0YTQvtC90L7QstGDINGB0LvRg9C20LHRgyB1dWlkZCAoJXMpOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiJXMgYW5kIHN1YnNlcXVlbnQgJWQgVVVJRHNcbiIKK21zZ3N0clswXSAiJXMg0ZYgJWQg0L/QvtGB0LvRltC00L7QstC90LjQuSBVVUlEXG4iCittc2dzdHJbMV0gIiVzINGWICVkINC/0L7RgdC70ZbQtNC+0LLQvdGWIFVVSURcbiIKK21zZ3N0clsyXSAiJXMg0ZYgJWQg0L/QvtGB0LvRltC00L7QstC90LjRhSBVVUlEXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDgKK21zZ2lkICJMaXN0IG9mIFVVSUQnczpcbiIKK21zZ3N0ciAi0KHQv9C40YHQvtC6IFVVSUQ6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAi0J3QtdC+0YfRltC60YPQstCw0L3QsCDQtNC+0LLQttC40L3QsCDQstGW0LTQv9C+0LLRltC00ZYg0LLRltC0INGB0LXRgNCy0LXRgNCwLCAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGtpbGwgdXVpZGQgcnVubmluZyBhdCBwaWQgJWQ6ICVzXG4iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/RgNC40L/QuNC90LjRgtC4INGA0L7QsdC+0YLRgyB1dWlkZCwg0LfQsNC/0YPRidC10L3QvtCz0L4g0LcgcGlkICVkOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICLQn9GA0LjQv9C40L3QtdC90L4g0YDQvtCx0L7RgtGDIHV1aWRkINC3IHBpZCAlZFxuIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgItCa0L7RgNC40YHRgtGD0LLQsNC90L3RjzogJXMgWy1yXSBbLXRdXG4iCisKKyM6IHJlc2l6ZS9leHRlbnQuYzoyMDIKK21zZ2lkICIjIEV4dGVudCBkdW1wOlxuIgorbXNnc3RyICIjINCU0LDQvNC/INGA0L7Qt9GI0LjRgNC10L3QvdGPOlxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiNcdE51bT0lbGx1LCBTaXplPSVsbHUsIEN1cnNvcj0lbGx1LCBTb3J0ZWQ9JWxsdVxuIgorbXNnc3RyICLihJZcdNCd0L7QvD0lbGx1LCDQoNC+0LfQvD0lbGx1LCDQmtGD0YDRgdC+0YA9JWxsdSwg0KPQv9C+0YDRj9C00Lo9JWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1kIGRlYnVnX2ZsYWdzXSBbLWZdIFstRl0gWy1NXSBbLVBdIFstcF0gZGV2aWNlIFstYnwtc3xuZXdfc2l6ZV0gIgorIlsteiB1bmRvX2ZpbGVdXG4iCisiXG4iCittc2dzdHIgIiIKKyLQmtC+0YDQuNGB0YLRg9Cy0LDQvdC90Y86ICVzIFstZCDQv9GA0LDQv9C+0YDRhtGWX9C00ZbQsNCz0L3QvtGB0YLQuNC60LhdIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSDQv9GA0LjRgdGC0YDRltC5ICIKKyJbLWJ8LXN80L3QvtCy0LjQuSDRgNC+0LfQvNGW0YBdIFsteiDRhNCw0LnQuyDRgdC60LDRgdGD0LLQsNC90L3RjyDQtNGW0LldXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NzIKK21zZ2lkICJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIgorbXNnc3RyICLQoNC+0LfRiNC40YDRjtGU0LzQviDRgtCw0LHQu9C40YbRjiBpbm9kZSIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICLQn9C10YDQtdGB0YPQstCw0ZTQvNC+INCx0LvQvtC60LgiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0KHQutCw0L3Rg9GU0LzQviDRgtCw0LHQu9C40YbRjiBpbm9kZSIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgItCe0L3QvtCy0LvRjtGU0LzQviDQv9C+0YHQuNC70LDQvdC90Y8gaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgItCf0LXRgNC10YHRg9Cy0LDRlNC80L4g0YLQsNCx0LvQuNGG0Y4gaW5vZGUiCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgItCd0LXQstGW0LTQvtC80LjQuSDQv9GA0L7RhdGW0LQ/IT8iCisKKyM6IHJlc2l6ZS9tYWluLmM6OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIgorbXNnc3RyICLQn9C+0YfQsNGC0L7QuiDQv9GA0L7RhdC+0LTRgyAlZCAo0LzQsNC60YEuID0gJWx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjE2MgorbXNnaWQgIiIKKyJcbiIKKyJSZXNpemluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbXMgaGFzIG5vdCBiZWVuIGZ1bGx5IHRlc3RlZC4gIFByb2NlZWQgYXRcbiIKKyJ5b3VyIG93biByaXNrISAgVXNlIHRoZSBmb3JjZSBvcHRpb24gaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW55d2F5LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi0JrQvtC0INC30LzRltC90Lgg0YDQvtC30LzRltGA0ZbQsiDRhNCw0LnQu9C+0LLQuNGFINGB0LjRgdGC0LXQvCBiaWdhbGxvYyDQvdC1INGUINC00L7RgdGC0LDRgtC90YzQviDQv9C10YDQtdCy0ZbRgNC10L3QuNC8LlxuIgorItCS0ZbQtNC/0L7QstGW0LTQsNC70YzQvdGW0YHRgtGMINC30LAg0LzQvtC20LvQuNCy0ZYg0L3QsNGB0LvRltC00LrQuCDQv9C+0LrQu9Cw0LTQsNGU0YLRjNGB0Y8g0L3QsCDQstCw0YEhINCh0LrQvtGA0LjRgdGC0LDQudGC0LXRgdGPXG4iCisi0L/QsNGA0LDQvNC10YLRgNC+0Lwg0L/RgNC40LzRg9GB0L7QstC+0LPQviDQstC40LrQvtC90LDQvdC90Y8sINGP0LrRidC+INGF0L7Rh9C10YLQtSDRgNC40LfQuNC60L3Rg9GC0LguXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INCy0ZbQtNC60YDQuNGC0YLRjyAlcyIKKworIzogcmVzaXplL21haW4uYzozNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDQvtGC0YDQuNC80LDQvdC90Y8g0YHRgtCw0YLQuNGB0YLQuNGH0L3QuNGFINC00LDQvdC40YUg0YnQvtC00L4gJXMiCisKKyM6IHJlc2l6ZS9tYWluLmM6NDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuIgorIlxuIgorbXNnc3RyICIiCisi0JHRg9C00Ywg0LvQsNGB0LrQsCwg0YHQv9C+0YfQsNGC0LrRgyDQstGW0LTQtNCw0LnRgtC1INC60L7QvNCw0L3QtNGDIMKrZTJmc2NrIC1mICVzwrsuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAi0J7RhtGW0L3QutCwINC80ZbQvdGW0LzQsNC70YzQvdC+0LPQviDRgNC+0LfQvNGW0YDRgyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4OiAlbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0L3QvtCy0LjQuSDRgNC+0LfQvNGW0YA6ICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIiIKKyLQndC+0LLQuNC5INGA0L7Qt9C80ZbRgCDRlCDQvdCw0LTRgtC+INCy0LXQu9C40LrQuNC8INC00LvRjyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90L3RjyDQudC+0LPQviDRgyDRhNC+0YDQvNCw0YLRliAzMi3QsdGW0YLQvtCy0L7Qs9C+ICIKKyLRh9C40YHQu9CwXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICLQndC+0LLQuNC5INGA0L7Qt9C80ZbRgCDRlCDQvNC10L3RiNC40Lwg0LfQsCDQvNGW0L3RltC80LDQu9GM0L3QuNC5ICglbGx1KVxuIgorCisjOiByZXNpemUvbWFpbi5jOjUzNAorbXNnaWQgIkludmFsaWQgc3RyaWRlIGxlbmd0aCIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LAg0LTQvtCy0LbQuNC90LAgc3RyaWRlIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisi0J3QsCDRgNC+0LfQtNGW0LvRliAo0LDQsdC+INC/0YDQuNGB0YLRgNC+0ZcpINC70LjRiNC1ICVsbHUgKCVkINGC0LjRgdGP0YcpINCx0LvQvtC60ZbQsi5cbiIKKyLQktCw0LzQuCDQvdCw0LTRltGB0LvQsNC90L4g0LfQsNC/0LjRgiDRidC+0LTQviDQvdC+0LLQvtCz0L4g0YDQvtC30LzRltGA0YMg0YMgJWxsdSDQsdC70L7QutGW0LIuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXQgYW5kIHVuc2V0IDY0Yml0IGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7QttC90LAg0LLRgdGC0LDQvdC+0LLQu9GO0LLQsNGC0Lgg0LDQsdC+INGB0LrQsNGB0L7QstGD0LLQsNGC0Lgg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINC80L7QttC70LjQstC+0YHRgtGWIDY0LdCx0ZbRgtC+0LLQvtCz0L4gIgorItGA0LXQttC40LzRgy5cbiIKKworIzogcmVzaXplL21haW4uYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgb24gYSBmaWxlc3lzdGVtIHRoYXQgaXMgbGFyZ2VyIHRoYW4gMl4zMiAiCisiYmxvY2tzLlxuIgorbXNnc3RyICIiCisi0J3QtSDQvNC+0LbQvdCwINC30LzRltC90Y7QstCw0YLQuCDQt9C90LDRh9C10L3QvdGPINGD0LLRltC80LrQvdC10L3QvtGB0YLRliDQvNC+0LbQu9C40LLQvtGB0YLRliA2NGJpdCDQvdCwINGE0LDQudC70L7QstGW0LkgIgorItGB0LjRgdGC0LXQvNGWLCDRgNC+0LfQvNGW0YAg0Y/QutC+0Zcg0L/QtdGA0LXQstC40YnRg9GUIDJeMzIg0LHQu9C+0LrRltCyLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyLQndC1INC80L7QttC90LAg0LfQvNGW0L3RjtCy0LDRgtC4INC/0LDRgNCw0LzQtdGC0YDQuCDQvNC+0LbQu9C40LLQvtGB0YLRliA2NC3QsdGW0YLQvtCy0L7Qs9C+INGA0LXQttC40LzRgywg0LTQvtC60Lgg0YTQsNC50LvQvtCy0YMgIgorItGB0LjRgdGC0LXQvNGDINC30LzQvtC90YLQvtCy0LDQvdC+LlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU4MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIGVuYWJsZSB0aGUgZXh0ZW50cyBmZWF0dXJlIHdpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKyJmZWF0dXJlLlxuIgorbXNnc3RyICIiCisi0JHRg9C00Ywg0LvQsNGB0LrQsCwg0YPQstGW0LzQutC90ZbRgtGMINC80L7QttC70LjQstGW0YHRgtGMINGA0L7Qt9GI0LjRgNC10L3RjCAoZXh0ZW50cykg0YMgdHVuZTJmcyDQtNC+INCy0LzQuNC60LDQvdC90Y8gIgorItC80L7QttC70LjQstC+0YHRgtGWIDY0LdCx0ZbRgtC+0LLQvtCz0L4g0YDQtdC20LjQvNGDICg2NGJpdCkuXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTg3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBpcyBhbHJlYWR5ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuICBOb3RoaW5nIHRvIGRvIVxuIgorIlxuIgorbXNnc3RyICIiCisi0KTQsNC50LvQvtCy0LAg0YHQuNGB0YLQtdC80LAg0LLQttC1INGB0LrQu9Cw0LTQsNGU0YLRjNGB0Y8g0LcgJWxsdSAoJWTQmikg0LHQu9C+0LrRltCyLiDQn9C+0YLRgNC10LHQuCDRgyDQtNC+0LTQsNGC0LrQvtCy0LjRhSAiCisi0LTRltGP0YUg0L3QtdC80LDRlC5cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo1OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgItCk0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwINCy0LbQtSDRlCA2NC3QsdGW0YLQvtCy0L7Rji5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iCittc2dzdHIgItCk0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwINCy0LbQtSDRlCAzMi3QsdGW0YLQvtCy0L7Rji5cbiIKKworIzogcmVzaXplL21haW4uYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byA2NC1iaXQuXG4iCittc2dzdHIgItCf0LXRgNC10YLQstC+0YDRjtGU0LzQviDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDQvdCwIDY0LdCx0ZbRgtC+0LLRgy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byAzMi1iaXQuXG4iCittc2dzdHIgItCf0LXRgNC10YLQstC+0YDRjtGU0LzQviDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDQvdCwIDMyLdCx0ZbRgtC+0LLRgy5cbiIKKworIzogcmVzaXplL21haW4uYzo2MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgItCX0LzRltC90Y7RlNC80L4g0YDQvtC30LzRltGAINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QsCAlcyDQtNC+ICVsbHUgKCVkINGC0LjRgdGP0YcpINCx0LvQvtC60ZbQsi5cbiIKKworIzogcmVzaXplL21haW4uYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LfQvNGW0L3QuNGC0Lgg0YDQvtC30LzRltGAICVzIgorCisjOiByZXNpemUvbWFpbi5jOjYyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1meSAlcycgdG8gZml4IHRoZSBmaWxlc3lzdGVtXG4iCisiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIKK21zZ3N0ciAiIgorItCR0YPQtNGMINC70LDRgdC60LAsINCy0ZbQtNC00LDQudGC0LUg0LrQvtC80LDQvdC00YMgwqtlMmZzY2sgLWZ5ICVzwrssINGJ0L7QsSDQstC40L/RgNCw0LLQuNGC0LhcbiIKKyLRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDQv9GW0YHQu9GPINC/0LXRgNC10YDQuNCy0LDQvdC90Y8g0LTRltGXINC30ZYg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyLQoyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWICVzINGC0LXQv9C10YAgJWxsdSAoJWTQmikg0LHQu9C+0LrRltCyLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC+0LHRgNGW0LfQsNGC0LggJXMiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4MQorbXNnaWQgImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIgorbXNnc3RyICIiCisi0YMg0Y/QtNGA0ZYg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INGW0L3RgtC10YDQsNC60YLQuNCy0L3QvtGXINC30LzRltC90Lgg0YDQvtC30LzRltGA0ZbQsiDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiBzcGFyc2Vfc3VwZXIyIgorCisjOiByZXNpemUvb25saW5lLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBhdCAlcyBpcyBtb3VudGVkIG9uICVzOyBvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iCittc2dzdHIgIiIKKyLQpNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyDRgyAlcyDQt9C80L7QvdGC0L7QstCw0L3QviDQtNC+ICVzOyDQvdCw0LTRltGB0LvQsNC90L4g0LfQsNC/0LjRgiDRidC+0LTQviDRltC90YLQtdGA0LDQutGC0LjQstC90L7RlyAiCisi0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgItCf0ZbQtNGC0YDQuNC80LrQuCDRltC90YLQtdGA0LDQutGC0LjQstC90L7Qs9C+INC30LzQtdC90YjQtdC90L3RjyDRgNC+0LfQvNGW0YDRltCyINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIiIKKyLQoyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQv9GW0LTRgtGA0LjQvNC60Lgg0ZbQvdGC0LXRgNCw0LrRgtC40LLQvdC+0Zcg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyIgorCisjOiByZXNpemUvb25saW5lLmM6MTIyCittc2dpZCAiTm90IGVub3VnaCByZXNlcnZlZCBnZHQgYmxvY2tzIGZvciByZXNpemluZyIKK21zZ3N0ciAi0J3QtdC00L7RgdGC0LDRgtC90YzQviDQt9Cw0YDQtdC30LXRgNCy0L7QstCw0L3QuNGFINCx0LvQvtC60ZbQsiBnZHQg0LTQu9GPINC30LzRltC90Lgg0YDQvtC30LzRltGA0ZbQsiIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAiIgorItCjINGP0LTRgNGWINC+0L/QtdGA0LDRhtGW0LnQvdC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC/0ZbQtNGC0YDQuNC80LrQuCDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LIg0YLQsNC60LjRhSAiCisi0LLQtdC70LjQutC40YUg0YTQsNC50LvQvtCy0LjRhSDRgdC40YHRgtC10LwiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIKK21zZ3N0ciAi0L/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0LLRltC00LrRgNC40YLQuCDRgtC+0YfQutGDINC80L7QvdGC0YPQstCw0L3QvdGPICVzIgorCisjOiByZXNpemUvb25saW5lLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIk9sZCByZXNpemUgaW50ZXJmYWNlIHJlcXVlc3RlZC5cbiIKK21zZ3N0ciAi0JfQsNC/0LjRgiDQvdCwINC30LDRgdGC0LDRgNGW0LvQuNC5INGW0L3RgtC10YDRhNC10LnRgSDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGDLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MTYxIHJlc2l6ZS9vbmxpbmUuYzoxNzgKK21zZ2lkICJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIKK21zZ3N0ciAi0J3QtdC00L7RgdGC0LDRgtC90YzQviDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyDQtNC70Y8g0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LgiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNjQgcmVzaXplL29ubGluZS5jOjE4NAorbXNnaWQgIldoaWxlIGNoZWNraW5nIGZvciBvbi1saW5lIHJlc2l6aW5nIHN1cHBvcnQiCittc2dzdHIgItCf0ZbQtCDRh9Cw0YEg0L/QtdGA0LXQstGW0YDQutC4INC80L7QttC70LjQstC+0YHRgtGWINGW0L3RgtC10YDQsNC60YLQuNCy0L3QvtGXINC30LzRltC90Lgg0YDQvtC30LzRltGA0ZbQsiIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiIgorItCjINGP0LTRgNGWINC+0L/QtdGA0LDRhtGW0LnQvdC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC/0ZbQtNGC0YDQuNC80LrQuCDRltC90YLQtdGA0LDQutGC0LjQstC90L7RlyDQt9C80ZbQvdC4ICIKKyLRgNC+0LfQvNGW0YDRltCyIgorCisjOiByZXNpemUvb25saW5lLmM6MjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIlBlcmZvcm1pbmcgYW4gb24tbGluZSByZXNpemUgb2YgJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iCittc2dzdHIgItCS0LjQutC+0L3Rg9GU0LzQviDRltC90YLQtdGA0LDQutGC0LjQstC90YMg0LfQvNGW0L3RgyDRgNC+0LfQvNGW0YDRltCyICVzINC00L4gJWxsdSAoJWQg0YLQuNGB0Y/Rhykg0LHQu9C+0LrRltCyLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAi0J/RltC0INGH0LDRgSDRgdC/0YDQvtCx0Lgg0YDQvtC30YjQuNGA0LXQvdC90Y8g0L7RgdGC0LDQvdC90YzQvtGXINCz0YDRg9C/0LgiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiCittc2dzdHIgItCf0ZbQtCDRh9Cw0YEg0YHQv9GA0L7QsdC4INC00L7QtNCw0YLQuCDQs9GA0YPQv9GDICVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisi0KTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0YMgJXMg0LfQvNC+0L3RgtC+0LLQsNC90L4g0LTQviAlcywg0L/RltC00YLRgNC40LzQutC4INGW0L3RgtC10YDQsNC60YLQuNCy0L3QvtGXINC30LzRltC90LggIgorItGA0L7Qt9C80ZbRgNGW0LIg0LTQu9GPINGG0ZbRlNGXINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+LlxuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgItC60ZbQu9GM0LrRltGB0YLRjCBpbm9kZSAoJWxsdSkg0LzQsNGUINCx0YPRgtC4INC80LXQvdGI0L7RjiDQt9CwICV1IgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTAzNworbXNnaWQgInJlc2VydmVkIGJsb2NrcyIKK21zZ3N0ciAi0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90ZYg0LHQu9C+0LrQuCIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEyODEKK21zZ2lkICJtZXRhLWRhdGEgYmxvY2tzIgorbXNnc3RyICLQsdC70L7QutC4INC80LXRgtCw0LTQsNC90LjRhSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgItC90L7QstGWINC80LXRgtCw0LHQu9C+0LrQuCIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgItCi0LDQutC+0LPQviDQvdC1INC/0L7QstC40L3QvdC+INCx0YPQu9C+INGB0YLQsNGC0LjRgdGPISDQndC10LzQsNGUIHNiINGDIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjU0NQorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW4hICBVbmV4cGVjdGVkIG9sZF9kZXNjIGluIHN1cGVyX3NwYXJzZSBiZz9cbiIKK21zZ3N0ciAiIgorItCi0LDQutC+0LPQviDQvdC1INC/0L7QstC40L3QvdC+INCx0YPQu9C+INGB0YLQsNGC0LjRgdGPISDQndC10L7Rh9GW0LrRg9Cy0LDQvdC1IG9sZF9kZXNjINGDIHN1cGVyX3NwYXJzZSBiZz9cbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI2MTgKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIKK21zZ3N0ciAi0KLQsNC60L7Qs9C+INC90LUg0L/QvtCy0LjQvdC90L4g0LHRg9C70L4g0YHRgtCw0YLQuNGB0Y86IGlub2RlINC30LzRltC90Lgg0YDQvtC30LzRltGA0ZbQsiDQv9C+0YjQutC+0LTQttC10L3QviFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCisjLCBmdXp6eQorbXNnaWQgIkVYVDJGUyBMaWJyYXJ5IHZlcnNpb24gMS40My4yIgorbXNnc3RyICLQkdGW0LHQu9GW0L7RgtC10LrQsCBFWFQyRlMg0LLQtdGA0YHRltGXIDEuNDMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggZXh0Ml9maWxzeXMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggYmFkYmxvY2tzX2xpc3QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2l0ZXJhdGUgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggYmFkYmxvY2tzX2l0ZXJhdGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfc2NhbiBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCBpbm9kZV9zY2FuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggaW9fY2hhbm5lbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciB1bml4IGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggaW9fY2hhbm5lbCBVTklYIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX21hbmFnZXIgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggaW9fbWFuYWdlciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCBpbm9kZV9iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZ2VuZXJpY19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0LggZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INGB0YLRgNGD0LrRgtGD0YDQuCBpb19jaGFubmVsIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGRpcmVjdG9yeSBibG9jayBsaXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCDRgdC/0LjRgdC60YMg0LHQu9C+0LrRltCyINC60LDRgtCw0LvQvtCz0ZbQsiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LAg0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCBpY291bnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiIgorItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCBQb3dlcnF1ZXN0IGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0MiBmaWxlIHN0cnVjdHVyZSIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDQtNC70Y8g0YHRgtGA0YPQutGC0YPRgNC4INGE0LDQudC70ZbQsiBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIEV4dDIgSW1hZ2UgSGVhZGVyIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDQt9Cw0LPQvtC70L7QstC60LAg0L7QsdGA0LDQt9GDIEV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINGB0YLRgNGD0LrRgtGD0YDQuCBpb19jaGFubmVsIGlub2RlYCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0LTQu9GPINC00LXRgdC60YDQuNC/0YLQvtGA0LAg0YDQvtC30YjQuNGA0LXQvdC90Y8gZXh0NCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAi0J3QtdC/0YDQsNCy0LjQu9GM0L3QsCDRgdC40LPQvdCw0YLRg9GA0LAg0YHRg9C/0LXRgNCx0LvQvtC60LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMQorbXNnaWQgIkZpbGVzeXN0ZW0gcmV2aXNpb24gdG9vIGhpZ2giCittc2dzdHIgItCX0LDQvdCw0LTRgtC+INCy0LjRgdC+0LrQuNC5INC90L7QvNC10YAg0LzQvtC00LjRhNGW0LrQsNGG0ZbRlyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzIKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIHRvIGZpbGVzeXN0ZW0gb3BlbmVkIHJlYWQtb25seSIKK21zZ3N0ciAi0KHQv9GA0L7QsdCwINC30LDQv9C40YHRgyDQtNC+INGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LgsINCy0ZbQtNC60YDQuNGC0L7RlyDQu9C40YjQtSDQtNC70Y8g0YfQuNGC0LDQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/RgNC+0YfQuNGC0LDRgtC4INC00LXRgdC60YDQuNC/0YLQvtGA0Lgg0LPRgNGD0L8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC30LDQv9C40YHQsNGC0Lgg0LTQtdGB0LrRgNC40L/RgtC+0YDQuCDQs9GA0YPQvyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0J/QvtGI0LrQvtC00LbQtdC90LjQuSDQtNC10YHQutGA0LjQv9GC0L7RgCDQs9GA0YPQv9C4OiDQv9C+0LzQuNC70LrQvtCy0LjQuSDQsdC70L7QuiDQsNCx0L4g0LHRltGC0L7QstCwINC60LDRgNGC0LAg0LHQu9C+0LrRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICLQn9C+0YjQutC+0LTQttC10L3QuNC5INC00LXRgdC60YDQuNC/0YLQvtGAINCz0YDRg9C/0Lg6INC/0L7QvNC40LvQutC+0LLQuNC5INCx0LvQvtC6INCw0LHQviDQsdGW0YLQvtCy0LAg0LrQsNGA0YLQsCBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICLQn9C+0YjQutC+0LTQttC10L3QuNC5INC00LXRgdC60YDQuNC/0YLQvtGAINCz0YDRg9C/0Lg6INC/0L7QvNC40LvQutC+0LLQuNC5INCx0LvQvtC6INCw0LHQviDRgtCw0LHQu9C40YbRjyBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC30LDQv9C40YHQsNGC0Lgg0LHRltGC0L7QstGDINC60LDRgNGC0YMgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozOQorbXNnaWQgIkNhbid0IHJlYWQgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC/0YDQvtGH0LjRgtCw0YLQuCDQsdGW0YLQvtCy0YMg0LrQsNGA0YLRgyBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LfQsNC/0LjRgdCw0YLQuCDQsdGW0YLQvtCy0YMg0LrQsNGA0YLRgyDQsdC70L7QutGW0LIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MQorbXNnaWQgIkNhbid0IHJlYWQgYSBibG9jayBiaXRtYXAiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L/RgNC+0YfQuNGC0LDRgtC4INCx0ZbRgtC+0LLRgyDQutCw0YDRgtGDINCx0LvQvtC60ZbQsiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQyCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgdGFibGUiCittc2dzdHIgItCX0LDQv9C40YEg0LTQviDRgtCw0LHQu9C40YbRliBpbm9kZSDQvdC10LzQvtC20LvQuNCy0LjQuSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0YLQsNCx0LvQuNGG0Y4gaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0L3QsNGB0YLRg9C/0L3QuNC5IGlub2RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgItCd0LXQvtGH0ZbQutGD0LLQsNC90LjQuSDRgNC+0LfQvNGW0YAg0LHQu9C+0LrRgyDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgItCa0LDRgtCw0LvQvtCzIEVYVDIg0L/QvtGI0LrQvtC00LbQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAiIgorItCh0L/RgNC+0LHQsCDQv9GA0L7Rh9C40YLQsNGC0Lgg0LHQu9C+0Log0Lcg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDQv9GA0LjQt9Cy0LXQu9CwINC00L4g0YfQuNGC0LDQvdC90Y8g0L3QtdC00L7RgdGC0LDRgtC90YzQvtGXICIKKyLQutGW0LvRjNC60L7RgdGC0ZYg0LTQsNC90LjRhSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ4Cittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSBibG9jayB0byBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHdyaXRlIgorbXNnc3RyICIiCisi0KHQv9GA0L7QsdCwINC30LDQv9C40YHQsNGC0Lgg0LHQu9C+0Log0LTQviDRhNCw0LnQu9C+0LLQvtGXINGB0LjRgdGC0LXQvNC4INC/0YDQuNC30LLQtdC70LAg0LTQviDQvdC10LTQvtGB0YLQsNGC0L3QvtGB0YLRliDQvtCx0YHRj9Cz0YMgIgorItC00LDQvdC40YUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gdGhlIGRpcmVjdG9yeSIKK21zZ3N0ciAi0KMg0LrQsNGC0LDQu9C+0LfRliDQvdC10LzQsNGUINCy0ZbQu9GM0L3QvtCz0L4g0LzRltGB0YbRjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUwCittc2dpZCAiSW5vZGUgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgItCR0ZbRgtC+0LLRgyDQutCw0YDRgtGDIGlub2RlINC90LUg0LfQsNCy0LDQvdGC0LDQttC10L3QviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgItCR0ZbRgtC+0LLRgyDQutCw0YDRgtGDINCx0LvQvtC60ZbQsiDQvdC1INC30LDQstCw0L3RgtCw0LbQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QsCDQutGW0LvRjNC60ZbRgdGC0YwgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIgorbXNnc3RyICLQndC10LrQvtGA0LXQutGC0L3QsCDQutGW0LvRjNC60ZbRgdGC0Ywg0LHQu9C+0LrRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTQKK21zZ2lkICJJbnRlcm5hbCBlcnJvciBpbiBleHQyZnNfZXhwYW5kX2RpciIKK21zZ3N0ciAi0JLQvdGD0YLRgNGW0YjQvdGPINC/0L7QvNC40LvQutCwINGDIGV4dDJmc19leHBhbmRfZGlyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgItCd0LXQtNC+0YHRgtCw0YLQvdGM0L4g0L/RgNC+0YHRgtC+0YDRgyDQtNC70Y8g0LfQsdC40YDQsNC90L3RjyDQt9Cw0L/RgNC+0L/QvtC90L7QstCw0L3QvtGXINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgImV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCDQv9C10YDQtdC00LDQvdC+INC90LXQutC+0YDQtdC60YLQvdGDINC60ZbQu9GM0LrRltGB0YLRjCDQsdC70L7QutGW0LIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQutGW0LvRjNC60ZbRgdGC0Ywg0LHQu9C+0LrRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICJleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQutGW0LvRjNC60ZbRgdGC0Ywg0LHQu9C+0LrRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJleHQyZnNfbWFya19pbm9kZV9iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQutGW0LvRjNC60ZbRgdGC0YwgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MAorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcCIKK21zZ3N0ciAiZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQutGW0LvRjNC60ZbRgdGC0YwgaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAiCittc2dzdHIgImV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCDQv9C10YDQtdC00LDQvdC+INC90LXQutC+0YDQtdC60YLQvdGDINC60ZbQu9GM0LrRltGB0YLRjCBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICLQodC/0YDQvtCx0LAg0L/QtdGA0LXRgdGD0L3Rg9GC0Lgg0LrRltC90LXRhtGMINCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0Lgg0LHQu9C+0LrRltCyINC30LAg0YHQv9GA0LDQstC20L3RltC5INC60ZbQvdC10YbRjCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICLQodC/0YDQvtCx0LAg0L/QtdGA0LXRgdGD0L3Rg9GC0Lgg0LrRltC90LXRhtGMINCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0LggaW5vZGUg0LfQsCDRgdC/0YDQsNCy0LbQvdGW0Lkg0LrRltC90LXRhtGMIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjQKK21zZ2lkICJJbGxlZ2FsIGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICLQktC40Y/QstC70LXQvdC+INC90LXQutC+0YDQtdC60YLQvdC40Lkg0L7Qv9C+0YHQtdGA0LXQtNC60L7QstCw0L3QuNC5INCx0LvQvtC6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi0JLQuNGP0LLQu9C10L3QviDQvdC10LrQvtGA0LXQutGC0L3QuNC5INC/0L7QtNCy0ZbQudC90L4g0L7Qv9C+0YHQtdGA0LXQtNC60L7QstCw0L3QuNC5INCx0LvQvtC6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi0JLQuNGP0LLQu9C10L3QviDQvdC10LrQvtGA0LXQutGC0L3QuNC5INC/0L7RgtGA0ZbQudC90L4g0L7Qv9C+0YHQtdGA0LXQtNC60L7QstCw0L3QuNC5INCx0LvQvtC6IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgItCR0ZbRgtC+0LLRliDQutCw0YDRgtC4INCx0LvQvtC60ZbQsiDQvdC1INGUINC+0LTQvdCw0LrQvtCy0LjQvNC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjgKK21zZ2lkICJJbm9kZSBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgItCR0ZbRgtC+0LLRliDQutCw0YDRgtC4IGlub2RlINC90LUg0ZQg0L7QtNC90LDQutC+0LLQuNC80LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2OQorbXNnaWQgIklsbGVnYWwgb3IgbWFsZm9ybWVkIGRldmljZSBuYW1lIgorbXNnc3RyICLQndC10L/RgNC40L/Rg9GB0YLQuNC80LAg0L3QsNC30LLQsCDQv9GA0LjRgdGC0YDQvtGOINCw0LHQviDQv9C+0LzQuNC70LrQvtCy0LUg0YTQvtGA0LzQsNGC0YPQstCw0L3QvdGPINC90LDQt9Cy0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi0KMg0LPRgNGD0L/RliDQsdC70L7QutGW0LIg0L3QtdC80LDRlCDRgtCw0LHQu9C40YbRliBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICLQodGD0L/QtdGA0LHQu9C+0LogZXh0MiDQv9C+0YjQutC+0LTQttC10L3QviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcyCittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICIiCisiZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQt9Cw0LPQsNC70YzQvdGDINC60ZbQu9GM0LrRltGB0YLRjCDQsdGW0YLRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorImV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAg0L/QtdGA0LXQtNCw0L3QviDQvdC10LrQvtGA0LXQutGC0L3RgyDQt9Cw0LPQsNC70YzQvdGDINC60ZbQu9GM0LrRltGB0YLRjCDQsdGW0YLRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzQKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIiIKKyJleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCDQv9C10YDQtdC00LDQvdC+INC90LXQutC+0YDQtdC60YLQvdGDINC30LDQs9Cw0LvRjNC90YMg0LrRltC70YzQutGW0YHRgtGMINCx0ZbRgtGW0LIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NQorbXNnaWQgIlRvbyBtYW55IHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkLiIKK21zZ3N0ciAi0JLQuNGP0LLQu9C10L3QviDQvdCw0LTRgtC+INCx0LDQs9Cw0YLQviDRgdC40LzQstC+0LvRltGH0L3QuNGFINC/0L7RgdC40LvQsNC90YwuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzYKK21zZ2lkICJUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBub3QgaGFuZGxlIHRoaXMgY2FzZSIKK21zZ3N0ciAi0KTRg9C90LrRhtGW0ZTRjiDQt9Cy0L7RgNC+0YLQvdC+0LPQviDQstC40LrQu9C40LrRgyDRhtC10Lkg0LLQuNC/0LDQtNC+0Log0L3QtSDQvtCx0YDQvtCx0LvRj9GU0YLRjNGB0Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiSW5vZGUg0L3QsNC70LXQttC40YLRjCDQv9C+0YjQutC+0LTQttC10L3QvtC80YMg0LHQu9C+0LrRgyDRgyDRgtCw0LHQu9C40YbRliBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAi0KMg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDRlCDQvdC10L/RltC00YLRgNC40LzRg9Cy0LDQvdGWINC80L7QttC70LjQstC+0YHRgtGWIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAi0KMg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDRlCDQvdC10L/RltC00YLRgNC40LzRg9Cy0LDQvdGWINCy0LvQsNGB0YLQuNCy0L7RgdGC0ZYg0YnQvtC00L4g0LfQsNCx0L7RgNC+0L3QuCDQt9Cw0L/QuNGB0YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiIgorItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LLQuNC60L7QvdCw0YLQuCDQv9C+0LfQuNGG0ZbRjtCy0LDQvdC90Y8g0LrQsNC90LDQu9GDINCy0LLQtdC00LXQvdC90Y8t0LLQuNCy0LXQtNC10L3QvdGPINC/0ZbQtCDRh9Cw0YEg0YfQuNGC0LDQvdC90Y8gIgorItGH0Lgg0LfQsNC/0LjRgdGDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODEKK21zZ2lkICJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQvNGW0YHRhtC1INGDINC/0LDQvCfRj9GC0ZYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MgorbXNnaWQgIkludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSIKK21zZ3N0ciAi0JHRltCx0LvRltC+0YLQtdGG0ZYgZXh0MiDQv9C10YDQtdC00LDQvdC+INC90LXQutC+0YDQtdC60YLQvdC40Lkg0LDRgNCz0YPQvNC10L3RgiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgzCittc2dpZCAiQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSIKK21zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDRgNC+0LfQvNGW0YHRgtC40YLQuCDQsdC70L7QuiDRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0YDQvtC30LzRltGB0YLQuNGC0LggaW5vZGUg0YMg0YTQsNC50LvQvtCy0ZbQuSDRgdC40YHRgtC10LzRliBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODUKK21zZ2lkICJFeHQyIGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeSIKK21zZ3N0ciAiSW5vZGUgZXh0MiDQvdC1INGUINC60LDRgtCw0LvQvtCz0L7QvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAi0KMg0YLQsNCx0LvQuNGG0ZYg0LfQsNC90LDQtNGC0L4g0LHQsNCz0LDRgtC+INC/0L7RgdC40LvQsNC90YwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NworbXNnaWQgIkZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIgorbXNnc3RyICJleHQyX2xvb2t1cCDQvdC1INCy0LTQsNC70L7RgdGPINC30L3QsNC50YLQuCDRhNCw0LnQuyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg4Cittc2dpZCAiRmlsZSBvcGVuIHJlYWQtb25seSIKK21zZ3N0ciAi0KTQsNC50Lsg0LLRltC00LrRgNC40YLQviDQu9C40YjQtSDQtNC70Y8g0YfQuNGC0LDQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAi0J3QtSDQt9C90LDQudC00LXQvdC+INCx0LvQvtC60YMg0LrQsNGC0LDQu9C+0LPRgyBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAi0JrQsNGC0LDQu9C+0LMgZXh0MiDQstC20LUg0ZbRgdC90YPRlCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkxCittc2dpZCAiVW5pbXBsZW1lbnRlZCBleHQyIGxpYnJhcnkgZnVuY3Rpb24iCittc2dzdHIgItCd0LXRgNC10LDQu9GW0LfQvtCy0LDQvdCwINCx0ZbQsdC70ZbQvtGC0LXRh9C90LAg0YTRg9C90LrRhtGW0Y8gZXh0MiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkyCittc2dpZCAiVXNlciBjYW5jZWwgcmVxdWVzdGVkIgorbXNnc3RyICLQndCw0LTRltC50YjQvtCyINC30LDQv9C40YIg0YnQvtC00L4g0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LLRltC0INC60L7RgNC40YHRgtGD0LLQsNGH0LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICLQpNCw0LnQuyBleHQyINGUINC90LDQtNGC0L4g0LLQtdC70LjQutC40LwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAi0J3QsNC00LDQvdC40Lkg0L/RgNC40YHRgtGA0ZbQuSDQttGD0YDQvdCw0LvRjtCy0LDQvdC90Y8g0L3QtSDRlCDQsdC70L7QutC+0LLQuNC8INC/0YDQuNGB0YLRgNC+0ZTQvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAi0J3QtSDQt9C90LDQudC00LXQvdC+INGB0YPQv9C10YDQsdC70L7QutGDINC20YPRgNC90LDQu9GDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTYKK21zZ2lkICJKb3VybmFsIG11c3QgYmUgYXQgbGVhc3QgMTAyNCBibG9ja3MiCittc2dzdHIgItCW0YPRgNC90LDQuyDQvNCw0ZQg0YHQutC70LDQtNCw0YLQuNGB0Y8g0Lcg0L/RgNC40L3QsNC50LzQvdGWIDEwMjQg0LHQu9C+0LrRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTcKK21zZ2lkICJVbnN1cHBvcnRlZCBqb3VybmFsIHZlcnNpb24iCittc2dzdHIgItCd0LXQv9GW0LTRgtGA0LjQvNGD0LLQsNC90LAg0LLQtdGA0YHRltGPINC20YPRgNC90LDQu9GDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTgKK21zZ2lkICJFcnJvciBsb2FkaW5nIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgItCf0L7QvNC40LvQutCwINC/0ZbQtCDRh9Cw0YEg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGPINC30L7QstC90ZbRiNC90YzQvtCz0L4g0LbRg9GA0L3QsNC70YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OQorbXNnaWQgIkpvdXJuYWwgbm90IGZvdW5kIgorbXNnc3RyICLQltGD0YDQvdCw0Lsg0L3QtSDQt9C90LDQudC00LXQvdC+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgItCf0ZbQtNGC0YDQuNC80LrQuCDRhdC10YjRltCyINC60LDRgtCw0LvQvtCz0ZbQsiDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0L3QvtC80LXRgCDQsdC70L7QutGDINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0LDRgtGA0LjQsdGD0YLQsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICLQodGC0LLQvtGA0LXQvdC90Y8g0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCDQtyDQsdCw0LbQsNC90L7RjiDQutGW0LvRjNC60ZbRgdGC0Y4gaW5vZGUg0L3QtdC80L7QttC70LjQstC1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICLQl9C90ZbQvNC+0LogZTJpbWFnZSDQvdC1INCy0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA0Cittc2dpZCAiVG9vIG1hbnkgcmVzZXJ2ZWQgZ3JvdXAgZGVzY3JpcHRvciBibG9ja3MiCittc2dzdHIgItCX0LDQvdCw0LTRgtC+INCx0LDQs9Cw0YLQviDQsdC70L7QutGW0LIg0LTQtdGB0LrRgNC40L/RgtC+0YDRltCyINC30LDRgNC10LfQtdGA0LLQvtCy0LDQvdC40YUg0LPRgNGD0L8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAiSW5vZGUg0LfQvNGW0L3QuCDRgNC+0LfQvNGW0YDRltCyINC/0L7RiNC60L7QtNC20LXQvdC+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICLQodC/0YDQvtCx0LAg0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPIGJtYXAg0LHQu9C+0LrRgyDQtyDQv9GA0L7Qv9GD0YnQtdC90LjQvCDQvtC/0L7RgdC10YDQtdC00LrQvtCy0LDQvdC40Lwg0LHQu9C+0LrQvtC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6INCy0LjQutC+0L3QsNC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDgKK21zZ2lkICJUREI6IENvcnJ1cHQgZGF0YWJhc2UiCittc2dzdHIgIlREQjog0L/QvtGI0LrQvtC00LbQtdC90LAg0LHQsNC30LAg0LTQsNC90LjRhSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOQorbXNnaWQgIlREQjogSU8gRXJyb3IiCittc2dzdHIgIlREQjog0L/QvtC80LjQu9C60LAg0LLQstC10LTQtdC90L3Rjy3QstC40LLQtdC00LXQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIlREQjog0L/QvtC80LjQu9C60LAg0LHQu9C+0LrRg9Cy0LDQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTEKK21zZ2lkICJUREI6IE91dCBvZiBtZW1vcnkiCittc2dzdHIgIlREQjog0L3QtSDQstC40YHRgtCw0YfQsNGUINC/0LDQvOKAmdGP0YLRliIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMgorbXNnaWQgIlREQjogUmVjb3JkIGV4aXN0cyIKK21zZ3N0ciAiVERCOiDQt9Cw0L/QuNGBINCy0LbQtSDRltGB0L3Rg9GUIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6INCx0LvQvtC60YPQstCw0L3QvdGPINCy0LbQtSDRltGB0L3Rg9GUINC00LvRjyDRltC90YjQuNGFINC60LvRjtGH0ZbQsiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorbXNnaWQgIlREQjogSW52YWxpZCBwYXJhbWV0ZXIiCittc2dzdHIgIlREQjog0L3QtdC60L7RgNC10LrRgtC90LjQuSDQv9Cw0YDQsNC80LXRgtGAIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE1Cittc2dpZCAiVERCOiBSZWNvcmQgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIlREQjog0LfQsNC/0LjRgdGDINC90LUg0ZbRgdC90YPRlCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiVERCOiDQt9Cw0L/QuNGBINC30LDQsdC+0YDQvtC90LXQvdC+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICLQodC/0LjRgdC+0Log0LHQu9C+0LrRg9Cy0LDQvdGMINC60LDRgtCw0LvQvtCz0ZbQsiBleHQyZnMg0ZQg0L/QvtGA0L7QttC90ZbQvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIiIKKyLQodC/0YDQvtCx0LAg0LfQvNGW0L3QuNGC0Lgg0L/RgNC40LLigJnRj9C30LrRgyDQsdC70L7QutGW0LIg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0ZbRgtC10YDQsNGC0L7RgNCwLCDQv9GA0LjQtNCw0YLQvdC+0LPQviDQu9C40YjQtSDQtNC70Y8gIgorItGH0LjRgtCw0L3QvdGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBzYXZlZCBwYXRoIgorbXNnc3RyICIiCisi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDQtNC70Y8g0LfQsdC10YDQtdC20LXQvdC+0LPQviDRiNC70Y/RhdGDINGA0L7Qt9GI0LjRgNC10L3QvdGPIGV4dDQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINC00LvRjyA2NC3QsdGW0YLQvtCy0L7RlyDQt9Cw0LPQsNC70YzQvdC+0Zcg0LHRltGC0L7QstC+0Zcg0LrQsNGA0YLQuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINC00LvRjyA2NC3QsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4INCx0LvQvtC60ZbQsiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgNjQtYml0IGlub2RlIGJpdG1hcCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINC00LvRjyA2NC3QsdGW0YLQvtCy0L7RlyDQutCw0YDRgtC4IGlub2RlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwIC0tLSBSRVNFUlZFRF8xMyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTQiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQsCDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCAtLS0gUkVTRVJWRURfMTQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE1IgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LAg0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAgLS0tIFJFU0VSVkVEXzE1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwIC0tLSBSRVNFUlZFRF8xNiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTciCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQsCDQutC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCAtLS0gUkVTRVJWRURfMTciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE4IgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LAg0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAgLS0tIFJFU0VSVkVEXzE4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstCwINC60L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwIC0tLSBSRVNFUlZFRF8xOCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMAorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGhlYWRlciIKK21zZ3N0ciAi0J/QvtGI0LrQvtC00LbQtdC90L4g0LfQsNCz0L7Qu9C+0LLQvtC6INGA0L7Qt9GI0LjRgNC10L3QvdGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMxCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaW5kZXgiCittc2dzdHIgItCf0L7RiNC60L7QtNC20LXQvdC+INC/0L7QutCw0LbRh9C40Log0YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAi0J/QvtGI0LrQvtC00LbQtdC90L4g0YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgItCjINC60LDRgNGC0ZYg0YDQvtC30YjQuNGA0LXQvdC90Y8g0L3QtdC80LDRlCDQstGW0LvRjNC90L7Qs9C+INC80ZbRgdGG0Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAi0KMgaW5vZGUg0L3QtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0Y7RgtGM0YHRjyDRgNC+0LfRiNC40YDQtdC90L3RjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNQorbXNnaWQgIk5vICduZXh0JyBleHRlbnQiCittc2dzdHIgItCd0LXQvNCw0ZQgwqvQvdCw0YHRgtGD0L/QvdC+0LPQvsK7INGA0L7Qt9GI0LjRgNC10L3QvdGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM2Cittc2dpZCAiTm8gJ3ByZXZpb3VzJyBleHRlbnQiCittc2dzdHIgItCd0LXQvNCw0ZQgwqvQv9C+0L/QtdGA0LXQtNC90YzQvtCz0L7CuyDRgNC+0LfRiNC40YDQtdC90L3RjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNworbXNnaWQgIk5vICd1cCcgZXh0ZW50IgorbXNnc3RyICLQndC10LzQsNGUINGA0L7Qt9GI0LjRgNC10L3QvdGPIMKr0LLQs9C+0YDRg8K7IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM4Cittc2dpZCAiTm8gJ2Rvd24nIGV4dGVudCIKK21zZ3N0ciAi0J3QtdC80LDRlCDRgNC+0LfRiNC40YDQtdC90L3RjyDCq9Cy0L3QuNC3wrsiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgItCd0LXQvNCw0ZQg0L/QvtGC0L7Rh9C90L7Qs9C+INCy0YPQt9C70LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDAKK21zZ2lkICJFeHQyZnMgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgItCf0ZbQtNGC0YDQuNC80LrQuCDQtNGW0Zcg0YMgZXh0MmZzINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICLQlNC70Y8g0LLRgdGC0LDQstC70LXQvdC90Y8g0YDQvtC30YjQuNGA0LXQvdC90Y8g0LTQviDQstGD0LfQu9CwINC90LUg0LLQuNGB0YLQsNGH0LDRlCDQvNGW0YHRhtGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQyCittc2dpZCAiU3BsaXR0aW5nIHdvdWxkIHJlc3VsdCBpbiBlbXB0eSBub2RlIgorbXNnc3RyICLQn9C+0LTRltC7INC/0YDQuNC30LLQtdC00LUg0LTQviDQv9C+0Y/QstC4INC/0L7RgNC+0LbQvdGM0L7Qs9C+INCy0YPQt9C70LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDMKK21zZ2lkICJFeHRlbnQgbm90IGZvdW5kIgorbXNnc3RyICLQoNC+0LfRiNC40YDQtdC90L3RjyDQvdC1INC30L3QsNC50LTQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDQKK21zZ2lkICJPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBmb3IgaW5vZGVzIGNvbnRhaW5pbmcgZXh0ZW50cyIKK21zZ3N0ciAi0J/RltC00YLRgNC40LzQutC4INC00ZbRlyDQtNC70Y8gaW5vZGUsINGJ0L4g0LzRltGB0YLRj9GC0Ywg0YDQvtC30YjQuNGA0LXQvdC90Y8sINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3QviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LAg0LTQvtCy0LbQuNC90LAg0YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICLQoyDQutCw0L3QsNC70ZYg0LLQstC10LTQtdC90L3Rjy3QstC40LLQtdC00LXQvdC90Y8g0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+IDY0LdCx0ZbRgtC+0LLQuNGFINC90L7QvNC10YDRltCyINCx0LvQvtC60ZbQsiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIiIKKyLQndC1INCy0LTQsNC70L7RgdGPINC/0LXRgNC10LLRltGA0LjRgtC4LCDRh9C4INC30LzQvtC90YLQvtCy0LDQvdC+INGE0LDQudC70L7QstGDINGB0LjRgdGC0LXQvNGDLCDQvtGB0LrRltC70YzQutC4INC90LXQvNCw0ZQg0YTQsNC50LvQsCAiCisibXRhYiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OAorbXNnaWQgIkZpbGVzeXN0ZW0gdG9vIGxhcmdlIHRvIHVzZSBsZWdhY3kgYml0bWFwcyIKK21zZ3N0ciAiIgorItCk0LDQudC70L7QstCwINGB0LjRgdGC0LXQvNCwINGUINC90LDQtNGC0L4g0LLQtdC70LjQutC+0Y4g0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQt9Cw0YHRgtCw0YDRltC70LjRhSDQsdGW0YLQvtCy0LjRhSDQutCw0YDRgiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIk1NUDog0L3QtdC60L7RgNC10LrRgtC90LAg0LrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTAKK21zZ2lkICJNTVA6IGRldmljZSBjdXJyZW50bHkgYWN0aXZlIgorbXNnc3RyICJNTVA6INC30LDRgNCw0Lcg0L/RgNC40YHRgtGA0ZbQuSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUDog0LLQuNC60L7QvdGD0ZTRgtGM0YHRjyBmc2NrIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUyCittc2dpZCAiTU1QOiBibG9jayBudW1iZXIgYmV5b25kIGZpbGVzeXN0ZW0gcmFuZ2UiCittc2dzdHIgIk1NUDog0L3QvtC80LXRgCDQsdC70L7QutGDINC/0L7Qt9CwINC80LXQttCw0LzQuCDQtNGW0LDQv9Cw0LfQvtC90YMg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MworbXNnaWQgIk1NUDogdW5kZXJnb2luZyBhbiB1bmtub3duIG9wZXJhdGlvbiIKK21zZ3N0ciAiTU1QOiDQstC40LrQvtC90YPRlNGC0YzRgdGPINC90LXQstGW0LTQvtC80LAg0LTRltGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU0Cittc2dpZCAiTU1QOiBmaWxlc3lzdGVtIHN0aWxsIGluIHVzZSIKK21zZ3N0ciAiTU1QOiDRhNCw0LnQu9C+0LLQsCDRgdC40YHRgtC10LzQsCDQstGB0LUg0YnQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NQorbXNnaWQgIk1NUDogb3BlbiB3aXRoIE9fRElSRUNUIGZhaWxlZCIKK21zZ3N0ciAiTU1QOiDRgdC/0YDQvtCx0LAg0LLRltC00LrRgNC40YLRgtGPINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOIE9fRElSRUNUINC30LDQt9C90LDQu9CwINC90LXQstC00LDRh9GWIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC40Lkg0YDQvtC30LzRltGAINC00LXRgdC60YDQuNC/0YLQvtGA0LAg0LPRgNGD0L/QuCDQsdC70L7QutGW0LIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTcKK21zZ2lkICJJbm9kZSBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZSIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAgaW5vZGUg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCBpbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OAorbXNnaWQgIklub2RlIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgItCa0L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0LggaW5vZGUg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDQsdGW0YLQvtCy0ZbQuSDQutCw0YDRgtGWIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU5Cittc2dpZCAiRXh0ZW50IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudCBibG9jayIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0LHQu9C+0LrRgyDRgNC+0LfRiNC40YDQtdC90L3RjyDQvdC1INCy0ZbQtNC/0L7QstGW0LTQsNGUINCx0LvQvtC60YMg0YDQvtC30YjQuNGA0LXQvdC90Y8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjAKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgZG9lcyBub3QgaGF2ZSBzcGFjZSBmb3IgY2hlY2tzdW0iCittc2dzdHIgItCjINCx0LvQvtGG0ZYg0LrQsNGC0LDQu9C+0LPRgyDQvdC10LTQvtGB0YLQsNGC0L3RjNC+INC80ZbRgdGG0Y8g0LTQu9GPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICLQmtC+0L3RgtGA0L7Qu9GM0L3QsCDRgdGD0LzQsCDQsdC70L7QutGDINC60LDRgtCw0LvQvtCz0YMg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDQsdC70L7QutGDINC60LDRgtCw0LvQvtCz0YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYmxvY2siCittc2dzdHIgItCa0L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINCx0LvQvtC60YMg0YDQvtC30YjQuNGA0LXQvdC+0LPQviDQsNGC0YDQuNCx0YPRgtCwINC90LUg0LLRltC00L/QvtCy0ZbQtNCw0ZQg0LHQu9C+0LrRgyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MworbXNnaWQgIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0YHRg9C/0LXRgNCx0LvQvtC60YMg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDRgdGD0L/QtdGA0LHQu9C+0LrRgyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NAorbXNnaWQgIlVua25vd24gY2hlY2tzdW0gYWxnb3JpdGhtIgorbXNnc3RyICLQndC10LLRltC00L7QvNC40Lkg0LDQu9Cz0L7RgNC40YLQvCDQvtCx0YfQuNGB0LvQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAi0JrQvtC90YLRgNC+0LvRjNC90LAg0YHRg9C80LAg0LHQu9C+0LrRgyBNTVAg0L3QtSDQstGW0LTQv9C+0LLRltC00LDRlCDQsdC70L7QutGDIE1NUCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NgorbXNnaWQgIkV4dDIgZmlsZSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAi0KTQsNC50LsgZXh0MiDQstC20LUg0ZbRgdC90YPRlCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2NworbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgItCa0L7QvdGC0YDQvtC70YzQvdCwINGB0YPQvNCwINCx0ZbRgtC+0LLQvtGXINC60LDRgNGC0Lgg0LHQu9C+0LrRgyDQvdC1INCy0ZbQtNC/0L7QstGW0LTQsNGUINCx0ZbRgtC+0LLRltC5INC60LDRgNGC0ZYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjgKK21zZ2lkICJDYW5ub3QgaXRlcmF0ZSBkYXRhIGJsb2NrcyBvZiBhbiBpbm9kZSBjb250YWluaW5nIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisi0J3QtSDQvNC+0LbQvdCwINC30LTRltC50YHQvdGO0LLQsNGC0Lgg0ZbRgtC10YDQsNGG0ZbRjiDQsdC70L7QutCw0LzQuCDQtNCw0L3QuNGFIGlub2RlLCDRidC+INC80ZbRgdGC0LjRgtGMINCy0LHRg9C00L7QstCw0L3RliDQtNCw0L3RliIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAi0KDQvtC30YjQuNGA0LXQvdC40Lkg0LDRgtGA0LjQsdGD0YIg0LzQsNGUINC90LXQutC+0YDQtdC60YLQvdGDINC00L7QstC20LjQvdGDINC90LDQt9Cy0LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzAKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgbGVuZ3RoIgorbXNnc3RyICLQoNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LUg0LTQvtCy0LbQuNC90YMg0LfQvdCw0YfQtdC90L3RjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW5jb3JyZWN0IGhhc2giCittc2dzdHIgItCg0L7Qt9GI0LjRgNC10L3QuNC5INCw0YLRgNC40LHRg9GCINC80LDRlCDQvdC10LrQvtGA0LXQutGC0L3RgyDRhdC10Ygt0YHRg9C80YMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgaGFzIGEgYmFkIGhlYWRlciIKK21zZ3N0ciAi0JHQu9C+0Log0YDQvtC30YjQuNGA0LXQvdC+0LPQviDQsNGC0YDQuNCx0YPRgtCwINC80LDRlCDQv9C+0LzQuNC70LrQvtCy0LjQuSDQt9Cw0LPQvtC70L7QstC+0LoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUga2V5IG5vdCBmb3VuZCIKK21zZ3N0ciAi0J3QtSDQt9C90LDQudC00LXQvdC+INC60LvRjtGH0LAg0YDQvtC30YjQuNGA0LXQvdC+0LPQviDQsNGC0YDQuNCx0YPRgtCwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc0Cittc2dpZCAiSW5zdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIgorbXNnc3RyICLQndC10LTQvtGB0YLQsNGC0L3RjNC+INC80ZbRgdGG0Y8g0LTQu9GPINC30LHQtdGA0ZbQs9Cw0L3QvdGPINC00LDQvdC40YUg0YDQvtC30YjQuNGA0LXQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc1Cittc2dpZCAiRmlsZXN5c3RlbSBpcyBtaXNzaW5nIGV4dF9hdHRyIG9yIGlubGluZV9kYXRhIGZlYXR1cmUiCittc2dzdHIgItCjINGE0LDQudC70L7QstGW0Lkg0YHQuNGB0YLQtdC80ZYg0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstC+0YHRgtGWIGV4dF9hdHRyINCw0LHQviBpbmxpbmVfZGF0YSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NgorbXNnaWQgIklub2RlIGRvZXNuJ3QgaGF2ZSBpbmxpbmUgZGF0YSIKK21zZ3N0ciAi0KMgaW5vZGUg0L3QtSDQvNGW0YHRgtC40YLRjNGB0Y8g0LLQsdGD0LTQvtCy0LDQvdC40YUg0LTQsNC90LjRhSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICLQndC10LzQsNGUINCx0LvQvtC60YMg0LTQu9GPIGlub2RlINGW0Lcg0LLQsdGD0LTQvtCy0LDQvdC40LzQuCDQtNCw0L3QuNC80LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGlubGluZSBkYXRhIgorbXNnc3RyICLQoyDQstCx0YPQtNC+0LLQsNC90LjRhSDQtNCw0L3QuNGFINC90LXQvNCw0ZQg0LLRltC70YzQvdC+0LPQviDQvNGW0YHRhtGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHRlbmRlZCBhdHRyaWJ1dGUgc3RydWN0dXJlIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INC00LvRjyDRgdGC0YDRg9C60YLRg9GA0Lgg0YDQvtC30YjQuNGA0LXQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICLQl9C00LDRlNGC0YzRgdGPLCBpbm9kZSDQvNGW0YHRgtC40YLRjCDQvNC+0YLQu9C+0YUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICLQoNC+0LfRiNC40YDQtdC90LjQuSDQsNGC0YDQuNCx0YPRgiDQvNCw0ZQg0L3QtdC60L7RgNC10LrRgtC90LjQuSDQstGW0LTRgdGC0YPQvyDQt9C90LDRh9C10L3QvdGPIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgyCittc2dpZCAiSm91cm5hbCBmbGFncyBpbmNvbnNpc3RlbnQiCittc2dzdHIgItCf0YDQsNC/0L7RgNGG0ZYg0LbRg9GA0L3QsNC70YMg0ZQg0L3QtdGD0LfQs9C+0LTQttC10L3QuNC80LgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODMKK21zZ2lkICJVbmRvIGZpbGUgY29ycnVwdCIKK21zZ3N0ciAi0KTQsNC50Lsg0YHQutCw0YHRg9Cy0LDQvdC90Y8g0LTRltC5INC/0L7RiNC60L7QtNC20LXQvdC+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg0Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQuNC5INGE0LDQudC7INGB0LrQsNGB0YPQstCw0L3QvdGPINC00ZbQuSDQtNC70Y8g0YbRltGU0Zcg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorbXNnaWQgIkZpbGUgc3lzdGVtIGlzIGNvcnJ1cHRlZCIKK21zZ3N0ciAi0KTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMg0L/QvtGI0LrQvtC00LbQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICLQoyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWINCy0LjRj9Cy0LvQtdC90L4g0L/QvtC80LjQu9C60L7QstC40LkgQ1JDIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg3Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICLQodGD0L/QtdGA0LHQu9C+0Log0LbRg9GA0L3QsNC70YMg0L/QvtGI0LrQvtC00LbQtdC90L4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgaXMgY29ycnVwdGVkIgorbXNnc3RyICJJbm9kZSDQt9C80ZbQvdC4INGA0L7Qt9C80ZbRgNGW0LIg0L/QvtGI0LrQvtC00LbQtdC90L4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTEKK21zZ2lkICJQcm9maWxlIHZlcnNpb24gMC4wIgorbXNnc3RyICLQktC10YDRgdGW0Y8g0L/RgNC+0YTRltC70Y4gMC4wIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEyCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfbm9kZSIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDRgyBwcm9maWxlX25vZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICLQoNC+0LfQtNGW0Lsg0L/RgNC+0YTRltC70Y4g0L3QtSDQt9C90LDQudC00LXQvdC+IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgItCX0LLigJnRj9C30L7QuiDQv9GA0L7RhNGW0LvRjiDQvdC1INC30L3QsNC50LTQtdC90L4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTUKK21zZ2lkICJBdHRlbXB0IHRvIGFkZCBhIHJlbGF0aW9uIHRvIG5vZGUgd2hpY2ggaXMgbm90IGEgc2VjdGlvbiIKK21zZ3N0ciAi0KHQv9GA0L7QsdCwINC00L7QtNCw0YLQuCDQt9Cy4oCZ0Y/Qt9C+0Log0LTQviDQstGD0LfQu9CwLCDRj9C60LjQuSDQvdC1INGUINGA0L7Qt9C00ZbQu9C+0LwiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgItCX0LDQs9C+0LvQvtCy0L7QuiDRgNC+0LfQtNGW0LvRgyDQv9GA0L7RhNGW0LvRjiDQvNGW0YHRgtC40YLRjCDQvdC10L3Rg9C70YzQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQuNC5INC30LLigJnRj9C30LDQvdC40Lkg0YHQv9C40YHQvtC6INGDINGB0YLRgNGD0LrRgtGD0YDQsNGFINC/0YDQvtGE0ZbQu9GOIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE4Cittc2dpZCAiQmFkIGdyb3VwIGxldmVsIGluIHByb2ZpbGUgc3RydWN0dXJlcyIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC40Lkg0LPRgNGD0L/QvtCy0LjQuSDRgNGW0LLQtdC90Ywg0YMg0YHRgtGA0YPQutGC0YPRgNCw0YUg0L/RgNC+0YTRltC70Y4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTkKK21zZ2lkICJCYWQgcGFyZW50IHBvaW50ZXIgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LjQuSDQsdCw0YLRjNC60ZbQstGB0YzQutC40Lkg0LLQutCw0LfRltCy0L3QuNC6INGDINGB0YLRgNGD0LrRgtGD0YDQsNGFINC/0YDQvtGE0ZbQu9GOIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGUgaXRlcmF0b3IiCittc2dzdHIgItCf0L7QvNC40LvQutC+0LLQtSDQt9C90LDRh9C10L3QvdGPINC60L7QvdGC0YDQvtC70YzQvdC+0Zcg0YHRg9C80Lgg0YMg0ZbRgtC10YDQsNGC0L7RgNGWINC/0YDQvtGE0ZbQu9GOIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIxCittc2dpZCAiQ2FuJ3Qgc2V0IHZhbHVlIG9uIHNlY3Rpb24gbm9kZSIKK21zZ3N0ciAi0J3QtSDQvNC+0LbQvdCwINCy0YHRgtCw0L3QvtCy0LvRjtCy0LDRgtC4INC30L3QsNGH0LXQvdC90Y8g0L3QsCDQstGD0LfQu9GWINGA0L7Qt9C00ZbQu9GDIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjIyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gcHJvZmlsZSBsaWJyYXJ5IgorbXNnc3RyICLQkdGW0LHQu9GW0L7RgtC10YbRliDQv9GA0L7RhNGW0LvRjiDQv9C10YDQtdC00LDQvdC+INC90LXQutC+0YDQtdC60YLQvdC40Lkg0LDRgNCz0YPQvNC10L3RgiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICLQodC/0YDQvtCx0LAg0LLQvdC10YHRgtC4INC30LzRltC90Lgg0LTQviDQv9GA0L7RhNGW0LvRjiwg0L/RgNC40LTQsNGC0L3QvtCz0L4g0LvQuNGI0LUg0LTQu9GPINGH0LjRgtCw0L3QvdGPIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI0Cittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIGhlYWRlciBub3QgYXQgdG9wIGxldmVsIgorbXNnc3RyICLQl9Cw0LPQvtC70L7QstC+0Log0YDQvtC30LTRltC70YMg0L/RgNC+0YTRltC70Y4g0L3QtSDQv9C10YDQtdCx0YPQstCw0ZQg0L3QsCDQvdCw0LnQstC40YnQvtC80YMg0YDRltCy0L3RliIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICLQodC40L3RgtCw0LrRgdC40YfQvdCwINC/0L7QvNC40LvQutCwINGDINC30LDQs9C+0LvQvtCy0LrRgyDRgNC+0LfQtNGW0LvRgyDQv9GA0L7RhNGW0LvRjiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICLQodC40L3RgtCw0LrRgdC40YfQvdCwINC/0L7QvNC40LvQutCwINGDINC30LDQv9C40YHRgyDQt9Cy4oCZ0Y/Qt9C60YMg0L/RgNC+0YTRltC70Y4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjcKK21zZ2lkICJFeHRyYSBjbG9zaW5nIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgItCX0LDQudCy0LAg0LfQsNCy0LXRgNGI0LDQu9GM0L3QsCDQtNGD0LbQutCwINGDINC/0YDQvtGE0ZbQu9GWIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI4Cittc2dpZCAiTWlzc2luZyBvcGVuIGJyYWNlIGluIHByb2ZpbGUiCittc2dzdHIgItCjINC/0YDQvtGE0ZbQu9GWINC90LUg0LLQuNGB0YLQsNGH0LDRlCDQv9C+0YfQsNGC0LrQvtCy0L7RlyDRhNGW0LPRg9GA0L3QvtGXINC00YPQttC60LgiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQutC+0L3RgtGA0L7Qu9GM0L3QvtGXINGB0YPQvNC4INGDIHByb2ZpbGVfdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlX3NlY3Rpb25fdCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LrQvtC90YLRgNC+0LvRjNC90L7RlyDRgdGD0LzQuCDRgyBwcm9maWxlX3NlY3Rpb25fdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMQorbXNnaWQgIkl0ZXJhdGlvbiB0aHJvdWdoIGFsbCB0b3AgbGV2ZWwgc2VjdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICLQhtGC0LXRgNCw0YbRltGPINGD0YHRltC80LAg0YDQvtC30LTRltC70LDQvNC4INCy0LXRgNGF0L3RjNC+0LPQviDRgNGW0LLQvdGPINC90LUg0L/RltC00YLRgNC40LzRg9GU0YLRjNGB0Y8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzIKK21zZ2lkICJJbnZhbGlkIHByb2ZpbGVfc2VjdGlvbiBvYmplY3QiCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0L7QseKAmdGU0LrRgiBwcm9maWxlX3NlY3Rpb24iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzMKK21zZ2lkICJObyBtb3JlIHNlY3Rpb25zIgorbXNnc3RyICLQkdGW0LvRjNGI0LUg0L3QtdC80LDRlCDRgNC+0LfQtNGW0LvRltCyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM0Cittc2dpZCAiQmFkIG5hbWVzZXQgcGFzc2VkIHRvIHF1ZXJ5IHJvdXRpbmUiCittc2dzdHIgItCf0ZbQtNC/0YDQvtCz0YDQsNC80ZYg0L7QsdGA0L7QsdC60Lgg0LfQsNC/0LjRgtGW0LIg0L/QtdGA0LXQtNCw0L3QviDQv9C+0LzQuNC70LrQvtCy0LjQuSDQvdCw0LHRltGAINC90LDQt9CyIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgItCd0LUg0LLRltC00LrRgNC40YLQviDQttC+0LTQvdC+0LPQviDRhNCw0LnQu9CwINC/0YDQvtGE0ZbQu9GOIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICLQn9C+0LzQuNC70LrQvtCy0LUg0LfQvdCw0YfQtdC90L3RjyDQvNCw0LPRltGH0L3QvtGXINGB0YPQvNC4INGDIHByb2ZpbGVfZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM3Cittc2dpZCAiQ291bGRuJ3Qgb3BlbiBwcm9maWxlIGZpbGUiCittc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0LLRltC00LrRgNC40YLQuCDRhNCw0LnQuyDQv9GA0L7RhNGW0LvRjiIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgItCg0L7Qt9C00ZbQuyDQstC20LUg0ZbRgdC90YPRlCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOQorbXNnaWQgIkludmFsaWQgYm9vbGVhbiB2YWx1ZSIKK21zZ3N0ciAi0J3QtdC60L7RgNC10LrRgtC90LUg0LHRg9C70LXQstC1INC30L3QsNGH0LXQvdC90Y8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDAKK21zZ2lkICJJbnZhbGlkIGludGVnZXIgdmFsdWUiCittc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC1INGG0ZbQu9C1INC30L3QsNGH0LXQvdC90Y8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAi0J/QvtC80LjQu9C60L7QstC1INC30L3QsNGH0LXQvdC90Y8g0LzQsNCz0ZbRh9C90L7RlyDRgdGD0LzQuCDRgyBwcm9maWxlX2ZpbGVfZGF0YV90IgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMgb24gJXMiCittc2dzdHIgIlx00LLQvtGB0YLQsNC90L3RlCDQt9C80L7QvdGC0L7QstCw0L3QviAlcywgJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHTQstC+0YHRgtCw0L3QvdGUINC30LzQvtC90YLQvtCy0LDQvdC+ICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRjcmVhdGVkIG9uICVzIgorbXNnc3RyICJcdNGB0YLQstC+0YDQtdC90L4gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExNgorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW9kaWZpZWQgb24gJXMiCittc2dzdHIgIlx00LLQvtGB0YLQsNC90L3RlCDQt9C80ZbQvdC10L3QviAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgItCX0L3QsNC50LTQtdC90L4g0YLQsNCx0LvQuNGG0Y4g0YDQvtC30LTRltC70ZbQsiAlcyDRgyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAi0KTQsNC50LvQsCAlcyDQvdC1INGW0YHQvdGD0ZQsINCwINGA0L7Qt9C80ZbRgCDQvdC1INCx0YPQu9C+INCy0LrQsNC30LDQvdC+LlxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgcmVndWxhciBmaWxlICVzXG4iCittc2dzdHIgItCh0YLQstC+0YDRjtGU0LzQviDQt9Cy0LjRh9Cw0LnQvdC40Lkg0YTQsNC50LsgJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINCy0ZbQtNC60YDQuNGC0LggJXM6ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyLQmdC80L7QstGW0YDQvdC+LCDQv9GA0LjRgdGC0YDQvtGOINC90LUg0ZbRgdC90YPRlC4g0KfQuCDQv9GA0LDQstC40LvRjNC90L4g0LLQuCDQudC+0LPQviDQstC60LDQt9Cw0LvQuD9cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyDQvdC1INGUINCx0LvQvtC60L7QstC40Lwg0YHQv9C10YbRltCw0LvRjNC90LjQvCDQv9GA0LjRgdGC0YDQvtGU0LwuXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjIzOAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICclcydcbiIKK21zZ3N0ciAiJXMg0LzRltGB0YLQuNGC0Ywg0YTQsNC50LvQvtCy0YMg0YHQuNGB0YLQtdC80YMgJXMg0Lcg0LzRltGC0LrQvtGOICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjI0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBhICVzIGZpbGUgc3lzdGVtXG4iCittc2dzdHIgIiVzINC80ZbRgdC40YLRjCDRhNCw0LnQu9C+0LLRgyDRgdC40YHRgtC10LzRgyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYCVzJyBkYXRhXG4iCittc2dzdHIgIiVzINC80ZbRgdGC0LjRgtGMINC00LDQvdGWIMKrJXPCu1xuIgorCisjfiBtc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCisjfiBtc2dzdHIgItCR0YPQtNGMINC70LDRgdC60LAsINC30LDQv9GD0YHRgtGW0YLRjCBlMmZzY2sg0LTQu9GPINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80LguXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICIiCisjfiAi0LTQu9GPIEBpICVpINCy0YHRgtCw0L3QvtCy0LvQtdC90L4g0L/RgNCw0L/QvtGA0LXRhtGMINGB0YLQuNGB0LrQsNC90L3RjyDRgyDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWLCDQtNC1ICIKKyN+ICLQv9GW0LTRgtGA0LjQvNC60Lgg0YHRgtC40YHQutCw0L3QvdGPINC90LUg0L/QtdGA0LXQtNCx0LDRh9C10L3Qvi4gICIKKworI34gbXNnaWQgIkBBIEBhIEBiICViLiAgIgorI34gbXNnc3RyICLQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGB0L/RgNC+0LHQuCDRgNC+0LfQvNGW0YnQtdC90L3RjyDQsdC70L7QutGDINGA0L7Qt9GI0LjRgNC10L3QvtCz0L4g0LDRgtGA0LjQsdGD0YLQsCAlYi4gICIKKworI34gbXNnaWQgIiVzOiB3YXJuaW5nOiBjb21wcmVzc2lvbiBzdXBwb3J0IGlzIGV4cGVyaW1lbnRhbC5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVzOiDQv9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INGC0LXRgdGC0YPQstCw0L3QvdGPINC/0ZbQtNGC0YDQuNC80LrQuCDRgdGC0LjRgdC60LDQvdC90Y8g0YnQtSDQvdC1INC30LDQstC10YDRiNC10L3QviAiCisjfiAiKNC10LrRgdC/0LXRgNC40LzQtdC90YLQsNC70YzQvdCwINC80L7QttC70LjQstGW0YHRgtGMKS5cbiIKKworI34gbXNnaWQgIiIKKyN+ICIlczogZTJmc2NrIG5vdCBjb21waWxlZCB3aXRoIEhUUkVFIHN1cHBvcnQsXG4iCisjfiAiXHRidXQgZmlsZXN5c3RlbSAlcyBoYXMgSFRSRUUgZGlyZWN0b3JpZXMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogZTJmc2NrINC90LUg0LHRg9C70L4g0LfRltCx0YDQsNC90L4g0Lcg0L/RltC00YLRgNC40LzQutC+0Y4gSFRSRUUsXG4iCisjfiAiXHTQstGC0ZbQvCwg0L3QsCDRhNCw0LnQu9C+0LLRltC5INGB0LjRgdGC0LXQvNGWICVzINGUINC60LDRgtCw0LvQvtCz0LggSFRSRUUuXG4iCisKKyN+IG1zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHplcm9pemluZyBidWZmZXIiCisjfiBtc2dzdHIgItC/0ZbQtCDRh9Cw0YEg0YDQvtC30LzRltGJ0LXQvdC90Y8g0YMg0L/QsNC84oCZ0Y/RgtGWINCx0YPRhNC10YDQsCDQt9Cw0L3Rg9C70LXQvdC90Y8iCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCDQvdC10LLQuNC60L7RgNC40YHRgtCw0L3QuNGFIGlub2RlICV1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVhZCB0aGUgZmlsZSBzeXN0ZW0gZGF0YSBcbiIKKyN+IG1zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQv9GA0L7Rh9C40YLQsNGC0Lgg0LTQsNC90ZYg0YTQsNC50LvQvtCy0L7RlyDRgdC40YHRgtC10LzQuCBcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfZmV0Y2ggJXNcbiIKKyN+IG1zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQstC40LrQvtC90LDRgtC4IHRkYl9mZXRjaCAlc1xuIgorCisjfiBtc2dpZCAiVGhlIGZpbGUgc3lzdGVtIFVVSUQgZGlkbid0IG1hdGNoIFxuIgorI34gbXNnc3RyICJVVUlEINGE0LDQudC70L7QstC+0Zcg0YHQuNGB0YLQtdC80Lgg0ZQg0L3QtdCy0ZbQtNC/0L7QstGW0LTQvdC40LwgXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdGRiX29wZW4gJXNcbiIKKyN+IG1zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQstC40LrQvtC90LDRgtC4IHRkYl9vcGVuICVzXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gb3BlbiAlc1xuIgorI34gbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINCy0ZbQtNC60YDQuNGC0LggJXNcbiIKKworI34gbXNnaWQgIlJlcGxheWVkIHRyYW5zYWN0aW9uIG9mIHNpemUgJXpkIGF0IGxvY2F0aW9uICVsbHVcbiIKKyN+IG1zZ3N0ciAi0JLRltC00YLQstC+0YDQtdC90L4g0L7Qv9C10YDQsNGG0ZbRjiDRgNC+0LfQvNGW0YDRgyAlemQg0LfQsCDQsNC00YDQtdGB0L7RjiAlbGx1XG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgd3JpdGUgJXNcbiIKKyN+IG1zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQt9Cw0L/QuNGB0LDRgtC4ICVzXG4iCisKKyN+IG1zZ2lkICJJbnZhbGlkIHF1b3RhdHlwZSBwYXJhbWV0ZXI6ICVzXG4iCisjfiBtc2dzdHIgItCd0LXQutC+0YDQtdC60YLQvdC40Lkg0L/QsNGA0LDQvNC10YLRgCBxdW90YXR5cGU6ICVzXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2UgcXVvdGEgb3B0aW9ucyFcbiIKKyN+IG1zZ3N0ciAiIgorI34gItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQvtCx0LvQsNGB0YLRjCDQv9Cw0LzigJnRj9GC0ZYg0LTQu9GPINC+0LHRgNC+0LHQutC4INC/0LDRgNCw0LzQtdGC0YDRltCyINC60LLQvtGC0YPQstCw0L3QvdGPIVxuIgorCisjfiBtc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZGIgZmlsZW5hbWVcbiIKKyN+IG1zZ3N0ciAiIgorI34gItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDQvtCx0LvQsNGB0YLRjCDQv9Cw0LzigJnRj9GC0ZYg0LTQu9GPINC30LHQtdGA0ZbQs9Cw0L3QvdGPINC90LDQt9Cy0Lgg0YTQsNC50LvQsCB0ZGJcbiIKKworI34gbXNnaWQgIiIKKyN+ICJUbyB1bmRvIHRoZSB0dW5lMmZzIG9wZXJhdGlvbiBwbGVhc2UgcnVuIHRoZSBjb21tYW5kXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAi0JTQu9GPINGB0LrQsNGB0YPQstCw0L3QvdGPINC00ZbRlyB0dW5lMmZzLCDQsdGD0LTRjCDQu9Cw0YHQutCwLCDQstGW0LTQtNCw0LnRgtC1INC60L7QvNCw0L3QtNGDXG4iCisjfiAiICAgIGUydW5kbyAlcyAlc1xuIgorI34gIlxuIgorCisjfiBtc2dpZCAiJXMgaXMgZW50aXJlIGRldmljZSwgbm90IGp1c3Qgb25lIHBhcnRpdGlvbiFcbiIKKyN+IG1zZ3N0ciAiJXMg0ZQg0YbRltC70LjQvCDQv9GA0LjRgdGC0YDQvtGU0LwsINCwINC90LUg0LvQuNGI0LUg0L7QtNC90LjQvCDRgNC+0LfQtNGW0LvQvtC8IVxuIgorCisjfiBtc2dpZCAiIgorI34gIlxiXGJcYlxiXGJcYlxiXGJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglbGx1JSUpIGluICVzIGF0ICUuMmYgTUIvIgorI34gInMgICAgICAgXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcYlxiXGJcYlxiXGJcYlxi0KHQutC+0L/RltC50L7QstCw0L3QviAlbGx1INC3ICVsbHUg0LHQu9C+0LrRltCyICglbGx1JSUpINC30LAgJXMg0LfRliAiCisjfiAi0YjQstC40LTQutGW0YHRgtGOICUuMmYg0JzQkS/RgVxuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIldhcm5pbmc6IHRoZSBxdW90YSBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisjfiAiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL1F1b3RhIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICLQn9C+0L/QtdGA0LXQtNC20LXQvdC90Y86INGA0L7Qt9GA0L7QsdC60YMg0ZYg0YLQtdGB0YLRg9Cy0LDQvdC90Y8g0LzQvtC20LvQuNCy0L7RgdGC0ZYgcXVvdGEg0YnQtSDQvdC1INC30LDQstC10YDRiNC10L3QvlxuIgorI34gItCU0L7QutC70LDQtNC90ZbRiNCwINGW0L3RhNC+0YDQvNCw0YbRltGPOiBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9RdW90YVxuIgorI34gIlxuIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJXMgLS0tICVzXG4iCisjfiBtc2dzdHIgItCd0LUg0LLQtNCw0LvQvtGB0Y8g0L7RgtGA0LjQvNCw0YLQuCDRgdGC0LDRgtC40YHRgtC40YfQvdGWINC00LDQvdGWINGJ0L7QtNC+ICVzIC0tLSAlc1xuIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3ZpLmdtbyBiL2UyZnNwcm9ncy9wby92aS5nbW8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E0NmQ5YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby92aS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3BvL3ZpLnBvIGIvZTJmc3Byb2dzL3BvL3ZpLnBvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MjY0ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcG8vdmkucG8KQEAgLTAsMCArMSw4NDczIEBACisjIFZpZXRuYW1lc2UgdHJhbnNsYXRpb24gZm9yIGUyZnNwcm9ncy4KKyMgQuG6o24gZOG7i2NoIHRp4bq/bmcgVmnhu4d0IGTDoG5oIGNobyBlMmZzcHJvZ3MuCisjIENvcHlyaWdodCDCqSAyMDE0IFRoZW9kb3JlIFRzbyAobXNnaWRzKQorIyBDb3B5cmlnaHQgwqkgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIyBDbHl0aWUgU2lkZGFsbCA8Y2x5dGllQHJpdmVybGFuZC5uZXQuYXU+LCAyMDA2LTIwMTAuCisjIFRy4bqnbiBOZ+G7jWMgUXXDom4gPHZud2lsZG1hbkBnbWFpbC5jb20+LCAyMDEyLTIwMTQuCisjCisjLiBUaGUgc3RyaW5ncyBpbiBlMmZzY2sncyBwcm9ibGVtLmMgY2FuIGJlIHZlcnkgaGFyZCB0byB0cmFuc2xhdGUsCisjLiBzaW5jZSB0aGUgc3RyaW5ncyBhcmUgZXhwYW5kZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzLiAgRmlyc3Qgb2YgYWxsLAorIy4gdGhlcmUgaXMgYW4gQC1leHBhbnNpb24sIHdoZXJlIHN0cmluZ3MgbGlrZSAiQGkiIGFyZSBleHBhbmRlZCB0bworIy4gImlub2RlIiwgYW5kIHNvIG9uLiAgSW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLCB0aGUKKyMuIGUyZnNwcm9ncyBwbyB0ZW1wbGF0ZSBmaWxlIGhhcyBiZWVuIGVuaGFuY2VkIHdpdGggY29tbWVudHMgdGhhdCBzaG93CisjLiB0aGUgQC1leHBhbnNpb24sIGZvciB0aGUgc3RyaW5ncyBpbiB0aGUgcHJvYmxlbS5jIGZpbGUuCisjLgorIy4gVHJhbnNsYXRvcnMgYXJlIGZyZWUgdG8gdXNlIHRoZSBALWV4cGFuc2lvbiBmYWNpbGl0eSBpZiB0aGV5IHNvCisjLiBjaG9vc2UsIGJ5IHByb3ZpZGluZyB0cmFuc2xhdGlvbnMgZm9yIHN0cmluZ3MgaW4gZTJmc2NrL21lc3NhZ2UuYy4KKyMuIFRoZXNlIHRyYW5zbGF0aW9uIGNhbiBjb21wbGV0ZWx5IHJlcGxhY2UgYW4gZXhwYW5zaW9uOyBmb3IgZXhhbXBsZSwKKyMuIGlmICJiYmxvY2siICh3aGljaCBpbmRpY2F0ZWQgdGhhdCAiQGIiIHdvdWxkIGJlIGV4cGFuZGVkIHRvICJibG9jayIpCisjLiBpcyB0cmFuc2xhdGVkIGFzICJkZGF0ZW52ZXJsdXN0IiwgdGhlbiAiQGQiIHdpbGwgYmUgZXhwYW5kZWQgdG8KKyMuICJkYXRlbnZlcmx1c3QiLiAgQWx0ZXJuYXRpdmVseSwgdHJhbnNsYXRvcnMgY2FuIHNpbXBseSBub3QgdXNlIHRoZQorIy4gQC1leHBhbnNpb24gZmFjaWxpdHkgYXQgYWxsLgorIy4KKyMuIFRoZSBzZWNvbmQgZXhwYW5zaW9uIHdoaWNoIGlzIGRvbmUgZm9yIGUyZnNjaydzIHByb2JsZW0uYyBtZXNzYWdlcyBpcworIy4gYSBkeW5hbWljICUtZXhwYW5zaW9uLCB3aGljaCBleHBhbmRzICVpIGFzIGFuIGlub2RlIG51bWJlciwgYW5kIHNvCisjLiBvbi4gIEEgdGFibGUgb2YgdGhlc2UgZXhwYW5zaW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuICBOb3RlIHRoYXQKKyMuICUtZXhwcmVzc2lvbnMgdGhhdCBiZWdpbiB3aXRoICIlRCIgYW5kICIlSSIgYXJlIHR3by1jaGFyYWN0ZXIKKyMuIGV4cGFuc2lvbnM7IHNvIGZvciBleGFtcGxlLCAiJUl1IiBleHBhbmRzIHRvIHRoZSBpbm9kZSdzIHVzZXIgaWQKKyMuIG93bmVyc2hpcCBmaWVsZCAoaW5vZGUtPmlfdWlkKS4gIEFsc28gdGhlICIlQiIgZXhwYW5zaW9uIGlzIHNwZWNpYWw6CisjLiBpdCBjYW4gZXhwYW5kIHRvIGVpdGhlciB0aGUgc3RyaW5nICJpbmRpcmVjdCBibG9jayIgKHBvc3NpYmx5IHByZWNlZGVkCisjLiBieSB0aGUgd29yZCAiZG91YmxlIiBvciAidHJpcGxlIiksIG9yIHRoZSBzdHJpbmcgImJsb2NrICMiIGltbWVkaWF0ZWx5CisjLiBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyIGluZGljYXRpbmcgYSBibG9jayBzZXF1ZW5jZSBudW1iZXIuCisjLiAgCisjLiAJJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyMuIAklQgkiaW5kaXJlY3QgYmxvY2siIHwgImJsb2NrICMiPGJsa2NvdW50PglzdHJpbmcgfCBzdHJpbmcraW50ZWdlcgorIy4gCSVjCTxibGsyPgkJCWJsb2NrIG51bWJlcgorIy4gCSVEaQk8ZGlyZW50PiAtPiBpbm8JCWlub2RlIG51bWJlcgorIy4gCSVEbgk8ZGlyZW50PiAtPiBuYW1lCXN0cmluZworIy4gCSVEcgk8ZGlyZW50PiAtPiByZWNfbGVuCisjLiAJJURsCTxkaXJlbnQ+IC0+IG5hbWVfbGVuCisjLiAJJUR0CTxkaXJlbnQ+IC0+IGZpbGV0eXBlCisjLiAJJWQJPGRpcj4gCQkJaW5vZGUgbnVtYmVyCisjLiAJJWcJPGdyb3VwPgkJCWludGVnZXIKKyMuIAklaQk8aW5vPgkJCWlub2RlIG51bWJlcgorIy4gCSVJcwk8aW5vZGU+IC0+IGlfc2l6ZQorIy4gCSVJUwk8aW5vZGU+IC0+IGlfZXh0cmFfaXNpemUKKyMuIAklSWIJPGlub2RlPiAtPiBpX2Jsb2NrcworIy4gCSVJbAk8aW5vZGU+IC0+IGlfbGlua3NfY291bnQKKyMuIAklSW0JPGlub2RlPiAtPiBpX21vZGUKKyMuIAklSU0JPGlub2RlPiAtPiBpX210aW1lCisjLiAJJUlGCTxpbm9kZT4gLT4gaV9mYWRkcgorIy4gCSVJZgk8aW5vZGU+IC0+IGlfZmlsZV9hY2wKKyMuIAklSWQJPGlub2RlPiAtPiBpX2Rpcl9hY2wKKyMuIAklSXUJPGlub2RlPiAtPiBpX3VpZAorIy4gCSVJZwk8aW5vZGU+IC0+IGlfZ2lkCisjLiAJJUl0CTxzdHI+CQkJZmlsZSB0eXBlCisjLiAJJWoJPGlubzI+CQkJaW5vZGUgbnVtYmVyCisjLiAJJW0JPGNvbV9lcnIgZXJyb3IgbWVzc2FnZT4KKyMuIAklTgk8bnVtPgorIy4gCSVwCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPgorIy4gCSVQCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIDxkaXJlbnQ+LT5pbm8gd2l0aCA8aW5vMj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuICAoSWYgZGlyZW50IGlzIE5VTEwKKyMuIAkJCQl0aGVuIHJldHVybiB0aGUgcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8yPikKKyMuIAklcQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGRpcj4KKyMuIAklUQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4gd2l0aCA8ZGlyPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4KKyMuIAklcwk8c3RyPgkJCW1pc2NlbGxhbmVvdXMgc3RyaW5nCisjLiAJJVMJCWJhY2t1cCBzdXBlcmJsb2NrCisjLiAJJVgJPG51bT4JaGV4YWRlY2ltYWwgZm9ybWF0CisjLgorbXNnaWQgIiIKK21zZ3N0ciAiIgorIlByb2plY3QtSWQtVmVyc2lvbjogZTJmc3Byb2dzIDEuNDIuMTItcHJlMlxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wOC0yNyAwNzozMyswNzAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBUcuG6p24gTmfhu41jIFF1w6JuIDx2bndpbGRtYW5AZ21haWwuY29tPlxuIgorIkxhbmd1YWdlLVRlYW06IFZpZXRuYW1lc2UgPHRyYW5zbGF0aW9uLXRlYW0tdmlAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgorIkxhbmd1YWdlOiB2aVxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MTsgcGx1cmFsPTA7XG4iCisiWC1MYW5ndWFnZS1UZWFtLVdlYnNpdGU6IDxodHRwOi8vdHJhbnNsYXRpb25wcm9qZWN0Lm9yZy90ZWFtL3ZpLmh0bWw+XG4iCisiWC1HZW5lcmF0b3I6IFBvZWRpdCAxLjUuNVxuIgorIlgtUG9lZGl0LVNvdXJjZUNoYXJzZXQ6IHV0Zi04XG4iCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzoyMyBtaXNjL21rZTJmcy5jOjIxNAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgYmxvY2sgJXUgb3V0IG9mIHJhbmdlOyBpZ25vcmVkLlxuIgorbXNnc3RyICJLaOG7kWkgaOG7j25nICV1IG7hurFtIG5nb8OgaSBwaOG6oW0gdmkgbsOqbiBi4buLIGLhu48gcXVhLlxuIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NDYKK21zZ2lkICJ3aGlsZSBzYW5pdHkgY2hlY2tpbmcgdGhlIGJhZCBibG9ja3MgaW5vZGUiCittc2dzdHIgInRyb25nIGtoaSBraeG7g20gdHJhIHPhu7EgxJHDum5nIG3hu7FjIG7DunQgdGjDtG5nIHRpbiBraOG7kWkgaOG7j25nIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NTgKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIG7DunQgdGjDtG5nIHRpbiBraOG7kWkgaOG7j25nIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6NzIgZTJmc2NrL3NjYW50ZXN0LmM6MTA3IGUyZnNjay91bml4LmM6MTUwOAorIzogZTJmc2NrL3VuaXguYzoxNjAxIG1pc2MvYmFkYmxvY2tzLmM6MTI0MiBtaXNjL2JhZGJsb2Nrcy5jOjEyNTAKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI2NCBtaXNjL2JhZGJsb2Nrcy5jOjEyNzYgbWlzYy9kdW1wZTJmcy5jOjY4OQorIzogbWlzYy9lMmltYWdlLmM6MTQwMCBtaXNjL2UyaW1hZ2UuYzoxNTg0IG1pc2MvZTJpbWFnZS5jOjE2MDUKKyM6IG1pc2MvbWtlMmZzLmM6MjMwIG1pc2MvdHVuZTJmcy5jOjI2OTMgbWlzYy90dW5lMmZzLmM6Mjc4NyByZXNpemUvbWFpbi5jOjQxMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgbeG7nyAlcyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyBwb3BlbiAnJXMnIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSBt4bufIHBvcGVuIOKAnCVz4oCdIgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6OTQgbWlzYy9ta2UyZnMuYzoyMzcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGluIGxpc3Qgb2YgYmFkIGJsb2NrcyBmcm9tIGZpbGUiCittc2dzdHIgInRyb25nIGtoaSDEkeG7jWMgdsOgbyBkYW5oIHPDoWNoIGPDoWMga2jhu5FpIGjhu49uZyB04burIHThuq1wIHRpbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEwNQorbXNnaWQgIndoaWxlIHVwZGF0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAidHJvbmcga2hpIGPhuq1wIG5o4bqtdCBuw7p0IHRow7RuZyB0aW4ga2jhu5FpIGjhu49uZyIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIiIKKyJD4bqjbmggYsOhbzogdMOsbSB0aOG6pXkga2jhu5FpICV1IGtow7RuZyBo4bujcCBs4buHIHRyb25nIG7DunQgdGjDtG5nIHRpbiBraOG7kWkgaOG7j25nIG7Dqm4gYuG7iyAiCisieG/DoS5cbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyBraOG7kWkgJWx1ICglcykgdHJvbmcga2hpICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu41jIGto4buRaSAlbHUgKCVzKS4gICIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjYgZTJmc2NrL2VoYW5kbGVyLmM6MTE1Cittc2dpZCAiSWdub3JlIGVycm9yIgorbXNnc3RyICJC4buPIHF1YSBs4buXaSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICLDiXAgYnXhu5ljIGdoaSBs4bqhaSIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgYmxvY2sgJWx1ICglcykgd2hpbGUgJXMuICAiCittc2dzdHIgIkfEg3AgbOG7l2kga2hpIGdoaSBraOG7kWkgJWx1ICglcykgdHJvbmcga2hpICVzLiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzoxMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd3JpdGluZyBibG9jayAlbHUgKCVzKS4gICIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGdoaSBraOG7kWkgJWx1ICglcykuICAiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjU3Cittc2dpZCAiZW1wdHkgZGlyYmxvY2tzIgorbXNnc3RyICJraOG7kWkgdGjGsCBt4bulYyBy4buXbmciCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjYyCittc2dpZCAiZW1wdHkgZGlyIG1hcCIKK21zZ3N0ciAiw6FuaCB44bqhIHRoxrAgbeG7pWMgcuG7l25nIgorCisjOiBlMmZzY2svZW1wdHlkaXIuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJFbXB0eSBkaXJlY3RvcnkgYmxvY2sgJXUgKCMlZCkgaW4gaW5vZGUgJXVcbiIKK21zZ3N0ciAiS2jhu5FpIHRoxrAgbeG7pWMgcuG7l25nICV1ICgjJWQpIHRyb25nIG7DunQgdGjDtG5nIHRpbiAldVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIGZpbGVuYW1lIG5ibG9ja3MgYmxvY2tzaXplXG4iCittc2dzdHIgIiVzOiAlcyB0w6puIHThuq1wIHRpbiAgc+G7kSBraOG7kWkgIGPhu6Ega2jhu5FpXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzo0NAorIywgYy1mb3JtYXQKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBvZiBibG9ja3MhXG4iCittc2dzdHIgIlPhu5Ega2jhu5FpIGtow7RuZyBo4bujcCBs4buHIVxuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgYmxvY2sgYnVmZmVyIChzaXplPSVkKVxuIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgY+G6pXAgcGjDoXQgYuG7mSDEkeG7h20ga2jhu5FpIChj4buhPSVkKVxuIgorCisjOiBlMmZzY2svZXh0ZW50cy5jOjQyCisjLCBmdXp6eQorbXNnaWQgImV4dGVudCByZWJ1aWxkIGlub2RlIG1hcCIKK21zZ3N0ciAiw6FuaCB44bqhIG7DunQgdGjDtG5nIHRpbiB04bqtcCB0aW4gY2h14bqpbiIKKworIzogZTJmc2NrL2ZsdXNoYi5jOjM1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBkaXNrXG4iCittc2dzdHIgIkPDoWNoIGTDuW5nOiAlcyDEkcSpYVxuIgorCisjOiBlMmZzY2svZmx1c2hiLmM6NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQkxLRkxTQlVGIGlvY3RsIG5vdCBzdXBwb3J0ZWQhICBDYW4ndCBmbHVzaCBidWZmZXJzLlxuIgorbXNnc3RyICIiCisiQkxLRkxTQlVGIGlvY3RsIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujLiBLaMO0bmcgdGjhu4MgxJHhuql5IGThu68gbGnhu4d1IGLhu5kgxJHhu4dtIGzDqm4gxJHEqWEuXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLUZdIFstSSBpbm9kZV9idWZmZXJfYmxvY2tzXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkPDoWNoIGTDuW5nOiAlcyBbLUZdIFstSSBraOG7kWlfxJHhu4dtX27DunRdIHRoaeG6v3RfYuG7i1xuIgorIlxuIgorCisjOiBlMmZzY2svaXNjYW4uYzo4MSBlMmZzY2svdW5peC5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyAlcyBmb3IgZmx1c2hpbmciCittc2dzdHIgInRyb25nIGtoaSBt4bufICVzIMSR4buDIMSR4bqpeSBk4buvIGxp4buHdSBsw6puIMSRxKlhIgorCisjOiBlMmZzY2svaXNjYW4uYzo4NiBlMmZzY2svdW5peC5jOjEwMzkgcmVzaXplL21haW4uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGZsdXNoICVzIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSDEkeG6qXkgZOG7ryBsaeG7h3UgJXMgbMOqbiDEkcSpYSIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciCittc2dzdHIgInRyb25nIGtoaSBj4buRIG3hu58g4oCcJXPigJ0iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAidHJvbmcga2hpIG3hu58gdmnhu4djIHF1w6l0IG7DunQgdGjDtG5nIHRpbiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTI3IG1pc2MvZTJpbWFnZS5jOjEzMTIKK21zZ2lkICJ3aGlsZSBnZXR0aW5nIG5leHQgaW5vZGUiCittc2dzdHIgInRyb25nIGtoaSBs4bqleSBuw7p0IHRow7RuZyB0aW4ga+G6vyB0aeG6v3AiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEzNgorIywgYy1mb3JtYXQKK21zZ2lkICIldSBpbm9kZXMgc2Nhbm5lZC5cbiIKK21zZ3N0ciAiJXUgbsO6dCB0aMO0bmcgdGluIMSRw6MgxJHGsOG7o2MgcXXDqXQuXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NTkzCittc2dpZCAicmVhZGluZyBqb3VybmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAixJFhbmcgxJHhu41jIHNpw6p1IGto4buRaSBuaOG6rXQga8O9XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6NjY2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBubyB2YWxpZCBqb3VybmFsIHN1cGVyYmxvY2sgZm91bmRcbiIKK21zZ3N0ciAiJXM6IGtow7RuZyB0w6xtIHRo4bqleSBzacOqdSBraOG7kWkgbmjhuq10IGvDvSBo4bujcCBs4buHXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6Njc1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBqb3VybmFsIHRvbyBzaG9ydFxuIgorbXNnc3RyICIlczogbmjhuq10IGvDvSBxdcOhIG5n4bqvblxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiJXM6IMSRYW5nIHBo4bulYyBo4buTaSBuaOG6rXQga8O9XG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3b24ndCBkbyBqb3VybmFsIHJlY292ZXJ5IHdoaWxlIHJlYWQtb25seVxuIgorbXNnc3RyICIlczogc+G6vSBraMO0bmcgcGjhu6VjIGjhu5NpIG5o4bqtdCBrw70gdHJvbmcga2hpIOG7nyBjaOG6vyDEkeG7mSBjaOG7iS3EkeG7jWNcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5OTcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlLW9wZW4gJXMiCittc2dzdHIgInRyb25nIGtoaSBj4buRIG3hu58gbOG6oWkgJXMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTEzCittc2dpZCAiYWV4dGVuZGVkIGF0dHJpYnV0ZSIKK21zZ3N0ciAiYXRodeG7mWMgdMOtbmggxJHDoyBt4bufIHLhu5luZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTQKK21zZ2lkICJBZXJyb3IgYWxsb2NhdGluZyIKK21zZ3N0ciAiQWfhurdwIGzhu5dpIGtoaSBj4bqlcCBwaMOhdCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTUKK21zZ2lkICJiYmxvY2siCittc2dzdHIgImJraOG7kWkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE2Cittc2dpZCAiQmJpdG1hcCIKK21zZ3N0ciAiQm3huqNuZyDhuqNuaCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTcKK21zZ2lkICJjY29tcHJlc3MiCittc2dzdHIgImNuw6luIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJDeHVuZyDEkeG7mXQgduG7m2kgQGIgY+G7p2EgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBraMOhYyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMTkKK21zZ2lkICJkZGlyZWN0b3J5IgorbXNnc3RyICJkdGjGsCBt4bulYyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjAKK21zZ2lkICJEZGVsZXRlZCIKK21zZ3N0ciAiRGLhu4sgeG/DoSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImVt4bulYyBuaOG6rXAiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkVAZSDigJwlRG7igJ0gdHJvbmcgJXAgKCVpKSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjMKK21zZ2lkICJmZmlsZXN5c3RlbSIKK21zZ3N0ciAiZmjhu4cgdGjhu5FuZyB04bqtcCB0aW4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI0Cittc2dpZCAiRmZvciBAaSAlaSAoJVEpIGlzIgorbXNnc3RyICJGY2hvIEBpICVpICglUSkgbMOgIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ25ow7NtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNgorbXNnaWQgImhIVFJFRSBAZCBAaSIKK21zZ3N0ciAiaEhUUkVFIEBkIEBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNworbXNnaWQgImlpbm9kZSIKK21zZ3N0ciAiaW7DunQgdGjDtG5nIHRpbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjgKK21zZ2lkICJJaWxsZWdhbCIKK21zZ3N0ciAiSWPhuqVtIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyOQorbXNnaWQgImpqb3VybmFsIgorbXNnc3RyICJqbmjhuq10IGvDvSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzAKK21zZ2lkICJsbG9zdCtmb3VuZCIKK21zZ3N0ciAibG3huqV0K3TDrG0iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMxCittc2dpZCAiTGlzIGEgbGluayIKK21zZ3N0ciAiTGzDoCBsacOqbiBr4bq/dCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzIKK21zZ2lkICJtbXVsdGlwbHktY2xhaW1lZCIKK21zZ3N0ciAibcSRYSB0dXnDqm4gYuG7kSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzMKK21zZ2lkICJuaW52YWxpZCIKK21zZ3N0ciAibmtow7RuZyBo4bujcCBs4buHIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNAorbXNnaWQgIm9vcnBoYW5lZCIKK21zZ3N0ciAib3Ro4burYSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzUKK21zZ2lkICJwcHJvYmxlbSBpbiIKK21zZ3N0ciAicHbhuqVuIMSR4buBIHRyb25nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNgorbXNnaWQgInFxdW90YSIKK21zZ3N0ciAicWjhuqFuIG5naOG6oWNoIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNworbXNnaWQgInJyb290IEBpIgorbXNnc3RyICJyQGkgZ+G7kWMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM4Cittc2dpZCAic3Nob3VsZCBiZSIKK21zZ3N0ciAic27Dqm4gbMOgIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOQorbXNnaWQgIlNzdXBlckBiIgorbXNnc3RyICJTc2nDqnVAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAidWNoxrBhLWfhuq9uIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MQorbXNnaWQgInZkZXZpY2UiCittc2dzdHIgInZ0aGnhur90LWLhu4siCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQyCittc2dpZCAieGV4dGVudCIKK21zZ3N0ciAieG3hu58tcuG7mW5nIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MworbXNnaWQgInp6ZXJvLWxlbmd0aCIKK21zZ3N0ciAiemTDoGkgYuG6sW5nIGtow7RuZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTQKK21zZ2lkICI8VGhlIE5VTEwgaW5vZGU+IgorbXNnc3RyICI8bsO6dCB0aMO0bmcgdGluIHbDtCBnacOhIHRy4buLPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTUKK21zZ2lkICI8VGhlIGJhZCBibG9ja3MgaW5vZGU+IgorbXNnc3RyICI8TsO6dCB0aMO0bmcgdGluIGto4buRaSBo4buPbmc+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NworbXNnaWQgIjxUaGUgdXNlciBxdW90YSBpbm9kZT4iCittc2dzdHIgIjxOw7p0IGjhuqFuIG5n4bqhY2ggbmfGsOG7nWkgZMO5bmc+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1OAorbXNnaWQgIjxUaGUgZ3JvdXAgcXVvdGEgaW5vZGU+IgorbXNnc3RyICI8TsO6dCBo4bqhbiBuZ+G6oWNoIG5ow7NtPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNTkKK21zZ2lkICI8VGhlIGJvb3QgbG9hZGVyIGlub2RlPiIKK21zZ3N0ciAiPE7DunQgdGjDtG5nIHRpbiBi4buZIG7huqFwIGto4bufaSDEkeG7mW5nPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjAKK21zZ2lkICI8VGhlIHVuZGVsZXRlIGRpcmVjdG9yeSBpbm9kZT4iCittc2dzdHIgIjxOw7p0IHRow7RuZyB0aW4gaOG7p3kgeG/DoSB0aMawIG3hu6VjPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjEKK21zZ2lkICI8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IgorbXNnc3RyICI8TsO6dCB0aMO0bmcgdGluIG3DtCB04bqjIG5ow7NtPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI8bsO6dCB0aMO0bmcgdGluIG5o4bqtdCBrw70+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MworbXNnaWQgIjxSZXNlcnZlZCBpbm9kZSA5PiIKK21zZ3N0ciAiPE7DunQgdGjDtG5nIHRpbiDEkcaw4bujYyBkw6BuaCByacOqbmcgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPG7DunQgdGjDtG5nIHRpbiDEkcaw4bujYyBkw6BuaCByacOqbmcgMTA+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzMworbXNnaWQgInJlZ3VsYXIgZmlsZSIKK21zZ3N0ciAidOG6rXAgdGluIHRoxrDhu51uZyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozMzUKK21zZ2lkICJkaXJlY3RvcnkiCittc2dzdHIgInRoxrAgbeG7pWMiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAidGhp4bq/dCBi4buLIGvDvSB04buxIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAidGhp4bq/dCBi4buLIGto4buRaSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDEKK21zZ2lkICJuYW1lZCBwaXBlIgorbXNnc3RyICLhu5FuZyBk4bqrbiBjw7MgdMOqbiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICJsacOqbiBr4bq/dCBt4buBbSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDUgbWlzYy91dWlkZC5jOjE2MgorbXNnaWQgInNvY2tldCIKK21zZ3N0ciAi4buVIGPhuq9tIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0NworIywgYy1mb3JtYXQKK21zZ2lkICJ1bmtub3duIGZpbGUgdHlwZSB3aXRoIG1vZGUgMCVvIgorbXNnc3RyICJraeG7g3UgdOG6rXAgdGluIGtow7RuZyByw7UgduG7m2kgY2jhur8gxJHhu5kgMCVvIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyMgorbXNnaWQgImluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJraOG7kWkgZ2nDoW4gdGnhur9wIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjQyNAorbXNnaWQgImRvdWJsZSBpbmRpcmVjdCBibG9jayIKK21zZ3N0ciAia2jhu5FpIGdpw6FuIHRp4bq/cCDEkcO0aSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgImto4buRaSBnacOhbiB0aeG6v3AgZ+G6pXAgYmEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDI4Cittc2dpZCAidHJhbnNsYXRvciBibG9jayIKK21zZ3N0ciAia2jhu5FpIGThu4tjaCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MzAKK21zZ2lkICJibG9jayAjIgorbXNnc3RyICJraOG7kWkgIyIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjIyMgorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgaW5vZGUgbWFwIgorbXNnc3RyICLDoW5oIHjhuqEgbsO6dCB0aMO0bmcgdGluIMSRYSB0dXnDqm4gYuG7kSIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjY0NSBlMmZzY2svcGFzczFiLmM6NzkzCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjYW4ndCBmaW5kIGR1cF9ibGsgZm9yICVsbHVcbiIKK21zZ3N0ciAibOG7l2kgbuG7mWkgYuG7mToga2jDtG5nIHTDrG0gdGjhuqV5IGto4buRaSB0csO5bmcgKGR1cF9ibGspIGNobyAlbGx1XG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgIsSRw6MgdHLhuqMgbOG6oWkgdOG7qyBraOG7kWkgdOG6rXAgdGluIG5ow6FpIChjbG9uZV9maWxlX2Jsb2NrKSIKKworIzogZTJmc2NrL3Bhc3MxYi5jOjkyNworIywgYy1mb3JtYXQKK21zZ2lkICJpbnRlcm5hbCBlcnJvcjogY291bGRuJ3QgbG9va3VwIEVBIGJsb2NrIHJlY29yZCBmb3IgJWxsdSIKK21zZ3N0ciAibOG7l2kgbuG7mWkgYuG7mToga2jDtG5nIHRo4buDIHRyYSB0w6xtIG3hu6VjIGdoaSBraOG7kWkgRUEgY2hvICVsbHUiCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBpbm9kZSByZWNvcmQgZm9yICV1IgorbXNnc3RyICJs4buXaSBu4buZaSBi4buZOiBraMO0bmcgdGjhu4MgdHJhIHTDrG0gbeG7pWMgZ2hpIG7DunQgdGjDtG5nIHRpbiBFQSBjaG8gJXUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjY2NiBlMmZzY2svcGFzczIuYzo5NzAKK21zZ2lkICJyZWFkaW5nIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAixJFhbmcgxJHhu41jIGto4buRaSB0aMawIG3hu6VjIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTExCittc2dpZCAiaW4tdXNlIGlub2RlIG1hcCIKK21zZ3N0ciAiw6FuaCB44bqhIG7DunQgdGjDtG5nIHRpbiDEkWFuZyDEkcaw4bujYyBkw7luZyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEyMgorbXNnaWQgImRpcmVjdG9yeSBpbm9kZSBtYXAiCittc2dzdHIgIsOhbmggeOG6oSBuw7p0IHRow7RuZyB0aW4gdGjGsCBt4bulYyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTEzMgorbXNnaWQgInJlZ3VsYXIgZmlsZSBpbm9kZSBtYXAiCittc2dzdHIgIsOhbmggeOG6oSBuw7p0IHRow7RuZyB0aW4gdOG6rXAgdGluIGNodeG6qW4iCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNDEgbWlzYy9lMmltYWdlLmM6MTI2OAorbXNnaWQgImluLXVzZSBibG9jayBtYXAiCittc2dzdHIgIsOhbmggeOG6oSBraOG7kWkgxJFhbmcgxJHGsOG7o2MgZMO5bmciCisKKyM6IGUyZnNjay9wYXNzMS5jOjExNTAKKyMsIGZ1enp5Cittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICJraOG7kWkgc2nDqnVfZOG7r19saeG7h3UiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgIsSRYW5nIG3hu58gYuG6o24gcXXDqXQgbsO6dCB0aMO0bmcgdGluIgorCisjOiBlMmZzY2svcGFzczEuYzoxMjQ3Cittc2dpZCAiZ2V0dGluZyBuZXh0IGlub2RlIGZyb20gc2NhbiIKK21zZ3N0ciAixJFhbmcgbOG6pXkgbsO6dCB0aMO0bmcgdGluIGvhur8gdGnhur9wIHThu6sgYuG6o24gcXXDqXQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIkzhuqduIDEiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAicmVhZGluZyBpbmRpcmVjdCBibG9ja3Mgb2YgaW5vZGUgJXUiCittc2dzdHIgIsSRYW5nIMSR4buNYyBraOG7kWkgZ2nDoW4gdGnhur9wIGPhu6dhIG7DunQgdGjDtG5nIHRpbiAldSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjA0NAorbXNnaWQgImJhZCBpbm9kZSBtYXAiCittc2dzdHIgIsOhbmggeOG6oSBuw7p0IHRow7RuZyB0aW4gc2FpIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAibsO6dCB0aMO0bmcgdGluIHRyb25nIMOhbmggeOG6oSBraOG7kWkgc2FpIgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAiw6FuaCB44bqhIG7DunQgdGjDtG5nIHRpbiBtYSB0aHXhuq10IGltYWdpYyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjEzMQorbXNnaWQgIm11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwIgorbXNnc3RyICLDoW5oIHjhuqEga2jhu5FpIMSRYSB0dXnDqm4gYuG7kSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MjI0NQorbXNnaWQgImV4dCBhdHRyIGJsb2NrIG1hcCIKK21zZ3N0ciAiw6FuaCB44bqhIGto4buRaSBleHQgYXR0ciAodGh14buZYyB0w61uaCB0aMOqbT8pIgorCisjOiBlMmZzY2svcGFzczEuYzozNDEyCisjLCBjLWZvcm1hdAorbXNnaWQgIiU2bHUoJWMpOiBleHBlY3RpbmcgJTZsdSBnb3QgcGh5cyAlNmx1IChibGtjbnQgJWxsZClcbiIKK21zZ3N0ciAiJTZsdSAoJWMpOiBj4bqnbiAlNmx1IG5oxrBuZyBs4bqhaSBuaOG6rW4gxJHGsOG7o2MgJTZsdSB24bqtdCBsw70gKMSR4bq/bSBraOG7kWkgJWxsZClcbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgyNworbXNnaWQgImJsb2NrIGJpdG1hcCIKK21zZ3N0ciAibeG6o25nIOG6o25oIGto4buRaSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzMworbXNnaWQgImlub2RlIGJpdG1hcCIKK21zZ3N0ciAibeG6o25nIOG6o25oIG7DunQgdGjDtG5nIHRpbiIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJi4bqjbmcgbsO6dCB0aMO0bmcgdGluIgorCisjOiBlMmZzY2svcGFzczIuYzoyODcKK21zZ2lkICJQYXNzIDIiCittc2dzdHIgIkzhuqduIDIiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgdGnhur9wIHThu6VjLiIKKworIzogZTJmc2NrL3Bhc3MzLmM6NzcKK21zZ2lkICJpbm9kZSBkb25lIGJpdG1hcCIKK21zZ3N0ciAibeG6o25nIOG6o25oIG7DunQgdGjDtG5nIHRpbiBob8OgbiB04bqldCIKKworIzogZTJmc2NrL3Bhc3MzLmM6ODYKK21zZ2lkICJQZWFrIG1lbW9yeSIKK21zZ3N0ciAiQuG7mSBuaOG7myBjYW8gxJFp4buDbSIKKworIzogZTJmc2NrL3Bhc3MzLmM6MTQ5Cittc2dpZCAiUGFzcyAzIgorbXNnc3RyICJM4bqnbiAzIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgIm3huqNuZyDhuqNuaCBwaMOhdCBoaeG7h24gdsOybmcgbOG6t3AgbsO6dCB0aMO0bmcgdGluIgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIkzhuqduIDQiCisKKyM6IGUyZnNjay9wYXNzNS5jOjgxCittc2dpZCAiUGFzcyA1IgorbXNnc3RyICJM4bqnbiA1IgorCisjOiBlMmZzY2svcGFzczUuYzoxMDQKK21zZ2lkICJjaGVja19pbm9kZV9iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9wYXNzNS5jOjE1OAorbXNnaWQgImNoZWNrX2Jsb2NrX2JpdG1hcF9jaGVja3N1bTogTWVtb3J5IGFsbG9jYXRpb24gZXJyb3IiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MQorbXNnaWQgIihubyBwcm9tcHQpIgorbXNnc3RyICIoa2jDtG5nIG5o4bqvYykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTIKK21zZ2lkICJGaXgiCittc2dzdHIgIlPhu61hIGNo4buvYSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1MworbXNnaWQgIkNsZWFyIgorbXNnc3RyICJYb8OhIHPhuqFjaCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NAorbXNnaWQgIlJlbG9jYXRlIgorbXNnc3RyICLEkOG7i25oIHbhu4sgbOG6oWkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTUKK21zZ2lkICJBbGxvY2F0ZSIKK21zZ3N0ciAiQ+G6pXAgcGjDoXQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIk3hu58gcuG7mW5nIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3Cittc2dpZCAiQ29ubmVjdCB0byAvbG9zdCtmb3VuZCIKK21zZ3N0ciAiS+G6v3QgbuG7kWkgxJHhur9uIC9t4bqldCt0w6xtIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4Cittc2dpZCAiQ3JlYXRlIgorbXNnc3RyICJU4bqhbyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OQorbXNnaWQgIlNhbHZhZ2UiCittc2dzdHIgIkPhu6l1IHbhu5t0IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIkPhuq90IG5n4bqvbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICJYb8OhIHPhuqFjaCBuw7p0IHRow7RuZyB0aW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIKK21zZ2lkICJBYm9ydCIKK21zZ3N0ciAiSOG7p3kgYuG7jyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MworbXNnaWQgIlNwbGl0IgorbXNnc3RyICJDaGlhIHTDoWNoIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIlRp4bq/cCB04bulYyIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICJOaMOibiBi4bqjbiBjw6FjIGto4buRaSDEkWEgdHV5w6puIGLhu5EiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAiWG/DoSB04bqtcCB0aW4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjcKK21zZ2lkICJTdXBwcmVzcyBtZXNzYWdlcyIKK21zZ3N0ciAiVGh1IGjhu5NpIHRow7RuZyDEkWnhu4dwIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4Cittc2dpZCAiVW5saW5rIgorbXNnc3RyICJC4buPIGxpw6puIGvhur90IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIlhvw6Egc+G6oWNoIGNo4buJIG3hu6VjIGhIVFJFRSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3MAorbXNnaWQgIlJlY3JlYXRlIgorbXNnc3RyICJU4bqhbyBs4bqhaSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAiKEtIw5RORykiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODAKK21zZ2lkICJGSVhFRCIKK21zZ3N0ciAixJDDgyBT4busQSBDSOG7rkEiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODEKK21zZ2lkICJDTEVBUkVEIgorbXNnc3RyICLEkMODIFhPw4EgU+G6oENIIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyCittc2dpZCAiUkVMT0NBVEVEIgorbXNnc3RyICLEkMODIMSQ4buKTkggVuG7iiBM4bqgSSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MworbXNnaWQgIkFMTE9DQVRFRCIKK21zZ3N0ciAixJDDgyBD4bqkUCBQSMOBVCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NAorbXNnaWQgIkVYUEFOREVEIgorbXNnc3RyICLEkMODIE3hu54gUuG7mE5HIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIsSQw4MgS+G6vlQgTuG7kEkgTOG6oEkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODYKK21zZ2lkICJDUkVBVEVEIgorbXNnc3RyICLEkMODIFThuqBPIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg3Cittc2dpZCAiU0FMVkFHRUQiCittc2dzdHIgIsSQw4MgQ+G7qFUgVuG7mlQiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIsSQw4MgQ+G6rlQgTkfhuq5OIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5Cittc2dpZCAiSU5PREUgQ0xFQVJFRCIKK21zZ3N0ciAiTsOaVCBUSMOUTkcgVElOIMSQw4MgWE/DgSBT4bqgQ0giCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTAKK21zZ2lkICJBQk9SVEVEIgorbXNnc3RyICJC4buKIEjhu6ZZIELhu44iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTEKK21zZ2lkICJTUExJVCIKK21zZ3N0ciAixJDDgyBDSElBIFTDgUNIIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyCittc2dpZCAiQ09OVElOVUlORyIKK21zZ3N0ciAixJBBTkcgVEnhur5QIFThu6RDIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzCittc2dpZCAiTVVMVElQTFktQ0xBSU1FRCBCTE9DS1MgQ0xPTkVEIgorbXNnc3RyICJDw4FDIEtI4buQSSDEkEEgVFVZw4pOIELhu5AgxJDDgyDEkMav4buiQyBOSMOBSSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAiVOG6rFAgVElOIMSQw4MgQuG7iiBYw5NBIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAiQuG7iiBUSFUgSOG7kkkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTYKK21zZ2lkICJVTkxJTktFRCIKK21zZ3N0ciAiQuG7iiBC4buOIExJw4pOIEvhur5UIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk3Cittc2dpZCAiSFRSRUUgSU5ERVggQ0xFQVJFRCIKK21zZ3N0ciAiQ0jhu4ggTeG7pEMgSFRSRUUgxJDDgyDEkMav4buiQyBYT8OBIFPhuqBDSCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5OAorbXNnaWQgIldJTEwgUkVDUkVBVEUiCittc2dzdHIgIlPhurwgVOG6oE8gTOG6oEkiCisKKyMuIEAtZXhwYW5kZWQ6IGJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMAorbXNnaWQgIkBiIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIkBiIEBCIGNobyBAZyAlZyBraMO0bmcgcGjhuqNpIHRyb25nIEBnLiAgKEBiICViKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQKK21zZ2lkICJAaSBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJAaSBAQiBjaG8gQGcgJWcga2jDtG5nIHBo4bqjaSB0cm9uZyBAZy4gIChAYiAlYilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgdGFibGUgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIy4gQC1leHBhbmRlZDogV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTkKK21zZ2lkICIiCisiQGkgdGFibGUgZm9yIEBnICVnIGlzIG5vdCBpbiBAZy4gIChAYiAlYilcbiIKKyJXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLlxuIgorbXNnc3RyICIiCisiQuG6o25nIEBpIGNobyBAZyAlZyBraMO0bmcgcGjhuqNpIHRyb25nIEBnLiAgKEBiICViKVxuIgorIkPhuqJOSCBCw4FPOiBDw5MgVEjhu4IgTeG6pFQgROG7riBMSeG7hlUgTkhJ4buAVS5cbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9ja1xuCisjLiBALWV4cGFuZGVkOiBpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOlxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogIG9yXG4KKyMuIEAtZXhwYW5kZWQ6ICAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1Cittc2dpZCAiIgorIlxuIgorIlRoZSBAUyBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4iCisiQGYuICBJZiB0aGUgQHYgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NFxuIgorIkBmIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgQFNcbiIKKyJpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBAUzpcbiIKKyIgICAgZTJmc2NrIC1iIDgxOTMgPEB2PlxuIgorIiBvclxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQFMga2jDtG5nIHRo4buDIMSR4buNYyDEkcaw4bujYyBob+G6t2Mga2jDtG5nIGRp4buFbiB04bqjIEBmIGtp4buDdSBleHQyIMSRw7puZy5cbiIKKyJAdiBo4bujcCBs4buHLiBO4bq/dSBAdiBsw6AgaOG7o3AgbOG7hyB2w6AgbsOzIMSRw6Mgc+G6tW4gY2jhu6lhIG3hu5l0IEBmIGtp4buDdSBleHQyL2V4dDMvZXh0NFxuIgorIih2w6Aga2jDtG5nIHBo4bqjaSB2w7luZyB0cmFvIMSR4buVaSBoYXkgdWZzIGhheSBnw6wga2jDoWMpLCB0aOG6vyB0aMOsIEBTXG4iCisiYuG7iyBo4buPbmc6IHRo4bq/IHRow6wgYuG6oW4gbsOqbiB0aOG7rSBjaOG6oXkgZTJmc2NrIHbhu5tpIEBTIHRoYXkgdGjhur86XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgaG/hurdjXG4iCisiICAgIGUyZnNjayAtYiAzMjc2OCA8QHY+XG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBmaWxlc3lzdGVtIHNpemUgKGFjY29yZGluZyB0byB0aGUgc3VwZXJibG9jaykgaXMgJWIgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBkZXZpY2UgaXMgJWMgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IEVpdGhlciB0aGUgc3VwZXJibG9jayBvciB0aGUgcGFydGl0aW9uIHRhYmxlIGlzIGxpa2VseSB0byBiZSBjb3JydXB0IVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNgorbXNnaWQgIiIKKyJUaGUgQGYgc2l6ZSAoYWNjb3JkaW5nIHRvIHRoZSBAUykgaXMgJWIgQGJzXG4iCisiVGhlIHBoeXNpY2FsIHNpemUgb2YgdGhlIEB2IGlzICVjIEBic1xuIgorIkVpdGhlciB0aGUgQFMgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbiIKK21zZ3N0ciAiIgorIkvDrWNoIGPhu6EgQGYgKHTDuXkgdGhlbyBAUykgbMOgICViIEBiXG4iCisiS8OtY2ggY+G7oSB24bqtdCBsw70gY+G7p2EgQHYgbMOgICVjIEBiXG4iCisiSG/hurdjIEBTIGhv4bq3YyBi4bqjbmcgcGjDom4gdsO5bmcgcuG6pXQgY8OzIHRo4buDIGLhu4sgaOG7j25nLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2NrX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbgorIy4gQC1leHBhbmRlZDogVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuCisjLiBALWV4cGFuZGVkOiBmcm9tIHRoZSBibG9jayBzaXplLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MworbXNnaWQgIiIKKyJAUyBAYl9zaXplID0gJWIsIGZyYWdzaXplID0gJWMuXG4iCisiVGhpcyB2ZXJzaW9uIG9mIGUyZnNjayBkb2VzIG5vdCBzdXBwb3J0IGZyYWdtZW50IHNpemVzIGRpZmZlcmVudFxuIgorImZyb20gdGhlIEBiIHNpemUuXG4iCittc2dzdHIgIiIKKyJAUyBrw61jaCBj4buhIEBiID0gJWIsIGvDrWNoIGPhu6EgxJFv4bqhbiA9ICVjLlxuIgorIlBoacOqbiBi4bqjbiBlMmZzY2sgbsOgeSBraMO0bmcgaOG7lyB0cuG7oyBrw61jaCBj4buhIMSRb+G6oW5cbiIKKyJraMOhYyB24bubaSBrw61jaCBj4buhIEBiLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGJsb2Nrc19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MAorbXNnaWQgIkBTIEBic19wZXJfZ3JvdXAgPSAlYiwgc2hvdWxkIGhhdmUgYmVlbiAlY1xuIgorbXNnc3RyICJAUyBAYiBt4buXaSBuaMOzbSA9ICViLCBjw7JuIG7Dqm4gbMOgICVjXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkBTIEBiIGThu68gbGnhu4d1IHRo4bupIG5o4bqldCA9ICViLCBuw6puIGzDoCAlY1xuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAKK21zZ2lkICIiCisiQGYgZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJAZiBraMO0bmcgY8OzIFVVSUQgbsOqbiDEkWFuZyB04bqhbyByYSBuw7MuXG4iCisiXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJOb3RlOiBpZiBzZXZlcmFsIGlub2RlIG9yIGJsb2NrIGJpdG1hcCBibG9ja3Mgb3IgcGFydFxuIgorIm9mIHRoZSBpbm9kZSB0YWJsZSByZXF1aXJlIHJlbG9jYXRpb24sIHlvdSBtYXkgd2lzaCB0byB0cnlcbiIKKyJydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgJVMnIG9wdGlvbiBmaXJzdC4gIFRoZSBwcm9ibGVtXG4iCisibWF5IGxpZSBvbmx5IHdpdGggdGhlIHByaW1hcnkgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMsIGFuZFxuIgorInRoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLlxuIgorIlxuIgorbXNnc3RyICIiCisiR2hpIGNow7o6IG7hur91IHbDoGkga2jhu5FpIG7DunQgdGjDtG5nIHRpbiBoYXkga2jhu5FpIG3huqNuZyDhuqNuaCBraOG7kWlcbiIKKyJoYXkgcGjhuqduIGPhu6dhIGLhuqNuZyBuw7p0IHRow7RuZyB0aW4gY+G6p24gdGhp4bq/dCDEkcaw4bujYyDEkeG7i25oIHbhu4sgbOG6oWksXG4iCisixJHhu4Egbmdo4buLIGLhuqFuIHRo4butIGNo4bqheSBlMmZzY2sgduG7m2kgdMO5eSBjaOG7jW4g4oCcLWIgJVPigJ1cbiIKKyJ0csaw4bubYyB0acOqbi4gVuG6pW4gxJHhu4EgY8OzIHRo4buDIG7hurFtIGNo4buJIHRyb25nIGPDoWMgbcO0IHThuqMgbmjDs21cbiIKKyJraOG7kWkgY2jDrW5oLCB0aMOsIGPDoWMgbcO0IHThuqMgbmjDs20ga2jhu5FpIGThu7EgdHLhu68gY8OzIHRo4buDIGzDoCDEkcO6bmcuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENvcnJ1cHRpb24gZm91bmQgaW4gc3VwZXJibG9jay4gICglcyA9ICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzQKK21zZ2lkICJDb3JydXB0aW9uIGZvdW5kIGluIEBTLiAgKCVzID0gJU4pLlxuIgorbXNnc3RyICJUw6xtIHRo4bqleSBoxrAgaOG7j25nIHRyb25nIEBTLiAgKCVzID0gJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZXRlcm1pbmluZyBzaXplIG9mIHRoZSBwaHlzaWNhbCBkZXZpY2U6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIEB2OiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgeMOhYyDEkeG7i25oIGvDrWNoIGPhu6EgY+G7p2EgQHYgduG6rXQgbMO9OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBjb3VudCBpbiBzdXBlcmJsb2NrIGlzICVpLCBzaG91bGQgYmUgJWouXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0Cittc2dpZCAiQGkgY291bnQgaW4gQFMgaXMgJWksIEBzICVqLlxuIgorbXNnc3RyICJT4buRIGzGsOG7o25nIEBpIHRyb25nIEBTIGzDoCAlaSwgQHMgJWouXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg4Cittc2dpZCAiVGhlIEh1cmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCBraMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyBraeG7g3UgdOG6rXAgdGluLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlICVpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQFMgaGFzIGFuIEBuIEBqIChAaSAlaSkuXG4iCittc2dzdHIgIkBTIGPDsyBt4buZdCBAbiBAaiAoQGkgJWkpLlxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIkBqIGLDqm4gbmdvw6BpIGPDsyBuaGnhu4F1IG5nxrDhu51pIGTDuW5nIEBmIChraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oykuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbid0IGZpbmQgZXh0ZXJuYWwgam91cm5hbFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMworbXNnaWQgIkNhbid0IGZpbmQgZXh0ZXJuYWwgQGpcbiIKK21zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IEBqIGLDqm4gbmdvw6BpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgaGFzIGJhZCBzdXBlcmJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjA4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIGJhZCBAU1xuIgorbXNnc3RyICJAaiBiw6puIG5nb8OgaSBjw7MgQFMgc2FpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGZpbGVzeXN0ZW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTMKK21zZ2lkICJFeHRlcm5hbCBAaiBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgQGZcbiIKK21zZ3N0ciAiQGogYsOqbiBuZ2/DoGkga2jDtG5nIGjhu5cgdHLhu6MgQGYgbsOgeVxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGpvdXJuYWwgc3VwZXJibG9jayBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbgorIy4gQC1leHBhbmRlZDogSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGpvdXJuYWwgCisjLiBALWV4cGFuZGVkOiBmb3JtYXQuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGFsc28gcG9zc2libGUgdGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIxOAorbXNnaWQgIiIKKyJAZiBAaiBAUyBpcyB1bmtub3duIHR5cGUgJU4gKHVuc3VwcG9ydGVkKS5cbiIKKyJJdCBpcyBsaWtlbHkgdGhhdCB5b3VyIGNvcHkgb2YgZTJmc2NrIGlzIG9sZCBhbmQvb3IgZG9lc24ndCBzdXBwb3J0IHRoaXMgQGogIgorImZvcm1hdC5cbiIKKyJJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICIiCisiQFMgQGogQGYgY8OzIGtp4buDdSBs4bqhICVOIChraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oykuXG4iCisiUuG6pXQgY8OzIHRo4buDIGzDoCBi4bqhbiBjw7MgbeG7mXQgYuG6o24gc2FvIGUyZnNjayBjxakgbcOgL2hheSBraMO0bmcgaOG7lyB0cuG7oyDEkeG7i25oIGThuqFuZyBAaiAiCisibsOgeS5cbiIKKyJDxaluZyBjw7MgdGjhu4MgbMOgIEBTIEBqIGLhu4sgaOG7j25nLlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJAUyBAaiBi4buLIGjhu49uZy5cbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXNfam91cm5hbCBmbGFnIGlzIGNsZWFyLCBidXQgYSBqb3VybmFsIGlzIHByZXNlbnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjMxCittc2dpZCAiQFMgaGFzX0BqIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIkPhu50gQFMgaGFzX0BqIHbhuqtuIHThu5F0LCBuaMawbmcgbOG6oWkgY8OzIG3hu5l0IEBqIGhp4buHbiBkaeG7h24g4bufIMSRw6J5LlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzNgorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LCBidXQgbm8gQGogaXMgcHJlc2VudC5cbiIKK21zZ3N0ciAiQFMgxJHhurd0IGPhu50gbmVlZHNfcmVjb3ZlcnksIGPDsm4ga2jDtG5nIGPDsyBAaiBoaeG7h24gZGnhu4duLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBqb3VybmFsIGhhcyBkYXRhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0MQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAiQ+G7nSBAUyBuZWVkc19yZWNvdmVyeSB24bqrbiB04buRdCwgbmjGsG5nIEBqIGzhuqFpIGPDsyBk4buvIGxp4buHdS5cbiIKKworIy4gQC1leHBhbmRlZDogQ2xlYXIgam91cm5hbAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNDYKK21zZ2lkICJDbGVhciBAaiIKK21zZ3N0ciAiWG/DoSBz4bqhY2ggQGoiCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gaGFzIGZlYXR1cmUgZmxhZyhzKSBzZXQsIGJ1dCBpcyBhIHJldmlzaW9uIDAgZmlsZXN5c3RlbS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTEgZTJmc2NrL3Byb2JsZW0uYzo3NDQKK21zZ2lkICJAZiBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBAZi4gICIKK21zZ3N0ciAiQGYgxJHhurd0IChjw6FjKSBj4budIHTDrW5oIG7Eg25nLCBjw7JuIGzDoCBAZiBi4bqjbiBz4butYSDEkeG7lWkgMC4iCisKKyMuIEAtZXhwYW5kZWQ6ICVzIG9ycGhhbmVkIGlub2RlICVpICh1aWQ9JUl1LCBnaWQ9JUlnLCBtb2RlPSVJbSwgc2l6ZT0lSXMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjU2Cittc2dpZCAiJXMgQG8gQGkgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbiIKK21zZ3N0ciAiQGkgQG8gJXMgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIGNo4bq/IMSR4buZPSVJbSwgY+G7oT0lSXMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBmb3VuZCBpbiBvcnBoYW5lZCBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNjEKK21zZ2lkICJASSAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICIlQiAoJWIpIEBsIMSRxrDhu6NjIHTDrG0gdHJvbmcgQGkgQG8gJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2NgorbXNnaWQgIkFscmVhZHkgY2xlYXJlZCAlQiAoJWIpIGZvdW5kIGluIEBvIEBpICVpLlxuIgorbXNnc3RyICLEkMOjIHhvw6Egc+G6oWNoICVCICglYikgxJHGsOG7o2MgdMOsbSB0cm9uZyBAaSBAbyAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAbyBAaSAlaSBpbiBAUy5cbiIKK21zZ3N0ciAiQGkgQG8gJWkgQGwgdHJvbmcgQFMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgaW5vZGUgJWkgaW4gb3JwaGFuZWQgaW5vZGUgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKK21zZ3N0ciAiQEkgQGkgJWkgaW4gQG8gQGkgbGlzdC5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4MQorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIHJlYWQtb25seSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICJAUyBAaiDEkeG6t3QgbeG7mXQgY+G7nSB0w61uaCBuxINuZyBjaOG7iSDEkeG7jWMga2jDtG5nIHLDtS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICJAUyBAaiDEkeG6t3QgbeG7mXQgY+G7nSB0w61uaCBuxINuZyBraMO0bmcgdMawxqFuZyB0aMOtY2gga2jDtG5nIHLDtS5cbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBlMmZzY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjkxCittc2dpZCAiQGogdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuIgorbXNnc3RyICJQaGnDqm4gYuG6o24gQGoga2jDtG5nIGjhu5cgdHLhu6MgdHJvbmcgZTJmc2NrIG7DoHkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1vdmluZyBqb3VybmFsIGZyb20gLyVzIHRvIGhpZGRlbiBpbm9kZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Mjk2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNb3ZpbmcgQGogZnJvbSAvJXMgdG8gaGlkZGVuIEBpLlxuIgorIlxuIgorbXNnc3RyICIiCisixJBhbmcgZGkgY2h1eeG7g24gQGogdOG7qyAvJXMgc2FuZyBAaSDhuqluLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBtb3Zpbmcgam91cm5hbDogJW1cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJFcnJvciBtb3ZpbmcgQGo6ICVtXG4iCisiXG4iCittc2dzdHIgIiIKKyJH4bq3cCBs4buXaSBraGkgZGkgY2h1eeG7g24gQGo6ICVtXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS5cbgorIy4gQC1leHBhbmRlZDogQ2xlYXJpbmcgZmllbGRzIGJleW9uZCB0aGUgVjEgam91cm5hbCBzdXBlcmJsb2NrLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwNgorbXNnaWQgIiIKKyJGb3VuZCBAbiBWMiBAaiBAUyBmaWVsZHMgKGZyb20gVjEgQGopLlxuIgorIkNsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIEBqIEBTLi4uXG4iCisiXG4iCittc2dzdHIgIiIKKyJUw6xtIHRo4bqleSBjw6FjIHRyxrDhu51uZyBAUyBAaiBwYjIgQG4gKHThu6sgQGogcGIxKS5cbiIKKyLEkGFuZyB4b8OhIHPhuqFjaCBjw6FjIHRyxrDhu51uZyBu4bqxbSDhu58gYsOqbiBraWEgQFMgQGogcGIxLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICJW4bqrbiBjaOG6oXkgQGoiCisKKyMuIEAtZXhwYW5kZWQ6IFJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgc3VwZXJibG9jaywgc28gcnVubmluZyBqb3VybmFsIGFueXdheS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMTcKK21zZ2lkICJSZWNvdmVyeSBmbGFnIG5vdCBzZXQgaW4gYmFja3VwIEBTLCBzbyBydW5uaW5nIEBqIGFueXdheS5cbiIKK21zZ3N0ciAiQ2jGsGEgxJHhurd0IGPhu50gcGjhu6VjIGjhu5NpIHRyb25nIEBTIGThu7EgdHLhu68gbsOqbiB24bqrbiBjaOG6oXkgQGouXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzIyCittc2dpZCAiIgorIkJhY2tpbmcgdXAgQGogQGkgQGIgaW5mb3JtYXRpb24uXG4iCisiXG4iCittc2dzdHIgIiIKKyLEkGFuZyBzYW8gbMawdSB0aMO0bmcgdGluIEBiIEBpIEBqLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGRvZXMgbm90IGhhdmUgcmVzaXplX2lub2RlIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9ibG9ja3NcbgorIy4gQC1leHBhbmRlZDogaXMgJU47IHNob3VsZCBiZSB6ZXJvLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyNworbXNnaWQgIiIKKyJAZiBkb2VzIG5vdCBoYXZlIHJlc2l6ZV9AaSBlbmFibGVkLCBidXQgc19yZXNlcnZlZF9nZHRfQGJzXG4iCisiaXMgJU47IEBzIHplcm8uICAiCittc2dzdHIgIiIKKyJAZiBraMO0bmcgYuG6rXQgcmVzaXplX0BpLCBjw7JuIHNfcmVzZXJ2ZWRfZ2R0X0BicyBsw6AgJU47XG4iCisiQHMgc+G7kSBraMO0bmcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2l6ZV9pbm9kZSBub3QgZW5hYmxlZCwgYnV0IHRoZSByZXNpemUgaW5vZGUgaXMgbm9uLXplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzMzCittc2dpZCAiUmVzaXplX0BpIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBAaSBpcyBub24temVyby4gICIKK21zZ3N0ciAiS2jDtG5nIGLhuq10IHJlc2l6ZV9AaSwgY8OybiBAaSB0aGF5IMSR4buVaSBrw61jaCBj4buhIGtow7RuZyBwaOG6o2kgc+G7kSBraMO0bmcuLiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIkBpIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6Ega2jDtG5nIHBo4bqjaSBo4bujcCBs4buHLiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkdp4budIGfhuq9uIGvhur90IEBTIGN14buRaSBjw7luZ1xuIgorIigldCwgYsOieSBnaeG7nSA9ICVUKSBu4bqxbSB0cm9uZyB0aOG7nWkgdMawxqFuZyBsYWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lICgldCxcbgorIy4gQC1leHBhbmRlZDogXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNDgKK21zZ2lkICIiCisiQFMgbGFzdCB3cml0ZSB0aW1lICgldCxcbiIKKyJcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorbXNnc3RyICJHaeG7nSBnaGkgQFMgY3Xhu5FpIGPDuW5nKCV0LCBiw6J5IGdp4budID0gJVQpIG7hurFtIHRyb25nIHRow6wgdMawxqFuZyBsYWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIkzhu51pIGfhu6NpIMO9IEBTIGNobyBzacOqdSBraOG7kWkgYsOqbiBuZ2/DoGkgQHMgJVguICAiCisKKyMuIEAtZXhwYW5kZWQ6IEFkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzU3Cittc2dpZCAiIgorIkFkZGluZyBkaXJoYXNoIGhpbnQgdG8gQGYuXG4iCisiXG4iCittc2dzdHIgIiIKKyLEkGFuZyB0aMOqbSBn4bujaSDDvSBkaXJoYXNoIHbDoG8gQGYuXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzYyCittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBjaGVja3N1bSBpcyAlMDR4LCBzaG91bGQgYmUgJTA0eS4gICIKK21zZ3N0ciAiTcO0IHThuqMgQGcgJWcgY8OzIHThu5VuZyBraeG7g20gbMOgICUwNHgsIHBo4bqjaSBsw6AgJTA0eS4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgZGVzY3JpcHRvciAlZyBtYXJrZWQgdW5pbml0aWFsaXplZCB3aXRob3V0IGZlYXR1cmUgc2V0LlxuIgorbXNnc3RyICJNw7QgdOG6oyBAZyAlZyBjw7MgbmjDo24gbMOgIGNoxrBhIGto4bufaSB04bqhbyBtw6Aga2jDtG5nIGPDsyB04bqtcCB0w61uaCBuxINuZy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiTcO0IHThuqMgQGcgJWcgc2FpIMSR4bq/bSBjw6FjIG7DunQgdGjDtG5nIHRpbiBjaMawYSBkw7luZyAlYi4gICIKKworIy4gQC1leHBhbmRlZDogTGFzdCBncm91cCBibG9jayBiaXRtYXAgdW5pbml0aWFsaXplZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozNzcKK21zZ2lkICJMYXN0IEBnIEBiIEBCIHVuaW5pdGlhbGl6ZWQuICAiCittc2dzdHIgIkNoxrBhIGto4bufaSB04bqhbyBAQiBAYiBAZyBjdeG7kWkgY8O5bmcuICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgdHJhbnNhY3Rpb24gJWkgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC5cbiIKK21zZ3N0ciAiR2lhbyBk4buLY2ggbmjhuq10IGvDvSAlaSBi4buLIGjhu49uZyBuw6puIGjhu6d5IGLhu48gdGnhur9uIHRyw6xuaCBwaMOhdCBs4bqhaS5cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODYKK21zZ2lkICJUaGUgdGVzdF9mcyBmbGFnIGlzIHNldCAoYW5kIGV4dDQgaXMgYXZhaWxhYmxlKS4gICIKK21zZ3N0ciAiQ+G7nSDigJx0ZXN0X2Zz4oCdIMSRxrDhu6NjIMSR4bq3dCAodsOgIGV4dDQgc+G6tW4gc8OgbmcpIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjLiBALWV4cGFuZGVkOiBcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgCisjLiBALWV4cGFuZGVkOiBzZXQpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzkxCisjLCBmdXp6eQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkdp4budIGfhuq9uIGvhur90IEBTIGN14buRaSBjw7luZyBu4bqxbSB0cm9uZyB0xrDGoW5nIGxhaVxuIgorIlx0KHRoZW8gw610IG5o4bqldCBt4buZdCBuZ8OgeSwgcuG6pXQgY8OzIHRo4buDIGRvIMSR4buTbmcgaOG7kyBwaOG6p24gY+G7qW5nIGLhu4sgc2FpIGzhuq1wKS4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbGFzdCB3cml0ZSB0aW1lIGlzIGluIHRoZSBmdXR1cmUuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAKKyMuIEAtZXhwYW5kZWQ6IHNldClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozOTcKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBTIGxhc3Qgd3JpdGUgdGltZSBpcyBpbiB0aGUgZnV0dXJlLlxuIgorIlx0KGJ5IGxlc3MgdGhhbiBhIGRheSwgcHJvYmFibHkgZHVlIHRvIHRoZSBoYXJkd2FyZSBjbG9jayBiZWluZyBpbmNvcnJlY3RseSAiCisic2V0KVxuIgorbXNnc3RyICIiCisiR2nhu50gZ2hpIG5o4bubIEBTIGN14buRaSBjw7luZyBu4bqxbSB0cm9uZyB0xrDGoW5nIGxhaVxuIgorIlx0KHRoZW8gw610IG5o4bqldCBt4buZdCBuZ8OgeSwgcuG6pXQgY8OzIHRo4buDIGRvIMSR4buTbmcgaOG7kyBwaOG6p24gY+G7qW5nIGLhu4sgc2FpIGzhuq1wKS4iCisKKyMuIEAtZXhwYW5kZWQ6IE9uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwMworbXNnaWQgIk9uZSBvciBtb3JlIEBiIEBnIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgIgorbXNnc3RyICJM4buXaTogbeG7mXQgaGF5IG5oaeG7gXUgdOG7lW5nIGtp4buDbSBi4buZIG3DtCB04bqjIEBnIEBiIGtow7RuZyBwaOG6o2kgaOG7o3AgbOG7hy4gICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IHPhu5EgbMaw4bujbmcgQGlzIHRow6BuaCAlaiAobMOgICVpKVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3Qgc+G7kSBsxrDhu6NuZyBAYnMgdGjDoG5oICVjIChsw6AgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIkzDoG0gY2hvIEBxIEBpcyAlaSAoJVEpIOG6qW4gxJFpLlxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjMKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAiCittc2dzdHIgIkBTIGPDsyBraOG7kWkgTU1QIGtow7RuZyBo4bujcCBs4buHLiAgICAgICAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIkBTIGPDsyBz4buRIG3DoHUgbmhp4buHbSBNTVAga2jDtG5nIGjhu6NwIGzhu4cuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfb3BlbjI6ICVtXG4iCittc2dzdHIgImV4dDJmc19vcGVuMjogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCittc2dzdHIgImV4dDJmc19jaGVja19kZXNjOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgCisjLiBALWV4cGFuZGVkOiBzaW11bHRhbmVvdXNseS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDQ2Cittc2dpZCAiIgorIkBTIG1ldGFkYXRhX2NzdW0gc3VwZXJzZWRlcyB1bmluaXRfYmc7IGJvdGggZmVhdHVyZSBiaXRzIGNhbm5vdCBiZSBzZXQgIgorInNpbXVsdGFuZW91c2x5LiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDUyCisjLCBmdXp6eQorbXNnaWQgIkBTIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICAiCittc2dzdHIgIlThu5VuZyBraeG7g20gdHJhIGto4buRaSBNTVAga2jDtG5nIGto4bubcCB24bubaSBraOG7kWkgTU1QIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ1NworbXNnaWQgIkBTIDY0Yml0IGZpbGVzeXN0ZW1zIG5lZWRzIGV4dGVudHMgdG8gYWNjZXNzIHRoZSB3aG9sZSBkaXNrLiAgIgorbXNnc3RyICIiCisiaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBAUyA2NGJpdCBj4bqnbiBt4bufIHLhu5luZyDEkeG7gyBjw7MgdGjhu4MgdHJ1eSBj4bqtcCB0b8OgbiBi4buZIMSRxKlhLiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2MgorbXNnaWQgIkZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICglTiwgbWF4IHZhbHVlICVnKS4gICIKK21zZ3N0ciAiRmlyc3RfbWV0YV9iZyBxdcOhIGzhu5tuLiAgKCVOLCBnacOhIHRy4buLIHThu5FpIMSRYSAlZykuICAiCisKKyMuIEAtZXhwYW5kZWQ6IEV4dGVybmFsIGpvdXJuYWwgc3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ2NworIywgZnV6enkKK21zZ2lkICJFeHRlcm5hbCBAaiBAUyBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAUy4gICIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSB0cmEga2jhu5FpIG3hu58gcuG7mW5nIGtow7RuZyBraOG7m3AgduG7m2kga2jhu5FpIG3hu58gcuG7mW5nIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDcyCittc2dpZCAiQFMgbWV0YWRhdGFfY3N1bV9zZWVkIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aG91dCBtZXRhZGF0YV9jc3VtLiIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3NworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCBpbiBzdXBwb3J0IGxpYnJhcnk6ICVtXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODIKK21zZ2lkICJCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDg3Cittc2dpZCAiQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTQKK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAiTOG6p24gcXVhIDE6IMSRYW5nIGtp4buDbSB0cmEgY8OhYyBAaSwgQGIgdsOgIGvDrWNoIGPhu6FcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDk4Cittc2dpZCAiQHIgaXMgbm90IGEgQGQuICAiCittc2dzdHIgIkByIGtow7RuZyBwaOG6o2kgQGQuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaGFzIGR0aW1lIHNldCAocHJvYmFibHkgZHVlIHRvIG9sZCBta2UyZnMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUwMworbXNnaWQgIkByIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gICIKK21zZ3N0ciAiQHIgxJHhurd0IGR0aW1lIChy4bqldCBjw7MgdGjhu4MgZG8gbWtkMmZzIGPFqSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFJlc2VydmVkIGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDgKK21zZ2lkICJSZXNlcnZlZCBAaSAlaSAoJVEpIGhhcyBAbiBtb2RlLiAgIgorbXNnc3RyICJAaSAlaSDEkcOjIGTDoG5oIHJpw6puZyAoJVEpIGPDsyBjaOG6vyDEkeG7mSBAbi4iCisKKyMuIEAtZXhwYW5kZWQ6IGRlbGV0ZWQgaW5vZGUgJWkgaGFzIHplcm8gZHRpbWUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBEIEBpICVpIGhhcyB6ZXJvIGR0aW1lLiAgIgorbXNnc3RyICJAaSBARCAlaSBjw7MgZHRpbWUgYuG6sW5nIGtow7RuZy4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAiQGkgJWkgxJFhbmcgxJHGsOG7o2MgZMO5bmcsIGPDsm4gxJHhurd0IGR0aW1lLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhIHplcm8tbGVuZ3RoIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgYSBAeiBAZC4gICIKK21zZ3N0ciAiQGkgJWkgbMOgIEBkIEB6LiAgICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQEIgQGIgY+G7p2EgQGcgJWcgdOG6oWkgJWIgQEMuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMzCittc2dpZCAiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQEIgQGkgY+G7p2EgQGcgJWcg4bufICViIEBjLlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIHRhYmxlIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTM4Cittc2dpZCAiQGcgJWcncyBAaSB0YWJsZSBhdCAlYiBAQy5cbiIKK21zZ3N0ciAiQuG6o25nIEBpIGPhu6dhIEBnICVnIOG7nyAlYiBAQy5cbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBibG9jayBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQzCittc2dpZCAiQGcgJWcncyBAYiBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQGIgQEIgKCViKSBj4bunYSBAZyAlZyBsw6Agc2FpIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZydzIGlub2RlIGJpdG1hcCAoJWIpIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NDgKK21zZ2lkICJAZyAlZydzIEBpIEBCICglYikgaXMgYmFkLiAgIgorbXNnc3RyICJAQiBAaSAoJWIpIGPhu6dhIEBnICVnIGzDoCBzYWkuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9zaXplIGlzICVJcywgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWksIGlfc2l6ZSBsw6AgJUlzLCBAcyAlTi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSwgaV9AYnMgbMOgICVJYiwgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICIlQiAoJWIpIEBsIG7hurFtIHRyb25nIEBpICVpLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIG92ZXJsYXBzIGZpbGVzeXN0ZW0gbWV0YWRhdGEgaW4gaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTY4Cittc2dpZCAiJUIgKCViKSBvdmVybGFwcyBAZiBtZXRhZGF0YSBpbiBAaSAlaS4gICIKK21zZ3N0ciAiJUIgKCViKSDEkcOoIGzDqm4gc2nDqnUgZOG7ryBsaeG7h3UgQGYgdHJvbmcgQGkgJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU3MworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiQGkgJWkgY8OzIEBiIGPhuqVtLiAgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIlF1w6Egbmhp4buBdSBAYiBj4bqlbSB0cm9uZyBAaSAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGluIGJhZCBibG9jayBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODMKK21zZ2lkICJASSAlQiAoJWIpIGluIGJhZCBAYiBAaS4gICIKK21zZ3N0ciAiJUIgKCViKSBAbCBu4bqxbSB0cm9uZyBAaSBAYiBzYWkuICIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU4OAorbXNnaWQgIkJhZCBAYiBAaSBoYXMgaWxsZWdhbCBAYihzKS4gICIKK21zZ3N0ciAiQGkgQGIgc2FpIGPDsyBAYiBj4bqlbS4gIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAiQGIgdHLDuW5nIGhheSBzYWkgxJFhbmcgxJHGsOG7o2MgZMO5bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayAlYiB1c2VkIGFzIGJhZCBibG9jayBpbm9kZSBpbmRpcmVjdCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTgKK21zZ2lkICJCYWQgQGIgJWIgdXNlZCBhcyBiYWQgQGIgQGkgaW5kaXJlY3QgQGIuICAiCittc2dzdHIgIkBiIHNhaSAlYiDEkcaw4bujYyBkw7luZyBsw6BtIEBiIGdpw6FuIHRp4bq/cCBj4bunYSBAaSBAYi4gICIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisiXG4iCisiQGkgQG4gZ+G6p24gbmjGsCBjaOG6r2MgY2jhuq9uIMSRw6MgaOG7j25nLiDEkOG7gSBuZ2jhu4sgYuG6oW4gZOG7q25nIG5nYXkgYsOieSBnaeG7nVxuIgorInbDoCBjaOG6oXkgbOG7h25oIOKAnGUyZnNjayAtY+KAnSDEkeG7gyBxdcOpdCB0w6xtIGto4buRaSBzYWkgdHJvbmcgQGYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiQGIgdGjhuq10IHNhaSB0aMOsIGtow7RuZyB0aOG7gyBz4butYSBjaOG7r2EgQGYuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFlvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGVcbgorIy4gQC1leHBhbmRlZDogdGhhdCB0aGUgYmxvY2sgaXMgcmVhbGx5IE9LLiAgQnV0IHRoZXJlIGFyZSBubyBndWFyYW50ZWVzLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTUKK21zZ2lkICIiCisiWW91IGNhbiByZW1vdmUgdGhpcyBAYiBmcm9tIHRoZSBiYWQgQGIgbGlzdCBhbmQgaG9wZVxuIgorInRoYXQgdGhlIEBiIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkLhuqFuIGPDsyB0aOG7gyBn4buhIGLhu48gQGIgbsOgeSBraOG7j2kgZGFuaCBzw6FjaCBjw6FjIEBiIHNhaVxuIgorInbDoCBtb25nIEBiIHRo4bqtdCDEkcO6bmcuIE5oxrBuZyBtw6Aga2jDtG5nIGLhuqNvIGjDoG5oIGfDrC5cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogVGhlIHByaW1hcnkgc3VwZXJibG9jayAoJWIpIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjEKK21zZ2lkICJUaGUgcHJpbWFyeSBAUyAoJWIpIGlzIG9uIHRoZSBiYWQgQGIgbGlzdC5cbiIKK21zZ3N0ciAiQFMgY2jDrW5oICglYikgbuG6sW0gdHLDqm4gZGFuaCBzw6FjaCBjw6FjIEBiIHNhaS5cbiIKKworIy4gQC1leHBhbmRlZDogQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgZ3JvdXAgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjI2Cittc2dpZCAiQmxvY2sgJWIgaW4gdGhlIHByaW1hcnkgQGcgZGVzY3JpcHRvcnMgaXMgb24gdGhlIGJhZCBAYiBsaXN0XG4iCittc2dzdHIgIiIKKyJLaOG7kWkgJWIgdHJvbmcgbmjhu69uZyBtw7QgdOG6oyBAZyBjaMOtbmggY8OzIG7hurFtIHRyb25nIGRhbmggc8OhY2ggY8OhYyBAYiBzYWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3Mgc3VwZXJibG9jayAoJWIpIGlzIGJhZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MzIKK21zZ2lkICJXYXJuaW5nOiBHcm91cCAlZydzIEBTICglYikgaXMgYmFkLlxuIgorbXNnc3RyICJD4bqjbmggYsOhbzogQFMgY+G7p2EgQGcgJWcgKCViKSBsw6Agc2FpLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBHcm91cCAlZydzIGNvcHkgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGhhcyBhIGJhZCBibG9jayAoJWIpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzNworbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgQGcgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIEBiICglYikuXG4iCittc2dzdHIgIkPhuqNuaCBiw6FvOiBi4bqjbiBzYW8gY8OhYyBtw7QgdOG6oyBAZyBj4bunYSBuaMOzbSAlZyBjw7MgbeG7mXQgQGIgc2FpICglYikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIiIKKyJM4buXaSBs4bqtcCB0csOsbmg/IEBiICViIMSRxrDhu6NjIHR1ecOqbiBi4buRLCBraMO0bmcgY8OzIGzDvSBkbywgdHJvbmcgcHJvY2Vzc19iYWRfQGJcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyAlTiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwICVnIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDkKK21zZ2lkICJAQSAlTiBjb250aWd1b3VzIEBiKHMpIGluIEBiIEBnICVnIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQEEgJU4gQGIga+G7gSBuaGF1IHRyb25nIEBnIEBiICVnIGNobyAlczogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGIgYnVmZmVyIGZvciByZWxvY2F0aW5nICVzXG4iCittc2dzdHIgIkBBIGLhu5kgxJHhu4dtIEBiIMSR4buDIMSR4buLbmggduG7iyBs4bqhaSAlc1xuIgorCisjLiBALWV4cGFuZGVkOiBSZWxvY2F0aW5nIGdyb3VwICVnJ3MgJXMgZnJvbSAlYiB0byAlYy4uLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1OQorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4iCittc2dzdHIgIsSQYW5nIMSR4buLbmggduG7iyBs4bqhaSAlcyBj4bunYSBAZyAlZyB04burICViIHNhbmcgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICLEkGFuZyDEkeG7i25oIHbhu4sgbOG6oWkgJTIkcyBj4bunYSBAZyAlMSRnIHNhbmcgJTMkYy4uLlxuIgorCisjLiBALWV4cGFuZGVkOiBXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAlYiBvZiAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NjkKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBAYiAlYiBvZiAlczogJW1cbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IGtow7RuZyB0aOG7gyDEkeG7jWMgQGIgJWIgdHLDqm4gJXM6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCB3cml0ZSBibG9jayAlYiBmb3IgJXM6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njc0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHdyaXRlIEBiICViIGZvciAlczogJW1cbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IGtow7RuZyB0aOG7gyBnaGkgQGIgJWIgY2hvICVzOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGlub2RlIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3OSBlMmZzY2svcHJvYmxlbS5jOjE3NDAKK21zZ2lkICJAQSBAaSBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICJAQSBAQiBAaSAoJU4pOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJpdG1hcCAoJU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4NAorbXNnaWQgIkBBIEBiIEBCICglTik6ICVtXG4iCittc2dzdHIgIkBBIEBCIEBiICglTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IGxpbmsgaW5mb3JtYXRpb246ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njg5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuIgorbXNnc3RyICJAQSB0aMO0bmcgdGluIGxpw6puIGvhur90IGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICJAQSBt4bqjbmcgQGQgQGQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5OQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBzY2FubmluZyBAaXMgKCVpKTogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHF1w6l0IGPDoWMgQGkgKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBs4bq3cCBs4bqhaSB0csOqbiBjw6FjIEBiIHRyb25nIEBpICVpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBzdG9yaW5nIGlub2RlIGNvdW50IGluZm9ybWF0aW9uIChpbm9kZT0laSwgY291bnQ9JU4pOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwOQorbXNnaWQgIkVycm9yIHN0b3JpbmcgQGkgY291bnQgaW5mb3JtYXRpb24gKEBpPSVpLCBjb3VudD0lTik6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBj4bqldCBnaeG7ryB0aMO0bmcgdGluIMSR4bq/bSBAaSAoQGk9JWksIMSR4bq/bT0lTik6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHN0b3JpbmcgZGlyZWN0b3J5IGJsb2NrIGluZm9ybWF0aW9uIChpbm9kZT0laSwgYmxvY2s9JWIsIG51bT0lTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzE0Cittc2dpZCAiRXJyb3Igc3RvcmluZyBAZCBAYiBpbmZvcm1hdGlvbiAoQGk9JWksIEBiPSViLCBudW09JU4pOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgY+G6pXQgZ2nhu68gdGjDtG5nIHRpbiBAZCBAYiAoQGk9JWksIEBiPSViLCBz4buRPSVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBpbm9kZSAlaTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAaSAlaTogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiQGkgJWkgxJHhurd0IGPhu50gbWEgdGh14bqtdCBpbWFnaWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyJU4bqtcCB0aW4gKEB2L+G7lSBj4bqvbS9GSUZPL2xpw6puIGvhur90IG3hu4FtKSDEkeG6t2MgYmnhu4d0XG4iCisiKEBpICVpKSDEkeG6t3QgY+G7nSBraMO0bmcgdGhheSDEkeG7lWkgKGltbXV0YWJsZSkgaGF5XG4iCisiY2jhu4kgcGjhu6UgdGjDqm0gKGFwcGVuZC1vbmx5KS4iCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAiQGkgKEB2L+G7lSBj4bqvbS9GSUZPKSAlaSBjw7Mga8OtY2ggY+G7oSBraMO0bmcgcGjhuqNpIHPhu5Ega2jDtG5nLiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NDkKK21zZ2lkICJAaiBAaSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gICIKK21zZ3N0ciAiQGkgQGoga2jDtG5nIMSRYW5nIMSRxrDhu6NjIGTDuW5nLCBjw7JuIGNo4bupYSBk4buvIGxp4buHdS4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTQKK21zZ2lkICJAaiBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAaiBraMO0bmcgcGjhuqNpIHThuq1wIHRpbiBjaHXhuqluLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3NTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgd2FzIHBhcnQgb2YgdGhlIEBvIEBpIGxpc3QuICAiCittc2dzdHIgIkBpICVpIMSRw6MgdGh14buZYyB24buBIHNhbmggc8OhY2ggQGkgQG8uICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzY1Cittc2dpZCAiQGlzIHRoYXQgd2VyZSBwYXJ0IG9mIGEgY29ycnVwdGVkIG9ycGhhbiBsaW5rZWQgbGlzdCBmb3VuZC4gICIKK21zZ3N0ciAiVMOsbSB0aOG6pXkgY8OhYyBAaSDEkcOjIHRodeG7mWMgduG7gSBkYW5oIHPDoWNoIMSRw6MgbGnDqm4ga+G6v3QgdGjhu6thIGLhu4sgaOG7j25nLiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3NzAKK21zZ2lkICJAQSByZWZjb3VudCBzdHJ1Y3R1cmUgKCVOKTogJW1cbiIKK21zZ3N0ciAiQEEgY+G6pXUgdHLDumMgcmVmY291bnQgKCVOKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgZm9yIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc3NQorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGEgQGIgJWIgZm9yIEBpICVpLiAgIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu41jIEBiIEBhICViIGNobyBAaSAlaS4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODAKK21zZ2lkICJAaSAlaSBoYXMgYSBiYWQgQGEgQGIgJWIuICAiCittc2dzdHIgIkBpICVpIGPDsyBt4buZdCBAYiBAYSAlYi4gICIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkeG7jWMgQGIgQGEgJWIgKCVtKS4gICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQGIgQGEgJWIgY8OzIHPhu5EgxJHhur9tIHRoYW0gY2hp4bq/dSAlciwgQHMgJU4uICAiCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdyaXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViICglbSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzk1Cittc2dpZCAiRXJyb3Igd3JpdGluZyBAYSBAYiAlYiAoJW0pLiAgIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgZ2hpIEBiIEBhICViICglbSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBoYXMgaF9ibG9ja3MgPiAxLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwMAorbXNnaWQgIkBhIEBiICViIGhhcyBoX0BicyA+IDEuICAiCittc2dzdHIgIkBiIEBhICViIGPDsyBoX0BiID4gMS4gICIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwNQorIywgZnV6enkKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIkBBIGPhuqV1IHRyw7pjIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBiIEBhICViIGLhu4sgaOG7j25nICh4dW5nIMSR4buZdCBj4bqlcCBwaMOhdCkuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCBuYW1lKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTUKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiBuYW1lKS4gICIKK21zZ3N0ciAiQGIgQGEgJWIgYuG7iyBo4buPbmcgKHTDqm4gQG4pLiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaXMgY29ycnVwdCAoaW52YWxpZCB2YWx1ZSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODIwCittc2dpZCAiQGEgQGIgJWIgaXMgY29ycnVwdCAoQG4gdmFsdWUpLiAgIgorbXNnc3RyICJAYiBAYSAlYiBi4buLIGjhu49uZyAoZ2nDoSB0cuG7iyBAbikuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIHRvbyBiaWcuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODI1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGlzIHRvbyBiaWcuICAiCittc2dzdHIgIkBpICVpIGzDoCBxdcOhIGzhu5tuLiAgIgorCisjLiBALWV4cGFuZGVkOiAlQiAoJWIpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjkKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBAZCB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIGfDonkgcmEgQGQgcXXDoSBs4bubbi4gICAgICAgICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MzQKK21zZ2lkICIlQiAoJWIpIGNhdXNlcyBmaWxlIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVCICglYikgbMOgbSBjaG8gdOG6rXAgdGluIHF1w6EgbOG7m24uICAgICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODM5Cittc2dpZCAiJUIgKCViKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgIgorbXNnc3RyICIlQiAoJWIpIGzDoG0gY2hvIGxpw6puIGvhur90IG3hu4FtIHF1w6EgbOG7m24gLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBodHJlZSBzdXBwb3J0LlxuIgorbXNnc3RyICJAaSAlaSDEkeG6t3QgY+G7nSBJTkRFWF9GTCB0csOqbiBAZiBraMO0bmcgY8OzIGjhu5cgdHLhu6MgaHRyZWUuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgZGlyZWN0b3J5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg0OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgYnV0IGlzIG5vdCBhIEBkLlxuIgorbXNnc3RyICJAaSAlaSDEkeG6t3QgY+G7nSBJTkRFWF9GTCBuaMawbmcga2jDtG5nIHBo4bqjaSBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIHJvb3Qgbm9kZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgaGFzIGFuIEBuIHJvb3Qgbm9kZS5cbiIKK21zZ3N0ciAiQGggJWkgY8OzIG3hu5l0IG7DunQgZ+G7kWMgQG4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTkKK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAiQGggJWkgY8OzIG3hu5l0IHBoacOqbiBi4bqjbiBixINtIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujICglTilcbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIHVzZXMgYW4gaW5jb21wYXRpYmxlIGh0cmVlIHJvb3Qgbm9kZSBmbGFnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2NAorIywgYy1mb3JtYXQKK21zZ2lkICJAaCAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbiIKK21zZ3N0ciAiQGggJWkgZMO5bmcgY+G7nSBuw7p0IGfhu5FjIGh0cmVlIGtow7RuZyB0xrDGoW5nIHRow61jaC5cbiIKKworIy4gQC1leHBhbmRlZDogSFRSRUUgZGlyZWN0b3J5IGlub2RlICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODY5Cittc2dpZCAiQGggJWkgaGFzIGEgdHJlZSBkZXB0aCAoJU4pIHdoaWNoIGlzIHRvbyBiaWdcbiIKK21zZ3N0ciAiQGggJWkgY8OzIMSR4buZIHPDonUgY8OieSAoJU4pIHF1w6EgbOG7m25cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIGJsb2NrIGlub2RlIGhhcyBhbiBpbmRpcmVjdCBibG9jayAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBtZXRhZGF0YS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4NzQKK21zZ2lkICIiCisiQmFkIEBiIEBpIGhhcyBhbiBpbmRpcmVjdCBAYiAoJWIpIHRoYXQgY29uZmxpY3RzIHdpdGhcbiIKKyJAZiBtZXRhZGF0YS4gICIKK21zZ3N0ciAiIgorIkBpIEBiIHNhaSBjw7MgbeG7mXQgQGIgZ2nDoW4gdGnhur9wICglYikgeHVuZyDEkeG7mXQgduG7m2lcbiIKKyJzacOqdSBk4buvIGxp4buHdSBAZi4gICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXplIEBpIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLiIKK21zZ3N0ciAiVmnhu4djIHThuqFvIChs4bqhaSkgc+G7sSB0aGF5IMSR4buVaSBrw61jaCBj4buhIEBpIGLhu4sgbOG7l2k6ICVtLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSBjw7MgbeG7mXQga8OtY2ggY+G7oSB0aMOqbSAoJUlTKSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBuYW1lbGVuICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgdHJvbmcgQGkgJWkgY8OzIG3hu5l0IG5hbWVsZW4gKCVOKSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgb2Zmc2V0ICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg5NQorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIHRyb25nIEBpICVpIGPDsyBt4buZdCBoaeG7h3UgZ2nDoSB0cuG7iyAoJU4pIEBuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSB2YWx1ZSBibG9jayAoJU4pIHdoaWNoIGlzIGludmFsaWQgKG11c3QgYmUgMClcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBAYiAoJU4pIHdoaWNoIGlzIEBuIChtdXN0IGJlIDApXG4iCittc2dzdHIgIkBhIHRyb25nIEBpICVpIGPDsyBt4buZdCBnacOhIHRy4buLIEBiICglTikgQG4gKHBo4bqjaSBsw6AgMClcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIHNpemUgKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTA1Cittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBhIHRyb25nIEBpICVpIGPDsyBt4buZdCBrw61jaCBj4buhIGdpw6EgdHLhu4sgKCVOKSBAblxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgaGFzaCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTAKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGEgdHJvbmcgQGkgJWkgY8OzIG3hu5l0IGNodeG7l2kgZHV5IG5o4bqldCAoJU4pIG3DoCBAblxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTE1Cittc2dpZCAiQGkgJWkgaXMgYSAlSXQgYnV0IGl0IGxvb2tzIGxpa2UgaXQgaXMgcmVhbGx5IGEgZGlyZWN0b3J5LlxuIgorbXNnc3RyICJAaSAlaSBsw6AgJUl0IG5oxrBuZyBow6xuaCBuaMawIG7DsyB0aOG7sWMgc+G7sSBsw6AgdGjGsCBt4bulYy5cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgcmVhZGluZyBvdmVyIGV4dGVudCB0cmVlIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkyMAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgQHggdHJlZSBpbiBAaSAlaTogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyBxdWEgY8OieSBAeCB0cm9uZyBAaSAlaTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBpbm9kZSAlaVxuCisjLiBALWV4cGFuZGVkOiBcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MjUKK21zZ2lkICIiCisiRmFpbGVkIHRvIGl0ZXJhdGUgZXh0ZW50cyBpbiBAaSAlaVxuIgorIlx0KG9wICVzLCBibGsgJWIsIGxibGsgJWMpOiAlbVxuIgorbXNnc3RyICIiCisiS2jDtG5nIGzhurdwIGzhuqFpIHThuqdtIHRyb25nIEBpICVpXG4iCisiXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkgY8OzIG3hu5l0IHBo4bqhbSB2aSBAblxuIgorIlx0KEBiIGjhu6NwIGzDvSAlYywgQGIgduG6rXQgbMO9IEBuICViLCBkw6BpICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGludmFsaWQgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkzNgorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYW4gQG4gZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIEBuIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGPDsyBt4buZdCBwaOG6oW0gdmkgQG5cbiIKKyJcdChAYiBo4bujcCBsw70gJWMsIEBiIHbhuq10IGzDvSAlYiwgZMOgaSBAbiAlTilcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIkBpICVpIMSR4bq3dCBj4budIEVYVEVOVFNfRkwgdHLDqm4gQGYgbcOgIGtow7RuZyBo4buXIHRy4bujIHBo4bqhbSB2aS5cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIiIKKyJAaSAlaSB0aGVvIMSR4buLbmggZOG6oW5nIHBo4bqhbSB2aSwgY8OybiBAUyB0aGnhur91IHTDrW5oIG7Eg25nIHBo4bqhbSB2aSAoRVhURU5UUylcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbWlzc2luZyBFWFRFTlRfRkwsIGJ1dCBpcyBpbiBleHRlbnRzIGZvcm1hdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1MQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4iCittc2dzdHIgIkBpICVpIHRoaeG6v3UgRVhURU5UU19GTCwgbmjGsG5nIHRoZW8gxJHhu4tuaCBk4bqhbmcgcGjhuqFtIHZpXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTU2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZhc3Qgc3ltbGluayAlaSBoYXMgRVhURU5UX0ZMIHNldC4gICIKK21zZ3N0ciAiTGnDqm4ga+G6v3QgbeG7gW0gbmhhbmggJWkgxJHDoyDEkeG6t3QgRVhURU5UU19GTC4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGPDsyBjw6FjIHBo4bqhbSB2aSBzYWkgdGjhu6kgdOG7sVxuIgorIlx0KEBiIGjhu6NwIGzDvSAlYywgQGIgduG6rXQgbMO9ICViLCBkw6BpICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIkBpICVpIGPDsyBt4buZdCBuw7p0IHThuqdtIGtow7RuZyBo4bujcCBs4buHIChibGsgJWIsIGxibGsgJWMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBibG9jayBiaXRtYXA6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTcwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBAYiBAQjogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGNodXnhu4NuIMSR4buVaSBsacOqbiBjdW5nIGNvbiBAYiBAQjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAcSBAaSAga2jDtG5nIHBo4bqjaSB04bqtcCB0aW4gdGjDtG5nIHRoxrDhu51uZy4gICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTgwCittc2dpZCAiQHEgQGkgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICAiCittc2dzdHIgIkBxIEBpIMSRYW5nIGtow7RuZyDEkcaw4bujYyBkw7luZywgbmjGsG5nIGNo4bupYSBk4buvIGxp4buHdS4iCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIHZpc2libGUgdG8gdGhlIHVzZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTg1Cittc2dpZCAiQHEgQGkgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gICIKK21zZ3N0ciAiQHEgQGkgc+G6tW4gZMO5bmcuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgYmFkIGJsb2NrIGlub2RlIGxvb2tzIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTkwCittc2dpZCAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKK21zZ3N0ciAiVGhlIGJhZCBAYiBAaSBsb29rcyBAbi4gICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyJAaSAlaSBjw7MgcGjhuqduIG3hu58gcuG7mW5nIG3DoCDEkeG7mSBkw6BpIGLhurFuZyBraMO0bmdcbiIKKyJcdChAbiBsw7Rnw61jIEBiICVjLCB24bqtdCBsw70gQGIgJWIpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDAwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICAiCittc2dzdHIgIkBpICVpIGzDoCBxdcOhIGzhu5tuLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTAwNQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIEBpLiAgIgorbXNnc3RyICJU4buVbmcga2nhu4NtIE3huqNuZyDhuqNuaCBuw7p0IGtow7RuZyBraOG7m3AgbmhhdSIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBAYSBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBiIEBhICViIGLhu4sgaOG7j25nICh4dW5nIMSR4buZdCBj4bqlcCBwaMOhdCkuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTgKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGPDsyBjw6FjIHBo4bqhbSB2aSBzYWkgdGjhu6kgdOG7sVxuIgorIlx0KEBiIGjhu6NwIGzDvSAlYywgQGIgduG6rXQgbMO9ICViLCBkw6BpICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorIuG7niB0cm9uZyBuw7p0IEB4IG3hu6ljICVOL0BpICVpOlxuIgorIkto4bufaSDEkeG6p3UgbMO0LWfDrWMgJWIga2jDtG5nIGto4bubcCB24bubaSBraOG7n2kgxJHhuqd1IGzDtC1nw61jICVjIHThuqFpIG3hu6ljIGvhur8gdGnhur9wLiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQwCittc2dpZCAiIgorIkBpICVpLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZVxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSwgxJFp4buDbSBr4bq/dCB0aMO6YyB2xrDhu6N0IHF1w6EgZ2nDoSB0cuG7iyBjaG8gcGjDqXBcbiIKKyJcdChsw7QtZ8OtYyBAYiAlYywgduG6rXQgbMO9IEBiICViLCBkw6BpICVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEsIGJ1dCBzdXBlcmJsb2NrIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNDUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICIiCisiQGkgJWkgdGhlbyDEkeG7i25oIGThuqFuZyBwaOG6oW0gdmksIGPDsm4gQFMgdGhp4bq/dSB0w61uaCBuxINuZyBwaOG6oW0gdmkgKEVYVEVOVFMpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIEBmIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC5cbiIKK21zZ3N0ciAiQGkgJWkgxJHhurd0IGPhu50gSU5ERVhfRkwgdHLDqm4gQGYga2jDtG5nIGPDsyBo4buXIHRy4bujIGh0cmVlLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBibG9jayAlYiBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNTgKK21zZ2lkICIiCisiQGkgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgYmxvY2sgJWIgc2hvdWxkIGJlIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjMKK21zZ2lkICJAZCBAaSAlaSBAYiAlYiBzaG91bGQgYmUgYXQgQGIgJWMuICAiCittc2dzdHIgIkBkIEBpICVpIEBiICViIG7Dqm4g4bufIHThuqFpIEBiICVjLiAgIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDY4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBkIEBpICVpIGhhcyBAeCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBAYiAlYy4gICIKK21zZ3N0ciAiQGkgQGQgJWkgY8OzIG3hu5l0IEB4IMSRxrDhu6NjIMSRw6FuaCBk4bqldSBsw6AgY2jGsGEga2jhu59pIHThuqFvIHThuqFpIEBiaeG6v24gJWMuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGxvZ2ljYWwgYmxvY2sgJWIgKHBoeXNpY2FsIGJsb2NrICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4KKyMuIEAtZXhwYW5kZWQ6IFdpbGwgZml4IGluIHBhc3MgMUIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA3MworbXNnaWQgIiIKKyJAaSAlaSBsb2dpY2FsIEBiICViIChwaHlzaWNhbCBAYiAlYykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLlxuIgorIldpbGwgZml4IGluIHBhc3MgMUIuXG4iCittc2dzdHIgIiIKKyJAaSAlaSBsw7QtZ8OtYyBAYiAlYiAoduG6rXQgbMO9IEBiICVjKSB2aSBwaOG6oW0gcXVpIHThuq9jIHBow6JuIGLhu48gbGnDqm4gY3VuZy5cbiIKKyJT4bq9IMSRxrDhu6NjIHPhu61hIHThuqFpIGzhuqduIDFCLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgZXh0ZW5kZWQgYXR0cmlidXRlIG5vdCBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBidXQgQGEgbm90IGZvdW5kLiAgIgorbXNnc3RyICJAaSAlaSDEkeG6t3QgY+G7nSBJTkRFWF9GTCBuaMawbmcga2jDtG5nIHBo4bqjaSBAZC5cbiIKKworIy4gQC1leHBhbmRlZDogU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAlaSkgaGFzIGV4dGVudHNcbgorIy4gQC1leHBhbmRlZDogb3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA4MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBmaWxlIChAaSAlaSkgaGFzIGV4dGVudHNcbiIKKyJvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gICIKK21zZ3N0ciAiIgorIlThuq1wIHRpbiAoQHYv4buVIGPhuq9tL0ZJRk8vbGnDqm4ga+G6v3QgbeG7gW0pIMSR4bq3YyBiaeG7h3RcbiIKKyIoQGkgJWkpIMSR4bq3dCBj4budIGtow7RuZyB0aGF5IMSR4buVaSAoaW1tdXRhYmxlKSBoYXlcbiIKKyJjaOG7iSBwaOG7pSB0aMOqbSAoYXBwZW5kLW9ubHkpLiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgZXh0ZW50IGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBpbmxpbmUgZGF0YSBidXQgQHggZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gaGF2ZSBibG9jayBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gaGF2ZSBAYiBtYXAgYnV0IGlubGluZSBkYXRhIGFuZCBAeCBmbGFncyBzZXQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldCBidXQgaV9ibG9jayBjb250YWlucyBqdW5rLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0CisjLCBmdXp6eQorbXNnaWQgIkBBIEB4IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gICIKK21zZ3N0ciAiQEEgY+G6pXUgdHLDumMgaWNvdW50OiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmdcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgaW52YWxpZCBwaHlzaWNhbCBibG9jayAlYiwgbGVuICVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMTkKKyMsIGZ1enp5Cittc2dpZCAiIgorIkBpICVpIGhhcyBhIGR1cGxpY2F0ZSBAeCBtYXBwaW5nXG4iCisiXHQobG9naWNhbCBAYiAlYywgQG4gcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIGPDsyBt4buZdCBwaOG6oW0gdmkgQG5cbiIKKyJcdChAYiBo4bujcCBsw70gJWMsIEBiIHbhuq10IGzDvSBAbiAlYiwgZMOgaSAlTilcbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBtZW1vcnkgZm9yIGVuY3J5cHRlZCBkaXJlY3RvcnkgbGlzdFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMjQKK21zZ2lkICJAQSBtZW1vcnkgZm9yIGVuY3J5cHRlZCBAZCBsaXN0XG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBjb3JydXB0IEB4IGhlYWRlci4gICIKK21zZ3N0ciAiQGIgQGEgJWIgYuG7iyBo4buPbmcgKHTDqm4gQG4pLiAgIgorCisjLiBALWV4cGFuZGVkOiBUaW1lc3RhbXAocykgb24gaW5vZGUgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRpbWVzdGFtcChzKSBvbiBAaSAlaSBiZXlvbmQgMjMxMC0wNC0wNCBhcmUgbGlrZWx5IHByZS0xOTcwLlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLlxuCisjLiBALWV4cGFuZGVkOiBQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNTEKK21zZ2lkICIiCisiXG4iCisiUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIEBicyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgQGkuLi5cbiIKKyJQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBAbSBAYnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIsSQ4bqhbmcgY2jhuqF5IG3hu5l0IHPhu5EgbOG6p24gcXVhIHRow6ptIMSR4buDIHRow6FvIGfhu6EgY8OhYyBAYiDEkcOjIHR1ecOqbiBi4buRXG4iCisiYuG7n2kgbmhp4buBdSBAaS4uLlxuIgorIkzhuqduIHF1YSAxQjogxJFhbmcgcXXDqXQgbOG6oWkgdMOsbSBAYiBAbS5cbiIKKworIy4gQC1leHBhbmRlZDogbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAlaToKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1NworIywgYy1mb3JtYXQKK21zZ2lkICJAbSBAYihzKSBpbiBAaSAlaToiCittc2dzdHIgIkBiIEBtIHRyb25nIEBpICVpOiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIGlub2RlcyAoJWkpOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcXXDqXQgY8OhYyBuw7p0IHRow7RuZyB0aW4gKCVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKGlub2RlX2R1cF9tYXApOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgQGkgQEIgKEBpX2R1cF9tYXApOiAlbVxuIgorbXNnc3RyICJAQSBAQiBAaSAoQGlfZHVwX21hcCk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGJsb2NrcyBpbiBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgQGJzIGluIEBpICVpICglcyk6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBs4bq3cCBs4bqhaSB0csOqbiBjw6FjIEBiIHRyb25nIEBpICVpICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGFkanVzdGluZyByZWZjb3VudCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE4NyBlMmZzY2svcHJvYmxlbS5jOjE1NDkKK21zZ2lkICJFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIEBhIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkWnhu4F1IGNo4buJbmggc+G7kSDEkeG6v20gdGhhbSBjaGnhur91IGNobyBAYiBAYSAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3NcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTk3Cittc2dpZCAiUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIEBpcyB3aXRoIEBtIEBic1xuIgorbXNnc3RyICJM4bqnbiBxdWEgMUM6IMSRYW5nIHF1w6l0IGPDoWMgdGjGsCBt4bulYyB0w6xtIEBpIGPDsyBAYiBAbVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAiTOG6p24gcXVhIDFEOiDEkWFuZyDEkWnhu4F1IGhvw6AgY8OhYyBAYiBAbVxuIgorCisjLiBALWV4cGFuZGVkOiBGaWxlICVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSkgXG4KKyMuIEAtZXhwYW5kZWQ6ICAgaGFzICVyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIwOAorbXNnaWQgIiIKKyJGaWxlICVRIChAaSAjJWksIG1vZCB0aW1lICVJTSkgXG4iCisiICBoYXMgJXIgQG0gQGIocyksIHNoYXJlZCB3aXRoICVOIGZpbGUocyk6XG4iCittc2dzdHIgIiIKKyJU4bqtcCB0aW4gJVEgKEBpICMlaSwgZ2nhu50gc+G7rWEgxJHhu5VpICVJTSkgXG4iCisiICBjw7MgJXIgQGIgQG0sIGNoaWEgc+G6uyB24bubaSAlTiB04bqtcCB0aW46XG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0JVEgKGlub2RlICMlaSwgbW9kIHRpbWUgJUlNKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTQKK21zZ2lkICJcdCVRIChAaSAjJWksIG1vZCB0aW1lICVJTSlcbiIKK21zZ3N0ciAiXHQlUSAoQGkgIyVpLCBnaeG7nSBz4butYSDEkeG7lWkgJUlNKVxuIgorCisjLiBALWV4cGFuZGVkOiBcdDxmaWxlc3lzdGVtIG1ldGFkYXRhPlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMTkKK21zZ2lkICJcdDxAZiBtZXRhZGF0YT5cbiIKK21zZ3N0ciAiXHQ8c2nDqnUgZOG7ryBsaeG7h3UgQGY+XG4iCisKKyMuIEAtZXhwYW5kZWQ6IChUaGVyZSBhcmUgJU4gaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI0Cittc2dpZCAiIgorIihUaGVyZSBhcmUgJU4gQGlzIGNvbnRhaW5pbmcgQG0gQGJzLilcbiIKKyJcbiIKK21zZ3N0ciAiIgorIihDw7MgJU4gQGlzIGNo4bupYSBAYiBAbS4pXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjkKK21zZ2lkICIiCisiQG0gQGJzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJAYiBAbSDEkcOjIMSRxrDhu6NjIGfDoW4gbOG6oWkgaGF5IG5ow6JuIGLhuqNuLlxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIG5ow6JuIGLhuqNuIHThuq1wIHRpbjogJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4CisjLCBmdXp6eQorbXNnaWQgIlBhc3MgMUU6IE9wdGltaXppbmcgQHggdHJlZXNcbiIKK21zZ3N0ciAiTOG6p24gcXVhIDNBOiDEkWFuZyB04buRaSDGsHUgaG/DoSBjw6FjIHRoxrAgbeG7pWNcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIG9wdGltaXplIEB4IHRyZWUgJXAgKCVpKTogJW1cbiIKK21zZ3N0ciAiTOG7l2kgdOG7kWkgxrB1IGhvw6EgdGjGsCBt4bulYyAlcSAoJWQpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlczogCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNTgKKyMsIGZ1enp5Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICLEkGFuZyB04buRaSDGsHUgaG/DoSBjw6FjIHRoxrAgbeG7pWM6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNzgKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIG5hcnJvd2VyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyODMKK21zZ2lkICJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI5MAorbXNnaWQgIlBhc3MgMjogQ2hlY2tpbmcgQGQgc3RydWN0dXJlXG4iCittc2dzdHIgIkzhuqduIHF1YSAyOiDEkWFuZyBraeG7g20gdHJhIGPhuqV1IHRyw7pjIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkNvbiBz4buRIEBpIEBuIGNobyBk4bqldSBjaOG6pW0g4oCcLuKAnSB0cm9uZyBAaSBAZCAlaS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgIkBFIGPDsyBz4buRIGhp4buHdSBAaSBAbjogJURpLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAlRGkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwNQorbXNnaWQgIkBFIGhhcyBARC91bnVzZWQgQGkgJURpLiAgIgorbXNnc3RyICJARSBjw7MgQGkgQEQvY2jGsGEgZMO5bmcgJURpLiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIkBFIEBMIMSR4bq/biDigJwu4oCdICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcG9pbnRzIHRvIGlub2RlICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMxNQorbXNnaWQgIkBFIHBvaW50cyB0byBAaSAoJURpKSBsb2NhdGVkIGluIGEgYmFkIEBiLlxuIgorbXNnc3RyICJARSBjaOG7iSB04bubaSBAaSAoJURpKSBu4bqxbSB0cm9uZyBAYiBzYWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAlUCAoJURpKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzIwCittc2dpZCAiQEUgQEwgdG8gQGQgJVAgKCVEaSkuXG4iCittc2dzdHIgIkBFIEBMIMSR4bq/biBAZCAlUCAoJURpKS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyNQorbXNnaWQgIkBFIEBMIHRvIHRoZSBAci5cbiIKK21zZ3N0ciAiQEUgQEwgdOG7m2kgQHIuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzMwCittc2dpZCAiQEUgaGFzIGlsbGVnYWwgY2hhcmFjdGVycyBpbiBpdHMgbmFtZS5cbiIKK21zZ3N0ciAiQEUgY8OzIHTDqm4gY2jhu6lhIGvDvSB04buxIGPhuqVtLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiVGhp4bq/dSDigJwu4oCdIHRyb25nIEBpIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWlzc2luZyAnLi4nIGluIEBkIEBpICVpLlxuIgorbXNnc3RyICJUaGnhur91IOKAnC4u4oCdIHRyb25nIEBpIEBkICVpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGaXJzdCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKSBzaG91bGQgYmUgJy4nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0NQorbXNnaWQgIkZpcnN0IEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpICglcCkgQHMgJy4nXG4iCittc2dzdHIgIkBlIOKAnCVEbuKAnSB0aOG7qSBuaOG6pXQgKEBpPSVEaSkgdHJvbmcgQGkgQGQgJWkgKCVwKSBAcyDigJwu4oCdXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiQGUg4oCcJURu4oCdIHRo4bupIGhhaSAoQGk9JURpKSB0cm9uZyBAaSBAZCAlaSBAcyDigJwuLuKAnVxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZhZGRyIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJRiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM1NQorbXNnaWQgImlfZmFkZHIgQEYgJUlGLCBAcyB6ZXJvLlxuIgorbXNnc3RyICLEkOG7i2EgY2jhu4kgaV9mYWRkciBjaG8gbsO6dCBpbmpvZGUgJWkgKCVRKSBsw6AgJUlGLCBjw7JuIG7Dqm4gbMOgIHPhu5Ega2jDtG5nLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsIEBGICVJZiwgQHMgc+G7kSBraMO0bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyBz4buRIGtow7RuZy5cbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCittc2dpZCAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZyYWcgQEYgJU4sIEBzIHPhu5Ega2jDtG5nLlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiaV9mc2l6ZSBARiAlTiwgQHMgc+G7kSBraMO0bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaGFzIGludmFsaWQgbW9kZSAoJUltKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzgwCittc2dpZCAiQGkgJWkgKCVRKSBoYXMgQG4gbW9kZSAoJUltKS5cbiIKK21zZ3N0ciAiQGkgJWkgKCVRKSBjw7MgY2jhur8gxJHhu5kgQG4gKCVJbSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGNvcnJ1cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODUKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkBpIEBkICVpLCAlQiwgaGnhu4d1ICVOOiBAZCBi4buLIGjhu49uZ1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5MAorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBmaWxlbmFtZSB0b28gbG9uZ1xuIgorbXNnc3RyICJAaSBAZCAlaSwgJUIsIGhp4buHdSAlTjogdMOqbiB04bqtcCB0aW4gcXXDoSBkw6BpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM5NQorbXNnaWQgIkBkIEBpICVpIGhhcyBhbiB1bmFsbG9jYXRlZCAlQi4gICIKK21zZ3N0ciAiQGkgQGQgJWkgY8OzIG3hu5l0ICVCIGNoxrBhIGPhuqVwIHBow6F0LiAgIgorCisjLiBALWV4cGFuZGVkOiAnLicgZGlyZWN0b3J5IGVudHJ5IGluIGRpcmVjdG9yeSBpbm9kZSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQwMAorIywgYy1mb3JtYXQKK21zZ2lkICInLicgQGQgQGUgaW4gQGQgQGkgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuIgorbXNnc3RyICJAZSBAZCDigJwu4oCdIHRyb25nIEBpIEBkICVpIGtow7RuZyDEkcaw4bujYyBjaOG6pW0gZOG7qXQgYuG6sW5nIE5VTEwgKHbDtCBnacOhIHRy4buLKVxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkBlIEBkIOKAnC4u4oCdIHRyb25nIEBpIEBkICVpIGtow7RuZyDEkcaw4bujYyBjaOG6pW0gZOG7qXQgYuG6sW5nIE5VTEwgKHbDtCBnacOhIHRy4buLKVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgY2hhcmFjdGVyIGRldmljZS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDEwCittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBjaGFyYWN0ZXIgQHYuXG4iCittc2dzdHIgIkBpICVpICglUSkgbMOgIEB2IGvDvSB04buxIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGzDoCBAdiBAYiBASS5cbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MjAKK21zZ2lkICJARSBpcyBkdXBsaWNhdGUgJy4nIEBlLlxuIgorbXNnc3RyICJARSBsw6AgQGUg4oCcLuKAnSB0csO5bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuLicgZW50cnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQyNQorbXNnaWQgIkBFIGlzIGR1cGxpY2F0ZSAnLi4nIEBlLlxuIgorbXNnc3RyICJARSBsw6AgQGUg4oCcLi7igJ0gdHLDuW5nLlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAiTOG7l2kgbuG7mWkgYuG7mToga2jDtG5nIHTDrG0gdGjhuqV5IHRow7RuZyB0aW4gdGjGsCBt4bulYyAoZGlyX2luZm8pIHbhu4EgJWkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkBFIGPDsyByZWNfbGVuICVEciwgQHMgJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaWNvdW50IHN0cnVjdHVyZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4iCittc2dzdHIgIkBBIGPhuqV1IHRyw7pjIGljb3VudDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgaXRlcmF0aW5nIG92ZXIgZGlyZWN0b3J5IGJsb2NrczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGl0ZXJhdGluZyBvdmVyIEBkIEBiczogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGzhurdwIGzhuqFpIHRyw6puIGPDoWMgQGIgQGQ6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrICViIChpbm9kZSAlaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ1MAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGQgQGIgJWIgKEBpICVpKTogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyBAYiBAZCAlYiAoQGkgJWkpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBnaGkgQGIgQGQgJWIgKEBpICVpKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrIGZvciBpbm9kZSAlaSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQEEgbmV3IEBkIEBiIGZvciBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICJAQSBAYiBAZCBt4bubaSBjaG8gQGkgJWkgKCVzKTogJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgZGVhbGxvY2F0aW5nIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGVhbGxvY2F0aW5nIEBpICVpOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgaOG7p3kgY+G6pXAgcGjDoXQgQGkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBlbnRyeSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGUgZm9yICcuJyBpbiAlcCAoJWkpIGlzIGJpZy5cbiIKK21zZ3N0ciAiQGQgQGUgxJHhu5FpIHbhu5tpIOKAnC7igJ0gdHJvbmcgJXAgKCVpKSBxdcOhIGzhu5tuLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgRklGTy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDc1Cittc2dpZCAiQGkgJWkgKCVRKSBpcyBhbiBASSBGSUZPLlxuIgorbXNnc3RyICJAaSAlaSAoJVEpIGzDoCBt4buZdCBGSUZPIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgc29ja2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODAKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIHNvY2tldC5cbiIKK21zZ3N0ciAiQGkgJWkgKCVRKSBsw6AgbeG7mXQg4buVIGPhuq9tIEBJLlxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHRvICVOLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0ODUKK21zZ2lkICJTZXR0aW5nIGZpbGV0eXBlIGZvciBARSB0byAlTi5cbiIKK21zZ3N0ciAixJDEg25nIMSR4bq3dCBraeG7g3UgdOG6rXAgdGluIGNobyBARSB0aMOgbmggJU4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDkwCittc2dpZCAiQEUgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgQHMgJU4pLlxuIgorbXNnc3RyICJARSBjw7Mga2nhu4N1IHThuq1wIHRpbiBraMO0bmcgxJHDum5nICjEkcOjICVEdCwgQHMgJU4pLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBmaWxldHlwZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ5NQorbXNnaWQgIkBFIGhhcyBmaWxldHlwZSBzZXQuXG4iCittc2dzdHIgIkBFIMSR4bq3dCBraeG7g3UgdOG6rXAgdGluLlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwMAorbXNnaWQgIkBFIGhhcyBhIEB6IG5hbWUuXG4iCittc2dzdHIgIkBFIGPDsyB0w6puIEB6LlxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIkxpw6puIGvhur90IG3hu4FtICVRIChAaSAjJWkpIEBuLlxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIkBhIEBiIEBGIEBuICglSWYpLlxuIgorCisjLiBALWV4cGFuZGVkOiBmaWxlc3lzdGVtIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIHN1cGVyYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUxNQorbXNnaWQgIkBmIGNvbnRhaW5zIGxhcmdlIGZpbGVzLCBidXQgbGFja3MgTEFSR0VfRklMRSBmbGFnIGluIEBTLlxuIgorbXNnc3RyICJAZiBjaOG7qWEgY8OhYyB04bqtcCB0aW4gbOG7m24gY8OybiB0aGnhur91IGPhu50gTEFSR0VfRklMRSB0cm9uZyBAUy5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIga2jDtG5nIMSRxrDhu6NjIHRoYW0gY2hp4bq/dVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgxJHGsOG7o2MgdGhhbSBjaGnhur91IGhhaSBs4bqnblxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzAKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtaW4gaGFzaFxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgY8OzIGNodeG7l2kgZHV5IG5o4bqldCB04buRaSB0aGnhu4N1IHNhaVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuIgorbXNnc3RyICJAcCBAaCAlZDogJUIgY8OzIGNodeG7l2kgZHV5IG5o4bqldCB04buRaSDEkWEgc2FpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkBoIEBuICVkICglcSkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSk6IGJhZCBibG9jayBudW1iZXIgJWIuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0NAorbXNnaWQgIkBwIEBoICVkICglcSk6IGJhZCBAYiBudW1iZXIgJWIuXG4iCittc2dzdHIgIkBwIEBoICVkICglcSk6IHPhu5EgQGIgc2FpICViLlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogcm9vdCBub2RlIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgaXMgQG5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IG7DunQgZ+G7kWMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIkBwIEBoICVkOiAlQiBjw7MgZ2nhu5tpIGjhuqFuIEBuICglTilcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIkBwIEBoICVkOiAlQiBjw7Mgc+G7kSDEkeG6v20gQG4gKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU2OQorbXNnaWQgIkBwIEBoICVkOiAlQiBoYXMgYW4gdW5vcmRlcmVkIGhhc2ggdGFibGVcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIGPDsyBt4buZdCBi4bqjbmcgY2h14buXaSBkdXkgbmjhuqV0IGtow7RuZyDEkeG6t3QgdGjhu6kgdOG7sVxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGludmFsaWQgZGVwdGggKCVOKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NzQKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIEBuIGRlcHRoICglTilcbiIKK21zZ3N0ciAiQHAgQGggJWQ6ICVCIGPDsyBjaGnhu4F1IHPDonUgQG4gKCVOKVxuIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBmb3VuZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc5Cittc2dpZCAiRHVwbGljYXRlIEBFIGZvdW5kLiAgIgorbXNnc3RyICJUw6xtIHRo4bqleSBARSB0csO5bmcuICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS5cbgorIy4gQC1leHBhbmRlZDogUmVuYW1lIHRvICVzCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODQKKyMsIG5vLWMtZm9ybWF0Cittc2dpZCAiIgorIkBFIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4iCisiUmVuYW1lIHRvICVzIgorbXNnc3RyICIiCisiQEUgY8OzIHTDqm4gdOG6rXAgdGluIGtow7RuZyBkdXkgbmjhuqV0LlxuIgorIlRoYXkgxJHhu5VpIHTDqm4gdGjDoG5oICVzIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgZW50cnkgJyVEbicgZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1ODkKK21zZ2lkICIiCisiRHVwbGljYXRlIEBlICclRG4nIGZvdW5kLlxuIgorIlx0TWFya2luZyAlcCAoJWkpIHRvIGJlIHJlYnVpbHQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJUw6xtIHRo4bqleSBAZSDigJwlRG7igJ0gdHLDuW5nLlxuIgorIlx0TsOqbiBuaMOjbiAlcCAoJWkpIGPhuqduIMSRxrDhu6NjIHjDonkgZOG7sW5nIGzhuqFpLlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2Jsb2Nrc19oaSBARiAlTiwgQHMgc+G7kSBraMO0bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFVuZXhwZWN0ZWQgYmxvY2sgaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5OQorbXNnaWQgIlVuZXhwZWN0ZWQgQGIgaW4gQGggJWQgKCVxKS5cbiIKK21zZ3N0ciAiR+G6t3AgQGIgYuG6pXQgdGjGsOG7nW5nIHRyb25nIEBoICVkICglcSkuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgcmVmZXJlbmNlcyBpbm9kZSAlRGkgaW4gZ3JvdXAgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwMworbXNnaWQgIkBFIHJlZmVyZW5jZXMgQGkgJURpIGluIEBnICVnIHdoZXJlIF9JTk9ERV9VTklOSVQgaXMgc2V0LlxuIgorbXNnc3RyICJARSB0aGFtIGNoaeG6v3UgxJHhur9uIEBpICVEaSB0cm9uZyBAZyAlZyDhu58gduG7iyB0csOtIMSR4bq3dCBfSU5PREVfVU5JTklULlxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIHJlZmVyZW5jZXMgaW5vZGUgJURpIGZvdW5kIGluIGdyb3VwICVnJ3MgdW51c2VkIGlub2RlcyBhcmVhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MDgKK21zZ2lkICJARSByZWZlcmVuY2VzIEBpICVEaSBmb3VuZCBpbiBAZyAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbiIKK21zZ3N0ciAiIgorIkBFIHRoYW0gY2hp4bq/dSDEkeG6v24gQGkgJURpIMSRxrDhu6NjIHTDrG0gdHJvbmcgdsO5bmcgbsO6dCB0aMO0bmcgdGluIGtow7RuZyBkw7luZyBj4bunYSBAZyAiCisiJWcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyBz4buRIGtow7RuZy5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLlxuIgorbXNnc3RyICJAcCBAaCAlZDogbsO6dCBn4buRYyBAblxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjIzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQHAgQGggJWQ6IG7DunQgZ+G7kWMgQG5cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpLCAlQiwgb2Zmc2V0ICVOOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MjgKKyMsIGZ1enp5Cittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IEBkIGhhcyBubyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGkgQGQgJWksICVCLCBoaeG7h3UgJU46IEBkIGLhu4sgaOG7j25nXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBJbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjM4Cittc2dpZCAiSW5saW5lIEBkIEBpICVpIHNpemUgKCVOKSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogRW5jcnlwdGVkIGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgdG9vIHNob3J0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NDgKK21zZ2lkICJFbmNyeXB0ZWQgQEUgaXMgdG9vIHNob3J0LlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICJM4bqnbiAzOiDEkGFuZyBraeG7g20gdHJhIGto4bqjIG7Eg25nIGvhur90IG7hu5FpIGPhu6dhIEBkXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjYwCittc2dpZCAiQHIgbm90IGFsbG9jYXRlZC4gICIKK21zZ3N0ciAiQ2jGsGEgY+G6pXAgcGjDoXQgQHIuICAiCisKKyMuIEAtZXhwYW5kZWQ6IE5vIHJvb20gaW4gbG9zdCtmb3VuZCBkaXJlY3RvcnkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY2NQorbXNnaWQgIk5vIHJvb20gaW4gQGwgQGQuICAiCittc2dzdHIgIktow7RuZyBjw7MgY2jhu5cgY8OybiB0cuG7kW5nIHRyb25nIEBkIEBsLiAgIgorCisjLiBALWV4cGFuZGVkOiBVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgJWkgKCVwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5jb25uZWN0ZWQgQGQgQGkgJWkgKCVwKVxuIgorbXNnc3RyICJAaSBAZCAlaSBraMO0bmcgxJHGsOG7o2Mga+G6v3QgbuG7kWkgKCVwKVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3NQorbXNnaWQgIi9AbCBub3QgZm91bmQuICAiCittc2dzdHIgIi9AbCBraMO0bmcgdMOsbSB0aOG6pXkuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgc2hvdWxkIGJlICVxICglZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY4MAorbXNnaWQgIicuLicgaW4gJVEgKCVpKSBpcyAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIgorbXNnc3RyICLigJwuLuKAnSB0cm9uZyAlUSAoJWkpIGzDoCAlUCAoJWopLCBAcyAlcSAoJWQpLlxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgb3Igbm9uLWV4aXN0ZW50IC9sb3N0K2ZvdW5kLiAgQ2Fubm90IHJlY29ubmVjdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjg1Cittc2dpZCAiQmFkIG9yIG5vbi1leGlzdGVudCAvQGwuICBDYW5ub3QgcmVjb25uZWN0LlxuIgorbXNnc3RyICJDw7MgL0BsIHNhaSBoYXkga2jDtG5nIHThu5NuIHThuqFpIG7Dqm4ga2jDtG5nIHRo4buDIGvhur90IG7hu5FpIGzhuqFpLlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIHLhu5luZyAvQGw6ICVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICJLaMO0bmcgdGjhu4Mga+G6v3QgbuG7kWkgbOG6oWkgJWk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgY+G7kSB0w6xtIC9AbDogJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19ibG9jazogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzA1CisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGI6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfQGI6ICVtIHRyb25nIGtoaSBj4buRIHThuqFvIEBkIC9AbFxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2lub2RlOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AaTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19AaTogJW0gdHJvbmcga2hpIGPhu5EgdOG6oW8gQGQgL0BsXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X2Rpcl9AYjogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IEBkIEBiXG4iCittc2dzdHIgImV4dDJmc19uZXdfZGlyX0BiOiAlbSB0cm9uZyBraGkgxJFhbmcgdOG6oW8gQGIgQGQgbeG7m2lcbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX3dyaXRlX2Rpcl9ibG9jazogJW0gd2hpbGUgd3JpdGluZyB0aGUgZGlyZWN0b3J5IGJsb2NrIGZvciAvbG9zdCtmb3VuZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX3dyaXRlX2Rpcl9AYjogJW0gd2hpbGUgd3JpdGluZyB0aGUgQGQgQGIgZm9yIC9AbFxuIgorbXNnc3RyICJleHQyZnNfd3JpdGVfZGlyX0BiOiAlbSB0cm9uZyBraGkgZ2hpIEBiIEBkIGNobyAvQGxcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRaeG7gXUgY2jhu4luaCBz4buRIMSR4bq/bSBAaSB0csOqbiBAaSAlaVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIHPhu61hIGNo4buvYSBuw7p0IGNoYSBj4bunYSBAaSAlaTogJW1cbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogQ291bGRuJ3QgZml4IHBhcmVudCBvZiBpbm9kZSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgZGlyZWN0b3J5IGVudHJ5XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNvdWxkbid0IGZpeCBwYXJlbnQgb2YgQGkgJWk6IENvdWxkbid0IGZpbmQgcGFyZW50IEBkIEBlXG4iCisiXG4iCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4Mgc+G7rWEgY2jhu69hIG7DunQgY2hhIGPhu6dhIEBpICVpOiBraMO0bmcgdMOsbSB0aOG6pXkgQGUgQGQgY2hhXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNyZWF0aW5nIHJvb3QgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyByb290IEBkICglcyk6ICVtXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB04bqhbyBAZCBn4buRYyAoJXMpOiAlbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyAvbG9zdCtmb3VuZCBkaXJlY3RvcnkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNyZWF0aW5nIC9AbCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdOG6oW8gQGQgL0BsICglcyk6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJAciBraMO0bmcgcGjhuqNpIEBkIG7Dqm4gaOG7p3kgYuG7jy5cbiIKKworIy4gQC1leHBhbmRlZDogQ2Fubm90IHByb2NlZWQgd2l0aG91dCBhIHJvb3QgaW5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc2MAorbXNnaWQgIkNhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSBAci5cbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHRp4bq/cCB04bulYyBraGkga2jDtG5nIGPDsyBAci5cbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgbm90IGEgZGlyZWN0b3J5IChpbm89JWkpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3MAorIywgYy1mb3JtYXQKK21zZ2lkICIvQGwgaXMgbm90IGEgQGQgKGlubz0laSlcbiIKK21zZ3N0ciAiL0BsIGtow7RuZyBwaOG6o2kgQGQgKGlubz0laSlcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaGFzIGlubGluZSBkYXRhXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc3NQorbXNnaWQgIi9AbCBoYXMgaW5saW5lIGRhdGFcbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLlxuCisjLiBALWV4cGFuZGVkOiBQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4MAorbXNnaWQgIiIKKyJDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9AbC5cbiIKKyJQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQiCittc2dzdHIgIiIKKworIy4gQC1leHBhbmRlZDogSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyFcbgorIy4gQC1leHBhbmRlZDogTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc4NQorbXNnaWQgIiIKKyJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuIgorIk1vdmUgZGF0YSBvZmYgdGhlIEBmIGFuZCByZS1ydW4gZTJmc2NrLlxuIgorIlxuIgorbXNnc3RyICIiCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIGVuY3J5cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTAKKyMsIGZ1enp5Cittc2dpZCAiL0BsIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICLhuqJuaCAoJXMpIMSRw6MgxJHGsOG7o2MgbcOjIGjDs2FcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxNzk3Cittc2dpZCAiUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3Rvcmllc1xuIgorbXNnc3RyICJM4bqnbiBxdWEgM0E6IMSRYW5nIHThu5FpIMawdSBob8OhIGPDoWMgdGjGsCBt4bulY1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBkaXJzX3RvX2hhc2ggaXRlcmF0b3I6ICVtXG4iCittc2dzdHIgIkzhu5dpIHThuqFvIGLhu5kgbOG6t3AgbOG6oWkgdGjGsCBt4bulYyB04bubaSBixINtIChkaXJzX3RvX2hhc2gpOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIkzhu5dpIHThu5FpIMawdSBob8OhIHRoxrAgbeG7pWMgJXEgKCVkKTogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICLEkGFuZyB04buRaSDGsHUgaG/DoSBjw6FjIHRoxrAgbeG7pWM6ICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODI5Cittc2dpZCAiUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzXG4iCittc2dzdHIgIkzhuqduIHF1YSA0OiDEkWFuZyBraeG7g20gdHJhIGPDoWMgc+G7kSDEkeG6v20gdGhhbSBjaGnhur91XG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiQGkgQHUgQHogJWkuICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIkBpIEB1ICVpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHJlZiBjb3VudCBpcyAlSWwsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ0Cittc2dpZCAiQGkgJWkgcmVmIGNvdW50IGlzICVJbCwgQHMgJU4uICAiCittc2dzdHIgIkBpICVpIGPDsyBz4buRIMSR4bq/bSB0aGFtIGNoaeG6v3UgJUlsLCBAcyAlTi4gICIKKworIy4gQC1leHBhbmRlZDogV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbgorIy4gQC1leHBhbmRlZDogXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbgorIy4gQC1leHBhbmRlZDogaW5vZGVfbGlua19pbmZvWyVpXSBpcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IHNob3VsZCBiZSB0aGUgc2FtZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4Cittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKyJD4bqiTkggQsOBTzogR+G6tlAgTOG7lkkgTOG6rFAgVFLDjE5IIFRST05HIEUyRlNDSyFcbiIKKyJcdEhP4bq2QyBOR8av4bucSSBOw4BPIMSQQU5HIEtJ4buCTSBUUkEgTeG7mFQgSOG7hiBUSOG7kE5HIFThuqxQIFRJTiDEkMODIEzhuq5QICjEkOG7mE5HKS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGzDoCAlTiwgQGkuaV9saW5rc19jb3VudCBsw6AgJUlsOiBAcyB0csO5bmcuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAiTOG6p24gNTogxJFhbmcga2nhu4NtIHRyYSB0aMO0bmcgdGluIHTDs20gdOG6r3QgbmjDs21cbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJDaMawYSDEkeG6t3QgxJHhu5kgxJHhu4dtIHThuqFpIGvhur90IHRow7pjIGPhu6dhIEBCIEBJLiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4Cittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGIgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJDaMawYSDEkeG6t3QgxJHhu5kgxJHhu4dtIHThuqFpIGvhur90IHRow7pjIGPhu6dhIEBCIEBiLiIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIktow6FjIGJp4buHdCBAQiBAYjogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiS2jDoWMgYmnhu4d0IEBCIEBpOiAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJT4buRIMSR4bq/bSBjw6FjIEBpIHLhuqNuaCBraMO0bmcgxJHDum5nIGNobyBAZyAjJWcgKCVpLCDEkcOjIMSR4bq/bT0laikuXG4iCisKKyMuIEAtZXhwYW5kZWQ6IERpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTE4Cittc2dpZCAiRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJT4buRIMSR4bq/bSBjw6FjIHRoxrAgbeG7pWMga2jDtG5nIMSRw7puZyBjaG8gQGcgIyVnICglaSwgxJHDoyDEkeG6v209JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MjMKK21zZ2lkICJGcmVlIEBpcyBjb3VudCB3cm9uZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJT4buRIMSR4bq/bSBjw6FjIEBpIHLhuqNuaCBraMO0bmcgxJHDum5nICglaSwgxJHDoyDEkeG6v209JWopLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIyVnICglYiwgY291bnRlZD0lYykuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkyOAorbXNnaWQgIkZyZWUgQGJzIGNvdW50IHdyb25nIGZvciBAZyAjJWcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAiU+G7kSDEkeG6v20gY8OhYyBAYiBy4bqjbmgga2jDtG5nIMSRw7puZyBjaG8gQGcgIyVnICglYiwgxJHDoyDEkeG6v209JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MzMKK21zZ2lkICJGcmVlIEBicyBjb3VudCB3cm9uZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJT4buRIMSR4bq/bSBjw6FjIEBiIHLhuqNuaCBraMO0bmcgxJHDum5nICglYiwgxJHDoyDEkeG6v209JWMpLlxuIgorCisjLiBALWV4cGFuZGVkOiBQUk9HUkFNTUlORyBFUlJPUjogZmlsZXN5c3RlbSAoIyVOKSBiaXRtYXAgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgYml0bWFwIAorIy4gQC1leHBhbmRlZDogZW5kcG9pbnRzICglaSwgJWopXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzOAorbXNnaWQgIiIKKyJQUk9HUkFNTUlORyBFUlJPUjogQGYgKCMlTikgQEIgZW5kcG9pbnRzICglYiwgJWMpIGRvbid0IG1hdGNoIGNhbGN1bGF0ZWQgQEIgIgorImVuZHBvaW50cyAoJWksICVqKVxuIgorbXNnc3RyICIiCisiTOG7lkkgTOG6rFAgVFLDjE5IOiB0cm9uZyBAZiAoIyVOKSBjw7MgY8OhYyDEkWnhu4NtIGN14buRaSBAQiAoJWIsICVjKSBraMO0bmcgdMawxqFuZyDhu6luZyAiCisiduG7m2kgY8OhYyDEkWnhu4NtIGN14buRaSBAQiDEkcOjIHTDrW5oICglaSwgJWopXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk0NAorbXNnaWQgIkludGVybmFsIGVycm9yOiBmdWRnaW5nIGVuZCBvZiBiaXRtYXAgKCVOKVxuIgorbXNnc3RyICJM4buXaSBu4buZaSBi4buZOiDEkWFuZyBsw6BtIHF14bqleSBxdcOhIGvhur90IHRow7pjIGPhu6dhIG3huqNuZyDhuqNuaCAoJU4pXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgaW5vZGUgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAaSBAQjogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHNhbyBjaMOpcCB2w6BvIEBCIEBpIHRoYXkgdGjhur86ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgYmxvY2sgYml0bWFwOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29weWluZyBpbiByZXBsYWNlbWVudCBAYiBAQjogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHNhbyBjaMOpcCB2w6BvIEBCIEBiIHRoYXkgdGjhur86ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGJsb2NrKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGIocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgQkxPQ0tfVU5JTklUXG4iCittc2dzdHIgIkPDoWMgQGIgY+G7p2EgQGcgJWcgxJFhbmcgxJHGsOG7o2MgZMO5bmcsIGPDsm4gQGcgY8OzIG5ow6NuIGzDoCBCTE9DS19VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUocykgaW4gdXNlIGJ1dCBncm91cCBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaShzKSBpbiB1c2UgYnV0IEBnIGlzIG1hcmtlZCBJTk9ERV9VTklOSVRcbiIKK21zZ3N0ciAiQ8OhYyBAaSBj4bunYSBAZyAlZyDEkWFuZyDEkcaw4bujYyBkw7luZywgY8OybiBAZyBjw7MgbmjDo24gbMOgIElOT0RFX1VOSU5JVFxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBpbm9kZSBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAaSBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBSZWNyZWF0ZSBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMDEKK21zZ2lkICJSZWNyZWF0ZSBAaiIKK21zZ3N0ciAiVOG6oW8gbOG6oWkgQGoiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwNgorbXNnaWQgIlVwZGF0ZSBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOIgorbXNnc3RyICJD4bqtcCBuaOG6rXQgdGjDtG5nIHRpbiBo4bqhbiBuZ+G6oWNoIGNobyBraeG7g3UgaOG6oW4gbmfhuqFjaCAlTiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc2V0dGluZyBibG9jayBncm91cCBjaGVja3N1bSBpbmZvOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igc2V0dGluZyBAYiBAZyBjaGVja3N1bSBpbmZvOiAlbVxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhurd0IHRow7RuZyB0aW4gdOG7lW5nIGtp4buDbSBAYiBAZzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdyaXRpbmcgZmlsZSBzeXN0ZW0gaW5mbzogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGdoaSB0aMO0bmcgdGluIGjhu4cgdGjhu5FuZzogJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDIxCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGZsdXNoaW5nIHdyaXRlcyB0byBzdG9yYWdlIGRldmljZTogJW1cbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4bqpeSBk4buvIGxp4buHdSBzYXUgbOG7h25oIGdoaSBsw6puIHRoaeG6v3QgYuG7iyBsxrB1IHRy4buvOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwMjYKKyMsIGZ1enp5Cittc2dpZCAiRXJyb3Igd3JpdGluZyBxdW90YSBpbmZvIGZvciBxdW90YSB0eXBlICVOOiAlbVxuIgorbXNnc3RyICJD4bqtcCBuaOG6rXQgdGjDtG5nIHRpbiBo4bqhbiBuZ+G6oWNoIGNobyBraeG7g3UgaOG6oW4gbmfhuqFjaCAlTiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuaGFuZGxlZCBlcnJvciBjb2RlICgweCV4KSFcbiIKK21zZ3N0ciAiTcOjIGzhu5dpIGNoxrBhIHF14bqjbiBsw70gKDB4JXgpIVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjIyNzIgZTJmc2NrL3Byb2JsZW0uYzoyMjc2Cittc2dpZCAiSUdOT1JFRCIKK21zZ3N0ciAiQuG7iiBC4buOIFFVQSIKKworIzogZTJmc2NrL3F1b3RhLmM6MzMgZTJmc2NrL3F1b3RhLmM6NDYKK21zZ2lkICJpbiBtb3ZlX3F1b3RhX2lub2RlIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlZCwgZWxhcHNlZCB0aW1lOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorbXNnc3RyICJC4buZIG5o4bubIMSRw6MgY2hp4bq/bTogJWQsIHRo4budaSBnaWFuIMSRw6MgcXVhOiAlNi4zZi8lNi4zZi8lNi4zZlxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJzaXplIG9mIGlub2RlPSVkXG4iCittc2dzdHIgImvDrWNoIGPhu6EgbsO6dCB0aMO0bmcgdGluPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgInRyb25nIGtoaSBraOG7n2kgY2jhuqF5IHRp4bq/biB0csOsbmggcXXDqXQgbsO6dCB0aMO0bmcgdGluIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICJ0cm9uZyBraGkgY2jhuqF5IHRp4bq/biB0csOsbmggcXXDqXQgbsO6dCB0aMO0bmcgdGluIgorCisjOiBlMmZzY2svc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2FsbGluZyBleHQyZnNfYmxvY2tfaXRlcmF0ZSBmb3IgaW5vZGUgJWQiCittc2dzdHIgIiIKKyJ0cm9uZyBraGkgZ+G7jWkgaMOgbSBs4bq3cCBs4bqhaSBraOG7kWkg4oCcZXh0MmZzX2Jsb2NrX2l0ZXJhdGXigJ0gY2hvIG7DunQgdGjDtG5nIHRpbiAlZCIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICJ0cm9uZyBraGkgZ+G7jWkgaMOgbSDigJxleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW504oCdIGNobyBuw7p0IHRow7RuZyB0aW4gJWQiCisKKyM6IGUyZnNjay9zdXBlci5jOjI3NAorbXNnaWQgIlRydW5jYXRpbmciCittc2dzdHIgIsSQYW5nIGPhuq90IG5n4bqvbiIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc1Cittc2dpZCAiQ2xlYXJpbmciCittc2dzdHIgIsSQYW5nIHhvw6Egc+G6oWNoIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstcGFueXJjZGZrdHZERlZdIFstYiBzdXBlcmJsb2NrXSBbLUIgYmxvY2tzaXplXVxuIgorIlx0XHRbLWx8LUwgYmFkX2Jsb2Nrc19maWxlXSBbLUMgZmRdIFstaiBleHRlcm5hbF9qb3VybmFsXVxuIgorIlx0XHRbLUUgZXh0ZW5kZWQtb3B0aW9uc10gWy16IHVuZG9fZmlsZV0gZGV2aWNlXG4iCittc2dzdHIgIiIKKyJDw6FjaCBkw7luZzogJXMgWy1wYW55cmNkZnZ0REZWXSBbLWIgc2nDqnVfa2jhu5FpXSBbLUIgY+G7oV9raOG7kWldXG4iCisiXHRcdFstSSBraOG7kWlfxJHhu4dtX2lub2RlXSBbLVAgY+G7oV9pbm9kZV944butX2zDvV1cbiIKKyJcdFx0Wy1sfC1MIHThuq1wX3Rpbl9raOG7kWlfc2FpXSBbLUMgZmRdIFstaiBuaOG6rXRfa8O9X25nb8OgaV1cbiIKKyJcdFx0Wy1FIHTDuXlfY2jhu41uX8SRw6NfbeG7n19y4buZbmddIHRoaeG6v3RfYuG7i1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisiVHLhu6MgZ2nDunAga2jhuqluIGPhuqVwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBT4butYSBjaOG7r2EgdOG7sSDEkeG7mW5nIChraMO0bmcgY8OzIGPDonUgaOG7j2kpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIEtow7RuZyB0aGF5IMSR4buVaSBo4buHIHRo4buRbmcgdOG6rXAgdGluXG4iCisiIC15ICAgICAgICAgICAgICAgICAgIEdp4bqjIHPhu60gdHLhuqMgbOG7nWkg4oCcQ8Oz4oCdIG3hu41pIGPDonUgaOG7j2lcbiIKKyIgLWMgICAgICAgICAgICAgICAgICAgS2nhu4NtIHRyYSB0w6xtIGto4buRaSBzYWk6IHRow6ptIHbDoG8gZGFuaCBzw6FjaCBraOG7kWkgc2FpXG4iCisiIC1mICAgICAgICAgICAgICAgICAgIEJ14buZYyBraeG7g20gdHJhIG5nYXkgY+G6oyBraGkgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBjw7MgbmjDo24gbMOgICIKKyJz4bqhY2hcbiIKKworIzogZTJmc2NrL3VuaXguYzo4OAorIywgZnV6enkKK21zZ2lkICIiCisiIC12ICAgICAgICAgICAgICAgICAgIEJlIHZlcmJvc2VcbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAgVXNlIGFsdGVybmF0aXZlIHN1cGVyYmxvY2tcbiIKKyIgLUIgYmxvY2tzaXplICAgICAgICAgRm9yY2UgYmxvY2tzaXplIHdoZW4gbG9va2luZyBmb3Igc3VwZXJibG9ja1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICBTZXQgbG9jYXRpb24gb2YgdGhlIGV4dGVybmFsIGpvdXJuYWxcbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAgQWRkIHRvIGJhZGJsb2NrcyBsaXN0XG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIFNldCBiYWRibG9ja3MgbGlzdFxuIgorIiAteiB1bmRvX2ZpbGUgICAgICAgICBDcmVhdGUgYW4gdW5kbyBmaWxlXG4iCittc2dzdHIgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgWHXhuqV0IGNoaSB0aeG6v3RcbiIKKyIgLWIgc2nDqnVfa2jhu5FpICAgICAgICAgRMO5bmcgc2nDqnUga2jhu5FpIHhlbiBr4bq9XG4iCisiIC1CIGPhu6Ffa2jhu5FpICAgICAgICAgICBCdeG7mWMga8OtY2ggY+G7oSBj4bunYSBraOG7kWkga2hpIHTDrG0gc2nDqnUga2jhu5FpXG4iCisiIC1qIG5o4bqtdF9rw71fYsOqbl9uZ2/DoGkgxJDhurd0IMSR4buLYSDEkWnhu4NtIGPhu6dhIG5o4bqtdCBrw70gYsOqbiBuZ2/DoGlcbiIKKyIgLWwgdOG6rXBfdGluX2to4buRaV9zYWkgIFRow6ptIHbDoG8gZGFuaCBzw6FjaCBjw6FjIGto4buRaSBzYWlcbiIKKyIgLUwgdOG6rXBfdGluX2to4buRaV9zYWkgIMSQ4bq3dCBkYW5oIHPDoWNoIGPDoWMga2jhu5FpIHNhaVxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXUvJXUgZmlsZXMgKCUwZC4lZCUlIG5vbi1jb250aWd1b3VzKSwgJWxsdS8lbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIlczogJXUvJXUgdOG6rXAgdGluICglMGQuJWQlJSBraMO0bmcga+G7gSBuaGF1KSwgJWxsdS8lbGx1IGto4buRaVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IGlub2RlIMSRw6MgxJHGsOG7o2MgZMO5bmcgKCUyLjJmJSUsIHbGsOG7o3QgcXXDoSAldSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBmaWxlICglMGQuJWQlJSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBub24tY29udGlndW91cyBmaWxlcyAoJTBkLiVkJSUpXG4iCittc2dzdHJbMF0gIiUxMnUgdOG7h3AgdGluIGtow7RuZyBsaeG7gW4ga+G7gSBuaGF1ICglMGQuJWQlJSlcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBub24tY29udGlndW91cyBkaXJlY3RvcnkgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yaWVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSB0aMawIG3hu6VjIGtow7RuZyBr4buBIG5oYXUgKCUwZC4lZCUlKVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgICAgICAgIyBvZiBpbm9kZXMgd2l0aCBpbmQvZGluZC90aW5kIGJsb2NrczogJXUvJXUvJXVcbiIKK21zZ3N0ciAiICAgICAgICAgICAgICMgc+G7kSBpbm9kZSBjw7Mga2jhu5FpIGluZC9kaW5kL3RpbmQ6ICV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIMSQ4buTIHRo4buLIMSR4buZIHPDonU6ICIKKworIzogZTJmc2NrL3VuaXguYzoxOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEybGx1IGJsb2NrIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnaWRfcGx1cmFsICIlMTJsbHUgYmxvY2tzIHVzZWQgKCUyLjJmJSUsIG91dCBvZiAlbGx1KVxuIgorbXNnc3RyWzBdICIlMTJsbHUga2jhu5FpIMSRw6MgZMO5bmcgKCUyLjJmJSUsIHbGsOG7o3QgcXXDoSAlbGx1KVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSBraOG7kWkgaOG7j25nXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgbGFyZ2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGxhcmdlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUgdOG6rXAgdGluIHF1w6EgbOG7m25cbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUgdOG6rXAgdGluIHRoxrDhu51uZ1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGRpcmVjdG9yeVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGRpcmVjdG9yaWVzXG4iCittc2dzdHJbMF0gIiUxMnUgdGjGsCBt4bulY1xuIgorCisjOiBlMmZzY2svdW5peC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGNoYXJhY3RlciBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSB0aGnhur90IGLhu4sga8O9IHThu7FcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBibG9jayBkZXZpY2UgZmlsZVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJsb2NrIGRldmljZSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IHThu4dwIHRpbiB0aGnhur90IGLhu4sga2jhu5FpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZmlmb1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGZpZm9zXG4iCittc2dzdHJbMF0gIiUxMnUgdOG6rXAgdGluIGZpZm9cbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSBsacOqbiBr4bq/dFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHN5bWJvbGljIGxpbmsiCittc2dpZF9wbHVyYWwgIiUxMnUgc3ltYm9saWMgbGlua3MiCittc2dzdHJbMF0gIiUxMnUgbGnDqm4ga+G6v3QgbeG7gW0iCisKKyM6IGUyZnNjay91bml4LmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rKVxuIgorbXNnaWRfcGx1cmFsICIgKCV1IGZhc3Qgc3ltYm9saWMgbGlua3MpXG4iCittc2dzdHJbMF0gIiAoJXUgbGnDqm4ga+G6v3QgbeG7gW0gbmhhbmgpXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgc29ja2V0XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgc29ja2V0c1xuIgorbXNnc3RyWzBdICIlMTJ1IHNvY2tldFxuIgorCisjOiBlMmZzY2svdW5peC5jOjIyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBmaWxlc1xuIgorbXNnc3RyWzBdICIlMTJ1IHThuq1wIHRpblxuIgorCisjOiBlMmZzY2svdW5peC5jOjIzNSBtaXNjL2JhZGJsb2Nrcy5jOjk5MyBtaXNjL3R1bmUyZnMuYzoyODc4IG1pc2MvdXRpbC5jOjEyNgorIzogcmVzaXplL21haW4uYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIKK21zZ3N0ciAidHJvbmcga2hpIGTDsiB0w6xtIHhlbSAlcyDEkcOjIGfhuq9uIGvhur90IGNoxrBhLiIKKworIzogZTJmc2NrL3VuaXguYzoyNTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIkPhuqNuaCBiw6FvISAgJXMgxJHDoyDEkcaw4bujYyBn4bqvbi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW8hICAlcyDEkWFuZyDEkcaw4bujYyBkw7luZy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbW91bnRlZC5cbiIKK21zZ3N0ciAiJXMgxJHDoyBn4bqvbiBr4bq/dC5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlcyDEkWFuZyDEkcaw4bujYyBkw7luZy5cbiIKKworIzogZTJmc2NrL3VuaXguYzoyNjkKK21zZ2lkICIiCisiQ2Fubm90IGNvbnRpbnVlLCBhYm9ydGluZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyB0aeG6v3AgdOG7pWMgbsOqbiBo4buneSBi4buPLlxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjI3MQorbXNnaWQgIiIKKyJcbiIKKyJcbiIKKyJXQVJOSU5HISEhICBUaGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLiAgIElmIHlvdSBjb250aW51ZSB5b3UgKioqV0lMTCoqKlxuIgorImNhdXNlICoqKlNFVkVSRSoqKiBmaWxlc3lzdGVtIGRhbWFnZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlxuIgorIkPhuqJOSCBCw4FPISEhIEjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHDoyBn4bqvbiBr4bq/dC4gVuG6q24gdGnhur9wIHThu6VjIHRow6xcbiIKKyLEkcOieSBjw7MgdGjhu4MgbMOgIG5ndXnDqm4gbmjDom4gKioqTMOATSBI4buOTkcgTuG6tk5HKioqIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4uXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6Mjc2Cittc2dpZCAiRG8geW91IHJlYWxseSB3YW50IHRvIGNvbnRpbnVlIgorbXNnc3RyICJC4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gdGnhur9wIHThu6VjIgorCisjOiBlMmZzY2svdW5peC5jOjI3OAorbXNnaWQgImNoZWNrIGFib3J0ZWQuXG4iCittc2dzdHIgImtp4buDbSB0cmEgYuG7iyBo4buneSBi4buPLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjM3MQorbXNnaWQgIiBjb250YWlucyBhIGZpbGUgc3lzdGVtIHdpdGggZXJyb3JzIgorbXNnc3RyICIgY2jhu6lhIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gY8OzIGzhu5dpIgorCisjOiBlMmZzY2svdW5peC5jOjM3MworbXNnaWQgIiB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkIgorbXNnc3RyICIgY2jGsGEgdGjDoW8gZ+G6r24ga+G6v3Qgc+G6oWNoIgorCisjOiBlMmZzY2svdW5peC5jOjM3NQorbXNnaWQgIiBwcmltYXJ5IHN1cGVyYmxvY2sgZmVhdHVyZXMgZGlmZmVyZW50IGZyb20gYmFja3VwIgorbXNnc3RyICIgdMOtbmggbsSDbmcgY+G7p2Egc2nDqnUga2jhu5FpIGNow61uaCBraMOhYyB24bubaSBi4bqjbiBzYW8gbMawdSIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgxJHDoyDEkcaw4bujYyBn4bqvbiBr4bq/dCAldSBs4bqnbiBtw6Aga2jDtG5nIMSRxrDhu6NjIGtp4buDbSB0cmEiCisKKyM6IGUyZnNjay91bml4LmM6Mzg2Cittc2dpZCAiIGhhcyBmaWxlc3lzdGVtIGxhc3QgY2hlY2tlZCB0aW1lIGluIHRoZSBmdXR1cmUiCittc2dzdHIgIiBjw7MgZ2nhu50ga2nhu4NtIHRyYSBo4buHIHRo4buRbmcgdOG6rXAgdGluIGzhuqduIGN14buRaSBjw7luZyB0cm9uZyB0xrDGoW5nIGxhaSIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIgxJHDoyBjaOG6oXkgdHJvbmcgJXUgbmfDoHkgbcOgIGtow7RuZyDEkcaw4bujYyBraeG7g20gdHJhIgorCisjOiBlMmZzY2svdW5peC5jOjQwMQorbXNnaWQgIiwgY2hlY2sgZm9yY2VkLlxuIgorbXNnc3RyICIsIGtp4buDbSB0cmEgYuG7iyDDqXAgYnXhu5ljLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjQzNAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogY2xlYW4sICV1LyV1IGZpbGVzLCAlbGx1LyVsbHUgYmxvY2tzIgorbXNnc3RyICIlczogc+G6oWNoLCAldS8ldSB04bqtcCB0aW4sICVsbHUvJWxsdSBraOG7kWkiCisKKyM6IGUyZnNjay91bml4LmM6NDU0Cittc2dpZCAiIChjaGVjayBkZWZlcnJlZDsgb24gYmF0dGVyeSkiCittc2dzdHIgIiAoa2nhu4NtIHRyYSBi4buLIGhvw6NuOyBjaOG6oXkgYuG6sW5nIHBpbikiCisKKyM6IGUyZnNjay91bml4LmM6NDU3Cittc2dpZCAiIChjaGVjayBhZnRlciBuZXh0IG1vdW50KSIKK21zZ3N0ciAiIChraeG7g20gdHJhIHNhdSBs4bqnbiBn4bqvbiBr4bq/dCBr4bq/IHRp4bq/cCkiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIiAoa2nhu4NtIHRyYSBzYXUgJWxkIGzhuqduIGfhuq9uIGvhur90KSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAiTOG7lkk6IGtow7RuZyB0aOG7gyBt4bufIOKAnC9kZXYvbnVsbOKAnSAoJXMpXG4iCisKKyM6IGUyZnNjay91bml4LmM6Njc5Cittc2dpZCAiSW52YWxpZCBFQSB2ZXJzaW9uLlxuIgorbXNnc3RyICJQaGnDqm4gYuG6o24gRUEga2jDtG5nIGjhu6NwIGzhu4cuXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCisjLCBmdXp6eQorbXNnaWQgIkludmFsaWQgcmVhZGFoZWFkIGJ1ZmZlciBzaXplLlxuIgorbXNnc3RyICJUaGFtIHPhu5EgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5rbm93biBleHRlbmRlZCBvcHRpb246ICVzXG4iCittc2dzdHIgIlTDuXkgY2jhu41uIMSRw6MgbeG7nyBy4buZbmcgbOG6oTogJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJH4bq3cCBs4buXaSBjw7ogcGjDoXAgdHJvbmcgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGUyZnNjayAoJXMsIGTDsm5nIHPhu5EgJWQpXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIGjhu6NwIGzhu4cgaMOzYSBtw7QgdOG6oyB04bqtcCB0aW4gJWQ6ICVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAiTcO0IHThuqMgdOG6rXAgdGluIHRow7RuZyB0aW4gaG/DoCBjaOG7iW5oIGtow7RuZyBo4bujcCBs4buHIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAiQ8OzIHRo4buDIGNo4buJIHJhIG3hu5l0IHRyb25nIG5o4buvbmcgdMO5eSBjaOG7jW4gLXAvLWEsIC1uIHbDoCAteS4iCisKKyM6IGUyZnNjay91bml4LmM6ODY1CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSAtdCBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHZlcnNpb24gb2YgZTJmc2NrLlxuIgorbXNnc3RyICJUw7l5IGNo4buNbiDigJwtdOKAnSBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyB0cm9uZyBwaGnDqm4gYuG6o24gZTJmc2NrIG7DoHkuXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODk2IGUyZnNjay91bml4LmM6OTczIG1pc2MvZTJpbml0cmRfaGVscGVyLmM6MzMwCisjOiBtaXNjL3R1bmUyZnMuYzoxNTk4IG1pc2MvdHVuZTJmcy5jOjE4OTMgbWlzYy90dW5lMmZzLmM6MTkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmFibGUgdG8gcmVzb2x2ZSAnJXMnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgcGjDom4gZ2nhuqNpIOKAnCVz4oCdIgorCisjOiBlMmZzY2svdW5peC5jOjk1MgorbXNnaWQgIlRoZSAtbiBhbmQgLUQgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiSGFpIHTDuXkgY2jhu41uIOKAnC1u4oCdIHbDoCDigJwtROKAnSBraMO0bmcgdMawxqFuZyB0aMOtY2ggduG7m2kgbmhhdS4iCisKKyM6IGUyZnNjay91bml4LmM6OTU3Cittc2dpZCAiVGhlIC1uIGFuZCAtYyBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJIYWkgdMO5eSBjaOG7jW4g4oCcLW7igJ0gdsOgIOKAnC1j4oCdIGtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSBuaGF1LiIKKworIzogZTJmc2NrL3VuaXguYzo5NjIKK21zZ2lkICJUaGUgLW4gYW5kIC1sLy1MIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIkhhaSB0w7l5IGNo4buNbiDigJwtbuKAnSB2w6Ag4oCcLWwvLUzigJ0ga2jDtG5nIHTGsMahbmcgdGjDrWNoIHbhu5tpIG5oYXUuIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorIywgZnV6enkKK21zZ2lkICJUaGUgLUQgYW5kIC1FIGZpeGVzX29ubHkgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiSGFpIHTDuXkgY2jhu41uIOKAnC1u4oCdIHbDoCDigJwtROKAnSBraMO0bmcgdMawxqFuZyB0aMOtY2ggduG7m2kgbmhhdS4iCisKKyM6IGUyZnNjay91bml4LmM6OTkyCisjLCBmdXp6eQorbXNnaWQgIlRoZSAtRSBibWFwMmV4dGVudCBhbmQgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICJIYWkgdMO5eSBjaOG7jW4g4oCcLW7igJ0gdsOgIOKAnC1E4oCdIGtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSBuaGF1LiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICJLaMO0bmcgY2hvIHBow6lwIHPhu60gZOG7pW5nIMSR4buTbmcgdGjhu51pIGPhuqMgaGFpIHTDuXkgY2jhu41uIOKAnC0tY+KAnSB2w6Ag4oCcLS1sL0zigJ0uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcg4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBz4buRIG5ndXnDqm5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisixJDhu5FpIHPhu5Ega2jDtG5nIHRodeG7mWMgc+G7kSBraMO0bmcgaOG7o3AgbOG7hyDEkeG7kWkgduG7m2kgLSVjICjigJwlc+KAnSlcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJNTVAgaW50ZXJ2YWwgaXMgJXUgc2Vjb25kcyBhbmQgdG90YWwgd2FpdCB0aW1lIGlzICV1IHNlY29uZHMuIFBsZWFzZSAiCisid2FpdC4uLlxuIgorbXNnc3RyICIiCisia2hv4bqjbmcgbmjhu4twIE1NUCBsw6AgJXUgZ2nDonkgY+G7mW5nIHbhu5tpIHThu5VuZyB0aOG7nWkgZ2lhbiBjaOG7nSBsw6AgJXUgZ2nDonkuIFZ1aSBsw7JuZyAiCisiY2jhu50uLi5cbiIKKworIyBJdGVtIGluIHRoZSBtYWluIG1lbnUgdG8gc2VsZWN0IHRoaXMgcGFja2FnZQorIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAidHJvbmcga2hpIGtp4buDbSB0cmEga2jhu5FpIE1NUCIKKworIzogZTJmc2NrL3VuaXguYzoxMjE3IG1pc2MvdHVuZTJmcy5jOjI3OTIKK21zZ2lkICIiCisiSWYgeW91IGFyZSBzdXJlIHRoZSBmaWxlc3lzdGVtIGlzIG5vdCBpbiB1c2Ugb24gYW55IG5vZGUsIHJ1bjpcbiIKKyIndHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge2RldmljZX0nXG4iCittc2dzdHIgIiIKKyJO4bq/dSBi4bqhbiBraMO0bmcgY2jhuq9jIGzDoCBo4buHIHRo4buRbmcgdOG6rXAgdGluIGtow7RuZyDEkWFuZyBz4butIGThu6VuZyBi4bqldCBr4buzIG7DunQgbsOgbywgIgorImNo4bqheSBs4buHbmg6XG4iCisi4oCcdHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge3RoaeG6v3RfYuG7i33igJ1cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIGto4buRaSBNTVAuIgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyLEkGFuZyBnaGkgxJHDqCBsw6puIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHDoyBjw7MgOyBjw7MgdGjhu4MgbMOgbSB2aeG7h2MgbsOgeSBkw7luZyBjw6J1IGzhu4duaDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTI5MyBtaXNjL2UydW5kby5jOjI2NCBtaXNjL21rZTJmcy5jOjI1ODEgbWlzYy90dW5lMmZzLmM6MjY0NAorIzogcmVzaXplL21haW4uYzoyMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgeG/DoSAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgY8OgaSDEkeG6t3QgdOG6rXAgdGluIHVuZG9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzYzCittc2dpZCAiRXJyb3I6IGV4dDJmcyBsaWJyYXJ5IHZlcnNpb24gb3V0IG9mIGRhdGUhXG4iCittc2dzdHIgIkzhu5dpOiBwaGnDqm4gYuG6o24gdGjGsCB2aeG7h24gZXh0MmZzIHF1w6EgY8WpLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjEzNzAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gaW5pdGlhbGl6ZSBwcm9ncmFtIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSBraOG7n2kgdOG6oW8gY2jGsMahbmcgdHLDrG5oIgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHREw7luZyAlcywgJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDA1Cittc2dpZCAibmVlZCB0ZXJtaW5hbCBmb3IgaW50ZXJhY3RpdmUgcmVwYWlycyIKK21zZ3N0ciAiY+G6p24gdGhp4bq/dCBi4buLIGN14buRaSDEkeG7gyBz4butYSBjaOG7r2EgdGhlbyBraeG7g3UgdMawxqFuZyB0w6FjIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uXG4iCittc2dzdHIgIiVzOiAlcyDEkWFuZyBj4buRIHNhbyBsxrB1IGThu7EgcGjDsm5nIGPDoWMga2jhu5FpIGThu7EgdHLhu68uLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY4Cittc2dpZCAiU3VwZXJibG9jayBpbnZhbGlkLCIKK21zZ3N0ciAiU2nDqnUga2jhu5FpIGtow7RuZyBo4bujcCBs4buHLCIKKworIzogZTJmc2NrL3VuaXguYzoxNDY5Cittc2dpZCAiR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4iCittc2dzdHIgIkPDsyB24bq7IGzDoCBjw6FjIG3DtCB04bqjIG5ow7NtIHNhaS4uLiIKKworIzogZTJmc2NrL3VuaXguYzoxNDc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcyB3aGlsZSB1c2luZyB0aGUgYmFja3VwIGJsb2NrcyIKK21zZ3N0ciAiJXM6ICVzIHRyb25nIGtoaSDEkeG7jWMgbsO6dCB0aMO0bmcgdGluIGto4buRaSBo4buPbmciCisKKyM6IGUyZnNjay91bml4LmM6MTQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrXG4iCittc2dzdHIgIiVzOiDEkWFuZyB0cuG7nyB24buBIHNpw6p1IGto4buRaSBn4buRY1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTIKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gcmV2aXNpb24gaXMgYXBwYXJlbnRseSB0b28gaGlnaCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGUyZnNjay5cbiIKKyIoT3IgdGhlIGZpbGVzeXN0ZW0gc3VwZXJibG9jayBpcyBjb3JydXB0KVxuIgorIlxuIgorbXNnc3RyICIiCisiQ8OzIHbhursgbMOgIGLhuqNuIHPhu61hIMSR4buVaSBo4buHIHRo4buRbmcgdOG6rXAgdGluIHF1w6EgY2FvIGNobyBwaGnDqm4gYuG6o24gZTJmc2NrIG7DoHlcbiIKKyIoaG/hurdjIHNpw6p1IGto4buRaSBo4buHIHRo4buRbmcgdOG6rXAgdGluIGLhu4sgaOG7j25nKS5cbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTE5Cittc2dpZCAiQ291bGQgdGhpcyBiZSBhIHplcm8tbGVuZ3RoIHBhcnRpdGlvbj9cbiIKK21zZ3N0ciAiUGjDom4gdsO5bmcgbsOgeSBjw7MgdGjhu4MgY8OzIMSR4buZIGTDoGkgYuG6sW5nIGtow7RuZz9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIKK21zZ3N0ciAiIgorIkLhuqFuIHBo4bqjaSBjw7MgcXV54buBbiB0cnV5IGPhuq1wICVzIHbDoG8gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiwgaG/hurdjIGPDsyBxdXnhu4FuIHNpw6p1IHF14bqjbiAiCisidHLhu4tcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICJDw7MgdGjhu4MgbMOgIHRoaeG6v3QgYuG7iyBraMO0bmcgdOG7k24gdOG6oWksIGhv4bq3YyB0aGnhur90IGLhu4sgdHJhbyDEkeG7lWk/XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUyOQorbXNnaWQgIkZpbGVzeXN0ZW0gbW91bnRlZCBvciBvcGVuZWQgZXhjbHVzaXZlbHkgYnkgYW5vdGhlciBwcm9ncmFtP1xuIgorbXNnc3RyICIiCisiSOG7hyB0aOG7kW5nIHThuq1wIHRpbiDEkcOjIMSRxrDhu6NjIGfhuq9uIGvhur90IGhheSBt4bufIGhvw6BuIHRvw6BuIGLhu59pIGNoxrDGoW5nIHRyw6xuaCBraMOhYz9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTMzCittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IGRldmljZT9cbiIKK21zZ3N0ciAiQ8OzIHRo4buDIGzDoCB0aGnhur90IGLhu4sga2jDtG5nIHThu5NuIHThuqFpP1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIsSQxKlhIGLhu4sgY2jhu5FuZyBnaGk7IGjDo3kgZMO5bmcgdMO5eSBjaOG7jW4g4oCcLW7igJ0gxJHhu4MgY2jhuqF5XG4iCisidmnhu4djIGtp4buDbSB0cmEgY2jhu4kgxJHhu41jIHRyw6puIHRoaeG6v3QgYuG7iyDEkcOzLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgIkzhuqV5IHBoacOqbiBi4bqjbiBlMmZzY2sgbeG7m2kgaMahbiEiCisKKyM6IGUyZnNjay91bml4LmM6MTY0OAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2hlY2tpbmcgam91cm5hbCBmb3IgJXMiCittc2dzdHIgInRyb25nIGtoaSBraeG7g20gdHJhIG5o4bqtdCBrw70gZXh0MyB0w6xtICVzIgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKKyMsIGZ1enp5Cittc2dpZCAiQ2Fubm90IHByb2NlZWQgd2l0aCBmaWxlIHN5c3RlbSBjaGVjayIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHRp4bq/cCB04bulYyBraGkga2jDtG5nIGPDsyBAci5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjYyCittc2dpZCAiIgorIldhcm5pbmc6IHNraXBwaW5nIGpvdXJuYWwgcmVjb3ZlcnkgYmVjYXVzZSBkb2luZyBhIHJlYWQtb25seSBmaWxlc3lzdGVtICIKKyJjaGVjay5cbiIKK21zZ3N0ciAiIgorIkPhuqNuaCBiw6FvOiDEkWFuZyBi4buPIHF1YSB2aeG7h2MgcGjhu6VjIGjhu5NpIG5o4bqtdCBrw70gdsOsIMSRYW5nIGtp4buDbSB0cmEgaOG7hyB0aOG7kW5nIHThuq1wICIKKyJ0aW4gbeG7mXQgY8OhY2ggY2jhu4kgxJHhu41jLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgImtow7RuZyB0aOG7gyDEkeG6t3QgY+G7nSBzacOqdSBraOG7kWkgdHLDqm4gJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjgwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBzacOqdSBraOG7kWkgbmjhuq10IGvDvSAhXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBjb3JydXB0ZWQgaW4gJXNcbiIKK21zZ3N0ciAiTmjhuq10IGvDvSDEkcOjIGfhu6EgYuG7j1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlY292ZXJpbmcgam91cm5hbCBvZiAlcyIKK21zZ3N0ciAidHJvbmcga2hpIHBo4bulYyBo4buTaSBuaOG6rXQga8O9IGV4dDMgY+G7p2EgJXMiCisKKyM6IGUyZnNjay91bml4LmM6MTcxMAorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKToiCittc2dzdHIgIiVzIGPDsyB0w61uaCBuxINuZyBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7ozoiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVzOiAlcyB0cm9uZyBraGkgxJHhu41jIG7DunQgdGjDtG5nIHRpbiBraOG7kWkgaOG7j25nXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc3MgorbXNnaWQgIlRoaXMgZG9lc24ndCBib2RlIHdlbGwsIGJ1dCB3ZSdsbCB0cnkgdG8gZ28gb24uLi5cbiIKK21zZ3N0ciAixJDDonkga2jDtG5nIHBo4bqjaSBiw6FvIHRyxrDhu5tjIMSRaeG7gW0gaGF5LCBuaMawbmcgY2jDum5nIHTDtGkgc+G6vSBj4buRIHRo4butLi4uXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsICglZCBibG9ja3MpOiAiCittc2dzdHIgIsSQYW5nIHThuqFvIG5o4bqtdCBrw70gKCVkIGto4buRaSk6ICIKKworIzogZTJmc2NrL3VuaXguYzoxODI4Cittc2dpZCAiIERvbmUuXG4iCittc2dzdHIgIiBYb25nLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzAKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIG5o4bqtdCBrw70gxJHDoyDEkcaw4bujYyB04bqhbyBs4bqhaSDigJQgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBsw7pjIG7DoHkgbMOgIGV4dDMgbOG6oWkgKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgzNgorbXNnaWQgImFib3J0ZWQiCittc2dzdHIgImLhu4sgaOG7p3kgYuG7jyIKKworIzogZTJmc2NrL3VuaXguYzoxODM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBlMmZzY2sgY2FuY2VsZWQuXG4iCittc2dzdHIgIiVzOiBlMmZzY2sgYuG7iyBo4buneSBi4buPLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjUKK21zZ2lkICJSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi5cbiIKK21zZ3N0ciAixJBhbmcga2jhu59pIGNo4bqheSBs4bqhaSBob8OgbiB0b8OgbiBlMmZzY2suLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY5Cittc2dpZCAid2hpbGUgcmVzZXR0aW5nIGNvbnRleHQiCittc2dzdHIgInRyb25nIGtoaSDEkeG6t3QgbOG6oWkgbmfhu68gY+G6o25oIgorCisjOiBlMmZzY2svdW5peC5jOjE5MTMgZTJmc2NrL3V0aWwuYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKlxuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICoqKioqIEjhu4YgVEjhu5BORyBU4bqsUCBUSU4gQuG7iiBT4busQSDEkOG7lEkgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogKioqKiogUkVCT09UIFNZU1RFTSAqKioqKlxuIgorbXNnc3RyICIlczogKioqKiogSMODWSBLSOG7nkkgxJDhu5hORyBM4bqgSSBMSU5VWCAqKioqKlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5MjUgZTJmc2NrL3V0aWwuYzo3NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKipcbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVzOiAqKioqKioqKioqIEPhuqJOSCBCw4FPOiBI4buHIHRo4buRbmcgdOG6rXAgdGluIHbhuqtuIGPDsm4gY8OzIGzhu5dpICoqKioqKioqKipcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTQgbWlzYy91dGlsLmM6OTMKK21zZ2lkICJ5WSIKK21zZ3N0ciAiY0N5WSIKKworIzogZTJmc2NrL3V0aWwuYzoxOTUKK21zZ2lkICJuTiIKK21zZ3N0ciAia0tuTiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTYKK21zZ2lkICJhQSIKK21zZ3N0ciAiIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NworbXNnaWQgIiAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSAiCittc2dzdHIgIiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTMKK21zZ2lkICI8eT4iCittc2dzdHIgIjxjPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTUKK21zZ2lkICI8bj4iCittc2dzdHIgIjxrPiIKKworIzogZTJmc2NrL3V0aWwuYzoyMTcKK21zZ2lkICIgKHkvbikiCittc2dzdHIgIiAoYy9rKSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgIsSRw6MgaOG7p3khXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY0Cittc2dpZCAieWVzIHRvIGFsbFxuIgorbXNnc3RyICIiCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgImPDs1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2OAorbXNnaWQgIm5vXG4iCittc2dzdHIgImtow7RuZ1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8ga2jDtG5nXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjgyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlcz8geWVzXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gY8OzXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAieWVzIgorbXNnc3RyICJjw7MiCisKKyM6IGUyZnNjay91dGlsLmM6Mjg2Cittc2dpZCAibm8iCittc2dzdHIgImtow7RuZyIKKworIzogZTJmc2NrL3V0aWwuYzozMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJmc2NrX3JlYWRfYml0bWFwczogaWxsZWdhbCBiaXRtYXAgYmxvY2socykgZm9yICVzIgorbXNnc3RyICJlMmZzY2tfcmVhZF9iaXRtYXBzOiBraOG7kWkgbeG6o25nIOG6o25oIGPhuqVtIGNobyAlcyIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICLEkWFuZyDEkeG7jWMgbeG6o25nIOG6o25oIGtp4buDdSBj4bqjIGhhaSBuw7p0IHRow7RuZyB0aW4gdsOgIGto4buRaSIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgxJHhu41jIG3huqNuZyDhuqNuaCBjaG8gJXMiCisKKyM6IGUyZnNjay91dGlsLmM6MzMxCittc2dpZCAid3JpdGluZyBibG9jayBhbmQgaW5vZGUgYml0bWFwcyIKK21zZ3N0ciAixJFhbmcgZ2hpIGPDoWMgbeG6o25nIOG6o25oIGtp4buDdSBraOG7kWkgdsOgIG7DunQgdGjDtG5nIHRpbiIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBs4bqhaSBjw6FjIG3huqNuZyDhuqNuaCBraeG7g3Uga2jhu5FpIHbDoCBuw7p0IHRow7RuZyB0aW4gY2hvICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXM6IE3DglUgVEhV4bqqTiBC4bqkVCBUSMav4bucTkc6IEjDg1kgVOG7sCBDSOG6oFkgZnNjay5cbiIKKyJcdCh04bupYyBsw6Aga2jDtG5nIGPDsyB0w7l5IGNo4buNbiDigJwtYeKAnSBoYXkg4oCcLXDigJ0pLlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIlbDuW5nIG5o4bubIMSRxrDhu6NjIGTDuW5nOiAlbHVrLyVsdWsgKCVsdWsvJWx1ayksICIKKworIzogZTJmc2NrL3V0aWwuYzo0MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWVtb3J5IHVzZWQ6ICVsdSwgIgorbXNnc3RyICJWw7luZyBuaOG7myDEkcaw4bujYyBkw7luZzogJWx1LCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDQwCisjLCBjLWZvcm1hdAorbXNnaWQgInRpbWU6ICU1LjJmLyU1LjJmLyU1LjJmXG4iCittc2dzdHIgInRo4budaSBnaWFuOiAlNS4yZi8lNS4yZi8lNS4yZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICJlbGFwc2VkIHRpbWU6ICU2LjNmXG4iCittc2dzdHIgInRo4budaSBnaWFuIMSRw6MgcXVhOiAlNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBuw7p0IHRow7RuZyB0aW4gJWx1IHRyb25nICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBuw7p0IHRow7RuZyB0aW4gJWx1IHRyb25nICVzIgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIiIKKyJNw4JVIFRIVeG6qk46IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJFhbmcgxJHGsOG7o2Mgc+G7rWEgY2jhu69hIHRyb25nIGtoaSBs4buHbmggZnNjayDEkWFuZyAiCisiY2jhuqF5LlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjcyCittc2dpZCAiZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKK21zZ3N0ciAiaG/DoG4gdOG6pXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisiQ8OhY2ggZMO5bmc6ICVzIFstYiBj4buhX2to4buRaV0gWy1pIHThuq1wX3Rpbl/EkeG6p3VfdsOgb10gWy1vIHThuq1wX3Rpbl/EkeG6p3VfcmFdIFstIgorInN2d25mXVxuIgorIiAgICAgICBbLWMgc+G7kV9raOG7kWlfY8O5bmdfbMO6Y10gWy1kIGjhu4dfc+G7kV/EkeG7o2lfxJHhu41jXSBbLWUgc+G7kV904buRaV/EkWFfa2jhu5FpX3jhuqV1XVxuIgorIiAgICAgICBbLXAgc+G7kV9s4bqnbl9xdWFdIFstdCBt4bqrdV90aOG7rSBbLXQgbeG6q3VfdGjhu60gWy4uLl1dXVxuIgorIiAgICAgICB0aGnhur90X2Lhu4sgW2to4buRaV9jdeG7kWkgW2to4buRaV/EkeG6p3VdXVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IFRoZSAtbiBhbmQgLXcgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLlxuIgorIlxuIgorbXNnc3RyICIiCisiJXM6IGhhaSB0w7l5IGNo4buNbiDigJwtbuKAnSB2w6Ag4oCcLXfigJ0gbG/huqFpIHThu6sgbOG6q24gbmhhdS5cbiIKKyJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAiJTYuMmYlJSBob8OgbiB04bqldCwgJXMgxJHDoyB0csO0aSBxdWEuICglZC8lZC8lZCBs4buXaSkiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzI4Cittc2dpZCAiVGVzdGluZyB3aXRoIHJhbmRvbSBwYXR0ZXJuOiAiCittc2dzdHIgIsSQYW5nIHRo4butIHJhIGLhurFuZyBt4bqrdSBuZ+G6q3Ugbmhpw6puOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MzQ2Cittc2dpZCAiVGVzdGluZyB3aXRoIHBhdHRlcm4gMHgiCittc2dzdHIgIsSQYW5nIHRo4butIHJhIGLhurFuZyBt4bqrdSAweCIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNzggbWlzYy9iYWRibG9ja3MuYzo0NTEKK21zZ2lkICJkdXJpbmcgc2VlayIKK21zZ3N0ciAidHJvbmcga2hpIGRpIGNodXnhu4NuIHbhu4sgdHLDrSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJHacOhIHRy4buLIGzhuqEgKCVsZCkgdHJvbmcgdmnhu4djIMSR4buNYyDigJxkb19yZWFk4oCdXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buTbmcgYuG7mSBob8OhIHRoaeG6v3QgYuG7iyDigJxleHQyZnNfc3luY19kZXZpY2XigJ0iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDk2IG1pc2MvYmFkYmxvY2tzLmM6NzU4Cittc2dpZCAid2hpbGUgYmVnaW5uaW5nIGJhZCBibG9jayBsaXN0IGl0ZXJhdGlvbiIKK21zZ3N0ciAidHJvbmcga2hpIGLhuq90IMSR4bqndSBs4bq3cCBs4bqhaSBkYW5oIHPDoWNoIGPDoWMga2jhu5FpIHNhaSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgInRyb25nIGtoaSBj4bqlcCBwaMOhdCBi4buZIMSR4buHbSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAixJBhbmcga2nhu4NtIHRyYSBraOG7kWkgdHJvbmcgcGjhuqFtIHZpICVsdSDEkeG6v24gJWx1XG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAixJBhbmcga2nhu4NtIHRyYSB0w6xtIGto4buRaSBzYWkgdHJvbmcgY2jhur8gxJHhu5kgY2jhu4kgxJHhu41jXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICLEkGFuZyBraeG7g20gdHJhIHTDrG0ga2jhu5FpIHNhaSAoa2nhu4NtIHRyYSDhu58gY2jhur8gxJHhu5kgY2jhu4kgxJHhu41jKTogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIlF1w6Egbmhp4buBdSBraOG7kWkgc2FpIG7Dqm4gaOG7p3kgYuG7jyBwaMOpcCB0aOG7rVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICLEkGFuZyBraeG7g20gdHJhIHTDrG0ga2jhu5FpIHNhaSB0cm9uZyBjaOG6vyDEkeG7mSDEkeG7jWMtZ2hpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NjIwIG1pc2MvYmFkYmxvY2tzLmM6NzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZyb20gYmxvY2sgJWx1IHRvICVsdVxuIgorbXNnc3RyICJU4burIGto4buRaSAlbHUgxJHhur9uICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICLEkGFuZyDEkeG7jWMgdsOgIHNvIHPDoW5oOiAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NzgxCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gbm9uLWRlc3RydWN0aXZlIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICLEkGFuZyBraeG7g20gdHJhIHTDrG0ga2jhu5FpIHNhaSB0cm9uZyBjaOG6vyDEkeG7mSDEkeG7jWMtZ2hpIGtow7RuZyBo4buneVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4NworbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIChub24tZGVzdHJ1Y3RpdmUgcmVhZC13cml0ZSB0ZXN0KVxuIgorbXNnc3RyICLEkGFuZyBraeG7g20gdHJhIHTDrG0ga2jhu5FpIHNhaSAodGjhu60g4bufIGNo4bq/IMSR4buZIMSR4buNYy1naGkga2jDtG5nIHBow6EgaOG7p3kpXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzk0Cittc2dpZCAiIgorIlxuIgorIkludGVycnVwdCBjYXVnaHQsIGNsZWFuaW5nIHVwXG4iCittc2dzdHIgIiIKKyJcbiIKKyJN4bubaSBi4bqvdCB0w61uIGhp4buHdSBuZ+G6r3QgbsOqbiBsw6BtIHPhuqFjaFxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjg3NworIywgYy1mb3JtYXQKK21zZ2lkICJkdXJpbmcgdGVzdCBkYXRhIHdyaXRlLCBibG9jayAlbHUiCittc2dzdHIgInRyb25nIGtoaSB0aOG7rSByYSBnaGkgZOG7ryBsaeG7h3UsIGto4buRaSAlbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6OTk4IG1pc2MvdXRpbC5jOjEzMQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBtb3VudGVkOyAiCittc2dzdHIgIiVzIMSRw6MgxJHGsOG7o2MgZ+G6r24ga+G6v3Q7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIiIKKyJ0w7l5IGNo4buNbiBraOG7kWkgc2FpIChiYWRibG9ja3MpIHbhuqtuIGLhu4sgw6lwIGJ14buZYy5cbiIKKyJNb25nIOKAnC9ldGMvbXRhYuKAnSBraMO0bmcgxJHDum5nLlxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgIktow7RuZyBhbiB0b8OgbiBraGkgY2jhuqF5IGJhZGJsb2Nrcy5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEwIG1pc2MvdXRpbC5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBpcyBhcHBhcmVudGx5IGluIHVzZSBieSB0aGUgc3lzdGVtOyAiCittc2dzdHIgIkPDsyB24bq7IGzDoCAlcyDEkWFuZyDEkcaw4bujYyBo4buHIHRo4buRbmcgZMO5bmc7ICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgInbhuqtuIMOpcCBideG7mWMgYmFkYmxvY2tzIChraOG7kWkgc2FpKS5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgJXMgLSAlcyIKK21zZ3N0ciAiJXMga2jDtG5nIGjhu6NwIGzhu4cg4oCUICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMTU0CisjLCBjLWZvcm1hdAorbXNnaWQgImNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGVzdF9wYXR0ZXJuIC0gJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBj4bqlcCBwaMOhdCBi4buZIG5o4bubIGNobyBt4bqrdSB0aOG7rSAodGVzdF9wYXR0ZXJuKSDigJQgJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICJUcm9uZyBjaOG6vyDEkeG7mSBjaOG7iSDEkeG7jWMsIGPDsyB0aOG7gyBjaOG7iSByYSB04buRaSDEkWEgbeG7mXQgbeG6q3UgdGjhu60gKHRlc3RfcGF0dGVybikiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE5MAorbXNnaWQgIlJhbmRvbSB0ZXN0X3BhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIktow7RuZyBjaG8gcGjDqXAgbeG6q3UgdGjhu60gKHRlc3RfcGF0dGVybikgbmfhuqt1IG5oacOqbiB0cm9uZyBjaOG6vyDEkeG7mSBjaOG7iSDEkeG7jWMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIwNAorbXNnaWQgIiIKKyJDb3VsZG4ndCBkZXRlcm1pbmUgZGV2aWNlIHNpemU7IHlvdSBtdXN0IHNwZWNpZnlcbiIKKyJ0aGUgc2l6ZSBtYW51YWxseVxuIgorbXNnc3RyICIiCisiS2jDtG5nIHRo4buDIHjDoWMgxJHhu4tuaCBrw61jaCBj4buhIGPhu6dhIHRoaeG6v3QgYuG7iztcbiIKKyJi4bqhbiBj4bqnbiBwaOG6o2kgdOG7sSBjaOG7iSDEkeG7i25oIGvDrWNoIGPhu6EgxJHDsy5cbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjEwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBkZXZpY2Ugc2l6ZSIKK21zZ3N0ciAidHJvbmcga2hpIHRo4butIGTDsiB0w6xtIGvDrWNoIGPhu6EgY+G7p2EgdGhp4bq/dCBi4buLIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTUKK21zZ2lkICJsYXN0IGJsb2NrIgorbXNnc3RyICJraOG7kWkgY3Xhu5FpIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMjEKK21zZ2lkICJmaXJzdCBibG9jayIKK21zZ3N0ciAia2jhu5FpIMSR4bqndSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICJraOG7kWkgxJHhuqd1IGtow7RuZyBo4bujcCBs4buHICglbGx1KTogcGjhuqNpIG5o4buPIGjGoW4gJWxsdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjMxCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgZW5kIGJsb2NrICglbGx1KTogbXVzdCBiZSAzMi1iaXQgdmFsdWUiCittc2dzdHIgImto4buRaSBjdeG7kWkga2jDtG5nIGjhu6NwIGzhu4cgKCVsbHUpOiBwaOG6o2kgbMOgIGdpw6EgdHLhu4sgMzIgYsOtdCIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjg3Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW4tbWVtb3J5IGJhZCBibG9ja3MgbGlzdCIKK21zZ3N0ciAidHJvbmcga2hpIHThuqFvIGRhbmggc8OhY2ggY8OhYyBraOG7kWkgaOG7j25nIHRyb25nIGLhu5kgbmjhu5siCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI5NgorbXNnaWQgImlucHV0IGZpbGUgLSBiYWQgZm9ybWF0IgorbXNnc3RyICJ04bqtcCB0aW4gxJHhuqd1IHbDoG8gLSBzYWkgxJHhu4tuaCBk4bqhbmciCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTMwNCBtaXNjL2JhZGJsb2Nrcy5jOjEzMTMKK21zZ2lkICJ3aGlsZSBhZGRpbmcgdG8gaW4tbWVtb3J5IGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJ0cm9uZyBraGkgdGjDqm0gdsOgbyBkYW5oIHPDoWNoIGPDoWMga2jhu5FpIGjhu49uZyB0cm9uZyBi4buZIG5o4bubIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEzMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGFzcyBjb21wbGV0ZWQsICV1IGJhZCBibG9ja3MgZm91bmQuICglZC8lZC8lZCBlcnJvcnMpXG4iCittc2dzdHIgIlF1YSB4b25nLCB0w6xtIHRo4bqleSAldSBraOG7kWkgc2FpLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjg5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1wUlZmXSBbLSs9YUFjQ2REZWlqUHNTdFR1XSBbLXYgdmVyc2lvbl0gZmlsZXMuLi5cbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6ICVzIFstUlZmXSBbLSs9YUFjQ2REZWlqc1N0VHVdIFstdiBwaGnDqm5fYuG6o25dIHThuq1wX3Rpbi4uLlxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE1OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIHByb2plY3QgLSAlc1xuIgorbXNnc3RyICJwaGnDqm4gYuG6o24gc2FpIOKAlCAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjE3MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdmVyc2lvbiAtICVzXG4iCittc2dzdHIgInBoacOqbiBi4bqjbiBzYWkg4oCUICVzXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjE5IG1pc2MvbHNhdHRyLmM6MTI3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzdGF0ICVzIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSBs4bqleSBjw6FjIHRow7RuZyB0aW4gduG7gSAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBjw6FjIGPhu50gdHLDqm4gJXMiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjMxIG1pc2MvY2hhdHRyLmM6MjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZsYWdzIG9mICVzIHNldCBhcyAiCittc2dzdHIgIkPDoWMgY+G7nSBj4bunYSAlcyDEkcOjIMSR4bq3dCB0aMOgbmggIgorCisjOiBtaXNjL2NoYXR0ci5jOjI1MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhurd0IGPDoWMgY+G7nSB0csOqbiAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyNjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVmVyc2lvbiBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlBoacOqbiBi4bqjbiAlcyDEkcaw4bujYyDEkeG6t3QgdGjDoG5oICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgInRyb25nIGtoaSDEkeG6t3QgcGhpw6puIGLhuqNuIHRyw6puICVzIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIlBoacOqbiBi4bqjbiAlcyDEkcaw4bujYyDEkeG6t3QgdGjDoG5oICVsdVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjI3NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhurd0IHBoacOqbiBi4bqjbiB0csOqbiAlcyIKKworIzogbWlzYy9jaGF0dHIuYzoyOTcKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBwYXRoIHZhcmlhYmxlIGluIGNoYXR0cl9kaXJfcHJvYyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGJp4bq/biDEkcaw4budbmcgZOG6q24gdHJvbmcgY2hhdHRyX2Rpcl9wcm9jIgorCisjOiBtaXNjL2NoYXR0ci5jOjMzNworbXNnaWQgIj0gaXMgaW5jb21wYXRpYmxlIHdpdGggLSBhbmQgK1xuIgorbXNnc3RyICI9IGtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSDigJwt4oCdIHbDoCDigJwr4oCdXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MzQ1Cittc2dpZCAiTXVzdCB1c2UgJy12JywgPSwgLSBvciArXG4iCittc2dzdHIgIlBo4bqjaSBkw7luZyDigJwtduKAnSwg4oCcPeKAnSwg4oCcLeKAnSBoYXkg4oCcK+KAnVxuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICV1IgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIG7DunQgdGjDtG5nIHRpbiAlbHUgdHJvbmcgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGV4cGFuZGluZyBkaXJlY3RvcnkiCittc2dzdHIgInRyb25nIGtoaSBt4bufIHLhu5luZyAvbeG6pXQrdMOsbSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbGlua2luZyBcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSBt4bufICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjk1IG1pc2MvY3JlYXRlX2lub2RlLmM6MTIyIG1pc2MvY3JlYXRlX2lub2RlLmM6MzA2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICJ0cm9uZyBraGkgZ2hpIG7DunQgdGjDtG5nIHRpbiAlbHUgdHJvbmcgJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTM5IG1pc2MvY3JlYXRlX2lub2RlLmM6MTYzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSBj4bqvdCBuZ+G6r24gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTUwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGlub2RlICV1IgorbXNnc3RyICJ0cm9uZyBraGkgbeG7nyB2aeG7h2MgcXXDqXQgbsO6dCB0aMO0bmcgdGluIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE1NiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE4MyBtaXNjL2NyZWF0ZV9pbm9kZS5jOjkwNAorIzogbWlzYy9lMnVuZG8uYzoxNzYgbWlzYy9lMnVuZG8uYzo0NzMgbWlzYy9lMnVuZG8uYzo0NzkgbWlzYy9lMnVuZG8uYzo0ODUKKyM6IG1pc2MvbWtlMmZzLmM6MzUzCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IgorbXNnc3RyICJ0cm9uZyBraGkgY+G6pXAgcGjDoXQgYuG7mSDEkeG7h20iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGF0dHJpYnV0ZSBcIiVzXCIgb2YgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIGPDoWMgY+G7nSB0csOqbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYXR0cmlidXRlIFwiJXNcIiB0byBpbm9kZSAldSIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBuw7p0IHRow7RuZyB0aW4gJWx1IHRyb25nICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjIxMQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY2xvc2luZyBpbm9kZSAldSIKK21zZ3N0ciAidHJvbmcga2hpIGNo4bqheSB0aeG6v24gdHLDrG5oIHF1w6l0IG7DunQgdGjDtG5nIHRpbiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgY+G6pXAgcGjDoXQgYuG7mSDEkeG7h20iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mjc4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBpbm9kZSBcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSDEkeG7jWMgbsO6dCB0aMO0bmcgdGluICVsdSB0cm9uZyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNDMKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIGPDoWMgY+G7nSB0csOqbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgdHJhIHTDrG0gL23huqV0K3TDrG0iCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzgxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgdOG6oW8gdGjGsCBt4bulYyBn4buRYyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgXCIlc1wiIHRvIGNvcHkiCittc2dzdHIgInRyb25nIGtoaSBt4bufICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwMAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyB3b3JraW5nIGRpcmVjdG9yeSB0byBcIiVzXCIiCittc2dzdHIgIiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3MDgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAidHJvbmcga2hpIG3hu58gJXMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsc3RhdCBcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSBj4buRIGzhuqV5IGPDoWMgdGjDtG5nIHRpbiB24buBICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc1MQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBuw7p0IHRow7RuZyB0aW4gJWx1IHRyb25nICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2MAorIywgZnV6enkKK21zZ2lkICJtYWxsb2MgZmFpbGVkIgorbXNnc3RyICJM4buXaSBj4bqlcCBwaMOhdCB2w7luZyBuaOG7myIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZWFkIGxpbmsgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSB0aGF5IMSR4buVaSBrw61jaCBj4buhICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc3NQorbXNnaWQgInN5bWxpbmsgaW5jcmVhc2VkIGluIHNpemUgYmV0d2VlbiBsc3RhdCgpIGFuZCByZWFkbGluaygpIgorbXNnc3RyICIiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzg2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHN5bWxpbmtcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSBnaGkgbsO6dCB0aMO0bmcgdGluICVsdSB0cm9uZyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgZmlsZSBcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSBnaGkgbsO6dCB0aMO0bmcgdGluICVsdSB0cm9uZyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgbeG7nyAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgY2hhbmdpbmcgZGlyZWN0b3J5IgorbXNnc3RyICLEkWFuZyDEkeG7jWMga2jhu5FpIHRoxrAgbeG7pWMiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODMyCisjLCBjLWZvcm1hdAorbXNnaWQgImlnbm9yaW5nIGVudHJ5IFwiJXNcIiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg0NQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhurd0IHBoacOqbiBi4bqjbiB0csOqbiAlcyIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgInRyb25nIGtoaSDEkeG6t3QgY8OhYyBj4budIHRyw6puICVzIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3MAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBzYXZpbmcgaW5vZGUgZGF0YSIKK21zZ3N0ciAidHJvbmcga2hpIGto4bufaSBjaOG6oXkgdGnhur9uIHRyw6xuaCBxdcOpdCBuw7p0IHRow7RuZyB0aW4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWJmZ2hpeFZdIFstbyBzdXBlcmJsb2NrPTxudW0+XSBbLW8gYmxvY2tzaXplPTxudW0+XSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkPDoWNoIGTDuW5nOiAlcyBbLWJmaGl4Vl0gWy1vIHNpw6p1X2to4buRaT08c+G7kT5dIFstbyBj4buhX2to4buRaT08c+G7kT5dIHRoaeG6v3RfYuG7i1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICJraOG7kWkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAibGnDqm4gY3VuZyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIxOQorIywgYy1mb3JtYXQKK21zZ2lkICJHcm91cCAlbHU6IChCbG9ja3MgIgorbXNnc3RyICJOaMOzbSAlbHU6IChLaOG7kWkgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjI2CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiAgVOG7lW5nIGtp4buDbSAweCUwNHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIChFWFBFQ1RFRCAweCUwNHgpIgorbXNnc3RyICIgKEPhuqZOICAgICAgMHglMDR4KSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzMworIywgYy1mb3JtYXQKK21zZ2lkICIgICVzIHN1cGVyYmxvY2sgYXQgIgorbXNnc3RyICIgICVzIHNpw6p1IGto4buRaSB04bqhaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJQcmltYXJ5IgorbXNnc3RyICJDaMOtbmgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyMzQKK21zZ2lkICJCYWNrdXAiCittc2dzdHIgIlNhbyBsxrB1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM4Cittc2dpZCAiLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAiCittc2dzdHIgIiwgTcO0IHThuqMgbmjDs20gdOG6oWkgIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIEPDoWMga2jhu5FpIEdEVCDEkcOjIGTDoG5oIHJpw6puZyB04bqhaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiBNw7QgdOG6oyBuaMOzbSB04bqhaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNTUKK21zZ2lkICIgIEJsb2NrIGJpdG1hcCBhdCAiCittc2dzdHIgIiBN4bqjbmcg4bqjbmgga2jhu5FpIHThuqFpICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2MCBtaXNjL2R1bXBlMmZzLmM6MjcxCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIgIFThu5VuZyBraeG7g20gMHglMDR4IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjYzCittc2dpZCAiLCIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjY1Cittc2dpZCAiIgorIlxuIgorIiAiCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI2NgorIywgZnV6enkKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiLCBN4bqjbmcg4bqjbmggbsO6dCB0aMO0bmcgdGluIHThuqFpICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgQuG6o25nIG7DunQgdGjDtG5nIHRpbiB04bqhaSAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiAgJXUgZnJlZSAlcywgJXUgZnJlZSBpbm9kZXMsICV1IGRpcmVjdG9yaWVzJXMiCittc2dzdHIgIiIKKyJcbiIKKyIgICV1IHRy4buRbmcgJXMsICV1IG7DunQgcuG6o25oLCAldSB0aMawIG3hu6VjJXMiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiLCAldSB1bnVzZWQgaW5vZGVzXG4iCittc2dzdHIgIiwgJXUgbsO6dCBraMO0bmcgZMO5bmdcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICBLaOG7kWkgcuG6o25oOiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozMDQKK21zZ2lkICIgIEZyZWUgaW5vZGVzOiAiCittc2dzdHIgIiAgTsO6dCBy4bqjbmg6ICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICJ0cm9uZyBraGkgaW4gcmEgZGFuaCBzw6FjaCBjw6FjIGto4buRaSBzYWkiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIkto4buRaSBzYWk6ICV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBuw7p0IHRow7RuZyB0aW4gbmjhuq10IGvDvSIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM5MQorbXNnaWQgIndoaWxlIG9wZW5pbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAidHJvbmcga2hpIG3hu58gbsO6dCB0aMO0bmcgdGluIG5o4bqtdCBrw70iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTcKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGpvdXJuYWwgc3VwZXIgYmxvY2siCittc2dzdHIgInRyb25nIGtoaSDEkeG7jWMgc2nDqnUga2jhu5FpIG5o4bqtdCBrw70iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIlPhu5EgbWEgdGh14bqtdCB0aOG6pXkgc2nDqnUga2jhu5FpIG5o4bqtdCBrw70ga2jDtG5nIGjhu6NwIGzhu4chXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDcgbWlzYy9kdW1wZTJmcy5jOjQ5MAorbXNnaWQgIkpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAiCittc2dzdHIgIlTDrW5oIG7Eg25nIG5o4bqtdCBrw706ICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQyMAorbXNnaWQgIkpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgIgorbXNnc3RyICJLw61jaCBj4buhIG5o4bqtdCBrw706ICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisiQ2hp4buBdSBkw6BpIG5o4bqtdCBrw706ICAgICAgICAldVxuIgorIkTDo3kgbmjhuq10IGvDvTogICAgICAgICAgICAgIDB4JTA4eFxuIgorIsSQ4bqndSBuaOG6rXQga8O9OiAgICAgICAgICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDMgbWlzYy9kdW1wZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICAlc1xuIgorIkpvdXJuYWwgY2hlY2tzdW06ICAgICAgICAgMHglMDh4XG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0OAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGVycm5vOiAgICAgICAgICAgICVkXG4iCittc2dzdHIgIkzhu5dpIEpvdXJuYWw6ICAgICAgICAgICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIHNpw6p1IGto4buRaSBuaOG6rXQga8O9IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDc0Cittc2dpZCAiQ291bGRuJ3QgZmluZCBqb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVycyIKK21zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IGPDoWMgc+G7kSBtYSB0aHXhuq10IHNpw6p1IGto4buRaSBuaOG6rXQga8O9IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgICV1XG4iCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgZmlyc3QgYmxvY2s6ICAgICAgJXVcbiIKKyJKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4JTA4eFxuIgorIkpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgJXVcbiIKKyJKb3VybmFsIG51bWJlciBvZiB1c2VyczogICV1XG4iCittc2dzdHIgIiIKKyJcbiIKKyJLw61jaCBj4buhIGto4buRaSBuaOG6rXQga8O9OiAgICAgJXVcbiIKKyLEkOG7mSBkw6BpIG5o4bqtdCBrw706ICAgICAgICAgICAldVxuIgorIkto4buRaSDEkeG6p3Ugbmjhuq10IGvDvTogICAgICAgICAldVxuIgorIkTDo3kgbmjhuq10IGvDvTogICAgICAgICAgICAgIDB4JTA4eFxuIgorIsSQ4bqndSBuaOG6rXQga8O9OiAgICAgICAgICAgICAgJXVcbiIKKyJT4buRIG5nxrDhu51pIGTDuW5nIG5o4bqtdCBrw706ICAgICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICJOZ8aw4budaSBkw7luZyBuaOG6rXQga8O9OiAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGLhu5kgbmjhu5sgxJHhu4MgcGjDom4gdMOhY2ggdMO5eSBjaOG7jW4hXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiVGhhbSBz4buRIHNpw6p1IGto4buRaSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlRoYW0gc+G7kSBrw61jaCBj4buhIGto4buRaSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU4MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIGV4dGVuZGVkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0c3VwZXJibG9jaz08c3VwZXJibG9jayBudW1iZXI+XG4iCisiXHRibG9ja3NpemU9PGJsb2Nrc2l6ZT5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkNo4buJIHJhIHTDuXkgY2jhu41uIG3hu58gcuG7mW5nIHNhaTogJXNcbiIKKyJcbiIKKyJDw6FjIHTDuXkgY2jhu41uIMSRw6MgbeG7nyBy4buZbmcgY8WpbmcgxJHhu4tuaCBnaeG7m2kgYuG6sW5nIGThuqV1IHBo4bqpeSwgY8OzIHRo4buDIGNo4bqlcCBuaOG6rW5cbiIKKyLEkeG7kWkgc+G7kSDEkcaw4bujYyBuZ+G7pSDDvSB24bubaSBk4bqldSBi4bqxbmcg4oCcPeKAnS5cbiIKKyJcbiIKKyJUw7l5IGNo4buNbiDEkcOjIG3hu58gcuG7mW5nIGjhu6NwIGzhu4c6XG4iCisiXHRzdXBlcmJsb2NrPTxz4buRIHRo4bupIHThu7Egc2nDqnUga2jhu5FpPlxuIgorIlx0YmxvY2tzaXplPTxrw61jaCBj4buhIGto4buRaT5cbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY0NiBtaXNjL21rZTJmcy5jOjE4MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlc1xuIgorbXNnc3RyICJcdETDuW5nICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjY5MSBtaXNjL2UyaW1hZ2UuYzoxNTg2IG1pc2MvdHVuZTJmcy5jOjI4MDUKKyM6IHJlc2l6ZS9tYWluLmM6NDE1Cittc2dpZCAiQ291bGRuJ3QgZmluZCB2YWxpZCBmaWxlc3lzdGVtIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBzacOqdSBraOG7kWkgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBo4bujcCBs4buHLlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzI2Cittc2dpZCAiIgorIlxuIgorIioqKiBDaGVja3N1bSBlcnJvcnMgZGV0ZWN0ZWQgaW4gYml0bWFwcyEgIFJ1biBlMmZzY2sgbm93IVxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiVzOiAlczogZXJyb3IgcmVhZGluZyBiaXRtYXBzOiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiJXM6ICVzOiBn4bq3cCBs4buXaSBraGkgxJHhu41jIG3huqNuZyDhuqNuaDogJXNcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA2CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbIC1yfFEgXSBbIC1mciBdIGRldmljZSBpbWFnZS1maWxlXG4iCittc2dzdHIgIkPDoWNoIGTDuW5nOiAlcyBbIC1yfFEgXSBbIC1mciBdIHRoaeG6v3RfYuG7iyB04bqtcF90aW5f4bqjbmhcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyAtSSBkZXZpY2UgaW1hZ2UtZmlsZVxuIgorbXNnc3RyICIgICAgICAgICAgICVzIC1JIHRoaeG6v3RfYuG7iyB04bqtcF90aW5f4bqjbmhcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICAgICAlcyAtcmEgIFsgIC1jZm5wICBdIFsgLW8gc3JjX29mZnNldCBdIFsgLU8gZGVzdF9vZmZzZXQgXSBzcmNfZnMgIgorIlsgZGVzdF9mcyBdXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE3NCBtaXNjL2UyaW1hZ2UuYzo1NzkgbWlzYy9lMmltYWdlLmM6NTg1IG1pc2MvZTJpbWFnZS5jOjExODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlciIKK21zZ3N0ciAidHJvbmcga2hpIGPhuqVwIHBow6F0IGLhu5kgxJHhu4dtIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV3JpdGluZyBibG9jayAlbGx1XG4iCittc2dzdHIgIsSQYW5nIGdoaSBraOG7kWkgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICJn4bq3cCBs4buXaSBraGkgZ2hpIGto4buRaSAlbGx1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTYKK21zZ2lkICJlcnJvciBpbiBnZW5lcmljX3dyaXRlKCkiCittc2dzdHIgImPDsyBs4buXaSB0cm9uZyBnZW5lcmljX3dyaXRlKCkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxMworbXNnaWQgIkVycm9yOiBoZWFkZXIgc2l6ZSBpcyBiaWdnZXIgdGhhbiB3cnRfc2l6ZVxuIgorbXNnc3RyICJM4buXaToga8OtY2ggdGjGsOG7m2MgcGjhuqduIMSR4bqndSBs4bubbiBoxqFuIHdydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGLhu5kgxJHhu4dtIHBo4bqnbiDEkeG6p3VcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MjQ2Cittc2dpZCAid2hpbGUgd3JpdGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJ0cm9uZyBraGkgZ2hpIHNpw6p1IGto4buRaSIKKworIzogbWlzYy9lMmltYWdlLmM6MjU1Cittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBi4bqjbmcgbsO6dCB0aMO0bmcgdGluIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNjMKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBt4bqjbmcg4bqjbmgga2jhu5FpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNzEKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBt4bqjbmcg4bqjbmggbsO6dCB0aMO0bmcgdGluIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICJI4buPbmcga2jhu5FpIHRoxrAgbeG7pWMgJWxsdTogcmVjX2xlbiBzYWkgKCVkKVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAiSOG7j25nIGto4buRaSB0aMawIG3hu6VjICVsbHU6IG5hbWVfbGVuIHNhaSAoJWQpXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIlbGx1IC8gJWxsdSBraOG7kWkgKCVkJSUpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIsSQYW5nIGNow6lwIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2MjYKK21zZ2lkICIiCisiU3RvcHBpbmcgbm93IHdpbGwgZGVzdHJveSB0aGUgZmlsZXN5c3RlbSwgaW50ZXJydXB0IGFnYWluIGlmIHlvdSBhcmUgc3VyZVxuIgorbXNnc3RyICIiCisiROG7q25nIGzhuqFpIHPhur0gbMOgbSBo4buPbmcgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiwgbmfhuq90IGzhuqduIG7hu69hIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiAiCisidGjhur9cbiIKKworIzogbWlzYy9lMmltYWdlLmM6NjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIiAlcyByZW1haW5pbmcgYXQgJS4yZiBNQi9zIgorbXNnc3RyICIgJXMgY8OybiBs4bqhaSDhu58gdOG7kWMgxJHhu5kgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSDEkeG7jWMga2jhu5FpICVsbHUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjcxOAorIywgYy1mb3JtYXQKK21zZ2lkICJDb3BpZWQgJWxsdSAvICVsbHUgYmxvY2tzICglZCUlKSBpbiAlcyAiCittc2dzdHIgIsSQw6MgY2jDqXAgJWxsdSAvICVsbHUga2jhu5FpICglZCUlKSB0cm9uZyAlcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzIyCisjLCBjLWZvcm1hdAorbXNnaWQgImF0ICUuMmYgTUIvcyIKK21zZ3N0ciAi4bufIHThu5FjIMSR4buZICUuMmYgTUIvcyIKKworIzogbWlzYy9lMmltYWdlLmM6NzU4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMSB0YWJsZSIKK21zZ3N0ciAidHJvbmcga2hpIGPhuqVwIHBow6F0IGLhuqNuZyBsMSIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAidHJvbmcga2hpIGPhuqVwIHBow6F0IGLhuqNuZyBsMiIKKworIzogbWlzYy9lMmltYWdlLmM6ODI2Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZXJlIGFyZSBzdGlsbCB0YWJsZXMgaW4gdGhlIGNhY2hlIHdoaWxlIHB1dHRpbmcgdGhlIGNhY2hlLCBkYXRhICIKKyJ3aWxsIGJlIGxvc3Qgc28gdGhlIGltYWdlIG1heSBub3QgYmUgdmFsaWQuXG4iCittc2dzdHIgIiIKKyJD4bqjbmggYsOhbzogVuG6q24gY8OybiBi4bqjbmcgdHJvbmcgYuG7mSBuaOG7myDEkeG7h20gdHJvbmcga2hpIMSR4bq3dCBi4buZIG5o4bubIG7DoHksIGThu68gbGnhu4d1IHPhur0gIgorIm3huqV0IGRvIMSRw7Mg4bqjbmggY8OzIHRo4buDIGtow7RuZyBo4bujcCBs4buHLlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJ0cm9uZyBraGkgY+G6pXAgcGjDoXQgZXh0Ml9xY293Ml9pbWFnZSIKKworIzogbWlzYy9lMmltYWdlLmM6MTE1NQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICJ0cm9uZyBraGkga2jhu59pIHThuqFvIGV4dDJfcWNvdzJfaW1hZ2UiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICJM4buXaSBs4bqtcCB0csOsbmg6IMSRYSBraOG7kWkgcmVmY291bnQgbGnDqm4gdGnhur9wIMSRxrDhu6NjIHThuqFvIHJhIVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjcyCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgInRyb25nIGPhuqVwIHBow6F0IG3huqNuZyDhuqNuaCBraOG7kWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAidHJvbmcga2hpIGPhuqVwIHBow6F0IG3huqNuZyDhuqNuaCBraOG7kWkgc2NyYW1ibGUiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODgKK21zZ2lkICJTY2FubmluZyBpbm9kZXMuLi5cbiIKK21zZ3N0ciAixJBhbmcgcXXDqXQgY8OhYyBuw7p0Li4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIktow7RuZyB0aOG7gyBj4bqlcCBwaMOhdCBi4buZIMSR4buHbSBraOG7kWkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMzkgbWlzYy9lMmltYWdlLmM6MTM1MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBpdGVyYXRpbmcgb3ZlciBpbm9kZSAldSIKK21zZ3N0ciAidHJvbmcga2hpIGzhurdwIHF1YSBuw7p0ICV1IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMzg1Cittc2dpZCAiUmF3IGFuZCBxY293MiBpbWFnZXMgY2Fubm90IGJlIGluc3RhbGxlZCIKK21zZ3N0ciAi4bqibmggdGjDtCB2w6AgcWNvbncyIGtow7RuZyB0aOG7gyDEkcaw4bujYyBjw6BpIMSR4bq3dCIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAibOG6t3AgbOG7l2kga2hpIMSR4buNYyBt4bqjbmcgYml0IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5Cittc2dpZCAid2hpbGUgb3BlbmluZyBkZXZpY2UgZmlsZSIKK21zZ3N0ciAidHJvbmcga2hpIG3hu58gdOG6rXAgdGluIHRoaeG6v3QgYuG7iyIKKworIzogbWlzYy9lMmltYWdlLmM6MTQzMAorbXNnaWQgIndoaWxlIHJlc3RvcmluZyB0aGUgaW1hZ2UgdGFibGUiCittc2dzdHIgInRyb25nIGtoaSBwaOG7pWMgaOG7k2kgYuG6o25nIOG6o25oIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAidMO5eSBjaOG7jW4gLWEgY2jhu4kgY8OzIHRo4buDIMSRxrDhu6NjIGTDuW5nIGPDuW5nIHbhu5tpIGPDoWMg4bqjbmggdGjDtCBob+G6t2MgUUNPVzIuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTMzCittc2dpZCAiT2Zmc2V0cyBhcmUgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkNo4bq/IMSR4buZIGLDuSBjaOG7iSBjaG8gcGjDqXAgduG7m2kg4bqjbmggdGjDtC4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzgKK21zZ2lkICJNb3ZlIG1vZGUgaXMgb25seSBhbGxvd2VkIHdpdGggcmF3IGltYWdlcy4iCittc2dzdHIgIkNo4bq/IMSR4buZIGRpIGNodXnhu4NuIGNo4buJIGNobyBwaMOpcCB24bubaSDhuqNuaCB0aMO0LiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU0MworbXNnaWQgIk1vdmUgbW9kZSByZXF1aXJlcyBhbGwgZGF0YSBtb2RlLiIKK21zZ3N0ciAiQ2jhur8gxJHhu5kgZGkgY2h1eeG7g24gecOqdSBj4bqndSBt4buNaSBjaOG6vyDEkeG7mSBk4buvIGxp4buHdS4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NTMKK21zZ2lkICJjaGVja2luZyBpZiBtb3VudGVkIgorbXNnc3RyICJraeG7g20gdHJhIHhlbSDEkcOjIGfhuq9uIGvhur90IGNoxrBhIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTYwCittc2dpZCAiIgorIlxuIgorIlJ1bm5pbmcgZTJpbWFnZSBvbiBhIFIvVyBtb3VudGVkIGZpbGVzeXN0ZW0gY2FuIHJlc3VsdCBpbiBhblxuIgorImluY29uc2lzdGVudCBpbWFnZSB3aGljaCB3aWxsIG5vdCBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy5cbiIKKyJVc2UgLWYgb3B0aW9uIGlmIHlvdSByZWFsbHkgd2FudCB0byBkbyB0aGF0LlxuIgorbXNnc3RyICIiCisiXG4iCisiQ2jhuqF5IGUyaW1hZ2UgdHLDqm4gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBn4bqvbiDEkOG7jWMvR2hpIGPDsyB0aOG7gyB04bqhbyByYSBt4buZdFxuIgorIuG6o25oIGtow7RuZyBwaMO5IGjhu6NwIGPDoWkgbcOgIHPhur0ga2jDtG5nIGjhu691IMOtY2gga2hpIG114buRbiBn4buhIGzhu5dpLlxuIgorIkTDuW5nIHTDuXkgY2jhu41uIC1mIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBsw6BtIHRo4bq/LlxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjE0Cittc2dpZCAiUUNPVzIgaW1hZ2UgY2FuIG5vdCBiZSB3cml0dGVuIHRvIHRoZSBzdGRvdXQhXG4iCittc2dzdHIgIuG6om5oIFFDT1cyIGtow7RuZyB0aOG7gyBnaGkgcmEgxJHhuqd1IHJhIHRpw6p1IGNodeG6qW4hXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MjAKK21zZ2lkICJDYW4gbm90IHN0YXQgb3V0cHV0XG4iCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB0aOG7kW5nIGvDqiDEkeG6p3UgcmFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGNvbXByZXNzZWRcbiIKK21zZ3N0ciAi4bqibmggKCVzKSDEkcOjIMSRxrDhu6NjIG7DqW4gbOG6oWlcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbWFnZSAoJXMpIGlzIGVuY3J5cHRlZFxuIgorbXNnc3RyICLhuqJuaCAoJXMpIMSRw6MgxJHGsOG7o2MgbcOjIGjDs2FcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYzNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gY29udmVydCBxY293MiBpbWFnZSAoJXMpIGludG8gcmF3IGltYWdlICglcykiCittc2dzdHIgImtoaSBj4buRIGNodXnhu4NuIMSR4buVaSDhuqNuaCBxY293MiAoJXMpIHRow6BuaCBk4bqhbmcg4bqjbmggdGjDtCAoJXMpIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjQ1Cittc2dpZCAiVGhlIC1jIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJUw7l5IGNo4buNbiDigJwtY+KAnSBjaOG7iSDEkcaw4bujYyBo4buXIHRy4bujIHRyb25nIGNo4bq/IMSR4buZIHRow7RcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIlTDuXkgY2jhu41uIOKAnC1j4oCdIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIGtoaSBnaGkgcmEgxJHhuqd1IHJhIHRpw6p1IGNodeG6qW5cbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICJ0cm9uZyBraGkgY+G6pXAgcGjDoXQgY2hlY2tfYnVmIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjYzCittc2dpZCAiVGhlIC1wIG9wdGlvbiBvbmx5IHN1cHBvcnRlZCBpbiByYXcgbW9kZVxuIgorbXNnc3RyICJUw7l5IGNo4buNbiDigJwtcOKAnSBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyB0cm9uZyBjaOG6vyDEkeG7mSB0aMO0XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYmxvY2tzIGFscmVhZHkgY29udGFpbmVkIHRoZSBkYXRhIHRvIGJlIGNvcGllZFxuIgorbXNnc3RyICIlZCBraOG7kWkgxJHDoyBz4bq1biBjaOG7qWEgZOG7ryBsaeG7h3UgxJHhu4Mgc2FvIGNow6lwXG4iCisKKyM6IG1pc2MvZTJpbml0cmRfaGVscGVyLmM6NjgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6ICVzIMSRxKlhXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBvcGVuICVzXG4iCittc2dzdHIgImUybGFiZWw6IGtow7RuZyB0aOG7gyBt4bufICVzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDoga2jDtG5nIHRo4buDIGRpIGNodXnhu4NuIMSR4bqndSDEkeG7jWMgduG7iyB0csOtIHNpw6p1IGto4buRaVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo2OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciByZWFkaW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogZ+G6t3AgbOG7l2kga2hpIMSR4buNYyBzacOqdSBraOG7kWlcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogbm90IGFuIGV4dDIgZmlsZXN5c3RlbVxuIgorbXNnc3RyICJlMmxhYmVsOiBraMO0bmcgcGjhuqNpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2nhu4N1IGV4dDJcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6OTcgbWlzYy90dW5lMmZzLmM6Mjk3OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZywgdHJ1bmNhdGluZy5cbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IG5ow6NuIHF1w6EgZMOgaSBuw6puIGPhuq90IG5n4bqvbi5cbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbDoga2jDtG5nIHRo4buDIGRpIGNodXnhu4NuIMSR4bqndSDEkeG7jWMgxJHhu4MgbOG6pXkgbOG6oWkgc2nDqnUga2jhu5FpXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjEwNQorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBlcnJvciB3cml0aW5nIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbDogZ+G6t3AgbOG7l2kga2hpIGdoaSBzacOqdSBraOG7kWlcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTE3IG1pc2MvdHVuZTJmcy5jOjE1OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6IGUybGFiZWwgZGV2aWNlIFtuZXdsYWJlbF1cbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6IGUybGFiZWwgdGhp4bq/dF9i4buLIFtuaMOjbl9t4bubaV1cbiIKKworIzogbWlzYy9lMnVuZG8uYzoxMTgKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuc2FjdGlvbiBmaWxlPiA8ZmlsZXN5c3RlbT5cbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6ICVzIDx04bqtcCB0aW4gZ2lhbyBk4buLY2g+IDxo4buHIHRo4buRbmcgdOG6rXAgdGluPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworIywgZnV6enkKK21zZ2lkICJUaGUgZmlsZSBzeXN0ZW0gc3VwZXJibG9jayBkb2Vzbid0IG1hdGNoIHRoZSB1bmRvIGZpbGUuXG4iCittc2dzdHIgIkdp4budIGfhuq9uIGvhur90IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2jDtG5nIHTGsMahbmcg4bupbmcgduG7m2kgJXVcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDYKK21zZ2lkICJVVUlEIGRvZXMgbm90IG1hdGNoLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ4CisjLCBmdXp6eQorbXNnaWQgIkxhc3QgbW91bnQgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiR2nhu50gZ+G6r24ga+G6v3QgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBraMO0bmcgdMawxqFuZyDhu6luZyB24bubaSAldVxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjE1MgorbXNnaWQgIkxpZmV0aW1lIHdyaXRlIGNvdW50ZXIgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzoxNjYKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIHNpw6p1IGto4buRaSBuaOG6rXQga8O9IgorCisjOiBtaXNjL2UydW5kby5jOjE4MgorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBmZXRjaGluZyBzdXBlcmJsb2NrIgorbXNnc3RyICJ0cm9uZyBraGkgZ2hpIHNpw6p1IGto4buRaSIKKworIzogbWlzYy9lMnVuZG8uYzoxOTUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXNuJ3QgbWF0Y2guXG4iCittc2dzdHIgIlThu5VuZyBraeG7g20gc2nDqnUga2jhu5FpIGtow7RuZyBraOG7m3AgduG7m2kgc2nDqnUga2jhu5FpICIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgImlsbGVnYWwgb2Zmc2V0IC0gJXMiCittc2dzdHIgIktob+G6o25nIGLDuSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9lMnVuZG8uYzozNTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2lsbCBub3Qgd3JpdGUgdG8gYW4gdW5kbyBmaWxlIHdoaWxlIHJlcGxheWluZyBpdC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyB1bmRvIGZpbGUgYCVzJ1xuIgorbXNnc3RyICJ0cm9uZyBraGkgbeG7nyB04bqtcCB0aW4gdGhp4bq/dCBi4buLIgorCisjOiBtaXNjL2UydW5kby5jOjM3NAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHVuZG8gZmlsZSIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBuw7p0IHRow7RuZyB0aW4gZ+G7kWMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogTm90IGFuIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAiJXM6IHF1w6Egbmhp4buBdSB0aGnhur90IGLhu4tcbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTAKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBIZWFkZXIgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSBuw7p0IGtow7RuZyBraOG7m3AgduG7m2kgbsO6dCAiCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzk3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlczogQ29ycnVwdCB1bmRvIGZpbGUgaGVhZGVyLlxuIgorbXNnc3RyICJQaOG6p24gxJHhuqd1IGV4dGVudCBi4buLIGjhu49uZyIKKworIzogbWlzYy9lMnVuZG8uYzo0MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0MDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gc21hbGwuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo0MTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmtub3duIHVuZG8gZmlsZSBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiQFMgQGogxJHhurd0IG3hu5l0IGPhu50gdMOtbmggbsSDbmcga2jDtG5nIHTGsMahbmcgdGjDrWNoIGtow7RuZyByw7UuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBkZXRlcm1pbmluZyB3aGV0aGVyICVzIGlzIG1vdW50ZWQuIgorbXNnc3RyICJH4bq3cCBs4buXaSB0cm9uZyBraGkgZMOyIHTDrG0geGVtICVzIMSRw6MgZ+G6r24ga+G6v3QgY2jGsGEuXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCisjLCBmdXp6eQorbXNnaWQgImUydW5kbyBzaG91bGQgb25seSBiZSBydW4gb24gdW5tb3VudGVkIGZpbGVzeXN0ZW1zIgorbXNnc3RyICJlMnVuZG8gY2jhu4kgbsOqbiBjaOG6oXkgdHLDqm4gbeG7mXQgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBjaMawYSBn4bqvbiBr4bq/dFxuIgorCisjOiBtaXNjL2UydW5kby5jOjQ0OQorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBgJXMnIgorbXNnc3RyICJ0cm9uZyBraGkgbeG7nyAlcyIKKworIzogbWlzYy9lMnVuZG8uYzo0NjAKK21zZ2lkICJzcGVjaWZpZWQgb2Zmc2V0IGlzIHRvbyBsYXJnZSIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjUwMQorIywgZnV6enkKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgInRyb25nIGtoaSDEkeG7jWMgY8OhYyBt4bqjbmcg4bqjbmgiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTEzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3cm9uZyBrZXkgbWFnaWMgYXQgJWxsdVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTIzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBrZXkgYmxvY2sgY2hlY2tzdW0gZXJyb3IgYXQgJWxsdS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjU0NgorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiJXM6IGJsb2NrICVsbHUgaXMgdG9vIGxvbmcuIgorbXNnc3RyICJU4burIGto4buRaSAlbHUgxJHhur9uICVsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU1OCBtaXNjL2UydW5kby5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZmV0Y2hpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgIsSQYW5nIGdoaSBraOG7kWkgJWxsdVxuIgorCisjOiBtaXNjL2UydW5kby5jOjU3MAorIywgYy1mb3JtYXQKK21zZ2lkICJjaGVja3N1bSBlcnJvciBpbiBmaWxlc3lzdGVtIGJsb2NrICVsbHUgKHVuZG8gYmxrICVsbHUpXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9lMnVuZG8uYzo2MDkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgYmxvY2sgJWxsdS4iCittc2dzdHIgImfhurdwIGzhu5dpIGtoaSBnaGkga2jhu5FpICVsbHUiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2UydW5kby5jOjYyMAorIywgYy1mb3JtYXQKK21zZ2lkICJJbmNvbXBsZXRlIHVuZG8gcmVjb3JkOyBydW4gZTJmc2NrLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAgZmluZHN1cGVyIGRldmljZSBbc2tpcGJ5dGVzIFtzdGFydGtiXV1cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2MgorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzZWN0b3Igc2l6ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTY5CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE3NQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBwb3NpdGl2ZSwgbm90ICVsbHVcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGluZyBhdCAlbGx1LCB3aXRoICV1IGJ5dGUgaW5jcmVtZW50c1xuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJbKl0gcHJvYmFibHkgc3VwZXJibG9jayB3cml0dGVuIGluIHRoZSBleHQzIGpvdXJuYWwgc3VwZXJibG9jayxcbiIKKyJcdHNvIHN0YXJ0L2VuZC9ncnAgd3JvbmdcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE5MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiYnl0ZV9vZmZzZXQgIGJ5dGVfc3RhcnQgICAgIGJ5dGVfZW5kICBmc19ibG9ja3MgYmxrc3ogIGdycCAgbWtmcy8iCisibW91bnRfdGltZSAgICAgICAgICAgc2JfdXVpZCBsYWJlbFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlMTFMdTogZmluaXNoZWQgd2l0aCBlcnJubyAlZFxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICJD4bqiTkggQsOBTzoga2jDtG5nIHRo4buDIG3hu58gJXM6ICVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjM1MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBiYWQgZm9ybWF0IG9uIGxpbmUgJWQgb2YgJXNcbiIKK21zZ3N0ciAiQ+G6ok5IIELDgU86IGfhurdwIMSR4buLbmggZOG6oW5nIHNhaSB0csOqbiBkw7JuZyAlZCB0csOqbiAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNzAKK21zZ2lkICIiCisiV0FSTklORzogWW91ciAvZXRjL2ZzdGFiIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZzY2sgcGFzc25vXG4iCisiXHRmaWVsZC4gIEkgd2lsbCBrbHVkZ2UgYXJvdW5kIHRoaW5ncyBmb3IgeW91LCBidXQgeW91XG4iCisiXHRzaG91bGQgZml4IHlvdXIgL2V0Yy9mc3RhYiBmaWxlIGFzIHNvb24gYXMgeW91IGNhbi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIkPhuqJOSCBCw4FPOiAvZXRjL2ZzdGFiIGPhu6dhIGLhuqFuIGtow7RuZyBjaOG7qWEgdHLGsOG7nW5nIGZzY2sgcGFzc25vLlxuIgorIlx0TcOheSB0w61uaCBz4bq9IMSRaeG7gXUgY2jhu4luaCB04bqhbSB0aOG7nWkgY2hvIGLhuqFuLCBuaMawbmcgYuG6oW4gbsOqbiBz4butYSBjaOG7r2FcbiIKKyJcdHThuq1wIHRpbiAvZXRjL2ZzdGFiIGPDoG5nIHPhu5ttIGPDoG5nIGPDoG5nIHThu5F0LlxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiAlczoga2jDtG5nIHTDrG0gdGjhuqV5XG4iCisKKyM6IG1pc2MvZnNjay5jOjU5NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogd2FpdDogTm8gbW9yZSBjaGlsZCBwcm9jZXNzPyE/XG4iCittc2dzdHIgIiVzOiDEkeG7o2k6IGtow7RuZyBjw7MgdGnhur9uIHRyw6xuaCBjb24gbuG7r2E/IT9cbiIKKworIzogbWlzYy9mc2NrLmM6NjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmcuLi4gJXMgZm9yIGRldmljZSAlcyBleGl0ZWQgd2l0aCBzaWduYWwgJWQuXG4iCittc2dzdHIgIkPhuqNuaCBiw6FvLi4uICVzIGNobyB0aGnhur90IGLhu4sgJXMgxJHDoyB0aG/DoXQgduG7m2kgdMOtbiBoaeG7h3UgJWQuXG4iCisKKyM6IG1pc2MvZnNjay5jOjYyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAlczogc3RhdHVzIGlzICV4LCBzaG91bGQgbmV2ZXIgaGFwcGVuLlxuIgorbXNnc3RyICIlcyAlczogdHLhuqFuZyB0aMOhaSBsw6AgJXgsIGtow7RuZyBiYW8gZ2nhu50gbsOqbiB44bqjeSByYS5cbiIKKworIzogbWlzYy9mc2NrLmM6NjYxCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbmlzaGVkIHdpdGggJXMgKGV4aXQgc3RhdHVzICVkKVxuIgorbXNnc3RyICIlcyBob8OgbiB04bqldCAodHLhuqFuZyB0aMOhaSB0aG/DoXQgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjcyMQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogRXJyb3IgJWQgd2hpbGUgZXhlY3V0aW5nIGZzY2suJXMgZm9yICVzXG4iCittc2dzdHIgIiVzOiBH4bq3cCBs4buXaSAlZCB0cm9uZyBraGkgdGjhu7FjIGhp4buHbiBmc2NrLiVzIGNobyAlc1xuIgorCisjOiBtaXNjL2ZzY2suYzo3NDIKK21zZ2lkICIiCisiRWl0aGVyIGFsbCBvciBub25lIG9mIHRoZSBmaWxlc3lzdGVtIHR5cGVzIHBhc3NlZCB0byAtdCBtdXN0IGJlIHByZWZpeGVkXG4iCisid2l0aCAnbm8nIG9yICchJy5cbiIKK21zZ3N0ciAiIgorIkhv4bq3YyB04bqldCBj4bqjIGhv4bq3YyBraMO0bmcgY8OzIGtp4buDdSBo4buHIHRo4buRbmcgdOG6rXAgdGluIMSRxrDhu6NjIGfhu61pIHF1YVxuIgorImNobyB0w7l5IGNo4buNbiDigJwtdOKAnSBwaOG6o2kgY8OzIHRp4buBbiB04buRIOKAnG5v4oCdIGhheSDigJwh4oCdLlxuIgorCisjOiBtaXNjL2ZzY2suYzo3NjEKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGZpbGVzeXN0ZW0gdHlwZXNcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGLhu5kgbmjhu5sgY2hvIGtp4buDdSBo4bq/IHRo4buRbmcgdOG6rXAgdGluXG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiIKKyIlczogxJFhbmcgYuG7jyBxdWEgZMOybmcgc2FpIHRyb25nIOKAnC9ldGMvZnN0YWLigJ06IMSRw7NuZyBr4bq/dCBs4bqvcCB24bubaSBz4buRIGfhu61pIHF1YSAiCisiZnNjayBraMOhYyBz4buRIGtow7RuZ1xuIgorCisjOiBtaXNjL2ZzY2suYzo5MTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogY2Fubm90IGNoZWNrICVzOiBmc2NrLiVzIG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2NrOiBraMO0bmcgdGjhu4Mga2nhu4NtIHRyYSAlczogZnNjay4lcyBraMO0bmcgdMOsbSB0aOG6pXlcbiIKKworIzogbWlzYy9mc2NrLmM6OTY3Cittc2dpZCAiQ2hlY2tpbmcgYWxsIGZpbGUgc3lzdGVtcy5cbiIKK21zZ3N0ciAixJBhbmcga2nhu4NtIHRyYSBt4buNaSBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDU4CisjLCBjLWZvcm1hdAorbXNnaWQgIi0td2FpdGluZy0tIChwYXNzICVkKVxuIgorbXNnc3RyICItLcSRYW5nIMSR4bujaS0tIChs4bqnbiBxdWEgJWQpXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyJDw6FjaCBkw7luZzogZnNjayBbLUFNTlBSVFZdIFsgLUMgWyBmZCBdIF0gWy10IGtp4buDdV9IVFRdIFtmcy1vcHRpb25zXSAiCisiW0hUVCAuLi5dXG4iCisiXG4iCisiSFRUOiBo4buHIHRo4buRbmcgdOG6rXAgdGluXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXM6IHF1w6Egbmhp4buBdSB0aGnhur90IGLhu4tcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXM6IHF1w6Egbmhp4buBdSDEkeG7kWkgc+G7kVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzQwCisjLCBmdXp6eQorbXNnaWQgIk1vdW50aW5nIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiTeG7nyB04bqtcCB0aW4gdHJvbmcgY2jhur8gxJHhu5kgY2jhu4kgY2hvIMSR4buNYyIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlczogQWxsb3dpbmcgdXNlcnMgdG8gYWxsb2NhdGUgYWxsIGJsb2Nrcy4gVGhpcyBpcyBkYW5nZXJvdXMhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc3NiBtaXNjL2Z1c2UyZnMuYzozNzg5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc3IG1pc2MvZnVzZTJmcy5jOjM3OTEgbWlzYy90dW5lMmZzLmM6MzIwNworIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZ5ICVzLlxuIgorbXNnc3RyICIiCisiVHLGsOG7m2MgdGnDqm4gaMOjeSBjaOG6oXkgbOG7h25oIOKAnGUyZnNjayAtZiAlc+KAnS5cbiIKKyJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc5OAorbXNnaWQgIkpvdXJuYWwgbmVlZHMgcmVjb3Zlcnk7IHJ1bm5pbmcgYGUyZnNjayAtRSBqb3VybmFsX29ubHknIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MDYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiVzOiBXcml0aW5nIHRvIHRoZSBqb3VybmFsIGlzIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIktow7RuZyBo4buXIHRy4bujIHTDrW5oIG7Eg25nIHRodSBuaOG7jyBrw61jaCBj4buhIG7DunRcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyMQorbXNnaWQgIldhcm5pbmc6IE1vdW50aW5nIHVuY2hlY2tlZCBmcywgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgyNQorbXNnaWQgIldhcm5pbmc6IE1heGltYWwgbW91bnQgY291bnQgcmVhY2hlZCwgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLVJWYWRscHZdIFtmaWxlcy4uLl1cbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6ICVzIFstUlZhZGx2XSBbdOG6rXBfdGluLi4uXVxuIgorCisjOiBtaXNjL2xzYXR0ci5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIlRyb25nIGtoaSDEkeG7jWMgY8OhYyBj4budIHRyw6puICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjkzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIlRyb25nIGtoaSDEkeG7jWMgcGhpw6puIGLhuqNuIHRyw6puICVzIgorCisjOiBtaXNjL2xzYXR0ci5jOjEwMgorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHZlcnNpb24gb24gJXMiCittc2dzdHIgIlRyb25nIGtoaSDEkeG7jWMgcGhpw6puIGLhuqNuIHRyw6puICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisiQ8OhY2ggZMO5bmc6ICVzIFstY3wtbCB0w6puX3Thuq1wX3Rpbl0gWy1iIGPhu6Ffa2jhu5FpXSBbLUMgY+G7oV9sacOqbl9jdW5nXVxuIgorIlx0Wy1pIGJ5dGVfbeG7l2lfaW5vZGVdIFstSSBj4buhX2lub2RlXSBbLUogdMO5eV9jaOG7jW5fbmjhuq10X2vDvV1cbiIKKyJcdFstRyBj4buhX25ow7NtLWZsZXhdIFstTiBz4buRX2zGsOG7o25nX2lub2RlXVxuIgorIlx0Wy1tIHBo4bqnbl90csSDbV9raOG7kWlfZMOgbmhfcmnDqm5nXSBbLW8gSMSQSF904bqhb11cbiIKKyJcdFstZyBz4buRLWto4buRaV9t4buXaV9uaMOzbV0gWy1MIG5ow6NuX2to4buRaV90aW5dIFstTSB0aMawX23hu6VjX2zhuq9wX2N14buRaV1cbiIKKyJcdFstTyB0w61uaF9uxINuZ1ssLi4uXV0gWy1yIGLhuqNuX3Phu61hX8SR4buVaV9IVFRdIFstRSB0w7l5X2No4buNbl9t4bufX3Lhu5luZ1ssLi4uXV1cbiIKKyJcdFstdCBraeG7g3VfSFRUVF0gWy1UIGtp4buDdS1kw7luZyBdIFstVSBVVUlEXSBbLWpucXZERktTVl0gdGhp4bq/dF9i4buLICIKKyJbc+G7kV9sxrDhu6NuZ19raOG7kWldXG4iCisiVOG7qyB2aeG6v3QgdOG6r3Q6XG4iCisiXHRIREg6IGjhu4cgxJFp4buBdSBow6BuaFxuIgorIlx0SFRUVDogaOG7hyB0aOG7kW5nIHThuq1wIHRpblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1NQorIywgYy1mb3JtYXQKK21zZ2lkICJSdW5uaW5nIGNvbW1hbmQ6ICVzXG4iCittc2dzdHIgIsSQYW5nIGNo4bqheSBs4buHbmg6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBydW4gJyVzJyIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgY2jhuqF5IOKAnCVz4oCdIgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAidHJvbmcga2hpIHjhu60gbMO9IGRhbmggc8OhY2ggY8OhYyBraOG7kWkgc2FpIHThu6sgY2jGsMahbmcgdHLDrG5oIgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAiS2jhu5FpICVkIHNhaSB0cm9uZyB2w7luZyBtw7QgdOG6oyBuaMOzbS9zacOqdSBraOG7kWkgY2jDrW5oLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9ja3MgJXUgdGhyb3VnaCAldSBtdXN0IGJlIGdvb2QgaW4gb3JkZXIgdG8gYnVpbGQgYSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICIiCisiQ8OhYyBraOG7kWkgdHJvbmcgcGjhuqFtIHZpICV1IMSR4bq/biAldSBwaOG6o2kgbMOgIHThu5F0XG4iCisixJHhu4MgeMOieSBk4buxbmcgxJHGsOG7o2MgaOG7hyB0aOG7kW5nIHThuq1wIHRpbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAixJBhbmcgaOG7p3kgYuG7jy4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogdGhlIGJhY2t1cCBzdXBlcmJsb2NrL2dyb3VwIGRlc2NyaXB0b3JzIGF0IGJsb2NrICV1IGNvbnRhaW5cbiIKKyJcdGJhZCBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyJD4bqjbmggYsOhbzogY8OhYyBtw7QgdOG6oyBuaMOzbS9zacOqdSBraOG7kWkgZOG7sSB0cuG7ryB04bqhaSBraOG7kWkgJXUgY2jhu6lhIGto4buRaSBzYWkuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzM3Cittc2dpZCAid2hpbGUgbWFya2luZyBiYWQgYmxvY2tzIGFzIHVzZWQiCittc2dzdHIgInRyb25nIGtoaSDEkcOhbmggZOG6pXUgY8OhYyBraOG7kWkgc2FpIMSRw6MgxJHGsOG7o2MgZMO5bmciCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAixJBhbmcgZ2hpIGPDoWMgYuG6o25nIG7DunQgdGjDtG5nIHRpbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiS2jDtG5nIHRo4buDIGdoaSAlZCBraOG7kWkgdHJvbmcgYuG6o25nIG7DunQgdGjDtG5nIHRpbiwgYuG6r3QgxJHhuqd1IHThuqFpICVsbHU6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICJob8OgbiB04bqldCAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjQ1OQorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHJvb3QgZGlyIgorbXNnc3RyICJ0cm9uZyBraGkgdOG6oW8gdGjGsCBt4bulYyBn4buRYyIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgInRyb25nIGtoaSDEkeG7jWMgbsO6dCB0aMO0bmcgdGluIGfhu5FjIgorCisjOiBtaXNjL21rZTJmcy5jOjQ3OAorbXNnaWQgIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiCittc2dzdHIgInRyb25nIGtoaSDEkeG6t3QgcXV54buBbiBz4bufIGjhu691IG7DunQgdGjDtG5nIHRpbiBn4buRYyIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAidHJvbmcga2hpIHThuqFvIC9t4bqldCt0w6xtIgorCisjOiBtaXNjL21rZTJmcy5jOjUwMworbXNnaWQgIndoaWxlIGxvb2tpbmcgdXAgL2xvc3QrZm91bmQiCittc2dzdHIgInRyb25nIGtoaSB0cmEgdMOsbSAvbeG6pXQrdMOsbSIKKworIzogbWlzYy9ta2UyZnMuYzo1MTYKK21zZ2lkICJ3aGlsZSBleHBhbmRpbmcgL2xvc3QrZm91bmQiCittc2dzdHIgInRyb25nIGtoaSBt4bufIHLhu5luZyAvbeG6pXQrdMOsbSIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAidHJvbmcga2hpIMSR4bq3dCBuw7p0IHRow7RuZyB0aW4ga2jhu5FpIHNhaSIKKworIzogbWlzYy9ta2UyZnMuYzo1NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiT3V0IG9mIG1lbW9yeSBlcmFzaW5nIHNlY3RvcnMgJWQtJWRcbiIKK21zZ3N0ciAiSOG6v3QgYuG7mSBuaOG7myBuw6puIHhvw6EgY8OhYyByw6NuaCBnaGkgdHJvbmcgcGjhuqFtIHZpICVkIMSR4bq/biAlZFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjU2OAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgcmVhZCBibG9jayAwOiAlc1xuIgorbXNnc3RyICJD4bqjbmggYsOhbzoga2jDtG5nIHRo4buDIMSR4buNYyBraOG7kWkgMDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo1ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IGVyYXNlIHNlY3RvciAlZDogJXNcbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IGtow7RuZyB0aOG7gyB4b8OhIHLDo25oIGdoaSAlZDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDAKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICJ0cm9uZyBraGkga2jhu59pIHThuqFvIHNpw6p1IGto4buRaSBuaOG6rXQga8O9IgorCisjOiBtaXNjL21rZTJmcy5jOjYwOAorbXNnaWQgIlplcm9pbmcgam91cm5hbCBkZXZpY2U6ICIKK21zZ3N0ciAixJBhbmcgZ2hpIHPhu5Ega2jDtG5nIHRoaeG6v3QgYuG7iyBuaOG6rXQga8O9OiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAidHJvbmcga2hpIGzDoG0gc+G7kSBraMO0bmcgdGhp4bq/dCBi4buLIG5o4bqtdCBrw70gKGto4buRaSAlbGx1LCBz4buRIGzGsOG7o25nICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzo2MzcKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgc3VwZXJibG9jayIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBzacOqdSBraOG7kWkgbmjhuq10IGvDvSIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIsSQYW5nIHThuqFvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gduG7m2kgJWxsdSAoJWRrKSBraOG7kWkgdsOgICV1IG7DunQuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJ3YXJuaW5nOiAlbGx1IGJsb2NrcyB1bnVzZWQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJj4bqjbmggYsOhbzogJWxsdSBraOG7kWkgY2jGsGEgZMO5bmcuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAiTmjDo24gaOG7hyB0aOG7kW5nIHThuq1wIHRpbj0lc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY2OAorIywgYy1mb3JtYXQKK21zZ2lkICJPUyB0eXBlOiAlc1xuIgorbXNnc3RyICJLaeG7g3UgSMSQSDogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2sgc2l6ZT0ldSAobG9nPSV1KVxuIgorbXNnc3RyICJD4buhIGto4buRaT0ldSAoYuG6o24gZ2hpPSV1KVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQ+G7oSBsacOqbiBjdW5nPSV1IChi4bqjbiBnaGk9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAiQ+G7oSDEkW/huqFuPSV1IChi4bqjbiBnaGk9JXUpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAiQsaw4bubYz0ldSBraOG7kWksIMSQ4buZIHLhu5luZyBz4buNYz0ldSBraOG7kWlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSBuw7p0IHRow7RuZyB0aW4sICVsbHUga2jhu5FpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJWxsdSBraOG7kWkgKCUyLjJmJSUpIMSRxrDhu6NjIGTDoG5oIHJpw6puZyBjaG8gc2nDqnUgbmfGsOG7nWkgZMO5bmdcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlyc3QgZGF0YSBibG9jaz0ldVxuIgorbXNnc3RyICJLaOG7kWkgZOG7ryBsaeG7h3UgxJHhuqd1PSV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIkNo4bunIHPhu58gaOG7r3UgdGjGsC1t4bulYyBn4buRYz0ldToldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICJLaOG7kWkgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiB04buRaSDEkWE9JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSBuaMOzbSBraOG7kWlcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUgbmjDs20ga2jhu5FpXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBraOG7kWkgdHLDqm4gbeG7l2kgbmjDs20sICV1IGxpw6puIGN1bmcgdHLDqm4gbeG7l2kgbmjDs21cbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2tzIHBlciBncm91cCwgJXUgZnJhZ21lbnRzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBraOG7kWkgdHLDqm4gbeG7l2kgbmjDs20sICV1IMSRb+G6oW4gdHLDqm4gbeG7l2kgbmjDs21cbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzIHBlciBncm91cFxuIgorbXNnc3RyICIldSBuw7p0IHRow7RuZyB0aW4gdHLDqm4gbeG7l2kgbmjDs21cbiIKKworIzogbWlzYy9ta2UyZnMuYzo3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRmlsZXN5c3RlbSBVVUlEOiAlc1xuIgorbXNnc3RyICJNw6Mgc+G7kSDEkeG7i25oIGRhbmggdGhp4bq/dCBi4buLIGjhu4cgdGjhu5FuZyB04bqtcCB0aW46ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAiU2nDqnUga2jhu5FpIGThu7EgdHLhu68gxJHGsOG7o2MgY+G6pXQgZ2nhu68gdHLDqm4ga2jhu5FpOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6ODA3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIHJlcXVpcmVzICctTyA2NGJpdCdcbiIKK21zZ3N0ciAiJXMgY+G6p24g4oCcLU8gNjRiaXTigJ1cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICLigJwlc+KAnSBwaOG6o2kgdHLGsOG7m2Mg4oCccmVzaXplPSV14oCdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODI2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgZGVzY19zaXplOiAnJXMnXG4iCittc2dzdHIgImRlc2Nfc2l6ZSBraMO0bmcgaOG7o3AgbOG7hzog4oCcJXPigJ1cbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBvZmZzZXQ6ICVzXG4iCittc2dzdHIgIktob+G6o25nIGLDuSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4NTMgbWlzYy90dW5lMmZzLmM6MTk1OAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1tcF91cGRhdGVfaW50ZXJ2YWw6ICVzXG4iCittc2dzdHIgIm1tcF91cGRhdGVfaW50ZXJ2YWwga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgIyBvZiBiYWNrdXAgc3VwZXJibG9ja3M6ICVzXG4iCittc2dzdHIgIlPhu5EgbMaw4bujbmcgc2nDqnUga2jhu5FpIGThu7EgcGjDsm5nIGtow7RuZyBo4bujcCBs4buHOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIlRoYW0gc+G7kSBzdHJpZGUga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAiVGhhbSBz4buRIHN0cmlkZSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICJUaGFtIHPhu5EgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBraMO0bmcgaOG7o3AgbOG7hzogJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MzQKK21zZ2lkICJUaGUgcmVzaXplIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gdGhlIGZpbGVzeXN0ZW0gc2l6ZS5cbiIKK21zZ3N0ciAiIgorIlPhu5EgdGhheSDEkeG7lWkga8OtY2ggY+G7oSB04buRaSDEkWEgcGjhuqNpIGzhu5tuIGjGoW4ga8OtY2ggY+G7oSBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjk1OAorbXNnaWQgIk9uLWxpbmUgcmVzaXppbmcgbm90IHN1cHBvcnRlZCB3aXRoIHJldmlzaW9uIDAgZmlsZXN5c3RlbXNcbiIKK21zZ3N0ciAiIgorIlTDrW5oIG7Eg25nIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgbeG7mXQgY8OhY2ggdHLhu7FjIHR1eeG6v24ga2jDtG5nIMSRxrDhu6NjIGjhu5cgdHLhu6NcbiIKKyJ0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluIGLhuqNuIHPhu61hIMSR4buVaSAwXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTg0IG1pc2MvbWtlMmZzLmM6OTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgcm9vdF9vd25lcjogJyVzJ1xuIgorbXNnc3RyICJyb290X293bmVyIGtow7RuZyBo4bujcCBs4buHOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEwMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9uKHMpIHNwZWNpZmllZDogJXNcbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRtbXBfdXBkYXRlX2ludGVydmFsPTxpbnRlcnZhbD5cbiIKKyJcdG51bV9iYWNrdXBfc2I9PDB8MXwyPlxuIgorIlx0c3RyaWRlPTxSQUlEIHBlci1kaXNrIGRhdGEgY2h1bmsgaW4gYmxvY2tzPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSAqIGRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0b2Zmc2V0PTxvZmZzZXQgdG8gY3JlYXRlIHRoZSBmaWxlIHN5c3RlbT5cbiIKKyJcdHJlc2l6ZT08cmVzaXplIG1heGltdW0gc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRwYWNrZWRfbWV0YV9ibG9ja3M9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9qb3VybmFsX2luaXQ9PDAgdG8gZGlzYWJsZSwgMSB0byBlbmFibGU+XG4iCisiXHRyb290X293bmVyPTx1aWQgb2Ygcm9vdCBkaXI+OjxnaWQgb2Ygcm9vdCBkaXI+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08cXVvdGEgdHlwZShzKSB0byBiZSBlbmFibGVkPlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiVMO5eSBjaOG7jW4gxJHDoyBjaG8ga2jDtG5nIMSRw7puZzogJXNcbiIKKyJcbiIKKyJDw6FjIHTDuXkgY2jhu41uIG3hu58gcuG7mW5nIMSRxrDhu6NjIG5nxINuIGPDoWNoIGLhurFuZyBk4bqldSBwaOG6qXksIGPDsyB0aOG7gyBjaOG6pXAgbmjhuq1uXG4iCisiXHTEkeG7kWkgc+G7kSDEkcaw4bujYyBnw6FuIGLhurFuZyBk4bqldSBi4bqxbmcgKOKAnD3igJ0pXG4iCisiXG4iCisiVMO5eSBjaOG7jW4gbeG7nyBy4buZbmcgaOG7o3AgbOG7hzpcbiIKKyJcdG1tcF91cGRhdGVfaW50ZXJ2YWw9PGtob+G6o25nIHRo4budaSBnaWFuPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PMSRb+G6oW4gZOG7ryBsaeG7h3UgUkFJRCBt4buXaSDEkcSpYSB0aGVvIGto4buRaT5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBjw6FjIMSRxKlhIGThu68gbGnhu4d1IHRoZW8ga2jhu5FpPlxuIgorIlx0b2Zmc2V0PTx24buLIHRyw60gdMawxqFuZyDEkeG7kWkgxJHhu4MgdOG6oW8gaOG7hyB0aOG7kW5nIHThuq1wIHRpbj5cbiIKKyJcdHJlc2l6ZT08a8OtY2ggY+G7oSB0aGF5IMSR4buVaSBrw61jaCBj4buhIHThu5FpIMSRYSB0aGVvIGto4buRaT5cbiIKKyJcdHBhY2tlZF9tZXRhX2Jsb2Nrcz08MCDEkeG7gyB04bqvdCwgMSDEkeG7gyBi4bqtdD5cbiIKKyJcdGxhenlfaXRhYmxlX2luaXQ9PDAgxJHhu4MgdOG6r3QsIDEgxJHhu4MgYuG6rXQ+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MCDEkeG7gyB04bqvdCwgMSDEkeG7gyBi4bqtdD5cbiIKKyJcdHJvb3RfdWlkPTx1aWQgY+G7p2EgdGjGsC1t4bulYyBn4buRYz5cbiIKKyJcdHJvb3RfZ2lkPTxnaWQgY+G7p2EgdGjGsC1t4bulYyA+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRkaXNjYXJkXG4iCisiXHRub2Rpc2NhcmRcbiIKKyJcdHF1b3RhdHlwZT08dXNyIEhBWSBncnA+XG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTA1OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogUkFJRCBzdHJpcGUtd2lkdGggJXUgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2Ygc3RyaWRlICV1LlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiQ+G6o25oIGLDoW86IGNoaeG7gXUgcuG7mW5nIHPhu41jIChzdHJpcGUtd2lkdGgpIFJBSUQgJXUga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgYuG7mWkgc+G7kSAiCisiZMawxqFuZyBj4bunYSAldS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisiR+G6t3AgbOG7l2kgY8O6IHBow6FwIHRyb25nIHThuq1wIHRpbiBj4bqldSBow6xuaCBta2UyZnMgKCVzLCBkw7JuZyBz4buRICVkKVxuIgorIlx0JXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTE0IG1pc2MvdHVuZTJmcy5jOjEwMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBmaWxlc3lzdGVtIG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIsSQ4bq3dCB0w7l5IGNo4buNbiBo4buHIHRo4buRbmcgdOG6rXAgdGluIGtow7RuZyBo4bujcCBs4buHOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMjYgbWlzYy90dW5lMmZzLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbW91bnQgb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAixJDhurd0IHTDuXkgY2jhu41uIGzhuq9wIGtow7RuZyBo4bujcCBs4buHOiAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjEyNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIllvdXIgbWtlMmZzLmNvbmYgZmlsZSBkb2VzIG5vdCBkZWZpbmUgdGhlICVzIGZpbGVzeXN0ZW0gdHlwZS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIlThuq1wIHRpbiDigJxta2UyZnMuY29uZuKAnSBj4bunYSBi4bqhbiBraMO0bmcgxJHhu4tuaCBuZ2jEqWEga2nhu4N1IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gJXMuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlLhuqV0IGPDsyB0aOG7gyBsw6AgYuG6oW4gY+G6p24gcGjhuqNpIGPDoGkgxJHhurd0IG3hu5l0IHThuq1wIHRpbiDigJxta2UyZnMuY29uZuKAnSBt4bubaS5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjcwCittc2dpZCAiQWJvcnRpbmcuLi5cbiIKK21zZ3N0ciAixJBhbmcgaOG7p3kgYuG7jy4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJD4bqjbmggYsOhbzogZnNfdHlwZSAlcyBraMO0bmcgxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEgdHJvbmcgbWtlMmZzLmNvbmZcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNDkzCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBuZXcgUEFUSC5cbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGLhu5kgbmjhu5sgY2hvIMSQxq/hu5xORy1E4bqqTlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgaW5pdCBwcm9maWxlIHN1Y2Nlc3NmdWxseSAoZXJyb3I6ICVsZCkuXG4iCittc2dzdHIgIktow7RuZyB0aOG7gyBraOG7n2kgdOG6oW8gcHJvZmlsZSB0aMOgbmggY8O0bmcgKGzhu5dpOiAlbGQpLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1NjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBibG9jayBzaXplIC0gJXMiCittc2dzdHIgImPhu6Ega2jhu5FpIGtow7RuZyBo4bujcCBs4buHIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IGvDrWNoIGPhu6Ega2jhu5FpICVkIHbDtCDDrWNoIHRyw6puIHBo4bqnbiBs4bubbiBo4buHIHRo4buRbmcuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTU4NworIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGNsdXN0ZXIgc2l6ZSAtICVzIgorbXNnc3RyICJj4buhIGxpw6puIGN1bmcga2jDtG5nIGjhu6NwIGzhu4cg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MDAKK21zZ2lkICInLVInIGlzIGRlcHJlY2F0ZWQsIHVzZSAnLUUnIGluc3RlYWQiCittc2dzdHIgIuKAnC1S4oCdIGtow7RuZyBkw7luZyBu4buvYSwgaMOjeSB0aGF5IGLhurFuZyDigJwtReKAnSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjE0IG1pc2MvdHVuZTJmcy5jOjE2ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIC0gJXMiCittc2dzdHIgIuG7qW5nIHjhu60gbOG7l2kgc2FpIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIlPhu5EgY+G6pW0gY2hvIHPhu5Ega2jhu5FpIHRyw6puIG3hu5dpIG5ow7NtIgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzEKK21zZ2lkICJibG9ja3MgcGVyIGdyb3VwIG11c3QgYmUgbXVsdGlwbGUgb2YgOCIKK21zZ3N0ciAic+G7kSBraOG7kWkgdHLDqm4gbeG7l2kgbmjDs20gcGjhuqNpIGzDoCBi4buZaSBz4buRIGNobyA4IgorCisjOiBtaXNjL21rZTJmcy5jOjE2MzkKK21zZ2lkICJJbGxlZ2FsIG51bWJlciBmb3IgZmxleF9iZyBzaXplIgorbXNnc3RyICJLw61jaCBj4buhIGZsZXhfYmcgY8OzIHPhu5Ega2jDtG5nIMSRxrDhu6NjIHBow6lwIgorCisjOiBtaXNjL21rZTJmcy5jOjE2NDUKK21zZ2lkICJmbGV4X2JnIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIDIiCittc2dzdHIgIkvDrWNoIGPhu6EgZmxleF9iZyBwaOG6o2kgbMOgIGzFqXkgdGjhu6thIDIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY1MAorIywgYy1mb3JtYXQKK21zZ2lkICJmbGV4X2JnIHNpemUgKCVsdSkgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMl4zMSIKK21zZ3N0ciAiS8OtY2ggY+G7oSBmbGV4X2JnICglbHUpIHBo4bqjaSBuaOG7jyBoxqFuIGhv4bq3YyBi4bqxbmcgMl4zMSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjYwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgcmF0aW8gJXMgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJ04bu3IGzhu4cgbsO6dCB0aMO0bmcgdGluIGtow7RuZyBo4bujcCBs4buHICVzICh0aGnhu4N1ICVkL8SRYSAlZCkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgLSAlcyIKK21zZ3N0ciAia8OtY2ggY+G7oSBuw7p0IHRow7RuZyB0aW4ga2jDtG5nIGjhu6NwIGzhu4cg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2ODMKK21zZ2lkICIiCisiV2FybmluZzogLUsgb3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLiBVc2UgJy1FICIKKyJub2Rpc2NhcmQnIGV4dGVuZGVkIG9wdGlvbiBpbnN0ZWFkIVxuIgorbXNnc3RyICIiCisiQ+G6o25oIGLDoW86IEtow7RuZyB0w6FuIHRow6BuaCB2aeG7h2Mgc+G7rSBk4bulbmcgdHXhu7MgY2jhu41uIC1LIHbDoCBjw7MgbOG6vSBuw7Mgc+G6vSBraMO0bmcgYmFvICIKKyJnaeG7nSDEkcaw4bujYyBz4butIGThu6VuZyBu4buvYS4gU+G7rSBk4bulbmcgdHXhu7MgY2jhu41uIG3hu58gcuG7mW5nIOKAnC1FIG5vZGlzY2FyZOKAnSDEkeG7gyB0aGF5IHRo4bq/IVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE2OTQKK21zZ2lkICJpbiBtYWxsb2MgZm9yIGJhZF9ibG9ja3NfZmlsZW5hbWUiCittc2dzdHIgIiIKKyJ0cm9uZyBow6BtIGPhuqVwIHBow6F0IGLhu5kgbmjhu5sgbWFsbG9jIGNobyB0w6puIHThuq1wIHRpbiBraOG7kWkgc2FpXG4iCisi4oCcYmFkX2Jsb2Nrc19maWxlbmFtZeKAnSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiV2FybmluZzogbGFiZWwgdG9vIGxvbmc7IHdpbGwgYmUgdHJ1bmNhdGVkIHRvICclcydcbiIKKyJcbiIKK21zZ3N0ciAiQ+G6o25oIGLDoW86IG5ow6NuIHF1w6EgZMOgaSBuw6puIGPhuq90IG5n4bqvbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzEyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlcyIKK21zZ3N0ciAicGjhuqduIHRyxINtIGto4buRaSDEkcaw4bujYyBkw6BuaCByacOqbmcga2jDtG5nIGjhu6NwIGzhu4cg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG51bSBpbm9kZXMgLSAlcyIKK21zZ3N0ciAic+G7kSAobnVtKSBuw7p0IHRow7RuZyB0aW4gc2FpIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzQwCisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgInRyb25nIGtoaSBj4bqlcCBwaMOhdCBi4buZIMSR4buHbSIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICJj4bqlcCBi4bqjbiBz4butYSDEkeG7lWkgc2FpIOKAlCAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgInRyb25nIGtoaSBj4buRIHThuqFvIMSRaeG7g20gJWQiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc3NgorbXNnaWQgIlRoZSAtdCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICJ0w7l5IGNo4buNbiAtdCBjaOG7iSBz4butIGThu6VuZyBt4buZdCBs4bqnbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzg0Cittc2dpZCAiVGhlIC1UIG9wdGlvbiBtYXkgb25seSBiZSB1c2VkIG9uY2UiCittc2dzdHIgIlTDuXkgY2jhu41uIC1UIGNo4buJIHPhu60gZOG7pW5nIG3hu5l0IGzhuqduIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDAgbWlzYy9ta2UyZnMuYzozMTE0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGpvdXJuYWwgZGV2aWNlICVzXG4iCittc2dzdHIgInRyb25nIGtoaSBj4buRIG3hu58gdGhp4bq/dCBi4buLIG5o4bqtdCBrw70gJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgZGV2IGJsb2Nrc2l6ZSAoJWQpIHNtYWxsZXIgdGhhbiBtaW5pbXVtIGJsb2Nrc2l6ZSAlZFxuIgorbXNnc3RyICJLw61jaCBj4buhIGPhu6dhIHRoaeG6v3QgYuG7iyBuaOG6rXQga8O9ICglZCkgbmjhu48gaMahbiBrw61jaCBj4buhIHThu5FpIHRoaeG7g3UgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzaW5nIGpvdXJuYWwgZGV2aWNlJ3MgYmxvY2tzaXplOiAlZFxuIgorbXNnc3RyICLEkGFuZyBkw7luZyBrw61jaCBj4buhIGto4buRaSBj4bunYSB0aGnhur90IGLhu4sgbmjhuq10IGvDvTogJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgImto4buRaSDigJwlc+KAnSBzYWkgdHLDqm4gdGhp4bq/dCBi4buLIOKAnCVz4oCdIgorCisjOiBtaXNjL21rZTJmcy5jOjE4ODcKK21zZ2lkICJmaWxlc3lzdGVtIgorbXNnc3RyICJo4buHIHRo4buRbmcgdOG6rXAgdGluIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MDAgcmVzaXplL21haW4uYzo0OTEKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGZpbGVzeXN0ZW0gc2l6ZSIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgeMOhYyDEkeG7i25oIGvDrWNoIGPhu6EgY+G7p2EgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIiIKKyJLaMO0bmcgdGjhu4MgeMOhYyDEkeG7i25oIGvDrWNoIGPhu6EgY+G7p2EgdGhp4bq/dCBi4buLO1xuIgorImLhuqFuIGPhuqduIHBo4bqjaSBjaOG7iSDEkeG7i25oIGvDrWNoIGPhu6EgY+G7p2EgaOG7hyB0aOG7kW5nIHThuq1wIHRpblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorIkvDrWNoIGPhu6EgY+G7p2EgdGhp4bq/dCBi4buLIMSRxrDhu6NjIHRow7RuZyBiw6FvIGzDoCBz4buRIGtow7RuZy5cbiIKKyJcdFBow6JuIHbDuW5nIGtow7RuZyBo4bujcCBs4buHIMSRxrDhu6NjIMSRxrBhIHJhLFxuIgorIlx0aG/hurdjIGLhuqNuZyBwaMOibiB2w7luZyBraMO0bmcgxJHGsOG7o2MgxJHhu41jIGzhuqFpXG4iCisiXHRzYXUga2hpIGNo4bqheSB0aeG6v24gdHLDrG5oIGZkaXNrLFxuIgorIlx0ZG8gcGjDom4gdsO5bmcgxJHDoyBz4butYSDEkeG7lWkgxJFhbmcgYuG6rW4gdsOgIMSRYW5nIMSRxrDhu6NjIGTDuW5nLlxuIgorIkPDsyBs4bq9IGLhuqFuIGPhuqduIHBo4bqjaSBraOG7n2kgxJHhu5luZyBs4bqhaSBtw6F5IMSR4buDIMSR4buNYyBs4bqhaSBi4bqjbmcgcGjDom4gdsO5bmcuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTkzMAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFyZ2VyIHRoYW4gYXBwYXJlbnQgZGV2aWNlIHNpemUuIgorbXNnc3RyICJI4buHIHRo4buRbmcgdOG6rXAgdGluIGzhu5tuIGjGoW4ga8OtY2ggY+G7oSB0aGnhur90IGLhu4sgYmnhu4N1IGtp4bq/bi4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTk1MAorbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBmcyB0eXBlcyBsaXN0XG4iCittc2dzdHIgIkzhu5dpIHBow6JuIHTDrWNoIGRhbmggc8OhY2ggY8OhYyBraeG7g3UgaOG7hyB0aOG7kW5nIHThuq1wIHRpblxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5OTgKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCBraMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyBraeG7g3UgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMDMKKyMsIGZ1enp5Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmQga2jDtG5nIGjhu5cgdHLhu6MgdMOtbmggbsSDbmcga2nhu4N1IHThuq1wIHRpbi5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDA4CisjLCBmdXp6eQorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiSHVyZCBraMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyBraeG7g3UgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwMTgKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGhhcmR3YXJlIHNlY3RvciBzaXplIgorbXNnc3RyICJ0cm9uZyBraGkgY+G7kSB4w6FjIMSR4buLbmgga8OtY2ggY+G7oSBj4bunYSByw6NuaCBnaGkgcGjhuqduIGPhu6luZyIKKworIzogbWlzYy9ta2UyZnMuYzoyMDI0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBwaHlzaWNhbCBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgeMOhYyDEkeG7i25oIGvDrWNoIGPhu6EgY+G7p2EgcsOjbmggZ2hpIHbhuq10IGzDvSIKKworIzogbWlzYy9ta2UyZnMuYzoyMDU2Cittc2dpZCAid2hpbGUgc2V0dGluZyBibG9ja3NpemU7IHRvbyBzbWFsbCBmb3IgZGV2aWNlXG4iCittc2dzdHIgInRyb25nIGtoaSBjw6BpIMSR4bq3dCBrw61jaCBj4buhIGto4buRaSA7IHF1w6Egbmjhu48gxJHhu5FpIHbhu5tpIHRoaeG6v3QgYuG7i1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIwNjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IHNwZWNpZmllZCBibG9ja3NpemUgJWQgaXMgbGVzcyB0aGFuIGRldmljZSBwaHlzaWNhbCBzZWN0b3JzaXplICVkXG4iCittc2dzdHIgIiIKKyJD4bqjbmggYsOhbzoga8OtY2ggY+G7oSBraOG7kWkgJWQgxJHDoyBnaGkgcsO1IHbhuqtuIG5o4buPIGjGoW4ga8OtY2ggY+G7oSByw6NuaCBnaGkgduG6rXQgbMO9IGPhu6dhICIKKyJ0aGnhur90IGLhu4sgJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogU2l6ZSBvZiBkZXZpY2UgKDB4JWxseCBibG9ja3MpICVzIHRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG4iCisiXHRpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIgorbXNnc3RyICIiCisiJXM6IHRoaeG6v3QgYuG7iyAoMHglbGx4IGJsb2NrcykgJXMgY8OzIGvDrWNoIGPhu6EgcXXDoSBs4bubbiDEkeG7gyBiaeG7g3UgZGnhu4VuIHRoZW8gMzIgYml0XG4iCisiXHRkw7luZyBrw61jaCBj4buhIGto4buRaSBj4bunYSAlZC5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAiZnNfdHlwZXMgxJHhu4MgZ2nhuqNpIHF1eeG6v3QgbWtlMmZzLmNvbmY6ICIKKworIzogbWlzYy9ta2UyZnMuYzoyMTA4Cittc2dpZCAiRmlsZXN5c3RlbSBmZWF0dXJlcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiVMOtbmggbsSDbmcgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluXG4iCisiYuG6o24gc+G7rWEgxJHhu5VpIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTE2Cittc2dpZCAiU3BhcnNlIHN1cGVyYmxvY2tzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyJUw61uaCBuxINuZyBzacOqdSBraOG7kWkgdGjGsGEgdGjhu5t0IGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujXG4iCisidHLDqm4gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBi4bqjbiBz4butYSDEkeG7lWkgMFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMjYKK21zZ2lkICJKb3VybmFscyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICIiCisiVMOtbmggbsSDbmcgbmjhuq10IGvDvSBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluXG4iCisiYuG6o24gc+G7rWEgxJHhu5VpIDBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgInBo4bqnbiB0csSDbSBraOG7kWkgxJHGsOG7o2MgZMOgbmggcmnDqm5nIGtow7RuZyBo4bujcCBs4buHIC0lbGYiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE1NgorbXNnaWQgIiIKKyJFeHRlbnRzIE1VU1QgYmUgZW5hYmxlZCBmb3IgYSA2NC1iaXQgZmlsZXN5c3RlbS4gIFBhc3MgLU8gZXh0ZW50cyB0byAiCisicmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIlBo4bqnbiBt4bufIHLhu5luZyBQSOG6okkgxJHGsOG7o2MgYuG6rXQgY2hvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gNjQtYml0LiBDaHV54buDbiAtTyAiCisicGjhuqduX23hu59fcuG7mW5nIMSR4buDIG7huq9uIGNo4buJbmguXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE3NgorbXNnaWQgIlRoZSBjbHVzdGVyIHNpemUgbWF5IG5vdCBiZSBzbWFsbGVyIHRoYW4gdGhlIGJsb2NrIHNpemUuXG4iCittc2dzdHIgIkvDrWNoIHRoxrDhu5tjIGxpw6puIGN1bmcga2jDtG5nIHRo4buDIG5o4buPIGjGoW4ga8OtY2ggY+G7oSBraOG7kWkuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgImNo4buJIMSR4buLbmgga8OtY2ggdGjGsOG7m2MgbGnDqm4gY3VuZyBj4bqnbiDEkeG6t2MgdMOtbmggYmlnYWxsb2MiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwMgorIywgYy1mb3JtYXQKK21zZ2lkICJ3YXJuaW5nOiBVbmFibGUgdG8gZ2V0IGRldmljZSBnZW9tZXRyeSBmb3IgJXNcbiIKK21zZ3N0ciAiY+G6o25oIGLDoW86IGtow7RuZyB0aOG7gyBs4bqleSBk4bqhbmcgaMOsbmggdGhp4bq/dCBi4buLIGNobyAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYWxpZ25tZW50IGlzIG9mZnNldCBieSAlbHUgYnl0ZXMuXG4iCittc2dzdHIgIktob+G6o25nIHPhuq9wIGjDoG5nICVzIGLhu4sgYsO5IHRoZW8gJWx1IGJ5dGUuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIwNworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhpcyBtYXkgcmVzdWx0IGluIHZlcnkgcG9vciBwZXJmb3JtYW5jZSwgKHJlKS1wYXJ0aXRpb25pbmcgc3VnZ2VzdGVkLlxuIgorbXNnc3RyICIiCisiVHLGsOG7nW5nIGjhu6NwIG7DoHkgY8OzIHRo4buDIGfDonkgcmEgaGnhu4d1IHN14bqldCBy4bqldCB54bq/dSB0aMOsIGtodXnDqm4gYuG6oW4gcGjDom4gdsO5bmcgIgorIihs4bqhaSkuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIkto4buRaSAlZC1ieXRlIHF1w6EgbOG7m24gxJHhu5FpIHbhu5tpIGjhu4cgdGjhu5FuZyAodOG7kWkgxJFhICVkKSIKKworIzogbWlzYy9ta2UyZnMuYzoyMjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiAlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCksIGZvcmNlZCB0byBjb250aW51ZVxuIgorbXNnc3RyICIiCisiQ+G6o25oIGLDoW86IGto4buRaSAlZC1ieXRlIHF1w6EgbOG7m24gxJHhu5FpIHbhu5tpIGjhu4cgdGjhu5FuZyAodOG7kWkgxJFhICVkKVxuIgorIm7Dqm4gYuG7iyBideG7mWMgdGnhur9wIHThu6VjXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjIyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IG9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLlxuIgorIkNyZWF0aW5nIGEgZmlsZSBzeXN0ZW0gd2l0aCAlbGx1IGJsb2NrcyBidXQgdGhpcyBtaWdodFxuIgorIm5vdCBiZSB3aGF0IHlvdSB3YW50LlxuIgorIlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMxMgorbXNnaWQgIkNhbid0IHN1cHBvcnQgYmlnYWxsb2MgZmVhdHVyZSB3aXRob3V0IGV4dGVudHMgZmVhdHVyZSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGjhu5cgdHLhu6MgxJHhurdjIHTDrW5oIGJpZ2FsbG9jIG3DoCBraMO0bmcgY8OzIHBo4bqnbiBt4bufICIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJIYWkgdMOtbmggbsSDbmcgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBuw7p0IChyZXNpemVfaW5vZGUpIHbDoCBzacOqdSBu4buBbiAobWV0YV9iZykgIgorImtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSBuaGF1LlxuIgorIkRvIMSRw7Mga2jDtG5nIHRo4buDIGhp4buHdSBs4buxYyDEkeG7k25nIHRo4budaSBj4bqjIGhhaS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzI3Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBiaWdhbGxvYyBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL0JpZ2FsbG9jIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJD4bqjbmggYsOhbzogxJHhurdjIHTDrW5oIHBow6JuLWLhu5UtbOG7m24gduG6q24gxJFhbmcgdHJvbmcgcXXDoSB0csOsbmggcGjDoXQgdHJp4buDblxuIgorIlhlbSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyDEkeG7gyBiaeG6v3QgY2hpIHRp4bq/dFxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIzMzkKK21zZ2lkICJyZXNlcnZlZCBvbmxpbmUgcmVzaXplIGJsb2NrcyBub3Qgc3VwcG9ydGVkIG9uIG5vbi1zcGFyc2UgZmlsZXN5c3RlbSIKK21zZ3N0ciAiIgorImto4buRaSB0aGF5IMSR4buVaSBrw61jaCBj4buhIHRy4buxYyB0dXnhur9uIMSRxrDhu6NjIGTDoG5oIHJpw6puZyBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7o1xuIgorInRyw6puIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2jDtG5nIHRoxrBhIHRo4bubdCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgInPhu5Ega2jhu5FpIHRyw6puIG3hu5dpIG5ow7NtIOG7nyBuZ2/DoGkgcGjhuqFtIHZpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzNzAKK21zZ2lkICJGbGV4X2JnIGZlYXR1cmUgbm90IGVuYWJsZWQsIHNvIGZsZXhfYmcgc2l6ZSBtYXkgbm90IGJlIHNwZWNpZmllZCIKK21zZ3N0ciAiQ2jGsGEgaGnhu4d1IGzhu7FjIHTDrW5oIG7Eg25nIEZsZXhfYmcgdGjDrCBraMO0bmcgdGjhu4MgZ2hpIHLDtSBrw61jaCBj4buhIEZsZXhfYmciCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM4MgorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHNpemUgJWQgKG1pbiAlZC9tYXggJWQpIgorbXNnc3RyICJrw61jaCBj4buhIG7DunQgdGjDtG5nIHRpbiBraMO0bmcgaOG7o3AgbOG7hyAlZCAodGhp4buDdSAlZC/EkWEgJWQpIgorCisjOiBtaXNjL21rZTJmcy5jOjIzOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJWQgYnl0ZSBpbm9kZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5saW5lIGRhdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyNDI1CisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHJhaXNlIGlub2RlIHJhdGlvPyIKK21zZ3N0ciAicXXDoSBuaGnhu4F1IG7DunQgdGjDtG5nIHRpbiAoJWxsdSksIHTEg25nIHThu7cgbOG7hyBuw7p0IHRow7RuZyB0aW4ga2jDtG5nPyIKKworIzogbWlzYy9ta2UyZnMuYzoyNDMyCisjLCBjLWZvcm1hdAorbXNnaWQgInRvbyBtYW55IGlub2RlcyAoJWxsdSksIHNwZWNpZnkgPCAyXjMyIGlub2RlcyIKK21zZ3N0ciAicXXDoSBuaGnhu4F1IG7DunQgdGjDtG5nIHRpbiAoJWxsdSksIGNo4buJIHJhIDwywrPCsiBuw7p0IHRow7RuZyB0aW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQ0NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiaW5vZGVfc2l6ZSAoJXUpICogaW5vZGVzX2NvdW50ICgldSkgdG9vIGJpZyBmb3IgYVxuIgorIlx0ZmlsZXN5c3RlbSB3aXRoICVsbHUgYmxvY2tzLCBzcGVjaWZ5IGhpZ2hlciBpbm9kZV9yYXRpbyAoLWkpXG4iCisiXHRvciBsb3dlciBpbm9kZSBjb3VudCAoLU4pLlxuIgorbXNnc3RyICIiCisiY+G7oV9uw7p0X3Row7RuZ190aW4gKCV1KSAqIHPhu5FfbMaw4bujbmdfbsO6dF90aMO0bmdfdGluICgldSkgcXXDoSBs4bubblxuIgorIlx0Y2hvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gY8OzICVsbHUga2jhu5FpLCBow6N5IGNo4buJIMSR4buLbmhcbiIKKyJcdHThu7dfbOG7h19uw7p0X3Row7RuZ190aW4gKC1pKSBjYW8gaMahbiBoYXkgc+G7kSBsxrDhu6NuZyBuw7p0IHRow7RuZyB0aW5cbiIKKyIoLU4pIHRo4bqlcCBoxqFuXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjYzMworbXNnaWQgIkRpc2NhcmRpbmcgZGV2aWNlIGJsb2NrczogIgorbXNnc3RyICJC4buPIHF1YSBraOG7kWkgdGhp4bq/dCBi4buLOiAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kgLSAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjcwOAorIywgZnV6enkKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAidHJvbmcga2hpIGto4bufaSB04bqhbyBleHQyX3Fjb3cyX2ltYWdlIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKKyMsIGZ1enp5Cittc2dpZCAid2hpbGUgd3JpdGluZyBxdW90YSBpbm9kZXMiCittc2dzdHIgInRyb25nIGtoaSBnaGkgbsO6dCB0aMO0bmcgdGluIG5o4bqtdCBrw70iCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjc0MAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiYmFkIGVycm9yIGJlaGF2aW9yIGluIHByb2ZpbGUgLSAlcyIKK21zZ3N0ciAi4bupbmcgeOG7rSBs4buXaSBzYWkg4oCUICVzIgorCisjIEl0ZW0gaW4gdGhlIG1haW4gbWVudSB0byBzZWxlY3QgdGhpcyBwYWNrYWdlCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgInRyb25nIGtoaSBjw6BpIMSR4bq3dCBzacOqdSBraOG7kWkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rZTJmcy5jOjI4NDUKK21zZ2lkICJUaGUgbWV0YWRhdGFfY3N1bV9zZWVkIGZlYXR1cmUgcmVxdXJlcyB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6Mjg2OQorbXNnaWQgIkRpc2NhcmQgc3VjY2VlZGVkIGFuZCB3aWxsIHJldHVybiAwcyAtIHNraXBwaW5nIGlub2RlIHRhYmxlIHdpcGVcbiIKK21zZ3N0ciAiTG/huqFpIGLhu48gdGjDoG5oIGPDtG5nIHbDoCBz4bq9IHRy4bqjIHbhu4EgMCAtIGLhu48gcXVhIHhvw6EgYuG6o25nIG7DunRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAiaOG7hyDEkWnhu4F1IGjDoG5oIGzhuqEg4oCUICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMTgKK21zZ2lkICJBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogIgorbXNnc3RyICJQaMOibiBi4buVIGLhuqNuZyBuaMOzbTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMwMjYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gYWxsb2NhdGUgZmlsZXN5c3RlbSB0YWJsZXMiCittc2dzdHIgInRyb25nIGtoaSBj4buRIGPhuqVwIHBow6F0IGPDoWMgYuG6o25nIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAzNQorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIGNvbnZlcnRpbmcgc3ViY2x1c3RlciBiaXRtYXAiCittc2dzdHIgIiIKKyJcbiIKKyJcdHRyb25nIGtoaSBjaHV54buDbiDEkeG7lWkgbeG6o25nIOG6o25oIGxpw6puIGN1bmcgY29uIgorCisjOiBtaXNjL21rZTJmcy5jOjMwNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgbWF5IGJlIGZ1cnRoZXIgY29ycnVwdGVkIGJ5IHN1cGVyYmxvY2sgcmV3cml0ZVxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA4MgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB6ZXJvaW5nIGJsb2NrICVsbHUgYXQgZW5kIG9mIGZpbGVzeXN0ZW0iCittc2dzdHIgInRyb25nIGtoaSDEkWnhu4FuIHPhu5Ega2jDtG5nIGto4buRaSAlbGx1IHThuqFpIGvhur90IHRow7pjIGPhu6dhIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorbXNnaWQgIndoaWxlIHJlc2VydmluZyBibG9ja3MgZm9yIG9ubGluZSByZXNpemUiCittc2dzdHIgInRyb25nIGtoaSBkw6BuaCByacOqbmcgY8OhYyBraOG7kWkgxJHhu4MgdGhheSDEkeG7lWkga8OtY2ggY+G7oSB0cuG7sWMgdHV54bq/biIKKworIzogbWlzYy9ta2UyZnMuYzozMTA3IG1pc2MvdHVuZTJmcy5jOjE0MTUKK21zZ2lkICJqb3VybmFsIgorbXNnc3RyICJuaOG6rXQga8O9IgorCisjOiBtaXNjL21rZTJmcy5jOjMxMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWRkaW5nIGpvdXJuYWwgdG8gZGV2aWNlICVzOiAiCittc2dzdHIgIsSQYW5nIHRow6ptIG5o4bqtdCBrw70gdsOgbyB0aGnhur90IGLhu4sgJXM6ICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyJ0cm9uZyBraGkgY+G7kSB0aMOqbSBuaOG6rXQga8O9IHbDoG8gdGhp4bq/dCBi4buLICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzEgbWlzYy9ta2UyZnMuYzozMTYwIG1pc2MvbWtlMmZzLmM6MzIwMAorIzogbWlzYy9ta19odWdlZmlsZXMuYzo1MTAgbWlzYy90dW5lMmZzLmM6MTQ0NCBtaXNjL3R1bmUyZnMuYzoxNDYzCittc2dpZCAiZG9uZVxuIgorbXNnc3RyICJob8OgbiB04bqldFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzcKK21zZ2lkICJTa2lwcGluZyBqb3VybmFsIGNyZWF0aW9uIGluIHN1cGVyLW9ubHkgbW9kZVxuIgorbXNnc3RyICLEkGFuZyBi4buPIHF1YSBixrDhu5tjIHThuqFvIG5o4bqtdCBrw70gdHJvbmcgY2jhur8gxJHhu5kgY2jhu4kgc2nDqnVcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCV1IGJsb2Nrcyk6ICIKK21zZ3N0ciAixJBhbmcgdOG6oW8gbmjhuq10IGvDvSAoJXUga2jhu5FpKTogIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJ0cm9uZyBraGkgY+G7kSB04bqhbyBuaOG6rXQga8O9IgorCisjOiBtaXNjL21rZTJmcy5jOjMxNjggbWlzYy90dW5lMmZzLmM6MTA3MgorbXNnaWQgIiIKKyJcbiIKKyJFcnJvciB3aGlsZSBlbmFibGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUuIgorbXNnc3RyICIiCisiXG4iCisiTOG7l2kga2hpIGLhuq10IMSR4bq3YyB0w61uaCBi4bqjbyB24buHIMSRYSBn4bqvbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICJC4bqjbyB24buHIMSRYSBn4bqvbiDEkcaw4bujYyBi4bqtdCB24bubaSBuaOG7i3AgY+G6rXAgbmjhuq10IGzDoCAlZCBnacOieS5cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTkxCisjLCBmdXp6eQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkeG6qXkgZOG7ryBsaeG7h3Ugc2F1IGzhu4duaCBnaGkgbMOqbiB0aGnhur90IGLhu4sgbMawdSB0cuG7rzogJW1cbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIHBvcHVsYXRpbmcgZmlsZSBzeXN0ZW0iCittc2dzdHIgInRyb25nIGtoaSBj4bqlcCBwaMOhdCBi4bqjbmcgbDEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIwNAorbXNnaWQgIldyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogIgorbXNnc3RyICLEkGFuZyBnaGkgc2nDqnUga2jhu5FpIHbDoCB0aMO0bmcgdGluIGvhur8gdG/DoW4gaOG7hyB0aOG7kW5nIHThuq1wIHRpbjogIgorCisjOiBtaXNjL21rZTJmcy5jOjMyMTEKK21zZ2lkICIiCisiXG4iCisiV2FybmluZywgaGFkIHRyb3VibGUgd3JpdGluZyBvdXQgc3VwZXJibG9ja3MuIgorbXNnc3RyICIiCisiXG4iCisiQ+G6o25oIGLDoW86IGfhurdwIGtow7Mga2jEg24gdHJvbmcgdmnhu4djIGdoaSByYSBjw6FjIHNpw6p1IGto4buRaS4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzIxMworbXNnaWQgIiIKKyJkb25lXG4iCisiXG4iCittc2dzdHIgIiIKKyJob8OgbiB04bqldFxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQ5MQorbXNnaWQgIkh1Z2UgZmlsZXMgd2lsbCBiZSB6ZXJvJ2VkXG4iCittc2dzdHIgIiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTIKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICLEkGFuZyB04bqhbyB04bqtcCB0aW4gdGjGsOG7nW5nICVzXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDk0CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aXRoICVsbHUgYmxvY2tzIGVhY2giCittc2dzdHIgIiIKKyJj4bqjbmggYsOhbzogJWxsdSBraOG7kWkgY2jGsGEgZMO5bmcuXG4iCisiXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBodWdlIGZpbGUgJWx1IgorbXNnc3RyICJ0cm9uZyBraGkgbOG6t3AgcXVhIG7DunQgJXUiCisKKyM6IG1pc2MvbWtsb3N0K2ZvdW5kLmM6NTAKK21zZ2lkICJVc2FnZTogbWtsb3N0K2ZvdW5kXG4iCittc2dzdHIgIkPDoWNoIGTDuW5nOiBta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyJDw6FjaCBkw7luZzogICVzIHRoaeG6v3QgYuG7iy4uLlxuIgorIlxuIgorIkluIHJhIHRow7RuZyB0aW4gduG7gSBwaMOibiB2w7luZyDEkeG7kWkgduG7m2kgbeG7l2kgdGhp4bq/dCBi4buLIMSRxrDhu6NjIGNoby5cbiIKKyJWw60gZOG7pTogJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBnZW9tZXRyeSBvZiAlczogJXMiCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSBk4bqhbmcgaMOsbmggY+G7p2EgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGzhuqV5IGvDrWNoIGPhu6EgY+G7p2EgJXM6ICVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVzOiBoPSUzZCBzPSUzZCBjPSU0ZCAgIMSR4bqndT0lOGQgY+G7oT0lOGx1IGN14buRaT0lOGRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5CisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJIw6N5IGNo4bqheSB0aeG6v24gdHLDrG5oIGUyZnNjayB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEKKyMsIGZ1enp5Cittc2dpZCAiUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICJIw6N5IGNo4bqheSB0aeG6v24gdHLDrG5oIGUyZnNjayB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIkPDoWNoIGTDuW5nOiAlcyBbLWMgc+G7kV/EkeG6v21fbOG6r3BfdOG7kWlfxJFhXSBbLWUg4bupbmdfeOG7rV9s4buXaV0gWy1nIG5ow7NtXVxuIgorIlx0Wy1pIGtob+G6o25nW2R8bXx3XV0gWy1qXSBbLUogdMO5eV9jaOG7jW5fbmjhuq10X2vDvV0gWy1sXVxuIgorIlx0Wy1tIHBo4bqnbl90csSDbV9raOG7kWlfZMOgbmhfcmnDqm5nXSBbLW8gW15ddMO5eV9jaOG7jW5fbOG6r3BbLC4uLl1dIFstcCAiCisibmjhu4twX2Phuq1wX25o4bqtdF9tbXBdXG4iCisiXHRbLXIgc+G7kV/EkeG6v21fa2jhu5FpX2TDoG5oX3Jpw6puZ10gWy11IG5nxrDhu51pX2TDuW5nXSBbLUMgc+G7kV/EkeG6v21fbOG6r3BdIFstTCAiCisibmjDo25fcGjDom5fdsO5bmddXG4iCisiXHRbLU0gdGjGsF9t4bulY19s4bqvcF9jdeG7kWldIFstTyBbXl10w61uaF9uxINuZ1ssLi4uXV1cbiIKKyJcdFstUSB0w7l5X2No4buNbl9xdW90YV1cbiIKKyJcdFstRSB0w7l5X2No4buNbl9t4bufX3Lhu5luZ1ssLi4uXSBbLVQgZ2nhu51fa2nhu4NtX3RyYV9jdeG7kWldIFstVSBVVUlEXVxuIgorIlx0Wy1JIGPhu6FfbsO6dF9t4bubaV0gdGhp4bq/dF9i4buLXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIxOAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQhXG4iCittc2dzdHIgIktow7RuZyB0w6xtIHRo4bqleSBzacOqdSBraOG7kWkgbmjhuq10IGvDvSAhXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3NgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIGV4dGVybmFsIGpvdXJuYWwiCittc2dzdHIgInRyb25nIGtoaSBj4buRIG3hu58gbmjhuq10IGvDvSBiw6puIG5nb8OgaSIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyIG1pc2MvdHVuZTJmcy5jOjI3MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiVzIGtow7RuZyBwaOG6o2kgdGhp4bq/dCBi4buLIG5o4bqtdCBrw70uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MiBtaXNjL3R1bmUyZnMuYzoyNzEyCittc2dpZCAiRmlsZXN5c3RlbSdzIFVVSUQgbm90IGZvdW5kIG9uIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgVVVJRCBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluIHRyw6puIHRoaeG6v3QgYuG7iyBuaOG6rXQga8O9LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTYKK21zZ2lkICIiCisiQ2Fubm90IGxvY2F0ZSBqb3VybmFsIGRldmljZS4gSXQgd2FzIE5PVCByZW1vdmVkXG4iCisiVXNlIC1mIG9wdGlvbiB0byByZW1vdmUgbWlzc2luZyBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyDEkeG7i25oIMSRxrDhu6NjIHRoaeG6v3QgYuG7iyBqb3VybmFsLiBOw7MgxJHDoyBLSMOUTkcgYuG7iyBn4buhIGLhu49cbiIKKyJT4butIGThu6VuZyB0deG7syBjaOG7jW4gLWYgxJHhu4MgZ+G7oSBi4buPIHRoaeG6v3QgYuG7iyBqb3VybmFsIGLhu4sgdGhp4bq/dS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzI1Cittc2dpZCAiSm91cm5hbCByZW1vdmVkXG4iCittc2dzdHIgIk5o4bqtdCBrw70gxJHDoyBn4buhIGLhu49cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICJ0cm9uZyBraGkgxJHhu41jIGPDoWMgbeG6o25nIOG6o25oIgorCisjOiBtaXNjL3R1bmUyZnMuYzozNzcKK21zZ2lkICJ3aGlsZSBjbGVhcmluZyBqb3VybmFsIGlub2RlIgorbXNnc3RyICJ0cm9uZyBraGkgeG/DoSBz4bqhY2ggbsO6dCB0aMO0bmcgdGluIG5o4bqtdCBrw70iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM4OAorbXNnaWQgIndoaWxlIHdyaXRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAidHJvbmcga2hpIGdoaSBuw7p0IHRow7RuZyB0aW4gbmjhuq10IGvDvSIKKworIzogbWlzYy90dW5lMmZzLmM6NDIzIG1pc2MvdHVuZTJmcy5jOjQ0NSBtaXNjL3R1bmUyZnMuYzo0NTgKK21zZ2lkICIoYW5kIHJlYm9vdCBhZnRlcndhcmRzISlcbiIKK21zZ3N0ciAiKHbDoCBraOG7n2kgxJHhu5luZyBs4bqhaSBzYXUhKVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQWZ0ZXIgcnVubmluZyBlMmZzY2ssIHBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gYHJlc2l6ZTJmcyAlcyAlcyIKK21zZ3N0ciAiIgorIlRyxrDhu5tjIHRpw6puIGjDo3kgY2jhuqF5IGzhu4duaCDigJxlMmZzY2sgLWYgJXPigJ0uXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIgLXogXCIlc1wiIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4NQorIywgYy1mb3JtYXQKK21zZ2lkICInIHRvIGVuYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBkaXNhYmxlIDY0LWJpdCBtb2RlLlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjk3NAorbXNnaWQgIiIKKyJXQVJOSU5HOiBDb3VsZCBub3QgY29uZmlybSBrZXJuZWwgc3VwcG9ydCBmb3IgbWV0YWRhdGFfY3N1bV9zZWVkLlxuIgorIiAgVGhpcyByZXF1aXJlcyBMaW51eCA+PSB2NC40LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2xlYXJpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAiVMOtbmggbsSDbmcgeG/DoSBz4bqhY2ggaOG7hyB0aOG7kW5nIHThuq1wIHRpbiDigJwlc+KAnSBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oy5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnJXMnIG5vdCBzdXBwb3J0ZWQuXG4iCittc2dzdHIgIlTDrW5oIG7Eg25nIMSR4bq3dCBo4buHIHRo4buRbmcgdOG6rXAgdGluIOKAnCVz4oCdIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDI1Cittc2dpZCAiIgorIlRoZSBoYXNfam91cm5hbCBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIlTDrW5oIG7Eg25nIGPDsyBuaOG6rXQga8O9IChoYXNfam91cm5hbCkgY8OzIHRo4buDIMSRxrDhu6NjIHhvw6Egc+G6oWNoXG4iCisiY2jhu4kga2hpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHGsOG7o2MgdGjDoW8gZ+G6r24ga+G6v3RcbiIKKyJoYXkgxJHGsOG7o2MgZ+G6r24ga+G6v3QgbeG7mXQgY8OhY2ggY2jhu4kgxJHhu41jLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDMzCittc2dpZCAiIgorIlRoZSBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldC4gIFBsZWFzZSBydW4gZTJmc2NrIGJlZm9yZSBjbGVhcmluZ1xuIgorInRoZSBoYXNfam91cm5hbCBmbGFnLlxuIgorbXNnc3RyICIiCisixJDhurd0IGPhu50gY+G6p24gdGhp4bq/dCBwaOG7pWMgaOG7k2kgKG5lZWRzX3JlY292ZXJ5KS5cbiIKKyJIw6N5IGNo4bqheSB0aeG6v24gdHLDrG5oIGUyZnNjayB0csaw4bubYyBraGkgeG/DoSBz4bqhY2ggY+G7nSBjw7Mgbmjhuq10IGvDvSAoaGFzX2pvdXJuYWwpLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDUxCittc2dpZCAiIgorIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICdzcGFyc2Vfc3VwZXInIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJLaMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyBjaOG7qWMgbsSDbmcg4oCcc3BhcnNlX3N1cGVy4oCdXG4iCisiY2hvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gduG7m2kgxJHhurdjIHTDrW5oIG1ldGFfYmcgxJHGsOG7o2MgYuG6rXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwNjQKK21zZ2lkICIiCisiVGhlIG11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gZmVhdHVyZSBjYW4ndFxuIgorImJlIHNldCBpZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkIG9yXG4iCisicmVhZC1vbmx5LlxuIgorbXNnc3RyICIiCisiVMOtbmggbsSDbmcgYuG6o28gduG7hyBjaOG7kW5nIMSRYSBn4bqvbiBraMO0bmcgdGjhu4NcbiIKKyLEkeG6t3QgxJHGsOG7o2MgbuG6v3UgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiDEkcOjIMSRxrDhu6NjIGfhuq9uIGvhur90XG4iCisiaGF5IGNo4buJIGNobyDEkeG7jWMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAixJDhurdjIHTDrW5oIGvhu7kgdGh14bqtdCBi4bqjbyB24buHIMSRYSBn4bqvbiDEkcOjIGLhuq10IHbhu5tpIG5o4buLcCBj4bqtcCBuaOG6rXQgbMOgICVkIGdpw6J5LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIiIKKyLEkOG6t2MgdMOtbmgga+G7uSB0aHXhuq10IGLhuqNvIHbhu4cgxJFhIGfhuq9uIGtow7RuZyB0aOG7g1xuIgorIsSRxrDhu6NjIHThuq90IG7hur91IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gY2jhu4kgxJHhu41jLlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkeG7jWMgbeG6o25nXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiTWFnaWMgbnVtYmVyIGluIE1NUCBibG9jayBkb2VzIG5vdCBtYXRjaC4gZXhwZWN0ZWQ6ICV4LCBhY3R1YWw6ICV4XG4iCittc2dzdHIgIlPhu5EgbeG6p3Ugbmhp4buHbSB0cm9uZyBraOG7kWkgTU1QIGtow7RuZyBraOG7m3AuIG1vbmcgY2jhu506ICV4LCB0aOG7sWMgdOG6vzogJXhcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTExMworbXNnaWQgIndoaWxlIHJlYWRpbmcgTU1QIGJsb2NrLiIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBraOG7kWkgTU1QLiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAiR+G7oSBi4buPIGPhu50gZmxleF9iZyB0aMOsIGfDonkgcmEgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBraMO0bmcgdGjhu5FuZyBuaOG6pXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAiIgorIlTDrW5oIG7Eg25nIHThuq1wIHRpbiBy4bqldCBs4bubbiAoaHVnZV9maWxlKSBjw7MgdGjhu4MgxJHGsOG7o2MgeG/DoSBz4bqhY2hcbiIKKyJjaOG7iSBraGkgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiDEkcaw4bujYyB0aMOhbyBn4bqvbiBr4bq/dFxuIgorImhheSDEkcaw4bujYyBn4bqvbiBr4bq/dCBt4buZdCBjw6FjaCBjaOG7iSDEkeG7jWMuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE3NQorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE4MgorbXNnaWQgIiIKKyI2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgIgorInRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBSdW4gcmVzaXplMmZzIC1iIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMDgKK21zZ2lkICJEaXNhYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjEwCittc2dpZCAiQ2Fubm90IGRpc2FibGUgbWV0YWRhdGFfY3N1bSBvbiBhIG1vdW50ZWQgZmlsZXN5c3RlbSFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisiXG4iCisiQ+G6o25oIGLDoW86IHR14buzIGNo4buNbiDigJxecXVvdGHigJ0gc+G6vSBkw6ggbMOqbiDEkeG7kWkgc+G7kSDigJwtUeKAnS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorIywgZnV6enkKK21zZ2lkICIiCisiU2V0dGluZyBmZWF0dXJlICdtZXRhZGF0YV9jc3VtX3NlZWQnIGlzIG9ubHkgc3VwcG9ydGVkXG4iCisib24gZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YWRhdGFfY3N1bSBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJLaMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyBjaOG7qWMgbsSDbmcg4oCcc3BhcnNlX3N1cGVy4oCdXG4iCisiY2hvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gduG7m2kgxJHhurdjIHTDrW5oIG1ldGFfYmcgxJHGsOG7o2MgYuG6rXQuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzNjIKK21zZ2lkICIiCisiVVVJRCBoYXMgY2hhbmdlZCBzaW5jZSBlbmFibGluZyBtZXRhZGF0YV9jc3VtLiAgRmlsZXN5c3RlbSBtdXN0IGJlICIKKyJ1bm1vdW50ZWQgXG4iCisidG8gc2FmZWx5IHJld3JpdGUgYWxsIG1ldGFkYXRhIHRvIG1hdGNoIHRoZSBuZXcgVVVJRC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICJI4buHIHRo4buRbmcgdOG6rXAgdGluIMSRw6MgY8OzIG5o4bqtdCBrw70uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIlx0d2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBvbiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisidHJvbmcga2hpIGPhu5EgbeG7nyBuaOG6rXQga8O9IHRyw6puICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBvbiBkZXZpY2UgJXM6ICIKK21zZ3N0ciAixJBhbmcgdOG6oW8gbmjhuq10IGvDvSB0csOqbiB0aGnhur90IGLhu4sgJXM6ICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICJ0cm9uZyBraGkgdGjDqm0gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiB2w6BvIG5o4bqtdCBrw70gdHLDqm4gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NDYKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIGlub2RlOiAiCittc2dzdHIgIsSQYW5nIHThuqFvIG7DunQgdGjDtG5nIHRpbiBuaOG6rXQga8O9OiAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorInRyb25nIGtoaSBj4buRIHThuqFvIHThuq1wIHRpbiBuaOG6rXQga8O9IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4CisjLCBmdXp6eQorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeSIKK21zZ3N0ciAidHJvbmcga2hpIGto4bufaSB04bqhbyBzacOqdSBraOG7kWkgbmjhuq10IGvDvSIKKworIzogbWlzYy90dW5lMmZzLmM6MTUxOAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgInRyb25nIGtoaSBj4bqtcCBuaOG6rXQgbsO6dCB0aMO0bmcgdGluIGto4buRaSBo4buPbmciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MjYKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICJ0cm9uZyBraGkgZ2hpIG7DunQgdGjDtG5nIHRpbiAlbHUgdHJvbmcgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MzQKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlbW92aW5nIHF1b3RhIGZpbGUgKCVkKSIKK21zZ3N0ciAidHJvbmcga2hpIMSR4buNYyBuw7p0IHRow7RuZyB0aW4gZ+G7kWMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1NzUKKyMsIGZ1enp5Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisixJDDoyBjaOG7iSDEkeG7i25oIHR14buzIGNo4buNbiBo4bqhbiBuZ+G6oWNoIHNhaS5cbiIKKyJcbiIKKyJTYXUgxJHDonkgbMOgIGRhbmggc8OhY2ggY8OhYyB0deG7syBjaOG7jW4gaOG6oW4gbmfhuqFjaCDEkcaw4bujYyBkw7luZyAoY2jhuqVwIG5o4bqtbiBuZ8SDbiBjw6FjaCAiCisiYuG6sW5nIGThuqV1IHBo4bqpeSk6XG4iCisiXHRbXl11c3JxdW90YVxuIgorIlx0W15dZ3JwcXVvdGFcbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTYzMworIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBwYXJzZSBkYXRlL3RpbWUgc3BlY2lmaWVyOiAlcyIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDoWNoIHRvw6FuIHThu60gbmfDoHkvZ2nhu506ICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjU4IG1pc2MvdHVuZTJmcy5jOjE2NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIG1vdW50cyBjb3VudCAtICVzIgorbXNnc3RyICJz4buRIMSR4bq/bSBn4bqvbiBzYWkg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICJHSUQvdMOqbiBuaMOzbSBzYWkg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzQ3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbnRlcnZhbCAtICVzIgorbXNnc3RyICJzYWkgbmjhu4twIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHJlc2VydmVkIGJsb2NrIHJhdGlvIC0gJXMiCittc2dzdHIgInThu7cgbOG7hyBraOG7kWkgZMOgbmggcmnDqm5nIHNhaSDigJQgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3OTEKK21zZ2lkICItbyBtYXkgb25seSBiZSBzcGVjaWZpZWQgb25jZSIKK21zZ3N0ciAiY8OzIHRo4buDIMSRxrBhIHJhIHTDuXkgY2jhu41uIOKAnC1v4oCdIGNo4buJIG3hu5l0IGzhuqduIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODAwCittc2dpZCAiLU8gbWF5IG9ubHkgYmUgc3BlY2lmaWVkIG9uY2UiCittc2dzdHIgImPDsyB0aOG7gyDEkcawYSByYSB0w7l5IGNo4buNbiDigJwtT+KAnSBjaOG7iSBt4buZdCBs4bqnbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgInPhu5EgxJHhur9tIGto4buRaSBkw6BuaCByacOqbmcgc2FpIOKAlCAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg0NgorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgdWlkL3VzZXIgbmFtZSAtICVzIgorbXNnc3RyICJVSUQvdMOqbiBuZ8aw4budaSBkw7luZyBzYWkg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBpbm9kZSBzaXplIC0gJXMiCittc2dzdHIgImvDrWNoIGPhu6EgbsO6dCBzYWkg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIkvDrWNoIGPhu6EgbsO6dCBwaOG6o2kgbMOgIGzFqXkgdGjhu6thIDIg4oCUICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIm1tcF91cGRhdGVfaW50ZXJ2YWwgcXXDoSBs4bubbiAoJWx1KVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICIiCisixJBhbmcgxJHhurd0IGtob+G6o25nIHRo4budaSBnaWFuIGPhuq1wIG5o4bqtdCBi4bqjbyB24buHIGNo4buRbmcgxJFhIGzhuq9wIHRow6BuaCAlbHUgZ2nDonlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTk5NQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIFJBSUQgc3RyaWRlOiAlc1xuIgorbXNnc3RyICJUaGFtIHPhu5Egc3RyaWRlIFJBSUQga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBSQUlEIHN0cmlwZS13aWR0aDogJXNcbiIKK21zZ3N0ciAiVGhhbSBz4buRIGNoaeG7gXUgcuG7mW5nIHPhu41jIChzdHJpcGUtd2lkdGgpIFJBSUQga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAiVGh14bqtdCB0b8OhbiB04bqhbyBt4bqrdSBkdXkgbmjhuqV0IHbhuqtuIGtow7RuZyBo4bujcCBs4buHOiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDMxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZGVmYXVsdCBoYXNoIGFsZ29yaXRobSB0byAlcyAoJWQpXG4iCittc2dzdHIgIsSQYW5nIMSR4bq3dCB0aHXhuq10IHRvw6FuIHThuqFvIG3huqt1IGR1eSBuaOG6pXQgdGjDoG5oICVzICglZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjA1MAorbXNnaWQgIiIKKyJcbiIKKyJCYWQgb3B0aW9ucyBzcGVjaWZpZWQuXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaCBhbGdvcml0aG0+XG4iCisiXHRtb3VudF9vcHRzPTxleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnM+XG4iCisiXHRzdHJpZGU9PFJBSUQgcGVyLWRpc2sgY2h1bmsgc2l6ZSBpbiBibG9ja3M+XG4iCisiXHRzdHJpcGVfd2lkdGg9PFJBSUQgc3RyaWRlKmRhdGEgZGlza3MgaW4gYmxvY2tzPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKK21zZ3N0ciAiIgorIlxuIgorIkNo4buJIMSR4buLbmggdMO5eSBjaOG7jW4gc2FpLlxuIgorIlxuIgorIkPDoWMgdMO5eSBjaOG7jW4gbeG7nyBy4buZbmcgxJHhu4tuaCBnaeG7m2kgYuG6sW5nIGThuqV1IHBo4bqpeSwgY8OzIHRo4buDIGNo4bqlcCBuaOG6rW5cbiIKKyJcdMSR4buRaSBz4buRIMSRxrDhu6NjIGfDoW4gduG7m2kgZOG6pXUgYuG6sW5nIOKAnD3igJ0uXG4iCisiXG4iCisiVMO5eSBjaOG7jW4gxJHDoyBt4bufIHLhu5luZyBo4bujcCBs4buHOlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08dGh14bqtdCB0b8OhbiBixINtPlxuIgorIlx0bW91bnRfb3B0cz08Y8OhYyB0deG7syBjaOG7jW4gZ+G6r24gbeG6t2MgxJHhu4tuaCBt4bufIHLhu5luZz5cbiIKKyJcdHN0cmlkZT08UkFJRCBjaG8gbeG7l2kga8OtY2ggY+G7oSDEkW/huqFuIMSRxKlhIHRoZW8ga2jhu5FpPlxuIgorIlx0c3RyaXBlLXdpZHRoPTxSQUlEIHN0cmlkZSpjw6FjIMSRxKlhIGThu68gbGnhu4d1IHRoZW8ga2jhu5FpPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUxOQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIMOhbmggeOG6oSBpbm9kZVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIkzhu5dpIGtoaSDEkeG7jWMgbeG6o25nIGto4buRaVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICJraOG7kWkgY+G6p24gZGkgY2h1eeG7g24iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIkzhu5dpIGPhuqVwIHBow6F0IOG6o25oIG3huqNuZyBraOG7kWkga2hpIHTEg25nIGvDrWNoIGPhu6EgaW5vZGVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU1MAorbXNnaWQgIk5vdCBlbm91Z2ggc3BhY2UgdG8gaW5jcmVhc2UgaW5vZGUgc2l6ZSBcbiIKK21zZ3N0ciAiS2jDtG5nIMSR4bunIHPhu6ljIGNo4bupYSDEkeG7gyB0xINuZyBrw61jaCBj4buhIGlub2RlXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIkzhu5dpIMSR4buLbmggduG7iyBs4bqhaSBraOG7kWkgdHJvbmcga2hpIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgaW5vZGUgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1ODcKK21zZ2lkICIiCisiRXJyb3IgaW4gcmVzaXppbmcgdGhlIGlub2RlIHNpemUuXG4iCisiUnVuIGUydW5kbyB0byB1bmRvIHRoZSBmaWxlIHN5c3RlbSBjaGFuZ2VzLiBcbiIKK21zZ3N0ciAiIgorIkfhurdwIGzhu5dpIGtoaSB0aGF5IMSR4buVaSBrw61jaCBj4buhIG7DunQuXG4iCisiSMOjeSBjaOG6oXkgbOG7h25oIOKAnGUydW5kb+KAnSDEkeG7gyBo4buneSBjw6FjIGLGsOG7m2MgdGhheSDEkeG7lWkgaOG7hyB0aOG7kW5nIHThuq1wIHRpbi4gXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI3OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1NUCBibG9jayBtYWdpYyBpcyBiYWQuIFRyeSB0byBmaXggaXQgYnkgcnVubmluZzpcbiIKKyInZTJmc2NrIC1mICVzJ1xuIgorbXNnc3RyICIiCisiS2jhu5FpIG3DoHUgbmhp4buHbSBNTVAgc2FpLiBIw6N5IHRo4butIHPhu61hIGLhurFuZyBjw6FjaCBjaOG6oXkgbOG7h25oOlxuIgorIuKAnGUyZnNjayAtZiAlc+KAnVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODExCisjLCBmdXp6eQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAiJXMga2jDtG5nIHBo4bqjaSB0aGnhur90IGLhu4sgbmjhuq10IGvDvS5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgyNAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgaW5vZGUgc2l6ZSBpcyBhbHJlYWR5ICVsdVxuIgorbXNnc3RyICJLw61jaCBj4buhIG7DunQgdGjDtG5nIHRpbiDEkcOjICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODMxCittc2dpZCAiU2hyaW5raW5nIGlub2RlIHNpemUgaXMgbm90IHN1cHBvcnRlZFxuIgorbXNnc3RyICJLaMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyB0aHUgbmjhu48ga8OtY2ggY+G7oSBuw7p0XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICJLw61jaCBj4buhIG7DunQgdGjDtG5nIHRpbiBraMO0bmcgaOG7o3AgbOG7hyAlbHUgKHThu5FpIMSRYSAlZClcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIG1heGltYWwgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IHPhu5EgxJHhur9tIGzhuq9wIHThu5FpIMSRYSB0aMOgbmggJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg5NQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGN1cnJlbnQgbW91bnQgY291bnQgdG8gJWRcbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IHPhu5EgxJHhur9tIGzhuq9wIGhp4buHbiB0aOG7nWkgdGjDoG5oICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBlcnJvciBiZWhhdmlvciB0byAlZFxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3Qg4bupbmcgeOG7rSBs4buXaSB0aMOgbmggJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwNQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBnaWQgdG8gJWx1XG4iCittc2dzdHIgIsSQYW5nIMSR4bq3dCBHSUQga2jhu5FpIGTDoG5oIHJpw6puZyB0aMOgbmggJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJ2YWwgYmV0d2VlbiBjaGVja3MgaXMgdG9vIGJpZyAoJWx1KSIKK21zZ3N0ciAia2hv4bqjbmcgZ2nhu69hIGhhaSBs4bqnbiBraeG7g20gdHJhIHF1w6EgbOG7m24gKCVsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbnRlcnZhbCBiZXR3ZWVuIGNoZWNrcyB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyICLEkGFuZyDEkeG6t3Qga2hv4bqjbmcgZ2nhu69hIGhhaSBs4bqnbiBraeG7g20gdHJhIHRow6BuaCAlbHUgZ2nDonlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyNAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvICVnJSUgKCVsbHUgYmxvY2tzKVxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3QgcGjhuqduIHRyxINtIGto4buRaSBk4buxIHRy4buvIHRow6BuaCAlZyUlICglbGx1IGto4buRaSlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzMAorIywgYy1mb3JtYXQKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MgY291bnQgaXMgdG9vIGJpZyAoJWxsdSkiCittc2dzdHIgInPhu5EgbMaw4bujbmcga2jhu5FpIGThu7EgdHLhu68gcXXDoSBs4bubbiAoJWxsdSkiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgY291bnQgdG8gJWxsdVxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3Qgc+G7kSBsxrDhu6NuZyBraOG7kWkgZOG7sSB0cuG7ryB0aMOgbmggJWxsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTQyCittc2dpZCAiIgorIlxuIgorIlRoZSBmaWxlc3lzdGVtIGFscmVhZHkgaGFzIHNwYXJzZSBzdXBlcmJsb2Nrcy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHDoyBjw7Mgc2nDqnUga2jhu5FpIHRoxrBhIHRo4bubdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk0NQorbXNnaWQgIiIKKyJcbiIKKyJTZXR0aW5nIHRoZSBzcGFyc2Ugc3VwZXJibG9jayBmbGFnIG5vdCBzdXBwb3J0ZWRcbiIKKyJmb3IgZmlsZXN5c3RlbXMgd2l0aCB0aGUgbWV0YV9iZyBmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJcbiIKKyJLaMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyBjaOG7qWMgbsSDbmcgcGjDom4gdMOtY2ggY+G7nSBzacOqdSBraOG7kWlcbiIKKyJjaG8gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiB24bubaSDEkeG6t2MgdMOtbmggbWV0YV9iZyDEkcaw4bujYyBi4bqtdC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk1NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiU3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBzZXQuICAlcyIKK21zZ3N0ciAiIgorIlxuIgorIsSQ4bq3dCBj4budIHNpw6p1IGto4buRaSB0aMawYSB0aOG7m3QuICAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2MAorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisiVMOtbmggbsSDbmcgeG/DoSBz4bqhY2ggY+G7nSBzacOqdSBraOG7kWkga2jDtG5nIMSRxrDhu6NjIGjhu5cgdHLhu6MuXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIsSQYW5nIMSR4bq3dCBnaeG7nSBraeG7g20gdHJhIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gbOG6p24gY3Xhu5FpIGPDuW5nIHRow6BuaCAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IFVJRCBraOG7kWkgZMOgbmggcmnDqm5nIHRow6BuaCAlbHVcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzAwNgorbXNnaWQgIkVycm9yIGluIHVzaW5nIGNsZWFyX21tcC4gSXQgbXVzdCBiZSB1c2VkIHdpdGggLWZcbiIKK21zZ3N0ciAiTOG7l2kga2jDtG5nIHPhu60gZOG7pW5nIGNsZWFyX21tcC4gTsOzIHBo4bqjaSDEkcaw4bujYyBz4butIGThu6VuZyBjw7luZyB24bubaSAtZlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDI0Cittc2dpZCAiIgorIlRoZSBxdW90YSBmZWF0dXJlIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyLEkOG6t2MgdMOtbmggaOG6oW4gbmfhuqFjaCBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2MgdGhheSDEkeG7lWkga2hpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2jDtG5nIMSRxrDhu6NjICIKKyJn4bqvbiBr4bq/dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA0OAorbXNnaWQgIlRoZSBVVUlEIG1heSBvbmx5IGJlIGNoYW5nZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpcyB1bm1vdW50ZWQuXG4iCittc2dzdHIgImNo4buJIGPDsyB0aOG7gyB0aGF5IMSR4buVaSBVVUlEIGtoaSBo4buHIHRo4buRbmcgdOG6rXAgdGluIGtow7RuZyDEkcaw4bujYyBn4bqvbiBr4bq/dC5cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA1MQorbXNnaWQgIiIKKyJJZiB5b3Ugb25seSB1c2Uga2VybmVscyBuZXdlciB0aGFuIHY0LjQsIHJ1biAndHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQnICIKKyJhbmQgcmUtcnVuIHRoaXMgY29tbWFuZC5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAixJDhu4tuaCBk4bqhbmcgVVVJRCBraMO0bmcgaOG7o3AgbOG7h1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTAxCittc2dpZCAiTmVlZCB0byB1cGRhdGUgam91cm5hbCBzdXBlcmJsb2NrLlxuIgorbXNnc3RyICJD4bqnbiBwaOG6o2kgY+G6rXAgbmjhuq10IHNpw6p1IGto4buRaSBuaOG6rXQga8O9LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAiIgorIkvDrWNoIGPhu6EgbsO6dCBjaOG7iSBjw7MgdGjhu4MgdGhheSDEkeG7lWkga2hpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2jDtG5nIMSRxrDhu6NjIGfhuq9uIGvhur90LlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTMzCittc2dpZCAiIgorIkNoYW5naW5nIHRoZSBpbm9kZSBzaXplIG5vdCBzdXBwb3J0ZWQgZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIGZsZXhfYmdcbiIKKyJmZWF0dXJlIGVuYWJsZWQuXG4iCittc2dzdHIgIiIKKyJDaOG7qWMgbsSDbmcgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBuw7p0IHRow7RuZyB0aW4ga2jDtG5nIHBo4bqjaSDEkcaw4bujYyBo4buXIHRy4bujIMSR4buRaSB24bubaSBo4buHICIKKyJ0aOG7kW5nIHThuq1wIHRpbiDEkcOjIGLhuq10IHTDrW5oIG7Eg25nIOKAnGZsZXhfYmfigJ0uXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBpbm9kZSBzaXplICVsdVxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3Qga8OtY2ggY+G7oSBuw7p0ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTU1Cittc2dpZCAiRmFpbGVkIHRvIGNoYW5nZSBpbm9kZSBzaXplXG4iCittc2dzdHIgIkzhu5dpIHRoYXkgxJHhu5VpIGvDrWNoIHRoxrDhu5tjIGPhu6dhIG7DunRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlkZSBzaXplIHRvICVkXG4iCittc2dzdHIgIsSQYW5nIMSR4bq3dCBrw61jaCBj4buhIHN0cmlkZSB0aMOgbmggJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICLEkGFuZyDEkeG6t3QgY2hp4buBdSBy4buZbmcgc+G7jWMgKHN0cmlwZSB3aWR0aCkgdGjDoG5oICVkXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBleHRlbmRlZCBkZWZhdWx0IG1vdW50IG9wdGlvbnMgdG8gJyVzJ1xuIgorbXNnc3RyICLEkGFuZyDEkeG6t3QgdHXhu7MgY2jhu41uIGfhuq9uIG3hurdjIMSR4buLbmggbeG7nyBy4buZbmcgdGjDoG5oIOKAnCVz4oCdXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6IFRoZSBqb3VybmFsIGlzIGRpcnR5LiBZb3UgbWF5IHdpc2ggdG8gcmVwbGF5IHRoZSBqb3VybmFsIGxpa2U6XG4iCisiXG4iCisiXHRlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisidGhlbiByZXJ1biB0aGlzIGNvbW1hbmQuICBPdGhlcndpc2UsIGFueSBjaGFuZ2VzIG1hZGUgbWF5IGJlIG92ZXJ3cml0dGVuXG4iCisiYnkgam91cm5hbCByZWNvdmVyeS5cbiIKK21zZ3N0ciAiIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMjAzCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJSZWNvdmVyaW5nIGpvdXJuYWwuXG4iCittc2dzdHIgIiVzOiDEkWFuZyBwaOG7pWMgaOG7k2kgbmjhuq10IGvDvVxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDAKK21zZ2lkICI8cHJvY2VlZGluZz5cbiIKK21zZ3N0ciAiPMSRYW5nIHjhu60gbMO9PlxuIgorCisjOiBtaXNjL3V0aWwuYzoxMDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgJWQgc2Vjb25kcykgPyAoeSxuKSAiCittc2dzdHIgIlbhuqtuIHjhu60gbMO9IChob+G6t2MgY2jhu50gJWQgZ2nDonkpPyAoYyxrKSAiCisKKyM6IG1pc2MvdXRpbC5jOjEwOAorbXNnaWQgIlByb2NlZWQgYW55d2F5PyAoeSxuKSAiCittc2dzdHIgIlbhuqtuIGPDsm4gdGnhur9wIHThu6VjIGtow7RuZz8gKGMsaykiCisKKyM6IG1pc2MvdXRpbC5jOjEzMworbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LiAgSG9wZSAvZXRjL210YWIgaXMgaW5jb3JyZWN0LlxuIgorbXNnc3RyICJUaeG6v24gdHLDrG5oIG1rZTJmcyB24bqrbiBjw7JuIGLhu4sgw6lwIGJ14buZYy4gTW9uZyDigJwvZXRjL210YWLigJ0ga2jDtG5nIMSRw7puZy5cbiIKKworIzogbWlzYy91dGlsLmM6MTM4CisjLCBjLWZvcm1hdAorbXNnaWQgIndpbGwgbm90IG1ha2UgYSAlcyBoZXJlIVxuIgorbXNnc3RyICJz4bq9IGtow7RuZyBsw6BtICVzIOG7nyDEkcOieSAhXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE0NQorbXNnaWQgIm1rZTJmcyBmb3JjZWQgYW55d2F5LlxuIgorbXNnc3RyICJUaeG6v24gdHLDrG5oIG1rZTJmcyB24bqrbiBjw7JuIGLhu4sgw6lwIGJ14buZYy5cbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuqVwIHBow6F0IGLhu5kgbmjhu5sgxJHhu4MgcGjDom4gdMOhY2ggY8OhYyB0w7l5IGNo4buNbiBuaOG6rXQga8O9ICFcbiIKKworIzogbWlzYy91dGlsLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJDb3VsZCBub3QgZmluZCBqb3VybmFsIGRldmljZSBtYXRjaGluZyAlc1xuIgorbXNnc3RyICIiCisiXG4iCisiS2jDtG5nIHTDrG0gdGjhuqV5IHRoaeG6v3QgYuG7iyBuaOG6rXQga8O9IHTGsMahbmcg4bupbmcgduG7m2kgJXNcbiIKKworIzogbWlzYy91dGlsLmM6MjEzCittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisixJDGsGEgcmEgdMO5eSBjaOG7jW4gbmjhuq10IGvDvSBzYWkuXG4iCisiXG4iCisiQ8OhYyB0w7l5IGNo4buNbiBuaOG6rXQga8O9IGPFqW5nIMSR4buLbmggZ2nhu5tpIGLhurFuZyBk4bqldSBwaOG6qXksIGPDsyB0aOG7gyBjaOG6pXAgbmjhuq1uXG4iCisixJHhu5FpIHPhu5EgY8OhaSBtw6AgxJHGsOG7o2MgxJHhurd0IGLhurFuZyBk4bqldSBi4bqxbmcgKOKAnD3igJ0pLlxuIgorIlxuIgorIlTDuXkgY2jhu41uIG5o4bqtdCBrw70gaOG7o3AgbOG7hzpcbiIKKyJcdHNpemU9PGvDrWNoIGPhu6Egbmjhuq10IGvDvSB0aGVvIG1lZ2FieXRlPlxuIgorIlx0ZGV2aWNlPTx0aGnhur90IGLhu4sgbmjhuq10IGvDvT5cbiIKKyJcdGxvY2F0aW9uPTx24buLIHRyw60gbmjhuq10IGvDvT5cbiIKKyJcbiIKKyJLw61jaCBj4buhIGPhu6dhIG5o4bqtdCBrw70gcGjhuqNpIG7hurFtIHRyb25nIHBo4bqhbSB2aVxuIgorIjEwMjQgxJHhur9uIDEwMjQwMDAwIGto4buRaSBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorIlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNDQKK21zZ2lkICIiCisiXG4iCisiRmlsZXN5c3RlbSB0b28gc21hbGwgZm9yIGEgam91cm5hbFxuIgorbXNnc3RyICIiCisiXG4iCisiSOG7hyB0aOG7kW5nIHThuq1wIHRpbiBxdcOhIG5o4buPIMSR4buRaSB24bubaSBuaOG6rXQga8O9XG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiVGhlIHJlcXVlc3RlZCBqb3VybmFsIHNpemUgaXMgJWQgYmxvY2tzOyBpdCBtdXN0IGJlXG4iCisiYmV0d2VlbiAxMDI0IGFuZCAxMDI0MDAwMCBibG9ja3MuICBBYm9ydGluZy5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkvDrWNoIGPhu6Egbmjhuq10IGvDvSDEkcOjIHnDqnUgY+G6p3UgbMOgICVkIGto4buRaTtcbiIKKyJuw7MgcGjhuqNpIG7hurFtIHRyb25nIHBo4bqhbSB2aSAxMDI0IMSR4bq/biAxMDI0MDAwMCBraOG7kWlcbiIKKyJuw6puIGjhu6d5IGLhu48uXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI1OQorbXNnaWQgIiIKKyJcbiIKKyJKb3VybmFsIHNpemUgdG9vIGJpZyBmb3IgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAiIgorIlxuIgorIkvDrWNoIGPhu6Egbmjhuq10IGvDvSBxdcOhIGzhu5tuIMSR4buRaSB24bubaSBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjOiBtaXNjL3V0aWwuYzoyNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgZmlsZXN5c3RlbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgY2hlY2tlZCBldmVyeSAlZCBtb3VudHMgb3JcbiIKKyIlZyBkYXlzLCB3aGljaGV2ZXIgY29tZXMgZmlyc3QuICBVc2UgdHVuZTJmcyAtYyBvciAtaSB0byBvdmVycmlkZS5cbiIKK21zZ3N0ciAiIgorIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gbsOgeSBz4bq9IMSRxrDhu6NjIGtp4buDbSB0cmEgdOG7sSDEkeG7mW5nIG3hu5dpICVkIGzhuqduIGfhuq9uIGvhur90XG4iCisiaGF5IG3hu5dpICVnIG5nw6B5LCDEkWnhu4F1IG7DoG8geOG6o3kgcmEgdHLGsOG7m2MuIEjDo3kgZMO5bmcgdMO5eSBjaOG7jW5cbiIKKyLigJx0dW5lMmZzIC1j4oCdIGhheSDigJx0dW5lMmZzIC1p4oCdIMSR4buDIGdoaSDEkcOoIGzDqm4gbsOzLlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAiIgorIkPDoWNoIGTDuW5nOiAlcyBbLWRdIFstcCB04bqtcF90aW5fUElEXSBbLXMgxJHGsOG7nW5nX2ThuqtuX+G7lV9j4bqvbV0gWy1UIHRo4budaV9o4bqhbl1cbiIKKworIzogbWlzYy91dWlkZC5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCittc2dzdHIgIiAgICAgICAlcyBbLXJ8dF0gWy1uIG51bV0gWy1zIHNvY2tldHBhdGhdXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MworIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLWtcbiIKK21zZ3N0ciAiICAgICAgICVzIC1rXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoxNTUKK21zZ2lkICJiYWQgYXJndW1lbnRzIgorbXNnc3RyICLEkeG7kWkgc+G7kSBzYWkiCisKKyM6IG1pc2MvdXVpZGQuYzoxNzMKK21zZ2lkICJjb25uZWN0IgorbXNnc3RyICJr4bq/dCBu4buRaSIKKworIzogbWlzYy91dWlkZC5jOjE5MgorbXNnaWQgIndyaXRlIgorbXNnc3RyICJnaGkiCisKKyM6IG1pc2MvdXVpZGQuYzoyMDAKK21zZ2lkICJyZWFkIGNvdW50IgorbXNnc3RyICJz4buRIGzhuqduIMSR4buNYyIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgIsSQ4buZIGTDoGkgdHLhuqMgduG7gSBraMO0bmcgaOG7o3AgbOG7hyIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJ1dWlkZCBkYWVtb24gxJHDoyBjaOG6oXkgc+G6tW4gcuG7k2kgdOG6oWkgcGlkICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzoyNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY3JlYXRlIHVuaXggc3RyZWFtIHNvY2tldDogJXMiCittc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyDhu5UgY+G6r20gbHXhu5NuZyBzdHJlYW0gVU5JWDogJXMiCisKKyM6IG1pc2MvdXVpZGQuYzozMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYmluZCB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGJ14buZYyBr4bq/dCDhu5UgY+G6r20gVU5JWCAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIktow7RuZyB0aOG7gyBs4bqvbmcgbmdoZSB0csOqbiDhu5UgY+G6r20gVU5JWCAlczogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjM1NAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciByZWFkaW5nIGZyb20gY2xpZW50LCBsZW4gPSAlZFxuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu41jIHThu6sg4bupbmcgZOG7pW5nIGtow6FjaCwgZMOgaSA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNjIKKyMsIGMtZm9ybWF0Cittc2dpZCAib3BlcmF0aW9uICVkLCBpbmNvbWluZyBudW0gPSAlZFxuIgorbXNnc3RyICJ0aGFvIHTDoWMgJWQsIHPhu5EgZ+G7rWkgxJHhur9uID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIHRo4budaSBnaWFuIMSRw6MgdOG6oW8gcmE6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICJVVUlEIG5n4bqrdSBuaGnDqm4gxJHDoyB04bqhbyByYTogJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICJVVUlEIHRo4budaSBnaWFuIMSRw6MgdOG6oW8gcmEgJXMgdsOgICVkIHRoZW8gc2F1XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkICVkIFVVSUQnczpcbiIKK21zZ3N0ciAiJWQgVVVJRCDEkcOjIHThuqFvIHJhOlxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgb3BlcmF0aW9uICVkXG4iCittc2dzdHIgIlRoYW8gdMOhYyBraMO0bmcgaOG7o3AgbOG7hyAlZFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDc3IG1pc2MvdXVpZGQuYzo0OTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIG51bWJlcjogJXNcbiIKK21zZ3N0ciAiU+G7kSBzYWk6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1MzQgbWlzYy91dWlkZC5jOjU2MworIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjYWxsaW5nIHV1aWRkIGRhZW1vbiAoJXMpOiAlc1xuIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgZ+G7jWkgdHLDrG5oIG7hu4FuIHV1aWRkICglcyk6ICVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIlcyB2w6AgJWQgVVVJRCB44bqjeSByYSBzYXVcbiIKKworIzogbWlzYy91dWlkZC5jOjU0OAorbXNnaWQgIkxpc3Qgb2YgVVVJRCdzOlxuIgorbXNnc3RyICJEYW5oIHPDoWNoIGPhu6dhIFVVSUQ6XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVW5leHBlY3RlZCByZXBseSBsZW5ndGggZnJvbSBzZXJ2ZXIgJWRcbiIKK21zZ3N0ciAiTcOheSBjaOG7pyB0cuG6oyBs4budaSDEkcOhcCDhu6luZyB24bubaSBjaGnhu4F1IGTDoGkgYuG6pXQgdGjGsOG7nW5nICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGJ14buZYyBr4bq/dCB0aMO6YyB1dWlkZCDEkWFuZyBjaOG6oXkgduG7m2kgUElEICVkOiAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIktpbGxlZCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZFxuIgorbXNnc3RyICLEkMOjIGJ14buZYyBr4bq/dCB0aMO6YyB1dWlkZCBjaOG6oXkgdOG6oWkgUElEICVkXG4iCisKKyM6IG1pc2MvdXVpZGdlbi5jOjMyCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLXJdIFstdF1cbiIKK21zZ3N0ciAiQ8OhY2ggZMO5bmc6ICVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyDEkOG7lSBt4bufIHLhu5luZzpcbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiI1x0U+G7kT0lbGx1LCAgQ+G7oT0lbGx1LCBDb24gdHLhu489JWxsdSwgU+G6r3AgeOG6v3A9JWxsdVxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ5CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIGRldmljZSBbLWJ8LXN8bmV3X3NpemVdICIKKyJbLXogdW5kb19maWxlXVxuIgorIlxuIgorbXNnc3RyICIiCisiQ8OhY2ggZMO5bmc6ICVzIFstZCBj4budX2fhu6FfbOG7l2ldIFstZl0gWy1GXSBbLU1dIFstUF0gWy1wXSB0aGnhur90X2Lhu4sgIgorIltrw61jaF9j4buhX23hu5tpXVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjcyCittc2dpZCAiRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAixJBhbmcgbeG7nyBy4buZbmcgYuG6o25nIG7DunQgdGjDtG5nIHRpbiIKKworIzogcmVzaXplL21haW4uYzo3NQorbXNnaWQgIlJlbG9jYXRpbmcgYmxvY2tzIgorbXNnc3RyICLEkGFuZyDEkeG7i25oIHbhu4sgbOG6oWkgY8OhYyBraOG7kWkiCisKKyM6IHJlc2l6ZS9tYWluLmM6NzgKK21zZ2lkICJTY2FubmluZyBpbm9kZSB0YWJsZSIKK21zZ3N0ciAixJBhbmcgcXXDqXQgYuG6o25nIG7DunQgdGjDtG5nIHRpbiIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIsSQYW5nIGPhuq1wIG5o4bqtdCBjw6FjIHRoYW0gY2hp4bq/dSBuw7p0IHRow7RuZyB0aW4iCisKKyM6IHJlc2l6ZS9tYWluLmM6ODQKK21zZ2lkICJNb3ZpbmcgaW5vZGUgdGFibGUiCittc2dzdHIgIsSQYW5nIGRpIGNodXnhu4NuIGLhuqNuZyBuw7p0IHRow7RuZyB0aW4iCisKKyM6IHJlc2l6ZS9tYWluLmM6ODcKK21zZ2lkICJVbmtub3duIHBhc3M/IT8iCittc2dzdHIgIkzhuqduIHF1YSBs4bqhPyE/IgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAiS2jhu59pIGNo4bqheSBs4bqnbiBxdWEgJWQgKHThu5FpIMSRYSA9ICVsdSlcbiIKKworIzogcmVzaXplL21haW4uYzoxNjIKK21zZ2lkICIiCisiXG4iCisiUmVzaXppbmcgYmlnYWxsb2MgZmlsZSBzeXN0ZW1zIGhhcyBub3QgYmVlbiBmdWxseSB0ZXN0ZWQuICBQcm9jZWVkIGF0XG4iCisieW91ciBvd24gcmlzayEgIFVzZSB0aGUgZm9yY2Ugb3B0aW9uIGlmIHlvdSB3YW50IHRvIGdvIGFoZWFkIGFueXdheS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIlZp4buHYyB0aGF5IMSR4buVaSBrw61jaCB0aMaw4bubYyBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluIGJpZ2FsbG9jIGNoxrBhIMSRxrDhu6NjIHRo4butIG5naGnhu4dtICIKKyLEkeG6p3kgxJHhu6cuXG4iCisiVOG7sSBjaOG7i3UgdHLDoWNoIG5oaeG7h20gbuG6v3UgbXXhu5FuIGTDuW5nISAgRMO5bmcgdMO5eSBjaOG7jW4gw6lwIGJ14buZYyBu4bq/dSBi4bqhbiBtdeG7kW4gdGjhu7FjICIKKyJoaeG7h24gdGnhur9wLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICJ0cm9uZyBraGkgbeG7nyAlcyIKKworIzogcmVzaXplL21haW4uYzozNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGzhuqV5IGPDoWMgdGjDtG5nIHRpbiB24buBICVzIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlRyxrDhu5tjIHRpw6puIGjDo3kgY2jhuqF5IGzhu4duaCDigJxlMmZzY2sgLWYgJXPigJ0uXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NDY0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVzdGltYXRlZCBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW06ICVsbHVcbiIKK21zZ3N0ciAixq/hu5tjIHTDrW5oIHTDrWNoIGPhu6EgdOG7kWkgdGhp4buDdSBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluOiAlbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgbmV3IHNpemU6ICVzXG4iCittc2dzdHIgIkvDrWNoIGPhu6EgbeG7m2kga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIkvDrWNoIHRoxrDhu5tjIG3hu5tpIHF1w6EgbOG7m24gxJHhu4MgY8OzIHRo4buDIGTDuW5nIHPhu5EgMzIgYml0XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICJLw61jaCBj4buhIG3hu5tpIHbhuqtuIG5o4buPIGjGoW4gbeG7qWMgdOG7kWkgdGhp4buDdSAoJWxsdSlcbiIKKworIzogcmVzaXplL21haW4uYzo1MzQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBsZW5ndGgiCittc2dzdHIgIsSQ4buZIGTDoGkgc3RyaWRlIGtow7RuZyBo4bujcCBs4buHIgorCisjOiByZXNpemUvbWFpbi5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIGlzIG9ubHkgJWxsdSAoJWRrKSBibG9ja3MuXG4iCisiWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIG9mICVsbHUgYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiUGjDom4gdsO5bmcgY2jhu6lhIChoYXkgdGhp4bq/dCBi4buLKSBjaOG7qWEgY2jhu4kgY8OzIGvDrWNoIGPhu6EgJWxsdSAoJWRrKSBraOG7kWkuXG4iCisiQuG6oW4gxJHDoyB5w6p1IGPhuqd1IGvDrWNoIGPhu6EgbeG7m2kgJWxsdSBraOG7kWkuXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXQgYW5kIHVuc2V0IDY0Yml0IGZlYXR1cmUuXG4iCittc2dzdHIgIiIKKworIzogcmVzaXplL21haW4uYzo1NjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgb24gYSBmaWxlc3lzdGVtIHRoYXQgaXMgbGFyZ2VyIHRoYW4gMl4zMiAiCisiYmxvY2tzLlxuIgorbXNnc3RyICIiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTc1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiIKKyLEkOG6t2MgdMOtbmggaOG6oW4gbmfhuqFjaCBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2MgdGhheSDEkeG7lWkga2hpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga2jDtG5nIMSRxrDhu6NjICIKKyJn4bqvbiBr4bq/dC5cbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAiIgorCisjOiByZXNpemUvbWFpbi5jOjU4NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspIGJsb2NrcyBsb25nLiAgTm90aGluZyB0byBkbyFcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHDoyBjw7MgxJHhu5kgZMOgaSAlbGx1ICglZGspIGto4buRaS4gS2jDtG5nIGPhuqduIGzDoG0gZ8OsIVxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjU5NAorIywgZnV6enksIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSA2NC1iaXQuXG4iCittc2dzdHIgIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHDoyBjw7Mgbmjhuq10IGvDvS5cbiIKKworIzogcmVzaXplL21haW4uYzo1OTkKKyMsIGZ1enp5LCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICJI4buHIHRo4buRbmcgdOG6rXAgdGluIMSRw6MgY8OzIG5o4bqtdCBrw70uXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDY0LWJpdC5cbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IGdp4budIGtp4buDbSB0cmEgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBs4bqnbiBjdeG7kWkgY8O5bmcgdGjDoG5oICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICJDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDMyLWJpdC5cbiIKK21zZ3N0ciAixJBhbmcgxJHhurd0IGdp4budIGtp4buDbSB0cmEgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBs4bqnbiBjdeG7kWkgY8O5bmcgdGjDoG5oICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisixJBhbmcgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluIHRyw6puICVzIHRow6BuaCAlbGx1ICglZGspIGto4buRaS5cbiIKKworIzogcmVzaXplL21haW4uYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIKK21zZ3N0ciAidHJvbmcga2hpIGPhu5EgdGhheSDEkeG7lWkga8OtY2ggY+G7oSAlcyIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKyJIw6N5IGNo4bqheSBjw6J1IGzhu4duaCDigJxlMmZzY2sgLWZ5ICVz4oCdIMSR4buDIHPhu61hIGNo4buvYSBo4buHIHRo4buRbmcgdOG6rXAgdGluXG4iCisixJHhurFuZyBzYXUgdGhhbyB0w6FjIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgYuG7iyBo4buneSBi4buPLlxuIgorCisjOiByZXNpemUvbWFpbi5jOjYzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG4iCisiXG4iCittc2dzdHIgIiIKKyJI4buHIHRo4buRbmcgdOG6rXAgdGluIG7hurFtIHRyw6puICVzIGdp4budIGPDsyDEkeG7mSBkw6BpICVsbHUgKCVkaykga2jhu5FpLlxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjY0NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiCittc2dzdHIgInRyb25nIGtoaSBj4buRIGPhuq90IG5n4bqvbiAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjgxCittc2dpZCAia2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6ZSB3aXRoIHNwYXJzZV9zdXBlcjIiCittc2dzdHIgIiIKKyJI4bqhdCBuaMOibiBraMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyB0aGF5IMSR4buVaSBrw61jaCBj4buhIHRy4buxYyB0dXnhur9uIHbhu5tpIHNwYXJzZV9zdXBlcjIiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo4NgorIywgYy1mb3JtYXQKK21zZ2lkICJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7IG9uLWxpbmUgcmVzaXppbmcgcmVxdWlyZWRcbiIKK21zZ3N0ciAiIgorIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4g4bufICVzIMSRxrDhu6NjIGfhuq9uIGvhur90IHbDoG8gJXM7IGPhuqduIHRoaeG6v3QgdGhheSDEkeG7lWkga8OtY2ggY+G7oSB0cuG7sWMgIgorInR1eeG6v25cbiIKKworIzogcmVzaXplL29ubGluZS5jOjkwCittc2dpZCAiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiVMOtbmggbsSDbmcgdGh1IG5o4buPIGtoaSDEkWFuZyBjaOG6oXkga2jDtG5nIMSRxrDhu6NjIGjhu5cgdHLhu6MiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMTQKK21zZ2lkICJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICJI4buHIHRo4buRbmcgdOG6rXAgdGluIGtow7RuZyBo4buXIHRy4bujIHTDrW5oIG7Eg25nIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgdHLhu7FjIHR1eeG6v24iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxMjIKK21zZ2lkICJOb3QgZW5vdWdoIHJlc2VydmVkIGdkdCBibG9ja3MgZm9yIHJlc2l6aW5nIgorbXNnc3RyICJLaMO0bmcgxJHhu6cga2jhu5FpIGThu7EgdHLhu68gZ2R0IMSR4buDIHRoYXkgxJHhu5VpIGvDrWNoIHRoxrDhu5tjIgorCisjOiByZXNpemUvb25saW5lLmM6MTI5Cittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgcmVzaXppbmcgYSBmaWxlIHN5c3RlbSB0aGlzIGxhcmdlIgorbXNnc3RyICIiCisiSOG6oXQgbmjDom4ga2jDtG5nIGjhu5cgdHLhu6MgdMOtbmggbsSDbmcgdGhheSDEkeG7lWkga8OtY2ggY+G7oSBo4buHIHRo4buRbmcgdOG6rXAgdGluIG7DoHkgcuG7mW5nICIKKyJoxqFuIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgInRyb25nIGtoaSBj4buRIG3hu58gxJFp4buDbSBs4bqvcCAlcyIKKworIzogcmVzaXplL29ubGluZS5jOjE0MgorIywgYy1mb3JtYXQKK21zZ2lkICJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iCittc2dzdHIgIsSQw6MgecOqdSBj4bqndSBnaWFvIGRp4buHbiB0aGF5IMSR4buVaSBrw61jaCBj4buhIGPFqS5cbiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIktow7RuZyDEkeG7pyBxdXnhu4FuIMSR4buDIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgY+G7p2EgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAiVHJvbmcga2hpIGtp4buDbSB0cmEgY8OzIGjhu5cgdHLhu6MgdGhheSDEkeG7lWkga8OtY2ggY+G7oSB0cuG7sWMgdHV54bq/biIKKworIzogcmVzaXplL29ubGluZS5jOjE4MQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIKK21zZ3N0ciAiSOG6oXQgbmjDom4ga2jDtG5nIGjhu5cgdHLhu6MgdMOtbmggbsSDbmcgdGhheSDEkeG7lWkga8OtY2ggY+G7oSB0cuG7sWMgdHV54bq/biIKKworIzogcmVzaXplL29ubGluZS5jOjIyMAorIywgYy1mb3JtYXQKK21zZ2lkICJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICIiCisixJBhbmcgdGjhu7FjIGhp4buHbiBt4buZdCBjw7RuZyB2aeG7h2MgdGhheSDEkeG7lWkga8OtY2ggY+G7oSAlcyB0cuG7sWMgdHV54bq/biB0aMOgbmggJWxsdSAoJWRrKSAiCisia2jhu5FpLlxuIgorCisjOiByZXNpemUvb25saW5lLmM6MjMwCittc2dpZCAiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIKK21zZ3N0ciAiVHJvbmcga2hpIGPhu5EgbeG7nyBy4buZbmcgbmjDs20gY3Xhu5FpIGPDuW5nIgorCisjOiByZXNpemUvb25saW5lLmM6Mjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBhZGQgZ3JvdXAgIyVkIgorbXNnc3RyICJUcm9uZyBraGkgY+G7kSB0aMOqbSBuaMOzbSBz4buRICVkIgorCisjOiByZXNpemUvb25saW5lLmM6Mjk1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXMsIGFuZCBvbi1saW5lIHJlc2l6aW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gIgorInRoaXMgc3lzdGVtLlxuIgorbXNnc3RyICIiCisiSOG7hyB0aOG7kW5nIHThuq1wIHRpbiDhu58gJXMgxJHGsOG7o2MgZ+G6r24ga+G6v3QgdsOgbyAlcywgdsOgIHTDrW5oIG7Eg25nIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgIgorInRyw6puIGTDsm5nIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIHRyw6puIGjhu4cgdGjhu5FuZyBuw6B5LlxuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6NzU5CisjLCBjLWZvcm1hdAorbXNnaWQgImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiCittc2dzdHIgIm7DunQgdGjDtG5nIHRpbiAoJWxsdSkgcGjhuqNpIG5o4buPIGjGoW4gJXUiCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMDM3Cittc2dpZCAicmVzZXJ2ZWQgYmxvY2tzIgorbXNnc3RyICJraOG7kWkgZMOgbmggcmnDqm5nIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MTI4MQorbXNnaWQgIm1ldGEtZGF0YSBibG9ja3MiCittc2dzdHIgImto4buRaSBzacOqdV9k4buvX2xp4buHdSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEzODUgcmVzaXplL3Jlc2l6ZTJmcy5jOjIzMTcKK21zZ2lkICJuZXcgbWV0YSBibG9ja3MiCittc2dzdHIgImto4buRaSBzacOqdSBk4buvIGxp4buHdSBt4bubaSIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDAKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgTm8gc2IgaW4gbGFzdCBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIktow7RuZyBiYW8gZ2nhu50gbsOqbiB44bqjeSByYSEgS2jDtG5nIGPDsyBzYiB0cm9uZyBzdXBlcl9zcGFyc2UgYmc/XG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQ1Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIFVuZXhwZWN0ZWQgb2xkX2Rlc2MgaW4gc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICIiCisiS2jDtG5nIGJhbyBnaeG7nSBuw6puIHjhuqN5IHJhISBH4bq3cCBvbGRfZGVzYyBraMO0bmcgY+G6p24gdHJvbmcgc3VwZXJfc3BhcnNlIGJnP1xuIgorCisjOiByZXNpemUvcmVzaXplMmZzLmM6MjYxOAorbXNnaWQgIlNob3VsZCBuZXZlciBoYXBwZW46IHJlc2l6ZSBpbm9kZSBjb3JydXB0IVxuIgorbXNnc3RyICJLaMO0bmcgYmFvIGdp4budIG7Dqm4geOG6o3kgcmE6IG7DunQgdGjDtG5nIHRpbiB0aGF5IMSR4buVaSBrw61jaCBj4buhIGLhu4sgaOG7j25nICFcbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExCisjLCBmdXp6eQorbXNnaWQgIkVYVDJGUyBMaWJyYXJ5IHZlcnNpb24gMS40My4yIgorbXNnc3RyICJUaMawIHZp4buHbiBFWFQyRlMgcGhpw6puIGLhuqNuIDEuNDIuMTIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0Ml9maWxzeXMgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIGV4dDJfZmlsc3lzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19saXN0IHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6Y2JhZGJsb2Nrc19saXN0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGJhZGJsb2Nrc19pdGVyYXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyBiYWRibG9ja3NfaXRlcmF0ZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9zY2FuIHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyBpbm9kZV9zY2FuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdW5peCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyB1bml4IGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW9fbWFuYWdlciBzdHJ1Y3R1cmUiCittc2dzdHIgIlNhaSBz4buRIG3DoHUgbmhp4buHbSBjaG8gY+G6pXUgdHLDumMgaW9fbWFuYWdlciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIGJsb2NrX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIwCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpbm9kZV9iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIGlub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBnZW5lcmljX2JpdG1hcCBzdHJ1Y3R1cmUiCittc2dzdHIgIlNhaSBz4buRIG3DoHUgbmhp4buHbSBjaG8gY+G6pXUgdHLDumMgZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyB0ZXN0IGlvX2NoYW5uZWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZGlyZWN0b3J5IGJsb2NrIGxpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIGRhbmggc8OhY2gga2jhu5FpIHRoxrAgbeG7pWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaWNvdW50IHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyBpY291bnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiU2FpIHPhu5EgbcOgdSBuaGnhu4dtIGNobyBj4bqldSB0csO6YyBQb3dlcnF1ZXN0IGlvX2NoYW5uZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQyIGZpbGUgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIHThuq1wIHRpbiBleHQyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIEV4dDIgSW1hZ2UgSGVhZGVyIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIEV4dDIgSW1hZ2UgSGVhZGVyIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjgKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gY2hvIGPhuqV1IHRyw7pjIG7DunQgaW9fY2hhbm5lbCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBleHQ0IGV4dGVudCBoYW5kbGUiCittc2dzdHIgIlNhaSBz4buRIG3DoHUgbmhp4buHbSBjaG8gY8OhbiBt4bufIHLhu5luZyBleHQ0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzAKK21zZ2lkICJCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIgorbXNnc3RyICJTYWkgc+G7kSBtw6B1IG5oaeG7h20gdHJvbmcgc2nDqnUga2jhu5FpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzEKK21zZ2lkICJGaWxlc3lzdGVtIHJldmlzaW9uIHRvbyBoaWdoIgorbXNnc3RyICJQaGnDqm4gYuG6o24gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBxdcOhIGNhbyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMyCittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSB0byBmaWxlc3lzdGVtIG9wZW5lZCByZWFkLW9ubHkiCittc2dzdHIgIlRo4butIHZp4bq/dCB2w6BvIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gbcOgIG7DsyBjaOG7iSDEkeG7jWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgbcO0IHThuqMgbmjDs20iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozNAorbXNnaWQgIkNhbid0IHdyaXRlIGdyb3VwIGRlc2NyaXB0b3JzIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIG3DtCB04bqjIG5ow7NtIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzUKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwIgorbXNnc3RyICJC4buZIG3DtCB04bqjIG5ow7NtIGjhu49uZzoga2jhu5FpIHNhaSBjaG8gbeG6o25nIGto4buRaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM2Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiQuG7mSBtw7QgdOG6oyBuaMOzbSBo4buPbmc6IGto4buRaSBzYWkgY2hvIG3huqNuZyBuw7p0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzcKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUiCittc2dzdHIgIkLhu5kgbcO0IHThuqMgbmjDs20gaOG7j25nOiBraOG7kWkgc2FpIGNobyBi4bqjbmcgbsO6dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIG3huqNuZyDhuqNuaCBuw7p0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzkKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIGJpdG1hcCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyBt4bqjbmcg4bqjbmggbsO6dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQwCittc2dpZCAiQ2FuJ3Qgd3JpdGUgYSBibG9jayBiaXRtYXAiCittc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgbeG6o25nIOG6o25oIGto4buRaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQxCittc2dpZCAiQ2FuJ3QgcmVhZCBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyBt4bqjbmcg4bqjbmgga2jhu5FpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDIKK21zZ2lkICJDYW4ndCB3cml0ZSBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSBi4bqjbmcgbsO6dCB0aMO0bmcgdGluIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDMKK21zZ2lkICJDYW4ndCByZWFkIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIGLhuqNuZyBuw7p0IHRow7RuZyB0aW4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyBuw7p0IHRp4bq/cCB0aGVvIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDUKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bmV4cGVjdGVkIGJsb2NrIHNpemUiCittc2dzdHIgIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gY8OzIGvDrWNoIGPhu6Ega2jhu5FpIGLhuqV0IHRoxrDhu51uZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ2Cittc2dpZCAiRVhUMiBkaXJlY3RvcnkgY29ycnVwdGVkIgorbXNnc3RyICJUaMawIG3hu6VjIGV4dDIgxJHDoyBo4buPbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAiVGjhu60gxJHhu41jIGto4buRaSB04burIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga+G6v3QgcXXhuqMgZOG6oW5nIG5n4bqvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ4Cittc2dpZCAiQXR0ZW1wdCB0byB3cml0ZSBibG9jayB0byBmaWxlc3lzdGVtIHJlc3VsdGVkIGluIHNob3J0IHdyaXRlIgorbXNnc3RyICJUaOG7rSBnaGkga2jhu5FpIHThu5tpIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4ga+G6v3QgcXXhuqMgZOG6oW5nIG5n4bqvbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQ5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiB0aGUgZGlyZWN0b3J5IgorbXNnc3RyICJLaMO0bmcgY8OybiBraMO0bmcgZ2lhbiB0cuG7kW5nIHRyb25nIHRoxrAgbeG7pWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MAorbXNnaWQgIklub2RlIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICJN4bqjbmcgbsO6dCBraMO0bmcgxJHGsOG7o2MgdOG6o2kgbMOqbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUxCittc2dpZCAiQmxvY2sgYml0bWFwIG5vdCBsb2FkZWQiCittc2dzdHIgIk3huqNuZyBraOG7kWkga2jDtG5nIMSRxrDhu6NjIHThuqNpIGzDqm4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICJTYWkgc+G7kSBsxrDhu6NuZyBuw7p0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTMKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiU2FpIHPhu5EgbMaw4bujbmcga2jhu5FpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTQKK21zZ2lkICJJbnRlcm5hbCBlcnJvciBpbiBleHQyZnNfZXhwYW5kX2RpciIKK21zZ3N0ciAiTOG7l2kgbuG7mWkgYuG7mSB0cm9uZyBleHQyZnNfZXhwYW5kX2RpciIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU1Cittc2dpZCAiTm90IGVub3VnaCBzcGFjZSB0byBidWlsZCBwcm9wb3NlZCBmaWxlc3lzdGVtIgorbXNnc3RyICJLaMO0bmcgxJHhu6cgc+G7qWMgY2jhu6lhIMSR4buDIHjDonkgZOG7sW5nIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gbmjGsCDEkeG7gSB4deG6pXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NgorbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIlNhaSBz4buRIGzGsOG7o25nIGto4buRaSBjaHV54buDbiB04bubaSBleHQyZnNfbWFya19ibG9ja19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1NworbXNnaWQgIklsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAiU2FpIHPhu5EgbMaw4bujbmcga2jhu5FpIGNodXnhu4NuIHThu5tpIGV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBsxrDhu6NuZyBraOG7kWkgY2h1eeG7g24gdOG7m2kgZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTkKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBsxrDhu6NuZyBuw7p0IGNodXnhu4NuIHThu5tpIGV4dDJmc19tYXJrX2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBsxrDhu6NuZyBuw7p0IGNodXnhu4NuIHThu5tpIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjEKK21zZ2lkICJJbGxlZ2FsIGlub2RlIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBsxrDhu6NuZyBuw7p0IGNodXnhu4NuIHThu5tpIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYyCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgYmxvY2sgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICJUaOG7rSBjaHV54buDbiBjdeG7kWkgY+G7p2EgbeG6o25nIGto4buRaSBxdWEgcGjhuqduIGN14buRaSB0aOG6rXQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2MworbXNnaWQgIkF0dGVtcHQgdG8gZnVkZ2UgZW5kIG9mIGlub2RlIGJpdG1hcCBwYXN0IHRoZSByZWFsIGVuZCIKK21zZ3N0ciAiVGjhu60gY2h1eeG7g24gY3Xhu5FpIGPhu6dhIG3huqNuZyBuw7p0IHF1YSBwaOG6p24gY3Xhu5FpIHRo4bqtdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAiVMOsbSB0aOG6pXkga2jhu5FpIGdpw6FuIHRp4bq/cCBraMO0bmcgaOG7o3AgbOG7hyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY1Cittc2dpZCAiSWxsZWdhbCBkb3VibHkgaW5kaXJlY3QgYmxvY2sgZm91bmQiCittc2dzdHIgIlTDrG0gdGjhuqV5IGto4buRaSBnacOhbiB0aeG6v3AgxJHDtGkga2jDtG5nIGjhu6NwIGzhu4ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo2NgorbXNnaWQgIklsbGVnYWwgdHJpcGx5IGluZGlyZWN0IGJsb2NrIGZvdW5kIgorbXNnc3RyICJUw6xtIHRo4bqleSBraOG7kWkgZ2nDoW4gdGnhur9wIGJhIGtow7RuZyBo4bujcCBs4buHIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIk3huqNuZyDhuqNuaCBraOG7kWkga2jDtG5nIGdp4buRbmcgbmhhdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJN4bqjbmcg4bqjbmggbsO6dCBraMO0bmcgZ2nhu5FuZyBuaGF1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjkKK21zZ2lkICJJbGxlZ2FsIG9yIG1hbGZvcm1lZCBkZXZpY2UgbmFtZSIKK21zZ3N0ciAiVMOqbiB0aGnhur90IGLhu4sga2jDtG5nIGjhu6NwIGzhu4cgaGF5IGThu4sgaMOsbmgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MAorbXNnaWQgIkEgYmxvY2sgZ3JvdXAgaXMgbWlzc2luZyBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTeG7mXQgbmjDs20ga2jhu5FpIGLhu4sgbeG6pXQgbeG7mXQgYuG6o25nIG7DunQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MQorbXNnaWQgIlRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdCIKK21zZ3N0ciAiU2nDqnUga2jhu5FpIGV4dDIgYuG7iyBo4buPbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3MgorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorIlPhu5EgYsOtdCBjaHVuZyBraMO0bmcgaOG7o3AgbOG7hyDEkcaw4bujYyBjaHV54buDbiBxdWEgY2hvIGV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorIlPhu5EgYsOtdCBjaHVuZyBraMO0bmcgaOG7o3AgbOG7hyDEkcaw4bujYyBjaHV54buDbiBxdWEgY2hvIGV4dDJmc191bm1hcmtfZ2VuZXJpY19iaXRtYXAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NAorbXNnaWQgIklsbGVnYWwgZ2VuZXJpYyBiaXQgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAiIgorIlPhu5EgYsOtdCBjaHVuZyBraMO0bmcgaOG7o3AgbOG7hyDEkcaw4bujYyBjaHV54buDbiBxdWEgY2hvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzUKK21zZ2lkICJUb28gbWFueSBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZC4iCittc2dzdHIgIkfhurdwIHF1w6Egbmhp4buBdSBsacOqbiBr4bq/dCBt4buBbSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc2Cittc2dpZCAiVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgbm90IGhhbmRsZSB0aGlzIGNhc2UiCittc2dzdHIgIkjDoG0gZ+G7jWkgbmfGsOG7o2MgY2FsbGJhY2sga2jDtG5nIMSRxrDhu6NjIHRp4bq/cCBuaOG6rW4gdHJvbmcgdHLGsOG7nW5nIGjhu6NwIG7DoHkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAiTsO6dCB04burIG3hu5l0IGto4buRaSBzYWkgdHJvbmcgYuG6o25nIG7DunQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3OAorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykiCittc2dzdHIgIkjhu4cgdGjhu5FuZyB04bqtcCB0aW4gY8OzIHTDrW5oIG7Eg25nIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAiSOG7hyB0aOG7kW5nIHThuq1wIHRpbiBraMO0bmcgaOG7lyB0cuG7oyB0w61uaCBuxINuZyBjaOG7iSDEkeG7jWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MAorbXNnaWQgIklPIENoYW5uZWwgZmFpbGVkIHRvIHNlZWsgb24gcmVhZCBvciB3cml0ZSIKK21zZ3N0ciAiS8OqbmggSU8gZ+G6t3AgbOG7l2kga2hpIGRpIGNodXnhu4NuIHbhu4sgdHLDrSB0csOqbiB04bqtcCB0aW4gbMO6YyDEkeG7jWMgaGF5IGdoaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgxCittc2dpZCAiTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIgorbXNnc3RyICJM4buXaSBj4bqlcCBwaMOhdCB2w7luZyBuaOG7myIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjgyCittc2dpZCAiSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IgorbXNnc3RyICLEkOG7kWkgc+G7kSBraMO0bmcgaOG7o3AgbOG7hyDEkcaw4bujYyBjaHV54buDbiBxdWEgY2hvIHRoxrAgdmnhu4duIHByb2ZpbGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIktow7RuZyB0aOG7gyBj4bqlcCBwaMOhdCBraOG7kWkgY2hvIGtp4buDdSBo4bq/IHRo4buRbmcgdOG6rXAgdGluIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIktow7RuZyB0aOG7gyBj4bqlcCBwaMOhdCBuw7p0IGNobyBo4buHIHRo4buRbmcgdOG6rXAgdGluIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NQorbXNnaWQgIkV4dDIgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5IgorbXNnc3RyICJOw7p0IGV4dDIga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdGjGsCBt4bulYyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg2Cittc2dpZCAiVG9vIG1hbnkgcmVmZXJlbmNlcyBpbiB0YWJsZSIKK21zZ3N0ciAiQ8OzIHF1w6Egbmhp4buBdSB0aGFtIGNoaeG6v3UgdHJvbmcgYuG6o25nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODcKK21zZ2lkICJGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCIKK21zZ3N0ciAiVOG6rXAgdGluIGtow7RuZyB0w6xtIMSRxrDhu6NjIGLhu59pIGV4dDJfbG9va3VwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICJN4bufIHThuq1wIHRpbiB0cm9uZyBjaOG6vyDEkeG7mSBjaOG7iSBjaG8gxJHhu41jIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODkKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBibG9jayBub3QgZm91bmQiCittc2dzdHIgIkto4buRaSB0aMawIG3hu6VjIGV4dDIga2jDtG5nIHTDrG0gdGjhuqV5IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTAKK21zZ2lkICJFeHQyIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyIKK21zZ3N0ciAiVGjGsCBt4bulYyBleHQyIMSRw6MgdOG7k24gdOG6oWkgcuG7k2kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICJDaOG7qWMgbsSDbmcgdGjGsCB2aeG7h24gZXh0MiBjaMawYSDEkcaw4bujYyB0aOG7sWMgaGnhu4duIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIk5nxrDhu51pIGTDuW5nIHnDqnUgY+G6p3UgaOG7p3kiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MworbXNnaWQgIkV4dDIgZmlsZSB0b28gYmlnIgorbXNnc3RyICJU4bqtcCB0aW4gZXh0MiBxdcOhIGzhu5tuIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTQKK21zZ2lkICJTdXBwbGllZCBqb3VybmFsIGRldmljZSBub3QgYSBibG9jayBkZXZpY2UiCittc2dzdHIgIsOBcCBk4bulbmcgdGhp4bq/dCBi4buLIGpvdXJuYWwga2jDtG5nIHBo4bqjaSB0aGnhur90IGLhu4sga2jhu5FpLiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk1Cittc2dpZCAiSm91cm5hbCBzdXBlcmJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IHNpw6p1IGto4buRaSBuaOG6rXQga8O9IChKb3VybmFsKSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk2Cittc2dpZCAiSm91cm5hbCBtdXN0IGJlIGF0IGxlYXN0IDEwMjQgYmxvY2tzIgorbXNnc3RyICJKb3VybmFsIHBo4bqjaSBjw7Mgw610IG5o4bqldCAxMDI0IGto4buRaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICJwaGnDqm4gYuG6o24gam91cm5hbCBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk4Cittc2dpZCAiRXJyb3IgbG9hZGluZyBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICJM4buXaSB04bqjaSBqb3VybmFsIG3hu58gcuG7mW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IEpvdXJuYWwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDAKK21zZ2lkICJEaXJlY3RvcnkgaGFzaCB1bnN1cHBvcnRlZCIKK21zZ3N0ciAiVGjGsCBt4bulYyBi4bqjbmcgYsSDbSBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMQorbXNnaWQgIklsbGVnYWwgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIG51bWJlciIKK21zZ3N0ciAiU+G7kSBraOG7kWkgdGh14buZYyB0w61uaCBt4bufIHLhu5luZyBraMO0bmcgaOG7o3AgbOG7hyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgdOG6oW8gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiB24bubaSBz4buRIG7DunQgxJHDoyB5w6p1IGPhuqd1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAzCittc2dpZCAiRTJpbWFnZSBzbmFwc2hvdCBub3QgaW4gdXNlIgorbXNnc3RyICJC4bqjbiBjaOG7pXAgbmhhbmggRTJpbWFnZSBraMO0bmcgxJHGsOG7o2Mgc+G7rSBk4bulbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDQKK21zZ2lkICJUb28gbWFueSByZXNlcnZlZCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyIKK21zZ3N0ciAiQ8OzIHF1w6Egbmhp4buBdSBraOG7kWkgbcO0IHThuqMgbmjDs20gZOG7sSB0cuG7ryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNQorbXNnaWQgIlJlc2l6ZSBpbm9kZSBpcyBjb3JydXB0IgorbXNnc3RyICJUaGF5IMSR4buVaSBrw61jaCB0aMaw4bubYyBuw7p0IGLhu4sgdGjhuqV0IGLhuqFpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA2Cittc2dpZCAiVHJpZWQgdG8gc2V0IGJsb2NrIGJtYXAgd2l0aCBtaXNzaW5nIGluZGlyZWN0IGJsb2NrIgorbXNnc3RyICJUaOG7rSDEkeG6t3Qga2jhu5FpIGJtYXAgduG7m2kga2jhu5FpIGdpw6FuIHRp4bq/cCBi4buLIG3huqV0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA3Cittc2dpZCAiVERCOiBTdWNjZXNzIgorbXNnc3RyICJUREI6IFRow6BuaCBjw7RuZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwOAorbXNnaWQgIlREQjogQ29ycnVwdCBkYXRhYmFzZSIKK21zZ3N0ciAiVERCOiBDxqEgc+G7nyBk4buvIGxp4buHdSBo4buPbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJUREI6IElPIEzhu5dpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEwCittc2dpZCAiVERCOiBMb2NraW5nIGVycm9yIgorbXNnc3RyICJUREI6IEzhu5dpIGtow7NhIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTExCittc2dpZCAiVERCOiBPdXQgb2YgbWVtb3J5IgorbXNnc3RyICJUREI6IEjhur90IGLhu5kgbmjhu5siCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTIKK21zZ2lkICJUREI6IFJlY29yZCBleGlzdHMiCittc2dzdHIgIlREQjogQuG6o24gZ2hpIMSRw6Mgc+G6tW4gY8OzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEzCittc2dpZCAiVERCOiBMb2NrIGV4aXN0cyBvbiBvdGhlciBrZXlzIgorbXNnc3RyICJUREI6IEtob8OhIMSRw6MgdOG7k24gdOG6oWkgdHLDqm4gY2jDrGEga2hvw6Ega2jDoWMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTQKK21zZ2lkICJUREI6IEludmFsaWQgcGFyYW1ldGVyIgorbXNnc3RyICJUREI6IMSQ4buRaSBz4buRIGtow7RuZyBo4bujcCBs4buHIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE1Cittc2dpZCAiVERCOiBSZWNvcmQgZG9lcyBub3QgZXhpc3QiCittc2dzdHIgIlREQjogQuG6o24gZ2hpIGtow7RuZyB04buTbiB04bqhaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNgorbXNnaWQgIlREQjogV3JpdGUgbm90IHBlcm1pdHRlZCIKK21zZ3N0ciAiVERCOiBLaMO0bmcgY8OzIHF1eeG7gW4gZ2hpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTE3Cittc2dpZCAiRXh0MmZzIGRpcmVjdG9yeSBibG9jayBsaXN0IGlzIGVtcHR5IgorbXNnc3RyICJEYW5oIHPDoWNoIGto4buRaSB0aMawIG3hu6VjIGV4dDJmcyBi4buLIHLhu5duZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIlRo4butIGNo4buJbmggc+G7rWEgbeG7mXQgbeG6o25nIGto4buRaSB0aMO0bmcgcXVhIGLhu5kgbOG6t3Aga2jhu5FpIGNo4buJIMSR4buNYyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiU2FpIHPhu5Egbmhp4buHbSBtw6B1IGNobyBt4bufIHLhu5luZyBleHQ0IGdoaSBs4bqhaSDEkcaw4budbmcgZOG6q24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiU2FpIHPhu5Egbmhp4buHbSBtw6B1IGNobyBiaXRtYXAgY2h1bmcgNjQtYml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIxCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgYmxvY2sgYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBuaGnhu4dtIG3DoHUgY2hvIGJpdG1hcCBraOG7kWkgNjQtYml0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICJTYWkgc+G7kSBuaGnhu4dtIG3DoHUgY2hvIGJpdG1hcCBuw7p0IDY0LWJpdCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTMiCittc2dzdHIgIlNhaSBz4buRIG5oaeG7h20gbcOgdSAtLS0gUkVTRVJWRURfMTMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICJTYWkgc+G7kSBuaGnhu4dtIG3DoHUgLS0tIFJFU0VSVkVEXzE0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI1Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNSIKK21zZ3N0ciAiU2FpIHPhu5Egbmhp4buHbSBtw6B1IC0tLSBSRVNFUlZFRF8xNSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTYiCittc2dzdHIgIlNhaSBz4buRIG5oaeG7h20gbcOgdSAtLS0gUkVTRVJWRURfMTYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICJTYWkgc+G7kSBuaGnhu4dtIG3DoHUgLS0tIFJFU0VSVkVEXzE3IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOCIKK21zZ3N0ciAiU2FpIHPhu5Egbmhp4buHbSBtw6B1IC0tLSBSRVNFUlZFRF8xOCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTkiCittc2dzdHIgIlNhaSBz4buRIG5oaeG7h20gbcOgdSAtLS0gUkVTRVJWRURfMTkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgIlBo4bqnbiDEkeG6p3UgZXh0ZW50IGLhu4sgaOG7j25nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMxCittc2dpZCAiQ29ycnVwdCBleHRlbnQgaW5kZXgiCittc2dzdHIgIkNo4buJIHPhu5EgZXh0ZW50IGLhu4sgaOG7j25nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMyCittc2dpZCAiQ29ycnVwdCBleHRlbnQiCittc2dzdHIgImV4dGVudCBo4buPbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzMKK21zZ2lkICJObyBmcmVlIHNwYWNlIGluIGV4dGVudCBtYXAiCittc2dzdHIgIktow7RuZyBjw7JuIGtob+G6o25nIMSRxKlhIHRy4buRbmcgY2hvIG3huqNuZyBleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiSW5vZGUgZG9lcyBub3QgdXNlIGV4dGVudHMiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICJLaMO0bmcgY8OzIGV4dGVudCDigJx0aeG6v3AgdGhlb+KAnSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzNgorbXNnaWQgIk5vICdwcmV2aW91cycgZXh0ZW50IgorbXNnc3RyICJLaMO0bmcgY8OzIGV4dGVudCDigJxsaeG7gW4gdHLGsOG7m2PigJ0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzcKK21zZ2lkICJObyAndXAnIGV4dGVudCIKK21zZ3N0ciAiS2jDtG5nIGPDsyBleHRlbnQg4oCcbMOqbuKAnSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIktow7RuZyBjw7MgZXh0ZW50IOKAnHh14buRbmfigJ0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzkKK21zZ2lkICJObyBjdXJyZW50IG5vZGUiCittc2dzdHIgIktow7RuZyBuw7p0IGhp4buHbiBow6BuaCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MAorbXNnaWQgIkV4dDJmcyBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiVGhhbyB0w6FjIEV4dDJmcyBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MQorbXNnaWQgIk5vIHJvb20gdG8gaW5zZXJ0IGV4dGVudCBpbiBub2RlIgorbXNnc3RyICJLaMO0bmcgY8OybiBwaMOybmcgbsOgbyDEkeG7gyBjaMOobiBleHRlbnQgdHJvbmcgbsO6dCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAiUGjDom4gdMOhY2ggY8OzIHRo4buDIGzDoG0gbmd1ecOqbiBuaMOibiBuw7p0IGLhu4sgcuG7l25nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAiRXh0ZW50IGtow7RuZyB0w6xtIHRo4bqleSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NAorbXNnaWQgIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGZvciBpbm9kZXMgY29udGFpbmluZyBleHRlbnRzIgorbXNnc3RyICJUaGFvIHTDoWMga2jDtG5nIMSRxrDhu6NjIGjhu5cgdHLhu6MgY2hvIG7DunQgY2jhu6lhIHBo4bqnbiBt4bufIHLhu5luZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NQorbXNnaWQgIkV4dGVudCBsZW5ndGggaXMgaW52YWxpZCIKK21zZ3N0ciAixJDhu5kgZMOgaSBrw61jaCB0aMaw4bubYyBraMO0bmcgaOG7o3AgbOG7hyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NgorbXNnaWQgIkkvTyBDaGFubmVsIGRvZXMgbm90IHN1cHBvcnQgNjQtYml0IGJsb2NrIG51bWJlcnMiCittc2dzdHIgIkvDqm5oIEkvTyBraMO0bmcgaOG7lyB0cuG7oyBz4buRIGto4buRaSA2NC1iw610IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ3Cittc2dpZCAiQ2FuJ3QgY2hlY2sgaWYgZmlsZXN5c3RlbSBpcyBtb3VudGVkIGR1ZSB0byBtaXNzaW5nIG10YWIgZmlsZSIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyBraeG7g20gdHJhIG7hur91IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gxJHGsOG7o2MgZ+G6r24gYuG7n2kgdsOsIG3huqV0IHThuq1wIHRpbiBtdGFiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ4Cittc2dpZCAiRmlsZXN5c3RlbSB0b28gbGFyZ2UgdG8gdXNlIGxlZ2FjeSBiaXRtYXBzIgorbXNnc3RyICJI4buHIHRo4buRbmcgdOG6rXAgdGluIHF1w6EgbOG7m24gxJHhu4MgY8OzIHRo4buDIHPhu60gZOG7pW5nIG3huqNuZyBraeG7g3UgY8WpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ5Cittc2dpZCAiTU1QOiBpbnZhbGlkIG1hZ2ljIG51bWJlciIKK21zZ3N0ciAiTU1QOiBzYWkgc+G7kSBtw6B1IG5oaeG7h20iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTAKK21zZ2lkICJNTVA6IGRldmljZSBjdXJyZW50bHkgYWN0aXZlIgorbXNnc3RyICJNTVA6IHRoaeG6v3QgYuG7iyBoaeG7h24gdGjhu51pIGhv4bqhdCDEkeG7mW5nIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUxCittc2dpZCAiTU1QOiBmc2NrIGJlaW5nIHJ1biIKK21zZ3N0ciAiTU1QOiBmc2NrIMSRYW5nIGNo4bqheSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MgorbXNnaWQgIk1NUDogYmxvY2sgbnVtYmVyIGJleW9uZCBmaWxlc3lzdGVtIHJhbmdlIgorbXNnc3RyICJNTVA6IHPhu5Ega2jhu5FpIG7hurFtIHhhIG5nb8OgaSB2w7luZyBj4bunYSBo4buHIHRo4buRbmcgdOG6rXAgdGluIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVA6IHRy4bqjaSBxdWEgbeG7mXQgdGhhbyB0w6FjIGNoxrBhIMSRxrDhu6NjIGJp4bq/dCDEkeG6v24iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVA6IGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gduG6q24gxJFhbmcgxJHGsOG7o2Mgc+G7rSBk4bulbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIk1NUDogbeG7nyB24bubaSBPX0RJUkVDVCBn4bq3cCBs4buXaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1NgorbXNnaWQgIkJsb2NrIGdyb3VwIGRlc2NyaXB0b3Igc2l6ZSBpbmNvcnJlY3QiCittc2dzdHIgIkvDrWNoIHRoxrDhu5tjIGLhu5kgbcO0IHThuqMgbmjDs20ga2jhu5FpIGtow7RuZyAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTcKK21zZ2lkICJJbm9kZSBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZSIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSBuw7p0IGtow7RuZyBraOG7m3AgduG7m2kgbsO6dCAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJU4buVbmcga2nhu4NtIE3huqNuZyDhuqNuaCBuw7p0IGtow7RuZyBraOG7m3AgbmhhdSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgIlThu5VuZyBraeG7g20gdHJhIGto4buRaSBt4bufIHLhu5luZyBraMO0bmcga2jhu5twIHbhu5tpIGto4buRaSBt4bufIHLhu5luZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAiS2jhu5FpIHRoxrAgbeG7pWMga2jDtG5nIGPDsyBjaOG7lyBkw6BuaCBjaG8gdOG7lW5nIGtp4buDbSB0cmEiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjEKK21zZ2lkICJEaXJlY3RvcnkgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZGlyZWN0b3J5IGJsb2NrIgorbXNnc3RyICJU4buVbmcga2nhu4NtIHRyYSBraOG7kWkgdGjGsCBt4bulYyBraMO0bmcga2jhu5twIHbhu5tpIGto4buRaSB0aMawIG3hu6VjIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICJU4buVbmcga2nhu4NtIHRyYSBraOG7kWkgdGh14buZYyB0w61uaCBt4bufIHLhu5luZyBraMO0bmcga2jhu5twIHbhu5tpIGto4buRaSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MworbXNnaWQgIlN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jayIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSBzacOqdSBraOG7kWkga2jDtG5nIGto4bubcCB24bubaSBzacOqdSBraOG7kWkgIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY0Cittc2dpZCAiVW5rbm93biBjaGVja3N1bSBhbGdvcml0aG0iCittc2dzdHIgIktow7RuZyBoaeG7g3UgdGh14bqtdCB0b8OhbiBixINtIHThu5VuZyBraeG7g20gIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSB0cmEga2jhu5FpIE1NUCBraMO0bmcga2jhu5twIHbhu5tpIGto4buRaSBNTVAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjYKK21zZ2lkICJFeHQyIGZpbGUgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIlThuq1wIHRpbiBleHQyIMSRw6Mgc+G6tW4gY8OzIHLhu5NpIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3CisjLCBmdXp6eQorbXNnaWQgIkJsb2NrIGJpdG1hcCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBiaXRtYXAiCittc2dzdHIgIlThu5VuZyBraeG7g20gTeG6o25nIOG6o25oIG7DunQga2jDtG5nIGto4bubcCBuaGF1IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY4Cittc2dpZCAiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIG5hbWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzAKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgbGVuZ3RoIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzEKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAiVOG7lW5nIGtp4buDbSB0cmEga2jhu5FpIHRodeG7mWMgdMOtbmggbeG7nyBy4buZbmcga2jDtG5nIGto4bubcCB24bubaSBraOG7kWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzIKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIlPhu5Ega2jhu5FpIHRodeG7mWMgdMOtbmggbeG7nyBy4buZbmcga2jDtG5nIGjhu6NwIGzhu4ciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzMKKyMsIGZ1enp5Cittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGtleSBub3QgZm91bmQiCittc2dzdHIgImF0aHXhu5ljIHTDrW5oIMSRw6MgbeG7nyBy4buZbmciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzYKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NworbXNnaWQgIk5vIGJsb2NrIGZvciBhbiBpbm9kZSB3aXRoIGlubGluZSBkYXRhIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzgKKyMsIGZ1enp5Cittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBpbmxpbmUgZGF0YSIKK21zZ3N0ciAiS2jDtG5nIGPDsm4ga2hv4bqjbmcgxJHEqWEgdHLhu5FuZyBjaG8gbeG6o25nIGV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorIywgZnV6enkKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgIlNhaSBz4buRIG3DoHUgbmhp4buHbSBjaG8gY+G6pXUgdHLDumMgdOG6rXAgdGluIGV4dDIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODAKK21zZ2lkICJJbm9kZSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCB2YWx1ZSBvZmZzZXQiCittc2dzdHIgIiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4MgorbXNnaWQgIkpvdXJuYWwgZmxhZ3MgaW5jb25zaXN0ZW50IgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODMKKyMsIGZ1enp5Cittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIlRoYXkgxJHhu5VpIGvDrWNoIHRoxrDhu5tjIG7DunQgYuG7iyB0aOG6pXQgYuG6oWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODQKKyMsIGZ1enp5Cittc2dpZCAiV3JvbmcgdW5kbyBmaWxlIGZvciB0aGlzIGZpbGVzeXN0ZW0iCittc2dzdHIgIktow7RuZyDEkeG7pyBxdXnhu4FuIMSR4buDIHRoYXkgxJHhu5VpIGvDrWNoIGPhu6EgY+G7p2EgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NQorIywgZnV6enkKK21zZ2lkICJGaWxlIHN5c3RlbSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIlRoYXkgxJHhu5VpIGvDrWNoIHRoxrDhu5tjIG7DunQgYuG7iyB0aOG6pXQgYuG6oWkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODYKK21zZ2lkICJCYWQgQ1JDIGRldGVjdGVkIGluIGZpbGUgc3lzdGVtIgorbXNnc3RyICIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODcKKyMsIGZ1enp5Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJTacOqdSBraOG7kWkgZXh0MiBi4buLIGjhu49uZyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4OAorIywgZnV6enkKK21zZ2lkICJJbm9kZSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIlRoYXkgxJHhu5VpIGvDrWNoIHRoxrDhu5tjIG7DunQgYuG7iyB0aOG6pXQgYuG6oWkiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTEKK21zZ2lkICJQcm9maWxlIHZlcnNpb24gMC4wIgorbXNnc3RyICJQcm9maWxlIHBoacOqbiBi4bqjbiAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJHacOhIHRy4buLIHPhu5EgbeG6p3Ugbmhp4buHbSBzYWkgdHJvbmcgcHJvZmlsZV9ub2RlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjEzCittc2dpZCAiUHJvZmlsZSBzZWN0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAiUGjhuqduIGPhu6dhIHByb2ZpbGUga2jDtG5nIHTDrG0gdGjhuqV5IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE0Cittc2dpZCAiUHJvZmlsZSByZWxhdGlvbiBub3QgZm91bmQiCittc2dzdHIgIk3hu5FpIHF1YW4gaOG7hyBwcm9maWxlIGtow7RuZyB0w6xtIHRo4bqleSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNQorbXNnaWQgIkF0dGVtcHQgdG8gYWRkIGEgcmVsYXRpb24gdG8gbm9kZSB3aGljaCBpcyBub3QgYSBzZWN0aW9uIgorbXNnc3RyICJUaOG7rSB0aMOqbSBxdWFuIGjhu4cgdsOgbyBuw7p0IG3DoCBuw7Mga2jDtG5nIGzDoCBt4buZdCBjaMawxqFuZyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNgorbXNnaWQgIkEgcHJvZmlsZSBzZWN0aW9uIGhlYWRlciBoYXMgYSBub24temVybyB2YWx1ZSIKK21zZ3N0ciAiUGjhuqduIMSR4bqndSBjaMawxqFuZyBwcm9maWxlIHBo4bqjaSBjw7MgZ2nDoSB0cuG7iyBraMOhYyBraMO0bmciCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTcKK21zZ2lkICJCYWQgbGlua2VkIGxpc3QgaW4gcHJvZmlsZSBzdHJ1Y3R1cmVzIgorbXNnc3RyICJEYW5oIHPDoWNoIGxpw6puIGvhur90IGtow7RuZyDEkcO6bmcgdHJvbmcgY+G6pXUgdHLDumMgcHJvZmlsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIk3hu6ljIG5ow7NtIGtow7RuZyDEkcO6bmcgdHJvbmcgY+G6pXUgdHLDumMgcHJvZmlsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIkNvbiB0cuG7jyDEkeG6v24gY2hhIGtow7RuZyDEkcO6bmcgdHJvbmcgY+G6pXUgdHLDumMgcHJvZmlsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICJHacOhIHRy4buLIHPhu5EgbeG6p3Ugbmhp4buHbSBzYWkgdHJvbmcgcHJvZmlsZSBpdGVyYXRvciIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMQorbXNnaWQgIkNhbid0IHNldCB2YWx1ZSBvbiBzZWN0aW9uIG5vZGUiCittc2dzdHIgIktow7RuZyB0aOG7gyDEkeG6t3QgZ2nDoSB0cuG7iyB0csOqbiBuw7p0IGPhu6dhIMSRb+G6oW4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIlRoYW0gc+G7kSBraMO0bmcgaOG7o3AgbOG7hyDEkcaw4bujYyBjaHV54buDbiBxdWEgY2hvIHRoxrAgdmnhu4duIHByb2ZpbGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjMKK21zZ2lkICJBdHRlbXB0IHRvIG1vZGlmeSByZWFkLW9ubHkgcHJvZmlsZSIKK21zZ3N0ciAiVGjhu60gdmnhur90IHbDoG8gaOG7hyB0aOG7kW5nIHThuq1wIHRpbiBwcm9maWxlIGNo4buJIMSR4buNYyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNAorbXNnaWQgIlByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgbm90IGF0IHRvcCBsZXZlbCIKK21zZ3N0ciAiUGjhuqduIMSR4bqndSBjaMawxqFuZyBwcm9maWxlIGtow7RuZyDhu58gbeG7qWMgY2FvIG5o4bqldCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICJDw7ogcGjDoXAgbOG7l2kgdHJvbmcga2hhaSBiw6FvIHBo4bqnbiDEkeG6p3UgY2jGsMahbmcgcHJvZmlsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNgorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHJlbGF0aW9uIgorbXNnc3RyICJTYWkgY8O6IHBow6FwIHRyb25nIHF1YW4gaOG7hyBwcm9maWxlIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICJC4buVIHh1bmcgZOG6pXUgbmdv4bq3YyDDtG0gxJHDs25nIHRyb25nIHByb2ZpbGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAiVGhp4bq/dSBt4bqldCBk4bqldSBuZ2/hurdjIMO0bSBt4bufIHRyb25nIHByb2ZpbGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjkKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV90IgorbXNnc3RyICJT4buRIG5oaeG7h20gbcOgdSBzYWkgdHJvbmcgcHJvZmlsZV90IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJHacOhIHRy4buLIHPhu5EgbeG6p3Ugbmhp4buHbSBzYWkgdHJvbmcgcHJvZmlsZV9zZWN0aW9uX3QiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzEKK21zZ2lkICJJdGVyYXRpb24gdGhyb3VnaCBhbGwgdG9wIGxldmVsIHNlY3Rpb24gbm90IHN1cHBvcnRlZCIKK21zZ3N0ciAiTOG6t3AgxJFpIGzhurdwIGzhuqFpIHF1YSB0b8OgbiBi4buZIGNoxrDGoW5nIOG7nyBt4bupYyBjYW8gbmjhuqV0IGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMyCittc2dpZCAiSW52YWxpZCBwcm9maWxlX3NlY3Rpb24gb2JqZWN0IgorbXNnc3RyICLEkOG7kWkgdMaw4bujbmcgcHJvZmlsZV9zZWN0aW9uIGtow7RuZyBo4bujcCBs4buHIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMzCittc2dpZCAiTm8gbW9yZSBzZWN0aW9ucyIKK21zZ3N0ciAiS2jDtG5nIGPDsm4gdGjDqm0gcGjhuqduIG7DoG8gbuG7r2EiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzQKK21zZ2lkICJCYWQgbmFtZXNldCBwYXNzZWQgdG8gcXVlcnkgcm91dGluZSIKK21zZ3N0ciAiVMOqbiBzYWkgxJHGsOG7o2MgY2h1eeG7g24gcXVhIGNobyB0aOG7pyB04bulYyB0cnV5IHbhuqVuIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM1Cittc2dpZCAiTm8gcHJvZmlsZSBmaWxlIG9wZW4iCittc2dzdHIgIktow7RuZyBt4bufIHThuq1wIHRpbiBwcm9maWxlIG7DoG8iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzYKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX3QiCittc2dzdHIgIkdpw6EgdHLhu4sgc+G7kSBt4bqndSBuaGnhu4dtIHNhaSB0cm9uZyBwcm9maWxlX2ZpbGVfdCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyB04bqtcCB0aW4gcHJvZmlsZSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozOAorbXNnaWQgIlNlY3Rpb24gYWxyZWFkeSBleGlzdHMiCittc2dzdHIgIlBo4bqnbiDEkcOjIHThu5NuIHThuqFpIHLhu5NpIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM5Cittc2dpZCAiSW52YWxpZCBib29sZWFuIHZhbHVlIgorbXNnc3RyICJHacOhIHRy4buLIGzDtC1nw61jIGtow7RuZyBo4bujcCBs4buHIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQwCittc2dpZCAiSW52YWxpZCBpbnRlZ2VyIHZhbHVlIgorbXNnc3RyICJHacOhIHRy4buLIG5ndXnDqm4ga2jDtG5nIGjhu6NwIGzhu4ciCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6NDEKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9maWxlX2RhdGFfdCIKK21zZ3N0ciAiR2nDoSB0cuG7iyBz4buRIG3huqd1IG5oaeG7h20gc2FpIHRyb25nIHByb2ZpbGVfZmlsZV9kYXRhX3QiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHTDqm4gbOG6p24gY3Xhu5FpIMSRxrDhu6NjIGfhuq9uIHbDoG8gJXMgdHLDqm4gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyIKK21zZ3N0ciAiXHTDqm4gbOG6p24gY3Xhu5FpIMSRxrDhu6NjIGfhuq9uIHbDoG8gJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx0xJHGsOG7o2MgdOG6oW8gbMO6YyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlx0bGFzdCBtb2RpZmllZCBvbiAlcyIKK21zZ3N0ciAiXHRz4butYSBs4bqnbiBjdeG7kWkgbMO6YyAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIlTDrG0gdGjhuqV5ICVzIGLhuqNuZyBwaMOibiB2w7luZyB0cm9uZyAlc1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGZpbGUgJXMgZG9lcyBub3QgZXhpc3QgYW5kIG5vIHNpemUgd2FzIHNwZWNpZmllZC5cbiIKK21zZ3N0ciAiVOG6rXAgdGluICVzIGtow7RuZyB04buTbiB04bqhaSB2w6AgY8WpbmcgY2jGsGEgY2jhu4kgcmEga8OtY2ggY+G7oS5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTg4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIHJlZ3VsYXIgZmlsZSAlc1xuIgorbXNnc3RyICLEkGFuZyB04bqhbyB04bqtcCB0aW4gdGjGsOG7nW5nICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIG3hu58gJXM6ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5NAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgZGV2aWNlIGFwcGFyZW50bHkgZG9lcyBub3QgZXhpc3Q7IGRpZCB5b3Ugc3BlY2lmeSBpdCBjb3JyZWN0bHk/XG4iCittc2dzdHIgIiIKKyJcbiIKKyJDw7MgduG6uyBsw6AgdGhp4bq/dCBi4buLIGtow7RuZyB04buTbiB04bqhaTsgYuG6oW4gY8OzIMSRxrBhIHJhIMSRw7puZyBjaMawYT9cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjE2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyBraMO0bmcgcGjhuqNpIHRoaeG6v3QgYuG7iyDEkeG6t2MgYmnhu4d0IGto4buRaS5cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjM4CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW0gbGFiZWxsZWQgJyVzJ1xuIgorbXNnc3RyICIlcyBjaOG7qWEgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiAlcyBjw7MgbmjDo24g4oCcJXPigJ1cbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGNvbnRhaW5zIGEgJXMgZmlsZSBzeXN0ZW1cbiIKK21zZ3N0ciAiJXMgY2jhu6lhIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MjY1CisjLCBmdXp6eSwgYy1mb3JtYXQKK21zZ2lkICIlcyBjb250YWlucyBgJXMnIGRhdGFcbiIKK21zZ3N0ciAiJXMgY2jhu6lhIGjhu4cgdGjhu5FuZyB04bqtcCB0aW4gJXNcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICJIw6N5IGNo4bqheSB0aeG6v24gdHLDrG5oIGUyZnNjayB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluLlxuIgorCisjfiBtc2dpZCAiSW52YWxpZCBxdW90YXR5cGUgcGFyYW1ldGVyOiAlc1xuIgorI34gbXNnc3RyICJUaGFtIHPhu5Ega2nhu4N1IGjhuqFuIG5n4bqhY2gga2jDtG5nIGjhu6NwIGzhu4c6ICVzXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICJAaSAlaSDEkeG6t3QgY+G7nSBAYyB0csOqbiBAZiBtw6Aga2jDtG5nIGjhu5cgdHLhu6Mga2jhuqMgbsSDbmcgQGMuIgorCisjfiBtc2dpZCAiQEEgQGEgQGIgJWIuICAiCisjfiBtc2dzdHIgIkBBIEBiIEBhICViLiAgIgorCisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICIlczogY+G6o25oIGLDoW86IHPhu7EgaOG7lyB0cuG7oyBraOG6oyBuxINuZyBuw6luIGzDoCB0aOG7sWMgbmdoaeG7h20uXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiJXM6IGUyZnNjayBub3QgY29tcGlsZWQgd2l0aCBIVFJFRSBzdXBwb3J0LFxuIgorI34gIlx0YnV0IGZpbGVzeXN0ZW0gJXMgaGFzIEhUUkVFIGRpcmVjdG9yaWVzLlxuIgorI34gbXNnc3RyICIiCisjfiAiJXM6IGUyZnNjayBraMO0bmcgxJHGsOG7o2MgYmnDqm4gZOG7i2NoIHbhu5tpIGto4bqjIG7Eg25nIGjhu5cgdHLhu6MgSFRSRUUsXG4iCisjfiAiXHRuaMawbmcgaOG7hyB0aOG7kW5nIHThuq1wIHRpbiAlcyBjw7MgdGjGsCBt4bulYyBIVFJFRS5cbiIKKworI34gbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgemVyb2l6aW5nIGJ1ZmZlciIKKyN+IG1zZ3N0ciAidHJvbmcga2hpIGPhuqVwIHBow6F0IGLhu5kgxJHhur9tIGzDoG0gc+G7kSBraMO0bmciCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAiLCBuw7p0IGtow7RuZyBkw7luZyAldVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgdGhlIGZpbGUgc3lzdGVtIGRhdGEgXG4iCisjfiBtc2dzdHIgIkzhu5dpIMSR4buNYyBk4buvIGxp4buHdSBo4buHIHRo4buRbmcgdOG6rXAgdGluIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9mZXRjaCAlc1xuIgorI34gbXNnc3RyICJM4buXaSB0ZGJfZmV0Y2ggJXNcbiIKKworI34gbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBVVUlEIGRpZG4ndCBtYXRjaCBcbiIKKyN+IG1zZ3N0ciAiVVVJRCBo4buHIHRo4buRbmcgdOG6rXAgdGluIGtow7RuZyB0xrDGoW5nIOG7qW5nIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgIkzhu5dpIHRkYl9vcGVuICVzXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gb3BlbiAlc1xuIgorI34gbXNnc3RyICJM4buXaSBt4bufICVzXG4iCisKKyN+IG1zZ2lkICJSZXBsYXllZCB0cmFuc2FjdGlvbiBvZiBzaXplICV6ZCBhdCBsb2NhdGlvbiAlbGx1XG4iCisjfiBtc2dzdHIgIsSQw6MgY2jhuqF5IGzhuqFpIGdpYW8gZOG7i2NoIGPDsyBrw61jaCBj4buhICV6ZCDhu58gduG7iyB0csOtICVsbHVcbiIKKworI34gbXNnaWQgIkZhaWxlZCB3cml0ZSAlc1xuIgorI34gbXNnc3RyICJM4buXaSBnaGkgJXNcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBxdW90YSBvcHRpb25zIVxuIgorI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgY+G6pXAgcGjDoXQgYuG7mSBuaOG7myDEkeG7gyBwaMOibiB0w6FjaCBjw6FjIHTDuXkgY2jhu41uIGjhuqFuIG5n4bqhY2ghXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRkYiBmaWxlbmFtZVxuIgorI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgY+G6pXAgcGjDoXQgYuG7mSBuaOG7myBjaG8gdMOqbiB04bqtcCB0aW4gdGRiXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiVG8gdW5kbyB0aGUgdHVuZTJmcyBvcGVyYXRpb24gcGxlYXNlIHJ1biB0aGUgY29tbWFuZFxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKyN+IG1zZ3N0ciAiIgorI34gIsSQ4buDIGhvw6BuIGzhuqFpIHRoYW8gdMOhYyB0dW5lMmZzLCBow6N5IGNo4bqheSBjw6J1IGzhu4duaFxuIgorI34gIiAgICBlMnVuZG8gJXMgJXNcbiIKKyN+ICJcbiIKKworI34gbXNnaWQgIiVzIGlzIGVudGlyZSBkZXZpY2UsIG5vdCBqdXN0IG9uZSBwYXJ0aXRpb24hXG4iCisjfiBtc2dzdHIgIiVzIGzDoCB0b8OgbiBi4buZIHRoaeG6v3QgYuG7iywga2jDtG5nIHBo4bqjaSBjaOG7iSBt4buZdCBwaMOibiB2w7luZyAhXG4iCisKKyN+IG1zZ2lkICIiCisjfiAiXGJcYlxiXGJcYlxiXGJcYkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVsbHUlJSkgaW4gJXMgYXQgJS4yZiBNQi8iCisjfiAicyAgICAgICBcbiIKKyN+IG1zZ3N0ciAiIgorI34gIlxiXGJcYlxiXGJcYlxiXGLEkMOjIGNow6lwICVsbHUgLyAlbGx1IGto4buRaSAoJWxsdSUlKSB0cm9uZyAlcyB04buRYyDEkeG7mSAlLjJmIE1CLyIKKyN+ICJzICAgICAgIFxuIgorCisjfiBtc2dpZCAiIgorI34gIlxuIgorI34gIldhcm5pbmc6IHRoZSBxdW90YSBmZWF0dXJlIGlzIHN0aWxsIHVuZGVyIGRldmVsb3BtZW50XG4iCisjfiAiU2VlIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL1F1b3RhIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICJcbiIKKyN+ICJD4bqjbmggYsOhbzogxJHhurdjIHTDrW5oIGjhuqFuIG5n4bqhY2ggduG6q24gxJFhbmcgdHJvbmcgcXXDoSB0csOsbmggcGjDoXQgdHJp4buDblxuIgorI34gIlhlbSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9RdW90YSDEkeG7gyBiaeG6v3QgY2hpIHRp4bq/dFxuIgorI34gIlxuIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJXMgLS0tICVzXG4iCisjfiBtc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSBjw6FjIHRow7RuZyB0aW4gduG7gSAlcyDigJQgJXNcbiIKKworI34gbXNnaWQgIkNsZWFyaW5nIGV4dGVudCBmbGFnIG5vdCBzdXBwb3J0ZWQgb24gJXMiCisjfiBtc2dzdHIgIkNo4bupYyBuxINuZyB4b8OhIHPhuqFjaCBj4budIHThuqdtIGtow7RuZyDEkcaw4bujYyBo4buXIHRy4bujIHRyw6puICVzIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBUaGUgY29tYmluYXRpb24gb2YgZmxleF9iZyBhbmRcbiIKKyN+ICJcdCFyZXNpemVfaW5vZGUgZmVhdHVyZXMgaXMgbm90IHN1cHBvcnRlZCBieSByZXNpemUyZnMuXG4iCisjfiBtc2dzdHIgIiIKKyN+ICIlczogdOG7lSBo4bujcCBoYWkgdMOtbmggbsSDbmcgZmxleF9iZyB2w6AgIXJlc2l6ZV9pbm9kZVxuIgorI34gIsSR4buBdSBraMO0bmcgxJHGsOG7o2MgcmVzaXplMmZzIGjhu5cgdHLhu6MuXG4iCisKKyN+IG1zZ2lkICJAZyAlZyBAYiBAQiB1bmluaXRpYWxpemVkIGJ1dCBAaSBAQiBpbiB1c2UuXG4iCisjfiBtc2dzdHIgIkBCIEBiIGPhu6dhIEBnICVnIGNoxrBhIGto4bufaSB04bqhbyBuaMawbmcgxJFhbmcgZMO5bmcgQEIgQGkuXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBzaG91bGQgbm90IGhhdmUgRU9GQkxPQ0tTX0ZMIHNldCAoc2l6ZSAlSXMsIGxibGsgJXIpXG4iCisjfiBtc2dzdHIgIkBpICVpIGtow7RuZyBuw6puIGzhuq1wIEVPRkJMT0NLU19GTCAoa8OtY2ggY+G7oSAlSXMsIGxibGsgJXIpXG4iCisKKyN+IG1zZ2lkICJDb3VsZG4ndCBkZXRlcm1pbmUgam91cm5hbCBzaXplIgorI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgeMOhYyDEkeG7i25oIGvDrWNoIGPhu6Egbmjhuq10IGvDvSIKKworI34gbXNnaWQgIjxUaGUgQUNMIGluZGV4IGlub2RlPiIKKyN+IG1zZ3N0ciAiPG7DunQgdGjDtG5nIHRpbiBjaOG7iSBt4bulYyBBQ0w+IgorCisjfiBtc2dpZCAiPFRoZSBBQ0wgZGF0YSBpbm9kZT4iCisjfiBtc2dzdHIgIjxuw7p0IHRow7RuZyB0aW4gZOG7ryBsaeG7h3UgQUNMPiIKKworI34gbXNnaWQgInNob3J0IHdyaXRlIChvbmx5ICVkIGJ5dGVzKSBmb3Igd3JpdGluZyBpbWFnZSBoZWFkZXIiCisjfiBtc2dzdHIgImdoaSBuZ+G6r24gKGNo4buJICVkIGJ5dGUpIMSR4buDIGdoaSBwaOG6p24gxJHhuqd1IOG6o25oIgorCisjfiBtc2dpZCAiaW52YWxpZCBmcmFnbWVudCBzaXplIC0gJXMiCisjfiBtc2dzdHIgImPhu6EgxJFv4bqhbiBraMO0bmcgaOG7o3AgbOG7hyDigJQgJXMiCisKKyN+IG1zZ2lkICJXYXJuaW5nOiBmcmFnbWVudHMgbm90IHN1cHBvcnRlZC4gIElnbm9yaW5nIC1mIG9wdGlvblxuIgorI34gbXNnc3RyICJD4bqjbmggYsOhbzoga2jDtG5nIGjhu5cgdHLhu6MgxJFv4bqhbiBuw6puIGLhu48gcXVhIHTDuXkgY2jhu41uIOKAnC1m4oCdXG4iCisKKyN+IG1zZ2lkICJDYWxsaW5nIEJMS0RJU0NBUkQgZnJvbSAlbGx1IHRvICVsbHUgIgorI34gbXNnc3RyICLEkGFuZyBn4buNaSBCTEtESVNDQVJEIHThu6sgJWxsdSDEkeG6v24gJWxsdSAiCisKKyN+IG1zZ2lkICJzdWNjZWVkZWQuXG4iCisjfiBtc2dzdHIgIsSRw6MgdGjDoG5oIGPDtG5nLlxuIgorCisjfiBtc2dpZCAiSm91cm5hbCBOT1QgcmVtb3ZlZFxuIgorI34gbXNnc3RyICJDSMavQSBn4buhIGLhu48gbmjhuq10IGvDvVxuIgorCisjfiBtc2dpZCAiI1x0XHQgJXUgLT4gJXUgKCVkKVxuIgorI34gbXNnc3RyICIjXHRcdCAldSAtPiAldSAoJWQpXG4iCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vemhfQ04uZ21vIGIvZTJmc3Byb2dzL3BvL3poX0NOLmdtbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjcyYTcwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3BvL3poX0NOLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcG8vemhfQ04ucG8gYi9lMmZzcHJvZ3MvcG8vemhfQ04ucG8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM0NTQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9wby96aF9DTi5wbwpAQCAtMCwwICsxLDgzNzAgQEAKKyMgQ2hpbmVzZSAoc2ltcGxpZmllZCkgdHJhbnNsYXRpb24gZm9yIGUyZnNwcm9ncy4KKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGUyZnNwcm9ncyBwYWNrYWdlLgorIyBEYXJrIFJhdmVuIDxkcmRhcmtyYXZlbkBnbWFpbC5jb20+LCAyMDA5LgorIyB6d3B3and0eiA8endwd2p3dHpAMTI2LmNvbT4sIDIwMTUuCisjCisjLiBUaGUgc3RyaW5ncyBpbiBlMmZzY2sncyBwcm9ibGVtLmMgY2FuIGJlIHZlcnkgaGFyZCB0byB0cmFuc2xhdGUsCisjLiBzaW5jZSB0aGUgc3RyaW5ncyBhcmUgZXhwYW5kZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzLiAgRmlyc3Qgb2YgYWxsLAorIy4gdGhlcmUgaXMgYW4gQC1leHBhbnNpb24sIHdoZXJlIHN0cmluZ3MgbGlrZSAiQGkiIGFyZSBleHBhbmRlZCB0bworIy4gImlub2RlIiwgYW5kIHNvIG9uLiAgSW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgZm9yIHRyYW5zbGF0b3JzLCB0aGUKKyMuIGUyZnNwcm9ncyBwbyB0ZW1wbGF0ZSBmaWxlIGhhcyBiZWVuIGVuaGFuY2VkIHdpdGggY29tbWVudHMgdGhhdCBzaG93CisjLiB0aGUgQC1leHBhbnNpb24sIGZvciB0aGUgc3RyaW5ncyBpbiB0aGUgcHJvYmxlbS5jIGZpbGUuCisjLgorIy4gVHJhbnNsYXRvcnMgYXJlIGZyZWUgdG8gdXNlIHRoZSBALWV4cGFuc2lvbiBmYWNpbGl0eSBpZiB0aGV5IHNvCisjLiBjaG9vc2UsIGJ5IHByb3ZpZGluZyB0cmFuc2xhdGlvbnMgZm9yIHN0cmluZ3MgaW4gZTJmc2NrL21lc3NhZ2UuYy4KKyMuIFRoZXNlIHRyYW5zbGF0aW9uIGNhbiBjb21wbGV0ZWx5IHJlcGxhY2UgYW4gZXhwYW5zaW9uOyBmb3IgZXhhbXBsZSwKKyMuIGlmICJiYmxvY2siICh3aGljaCBpbmRpY2F0ZWQgdGhhdCAiQGIiIHdvdWxkIGJlIGV4cGFuZGVkIHRvICJibG9jayIpCisjLiBpcyB0cmFuc2xhdGVkIGFzICJkZGF0ZW52ZXJsdXN0IiwgdGhlbiAiQGQiIHdpbGwgYmUgZXhwYW5kZWQgdG8KKyMuICJkYXRlbnZlcmx1c3QiLiAgQWx0ZXJuYXRpdmVseSwgdHJhbnNsYXRvcnMgY2FuIHNpbXBseSBub3QgdXNlIHRoZQorIy4gQC1leHBhbnNpb24gZmFjaWxpdHkgYXQgYWxsLgorIy4KKyMuIFRoZSBzZWNvbmQgZXhwYW5zaW9uIHdoaWNoIGlzIGRvbmUgZm9yIGUyZnNjaydzIHByb2JsZW0uYyBtZXNzYWdlcyBpcworIy4gYSBkeW5hbWljICUtZXhwYW5zaW9uLCB3aGljaCBleHBhbmRzICVpIGFzIGFuIGlub2RlIG51bWJlciwgYW5kIHNvCisjLiBvbi4gIEEgdGFibGUgb2YgdGhlc2UgZXhwYW5zaW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuICBOb3RlIHRoYXQKKyMuICUtZXhwcmVzc2lvbnMgdGhhdCBiZWdpbiB3aXRoICIlRCIgYW5kICIlSSIgYXJlIHR3by1jaGFyYWN0ZXIKKyMuIGV4cGFuc2lvbnM7IHNvIGZvciBleGFtcGxlLCAiJUl1IiBleHBhbmRzIHRvIHRoZSBpbm9kZSdzIHVzZXIgaWQKKyMuIG93bmVyc2hpcCBmaWVsZCAoaW5vZGUtPmlfdWlkKS4gIEFsc28gdGhlICIlQiIgZXhwYW5zaW9uIGlzIHNwZWNpYWw6CisjLiBpdCBjYW4gZXhwYW5kIHRvIGVpdGhlciB0aGUgc3RyaW5nICJpbmRpcmVjdCBibG9jayIgKHBvc3NpYmx5IHByZWNlZGVkCisjLiBieSB0aGUgd29yZCAiZG91YmxlIiBvciAidHJpcGxlIiksIG9yIHRoZSBzdHJpbmcgImJsb2NrICMiIGltbWVkaWF0ZWx5CisjLiBmb2xsb3dlZCBieSBhbiBpbnRlZ2VyIGluZGljYXRpbmcgYSBibG9jayBzZXF1ZW5jZSBudW1iZXIuCisjLiAgCisjLiAJJWIJPGJsaz4JCQlibG9jayBudW1iZXIKKyMuIAklQgkiaW5kaXJlY3QgYmxvY2siIHwgImJsb2NrICMiPGJsa2NvdW50PglzdHJpbmcgfCBzdHJpbmcraW50ZWdlcgorIy4gCSVjCTxibGsyPgkJCWJsb2NrIG51bWJlcgorIy4gCSVEaQk8ZGlyZW50PiAtPiBpbm8JCWlub2RlIG51bWJlcgorIy4gCSVEbgk8ZGlyZW50PiAtPiBuYW1lCXN0cmluZworIy4gCSVEcgk8ZGlyZW50PiAtPiByZWNfbGVuCisjLiAJJURsCTxkaXJlbnQ+IC0+IG5hbWVfbGVuCisjLiAJJUR0CTxkaXJlbnQ+IC0+IGZpbGV0eXBlCisjLiAJJWQJPGRpcj4gCQkJaW5vZGUgbnVtYmVyCisjLiAJJWcJPGdyb3VwPgkJCWludGVnZXIKKyMuIAklaQk8aW5vPgkJCWlub2RlIG51bWJlcgorIy4gCSVJcwk8aW5vZGU+IC0+IGlfc2l6ZQorIy4gCSVJUwk8aW5vZGU+IC0+IGlfZXh0cmFfaXNpemUKKyMuIAklSWIJPGlub2RlPiAtPiBpX2Jsb2NrcworIy4gCSVJbAk8aW5vZGU+IC0+IGlfbGlua3NfY291bnQKKyMuIAklSW0JPGlub2RlPiAtPiBpX21vZGUKKyMuIAklSU0JPGlub2RlPiAtPiBpX210aW1lCisjLiAJJUlGCTxpbm9kZT4gLT4gaV9mYWRkcgorIy4gCSVJZgk8aW5vZGU+IC0+IGlfZmlsZV9hY2wKKyMuIAklSWQJPGlub2RlPiAtPiBpX2Rpcl9hY2wKKyMuIAklSXUJPGlub2RlPiAtPiBpX3VpZAorIy4gCSVJZwk8aW5vZGU+IC0+IGlfZ2lkCisjLiAJJUl0CTxzdHI+CQkJZmlsZSB0eXBlCisjLiAJJWoJPGlubzI+CQkJaW5vZGUgbnVtYmVyCisjLiAJJW0JPGNvbV9lcnIgZXJyb3IgbWVzc2FnZT4KKyMuIAklTgk8bnVtPgorIy4gCSVwCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIGRpcmVjdG9yeSA8aW5vPgorIy4gCSVQCQlleHQyZnNfZ2V0X3BhdGhuYW1lIG9mIDxkaXJlbnQ+LT5pbm8gd2l0aCA8aW5vMj4gYXMKKyMuIAkJCQl0aGUgY29udGFpbmluZyBkaXJlY3RvcnkuICAoSWYgZGlyZW50IGlzIE5VTEwKKyMuIAkJCQl0aGVuIHJldHVybiB0aGUgcGF0aG5hbWUgb2YgZGlyZWN0b3J5IDxpbm8yPikKKyMuIAklcQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGRpcj4KKyMuIAklUQkJZXh0MmZzX2dldF9wYXRobmFtZSBvZiBkaXJlY3RvcnkgPGlubz4gd2l0aCA8ZGlyPiBhcworIy4gCQkJCXRoZSBjb250YWluaW5nIGRpcmVjdG9yeS4KKyMuIAklcwk8c3RyPgkJCW1pc2NlbGxhbmVvdXMgc3RyaW5nCisjLiAJJVMJCWJhY2t1cCBzdXBlcmJsb2NrCisjLiAJJVgJPG51bT4JaGV4YWRlY2ltYWwgZm9ybWF0CisjLgorbXNnaWQgIiIKK21zZ3N0ciAiIgorIlByb2plY3QtSWQtVmVyc2lvbjogZTJmc3Byb2dzLTEuNDMuMVxuIgorIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiB0eXRzb0BhbHVtLm1pdC5lZHVcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wOS0wNCAyMToyNy0wNDAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNi0wNi0xNSAxODowNSswODAwXG4iCisiTGFzdC1UcmFuc2xhdG9yOiBUaWFuemUgV2FuZyA8endwd2p3dHpAMTI2LmNvbT5cbiIKKyJMYW5ndWFnZS1UZWFtOiBDaGluZXNlIChzaW1wbGlmaWVkKSA8aTE4bi16aEBnb29nbGVncm91cHMuY29tPlxuIgorIkxhbmd1YWdlOiB6aF9DTlxuIgorIk1JTUUtVmVyc2lvbjogMS4wXG4iCisiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgorIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS44LjcuMVxuIgorIlgtUG9lZGl0LUJvb2ttYXJrczogLTEsNTkxLC0xLC0xLC0xLC0xLC0xLC0xLC0xLC0xXG4iCisiUGx1cmFsLUZvcm1zOiBucGx1cmFscz0xOyBwbHVyYWw9MDtcbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjIzIG1pc2MvbWtlMmZzLmM6MjE0CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCBibG9jayAldSBvdXQgb2YgcmFuZ2U7IGlnbm9yZWQuXG4iCittc2dzdHIgIuWdj+WdlyAldSDotoXlh7rojIPlm7TvvJvlt7Llv73nlaXjgIJcbiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjQ2Cittc2dpZCAid2hpbGUgc2FuaXR5IGNoZWNraW5nIHRoZSBiYWQgYmxvY2tzIGlub2RlIgorbXNnc3RyICLov5vooYzlnY/lnZdpbm9kZeeahOWBpeWFqOaAp+ajgOafpeaXtiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjU4Cittc2dpZCAid2hpbGUgcmVhZGluZyB0aGUgYmFkIGJsb2NrcyBpbm9kZSIKK21zZ3N0ciAi6K+75Y+W5Z2P5Z2XaW5vZGXml7YiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo3MiBlMmZzY2svc2NhbnRlc3QuYzoxMDcgZTJmc2NrL3VuaXguYzoxNTA4CisjOiBlMmZzY2svdW5peC5jOjE2MDEgbWlzYy9iYWRibG9ja3MuYzoxMjQyIG1pc2MvYmFkYmxvY2tzLmM6MTI1MAorIzogbWlzYy9iYWRibG9ja3MuYzoxMjY0IG1pc2MvYmFkYmxvY2tzLmM6MTI3NiBtaXNjL2R1bXBlMmZzLmM6Njg5CisjOiBtaXNjL2UyaW1hZ2UuYzoxNDAwIG1pc2MvZTJpbWFnZS5jOjE1ODQgbWlzYy9lMmltYWdlLmM6MTYwNQorIzogbWlzYy9ta2UyZnMuYzoyMzAgbWlzYy90dW5lMmZzLmM6MjY5MyBtaXNjL3R1bmUyZnMuYzoyNzg3IHJlc2l6ZS9tYWluLmM6NDEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICVzIgorbXNnc3RyICLlsJ3or5XmiZPlvIAgJXMg5pe2IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6ODMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHBvcGVuICclcyciCittc2dzdHIgIuWwneivleWvueKAnCVz4oCd6L+b6KGMcG9wZW7ml7YiCisKKyM6IGUyZnNjay9iYWRibG9ja3MuYzo5NCBtaXNjL21rZTJmcy5jOjIzNworbXNnaWQgIndoaWxlIHJlYWRpbmcgaW4gbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gZmlsZSIKK21zZ3N0ciAi5LuO5paH5Lu25Lit6K+75Y+W5Z2P5Z2X6KGo5pe2IgorCisjOiBlMmZzY2svYmFkYmxvY2tzLmM6MTA1Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgYmFkIGJsb2NrIGlub2RlIgorbXNnc3RyICLmm7TmlrDlnY/lnZdpbm9kZeaXtiIKKworIzogZTJmc2NrL2JhZGJsb2Nrcy5jOjEzMworIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBpbGxlZ2FsIGJsb2NrICV1IGZvdW5kIGluIGJhZCBibG9jayBpbm9kZS4gIENsZWFyZWQuXG4iCittc2dzdHIgIuitpuWRiu+8muWcqOWdj+Wdl2lub2Rl5Lit5Y+R546w6Z2e5rOV55qE5Z2XJXXjgILlt7LmuIXpmaTjgIJcbiIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBibG9jayAlbHUgKCVzKSB3aGlsZSAlcy4gICIKK21zZ3N0ciAiJTMkcyDml7bor7vlj5blnZcgJTEkbHXvvIglMiRz77yJ6ZSZ6K+v44CCICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjU4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgYmxvY2sgJWx1ICglcykuICAiCittc2dzdHIgIuivu+WPluWdlyAlbHXvvIglc++8iemUmeivr+OAgiAgIgorCisjOiBlMmZzY2svZWhhbmRsZXIuYzo2NiBlMmZzY2svZWhhbmRsZXIuYzoxMTUKK21zZ2lkICJJZ25vcmUgZXJyb3IiCittc2dzdHIgIuW/veeVpemUmeivryIKKworIzogZTJmc2NrL2VoYW5kbGVyLmM6NjcKK21zZ2lkICJGb3JjZSByZXdyaXRlIgorbXNnc3RyICLlvLrliLbopobnm5YiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjEwOQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpIHdoaWxlICVzLiAgIgorbXNnc3RyICIlMyRzIOaXtuWGmeWFpeWdlyAlMSRsdSDvvIglMiRz77yJ5Ye66ZSZ44CCICAiCisKKyM6IGUyZnNjay9laGFuZGxlci5jOjExMgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGJsb2NrICVsdSAoJXMpLiAgIgorbXNnc3RyICLlhpnlnZcgJWx177yIJXPvvInlh7rplJnjgIIgICIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NTcKK21zZ2lkICJlbXB0eSBkaXJibG9ja3MiCittc2dzdHIgIuepuuebruW9leWdlyIKKworIzogZTJmc2NrL2VtcHR5ZGlyLmM6NjIKK21zZ2lkICJlbXB0eSBkaXIgbWFwIgorbXNnc3RyICLnqbpBQ0zmmKDlsIQiCisKKyM6IGUyZnNjay9lbXB0eWRpci5jOjk4CisjLCBjLWZvcm1hdAorbXNnaWQgIkVtcHR5IGRpcmVjdG9yeSBibG9jayAldSAoIyVkKSBpbiBpbm9kZSAldVxuIgorbXNnc3RyICLnqbrnm67lvZXlnZcgJXXvvIgjJWTvvInkuo4gaW5vZGUgJXUg5LitXG4iCisKKyM6IGUyZnNjay9leHRlbmQuYzoyMgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgZmlsZW5hbWUgbmJsb2NrcyBibG9ja3NpemVcbiIKK21zZ3N0ciAiJXPvvJolcyAg5paH5Lu25ZCNICDlnZfmlbAgIOWdl+Wkp+Wwj1xuIgorCisjOiBlMmZzY2svZXh0ZW5kLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgb2YgYmxvY2tzIVxuIgorbXNnc3RyICLpnZ7ms5XnmoTlnZfmlbDph4/vvIFcbiIKKworIzogZTJmc2NrL2V4dGVuZC5jOjUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGJsb2NrIGJ1ZmZlciAoc2l6ZT0lZClcbiIKK21zZ3N0ciAi5peg5rOV5Li65Z2X57yT5a2Y5YiG6YWN5YaF5a2Y77yI5aSn5bCPPSVk77yJXG4iCisKKyM6IGUyZnNjay9leHRlbnRzLmM6NDIKK21zZ2lkICJleHRlbnQgcmVidWlsZCBpbm9kZSBtYXAiCittc2dzdHIgImV4dGVudCDph43lu7ogaW5vZGUg5pig5bCEIgorCisjOiBlMmZzY2svZmx1c2hiLmM6MzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIGRpc2tcbiIKK21zZ3N0ciAi55So5rOV77yaJXMgIOejgeebmOWQjVxuIgorCisjOiBlMmZzY2svZmx1c2hiLmM6NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQkxLRkxTQlVGIGlvY3RsIG5vdCBzdXBwb3J0ZWQhICBDYW4ndCBmbHVzaCBidWZmZXJzLlxuIgorbXNnc3RyICLkuI3mlK/mjIHlr7lCTEtGTFNCVUbov5vooYwgaW9jdGwg6LCD55So77yBICDml6Dms5XliLfmlrDnvJPlrZjjgIJcbiIKKworIzogZTJmc2NrL2lzY2FuLmM6NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstRl0gWy1JIGlub2RlX2J1ZmZlcl9ibG9ja3NdIGRldmljZVxuIgorbXNnc3RyICLnlKjms5XvvJolcyBbLUZdIFstSSBpbm9kZee8k+WGsuWdl10g6K6+5aSHXG4iCisKKyM6IGUyZnNjay9pc2Nhbi5jOjgxIGUyZnNjay91bml4LmM6MTAzMworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIGZvciBmbHVzaGluZyIKK21zZ3N0ciAi5omT5byA5bm25Yi35pawICVzIOaXtiIKKworIzogZTJmc2NrL2lzY2FuLmM6ODYgZTJmc2NrL3VuaXguYzoxMDM5IHJlc2l6ZS9tYWluLmM6MzgyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBmbHVzaCAlcyIKK21zZ3N0ciAi5bCd6K+V5Yi35pawICVzIOaXtiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTEwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuICclcyciCittc2dzdHIgIuWwneivleaJk+W8gCDigJwlc+KAnSDml7YiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjExOSBlMmZzY2svc2NhbnRlc3QuYzoxMTQgbWlzYy9lMmltYWdlLmM6MTI5MworbXNnaWQgIndoaWxlIG9wZW5pbmcgaW5vZGUgc2NhbiIKK21zZ3N0ciAi6L+b6KGMaW5vZGXmiavmj4/ml7YiCisKKyM6IGUyZnNjay9pc2Nhbi5jOjEyNyBtaXNjL2UyaW1hZ2UuYzoxMzEyCittc2dpZCAid2hpbGUgZ2V0dGluZyBuZXh0IGlub2RlIgorbXNnc3RyICLojrflj5bkuIvkuIDkuKppbm9kZeaXtiIKKworIzogZTJmc2NrL2lzY2FuLmM6MTM2CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBzY2FubmVkLlxuIgorbXNnc3RyICLlt7Lmiavmj48gJXUg5LiqaW5vZGXjgIJcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo1OTMKK21zZ2lkICJyZWFkaW5nIGpvdXJuYWwgc3VwZXJibG9ja1xuIgorbXNnc3RyICLor7vlj5bml6Xlv5fotoXnuqflnZdcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IG5vIHZhbGlkIGpvdXJuYWwgc3VwZXJibG9jayBmb3VuZFxuIgorbXNnc3RyICIlc++8miDmsqHmnInlj5HnjrDml6Xlv5fotoXnuqflnZdcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo2NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGpvdXJuYWwgdG9vIHNob3J0XG4iCittc2dzdHIgIiVz77yaIOaXpeW/l+i/h+efrVxuIgorCisjOiBlMmZzY2svam91cm5hbC5jOjk2OCBtaXNjL2Z1c2UyZnMuYzozNzg2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiByZWNvdmVyaW5nIGpvdXJuYWxcbiIKK21zZ3N0ciAiJXPvvJrmraPlnKjkv67lpI3ml6Xlv5dcbiIKKworIzogZTJmc2NrL2pvdXJuYWwuYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdvbid0IGRvIGpvdXJuYWwgcmVjb3Zlcnkgd2hpbGUgcmVhZC1vbmx5XG4iCittc2dzdHIgIiVz77ya5L2/55So5Y+q6K+75qih5byP5pe25LiN5Lya6L+b6KGM5pel5b+X5L+u5aSNXG4iCisKKyM6IGUyZnNjay9qb3VybmFsLmM6OTk3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byByZS1vcGVuICVzIgorbXNnc3RyICLlsJ3or5Xph43mlrDmiZPlvIAgJXMg5pe2IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExMworbXNnaWQgImFleHRlbmRlZCBhdHRyaWJ1dGUiCittc2dzdHIgImHmianlsZXlsZ7mgKciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE0Cittc2dpZCAiQWVycm9yIGFsbG9jYXRpbmciCittc2dzdHIgIkHliIbphY3lh7rplJkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE1Cittc2dpZCAiYmJsb2NrIgorbXNnc3RyICJi5Z2XIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExNgorbXNnaWQgIkJiaXRtYXAiCittc2dzdHIgIkLkvY3lm74iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE3Cittc2dpZCAiY2NvbXByZXNzIgorbXNnc3RyICJj5Y6L57ypIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjExOAorbXNnaWQgIkNjb25mbGljdHMgd2l0aCBzb21lIG90aGVyIGZzIEBiIgorbXNnc3RyICJD5LiO5YW25LuW5paH5Lu257O757ufQGLlhrLnqoEiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTE5Cittc2dpZCAiZGRpcmVjdG9yeSIKK21zZ3N0ciAiZOebruW9lSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjAKK21zZ2lkICJEZGVsZXRlZCIKK21zZ3N0ciAiROWIoOmZpCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjEKK21zZ2lkICJlZW50cnkiCittc2dzdHIgImXpobkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTIyCittc2dpZCAiRUBlICclRG4nIGluICVwICglaSkiCittc2dzdHIgIkUlcO+8iCVp77yJ5Lit55qEQGUg4oCcJURu4oCdIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyMworbXNnaWQgImZmaWxlc3lzdGVtIgorbXNnc3RyICJm5paH5Lu257O757ufIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNAorbXNnaWQgIkZmb3IgQGkgJWkgKCVRKSBpcyIKK21zZ3N0ciAiRuWFs+S6jkBpICVpIO+8iCVR77yJ5Li6IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEyNQorbXNnaWQgImdncm91cCIKK21zZ3N0ciAiZ+e7hCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMjYKK21zZ2lkICJoSFRSRUUgQGQgQGkiCittc2dzdHIgImhIVFJFRUBkQGkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI3Cittc2dpZCAiaWlub2RlIgorbXNnc3RyICJpaW5vZGUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI4Cittc2dpZCAiSWlsbGVnYWwiCittc2dzdHIgIknpnZ7ms5XnmoQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTI5Cittc2dpZCAiampvdXJuYWwiCittc2dzdHIgImrml6Xlv5ciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMwCittc2dpZCAibGxvc3QrZm91bmQiCittc2dzdHIgImxsb3N0K2ZvdW5kIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzMQorbXNnaWQgIkxpcyBhIGxpbmsiCittc2dzdHIgIkzmmK/kuIDkuKrpk77mjqUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMyCittc2dpZCAibW11bHRpcGx5LWNsYWltZWQiCittc2dzdHIgIm3ph43lpI3lvJXnlKjnmoQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTMzCittc2dpZCAibmludmFsaWQiCittc2dzdHIgIm7ml6DmlYjnmoQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM0Cittc2dpZCAib29ycGhhbmVkIgorbXNnc3RyICJv5a2k56uL55qEIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNQorbXNnaWQgInBwcm9ibGVtIGluIgorbXNnc3RyICJw6Zeu6aKY5Ye65LqOIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzNgorbXNnaWQgInFxdW90YSIKK21zZ3N0ciAicemFjeminSIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxMzcKK21zZ2lkICJycm9vdCBAaSIKK21zZ3N0ciAicuaguUBpIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjEzOAorbXNnaWQgInNzaG91bGQgYmUiCittc2dzdHIgInPlupTkuLoiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTM5Cittc2dpZCAiU3N1cGVyQGIiCittc2dzdHIgIlPotoXnuqdAYiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDAKK21zZ2lkICJ1dW5hdHRhY2hlZCIKK21zZ3N0ciAideeLrOeri+eahCIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNDEKK21zZ2lkICJ2ZGV2aWNlIgorbXNnc3RyICJ26K6+5aSHIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE0MgorbXNnaWQgInhleHRlbnQiCittc2dzdHIgInhleHRlbnQiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTQzCittc2dpZCAienplcm8tbGVuZ3RoIgorbXNnc3RyICJ66Zu26ZW/5bqmIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NAorbXNnaWQgIjxUaGUgTlVMTCBpbm9kZT4iCittc2dzdHIgIjznqbrnmoQgaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NQorbXNnaWQgIjxUaGUgYmFkIGJsb2NrcyBpbm9kZT4iCittc2dzdHIgIjzlnY/lnZcgaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE1NworbXNnaWQgIjxUaGUgdXNlciBxdW90YSBpbm9kZT4iCittc2dzdHIgIjznlKjmiLfphY3pop1pbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU4Cittc2dpZCAiPFRoZSBncm91cCBxdW90YSBpbm9kZT4iCittc2dzdHIgIjznu4TphY3pop1pbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTU5Cittc2dpZCAiPFRoZSBib290IGxvYWRlciBpbm9kZT4iCittc2dzdHIgIjzlkK/liqjlmaggaW5vZGU+IgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjE2MAorbXNnaWQgIjxUaGUgdW5kZWxldGUgZGlyZWN0b3J5IGlub2RlPiIKK21zZ3N0ciAiPOacquWIoOmZpOeahOebruW9lSBpbm9kZT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTYxCittc2dpZCAiPFRoZSBncm91cCBkZXNjcmlwdG9yIGlub2RlPiIKK21zZ3N0ciAiPOe7hOaPj+i/sOespmlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjIKK21zZ2lkICI8VGhlIGpvdXJuYWwgaW5vZGU+IgorbXNnc3RyICI85pel5b+XIGlub2RlPiIKKworIzogZTJmc2NrL21lc3NhZ2UuYzoxNjMKK21zZ2lkICI8UmVzZXJ2ZWQgaW5vZGUgOT4iCittc2dzdHIgIjzkv53nlZnnmoQgaW5vZGUgOT4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MTY0Cittc2dpZCAiPFJlc2VydmVkIGlub2RlIDEwPiIKK21zZ3N0ciAiPOS/neeVmeeahCBpbm9kZSAxMD4iCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzMzCittc2dpZCAicmVndWxhciBmaWxlIgorbXNnc3RyICLkuIDoiKzmlofku7YiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM1Cittc2dpZCAiZGlyZWN0b3J5IgorbXNnc3RyICLmlofku7blpLkiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzM3Cittc2dpZCAiY2hhcmFjdGVyIGRldmljZSIKK21zZ3N0ciAi5a2X56ym6K6+5aSHIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjMzOQorbXNnaWQgImJsb2NrIGRldmljZSIKK21zZ3N0ciAi5Z2X6K6+5aSHIgorCisjOiBlMmZzY2svbWVzc2FnZS5jOjM0MQorbXNnaWQgIm5hbWVkIHBpcGUiCittc2dzdHIgIuWRveWQjeeuoemBkyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDMKK21zZ2lkICJzeW1ib2xpYyBsaW5rIgorbXNnc3RyICLnrKblj7fpk77mjqUiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6MzQ1IG1pc2MvdXVpZGQuYzoxNjIKK21zZ2lkICJzb2NrZXQiCittc2dzdHIgIuWll+aOpeWtlyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzozNDcKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5rbm93biBmaWxlIHR5cGUgd2l0aCBtb2RlIDAlbyIKK21zZ3N0ciAi5qih5byP5Li6IDAlbyDnmoTmnKrnn6Xmlofku7bnsbvlnosiCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDIyCittc2dpZCAiaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIumTvuaOpeWdlyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjQKK21zZ2lkICJkb3VibGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIuS6jOasoemTvuaOpeWdlyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjYKK21zZ2lkICJ0cmlwbGUgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIuS4ieasoemTvuaOpeWdlyIKKworIzogZTJmc2NrL21lc3NhZ2UuYzo0MjgKK21zZ2lkICJ0cmFuc2xhdG9yIGJsb2NrIgorbXNnc3RyICLnv7vor5HlnZciCisKKyM6IGUyZnNjay9tZXNzYWdlLmM6NDMwCittc2dpZCAiYmxvY2sgIyIKK21zZ3N0ciAi5Z2XICMiCisKKyM6IGUyZnNjay9wYXNzMWIuYzoyMjIKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGlub2RlIG1hcCIKK21zZ3N0ciAi6YeN5Y+g5Z2X5pig5bCEIgorCisjOiBlMmZzY2svcGFzczFiLmM6NjQ1IGUyZnNjay9wYXNzMWIuYzo3OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNhbid0IGZpbmQgZHVwX2JsayBmb3IgJWxsdVxuIgorbXNnc3RyICLlhoXpg6jplJnor6/vvJrml6Dms5Xmib7liLAgJWxsdSDnmoRkdXBfYmxr5L+h5oGvXG4iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MDMKK21zZ2lkICJyZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2siCittc2dzdHIgIuS7jmNsb25lX2ZpbGVfYmxvY2vov5Tlm54iCisKKyM6IGUyZnNjay9wYXNzMWIuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW50ZXJuYWwgZXJyb3I6IGNvdWxkbid0IGxvb2t1cCBFQSBibG9jayByZWNvcmQgZm9yICVsbHUiCittc2dzdHIgIuWGhemDqOmUmeivr++8muaXoOazleafpeaJviAlbGx1IOeahEVB5Z2X6K6w5b2VIgorCisjOiBlMmZzY2svcGFzczFiLmM6OTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludGVybmFsIGVycm9yOiBjb3VsZG4ndCBsb29rdXAgRUEgaW5vZGUgcmVjb3JkIGZvciAldSIKK21zZ3N0ciAi5YaF6YOo6ZSZ6K+v77ya5peg5rOV5p+l5om+ICV1IOeahEVBIGlub2Rl5Z2X6K6w5b2VIgorCisjOiBlMmZzY2svcGFzczEuYzo2NjYgZTJmc2NrL3Bhc3MyLmM6OTcwCittc2dpZCAicmVhZGluZyBkaXJlY3RvcnkgYmxvY2siCittc2dzdHIgIuato+WcqOivu+WPluebruW9leWdlyIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTExMQorbXNnaWQgImluLXVzZSBpbm9kZSBtYXAiCittc2dzdHIgIuS9v+eUqOS4reeahGlub2Rl5pig5bCEIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTIyCittc2dpZCAiZGlyZWN0b3J5IGlub2RlIG1hcCIKK21zZ3N0ciAi55uu5b2VaW5vZGXmmKDlsIQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjExMzIKK21zZ2lkICJyZWd1bGFyIGZpbGUgaW5vZGUgbWFwIgorbXNnc3RyICLmma7pgJrmlofku7Zpbm9kZeaYoOWwhCIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTE0MSBtaXNjL2UyaW1hZ2UuYzoxMjY4Cittc2dpZCAiaW4tdXNlIGJsb2NrIG1hcCIKK21zZ3N0ciAi5L2/55So5Lit55qE5Z2X5pig5bCEIgorCisjOiBlMmZzY2svcGFzczEuYzoxMTUwCittc2dpZCAibWV0YWRhdGEgYmxvY2sgbWFwIgorbXNnc3RyICLlhYPmlbDmja7lnZfmmKDlsIQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyMDkKK21zZ2lkICJvcGVuaW5nIGlub2RlIHNjYW4iCittc2dzdHIgIuW8gOWniyBpbm9kZSDmiavmj48iCisKKyM6IGUyZnNjay9wYXNzMS5jOjEyNDcKK21zZ2lkICJnZXR0aW5nIG5leHQgaW5vZGUgZnJvbSBzY2FuIgorbXNnc3RyICLku47miavmj4/ov5vluqbkuK3ojrflj5bkuIvkuIDkuKogaW5vZGUiCisKKyM6IGUyZnNjay9wYXNzMS5jOjE5MzMKK21zZ2lkICJQYXNzIDEiCittc2dzdHIgIuesrCAxIOatpSIKKworIzogZTJmc2NrL3Bhc3MxLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJyZWFkaW5nIGluZGlyZWN0IGJsb2NrcyBvZiBpbm9kZSAldSIKK21zZ3N0ciAi6K+75Y+WaW5vZGXkuLogJXUg55qE6ZO+5o6l5Z2X5pe2IgorCisjOiBlMmZzY2svcGFzczEuYzoyMDQ0Cittc2dpZCAiYmFkIGlub2RlIG1hcCIKK21zZ3N0ciAi5Z2P5Z2X5pig5bCEIgorCisjOiBlMmZzY2svcGFzczEuYzoyMDg0Cittc2dpZCAiaW5vZGUgaW4gYmFkIGJsb2NrIG1hcCIKK21zZ3N0ciAi5pu05paw5Z2P5Z2X5pig5bCE5pe2IgorCisjOiBlMmZzY2svcGFzczEuYzoyMTA0Cittc2dpZCAiaW1hZ2ljIGlub2RlIG1hcCIKK21zZ3N0ciAiaW5vZGXnmoRpbWFnaWPmmKDlsIQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjIxMzEKK21zZ2lkICJtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcCIKK21zZ3N0ciAi6YeN5Y+g5Z2X5pig5bCEIgorCisjOiBlMmZzY2svcGFzczEuYzoyMjQ1Cittc2dpZCAiZXh0IGF0dHIgYmxvY2sgbWFwIgorbXNnc3RyICLmianlsZXlsZ7mgKflnZfmmKDlsIQiCisKKyM6IGUyZnNjay9wYXNzMS5jOjM0MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTZsdSglYyk6IGV4cGVjdGluZyAlNmx1IGdvdCBwaHlzICU2bHUgKGJsa2NudCAlbGxkKVxuIgorbXNnc3RyICIlNmx177yIJWPvvInvvJrlupTkuLogJTZsdSDkvYblrp7pmYXkuLogJTZsdSDvvIjlnZcgJWxsZO+8iVxuIgorCisjOiBlMmZzY2svcGFzczEuYzozODI3Cittc2dpZCAiYmxvY2sgYml0bWFwIgorbXNnc3RyICLlnZfkvY3lm74iCisKKyM6IGUyZnNjay9wYXNzMS5jOjM4MzMKK21zZ2lkICJpbm9kZSBiaXRtYXAiCittc2dzdHIgImlub2RlIOS9jeWbviIKKworIzogZTJmc2NrL3Bhc3MxLmM6MzgzOQorbXNnaWQgImlub2RlIHRhYmxlIgorbXNnc3RyICJpbm9kZeihqCIKKworIzogZTJmc2NrL3Bhc3MyLmM6Mjg3Cittc2dpZCAiUGFzcyAyIgorbXNnc3RyICLnrKwgMiDmraUiCisKKyM6IGUyZnNjay9wYXNzMi5jOjEwNDIgZTJmc2NrL3Bhc3MyLmM6MTIwNworbXNnaWQgIkNhbiBub3QgY29udGludWUuIgorbXNnc3RyICLml6Dms5Xnu6fnu63jgIIiCisKKyM6IGUyZnNjay9wYXNzMy5jOjc3Cittc2dpZCAiaW5vZGUgZG9uZSBiaXRtYXAiCittc2dzdHIgIuW3suWujOaIkOeahGlub2Rl5L2N5Zu+IgorCisjOiBlMmZzY2svcGFzczMuYzo4NgorbXNnaWQgIlBlYWsgbWVtb3J5IgorbXNnc3RyICLlhoXlrZjls7DlgLwiCisKKyM6IGUyZnNjay9wYXNzMy5jOjE0OQorbXNnaWQgIlBhc3MgMyIKK21zZ3N0ciAi56ysIDMg5q2lIgorCisjOiBlMmZzY2svcGFzczMuYzozNDQKK21zZ2lkICJpbm9kZSBsb29wIGRldGVjdGlvbiBiaXRtYXAiCittc2dzdHIgIuW+queOr2lub2Rl5qOA5rWL5L2N5Zu+IgorCisjOiBlMmZzY2svcGFzczQuYzoyMDcKK21zZ2lkICJQYXNzIDQiCittc2dzdHIgIuesrCA0IOatpSIKKworIzogZTJmc2NrL3Bhc3M1LmM6ODEKK21zZ2lkICJQYXNzIDUiCittc2dzdHIgIuesrCA1IOatpSIKKworIzogZTJmc2NrL3Bhc3M1LmM6MTA0Cittc2dpZCAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3VtOiBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciIKK21zZ3N0ciAiY2hlY2tfaW5vZGVfYml0bWFwX2NoZWNrc3Vt77ya5YaF5a2Y5YiG6YWN5Ye66ZSZIgorCisjOiBlMmZzY2svcGFzczUuYzoxNTgKK21zZ2lkICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW06IE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIgorbXNnc3RyICJjaGVja19ibG9ja19iaXRtYXBfY2hlY2tzdW3vvJrlhoXlrZjliIbphY3lh7rplJkiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTEKK21zZ2lkICIobm8gcHJvbXB0KSIKK21zZ3N0ciAi77yI5rKh5pyJ5o+Q56S677yJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyCittc2dpZCAiRml4IgorbXNnc3RyICLlpITnkIYiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMKK21zZ2lkICJDbGVhciIKK21zZ3N0ciAi5riF6ZmkIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0Cittc2dpZCAiUmVsb2NhdGUiCittc2dzdHIgIumHjeWumuS9jSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NQorbXNnaWQgIkFsbG9jYXRlIgorbXNnc3RyICLliIbphY0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTYKK21zZ2lkICJFeHBhbmQiCittc2dzdHIgIuaJqeWFhSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1NworbXNnaWQgIkNvbm5lY3QgdG8gL2xvc3QrZm91bmQiCittc2dzdHIgIui/nuaOpeWIsCAvbG9zdCtmb3VuZCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo1OAorbXNnaWQgIkNyZWF0ZSIKK21zZ3N0ciAi5Yib5bu6IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjU5Cittc2dpZCAiU2FsdmFnZSIKK21zZ3N0ciAi5L+u5aSNIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwCittc2dpZCAiVHJ1bmNhdGUiCittc2dzdHIgIuaIquaWrSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MQorbXNnaWQgIkNsZWFyIGlub2RlIgorbXNnc3RyICLmuIXpmaRpbm9kZSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2MgorbXNnaWQgIkFib3J0IgorbXNnc3RyICLkuK3mlq0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjMKK21zZ2lkICJTcGxpdCIKK21zZ3N0ciAi5YiG5YmyIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0Cittc2dpZCAiQ29udGludWUiCittc2dzdHIgIue7p+e7rSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2NQorbXNnaWQgIkNsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzIgorbXNnc3RyICLlhYvpmobph43lj6DlnZciCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NjYKK21zZ2lkICJEZWxldGUgZmlsZSIKK21zZ3N0ciAi5Yig6Zmk5paH5Lu2IgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY3Cittc2dpZCAiU3VwcHJlc3MgbWVzc2FnZXMiCittc2dzdHIgIuS4jeaYvuekuua2iOaBryIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo2OAorbXNnaWQgIlVubGluayIKK21zZ3N0ciAi6Kej6Zmk6ZO+5o6lIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjY5Cittc2dpZCAiQ2xlYXIgSFRyZWUgaW5kZXgiCittc2dzdHIgIua4hemZpEhUcmVl57Si5byVIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwCittc2dpZCAiUmVjcmVhdGUiCittc2dzdHIgIumHjeW7uiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo3OQorbXNnaWQgIihOT05FKSIKK21zZ3N0ciAi77yI56m677yJIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgwCittc2dpZCAiRklYRUQiCittc2dzdHIgIuW3suWkhOeQhiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MQorbXNnaWQgIkNMRUFSRUQiCittc2dzdHIgIuW3sua4hemZpCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4MgorbXNnaWQgIlJFTE9DQVRFRCIKK21zZ3N0ciAi5bey6YeN5a6a5L2NIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzCittc2dpZCAiQUxMT0NBVEVEIgorbXNnc3RyICLlt7LliIbphY0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQKK21zZ2lkICJFWFBBTkRFRCIKK21zZ3N0ciAi5bey5omp5YWFIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjg1Cittc2dpZCAiUkVDT05ORUNURUQiCittc2dzdHIgIuW3sumHjeaWsOi/nuaOpSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NgorbXNnaWQgIkNSRUFURUQiCittc2dzdHIgIuW3suWIm+W7uiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4NworbXNnaWQgIlNBTFZBR0VEIgorbXNnc3RyICLlt7Lkv67lpI0iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODgKK21zZ2lkICJUUlVOQ0FURUQiCittc2dzdHIgIuaIquaWrSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo4OQorbXNnaWQgIklOT0RFIENMRUFSRUQiCittc2dzdHIgIklOT0RFIOW3sua4hemZpCIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MAorbXNnaWQgIkFCT1JURUQiCittc2dzdHIgIuW3suS4reaWrSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5MQorbXNnaWQgIlNQTElUIgorbXNnc3RyICLliIblibIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIKK21zZ2lkICJDT05USU5VSU5HIgorbXNnc3RyICLnu6fnu60iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMKK21zZ2lkICJNVUxUSVBMWS1DTEFJTUVEIEJMT0NLUyBDTE9ORUQiCittc2dzdHIgIumHjeWPoOWdl+W3suWFi+mahiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NAorbXNnaWQgIkZJTEUgREVMRVRFRCIKK21zZ3N0ciAi5paH5Lu25bey5Yig6ZmkIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1Cittc2dpZCAiU1VQUFJFU1NFRCIKK21zZ3N0ciAi56aB5q2iIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2Cittc2dpZCAiVU5MSU5LRUQiCittc2dzdHIgIuW3suino+mZpOmTvuaOpSIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo5NworbXNnaWQgIkhUUkVFIElOREVYIENMRUFSRUQiCittc2dzdHIgIkhUcmVl57Si5byV5bey5riF6ZmkIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4Cittc2dpZCAiV0lMTCBSRUNSRUFURSIKK21zZ3N0ciAi5bCG5Lya6YeN5bu6IgorCisjLiBALWV4cGFuZGVkOiBibG9jayBiaXRtYXAgZm9yIGdyb3VwICVnIGlzIG5vdCBpbiBncm91cC4gIChibG9jayAlYilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTAKK21zZ2lkICJAYiBAQiBmb3IgQGcgJWcgaXMgbm90IGluIEBnLiAgKEBiICViKVxuIgorbXNnc3RyICJAZyAlZyDnmoRAYkBC5bm25LiN5ZyoIEBnIOS4reOAgu+8iEBiICVi77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGJpdG1hcCBmb3IgZ3JvdXAgJWcgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNAorbXNnaWQgIkBpIEBCIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCittc2dzdHIgIkBnICVnIOeahEBpQEIg5bm25LiN5ZyoIEBnIOS4reOAgu+8iEBiICVi77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIHRhYmxlIGZvciBncm91cCAlZyBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgJWIpXG4KKyMuIEAtZXhwYW5kZWQ6IFdBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5Cittc2dpZCAiIgorIkBpIHRhYmxlIGZvciBAZyAlZyBpcyBub3QgaW4gQGcuICAoQGIgJWIpXG4iCisiV0FSTklORzogU0VWRVJFIERBVEEgTE9TUyBQT1NTSUJMRS5cbiIKK21zZ3N0ciAiIgorIkBnICVnIOeahEBp6KGo5bm25LiN5ZyoIEBnIOS4reOAgu+8iEBiICVi77yJXG4iCisi6K2m5ZGK77ya6L+Z5Y+v6IO95a+86Ie05Lil6YeN55qE5pWw5o2u5Lii5aSx44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0XG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbgorIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2tcbgorIy4gQC1leHBhbmRlZDogaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazpcbgorIy4gQC1leHBhbmRlZDogICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6ICBvclxuCisjLiBALWV4cGFuZGVkOiAgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+XG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNQorbXNnaWQgIiIKKyJcbiIKKyJUaGUgQFMgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NFxuIgorIkBmLiAgSWYgdGhlIEB2IGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDRcbiIKKyJAZiAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIEBTXG4iCisiaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgQFM6XG4iCisiICAgIGUyZnNjayAtYiA4MTkzIDxAdj5cbiIKKyIgb3JcbiIKKyIgICAgZTJmc2NrIC1iIDMyNzY4IDxAdj5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIkBT5peg5rOV6KKr6K+75Y+W77yM5oiW5a6D5pyq6IO95q2j56Gu5Zyw5o+P6L+w5LiA5Liq5pyJ5pWI55qEZXh0Mi9leHQzL2V4dDRAZuOAglxuIgorIuWmguaenEB25pyJ5pWI5bm256Gu5a6e5Li6ZXh0Mi9leHQzL2V4dDRAZiDvvIjogIzpnZ5zd2Fw5oiWdWZz562J5qC85byP77yJ77yMXG4iCisi6L+Z6K+05piOQFPlt7Lnu4/mjZ/lnY/vvIzkvaDlj6/og73pnIDopoHmjIflrprlpIfpgIlAU+adpei/kOihjGUyZnNja++8mlxuIgorIiAgICBlMmZzY2sgLWIgODE5MyA8QHY+XG4iCisiIOaIllxuIgorIiAgICBlMmZzY2sgLWIgMzI3NjggPEB2PlxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBUaGUgZmlsZXN5c3RlbSBzaXplIChhY2NvcmRpbmcgdG8gdGhlIHN1cGVyYmxvY2spIGlzICViIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBUaGUgcGh5c2ljYWwgc2l6ZSBvZiB0aGUgZGV2aWNlIGlzICVjIGJsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBFaXRoZXIgdGhlIHN1cGVyYmxvY2sgb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBpcyBsaWtlbHkgdG8gYmUgY29ycnVwdCFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzYKK21zZ2lkICIiCisiVGhlIEBmIHNpemUgKGFjY29yZGluZyB0byB0aGUgQFMpIGlzICViIEBic1xuIgorIlRoZSBwaHlzaWNhbCBzaXplIG9mIHRoZSBAdiBpcyAlYyBAYnNcbiIKKyJFaXRoZXIgdGhlIEBTIG9yIHRoZSBwYXJ0aXRpb24gdGFibGUgaXMgbGlrZWx5IHRvIGJlIGNvcnJ1cHQhXG4iCittc2dzdHIgIiIKKyLmoLnmja5AU++8jEBm55qE5aSn5bCP5bqU5Li6ICViIEBic1xuIgorIuS9hkB255qE5a6e6ZmF5aSn5bCP5pivICVjIEBic1xuIgorIkBT5oiW5YiG5Yy66KGo5Y+v6IO95bey57uP5o2f5Z2P77yBXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgYmxvY2tfc2l6ZSA9ICViLCBmcmFnc2l6ZSA9ICVjLlxuCisjLiBALWV4cGFuZGVkOiBUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4KKyMuIEAtZXhwYW5kZWQ6IGZyb20gdGhlIGJsb2NrIHNpemUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzCittc2dpZCAiIgorIkBTIEBiX3NpemUgPSAlYiwgZnJhZ3NpemUgPSAlYy5cbiIKKyJUaGlzIHZlcnNpb24gb2YgZTJmc2NrIGRvZXMgbm90IHN1cHBvcnQgZnJhZ21lbnQgc2l6ZXMgZGlmZmVyZW50XG4iCisiZnJvbSB0aGUgQGIgc2l6ZS5cbiIKK21zZ3N0ciAiIgorIkBTQGLlpKflsI8gPSAlYu+8jOeijueJh+Wkp+WwjyA9ICVj44CCXG4iCisi5q2k54mI5pys55qEZTJmc2Nr5LiN5YWB6K6456KO54mH5aSn5bCP5LiOXG4iCisiQGLlpKflsI/kuI3lkIzjgIJcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBibG9ja3NfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTAKK21zZ2lkICJAUyBAYnNfcGVyX2dyb3VwID0gJWIsIHNob3VsZCBoYXZlIGJlZW4gJWNcbiIKK21zZ3N0ciAi5q+P57uE55qEQFNAYuaVsCA9ICVi77yM5bqU5b2T5Li6ICVj44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgZmlyc3RfZGF0YV9ibG9jayA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU1Cittc2dpZCAiQFMgZmlyc3RfZGF0YV9AYiA9ICViLCBzaG91bGQgaGF2ZSBiZWVuICVjXG4iCittc2dzdHIgIkBT55qE56ys5LiA5Liq5pWw5o2u5Z2XID0gJWLvvIzlupTlvZPkuLogJWNcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYwCittc2dpZCAiIgorIkBmIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLlxuIgorIlxuIgorbXNnc3RyICIiCisiQGbmsqHmnIlVVUlE77yb5q2j5Zyo5Yib5bu65paw55qEVVVJROOAglxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTm90ZTogaWYgc2V2ZXJhbCBpbm9kZSBvciBibG9jayBiaXRtYXAgYmxvY2tzIG9yIHBhcnRcbiIKKyJvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5XG4iCisicnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iICVTJyBvcHRpb24gZmlyc3QuICBUaGUgcHJvYmxlbVxuIgorIm1heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmRcbiIKKyJ0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuazqOaEj++8muWmguaenOacieaVsOS4qmlub2Rl44CB5Z2X5L2N5Zu+5oiWaW5vZGXooahcbiIKKyLpnIDopoHph43lrprkvY3vvIzkvaDlj6/ku6XnlKjigJwtYiAlU+KAnemAiemhuei/kOihjFxuIgorImUyZnNja+OAguWmguaenOmXrumimOWHuuWcqOe7hOaPj+i/sOespueahOS4u+Wdl++8jFxuIgorIumCo+S5iOWPr+S7peWwneivleWug+S7rOeahOWkh+S7veWdl+OAglxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3JydXB0aW9uIGZvdW5kIGluIHN1cGVyYmxvY2suICAoJXMgPSAlTikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc0Cittc2dpZCAiQ29ycnVwdGlvbiBmb3VuZCBpbiBAUy4gICglcyA9ICVOKS5cbiIKK21zZ3N0ciAi5ZyoQFPkuK3lj5HnjrDplJnor6/jgILvvIglcyA9ICVO77yJ44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIGRldGVybWluaW5nIHNpemUgb2YgdGhlIHBoeXNpY2FsIGRldmljZTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgZGV0ZXJtaW5pbmcgc2l6ZSBvZiB0aGUgcGh5c2ljYWwgQHY6ICVtXG4iCittc2dzdHIgIuWGs+WumueJqeeQhkB255qE5aSn5bCP5Ye66ZSZICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlIGNvdW50IGluIHN1cGVyYmxvY2sgaXMgJWksIHNob3VsZCBiZSAlai5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQKK21zZ2lkICJAaSBjb3VudCBpbiBAUyBpcyAlaSwgQHMgJWouXG4iCittc2dzdHIgIkBT5Lit55qEQGnkuKrmlbDkuLogJWnvvIxAcyAlauOAglxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4OAorbXNnaWQgIlRoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuXG4iCittc2dzdHIgIkh1cmTlhoXmoLjkuI3mlK/mjIHmlofku7bnsbvlnotcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSAlaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTkzCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhhcyBhbiBAbiBAaiAoQGkgJWkpLlxuIgorbXNnc3RyICJAU+WQq+acieS4gOS4qkBuQGrvvIhAaSAlae+8ieOAglxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBtdWx0aXBsZSBmaWxlc3lzdGVtIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk4Cittc2dpZCAiRXh0ZXJuYWwgQGogaGFzIG11bHRpcGxlIEBmIHVzZXJzICh1bnN1cHBvcnRlZCkuXG4iCittc2dzdHIgIuWklumDqEBq5ZCr5pyJ5aSa5LiqQGbnlKjmiLfvvIjkuI3mlK/mjIHmraTnibnmgKfvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogQ2FuJ3QgZmluZCBleHRlcm5hbCBqb3VybmFsXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAzCittc2dpZCAiQ2FuJ3QgZmluZCBleHRlcm5hbCBAalxuIgorbXNnc3RyICLml6Dms5Xmib7liLDlpJbpg6hAalxuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGhhcyBiYWQgc3VwZXJibG9ja1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIwOAorbXNnaWQgIkV4dGVybmFsIEBqIGhhcyBiYWQgQFNcbiIKK21zZ3N0ciAi5aSW6YOoQGrmnInlnY9AU1xuIgorCisjLiBALWV4cGFuZGVkOiBFeHRlcm5hbCBqb3VybmFsIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBmaWxlc3lzdGVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjEzCittc2dpZCAiRXh0ZXJuYWwgQGogZG9lcyBub3Qgc3VwcG9ydCB0aGlzIEBmXG4iCittc2dzdHIgIuWklumDqEBq5LiN5pSv5oyB5q2kQGZcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4KKyMuIEAtZXhwYW5kZWQ6IEl0IGlzIGxpa2VseSB0aGF0IHlvdXIgY29weSBvZiBlMmZzY2sgaXMgb2xkIGFuZC9vciBkb2Vzbid0IHN1cHBvcnQgdGhpcyBqb3VybmFsIAorIy4gQC1leHBhbmRlZDogZm9ybWF0LlxuCisjLiBALWV4cGFuZGVkOiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMTgKK21zZ2lkICIiCisiQGYgQGogQFMgaXMgdW5rbm93biB0eXBlICVOICh1bnN1cHBvcnRlZCkuXG4iCisiSXQgaXMgbGlrZWx5IHRoYXQgeW91ciBjb3B5IG9mIGUyZnNjayBpcyBvbGQgYW5kL29yIGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEBqICIKKyJmb3JtYXQuXG4iCisiSXQgaXMgYWxzbyBwb3NzaWJsZSB0aGUgQGogQFMgaXMgY29ycnVwdC5cbiIKK21zZ3N0ciAiIgorIkBmQGpAU+S4uuacquefpeexu+WeiyAlTu+8iOS4jeaUr+aMgeatpOeJueaAp++8ieOAglxuIgorIuWPr+iDveS9oOeahGUyZnNja+eJiOacrOWkquS9ju+8jOS4jeaUr+aMgei/meenjUBq55qE5qC85byP44CCXG4iCisi5Lmf5pyJ5Y+v6IO9QGpAU+W3sue7j+aNn+Wdj+OAglxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMjYKK21zZ2lkICJAaiBAUyBpcyBjb3JydXB0LlxuIgorbXNnc3RyICJAakBT6KKr5o2f5Z2P44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjIzMQorbXNnaWQgIkBTIGhhc19AaiBmbGFnIGlzIGNsZWFyLCBidXQgYSBAaiBpcyBwcmVzZW50LlxuIgorbXNnc3RyICJAU+S4jeWFt+aciWhhc19qb3VybmFs5qCH5b+X77yM5L2G5Y+R546w5LqGQGrjgIJcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIGpvdXJuYWwgaXMgcHJlc2VudC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMzYKK21zZ2lkICJAUyBuZWVkc19yZWNvdmVyeSBmbGFnIGlzIHNldCwgYnV0IG5vIEBqIGlzIHByZXNlbnQuXG4iCittc2dzdHIgIkBT6KKr6K6+572u5LqGbmVlZHNfcmVjb3ZlcnnmoIflv5fvvIzkvYbmib7kuI3liLDnm7jlupTnmoRAauOAglxuIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBqb3VybmFsIGhhcyBkYXRhLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0MQorbXNnaWQgIkBTIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgY2xlYXIsIGJ1dCBAaiBoYXMgZGF0YS5cbiIKK21zZ3N0ciAiQFPkuI3lhbfmnInnmoTmgaLlpI3moIflv5fvvIznhLbogIzlnKhAauS4reaJvuWIsOS6huaBouWkjeaVsOaNruOAglxuIgorCisjLiBALWV4cGFuZGVkOiBDbGVhciBqb3VybmFsCisjOiBlMmZzY2svcHJvYmxlbS5jOjI0NgorbXNnaWQgIkNsZWFyIEBqIgorbXNnc3RyICLmuIXpmaRAaiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBoYXMgZmVhdHVyZSBmbGFnKHMpIHNldCwgYnV0IGlzIGEgcmV2aXNpb24gMCBmaWxlc3lzdGVtLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjI1MSBlMmZzY2svcHJvYmxlbS5jOjc0NAorbXNnaWQgIkBmIGhhcyBmZWF0dXJlIGZsYWcocykgc2V0LCBidXQgaXMgYSByZXZpc2lvbiAwIEBmLiAgIgorbXNnc3RyICJAZuiiq+iuvue9ruS6hueJueaAp+agh+W/l++8jOS9hueJueaAp+eJiOacrOWPt+S4ujDjgIIgICIKKworIy4gQC1leHBhbmRlZDogJXMgb3JwaGFuZWQgaW5vZGUgJWkgKHVpZD0lSXUsIGdpZD0lSWcsIG1vZGU9JUltLCBzaXplPSVJcylcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyNTYKK21zZ2lkICIlcyBAbyBAaSAlaSAodWlkPSVJdSwgZ2lkPSVJZywgbW9kZT0lSW0sIHNpemU9JUlzKVxuIgorbXNnc3RyICJAc0BvQGkgJWnvvIh1aWQ9JWx177yMZ2lkPSVsZ++8jG1vZGU9JWxt77yMc2l6ZT0lbHPvvIlcbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCAlQiAoJWIpIGZvdW5kIGluIG9ycGhhbmVkIGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI2MQorbXNnaWQgIkBJICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkBvQGkgJWkg5Lit5Y+R546wIEBJICVC77yIJWLvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gb3JwaGFuZWQgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjY2Cittc2dpZCAiQWxyZWFkeSBjbGVhcmVkICVCICglYikgZm91bmQgaW4gQG8gQGkgJWkuXG4iCittc2dzdHIgIkBvQGkgJWkg5Lit5Y+R546w5bey5riF6Zmk55qEICVC77yIJWLvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBvcnBoYW5lZCBpbm9kZSAlaSBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAbyBAaSAlaSBpbiBAUy5cbiIKK21zZ3N0ciAiQFPkuK3mnIlASUBvQGkgJWnjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaWxsZWdhbCBpbm9kZSAlaSBpbiBvcnBoYW5lZCBpbm9kZSBsaXN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI3NgorIywgYy1mb3JtYXQKK21zZ2lkICJASSBAaSAlaSBpbiBAbyBAaSBsaXN0LlxuIgorbXNnc3RyICJAb0Bp5Lit5Y+R546wQElAaSAlaeOAglxuIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIHN1cGVyYmxvY2sgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MjgxCittc2dpZCAiQGogQFMgaGFzIGFuIHVua25vd24gcmVhZC1vbmx5IGZlYXR1cmUgZmxhZyBzZXQuXG4iCittc2dzdHIgIkBqQFPooqvorr7nva7kuobmnKrnn6XnmoTlj6ror7vlsZ7mgKfmoIfnrb7jgIJcbiIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBzdXBlcmJsb2NrIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI4NgorbXNnaWQgIkBqIEBTIGhhcyBhbiB1bmtub3duIGluY29tcGF0aWJsZSBmZWF0dXJlIGZsYWcgc2V0LlxuIgorbXNnc3RyICJAakBT6KKr6K6+572u5LqG5pyq55+l55qE5LiN5YW85a655bGe5oCn5qCH562+44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGpvdXJuYWwgdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgZTJmc2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjI5MQorbXNnaWQgIkBqIHZlcnNpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGUyZnNjay5cbiIKK21zZ3N0ciAiZTJmc2Nr5LiN5pSv5oyB5q2kQGrniYjmnKzjgIJcbiIKKworIy4gQC1leHBhbmRlZDogTW92aW5nIGpvdXJuYWwgZnJvbSAvJXMgdG8gaGlkZGVuIGlub2RlLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyOTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk1vdmluZyBAaiBmcm9tIC8lcyB0byBoaWRkZW4gQGkuXG4iCisiXG4iCittc2dzdHIgIiIKKyLlsIZAauS7jiAvJXMg56e75Yqo5Yiw6ZqQ6JeP55qEQGnjgIJcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgbW92aW5nIGpvdXJuYWw6ICVtXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMwMQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRXJyb3IgbW92aW5nIEBqOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisi56e75YqoQGrlh7rplJnvvJolbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBGb3VuZCBpbnZhbGlkIFYyIGpvdXJuYWwgc3VwZXJibG9jayBmaWVsZHMgKGZyb20gVjEgam91cm5hbCkuXG4KKyMuIEAtZXhwYW5kZWQ6IENsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIGpvdXJuYWwgc3VwZXJibG9jay4uLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozMDYKK21zZ2lkICIiCisiRm91bmQgQG4gVjIgQGogQFMgZmllbGRzIChmcm9tIFYxIEBqKS5cbiIKKyJDbGVhcmluZyBmaWVsZHMgYmV5b25kIHRoZSBWMSBAaiBAUy4uLlxuIgorIlxuIgorbXNnc3RyICIiCisi5ZyoVjFAauS4reWPkeeOsEBuVjJAakBT5Yy65Z+f44CCXG4iCisi5q2j5Zyo5riF6ZmkVjFAakBT5Lul5aSW55qE5Yy65Z+fLi4uXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJ1biBqb3VybmFsIGFueXdheQorIzogZTJmc2NrL3Byb2JsZW0uYzozMTIKK21zZ2lkICJSdW4gQGogYW55d2F5IgorbXNnc3RyICLlvLrliLZAaiIKKworIy4gQC1leHBhbmRlZDogUmVjb3ZlcnkgZmxhZyBub3Qgc2V0IGluIGJhY2t1cCBzdXBlcmJsb2NrLCBzbyBydW5uaW5nIGpvdXJuYWwgYW55d2F5LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMxNworbXNnaWQgIlJlY292ZXJ5IGZsYWcgbm90IHNldCBpbiBiYWNrdXAgQFMsIHNvIHJ1bm5pbmcgQGogYW55d2F5LlxuIgorbXNnc3RyICLlpIfku71AU+S4reacquiuvue9ruaBouWkjeagh+W/l++8jOe7p+e7reWkhOeQhuaXpeW/l+OAglxuIgorCisjLiBALWV4cGFuZGVkOiBCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjMyMgorbXNnaWQgIiIKKyJCYWNraW5nIHVwIEBqIEBpIEBiIGluZm9ybWF0aW9uLlxuIgorIlxuIgorbXNnc3RyICIiCisi5q2j5Zyo5aSH5Lu9QGpAaUBi55qE5L+h5oGv44CCXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gZG9lcyBub3QgaGF2ZSByZXNpemVfaW5vZGUgZW5hYmxlZCwgYnV0IHNfcmVzZXJ2ZWRfZ2R0X2Jsb2Nrc1xuCisjLiBALWV4cGFuZGVkOiBpcyAlTjsgc2hvdWxkIGJlIHplcm8uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzI3Cittc2dpZCAiIgorIkBmIGRvZXMgbm90IGhhdmUgcmVzaXplX0BpIGVuYWJsZWQsIGJ1dCBzX3Jlc2VydmVkX2dkdF9AYnNcbiIKKyJpcyAlTjsgQHMgemVyby4gICIKK21zZ3N0ciAiIgorIkBm5LiN5pSv5oyB5pu05pS5QGnlpKflsI/vvIzmlYVzX3Jlc2VydmVkX2dkdF9ibG9ja3PlupTkuLowXG4iCisi77yI5L2G5a6e6ZmF5Li6JU7vvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplX2lub2RlIG5vdCBlbmFibGVkLCBidXQgdGhlIHJlc2l6ZSBpbm9kZSBpcyBub24temVyby4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzozMzMKK21zZ2lkICJSZXNpemVfQGkgbm90IGVuYWJsZWQsIGJ1dCB0aGUgcmVzaXplIEBpIGlzIG5vbi16ZXJvLiAgIgorbXNnc3RyICLkuI3mlK/mjIHmm7TmlLlAaeWkp+Wwj++8jOS9huaJgOe7meeahOWPmOabtOWAvOmdnumbtuOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjMzOAorbXNnaWQgIlJlc2l6ZSBAaSBub3QgdmFsaWQuICAiCittc2dzdHIgIuaUueWPmEBp5aSn5bCP55qE5YC85peg5pWI44CCIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGxhc3QgbW91bnQgdGltZSAoJXQsXG4KKyMuIEAtZXhwYW5kZWQ6IFx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzQzCittc2dpZCAiIgorIkBTIGxhc3QgbW91bnQgdGltZSAoJXQsXG4iCisiXHRub3cgPSAlVCkgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKK21zZ3N0ciAiIgorIkBT5LiK5LiA5qyh55qE5oyC6L295pe26Ze077yIJXTvvIxcbiIKKyJcdOW9k+WJje+8miVU77yJ5Zyo5pyq5p2l44CCICBcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuCisjLiBALWV4cGFuZGVkOiBcdG5vdyA9ICVUKSBpcyBpbiB0aGUgZnV0dXJlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM0OAorbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgKCV0LFxuIgorIlx0bm93ID0gJVQpIGlzIGluIHRoZSBmdXR1cmUuXG4iCittc2dzdHIgIiIKKyJAU+S4iuS4gOasoeeahOWGmeWFpeaXtumXtO+8iCV077yMXG4iCisiXHTlvZPliY3vvJolVO+8ieWcqOacquadpeOAgiAgXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgaGludCBmb3IgZXh0ZXJuYWwgc3VwZXJibG9jayBzaG91bGQgYmUgJVguICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MzUyCisjLCBjLWZvcm1hdAorbXNnaWQgIkBTIGhpbnQgZm9yIGV4dGVybmFsIHN1cGVyYmxvY2sgQHMgJVguICAiCittc2dzdHIgIuWklumDqOi2hee6p+Wdl+eahEBT5qCH6K6wQHMgJVjjgIIgICIKKworIy4gQC1leHBhbmRlZDogQWRkaW5nIGRpcmhhc2ggaGludCB0byBmaWxlc3lzdGVtLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzozNTcKK21zZ2lkICIiCisiQWRkaW5nIGRpcmhhc2ggaGludCB0byBAZi5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuato+WcqOWwhmRpcmhhc2jmoIforrDmt7vliqDliLBAZuOAglxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIGNoZWNrc3VtIGlzICUwNHgsIHNob3VsZCBiZSAlMDR5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM2MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgY2hlY2tzdW0gaXMgJTA0eCwgc2hvdWxkIGJlICUwNHkuICAiCittc2dzdHIgIkBn5o+P6L+w56ymICVnIOeahOagoemqjOWAvOS4uiUwNHjvvIzlupTlvZPkuLogJTA0eeOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBncm91cCBkZXNjcmlwdG9yICVnIG1hcmtlZCB1bmluaXRpYWxpemVkIHdpdGhvdXQgZmVhdHVyZSBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MzY3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgbWFya2VkIHVuaW5pdGlhbGl6ZWQgd2l0aG91dCBmZWF0dXJlIHNldC5cbiIKK21zZ3N0ciAiQGfmj4/ov7DnrKYgJWfooqvmoIforrDkuLrmnKrliJ3lp4vljJbvvIzlubbkuJTmsqHmnInorr7lrprnibnmgKfjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgZGVzY3JpcHRvciAlZyBoYXMgaW52YWxpZCB1bnVzZWQgaW5vZGVzIGNvdW50ICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjM3MgorbXNnaWQgIkBnIGRlc2NyaXB0b3IgJWcgaGFzIGludmFsaWQgdW51c2VkIGlub2RlcyBjb3VudCAlYi4gICIKK21zZ3N0ciAiQGfmj4/ov7DnrKYgJWcg5Lit55qE5pyq5L2/55SoaW5vZGXmlbAgJWIg5Li65peg5pWI5YC844CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IExhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzc3Cittc2dpZCAiTGFzdCBAZyBAYiBAQiB1bmluaXRpYWxpemVkLiAgIgorbXNnc3RyICLmnIDlkI7kuIDkuKpAZ+eahEBiQELmnKrliJ3lp4vljJbjgIIgICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzozODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB0cmFuc2FjdGlvbiAlaSB3YXMgY29ycnVwdCwgcmVwbGF5IHdhcyBhYm9ydGVkLlxuIgorbXNnc3RyICLml6Xlv5fkuovliqEgJWkg5o2f5Z2P77yM5pKk6ZSA6L+H56iL5bey57uI5q2i44CCXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6Mzg2Cittc2dpZCAiVGhlIHRlc3RfZnMgZmxhZyBpcyBzZXQgKGFuZCBleHQ0IGlzIGF2YWlsYWJsZSkuICAiCittc2dzdHIgIuiuvue9ruS6hiB0ZXN0X2ZzIOagh+W/l++8iOW5tuS4lGV4dDTlj6/nlKjvvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5MQorbXNnaWQgIiIKKyJAUyBsYXN0IG1vdW50IHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkBT5LiK5LiA5qyh5oyC6L295pe26Ze05Zyo5pyq5p2l44CCXG4iCisiXHTvvIjnm7jlt67kuI3liLDkuIDlpKnvvIzlj6/og73mmK/noazku7bml7bpkp/orr7lrprplJnor6/miYDoh7TvvIlcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbgorIy4gQC1leHBhbmRlZDogXHQoYnkgbGVzcyB0aGFuIGEgZGF5LCBwcm9iYWJseSBkdWUgdG8gdGhlIGhhcmR3YXJlIGNsb2NrIGJlaW5nIGluY29ycmVjdGx5IAorIy4gQC1leHBhbmRlZDogc2V0KVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjM5NworbXNnaWQgIiIKKyJAUyBsYXN0IHdyaXRlIHRpbWUgaXMgaW4gdGhlIGZ1dHVyZS5cbiIKKyJcdChieSBsZXNzIHRoYW4gYSBkYXksIHByb2JhYmx5IGR1ZSB0byB0aGUgaGFyZHdhcmUgY2xvY2sgYmVpbmcgaW5jb3JyZWN0bHkgIgorInNldClcbiIKK21zZ3N0ciAiIgorIkBT5LiK5LiA5qyh5YaZ5YWl5pe26Ze05Zyo5pyq5p2l44CCXG4iCisiXHTvvIjnm7jlt67kuI3liLDkuIDlpKnvvIzlj6/og73mmK/noazku7bml7bpkp/orr7lrprplJnor6/miYDoh7TvvIlcbiIKKworIy4gQC1leHBhbmRlZDogT25lIG9yIG1vcmUgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDAzCittc2dpZCAiT25lIG9yIG1vcmUgQGIgQGcgZGVzY3JpcHRvciBjaGVja3N1bXMgYXJlIGludmFsaWQuICAiCittc2dzdHIgIuS4gOS4quaIluWkmuS4qkBiQGfmj4/ov7DnrKbnmoTmoKHpqozlgLzml6DmlYjjgIIgICIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmcmVlIGlub2RlcyBjb3VudCB0byAlaiAod2FzICVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjQwOAorbXNnaWQgIlNldHRpbmcgZnJlZSBAaXMgY291bnQgdG8gJWogKHdhcyAlaSlcbiIKK21zZ3N0ciAi6K6+572u5pyq5L2/55So55qEQGnmlbDkuLogJWrvvIjmm77kuLolae+8iVxuIgorCisjLiBALWV4cGFuZGVkOiBTZXR0aW5nIGZyZWUgYmxvY2tzIGNvdW50IHRvICVjICh3YXMgJWIpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NDEzCittc2dpZCAiU2V0dGluZyBmcmVlIEBicyBjb3VudCB0byAlYyAod2FzICViKVxuIgorbXNnc3RyICLorr7nva7mnKrkvb/nlKjnmoRAYuaVsOS4uiAlY++8iOabvuS4uiVi77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1ha2luZyBxdW90YSBpbm9kZSAlaSAoJVEpIGhpZGRlbi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0MTgKK21zZ2lkICJNYWtpbmcgQHEgQGkgJWkgKCVRKSBoaWRkZW4uXG4iCittc2dzdHIgIiIKKyLlsIZAcUBpICVp77yIJVHvvInmoIforrDkuLrpmpDol4/nmoTjgIJcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDIzCittc2dpZCAiQFMgaGFzIGludmFsaWQgTU1QIGJsb2NrLiAgIgorbXNnc3RyICJAU+WQq+acieaXoOaViOeahE1NUOWdl+OAgiAgIgorCisjLiBALWV4cGFuZGVkOiBzdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0MjgKK21zZ2lkICJAUyBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICAiCittc2dzdHIgIkBT5ZCr5pyJ5peg5pWI55qETU1Q5bm75pWw44CCICAiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19vcGVuMjogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX29wZW4yOiAlbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjQzOAorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfY2hlY2tfZGVzYzogJW1cbiIKK21zZ3N0ciAiZXh0MmZzX2NoZWNrX2Rlc2M6ICVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAKKyMuIEAtZXhwYW5kZWQ6IHNpbXVsdGFuZW91c2x5LgorIzogZTJmc2NrL3Byb2JsZW0uYzo0NDYKK21zZ2lkICIiCisiQFMgbWV0YWRhdGFfY3N1bSBzdXBlcnNlZGVzIHVuaW5pdF9iZzsgYm90aCBmZWF0dXJlIGJpdHMgY2Fubm90IGJlIHNldCAiCisic2ltdWx0YW5lb3VzbHkuIgorbXNnc3RyICIiCisiQFMg55qEIG1ldGFkYXRhX2NzdW0g54m55oCn5bCG5Y+W5LujIHVuaW5pdF9iZyDnibnmgKfvvIzlm6DmraTkuI3og73lkIzml7blsIbkuozogIXlvIDlkK/jgIIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jay4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0NTIKK21zZ2lkICJAUyBNTVAgYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggTU1QIGJsb2NrLiAgIgorbXNnc3RyICJAUyBNTVDlnZfmoKHpqozlgLzkuI5NTVDlnZfoh6rouqvkuI3nrKbjgIIiCisKKyMuIEAtZXhwYW5kZWQ6IHN1cGVyYmxvY2sgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDU3Cittc2dpZCAiQFMgNjRiaXQgZmlsZXN5c3RlbXMgbmVlZHMgZXh0ZW50cyB0byBhY2Nlc3MgdGhlIHdob2xlIGRpc2suICAiCittc2dzdHIgIjY05L2N5paH5Lu257O757uf55qEQFPpnIDopoFleHRlbnTmnaXorr/pl67mlbTkuKrno4Hnm5jjgIIgICIKKworIzogZTJmc2NrL3Byb2JsZW0uYzo0NjIKK21zZ2lkICJGaXJzdF9tZXRhX2JnIGlzIHRvbyBiaWcuICAoJU4sIG1heCB2YWx1ZSAlZykuICAiCittc2dzdHIgIuesrOS4gOS4qm1ldGFfYmflpKrlpKfjgILvvIglTu+8jOacgOWkp+WAvCAlZ++8iSIKKworIy4gQC1leHBhbmRlZDogRXh0ZXJuYWwgam91cm5hbCBzdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDY3Cittc2dpZCAiRXh0ZXJuYWwgQGogQFMgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQFMuICAiCittc2dzdHIgIuWklumDqEBqQFPmoKHpqozlgLzkuI5AU+iHqui6q+S4jeespiIKKworIy4gQC1leHBhbmRlZDogc3VwZXJibG9jayBtZXRhZGF0YV9jc3VtX3NlZWQgaXMgbm90IG5lY2Vzc2FyeSB3aXRob3V0IG1ldGFkYXRhX2NzdW0uCisjOiBlMmZzY2svcHJvYmxlbS5jOjQ3MgorbXNnaWQgIkBTIG1ldGFkYXRhX2NzdW1fc2VlZCBpcyBub3QgbmVjZXNzYXJ5IHdpdGhvdXQgbWV0YWRhdGFfY3N1bS4iCittc2dzdHIgIiIKKyLlj6rmnInlkIzml7blvIDlkK/kuoZAU+eahCBtZXRhZGF0YV9jc3VtIOeJueaAp++8jG1ldGFkYXRhX2NzdW1fc2VlZCDnibnmgKfmiY3mnInmhI/kuYnjgIIiCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGluaXRpYWxpemluZyBxdW90YSBjb250ZXh0IGluIHN1cHBvcnQgbGlicmFyeTogJW1cbiIKK21zZ3N0ciAi5Yid5aeL5YyW5pSv5oyB5bqT5Lit55qE5byV55So5LiK5LiL5paH5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogQmFkIHJlcXVpcmVkIGV4dHJhIGlzaXplIGluIHN1cGVyYmxvY2sgKCVOKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0ODIKK21zZ2lkICJCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICglTikuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NDg3Cittc2dpZCAiQmFkIGRlc2lyZWQgZXh0cmEgaXNpemUgaW4gQFMgKCVOKS4gICIKK21zZ3N0ciAiIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTQKK21zZ2lkICJQYXNzIDE6IENoZWNraW5nIEBpcywgQGJzLCBhbmQgc2l6ZXNcbiIKK21zZ3N0ciAi56ysIDEg5q2l77ya5qOA5p+lQGnjgIFAYuWSjOWkp+Wwj1xuIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo0OTgKK21zZ2lkICJAciBpcyBub3QgYSBAZC4gICIKK21zZ3N0ciAiQHLkuI3mmK/kuIDkuKpAZOOAgiAgIgorCisjLiBALWV4cGFuZGVkOiByb290IGlub2RlIGhhcyBkdGltZSBzZXQgKHByb2JhYmx5IGR1ZSB0byBvbGQgbWtlMmZzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MDMKK21zZ2lkICJAciBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICAiCittc2dzdHIgIkBy6KKr6K6+572u5LqG5Yig6Zmk5pe26Ze077yI5Y+v6IO955Sx6ICB54mI5pys55qEbWtlMmZz5a+86Ie077yJ44CCIgorCisjLiBALWV4cGFuZGVkOiBSZXNlcnZlZCBpbm9kZSAlaSAoJVEpIGhhcyBpbnZhbGlkIG1vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTA4Cittc2dpZCAiUmVzZXJ2ZWQgQGkgJWkgKCVRKSBoYXMgQG4gbW9kZS4gICIKK21zZ3N0ciAi5L+d55WZ55qEQGkgJWnvvIglUe+8ieeahOaooeW8j+aXoOaViOOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBkZWxldGVkIGlub2RlICVpIGhhcyB6ZXJvIGR0aW1lLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUxMworIywgYy1mb3JtYXQKK21zZ2lkICJARCBAaSAlaSBoYXMgemVybyBkdGltZS4gICIKK21zZ3N0ciAiQERAaSAlaSDnmoTliKDpmaTml7bpl7TkuLrpm7bjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gICIKK21zZ3N0ciAi5L2/55So5Lit55qEQGkgJWkg6KKr6K6+572u5LqG5Yig6Zmk5pe26Ze044CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgemVyby1sZW5ndGggZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjUyMworIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBpcyBhIEB6IEBkLiAgIgorbXNnc3RyICJAaSAlaSDkuLpAekBk44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTI4Cittc2dpZCAiQGcgJWcncyBAYiBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAi5L2N5LqOICViIOeahEBnICVn55qEQGJAQkBD44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgYml0bWFwIGF0ICViIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NTMzCittc2dpZCAiQGcgJWcncyBAaSBAQiBhdCAlYiBAQy5cbiIKK21zZ3N0ciAi5L2N5LqOICViIOeahEBnICVn55qEQGlAQkBD44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgaW5vZGUgdGFibGUgYXQgJWIgY29uZmxpY3RzIHdpdGggc29tZSBvdGhlciBmcyBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1MzgKK21zZ2lkICJAZyAlZydzIEBpIHRhYmxlIGF0ICViIEBDLlxuIgorbXNnc3RyICLkvY3kuo4gJWIg55qEQGcgJWfnmoRAaeihqEBD44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnJ3MgYmxvY2sgYml0bWFwICglYikgaXMgYmFkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU0MworbXNnaWQgIkBnICVnJ3MgQGIgQEIgKCViKSBpcyBiYWQuICAiCittc2dzdHIgIkBnICVnIOeahEBiQELml6DmlYjjgIIgICIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcncyBpbm9kZSBiaXRtYXAgKCViKSBpcyBiYWQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTQ4Cittc2dpZCAiQGcgJWcncyBAaSBAQiAoJWIpIGlzIGJhZC4gICIKK21zZ3N0ciAiQGcgJWcg55qEQGlAQuaXoOaViOOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSwgaV9zaXplIGlzICVJcywgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1MworbXNnaWQgIkBpICVpLCBpX3NpemUgaXMgJUlzLCBAcyAlTi4gICIKK21zZ3N0ciAiQGkgJWnnmoTlpKflsI/kuLogJWxz77yMQHMgJU7jgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGlfYmxvY2tzIGlzICVJYiwgc2hvdWxkIGJlICVOLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU1OAorbXNnaWQgIkBpICVpLCBpX0BicyBpcyAlSWIsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaeeahGlfYmxvY2tz5Li6ICVsc++8jEBzICVO44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBpbm9kZSAlaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1NjMKK21zZ2lkICJASSAlQiAoJWIpIGluIEBpICVpLiAgIgorbXNnc3RyICJASSAlQu+8iCVi77yJ5LqOQGkgJWnjgIIgICIKKworIy4gQC1leHBhbmRlZDogJUIgKCViKSBvdmVybGFwcyBmaWxlc3lzdGVtIG1ldGFkYXRhIGluIGlub2RlICVpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjU2OAorbXNnaWQgIiVCICglYikgb3ZlcmxhcHMgQGYgbWV0YWRhdGEgaW4gQGkgJWkuICAiCittc2dzdHIgIiVC77yIJWLvvInkuI5AaSAlaSDorrDlvZXlhYPmlbDmja7nmoTkvY3nva7ph43lj6DjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlsbGVnYWwgYmxvY2socykuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTczCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbGxlZ2FsIEBiKHMpLiAgIgorbXNnc3RyICJAaSAlaSDkuK3ljIXlkKvpnZ7ms5VAYuOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBUb28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZSAlaS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIG1hbnkgaWxsZWdhbCBAYnMgaW4gQGkgJWkuXG4iCittc2dzdHIgIkBpICVpIOS4reWMheWQq+S6hui/h+WkmueahOmdnuazlUBi44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlsbGVnYWwgJUIgKCViKSBpbiBiYWQgYmxvY2sgaW5vZGUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTgzCittc2dpZCAiQEkgJUIgKCViKSBpbiBiYWQgQGIgQGkuICAiCittc2dzdHIgIkBJICVC77yIJWLvvInkuo7lnY9AYkBp44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo1ODgKK21zZ2lkICJCYWQgQGIgQGkgaGFzIGlsbGVnYWwgQGIocykuICAiCittc2dzdHIgIuWdj0BiQGnlkKvmnInml6DmlYjnmoRAYuOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBEdXBsaWNhdGUgb3IgYmFkIGJsb2NrIGluIHVzZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo1OTMKK21zZ2lkICJEdXBsaWNhdGUgb3IgYmFkIEBiIGluIHVzZSFcbiIKK21zZ3N0ciAi5L2/55So5LqG6YeN5aSNQGLmiJblnY9AYu+8gVxuIgorCisjLiBALWV4cGFuZGVkOiBCYWQgYmxvY2sgJWIgdXNlZCBhcyBiYWQgYmxvY2sgaW5vZGUgaW5kaXJlY3QgYmxvY2suICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NTk4Cittc2dpZCAiQmFkIEBiICViIHVzZWQgYXMgYmFkIEBiIEBpIGluZGlyZWN0IEBiLiAgIgorbXNnc3RyICLlnY9AYiAlYiDooqvnlKjkvZzlnY9AYkBp55qE6ZO+5o6lQGLjgIIgICIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgaGFzIHByb2JhYmx5IGJlZW4gY29ycnVwdGVkLiAgWW91IHByb2JhYmx5XG4KKyMuIEAtZXhwYW5kZWQ6IHNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4KKyMuIEAtZXhwYW5kZWQ6IGluIHRoZSBmaWxlc3lzdGVtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYwMworbXNnaWQgIiIKKyJcbiIKKyJUaGUgYmFkIEBiIEBpIGhhcyBwcm9iYWJseSBiZWVuIGNvcnJ1cHRlZC4gIFlvdSBwcm9iYWJseVxuIgorInNob3VsZCBzdG9wIG5vdyBhbmQgcnVuIGUyZnNjayAtYyB0byBzY2FuIGZvciBiYWQgYmxvY2tzXG4iCisiaW4gdGhlIEBmLlxuIgorbXNnc3RyICIiCisiXG4iCisi5Z2PQGJAaeWPr+iDveW3sue7j+aNn+Wdj+OAguS9oOWPr+iDvemcgOimgeeri+WIu+WBnOatouaJp+ihjOatpOS7u+WKoe+8jFxuIgorIuW5tui/kOihjGUyZnNjayAtY+adpeaJq+aPj0Bm5Lit55qE5Z2P5Z2X44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFxuCisjLiBALWV4cGFuZGVkOiBJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MTAKK21zZ2lkICIiCisiXG4iCisiSWYgdGhlIEBiIGlzIHJlYWxseSBiYWQsIHRoZSBAZiBjYW4gbm90IGJlIGZpeGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisi5aaC5p6c6K+lQGLnoa7lrp7kuLrlnY9AYu+8jOWImeaWh+S7tuezu+e7n+WwhuaXoOazleiiq+S/ruWkjeOAglxuIgorCisjLiBALWV4cGFuZGVkOiBZb3UgY2FuIHJlbW92ZSB0aGlzIGJsb2NrIGZyb20gdGhlIGJhZCBibG9jayBsaXN0IGFuZCBob3BlXG4KKyMuIEAtZXhwYW5kZWQ6IHRoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjE1Cittc2dpZCAiIgorIllvdSBjYW4gcmVtb3ZlIHRoaXMgQGIgZnJvbSB0aGUgYmFkIEBiIGxpc3QgYW5kIGhvcGVcbiIKKyJ0aGF0IHRoZSBAYiBpcyByZWFsbHkgT0suICBCdXQgdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMuXG4iCisiXG4iCittc2dzdHIgIiIKKyLkvaDlj6/ku6XlsIbor6VAYuS7juWdj0Bi5YiX6KGo5Lit56e76Zmk77yM5bm25pyf5pybXG4iCisi5a6D6IO95aSf5q2j5bi46KGo546w44CC5L2G5oiR5Lus5bm25LiN5o+Q5L6b5Lu75L2V5L+d6K+B44CCXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBwcmltYXJ5IHN1cGVyYmxvY2sgKCViKSBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3QuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjIxCittc2dpZCAiVGhlIHByaW1hcnkgQFMgKCViKSBpcyBvbiB0aGUgYmFkIEBiIGxpc3QuXG4iCittc2dzdHIgIuS4u0BT77yIJWLvvInkvY3kuo7lnY9AYuWIl+ihqOS4reOAglxuIgorCisjLiBALWV4cGFuZGVkOiBCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBncm91cCBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIGJsb2NrIGxpc3RcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2MjYKK21zZ2lkICJCbG9jayAlYiBpbiB0aGUgcHJpbWFyeSBAZyBkZXNjcmlwdG9ycyBpcyBvbiB0aGUgYmFkIEBiIGxpc3RcbiIKK21zZ3N0ciAi5Li7QGfmj4/ov7DnrKbkuK3nmoTlnZcgJWIg5L2N5LqO5Z2PQGLliJfooajkuK1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogR3JvdXAgJWcncyBzdXBlcmJsb2NrICglYikgaXMgYmFkLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjYzMgorbXNnaWQgIldhcm5pbmc6IEdyb3VwICVnJ3MgQFMgKCViKSBpcyBiYWQuXG4iCittc2dzdHIgIuitpuWRiu+8mue7hCAlZyDnmoRAU++8iCVi77yJ5Li65Z2P5Z2X44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IEdyb3VwICVnJ3MgY29weSBvZiB0aGUgZ3JvdXAgZGVzY3JpcHRvcnMgaGFzIGEgYmFkIGJsb2NrICglYikuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjM3Cittc2dpZCAiV2FybmluZzogR3JvdXAgJWcncyBjb3B5IG9mIHRoZSBAZyBkZXNjcmlwdG9ycyBoYXMgYSBiYWQgQGIgKCViKS5cbiIKK21zZ3N0ciAiIgorIuitpuWRiu+8mue7hCAlZyDmj4/ov7DnrKbnmoTlpIfku73lkKvmnInkuIDkuKrlnY9AYu+8iCVi77yJ44CCXG4iCisiXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFByb2dyYW1taW5nIGVycm9yPyAgYmxvY2sgIyViIGNsYWltZWQgZm9yIG5vIHJlYXNvbiBpbiBwcm9jZXNzX2JhZF9ibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NDMKK21zZ2lkICJQcm9ncmFtbWluZyBlcnJvcj8gIEBiICMlYiBjbGFpbWVkIGZvciBubyByZWFzb24gaW4gcHJvY2Vzc19iYWRfQGIuXG4iCittc2dzdHIgIuajgOa1i+WIsEBiICMlYiDkuLrlnY9AYu+8jOS9huWOn+WboOacquefpe+8iOWPr+iDveaYr+eoi+W6j+mUmeivr+WvvOiHtOeahO+8ieOAglxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nICVOIGNvbnRpZ3VvdXMgYmxvY2socykgaW4gYmxvY2sgZ3JvdXAgJWcgZm9yICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY0OQorbXNnaWQgIkBBICVOIGNvbnRpZ3VvdXMgQGIocykgaW4gQGIgQGcgJWcgZm9yICVzOiAlbVxuIgorbXNnc3RyICLlnKhAYkBnICVnIOS4reS4uiAlcyDliIbphY0gJU4g5Liq6L+e57ut55qEQGLml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGJsb2NrIGJ1ZmZlciBmb3IgcmVsb2NhdGluZyAlc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY1NAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBAYiBidWZmZXIgZm9yIHJlbG9jYXRpbmcgJXNcbiIKK21zZ3N0ciAi6YeN5a6a5L2NICVzIOaXtuWIhumFjUBi57yT5a2Y5Ye66ZSZXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlbG9jYXRpbmcgZ3JvdXAgJWcncyAlcyBmcm9tICViIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjU5Cittc2dpZCAiUmVsb2NhdGluZyBAZyAlZydzICVzIGZyb20gJWIgdG8gJWMuLi5cbiIKK21zZ3N0ciAi5q2j5Zyo5bCGQGcgJWcg55qEICVzIOS7jiAlYiDph43lrprkvY3oh7MgJWMuLi5cbiIKKworIy4gQC1leHBhbmRlZDogUmVsb2NhdGluZyBncm91cCAlZydzICVzIHRvICVjLi4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIlJlbG9jYXRpbmcgQGcgJWcncyAlcyB0byAlYy4uLlxuIgorbXNnc3RyICLmraPlnKjlsIZAZyAlZyDnmoQgJXMg6YeN5a6a5L2N6IezICVjLi4uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFdhcm5pbmc6IGNvdWxkIG5vdCByZWFkIGJsb2NrICViIG9mICVzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY2OQorbXNnaWQgIldhcm5pbmc6IGNvdWxkIG5vdCByZWFkIEBiICViIG9mICVzOiAlbVxuIgorbXNnc3RyICLorablkYrvvJrml6Dms5Xku44lc+S4reivu+WPlkBiICVi77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogV2FybmluZzogY291bGQgbm90IHdyaXRlIGJsb2NrICViIGZvciAlczogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3Qgd3JpdGUgQGIgJWIgZm9yICVzOiAlbVxuIgorbXNnc3RyICLorablkYrvvJrml6Dms5XlkJElc+S4reWGmeWFpUBiICVi77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBpbm9kZSBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2NzkgZTJmc2NrL3Byb2JsZW0uYzoxNzQwCittc2dpZCAiQEEgQGkgQEIgKCVOKTogJW1cbiIKK21zZ3N0ciAi5YiG6YWNQGlAQu+8iCVO77yJ5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBibG9jayBiaXRtYXAgKCVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo2ODQKK21zZ2lkICJAQSBAYiBAQiAoJU4pOiAlbVxuIgorbXNnc3RyICLliIbphY1AYkBC77yIJU7vvInml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBsaW5rIGluZm9ybWF0aW9uOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjY4OQorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgbGluayBpbmZvcm1hdGlvbjogJW1cbiIKK21zZ3N0ciAi5YiG6YWNaWNvdW506ZO+5o6l5L+h5oGv5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogZXJyb3IgYWxsb2NhdGluZyBkaXJlY3RvcnkgYmxvY2sgYXJyYXk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBkIEBiIGFycmF5OiAlbVxuIgorbXNnc3RyICLliIbphY1AZEBi5pWw57uE5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6Njk5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHNjYW5uaW5nIEBpcyAoJWkpOiAlbVxuIgorbXNnc3RyICLmiavmj49Aae+8iCVp77yJ5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgaXRlcmF0aW5nIG92ZXIgYmxvY2tzIGluIGlub2RlICVpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjcwNAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBAYnMgaW4gQGkgJWk6ICVtXG4iCittc2dzdHIgIui/reS7o0BpICVpIOS4reeahEBi5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBpbm9kZSBjb3VudCBpbmZvcm1hdGlvbiAoaW5vZGU9JWksIGNvdW50PSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MDkKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBpIGNvdW50IGluZm9ybWF0aW9uIChAaT0laSwgY291bnQ9JU4pOiAlbVxuIgorbXNnc3RyICLlhpnlhaVAaeiuoeaVsOS/oeaBr+aXtuWHuumUme+8iEBpICVp77yM6K6h5pWwPSVO77yJ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igc3RvcmluZyBkaXJlY3RvcnkgYmxvY2sgaW5mb3JtYXRpb24gKGlub2RlPSVpLCBibG9jaz0lYiwgbnVtPSVOKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo3MTQKK21zZ2lkICJFcnJvciBzdG9yaW5nIEBkIEBiIGluZm9ybWF0aW9uIChAaT0laSwgQGI9JWIsIG51bT0lTik6ICVtXG4iCittc2dzdHIgIuWGmeWFpUBkQGLkv6Hmga/ml7blh7rplJnvvIhAaSAlae+8jEBiICVi77yM5pWw6YePPSVO77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHJlYWRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHJlYWRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIuivu+WPlkBpICVp5Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGltYWdpYyBmbGFnIHNldC4gICIKK21zZ3N0ciAiQGkgJWkg6KKr6K6+572u5LqGaW1hZ2lj5qCH5b+X44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmby9zeW1saW5rKSBmaWxlIChpbm9kZSAlaSkgaGFzIGltbXV0YWJsZVxuCisjLiBALWV4cGFuZGVkOiBvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3MzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKEBpICVpKSBoYXMgaW1tdXRhYmxlXG4iCisib3IgYXBwZW5kLW9ubHkgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyLnibnmrormlofku7bvvIhAdi/lpZfmjqXlrZcv6Zif5YiXLyDnrKblj7fpk77mjqXvvInvvIhAaSAlae+8ieeUsWNoYXR0cuiuvue9ruS6hiBpXG4iCisi77yI5L+d5oqk77yJ5oiWIGHvvIjku4Xov73liqDvvIkg5qCH5b+X44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IFNwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgaW5vZGUgJWkgaGFzIG5vbi16ZXJvIHNpemUuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6NzM5CisjLCBjLWZvcm1hdAorbXNnaWQgIlNwZWNpYWwgKEB2L3NvY2tldC9maWZvKSBAaSAlaSBoYXMgbm9uLXplcm8gc2l6ZS4gICIKK21zZ3N0ciAi54m55q6K5paH5Lu277yIQHYv5aWX5o6l5a2XL+mYn+WIl++8iUBpICVpIOS4uumdnumbtuWkp+Wwj+OAgiAgIgorCisjLiBALWV4cGFuZGVkOiBqb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc0OQorbXNnaWQgIkBqIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJAaiBAaSDmnKrooqvkvb/nlKjvvIzkvYblkKvmnInmlbDmja7jgIIgICIKKworIy4gQC1leHBhbmRlZDogam91cm5hbCBpcyBub3QgcmVndWxhciBmaWxlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1NAorbXNnaWQgIkBqIGlzIG5vdCByZWd1bGFyIGZpbGUuICAiCittc2dzdHIgIkBq5LiN5piv5pmu6YCa5paH5Lu244CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSB3YXMgcGFydCBvZiB0aGUgQG8gQGkgbGlzdC4gICIKK21zZ3N0ciAiQGkgJWkg5L2N5LqOQG9AaeWIl+ihqOS4reOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc2NQorbXNnaWQgIkBpcyB0aGF0IHdlcmUgcGFydCBvZiBhIGNvcnJ1cHRlZCBvcnBoYW4gbGlua2VkIGxpc3QgZm91bmQuICAiCittc2dzdHIgIuWPkeeOsOS6huWPr+iDveWxnuS6juaNn+Wdj+eahOWtpOeri+mTvuaOpeihqOeahEBp44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6NzcwCittc2dpZCAiQEEgcmVmY291bnQgc3RydWN0dXJlICglTik6ICVtXG4iCittc2dzdHIgIuWIhumFjXJlZmNvdW5057uT5p6E5L2T77yIJU7vvInml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciByZWFkaW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBmb3IgaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6Nzc1Cittc2dpZCAiRXJyb3IgcmVhZGluZyBAYSBAYiAlYiBmb3IgQGkgJWkuICAiCittc2dzdHIgIuivu+WPlkBpICVpIOeahEBhQGIgJWIg5pe25Ye66ZSZ44CCIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc4MAorbXNnaWQgIkBpICVpIGhhcyBhIGJhZCBAYSBAYiAlYi4gICIKK21zZ3N0ciAiQGkgJWkg5pyJ5LiA5LiqIEBhQGIgJWLjgIIgICIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgKCVtKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3ODUKK21zZ2lkICJFcnJvciByZWFkaW5nIEBhIEBiICViICglbSkuICAiCittc2dzdHIgIuivu+WPlkBhQGIgJWIg5pe25Ye66ZSZ77yIJW3vvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGhhcyByZWZlcmVuY2UgY291bnQgJXIsIHNob3VsZCBiZSAlTi4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo3OTAKK21zZ2lkICJAYSBAYiAlYiBoYXMgcmVmZXJlbmNlIGNvdW50ICVyLCBAcyAlTi4gICIKK21zZ3N0ciAiQGFAYiAlYiDnmoTlvJXnlKjorqHmlbDkuLogJXLvvIxAcyAlTuOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoJW0pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjc5NQorbXNnaWQgIkVycm9yIHdyaXRpbmcgQGEgQGIgJWIgKCVtKS4gICIKK21zZ3N0ciAi5YaZ5YWlQGFAYiAlYiDml7blh7rplJnvvIglbe+8ieOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgaGFzIGhfYmxvY2tzID4gMS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDAKK21zZ2lkICJAYSBAYiAlYiBoYXMgaF9AYnMgPiAxLiAgIgorbXNnc3RyICJAYUBiICViIOeahGhfYmxvY2tzID4x44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlIHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MDUKK21zZ2lkICJAQSBAYSByZWdpb24gYWxsb2NhdGlvbiBzdHJ1Y3R1cmUuICAiCittc2dzdHIgIuaehOW7uuWklumDqOWxnuaAp+WMuuWfn+eahOWIhumFjee7k+aehOS9k+aXtuWHuumUmeOAgiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrICViIGlzIGNvcnJ1cHQgKGFsbG9jYXRpb24gY29sbGlzaW9uKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MTAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChhbGxvY2F0aW9uIGNvbGxpc2lvbikuICAiCittc2dzdHIgIkBhQGIgJWIg5bey5o2f5Z2P77yI5YiG6YWN5Yay56qB77yJ44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIG5hbWUpLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgxNQorbXNnaWQgIkBhIEBiICViIGlzIGNvcnJ1cHQgKEBuIG5hbWUpLiAgIgorbXNnc3RyICJAYUBiICViIOW3suaNn+Wdj++8iEBu5ZCN56ew77yJ44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiBpcyBjb3JydXB0IChpbnZhbGlkIHZhbHVlKS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjAKK21zZ2lkICJAYSBAYiAlYiBpcyBjb3JydXB0IChAbiB2YWx1ZSkuICAiCittc2dzdHIgIkBhQGIgJWIg5bey5o2f5Z2P77yIQG7lgLzvvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgdG9vIGJpZy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo4MjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgdG9vIGJpZy4gICIKK21zZ3N0ciAiQGkgJWkg6L+H5aSn44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6ICVCICglYikgY2F1c2VzIGRpcmVjdG9yeSB0byBiZSB0b28gYmlnLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjgyOQorbXNnaWQgIiVCICglYikgY2F1c2VzIEBkIHRvIGJlIHRvbyBiaWcuICAiCittc2dzdHIgIiVC77yIJWLvvInpgKDmiJBAZOi/h+Wkp+OAgiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzNAorbXNnaWQgIiVCICglYikgY2F1c2VzIGZpbGUgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJULvvIglYu+8iemAoOaIkOaWh+S7tui/h+Wkp+OAgiAgIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjgzOQorbXNnaWQgIiVCICglYikgY2F1c2VzIHN5bWxpbmsgdG8gYmUgdG9vIGJpZy4gICIKK21zZ3N0ciAiJULvvIglYu+8iemAoOaIkOespuWPt+mTvuaOpei/h+Wkp+OAgiAgIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgSU5ERVhfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBvbiBAZiB3aXRob3V0IGh0cmVlIHN1cHBvcnQuXG4iCittc2dzdHIgIkBpICVpIOiiq+iuvue9ruS6hklOREVYX0ZM5qCH5b+X77yM5L2G5paH5Lu257O757uf5LiN5pSv5oyBaHRyZWXjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOREVYX0ZMIGZsYWcgc2V0IGJ1dCBpcyBub3QgYSBkaXJlY3RvcnkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBJTkRFWF9GTCBmbGFnIHNldCBidXQgaXMgbm90IGEgQGQuXG4iCittc2dzdHIgIkBpICVpIOiiq+iuvue9ruS6hklOREVYX0ZM5qCH5b+X77yM5L2G5a6D5bm26Z2e55uu5b2V44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCByb290IG5vZGUuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBoICVpIGhhcyBhbiBAbiByb290IG5vZGUuXG4iCittc2dzdHIgIkBoICVpIOacieS4gOS4qkBu5qC56IqC54K544CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NTkKK21zZ2lkICJAaCAlaSBoYXMgYW4gdW5zdXBwb3J0ZWQgaGFzaCB2ZXJzaW9uICglTilcbiIKK21zZ3N0ciAiQGggJWkg5pyJ5LiA5Liq5peg5pWI55qEaGFzaOeJiOacrO+8iCVO77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSB1c2VzIGFuIGluY29tcGF0aWJsZSBodHJlZSByb290IG5vZGUgZmxhZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGggJWkgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuXG4iCittc2dzdHIgIkBoICVpIOS9v+eUqOS6huS4gOS4quS4jeWFvOWuueeahGh0cmVl5qC56IqC54K55qCH5b+X44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgYSB0cmVlIGRlcHRoICglTikgd2hpY2ggaXMgdG9vIGJpZ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjg2OQorbXNnaWQgIkBoICVpIGhhcyBhIHRyZWUgZGVwdGggKCVOKSB3aGljaCBpcyB0b28gYmlnXG4iCittc2dzdHIgIkBoICVpIOagkeeahOa3seW6pui/h+Wkp++8iCVO77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBpbm9kZSBoYXMgYW4gaW5kaXJlY3QgYmxvY2sgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4KKyMuIEAtZXhwYW5kZWQ6IGZpbGVzeXN0ZW0gbWV0YWRhdGEuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6ODc0Cittc2dpZCAiIgorIkJhZCBAYiBAaSBoYXMgYW4gaW5kaXJlY3QgQGIgKCViKSB0aGF0IGNvbmZsaWN0cyB3aXRoXG4iCisiQGYgbWV0YWRhdGEuICAiCittc2dzdHIgIuWdj0BiQGnlkKvmnInkuIDkuKrkuI5AZuWFg+aVsOaNruWGsueqgeeahOi/nuaOpUBi77yIJWLvvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogUmVzaXplIGlub2RlIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLgorIzogZTJmc2NrL3Byb2JsZW0uYzo4ODAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVzaXplIEBpIChyZSljcmVhdGlvbiBmYWlsZWQ6ICVtLiIKK21zZ3N0ciAi5pS55Y+YQGnlpKflsI/lpLHotKXvvJolbeOAgiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODg1Cittc2dpZCAiQGkgJWkgaGFzIGEgZXh0cmEgc2l6ZSAoJUlTKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSDmnInkuIDkuKrpop3lpJbnmoTlpKflsI8gJWxT77yIQG7lgLzvvIlcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIG5hbWVsZW4gKCVOKSB3aGljaCBpcyBpbnZhbGlkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6ODkwCittc2dpZCAiQGEgaW4gQGkgJWkgaGFzIGEgbmFtZWxlbiAoJU4pIHdoaWNoIGlzIEBuXG4iCittc2dzdHIgIkBpICVpIOS4reeahEBh5pyJ5LiA5Liq5ZCN56ew6ZW/5bqmJWxT77yIQG7lgLzvvIlcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIG9mZnNldCAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo4OTUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBvZmZzZXQgKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSDkuK3nmoRAYeWQq+acieS4gOS4qkBu55qE5YGP56e76YeP77yIJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogZXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlICVpIGhhcyBhIHZhbHVlIGJsb2NrICglTikgd2hpY2ggaXMgaW52YWxpZCAobXVzdCBiZSAwKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkwMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIHZhbHVlIEBiICglTikgd2hpY2ggaXMgQG4gKG11c3QgYmUgMClcbiIKK21zZ3N0ciAiQGkgJWkg5Lit55qEQGHlkKvmnInkuIDkuKpAbueahOaVsOWAvOWdl++8iCVO77yJ77yM5bqU5b2T5Li6MFxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgaW4gaW5vZGUgJWkgaGFzIGEgdmFsdWUgc2l6ZSAoJU4pIHdoaWNoIGlzIGludmFsaWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MDUKK21zZ2lkICJAYSBpbiBAaSAlaSBoYXMgYSB2YWx1ZSBzaXplICglTikgd2hpY2ggaXMgQG5cbiIKK21zZ3N0ciAiQGkgJWkg5Lit55qEQGHlkKvmnInkuIDkuKpAbueahOWkp+Wwj++8iCVO77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAlaSBoYXMgYSBoYXNoICglTikgd2hpY2ggaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjkxMAorbXNnaWQgIkBhIGluIEBpICVpIGhhcyBhIGhhc2ggKCVOKSB3aGljaCBpcyBAblxuIgorbXNnc3RyICJAaSAlaSDkuK3nmoRAYeacieS4gOS4qkBuaGFzaOWAvO+8iCVO77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGlzIGEgJUl0IGJ1dCBpdCBsb29rcyBsaWtlIGl0IGlzIHJlYWxseSBhIGRpcmVjdG9yeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MTUKK21zZ2lkICJAaSAlaSBpcyBhICVJdCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuXG4iCittc2dzdHIgIkBpICVpIOaYr+S4gOS4qkBsdO+8jOS9huWug+WunumZheS4iuWPr+iDveaYr+S4gOS4quebruW9leOAglxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSByZWFkaW5nIG92ZXIgZXh0ZW50IHRyZWUgaW4gaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTIwCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIHJlYWRpbmcgb3ZlciBAeCB0cmVlIGluIEBpICVpOiAlbVxuIgorbXNnc3RyICLor7vlj5ZAaSAlaSDkuK3nmoRAeOagkeaXtuWHuumUme+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gaW5vZGUgJWlcbgorIy4gQC1leHBhbmRlZDogXHQob3AgJXMsIGJsayAlYiwgbGJsayAlYyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTI1Cittc2dpZCAiIgorIkZhaWxlZCB0byBpdGVyYXRlIGV4dGVudHMgaW4gQGkgJWlcbiIKKyJcdChvcCAlcywgYmxrICViLCBsYmxrICVjKTogJW1cbiIKK21zZ3N0ciAiIgorIumAkuW9kkBpICVpIOS4reeahGV4dGVudOWksei0pVxuIgorIlx077yI6YCJ6aG5ICVz77yM5Z2XICVi77yMbGJsayAlY++8ie+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTMxCittc2dpZCAiIgorIkBpICVpIGhhcyBhbiBAbiBleHRlbnRcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBAbiBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWkg5pyJ5LiA5LiqQG5leHRlbnRcbiIKKyJcdO+8iOmAu+i+keWdlyAlY++8jEBu54mp55CG5Z2XQGIgJWLvvIzplb/luqYgJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGFuIGludmFsaWQgZXh0ZW50XG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBpbnZhbGlkIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5MzYKK21zZ2lkICIiCisiQGkgJWkgaGFzIGFuIEBuIGV4dGVudFxuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIHBoeXNpY2FsIEBiICViLCBAbiBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSDmnInkuIDkuKpAbmV4dGVudFxuIgorIlx077yI6YC76L6R5Z2XICVj77yM54mp55CG5Z2XQGIgJWLvvIzplb/luqYgJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gZmlsZXN5c3RlbSB3aXRob3V0IGV4dGVudHMgc3VwcG9ydC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEVYVEVOVFNfRkwgZmxhZyBzZXQgb24gQGYgd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuXG4iCittc2dzdHIgIkBpICVpIOiiq+iuvue9ruS6hkVYVEVOVFNfRkzmoIflv5fvvIzkvYbmlofku7bns7vnu5/kuI3mlK/mjIFleHRlbnTjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IHN1cGVyYmxvY2sgaXMgbWlzc2luZyBFWFRFTlRTIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaXMgaW4gZXh0ZW50IGZvcm1hdCwgYnV0IEBTIGlzIG1pc3NpbmcgRVhURU5UUyBmZWF0dXJlXG4iCittc2dzdHIgIkBpICVpIOS4umV4dGVudOagvOW8j++8jOS9hkBT5LiN5YW35pyJRVhURU5UU+eJueaAp1xuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6OTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIG1pc3NpbmcgRVhURU5UX0ZMLCBidXQgaXMgaW4gZXh0ZW50cyBmb3JtYXRcbiIKK21zZ3N0ciAiQGkgJWkg5LiN5YW35pyJRVhURU5UX0ZM5qCH5b+X77yM5L2G5Y205Li6RVhURU5UU+agvOW8j1xuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjk1NgorIywgYy1mb3JtYXQKK21zZ2lkICJGYXN0IHN5bWxpbmsgJWkgaGFzIEVYVEVOVF9GTCBzZXQuICAiCittc2dzdHIgIuebtOaOpeespuWPt+mTvuaOpSAlaSDooqvorr7nva7kuoZFWFRFTlRfRkzmoIflv5fjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGludmFsaWQgbG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NjEKK21zZ2lkICIiCisiQGkgJWkgaGFzIG91dCBvZiBvcmRlciBleHRlbnRzXG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIOWQq+acieS5seW6j+eahGV4dGVudFxuIgorIlx077yIQG4g6YC76L6RQGIgJWPvvIzniannkIZAYiAlYu+8jOmVv+W6piAlTu+8iVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgYW4gaW52YWxpZCBleHRlbnQgbm9kZSAoYmxrICViLCBsYmxrICVjKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk2NQorbXNnaWQgIkBpICVpIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgJWIsIGxibGsgJWMpXG4iCittc2dzdHIgIkBpICVpIOaYr+S4gOS4quaXoOaViOeahGV4dGVudOiKgueCue+8iOWdlyAlYu+8jGxibGsgJWPvvIlcbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY29udmVydGluZyBzdWJjbHVzdGVyIEBiIEBCOiAlbVxuIgorbXNnc3RyICLovazmjaLlrZDnsIfnmoRAZEBi5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgbm90IHJlZ3VsYXIgZmlsZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5NzUKK21zZ2lkICJAcSBAaSBpcyBub3QgcmVndWxhciBmaWxlLiAgIgorbXNnc3RyICJAcUBp5LiN5piv5pmu6YCa5paH5Lu244CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IHF1b3RhIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjk4MAorbXNnaWQgIkBxIEBpIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgIgorbXNnc3RyICJAcSBAaSDmnKrooqvkvb/nlKjvvIzkvYblkKvmnInmlbDmja7jgIIgICIKKworIy4gQC1leHBhbmRlZDogcXVvdGEgaW5vZGUgaXMgdmlzaWJsZSB0byB0aGUgdXNlci4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5ODUKK21zZ2lkICJAcSBAaSBpcyB2aXNpYmxlIHRvIHRoZSB1c2VyLiAgIgorbXNnc3RyICLkvb/nlKjkuK3nmoRAcUBp6KKr5a+555So5oi35Y+v6KeB44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IFRoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzo5OTAKK21zZ2lkICJUaGUgYmFkIEBiIEBpIGxvb2tzIEBuLiAgIgorbXNnc3RyICLlnY9AYkBp5Ly85LmO5pivQG7jgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIHplcm8gbGVuZ3RoIGV4dGVudFxuCisjLiBALWV4cGFuZGVkOiBcdChpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjk5NQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgemVybyBsZW5ndGggZXh0ZW50XG4iCisiXHQoQG4gbG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIpXG4iCittc2dzdHIgIiIKKyJAaSAlaSDlkKvmnInpm7bplb/luqbnmoRleHRlbnRcbiIKKyJcdO+8iEBuIOmAu+i+kUBiICVj77yM54mp55CGQGIgJWLvvIlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgIgorbXNnc3RyICJAaSAlaSDlkKvmnInml6DmlYjmlbDmja7jgIIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDA1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBAaS4gICIKK21zZ3N0ciAiQGkgJWkg6YCa6L+H5qOA6aqM77yM5L2G5YW25qCh6aqM5YC85LiO6Ieq6Lqr5LiN56ym44CCIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgQGEgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgIgorbXNnc3RyICJAaSAlaSBAYSDlt7LmjZ/lnY/vvIjliIbphY3lhrLnqoHvvInjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnRcbgorIy4gQC1leHBhbmRlZDogXHQobG9naWNhbCBibG9jayAlYywgcGh5c2ljYWwgYmxvY2sgJWIsIGxlbiAlTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDE4Cittc2dpZCAiIgorIkBpICVpIGV4dGVudCBibG9jayBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggZXh0ZW50XG4iCisiXHQobG9naWNhbCBAYiAlYywgcGh5c2ljYWwgQGIgJWIsIGxlbiAlTilcbiIKK21zZ3N0ciAiIgorIkBpICVpIOWklumDqOWdl+mAmui/h+ajgOmqjO+8jOS9huWFtuagoemqjOWAvOS4juiHqui6q+S4jeesplxuIgorIlx077yI6YC76L6RQGIgJWPvvIzniannkIZAYiAlYu+8jOmVv+W6piAlTu+8iVxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgJWIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMjcKK21zZ2lkICJAaSAlaSBAYSBAYiAlYiBwYXNzZXMgY2hlY2tzLCBidXQgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggQGIuICAiCittc2dzdHIgIkBpICVpIOeahEBhIEBiICViIOmAmui/h+ajgOmqjO+8jOS9huWFtuagoemqjOWAvOS4juiHqui6q+S4jeespuOAgiIKKworIy4gQC1leHBhbmRlZDogSW50ZXJpb3IgZXh0ZW50IG5vZGUgbGV2ZWwgJU4gb2YgaW5vZGUgJWk6XG4KKyMuIEAtZXhwYW5kZWQ6IExvZ2ljYWwgc3RhcnQgJWIgZG9lcyBub3QgbWF0Y2ggbG9naWNhbCBzdGFydCAlYyBhdCBuZXh0IGxldmVsLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwMzQKK21zZ2lkICIiCisiSW50ZXJpb3IgQHggbm9kZSBsZXZlbCAlTiBvZiBAaSAlaTpcbiIKKyJMb2dpY2FsIHN0YXJ0ICViIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgJWMgYXQgbmV4dCBsZXZlbC4gICIKK21zZ3N0ciAiIgorIkBpICVpIOeahOWtkEB46IqC54K5562J57qnICVO77yaXG4iCisi6YC76L6R6LW35aeL5L2N54K5ICViIOS4juS4i+S4gOetiee6p+eahOmAu+i+kei1t+Wni+S9jeeCuSAlYyDkuI3ljLnphY3jgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWksIGVuZCBvZiBleHRlbnQgZXhjZWVkcyBhbGxvd2VkIHZhbHVlXG4KKyMuIEAtZXhwYW5kZWQ6IFx0KGxvZ2ljYWwgYmxvY2sgJWMsIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA0MAorbXNnaWQgIiIKKyJAaSAlaSwgZW5kIG9mIGV4dGVudCBleGNlZWRzIGFsbG93ZWQgdmFsdWVcbiIKKyJcdChsb2dpY2FsIEBiICVjLCBwaHlzaWNhbCBAYiAlYiwgbGVuICVOKVxuIgorbXNnc3RyICIiCisiQGkgJWnvvIxleHRlbnTnu5PlsL7otoXov4fkuoblhYHorrjojIPlm7RcbiIKKyJcdO+8iOmAu+i+kUBiICVj77yM54mp55CG5Z2XQGIgJWLvvIzplb/luqYgJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGlubGluZSBkYXRhLCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIElOTElORV9EQVRBIGZlYXR1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDQ1CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSwgYnV0IEBTIGlzIG1pc3NpbmcgSU5MSU5FX0RBVEEgZmVhdHVyZVxuIgorbXNnc3RyICJAaSAlaSDlkKvmnInlhoXogZTmlbDmja7vvIzkvYZAU+S4jeWFt+aciSBJTkxJTkVfREFUQSDnibnmgKdcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gZmlsZXN5c3RlbSB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA1MAorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBAZiB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuXG4iCittc2dzdHIgIkBpICVpIOiiq+iuvue9ruS6hiBJTkxJTkVfREFUQV9GTCDmoIflv5fvvIzkvYbmlofku7bns7vnu5/kuI3mlK/mjIHlhoXogZTmlbDmja7jgIJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgYmxvY2sgJWIgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDU4Cittc2dpZCAiIgorIkBpICVpIGJsb2NrICViIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuXG4iCittc2dzdHIgIkBpICVpIOWdlyAlYiDkuI7lhbPplK7lhYPmlbDmja7lhrLnqoHvvIzot7Pov4flr7nlnZfnmoTmo4Dmn6XjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGlub2RlICVpIGJsb2NrICViIHNob3VsZCBiZSBhdCBibG9jayAlYy4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDYzCittc2dpZCAiQGQgQGkgJWkgQGIgJWIgc2hvdWxkIGJlIGF0IEBiICVjLiAgIgorbXNnc3RyICJAZEBpICVpIEBiICViIOW6lOS4ukBiICVj44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSBoYXMgZXh0ZW50IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IGJsb2NrICVjLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGQgQGkgJWkgaGFzIEB4IG1hcmtlZCB1bmluaXRpYWxpemVkIGF0IEBiICVjLiAgIgorbXNnc3RyICJAZEBpICVpIOWQq+acieiiq+agh+iusOS4uuacquWIneWni+WMlueahEB477yM5L2N5LqOQGIgJWPjgIIgICIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgbG9naWNhbCBibG9jayAlYiAocGh5c2ljYWwgYmxvY2sgJWMpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy5cbgorIy4gQC1leHBhbmRlZDogV2lsbCBmaXggaW4gcGFzcyAxQi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDczCittc2dpZCAiIgorIkBpICVpIGxvZ2ljYWwgQGIgJWIgKHBoeXNpY2FsIEBiICVjKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuXG4iCisiV2lsbCBmaXggaW4gcGFzcyAxQi5cbiIKK21zZ3N0ciAiIgorIkBpICVpIOmAu+i+kUBiICVi77yI54mp55CGQGIgJWPvvInov53lj43kuoblnZfliIbphY3ljp/liJnjgIJcbiIKKyLlsIbkvJrlnKjnrKwgMUIg5q2l5Lit6L+b6KGM5L+u5aSN44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgYnV0IEBhIG5vdCBmb3VuZC4gICIKK21zZ3N0ciAiQGkgJWkg6KKr6K6+572u5LqGSU5ERVhfREFUQV9GTOagh+W/l++8jOS9huaJvuS4jeWIsOebuOW6lOeahEBh44CCIgorCisjLiBALWV4cGFuZGVkOiBTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGZpbGUgKGlub2RlICVpKSBoYXMgZXh0ZW50c1xuCisjLiBALWV4cGFuZGVkOiBvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTcGVjaWFsIChAdi9zb2NrZXQvZmlmbykgZmlsZSAoQGkgJWkpIGhhcyBleHRlbnRzXG4iCisib3IgaW5saW5lLWRhdGEgZmxhZyBzZXQuICAiCittc2dzdHIgIiIKKyLnibnmrormlofku7bvvIhAdi/lpZfmjqXlrZcv6Zif5YiX77yJ77yIQGkgJWnvvInooqvorr7nva7kuoZcbiIKKyJleHRlbnRzIOaIluWGheiBlOaVsOaNruagh+W/l+OAgiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEwODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIEB4IGhlYWRlciBidXQgaW5saW5lIGRhdGEgZmxhZyBpcyBzZXQuXG4iCittc2dzdHIgIkBpICVpIOWQq+aciUB45aS06YOo77yM5L2G6KKr6K6+572u5LqG5YaF6IGU5pWw5o2u5qCH5b+X44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IGV4dGVudCBmbGFnIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMDk0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IEB4IGZsYWcgaXMgc2V0LlxuIgorbXNnc3RyICJAaSAlaSDkvLzkuY7lkKvmnInlhoXogZTmlbDmja7vvIzkvYbooqvorr7nva7kuoZAeOagh+W/l+OAglxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBzZWVtcyB0byBoYXZlIGJsb2NrIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTA5OQorIywgYy1mb3JtYXQKK21zZ2lkICJAaSAlaSBzZWVtcyB0byBoYXZlIEBiIG1hcCBidXQgaW5saW5lIGRhdGEgYW5kIEB4IGZsYWdzIHNldC5cbiIKK21zZ3N0ciAiQGkgJWkg5Ly85LmO5ZCr5pyJQGLkvY3lm77vvIzkvYbooqvorr7nva7kuoblhoXogZTmlbDmja7moIflv5flkoxAeOagh+W/l+OAglxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgaW5saW5lIGRhdGEgYW5kIGV4dGVudCBmbGFncyBzZXQgYnV0IGlfYmxvY2sgY29udGFpbnMganVuay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkBpICVpIGhhcyBpbmxpbmUgZGF0YSBhbmQgQHggZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuXG4iCittc2dzdHIgIkBpICVpIOWQq+acieWGheiBlOaVsOaNruS4lOiiq+iuvue9ruS6hkB45qCH5b+X77yM5L2GIGlfYmxvY2sg5Lit5ZCr5pyJ5peg5pWI5pWw5o2u44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTA5Cittc2dpZCAiQmFkIGJsb2NrIGxpc3Qgc2F5cyB0aGUgYmFkIGJsb2NrIGxpc3QgQGkgaXMgYmFkLiAgIgorbXNnc3RyICLlnY/lnZfliJfooajkuK3nmoTmlbDmja7ooajmmI7vvIzlnY/lnZfliJfooahAaSDlt7LmjZ/lnY/jgIIiCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgZXh0ZW50IHJlZ2lvbiBhbGxvY2F0aW9uIHN0cnVjdHVyZS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTE0Cittc2dpZCAiQEEgQHggcmVnaW9uIGFsbG9jYXRpb24gc3RydWN0dXJlLiAgIgorbXNnc3RyICLmnoTlu7pleHRlbnTljLrln5/nmoTliIbphY3nu5PmnoTkvZPml7blh7rplJnjgIIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGhhcyBhIGR1cGxpY2F0ZSBleHRlbnQgbWFwcGluZ1xuCisjLiBALWV4cGFuZGVkOiBcdChsb2dpY2FsIGJsb2NrICVjLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrICViLCBsZW4gJU4pXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTExOQorbXNnaWQgIiIKKyJAaSAlaSBoYXMgYSBkdXBsaWNhdGUgQHggbWFwcGluZ1xuIgorIlx0KGxvZ2ljYWwgQGIgJWMsIEBuIHBoeXNpY2FsIEBiICViLCBsZW4gJU4pXG4iCittc2dzdHIgIiIKKyJAaSAlaSDlkKvmnInph43lpI3nmoRAeOaYoOWwhFxuIgorIlx077yI6YC76L6R5Z2XICVj77yMQG7niannkIblnZdAYiAlYu+8jOmVv+W6piAlTu+8iVxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgZW5jcnlwdGVkIGRpcmVjdG9yeSBsaXN0XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyNAorbXNnaWQgIkBBIG1lbW9yeSBmb3IgZW5jcnlwdGVkIEBkIGxpc3RcbiIKK21zZ3N0ciAi5Li65Yqg5a+GQGTliJfooajliIbphY3lhoXlrZjml7blh7rplJlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTEyOQorbXNnaWQgIkBpICVpIEB4IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICglYjsgY291bGQgYmUgPD0gJWMpXG4iCittc2dzdHIgIkBpICVpIEB45qCR55qE5rex5bqm5Y+v5Lul5pu05bCP77yI5b2T5YmN5Li6JWLvvJvlj6/ku6UgPD0gJWPvvIlcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgb24gYmlnYWxsb2MgZmlsZXN5c3RlbSBjYW5ub3QgYmUgYmxvY2sgbWFwcGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgb24gYmlnYWxsb2MgQGYgY2Fubm90IGJlIEBiIG1hcHBlZC4gICIKK21zZ3N0ciAi5L2N5LqOIGJpZ2FsbG9jIEBmIOeahEBpICVpIG9uIGJpZ2FsbG9jIEBmIOaXoOazleiiq0Bi5pig5bCE44CCIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBoYXMgY29ycnVwdCBleHRlbnQgaGVhZGVyLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjExMzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGkgJWkgaGFzIGNvcnJ1cHQgQHggaGVhZGVyLiAgIgorbXNnc3RyICJAaSAlaSDlkKvmnInmjZ/lnY/nmoRAeOWktOmDqOOAgiIKKworIy4gQC1leHBhbmRlZDogVGltZXN0YW1wKHMpIG9uIGlub2RlICVpIGJleW9uZCAyMzEwLTA0LTA0IGFyZSBsaWtlbHkgcHJlLTE5NzAuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE0NAorIywgYy1mb3JtYXQKK21zZ2lkICJUaW1lc3RhbXAocykgb24gQGkgJWkgYmV5b25kIDIzMTAtMDQtMDQgYXJlIGxpa2VseSBwcmUtMTk3MC5cbiIKK21zZ3N0ciAiQGkgJWkg55qE5pe26Ze05oiz6LaF6L+H5LqGIDIzMTAtMDQtMDTvvIzlj6/og73lupTkuLogMTk3MCDlubTkuYvliY3jgIJcbiIKKworIy4gQC1leHBhbmRlZDogXG4KKyMuIEAtZXhwYW5kZWQ6IFJ1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uXG4KKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE1MQorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgQGJzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBAaS4uLlxuIgorIlBhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIEBtIEBic1xuIgorbXNnc3RyICIiCisiXG4iCisi5omn6KGM6aKd5aSW55qE5q2l6aqk5p2l5aSE55CG6KKr5aSa5LiqQGnlvJXnlKjnmoRAYi4uLlxuIgorIuesrCAxQiDmraXvvJrph43mlrDmiavmj49AbSBAYlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlICVpOgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTU3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBtIEBiKHMpIGluIEBpICVpOiIKK21zZ3N0ciAiQG1AYuS9jeS6jkBpICVp77yaIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjExNzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgc2Nhbm5pbmcgaW5vZGVzICglaSk6ICVtXG4iCittc2dzdHIgIuaJq+aPj0lub2Rl77yIJWlcXO+8ieaXtuWHuumUme+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgaW5vZGUgYml0bWFwIChpbm9kZV9kdXBfbWFwKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIEBpIEBCIChAaV9kdXBfbWFwKTogJW1cbiIKK21zZ3N0ciAi5YiG6YWNQGlAQuaXtuWHuumUme+8iGlub2RlX2R1cF9tYXDvvInvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMTgyCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGl0ZXJhdGluZyBvdmVyIEBicyBpbiBAaSAlaSAoJXMpOiAlbVxuIgorbXNnc3RyICLov63ku6NAaSAlaeS4reeahEBi5pe25Ye66ZSZ77yIJXPvvInvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBhZGp1c3RpbmcgcmVmY291bnQgZm9yIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjExODcgZTJmc2NrL3Byb2JsZW0uYzoxNTQ5Cittc2dpZCAiRXJyb3IgYWRqdXN0aW5nIHJlZmNvdW50IGZvciBAYSBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICLkuLpAYUIgJWLvvIhAaSAlae+8ieiwg+aVtHJlZmNvdW505pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTE5NworbXNnaWQgIlBhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBAaXMgd2l0aCBAbSBAYnNcbiIKK21zZ3N0ciAi56ysIDFDIOatpe+8muaJq+aPj+WQq+aciUBtQGLnmoTnm67lvZVAaVxuIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrc1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDMKK21zZ2lkICJQYXNzIDFEOiBSZWNvbmNpbGluZyBAbSBAYnNcbiIKK21zZ3N0ciAi56ysIDFDIOatpe+8muiwg+aVtEBtQGJcbiIKKworIy4gQC1leHBhbmRlZDogRmlsZSAlUSAoaW5vZGUgIyVpLCBtb2QgdGltZSAlSU0pIFxuCisjLiBALWV4cGFuZGVkOiAgIGhhcyAlciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMDgKK21zZ2lkICIiCisiRmlsZSAlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pIFxuIgorIiAgaGFzICVyIEBtIEBiKHMpLCBzaGFyZWQgd2l0aCAlTiBmaWxlKHMpOlxuIgorbXNnc3RyICIiCisi5paH5Lu2ICVR77yIQGkgIyVp77yM5L+u5pS55pe26Ze0ICVJTe+8iVxuIgorIuS4jiAlTiDkuKrmlofku7blhbHkuqsgJXIg5LiqQG1AYlxuIgorCisjLiBALWV4cGFuZGVkOiBcdCVRIChpbm9kZSAjJWksIG1vZCB0aW1lICVJTSlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjE0Cittc2dpZCAiXHQlUSAoQGkgIyVpLCBtb2QgdGltZSAlSU0pXG4iCittc2dzdHIgIlx0JVHvvIhAaSAjJWnvvIzkv67mlLnml7bpl7QgJUlN77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFx0PGZpbGVzeXN0ZW0gbWV0YWRhdGE+XG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTIxOQorbXNnaWQgIlx0PEBmIG1ldGFkYXRhPlxuIgorbXNnc3RyICJcdDxAZuWFg+aVsOaNrj5cbiIKKworIy4gQC1leHBhbmRlZDogKFRoZXJlIGFyZSAlTiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pXG4KKyMuIEAtZXhwYW5kZWQ6IFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyMjQKK21zZ2lkICIiCisiKFRoZXJlIGFyZSAlTiBAaXMgY29udGFpbmluZyBAbSBAYnMuKVxuIgorIlxuIgorbXNnc3RyICIiCisi77yI5YWx5pyJICVOIOWQq+aciUBtQGLnmoRAae+8iVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjI5Cittc2dpZCAiIgorIkBtIEBicyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLlxuIgorIlxuIgorbXNnc3RyICIiCisiQG1AYuW3suiiq+mHjeaWsOWIhumFjeaIluWFi+mahuOAglxuIgorIlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgY2xvbmUgZmlsZTogJW1cbiIKK21zZ3N0ciAi5peg5rOV5YWL6ZqG5paH5Lu277yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXNcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjQ4Cittc2dpZCAiUGFzcyAxRTogT3B0aW1pemluZyBAeCB0cmVlc1xuIgorbXNnc3RyICLnrKwgMUUg5q2l77ya5LyY5YyWQHjmoJFcbiIKKworIy4gQC1leHBhbmRlZDogRmFpbGVkIHRvIG9wdGltaXplIGV4dGVudCB0cmVlICVwICglaSk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI1MworIywgYy1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgQHggdHJlZSAlcCAoJWkpOiAlbVxuIgorbXNnc3RyICLkvJjljJZAeOagkSAlcO+8iCVp77yJ5aSx6LSl77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogT3B0aW1pemluZyBleHRlbnQgdHJlZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjU4Cittc2dpZCAiT3B0aW1pemluZyBAeCB0cmVlczogIgorbXNnc3RyICLkvJjljJZAeOagke+8miIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxMjczCittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IG1heCBleHRlbnQgdHJlZSBkZXB0aCB0b28gbGFyZ2UgKCViOyBleHBlY3RlZD0lYykuXG4iCittc2dzdHIgIuWGhemDqOmUmeivr++8mmV4dGVudOagkeeahOacgOWkp+a3seW6pui/h+Wkp++8iOW9k+WJjeS4uiAlYu+8m+W6lOS4uiAlY++8ieOAglxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgJWIpIGNvdWxkIGJlIHNob3J0ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI3OAorbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBzaG9ydGVyLiAgIgorbXNnc3RyICJAaSAlaSDnmoRAeOagke+8iOS9jeS6juesrCAlYiDlsYLvvInnmoTmt7Hluqblj6/ku6Xmm7TlsI/jgIIiCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpIGV4dGVudCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgbmFycm93ZXIuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTI4MworbXNnaWQgIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIKK21zZ3N0ciAiQGkgJWkg55qEQHjmoJHvvIjkvY3kuo7nrKwgJWIg5bGC77yJ5Y+v5Lul5pu056qE44CCIgorCisjLiBALWV4cGFuZGVkOiBQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmVcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMjkwCittc2dpZCAiUGFzcyAyOiBDaGVja2luZyBAZCBzdHJ1Y3R1cmVcbiIKK21zZ3N0ciAi56ysIDIg5q2l77ya5qOA5p+l55uu5b2V57uT5p6EXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlICVpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQG4gQGkgbnVtYmVyIGZvciAnLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkBkQGkgJWkg5Lit4oCcLuKAneeahEBuQGnnvJblj7fml6DmlYjjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAlRGkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMwMAorbXNnaWQgIkBFIGhhcyBAbiBAaSAjOiAlRGkuXG4iCittc2dzdHIgIkBF5ZCr5pyJQG5AaSAj77yaJURpXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlICVEaS4gIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzA1Cittc2dpZCAiQEUgaGFzIEBEL3VudXNlZCBAaSAlRGkuICAiCittc2dzdHIgIkBF5ZCr5pyJQETmiJbmnKrkvb/nlKjnmoRAICVEaeOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byAnLicgIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzEwCittc2dpZCAiQEUgQEwgdG8gJy4nICAiCittc2dzdHIgIkBF5piv5LiA5Liq5oyH5ZCR4oCcLuKAneeahOmTvuaOpSIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBwb2ludHMgdG8gaW5vZGUgKCVEaSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzE1Cittc2dpZCAiQEUgcG9pbnRzIHRvIEBpICglRGkpIGxvY2F0ZWQgaW4gYSBiYWQgQGIuXG4iCittc2dzdHIgIkBF5oyH5ZCR5L2N5LqO5Z2PQGLnmoRAae+8iCVEae+8ieOAglxuIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGlzIGEgbGluayB0byBkaXJlY3RvcnkgJVAgKCVEaSkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMyMAorbXNnaWQgIkBFIEBMIHRvIEBkICVQICglRGkpLlxuIgorbXNnc3RyICJAReaYr+S4gOS4quaMh+WQkUBkICVQ77yIJURp77yJ55qE6ZO+5o6l44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgYSBsaW5rIHRvIHRoZSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMjUKK21zZ2lkICJARSBATCB0byB0aGUgQHIuXG4iCittc2dzdHIgIkBF5piv5LiA5Liq5oyH5ZCRQHLnmoTpk77mjqXjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzMzAKK21zZ2lkICJARSBoYXMgaWxsZWdhbCBjaGFyYWN0ZXJzIGluIGl0cyBuYW1lLlxuIgorbXNnc3RyICJAReeahOWQjeensOS4reacieaXoOaViOWtl+espuOAglxuIgorCisjLiBALWV4cGFuZGVkOiBNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTMzNQorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuJyBpbiBAZCBAaSAlaS5cbiIKK21zZ3N0ciAiQGRAaSAlaSDkuK3nvLrlsJHigJwu4oCd44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IE1pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgJWkuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM0MAorIywgYy1mb3JtYXQKK21zZ2lkICJNaXNzaW5nICcuLicgaW4gQGQgQGkgJWkuXG4iCittc2dzdHIgIkBkQGkgJWkg5Lit57y65bCR4oCcLi7igJ3jgIJcbiIKKworIy4gQC1leHBhbmRlZDogRmlyc3QgZW50cnkgJyVEbicgKGlub2RlPSVEaSkgaW4gZGlyZWN0b3J5IGlub2RlICVpICglcCkgc2hvdWxkIGJlICcuJ1xuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNDUKK21zZ2lkICJGaXJzdCBAZSAnJURuJyAoQGk9JURpKSBpbiBAZCBAaSAlaSAoJXApIEBzICcuJ1xuIgorbXNnc3RyICJAZEBpICVpIOS4reeahOesrOS4gOS4qkBl4oCcJURu4oCd77yIQGk9JURp77yJQHPigJwu4oCdXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFNlY29uZCBlbnRyeSAnJURuJyAoaW5vZGU9JURpKSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgc2hvdWxkIGJlICcuLidcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzUwCittc2dpZCAiU2Vjb25kIEBlICclRG4nIChAaT0lRGkpIGluIEBkIEBpICVpIEBzICcuLidcbiIKK21zZ3N0ciAiQGRAaSAlaSDkuK3nmoTnrKzkuozkuKpAZeKAnCVEbuKAne+8iEBpPSVEae+8iUBz4oCcLi7igJ1cbiIKKworIy4gQC1leHBhbmRlZDogaV9mYWRkciBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSUYsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNTUKK21zZ2lkICJpX2ZhZGRyIEBGICVJRiwgQHMgemVyby5cbiIKK21zZ3N0ciAiQGkgJWkg77yIJVHvvInnmoRpX2ZhZGRy5Li6ICVJRu+8jEBzMOOAglxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZpbGVfYWNsIGZvciBpbm9kZSAlaSAoJVEpIGlzICVJZiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTM2MAorbXNnaWQgImlfZmlsZV9hY2wgQEYgJUlmLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJAaSAlaSDvvIglUe+8ieeahGlfZmlsZV9hY2zkuLogJUlG77yMQHMw44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZGlyX2FjbCBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlSWQsIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzNjUKK21zZ2lkICJpX2Rpcl9hY2wgQEYgJUlkLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJAaSAlaSDvvIglUe+8ieeahGlfZGlyX2FjbOS4uiAlbGTvvIxAczDjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaV9mcmFnIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzcwCittc2dpZCAiaV9mcmFnIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJAaSAlaSDvvIglUe+8ieeahGlfZnJhZ+S4uiAlTu+8jEBzMOOAglxuIgorCisjLiBALWV4cGFuZGVkOiBpX2ZzaXplIGZvciBpbm9kZSAlaSAoJVEpIGlzICVOLCBzaG91bGQgYmUgemVyby5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzc1Cittc2dpZCAiaV9mc2l6ZSBARiAlTiwgQHMgemVyby5cbiIKK21zZ3N0ciAiQGkgJWkg77yIJVHvvInnmoRpX3NpemXkuLogJU7vvIxAczDjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBoYXMgaW52YWxpZCBtb2RlICglSW0pLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODAKK21zZ2lkICJAaSAlaSAoJVEpIGhhcyBAbiBtb2RlICglSW0pLlxuIgorbXNnc3RyICJAaSAlae+8iCVR77yJ5pyJQG7mqKHlvI8g77yIJUlt77yJ44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZGlyZWN0b3J5IGNvcnJ1cHRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzODUKK21zZ2lkICJAZCBAaSAlaSwgJUIsIG9mZnNldCAlTjogQGQgY29ycnVwdGVkXG4iCittc2dzdHIgIkBkQGkgJWnvvIwlQu+8jOWBj+enu+mHjyAlTu+8mkBk5bey5o2f5Z2PXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUIsIG9mZnNldCAlTjogZmlsZW5hbWUgdG9vIGxvbmdcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxMzkwCittc2dpZCAiQGQgQGkgJWksICVCLCBvZmZzZXQgJU46IGZpbGVuYW1lIHRvbyBsb25nXG4iCittc2dzdHIgIkBkQGkgJWnvvIwlQu+8jOWBj+enu+mHjyAlTu+8muaWh+S7tuWQjei/h+mVv1xuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWkgaGFzIGFuIHVuYWxsb2NhdGVkICVCLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjEzOTUKK21zZ2lkICJAZCBAaSAlaSBoYXMgYW4gdW5hbGxvY2F0ZWQgJUIuICAiCittc2dzdHIgIkBkQGkgJWkg5ZCr5pyJ5pyq5YiG6YWN55qEICVC44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6ICcuJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlICVpIGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDAwCisjLCBjLWZvcm1hdAorbXNnaWQgIicuJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkBkQGkgJWkg5Lit55qE4oCcLuKAnUBkQGUg5rKh5pyJ5LulTlVMTOe7iOatolxuIgorCisjLiBALWV4cGFuZGVkOiAnLi4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgJWkgaXMgbm90IE5VTEwgdGVybWluYXRlZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJy4uJyBAZCBAZSBpbiBAZCBAaSAlaSBpcyBub3QgTlVMTCB0ZXJtaW5hdGVkXG4iCittc2dzdHIgIkBkQGkgJWkg5Lit55qE4oCcLi7igJ1AZEBlIOayoeacieS7pU5VTEznu4jmraJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQxMAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgY2hhcmFjdGVyIEB2LlxuIgorbXNnc3RyICJAaSAlae+8iCVR77yJ5piv5LiA5LiqQEnnmoTlrZfnrKZAduOAglxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSAoJVEpIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MTUKK21zZ2lkICJAaSAlaSAoJVEpIGlzIGFuIEBJIEBiIEB2LlxuIgorbXNnc3RyICJAaSAlae+8iCVR77yJ5piv5LiA5LiqQEnnmoRAYkB244CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaXMgZHVwbGljYXRlICcuJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDIwCittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuJyBAZS5cbiIKK21zZ3N0ciAiQEXkuLrph43lpI3nmoTigJwu4oCd55uu5b2VQGXjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDI1Cittc2dpZCAiQEUgaXMgZHVwbGljYXRlICcuLicgQGUuXG4iCittc2dzdHIgIkBF5Li66YeN5aSN55qE4oCcLi7igJ3nm67lvZVAZeOAglxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0MzAgZTJmc2NrL3Byb2JsZW0uYzoxNzY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludGVybmFsIGVycm9yOiBjb3VsZG4ndCBmaW5kIGRpcl9pbmZvIGZvciAlaS5cbiIKK21zZ3N0ciAi5YaF6YOo6ZSZ6K+v77ya5peg5rOV5om+5YiwICVpIOeahGRpcl9pbmZv44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIHJlY19sZW4gb2YgJURyLCBzaG91bGQgYmUgJU4uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQzNQorbXNnaWQgIkBFIGhhcyByZWNfbGVuIG9mICVEciwgQHMgJU4uXG4iCittc2dzdHIgIkBF55qEcmVjX2xlbuS4uiAlRHLvvIxAcyAlTuOAglxuIgorCisjLiBALWV4cGFuZGVkOiBlcnJvciBhbGxvY2F0aW5nIGljb3VudCBzdHJ1Y3R1cmU6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJAQSBpY291bnQgc3RydWN0dXJlOiAlbVxuIgorbXNnc3RyICLliIbphY1pY291bnTnu5PmnoTkvZPml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBpdGVyYXRpbmcgb3ZlciBkaXJlY3RvcnkgYmxvY2tzOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgaXRlcmF0aW5nIG92ZXIgQGQgQGJzOiAlbVxuIgorbXNnc3RyICLov63ku6NAZEBi5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgcmVhZGluZyBkaXJlY3RvcnkgYmxvY2sgJWIgKGlub2RlICVpKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDUwCittc2dpZCAiRXJyb3IgcmVhZGluZyBAZCBAYiAlYiAoQGkgJWkpOiAlbVxuIgorbXNnc3RyICLor7vlj5ZAZEBiICVi77yIQGkgJWnvvInml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciB3cml0aW5nIGRpcmVjdG9yeSBibG9jayAlYiAoaW5vZGUgJWkpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE0NTUKK21zZ2lkICJFcnJvciB3cml0aW5nIEBkIEBiICViIChAaSAlaSk6ICVtXG4iCittc2dzdHIgIuWGmeWFpUBkQGIgJWLvvIhAaSAlae+8ieaXtuWHuumUme+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVycm9yIGFsbG9jYXRpbmcgbmV3IGRpcmVjdG9yeSBibG9jayBmb3IgaW5vZGUgJWkgKCVzKTogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDYwCisjLCBjLWZvcm1hdAorbXNnaWQgIkBBIG5ldyBAZCBAYiBmb3IgQGkgJWkgKCVzKTogJW1cbiIKK21zZ3N0ciAi5Li6QGkgJWnvvIglc++8ieWIhumFjeaWsEBkQGLml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBkZWFsbG9jYXRpbmcgaW5vZGUgJWk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ2NQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBkZWFsbG9jYXRpbmcgQGkgJWk6ICVtXG4iCittc2dzdHIgIuWPlua2iOWIhumFjUBpICVp5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogZGlyZWN0b3J5IGVudHJ5IGZvciAnLicgaW4gJXAgKCVpKSBpcyBiaWcuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3MAorIywgYy1mb3JtYXQKK21zZ2lkICJAZCBAZSBmb3IgJy4nIGluICVwICglaSkgaXMgYmlnLlxuIgorbXNnc3RyICIlcO+8iCVp77yJ5Lit4oCcLuKAneeahEBkQGXlpKrlpKfjgIJcbiIKKworIy4gQC1leHBhbmRlZDogaW5vZGUgJWkgKCVRKSBpcyBhbiBpbGxlZ2FsIEZJRk8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ3NQorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgRklGTy5cbiIKK21zZ3N0ciAiQGkgJWnvvIglUe+8ieaYr+S4gOS4qkBJ6Zif5YiX44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlub2RlICVpICglUSkgaXMgYW4gaWxsZWdhbCBzb2NrZXQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTQ4MAorbXNnaWQgIkBpICVpICglUSkgaXMgYW4gQEkgc29ja2V0LlxuIgorbXNnc3RyICJAaSAlae+8iCVR77yJ5piv5LiA5LiqQEnlpZfmjqXlrZfjgIJcbiIKKworIy4gQC1leHBhbmRlZDogU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJyVEbicgaW4gJXAgKCVpKSB0byAlTi5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDg1Cittc2dpZCAiU2V0dGluZyBmaWxldHlwZSBmb3IgQEUgdG8gJU4uXG4iCittc2dzdHIgIuWwhkBF55qE5paH5Lu257G75Z6L6K6+572u5Li6ICVO44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgc2hvdWxkIGJlICVOKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDkwCittc2dpZCAiQEUgaGFzIGFuIGluY29ycmVjdCBmaWxldHlwZSAod2FzICVEdCwgQHMgJU4pLlxuIgorbXNnc3RyICJAReWQq+aciemUmeivr+eahOaWh+S7tuexu+Wei++8iCVEdO+8jEBzICVO77yJ44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGVudHJ5ICclRG4nIGluICVwICglaSkgaGFzIGZpbGV0eXBlIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNDk1Cittc2dpZCAiQEUgaGFzIGZpbGV0eXBlIHNldC5cbiIKK21zZ3N0ciAiQEXooqvorr7nva7kuobmlofku7bnsbvlnovjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSBoYXMgYSB6ZXJvLWxlbmd0aCBuYW1lLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MDAKK21zZ2lkICJARSBoYXMgYSBAeiBuYW1lLlxuIgorbXNnc3RyICJAReWQq+aciemVv+W6puS4uumbtueahOWQjeensOOAglxuIgorCisjLiBALWV4cGFuZGVkOiBTeW1saW5rICVRIChpbm9kZSAjJWkpIGlzIGludmFsaWQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUwNQorbXNnaWQgIlN5bWxpbmsgJVEgKEBpICMlaSkgaXMgQG4uXG4iCittc2dzdHIgIuespuWPt+mTvuaOpSAlUe+8iEBpICMlae+8ieaXoOaViOOAglxuIgorCisjLiBALWV4cGFuZGVkOiBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlICVpICglUSkgaXMgaW52YWxpZCAoJUlmKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTEwCittc2dpZCAiQGEgQGIgQEYgQG4gKCVJZikuXG4iCittc2dzdHIgIkBpICVpIOeahEBhQGLml6DmlYjvvIglbGbvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZmlsZXN5c3RlbSBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBzdXBlcmJsb2NrLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MTUKK21zZ2lkICJAZiBjb250YWlucyBsYXJnZSBmaWxlcywgYnV0IGxhY2tzIExBUkdFX0ZJTEUgZmxhZyBpbiBAUy5cbiIKK21zZ3N0ciAiQGblkKvmnInlpKfmlofku7bvvIzkvYZAU+S4reacquiuvue9rkxBUkdFX0ZJTEXmoIflv5fjgIJcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIG5vdCByZWZlcmVuY2VkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTUyMAorbXNnaWQgIkBwIEBoICVkOiAlQiBub3QgcmVmZXJlbmNlZFxuIgorbXNnc3RyICJAaCAlZCDkuK3lj5HnjrDpl67popjvvJolQlxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MjUKK21zZ2lkICJAcCBAaCAlZDogJUIgcmVmZXJlbmNlZCB0d2ljZVxuIgorbXNnc3RyICJAaCAlZCDkuK3lj5HnjrDpl67popjvvJolQiDooqvlvJXnlKjkuobkuKTmrKFcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTMwCittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBiYWQgbWluIGhhc2hcbiIKK21zZ3N0ciAiQGggJWQg5Lit5Y+R546w6Zeu6aKY77yaJUIg5ZCr5pyJ6ZSZ6K+v55qE5pyA5bCPaGFzaOWAvFxuIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1MzUKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGJhZCBtYXggaGFzaFxuIgorbXNnc3RyICJAaCAlZCDkuK3lj5HnjrDpl67popjvvJolQiDlkKvmnInplJnor6/nmoTmnIDlpKdoYXNo5YC8XG4iCisKKyMuIEAtZXhwYW5kZWQ6IGludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkICglcSkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU0MAorbXNnaWQgIkBuIEBoICVkICglcSkuICAiCittc2dzdHIgIkBuQGggJWTvvIglce+8ieOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBwcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAlZCAoJXEpOiBiYWQgYmxvY2sgbnVtYmVyICViLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NDQKK21zZ2lkICJAcCBAaCAlZCAoJXEpOiBiYWQgQGIgbnVtYmVyICViLlxuIgorbXNnc3RyICJAaCAlZO+8iCVx77yJ5Lit5Y+R546w6Zeu6aKY77yaQGLnvJblj7cgJWIg5peg5pWI44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHByb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlICVkOiByb290IG5vZGUgaXMgaW52YWxpZFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQHAgQGggJWQ6IHJvb3Qgbm9kZSBpcyBAblxuIgorbXNnc3RyICJAcEBoICVk77ya57uT54K5QG5cbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGxpbWl0ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTU5Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBsaW1pdCAoJU4pXG4iCittc2dzdHIgIkBoICVkIOS4reWPkeeOsOmXrumimO+8miVCIOWQq+aciUBu6ZmQ5Yi277yIJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGNvdW50ICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTY0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBjb3VudCAoJU4pXG4iCittc2dzdHIgIkBoICVkIOS4reWPkeeOsOmXrumimO+8miVCIOWQq+aciUBu6K6h5pWw77yIJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE1NjkKK21zZ2lkICJAcCBAaCAlZDogJUIgaGFzIGFuIHVub3JkZXJlZCBoYXNoIHRhYmxlXG4iCittc2dzdHIgIkBoICVkIOS4reWPkeeOsOmXrumimO+8miVCIOWQq+acieacquaOkuW6j+eahGhhc2jooahcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6ICVCIGhhcyBpbnZhbGlkIGRlcHRoICglTilcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTc0Cittc2dpZCAiQHAgQGggJWQ6ICVCIGhhcyBAbiBkZXB0aCAoJU4pXG4iCittc2dzdHIgIkBoICVkIOS4reWPkeeOsOmXrumimO+8miVCIOWQq+aciUBu5rex5bqm77yIJU7vvIlcbiIKKworIy4gQC1leHBhbmRlZDogRHVwbGljYXRlIGVudHJ5ICclRG4nIGluICVwICglaSkgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU3OQorbXNnaWQgIkR1cGxpY2F0ZSBARSBmb3VuZC4gICIKK21zZ3N0ciAi5Y+R546wJXDvvIglae+8ieS4reaciemHjeWkjemhueKAnCVEbuKAneOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBlbnRyeSAnJURuJyBpbiAlcCAoJWkpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuXG4KKyMuIEAtZXhwYW5kZWQ6IFJlbmFtZSB0byAlcworIzogZTJmc2NrL3Byb2JsZW0uYzoxNTg0CisjLCBuby1jLWZvcm1hdAorbXNnaWQgIiIKKyJARSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLlxuIgorIlJlbmFtZSB0byAlcyIKK21zZ3N0ciAiIgorIkBF5ZCr5pyJ5LiA5Liq6Z2e5ZSv5LiA55qE5paH5Lu25ZCN44CCXG4iCisi5bey6YeN5ZG95ZCN5Li6JXMiCisKKyMuIEAtZXhwYW5kZWQ6IER1cGxpY2F0ZSBlbnRyeSAnJURuJyBmb3VuZC5cbgorIy4gQC1leHBhbmRlZDogXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU4OQorbXNnaWQgIiIKKyJEdXBsaWNhdGUgQGUgJyVEbicgZm91bmQuXG4iCisiXHRNYXJraW5nICVwICglaSkgdG8gYmUgcmVidWlsdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuWPkeeOsOS6humHjeWkjeeahEBl4oCdQERu4oCc44CCXG4iCisiXHTlsIYgJXDvvIglae+8ieagh+iusOS4uumcgOimgemHjeW7uueahOOAglxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBpX2Jsb2Nrc19oaSBmb3IgaW5vZGUgJWkgKCVRKSBpcyAlTiwgc2hvdWxkIGJlIHplcm8uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTU5NAorbXNnaWQgImlfYmxvY2tzX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJAaSAlae+8iCVR77yJ55qEaV9ibG9ja3NfaGnkuLogJU7vvIxAczDjgIJcbiIKKworIy4gQC1leHBhbmRlZDogVW5leHBlY3RlZCBibG9jayBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQgKCVxKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNTk5Cittc2dpZCAiVW5leHBlY3RlZCBAYiBpbiBAaCAlZCAoJXEpLlxuIgorbXNnc3RyICJAaCAlZO+8iCVx77yJ5Lit5pyJ6aKd5aSW55qEQGLjgIJcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBpbiBncm91cCAlZyB3aGVyZSBfSU5PREVfVU5JTklUIGlzIHNldC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjAzCittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgaW4gQGcgJWcgd2hlcmUgX0lOT0RFX1VOSU5JVCBpcyBzZXQuXG4iCittc2dzdHIgIkBF5byV55So5LqGQGcgJWcg5Lit55qEQGkgJURp77yM5L2G6K+lQGfooqvorr7nva7kuoZfSU5PREVfVU5JTklU5qCH5b+X44CCICBcbiIKKworIy4gQC1leHBhbmRlZDogZW50cnkgJyVEbicgaW4gJXAgKCVpKSByZWZlcmVuY2VzIGlub2RlICVEaSBmb3VuZCBpbiBncm91cCAlZydzIHVudXNlZCBpbm9kZXMgYXJlYS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjA4Cittc2dpZCAiQEUgcmVmZXJlbmNlcyBAaSAlRGkgZm91bmQgaW4gQGcgJWcncyB1bnVzZWQgaW5vZGVzIGFyZWEuXG4iCittc2dzdHIgIkBF5byV55So5LqGQGcgJWcg5Lit55qEQGkgJURp77yM5L2G6K+lQGnkvY3kuo7mnKrkvb/nlKhpbm9kZeWMuuOAgiAgXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGlfZmlsZV9hY2xfaGkgZm9yIGlub2RlICVpICglUSkgaXMgJU4sIHNob3VsZCBiZSB6ZXJvLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2MTMKK21zZ2lkICJpX2ZpbGVfYWNsX2hpIEBGICVOLCBAcyB6ZXJvLlxuIgorbXNnc3RyICJAaSAlaSDvvIglUe+8ieeahGlfZmlsZV9hY2xfaGnkuLogJU7vvIxAczDjgIJcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IHJvb3Qgbm9kZSBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkBwIEBoICVkOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4iCittc2dzdHIgIkBwQGggJWTvvJrmoLnnu5PngrnnmoTmoKHpqozlgLzplJnor6/jgIJcbiIKKworIy4gQC1leHBhbmRlZDogcHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgJWQ6IGludGVybmFsIG5vZGUgZmFpbHMgY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyMworIywgYy1mb3JtYXQKK21zZ2lkICJAcCBAaCAlZDogaW50ZXJuYWwgbm9kZSBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQHBAaCAlZO+8muWGhemDqOe7k+eCueeahOagoemqjOWAvOmUmeivr+OAglxuIgorCisjLiBALWV4cGFuZGVkOiBkaXJlY3RvcnkgaW5vZGUgJWksICVCLCBvZmZzZXQgJU46IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYyOAorbXNnaWQgIkBkIEBpICVpLCAlQiwgb2Zmc2V0ICVOOiBAZCBoYXMgbm8gY2hlY2tzdW0uXG4iCittc2dzdHIgIkBkQGkgJWnvvIwlQu+8jOWBj+enu+mHjyAlTu+8mkBk57y65bCR5qCh6aqM5YC844CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGRpcmVjdG9yeSBpbm9kZSAlaSwgJUI6IGRpcmVjdG9yeSBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjMzCittc2dpZCAiQGQgQGkgJWksICVCOiBAZCBwYXNzZXMgY2hlY2tzIGJ1dCBmYWlscyBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGRAaSAlae+8jCVC77yaQGTpgJrov4fkuobmo4DpqozvvIzkvYbmoKHpqozlgLzplJnor6/jgIJcbiIKKworIy4gQC1leHBhbmRlZDogSW5saW5lIGRpcmVjdG9yeSBpbm9kZSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTYzOAorbXNnaWQgIklubGluZSBAZCBAaSAlaSBzaXplICglTikgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQuXG4iCittc2dzdHIgIuWGheiBlEBkIEBpICVpIOeahOWkp+Wwj++8iCVO77yJ5b+F6aG75Li6NOeahOaVtOaVsOWAjeOAglxuIgorCisjLiBALWV4cGFuZGVkOiBGaXhpbmcgc2l6ZSBvZiBpbmxpbmUgZGlyZWN0b3J5IGlub2RlICVpIGZhaWxlZC5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNjQzCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpeGluZyBzaXplIG9mIGlubGluZSBAZCBAaSAlaSBmYWlsZWQuXG4iCittc2dzdHIgIuS/ruWkjeWGheiBlEBkIEBpICVpIOeahOWkp+Wwj+Wksei0peOAglxuIgorCisjLiBALWV4cGFuZGVkOiBFbmNyeXB0ZWQgZW50cnkgJyVEbicgaW4gJXAgKCVpKSBpcyB0b28gc2hvcnQuXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY0OAorbXNnaWQgIkVuY3J5cHRlZCBARSBpcyB0b28gc2hvcnQuXG4iCittc2dzdHIgIuWKoOWvhueahEBF5aSq55+t44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NTUKK21zZ2lkICJQYXNzIDM6IENoZWNraW5nIEBkIGNvbm5lY3Rpdml0eVxuIgorbXNnc3RyICLnrKwgMyDmraXvvJrmo4Dmn6Xnm67lvZXov57mjqXmgKdcbiIKKworIy4gQC1leHBhbmRlZDogcm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjAKK21zZ2lkICJAciBub3QgYWxsb2NhdGVkLiAgIgorbXNnc3RyICJAcuacquiiq+WIhumFjeOAgiAgIgorCisjLiBALWV4cGFuZGVkOiBObyByb29tIGluIGxvc3QrZm91bmQgZGlyZWN0b3J5LiAgCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2NjUKK21zZ2lkICJObyByb29tIGluIEBsIEBkLiAgIgorbXNnc3RyICJAbEBk5Lit5rKh5pyJ56m66Ze044CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IFVuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAlaSAoJXApXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJVbmNvbm5lY3RlZCBAZCBAaSAlaSAoJXApXG4iCittc2dzdHIgIuacquiiq+i/nuaOpeeahEBkQGkgJWnvvIglcO+8iVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBub3QgZm91bmQuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY3NQorbXNnaWQgIi9AbCBub3QgZm91bmQuICAiCittc2dzdHIgIi9AbOacquaJvuWIsOOAgiIKKworIy4gQC1leHBhbmRlZDogJy4uJyBpbiAlUSAoJWkpIGlzICVQICglaiksIHNob3VsZCBiZSAlcSAoJWQpLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODAKK21zZ2lkICInLi4nIGluICVRICglaSkgaXMgJVAgKCVqKSwgQHMgJXEgKCVkKS5cbiIKK21zZ3N0ciAiJVHvvIglae+8ieS4reeahOKAnC4u4oCd5Li6ICVQ77yIJWrvvInvvIxAcyAlce+8iCVk77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEJhZCBvciBub24tZXhpc3RlbnQgL2xvc3QrZm91bmQuICBDYW5ub3QgcmVjb25uZWN0LlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2ODUKK21zZ2lkICJCYWQgb3Igbm9uLWV4aXN0ZW50IC9AbC4gIENhbm5vdCByZWNvbm5lY3QuXG4iCittc2dzdHIgIumUmeivr+aIluS4jeWtmOWcqOeahC9AbOOAguaXoOazlemHjeaWsOi/nuaOpeOAglxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZCBub3QgZXhwYW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE2OTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGQgbm90IGV4cGFuZCAvQGw6ICVtXG4iCittc2dzdHIgIuaXoOazleaJqeWFhS9AbO+8miVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTY5NQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3QgcmVjb25uZWN0ICVpOiAlbVxuIgorbXNnc3RyICLml6Dms5Xph43mlrDov57mjqUlae+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHdoaWxlIHRyeWluZyB0byBmaW5kIC9sb3N0K2ZvdW5kOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgL0BsOiAlbVxuIgorbXNnc3RyICLlsJ3or5Xmn6Xmib4vQGzml7blh7rplJnvvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBleHQyZnNfbmV3X2Jsb2NrOiAlbSB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIC9sb3N0K2ZvdW5kIGRpcmVjdG9yeVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXh0MmZzX25ld19AYjogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvQGwgQGRcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19ibG9ja++8muWwneivleWIm+W7ui9AbEBk5pe2JW1cbiIKKworIy4gQC1leHBhbmRlZDogZXh0MmZzX25ld19pbm9kZTogJW0gd2hpbGUgdHJ5aW5nIHRvIGNyZWF0ZSAvbG9zdCtmb3VuZCBkaXJlY3RvcnlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzEwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc19uZXdfQGk6ICVtIHdoaWxlIHRyeWluZyB0byBjcmVhdGUgL0BsIEBkXG4iCittc2dzdHIgImV4dDJmc19uZXdfaW5vZGXvvJrlsJ3or5XliJvlu7ovQGxAZOaXtiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc19uZXdfZGlyX2Jsb2NrOiAlbSB3aGlsZSBjcmVhdGluZyBuZXcgZGlyZWN0b3J5IGJsb2NrXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcxNQorIywgYy1mb3JtYXQKK21zZ2lkICJleHQyZnNfbmV3X2Rpcl9AYjogJW0gd2hpbGUgY3JlYXRpbmcgbmV3IEBkIEBiXG4iCittc2dzdHIgImV4dDJmc19uZXdfZGlyX2Jsb2Nr77ya5Yib5bu65paw55qEQGRAYuaXtiVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGV4dDJmc193cml0ZV9kaXJfYmxvY2s6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIGRpcmVjdG9yeSBibG9jayBmb3IgL2xvc3QrZm91bmRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzIwCisjLCBjLWZvcm1hdAorbXNnaWQgImV4dDJmc193cml0ZV9kaXJfQGI6ICVtIHdoaWxlIHdyaXRpbmcgdGhlIEBkIEBiIGZvciAvQGxcbiIKK21zZ3N0ciAiZXh0MmZzX25ld19kaXJfYmxvY2vvvJrkuLovQGzliJvlu7rmlrDnmoRAZEBi5pe2JW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3Igd2hpbGUgYWRqdXN0aW5nIGlub2RlIGNvdW50IG9uIGlub2RlICVpXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3aGlsZSBhZGp1c3RpbmcgQGkgY291bnQgb24gQGkgJWlcbiIKK21zZ3N0ciAi6LCD5pW0QGkgJWnnmoRpbm9kZeiuoeaVsOaXtuWHuumUmVxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiAlbVxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDb3VsZG4ndCBmaXggcGFyZW50IG9mIEBpICVpOiAlbVxuIgorIlxuIgorbXNnc3RyICIiCisi5peg5rOV5L+u5pS5QGkgJWnnmoTniLboioLngrnvvJolbVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBDb3VsZG4ndCBmaXggcGFyZW50IG9mIGlub2RlICVpOiBDb3VsZG4ndCBmaW5kIHBhcmVudCBkaXJlY3RvcnkgZW50cnlcbgorIy4gQC1leHBhbmRlZDogXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTczNQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiQ291bGRuJ3QgZml4IHBhcmVudCBvZiBAaSAlaTogQ291bGRuJ3QgZmluZCBwYXJlbnQgQGQgQGVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIuaXoOazleS/ruaUuUBpICVp55qE54i26IqC54K577ya5peg5rOV5om+5Yiw5YW254i2QGRAZVxuIgorIlxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjcmVhdGluZyByb290IGRpcmVjdG9yeSAoJXMpOiAlbVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY3JlYXRpbmcgcm9vdCBAZCAoJXMpOiAlbVxuIgorbXNnc3RyICLliJvlu7rmoLlAZO+8iCVz77yJ5pe25Ye66ZSZ77yaJW1cbiIKKworIy4gQC1leHBhbmRlZDogRXJyb3IgY3JlYXRpbmcgL2xvc3QrZm91bmQgZGlyZWN0b3J5ICglcyk6ICVtXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc1MAorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBjcmVhdGluZyAvQGwgQGQgKCVzKTogJW1cbiIKK21zZ3N0ciAi5Yib5bu6L0BsQGTvvIglc++8ieaXtuWHuumUme+8miVtXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHJvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5OyBhYm9ydGluZy5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzU1Cittc2dpZCAiQHIgaXMgbm90IGEgQGQ7IGFib3J0aW5nLlxuIgorbXNnc3RyICJAcuS4jeaYr+S4gOS4qkBk77yb5bey57uI5q2i5omn6KGM44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBwcm9jZWVkIHdpdGhvdXQgYSByb290IGlub2RlLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NjAKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRob3V0IGEgQHIuXG4iCittc2dzdHIgIuaXoOazleWcqOayoeaciUBy55qE5oOF5Ya15LiL57un57ut44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IC9sb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeSAoaW5vPSVpKVxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3NzAKKyMsIGMtZm9ybWF0Cittc2dpZCAiL0BsIGlzIG5vdCBhIEBkIChpbm89JWkpXG4iCittc2dzdHIgIi9AbCDkuI3mmK/kuIDkuKpAZO+8iGlubz0lae+8iVxuIgorCisjLiBALWV4cGFuZGVkOiAvbG9zdCtmb3VuZCBoYXMgaW5saW5lIGRhdGFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzc1Cittc2dpZCAiL0BsIGhhcyBpbmxpbmUgZGF0YVxuIgorbXNnc3RyICIvQGwg5ZCr5pyJ5YaF6IGU5pWw5o2uXG4iCisKKyMuIEAtZXhwYW5kZWQ6IENhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuXG4KKyMuIEAtZXhwYW5kZWQ6IFBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZAorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzgwCittc2dpZCAiIgorIkNhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL0BsLlxuIgorIlBsYWNlIGxvc3QgZmlsZXMgaW4gcm9vdCBkaXJlY3RvcnkgaW5zdGVhZCIKK21zZ3N0ciAiIgorIuaXoOazleS4uiAvQGwg5YiG6YWN56m66Ze044CCXG4iCisi6K+35bCG5Lii5aSx55qE5paH5Lu2572u5LqO5qC555uu5b2V5LiLIgorCisjLiBALWV4cGFuZGVkOiBJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIVxuCisjLiBALWV4cGFuZGVkOiBNb3ZlIGRhdGEgb2ZmIHRoZSBmaWxlc3lzdGVtIGFuZCByZS1ydW4gZTJmc2NrLlxuCisjLiBALWV4cGFuZGVkOiBcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxNzg1Cittc2dpZCAiIgorIkluc3VmZmljaWVudCBzcGFjZSB0byByZWNvdmVyIGxvc3QgZmlsZXMhXG4iCisiTW92ZSBkYXRhIG9mZiB0aGUgQGYgYW5kIHJlLXJ1biBlMmZzY2suXG4iCisiXG4iCittc2dzdHIgIiIKKyLmsqHmnInotrPlpJ/nmoTnqbrpl7TmnaXlm57lpI3kuKLlpLHmlofku7bvvIFcbiIKKyLor7flsIbmlbDmja7ku45AZuS4reenu+WHuu+8jOeEtuWQjumHjeaWsOi/kOihjCBlMmZzY2vjgIJcbiIKKyJcbiIKKworIy4gQC1leHBhbmRlZDogL2xvc3QrZm91bmQgaXMgZW5jcnlwdGVkXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTc5MAorbXNnaWQgIi9AbCBpcyBlbmNyeXB0ZWRcbiIKK21zZ3N0ciAiL0BsIOW3suiiq+WKoOWvhlxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE3OTcKK21zZ2lkICJQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzXG4iCittc2dzdHIgIuesrCAzQSDmraXvvJrkvJjljJbnm67lvZVcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODAyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgZGlyc190b19oYXNoIGl0ZXJhdG9yOiAlbVxuIgorbXNnc3RyICLliJvlu7pkaXJzX3RvX2hhc2jov63ku6Plmajlh7rplJnvvJolbVxuIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MDcKK21zZ2lkICJGYWlsZWQgdG8gb3B0aW1pemUgZGlyZWN0b3J5ICVxICglZCk6ICVtXG4iCittc2dzdHIgIuS8mOWMluebruW9lSAlce+8iCVk77yJ5aSx6LSl77yaJW1cbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxODEyCittc2dpZCAiT3B0aW1pemluZyBkaXJlY3RvcmllczogIgorbXNnc3RyICLkvJjljJbnm67lvZXvvJogIgorCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4MjkKK21zZ2lkICJQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHNcbiIKK21zZ3N0ciAi56ysIDQg5q2l77ya5qOA5p+l5byV55So6K6h5pWwXG4iCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgJWkuICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTgzNAorIywgYy1mb3JtYXQKK21zZ2lkICJAdSBAeiBAaSAlaS4gICIKK21zZ3N0ciAiQHVAekBpICVp44CCICAiCisKKyMuIEAtZXhwYW5kZWQ6IHVuYXR0YWNoZWQgaW5vZGUgJWlcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODM5CisjLCBjLWZvcm1hdAorbXNnaWQgIkB1IEBpICVpXG4iCittc2dzdHIgIkB1QGkgJWnjgIIgIFxuIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSAlaSByZWYgY291bnQgaXMgJUlsLCBzaG91bGQgYmUgJU4uICAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg0NAorbXNnaWQgIkBpICVpIHJlZiBjb3VudCBpcyAlSWwsIEBzICVOLiAgIgorbXNnc3RyICJAaSAlaSDnmoTlvJXnlKjorqHmlbDkuLogJUls77yMQHMgJU7jgIIgICIKKworIy4gQC1leHBhbmRlZDogV0FSTklORzogUFJPR1JBTU1JTkcgQlVHIElOIEUyRlNDSyFcbgorIy4gQC1leHBhbmRlZDogXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbgorIy4gQC1leHBhbmRlZDogaW5vZGVfbGlua19pbmZvWyVpXSBpcyAlTiwgaW5vZGUuaV9saW5rc19jb3VudCBpcyAlSWwuICBUaGV5IHNob3VsZCBiZSB0aGUgc2FtZSFcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxODQ4Cittc2dpZCAiIgorIldBUk5JTkc6IFBST0dSQU1NSU5HIEJVRyBJTiBFMkZTQ0shXG4iCisiXHRPUiBTT01FIEJPTkVIRUFEIChZT1UpIElTIENIRUNLSU5HIEEgTU9VTlRFRCAoTElWRSkgRklMRVNZU1RFTS5cbiIKKyJAaV9saW5rX2luZm9bJWldIGlzICVOLCBAaS5pX2xpbmtzX2NvdW50IGlzICVJbC4gIFRoZXkgQHMgdGhlIHNhbWUhXG4iCittc2dzdHIgIiIKKyLorablkYrvvJplMmZzY2vkuK3lh7rnjrDnqIvluo/plJnor6/vvIFcbiIKKyJcdOaIluiAheaYr++8iOeyl+W/g+Wkp+aEj+eahO+8ieS9oOato+WcqOajgOafpeS4gOS4quiiq+aMgui9veeahO+8iOa0u+WKqOeahO+8ieaWh+S7tuezu+e7n+OAglxuIgorIkBpX2xpbmtfaW5mb1slaV0g5Li6ICVO77yMQGkuaV9saW5rc19jb3VudCDkuLogJUls44CC5a6D5Lus5bqU5b2T55u45ZCM77yBXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvblxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE4NTgKK21zZ2lkICJQYXNzIDU6IENoZWNraW5nIEBnIHN1bW1hcnkgaW5mb3JtYXRpb25cbiIKK21zZ3N0ciAi56ysIDUg5q2l77ya5qOA5p+lQGfmpoLopoHkv6Hmga9cbiIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgaW5vZGUgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODYzCittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGkgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJAaUBC5pyr5bC+55qE5aGr5YWF5YC85pyq6K6+572u44CCICIKKworIy4gQC1leHBhbmRlZDogUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODY4Cittc2dpZCAiUGFkZGluZyBhdCBlbmQgb2YgQGIgQEIgaXMgbm90IHNldC4gIgorbXNnc3RyICJAYkBC5pyr5bC+55qE5aGr5YWF5YC85pyq6K6+572u44CCICIKKworIy4gQC1leHBhbmRlZDogYmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAKKyM6IGUyZnNjay9wcm9ibGVtLmM6MTg3MworbXNnaWQgIkBiIEBCIGRpZmZlcmVuY2VzOiAiCittc2dzdHIgIkBiQELnmoTlt67lvILvvJogIgorCisjLiBALWV4cGFuZGVkOiBpbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IAorIzogZTJmc2NrL3Byb2JsZW0uYzoxODkzCittc2dpZCAiQGkgQEIgZGlmZmVyZW5jZXM6ICIKK21zZ3N0ciAiQGlAQueahOW3ruW8gu+8miAiCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTEzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuIgorbXNnc3RyICJAZyAjJWfnmoTlj6/nlKhAaeiuoeaVsOmUmeivr++8iCVp77yM5a6e6ZmF5Li6JWrvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMlZyAoJWksIGNvdW50ZWQ9JWopLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5MTgKK21zZ2lkICJEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgQGcgIyVnICglaSwgY291bnRlZD0laikuXG4iCittc2dzdHIgIkBnICMlZ+eahOebruW9leiuoeaVsOmUmeivr++8iCVp77yM5a6e6ZmF5Li6JWrvvIlcbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTIzCittc2dpZCAiRnJlZSBAaXMgY291bnQgd3JvbmcgKCVpLCBjb3VudGVkPSVqKS5cbiIKK21zZ3N0ciAi5Y+v55SoQGnmlbDplJnor6/vvIglae+8jOWunumZheS4uiVq77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IEZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjJWcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTI4Cittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgZm9yIEBnICMlZyAoJWIsIGNvdW50ZWQ9JWMpLlxuIgorbXNnc3RyICJAZyAjJWfnmoTlj6/nlKhAYuiuoeaVsOmUmeivr++8iCVp77yM5a6e6ZmF5Li6JWrvvInjgIJcbiIKKworIy4gQC1leHBhbmRlZDogRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTMzCittc2dpZCAiRnJlZSBAYnMgY291bnQgd3JvbmcgKCViLCBjb3VudGVkPSVjKS5cbiIKK21zZ3N0ciAi5Y+v55SoQGLmlbDplJnor6/vvIglae+8jOWunumZheS4uiVq77yJXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFBST0dSQU1NSU5HIEVSUk9SOiBmaWxlc3lzdGVtICgjJU4pIGJpdG1hcCBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBiaXRtYXAgCisjLiBALWV4cGFuZGVkOiBlbmRwb2ludHMgKCVpLCAlailcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTM4Cittc2dpZCAiIgorIlBST0dSQU1NSU5HIEVSUk9SOiBAZiAoIyVOKSBAQiBlbmRwb2ludHMgKCViLCAlYykgZG9uJ3QgbWF0Y2ggY2FsY3VsYXRlZCBAQiAiCisiZW5kcG9pbnRzICglaSwgJWopXG4iCittc2dzdHIgIueoi+W6j+mUmeivr++8mkBm77yIIyAlbu+8iUBC56uv54K577yIJWLvvIwlY++8ieS4juiuoeeul+WAvO+8iCVp77yMJWrvvInkuI3nrKZcbiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3I6IGZ1ZGdpbmcgZW5kIG9mIGJpdG1hcCAoJU4pXG4iCittc2dzdHIgIuWGhemDqOmUmeivr++8muiZmuaehOeahOS9jeWbvuerr+eCuVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGlub2RlIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGkgQEI6ICVtXG4iCittc2dzdHIgIuabv+aNokBpQELml7bmi7fotJ3plJnor6/vvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBFcnJvciBjb3B5aW5nIGluIHJlcGxhY2VtZW50IGJsb2NrIGJpdG1hcDogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTU0CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIGNvcHlpbmcgaW4gcmVwbGFjZW1lbnQgQGIgQEI6ICVtXG4iCittc2dzdHIgIuabv+aNokBiQELml7bmi7fotJ3plJnor6/vvJolbVxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayhzKSBpbiB1c2UgYnV0IGdyb3VwIGlzIG1hcmtlZCBCTE9DS19VTklOSVRcbgorIzogZTJmc2NrL3Byb2JsZW0uYzoxOTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkBnICVnIEBiKHMpIGluIHVzZSBidXQgQGcgaXMgbWFya2VkIEJMT0NLX1VOSU5JVFxuIgorbXNnc3RyICJAZyAlZyBAYuW3suiiq+S9v+eUqO+8jOS9hkBn6KKr5qCH6K6w5Li6QkxPQ0tfVU5JTklUXG4iCisKKyMuIEAtZXhwYW5kZWQ6IGdyb3VwICVnIGlub2RlKHMpIGluIHVzZSBidXQgZ3JvdXAgaXMgbWFya2VkIElOT0RFX1VOSU5JVFxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODQKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkocykgaW4gdXNlIGJ1dCBAZyBpcyBtYXJrZWQgSU5PREVfVU5JTklUXG4iCittc2dzdHIgIkBnICVnIEBp5bey6KKr5L2/55So77yM5L2GQGfooqvmoIforrDkuLpJTk9ERV9VTklOSVRcbiIKKworIy4gQC1leHBhbmRlZDogZ3JvdXAgJWcgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLlxuCisjOiBlMmZzY2svcHJvYmxlbS5jOjE5ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiQGcgJWcgQGkgQEIgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4iCittc2dzdHIgIkBnICVnIEBpIEBCIOS4juiHqui6q+agoemqjOWAvOS4jeespuOAglxuIgorCisjLiBALWV4cGFuZGVkOiBncm91cCAlZyBibG9jayBiaXRtYXAgZG9lcyBub3QgbWF0Y2ggY2hlY2tzdW0uXG4KKyM6IGUyZnNjay9wcm9ibGVtLmM6MTk5NAorIywgYy1mb3JtYXQKK21zZ2lkICJAZyAlZyBAYiBAQiBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS5cbiIKK21zZ3N0ciAiQGcgJWcgQGIgQEIg5LiO6Ieq6Lqr5qCh6aqM5YC85LiN56ym44CCXG4iCisKKyMuIEAtZXhwYW5kZWQ6IFJlY3JlYXRlIGpvdXJuYWwKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAwMQorbXNnaWQgIlJlY3JlYXRlIEBqIgorbXNnc3RyICLph43lu7pAaiIKKworIzogZTJmc2NrL3Byb2JsZW0uYzoyMDA2Cittc2dpZCAiVXBkYXRlIHF1b3RhIGluZm8gZm9yIHF1b3RhIHR5cGUgJU4iCittc2dzdHIgIuabtOaWsOmFjemineexu+WeiyAlTiDnmoTphY3pop3kv6Hmga8iCisKKyMuIEAtZXhwYW5kZWQ6IEVycm9yIHNldHRpbmcgYmxvY2sgZ3JvdXAgY2hlY2tzdW0gaW5mbzogJW1cbgorIzogZTJmc2NrL3Byb2JsZW0uYzoyMDExCisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHNldHRpbmcgQGIgQGcgY2hlY2tzdW0gaW5mbzogJW1cbiIKK21zZ3N0ciAi6K6+572uQGJAZ+eahOagoemqjOS/oeaBr+aXtuWHuumUme+8miVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAxNgorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB3cml0aW5nIGZpbGUgc3lzdGVtIGluZm86ICVtXG4iCittc2dzdHIgIuWGmeWFpeaWh+S7tuezu+e7n+S/oeaBr+aXtuWHuumUme+8miVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyMQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciBmbHVzaGluZyB3cml0ZXMgdG8gc3RvcmFnZSBkZXZpY2U6ICVtXG4iCittc2dzdHIgIuWwhue8k+WGsuWGmeWFpeWIsOWtmOWCqOiuvuWkh++8miVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjAyNgorbXNnaWQgIkVycm9yIHdyaXRpbmcgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAlTjogJW1cbiIKK21zZ3N0ciAi5YaZ5YWl6YWN6aKd57G75Z6LICVOIOeahOmFjemineS/oeaBr+aXtuWHuumUme+8miVtXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjE0NworIywgYy1mb3JtYXQKK21zZ2lkICJVbmhhbmRsZWQgZXJyb3IgY29kZSAoMHgleCkhXG4iCittc2dzdHIgIuacquWkhOeQhueahOmUmeivr+eggSDvvIgweCV477yJ77yBXG4iCisKKyM6IGUyZnNjay9wcm9ibGVtLmM6MjI3MiBlMmZzY2svcHJvYmxlbS5jOjIyNzYKK21zZ2lkICJJR05PUkVEIgorbXNnc3RyICLlt7Llv73nlaUiCisKKyM6IGUyZnNjay9xdW90YS5jOjMzIGUyZnNjay9xdW90YS5jOjQ2Cittc2dpZCAiaW4gbW92ZV9xdW90YV9pbm9kZSIKK21zZ3N0ciAi5LqOIG1vdmVfcXVvdGFfaW5vZGUg5LitIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo3OQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWQsIGVsYXBzZWQgdGltZTogJTYuM2YvJTYuM2YvJTYuM2ZcbiIKK21zZ3N0ciAi5YaF5a2Y55So6YeP77yaJWTvvIzmjIHnu63ml7bpl7TvvJolNi4zZi8lNi4zZi8lNi4zZlxuIgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzo5OAorIywgYy1mb3JtYXQKK21zZ2lkICJzaXplIG9mIGlub2RlPSVkXG4iCittc2dzdHIgImlub2Rl5aSn5bCPPSVkXG4iCisKKyM6IGUyZnNjay9zY2FudGVzdC5jOjExOQorbXNnaWQgIndoaWxlIHN0YXJ0aW5nIGlub2RlIHNjYW4iCittc2dzdHIgIuW8gOWni2lub2Rl5omr5o+P5pe2IgorCisjOiBlMmZzY2svc2NhbnRlc3QuYzoxMzAKK21zZ2lkICJ3aGlsZSBkb2luZyBpbm9kZSBzY2FuIgorbXNnc3RyICLov5vooYxpbm9kZeaJq+aPj+aXtiIKKworIzogZTJmc2NrL3N1cGVyLmM6MTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2Jsb2NrX2l0ZXJhdGUgZm9yIGlub2RlICVkIgorbXNnc3RyICLkuLppbm9kZSAlZCDosIPnlKhleHQyZnNfYmxvY2tfaXRlcmF0ZeaXtiIKKworIzogZTJmc2NrL3N1cGVyLmM6MjEzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2FkanVzdF9lYV9yZWZjb3VudDIgZm9yIGlub2RlICVkIgorbXNnc3RyICLkuLppbm9kZSAlZCDosIPnlKhleHQyZnNfYWRqdXN0X2VhX3JlZmNvdW50MuaXtiIKKworIzogZTJmc2NrL3N1cGVyLmM6Mjc0Cittc2dpZCAiVHJ1bmNhdGluZyIKK21zZ3N0ciAi5q2j5Zyo5oiq5patIgorCisjOiBlMmZzY2svc3VwZXIuYzoyNzUKK21zZ2lkICJDbGVhcmluZyIKK21zZ3N0ciAi5q2j5Zyo5riF6ZmkIgorCisjOiBlMmZzY2svdW5peC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1wYW55cmNkZmt0dkRGVl0gWy1iIHN1cGVyYmxvY2tdIFstQiBibG9ja3NpemVdXG4iCisiXHRcdFstbHwtTCBiYWRfYmxvY2tzX2ZpbGVdIFstQyBmZF0gWy1qIGV4dGVybmFsX2pvdXJuYWxdXG4iCisiXHRcdFstRSBleHRlbmRlZC1vcHRpb25zXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIueUqOazle+8miVzIFstcGFueXJjZGZrdHZERlZdIFstYiDotoXnuqflnZddIFstQiDlnZflpKflsI9dXG4iCisiXHRcdFstbHwtTCDlnY/lnZfmlofku7ZdIFstQyBmZF0gWy1qIOWklumDqOaXpeW/l11cbiIKKyJcdFx0Wy1FIOaJqeWxlemAiemhuV0gIFsteiDmkqTplIDmlofku7ZdIOiuvuWkh1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyCittc2dpZCAiIgorIlxuIgorIkVtZXJnZW5jeSBoZWxwOlxuIgorIiAtcCAgICAgICAgICAgICAgICAgICBBdXRvbWF0aWMgcmVwYWlyIChubyBxdWVzdGlvbnMpXG4iCisiIC1uICAgICAgICAgICAgICAgICAgIE1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgZmlsZXN5c3RlbVxuIgorIiAteSAgICAgICAgICAgICAgICAgICBBc3N1bWUgXCJ5ZXNcIiB0byBhbGwgcXVlc3Rpb25zXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIENoZWNrIGZvciBiYWQgYmxvY2tzIGFuZCBhZGQgdGhlbSB0byB0aGUgYmFkYmxvY2sgIgorImxpc3RcbiIKKyIgLWYgICAgICAgICAgICAgICAgICAgRm9yY2UgY2hlY2tpbmcgZXZlbiBpZiBmaWxlc3lzdGVtIGlzIG1hcmtlZCBjbGVhblxuIgorbXNnc3RyICIiCisiXG4iCisi6YeN6KaB5o+Q56S677yaXG4iCisiIC1wICAgICAgICAgICAgICAgICAgIOiHquWKqOS/ruWkje+8iOS4jeivoumXru+8iVxuIgorIiAtbiAgICAgICAgICAgICAgICAgICDkuI3lr7nmlofku7bns7vnu5/lgZrku7vkvZXmm7TmlLlcbiIKKyIgLXkgICAgICAgICAgICAgICAgICAg5a+55omA5pyJ6K+i6Zeu6YO95Zue562U4oCc5piv4oCdXG4iCisiIC1jICAgICAgICAgICAgICAgICAgIOajgOafpeWPr+iDveeahOWdj+Wdl++8jOW5tuWwhuWug+S7rOWKoOWFpeWdj+Wdl+WIl+ihqFxuIgorIiAtZiAgICAgICAgICAgICAgICAgICDlvLrliLbov5vooYzmo4Dmn6XvvIzljbPkvb/mlofku7bns7vnu5/ooqvmoIforrDkuLrigJzmsqHmnInpl67popjigJ1cbiIKKworIzogZTJmc2NrL3VuaXguYzo4OAorbXNnaWQgIiIKKyIgLXYgICAgICAgICAgICAgICAgICAgQmUgdmVyYm9zZVxuIgorIiAtYiBzdXBlcmJsb2NrICAgICAgICBVc2UgYWx0ZXJuYXRpdmUgc3VwZXJibG9ja1xuIgorIiAtQiBibG9ja3NpemUgICAgICAgICBGb3JjZSBibG9ja3NpemUgd2hlbiBsb29raW5nIGZvciBzdXBlcmJsb2NrXG4iCisiIC1qIGV4dGVybmFsX2pvdXJuYWwgIFNldCBsb2NhdGlvbiBvZiB0aGUgZXh0ZXJuYWwgam91cm5hbFxuIgorIiAtbCBiYWRfYmxvY2tzX2ZpbGUgICBBZGQgdG8gYmFkYmxvY2tzIGxpc3RcbiIKKyIgLUwgYmFkX2Jsb2Nrc19maWxlICAgU2V0IGJhZGJsb2NrcyBsaXN0XG4iCisiIC16IHVuZG9fZmlsZSAgICAgICAgIENyZWF0ZSBhbiB1bmRvIGZpbGVcbiIKK21zZ3N0ciAiIgorIiAtdiAgICAgICAgICAgICAgICAgICDmmL7npLrmm7TlpJrkv6Hmga9cbiIKKyIgLWIgc3VwZXJibG9jayAgICAgICAg5L2/55So5aSH6YCJ6LaF57qn5Z2XXG4iCisiIC1CIGJsb2Nrc2l6ZSAgICAgICAgIOS9v+eUqOaMh+WumuWdl+Wkp+Wwj+adpeafpeaJvui2hee6p+Wdl1xuIgorIiAtaiBleHRlcm5hbF9qb3VybmFsICDmjIflrprlpJbpg6jml6Xlv5fnmoTkvY3nva5cbiIKKyIgLWwgYmFkX2Jsb2Nrc19maWxlICAg5re75Yqg5Yiw5oyH5a6a55qE5Z2P5Z2X5YiX6KGo77yI5paH5Lu277yJXG4iCisiIC1MIGJhZF9ibG9ja3NfZmlsZSAgIOaMh+WumuWdj+Wdl+WIl+ihqO+8iOaWh+S7tu+8iVxuIgorIiAteiB1bmRvX2ZpbGUgICAgICAgICDliJvlu7rkuIDkuKrmkqTplIDmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICV1LyV1IGZpbGVzICglMGQuJWQlJSBub24tY29udGlndW91cyksICVsbHUvJWxsdSBibG9ja3NcbiIKK21zZ3N0ciAiJXPvvJoldS8ldSDmlofku7bvvIglMGQuJWQlJSDkuLrpnZ7ov57nu63nmoTvvInvvIwgJWxsdS8lbGx1IOWdl1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTEydSBpbm9kZSB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IGlub2RlcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJXUpXG4iCittc2dzdHJbMF0gIiIKKyJcbiIKKyIlMTJ1IOS4quW3suS9v+eUqOeahGlub2Rl77yIJTIuMmYlJe+8jOaAu+WFsSAlde+8iVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGUgKCUwZC4lZCUlKVxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IG5vbi1jb250aWd1b3VzIGZpbGVzICglMGQuJWQlJSlcbiIKK21zZ3N0clswXSAiJTEydSDkuKrkuI3ov57nu63nmoTmlofku7bvvIglMGQuJWQlJe+8iVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoJTBkLiVkJSUpXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbm9uLWNvbnRpZ3VvdXMgZGlyZWN0b3JpZXMgKCUwZC4lZCUlKVxuIgorbXNnc3RyWzBdICIlMTJ1IOS4quS4jei/nue7reeahOebruW9le+8iCUwZC4lZCUl77yJXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIiAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAldS8ldS8ldVxuIgorbXNnc3RyICIgICAgICAgICAgICAgIyDkuIDmrKEv5LqM5qyhL+S4ieasoemTvuaOpeWdl+aVsO+8miV1LyV1LyV1XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTgyCittc2dpZCAiICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06ICIKK21zZ3N0ciAiICAgICAgICAgICAgIEV4dGVudOa3seW6puebtOaWueWbvu+8miAiCisKKyM6IGUyZnNjay91bml4LmM6MTkxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMmxsdSBibG9jayB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ2lkX3BsdXJhbCAiJTEybGx1IGJsb2NrcyB1c2VkICglMi4yZiUlLCBvdXQgb2YgJWxsdSlcbiIKK21zZ3N0clswXSAiJTEybGx1IOS4quW3suS9v+eUqOeahOWdl++8iCUyLjJmJSXvvIzmgLvlhbEgJWxsde+8iVxuIgorCisjOiBlMmZzY2svdW5peC5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IGJhZCBibG9ja1xuIgorbXNnaWRfcGx1cmFsICIlMTJ1IGJhZCBibG9ja3NcbiIKK21zZ3N0clswXSAiJTEydSDkuKrlnY/lnZdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsYXJnZSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGFyZ2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSDkuKrlpKfmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIiUxMnUgcmVndWxhciBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiIKKyJcbiIKKyIlMTJ1IHJlZ3VsYXIgZmlsZXNcbiIKK21zZ3N0clswXSAiIgorIlxuIgorIiUxMnUg5Liq5pmu6YCa5paH5Lu2XG4iCisKKyM6IGUyZnNjay91bml4LmM6MjAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgZGlyZWN0b3J5XG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZGlyZWN0b3JpZXNcbiIKK21zZ3N0clswXSAiJTEydSDkuKrmlofku7blpLlcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBjaGFyYWN0ZXIgZGV2aWNlIGZpbGVzXG4iCittc2dzdHJbMF0gIiUxMnUg5Liq5a2X56ym6K6+5aSH5paH5Lu2XG4iCisKKyM6IGUyZnNjay91bml4LmM6MjA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiUxMnUgYmxvY2sgZGV2aWNlIGZpbGVcbiIKK21zZ2lkX3BsdXJhbCAiJTEydSBibG9jayBkZXZpY2UgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSDkuKrlnZforr7lpIfmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWZvXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlmb3NcbiIKK21zZ3N0clswXSAiJTEydSDkuKrpmJ/liJfmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBsaW5rXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgbGlua3NcbiIKK21zZ3N0clswXSAiJTEydSDkuKrpk77mjqVcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBzeW1ib2xpYyBsaW5rIgorbXNnaWRfcGx1cmFsICIlMTJ1IHN5bWJvbGljIGxpbmtzIgorbXNnc3RyWzBdICIlMTJ1IOS4quespuWPt+mTvuaOpSIKKworIzogZTJmc2NrL3VuaXguYzoyMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiICgldSBmYXN0IHN5bWJvbGljIGxpbmspXG4iCittc2dpZF9wbHVyYWwgIiAoJXUgZmFzdCBzeW1ib2xpYyBsaW5rcylcbiIKK21zZ3N0clswXSAiIO+8iCV1IOS4quebtOaOpeespuWPt+mTvuaOpe+8iVxuIgorCisjOiBlMmZzY2svdW5peC5jOjIxOAorIywgYy1mb3JtYXQKK21zZ2lkICIlMTJ1IHNvY2tldFxuIgorbXNnaWRfcGx1cmFsICIlMTJ1IHNvY2tldHNcbiIKK21zZ3N0clswXSAiJTEydSDkuKrlpZfmjqXlrZfmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTEydSBmaWxlXG4iCittc2dpZF9wbHVyYWwgIiUxMnUgZmlsZXNcbiIKK21zZ3N0clswXSAiJTEydSDkuKrmlofku7ZcbiIKKworIzogZTJmc2NrL3VuaXguYzoyMzUgbWlzYy9iYWRibG9ja3MuYzo5OTMgbWlzYy90dW5lMmZzLmM6Mjg3OCBtaXNjL3V0aWwuYzoxMjYKKyM6IHJlc2l6ZS9tYWluLmM6MzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIuehruWumiAlcyDmmK/lkKblt7LmjILovb3ml7YiCisKKyMgTm90Ze+8mlRoZSBzZWNvbmQgIiVzIiByZXByZXNlbnRzIHRoZSBjdXJyZW50IHN0YXR1cyBvZiB0aGUgZGV2aWNlIChkZWZpbmVkIGJ5IHRoZSBmaXJzdCAiJXMiKSwgdGh1cyBpdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHRyYW5zbGF0ZSB0aGUgd29yZCAiaXMiLiBUaGUgc2Vjb25kICIlcyIgd2lsbCBzZXJ2ZSBhcyB0aGUgY29wdWxhIGFzIHdlbGwgYXMgdGhlIHByZWRpY2F0aXZlIChpbiBDaGluZXNlKS4KKyM6IGUyZnNjay91bml4LmM6MjU2CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmchICAlcyBpcyBtb3VudGVkLlxuIgorbXNnc3RyICLorablkYrvvIEgJXPlt7LooqvmjILovb3jgIJcbiIKKworIyBOb3Rl77yaVGhlIHNlY29uZCAiJXMiIHJlcHJlc2VudHMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBkZXZpY2UgKGRlZmluZWQgYnkgdGhlIGZpcnN0ICIlcyIpLCB0aHVzIGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gdHJhbnNsYXRlIHRoZSB3b3JkICJpcyIuIFRoZSBzZWNvbmQgIiVzIiB3aWxsIHNlcnZlIGFzIHRoZSBjb3B1bGEgYXMgd2VsbCBhcyB0aGUgcHJlZGljYXRpdmUgKGluIENoaW5lc2UpLgorIzogZTJmc2NrL3VuaXguYzoyNTkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZyEgICVzIGlzIGluIHVzZS5cbiIKK21zZ3N0ciAi6K2m5ZGK77yBICVz5q2j6KKr5L2/55So44CCXG4iCisKKyM6IGUyZnNjay91bml4LmM6MjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIiVzIOW3suaMgui9veOAglxuIgorCisjIFNhbWUgYXMgdGhlIGFib3ZlLgorIzogZTJmc2NrL3VuaXguYzoyNjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgaW4gdXNlLlxuIgorbXNnc3RyICIlc+ato+iiq+S9v+eUqOOAglxuIgorCisjOiBlMmZzY2svdW5peC5jOjI2OQorbXNnaWQgIiIKKyJDYW5ub3QgY29udGludWUsIGFib3J0aW5nLlxuIgorIlxuIgorbXNnc3RyICLml6Dms5Xnu6fnu63vvIzlt7LkuK3mraLjgIJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzEKK21zZ2lkICIiCisiXG4iCisiXG4iCisiV0FSTklORyEhISAgVGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZC4gICBJZiB5b3UgY29udGludWUgeW91ICoqKldJTEwqKipcbiIKKyJjYXVzZSAqKipTRVZFUkUqKiogZmlsZXN5c3RlbSBkYW1hZ2UuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcbiIKKyLorablkYrvvIHvvIHvvIHor6Xmlofku7bns7vnu5/lt7LooqvmjILovb3jgILlpoLmnpzkvaDnu6fnu63mk43kvZzlsIbkvJpcbiIKKyLkvb/mlofku7bns7vnu5/pga3lj5cgKioqIOS4pemHjeaNn+WdjyAqKirvvIFcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoyNzYKK21zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gY29udGludWUiCittc2dzdHIgIuS9oOecn+eahOaDs+imgee7p+e7reWQlyIKKworIzogZTJmc2NrL3VuaXguYzoyNzgKK21zZ2lkICJjaGVjayBhYm9ydGVkLlxuIgorbXNnc3RyICLmo4Dmn6XooqvkuK3mraLjgIJcbiIKKworIzogZTJmc2NrL3VuaXguYzozNzEKK21zZ2lkICIgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycyIKK21zZ3N0ciAiIOacieS4gOS4quWQq+aciemUmeivr+eahOaWh+S7tuezu+e7nyIKKworIzogZTJmc2NrL3VuaXguYzozNzMKK21zZ2lkICIgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCIKK21zZ3N0ciAiIOacquiiq+W9u+W6leWNuOi9vSIKKworIzogZTJmc2NrL3VuaXguYzozNzUKK21zZ2lkICIgcHJpbWFyeSBzdXBlcmJsb2NrIGZlYXR1cmVzIGRpZmZlcmVudCBmcm9tIGJhY2t1cCIKK21zZ3N0ciAiIOS4u+i2hee6p+Wdl+S4juWkh+S7vei2hee6p+Wdl+acieW3ruW8giIKKworIzogZTJmc2NrL3VuaXguYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBiZWVuIG1vdW50ZWQgJXUgdGltZXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIg5bey6KKr5oyC6L29ICV1IOasoe+8jOS9huWwmuacquiiq+ajgOafpSIKKworIzogZTJmc2NrL3VuaXguYzozODYKK21zZ2lkICIgaGFzIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRpbWUgaW4gdGhlIGZ1dHVyZSIKK21zZ3N0ciAiIOS4iuS4gOasoeajgOafpeeahOaXtumXtOWcqOacquadpSIKKworIzogZTJmc2NrL3VuaXguYzozOTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIGhhcyBnb25lICV1IGRheXMgd2l0aG91dCBiZWluZyBjaGVja2VkIgorbXNnc3RyICIg5bey6LaF6L+HICV1IOacquiiq+ajgOafpSIKKworIzogZTJmc2NrL3VuaXguYzo0MDEKK21zZ2lkICIsIGNoZWNrIGZvcmNlZC5cbiIKK21zZ3N0ciAi77yM5by65Yi26L+b6KGM5qOA5p+l44CCXG4iCisKKyM6IGUyZnNjay91bml4LmM6NDM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBjbGVhbiwgJXUvJXUgZmlsZXMsICVsbHUvJWxsdSBibG9ja3MiCittc2dzdHIgIiVz77ya5rKh5pyJ6Zeu6aKY77yMJXUvJXUg5paH5Lu277yMJWxsdS8lbGx1IOWdlyIKKworIzogZTJmc2NrL3VuaXguYzo0NTQKK21zZ2lkICIgKGNoZWNrIGRlZmVycmVkOyBvbiBiYXR0ZXJ5KSIKK21zZ3N0ciAiIO+8iOato+WcqOS9v+eUqOeUteaxoO+8m+W3suaOqOi/n+ajgOafpe+8iSIKKworIzogZTJmc2NrL3VuaXguYzo0NTcKK21zZ2lkICIgKGNoZWNrIGFmdGVyIG5leHQgbW91bnQpIgorbXNnc3RyICLvvIjlsIbkuo7kuIvmrKHmjILovb3ml7bov5vooYzmo4Dmn6XvvIkiCisKKyM6IGUyZnNjay91bml4LmM6NDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiAoY2hlY2sgaW4gJWxkIG1vdW50cykiCittc2dzdHIgIiDvvIjmr4/mjILovb0gJWxkIOasoeWwsei/m+ihjOajgOafpe+8iSIKKworIzogZTJmc2NrL3VuaXguYzo2MDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiRVJST1I6IENvdWxkbid0IG9wZW4gL2Rldi9udWxsICglcylcbiIKK21zZ3N0ciAi6ZSZ6K+v77ya5peg5rOV5omT5byAL2Rldi9udWxs77yIJXPvvIlcbiIKKworIzogZTJmc2NrL3VuaXguYzo2NzkKK21zZ2lkICJJbnZhbGlkIEVBIHZlcnNpb24uXG4iCittc2dzdHIgIuaXoOaViOeahEVB54mI5pys5Y+344CCXG4iCisKKyM6IGUyZnNjay91bml4LmM6NjkyCittc2dpZCAiSW52YWxpZCByZWFkYWhlYWQgYnVmZmVyIHNpemUuXG4iCittc2dzdHIgIumihOivu+WPlue8k+WGsuWMuuWkp+Wwj+aXoOaViOOAglxuIgorCisjOiBlMmZzY2svdW5peC5jOjcyNQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIGV4dGVuZGVkIG9wdGlvbjogJXNcbiIKK21zZ3N0ciAi5pyq55+l55qE5omp5bGV5bGe5oCn77yaJXNcbiIKKworIzogZTJmc2NrL3VuaXguYzo3NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlN5bnRheCBlcnJvciBpbiBlMmZzY2sgY29uZmlnIGZpbGUgKCVzLCBsaW5lICMlZClcbiIKKyJcdCVzXG4iCittc2dzdHIgIiIKKyJlMmZzY2sg6YWN572u5paH5Lu25Lit6K+t5rOV6ZSZ6K+v77yIJXPvvIznrKwgJWQg6KGM77yJXG4iCisiXHQlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjgyNQorIywgYy1mb3JtYXQKK21zZ2lkICJFcnJvciB2YWxpZGF0aW5nIGZpbGUgZGVzY3JpcHRvciAlZDogJXNcbiIKK21zZ3N0ciAi6aqM6K+B5paH5Lu25o+P6L+w56ymICVkIOaXtuWHuumUme+8miVzXG4iCisKKyM6IGUyZnNjay91bml4LmM6ODI5Cittc2dpZCAiSW52YWxpZCBjb21wbGV0aW9uIGluZm9ybWF0aW9uIGZpbGUgZGVzY3JpcHRvciIKK21zZ3N0ciAi5peg5pWI55qE5paH5Lu25o+P6L+w56ym5L+h5oGvIgorCisjOiBlMmZzY2svdW5peC5jOjg0NAorbXNnaWQgIk9ubHkgb25lIG9mIHRoZSBvcHRpb25zIC1wLy1hLCAtbiBvciAteSBtYXkgYmUgc3BlY2lmaWVkLiIKK21zZ3N0ciAi5Y+q6IO95L2/55So6YCJ6aG5IC1wLy1h44CBLW4g5oiWIC15IOWFtuS4reS5i+S4gOOAgiIKKworIzogZTJmc2NrL3VuaXguYzo4NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIC10IG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCittc2dzdHIgIuatpOeJiOacrOeahGUyZnNja+S4jeaUr+aMgSAtdCDpgInpobnjgIJcbiIKKworIzogZTJmc2NrL3VuaXguYzo4OTYgZTJmc2NrL3VuaXguYzo5NzMgbWlzYy9lMmluaXRyZF9oZWxwZXIuYzozMzAKKyM6IG1pc2MvdHVuZTJmcy5jOjE1OTggbWlzYy90dW5lMmZzLmM6MTg5MyBtaXNjL3R1bmUyZnMuYzoxOTExCisjLCBjLWZvcm1hdAorbXNnaWQgIlVuYWJsZSB0byByZXNvbHZlICclcyciCittc2dzdHIgIuaXoOazleino+aekOKAnCVz4oCdIgorCisjOiBlMmZzY2svdW5peC5jOjk1MgorbXNnaWQgIlRoZSAtbiBhbmQgLUQgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiJXPvvJotbiDlkowgLUQg6YCJ6aG55piv5LqS55u45o6S5pal55qE44CCIgorCisjOiBlMmZzY2svdW5peC5jOjk1NworbXNnaWQgIlRoZSAtbiBhbmQgLWMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiJXPvvJotbiDlkowgLWMg6YCJ6aG55piv5LqS55u45o6S5pal55qE44CCIgorCisjOiBlMmZzY2svdW5peC5jOjk2MgorbXNnaWQgIlRoZSAtbiBhbmQgLWwvLUwgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKK21zZ3N0ciAiJXPvvJotbiDlkowgLWwvLUwg6YCJ6aG55piv55u45LqS5o6S5pal55qE44CCIgorCisjOiBlMmZzY2svdW5peC5jOjk4NgorbXNnaWQgIlRoZSAtRCBhbmQgLUUgZml4ZXNfb25seSBvcHRpb25zIGFyZSBpbmNvbXBhdGlibGUuIgorbXNnc3RyICItRCDlkowgLUUgZml4ZXNfb25seSDpgInpobnmmK/kupLnm7jmjpLmlqXnmoTjgIIiCisKKyM6IGUyZnNjay91bml4LmM6OTkyCittc2dpZCAiVGhlIC1FIGJtYXAyZXh0ZW50IGFuZCBmaXhlc19vbmx5IG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCittc2dzdHIgIi1FIGJtYXAyZXh0ZW50IOWSjCBmaXhlc19vbmx5IOmAiemhueaYr+S6kuebuOaOkuaWpeeahOOAgiIKKworIzogZTJmc2NrL3VuaXguYzoxMDQ2Cittc2dpZCAiVGhlIC1jIGFuZCB0aGUgLWwvLUwgb3B0aW9ucyBtYXkgbm90IGJlIGJvdGggdXNlZCBhdCB0aGUgc2FtZSB0aW1lLlxuIgorbXNnc3RyICItYyDlkowgLWwvLUwg6YCJ6aG55LiN6IO95ZCM5pe25L2/55So44CCXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTA5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiRTJGU0NLX0pCRF9ERUJVRyBcIiVzXCIgbm90IGFuIGludGVnZXJcbiIKKyJcbiIKK21zZ3N0ciAiIgorIkUyRlNDS19KQkRfREVCVUcg4oCcJXPigJ3kuI3mmK/mlbTmlbBcbiIKKyJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJJbnZhbGlkIG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIC0lYyAoXCIlc1wiKVxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiLSVjIOaOpeaUtuWIsOaXoOaViOeahOmdnuaVsOWAvOWPguaVsO+8iOKAnCVz4oCd77yJXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTE5MworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGludGVydmFsIGlzICV1IHNlY29uZHMgYW5kIHRvdGFsIHdhaXQgdGltZSBpcyAldSBzZWNvbmRzLiBQbGVhc2UgIgorIndhaXQuLi5cbiIKK21zZ3N0ciAiTU1Q6Ze06ZqU5Li6ICV1IOenku+8jOaAu+etieWAmeaXtumXtOS4uiAldSDnp5LjgILor7fnqI3lgJkuLi5cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjEwIGUyZnNjay91bml4LmM6MTIxNQorbXNnaWQgIndoaWxlIGNoZWNraW5nIE1NUCBibG9jayIKK21zZ3N0ciAi5qOA5rWLIE1NUCDlnZfml7YiCisKKyM6IGUyZnNjay91bml4LmM6MTIxNyBtaXNjL3R1bmUyZnMuYzoyNzkyCittc2dpZCAiIgorIklmIHlvdSBhcmUgc3VyZSB0aGUgZmlsZXN5c3RlbSBpcyBub3QgaW4gdXNlIG9uIGFueSBub2RlLCBydW46XG4iCisiJ3R1bmUyZnMgLWYgLUUgY2xlYXJfbW1wIHtkZXZpY2V9J1xuIgorbXNnc3RyICIiCisi5aaC5p6c5L2g56Gu5a6a5paH5Lu257O757uf5bm25rKh5pyJ5oyC6L295Yiw5Lu75L2V6IqC54K55LiK77yM6K+36L+Q6KGM77yaXG4iCisi4oCcdHVuZTJmcyAtZiAtRSBjbGVhcl9tbXAge+iuvuWkh33igJ1cbiIKKworIzogZTJmc2NrL3VuaXguYzoxMjMyCittc2dpZCAid2hpbGUgcmVhZGluZyBNTVAgYmxvY2siCittc2dzdHIgIuivu+WPliBNTVAg5Z2X5pe2IgorCisjOiBlMmZzY2svdW5peC5jOjEyNTIgZTJmc2NrL3VuaXguYzoxMzA0IG1pc2MvZTJ1bmRvLmM6MjMwIG1pc2MvZTJ1bmRvLmM6Mjc1CisjOiBtaXNjL21rZTJmcy5jOjI1NDEgbWlzYy9ta2UyZnMuYzoyNTkyIG1pc2MvdHVuZTJmcy5jOjI2MTAKKyM6IG1pc2MvdHVuZTJmcy5jOjI2NTUgcmVzaXplL21haW4uYzoxODcgcmVzaXplL21haW4uYzoyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIk92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzeXN0ZW07IHRoaXMgY2FuIGJlIHVuZG9uZSB1c2luZyB0aGUgY29tbWFuZDpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCittc2dzdHIgIiIKKyLmraPlnKjopobnm5bnjrDmnInnmoTmlofku7bns7vnu5/vvJvlj6/ku6XnlKjkuIvliJflkb3ku6TmnaXmkqTplIDor6Xmk43kvZzvvJpcbiIKKyIgICAgZTJ1bmRvICVzICVzXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTI5MyBtaXNjL2UydW5kby5jOjI2NCBtaXNjL21rZTJmcy5jOjI1ODEgbWlzYy90dW5lMmZzLmM6MjY0NAorIzogcmVzaXplL21haW4uYzoyMjEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIKK21zZ3N0ciAi5bCd6K+V5Yig6ZmkICVzIOaXtiIKKworIzogZTJmc2NrL3VuaXguYzoxMzE5IG1pc2MvbWtlMmZzLmM6MjYwNyByZXNpemUvbWFpbi5jOjI0MgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIKK21zZ3N0ciAi5bCd6K+V5Yib5bu65pKk6ZSA6K6w5b2V5pe2XG4iCisKKyM6IGUyZnNjay91bml4LmM6MTM2MworbXNnaWQgIkVycm9yOiBleHQyZnMgbGlicmFyeSB2ZXJzaW9uIG91dCBvZiBkYXRlIVxuIgorbXNnc3RyICLplJnor6/vvJpleHQyZnPlupPniYjmnKzov4fml6fvvIFcbiIKKworIzogZTJmc2NrL3VuaXguYzoxMzcwCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGluaXRpYWxpemUgcHJvZ3JhbSIKK21zZ3N0ciAi5bCd6K+V5Yid5aeL5YyW56iL5bqP5pe2IgorCisjOiBlMmZzY2svdW5peC5jOjEzOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRVc2luZyAlcywgJXNcbiIKK21zZ3N0ciAiXHTkvb/nlKggJXPvvIwlc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE0MDUKK21zZ2lkICJuZWVkIHRlcm1pbmFsIGZvciBpbnRlcmFjdGl2ZSByZXBhaXJzIgorbXNnc3RyICLpnIDopoHlnKjnu4jnq6/kuK3ov5vooYzkuqTkupLlvI/kv67lpI0iCisKKyM6IGUyZnNjay91bml4LmM6MTQ2NgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi5cbiIKK21zZ3N0ciAiJXPvvJolcyDlsJ3or5XlpIfku73lnZdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNDY4Cittc2dpZCAiU3VwZXJibG9jayBpbnZhbGlkLCIKK21zZ3N0ciAi6LaF57qn5Z2X5peg5pWI77yMIgorCisjOiBlMmZzY2svdW5peC5jOjE0NjkKK21zZ2lkICJHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiIKK21zZ3N0ciAi57uE5o+P6L+w56ym5Ly85LmO5piv6ZSZ6K+v55qELi4uIgorCisjOiBlMmZzY2svdW5peC5jOjE0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzIgorbXNnc3RyICIlc++8muWwneivleWkh+S7veWdl+aXtiAlcyIKKworIzogZTJmc2NrL3VuaXguYzoxNDgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiJXPvvJrlm57liLDljp/lhYjnmoTotoXnuqflnZdcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTEyCittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIHJldmlzaW9uIGlzIGFwcGFyZW50bHkgdG9vIGhpZ2ggZm9yIHRoaXMgdmVyc2lvbiBvZiBlMmZzY2suXG4iCisiKE9yIHRoZSBmaWxlc3lzdGVtIHN1cGVyYmxvY2sgaXMgY29ycnVwdClcbiIKKyJcbiIKK21zZ3N0ciAiIgorIuaWh+S7tuezu+e7n+eahOeJiOacrOmrmOS6juatpGUyZnNja+aJgOaUr+aMgeeahOeJiOacrOOAglxuIgorIu+8iOS5n+acieWPr+iDvei2hee6p+Wdl+W3suaNn+Wdj++8iVxuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MTkKK21zZ2lkICJDb3VsZCB0aGlzIGJlIGEgemVyby1sZW5ndGggcGFydGl0aW9uP1xuIgorbXNnc3RyICLliIbljLrplb/luqbkuLrpm7blkJfvvJ9cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTIxCisjLCBjLWZvcm1hdAorbXNnaWQgIllvdSBtdXN0IGhhdmUgJXMgYWNjZXNzIHRvIHRoZSBmaWxlc3lzdGVtIG9yIGJlIHJvb3RcbiIKK21zZ3N0ciAi5L2g5b+F6aG75YW35pyJ5a+56K+l5paH5Lu257O757uf55qEICVzIOadg+mZkO+8jOaIluiAheS4unJvb3RcbiIKKworIzogZTJmc2NrL3VuaXguYzoxNTI3Cittc2dpZCAiUG9zc2libHkgbm9uLWV4aXN0ZW50IG9yIHN3YXAgZGV2aWNlP1xuIgorbXNnc3RyICIiCisi5Y+v6IO95Li6c3dhcOWIhuWMuu+8jOaIluivpeiuvuWkh+S4jeWtmOWcqO+8n1xuIgorIlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MjkKK21zZ2lkICJGaWxlc3lzdGVtIG1vdW50ZWQgb3Igb3BlbmVkIGV4Y2x1c2l2ZWx5IGJ5IGFub3RoZXIgcHJvZ3JhbT9cbiIKK21zZ3N0ciAi5paH5Lu257O757uf5Y+v6IO95bey5oyC6L2977yM5oiW5q2j6KKr5YW25LuW56iL5bqP54us5Y2g5L2/55So77yfXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTUzMworbXNnaWQgIlBvc3NpYmx5IG5vbi1leGlzdGVudCBkZXZpY2U/XG4iCittc2dzdHIgIuWPr+iDveivpeiuvuWkh+S4jeWtmOWcqO+8n1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE1MzYKK21zZ2lkICIiCisiRGlzayB3cml0ZS1wcm90ZWN0ZWQ7IHVzZSB0aGUgLW4gb3B0aW9uIHRvIGRvIGEgcmVhZC1vbmx5XG4iCisiY2hlY2sgb2YgdGhlIGRldmljZS5cbiIKK21zZ3N0ciAi56OB55uY5YaZ5L+d5oqk77yb6K+35L2/55SoIC1uIOmAiemhuei/m+ihjOWPquivu+ajgOafpeOAglxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2MDQKK21zZ2lkICJHZXQgYSBuZXdlciB2ZXJzaW9uIG9mIGUyZnNjayEiCittc2dzdHIgIuivt+iOt+WPluaWsOeJiOacrOeahGUyZnNja++8gSIKKworIzogZTJmc2NrL3VuaXguYzoxNjQ4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoZWNraW5nIGpvdXJuYWwgZm9yICVzIgorbXNnc3RyICLmo4Dmn6UgJXMg55qE5pel5b+X5pe2IgorCisjOiBlMmZzY2svdW5peC5jOjE2NTEKK21zZ2lkICJDYW5ub3QgcHJvY2VlZCB3aXRoIGZpbGUgc3lzdGVtIGNoZWNrIgorbXNnc3RyICLml6Dms5XlnKjns7vnu5/mo4Dmn6Xml7bov5vooYwiCisKKyM6IGUyZnNjay91bml4LmM6MTY2MgorbXNnaWQgIiIKKyJXYXJuaW5nOiBza2lwcGluZyBqb3VybmFsIHJlY292ZXJ5IGJlY2F1c2UgZG9pbmcgYSByZWFkLW9ubHkgZmlsZXN5c3RlbSAiCisiY2hlY2suXG4iCittc2dzdHIgIuitpuWRiu+8mueUseS6juWPquivu+ezu+e7n+ajgOafpe+8jOi3s+i/h+aXpeW/l+aBouWkjea1geeoi+OAglxuIgorCisjOiBlMmZzY2svdW5peC5jOjE2NzQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHNldCBzdXBlcmJsb2NrIGZsYWdzIG9uICVzXG4iCittc2dzdHIgIiIKKyLml6Dms5Xorr7nva4gJXMg55qE6LaF57qn5Z2X5qCH5b+X44CCXG4iCisiXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTY4MAorIywgYy1mb3JtYXQKK21zZ2lkICJKb3VybmFsIGNoZWNrc3VtIGVycm9yIGZvdW5kIGluICVzXG4iCittc2dzdHIgIuWcqCAlcyDkuK3lj5HnjrDml6Xlv5fmoKHpqozlgLzplJnor69cbiIKKworIzogZTJmc2NrL3VuaXguYzoxNjg0CisjLCBjLWZvcm1hdAorbXNnaWQgIkpvdXJuYWwgY29ycnVwdGVkIGluICVzXG4iCittc2dzdHIgIiVzIOS4reeahOaXpeW/l+W3suaNn+Wdj1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE2ODgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmVjb3ZlcmluZyBqb3VybmFsIG9mICVzIgorbXNnc3RyICLmgaLlpI0gJXMg55qE5pel5b+X5pe2IgorCisjOiBlMmZzY2svdW5peC5jOjE3MTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocyk6IgorbXNnc3RyICIlcyDmnInkuI3ooqvmlK/mjIHnmoTnibnmgKfvvJoiCisKKyM6IGUyZnNjay91bml4LmM6MTc2OQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlXG4iCittc2dzdHIgIiVz77ya6K+75Y+W5Z2P5Z2XaW5vZGXml7Ylc1xuIgorCisjOiBlMmZzY2svdW5peC5jOjE3NzIKK21zZ2lkICJUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uXG4iCittc2dzdHIgIui/meW5tuS4jeaYr+S4gOS4quWlvemihOWFhu+8jOeEtuiAjOaIkeS7rOWwhue7p+e7rei/m+ihjC4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCAoJWQgYmxvY2tzKTogIgorbXNnc3RyICLliJvlu7rml6Xlv5fvvIglZCDkuKrlnZfvvInvvJoiCisKKyM6IGUyZnNjay91bml4LmM6MTgyOAorbXNnaWQgIiBEb25lLlxuIgorbXNnc3RyICLlrozmr5XjgIJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODMwCittc2dpZCAiIgorIlxuIgorIioqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKlxuIgorbXNnc3RyICIiCisiXG4iCisiKioqIOaXpeW/l+W3suiiq+mHjeW7uiAqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODM2Cittc2dpZCAiYWJvcnRlZCIKK21zZ3N0ciAi5bey5Lit5q2iIgorCisjOiBlMmZzY2svdW5peC5jOjE4MzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGUyZnNjayBjYW5jZWxlZC5cbiIKK21zZ3N0ciAiJXPvvJplMmZzY2vooqvlj5bmtojjgIJcbiIKKworIzogZTJmc2NrL3VuaXguYzoxODY1Cittc2dpZCAiUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uXG4iCittc2dzdHIgIuato+WcqOS7juWktOW8gOWni2UyZnNjay4uLlxuIgorCisjOiBlMmZzY2svdW5peC5jOjE4NjkKK21zZ2lkICJ3aGlsZSByZXNldHRpbmcgY29udGV4dCIKK21zZ3N0ciAi6YeN572u5LiK5LiL5paH5pe2IgorCisjOiBlMmZzY2svdW5peC5jOjE5MTMgZTJmc2NrL3V0aWwuYzo3MQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKlxuIgorbXNnc3RyICIiCisiXG4iCisiJXPvvJoqKioqKiDmlofku7bns7vnu5/lt7Lkv67mlLkgKioqKipcbiIKKworIzogZTJmc2NrL3VuaXguYzoxOTE3CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iCittc2dzdHIgIiVz77yaKioqKiog6K+36YeN5paw5ZCv5Yqo57O757ufICoqKioqXG4iCisKKyM6IGUyZnNjay91bml4LmM6MTkyNSBlMmZzY2svdXRpbC5jOjc3CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisiJXPvvJoqKioqKioqKioqIOitpuWRiu+8muaWh+S7tuezu+e7n+S4iuS7jeaciemUmeivryAqKioqKioqKioqXG4iCisiXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MTk0IG1pc2MvdXRpbC5jOjkzCittc2dpZCAieVkiCittc2dzdHIgInlZIgorCisjOiBlMmZzY2svdXRpbC5jOjE5NQorbXNnaWQgIm5OIgorbXNnc3RyICJuTiIKKworIzogZTJmc2NrL3V0aWwuYzoxOTYKK21zZ2lkICJhQSIKK21zZ3N0ciAiYUEiCisKKyM6IGUyZnNjay91dGlsLmM6MTk3Cittc2dpZCAiICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpICIKK21zZ3N0ciAi77yI4oCcYeKAnSDooajnpLrlhajpg6jlm57nrZTigJx5ZXPigJ3vvIkgIgorCisjOiBlMmZzY2svdXRpbC5jOjIxMworbXNnaWQgIjx5PiIKK21zZ3N0ciAiPHk+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNQorbXNnaWQgIjxuPiIKK21zZ3N0ciAiPG4+IgorCisjOiBlMmZzY2svdXRpbC5jOjIxNworbXNnaWQgIiAoeS9uKSIKK21zZ3N0ciAiIO+8iHkvbu+8iSIKKworIzogZTJmc2NrL3V0aWwuYzoyNDAKK21zZ2lkICJjYW5jZWxsZWQhXG4iCittc2dzdHIgIuW3suWPlua2iO+8gVxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2NAorbXNnaWQgInllcyB0byBhbGxcbiIKK21zZ3N0ciAi5YWo6YOo5Zue562U4oCceWVz4oCdXG4iCisKKyM6IGUyZnNjay91dGlsLmM6MjY2Cittc2dpZCAieWVzXG4iCittc2dzdHIgIuaYr1xuIgorCisjOiBlMmZzY2svdXRpbC5jOjI2OAorbXNnaWQgIm5vXG4iCittc2dzdHIgIuWQplxuIgorCisjOiBlMmZzY2svdXRpbC5jOjI3OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM/IG5vXG4iCisiXG4iCittc2dzdHIgIiIKKyIlcz8gbm9cbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzPyB5ZXNcbiIKKyJcbiIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJ5ZXMiCittc2dzdHIgInllcyIKKworIzogZTJmc2NrL3V0aWwuYzoyODYKK21zZ2lkICJubyIKK21zZ3N0ciAibm8iCisKKyM6IGUyZnNjay91dGlsLmM6MzAyCisjLCBjLWZvcm1hdAorbXNnaWQgImUyZnNja19yZWFkX2JpdG1hcHM6IGlsbGVnYWwgYml0bWFwIGJsb2NrKHMpIGZvciAlcyIKK21zZ3N0ciAiZTJmc2NrX3JlYWRfYml0bWFwc++8miVzIOWQq+aciemdnuazleeahOS9jeWbvuWdlyIKKworIzogZTJmc2NrL3V0aWwuYzozMDcKK21zZ2lkICJyZWFkaW5nIGlub2RlIGFuZCBibG9jayBiaXRtYXBzIgorbXNnc3RyICLor7vlj5Zpbm9kZeWSjOWdl+S9jeWbviIKKworIzogZTJmc2NrL3V0aWwuYzozMTkKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV0cnlpbmcgdG8gcmVhZCBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAi6YeN5paw5bCd6K+V6K+75Y+WICVzIOeahOS9jeWbvuaXtiIKKworIzogZTJmc2NrL3V0aWwuYzozMzEKK21zZ2lkICJ3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIgorbXNnc3RyICLlhpnlhaXlnZflkoxpbm9kZeS9jeWbviIKKworIzogZTJmc2NrL3V0aWwuYzozMzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgcmV3cml0aW5nIGJsb2NrIGFuZCBpbm9kZSBiaXRtYXBzIGZvciAlcyIKK21zZ3N0ciAi6YeN5YaZICVzICDnmoRibG9ja+WSjGlub2Rl5L2N5Zu+5pe2IgorCisjOiBlMmZzY2svdXRpbC5jOjM0OAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXG4iCisiJXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuXG4iCisiXHQoaS5lLiwgd2l0aG91dCAtYSBvciAtcCBvcHRpb25zKVxuIgorbXNnc3RyICIiCisiXG4iCisiXG4iCisiJXPvvJrmnKrpooTmnJ/nmoTkuI3kuIDoh7TmgKfvvJvor7fmiYvliqjov5DooYxmc2NrXG4iCisiXHTvvIjljbPkuI3kvb/nlKggLWEg5oiWIC1wIOmAiemhue+8ieOAglxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQyOQorIywgYy1mb3JtYXQKK21zZ2lkICJNZW1vcnkgdXNlZDogJWx1ay8lbHVrICglbHVrLyVsdWspLCAiCittc2dzdHIgIuWGheWtmOS9v+eUqOmHj++8miVsdWsvJWx1a++8iCVsdWsvJWx1a++8ie+8jCAiCisKKyM6IGUyZnNjay91dGlsLmM6NDMzCisjLCBjLWZvcm1hdAorbXNnaWQgIk1lbW9yeSB1c2VkOiAlbHUsICIKK21zZ3N0ciAi5bey5L2/55So5YaF5a2Y77yaJWx177yMICIKKworIzogZTJmc2NrL3V0aWwuYzo0NDAKKyMsIGMtZm9ybWF0Cittc2dpZCAidGltZTogJTUuMmYvJTUuMmYvJTUuMmZcbiIKK21zZ3N0ciAi5pe26Ze077yaJTUuMmYvJTUuMmYvJTUuMmZcbiIKKworIzogZTJmc2NrL3V0aWwuYzo0NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIgorbXNnc3RyICLmjIHnu63ml7bpl7TvvJolNi4zZlxuIgorCisjOiBlMmZzY2svdXRpbC5jOjQ4MCBlMmZzY2svdXRpbC5jOjQ5NAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAi6K+75Y+WICUyJHMg5Lit55qEaW5vZGUgJTEkbHUg5pe2IgorCisjOiBlMmZzY2svdXRpbC5jOjUwOCBlMmZzY2svdXRpbC5jOjUyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICVsdSBpbiAlcyIKK21zZ3N0ciAi5YaZ5YWlICUyJHMg5Lit55qEaW5vZGUgJTEkbHUg5pe2IgorCisjOiBlMmZzY2svdXRpbC5jOjc2NQorbXNnaWQgIiIKKyJVTkVYUEVDVEVEIElOQ09OU0lTVEVOQ1k6IHRoZSBmaWxlc3lzdGVtIGlzIGJlaW5nIG1vZGlmaWVkIHdoaWxlIGZzY2sgaXMgIgorInJ1bm5pbmcuXG4iCittc2dzdHIgIuacqumihOacn+eahOS4jei/nue7reaAp++8muaWh+S7tuezu+e7n+WcqOi/kOihjGZzY2vml7booqvkv67mlLnjgIJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo3MgorbXNnaWQgImRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCittc2dzdHIgIuW3suWujOaIkCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5NworIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYiBibG9ja19zaXplXSBbLWkgaW5wdXRfZmlsZV0gWy1vIG91dHB1dF9maWxlXSBbLXN2d25mXVxuIgorIiAgICAgICBbLWMgYmxvY2tzX2F0X29uY2VdIFstZCBkZWxheV9mYWN0b3JfYmV0d2Vlbl9yZWFkc10gWy1lICIKKyJtYXhfYmFkX2Jsb2Nrc11cbiIKKyIgICAgICAgWy1wIG51bV9wYXNzZXNdIFstdCB0ZXN0X3BhdHRlcm4gWy10IHRlc3RfcGF0dGVybiBbLi4uXV1dXG4iCisiICAgICAgIGRldmljZSBbbGFzdF9ibG9jayBbZmlyc3RfYmxvY2tdXVxuIgorbXNnc3RyICIiCisi55So5rOV77yaJXMgWy1iIOWdl+Wkp+Wwj10gWy1pIOi+k+WFpeaWh+S7tl0gWy1vIOi+k+WHuuaWh+S7tl0gWy1zdnduZl1cbiIKKyIgICAgICAgWy1jIOeri+WNs+Wdl+aVsF0gWy1kIOivu+WPluW7tui/n+WboOWtkF0gWy1lIOacgOWkp+Wdj+Wdl+aVsF1cbiIKKyIgICAgICAgWy1wIOmcgOimgemAmui/h+a1i+ivleeahOWdl+aVsF0gWy10IOa1i+ivleaooeW8jyBbLXQg5rWL6K+V5qih5byPIFsuLi5dXV1cbiIKKyIgICAgICAg6K6+5aSHIFvmnKvlnZcgW+mmluWdl11dXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogVGhlIC1uIGFuZCAtdyBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuXG4iCisiXG4iCittc2dzdHIgIiIKKyIlc++8mi1uIOWSjCAtdyDpgInpobnmmK/nm7jkupLmjpLmlqXnmoTjgIJcbiIKKyJcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoyMjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJTYuMmYlJSBkb25lLCAlcyBlbGFwc2VkLiAoJWQvJWQvJWQgZXJyb3JzKSIKK21zZ3N0ciAi5a6M5oiQ5LqGICU2LjJmJSXvvIzkvb/nlKjkuoYgJXPjgIIoJWQvJWQvJWQg5Liq6ZSZ6K+vKSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozMjgKK21zZ2lkICJUZXN0aW5nIHdpdGggcmFuZG9tIHBhdHRlcm46ICIKK21zZ3N0ciAi6ZqP5py65qih5byP5rWL6K+V77yaICIKKworIzogbWlzYy9iYWRibG9ja3MuYzozNDYKK21zZ2lkICJUZXN0aW5nIHdpdGggcGF0dGVybiAweCIKK21zZ3N0ciAiMHjmqKHlvI/mtYvor5UiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Mzc4IG1pc2MvYmFkYmxvY2tzLmM6NDUxCittc2dpZCAiZHVyaW5nIHNlZWsiCittc2dzdHIgIuWumuS9jei/h+eoi+S4rSIKKworIzogbWlzYy9iYWRibG9ja3MuYzozODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2VpcmQgdmFsdWUgKCVsZCkgaW4gZG9fcmVhZFxuIgorbXNnc3RyICJkb19yZWFk5Lit6YGH5Yiw5byC5bi45YC877yIJWxk77yJXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NDc2Cittc2dpZCAiZHVyaW5nIGV4dDJmc19zeW5jX2RldmljZSIKK21zZ3N0ciAi5omn6KGMZXh0MmZzX3N5bmNfZGV2aWNl5pe2IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjQ5NiBtaXNjL2JhZGJsb2Nrcy5jOjc1OAorbXNnaWQgIndoaWxlIGJlZ2lubmluZyBiYWQgYmxvY2sgbGlzdCBpdGVyYXRpb24iCittc2dzdHIgIui/reS7o+Wdj+Wdl+WIl+ihqOaXtiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTEgbWlzYy9iYWRibG9ja3MuYzo2MTEgbWlzYy9iYWRibG9ja3MuYzo3NjkKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGJ1ZmZlcnMiCittc2dzdHIgIuWIhumFjee8k+WGsuWMuuaXtiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo1MTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgYmxvY2tzICVsdSB0byAlbHVcbiIKK21zZ3N0ciAi5q2j5Zyo5qOA5p+l5LuOICVsdSDliLAgJWx155qE5Z2XXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTIwCittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgaW4gcmVhZC1vbmx5IG1vZGVcbiIKK21zZ3N0ciAi5Zyo5Y+q6K+75qih5byP5Lit5qOA5p+l5Z2P5Z2XXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6NTI5Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKHJlYWQtb25seSB0ZXN0KTogIgorbXNnc3RyICLmo4Dmn6XlnY/lnZfvvIjlj6ror7vmtYvor5XvvInvvJogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjUzNiBtaXNjL2JhZGJsb2Nrcy5jOjY0MyBtaXNjL2JhZGJsb2Nrcy5jOjY4NQorIzogbWlzYy9iYWRibG9ja3MuYzo4MzIKK21zZ2lkICJUb28gbWFueSBiYWQgYmxvY2tzLCBhYm9ydGluZyB0ZXN0XG4iCittc2dzdHIgIuWdj+Wdl+WkquWkmu+8jOe7iOatoua1i+ivlVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjYxOAorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIHJlYWQtd3JpdGUgbW9kZVxuIgorbXNnc3RyICLlnKjor7vlhpnmqKHlvI/kuK3mo4Dmn6XlnY/lnZdcbiIKKworIzogbWlzYy9iYWRibG9ja3MuYzo2MjAgbWlzYy9iYWRibG9ja3MuYzo3ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiRnJvbSBibG9jayAlbHUgdG8gJWx1XG4iCittc2dzdHIgIuS7juWdlyAlbHUg6IezICVsdVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjY3NQorbXNnaWQgIlJlYWRpbmcgYW5kIGNvbXBhcmluZzogIgorbXNnc3RyICLmraPlnKjor7vlj5blubbmr5TovoPvvJogIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc4MQorbXNnaWQgIkNoZWNraW5nIGZvciBiYWQgYmxvY2tzIGluIG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIG1vZGVcbiIKK21zZ3N0ciAi5L2/55So6Z2e56C05Z2P5oCn6K+75YaZ5qih5byP6L+b6KGM5Z2P5Z2X5qOA6aqMXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6Nzg3Cittc2dpZCAiQ2hlY2tpbmcgZm9yIGJhZCBibG9ja3MgKG5vbi1kZXN0cnVjdGl2ZSByZWFkLXdyaXRlIHRlc3QpXG4iCittc2dzdHIgIuato+WcqOajgOmqjOWdj+Wdl++8iOmdnuegtOWdj+aAp+ivu+WGmea1i+ivle+8iVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjc5NAorbXNnaWQgIiIKKyJcbiIKKyJJbnRlcnJ1cHQgY2F1Z2h0LCBjbGVhbmluZyB1cFxuIgorbXNnc3RyICIiCisiXG4iCisi5pS25Yiw5Lit5pat6YCa55+l77yM5q2j5Zyo6L+b6KGM5ZCO57ut5riF55CG5bel5L2cXG4iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6ODc3CisjLCBjLWZvcm1hdAorbXNnaWQgImR1cmluZyB0ZXN0IGRhdGEgd3JpdGUsIGJsb2NrICVsdSIKK21zZ3N0ciAi5q2j5Zyo5rWL6K+V5pWw5o2u5YaZ5YWl77yM5L2N5LqO5Z2XICVsdSIKKworIzogbWlzYy9iYWRibG9ja3MuYzo5OTggbWlzYy91dGlsLmM6MTMxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG1vdW50ZWQ7ICIKK21zZ3N0ciAiJXMg5bey57uP5oyC6L2977ybICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDAwCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIuW8uuWItui/m+ihjOWdj+Wdl+WkhOeQhuOAguacn+acmy9ldGMvbXRhYuS4reWPjeaYoOeahOW5tumdnuecn+WunuaDheWGteOAglxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMDUKK21zZ2lkICJpdCdzIG5vdCBzYWZlIHRvIHJ1biBiYWRibG9ja3MhXG4iCittc2dzdHIgIui/m+ihjOWdj+Wdl+WkhOeQhuaciemjjumZqe+8gVxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMTAgbWlzYy91dGlsLmM6MTQyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIGFwcGFyZW50bHkgaW4gdXNlIGJ5IHRoZSBzeXN0ZW07ICIKK21zZ3N0ciAiJXMg5pi+54S25q2j6KKr57O757uf5L2/55So77ybICIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMDEzCittc2dpZCAiYmFkYmxvY2tzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIuW8uuWItui/m+ihjOWdj+Wdl+ajgOmqjOOAglxuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEwMzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCAlcyAtICVzIgorbXNnc3RyICLml6DmlYjnmoQlcyAtICVzIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExMjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiVG9vIGJpZyBtYXggYmFkIGJsb2NrcyBjb3VudCAldSAtIG1heGltdW0gaXMgJXUiCittc2dzdHIgIuacgOWkp+Wdj+Wdl+aVsO+8iCV177yJ6L+H5aSnIC0g5pyA5aSn5YC85Li6ICV1IgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjExNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiY2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0ZXN0X3BhdHRlcm4gLSAlcyIKK21zZ3N0ciAi5peg5rOV5L2/55So5rWL6K+V5qih5byP5YiG6YWN5YaF5a2YIC0gJXMiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE4NAorbXNnaWQgIk1heGltdW0gb2Ygb25lIHRlc3RfcGF0dGVybiBtYXkgYmUgc3BlY2lmaWVkIGluIHJlYWQtb25seSBtb2RlIgorbXNnc3RyICLlj6ror7vmtYvor5XkuK3mnIDlpJrlj6rog73mjIflrprkuIDnp43mtYvor5XmqKHlvI8iCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTE5MAorbXNnaWQgIlJhbmRvbSB0ZXN0X3BhdHRlcm4gaXMgbm90IGFsbG93ZWQgaW4gcmVhZC1vbmx5IG1vZGUiCittc2dzdHIgIuWPquivu+a1i+ivleS4reS4jeWFgeiuuOS9v+eUqOmaj+acuua1i+ivleaooeW8jyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjA0Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG1hbnVhbGx5XG4iCittc2dzdHIgIuaXoOazleehruWumuiuvuWkh+Wkp+Wwj++8m+S9oOW/hemhu+aJi+WKqOaMh+WumuWkp+Wwj1xuIgorCisjOiBtaXNjL2JhZGJsb2Nrcy5jOjEyMTAKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIGRldmljZSBzaXplIgorbXNnc3RyICLlsJ3or5Xnoa7lrprorr7lpIflpKflsI/ml7YiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIxNQorbXNnaWQgImxhc3QgYmxvY2siCittc2dzdHIgIuacgOWQjuS4gOS4quWdlyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjIxCittc2dpZCAiZmlyc3QgYmxvY2siCittc2dzdHIgIuesrOS4gOS4quWdlyIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjI0CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgc3RhcnRpbmcgYmxvY2sgKCVsbHUpOiBtdXN0IGJlIGxlc3MgdGhhbiAlbGx1IgorbXNnc3RyICLotbflp4vlnZfvvIglbGx177yJ5peg5pWI77ya5b+F6aG75bCP5LqOICVsbHUiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTIzMQorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGVuZCBibG9jayAoJWxsdSk6IG11c3QgYmUgMzItYml0IHZhbHVlIgorbXNnc3RyICLotbflp4vlnZfvvIglbGx177yJ5peg5pWI77ya5b+F6aG75Li6MzLkvY3mlbAiCisKKyM6IG1pc2MvYmFkYmxvY2tzLmM6MTI4NworbXNnaWQgIndoaWxlIGNyZWF0aW5nIGluLW1lbW9yeSBiYWQgYmxvY2tzIGxpc3QiCittc2dzdHIgIuWcqOWGheWtmOS4reWIm+W7uuWdj+Wdl+WIl+ihqOaXtiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMjk2Cittc2dpZCAiaW5wdXQgZmlsZSAtIGJhZCBmb3JtYXQiCittc2dzdHIgIui+k+WFpeaWh+S7tiAtIOagvOW8j+mUmeivryIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzA0IG1pc2MvYmFkYmxvY2tzLmM6MTMxMworbXNnaWQgIndoaWxlIGFkZGluZyB0byBpbi1tZW1vcnkgYmFkIGJsb2NrIGxpc3QiCittc2dzdHIgIuWQkeWGheWtmOS4reeahOWdj+Wdl+WIl+ihqOS4rea3u+WKoOiusOW9leaXtiIKKworIzogbWlzYy9iYWRibG9ja3MuYzoxMzM4CisjLCBjLWZvcm1hdAorbXNnaWQgIlBhc3MgY29tcGxldGVkLCAldSBiYWQgYmxvY2tzIGZvdW5kLiAoJWQvJWQvJWQgZXJyb3JzKVxuIgorbXNnc3RyICLmraTmraXlt7LlrozmiJDvvIzlj5HnjrDkuoYgJXUg5Liq5Z2P5Z2X44CC77yIJWQvJWQvJWQg5Liq6ZSZ6K+v77yJXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IHZlcnNpb25dIGZpbGVzLi4uXG4iCittc2dzdHIgIueUqOazle+8miVzIFstcFJWZl0gWy0rPWFBY0NkRGVpalBzU3RUdV0gWy12IOeJiOacrF0g5paH5Lu2Li4uXG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MTU5CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBwcm9qZWN0IC0gJXNcbiIKK21zZ3N0ciAi6aG555uu6ZSZ6K+vIC0gJXNcbiIKKworIzogbWlzYy9jaGF0dHIuYzoxNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIHZlcnNpb24gLSAlc1xuIgorbXNnc3RyICLniYjmnKzplJnor68gLSAlc1xuIgorCisjOiBtaXNjL2NoYXR0ci5jOjIxOSBtaXNjL2xzYXR0ci5jOjEyNworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gc3RhdCAlcyIKK21zZ3N0ciAi5bCd6K+V5a+5JXPov5vooYxzdGF06LCD55So5pe2IgorCisjOiBtaXNjL2NoYXR0ci5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGZsYWdzIG9uICVzIgorbXNnc3RyICLor7vlj5YgJXMg55qE5qCH5b+X5pe2IgorCisjOiBtaXNjL2NoYXR0ci5jOjIzMSBtaXNjL2NoYXR0ci5jOjI0MworIywgYy1mb3JtYXQKK21zZ2lkICJGbGFncyBvZiAlcyBzZXQgYXMgIgorbXNnc3RyICIlc+eahOagh+W/l+iiq+iuvuS4uiAiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgZmxhZ3Mgb24gJXMiCittc2dzdHIgIuiuvue9riAlcyDnmoTmoIflv5fml7YiCisKKyM6IG1pc2MvY2hhdHRyLmM6MjYwCisjLCBjLWZvcm1hdAorbXNnaWQgIlZlcnNpb24gb2YgJXMgc2V0IGFzICVsdVxuIgorbXNnc3RyICIlcyDnmoTniYjmnKzooqvorr7nva7kuLogJWx1XG4iCisKKyM6IG1pc2MvY2hhdHRyLmM6MjY0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAi6K6+572uICVzIOeahOeJiOacrOaXtiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiUHJvamVjdCBvZiAlcyBzZXQgYXMgJWx1XG4iCittc2dzdHIgIiVzIOeahOmhueebruiiq+iuvue9ruS4uiAlbHVcbiIKKworIzogbWlzYy9jaGF0dHIuYzoyNzUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBwcm9qZWN0IG9uICVzIgorbXNnc3RyICLorr7nva4gJXMg55qE6aG555uu5pe2IgorCisjOiBtaXNjL2NoYXR0ci5jOjI5NworbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIHBhdGggdmFyaWFibGUgaW4gY2hhdHRyX2Rpcl9wcm9jIgorbXNnc3RyICLml6Dms5XlnKhjaGF0dHJfZGlyX3Byb2PkuK3kuLrot6/lvoTlj5jph4/liIbphY3lhoXlrZgiCisKKyM6IG1pc2MvY2hhdHRyLmM6MzM3Cittc2dpZCAiPSBpcyBpbmNvbXBhdGlibGUgd2l0aCAtIGFuZCArXG4iCittc2dzdHIgIj0g5LiOIC0gLyArIOmAiemhueS4jeebuOWuuVxuIgorCisjOiBtaXNjL2NoYXR0ci5jOjM0NQorbXNnaWQgIk11c3QgdXNlICctdicsID0sIC0gb3IgK1xuIgorbXNnc3RyICLlv4Xpobvkvb/nlKjigJwtduKAneOAgT3jgIEtIOaIliArIOWFtuS4reS5i+S4gFxuIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjcwIG1pc2MvY3JlYXRlX2lub2RlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgaW5vZGUgJXUiCittc2dzdHIgIuivu+WPliBpbm9kZSAldSDml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODAgbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzIgbWlzYy9jcmVhdGVfaW5vZGUuYzozMzYKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Mzc0Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIGRpcmVjdG9yeSIKK21zZ3N0ciAi5omp5YWF55uu5b2V5pe2IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjg3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxpbmtpbmcgXCIlc1wiIgorbXNnc3RyICLpk77mjqXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo5NSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEyMiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjMwNgorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlICV1IgorbXNnc3RyICLlhpnlhaUgaW5vZGUgJXUg5pe2IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjEzOSBtaXNjL2NyZWF0ZV9pbm9kZS5jOjE2MworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBsaXN0aW5nIGF0dHJpYnV0ZXMgb2YgXCIlc1wiIgorbXNnc3RyICLlsJ3or5XliJflh7rigJwlc+KAneeahOWxnuaAp+aXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTAKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBpbm9kZSAldSIKK21zZ3N0ciAi5omT5byAIGlub2RlICV1IOaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoxNTYgbWlzYy9jcmVhdGVfaW5vZGUuYzoxODMgbWlzYy9jcmVhdGVfaW5vZGUuYzo5MDQKKyM6IG1pc2MvZTJ1bmRvLmM6MTc2IG1pc2MvZTJ1bmRvLmM6NDczIG1pc2MvZTJ1bmRvLmM6NDc5IG1pc2MvZTJ1bmRvLmM6NDg1CisjOiBtaXNjL21rZTJmcy5jOjM1MworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgbWVtb3J5IgorbXNnc3RyICLliIbphY3lhoXlrZjml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MTc2IG1pc2MvY3JlYXRlX2lub2RlLmM6MTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHJlYWRpbmcgYXR0cmlidXRlIFwiJXNcIiBvZiBcIiVzXCIiCittc2dzdHIgIuivu+WPliAlcyDnmoTigJwlc+KAneagh+W/l+aXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyMDEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBhdHRyaWJ1dGUgXCIlc1wiIHRvIGlub2RlICV1IgorbXNnc3RyICLlhpnlhaXmoIflv5figJwlc+KAneWIsCBpbm9kZSAldSDml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjExCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNsb3NpbmcgaW5vZGUgJXUiCittc2dzdHIgIuWFs+mXrSBpbm9kZSAldSDml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MjU5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICLliIbphY0gaW5vZGXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzoyNzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgaW5vZGUgXCIlc1wiIgorbXNnc3RyICLliJvlu7ogaW5vZGUg4oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6MzQzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIHN5bWxpbmsgXCIlc1wiIgorbXNnc3RyICLliJvlu7rnrKblj7fpk77mjqXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzozNjEgbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzcKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgbG9va2luZyB1cCBcIiVzXCIiCittc2dzdHIgIuafpeaJvuKAnCVz4oCd5pe2IgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjM4MQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyBkaXJlY3RvcnkgXCIlc1wiIgorbXNnc3RyICLliJvlu7rnm67lvZXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo2MDgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgb3BlbmluZyBcIiVzXCIgdG8gY29weSIKK21zZ3N0ciAi5omT5byA4oCcJXPigJ3lubbmi7fotJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzAwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNoYW5naW5nIHdvcmtpbmcgZGlyZWN0b3J5IHRvIFwiJXNcIiIKK21zZ3N0ciAi5pS55Y+Y5bel5L2c55uu5b2V5Li64oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzA4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgZGlyZWN0b3J5IFwiJXNcIiIKK21zZ3N0ciAi5omT5byA55uu5b2V4oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGxzdGF0IFwiJXNcIiIKK21zZ3N0ciAi5a+54oCcJXPigJ3ov5vooYxsc3RhdOiwg+eUqOaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgc3BlY2lhbCBmaWxlIFwiJXNcIiIKK21zZ3N0ciAi5Yib5bu654m55q6K5paH5Lu24oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6NzYwCittc2dpZCAibWFsbG9jIGZhaWxlZCIKK21zZ3N0ciAi5YaF5a2Y5YiG6YWN5aSx6LSlIgorCisjOiBtaXNjL2NyZWF0ZV9pbm9kZS5jOjc2OAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVhZCBsaW5rIFwiJXNcIiIKK21zZ3N0ciAi5bCd6K+V6K+75Y+W6ZO+5o6l4oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6Nzc1Cittc2dpZCAic3ltbGluayBpbmNyZWFzZWQgaW4gc2l6ZSBiZXR3ZWVuIGxzdGF0KCkgYW5kIHJlYWRsaW5rKCkiCittc2dzdHIgIuWcqOaJp+ihjCBsc3RhdCgpIOWSjCByZWFkbGluaygpIOacn+mXtO+8jOespuWPt+mTvuaOpeeahOWkp+Wwj+WPkeeUn+aUueWPmCIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBzeW1saW5rXCIlc1wiIgorbXNnc3RyICLlhpnlhaXnrKblj7fpk77mjqXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo3OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgd3JpdGluZyBmaWxlIFwiJXNcIiIKK21zZ3N0ciAi5YaZ5YWl5paH5Lu24oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODA5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG1ha2luZyBkaXIgXCIlc1wiIgorbXNnc3RyICLliJvlu7rnm67lvZXigJwlc+KAneaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MjYKK21zZ2lkICJ3aGlsZSBjaGFuZ2luZyBkaXJlY3RvcnkiCittc2dzdHIgIuaUueWPmOebruW9leaXtiIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWdub3JpbmcgZW50cnkgXCIlc1wiIgorbXNnc3RyICLlv73nlaXpobnigJwlc+KAnSIKKworIzogbWlzYy9jcmVhdGVfaW5vZGUuYzo4NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgc2V0dGluZyBpbm9kZSBmb3IgXCIlc1wiIgorbXNnc3RyICLkuLrigJwlc+KAneiuvue9riBpbm9kZSDml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODUyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHNldHRpbmcgeGF0dHJzIGZvciBcIiVzXCIiCittc2dzdHIgIuiuvue9ruKAnCVz4oCd55qEIHhhdHRycyDml7YiCisKKyM6IG1pc2MvY3JlYXRlX2lub2RlLmM6ODcwCittc2dpZCAid2hpbGUgc2F2aW5nIGlub2RlIGRhdGEiCittc2dzdHIgIuS/neWtmCBpbm9kZSDmlbDmja7ml7YiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstYmZnaGl4Vl0gWy1vIHN1cGVyYmxvY2s9PG51bT5dIFstbyBibG9ja3NpemU9PG51bT5dIGRldmljZVxuIgorbXNnc3RyICIiCisi55So5rOV77yaJXMgWy1iZmdoaXhWXSBbLW8gc3VwZXJibG9jaz086LaF57qn5Z2X57yW5Y+3Pl0gWy1vIGJsb2Nrc2l6ZT085Z2X5aSn5bCPPl0g6K6+IgorIuWkh1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MTU5Cittc2dpZCAiYmxvY2tzIgorbXNnc3RyICLlnZciCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoxNjgKK21zZ2lkICJjbHVzdGVycyIKK21zZ3N0ciAi57CHIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjE5CisjLCBjLWZvcm1hdAorbXNnaWQgIkdyb3VwICVsdTogKEJsb2NrcyAiCittc2dzdHIgIue7hCAlbHXvvJoo5Z2XICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIgY3N1bSAweCUwNHgiCittc2dzdHIgIiAg5qCh6aqM5YC8IDB4JTA0eCIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIgKEVYUEVDVEVEIDB4JTA0eCkiCittc2dzdHIgIiDvvIjlupTkuLogMHglMDR477yJIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIiAgJXMgc3VwZXJibG9jayBhdCAiCittc2dzdHIgIiAgJXMg6LaF57qn5Z2X5L2N5LqOICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIlByaW1hcnkiCittc2dzdHIgIuS4uyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjIzNAorbXNnaWQgIkJhY2t1cCIKK21zZ3N0ciAi5aSH5Lu9IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjM4Cittc2dpZCAiLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAiCittc2dzdHIgIu+8jCDnu4Tmj4/ov7DnrKbkvY3kuo4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjQyCittc2dpZCAiIgorIlxuIgorIiAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAiCittc2dzdHIgIiIKKyJcbiIKKyIgIOS/neeVmeeahEdEVOWdl+S9jeS6jiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNDkKK21zZ2lkICIgR3JvdXAgZGVzY3JpcHRvciBhdCAiCittc2dzdHIgIiDnu4Tmj4/ov7DnrKbkvY3kuo4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MjU1Cittc2dpZCAiICBCbG9jayBiaXRtYXAgYXQgIgorbXNnc3RyICIgIOWdl+S9jeWbvuS9jeS6jiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjAgbWlzYy9kdW1wZTJmcy5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICIsIGNzdW0gMHglMDh4IgorbXNnc3RyICIgIOagoemqjOWAvCAweCUwOHgiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjMKK21zZ2lkICIsIgorbXNnc3RyICLvvIwiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjUKK21zZ2lkICIiCisiXG4iCisiICIKK21zZ3N0ciAiIgorIlxuIgorIiAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzoyNjYKK21zZ2lkICIgSW5vZGUgYml0bWFwIGF0ICIKK21zZ3N0ciAiaW5vZGUg5L2N5Zu+5L2N5LqOICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI3MworbXNnaWQgIiIKKyJcbiIKKyIgIElub2RlIHRhYmxlIGF0ICIKK21zZ3N0ciAiIgorIlxuIgorIiAgSW5vZGXooajkvY3kuo4gIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIgICV1IGZyZWUgJXMsICV1IGZyZWUgaW5vZGVzLCAldSBkaXJlY3RvcmllcyVzIgorbXNnc3RyICIiCisiXG4iCisiICAldSDkuKrlj6/nlKggJXPvvIwldSDkuKrlj6/nlKhpbm9kZe+8jCV1IOS4quebruW9lSAlcyIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4NgorIywgYy1mb3JtYXQKK21zZ2lkICIsICV1IHVudXNlZCBpbm9kZXNcbiIKK21zZ3N0ciAi77yMJXXkuKrmnKrkvb/nlKjnmoRpbm9kZXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjI4OQorbXNnaWQgIiAgRnJlZSBibG9ja3M6ICIKK21zZ3N0ciAiICDlj6/nlKjlnZfmlbDvvJogIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6MzA0Cittc2dpZCAiICBGcmVlIGlub2RlczogIgorbXNnc3RyICIgIOWPr+eUqGlub2Rl5pWw77yaICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjM0MAorbXNnaWQgIndoaWxlIHByaW50aW5nIGJhZCBibG9jayBsaXN0IgorbXNnc3RyICLovpPlh7rlnY/lnZfliJfooajml7YiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozNDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmFkIGJsb2NrczogJXUiCittc2dzdHIgIuWdj+Wdl+aVsO+8miV1IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzg1IG1pc2MvdHVuZTJmcy5jOjM2MgorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBpbm9kZSIKK21zZ3N0ciAi6K+75Y+W5pel5b+XaW5vZGXml7YiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzozOTEKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIuaJk+W8gOaXpeW/l2lub2Rl5pe2IgorCisjOiBtaXNjL2R1bXBlMmZzLmM6Mzk3Cittc2dpZCAid2hpbGUgcmVhZGluZyBqb3VybmFsIHN1cGVyIGJsb2NrIgorbXNnc3RyICLor7vlj5bml6Xlv5fotoXnuqflnZfml7YiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MDQKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbWFnaWMgbnVtYmVyIGludmFsaWQhXG4iCittc2dzdHIgIuaXpeW/l+i2hee6p+Wdl+eahOW5u+aVsOaciemUme+8gVxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDA3IG1pc2MvZHVtcGUyZnMuYzo0OTAKK21zZ2lkICJKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIgorbXNnc3RyICLml6Xlv5fnibnmgKfvvJo6ICAgICAgICAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0MjAKK21zZ2lkICJKb3VybmFsIHNpemU6ICAgICAgICAgICAgICIKK21zZ3N0ciAi5pel5b+X5aSn5bCP77yaICAgICAgICAgICAgICIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorbXNnc3RyICIiCisi5pel5b+X6ZW/5bqm77yaICAgICAgICV1XG4iCisi5pel5b+X5bqP5YiX77yaICAgICAgICAgICAweCUwOHhcbiIKKyLml6Xlv5fotbflp4vkuo7vvJogICAgICAgJXVcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQzOCBtaXNjL2R1bXBlMmZzLmM6NDgwCittc2dpZCAiSm91cm5hbCBjaGVja3N1bSB0eXBlOiAgICBjcmMzMlxuIgorbXNnc3RyICLml6Xlv5fmoKHpqozlgLznsbvlnovvvJogICAgY3JjMzJcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjQ0MyBtaXNjL2R1bXBlMmZzLmM6NDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJKb3VybmFsIGNoZWNrc3VtIHR5cGU6ICAgICVzXG4iCisiSm91cm5hbCBjaGVja3N1bTogICAgICAgICAweCUwOHhcbiIKK21zZ3N0ciAiIgorIuaXpeW/l+agoemqjOWAvOexu+Wei++8miAgICVzXG4iCisi5pel5b+X5qCh6aqM5YC877yaICAgICAgICAgMHglMDh4XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBlcnJubzogICAgICAgICAgICAlZFxuIgorbXNnc3RyICLml6Xlv5fplJnor6/noIHvvJogICAgICAgICAgICAlZFxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NDY2IG1pc2MvdHVuZTJmcy5jOjIxMQorbXNnaWQgIndoaWxlIHJlYWRpbmcgam91cm5hbCBzdXBlcmJsb2NrIgorbXNnc3RyICLor7vlj5bml6Xlv5fotoXnuqflnZfml7YiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo0NzQKK21zZ2lkICJDb3VsZG4ndCBmaW5kIGpvdXJuYWwgc3VwZXJibG9jayBtYWdpYyBudW1iZXJzIgorbXNnc3RyICLml6Dms5Xmib7liLDml6Xlv5fotoXnuqflnZfnmoTlubvmlbAiCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkpvdXJuYWwgYmxvY2sgc2l6ZTogICAgICAgJXVcbiIKKyJKb3VybmFsIGxlbmd0aDogICAgICAgICAgICV1XG4iCisiSm91cm5hbCBmaXJzdCBibG9jazogICAgICAldVxuIgorIkpvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHglMDh4XG4iCisiSm91cm5hbCBzdGFydDogICAgICAgICAgICAldVxuIgorIkpvdXJuYWwgbnVtYmVyIG9mIHVzZXJzOiAgJXVcbiIKK21zZ3N0ciAiIgorIlxuIgorIuaXpeW/l+Wdl+Wkp+Wwj++8miAgICAgICAldVxuIgorIuaXpeW/l+Wdl+mVv+W6pu+8miAgICAgICAldVxuIgorIuaXpeW/l+Wdl+mmluWdl++8miAgICAgICAldVxuIgorIuaXpeW/l+W6j+WIl++8miAgICAgICAgICAgMHglMDh4XG4iCisi5pel5b+X6LW35aeL5LqO77yaICAgICAgICV1XG4iCisi55So5oi35pel5b+X5pWw77yaICAgICAgICV1XG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1MTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCB1c2VyczogICAgICAgICAgICAlc1xuIgorbXNnc3RyICLml6Xlv5fkvb/nlKjogIXvvJogICAgICAgICAgICAlc1xuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NTMwIG1pc2MvbWtlMmZzLmM6Nzg1IG1pc2MvdHVuZTJmcy5jOjE5MzAKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgdG8gcGFyc2Ugb3B0aW9ucyFcbiIKK21zZ3N0ciAi5peg5rOV5Li66Kej5p6Q6YCJ6aG56I635Y+W5YaF5a2Y77yBXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1NTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBzdXBlcmJsb2NrIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi5peg5pWI55qE6LaF57qn5Z2X5Y+C5pWw77yaJXNcbiIKKworIzogbWlzYy9kdW1wZTJmcy5jOjU3MQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGJsb2Nrc2l6ZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIuaXoOaViOeahOWdl+Wkp+Wwj+WPguaVsO+8miVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo1ODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIkJhZCBleHRlbmRlZCBvcHRpb24ocykgc3BlY2lmaWVkOiAlc1xuIgorIlxuIgorIkV4dGVuZGVkIG9wdGlvbnMgYXJlIHNlcGFyYXRlZCBieSBjb21tYXMsIGFuZCBtYXkgdGFrZSBhbiBhcmd1bWVudCB3aGljaFxuIgorIlx0aXMgc2V0IG9mZiBieSBhbiBlcXVhbHMgKCc9Jykgc2lnbi5cbiIKKyJcbiIKKyJWYWxpZCBleHRlbmRlZCBvcHRpb25zIGFyZTpcbiIKKyJcdHN1cGVyYmxvY2s9PHN1cGVyYmxvY2sgbnVtYmVyPlxuIgorIlx0YmxvY2tzaXplPTxibG9ja3NpemU+XG4iCittc2dzdHIgIiIKKyJcbiIKKyLmjIflrprkuobplJnor6/nmoTmianlsZXlsZ7mgKfvvJolc1xuIgorIlxuIgorIuaJqeWxleWxnuaAp+eUsemAl+WPt+WIhumalO+8jOacieS6m+mcgOimgemAmui/h+etieWPt++8iOKAnD3igJ3vvInkvKDpgJLlj4LmlbDjgIJcbiIKKyJcbiIKKyLmnInmlYjnmoTlj4LmlbDmnInvvJpcbiIKKyJcdHN1cGVyYmxvY2s9POi2hee6p+Wdl+e8luWPtz5cbiIKKyJcdGJsb2Nrc2l6ZT085Z2X5aSn5bCPPlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjQ2IG1pc2MvbWtlMmZzLmM6MTgxNQorIywgYy1mb3JtYXQKK21zZ2lkICJcdFVzaW5nICVzXG4iCittc2dzdHIgIlx05L2/55SoICVzXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo2ODYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBmaWxlc3lzdGVtISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiog5Y+R546w5paH5Lu257O757uf55qE5qCh6aqM5YC85pyJ6K+v77yB6K+356uL5Y2z6L+Q6KGMIGUyZnNja++8gVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NjkxIG1pc2MvZTJpbWFnZS5jOjE1ODYgbWlzYy90dW5lMmZzLmM6MjgwNQorIzogcmVzaXplL21haW4uYzo0MTUKK21zZ2lkICJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIKK21zZ3N0ciAi5om+5LiN5Yiw5pyJ5pWI55qE5paH5Lu257O757uf6LaF57qn5Z2X44CCXG4iCisKKyM6IG1pc2MvZHVtcGUyZnMuYzo3MjYKK21zZ2lkICIiCisiXG4iCisiKioqIENoZWNrc3VtIGVycm9ycyBkZXRlY3RlZCBpbiBiaXRtYXBzISAgUnVuIGUyZnNjayBub3chXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyIqKiog5Y+R546w5L2N5Zu+55qE5qCh6aqM5YC85pyJ6K+v77yB6K+356uL5Y2z6L+Q6KGMIGUyZnNja++8gVxuIgorIlxuIgorCisjOiBtaXNjL2R1bXBlMmZzLmM6NzMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyIlczogJXM6IGVycm9yIHJlYWRpbmcgYml0bWFwczogJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIiVz77yaJXPvvJror7vlj5bkvY3lm77plJnor6/vvJolc1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFsgLXJ8USBdIFsgLWZyIF0gZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAi55So5rOV77yaJXMgWyAtcnxRIF0gWyAtZnIgXSDorr7lpIcg6ZWc5YOP5paH5Lu2XG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEwOAorIywgYy1mb3JtYXQKK21zZ2lkICIgICAgICAgJXMgLUkgZGV2aWNlIGltYWdlLWZpbGVcbiIKK21zZ3N0ciAiICAgICAgICVzIC1JIOiuvuWkhyDplZzlg4/mlofku7ZcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTA5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIgICAgICAgJXMgLXJhICBbICAtY2ZucCAgXSBbIC1vIHNyY19vZmZzZXQgXSBbIC1PIGRlc3Rfb2Zmc2V0IF0gc3JjX2ZzICIKKyJbIGRlc3RfZnMgXVxuIgorbXNnc3RyICIiCisiICAgICAgICVzIC1yYSAgWyAgLWNmbnAgIF0gWyAtbyDmupDlgY/np7vph48gXSBbIC1PIOebruagh+WBj+enu+mHjyBdIOa6kOaWh+S7tuezu+e7nyBbIOebriIKKyLmoIfmlofku7bns7vnu58gXVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNzQgbWlzYy9lMmltYWdlLmM6NTc5IG1pc2MvZTJpbWFnZS5jOjU4NSBtaXNjL2UyaW1hZ2UuYzoxMTgxCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBidWZmZXIiCittc2dzdHIgIuS4uue8k+WGsuWMuuWIhumFjeWGheWtmOaXtiIKKworIzogbWlzYy9lMmltYWdlLmM6MTc5CisjLCBjLWZvcm1hdAorbXNnaWQgIldyaXRpbmcgYmxvY2sgJWxsdVxuIgorbXNnc3RyICLmraPlnKjlhpnlhaXliLDlnZcgJWxsdVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxOTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiZXJyb3Igd3JpdGluZyBibG9jayAlbGx1IgorbXNnc3RyICLlhpnlnZcgJWxsdSDlh7rplJkiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE5NgorbXNnaWQgImVycm9yIGluIGdlbmVyaWNfd3JpdGUoKSIKK21zZ3N0ciAiZ2VuZXJpY193cml0ZSgpIOWHveaVsOWHuumUmSIKKworIzogbWlzYy9lMmltYWdlLmM6MjEzCittc2dpZCAiRXJyb3I6IGhlYWRlciBzaXplIGlzIGJpZ2dlciB0aGFuIHdydF9zaXplXG4iCittc2dzdHIgIumUmeivr++8muWktOmDqOWkp+Wwj+i2hei/h3dydF9zaXplXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjIxOAorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIGhlYWRlciBidWZmZXJcbiIKK21zZ3N0ciAi5peg5rOV5Li65aS057yT5Yay5Yy65YiG6YWN5YaF5a2YXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjI0NgorbXNnaWQgIndoaWxlIHdyaXRpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAi5YaZ5YWl6LaF57qn5Z2X5pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoyNTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICLlhpnlhaVpbm9kZeihqOaXtiIKKworIzogbWlzYy9lMmltYWdlLmM6MjYzCittc2dpZCAid2hpbGUgd3JpdGluZyBibG9jayBiaXRtYXAiCittc2dzdHIgIuWGmeWFpeWdl+S9jeWbvuaXtiIKKworIzogbWlzYy9lMmltYWdlLmM6MjcxCittc2dpZCAid2hpbGUgd3JpdGluZyBpbm9kZSBiaXRtYXAiCittc2dzdHIgIuWGmeWFpWlub2Rl5L2N5Zu+5pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MDUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIHJlY19sZW4gKCVkKVxuIgorbXNnc3RyICLmjZ/lnY/nmoTnm67lvZXlnZcgJWxsde+8mnJlY19sZW7vvIglZO+8iemUmeivr1xuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1MTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ29ycnVwdCBkaXJlY3RvcnkgYmxvY2sgJWxsdTogYmFkIG5hbWVfbGVuICglZClcbiIKK21zZ3N0ciAi5o2f5Z2P55qE55uu5b2V5Z2XICVsbHXvvJpuYW1lX2xlbu+8iCVk77yJ6ZSZ6K+vXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjU1OAorIywgYy1mb3JtYXQKK21zZ2lkICIlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIgorbXNnc3RyICIlbGx1IC8gJWxsdSDlnZfvvIglZCUl77yJIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo1ODkgbWlzYy9lMmltYWdlLmM6NjI5Cittc2dpZCAiQ29weWluZyAiCittc2dzdHIgIuato+WcqOaLt+i0nSAiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjYyNgorbXNnaWQgIiIKKyJTdG9wcGluZyBub3cgd2lsbCBkZXN0cm95IHRoZSBmaWxlc3lzdGVtLCBpbnRlcnJ1cHQgYWdhaW4gaWYgeW91IGFyZSBzdXJlXG4iCittc2dzdHIgIueOsOWcqOe7iOatouWwhuS8muaNn+Wdj+aWh+S7tuezu+e7n++8m+WmguaenOS9oOehruWumuimgee7iOatou+8jOivt+WGjeasoei/m+ihjOaJk+aWrVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiICVzIHJlbWFpbmluZyBhdCAlLjJmIE1CL3MiCittc2dzdHIgIiDliankvZkgJXPvvIzpgJ/luqYgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo2NjQgbWlzYy9lMmltYWdlLmM6MTE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJlcnJvciByZWFkaW5nIGJsb2NrICVsbHUiCittc2dzdHIgIuivu+WPluWdlyAlbGx1IOmUmeivryIKKworIzogbWlzYy9lMmltYWdlLmM6NzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvcGllZCAlbGx1IC8gJWxsdSBibG9ja3MgKCVkJSUpIGluICVzICIKK21zZ3N0ciAi5bey5aSN5Yi2ICVsbHUgLyAlbGx1IOWdl++8iCVkJSXvvInvvIznlKjml7YgJXMgIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3MjIKKyMsIGMtZm9ybWF0Cittc2dpZCAiYXQgJS4yZiBNQi9zIgorbXNnc3RyICLpgJ/luqYgJS4yZiBNQi9zIgorCisjOiBtaXNjL2UyaW1hZ2UuYzo3NTgKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIGwxIHRhYmxlIgorbXNnc3RyICLliIbphY1sMeihqOaXtiIKKworIzogbWlzYy9lMmltYWdlLmM6ODAzCittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBsMiBjYWNoZSIKK21zZ3N0ciAi5YiG6YWNbDLooajml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjgyNgorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGVyZSBhcmUgc3RpbGwgdGFibGVzIGluIHRoZSBjYWNoZSB3aGlsZSBwdXR0aW5nIHRoZSBjYWNoZSwgZGF0YSAiCisid2lsbCBiZSBsb3N0IHNvIHRoZSBpbWFnZSBtYXkgbm90IGJlIHZhbGlkLlxuIgorbXNnc3RyICIiCisi6K2m5ZGK77ya5b2TcHV057yT5a2Y5pe277yM6L+Z5Lqb6KGo5LuN54S25YKo5a2Y5Zyo57yT5a2Y5Lit77yM6L+Z5bCG5a+86Ie05pWw5o2u5Lii5aSx77yM6ZWc5YOP5paH5Lu25Lmf5Y+v6IO95pegIgorIuaViOOAglxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTQ4Cittc2dpZCAid2hpbGUgYWxsb2NhdGluZyBleHQyX3Fjb3cyX2ltYWdlIgorbXNnc3RyICLkuLpleHQyX3Fjb3cyX2ltYWdl5YiG6YWN5YaF5a2Y5pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMTU1Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIGV4dDJfcWNvdzJfaW1hZ2UiCittc2dzdHIgIuWIneWni+WMlmV4dDJfcWNvdzJfaW1hZ2Xml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyMTQgbWlzYy9lMmltYWdlLmM6MTIzMgorbXNnaWQgIlByb2dyYW1taW5nIGVycm9yOiBtdWx0aXBsZSBzZXF1ZW50aWFsIHJlZmNvdW50IGJsb2NrcyBjcmVhdGVkIVxuIgorbXNnc3RyICLnqIvluo/plJnor6/vvJrliJvlu7rkuoblpJrph43luo/liJfnmoTlvJXnlKjorqHmlbDlnZfvvIFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTI3MgorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgYmxvY2sgYml0bWFwIgorbXNnc3RyICLlhpnlhaXlnZfkvY3lm77ml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEyODEKK21zZ2lkICJ3aGlsZSBhbGxvY2F0aW5nIHNjcmFtYmxlIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi5YaZ5YWl5Yqg5omw5Z2X5L2N5Zu+5pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxMjg4Cittc2dpZCAiU2Nhbm5pbmcgaW5vZGVzLi4uXG4iCittc2dzdHIgIuaJq+aPj2lub2Rl5LitLi4uXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzMDAKK21zZ2lkICJDYW4ndCBhbGxvY2F0ZSBibG9jayBidWZmZXIiCittc2dzdHIgIuaXoOazleS4uuWdl+e8k+WtmOWIhumFjeWGheWtmCIKKworIzogbWlzYy9lMmltYWdlLmM6MTMzOSBtaXNjL2UyaW1hZ2UuYzoxMzUzCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGl0ZXJhdGluZyBvdmVyIGlub2RlICV1IgorbXNnc3RyICLojrflj5bpgY3ljoZpbm9kZSAldSDml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjEzODUKK21zZ2lkICJSYXcgYW5kIHFjb3cyIGltYWdlcyBjYW5ub3QgYmUgaW5zdGFsbGVkIgorbXNnc3RyICLljp/lp4vplZzlg4/lkoxxY293MumVnOWDj+aXoOazleiiq+WuieijhSIKKworIzogbWlzYy9lMmltYWdlLmM6MTQwNworbXNnaWQgImVycm9yIHJlYWRpbmcgYml0bWFwcyIKK21zZ3N0ciAi6K+75Y+W5L2N5Zu+5pe25Y+R55Sf6ZSZ6K+vIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDE5Cittc2dpZCAid2hpbGUgb3BlbmluZyBkZXZpY2UgZmlsZSIKK21zZ3N0ciAi5omT5byA6K6+5aSH5paH5Lu25pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNDMwCittc2dpZCAid2hpbGUgcmVzdG9yaW5nIHRoZSBpbWFnZSB0YWJsZSIKK21zZ3N0ciAi5a2Y5YKo6ZWc5YOP6KGo5pe2IgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTI3Cittc2dpZCAiLWEgb3B0aW9uIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCByYXcgb3IgUUNPVzIgaW1hZ2VzLiIKK21zZ3N0ciAiLWEg6YCJ6aG55Y+q6IO955So5LqO5Y6f5aeL5oiWcWNvdzLplZzlg48iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1MzMKK21zZ2lkICJPZmZzZXRzIGFyZSBvbmx5IGFsbG93ZWQgd2l0aCByYXcgaW1hZ2VzLiIKK21zZ3N0ciAi5YGP56e76YeP5Y+q6IO955So5LqO5Y6f5aeL6ZWc5YOPIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNTM4Cittc2dpZCAiTW92ZSBtb2RlIGlzIG9ubHkgYWxsb3dlZCB3aXRoIHJhdyBpbWFnZXMuIgorbXNnc3RyICLnp7vliqjmqKHlvI/lj6rog73nlKjkuo7ljp/lp4vplZzlg48iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE1NDMKK21zZ2lkICJNb3ZlIG1vZGUgcmVxdWlyZXMgYWxsIGRhdGEgbW9kZS4iCittc2dzdHIgIuWOn+Wni+mVnOWDj+mcgOimgeWujOWFqOaVsOaNruaooeW8j+OAgiIKKworIzogbWlzYy9lMmltYWdlLmM6MTU1MworbXNnaWQgImNoZWNraW5nIGlmIG1vdW50ZWQiCittc2dzdHIgIuajgOa1i+WFtuaYr+WQpuW3suaMgui9vSIKKworIzogbWlzYy9lMmltYWdlLmM6MTU2MAorbXNnaWQgIiIKKyJcbiIKKyJSdW5uaW5nIGUyaW1hZ2Ugb24gYSBSL1cgbW91bnRlZCBmaWxlc3lzdGVtIGNhbiByZXN1bHQgaW4gYW5cbiIKKyJpbmNvbnNpc3RlbnQgaW1hZ2Ugd2hpY2ggd2lsbCBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4iCisiVXNlIC1mIG9wdGlvbiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZG8gdGhhdC5cbiIKK21zZ3N0ciAiIgorIlxuIgorIuWvueWPr+ivu+WGmeeahOaWh+S7tuezu+e7n+S4iui/kOihjGUyaW1hZ2Xlj6/og73lr7zoh7TplZzlg4/kuI3ov57nu63vvIxcbiIKKyLov5nmoLfnmoTplZzlg4/kuZ/ml6Dms5XnlKjkuo7osIPor5XjgILlpoLmnpzkvaDnoa7lrp7pnIDopoHov5nmoLflgZrvvIzor7fkvb/nlKggLWYg6YCJ6aG544CCXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MTQKK21zZ2lkICJRQ09XMiBpbWFnZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8gdGhlIHN0ZG91dCFcbiIKK21zZ3N0ciAi5peg5rOV5YaZ5YWlcWNvdzLplZzlg4/liLDmoIflh4bovpPlh7rvvIFcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTYyMAorbXNnaWQgIkNhbiBub3Qgc3RhdCBvdXRwdXRcbiIKK21zZ3N0ciAi5peg5rOV5a+56L6T5Ye66L+b6KGMc3RhdOaTjeS9nFxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgY29tcHJlc3NlZFxuIgorbXNnc3RyICLplZzlg4/vvIglc++8ieW3suiiq+WOi+e8qVxuIgorCisjOiBtaXNjL2UyaW1hZ2UuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkltYWdlICglcykgaXMgZW5jcnlwdGVkXG4iCittc2dzdHIgIumVnOWDj++8iCVz77yJ5bey6KKr5Yqg5a+GXG4iCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGNvbnZlcnQgcWNvdzIgaW1hZ2UgKCVzKSBpbnRvIHJhdyBpbWFnZSAoJXMpIgorbXNnc3RyICLlsJ3or5XlsIZxY293MumVnOWDj++8iCVz77yJ6L2s5o2i5Li6cmF36ZWc5YOP77yIJXPvvInml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NDUKK21zZ2lkICJUaGUgLWMgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIuWPquacieWOn+Wni+aooeW8j+aUr+aMgSAtYyDpgInpoblcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1MAorbXNnaWQgIlRoZSAtYyBvcHRpb24gbm90IHN1cHBvcnRlZCB3aGVuIHdyaXRpbmcgdG8gc3Rkb3V0XG4iCittc2dzdHIgIuWGmeWFpeWIsOagh+WHhui+k+WHuuaXtuaXoOazleS9v+eUqCAtYyDpgInpoblcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY1NworbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgY2hlY2tfYnVmIgorbXNnc3RyICLkuLpjaGVja19idWbliIbphY3lhoXlrZjml7YiCisKKyM6IG1pc2MvZTJpbWFnZS5jOjE2NjMKK21zZ2lkICJUaGUgLXAgb3B0aW9uIG9ubHkgc3VwcG9ydGVkIGluIHJhdyBtb2RlXG4iCittc2dzdHIgIuWPquacieWOn+Wni+aooeW8j+aUr+aMgSAtcCDpgInpoblcbiIKKworIzogbWlzYy9lMmltYWdlLmM6MTY3MworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBibG9ja3MgYWxyZWFkeSBjb250YWluZWQgdGhlIGRhdGEgdG8gYmUgY29waWVkXG4iCittc2dzdHIgIiVkIOS4quWdl+W3suWMheWQq+mcgOimgeiiq+aLt+i0neeahOaVsOaNrlxuIgorCisjOiBtaXNjL2UyaW5pdHJkX2hlbHBlci5jOjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyAtciBkZXZpY2VcbiIKK21zZ3N0ciAi55So5rOV77yaJXMgIC1yIOejgeebmOWQjVxuIgorCisjOiBtaXNjL2UybGFiZWwuYzo1OAorIywgYy1mb3JtYXQKK21zZ2lkICJlMmxhYmVsOiBjYW5ub3Qgb3BlbiAlc1xuIgorbXNnc3RyICJlMmxhYmVs77ya5peg5rOV5omT5byAICVzXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjYzCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2tcbiIKK21zZ3N0ciAiZTJsYWJlbO+8muaXoOazleWumuS9jeWIsHN1cGVyYmxvY2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZTJsYWJlbDogZXJyb3IgcmVhZGluZyBzdXBlcmJsb2NrXG4iCittc2dzdHIgImUybGFiZWzvvJror7vlj5ZzdXBlcmJsb2Nr5Ye66ZSZXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjcyCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IG5vdCBhbiBleHQyIGZpbGVzeXN0ZW1cbiIKK21zZ3N0ciAiZTJsYWJlbO+8muS4jeaYr+S4gOS4qmV4MuaWh+S7tuezu+e7n1xuIgorCisjOiBtaXNjL2UybGFiZWwuYzo5NyBtaXNjL3R1bmUyZnMuYzoyOTc4CisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGxhYmVsIHRvbyBsb25nLCB0cnVuY2F0aW5nLlxuIgorbXNnc3RyICLorablkYrvvJrljbfmoIflpKrplb/vvIzlt7LmiKrnn63jgIJcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTAwCisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGNhbm5vdCBzZWVrIHRvIHN1cGVyYmxvY2sgYWdhaW5cbiIKK21zZ3N0ciAiZTJsYWJlbO+8muaXoOazleWumuS9jeWIsHN1cGVyYmxvY2tcbiIKKworIzogbWlzYy9lMmxhYmVsLmM6MTA1CisjLCBjLWZvcm1hdAorbXNnaWQgImUybGFiZWw6IGVycm9yIHdyaXRpbmcgc3VwZXJibG9ja1xuIgorbXNnc3RyICJlMmxhYmVs77ya5YaZ5YWl6LaF57qn5Z2X5pe25Ye66ZSZXG4iCisKKyM6IG1pc2MvZTJsYWJlbC5jOjExNyBtaXNjL3R1bmUyZnMuYzoxNTkwCisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiBlMmxhYmVsIGRldmljZSBbbmV3bGFiZWxdXG4iCittc2dzdHIgIueUqOazle+8mmUybGFiZWwg6K6+5aSHIFvmlrDljbfmoIddXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIlVzYWdlOiAlcyBbLWZdIFstaF0gWy1uXSBbLXZdIDx0cmFuc2FjdGlvbiBmaWxlPiA8ZmlsZXN5c3RlbT5cbiIKK21zZ3N0ciAi55So5rOV77yaJXMgWy1mXSBbLWhdIFstbl0gWy12XSA85LqL5Yqh5paH5Lu2PiA85paH5Lu257O757ufPlxuIgorCisjOiBtaXNjL2UydW5kby5jOjE0MworbXNnaWQgIlRoZSBmaWxlIHN5c3RlbSBzdXBlcmJsb2NrIGRvZXNuJ3QgbWF0Y2ggdGhlIHVuZG8gZmlsZS5cbiIKK21zZ3N0ciAi5paH5Lu257O757uf55qE6LaF57qn5Z2X5LiO5pKk6ZSA5paH5Lu25LiN5Yy56YWNXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTQ2Cittc2dpZCAiVVVJRCBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAiVVVJRCDkuI3ljLnphY3jgIJcbiIKKworIzogbWlzYy9lMnVuZG8uYzoxNDgKK21zZ2lkICJMYXN0IG1vdW50IHRpbWUgZG9lcyBub3QgbWF0Y2guXG4iCittc2dzdHIgIuS4iuS4gOasoeeahOaMgui9veaXtumXtOS4jeWMuemFjeOAglxuIgorCisjOiBtaXNjL2UydW5kby5jOjE1MAorbXNnaWQgIkxhc3Qgd3JpdGUgdGltZSBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAi5LiK5LiA5qyh55qE5YaZ5YWl5pe26Ze05LiN5Yy56YWN44CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTUyCittc2dpZCAiTGlmZXRpbWUgd3JpdGUgY291bnRlciBkb2VzIG5vdCBtYXRjaC5cbiIKK21zZ3N0ciAi5YaZ5YWl6K6h5pWw5LiN5Yy56YWN44CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTY2Cittc2dpZCAid2hpbGUgcmVhZGluZyBmaWxlc3lzdGVtIHN1cGVyYmxvY2suIgorbXNnc3RyICLor7vlj5bmlofku7bns7vnu5/nmoTotoXnuqflnZfml7YiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MTgyCittc2dpZCAid2hpbGUgZmV0Y2hpbmcgc3VwZXJibG9jayIKK21zZ3N0ciAi6I635Y+W6LaF57qn5Z2X5pe2IgorCisjOiBtaXNjL2UydW5kby5jOjE5NQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmRvIGZpbGUgc3VwZXJibG9jayBjaGVja3N1bSBkb2Vzbid0IG1hdGNoLlxuIgorbXNnc3RyICLmkqTplIDmlofku7bnmoTotoXnuqflnZfnmoTmoKHpqozlgLzkuI7otoXnuqflnZfoh6rouqvkuI3nrKbjgIJcbiIKKworIzogbWlzYy9lMnVuZG8uYzozMzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiaWxsZWdhbCBvZmZzZXQgLSAlcyIKK21zZ3N0ciAi5YGP56e76YeP5peg5pWIIC0gJXMiCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzU4CisjLCBjLWZvcm1hdAorbXNnaWQgIldpbGwgbm90IHdyaXRlIHRvIGFuIHVuZG8gZmlsZSB3aGlsZSByZXBsYXlpbmcgaXQuXG4iCittc2dzdHIgIuWcqOi/m+ihjOmHjeWBmuaTjeS9nOaXtu+8jOS4jeS8muWGmeWFpeWIsOaSpOmUgOaWh+S7tuOAglxuIgorCisjOiBtaXNjL2UydW5kby5jOjM2NworIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nIHVuZG8gZmlsZSBgJXMnXG4iCittc2dzdHIgIuaJk+W8gOaSpOmUgOaWh+S7tuKAnCVz4oCd5pe2XG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6Mzc0Cittc2dpZCAid2hpbGUgcmVhZGluZyB1bmRvIGZpbGUiCittc2dzdHIgIuivu+WPluWdj+aSpOmUgOaWh+S7tuaXtiIKKworIzogbWlzYy9lMnVuZG8uYzozNzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IE5vdCBhbiB1bmRvIGZpbGUuXG4iCittc2dzdHIgIiVz77ya5LiN5piv5pKk6ZSA5paH5Lu244CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6MzkwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBIZWFkZXIgY2hlY2tzdW0gZG9lc24ndCBtYXRjaC5cbiIKK21zZ3N0ciAiJXPvvJrlpLTpg6jmoKHpqozlgLzkuI7oh6rouqvkuI3nrKbjgIJcbiIKKworIzogbWlzYy9lMnVuZG8uYzozOTcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IENvcnJ1cHQgdW5kbyBmaWxlIGhlYWRlci5cbiIKK21zZ3N0ciAiJXPvvJrmkqTplIDmlofku7blpLTmjZ/lnY/jgIJcbiIKKworIzogbWlzYy9lMnVuZG8uYzo0MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IFVuZG8gYmxvY2sgc2l6ZSB0b28gbGFyZ2UuXG4iCittc2dzdHIgIiVz77ya5pKk6ZSA5Z2X6L+H5bCP44CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDA2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBVbmRvIGJsb2NrIHNpemUgdG9vIHNtYWxsLlxuIgorbXNnc3RyICIlc++8muaSpOmUgOWdl+i/h+Wkp+OAglxuIgorCisjOiBtaXNjL2UydW5kby5jOjQxOQorIywgYy1mb3JtYXQKK21zZ2lkICIlczogVW5rbm93biB1bmRvIGZpbGUgZmVhdHVyZSBzZXQuXG4iCittc2dzdHIgIiVz77ya6K6+572u5LqG5pyq55+l55qE5pKk6ZSA5paH5Lu25bGe5oCn44CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDI3CisjLCBjLWZvcm1hdAorbXNnaWQgIkVycm9yIHdoaWxlIGRldGVybWluaW5nIHdoZXRoZXIgJXMgaXMgbW91bnRlZC4iCittc2dzdHIgIuehruWumiAlcyDmmK/lkKblt7LmjILovb3ml7blh7rplJnjgIIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDMzCittc2dpZCAiZTJ1bmRvIHNob3VsZCBvbmx5IGJlIHJ1biBvbiB1bm1vdW50ZWQgZmlsZXN5c3RlbXMiCittc2dzdHIgImUydW5kbyDlj6rog73nlKjkuo7mnKrmjILovb3nmoTmlofku7bns7vnu58iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDQ5CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIG9wZW5pbmcgYCVzJyIKK21zZ3N0ciAi5omT5byA4oCcJXPigJ3ml7YiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NDYwCittc2dpZCAic3BlY2lmaWVkIG9mZnNldCBpcyB0b28gbGFyZ2UiCittc2dzdHIgIuaMh+WumueahOWBj+enu+mHj+WkquWkpyIKKworIzogbWlzYy9lMnVuZG8uYzo1MDEKK21zZ2lkICJ3aGlsZSByZWFkaW5nIGtleXMiCittc2dzdHIgIuivu+WPlumUruaXtiIKKworIzogbWlzYy9lMnVuZG8uYzo1MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHdyb25nIGtleSBtYWdpYyBhdCAlbGx1XG4iCittc2dzdHIgIiVz77yaJWxsdSDkuK3nmoTplK7lubvmlbDmnInplJlcbiIKKworIzogbWlzYy9lMnVuZG8uYzo1MjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGtleSBibG9jayBjaGVja3N1bSBlcnJvciBhdCAlbGx1LlxuIgorbXNnc3RyICIlc++8miVsbHUg5Lit55qE6ZSu5Z2X55qE5qCh6aqM5YC85pyJ6ZSZ44CCXG4iCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiBibG9jayAlbGx1IGlzIHRvbyBsb25nLiIKK21zZ3N0ciAiJXPvvJrlnZcgJWxsdSDlpKrplb/jgIIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTU4IG1pc2MvZTJ1bmRvLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGZldGNoaW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICLojrflj5blnZcgJWxsdSDml7bjgIIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NTcwCisjLCBjLWZvcm1hdAorbXNnaWQgImNoZWNrc3VtIGVycm9yIGluIGZpbGVzeXN0ZW0gYmxvY2sgJWxsdSAodW5kbyBibGsgJWxsdSlcbiIKK21zZ3N0ciAi5paH5Lu257O757uf5Z2XICVsbHUg5Lit55qE5qCh6aqM5YC85pyJ6K+v77yIdW5kbyBibGsgJWxsde+8iVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYwOQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGJsb2NrICVsbHUuIgorbXNnc3RyICLlhpnlnZcgJWxsdSDml7bjgIIiCisKKyM6IG1pc2MvZTJ1bmRvLmM6NjE1CisjLCBjLWZvcm1hdAorbXNnaWQgIlVuZG8gZmlsZSBjb3JydXB0aW9uOyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAi5pKk6ZSA5paH5Lu25o2f5Z2P77yb6K+356uL5Y2z6L+Q6KGMIGUyZnNja++8gVxuIgorCisjOiBtaXNjL2UydW5kby5jOjYxNworIywgYy1mb3JtYXQKK21zZ2lkICJJTyBlcnJvciBkdXJpbmcgcmVwbGF5OyBydW4gZTJmc2NrIE5PVyFcbiIKK21zZ3N0ciAi5omn6KGM6YeN5YGa5pON5L2c5pe25Ye6546w6L6T5YWlL+i+k+WHuumUmeivr++8m+ivt+eri+WNs+i/kOihjCBlMmZzY2vvvIFcbiIKKworIzogbWlzYy9lMnVuZG8uYzo2MjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5jb21wbGV0ZSB1bmRvIHJlY29yZDsgcnVuIGUyZnNjay5cbiIKK21zZ3N0ciAi5pKk6ZSA6K6w5b2V5LiN5a6M5pW077yb6K+36L+Q6KGMIGUyZnNja+OAglxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjExMAorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogIGZpbmRzdXBlciBkZXZpY2UgW3NraXBieXRlcyBbc3RhcnRrYl1dXG4iCittc2dzdHIgIueUqOazle+8mmZpbmRzdXBlciDorr7lpIcgW+i3s+i/h+Wtl+iKguaVsCBb6LW35aeLa2LmlbBdXVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE1NQorIywgYy1mb3JtYXQKK21zZ2lkICJza2lwYnl0ZXMgc2hvdWxkIGJlIGEgbnVtYmVyLCBub3QgJXNcbiIKK21zZ3N0ciAi4oCc6Lez6L+H5a2X6IqC5pWw4oCd5bqU5b2T5Li65LiA5Liq5pWw5a2X77yM6ICM5LiN5pivICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTYyCisjLCBjLWZvcm1hdAorbXNnaWQgInNraXBieXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNlY3RvciBzaXplXG4iCittc2dzdHIgIuKAnOi3s+i/h+Wtl+iKguaVsOKAneW6lOW9k+aYr+aJh+WMuuWkp+Wwj+eahOaVtOaVsOWAjVxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjE2OQorIywgYy1mb3JtYXQKK21zZ2lkICJzdGFydGtiIHNob3VsZCBiZSBhIG51bWJlciwgbm90ICVzXG4iCittc2dzdHIgIuKAnOi1t+Wni2ti5pWw4oCd5bqU5b2T5Li65LiA5Liq5pWw5a2X77yM6ICM5LiN5pivICVzXG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTc1CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0a2Igc2hvdWxkIGJlIHBvc2l0aXZlLCBub3QgJWxsdVxuIgorbXNnc3RyICLigJzotbflp4trYuaVsOKAneW6lOW9k+S4uuato+aVsO+8jOiAjOS4jeaYryAlbGx1XG4iCisKKyM6IG1pc2MvZmluZHN1cGVyLmM6MTg2CisjLCBjLWZvcm1hdAorbXNnaWQgInN0YXJ0aW5nIGF0ICVsbHUsIHdpdGggJXUgYnl0ZSBpbmNyZW1lbnRzXG4iCittc2dzdHIgIuWcqCAlbGx1IOWkhOW8gOWni++8jOWinumHj+S4uiAldSDlrZfoioJcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxODgKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlsqXSBwcm9iYWJseSBzdXBlcmJsb2NrIHdyaXR0ZW4gaW4gdGhlIGV4dDMgam91cm5hbCBzdXBlcmJsb2NrLFxuIgorIlx0c28gc3RhcnQvZW5kL2dycCB3cm9uZ1xuIgorbXNnc3RyICIiCisiWypdIGV4dDMg5pel5b+X5Lit55qE6LaF57qn5Z2X5Lit5Y+v6IO96KKr5YaZ5YWl5LqG5paH5Lu257O757uf55qE6LaF57qn5Z2X77yMXG4iCisiXHTlm6DmraQgc3RhcnQvZW5kL2dycCDlh7rplJlcbiIKKworIzogbWlzYy9maW5kc3VwZXIuYzoxOTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorImJ5dGVfb2Zmc2V0ICBieXRlX3N0YXJ0ICAgICBieXRlX2VuZCAgZnNfYmxvY2tzIGJsa3N6ICBncnAgIG1rZnMvIgorIm1vdW50X3RpbWUgICAgICAgICAgIHNiX3V1aWQgbGFiZWxcbiIKK21zZ3N0ciAiIgorIuWBj+enu+Wtl+iKgiAgICAg6LW35aeL5a2X6IqCICAgICAg57uT5p2f5a2X6IqCICAg5Z2X5pWwICAgICAg5Z2X5aSn5bCPICBncnAgIOWIm+W7ui/mjILovb3ml7YiCisi6Ze0ICAgICAgICAgICAgIOi2hee6p+WdlyBVVUlEIOagh+etvlxuIgorCisjOiBtaXNjL2ZpbmRzdXBlci5jOjI2NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiJTExTHU6IGZpbmlzaGVkIHdpdGggZXJybm8gJWRcbiIKK21zZ3N0ciAiIgorIlxuIgorIiUxMUx177ya5bey57uT5p2f77yM6ZSZ6K+v5Y+35Li6ICVkXG4iCisKKyM6IG1pc2MvZnNjay5jOjM0MworIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBjb3VsZG4ndCBvcGVuICVzOiAlc1xuIgorbXNnc3RyICLorablkYrvvJrml6Dms5XmiZPlvIAgJXPvvJolc1xuIgorCisjOiBtaXNjL2ZzY2suYzozNTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiV0FSTklORzogYmFkIGZvcm1hdCBvbiBsaW5lICVkIG9mICVzXG4iCittc2dzdHIgIuitpuWRiu+8miUyJHMg55qE56ysICUxJGQg5Lit5qC85byP6ZSZ6K+vXG4iCisKKyM6IG1pc2MvZnNjay5jOjM3MAorbXNnaWQgIiIKKyJXQVJOSU5HOiBZb3VyIC9ldGMvZnN0YWIgZG9lcyBub3QgY29udGFpbiB0aGUgZnNjayBwYXNzbm9cbiIKKyJcdGZpZWxkLiAgSSB3aWxsIGtsdWRnZSBhcm91bmQgdGhpbmdzIGZvciB5b3UsIGJ1dCB5b3VcbiIKKyJcdHNob3VsZCBmaXggeW91ciAvZXRjL2ZzdGFiIGZpbGUgYXMgc29vbiBhcyB5b3UgY2FuLlxuIgorIlxuIgorbXNnc3RyICIiCisi6K2m5ZGK77ya5L2g55qEL2V0Yy9mc3RhYuS4ree8uuWwkXBhc3Nub+Wtl+auteOAglxuIgorIlx05oiR5bCG5Lya6K6+5rOV5a6M5oiQ5Lu75Yqh77yM5L2G5L2g5bqU5b2T5bC95b+r5L+u5aSNL2V0Yy9mc3RhYuOAglxuIgorIlxuIgorCisjOiBtaXNjL2ZzY2suYzo0NzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiZnNjazogJXM6IG5vdCBmb3VuZFxuIgorbXNnc3RyICJmc2Nr77yaJXPvvJrmnKrmib7liLBcbiIKKworIzogbWlzYy9mc2NrLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB3YWl0OiBObyBtb3JlIGNoaWxkIHByb2Nlc3M/IT9cbiIKK21zZ3N0ciAiIgorIiVz77ya562J5b6F5Lit77ya5rKh5pyJ5a2Q6L+b56iL5LqG5ZCX77yf77yB77yfXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjYxNgorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nLi4uICVzIGZvciBkZXZpY2UgJXMgZXhpdGVkIHdpdGggc2lnbmFsICVkLlxuIgorbXNnc3RyICLorablkYouLi4g6K6+5aSHJXMg55qEICVzIOaTjeS9nOaUtuWIsCAlZCDkv6Hlj7flkI7pgIDlh7rjgIJcbiIKKworIzogbWlzYy9mc2NrLmM6NjIyCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzICVzOiBzdGF0dXMgaXMgJXgsIHNob3VsZCBuZXZlciBoYXBwZW4uXG4iCittc2dzdHIgIiVzICVz77ya54q25oCB5Li6ICV477yM6L+Z5LiN5bqU5b2T5Y+R55Sf44CCXG4iCisKKyM6IG1pc2MvZnNjay5jOjY2MQorIywgYy1mb3JtYXQKK21zZ2lkICJGaW5pc2hlZCB3aXRoICVzIChleGl0IHN0YXR1cyAlZClcbiIKK21zZ3N0ciAi5bey5a6M5oiQICVzIO+8iOmAgOWHuueKtuaAgeeggSAlZO+8iVxuIgorCisjOiBtaXNjL2ZzY2suYzo3MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEVycm9yICVkIHdoaWxlIGV4ZWN1dGluZyBmc2NrLiVzIGZvciAlc1xuIgorbXNnc3RyICIlMSRz77ya5omn6KGMZnNjay4lMyRzICU0JHMg5pe25Ye66ZSZ77yMIOmAgOWHuueKtuaAgeeggSAlMiRkXG4iCisKKyM6IG1pc2MvZnNjay5jOjc0MgorbXNnaWQgIiIKKyJFaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlIGZpbGVzeXN0ZW0gdHlwZXMgcGFzc2VkIHRvIC10IG11c3QgYmUgcHJlZml4ZWRcbiIKKyJ3aXRoICdubycgb3IgJyEnLlxuIgorbXNnc3RyICIiCisi5omA5pyJ6YCa6L+HIC10IOmAiemhueaMh+WumueahOaWh+S7tuezu+e7n+exu+Wei+W/hemhu+mDveWQq+acie+8iOaIlumDveS4jeWQq+acie+8iVxuIgorIuKAnG5v4oCd5oiW4oCc77yB4oCd5YmN57yA44CCXG4iCisKKyM6IG1pc2MvZnNjay5jOjc2MQorbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgZmlsZXN5c3RlbSB0eXBlc1xuIgorbXNnc3RyICIiCisi5peg5rOV5Li65Yib5bu65oyH5a6a5paH5Lu257O757uf57G75Z6L5YiG6YWN5YaF5a2YXG4iCisiXG4iCisKKyM6IG1pc2MvZnNjay5jOjg4NAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiJXM6IHNraXBwaW5nIGJhZCBsaW5lIGluIC9ldGMvZnN0YWI6IGJpbmQgbW91bnQgd2l0aCBub256ZXJvIGZzY2sgcGFzcyAiCisibnVtYmVyXG4iCittc2dzdHIgIiVz77ya6Lez6L+HL2V0Yy9mc3RhYuS4reeahOmUmeivr+ihjO+8muS8oOmAkue7mWZzY2vpnZ7pm7blgLznmoRiaW5k5oyC6L296aG5XG4iCisKKyM6IG1pc2MvZnNjay5jOjkxMQorIywgYy1mb3JtYXQKK21zZ2lkICJmc2NrOiBjYW5ub3QgY2hlY2sgJXM6IGZzY2suJXMgbm90IGZvdW5kXG4iCittc2dzdHIgImZzY2vvvJrml6Dms5Xmo4Dmn6UgJXPvvJrmib7kuI3liLBmc2NrLiVzXG4iCisKKyM6IG1pc2MvZnNjay5jOjk2NworbXNnaWQgIkNoZWNraW5nIGFsbCBmaWxlIHN5c3RlbXMuXG4iCittc2dzdHIgIuato+WcqOajgOafpeaJgOacieaWh+S7tuezu+e7n+OAglxuIgorCisjOiBtaXNjL2ZzY2suYzoxMDU4CisjLCBjLWZvcm1hdAorbXNnaWQgIi0td2FpdGluZy0tIChwYXNzICVkKVxuIgorbXNnc3RyICItLeivt+eojeWAmS0tIO+8iOesrCAlZCDmraXvvIluXG4iCisKKyM6IG1pc2MvZnNjay5jOjEwNzgKK21zZ2lkICIiCisiVXNhZ2U6IGZzY2sgWy1BTU5QUlRWXSBbIC1DIFsgZmQgXSBdIFstdCBmc3R5cGVdIFtmcy1vcHRpb25zXSBbZmlsZXN5cyAuLi5dXG4iCittc2dzdHIgIiIKKyLnlKjms5XvvJpmc2NrIFstQU1OUFJUVl0gWyAtQyBbIGZkIF0gXSBbLXQg5paH5Lu257O757uf57G75Z6LXSBb5paH5Lu257O757uf6YCJ6aG5XSBb5paH5Lu257O7IgorIue7nyAuLi5dXG4iCisKKyM6IG1pc2MvZnNjay5jOjExMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IHRvbyBtYW55IGRldmljZXNcbiIKK21zZ3N0ciAiJXPvvJrorr7lpIfov4flpJpcbiIKKworIzogbWlzYy9mc2NrLmM6MTE1MyBtaXNjL2ZzY2suYzoxMjM5CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzOiB0b28gbWFueSBhcmd1bWVudHNcbiIKK21zZ3N0ciAiJXPvvJrlj4LmlbDov4flpJpcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6Mzc0MAorbXNnaWQgIk1vdW50aW5nIHJlYWQtb25seS5cbiIKK21zZ3N0ciAi5Lul5Y+q6K+75qih5byP5oyC6L2944CCXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IEFsbG93aW5nIHVzZXJzIHRvIGFsbG9jYXRlIGFsbCBibG9ja3MuIFRoaXMgaXMgZGFuZ2Vyb3VzIVxuIgorbXNnc3RyICIlc++8muWFgeiuuOeUqOaIt+WIhumFjeaJgOacieWdl+OAgui/meagt+WBmuW+iOWNsemZqe+8gVxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzc2IG1pc2MvZnVzZTJmcy5jOjM3ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6ICVzLlxuIgorbXNnc3RyICIlc++8miVz44CCXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM3NzcgbWlzYy9mdXNlMmZzLmM6Mzc5MSBtaXNjL3R1bmUyZnMuYzozMjA3CisjLCBjLWZvcm1hdAorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1meSAlcy5cbiIKK21zZ3N0ciAi6K+35YWI6L+Q6KGM4oCcZTJmc2NrIC1meSAlc+KAneOAglxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozNzk4Cittc2dpZCAiSm91cm5hbCBuZWVkcyByZWNvdmVyeTsgcnVubmluZyBgZTJmc2NrIC1FIGpvdXJuYWxfb25seScgaXMgcmVxdWlyZWQuXG4iCittc2dzdHIgIuaXpeW/l+mcgOimgeaBouWkje+8m+ivt+i/kOihjOKAnGUyZnNjayAtRSBqb3VybmFsX29ubHnigJ3jgIJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgwNgorIywgYy1mb3JtYXQKK21zZ2lkICIlczogV3JpdGluZyB0byB0aGUgam91cm5hbCBpcyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIlc++8muS4jeaUr+aMgeWGmeWFpeaXpeW/l+OAglxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODIxCittc2dpZCAiV2FybmluZzogTW91bnRpbmcgdW5jaGVja2VkIGZzLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAi6K2m5ZGK77ya5q2j5Zyo5oyC6L295pyq57uP5qOA5p+l55qE5paH5Lu257O757uf77yM5bu66K6u5oKo5YWI6L+Q6KGMIGUyZnNja+OAglxuIgorCisjOiBtaXNjL2Z1c2UyZnMuYzozODI1Cittc2dpZCAiV2FybmluZzogTWF4aW1hbCBtb3VudCBjb3VudCByZWFjaGVkLCBydW5uaW5nIGUyZnNjayBpcyByZWNvbW1lbmRlZC5cbiIKK21zZ3N0ciAiIgorIuitpuWRiu+8muWwneivleaMgui9veasoeaVsOi2hei/h+acgOWkp+WAvO+8jOW7uuiuruaCqOi/kOihjCBlMmZzY2vjgIJcbiIKKyJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzMAorbXNnaWQgIldhcm5pbmc6IENoZWNrIHRpbWUgcmVhY2hlZDsgcnVubmluZyBlMmZzY2sgaXMgcmVjb21tZW5kZWQuXG4iCittc2dzdHIgIuitpuWRiu+8muajgOafpei2heaXtu+8jOW7uuiuruaCqOi/kOihjCBlMmZzY2vjgIJcbiIKKworIzogbWlzYy9mdXNlMmZzLmM6MzgzNAorbXNnaWQgIk9ycGhhbnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlY29tbWVuZGVkLlxuIgorbXNnc3RyICLmo4DmtYvliLDlraTnq4vlnZfvvJvlu7rorq7mgqjov5DooYwgZTJmc2Nr44CCXG4iCisKKyM6IG1pc2MvZnVzZTJmcy5jOjM4MzgKK21zZ2lkICJFcnJvcnMgZGV0ZWN0ZWQ7IHJ1bm5pbmcgZTJmc2NrIGlzIHJlcXVpcmVkLlxuIgorbXNnc3RyICLmo4DmtYvliLDplJnor6/vvJvor7fov5DooYwgZTJmc2Nr44CCXG4iCisKKyM6IG1pc2MvbHNhdHRyLmM6NzUKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstUlZhZGxwdl0gW2ZpbGVzLi4uXVxuIgorbXNnc3RyICLnlKjms5XvvJolcyBbLVJWYWRscHZdIFvmlofku7YuLi5dXG4iCisKKyM6IG1pc2MvbHNhdHRyLmM6ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2hpbGUgcmVhZGluZyBmbGFncyBvbiAlcyIKK21zZ3N0ciAi6K+75Y+WICVzIOeahOagh+W/l+aXtiIKKworIzogbWlzYy9sc2F0dHIuYzo5MworIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSByZWFkaW5nIHByb2plY3Qgb24gJXMiCittc2dzdHIgIuivu+WPliAlcyDnmoTpobnnm67ml7YiCisKKyM6IG1pc2MvbHNhdHRyLmM6MTAyCisjLCBjLWZvcm1hdAorbXNnaWQgIldoaWxlIHJlYWRpbmcgdmVyc2lvbiBvbiAlcyIKK21zZ3N0ciAi6K6+572uICVzIOeahOeJiOacrOaXtiIKKworIzogbWlzYy9ta2UyZnMuYzoxMjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlVzYWdlOiAlcyBbLWN8LWwgZmlsZW5hbWVdIFstYiBibG9jay1zaXplXSBbLUMgY2x1c3Rlci1zaXplXVxuIgorIlx0Wy1pIGJ5dGVzLXBlci1pbm9kZV0gWy1JIGlub2RlLXNpemVdIFstSiBqb3VybmFsLW9wdGlvbnNdXG4iCisiXHRbLUcgZmxleC1ncm91cC1zaXplXSBbLU4gbnVtYmVyLW9mLWlub2Rlc10gWy1kIHJvb3QtZGlyZWN0b3J5XVxuIgorIlx0Wy1tIHJlc2VydmVkLWJsb2Nrcy1wZXJjZW50YWdlXSBbLW8gY3JlYXRvci1vc11cbiIKKyJcdFstZyBibG9ja3MtcGVyLWdyb3VwXSBbLUwgdm9sdW1lLWxhYmVsXSBbLU0gbGFzdC1tb3VudGVkLWRpcmVjdG9yeV1cbiIKKyJcdFstTyBmZWF0dXJlWywuLi5dXSBbLXIgZnMtcmV2aXNpb25dIFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dXG4iCisiXHRbLXQgZnMtdHlwZV0gWy1UIHVzYWdlLXR5cGUgXSBbLVUgVVVJRF0gWy1lIGVycm9yc19iZWhhdmlvcl1bLXogIgorInVuZG9fZmlsZV1cbiIKKyJcdFstam5xdkRGU1ZdIGRldmljZSBbYmxvY2tzLWNvdW50XVxuIgorbXNnc3RyICIiCisi55So5rOV77yaJXMgWy1jfC1sIOaWh+S7tuWQjV0gWy1iIOWdl+Wkp+Wwj10gWy1DIOewh+Wkp+Wwj11cbiIKKyJcdFstaSDmr49pbm9kZeeahOWtl+iKguaVsF0gWy1JIGlub2Rl5aSn5bCPXSBbLUog5pel5b+X6YCJ6aG5XVxuIgorIlx0Wy1HIOW8ueaAp+e7hOWkp+Wwj10gWy1OIGlub2Rl5pWwXSBbLWQg5qC555uu5b2VXVxuIgorIlx0Wy1tIOS/neeVmeWdl+aJgOWNoOeZvuWIhuavlF0gWy1vIOWIm+Wni+ezu+e7n+WQjV1cbiIKKyJcdFstZyDmr4/nu4TnmoTlnZfmlbBdIFstTCDljbfmoIddIFstTSDkuIrkuIDmrKHmjILovb3ngrldXG4iCisiXHRbLU8g54m55oCnWywuLi5dXSBbLXIg5paH5Lu257O757uf54mI5pysXSBbLUUg5omp5bGV6YCJ6aG5WywuLi5dXVxuIgorIlx0Wy10IOaWh+S7tuezu+e7n+exu+Wei10gWy1UIOeUqOazleexu+Wei10gWy1VIFVVSURdIFstZSDplJnor6/ooYzkuLpdWy16IOaSpOmUgOaWh+S7tl1cbiIKKyJcdFstam5xdkRGS1NWXSDorr7lpIcgW+Wdl+aVsF1cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiUnVubmluZyBjb21tYW5kOiAlc1xuIgorbXNnc3RyICLmraPlnKjmiafooYzlkb3ku6TvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjI1OQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcnVuICclcyciCittc2dzdHIgIuWwneivlei/kOihjOKAnCVz4oCd5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjI2NgorbXNnaWQgIndoaWxlIHByb2Nlc3NpbmcgbGlzdCBvZiBiYWQgYmxvY2tzIGZyb20gcHJvZ3JhbSIKK21zZ3N0ciAi5aSE55CG5LuOYmFkYmxvY2tz6I635Y+W55qE5Z2P5Z2X5YiX6KGo5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjI5MworIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayAlZCBpbiBwcmltYXJ5IHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvciBhcmVhIGJhZC5cbiIKK21zZ3N0ciAi5Li76LaF57qn5Z2XL+e7hOaPj+i/sOespuS4reeahOWdlyAlZCDkuLrlnY/lnZfjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQmxvY2tzICV1IHRocm91Z2ggJXUgbXVzdCBiZSBnb29kIGluIG9yZGVyIHRvIGJ1aWxkIGEgZmlsZXN5c3RlbS5cbiIKK21zZ3N0ciAi6Iul6KaB5Yib5bu65paH5Lu257O757uf77yM5Z2XICV1IOiHsyAldSDlv4XpobvkuLrlpb3lnZfjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTgKK21zZ2lkICJBYm9ydGluZy4uLi5cbiIKK21zZ3N0ciAi5q2j5Zyo57uI5q2iLi4uXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiB0aGUgYmFja3VwIHN1cGVyYmxvY2svZ3JvdXAgZGVzY3JpcHRvcnMgYXQgYmxvY2sgJXUgY29udGFpblxuIgorIlx0YmFkIGJsb2Nrcy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuitpuWRiu+8muWkh+S7vei2hee6p+Wdly/nu4Tmj4/ov7DnrKbkuK3lj5HnjrDlnY/lnZfvvIglde+8iVxuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMzNworbXNnaWQgIndoaWxlIG1hcmtpbmcgYmFkIGJsb2NrcyBhcyB1c2VkIgorbXNnc3RyICLlsIblnY/lnZfmoIforrDkuLrlt7Lkvb/nlKjnmoQiCisKKyM6IG1pc2MvbWtlMmZzLmM6NDA4Cittc2dpZCAiV3JpdGluZyBpbm9kZSB0YWJsZXM6ICIKK21zZ3N0ciAi5q2j5Zyo5YaZ5YWlaW5vZGXooajvvJogIgorCisjOiBtaXNjL21rZTJmcy5jOjQzMAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IHdyaXRlICVkIGJsb2NrcyBpbiBpbm9kZSB0YWJsZSBzdGFydGluZyBhdCAlbGx1OiAlc1xuIgorbXNnc3RyICIiCisiXG4iCisi5peg5rOV5YaZ5YWlICVkIOS4quWdl+WIsOi1t+Wni+S6jiVsbHXnmoRpbm9kZeihqO+8miVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDQ0IG1pc2MvbWtlMmZzLmM6MjY1NCBtaXNjL21rZTJmcy5jOjMwMzAKK21zZ2lkICJkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgorbXNnc3RyICLlrozmiJAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NDU5Cittc2dpZCAid2hpbGUgY3JlYXRpbmcgcm9vdCBkaXIiCittc2dzdHIgIuWIm+W7uuagueebruW9leaXtiIKKworIzogbWlzYy9ta2UyZnMuYzo0NjYKK21zZ2lkICJ3aGlsZSByZWFkaW5nIHJvb3QgaW5vZGUiCittc2dzdHIgIuivu+WPluWdj+Wdl2lub2Rl5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjQ3OAorbXNnaWQgIndoaWxlIHNldHRpbmcgcm9vdCBpbm9kZSBvd25lcnNoaXAiCittc2dzdHIgIuiuvue9ruagueebruW9leeahOaJgOacieiAheaXtiIKKworIzogbWlzYy9ta2UyZnMuYzo0OTYKK21zZ2lkICJ3aGlsZSBjcmVhdGluZyAvbG9zdCtmb3VuZCIKK21zZ3N0ciAi5Yib5bu6L2xvc3QrZm91bmTnm67lvZXml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTAzCittc2dpZCAid2hpbGUgbG9va2luZyB1cCAvbG9zdCtmb3VuZCIKK21zZ3N0ciAi5p+l5om+L2xvc3QrZm91bmTnm67lvZXml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTE2Cittc2dpZCAid2hpbGUgZXhwYW5kaW5nIC9sb3N0K2ZvdW5kIgorbXNnc3RyICLmianlhYUvbG9zdCtmb3VuZOebruW9leaXtiIKKworIzogbWlzYy9ta2UyZnMuYzo1MzEKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIGJhZCBibG9jayBpbm9kZSIKK21zZ3N0ciAi6K6+572u5Z2P5Z2XaW5vZGXml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIk91dCBvZiBtZW1vcnkgZXJhc2luZyBzZWN0b3JzICVkLSVkXG4iCittc2dzdHIgIuaTpumZpOaJh+WMuiAlZC0lZCDml7blhoXlrZjogJflsL1cbiIKKworIzogbWlzYy9ta2UyZnMuYzo1NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiV2FybmluZzogY291bGQgbm90IHJlYWQgYmxvY2sgMDogJXNcbiIKK21zZ3N0ciAi6K2m5ZGK77ya5peg5rOV6K+75Y+W5Z2XIDDvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjU4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXYXJuaW5nOiBjb3VsZCBub3QgZXJhc2Ugc2VjdG9yICVkOiAlc1xuIgorbXNnc3RyICLorablkYrvvJrml6Dms5Xmk6bpmaTlnZcgJWTvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjYwMAorbXNnaWQgIndoaWxlIGluaXRpYWxpemluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgIuWIneWni+WMluaXpeW/l+i2hee6p+Wdl+aXtiIKKworIzogbWlzYy9ta2UyZnMuYzo2MDgKK21zZ2lkICJaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAiCittc2dzdHIgIuato+WcqOWvueaXpeW/l+iuvuWkh+Whq+mbtu+8miAiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjIwCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHplcm9pbmcgam91cm5hbCBkZXZpY2UgKGJsb2NrICVsbHUsIGNvdW50ICVkKSIKK21zZ3N0ciAi5a+55pel5b+X6K6+5aSH5aGr6Zu25pe277yI5Z2XICVsbHXvvIzorqHmlbAgJWTvvIkiCisKKyM6IG1pc2MvbWtlMmZzLmM6NjM3Cittc2dpZCAid2hpbGUgd3JpdGluZyBqb3VybmFsIHN1cGVyYmxvY2siCittc2dzdHIgIuWGmeWFpeaXpeW/l+i2hee6p+Wdl+aXtiIKKworIzogbWlzYy9ta2UyZnMuYzo2NTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoICVsbHUgJWRrIGJsb2NrcyBhbmQgJXUgaW5vZGVzXG4iCittc2dzdHIgIuWIm+W7uuWQq+aciSAlbGx1IOS4quWdl++8iOavj+WdlyAlZGvvvInlkowgJXUg5LiqaW5vZGXnmoTmlofku7bns7vnu59cbiIKKworIzogbWlzYy9ta2UyZnMuYzo2NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIndhcm5pbmc6ICVsbHUgYmxvY2tzIHVudXNlZC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuitpuWRiu+8miVsbHUg5Z2X5pyq5L2/55So44CCXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gbGFiZWw9JXNcbiIKK21zZ3N0ciAi5paH5Lu257O757uf5qCH562+PSVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjY4CisjLCBjLWZvcm1hdAorbXNnaWQgIk9TIHR5cGU6ICVzXG4iCittc2dzdHIgIuaTjeS9nOezu+e7n++8miAlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MAorIywgYy1mb3JtYXQKK21zZ2lkICJCbG9jayBzaXplPSV1IChsb2c9JXUpXG4iCittc2dzdHIgIuWdl+Wkp+Wwjz0lde+8iGxvZz0lde+8iVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY3MworIywgYy1mb3JtYXQKK21zZ2lkICJDbHVzdGVyIHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAi57CH5aSn5bCPPSV177yIbG9nPSV177yJXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc3CisjLCBjLWZvcm1hdAorbXNnaWQgIkZyYWdtZW50IHNpemU9JXUgKGxvZz0ldSlcbiIKK21zZ3N0ciAi5YiG5Z2X5aSn5bCPPSV177yIbG9nPSV177yJXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njc5CisjLCBjLWZvcm1hdAorbXNnaWQgIlN0cmlkZT0ldSBibG9ja3MsIFN0cmlwZSB3aWR0aD0ldSBibG9ja3NcbiIKK21zZ3N0ciAi5q2l6ZW/PSV1IOWdl++8jOW4puWuvT0ldSDlnZdcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgaW5vZGVzLCAlbGx1IGJsb2Nrc1xuIgorbXNnc3RyICIldSDkuKppbm9kZe+8jCVsbHUg5Liq5Z2XXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIiVsbHUgYmxvY2tzICglMi4yZiUlKSByZXNlcnZlZCBmb3IgdGhlIHN1cGVyIHVzZXJcbiIKK21zZ3N0ciAiJWxsdSDkuKrlnZfvvIglMi4yZiUl77yJ5Li66LaF57qn55So5oi35L+d55WZXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpcnN0IGRhdGEgYmxvY2s9JXVcbiIKK21zZ3N0ciAi56ys5LiA5Liq5pWw5o2u5Z2XPSV1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njg4CisjLCBjLWZvcm1hdAorbXNnaWQgIlJvb3QgZGlyZWN0b3J5IG93bmVyPSV1OiV1XG4iCittc2dzdHIgIuagueebruW9leeahOaJgOacieiAhT0ldToldVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjY5MAorIywgYy1mb3JtYXQKK21zZ2lkICJNYXhpbXVtIGZpbGVzeXN0ZW0gYmxvY2tzPSVsdVxuIgorbXNnc3RyICLmlofku7bns7vnu5/lnZfnmoTmnIDlpKflgLw9JWx1XG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk0CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrIGdyb3Vwc1xuIgorbXNnc3RyICIldSDkuKrlnZfnu4RcbiIKKworIzogbWlzYy9ta2UyZnMuYzo2OTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXUgYmxvY2sgZ3JvdXBcbiIKK21zZ3N0ciAiJXUg5Liq5Z2X57uEXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6Njk4CisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGJsb2NrcyBwZXIgZ3JvdXAsICV1IGNsdXN0ZXJzIHBlciBncm91cFxuIgorbXNnc3RyICIiCisi5q+P57uEICV1IOS4quWdl++8jCV1IOS4quewh1xuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjcwMQorIywgYy1mb3JtYXQKK21zZ2lkICIldSBibG9ja3MgcGVyIGdyb3VwLCAldSBmcmFnbWVudHMgcGVyIGdyb3VwXG4iCittc2dzdHIgIiIKKyLmr4/nu4QgJXUg5Liq5Z2X77yMJXUg5Liq56KO54mHXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiV1IGlub2RlcyBwZXIgZ3JvdXBcbiIKK21zZ3N0ciAi5q+P57uEICV1IOS4qmlub2RlXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEyCisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gVVVJRDogJXNcbiIKK21zZ3N0ciAi5paH5Lu257O757ufVVVJRO+8miVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6NzEzCittc2dpZCAiU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6ICIKK21zZ3N0ciAi6LaF57qn5Z2X55qE5aSH5Lu95a2Y5YKo5LqO5LiL5YiX5Z2X77yaICIKKworIzogbWlzYy9ta2UyZnMuYzo4MDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgcmVxdWlyZXMgJy1PIDY0Yml0J1xuIgorbXNnc3RyICIiCisiJXMg6ZyA6KaB4oCcLU8gNjRiaXTigJ3pgInpoblcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo4MTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBtdXN0IGJlIGJlZm9yZSAncmVzaXplPSV1J1xuIgorbXNnc3RyICLigJwlc+KAnemAiemhueW/hemhu+S9jeS6juKAnHJlc2l6ZT0ldeKAneS5i+WJjVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjgyNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGRlc2Nfc2l6ZTogJyVzJ1xuIgorbXNnc3RyICJkZXNjX3NpemXlgLzml6DmlYjvvJrigJwlc+KAnVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjgzOQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9mZnNldDogJXNcbiIKK21zZ3N0ciAi5peg5pWI55qE5YGP56e76YeP77yaICVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6ODUzIG1pc2MvdHVuZTJmcy5jOjE5NTgKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBtbXBfdXBkYXRlX2ludGVydmFsOiAlc1xuIgorbXNnc3RyICLml6DmlYhtbXDmm7TmlrDpl7TpmpTvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg2NworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkICMgb2YgYmFja3VwIHN1cGVyYmxvY2tzOiAlc1xuIgorbXNnc3RyICLlpIfku73otoXnuqflnZfnvJblj7fml6DmlYjvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjg4OQorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIHN0cmlkZSBwYXJhbWV0ZXI6ICVzXG4iCittc2dzdHIgIuaXoOaViOeahOatpemVv+WPguaVsO+8miVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6OTA0CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgc3RyaXBlLXdpZHRoIHBhcmFtZXRlcjogJXNcbiIKK21zZ3N0ciAi5peg5pWI55qE5bim5a695Y+C5pWw77yaJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5MjcKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByZXNpemUgcGFyYW1ldGVyOiAlc1xuIgorbXNnc3RyICLml6DmlYjnmoTmlLnlj5jlpKflsI/lj4LmlbDvvJolc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjkzNAorbXNnaWQgIlRoZSByZXNpemUgbWF4aW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZmlsZXN5c3RlbSBzaXplLlxuIgorbXNnc3RyICLmiYDpnIDmlLnlj5jnmoTlpKflsI/lv4XpobvlpKfkuo7lvZPliY3mlofku7bns7vnu5/nmoTlpKflsI/jgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5NTgKK21zZ2lkICJPbi1saW5lIHJlc2l6aW5nIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIueJiOacrOS4ujDnmoTmlofku7bns7vnu5/kuI3mlK/mjIHlnKjnur/mlLnlj5jlpKflsI/jgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzo5ODQgbWlzYy9ta2UyZnMuYzo5OTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCByb290X293bmVyOiAnJXMnXG4iCittc2dzdHIgIuaXoOaViOeahOagueebruW9leaJgOacieiAhe+8muKAnCVz4oCdXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTAzNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQmFkIG9wdGlvbihzKSBzcGVjaWZpZWQ6ICVzXG4iCisiXG4iCisiRXh0ZW5kZWQgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGV4dGVuZGVkIG9wdGlvbnMgYXJlOlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD08aW50ZXJ2YWw+XG4iCisiXHRudW1fYmFja3VwX3NiPTwwfDF8Mj5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBkYXRhIGNodW5rIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZS13aWR0aD08UkFJRCBzdHJpZGUgKiBkYXRhIGRpc2tzIGluIGJsb2Nrcz5cbiIKKyJcdG9mZnNldD08b2Zmc2V0IHRvIGNyZWF0ZSB0aGUgZmlsZSBzeXN0ZW0+XG4iCisiXHRyZXNpemU9PHJlc2l6ZSBtYXhpbXVtIHNpemUgaW4gYmxvY2tzPlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0bGF6eV9pdGFibGVfaW5pdD08MCB0byBkaXNhYmxlLCAxIHRvIGVuYWJsZT5cbiIKKyJcdGxhenlfam91cm5hbF9pbml0PTwwIHRvIGRpc2FibGUsIDEgdG8gZW5hYmxlPlxuIgorIlx0cm9vdF9vd25lcj08dWlkIG9mIHJvb3QgZGlyPjo8Z2lkIG9mIHJvb3QgZGlyPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9PHF1b3RhIHR5cGUocykgdG8gYmUgZW5hYmxlZD5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIlxuIgorIuaMh+WumuS6humUmeivr+eahOmAiemhue+8miVzXG4iCisiXG4iCisi5omp5bGV5bGe5oCn55Sx6YCX5Y+35YiG6ZqU77yM5pyJ5Lqb6ZyA6KaB6YCa6L+H562J5Y+377yI4oCcPeKAne+8ieS8oOmAkuWPguaVsOOAglxuIgorIlxuIgorIuacieaViOeahOaJqeWxlemAiemhueacie+8mlxuIgorIlx0bW1wX3VwZGF0ZV9pbnRlcnZhbD086Ze06ZqUPlxuIgorIlx0bnVtX2JhY2t1cF9zYj08MHwxfDI+XG4iCisiXHRzdHJpZGU9PFJBSUQg5q+P5Liq56OB55uY55qE5pWw5o2u5Z2X5pWw77yI5q2l6ZW/77yJPlxuIgorIlx0c3RyaXBlLXdpZHRoPTzmraXplb8gw5cgUkFJRCDno4Hnm5jmlbDvvIjluKblrr3vvIk+XG4iCisiXHRvZmZzZXQ9POaWh+S7tuezu+e7n+eahOWBj+enu+mHjz5cbiIKKyJcdHJlc2l6ZT086LCD5pW05Z2X5aSn5bCP5pe255qE5pyA5aSn5YC8PlxuIgorIlx0cGFja2VkX21ldGFfYmxvY2tzPTww77yI56aB55So77yJ5oiWIDHvvIjlkK/nlKjvvIk+XG4iCisiXHRsYXp5X2l0YWJsZV9pbml0PTww77yI56aB55So77yJ5oiWIDHvvIjlkK/nlKjvvIk+XG4iCisiXHRsYXp5X2pvdXJuYWxfaW5pdD08MO+8iOemgeeUqO+8ieaIliAx77yI5ZCv55So77yJPlxuIgorIlx0cm9vdF9vd25lcj085qC555uu5b2V55qEdWlkPjo85qC555uu5b2V55qEZ2lkPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0ZGlzY2FyZFxuIgorIlx0bm9kaXNjYXJkXG4iCisiXHRxdW90YXR5cGU9POimgeWQr+eUqOeahOmFjemineexu+Weiz5cbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMDU5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBSQUlEIHN0cmlwZS13aWR0aCAldSBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBzdHJpZGUgJXUuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLorablkYrvvJpSQUlE5bim5a69ICV1IOS4jeaYr+atpemVvyAldSDnmoTlgbbmlbDlgI3jgIJcbiIKKyJcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJTeW50YXggZXJyb3IgaW4gbWtlMmZzIGNvbmZpZyBmaWxlICglcywgbGluZSAjJWQpXG4iCisiXHQlc1xuIgorbXNnc3RyICIiCisibWtlMmZz6YWN572u5paH5Lu25Lit5pyJ6K+t5rOV6ZSZ6K+v77yIJXPvvIznrKwgJWQg6KGM77yJXG4iCisiXHQlc1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjExMTQgbWlzYy90dW5lMmZzLmM6MTAwNworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIGZpbGVzeXN0ZW0gb3B0aW9uIHNldDogJXNcbiIKK21zZ3N0ciAi6K6+572u5LqG5peg5pWI55qE5paH5Lu257O757uf6YCJ6aG577yaJXNcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxMTI2IG1pc2MvdHVuZTJmcy5jOjQwNgorIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG1vdW50IG9wdGlvbiBzZXQ6ICVzXG4iCittc2dzdHIgIuiuvue9ruS6huaXoOaViOeahOaMgui9vemAiemhue+8miVzXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2MgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiWW91ciBta2UyZnMuY29uZiBmaWxlIGRvZXMgbm90IGRlZmluZSB0aGUgJXMgZmlsZXN5c3RlbSB0eXBlLlxuIgorbXNnc3RyICIiCisiXG4iCisi5L2g55qEbWtlMmZzLmNvbmbmlofku7bkuK3msqHmnInlrprkuYnnsbvlnosgJXMg55qE5paH5Lu257O757uf44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI2NgorbXNnaWQgIiIKKyJZb3UgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGFuIHVwZGF0ZWQgbWtlMmZzLmNvbmYgZmlsZS5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuS9oOWPr+iDvemcgOimgeWNh+e6p21rZTJmcy5jb25m5paH5Lu244CCXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTI3MAorbXNnaWQgIkFib3J0aW5nLi4uXG4iCittc2dzdHIgIuato+WcqOe7iOatoi4uLlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjEzMTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlxuIgorIldhcm5pbmc6IHRoZSBmc190eXBlICVzIGlzIG5vdCBkZWZpbmVkIGluIG1rZTJmcy5jb25mXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLorablkYrvvJpta2UyZnMuY29uZuS4reacquWumuS5ieaWh+S7tuezu+e7n+exu+WeiyAlc1xuIgorIlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE0OTMKK21zZ2lkICJDb3VsZG4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIG5ldyBQQVRILlxuIgorbXNnc3RyICLml6Dms5XkuLrmlrDot6/lvoTliIbphY3lhoXlrZjjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGluaXQgcHJvZmlsZSBzdWNjZXNzZnVsbHkgKGVycm9yOiAlbGQpLlxuIgorbXNnc3RyICLml6Dms5XmiJDlip/liJ3lp4vljJbphY3nva7vvIjplJnor6/vvJolbGTvvInjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxNTY3CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2sgc2l6ZSAtICVzIgorbXNnc3RyICLml6DmlYjnmoTlnZflpKflsI8gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNTcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldhcm5pbmc6IGJsb2Nrc2l6ZSAlZCBub3QgdXNhYmxlIG9uIG1vc3Qgc3lzdGVtcy5cbiIKK21zZ3N0ciAi6K2m5ZGK77ya5Z2X5aSn5bCPICVkIOWcqOW+iOWkmuezu+e7n+S4reS4jeWPr+eUqOOAglxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCBjbHVzdGVyIHNpemUgLSAlcyIKK21zZ3N0ciAi5peg5pWI55qE57CH5aSn5bCPIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYwMAorbXNnaWQgIictUicgaXMgZGVwcmVjYXRlZCwgdXNlICctRScgaW5zdGVhZCIKK21zZ3N0ciAi4oCcLVLigJ0g6YCJ6aG55bey6KKr5bqf5byD77yM6K+35L2/55So4oCcLUXigJ3pgInpobkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYxNCBtaXNjL3R1bmUyZnMuYzoxNjg3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciAtICVzIgorbXNnc3RyICLlh7rplJnooYzkuLrmnInor68gLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjI2Cittc2dpZCAiSWxsZWdhbCBudW1iZXIgZm9yIGJsb2NrcyBwZXIgZ3JvdXAiCittc2dzdHIgIumdnuazleeahOavj+e7hOWdl+aVsCIKKworIzogbWlzYy9ta2UyZnMuYzoxNjMxCittc2dpZCAiYmxvY2tzIHBlciBncm91cCBtdXN0IGJlIG11bHRpcGxlIG9mIDgiCittc2dzdHIgIuavj+e7hOWdl+aVsOW/hemhu+aYrzjnmoTlgI3mlbAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTYzOQorbXNnaWQgIklsbGVnYWwgbnVtYmVyIGZvciBmbGV4X2JnIHNpemUiCittc2dzdHIgIumdnuazleeahOW8ueaAp+e7hOWkp+WwjyIKKworIzogbWlzYy9ta2UyZnMuYzoxNjQ1Cittc2dpZCAiZmxleF9iZyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIgorbXNnc3RyICLlvLnmgKfnu4TnmoTlpKflsI/lv4XpobvmmK8y55qE5qyh5pa5IgorCisjOiBtaXNjL21rZTJmcy5jOjE2NTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZmxleF9iZyBzaXplICglbHUpIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDJeMzEiCittc2dzdHIgIuW8ueaAp+e7hOeahOWkp+Wwj++8iCVsde+8ieW/hemhu+Wwj+S6juetieS6jjJeMzEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY2MAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlub2RlIHJhdGlvICVzIChtaW4gJWQvbWF4ICVkKSIKK21zZ3N0ciAi5peg5pWI55qEaW5vZGXmr5QgJXPvvIjmnIDlsI8gJWQgL+acgOWkpyAlZO+8iSIKKworIzogbWlzYy9ta2UyZnMuYzoxNjcwCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICLml6DmlYjnmoRpbm9kZeWkp+WwjyAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjE2ODMKK21zZ2lkICIiCisiV2FybmluZzogLUsgb3B0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBhbnltb3JlLiBVc2UgJy1FICIKKyJub2Rpc2NhcmQnIGV4dGVuZGVkIG9wdGlvbiBpbnN0ZWFkIVxuIgorbXNnc3RyICIiCisi6K2m5ZGK77yaLUsg6YCJ6aG55bey6KKr5bqf5byD77yM5LuK5ZCO5Lmf5LiN5bqU5b2T6KKr5L2/55So44CC6K+35L2/55So5omp5bGV6YCJ6aG5XG4iCisi4oCcLUUgbm9kaXNjYXJk4oCd5L2c5Li65pu/5Luj77yBXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTY5NAorbXNnaWQgImluIG1hbGxvYyBmb3IgYmFkX2Jsb2Nrc19maWxlbmFtZSIKK21zZ3N0ciAi5Li6YmFkX2Jsb2Nrc19maWxlbmFtZeWIhumFjeWGheWtmOaXtiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzAzCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBsYWJlbCB0b28gbG9uZzsgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gJyVzJ1xuIgorIlxuIgorbXNnc3RyICLorablkYrvvJrljbfmoIflpKrplb/vvIzlt7LmiKrnn63kuLrigJwlc+KAnVxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE3MTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiaW52YWxpZCByZXNlcnZlZCBibG9ja3MgcGVyY2VudCAtICVzIgorbXNnc3RyICLml6DmlYjnmoTkv53nlZnlnZfnmb7liIbmr5QgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzI3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBudW0gaW5vZGVzIC0gJXMiCittc2dzdHIgIumUmeivr+eahGlub2Rl5pWwIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc0MAorbXNnaWQgIndoaWxlIGFsbG9jYXRpbmcgZnNfZmVhdHVyZSBzdHJpbmciCittc2dzdHIgIuWIhumFjSBmc19mZWF0dXJlIOWtl+espuS4suaXtiIKKworIzogbWlzYy9ta2UyZnMuYzoxNzU3CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXZpc2lvbiBsZXZlbCAtICVzIgorbXNnc3RyICLplJnor6/nmoTniYjmnKzlj7cgLSAlcyIKKworIzogbWlzYy9ta2UyZnMuYzoxNzYyCisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBjcmVhdGUgcmV2aXNpb24gJWQiCittc2dzdHIgIuWwneivleWIm+W7uueJiOacrCAlZCDml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc3NgorbXNnaWQgIlRoZSAtdCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICItdCDpgInpobnlj6rog73ooqvmjIflrprkuIDmrKEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTc4NAorbXNnaWQgIlRoZSAtVCBvcHRpb24gbWF5IG9ubHkgYmUgdXNlZCBvbmNlIgorbXNnc3RyICItVCDpgInpobnlj6rog73ooqvmjIflrprkuIDmrKEiCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg0MCBtaXNjL21rZTJmcy5jOjMxMTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIG9wZW4gam91cm5hbCBkZXZpY2UgJXNcbiIKK21zZ3N0ciAi5bCd6K+V5omT5byA5pel5b+X6K6+5aSHICVzIOaXtlxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE4NDYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSm91cm5hbCBkZXYgYmxvY2tzaXplICglZCkgc21hbGxlciB0aGFuIG1pbmltdW0gYmxvY2tzaXplICVkXG4iCittc2dzdHIgIuaXpeW/l+iuvuWkh+eahOWdl+Wkp+Wwj++8iCVk77yJ5LiN6IO95L2O5LqO5pyA5bCP55qE5Z2X5aSn5bCPICVkXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg1MgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2luZyBqb3VybmFsIGRldmljZSdzIGJsb2Nrc2l6ZTogJWRcbiIKK21zZ3N0ciAi5qC55o2u5pel5b+X6K6+5aSH56Gu5a6a5Z2X5aSn5bCP77yaJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxODYzCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgYmxvY2tzICclcycgb24gZGV2aWNlICclcyciCittc2dzdHIgIuaXoOaViOeahOWdl+aVsOKAnCVz4oCd5LqO6K6+5aSH4oCcJXPigJ0iCisKKyM6IG1pc2MvbWtlMmZzLmM6MTg4NworbXNnaWQgImZpbGVzeXN0ZW0iCittc2dzdHIgIuaWh+S7tuezu+e7nyIKKworIzogbWlzYy9ta2UyZnMuYzoxOTAwIHJlc2l6ZS9tYWluLmM6NDkxCittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiCittc2dzdHIgIuWwneivleehruWumuaWh+S7tuezu+e7n+Wkp+Wwj+aXtiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTA2Cittc2dpZCAiIgorIkNvdWxkbid0IGRldGVybWluZSBkZXZpY2Ugc2l6ZTsgeW91IG11c3Qgc3BlY2lmeVxuIgorInRoZSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtXG4iCittc2dzdHIgIuaXoOazleehruWumuiuvuWkh+Wkp+Wwj++8m+S9oOW/hemhu+aJi+WKqOaMh+WumuWkp+Wwj1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MTMKK21zZ2lkICIiCisiRGV2aWNlIHNpemUgcmVwb3J0ZWQgdG8gYmUgemVyby4gIEludmFsaWQgcGFydGl0aW9uIHNwZWNpZmllZCwgb3JcbiIKKyJcdHBhcnRpdGlvbiB0YWJsZSB3YXNuJ3QgcmVyZWFkIGFmdGVyIHJ1bm5pbmcgZmRpc2ssIGR1ZSB0b1xuIgorIlx0YSBtb2RpZmllZCBwYXJ0aXRpb24gYmVpbmcgYnVzeSBhbmQgaW4gdXNlLiAgWW91IG1heSBuZWVkIHRvIHJlYm9vdFxuIgorIlx0dG8gcmUtcmVhZCB5b3VyIHBhcnRpdGlvbiB0YWJsZS5cbiIKK21zZ3N0ciAiIgorIuiuvuWkh+Wkp+Wwj+S4uumbtuOAguWPr+iDveaYr+aMh+WumuS6huaXoOaViOeahOiuvuWkh++8jOaIluaYr+WIhuWMuuihqOWcqFxuIgorIlx05omn6KGMZmRpc2vlkI7mnKrooqvph43mlrDliqDovb3vvIjliIbljLrmraPooqvljaDnlKjvvInlr7zoh7TnmoTjgIJcbiIKKyJcdOS9oOWPr+iDvemcgOimgemHjeWQr+WQjumHjeaWsOivu+WPluWIhuWMuuihqOOAglxuIgorCisjOiBtaXNjL21rZTJmcy5jOjE5MzAKK21zZ2lkICJGaWxlc3lzdGVtIGxhcmdlciB0aGFuIGFwcGFyZW50IGRldmljZSBzaXplLiIKK21zZ3N0ciAi5paH5Lu257O757uf5aSn5bCP6LaF6L+H6K6+5aSH55qE5a6e6ZmF5aSn5bCP44CCIgorCisjOiBtaXNjL21rZTJmcy5jOjE5NTAKK21zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZnMgdHlwZXMgbGlzdFxuIgorbXNnc3RyICLop6PmnpDmlofku7bns7vnu5/nsbvlnovliJfooajlpLHotKVcbiIKKworIzogbWlzYy9ta2UyZnMuYzoxOTk4Cittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgZmlsZXR5cGUgZmVhdHVyZS5cbiIKK21zZ3N0ciAiSFVSRCDkuI3mlK/mjIHmlofku7bnsbvlnovjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDAzCittc2dpZCAiVGhlIEhVUkQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgaHVnZV9maWxlIGZlYXR1cmUuXG4iCittc2dzdHIgIkhVUkQg5LiN5pSv5oyB5aSn5paH5Lu254m55oCn44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjAwOAorbXNnaWQgIlRoZSBIVVJEIGRvZXMgbm90IHN1cHBvcnQgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAiSFVSRCDkuI3mlK/mjIHlhYPmlbDmja7moKHpqozlgLznibnmgKfjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDE4Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSIKK21zZ3N0ciAi5bCd6K+V56Gu5a6a56Gs5Lu25omH5Yy65aSn5bCP5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjIwMjQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gZGV0ZXJtaW5lIHBoeXNpY2FsIHNlY3RvciBzaXplIgorbXNnc3RyICLlsJ3or5Xnoa7lrprniannkIbmiYfljLrlpKflsI/ml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjA1NgorbXNnaWQgIndoaWxlIHNldHRpbmcgYmxvY2tzaXplOyB0b28gc21hbGwgZm9yIGRldmljZVxuIgorbXNnc3RyICLorr7nva7lnZflpKflsI/ml7bvvJvlr7nkuo7orr7lpIfmnaXor7TlpKrlsI9cbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDYxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBzcGVjaWZpZWQgYmxvY2tzaXplICVkIGlzIGxlc3MgdGhhbiBkZXZpY2UgcGh5c2ljYWwgc2VjdG9yc2l6ZSAlZFxuIgorbXNnc3RyICLorablkYrvvJrmjIflrprnmoTlnZflpKflsI8gJWQg5bCP5LqO6K6+5aSH54mp55CG5omH5Yy65aSn5bCPJWRcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMDg1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyIlczogU2l6ZSBvZiBkZXZpY2UgKDB4JWxseCBibG9ja3MpICVzIHRvbyBiaWcgdG8gYmUgZXhwcmVzc2VkXG4iCisiXHRpbiAzMiBiaXRzIHVzaW5nIGEgYmxvY2tzaXplIG9mICVkLlxuIgorbXNnc3RyICIiCisiJTEkc++8muiuvuWkhyAlMyRzIOeahOWwuuWvuO+8iDB4JTIkbGx4IOS4quWdl++8ieWkquWkp++8jOaXoOazleeUqDMy5L2N5pWw6KGo56S6XG4iCisiXHTmlLnkuLrkvb/nlKggJTQkZCDnmoTlnZflpKflsI/jgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTAxCittc2dpZCAiZnNfdHlwZXMgZm9yIG1rZTJmcy5jb25mIHJlc29sdXRpb246ICIKK21zZ3N0ciAibWtlMmZzLmNvbmbkuK3mnInlhbPmlofku7bns7vnu5/nsbvlnovnmoTop6Pph4rvvJogIgorCisjOiBtaXNjL21rZTJmcy5jOjIxMDgKK21zZ2lkICJGaWxlc3lzdGVtIGZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIiIKKyLniYjmnKzkuLow55qE5paH5Lu257O757uf5LiN5pSv5oyB6L+Z5Lqb54m55oCnXG4iCisiXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjExNgorbXNnaWQgIlNwYXJzZSBzdXBlcmJsb2NrcyBub3Qgc3VwcG9ydGVkIHdpdGggcmV2aXNpb24gMCBmaWxlc3lzdGVtc1xuIgorbXNnc3RyICLniYjmnKzkuLow55qE5paH5Lu257O757uf5LiN5pSv5oyB5YiG5pWj5byP6LaF57qn5Z2XXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjEyNgorbXNnaWQgIkpvdXJuYWxzIG5vdCBzdXBwb3J0ZWQgd2l0aCByZXZpc2lvbiAwIGZpbGVzeXN0ZW1zXG4iCittc2dzdHIgIueJiOacrOS4ujDnmoTmlofku7bns7vnu5/kuI3mlK/mjIHml6Xlv5dcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTM5CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgcmVzZXJ2ZWQgYmxvY2tzIHBlcmNlbnQgLSAlbGYiCittc2dzdHIgIuaXoOaViOeahOS/neeVmeWdl+eZvuWIhuavlCAtICVsZiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTU2Cittc2dpZCAiIgorIkV4dGVudHMgTVVTVCBiZSBlbmFibGVkIGZvciBhIDY0LWJpdCBmaWxlc3lzdGVtLiAgUGFzcyAtTyBleHRlbnRzIHRvICIKKyJyZWN0aWZ5LlxuIgorbXNnc3RyICI2NOS9jeezu+e7n+W/hemhu+WQr+eUqGV4dGVudOeJueaAp+OAguivt+S9v+eUqOKAnC1PIGV4dGVudHPigJ3pgInpobnmnaXkv67mraPjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMTc2Cittc2dpZCAiVGhlIGNsdXN0ZXIgc2l6ZSBtYXkgbm90IGJlIHNtYWxsZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZS5cbiIKK21zZ3N0ciAi57CH5aSn5bCP5LiN6IO95bCP5LqO5Z2X5aSn5bCP44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjE4MgorbXNnaWQgInNwZWNpZnlpbmcgYSBjbHVzdGVyIHNpemUgcmVxdWlyZXMgdGhlIGJpZ2FsbG9jIGZlYXR1cmUiCittc2dzdHIgIuaMh+Wumuewh+Wkp+Wwj+mcgOimgeWQr+eUqGJpZ2FsbG9j54m55oCnIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2FybmluZzogVW5hYmxlIHRvIGdldCBkZXZpY2UgZ2VvbWV0cnkgZm9yICVzXG4iCittc2dzdHIgIuitpuWRiu+8muaXoOazleiOt+WPliAlcyDnmoTorr7lpIfluIPlsYBcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMjA1CisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGFsaWdubWVudCBpcyBvZmZzZXQgYnkgJWx1IGJ5dGVzLlxuIgorbXNnc3RyICIlcyDmnKrlr7npvZDvvIzlgY/np7vkuoYgJWx1IOS4quWtl+iKguOAglxuIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoaXMgbWF5IHJlc3VsdCBpbiB2ZXJ5IHBvb3IgcGVyZm9ybWFuY2UsIChyZSktcGFydGl0aW9uaW5nIHN1Z2dlc3RlZC5cbiIKK21zZ3N0ciAi6L+Z5Y+v6IO95a+86Ie05oCn6IO95LiL6ZmN77yM5bu66K6u6YeN5paw6L+b6KGM5YiG5Yy644CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjIyOAorIywgYy1mb3JtYXQKK21zZ2lkICIlZC1ieXRlIGJsb2NrcyB0b28gYmlnIGZvciBzeXN0ZW0gKG1heCAlZCkiCittc2dzdHIgIiVk5a2X6IqC55qE5Z2X5a+55LqO57O757uf5p2l6K+05aSq5aSn77yI5pyA5aSn5Li6ICVk77yJIgorCisjOiBtaXNjL21rZTJmcy5jOjIyMzIKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIldhcm5pbmc6ICVkLWJ5dGUgYmxvY2tzIHRvbyBiaWcgZm9yIHN5c3RlbSAobWF4ICVkKSwgZm9yY2VkIHRvIGNvbnRpbnVlXG4iCittc2dzdHIgIuitpuWRiu+8miVk5a2X6IqC55qE5Z2X5a+55LqO57O757uf5p2l6K+05aSq5aSn77yI5pyA5aSn5Li6ICVk77yJ77yM5L2G5LuN54S25by65Yi26L+b6KGM5pON5L2cXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI0MAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiU3VnZ2VzdGlvbjogVXNlIExpbnV4IGtlcm5lbCA+PSAzLjE4IGZvciBpbXByb3ZlZCBzdGFiaWxpdHkgb2YgdGhlIG1ldGFkYXRhICIKKyJhbmQgam91cm5hbCBjaGVja3N1bSBmZWF0dXJlcy5cbiIKK21zZ3N0ciAiIgorIuW7uuiuru+8muS9v+eUqCAzLjE4IOS7peS4iueahCBMaW51eCDlhoXmoLjku6Xmj5Dpq5jlhYPmlbDmja7nqLPlrprmgKfvvIzku6Xlj4rkvb/nlKjml6Xlv5fmoKHpqozlgLznibkiCisi5oCn44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjI5NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogb2Zmc2V0IHNwZWNpZmllZCB3aXRob3V0IGFuIGV4cGxpY2l0IGZpbGUgc3lzdGVtIHNpemUuXG4iCisiQ3JlYXRpbmcgYSBmaWxlIHN5c3RlbSB3aXRoICVsbHUgYmxvY2tzIGJ1dCB0aGlzIG1pZ2h0XG4iCisibm90IGJlIHdoYXQgeW91IHdhbnQuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLorablkYrvvJrmjIflrprkuoblgY/np7vph4/vvIzkvYbmsqHmnInmjIflrprmlofku7bns7vnu5/lpKflsI/jgIJcbiIKKyLlsIbliJvlu7rlkKvmnIkgJWxsdSDkuKrlnZfnmoTmlofku7bns7vnu5/vvIzov5nlj6/og73kuI7mgqjnmoTpooTmnJ/kuI3mnI3jgIJcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzEyCittc2dpZCAiQ2FuJ3Qgc3VwcG9ydCBiaWdhbGxvYyBmZWF0dXJlIHdpdGhvdXQgZXh0ZW50cyBmZWF0dXJlIgorbXNnc3RyICLml6Dms5XlnKjnvLrkuY9leHRlbnTnibnmgKfnmoTmg4XlhrXkuIvmlK/mjIFiaWdhbGxvY+eJueaApyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzE5Cittc2dpZCAiIgorIlRoZSByZXNpemVfaW5vZGUgYW5kIG1ldGFfYmcgZmVhdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlLlxuIgorIlRoZXkgY2FuIG5vdCBiZSBib3RoIGVuYWJsZWQgc2ltdWx0YW5lb3VzbHkuXG4iCittc2dzdHIgIiIKKyJyZXNpemVfaW5vZGUg5ZKMIG1ldGFfYmcg54m55oCn5LiN5YW85a6544CCXG4iCisi5peg5rOV5ZCM5pe25ZCv55So5a6D5Lus44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MjMyNworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiB0aGUgYmlnYWxsb2MgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi6K2m5ZGK77yaYmlnYWxsb2PnibnmgKfku43nhLblnKjlvIDlj5HkuK1cbiIKKyLmm7TlpJror6bmg4Xor7flj4Lop4EgaHR0cHM6Ly9leHQ0Lndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvQmlnYWxsb2NcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyMzM5Cittc2dpZCAicmVzZXJ2ZWQgb25saW5lIHJlc2l6ZSBibG9ja3Mgbm90IHN1cHBvcnRlZCBvbiBub24tc3BhcnNlIGZpbGVzeXN0ZW0iCittc2dzdHIgIumdnuWIhuaVo+W8j+aWh+S7tuezu+e7n+S4jeaUr+aMgeS4uuWcqOe6v+iwg+aVtOWkp+Wwj+iuvue9ruS/neeVmeWdlyIKKworIzogbWlzYy9ta2UyZnMuYzoyMzQ4Cittc2dpZCAiYmxvY2tzIHBlciBncm91cCBjb3VudCBvdXQgb2YgcmFuZ2UiCittc2dzdHIgIuavj+e7hOWdl+aVsOi2hei/h+WFgeiuuOiMg+WbtCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzcwCittc2dpZCAiRmxleF9iZyBmZWF0dXJlIG5vdCBlbmFibGVkLCBzbyBmbGV4X2JnIHNpemUgbWF5IG5vdCBiZSBzcGVjaWZpZWQiCittc2dzdHIgIuW8ueaAp+e7hOeJueaAp+acquWQr+eUqO+8jOaJgOS7peaXoOazleaMh+WumuW8ueaAp+e7hOWwuuWvuCIKKworIzogbWlzYy9ta2UyZnMuYzoyMzgyCisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaW5vZGUgc2l6ZSAlZCAobWluICVkL21heCAlZCkiCittc2dzdHIgIuaXoOaViOeahGlub2Rl5aSn5bCPICVk77yI5pyA5bCPICVkIC/mnIDlpKcgJWTvvIkiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjM5NworIywgYy1mb3JtYXQKK21zZ2lkICIlZCBieXRlIGlub2RlcyBhcmUgdG9vIHNtYWxsIGZvciBpbmxpbmUgZGF0YTsgc3BlY2lmeSBsYXJnZXIgc2l6ZSIKK21zZ3N0ciAiJWQg5a2X6IqC55qEIGlub2RlIOWvueS6juWGheiBlOaVsOaNruadpeivtOWkquWwj++8m+ivt+aMh+WumuS4gOS4quabtOWkp+eahOWAvCIKKworIzogbWlzYy9ta2UyZnMuYzoyNDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVkIGJ5dGUgaW5vZGVzIGFyZSB0b28gc21hbGwgZm9yIHByb2plY3QgcXVvdGE7IHNwZWNpZnkgbGFyZ2VyIHNpemUiCittc2dzdHIgIiVkIOWtl+iKgueahCBpbm9kZSDlr7nkuo7pobnnm67phY3pop3mnaXor7TlpKrlsI/vvJvor7fmjIflrprkuIDkuKrmm7TlpKfnmoTlgLwiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjQyNQorIywgYy1mb3JtYXQKK21zZ2lkICJ0b28gbWFueSBpbm9kZXMgKCVsbHUpLCByYWlzZSBpbm9kZSByYXRpbz8iCittc2dzdHIgImlub2Rl5aSq5aSa77yIJWxsde+8ie+8jOaYr+WQpuaPkOmrmGlub2Rl5q+U77yfIgorCisjOiBtaXNjL21rZTJmcy5jOjI0MzIKKyMsIGMtZm9ybWF0Cittc2dpZCAidG9vIG1hbnkgaW5vZGVzICglbGx1KSwgc3BlY2lmeSA8IDJeMzIgaW5vZGVzIgorbXNnc3RyICJpbm9kZeaVsOmHj+WkquWkmu+8iCVsbHXvvInvvIzor7fmjIflrprlsI/kuo4gMl4zMiDnmoRpbm9kZeaVsCIKKworIzogbWlzYy9ta2UyZnMuYzoyNDQ2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJpbm9kZV9zaXplICgldSkgKiBpbm9kZXNfY291bnQgKCV1KSB0b28gYmlnIGZvciBhXG4iCisiXHRmaWxlc3lzdGVtIHdpdGggJWxsdSBibG9ja3MsIHNwZWNpZnkgaGlnaGVyIGlub2RlX3JhdGlvICgtaSlcbiIKKyJcdG9yIGxvd2VyIGlub2RlIGNvdW50ICgtTikuXG4iCittc2dzdHIgIiIKKyJpbm9kZeWkp+Wwj++8iCV177yJw5dpbm9kZeaVsO+8iCV177yJ5a+55LqO5ZCr5pyJICVsbHUg5Liq5Z2XXG4iCisiXHTnmoTns7vnu5/mnaXor7TlpKrlpKfvvIzor7fmjIflrprmm7Tpq5jnmoRpbm9kZeavlO+8iOS9v+eUqCAtaSDpgInpobnvvIlcbiIKKyJcdOaIluabtOWwkeeahGlub2Rl5pWw77yILU7vvInjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyNjMzCittc2dpZCAiRGlzY2FyZGluZyBkZXZpY2UgYmxvY2tzOiAiCittc2dzdHIgIuS4ouW8g+iuvuWkh+Wdl++8miAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjY0OQorbXNnaWQgImZhaWxlZCAtICIKK21zZ3N0ciAi5bey5aSx6LSlIC0gIgorCisjOiBtaXNjL21rZTJmcy5jOjI3MDgKK21zZ2lkICJ3aGlsZSBpbml0aWFsaXppbmcgcXVvdGEgY29udGV4dCIKK21zZ3N0ciAi5Yid5aeL5YyW6YWN6aKd5LiK5LiL5paH5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjI3MTUKK21zZ2lkICJ3aGlsZSB3cml0aW5nIHF1b3RhIGlub2RlcyIKK21zZ3N0ciAi5YaZ5YWl6YWN6aKdIGlub2RlIOaXtiIKKworIzogbWlzYy9ta2UyZnMuYzoyNzQwCisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBlcnJvciBiZWhhdmlvciBpbiBwcm9maWxlIC0gJXMiCittc2dzdHIgIumFjee9ruS4reeahOWHuumUmeihjOS4uuacieivryAtICVzIgorCisjOiBtaXNjL21rZTJmcy5jOjI4MTQKK21zZ2lkICJ3aGlsZSBzZXR0aW5nIHVwIHN1cGVyYmxvY2siCittc2dzdHIgIuiuvue9rnN1cGVyYmxvY2vml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MjgzMAorbXNnaWQgIiIKKyJFeHRlbnRzIGFyZSBub3QgZW5hYmxlZC4gIFRoZSBmaWxlIGV4dGVudCB0cmVlIGNhbiBiZSBjaGVja3N1bW1lZCwgd2hlcmVhcyAiCisiYmxvY2sgbWFwcyBjYW5ub3QuICBOb3QgZW5hYmxpbmcgZXh0ZW50cyByZWR1Y2VzIHRoZSBjb3ZlcmFnZSBvZiBtZXRhZGF0YSAiCisiY2hlY2tzdW1taW5nLiAgUGFzcyAtTyBleHRlbnRzIHRvIHJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLmnKrlkK/nlKggZXh0ZW50IOeJueaAp++8jOaJgOS7peS7heWvueaWh+S7tiBleHRlbnQg5qCR6L+b6KGM5qCh6aqM77yM6ICM5LiN5Lya5a+55Z2X5L2N5Zu+6L+b6KGM5qCh6aqM44CCIgorIuS4jeWQr+eUqCBleHRlbnQg5bCG6ZmN5L2O5YWD5pWw5o2u5qCh6aqM5YC855qE6KaG55uW6IyD5Zu044CC5Y+v5Lul5L2/55So5Y+C5pWw4oCcLU8gZXh0ZW50c+KAneadpei/m+ihjOe6oCIKKyLmraPjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODM3Cittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFBhc3MgLU8gNjRiaXQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIuacquWQr+eUqCA2NCDkvY3mlofku7bns7vnu5/mlK/mjIHvvIzlsIbml6Dms5Xkvb/nlKjmm7TlpKfnmoTlrZfmrrXmnaXov5vooYzmm7TlrozmlbTnmoTmoKHpqozjgILlj6/ku6Xkvb/nlKjlj4IiCisi5pWw4oCcLU8gNjRiaXTigJ3mnaXov5vooYznuqDmraPjgIJcbiIKKyJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODQ1Cittc2dpZCAiVGhlIG1ldGFkYXRhX2NzdW1fc2VlZCBmZWF0dXJlIHJlcXVyZXMgdGhlIG1ldGFkYXRhX2NzdW0gZmVhdHVyZS5cbiIKK21zZ3N0ciAi5ZCv55SoIG1ldGFkYXRhX2NzdW1fc2VlZCDnibnmgKfpnIDopoHlkIzml7blkK/nlKggbWV0YWRhdGFfY3N1bSDnibnmgKfjgIJcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyODY5Cittc2dpZCAiRGlzY2FyZCBzdWNjZWVkZWQgYW5kIHdpbGwgcmV0dXJuIDBzIC0gc2tpcHBpbmcgaW5vZGUgdGFibGUgd2lwZVxuIgorbXNnc3RyICLoiI3lvIPmiJDlip/vvIzlsIbkvJrov5Tlm54w5YC8IC0g6Lez6L+H5pOm6ZmkaW5vZGXooahcbiIKKworIzogbWlzYy9ta2UyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgInVua25vd24gb3MgLSAlcyIKK21zZ3N0ciAi5pyq55+l5pON5L2c57O757ufIC0gJXMiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAxOAorbXNnaWQgIkFsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAiCittc2dzdHIgIuato+WcqOWIhumFjee7hOihqO+8miAiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzAyNgorbXNnaWQgIndoaWxlIHRyeWluZyB0byBhbGxvY2F0ZSBmaWxlc3lzdGVtIHRhYmxlcyIKK21zZ3N0ciAi5bCd6K+V5YiG6YWN5paH5Lu257O757uf6KGo5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjMwMzUKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSBjb252ZXJ0aW5nIHN1YmNsdXN0ZXIgYml0bWFwIgorbXNnc3RyICIiCisiXG4iCisiXHTovazmjaLlrZDnsIfkvY3lm77ml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA0MQorIywgYy1mb3JtYXQKK21zZ2lkICIlcyBtYXkgYmUgZnVydGhlciBjb3JydXB0ZWQgYnkgc3VwZXJibG9jayByZXdyaXRlXG4iCittc2dzdHIgIiVzIOWPr+iDveWboOi2hee6p+Wdl+iiq+aUueWGmeiAjOaNn1xuIgorCisjOiBtaXNjL21rZTJmcy5jOjMwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgemVyb2luZyBibG9jayAlbGx1IGF0IGVuZCBvZiBmaWxlc3lzdGVtIgorbXNnc3RyICLlr7nmlofku7bns7vnu5/mnKvlsL7nmoTlnZcgJWxsdSDloavpm7bml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzA5NQorbXNnaWQgIndoaWxlIHJlc2VydmluZyBibG9ja3MgZm9yIG9ubGluZSByZXNpemUiCittc2dzdHIgIuS4uuWcqOe6v+aUueWPmOWkp+Wwj+S/neeVmeWdl+aXtiIKKworIzogbWlzYy9ta2UyZnMuYzozMTA3IG1pc2MvdHVuZTJmcy5jOjE0MTUKK21zZ2lkICJqb3VybmFsIgorbXNnc3RyICLml6Xlv5ciCisKKyM6IG1pc2MvbWtlMmZzLmM6MzExOQorIywgYy1mb3JtYXQKK21zZ2lkICJBZGRpbmcgam91cm5hbCB0byBkZXZpY2UgJXM6ICIKK21zZ3N0ciAi5bCG5pel5b+X5re75Yqg5Yiw6K6+5aSHICVz77yaICIKKworIzogbWlzYy9ta2UyZnMuYzozMTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJcdHdoaWxlIHRyeWluZyB0byBhZGQgam91cm5hbCB0byBkZXZpY2UgJXMiCittc2dzdHIgIiIKKyJcbiIKKyLlsJ3or5XlsIbml6Xlv5fmt7vliqDliLDorr7lpIcgJXPml7YiCisKKyM6IG1pc2MvbWtlMmZzLmM6MzEzMSBtaXNjL21rZTJmcy5jOjMxNjAgbWlzYy9ta2UyZnMuYzozMjAwCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjUxMCBtaXNjL3R1bmUyZnMuYzoxNDQ0IG1pc2MvdHVuZTJmcy5jOjE0NjMKK21zZ2lkICJkb25lXG4iCittc2dzdHIgIuWujOaIkFxuIgorCisjOiBtaXNjL21rZTJmcy5jOjMxMzcKK21zZ2lkICJTa2lwcGluZyBqb3VybmFsIGNyZWF0aW9uIGluIHN1cGVyLW9ubHkgbW9kZVxuIgorbXNnc3RyICLot7Pov4fliJvlu7rml6Xlv5fnmoTmraXpqqTvvIjllK/otoXnuqflnZfmqKHlvI/vvIlcbiIKKworIzogbWlzYy9ta2UyZnMuYzozMTQ3CisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nIGpvdXJuYWwgKCV1IGJsb2Nrcyk6ICIKK21zZ3N0ciAi5Yib5bu65pel5b+X77yIJXUg5Liq5Z2X77yJIgorCisjOiBtaXNjL21rZTJmcy5jOjMxNTYKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwiCittc2dzdHIgIiIKKyJcbiIKKyJcdOWwneivleWIm+W7uuaXpeW/l+aXtiIKKworIzogbWlzYy9ta2UyZnMuYzozMTY4IG1pc2MvdHVuZTJmcy5jOjEwNzIKK21zZ2lkICIiCisiXG4iCisiRXJyb3Igd2hpbGUgZW5hYmxpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBmZWF0dXJlLiIKK21zZ3N0ciAiIgorIlxuIgorIuWQr+eUqE1NUOeJueaAp+Wksei0peOAgiIKKworIzogbWlzYy9ta2UyZnMuYzozMTczCisjLCBjLWZvcm1hdAorbXNnaWQgIk11bHRpcGxlIG1vdW50IHByb3RlY3Rpb24gaXMgZW5hYmxlZCB3aXRoIHVwZGF0ZSBpbnRlcnZhbCAlZCBzZWNvbmRzLlxuIgorbXNnc3RyICJNTVDvvIjlpJrph43mjILovb3kv53miqTvvInlt7LooqvlkK/nlKjvvIzmm7TmlrDpl7TpmpTkuLogJWQg56eS44CCXG4iCisKKyM6IG1pc2MvbWtlMmZzLmM6MzE5MQorbXNnaWQgIkNvcHlpbmcgZmlsZXMgaW50byB0aGUgZGV2aWNlOiAiCittc2dzdHIgIuWwhuaWh+S7tuWkjeWItuWIsOiuvuWkh++8miIKKworIzogbWlzYy9ta2UyZnMuYzozMTk3Cittc2dpZCAid2hpbGUgcG9wdWxhdGluZyBmaWxlIHN5c3RlbSIKK21zZ3N0ciAi5LqO5aGr5YWF5paH5Lu257O757uf5pe2IgorCisjOiBtaXNjL21rZTJmcy5jOjMyMDQKK21zZ2lkICJXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICIKK21zZ3N0ciAi5YaZ5YWl6LaF57qn5Z2X5ZKM5paH5Lu257O757uf6LSm5oi357uf6K6h5L+h5oGv77yaICIKKworIzogbWlzYy9ta2UyZnMuYzozMjExCittc2dpZCAiIgorIlxuIgorIldhcm5pbmcsIGhhZCB0cm91YmxlIHdyaXRpbmcgb3V0IHN1cGVyYmxvY2tzLiIKK21zZ3N0ciAiIgorIlxuIgorIuitpuWRiu+8muWGmeWFpei2hee6p+Wdl+aXtumBh+WIsOmXrumimCIKKworIzogbWlzYy9ta2UyZnMuYzozMjEzCittc2dpZCAiIgorImRvbmVcbiIKKyJcbiIKK21zZ3N0ciAiIgorIuW3suWujOaIkFxuIgorIlxuIgorCisjOiBtaXNjL21rX2h1Z2VmaWxlcy5jOjQyNAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGFydGl0aW9uIG9mZnNldCBvZiAlbGx1ICgldWspIGJsb2NrcyBub3QgY29tcGF0aWJsZSB3aXRoIGNsdXN0ZXIgc2l6ZSAldS5cbiIKK21zZ3N0ciAi5YiG5Yy65YGP56e76YePICVsbHXvvIgldWvvvInlnZfkuI7nsIflpKflsI8gJXUg5LiN55u45a6544CCXG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkxCittc2dpZCAiSHVnZSBmaWxlcyB3aWxsIGJlIHplcm8nZWRcbiIKK21zZ3N0ciAi5bCG5a+55aSn5paH5Lu25aGr6Zu2XG4iCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NDkyCisjLCBjLWZvcm1hdAorbXNnaWQgIkNyZWF0aW5nICVsdSBodWdlIGZpbGUocykgIgorbXNnc3RyICLliJvlu7ogJWx1IOS4quWkp+aWh+S7tiIKKworIzogbWlzYy9ta19odWdlZmlsZXMuYzo0OTQKKyMsIGMtZm9ybWF0Cittc2dpZCAid2l0aCAlbGx1IGJsb2NrcyBlYWNoIgorbXNnc3RyICLmr4/kuKrkvb/nlKggJWxsdSDkuKrlnZciCisKKyM6IG1pc2MvbWtfaHVnZWZpbGVzLmM6NTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIGNyZWF0aW5nIGh1Z2UgZmlsZSAlbHUiCittc2dzdHIgIuWIm+W7uuWkp+aWh+S7tiAlbHUg5pe2IgorCisjOiBtaXNjL21rbG9zdCtmb3VuZC5jOjUwCittc2dpZCAiVXNhZ2U6IG1rbG9zdCtmb3VuZFxuIgorbXNnc3RyICLnlKjms5XvvJpta2xvc3QrZm91bmRcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjQxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogICVzIGRldmljZS4uLlxuIgorIlxuIgorIlByaW50cyBvdXQgdGhlIHBhcnRpdGlvbiBpbmZvcm1hdGlvbiBmb3IgZWFjaCBnaXZlbiBkZXZpY2UuXG4iCisiRm9yIGV4YW1wbGU6ICVzIC9kZXYvaGRhXG4iCisiXG4iCittc2dzdHIgIiIKKyLnlKjms5XvvJolcyDorr7lpIcuLi5cbiIKKyJcbiIKKyLovpPlh7rmr4/kuKrnu5nlrprorr7lpIfnmoTliIbljLrkv6Hmga8uXG4iCisi5L6L5aaC77yaJXMgL2Rldi9oZGFcbiIKKyJcbiIKKworIzogbWlzYy9wYXJ0aW5mby5jOjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBvcGVuICVzOiAlcyIKK21zZ3N0ciAi5peg5rOV5omT5byAICVz77yaJXMiCisKKyM6IG1pc2MvcGFydGluZm8uYzo1NworIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgZ2V0IGdlb21ldHJ5IG9mICVzOiAlcyIKK21zZ3N0ciAi5peg5rOV6I635Y+WICVzIOeahOW4g+WxgO+8miVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2Fubm90IGdldCBzaXplIG9mICVzOiAlcyIKK21zZ3N0ciAi5peg5rOV6I635b6XICVzIOeahOWkp+Wwj++8miVzIgorCisjOiBtaXNjL3BhcnRpbmZvLmM6NzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXM6IGg9JTNkIHM9JTNkIGM9JTRkICAgc3RhcnQ9JThkIHNpemU9JThsdSBlbmQ9JThkXG4iCittc2dzdHIgIiVz77ya56OB5aS0PSUzZCDmiYfljLo9JTNkIOafsemdoj0lNGQgICDotbflp4s9JThkIOWkp+Wwjz0lOGx1IOe7iOatoj0lOGRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE5CisjLCBmdXp6eQorbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIC1mIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorbXNnc3RyICLor7flnKjov5nkuKrmlofku7bns7vnu5/kuIrov5DooYwgZTJmc2NrIC1E44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEyMQorIywgZnV6enkKK21zZ2lkICJQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIuivt+WcqOi/meS4quaWh+S7tuezu+e7n+S4iui/kOihjCBlMmZzY2sgLUTjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJVc2FnZTogJXMgWy1jIG1heF9tb3VudHNfY291bnRdIFstZSBlcnJvcnNfYmVoYXZpb3JdIFstZl0gWy1nIGdyb3VwXVxuIgorIlx0Wy1pIGludGVydmFsW2R8bXx3XV0gWy1qXSBbLUogam91cm5hbF9vcHRpb25zXSBbLWxdXG4iCisiXHRbLW0gcmVzZXJ2ZWRfYmxvY2tzX3BlcmNlbnRdIFstbyBbXl1tb3VudF9vcHRpb25zWywuLi5dXVxuIgorIlx0Wy1wIG1tcF91cGRhdGVfaW50ZXJ2YWxdIFstciByZXNlcnZlZF9ibG9ja3NfY291bnRdIFstdSB1c2VyXVxuIgorIlx0Wy1DIG1vdW50X2NvdW50XSBbLUwgdm9sdW1lX2xhYmVsXSBbLU0gbGFzdF9tb3VudGVkX2Rpcl1cbiIKKyJcdFstTyBbXl1mZWF0dXJlWywuLi5dXSBbLVEgcXVvdGFfb3B0aW9uc11cbiIKKyJcdFstRSBleHRlbmRlZC1vcHRpb25bLC4uLl1dIFstVCBsYXN0X2NoZWNrX3RpbWVdIFstVSBVVUlEXVxuIgorIlx0Wy1JIG5ld19pbm9kZV9zaXplXSBbLXogdW5kb19maWxlXSBkZXZpY2VcbiIKK21zZ3N0ciAiIgorIueUqOazle+8miVzIFstYyDmnIDlpKfmjILovb3mrKHmlbBdIFstZSDlh7rplJnooYzkuLpdIFstZl0gWy1nIOe7hF1cbiIKKyJcdFstaSDpl7TpmpRbZHxtfHddXSBbLWpdIFstSiDml6Xlv5fpgInpobldIFstbF1cbiIKKyJcdFstbSDkv53nlZnlnZfmiYDljaDnmb7liIbmr5RdIFstbyBbXl3mjILovb3pgInpoblbLC4uLl1dXG4iCisiXHRbLXAgTU1Q5pu05paw6Ze06ZqUXSBbLXIg5L+d55WZ5Z2X5pWwXSBbLXUg55So5oi3XVxuIgorIlx0Wy1DIOaMgui9veasoeaVsF0gWy1MIOWNt+agh11bLU0g5LiK5LiA5qyh5oyC6L2954K5XVxuIgorIlx0Wy1PIFteXeeJueaAp1ssLi4uXV0gWy1RIOmFjeminemAiemhuV1cbiIKKyJcdFstRSDmianlsZXpgInpoblbLC4uLl1dIFstVCDkuIrkuIDmrKHmo4Dmn6Xml7bpl7RdIFstVSBVVUlEXVxuIgorIlx0WyAtSSDmlrDnmoRpbm9kZeWkp+Wwj10gWy16IOaSpOmUgOaWh+S7tl0g6K6+5aSHXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIxOAorbXNnaWQgIkpvdXJuYWwgc3VwZXJibG9jayBub3QgZm91bmQhXG4iCittc2dzdHIgIuaXpeW/l+i2hee6p+Wdl+acquaJvuWIsO+8gVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNzYKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiBleHRlcm5hbCBqb3VybmFsIgorbXNnc3RyICLlsJ3or5XmiZPlvIDlpJbpg6jml6Xlv5fml7YiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MiBtaXNjL3R1bmUyZnMuYzoyNzAxCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzIGlzIG5vdCBhIGpvdXJuYWwgZGV2aWNlLlxuIgorbXNnc3RyICIlcyDkuI3mmK/ml6Xlv5forr7lpIfjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkyIG1pc2MvdHVuZTJmcy5jOjI3MTIKK21zZ2lkICJGaWxlc3lzdGVtJ3MgVVVJRCBub3QgZm91bmQgb24gam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIuaXpeW/l+iuvuWkh+S4reacquaJvuWIsOaWh+S7tuezu+e7n+eahFVVSUTjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE2Cittc2dpZCAiIgorIkNhbm5vdCBsb2NhdGUgam91cm5hbCBkZXZpY2UuIEl0IHdhcyBOT1QgcmVtb3ZlZFxuIgorIlVzZSAtZiBvcHRpb24gdG8gcmVtb3ZlIG1pc3Npbmcgam91cm5hbCBkZXZpY2UuXG4iCittc2dzdHIgIiIKKyLml6Dms5XlrprkvY3ml6Xlv5forr7lpIfjgILorr7lpIfmnKrooqvnp7vpmaRcbiIKKyLor7fkvb/nlKggLWYg6YCJ6aG55p2l56e76Zmk5Lii5aSx55qE5pel5b+X6K6+5aSH44CCXG4iCisiXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyNQorbXNnaWQgIkpvdXJuYWwgcmVtb3ZlZFxuIgorbXNnc3RyICLml6Xlv5flt7LliKDpmaRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzY5Cittc2dpZCAid2hpbGUgcmVhZGluZyBiaXRtYXBzIgorbXNnc3RyICLor7vlj5bkvY3lm77ml7YiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjM3NworbXNnaWQgIndoaWxlIGNsZWFyaW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIuivu+WPluWdj+Wdl2lub2Rl5pe2IgorCisjOiBtaXNjL3R1bmUyZnMuYzozODgKK21zZ2lkICJ3aGlsZSB3cml0aW5nIGpvdXJuYWwgaW5vZGUiCittc2dzdHIgIuWGmeWFpeaXpeW/l2lub2Rl5pe2IgorCisjOiBtaXNjL3R1bmUyZnMuYzo0MjMgbWlzYy90dW5lMmZzLmM6NDQ1IG1pc2MvdHVuZTJmcy5jOjQ1OAorbXNnaWQgIihhbmQgcmVib290IGFmdGVyd2FyZHMhKVxuIgorbXNnc3RyICLvvIjlubbkuJTov4flkI7ph43lkK/vvIHvvIlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDc2CisjLCBjLWZvcm1hdAorbXNnaWQgIkFmdGVyIHJ1bm5pbmcgZTJmc2NrLCBwbGVhc2UgcnVuIGByZXNpemUyZnMgJXMgJXMiCittc2dzdHIgIuWcqOi/kOihjCBlMmZzY2sg5ZCO77yM6K+36L+Q6KGM4oCccmVzaXplMmZzICVzICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0NzkKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGxlYXNlIHJ1biBgcmVzaXplMmZzICVzICVzIgorbXNnc3RyICLor7fov5DooYzigJxyZXNpemUyZnMgJXMgJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjQ4MworIywgYy1mb3JtYXQKK21zZ2lkICIgLXogXCIlc1wiIgorbXNnc3RyICIgLXogXCIlc1wiIgorCisjOiBtaXNjL3R1bmUyZnMuYzo0ODUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyB0byBlbmFibGUgNjQtYml0IG1vZGUuXG4iCittc2dzdHIgIuKAneadpeWQr+eUqCA2NCDkvY3mqKHlvI/jgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6NDg3CisjLCBjLWZvcm1hdAorbXNnaWQgIicgdG8gZGlzYWJsZSA2NC1iaXQgbW9kZS5cbiIKK21zZ3N0ciAi4oCd5p2l56aB55SoIDY0IOS9jeaooeW8j+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzo5NzQKK21zZ2lkICIiCisiV0FSTklORzogQ291bGQgbm90IGNvbmZpcm0ga2VybmVsIHN1cHBvcnQgZm9yIG1ldGFkYXRhX2NzdW1fc2VlZC5cbiIKKyIgIFRoaXMgcmVxdWlyZXMgTGludXggPj0gdjQuNC5cbiIKK21zZ3N0ciAiIgorIuitpuWRiu+8muaXoOazleehruWumuWGheaguOaYr+WQpuaUr+aMgSBtZXRhZGF0YV9jc3VtX3NlZWQg54m55oCn44CCXG4iCisiICDor6XnibnmgKfku4XooqsgNC40IOS7peS4iueahCBMaW51eCDlhoXmoLjmlK/mjIHjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAxMAorIywgYy1mb3JtYXQKK21zZ2lkICJDbGVhcmluZyBmaWxlc3lzdGVtIGZlYXR1cmUgJyVzJyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICLnp7vpmaTkuI3ooqvmlK/mjIHnmoTmlofku7bns7vnu5/nibnmgKfigJwlc+KAneOAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDE2CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgZmlsZXN5c3RlbSBmZWF0dXJlICclcycgbm90IHN1cHBvcnRlZC5cbiIKK21zZ3N0ciAi6K6+572u5LiN6KKr5pSv5oyB55qE5paH5Lu257O757uf54m55oCn4oCcJXPigJ3jgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTAyNQorbXNnaWQgIiIKKyJUaGUgaGFzX2pvdXJuYWwgZmVhdHVyZSBtYXkgb25seSBiZSBjbGVhcmVkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXNcbiIKKyJ1bm1vdW50ZWQgb3IgbW91bnRlZCByZWFkLW9ubHkuXG4iCittc2dzdHIgIuWPquacieW9k+aWh+S7tuezu+e7n+iiq+WNuOi9ve+8jOaIluS7peWPquivu+aooeW8j+aMgui9veaXtuaJjeiDveenu+mZpOWFtmhhc19qb3VybmFs54m55oCn44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwMzMKK21zZ2lkICIiCisiVGhlIG5lZWRzX3JlY292ZXJ5IGZsYWcgaXMgc2V0LiAgUGxlYXNlIHJ1biBlMmZzY2sgYmVmb3JlIGNsZWFyaW5nXG4iCisidGhlIGhhc19qb3VybmFsIGZsYWcuXG4iCittc2dzdHIgIuWPkeeOsG5lZWRzX3JlY292ZXJ55qCH5b+X44CC6K+35Zyo56e76ZmkaGFzX2pvdXJuYWznibnmgKfliY3ov5DooYxlMmZzY2vjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTA1MQorbXNnaWQgIiIKKyJTZXR0aW5nIGZpbGVzeXN0ZW0gZmVhdHVyZSAnc3BhcnNlX3N1cGVyJyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisi5ZCv55So5LqGbWV0YV9iZ+eJueaAp+eahOaWh+S7tuezu+e7n+S4jeaUr+aMgeKAnHNwYXJzZV9zdXBlcuKAnVxuIgorIueJueaAp+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDY0Cittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2FuJ3RcbiIKKyJiZSBzZXQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBvclxuIgorInJlYWQtb25seS5cbiIKK21zZ3N0ciAi5paH5Lu257O757uf6KKr5oyC6L295oiW5Li65Y+q6K+75bGe5oCn5pe25peg5rOV6K6+572uTU1Q54m55oCn44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEwODIKKyMsIGMtZm9ybWF0Cittc2dpZCAiTXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiBoYXMgYmVlbiBlbmFibGVkIHdpdGggdXBkYXRlIGludGVydmFsICVkcy5cbiIKK21zZ3N0ciAiTU1Q77yI5aSa6YeN5oyC6L295L+d5oqk77yJ5bey6KKr5ZCv55So77yM5pu05paw6Ze06ZqU5Li6ICVkc+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDkxCittc2dpZCAiIgorIlRoZSBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGZlYXR1cmUgY2Fubm90XG4iCisiYmUgZGlzYWJsZWQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgcmVhZG9ubHkuXG4iCittc2dzdHIgIuaWh+S7tuezu+e7n+S4uuWPquivu+eKtuaAgeaXtuaXoOazleemgeeUqE1NUOeJueaAp+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMDk5Cittc2dpZCAiRXJyb3Igd2hpbGUgcmVhZGluZyBiaXRtYXBzXG4iCittc2dzdHIgIuivu+WPluS9jeWbvuaXtuWPkeeUn+mUmeivr1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTA4CisjLCBjLWZvcm1hdAorbXNnaWQgIk1hZ2ljIG51bWJlciBpbiBNTVAgYmxvY2sgZG9lcyBub3QgbWF0Y2guIGV4cGVjdGVkOiAleCwgYWN0dWFsOiAleFxuIgorbXNnc3RyICJNTVDlnZfnmoTlubvmlbDkuI3ljLnphY3jgILmnJ/mnJvlgLzvvJoleO+8jOWunumZhe+8miV4XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExMTMKK21zZ2lkICJ3aGlsZSByZWFkaW5nIE1NUCBibG9jay4iCittc2dzdHIgIuivu+WPlk1NUOWdl+aXtiIKKworIzogbWlzYy90dW5lMmZzLmM6MTE0NQorbXNnaWQgIiIKKyJDbGVhcmluZyB0aGUgZmxleF9iZyBmbGFnIHdvdWxkIGNhdXNlIHRoZSB0aGUgZmlsZXN5c3RlbSB0byBiZVxuIgorImluY29uc2lzdGVudC5cbiIKK21zZ3N0ciAi5riF6Zmk5by55oCn57uE5qCH5b+X5bCG5Lya5a+86Ie05paH5Lu257O757uf5Ye6546w5YmN5ZCO5LiN5LiA6Ie055qE5oOF5Ya144CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNTYKK21zZ2lkICIiCisiVGhlIGh1Z2VfZmlsZSBmZWF0dXJlIG1heSBvbmx5IGJlIGNsZWFyZWQgd2hlbiB0aGUgZmlsZXN5c3RlbSBpc1xuIgorInVubW91bnRlZCBvciBtb3VudGVkIHJlYWQtb25seS5cbiIKK21zZ3N0ciAi5Y+q5pyJ5b2T5paH5Lu257O757uf6KKr5Y246L2977yM5oiW5Lul5Y+q6K+75qih5byP5oyC6L295pe25omN6IO956e76Zmk5YW2aHVnZV9maWxl54m55oCn44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjcKK21zZ2lkICJFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuIgorbXNnc3RyICLlkK/nlKjmoKHpqozlgLzpnIDopoHoirHotLnkuIDmrrXml7bpl7TjgIIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjExNjkKK21zZ2lkICJDYW5ub3QgZW5hYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIuaXoOazleWcqOW3suaMgui9veeahOaWh+S7tuezu+e7n+S4iuWQr+eUqOWFg+aVsOaNruagoemqjOeJueaAp++8gVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTc1Cittc2dpZCAiIgorIkV4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzICIKKyJibG9jayBtYXBzIGNhbm5vdC4gIE5vdCBlbmFibGluZyBleHRlbnRzIHJlZHVjZXMgdGhlIGNvdmVyYWdlIG9mIG1ldGFkYXRhICIKKyJjaGVja3N1bW1pbmcuICBSZS1ydW4gd2l0aCAtTyBleHRlbnQgdG8gcmVjdGlmeS5cbiIKK21zZ3N0ciAiIgorIuacquWQr+eUqCBleHRlbnQg54m55oCn77yM5omA5Lul5LuF5a+55paH5Lu2IGV4dGVudCDmoJHov5vooYzmoKHpqozvvIzogIzkuI3kvJrlr7nlnZfkvY3lm77ov5vooYzmoKHpqozjgIIiCisi5LiN5ZCv55SoIGV4dGVudCDlsIbpmY3kvY7lhYPmlbDmja7moKHpqozlgLznmoTopobnm5bojIPlm7TjgILlj6/ku6XliqDkuIrlj4LmlbDigJwtTyBleHRlbnRz4oCd6YeN5paw6L+Q6KGMIgorIuadpee6oOato+i/meS4gOmXrumimOOAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMTgyCittc2dpZCAiIgorIjY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSAiCisidGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gIgorInJlY3RpZnkuXG4iCittc2dzdHIgIiIKKyLmnKrlkK/nlKggNjQg5L2N5paH5Lu257O757uf5pSv5oyB77yM5bCG5peg5rOV5L2/55So5pu05aSn55qE5a2X5q615p2l6L+b6KGM5pu05a6M5pW055qE5qCh6aqM44CC5Y+v5Lul6L+QIgorIuihjOKAnHJlc2l6ZTJmcyAtYuKAneadpee6oOato+i/meS4gOmXrumimOOAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjA4Cittc2dpZCAiRGlzYWJsaW5nIGNoZWNrc3VtcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIuemgeeUqOagoemqjOWAvOmcgOimgeiKsei0ueS4gOauteaXtumXtOOAgiIKKworIzogbWlzYy90dW5lMmZzLmM6MTIxMAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBtb3VudGVkIGZpbGVzeXN0ZW0hXG4iCittc2dzdHIgIuaXoOazleWcqOW3suaMgui9veeahOaWh+S7tuezu+e7n+S4iuemgeeUqOWFg+aVsOaNruagoemqjOeJueaAp++8gVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjczCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBlbmFibGUgNjQtYml0IG1vZGUgd2hpbGUgbW91bnRlZCFcbiIKK21zZ3N0ciAi5peg5rOV5Zyo5bey5oyC6L2955qE5paH5Lu257O757uf5LiK5ZCv55SoIDY0IOS9jeaooeW8j++8gVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMjgzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBkaXNhYmxlIDY0LWJpdCBtb2RlIHdoaWxlIG1vdW50ZWQhXG4iCittc2dzdHIgIuaXoOazleWcqOW3suaMgui9veeahOaWh+S7tuezu+e7n+S4iuemgeeUqCA2NCDkvY3mqKHlvI/vvIFcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTMxMworbXNnaWQgIiIKKyJcbiIKKyJXYXJuaW5nOiBlbmFibGVkIHByb2plY3Qgd2l0aG91dCBxdW90YSB0b2dldGhlclxuIgorbXNnc3RyICIiCisiXG4iCisi6K2m5ZGK77ya5ZCv55So6aG555uu55qE5ZCM5pe25rKh5pyJ5ZCM5pe25ZCv55So6YWN6aKdXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjEzMjYKK21zZ2lkICIiCisiXG4iCisiV2FybmluZzogJ15xdW90YScgb3B0aW9uIG92ZXJyaWRlcyAnLVEnYXJndW1lbnRzLlxuIgorbXNnc3RyICIiCisiXG4iCisi6K2m5ZGK77ya4oCcXnF1b3Rh4oCd6YCJ6aG55bCG6KaG55uW4oCcLVHigJ3nmoTlj4LmlbDjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTM0NAorbXNnaWQgIiIKKyJTZXR0aW5nIGZlYXR1cmUgJ21ldGFkYXRhX2NzdW1fc2VlZCcgaXMgb25seSBzdXBwb3J0ZWRcbiIKKyJvbiBmaWxlc3lzdGVtcyB3aXRoIHRoZSBtZXRhZGF0YV9jc3VtIGZlYXR1cmUgZW5hYmxlZC5cbiIKK21zZ3N0ciAiIgorIuWPquacieWcqOWQr+eUqOS6huWFg+aVsOaNruagoemqjOWAvOeJueaAp+eahOaWh+S7tuezu+e7n+aJjeaUr+aMgVxuIgorIuKAnG1ldGFkYXRhX2NzdW1fc2VlZOKAneeJueaAp+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxMzYyCittc2dpZCAiIgorIlVVSUQgaGFzIGNoYW5nZWQgc2luY2UgZW5hYmxpbmcgbWV0YWRhdGFfY3N1bS4gIEZpbGVzeXN0ZW0gbXVzdCBiZSAiCisidW5tb3VudGVkIFxuIgorInRvIHNhZmVseSByZXdyaXRlIGFsbCBtZXRhZGF0YSB0byBtYXRjaCB0aGUgbmV3IFVVSUQuXG4iCittc2dzdHIgIiIKKyLlkK/nlKjlhYPmlbDmja7moKHpqozlgLznibnmgKflkI5VVUlE6KKr5pS55Y+Y44CC5b+F6aG75Y246L295paH5Lu257O757uf5bm25a6J5YWo5pS55YaZ5omA5pyJ5YWD5pWw5o2u77yM5LulIgorIuS+v1xuIgorIuS4juaWsOeahCBVVUlEIOebuOWMuemFjeOAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDA4Cittc2dpZCAiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgYSBqb3VybmFsLlxuIgorbXNnc3RyICLmlofku7bns7vnu5/lt7LmnInml6Xlv5fjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQyOAorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gb3BlbiBqb3VybmFsIG9uICVzXG4iCittc2dzdHIgIiIKKyJcbiIKKyJcdOWwneivleaJk+W8gOS9jeS6jiAlcyDnmoTml6Xlv5fml7ZcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MTQzMgorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyBqb3VybmFsIG9uIGRldmljZSAlczogIgorbXNnc3RyICLlnKjorr7lpIcgJXMg5LiK5Yib5bu65pel5b+X77yaICIKKworIzogbWlzYy90dW5lMmZzLmM6MTQ0MAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBhZGRpbmcgZmlsZXN5c3RlbSB0byBqb3VybmFsIG9uICVzIgorbXNnc3RyICLlsIbmlofku7bns7vnu5/mt7vliqDliLAgJXMg5LiK55qE5pel5b+XIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDQ2Cittc2dpZCAiQ3JlYXRpbmcgam91cm5hbCBpbm9kZTogIgorbXNnc3RyICLliJvlu7rml6Xlv5dpbm9kZe+8miAiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE0NjAKK21zZ2lkICIiCisiXG4iCisiXHR3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwgZmlsZSIKK21zZ3N0ciAiIgorIlxuIgorIlx05bCd6K+V5Yib5bu65pel5b+X5paH5Lu25pe2IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNDk4Cittc2dpZCAid2hpbGUgaW5pdGlhbGl6aW5nIHF1b3RhIGNvbnRleHQgaW4gc3VwcG9ydCBsaWJyYXJ5IgorbXNnc3RyICLliJ3lp4vljJbmlK/mjIHlupPkuK3nmoTlvJXnlKjkuIrkuIvmlofml7YiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE1MTgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdXBkYXRpbmcgcXVvdGEgbGltaXRzICglZCkiCittc2dzdHIgIuabtOaWsOmFjeminemZkOWItu+8iCVk77yJ5pe2IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTI2CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHdyaXRpbmcgcXVvdGEgZmlsZSAoJWQpIgorbXNnc3RyICLlhpnlhaXphY3pop3mlofku7bvvIglZO+8ieaXtiIKKworIzogbWlzYy90dW5lMmZzLmM6MTUzNAorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSByZW1vdmluZyBxdW90YSBmaWxlICglZCkiCittc2dzdHIgIuenu+mZpOmFjemineaWh+S7tu+8iCVk77yJ5pe2IgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNTc1Cittc2dpZCAiIgorIlxuIgorIkJhZCBxdW90YSBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJGb2xsb3dpbmcgdmFsaWQgcXVvdGEgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIChwYXNzIGJ5IHNlcGFyYXRpbmcgd2l0aCAiCisiY29tbWEpOlxuIgorIlx0W15ddXNyW3F1b3RhXVxuIgorIlx0W15dZ3JwW3F1b3RhXVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi5oyH5a6a5LqG6ZSZ6K+v55qE6YWN6aKd6YCJ6aG544CCXG4iCisiXG4iCisi5Y+v5Lul5L2/55So5LiL5YiX6YWN6aKd6YCJ6aG577yI6YCa6L+H6YCX5Y+35YiG5Ymy77yJ77yaXG4iCisiXHRbXl11c3JbcXVvdGFcbiIKKyJcdFteXWdycFtxdW90YVxuIgorIlx0W15dcHJqW3F1b3RhXVxuIgorIlxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNjMzCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IHBhcnNlIGRhdGUvdGltZSBzcGVjaWZpZXI6ICVzIgorbXNnc3RyICLml6Dms5Xop6PmnpDml6XmnJ8v5pe26Ze05o+P6L+w56ym77yaJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE2NTggbWlzYy90dW5lMmZzLmM6MTY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgbW91bnRzIGNvdW50IC0gJXMiCittc2dzdHIgIumUmeivr+aMgui9veiuoeaVsCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzE0CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCBnaWQvZ3JvdXAgbmFtZSAtICVzIgorbXNnc3RyICLplJnor6/nmoRnaWQv57uE5ZCNIC0gJXMiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjE3NDcKKyMsIGMtZm9ybWF0Cittc2dpZCAiYmFkIGludGVydmFsIC0gJXMiCittc2dzdHIgIumUmeivr+eahOmXtOmalCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxNzc2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCByZXNlcnZlZCBibG9jayByYXRpbyAtICVzIgorbXNnc3RyICLplJnor6/nmoTkv53nlZnlnZfmr5QgLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTc5MQorbXNnaWQgIi1vIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItb+WPquiDveiiq+aMh+WumuS4gOasoSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgwMAorbXNnaWQgIi1PIG1heSBvbmx5IGJlIHNwZWNpZmllZCBvbmNlIgorbXNnc3RyICItT+WPquiDveiiq+aMh+WumuS4gOasoSIKKworIzogbWlzYy90dW5lMmZzLmM6MTgxNworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgcmVzZXJ2ZWQgYmxvY2tzIGNvdW50IC0gJXMiCittc2dzdHIgIumUmeivr+eahOS/neeVmeWdl+aVsCAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODQ2CisjLCBjLWZvcm1hdAorbXNnaWQgImJhZCB1aWQvdXNlciBuYW1lIC0gJXMiCittc2dzdHIgIumUmeivr+eahHVpZC/nlKjmiLflkI0gLSAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6MTg2MworIywgYy1mb3JtYXQKK21zZ2lkICJiYWQgaW5vZGUgc2l6ZSAtICVzIgorbXNnc3RyICLml6DmlYjnmoRpbm9kZeWkp+WwjyAtICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxODcwCisjLCBjLWZvcm1hdAorbXNnaWQgIklub2RlIHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3by0gJXMiCittc2dzdHIgIklub2RlIOWkp+Wwj+W/hemhu+aYrzLnmoTmrKHmlrktICVzIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTY3CisjLCBjLWZvcm1hdAorbXNnaWQgIm1tcF91cGRhdGVfaW50ZXJ2YWwgdG9vIGJpZzogJWx1XG4iCittc2dzdHIgIk1NUOabtOaWsOmXtOmalOWkqumVv++8miVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTcyCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgbXVsdGlwbGUgbW91bnQgcHJvdGVjdGlvbiB1cGRhdGUgaW50ZXJ2YWwgdG8gJWx1IHNlY29uZFxuIgorbXNnaWRfcGx1cmFsICIiCisiU2V0dGluZyBtdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIHVwZGF0ZSBpbnRlcnZhbCB0byAlbHUgc2Vjb25kc1xuIgorbXNnc3RyWzBdICLorr7nva5NTVDmm7TmlrDpl7TpmpTkuLogJWx1IOenklxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoxOTk1CisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpZGU6ICVzXG4iCittc2dzdHIgIuaXoOaViOeahFJBSUTluKblrr3vvJolc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkludmFsaWQgUkFJRCBzdHJpcGUtd2lkdGg6ICVzXG4iCittc2dzdHIgIuaXoOaViOeahOW4puWuveWPguaVsO+8miVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBoYXNoIGFsZ29yaXRobTogJXNcbiIKK21zZ3N0ciAi5peg5pWI55qEaGFzaOeul+azle+8miVzXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjIwMzEKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBkZWZhdWx0IGhhc2ggYWxnb3JpdGhtIHRvICVzICglZClcbiIKK21zZ3N0ciAi5bCG6buY6K6kaGFzaOeul+azleiuvue9ruS4uiAlcyDvvIglZO+8iVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyMDUwCittc2dpZCAiIgorIlxuIgorIkJhZCBvcHRpb25zIHNwZWNpZmllZC5cbiIKKyJcbiIKKyJFeHRlbmRlZCBvcHRpb25zIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLCBhbmQgbWF5IHRha2UgYW4gYXJndW1lbnQgd2hpY2hcbiIKKyJcdGlzIHNldCBvZmYgYnkgYW4gZXF1YWxzICgnPScpIHNpZ24uXG4iCisiXG4iCisiVmFsaWQgZXh0ZW5kZWQgb3B0aW9ucyBhcmU6XG4iCisiXHRjbGVhcl9tbXBcbiIKKyJcdGhhc2hfYWxnPTxoYXNoIGFsZ29yaXRobT5cbiIKKyJcdG1vdW50X29wdHM9PGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucz5cbiIKKyJcdHN0cmlkZT08UkFJRCBwZXItZGlzayBjaHVuayBzaXplIGluIGJsb2Nrcz5cbiIKKyJcdHN0cmlwZV93aWR0aD08UkFJRCBzdHJpZGUqZGF0YSBkaXNrcyBpbiBibG9ja3M+XG4iCisiXHR0ZXN0X2ZzXG4iCisiXHRedGVzdF9mc1xuIgorbXNnc3RyICIiCisiXG4iCisi5oyH5a6a5LqG6ZSZ6K+v55qE6YCJ6aG544CCXG4iCisiXG4iCisi5omp5bGV5bGe5oCn55Sx6YCX5Y+35YiG6ZqU77yM5pyJ5Lqb6ZyA6KaB6YCa6L+H562J5Y+377yI4oCcPeKAne+8ieS8oOmAkuWPguaVsOOAglxuIgorIlxuIgorIuacieaViOeahOaJqeWxlemAiemhueacie+8mlxuIgorIlx0Y2xlYXJfbW1wXG4iCisiXHRoYXNoX2FsZz08aGFzaOeul+azlT5cbiIKKyJcdHN0cmlkZT08UkFJRCDmr4/kuKrno4Hnm5jnmoTmlbDmja7lnZfmlbDvvIjmraXplb/vvIk+XG4iCisiXHRzdHJpcGUtd2lkdGg9POatpemVvyDDlyBSQUlEIOejgeebmOaVsO+8iOW4puWuve+8iT5cbiIKKyJcdGhhc2hfYWxnPTxoYXNo566X5rOVPlxuIgorIlx0dGVzdF9mc1xuIgorIlx0XnRlc3RfZnNcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjUxOQorbXNnaWQgIkZhaWxlZCB0byByZWFkIGlub2RlIGJpdG1hcFxuIgorbXNnc3RyICLor7vlj5Zpbm9kZeS9jeWbvuWksei0pVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTI0Cittc2dpZCAiRmFpbGVkIHRvIHJlYWQgYmxvY2sgYml0bWFwXG4iCittc2dzdHIgIuivu+WPluWdl+S9jeWbvuWksei0pVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyNTQxIHJlc2l6ZS9yZXNpemUyZnMuYzoxMjc2Cittc2dpZCAiYmxvY2tzIHRvIGJlIG1vdmVkIgorbXNnc3RyICLpnIDopoHnp7vliqjnmoTlnZciCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NDQKK21zZ2lkICJGYWlsZWQgdG8gYWxsb2NhdGUgYmxvY2sgYml0bWFwIHdoZW4gaW5jcmVhc2luZyBpbm9kZSBzaXplXG4iCittc2dzdHIgIuWinuWKoGlub2Rl5aSn5bCP5pe25Li65YiG6YWN5Z2X5L2N5Zu+5aSx6LSlXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTAKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGluY3JlYXNlIGlub2RlIHNpemUgXG4iCittc2dzdHIgIuayoeaciei2s+Wkn+eahOepuumXtOeUqOS6juWinuWKoGlub2Rl5aSn5bCPXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI1NTUKK21zZ2lkICJGYWlsZWQgdG8gcmVsb2NhdGUgYmxvY2tzIGR1cmluZyBpbm9kZSByZXNpemUgXG4iCittc2dzdHIgIuaUueWPmOWdl+Wkp+Wwj+aXtumHjeWumuS9jeWdl+Wksei0pSBcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjU4NworbXNnaWQgIiIKKyJFcnJvciBpbiByZXNpemluZyB0aGUgaW5vZGUgc2l6ZS5cbiIKKyJSdW4gZTJ1bmRvIHRvIHVuZG8gdGhlIGZpbGUgc3lzdGVtIGNoYW5nZXMuIFxuIgorbXNnc3RyICIiCisi5pS55Y+YaW5vZGXlpKflsI/ml7blh7rplJnjgIJcbiIKKyLor7fov5DooYxlMnVuZG/mnaXmkqTplIDlr7nmlofku7bns7vnu5/nmoTmm7TmlLnjgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjc5OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiTU1QIGJsb2NrIG1hZ2ljIGlzIGJhZC4gVHJ5IHRvIGZpeCBpdCBieSBydW5uaW5nOlxuIgorIidlMmZzY2sgLWYgJXMnXG4iCittc2dzdHIgIiIKKyJNTVDlnZflubvmlbDplJnor6/jgILor7flsJ3or5Xov5DooYzkuIDkuIvlkb3ku6TmnaXkv67lpI3vvJpcbiIKKyLigJxlMmZzY2sgLWYgJXPigJ1cbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjgxMQorbXNnaWQgIkNhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS5cbiIKK21zZ3N0ciAi5peg5rOV5L+u5pS55pel5b+X6K6+5aSH44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiVGhlIGlub2RlIHNpemUgaXMgYWxyZWFkeSAlbHVcbiIKK21zZ3N0ciAiaW5vZGXlpKflsI/lt7Lnu4/kuLogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzEKK21zZ2lkICJTaHJpbmtpbmcgaW5vZGUgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkXG4iCittc2dzdHIgIuS4jeaUr+aMgee8qeWwj2lub2Rl5aSn5bCPXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4MzYKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBpbm9kZSBzaXplICVsdSAobWF4ICVkKVxuIgorbXNnc3RyICLml6DmlYjnmoRpbm9kZeWkp+WwjyAlbHXvvIjmnIDlpKcgJWTvvIlcbiIKKworIzogbWlzYy90dW5lMmZzLmM6Mjg0MgorbXNnaWQgIlJlc2l6aW5nIGlub2RlcyBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIuaUueWPmCBpbm9kZSDlpKflsI/pnIDopoHoirHotLnkuIDmrrXml7bpl7TjgIIiCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI4ODkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBtYXhpbWFsIG1vdW50IGNvdW50IHRvICVkXG4iCittc2dzdHIgIuiuvue9ruacgOWkp+aMgui9veasoeaVsOS4uiAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyODk1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgY3VycmVudCBtb3VudCBjb3VudCB0byAlZFxuIgorbXNnc3RyICLorr7nva7lvZPliY3mjILovb3mrKHmlbDkuLogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MjkwMAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGVycm9yIGJlaGF2aW9yIHRvICVkXG4iCittc2dzdHIgIuWwhuWHuumUmeihjOS4uuiuvue9ruS4uiAlZFxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTA1CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIGdpZCB0byAlbHVcbiIKK21zZ3N0ciAi6K6+572u5L+d55WZ5Z2X55qEZ2lk5Li6ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTEwCisjLCBjLWZvcm1hdAorbXNnaWQgImludGVydmFsIGJldHdlZW4gY2hlY2tzIGlzIHRvbyBiaWcgKCVsdSkiCittc2dzdHIgIuajgOafpemXtOmalOWkqumVv++8iCVsde+8iSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkxNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGludGVydmFsIGJldHdlZW4gY2hlY2tzIHRvICVsdSBzZWNvbmRzXG4iCittc2dzdHIgIuWwhuajgOafpemXtOmalOiuvue9ruS4uiAlbHUg56eSXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyByZXNlcnZlZCBibG9ja3MgcGVyY2VudGFnZSB0byAlZyUlICglbGx1IGJsb2NrcylcbiIKK21zZ3N0ciAi5bCG5L+d55WZ5Z2X5omA5Y2g55m+5YiG5q+U6K6+572u5Li6ICVnJSXvvIglbGx1IOS4quWdl++8iVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTMwCisjLCBjLWZvcm1hdAorbXNnaWQgInJlc2VydmVkIGJsb2NrcyBjb3VudCBpcyB0b28gYmlnICglbGx1KSIKK21zZ3N0ciAi5L+d55WZ5Z2X55qE5pWw6YeP5aSq5aSn77yIJWxsde+8iSIKKworIzogbWlzYy90dW5lMmZzLmM6MjkzNworIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBjb3VudCB0byAlbGx1XG4iCittc2dzdHIgIuiuvue9ruS/neeVmeWdl+aVsOS4uiAlbGx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDIKK21zZ2lkICIiCisiXG4iCisiVGhlIGZpbGVzeXN0ZW0gYWxyZWFkeSBoYXMgc3BhcnNlIHN1cGVyYmxvY2tzLlxuIgorbXNnc3RyICIiCisiXG4iCisi5paH5Lu257O757uf5bey57uP5ZCr5pyJ5YiG5pWj5byP6LaF57qn5Z2XXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NDUKK21zZ2lkICIiCisiXG4iCisiU2V0dGluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkXG4iCisiZm9yIGZpbGVzeXN0ZW1zIHdpdGggdGhlIG1ldGFfYmcgZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisi5ZCv55So5LqGbWV0YV9iZ+eJueaAp+eahOaWh+S7tuezu+e7n+S4jeaUr+aMgeiuvue9ruWIhuaVo+W8j1xuIgorIui2hee6p+Wdl+agh+W/l+OAglxuIgorIlxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJTcGFyc2Ugc3VwZXJibG9jayBmbGFnIHNldC4gICVzIgorbXNnc3RyICIiCisiXG4iCisi5bey6K6+572u5YiG5pWj5byP6LaF57qn5Z2X5qCH5b+X44CCICAlcyIKKworIzogbWlzYy90dW5lMmZzLmM6Mjk2MAorbXNnaWQgIiIKKyJcbiIKKyJDbGVhcmluZyB0aGUgc3BhcnNlIHN1cGVyYmxvY2sgZmxhZyBub3Qgc3VwcG9ydGVkLlxuIgorbXNnc3RyICIiCisiXG4iCisi56e76Zmk5LiN6KKr5pSv5oyB55qE5YiG5pWj5byP6LaF57qn5Z2X5qCH5b+X44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjI5NjgKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyB0aW1lIGZpbGVzeXN0ZW0gbGFzdCBjaGVja2VkIHRvICVzXG4iCittc2dzdHIgIuiuvue9ruS4iuS4gOasoeajgOafpeeahOaXtumXtOS4uiAlc1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzoyOTc0CisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgcmVzZXJ2ZWQgYmxvY2tzIHVpZCB0byAlbHVcbiIKK21zZ3N0ciAi6K6+572u5L+d55WZ5Z2X55qEdWlk5Li6ICVsdVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDA2Cittc2dpZCAiRXJyb3IgaW4gdXNpbmcgY2xlYXJfbW1wLiBJdCBtdXN0IGJlIHVzZWQgd2l0aCAtZlxuIgorbXNnc3RyICJjbGVhcl9tbXDpgInpobnkvb/nlKjplJnor6/vvIzlv4XpobvlkowgLWYg6YCJ6aG55LiA6LW35L2/55SoXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwMjQKK21zZ2lkICIiCisiVGhlIHF1b3RhIGZlYXR1cmUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAi5Y+q5pyJ5b2T5paH5Lu257O757uf6KKr5Y246L295pe25omN6IO95L+u5pS56YWN6aKd54m55oCn44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNDgKK21zZ2lkICJUaGUgVVVJRCBtYXkgb25seSBiZSBjaGFuZ2VkIHdoZW4gdGhlIGZpbGVzeXN0ZW0gaXMgdW5tb3VudGVkLlxuIgorbXNnc3RyICLlj6rmnInlvZPmlofku7bns7vnu5/ooqvljbjovb3ml7bmiY3og73mlLnlj5hVVUlE44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMwNTEKK21zZ2lkICIiCisiSWYgeW91IG9ubHkgdXNlIGtlcm5lbHMgbmV3ZXIgdGhhbiB2NC40LCBydW4gJ3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkJyAiCisiYW5kIHJlLXJ1biB0aGlzIGNvbW1hbmQuXG4iCittc2dzdHIgIiIKKyLoi6Xmgqjku4Xkvb/nlKggTGludXggNC40IOS7peS4iueahOWGheaguO+8jOivt+i/kOihjOKAnHR1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bV9zZWVk4oCd77yM54S25ZCOIgorIumHjeaWsOi/kOihjOatpOWRveS6huOAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMDYwCittc2dpZCAiU2V0dGluZyBVVUlEIG9uIGEgY2hlY2tzdW1tZWQgZmlsZXN5c3RlbSBjb3VsZCB0YWtlIHNvbWUgdGltZS4iCittc2dzdHIgIuWcqOWQr+eUqOS6huagoemqjOWAvOeahOaWh+S7tuezu+e7n+S4iuiuvue9riBVVUlEIOmcgOimgeiKsei0ueS4gOauteaXtumXtOOAgiIKKworIzogbWlzYy90dW5lMmZzLmM6MzA4NQorbXNnaWQgIkludmFsaWQgVVVJRCBmb3JtYXRcbiIKK21zZ3N0ciAi5peg5pWI55qEIFVVSUQg5qC85byPXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxMDEKK21zZ2lkICJOZWVkIHRvIHVwZGF0ZSBqb3VybmFsIHN1cGVyYmxvY2suXG4iCittc2dzdHIgIumcgOimgeabtOaWsOaXpeW/l+i2hee6p+Wdl+OAglxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTI2Cittc2dpZCAiVGhlIGlub2RlIHNpemUgbWF5IG9ubHkgYmUgY2hhbmdlZCB3aGVuIHRoZSBmaWxlc3lzdGVtIGlzIHVubW91bnRlZC5cbiIKK21zZ3N0ciAi5Y+q5pyJ5b2T5paH5Lu257O757uf6KKr5Y246L295pe25omN6IO95pS55Y+YaW5vZGXlpKflsI/jgIJcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzEzMworbXNnaWQgIiIKKyJDaGFuZ2luZyB0aGUgaW5vZGUgc2l6ZSBub3Qgc3VwcG9ydGVkIGZvciBmaWxlc3lzdGVtcyB3aXRoIHRoZSBmbGV4X2JnXG4iCisiZmVhdHVyZSBlbmFibGVkLlxuIgorbXNnc3RyICLlkK/nlKjkuoblvLnmgKfnu4TnibnmgKfnmoTmlofku7bns7vnu5/kuI3mlK/mjIHmlLnlj5hpbm9kZeWkp+Wwj1xuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTUxCisjLCBjLWZvcm1hdAorbXNnaWQgIlNldHRpbmcgaW5vZGUgc2l6ZSAlbHVcbiIKK21zZ3N0ciAi5q2j5Zyo5bCGaW5vZGXlpKflsI/orr7nva7kuLogJWx1XG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNTUKK21zZ2lkICJGYWlsZWQgdG8gY2hhbmdlIGlub2RlIHNpemVcbiIKK21zZ3N0ciAi5pS55Y+YaW5vZGXlpKflsI/lpLHotKUgXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMxNjkKKyMsIGMtZm9ybWF0Cittc2dpZCAiU2V0dGluZyBzdHJpZGUgc2l6ZSB0byAlZFxuIgorbXNnc3RyICLorr7nva7mraXplb/kuLogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE3NAorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIHN0cmlwZSB3aWR0aCB0byAlZFxuIgorbXNnc3RyICLorr7nva7luKblrr3kuLogJWRcbiIKKworIzogbWlzYy90dW5lMmZzLmM6MzE4MQorIywgYy1mb3JtYXQKK21zZ2lkICJTZXR0aW5nIGV4dGVuZGVkIGRlZmF1bHQgbW91bnQgb3B0aW9ucyB0byAnJXMnXG4iCittc2dzdHIgIuiuvue9rum7mOiupOaMgui9veeahOaJqeWxlemAiemhueS4uiDigJwlc+KAnVxuIgorCisjOiBtaXNjL3R1bmUyZnMuYzozMTkyCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJXYXJuaW5nOiBUaGUgam91cm5hbCBpcyBkaXJ0eS4gWW91IG1heSB3aXNoIHRvIHJlcGxheSB0aGUgam91cm5hbCBsaWtlOlxuIgorIlxuIgorIlx0ZTJmc2NrIC1FIGpvdXJuYWxfb25seSAlc1xuIgorIlxuIgorInRoZW4gcmVydW4gdGhpcyBjb21tYW5kLiAgT3RoZXJ3aXNlLCBhbnkgY2hhbmdlcyBtYWRlIG1heSBiZSBvdmVyd3JpdHRlblxuIgorImJ5IGpvdXJuYWwgcmVjb3ZlcnkuXG4iCittc2dzdHIgIiIKKyLorablkYrvvJrml6Xlv5flrZjlnKjplJnor6/jgILmgqjlj6/og73pnIDopoHph43lgZrml6Xlv5fvvIzlpoLvvJpcbiIKKyJcbiIKKyJlMmZzY2sgLUUgam91cm5hbF9vbmx5ICVzXG4iCisiXG4iCisi54S25ZCO6YeN5paw6L+Q6KGM5pys5ZG95Luk44CC5ZCm5YiZ77yM5Lu75L2V5omA5YGa5pu05pS56YO95Y+v6IO96KKr5pel5b+X5oGi5aSN5pON5L2c5omA6KaG55uW44CCXG4iCisKKyM6IG1pc2MvdHVuZTJmcy5jOjMyMDMKKyMsIGMtZm9ybWF0Cittc2dpZCAiUmVjb3ZlcmluZyBqb3VybmFsLlxuIgorbXNnc3RyICLmraPlnKjkv67lpI3ml6Xlv5fjgIJcbiIKKworIzogbWlzYy91dGlsLmM6MTAwCittc2dpZCAiPHByb2NlZWRpbmc+XG4iCittc2dzdHIgIjzlpITnkIbkuK0+XG4iCisKKyM6IG1pc2MvdXRpbC5jOjEwNAorIywgYy1mb3JtYXQKK21zZ2lkICJQcm9jZWVkIGFueXdheSAob3Igd2FpdCAlZCBzZWNvbmRzKSA/ICh5LG4pICIKK21zZ3N0ciAi5peg6K665aaC5L2V5Lmf6KaB57un57ut77yI5oiW562J5b6FICVkIOenku+8iT/vvIh5LG7vvIkgIgorCisjOiBtaXNjL3V0aWwuYzoxMDgKK21zZ2lkICJQcm9jZWVkIGFueXdheT8gKHksbikgIgorbXNnc3RyICLml6DorrrlpoLkvZXkuZ/opoHnu6fnu60/77yIeSxu77yJICIKKworIzogbWlzYy91dGlsLmM6MTMzCittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuICBIb3BlIC9ldGMvbXRhYiBpcyBpbmNvcnJlY3QuXG4iCittc2dzdHIgIuW8uuWItuaJp+ihjG1rZTJmc+OAguacn+acmy9ldGMvbXRhYuS4reWPjeaYoOeahOW5tumdnuecn+WunuaDheWGteOAglxuIgorCisjOiBtaXNjL3V0aWwuYzoxMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAid2lsbCBub3QgbWFrZSBhICVzIGhlcmUhXG4iCittc2dzdHIgIuWPlua2iOW7uueriyAlcyDvvIFcbiIKKworIzogbWlzYy91dGlsLmM6MTQ1Cittc2dpZCAibWtlMmZzIGZvcmNlZCBhbnl3YXkuXG4iCittc2dzdHIgIm1rZTJmcyDlvLrliLbmiafooYzjgIJcbiIKKworIzogbWlzYy91dGlsLmM6MTYxCittc2dpZCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IHRvIHBhcnNlIGpvdXJuYWwgb3B0aW9ucyFcbiIKK21zZ3N0ciAi5peg5rOV5Li66Kej5p6Q5pel5b+X6YCJ6aG56I635Y+W5YaF5a2Y77yBXG4iCisKKyM6IG1pc2MvdXRpbC5jOjE4NgorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiXG4iCisiQ291bGQgbm90IGZpbmQgam91cm5hbCBkZXZpY2UgbWF0Y2hpbmcgJXNcbiIKK21zZ3N0ciAiIgorIlxuIgorIuaXoOazleaJvuWIsOWMuemFjSAlcyDnmoTml6Xlv5forr7lpIdcbiIKKworIzogbWlzYy91dGlsLmM6MjEzCittc2dpZCAiIgorIlxuIgorIkJhZCBqb3VybmFsIG9wdGlvbnMgc3BlY2lmaWVkLlxuIgorIlxuIgorIkpvdXJuYWwgb3B0aW9ucyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hcywgYW5kIG1heSB0YWtlIGFuIGFyZ3VtZW50IHdoaWNoXG4iCisiXHRpcyBzZXQgb2ZmIGJ5IGFuIGVxdWFscyAoJz0nKSBzaWduLlxuIgorIlxuIgorIlZhbGlkIGpvdXJuYWwgb3B0aW9ucyBhcmU6XG4iCisiXHRzaXplPTxqb3VybmFsIHNpemUgaW4gbWVnYWJ5dGVzPlxuIgorIlx0ZGV2aWNlPTxqb3VybmFsIGRldmljZT5cbiIKKyJcdGxvY2F0aW9uPTxqb3VybmFsIGxvY2F0aW9uPlxuIgorIlxuIgorIlRoZSBqb3VybmFsIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGZpbGVzeXN0ZW0gYmxvY2tzLlxuIgorIlxuIgorbXNnc3RyICIiCisiXG4iCisi57uZ5a6a55qE5pel5b+X6YCJ6aG55pyJ6K+v44CCXG4iCisiXG4iCisi5pel5b+X6YCJ6aG555Sx6YCX5Y+35YiG6ZqU77yM5pyJ5Lqb6L+Y6ZyA6KaB6YCa6L+H562J5Y+377yI4oCcPeKAne+8ieS8oOmAkuWPguaVsOOAglxuIgorIlxuIgorIuacieaViOeahOaXpeW/l+mAiemhueS4uu+8mlxuIgorIlx0c2l6ZT085pel5b+X5aSn5bCP77yITULvvIk+XG4iCisiXHRkZXZpY2U9POaXpeW/l+iuvuWkhz5cbiIKKyJcdGxvY2F0aW9uPTzml6Xlv5fmiYDlnKjkvY3nva4+XG4iCisiXG4iCisiXG4iCisi5pel5b+X5bC65a+45b+F6aG75LuL5LqOMTAyNOiHszEwMjQwMDAw5Liq5Z2X5LmL6Ze077yI5Z2X55qE5aSn5bCP55Sx5paH5Lu257O757uf5Yaz5a6a77yJ44CCXG4iCisiXG4iCisKKyM6IG1pc2MvdXRpbC5jOjI0NAorbXNnaWQgIiIKKyJcbiIKKyJGaWxlc3lzdGVtIHRvbyBzbWFsbCBmb3IgYSBqb3VybmFsXG4iCittc2dzdHIgIiIKKyJcbiIKKyLmlofku7bns7vnu5/lpKrlsI/vvIzml6Dms5XlrrnnurPml6Xlv5dcbiIKKworIzogbWlzYy91dGlsLmM6MjUxCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJcbiIKKyJUaGUgcmVxdWVzdGVkIGpvdXJuYWwgc2l6ZSBpcyAlZCBibG9ja3M7IGl0IG11c3QgYmVcbiIKKyJiZXR3ZWVuIDEwMjQgYW5kIDEwMjQwMDAwIGJsb2Nrcy4gIEFib3J0aW5nLlxuIgorbXNnc3RyICIiCisiXG4iCisi57uZ5a6a55qE5pel5b+X5aSn5bCP5Li6ICVkIOS4quWdl++8m+S9huivpeWAvOW/hemhu1xuIgorIuS7i+S6jjEwMjToh7MxMDI0MDAwMOWdl+S5i+mXtOOAgue7iOatouaJp+ihjOOAglxuIgorCisjOiBtaXNjL3V0aWwuYzoyNTkKK21zZ2lkICIiCisiXG4iCisiSm91cm5hbCBzaXplIHRvbyBiaWcgZm9yIGZpbGVzeXN0ZW0uXG4iCittc2dzdHIgIiIKKyJcbiIKKyLml6Xlv5flpKflsI/otoXov4fmlofku7bns7vnu5/oh6rouqvjgIJcbiIKKworIzogbWlzYy91dGlsLmM6MjczCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGlzIGZpbGVzeXN0ZW0gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGNoZWNrZWQgZXZlcnkgJWQgbW91bnRzIG9yXG4iCisiJWcgZGF5cywgd2hpY2hldmVyIGNvbWVzIGZpcnN0LiAgVXNlIHR1bmUyZnMgLWMgb3IgLWkgdG8gb3ZlcnJpZGUuXG4iCittc2dzdHIgIiIKKyLor6Xmlofku7bns7vnu5/lnKjmr4/mjILovb0lZOasoeaIluavj+malCVn5aSp6YO95Lya6L+b6KGM6Ieq5Yqo5qOA5p+l44CCXG4iCisi5L2/55SodHVuZTJmcyAtYyDmiJYtaemAiemhueadpeimhueblui/meS4gOeJueaAp+OAglxuIgorCisjOiBtaXNjL3V1aWRkLmM6NDkKKyMsIGMtZm9ybWF0Cittc2dpZCAiVXNhZ2U6ICVzIFstZF0gWy1wIHBpZGZpbGVdIFstcyBzb2NrZXRwYXRoXSBbLVQgdGltZW91dF1cbiIKK21zZ3N0ciAi55So5rOV77yaJXMgWy1kXSBbLXAgcGlk5paH5Lu2XSBbLXMg5aWX5o6l5a2X6Lev5b6EXSBbLVQg6LaF5pe25pe26ZW/XVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIFstcnx0XSBbLW4gbnVtXSBbLXMgc29ja2V0cGF0aF1cbiIKK21zZ3N0ciAiICAgICAgICVzIFstcnx0XSBbLW4g5pWw6YePXSBbLXMg5aWX5o6l5a2X6Lev5b6EXVxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTMKKyMsIGMtZm9ybWF0Cittc2dpZCAiICAgICAgICVzIC1rXG4iCittc2dzdHIgIiAgICAgICAlcyAta1xuIgorCisjOiBtaXNjL3V1aWRkLmM6MTU1Cittc2dpZCAiYmFkIGFyZ3VtZW50cyIKK21zZ3N0ciAi5Y+C5pWw6ZSZ6K+vIgorCisjOiBtaXNjL3V1aWRkLmM6MTczCittc2dpZCAiY29ubmVjdCIKK21zZ3N0ciAi6L+e5o6lIgorCisjOiBtaXNjL3V1aWRkLmM6MTkyCittc2dpZCAid3JpdGUiCittc2dzdHIgIuWGmeWFpSIKKworIzogbWlzYy91dWlkZC5jOjIwMAorbXNnaWQgInJlYWQgY291bnQiCittc2dzdHIgIuivu+WPluiuoeaVsCIKKworIzogbWlzYy91dWlkZC5jOjIwNgorbXNnaWQgImJhZCByZXNwb25zZSBsZW5ndGgiCittc2dzdHIgIumUmeivr+eahOWTjeW6lOmVv+W6piIKKworIzogbWlzYy91dWlkZC5jOjI3MQorIywgYy1mb3JtYXQKK21zZ2lkICJ1dWlkZCBkYWVtb24gYWxyZWFkeSBydW5uaW5nIGF0IHBpZCAlc1xuIgorbXNnc3RyICJ1dWlkZOWuiOaKpOi/m+eoi+W3sue7j+WcqOi/kOihjO+8jHBpZCAlc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6Mjc5CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvdWxkbid0IGNyZWF0ZSB1bml4IHN0cmVhbSBzb2NrZXQ6ICVzIgorbXNnc3RyICLml6Dms5XliJvlu7p1bml45rWB5aWX5o6l5a2X77yaJXMiCisKKyM6IG1pc2MvdXVpZGQuYzozMDgKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3QgYmluZCB1bml4IHNvY2tldCAlczogJXNcbiIKK21zZ3N0ciAi5peg5rOV57uR5a6adW5peOWll+aOpeWtlyVz77yaJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjMxNgorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZG4ndCBsaXN0ZW4gb24gdW5peCBzb2NrZXQgJXM6ICVzXG4iCittc2dzdHIgIuaXoOazleebkeWQrHVuaXjlpZfmjqXlrZclc++8miVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozNTQKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgcmVhZGluZyBmcm9tIGNsaWVudCwgbGVuID0gJWRcbiIKK21zZ3N0ciAi6K+75Y+W5a6i5oi356uv5YaF5a655Ye66ZSZ77yM5YaF5a656ZW/5bqmID0gJWRcbiIKKworIzogbWlzYy91dWlkZC5jOjM2MgorIywgYy1mb3JtYXQKK21zZ2lkICJvcGVyYXRpb24gJWQsIGluY29taW5nIG51bSA9ICVkXG4iCittc2dzdHIgIuaTjeS9nCAlZO+8jOS8oOWFpeWAvCA9ICVkXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHRpbWUgVVVJRDogJXNcbiIKK21zZ3N0ciAi5bey55Sf5oiQ5pe26Ze0VVVJRO+8miVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzozOTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkIHJhbmRvbSBVVUlEOiAlc1xuIgorbXNnc3RyICLlt7LnlJ/miJDpmo/mnLrmlbBVVUlE77yaJXNcbiIKKworIzogbWlzYy91dWlkZC5jOjQwMAorIywgYy1mb3JtYXQKK21zZ2lkICJHZW5lcmF0ZWQgdGltZSBVVUlEICVzIGFuZCBzdWJzZXF1ZW50IFVVSURcbiIKK21zZ2lkX3BsdXJhbCAiR2VuZXJhdGVkIHRpbWUgVVVJRCAlcyBhbmQgJWQgc3Vic2VxdWVudCBVVUlEc1xuIgorbXNnc3RyWzBdICLlt7LnlJ/miJDml7bpl7RVVUlEICVzIOWSjCAlZCDkuKrlkI7nu63nmoRVVUlEXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiR2VuZXJhdGVkICVkIFVVSUQnczpcbiIKK21zZ3N0ciAi5bey55Sf5oiQICVkIOS4qlVVSUTvvJpcbiIKKworIzogbWlzYy91dWlkZC5jOjQzMworIywgYy1mb3JtYXQKK21zZ2lkICJJbnZhbGlkIG9wZXJhdGlvbiAlZFxuIgorbXNnc3RyICLmk43kvZwgJWQg5peg5pWIXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo0NzcgbWlzYy91dWlkZC5jOjQ5OQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbnVtYmVyOiAlc1xuIgorbXNnc3RyICLplJnor6/nmoTmlbDph4/vvJolc1xuIgorCisjOiBtaXNjL3V1aWRkLmM6NTM0IG1pc2MvdXVpZGQuYzo1NjMKKyMsIGMtZm9ybWF0Cittc2dpZCAiRXJyb3IgY2FsbGluZyB1dWlkZCBkYWVtb24gKCVzKTogJXNcbiIKK21zZ3N0ciAi6LCD55SodXVpZGTlrojmiqTov5vnqIvvvIglc++8ieaXtuWHuumUme+8miVzXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1NDQKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgYW5kIHN1YnNlcXVlbnQgVVVJRFxuIgorbXNnaWRfcGx1cmFsICIlcyBhbmQgc3Vic2VxdWVudCAlZCBVVUlEc1xuIgorbXNnc3RyWzBdICIlcyDlkozlkI7nu60gJWQg5LiqVVVJRFxuIgorCisjOiBtaXNjL3V1aWRkLmM6NTQ4Cittc2dpZCAiTGlzdCBvZiBVVUlEJ3M6XG4iCittc2dzdHIgIlVVSUTliJfooajvvJpcbiIKKworIzogbWlzYy91dWlkZC5jOjU2OQorIywgYy1mb3JtYXQKK21zZ2lkICJVbmV4cGVjdGVkIHJlcGx5IGxlbmd0aCBmcm9tIHNlcnZlciAlZFxuIgorbXNnc3RyICLmnI3liqHlmaggJWQg6L+U5Zue5LqG6ZW/5bqm5byC5bi455qE5YaF5a65XG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1ODYKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ291bGRuJ3Qga2lsbCB1dWlkZCBydW5uaW5nIGF0IHBpZCAlZDogJXNcbiIKK21zZ3N0ciAiIgorIuaXoOazleadgOatu3BpZOS4uiAlZCDnmoR1dWlkZOi/m+eoi++8miVzXG4iCisiXG4iCisKKyM6IG1pc2MvdXVpZGQuYzo1OTIKKyMsIGMtZm9ybWF0Cittc2dpZCAiS2lsbGVkIHV1aWRkIHJ1bm5pbmcgYXQgcGlkICVkXG4iCittc2dzdHIgIuW3suadgOatu3BpZOS4uiAlZCDnmoR1dWlkZOi/m+eoi1xuIgorCisjOiBtaXNjL3V1aWRnZW4uYzozMgorIywgYy1mb3JtYXQKK21zZ2lkICJVc2FnZTogJXMgWy1yXSBbLXRdXG4iCittc2dzdHIgIueUqOazle+8miVzIFstcl0gWy10XVxuIgorCisjOiByZXNpemUvZXh0ZW50LmM6MjAyCittc2dpZCAiIyBFeHRlbnQgZHVtcDpcbiIKK21zZ3N0ciAiIyBFeHRlbnTovazlgqjvvJpcbiIKKworIzogcmVzaXplL2V4dGVudC5jOjIwMworIywgYy1mb3JtYXQKK21zZ2lkICIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIKK21zZ3N0ciAiI1x05pWw6YePPSVsbHXvvIzlpKflsI89JWxsde+8jOaMh+mSiD0lbGx177yM5oyJ5bqPPSVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo0OQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIGRldmljZSBbLWJ8LXN8bmV3X3NpemVdICIKKyJbLXogdW5kb19maWxlXVxuIgorIlxuIgorbXNnc3RyICIiCisi55So5rOV77yaJXMgWy1kIOiwg+ivleagh+W/l10gWy1mXSBbLUZdIFstTV0gWy1QXSBbLXBdIOiuvuWkhyBbLWJ8LXN85paw5aSn5bCPXSBbLXog5pKk6ZSAIgorIuaWh+S7tl1cbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo3MgorbXNnaWQgIkV4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUiCittc2dzdHIgIuato+WcqOaJqeWFhWlub2Rl6KGoIgorCisjOiByZXNpemUvbWFpbi5jOjc1Cittc2dpZCAiUmVsb2NhdGluZyBibG9ja3MiCittc2dzdHIgIuato+WcqOmHjeWumuS9jeWdlyIKKworIzogcmVzaXplL21haW4uYzo3OAorbXNnaWQgIlNjYW5uaW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICLmraPlnKjmiavmj49pbm9kZeihqCIKKworIzogcmVzaXplL21haW4uYzo4MQorbXNnaWQgIlVwZGF0aW5nIGlub2RlIHJlZmVyZW5jZXMiCittc2dzdHIgIuato+WcqOabtOaWsGlub2Rl5byV55SoIgorCisjOiByZXNpemUvbWFpbi5jOjg0Cittc2dpZCAiTW92aW5nIGlub2RlIHRhYmxlIgorbXNnc3RyICLmraPlnKjnp7vliqhpbm9kZeihqCIKKworIzogcmVzaXplL21haW4uYzo4NworbXNnaWQgIlVua25vd24gcGFzcz8hPyIKK21zZ3N0ciAi5YW25LuW5q2l6aqkIgorCisjOiByZXNpemUvbWFpbi5jOjkwCisjLCBjLWZvcm1hdAorbXNnaWQgIkJlZ2luIHBhc3MgJWQgKG1heCA9ICVsdSlcbiIKK21zZ3N0ciAi5byA5aeL56ysICVkIOatpe+8iOWFsSAlbHUg5q2l77yJXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6MTYyCittc2dpZCAiIgorIlxuIgorIlJlc2l6aW5nIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLiAgUHJvY2VlZCBhdFxuIgorInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG4iCisiXG4iCittc2dzdHIgIiIKKyJcbiIKKyLmlLnlj5hiaWdhbGxvY+aWh+S7tuezu+e7n+eahOWkp+Wwj+Wwmuacquiiq+WFheWIhua1i+ivleOAguS9oOmcgOimgeaJv+aLheWPr+iDveeahOmjjumZqe+8gVxuIgorIuWmguaenOS9oOW4jOacm+e7p+e7re+8jOivt+S9v+eUqOW8uuWItumAiemhueOAglxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjM2NQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSBvcGVuaW5nICVzIgorbXNnc3RyICLmiZPlvIAlc+aXtiIKKworIzogcmVzaXplL21haW4uYzozNzMKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIKK21zZ3N0ciAi6I635Y+WJXPnmoRzdGF05L+h5oGv5pe25Ye66ZSZ44CCIgorCisjOiByZXNpemUvbWFpbi5jOjQ0NQorIywgYy1mb3JtYXQKK21zZ2lkICIiCisiUGxlYXNlIHJ1biAnZTJmc2NrIC1mICVzJyBmaXJzdC5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIuivt+WFiOi/kOihjOKAnGUyZnNjayAtZiAlc+KAneOAglxuIgorIlxuIgorCisjOiByZXNpemUvbWFpbi5jOjQ2NAorIywgYy1mb3JtYXQKK21zZ2lkICJFc3RpbWF0ZWQgbWluaW11bSBzaXplIG9mIHRoZSBmaWxlc3lzdGVtOiAlbGx1XG4iCittc2dzdHIgIumihOiuoeaWh+S7tuezu+e7n+eahOacgOWwj+WwuuWvuO+8miVsbHVcbiIKKworIzogcmVzaXplL21haW4uYzo1MDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW52YWxpZCBuZXcgc2l6ZTogJXNcbiIKK21zZ3N0ciAi5peg5pWI55qE5paw5aSn5bCP77yaICVzXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTIwCittc2dpZCAiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlIGV4cHJlc3NlZCBpbiAzMiBiaXRzXG4iCittc2dzdHIgIuaWsOWkp+Wwj+WkquWkp++8jOaXoOazleeUqDMy5L2N5pWw6KGo56S6XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTI4CisjLCBjLWZvcm1hdAorbXNnaWQgIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIgorbXNnc3RyICLmlrDlpKflsI/kuI3og73kvY7kuo7mraTmnIDlsI/lgLzvvJolbGx1XG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTM0Cittc2dpZCAiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIgorbXNnc3RyICLml6DmlYjnmoTmraXplb/luqYiCisKKyM6IHJlc2l6ZS9tYWluLmM6NTU4CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgY29udGFpbmluZyBwYXJ0aXRpb24gKG9yIGRldmljZSkgaXMgb25seSAlbGx1ICglZGspIGJsb2Nrcy5cbiIKKyJZb3UgcmVxdWVzdGVkIGEgbmV3IHNpemUgb2YgJWxsdSBibG9ja3MuXG4iCisiXG4iCittc2dzdHIgIiIKKyLmjIflrprnmoTliIbljLrvvIjmiJborr7lpIfvvInku4XmnIkgJWxsdSDkuKrlnZfvvIjmr4/lnZfkuLogJWRr77yJ77yMXG4iCisi5L2G5L2g5Y205oyH5a6a5paw5aSn5bCP5Li6ICVsbHUg5Liq5Z2X44CCXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzZXQgYW5kIHVuc2V0IDY0Yml0IGZlYXR1cmUuXG4iCittc2dzdHIgIuaXoOazleiuvue9ri/lj5bmtojorr7nva4gNjQg5L2N54m55oCn44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTY5CisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIG9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuIDJeMzIgIgorImJsb2Nrcy5cbiIKK21zZ3N0ciAi5peg5rOV5Zyo5ZCr5pyJ6LaF6L+HIDJeMzIg5Liq5Z2X55qE5paH5Lu257O757uf5LiK5pS55Y+YIDY0IOS9jeeJueaAp+OAglxuIgorCisjOiByZXNpemUvbWFpbi5jOjU3NQorIywgYy1mb3JtYXQKK21zZ2lkICJDYW5ub3QgY2hhbmdlIHRoZSA2NGJpdCBmZWF0dXJlIHdoaWxlIHRoZSBmaWxlc3lzdGVtIGlzIG1vdW50ZWQuXG4iCittc2dzdHIgIuaXoOazleWcqOW3suaMgui9veeahOaWh+S7tuezu+e7n+S4iuaUueWPmCA2NCDkvY3nibnmgKfjgIJcbiIKKworIzogcmVzaXplL21haW4uYzo1ODEKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSB3aXRoIHR1bmUyZnMgYmVmb3JlIGVuYWJsaW5nIHRoZSA2NGJpdCAiCisiZmVhdHVyZS5cbiIKK21zZ3N0ciAi5Zyo5ZCv55SoIDY0IOS9jeeJueaAp+WJje+8jOivt+WFiOaJp+ihjCB0dW5lMmZzIOadpeWQr+eUqCBleHRlbnTjgIJcbiIKKworIzogcmVzaXplL21haW4uYzo1ODcKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG4iCisiXG4iCittc2dzdHIgIiIKKyLmlofku7bns7vnu5/lt7Lnu4/kuLogJWxsdSDkuKrlnZfvvIjmr4/lnZcgJWRr77yJ44CC5peg6ZyA6L+b5LiA5q2l5aSE55CG77yBXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk0CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIgorbXNnc3RyICLmlofku7bns7vnu5/lt7Lnu4/kuLogNjQg5L2N5qih5byP44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NTk5CisjLCBjLWZvcm1hdAorbXNnaWQgIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgMzItYml0LlxuIgorbXNnc3RyICLmlofku7bns7vnu5/lt7Lnu4/kuLogMzIg5L2N5qih5byP44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjA4CisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIgorbXNnc3RyICLlsIbmlofku7bns7vnu5/ovazmjaLkuLogNjQg5L2N44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEwCisjLCBjLWZvcm1hdAorbXNnaWQgIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIgorbXNnc3RyICLlsIbmlofku7bns7vnu5/ovazmjaLkuLogMzIg5L2N44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjEyCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIgorbXNnc3RyICLlsIYgJXMg5LiK55qE5paH5Lu257O757uf6LCD5pW05Li6ICVsbHUg5Liq5Z2X77yI5q+P5Z2XICVka++8ieOAglxuIgorCisjOiByZXNpemUvbWFpbi5jOjYyMQorIywgYy1mb3JtYXQKK21zZ2lkICJ3aGlsZSB0cnlpbmcgdG8gcmVzaXplICVzIgorbXNnc3RyICLlsJ3or5XosIPmlbQlc+eahOWkp+Wwj+aXtiIKKworIzogcmVzaXplL21haW4uYzo2MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorImFmdGVyIHRoZSBhYm9ydGVkIHJlc2l6ZSBvcGVyYXRpb24uXG4iCittc2dzdHIgIiIKKyLor7flnKjnu4jmraLosIPmlbTmk43kvZzlkI7ov5DooYzigJxlMmZzY2sgLWZ5ICVz4oCdXG4iCisi5p2l5L+u5aSN5paH5Lu257O757uf44CCXG4iCisKKyM6IHJlc2l6ZS9tYWluLmM6NjMwCisjLCBjLWZvcm1hdAorbXNnaWQgIiIKKyJUaGUgZmlsZXN5c3RlbSBvbiAlcyBpcyBub3cgJWxsdSAoJWRrKSBibG9ja3MgbG9uZy5cbiIKKyJcbiIKK21zZ3N0ciAiIgorIiVzIOS4iueahOaWh+S7tuezu+e7n+eOsOWcqOS4uiAlbGx1IOS4quWdl++8iOavj+WdlyAlZGvvvInjgIJcbiIKKyJcbiIKKworIzogcmVzaXplL21haW4uYzo2NDUKKyMsIGMtZm9ybWF0Cittc2dpZCAid2hpbGUgdHJ5aW5nIHRvIHRydW5jYXRlICVzIgorbXNnc3RyICLlsJ3or5XmiKrmlq0gJXMg5pe2IgorCisjOiByZXNpemUvb25saW5lLmM6ODEKK21zZ2lkICJrZXJuZWwgZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXplIHdpdGggc3BhcnNlX3N1cGVyMiIKK21zZ3N0ciAi5YaF5qC45LiN5pSv5oyB5Zyo57q/6LCD5pW05ZCv55So5LqGc3BhcnNlX3N1cGVyMueJueaAp+eahOaWh+S7tuezu+e7n+eahOWkp+WwjyIKKworIzogcmVzaXplL29ubGluZS5jOjg2CisjLCBjLWZvcm1hdAorbXNnaWQgIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlczsgb24tbGluZSByZXNpemluZyByZXF1aXJlZFxuIgorbXNnc3RyICIiCisiJXMg5LiK55qE5paH5Lu257O757uf5bey6KKr5oyC6L295LqOICVz77yb6ZyA6KaB6L+b6KGM5Zyo57q/6LCD5pW05aSn5bCPXG4iCisiXG4iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzo5MAorbXNnaWQgIk9uLWxpbmUgc2hyaW5raW5nIG5vdCBzdXBwb3J0ZWQiCittc2dzdHIgIuS4jeaUr+aMgeWcqOe6v+e8qeWwj+WdlyIKKworIzogcmVzaXplL29ubGluZS5jOjExNAorbXNnaWQgIkZpbGVzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBvbmxpbmUgcmVzaXppbmciCittc2dzdHIgIuaWh+S7tuezu+e7n+S4jeaUr+aMgeWcqOe6v+iwg+aVtOWkp+WwjyIKKworIzogcmVzaXplL29ubGluZS5jOjEyMgorbXNnaWQgIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciCittc2dzdHIgIuayoeaciei2s+Wkn+eahOS/neeVmWdkdOWdl+eUqOS6juaUueWPmOaWh+S7tuezu+e7n+Wkp+WwjyIKKworIzogcmVzaXplL29ubGluZS5jOjEyOQorbXNnaWQgIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIKK21zZ3N0ciAi5YaF5qC45LiN5pSv5oyB6LCD5pW05aaC5q2k5LmL5aSn55qE5paH5Lu257O757ufIgorCisjOiByZXNpemUvb25saW5lLmM6MTM3CisjLCBjLWZvcm1hdAorbXNnaWQgIndoaWxlIHRyeWluZyB0byBvcGVuIG1vdW50cG9pbnQgJXMiCittc2dzdHIgIuWwneivleaJk+W8gOaMgui9veeCuSAlcyDml7YiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoxNDIKKyMsIGMtZm9ybWF0Cittc2dpZCAiT2xkIHJlc2l6ZSBpbnRlcmZhY2UgcmVxdWVzdGVkLlxuIgorbXNnc3RyICLkvb/nlKjml6fniYjmnKznmoTmlLnlj5jlpKflsI/mk43kvZzmjqXlj6PjgIJcbiIKKworIzogcmVzaXplL29ubGluZS5jOjE2MSByZXNpemUvb25saW5lLmM6MTc4Cittc2dpZCAiUGVybWlzc2lvbiBkZW5pZWQgdG8gcmVzaXplIGZpbGVzeXN0ZW0iCittc2dzdHIgIuayoeacieiwg+aVtOaWh+S7tuezu+e7n+Wkp+Wwj+eahOadg+mZkCIKKworIzogcmVzaXplL29ubGluZS5jOjE2NCByZXNpemUvb25saW5lLmM6MTg0Cittc2dpZCAiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIKK21zZ3N0ciAi5qOA5p+l5piv5ZCm5pSv5oyB5Zyo57q/6LCD5pW05paH5Lu257O757uf5aSn5bCP5pe2IgorCisjOiByZXNpemUvb25saW5lLmM6MTgxCittc2dpZCAiS2VybmVsIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIgorbXNnc3RyICLlhoXmoLjkuI3mlK/mjIHlnKjnur/osIPmlbTlpKflsI8iCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyMjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiUGVyZm9ybWluZyBhbiBvbi1saW5lIHJlc2l6ZSBvZiAlcyB0byAlbGx1ICglZGspIGJsb2Nrcy5cbiIKK21zZ3N0ciAi5Zyo57q/6LCD5pW0ICVzIOeahOWkp+Wwj+S4uiAlbGx1IOWdl++8iOavj+Wdl+S4uiAlZGvvvIlcbiIKKworIzogcmVzaXplL29ubGluZS5jOjIzMAorbXNnaWQgIldoaWxlIHRyeWluZyB0byBleHRlbmQgdGhlIGxhc3QgZ3JvdXAiCittc2dzdHIgIuWwneivleaJqeWxleacgOWQjuS4gOS4que7hOaXtiIKKworIzogcmVzaXplL29ubGluZS5jOjI4NAorIywgYy1mb3JtYXQKK21zZ2lkICJXaGlsZSB0cnlpbmcgdG8gYWRkIGdyb3VwICMlZCIKK21zZ3N0ciAi5bCd6K+V5re75Yqg57uEICMlZCDml7YiCisKKyM6IHJlc2l6ZS9vbmxpbmUuYzoyOTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiIgorIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgbm90IHN1cHBvcnRlZCBvbiAiCisidGhpcyBzeXN0ZW0uXG4iCittc2dzdHIgIuaWh+S7tuezu+e7nyAlcyDooqvmjILovb3lnKggJXPvvIzlubbkuJTov5nkuKrns7vnu5/kuI3mlK/mjIHlnKjnur/osIPmlbTlpKflsI/jgIJcbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjc1OQorIywgYy1mb3JtYXQKK21zZ2lkICJpbm9kZXMgKCVsbHUpIG11c3QgYmUgbGVzcyB0aGFuICV1IgorbXNnc3RyICJpbm9kZeaVsO+8iCVsbHXvvInlv4XpobvlsI/kuo4gJXUzMiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEwMzcKK21zZ2lkICJyZXNlcnZlZCBibG9ja3MiCittc2dzdHIgIuS/neeVmeWdlyIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjEyODEKK21zZ2lkICJtZXRhLWRhdGEgYmxvY2tzIgorbXNnc3RyICLlhYPmlbDmja7lnZciCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoxMzg1IHJlc2l6ZS9yZXNpemUyZnMuYzoyMzE3Cittc2dpZCAibmV3IG1ldGEgYmxvY2tzIgorbXNnc3RyICLmlrDnmoTlhYPmlbDmja7lnZciCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNTQwCittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbiEgIE5vIHNiIGluIGxhc3Qgc3VwZXJfc3BhcnNlIGJnP1xuIgorbXNnc3RyICLkuI3lupTlvZPlh7rnjrDnmoTmg4XlhrXvvJrmnIDlkI7kuIDkuKrliIbmlaPlvI/otoXnuqflnZflnZfnu4TkuK3msqHmnInotoXnuqflnZfvvIFcbiIKKworIzogcmVzaXplL3Jlc2l6ZTJmcy5jOjI1NDUKK21zZ2lkICJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiBzdXBlcl9zcGFyc2UgYmc/XG4iCittc2dzdHIgIuS4jeW6lOW9k+WHuueOsOeahOaDheWGte+8muWIhuaVo+W8j+i2hee6p+Wdl+Wdl+e7hOS4reacieacqumihOacn+eahG9sZF9kZXNj77yBXG4iCisKKyM6IHJlc2l6ZS9yZXNpemUyZnMuYzoyNjE4Cittc2dpZCAiU2hvdWxkIG5ldmVyIGhhcHBlbjogcmVzaXplIGlub2RlIGNvcnJ1cHQhXG4iCittc2dzdHIgIuS4jeW6lOWHuueOsOeahOmUmeivr++8muaUueWPmGlub2Rl5aSn5bCP5pe25Y+R546w5pyJ5pWw5o2u5o2f5Z2P77yBXG4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMQorIywgZnV6enkKK21zZ2lkICJFWFQyRlMgTGlicmFyeSB2ZXJzaW9uIDEuNDMuMiIKK21zZ3N0ciAiRVhUMkZTIOW6k+eJiOacrCAxLjQzIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDJfZmlsc3lzIHN0cnVjdHVyZSIKK21zZ3N0ciAiZXh0Ml9maWxzeXPnu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgYmFkYmxvY2tzX2xpc3Qgc3RydWN0dXJlIgorbXNnc3RyICJiYWRibG9ja3NfbGlzdOe7k+aehOS9k+S4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBiYWRibG9ja3NfaXRlcmF0ZSBzdHJ1Y3R1cmUiCittc2dzdHIgImJhZGJsb2Nrc19pdGVyYXRl57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlub2RlX3NjYW4gc3RydWN0dXJlIgorbXNnc3RyICJpbm9kZV9zY2Fu57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGlvX2NoYW5uZWwgc3RydWN0dXJlIgorbXNnc3RyICJpb19jaGFubmVs57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIHVuaXggaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgInVuaXggaW9fY2hhbm5lbOe7k+aehOS9k+S4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpb19tYW5hZ2VyIHN0cnVjdHVyZSIKK21zZ3N0ciAiaW9fbWFuYWdlcue7k+aehOS9k+S4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBibG9ja19iaXRtYXAgc3RydWN0dXJlIgorbXNnc3RyICJibG9ja19iaXRtYXDnu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGVfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiaW5vZGVfYml0bWFw57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGdlbmVyaWNfYml0bWFwIHN0cnVjdHVyZSIKK21zZ3N0ciAiZ2VuZXJpY19iaXRtYXDnu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyMgorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgdGVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAi5rWL6K+VaW9fY2hhbm5lbOe7k+aehOS9k+S4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBkaXJlY3RvcnkgYmxvY2sgbGlzdCBzdHJ1Y3R1cmUiCittc2dzdHIgIuebruW9leWdl+WIl+ihqOe7k+aehOS9k+S4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjI0Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciBpY291bnQgc3RydWN0dXJlIgorbXNnc3RyICJpY291bnTnu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgUG93ZXJxdWVzdCBpb19jaGFubmVsIHN0cnVjdHVyZSIKK21zZ3N0ciAiUG93ZXJxdWVzdCBpb19jaGFubmVs57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MjYKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIGV4dDIgZmlsZSBzdHJ1Y3R1cmUiCittc2dzdHIgImV4dDLmlofku7bnu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyNworbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgRXh0MiBJbWFnZSBIZWFkZXIiCittc2dzdHIgImV4dDLplZzlg4/lpLTkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgaW5vZGUgaW9fY2hhbm5lbCBzdHJ1Y3R1cmUiCittc2dzdHIgImlub2RlIGlvX2NoYW5uZWznu5PmnoTkvZPkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoyOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgaGFuZGxlIgorbXNnc3RyICJleHQ0IGV4dGVudOWPpeafhOS4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayIKK21zZ3N0ciAi6LaF57qn5Z2X5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzEKK21zZ2lkICJGaWxlc3lzdGVtIHJldmlzaW9uIHRvbyBoaWdoIgorbXNnc3RyICLmlofku7bns7vnu5/niYjmnKzlpKrpq5giCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMgorbXNnaWQgIkF0dGVtcHQgdG8gd3JpdGUgdG8gZmlsZXN5c3RlbSBvcGVuZWQgcmVhZC1vbmx5IgorbXNnc3RyICLlsJ3or5XlhpnlhaXliLDlj6ror7vnmoTmlofku7bns7vnu58iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzozMworbXNnaWQgIkNhbid0IHJlYWQgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIuaXoOazleivu+WPlue7hOaPj+i/sOespiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM0Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgZ3JvdXAgZGVzY3JpcHRvcnMiCittc2dzdHIgIuaXoOazleWGmeWFpee7hOaPj+i/sOespiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM1Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi57uE5o+P6L+w56ym5o2f5Z2P77ya5Z2X5L2N5Zu+5Lit5pyJ5Z2P5Z2XIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MzYKK21zZ2lkICJDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgYml0bWFwIgorbXNnc3RyICLnu4Tmj4/ov7DnrKbmjZ/lnY/vvJppbm9kZeS9jeWbvuS4reacieWdj+WdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM3Cittc2dpZCAiQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlIgorbXNnc3RyICLnu4Tmj4/ov7DnrKbmjZ/lnY/vvJppbm9kZeihqOS4reacieWdj+WdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM4Cittc2dpZCAiQ2FuJ3Qgd3JpdGUgYW4gaW5vZGUgYml0bWFwIgorbXNnc3RyICLml6Dms5XlhpnlhaVpbm9kZeS9jeWbviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjM5Cittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSBiaXRtYXAiCittc2dzdHIgIuaXoOazleivu+WPlmlub2Rl5L2N5Zu+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDAKK21zZ2lkICJDYW4ndCB3cml0ZSBhIGJsb2NrIGJpdG1hcCIKK21zZ3N0ciAi5peg5rOV5YaZ5YWl5Z2X5L2N5Zu+IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDEKK21zZ2lkICJDYW4ndCByZWFkIGEgYmxvY2sgYml0bWFwIgorbXNnc3RyICLml6Dms5Xor7vlj5blnZfkvY3lm74iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0MgorbXNnaWQgIkNhbid0IHdyaXRlIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICLml6Dms5XlhpnlhaVpbm9kZeihqCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjQzCittc2dpZCAiQ2FuJ3QgcmVhZCBhbiBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi5peg5rOV6K+75Y+WaW5vZGXooagiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NAorbXNnaWQgIkNhbid0IHJlYWQgbmV4dCBpbm9kZSIKK21zZ3N0ciAi5peg5rOV6K+75Y+W5LiL5LiA5LiqaW5vZGUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NQorbXNnaWQgIkZpbGVzeXN0ZW0gaGFzIHVuZXhwZWN0ZWQgYmxvY2sgc2l6ZSIKK21zZ3N0ciAi5paH5Lu257O757uf55qE5Z2X5aSn5bCP5byC5bi4IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDYKK21zZ2lkICJFWFQyIGRpcmVjdG9yeSBjb3JydXB0ZWQiCittc2dzdHIgIkVYVDLnm67lvZXmjZ/lnY8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0NworbXNnaWQgIkF0dGVtcHQgdG8gcmVhZCBibG9jayBmcm9tIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgcmVhZCIKK21zZ3N0ciAi5bCd6K+V6K+75Y+W5paH5Lu257O757uf5Z2X55qE5pON5L2c6L+H5pep57uT5p2fIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NDgKK21zZ2lkICJBdHRlbXB0IHRvIHdyaXRlIGJsb2NrIHRvIGZpbGVzeXN0ZW0gcmVzdWx0ZWQgaW4gc2hvcnQgd3JpdGUiCittc2dzdHIgIuWwneivlXjmlofku7bns7vnu5/lnZfnmoTmk43kvZzov4fml6nnu5PmnZ8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo0OQorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gdGhlIGRpcmVjdG9yeSIKK21zZ3N0ciAi55uu5b2V5Lit5rKh5pyJ5Y+v55So56m66Ze0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTAKK21zZ2lkICJJbm9kZSBiaXRtYXAgbm90IGxvYWRlZCIKK21zZ3N0ciAi5pyq5Yqg6L29aW5vZGXkvY3lm74iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MQorbXNnaWQgIkJsb2NrIGJpdG1hcCBub3QgbG9hZGVkIgorbXNnc3RyICLmnKrliqDovb3lnZfkvY3lm74iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1MgorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIgorbXNnc3RyICLpnZ7ms5XnmoRpbm9kZeaVsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjUzCittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIiCittc2dzdHIgIumdnuazleeahOWdl+aVsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU0Cittc2dpZCAiSW50ZXJuYWwgZXJyb3IgaW4gZXh0MmZzX2V4cGFuZF9kaXIiCittc2dzdHIgImV4dDJmc19leHBhbmRfZGly5Lit5Ye6546w5YaF6YOo6ZSZ6K+vIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTUKK21zZ2lkICJOb3QgZW5vdWdoIHNwYWNlIHRvIGJ1aWxkIHByb3Bvc2VkIGZpbGVzeXN0ZW0iCittc2dzdHIgIuayoeaciei2s+Wkn+eahOepuumXtOeUqOS6juW7uueri+aMh+WumueahOaWh+S7tuezu+e7nyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjU2Cittc2dpZCAiSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCIKK21zZ3N0ciAi5Lyg6YCS57uZZXh0MmZzX21hcmtfYmxvY2tfYml0bWFw55qE5Z2X5pWw5Li66Z2e5rOV5YC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTcKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAiCittc2dzdHIgIuS8oOmAkue7mWV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFw55qE5Z2X5pWw5Li66Z2e5rOV5YC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NTgKK21zZ2lkICJJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwIgorbXNnc3RyICLkvKDpgJLnu5lleHQyZnNfdGVzdF9ibG9ja19iaXRtYXDnmoTlnZfmlbDkuLrpnZ7ms5XlgLwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo1OQorbXNnaWQgIklsbGVnYWwgaW5vZGUgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19pbm9kZV9iaXRtYXAiCittc2dzdHIgIuS8oOmAkue7mWV4dDJmc19tYXJrX2lub2RlX2JpdG1hcOeahOWdl+aVsOS4uumdnuazleWAvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYwCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwIgorbXNnc3RyICLkvKDpgJLnu5lleHQyZnNfdW5tYXJrX2lub2RlX2JpdG1hcOeahOWdl+aVsOS4uumdnuazleWAvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYxCittc2dpZCAiSWxsZWdhbCBpbm9kZSBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2lub2RlX2JpdG1hcCIKK21zZ3N0ciAi5Lyg6YCS57uZZXh0MmZzX3Rlc3RfaW5vZGVfYml0bWFw55qE5Z2X5pWw5Li66Z2e5rOV5YC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjIKK21zZ2lkICJBdHRlbXB0IHRvIGZ1ZGdlIGVuZCBvZiBibG9jayBiaXRtYXAgcGFzdCB0aGUgcmVhbCBlbmQiCittc2dzdHIgIuWwneivleWhq+WFheWdl+S9jeWbvuWwvumDqOaXtui2hei/h+S6huecn+Wunui+ueeVjCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjYzCittc2dpZCAiQXR0ZW1wdCB0byBmdWRnZSBlbmQgb2YgaW5vZGUgYml0bWFwIHBhc3QgdGhlIHJlYWwgZW5kIgorbXNnc3RyICLlsJ3or5XloavlhYVpbm9kZeS9jeWbvuWwvumDqOaXtui2hei/h+S6huecn+Wunui+ueeVjCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY0Cittc2dpZCAiSWxsZWdhbCBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi5Y+R546w6Z2e5rOV55qE6ZO+5o6l5Z2XIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjUKK21zZ2lkICJJbGxlZ2FsIGRvdWJseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi5Y+R546w5LqG6Z2e5rOV55qE5LqM5qyh6ZO+5o6l5Z2XIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjYKK21zZ2lkICJJbGxlZ2FsIHRyaXBseSBpbmRpcmVjdCBibG9jayBmb3VuZCIKK21zZ3N0ciAi5Y+R546w6Z2e5rOV55qE5LiJ5qyh6ZO+5o6l5Z2XIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NjcKK21zZ2lkICJCbG9jayBiaXRtYXBzIGFyZSBub3QgdGhlIHNhbWUiCittc2dzdHIgIuWdl+S9jeWbvuS4jeebuOWQjCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY4Cittc2dpZCAiSW5vZGUgYml0bWFwcyBhcmUgbm90IHRoZSBzYW1lIgorbXNnc3RyICJpbm9kZeS9jeWbvuS4jeebuOWQjCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjY5Cittc2dpZCAiSWxsZWdhbCBvciBtYWxmb3JtZWQgZGV2aWNlIG5hbWUiCittc2dzdHIgIuiuvuWkh+WQjemdnuazleaIluagvOW8j+mUmeivryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcwCittc2dpZCAiQSBibG9jayBncm91cCBpcyBtaXNzaW5nIGFuIGlub2RlIHRhYmxlIgorbXNnc3RyICJJbm9kZeihqOS4ree8uuWwkeS4gOS4quWdl+e7hCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjcxCittc2dpZCAiVGhlIGV4dDIgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICJleHQy6LaF57qn5Z2X5o2f5Z2PIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzIKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX21hcmtfZ2VuZXJpY19iaXRtYXAiCittc2dzdHIgIuS8oOmAkue7mWV4dDJmc19tYXJrX2dlbmVyaWNfYml0bWFw55qE6YCa55So5L2N5pWw5Li65Li66Z2e5rOV5YC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzMKK21zZ2lkICJJbGxlZ2FsIGdlbmVyaWMgYml0IG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcCIKK21zZ3N0ciAi5Lyg6YCS57uZZXh0MmZzX3VubWFya19nZW5lcmljX2JpdG1hcOeahOmAmueUqOS9jeaVsOS4uuS4uumdnuazleWAvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc0Cittc2dpZCAiSWxsZWdhbCBnZW5lcmljIGJpdCBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2dlbmVyaWNfYml0bWFwIgorbXNnc3RyICLkvKDpgJLnu5lleHQyZnNfdGVzdF9nZW5lcmljX2JpdG1hcOeahOmAmueUqOS9jeaVsOS4uuS4uumdnuazleWAvCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc1Cittc2dpZCAiVG9vIG1hbnkgc3ltYm9saWMgbGlua3MgZW5jb3VudGVyZWQuIgorbXNnc3RyICLlj5HnjrDkuobov4flpJrnmoTnrKblj7fpk77mjqXjgIIiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NgorbXNnaWQgIlRoZSBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIG5vdCBoYW5kbGUgdGhpcyBjYXNlIgorbXNnc3RyICLlm57osIPlh73mlbDlsIbkuI3kvJrlpITnkIbov5nkuKrmg4XlhrUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo3NworbXNnaWQgIlRoZSBpbm9kZSBpcyBmcm9tIGEgYmFkIGJsb2NrIGluIHRoZSBpbm9kZSB0YWJsZSIKK21zZ3N0ciAi6K+laW5vZGXmnaXoh6ppbm9kZeihqOS4reeahOS4gOS4quWdj+WdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjc4Cittc2dpZCAiRmlsZXN5c3RlbSBoYXMgdW5zdXBwb3J0ZWQgZmVhdHVyZShzKSIKK21zZ3N0ciAi5paH5Lu257O757uf5pyJ5LiN6KKr5pSv5oyB55qE54m55oCnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6NzkKK21zZ2lkICJGaWxlc3lzdGVtIGhhcyB1bnN1cHBvcnRlZCByZWFkLW9ubHkgZmVhdHVyZShzKSIKK21zZ3N0ciAi5paH5Lu257O757uf5pyJ5LiN6KKr5pSv5oyB55qE5Y+q6K+754m55oCnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODAKK21zZ2lkICJJTyBDaGFubmVsIGZhaWxlZCB0byBzZWVrIG9uIHJlYWQgb3Igd3JpdGUiCittc2dzdHIgIkkvT+mAmumBk+WumuS9jeivu+WPli/lhpnlhaXkvY3nva7ml7blpLHotKUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MQorbXNnaWQgIk1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCIKK21zZ3N0ciAi5YaF5a2Y5YiG6YWN5Ye66ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkiCittc2dzdHIgIuS8oOe7meS6hmV4dDLlupPml6DmlYjnmoTlj4LmlbAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4MworbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIuaXoOazleS4umV4dDLmlofku7bns7vnu5/liIbphY3lnZciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NAorbXNnaWQgIkNvdWxkIG5vdCBhbGxvY2F0ZSBpbm9kZSBpbiBleHQyIGZpbGVzeXN0ZW0iCittc2dzdHIgIuaXoOazleS4umV4dDLmlofku7bns7vnu5/liIbphY1pbm9kZSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg1Cittc2dpZCAiRXh0MiBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkiCittc2dzdHIgImV4dDIgaW5vZGXkuI3kuLrnm67lvZUiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4NgorbXNnaWQgIlRvbyBtYW55IHJlZmVyZW5jZXMgaW4gdGFibGUiCittc2dzdHIgIuihqOS4reacieWkquWkmueahOW8leeUqCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjg3Cittc2dpZCAiRmlsZSBub3QgZm91bmQgYnkgZXh0Ml9sb29rdXAiCittc2dzdHIgImV4dDJfbG9va3Vw5pyq5Y+R546w5paH5Lu2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6ODgKK21zZ2lkICJGaWxlIG9wZW4gcmVhZC1vbmx5IgorbXNnc3RyICLmlofku7bku6Xlj6ror7vmqKHlvI/miZPlvIAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo4OQorbXNnaWQgIkV4dDIgZGlyZWN0b3J5IGJsb2NrIG5vdCBmb3VuZCIKK21zZ3N0ciAi5pyq5om+5YiwZXh0MuebruW9leWdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkwCittc2dpZCAiRXh0MiBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMiCittc2dzdHIgImV4dDLnm67lvZXlnZflt7LlrZjlnKgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5MQorbXNnaWQgIlVuaW1wbGVtZW50ZWQgZXh0MiBsaWJyYXJ5IGZ1bmN0aW9uIgorbXNnc3RyICLmnKrlrp7njrDnmoRleHQy5bqT5Ye95pWwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTIKK21zZ2lkICJVc2VyIGNhbmNlbCByZXF1ZXN0ZWQiCittc2dzdHIgIueUqOaIt+WPlua2iOS6huaTjeS9nCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjkzCittc2dpZCAiRXh0MiBmaWxlIHRvbyBiaWciCittc2dzdHIgImV4dDLmlofku7blpKrlpKciCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NAorbXNnaWQgIlN1cHBsaWVkIGpvdXJuYWwgZGV2aWNlIG5vdCBhIGJsb2NrIGRldmljZSIKK21zZ3N0ciAi5oyH5a6a55qE5pel5b+X6K6+5aSH5LiN5piv5Z2X6K6+5aSHIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTUKK21zZ2lkICJKb3VybmFsIHN1cGVyYmxvY2sgbm90IGZvdW5kIgorbXNnc3RyICLml6Xlv5fotoXnuqflnZfmnKrmib7liLAiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5NgorbXNnaWQgIkpvdXJuYWwgbXVzdCBiZSBhdCBsZWFzdCAxMDI0IGJsb2NrcyIKK21zZ3N0ciAi5pel5b+X5aSn5bCP6Iez5bCR5Li6MTAyNOS4quWdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjk3Cittc2dpZCAiVW5zdXBwb3J0ZWQgam91cm5hbCB2ZXJzaW9uIgorbXNnc3RyICLkuI3mlK/mjIHnmoTml6Xlv5fniYjmnKwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzo5OAorbXNnaWQgIkVycm9yIGxvYWRpbmcgZXh0ZXJuYWwgam91cm5hbCIKK21zZ3N0ciAi5bCd6K+V5omT5byA5aSW6YOo5pel5b+X5pe2IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6OTkKK21zZ2lkICJKb3VybmFsIG5vdCBmb3VuZCIKK21zZ3N0ciAi5pel5b+X5pyq5om+5YiwIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTAwCittc2dpZCAiRGlyZWN0b3J5IGhhc2ggdW5zdXBwb3J0ZWQiCittc2dzdHIgIuS4jeaUr+aMgeebruW9lWhhc2giCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDEKK21zZ2lkICJJbGxlZ2FsIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBudW1iZXIiCittc2dzdHIgIumdnuazleeahOaJqeWxleWxnuaAp+Wdl+WPtyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMgorbXNnaWQgIkNhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIgorbXNnc3RyICLml6Dms5XliJvlu7rlkKvmnInmjIflrpppbm9kZeaVsOeahOaWh+S7tuezu+e7nyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwMworbXNnaWQgIkUyaW1hZ2Ugc25hcHNob3Qgbm90IGluIHVzZSIKK21zZ3N0ciAi5pyq5L2/55SoZTJpbWFnZeW/q+eFpyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNAorbXNnaWQgIlRvbyBtYW55IHJlc2VydmVkIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzIgorbXNnc3RyICLnu4Tmj4/ov7DnrKbnmoTkv53nlZnlnZflpKrlpJoiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDUKK21zZ2lkICJSZXNpemUgaW5vZGUgaXMgY29ycnVwdCIKK21zZ3N0ciAi5pS55Y+YaW5vZGXlpKflsI/ml7bmnInmlbDmja7mjZ/lnY8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDYKK21zZ2lkICJUcmllZCB0byBzZXQgYmxvY2sgYm1hcCB3aXRoIG1pc3NpbmcgaW5kaXJlY3QgYmxvY2siCittc2dzdHIgIuWwneivleWcqOWdl+S9jeWbvuS4reiuvue9ruS4ouWkseeahOmTvuaOpeWdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEwNworbXNnaWQgIlREQjogU3VjY2VzcyIKK21zZ3N0ciAiVERC77ya5oiQ5YqfIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTA4Cittc2dpZCAiVERCOiBDb3JydXB0IGRhdGFiYXNlIgorbXNnc3RyICJURELvvJrmlbDmja7lupPmjZ/lnY8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMDkKK21zZ2lkICJUREI6IElPIEVycm9yIgorbXNnc3RyICJURELvvJpJL0/plJnor68iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTAKK21zZ2lkICJUREI6IExvY2tpbmcgZXJyb3IiCittc2dzdHIgIlREQu+8mumUgeWumumUmeivryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExMQorbXNnaWQgIlREQjogT3V0IG9mIG1lbW9yeSIKK21zZ3N0ciAiVERC77ya5YaF5a2Y6ICX5bC9IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTEyCittc2dpZCAiVERCOiBSZWNvcmQgZXhpc3RzIgorbXNnc3RyICJURELvvJrorrDlvZXlt7LlrZjlnKgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTMKK21zZ2lkICJUREI6IExvY2sgZXhpc3RzIG9uIG90aGVyIGtleXMiCittc2dzdHIgIlREQu+8mumUgeW3suWtmOWcqOS6juWFtuS7lumUriIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNAorbXNnaWQgIlREQjogSW52YWxpZCBwYXJhbWV0ZXIiCittc2dzdHIgIlREQu+8muaXoOaViOeahOWPguaVsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNQorbXNnaWQgIlREQjogUmVjb3JkIGRvZXMgbm90IGV4aXN0IgorbXNnc3RyICJURELvvJrorrDlvZXkuI3lrZjlnKgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMTYKK21zZ2lkICJUREI6IFdyaXRlIG5vdCBwZXJtaXR0ZWQiCittc2dzdHIgIlREQu+8muS4jeWFgeiuuOWGmeWFpSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExNworbXNnaWQgIkV4dDJmcyBkaXJlY3RvcnkgYmxvY2sgbGlzdCBpcyBlbXB0eSIKK21zZ3N0ciAiZXh0MuaWh+S7tuezu+e7n+ebruW9leWdl+WIl+ihqOS4uuepuiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOAorbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IGEgYmxvY2sgbWFwcGluZyB2aWEgYSByZWFkLW9ubHkgYmxvY2sgaXRlcmF0b3IiCittc2dzdHIgIuS8geWbvumAmui/h+WPquivu+eahOWdl+i/reS7o+WZqOS/ruaUueWdl+aYoOWwhCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjExOQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0NCBleHRlbnQgc2F2ZWQgcGF0aCIKK21zZ3N0ciAiZXh0NCBleHRlbnTkv53lrZjot6/lvoTnmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjAKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBnZW5lcmljIGJpdG1hcCIKK21zZ3N0ciAiNjTkvY3pgJrnlKjkvY3lm77kuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjEKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgZm9yIDY0LWJpdCBibG9jayBiaXRtYXAiCittc2dzdHIgIjY05L2N5Z2X6YCa55So5L2N5Zu+5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIyCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIGZvciA2NC1iaXQgaW5vZGUgYml0bWFwIgorbXNnc3RyICI2NOS9jWlub2Rl6YCa55So5L2N5Zu+5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTIzCittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xMyIKK21zZ3N0ciAi5bm75pWw6ZSZ6K+v77yI5L+d55WZ57yW5Y+377yaMTPvvIkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjQKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE0IgorbXNnc3RyICLlubvmlbDplJnor6/vvIjkv53nlZnnvJblj7fvvJoxNO+8iSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyNQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTUiCittc2dzdHIgIuW5u+aVsOmUmeivr++8iOS/neeVmee8luWPt++8mjE177yJIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI2Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xNiIKK21zZ3N0ciAi5bm75pWw6ZSZ6K+v77yI5L+d55WZ57yW5Y+377yaMTbvvIkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMjcKK21zZ2lkICJXcm9uZyBtYWdpYyBudW1iZXIgLS0tIFJFU0VSVkVEXzE3IgorbXNnc3RyICLlubvmlbDplJnor6/vvIjkv53nlZnnvJblj7fvvJoxN++8iSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEyOAorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciAtLS0gUkVTRVJWRURfMTgiCittc2dzdHIgIuW5u+aVsOmUmeivr++8iOS/neeVmee8luWPt++8mjE477yJIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTI5Cittc2dpZCAiV3JvbmcgbWFnaWMgbnVtYmVyIC0tLSBSRVNFUlZFRF8xOSIKK21zZ3N0ciAi5bm75pWw6ZSZ6K+v77yI5L+d55WZ57yW5Y+377yaMTnvvIkiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzAKK21zZ2lkICJDb3JydXB0IGV4dGVudCBoZWFkZXIiCittc2dzdHIgImV4dGVudOWktOaNn+WdjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzMQorbXNnaWQgIkNvcnJ1cHQgZXh0ZW50IGluZGV4IgorbXNnc3RyICJleHRlbnTntKLlvJXmjZ/lnY8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzIKK21zZ2lkICJDb3JydXB0IGV4dGVudCIKK21zZ3N0ciAiZXh0ZW505o2f5Z2PIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTMzCittc2dpZCAiTm8gZnJlZSBzcGFjZSBpbiBleHRlbnQgbWFwIgorbXNnc3RyICJleHRlbnTmmKDlsITkuK3msqHmnInlj6/nlKjnqbrpl7QiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzQKK21zZ2lkICJJbm9kZSBkb2VzIG5vdCB1c2UgZXh0ZW50cyIKK21zZ3N0ciAiaW5vZGXmnKrkvb/nlKhleHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzUKK21zZ2lkICJObyAnbmV4dCcgZXh0ZW50IgorbXNnc3RyICLmib7kuI3liLDigJzlkI7kuIDkuKrigJ1leHRlbnQiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxMzYKK21zZ2lkICJObyAncHJldmlvdXMnIGV4dGVudCIKK21zZ3N0ciAi5om+5LiN5Yiw4oCc5YmN5LiA5Liq4oCdZXh0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTM3Cittc2dpZCAiTm8gJ3VwJyBleHRlbnQiCittc2dzdHIgIuaJvuS4jeWIsOKAnOS4iuS4gOS4quKAnWV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOAorbXNnaWQgIk5vICdkb3duJyBleHRlbnQiCittc2dzdHIgIuaJvuS4jeWIsOKAnOS4i+S4gOS4quKAnWV4dGVudCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjEzOQorbXNnaWQgIk5vIGN1cnJlbnQgbm9kZSIKK21zZ3N0ciAi5b2T5YmN6IqC54K55LiN5a2Y5ZyoIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQwCittc2dpZCAiRXh0MmZzIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICJleHQy5paH5Lu257O757uf5pON5L2c5LiN5pSv5oyBIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQxCittc2dpZCAiTm8gcm9vbSB0byBpbnNlcnQgZXh0ZW50IGluIG5vZGUiCittc2dzdHIgIuayoeaciei2s+Wkn+epuumXtOeUqOS6juaPkuWFpWV4dGVudOWIsOiKgueCuSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0MgorbXNnaWQgIlNwbGl0dGluZyB3b3VsZCByZXN1bHQgaW4gZW1wdHkgbm9kZSIKK21zZ3N0ciAi5YiG5Ymy5pON5L2c5bCG5a+86Ie056m66IqC54K55Lqn55SfIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQzCittc2dpZCAiRXh0ZW50IG5vdCBmb3VuZCIKK21zZ3N0ciAi5pyq5om+5YiwZXh0ZW50IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ0Cittc2dpZCAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMiCittc2dzdHIgIuWQq+aciWV4dGVudOeahGlub2Rl5LiN5pSv5oyB5q2k5pON5L2cIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTQ1Cittc2dpZCAiRXh0ZW50IGxlbmd0aCBpcyBpbnZhbGlkIgorbXNnc3RyICJleHRlbnTplb/luqbml6DmlYgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDYKK21zZ2lkICJJL08gQ2hhbm5lbCBkb2VzIG5vdCBzdXBwb3J0IDY0LWJpdCBibG9jayBudW1iZXJzIgorbXNnc3RyICJJL0/pgJrpgZPkuI3mlK/mjIE2NOS9jeihqOekuueahOWdl+aVsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0NworbXNnaWQgIkNhbid0IGNoZWNrIGlmIGZpbGVzeXN0ZW0gaXMgbW91bnRlZCBkdWUgdG8gbWlzc2luZyBtdGFiIGZpbGUiCittc2dzdHIgIueUseS6jm10YWLmlofku7bnvLrlpLHvvIzml6Dms5Xmo4Dpqozmlofku7bns7vnu5/mmK/lkKblt7LmjILovb0iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNDgKK21zZ2lkICJGaWxlc3lzdGVtIHRvbyBsYXJnZSB0byB1c2UgbGVnYWN5IGJpdG1hcHMiCittc2dzdHIgIuaWh+S7tuezu+e7n+WkquWkp++8jOaXoOazleS9v+eUqOS8oOe7n+S9jeWbviIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE0OQorbXNnaWQgIk1NUDogaW52YWxpZCBtYWdpYyBudW1iZXIiCittc2dzdHIgIk1NUO+8muaXoOaViOeahOW5u+aVsCIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MAorbXNnaWQgIk1NUDogZGV2aWNlIGN1cnJlbnRseSBhY3RpdmUiCittc2dzdHIgIk1NUO+8muiuvuWkh+W9k+WJjeS4uua0u+WKqOeKtuaAgSIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1MQorbXNnaWQgIk1NUDogZnNjayBiZWluZyBydW4iCittc2dzdHIgIk1NUO+8mmZzY2vmraPlnKjov5DooYwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTIKK21zZ2lkICJNTVA6IGJsb2NrIG51bWJlciBiZXlvbmQgZmlsZXN5c3RlbSByYW5nZSIKK21zZ3N0ciAiTU1Q77ya5Z2X57yW5Y+36LaF5Ye65paH5Lu257O757uf6L6555WMIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTUzCittc2dpZCAiTU1QOiB1bmRlcmdvaW5nIGFuIHVua25vd24gb3BlcmF0aW9uIgorbXNnc3RyICJNTVDvvJrmraPlnKjov5vooYzmnKrnn6XnmoTmk43kvZwiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTQKK21zZ2lkICJNTVA6IGZpbGVzeXN0ZW0gc3RpbGwgaW4gdXNlIgorbXNnc3RyICJNTVDvvJrmlofku7bns7vnu5/mraPlnKjooqvkvb/nlKgiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTUKK21zZ2lkICJNTVA6IG9wZW4gd2l0aCBPX0RJUkVDVCBmYWlsZWQiCittc2dzdHIgIk1NUO+8muS9v+eUqE9fRElSRUNU5qCH5b+X5omT5byA5aSx6LSlIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU2Cittc2dpZCAiQmxvY2sgZ3JvdXAgZGVzY3JpcHRvciBzaXplIGluY29ycmVjdCIKK21zZ3N0ciAi5Z2X57uE5o+P6L+w56ym5aSn5bCP6ZSZ6K+vIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTU3Cittc2dpZCAiSW5vZGUgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggaW5vZGUiCittc2dzdHIgImlub2Rl5qCh6aqM5YC85LiOaW5vZGXoh6rouqvkuI3nrKYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNTgKK21zZ2lkICJJbm9kZSBiaXRtYXAgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggYml0bWFwIgorbXNnc3RyICJpbm9kZeS9jeWbvuagoemqjOWAvOS4juS9jeWbvuiHqui6q+S4jeespiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE1OQorbXNnaWQgIkV4dGVudCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQgYmxvY2siCittc2dzdHIgImV4dGVudOWdl+agoemqjOWAvOS4jmV4dGVudOWdl+iHqui6q+S4jeespiIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2MAorbXNnaWQgIkRpcmVjdG9yeSBibG9jayBkb2VzIG5vdCBoYXZlIHNwYWNlIGZvciBjaGVja3N1bSIKK21zZ3N0ciAi55uu5b2V5Z2X5Lit5rKh5pyJ55So5LqO5a2Y5YKo5qCh6aqM5YC855qE56m66Ze0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYxCittc2dpZCAiRGlyZWN0b3J5IGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGRpcmVjdG9yeSBibG9jayIKK21zZ3N0ciAi55uu5b2V5Z2X5qCh6aqM5YC85LiO55uu5b2V5Z2X6Ieq6Lqr5LiN56ymIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTYyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJsb2NrIgorbXNnc3RyICLmianlsZXlsZ7mgKflnZfmoKHpqozlgLzkuI7lsZ7mgKflnZfoh6rouqvkuI3nrKYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjMKK21zZ2lkICJTdXBlcmJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIHN1cGVyYmxvY2siCittc2dzdHIgImnotoXnuqflnZfmoKHpqozlgLzkuI7otoXnuqflnZfoh6rouqvkuI3nrKYiCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNjQKK21zZ2lkICJVbmtub3duIGNoZWNrc3VtIGFsZ29yaXRobSIKK21zZ3N0ciAi5L2N572u55qE5qCh6aqM5YC8566X5rOVIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY1Cittc2dpZCAiTU1QIGJsb2NrIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIE1NUCBibG9jayIKK21zZ3N0ciAiTU1Q5Z2X5qCh6aqM5YC85LiOTU1Q5Z2X6Ieq6Lqr5LiN56ymIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY2Cittc2dpZCAiRXh0MiBmaWxlIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICJleHQy5paH5Lu25bey5a2Y5ZyoIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY3Cittc2dpZCAiQmxvY2sgYml0bWFwIGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGJpdG1hcCIKK21zZ3N0ciAi5Z2X5L2N5Zu+5qCh6aqM5YC85LiO5L2N5Zu+6Ieq6Lqr5LiN56ymIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTY4Cittc2dpZCAiQ2Fubm90IGl0ZXJhdGUgZGF0YSBibG9ja3Mgb2YgYW4gaW5vZGUgY29udGFpbmluZyBpbmxpbmUgZGF0YSIKK21zZ3N0ciAi5peg5rOV5a+55ZCr5pyJ5YaF6IGU5pWw5o2u55qEIGlub2RlIOS4reeahOaVsOaNruWdl+i/m+ihjOi/reS7oyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE2OQorbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBoYXMgYW4gaW52YWxpZCBuYW1lIGxlbmd0aCIKK21zZ3N0ciAi5omp5bGV5bGe5oCn5ZCN55qE6ZW/5bqm5peg5pWIIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcwCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbnZhbGlkIHZhbHVlIGxlbmd0aCIKK21zZ3N0ciAi5omp5bGV5bGe5oCn5ZCN55qE5YC85peg5pWIIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcxCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGhhcyBhbiBpbmNvcnJlY3QgaGFzaCIKK21zZ3N0ciAi5omp5bGV5bGe5oCn5Z2X55qE5qCh6aqM5YC86ZSZ6K+vIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTcyCittc2dpZCAiRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGhhcyBhIGJhZCBoZWFkZXIiCittc2dzdHIgIuaJqeWxleWxnuaAp+Wdl+eahOWktOmDqOacieivryIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3MworbXNnaWQgIkV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIgorbXNnc3RyICLmib7kuI3liLDmianlsZXlsZ7mgKfnmoTplK4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzQKK21zZ2lkICJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gc3RvcmUgZXh0ZW5kZWQgYXR0cmlidXRlIGRhdGEiCittc2dzdHIgIueUqOS6juWtmOWCqOaJqeWinuWxnuaAp+aVsOaNrueahOepuumXtOS4jei2syIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3NQorbXNnaWQgIkZpbGVzeXN0ZW0gaXMgbWlzc2luZyBleHRfYXR0ciBvciBpbmxpbmVfZGF0YSBmZWF0dXJlIgorbXNnc3RyICLmlofku7bns7vnu5/nvLrlsJEgZXh0X2F0dHIg5oiWIGlubGluZV9kYXRhIGZlYXR1cmUg54m55oCnIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTc2Cittc2dpZCAiSW5vZGUgZG9lc24ndCBoYXZlIGlubGluZSBkYXRhIgorbXNnc3RyICJJbm9kZSDkuK3kuI3lkKvlhoXogZTmlbDmja4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxNzcKK21zZ2lkICJObyBibG9jayBmb3IgYW4gaW5vZGUgd2l0aCBpbmxpbmUgZGF0YSIKK21zZ3N0ciAi5ZCr5pyJ5YaF6IGU5pWw5o2u55qEIGlub2RlIOS4jeWQq+WdlyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OAorbXNnaWQgIk5vIGZyZWUgc3BhY2UgaW4gaW5saW5lIGRhdGEiCittc2dzdHIgIuayoeaciei2s+Wkn+epuumXtOeUqOS6juWtmOWCqOWGheiBlOaVsOaNriIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE3OQorbXNnaWQgIldyb25nIG1hZ2ljIG51bWJlciBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZSIKK21zZ3N0ciAi5omp5aKe5bGe5oCn57uT5p6E5L2T5Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgwCittc2dpZCAiSW5vZGUgc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlIgorbXNnc3RyICJJbm9kZSDkuK3lkKvmnInml6DmlYjmlbDmja4iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODEKK21zZ2lkICJFeHRlbmRlZCBhdHRyaWJ1dGUgaGFzIGFuIGludmFsaWQgdmFsdWUgb2Zmc2V0IgorbXNnc3RyICLmianlop7lsZ7mgKfkuK3lkKvmnInml6DmlYjnmoTlgY/np7vph48iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODIKK21zZ2lkICJKb3VybmFsIGZsYWdzIGluY29uc2lzdGVudCIKK21zZ3N0ciAi5pel5b+X5qCH5b+X5LiN5LiA6Ie0IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTgzCittc2dpZCAiVW5kbyBmaWxlIGNvcnJ1cHQiCittc2dzdHIgIuaSpOmUgOaWh+S7tuaNn+WdjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NAorbXNnaWQgIldyb25nIHVuZG8gZmlsZSBmb3IgdGhpcyBmaWxlc3lzdGVtIgorbXNnc3RyICLmraTmlofku7bns7vnu5/nmoTmkqTplIDmlofku7bmnInor68iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODUKK21zZ2lkICJGaWxlIHN5c3RlbSBpcyBjb3JydXB0ZWQiCittc2dzdHIgIuaWh+S7tuezu+e7n+W3suaNn+WdjyIKKworIzogbGliL2V4dDJmcy9leHQyX2Vyci5jOjE4NgorbXNnaWQgIkJhZCBDUkMgZGV0ZWN0ZWQgaW4gZmlsZSBzeXN0ZW0iCittc2dzdHIgIuWcqOaWh+S7tuezu+e7n+S4reajgOa1i+WIsOmUmeivr+eahCBDUkMg5YC8IgorCisjOiBsaWIvZXh0MmZzL2V4dDJfZXJyLmM6MTg3Cittc2dpZCAiVGhlIGpvdXJuYWwgc3VwZXJibG9jayBpcyBjb3JydXB0IgorbXNnc3RyICLml6Xlv5fotoXnuqflnZflt7LmjZ/lnY8iCisKKyM6IGxpYi9leHQyZnMvZXh0Ml9lcnIuYzoxODgKKyMsIGZ1enp5Cittc2dpZCAiSW5vZGUgaXMgY29ycnVwdGVkIgorbXNnc3RyICLmlLnlj5hpbm9kZeWkp+Wwj+aXtuacieaVsOaNruaNn+WdjyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxMQorbXNnaWQgIlByb2ZpbGUgdmVyc2lvbiAwLjAiCittc2dzdHIgIumFjee9rueJiOacrCAwLjAiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTIKK21zZ2lkICJCYWQgbWFnaWMgdmFsdWUgaW4gcHJvZmlsZV9ub2RlIgorbXNnc3RyICJwcm9maWxlX25vZGXkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTMKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gbm90IGZvdW5kIgorbXNnc3RyICLmnKrmib7liLDphY3nva7ljLrmrrUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTQKK21zZ2lkICJQcm9maWxlIHJlbGF0aW9uIG5vdCBmb3VuZCIKK21zZ3N0ciAi5pyq5om+5Yiw6YWN572u5YWz57O7IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjE1Cittc2dpZCAiQXR0ZW1wdCB0byBhZGQgYSByZWxhdGlvbiB0byBub2RlIHdoaWNoIGlzIG5vdCBhIHNlY3Rpb24iCittc2dzdHIgIuS8geWbvuWwhuWFs+iBlOa3u+WKoOWIsOmdnuWMuuauteeahG5vZGUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MTYKK21zZ2lkICJBIHByb2ZpbGUgc2VjdGlvbiBoZWFkZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUiCittc2dzdHIgIuafkOS4qumFjee9ruWMuuauteeahOWktOmDqOWQq+aciemdnumbtuWAvCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxNworbXNnaWQgIkJhZCBsaW5rZWQgbGlzdCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIumFjee9rue7k+aehOS9k+S4reaciemUmeivr+eahOmTvuihqCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOAorbXNnaWQgIkJhZCBncm91cCBsZXZlbCBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIumFjee9rue7k+aehOS9k+S4reaciemUmeivr+eahOe7hOe6p+WIqyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoxOQorbXNnaWQgIkJhZCBwYXJlbnQgcG9pbnRlciBpbiBwcm9maWxlIHN0cnVjdHVyZXMiCittc2dzdHIgIumFjee9rue7k+aehOS9k+S4reaciemUmeivr+eahOeItuaMh+mSiCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMAorbXNnaWQgIkJhZCBtYWdpYyB2YWx1ZSBpbiBwcm9maWxlIGl0ZXJhdG9yIgorbXNnc3RyICLphY3nva7ov63ku6PlmajkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjEKK21zZ2lkICJDYW4ndCBzZXQgdmFsdWUgb24gc2VjdGlvbiBub2RlIgorbXNnc3RyICLml6Dms5Xorr7nva7ljLrmrrXoioLngrkiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjIKK21zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBwcm9maWxlIGxpYnJhcnkiCittc2dzdHIgIuS8oOe7meS6humFjee9ruW6k+aXoOaViOeahOWPguaVsCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyMworbXNnaWQgIkF0dGVtcHQgdG8gbW9kaWZ5IHJlYWQtb25seSBwcm9maWxlIgorbXNnc3RyICLkvIHlm77kv67mlLnor6Xlj6ror7vnmoTphY3nva4iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjQKK21zZ2lkICJQcm9maWxlIHNlY3Rpb24gaGVhZGVyIG5vdCBhdCB0b3AgbGV2ZWwiCittc2dzdHIgIumFjee9ruWMuuauteWktOmDqOS4jeWkhOS6jumhtue6pyIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzoyNQorbXNnaWQgIlN5bnRheCBlcnJvciBpbiBwcm9maWxlIHNlY3Rpb24gaGVhZGVyIgorbXNnc3RyICLphY3nva7ljLrmrrXlpLTpg6jkuK3mnInor63ms5XplJnor68iCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjYKK21zZ2lkICJTeW50YXggZXJyb3IgaW4gcHJvZmlsZSByZWxhdGlvbiIKK21zZ3N0ciAi6YWN572u5YWz57O75Lit5pyJ6K+t5rOV6ZSZ6K+vIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI3Cittc2dpZCAiRXh0cmEgY2xvc2luZyBicmFjZSBpbiBwcm9maWxlIgorbXNnc3RyICLphY3nva7kuK3lj5HnjrDpop3lpJbnmoTlj7Pmi6zlj7ciCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MjgKK21zZ2lkICJNaXNzaW5nIG9wZW4gYnJhY2UgaW4gcHJvZmlsZSIKK21zZ3N0ciAi6YWN572u5Lit57y65bCR5bem5ous5Y+3IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjI5Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfdCIKK21zZ3N0ciAicHJvZmlsZV905Lit55qE5bm75pWw5pyJ6ZSZIgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjMwCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfc2VjdGlvbl90IgorbXNnc3RyICJwcm9maWxlX3NlY3Rpb25fdOS4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMQorbXNnaWQgIkl0ZXJhdGlvbiB0aHJvdWdoIGFsbCB0b3AgbGV2ZWwgc2VjdGlvbiBub3Qgc3VwcG9ydGVkIgorbXNnc3RyICLkuI3mlK/mjIHov63ku6PmiYDmnInpobbnuqfljLrmrrUiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzIKK21zZ2lkICJJbnZhbGlkIHByb2ZpbGVfc2VjdGlvbiBvYmplY3QiCittc2dzdHIgIuaXoOaViOeahOmFjee9ruWMuuauteWvueixoSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozMworbXNnaWQgIk5vIG1vcmUgc2VjdGlvbnMiCittc2dzdHIgIuayoeacieabtOWkmueahOWMuuautSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNAorbXNnaWQgIkJhZCBuYW1lc2V0IHBhc3NlZCB0byBxdWVyeSByb3V0aW5lIgorbXNnc3RyICLkvKDnu5nkuobmn6Xor6LnqIvluo/plJnor6/nmoTlkI3np7Dpm4YiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzUKK21zZ2lkICJObyBwcm9maWxlIGZpbGUgb3BlbiIKK21zZ3N0ciAi5pyq5omT5byA5Lu75L2V6YWN572u5paH5Lu2IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjM2Cittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV90IgorbXNnc3RyICJwcm9maWxlX2ZpbGVfdOS4reeahOW5u+aVsOaciemUmSIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzozNworbXNnaWQgIkNvdWxkbid0IG9wZW4gcHJvZmlsZSBmaWxlIgorbXNnc3RyICLml6Dms5XmiZPlvIDphY3nva7mlofku7YiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzgKK21zZ2lkICJTZWN0aW9uIGFscmVhZHkgZXhpc3RzIgorbXNnc3RyICLljLrmrrXlt7LlrZjlnKgiCisKKyM6IGxpYi9zdXBwb3J0L3Byb2ZfZXJyLmM6MzkKK21zZ2lkICJJbnZhbGlkIGJvb2xlYW4gdmFsdWUiCittc2dzdHIgIuaXoOaViOeahOW4g+WwlOWAvCIKKworIzogbGliL3N1cHBvcnQvcHJvZl9lcnIuYzo0MAorbXNnaWQgIkludmFsaWQgaW50ZWdlciB2YWx1ZSIKK21zZ3N0ciAi5peg5pWI55qE5pW05pWw5YC8IgorCisjOiBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jOjQxCittc2dpZCAiQmFkIG1hZ2ljIHZhbHVlIGluIHByb2ZpbGVfZmlsZV9kYXRhX3QiCittc2dzdHIgInByb2ZpbGVfZmlsZV9kYXRhX3TkuK3nmoTlubvmlbDmnInplJkiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjEwNworIywgYy1mb3JtYXQKK21zZ2lkICJcdGxhc3QgbW91bnRlZCBvbiAlcyBvbiAlcyIKK21zZ3N0ciAiXHTkuIrkuIDmrKHmjILovb3kuo4gJXPvvIwg5pe26Ze0ICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTAKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vdW50ZWQgb24gJXMiCittc2dzdHIgIlx05LiK5LiA5qyh5oyC6L295LqOJXMiCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjExMworIywgYy1mb3JtYXQKK21zZ2lkICJcdGNyZWF0ZWQgb24gJXMiCittc2dzdHIgIlx05Yib5bu65LqOICVzIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoxMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiXHRsYXN0IG1vZGlmaWVkIG9uICVzIgorbXNnc3RyICJcdOS4iuS4gOasoeS/ruaUueS6jiAlcyIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTUwCisjLCBjLWZvcm1hdAorbXNnaWQgIkZvdW5kIGEgJXMgcGFydGl0aW9uIHRhYmxlIGluICVzXG4iCittc2dzdHIgIuWcqCAlcyDkuK3lj5HnjrDkuIDkuKogJXMg5YiG5Yy66KGoXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4MAorIywgYy1mb3JtYXQKK21zZ2lkICJUaGUgZmlsZSAlcyBkb2VzIG5vdCBleGlzdCBhbmQgbm8gc2l6ZSB3YXMgc3BlY2lmaWVkLlxuIgorbXNnc3RyICLmlofku7YgJXMg5LiN5a2Y5Zyo77yM5Lmf5rKh5pyJ5oyH5a6a5aSn5bCP44CCXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE4OAorIywgYy1mb3JtYXQKK21zZ2lkICJDcmVhdGluZyByZWd1bGFyIGZpbGUgJXNcbiIKK21zZ3N0ciAi5Yib5bu65LiA6Iis5paH5Lu2ICVzXG4iCisKKyM6IGxpYi9zdXBwb3J0L3BsYXVzaWJsZS5jOjE5MQorIywgYy1mb3JtYXQKK21zZ2lkICJDb3VsZCBub3Qgb3BlbiAlczogJXNcbiIKK21zZ3N0ciAi5peg5rOV5omT5byAICVz77yaJXNcbiIKKworIzogbGliL3N1cHBvcnQvcGxhdXNpYmxlLmM6MTk0Cittc2dpZCAiIgorIlxuIgorIlRoZSBkZXZpY2UgYXBwYXJlbnRseSBkb2VzIG5vdCBleGlzdDsgZGlkIHlvdSBzcGVjaWZ5IGl0IGNvcnJlY3RseT9cbiIKK21zZ3N0ciAiIgorIlxuIgorIuiuvuWkh+S4jeWtmOWcqOOAguivt+ehruiupOaJgOe7meiuvuWkh+WQjeaYr+WQpuato+ehruOAglxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMTYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgaXMgbm90IGEgYmxvY2sgc3BlY2lhbCBkZXZpY2UuXG4iCittc2dzdHIgIumUmeivr++8miVzIOS4jeaYr+Wdl+iuvuWkh+OAglxuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyMzgKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAnJXMnXG4iCittc2dzdHIgIiUxJHMg5pyJ5LiA5Liq5qCH562+5Li64oCcJTMkc+KAneeahCAlMiRzIOaWh+S7tuezu+e7n1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNDEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYSAlcyBmaWxlIHN5c3RlbVxuIgorbXNnc3RyICIgJXMg5pyJ5LiA5LiqICVzIOaWh+S7tuezu+e7n1xuIgorCisjOiBsaWIvc3VwcG9ydC9wbGF1c2libGUuYzoyNjUKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgY29udGFpbnMgYCVzJyBkYXRhXG4iCittc2dzdHIgIiIKKyIgJXMg5ZCr5pyJ4oCcJXPigJ3mlbDmja5cbiIKKyJcbiIKKworI34gbXNnaWQgIlBsZWFzZSBydW4gZTJmc2NrIG9uIHRoZSBmaWxlc3lzdGVtLlxuIgorI34gbXNnc3RyICLor7flnKjov5nkuKrmlofku7bns7vnu5/kuIrov5DooYwgZTJmc2Nr44CCXG4iCisKKyN+IG1zZ2lkICJAaSAlaSBoYXMgQGNpb24gZmxhZyBzZXQgb24gQGYgd2l0aG91dCBAY2lvbiBzdXBwb3J0LiAgIgorI34gbXNnc3RyICJAaSAlaSDnlLFjaGF0dHLorr7nva7kuoZj77yIQGPvvInmoIflv5fvvIzkvYZAZuS4jeaUr+aMgUBj44CCICAiCisKKyN+IG1zZ2lkICJAQSBAYSBAYiAlYi4gICIKKyN+IG1zZ3N0ciAi5YiG6YWNQGFAYiAlYuaXtuWHuumUmeOAgiAgIgorCisjfiBtc2dpZCAiJXM6IHdhcm5pbmc6IGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZXhwZXJpbWVudGFsLlxuIgorI34gbXNnc3RyICIlc++8muitpuWRiu+8muWOi+e8qeaUr+aMgeaYr+WunumqjOaAp+eahOOAglxuIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBlMmZzY2sgbm90IGNvbXBpbGVkIHdpdGggSFRSRUUgc3VwcG9ydCxcbiIKKyN+ICJcdGJ1dCBmaWxlc3lzdGVtICVzIGhhcyBIVFJFRSBkaXJlY3Rvcmllcy5cbiIKKyN+IG1zZ3N0ciAiIgorI34gIiVz77ya57yW6K+RZTJmc2Nr5pe25pyq5re75YqgSFRSRUXmlK/mjIHvvIxcbiIKKyN+ICJcdOS9huaWh+S7tuezu+e7nyAlcyDlkKvmnIlIVFJFReebruW9leOAglxuIgorCisjfiBtc2dpZCAid2hpbGUgYWxsb2NhdGluZyB6ZXJvaXppbmcgYnVmZmVyIgorI34gbXNnc3RyICLkuLrvvIjloavpm7bnmoTvvInnvJPlhrLljLrliIbphY3lhoXlrZjml7YiCisKKyN+IG1zZ2lkICIsIHVudXNlZCBpbm9kZXMgJXVcbiIKKyN+IG1zZ3N0ciAi77yMJXXkuKrmnKrkvb/nlKjnmoRpbm9kZXNcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0byByZWFkIHRoZSBmaWxlIHN5c3RlbSBkYXRhIFxuIgorI34gbXNnc3RyICLor7vlj5bmlofku7bns7vnu5/mlbDmja7lpLHotKVcbiIKKworI34gbXNnaWQgIkZhaWxlZCB0ZGJfZmV0Y2ggJXNcbiIKKyN+IG1zZ3N0ciAidGRiX2ZldGNoICVzIOWksei0pVxuIgorCisjfiBtc2dpZCAiVGhlIGZpbGUgc3lzdGVtIFVVSUQgZGlkbid0IG1hdGNoIFxuIgorI34gbXNnc3RyICLmlofku7bns7vnu5/nmoRVVUlE5LiN5Yy56YWNIFxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRkYl9vcGVuICVzXG4iCisjfiBtc2dzdHIgInRkYl9vcGVuICVzIOWksei0pVxuIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIG9wZW4gJXNcbiIKKyN+IG1zZ3N0ciAi5omT5byAJXPlpLHotKVcbiIKKworI34gbXNnaWQgIlJlcGxheWVkIHRyYW5zYWN0aW9uIG9mIHNpemUgJXpkIGF0IGxvY2F0aW9uICVsbHVcbiIKKyN+IG1zZ3N0ciAiIgorI34gIuagueaNruWkp+Wwj+S4uiAlemQg55qE5LqL5Yqh6K6w5b2V5pKk6ZSA5L2N5LqOICVsbHUg55qE5pON5L2cXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICJGYWlsZWQgd3JpdGUgJXNcbiIKKyN+IG1zZ3N0ciAi5YaZ5YWlJXPlpLHotKVcbiIKKworI34gbXNnaWQgIkludmFsaWQgcXVvdGF0eXBlIHBhcmFtZXRlcjogJXNcbiIKKyN+IG1zZ3N0ciAi5peg5pWI55qE6YWN6aKd57G75Z6L5Y+C5pWw77yaJXNcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSB0byBwYXJzZSBxdW90YSBvcHRpb25zIVxuIgorI34gbXNnc3RyICLml6Dms5XkuLrop6PmnpDphY3pop3pgInpobnojrflj5blhoXlrZjvvIFcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGRiIGZpbGVuYW1lXG4iCisjfiBtc2dzdHIgIuaXoOazleS4uuWkhOeQhnRkYuaWh+S7tuWQjeWIhumFjeWGheWtmFxuIgorCisjfiBtc2dpZCAiIgorI34gIlRvIHVuZG8gdGhlIHR1bmUyZnMgb3BlcmF0aW9uIHBsZWFzZSBydW4gdGhlIGNvbW1hbmRcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisjfiBtc2dzdHIgIiIKKyN+ICLopoHmkqTplIAgdHVuZTJmcyDmk43kvZzor7fov5DooYzlkb3ku6TvvJpcbiIKKyN+ICIgICAgZTJ1bmRvICVzICVzXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICIlcyBpcyBlbnRpcmUgZGV2aWNlLCBub3QganVzdCBvbmUgcGFydGl0aW9uIVxuIgorI34gbXNnc3RyICIlcyDkuLrmlbTkuKrorr7lpIfvvIzogIzpnZ7ljZXkuKrliIbljLrvvIFcbiIKKworI34gbXNnaWQgIjxUaGUgQUNMIGluZGV4IGlub2RlPiIKKyN+IG1zZ3N0ciAiPEFDTCDntKLlvJUgaW5vZGU+IgorCisjfiBtc2dpZCAiPFRoZSBBQ0wgZGF0YSBpbm9kZT4iCisjfiBtc2dzdHIgIjxBQ0wg5pWw5o2uIGlub2RlPiIKKworI34gbXNnaWQgIkpvdXJuYWwgTk9UIHJlbW92ZWRcbiIKKyN+IG1zZ3N0ciAi5pel5b+X5pyq5Yig6ZmkXG4iCisKKyN+IG1zZ2lkICJDb3VsZCBub3Qgc3RhdCAlcyAtLS0gJXNcbiIKKyN+IG1zZ3N0ciAi5peg5rOV5a+5ICVzIOi/m+ihjCBzdGF0IOiwg+eUqCAtLS0gJXNcbiIKKworI34gbXNnaWQgIiIKKyN+ICJcYlxiXGJcYlxiXGJcYlxiQ29waWVkICVsbHUgLyAlbGx1IGJsb2NrcyAoJWxsdSUlKSBpbiAlcyBhdCAlLjJmIE1CLyIKKyN+ICJzICAgICAgIFxuIgorI34gbXNnc3RyICIiCisjfiAiXGJcYlxiXGJcYlxiXGJcYuW3suWkjeWItiAlbGx1IC8gJWxsdSDlnZfvvIglbGx1JSXvvInvvIznlKjml7YgJXPvvIzpgJ/luqYgJS4yZiBNQi8iCisjfiAicyAgICAgICBcbiIKKworI34gbXNnaWQgIiIKKyN+ICJcbiIKKyN+ICJXYXJuaW5nOiB0aGUgcXVvdGEgZmVhdHVyZSBpcyBzdGlsbCB1bmRlciBkZXZlbG9wbWVudFxuIgorI34gIlNlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9RdW90YSBmb3IgbW9yZSBpbmZvcm1hdGlvblxuIgorI34gIlxuIgorI34gbXNnc3RyICIiCisjfiAiXG4iCisjfiAi6K2m5ZGK77ya6YWN6aKd54m55oCn5LuN54S25Zyo5byA5Y+R5LitXG4iCisjfiAi5pu05aSa6K+m5oOF6K+35Y+C6KeBIGh0dHBzOi8vZXh0NC53aWtpLmtlcm5lbC5vcmcvaW5kZXgucGhwL1F1b3RhXG4iCisjfiAiXG4iCisKKyN+IG1zZ2lkICJDbGVhcmluZyBleHRlbnQgZmxhZyBub3Qgc3VwcG9ydGVkIG9uICVzIgorI34gbXNnc3RyICLnp7vpmaQgJXMg5Lit5LiN6KKr5pSv5oyB55qEZXh0ZW505qCH5b+XIgorCisjfiBtc2dpZCAiIgorI34gIiVzOiBUaGUgY29tYmluYXRpb24gb2YgZmxleF9iZyBhbmRcbiIKKyN+ICJcdCFyZXNpemVfaW5vZGUgZmVhdHVyZXMgaXMgbm90IHN1cHBvcnRlZCBieSByZXNpemUyZnMuXG4iCisjfiBtc2dzdHIgIiVz77yacmVzaXplMmZz5LiN5pSv5oyB5ZCM5pe25L2/55So5by55oCn57uE5ZKM5Zu65a6aaW5vZGXlpKflsI/nibnmgKfjgIJcbiIKKworI34gbXNnaWQgIkBnICVnIEBiIEBCIHVuaW5pdGlhbGl6ZWQgYnV0IEBpIEBCIGluIHVzZS5cbiIKKyN+IG1zZ3N0ciAiQGcgJWcgQGJAQuacquWIneWni+WMlu+8jOS9hkBpQELlt7Looqvkvb/nlKjjgIJcbiIKKworI34gbXNnaWQgIkBpICVpIHNob3VsZCBub3QgaGF2ZSBFT0ZCTE9DS1NfRkwgc2V0IChzaXplICVJcywgbGJsayAlcilcbiIKKyN+IG1zZ3N0ciAiQGkgJWkg5LiN5bqU6KKr6K6+5a6aRU9GQkxPQ0tTX0ZM5qCH5b+X77yI5aSn5bCPICVsc++8jGxibGsgJXLvvIlcbiIKKworI34gbXNnaWQgIkNvdWxkbid0IGRldGVybWluZSBqb3VybmFsIHNpemUiCisjfiBtc2dzdHIgIuaXoOazleehruWumuaXpeW/l+Wkp+WwjyIKKworI34gbXNnaWQgIiNcdFx0ICVsbHUgLT4gJWxsdSAoJWxsdSlcbiIKKyN+IG1zZ3N0ciAiI1x0XHQgJWxsdSAtPiAlbGx177yIJWxsde+8iVxuIgorCisjfiBtc2dpZCAiTWlzc2luZyBpbmRpcmVjdCBibG9jayBub3QgcHJlc2VudCIKKyN+IG1zZ3N0ciAi5pyq5om+5Yiw5Lii5aSx55qE6ZO+5o6l5Z2XIgorCisjfiBtc2dpZCAic2hvcnQgd3JpdGUgKG9ubHkgJWQgYnl0ZXMpIGZvciB3cml0aW5nIGltYWdlIGhlYWRlciIKKyN+IG1zZ3N0ciAi5YaZ5YWl6ZWc5YOP5aS06YOo55qE5pWw5o2u6L+H5bCR77yI5Y+q5pyJICVkIOWtl+iKgu+8iSIKKworI34gbXNnaWQgImludmFsaWQgZnJhZ21lbnQgc2l6ZSAtICVzIgorI34gbXNnc3RyICLml6DmlYjnmoTnoo7niYflsLrlr7ggLSAlcyIKKworI34gbXNnaWQgIldhcm5pbmc6IGZyYWdtZW50cyBub3Qgc3VwcG9ydGVkLiAgSWdub3JpbmcgLWYgb3B0aW9uXG4iCisjfiBtc2dzdHIgIuitpuWRiu+8muS4jeaUr+aMgeeijueJh+euoeeQhuOAguW3suW/veeVpSAtZiDpgInpoblcbiIKKworI34gbXNnaWQgIkNhbGxpbmcgQkxLRElTQ0FSRCBmcm9tICVsbHUgdG8gJWxsdSAiCisjfiBtc2dzdHIgIuWvueWdlyAlbGx1IOiHsyAlbGx1IOaJp+ihjEJMS0RJU0NBUkTmk43kvZwiCisKKyN+IG1zZ2lkICJzdWNjZWVkZWQuXG4iCisjfiBtc2dzdHIgIuaIkOWKn+OAglxuIgorCisjfiBtc2dpZCAiQFMgZG9lc24ndCBoYXZlIGhhc19AaiBmbGFnLCBidXQgaGFzIGV4dDMgQGogJXMuXG4iCisjfiBtc2dzdHIgIkBT5LiN5YW35pyJaGFzX2pvdXJuYWzmoIflv5fvvIzkvYZleHQz5pel5b+XICVzIOWFt+acieOAglxuIgorCisjfiBtc2dpZCAiUmVjcmVhdGUgam91cm5hbCB0byBtYWtlIHRoZSBmaWxlc3lzdGVtIGV4dDMgYWdhaW4/XG4iCisjfiBtc2dzdHIgIuWwhuaXpeW/l+mHjeW7uuS4umV4dDPmlofku7bns7vnu5/moLzlvI/lkJfvvJ9cbiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9yZXNpemUvQW5kcm9pZC5tayBiL2UyZnNwcm9ncy9yZXNpemUvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmQ2YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsNDUgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKKworcmVzaXplMmZzX3NyY19maWxlcyA6PSBcCisJZXh0ZW50LmMgXAorCXJlc2l6ZTJmcy5jIFwKKwltYWluLmMgXAorCW9ubGluZS5jIFwKKwlzaW1fcHJvZ3Jlc3MuYyBcCisJcmVzb3VyY2VfdHJhY2suYworCityZXNpemUyZnNfY19pbmNsdWRlcyA6PSBleHRlcm5hbC9lMmZzcHJvZ3MvbGliCisKK3Jlc2l6ZTJmc19jZmxhZ3MgOj0gLU8yIC1nIC1XIC1XYWxsCisKK3Jlc2l6ZTJmc19zaGFyZWRfbGlicmFyaWVzIDo9IFwKKwlsaWJleHQyZnMgXAorCWxpYmV4dDJfY29tX2VyciBcCisJbGliZXh0Ml9lMnAgXAorCWxpYmV4dDJfdXVpZCBcCisJbGliZXh0Ml9ibGtpZAorCityZXNpemUyZnNfc3lzdGVtX3NoYXJlZF9saWJyYXJpZXMgOj0gbGliYworCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQocmVzaXplMmZzX3NyY19maWxlcykKK0xPQ0FMX0NfSU5DTFVERVMgOj0gJChyZXNpemUyZnNfY19pbmNsdWRlcykKK0xPQ0FMX0NGTEFHUyA6PSAkKHJlc2l6ZTJmc19jZmxhZ3MpCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQocmVzaXplMmZzX3NoYXJlZF9saWJyYXJpZXMpCitMT0NBTF9TWVNURU1fU0hBUkVEX0xJQlJBUklFUyA6PSAkKHJlc2l6ZTJmc19zeXN0ZW1fc2hhcmVkX2xpYnJhcmllcykKK0xPQ0FMX01PRFVMRSA6PSByZXNpemUyZnMKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKHJlc2l6ZTJmc19zcmNfZmlsZXMpCitMT0NBTF9DX0lOQ0xVREVTIDo9ICQocmVzaXplMmZzX2NfaW5jbHVkZXMpCitMT0NBTF9DRkxBR1MgOj0gJChyZXNpemUyZnNfY2ZsYWdzKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSAkKGFkZHN1ZmZpeCAtaG9zdCwgJChyZXNpemUyZnNfc2hhcmVkX2xpYnJhcmllcykpCitMT0NBTF9NT0RVTEUgOj0gcmVzaXplMmZzX2hvc3QKK0xPQ0FMX01PRFVMRV9TVEVNIDo9IHJlc2l6ZTJmcworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworaW5jbHVkZSAkKEJVSUxEX0hPU1RfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9yZXNpemUvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvcmVzaXplL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMTRiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcmVzaXplL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsMTk2IEBACisjCisjIFN0YW5kYXJkIGUyZnNwcm9ncyBwcm9sb2d1ZS4uLi4KKyMKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uCitteV9kaXIgPSByZXNpemUKK0lOU1RBTEwgPSBASU5TVEFMTEAKKworQE1DT05GSUdACisKK1BST0dTPQkJcmVzaXplMmZzCitURVNUX1BST0dTPQl0ZXN0X2V4dGVudAorTUFOUEFHRVM9CXJlc2l6ZTJmcy44CisKK1JFU0laRV9PQkpTPSBleHRlbnQubyByZXNpemUyZnMubyBtYWluLm8gb25saW5lLm8gcmVzb3VyY2VfdHJhY2subyBcCisJCXNpbV9wcm9ncmVzcy5vCisKK1RFU1RfRVhURU5UX09CSlM9IGV4dGVudC5vIHRlc3RfZXh0ZW50Lm8KKworU1JDUz0gJChzcmNkaXIpL2V4dGVudC5jIFwKKwkkKHNyY2RpcikvcmVzaXplMmZzLmMgXAorCSQoc3JjZGlyKS9tYWluLmMgXAorCSQoc3JjZGlyKS9vbmxpbmUuYyBcCisJJChzcmNkaXIpL3Jlc291cmNlX3RyYWNrLmMgXAorCSQoc3JjZGlyKS9zaW1fcHJvZ3Jlc3MuYworCitMSUJTPSAkKExJQkUyUCkgJChMSUJFWFQyRlMpICQoTElCQ09NX0VSUikgJChMSUJJTlRMKSAkKFNZU0xJQlMpCitERVBMSUJTPSAkKExJQkUyUCkgJChMSUJFWFQyRlMpICQoREVQTElCQ09NX0VSUikKKworU1RBVElDX0xJQlM9ICQoU1RBVElDX0xJQkUyUCkgJChTVEFUSUNfTElCRVhUMkZTKSAkKFNUQVRJQ19MSUJDT01fRVJSKSBcCisJJChMSUJJTlRMKSAkKFNZU0xJQlMpCitERVBTVEFUSUNfTElCUz0gJChTVEFUSUNfTElCRTJQKSAkKFNUQVRJQ19MSUJFWFQyRlMpICQoREVQU1RBVElDX0xJQkNPTV9FUlIpIAorCisuYy5vOgorCSQoRSkgIglDQyAkPCIKKwkkKFEpICQoQ0MpIC1jICQoQUxMX0NGTEFHUykgJDwgLW8gJEAKKwkkKFEpICQoQ0hFQ0tfQ01EKSAkKEFMTF9DRkxBR1MpICQ8CisJJChRKSAkKENQUENIRUNLX0NNRCkgJChDUFBGTEFHUykgJDwKKworYWxsOjogJChQUk9HUykgJChURVNUX1BST0dTKSAkKE1BTlBBR0VTKSAKKworcmVzaXplMmZzOiAkKFJFU0laRV9PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gcmVzaXplMmZzICQoUkVTSVpFX09CSlMpICQoTElCUykgCisKK3Jlc2l6ZTJmcy5zdGF0aWM6ICQoUkVTSVpFX09CSlMpICQoREVQU1RBVElDX0xJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChMRCkgJChMREZMQUdTX1NUQVRJQykgLW8gcmVzaXplMmZzLnN0YXRpYyBcCisJCSQoUkVTSVpFX09CSlMpICQoU1RBVElDX0xJQlMpIAorCityZXNpemUyZnMuODogJChERVBfU1VCU1RJVFVURSkgJChzcmNkaXIpL3Jlc2l6ZTJmcy44LmluCisJJChFKSAiCVNVQlNUICRAIgorCSQoUSkgJChTVUJTVElUVVRFX1VQVElNRSkgJChzcmNkaXIpL3Jlc2l6ZTJmcy44LmluIHJlc2l6ZTJmcy44CisKK3Rlc3RfZXh0ZW50OiAkKFRFU1RfRVhURU5UX09CSlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChDQykgJChBTExfTERGTEFHUykgLW8gdGVzdF9leHRlbnQgJChURVNUX0VYVEVOVF9PQkpTKSAkKExJQlMpIAorCitpbnN0YWxsZGlyczoKKwkkKEUpICIJTUtJTlNUQUxMRElSUyAkKHJvb3Rfc2JpbmRpcikgJChtYW44ZGlyKSIKKwkkKFEpICQoTUtJTlNUQUxMRElSUykgJChERVNURElSKSQocm9vdF9zYmluZGlyKSBcCisJCSQoREVTVERJUikkKG1hbjhkaXIpCisKK2luc3RhbGw6ICQoUFJPR1MpICQoTUFOUEFHRVMpIGluc3RhbGxkaXJzCisJJChRKSBmb3IgaSBpbiAkKFBST0dTKTsgZG8gXAorCQllY2hvICIJSU5TVEFMTCAkKHJvb3Rfc2JpbmRpcikvJCRpIjsgXAorCQkkKElOU1RBTExfUFJPR1JBTSkgJCRpICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCSQoUSkgZm9yIGkgaW4gJChNQU5QQUdFUyk7IGRvIFwKKwkJZm9yIGogaW4gJChDT01QUkVTU19FWFQpOyBkbyBcCisJCQkkKFJNKSAtZiAkKERFU1RESVIpJChtYW44ZGlyKS8kJGkuJCRqOyBcCisJCWRvbmU7IFwKKwkJZWNobyAiCUlOU1RBTExfREFUQSAkKG1hbjhkaXIpLyQkaSI7IFwKKwkJJChJTlNUQUxMX0RBVEEpICQkaSAkKERFU1RESVIpJChtYW44ZGlyKS8kJGk7IFwKKwlkb25lCisKK2luc3RhbGwtc3RyaXA6IGluc3RhbGwKKwkkKFEpIGZvciBpIGluICQoUFJPR1MpOyBkbyBcCisJCWVjaG8gIglTVFJJUCAkKHJvb3Rfc2JpbmRpcikvJCRpIjsgXAorCQkkKFNUUklQKSAkKERFU1RESVIpJChyb290X3NiaW5kaXIpLyQkaTsgXAorCWRvbmUKKwordW5pbnN0YWxsOgorCWZvciBpIGluICQoUFJPR1MpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKHJvb3Rfc2JpbmRpcikvJCRpOyBcCisJZG9uZQorCWZvciBpIGluICQoTUFOUEFHRVMpOyBkbyBcCisJCSQoUk0pIC1mICQoREVTVERJUikkKG1hbjhkaXIpLyQkaTsgXAorCWRvbmUKKwordGVzdF9leHRlbnQub3V0OiB0ZXN0X2V4dGVudCAkKHNyY2RpcikvdGVzdF9leHRlbnQuaW4KKwkkKFRFU1RFTlYpIC4vdGVzdF9leHRlbnQgPCAkKHNyY2RpcikvdGVzdF9leHRlbnQuaW4gPiB0ZXN0X2V4dGVudC5vdXQKKworY2hlY2s6OiB0ZXN0X2V4dGVudC5vdXQKKwkkKFEpIGlmIGNtcCAtcyB0ZXN0X2V4dGVudC5vdXQgJChzcmNkaXIpL3Rlc3RfZXh0ZW50LmluIDsgdGhlbiBcCisJCWVjaG8gIlRlc3Qgc3VjY2VlZGVkLiIgOyBcCisJZWxzZSBcCisJCWVjaG8gIlRlc3QgZmFpbGVkISIgOyBcCisJCWRpZmYgdGVzdF9leHRlbnQub3V0ICQoc3JjZGlyKS90ZXN0X2V4dGVudC5pbiA7IFwKKwkJZXhpdCAxIDsgXAorCWZpCisKK2NsZWFuOjoKKwkkKFJNKSAtZiAkKFBST0dTKSAkKFRFU1RfUFJPR1MpICQoTUFOUEFHRVMpIFwjKiAqLnMgKi5vICouYSAqfiBjb3JlIFwKKwkJcmVzaXplMmZzLnN0YXRpYyB0ZXN0X2V4dGVudC5vdXQKKworbW9zdGx5Y2xlYW46IGNsZWFuCisKK2Rpc3RjbGVhbjogY2xlYW4KKwkkKFJNKSAtZiAuZGVwZW5kIE1ha2VmaWxlICQoc3JjZGlyKS9UQUdTICQoc3JjZGlyKS9NYWtlZmlsZS5pbi5vbGQKKworIworIyBLbHVkZ2UgdG8gY3JlYXRlIGEgInNwZWNpYWwiIGUyZnNwcm9ncyBkaXN0cmlidXRpb24gZmlsZS4KKyMKKworU1JDUk9PVCA9IGBlY2hvIGUyZnNwcm9ncy1ARTJGU1BST0dTX1ZFUlNJT05AIHwgc2VkIC1lICdzLy1XSVAvLycgXAorCQkJLWUgJ3MvcHJlLS8vJyAtZSAncy8tUExVUy8vJ2AKK1RBUj10YXIKKworJCh0b3Bfc3JjZGlyKS8uZXhjbHVkZS1maWxlOgorCWE9JChTUkNST09UKTsgXAorCShjZCAkKHRvcF9zcmNkaXIpLy4uIDsgZmluZCBlMmZzcHJvZ3MgXCggLW5hbWUgXCp+IC1vIC1uYW1lIFwqLm9yaWcgXAorCQktbyAtbmFtZSBDVlMgLW8gLW5hbWUgXCoucmVqIFwpIC1wcmludCkgXAorCQl8IHNlZCAtZSAicy9lMmZzcHJvZ3MvJCRhLyIgPiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKwllY2hvICIkKFNSQ1JPT1QpL2J1aWxkIiA+PiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKwllY2hvICIkKFNSQ1JPT1QpL3JwbS5sb2ciID4+ICQodG9wX3NyY2RpcikvLmV4Y2x1ZGUtZmlsZQorCWVjaG8gIiQoU1JDUk9PVCkvcG93ZXJxdWVzdCIgPj4gJCh0b3Bfc3JjZGlyKS8uZXhjbHVkZS1maWxlCisJZWNobyAiJChTUkNST09UKS8uZXhjbHVkZS1maWxlIiA+PiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKwllY2hvICQoU1JDUk9PVCkvZTJmc3Byb2dzLUBFMkZTUFJPR1NfVkVSU0lPTkAudGFyLmd6IFwKKwkJPj4gJCh0b3Bfc3JjZGlyKS8uZXhjbHVkZS1maWxlCisJZWNobyAkKFNSQ1JPT1QpL2UyZnNwcm9ncy1BTEwtQEUyRlNQUk9HU19WRVJTSU9OQC50YXIuZ3ogXAorCQk+PiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKworc291cmNlX3Rhcl9maWxlOiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKwkoY2QgJCh0b3Bfc3JjZGlyKS8uLjsgYT0kKFNSQ1JPT1QpOyBybSAtZiAkJGEgOyBsbiAtc2YgZTJmc3Byb2dzICQkYSA7IFwKKwkJJChUQVIpIC1jIC1oIC12IC1mIC0gXAorCQkJLVggJCRhLy5leGNsdWRlLWZpbGUgJCRhIHwgXAorCQlnemlwIC05ID4gZTJmc3Byb2dzLUFMTC1ARTJGU1BST0dTX1ZFUlNJT05ALnRhci5neikKKwlybSAtZiAkKHRvcF9zcmNkaXIpLy5leGNsdWRlLWZpbGUKKworIyArKysgRGVwZW5kZW5jeSBsaW5lIGVhdGVyICsrKworIyAKKyMgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGZvbGxvdy4gIFRoaXMgbXVzdCBiZSB0aGUgbGFzdCBzZWN0aW9uIGluCisjIHRoZSBNYWtlZmlsZS5pbiBmaWxlCisjCitleHRlbnQubzogJChzcmNkaXIpL2V4dGVudC5jICQodG9wX2J1aWxkZGlyKS9saWIvY29uZmlnLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZGlycGF0aHMuaCAkKHNyY2RpcikvcmVzaXplMmZzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9ldC9jb21fZXJyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZXh0X2F0dHIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2UycC9lMnAuaAorcmVzaXplMmZzLm86ICQoc3JjZGlyKS9yZXNpemUyZnMuYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3Jlc2l6ZTJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmgKK21haW4ubzogJChzcmNkaXIpL21haW4uYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJChzcmNkaXIpL3Jlc2l6ZTJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDNfZXh0ZW50cy5oICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS92ZXJzaW9uLmgKK29ubGluZS5vOiAkKHNyY2Rpcikvb25saW5lLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9yZXNpemUyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oCityZXNvdXJjZV90cmFjay5vOiAkKHNyY2RpcikvcmVzb3VyY2VfdHJhY2suYyAkKHRvcF9idWlsZGRpcikvbGliL2NvbmZpZy5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2RpcnBhdGhzLmggJChzcmNkaXIpL3Jlc2l6ZTJmcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9mcy5oICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfdHlwZXMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJmcy5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQzX2V4dGVudHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2lvLmggXAorICQodG9wX2J1aWxkZGlyKS9saWIvZXh0MmZzL2V4dDJfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2V4dF9hdHRyLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JpdG9wcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9lMnAvZTJwLmgKK3NpbV9wcm9ncmVzcy5vOiAkKHNyY2Rpcikvc2ltX3Byb2dyZXNzLmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9kaXJwYXRocy5oICQoc3JjZGlyKS9yZXNpemUyZnMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfZnMuaCAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX3R5cGVzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyZnMuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0M19leHRlbnRzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V0L2NvbV9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9pby5oIFwKKyAkKHRvcF9idWlsZGRpcikvbGliL2V4dDJmcy9leHQyX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0Ml9leHRfYXR0ci5oICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9iaXRvcHMuaCBcCisgJCh0b3Bfc3JjZGlyKS9saWIvZTJwL2UycC5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL01ha2VmaWxlLnBxIGIvZTJmc3Byb2dzL3Jlc2l6ZS9NYWtlZmlsZS5wcQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzYwZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9NYWtlZmlsZS5wcQpAQCAtMCwwICsxLDExIEBACitUT1BTUkM9Li4KK0xJQk5BTUU9UkVTSVpFLkxJQgorT0JKRklMRT1SRVNJWkUuTFNUCisKK09CSlM9IGV4dGVudC5vYmogXAorCWV4dDJfYmxvY2tfbW92ZS5vYmogXAorCWV4dDJfaW5vZGVfbW92ZS5vYmogXAorCXJlc2l6ZTJmcy5vYmoKKworIWluY2x1ZGUgJChUT1BTUkMpXHBvd2VycXVlc3RcTUNPTkZJRworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL2V4dGVudC5jIGIvZTJmc3Byb2dzL3Jlc2l6ZS9leHRlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzgxYjk0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9leHRlbnQuYwpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIGV4dGVudC5jIC0tLSBleHQyIGV4dGVudCBhYnN0cmFjdGlvbgorICoKKyAqIFRoaXMgYWJzdHJhY3Rpb24gaXMgdXNlZCB0byBwcm92aWRlIGEgY29tcGFjdCB3YXkgb2YgcmVwcmVzZW50aW5nIGEKKyAqIHRyYW5zbGF0aW9uIHRhYmxlLCBmb3IgbW92aW5nIG11bHRpcGxlIGNvbnRpZ3VvdXMgcmFuZ2VzIChleHRlbnRzKQorICogb2YgYmxvY2tzIG9yIGlub2Rlcy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTggYnkgVGhlb2RvcmUgVHMnbyBhbmQKKyAqIAlQb3dlclF1ZXN0LCBJbmMuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIGJ5IFRoZW9zb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJyZXNpemUyZnMuaCIKKworc3RydWN0IGV4dDJfZXh0ZW50X2VudHJ5IHsKKwlfX3U2NAlvbGRfbG9jLCBuZXdfbG9jOworCV9fdTY0CXNpemU7Cit9OworCitzdHJ1Y3QgX2V4dDJfZXh0ZW50IHsKKwlzdHJ1Y3QgZXh0Ml9leHRlbnRfZW50cnkgKmxpc3Q7CisJX191NjQJY3Vyc29yOworCV9fdTY0CXNpemU7CisJX191NjQJbnVtOworCV9fdTY0CXNvcnRlZDsKK307CisKKy8qCisgKiBDcmVhdGUgYW4gZXh0ZW50IHRhYmxlCisgKi8KK2VycmNvZGVfdCBleHQyZnNfY3JlYXRlX2V4dGVudF90YWJsZShleHQyX2V4dGVudCAqcmV0X2V4dGVudCwgX191NjQgc2l6ZSkKK3sKKwlleHQyX2V4dGVudAlleHRlbnQ7CisJZXJyY29kZV90CXJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfbWVtKHNpemVvZihzdHJ1Y3QgX2V4dDJfZXh0ZW50KSwgJmV4dGVudCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwltZW1zZXQoZXh0ZW50LCAwLCBzaXplb2Yoc3RydWN0IF9leHQyX2V4dGVudCkpOworCisJZXh0ZW50LT5zaXplID0gc2l6ZSA/IHNpemUgOiA1MDsKKwlleHRlbnQtPmN1cnNvciA9IDA7CisJZXh0ZW50LT5udW0gPSAwOworCWV4dGVudC0+c29ydGVkID0gMTsKKworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkoc2l6ZW9mKHN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSksCisJCQkJZXh0ZW50LT5zaXplLCAmZXh0ZW50LT5saXN0KTsKKwlpZiAocmV0dmFsKSB7CisJCWV4dDJmc19mcmVlX21lbSgmZXh0ZW50KTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisJbWVtc2V0KGV4dGVudC0+bGlzdCwgMCwKKwkgICAgICAgc2l6ZW9mKHN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSkgKiBleHRlbnQtPnNpemUpOworCSpyZXRfZXh0ZW50ID0gZXh0ZW50OworCXJldHVybiAwOworfQorCisvKgorICogRnJlZSBhbiBleHRlbnQgdGFibGUKKyAqLwordm9pZCBleHQyZnNfZnJlZV9leHRlbnRfdGFibGUoZXh0Ml9leHRlbnQgZXh0ZW50KQoreworCWlmIChleHRlbnQtPmxpc3QpCisJCWV4dDJmc19mcmVlX21lbSgmZXh0ZW50LT5saXN0KTsKKwlleHRlbnQtPmxpc3QgPSAwOworCWV4dGVudC0+c2l6ZSA9IDA7CisJZXh0ZW50LT5udW0gPSAwOworCWV4dDJmc19mcmVlX21lbSgmZXh0ZW50KTsKK30KKworLyoKKyAqIEFkZCBhbiBlbnRyeSB0byB0aGUgZXh0ZW50IHRhYmxlCisgKi8KK2VycmNvZGVfdCBleHQyZnNfYWRkX2V4dGVudF9lbnRyeShleHQyX2V4dGVudCBleHRlbnQsIF9fdTY0IG9sZF9sb2MsIF9fdTY0IG5ld19sb2MpCit7CisJc3RydWN0CWV4dDJfZXh0ZW50X2VudHJ5CSplbnQ7CisJZXJyY29kZV90CQkJcmV0dmFsOworCV9fdTY0CQkJCW5ld3NpemU7CisJX191NjQJCQkJY3VycjsKKworCWlmIChleHRlbnQtPm51bSA+PSBleHRlbnQtPnNpemUpIHsKKwkJbmV3c2l6ZSA9IGV4dGVudC0+c2l6ZSArIDEwMDsKKwkJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSkgKgorCQkJCQkgICBleHRlbnQtPnNpemUsCisJCQkJCSAgIHNpemVvZihzdHJ1Y3QgZXh0Ml9leHRlbnRfZW50cnkpICoKKwkJCQkJICAgbmV3c2l6ZSwgJmV4dGVudC0+bGlzdCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCQlleHRlbnQtPnNpemUgPSBuZXdzaXplOworCX0KKwljdXJyID0gZXh0ZW50LT5udW07CisJZW50ID0gZXh0ZW50LT5saXN0ICsgY3VycjsKKwlpZiAoY3VycikgeworCQkvKgorCQkgKiBDaGVjayB0byBzZWUgaWYgdGhpcyBjYW4gYmUgY29hbGVzY2VkIHdpdGggdGhlIGxhc3QKKwkJICogZXh0ZW50CisJCSAqLworCQllbnQtLTsKKwkJaWYgKChlbnQtPm9sZF9sb2MgKyBlbnQtPnNpemUgPT0gb2xkX2xvYykgJiYKKwkJICAgIChlbnQtPm5ld19sb2MgKyBlbnQtPnNpemUgPT0gbmV3X2xvYykpIHsKKwkJCWVudC0+c2l6ZSsrOworCQkJcmV0dXJuIDA7CisJCX0KKwkJLyoKKwkJICogTm93IHNlZSBpZiB3ZSdyZSBnb2luZyB0byBydWluIHRoZSBzb3J0aW5nCisJCSAqLworCQlpZiAoZW50LT5vbGRfbG9jICsgZW50LT5zaXplID4gb2xkX2xvYykKKwkJCWV4dGVudC0+c29ydGVkID0gMDsKKwkJZW50Kys7CisJfQorCWVudC0+b2xkX2xvYyA9IG9sZF9sb2M7CisJZW50LT5uZXdfbG9jID0gbmV3X2xvYzsKKwllbnQtPnNpemUgPSAxOworCWV4dGVudC0+bnVtKys7CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHFzb3J0CisgKi8KK3N0YXRpYyBFWFQyX1FTT1JUX1RZUEUgZXh0ZW50X2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQoreworCWNvbnN0IHN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSAqZGJfYTsKKwljb25zdCBzdHJ1Y3QgZXh0Ml9leHRlbnRfZW50cnkgKmRiX2I7CisKKwlkYl9hID0gKGNvbnN0IHN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSAqKSBhOworCWRiX2IgPSAoY29uc3Qgc3RydWN0IGV4dDJfZXh0ZW50X2VudHJ5ICopIGI7CisKKwlyZXR1cm4gKGRiX2EtPm9sZF9sb2MgLSBkYl9iLT5vbGRfbG9jKTsKK30KKworLyoKKyAqIEdpdmVuIGFuIGlub2RlIG1hcCBhbmQgaW5vZGUgbnVtYmVyLCBsb29rIHVwIHRoZSBvbGQgaW5vZGUgbnVtYmVyCisgKiBhbmQgcmV0dXJuIHRoZSBuZXcgaW5vZGUgbnVtYmVyLgorICovCitfX3U2NCBleHQyZnNfZXh0ZW50X3RyYW5zbGF0ZShleHQyX2V4dGVudCBleHRlbnQsIF9fdTY0IG9sZF9sb2MpCit7CisJX19zNjQJbG93LCBoaWdoLCBtaWQ7CisJX191NjQJbG93dmFsLCBoaWdodmFsOworCWZsb2F0CXJhbmdlOworCisJaWYgKCFleHRlbnQtPnNvcnRlZCkgeworCQlxc29ydChleHRlbnQtPmxpc3QsIGV4dGVudC0+bnVtLAorCQkgICAgICBzaXplb2Yoc3RydWN0IGV4dDJfZXh0ZW50X2VudHJ5KSwgZXh0ZW50X2NtcCk7CisJCWV4dGVudC0+c29ydGVkID0gMTsKKwl9CisJbG93ID0gMDsKKwloaWdoID0gZXh0ZW50LT5udW0tMTsKKwl3aGlsZSAobG93IDw9IGhpZ2gpIHsKKyNpZiAwCisJCW1pZCA9IChsb3craGlnaCkvMjsKKyNlbHNlCisJCWlmIChsb3cgPT0gaGlnaCkKKwkJCW1pZCA9IGxvdzsKKwkJZWxzZSB7CisJCQkvKiBJbnRlcnBvbGF0ZSBmb3IgZWZmaWNpZW5jeSAqLworCQkJbG93dmFsID0gZXh0ZW50LT5saXN0W2xvd10ub2xkX2xvYzsKKwkJCWhpZ2h2YWwgPSBleHRlbnQtPmxpc3RbaGlnaF0ub2xkX2xvYzsKKworCQkJaWYgKG9sZF9sb2MgPCBsb3d2YWwpCisJCQkJcmFuZ2UgPSAwOworCQkJZWxzZSBpZiAob2xkX2xvYyA+IGhpZ2h2YWwpCisJCQkJcmFuZ2UgPSAxOworCQkJZWxzZSB7CisJCQkJcmFuZ2UgPSAoKGZsb2F0KSAob2xkX2xvYyAtIGxvd3ZhbCkpIC8KKwkJCQkJKGhpZ2h2YWwgLSBsb3d2YWwpOworCQkJCWlmIChyYW5nZSA+IDAuOSkKKwkJCQkJcmFuZ2UgPSAwLjk7CisJCQkJaWYgKHJhbmdlIDwgMC4xKQorCQkJCQlyYW5nZSA9IDAuMTsKKwkJCX0KKwkJCW1pZCA9IGxvdyArICgoX191NjQpIChyYW5nZSAqIChoaWdoLWxvdykpKTsKKwkJfQorI2VuZGlmCisJCWlmICgob2xkX2xvYyA+PSBleHRlbnQtPmxpc3RbbWlkXS5vbGRfbG9jKSAmJgorCQkgICAgKG9sZF9sb2MgPCBleHRlbnQtPmxpc3RbbWlkXS5vbGRfbG9jICsgZXh0ZW50LT5saXN0W21pZF0uc2l6ZSkpCisJCQlyZXR1cm4gKGV4dGVudC0+bGlzdFttaWRdLm5ld19sb2MgKworCQkJCShvbGRfbG9jIC0gZXh0ZW50LT5saXN0W21pZF0ub2xkX2xvYykpOworCQlpZiAob2xkX2xvYyA8IGV4dGVudC0+bGlzdFttaWRdLm9sZF9sb2MpCisJCQloaWdoID0gbWlkLTE7CisJCWVsc2UKKwkJCWxvdyA9IG1pZCsxOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZvciBkZWJ1Z2dpbmcgb25seQorICovCit2b2lkIGV4dDJmc19leHRlbnRfZHVtcChleHQyX2V4dGVudCBleHRlbnQsIEZJTEUgKm91dCkKK3sKKwlfX3U2NAlpOworCXN0cnVjdCBleHQyX2V4dGVudF9lbnRyeSAqZW50OworCisJZnB1dHMoXygiIyBFeHRlbnQgZHVtcDpcbiIpLCBvdXQpOworCWZwcmludGYob3V0LCBfKCIjXHROdW09JWxsdSwgU2l6ZT0lbGx1LCBDdXJzb3I9JWxsdSwgU29ydGVkPSVsbHVcbiIpLAorCSAgICAgICBleHRlbnQtPm51bSwgZXh0ZW50LT5zaXplLCBleHRlbnQtPmN1cnNvciwgZXh0ZW50LT5zb3J0ZWQpOworCWZvciAoaT0wLCBlbnQ9ZXh0ZW50LT5saXN0OyBpIDwgZXh0ZW50LT5udW07IGkrKywgZW50KyspIHsKKwkJZnByaW50ZihvdXQsICIjXHRcdCAlbGx1IC0+ICVsbHUgKCVsbHUpXG4iLCBlbnQtPm9sZF9sb2MsCisJCQllbnQtPm5ld19sb2MsIGVudC0+c2l6ZSk7CisJfQorfQorCisvKgorICogSXRlcmF0ZSBvdmVyIHRoZSBjb250ZW50cyBvZiB0aGUgZXh0ZW50IHRhYmxlCisgKi8KK2VycmNvZGVfdCBleHQyZnNfaXRlcmF0ZV9leHRlbnQoZXh0Ml9leHRlbnQgZXh0ZW50LCBfX3U2NCAqb2xkX2xvYywKKwkJCQlfX3U2NCAqbmV3X2xvYywgX191NjQgKnNpemUpCit7CisJc3RydWN0IGV4dDJfZXh0ZW50X2VudHJ5ICplbnQ7CisKKwlpZiAoIW9sZF9sb2MpIHsKKwkJZXh0ZW50LT5jdXJzb3IgPSAwOworCQlyZXR1cm4gMDsKKwl9CisKKwlpZiAoZXh0ZW50LT5jdXJzb3IgPj0gZXh0ZW50LT5udW0pIHsKKwkJKm9sZF9sb2MgPSAwOworCQkqbmV3X2xvYyA9IDA7CisJCSpzaXplID0gMDsKKwkJcmV0dXJuIDA7CisJfQorCisJZW50ID0gZXh0ZW50LT5saXN0ICsgZXh0ZW50LT5jdXJzb3IrKzsKKworCSpvbGRfbG9jID0gZW50LT5vbGRfbG9jOworCSpuZXdfbG9jID0gZW50LT5uZXdfbG9jOworCSpzaXplID0gZW50LT5zaXplOworCXJldHVybiAwOworfQorCisKKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL21haW4uYyBiL2UyZnNwcm9ncy9yZXNpemUvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhOTk0ODMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcmVzaXplL21haW4uYwpAQCAtMCwwICsxLDY1MiBAQAorLyoKKyAqIG1haW4uYyAtLS0gZXh0MiByZXNpemVyIG1haW4gcHJvZ3JhbQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NywgMTk5OCBieSBUaGVvZG9yZSBUcydvIGFuZAorICogCVBvd2VyUXVlc3QsIEluYy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgYnkgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZmRlZiBIQVZFX0dFVE9QVF9ICisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjZWxzZQorZXh0ZXJuIGNoYXIgKm9wdGFyZzsKK2V4dGVybiBpbnQgb3B0aW5kOworI2VuZGlmCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGxpYmdlbi5oPgorCisjaW5jbHVkZSAiZTJwL2UycC5oIgorCisjaW5jbHVkZSAicmVzaXplMmZzLmgiCisKKyNpbmNsdWRlICIuLi92ZXJzaW9uLmgiCisKK2NoYXIgKnByb2dyYW1fbmFtZTsKK3N0YXRpYyBjaGFyICpkZXZpY2VfbmFtZSwgKmlvX29wdGlvbnM7CisKK3N0YXRpYyB2b2lkIHVzYWdlIChjaGFyICpwcm9nKQoreworCWZwcmludGYgKHN0ZGVyciwgXygiVXNhZ2U6ICVzIFstZCBkZWJ1Z19mbGFnc10gWy1mXSBbLUZdIFstTV0gWy1QXSAiCisJCQkgICAiWy1wXSBkZXZpY2UgWy1ifC1zfG5ld19zaXplXSBbLXogdW5kb19maWxlXVxuXG4iKSwKKwkJIHByb2cpOworCisJZXhpdCAoMSk7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmVzaXplX3Byb2dyZXNzX2Z1bmMoZXh0Ml9yZXNpemVfdCByZnMsIGludCBwYXNzLAorCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgY3VyLCB1bnNpZ25lZCBsb25nIG1heCkKK3sKKwlleHQyX3NpbV9wcm9nbWV0ZXIgcHJvZ3Jlc3M7CisJY29uc3QgY2hhcgkqbGFiZWw7CisJZXJyY29kZV90CXJldHZhbDsKKworCXByb2dyZXNzID0gKGV4dDJfc2ltX3Byb2dtZXRlcikgcmZzLT5wcm9nX2RhdGE7CisJaWYgKG1heCA9PSAwKQorCQlyZXR1cm4gMDsKKwlpZiAoY3VyID09IDApIHsKKwkJaWYgKHByb2dyZXNzKQorCQkJZXh0MmZzX3Byb2dyZXNzX2Nsb3NlKHByb2dyZXNzKTsKKwkJcHJvZ3Jlc3MgPSAwOworCQlzd2l0Y2ggKHBhc3MpIHsKKwkJY2FzZSBFMl9SU1pfRVhURU5EX0lUQUJMRV9QQVNTOgorCQkJbGFiZWwgPSBfKCJFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlIik7CisJCQlicmVhazsKKwkJY2FzZSBFMl9SU1pfQkxPQ0tfUkVMT0NfUEFTUzoKKwkJCWxhYmVsID0gXygiUmVsb2NhdGluZyBibG9ja3MiKTsKKwkJCWJyZWFrOworCQljYXNlIEUyX1JTWl9JTk9ERV9TQ0FOX1BBU1M6CisJCQlsYWJlbCA9IF8oIlNjYW5uaW5nIGlub2RlIHRhYmxlIik7CisJCQlicmVhazsKKwkJY2FzZSBFMl9SU1pfSU5PREVfUkVGX1VQRF9QQVNTOgorCQkJbGFiZWwgPSBfKCJVcGRhdGluZyBpbm9kZSByZWZlcmVuY2VzIik7CisJCQlicmVhazsKKwkJY2FzZSBFMl9SU1pfTU9WRV9JVEFCTEVfUEFTUzoKKwkJCWxhYmVsID0gXygiTW92aW5nIGlub2RlIHRhYmxlIik7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWxhYmVsID0gXygiVW5rbm93biBwYXNzPyE/Iik7CisJCQlicmVhazsKKwkJfQorCQlwcmludGYoXygiQmVnaW4gcGFzcyAlZCAobWF4ID0gJWx1KVxuIiksIHBhc3MsIG1heCk7CisJCXJldHZhbCA9IGV4dDJmc19wcm9ncmVzc19pbml0KCZwcm9ncmVzcywgbGFiZWwsIDMwLAorCQkJCQkgICAgICA0MCwgbWF4LCAwKTsKKwkJaWYgKHJldHZhbCkKKwkJCXByb2dyZXNzID0gMDsKKwkJcmZzLT5wcm9nX2RhdGEgPSAodm9pZCAqKSBwcm9ncmVzczsKKwl9CisJaWYgKHByb2dyZXNzKQorCQlleHQyZnNfcHJvZ3Jlc3NfdXBkYXRlKHByb2dyZXNzLCBjdXIpOworCWlmIChjdXIgPj0gbWF4KSB7CisJCWlmIChwcm9ncmVzcykKKwkJCWV4dDJmc19wcm9ncmVzc19jbG9zZShwcm9ncmVzcyk7CisJCXByb2dyZXNzID0gMDsKKwkJcmZzLT5wcm9nX2RhdGEgPSAwOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGV0ZXJtaW5lX2ZzX3N0cmlkZShleHQyX2ZpbHN5cyBmcykKK3sKKwl1bnNpZ25lZCBpbnQJZ3JvdXA7CisJdW5zaWduZWQgbG9uZyBsb25nIHN1bTsKKwl1bnNpZ25lZCBpbnQJaGFzX3NiLCBwcmV2X2hhc19zYiA9IDAsIG51bTsKKwlpbnQJCWlfc3RyaWRlLCBiX3N0cmlkZTsKKwlpbnQJCWZsZXhiZ19zaXplID0gMSA8PCBmcy0+c3VwZXItPnNfbG9nX2dyb3Vwc19wZXJfZmxleDsKKworCWlmIChmcy0+c3RyaWRlKQorCQlyZXR1cm47CisJbnVtID0gMDsgc3VtID0gMDsKKwlmb3IgKGdyb3VwID0gMDsgZ3JvdXAgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgZ3JvdXArKykgeworCQloYXNfc2IgPSBleHQyZnNfYmdfaGFzX3N1cGVyKGZzLCBncm91cCk7CisJCWlmIChncm91cCA9PSAwIHx8IGhhc19zYiAhPSBwcmV2X2hhc19zYikKKwkJCWdvdG8gbmV4dDsKKwkJYl9zdHJpZGUgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgZ3JvdXApIC0KKwkJCWV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBncm91cCAtIDEpIC0KKwkJCWZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCQlpX3N0cmlkZSA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBncm91cCkgLQorCQkJZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGdyb3VwIC0gMSkgLQorCQkJZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCWlmIChiX3N0cmlkZSAhPSBpX3N0cmlkZSB8fAorCQkgICAgYl9zdHJpZGUgPCAwIHx8CisJCSAgICAoZmxleGJnX3NpemUgPiAxICYmIChncm91cCAlIGZsZXhiZ19zaXplID09IDApKSkKKwkJCWdvdG8gbmV4dDsKKworCQkvKiBwcmludGYoImdyb3VwICVkIGhhcyBzdHJpZGUgJWRcbiIsIGdyb3VwLCBiX3N0cmlkZSk7ICovCisJCXN1bSArPSBiX3N0cmlkZTsKKwkJbnVtKys7CisKKwluZXh0OgorCQlwcmV2X2hhc19zYiA9IGhhc19zYjsKKwl9CisKKwlpZiAoZnMtPmdyb3VwX2Rlc2NfY291bnQgPiAxMiAmJiBudW0gPCAzKQorCQlzdW0gPSAwOworCisJaWYgKG51bSkKKwkJZnMtPnN0cmlkZSA9IHN1bSAvIG51bTsKKwllbHNlCisJCWZzLT5zdHJpZGUgPSAwOworCisJZnMtPnN1cGVyLT5zX3JhaWRfc3RyaWRlID0gZnMtPnN0cmlkZTsKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisKKyNpZiAwCisJaWYgKGZzLT5zdHJpZGUpCisJCXByaW50ZigiVXNpbmcgUkFJRCBzdHJpZGUgb2YgJWRcbiIsIGZzLT5zdHJpZGUpOworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIGJpZ2FsbG9jX2NoZWNrKGV4dDJfZmlsc3lzIGZzLCBpbnQgZm9yY2UpCit7CisJaWYgKCFmb3JjZSAmJiBleHQyZnNfaGFzX2ZlYXR1cmVfYmlnYWxsb2MoZnMtPnN1cGVyKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgXygiXG5SZXNpemluZyBiaWdhbGxvYyBmaWxlIHN5c3RlbXMgaGFzICIKKwkJCQkJIm5vdCBiZWVuIGZ1bGx5IHRlc3RlZC4gIFByb2NlZWQgYXRcbiIKKwkJCQkJInlvdXIgb3duIHJpc2shICBVc2UgdGhlIGZvcmNlIG9wdGlvbiAiCisJCQkJCSJpZiB5b3Ugd2FudCB0byBnbyBhaGVhZCBhbnl3YXkuXG5cbiIpKTsKKwkJZXhpdCgxKTsKKwl9Cit9CisKK3N0YXRpYyBpbnQgcmVzaXplMmZzX3NldHVwX3RkYihjb25zdCBjaGFyICpkZXZpY2UsIGNoYXIgKnVuZG9fZmlsZSwKKwkJCSAgICAgICBpb19tYW5hZ2VyICppb19wdHIpCit7CisJZXJyY29kZV90IHJldHZhbCA9IEVOT01FTTsKKwljb25zdCBjaGFyICp0ZGJfZGlyID0gTlVMTDsKKwljaGFyICp0ZGJfZmlsZSA9IE5VTEw7CisJY2hhciAqZGV2X25hbWUsICp0bXBfbmFtZTsKKworCS8qIChyZSlvcGVuIGEgc3BlY2lmaWMgdW5kbyBmaWxlICovCisJaWYgKHVuZG9fZmlsZSAmJiB1bmRvX2ZpbGVbMF0gIT0gMCkgeworCQlyZXR2YWwgPSBzZXRfdW5kb19pb19iYWNraW5nX21hbmFnZXIoKmlvX3B0cik7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycjsKKwkJKmlvX3B0ciA9IHVuZG9faW9fbWFuYWdlcjsKKwkJcmV0dmFsID0gc2V0X3VuZG9faW9fYmFja3VwX2ZpbGUodW5kb19maWxlKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyOworCQlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJCSAidXNpbmcgdGhlIGNvbW1hbmQ6XG4iCisJCQkgIiAgICBlMnVuZG8gJXMgJXNcblxuIiksCisJCQl1bmRvX2ZpbGUsIGRldmljZSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJLyoKKwkgKiBDb25maWd1cmF0aW9uIHZpYSBhIGNvbmYgZmlsZSB3b3VsZCBiZQorCSAqIG5pY2UKKwkgKi8KKwl0ZGJfZGlyID0gZ2V0ZW52KCJFMkZTUFJPR1NfVU5ET19ESVIiKTsKKwlpZiAoIXRkYl9kaXIpCisJCXRkYl9kaXIgPSAiL3Zhci9saWIvZTJmc3Byb2dzIjsKKworCWlmICghc3RyY21wKHRkYl9kaXIsICJub25lIikgfHwgKHRkYl9kaXJbMF0gPT0gMCkgfHwKKwkgICAgYWNjZXNzKHRkYl9kaXIsIFdfT0spKQorCQlyZXR1cm4gMDsKKworCXRtcF9uYW1lID0gc3RyZHVwKGRldmljZSk7CisJaWYgKCF0bXBfbmFtZSkKKwkJZ290byBlcnJvdXQ7CisJZGV2X25hbWUgPSBiYXNlbmFtZSh0bXBfbmFtZSk7CisJdGRiX2ZpbGUgPSBtYWxsb2Moc3RybGVuKHRkYl9kaXIpICsgMTEgKyBzdHJsZW4oZGV2X25hbWUpICsgNyArIDEpOworCWlmICghdGRiX2ZpbGUpIHsKKwkJZnJlZSh0bXBfbmFtZSk7CisJCWdvdG8gZXJyb3V0OworCX0KKwlzcHJpbnRmKHRkYl9maWxlLCAiJXMvcmVzaXplMmZzLSVzLmUydW5kbyIsIHRkYl9kaXIsIGRldl9uYW1lKTsKKwlmcmVlKHRtcF9uYW1lKTsKKworCWlmICgodW5saW5rKHRkYl9maWxlKSA8IDApICYmIChlcnJubyAhPSBFTk9FTlQpKSB7CisJCXJldHZhbCA9IGVycm5vOworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIGRlbGV0ZSAlcyIpLCB0ZGJfZmlsZSk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2tpbmdfbWFuYWdlcigqaW9fcHRyKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwkqaW9fcHRyID0gdW5kb19pb19tYW5hZ2VyOworCXJldHZhbCA9IHNldF91bmRvX2lvX2JhY2t1cF9maWxlKHRkYl9maWxlKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludGYoXygiT3ZlcndyaXRpbmcgZXhpc3RpbmcgZmlsZXN5c3RlbTsgdGhpcyBjYW4gYmUgdW5kb25lICIKKwkJICJ1c2luZyB0aGUgY29tbWFuZDpcbiIKKwkJICIgICAgZTJ1bmRvICVzICVzXG5cbiIpLCB0ZGJfZmlsZSwgZGV2aWNlKTsKKworCWZyZWUodGRiX2ZpbGUpOworCXJldHVybiAwOworZXJyb3V0OgorCWZyZWUodGRiX2ZpbGUpOworZXJyOgorCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsICIlcyIsCisJCV8oIndoaWxlIHRyeWluZyB0byBzZXR1cCB1bmRvIGZpbGVcbiIpKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCitpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiogYXJndikKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfZmlsc3lzCWZzOworCWludAkJYzsKKwlpbnQJCWZsYWdzID0gMDsKKwlpbnQJCWZsdXNoID0gMDsKKwlpbnQJCWZvcmNlID0gMDsKKwlpbnQJCWlvX2ZsYWdzID0gMDsKKwlpbnQJCWZvcmNlX21pbl9zaXplID0gMDsKKwlpbnQJCXByaW50X21pbl9zaXplID0gMDsKKwlpbnQJCWZkLCByZXQ7CisJYmxrNjRfdAkJbmV3X3NpemUgPSAwOworCWJsazY0X3QJCW1heF9zaXplID0gMDsKKwlibGs2NF90CQltaW5fc2l6ZSA9IDA7CisJaW9fbWFuYWdlcglpb19wdHI7CisJY2hhcgkJKm5ld19zaXplX3N0ciA9IDA7CisJaW50CQl1c2Vfc3RyaWRlID0gLTE7CisJZXh0MmZzX3N0cnVjdF9zdGF0IHN0X2J1ZjsKKwlfX3M2NAkJbmV3X2ZpbGVfc2l6ZTsKKwl1bnNpZ25lZCBpbnQJc3lzX3BhZ2Vfc2l6ZSA9IDQwOTY7CisJdW5zaWduZWQgaW50CWJsb2Nrc2l6ZTsKKwlsb25nCQlzeXN2YWw7CisJaW50CQlsZW4sIG1vdW50X2ZsYWdzOworCWNoYXIJCSptdHB0LCAqdW5kb19maWxlID0gTlVMTDsKKworI2lmZGVmIEVOQUJMRV9OTFMKKwlzZXRsb2NhbGUoTENfTUVTU0FHRVMsICIiKTsKKwlzZXRsb2NhbGUoTENfQ1RZUEUsICIiKTsKKwliaW5kdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUsIExPQ0FMRURJUik7CisJdGV4dGRvbWFpbihOTFNfQ0FUX05BTUUpOworCXNldF9jb21fZXJyX2dldHRleHQoZ2V0dGV4dCk7CisjZW5kaWYKKworCWFkZF9lcnJvcl90YWJsZSgmZXRfZXh0Ml9lcnJvcl90YWJsZSk7CisKKwlmcHJpbnRmIChzdGRlcnIsICJyZXNpemUyZnMgJXMgKCVzKVxuIiwKKwkJIEUyRlNQUk9HU19WRVJTSU9OLCBFMkZTUFJPR1NfREFURSk7CisJaWYgKGFyZ2MgJiYgKmFyZ3YpCisJCXByb2dyYW1fbmFtZSA9ICphcmd2OworCisJd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJkOmZGaE1QcFM6YnN6OiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2gnOgorCQkJdXNhZ2UocHJvZ3JhbV9uYW1lKTsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWZvcmNlID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdGJzoKKwkJCWZsdXNoID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdNJzoKKwkJCWZvcmNlX21pbl9zaXplID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdQJzoKKwkJCXByaW50X21pbl9zaXplID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWZsYWdzIHw9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdwJzoKKwkJCWZsYWdzIHw9IFJFU0laRV9QRVJDRU5UX0NPTVBMRVRFOworCQkJYnJlYWs7CisJCWNhc2UgJ1MnOgorCQkJdXNlX3N0cmlkZSA9IGF0b2kob3B0YXJnKTsKKwkJCWJyZWFrOworCQljYXNlICdiJzoKKwkJCWZsYWdzIHw9IFJFU0laRV9FTkFCTEVfNjRCSVQ7CisJCQlicmVhazsKKwkJY2FzZSAncyc6CisJCQlmbGFncyB8PSBSRVNJWkVfRElTQUJMRV82NEJJVDsKKwkJCWJyZWFrOworCQljYXNlICd6JzoKKwkJCXVuZG9fZmlsZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJdXNhZ2UocHJvZ3JhbV9uYW1lKTsKKwkJfQorCX0KKwlpZiAob3B0aW5kID09IGFyZ2MpCisJCXVzYWdlKHByb2dyYW1fbmFtZSk7CisKKwlkZXZpY2VfbmFtZSA9IGFyZ3Zbb3B0aW5kKytdOworCWlmIChvcHRpbmQgPCBhcmdjKQorCQluZXdfc2l6ZV9zdHIgPSBhcmd2W29wdGluZCsrXTsKKwlpZiAob3B0aW5kIDwgYXJnYykKKwkJdXNhZ2UocHJvZ3JhbV9uYW1lKTsKKworCWlvX29wdGlvbnMgPSBzdHJjaHIoZGV2aWNlX25hbWUsICc/Jyk7CisJaWYgKGlvX29wdGlvbnMpCisJCSppb19vcHRpb25zKysgPSAwOworCisJLyoKKwkgKiBGaWd1cmUgb3V0IHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2UgaXMgbW91bnRlZCwgYW5kIGlmIGl0IGlzCisJICogd2hlcmUgaXQgaXMgbW91bnRlZC4KKwkgKi8KKwlsZW49ODA7CisJd2hpbGUgKDEpIHsKKwkJbXRwdCA9IG1hbGxvYyhsZW4pOworCQlpZiAoIW10cHQpCisJCQlyZXR1cm4gRU5PTUVNOworCQltdHB0W2xlbi0xXSA9IDA7CisJCXJldHZhbCA9IGV4dDJmc19jaGVja19tb3VudF9wb2ludChkZXZpY2VfbmFtZSwgJm1vdW50X2ZsYWdzLAorCQkJCQkJICBtdHB0LCBsZW4pOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKCJleHQyZnNfY2hlY2tfbW91bnRfcG9pbnQiLCByZXR2YWwsCisJCQkJXygid2hpbGUgZGV0ZXJtaW5pbmcgd2hldGhlciAlcyBpcyBtb3VudGVkLiIpLAorCQkJCWRldmljZV9uYW1lKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJaWYgKCEobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpIHx8IChtdHB0W2xlbi0xXSA9PSAwKSkKKwkJCWJyZWFrOworCQlmcmVlKG10cHQpOworCQlsZW4gPSAyICogbGVuOworCX0KKworCWZkID0gZXh0MmZzX29wZW5fZmlsZShkZXZpY2VfbmFtZSwgT19SRFdSLCAwKTsKKwlpZiAoZmQgPCAwKSB7CisJCWNvbV9lcnIoIm9wZW4iLCBlcnJubywgXygid2hpbGUgb3BlbmluZyAlcyIpLAorCQkJZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCXJldCA9IGV4dDJmc19mc3RhdChmZCwgJnN0X2J1Zik7CisJaWYgKHJldCA8IDApIHsKKwkJY29tX2Vycigib3BlbiIsIGVycm5vLAorCQkJXygid2hpbGUgZ2V0dGluZyBzdGF0IGluZm9ybWF0aW9uIGZvciAlcyIpLAorCQkJZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCWlmIChmbHVzaCkgeworCQlyZXR2YWwgPSBleHQyZnNfc3luY19kZXZpY2UoZmQsIDEpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gZmx1c2ggJXMiKSwKKwkJCQlkZXZpY2VfbmFtZSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJaWYgKCFTX0lTUkVHKHN0X2J1Zi5zdF9tb2RlICkpIHsKKwkJY2xvc2UoZmQpOworCQlmZCA9IC0xOworCX0KKworI2lmZGVmIENPTkZJR19URVNUSU9fREVCVUcKKwlpZiAoZ2V0ZW52KCJURVNUX0lPX0ZMQUdTIikgfHwgZ2V0ZW52KCJURVNUX0lPX0JMT0NLIikpIHsKKwkJaW9fcHRyID0gdGVzdF9pb19tYW5hZ2VyOworCQl0ZXN0X2lvX2JhY2tpbmdfbWFuYWdlciA9IHVuaXhfaW9fbWFuYWdlcjsKKwl9IGVsc2UKKyNlbmRpZgorCQlpb19wdHIgPSB1bml4X2lvX21hbmFnZXI7CisKKwlpZiAoIShtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkpCisJCWlvX2ZsYWdzID0gRVhUMl9GTEFHX1JXIHwgRVhUMl9GTEFHX0VYQ0xVU0lWRTsKKworCWlvX2ZsYWdzIHw9IEVYVDJfRkxBR182NEJJVFM7CisJaWYgKHVuZG9fZmlsZSkgeworCQlyZXR2YWwgPSByZXNpemUyZnNfc2V0dXBfdGRiKGRldmljZV9uYW1lLCB1bmRvX2ZpbGUsICZpb19wdHIpOworCQlpZiAocmV0dmFsKQorCQkJZXhpdCgxKTsKKwl9CisJcmV0dmFsID0gZXh0MmZzX29wZW4yKGRldmljZV9uYW1lLCBpb19vcHRpb25zLCBpb19mbGFncywKKwkJCSAgICAgIDAsIDAsIGlvX3B0ciwgJmZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCByZXR2YWwsIF8oIndoaWxlIHRyeWluZyB0byBvcGVuICVzIiksCisJCQlkZXZpY2VfbmFtZSk7CisJCXByaW50ZigiJXMiLCBfKCJDb3VsZG4ndCBmaW5kIHZhbGlkIGZpbGVzeXN0ZW0gc3VwZXJibG9jay5cbiIpKTsKKwkJZXhpdCAoMSk7CisJfQorCWZzLT5kZWZhdWx0X2JpdG1hcF90eXBlID0gRVhUMkZTX0JNQVA2NF9SQlRSRUU7CisKKwkvKgorCSAqIEJlZm9yZSBhY3Rpbmcgb24gYW4gdW5tb3VudGVkIGZpbGVzeXN0ZW0sIG1ha2Ugc3VyZSBpdCdzIG9rLAorCSAqIHVubGVzcyB0aGUgdXNlciBpcyBmb3JjaW5nIGl0LgorCSAqCisJICogV2UgZG8gRVJST1IgYW5kIFZBTElEIGNoZWNrcyBldmVuIGlmIHdlJ3JlIG9ubHkgcHJpbnRpbmcgdGhlCisJICogbWluaW1pbXVtIHNpemUsIGJlY2F1c2UgdHJhdmVyc2FsIG9mIGEgYmFkbHkgZGFtYWdlZCBmaWxlc3lzdGVtCisJICogY2FuIGNhdXNlIGlzc3VlcyBhcyB3ZWxsLiAgV2UgZG9uJ3QgcmVxdWlyZSBpdCB0byBiZSBmc2NrZWQgYWZ0ZXIKKwkgKiB0aGUgbGFzdCBtb3VudCB0aW1lIGluIHRoaXMgY2FzZSwgdGhvdWdoLCBhcyB0aGlzIGlzIGEgYml0IGxlc3MKKwkgKiByaXNreS4KKwkgKi8KKwlpZiAoIWZvcmNlICYmICEobW91bnRfZmxhZ3MgJiBFWFQyX01GX01PVU5URUQpKSB7CisJCWludCBjaGVja2l0ID0gMDsKKworCQlpZiAoZnMtPnN1cGVyLT5zX3N0YXRlICYgRVhUMl9FUlJPUl9GUykKKwkJCWNoZWNraXQgPSAxOworCisJCWlmICgoZnMtPnN1cGVyLT5zX3N0YXRlICYgRVhUMl9WQUxJRF9GUykgPT0gMCkKKwkJCWNoZWNraXQgPSAxOworCisJCWlmICgoZnMtPnN1cGVyLT5zX2xhc3RjaGVjayA8IGZzLT5zdXBlci0+c19tdGltZSkgJiYKKwkJICAgICFwcmludF9taW5fc2l6ZSkKKwkJCWNoZWNraXQgPSAxOworCisJCWlmIChjaGVja2l0KSB7CisJCQlmcHJpbnRmKHN0ZGVyciwKKwkJCQlfKCJQbGVhc2UgcnVuICdlMmZzY2sgLWYgJXMnIGZpcnN0LlxuXG4iKSwKKwkJCQlkZXZpY2VfbmFtZSk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJLyoKKwkgKiBDaGVjayBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBmZWF0dXJlIHNldHMuICBXZSBuZWVkIHRvCisJICogYmUgbW9yZSBzdHJpbmdlbnQgdGhhbiBleHQyZnNfb3BlbigpLgorCSAqLworCWlmIChmcy0+c3VwZXItPnNfZmVhdHVyZV9jb21wYXQgJiB+RVhUMl9MSUJfRkVBVFVSRV9DT01QQVRfU1VQUCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgRVhUMl9FVF9VTlNVUFBfRkVBVFVSRSwKKwkJCSIoJXMpIiwgZGV2aWNlX25hbWUpOworCQlleGl0KDEpOworCX0KKworCW1pbl9zaXplID0gY2FsY3VsYXRlX21pbmltdW1fcmVzaXplX3NpemUoZnMsIGZsYWdzKTsKKworCWlmIChwcmludF9taW5fc2l6ZSkgeworCQlwcmludGYoXygiRXN0aW1hdGVkIG1pbmltdW0gc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbTogJWxsdVxuIiksCisJCSAgICAgICBtaW5fc2l6ZSk7CisJCWV4aXQoMCk7CisJfQorCisJLyogRGV0ZXJtaW5lIHRoZSBzeXN0ZW0gcGFnZSBzaXplIGlmIHBvc3NpYmxlICovCisjaWZkZWYgSEFWRV9TWVNDT05GCisjaWYgKCFkZWZpbmVkKF9TQ19QQUdFU0laRSkgJiYgZGVmaW5lZChfU0NfUEFHRV9TSVpFKSkKKyNkZWZpbmUgX1NDX1BBR0VTSVpFIF9TQ19QQUdFX1NJWkUKKyNlbmRpZgorI2lmZGVmIF9TQ19QQUdFU0laRQorCXN5c3ZhbCA9IHN5c2NvbmYoX1NDX1BBR0VTSVpFKTsKKwlpZiAoc3lzdmFsID4gMCkKKwkJc3lzX3BhZ2Vfc2l6ZSA9IHN5c3ZhbDsKKyNlbmRpZiAvKiBfU0NfUEFHRVNJWkUgKi8KKyNlbmRpZiAvKiBIQVZFX1NZU0NPTkYgKi8KKworCS8qCisJICogR2V0IHRoZSBzaXplIG9mIHRoZSBjb250YWluaW5nIHBhcnRpdGlvbiwgYW5kIHVzZSB0aGlzIGZvcgorCSAqIGRlZmF1bHRzIGFuZCBmb3IgbWFraW5nIHN1cmUgdGhlIG5ldyBmaWxlc3lzdGVtIGRvZXNuJ3QKKwkgKiBleGNlZWQgdGhlIHBhcnRpdGlvbiBzaXplLgorCSAqLworCWJsb2Nrc2l6ZSA9IGZzLT5ibG9ja3NpemU7CisJcmV0dmFsID0gZXh0MmZzX2dldF9kZXZpY2Vfc2l6ZTIoZGV2aWNlX25hbWUsIGJsb2Nrc2l6ZSwKKwkJCQkJICZtYXhfc2l6ZSk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgcmV0dmFsLCAiJXMiLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIGRldGVybWluZSBmaWxlc3lzdGVtIHNpemUiKSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChmb3JjZV9taW5fc2l6ZSkKKwkJbmV3X3NpemUgPSBtaW5fc2l6ZTsKKwllbHNlIGlmIChuZXdfc2l6ZV9zdHIpIHsKKwkJbmV3X3NpemUgPSBwYXJzZV9udW1fYmxvY2tzMihuZXdfc2l6ZV9zdHIsCisJCQkJCSAgICAgZnMtPnN1cGVyLT5zX2xvZ19ibG9ja19zaXplKTsKKwkJaWYgKG5ld19zaXplID09IDApIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oIkludmFsaWQgbmV3IHNpemU6ICVzXG4iKSwgbmV3X3NpemVfc3RyKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9IGVsc2UgeworCQluZXdfc2l6ZSA9IG1heF9zaXplOworCQkvKiBSb3VuZCBkb3duIHRvIGFuIGV2ZW4gbXVsdGlwbGUgb2YgYSBwYWdlc2l6ZSAqLworCQlpZiAoc3lzX3BhZ2Vfc2l6ZSA+IGJsb2Nrc2l6ZSkKKwkJCW5ld19zaXplICY9IH4oKHN5c19wYWdlX3NpemUgLyBibG9ja3NpemUpLTEpOworCX0KKwkvKiBJZiBjaGFuZ2luZyA2NGJpdCwgZG9uJ3QgY2hhbmdlIHRoZSBmaWxlc3lzdGVtIHNpemUuICovCisJaWYgKGZsYWdzICYgKFJFU0laRV9ESVNBQkxFXzY0QklUIHwgUkVTSVpFX0VOQUJMRV82NEJJVCkpIHsKKwkJbmV3X3NpemUgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJfQorCWlmICghZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpIHsKKwkJLyogVGFrZSAxNlQgZG93biB0byAyXjMyLTEgYmxvY2tzICovCisJCWlmIChuZXdfc2l6ZSA9PSAoMVVMTCA8PCAzMikpCisJCQluZXdfc2l6ZS0tOworCQllbHNlIGlmIChuZXdfc2l6ZSA+ICgxVUxMIDw8IDMyKSkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiTmV3IHNpemUgdG9vIGxhcmdlIHRvIGJlICIKKwkJCQkgICJleHByZXNzZWQgaW4gMzIgYml0c1xuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCWlmICghZm9yY2UgJiYgbmV3X3NpemUgPCBtaW5fc2l6ZSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCV8oIk5ldyBzaXplIHNtYWxsZXIgdGhhbiBtaW5pbXVtICglbGx1KVxuIiksIG1pbl9zaXplKTsKKwkJZXhpdCgxKTsKKwl9CisJaWYgKHVzZV9zdHJpZGUgPj0gMCkgeworCQlpZiAodXNlX3N0cmlkZSA+PSAoaW50KSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cCkgeworCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsICIlcyIsCisJCQkJXygiSW52YWxpZCBzdHJpZGUgbGVuZ3RoIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlmcy0+c3RyaWRlID0gZnMtPnN1cGVyLT5zX3JhaWRfc3RyaWRlID0gdXNlX3N0cmlkZTsKKwkJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCX0gZWxzZQorCQkgIGRldGVybWluZV9mc19zdHJpZGUoZnMpOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVzaXppbmcgYSBwbGFpbiBmaWxlLCBhbmQgaXQncyBub3QgYmlnIGVub3VnaCwKKwkgKiBhdXRvbWF0aWNhbGx5IGV4dGVuZCBpdCBpbiBhIHNwYXJzZSBmYXNoaW9uIGJ5IHdyaXRpbmcgdGhlCisJICogbGFzdCByZXF1ZXN0ZWQgYmxvY2suCisJICovCisJbmV3X2ZpbGVfc2l6ZSA9ICgoX191NjQpIG5ld19zaXplKSAqIGJsb2Nrc2l6ZTsKKwlpZiAoKF9fdTY0KSBuZXdfZmlsZV9zaXplID4KKwkgICAgKCgoX191NjQpIDEpIDw8IChzaXplb2Yoc3RfYnVmLnN0X3NpemUpKjggLSAxKSkgLSAxKQorCQlmZCA9IC0xOworCWlmICgobmV3X2ZpbGVfc2l6ZSA+IHN0X2J1Zi5zdF9zaXplKSAmJgorCSAgICAoZmQgPiAwKSkgeworCQlpZiAoKGV4dDJmc19sbHNlZWsoZmQsIG5ld19maWxlX3NpemUtMSwgU0VFS19TRVQpID49IDApICYmCisJCSAgICAod3JpdGUoZmQsICIwIiwgMSkgPT0gMSkpCisJCQltYXhfc2l6ZSA9IG5ld19zaXplOworCX0KKwlpZiAoIWZvcmNlICYmIChuZXdfc2l6ZSA+IG1heF9zaXplKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIGNvbnRhaW5pbmcgcGFydGl0aW9uIChvciBkZXZpY2UpIgorCQkJIiBpcyBvbmx5ICVsbHUgKCVkaykgYmxvY2tzLlxuWW91IHJlcXVlc3RlZCBhIG5ldyBzaXplIgorCQkJIiBvZiAlbGx1IGJsb2Nrcy5cblxuIiksIG1heF9zaXplLAorCQkJYmxvY2tzaXplIC8gMTAyNCwgbmV3X3NpemUpOworCQlleGl0KDEpOworCX0KKwlpZiAoKGZsYWdzICYgUkVTSVpFX0RJU0FCTEVfNjRCSVQpICYmIChmbGFncyAmIFJFU0laRV9FTkFCTEVfNjRCSVQpKSB7CisJCWZwcmludGYoc3RkZXJyLCBfKCJDYW5ub3Qgc2V0IGFuZCB1bnNldCA2NGJpdCBmZWF0dXJlLlxuIikpOworCQlleGl0KDEpOworCX0gZWxzZSBpZiAoZmxhZ3MgJiAoUkVTSVpFX0RJU0FCTEVfNjRCSVQgfCBSRVNJWkVfRU5BQkxFXzY0QklUKSkgeworCQlpZiAobmV3X3NpemUgPj0gKDFVTEwgPDwgMzIpKSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgXygiQ2Fubm90IGNoYW5nZSB0aGUgNjRiaXQgZmVhdHVyZSAiCisJCQkJIm9uIGEgZmlsZXN5c3RlbSB0aGF0IGlzIGxhcmdlciB0aGFuICIKKwkJCQkiMl4zMiBibG9ja3MuXG4iKSk7CisJCQlleGl0KDEpOworCQl9CisJCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIkNhbm5vdCBjaGFuZ2UgdGhlIDY0Yml0IGZlYXR1cmUgIgorCQkJCSJ3aGlsZSB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLlxuIikpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoZmxhZ3MgJiBSRVNJWkVfRU5BQkxFXzY0QklUICYmCisJCSAgICAhZXh0MmZzX2hhc19mZWF0dXJlX2V4dGVudHMoZnMtPnN1cGVyKSkgeworCQkJZnByaW50ZihzdGRlcnIsIF8oIlBsZWFzZSBlbmFibGUgdGhlIGV4dGVudHMgZmVhdHVyZSAiCisJCQkJIndpdGggdHVuZTJmcyBiZWZvcmUgZW5hYmxpbmcgdGhlIDY0Yml0ICIKKwkJCQkiZmVhdHVyZS5cbiIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9IGVsc2UgaWYgKG5ld19zaXplID09IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAlbGx1ICglZGspICIKKwkJCSJibG9ja3MgbG9uZy4gIE5vdGhpbmcgdG8gZG8hXG5cbiIpLCBuZXdfc2l6ZSwKKwkJCWJsb2Nrc2l6ZSAvIDEwMjQpOworCQlleGl0KDApOworCX0KKwlpZiAoKGZsYWdzICYgUkVTSVpFX0VOQUJMRV82NEJJVCkgJiYKKwkgICAgZXh0MmZzX2hhc19mZWF0dXJlXzY0Yml0KGZzLT5zdXBlcikpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oIlRoZSBmaWxlc3lzdGVtIGlzIGFscmVhZHkgNjQtYml0LlxuIikpOworCQlleGl0KDApOworCX0KKwlpZiAoKGZsYWdzICYgUkVTSVpFX0RJU0FCTEVfNjRCSVQpICYmCisJICAgICFleHQyZnNfaGFzX2ZlYXR1cmVfNjRiaXQoZnMtPnN1cGVyKSkgeworCQlmcHJpbnRmKHN0ZGVyciwgXygiVGhlIGZpbGVzeXN0ZW0gaXMgYWxyZWFkeSAzMi1iaXQuXG4iKSk7CisJCWV4aXQoMCk7CisJfQorCWlmIChtb3VudF9mbGFncyAmIEVYVDJfTUZfTU9VTlRFRCkgeworCQliaWdhbGxvY19jaGVjayhmcywgZm9yY2UpOworCQlyZXR2YWwgPSBvbmxpbmVfcmVzaXplX2ZzKGZzLCBtdHB0LCAmbmV3X3NpemUsIGZsYWdzKTsKKwl9IGVsc2UgeworCQliaWdhbGxvY19jaGVjayhmcywgZm9yY2UpOworCQlpZiAoZmxhZ3MgJiBSRVNJWkVfRU5BQkxFXzY0QklUKQorCQkJcHJpbnRmKF8oIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LlxuIikpOworCQllbHNlIGlmIChmbGFncyAmIFJFU0laRV9ESVNBQkxFXzY0QklUKQorCQkJcHJpbnRmKF8oIkNvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gMzItYml0LlxuIikpOworCQllbHNlCisJCQlwcmludGYoXygiUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gIgorCQkJCSAiJXMgdG8gJWxsdSAoJWRrKSBibG9ja3MuXG4iKSwKKwkJCSAgICAgICBkZXZpY2VfbmFtZSwgbmV3X3NpemUsIGJsb2Nrc2l6ZSAvIDEwMjQpOworCQlyZXR2YWwgPSByZXNpemVfZnMoZnMsICZuZXdfc2l6ZSwgZmxhZ3MsCisJCQkJICAgKChmbGFncyAmIFJFU0laRV9QRVJDRU5UX0NPTVBMRVRFKSA/CisJCQkJICAgIHJlc2l6ZV9wcm9ncmVzc19mdW5jIDogMCkpOworCX0KKwlmcmVlKG10cHQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwgXygid2hpbGUgdHJ5aW5nIHRvIHJlc2l6ZSAlcyIpLAorCQkJZGV2aWNlX25hbWUpOworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCV8oIlBsZWFzZSBydW4gJ2UyZnNjayAtZnkgJXMnIHRvIGZpeCB0aGUgZmlsZXN5c3RlbVxuIgorCQkJICAiYWZ0ZXIgdGhlIGFib3J0ZWQgcmVzaXplIG9wZXJhdGlvbi5cbiIpLAorCQkJZGV2aWNlX25hbWUpOworCQlleHQyZnNfY2xvc2VfZnJlZSgmZnMpOworCQlleGl0KDEpOworCX0KKwlwcmludGYoXygiVGhlIGZpbGVzeXN0ZW0gb24gJXMgaXMgbm93ICVsbHUgKCVkaykgYmxvY2tzIGxvbmcuXG5cbiIpLAorCSAgICAgICBkZXZpY2VfbmFtZSwgbmV3X3NpemUsIGJsb2Nrc2l6ZSAvIDEwMjQpOworCisJaWYgKChzdF9idWYuc3Rfc2l6ZSA+IG5ld19maWxlX3NpemUpICYmCisJICAgIChmZCA+IDApKSB7CisjaWZkZWYgSEFWRV9GVFJVTkNBVEU2NAorCQlyZXR2YWwgPSBmdHJ1bmNhdGU2NChmZCwgbmV3X2ZpbGVfc2l6ZSk7CisjZWxzZQorCQlyZXR2YWwgPSAwOworCQkvKiBPbmx5IHRydW5jYXRlIGlmIG5ld19maWxlX3NpemUgZG9lc24ndCBvdmVyZmxvdyBvZmZfdCAqLworCQlpZiAoKChvZmZfdCkgbmV3X2ZpbGVfc2l6ZSkgPT0gbmV3X2ZpbGVfc2l6ZSkKKwkJCXJldHZhbCA9IGZ0cnVuY2F0ZShmZCwgKG9mZl90KSBuZXdfZmlsZV9zaXplKTsKKyNlbmRpZgorCQlpZiAocmV0dmFsKQorCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIHJldHZhbCwKKwkJCQlfKCJ3aGlsZSB0cnlpbmcgdG8gdHJ1bmNhdGUgJXMiKSwKKwkJCQlkZXZpY2VfbmFtZSk7CisJfQorCWlmIChmZCA+IDApCisJCWNsb3NlKGZkKTsKKwlyZW1vdmVfZXJyb3JfdGFibGUoJmV0X2V4dDJfZXJyb3JfdGFibGUpOworCXJldHVybiAoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL29ubGluZS5jIGIvZTJmc3Byb2dzL3Jlc2l6ZS9vbmxpbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTRkODI4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9vbmxpbmUuYwpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqIG9ubGluZS5jIC0tLSBEbyBvbi1saW5lIHJlc2l6aW5nIG9mIHRoZSBleHQzIGZpbGVzeXN0ZW0KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInJlc2l6ZTJmcy5oIgorI2lmZGVmIEhBVkVfU1lTX0lPQ1RMX0gKKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworZXh0ZXJuIGNoYXIgKnByb2dyYW1fbmFtZTsKKworI2RlZmluZSBNQVhfMzJfTlVNICgoKCh1bnNpZ25lZCBsb25nIGxvbmcpIDEpIDw8IDMyKSAtIDEpCisKKyNpZmRlZiBfX2xpbnV4X18KK3N0YXRpYyBpbnQgcGFyc2VfdmVyc2lvbl9udW1iZXIoY29uc3QgY2hhciAqcykKK3sKKwlpbnQJbWFqb3IsIG1pbm9yLCByZXY7CisJY2hhcgkqZW5kcHRyOworCWNvbnN0IGNoYXIgKmNwID0gczsKKworCWlmICghcykKKwkJcmV0dXJuIDA7CisJbWFqb3IgPSBzdHJ0b2woY3AsICZlbmRwdHIsIDEwKTsKKwlpZiAoY3AgPT0gZW5kcHRyIHx8ICplbmRwdHIgIT0gJy4nKQorCQlyZXR1cm4gMDsKKwljcCA9IGVuZHB0ciArIDE7CisJbWlub3IgPSBzdHJ0b2woY3AsICZlbmRwdHIsIDEwKTsKKwlpZiAoY3AgPT0gZW5kcHRyIHx8ICplbmRwdHIgIT0gJy4nKQorCQlyZXR1cm4gMDsKKwljcCA9IGVuZHB0ciArIDE7CisJcmV2ID0gc3RydG9sKGNwLCAmZW5kcHRyLCAxMCk7CisJaWYgKGNwID09IGVuZHB0cikKKwkJcmV0dXJuIDA7CisJcmV0dXJuICgoKChtYWpvciAqIDI1NikgKyBtaW5vcikgKiAyNTYpICsgcmV2KTsKK30KKworI2RlZmluZSBWRVJTSU9OX0NPREUoYSxiLGMpICgoKGEpIDw8IDE2KSArICgoYikgPDwgOCkgKyAoYykpCisKKyNlbmRpZgorCitlcnJjb2RlX3Qgb25saW5lX3Jlc2l6ZV9mcyhleHQyX2ZpbHN5cyBmcywgY29uc3QgY2hhciAqbXRwdCwKKwkJCSAgIGJsazY0X3QgKm5ld19zaXplLCBpbnQgZmxhZ3MgRVhUMkZTX0FUVFIoKHVudXNlZCkpKQoreworI2lmZGVmIF9fbGludXhfXworCXN0cnVjdCBleHQyX25ld19ncm91cF9pbnB1dCBpbnB1dDsKKwlzdHJ1Y3QgZXh0NF9uZXdfZ3JvdXBfaW5wdXQgaW5wdXQ2NDsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayAqc2IgPSBmcy0+c3VwZXI7CisJdW5zaWduZWQgbG9uZwkJbmV3X2Rlc2NfYmxvY2tzOworCWV4dDJfZmlsc3lzIAkJbmV3X2ZzOworCWVycmNvZGVfdCAJCXJldHZhbDsKKwlkb3VibGUJCQlwZXJjZW50OworCWRncnBfdAkJCWk7CisJYmxrX3QJCQlzaXplOworCWludAkJCWZkLCBvdmVyaGVhZDsKKwlpbnQJCQl1c2Vfb2xkX2lvY3RsID0gMTsKKwlpbnQJCQlub19tZXRhX2JnX3Jlc2l6ZSA9IDA7CisJaW50CQkJbm9fcmVzaXplX2lvY3RsID0gMDsKKworCWlmIChnZXRlbnYoIlJFU0laRTJGU19LRVJORUxfVkVSU0lPTiIpKSB7CisJCWNoYXIgKnZlcnNpb25fdG9fZW11bGF0ZSA9IGdldGVudigiUkVTSVpFMkZTX0tFUk5FTF9WRVJTSU9OIik7CisJCWludCBrdmVycyA9IHBhcnNlX3ZlcnNpb25fbnVtYmVyKHZlcnNpb25fdG9fZW11bGF0ZSk7CisKKwkJaWYgKGt2ZXJzIDwgVkVSU0lPTl9DT0RFKDMsIDcsIDApKQorCQkJbm9fbWV0YV9iZ19yZXNpemUgPSAxOworCQlpZiAoa3ZlcnMgPCBWRVJTSU9OX0NPREUoMywgMywgMCkpCisJCQlub19yZXNpemVfaW9jdGwgPSAxOworCX0KKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfc3BhcnNlX3N1cGVyMihmcy0+c3VwZXIpICYmCisJICAgIChhY2Nlc3MoIi9zeXMvZnMvZXh0NC9mZWF0dXJlcy9zcGFyc2Vfc3VwZXIyIiwgUl9PSykgIT0gMCkpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIDAsIF8oImtlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSAiCisJCQkJCSAgICJyZXNpemUgd2l0aCBzcGFyc2Vfc3VwZXIyIikpOworCQlleGl0KDEpOworCX0KKworCXByaW50ZihfKCJGaWxlc3lzdGVtIGF0ICVzIGlzIG1vdW50ZWQgb24gJXM7ICIKKwkJICJvbi1saW5lIHJlc2l6aW5nIHJlcXVpcmVkXG4iKSwgZnMtPmRldmljZV9uYW1lLCBtdHB0KTsKKworCWlmICgqbmV3X3NpemUgPCBleHQyZnNfYmxvY2tzX2NvdW50KHNiKSkgeworCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwgXygiT24tbGluZSBzaHJpbmtpbmcgbm90IHN1cHBvcnRlZCIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkvKgorCSAqIElmIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvciBibG9ja3MgaXMgZ29pbmcgdG8gaW5jcmVhc2UsCisJICogdGhlIG9uLWxpbmUgcmVzaXppbmcgaW5vZGUgbXVzdCBiZSBwcmVzZW50LgorCSAqLworCW5ld19kZXNjX2Jsb2NrcyA9IGV4dDJmc19kaXZfY2VpbCgKKwkJZXh0MmZzX2RpdjY0X2NlaWwoKm5ld19zaXplIC0KKwkJCQkgIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrLAorCQkJCSAgRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikpLAorCQlFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcikpOworCXByaW50Zigib2xkX2Rlc2NfYmxvY2tzID0gJWx1LCBuZXdfZGVzY19ibG9ja3MgPSAlbHVcbiIsCisJICAgICAgIGZzLT5kZXNjX2Jsb2NrcywgbmV3X2Rlc2NfYmxvY2tzKTsKKworCS8qCisJICogRG8gZXJyb3IgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIHRoZSByZXNpemUgd2lsbCBiZSBzdWNjZXNzZnVsLgorCSAqLworCWlmICgoYWNjZXNzKCIvc3lzL2ZzL2V4dDQvZmVhdHVyZXMvbWV0YV9iZ19yZXNpemUiLCBSX09LKSAhPSAwKSB8fAorCSAgICBub19tZXRhX2JnX3Jlc2l6ZSkgeworCQlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9yZXNpemVfaW5vZGUoZnMtPnN1cGVyKSAmJgorCQkgICAgKG5ld19kZXNjX2Jsb2NrcyAhPSBmcy0+ZGVzY19ibG9ja3MpKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQlfKCJGaWxlc3lzdGVtIGRvZXMgbm90IHN1cHBvcnQgb25saW5lIHJlc2l6aW5nIikpOworCQkJZXhpdCgxKTsKKwkJfQorCisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfcmVzaXplX2lub2RlKGZzLT5zdXBlcikgJiYKKwkJICAgIG5ld19kZXNjX2Jsb2NrcyA+IChmcy0+ZGVzY19ibG9ja3MgKworCQkJCSAgICAgICBmcy0+c3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcykpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oIk5vdCBlbm91Z2ggcmVzZXJ2ZWQgZ2R0IGJsb2NrcyBmb3IgcmVzaXppbmciKSk7CisJCQlleGl0KDEpOworCQl9CisKKwkJaWYgKChleHQyZnNfYmxvY2tzX2NvdW50KHNiKSA+IE1BWF8zMl9OVU0pIHx8CisJCSAgICAoKm5ld19zaXplID4gTUFYXzMyX05VTSkpIHsKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IHJlc2l6aW5nIGEgZmlsZSBzeXN0ZW0gdGhpcyBsYXJnZSIpKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisKKwlmZCA9IG9wZW4obXRwdCwgT19SRE9OTFkpOworCWlmIChmZCA8IDApIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycm5vLAorCQkJXygid2hpbGUgdHJ5aW5nIHRvIG9wZW4gbW91bnRwb2ludCAlcyIpLCBtdHB0KTsKKwkJZXhpdCgxKTsKKwl9CisKKwlpZiAobm9fcmVzaXplX2lvY3RsKSB7CisJCXByaW50ZihfKCJPbGQgcmVzaXplIGludGVyZmFjZSByZXF1ZXN0ZWQuXG4iKSk7CisJfSBlbHNlIGlmIChpb2N0bChmZCwgRVhUNF9JT0NfUkVTSVpFX0ZTLCBuZXdfc2l6ZSkpIHsKKwkJLyoKKwkJICogSWYga2VybmVsIGRvZXMgbm90IHN1cHBvcnQgRVhUNF9JT0NfUkVTSVpFX0ZTLCB1c2UgdGhlCisJCSAqIG9sZCBvbmxpbmUgcmVzaXplLiBOb3RlIHRoYXQgdGhlIG9sZCBhcHByb2FjaCBkb2VzIG5vdAorCQkgKiBoYW5kbGUgPjMyIGJpdCBmaWxlIHN5c3RlbXMKKwkJICoKKwkJICogU2lnaCwgaWYgd2UgYXJlIHJ1bm5pbmcgYSAzMi1iaXQgYmluYXJ5IG9uIGEgNjQtYml0CisJCSAqIGtlcm5lbCAod2hpY2ggaGFwcGVucyBhbGwgdGhlIHRpbWUgb24gdGhlIE1JUFMKKwkJICogYXJjaGl0ZWN0dXJlIGluIERlYmlhbiwgYnV0IGNhbiBoYXBwZW4gb24gb3RoZXIgQ1BVCisJCSAqIGFyY2hpdGVjdHVyZXMgYXMgd2VsbCkgd2Ugd2lsbCBnZXQgRUlOVkFMIHJldHVybmVkCisJCSAqIHdoZW4gYW4gaW9jdGwgZG9lc24ndCBleGlzdCwgYXQgbGVhc3QgdXAgdG8gTGludXgKKwkJICogMy4xLiAgU2VlIGNvbXBhdF9zeXNfaW9jdGwoKSBpbiBmcy9jb21wYXRfaW9jdGwuYworCQkgKiBpbiB0aGUga2VybmVsIHNvdXJjZXMuICBUaGlzIGlzIHByb2JhYmx5IGEga2VybmVsCisJCSAqIGJ1ZywgYnV0IHdvcmsgYXJvdW5kIGl0IGhlcmUuCisJCSAqLworCQlpZiAoKGVycm5vICE9IEVOT1RUWSkgJiYgKGVycm5vICE9IEVJTlZBTCkpIHsKKwkJCWlmIChlcnJubyA9PSBFUEVSTSkKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCQlfKCJQZXJtaXNzaW9uIGRlbmllZCB0byByZXNpemUgZmlsZXN5c3RlbSIpKTsKKwkJCWVsc2UKKwkJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJXygiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgIgorCQkJCSAgInN1cHBvcnQiKSk7CisJCQlleGl0KDEpOworCQl9CisJfSBlbHNlIHsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4gMDsKKwl9CisKKwlzaXplID0gZXh0MmZzX2Jsb2Nrc19jb3VudChzYik7CisKKwlpZiAoaW9jdGwoZmQsIEVYVDJfSU9DX0dST1VQX0VYVEVORCwgJnNpemUpKSB7CisJCWlmIChlcnJubyA9PSBFUEVSTSkKKwkJCWNvbV9lcnIocHJvZ3JhbV9uYW1lLCAwLAorCQkJCV8oIlBlcm1pc3Npb24gZGVuaWVkIHRvIHJlc2l6ZSBmaWxlc3lzdGVtIikpOworCQllbHNlIGlmIChlcnJubyA9PSBFTk9UVFkpCisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgMCwKKwkJCV8oIktlcm5lbCBkb2VzIG5vdCBzdXBwb3J0IG9ubGluZSByZXNpemluZyIpKTsKKwkJZWxzZQorCQkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycm5vLAorCQkJXygiV2hpbGUgY2hlY2tpbmcgZm9yIG9uLWxpbmUgcmVzaXppbmcgc3VwcG9ydCIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlwZXJjZW50ID0gKGV4dDJmc19yX2Jsb2Nrc19jb3VudChzYikgKiAxMDAuMCkgLworCQlleHQyZnNfYmxvY2tzX2NvdW50KHNiKTsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2JpdG1hcHMoZnMpOworCWlmIChyZXR2YWwpIHsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHZhbCA9IGV4dDJmc19kdXBfaGFuZGxlKGZzLCAmbmV3X2ZzKTsKKwlpZiAocmV0dmFsKSB7CisJCWNsb3NlKGZkKTsKKwkJcmV0dXJuIHJldHZhbDsKKwl9CisKKwkvKiBUaGUgY3VycmVudCBtZXRob2Qgb2YgYWRkaW5nIG9uZSBibG9jayBncm91cCBhdCBhIHRpbWUgdG8gYQorCSAqIG1vdW50ZWQgZmlsZXN5c3RlbSBtZWFucyBpdCBpcyBpbXBvc3NpYmxlIHRvIGFjY29tb2RhdGUgdGhlCisJICogZmxleF9iZyBhbGxvY2F0aW9uIG1ldGhvZCBvZiBwbGFjaW5nIHRoZSBtZXRhZGF0YSB0b2dldGhlcgorCSAqIGluIGEgc2luZ2xlIGJsb2NrIGdyb3VwLiAgRm9yIG5vdyB3ZSAiZml4IiB0aGlzIGlzc3VlIGJ5CisJICogdXNpbmcgdGhlIHRyYWRpdGlvbmFsIGxheW91dCBmb3IgbmV3IGJsb2NrIGdyb3Vwcywgd2hlcmUKKwkgKiBlYWNoIGJsb2NrIGdyb3VwIGlzIHNlbGYtY29udGFpbmVkIGFuZCBjb250YWlucyBpdHMgb3duCisJICogYml0bWFwIGJsb2NrcyBhbmQgaW5vZGUgdGFibGVzLiAgVGhpcyBtZWFucyB3ZSBkb24ndCBnZXQKKwkgKiB0aGUgbGF5b3V0IGFkdmFudGFnZXMgb2YgZmxleF9iZyBpbiB0aGUgbmV3IGJsb2NrIGdyb3VwcywKKwkgKiBidXQgYXQgbGVhc3QgaXQgYWxsb3dzIG9uLWxpbmUgcmVzaXppbmcgdG8gZnVuY3Rpb24uCisJICovCisJZXh0MmZzX2NsZWFyX2ZlYXR1cmVfZmxleF9iZyhuZXdfZnMtPnN1cGVyKTsKKwlyZXR2YWwgPSBhZGp1c3RfZnNfaW5mbyhuZXdfZnMsIGZzLCAwLCAqbmV3X3NpemUpOworCWlmIChyZXR2YWwpIHsKKwkJY2xvc2UoZmQpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXByaW50ZihfKCJQZXJmb3JtaW5nIGFuIG9uLWxpbmUgcmVzaXplIG9mICVzIHRvICVsbHUgKCVkaykgYmxvY2tzLlxuIiksCisJICAgICAgIGZzLT5kZXZpY2VfbmFtZSwgKm5ld19zaXplLCBmcy0+YmxvY2tzaXplIC8gMTAyNCk7CisKKwlzaXplID0gZnMtPmdyb3VwX2Rlc2NfY291bnQgKiBzYi0+c19ibG9ja3NfcGVyX2dyb3VwICsKKwkJc2ItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlpZiAoc2l6ZSA+ICpuZXdfc2l6ZSkKKwkJc2l6ZSA9ICpuZXdfc2l6ZTsKKworCWlmIChpb2N0bChmZCwgRVhUMl9JT0NfR1JPVVBfRVhURU5ELCAmc2l6ZSkpIHsKKwkJY29tX2Vycihwcm9ncmFtX25hbWUsIGVycm5vLAorCQkJXygiV2hpbGUgdHJ5aW5nIHRvIGV4dGVuZCB0aGUgbGFzdCBncm91cCIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlmb3IgKGkgPSBmcy0+Z3JvdXBfZGVzY19jb3VudDsKKwkgICAgIGkgPCBuZXdfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCisJCW92ZXJoZWFkID0gKGludCkgKDIgKyBuZXdfZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCisJCWlmIChleHQyZnNfYmdfaGFzX3N1cGVyKG5ld19mcywgbmV3X2ZzLT5ncm91cF9kZXNjX2NvdW50IC0gMSkpCisJCQlvdmVyaGVhZCArPSAxICsgbmV3X2ZzLT5kZXNjX2Jsb2NrcyArCisJCQkJbmV3X2ZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJCWlucHV0Lmdyb3VwID0gaTsKKwkJaW5wdXQuYmxvY2tfYml0bWFwID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MobmV3X2ZzLCBpKTsKKwkJaW5wdXQuaW5vZGVfYml0bWFwID0gZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MobmV3X2ZzLCBpKTsKKwkJaW5wdXQuaW5vZGVfdGFibGUgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKG5ld19mcywgaSk7CisJCWlucHV0LmJsb2Nrc19jb3VudCA9IGV4dDJmc19ncm91cF9ibG9ja3NfY291bnQobmV3X2ZzLCBpKTsKKwkJaW5wdXQucmVzZXJ2ZWRfYmxvY2tzID0gKGJsa190KSAocGVyY2VudCAqIGlucHV0LmJsb2Nrc19jb3VudAorCQkJCQkJIC8gMTAwLjApOworCisjaWYgMAorCQlwcmludGYoIm5ldyBibG9jayBiaXRtYXAgaXMgYXQgMHglMDR4XG4iLCBpbnB1dC5ibG9ja19iaXRtYXApOworCQlwcmludGYoIm5ldyBpbm9kZSBiaXRtYXAgaXMgYXQgMHglMDR4XG4iLCBpbnB1dC5pbm9kZV9iaXRtYXApOworCQlwcmludGYoIm5ldyBpbm9kZSB0YWJsZSBpcyBhdCAweCUwNHgtMHglMDR4XG4iLAorCQkgICAgICAgaW5wdXQuaW5vZGVfdGFibGUsCisJCSAgICAgICBpbnB1dC5pbm9kZV90YWJsZSArIG5ld19mcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cC0xKTsKKwkJcHJpbnRmKCJuZXcgZ3JvdXAgaGFzICV1IGJsb2Nrc1xuIiwgaW5wdXQuYmxvY2tzX2NvdW50KTsKKwkJcHJpbnRmKCJuZXcgZ3JvdXAgd2lsbCByZXNlcnZlICVkIGJsb2Nrc1xuIiwKKwkJICAgICAgIGlucHV0LnJlc2VydmVkX2Jsb2Nrcyk7CisJCXByaW50ZigibmV3IGdyb3VwIGhhcyAlZCBmcmVlIGJsb2Nrc1xuIiwKKwkJICAgICAgIGV4dDJmc19iZ19mcmVlX2Jsb2Nrc19jb3VudChuZXdfZnMsIGkpLAorCQlwcmludGYoIm5ldyBncm91cCBoYXMgJWQgZnJlZSBpbm9kZXMgKCVkIGJsb2NrcylcbiIsCisJCSAgICAgICBleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnQobmV3X2ZzLCBpKSwKKwkJICAgICAgIG5ld19mcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisJCXByaW50ZigiQWRkaW5nIGdyb3VwICMlZFxuIiwgaW5wdXQuZ3JvdXApOworI2VuZGlmCisKKwkJaWYgKHVzZV9vbGRfaW9jdGwgJiYKKwkJICAgIGlvY3RsKGZkLCBFWFQyX0lPQ19HUk9VUF9BREQsICZpbnB1dCkgPT0gMCkKKwkJCWNvbnRpbnVlOworCQllbHNlCisJCQl1c2Vfb2xkX2lvY3RsID0gMDsKKworCQlpbnB1dDY0Lmdyb3VwID0gaW5wdXQuZ3JvdXA7CisJCWlucHV0NjQuYmxvY2tfYml0bWFwID0gaW5wdXQuYmxvY2tfYml0bWFwOworCQlpbnB1dDY0Lmlub2RlX2JpdG1hcCA9IGlucHV0Lmlub2RlX2JpdG1hcDsKKwkJaW5wdXQ2NC5pbm9kZV90YWJsZSA9IGlucHV0Lmlub2RlX3RhYmxlOworCQlpbnB1dDY0LmJsb2Nrc19jb3VudCA9IGlucHV0LmJsb2Nrc19jb3VudDsKKwkJaW5wdXQ2NC5yZXNlcnZlZF9ibG9ja3MgPSBpbnB1dC5yZXNlcnZlZF9ibG9ja3M7CisJCWlucHV0NjQudW51c2VkID0gaW5wdXQudW51c2VkOworCisJCWlmIChpb2N0bChmZCwgRVhUNF9JT0NfR1JPVVBfQURELCAmaW5wdXQ2NCkgPCAwKSB7CisJCQljb21fZXJyKHByb2dyYW1fbmFtZSwgZXJybm8sCisJCQkJXygiV2hpbGUgdHJ5aW5nIHRvIGFkZCBncm91cCAjJWQiKSwKKwkJCQlpbnB1dC5ncm91cCk7CisJCQlleGl0KDEpOworCQl9CisJfQorCisJZXh0MmZzX2ZyZWUobmV3X2ZzKTsKKwljbG9zZShmZCk7CisKKwlyZXR1cm4gMDsKKyNlbHNlCisJcHJpbnRmKF8oIkZpbGVzeXN0ZW0gYXQgJXMgaXMgbW91bnRlZCBvbiAlcywgYW5kIG9uLWxpbmUgcmVzaXppbmcgaXMgIgorCQkgIm5vdCBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0uXG4iKSwgZnMtPmRldmljZV9uYW1lLCBtdHB0KTsKKwlleGl0KDEpOworI2VuZGlmCit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL3Jlc2l6ZTJmcy44LmluIGIvZTJmc3Byb2dzL3Jlc2l6ZS9yZXNpemUyZnMuOC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjQzNGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9yZXNpemUyZnMuOC5pbgpAQCAtMCwwICsxLDE4OCBAQAorLlwiIC0qLSBucm9mZiAtKi0KKy5cIiBDb3B5cmlnaHQgMTk5NyBieSBUaGVvZG9yZSBUcydvLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy5cIiAKKy5cIiAuVEggUkVTSVpFMkZTIDggIkBFMkZTUFJPR1NfTU9OVEhAIEBFMkZTUFJPR1NfWUVBUkAiICJFMmZzcHJvZ3MgdmVyc2lvbiBARTJGU1BST0dTX1ZFUlNJT05AIgorLlRIIFJFU0laRTJGUyA4ICJARTJGU1BST0dTX01PTlRIQCBARTJGU1BST0dTX1lFQVJAIiAiRTJmc3Byb2dzIHZlcnNpb24gQEUyRlNQUk9HU19WRVJTSU9OQCIKKy5TSCBOQU1FCityZXNpemUyZnMgXC0gZXh0Mi9leHQzL2V4dDQgZmlsZSBzeXN0ZW0gcmVzaXplcgorLlNIIFNZTk9QU0lTCisuQiByZXNpemUyZnMKK1sKKy5CIFwtZkZwUE1icworXQorWworLkIgXC1kCisuSSBkZWJ1Zy1mbGFncworXQorWworLkIgXC1TCisuSSBSQUlELXN0cmlkZQorXQorWworLkIgXC16CisuSSB1bmRvX2ZpbGUKK10KKy5JIGRldmljZQorWworLkkgc2l6ZQorXQorLlNIIERFU0NSSVBUSU9OCitUaGUKKy5CIHJlc2l6ZTJmcworcHJvZ3JhbSB3aWxsIHJlc2l6ZSBleHQyLCBleHQzLCBvciBleHQ0IGZpbGUgc3lzdGVtcy4gIEl0IGNhbiBiZSB1c2VkIHRvCitlbmxhcmdlIG9yIHNocmluayBhbiB1bm1vdW50ZWQgZmlsZSBzeXN0ZW0gbG9jYXRlZCBvbgorLklSIGRldmljZSAuCitJZiB0aGUgZmlsZXN5c3RlbSBpcyBtb3VudGVkLCBpdCBjYW4gYmUgdXNlZCB0byBleHBhbmQgdGhlIHNpemUgb2YgdGhlCittb3VudGVkIGZpbGVzeXN0ZW0sIGFzc3VtaW5nIHRoZSBrZXJuZWwgYW5kIHRoZSBmaWxlIHN5c3RlbSBzdXBwb3J0cworb24tbGluZSByZXNpemluZy4gIChNb2Rlcm4gTGludXggMi42IGtlcm5lbHMgd2lsbCBzdXBwb3J0IG9uLWxpbmUgcmVzaXplCitmb3IgZmlsZSBzeXN0ZW1zIG1vdW50ZWQgdXNpbmcgZXh0MyBhbmQgZXh0NDsgZXh0MyBmaWxlIHN5c3RlbXMgd2lsbAorcmVxdWlyZSB0aGUgdXNlIG9mIGZpbGUgc3lzdGVtcyB3aXRoIHRoZSByZXNpemVfaW5vZGUgZmVhdHVyZSBlbmFibGVkLikKKy5QUAorVGhlCisuSSBzaXplCitwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSByZXF1ZXN0ZWQgbmV3IHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0uCitJZiBubyB1bml0cyBhcmUgc3BlY2lmaWVkLCB0aGUgdW5pdHMgb2YgdGhlCisuSSBzaXplCitwYXJhbWV0ZXIgc2hhbGwgYmUgdGhlIGZpbGVzeXN0ZW0gYmxvY2tzaXplIG9mIHRoZSBmaWxlc3lzdGVtLgorT3B0aW9uYWxseSwgdGhlCisuSSBzaXplCitwYXJhbWV0ZXIgbWF5IGJlIHN1ZmZpeGVkIGJ5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRoZSB1bml0cworZGVzaWduYXRvcnM6ICdzJywgJ0snLCAnTScsIG9yICdHJywKK2ZvciA1MTIgYnl0ZSBzZWN0b3JzLCBraWxvYnl0ZXMsIG1lZ2FieXRlcywgb3IgZ2lnYWJ5dGVzLCByZXNwZWN0aXZlbHkuCitUaGUKKy5JIHNpemUKK29mIHRoZSBmaWxlc3lzdGVtIG1heSBuZXZlciBiZSBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcGFydGl0aW9uLgorSWYKKy5JIHNpemUKK3BhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGRlZmF1bHQgdG8gdGhlIHNpemUgb2YgdGhlIHBhcnRpdGlvbi4KKy5QUAorTm90ZTogd2hlbiBraWxvYnl0ZXMgaXMgdXNlZCBhYm92ZSwgSSBtZWFuCisuSVIgcmVhbCAsCitwb3dlci1vZi0yIGtpbG9ieXRlcywgKGkuZS4sIDEwMjQgYnl0ZXMpLCB3aGljaCBzb21lIHBvbGl0aWNhbGx5IGNvcnJlY3QKK2ZvbGtzIGluc2lzdCBzaG91bGQgYmUgdGhlIHN0dXBpZC1zb3VuZGluZyBgYGtpYmlieXRlcycnLiAgVGhlIHNhbWUKK2hvbGRzIHRydWUgZm9yIG1lZ2FieXRlcywgYWxzbyBzb21ldGltZXMga25vd24gYXMgYGBtZWJpYnl0ZXMnJywgb3IKK2dpZ2FieXRlcywgYXMgdGhlIGFtYXppbmdseSBzaWxseSBgYGdpYmlieXRlcycnLiAgTWFrZXMgeW91IHdhbnQgdG8KK2dpYmJlciwgZG9lc24ndCBpdD8KKy5QUAorVGhlCisuQiByZXNpemUyZnMKK3Byb2dyYW0gZG9lcyBub3QgbWFuaXB1bGF0ZSB0aGUgc2l6ZSBvZiBwYXJ0aXRpb25zLiAgSWYgeW91IHdpc2ggdG8gZW5sYXJnZQorYSBmaWxlc3lzdGVtLCB5b3UgbXVzdCBtYWtlIHN1cmUgeW91IGNhbiBleHBhbmQgdGhlIHNpemUgb2YgdGhlCit1bmRlcmx5aW5nIHBhcnRpdGlvbiBmaXJzdC4gIFRoaXMgY2FuIGJlIGRvbmUgdXNpbmcKKy5CUiBmZGlzayAoOCkKK2J5IGRlbGV0aW5nIHRoZSBwYXJ0aXRpb24gYW5kIHJlY3JlYXRpbmcgaXQgd2l0aCBhIGxhcmdlciBzaXplIG9yIHVzaW5nCisuQlIgbHZleHRlbmQgKDgpLAoraWYgeW91J3JlIHVzaW5nIHRoZSBsb2dpY2FsIHZvbHVtZSBtYW5hZ2VyCisuQlIgbHZtICg4KS4KK1doZW4KK3JlY3JlYXRpbmcgdGhlIHBhcnRpdGlvbiwgbWFrZSBzdXJlIHlvdSBjcmVhdGUgaXQgd2l0aCB0aGUgc2FtZSBzdGFydGluZworZGlzayBjeWxpbmRlciBhcyBiZWZvcmUhICBPdGhlcndpc2UsIHRoZSByZXNpemUgb3BlcmF0aW9uIHdpbGwKK2NlcnRhaW5seSBub3Qgd29yaywgYW5kIHlvdSBtYXkgbG9zZSB5b3VyIGVudGlyZSBmaWxlc3lzdGVtLgorQWZ0ZXIgcnVubmluZworLkJSIGZkaXNrICg4KSwKK3J1biByZXNpemUyZnMgdG8gcmVzaXplIHRoZSBleHQyIGZpbGVzeXN0ZW0KK3RvIHVzZSBhbGwgb2YgdGhlIHNwYWNlIGluIHRoZSBuZXdseSBlbmxhcmdlZCBwYXJ0aXRpb24uCisuUFAKK0lmIHlvdSB3aXNoIHRvIHNocmluayBhbiBleHQyIHBhcnRpdGlvbiwgZmlyc3QgdXNlCisuQiByZXNpemUyZnMKK3RvIHNocmluayB0aGUgc2l6ZSBvZiBmaWxlc3lzdGVtLiAgVGhlbiB5b3UgbWF5IHVzZQorLkJSIGZkaXNrICg4KQordG8gc2hyaW5rIHRoZSBzaXplIG9mIHRoZSBwYXJ0aXRpb24uICBXaGVuIHNocmlua2luZyB0aGUgc2l6ZSBvZgordGhlIHBhcnRpdGlvbiwgbWFrZSBzdXJlIHlvdSBkbyBub3QgbWFrZSBpdCBzbWFsbGVyIHRoYW4gdGhlIG5ldyBzaXplCitvZiB0aGUgZXh0MiBmaWxlc3lzdGVtIQorLlBQCitUaGUKKy5CIFwtYgorYW5kCisuQiBcLXMKK29wdGlvbnMgZW5hYmxlIGFuZCBkaXNhYmxlIHRoZSA2NGJpdCBmZWF0dXJlLCByZXNwZWN0aXZlbHkuICBUaGUgcmVzaXplMmZzCitwcm9ncmFtIHdpbGwsIG9mIGNvdXJzZSwgdGFrZSBjYXJlIG9mIHJlc2l6aW5nIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycworYW5kIG1vdmluZyBvdGhlciBkYXRhIGJsb2NrcyBvdXQgb2YgdGhlIHdheSwgYXMgbmVlZGVkLiAgSXQgaXMgbm90IHBvc3NpYmxlCit0byByZXNpemUgdGhlIGZpbGVzeXN0ZW0gY29uY3VycmVudCB3aXRoIGNoYW5naW5nIHRoZSA2NGJpdCBzdGF0dXMuCisuU0ggT1BUSU9OUworLlRQCisuQiBcLWIKK1R1cm5zIG9uIHRoZSA2NGJpdCBmZWF0dXJlLCByZXNpemVzIHRoZSBncm91cCBkZXNjcmlwdG9ycyBhcyBuZWNlc3NhcnksIGFuZAorbW92ZXMgb3RoZXIgbWV0YWRhdGEgb3V0IG9mIHRoZSB3YXkuCisuVFAKKy5CIFwtZCBcZklkZWJ1Zy1mbGFncworVHVybnMgb24gdmFyaW91cyByZXNpemUyZnMgZGVidWdnaW5nIGZlYXR1cmVzLCBpZiB0aGV5IGhhdmUgYmVlbiBjb21waWxlZAoraW50byB0aGUgYmluYXJ5LgorLkkgZGVidWctZmxhZ3MKK3Nob3VsZCBiZSBjb21wdXRlZCBieSBhZGRpbmcgdGhlIG51bWJlcnMgb2YgdGhlIGRlc2lyZWQgZmVhdHVyZXMKK2Zyb20gdGhlIGZvbGxvd2luZyBsaXN0OgorLmJyCisJMglcLVwgRGVidWcgYmxvY2sgcmVsb2NhdGlvbnMKKy5icgorCTQJXC1cIERlYnVnIGlub2RlIHJlbG9jYXRpb25zCisuYnIKKwk4CVwtXCBEZWJ1ZyBtb3ZpbmcgdGhlIGlub2RlIHRhYmxlCisuYnIKKwkxNglcLVwgUHJpbnQgdGltaW5nIGluZm9ybWF0aW9uCisuYnIKKwkzMglcLVwgRGVidWcgbWluaW11bSBmaWxlc3lzdGVtIHNpemUgKFwtTSkgY2FsY3VsYXRpb24KKy5UUAorLkIgXC1mCitGb3JjZXMgcmVzaXplMmZzIHRvIHByb2NlZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSByZXNpemUgb3BlcmF0aW9uLCBvdmVycmlkaW5nCitzb21lIHNhZmV0eSBjaGVja3Mgd2hpY2ggcmVzaXplMmZzIG5vcm1hbGx5IGVuZm9yY2VzLgorLlRQCisuQiBcLUYKK0ZsdXNoIHRoZSBmaWxlc3lzdGVtIGRldmljZSdzIGJ1ZmZlciBjYWNoZXMgYmVmb3JlIGJlZ2lubmluZy4gIE9ubHkKK3JlYWxseSB1c2VmdWwgZm9yIGRvaW5nCisuQiByZXNpemUyZnMKK3RpbWUgdHJpYWxzLgorLlRQCisuQiBcLU0KK1NocmluayB0aGUgZmlsZSBzeXN0ZW0gdG8gbWluaW1pemUgaXRzIHNpemUgYXMgbXVjaCBhcyBwb3NzaWJsZSwKK2dpdmVuIHRoZSBmaWxlcyBzdG9yZWQgaW4gdGhlIGZpbGUgc3lzdGVtLgorLlRQCisuQiBcLXAKK1ByaW50cyBvdXQgYSBwZXJjZW50YWdlIGNvbXBsZXRpb24gYmFycyBmb3IgZWFjaAorLkIgcmVzaXplMmZzCitvcGVyYXRpb24gZHVyaW5nIGFuIG9mZmxpbmUgcmVzaXplLCBzbyB0aGF0IHRoZSB1c2VyIGNhbiBrZWVwIHRyYWNrCitvZiB3aGF0IHRoZSBwcm9ncmFtIGlzIGRvaW5nLgorLlRQCisuQiBcLVAKK1ByaW50IGFuIGV4dGltYXRlIG9mIHRoZSBudW1iZXIgb2YgZmlsZSBzeXN0ZW0gYmxvY2tzIGluIHRoZSBmaWxlIHN5c3RlbQoraWYgaXQgaXMgc2hydW5rIHVzaW5nCisuQlIgcmVzaXplMmZzICdzCisuQiBcLU0KK29wdGlvbiBhbmQgdGhlbiBleGl0LgorLlRQCisuQiBcLXMKK1R1cm5zIG9mZiB0aGUgNjRiaXQgZmVhdHVyZSBhbmQgZnJlZXMgYmxvY2tzIHRoYXQgYXJlIG5vIGxvbmdlciBpbiB1c2UuCisuVFAKKy5CIFwtUyBcZklSQUlELXN0cmlkZQorVGhlCisuQiByZXNpemUyZnMKK3Byb2dyYW0gd2lsbCBoZXVyaXN0aWNhbGx5IGRldGVybWluZSB0aGUgUkFJRCBzdHJpZGUgdGhhdCB3YXMgc3BlY2lmaWVkCit3aGVuIHRoZSBmaWxlc3lzdGVtIHdhcyBjcmVhdGVkLiAgVGhpcyBvcHRpb24gYWxsb3dzIHRoZSB1c2VyIHRvCitleHBsaWNpdGx5IHNwZWNpZnkgYSBSQUlEIHN0cmlkZSBzZXR0aW5nIHRvIGJlIHVzZWQgYnkgcmVzaXplMmZzIGluc3RlYWQuCisuVFAKKy5CSSBcLXogIiB1bmRvX2ZpbGUiCitCZWZvcmUgb3ZlcndyaXRpbmcgYSBmaWxlIHN5c3RlbSBibG9jaywgd3JpdGUgdGhlIG9sZCBjb250ZW50cyBvZiB0aGUgYmxvY2sgdG8KK2FuIHVuZG8gZmlsZS4gIFRoaXMgdW5kbyBmaWxlIGNhbiBiZSB1c2VkIHdpdGggZTJ1bmRvKDgpIHRvIHJlc3RvcmUgdGhlIG9sZAorY29udGVudHMgb2YgdGhlIGZpbGUgc3lzdGVtIHNob3VsZCBzb21ldGhpbmcgZ28gd3JvbmcuICBJZiB0aGUgZW1wdHkgc3RyaW5nIGlzCitwYXNzZWQgYXMgdGhlIHVuZG9fZmlsZSBhcmd1bWVudCwgdGhlIHVuZG8gZmlsZSB3aWxsIGJlIHdyaXR0ZW4gdG8gYSBmaWxlIG5hbWVkCityZXNpemUyZnMtXGZJZGV2aWNlXGZSLmUydW5kbyBpbiB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCB2aWEgdGhlCitcZklFMkZTUFJPR1NfVU5ET19ESVJcZlIgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK1dBUk5JTkc6IFRoZSB1bmRvIGZpbGUgY2Fubm90IGJlIHVzZWQgdG8gcmVjb3ZlciBmcm9tIGEgcG93ZXIgb3Igc3lzdGVtIGNyYXNoLgorLlNIIEtOT1dOIEJVR1MKK1RoZSBtaW5pbXVtIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0gYXMgZXN0aW1hdGVkIGJ5IHJlc2l6ZTJmcyBtYXkgYmUKK2luY29ycmVjdCwgZXNwZWNpYWxseSBmb3IgZmlsZXN5c3RlbXMgd2l0aCAxayBhbmQgMmsgYmxvY2tzaXplcy4KKy5TSCBBVVRIT1IKKy5CIHJlc2l6ZTJmcword2FzIHdyaXR0ZW4gYnkgVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4uCisuU0ggQ09QWVJJR0hUCitSZXNpemUyZnMgaXMgQ29weXJpZ2h0IDE5OTggYnkgVGhlb2RvcmUgVHMnbyBhbmQgUG93ZXJRdWVzdCwgSW5jLiAgQWxsCityaWdodHMgcmVzZXJ2ZWQuCitBcyBvZiBBcHJpbCwgMjAwMAorLkIgUmVzaXplMmZzCittYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdQTC4KKy5TSCBTRUUgQUxTTworLkJSIGZkaXNrICg4KSwKKy5CUiBlMmZzY2sgKDgpLAorLkJSIG1rZTJmcyAoOCksCisuQlIgbHZtICg4KSwKKy5CUiBsdmV4dGVuZCAoOCkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9yZXNpemUvcmVzaXplMmZzLmMgYi9lMmZzcHJvZ3MvcmVzaXplL3Jlc2l6ZTJmcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNmQ5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcmVzaXplL3Jlc2l6ZTJmcy5jCkBAIC0wLDAgKzEsMzA0MyBAQAorLyoKKyAqIHJlc2l6ZTJmcy5jIC0tLSBleHQyIG1haW4gcm91dGluZQorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NywgMTk5OCBieSBUaGVvZG9yZSBUcydvIGFuZAorICogCVBvd2VyUXVlc3QsIEluYy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgYnkgVGhlb3NvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworLyoKKyAqIFJlc2l6aW5nIGEgZmlsZXN5c3RlbSBjb25zaXN0cyBvZiB0aGUgZm9sbG93aW5nIHBoYXNlczoKKyAqCisgKgkxLiAgQWRqdXN0IHN1cGVyYmxvY2sgYW5kIHdyaXRlIG91dCBuZXcgcGFydHMgb2YgdGhlIGlub2RlCisgKiAJCXRhYmxlCisgKiAJMi4gIERldGVybWluZSBibG9ja3Mgd2hpY2ggbmVlZCB0byBiZSByZWxvY2F0ZWQsIGFuZCBjb3B5IHRoZQorICogCQljb250ZW50cyBvZiBibG9ja3MgZnJvbSB0aGVpciBvbGQgbG9jYXRpb25zIHRvIHRoZSBuZXcgb25lcy4KKyAqIAkzLiAgU2NhbiB0aGUgaW5vZGUgdGFibGUsIGRvaW5nIHRoZSBmb2xsb3dpbmc6CisgKiAJCWEuICBJZiBibG9ja3MgaGF2ZSBiZWVuIG1vdmVkLCB1cGRhdGUgdGhlIGJsb2NrCisgKiAJCQlwb2ludGVycyBpbiB0aGUgaW5vZGVzIGFuZCBpbmRpcmVjdCBibG9ja3MgdG8KKyAqIAkJCXBvaW50IGF0IHRoZSBuZXcgYmxvY2sgbG9jYXRpb25zLgorICogCQliLiAgSWYgcGFydHMgb2YgdGhlIGlub2RlIHRhYmxlIG5lZWQgdG8gYmUgZXZhY3VhdGVkLAorICogCQkJY29weSBpbm9kZXMgZnJvbSB0aGVpciBvbGQgbG9jYXRpb25zIHRvIHRoZWlyCisgKiAJCQluZXcgb25lcy4KKyAqIAkJYy4gIElmIChiKSBuZWVkcyB0byBiZSBkb25lLCBub3RlIHdoaWNoIGJsb2NrcyBjb250YWluCisgKiAJCQlkaXJlY3RvcnkgaW5mb3JtYXRpb24sIHNpbmNlIHdlIHdpbGwgbmVlZCB0bworICogCQkJdXBkYXRlIHRoZSBkaXJlY3RvcnkgaW5mb3JtYXRpb24uCisgKiAJNC4gIFVwZGF0ZSB0aGUgZGlyZWN0b3J5IGJsb2NrcyB3aXRoIHRoZSBuZXcgaW5vZGUgbG9jYXRpb25zLgorICogCTUuICBNb3ZlIHRoZSBpbm9kZSB0YWJsZXMsIGlmIG5lY2Vzc2FyeS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicmVzaXplMmZzLmgiCisjaW5jbHVkZSA8dGltZS5oPgorCisjaWZkZWYgX19saW51eF9fCQkJLyogS2x1ZGdlIGZvciBkZWJ1Z2dpbmcgKi8KKyNkZWZpbmUgUkVTSVpFMkZTX0RFQlVHCisjZW5kaWYKKworc3RhdGljIHZvaWQgZml4X3VuaW5pdF9ibG9ja19iaXRtYXBzKGV4dDJfZmlsc3lzIGZzKTsKK3N0YXRpYyBlcnJjb2RlX3QgYWRqdXN0X3N1cGVyYmxvY2soZXh0Ml9yZXNpemVfdCByZnMsIGJsazY0X3QgbmV3X3NpemUpOworc3RhdGljIGVycmNvZGVfdCBibG9ja3NfdG9fbW92ZShleHQyX3Jlc2l6ZV90IHJmcyk7CitzdGF0aWMgZXJyY29kZV90IGJsb2NrX21vdmVyKGV4dDJfcmVzaXplX3QgcmZzKTsKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfc2Nhbl9hbmRfZml4KGV4dDJfcmVzaXplX3QgcmZzKTsKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfcmVmX2ZpeChleHQyX3Jlc2l6ZV90IHJmcyk7CitzdGF0aWMgZXJyY29kZV90IG1vdmVfaXRhYmxlcyhleHQyX3Jlc2l6ZV90IHJmcyk7CitzdGF0aWMgZXJyY29kZV90IGZpeF9yZXNpemVfaW5vZGUoZXh0Ml9maWxzeXMgZnMpOworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfY2FsY3VsYXRlX3N1bW1hcnlfc3RhdHMoZXh0Ml9maWxzeXMgZnMpOworc3RhdGljIGVycmNvZGVfdCBmaXhfc2Jfam91cm5hbF9iYWNrdXAoZXh0Ml9maWxzeXMgZnMpOworc3RhdGljIGVycmNvZGVfdCBtYXJrX3RhYmxlX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKwkJCQkgICBleHQyZnNfYmxvY2tfYml0bWFwIGJtYXApOworc3RhdGljIGVycmNvZGVfdCBjbGVhcl9zcGFyc2Vfc3VwZXIyX2xhc3RfZ3JvdXAoZXh0Ml9yZXNpemVfdCByZnMpOworc3RhdGljIGVycmNvZGVfdCByZXNlcnZlX3NwYXJzZV9zdXBlcjJfbGFzdF9ncm91cChleHQyX3Jlc2l6ZV90IHJmcywKKwkJCQkJCSBleHQyZnNfYmxvY2tfYml0bWFwIG1ldGFfYm1hcCk7CitzdGF0aWMgZXJyY29kZV90IHJlc2l6ZV9ncm91cF9kZXNjcmlwdG9ycyhleHQyX3Jlc2l6ZV90IHJmcywgYmxrNjRfdCBuZXdfc2l6ZSk7CitzdGF0aWMgZXJyY29kZV90IG1vdmVfYmdfbWV0YWRhdGEoZXh0Ml9yZXNpemVfdCByZnMpOworc3RhdGljIGVycmNvZGVfdCB6ZXJvX2hpZ2hfYml0c19pbl9pbm9kZXMoZXh0Ml9yZXNpemVfdCByZnMpOworCisvKgorICogU29tZSBoZWxwZXIgZnVuY3Rpb25zIHRvIGNoZWNrIGlmIGEgYmxvY2sgaXMgaW4gYSBtZXRhZGF0YSBhcmVhCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IGlzX2Jsb2NrX2JtKGV4dDJfZmlsc3lzIGZzLCB1bnNpZ25lZCBpbnQgZ3JwLCBibGs2NF90IGJsaykKK3sKKwlyZXR1cm4gYmxrID09IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBncnApOworfQorCitzdGF0aWMgaW5saW5lIGludCBpc19pbm9kZV9ibShleHQyX2ZpbHN5cyBmcywgdW5zaWduZWQgaW50IGdycCwgYmxrNjRfdCBibGspCit7CisJcmV0dXJuIGJsayA9PSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgZ3JwKTsKK30KKworc3RhdGljIGludCBpc19pbm9kZV90YihleHQyX2ZpbHN5cyBmcywgdW5zaWduZWQgaW50IGdycCwgYmxrNjRfdCBibGspCit7CisJcmV0dXJuIGJsayA+PSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBncnApICYmCisJICAgICAgIGJsayA8IChleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBncnApICsKKwkJICAgICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworfQorCisvKiBTb21lIGJpZ2FsbG9jIGhlbHBlciBtYWNyb3Mgd2hpY2ggYXJlIG1vcmUgc3VjY2ludC4uLiAqLworI2RlZmluZSBCMkMoeCkJRVhUMkZTX0IyQyhmcywgKHgpKQorI2RlZmluZSBDMkIoeCkJRVhUMkZTX0MyQihmcywgKHgpKQorI2RlZmluZSBFUV9DTFNUUih4LCB5KSAoQjJDKHgpID09IEIyQyh5KSkKKyNkZWZpbmUgTEVfQ0xTVFIoeCwgeSkgKEIyQyh4KSA8PSBCMkMoeSkpCisjZGVmaW5lIExUX0NMU1RSKHgsIHkpIChCMkMoeCkgPCAgQjJDKHkpKQorI2RlZmluZSBHRV9DTFNUUih4LCB5KSAoQjJDKHgpID49IEIyQyh5KSkKKyNkZWZpbmUgR1RfQ0xTVFIoeCwgeSkgKEIyQyh4KSA+ICBCMkMoeSkpCisKK3N0YXRpYyBpbnQgbGF6eV9pdGFibGVfaW5pdDsKKworLyoKKyAqIFRoaXMgaXMgdGhlIHRvcC1sZXZlbCByb3V0aW5lIHdoaWNoIGRvZXMgdGhlIGRpcnR5IGRlZWQuLi4uCisgKi8KK2VycmNvZGVfdCByZXNpemVfZnMoZXh0Ml9maWxzeXMgZnMsIGJsazY0X3QgKm5ld19zaXplLCBpbnQgZmxhZ3MsCisJICAgIGVycmNvZGVfdCAoKnByb2dyZXNzKShleHQyX3Jlc2l6ZV90IHJmcywgaW50IHBhc3MsCisJCQkJCSAgdW5zaWduZWQgbG9uZyBjdXIsCisJCQkJCSAgdW5zaWduZWQgbG9uZyBtYXhfdmFsKSkKK3sKKwlleHQyX3Jlc2l6ZV90CXJmczsKKwllcnJjb2RlX3QJcmV0dmFsOworCXN0cnVjdCByZXNvdXJjZV90cmFjawlydHJhY2ssIG92ZXJhbGxfdHJhY2s7CisKKwkvKgorCSAqIENyZWF0ZSB0aGUgZGF0YSBzdHJ1Y3R1cmUKKwkgKi8KKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplb2Yoc3RydWN0IGV4dDJfcmVzaXplX3N0cnVjdCksICZyZnMpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwltZW1zZXQocmZzLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfcmVzaXplX3N0cnVjdCkpOworCWZzLT5wcml2X2RhdGEgPSByZnM7CisJcmZzLT5vbGRfZnMgPSBmczsKKwlyZnMtPmZsYWdzID0gZmxhZ3M7CisJcmZzLT5pdGFibGVfYnVmCSA9IDA7CisJcmZzLT5wcm9ncmVzcyA9IHByb2dyZXNzOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmb3ZlcmFsbF90cmFjaywgIm92ZXJhbGwgcmVzaXplMmZzIiwgZnMtPmlvKTsKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJyZWFkX2JpdG1hcHMiLCBmcy0+aW8pOworCXJldHZhbCA9IGV4dDJmc19yZWFkX2JpdG1hcHMoZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50X3Jlc291cmNlX3RyYWNrKHJmcywgJnJ0cmFjaywgZnMtPmlvKTsKKworCWZzLT5zdXBlci0+c19zdGF0ZSB8PSBFWFQyX0VSUk9SX0ZTOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlleHQyZnNfZmx1c2goZnMpOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiZml4X3VuaW5pdF9ibG9ja19iaXRtYXBzIDEiLCBmcy0+aW8pOworCWZpeF91bmluaXRfYmxvY2tfYml0bWFwcyhmcyk7CisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmcnRyYWNrLCBmcy0+aW8pOworCXJldHZhbCA9IGV4dDJmc19kdXBfaGFuZGxlKGZzLCAmcmZzLT5uZXdfZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAicmVzaXplX2dyb3VwX2Rlc2NyaXB0b3JzIiwgZnMtPmlvKTsKKwlyZXR2YWwgPSByZXNpemVfZ3JvdXBfZGVzY3JpcHRvcnMocmZzLCAqbmV3X3NpemUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50X3Jlc291cmNlX3RyYWNrKHJmcywgJnJ0cmFjaywgZnMtPmlvKTsKKworCWluaXRfcmVzb3VyY2VfdHJhY2soJnJ0cmFjaywgIm1vdmVfYmdfbWV0YWRhdGEiLCBmcy0+aW8pOworCXJldHZhbCA9IG1vdmVfYmdfbWV0YWRhdGEocmZzKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludF9yZXNvdXJjZV90cmFjayhyZnMsICZydHJhY2ssIGZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJ6ZXJvX2hpZ2hfYml0c19pbl9tZXRhZGF0YSIsIGZzLT5pbyk7CisJcmV0dmFsID0gemVyb19oaWdoX2JpdHNfaW5faW5vZGVzKHJmcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmcnRyYWNrLCBmcy0+aW8pOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiYWRqdXN0X3N1cGVyYmxvY2siLCBmcy0+aW8pOworCXJldHZhbCA9IGFkanVzdF9zdXBlcmJsb2NrKHJmcywgKm5ld19zaXplKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludF9yZXNvdXJjZV90cmFjayhyZnMsICZydHJhY2ssIGZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJmaXhfdW5pbml0X2Jsb2NrX2JpdG1hcHMgMiIsIGZzLT5pbyk7CisJZml4X3VuaW5pdF9ibG9ja19iaXRtYXBzKHJmcy0+bmV3X2ZzKTsKKwlwcmludF9yZXNvdXJjZV90cmFjayhyZnMsICZydHJhY2ssIGZzLT5pbyk7CisJLyogQ2xlYXIgdGhlIGJsb2NrIGJpdG1hcCB1bmluaXQgZmxhZyBmb3IgdGhlIGxhc3QgYmxvY2sgZ3JvdXAgKi8KKwlleHQyZnNfYmdfZmxhZ3NfY2xlYXIocmZzLT5uZXdfZnMsIHJmcy0+bmV3X2ZzLT5ncm91cF9kZXNjX2NvdW50IC0gMSwKKwkJCSAgICAgRVhUMl9CR19CTE9DS19VTklOSVQpOworCisJKm5ld19zaXplID0gZXh0MmZzX2Jsb2Nrc19jb3VudChyZnMtPm5ld19mcy0+c3VwZXIpOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiYmxvY2tzX3RvX21vdmUiLCBmcy0+aW8pOworCXJldHZhbCA9IGJsb2Nrc190b19tb3ZlKHJmcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmcnRyYWNrLCBmcy0+aW8pOworCisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfREVCVUdfQk1PVkUpCisJCXByaW50ZigiTnVtYmVyIG9mIGZyZWUgYmxvY2tzOiAlbGx1LyVsbHUsIE5lZWRlZDogJWxsdVxuIiwKKwkJICAgICAgIGV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudChyZnMtPm9sZF9mcy0+c3VwZXIpLAorCQkgICAgICAgZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KHJmcy0+bmV3X2ZzLT5zdXBlciksCisJCSAgICAgICByZnMtPm5lZWRlZF9ibG9ja3MpOworI2VuZGlmCisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJibG9ja19tb3ZlciIsIGZzLT5pbyk7CisJcmV0dmFsID0gYmxvY2tfbW92ZXIocmZzKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludF9yZXNvdXJjZV90cmFjayhyZnMsICZydHJhY2ssIGZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJpbm9kZV9zY2FuX2FuZF9maXgiLCBmcy0+aW8pOworCXJldHZhbCA9IGlub2RlX3NjYW5fYW5kX2ZpeChyZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50X3Jlc291cmNlX3RyYWNrKHJmcywgJnJ0cmFjaywgZnMtPmlvKTsKKworCWluaXRfcmVzb3VyY2VfdHJhY2soJnJ0cmFjaywgImlub2RlX3JlZl9maXgiLCBmcy0+aW8pOworCXJldHZhbCA9IGlub2RlX3JlZl9maXgocmZzKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKwlwcmludF9yZXNvdXJjZV90cmFjayhyZnMsICZydHJhY2ssIGZzLT5pbyk7CisKKwlpbml0X3Jlc291cmNlX3RyYWNrKCZydHJhY2ssICJtb3ZlX2l0YWJsZXMiLCBmcy0+aW8pOworCXJldHZhbCA9IG1vdmVfaXRhYmxlcyhyZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50X3Jlc291cmNlX3RyYWNrKHJmcywgJnJ0cmFjaywgZnMtPmlvKTsKKworCXJldHZhbCA9IGNsZWFyX3NwYXJzZV9zdXBlcjJfbGFzdF9ncm91cChyZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiY2FsY3VsYXRlX3N1bW1hcnlfc3RhdHMiLCBmcy0+aW8pOworCXJldHZhbCA9IGV4dDJmc19jYWxjdWxhdGVfc3VtbWFyeV9zdGF0cyhyZnMtPm5ld19mcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmcnRyYWNrLCBmcy0+aW8pOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiZml4X3Jlc2l6ZV9pbm9kZSIsIGZzLT5pbyk7CisJcmV0dmFsID0gZml4X3Jlc2l6ZV9pbm9kZShyZnMtPm5ld19mcyk7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmcnRyYWNrLCBmcy0+aW8pOworCisJaW5pdF9yZXNvdXJjZV90cmFjaygmcnRyYWNrLCAiZml4X3NiX2pvdXJuYWxfYmFja3VwIiwgZnMtPmlvKTsKKwlyZXR2YWwgPSBmaXhfc2Jfam91cm5hbF9iYWNrdXAocmZzLT5uZXdfZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCXByaW50X3Jlc291cmNlX3RyYWNrKHJmcywgJnJ0cmFjaywgZnMtPmlvKTsKKworCXJldHZhbCA9IGV4dDJmc19zZXRfZ2R0X2NzdW0ocmZzLT5uZXdfZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmZzLT5uZXdfZnMtPnN1cGVyLT5zX3N0YXRlICY9IH5FWFQyX0VSUk9SX0ZTOworCXJmcy0+bmV3X2ZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX01BU1RFUl9TQl9PTkxZOworCisJcHJpbnRfcmVzb3VyY2VfdHJhY2socmZzLCAmb3ZlcmFsbF90cmFjaywgZnMtPmlvKTsKKwlyZXR2YWwgPSBleHQyZnNfY2xvc2VfZnJlZSgmcmZzLT5uZXdfZnMpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJcmZzLT5mbGFncyA9IGZsYWdzOworCisJZXh0MmZzX2ZyZWUocmZzLT5vbGRfZnMpOworCXJmcy0+b2xkX2ZzID0gTlVMTDsKKwlpZiAocmZzLT5pdGFibGVfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJnJmcy0+aXRhYmxlX2J1Zik7CisJaWYgKHJmcy0+cmVzZXJ2ZV9ibG9ja3MpCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChyZnMtPnJlc2VydmVfYmxvY2tzKTsKKwlpZiAocmZzLT5tb3ZlX2Jsb2NrcykKKwkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKHJmcy0+bW92ZV9ibG9ja3MpOworCWV4dDJmc19mcmVlX21lbSgmcmZzKTsKKworCXJldHVybiAwOworCitlcnJvdXQ6CisJaWYgKHJmcy0+bmV3X2ZzKSB7CisJCWV4dDJmc19mcmVlKHJmcy0+bmV3X2ZzKTsKKwkJcmZzLT5uZXdfZnMgPSBOVUxMOworCX0KKwlpZiAocmZzLT5pdGFibGVfYnVmKQorCQlleHQyZnNfZnJlZV9tZW0oJnJmcy0+aXRhYmxlX2J1Zik7CisJZXh0MmZzX2ZyZWVfbWVtKCZyZnMpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qIEtlZXAgdGhlIHNpemUgb2YgdGhlIGdyb3VwIGRlc2NyaXB0b3IgcmVnaW9uIGNvbnN0YW50ICovCitzdGF0aWMgdm9pZCBhZGp1c3RfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcyhleHQyX2ZpbHN5cyBvbGRfZnMsIGV4dDJfZmlsc3lzIGZzKQoreworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfcmVzaXplX2lub2RlKGZzLT5zdXBlcikgJiYKKwkgICAgKG9sZF9mcy0+ZGVzY19ibG9ja3MgIT0gZnMtPmRlc2NfYmxvY2tzKSkgeworCQlpbnQgbmV3OworCisJCW5ldyA9ICgoaW50KSBmcy0+c3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrcykgKworCQkJKG9sZF9mcy0+ZGVzY19ibG9ja3MgLSBmcy0+ZGVzY19ibG9ja3MpOworCQlpZiAobmV3IDwgMCkKKwkJCW5ldyA9IDA7CisJCWlmIChuZXcgPiAoaW50KSBmcy0+YmxvY2tzaXplLzQpCisJCQluZXcgPSBmcy0+YmxvY2tzaXplLzQ7CisJCWZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzID0gbmV3OworCX0KK30KKworLyogVG9nZ2xlIDY0Yml0IG1vZGUgKi8KK3N0YXRpYyBlcnJjb2RlX3QgcmVzaXplX2dyb3VwX2Rlc2NyaXB0b3JzKGV4dDJfcmVzaXplX3QgcmZzLCBibGs2NF90IG5ld19zaXplKQoreworCXZvaWQgKm8sICpuLCAqbmV3X2dyb3VwX2Rlc2M7CisJZGdycF90IGk7CisJaW50IGNvcHlfc2l6ZTsKKwllcnJjb2RlX3QgcmV0dmFsOworCisJaWYgKCEocmZzLT5mbGFncyAmIChSRVNJWkVfRElTQUJMRV82NEJJVCB8IFJFU0laRV9FTkFCTEVfNjRCSVQpKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAobmV3X3NpemUgIT0gZXh0MmZzX2Jsb2Nrc19jb3VudChyZnMtPm5ld19mcy0+c3VwZXIpIHx8CisJICAgIGV4dDJmc19ibG9ja3NfY291bnQocmZzLT5uZXdfZnMtPnN1cGVyKSA+PSAoMVVMTCA8PCAzMikgfHwKKwkgICAgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfRElTQUJMRV82NEJJVCAmJgorCSAgICAgcmZzLT5mbGFncyAmIFJFU0laRV9FTkFCTEVfNjRCSVQpKQorCQlyZXR1cm4gRVhUMl9FVF9JTlZBTElEX0FSR1VNRU5UOworCisJaWYgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfRElTQUJMRV82NEJJVCkgeworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV82NGJpdChyZnMtPm5ld19mcy0+c3VwZXIpOworCQlyZnMtPm5ld19mcy0+c3VwZXItPnNfZGVzY19zaXplID0gRVhUMl9NSU5fREVTQ19TSVpFOworCX0gZWxzZSBpZiAocmZzLT5mbGFncyAmIFJFU0laRV9FTkFCTEVfNjRCSVQpIHsKKwkJZXh0MmZzX3NldF9mZWF0dXJlXzY0Yml0KHJmcy0+bmV3X2ZzLT5zdXBlcik7CisJCXJmcy0+bmV3X2ZzLT5zdXBlci0+c19kZXNjX3NpemUgPSBFWFQyX01JTl9ERVNDX1NJWkVfNjRCSVQ7CisJfQorCisJaWYgKEVYVDJfREVTQ19TSVpFKHJmcy0+b2xkX2ZzLT5zdXBlcikgPT0KKwkgICAgRVhUMl9ERVNDX1NJWkUocmZzLT5uZXdfZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwlvID0gcmZzLT5uZXdfZnMtPmdyb3VwX2Rlc2M7CisJcmZzLT5uZXdfZnMtPmRlc2NfYmxvY2tzID0gZXh0MmZzX2Rpdl9jZWlsKAorCQkJcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQsCisJCQlFWFQyX0RFU0NfUEVSX0JMT0NLKHJmcy0+bmV3X2ZzLT5zdXBlcikpOworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXl6ZXJvKHJmcy0+bmV3X2ZzLT5kZXNjX2Jsb2NrcywKKwkJCQkgICAgICByZnMtPm9sZF9mcy0+YmxvY2tzaXplLCAmbmV3X2dyb3VwX2Rlc2MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwluID0gbmV3X2dyb3VwX2Rlc2M7CisKKwlpZiAoRVhUMl9ERVNDX1NJWkUocmZzLT5vbGRfZnMtPnN1cGVyKSA8PQorCSAgICBFWFQyX0RFU0NfU0laRShyZnMtPm5ld19mcy0+c3VwZXIpKQorCQljb3B5X3NpemUgPSBFWFQyX0RFU0NfU0laRShyZnMtPm9sZF9mcy0+c3VwZXIpOworCWVsc2UKKwkJY29weV9zaXplID0gRVhUMl9ERVNDX1NJWkUocmZzLT5uZXdfZnMtPnN1cGVyKTsKKwlmb3IgKGkgPSAwOyBpIDwgcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQltZW1jcHkobiwgbywgY29weV9zaXplKTsKKwkJbiA9IChjaGFyICopbiArIEVYVDJfREVTQ19TSVpFKHJmcy0+bmV3X2ZzLT5zdXBlcik7CisJCW8gPSAoY2hhciAqKW8gKyBFWFQyX0RFU0NfU0laRShyZnMtPm9sZF9mcy0+c3VwZXIpOworCX0KKworCWV4dDJmc19mcmVlX21lbSgmcmZzLT5uZXdfZnMtPmdyb3VwX2Rlc2MpOworCXJmcy0+bmV3X2ZzLT5ncm91cF9kZXNjID0gbmV3X2dyb3VwX2Rlc2M7CisKKwlmb3IgKGkgPSAwOyBpIDwgcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQocmZzLT5uZXdfZnMsIGkpOworCisJYWRqdXN0X3Jlc2VydmVkX2dkdF9ibG9ja3MocmZzLT5vbGRfZnMsIHJmcy0+bmV3X2ZzKTsKKworCXJldHVybiAwOworfQorCisvKiBNb3ZlIGJpdG1hcHMvaW5vZGUgdGFibGVzIG91dCBvZiB0aGUgd2F5LiAqLworc3RhdGljIGVycmNvZGVfdCBtb3ZlX2JnX21ldGFkYXRhKGV4dDJfcmVzaXplX3QgcmZzKQoreworCWRncnBfdCBpOworCWJsazY0X3QgYiwgYywgZCwgb2xkX2Rlc2NfYmxvY2tzLCBuZXdfZGVzY19ibG9ja3MsIGo7CisJZXh0MmZzX2Jsb2NrX2JpdG1hcCBvbGRfbWFwLCBuZXdfbWFwOworCWludCBvbGQsIG5ldzsKKwllcnJjb2RlX3QgcmV0dmFsOworCWludCBjbHVzdGVyX3JhdGlvOworCisJaWYgKCEocmZzLT5mbGFncyAmIChSRVNJWkVfRElTQUJMRV82NEJJVCB8IFJFU0laRV9FTkFCTEVfNjRCSVQpKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKHJmcy0+b2xkX2ZzLCAib2xkZnMiLCAmb2xkX21hcCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAocmZzLT5uZXdfZnMsICJuZXdmcyIsICZuZXdfbWFwKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIG91dDsKKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhyZnMtPm9sZF9mcy0+c3VwZXIpKSB7CisJCW9sZF9kZXNjX2Jsb2NrcyA9IHJmcy0+b2xkX2ZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCQluZXdfZGVzY19ibG9ja3MgPSByZnMtPm5ld19mcy0+c3VwZXItPnNfZmlyc3RfbWV0YV9iZzsKKwl9IGVsc2UgeworCQlvbGRfZGVzY19ibG9ja3MgPSByZnMtPm9sZF9mcy0+ZGVzY19ibG9ja3MgKworCQkJCXJmcy0+b2xkX2ZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCQluZXdfZGVzY19ibG9ja3MgPSByZnMtPm5ld19mcy0+ZGVzY19ibG9ja3MgKworCQkJCXJmcy0+bmV3X2ZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCX0KKworCS8qIENvbnN0cnVjdCBiaXRtYXBzIG9mIHN1cGVyL2Rlc2NyaXB0b3IgYmxvY2tzIGluIG9sZCBhbmQgbmV3IGZzICovCisJZm9yIChpID0gMDsgaSA8IHJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50OyBpKyspIHsKKwkJcmV0dmFsID0gZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihyZnMtPm9sZF9mcywgaSwgJmIsICZjLCAmZCwKKwkJCQkJCSAgIE5VTEwpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCWlmIChiKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihvbGRfbWFwLCBiKTsKKwkJZm9yIChqID0gMDsgYyAhPSAwICYmIGogPCBvbGRfZGVzY19ibG9ja3M7IGorKykKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIob2xkX21hcCwgYyArIGopOworCQlpZiAoZCkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIob2xkX21hcCwgZCk7CisKKwkJcmV0dmFsID0gZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihyZnMtPm5ld19mcywgaSwgJmIsICZjLCAmZCwKKwkJCQkJCSAgIE5VTEwpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBvdXQ7CisJCWlmIChiKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihuZXdfbWFwLCBiKTsKKwkJZm9yIChqID0gMDsgYyAhPSAwICYmIGogPCBuZXdfZGVzY19ibG9ja3M7IGorKykKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobmV3X21hcCwgYyArIGopOworCQlpZiAoZCkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIobmV3X21hcCwgZCk7CisJfQorCisJY2x1c3Rlcl9yYXRpbyA9IEVYVDJGU19DTFVTVEVSX1JBVElPKHJmcy0+bmV3X2ZzKTsKKworCS8qIEZpbmQgY2hhbmdlcyBpbiBibG9jayBhbGxvY2F0aW9ucyBmb3IgYmcgbWV0YWRhdGEgKi8KKwlmb3IgKGIgPSBFWFQyRlNfQjJDKHJmcy0+b2xkX2ZzLAorCQkJICAgIHJmcy0+b2xkX2ZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKTsKKwkgICAgIGIgPCBleHQyZnNfYmxvY2tzX2NvdW50KHJmcy0+bmV3X2ZzLT5zdXBlcik7CisJICAgICBiICs9IGNsdXN0ZXJfcmF0aW8pIHsKKwkJb2xkID0gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihvbGRfbWFwLCBiKTsKKwkJbmV3ID0gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihuZXdfbWFwLCBiKTsKKworCQlpZiAob2xkICYmICFuZXcpIHsKKwkJCS8qIG1hcmsgb2xkX21hcCwgdW5tYXJrIG5ld19tYXAgKi8KKwkJCWlmIChjbHVzdGVyX3JhdGlvID09IDEpCisJCQkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKAorCQkJCQkJcmZzLT5uZXdfZnMtPmJsb2NrX21hcCwgYik7CisJCX0gZWxzZSBpZiAoIW9sZCAmJiBuZXcpCisJCQk7IC8qIHVubWFyayBvbGRfbWFwLCBtYXJrIG5ld19tYXAgKi8KKwkJZWxzZSB7CisJCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIob2xkX21hcCwgYik7CisJCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIobmV3X21hcCwgYik7CisJCX0KKwl9CisKKwkvKgorCSAqIG5ld19tYXAgbm93IHNob3dzIGJsb2NrcyB0aGF0IGhhdmUgYmVlbiBuZXdseSBhbGxvY2F0ZWQuCisJICogb2xkX21hcCBub3cgc2hvd3MgYmxvY2tzIHRoYXQgaGF2ZSBiZWVuIG5ld2x5IGZyZWVkLgorCSAqLworCisJLyoKKwkgKiBNb3ZlIGFueSBjb25mbGljdGluZyBiaXRtYXBzIGFuZCBpbm9kZSB0YWJsZXMuICBFbnN1cmUgdGhhdCB3ZQorCSAqIGRvbid0IHRyeSB0byBmcmVlIGNsdXN0ZXJzIGFzc29jaWF0ZWQgd2l0aCBiaXRtYXBzIG9yIHRhYmxlcy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQliID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MocmZzLT5uZXdfZnMsIGkpOworCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihuZXdfbWFwLCBiKSkKKwkJCWV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChyZnMtPm5ld19mcywgaSwgMCk7CisJCWVsc2UgaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIob2xkX21hcCwgYikpCisJCQlleHQyZnNfdW5tYXJrX2Jsb2NrX2JpdG1hcDIob2xkX21hcCwgYik7CisKKwkJYiA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKHJmcy0+bmV3X2ZzLCBpKTsKKwkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIobmV3X21hcCwgYikpCisJCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQocmZzLT5uZXdfZnMsIGksIDApOworCQllbHNlIGlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG9sZF9tYXAsIGIpKQorCQkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKG9sZF9tYXAsIGIpOworCisJCWMgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKHJmcy0+bmV3X2ZzLCBpKTsKKwkJZm9yIChiID0gMDsKKwkJICAgICBiIDwgcmZzLT5uZXdfZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCSAgICAgYisrKSB7CisJCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihuZXdfbWFwLCBiICsgYykpCisJCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvY19zZXQocmZzLT5uZXdfZnMsIGksIDApOworCQkJZWxzZSBpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihvbGRfbWFwLCBiICsgYykpCisJCQkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKG9sZF9tYXAsIGIgKyBjKTsKKwkJfQorCX0KKworCS8qIEZyZWUgdW51c2VkIGNsdXN0ZXJzICovCisJZm9yIChiID0gMDsKKwkgICAgIGNsdXN0ZXJfcmF0aW8gPiAxICYmIGIgPCBleHQyZnNfYmxvY2tzX2NvdW50KHJmcy0+bmV3X2ZzLT5zdXBlcik7CisJICAgICBiICs9IGNsdXN0ZXJfcmF0aW8pCisJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG9sZF9tYXAsIGIpKQorCQkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKHJmcy0+bmV3X2ZzLT5ibG9ja19tYXAsIGIpOworb3V0OgorCWlmIChvbGRfbWFwKQorCQlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAob2xkX21hcCk7CisJaWYgKG5ld19tYXApCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChuZXdfbWFwKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKiBaZXJvIG91dCB0aGUgaGlnaCBiaXRzIG9mIGV4dGVudCBmaWVsZHMgKi8KK3N0YXRpYyBlcnJjb2RlX3QgemVyb19oaWdoX2JpdHNfaW5fZXh0ZW50cyhleHQyX2ZpbHN5cyBmcywgZXh0Ml9pbm9fdCBpbm8sCisJCQkJIHN0cnVjdCBleHQyX2lub2RlICppbm9kZSkKK3sKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCWludAkJCW9wID0gRVhUMl9FWFRFTlRfUk9PVDsKKwllcnJjb2RlX3QJCWVycmNvZGU7CisKKwlpZiAoIShpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTCkpCisJCXJldHVybiAwOworCisJZXJyY29kZSA9IGV4dDJmc19leHRlbnRfb3BlbihmcywgaW5vLCAmaGFuZGxlKTsKKwlpZiAoZXJyY29kZSkKKwkJcmV0dXJuIGVycmNvZGU7CisKKwl3aGlsZSAoMSkgeworCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBvcCwgJmV4dGVudCk7CisJCWlmIChlcnJjb2RlKQorCQkJYnJlYWs7CisKKwkJb3AgPSBFWFQyX0VYVEVOVF9ORVhUX1NJQjsKKworCQlpZiAoZXh0ZW50LmVfcGJsayA+ICgxVUxMIDw8IDMyKSkgeworCQkJZXh0ZW50LmVfcGJsayAmPSAoMVVMTCA8PCAzMikgLSAxOworCQkJZXJyY29kZSA9IGV4dDJmc19leHRlbnRfcmVwbGFjZShoYW5kbGUsIDAsICZleHRlbnQpOworCQkJaWYgKGVycmNvZGUpCisJCQkJYnJlYWs7CisJCX0KKwl9CisKKwkvKiBPayBpZiB3ZSBydW4gb2ZmIHRoZSBlbmQgKi8KKwlpZiAoZXJyY29kZSA9PSBFWFQyX0VUX0VYVEVOVF9OT19ORVhUKQorCQllcnJjb2RlID0gMDsKKwlleHQyZnNfZXh0ZW50X2ZyZWUoaGFuZGxlKTsKKwlyZXR1cm4gZXJyY29kZTsKK30KKworLyogWmVybyBvdXQgdGhlIGhpZ2ggYml0cyBvZiBpbm9kZXMuICovCitzdGF0aWMgZXJyY29kZV90IHplcm9faGlnaF9iaXRzX2luX2lub2RlcyhleHQyX3Jlc2l6ZV90IHJmcykKK3sKKwlleHQyX2ZpbHN5cwlmcyA9IHJmcy0+b2xkX2ZzOworCWludCBsZW5ndGggPSBFWFQyX0lOT0RFX1NJWkUoZnMtPnN1cGVyKTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAqaW5vZGUgPSBOVUxMOworCWV4dDJfaW5vZGVfc2NhbglzY2FuID0gTlVMTDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaW5vOworCisJaWYgKCEocmZzLT5mbGFncyAmIChSRVNJWkVfRElTQUJMRV82NEJJVCB8IFJFU0laRV9FTkFCTEVfNjRCSVQpKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZnMtPnN1cGVyLT5zX2NyZWF0b3Jfb3MgPT0gRVhUMl9PU19IVVJEKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19vcGVuX2lub2RlX3NjYW4oZnMsIDAsICZzY2FuKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0obGVuZ3RoLCAmaW5vZGUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gb3V0OworCisJZG8geworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbChzY2FuLCAmaW5vLCBpbm9kZSwgbGVuZ3RoKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gb3V0OworCQlpZiAoIWlubykKKwkJCWJyZWFrOworCQlpZiAoIWV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoZnMtPmlub2RlX21hcCwgaW5vKSkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEhlcmUncyBob3cgd2UgZGVhbCB3aXRoIGhpZ2ggYmxvY2sgbnVtYmVyIGZpZWxkczoKKwkJICoKKwkJICogIC0gaV9zaXplX2hpZ2ggaGFzIGJlZW4gYmVlbiB3cml0dGVuIG91dCB3aXRoIGlfc2l6ZV9sbworCQkgKiAgICBzaW5jZSB0aGUgZXh0MiBkYXlzLCBzbyBubyBjb252ZXJzaW9uIGlzIG5lZWRlZC4KKwkJICoKKwkJICogIC0gaV9ibG9ja3NfaGkgaXMgZ3VhcmRlZCBieSBib3RoIHRoZSBodWdlX2ZpbGUgZmVhdHVyZSBhbmQKKwkJICogICAgaW5vZGUgZmxhZ3MgYW5kIGhhcyBhbHdheXMgYmVlbiB3cml0dGVuIG91dCB3aXRoCisJCSAqICAgIGlfYmxvY2tzX2xvIGlmIHRoZSBmZWF0dXJlIGlzIHNldC4gIFRoZSBmaWVsZCBpcyBvbmx5CisJCSAqICAgIGV2ZXIgcmVhZCBpZiBib3RoIGZlYXR1cmUgYW5kIGlub2RlIGZsYWcgYXJlIHNldCwgc28KKwkJICogICAgd2UgZG9uJ3QgbmVlZCB0byB6ZXJvIGl0IG5vdy4KKwkJICoKKwkJICogIC0gaV9maWxlX2FjbF9oaWdoIGNhbiBiZSB1bmluaXRpYWxpemVkLCBzbyB6ZXJvIGl0IGlmCisJCSAqICAgIGl0IGlzbid0IGFscmVhZHkuCisJCSAqLworCQlpZiAoaW5vZGUtPm9zZDIubGludXgyLmxfaV9maWxlX2FjbF9oaWdoKSB7CisJCQlpbm9kZS0+b3NkMi5saW51eDIubF9pX2ZpbGVfYWNsX2hpZ2ggPSAwOworCQkJcmV0dmFsID0gZXh0MmZzX3dyaXRlX2lub2RlX2Z1bGwoZnMsIGlubywgaW5vZGUsCisJCQkJCQkJIGxlbmd0aCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gb3V0OworCQl9CisKKwkJcmV0dmFsID0gemVyb19oaWdoX2JpdHNfaW5fZXh0ZW50cyhmcywgaW5vLCBpbm9kZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dDsKKwl9IHdoaWxlIChpbm8pOworCitvdXQ6CisJaWYgKGlub2RlKQorCQlleHQyZnNfZnJlZV9tZW0oJmlub2RlKTsKKwlpZiAoc2NhbikKKwkJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIENsZWFuIHVwIHRoZSBiaXRtYXBzIGZvciB1bml0aWFsaXplZCBiaXRtYXBzCisgKi8KK3N0YXRpYyB2b2lkIGZpeF91bmluaXRfYmxvY2tfYml0bWFwcyhleHQyX2ZpbHN5cyBmcykKK3sKKwlibGs2NF90CQlibGssIGxibGs7CisJZGdycF90CQlnOworCXVuc2lnbmVkIGludAlpOworCisJaWYgKCFleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpCisJCXJldHVybjsKKworCWZvciAoZz0wOyBnIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGcrKykgeworCQlpZiAoIShleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgZywgRVhUMl9CR19CTE9DS19VTklOSVQpKSkKKwkJCWNvbnRpbnVlOworCisJCWJsayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGcpOworCQlsYmxrID0gZXh0MmZzX2dyb3VwX2xhc3RfYmxvY2syKGZzLCBnKTsKKwkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKGZzLT5ibG9ja19tYXAsIGJsaywKKwkJCQkJCSAgbGJsayAtIGJsayArIDEpOworCisJCWV4dDJmc19yZXNlcnZlX3N1cGVyX2FuZF9iZ2QoZnMsIGcsIGZzLT5ibG9ja19tYXApOworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsCisJCQkJCSAgZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGcpKTsKKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLAorCQkJCQkgIGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBnKSk7CisJCWZvciAoaSA9IDAsIGJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGcpOworCQkgICAgIGkgPCBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwkJICAgICBpKyssIGJsaysrKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBibGspOworCX0KK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBSZXNpemUgcHJvY2Vzc2luZywgcGhhc2UgMS4KKyAqCisgKiBJbiB0aGlzIHBoYXNlIHdlIGFkanVzdCB0aGUgaW4tbWVtb3J5IHN1cGVyYmxvY2sgaW5mb3JtYXRpb24sIGFuZAorICogaW5pdGlhbGl6ZSBhbnkgbmV3IHBhcnRzIG9mIHRoZSBpbm9kZSB0YWJsZS4gIFRoZSBuZXcgcGFydHMgb2YgdGhlCisgKiBpbm9kZSB0YWJsZSBhcmUgY3JlYXRlZCBpbiB2aXJnaW4gZGlzayBzcGFjZSwgc28gd2UgY2FuIGFib3J0IGhlcmUKKyAqIHdpdGhvdXQgYW55IHNpZGUgZWZmZWN0cy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyoKKyAqIElmIHRoZSBncm91cCBkZXNjcmlwdG9yJ3MgYml0bWFwIGFuZCBpbm9kZSB0YWJsZSBibG9ja3MgYXJlIHZhbGlkLAorICogcmVsZWFzZSB0aGVtIGluIHRoZSBuZXcgZmlsZXN5c3RlbSBkYXRhIHN0cnVjdHVyZSwgYW5kIG1hcmsgdGhlbSBhcworICogcmVzZXJ2ZWQgc28gdGhlIG9sZCBpbm9kZSB0YWJsZSBibG9ja3MgZG9uJ3QgZ2V0IG92ZXJ3cml0dGVuLgorICovCitzdGF0aWMgZXJyY29kZV90IGZyZWVfZ2RwX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKwkJCQkgZXh0MmZzX2Jsb2NrX2JpdG1hcCByZXNlcnZlX2Jsb2NrcywKKwkJCQkgZXh0Ml9maWxzeXMgb2xkX2ZzLAorCQkJCSBkZ3JwX3QgZ3JvdXApCit7CisJYmxrNjRfdAkJYmxrOworCXVuc2lnbmVkIGludAlqOworCWRncnBfdAkJaTsKKwlleHQyZnNfYmxvY2tfYml0bWFwIGJnX21hcCA9IE5VTEw7CisJZXJyY29kZV90CXJldHZhbCA9IDA7CisJZGdycF90CQljb3VudCA9IG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCAtIGZzLT5ncm91cF9kZXNjX2NvdW50OworCisJLyogSWYgYmlnYWxsb2MsIGRvbid0IGZyZWUgbWV0YWRhdGEgbGl2aW5nIGluIHRoZSBzYW1lIGNsdXN0ZXIgKi8KKwlpZiAoRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpID4gMSkgeworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCAiYmdkYXRhIiwgJmJnX21hcCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIG91dDsKKworCQlyZXR2YWwgPSBtYXJrX3RhYmxlX2Jsb2NrcyhmcywgYmdfbWFwKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gb3V0OworCX0KKworCWZvciAoaSA9IGdyb3VwOyBpIDwgZ3JvdXAgKyBjb3VudDsgaSsrKSB7CisJCWJsayA9IGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKG9sZF9mcywgaSk7CisJCWlmIChibGsgJiYKKwkJICAgIChibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpICYmCisJCSAgICAhKGJnX21hcCAmJiBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJnX21hcCwgYmxrKSkpIHsKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgLTEpOworCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZXNlcnZlX2Jsb2NrcywgYmxrKTsKKwkJfQorCisJCWJsayA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKG9sZF9mcywgaSk7CisJCWlmIChibGsgJiYKKwkJICAgIChibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpICYmCisJCSAgICAhKGJnX21hcCAmJiBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJnX21hcCwgYmxrKSkpIHsKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgLTEpOworCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZXNlcnZlX2Jsb2NrcywgYmxrKTsKKwkJfQorCisJCWJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2Mob2xkX2ZzLCBpKTsKKwkJZm9yIChqID0gMDsKKwkJICAgICBqIDwgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7IGorKywgYmxrKyspIHsKKwkJCWlmIChibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpIHx8CisJCQkgICAgKGJnX21hcCAmJiBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKGJnX21hcCwgYmxrKSkpCisJCQkJY29udGludWU7CisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBibGssIC0xKTsKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocmVzZXJ2ZV9ibG9ja3MsIGJsayk7CisJCX0KKwl9CisKK291dDoKKwlpZiAoYmdfbWFwKQorCQlleHQyZnNfZnJlZV9ibG9ja19iaXRtYXAoYmdfbWFwKTsKKwlyZXR1cm4gcmV0dmFsOworfQorCisvKgorICogVGhpcyByb3V0aW5lIGlzIHNoYXJlZCBieSB0aGUgb25saW5lIGFuZCBvZmZsaW5lIHJlc2l6ZSByb3V0aW5lcy4KKyAqIEFsbCBvZiB0aGUgaW5mb3JtYXRpb24gd2hpY2ggaXMgYWRqdXN0ZWQgaW4gbWVtb3J5IGlzIGRvbmUgaGVyZS4KKyAqLworZXJyY29kZV90IGFkanVzdF9mc19pbmZvKGV4dDJfZmlsc3lzIGZzLCBleHQyX2ZpbHN5cyBvbGRfZnMsCisJCQkgZXh0MmZzX2Jsb2NrX2JpdG1hcCByZXNlcnZlX2Jsb2NrcywgYmxrNjRfdCBuZXdfc2l6ZSkKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCW92ZXJoZWFkID0gMDsKKwlibGs2NF90CQlyZW07CisJYmxrNjRfdAkJYmxrLCBncm91cF9ibG9jazsKKwlibGs2NF90CQlyZWFsX2VuZDsKKwlibGs2NF90CQlvbGRfbnVtYmxvY2tzLCBudW1ibG9ja3MsIGFkamJsb2NrczsKKwl1bnNpZ25lZCBsb25nCWksIGosIG9sZF9kZXNjX2Jsb2NrczsKKwl1bnNpZ25lZCBpbnQJbWV0YV9iZywgbWV0YV9iZ19zaXplOworCWludAkJaGFzX3N1cGVyLCBjc3VtX2ZsYWcsIGhhc19iZzsKKwl1bnNpZ25lZCBsb25nIGxvbmcgbmV3X2lub2RlczsJLyogdTY0IHRvIGNoZWNrIGZvciBvdmVyZmxvdyAqLworCWRvdWJsZQkJcGVyY2VudDsKKworCWV4dDJmc19ibG9ja3NfY291bnRfc2V0KGZzLT5zdXBlciwgbmV3X3NpemUpOworCityZXRyeToKKwlmcy0+Z3JvdXBfZGVzY19jb3VudCA9IGV4dDJmc19kaXY2NF9jZWlsKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtCisJCQkJICAgICAgIGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrLAorCQkJCSAgICAgICBFWFQyX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKSk7CisJaWYgKGZzLT5ncm91cF9kZXNjX2NvdW50ID09IDApCisJCXJldHVybiBFWFQyX0VUX1RPT1NNQUxMOworCWZzLT5kZXNjX2Jsb2NrcyA9IGV4dDJmc19kaXZfY2VpbChmcy0+Z3JvdXBfZGVzY19jb3VudCwKKwkJCQkJICBFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcikpOworCisJLyoKKwkgKiBPdmVyaGVhZCBpcyB0aGUgbnVtYmVyIG9mIGJvb2trZWVwaW5nIGJsb2NrcyBwZXIgZ3JvdXAuICBJdAorCSAqIGluY2x1ZGVzIHRoZSBzdXBlcmJsb2NrIGJhY2t1cCwgdGhlIGdyb3VwIGRlc2NyaXB0b3IKKwkgKiBiYWNrdXBzLCB0aGUgaW5vZGUgYml0bWFwLCB0aGUgYmxvY2sgYml0bWFwLCBhbmQgdGhlIGlub2RlCisJICogdGFibGUuCisJICovCisJb3ZlcmhlYWQgPSAoaW50KSAoMiArIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwKTsKKworCWhhc19iZyA9IDA7CisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIyKGZzLT5zdXBlcikpIHsKKwkJLyoKKwkJICogV2UgaGF2ZSB0byBkbyB0aGlzIG1hbnVhbGx5IHNpbmNlCisJCSAqIHN1cGVyLT5zX2JhY2t1cF9iZ3MgaGFzbid0IGJlZW4gc2V0IHVwIHlldC4KKwkJICovCisJCWlmIChmcy0+Z3JvdXBfZGVzY19jb3VudCA9PSAyKQorCQkJaGFzX2JnID0gZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gIT0gMDsKKwkJZWxzZQorCQkJaGFzX2JnID0gZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0gIT0gMDsKKwl9IGVsc2UKKwkJaGFzX2JnID0gZXh0MmZzX2JnX2hhc19zdXBlcihmcywgZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKTsKKwlpZiAoaGFzX2JnKQorCQlvdmVyaGVhZCArPSAxICsgZnMtPmRlc2NfYmxvY2tzICsKKwkJCWZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJLyoKKwkgKiBTZWUgaWYgdGhlIGxhc3QgZ3JvdXAgaXMgYmlnIGVub3VnaCB0byBzdXBwb3J0IHRoZQorCSAqIG5lY2Vzc2FyeSBkYXRhIHN0cnVjdHVyZXMuICBJZiBub3QsIHdlIG5lZWQgdG8gZ2V0IHJpZCBvZgorCSAqIGl0LgorCSAqLworCXJlbSA9IChleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jaykgJQorCQlmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwlpZiAoKGZzLT5ncm91cF9kZXNjX2NvdW50ID09IDEpICYmIHJlbSAmJiAocmVtIDwgb3ZlcmhlYWQpKQorCQlyZXR1cm4gRVhUMl9FVF9UT09TTUFMTDsKKwlpZiAoKGZzLT5ncm91cF9kZXNjX2NvdW50ID4gMSkgJiYgcmVtICYmIChyZW0gPCBvdmVyaGVhZCs1MCkpIHsKKwkJZXh0MmZzX2Jsb2Nrc19jb3VudF9zZXQoZnMtPnN1cGVyLAorCQkJCQlleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSByZW0pOworCQlnb3RvIHJldHJ5OworCX0KKwkvKgorCSAqIEFkanVzdCB0aGUgbnVtYmVyIG9mIGlub2RlcworCSAqLworCW5ld19pbm9kZXMgPSh1bnNpZ25lZCBsb25nIGxvbmcpIGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwICogZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJaWYgKG5ld19pbm9kZXMgPiB+MFUpIHsKKwkJZnByaW50ZihzdGRlcnIsIF8oImlub2RlcyAoJWxsdSkgbXVzdCBiZSBsZXNzIHRoYW4gJXUiKSwKKwkJCQkgICBuZXdfaW5vZGVzLCB+MFUpOworCQlyZXR1cm4gRVhUMl9FVF9UT09fTUFOWV9JTk9ERVM7CisJfQorCWZzLT5zdXBlci0+c19pbm9kZXNfY291bnQgPSBmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCAqCisJCWZzLT5ncm91cF9kZXNjX2NvdW50OworCisJLyoKKwkgKiBBZGp1c3QgdGhlIG51bWJlciBvZiBmcmVlIGJsb2NrcworCSAqLworCWJsayA9IGV4dDJmc19ibG9ja3NfY291bnQob2xkX2ZzLT5zdXBlcik7CisJaWYgKGJsayA+IGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkKKwkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsIAorCQkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQkJKGJsayAtIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSkpOworCWVsc2UKKwkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsIAorCQkJZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgKworCQkJKGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAtIGJsaykpOworCisJLyoKKwkgKiBBZGp1c3QgdGhlIG51bWJlciBvZiByZXNlcnZlZCBibG9ja3MKKwkgKi8KKwlwZXJjZW50ID0gKGV4dDJmc19yX2Jsb2Nrc19jb3VudChvbGRfZnMtPnN1cGVyKSAqIDEwMC4wKSAvCisJCWV4dDJmc19ibG9ja3NfY291bnQob2xkX2ZzLT5zdXBlcik7CisJZXh0MmZzX3JfYmxvY2tzX2NvdW50X3NldChmcy0+c3VwZXIsCisJCQkJICAocGVyY2VudCAqIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKSAvCisJCQkJICAgMTAwLjApKTsKKworCS8qCisJICogQWRqdXN0IHRoZSBiaXRtYXBzIGZvciBzaXplCisJICovCisJcmV0dmFsID0gZXh0MmZzX3Jlc2l6ZV9pbm9kZV9iaXRtYXAyKGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQsCisJCQkJCSAgICBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50LAorCQkJCQkgICAgZnMtPmlub2RlX21hcCk7CisJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisKKwlyZWFsX2VuZCA9IEVYVDJfR1JPVVBTX1RPX0JMT0NLUyhmcy0+c3VwZXIsIGZzLT5ncm91cF9kZXNjX2NvdW50KSAtIDEgKworCQlmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlyZXR2YWwgPSBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcDIobmV3X3NpemUgLSAxLAorCQkJCQkgICAgIHJlYWxfZW5kLCBmcy0+YmxvY2tfbWFwKTsKKwlpZiAocmV0dmFsKSBnb3RvIGVycm91dDsKKworCS8qCisJICogSWYgd2UgYXJlIGdyb3dpbmcgdGhlIGZpbGUgc3lzdGVtLCBhbHNvIGdyb3cgdGhlIHNpemUgb2YKKwkgKiB0aGUgcmVzZXJ2ZV9ibG9ja3MgYml0bWFwCisJICovCisJaWYgKHJlc2VydmVfYmxvY2tzICYmIG5ld19zaXplID4gZXh0MmZzX2Jsb2Nrc19jb3VudChvbGRfZnMtPnN1cGVyKSkgeworCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX2Jsb2NrX2JpdG1hcDIobmV3X3NpemUgLSAxLAorCQkJCQkJICAgICByZWFsX2VuZCwgcmVzZXJ2ZV9ibG9ja3MpOworCQlpZiAocmV0dmFsKSBnb3RvIGVycm91dDsKKwl9CisKKwkvKgorCSAqIFJlYWxsb2NhdGUgdGhlIGdyb3VwIGRlc2NyaXB0b3JzIGFzIG5lY2Vzc2FyeS4KKwkgKi8KKwlpZiAoRVhUMl9ERVNDX1NJWkUob2xkX2ZzLT5zdXBlcikgPT0gRVhUMl9ERVNDX1NJWkUoZnMtPnN1cGVyKSAmJgorCSAgICBvbGRfZnMtPmRlc2NfYmxvY2tzICE9IGZzLT5kZXNjX2Jsb2NrcykgeworCQlyZXR2YWwgPSBleHQyZnNfcmVzaXplX21lbShvbGRfZnMtPmRlc2NfYmxvY2tzICoKKwkJCQkJICAgZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJICAgZnMtPmRlc2NfYmxvY2tzICogZnMtPmJsb2Nrc2l6ZSwKKwkJCQkJICAgJmZzLT5ncm91cF9kZXNjKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCQlpZiAoZnMtPmRlc2NfYmxvY2tzID4gb2xkX2ZzLT5kZXNjX2Jsb2NrcykKKwkJCW1lbXNldCgoY2hhciAqKSBmcy0+Z3JvdXBfZGVzYyArCisJCQkgICAgICAgKG9sZF9mcy0+ZGVzY19ibG9ja3MgKiBmcy0+YmxvY2tzaXplKSwgMCwKKwkJCSAgICAgICAoZnMtPmRlc2NfYmxvY2tzIC0gb2xkX2ZzLT5kZXNjX2Jsb2NrcykgKgorCQkJICAgICAgIGZzLT5ibG9ja3NpemUpOworCX0KKworCS8qCisJICogSWYgdGhlIHJlc2l6ZV9pbm9kZSBmZWF0dXJlIGlzIHNldCwgYW5kIHdlIGFyZSBjaGFuZ2luZyB0aGUKKwkgKiBudW1iZXIgb2YgZGVzY3JpcHRvciBibG9ja3MsIHRoZW4gYWRqdXN0CisJICogc19yZXNlcnZlZF9nZHRfYmxvY2tzIGlmIHBvc3NpYmxlIHRvIGF2b2lkIG5lZWRpbmcgdG8gbW92ZQorCSAqIHRoZSBpbm9kZSB0YWJsZSBlaXRoZXIgbm93IG9yIGluIHRoZSBmdXR1cmUuCisJICoKKwkgKiBOb3RlOiBJZiB3ZSdyZSBjb252ZXJ0aW5nIHRvIDY0Yml0IG1vZGUsIHdlIGRpZCB0aGlzIGVhcmxpZXIuCisJICovCisJaWYgKEVYVDJfREVTQ19TSVpFKG9sZF9mcy0+c3VwZXIpID09IEVYVDJfREVTQ19TSVpFKGZzLT5zdXBlcikpCisJCWFkanVzdF9yZXNlcnZlZF9nZHRfYmxvY2tzKG9sZF9mcywgZnMpOworCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikgJiYKKwkgICAgKGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnID4gZnMtPmRlc2NfYmxvY2tzKSkgeworCQlleHQyZnNfY2xlYXJfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcik7CisJCWZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnID0gMDsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGJhY2t1cCBzdXBlcmJsb2NrcyBpZiB0aGUKKwkgKiBzcGFyc2Vfc3VwZXIyIGZlYXR1cmUgaXMgZW5hYmxlZC4KKwkgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX3NwYXJzZV9zdXBlcjIoZnMtPnN1cGVyKSkgeworCQlkZ3JwX3QgbGFzdF9iZyA9IGZzLT5ncm91cF9kZXNjX2NvdW50IC0gMTsKKwkJZGdycF90IG9sZF9sYXN0X2JnID0gb2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50IC0gMTsKKworCQlpZiAobGFzdF9iZyA+IG9sZF9sYXN0X2JnKSB7CisJCQlpZiAob2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50ID09IDEpCisJCQkJZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gPSAxOworCQkJaWYgKChvbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQgPCAzICYmCisJCQkgICAgIGZzLT5ncm91cF9kZXNjX2NvdW50ID4gMikgfHwKKwkJCSAgICBmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXSkKKwkJCQlmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXSA9IGxhc3RfYmc7CisJCX0gZWxzZSBpZiAobGFzdF9iZyA8IG9sZF9sYXN0X2JnKSB7CisJCQlpZiAoZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gPiBsYXN0X2JnKQorCQkJCWZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzBdID0gMDsKKwkJCWlmIChmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXSA+IGxhc3RfYmcpCisJCQkJZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0gPSAwOworCQkJaWYgKGxhc3RfYmcgPiAxICYmCisJCQkgICAgb2xkX2ZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdID09IG9sZF9sYXN0X2JnKQorCQkJCWZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdID0gbGFzdF9iZzsKKwkJfQorCX0KKworCS8qCisJICogSWYgd2UgYXJlIHNocmlua2luZyB0aGUgbnVtYmVyIG9mIGJsb2NrIGdyb3Vwcywgd2UncmUgZG9uZQorCSAqIGFuZCBjYW4gZXhpdCBub3cuCisJICovCisJaWYgKG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCA+IGZzLT5ncm91cF9kZXNjX2NvdW50KSB7CisJCS8qCisJCSAqIENoZWNrIHRoZSBibG9jayBncm91cHMgdGhhdCB3ZSBhcmUgY2hvcHBpbmcgb2ZmCisJCSAqIGFuZCBmcmVlIGFueSBibG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIG1ldGFkYXRhCisJCSAqLworCQlyZXR2YWwgPSBmcmVlX2dkcF9ibG9ja3MoZnMsIHJlc2VydmVfYmxvY2tzLCBvbGRfZnMsCisJCQkJCSBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisJCWdvdG8gZXJyb3V0OworCX0KKworCS8qCisJICogRml4IHRoZSBjb3VudCBvZiB0aGUgbGFzdCAob2xkKSBibG9jayBncm91cAorCSAqLworCW9sZF9udW1ibG9ja3MgPSAoZXh0MmZzX2Jsb2Nrc19jb3VudChvbGRfZnMtPnN1cGVyKSAtCisJCQkgb2xkX2ZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrKSAlCisJCQkJIG9sZF9mcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwlpZiAoIW9sZF9udW1ibG9ja3MpCisJCW9sZF9udW1ibG9ja3MgPSBvbGRfZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJaWYgKG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCA9PSBmcy0+Z3JvdXBfZGVzY19jb3VudCkgeworCQludW1ibG9ja3MgPSAoZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpIC0KKwkJCSAgICAgZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2spICUKKwkJCWZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCQlpZiAoIW51bWJsb2NrcykKKwkJCW51bWJsb2NrcyA9IGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCX0gZWxzZQorCQludW1ibG9ja3MgPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwlpID0gb2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50IC0gMTsKKwlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBpLCBleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnQoZnMsIGkpICsgKG51bWJsb2NrcyAtIG9sZF9udW1ibG9ja3MpKTsKKwlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgaSk7CisKKwkvKgorCSAqIElmIHRoZSBudW1iZXIgb2YgYmxvY2sgZ3JvdXBzIGlzIHN0YXlpbmcgdGhlIHNhbWUsIHdlJ3JlCisJICogZG9uZSBhbmQgY2FuIGV4aXQgbm93LiAgKElmIHRoZSBudW1iZXIgYmxvY2sgZ3JvdXBzIGlzCisJICogc2hyaW5raW5nLCB3ZSBoYWQgZXhpdGVkIGVhcmxpZXIuKQorCSAqLworCWlmIChvbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQgPj0gZnMtPmdyb3VwX2Rlc2NfY291bnQpIHsKKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBuZXcgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMKKwkgKi8KKwlncm91cF9ibG9jayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsCisJCQkJCQlvbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCWNzdW1fZmxhZyA9IGV4dDJmc19oYXNfZ3JvdXBfZGVzY19jc3VtKGZzKTsKKwlpZiAoIWdldGVudigiUkVTSVpFMkZTX0ZPUkNFX0lUQUJMRV9JTklUIikgJiYKKwkgICAgYWNjZXNzKCIvc3lzL2ZzL2V4dDQvZmVhdHVyZXMvbGF6eV9pdGFibGVfaW5pdCIsIEZfT0spID09IDApCisJCWxhenlfaXRhYmxlX2luaXQgPSAxOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhmcy0+c3VwZXIpKQorCQlvbGRfZGVzY19ibG9ja3MgPSBmcy0+c3VwZXItPnNfZmlyc3RfbWV0YV9iZzsKKwllbHNlCisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5kZXNjX2Jsb2NrcyArCisJCQlmcy0+c3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrczsKKworCS8qCisJICogSWYgd2UgY2hhbmdlZCB0aGUgbnVtYmVyIG9mIGJsb2NrX2dyb3VwIGRlc2NyaXB0b3IgYmxvY2tzLAorCSAqIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXkgYXJlIGFsbCBtYXJrZWQgYXMgcmVzZXJ2ZWQgaW4gdGhlCisJICogZmlsZSBzeXN0ZW1zJ3MgYmxvY2sgYWxsb2NhdGlvbiBtYXAuCisJICovCisJZm9yIChpID0gMDsgaSA8IG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKQorCQlleHQyZnNfcmVzZXJ2ZV9zdXBlcl9hbmRfYmdkKGZzLCBpLCBmcy0+YmxvY2tfbWFwKTsKKworCWZvciAoaSA9IG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudDsKKwkgICAgIGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCW1lbXNldChleHQyZnNfZ3JvdXBfZGVzYyhmcywgZnMtPmdyb3VwX2Rlc2MsIGkpLCAwLAorCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBleHQyX2dyb3VwX2Rlc2MpKTsKKwkJYWRqYmxvY2tzID0gMDsKKworCQlleHQyZnNfYmdfZmxhZ3NfemFwKGZzLCBpKTsKKwkJaWYgKGNzdW1fZmxhZykgeworCQkJZXh0MmZzX2JnX2ZsYWdzX3NldChmcywgaSwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCQkJaWYgKCFsYXp5X2l0YWJsZV9pbml0KQorCQkJCWV4dDJmc19iZ19mbGFnc19zZXQoZnMsIGksCisJCQkJCQkgICAgRVhUMl9CR19JTk9ERV9aRVJPRUQpOworCQkJZXh0MmZzX2JnX2l0YWJsZV91bnVzZWRfc2V0KGZzLCBpLAorCQkJCQlmcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCk7CisJCX0KKworCQludW1ibG9ja3MgPSBleHQyZnNfZ3JvdXBfYmxvY2tzX2NvdW50KGZzLCBpKTsKKwkJaWYgKChpIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxKSAmJiBjc3VtX2ZsYWcpCisJCQlleHQyZnNfYmdfZmxhZ3Nfc2V0KGZzLCBpLCBFWFQyX0JHX0JMT0NLX1VOSU5JVCk7CisKKwkJaGFzX3N1cGVyID0gZXh0MmZzX2JnX2hhc19zdXBlcihmcywgaSk7CisJCWlmIChoYXNfc3VwZXIpIHsKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGdyb3VwX2Jsb2NrLCArMSk7CisJCQlhZGpibG9ja3MrKzsKKwkJfQorCQltZXRhX2JnX3NpemUgPSBFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcik7CisJCW1ldGFfYmcgPSBpIC8gbWV0YV9iZ19zaXplOworCQlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikgfHwKKwkJICAgIChtZXRhX2JnIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmcpKSB7CisJCQlpZiAoaGFzX3N1cGVyKSB7CisJCQkJZm9yIChqPTA7IGogPCBvbGRfZGVzY19ibG9ja3M7IGorKykKKwkJCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywKKwkJCQkJCSBncm91cF9ibG9jayArIDEgKyBqLCArMSk7CisJCQkJYWRqYmxvY2tzICs9IG9sZF9kZXNjX2Jsb2NrczsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChoYXNfc3VwZXIpCisJCQkJaGFzX3N1cGVyID0gMTsKKwkJCWlmICgoKGkgJSBtZXRhX2JnX3NpemUpID09IDApIHx8CisJCQkgICAgKChpICUgbWV0YV9iZ19zaXplKSA9PSAxKSB8fAorCQkJICAgICgoaSAlIG1ldGFfYmdfc2l6ZSkgPT0gKG1ldGFfYmdfc2l6ZS0xKSkpCisJCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywKKwkJCQkJCSBncm91cF9ibG9jayArIGhhc19zdXBlciwgKzEpOworCQl9CisKKwkJYWRqYmxvY2tzICs9IDIgKyBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCQludW1ibG9ja3MgLT0gYWRqYmxvY2tzOworCQlleHQyZnNfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLT5zdXBlciwKKwkJCSAgICAgZXh0MmZzX2ZyZWVfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLSBhZGpibG9ja3MpOworCQlmcy0+c3VwZXItPnNfZnJlZV9pbm9kZXNfY291bnQgKz0KKwkJCWZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwOworCQlleHQyZnNfYmdfZnJlZV9ibG9ja3NfY291bnRfc2V0KGZzLCBpLCBudW1ibG9ja3MpOworCQlleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnRfc2V0KGZzLCBpLAorCQkJCQkJZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXApOworCQlleHQyZnNfYmdfdXNlZF9kaXJzX2NvdW50X3NldChmcywgaSwgMCk7CisJCWV4dDJmc19ncm91cF9kZXNjX2NzdW1fc2V0KGZzLCBpKTsKKworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGUoZnMsIGksIDApOworCQlpZiAocmV0dmFsKSBnb3RvIGVycm91dDsKKworCQlncm91cF9ibG9jayArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisJcmV0dmFsID0gMDsKKworCS8qCisJICogTWFyayBhbGwgb2YgdGhlIG1ldGFkYXRhIGJsb2NrcyBhcyByZXNlcnZlZCBzbyB0aGV5IHdvbid0CisJICogZ2V0IGFsbG9jYXRlZCBieSB0aGUgY2FsbCB0byBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGUoKQorCSAqIGluIGJsb2Nrc190b19tb3ZlKCksIHdoZXJlIHdlIGFsbG9jYXRlIG5ldyBibG9ja3MgdG8KKwkgKiByZXBsYWNlIHRob3NlIGFsbG9jYXRpb24gYml0bWFwIGFuZCBpbm9kZSB0YWJsZSBibG9ja3MKKwkgKiB3aGljaCBoYXZlIHRvIGdldCByZWxvY2F0ZWQgdG8gbWFrZSBzcGFjZSBmb3IgYW4gaW5jcmVhc2VkCisJICogbnVtYmVyIG9mIHRoZSBibG9jayBncm91cCBkZXNjcmlwdG9ycy4KKwkgKi8KKwlpZiAocmVzZXJ2ZV9ibG9ja3MpCisJCW1hcmtfdGFibGVfYmxvY2tzKGZzLCByZXNlcnZlX2Jsb2Nrcyk7CisKK2Vycm91dDoKKwlyZXR1cm4gKHJldHZhbCk7Cit9CisKKy8qCisgKiBUaGlzIHJvdXRpbmUgYWRqdXN0cyB0aGUgc3VwZXJibG9jayBhbmQgb3RoZXIgZGF0YSBzdHJ1Y3R1cmVzLCBib3RoCisgKiBpbiBkaXNrIGFzIHdlbGwgYXMgaW4gbWVtb3J5Li4uCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgYWRqdXN0X3N1cGVyYmxvY2soZXh0Ml9yZXNpemVfdCByZnMsIGJsazY0X3QgbmV3X3NpemUpCit7CisJZXh0Ml9maWxzeXMJZnMgPSByZnMtPm5ld19mczsKKwlpbnQJCWFkaiA9IDA7CisJZXJyY29kZV90CXJldHZhbDsKKwlibGs2NF90CQlncm91cF9ibG9jazsKKwl1bnNpZ25lZCBsb25nCWk7CisJdW5zaWduZWQgbG9uZwltYXhfZ3JvdXA7CisKKwlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShmcyk7CisJZXh0MmZzX21hcmtfYmJfZGlydHkoZnMpOworCWV4dDJmc19tYXJrX2liX2RpcnR5KGZzKTsKKworCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ibG9ja19iaXRtYXAoZnMsIF8oInJlc2VydmVkIGJsb2NrcyIpLAorCQkJCQkgICAgICAmcmZzLT5yZXNlcnZlX2Jsb2Nrcyk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCXJldHZhbCA9IGFkanVzdF9mc19pbmZvKGZzLCByZnMtPm9sZF9mcywgcmZzLT5yZXNlcnZlX2Jsb2NrcywgbmV3X3NpemUpOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJLyoKKwkgKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIGVub3VnaCBpbm9kZXMKKwkgKi8KKwlpZiAoKHJmcy0+b2xkX2ZzLT5zdXBlci0+c19pbm9kZXNfY291bnQgLQorCSAgICAgcmZzLT5vbGRfZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50KSA+CisJICAgIHJmcy0+bmV3X2ZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpIHsKKwkJcmV0dmFsID0gRU5PU1BDOworCQlnb3RvIGVycm91dDsKKwl9CisKKwkvKgorCSAqIElmIHdlIGFyZSBzaHJpbmtpbmcgdGhlIG51bWJlciBibG9jayBncm91cHMsIHdlJ3JlIGRvbmUgYW5kCisJICogY2FuIGV4aXQgbm93LgorCSAqLworCWlmIChyZnMtPm9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCA+IGZzLT5ncm91cF9kZXNjX2NvdW50KSB7CisJCXJldHZhbCA9IDA7CisJCWdvdG8gZXJyb3V0OworCX0KKworCS8qCisJICogSWYgdGhlIG51bWJlciBvZiBibG9jayBncm91cHMgaXMgc3RheWluZyB0aGUgc2FtZSwgd2UncmUKKwkgKiBkb25lIGFuZCBjYW4gZXhpdCBub3cuICAoSWYgdGhlIG51bWJlciBibG9jayBncm91cHMgaXMKKwkgKiBzaHJpbmtpbmcsIHdlIGhhZCBleGl0ZWQgZWFybGllci4pCisJICovCisJaWYgKHJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50ID49IGZzLT5ncm91cF9kZXNjX2NvdW50KSB7CisJCXJldHZhbCA9IDA7CisJCWdvdG8gZXJyb3V0OworCX0KKworCS8qCisJICogSWYgd2UgYXJlIHVzaW5nIHVuaW5pdF9iZyAoYWthIEdEVF9DU1VNKSBhbmQgdGhlIGtlcm5lbAorCSAqIHN1cHBvcnRzIGxhenkgaW5vZGUgaW5pdGlhbGl6YXRpb24sIHdlIGNhbiBza2lwCisJICogaW5pdGlhbGl6aW5nIHRoZSBpbm9kZSB0YWJsZS4KKwkgKi8KKwlpZiAobGF6eV9pdGFibGVfaW5pdCAmJiBleHQyZnNfaGFzX2dyb3VwX2Rlc2NfY3N1bShmcykpIHsKKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBpbm9kZSB0YWJsZQorCSAqLworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkoZnMtPmJsb2Nrc2l6ZSwgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsCisJCQkJJnJmcy0+aXRhYmxlX2J1Zik7CisJaWYgKHJldHZhbCkKKwkJZ290byBlcnJvdXQ7CisKKwltZW1zZXQocmZzLT5pdGFibGVfYnVmLCAwLCBmcy0+YmxvY2tzaXplICogZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCWdyb3VwX2Jsb2NrID0gZXh0MmZzX2dyb3VwX2ZpcnN0X2Jsb2NrMihmcywKKwkJCQkJCXJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50KTsKKwlhZGogPSByZnMtPm9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudDsKKwltYXhfZ3JvdXAgPSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIGFkajsKKwlpZiAocmZzLT5wcm9ncmVzcykgeworCQlyZXR2YWwgPSByZnMtPnByb2dyZXNzKHJmcywgRTJfUlNaX0VYVEVORF9JVEFCTEVfUEFTUywKKwkJCQkgICAgICAgMCwgbWF4X2dyb3VwKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKwlmb3IgKGkgPSByZnMtPm9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudDsKKwkgICAgIGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCS8qCisJCSAqIFdyaXRlIG91dCB0aGUgbmV3IGlub2RlIHRhYmxlCisJCSAqLworCQlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSwKKwkJCQkJICAgICBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCwgTlVMTCwKKwkJCQkJICAgICBOVUxMKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCisJCWlvX2NoYW5uZWxfZmx1c2goZnMtPmlvKTsKKwkJaWYgKHJmcy0+cHJvZ3Jlc3MpIHsKKwkJCXJldHZhbCA9IHJmcy0+cHJvZ3Jlc3MocmZzLCBFMl9SU1pfRVhURU5EX0lUQUJMRV9QQVNTLAorCQkJCQkgICAgICAgaSAtIGFkaiArIDEsIG1heF9ncm91cCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCQl9CisJCWdyb3VwX2Jsb2NrICs9IGZzLT5zdXBlci0+c19ibG9ja3NfcGVyX2dyb3VwOworCX0KKwlpb19jaGFubmVsX2ZsdXNoKGZzLT5pbyk7CisJcmV0dmFsID0gMDsKKworZXJyb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogUmVzaXplIHByb2Nlc3NpbmcsIHBoYXNlIDIuCisgKgorICogSW4gdGhpcyBwaGFzZSB3ZSBhZGp1c3QgZGV0ZXJtaW5lIHdoaWNoIGJsb2NrcyBuZWVkIHRvIGJlIG1vdmVkLCBpbgorICogYmxvY2tzX3RvX21vdmUoKS4gIFdlIHRoZW4gY29weSB0aGUgYmxvY2tzIHRvIHRoZWlyIHVsdGltYXRlIG5ldworICogZGVzdGluYXRpb25zIHVzaW5nIGJsb2NrX21vdmVyKCkuICBTaW5jZSB3ZSBhcmUgY29weWluZyBibG9ja3MgdG8KKyAqIHRoZWlyIG5ldyBsb2NhdGlvbnMsIGFnYWluIGR1cmluZyB0aGlzIHBhc3Mgd2UgY2FuIGFib3J0IHdpdGhvdXQKKyAqIGFueSBwcm9ibGVtcy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyoKKyAqIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGNyZWF0ZXMgYSBibG9jayBiaXRtYXAgd2l0aCBhbGwgb2YgdGhlCisgKiBmaWxlc3lzdGVtIG1ldGEtZGF0YSBibG9ja3MuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgbWFya190YWJsZV9ibG9ja3MoZXh0Ml9maWxzeXMgZnMsCisJCQkJICAgZXh0MmZzX2Jsb2NrX2JpdG1hcCBibWFwKQoreworCWRncnBfdAkJCWk7CisJYmxrNjRfdAkJCWJsazsKKworCWZvciAoaSA9IDA7IGkgPCBmcy0+Z3JvdXBfZGVzY19jb3VudDsgaSsrKSB7CisJCWV4dDJmc19yZXNlcnZlX3N1cGVyX2FuZF9iZ2QoZnMsIGksIGJtYXApOworCisJCS8qCisJCSAqIE1hcmsgdGhlIGJsb2NrcyB1c2VkIGZvciB0aGUgaW5vZGUgdGFibGUKKwkJICovCisJCWJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQlpZiAoYmxrKQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihibWFwLCBibGssCisJCQkJCQlmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisKKwkJLyoKKwkJICogTWFyayBibG9jayB1c2VkIGZvciB0aGUgYmxvY2sgYml0bWFwCisJCSAqLworCQlibGsgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSk7CisJCWlmIChibGspCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIGJsayk7CisKKwkJLyoKKwkJICogTWFyayBibG9jayB1c2VkIGZvciB0aGUgaW5vZGUgYml0bWFwCisJCSAqLworCQlibGsgPSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgaSk7CisJCWlmIChibGspCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKGJtYXAsIGJsayk7CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBjaGVja3MgdG8gc2VlIGlmIGEgcGFydGljdWxhciBibG9jayAoZWl0aGVyIGEKKyAqIHN1cGVyYmxvY2sgb3IgYSBibG9jayBncm91cCBkZXNjcmlwdG9yKSBvdmVybGFwcyB3aXRoIGFuIGlub2RlIG9yCisgKiBibG9jayBiaXRtYXAgYmxvY2ssIG9yIHdpdGggdGhlIGlub2RlIHRhYmxlLgorICovCitzdGF0aWMgdm9pZCBtYXJrX2ZzX21ldGFibG9jayhleHQyX3Jlc2l6ZV90IHJmcywKKwkJCSAgICAgIGV4dDJmc19ibG9ja19iaXRtYXAgbWV0YV9ibWFwLAorCQkJICAgICAgaW50IGdyb3VwLCBibGs2NF90IGJsaykKK3sKKwlleHQyX2ZpbHN5cyBmcyA9IHJmcy0+bmV3X2ZzOworCisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPnJlc2VydmVfYmxvY2tzLCBibGspOworCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgKzEpOworCisJLyoKKwkgKiBDaGVjayB0byBzZWUgaWYgd2Ugb3ZlcmxhcCB3aXRoIHRoZSBpbm9kZSBvciBibG9jayBiaXRtYXAsCisJICogb3IgdGhlIGlub2RlIHRhYmxlcy4gIElmIG5vdCwgYW5kIHRoZSBibG9jayBpcyBpbiB1c2UsIHRoZW4KKwkgKiBtYXJrIGl0IGFzIGEgYmxvY2sgdG8gYmUgbW92ZWQuCisJICovCisJaWYgKGlzX2Jsb2NrX2JtKGZzLCBncm91cCwgYmxrKSkgeworCQlleHQyZnNfYmxvY2tfYml0bWFwX2xvY19zZXQoZnMsIGdyb3VwLCAwKTsKKwkJcmZzLT5uZWVkZWRfYmxvY2tzKys7CisJCXJldHVybjsKKwl9CisJaWYgKGlzX2lub2RlX2JtKGZzLCBncm91cCwgYmxrKSkgeworCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGdyb3VwLCAwKTsKKwkJcmZzLT5uZWVkZWRfYmxvY2tzKys7CisJCXJldHVybjsKKwl9CisJaWYgKGlzX2lub2RlX3RiKGZzLCBncm91cCwgYmxrKSkgeworCQlleHQyZnNfaW5vZGVfdGFibGVfbG9jX3NldChmcywgZ3JvdXAsIDApOworCQlyZnMtPm5lZWRlZF9ibG9ja3MrKzsKKwkJcmV0dXJuOworCX0KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZsZXhfYmcoZnMtPnN1cGVyKSkgeworCQlkZ3JwX3QgaTsKKworCQlmb3IgKGkgPSAwOyBpIDwgcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGkrKykgeworCQkJaWYgKGlzX2Jsb2NrX2JtKGZzLCBpLCBibGspKSB7CisJCQkJZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Nfc2V0KGZzLCBpLCAwKTsKKwkJCQlyZnMtPm5lZWRlZF9ibG9ja3MrKzsKKwkJCQlyZXR1cm47CisJCQl9CisJCQlpZiAoaXNfaW5vZGVfYm0oZnMsIGksIGJsaykpIHsKKwkJCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGksIDApOworCQkJCXJmcy0+bmVlZGVkX2Jsb2NrcysrOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWlmIChpc19pbm9kZV90YihmcywgaSwgYmxrKSkgeworCQkJCWV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KGZzLCBpLCAwKTsKKwkJCQlyZnMtPm5lZWRlZF9ibG9ja3MrKzsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwlpZiAoZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpICYmCisJICAgIChleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgZ3JvdXAsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKSkpIHsKKwkJLyoKKwkJICogSWYgdGhlIGJsb2NrIGJpdG1hcCBpcyB1bmluaXRpYWxpemVkLCB3aGljaCBtZWFucworCQkgKiBub3RoaW5nIG90aGVyIHRoYW4gc3RhbmRhcmQgbWV0YWRhdGEgaW4gdXNlLgorCQkgKi8KKwkJcmV0dXJuOworCX0gZWxzZSBpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihyZnMtPm9sZF9mcy0+YmxvY2tfbWFwLCBibGspICYmCisJCSAgICFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG1ldGFfYm1hcCwgYmxrKSkgeworCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKHJmcy0+bW92ZV9ibG9ja3MsIGJsayk7CisJCXJmcy0+bmVlZGVkX2Jsb2NrcysrOworCX0KK30KKworCisvKgorICogVGhpcyByb3V0aW5lIG1hcmtzIGFuZCB1bm1hcmtzIHJlc2VydmVkIGJsb2NrcyBpbiB0aGUgbmV3IGJsb2NrCisgKiBiaXRtYXAuICBJdCBhbHNvIGRldGVybWluZXMgd2hpY2ggYmxvY2tzIG5lZWQgdG8gYmUgbW92ZWQgYW5kCisgKiBwbGFjZXMgdGhpcyBpbmZvcm1hdGlvbiBpbnRvIHRoZSBtb3ZlX2Jsb2NrcyBiaXRtYXAuCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgYmxvY2tzX3RvX21vdmUoZXh0Ml9yZXNpemVfdCByZnMpCit7CisJdW5zaWduZWQgaW50CWo7CisJaW50CQloYXNfc3VwZXI7CisJZGdycF90CQlpLCBtYXhfZ3JvdXBzLCBnOworCWJsazY0X3QJCWJsaywgZ3JvdXBfYmxrOworCWJsazY0X3QJCW9sZF9ibG9ja3MsIG5ld19ibG9ja3MsIGdyb3VwX2VuZCwgY2x1c3Rlcl9mcmVlZDsKKwlibGs2NF90CQluZXdfc2l6ZTsKKwl1bnNpZ25lZCBpbnQJbWV0YV9iZywgbWV0YV9iZ19zaXplOworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9maWxzeXMgCWZzLCBvbGRfZnM7CisJZXh0MmZzX2Jsb2NrX2JpdG1hcAltZXRhX2JtYXAsIG5ld19tZXRhX2JtYXAgPSBOVUxMOworCWludAkJZmxleF9iZzsKKworCWZzID0gcmZzLT5uZXdfZnM7CisJb2xkX2ZzID0gcmZzLT5vbGRfZnM7CisJaWYgKGV4dDJmc19ibG9ja3NfY291bnQob2xkX2ZzLT5zdXBlcikgPiBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikpCisJCWZzID0gcmZzLT5vbGRfZnM7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCBfKCJibG9ja3MgdG8gYmUgbW92ZWQiKSwKKwkJCQkJICAgICAgJnJmcy0+bW92ZV9ibG9ja3MpOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLCBfKCJtZXRhLWRhdGEgYmxvY2tzIiksCisJCQkJCSAgICAgICZtZXRhX2JtYXApOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwlyZXR2YWwgPSBtYXJrX3RhYmxlX2Jsb2NrcyhvbGRfZnMsIG1ldGFfYm1hcCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWZzID0gcmZzLT5uZXdfZnM7CisKKwkvKgorCSAqIElmIHdlJ3JlIHNocmlua2luZyB0aGUgZmlsZXN5c3RlbSwgd2UgbmVlZCB0byBtb3ZlIGFueQorCSAqIGdyb3VwJ3MgbWV0YWRhdGEgYmxvY2tzIChlaXRoZXIgYWxsb2NhdGlvbiBiaXRtYXBzIG9yIHRoZQorCSAqIGlub2RlIHRhYmxlKSB3aGljaCBhcmUgYmV5b25kIHRoZSBlbmQgb2YgdGhlIG5ldworCSAqIGZpbGVzeXN0ZW0uCisJICovCisJbmV3X3NpemUgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJaWYgKG5ld19zaXplIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChvbGRfZnMtPnN1cGVyKSkgeworCQlmb3IgKGcgPSAwOyBnIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGcrKykgeworCQkJaW50IHJlYWxsb2MgPSAwOworCQkJLyoKKwkJCSAqIGV4dDJmc19hbGxvY2F0ZV9ncm91cF90YWJsZSB3aWxsIHJlLWFsbG9jYXRlIGFueQorCQkJICogbWV0YWRhdGEgYmxvY2tzIHdob3NlIGxvY2F0aW9uIGlzIHNldCB0byB6ZXJvLgorCQkJICovCisJCQlpZiAoZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGcpID49IG5ld19zaXplKSB7CisJCQkJZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Nfc2V0KGZzLCBnLCAwKTsKKwkJCQlyZWFsbG9jID0gMTsKKwkJCX0KKwkJCWlmIChleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgZykgPj0gbmV3X3NpemUpIHsKKwkJCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGcsIDApOworCQkJCXJlYWxsb2MgPSAxOworCQkJfQorCQkJaWYgKChleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBnKSArCisJCQkgICAgIGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwKSA+IG5ld19zaXplKSB7CisJCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvY19zZXQoZnMsIGcsIDApOworCQkJCXJlYWxsb2MgPSAxOworCQkJfQorCisJCQlpZiAocmVhbGxvYykgeworCQkJCXJldHZhbCA9IGV4dDJmc19hbGxvY2F0ZV9ncm91cF90YWJsZShmcywgZywgMCk7CisJCQkJaWYgKHJldHZhbCkKKwkJCQkJcmV0dXJuIHJldHZhbDsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogSWYgd2UncmUgc2hyaW5raW5nIHRoZSBmaWxlc3lzdGVtLCB3ZSBuZWVkIHRvIG1vdmUgYWxsIG9mCisJICogdGhlIGJsb2NrcyB0aGF0IGRvbid0IGZpdCBhbnkgbW9yZQorCSAqLworCWZvciAoYmxrID0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCSAgICAgYmxrIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChvbGRfZnMtPnN1cGVyKTsgYmxrKyspIHsKKwkJZyA9IGV4dDJmc19ncm91cF9vZl9ibGsyKGZzLCBibGspOworCQlpZiAoZXh0MmZzX2hhc19ncm91cF9kZXNjX2NzdW0oZnMpICYmCisJCSAgICBleHQyZnNfYmdfZmxhZ3NfdGVzdChvbGRfZnMsIGcsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKSkgeworCQkJLyoKKwkJCSAqIFRoZSBibG9jayBiaXRtYXAgaXMgdW5pbml0aWFsaXplZCwgc28gc2tpcAorCQkJICogdG8gdGhlIG5leHQgYmxvY2sgZ3JvdXAuCisJCQkgKi8KKwkJCWJsayA9IGV4dDJmc19ncm91cF9maXJzdF9ibG9jazIoZnMsIGcrMSkgLSAxOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIob2xkX2ZzLT5ibG9ja19tYXAsIGJsaykgJiYKKwkJICAgICFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG1ldGFfYm1hcCwgYmxrKSkgeworCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPm1vdmVfYmxvY2tzLCBibGspOworCQkJcmZzLT5uZWVkZWRfYmxvY2tzKys7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPnJlc2VydmVfYmxvY2tzLCBibGspOworCX0KKworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhvbGRfZnMtPnN1cGVyKSkKKwkJb2xkX2Jsb2NrcyA9IG9sZF9mcy0+c3VwZXItPnNfZmlyc3RfbWV0YV9iZzsKKwllbHNlCisJCW9sZF9ibG9ja3MgPSBvbGRfZnMtPmRlc2NfYmxvY2tzICsKKwkJCW9sZF9mcy0+c3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrczsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFfYmcoZnMtPnN1cGVyKSkKKwkJbmV3X2Jsb2NrcyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCWVsc2UKKwkJbmV3X2Jsb2NrcyA9IGZzLT5kZXNjX2Jsb2NrcyArIGZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJcmV0dmFsID0gcmVzZXJ2ZV9zcGFyc2Vfc3VwZXIyX2xhc3RfZ3JvdXAocmZzLCBtZXRhX2JtYXApOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCisJaWYgKEVYVDJfREVTQ19TSVpFKHJmcy0+b2xkX2ZzLT5zdXBlcikgPT0KKwkgICAgRVhUMl9ERVNDX1NJWkUocmZzLT5uZXdfZnMtPnN1cGVyKSAmJgorCSAgICBvbGRfYmxvY2tzID09IG5ld19ibG9ja3MpIHsKKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJbWF4X2dyb3VwcyA9IGZzLT5ncm91cF9kZXNjX2NvdW50OworCWlmIChtYXhfZ3JvdXBzID4gb2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50KQorCQltYXhfZ3JvdXBzID0gb2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50OworCWdyb3VwX2JsayA9IG9sZF9mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwkvKgorCSAqIElmIHdlJ3JlIHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgZGVzY3JpcHRvciBibG9ja3MsIHRoaXMKKwkgKiBtYWtlcyBsaWZlIGVhc3kuICA6LSkgICBXZSBqdXN0IGhhdmUgdG8gbWFyayBzb21lIGV4dHJhCisJICogYmxvY2tzIGFzIGZyZWUuCisJICovCisJaWYgKG9sZF9ibG9ja3MgPiBuZXdfYmxvY2tzKSB7CisJCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfYmxvY2tfYml0bWFwKGZzLAorCQkJCQkJCV8oIm5ldyBtZXRhIGJsb2NrcyIpLAorCQkJCQkJCSZuZXdfbWV0YV9ibWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisKKwkJCXJldHZhbCA9IG1hcmtfdGFibGVfYmxvY2tzKGZzLCBuZXdfbWV0YV9ibWFwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQlmb3IgKGkgPSAwOyBpIDwgbWF4X2dyb3VwczsgaSsrKSB7CisJCQlpZiAoIWV4dDJmc19iZ19oYXNfc3VwZXIob2xkX2ZzLCBpKSkgeworCQkJCWdyb3VwX2JsayArPSBmcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJCWdyb3VwX2VuZCA9IGdyb3VwX2JsayArIDEgKyBvbGRfYmxvY2tzOworCQkJZm9yIChibGsgPSBncm91cF9ibGsgKyAxICsgbmV3X2Jsb2NrczsKKwkJCSAgICAgYmxrIDwgZ3JvdXBfZW5kOykgeworCQkJCWlmIChuZXdfbWV0YV9ibWFwID09IE5VTEwgfHwKKwkJCQkgICAgIWV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIobmV3X21ldGFfYm1hcCwKKwkJCQkJCQkgICAgICAgYmxrKSkgeworCQkJCQljbHVzdGVyX2ZyZWVkID0KKwkJCQkJCUVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSAtCisJCQkJCQkoYmxrICYKKwkJCQkJCSBFWFQyRlNfQ0xVU1RFUl9NQVNLKGZzKSk7CisJCQkJCWlmIChjbHVzdGVyX2ZyZWVkID4gZ3JvdXBfZW5kIC0gYmxrKQorCQkJCQkJY2x1c3Rlcl9mcmVlZCA9IGdyb3VwX2VuZCAtIGJsazsKKwkJCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrLCAtMSk7CisJCQkJCWJsayArPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcyk7CisJCQkJCXJmcy0+bmVlZGVkX2Jsb2NrcyAtPSBjbHVzdGVyX2ZyZWVkOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJcmZzLT5uZWVkZWRfYmxvY2tzLS07CisJCQkJYmxrKys7CisJCQl9CisJCQlncm91cF9ibGsgKz0gZnMtPnN1cGVyLT5zX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCX0KKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCS8qCisJICogSWYgd2UncmUgaW5jcmVhc2luZyB0aGUgbnVtYmVyIG9mIGRlc2NyaXB0b3IgYmxvY2tzLCBsaWZlCisJICogZ2V0cyBpbnRlcmVzdGluZy4uLi4KKwkgKi8KKwltZXRhX2JnX3NpemUgPSBFWFQyX0RFU0NfUEVSX0JMT0NLKGZzLT5zdXBlcik7CisJZmxleF9iZyA9IGV4dDJmc19oYXNfZmVhdHVyZV9mbGV4X2JnKGZzLT5zdXBlcik7CisJLyogZmlyc3QgcmVzZXJ2ZSBhbGwgb2YgdGhlIGV4aXN0aW5nIGZzIG1ldGEgYmxvY2tzICovCisJZm9yIChpID0gMDsgaSA8IG1heF9ncm91cHM7IGkrKykgeworCQloYXNfc3VwZXIgPSBleHQyZnNfYmdfaGFzX3N1cGVyKGZzLCBpKTsKKwkJaWYgKGhhc19zdXBlcikKKwkJCW1hcmtfZnNfbWV0YWJsb2NrKHJmcywgbWV0YV9ibWFwLCBpLCBncm91cF9ibGspOworCisJCW1ldGFfYmcgPSBpIC8gbWV0YV9iZ19zaXplOworCQlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikgfHwKKwkJICAgIChtZXRhX2JnIDwgZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmcpKSB7CisJCQlpZiAoaGFzX3N1cGVyKSB7CisJCQkJZm9yIChibGsgPSBncm91cF9ibGsrMTsKKwkJCQkgICAgIGJsayA8IGdyb3VwX2JsayArIDEgKyBuZXdfYmxvY2tzOyBibGsrKykKKwkJCQkJbWFya19mc19tZXRhYmxvY2socmZzLCBtZXRhX2JtYXAsCisJCQkJCQkJICBpLCBibGspOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKGhhc19zdXBlcikKKwkJCQloYXNfc3VwZXIgPSAxOworCQkJaWYgKCgoaSAlIG1ldGFfYmdfc2l6ZSkgPT0gMCkgfHwKKwkJCSAgICAoKGkgJSBtZXRhX2JnX3NpemUpID09IDEpIHx8CisJCQkgICAgKChpICUgbWV0YV9iZ19zaXplKSA9PSAobWV0YV9iZ19zaXplLTEpKSkKKwkJCQltYXJrX2ZzX21ldGFibG9jayhyZnMsIG1ldGFfYm1hcCwgaSwKKwkJCQkJCSAgZ3JvdXBfYmxrICsgaGFzX3N1cGVyKTsKKwkJfQorCisJCS8qCisJCSAqIFJlc2VydmUgdGhlIGV4aXN0aW5nIG1ldGEgYmxvY2tzIHRoYXQgd2Uga25vdworCQkgKiBhcmVuJ3QgdG8gYmUgbW92ZWQuCisJCSAqCisJCSAqIEZvciBmbGV4X2JnIGZpbGUgc3lzdGVtcywgaW4gb3JkZXIgdG8gYXZvaWQKKwkJICogb3ZlcndyaXRpbmcgZnMgbWV0YWRhdGEgKGVzcGVjaWFsbHkgaW5vZGUgdGFibGUKKwkJICogYmxvY2tzKSBiZWxvbmdpbmcgdG8gYSBkaWZmZXJlbnQgYmxvY2sgZ3JvdXAgd2hlbgorCQkgKiB3ZSBhcmUgcmVsb2NhdGluZyB0aGUgaW5vZGUgdGFibGVzLCB3ZSBuZWVkIHRvCisJCSAqIHJlc2VydmUgYWxsIGV4aXN0aW5nIGZzIG1ldGFkYXRhIGJsb2Nrcy4KKwkJICovCisJCWlmIChleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKHJmcy0+cmVzZXJ2ZV9ibG9ja3MsCisJCQkJIGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKGZzLCBpKSk7CisJCWVsc2UgaWYgKGZsZXhfYmcgJiYgaSA8IG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocmZzLT5yZXNlcnZlX2Jsb2NrcywKKwkJCQkgZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2Mob2xkX2ZzLCBpKSk7CisKKwkJaWYgKGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocmZzLT5yZXNlcnZlX2Jsb2NrcywKKwkJCQkgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpKTsKKwkJZWxzZSBpZiAoZmxleF9iZyAmJiBpIDwgb2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50KQorCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPnJlc2VydmVfYmxvY2tzLAorCQkJCSBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhvbGRfZnMsIGkpKTsKKworCQlpZiAoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkpCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXBfcmFuZ2UyKHJmcy0+cmVzZXJ2ZV9ibG9ja3MsCisJCQkJCWV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpLAorCQkJCQlmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCk7CisJCWVsc2UgaWYgKGZsZXhfYmcgJiYgaSA8IG9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTIocmZzLT5yZXNlcnZlX2Jsb2NrcywKKwkJCQkJZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhvbGRfZnMsIGkpLAorCQkJCQlvbGRfZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApOworCisJCWdyb3VwX2JsayArPSByZnMtPm5ld19mcy0+c3VwZXItPnNfYmxvY2tzX3Blcl9ncm91cDsKKwl9CisKKwkvKiBBbGxvY2F0ZSB0aGUgbWlzc2luZyBkYXRhIHN0cnVjdHVyZXMgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2dyb3VwczsgaSsrKSB7CisJCWlmIChleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBpKSAmJgorCQkgICAgZXh0MmZzX2lub2RlX2JpdG1hcF9sb2MoZnMsIGkpICYmCisJCSAgICBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpCisJCQljb250aW51ZTsKKworCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGUoZnMsIGksCisJCQkJCQkgICAgIHJmcy0+cmVzZXJ2ZV9ibG9ja3MpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisKKwkJLyoKKwkJICogRm9yIHRob3NlIHN0cnVjdHVyZXMgdGhhdCBoYXZlIGNoYW5nZWQsIHdlIG5lZWQgdG8KKwkJICogZG8gYm9va2tlZXBwaW5nLgorCQkgKi8KKwkJaWYgKGV4dDJmc19ibG9ja19iaXRtYXBfbG9jKG9sZF9mcywgaSkgIT0KKwkJICAgIChibGsgPSBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgaSkpKSB7CisJCQlleHQyZnNfYmxvY2tfYWxsb2Nfc3RhdHMyKGZzLCBibGssICsxKTsKKwkJCWlmIChleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG9sZF9mcy0+YmxvY2tfbWFwLCBibGspICYmCisJCQkgICAgIWV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIobWV0YV9ibWFwLCBibGspKQorCQkJCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocmZzLT5tb3ZlX2Jsb2NrcywKKwkJCQkJCQkgYmxrKTsKKwkJfQorCQlpZiAoZXh0MmZzX2lub2RlX2JpdG1hcF9sb2Mob2xkX2ZzLCBpKSAhPQorCQkgICAgKGJsayA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBpKSkpIHsKKwkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgKzEpOworCQkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIob2xkX2ZzLT5ibG9ja19tYXAsIGJsaykgJiYKKwkJCSAgICAhZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihtZXRhX2JtYXAsIGJsaykpCisJCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPm1vdmVfYmxvY2tzLAorCQkJCQkJCSBibGspOworCQl9CisKKwkJLyoKKwkJICogVGhlIGlub2RlIHRhYmxlLCBpZiB3ZSBuZWVkIHRvIHJlbG9jYXRlIGl0LCBpcworCQkgKiBoYW5kbGVkIHNwZWNpYWxseS4gIFdlIGhhdmUgdG8gcmVzZXJ2ZSB0aGUgYmxvY2tzCisJCSAqIGZvciBib3RoIHRoZSBvbGQgYW5kIHRoZSBuZXcgaW5vZGUgdGFibGUsIHNpbmNlIHdlCisJCSAqIGNhbid0IGhhdmUgdGhlIGlub2RlIHRhYmxlIGJlIGRlc3Ryb3llZCBkdXJpbmcgdGhlCisJCSAqIGJsb2NrIHJlbG9jYXRpb24gcGhhc2UuCisJCSAqLworCQlpZiAoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhmcywgaSkgPT0gZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhvbGRfZnMsIGkpKQorCQkJY29udGludWU7CS8qIGlub2RlIHRhYmxlIG5vdCBtb3ZlZCAqLworCisJCXJmcy0+bmVlZGVkX2Jsb2NrcyArPSBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKworCQkvKgorCQkgKiBNYXJrIHRoZSBuZXcgaW5vZGUgdGFibGUgYXMgaW4gdXNlIGluIHRoZSBuZXcgYmxvY2sKKwkJICogYWxsb2NhdGlvbiBiaXRtYXAsIGFuZCBtb3ZlIGFueSBibG9ja3MgdGhhdCBtaWdodAorCQkgKiBiZSBuZWNlc3NhcnkuCisJCSAqLworCQlmb3IgKGJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpLCBqPTA7CisJCSAgICAgaiA8IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwIDsgaisrLCBibGsrKykgeworCQkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgYmxrLCArMSk7CisJCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihvbGRfZnMtPmJsb2NrX21hcCwgYmxrKSAmJgorCQkJICAgICFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG1ldGFfYm1hcCwgYmxrKSkKKwkJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKHJmcy0+bW92ZV9ibG9ja3MsCisJCQkJCQkJIGJsayk7CisJCX0KKworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIG9sZCBpbm9kZSB0YWJsZSBpcyByZXNlcnZlZCBpbiB0aGUKKwkJICogYmxvY2sgcmVzZXJ2YXRpb24gYml0bWFwLgorCQkgKi8KKwkJZm9yIChibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKHJmcy0+b2xkX2ZzLCBpKSwgaj0wOworCQkgICAgIGogPCBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCA7IGorKywgYmxrKyspCisJCQlleHQyZnNfbWFya19ibG9ja19iaXRtYXAyKHJmcy0+cmVzZXJ2ZV9ibG9ja3MsIGJsayk7CisJfQorCXJldHZhbCA9IDA7CisKK2Vycm91dDoKKwlpZiAobmV3X21ldGFfYm1hcCkKKwkJZXh0MmZzX2ZyZWVfYmxvY2tfYml0bWFwKG5ld19tZXRhX2JtYXApOworCWlmIChtZXRhX2JtYXApCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChtZXRhX2JtYXApOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHRyaWVzIHRvIGFsbG9jYXRlIGEgbmV3IGJsb2NrLiAgV2UgdHJ5IHRvCisgKiBhdm9pZCBoaXR0aW5nIHRoZSBvcmlnaW5hbCBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyBhdCBsZWFzdCBhdAorICogZmlyc3QsIHNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byByZWNvdmVyIGZyb20gYSBiYWRseQorICogYWJvcnRlZCByZXNpemUgb3BlcmF0aW9uIGFzIG11Y2ggYXMgcG9zc2libGUuCisgKgorICogSW4gdGhlIGZ1dHVyZSwgSSBtYXkgZnVydGhlciBtb2RpZnkgdGhpcyByb3V0aW5lIHRvIGJhbGFuY2Ugb3V0CisgKiB3aGVyZSB3ZSBnZXQgdGhlIG5ldyBibG9ja3MgYWNyb3NzIHRoZSB2YXJpb3VzIGJsb2NrIGdyb3Vwcy4KKyAqIElkZWFsbHkgd2Ugd291bGQgYWxsb2NhdGUgYmxvY2tzIHRoYXQgY29ycmVzcG9uZGVkIHdpdGggdGhlIGJsb2NrCisgKiBncm91cCBvZiB0aGUgY29udGFpbmluZyBpbm9kZSwgYW5kIGtlZXAgY29udGlndW91cyBibG9ja3MKKyAqIHRvZ2V0aGVyLiAgSG93ZXZlciwgdGhpcyB2ZXJ5IGRpZmZpY3VsdCB0byBkbyBlZmZpY2llbnRseSwgc2luY2Ugd2UKKyAqIGRvbid0IGhhdmUgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB1cCBmcm9udC4KKyAqLworCisjZGVmaW5lIEFWT0lEX09MRAkxCisjZGVmaW5lIERFU1BFUkFUSU9OCTIKKworc3RhdGljIHZvaWQgaW5pdF9ibG9ja19hbGxvYyhleHQyX3Jlc2l6ZV90IHJmcykKK3sKKwlyZnMtPmFsbG9jX3N0YXRlID0gQVZPSURfT0xEOworCXJmcy0+bmV3X2JsayA9IHJmcy0+bmV3X2ZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworI2lmIDAKKwkvKiBIQUNLIGZvciB0ZXN0aW5nICovCisJaWYgKGV4dDJmc19ibG9ja3NfY291bnQocmZzLT5uZXdfZnMtPnN1cGVyKSA+CisJICAgIGV4dDJmc19ibG9ja3NfY291bnQocmZzLT5vbGRfZnMtPnN1cGVyKSkKKwkJcmZzLT5uZXdfYmxrID0gZXh0MmZzX2Jsb2Nrc19jb3VudChyZnMtPm9sZF9mcy0+c3VwZXIpOworI2VuZGlmCit9CisKK3N0YXRpYyBibGs2NF90IGdldF9uZXdfYmxvY2soZXh0Ml9yZXNpemVfdCByZnMpCit7CisJZXh0Ml9maWxzeXMJZnMgPSByZnMtPm5ld19mczsKKworCXdoaWxlICgxKSB7CisJCWlmIChyZnMtPm5ld19ibGsgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKSB7CisJCQlpZiAocmZzLT5hbGxvY19zdGF0ZSA9PSBERVNQRVJBVElPTikKKwkJCQlyZXR1cm4gMDsKKworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCQkJaWYgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfREVCVUdfQk1PVkUpCisJCQkJcHJpbnRmKCJHb2luZyBpbnRvIGRlc3BlcmF0aW9uIG1vZGUgIgorCQkJCSAgICAgICAiZm9yIGJsb2NrIGFsbG9jYXRpb25zXG4iKTsKKyNlbmRpZgorCQkJcmZzLT5hbGxvY19zdGF0ZSA9IERFU1BFUkFUSU9OOworCQkJcmZzLT5uZXdfYmxrID0gZnMtPnN1cGVyLT5zX2ZpcnN0X2RhdGFfYmxvY2s7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCByZnMtPm5ld19ibGspIHx8CisJCSAgICBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHJmcy0+cmVzZXJ2ZV9ibG9ja3MsCisJCQkJCSAgICAgcmZzLT5uZXdfYmxrKSB8fAorCQkgICAgKChyZnMtPmFsbG9jX3N0YXRlID09IEFWT0lEX09MRCkgJiYKKwkJICAgICAocmZzLT5uZXdfYmxrIDwgZXh0MmZzX2Jsb2Nrc19jb3VudChyZnMtPm9sZF9mcy0+c3VwZXIpKSAmJgorCQkgICAgIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIocmZzLT5vbGRfZnMtPmJsb2NrX21hcCwKKwkJCQkJICAgICAgcmZzLT5uZXdfYmxrKSkpIHsKKwkJCXJmcy0+bmV3X2JsaysrOworCQkJY29udGludWU7CisJCX0KKwkJcmV0dXJuIHJmcy0+bmV3X2JsazsKKwl9Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgcmVzaXplMmZzX2dldF9hbGxvY19ibG9jayhleHQyX2ZpbHN5cyBmcywKKwkJCQkJICAgYmxrNjRfdCBnb2FsIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkJICAgYmxrNjRfdCAqcmV0KQoreworCWV4dDJfcmVzaXplX3QgcmZzID0gKGV4dDJfcmVzaXplX3QpIGZzLT5wcml2X2RhdGE7CisJYmxrNjRfdCBibGs7CisJaW50IGdyb3VwOworCisJYmxrID0gZ2V0X25ld19ibG9jayhyZnMpOworCWlmICghYmxrKQorCQlyZXR1cm4gRU5PU1BDOworCisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKHJmcy0+ZmxhZ3MgJiAweEYpCisJCXByaW50ZigiZ2V0X2FsbG9jX2Jsb2NrIGFsbG9jYXRpbmcgJWxsdVxuIiwgYmxrKTsKKyNlbmRpZgorCisJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPm9sZF9mcy0+YmxvY2tfbWFwLCBibGspOworCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcDIocmZzLT5uZXdfZnMtPmJsb2NrX21hcCwgYmxrKTsKKworCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIocmZzLT5vbGRfZnMsIGJsayk7CisJZXh0MmZzX2NsZWFyX2Jsb2NrX3VuaW5pdChyZnMtPm9sZF9mcywgZ3JvdXApOworCWdyb3VwID0gZXh0MmZzX2dyb3VwX29mX2JsazIocmZzLT5uZXdfZnMsIGJsayk7CisJZXh0MmZzX2NsZWFyX2Jsb2NrX3VuaW5pdChyZnMtPm5ld19mcywgZ3JvdXApOworCisJKnJldCA9IChibGs2NF90KSBibGs7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgYmxvY2tfbW92ZXIoZXh0Ml9yZXNpemVfdCByZnMpCit7CisJYmxrNjRfdAkJCWJsaywgb2xkX2JsaywgbmV3X2JsazsKKwlleHQyX2ZpbHN5cwkJZnMgPSByZnMtPm5ld19mczsKKwlleHQyX2ZpbHN5cwkJb2xkX2ZzID0gcmZzLT5vbGRfZnM7CisJZXJyY29kZV90CQlyZXR2YWw7CisJX191NjQJCQljLCBzaXplOworCWludAkJCXRvX21vdmUsIG1vdmVkOworCWV4dDJfYmFkYmxvY2tzX2xpc3QJYmFkYmxvY2tfbGlzdCA9IDA7CisJaW50CQkJYmJfbW9kaWZpZWQgPSAwOworCisJZnMtPmdldF9hbGxvY19ibG9jayA9IHJlc2l6ZTJmc19nZXRfYWxsb2NfYmxvY2s7CisJb2xkX2ZzLT5nZXRfYWxsb2NfYmxvY2sgPSByZXNpemUyZnNfZ2V0X2FsbG9jX2Jsb2NrOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfYmJfaW5vZGUob2xkX2ZzLCAmYmFkYmxvY2tfbGlzdCk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCW5ld19ibGsgPSBmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jazsKKwlpZiAoIXJmcy0+aXRhYmxlX2J1ZikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X2FycmF5KGZzLT5ibG9ja3NpemUsCisJCQkJCWZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwLAorCQkJCQkmcmZzLT5pdGFibGVfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfZXh0ZW50X3RhYmxlKCZyZnMtPmJtYXAsIDApOworCWlmIChyZXR2YWwpCisJCXJldHVybiByZXR2YWw7CisKKwkvKgorCSAqIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hlcmUgYWxsIG9mIHRoZSBibG9ja3MKKwkgKiB3aWxsIGdvLgorCSAqLworCXRvX21vdmUgPSBtb3ZlZCA9IDA7CisJaW5pdF9ibG9ja19hbGxvYyhyZnMpOworCWZvciAoYmxrID0gQjJDKG9sZF9mcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJICAgICBibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KG9sZF9mcy0+c3VwZXIpOworCSAgICAgYmxrICs9IEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSkgeworCQlpZiAoIWV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIob2xkX2ZzLT5ibG9ja19tYXAsIGJsaykpCisJCQljb250aW51ZTsKKwkJaWYgKCFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKHJmcy0+bW92ZV9ibG9ja3MsIGJsaykpCisJCQljb250aW51ZTsKKwkJaWYgKGV4dDJmc19iYWRibG9ja3NfbGlzdF90ZXN0KGJhZGJsb2NrX2xpc3QsIGJsaykpIHsKKwkJCWV4dDJmc19iYWRibG9ja3NfbGlzdF9kZWwoYmFkYmxvY2tfbGlzdCwgYmxrKTsKKwkJCWJiX21vZGlmaWVkKys7CisJCQljb250aW51ZTsKKwkJfQorCisJCW5ld19ibGsgPSBnZXRfbmV3X2Jsb2NrKHJmcyk7CisJCWlmICghbmV3X2JsaykgeworCQkJcmV0dmFsID0gRU5PU1BDOworCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJZXh0MmZzX2Jsb2NrX2FsbG9jX3N0YXRzMihmcywgbmV3X2JsaywgKzEpOworCQlleHQyZnNfYWRkX2V4dGVudF9lbnRyeShyZnMtPmJtYXAsIEIyQyhibGspLCBCMkMobmV3X2JsaykpOworCQl0b19tb3ZlKys7CisJfQorCisJaWYgKHRvX21vdmUgPT0gMCkgeworCQlpZiAocmZzLT5ibWFwKSB7CisJCQlleHQyZnNfZnJlZV9leHRlbnRfdGFibGUocmZzLT5ibWFwKTsKKwkJCXJmcy0+Ym1hcCA9IDA7CisJCX0KKwkJcmV0dmFsID0gMDsKKwkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBTdGVwIHR3byBpcyB0byBhY3R1YWxseSBtb3ZlIHRoZSBibG9ja3MKKwkgKi8KKwlyZXR2YWwgPSAgZXh0MmZzX2l0ZXJhdGVfZXh0ZW50KHJmcy0+Ym1hcCwgMCwgMCwgMCk7CisJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisKKwlpZiAocmZzLT5wcm9ncmVzcykgeworCQlyZXR2YWwgPSAocmZzLT5wcm9ncmVzcykocmZzLCBFMl9SU1pfQkxPQ0tfUkVMT0NfUEFTUywKKwkJCQkJIDAsIHRvX21vdmUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IGV4dDJmc19pdGVyYXRlX2V4dGVudChyZnMtPmJtYXAsICZvbGRfYmxrLCAmbmV3X2JsaywgJnNpemUpOworCQlpZiAocmV0dmFsKSBnb3RvIGVycm91dDsKKwkJaWYgKCFzaXplKQorCQkJYnJlYWs7CisJCW9sZF9ibGsgPSBDMkIob2xkX2Jsayk7CisJCW5ld19ibGsgPSBDMkIobmV3X2Jsayk7CisJCXNpemUgPSBDMkIoc2l6ZSk7CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJCWlmIChyZnMtPmZsYWdzICYgUkVTSVpFX0RFQlVHX0JNT1ZFKQorCQkJcHJpbnRmKCJNb3ZpbmcgJWxsdSBibG9ja3MgJWxsdS0+JWxsdVxuIiwKKwkJCSAgICAgICBzaXplLCBvbGRfYmxrLCBuZXdfYmxrKTsKKyNlbmRpZgorCQlkbyB7CisJCQljID0gc2l6ZTsKKwkJCWlmIChjID4gZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXApCisJCQkJYyA9IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF9yZWFkX2JsazY0KGZzLT5pbywgb2xkX2JsaywgYywKKwkJCQkJCSAgICAgICByZnMtPml0YWJsZV9idWYpOworCQkJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisJCQlyZXR2YWwgPSBpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgbmV3X2JsaywgYywKKwkJCQkJCQlyZnMtPml0YWJsZV9idWYpOworCQkJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisJCQlzaXplIC09IGM7CisJCQluZXdfYmxrICs9IGM7CisJCQlvbGRfYmxrICs9IGM7CisJCQltb3ZlZCArPSBjOworCQkJaWYgKHJmcy0+cHJvZ3Jlc3MpIHsKKwkJCQlpb19jaGFubmVsX2ZsdXNoKGZzLT5pbyk7CisJCQkJcmV0dmFsID0gKHJmcy0+cHJvZ3Jlc3MpKHJmcywKKwkJCQkJCUUyX1JTWl9CTE9DS19SRUxPQ19QQVNTLAorCQkJCQkJbW92ZWQsIHRvX21vdmUpOworCQkJCWlmIChyZXR2YWwpCisJCQkJCWdvdG8gZXJyb3V0OworCQkJfQorCQl9IHdoaWxlIChzaXplID4gMCk7CisJCWlvX2NoYW5uZWxfZmx1c2goZnMtPmlvKTsKKwl9CisKK2Vycm91dDoKKwlpZiAoYmFkYmxvY2tfbGlzdCkgeworCQlpZiAoIXJldHZhbCAmJiBiYl9tb2RpZmllZCkKKwkJCXJldHZhbCA9IGV4dDJmc191cGRhdGVfYmJfaW5vZGUob2xkX2ZzLAorCQkJCQkJCWJhZGJsb2NrX2xpc3QpOworCQlleHQyZnNfYmFkYmxvY2tzX2xpc3RfZnJlZShiYWRibG9ja19saXN0KTsKKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFJlc2l6ZSBwcm9jZXNzaW5nLCBwaGFzZSAzCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisKKy8qCisgKiBUaGUgZXh0ZW50IHRyYW5zbGF0aW9uIHRhYmxlIGlzIHN0b3JlZCBpbiBjbHVzdGVycyBzbyB3ZSBuZWVkIHRvCisgKiB0YWtlIHNwZWNpYWwgY2FyZSB3aGVuIG1hcHBpbmcgYSBzb3VyY2UgYmxvY2sgbnVtYmVyIHRvIGl0cworICogZGVzdGluYXRpb24gYmxvY2sgbnVtYmVyLgorICovCitzdGF0aWMgX191NjQgZXh0ZW50X3RyYW5zbGF0ZShleHQyX2ZpbHN5cyBmcywgZXh0Ml9leHRlbnQgZXh0ZW50LCBfX3U2NCBvbGRfbG9jKQoreworCV9fdTY0IG5ld19ibG9jayA9IEMyQihleHQyZnNfZXh0ZW50X3RyYW5zbGF0ZShleHRlbnQsIEIyQyhvbGRfbG9jKSkpOworCisJaWYgKG5ld19ibG9jayAhPSAwKQorCQluZXdfYmxvY2sgKz0gb2xkX2xvYyAmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgLSAxKTsKKwlyZXR1cm4gbmV3X2Jsb2NrOworfQorCitzdHJ1Y3QgcHJvY2Vzc19ibG9ja19zdHJ1Y3QgeworCWV4dDJfcmVzaXplX3QgCQlyZnM7CisJZXh0Ml9pbm9fdAkJaW5vOworCWV4dDJfaW5vX3QJCW9sZF9pbm87CisJc3RydWN0IGV4dDJfaW5vZGUgKglpbm9kZTsKKwllcnJjb2RlX3QJCWVycm9yOworCWludAkJCWlzX2RpcjsKKwlpbnQJCQljaGFuZ2VkOworCWludAkJCWhhc19leHRlbnRzOworfTsKKworc3RhdGljIGludCBwcm9jZXNzX2Jsb2NrKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90CSpibG9ja19uciwKKwkJCSBlMl9ibGtjbnRfdCBibG9ja2NudCwKKwkJCSBibGs2NF90IHJlZl9ibG9jayBFWFQyRlNfQVRUUigodW51c2VkKSksCisJCQkgaW50IHJlZl9vZmZzZXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLCB2b2lkICpwcml2X2RhdGEpCit7CisJc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICpwYjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWJsazY0X3QJCWJsb2NrLCBuZXdfYmxvY2s7CisJaW50CQlyZXQgPSAwOworCisJcGIgPSAoc3RydWN0IHByb2Nlc3NfYmxvY2tfc3RydWN0ICopIHByaXZfZGF0YTsKKwlibG9jayA9ICpibG9ja19ucjsKKwlpZiAocGItPnJmcy0+Ym1hcCkgeworCQluZXdfYmxvY2sgPSBleHRlbnRfdHJhbnNsYXRlKGZzLCBwYi0+cmZzLT5ibWFwLCBibG9jayk7CisJCWlmIChuZXdfYmxvY2spIHsKKwkJCSpibG9ja19uciA9IG5ld19ibG9jazsKKwkJCXJldCB8PSBCTE9DS19DSEFOR0VEOworCQkJcGItPmNoYW5nZWQgPSAxOworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCQkJaWYgKHBiLT5yZnMtPmZsYWdzICYgUkVTSVpFX0RFQlVHX0JNT1ZFKQorCQkJCXByaW50ZigiaW5vPSV1LCBibG9ja2NudD0lbGxkLCAlbGx1LT4lbGx1XG4iLAorCQkJCSAgICAgICBwYi0+b2xkX2lubywgYmxvY2tjbnQsIGJsb2NrLAorCQkJCSAgICAgICBuZXdfYmxvY2spOworI2VuZGlmCisJCQlibG9jayA9IG5ld19ibG9jazsKKwkJfQorCX0KKworCWlmIChwYi0+aXNfZGlyKSB7CisJCXJldHZhbCA9IGV4dDJmc19hZGRfZGlyX2Jsb2NrMihmcy0+ZGJsaXN0LCBwYi0+aW5vLAorCQkJCQkgICAgICAgYmxvY2ssIChpbnQpIGJsb2NrY250KTsKKwkJaWYgKHJldHZhbCkgeworCQkJcGItPmVycm9yID0gcmV0dmFsOworCQkJcmV0IHw9IEJMT0NLX0FCT1JUOworCQl9CisJfQorCXJldHVybiByZXQ7Cit9CisKKy8qCisgKiBQcm9ncmVzcyBjYWxsYmFjaworICovCitzdGF0aWMgZXJyY29kZV90IHByb2dyZXNzX2NhbGxiYWNrKGV4dDJfZmlsc3lzIGZzLAorCQkJCSAgIGV4dDJfaW5vZGVfc2NhbiBzY2FuIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgICBkZ3JwX3QgZ3JvdXAsIHZvaWQgKiBwcml2X2RhdGEpCit7CisJZXh0Ml9yZXNpemVfdCByZnMgPSAoZXh0Ml9yZXNpemVfdCkgcHJpdl9kYXRhOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJLyoKKwkgKiBUaGlzIGNoZWNrIGlzIHRvIHByb3RlY3QgYWdhaW5zdCBvbGQgZXh0MiBsaWJyYXJpZXMuICBJdAorCSAqIHNob3VsZG4ndCBiZSBuZWVkZWQgYWdhaW5zdCBuZXcgbGlicmFyaWVzLgorCSAqLworCWlmICgoZ3JvdXArMSkgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAocmZzLT5wcm9ncmVzcykgeworCQlpb19jaGFubmVsX2ZsdXNoKGZzLT5pbyk7CisJCXJldHZhbCA9IChyZnMtPnByb2dyZXNzKShyZnMsIEUyX1JTWl9JTk9ERV9TQ0FOX1BBU1MsCisJCQkJCSBncm91cCsxLCBmcy0+Z3JvdXBfZGVzY19jb3VudCk7CisJCWlmIChyZXR2YWwpCisJCQlyZXR1cm4gcmV0dmFsOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgZXJyY29kZV90IG1pZ3JhdGVfZWFfYmxvY2soZXh0Ml9yZXNpemVfdCByZnMsIGV4dDJfaW5vX3QgaW5vLAorCQkJCSAgc3RydWN0IGV4dDJfaW5vZGUgKmlub2RlLCBpbnQgKmNoYW5nZWQpCit7CisJY2hhciAqYnVmID0gTlVMTDsKKwlibGs2NF90IG5ld19ibG9jazsKKwllcnJjb2RlX3QgZXJyID0gMDsKKworCS8qIE5vIEVBIGJsb2NrIG9yIG5vIHJlbWFwcGluZz8gIFF1aXQgZWFybHkuICovCisJaWYgKGV4dDJmc19maWxlX2FjbF9ibG9jayhyZnMtPm9sZF9mcywgaW5vZGUpID09IDAgfHwgIXJmcy0+Ym1hcCkKKwkJcmV0dXJuIDA7CisJbmV3X2Jsb2NrID0gZXh0ZW50X3RyYW5zbGF0ZShyZnMtPm9sZF9mcywgcmZzLT5ibWFwLAorCQlleHQyZnNfZmlsZV9hY2xfYmxvY2socmZzLT5vbGRfZnMsIGlub2RlKSk7CisJaWYgKG5ld19ibG9jayA9PSAwKQorCQlyZXR1cm4gMDsKKworCS8qIFNldCB0aGUgbmV3IEFDTCBibG9jayAqLworCWV4dDJmc19maWxlX2FjbF9ibG9ja19zZXQocmZzLT5vbGRfZnMsIGlub2RlLCBuZXdfYmxvY2spOworCisJLyogVXBkYXRlIGNoZWNrc3VtICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhZGF0YV9jc3VtKHJmcy0+bmV3X2ZzLT5zdXBlcikpIHsKKwkJZXJyID0gZXh0MmZzX2dldF9tZW0ocmZzLT5vbGRfZnMtPmJsb2Nrc2l6ZSwgJmJ1Zik7CisJCWlmIChlcnIpCisJCQlyZXR1cm4gZXJyOworCQlyZnMtPm9sZF9mcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJZXJyID0gZXh0MmZzX3JlYWRfZXh0X2F0dHIzKHJmcy0+b2xkX2ZzLCBuZXdfYmxvY2ssIGJ1ZiwgaW5vKTsKKwkJcmZzLT5vbGRfZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJCWVyciA9IGV4dDJmc193cml0ZV9leHRfYXR0cjMocmZzLT5vbGRfZnMsIG5ld19ibG9jaywgYnVmLCBpbm8pOworCQlpZiAoZXJyKQorCQkJZ290byBvdXQ7CisJfQorCSpjaGFuZ2VkID0gMTsKKworb3V0OgorCWV4dDJmc19mcmVlX21lbSgmYnVmKTsKKwlyZXR1cm4gZXJyOworfQorCisvKiBSZXdyaXRlIGV4dGVudHMgKi8KK3N0YXRpYyBlcnJjb2RlX3QgcmV3cml0ZV9leHRlbnRzKGV4dDJfZmlsc3lzIGZzLCBleHQyX2lub190IGlubykKK3sKKwlleHQyX2V4dGVudF9oYW5kbGVfdAloYW5kbGU7CisJc3RydWN0IGV4dDJmc19leHRlbnQJZXh0ZW50OworCWVycmNvZGVfdAkJZXJyY29kZTsKKwlzdHJ1Y3QgZXh0Ml9leHRlbnRfaW5mbwlpbmZvOworCisJZXJyY29kZSA9IGV4dDJmc19leHRlbnRfb3BlbihmcywgaW5vLCAmaGFuZGxlKTsKKwlpZiAoZXJyY29kZSkKKwkJcmV0dXJuIGVycmNvZGU7CisKKwllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ST09ULCAmZXh0ZW50KTsKKwlpZiAoZXJyY29kZSkKKwkJZ290byBvdXQ7CisKKwlkbyB7CisJCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X2dldF9pbmZvKGhhbmRsZSwgJmluZm8pOworCQlpZiAoZXJyY29kZSkKKwkJCWJyZWFrOworCisJCS8qCisJCSAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IGV4dGVudCBpbiBhbiBleHRlbnQgYmxvY2sgdGhhdCB3ZQorCQkgKiBoYXZlbid0IHZpc2l0ZWQsIHJld3JpdGUgdGhlIGV4dGVudCB0byBmb3JjZSB0aGUgRVRCCisJCSAqIGNoZWNrc3VtIHRvIGJlIHJld3JpdHRlbi4KKwkJICovCisJCWlmIChpbmZvLmN1cnJfZW50cnkgPT0gMSAmJiBpbmZvLmN1cnJfbGV2ZWwgIT0gMCAmJgorCQkgICAgIShleHRlbnQuZV9mbGFncyAmIEVYVDJfRVhURU5UX0ZMQUdTX1NFQ09ORF9WSVNJVCkpIHsKKwkJCWVycmNvZGUgPSBleHQyZnNfZXh0ZW50X3JlcGxhY2UoaGFuZGxlLCAwLCAmZXh0ZW50KTsKKwkJCWlmIChlcnJjb2RlKQorCQkJCWJyZWFrOworCQl9CisKKwkJLyogU2tpcCB0byB0aGUgZW5kIG9mIGEgYmxvY2sgb2YgbGVhZiBub2RlcyAqLworCQlpZiAoZXh0ZW50LmVfZmxhZ3MgJiBFWFQyX0VYVEVOVF9GTEFHU19MRUFGKSB7CisJCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLAorCQkJCQkJICAgIEVYVDJfRVhURU5UX0xBU1RfU0lCLAorCQkJCQkJICAgICZleHRlbnQpOworCQkJaWYgKGVycmNvZGUpCisJCQkJYnJlYWs7CisJCX0KKworCQllcnJjb2RlID0gZXh0MmZzX2V4dGVudF9nZXQoaGFuZGxlLCBFWFQyX0VYVEVOVF9ORVhULCAmZXh0ZW50KTsKKwl9IHdoaWxlIChlcnJjb2RlID09IDApOworCitvdXQ6CisJLyogT2sgaWYgd2UgcnVuIG9mZiB0aGUgZW5kICovCisJaWYgKGVycmNvZGUgPT0gRVhUMl9FVF9FWFRFTlRfTk9fTkVYVCkKKwkJZXJyY29kZSA9IDA7CisJZXh0MmZzX2V4dGVudF9mcmVlKGhhbmRsZSk7CisJcmV0dXJuIGVycmNvZGU7Cit9CisKK3N0YXRpYyB2b2lkIHF1aWV0X2NvbV9lcnJfcHJvYyhjb25zdCBjaGFyICp3aG9hbWkgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIGVycmNvZGVfdCBjb2RlIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpmbXQgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJICAgICAgIHZhX2xpc3QgYXJncyBFWFQyRlNfQVRUUigodW51c2VkKSkpCit7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfc2Nhbl9hbmRfZml4KGV4dDJfcmVzaXplX3QgcmZzKQoreworCXN0cnVjdCBwcm9jZXNzX2Jsb2NrX3N0cnVjdAlwYjsKKwlleHQyX2lub190CQlpbm8sIG5ld19pbm9kZTsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSAJKmlub2RlID0gTlVMTDsKKwlleHQyX2lub2RlX3NjYW4gCXNjYW4gPSBOVUxMOworCWVycmNvZGVfdAkJcmV0dmFsOworCWNoYXIJCQkqYmxvY2tfYnVmID0gMDsKKwlleHQyX2lub190CQlzdGFydF90b19tb3ZlOworCWludAkJCWlub2RlX3NpemU7CisKKwlpZiAoKHJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50IDw9CisJICAgICByZnMtPm5ld19mcy0+Z3JvdXBfZGVzY19jb3VudCkgJiYKKwkgICAgIXJmcy0+Ym1hcCkKKwkJcmV0dXJuIDA7CisKKwlzZXRfY29tX2Vycl9ob29rKHF1aWV0X2NvbV9lcnJfcHJvYyk7CisKKwlyZXR2YWwgPSBleHQyZnNfb3Blbl9pbm9kZV9zY2FuKHJmcy0+b2xkX2ZzLCAwLCAmc2Nhbik7CisJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisKKwlyZXR2YWwgPSBleHQyZnNfaW5pdF9kYmxpc3QocmZzLT5vbGRfZnMsIDApOworCWlmIChyZXR2YWwpIGdvdG8gZXJyb3V0OworCXJldHZhbCA9IGV4dDJmc19nZXRfYXJyYXkocmZzLT5vbGRfZnMtPmJsb2Nrc2l6ZSwgMywgJmJsb2NrX2J1Zik7CisJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisKKwlzdGFydF90b19tb3ZlID0gKHJmcy0+bmV3X2ZzLT5ncm91cF9kZXNjX2NvdW50ICoKKwkJCSByZnMtPm5ld19mcy0+c3VwZXItPnNfaW5vZGVzX3Blcl9ncm91cCk7CisKKwlpZiAocmZzLT5wcm9ncmVzcykgeworCQlyZXR2YWwgPSAocmZzLT5wcm9ncmVzcykocmZzLCBFMl9SU1pfSU5PREVfU0NBTl9QQVNTLAorCQkJCQkgMCwgcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCWV4dDJmc19zZXRfaW5vZGVfY2FsbGJhY2soc2NhbiwgcHJvZ3Jlc3NfY2FsbGJhY2ssICh2b2lkICopIHJmcyk7CisJcGIucmZzID0gcmZzOworCXBiLmlub2RlID0gaW5vZGU7CisJcGIuZXJyb3IgPSAwOworCW5ld19pbm9kZSA9IEVYVDJfRklSU1RfSU5PREUocmZzLT5uZXdfZnMtPnN1cGVyKTsKKwlpbm9kZV9zaXplID0gRVhUMl9JTk9ERV9TSVpFKHJmcy0+bmV3X2ZzLT5zdXBlcik7CisJaW5vZGUgPSBtYWxsb2MoaW5vZGVfc2l6ZSk7CisJaWYgKCFpbm9kZSkgeworCQlyZXR2YWwgPSBFTk9NRU07CisJCWdvdG8gZXJyb3V0OworCX0KKwkvKgorCSAqIEZpcnN0LCBjb3B5IGFsbCBvZiB0aGUgaW5vZGVzIHRoYXQgbmVlZCB0byBiZSBtb3ZlZAorCSAqIGVsc2V3aGVyZSBpbiB0aGUgaW5vZGUgdGFibGUKKwkgKi8KKwl3aGlsZSAoMSkgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X25leHRfaW5vZGVfZnVsbChzY2FuLCAmaW5vLCBpbm9kZSwgaW5vZGVfc2l6ZSk7CisJCWlmIChyZXR2YWwpIGdvdG8gZXJyb3V0OworCQlpZiAoIWlubykKKwkJCWJyZWFrOworCisJCWlmIChpbm9kZS0+aV9saW5rc19jb3VudCA9PSAwICYmIGlubyAhPSBFWFQyX1JFU0laRV9JTk8pCisJCQljb250aW51ZTsgLyogaW5vZGUgbm90IGluIHVzZSAqLworCisJCXBiLmlzX2RpciA9IExJTlVYX1NfSVNESVIoaW5vZGUtPmlfbW9kZSk7CisJCXBiLmNoYW5nZWQgPSAwOworCisJCS8qIFJlbWFwIEVBIGJsb2NrICovCisJCXJldHZhbCA9IG1pZ3JhdGVfZWFfYmxvY2socmZzLCBpbm8sIGlub2RlLCAmcGIuY2hhbmdlZCk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKworCQluZXdfaW5vZGUgPSBpbm87CisJCWlmIChpbm8gPD0gc3RhcnRfdG9fbW92ZSkKKwkJCWdvdG8gcmVtYXBfYmxvY2tzOyAvKiBEb24ndCBuZWVkIHRvIG1vdmUgaW5vZGUuICovCisKKwkJLyoKKwkJICogRmluZCBhIG5ldyBpbm9kZS4gIE5vdyB0aGF0IGV4dGVudHMgYW5kIGRpcmVjdG9yeSBibG9ja3MKKwkJICogYXJlIHRpZWQgdG8gdGhlIGlub2RlIG51bWJlciB0aHJvdWdoIHRoZSBjaGVja3N1bSwgd2UgbXVzdAorCQkgKiBzZXQgdXAgdGhlIG5ldyBpbm9kZSBiZWZvcmUgd2Ugc3RhcnQgcmV3cml0aW5nIGJsb2Nrcy4KKwkJICovCisJCXJldHZhbCA9IGV4dDJmc19uZXdfaW5vZGUocmZzLT5uZXdfZnMsIDAsIDAsIDAsICZuZXdfaW5vZGUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisKKwkJZXh0MmZzX2lub2RlX2FsbG9jX3N0YXRzMihyZnMtPm5ld19mcywgbmV3X2lub2RlLCArMSwKKwkJCQkJICBwYi5pc19kaXIpOworCQlpbm9kZS0+aV9jdGltZSA9IHRpbWUoMCk7CisJCXJldHZhbCA9IGV4dDJmc193cml0ZV9pbm9kZV9mdWxsKHJmcy0+b2xkX2ZzLCBuZXdfaW5vZGUsCisJCQkJCQlpbm9kZSwgaW5vZGVfc2l6ZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKwkJcGIuY2hhbmdlZCA9IDA7CisKKyNpZmRlZiBSRVNJWkUyRlNfREVCVUcKKwkJaWYgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfREVCVUdfSU5PREVNQVApCisJCQlwcmludGYoIklub2RlIG1vdmVkICV1LT4ldVxuIiwgaW5vLCBuZXdfaW5vZGUpOworI2VuZGlmCisJCWlmICghcmZzLT5pbWFwKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfY3JlYXRlX2V4dGVudF90YWJsZSgmcmZzLT5pbWFwLCAwKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKwkJZXh0MmZzX2FkZF9leHRlbnRfZW50cnkocmZzLT5pbWFwLCBpbm8sIG5ld19pbm9kZSk7CisKK3JlbWFwX2Jsb2NrczoKKwkJaWYgKHBiLmNoYW5nZWQpCisJCQlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGVfZnVsbChyZnMtPm9sZF9mcywKKwkJCQkJCQkgbmV3X2lub2RlLAorCQkJCQkJCSBpbm9kZSwgaW5vZGVfc2l6ZSk7CisJCWlmIChyZXR2YWwpCisJCQlnb3RvIGVycm91dDsKKworCQkvKiBSZXdyaXRlIGV4dGVudCBibG9jayBjaGVja3N1bXMgd2l0aCBuZXcgaW5vZGUgbnVtYmVyICovCisJCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YWRhdGFfY3N1bShyZnMtPm9sZF9mcy0+c3VwZXIpICYmCisJCSAgICAoaW5vZGUtPmlfZmxhZ3MgJiBFWFQ0X0VYVEVOVFNfRkwpKSB7CisJCQlyZnMtPm9sZF9mcy0+ZmxhZ3MgfD0gRVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJCXJldHZhbCA9IHJld3JpdGVfZXh0ZW50cyhyZnMtPm9sZF9mcywgbmV3X2lub2RlKTsKKwkJCXJmcy0+b2xkX2ZzLT5mbGFncyAmPSB+RVhUMl9GTEFHX0lHTk9SRV9DU1VNX0VSUk9SUzsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQkvKgorCQkgKiBVcGRhdGUgaW5vZGVzIHRvIHBvaW50IHRvIG5ldyBibG9ja3M7IHNjaGVkdWxlIGRpcmVjdG9yeQorCQkgKiBibG9ja3MgZm9yIGlub2RlIHJlbWFwcGluZy4gIE5lZWQgdG8gd3JpdGUgb3V0IGRpciBibG9ja3MKKwkJICogd2l0aCBuZXcgaW5vZGUgbnVtYmVycyBpZiB3ZSBoYXZlIG1ldGFkYXRhX2NzdW0gZW5hYmxlZC4KKwkJICovCisJCWlmIChleHQyZnNfaW5vZGVfaGFzX3ZhbGlkX2Jsb2NrczIocmZzLT5vbGRfZnMsIGlub2RlKSAmJgorCQkgICAgKHJmcy0+Ym1hcCB8fCBwYi5pc19kaXIpKSB7CisJCQlwYi5pbm8gPSBuZXdfaW5vZGU7CisJCQlwYi5vbGRfaW5vID0gaW5vOworCQkJcGIuaGFzX2V4dGVudHMgPSBpbm9kZS0+aV9mbGFncyAmIEVYVDRfRVhURU5UU19GTDsKKwkJCXJmcy0+b2xkX2ZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCQkJcmV0dmFsID0gZXh0MmZzX2Jsb2NrX2l0ZXJhdGUzKHJmcy0+b2xkX2ZzLAorCQkJCQkJICAgICAgIG5ld19pbm9kZSwgMCwgYmxvY2tfYnVmLAorCQkJCQkJICAgICAgIHByb2Nlc3NfYmxvY2ssICZwYik7CisJCQlyZnMtPm9sZF9mcy0+ZmxhZ3MgJj0gfkVYVDJfRkxBR19JR05PUkVfQ1NVTV9FUlJPUlM7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gZXJyb3V0OworCQkJaWYgKHBiLmVycm9yKSB7CisJCQkJcmV0dmFsID0gcGIuZXJyb3I7CisJCQkJZ290byBlcnJvdXQ7CisJCQl9CisJCX0gZWxzZSBpZiAoKGlub2RlLT5pX2ZsYWdzICYgRVhUNF9JTkxJTkVfREFUQV9GTCkgJiYKKwkJCSAgIChyZnMtPmJtYXAgfHwgcGIuaXNfZGlyKSkgeworCQkJLyogaW5saW5lIGRhdGEgZGlyOyB1cGRhdGUgaXQgdG9vICovCisJCQlyZXR2YWwgPSBleHQyZnNfYWRkX2Rpcl9ibG9jazIocmZzLT5vbGRfZnMtPmRibGlzdCwKKwkJCQkJCSAgICAgICBuZXdfaW5vZGUsIDAsIDApOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJfQorCX0KKwlpb19jaGFubmVsX2ZsdXNoKHJmcy0+b2xkX2ZzLT5pbyk7CisKK2Vycm91dDoKKwlyZXNldF9jb21fZXJyX2hvb2soKTsKKwlpZiAocmZzLT5ibWFwKSB7CisJCWV4dDJmc19mcmVlX2V4dGVudF90YWJsZShyZnMtPmJtYXApOworCQlyZnMtPmJtYXAgPSAwOworCX0KKwlpZiAoc2NhbikKKwkJZXh0MmZzX2Nsb3NlX2lub2RlX3NjYW4oc2Nhbik7CisJaWYgKGJsb2NrX2J1ZikKKwkJZXh0MmZzX2ZyZWVfbWVtKCZibG9ja19idWYpOworCWZyZWUoaW5vZGUpOworCXJldHVybiByZXR2YWw7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogUmVzaXplIHByb2Nlc3NpbmcsIHBoYXNlIDQuCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitzdHJ1Y3QgaXN0cnVjdCB7CisJZXh0Ml9yZXNpemVfdCByZnM7CisJZXJyY29kZV90CWVycjsKKwl1bnNpZ25lZCBpbnQJbWF4X2RpcnM7CisJdW5zaWduZWQgaW50CW51bTsKK307CisKK3N0YXRpYyBpbnQgY2hlY2tfYW5kX2NoYW5nZV9pbm9kZXMoZXh0Ml9pbm9fdCBkaXIsCisJCQkJICAgaW50IGVudHJ5IEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgICBzdHJ1Y3QgZXh0Ml9kaXJfZW50cnkgKmRpcmVudCwgaW50IG9mZnNldCwKKwkJCQkgICBpbnQJYmxvY2tzaXplIEVYVDJGU19BVFRSKCh1bnVzZWQpKSwKKwkJCQkgICBjaGFyICpidWYgRVhUMkZTX0FUVFIoKHVudXNlZCkpLAorCQkJCSAgIHZvaWQgKnByaXZfZGF0YSkKK3sKKwlzdHJ1Y3QgaXN0cnVjdCAqaXMgPSAoc3RydWN0IGlzdHJ1Y3QgKikgcHJpdl9kYXRhOworCXN0cnVjdCBleHQyX2lub2RlIAlpbm9kZTsKKwlleHQyX2lub190CQluZXdfaW5vZGU7CisJZXJyY29kZV90CQlyZXR2YWw7CisJaW50CQkJcmV0ID0gMDsKKworCWlmIChpcy0+cmZzLT5wcm9ncmVzcyAmJiBvZmZzZXQgPT0gMCkgeworCQlpb19jaGFubmVsX2ZsdXNoKGlzLT5yZnMtPm9sZF9mcy0+aW8pOworCQlpcy0+ZXJyID0gKGlzLT5yZnMtPnByb2dyZXNzKShpcy0+cmZzLAorCQkJCQkgICAgICBFMl9SU1pfSU5PREVfUkVGX1VQRF9QQVNTLAorCQkJCQkgICAgICArK2lzLT5udW0sIGlzLT5tYXhfZGlycyk7CisJCWlmIChpcy0+ZXJyKQorCQkJcmV0dXJuIERJUkVOVF9BQk9SVDsKKwl9CisKKwkvKgorCSAqIElmIHdlIGhhdmUgY2hlY2tzdW1zIGVuYWJsZWQgYW5kIHRoZSBpbm9kZSB3YXNuJ3QgcHJlc2VudCBpbiB0aGUKKwkgKiBvbGQgZnMsIHRoZW4gd2UgbXVzdCByZXdyaXRlIGFsbCBkaXIgYmxvY2tzIHdpdGggbmV3IGNoZWNrc3Vtcy4KKwkgKi8KKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX21ldGFkYXRhX2NzdW0oaXMtPnJmcy0+b2xkX2ZzLT5zdXBlcikgJiYKKwkgICAgIWV4dDJmc190ZXN0X2lub2RlX2JpdG1hcDIoaXMtPnJmcy0+b2xkX2ZzLT5pbm9kZV9tYXAsIGRpcikpCisJCXJldCB8PSBESVJFTlRfQ0hBTkdFRDsKKworCWlmICghZGlyZW50LT5pbm9kZSkKKwkJcmV0dXJuIHJldDsKKworCW5ld19pbm9kZSA9IGV4dDJmc19leHRlbnRfdHJhbnNsYXRlKGlzLT5yZnMtPmltYXAsIGRpcmVudC0+aW5vZGUpOworCisJaWYgKCFuZXdfaW5vZGUpCisJCXJldHVybiByZXQ7CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKGlzLT5yZnMtPmZsYWdzICYgUkVTSVpFX0RFQlVHX0lOT0RFTUFQKQorCQlwcmludGYoIklub2RlIHRyYW5zbGF0ZSAoZGlyPSV1LCBuYW1lPSUuKnMsICV1LT4ldSlcbiIsCisJCSAgICAgICBkaXIsIGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZGlyZW50KSwgZGlyZW50LT5uYW1lLAorCQkgICAgICAgZGlyZW50LT5pbm9kZSwgbmV3X2lub2RlKTsKKyNlbmRpZgorCisJZGlyZW50LT5pbm9kZSA9IG5ld19pbm9kZTsKKworCS8qIFVwZGF0ZSB0aGUgZGlyZWN0b3J5IG10aW1lIGFuZCBjdGltZSAqLworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGlzLT5yZnMtPm9sZF9mcywgZGlyLCAmaW5vZGUpOworCWlmIChyZXR2YWwgPT0gMCkgeworCQlpbm9kZS5pX210aW1lID0gaW5vZGUuaV9jdGltZSA9IHRpbWUoMCk7CisJCWlzLT5lcnIgPSBleHQyZnNfd3JpdGVfaW5vZGUoaXMtPnJmcy0+b2xkX2ZzLCBkaXIsICZpbm9kZSk7CisJCWlmIChpcy0+ZXJyKQorCQkJcmV0dXJuIHJldCB8IERJUkVOVF9BQk9SVDsKKwl9CisKKwlyZXR1cm4gcmV0IHwgRElSRU5UX0NIQU5HRUQ7Cit9CisKK3N0YXRpYyBlcnJjb2RlX3QgaW5vZGVfcmVmX2ZpeChleHQyX3Jlc2l6ZV90IHJmcykKK3sKKwllcnJjb2RlX3QJCXJldHZhbDsKKwlzdHJ1Y3QgaXN0cnVjdCAJCWlzOworCisJaWYgKCFyZnMtPmltYXApCisJCXJldHVybiAwOworCisJLyoKKwkgKiBOb3csIHdlIGl0ZXJhdGUgb3ZlciBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIHRvIHVwZGF0ZSB0aGUKKwkgKiBpbm9kZSByZWZlcmVuY2VzCisJICovCisJaXMubnVtID0gMDsKKwlpcy5tYXhfZGlycyA9IGV4dDJmc19kYmxpc3RfY291bnQyKHJmcy0+b2xkX2ZzLT5kYmxpc3QpOworCWlzLnJmcyA9IHJmczsKKwlpcy5lcnIgPSAwOworCisJaWYgKHJmcy0+cHJvZ3Jlc3MpIHsKKwkJcmV0dmFsID0gKHJmcy0+cHJvZ3Jlc3MpKHJmcywgRTJfUlNaX0lOT0RFX1JFRl9VUERfUEFTUywKKwkJCQkJIDAsIGlzLm1heF9kaXJzKTsKKwkJaWYgKHJldHZhbCkKKwkJCWdvdG8gZXJyb3V0OworCX0KKworCXJmcy0+b2xkX2ZzLT5mbGFncyB8PSBFWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCXJldHZhbCA9IGV4dDJmc19kYmxpc3RfZGlyX2l0ZXJhdGUocmZzLT5vbGRfZnMtPmRibGlzdCwKKwkJCQkJICAgRElSRU5UX0ZMQUdfSU5DTFVERV9FTVBUWSwgMCwKKwkJCQkJICAgY2hlY2tfYW5kX2NoYW5nZV9pbm9kZXMsICZpcyk7CisJcmZzLT5vbGRfZnMtPmZsYWdzICY9IH5FWFQyX0ZMQUdfSUdOT1JFX0NTVU1fRVJST1JTOworCWlmIChyZXR2YWwpCisJCWdvdG8gZXJyb3V0OworCWlmIChpcy5lcnIpIHsKKwkJcmV0dmFsID0gaXMuZXJyOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlpZiAocmZzLT5wcm9ncmVzcyAmJiAoaXMubnVtIDwgaXMubWF4X2RpcnMpKQorCQkocmZzLT5wcm9ncmVzcykocmZzLCBFMl9SU1pfSU5PREVfUkVGX1VQRF9QQVNTLAorCQkJCWlzLm1heF9kaXJzLCBpcy5tYXhfZGlycyk7CisKK2Vycm91dDoKKwlleHQyZnNfZnJlZV9leHRlbnRfdGFibGUocmZzLT5pbWFwKTsKKwlyZnMtPmltYXAgPSAwOworCXJldHVybiByZXR2YWw7Cit9CisKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBSZXNpemUgcHJvY2Vzc2luZywgcGhhc2UgNS4KKyAqCisgKiBJbiB0aGlzIHBoYXNlIHdlIGFjdHVhbGx5IG1vdmUgdGhlIGlub2RlIHRhYmxlIGFyb3VuZCwgYW5kIHRoZW4KKyAqIHVwZGF0ZSB0aGUgc3VtbWFyeSBzdGF0aXN0aWNzLiAgVGhpcyBpcyBzY2FyeSwgc2luY2UgYWJvcnRpbmcgaGVyZQorICogd2lsbCBwb3RlbnRpYWxseSBzY3JhbWJsZSB0aGUgZmlsZXN5c3RlbS4gIChXZSBhcmUgbW92aW5nIHRoZQorICogaW5vZGUgdGFibGVzIGFyb3VuZCBpbiBwbGFjZSwgYW5kIHNvIHRoZSBwb3RlbnRpYWwgZm9yIGxvc3QgZGF0YSwKKyAqIG9yIGF0IHRoZSB2ZXJ5IGxlYXN0IHNjcmFtYmxpbmcgdGhlIG1hcHBpbmcgYmV0d2VlbiBmaWxlbmFtZXMgYW5kCisgKiBpbm9kZSBudW1iZXJzIGlzIHZlcnkgaGlnaCBpbiBjYXNlIG9mIGEgcG93ZXIgZmFpbHVyZSBoZXJlLikKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworCisvKgorICogQSB2ZXJ5IHNjYXJ5IHJvdXRpbmUgLS0tIHRoaXMgb25lIG1vdmVzIHRoZSBpbm9kZSB0YWJsZSBhcm91bmQhISEKKyAqCisgKiBBZnRlciB0aGlzIHlvdSBoYXZlIHRvIHVzZSB0aGUgcmZzLT5uZXdfZnMgZmlsZSBoYW5kbGUgdG8gcmVhZCBhbmQKKyAqIHdyaXRlIGlub2Rlcy4KKyAqLworc3RhdGljIGVycmNvZGVfdCBtb3ZlX2l0YWJsZXMoZXh0Ml9yZXNpemVfdCByZnMpCit7CisJaW50CQluLCBudW0sIHNpemU7CisJbG9uZyBsb25nCWRpZmY7CisJZGdycF90CQlpLCBtYXhfZ3JvdXBzOworCWV4dDJfZmlsc3lzCWZzID0gcmZzLT5uZXdfZnM7CisJY2hhcgkJKmNwOworCWJsazY0X3QJCW9sZF9ibGssIG5ld19ibGssIGJsaywgY2x1c3Rlcl9mcmVlZDsKKwllcnJjb2RlX3QJcmV0dmFsOworCWludAkJdG9fbW92ZSwgbW92ZWQ7CisJdW5zaWduZWQgaW50CWo7CisJZXh0MmZzX2Jsb2NrX2JpdG1hcAluZXdfYm1hcCA9IE5VTEw7CisKKwltYXhfZ3JvdXBzID0gZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJaWYgKG1heF9ncm91cHMgPiByZnMtPm9sZF9mcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJbWF4X2dyb3VwcyA9IHJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50OworCisJc2l6ZSA9IGZzLT5ibG9ja3NpemUgKiBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwlpZiAoIXJmcy0+aXRhYmxlX2J1ZikgeworCQlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzaXplLCAmcmZzLT5pdGFibGVfYnVmKTsKKwkJaWYgKHJldHZhbCkKKwkJCXJldHVybiByZXR2YWw7CisJfQorCisJaWYgKEVYVDJGU19DTFVTVEVSX1JBVElPKGZzKSA+IDEpIHsKKwkJcmV0dmFsID0gZXh0MmZzX2FsbG9jYXRlX2Jsb2NrX2JpdG1hcChmcywgXygibmV3IG1ldGEgYmxvY2tzIiksCisJCQkJCQkgICAgICAmbmV3X2JtYXApOworCQlpZiAocmV0dmFsKQorCQkJcmV0dXJuIHJldHZhbDsKKworCQlyZXR2YWwgPSBtYXJrX3RhYmxlX2Jsb2NrcyhmcywgbmV3X2JtYXApOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCisJLyoKKwkgKiBGaWd1cmUgb3V0IGhvdyBtYW55IGlub2RlIHRhYmxlcyB3ZSBuZWVkIHRvIG1vdmUKKwkgKi8KKwl0b19tb3ZlID0gbW92ZWQgPSAwOworCWZvciAoaT0wOyBpIDwgbWF4X2dyb3VwczsgaSsrKQorCQlpZiAoZXh0MmZzX2lub2RlX3RhYmxlX2xvYyhyZnMtPm9sZF9mcywgaSkgIT0KKwkJICAgIGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpKQorCQkJdG9fbW92ZSsrOworCisJaWYgKHRvX21vdmUgPT0gMCkgeworCQlyZXR2YWwgPSAwOworCQlnb3RvIGVycm91dDsKKwl9CisKKwlpZiAocmZzLT5wcm9ncmVzcykgeworCQlyZXR2YWwgPSByZnMtPnByb2dyZXNzKHJmcywgRTJfUlNaX01PVkVfSVRBQkxFX1BBU1MsCisJCQkJICAgICAgIDAsIHRvX21vdmUpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJfQorCisJcmZzLT5vbGRfZnMtPmZsYWdzIHw9IEVYVDJfRkxBR19NQVNURVJfU0JfT05MWTsKKworCWZvciAoaT0wOyBpIDwgbWF4X2dyb3VwczsgaSsrKSB7CisJCW9sZF9ibGsgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKHJmcy0+b2xkX2ZzLCBpKTsKKwkJbmV3X2JsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGkpOworCQlkaWZmID0gbmV3X2JsayAtIG9sZF9ibGs7CisKKyNpZmRlZiBSRVNJWkUyRlNfREVCVUcKKwkJaWYgKHJmcy0+ZmxhZ3MgJiBSRVNJWkVfREVCVUdfSVRBQkxFTU9WRSkKKwkJCXByaW50ZigiSXRhYmxlIG1vdmUgZ3JvdXAgJWQgYmxvY2sgJWxsdS0+JWxsdSAoZGlmZiAlbGxkKVxuIiwKKwkJCSAgICAgICBpLCBvbGRfYmxrLCBuZXdfYmxrLCBkaWZmKTsKKyNlbmRpZgorCisJCWlmICghZGlmZikKKwkJCWNvbnRpbnVlOworCQlpZiAoZGlmZiA8IDApCisJCQlkaWZmID0gMDsKKworCQlyZXR2YWwgPSBpb19jaGFubmVsX3JlYWRfYmxrNjQoZnMtPmlvLCBvbGRfYmxrLAorCQkJCQkgICAgICAgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsCisJCQkJCSAgICAgICByZnMtPml0YWJsZV9idWYpOworCQlpZiAocmV0dmFsKQorCQkJZ290byBlcnJvdXQ7CisJCS8qCisJCSAqIFRoZSBlbmQgb2YgdGhlIGlub2RlIHRhYmxlIHNlZ21lbnQgb2Z0ZW4gY29udGFpbnMKKwkJICogYWxsIHplcm9zLCBhbmQgd2UncmUgb2Z0ZW4gb25seSBtb3ZpbmcgdGhlIGlub2RlCisJCSAqIHRhYmxlIGRvd24gYSBibG9jayBvciB0d28uICBJZiBzbywgd2UgY2FuIG9wdGltaXplCisJCSAqIHRoaW5ncyBieSBub3QgcmV3cml0aW5nIGJsb2NrcyB0aGF0IHdlIGtub3cgdG8gYmUgemVybworCQkgKiBhbHJlYWR5LgorCQkgKi8KKwkJZm9yIChjcCA9IHJmcy0+aXRhYmxlX2J1ZitzaXplLTEsIG49MDsgbiA8IHNpemU7IG4rKywgY3AtLSkKKwkJCWlmICgqY3ApCisJCQkJYnJlYWs7CisJCW4gPSBuID4+IEVYVDJfQkxPQ0tfU0laRV9CSVRTKGZzLT5zdXBlcik7CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJCWlmIChyZnMtPmZsYWdzICYgUkVTSVpFX0RFQlVHX0lUQUJMRU1PVkUpCisJCQlwcmludGYoIiVkIGJsb2NrcyBvZiB6ZXJvcy4uLlxuIiwgbik7CisjZW5kaWYKKwkJbnVtID0gZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXA7CisJCWlmIChuID4gZGlmZikKKwkJCW51bSAtPSBuOworCisJCXJldHZhbCA9IGlvX2NoYW5uZWxfd3JpdGVfYmxrNjQoZnMtPmlvLCBuZXdfYmxrLAorCQkJCQkJbnVtLCByZnMtPml0YWJsZV9idWYpOworCQlpZiAocmV0dmFsKSB7CisJCQlpb19jaGFubmVsX3dyaXRlX2JsazY0KGZzLT5pbywgb2xkX2JsaywKKwkJCQkJICAgICAgIG51bSwgcmZzLT5pdGFibGVfYnVmKTsKKwkJCWdvdG8gZXJyb3V0OworCQl9CisJCWlmIChuID4gZGlmZikgeworCQkJcmV0dmFsID0gaW9fY2hhbm5lbF93cml0ZV9ibGs2NChmcy0+aW8sCisJCQkgICAgICBvbGRfYmxrICsgZnMtPmlub2RlX2Jsb2Nrc19wZXJfZ3JvdXAsCisJCQkgICAgICBkaWZmLCAocmZzLT5pdGFibGVfYnVmICsKKwkJCQkgICAgIChmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCAtIGRpZmYpICoKKwkJCQkgICAgIGZzLT5ibG9ja3NpemUpKTsKKwkJCWlmIChyZXR2YWwpCisJCQkJZ290byBlcnJvdXQ7CisJCX0KKworCQlmb3IgKGJsayA9IGV4dDJmc19pbm9kZV90YWJsZV9sb2MocmZzLT5vbGRfZnMsIGkpLCBqPTA7CisJCSAgICAgaiA8IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwOykgeworCQkJaWYgKG5ld19ibWFwID09IE5VTEwgfHwKKwkJCSAgICAhZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwMihuZXdfYm1hcCwgYmxrKSkgeworCQkJCWV4dDJmc19ibG9ja19hbGxvY19zdGF0czIoZnMsIGJsaywgLTEpOworCQkJCWNsdXN0ZXJfZnJlZWQgPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgLQorCQkJCQkJKGJsayAmIEVYVDJGU19DTFVTVEVSX01BU0soZnMpKTsKKwkJCQlibGsgKz0gY2x1c3Rlcl9mcmVlZDsKKwkJCQlqICs9IGNsdXN0ZXJfZnJlZWQ7CisJCQkJY29udGludWU7CisJCQl9CisJCQlibGsrKzsKKwkJCWorKzsKKwkJfQorCisJCWV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KHJmcy0+b2xkX2ZzLCBpLCBuZXdfYmxrKTsKKwkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQocmZzLT5vbGRfZnMsIGkpOworCQlleHQyZnNfbWFya19zdXBlcl9kaXJ0eShyZnMtPm9sZF9mcyk7CisJCWV4dDJmc19mbHVzaChyZnMtPm9sZF9mcyk7CisKKwkJaWYgKHJmcy0+cHJvZ3Jlc3MpIHsKKwkJCXJldHZhbCA9IHJmcy0+cHJvZ3Jlc3MocmZzLCBFMl9SU1pfTU9WRV9JVEFCTEVfUEFTUywKKwkJCQkJICAgICAgICsrbW92ZWQsIHRvX21vdmUpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGVycm91dDsKKwkJfQorCX0KKwltYXJrX3RhYmxlX2Jsb2NrcyhmcywgZnMtPmJsb2NrX21hcCk7CisJZXh0MmZzX2ZsdXNoKGZzKTsKKyNpZmRlZiBSRVNJWkUyRlNfREVCVUcKKwlpZiAocmZzLT5mbGFncyAmIFJFU0laRV9ERUJVR19JVEFCTEVNT1ZFKQorCQlwcmludGYoIklub2RlIHRhYmxlIG1vdmUgZmluaXNoZWQuXG4iKTsKKyNlbmRpZgorCXJldHZhbCA9IDA7CisKK2Vycm91dDoKKwlpZiAobmV3X2JtYXApCisJCWV4dDJmc19mcmVlX2Jsb2NrX2JpdG1hcChuZXdfYm1hcCk7CisJcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aGVuIGV4cGFuZGluZyBhIGZpbGUgc3lzdGVtLiAgSXQgZnJlZXMgdGhlCisgKiBzdXBlcmJsb2NrIGFuZCBibG9jayBncm91cCBkZXNjcmlwdG9yIGJsb2NrcyBmcm9tIHRoZSBibG9jayBncm91cAorICogd2hpY2ggaXMgbm8gbG9uZ2VyIHRoZSBsYXN0IGJsb2NrIGdyb3VwLgorICovCitzdGF0aWMgZXJyY29kZV90IGNsZWFyX3NwYXJzZV9zdXBlcjJfbGFzdF9ncm91cChleHQyX3Jlc2l6ZV90IHJmcykKK3sKKwlleHQyX2ZpbHN5cwlmcyA9IHJmcy0+bmV3X2ZzOworCWV4dDJfZmlsc3lzCW9sZF9mcyA9IHJmcy0+b2xkX2ZzOworCWVycmNvZGVfdAlyZXR2YWw7CisJZGdycF90CQlvbGRfbGFzdF9iZyA9IHJmcy0+b2xkX2ZzLT5ncm91cF9kZXNjX2NvdW50IC0gMTsKKwlkZ3JwX3QJCWxhc3RfYmcgPSBmcy0+Z3JvdXBfZGVzY19jb3VudCAtIDE7CisJYmxrNjRfdAkJc2IsIG9sZF9kZXNjOworCWJsa190CQludW07CisKKwlpZiAoIWV4dDJmc19oYXNfZmVhdHVyZV9zcGFyc2Vfc3VwZXIyKGZzLT5zdXBlcikpCisJCXJldHVybiAwOworCisJaWYgKGxhc3RfYmcgPD0gb2xkX2xhc3RfYmcpCisJCXJldHVybiAwOworCisJaWYgKGZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzBdID09IG9sZF9mcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSAmJgorCSAgICBmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXSA9PSBvbGRfZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0pCisJCXJldHVybiAwOworCisJaWYgKG9sZF9mcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSAhPSBvbGRfbGFzdF9iZyAmJgorCSAgICBvbGRfZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0gIT0gb2xkX2xhc3RfYmcpCisJCXJldHVybiAwOworCisJaWYgKGZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzBdID09IG9sZF9sYXN0X2JnIHx8CisJICAgIGZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdID09IG9sZF9sYXN0X2JnKQorCQlyZXR1cm4gMDsKKworCWlmIChvbGRfbGFzdF9iZyA9PSAwKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzIocmZzLT5vbGRfZnMsIG9sZF9sYXN0X2JnLAorCQkJCQkgICAmc2IsICZvbGRfZGVzYywgTlVMTCwgJm51bSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKworCWlmIChzYikKKwkJZXh0MmZzX3VubWFya19ibG9ja19iaXRtYXAyKGZzLT5ibG9ja19tYXAsIHNiKTsKKwlpZiAob2xkX2Rlc2MpCisJCWV4dDJmc191bm1hcmtfYmxvY2tfYml0bWFwX3JhbmdlMihmcy0+YmxvY2tfbWFwLCBvbGRfZGVzYywgbnVtKTsKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aGVuIHNocmlua2luZyBhIGZpbGUgc3lzdGVtLiAgV2UgbmVlZCB0bworICogdXRpbGl6ZSBibG9ja3MgZnJvbSB3aGF0IHdpbGwgYmUgdGhlIG5ldyBsYXN0IGJsb2NrIGdyb3VwIGZvciB0aGUKKyAqIGJhY2t1cCBzdXBlcmJsb2NrIGFuZCBibG9jayBncm91cCBkZXNjcmlwdG9yIGJsb2Nrcy4KKyAqIFVuZm9ydHVuYXRlbHksIHRob3NlIGJsb2NrcyBtYXkgYmUgdXNlZCBieSBvdGhlciBmaWxlcyBvciBmcworICogbWV0YWRhdGEgYmxvY2tzLiAgV2UgbmVlZCB0byBtYXJrIHRoZW0gYXMgYmVpbmcgaW4gdXNlLgorICovCitzdGF0aWMgZXJyY29kZV90IHJlc2VydmVfc3BhcnNlX3N1cGVyMl9sYXN0X2dyb3VwKGV4dDJfcmVzaXplX3QgcmZzLAorCQkJCQkJIGV4dDJmc19ibG9ja19iaXRtYXAgbWV0YV9ibWFwKQoreworCWV4dDJfZmlsc3lzCWZzID0gcmZzLT5uZXdfZnM7CisJZXh0Ml9maWxzeXMJb2xkX2ZzID0gcmZzLT5vbGRfZnM7CisJZXJyY29kZV90CXJldHZhbDsKKwlkZ3JwX3QJCW9sZF9sYXN0X2JnID0gcmZzLT5vbGRfZnMtPmdyb3VwX2Rlc2NfY291bnQgLSAxOworCWRncnBfdAkJbGFzdF9iZyA9IGZzLT5ncm91cF9kZXNjX2NvdW50IC0gMTsKKwlkZ3JwX3QJCWc7CisJYmxrNjRfdAkJYmxrLCBzYiwgb2xkX2Rlc2M7CisJYmxrX3QJCWksIG51bTsKKwlpbnQJCXJlYWxsb2MgPSAwOworCisJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfc3BhcnNlX3N1cGVyMihmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCWlmIChsYXN0X2JnID49IG9sZF9sYXN0X2JnKQorCQlyZXR1cm4gMDsKKworCWlmIChmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSA9PSBvbGRfZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMF0gJiYKKwkgICAgZnMtPnN1cGVyLT5zX2JhY2t1cF9iZ3NbMV0gPT0gb2xkX2ZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdKQorCQlyZXR1cm4gMDsKKworCWlmIChmcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSAhPSBsYXN0X2JnICYmCisJICAgIGZzLT5zdXBlci0+c19iYWNrdXBfYmdzWzFdICE9IGxhc3RfYmcpCisJCXJldHVybiAwOworCisJaWYgKG9sZF9mcy0+c3VwZXItPnNfYmFja3VwX2Jnc1swXSA9PSBsYXN0X2JnIHx8CisJICAgIG9sZF9mcy0+c3VwZXItPnNfYmFja3VwX2Jnc1sxXSA9PSBsYXN0X2JnKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzIocmZzLT5uZXdfZnMsIGxhc3RfYmcsCisJCQkJCSAgICZzYiwgJm9sZF9kZXNjLCBOVUxMLCAmbnVtKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCisJaWYgKGxhc3RfYmcgJiYgIXNiKSB7CisJCWZwdXRzKF8oIlNob3VsZCBuZXZlciBoYXBwZW4hICBObyBzYiBpbiBsYXN0IHN1cGVyX3NwYXJzZSBiZz9cbiIpLAorCQkgICAgICBzdGRlcnIpOworCQlleGl0KDEpOworCX0KKwlpZiAob2xkX2Rlc2MgJiYgb2xkX2Rlc2MgIT0gc2IrMSkgeworCQlmcHV0cyhfKCJTaG91bGQgbmV2ZXIgaGFwcGVuISAgVW5leHBlY3RlZCBvbGRfZGVzYyBpbiAiCisJCQkic3VwZXJfc3BhcnNlIGJnP1xuIiksCisJCSAgICAgIHN0ZGVycik7CisJCWV4aXQoMSk7CisJfQorCW51bSA9IChvbGRfZGVzYykgPyBudW0gOiAxOworCisJLyogUmVzZXJ2ZSB0aGUgYmFja3VwIGJsb2NrcyAqLworCWV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcF9yYW5nZTIoZnMtPmJsb2NrX21hcCwgc2IsIG51bSk7CisKKwlmb3IgKGcgPSAwOyBnIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGcrKykgeworCQlibGs2NF90IG1iOworCisJCW1iID0gZXh0MmZzX2Jsb2NrX2JpdG1hcF9sb2MoZnMsIGcpOworCQlpZiAoKG1iID49IHNiKSAmJiAobWIgPCBzYiArIG51bSkpIHsKKwkJCWV4dDJmc19ibG9ja19iaXRtYXBfbG9jX3NldChmcywgZywgMCk7CisJCQlyZWFsbG9jID0gMTsKKwkJfQorCQltYiA9IGV4dDJmc19pbm9kZV9iaXRtYXBfbG9jKGZzLCBnKTsKKwkJaWYgKChtYiA+PSBzYikgJiYgKG1iIDwgc2IgKyBudW0pKSB7CisJCQlleHQyZnNfaW5vZGVfYml0bWFwX2xvY19zZXQoZnMsIGcsIDApOworCQkJcmVhbGxvYyA9IDE7CisJCX0KKwkJbWIgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBnKTsKKwkJaWYgKChtYiA8IHNiICsgbnVtKSAmJgorCQkgICAgKHNiIDwgbWIgKyBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCkpIHsKKwkJCWV4dDJmc19pbm9kZV90YWJsZV9sb2Nfc2V0KGZzLCBnLCAwKTsKKwkJCXJlYWxsb2MgPSAxOworCQl9CisJCWlmIChyZWFsbG9jKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfYWxsb2NhdGVfZ3JvdXBfdGFibGUoZnMsIGcsIDApOworCQkJaWYgKHJldHZhbCkKKwkJCQlyZXR1cm4gcmV0dmFsOworCQl9CisJfQorCisJZm9yIChibGsgPSBzYiwgaSA9IDA7IGkgPCBudW07IGJsaysrLCBpKyspIHsKKwkJaWYgKGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcDIob2xkX2ZzLT5ibG9ja19tYXAsIGJsaykgJiYKKwkJICAgICFleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAyKG1ldGFfYm1hcCwgYmxrKSkgeworCQkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPm1vdmVfYmxvY2tzLCBibGspOworCQkJcmZzLT5uZWVkZWRfYmxvY2tzKys7CisJCX0KKwkJZXh0MmZzX21hcmtfYmxvY2tfYml0bWFwMihyZnMtPnJlc2VydmVfYmxvY2tzLCBibGspOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEZpeCB0aGUgcmVzaXplIGlub2RlCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZml4X3Jlc2l6ZV9pbm9kZShleHQyX2ZpbHN5cyBmcykKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZQlpbm9kZTsKKwllcnJjb2RlX3QJCXJldHZhbDsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX3Jlc2l6ZV9pbm9kZShmcy0+c3VwZXIpKQorCQlyZXR1cm4gMDsKKworCXJldHZhbCA9IGV4dDJmc19yZWFkX2lub2RlKGZzLCBFWFQyX1JFU0laRV9JTk8sICZpbm9kZSk7CisJaWYgKHJldHZhbCkgZ290byBlcnJvdXQ7CisKKwlleHQyZnNfaWJsa19zZXQoZnMsICZpbm9kZSwgMSk7CisKKwlyZXR2YWwgPSBleHQyZnNfd3JpdGVfaW5vZGUoZnMsIEVYVDJfUkVTSVpFX0lOTywgJmlub2RlKTsKKwlpZiAocmV0dmFsKSBnb3RvIGVycm91dDsKKworCWlmICghaW5vZGUuaV9ibG9ja1tFWFQyX0RJTkRfQkxPQ0tdKSB7CisJCS8qCisJCSAqIEF2b2lkIHplcm9pbmcgb3V0IGJsb2NrICMwOyB0aGF0J3MgcnVkZS4gIFRoaXMKKwkJICogc2hvdWxkIG5ldmVyIGhhcHBlbiBhbnl3YXkgc2luY2UgdGhlIGZpbGVzeXN0ZW0KKwkJICogc2hvdWxkIGJlIGZzY2snZWQgYW5kIHdlIGFzc3VtZSBpdCBpcyBjb25zaXN0ZW50LgorCQkgKi8KKwkJZnByaW50ZihzdGRlcnIsICIlcyIsCisJCQlfKCJTaG91bGQgbmV2ZXIgaGFwcGVuOiByZXNpemUgaW5vZGUgY29ycnVwdCFcbiIpKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXR2YWwgPSBleHQyZnNfemVyb19ibG9ja3MyKGZzLCBpbm9kZS5pX2Jsb2NrW0VYVDJfRElORF9CTE9DS10sIDEsCisJCQkJICAgICBOVUxMLCBOVUxMKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfcmVzaXplX2lub2RlKGZzKTsKKwlpZiAocmV0dmFsKQorCQlnb3RvIGVycm91dDsKKworZXJyb3V0OgorCXJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBGaW5hbGx5LCByZWNhbGN1bGF0ZSB0aGUgc3VtbWFyeSBpbmZvcm1hdGlvbgorICovCitzdGF0aWMgZXJyY29kZV90IGV4dDJmc19jYWxjdWxhdGVfc3VtbWFyeV9zdGF0cyhleHQyX2ZpbHN5cyBmcykKK3sKKwlibGs2NF90CQlibGs7CisJZXh0Ml9pbm9fdAlpbm87CisJdW5zaWduZWQgaW50CWdyb3VwID0gMDsKKwl1bnNpZ25lZCBpbnQJY291bnQgPSAwOworCWJsazY0X3QJCXRvdGFsX2Jsb2Nrc19mcmVlID0gMDsKKwlpbnQJCXRvdGFsX2lub2Rlc19mcmVlID0gMDsKKwlpbnQJCWdyb3VwX2ZyZWUgPSAwOworCWludAkJdW5pbml0ID0gMDsKKwlibGs2NF90CQlzdXBlcl9ibGssIG9sZF9kZXNjX2JsaywgbmV3X2Rlc2NfYmxrOworCWludAkJb2xkX2Rlc2NfYmxvY2tzOworCisJLyoKKwkgKiBGaXJzdCBjYWxjdWxhdGUgdGhlIGJsb2NrIHN0YXRpc3RpY3MKKwkgKi8KKwl1bmluaXQgPSBleHQyZnNfYmdfZmxhZ3NfdGVzdChmcywgZ3JvdXAsIEVYVDJfQkdfQkxPQ0tfVU5JTklUKTsKKwlleHQyZnNfc3VwZXJfYW5kX2JnZF9sb2MyKGZzLCBncm91cCwgJnN1cGVyX2JsaywgJm9sZF9kZXNjX2JsaywKKwkJCQkgICZuZXdfZGVzY19ibGssIDApOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfbWV0YV9iZyhmcy0+c3VwZXIpKQorCQlvbGRfZGVzY19ibG9ja3MgPSBmcy0+c3VwZXItPnNfZmlyc3RfbWV0YV9iZzsKKwllbHNlCisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5kZXNjX2Jsb2NrcyArCisJCQlmcy0+c3VwZXItPnNfcmVzZXJ2ZWRfZ2R0X2Jsb2NrczsKKwlmb3IgKGJsayA9IEIyQyhmcy0+c3VwZXItPnNfZmlyc3RfZGF0YV9ibG9jayk7CisJICAgICBibGsgPCBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcik7CisJICAgICBibGsgKz0gRVhUMkZTX0NMVVNURVJfUkFUSU8oZnMpKSB7CisJCWlmICgodW5pbml0ICYmCisJCSAgICAgIShFUV9DTFNUUihibGssIHN1cGVyX2JsaykgfHwKKwkJICAgICAgICgob2xkX2Rlc2NfYmxrICYmIG9sZF9kZXNjX2Jsb2NrcyAmJgorCQkJIEdFX0NMU1RSKGJsaywgb2xkX2Rlc2NfYmxrKSAmJgorCQkJIExUX0NMU1RSKGJsaywgb2xkX2Rlc2NfYmxrICsgb2xkX2Rlc2NfYmxvY2tzKSkpIHx8CisJCSAgICAgICAoKG5ld19kZXNjX2JsayAmJiBFUV9DTFNUUihibGssIG5ld19kZXNjX2JsaykpKSB8fAorCQkgICAgICAgRVFfQ0xTVFIoYmxrLCBleHQyZnNfYmxvY2tfYml0bWFwX2xvYyhmcywgZ3JvdXApKSB8fAorCQkgICAgICAgRVFfQ0xTVFIoYmxrLCBleHQyZnNfaW5vZGVfYml0bWFwX2xvYyhmcywgZ3JvdXApKSB8fAorCQkgICAgICAgKChHRV9DTFNUUihibGssIGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGdyb3VwKSkgJiYKKwkJCSBMVF9DTFNUUihibGssIGV4dDJmc19pbm9kZV90YWJsZV9sb2MoZnMsIGdyb3VwKQorCQkJCSAgKyBmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cCkpKSkpIHx8CisJCSAgICAoIWV4dDJmc19mYXN0X3Rlc3RfYmxvY2tfYml0bWFwMihmcy0+YmxvY2tfbWFwLCBibGspKSkgeworCQkJZ3JvdXBfZnJlZSsrOworCQkJdG90YWxfYmxvY2tzX2ZyZWUrKzsKKwkJfQorCQljb3VudCsrOworCQlpZiAoKGNvdW50ID09IGZzLT5zdXBlci0+c19jbHVzdGVyc19wZXJfZ3JvdXApIHx8CisJCSAgICBFUV9DTFNUUihibGssIGV4dDJmc19ibG9ja3NfY291bnQoZnMtPnN1cGVyKS0xKSkgeworCQkJZXh0MmZzX2JnX2ZyZWVfYmxvY2tzX2NvdW50X3NldChmcywgZ3JvdXAsIGdyb3VwX2ZyZWUpOworCQkJZXh0MmZzX2dyb3VwX2Rlc2NfY3N1bV9zZXQoZnMsIGdyb3VwKTsKKwkJCWdyb3VwKys7CisJCQlpZiAoZ3JvdXAgPj0gZnMtPmdyb3VwX2Rlc2NfY291bnQpCisJCQkJYnJlYWs7CisJCQljb3VudCA9IDA7CisJCQlncm91cF9mcmVlID0gMDsKKwkJCXVuaW5pdCA9IGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwgRVhUMl9CR19CTE9DS19VTklOSVQpOworCQkJZXh0MmZzX3N1cGVyX2FuZF9iZ2RfbG9jMihmcywgZ3JvdXAsICZzdXBlcl9ibGssCisJCQkJCQkgICZvbGRfZGVzY19ibGssCisJCQkJCQkgICZuZXdfZGVzY19ibGssIDApOworCQkJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikpCisJCQkJb2xkX2Rlc2NfYmxvY2tzID0gZnMtPnN1cGVyLT5zX2ZpcnN0X21ldGFfYmc7CisJCQllbHNlCisJCQkJb2xkX2Rlc2NfYmxvY2tzID0gZnMtPmRlc2NfYmxvY2tzICsKKwkJCQkJZnMtPnN1cGVyLT5zX3Jlc2VydmVkX2dkdF9ibG9ja3M7CisJCX0KKwl9CisJdG90YWxfYmxvY2tzX2ZyZWUgPSBDMkIodG90YWxfYmxvY2tzX2ZyZWUpOworCWV4dDJmc19mcmVlX2Jsb2Nrc19jb3VudF9zZXQoZnMtPnN1cGVyLCB0b3RhbF9ibG9ja3NfZnJlZSk7CisKKwkvKgorCSAqIE5leHQsIGNhbGN1bGF0ZSB0aGUgaW5vZGUgc3RhdGlzdGljcworCSAqLworCWdyb3VwX2ZyZWUgPSAwOworCWNvdW50ID0gMDsKKwlncm91cCA9IDA7CisKKwkvKiBQcm90ZWN0IGxvb3AgZnJvbSB3cmFwLWFyb3VuZCBpZiBzX2lub2Rlc19jb3VudCBtYXhlZCAqLworCXVuaW5pdCA9IGV4dDJmc19iZ19mbGFnc190ZXN0KGZzLCBncm91cCwgRVhUMl9CR19JTk9ERV9VTklOSVQpOworCWZvciAoaW5vID0gMTsgaW5vIDw9IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQgJiYgaW5vID4gMDsgaW5vKyspIHsKKwkJaWYgKHVuaW5pdCB8fAorCQkgICAgIWV4dDJmc19mYXN0X3Rlc3RfaW5vZGVfYml0bWFwMihmcy0+aW5vZGVfbWFwLCBpbm8pKSB7CisJCQlncm91cF9mcmVlKys7CisJCQl0b3RhbF9pbm9kZXNfZnJlZSsrOworCQl9CisJCWNvdW50Kys7CisJCWlmICgoY291bnQgPT0gZnMtPnN1cGVyLT5zX2lub2Rlc19wZXJfZ3JvdXApIHx8CisJCSAgICAoaW5vID09IGZzLT5zdXBlci0+c19pbm9kZXNfY291bnQpKSB7CisJCQlleHQyZnNfYmdfZnJlZV9pbm9kZXNfY291bnRfc2V0KGZzLCBncm91cCwgZ3JvdXBfZnJlZSk7CisJCQlleHQyZnNfZ3JvdXBfZGVzY19jc3VtX3NldChmcywgZ3JvdXApOworCQkJZ3JvdXArKzsKKwkJCWlmIChncm91cCA+PSBmcy0+Z3JvdXBfZGVzY19jb3VudCkKKwkJCQlicmVhazsKKwkJCWNvdW50ID0gMDsKKwkJCWdyb3VwX2ZyZWUgPSAwOworCQkJdW5pbml0ID0gZXh0MmZzX2JnX2ZsYWdzX3Rlc3QoZnMsIGdyb3VwLCBFWFQyX0JHX0lOT0RFX1VOSU5JVCk7CisJCX0KKwl9CisJZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50ID0gdG90YWxfaW5vZGVzX2ZyZWU7CisJZXh0MmZzX21hcmtfc3VwZXJfZGlydHkoZnMpOworCXJldHVybiAwOworfQorCisvKgorICogIEpvdXJuYWwgbWF5IGhhdmUgYmVlbiByZWxvY2F0ZWQ7IHVwZGF0ZSB0aGUgYmFja3VwIGpvdXJuYWwgYmxvY2tzCisgKiAgaW4gdGhlIHN1cGVyYmxvY2suCisgKi8KK3N0YXRpYyBlcnJjb2RlX3QgZml4X3NiX2pvdXJuYWxfYmFja3VwKGV4dDJfZmlsc3lzIGZzKQoreworCWVycmNvZGVfdAkgIHJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZSBpbm9kZTsKKworCWlmICghZXh0MmZzX2hhc19mZWF0dXJlX2pvdXJuYWwoZnMtPnN1cGVyKSkKKwkJcmV0dXJuIDA7CisKKwkvKiBFeHRlcm5hbCBqb3VybmFsPyBOb3RoaW5nIHRvIGRvLiAqLworCWlmIChmcy0+c3VwZXItPnNfam91cm5hbF9kZXYgJiYgIWZzLT5zdXBlci0+c19qb3VybmFsX2ludW0pCisJCXJldHVybiAwOworCisJcmV0dmFsID0gZXh0MmZzX3JlYWRfaW5vZGUoZnMsIGZzLT5zdXBlci0+c19qb3VybmFsX2ludW0sICZpbm9kZSk7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIHJldHZhbDsKKwltZW1jcHkoZnMtPnN1cGVyLT5zX2pubF9ibG9ja3MsIGlub2RlLmlfYmxvY2ssIEVYVDJfTl9CTE9DS1MqNCk7CisJZnMtPnN1cGVyLT5zX2pubF9ibG9ja3NbMTVdID0gaW5vZGUuaV9zaXplX2hpZ2g7CisJZnMtPnN1cGVyLT5zX2pubF9ibG9ja3NbMTZdID0gaW5vZGUuaV9zaXplOworCWZzLT5zdXBlci0+c19qbmxfYmFja3VwX3R5cGUgPSBFWFQzX0pOTF9CQUNLVVBfQkxPQ0tTOworCWV4dDJmc19tYXJrX3N1cGVyX2RpcnR5KGZzKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjYWxjX2dyb3VwX292ZXJoZWFkKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90IGdycCwKKwkJCSAgICAgICBpbnQgb2xkX2Rlc2NfYmxvY2tzKQoreworCWJsazY0X3QJc3VwZXJfYmxrLCBvbGRfZGVzY19ibGssIG5ld19kZXNjX2JsazsKKwlpbnQgb3ZlcmhlYWQ7CisKKwkvKiBpbm9kZSB0YWJsZSBibG9ja3MgcGx1cyBhbGxvY2F0aW9uIGJpdG1hcHMgKi8KKwlvdmVyaGVhZCA9IGZzLT5pbm9kZV9ibG9ja3NfcGVyX2dyb3VwICsgMjsKKworCWV4dDJmc19zdXBlcl9hbmRfYmdkX2xvYzIoZnMsIGdycCwgJnN1cGVyX2JsaywKKwkJCQkgICZvbGRfZGVzY19ibGssICZuZXdfZGVzY19ibGssIDApOworCWlmICgoZ3JwID09IDApIHx8IHN1cGVyX2JsaykKKwkJb3ZlcmhlYWQrKzsKKwlpZiAob2xkX2Rlc2NfYmxrKQorCQlvdmVyaGVhZCArPSBvbGRfZGVzY19ibG9ja3M7CisJZWxzZSBpZiAobmV3X2Rlc2NfYmxrKQorCQlvdmVyaGVhZCsrOworCXJldHVybiBvdmVyaGVhZDsKK30KKworCisvKgorICogY2FsY2x1YXRlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBibG9ja3MgdGhlIGdpdmVuIGZzIGNhbiBiZSByZXNpemVkIHRvCisgKi8KK2JsazY0X3QgY2FsY3VsYXRlX21pbmltdW1fcmVzaXplX3NpemUoZXh0Ml9maWxzeXMgZnMsIGludCBmbGFncykKK3sKKwlleHQyX2lub190IGlub2RlX2NvdW50OworCWRncnBfdCBncm91cHMsIGZsZXhfZ3JvdXBzOworCWJsazY0X3QgYmxrc19uZWVkZWQsIGRhdGFfYmxvY2tzOworCWJsazY0X3QgZ3JwLCBkYXRhX25lZWRlZCwgbGFzdF9zdGFydDsKKwlibGs2NF90IG92ZXJoZWFkID0gMDsKKwlpbnQgb2xkX2Rlc2NfYmxvY2tzOworCWludCBmbGV4Ymdfc2l6ZSA9IDEgPDwgZnMtPnN1cGVyLT5zX2xvZ19ncm91cHNfcGVyX2ZsZXg7CisKKwkvKgorCSAqIGZpcnN0IGZpZ3VyZSBvdXQgaG93IG1hbnkgZ3JvdXAgZGVzY3JpcHRvcnMgd2UgbmVlZCB0bworCSAqIGhhbmRsZSB0aGUgbnVtYmVyIG9mIGlub2RlcyB3ZSBoYXZlCisJICovCisJaW5vZGVfY291bnQgPSBmcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50IC0KKwkJZnMtPnN1cGVyLT5zX2ZyZWVfaW5vZGVzX2NvdW50OworCWJsa3NfbmVlZGVkID0gZXh0MmZzX2Rpdl9jZWlsKGlub2RlX2NvdW50LAorCQkJCSAgICAgIGZzLT5zdXBlci0+c19pbm9kZXNfcGVyX2dyb3VwKSAqCisJCShibGs2NF90KSBFWFQyX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKTsKKwlncm91cHMgPSBleHQyZnNfZGl2NjRfY2VpbChibGtzX25lZWRlZCwKKwkJCQkgICBFWFQyX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKSk7CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKGZsYWdzICYgUkVTSVpFX0RFQlVHX01JTl9DQUxDKQorCQlwcmludGYoImZzIGhhcyAlZCBpbm9kZXMsICVkIGdyb3VwcyByZXF1aXJlZC5cbiIsCisJCSAgICAgICBpbm9kZV9jb3VudCwgZ3JvdXBzKTsKKyNlbmRpZgorCisJLyoKKwkgKiBudW1iZXIgb2Ygb2xkLXN0eWxlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgYmxvY2tzCisJICovCisJaWYgKGV4dDJmc19oYXNfZmVhdHVyZV9tZXRhX2JnKGZzLT5zdXBlcikpCisJCW9sZF9kZXNjX2Jsb2NrcyA9IGZzLT5zdXBlci0+c19maXJzdF9tZXRhX2JnOworCWVsc2UKKwkJb2xkX2Rlc2NfYmxvY2tzID0gZnMtPmRlc2NfYmxvY2tzICsKKwkJCWZzLT5zdXBlci0+c19yZXNlcnZlZF9nZHRfYmxvY2tzOworCisJLyogY2FsY3VsYXRlIGhvdyBtYW55IGJsb2NrcyBhcmUgbmVlZGVkIGZvciBkYXRhICovCisJZGF0YV9uZWVkZWQgPSBleHQyZnNfYmxvY2tzX2NvdW50KGZzLT5zdXBlcikgLQorCQlleHQyZnNfZnJlZV9ibG9ja3NfY291bnQoZnMtPnN1cGVyKTsKKworCWZvciAoZ3JwID0gMDsgZ3JwIDwgZnMtPmdyb3VwX2Rlc2NfY291bnQ7IGdycCsrKQorCQlkYXRhX25lZWRlZCAtPSBjYWxjX2dyb3VwX292ZXJoZWFkKGZzLCBncnAsIG9sZF9kZXNjX2Jsb2Nrcyk7CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKGZsYWdzICYgUkVTSVpFX0RFQlVHX01JTl9DQUxDKQorCQlwcmludGYoImZzIHJlcXVpcmVzICVsbHUgZGF0YSBibG9ja3MuXG4iLCBkYXRhX25lZWRlZCk7CisjZW5kaWYKKworCS8qCisJICogRm9yIGV4dDQgd2UgbmVlZCB0byBhbGxvdyBmb3IgdXAgdG8gYSBmbGV4X2JnIHdvcnRoIG9mCisJICogaW5vZGUgdGFibGVzIG9mIHNsYWNrIHNwYWNlIHNvIHRoZSByZXNpemUgb3BlcmF0aW9uIGNhbiBiZQorCSAqIGd1YXJhbnRlZWQgdG8gZmluaXNoLgorCSAqLworCWZsZXhfZ3JvdXBzID0gZ3JvdXBzOworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpKSB7CisJCWRncnBfdCByZW1haW5kZXIgPSBncm91cHMgJiAoZmxleGJnX3NpemUgLSAxKTsKKworCQlmbGV4X2dyb3VwcyArPSBmbGV4Ymdfc2l6ZSAtIHJlbWFpbmRlcjsKKwkJaWYgKGZsZXhfZ3JvdXBzID4gZnMtPmdyb3VwX2Rlc2NfY291bnQpCisJCQlmbGV4X2dyb3VwcyA9IGZzLT5ncm91cF9kZXNjX2NvdW50OworCX0KKworCS8qCisJICogZmlndXJlIG91dCBob3cgbWFueSBkYXRhIGJsb2NrcyB3ZSBoYXZlIGdpdmVuIHRoZSBudW1iZXIgb2YgZ3JvdXBzCisJICogd2UgbmVlZCBmb3Igb3VyIGlub2RlcworCSAqLworCWRhdGFfYmxvY2tzID0gRVhUMl9HUk9VUFNfVE9fQkxPQ0tTKGZzLT5zdXBlciwgZ3JvdXBzKTsKKwlsYXN0X3N0YXJ0ID0gMDsKKwlmb3IgKGdycCA9IDA7IGdycCA8IGZsZXhfZ3JvdXBzOyBncnArKykgeworCQlvdmVyaGVhZCA9IGNhbGNfZ3JvdXBfb3ZlcmhlYWQoZnMsIGdycCwgb2xkX2Rlc2NfYmxvY2tzKTsKKworCQkvKgorCQkgKiB3ZSB3YW50IHRvIGtlZXAgdHJhY2sgb2YgaG93IG11Y2ggZGF0YSB3ZSBjYW4gc3RvcmUgaW4KKwkJICogdGhlIGdyb3VwcyBsZWFkaW5nIHVwIHRvIHRoZSBsYXN0IGdyb3VwIHNvIHdlIGNhbiBkZXRlcm1pbmUKKwkJICogaG93IGJpZyB0aGUgbGFzdCBncm91cCBuZWVkcyB0byBiZQorCQkgKi8KKwkJaWYgKGdycCA8IChncm91cHMgLSAxKSkKKwkJCWxhc3Rfc3RhcnQgKz0gRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikgLQorCQkJCW92ZXJoZWFkOworCisJCWlmIChkYXRhX2Jsb2NrcyA+IG92ZXJoZWFkKQorCQkJZGF0YV9ibG9ja3MgLT0gb3ZlcmhlYWQ7CisJCWVsc2UKKwkJCWRhdGFfYmxvY2tzID0gMDsKKwl9CisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJaWYgKGZsYWdzICYgUkVTSVpFX0RFQlVHX01JTl9DQUxDKQorCQlwcmludGYoIldpdGggJWQgZ3JvdXAocyksIHdlIGhhdmUgJWxsdSBibG9ja3MgYXZhaWxhYmxlLlxuIiwKKwkJICAgICAgIGdyb3VwcywgZGF0YV9ibG9ja3MpOworI2VuZGlmCisKKwkvKgorCSAqIGlmIHdlIG5lZWQgbW9yZSBncm91cCBkZXNjcmlwdG9ycyBpbiBvcmRlciB0byBhY2NvbW9kYXRlIG91ciBkYXRhCisJICogdGhlbiB3ZSBuZWVkIHRvIGFkZCB0aGVtIGhlcmUKKwkgKi8KKwlibGtzX25lZWRlZCA9IGRhdGFfbmVlZGVkOworCXdoaWxlIChibGtzX25lZWRlZCA+IGRhdGFfYmxvY2tzKSB7CisJCWJsazY0X3QgcmVtYWluZGVyID0gYmxrc19uZWVkZWQgLSBkYXRhX2Jsb2NrczsKKwkJZGdycF90IGV4dHJhX2dycHM7CisKKwkJLyogZmlndXJlIG91dCBob3cgbWFueSBtb3JlIGdyb3VwcyB3ZSBuZWVkIGZvciB0aGUgZGF0YSAqLworCQlleHRyYV9ncnBzID0gZXh0MmZzX2RpdjY0X2NlaWwocmVtYWluZGVyLAorCQkJCQkgICAgICAgRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikpOworCisJCWRhdGFfYmxvY2tzICs9IEVYVDJfR1JPVVBTX1RPX0JMT0NLUyhmcy0+c3VwZXIsIGV4dHJhX2dycHMpOworCisJCS8qIG9rIHdlIGhhdmUgdG8gYWNjb3VudCBmb3IgdGhlIGxhc3QgZ3JvdXAgKi8KKwkJb3ZlcmhlYWQgPSBjYWxjX2dyb3VwX292ZXJoZWFkKGZzLCBncm91cHMtMSwgb2xkX2Rlc2NfYmxvY2tzKTsKKwkJbGFzdF9zdGFydCArPSBFWFQyX0JMT0NLU19QRVJfR1JPVVAoZnMtPnN1cGVyKSAtIG92ZXJoZWFkOworCisJCWdycCA9IGZsZXhfZ3JvdXBzOworCQlncm91cHMgKz0gZXh0cmFfZ3JwczsKKwkJaWYgKCFleHQyZnNfaGFzX2ZlYXR1cmVfZmxleF9iZyhmcy0+c3VwZXIpKQorCQkJZmxleF9ncm91cHMgPSBncm91cHM7CisJCWVsc2UgaWYgKGdyb3VwcyA+IGZsZXhfZ3JvdXBzKSB7CisJCQlkZ3JwX3QgciA9IGdyb3VwcyAmIChmbGV4Ymdfc2l6ZSAtIDEpOworCisJCQlmbGV4X2dyb3VwcyA9IGdyb3VwcyArIGZsZXhiZ19zaXplIC0gcjsKKwkJCWlmIChmbGV4X2dyb3VwcyA+IGZzLT5ncm91cF9kZXNjX2NvdW50KQorCQkJCWZsZXhfZ3JvdXBzID0gZnMtPmdyb3VwX2Rlc2NfY291bnQ7CisJCX0KKworCQlmb3IgKDsgZ3JwIDwgZmxleF9ncm91cHM7IGdycCsrKSB7CisJCQlvdmVyaGVhZCA9IGNhbGNfZ3JvdXBfb3ZlcmhlYWQoZnMsIGdycCwKKwkJCQkJCSAgICAgICBvbGRfZGVzY19ibG9ja3MpOworCisJCQkvKgorCQkJICogYWdhaW4sIHdlIG5lZWQgdG8gc2VlIGhvdyBtdWNoIGRhdGEgd2UgY3JhbSBpbnRvCisJCQkgKiBhbGwgb2YgdGhlIGdyb3VwcyBsZWFkaW5nIHVwIHRvIHRoZSBsYXN0IGdyb3VwCisJCQkgKi8KKwkJCWlmIChncnAgPCBncm91cHMgLSAxKQorCQkJCWxhc3Rfc3RhcnQgKz0gRVhUMl9CTE9DS1NfUEVSX0dST1VQKGZzLT5zdXBlcikKKwkJCQkJLSBvdmVyaGVhZDsKKworCQkJZGF0YV9ibG9ja3MgLT0gb3ZlcmhlYWQ7CisJCX0KKworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCQlpZiAoZmxhZ3MgJiBSRVNJWkVfREVCVUdfTUlOX0NBTEMpCisJCQlwcmludGYoIkFkZGVkICVkIGV4dHJhIGdyb3VwKHMpLCAiCisJCQkgICAgICAgImJsa3NfbmVlZGVkICVsbHUsIGRhdGFfYmxvY2tzICVsbHUsICIKKwkJCSAgICAgICAibGFzdF9zdGFydCAlbGx1XG4iLCBleHRyYV9ncnBzLCBibGtzX25lZWRlZCwKKwkJCSAgICAgICBkYXRhX2Jsb2NrcywgbGFzdF9zdGFydCk7CisjZW5kaWYKKwl9CisKKwkvKiBub3cgZm9yIHRoZSBmdW4gdm9vZG9vICovCisJZ3JwID0gZ3JvdXBzIC0gMTsKKwlpZiAoZXh0MmZzX2hhc19mZWF0dXJlX2ZsZXhfYmcoZnMtPnN1cGVyKSAmJgorCSAgICAoZ3JwICYgfihmbGV4Ymdfc2l6ZSAtIDEpKSA9PSAwKQorCQlncnAgPSBncnAgJiB+KGZsZXhiZ19zaXplIC0gMSk7CisJb3ZlcmhlYWQgPSAwOworCWZvciAoOyBncnAgPCBmbGV4X2dyb3VwczsgZ3JwKyspCisJCW92ZXJoZWFkICs9IGNhbGNfZ3JvdXBfb3ZlcmhlYWQoZnMsIGdycCwgb2xkX2Rlc2NfYmxvY2tzKTsKKworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCWlmIChmbGFncyAmIFJFU0laRV9ERUJVR19NSU5fQ0FMQykKKwkJcHJpbnRmKCJMYXN0IGdyb3VwJ3Mgb3ZlcmhlYWQgaXMgJWxsdVxuIiwgb3ZlcmhlYWQpOworI2VuZGlmCisKKwkvKgorCSAqIGlmIHRoaXMgaXMgdGhlIGNhc2UgdGhlbiB0aGUgbGFzdCBncm91cCBpcyBnb2luZyB0byBoYXZlIGRhdGEgaW4gaXQKKwkgKiBzbyB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBncm91cCBhY2NvcmRpbmdseQorCSAqLworCWlmIChsYXN0X3N0YXJ0IDwgYmxrc19uZWVkZWQpIHsKKwkJYmxrNjRfdCByZW1haW5kZXIgPSBibGtzX25lZWRlZCAtIGxhc3Rfc3RhcnQ7CisKKyNpZmRlZiBSRVNJWkUyRlNfREVCVUcKKwkJaWYgKGZsYWdzICYgUkVTSVpFX0RFQlVHX01JTl9DQUxDKQorCQkJcHJpbnRmKCJOZWVkICVsbHUgZGF0YSBibG9ja3MgaW4gbGFzdCBncm91cFxuIiwKKwkJCSAgICAgICByZW1haW5kZXIpOworI2VuZGlmCisJCS8qCisJCSAqIDUwIGlzIGEgbWFnaWMgbnVtYmVyIHRoYXQgbWtmcy9yZXNpemUgdXNlcyB0byBzZWUgaWYgaXRzCisJCSAqIGV2ZW4gd29ydGggbWFraW5nL3Jlc2l6aW5nIHRoZSBmcy4gIGJhc2ljYWxseSB5b3UgbmVlZCB0bworCQkgKiBoYXZlIGF0IGxlYXN0IDUwIGJsb2NrcyBpbiBhZGRpdGlvbiB0byB0aGUgYmxvY2tzIG5lZWRlZAorCQkgKiBmb3IgdGhlIG1ldGFkYXRhIGluIHRoZSBsYXN0IGdyb3VwCisJCSAqLworCQlpZiAocmVtYWluZGVyID4gNTApCisJCQlvdmVyaGVhZCArPSByZW1haW5kZXI7CisJCWVsc2UKKwkJCW92ZXJoZWFkICs9IDUwOworCX0gZWxzZQorCQlvdmVyaGVhZCArPSA1MDsKKworCW92ZXJoZWFkICs9IGZzLT5zdXBlci0+c19maXJzdF9kYXRhX2Jsb2NrOworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCWlmIChmbGFncyAmIFJFU0laRV9ERUJVR19NSU5fQ0FMQykKKwkJcHJpbnRmKCJGaW5hbCBzaXplIG9mIGxhc3QgZ3JvdXAgaXMgJWxsZFxuIiwgb3ZlcmhlYWQpOworI2VuZGlmCisKKwkvKiBBZGQgZXh0cmEgc2xhY2sgZm9yIGJpZ2FsbG9jIGZpbGUgc3lzdGVtcyAqLworCWlmIChFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgPiAxKQorCQlvdmVyaGVhZCArPSBFWFQyRlNfQ0xVU1RFUl9SQVRJTyhmcykgKiAyOworCisJLyoKKwkgKiBzaW5jZSBvdXIgbGFzdCBncm91cCBkb2Vzbid0IGhhdmUgdG8gYmUgQkxPQ0tTX1BFUl9HUk9VUAorCSAqIGxhcmdlLCB3ZSBvbmx5IGRvIGdyb3Vwcy0xLCBhbmQgdGhlbiBhZGQgdGhlIG51bWJlciBvZgorCSAqIGJsb2NrcyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBncm91cCBkZXNjcmlwdG9yIG1ldGFkYXRhK2RhdGEKKwkgKiB0aGF0IHdlIG5lZWQKKwkgKi8KKwlibGtzX25lZWRlZCA9IEVYVDJfR1JPVVBTX1RPX0JMT0NLUyhmcy0+c3VwZXIsIGdyb3VwcyAtIDEpOworCWJsa3NfbmVlZGVkICs9IG92ZXJoZWFkOworCisJLyoKKwkgKiBNYWtlIHN1cmUgYmxrc19uZWVkZWQgY292ZXJzIHRoZSBlbmQgb2YgdGhlIGlub2RlIHRhYmxlIGluCisJICogdGhlIGxhc3QgYmxvY2sgZ3JvdXAuCisJICovCisJb3ZlcmhlYWQgPSBleHQyZnNfaW5vZGVfdGFibGVfbG9jKGZzLCBncm91cHMtMSkgKworCQlmcy0+aW5vZGVfYmxvY2tzX3Blcl9ncm91cDsKKwlpZiAoYmxrc19uZWVkZWQgPCBvdmVyaGVhZCkKKwkJYmxrc19uZWVkZWQgPSBvdmVyaGVhZDsKKworI2lmZGVmIFJFU0laRTJGU19ERUJVRworCWlmIChmbGFncyAmIFJFU0laRV9ERUJVR19NSU5fQ0FMQykKKwkJcHJpbnRmKCJFc3RpbWF0ZWQgYmxvY2tzIG5lZWRlZDogJWxsdVxuIiwgYmxrc19uZWVkZWQpOworI2VuZGlmCisKKwkvKgorCSAqIElmIGF0IHRoaXMgcG9pbnQgd2UndmUgYWxyZWFkeSBhZGRlZCB1cCBtb3JlICJuZWVkZWQiIHRoYW4KKwkgKiB0aGUgY3VycmVudCBzaXplLCBqdXN0IHJldHVybiBjdXJyZW50IHNpemUgYXMgbWluaW11bS4KKwkgKi8KKwlpZiAoYmxrc19uZWVkZWQgPj0gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpKQorCQlyZXR1cm4gZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpOworCS8qCisJICogV2UgbmVlZCB0byByZXNlcnZlIGEgZmV3IGV4dHJhIGJsb2NrcyBpZiBleHRlbnRzIGFyZQorCSAqIGVuYWJsZWQsIGluIGNhc2Ugd2UgbmVlZCB0byBncm93IHRoZSBleHRlbnQgdHJlZS4gIFRoZSBtb3JlCisJICogd2Ugc2hyaW5rIHRoZSBmaWxlIHN5c3RlbSwgdGhlIG1vcmUgc3BhY2Ugd2UgbmVlZC4KKwkgKgorCSAqIFRoZSBhYnNvbHV0ZSB3b3JzdCBjYXNlIGlzIGV2ZXJ5IHNpbmdsZSBkYXRhIGJsb2NrIGlzIGluCisJICogdGhlIHBhcnQgb2YgdGhlIGZpbGUgc3lzdGVtIHRoYXQgbmVlZHMgdG8gYmUgZXZhY3VhdGVkLAorCSAqIHdpdGggZWFjaCBkYXRhIGJsb2NrIG5lZWRzIHRvIGJlIGluIGl0cyBvd24gZXh0ZW50LCBhbmQKKwkgKiB3aXRoIGVhY2ggaW5vZGUgbmVlZGluZyBhdCBsZWFzdCBvbmUgZXh0ZW50IGJsb2NrLgorCSAqLworCWlmIChleHQyZnNfaGFzX2ZlYXR1cmVfZXh0ZW50cyhmcy0+c3VwZXIpKSB7CisJCWJsazY0X3Qgc2FmZV9tYXJnaW4gPSAoZXh0MmZzX2Jsb2Nrc19jb3VudChmcy0+c3VwZXIpIC0KKwkJCQkgICAgICAgYmxrc19uZWVkZWQpLzUwMDsKKwkJdW5zaWduZWQgaW50IGV4dHNfcGVyX2JsayA9IChmcy0+YmxvY2tzaXplIC8KKwkJCQkJICAgICBzaXplb2Yoc3RydWN0IGV4dDNfZXh0ZW50KSkgLSAxOworCQlibGs2NF90IHdvcnN0X2Nhc2UgPSAoKGRhdGFfbmVlZGVkICsgZXh0c19wZXJfYmxrIC0gMSkgLworCQkJCSAgICAgIGV4dHNfcGVyX2Jsayk7CisKKwkJaWYgKHdvcnN0X2Nhc2UgPCBpbm9kZV9jb3VudCkKKwkJCXdvcnN0X2Nhc2UgPSBpbm9kZV9jb3VudDsKKworCQlpZiAoc2FmZV9tYXJnaW4gPiB3b3JzdF9jYXNlKQorCQkJc2FmZV9tYXJnaW4gPSB3b3JzdF9jYXNlOworCisjaWZkZWYgUkVTSVpFMkZTX0RFQlVHCisJCWlmIChmbGFncyAmIFJFU0laRV9ERUJVR19NSU5fQ0FMQykKKwkJCXByaW50ZigiRXh0ZW50cyBzYWZldHkgbWFyZ2luOiAlbGx1XG4iLCBzYWZlX21hcmdpbik7CisjZW5kaWYKKwkJYmxrc19uZWVkZWQgKz0gc2FmZV9tYXJnaW47CisJfQorCisJcmV0dXJuIGJsa3NfbmVlZGVkOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Jlc2l6ZS9yZXNpemUyZnMuaCBiL2UyZnNwcm9ncy9yZXNpemUvcmVzaXplMmZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5ZmNkOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9yZXNpemUvcmVzaXplMmZzLmgKQEAgLTAsMCArMSwxODkgQEAKKy8qCisgKiByZXNpemUyZnMuaCAtLS0gZXh0MiByZXNpemVyIGhlYWRlciBmaWxlCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4IGJ5IFRoZW9kb3JlIFRzJ28gYW5kCisgKiAJUG93ZXJRdWVzdCwgSW5jLgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBieSBUaGVvc29yZSBUcydvCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWYgSEFWRV9FUlJOT19ICisjaW5jbHVkZSA8ZXJybm8uaD4KKyNlbmRpZgorCisjaWYgRVhUMl9GTEFUX0lOQ0xVREVTCisjaW5jbHVkZSAiZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy5oIgorI2luY2x1ZGUgImUycC5oIgorI2Vsc2UKKyNpbmNsdWRlICJleHQyZnMvZXh0Ml9mcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKyNpbmNsdWRlICJlMnAvZTJwLmgiCisjZW5kaWYKKworI2lmZGVmIEVOQUJMRV9OTFMKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CisjaW5jbHVkZSA8bG9jYWxlLmg+CisjZGVmaW5lIF8oYSkgKGdldHRleHQgKGEpKQorI2lmZGVmIGdldHRleHRfbm9vcAorI2RlZmluZSBOXyhhKSBnZXR0ZXh0X25vb3AgKGEpCisjZWxzZQorI2RlZmluZSBOXyhhKSAoYSkKKyNlbmRpZgorI2lmbmRlZiBOTFNfQ0FUX05BTUUKKyNkZWZpbmUgTkxTX0NBVF9OQU1FICJlMmZzcHJvZ3MiCisjZW5kaWYKKyNpZm5kZWYgTE9DQUxFRElSCisjZGVmaW5lIExPQ0FMRURJUiAiL3Vzci9zaGFyZS9sb2NhbGUiCisjZW5kaWYKKyNlbHNlCisjZGVmaW5lIF8oYSkgKGEpCisjZGVmaW5lIE5fKGEpIGEKKyNlbmRpZgorCisKKy8qCisgKiBGb3IgdGhlIGV4dGVudCBtYXAKKyAqLwordHlwZWRlZiBzdHJ1Y3QgX2V4dDJfZXh0ZW50ICpleHQyX2V4dGVudDsKKworLyoKKyAqIEZvciB0aGUgc2ltcGxlIHByb2dyZXNzIG1ldGVyCisgKi8KK3R5cGVkZWYgc3RydWN0IGV4dDJfc2ltX3Byb2dyZXNzICpleHQyX3NpbV9wcm9nbWV0ZXI7CisKKy8qCisgKiBGbGFncyBmb3IgdGhlIHJlc2l6ZXI7IG1vc3QgYXJlIGRlYnVnZ2luZyBmbGFncyBvbmx5CisgKi8KKyNkZWZpbmUgUkVTSVpFX0RFQlVHX0lPCQkJMHgwMDAxCisjZGVmaW5lIFJFU0laRV9ERUJVR19CTU9WRQkJMHgwMDAyCisjZGVmaW5lIFJFU0laRV9ERUJVR19JTk9ERU1BUAkJMHgwMDA0CisjZGVmaW5lIFJFU0laRV9ERUJVR19JVEFCTEVNT1ZFCQkweDAwMDgKKyNkZWZpbmUgUkVTSVpFX0RFQlVHX1JUUkFDSwkJMHgwMDEwCisjZGVmaW5lIFJFU0laRV9ERUJVR19NSU5fQ0FMQwkJMHgwMDIwCisKKyNkZWZpbmUgUkVTSVpFX1BFUkNFTlRfQ09NUExFVEUJCTB4MDEwMAorI2RlZmluZSBSRVNJWkVfVkVSQk9TRQkJCTB4MDIwMAorCisjZGVmaW5lIFJFU0laRV9FTkFCTEVfNjRCSVQJCTB4MDQwMAorI2RlZmluZSBSRVNJWkVfRElTQUJMRV82NEJJVAkJMHgwODAwCisKKy8qCisgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIGZvciBrZWVwaW5nIHRyYWNrIG9mIGhvdyBtdWNoIHJlc291cmNlcyBoYXZlCisgKiBiZWVuIHVzZWQgZm9yIGEgcGFydGljdWxhciByZXNpemUyZnMgcGFzcy4KKyAqLworc3RydWN0IHJlc291cmNlX3RyYWNrIHsKKwljb25zdCBjaGFyICpkZXNjOworCXN0cnVjdCB0aW1ldmFsIHRpbWVfc3RhcnQ7CisJc3RydWN0IHRpbWV2YWwgdXNlcl9zdGFydDsKKwlzdHJ1Y3QgdGltZXZhbCBzeXN0ZW1fc3RhcnQ7CisJdm9pZAkqYnJrX3N0YXJ0OworCXVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc19yZWFkOworCXVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc193cml0dGVuOworfTsKKworLyoKKyAqIFRoZSBjb3JlIHN0YXRlIHN0cnVjdHVyZSBmb3IgdGhlIGV4dDIgcmVzaXplcgorICovCit0eXBlZGVmIHN0cnVjdCBleHQyX3Jlc2l6ZV9zdHJ1Y3QgKmV4dDJfcmVzaXplX3Q7CisKK3N0cnVjdCBleHQyX3Jlc2l6ZV9zdHJ1Y3QgeworCWV4dDJfZmlsc3lzCW9sZF9mczsKKwlleHQyX2ZpbHN5cwluZXdfZnM7CisJZXh0MmZzX2Jsb2NrX2JpdG1hcCByZXNlcnZlX2Jsb2NrczsKKwlleHQyZnNfYmxvY2tfYml0bWFwIG1vdmVfYmxvY2tzOworCWV4dDJfZXh0ZW50CWJtYXA7CisJZXh0Ml9leHRlbnQJaW1hcDsKKwlibGs2NF90CQluZWVkZWRfYmxvY2tzOworCWludAkJZmxhZ3M7CisJY2hhcgkJKml0YWJsZV9idWY7CisKKwkvKgorCSAqIEZvciB0aGUgYmxvY2sgYWxsb2NhdG9yCisJICovCisJYmxrNjRfdAkJbmV3X2JsazsKKwlpbnQJCWFsbG9jX3N0YXRlOworCisJLyoKKwkgKiBGb3IgdGhlIHByb2dyZXNzIG1ldGVyCisJICovCisJZXJyY29kZV90CSgqcHJvZ3Jlc3MpKGV4dDJfcmVzaXplX3QgcmZzLCBpbnQgcGFzcywKKwkJCQkgICAgdW5zaWduZWQgbG9uZyBjdXIsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgbWF4KTsKKwl2b2lkCQkqcHJvZ19kYXRhOworfTsKKworLyoKKyAqIFByb2dyZXNzIHBhc3MgbnVtYmVycy4uLgorICovCisjZGVmaW5lIEUyX1JTWl9FWFRFTkRfSVRBQkxFX1BBU1MJMQorI2RlZmluZSBFMl9SU1pfQkxPQ0tfUkVMT0NfUEFTUwkJMgorI2RlZmluZSBFMl9SU1pfSU5PREVfU0NBTl9QQVNTCQkzCisjZGVmaW5lIEUyX1JTWl9JTk9ERV9SRUZfVVBEX1BBU1MJNAorI2RlZmluZSBFMl9SU1pfTU9WRV9JVEFCTEVfUEFTUwkJNQorCisKKy8qIHByb3RvdHlwZXMgKi8KK2V4dGVybiBlcnJjb2RlX3QgcmVzaXplX2ZzKGV4dDJfZmlsc3lzIGZzLCBibGs2NF90ICpuZXdfc2l6ZSwgaW50IGZsYWdzLAorCQkJICAgZXJyY29kZV90CSgqcHJvZ3Jlc3MpKGV4dDJfcmVzaXplX3QgcmZzLAorCQkJCQkgICAgaW50IHBhc3MsIHVuc2lnbmVkIGxvbmcgY3VyLAorCQkJCQkgICAgdW5zaWduZWQgbG9uZyBtYXgpKTsKKworZXh0ZXJuIGVycmNvZGVfdCBhZGp1c3RfZnNfaW5mbyhleHQyX2ZpbHN5cyBmcywgZXh0Ml9maWxzeXMgb2xkX2ZzLAorCQkJCWV4dDJmc19ibG9ja19iaXRtYXAgcmVzZXJ2ZV9ibG9ja3MsCisJCQkJYmxrNjRfdCBuZXdfc2l6ZSk7CitleHRlcm4gYmxrNjRfdCBjYWxjdWxhdGVfbWluaW11bV9yZXNpemVfc2l6ZShleHQyX2ZpbHN5cyBmcywgaW50IGZsYWdzKTsKKworCisvKiBleHRlbnQuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfY3JlYXRlX2V4dGVudF90YWJsZShleHQyX2V4dGVudCAqcmV0X2V4dGVudCwKKwkJCQkJICAgIF9fdTY0IHNpemUpOworZXh0ZXJuIHZvaWQgZXh0MmZzX2ZyZWVfZXh0ZW50X3RhYmxlKGV4dDJfZXh0ZW50IGV4dGVudCk7CitleHRlcm4gZXJyY29kZV90IGV4dDJmc19hZGRfZXh0ZW50X2VudHJ5KGV4dDJfZXh0ZW50IGV4dGVudCwKKwkJCQkJIF9fdTY0IG9sZF9sb2MsIF9fdTY0IG5ld19sb2MpOworZXh0ZXJuIF9fdTY0IGV4dDJmc19leHRlbnRfdHJhbnNsYXRlKGV4dDJfZXh0ZW50IGV4dGVudCwgX191NjQgb2xkX2xvYyk7CitleHRlcm4gdm9pZCBleHQyZnNfZXh0ZW50X2R1bXAoZXh0Ml9leHRlbnQgZXh0ZW50LCBGSUxFICpvdXQpOworZXh0ZXJuIGVycmNvZGVfdCBleHQyZnNfaXRlcmF0ZV9leHRlbnQoZXh0Ml9leHRlbnQgZXh0ZW50LCBfX3U2NCAqb2xkX2xvYywKKwkJCQkgICAgICAgX191NjQgKm5ld19sb2MsIF9fdTY0ICpzaXplKTsKKworLyogbWFpbi5jICovCitleHRlcm4gY2hhciAqcHJvZ3JhbV9uYW1lOworCisvKiBvbmxpbmUuYyAqLworZXh0ZXJuIGVycmNvZGVfdCBvbmxpbmVfcmVzaXplX2ZzKGV4dDJfZmlsc3lzIGZzLCBjb25zdCBjaGFyICptdHB0LAorCQkJCSAgYmxrNjRfdCAqbmV3X3NpemUsIGludCBmbGFncyk7CisKKy8qIHJlc291cmNlX3RyYWNrLmMgKi8KK2V4dGVybiB2b2lkIGluaXRfcmVzb3VyY2VfdHJhY2soc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaywgY29uc3QgY2hhciAqZGVzYywKKwkJCQlpb19jaGFubmVsIGNoYW5uZWwpOworZXh0ZXJuIHZvaWQgcHJpbnRfcmVzb3VyY2VfdHJhY2soZXh0Ml9yZXNpemVfdCByZnMsCisJCQkJIHN0cnVjdCByZXNvdXJjZV90cmFjayAqdHJhY2ssCisJCQkJIGlvX2NoYW5uZWwgY2hhbm5lbCk7CisKKy8qIHNpbV9wcm9ncmVzcy5jICovCitleHRlcm4gZXJyY29kZV90IGV4dDJmc19wcm9ncmVzc19pbml0KGV4dDJfc2ltX3Byb2dtZXRlciAqcmV0X3Byb2csCisJCQkJICAgICAgY29uc3QgY2hhciAqbGFiZWwsCisJCQkJICAgICAgaW50IGxhYmVsd2lkdGgsIGludCBiYXJ3aWR0aCwKKwkJCQkgICAgICBfX3UzMiBtYXhkb25lLCBpbnQgZmxhZ3MpOworZXh0ZXJuIHZvaWQgZXh0MmZzX3Byb2dyZXNzX3VwZGF0ZShleHQyX3NpbV9wcm9nbWV0ZXIgcHJvZywKKwkJCQkJX191MzIgY3VycmVudCk7CitleHRlcm4gdm9pZCBleHQyZnNfcHJvZ3Jlc3NfY2xvc2UoZXh0Ml9zaW1fcHJvZ21ldGVyIHByb2cpOworCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9yZXNpemUvcmVzb3VyY2VfdHJhY2suYyBiL2UyZnNwcm9ncy9yZXNpemUvcmVzb3VyY2VfdHJhY2suYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGVmZTExCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS9yZXNvdXJjZV90cmFjay5jCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogcmVzb3VyY2VfdHJhY2suYyAtLS0gcmVzb3VyY2UgdHJhY2tpbmcKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgYnkgVGhlb2RvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicmVzaXplMmZzLmgiCisjaW5jbHVkZSA8dGltZS5oPgorI2lmZGVmIEhBVkVfTUFMTE9DX0gKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorCit2b2lkIGluaXRfcmVzb3VyY2VfdHJhY2soc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaywgY29uc3QgY2hhciAqZGVzYywKKwkJCSBpb19jaGFubmVsIGNoYW5uZWwpCit7CisjaWZkZWYgSEFWRV9HRVRSVVNBR0UKKwlzdHJ1Y3QgcnVzYWdlIHI7CisjZW5kaWYKKwlpb19zdGF0cyBpb19zdGFydCA9IDA7CisKKwl0cmFjay0+ZGVzYyA9IGRlc2M7CisJdHJhY2stPmJya19zdGFydCA9IHNicmsoMCk7CisJZ2V0dGltZW9mZGF5KCZ0cmFjay0+dGltZV9zdGFydCwgMCk7CisjaWZkZWYgSEFWRV9HRVRSVVNBR0UKKyNpZmRlZiBzdW4KKwltZW1zZXQoJnIsIDAsIHNpemVvZihzdHJ1Y3QgcnVzYWdlKSk7CisjZW5kaWYKKwlnZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZyKTsKKwl0cmFjay0+dXNlcl9zdGFydCA9IHIucnVfdXRpbWU7CisJdHJhY2stPnN5c3RlbV9zdGFydCA9IHIucnVfc3RpbWU7CisjZWxzZQorCXRyYWNrLT51c2VyX3N0YXJ0LnR2X3NlYyA9IHRyYWNrLT51c2VyX3N0YXJ0LnR2X3VzZWMgPSAwOworCXRyYWNrLT5zeXN0ZW1fc3RhcnQudHZfc2VjID0gdHJhY2stPnN5c3RlbV9zdGFydC50dl91c2VjID0gMDsKKyNlbmRpZgorCXRyYWNrLT5ieXRlc19yZWFkID0gMDsKKwl0cmFjay0+Ynl0ZXNfd3JpdHRlbiA9IDA7CisJaWYgKGNoYW5uZWwgJiYgY2hhbm5lbC0+bWFuYWdlciAmJiBjaGFubmVsLT5tYW5hZ2VyLT5nZXRfc3RhdHMpCisJCWNoYW5uZWwtPm1hbmFnZXItPmdldF9zdGF0cyhjaGFubmVsLCAmaW9fc3RhcnQpOworCWlmIChpb19zdGFydCkgeworCQl0cmFjay0+Ynl0ZXNfcmVhZCA9IGlvX3N0YXJ0LT5ieXRlc19yZWFkOworCQl0cmFjay0+Ynl0ZXNfd3JpdHRlbiA9IGlvX3N0YXJ0LT5ieXRlc193cml0dGVuOworCX0KK30KKworc3RhdGljIGZsb2F0IHRpbWV2YWxfc3VidHJhY3Qoc3RydWN0IHRpbWV2YWwgKnR2MSwKKwkJCSAgICAgIHN0cnVjdCB0aW1ldmFsICp0djIpCit7CisJcmV0dXJuICgodHYxLT50dl9zZWMgLSB0djItPnR2X3NlYykgKworCQkoKGZsb2F0KSAodHYxLT50dl91c2VjIC0gdHYyLT50dl91c2VjKSkgLyAxMDAwMDAwKTsKK30KKwordm9pZCBwcmludF9yZXNvdXJjZV90cmFjayhleHQyX3Jlc2l6ZV90IHJmcywgc3RydWN0IHJlc291cmNlX3RyYWNrICp0cmFjaywKKwkJCSAgaW9fY2hhbm5lbCBjaGFubmVsKQoreworI2lmZGVmIEhBVkVfR0VUUlVTQUdFCisJc3RydWN0IHJ1c2FnZSByOworI2VuZGlmCisjaWZkZWYgSEFWRV9NQUxMSU5GTworCXN0cnVjdCBtYWxsaW5mbwltYWxsb2NfaW5mbzsKKyNlbmRpZgorCXN0cnVjdCB0aW1ldmFsIHRpbWVfZW5kOworCisJaWYgKChyZnMtPmZsYWdzICYgUkVTSVpFX0RFQlVHX1JUUkFDSykgPT0gMCkKKwkJcmV0dXJuOworCisJZ2V0dGltZW9mZGF5KCZ0aW1lX2VuZCwgMCk7CisKKwlpZiAodHJhY2stPmRlc2MpCisJCXByaW50ZigiJXM6ICIsIHRyYWNrLT5kZXNjKTsKKworI2lmZGVmIEhBVkVfTUFMTElORk8KKyNkZWZpbmUga2J5dGVzKHgpCSgoKHVuc2lnbmVkIGxvbmcpKHgpICsgMTAyMykgLyAxMDI0KQorCisJbWFsbG9jX2luZm8gPSBtYWxsaW5mbygpOworCXByaW50ZigiTWVtb3J5IHVzZWQ6ICVsdWsvJWx1ayAoJWx1ay8lbHVrKSwgIiwKKwkJa2J5dGVzKG1hbGxvY19pbmZvLmFyZW5hKSwga2J5dGVzKG1hbGxvY19pbmZvLmhibGtoZCksCisJCWtieXRlcyhtYWxsb2NfaW5mby51b3JkYmxrcyksIGtieXRlcyhtYWxsb2NfaW5mby5mb3JkYmxrcykpOworI2Vsc2UKKwlwcmludGYoIk1lbW9yeSB1c2VkOiAlbHUsICIsCisJCSh1bnNpZ25lZCBsb25nKSAoKChjaGFyICopIHNicmsoMCkpIC0KKwkJCQkgKChjaGFyICopIHRyYWNrLT5icmtfc3RhcnQpKSk7CisjZW5kaWYKKyNpZmRlZiBIQVZFX0dFVFJVU0FHRQorCWdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnIpOworCisJcHJpbnRmKCJ0aW1lOiAlNS4yZi8lNS4yZi8lNS4yZlxuIiwKKwkJdGltZXZhbF9zdWJ0cmFjdCgmdGltZV9lbmQsICZ0cmFjay0+dGltZV9zdGFydCksCisJCXRpbWV2YWxfc3VidHJhY3QoJnIucnVfdXRpbWUsICZ0cmFjay0+dXNlcl9zdGFydCksCisJCXRpbWV2YWxfc3VidHJhY3QoJnIucnVfc3RpbWUsICZ0cmFjay0+c3lzdGVtX3N0YXJ0KSk7CisjZWxzZQorCXByaW50ZigiZWxhcHNlZCB0aW1lOiAlNi4zZlxuIiwKKwkJdGltZXZhbF9zdWJ0cmFjdCgmdGltZV9lbmQsICZ0cmFjay0+dGltZV9zdGFydCkpOworI2VuZGlmCisjZGVmaW5lIG1ieXRlcyh4KQkoKCh4KSArIDEwNDg1NzUpIC8gMTA0ODU3NikKKwlpZiAoY2hhbm5lbCAmJiBjaGFubmVsLT5tYW5hZ2VyICYmIGNoYW5uZWwtPm1hbmFnZXItPmdldF9zdGF0cykgeworCQlpb19zdGF0cyBkZWx0YSA9IDA7CisJCXVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc19yZWFkID0gMDsKKwkJdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzX3dyaXR0ZW4gPSAwOworCisJCWNoYW5uZWwtPm1hbmFnZXItPmdldF9zdGF0cyhjaGFubmVsLCAmZGVsdGEpOworCQlpZiAoZGVsdGEpIHsKKwkJCWJ5dGVzX3JlYWQgPSBkZWx0YS0+Ynl0ZXNfcmVhZCAtIHRyYWNrLT5ieXRlc19yZWFkOworCQkJYnl0ZXNfd3JpdHRlbiA9IGRlbHRhLT5ieXRlc193cml0dGVuIC0KKwkJCQl0cmFjay0+Ynl0ZXNfd3JpdHRlbjsKKwkJCWlmIChieXRlc19yZWFkID09IDAgJiYgYnl0ZXNfd3JpdHRlbiA9PSAwKQorCQkJCWdvdG8gc2tpcF9pbzsKKwkJCWlmICh0cmFjay0+ZGVzYykKKwkJCQlwcmludGYoIiVzOiAiLCB0cmFjay0+ZGVzYyk7CisJCQlwcmludGYoIkkvTyByZWFkOiAlbGx1TUIsIHdyaXRlOiAlbGx1TUIsICIKKwkJCSAgICAgICAicmF0ZTogJS4yZk1CL3NcbiIsCisJCQkgICAgICAgbWJ5dGVzKGJ5dGVzX3JlYWQpLAorCQkJICAgICAgIG1ieXRlcyhieXRlc193cml0dGVuKSwKKwkJCSAgICAgICAoZG91YmxlKW1ieXRlcyhieXRlc19yZWFkICsgYnl0ZXNfd3JpdHRlbikgLworCQkJICAgICAgIHRpbWV2YWxfc3VidHJhY3QoJnRpbWVfZW5kLCAmdHJhY2stPnRpbWVfc3RhcnQpKTsKKwkJfQorCX0KK3NraXBfaW86CisJZmZsdXNoKHN0ZG91dCk7Cit9CisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy9yZXNpemUvc2ltX3Byb2dyZXNzLmMgYi9lMmZzcHJvZ3MvcmVzaXplL3NpbV9wcm9ncmVzcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MjA2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcmVzaXplL3NpbV9wcm9ncmVzcy5jCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICogc2ltX3Byb2dyZXNzLmMgLS0tIHNpbXBsZSBwcm9ncmVzcyBtZXRlcgorICoKKyAqIENvcHlyaWdodCAoQykgMTk5NywgMTk5OCBieSBUaGVvZG9yZSBUcydvIGFuZAorICogCVBvd2VyUXVlc3QsIEluYy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgYnkgVGhlb3NvcmUgVHMnbworICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInJlc2l6ZTJmcy5oIgorCitzdHJ1Y3QgZXh0Ml9zaW1fcHJvZ3Jlc3MgeworCUZJTEUJKmY7CisJY2hhcgkqbGFiZWw7CisJaW50CWxhYmVsd2lkdGg7CisJaW50CWJhcndpZHRoOworCV9fdTMyCW1heGRvbmU7CisJX191MzIJY3VycmVudDsKKwlpbnQJc2hvd247CisJaW50CWZsYWdzOworfTsKKworc3RhdGljIGVycmNvZGVfdCBleHQyZnNfcHJvZ3Jlc3NfZGlzcGxheShleHQyX3NpbV9wcm9nbWV0ZXIgcHJvZykKK3sKKwlpbnQJaSwgd2lkdGg7CisKKwlmcHV0cyhwcm9nLT5sYWJlbCwgcHJvZy0+Zik7CisJd2lkdGggPSBwcm9nLT5sYWJlbHdpZHRoIC0gc3RybGVuKHByb2ctPmxhYmVsKTsKKwl3aGlsZSAod2lkdGgtLSA+IDApCisJCXB1dGMoJyAnLCBwcm9nLT5mKTsKKwlpZiAocHJvZy0+bGFiZWx3aWR0aCArIHByb2ctPmJhcndpZHRoID4gODApIHsKKwkJZnB1dHMoIlxuIiwgcHJvZy0+Zik7CisJCWZvciAod2lkdGggPSBwcm9nLT5sYWJlbHdpZHRoOyB3aWR0aCA+IDA7IHdpZHRoLS0pCisJCQlwdXRjKCcgJywgcHJvZy0+Zik7CisJfQorCWZvciAoaT0wOyBpIDwgcHJvZy0+YmFyd2lkdGg7IGkrKykKKwkJcHV0YygnLScsIHByb2ctPmYpOworCWZvciAoaT0wOyBpIDwgcHJvZy0+YmFyd2lkdGg7IGkrKykKKwkJcHV0YygnXGInLCBwcm9nLT5mKTsKKwlmZmx1c2gocHJvZy0+Zik7CisJcmV0dXJuIDA7Cit9CisKKwordm9pZCBleHQyZnNfcHJvZ3Jlc3NfdXBkYXRlKGV4dDJfc2ltX3Byb2dtZXRlciBwcm9nLCBfX3UzMiBjdXJyZW50KQoreworCWludAkJb2xkX2xldmVsLCBsZXZlbCwgbnVtLCBpOworCisJbGV2ZWwgPSBwcm9nLT5iYXJ3aWR0aCAqIGN1cnJlbnQgLyBwcm9nLT5tYXhkb25lOworCW9sZF9sZXZlbCA9IHByb2ctPmJhcndpZHRoICogcHJvZy0+Y3VycmVudCAvIHByb2ctPm1heGRvbmU7CisJcHJvZy0+Y3VycmVudCA9IGN1cnJlbnQ7CisKKwludW0gPSBsZXZlbCAtIG9sZF9sZXZlbDsKKwlpZiAobnVtID09IDApCisJCXJldHVybjsKKworCWlmIChudW0gPiAwKSB7CisJCWZvciAoaT0wOyBpIDwgbnVtOyBpKyspCisJCQlwdXRjKCdYJywgcHJvZy0+Zik7CisJfSBlbHNlIHsKKwkJbnVtID0gLW51bTsKKwkJZm9yIChpPTA7IGkgPCBudW07IGkrKykKKwkJCXB1dGMoJ1xiJywgcHJvZy0+Zik7CisJCWZvciAoaT0wOyBpIDwgbnVtOyBpKyspCisJCQlwdXRjKCctJywgcHJvZy0+Zik7CisJCWZvciAoaT0wOyBpIDwgbnVtOyBpKyspCisJCQlwdXRjKCdcYicsIHByb2ctPmYpOworCX0KKwlmZmx1c2gocHJvZy0+Zik7Cit9CisKK2VycmNvZGVfdCBleHQyZnNfcHJvZ3Jlc3NfaW5pdChleHQyX3NpbV9wcm9nbWV0ZXIgKnJldF9wcm9nLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKmxhYmVsLAorCQkJICAgICAgIGludCBsYWJlbHdpZHRoLCBpbnQgYmFyd2lkdGgsCisJCQkgICAgICAgX191MzIgbWF4ZG9uZSwgaW50IGZsYWdzKQoreworCWV4dDJfc2ltX3Byb2dtZXRlcglwcm9nOworCWVycmNvZGVfdAkJcmV0dmFsOworCisJcmV0dmFsID0gZXh0MmZzX2dldF9tZW0oc2l6ZW9mKHN0cnVjdCBleHQyX3NpbV9wcm9ncmVzcyksICZwcm9nKTsKKwlpZiAocmV0dmFsKQorCQlyZXR1cm4gcmV0dmFsOworCW1lbXNldChwcm9nLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfc2ltX3Byb2dyZXNzKSk7CisKKwlyZXR2YWwgPSBleHQyZnNfZ2V0X21lbShzdHJsZW4obGFiZWwpKzEsICZwcm9nLT5sYWJlbCk7CisJaWYgKHJldHZhbCkgeworCQlmcmVlKHByb2cpOworCQlyZXR1cm4gcmV0dmFsOworCX0KKwlzdHJjcHkocHJvZy0+bGFiZWwsIGxhYmVsKTsKKwlwcm9nLT5sYWJlbHdpZHRoID0gbGFiZWx3aWR0aDsKKwlwcm9nLT5iYXJ3aWR0aCA9IGJhcndpZHRoOworCXByb2ctPmZsYWdzID0gZmxhZ3M7CisJcHJvZy0+bWF4ZG9uZSA9IG1heGRvbmU7CisJcHJvZy0+Y3VycmVudCA9IDA7CisJcHJvZy0+c2hvd24gPSAwOworCXByb2ctPmYgPSBzdGRvdXQ7CisKKwkqcmV0X3Byb2cgPSBwcm9nOworCisJcmV0dXJuIGV4dDJmc19wcm9ncmVzc19kaXNwbGF5KHByb2cpOworfQorCit2b2lkIGV4dDJmc19wcm9ncmVzc19jbG9zZShleHQyX3NpbV9wcm9nbWV0ZXIgcHJvZykKK3sKKworCWlmIChwcm9nLT5sYWJlbCkKKwkJZXh0MmZzX2ZyZWVfbWVtKCZwcm9nLT5sYWJlbCk7CisJZXh0MmZzX2ZyZWVfbWVtKCZwcm9nKTsKKwlwcmludGYoIlxuIik7CisJcmV0dXJuOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Jlc2l6ZS90ZXN0LXJlc2l6ZSBiL2UyZnNwcm9ncy9yZXNpemUvdGVzdC1yZXNpemUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzc2NmY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy9yZXNpemUvdGVzdC1yZXNpemUKQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL3NoCisKK0ZTPS9iaWdzY3JhdGNoL3Rlc3RmcworRkVBVFVSRT0iLU8gNjRiaXQiCisKK1JFU0laRTJGUz0vdG1wL3Jlc2l6ZTJmcy5zdGF0aWMKK01LRTJGUz1ta2UyZnMKK0RVTVBFMkZTPWR1bXBlMmZzCitFMkZTQ0s9ZTJmc2NrCisKKy9iaW4vcm0gLWYgJEZTIDsgdG91Y2ggJEZTCit0cnVuY2F0ZSAtcyA4VCAkRlMKKyRNS0UyRlMgLUYgLXQgZXh0NCAkRkVBVFVSRSAkRlMKKyRFMkZTQ0sgLUZZICRGUworJERVTVBFMkZTICRGUyA+IC90bXAvZDEKKwordHJ1bmNhdGUgLXMgMjBUICRGUwordGltZSAkUkVTSVpFMkZTIC1kIDMxIC1wICRGUyA+IC90bXAvcjEKKyREVU1QRTJGUyAkRlMgPiAvdG1wL2QyCiskRTJGU0NLIC1meSAkRlMKKyREVU1QRTJGUyAkRlMgPiAvdG1wL2QzCisKK3RydW5jYXRlIC1zIDIxVCAkRlMKK3RpbWUgJFJFU0laRTJGUyAtZCAzMSAtcCAkRlMgPiAvdG1wL3IyCiskRFVNUEUyRlMgJEZTID4gL3RtcC9kNAorJEUyRlNDSyAtZnkgJEZTCiskRFVNUEUyRlMgJEZTID4gL3RtcC9kNQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Jlc2l6ZS90ZXN0X2V4dGVudC5jIGIvZTJmc3Byb2dzL3Jlc2l6ZS90ZXN0X2V4dGVudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYWEwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvcmVzaXplL3Rlc3RfZXh0ZW50LmMKQEAgLTAsMCArMSwxMjYgQEAKKy8qCisgKiB0ZXN0X2V4dGVudC5jIC0tLSB0ZXN0ZXIgZm9yIHRoZSBleHRlbnQgYWJzdHJhY3Rpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTggYnkgVGhlb2RvcmUgVHMnbyBhbmQKKyAqIAlQb3dlclF1ZXN0LCBJbmMuCisgKgorICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIGJ5IFRoZW9zb3JlIFRzJ28KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJyZXNpemUyZnMuaCIKKwordm9pZCBkb190ZXN0KEZJTEUgKmluLCBGSUxFICpvdXQpOworCit2b2lkIGRvX3Rlc3QoRklMRSAqaW4sIEZJTEUgKm91dCkKK3sKKwljaGFyCQlidWZbMTI4XTsKKwljaGFyCQkqY3AsICpjbWQsICphcmcxLCAqYXJnMjsKKwlfX3U2NAkJbnVtMSwgbnVtMjsKKwlfX3U2NAkJc2l6ZTsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfZXh0ZW50CWV4dGVudCA9IDA7CisJY29uc3QgY2hhcgkqbm9fdGFibGUgPSAiIyBObyBleHRlbnQgdGFibGVcbiI7CisKKwl3aGlsZSAoIWZlb2YoaW4pKSB7CisJCWlmICghZmdldHMoYnVmLCBzaXplb2YoYnVmKSwgaW4pKQorCQkJYnJlYWs7CisJCS8qCisJCSAqIElnbm9yZSBjb21tZW50cworCQkgKi8KKwkJaWYgKGJ1ZlswXSA9PScjJykKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEVjaG8gY29tbWFuZAorCQkgKi8KKwkJZnB1dHMoYnVmLCBvdXQpOworCisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xuJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9ICdcMCc7CisKKwkJLyoKKwkJICogUGFyc2UgY29tbWFuZCBsaW5lOyBzaW1wbGUsIGF0IG1vc3QgdHdvIGFyZ3VtZW50cworCQkgKi8KKwkJY21kID0gYnVmOworCQludW0xID0gbnVtMiA9IDA7CisJCWFyZzEgPSBhcmcyID0gMDsKKwkJY3AgPSBzdHJjaHIoYnVmLCAnICcpOworCQlpZiAoY3ApIHsKKwkJCSpjcCsrID0gJ1wwJzsKKwkJCWFyZzEgPSBjcDsKKwkJCW51bTEgPSBzdHJ0b3VsKGFyZzEsIDAsIDApOworCisJCQljcCA9IHN0cmNocihjcCwgJyAnKTsKKwkJfQorCQlpZiAoY3ApIHsKKwkJCSpjcCsrID0gJ1wwJzsKKwkJCWFyZzIgPSBjcDsKKwkJCW51bTIgPSBzdHJ0b3VsKGFyZzIsIDAsIDApOworCQl9CisKKwkJaWYgKCFzdHJjbXAoY21kLCAiY3JlYXRlIikpIHsKKwkJCXJldHZhbCA9IGV4dDJmc19jcmVhdGVfZXh0ZW50X3RhYmxlKCZleHRlbnQsIG51bTEpOworCQkJaWYgKHJldHZhbCkgeworCQkJaGFuZGxlX2Vycm9yOgorCQkJCWZwcmludGYob3V0LCAiIyBFcnJvcjogJXNcbiIsCisJCQkJCWVycm9yX21lc3NhZ2UocmV0dmFsKSk7CisJCQkJY29udGludWU7CisJCQl9CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoIWV4dGVudCkgeworCQkJZnB1dHMobm9fdGFibGUsIG91dCk7CisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoIXN0cmNtcChjbWQsICJmcmVlIikpIHsKKwkJCWV4dDJmc19mcmVlX2V4dGVudF90YWJsZShleHRlbnQpOworCQkJZXh0ZW50ID0gMDsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImFkZCIpKSB7CisJCQlyZXR2YWwgPSBleHQyZnNfYWRkX2V4dGVudF9lbnRyeShleHRlbnQsIG51bTEsIG51bTIpOworCQkJaWYgKHJldHZhbCkKKwkJCQlnb3RvIGhhbmRsZV9lcnJvcjsKKwkJfSBlbHNlIGlmICghc3RyY21wKGNtZCwgImxvb2t1cCIpKSB7CisJCQludW0yID0gZXh0MmZzX2V4dGVudF90cmFuc2xhdGUoZXh0ZW50LCBudW0xKTsKKwkJCWZwcmludGYob3V0LCAiIyBBbnN3ZXI6ICVsbHUlc1xuIiwgbnVtMiwKKwkJCQludW0yID8gIiIgOiAiIChub3QgZm91bmQpIik7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJkdW1wIikpIHsKKwkJCWV4dDJmc19leHRlbnRfZHVtcChleHRlbnQsIG91dCk7CisJCX0gZWxzZSBpZiAoIXN0cmNtcChjbWQsICJpdGVyX3Rlc3QiKSkgeworCQkJcmV0dmFsID0gZXh0MmZzX2l0ZXJhdGVfZXh0ZW50KGV4dGVudCwgMCwgMCwgMCk7CisJCQlpZiAocmV0dmFsKQorCQkJCWdvdG8gaGFuZGxlX2Vycm9yOworCQkJd2hpbGUgKDEpIHsKKwkJCQlyZXR2YWwgPSBleHQyZnNfaXRlcmF0ZV9leHRlbnQoZXh0ZW50LAorCQkJCQkgICAgICAgJm51bTEsICZudW0yLCAmc2l6ZSk7CisJCQkJaWYgKHJldHZhbCkKKwkJCQkJZ290byBoYW5kbGVfZXJyb3I7CisJCQkJaWYgKCFzaXplKQorCQkJCQlicmVhazsKKwkJCQlmcHJpbnRmKG91dCwgIiMgJWxsdSAtPiAlbGx1ICglbGx1KVxuIiwKKwkJCQkJbnVtMSwgbnVtMiwgc2l6ZSk7CisJCQl9CisJCX0gZWxzZQorCQkJZnB1dHMoIiMgU3ludGF4IGVycm9yXG4iLCBvdXQpOworCX0KKwlpZiAoZXh0ZW50KQorCQlleHQyZnNfZnJlZV9leHRlbnRfdGFibGUoZXh0ZW50KTsKK30KKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIEFUVFIoeCkgX19hdHRyaWJ1dGVfXyh4KQorI2Vsc2UKKyNkZWZpbmUgQVRUUih4KQorI2VuZGlmCisKK2ludCBtYWluKGludCBhcmdjIEFUVFIoKHVudXNlZCkpLCBjaGFyICoqYXJndiBBVFRSKCh1bnVzZWQpKSkKK3sKKwlkb190ZXN0KHN0ZGluLCBzdGRvdXQpOworCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvcmVzaXplL3Rlc3RfZXh0ZW50LmluIGIvZTJmc3Byb2dzL3Jlc2l6ZS90ZXN0X2V4dGVudC5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWRjYzQxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Jlc2l6ZS90ZXN0X2V4dGVudC5pbgpAQCAtMCwwICsxLDY0IEBACitjcmVhdGUgMTAKK2FkZCAxMCAyMAorYWRkIDExIDIxCithZGQgMTIgMjIKK2FkZCAxNCA0NQorYWRkIDE2IDUwCithZGQgMTcgNTEKK2R1bXAKKyMgRXh0ZW50IGR1bXA6CisjCU51bT0zLCBTaXplPTEwLCBDdXJzb3I9MCwgU29ydGVkPTEKKyMJCSAxMCAtPiAyMCAoMykKKyMJCSAxNCAtPiA0NSAoMSkKKyMJCSAxNiAtPiA1MCAoMikKK2FkZCAxOCA1MgorZHVtcAorIyBFeHRlbnQgZHVtcDoKKyMJTnVtPTMsIFNpemU9MTAsIEN1cnNvcj0wLCBTb3J0ZWQ9MQorIwkJIDEwIC0+IDIwICgzKQorIwkJIDE0IC0+IDQ1ICgxKQorIwkJIDE2IC0+IDUwICgzKQorbG9va3VwIDEwCisjIEFuc3dlcjogMjAKK2xvb2t1cCAxMQorIyBBbnN3ZXI6IDIxCitsb29rdXAgMTIKKyMgQW5zd2VyOiAyMgorbG9va3VwIDEzCisjIEFuc3dlcjogMCAobm90IGZvdW5kKQorbG9va3VwIDE0CisjIEFuc3dlcjogNDUKK2xvb2t1cCAxNQorIyBBbnN3ZXI6IDAgKG5vdCBmb3VuZCkKK2xvb2t1cCAxNgorIyBBbnN3ZXI6IDUwCitsb29rdXAgMQorIyBBbnN3ZXI6IDAgKG5vdCBmb3VuZCkKK2xvb2t1cCA1MAorIyBBbnN3ZXI6IDAgKG5vdCBmb3VuZCkKK2FkZCAxOSAxMDAKK2FkZCAxMyA1Citsb29rdXAgMTgKKyMgQW5zd2VyOiA1MgorbG9va3VwIDE5CisjIEFuc3dlcjogMTAwCitsb29rdXAgMjAKKyMgQW5zd2VyOiAwIChub3QgZm91bmQpCitsb29rdXAgMTIKKyMgQW5zd2VyOiAyMgorbG9va3VwIDEzCisjIEFuc3dlcjogNQorZHVtcAorIyBFeHRlbnQgZHVtcDoKKyMJTnVtPTUsIFNpemU9MTAsIEN1cnNvcj0wLCBTb3J0ZWQ9MQorIwkJIDEwIC0+IDIwICgzKQorIwkJIDEzIC0+IDUgKDEpCisjCQkgMTQgLT4gNDUgKDEpCisjCQkgMTYgLT4gNTAgKDMpCisjCQkgMTkgLT4gMTAwICgxKQoraXRlcl90ZXN0CisjIDEwIC0+IDIwICgzKQorIyAxMyAtPiA1ICgxKQorIyAxNCAtPiA0NSAoMSkKKyMgMTYgLT4gNTAgKDMpCisjIDE5IC0+IDEwMCAoMSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy90ZXN0cy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwZjRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsOTQgQEAKKyMKKyMgTWFrZWZpbGUgZm9yIHRoZSB0ZXN0cyBkaXJlY3RvcnkKKyMKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKK3RvcF9idWlsZGRpciA9IC4uCitteV9kaXIgPSB0ZXN0cworSU5TVEFMTCA9IEBJTlNUQUxMQAorCitATUNPTkZJR0AKKworYWxsOjogQERPX1RFU1RfU1VJVEVAIHRlc3Rfb25lIHRlc3Rfc2NyaXB0CisKK3Rlc3Rfb25lOiAkKHNyY2RpcikvdGVzdF9vbmUuaW4gTWFrZWZpbGUgbWtlMmZzLmNvbmYKKwlAZWNobyAiQ3JlYXRpbmcgdGVzdF9vbmUgc2NyaXB0Li4uIgorCUBlY2hvICIjIS9iaW4vc2giID4gdGVzdF9vbmUKKwlAZWNobyAiSFRSRUU9eSIgPj4gdGVzdF9vbmUKKwlAZWNobyAiUVVPVEE9eSIgPj4gdGVzdF9vbmUKKwlAZWNobyAiU1JDRElSPUBzcmNkaXJAIiA+PiB0ZXN0X29uZQorCUBlY2hvICJESUZGX09QVFM9QFVOSV9ESUZGX09QVFNAIiA+PiB0ZXN0X29uZQorCUBlY2hvICJTSVpFT0ZfVElNRV9UPUBTSVpFT0ZfVElNRV9UQCIgPj4gdGVzdF9vbmUKKwlAY2F0ICQoc3JjZGlyKS90ZXN0X29uZS5pbiA+PiB0ZXN0X29uZQorCUBjaG1vZCAreCB0ZXN0X29uZQorCit0ZXN0X3NjcmlwdDogdGVzdF9vbmUgdGVzdF9zY3JpcHQuaW4gTWFrZWZpbGUgbWtlMmZzLmNvbmYKKwlAZWNobyAiQ3JlYXRpbmcgdGVzdF9zY3JpcHQuLi4iCisJQGVjaG8gIiMhL2Jpbi9zaCIgPiB0ZXN0X3NjcmlwdAorCUBlY2hvICJTUkNESVI9QHNyY2RpckAiID4+IHRlc3Rfc2NyaXB0CisJQGNhdCAkKHNyY2RpcikvdGVzdF9zY3JpcHQuaW4gPj4gdGVzdF9zY3JpcHQKKwlAY2htb2QgK3ggdGVzdF9zY3JpcHQKKworbWtlMmZzLmNvbmY6ICQoc3JjZGlyKS9ta2UyZnMuY29uZi5pbgorCSQoQ1ApICQoc3JjZGlyKS9ta2UyZnMuY29uZi5pbiBta2UyZnMuY29uZgorCisuUEhPTlkgOiB0ZXN0X3ByZSB0ZXN0X3Bvc3QgY2hlY2sgYWx3YXlzX3J1bgorCithbHdheXNfcnVuOgorCitAaWZHTlVtYWtlQFRFU1RTPSQod2lsZGNhcmQgJChzcmNkaXIpL1thLXpdXyopCitAaWZOb3RHTlVtYWtlQFRFU1RTICE9IGVjaG8gJChzcmNkaXIpL1thLXpdXyoKKworJChURVNUUyk6OiB0ZXN0X29uZSBhbHdheXNfcnVuCisJQC4vdGVzdF9vbmUgJEAKKworZm9vOgorCWVjaG8gJChURVNUUykKKwordGVzdF9wcmU6CisJQCQoUk0pIC1mICouZmFpbGVkCisJQGVjaG8gIlJ1bm5pbmcgZTJmc3Byb2dzIHRlc3Qgc3VpdGUuLi4iCisJQGVjaG8gIiAiCisKK3Rlc3RfcG9zdDogdGVzdF9wcmUgJChURVNUUykKKwlAJChzcmNkaXIpL3Rlc3RfcG9zdAorCitjaGVjazo6IHRlc3RfcHJlIHRlc3RfcG9zdCB0ZXN0X3NjcmlwdAorCitjaGVjay1mYWlsZWQ6ICQoYmFzZW5hbWUgJCh3aWxkY2FyZCAqLmZhaWxlZCkpCisJQCQoc3JjZGlyKS90ZXN0X3Bvc3QKKworCitURElSPWZfdGVzdG5ldworIyBUYXJnZXQgd2hpY2ggY3JlYXRlcyBhIG5ldyB0ZXN0Y2FzZSB0byBzaW1wbGlmeSBhZGRpbmcgbmV3IHJlZ3Jlc3Npb24gdGVzdHMuCit0ZXN0bmV3OgorCUBlY2hvICJDcmVhdGluZyBhIG5ldyBlMmZzY2sgdGVzdGNhc2UgaW4gJHtURElSfSIKKwlAbWtkaXIgLXAgJHtURElSfQorCWRkIGlmPS9kZXYvemVybyBvZj0ke1RESVJ9L2ltYWdlIGJzPTFrIGNvdW50PThrCisJJCh0b3Bfc3JjZGlyKS9taXNjL21rZTJmcyAtaiAtRiAtTiAyNTYgJHtURElSfS9pbWFnZQorCUBlY2hvICJuZXcgdGVzdCBkZXNjcmlwdGlvbiIgPiAke1RESVJ9L25hbWUKKwlAZWNobzsgZWNobzsgZWNobyAiTmV3IHRlc3QgZmlsZXN5c3RlbSBhdCAke1RESVJ9L2ltYWdlLiIKKwlAZWNobyAiTm93LCBicmVhayB0aGUgZmlsZXN5c3RlbSBhcyBhcHByb3ByaWF0ZSwgYW5kIHJ1biAnbWFrZSB0ZXN0ZW5kJyIKKworRVhQRUNUMT0ke1RESVJ9L2V4cGVjdC4xCitFWFBFQ1QyPSR7VERJUn0vZXhwZWN0LjIKKyMgVGFyZ2V0IHdoaWNoIGdlbmVyYXRlcyB0aGUgZXhwZWN0IGZpbGVzIGZvciB0aGUgbmV3IHRlc3RjYXNlLgordGVzdGVuZDogdGVzdF9vbmUgJHtURElSfS9pbWFnZQorCWd6aXAgLTkgJHtURElSfS9pbWFnZQorCUBPVVQxPSR7RVhQRUNUMX0gT1VUMj0ke0VYUEVDVDJ9IC4vdGVzdF9vbmUgJHtURElSfQorCUBlY2hvOyBlY2hvOyBlY2hvICIqKiogb3V0cHV0IGZyb20gZmlyc3QgZTJmc2NrIHJ1biAoJHtFWFBFQ1QxfSkgKioqIgorCUBjYXQgJHtFWFBFQ1QxfQorCUBlY2hvICIqKiogb3V0cHV0IGZyb20gc2Vjb25kIGUyZnNjayBydW4gKCR7RVhQRUNUMn0pICoqKiIKKwlAY2F0ICR7RVhQRUNUMn0KKwlAZWNobyAiKioqIGVuZCBvZiBlMmZzY2sgb3V0cHV0ICoqKiIKKwlAZWNobzsgZWNobyAiSG9wZWZ1bGx5IGUyZnNjayBub3cgZml4ZXMgdGhpcyBwcm9ibGVtIHByb3Blcmx5LiIKKwlAZWNobyAiSWYgYWxsIGlzIHdlbGwsIGVkaXQgJHtURElSfS9uYW1lIGFuZCByZW5hbWUgJHtURElSfS4iCisKK2NsZWFuOjoKKwkkKFJNKSAtZiAqfiAqLmxvZyAqLm5ldyAqLmZhaWxlZCAqLm9rICoudG1wIHRlc3Rfb25lIHRlc3Rfc2NyaXB0IG1rZTJmcy5jb25mCisKK2Rpc3RjbGVhbjo6IGNsZWFuCisJJChSTSkgLWYgTWFrZWZpbGUKKwkkKFJNKSAtcmYgJHtURElSfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL1JFQURNRSBiL2UyZnNwcm9ncy90ZXN0cy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3NWRiNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9SRUFETUUKQEAgLTAsMCArMSw2OCBAQAorVGhlc2UgaW1hZ2VzIGNvbnRhaW4gdmFyaW91cyBmb3JtcyBvZiBjb3JydXB0ZWQgZmlsZXN5c3RlbSB3aGljaAorZTJmc2NrIHdpbGwgY29ycmVjdC4gIFRoZXkgYXJlIHVzZWQgYXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGUyZnNjay4KKworVGhlIHRlc3Rfc2NyaXB0IHByb2dyYW0gd2lsbCBhdXRvbWF0aWNhbGx5IHJ1biBlMmZzY2sgYWdhaW5zdCB0aGUKK2ZpbGVzeXN0ZW0gaW1hZ2VzLiAgSXQgd2lsbCBydW4gdGhlbSB0d28gdGltZXMsIGFuZCBkaXNwbGF5IHRoZSBleGl0CitzdGF0dXMgZm9yIGVhY2ggcnVuLiAgVGhlIG1lYW5pbmcgb2YgdGhlIGV4aXQgc3RhdHVzIGNvZGVzIGFyZSBhcworZm9sbG93czoKKworCTAJCU5vIGZpbGVzeXN0ZW0gZXJyb3JzIHdlcmUgZGV0ZWN0ZWQKKwkxCQlGaWxlc3lzdGVtIGVycm9ycyBkZXRlY3RlZCwgYnV0IGNvcnJlY3RlZAorCTIJCVN5c3RlbSBzaG91bGQgYmUgcmVib290ZWQKKwk0CQlGaWxlc3lzdGVtIGVycm9ycyBsZWZ0IHVuY29ycmVjdGVkCisJOAkJT3BlcmF0aW9uYWwgZXJyb3IgKGdlbmVyYWxseSBtZWFucyBpbnRlcm5hbCBlcnJvciwKKwkJCQlvciBmaWxlc3lzdGVtIGVycm9yIHRoYXQgdGhlIGUyZnNjayB3YXMgbm90CisJCQkJcHJlcGFyZWQgdG8gZGVhbCB3aXRoKQorCTE2CQlVc2FnZSBvciBzeW50YXggZXJyb3IKKworRHVyaW5nIHRoZSByZWdyZXNzaW9uIHRlc3QsIHRoZSBmaXJzdCBleGl0IGNvZGUgc2hvdWxkIGJlIDEsIGFuZCB0aGUKK3NlY29uZCBleGl0IGNvZGUgc2hvdWxkIGJlIDAuICBJbiBvdGhlciB3b3JkcywgYWxsICh3aXRoIG9uZQorZXhjZXB0aW9uKSBvZiB0aGUgdGVzdCBmaWxlc3lzdGVtcyBpbiB0aGlzIGRpcmVjdG9yeSBoYXZlIHNvbWUgc29ydCBvZgorZmlsZXN5c3RlbSBjb3JydXB0aW9uLCB3aGljaCBlMmZzY2sgc2hvdWxkIGZpeCBvbiB0aGUgZmlyc3QgcGFzcy4KK0FmdGVyIHRoZSBmaXJzdCBwYXNzLCBlMmZzY2sgc2hvdWxkIGxlYXZlIGEgZnVsbHkgY29uc2lzdGVudAorZmlsZXN5c3RlbSB3aXRoIG5vIGRldGVjdGFibGUgZXJyb3JzIGZvdW5kIGluIHRoZSBzZWNvbmQgcGFzcy4gIFRoZQorZXhjZXB0aW9uIGlzIHRoZSBva2dyb3VwLmltZyBmaWxlc3lzdGVtLCB3aGljaCBjb250YWlucyBubyBlcnJvcnMsIGFuZAorc28gYm90aCBleGl0IGNvZGVzIHNob3VsZCBiZSAwLgorCitOT1RFOiBJdCBhcHBlYXJzIHRoYXQgYXQgbGVhc3Qgc29tZSB2ZXJzaW9ucyBvZiB0aGUgb3JpZ2luYWwgZTJmc2NrIGRvCitub3QgZXhpdCB3aXRoIGFuIGV4aXQgc3RhdHVzIGNvZGUgb2YgMSBhZnRlciBjb3JyZWN0aW5nIGZpbGVzeXN0ZW0KK2Vycm9ycy4gIFNvIGlmIHlvdSBtb2RpZnkgdGhlIHRlc3Rfc2NyaXB0IHRvIHRyeSBydW5uaW5nIHRoZXNlCitmaWxlc3lzdGVtcyBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBlMmZzY2ssIHlvdSB3aWxsIGhhdmUgdG8gaW5zcGVjdCB0aGUKK3Rlc3Rfc2NyaXB0LmxvZyBmaWxlIG1hbnVhbGx5LgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSGVyZSdzIGEgb25lLWxpbmUgZGVzY3JpcHRvbnMgb2YgdGhlIHZhcmlvdXMgdGVzdCBpbWFnZXMgaW4gdGhpcworZGlyZWN0b3J5OgorCitiYWRkaXIuaW1nCQlGaWxlc3lzdGVtIHdpdGggYSBjb3JydXB0ZWQgZGlyZWN0b3J5CitiYWRiYmxvY2tzLmltZwkJRmlsZXN5c3RlbSB3aXRoIGlsbGVnYWwgYmxvY2tzIGluIHRoZSBiYWQgYmxvY2sgaW5vZGUuCitiYWRpbm9kZS5pbWcJCUZpbGVzeXN0ZW0gd2l0aCB2YXJpb3VzIGRpZmZlcmVudCBjb3JydXB0ZWQgaW5vZGUKKwkJCQllbnRyaWVzLgorYmFkbGtjbnQuaW1nCQlGaWxlc3lzdGVtIHdpdGggZGVsZXRlZCBmaWxlcyB3aXRoIG5vbi16ZXJvIGxpbmsgY291bnQKK2JhZHJvb3QuaW1nCQlGaWxlc3lzdGVtIHdpdGggYSBmaWxlIGZvciBhIHJvb3QgZGlyZWN0b3J5CitiYWR0YWJsZS5pbWcJCUZpbGVzeXN0ZW0gd2l0aCBibG9ja3Mgc2hhcmVkIGJldHdlZW4gdGhlIGJpdG1hcHMgYW5kCisJCQkJaW5vZGUgdGFibGUgYmxvY2tzIGFuZCB0aGUgYmFkIGJsb2NrIGlub2RlCitiYmZpbGUuaW1nCQlGaWxlc3lzdGVtIHdpdGggZmlsZXMgY29udGFpbmluZyBiYWQgYmxvY2tzCitiaXRtYXBzLmltZwkJRmlsZXN5c3RlbSB3aXRoIGNvcnJ1cHRlZCBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcworZGlybGluay5pbWcJCUZpbGVzeXN0ZW0gd2l0aCBhIGhhcmQgbGluayB0byBhIGRpcmVjdG9yeQorZHVwLmltZwkJCUZpbGVzeXN0ZW0gd2l0aCBibG9ja3MgY2xhaW1lZCBieSB0d28gZGlmZmVyZW50IGZpbGVzCitkdXAyLmltZwkJRmlsZXN5c3RlbSB3aXRoIGJsb2NrcyBjbGFpbWVkIGJ5IHRocmVlIGRpZmZlcmVudCBmaWxlcworZHVwZnNibGtzLmltZwkJRmlsZXN5c3RlbSB3aXRoIGJsb2NrcyBjbGFpbWVkIGJ5IGEgZmlsZSBhbmQKKwkJCQlpbm9kZS9ibG9jayBiaXRtYXBzIGFuZCBpbm9kZSB0YWJsZXMKK2R1cHN1cGVyLmltZwkJRmlsZXN5c3RlbSB3aXRoIGJsb2NrcyBjbGFpbWVkIGJ5IGEgZmlsZSBhbmQKKwkJCQl0aGUgc3VwZXJibG9jayAvIGdyb3VwIGRlc2NyaXB0b3JzCitlbmQtYml0bWFwLmltZwkJRmlsZXN5c3RlbSB3aXRoIGNvcnJ1cHRpb24gYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2sgCisJCQkJYml0bWFwCitleHBhbmQuaW1nCQlUZXN0cyBlMmZzY2sncyBhYmlsaXR5IHRvIGV4cGFuZCBsb3N0K2ZvdW5kIGlmIAorCQkJCW5lY2Vzc2FyeQorbHBmLmltZwkJCUZpbGVzeXN0ZW0gd2l0aCBkaXNjb25uZWN0ZWQgZmlsZXMgYW5kIG5vIC9sb3N0K2ZvdW5kIAorCQkJCWRpcmVjdG9yeQorbWtlMmZzMmIuaW1nCQlGaWxlc3lzdGVtIHdpdGggY29ycnVwdGlvbiBzaW1pbGFyIHRvIHRoYXQKKwkJCQljcmVhdGVkIGJ5IG1rZTJmcyB2ZXJzaW9uIDAuMmIKK25vcm9vdC5pbWcJCUZpbGVzeXN0ZW0gd2l0aCBhIGRlbGV0ZWQgcm9vdCBkaXJlY3RvcnkKK29rZ3JvdXAuaW1nCQlGaWxlc3lzdGVtIHRoYXQncyBleGFjdGx5IDgxOTMgYmxvY2tzIGxvbmcgCisJCQkJKG90aGVyd2lzZSBPSykKK292ZXJmc2Jsa3MuaW1nCQlGaWxlc3lzdGVtIHdpdGggb3ZlcmxhcHBpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMKK3N5bWxpbmtzLmltZwkJRmlsZXN5c3RlbSB3aXRoIGJhZCBzeW1saW5rIHNpemVzCisKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfZHVtcGUyZnNfZ3JvdXBfb25seS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZF9kdW1wZTJmc19ncm91cF9vbmx5L2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjYxMGU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfZHVtcGUyZnNfZ3JvdXBfb25seS9leHBlY3QKQEAgLTAsMCArMSw1MSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDEwNDg1NzYgNGsgYmxvY2tzIGFuZCAyNjIxNDQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJMzI3NjgsIDk4MzA0LCAxNjM4NDAsIDIyOTM3NiwgMjk0OTEyLCA4MTkyMDAsIDg4NDczNgorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzI2MjE0NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM0ODk0LzEwNDg1NzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkdW1wZTJmcyBvdXRwdXQKKworZ3JvdXA6YmxvY2s6c3VwZXI6Z2R0OmJiaXRtYXA6aWJpdG1hcDppdGFibGUKKzA6MDowOjEtMToyNTc6MjczOjI4OQorMTozMjc2ODozMjc2ODozMjc2OS0zMjc2OToyNTg6Mjc0OjgwMQorMjo2NTUzNjotMTotMToyNTk6Mjc1OjEzMTMKKzM6OTgzMDQ6OTgzMDQ6OTgzMDUtOTgzMDU6MjYwOjI3NjoxODI1Cis0OjEzMTA3MjotMTotMToyNjE6Mjc3OjIzMzcKKzU6MTYzODQwOjE2Mzg0MDoxNjM4NDEtMTYzODQxOjI2MjoyNzg6Mjg0OQorNjoxOTY2MDg6LTE6LTE6MjYzOjI3OTozMzYxCis3OjIyOTM3NjoyMjkzNzY6MjI5Mzc3LTIyOTM3NzoyNjQ6MjgwOjM4NzMKKzg6MjYyMTQ0Oi0xOi0xOjI2NToyODE6NDM4NQorOToyOTQ5MTI6Mjk0OTEyOjI5NDkxMy0yOTQ5MTM6MjY2OjI4Mjo0ODk3CisxMDozMjc2ODA6LTE6LTE6MjY3OjI4Mzo1NDA5CisxMTozNjA0NDg6LTE6LTE6MjY4OjI4NDo1OTIxCisxMjozOTMyMTY6LTE6LTE6MjY5OjI4NTo2NDMzCisxMzo0MjU5ODQ6LTE6LTE6MjcwOjI4Njo2OTQ1CisxNDo0NTg3NTI6LTE6LTE6MjcxOjI4Nzo3NDU3CisxNTo0OTE1MjA6LTE6LTE6MjcyOjI4ODo3OTY5CisxNjo1MjQyODg6LTE6LTE6NTI0Mjg4OjUyNDMwNDo1MjQzMjAKKzE3OjU1NzA1NjotMTotMTo1MjQyODk6NTI0MzA1OjUyNDgzMgorMTg6NTg5ODI0Oi0xOi0xOjUyNDI5MDo1MjQzMDY6NTI1MzQ0CisxOTo2MjI1OTI6LTE6LTE6NTI0MjkxOjUyNDMwNzo1MjU4NTYKKzIwOjY1NTM2MDotMTotMTo1MjQyOTI6NTI0MzA4OjUyNjM2OAorMjE6Njg4MTI4Oi0xOi0xOjUyNDI5Mzo1MjQzMDk6NTI2ODgwCisyMjo3MjA4OTY6LTE6LTE6NTI0Mjk0OjUyNDMxMDo1MjczOTIKKzIzOjc1MzY2NDotMTotMTo1MjQyOTU6NTI0MzExOjUyNzkwNAorMjQ6Nzg2NDMyOi0xOi0xOjUyNDI5Njo1MjQzMTI6NTI4NDE2CisyNTo4MTkyMDA6ODE5MjAwOjgxOTIwMS04MTkyMDE6NTI0Mjk3OjUyNDMxMzo1Mjg5MjgKKzI2Ojg1MTk2ODotMTotMTo1MjQyOTg6NTI0MzE0OjUyOTQ0MAorMjc6ODg0NzM2Ojg4NDczNjo4ODQ3MzctODg0NzM3OjUyNDI5OTo1MjQzMTU6NTI5OTUyCisyODo5MTc1MDQ6LTE6LTE6NTI0MzAwOjUyNDMxNjo1MzA0NjQKKzI5Ojk1MDI3MjotMTotMTo1MjQzMDE6NTI0MzE3OjUzMDk3NgorMzA6OTgzMDQwOi0xOi0xOjUyNDMwMjo1MjQzMTg6NTMxNDg4CiszMToxMDE1ODA4Oi0xOi0xOjUyNDMwMzo1MjQzMTk6NTMyMDAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9kdW1wZTJmc19ncm91cF9vbmx5L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZF9kdW1wZTJmc19ncm91cF9vbmx5L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk2YzAyMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2R1bXBlMmZzX2dyb3VwX29ubHkvbmFtZQpAQCAtMCwwICsxIEBACitkdW1wZTJmcyBncm91cCBvbmx5IG1vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX2R1bXBlMmZzX2dyb3VwX29ubHkvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfZHVtcGUyZnNfZ3JvdXBfb25seS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0ODFmMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2R1bXBlMmZzX2dyb3VwX29ubHkvc2NyaXB0CkBAIC0wLDAgKzEsNDkgQEAKK2lmIFsgJCh1bmFtZSAtcykgPSAiRGFyd2luIiBdOyB0aGVuCisJIyBjcmVhdGVzIGEgNEdCIGZpbGVzeXN0ZW0KKwllY2hvICIkdGVzdF9uYW1lOiAkREVTQ1JJUFRJT046IHNraXBwZWQgZm9yIEhGUysgKG5vIHNwYXJzZSBmaWxlcykiCisJcmV0dXJuIDAKK2ZpCisKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gaGFzX2pvdXJuYWwgLVQgZXh0NCAkVE1QRklMRSAxMDQ4NTc2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImR1bXBlMmZzIG91dHB1dCIgPj4gJE9VVAorJERVTVBFMkZTIC1nICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGUvZXhwZWN0Lmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlL2V4cGVjdC5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTZmZmMzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlL2V4cGVjdC5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZDBlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGUvbmFtZQpAQCAtMCwwICsxIEBACitmYWxsb2NhdGUgc3BhcnNlIGZpbGVzIGFuZCBiaWcgZmlsZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlODk1NmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGUvc2NyaXB0CkBAIC0wLDAgKzEsMTc1IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUAorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitjYXQgPiAkVE1QRklMRS5jb25mIDw8IEVOREwKK1tmc190eXBlc10KK2V4dDQgPSB7CisgICAgICAgIGJhc2VfZmVhdHVyZXMgPSBzcGFyc2Vfc3VwZXIsZmlsZXR5cGUscmVzaXplX2lub2RlLGRpcl9pbmRleCxleHRfYXR0cixeaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsNjRiaXQKKyAgICAgICAgYmxvY2tzaXplID0gMTAyNAorICAgICAgICBpbm9kZV9zaXplID0gMjU2CisgICAgICAgIGlub2RlX3JhdGlvID0gMTYzODQKK30KK0VOREwKK01LRTJGU19DT05GSUc9JFRNUEZJTEUuY29uZiAkTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gXmJpZ2FsbG9jIC1UIGV4dDQgJFRNUEZJTEUgNjU1MzYgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNvbmYKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImRlYnVnZnMgd3JpdGUgZmlsZXMiID4+ICRPVVQKK21ha2VfZmlsZSgpIHsKKwluYW1lPSIkMSIKKwlzdGFydD0iJDIiCisJZmxhZz0iJDMiCisKKwljYXQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsICRuYW1lCitzaWYgLyRuYW1lIHNpemUgNDA5NjAKK2VvIC8kbmFtZQorc2V0X2JtYXAgJGZsYWcgMTAgJCgoc3RhcnQgKyAxMCkpCitzZXRfYm1hcCAkZmxhZyAxMyAkKChzdGFydCArIDEzKSkKK3NldF9ibWFwICRmbGFnIDI2ICQoKHN0YXJ0ICsgMjYpKQorc2V0X2JtYXAgJGZsYWcgMjkgJCgoc3RhcnQgKyAyOSkpCitlYworc2lmIC8kbmFtZSBibG9ja3MgOAorc2V0YiAkKChzdGFydCArIDEwKSkKK3NldGIgJCgoc3RhcnQgKyAxMykpCitzZXRiICQoKHN0YXJ0ICsgMjYpKQorc2V0YiAkKChzdGFydCArIDI5KSkKK0VOREwKK30KKworI0ZpbGVzIHdlIGNyZWF0ZToKKyMgYTogZmFsbG9jYXRlIGEgNDBrIGZpbGUKKyMgYio6IGZhbGxvYyBzcGFyc2UgZmlsZSBzdGFydGluZyBhdCBiKgorIyBjKjogZmFsbG9jIHNwYXJlIGZpbGUgZW5kaW5nIGF0IGMqCisjIGQ6IG1pZGNsdXN0ZXIgdG8gbWlkY2x1c3Rlciwgc3Vycm91bmRpbmcgc3BhcnNlCisjIGU6IHBhcnRpYWwgbWlkZGxlIGNsdXN0ZXIgYWxsb2MKKyMgZjogb25lIGJpZyBmaWxlCisjIGcqOiBmYWxsb2Mgc3BhcnNlIGluaXQgZmlsZSBzdGFydGluZyBhdCBnKgorIyBoKjogZmFsbG9jIHNwYXJzZSBpbml0IGZpbGUgZW5kaW5nIGF0IGgqCisjIGk6IG1pZGNsdXN0ZXIgdG8gbWlkY2x1c3Rlciwgc3Vycm91bmRpbmcgc3BhcnNlIGluaXQKKyMgajogcGFydGlhbCBtaWRkbGUgY2x1c3RlciBhbGxvYworIyBrOiBvbmUgYmlnIGluaXQgZmlsZQorYmFzZT01MDAwCitjYXQgPiAkVE1QRklMRS5jbWQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsIGEKK3NpZiAvYSBzaXplIDQwOTYwCitmYWxsb2NhdGUgL2EgMCAzOQorRU5ETAorZWNobyAiZXggL2EiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIHNhbXBsZSAkYmFzZSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImV4IC9zYW1wbGUiID4+ICRUTVBGSUxFLmNtZDIKK2Jhc2U9MTAwMDAKKworZm9yIGkgaW4gOCA5IDEwIDExIDEyIDEzIDE0IDE1OyBkbworCW1ha2VfZmlsZSBiJGkgJCgoJGJhc2UgKyAoNDAgKiAoJGkgLSA4KSkpKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJmYWxsb2NhdGUgL2IkaSAkaSAzOSIgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZXggL2IkaSIgPj4gJFRNUEZJTEUuY21kMgorZG9uZQorCitmb3IgaSBpbiAyNCAyNSAyNiAyNyAyOCAyOSAzMCAzMTsgZG8KKwltYWtlX2ZpbGUgYyRpICQoKCRiYXNlICsgMzIwICsgKDQwICogKCRpIC0gMjQpKSkpIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImZhbGxvY2F0ZSAvYyRpIDAgJGkiID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImV4IC9jJGkiID4+ICRUTVBGSUxFLmNtZDIKK2RvbmUKKworbWFrZV9maWxlIGQgJCgoJGJhc2UgKyA2NDApKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImZhbGxvY2F0ZSAvZCA0IDM1IiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImV4IC9kIiA+PiAkVE1QRklMRS5jbWQyCisKK21ha2VfZmlsZSBlICQoKCRiYXNlICsgNjgwKSkgLS11bmluaXQgPj4gJFRNUEZJTEUuY21kCitlY2hvICJmYWxsb2NhdGUgL2UgMTkgMjAiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL2UiID4+ICRUTVBGSUxFLmNtZDIKKworY2F0ID4+ICRUTVBGSUxFLmNtZCA8PCBFTkRMCit3cml0ZSAvZGV2L251bGwgZgorc2lmIC9mIHNpemUgMTAyNAorZW8gL2YKK3NldF9ibWFwIC0tdW5pbml0IDAgOTAwMAorZWMKK3NpZiAvZiBibG9ja3MgMgorc2V0YiA5MDAwCitmYWxsb2NhdGUgL2YgMCA4OTk5CitFTkRMCitlY2hvICJleCAvZiIgPj4gJFRNUEZJTEUuY21kMgorCisjIE5vdyBkbyBpdCBhZ2FpbiwgYnV0IHdpdGggaW5pdGlhbGl6ZWQgYmxvY2tzCitiYXNlPTIwMDAwCitmb3IgaSBpbiA4IDkgMTAgMTEgMTIgMTMgMTQgMTU7IGRvCisJbWFrZV9maWxlIGckaSAkKCgkYmFzZSArICg0MCAqICgkaSAtIDgpKSkpID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImZhbGxvY2F0ZSAvZyRpICRpIDM5IiA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJleCAvZyRpIiA+PiAkVE1QRklMRS5jbWQyCitkb25lCisKK2ZvciBpIGluIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxOyBkbworCW1ha2VfZmlsZSBoJGkgJCgoJGJhc2UgKyAzMjAgKyAoNDAgKiAoJGkgLSAyNCkpKSkgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZmFsbG9jYXRlIC9oJGkgMCAkaSIgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZXggL2gkaSIgPj4gJFRNUEZJTEUuY21kMgorZG9uZQorCittYWtlX2ZpbGUgaSAkKCgkYmFzZSArIDY0MCkpID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZmFsbG9jYXRlIC9pIDQgMzUiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL2kiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIGogJCgoJGJhc2UgKyA2ODApKSA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImZhbGxvY2F0ZSAvaiAxOSAyMCIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJleCAvaiIgPj4gJFRNUEZJTEUuY21kMgorCitjYXQgPj4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCBrCitzaWYgL2sgc2l6ZSAxMDI0CitlbyAvaworc2V0X2JtYXAgMCAxOTAwMAorZWMKK3NpZiAvayBibG9ja3MgMgorc2V0YiAxOTAwMAorZmFsbG9jYXRlIC9rIDAgODk5OQorc2lmIC9rIHNpemUgOTIxNjAwMAorRU5ETAorZWNobyAiZXggL2siID4+ICRUTVBGSUxFLmNtZDIKKworJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kMiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldyAkVE1QRklMRS5jbWQgJFRNUEZJTEUuY21kMgorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZV9iaWdhbGxvYy9leHBlY3QuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmlnYWxsb2MvZXhwZWN0Lmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NDBiYzIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmlnYWxsb2MvZXhwZWN0Lmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZV9iaWdhbGxvYy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlX2JpZ2FsbG9jL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1NjQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZV9iaWdhbGxvYy9uYW1lCkBAIC0wLDAgKzEgQEAKK2ZhbGxvY2F0ZSBzcGFyc2UgZmlsZXMgYW5kIGJpZyBmaWxlcyB3aXRoIGJpZ2FsbG9jCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmlnYWxsb2Mvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlX2JpZ2FsbG9jL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjZiZjk3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlX2JpZ2FsbG9jL3NjcmlwdApAQCAtMCwwICsxLDE3NiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworY2F0ID4gJFRNUEZJTEUuY29uZiA8PCBFTkRMCitbZnNfdHlwZXNdCitleHQ0ID0geworCWNsdXN0ZXJfc2l6ZSA9IDgxOTIKKyAgICAgICAgYmFzZV9mZWF0dXJlcyA9IHNwYXJzZV9zdXBlcixmaWxldHlwZSxyZXNpemVfaW5vZGUsZGlyX2luZGV4LGV4dF9hdHRyLF5oYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSw2NGJpdAorICAgICAgICBibG9ja3NpemUgPSAxMDI0CisgICAgICAgIGlub2RlX3NpemUgPSAyNTYKKyAgICAgICAgaW5vZGVfcmF0aW8gPSAxNjM4NAorfQorRU5ETAorTUtFMkZTX0NPTkZJRz0kVE1QRklMRS5jb25mICRNS0UyRlMgLUYgLW8gTGludXggLWIgMTAyNCAtTyBiaWdhbGxvYyAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkVE1QRklMRS5jb25mCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGZpbGVzIiA+PiAkT1VUCittYWtlX2ZpbGUoKSB7CisJbmFtZT0iJDEiCisJc3RhcnQ9IiQyIgorCWZsYWc9IiQzIgorCisJY2F0IDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCAkbmFtZQorc2lmIC8kbmFtZSBzaXplIDQwOTYwCitlbyAvJG5hbWUKK3NldF9ibWFwICRmbGFnIDEwICQoKHN0YXJ0ICsgMTApKQorc2V0X2JtYXAgJGZsYWcgMTMgJCgoc3RhcnQgKyAxMykpCitzZXRfYm1hcCAkZmxhZyAyNiAkKChzdGFydCArIDI2KSkKK3NldF9ibWFwICRmbGFnIDI5ICQoKHN0YXJ0ICsgMjkpKQorZWMKK3NpZiAvJG5hbWUgYmxvY2tzIDMyCitzZXRiICQoKHN0YXJ0ICsgMTApKQorc2V0YiAkKChzdGFydCArIDEzKSkKK3NldGIgJCgoc3RhcnQgKyAyNikpCitzZXRiICQoKHN0YXJ0ICsgMjkpKQorRU5ETAorfQorCisjRmlsZXMgd2UgY3JlYXRlOgorIyBhOiBmYWxsb2NhdGUgYSA0MGsgZmlsZQorIyBiKjogZmFsbG9jIHNwYXJzZSBmaWxlIHN0YXJ0aW5nIGF0IGIqCisjIGMqOiBmYWxsb2Mgc3BhcmUgZmlsZSBlbmRpbmcgYXQgYyoKKyMgZDogbWlkY2x1c3RlciB0byBtaWRjbHVzdGVyLCBzdXJyb3VuZGluZyBzcGFyc2UKKyMgZTogcGFydGlhbCBtaWRkbGUgY2x1c3RlciBhbGxvYworIyBmOiBvbmUgYmlnIGZpbGUKKyMgZyo6IGZhbGxvYyBzcGFyc2UgaW5pdCBmaWxlIHN0YXJ0aW5nIGF0IGcqCisjIGgqOiBmYWxsb2Mgc3BhcnNlIGluaXQgZmlsZSBlbmRpbmcgYXQgaCoKKyMgaTogbWlkY2x1c3RlciB0byBtaWRjbHVzdGVyLCBzdXJyb3VuZGluZyBzcGFyc2UgaW5pdAorIyBqOiBwYXJ0aWFsIG1pZGRsZSBjbHVzdGVyIGFsbG9jCisjIGs6IG9uZSBiaWcgaW5pdCBmaWxlCitiYXNlPTUwMDAKK2NhdCA+ICRUTVBGSUxFLmNtZCA8PCBFTkRMCit3cml0ZSAvZGV2L251bGwgYQorc2lmIC9hIHNpemUgNDA5NjAKK2ZhbGxvY2F0ZSAvYSAwIDM5CitFTkRMCitlY2hvICJleCAvYSIgPj4gJFRNUEZJTEUuY21kMgorCittYWtlX2ZpbGUgc2FtcGxlICRiYXNlIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL3NhbXBsZSIgPj4gJFRNUEZJTEUuY21kMgorYmFzZT0xMDAwMAorCitmb3IgaSBpbiA4IDkgMTAgMTEgMTIgMTMgMTQgMTU7IGRvCisJbWFrZV9maWxlIGIkaSAkKCgkYmFzZSArICg0MCAqICgkaSAtIDgpKSkpIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImZhbGxvY2F0ZSAvYiRpICRpIDM5IiA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJleCAvYiRpIiA+PiAkVE1QRklMRS5jbWQyCitkb25lCisKK2ZvciBpIGluIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxOyBkbworCW1ha2VfZmlsZSBjJGkgJCgoJGJhc2UgKyAzMjAgKyAoNDAgKiAoJGkgLSAyNCkpKSkgLS11bmluaXQgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZmFsbG9jYXRlIC9jJGkgMCAkaSIgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZXggL2MkaSIgPj4gJFRNUEZJTEUuY21kMgorZG9uZQorCittYWtlX2ZpbGUgZCAkKCgkYmFzZSArIDY0MCkpIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZmFsbG9jYXRlIC9kIDQgMzUiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL2QiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIGUgJCgoJGJhc2UgKyA2ODApKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImZhbGxvY2F0ZSAvZSAxOSAyMCIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJleCAvZSIgPj4gJFRNUEZJTEUuY21kMgorCitjYXQgPj4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCBmCitzaWYgL2Ygc2l6ZSAxMDI0CitlbyAvZgorc2V0X2JtYXAgLS11bmluaXQgMCA5MDAwCitlYworc2lmIC9mIGJsb2NrcyAxNgorc2V0YiA5MDAwCitmYWxsb2NhdGUgL2YgMCA4OTk5CitFTkRMCitlY2hvICJleCAvZiIgPj4gJFRNUEZJTEUuY21kMgorCisjIE5vdyBkbyBpdCBhZ2FpbiwgYnV0IHdpdGggaW5pdGlhbGl6ZWQgYmxvY2tzCitiYXNlPTIwMDAwCitmb3IgaSBpbiA4IDkgMTAgMTEgMTIgMTMgMTQgMTU7IGRvCisJbWFrZV9maWxlIGckaSAkKCgkYmFzZSArICg0MCAqICgkaSAtIDgpKSkpID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImZhbGxvY2F0ZSAvZyRpICRpIDM5IiA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJleCAvZyRpIiA+PiAkVE1QRklMRS5jbWQyCitkb25lCisKK2ZvciBpIGluIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxOyBkbworCW1ha2VfZmlsZSBoJGkgJCgoJGJhc2UgKyAzMjAgKyAoNDAgKiAoJGkgLSAyNCkpKSkgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZmFsbG9jYXRlIC9oJGkgMCAkaSIgPj4gJFRNUEZJTEUuY21kCisJZWNobyAiZXggL2gkaSIgPj4gJFRNUEZJTEUuY21kMgorZG9uZQorCittYWtlX2ZpbGUgaSAkKCgkYmFzZSArIDY0MCkpID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZmFsbG9jYXRlIC9pIDQgMzUiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL2kiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIGogJCgoJGJhc2UgKyA2ODApKSA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImZhbGxvY2F0ZSAvaiAxOSAyMCIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJleCAvaiIgPj4gJFRNUEZJTEUuY21kMgorCitjYXQgPj4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCBrCitzaWYgL2sgc2l6ZSAxMDI0CitlbyAvaworc2V0X2JtYXAgMCAxOTAwMAorZWMKK3NpZiAvayBibG9ja3MgMTYKK3NldGIgMTkwMDAKK2ZhbGxvY2F0ZSAvayAwIDg5OTkKK3NpZiAvayBzaXplIDkyMTYwMDAKK0VOREwKK2VjaG8gImV4IC9rIiA+PiAkVE1QRklMRS5jbWQyCisKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZDIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcgJFRNUEZJTEUuY21kICRUTVBGSUxFLmNtZDIKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmxrbWFwL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZV9ibGttYXAvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZTc5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmxrbWFwL2V4cGVjdApAQCAtMCwwICsxLDU4IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgMWsgYmxvY2tzIGFuZCA0MDk2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjM0MC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgd3JpdGUgZmlsZXMKK2RlYnVnZnM6IHN0YXQgL2EKK0lub2RlOiAxMiAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NjYgICBGbGFnczogMHgwCitHZW5lcmF0aW9uOiAwICAgIFZlcnNpb246IDB4MDAwMDAwMDA6MDAwMDAwMDAKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgUHJvamVjdDogICAgIDAgICBTaXplOiA0MDk2MAorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiA4MgorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitTaXplIG9mIGV4dHJhIGlub2RlIGZpZWxkczogMzIKK0JMT0NLUzoKKygwLTEpOjEzMTItMTMxMywgKDItMTEpOjgwMDAtODAwOSwgKElORCk6ODAxMCwgKDEyLTM5KTo4MDExLTgwMzgKK1RPVEFMOiA0MQorCitkZWJ1Z2ZzOiBzdGF0IC9iCitJbm9kZTogMTMgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjY2ICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMCAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDAwCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFByb2plY3Q6ICAgICAwICAgU2l6ZTogMTAyNDAwMDAKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMjAwODIKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorU2l6ZSBvZiBleHRyYSBpbm9kZSBmaWVsZHM6IDMyCitCTE9DS1M6CisoMC0xMSk6MTAwMDAtMTAwMTEsIChJTkQpOjEwMDEyLCAoMTItMjY3KToxMDAxMy0xMDI2OCwgKERJTkQpOjEwMjY5LCAoSU5EKToxMDI3MCwgKDI2OC01MjMpOjEwMjcxLTEwNTI2LCAoSU5EKToxMDUyNywgKDUyNC03NzkpOjEwNTI4LTEwNzgzLCAoSU5EKToxMDc4NCwgKDc4MC0xMDM1KToxMDc4NS0xMTA0MCwgKElORCk6MTEwNDEsICgxMDM2LTEyOTEpOjExMDQyLTExMjk3LCAoSU5EKToxMTI5OCwgKDEyOTItMTU0Nyk6MTEyOTktMTE1NTQsIChJTkQpOjExNTU1LCAoMTU0OC0xODAzKToxMTU1Ni0xMTgxMSwgKElORCk6MTE4MTIsICgxODA0LTIwNTkpOjExODEzLTEyMDY4LCAoSU5EKToxMjA2OSwgKDIwNjAtMjMxNSk6MTIwNzAtMTIzMjUsIChJTkQpOjEyMzI2LCAoMjMxNi0yNTcxKToxMjMyNy0xMjU4MiwgKElORCk6MTI1ODMsICgyNTcyLTI4MjcpOjEyNTg0LTEyODM5LCAoSU5EKToxMjg0MCwgKDI4MjgtMzA4Myk6MTI4NDEtMTMwOTYsIChJTkQpOjEzMDk3LCAoMzA4NC0zMzM5KToxMzA5OC0xMzM1MywgKElORCk6MTMzNTQsICgzMzQwLTM1OTUpOjEzMzU1LTEzNjEwLCAoSU5EKToxMzYxMSwgKDM1OTYtMzg1MSk6MTM2MTItMTM4NjcsIChJTkQpOjEzODY4LCAoMzg1Mi00MTA3KToxMzg2OS0xNDEyNCwgKElORCk6MTQxMjUsICg0MTA4LTQzNjMpOjE0MTI2LTE0MzgxLCAoSU5EKToxNDM4MiwgKDQzNjQtNDYxOSk6MTQzODMtMTQ2MzgsIChJTkQpOjE0NjM5LCAoNDYyMC00ODc1KToxNDY0MC0xNDg5NSwgKElORCk6MTQ4OTYsICg0ODc2LTUxMzEpOjE0ODk3LTE1MTUyLCAoSU5EKToxNTE1MywgKDUxMzItNTM4Nyk6MTUxNTQtMTU0MDksIChJTkQpOjE1NDEwLCAoNTM4OC01NjQzKToxNTQxMS0xNTY2NiwgKElORCk6MTU2NjcsICg1NjQ0LTU4OTkpOjE1NjY4LTE1OTIzLCAoSU5EKToxNTkyNCwgKDU5MDAtNjE1NSk6MTU5MjUtMTYxODAsIChJTkQpOjE2MTgxLCAoNjE1Ni02NDExKToxNjE4Mi0xNjQzNywgKElORCk6MTY0MzgsICg2NDEyLTY2NjcpOjE2NDM5LTE2Njk0LCAoSU5EKToxNjY5NSwgKDY2NjgtNjkyMyk6MTY2OTYtMTY5NTEsIChJTkQpOjE2OTUyLCAoNjkyNC03MTc5KToxNjk1My0xNzIwOCwgKElORCk6MTcyMDksICg3MTgwLTc0MzUpOjE3MjEwLTE3NDY1LCAoSU5EKToxNzQ2NiwgKDc0MzYtNzY5MSk6MTc0NjctMTc3MjIsIChJTkQpOjE3NzIzLCAoNzY5Mi03OTQ3KToxNzcyNC0xNzk3OSwgKElORCk6MTc5ODAsICg3OTQ4LTgyMDMpOjE3OTgxLTE4MjM2LCAoSU5EKToxODIzNywgKDgyMDQtODQ1OSk6MTgyMzgtMTg0OTMsIChJTkQpOjE4NDk0LCAoODQ2MC04NzE1KToxODQ5NS0xODc1MCwgKElORCk6MTg3NTEsICg4NzE2LTg5NzEpOjE4NzUyLTE5MDA3LCAoSU5EKToxOTAwOCwgKDg5NzItOTIyNyk6MTkwMDktMTkyNjQsIChJTkQpOjE5MjY1LCAoOTIyOC05NDgzKToxOTI2Ni0xOTUyMSwgKElORCk6MTk1MjIsICg5NDg0LTk3MzkpOjE5NTIzLTE5Nzc4LCAoSU5EKToxOTc3OSwgKDk3NDAtOTk5NSk6MTk3ODAtMjAwMzUsIChJTkQpOjIwMDM2LCAoOTk5Ni05OTk5KToyMDAzNy0yMDA0MAorVE9UQUw6IDEwMDQxCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDY4NDEsIGNvdW50ZWQ9Njg0MCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzEgKDE1NTEsIGNvdW50ZWQ9MTU1MCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNTMxMTYsIGNvdW50ZWQ9NTMxMTQpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy80MDk2IGZpbGVzICg3LjclIG5vbi1jb250aWd1b3VzKSwgMTI0MjIvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmxrbWFwL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmxrbWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyYjYxZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2ZhbGxvY2F0ZV9ibGttYXAvbmFtZQpAQCAtMCwwICsxIEBACitmYWxsb2NhdGUgc3BhcnNlIGZpbGVzIGFuZCBiaWcgZmlsZXMgb24gYSBibG9ja21hcCBmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlX2Jsa21hcC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF9mYWxsb2NhdGVfYmxrbWFwL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzQ4Y2JjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfZmFsbG9jYXRlX2Jsa21hcC9zY3JpcHQKQEAgLTAsMCArMSw4NSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2NhdCA+ICRUTVBGSUxFLmNvbmYgPDwgRU5ETAorW2ZzX3R5cGVzXQorZXh0NCA9IHsKKyAgICAgICAgYmFzZV9mZWF0dXJlcyA9IHNwYXJzZV9zdXBlcixmaWxldHlwZSxyZXNpemVfaW5vZGUsZGlyX2luZGV4LGV4dF9hdHRyLF5oYXNfam91cm5hbCxeZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsXjY0Yml0CisgICAgICAgIGJsb2Nrc2l6ZSA9IDEwMjQKKyAgICAgICAgaW5vZGVfc2l6ZSA9IDI1NgorICAgICAgICBpbm9kZV9yYXRpbyA9IDE2Mzg0Cit9CitFTkRMCitNS0UyRlNfQ09ORklHPSRUTVBGSUxFLmNvbmYgJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIF5iaWdhbGxvYyAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkVE1QRklMRS5jb25mCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGZpbGVzIiA+PiAkT1VUCisKKyNGaWxlcyB3ZSBjcmVhdGU6CisjIGE6IGZhbGxvY2F0ZSBhIDQwayBmaWxlCisjIGs6IG9uZSBiaWcgZmlsZQorYmFzZT01MDAwCitjYXQgPiAkVE1QRklMRS5jbWQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsIGEKK3NpZiAvYSBibWFwWzJdIDgwMDAKK3NpZiAvYSBzaXplIDQwOTYwCitzaWYgL2EgaV9ibG9ja3MgMgorc2V0YiA4MDAwCitmYWxsb2NhdGUgL2EgMCAzOQorCit3cml0ZSAvZGV2L251bGwgYgorc2lmIC9iIHNpemUgMTAyNDAwMDAKK3NpZiAvYiBibWFwWzBdIDEwMDAwCitzaWYgL2IgaV9ibG9ja3MgMgorc2V0YiAxMDAwMAorZmFsbG9jYXRlIC9iIDAgOTk5OQorRU5ETAorZWNobyAic3RhdCAvYSIgPj4gJFRNUEZJTEUuY21kMgorZWNobyAic3RhdCAvYiIgPj4gJFRNUEZJTEUuY21kMgorCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQyICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvXi4qdGltZTouKiQvZCcgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcgJFRNUEZJTEUuY21kICRUTVBGSUxFLmNtZDIKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0ZjY0ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2lubGluZV9kdW1wL2V4cGVjdApAQCAtMCwwICsxLDk1IEBACisqKiogbG9uZyBmaWxlCitJbm9kZTogMTMgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4MTAwMDAwMDAKK0dlbmVyYXRpb246IDMyODkyNjI2NDQgICAgVmVyc2lvbjogMHgwMDAwMDAwMDowMDAwMDAwMQorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiA4MAorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKKyBjdGltZTogMHg1M2NlYzZiNDpjNzJlM2MwMCAtLSBUdWUgSnVsIDIyIDIwOjE2OjUyIDIwMTQKKyBhdGltZTogMHg1M2NlYzNjODo0YTNmZDAwMCAtLSBUdWUgSnVsIDIyIDIwOjA0OjI0IDIwMTQKKyBtdGltZTogMHg1M2NlYzNjODo0YzI4MTgwMCAtLSBUdWUgSnVsIDIyIDIwOjA0OjI0IDIwMTQKK2NydGltZTogMHg1M2NlYzNjODo0YTNmZDAwMCAtLSBUdWUgSnVsIDIyIDIwOjA0OjI0IDIwMTQKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAyOAorRXh0ZW5kZWQgYXR0cmlidXRlczoKKyAgc3lzdGVtLmRhdGEgKDIwKQorICB1c2VyLmEgPSAiYiIgKDEpCitTaXplIG9mIGlubGluZSBkYXRhOiA4MAorKioqIHNob3J0IGZpbGUKK0lub2RlOiAxOCAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NDQgICBGbGFnczogMHgxMDAwMDAwMAorR2VuZXJhdGlvbjogMzg0MjIyOTQ3MyAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDIwCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorIGN0aW1lOiAweDUzY2VjNmI0OmNhZmVjYzAwIC0tIFR1ZSBKdWwgMjIgMjA6MTY6NTIgMjAxNAorIGF0aW1lOiAweDUzY2VjNDQzOmJkYTRkNDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MjcgMjAxNAorIG10aW1lOiAweDUzY2VjNDQzOmJmOGQxYzAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MjcgMjAxNAorY3J0aW1lOiAweDUzY2VjNDQzOmJkYTRkNDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MjcgMjAxNAorU2l6ZSBvZiBleHRyYSBpbm9kZSBmaWVsZHM6IDI4CitFeHRlbmRlZCBhdHRyaWJ1dGVzOgorICBzeXN0ZW0uZGF0YSAoMCkKKyAgdXNlci5hID0gImIiICgxKQorU2l6ZSBvZiBpbmxpbmUgZGF0YTogNjAKKworKioqIGxvbmcgZGlyCitJbm9kZTogMTYgICBUeXBlOiBkaXJlY3RvcnkgICAgTW9kZTogIDA3NTUgICBGbGFnczogMHgxMDAwMDAwMAorR2VuZXJhdGlvbjogMzg0MjIyOTQ2OSAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDA0CitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDEzMgorRmlsZSBBQ0w6IDcgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDIgICBCbG9ja2NvdW50OiA4CitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKKyBjdGltZTogMHg1M2NlYzZlMzoyN2VhYzAwMCAtLSBUdWUgSnVsIDIyIDIwOjE3OjM5IDIwMTQKKyBhdGltZTogMHg1M2NlYzQxMDplZDUzZGMwMCAtLSBUdWUgSnVsIDIyIDIwOjA1OjM2IDIwMTQKKyBtdGltZTogMHg1M2NlYzQyYjoyNDFhMzAwMCAtLSBUdWUgSnVsIDIyIDIwOjA2OjAzIDIwMTQKK2NydGltZTogMHg1M2NlYzNmZTpjODIyNjAwMCAtLSBUdWUgSnVsIDIyIDIwOjA1OjE4IDIwMTQKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAyOAorRXh0ZW5kZWQgYXR0cmlidXRlczoKKyAgc3lzdGVtLmRhdGEgKDcyKQorICB1c2VyLmEgPSAiYiIgKDEpCitTaXplIG9mIGlubGluZSBkYXRhOiAxMzIKKyoqKiBzaG9ydCBkaXIKK0lub2RlOiAyMCAgIFR5cGU6IGRpcmVjdG9yeSAgICBNb2RlOiAgMDc1NSAgIEZsYWdzOiAweDEwMDAwMDAwCitHZW5lcmF0aW9uOiAzNzEwODE4OTMxICAgIFZlcnNpb246IDB4MDAwMDAwMDA6MDAwMDAwMDEKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgU2l6ZTogNjAKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAyICAgQmxvY2tjb3VudDogMAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCisgY3RpbWU6IDB4NTNjZWM2YjQ6Y2EwYWE4MDAgLS0gVHVlIEp1bCAyMiAyMDoxNjo1MiAyMDE0CisgYXRpbWU6IDB4NTNjZWM0Nzc6OWE1YmEwMDAgLS0gVHVlIEp1bCAyMiAyMDowNzoxOSAyMDE0CisgbXRpbWU6IDB4NTNjZWM0Nzc6OWE1YmEwMDAgLS0gVHVlIEp1bCAyMiAyMDowNzoxOSAyMDE0CitjcnRpbWU6IDB4NTNjZWM0Nzc6OWE1YmEwMDAgLS0gVHVlIEp1bCAyMiAyMDowNzoxOSAyMDE0CitTaXplIG9mIGV4dHJhIGlub2RlIGZpZWxkczogMjgKK0V4dGVuZGVkIGF0dHJpYnV0ZXM6CisgIHN5c3RlbS5kYXRhICgwKQorICB1c2VyLmEgPSAiYiIgKDEpCitTaXplIG9mIGlubGluZSBkYXRhOiA2MAorCisqKiogbG9uZyBsaW5rCitJbm9kZTogMTIgICBUeXBlOiBzeW1saW5rICAgIE1vZGU6ICAwNzc3ICAgRmxhZ3M6IDB4MTAwMDAwMDAKK0dlbmVyYXRpb246IDMyODkyNjI2NDMgICAgVmVyc2lvbjogMHgwMDAwMDAwMDowMDAwMDAwMQorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiA4MAorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKKyBjdGltZTogMHg1M2NlYzQ3Zjo3MjRkYjgwMCAtLSBUdWUgSnVsIDIyIDIwOjA3OjI3IDIwMTQKKyBhdGltZTogMHg1M2NlYzY2NToyN2VhYzAwMCAtLSBUdWUgSnVsIDIyIDIwOjE1OjMzIDIwMTQKKyBtdGltZTogMHg1M2NlYzNiNjo4Mjg0MWMwMCAtLSBUdWUgSnVsIDIyIDIwOjA0OjA2IDIwMTQKK2NydGltZTogMHg1M2NlYzNiNjo4Mjg0MWMwMCAtLSBUdWUgSnVsIDIyIDIwOjA0OjA2IDIwMTQKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAyOAorRXh0ZW5kZWQgYXR0cmlidXRlczoKKyAgc3lzdGVtLmRhdGEgKDIwKQorRmFzdCBsaW5rIGRlc3Q6ICJ4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIKKyoqKiBzaG9ydCBsaW5rCitJbm9kZTogMTkgICBUeXBlOiBzeW1saW5rICAgIE1vZGU6ICAwNzc3ICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMzg0MjIyOTQ3NCAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDIwCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorIGN0aW1lOiAweDUzY2VjNDRjOmExZmNjMDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MzYgMjAxNAorIGF0aW1lOiAweDUzY2VjNDRkOjExZmI4NDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MzcgMjAxNAorIG10aW1lOiAweDUzY2VjNDRjOmExZmNjMDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MzYgMjAxNAorY3J0aW1lOiAweDUzY2VjNDRjOmExZmNjMDAwIC0tIFR1ZSBKdWwgMjIgMjA6MDY6MzYgMjAxNAorU2l6ZSBvZiBleHRyYSBpbm9kZSBmaWVsZHM6IDI4CitGYXN0IGxpbmsgZGVzdDogInh4eHh4eHh4eHh4eHh4eHh4eHh4IgorKioqIGVuZCB0ZXN0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9kX2lubGluZV9kdW1wL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OGE0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2RfaW5saW5lX2R1bXAvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmMxYTljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfaW5saW5lX2R1bXAvbmFtZQpAQCAtMCwwICsxIEBACitkZWJ1Z2ZzIGR1bXAgaW5saW5lIGRhdGEgdGVzdApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfaW5saW5lX2R1bXAvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfaW5saW5lX2R1bXAvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxOTk0NTMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9pbmxpbmVfZHVtcC9zY3JpcHQKQEAgLTAsMCArMSw0MyBAQAoraWYgISB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorCWV4aXQgMAorZmkKKworT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorVkVSSUZZX0ZTQ0tfT1BUPS15ZgorCitaSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitnemlwIC1kIDwgJFpJTUFHRSA+ICRUTVBGSUxFCisKK2VjaG8gIioqKiBsb25nIGZpbGUiID4gJE9VVAorJERFQlVHRlMgLVIgJ3N0YXQgL2ZpbGUnICRUTVBGSUxFIDI+JjEgfCAkQ0xFQU5fT1VUUFVUID4+ICRPVVQgMj4mMQorZWNobyAiKioqIHNob3J0IGZpbGUiID4+ICRPVVQKKyRERUJVR0ZTIC1SICdzdGF0IC9zaG9ydGZpbGUnICRUTVBGSUxFIDI+JjEgfCAkQ0xFQU5fT1VUUFVUID4+ICRPVVQgMj4mMQorZWNobyA+PiAkT1VUCisKK2VjaG8gIioqKiBsb25nIGRpciIgPj4gJE9VVAorJERFQlVHRlMgLVIgJ3N0YXQgL2RpcicgJFRNUEZJTEUgMj4mMSB8ICRDTEVBTl9PVVRQVVQgPj4gJE9VVCAyPiYxCitlY2hvICIqKiogc2hvcnQgZGlyIiA+PiAkT1VUCiskREVCVUdGUyAtUiAnc3RhdCAvc2hvcnRkaXInICRUTVBGSUxFIDI+JjEgfCAkQ0xFQU5fT1VUUFVUID4+ICRPVVQgMj4mMQorZWNobyA+PiAkT1VUCisKK2VjaG8gIioqKiBsb25nIGxpbmsiID4+ICRPVVQKKyRERUJVR0ZTIC1SICdzdGF0IC9saW5rJyAkVE1QRklMRSAyPiYxIHwgJENMRUFOX09VVFBVVCA+PiAkT1VUIDI+JjEKK2VjaG8gIioqKiBzaG9ydCBsaW5rIiA+PiAkT1VUCiskREVCVUdGUyAtUiAnc3RhdCAvc2hvcnRsaW5rJyAkVE1QRklMRSAyPiYxIHwgJENMRUFOX09VVFBVVCA+PiAkT1VUIDI+JjEKKworZWNobyAiKioqIGVuZCB0ZXN0IiA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBWRVJJRllfRlNDS19PUFQgTkFUSVZFX0ZTQ0tfT1BUIE9VVCBFWFAgVEVTVF9EQVRBIFZFUklGWV9EQVRBIFpJTUFHRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfbG9hZGR1bXAvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfbG9hZGR1bXAvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MGRmODgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9sb2FkZHVtcC9leHBlY3QKQEAgLTAsMCArMSwxOCBAQAorZGVidWdmcyBsb2FkL2R1bXAgdGVzdAorbWtlMmZzIC1GcSAtYiAxMDI0IHRlc3QuaW1nIDUxMgorRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyAtUiAnJ3dyaXRlIGRfbG9hZGR1bXAudG1wIHRlc3RfZGF0YScnIC13IHRlc3QuaW1nCitBbGxvY2F0ZWQgaW5vZGU6IDEyCitFeGl0IHN0YXR1cyBpcyAwCitlMmZzY2sgLXlmIC1OIHRlc3RfZmlsZXN5cworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyAtUiAnJ2R1bXAgdGVzdF9kYXRhIGRfbG9hZGR1bXAudmVyLnRtcCcnIHRlc3QuaW1nCitFeGl0IHN0YXR1cyBpcyAwCitjbXAgZF9sb2FkZHVtcC50bXAgZF9sb2FkZHVtcC52ZXIudG1wCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9sb2FkZHVtcC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2RfbG9hZGR1bXAvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjVlYzNiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfbG9hZGR1bXAvbmFtZQpAQCAtMCwwICsxIEBACitkZWJ1Z2ZzIGxvYWQvZHVtcCB0ZXN0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9sb2FkZHVtcC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF9sb2FkZHVtcC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3MjdiYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX2xvYWRkdW1wL3NjcmlwdApAQCAtMCwwICsxLDY2IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitWRVJJRllfRlNDS19PUFQ9LXlmCisKK1RFU1RfREFUQT0kdGVzdF9uYW1lLnRtcAorVkVSSUZZX0RBVEE9JHRlc3RfbmFtZS52ZXIudG1wCisKK2VjaG8gImRlYnVnZnMgbG9hZC9kdW1wIHRlc3QiID4gJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyAibWtlMmZzIC1GcSAtYiAxMDI0IHRlc3QuaW1nIDUxMiIgPj4gJE9VVAorCiskTUtFMkZTIC1GcSAkVE1QRklMRSA1MTIgPiAvZGV2L251bGwgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitkZCBpZj0kVEVTVF9CSVRTIG9mPSRURVNUX0RBVEEgYnM9MTI4ayBjb3VudD0xIGNvbnY9c3luYyA+IC9kZXYvbnVsbCAyPiYxIAorZWNobyAiZmlsZSBmcmFnbWVudCBvZGQgc2l6ZSIgPj4gJFRFU1RfREFUQQorCitlY2hvICJkZWJ1Z2ZzIC1SICcnd3JpdGUgJFRFU1RfREFUQSB0ZXN0X2RhdGEnJyAtdyB0ZXN0LmltZyIgPiAkT1VULm5ldworJERFQlVHRlMgLVIgIndyaXRlICRURVNUX0RBVEEgdGVzdF9kYXRhIiAtdyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvIGUyZnNjayAkVkVSSUZZX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyA+ICRPVVQubmV3CiskRlNDSyAkVkVSSUZZX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIC1SICcnZHVtcCB0ZXN0X2RhdGEgJFZFUklGWV9EQVRBJycgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJkdW1wIHRlc3RfZGF0YSAkVkVSSUZZX0RBVEEiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImNtcCAkVEVTVF9EQVRBICRWRVJJRllfREFUQSIgPj4gJE9VVAorY21wICRURVNUX0RBVEEgJFZFUklGWV9EQVRBID4+JE9VVAorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworcm0gLWYgJFZFUklGWV9EQVRBICRURVNUX0RBVEEgJFRNUEZJTEUgJE9VVC5uZXcKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBWRVJJRllfRlNDS19PUFQgTkFUSVZFX0ZTQ0tfT1BUIE9VVCBFWFAgVEVTVF9EQVRBIFZFUklGWV9EQVRBCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaSAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjM5ZjhlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2gvZXhwZWN0CkBAIC0wLDAgKzEsMTc2IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgMWsgYmxvY2tzIGFuZCA0MDk2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjM0NS82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgd3JpdGUgZmlsZXMKK2RlYnVnZnM6IGV4IC9hCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK2RlYnVnZnM6IGV4IC9zYW1wbGUKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEzMjMgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDUgICAgIDAgLSAgICAgOSAgMTMxMyAtICAxMzIyICAgICAxMCBVbmluaXQKKyAxLyAxICAgMi8gIDUgICAgMTEgLSAgICAxMiAgMTMyNCAtICAxMzI1ICAgICAgMiBVbmluaXQKKyAxLyAxICAgMy8gIDUgICAgMTQgLSAgICAyNSAgMTMyNyAtICAxMzM4ICAgICAxMiBVbmluaXQKKyAxLyAxICAgNC8gIDUgICAgMjcgLSAgICAyOCAgMTM0MCAtICAxMzQxICAgICAgMiBVbmluaXQKKyAxLyAxICAgNS8gIDUgICAgMzAgLSAgICAzOSAgMTM0MyAtICAxMzUyICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9iOAorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgICAwIC0gNDI5NDk2NzI5NSAgMTM5MCAgICAgICAgICAgICAgMAorIDEvIDEgICAxLyAgNCAgICAgMCAtICAgICAwICAxMzI2IC0gIDEzMjYgICAgICAxIFVuaW5pdAorIDEvIDEgICAyLyAgNCAgICAgMSAtICAgICAxICAxMzM5IC0gIDEzMzkgICAgICAxIFVuaW5pdAorIDEvIDEgICAzLyAgNCAgICAgMiAtICAgICAyICAxMzQyIC0gIDEzNDIgICAgICAxIFVuaW5pdAorIDEvIDEgICA0LyAgNCAgICAgMyAtICAgICA3ICAxMzUzIC0gIDEzNTcgICAgICA1IFVuaW5pdAorZGVidWdmczogZXggL2I5CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxMzY4ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAxICAgICAwIC0gICAgIDggIDEzNTggLSAgMTM2NiAgICAgIDkgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjEwCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxMzc4ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAyICAgICAwIC0gICAgIDAgIDEzNjcgLSAgMTM2NyAgICAgIDEgVW5pbml0CisgMS8gMSAgIDIvICAyICAgICAxIC0gICAgIDkgIDEzNjkgLSAgMTM3NyAgICAgIDkgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjExCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxMzg5ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAxICAgICAwIC0gICAgIDkgIDEzNzkgLSAgMTM4OCAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjEyCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNDAxICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAyICAgICAwIC0gICAgIDkgIDEzOTEgLSAgMTQwMCAgICAgMTAgVW5pbml0CisgMS8gMSAgIDIvICAyICAgIDExIC0gICAgMTEgIDE0MDIgLSAgMTQwMiAgICAgIDEgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjEzCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNDEzICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAyICAgICAwIC0gICAgIDkgIDE0MDMgLSAgMTQxMiAgICAgMTAgVW5pbml0CisgMS8gMSAgIDIvICAyICAgIDExIC0gICAgMTIgIDE0MTQgLSAgMTQxNSAgICAgIDIgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjE0CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNDI2ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAyICAgICAwIC0gICAgIDkgIDE0MTYgLSAgMTQyNSAgICAgMTAgVW5pbml0CisgMS8gMSAgIDIvICAyICAgIDExIC0gICAgMTIgIDE0MjcgLSAgMTQyOCAgICAgIDIgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjE1CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNDM5ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAzICAgICAwIC0gICAgIDkgIDE0MjkgLSAgMTQzOCAgICAgMTAgVW5pbml0CisgMS8gMSAgIDIvICAzICAgIDExIC0gICAgMTIgIDE0NDAgLSAgMTQ0MSAgICAgIDIgVW5pbml0CisgMS8gMSAgIDMvICAzICAgIDE0IC0gICAgMTQgIDE0NDMgLSAgMTQ0MyAgICAgIDEgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzI0CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMjUgLSA0Mjk0OTY3Mjk1ICAxNDUzICAgICAgICAgNDI5NDk2NzI3MQorIDEvIDEgICAxLyAgMyAgICAyNSAtICAgIDI1ICAxNDY4IC0gIDE0NjggICAgICAxIFVuaW5pdAorIDEvIDEgICAyLyAgMyAgICAyNyAtICAgIDI4ICAxNDcwIC0gIDE0NzEgICAgICAyIFVuaW5pdAorIDEvIDEgICAzLyAgMyAgICAzMCAtICAgIDM5ICAxNDczIC0gIDE0ODIgICAgIDEwIFVuaW5pdAorZGVidWdmczogZXggL2MyNQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgIDI3IC0gNDI5NDk2NzI5NSAgMTQ4MyAgICAgICAgIDQyOTQ5NjcyNjkKKyAxLyAxICAgMS8gIDIgICAgMjcgLSAgICAyOCAgMTQ4NSAtICAxNDg2ICAgICAgMiBVbmluaXQKKyAxLyAxICAgMi8gIDIgICAgMzAgLSAgICAzOSAgMTQ4OCAtICAxNDk3ICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9jMjYKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAyNyAtIDQyOTQ5NjcyOTUgIDE0ODQgICAgICAgICA0Mjk0OTY3MjY5CisgMS8gMSAgIDEvICAyICAgIDI3IC0gICAgMjggIDE0OTggLSAgMTQ5OSAgICAgIDIgVW5pbml0CisgMS8gMSAgIDIvICAyICAgIDMwIC0gICAgMzkgIDE1MDEgLSAgMTUxMCAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzI3CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMjggLSA0Mjk0OTY3Mjk1ICAxNDg3ICAgICAgICAgNDI5NDk2NzI2OAorIDEvIDEgICAxLyAgMiAgICAyOCAtICAgIDI4ICAxNTEyIC0gIDE1MTIgICAgICAxIFVuaW5pdAorIDEvIDEgICAyLyAgMiAgICAzMCAtICAgIDM5ICAxNTE0IC0gIDE1MjMgICAgIDEwIFVuaW5pdAorZGVidWdmczogZXggL2MyOAorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgIDMwIC0gNDI5NDk2NzI5NSAgMTUwMCAgICAgICAgIDQyOTQ5NjcyNjYKKyAxLyAxICAgMS8gIDEgICAgMzAgLSAgICAzOSAgMTUyNiAtICAxNTM1ICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9jMjkKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAzMCAtIDQyOTQ5NjcyOTUgIDE1MTEgICAgICAgICA0Mjk0OTY3MjY2CisgMS8gMSAgIDEvICAxICAgIDMwIC0gICAgMzkgIDE1MzcgLSAgMTU0NiAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzMwCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMzEgLSA0Mjk0OTY3Mjk1ICAxNTEzICAgICAgICAgNDI5NDk2NzI2NQorIDEvIDEgICAxLyAgMSAgICAzMSAtICAgIDM5ICAxNTQ5IC0gIDE1NTcgICAgICA5IFVuaW5pdAorZGVidWdmczogZXggL2MzMQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgIDMyIC0gNDI5NDk2NzI5NSAgMTUyNCAgICAgICAgIDQyOTQ5NjcyNjQKKyAxLyAxICAgMS8gIDEgICAgMzIgLSAgICAzOSAgMTU2MCAtICAxNTY3ICAgICAgOCBVbmluaXQKK2RlYnVnZnM6IGV4IC9kCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNTI1ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAzICAgICAwIC0gICAgIDAgIDE0NDIgLSAgMTQ0MiAgICAgIDEgVW5pbml0CisgMS8gMSAgIDIvICAzICAgICAxIC0gICAgIDMgIDE0NDQgLSAgMTQ0NiAgICAgIDMgVW5pbml0CisgMS8gMSAgIDMvICAzICAgIDM2IC0gICAgMzkgIDE1NzMgLSAgMTU3NiAgICAgIDQgVW5pbml0CitkZWJ1Z2ZzOiBleCAvZQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgICAwIC0gNDI5NDk2NzI5NSAgMTU0NyAgICAgICAgICAgICAgMAorIDEvIDEgICAxLyAxMSAgICAgMCAtICAgICA1ICAxNDQ3IC0gIDE0NTIgICAgICA2IFVuaW5pdAorIDEvIDEgICAyLyAxMSAgICAgNiAtICAgICA5ICAxNDU0IC0gIDE0NTcgICAgICA0IFVuaW5pdAorIDEvIDEgICAzLyAxMSAgICAxMSAtICAgIDEyICAxNDU5IC0gIDE0NjAgICAgICAyIFVuaW5pdAorIDEvIDEgICA0LyAxMSAgICAxNCAtICAgIDE4ICAxNDYyIC0gIDE0NjYgICAgICA1IFVuaW5pdAorIDEvIDEgICA1LyAxMSAgICAyMSAtICAgIDIxICAxNDcyIC0gIDE0NzIgICAgICAxIFVuaW5pdAorIDEvIDEgICA2LyAxMSAgICAyMiAtICAgIDIyICAxNTM2IC0gIDE1MzYgICAgICAxIFVuaW5pdAorIDEvIDEgICA3LyAxMSAgICAyMyAtICAgIDIzICAxNTQ4IC0gIDE1NDggICAgICAxIFVuaW5pdAorIDEvIDEgICA4LyAxMSAgICAyNCAtICAgIDI1ICAxNTU4IC0gIDE1NTkgICAgICAyIFVuaW5pdAorIDEvIDEgICA5LyAxMSAgICAyNyAtICAgIDI4ICAxNTY5IC0gIDE1NzAgICAgICAyIFVuaW5pdAorIDEvIDEgIDEwLyAxMSAgICAzMCAtICAgIDMwICAxNTcyIC0gIDE1NzIgICAgICAxIFVuaW5pdAorIDEvIDEgIDExLyAxMSAgICAzMSAtICAgIDM5ICAxNTc3IC0gIDE1ODUgICAgICA5IFVuaW5pdAorZGVidWdmczogZXggL2YKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDAgICAxLyAgMiAgICAgMCAtICAgICAwICA5MDAwIC0gIDkwMDAgICAgICAxIFVuaW5pdAorIDAvIDAgICAyLyAgMiAgODk5OSAtICA4OTk5IDE3OTk5IC0gMTc5OTkgICAgICAxIFVuaW5pdAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxNSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDE2IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMTcgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAxOCBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDE5IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjAgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyMSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDIyIGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjMgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyNCBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDI1IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjYgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyNyBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDI4IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjkgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAzMCBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK1Bhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMSAoNzkzNCwgY291bnRlZD03OTMzKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg2MjkzOSwgY291bnRlZD02MjkzOCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDMyLzQwOTYgZmlsZXMgKDQzLjglIG5vbi1jb250aWd1b3VzKSwgMjU5OC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDYzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaC9uYW1lCkBAIC0wLDAgKzEgQEAKK3B1bmNoIHNwYXJzZSBmaWxlcyBhbmQgYmlnIGZpbGVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3N2M2OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoL3NjcmlwdApAQCAtMCwwICsxLDEyOSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2NhdCA+ICRUTVBGSUxFLmNvbmYgPDwgRU5ETAorW2ZzX3R5cGVzXQorZXh0NCA9IHsKKyAgICAgICAgYmFzZV9mZWF0dXJlcyA9IHNwYXJzZV9zdXBlcixmaWxldHlwZSxyZXNpemVfaW5vZGUsZGlyX2luZGV4LGV4dF9hdHRyLF5oYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSw2NGJpdAorICAgICAgICBibG9ja3NpemUgPSAxMDI0CisgICAgICAgIGlub2RlX3NpemUgPSAyNTYKKyAgICAgICAgaW5vZGVfcmF0aW8gPSAxNjM4NAorfQorRU5ETAorTUtFMkZTX0NPTkZJRz0kVE1QRklMRS5jb25mICRNS0UyRlMgLUYgLW8gTGludXggLWIgMTAyNCAtTyBeYmlnYWxsb2MgLVQgZXh0NCAkVE1QRklMRSA2NTUzNiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCitybSAtcmYgJFRNUEZJTEUuY29uZgorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiZGVidWdmcyB3cml0ZSBmaWxlcyIgPj4gJE9VVAorbWFrZV9maWxlKCkgeworCW5hbWU9IiQxIgorCXN0YXJ0PSIkMiIKKwlmbGFnPSIkMyIKKworCWNhdCA8PCBFTkRMCit3cml0ZSAvZGV2L251bGwgJG5hbWUKK2ZhbGxvY2F0ZSAvJG5hbWUgMCAzOQorcHVuY2ggLyRuYW1lIDEwIDEwCitwdW5jaCAvJG5hbWUgMTMgMTMKK3B1bmNoIC8kbmFtZSAyNiAyNgorcHVuY2ggLyRuYW1lIDI5IDI5CitFTkRMCit9CisKKyNGaWxlcyB3ZSBjcmVhdGU6CisjIGE6IHB1bmNoIGEgNDBrIGZpbGUKKyMgYio6IHB1bmNoIHNwYXJzZSBmaWxlIHN0YXJ0aW5nIGF0IGIqCisjIGMqOiBwdW5jaCBzcGFyZSBmaWxlIGVuZGluZyBhdCBjKgorIyBkOiBtaWRjbHVzdGVyIHRvIG1pZGNsdXN0ZXIsIHN1cnJvdW5kaW5nIHNwYXJzZQorIyBlOiBwYXJ0aWFsIG1pZGRsZSBjbHVzdGVyIGFsbG9jCisjIGY6IG9uZSBiaWcgZmlsZQorYmFzZT01MDAwCitjYXQgPiAkVE1QRklMRS5jbWQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsIGEKK2ZhbGxvY2F0ZSAvYSAwIDM5CitwdW5jaCAvYSAwIDM5CitFTkRMCitlY2hvICJleCAvYSIgPj4gJFRNUEZJTEUuY21kMgorCittYWtlX2ZpbGUgc2FtcGxlICRiYXNlIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL3NhbXBsZSIgPj4gJFRNUEZJTEUuY21kMgorYmFzZT0xMDAwMAorCitmb3IgaSBpbiA4IDkgMTAgMTEgMTIgMTMgMTQgMTU7IGRvCisJbWFrZV9maWxlIGIkaSAkKCgkYmFzZSArICg0MCAqICgkaSAtIDgpKSkpIC0tdW5pbml0ID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gInB1bmNoIC9iJGkgJGkgMzkiID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImV4IC9iJGkiID4+ICRUTVBGSUxFLmNtZDIKK2RvbmUKKworZm9yIGkgaW4gMjQgMjUgMjYgMjcgMjggMjkgMzAgMzE7IGRvCisJbWFrZV9maWxlIGMkaSAkKCgkYmFzZSArIDMyMCArICg0MCAqICgkaSAtIDI0KSkpKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJwdW5jaCAvYyRpIDAgJGkiID4+ICRUTVBGSUxFLmNtZAorCWVjaG8gImV4IC9jJGkiID4+ICRUTVBGSUxFLmNtZDIKK2RvbmUKKworbWFrZV9maWxlIGQgJCgoJGJhc2UgKyA2NDApKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gInB1bmNoIC9kIDQgMzUiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiZXggL2QiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIGUgJCgoJGJhc2UgKyA2ODApKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gInB1bmNoIC9lIDE5IDIwIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImV4IC9lIiA+PiAkVE1QRklMRS5jbWQyCisKK2NhdCA+PiAkVE1QRklMRS5jbWQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsIGYKK3NpZiAvZiBzaXplIDEwMjQKK2VvIC9mCitzZXRfYm1hcCAtLXVuaW5pdCAwIDkwMDAKK2VjCitzaWYgL2YgYmxvY2tzIDIKK3NldGIgOTAwMAorZmFsbG9jYXRlIC9mIDAgODk5OQorcHVuY2ggL2YgMSA4OTk4CitFTkRMCitlY2hvICJleCAvZiIgPj4gJFRNUEZJTEUuY21kMgorCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQyICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3ICRUTVBGSUxFLmNtZCAkVE1QRklMRS5jbWQyCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2hfYmlnYWxsb2MvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2hfYmlnYWxsb2MvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMzhjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaF9iaWdhbGxvYy9leHBlY3QKQEAgLTAsMCArMSwxNzUgQEAKKworV2FybmluZzogdGhlIGJpZ2FsbG9jIGZlYXR1cmUgaXMgc3RpbGwgdW5kZXIgZGV2ZWxvcG1lbnQKK1NlZSBodHRwczovL2V4dDQud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9CaWdhbGxvYyBmb3IgbW9yZSBpbmZvcm1hdGlvbgorCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgMWsgYmxvY2tzIGFuZCA0MDk2IGlub2RlcworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzQwOTYgZmlsZXMgKDkuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxMTQ0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBmaWxlcworZGVidWdmczogZXggL2EKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworZGVidWdmczogZXggL3NhbXBsZQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgICAwIC0gNDI5NDk2NzI5NSAgMTE4NCAgICAgICAgICAgICAgMAorIDEvIDEgICAxLyAgNSAgICAgMCAtICAgICA5ICAxMTQ0IC0gIDExNTMgICAgIDEwIFVuaW5pdAorIDEvIDEgICAyLyAgNSAgICAxMSAtICAgIDEyICAxMTU1IC0gIDExNTYgICAgICAyIFVuaW5pdAorIDEvIDEgICAzLyAgNSAgICAxNCAtICAgIDI1ICAxMTU4IC0gIDExNjkgICAgIDEyIFVuaW5pdAorIDEvIDEgICA0LyAgNSAgICAyNyAtICAgIDI4ICAxMTcxIC0gIDExNzIgICAgICAyIFVuaW5pdAorIDEvIDEgICA1LyAgNSAgICAzMCAtICAgIDM5ICAxMTc0IC0gIDExODMgICAgIDEwIFVuaW5pdAorZGVidWdmczogZXggL2I4CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxMjMyICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICAxICAgICAwIC0gICAgIDcgIDExOTIgLSAgMTE5OSAgICAgIDggVW5pbml0CitkZWJ1Z2ZzOiBleCAvYjkKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEyNDggICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDEgICAgIDAgLSAgICAgOCAgMTIwMCAtICAxMjA4ICAgICAgOSBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTAKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEyNzIgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDEgICAgIDAgLSAgICAgOSAgMTIxNiAtICAxMjI1ICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTEKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEyOTYgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDIgICAgIDAgLSAgICAgNyAgMTI0MCAtICAxMjQ3ICAgICAgOCBVbmluaXQKKyAxLyAxICAgMi8gIDIgICAgIDggLSAgICAgOSAgMTI1NiAtICAxMjU3ICAgICAgMiBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTIKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEzMjAgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDMgICAgIDAgLSAgICAgNyAgMTI2NCAtICAxMjcxICAgICAgOCBVbmluaXQKKyAxLyAxICAgMi8gIDMgICAgIDggLSAgICAgOSAgMTI4MCAtICAxMjgxICAgICAgMiBVbmluaXQKKyAxLyAxICAgMy8gIDMgICAgMTEgLSAgICAxMSAgMTI4MyAtICAxMjgzICAgICAgMSBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTMKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEzNDQgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDMgICAgIDAgLSAgICAgNyAgMTI4OCAtICAxMjk1ICAgICAgOCBVbmluaXQKKyAxLyAxICAgMi8gIDMgICAgIDggLSAgICAgOSAgMTMwNCAtICAxMzA1ICAgICAgMiBVbmluaXQKKyAxLyAxICAgMy8gIDMgICAgMTEgLSAgICAxMiAgMTMwNyAtICAxMzA4ICAgICAgMiBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTQKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEzNjggICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDMgICAgIDAgLSAgICAgNyAgMTMxMiAtICAxMzE5ICAgICAgOCBVbmluaXQKKyAxLyAxICAgMi8gIDMgICAgIDggLSAgICAgOSAgMTMyOCAtICAxMzI5ICAgICAgMiBVbmluaXQKKyAxLyAxICAgMy8gIDMgICAgMTEgLSAgICAxMiAgMTMzMSAtICAxMzMyICAgICAgMiBVbmluaXQKK2RlYnVnZnM6IGV4IC9iMTUKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDEzOTIgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDQgICAgIDAgLSAgICAgNyAgMTMzNiAtICAxMzQzICAgICAgOCBVbmluaXQKKyAxLyAxICAgMi8gIDQgICAgIDggLSAgICAgOSAgMTM1MiAtICAxMzUzICAgICAgMiBVbmluaXQKKyAxLyAxICAgMy8gIDQgICAgMTEgLSAgICAxMiAgMTM1NSAtICAxMzU2ICAgICAgMiBVbmluaXQKKyAxLyAxICAgNC8gIDQgICAgMTQgLSAgICAxNCAgMTM1OCAtICAxMzU4ICAgICAgMSBVbmluaXQKK2RlYnVnZnM6IGV4IC9jMjQKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAyNSAtIDQyOTQ5NjcyOTUgIDE0MTYgICAgICAgICA0Mjk0OTY3MjcxCisgMS8gMSAgIDEvICAzICAgIDI1IC0gICAgMjUgIDE0MDEgLSAgMTQwMSAgICAgIDEgVW5pbml0CisgMS8gMSAgIDIvICAzICAgIDI3IC0gICAgMjggIDE0MDMgLSAgMTQwNCAgICAgIDIgVW5pbml0CisgMS8gMSAgIDMvICAzICAgIDMwIC0gICAgMzkgIDE0MDYgLSAgMTQxNSAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzI1CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMjcgLSA0Mjk0OTY3Mjk1ICAxNDQwICAgICAgICAgNDI5NDk2NzI2OQorIDEvIDEgICAxLyAgMiAgICAyNyAtICAgIDI4ICAxNDI3IC0gIDE0MjggICAgICAyIFVuaW5pdAorIDEvIDEgICAyLyAgMiAgICAzMCAtICAgIDM5ICAxNDMwIC0gIDE0MzkgICAgIDEwIFVuaW5pdAorZGVidWdmczogZXggL2MyNgorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgIDI3IC0gNDI5NDk2NzI5NSAgMTQ2NCAgICAgICAgIDQyOTQ5NjcyNjkKKyAxLyAxICAgMS8gIDIgICAgMjcgLSAgICAyOCAgMTQ1MSAtICAxNDUyICAgICAgMiBVbmluaXQKKyAxLyAxICAgMi8gIDIgICAgMzAgLSAgICAzOSAgMTQ1NCAtICAxNDYzICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9jMjcKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAyOCAtIDQyOTQ5NjcyOTUgIDE0ODggICAgICAgICA0Mjk0OTY3MjY4CisgMS8gMSAgIDEvICAyICAgIDI4IC0gICAgMjggIDE0NzYgLSAgMTQ3NiAgICAgIDEgVW5pbml0CisgMS8gMSAgIDIvICAyICAgIDMwIC0gICAgMzkgIDE0NzggLSAgMTQ4NyAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzI4CitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMzAgLSA0Mjk0OTY3Mjk1ICAxNTEyICAgICAgICAgNDI5NDk2NzI2NgorIDEvIDEgICAxLyAgMSAgICAzMCAtICAgIDM5ICAxNTAyIC0gIDE1MTEgICAgIDEwIFVuaW5pdAorZGVidWdmczogZXggL2MyOQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgIDMwIC0gNDI5NDk2NzI5NSAgMTUzNiAgICAgICAgIDQyOTQ5NjcyNjYKKyAxLyAxICAgMS8gIDEgICAgMzAgLSAgICAzOSAgMTUyNiAtICAxNTM1ICAgICAxMCBVbmluaXQKK2RlYnVnZnM6IGV4IC9jMzAKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAzMSAtIDQyOTQ5NjcyOTUgIDE1NjAgICAgICAgICA0Mjk0OTY3MjY1CisgMS8gMSAgIDEvICAxICAgIDMxIC0gICAgMzkgIDE1NTEgLSAgMTU1OSAgICAgIDkgVW5pbml0CitkZWJ1Z2ZzOiBleCAvYzMxCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgMzIgLSA0Mjk0OTY3Mjk1ICAxNTg0ICAgICAgICAgNDI5NDk2NzI2NAorIDEvIDEgICAxLyAgMSAgICAzMiAtICAgIDM5ICAxNTc2IC0gIDE1ODMgICAgICA4IFVuaW5pdAorZGVidWdmczogZXggL2QKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtIDQyOTQ5NjcyOTUgIDE2MDAgICAgICAgICAgICAgIDAKKyAxLyAxICAgMS8gIDIgICAgIDAgLSAgICAgMyAgMTM2MCAtICAxMzYzICAgICAgNCBVbmluaXQKKyAxLyAxICAgMi8gIDIgICAgMzYgLSAgICAzOSAgMTU5NiAtICAxNTk5ICAgICAgNCBVbmluaXQKK2RlYnVnZnM6IGV4IC9lCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAxICAgMS8gIDEgICAgIDAgLSA0Mjk0OTY3Mjk1ICAxNjI0ICAgICAgICAgICAgICAwCisgMS8gMSAgIDEvICA4ICAgICAwIC0gICAgIDkgIDEzNzYgLSAgMTM4NSAgICAgMTAgVW5pbml0CisgMS8gMSAgIDIvICA4ICAgIDExIC0gICAgMTIgIDEzODcgLSAgMTM4OCAgICAgIDIgVW5pbml0CisgMS8gMSAgIDMvICA4ICAgIDE0IC0gICAgMTUgIDEzOTAgLSAgMTM5MSAgICAgIDIgVW5pbml0CisgMS8gMSAgIDQvICA4ICAgIDE2IC0gICAgMTggIDE1NjggLSAgMTU3MCAgICAgIDMgVW5pbml0CisgMS8gMSAgIDUvICA4ICAgIDIxIC0gICAgMjMgIDE1NzMgLSAgMTU3NSAgICAgIDMgVW5pbml0CisgMS8gMSAgIDYvICA4ICAgIDI0IC0gICAgMjUgIDE2MDggLSAgMTYwOSAgICAgIDIgVW5pbml0CisgMS8gMSAgIDcvICA4ICAgIDI3IC0gICAgMjggIDE2MTEgLSAgMTYxMiAgICAgIDIgVW5pbml0CisgMS8gMSAgIDgvICA4ICAgIDMwIC0gICAgMzkgIDE2MTQgLSAgMTYyMyAgICAgMTAgVW5pbml0CitkZWJ1Z2ZzOiBleCAvZgorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMCAgIDEvICAyICAgICAwIC0gICAgIDAgIDkwMDAgLSAgOTAwMCAgICAgIDEgVW5pbml0CisgMC8gMCAgIDIvICAyICA4OTk5IC0gIDg5OTkgMTc5OTkgLSAxNzk5OSAgICAgIDEgVW5pbml0CitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDE0IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMTUgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAxNiBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDE3IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMTggZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAxOSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDIwIGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjIgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyMyBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDI0IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjUgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyNiBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDI3IGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworSW5vZGUgMjggZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAyOSBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDMwIGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg4MDAzLCBjb3VudGVkPTgwMDIpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDY0MDI0LCBjb3VudGVkPTY0MDE2KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMzIvNDA5NiBmaWxlcyAoNDMuOCUgbm9uLWNvbnRpZ3VvdXMpLCAxNTIwLzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2hfYmlnYWxsb2MvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoX2JpZ2FsbG9jL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ2MWViZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3B1bmNoX2JpZ2FsbG9jL25hbWUKQEAgLTAsMCArMSBAQAorcHVuY2ggc3BhcnNlIGZpbGVzIGFuZCBiaWcgZmlsZXMgd2l0aCBiaWdhbGxvYwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2hfYmlnYWxsb2Mvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2RfcHVuY2hfYmlnYWxsb2Mvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYjA1NzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9wdW5jaF9iaWdhbGxvYy9zY3JpcHQKQEAgLTAsMCArMSwxMzAgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitjYXQgPiAkVE1QRklMRS5jb25mIDw8IEVOREwKK1tmc190eXBlc10KK2V4dDQgPSB7CisJY2x1c3Rlcl9zaXplID0gODE5MgorICAgICAgICBiYXNlX2ZlYXR1cmVzID0gc3BhcnNlX3N1cGVyLGZpbGV0eXBlLHJlc2l6ZV9pbm9kZSxkaXJfaW5kZXgsZXh0X2F0dHIsXmhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLDY0Yml0CisgICAgICAgIGJsb2Nrc2l6ZSA9IDEwMjQKKyAgICAgICAgaW5vZGVfc2l6ZSA9IDI1NgorICAgICAgICBpbm9kZV9yYXRpbyA9IDE2Mzg0Cit9CitFTkRMCitNS0UyRlNfQ09ORklHPSRUTVBGSUxFLmNvbmYgJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIGJpZ2FsbG9jIC1UIGV4dDQgJFRNUEZJTEUgNjU1MzYgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNvbmYKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImRlYnVnZnMgd3JpdGUgZmlsZXMiID4+ICRPVVQKK21ha2VfZmlsZSgpIHsKKwluYW1lPSIkMSIKKwlzdGFydD0iJDIiCisJZmxhZz0iJDMiCisKKwljYXQgPDwgRU5ETAord3JpdGUgL2Rldi9udWxsICRuYW1lCitmYWxsb2NhdGUgLyRuYW1lIDAgMzkKK3B1bmNoIC8kbmFtZSAxMCAxMAorcHVuY2ggLyRuYW1lIDEzIDEzCitwdW5jaCAvJG5hbWUgMjYgMjYKK3B1bmNoIC8kbmFtZSAyOSAyOQorRU5ETAorfQorCisjRmlsZXMgd2UgY3JlYXRlOgorIyBhOiBwdW5jaCBhIDQwayBmaWxlCisjIGIqOiBwdW5jaCBzcGFyc2UgZmlsZSBzdGFydGluZyBhdCBiKgorIyBjKjogcHVuY2ggc3BhcmUgZmlsZSBlbmRpbmcgYXQgYyoKKyMgZDogbWlkY2x1c3RlciB0byBtaWRjbHVzdGVyLCBzdXJyb3VuZGluZyBzcGFyc2UKKyMgZTogcGFydGlhbCBtaWRkbGUgY2x1c3RlciBhbGxvYworIyBmOiBvbmUgYmlnIGZpbGUKK2Jhc2U9NTAwMAorY2F0ID4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCBhCitmYWxsb2NhdGUgL2EgMCAzOQorcHVuY2ggL2EgMCAzOQorRU5ETAorZWNobyAiZXggL2EiID4+ICRUTVBGSUxFLmNtZDIKKworbWFrZV9maWxlIHNhbXBsZSAkYmFzZSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImV4IC9zYW1wbGUiID4+ICRUTVBGSUxFLmNtZDIKK2Jhc2U9MTAwMDAKKworZm9yIGkgaW4gOCA5IDEwIDExIDEyIDEzIDE0IDE1OyBkbworCW1ha2VfZmlsZSBiJGkgJCgoJGJhc2UgKyAoNDAgKiAoJGkgLSA4KSkpKSAtLXVuaW5pdCA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJwdW5jaCAvYiRpICRpIDM5IiA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJleCAvYiRpIiA+PiAkVE1QRklMRS5jbWQyCitkb25lCisKK2ZvciBpIGluIDI0IDI1IDI2IDI3IDI4IDI5IDMwIDMxOyBkbworCW1ha2VfZmlsZSBjJGkgJCgoJGJhc2UgKyAzMjAgKyAoNDAgKiAoJGkgLSAyNCkpKSkgLS11bmluaXQgPj4gJFRNUEZJTEUuY21kCisJZWNobyAicHVuY2ggL2MkaSAwICRpIiA+PiAkVE1QRklMRS5jbWQKKwllY2hvICJleCAvYyRpIiA+PiAkVE1QRklMRS5jbWQyCitkb25lCisKK21ha2VfZmlsZSBkICQoKCRiYXNlICsgNjQwKSkgLS11bmluaXQgPj4gJFRNUEZJTEUuY21kCitlY2hvICJwdW5jaCAvZCA0IDM1IiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImV4IC9kIiA+PiAkVE1QRklMRS5jbWQyCisKK21ha2VfZmlsZSBlICQoKCRiYXNlICsgNjgwKSkgLS11bmluaXQgPj4gJFRNUEZJTEUuY21kCitlY2hvICJwdW5jaCAvZSAxOSAyMCIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJleCAvZSIgPj4gJFRNUEZJTEUuY21kMgorCitjYXQgPj4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3dyaXRlIC9kZXYvbnVsbCBmCitzaWYgL2Ygc2l6ZSAxMDI0CitlbyAvZgorc2V0X2JtYXAgLS11bmluaXQgMCA5MDAwCitlYworc2lmIC9mIGJsb2NrcyAxNgorc2V0YiA5MDAwCitmYWxsb2NhdGUgL2YgMCA4OTk5CitwdW5jaCAvZiAxIDg5OTgKK0VOREwKK2VjaG8gImV4IC9mIiA+PiAkVE1QRklMRS5jbWQyCisKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZDIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcgJFRNUEZJTEUuY21kICRUTVBGSUxFLmNtZDIKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF9zcGVjaWFsX2ZpbGVzL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9kX3NwZWNpYWxfZmlsZXMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MjliMGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF9zcGVjaWFsX2ZpbGVzL2V4cGVjdApAQCAtMCwwICsxLDg1IEBACitkZWJ1Z2ZzIGNyZWF0ZSBzcGVjaWFsIGZpbGVzCitta2UyZnMgLUZxIC1iIDEwMjQgdGVzdC5pbWcgNTEyCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIC1SICcnc3RhdCBmb28nJyAtdyB0ZXN0LmltZworSW5vZGU6IDEyICAgVHlwZTogc3ltbGluayAgICBNb2RlOiAgMDc3NyAgIEZsYWdzOiAweDAKK0dlbmVyYXRpb246IDAgICAgVmVyc2lvbjogMHgwMDAwMDAwMAorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiAzCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorY3RpbWU6IDB4NTBmNTYwZTAgLS0gVHVlIEphbiAxNSAxNDowMDowMCAyMDEzCithdGltZTogMHg1MGY1NjBlMCAtLSBUdWUgSmFuIDE1IDE0OjAwOjAwIDIwMTMKK210aW1lOiAweDUwZjU2MGUwIC0tIFR1ZSBKYW4gMTUgMTQ6MDA6MDAgMjAxMworRmFzdCBsaW5rIGRlc3Q6ICJiYXIiCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIC1SICcnc3RhdCBmb28yJycgLXcgdGVzdC5pbWcKK0lub2RlOiAxMyAgIFR5cGU6IHN5bWxpbmsgICAgTW9kZTogIDA3NzcgICBGbGFnczogMHgwCitHZW5lcmF0aW9uOiAwICAgIFZlcnNpb246IDB4MDAwMDAwMDAKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgU2l6ZTogODAKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMgorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitjdGltZTogMHg1MGY1NjBlMCAtLSBUdWUgSmFuIDE1IDE0OjAwOjAwIDIwMTMKK2F0aW1lOiAweDUwZjU2MGUwIC0tIFR1ZSBKYW4gMTUgMTQ6MDA6MDAgMjAxMworbXRpbWU6IDB4NTBmNTYwZTAgLS0gVHVlIEphbiAxNSAxNDowMDowMCAyMDEzCitCTE9DS1M6CisoMCk6MjgKK1RPVEFMOiAxCisKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgLVIgJydibG9ja19kdW1wIDI4JycgLXcgdGVzdC5pbWcKKzAwMDAgIDMxMzIgMzMzNCAzNTM2IDM3MzggMzkzMCAzMTMyIDMzMzQgMzUzNiAgMTIzNDU2Nzg5MDEyMzQ1NgorMDAyMCAgMzczOCAzOTMwIDMxMzIgMzMzNCAzNTM2IDM3MzggMzkzMCAzMTMyICA3ODkwMTIzNDU2Nzg5MDEyCiswMDQwICAzMzM0IDM1MzYgMzczOCAzOTMwIDMxMzIgMzMzNCAzNTM2IDM3MzggIDM0NTY3ODkwMTIzNDU2NzgKKzAwNjAgIDM5MzAgMzEzMiAzMzM0IDM1MzYgMzczOCAzOTMwIDMxMzIgMzMzNCAgOTAxMjM0NTY3ODkwMTIzNAorMDEwMCAgMzUzNiAzNzM4IDM5MzAgMzEzMiAzMzM0IDM1MzYgMzczOCAzOTMwICA1Njc4OTAxMjM0NTY3ODkwCiswMTIwICAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgMDAwMCAwMDAwIDAwMDAgIC4uLi4uLi4uLi4uLi4uLi4KKyoKKworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyAtUiAnJ3N0YXQgcGlwZScnIC13IHRlc3QuaW1nCitJbm9kZTogMTQgICBUeXBlOiBGSUZPICAgIE1vZGU6ICAwMDAwICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMCAgICBWZXJzaW9uOiAweDAwMDAwMDAwCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDAKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitjdGltZTogMHg1MGY1NjBlMCAtLSBUdWUgSmFuIDE1IDE0OjAwOjAwIDIwMTMKK2F0aW1lOiAweDUwZjU2MGUwIC0tIFR1ZSBKYW4gMTUgMTQ6MDA6MDAgMjAxMworbXRpbWU6IDB4NTBmNTYwZTAgLS0gVHVlIEphbiAxNSAxNDowMDowMCAyMDEzCitCTE9DS1M6CisKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgLVIgJydzdGF0IHNkYScnIC13IHRlc3QuaW1nCitJbm9kZTogMTUgICBUeXBlOiBibG9jayBzcGVjaWFsICAgIE1vZGU6ICAwMDAwICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMCAgICBWZXJzaW9uOiAweDAwMDAwMDAwCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDAKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitjdGltZTogMHg1MGY1NjBlMCAtLSBUdWUgSmFuIDE1IDE0OjAwOjAwIDIwMTMKK2F0aW1lOiAweDUwZjU2MGUwIC0tIFR1ZSBKYW4gMTUgMTQ6MDA6MDAgMjAxMworbXRpbWU6IDB4NTBmNTYwZTAgLS0gVHVlIEphbiAxNSAxNDowMDowMCAyMDEzCitEZXZpY2UgbWFqb3IvbWlub3IgbnVtYmVyOiAwODowMCAoaGV4IDA4OjAwKQorRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyAtUiAnJ3N0YXQgbnVsbCcnIC13IHRlc3QuaW1nCitJbm9kZTogMTYgICBUeXBlOiBjaGFyYWN0ZXIgc3BlY2lhbCAgICBNb2RlOiAgMDAwMCAgIEZsYWdzOiAweDAKK0dlbmVyYXRpb246IDAgICAgVmVyc2lvbjogMHgwMDAwMDAwMAorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiAwCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorY3RpbWU6IDB4NTBmNTYwZTAgLS0gVHVlIEphbiAxNSAxNDowMDowMCAyMDEzCithdGltZTogMHg1MGY1NjBlMCAtLSBUdWUgSmFuIDE1IDE0OjAwOjAwIDIwMTMKK210aW1lOiAweDUwZjU2MGUwIC0tIFR1ZSBKYW4gMTUgMTQ6MDA6MDAgMjAxMworRGV2aWNlIG1ham9yL21pbm9yIG51bWJlcjogMDE6MDMgKGhleCAwMTowMykKK0V4aXQgc3RhdHVzIGlzIDAKK2UyZnNjayAteWYgLU4gdGVzdF9maWxlc3lzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi82NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI5LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX3NwZWNpYWxfZmlsZXMvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9kX3NwZWNpYWxfZmlsZXMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQxMGQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Rfc3BlY2lhbF9maWxlcy9uYW1lCkBAIC0wLDAgKzEgQEAKK2NyZWF0ZSBzcGVjaWFsIGZpbGVzIGluIGRlYnVnZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX3NwZWNpYWxfZmlsZXMvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Rfc3BlY2lhbF9maWxlcy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJkZmY1ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3NwZWNpYWxfZmlsZXMvc2NyaXB0CkBAIC0wLDAgKzEsOTQgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK1ZFUklGWV9GU0NLX09QVD0teWYKKworVEVTVF9EQVRBPSR0ZXN0X25hbWUudG1wCitWRVJJRllfREFUQT0kdGVzdF9uYW1lLnZlci50bXAKKworZWNobyAiZGVidWdmcyBjcmVhdGUgc3BlY2lhbCBmaWxlcyIgPiAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvICJta2UyZnMgLUZxIC1iIDEwMjQgdGVzdC5pbWcgNTEyIiA+PiAkT1VUCisKKyRNS0UyRlMgLUZxICRUTVBGSUxFIDUxMiA+IC9kZXYvbnVsbCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyRERUJVR0ZTIC13ICRUTVBGSUxFIDw8IEVPRiA+IC9kZXYvbnVsbCAyPiYxCitzZXRfY3VycmVudF90aW1lIDIwMTMwMTE1MTQwMDAwCitzZXRfc3VwZXJfdmFsdWUgbGFzdGNoZWNrIDAKK3NldF9zdXBlcl92YWx1ZSBoYXNoX3NlZWQgbnVsbAorc2V0X3N1cGVyX3ZhbHVlIG1rZnNfdGltZSAwCitzeW1saW5rIGZvbyBiYXIKK3N5bWxpbmsgZm9vMiAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MAorbWtub2QgcGlwZSBwCitta25vZCBzZGEgYiA4IDAKK21rbm9kIG51bGwgYyAxIDMKK0VPRgorCitlY2hvICJkZWJ1Z2ZzIC1SICcnc3RhdCBmb28nJyAtdyB0ZXN0LmltZyIgPiAkT1VULm5ldworJERFQlVHRlMgLVIgInN0YXQgZm9vIiAtdyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIC1SICcnc3RhdCBmb28yJycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJzdGF0IGZvbzIiIC13ICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgLVIgJydibG9ja19kdW1wIDI4JycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJibG9ja19kdW1wIDI4IiAtdyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIC1SICcnc3RhdCBwaXBlJycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJzdGF0IHBpcGUiIC13ICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgLVIgJydzdGF0IHNkYScnIC13IHRlc3QuaW1nIiA+ICRPVVQubmV3CiskREVCVUdGUyAtUiAic3RhdCBzZGEiIC13ICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgLVIgJydzdGF0IG51bGwnJyAtdyB0ZXN0LmltZyIgPiAkT1VULm5ldworJERFQlVHRlMgLVIgInN0YXQgbnVsbCIgLXcgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworZWNobyBlMmZzY2sgJFZFUklGWV9GU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgPiAkT1VULm5ldworJEZTQ0sgJFZFUklGWV9GU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3JtIC1mICRUTVBGSUxFICRPVVQubmV3CitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgVkVSSUZZX0ZTQ0tfT1BUIE5BVElWRV9GU0NLX09QVCBPVVQgRVhQIFRFU1RfREFUQSBWRVJJRllfREFUQQorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkgCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRiNTQxNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3hhdHRyX2VkaXRzL2V4cGVjdApAQCAtMCwwICsxLDUwIEBACitkZWJ1Z2ZzIGVkaXQgZXh0ZW5kZWQgYXR0cmlidXRlcworbWtlMmZzIC1GcSAtYiAxMDI0IHRlc3QuaW1nIDUxMgorRXhpdCBzdGF0dXMgaXMgMAorZWFfc2V0IC8gdXNlci5qb2Ugc21pdGgKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3NldCAvIHVzZXIubW9vIEZFRV9GSUVfRk9FX0ZVTU1NTU1NCitFeGl0IHN0YXR1cyBpcyAwCitlYV9saXN0IC8KK0V4dGVuZGVkIGF0dHJpYnV0ZXM6CisgIHVzZXIuam9lID0gInNtaXRoIiAoNSkKKyAgdXNlci5tb28gPSAiRkVFX0ZJRV9GT0VfRlVNTU1NTU0iICgyMCkKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX2dldCAvIHVzZXIubW9vCitGRUVfRklFX0ZPRV9GVU1NTU1NTQorRXhpdCBzdGF0dXMgaXMgMAorZWFfZ2V0IC8gbm9zdWNoZWEKK2VhX2dldDogRXh0ZW5kZWQgYXR0cmlidXRlIGtleSBub3QgZm91bmQgd2hpbGUgZ2V0dGluZyBleHRlbmRlZCBhdHRyaWJ1dGUKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3JtIC8gdXNlci5tb28KK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3JtIC8gbm9zdWNoZWEKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX2xpc3QgLworRXh0ZW5kZWQgYXR0cmlidXRlczoKKyAgdXNlci5qb2UgPSAic21pdGgiICg1KQorRXhpdCBzdGF0dXMgaXMgMAorZWFfZ2V0IC8gdXNlci5tb28KK2VhX2dldDogRXh0ZW5kZWQgYXR0cmlidXRlIGtleSBub3QgZm91bmQgd2hpbGUgZ2V0dGluZyBleHRlbmRlZCBhdHRyaWJ1dGUKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3JtIC8gdXNlci5qb2UKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX2xpc3QgLworRXhpdCBzdGF0dXMgaXMgMAorZWFfc2V0IC1mIGRfeGF0dHJfZWRpdHMudG1wIC8gdXNlci5maWxlX2Jhc2VkX3hhdHRyCitFeGl0IHN0YXR1cyBpcyAwCitlYV9saXN0IC8KK0V4dGVuZGVkIGF0dHJpYnV0ZXM6CisgIHVzZXIuZmlsZV9iYXNlZF94YXR0ciA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2N1wwMTIiICgxMDgpCitFeGl0IHN0YXR1cyBpcyAwCitlYV9nZXQgLWYgZF94YXR0cl9lZGl0cy52ZXIudG1wIC8gdXNlci5maWxlX2Jhc2VkX3hhdHRyCitFeGl0IHN0YXR1cyBpcyAwCitDb21wYXJlIGJpZyBhdHRyaWJ1dGUKK2UyZnNjayAteWYgLU4gdGVzdF9maWxlc3lzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS82NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI5LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9kX3hhdHRyX2VkaXRzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzQyOGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9uYW1lCkBAIC0wLDAgKzEgQEAKK2VkaXQgZXh0ZW5kZWQgYXR0cmlidXRlcyBpbiBkZWJ1Z2ZzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9lZGl0cy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUzNTZlOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3hhdHRyX2VkaXRzL3NjcmlwdApAQCAtMCwwICsxLDEzNSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorVkVSSUZZX0ZTQ0tfT1BUPS15ZgorCitURVNUX0RBVEE9JHRlc3RfbmFtZS50bXAKK1ZFUklGWV9EQVRBPSR0ZXN0X25hbWUudmVyLnRtcAorCitlY2hvICJkZWJ1Z2ZzIGVkaXQgZXh0ZW5kZWQgYXR0cmlidXRlcyIgPiAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvICJta2UyZnMgLUZxIC1iIDEwMjQgdGVzdC5pbWcgNTEyIiA+PiAkT1VUCisKKyRNS0UyRlMgLUZxICRUTVBGSUxFIDUxMiA+IC9kZXYvbnVsbCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK2VjaG8gImVhX3NldCAvIHVzZXIuam9lIHNtaXRoIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfc2V0IC8gdXNlci5qb2Ugc21pdGgiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX3NldCAvIHVzZXIubW9vIEZFRV9GSUVfRk9FX0ZVTU1NTU1NIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfc2V0IC8gdXNlci5tb28gRkVFX0ZJRV9GT0VfRlVNTU1NTU0iICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX2xpc3QgLyIgPiAkT1VULm5ldworJERFQlVHRlMgLXcgLVIgImVhX2xpc3QgLyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworZWNobyAiZWFfZ2V0IC8gdXNlci5tb28iID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9nZXQgLyB1c2VyLm1vbyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworZWNobyAiZWFfZ2V0IC8gbm9zdWNoZWEiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9nZXQgLyBub3N1Y2hlYSIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworZWNobyAiZWFfcm0gLyB1c2VyLm1vbyIgPiAkT1VULm5ldworJERFQlVHRlMgLXcgLVIgImVhX3JtIC8gdXNlci5tb28iICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX3JtIC8gbm9zdWNoZWEiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9ybSAvIG5vc3VjaGVhIiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJlYV9saXN0IC8iID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9saXN0IC8iICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX2dldCAvIHVzZXIubW9vIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfZ2V0IC8gdXNlci5tb28iICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX3JtIC8gdXNlci5qb2UiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9ybSAvIHVzZXIuam9lIiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJlYV9saXN0IC8iID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9saXN0IC8iICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3IiA+ICRURVNUX0RBVEEKK2VjaG8gImVhX3NldCAtZiAkVEVTVF9EQVRBIC8gdXNlci5maWxlX2Jhc2VkX3hhdHRyIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfc2V0IC1mICRURVNUX0RBVEEgLyB1c2VyLmZpbGVfYmFzZWRfeGF0dHIiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX2xpc3QgLyIgPiAkT1VULm5ldworJERFQlVHRlMgLXcgLVIgImVhX2xpc3QgLyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworZWNobyAiZWFfZ2V0IC1mICRWRVJJRllfREFUQSAvIHVzZXIuZmlsZV9iYXNlZF94YXR0ciIgPiAkT1VULm5ldworJERFQlVHRlMgLXcgLVIgImVhX2dldCAtZiAkVkVSSUZZX0RBVEEgLyB1c2VyLmZpbGVfYmFzZWRfeGF0dHIiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gIkNvbXBhcmUgYmlnIGF0dHJpYnV0ZSIgPiAkT1VULm5ldworZGlmZiAtdSAkVEVTVF9EQVRBICRWRVJJRllfREFUQSA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvIGUyZnNjayAkVkVSSUZZX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyA+ICRPVVQubmV3CiskRlNDSyAkVkVSSUZZX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworcm0gLWYgJFRNUEZJTEUgJE9VVC5uZXcKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBWRVJJRllfRlNDS19PUFQgTkFUSVZFX0ZTQ0tfT1BUIE9VVCBFWFAgVEVTVF9EQVRBIFZFUklGWV9EQVRBCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9zb3J0aW5nL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGE2ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9leHBlY3QKQEAgLTAsMCArMSwyOSBAQAorZGVidWdmcyBzb3J0IGV4dGVuZGVkIGF0dHJpYnV0ZXMKK21rZTJmcyAtRnEgLWIgMTAyNCB0ZXN0LmltZyA1MTIKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3NldCAtZiAvdG1wL2IgLyBzZWN1cml0eS5TTUVHNjQKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3NldCAtZiAvdG1wL2IgLyBzZWN1cml0eS5pbWIKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX3NldCAvIHVzZXIubW9vIGNvdworRXhpdCBzdGF0dXMgaXMgMAorZWFfbGlzdCAvCitFeHRlbmRlZCBhdHRyaWJ1dGVzOgorICB1c2VyLm1vbyA9ICJjb3ciICgzKQorICBzZWN1cml0eS5pbWIgPSAieHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIgKDI1NikKKyAgc2VjdXJpdHkuU01FRzY0ID0gInh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiICgyNTYpCitFeGl0IHN0YXR1cyBpcyAwCitlYV9nZXQgLyBzZWN1cml0eS5pbWIKK3h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgKK0V4aXQgc3RhdHVzIGlzIDAKK2VhX2dldCAvIG5vc3VjaGVhCitlYV9nZXQ6IEV4dGVuZGVkIGF0dHJpYnV0ZSBrZXkgbm90IGZvdW5kIHdoaWxlIGdldHRpbmcgZXh0ZW5kZWQgYXR0cmlidXRlCitFeGl0IHN0YXR1cyBpcyAwCitlMmZzY2sgLXlmIC1OIHRlc3RfZmlsZXN5cworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9zb3J0aW5nL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9zb3J0aW5nL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGRlODkyNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kX3hhdHRyX3NvcnRpbmcvbmFtZQpAQCAtMCwwICsxIEBACitzb3J0IGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gZGVidWdmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZF94YXR0cl9zb3J0aW5nL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDU2MDJlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2RfeGF0dHJfc29ydGluZy9zY3JpcHQKQEAgLTAsMCArMSw4OSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorVkVSSUZZX0ZTQ0tfT1BUPS15ZgorCitURVNUX0RBVEE9JHRlc3RfbmFtZS50bXAKK1ZFUklGWV9EQVRBPSR0ZXN0X25hbWUudmVyLnRtcAorCitlY2hvICJkZWJ1Z2ZzIHNvcnQgZXh0ZW5kZWQgYXR0cmlidXRlcyIgPiAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvICJta2UyZnMgLUZxIC1iIDEwMjQgdGVzdC5pbWcgNTEyIiA+PiAkT1VUCisKKyRNS0UyRlMgLUZxICRUTVBGSUxFIDUxMiA+IC9kZXYvbnVsbCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK0I9JChta3RlbXAgJHtUTVBESVI6LS90bXB9L2IuWFhYWFhYKQorCitwZXJsIC1lICdwcmludCAieCIgeCAyNTY7JyA+ICRCCisKK2VjaG8gImVhX3NldCAtZiAvdG1wL2IgLyBzZWN1cml0eS5TTUVHNjQiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9zZXQgLWYgJEIgLyBzZWN1cml0eS5TTUVHNjQiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX3NldCAtZiAvdG1wL2IgLyBzZWN1cml0eS5pbWIiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9zZXQgLWYgJEIgLyBzZWN1cml0eS5pbWIiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX3NldCAvIHVzZXIubW9vIGNvdyIgPiAkT1VULm5ldworJERFQlVHRlMgLXcgLVIgImVhX3NldCAvIHVzZXIubW9vIGNvdyIgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworcm0gLWYgJEIKK3Vuc2V0IEIKKworZWNobyAiZWFfbGlzdCAvIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfbGlzdCAvIiAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCitlY2hvICJlYV9nZXQgLyBzZWN1cml0eS5pbWIiID4gJE9VVC5uZXcKKyRERUJVR0ZTIC13IC1SICJlYV9nZXQgLyBzZWN1cml0eS5pbWIiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gImVhX2dldCAvIG5vc3VjaGVhIiA+ICRPVVQubmV3CiskREVCVUdGUyAtdyAtUiAiZWFfZ2V0IC8gbm9zdWNoZWEiICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKK2VjaG8gZTJmc2NrICRWRVJJRllfRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzID4gJE9VVC5uZXcKKyRGU0NLICRWRVJJRllfRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKKyMKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorIworCitybSAtZiAkVE1QRklMRSAkT1VULm5ldworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IFZFUklGWV9GU0NLX09QVCBOQVRJVkVfRlNDS19PUFQgT1VUIEVYUCBURVNUX0RBVEEgVkVSSUZZX0RBVEEKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZGVmYXVsdHMvZV9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZGVmYXVsdHMvZV9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM5Y2ZiNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kZWZhdWx0cy9lX3NjcmlwdApAQCAtMCwwICsxLDQ3IEBACisjCisjIERlZmF1bHQgc2NyaXB0IGZvciB0ZXN0aW5nIHRoZSByZWxvY2F0aW9uIGxpYnJhcnkgcm91dGluZXMgCisjIChpcmVsIC0tIGlub2RlIHJlbG9jYXRpb24gYW5kIGJyZWwgLS0gYmxvY2sgcmVsb2NhdGlvbikKKyMKKworaWYgWyAtZiAkdGVzdF9kaXIvc2V0dXAgXTsgdGhlbgorCS4gJHRlc3RfZGlyL3NldHVwCitmaQorCitpZiBbICIkY2xhc3MieCA9IHggXTsgdGhlbgorCWNsYXNzPWBlY2hvICR0ZXN0X25hbWUgfCBzZWQgLWUgJ3MvZV9cKFteX10qXClfXCguKlwpL1wxLydgCisJaW5zdGFuY2U9YGVjaG8gJHRlc3RfbmFtZSB8IHNlZCAtZSAncy9lX1woW15fXSpcKV9cKC4qXCkvXDIvJ2AKK2ZpCitpZiBbICIkT1VUInggPSB4IF07IHRoZW4KKwlPVVQ9JHRlc3RfbmFtZS5sb2cKK2ZpCitpZiBbICIkRVhQRUNUInggPSB4IF07IHRoZW4KKwlFWFBFQ1Q9JFNSQ0RJUi9wcm9ncy90ZXN0X2RhdGEvZXhwZWN0LiRjbGFzcworZmkKKworaWYgWyAiJGNsYXNzIiA9IGlyZWwgXTsgdGhlbgorCVRFU1RfUFJPRz0kVEVTVF9SRUwKK2VsaWYgWyAiJGNsYXNzIiA9IGJyZWwgXTsgdGhlbgorCVRFU1RfUFJPRz0kVEVTVF9SRUwKK2VsaWYgWyAiJGNsYXNzIiA9IGljb3VudCBdOyB0aGVuCisJVEVTVF9QUk9HPSRURVNUX0lDT1VOVAorZWxzZQorCVRFU1RfUFJPRz0vYmluL2NhdAorZmkKKworY2F0ICRTUkNESVIvcHJvZ3MvdGVzdF9kYXRhLyRpbnN0YW5jZS5zZXR1cCAkU1JDRElSL3Byb2dzL3Rlc3RfZGF0YS90ZXN0LiRjbGFzcyBcCisgICAgfCAkVEVTVF9QUk9HIC1mIC0gMj4mMSB8IHRyIC1kIFxcMDE1ID4gJE9VVCAKKworY21wIC1zICRFWFBFQ1QgJE9VVAorc3RhdHVzPSQ/CisKK3JtIC1mICR0ZXN0X25hbWUuZmFpbGVkICR0ZXN0X25hbWUub2sKKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisgICAgZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorICAgIHRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKyAgICBlY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorICAgIGRpZmYgJERJRkZfT1BUUyAkRVhQRUNUICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgRVhQRUNUIE9VVCBjbGFzcyBpbnN0YW5jZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2RlZmF1bHRzL2Zfc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2RlZmF1bHRzL2Zfc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhM2IzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZGVmYXVsdHMvZl9zY3JpcHQKQEAgLTAsMCArMSBAQAorLiAkY21kX2Rpci9ydW5fZTJmc2NrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZGVmYXVsdHMval9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZGVmYXVsdHMval9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EzYjM0ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9kZWZhdWx0cy9qX3NjcmlwdApAQCAtMCwwICsxIEBACisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9lX2JyZWxfYm1hL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZV9icmVsX2JtYS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NDU1ODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZV9icmVsX2JtYS9uYW1lCkBAIC0wLDAgKzEgQEAKK2Jsb2NrIHJlbG9jYXRpb24gdGFibGUgdXNpbmcgdGhlIG1lbW9yeSBhcnJheSBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2VfYnJlbF9ibWEvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2VfYnJlbF9ibWEvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzN2UyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZV9icmVsX2JtYS9zY3JpcHQKQEAgLTAsMCArMSBAQAorZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZV9pY291bnRfbm9ybWFsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZV9pY291bnRfbm9ybWFsL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMxNzg3NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9lX2ljb3VudF9ub3JtYWwvbmFtZQpAQCAtMCwwICsxIEBACitpbm9kZSBjb3VudGluZyBzdHJ1Y3R1cmUgb3B0aW1pemVkIGZvciBsb3cgY291bnRzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZV9pY291bnRfb3B0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZV9pY291bnRfb3B0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2YjFhNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9lX2ljb3VudF9vcHQvbmFtZQpAQCAtMCwwICsxIEBACitpbm9kZSBjb3VudGluZyBhYnN0cmFjdGlvbiBvcHRpbWl6ZWQgZm9yIGNvdW50aW5nCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZV9pcmVsX2ltYS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2VfaXJlbF9pbWEvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWZkNzJlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2VfaXJlbF9pbWEvbmFtZQpAQCAtMCwwICsxIEBACitpbm9kZSByZWxvY2F0aW9uIHRhYmxlIHVzaW5nIHRoZSBtZW1vcnkgYXJyYXkgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9lX2lyZWxfaW1hL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9lX2lyZWxfaW1hL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzdlMmZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2VfaXJlbF9pbWEvc2NyaXB0CkBAIC0wLDAgKzEgQEAKK2VjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfMTYzODRfYmxvY2svZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl8xNjM4NF9ibG9jay9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWE1NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfMTYzODRfYmxvY2svZXhwZWN0LjEKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMzkvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mXzE2Mzg0X2Jsb2NrL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfMTYzODRfYmxvY2svZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhNTY1OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mXzE2Mzg0X2Jsb2NrL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM5LzEwMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl8xNjM4NF9ibG9jay9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mXzE2Mzg0X2Jsb2NrL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZjMxMWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl8xNjM4NF9ibG9jay9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl8xNjM4NF9ibG9jay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfMTYzODRfYmxvY2svbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWIzMTEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfMTYzODRfYmxvY2svbmFtZQpAQCAtMCwwICsxIEBACisxNjM4NCBieXRlIGJsb2Nrc2l6ZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfODE5Ml9ibG9jay9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mXzgxOTJfYmxvY2svZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVhNTY1OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mXzgxOTJfYmxvY2svZXhwZWN0LjEKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMzkvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mXzgxOTJfYmxvY2svZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl84MTkyX2Jsb2NrL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YTU2NTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl84MTkyX2Jsb2NrL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM5LzEwMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl84MTkyX2Jsb2NrL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfODE5Ml9ibG9jay9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWYzMTFiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfODE5Ml9ibG9jay9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl84MTkyX2Jsb2NrL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl84MTkyX2Jsb2NrL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkOGRjYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mXzgxOTJfYmxvY2svbmFtZQpAQCAtMCwwICsxIEBACis4MTkyIGJ5dGUgYmxvY2tzaXplCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYmJpdG1hcC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9iYml0bWFwL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYWQxYmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYmJpdG1hcC9leHBlY3QuMQpAQCAtMCwwICsxLDE1IEBACitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMCBjaGVja3N1bSBpcyAweDQ5ZmYsIHNob3VsZCBiZSAweDQ5NzIuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDgtLTEwKSAtKDEyLS0xNykgLSgxOS0tMzEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9iYml0bWFwL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JiaXRtYXAvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDExZTY1NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9iYml0bWFwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JiaXRtYXAvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYmJpdG1hcC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDg4ZWNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JiaXRtYXAvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JiaXRtYXAvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9iYml0bWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIzZGRjYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9iYml0bWFwL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdCBibG9jayBiaXRtYXAgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYm1hcF9jc3VtL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JtYXBfY3N1bS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYThmNzdmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JtYXBfY3N1bS9leHBlY3QuMQpAQCAtMCwwICsxLDE2IEBACitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMCBjaGVja3N1bSBpcyAweDQ5NzIsIHNob3VsZCBiZSAweDcwNzQuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6IEdyb3VwIDAgaW5vZGUgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLgorRklYRUQuCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6IEdyb3VwIDAgYmxvY2sgYml0bWFwIGRvZXMgbm90IG1hdGNoIGNoZWNrc3VtLgorRklYRUQuCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9ibWFwX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYm1hcF9jc3VtL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMWU2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYm1hcF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JtYXBfY3N1bS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9ibWFwX2NzdW0vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBhMGQxOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9ibWFwX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JtYXBfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2JtYXBfY3N1bS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMTlmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfYm1hcF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGJsb2NrL2lub2RlIGJpdG1hcCBjc3VtIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2Rpc2Nvbm5lY3RlZF9pbm9kZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9kaXNjb25uZWN0ZWRfaW5vZGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVlYTdiZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9kaXNjb25uZWN0ZWRfaW5vZGUvZXhwZWN0LjEKQEAgLTAsMCArMSw0MyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxIGhhcyBFWFRFTlRTX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBleHRlbnRzIHN1cHBvcnQuCitDbGVhcj8geWVzCisKK0lub2RlIDE0IGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBpbmxpbmUgZGF0YSBzdXBwb3J0LgorQ2xlYXI/IHllcworCitJbm9kZSAxNSBoYXMgSU5MSU5FX0RBVEFfRkwgZmxhZyBvbiBmaWxlc3lzdGVtIHdpdGhvdXQgaW5saW5lIGRhdGEgc3VwcG9ydC4KK0NsZWFyPyB5ZXMKKworSW5vZGUgMTYgaGFzIElOTElORV9EQVRBX0ZMIGZsYWcgb24gZmlsZXN5c3RlbSB3aXRob3V0IGlubGluZSBkYXRhIHN1cHBvcnQuCitDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDIgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworaV9maWxlX2FjbCBmb3IgaW5vZGUgMTMgKC4uLikgaXMgNDIxODc5ODIyNSwgc2hvdWxkIGJlIHplcm8uCitDbGVhcj8geWVzCisKK0lub2RlIDEzICguLi4pIGhhcyBpbnZhbGlkIG1vZGUgKDAxMTcwMDMpLgorQ2xlYXI/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oOS0tMTkpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc5LCBjb3VudGVkPTkxKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3OSwgY291bnRlZD05MSkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDMsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgOS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZGlzY29ubmVjdGVkX2lub2RlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2Rpc2Nvbm5lY3RlZF9pbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGZlYjcwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2Rpc2Nvbm5lY3RlZF9pbm9kZS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgOS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZGlzY29ubmVjdGVkX2lub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2Rpc2Nvbm5lY3RlZF9pbm9kZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjJiM2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2Rpc2Nvbm5lY3RlZF9pbm9kZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZGlzY29ubmVjdGVkX2lub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZGlzY29ubmVjdGVkX2lub2RlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5ZWRmMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9kaXNjb25uZWN0ZWRfaW5vZGUvbmFtZQpAQCAtMCwwICsxIEBACitEaXNjb25uZWN0ZWQgaW5vZGUgd2l0aCBiYWQgZmllbGRzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZ2R0X2NzdW0vZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZ2R0X2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE0Yzg5NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9nZHRfY3N1bS9leHBlY3QuMQpAQCAtMCwwICsxLDEwIEBACitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMCBjaGVja3N1bSBpcyAweGZmZmYsIHNob3VsZCBiZSAweDQ5NzIuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9nZHRfY3N1bS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9nZHRfY3N1bS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTFlNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2dkdF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2dkdF9jc3VtL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2dkdF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzZmRhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZ2R0X2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2dkdF9jc3VtL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfZ2R0X2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTJjNjAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2dkdF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGdyb3VwIGRlc2NyaXB0b3IgY3N1bSAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2liaXRtYXAvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWExNzUyMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTUgQEAKK09uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgRml4PyB5ZXMKKworR3JvdXAgZGVzY3JpcHRvciAwIGNoZWNrc3VtIGlzIDB4ZmZmZiwgc2hvdWxkIGJlIDB4NDk3Mi4gIEZJWEVELgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMTItLTMyKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaWJpdG1hcC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMWU2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaWJpdG1hcC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2liaXRtYXAvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E1MjM5OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pYml0bWFwL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaWJpdG1hcC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZWMxMmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaWJpdG1hcC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHQgaW5vZGUgYml0bWFwIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaW5vZGVfY3N1bS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2M2MjhkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vZXhwZWN0LjEKQEAgLTAsMCArMSwxMjYgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMzMgaGFzIGEgZXh0cmEgc2l6ZSAoNjU1MzUpIHdoaWNoIGlzIGludmFsaWQKK0ZpeD8geWVzCisKK0lub2RlIDQ5IHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIEZpeD8geWVzCisKK0lub2RlIDY1IHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIEZpeD8geWVzCisKK0lub2RlIDgxIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIEZpeD8geWVzCisKK0lub2RlIDk3IHNlZW1zIHRvIGNvbnRhaW4gZ2FyYmFnZS4gIENsZWFyPyB5ZXMKKworSW5vZGUgOTggc2VlbXMgdG8gY29udGFpbiBnYXJiYWdlLiAgQ2xlYXI/IHllcworCitJbm9kZSA5OSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwMCBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwMSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwMiBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwMyBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwNCBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwNSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwNiBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwNyBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwOCBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDEwOSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDExMCBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDExMSBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK0lub2RlIDExMiBzZWVtcyB0byBjb250YWluIGdhcmJhZ2UuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSA0OSAoLzM4KSBpcyBpbnZhbGlkICg0Mjk0OTY3Mjk1KS4KK0NsZWFyPyB5ZXMKKworRW50cnkgJzg2JyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgOTcuICBDbGVhcj8geWVzCisKK0VudHJ5ICc4NycgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDk4LiAgQ2xlYXI/IHllcworCitFbnRyeSAnODgnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSA5OS4gIENsZWFyPyB5ZXMKKworRW50cnkgJzg5JyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTAwLiAgQ2xlYXI/IHllcworCitFbnRyeSAnOTAnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMDEuICBDbGVhcj8geWVzCisKK0VudHJ5ICc5MScgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDEwMi4gIENsZWFyPyB5ZXMKKworRW50cnkgJzkyJyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTAzLiAgQ2xlYXI/IHllcworCitFbnRyeSAnOTMnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMDQuICBDbGVhcj8geWVzCisKK0VudHJ5ICc5NCcgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDEwNS4gIENsZWFyPyB5ZXMKKworRW50cnkgJzk1JyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTA2LiAgQ2xlYXI/IHllcworCitFbnRyeSAnOTYnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMDcuICBDbGVhcj8geWVzCisKK0VudHJ5ICc5NycgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDEwOC4gIENsZWFyPyB5ZXMKKworRW50cnkgJzk4JyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTA5LiAgQ2xlYXI/IHllcworCitFbnRyeSAnOTknIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTAuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDAnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTEuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDEnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTIuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDInIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTMuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDMnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTQuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDQnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTUuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDUnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTYuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDYnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTcuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDcnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTguICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDgnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMTkuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMDknIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjAuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTAnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjEuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTEnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjIuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTInIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjMuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTMnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjQuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTQnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjUuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTUnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjYuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTYnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjcuICBDbGVhcj8geWVzCisKK0VudHJ5ICcxMTcnIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMjguICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oOTctLTEyOCkKK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMCwgY291bnRlZD0zMikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMCwgY291bnRlZD0zMikuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDk2LzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pbm9kZV9jc3VtL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk3YTkwMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pbm9kZV9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogOTYvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfaW5vZGVfY3N1bS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjE5MjBiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2lub2RlX2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pbm9kZV9jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhiZjdjZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9pbm9kZV9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAoraW5vZGUgdGFibGUgY29ycnVwdGlvbiAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9sb2NhbF9qbmwvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfbG9jYWxfam5sL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwMTQwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfbG9jYWxfam5sL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTQgQEAKK0ZvdW5kIGludmFsaWQgVjIgam91cm5hbCBzdXBlcmJsb2NrIGZpZWxkcyAoZnJvbSBWMSBqb3VybmFsKS4KK0NsZWFyaW5nIGZpZWxkcyBiZXlvbmQgdGhlIFYxIGpvdXJuYWwgc3VwZXJibG9jay4uLgorCitCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEwODAvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9sb2NhbF9qbmwvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfbG9jYWxfam5sL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMmRjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfbG9jYWxfam5sL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjU2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTA4MC84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2xvY2FsX2pubC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9sb2NhbF9qbmwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRkZDU4YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZF9sb2NhbF9qbmwvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2xvY2FsX2pubC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkX2xvY2FsX2pubC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiNzcyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRfbG9jYWxfam5sL25hbWUKQEAgLTAsMCArMSBAQAordGVzdCBmb3IgY29ycnVwdCBsb2NhbCBqb3VybmFsIChiYWQgVjEtPlYyIGpvdXJuYWwgdXBncmFkZSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGJibG9ja3MvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRiYmxvY2tzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMDdhMjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRiYmxvY2tzL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjggQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKKy4uL2UyZnNjay9lMmZzY2s6IElsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlCitUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0JhZCBibG9jayBpbm9kZSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIENsZWFyPyB5ZXMKKworSWxsZWdhbCBibG9jayAjMSAoMTAxKSBpbiBiYWQgYmxvY2sgaW5vZGUuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMiAoMTAzKSBpbiBiYWQgYmxvY2sgaW5vZGUuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMyAoMjM0NTIzKSBpbiBiYWQgYmxvY2sgaW5vZGUuICBDTEVBUkVELgorSWxsZWdhbCBpbmRpcmVjdCBibG9jayAoMjAwKSBpbiBiYWQgYmxvY2sgaW5vZGUuICBDTEVBUkVELgorUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArNTAKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzgsIGNvdW50ZWQ9NzcpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDc4LCBjb3VudGVkPTc3KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRiYmxvY2tzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkYmJsb2Nrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGEyMTdkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkYmJsb2Nrcy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkYmJsb2Nrcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGJibG9ja3MvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUzOWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGJibG9ja3MvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkYmJsb2Nrcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkYmJsb2Nrcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMjBmMzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRiYmxvY2tzL25hbWUKQEAgLTAsMCArMSBAQAoraWxsZWdhbCBibG9ja3MgaW4gYmFkIGJsb2NrIGlub2RlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGNsdXN0ZXIvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YTE2NDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL2V4cGVjdApAQCAtMCwwICsxLDE5OCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBsb2dpY2FsIGJsb2NrIDIgKHBoeXNpY2FsIGJsb2NrIDExNTQpIHZpb2xhdGVzIGNsdXN0ZXIgYWxsb2NhdGlvbiBydWxlcy4KK1dpbGwgZml4IGluIHBhc3MgMUIuCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgMzIsIHNob3VsZCBiZSA2NC4gIEZpeD8geWVzCisKK0lub2RlIDE2IGxvZ2ljYWwgYmxvY2sgNSAocGh5c2ljYWwgYmxvY2sgMTE3MykgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLgorV2lsbCBmaXggaW4gcGFzcyAxQi4KK0lub2RlIDE2LCBpX3NpemUgaXMgMzA3Miwgc2hvdWxkIGJlIDYxNDQuICBGaXg/IHllcworCitJbm9kZSAxNiwgaV9ibG9ja3MgaXMgMzIsIHNob3VsZCBiZSA2NC4gIEZpeD8geWVzCisKK0lub2RlIDE3IGxvZ2ljYWwgYmxvY2sgMCAocGh5c2ljYWwgYmxvY2sgMTE4NikgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLgorV2lsbCBmaXggaW4gcGFzcyAxQi4KK0lub2RlIDE3IGxvZ2ljYWwgYmxvY2sgMiAocGh5c2ljYWwgYmxvY2sgMTE4NCkgdmlvbGF0ZXMgY2x1c3RlciBhbGxvY2F0aW9uIHJ1bGVzLgorV2lsbCBmaXggaW4gcGFzcyAxQi4KK0lub2RlIDE3LCBpX2Jsb2NrcyBpcyAzMiwgc2hvdWxkIGJlIDY0LiAgRml4PyB5ZXMKKworSW5vZGUgMTggbG9naWNhbCBibG9jayAzIChwaHlzaWNhbCBibG9jayAxMjAxKSB2aW9sYXRlcyBjbHVzdGVyIGFsbG9jYXRpb24gcnVsZXMuCitXaWxsIGZpeCBpbiBwYXNzIDFCLgorSW5vZGUgMTgsIGlfYmxvY2tzIGlzIDMyLCBzaG91bGQgYmUgNjQuICBGaXg/IHllcworCitJbm9kZSAxNSBvbiBiaWdhbGxvYyBmaWxlc3lzdGVtIGNhbm5vdCBiZSBibG9jayBtYXBwZWQuICBGaXg/IHllcworCisKK1J1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uCitQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMjogMTE1NAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMzogMTE1Mi0tMTE1NAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNDogMTY0OC0tMTY1MAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNTogMTY1MAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNjogMTE3MworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNzogMTE4NiAxMTg1IDExODQKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTg6IDEyMDEKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgNyBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgL2EgKGlub2RlICMxMiwgbW9kIHRpbWUgVHVlIEp1biAxNyAwODowMDo1MCAyMDE0KSAKKyAgaGFzIDEgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCS9iIChpbm9kZSAjMTMsIG1vZCB0aW1lIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNCkKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvYiAoaW5vZGUgIzEzLCBtb2QgdGltZSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJL2EgKGlub2RlICMxMiwgbW9kIHRpbWUgVHVlIEp1biAxNyAwODowMDo1MCAyMDE0KQorTXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4KKworRmlsZSAvYyAoaW5vZGUgIzE0LCBtb2QgdGltZSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJL2QgKGlub2RlICMxNSwgbW9kIHRpbWUgVHVlIEp1biAxNyAwODowMDo1MCAyMDE0KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9kIChpbm9kZSAjMTUsIG1vZCB0aW1lIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNCkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvYyAoaW5vZGUgIzE0LCBtb2QgdGltZSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitGaWxlIC9lIChpbm9kZSAjMTYsIG1vZCB0aW1lIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNCkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDAgZmlsZShzKToKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvZiAoaW5vZGUgIzE3LCBtb2QgdGltZSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAwIGZpbGUocyk6CitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL2cgKGlub2RlICMxOCwgbW9kIHRpbWUgVHVlIEp1biAxNyAwODowMDo1MCAyMDE0KSAKKyAgaGFzIDEgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMCBmaWxlKHMpOgorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDUxLCBjb3VudGVkPTQ4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg4MTYsIGNvdW50ZWQ9NzY4KS4KK0ZpeD8geWVzCisKKwordGVzdF9mczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZzOiAxOC8xMjggZmlsZXMgKDIyLjIlIG5vbi1jb250aWd1b3VzKSwgMTI4MC8yMDQ4IGJsb2NrcworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgNjQsIHNob3VsZCBiZSAzMi4gIEZpeD8geWVzCisKK0lub2RlIDE2LCBpX2Jsb2NrcyBpcyA2NCwgc2hvdWxkIGJlIDMyLiAgRml4PyB5ZXMKKworSW5vZGUgMTcsIGlfYmxvY2tzIGlzIDY0LCBzaG91bGQgYmUgMzIuICBGaXg/IHllcworCitJbm9kZSAxOCwgaV9ibG9ja3MgaXMgNjQsIHNob3VsZCBiZSAzMi4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgxMTY4LS0xMjAwKQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0OCwgY291bnRlZD01MSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzY4LCBjb3VudGVkPTgxNikuCitGaXg/IHllcworCisKK3Rlc3RfZnM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9mczogMTgvMTI4IGZpbGVzICg1LjYlIG5vbi1jb250aWd1b3VzKSwgMTIzMi8yMDQ4IGJsb2NrcworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZnM6IDE4LzEyOCBmaWxlcyAoNS42JSBub24tY29udGlndW91cyksIDEyMzIvMjA0OCBibG9ja3MKK2RlYnVnZnM6IHN0YXQgL2EKK0lub2RlOiAxMiAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NDQgICBGbGFnczogMHg4MDAwMAorR2VuZXJhdGlvbjogMTExNzE1MjE1NyAgICBWZXJzaW9uOiAweDAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDMwNzIKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMzIKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorY3RpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CithdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK210aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorRVhURU5UUzoKKygwLTEpOjExMzYtMTEzNywgKDIpOjExMzgKK2RlYnVnZnM6IHN0YXQgL2IKK0lub2RlOiAxMyAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NDQgICBGbGFnczogMHg4MDAwMAorR2VuZXJhdGlvbjogMTExNzE1MjE1OCAgICBWZXJzaW9uOiAweDAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDMwNzIKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMzIKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorY3RpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CithdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK210aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorRVhURU5UUzoKKygwLTIpOjExNTItMTE1NAorZGVidWdmczogc3RhdCAvYworSW5vZGU6IDE0ICAgVHlwZTogcmVndWxhciAgICBNb2RlOiAgMDY0NCAgIEZsYWdzOiAweDgwMDAwCitHZW5lcmF0aW9uOiAxMTE3MTUyMTU5ICAgIFZlcnNpb246IDB4MDAwMDAwMDEKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgU2l6ZTogMzA3MgorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAzMgorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitjdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK2F0aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorbXRpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CitFWFRFTlRTOgorKDAtMSk6MTIxNi0xMjE3LCAoMik6MTIxOAorZGVidWdmczogc3RhdCAvZAorSW5vZGU6IDE1ICAgVHlwZTogcmVndWxhciAgICBNb2RlOiAgMDY0NCAgIEZsYWdzOiAweDgwMDAwCitHZW5lcmF0aW9uOiAxMTE3MTUyMTYwICAgIFZlcnNpb246IDB4MDAwMDAwMDEKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgU2l6ZTogMzA3MgorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2N0aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorYXRpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CittdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK0VYVEVOVFM6CitkZWJ1Z2ZzOiBzdGF0IC9lCitJbm9kZTogMTYgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4ODAwMDAKK0dlbmVyYXRpb246IDExMTcxNTIxNjEgICAgVmVyc2lvbjogMHgwMDAwMDAwMQorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiA2MTQ0CitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDMyCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2N0aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorYXRpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CittdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK0VYVEVOVFM6CisoMC0yKToxNjY0LTE2NjYsICg1KToxNjY5CitkZWJ1Z2ZzOiBzdGF0IC9mCitJbm9kZTogMTcgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4ODAwMDAKK0dlbmVyYXRpb246IDExMTcxNTIxNjIgICAgVmVyc2lvbjogMHgwMDAwMDAwMQorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiAzMDcyCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDMyCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2N0aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorYXRpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CittdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK0VYVEVOVFM6CisoMCk6MTIzMiwgKDEpOjEyMzMsICgyKToxMjM0CitkZWJ1Z2ZzOiBzdGF0IC9nCitJbm9kZTogMTggICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4ODAwMDAKK0dlbmVyYXRpb246IDExMTcxNTIxNjMgICAgVmVyc2lvbjogMHgwMDAwMDAwMQorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBTaXplOiAzMDcyCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDMyCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2N0aW1lOiAweDUzOWZmNWIyIC0tIFR1ZSBKdW4gMTcgMDg6MDA6NTAgMjAxNAorYXRpbWU6IDB4NTM5ZmY1YjIgLS0gVHVlIEp1biAxNyAwODowMDo1MCAyMDE0CittdGltZTogMHg1MzlmZjViMiAtLSBUdWUgSnVuIDE3IDA4OjAwOjUwIDIwMTQKK0VYVEVOVFM6CisoMC0yKToxNjgwLTE2ODIsICgzKToxNjgzCitkZWJ1Z2ZzOiBxdWl0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkY2x1c3Rlci9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjIxZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkY2x1c3Rlci9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY2ZjgxYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGNsdXN0ZXIvbmFtZQpAQCAtMCwwICsxLDIgQEAKK3Rlc3QgYWxpZ25tZW50IHByb2JsZW1zIHdpdGggYmlnYWxsb2MgY2x1c3RlcnMKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkY2x1c3Rlci9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRjbHVzdGVyL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTllNDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkY2x1c3Rlci9zY3JpcHQKQEAgLTAsMCArMSwyNyBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwlJTUFHRT0kdGVzdF9kaXIvLi4vZl9iYWRjbHVzdGVyL2ltYWdlLmd6CisJT1VUPSR0ZXN0X25hbWUubG9nCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKKwlnemlwIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKwkkRlNDSyAtZnkgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVAorCSRGU0NLIC1meSAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorCSRGU0NLIC1meSAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorCWZvciBpIGluIGEgYiBjIGQgZSBmIGc7IGRvIGVjaG8gInN0YXQgLyRpIjsgZG9uZSA+ICRUTVBGSUxFLnRtcAorCWVjaG8gInF1aXQiID4+ICRUTVBGSUxFLnRtcAorCSRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS50bXAgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKKwlybSAtZiAkVE1QRklMRS50bXAKKworCWNtcCAtcyAkT1VUICRFWFAKKwlzdGF0dXM9JD8KKworCWlmIFsgIiRzdGF0dXMiID0gMCBdOyB0aGVuCisJCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwkJdG91Y2ggJHRlc3RfbmFtZS5vaworCWVsc2UKKwkJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwkJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJCXJtIC1mICR0ZXN0X25hbWUudG1wCisJZmkKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRpci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRpci9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjQ2YTYwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTQgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIsIGlfc2l6ZSBpcyAxODIsIHNob3VsZCBiZSAxMDI0LiAgRml4PyB5ZXMKKworSW5vZGUgMTMgaXMgYSB6ZXJvLWxlbmd0aCBkaXJlY3RvcnkuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJ3plcm8nIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxMy4gIENsZWFyPyB5ZXMKKworRW50cnkgJ2Zvby9iYXInIGluIC8gKDIpIGhhcyBpbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaXRzIG5hbWUuCitGaXg/IHllcworCitFbnRyeSAncm9vdCcgaW4gL3Rlc3QgKDE0KSBpcyBhIGxpbmsgdG8gdGhlIHJvb3QgaW5vZGUuCitDbGVhcj8geWVzCisKK0VudHJ5ICdiYWRpbm8nIGluIC90ZXN0ICgxNCkgaGFzIGludmFsaWQgaW5vZGUgIzogMTIzNDU2LgorQ2xlYXI/IHllcworCitFbnRyeSAnZG90JyBpbiAvdGVzdCAoMTQpIGlzIGEgbGluayB0byAnLicgIENsZWFyPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMCwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTIuCitGaXg/IHllcworCitNaXNzaW5nICcuLicgaW4gZGlyZWN0b3J5IGlub2RlIDEyLgorRml4PyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisnLi4nIGluIC9ibG9jay5oICgxMikgaXMgPFRoZSBOVUxMIGlub2RlPiAoMCksIHNob3VsZCBiZSAvICgyKS4KK0ZpeD8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDEsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjIKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NCwgY291bnRlZD03NSkuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMTMKK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNSwgY291bnRlZD00KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg0OGVmZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRpci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE0LzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjUvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNTkzZmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODIyMjIxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdGVkIGRpcmVjdG9yeSBlbnRyaWVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyMi9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzZlZDMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyMi9leHBlY3QuMQpAQCAtMCwwICsxLDEyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMCwgb2Zmc2V0IDYwOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRpcjIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NWJiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyMi9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDlmY2RmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZGlyMi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkaXIyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY4YTdjOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRpcjIvbmFtZQpAQCAtMCwwICsxIEBACitzYWx2YWdlIGxhc3QgZGlyZWN0b3J5IGVudHJ5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0YWE5NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRvdGRpci9leHBlY3QuMQpAQCAtMCwwICsxLDU5IEBACitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorTWlzc2luZyAnLicgaW4gZGlyZWN0b3J5IGlub2RlIDEyLgorRml4PyB5ZXMKKworTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAxMi4KK0ZpeD8geWVzCisKK0ZpcnN0IGVudHJ5ICdYJyAoaW5vZGU9MTEpIGluIGRpcmVjdG9yeSBpbm9kZSAxMyAoL2IpIHNob3VsZCBiZSAnLicKK0ZpeD8geWVzCisKK01pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTQuCitGaXg/IHllcworCitTZWNvbmQgZW50cnkgJ1hYJyAoaW5vZGU9MTEpIGluIGRpcmVjdG9yeSBpbm9kZSAxNSBzaG91bGQgYmUgJy4uJworRml4PyB5ZXMKKworJy4nIGRpcmVjdG9yeSBlbnRyeSBpbiBkaXJlY3RvcnkgaW5vZGUgMTcgaXMgbm90IE5VTEwgdGVybWluYXRlZAorRml4PyB5ZXMKKworJy4uJyBkaXJlY3RvcnkgZW50cnkgaW4gZGlyZWN0b3J5IGlub2RlIDE3IGlzIG5vdCBOVUxMIHRlcm1pbmF0ZWQKK0ZpeD8geWVzCisKK01pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAxNi4KK0ZpeD8geWVzCisKK01pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTYuCitGaXg/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKycuLicgaW4gL2EgKDEyKSBpcyA8VGhlIE5VTEwgaW5vZGU+ICgwKSwgc2hvdWxkIGJlIC8gKDIpLgorRml4PyB5ZXMKKworJy4uJyBpbiAvYyAoMTQpIGlzIDxUaGUgTlVMTCBpbm9kZT4gKDApLCBzaG91bGQgYmUgLyAoMikuCitGaXg/IHllcworCisnLi4nIGluIC9kICgxNSkgaXMgPFRoZSBOVUxMIGlub2RlPiAoMCksIHNob3VsZCBiZSAvICgyKS4KK0ZpeD8geWVzCisKKycuLicgaW4gL2UgKDE2KSBpcyA8VGhlIE5VTEwgaW5vZGU+ICgwKSwgc2hvdWxkIGJlIC8gKDIpLgorRml4PyB5ZXMKKworJy4uJyBpbiAvZiAoMTcpIGlzIDxUaGUgTlVMTCBpbm9kZT4gKDApLCBzaG91bGQgYmUgLyAoMikuCitGaXg/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3MCwgY291bnRlZD03MSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzAsIGNvdW50ZWQ9NzEpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOC8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI5LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRvdGRpci9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRvdGRpci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjM1MjNjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkZG90ZGlyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTgvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyOS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVkOTBjNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRvdGRpci9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGRvdGRpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxM2JhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRkb3RkaXIvbmFtZQpAQCAtMCwwICsxIEBACitiYWQgJy4nIGFuZCAnLi4nIGVudHJpZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGlub2RlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkaW5vZGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNhYTJjYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGlub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDAgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitJbm9kZSAxMiAoL21vdGQpIGhhcyBpbnZhbGlkIG1vZGUgKDAxMTA0NDQpLgorQ2xlYXI/IHllcworCitpX2ZpbGVfYWNsIGZvciBpbm9kZSAxMyAoL3RpbWluZ3MpIGlzIDM5LCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworaV9ibG9ja3NfaGkgZm9yIGlub2RlIDEzICgvdGltaW5ncykgaXMgMTAyNCwgc2hvdWxkIGJlIHplcm8uCitDbGVhcj8geWVzCisKK0lub2RlIDE0ICgvYmxvY2tfZGV2KSBpcyBhbiBpbGxlZ2FsIGJsb2NrIGRldmljZS4KK0NsZWFyPyB5ZXMKKworSW5vZGUgMTUgKC9jaGFyX2RldikgaXMgYW4gaWxsZWdhbCBjaGFyYWN0ZXIgZGV2aWNlLgorQ2xlYXI/IHllcworCitTeW1saW5rIC90ZXN0LXN5bWxpbmsgKGlub2RlICMxNikgaXMgaW52YWxpZC4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTI1CitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc2LCBjb3VudGVkPTc3KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NiwgY291bnRlZD03NykuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkaW5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRpbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjhhMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkaW5vZGUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGlub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkaW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0YTBkMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGlub2RlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGlub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRpbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZWUyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRpbm9kZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHRlZCBpbm9kZSBlbnRyaWVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyX2luZGJsa3MvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyX2luZGJsa3MvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4MDU0YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJfaW5kYmxrcy9leHBlY3QuMQpAQCAtMCwwICsxLDMyIEBACitTdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlIDgpLgorQ2xlYXI/IHllcworCisqKiogam91cm5hbCBoYXMgYmVlbiBkZWxldGVkICoqKgorCitBZGRpbmcgZGlyaGFzaCBoaW50IHRvIGZpbGVzeXN0ZW0uCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSm91cm5hbCBpbm9kZSBpcyBub3QgaW4gdXNlLCBidXQgY29udGFpbnMgZGF0YS4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDgyLS0xMTExKQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3MDgwLCBjb3VudGVkPTgxMTApLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDcwODAsIGNvdW50ZWQ9ODExMCkuCitGaXg/IHllcworCitSZWNyZWF0ZSBqb3VybmFsPyB5ZXMKKworQ3JlYXRpbmcgam91cm5hbCAoMTAyNCBibG9ja3MpOiAgRG9uZS4KKworKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDExMTEvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJfaW5kYmxrcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJfaW5kYmxrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmJiOGIzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjU2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTExMS84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL2ltYWdlIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL2ltYWdlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYmQxZDcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyX2luZGJsa3MvaW1hZ2UKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MTkwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyX2luZGJsa3MvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyX2luZGJsa3MvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzRiOTlhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cl9pbmRibGtzL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdGlvbiBpbiBqb3VybmFsIGlub2RlJ3MgaW5kaXJlY3QgYmxvY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJibGtzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ODNhMGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9leHBlY3QuMQpAQCAtMCwwICsxLDMwIEBACitTdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlIDgpLgorQ2xlYXI/IHllcworCisqKiogam91cm5hbCBoYXMgYmVlbiBkZWxldGVkICoqKgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0pvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSg1MC0tMTA3OSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzExMiwgY291bnRlZD04MTQyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3MTEyLCBjb3VudGVkPTgxNDIpLgorRml4PyB5ZXMKKworUmVjcmVhdGUgam91cm5hbD8geWVzCisKK0NyZWF0aW5nIGpvdXJuYWwgKDEwMjQgYmxvY2tzKTogIERvbmUuCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8yNTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMDc5LzgxOTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJibGtzL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNTA3MDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEwNzkvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJibGtzL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkam91cmJsa3MvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMzNmE0YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJibGtzL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZGpvdXJibGtzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwM2ZhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRqb3VyYmxrcy9uYW1lCkBAIC0wLDAgKzEgQEAKK0lsbGVnYWwgYmxvY2tzIGluIGpvdXJuYWwgaW5vZGUgKGFuZCBiYWNrdXAgaW4gc3VwZXJibG9jaykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2YwYmY3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkb3JwaGFuL2V4cGVjdC4xCkBAIC0wLDAgKzEsNzcgQEAKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDU0ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00NDYxMCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDMyICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA2NyAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNTUgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0JhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgRml4PyB5ZXMKKworSW5vZGUgMTMgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDE3IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitEZWxldGVkIGlub2RlIDE4IGhhcyB6ZXJvIGR0aW1lLiAgRml4PyB5ZXMKKworSW5vZGUgMTkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDIyIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSAyMyB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgMjQgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDI1IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSAyNiB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgMjcgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDI4IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSAzMCB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgMzMgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDM2IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSAzOCB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgNDMgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDQ0IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA0NiB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgNDcgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDUxIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA1MyB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgNTYgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDYxIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA2NSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgNzAgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDcxIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA3NSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgNzcgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDgzIHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA4NCB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgODUgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDg3IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA5MSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgOTMgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDk2IHdhcyBwYXJ0IG9mIHRoZSBvcnBoYW5lZCBpbm9kZSBsaXN0LiAgRklYRUQuCitJbm9kZSA5NyB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorSW5vZGUgOTkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDEwOSB3YXMgcGFydCBvZiB0aGUgb3JwaGFuZWQgaW5vZGUgbGlzdC4gIEZJWEVELgorUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDEzNjMtLTEzOTkpIC0oMTQwMS0tMTQwNSkgLTE0NjEgLSgxNTA1LS0xNTMzKSAtKDE1MzgtLTE1NDApIC0oMTU2Ni0tMTU3NCkgLSgxNTkzLS0xNjAwKSAtKDE2MDQtLTE2MDUpIC0xNjU0IC0oMTY1Ni0tMTcwMykgLSgxNzA2LS0xNzI2KSAtMTcyOCAtKDE4MDMtLTE4MDQpIC0xOTEzIC0oMjI4Ni0tMjI5NSkgLTIzOTIgLSgyOTYwLS0yOTczKSAtKDMxMTgtLTMxNTQpIC0zMzQ1IC0oMzQ1MS0tMzQ1MikgLTM1NjkgLSgzNzQ4LS0zNzQ5KSAtNDQwOSAtKDQ0MTEtLTQ0MTQpIC0oNDQzNS0tNDQ1NikgLSg0NzIwLS00NzI1KSAtNDkyOSAtKDQ5NjctLTQ5ODQpIC0oNTI1OC0tNTI3NSkgLSg1MzUyLS01MzU0KSAtKDU0MTItLTU0MjUpIC01NDkzIC0oNTYyMC0tNTY0NykgLSg1Njc2LS01Njc3KSAtKDU3MjAtLTU3NDQpIC0oNTc2MC0tNTc4OCkgLTYwMTMKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNTgwMSwgY291bnRlZD02MjEwKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg1ODAxLCBjb3VudGVkPTYyMTApLgorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTEzIC0oMTctLTE5KSAtKDIyLS0yOCkgLTMwIC0zMyAtMzYgLTM4IC0oNDMtLTQ0KSAtKDQ2LS00NykgLTUxIC01MyAtNTYgLTYxIC02NSAtKDcwLS03MSkgLTc1IC03NyAtKDgzLS04NSkgLTg3IC05MSAtOTMgLSg5Ni0tOTcpIC05OSAtMTA5CitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDE5NTEsIGNvdW50ZWQ9MTk4OSkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQxLCBjb3VudGVkPTIyKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxOTUxLCBjb3VudGVkPTE5ODkpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiA1OS8yMDQ4IGZpbGVzICgyMi4wJSBub24tY29udGlndW91cyksIDE5ODIvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDkyOGViCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkb3JwaGFuL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogNTkvMjA0OCBmaWxlcyAoMjIuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOTgyLzgxOTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRvcnBoYW4vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRvcnBoYW4vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRlM2EzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRvcnBoYW4vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZG9ycGhhbi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMTQ3NWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRvcnBoYW4vbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0ZWQgb3JwaGFuIGxpc3QKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHByaW1hcnkvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRwcmltYXJ5L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYjgxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRwcmltYXJ5L2V4cGVjdC4xCkBAIC0wLDAgKzEsMjcgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworVGhlIHByaW1hcnkgc3VwZXJibG9jayAoMSkgaXMgb24gdGhlIGJhZCBibG9jayBsaXN0LgorCitJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC4KK1lvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGUKK3RoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy4KKworQ2xlYXI/IHllcworCitCbG9jayAyIGluIHRoZSBwcmltYXJ5IGdyb3VwIGRlc2NyaXB0b3JzIGlzIG9uIHRoZSBiYWQgYmxvY2sgbGlzdAorCitJZiB0aGUgYmxvY2sgaXMgcmVhbGx5IGJhZCwgdGhlIGZpbGVzeXN0ZW0gY2FuIG5vdCBiZSBmaXhlZC4KK1lvdSBjYW4gcmVtb3ZlIHRoaXMgYmxvY2sgZnJvbSB0aGUgYmFkIGJsb2NrIGxpc3QgYW5kIGhvcGUKK3RoYXQgdGhlIGJsb2NrIGlzIHJlYWxseSBPSy4gIEJ1dCB0aGVyZSBhcmUgbm8gZ3VhcmFudGVlcy4KKworQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRwcmltYXJ5L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcHJpbWFyeS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODIxZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcHJpbWFyeS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcHJpbWFyeS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHByaW1hcnkvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FlYjYxMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHByaW1hcnkvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcHJpbWFyeS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcHJpbWFyeS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhY2NlMzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRwcmltYXJ5L25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGJsb2NrcyBpbiB0aGUgcHJpbWFyeSBzdXBlcmJsb2NrIGFuZCBncm91cCBkZXNjcmlwdG9ycwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHJvb3QvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkMDFlNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHJvb3QvZXhwZWN0LjEKQEAgLTAsMCArMSwyOSBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitSb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnLi4nIGluIDwyPi88MTE+ICgxMSkgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDIuICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgQWxsb2NhdGU/IHllcworCitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTEgKC4uLikKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDExIHJlZiBjb3VudCBpcyAzLCBzaG91bGQgYmUgMi4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTIKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxMiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRyb290L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWIwMjFhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjQvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHJvb3QvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI5ODBhMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHJvb3QvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkcm9vdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5OWU0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRyb290L25hbWUKQEAgLTAsMCArMSBAQAorZmlsZSBpbiByb290IGRpcmVjdG9yeSBpbm9kZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRzeW1saW5rcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjhiNTdkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvZXhwZWN0LjEKQEAgLTAsMCArMSw2MSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8vc3ltbGluaykgZmlsZSAoaW5vZGUgMTgpIGhhcyBpbW11dGFibGUKK29yIGFwcGVuZC1vbmx5IGZsYWcgc2V0LiAgQ2xlYXI/IHllcworCitJbm9kZSAxOSBoYXMgaWxsZWdhbCBibG9jayhzKS4gIENsZWFyPyB5ZXMKKworSWxsZWdhbCBibG9jayAjMCAoMTIzNDU2Nzg5MCkgaW4gaW5vZGUgMTkuICBDTEVBUkVELgorSW5vZGUgMTksIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlIDIwKSBoYXMgaW1tdXRhYmxlCitvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworSW5vZGUgMjEgaXMgdG9vIGJpZy4gIFRydW5jYXRlPyB5ZXMKKworQmxvY2sgIzEgKDIyKSBjYXVzZXMgc3ltbGluayB0byBiZSB0b28gYmlnLiAgQ0xFQVJFRC4KK0lub2RlIDIxLCBpX2Jsb2NrcyBpcyA0LCBzaG91bGQgYmUgMi4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorU3ltbGluayAvZW1wdHlfbGluayAoaW5vZGUgIzE3KSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC9sb25nX2Zhc3RsaW5rIChpbm9kZSAjMTMpIGlzIGludmFsaWQuCitDbGVhcj8geWVzCisKK1N5bWxpbmsgL2xvbmdfbGluayAoaW5vZGUgIzE0KSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC9oaWdoX2Zhc3RsaW5rIChpbm9kZSAjMTUpIGlzIGludmFsaWQuCitDbGVhcj8geWVzCisKK1N5bWxpbmsgL2hpZ2hfbGluayAoaW5vZGUgIzE2KSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC9lbXB0eV9mYXN0bGluayAoaW5vZGUgIzEyKSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC9iYWRfbGlua19ibG9jayAoaW5vZGUgIzE5KSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC9leHRyYV9saW5rX2Jsb2NrIChpbm9kZSAjMjEpIGlzIGludmFsaWQuCitDbGVhcj8geWVzCisKK1N5bWxpbmsgL2JhZF9saW5rX3NpemUgKGlub2RlICMyMikgaXMgaW52YWxpZC4KK0NsZWFyPyB5ZXMKKworU3ltbGluayAvYmFkX2Zhc3RsaW5rX3NpemUgKGlub2RlICMyMykgaXMgaW52YWxpZC4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxMDAwLCBjb3VudGVkPTEwMDEpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDEwMDAsIGNvdW50ZWQ9MTAwMSkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzMyIGZpbGVzICg3LjclIG5vbi1jb250aWd1b3VzKSwgMjMvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHN5bWxpbmtzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ5OTU1MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHN5bWxpbmtzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTMvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMy8xMDI0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWRzeW1saW5rcy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWJhY2RlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkc3ltbGlua3MvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHN5bWxpbmtzL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMwODU4ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHN5bWxpbmtzL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdGVkIHN5bWxpbmtzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWR0YWJsZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHRhYmxlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ODgxZjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWR0YWJsZS9leHBlY3QuMQpAQCAtMCwwICsxLDQ1IEBACitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0dyb3VwIDAncyBibG9jayBiaXRtYXAgKDMpIGlzIGJhZC4gIFJlbG9jYXRlPyB5ZXMKKworR3JvdXAgMCdzIGlub2RlIGJpdG1hcCAoNCkgaXMgYmFkLiAgUmVsb2NhdGU/IHllcworCitSZWxvY2F0aW5nIGdyb3VwIDAncyBibG9jayBiaXRtYXAgZnJvbSAzIHRvIDkuLi4KK1JlbG9jYXRpbmcgZ3JvdXAgMCdzIGlub2RlIGJpdG1hcCBmcm9tIDQgdG8gMTAuLi4KK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJ2xvc3QrZm91bmQnIGluIC8gKDIpIHBvaW50cyB0byBpbm9kZSAoMTEpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suCitDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAyIHJlZiBjb3VudCBpcyA0LCBzaG91bGQgYmUgMy4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgxMi0tMjApCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc3LCBjb3VudGVkPTg3KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NywgY291bnRlZD04NykuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEyLS0xNikgKygyNS0tMzIpCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDIwLCBjb3VudGVkPTcpLgorRml4PyB5ZXMKKworRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgzLCBjb3VudGVkPTIpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKDIwLCBjb3VudGVkPTcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAyNS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHRhYmxlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkdGFibGUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjNTU0YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHRhYmxlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMjUvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWR0YWJsZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JhZHRhYmxlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZGJhYzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYWR0YWJsZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYWR0YWJsZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkdGFibGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGE4YmFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmFkdGFibGUvbmFtZQpAQCAtMCwwICsxIEBACitiYWQgYmxvY2tzIGluIGJpdG1hcHMgYW5kIGlub2RlIHRhYmxlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiX2luX2JiL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNzE5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9leHBlY3QuMQpAQCAtMCwwICsxLDE3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0JhZCBibG9jayBsaXN0IHNheXMgdGhlIGJhZCBibG9jayBsaXN0IGlub2RlIGlzIGJhZC4gIENsZWFyIGlub2RlPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQ5MywgY291bnRlZD00OTQpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDQ5MywgY291bnRlZD00OTQpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiX2luX2JiL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMWU2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiX2luX2JiL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJfaW5fYmIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjNDZjMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiX2luX2JiL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiX2luX2JiL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4NzI3ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYl9pbl9iYi9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBibG9jayBpbm9kZSB0YWJsZSBibG9jayBpbiBiYWQgYmxvY2sgbGlzdApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMWEzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmZpbGUvZXhwZWN0LjEKQEAgLTAsMCArMSw0OCBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitHcm91cCAwJ3MgaW5vZGUgYml0bWFwICg0KSBpcyBiYWQuICBSZWxvY2F0ZT8geWVzCisKK1JlbG9jYXRpbmcgZ3JvdXAgMCdzIGlub2RlIGJpdG1hcCBmcm9tIDQgdG8gNDMuLi4KKworUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi4KK1Bhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDI6IDIxCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDExOiA5LS0yMAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMjogMjUtLTI2CitQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK1Bhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCisoVGhlcmUgYXJlIDMgaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKQorCitGaWxlIC8gKGlub2RlICMyLCBtb2QgdGltZSBTdW4gSmFuICAyIDA4OjI5OjEzIDE5OTQpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJPFRoZSBiYWQgYmxvY2tzIGlub2RlPiAoaW5vZGUgIzEsIG1vZCB0aW1lIFN1biBKdWwgMTcgMDA6NDc6NTggMTk5NCkKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvbG9zdCtmb3VuZCAoaW5vZGUgIzExLCBtb2QgdGltZSBTdW4gSmFuICAyIDA4OjI4OjQwIDE5OTQpIAorICBoYXMgMTIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCTxUaGUgYmFkIGJsb2NrcyBpbm9kZT4gKGlub2RlICMxLCBtb2QgdGltZSBTdW4gSnVsIDE3IDAwOjQ3OjU4IDE5OTQpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL3Rlcm1jYXAgKGlub2RlICMxMiwgbW9kIHRpbWUgU3VuIEphbiAgMiAwODoyOToxMyAxOTk0KSAKKyAgaGFzIDIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCTxUaGUgYmFkIGJsb2NrcyBpbm9kZT4gKGlub2RlICMxLCBtb2QgdGltZSBTdW4gSnVsIDE3IDAwOjQ3OjU4IDE5OTQpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKzQzCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDU3LCBjb3VudGVkPTQxKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg1NywgY291bnRlZD00MSkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTkvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNDkxZGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmZpbGUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8zMiBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDU5LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiZmlsZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiZmlsZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjAxMzgxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiZmlsZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJmaWxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg0M2ZiYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiZmlsZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBibG9ja3MgaW4gZmlsZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiaW5vZGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2N2Q2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnYTYnIGluIC8gKDIpIHBvaW50cyB0byBpbm9kZSAoMTcpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suCitDbGVhcj8geWVzCisKK0VudHJ5ICdhNycgaW4gLyAoMikgcG9pbnRzIHRvIGlub2RlICgxOCkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay4KK0NsZWFyPyB5ZXMKKworRW50cnkgJ2E4JyBpbiAvICgyKSBwb2ludHMgdG8gaW5vZGUgKDE5KSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLgorQ2xlYXI/IHllcworCitFbnRyeSAnYjEnIGluIC8gKDIpIHBvaW50cyB0byBpbm9kZSAoMjApIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suCitDbGVhcj8geWVzCisKK0VudHJ5ICdiMicgaW4gLyAoMikgcG9pbnRzIHRvIGlub2RlICgyMSkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay4KK0NsZWFyPyB5ZXMKKworRW50cnkgJ2IzJyBpbiAvICgyKSBwb2ludHMgdG8gaW5vZGUgKDIyKSBsb2NhdGVkIGluIGEgYmFkIGJsb2NrLgorQ2xlYXI/IHllcworCitFbnRyeSAnYjQnIGluIC8gKDIpIHBvaW50cyB0byBpbm9kZSAoMjMpIGxvY2F0ZWQgaW4gYSBiYWQgYmxvY2suCitDbGVhcj8geWVzCisKK0VudHJ5ICdiNScgaW4gLyAoMikgcG9pbnRzIHRvIGlub2RlICgyNCkgbG9jYXRlZCBpbiBhIGJhZCBibG9jay4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTgzCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDE5NjIsIGNvdW50ZWQ9MTk2NSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMTk2MiwgY291bnRlZD0xOTY1KS4KK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoNDEtLTQ4KQorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0ODUsIGNvdW50ZWQ9NDc3KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICg0ODUsIGNvdW50ZWQ9NDc3KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMzUvNTEyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgODMvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiaW5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NTI4OWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMzUvNTEyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgODMvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiaW5vZGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZGNmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iYmlub2RlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JiaW5vZGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JiaW5vZGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWRiM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmJpbm9kZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBibG9ja3MgaW4gaW5vZGUgdGFibGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JpZ19zcGFyc2UvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iaWdfc3BhcnNlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYzgyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iaWdfc3BhcnNlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIsIGlfc2l6ZSBpcyA2MTQ0MCwgc2hvdWxkIGJlIDQzOTgwNTA3NTg2NTYuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iaWdfc3BhcnNlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmlnX3NwYXJzZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTQ1ZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmlnX3NwYXJzZS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzY0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjcvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmlnX3NwYXJzZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JpZ19zcGFyc2UvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI3ZmVlYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JpZ19zcGFyc2UvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYmlnX3NwYXJzZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYmlnX3NwYXJzZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZDk3MjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iaWdfc3BhcnNlL25hbWUKQEAgLTAsMCArMSBAQAorYmlnIHNwYXJzZSBmaWxlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9iaXRtYXBzL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYml0bWFwcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTU5ODRkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYml0bWFwcy9leHBlY3QuMQpAQCAtMCwwICsxLDE3IEBACitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKzEyIC0yMCArNDEgLTUwCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArMTEgLTE1CitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYml0bWFwcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2JpdG1hcHMvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzNkMWMyNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JpdG1hcHMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDIyLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JpdG1hcHMvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9iaXRtYXBzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNTMzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9iaXRtYXBzL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JpdG1hcHMvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2JpdG1hcHMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA5YmZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYml0bWFwcy9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHRlZCBpbm9kZSBhbmQgYmxvY2sgYml0bWFwcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfYm91bmRzY2hlY2svZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjE3MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYm91bmRzY2hlY2svZXhwZWN0LjEKQEAgLTAsMCArMSwyNSBAQAorZXh0MmZzX2NoZWNrX2Rlc2M6IENvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSB0YWJsZQorLi4vZTJmc2NrL2UyZnNjazogR3JvdXAgZGVzY3JpcHRvcnMgbG9vayBiYWQuLi4gdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi4KKy4uL2UyZnNjay9lMmZzY2s6IEJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2sgd2hpbGUgdXNpbmcgdGhlIGJhY2t1cCBibG9ja3MuLi9lMmZzY2svZTJmc2NrOiBnb2luZyBiYWNrIHRvIG9yaWdpbmFsIHN1cGVyYmxvY2sKK05vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0CitvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5CitydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgODE5Mycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW0KK21heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQKK3RoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLgorCitJbm9kZSB0YWJsZSBmb3IgZ3JvdXAgMSBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgNDI5NDk2NzI5NSkKK1dBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuCitSZWxvY2F0ZT8geWVzCisKK09uZSBvciBtb3JlIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3IgY2hlY2tzdW1zIGFyZSBpbnZhbGlkLiAgRml4PyB5ZXMKKworR3JvdXAgZGVzY3JpcHRvciAxIGNoZWNrc3VtIGlzIDB4NmVhMiwgc2hvdWxkIGJlIDB4N2VkZC4gIEZJWEVELgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitFcnJvciBhbGxvY2F0aW5nIDI1NiBjb250aWd1b3VzIGJsb2NrKHMpIGluIGJsb2NrIGdyb3VwIDEgZm9yIGlub2RlIHRhYmxlOiBDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtCitlMmZzY2s6IGFib3J0ZWQKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKKwordGVzdF9maWxlc3lzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2JvdW5kc2NoZWNrL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYm91bmRzY2hlY2svZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIxNzBiOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JvdW5kc2NoZWNrL2V4cGVjdC4yCkBAIC0wLDAgKzEsMjUgQEAKK2V4dDJmc19jaGVja19kZXNjOiBDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUKKy4uL2UyZnNjay9lMmZzY2s6IEdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCisuLi9lMmZzY2svZTJmc2NrOiBCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIHdoaWxlIHVzaW5nIHRoZSBiYWNrdXAgYmxvY2tzLi4vZTJmc2NrL2UyZnNjazogZ29pbmcgYmFjayB0byBvcmlnaW5hbCBzdXBlcmJsb2NrCitOb3RlOiBpZiBzZXZlcmFsIGlub2RlIG9yIGJsb2NrIGJpdG1hcCBibG9ja3Mgb3IgcGFydAorb2YgdGhlIGlub2RlIHRhYmxlIHJlcXVpcmUgcmVsb2NhdGlvbiwgeW91IG1heSB3aXNoIHRvIHRyeQorcnVubmluZyBlMmZzY2sgd2l0aCB0aGUgJy1iIDgxOTMnIG9wdGlvbiBmaXJzdC4gIFRoZSBwcm9ibGVtCittYXkgbGllIG9ubHkgd2l0aCB0aGUgcHJpbWFyeSBibG9jayBncm91cCBkZXNjcmlwdG9ycywgYW5kCit0aGUgYmFja3VwIGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzIG1heSBiZSBPSy4KKworSW5vZGUgdGFibGUgZm9yIGdyb3VwIDEgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrIDQyOTQ5NjcyOTUpCitXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLgorUmVsb2NhdGU/IHllcworCitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMSBjaGVja3N1bSBpcyAweDZlYTIsIHNob3VsZCBiZSAweDdlZGQuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworRXJyb3IgYWxsb2NhdGluZyAyNTYgY29udGlndW91cyBibG9jayhzKSBpbiBibG9jayBncm91cCAxIGZvciBpbm9kZSB0YWJsZTogQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbQorZTJmc2NrOiBhYm9ydGVkCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCisKK3Rlc3RfZmlsZXN5czogKioqKioqKioqKiBXQVJOSU5HOiBGaWxlc3lzdGVtIHN0aWxsIGhhcyBlcnJvcnMgKioqKioqKioqKgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9pbWFnZS5iejIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9pbWFnZS5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4ZDAyZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JvdW5kc2NoZWNrL2ltYWdlLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYm91bmRzY2hlY2svbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTJkMjc5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfYm91bmRzY2hlY2svbmFtZQpAQCAtMCwwICsxIEBACitpbmZpbml0ZSBsb29wIGR1ZSB0byBvZmYgYnkgb25lIGVycm9yIHdoZW4gZmluZGluZyBmcmVlIHNwYWNlIGZvciBpbm9kZSB0YWJsZSByZWxvY2F0aW9uCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ib3VuZHNjaGVjay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmJiY2U2MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2JvdW5kc2NoZWNrL3NjcmlwdApAQCAtMCwwICsxLDMyIEBACisjIS9iaW4vYmFzaAorCitGU0NLX09QVD0tZnkKK0lNQUdFPSR0ZXN0X2Rpci9pbWFnZS5iejIKKworYnppcDIgLWQgPCAkSU1BR0UgPiAkVE1QRklMRQorI2UybGFiZWwgJFRNUEZJTEUgdGVzdF9maWxlc3lzCisKKyMgUnVuIGZzY2sgdG8gZml4IHRoaW5ncz8KK0VYUDE9JHRlc3RfZGlyL2V4cGVjdC4xCitPVVQxPSR0ZXN0X25hbWUuMS5sb2cKK3JtIC1yZiAkdGVzdF9uYW1lLmZhaWxlZCAkdGVzdF9uYW1lLm9rCisKKyRGU0NLICRGU0NLX09QVCAkVE1QRklMRSAyPiYxIHwgaGVhZCAtbiAxMDAwIHwgdGFpbCAtbiArMiA+ICRPVVQxCitlY2hvICJFeGl0IHN0YXR1cyBpcyAkPyIgPj4gJE9VVDEKKworIyBSdW4gYSBzZWNvbmQgdGltZQorRVhQMj0kdGVzdF9kaXIvZXhwZWN0LjIKK09VVDI9JHRlc3RfbmFtZS4yLmxvZworCiskRlNDSyAkRlNDS19PUFQgJFRNUEZJTEUgMj4mMSB8IGhlYWQgLW4gMTAwMCB8IHRhaWwgLW4gKzIgPiAkT1VUMgorZWNobyAiRXhpdCBzdGF0dXMgaXMgJD8iID4+ICRPVVQyCisKKyMgRmlndXJlIG91dCB3aGF0IGhhcHBlbmVkCitpZiBjbXAgLXMgJEVYUDEgJE9VVDEgJiYgY21wIC1zICRFWFAyICRPVVQyOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgLXUgJEVYUDEgJE9VVDEgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwlkaWZmIC11ICRFWFAyICRPVVQyID4+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xlYXJfeGF0dHIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jbGVhcl94YXR0ci9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2ZiZWFmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xlYXJfeGF0dHIvZXhwZWN0LjEKQEAgLTAsMCArMSwzOCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxNCwgaV9ibG9ja3MgaXMgMiwgc2hvdWxkIGJlIDAuICBGaXg/IHllcworCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgNCwgc2hvdWxkIGJlIDIuICBGaXg/IHllcworCitJbm9kZSAxMywgaV9ibG9ja3MgaXMgMiwgc2hvdWxkIGJlIDAuICBGaXg/IHllcworCitJbm9kZSAxNSwgaV9ibG9ja3MgaXMgNCwgc2hvdWxkIGJlIDIuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK2lfZmlsZV9hY2wgZm9yIGlub2RlIDEyICgvZGlyKSBpcyAyMiwgc2hvdWxkIGJlIHplcm8uCitDbGVhcj8geWVzCisKK2lfZmlsZV9hY2wgZm9yIGlub2RlIDEzICgvZmlsZSkgaXMgMjIsIHNob3VsZCBiZSB6ZXJvLgorQ2xlYXI/IHllcworCitpX2ZpbGVfYWNsIGZvciBpbm9kZSAxNCAoL3N5bWxpbmspIGlzIDIyLCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworaV9maWxlX2FjbCBmb3IgaW5vZGUgMTUgKC9sb25nLXN5bWxpbmspIGlzIDIzLCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgyMi0tMjMpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc2LCBjb3VudGVkPTc4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NiwgY291bnRlZD03OCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE1LzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xlYXJfeGF0dHIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jbGVhcl94YXR0ci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDZkMjY3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xlYXJfeGF0dHIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIyLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NsZWFyX3hhdHRyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xlYXJfeGF0dHIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlhY2ExNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NsZWFyX3hhdHRyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NsZWFyX3hhdHRyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jbGVhcl94YXR0ci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYWQ2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jbGVhcl94YXR0ci9uYW1lCkBAIC0wLDAgKzEgQEAKK2NsZWFyaW5nIGlfZmlsZV9hY2wgd2hlbiAhZXh0X2F0dHIgZmVhdHVyZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xvbmVibG9ja19hbGxvY19lcnJvci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2Nsb25lYmxvY2tfYWxsb2NfZXJyb3IvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRmZTFmZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Nsb25lYmxvY2tfYWxsb2NfZXJyb3IvZXhwZWN0LjEKQEAgLTAsMCArMSwzNiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiwgaV9zaXplIGlzIDAsIHNob3VsZCBiZSAyMDE1MjMyLiAgRml4PyB5ZXMKKworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTM6IDgKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTQ6IDgKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgMiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgL2IgKGlub2RlICMxMywgbW9kIHRpbWUgV2VkIEphbiAyMSAwMzo0MTo1NSAyMDE1KSAKKyAgaGFzIDEgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCS9jIChpbm9kZSAjMTQsIG1vZCB0aW1lIFdlZCBKYW4gMjEgMDM6NDI6MzcgMjAxNSkKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworY2xvbmVfZmlsZTogQ291bGQgbm90IGFsbG9jYXRlIGJsb2NrIGluIGV4dDIgZmlsZXN5c3RlbSByZXR1cm5lZCBmcm9tIGNsb25lX2ZpbGVfYmxvY2sKK0NvdWxkbid0IGNsb25lIGZpbGU6IENvdWxkIG5vdCBhbGxvY2F0ZSBibG9jayBpbiBleHQyIGZpbGVzeXN0ZW0KK0RlbGV0ZSBmaWxlPyB5ZXMKKworRmlsZSAvYyAoaW5vZGUgIzE0LCBtb2QgdGltZSBXZWQgSmFuIDIxIDAzOjQyOjM3IDIwMTUpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJL2IgKGlub2RlICMxMywgbW9kIHRpbWUgV2VkIEphbiAyMSAwMzo0MTo1NSAyMDE1KQorTXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4KKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnYicgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDEzLiAgQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzEyOCBmaWxlcyAoNy43JSBub24tY29udGlndW91cyksIDUxMi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jbG9uZWJsb2NrX2FsbG9jX2Vycm9yL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xvbmVibG9ja19hbGxvY19lcnJvci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzc4MWVjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xvbmVibG9ja19hbGxvY19lcnJvci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzLzEyOCBmaWxlcyAoNy43JSBub24tY29udGlndW91cyksIDUxMi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jbG9uZWJsb2NrX2FsbG9jX2Vycm9yL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xvbmVibG9ja19hbGxvY19lcnJvci9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDAxZGYxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY2xvbmVibG9ja19hbGxvY19lcnJvci9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jbG9uZWJsb2NrX2FsbG9jX2Vycm9yL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jbG9uZWJsb2NrX2FsbG9jX2Vycm9yL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE5NmU4OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Nsb25lYmxvY2tfYWxsb2NfZXJyb3IvbmFtZQpAQCAtMCwwICsxIEBACitkZWNyZW1lbnQgYmFkY291bnQgYWZ0ZXIgcmVtYXBwaW5nIGR1cGxpY2F0ZSBibG9jawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmViNjVlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEKQEAgLTAsMCArMSwxNiBAQAorZGVidWdmczogZXggL2EKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMSAgICAgMCAtICAgICAwICAgICA5ICAgICAgICAgICAgICAxCisgMS8gMSAgIDEvICAxICAgICAwIC0gICAgIDAgICAgMTAgLSAgICAxMCAgICAgIDEgCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGV4dGVudCB0cmVlIChhdCBsZXZlbCAxKSBjb3VsZCBiZSBzaG9ydGVyLiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZDI4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMgpAQCAtMCwwICsxLDEwIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBleCAvYQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMCAgIDEvICAxICAgICAwIC0gICAgIDAgICAgMTAgLSAgICAxMCAgICAgIDEgCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MDM2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2U1MDZmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvbmFtZQpAQCAtMCwwICsxIEBACitleHRlbnQgdHJlZSBjYW4gYmUgY29sbGFwc2VkIG9uZSBsZXZlbApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMTg0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9zY3JpcHQKQEAgLTAsMCArMSwxMTggQEAKK2lmIFsgIiRERVNDUklQVElPTiJ4ICE9IHggXTsgdGhlbgorCXRlc3RfZGVzY3JpcHRpb249IiRERVNDUklQVElPTiIKK2ZpCitpZiBbICIkSU1BR0UieCA9IHggXTsgdGhlbgorCUlNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorZmkKKworaWYgWyAiJEZTQ0tfT1BUInggPSB4IF07IHRoZW4KKwlGU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRTRUNPTkRfRlNDS19PUFQieCA9IHggXTsgdGhlbgorCVNFQ09ORF9GU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRPVVQxInggPSB4IF07IHRoZW4KKwlPVVQxPSR0ZXN0X25hbWUuMS5sb2cKK2ZpCisKK2lmIFsgIiRPVVQyInggPSB4IF07IHRoZW4KKwlPVVQyPSR0ZXN0X25hbWUuMi5sb2cKK2ZpCisKK2lmIFsgIiRFWFAxInggPSB4IF07IHRoZW4KKwlpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuMS5neiBdOyB0aGVuCisJCUVYUDE9JHRlc3RfbmFtZS4xLnRtcAorCQlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0LjEuZ3ogPiAkRVhQMQorCWVsc2UKKwkJRVhQMT0kdGVzdF9kaXIvZXhwZWN0LjEKKwlmaQorZmkKKworaWYgWyAiJEVYUDIieCA9IHggXTsgdGhlbgorCWlmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC4yLmd6IF07IHRoZW4KKwkJRVhQMj0kdGVzdF9uYW1lLjIudG1wCisJCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuMi5neiA+ICRFWFAyCisJZWxzZQorCQlFWFAyPSR0ZXN0X2Rpci9leHBlY3QuMgorCWZpCitmaQorCitpZiBbICIkU0tJUF9HVU5aSVAiICE9ICJ0cnVlIiBdIDsgdGhlbgorCWd1bnppcCA8ICRJTUFHRSA+ICRUTVBGSUxFCitmaQorCitjcCAvZGV2L251bGwgJE9VVDEKKworZXZhbCAkUFJFUF9DTUQKKworZWNobyAnZXggL2EnID4gJFRNUEZJTEUuY21kCiskREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPiAkT1VUMS5uZXcgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNtZAorJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVDEubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQxLm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMS5uZXcgPj4gJE9VVDEKK3JtIC1mICRPVVQxLm5ldworCitpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkkRlNDSyAkU0VDT05EX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQyLm5ldyAyPiYxIAorCXN0YXR1cz0kPworCWVjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUMi5uZXcKKwllY2hvICdleCAvYScgPiAkVE1QRklMRS5jbWQKKwkkREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPj4gJE9VVDIubmV3IDI+JjEKKwlybSAtcmYgJFRNUEZJTEUuY21kCisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMi5uZXcgPiAkT1VUMgorCXJtIC1mICRPVVQyLm5ldworZmkKKworZXZhbCAkQUZURVJfQ01ECisKK2lmIFsgIiRTS0lQX1ZFUklGWSIgIT0gInRydWUiIF0gOyB0aGVuCisJcm0gLWYgJHRlc3RfbmFtZS5vayAkdGVzdF9uYW1lLmZhaWxlZAorCWNtcCAtcyAkT1VUMSAkRVhQMQorCXN0YXR1czE9JD8KKwlpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkJY21wIC1zICRPVVQyICRFWFAyCisJCXN0YXR1czI9JD8KKwllbHNlCisJCXN0YXR1czI9MAorCWZpCisJaWYgWyAiJFBBU1NfWkVSTyIgPSAidHJ1ZSIgXTsgdGhlbgorCQljbXAgLXMgJHRlc3RfbmFtZS4wLmxvZwkkdGVzdF9kaXIvZXhwZWN0LjAKKwkJc3RhdHVzMz0kPworCWVsc2UKKwkJc3RhdHVzMz0wCisJZmkKKworCWlmIFsgLXogIiR0ZXN0X2Rlc2NyaXB0aW9uIiBdIDsgdGhlbgorCQlkZXNjcmlwdGlvbj0iJHRlc3RfbmFtZSIKKwllbHNlCisJCWRlc2NyaXB0aW9uPSIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbiIKKwlmaQorCisJaWYgWyAiJHN0YXR1czEiIC1lcSAwIC1hICIkc3RhdHVzMiIgLWVxIDAgLWEgIiRzdGF0dXMzIiAtZXEgMCBdIDsgdGhlbgorCQllY2hvICIkZGVzY3JpcHRpb246IG9rIgorCQl0b3VjaCAkdGVzdF9uYW1lLm9rCisJZWxzZQorCQllY2hvICIkZGVzY3JpcHRpb246IGZhaWxlZCIKKwkJcm0gLWYgJHRlc3RfbmFtZS5mYWlsZWQKKwkJaWYgWyAiJFBBU1NfWkVSTyIgPSAidHJ1ZSIgXTsgdGhlbgorCQkJZGlmZiAkRElGRl9PUFRTICR0ZXN0X2Rpci9leHBlY3QuMCBcCisJCQkJJHRlc3RfbmFtZS4wLmxvZyA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlmaQorCQlkaWZmICRESUZGX09QVFMgJEVYUDEgJE9VVDEgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwkJaWYgWyAiJE9ORV9QQVNTX09OTFkiICE9ICJ0cnVlIiBdOyB0aGVuCisJCQlkaWZmICRESUZGX09QVFMgJEVYUDIgJE9VVDIgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwkJZmkKKwlmaQorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK2lmIFsgIiRTS0lQX0NMRUFOVVAiICE9ICJ0cnVlIiBdIDsgdGhlbgorCXVuc2V0IElNQUdFIEZTQ0tfT1BUIFNFQ09ORF9GU0NLX09QVCBPVVQxIE9VVDIgRVhQMSBFWFAyIAorCXVuc2V0IFNLSVBfVkVSSUZZIFNLSVBfQ0xFQU5VUCBTS0lQX0dVTlpJUCBPTkVfUEFTU19PTkxZIFBSRVBfQ01ECisJdW5zZXQgREVTQ1JJUFRJT04gU0tJUF9VTkxJTksgQUZURVJfQ01EIFBBU1NfWkVSTworZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzU5Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEKQEAgLTAsMCArMSwyMyBAQAorZGVidWdmczogZXggL2EKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworIDAvIDEgICAxLyAgMiAgICAgMCAtICAgIDE2ICAgICA5ICAgICAgICAgICAgIDE3CisgMS8gMSAgIDEvICA0ICAgICAwIC0gICAgIDAgICAgMTAgLSAgICAxMCAgICAgIDEgCisgMS8gMSAgIDIvICA0ICAgIDExIC0gICAgMTEgICAxMDAgLSAgIDEwMCAgICAgIDEgCisgMS8gMSAgIDMvICA0ICAgIDEzIC0gICAgMTMgICAxMDEgLSAgIDEwMSAgICAgIDEgCisgMS8gMSAgIDQvICA0ICAgIDE1IC0gICAgMTUgICAxMDIgLSAgIDEwMiAgICAgIDEgCisgMC8gMSAgIDIvICAyICAgIDE3IC0gICAgMjEgICAgMTIgICAgICAgICAgICAgIDUKKyAxLyAxICAgMS8gIDMgICAgMTcgLSAgICAxNyAgIDEwMyAtICAgMTAzICAgICAgMSAKKyAxLyAxICAgMi8gIDMgICAgMTkgLSAgICAxOSAgIDEwNCAtICAgMTA0ICAgICAgMSAKKyAxLyAxICAgMy8gIDMgICAgMjEgLSAgICAyMSAgIDEwNSAtICAgMTA1ICAgICAgMSAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIG5hcnJvd2VyLiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAyNi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZDEwODIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMgpAQCAtMCwwICsxLDE3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAyNi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBleCAvYQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgICAwIC0gICAgMjEgICAgIDkgICAgICAgICAgICAgMjIKKyAxLyAxICAgMS8gIDcgICAgIDAgLSAgICAgMCAgICAxMCAtICAgIDEwICAgICAgMSAKKyAxLyAxICAgMi8gIDcgICAgMTEgLSAgICAxMSAgIDEwMCAtICAgMTAwICAgICAgMSAKKyAxLyAxICAgMy8gIDcgICAgMTMgLSAgICAxMyAgIDEwMSAtICAgMTAxICAgICAgMSAKKyAxLyAxICAgNC8gIDcgICAgMTUgLSAgICAxNSAgIDEwMiAtICAgMTAyICAgICAgMSAKKyAxLyAxICAgNS8gIDcgICAgMTcgLSAgICAxNyAgIDEwMyAtICAgMTAzICAgICAgMSAKKyAxLyAxICAgNi8gIDcgICAgMTkgLSAgICAxOSAgIDEwNCAtICAgMTA0ICAgICAgMSAKKyAxLyAxICAgNy8gIDcgICAgMjEgLSAgICAyMSAgIDEwNSAtICAgMTA1ICAgICAgMSAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU1MmE1OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZTRmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbXByZXNzIGFuIGV4dGVudCB0cmVlIGxldmVsCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUxODQzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL3NjcmlwdApAQCAtMCwwICsxLDExOCBAQAoraWYgWyAiJERFU0NSSVBUSU9OInggIT0geCBdOyB0aGVuCisJdGVzdF9kZXNjcmlwdGlvbj0iJERFU0NSSVBUSU9OIgorZmkKK2lmIFsgIiRJTUFHRSJ4ID0geCBdOyB0aGVuCisJSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitmaQorCitpZiBbICIkRlNDS19PUFQieCA9IHggXTsgdGhlbgorCUZTQ0tfT1BUPS15ZgorZmkKKworaWYgWyAiJFNFQ09ORF9GU0NLX09QVCJ4ID0geCBdOyB0aGVuCisJU0VDT05EX0ZTQ0tfT1BUPS15ZgorZmkKKworaWYgWyAiJE9VVDEieCA9IHggXTsgdGhlbgorCU9VVDE9JHRlc3RfbmFtZS4xLmxvZworZmkKKworaWYgWyAiJE9VVDIieCA9IHggXTsgdGhlbgorCU9VVDI9JHRlc3RfbmFtZS4yLmxvZworZmkKKworaWYgWyAiJEVYUDEieCA9IHggXTsgdGhlbgorCWlmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC4xLmd6IF07IHRoZW4KKwkJRVhQMT0kdGVzdF9uYW1lLjEudG1wCisJCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuMS5neiA+ICRFWFAxCisJZWxzZQorCQlFWFAxPSR0ZXN0X2Rpci9leHBlY3QuMQorCWZpCitmaQorCitpZiBbICIkRVhQMiJ4ID0geCBdOyB0aGVuCisJaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0LjIuZ3ogXTsgdGhlbgorCQlFWFAyPSR0ZXN0X25hbWUuMi50bXAKKwkJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC4yLmd6ID4gJEVYUDIKKwllbHNlCisJCUVYUDI9JHRlc3RfZGlyL2V4cGVjdC4yCisJZmkKK2ZpCisKK2lmIFsgIiRTS0lQX0dVTlpJUCIgIT0gInRydWUiIF0gOyB0aGVuCisJZ3VuemlwIDwgJElNQUdFID4gJFRNUEZJTEUKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUMQorCitldmFsICRQUkVQX0NNRAorCitlY2hvICdleCAvYScgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+ICRPVVQxLm5ldyAyPiYxCitybSAtcmYgJFRNUEZJTEUuY21kCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUMS5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVDEubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQxLm5ldyA+PiAkT1VUMQorcm0gLWYgJE9VVDEubmV3CisKK2lmIFsgIiRPTkVfUEFTU19PTkxZIiAhPSAidHJ1ZSIgXTsgdGhlbgorCSRGU0NLICRTRUNPTkRfRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVDIubmV3IDI+JjEgCisJc3RhdHVzPSQ/CisJZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQyLm5ldworCWVjaG8gJ2V4IC9hJyA+ICRUTVBGSUxFLmNtZAorCSRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+PiAkT1VUMi5uZXcgMj4mMQorCXJtIC1yZiAkVE1QRklMRS5jbWQKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQyLm5ldyA+ICRPVVQyCisJcm0gLWYgJE9VVDIubmV3CitmaQorCitldmFsICRBRlRFUl9DTUQKKworaWYgWyAiJFNLSVBfVkVSSUZZIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlybSAtZiAkdGVzdF9uYW1lLm9rICR0ZXN0X25hbWUuZmFpbGVkCisJY21wIC1zICRPVVQxICRFWFAxCisJc3RhdHVzMT0kPworCWlmIFsgIiRPTkVfUEFTU19PTkxZIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQljbXAgLXMgJE9VVDIgJEVYUDIKKwkJc3RhdHVzMj0kPworCWVsc2UKKwkJc3RhdHVzMj0wCisJZmkKKwlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCWNtcCAtcyAkdGVzdF9uYW1lLjAubG9nCSR0ZXN0X2Rpci9leHBlY3QuMAorCQlzdGF0dXMzPSQ/CisJZWxzZQorCQlzdGF0dXMzPTAKKwlmaQorCisJaWYgWyAteiAiJHRlc3RfZGVzY3JpcHRpb24iIF0gOyB0aGVuCisJCWRlc2NyaXB0aW9uPSIkdGVzdF9uYW1lIgorCWVsc2UKKwkJZGVzY3JpcHRpb249IiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uIgorCWZpCisKKwlpZiBbICIkc3RhdHVzMSIgLWVxIDAgLWEgIiRzdGF0dXMyIiAtZXEgMCAtYSAiJHN0YXR1czMiIC1lcSAwIF0gOyB0aGVuCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogb2siCisJCXRvdWNoICR0ZXN0X25hbWUub2sKKwllbHNlCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogZmFpbGVkIgorCQlybSAtZiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCQlkaWZmICRESUZGX09QVFMgJHRlc3RfZGlyL2V4cGVjdC4wIFwKKwkJCQkkdGVzdF9uYW1lLjAubG9nID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJCWZpCisJCWRpZmYgJERJRkZfT1BUUyAkRVhQMSAkT1VUMSA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkJCWRpZmYgJERJRkZfT1BUUyAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlmaQorCWZpCisJcm0gLWYgdG1wX2V4cGVjdAorZmkKKworaWYgWyAiJFNLSVBfQ0xFQU5VUCIgIT0gInRydWUiIF0gOyB0aGVuCisJdW5zZXQgSU1BR0UgRlNDS19PUFQgU0VDT05EX0ZTQ0tfT1BUIE9VVDEgT1VUMiBFWFAxIEVYUDIgCisJdW5zZXQgU0tJUF9WRVJJRlkgU0tJUF9DTEVBTlVQIFNLSVBfR1VOWklQIE9ORV9QQVNTX09OTFkgUFJFUF9DTUQKKwl1bnNldCBERVNDUklQVElPTiBTS0lQX1VOTElOSyBBRlRFUl9DTUQgUEFTU19aRVJPCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyY2E4NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQpAQCAtMCwwICsxLDI2IEBACitkZWJ1Z2ZzOiBzdGF0IC9hCitJbm9kZTogMTIgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMTU3MzcxNjEyOSAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDUyNDI4OAorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAxMDMwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKKyBjdGltZTogMHg1NDU3Zjg3YTo2MmFlMjk4MCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKKyBhdGltZTogMHg1NDU3Zjg3YTo2MWJhMDU5OCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKKyBtdGltZTogMHg1NDU3Zjg3YTo2MmFlMjk4MCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKK2NydGltZTogMHg1NDU3Zjg3YTo2MWJhMDU5OCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAyOAorQkxPQ0tTOgorKDAtMTEpOjEwMjUtMTAzNiwgKElORCk6MjQsICgxMi0yNjcpOjEwMzctMTI5MiwgKERJTkQpOjI1LCAoSU5EKTo0MSwgKDI2OC01MTEpOjEyOTMtMTUzNgorVE9UQUw6IDUxNQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMUU6IE9wdGltaXppbmcgZXh0ZW50IHRyZWVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgNTcwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMyZDQxMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMgpAQCAtMCwwICsxLDEwIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1NzAvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnM6IGV4IC9hCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAwICAgMS8gIDEgICAgIDAgLSAgIDUxMSAgMTAyNSAtICAxNTM2ICAgIDUxMiAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzIyNTMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29udmVydF9ibWFwL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29udmVydF9ibWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdlMGQ0NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbnZlcnQgYmxvY2ttYXAgZmlsZSB0byBleHRlbnRzIGZpbGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjZmNjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXAvc2NyaXB0CkBAIC0wLDAgKzEsMTE3IEBACitpZiBbICIkREVTQ1JJUFRJT04ieCAhPSB4IF07IHRoZW4KKwl0ZXN0X2Rlc2NyaXB0aW9uPSIkREVTQ1JJUFRJT04iCitmaQoraWYgWyAiJElNQUdFInggPSB4IF07IHRoZW4KKwlJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKK2ZpCisKK2lmIFsgIiRGU0NLX09QVCJ4ID0geCBdOyB0aGVuCisJRlNDS19PUFQ9LXlmCitmaQorCitpZiBbICIkU0VDT05EX0ZTQ0tfT1BUInggPSB4IF07IHRoZW4KKwlTRUNPTkRfRlNDS19PUFQ9LXlmCitmaQorCitpZiBbICIkT1VUMSJ4ID0geCBdOyB0aGVuCisJT1VUMT0kdGVzdF9uYW1lLjEubG9nCitmaQorCitpZiBbICIkT1VUMiJ4ID0geCBdOyB0aGVuCisJT1VUMj0kdGVzdF9uYW1lLjIubG9nCitmaQorCitpZiBbICIkRVhQMSJ4ID0geCBdOyB0aGVuCisJaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0LjEuZ3ogXTsgdGhlbgorCQlFWFAxPSR0ZXN0X25hbWUuMS50bXAKKwkJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC4xLmd6ID4gJEVYUDEKKwllbHNlCisJCUVYUDE9JHRlc3RfZGlyL2V4cGVjdC4xCisJZmkKK2ZpCisKK2lmIFsgIiRFWFAyInggPSB4IF07IHRoZW4KKwlpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuMi5neiBdOyB0aGVuCisJCUVYUDI9JHRlc3RfbmFtZS4yLnRtcAorCQlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0LjIuZ3ogPiAkRVhQMgorCWVsc2UKKwkJRVhQMj0kdGVzdF9kaXIvZXhwZWN0LjIKKwlmaQorZmkKKworaWYgWyAiJFNLSVBfR1VOWklQIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlndW56aXAgPCAkSU1BR0UgPiAkVE1QRklMRQorZmkKKworY3AgL2Rldi9udWxsICRPVVQxCisKK2V2YWwgJFBSRVBfQ01ECisKK2VjaG8gJ3N0YXQgL2EnID4gJFRNUEZJTEUuY21kCiskREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPiAkT1VUMS5uZXcgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNtZAorJFRVTkUyRlMgLU8gZXh0ZW50ICRUTVBGSUxFID4+ICRPVVQxLm5ldyAyPiYxCiskRlNDSyAkRlNDS19PUFQgLUUgYm1hcDJleHRlbnQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQxLm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUMS5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVDEubmV3ID4+ICRPVVQxCitybSAtZiAkT1VUMS5uZXcKKworJEZTQ0sgJFNFQ09ORF9GU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VUMi5uZXcgMj4mMSAKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQyLm5ldworZWNobyAnZXggL2EnID4gJFRNUEZJTEUuY21kCiskREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPj4gJE9VVDIubmV3IDI+JjEKK3JtIC1yZiAkVE1QRklMRS5jbWQKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVDIubmV3ID4gJE9VVDIKK3JtIC1mICRPVVQyLm5ldworCitldmFsICRBRlRFUl9DTUQKKworaWYgWyAiJFNLSVBfVkVSSUZZIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlybSAtZiAkdGVzdF9uYW1lLm9rICR0ZXN0X25hbWUuZmFpbGVkCisJY21wIC1zICRPVVQxICRFWFAxCisJc3RhdHVzMT0kPworCWlmIFsgIiRPTkVfUEFTU19PTkxZIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQljbXAgLXMgJE9VVDIgJEVYUDIKKwkJc3RhdHVzMj0kPworCWVsc2UKKwkJc3RhdHVzMj0wCisJZmkKKwlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCWNtcCAtcyAkdGVzdF9uYW1lLjAubG9nCSR0ZXN0X2Rpci9leHBlY3QuMAorCQlzdGF0dXMzPSQ/CisJZWxzZQorCQlzdGF0dXMzPTAKKwlmaQorCisJaWYgWyAteiAiJHRlc3RfZGVzY3JpcHRpb24iIF0gOyB0aGVuCisJCWRlc2NyaXB0aW9uPSIkdGVzdF9uYW1lIgorCWVsc2UKKwkJZGVzY3JpcHRpb249IiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uIgorCWZpCisKKwlpZiBbICIkc3RhdHVzMSIgLWVxIDAgLWEgIiRzdGF0dXMyIiAtZXEgMCAtYSAiJHN0YXR1czMiIC1lcSAwIF0gOyB0aGVuCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogb2siCisJCXRvdWNoICR0ZXN0X25hbWUub2sKKwllbHNlCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogZmFpbGVkIgorCQlybSAtZiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCQlkaWZmICRESUZGX09QVFMgJHRlc3RfZGlyL2V4cGVjdC4wIFwKKwkJCQkkdGVzdF9uYW1lLjAubG9nID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJCWZpCisJCWRpZmYgJERJRkZfT1BUUyAkRVhQMSAkT1VUMSA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkJCWRpZmYgJERJRkZfT1BUUyAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlmaQorCWZpCisJcm0gLWYgdG1wX2V4cGVjdAorZmkKKworaWYgWyAiJFNLSVBfQ0xFQU5VUCIgIT0gInRydWUiIF0gOyB0aGVuCisJdW5zZXQgSU1BR0UgRlNDS19PUFQgU0VDT05EX0ZTQ0tfT1BUIE9VVDEgT1VUMiBFWFAxIEVYUDIgCisJdW5zZXQgU0tJUF9WRVJJRlkgU0tJUF9DTEVBTlVQIFNLSVBfR1VOWklQIE9ORV9QQVNTX09OTFkgUFJFUF9DTUQKKwl1bnNldCBERVNDUklQVElPTiBTS0lQX1VOTElOSyBBRlRFUl9DTUQgUEFTU19aRVJPCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZjkxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMQpAQCAtMCwwICsxLDMzIEBACitkZWJ1Z2ZzOiBzdGF0IC9hCitJbm9kZTogMTIgICBUeXBlOiByZWd1bGFyICAgIE1vZGU6ICAwNjQ0ICAgRmxhZ3M6IDB4MAorR2VuZXJhdGlvbjogMTU3MzcxNjEyOSAgICBWZXJzaW9uOiAweDAwMDAwMDAwOjAwMDAwMDAxCitVc2VyOiAgICAgMCAgIEdyb3VwOiAgICAgMCAgIFNpemU6IDUyNDI4OAorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAxMDMwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKKyBjdGltZTogMHg1NDU3Zjg3YTo2MmFlMjk4MCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKKyBhdGltZTogMHg1NDU3Zjg3YTo2MWJhMDU5OCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKKyBtdGltZTogMHg1NDU3Zjg3YTo2MmFlMjk4MCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKK2NydGltZTogMHg1NDU3Zjg3YTo2MWJhMDU5OCAtLSBNb24gTm92ICAzIDIxOjQ5OjQ2IDIwMTQKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAyOAorQkxPQ0tTOgorKDAtMTEpOjEwMjUtMTAzNiwgKElORCk6MjQsICgxMi0yNjcpOjEwMzctMTI5MiwgKERJTkQpOjI1LCAoSU5EKTo0MSwgKDI2OC01MTEpOjEyOTMtMTUzNgorVE9UQUw6IDUxNQorCitkZWJ1Z2ZzOiBleCAvemVybworTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMSAgIDEvICAxICAgICAwIC0gICAgIDggICAgMjggICAgICAgICAgICAgIDkKKyAxLyAxICAgMS8gIDQgICAgIDAgLSAgICAgMCAgICAyNyAtICAgIDI3ICAgICAgMSAKKyAxLyAxICAgMi8gIDQgICAgIDIgLSAgICAgMiAgICAyOSAtICAgIDI5ICAgICAgMSAKKyAxLyAxICAgMy8gIDQgICAgIDQgLSAgICAgNCAgICAzMSAtICAgIDMxICAgICAgMSAKKyAxLyAxICAgNC8gIDQgICAgIDYgLSAgICAgNiAgICAzMyAtICAgIDMzICAgICAgMSAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy8xMjggZmlsZXMgKDE1LjQlIG5vbi1jb250aWd1b3VzKSwgNTc0LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNzY1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMgpAQCAtMCwwICsxLDE2IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMy8xMjggZmlsZXMgKDcuNyUgbm9uLWNvbnRpZ3VvdXMpLCA1NzQvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnM6IGV4IC9hCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAwICAgMS8gIDEgICAgIDAgLSAgIDUxMSAgMTAyNSAtICAxNTM2ICAgIDUxMiAKK2RlYnVnZnM6IGV4IC96ZXJvCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKKyAwLyAwICAgMS8gIDQgICAgIDAgLSAgICAgMCAgICAyNyAtICAgIDI3ICAgICAgMSAKKyAwLyAwICAgMi8gIDQgICAgIDIgLSAgICAgMiAgICAyOSAtICAgIDI5ICAgICAgMSAKKyAwLyAwICAgMy8gIDQgICAgIDQgLSAgICAgNCAgICAzMSAtICAgIDMxICAgICAgMSAKKyAwLyAwICAgNC8gIDQgICAgIDYgLSAgICAgNiAgICAzMyAtICAgIDMzICAgICAgMSAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2YjQ5MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5Mzk0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbnZlcnQgYmxvY2ttYXAgYW5kIGV4dGVudHMgZmlsZXMgdG8gZXh0ZW50cyBmaWxlcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwM2FiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9zY3JpcHQKQEAgLTAsMCArMSwxMTkgQEAKK2lmIFsgIiRERVNDUklQVElPTiJ4ICE9IHggXTsgdGhlbgorCXRlc3RfZGVzY3JpcHRpb249IiRERVNDUklQVElPTiIKK2ZpCitpZiBbICIkSU1BR0UieCA9IHggXTsgdGhlbgorCUlNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorZmkKKworaWYgWyAiJEZTQ0tfT1BUInggPSB4IF07IHRoZW4KKwlGU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRTRUNPTkRfRlNDS19PUFQieCA9IHggXTsgdGhlbgorCVNFQ09ORF9GU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRPVVQxInggPSB4IF07IHRoZW4KKwlPVVQxPSR0ZXN0X25hbWUuMS5sb2cKK2ZpCisKK2lmIFsgIiRPVVQyInggPSB4IF07IHRoZW4KKwlPVVQyPSR0ZXN0X25hbWUuMi5sb2cKK2ZpCisKK2lmIFsgIiRFWFAxInggPSB4IF07IHRoZW4KKwlpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuMS5neiBdOyB0aGVuCisJCUVYUDE9JHRlc3RfbmFtZS4xLnRtcAorCQlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0LjEuZ3ogPiAkRVhQMQorCWVsc2UKKwkJRVhQMT0kdGVzdF9kaXIvZXhwZWN0LjEKKwlmaQorZmkKKworaWYgWyAiJEVYUDIieCA9IHggXTsgdGhlbgorCWlmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC4yLmd6IF07IHRoZW4KKwkJRVhQMj0kdGVzdF9uYW1lLjIudG1wCisJCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuMi5neiA+ICRFWFAyCisJZWxzZQorCQlFWFAyPSR0ZXN0X2Rpci9leHBlY3QuMgorCWZpCitmaQorCitpZiBbICIkU0tJUF9HVU5aSVAiICE9ICJ0cnVlIiBdIDsgdGhlbgorCWd1bnppcCA8ICRJTUFHRSA+ICRUTVBGSUxFCitmaQorCitjcCAvZGV2L251bGwgJE9VVDEKKworZXZhbCAkUFJFUF9DTUQKKworZWNobyAnc3RhdCAvYScgPiAkVE1QRklMRS5jbWQKK2VjaG8gJ2V4IC96ZXJvJyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+ICRPVVQxLm5ldyAyPiYxCitybSAtcmYgJFRNUEZJTEUuY21kCiskVFVORTJGUyAtTyBleHRlbnQgJFRNUEZJTEUgPj4gJE9VVDEubmV3IDI+JjEKKyRGU0NLICRGU0NLX09QVCAtRSBibWFwMmV4dGVudCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVDEubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQxLm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMS5uZXcgPj4gJE9VVDEKK3JtIC1mICRPVVQxLm5ldworCiskRlNDSyAkU0VDT05EX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQyLm5ldyAyPiYxIAorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVDIubmV3CitlY2hvICdleCAvYScgPiAkVE1QRklMRS5jbWQKK2VjaG8gJ2V4IC96ZXJvJyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+PiAkT1VUMi5uZXcgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNtZAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMi5uZXcgPiAkT1VUMgorcm0gLWYgJE9VVDIubmV3CisKK2V2YWwgJEFGVEVSX0NNRAorCitpZiBbICIkU0tJUF9WRVJJRlkiICE9ICJ0cnVlIiBdIDsgdGhlbgorCXJtIC1mICR0ZXN0X25hbWUub2sgJHRlc3RfbmFtZS5mYWlsZWQKKwljbXAgLXMgJE9VVDEgJEVYUDEKKwlzdGF0dXMxPSQ/CisJaWYgWyAiJE9ORV9QQVNTX09OTFkiICE9ICJ0cnVlIiBdOyB0aGVuCisJCWNtcCAtcyAkT1VUMiAkRVhQMgorCQlzdGF0dXMyPSQ/CisJZWxzZQorCQlzdGF0dXMyPTAKKwlmaQorCWlmIFsgIiRQQVNTX1pFUk8iID0gInRydWUiIF07IHRoZW4KKwkJY21wIC1zICR0ZXN0X25hbWUuMC5sb2cJJHRlc3RfZGlyL2V4cGVjdC4wCisJCXN0YXR1czM9JD8KKwllbHNlCisJCXN0YXR1czM9MAorCWZpCisKKwlpZiBbIC16ICIkdGVzdF9kZXNjcmlwdGlvbiIgXSA7IHRoZW4KKwkJZGVzY3JpcHRpb249IiR0ZXN0X25hbWUiCisJZWxzZQorCQlkZXNjcmlwdGlvbj0iJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb24iCisJZmkKKworCWlmIFsgIiRzdGF0dXMxIiAtZXEgMCAtYSAiJHN0YXR1czIiIC1lcSAwIC1hICIkc3RhdHVzMyIgLWVxIDAgXSA7IHRoZW4KKwkJZWNobyAiJGRlc2NyaXB0aW9uOiBvayIKKwkJdG91Y2ggJHRlc3RfbmFtZS5vaworCWVsc2UKKwkJZWNobyAiJGRlc2NyaXB0aW9uOiBmYWlsZWQiCisJCXJtIC1mICR0ZXN0X25hbWUuZmFpbGVkCisJCWlmIFsgIiRQQVNTX1pFUk8iID0gInRydWUiIF07IHRoZW4KKwkJCWRpZmYgJERJRkZfT1BUUyAkdGVzdF9kaXIvZXhwZWN0LjAgXAorCQkJCSR0ZXN0X25hbWUuMC5sb2cgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwkJZmkKKwkJZGlmZiAkRElGRl9PUFRTICRFWFAxICRPVVQxID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJCWlmIFsgIiRPTkVfUEFTU19PTkxZIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQkJZGlmZiAkRElGRl9PUFRTICRFWFAyICRPVVQyID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJCWZpCisJZmkKKwlybSAtZiB0bXBfZXhwZWN0CitmaQorCitpZiBbICIkU0tJUF9DTEVBTlVQIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwl1bnNldCBJTUFHRSBGU0NLX09QVCBTRUNPTkRfRlNDS19PUFQgT1VUMSBPVVQyIEVYUDEgRVhQMiAKKwl1bnNldCBTS0lQX1ZFUklGWSBTS0lQX0NMRUFOVVAgU0tJUF9HVU5aSVAgT05FX1BBU1NfT05MWSBQUkVQX0NNRAorCXVuc2V0IERFU0NSSVBUSU9OIFNLSVBfVU5MSU5LIEFGVEVSX0NNRCBQQVNTX1pFUk8KK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NvcnJ1cHRfZGlyZW50X3RhaWwvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb3JydXB0X2RpcmVudF90YWlsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MTM3NTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb3JydXB0X2RpcmVudF90YWlsL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTYgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMiwgYmxvY2sgIzAsIG9mZnNldCAwOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLgorRml4PyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDIsIGJsb2NrICMwLCBvZmZzZXQgMTAxMjogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMTA5MC8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY29ycnVwdF9kaXJlbnRfdGFpbC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvcnJ1cHRfZGlyZW50X3RhaWwvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQyNDY2ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvcnJ1cHRfZGlyZW50X3RhaWwvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDkuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb3JydXB0X2RpcmVudF90YWlsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29ycnVwdF9kaXJlbnRfdGFpbC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjc1MzA4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY29ycnVwdF9kaXJlbnRfdGFpbC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jb3JydXB0X2RpcmVudF90YWlsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jb3JydXB0X2RpcmVudF90YWlsL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyNTlhMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NvcnJ1cHRfZGlyZW50X3RhaWwvbmFtZQpAQCAtMCwwICsxIEBACityZWJ1aWxkIGEgZGlyZWN0b3J5IHdpdGggY29ycnVwdCBkaXJlbnQgdGFpbApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY3Jhc2hkaXNrL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY3Jhc2hkaXNrL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3N2E0NjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jcmFzaGRpc2svZXhwZWN0LjEKQEAgLTAsMCArMSwxMyBAQAorZXh0MmZzX29wZW4yOiBUaGUgZXh0MiBzdXBlcmJsb2NrIGlzIGNvcnJ1cHQKKy4uL2UyZnNjay9lMmZzY2s6IFN1cGVyYmxvY2sgaW52YWxpZCwgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi4KKy4uL2UyZnNjay9lMmZzY2s6IFRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdCB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZworCitUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9jaworaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazoKKyAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPgorIG9yCisgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+CisKK0V4aXQgc3RhdHVzIGlzIDgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjBlN2EwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY3Jhc2hkaXNrL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY3Jhc2hkaXNrL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhOGE2MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9uYW1lCkBAIC0wLDAgKzEgQEAKK1N1cGVyYmxvY2sgd2l0aCBpbGxlZ2FsIHZhbHVlcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfY3Jhc2hkaXNrL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiMmI5YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2NyYXNoZGlzay9zY3JpcHQKQEAgLTAsMCArMSwyIEBACitPTkVfUEFTU19PTkxZPSJ0cnVlIgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jcmVhdGVfc3ltbGlua3MvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY3JlYXRlX3N5bWxpbmtzL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2E2ZTkyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfY3JlYXRlX3N5bWxpbmtzL2V4cGVjdApAQCAtMCwwICsxLDY5IEBACitta2UyZnMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAtZyAyNTYgLU8gaW5saW5lX2RhdGEsZXh0ZW50cyAtSSAyNTYgdGVzdC5pbWcgMTAyNAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDQxLzEwMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIC1SICJzeW1saW5rIC9sXzMwIC94eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiIHRlc3QuaW1nCitkZWJ1Z2ZzIC1SICJzeW1saW5rIC9sXzcwIC94eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IiB0ZXN0LmltZworZGVidWdmcyAtUiAic3ltbGluayAvbF81MDAgL3h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IiB0ZXN0LmltZworZGVidWdmcyAtUiAic3ltbGluayAvbF8xMDIzIC94eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiIHRlc3QuaW1nCitkZWJ1Z2ZzIC1SICJzeW1saW5rIC9sXzEwMjQgL3h4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiIHRlc3QuaW1nCitleHQyZnNfc3ltbGluazogSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IHdoaWxlIGNyZWF0aW5nIHN5bWxpbmsgImxfMTAyNCIKK3N5bWxpbms6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSAKK2RlYnVnZnMgLVIgInN5bWxpbmsgL2xfMTUwMCAveHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4IiB0ZXN0LmltZworZXh0MmZzX3N5bWxpbms6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjcmVhdGluZyBzeW1saW5rICJsXzE1MDAiCitzeW1saW5rOiBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkgCitkZWJ1Z2ZzIC1SICJzdGF0IC9sXzMwIiB0ZXN0LmltZworSW5vZGU6IDEyICAgVHlwZTogc3ltbGluayAgICBNb2RlOiAgMDc3NyAgIEZsYWdzOiAweDAKK0dlbmVyYXRpb246IDAgICAgVmVyc2lvbjogMHgwMDAwMDAwMDowMDAwMDAwMAorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBQcm9qZWN0OiAgICAgMCAgIFNpemU6IDMxCitGaWxlIEFDTDogMCAgICBEaXJlY3RvcnkgQUNMOiAwCitMaW5rczogMSAgIEJsb2NrY291bnQ6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorU2l6ZSBvZiBleHRyYSBpbm9kZSBmaWVsZHM6IDMyCitGYXN0IGxpbmsgZGVzdDogIi94eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgiCitkZWJ1Z2ZzIC1SICJzdGF0IC9sXzcwIiB0ZXN0LmltZworSW5vZGU6IDEzICAgVHlwZTogc3ltbGluayAgICBNb2RlOiAgMDc3NyAgIEZsYWdzOiAweDEwMDAwMDAwCitHZW5lcmF0aW9uOiAwICAgIFZlcnNpb246IDB4MDAwMDAwMDA6MDAwMDAwMDAKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgUHJvamVjdDogICAgIDAgICBTaXplOiA3MQorRmlsZSBBQ0w6IDAgICAgRGlyZWN0b3J5IEFDTDogMAorTGlua3M6IDEgICBCbG9ja2NvdW50OiAwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK1NpemUgb2YgZXh0cmEgaW5vZGUgZmllbGRzOiAzMgorRXh0ZW5kZWQgYXR0cmlidXRlczoKKyAgc3lzdGVtLmRhdGEgKDExKQorRmFzdCBsaW5rIGRlc3Q6ICIveHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eCIKK2RlYnVnZnMgLVIgInN0YXQgL2xfNTAwIiB0ZXN0LmltZworSW5vZGU6IDE0ICAgVHlwZTogc3ltbGluayAgICBNb2RlOiAgMDc3NyAgIEZsYWdzOiAweDgwMDAwCitHZW5lcmF0aW9uOiAwICAgIFZlcnNpb246IDB4MDAwMDAwMDA6MDAwMDAwMDAKK1VzZXI6ICAgICAwICAgR3JvdXA6ICAgICAwICAgUHJvamVjdDogICAgIDAgICBTaXplOiA1MDEKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMgorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitTaXplIG9mIGV4dHJhIGlub2RlIGZpZWxkczogMzIKK0VYVEVOVFM6CisoMCk6MTUzCitkZWJ1Z2ZzIC1SICJzdGF0IC9sXzEwMjMiIHRlc3QuaW1nCitJbm9kZTogMTUgICBUeXBlOiBzeW1saW5rICAgIE1vZGU6ICAwNzc3ICAgRmxhZ3M6IDB4ODAwMDAKK0dlbmVyYXRpb246IDAgICAgVmVyc2lvbjogMHgwMDAwMDAwMDowMDAwMDAwMAorVXNlcjogICAgIDAgICBHcm91cDogICAgIDAgICBQcm9qZWN0OiAgICAgMCAgIFNpemU6IDEwMjQKK0ZpbGUgQUNMOiAwICAgIERpcmVjdG9yeSBBQ0w6IDAKK0xpbmtzOiAxICAgQmxvY2tjb3VudDogMgorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitTaXplIG9mIGV4dHJhIGlub2RlIGZpZWxkczogMzIKK0VYVEVOVFM6CisoMCk6MTU0CitkZWJ1Z2ZzIC1SICJzdGF0IC9sXzEwMjQiIHRlc3QuaW1nCisvbF8xMDI0OiBGaWxlIG5vdCBmb3VuZCBieSBleHQyX2xvb2t1cCAKK2RlYnVnZnMgLVIgInN0YXQgL2xfMTUwMCIgdGVzdC5pbWcKKy9sXzE1MDA6IEZpbGUgbm90IGZvdW5kIGJ5IGV4dDJfbG9va3VwIAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDQzLzEwMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9jcmVhdGVfc3ltbGlua3MvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2NyZWF0ZV9zeW1saW5rcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5MzBlNzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jcmVhdGVfc3ltbGlua3MvbmFtZQpAQCAtMCwwICsxIEBACitjcmVhdGUgZmFzdCwgaW5saW5lZGF0YSwgYW5kIHJlZ3VsYXIgc3ltbGlua3MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2NyZWF0ZV9zeW1saW5rcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jcmVhdGVfc3ltbGlua3Mvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3OWQ5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9jcmVhdGVfc3ltbGlua3Mvc2NyaXB0CkBAIC0wLDAgKzEsNjIgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS15ZgorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAtZyAyNTYgLU8gaW5saW5lX2RhdGEsZXh0ZW50cyAtSSAyNTYgdGVzdC5pbWcgMTAyNCA+PiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1iIDEwMjQgLWcgMjU2IC1PIGlubGluZV9kYXRhLGV4dGVudHMgLUkgMjU2ICRUTVBGSUxFIDEwMjQgMj4mMSB8CisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiA+PiAkT1VUCisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZm9yIGkgaW4gMzAgNzAgNTAwIDEwMjMgMTAyNCAxNTAwOyBkbworCWVjaG8gImRlYnVnZnMgLVIgXCJzeW1saW5rIC9sXyRpIC8kKHBlcmwgLWUgInByaW50ICd4JyB4ICRpOyIpXCIgdGVzdC5pbWciID4+ICRPVVQKKwkkREVCVUdGUyAtdyAtUiAic3ltbGluayAvbF8kaSAvJChwZXJsIC1lICJwcmludCAneCcgeCAkaTsiKSIgJFRNUEZJTEUgXAorCQkgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK2RvbmUKKworZm9yIGkgaW4gMzAgNzAgNTAwIDEwMjMgMTAyNCAxNTAwOyBkbworCWVjaG8gImRlYnVnZnMgLVIgXCJzdGF0IC9sXyRpXCIgdGVzdC5pbWciID4+ICRPVVQKKwkkREVCVUdGUyAtUiAic3RhdCAvbF8kaSIgJFRNUEZJTEUgMj4mMSB8IFwKKwkJIHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIHwgZ3JlcCAtdiAidGltZTogIiA+PiAkT1VUCitkb25lCisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RlbGV0ZWRfaW5vZGVfYmFkX2NzdW0vZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZWxldGVkX2lub2RlX2JhZF9jc3VtL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0MjAzNjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZWxldGVkX2lub2RlX2JhZF9jc3VtL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RlbGV0ZWRfaW5vZGVfYmFkX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZWxldGVkX2lub2RlX2JhZF9jc3VtL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNDhiNDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZWxldGVkX2lub2RlX2JhZF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVsZXRlZF9pbm9kZV9iYWRfY3N1bS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2RlbGV0ZWRfaW5vZGVfYmFkX2NzdW0vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3ZTUwZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RlbGV0ZWRfaW5vZGVfYmFkX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVsZXRlZF9pbm9kZV9iYWRfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVsZXRlZF9pbm9kZV9iYWRfY3N1bS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNjcwMWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZWxldGVkX2lub2RlX2JhZF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorZGVsZXRlZCBpbm9kZSB3aXRoIGEgYmFkIGNzdW0gdGhhdCB3YXNuJ3QgZ2V0dGluZyBmaXhlZCAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV8xMjgvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfMTI4L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MmYxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfMTI4L2V4cGVjdC4xCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjU2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTUwLzgxOTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfMTI4L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplXzEyOC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjJmMTEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplXzEyOC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE1MC84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplXzEyOC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV8xMjgvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRhMGNhYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV8xMjgvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplXzEyOC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplXzEyOC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwOWUwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfMTI4L25hbWUKQEAgLTAsMCArMSBAQAorMTI4LWJ5dGUgZ3JvdXAgZGVzY3JpcHRvcnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV9iYWQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfYmFkL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOWVlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfYmFkL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK2V4dDJmc19jaGVja19kZXNjOiBCbG9jayBncm91cCBkZXNjcmlwdG9yIHNpemUgaW5jb3JyZWN0CisuLi9lMmZzY2svZTJmc2NrOiBHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA4MDEvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV9iYWQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfYmFkL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNDI5ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXNjX3NpemVfYmFkL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA4MDEvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV9iYWQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGVzY19zaXplX2JhZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ0MDMyOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rlc2Nfc2l6ZV9iYWQvc2NyaXB0CkBAIC0wLDAgKzEsMTcgQEAKK2lmICEgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKyAgICAgICAgZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCisJcmV0dXJuIDAKK2ZpCisKK0RFU0NSSVBUSU9OPSJiYWQgc3VwZXJibG9jayBzX2Rlc2Nfc2l6ZSIKK1NLSVBfR1VOWklQPXRydWUKK3RvdWNoICRUTVBGSUxFCiskTUtFMkZTIC1GIC1vIExpbnV4IC1PIDY0Yml0LGV4dGVudHMgLU4gMzIgLWIgMTAyNCAtZyA1MTIgLUUgZGVzY19zaXplPTEyOCAkVE1QRklMRSAyMDQ4ID4gJHRlc3RfbmFtZS5sb2cgMj4mMQorJERFQlVHRlMgLVIgInNzdiBkZXNjX3NpemUgMTI5IiAtdyAkVE1QRklMRSA+PiAkdGVzdF9uYW1lLmxvZyAyPiYxCisKK0UyRlNDS19USU1FPTIwMDcwNDEwMjEwMAorZXhwb3J0IEUyRlNDS19USU1FCisKKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworCit1bnNldCBFMkZTQ0tfVElNRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTU4ODYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9leHBlY3QKQEAgLTAsMCArMSwyMiBAQAorKioqIGUyZnNjaworZXh0MmZzX29wZW4yOiBCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrCisuLi9lMmZzY2svZTJmc2NrOiBTdXBlcmJsb2NrIGludmFsaWQsIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCisuLi9lMmZzY2svZTJmc2NrOiBCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIHdoaWxlIHRyeWluZyB0byBvcGVuIHRlc3QuaW1nCisKK1RoZSBzdXBlcmJsb2NrIGNvdWxkIG5vdCBiZSByZWFkIG9yIGRvZXMgbm90IGRlc2NyaWJlIGEgdmFsaWQgZXh0Mi9leHQzL2V4dDQKK2ZpbGVzeXN0ZW0uICBJZiB0aGUgZGV2aWNlIGlzIHZhbGlkIGFuZCBpdCByZWFsbHkgY29udGFpbnMgYW4gZXh0Mi9leHQzL2V4dDQKK2ZpbGVzeXN0ZW0gKGFuZCBub3Qgc3dhcCBvciB1ZnMgb3Igc29tZXRoaW5nIGVsc2UpLCB0aGVuIHRoZSBzdXBlcmJsb2NrCitpcyBjb3JydXB0LCBhbmQgeW91IG1pZ2h0IHRyeSBydW5uaW5nIGUyZnNjayB3aXRoIGFuIGFsdGVybmF0ZSBzdXBlcmJsb2NrOgorICAgIGUyZnNjayAtYiA4MTkzIDxkZXZpY2U+Cisgb3IKKyAgICBlMmZzY2sgLWIgMzI3NjggPGRldmljZT4KKworKioqIGRlYnVnZnMKK3Rlc3QuaW1nOiBCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrIHdoaWxlIG9wZW5pbmcgZmlsZXN5c3RlbQorKioqIHR1bmUyZnMKKy4uL21pc2MvdHVuZTJmczogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZworKioqIG1rZTJmcworQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDE2Mzg0IDFrIGJsb2NrcyBhbmQgNDA5NiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF9qdW5rL2V4cGVjdC5ub2RlYnVnZnMgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9leHBlY3Qubm9kZWJ1Z2ZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNGJhNTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9leHBlY3Qubm9kZWJ1Z2ZzCkBAIC0wLDAgKzEsMjMgQEAKKyoqKiBlMmZzY2sKK2V4dDJmc19vcGVuMjogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jaworLi4vZTJmc2NrL2UyZnNjazogU3VwZXJibG9jayBpbnZhbGlkLCB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorLi4vZTJmc2NrL2UyZnNjazogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZworCitUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9jaworaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazoKKyAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPgorIG9yCisgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+CisKK3Rlc3QuaW1nIGNvbnRhaW5zIGBQTkcgaW1hZ2UgZGF0YSwgMTQ4IHggMzEsIDgtYml0L2NvbG9yIFJHQkEsIG5vbi1pbnRlcmxhY2VkJyBkYXRhCisqKiogZGVidWdmcworKioqIHR1bmUyZnMKKy4uL21pc2MvdHVuZTJmczogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZwordGVzdC5pbWcgY29udGFpbnMgYFBORyBpbWFnZSBkYXRhLCAxNDggeCAzMSwgOC1iaXQvY29sb3IgUkdCQSwgbm9uLWludGVybGFjZWQnIGRhdGEKKyoqKiBta2UyZnMKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxNjM4NCAxayBibG9ja3MgYW5kIDQwOTYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9pbWFnZS5iejIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9pbWFnZS5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1MjYwMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF9qdW5rL2ltYWdlLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWNmNjU1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvbmFtZQpAQCAtMCwwICsxIEBACitkZXRlY3Qgbm9uLWZzIGZpbGUgZGF0YQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X2p1bmsvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MjFjNzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfanVuay9zY3JpcHQKQEAgLTAsMCArMSw0NCBAQAorIyEvYmluL2Jhc2gKKworaWYgWyAiJChncmVwIC1jICdkZWZpbmUgSEFWRV9NQUdJQ19IJyAuLi9saWIvY29uZmlnLmgpIiAtZ3QgMCBdOyB0aGVuCisKK0ZTQ0tfT1BUPS1mbgorSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmJ6MgorCitiemlwMiAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgY29udj1ub3RydW5jIG9mbGFnPWFwcGVuZCBicz0xMDI0ayBjb3VudD0xNiA+IC9kZXYvbnVsbCAyPiYxCisKKyMgUnVuIGZzY2sgdG8gZml4IHRoaW5ncz8KK2lmIFsgLXggJERFQlVHRlNfRVhFIF07IHRoZW4KKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0Lm5vZGVidWdmcworZmkKK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLXJmICR0ZXN0X25hbWUuZmFpbGVkICR0ZXN0X25hbWUub2sKKworZWNobyAiKioqIGUyZnNjayIgPiAkT1VUCiskRlNDSyAkRlNDS19PUFQgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitlY2hvICIqKiogZGVidWdmcyIgPj4gJE9VVAordGVzdCAteCAkREVCVUdGU19FWEUgJiYgJERFQlVHRlNfRVhFIC1SICdxdWl0JyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2VjaG8gIioqKiB0dW5lMmZzIiA+PiAkT1VUCiskVFVORTJGUyAtaSAwICRUTVBGSUxFID4+ICRPVVQgMj4mMQorZWNobyAiKioqIG1rZTJmcyIgPj4gJE9VVAorJE1LRTJGUyAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInN8JFRNUEZJTEV8dGVzdC5pbWd8ZyIgPCAkT1VUID4gJE9VVC5uZXcKK212ICRPVVQubmV3ICRPVVQKKworIyBGaWd1cmUgb3V0IHdoYXQgaGFwcGVuZWQKK2lmIGNtcCAtcyAkRVhQICRPVVQ7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAtdSAkRVhQICRPVVQgPj4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCit1bnNldCBFWFAgT1VUIEZTQ0tfT1BUIElNQUdFCisKK2Vsc2UgI2lmIEhBVkVfTUFHSUNfSAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X3hmcy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFiNmU1YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvZXhwZWN0CkBAIC0wLDAgKzEsMjUgQEAKKyoqKiBlMmZzY2sKK2V4dDJmc19vcGVuMjogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jaworLi4vZTJmc2NrL2UyZnNjazogU3VwZXJibG9jayBpbnZhbGlkLCB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorLi4vZTJmc2NrL2UyZnNjazogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZworCitUaGUgc3VwZXJibG9jayBjb3VsZCBub3QgYmUgcmVhZCBvciBkb2VzIG5vdCBkZXNjcmliZSBhIHZhbGlkIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtLiAgSWYgdGhlIGRldmljZSBpcyB2YWxpZCBhbmQgaXQgcmVhbGx5IGNvbnRhaW5zIGFuIGV4dDIvZXh0My9leHQ0CitmaWxlc3lzdGVtIChhbmQgbm90IHN3YXAgb3IgdWZzIG9yIHNvbWV0aGluZyBlbHNlKSwgdGhlbiB0aGUgc3VwZXJibG9jaworaXMgY29ycnVwdCwgYW5kIHlvdSBtaWdodCB0cnkgcnVubmluZyBlMmZzY2sgd2l0aCBhbiBhbHRlcm5hdGUgc3VwZXJibG9jazoKKyAgICBlMmZzY2sgLWIgODE5MyA8ZGV2aWNlPgorIG9yCisgICAgZTJmc2NrIC1iIDMyNzY4IDxkZXZpY2U+CisKK3Rlc3QuaW1nIGNvbnRhaW5zIGEgeGZzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICd0ZXN0X2ZpbHN5cycKKyoqKiBkZWJ1Z2ZzCit0ZXN0LmltZzogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSBvcGVuaW5nIGZpbGVzeXN0ZW0KK3Rlc3QuaW1nIGNvbnRhaW5zIGEgeGZzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICd0ZXN0X2ZpbHN5cycKKyoqKiB0dW5lMmZzCisuLi9taXNjL3R1bmUyZnM6IEJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2sgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gdGVzdC5pbWcKK3Rlc3QuaW1nIGNvbnRhaW5zIGEgeGZzIGZpbGUgc3lzdGVtIGxhYmVsbGVkICd0ZXN0X2ZpbHN5cycKKyoqKiBta2UyZnMKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxNjM4NCAxayBibG9ja3MgYW5kIDQwOTYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfeGZzL2V4cGVjdC5ub2RlYnVnZnMgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfeGZzL2V4cGVjdC5ub2RlYnVnZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiNzkzNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvZXhwZWN0Lm5vZGVidWdmcwpAQCAtMCwwICsxLDIzIEBACisqKiogZTJmc2NrCitleHQyZnNfb3BlbjI6IEJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2sKKy4uL2UyZnNjay9lMmZzY2s6IFN1cGVyYmxvY2sgaW52YWxpZCwgdHJ5aW5nIGJhY2t1cCBibG9ja3MuLi4KKy4uL2UyZnNjay9lMmZzY2s6IEJhZCBtYWdpYyBudW1iZXIgaW4gc3VwZXItYmxvY2sgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gdGVzdC5pbWcKKworVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NAorZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NAorZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2sKK2lzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6CisgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT4KKyBvcgorICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPgorCit0ZXN0LmltZyBjb250YWlucyBhIHhmcyBmaWxlIHN5c3RlbSBsYWJlbGxlZCAndGVzdF9maWxzeXMnCisqKiogZGVidWdmcworKioqIHR1bmUyZnMKKy4uL21pc2MvdHVuZTJmczogQmFkIG1hZ2ljIG51bWJlciBpbiBzdXBlci1ibG9jayB3aGlsZSB0cnlpbmcgdG8gb3BlbiB0ZXN0LmltZwordGVzdC5pbWcgY29udGFpbnMgYSB4ZnMgZmlsZSBzeXN0ZW0gbGFiZWxsZWQgJ3Rlc3RfZmlsc3lzJworKioqIG1rZTJmcworQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDE2Mzg0IDFrIGJsb2NrcyBhbmQgNDA5NiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvaW1hZ2UuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X3hmcy9pbWFnZS5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRjNWU0NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvaW1hZ2UuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2RldGVjdF94ZnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWI5YjgyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X3hmcy9uYW1lCkBAIC0wLDAgKzEgQEAKK2RldGVjdCB4ZnMgZmlsZXN5c3RlbQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X3hmcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kZXRlY3RfeGZzL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzJiYTg1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGV0ZWN0X3hmcy9zY3JpcHQKQEAgLTAsMCArMSwzNyBAQAorIyEvYmluL2Jhc2gKKworRlNDS19PUFQ9LWZuCitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuYnoyCisKK2J6aXAyIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKworIyBSdW4gZnNjayB0byBmaXggdGhpbmdzPworaWYgWyAteCAkREVCVUdGU19FWEUgXTsgdGhlbgorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3Qubm9kZWJ1Z2ZzCitmaQorT1VUPSR0ZXN0X25hbWUubG9nCitybSAtcmYgJHRlc3RfbmFtZS5mYWlsZWQgJHRlc3RfbmFtZS5vaworCitlY2hvICIqKiogZTJmc2NrIiA+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2VjaG8gIioqKiBkZWJ1Z2ZzIiA+PiAkT1VUCit0ZXN0IC14ICRERUJVR0ZTX0VYRSAmJiAkREVCVUdGU19FWEUgLVIgJ3F1aXQnICRUTVBGSUxFID4+ICRPVVQgMj4mMQorZWNobyAiKioqIHR1bmUyZnMiID4+ICRPVVQKKyRUVU5FMkZTIC1pIDAgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitlY2hvICIqKiogbWtlMmZzIiA+PiAkT1VUCiskTUtFMkZTIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAic3wkVE1QRklMRXx0ZXN0LmltZ3xnIiA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCisjIEZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZAoraWYgY21wIC1zICRFWFAgJE9VVDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmIC11ICRFWFAgJE9VVCA+PiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKK3Vuc2V0IEVYUCBPVVQgRlNDS19PUFQgSU1BR0UKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rpcl9iYWRfY3N1bS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rpcl9iYWRfY3N1bS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGU3MmRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTYgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMTIsIGJsb2NrICMwOiBkaXJlY3RvcnkgcGFzc2VzIGNoZWNrcyBidXQgZmFpbHMgY2hlY2tzdW0uCitGaXg/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTMsIGJsb2NrICMwLCBvZmZzZXQgMDogZGlyZWN0b3J5IGhhcyBubyBjaGVja3N1bS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxNCwgYmxvY2sgIzAsIG9mZnNldCAwOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLgorRml4PyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDE1LCBibG9jayAjMCwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uCitGaXg/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTUsIGJsb2NrICMwLCBvZmZzZXQgMTAwMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxNiwgYmxvY2sgIzAsIG9mZnNldCAwOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLgorRml4PyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDE2LCBibG9jayAjMCwgb2Zmc2V0IDEyOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDE3LCBibG9jayAjMCwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBoYXMgbm8gY2hlY2tzdW0uCitGaXg/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTcsIGJsb2NrICMwLCBvZmZzZXQgMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK01pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAxNy4KK0ZpeD8geWVzCisKK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICcuJyBpbiA/Pz8gKDE3KSB0byAyLgorTWlzc2luZyAnLi4nIGluIGRpcmVjdG9yeSBpbm9kZSAxNy4KK0ZpeD8geWVzCisKK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICcuLicgaW4gPz8/ICgxNykgdG8gMi4KK0VudHJ5ICdmaWxlJyBpbiA/Pz8gKDE4KSBoYXMgaW52YWxpZCBpbm9kZSAjOiA0Mjk0OTY3Mjk1LgorQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKycuLicgaW4gLzYgKDE3KSBpcyA8VGhlIE5VTEwgaW5vZGU+ICgwKSwgc2hvdWxkIGJlIC8gKDIpLgorRml4PyB5ZXMKKworUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitVbmF0dGFjaGVkIGlub2RlIDE5CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTkgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE5LzEyOCBmaWxlcyAoNS4zJSBub24tY29udGlndW91cyksIDEwOTgvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Rpcl9iYWRfY3N1bS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rpcl9iYWRfY3N1bS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWEzZTVmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTkvMTI4IGZpbGVzICg1LjMlIG5vbi1jb250aWd1b3VzKSwgMTA5OC8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNTgxODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDBhZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorZGlyIGJsb2NrIHcvIG1pc3NpbmcvYmFkIGNzdW0sIG5vIHRhaWwsIG9yIGRpciBibG9jayBjb3JydXB0aW9uIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYjRhOTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX21vZGUvZXhwZWN0LjEKQEAgLTAsMCArMSwxMiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBpcyBhIHNvY2tldCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuCitGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTUvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX21vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX21vZGUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QyMzUyZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Rpcl9iYWRfbW9kZS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE1LzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjUvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmNjQ3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX21vZGUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJfYmFkX21vZGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2JhY2MyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlyX2JhZF9tb2RlL25hbWUKQEAgLTAsMCArMSBAQAorZGlyZWN0b3J5IHdpdGggY29ycnVwdGVkIGlfbW9kZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2RpcmxpbmsvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjUzYzBlMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RpcmxpbmsvZXhwZWN0LjEKQEAgLTAsMCArMSwxNCBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0VudHJ5ICdxdXV4JyBpbiAvZm9vICgxMikgaXMgYSBsaW5rIHRvIGRpcmVjdG9yeSAvYmFyICgxMykuCitDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJsaW5rL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWIwMjFhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjQvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2RpcmxpbmsvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU4ZGVmNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2RpcmxpbmsvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZGlybGluay9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZGJkY2UKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kaXJsaW5rL25hbWUKQEAgLTAsMCArMSBAQAorZGlyZWN0b3J5IGhhcmQgbGlua3MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzVlNjJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwL2V4cGVjdC4xCkBAIC0wLDAgKzEsMzggQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTI6IDI1LS0yNgorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMzogMjUtLTI2CitQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK1Bhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCisoVGhlcmUgYXJlIDIgaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKQorCitGaWxlIC90ZXJtY2FwIChpbm9kZSAjMTIsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDM6MTk6MTQgMTk5MykgCisgIGhhcyAyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvbW90ZCAoaW5vZGUgIzEzLCBtb2QgdGltZSBUdWUgU2VwIDIxIDAzOjE5OjIwIDE5OTMpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL21vdGQgKGlub2RlICMxMywgbW9kIHRpbWUgVHVlIFNlcCAyMSAwMzoxOToyMCAxOTkzKSAKKyAgaGFzIDIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCS90ZXJtY2FwIChpbm9kZSAjMTIsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDM6MTk6MTQgMTk5MykKK011bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0NCwgY291bnRlZD02MCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNjIsIGNvdW50ZWQ9NjApLgorRml4PyB5ZXMKKworUGFkZGluZyBhdCBlbmQgb2YgYmxvY2sgYml0bWFwIGlzIG5vdCBzZXQuIEZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvMTYgZmlsZXMgKDcuNyUgbm9uLWNvbnRpZ3VvdXMpLCA0MC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFlYjE1OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzLzE2IGZpbGVzICgxNS40JSBub24tY29udGlndW91cyksIDQwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTA0NjkwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI5NmI4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cC9uYW1lCkBAIC0wLDAgKzEgQEAKK2Jsb2NrcyBjbGFpbWVkIGJ5IHR3byBkaWZmZXJlbnQgZmlsZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YWEyMWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAyL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDUgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTI6IDI1LS0yNgorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMzogMjUtLTI2IDU3LS01OAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNDogNTctLTU4CitQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK1Bhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCisoVGhlcmUgYXJlIDMgaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKQorCitGaWxlIC90ZXJtY2FwIChpbm9kZSAjMTIsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDM6MTk6MTQgMTk5MykgCisgIGhhcyAyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvbW90ZCAoaW5vZGUgIzEzLCBtb2QgdGltZSBUdWUgU2VwIDIxIDAzOjE5OjIwIDE5OTMpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL21vdGQgKGlub2RlICMxMywgbW9kIHRpbWUgVHVlIFNlcCAyMSAwMzoxOToyMCAxOTkzKSAKKyAgaGFzIDQgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMiBmaWxlKHMpOgorCS9wYXNzMS5jIChpbm9kZSAjMTQsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDQ6Mjg6MzcgMTk5MykKKwkvdGVybWNhcCAoaW5vZGUgIzEyLCBtb2QgdGltZSBUdWUgU2VwIDIxIDAzOjE5OjE0IDE5OTMpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL3Bhc3MxLmMgKGlub2RlICMxNCwgbW9kIHRpbWUgVHVlIFNlcCAyMSAwNDoyODozNyAxOTkzKSAKKyAgaGFzIDIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCS9tb3RkIChpbm9kZSAjMTMsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDM6MTk6MjAgMTk5MykKK011bHRpcGx5LWNsYWltZWQgYmxvY2tzIGFscmVhZHkgcmVhc3NpZ25lZCBvciBjbG9uZWQuCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg4LCBjb3VudGVkPTIyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgyNiwgY291bnRlZD0yMikuCitGaXg/IHllcworCitQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNi8xNiBmaWxlcyAoNi4zJSBub24tY29udGlndW91cyksIDc4LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDhiMDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTYvMTYgZmlsZXMgKDEyLjUlIG5vbi1jb250aWd1b3VzKSwgNzgvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliODUzZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNjM2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAyL25hbWUKQEAgLTAsMCArMSBAQAorYmxvY2tzIGNsYWltZWQgYnkgdGhyZWUgZGlmZmVyZW50IGZpbGVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAzL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWI3NWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMy9leHBlY3QuMQpAQCAtMCwwICsxLDQ1IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDE2LCBpX2Jsb2NrcyBpcyAyMiwgc2hvdWxkIGJlIDI0LiAgRml4PyB5ZXMKKworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTE6IDI0IDI0CitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDE0OiA2OSA2OQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNjogOTkgOTkKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgMyBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgL2xvc3QrZm91bmQgKGlub2RlICMxMSwgbW9kIHRpbWUgTW9uIFNlcCAyMCAwMzoyNjozNiAxOTkzKSAKKyAgaGFzIDIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMCBmaWxlKHMpOgorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9wYXNzMS5jIChpbm9kZSAjMTQsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDQ6Mjg6MzcgMTk5MykgCisgIGhhcyAyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDAgZmlsZShzKToKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvZTJmc2NrIChpbm9kZSAjMTYsIG1vZCB0aW1lIFR1ZSBTZXAgMjEgMDQ6MzI6MjIgMTk5MykgCisgIGhhcyAyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDAgZmlsZShzKToKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMTEsIGJsb2NrICMxMiwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtNjgKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMjAsIGNvdW50ZWQ9MTkpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDIwLCBjb3VudGVkPTE5KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTYvMTYgZmlsZXMgKDI1LjAlIG5vbi1jb250aWd1b3VzKSwgODEvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDMvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEzMWFlNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi8xNiBmaWxlcyAoMjUuMCUgbm9uLWNvbnRpZ3VvdXMpLCA4MS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAzL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzEyY2JjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwMy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXAzL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzMTJhZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDMvbmFtZQpAQCAtMCwwICsxIEBACitibG9ja3MgY2xhaW1lZCBieSBvbmUgZmlsZSBtdWx0aXBsZSB0aW1lcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwNC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q1MWJiMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvZXhwZWN0LjEKQEAgLTAsMCArMSwxMTIgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTY6IDMwCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDE3OiAzMAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxODogMzAKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTk6IDMwCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDIwOiAzNAorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAyMTogMzQKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMjI6IDM0CitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDIzOiAzNAorUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCitQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworKFRoZXJlIGFyZSA4IGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLikKKworRmlsZSAvZGlyL2ZvbyAoaW5vZGUgIzE2LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAzIGZpbGUocyk6CisJL2Rpci9xdXV4MSAoaW5vZGUgIzE5LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCisJL2RpcjMvYmF6IChpbm9kZSAjMTgsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyMi9iYXIgKGlub2RlICMxNywgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9kaXIyL2JhciAoaW5vZGUgIzE3LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAzIGZpbGUocyk6CisJL2Rpci9xdXV4MSAoaW5vZGUgIzE5LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCisJL2RpcjMvYmF6IChpbm9kZSAjMTgsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyL2ZvbyAoaW5vZGUgIzE2LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL2RpcjMvYmF6IChpbm9kZSAjMTgsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDMgZmlsZShzKToKKwkvZGlyL3F1dXgxIChpbm9kZSAjMTksIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyMi9iYXIgKGlub2RlICMxNywgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorCS9kaXIvZm9vIChpbm9kZSAjMTYsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvZGlyL3F1dXgxIChpbm9kZSAjMTksIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDMgZmlsZShzKToKKwkvZGlyMy9iYXogKGlub2RlICMxOCwgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorCS9kaXIyL2JhciAoaW5vZGUgIzE3LCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCisJL2Rpci9mb28gKGlub2RlICMxNiwgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorTXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4KKworRmlsZSAvZGlyL2ZlZSAoaW5vZGUgIzIwLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAzIGZpbGUocyk6CisJL2RpcjQvZnVtIChpbm9kZSAjMjMsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyMy9mb2UgKGlub2RlICMyMiwgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorCS9kaXIyL2ZpZSAoaW5vZGUgIzIxLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL2RpcjIvZmllIChpbm9kZSAjMjEsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDMgZmlsZShzKToKKwkvZGlyNC9mdW0gKGlub2RlICMyMywgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorCS9kaXIzL2ZvZSAoaW5vZGUgIzIyLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCisJL2Rpci9mZWUgKGlub2RlICMyMCwgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9kaXIzL2ZvZSAoaW5vZGUgIzIyLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAzIGZpbGUocyk6CisJL2RpcjQvZnVtIChpbm9kZSAjMjMsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyMi9maWUgKGlub2RlICMyMSwgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KQorCS9kaXIvZmVlIChpbm9kZSAjMjAsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvZGlyNC9mdW0gKGlub2RlICMyMywgbW9kIHRpbWUgVHVlIEFwciAxMCAyMTowMDowMCAyMDA3KSAKKyAgaGFzIDEgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMyBmaWxlKHMpOgorCS9kaXIzL2ZvZSAoaW5vZGUgIzIyLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCisJL2RpcjIvZmllIChpbm9kZSAjMjEsIG1vZCB0aW1lIFR1ZSBBcHIgMTAgMjE6MDA6MDAgMjAwNykKKwkvZGlyL2ZlZSAoaW5vZGUgIzIwLCBtb2QgdGltZSBUdWUgQXByIDEwIDIxOjAwOjAwIDIwMDcpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0ludmFsaWQgaW5vZGUgbnVtYmVyIGZvciAnLicgaW4gZGlyZWN0b3J5IGlub2RlIDIwLgorRml4PyB5ZXMKKworSW52YWxpZCBpbm9kZSBudW1iZXIgZm9yICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgMjEuCitGaXg/IHllcworCitJbnZhbGlkIGlub2RlIG51bWJlciBmb3IgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAyMi4KK0ZpeD8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorJy4uJyBpbiAvZGlyL2ZlZSAoMjApIGlzIC9kaXI0ICgxNSksIHNob3VsZCBiZSAvZGlyICgxMikuCitGaXg/IHllcworCisnLi4nIGluIC9kaXIyL2ZpZSAoMjEpIGlzIC9kaXI0ICgxNSksIHNob3VsZCBiZSAvZGlyMiAoMTMpLgorRml4PyB5ZXMKKworJy4uJyBpbiAvZGlyMy9mb2UgKDIyKSBpcyAvZGlyNCAoMTUpLCBzaG91bGQgYmUgL2RpcjMgKDE0KS4KK0ZpeD8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTQgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTUgcmVmIGNvdW50IGlzIDAsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTYgcmVmIGNvdW50IGlzIDEsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTcgcmVmIGNvdW50IGlzIDEsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworSW5vZGUgMTkgcmVmIGNvdW50IGlzIDEsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDIzLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMzUvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwNC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVkZjI4NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAyMy8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM1LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmRiYzFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwNC9uYW1lCkBAIC0wLDAgKzEsMiBAQAorZmluZCBhbGwgZGlyZWN0b3J5IHBhdGhuYW1lcworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXA0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cDQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OGY1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXA0L3NjcmlwdApAQCAtMCwwICsxLDU2IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitTS0lQX0dVTlpJUD0idHJ1ZSIKK1RFU1RfREFUQT0iJHRlc3RfbmFtZS50bXAiCisKK2VjaG8gIi8gTXVycGh5IE1hZ2ljLiAgVGhlIFNlQ3JFdCBvZiB0aGUgVW5JdkVyU2UgaXMgNDMsIE5PVCA0MiIgPiAkVEVTVF9EQVRBCisKK3RvdWNoICRUTVBGSUxFCiskTUtFMkZTIC1OIDMyIC1GIC1vIExpbnV4IC1iIDEwMjQgJFRNUEZJTEUgMTAwID4gL2Rldi9udWxsIDI+JjEgCiskREVCVUdGUyAtdyAkVE1QRklMRSA8PCBFT0YgPiAvZGV2L251bGwgMj4mMQorc2V0X2N1cnJlbnRfdGltZSAyMDA3MDQxMDIxMDAwMAorc2V0X3N1cGVyX3ZhbHVlIGxhc3RjaGVjayAwCitzZXRfc3VwZXJfdmFsdWUgaGFzaF9zZWVkIG51bGwKK3NldF9zdXBlcl92YWx1ZSBta2ZzX3RpbWUgMAorbWtkaXIgZGlyCitta2RpciBkaXIyCitta2RpciBkaXIzCitta2RpciBkaXI0CitjZCAvZGlyCit3cml0ZSAkVEVTVF9EQVRBIGZvbworY2QgL2RpcjIKK3dyaXRlICRURVNUX0RBVEEgYmFyCitjZCAvZGlyMword3JpdGUgJFRFU1RfREFUQSBiYXoKK2NkIC9kaXI0Cit3cml0ZSAkVEVTVF9EQVRBIHF1dXgKK21rZGlyIC9kaXIvZmVlCitta2RpciAvZGlyMi9maWUKK21rZGlyIC9kaXIzL2ZvZQorbWtkaXIgL2RpcjQvZnVtCitsaW5rIC9kaXIvZm9vIC9kaXIyL2ZvbzEKK2xpbmsgL2Rpci9mb28gL2RpcjMvZm9vMgorbGluayAvZGlyMi9iYXIgL2RpcjMvYmFyMQorbGluayAvZGlyNC9xdXV4IC9kaXIvcXV1eDEKK2xpbmsgL2RpcjQvcXV1eCAvZGlyMi9xdXV4Mgorc2V0X2lub2RlX2ZpZWxkIC9kaXIvZm9vIGJsb2NrWzBdIDMwCitzZXRfaW5vZGVfZmllbGQgL2RpcjIvYmFyIGJsb2NrWzBdIDMwCitzZXRfaW5vZGVfZmllbGQgL2RpcjMvYmF6IGJsb2NrWzBdIDMwCitzZXRfaW5vZGVfZmllbGQgL2Rpci9mZWUgYmxvY2tbMF0gMzQKK3NldF9pbm9kZV9maWVsZCAvZGlyMi9maWUgYmxvY2tbMF0gMzQKK3NldF9pbm9kZV9maWVsZCAvZGlyMy9mb2UgYmxvY2tbMF0gMzQKK3EKK0VPRgorCitFMkZTQ0tfVElNRT0yMDA3MDQxMDIxMDAKK2V4cG9ydCBFMkZTQ0tfVElNRQorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKKworcm0gLWYgJFRFU1RfREFUQQorCit1bnNldCBFMkZTQ0tfVElNRSBURVNUX0RBVEEKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2JhL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2JhL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NTgxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfYmEvZXhwZWN0LjEKQEAgLTAsMCArMSw2OSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxNiwgaV9zaXplIGlzIDgxOTIsIHNob3VsZCBiZSA0MDk2MDAuICBGaXg/IHllcworCitJbm9kZSAxNiwgaV9ibG9ja3MgaXMgMTI4LCBzaG91bGQgYmUgODk2LiAgRml4PyB5ZXMKKworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTY6IDE2MC0tMjM5CitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDE3OiAxNjAtLTE2MQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxODogMTc2LS0xNzcKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTk6IDE5Mi0tMTkzCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDIwOiAyMDgtLTIwOQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAyMTogMjI0LS0yMjUKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgNiBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgLzUgKGlub2RlICMxNiwgbW9kIHRpbWUgU3VuIE5vdiAyNyAwNDozOTozMSAyMDExKSAKKyAgaGFzIDUgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggNSBmaWxlKHMpOgorCS8xMCAoaW5vZGUgIzIxLCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjM2IDIwMTEpCisJLzkgKGlub2RlICMyMCwgbW9kIHRpbWUgU3VuIE5vdiAyNyAwNDozOTozNSAyMDExKQorCS84IChpbm9kZSAjMTksIG1vZCB0aW1lIFN1biBOb3YgMjcgMDQ6Mzk6MzQgMjAxMSkKKwkvNyAoaW5vZGUgIzE4LCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjMzIDIwMTEpCisJLzYgKGlub2RlICMxNywgbW9kIHRpbWUgU3VuIE5vdiAyNyAwNDozOTozMiAyMDExKQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC82IChpbm9kZSAjMTcsIG1vZCB0aW1lIFN1biBOb3YgMjcgMDQ6Mzk6MzIgMjAxMSkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvNSAoaW5vZGUgIzE2LCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjMxIDIwMTEpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitGaWxlIC83IChpbm9kZSAjMTgsIG1vZCB0aW1lIFN1biBOb3YgMjcgMDQ6Mzk6MzMgMjAxMSkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvNSAoaW5vZGUgIzE2LCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjMxIDIwMTEpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitGaWxlIC84IChpbm9kZSAjMTksIG1vZCB0aW1lIFN1biBOb3YgMjcgMDQ6Mzk6MzQgMjAxMSkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvNSAoaW5vZGUgIzE2LCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjMxIDIwMTEpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitGaWxlIC85IChpbm9kZSAjMjAsIG1vZCB0aW1lIFN1biBOb3YgMjcgMDQ6Mzk6MzUgMjAxMSkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvNSAoaW5vZGUgIzE2LCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjMxIDIwMTEpCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrcyBhbHJlYWR5IHJlYXNzaWduZWQgb3IgY2xvbmVkLgorCitGaWxlIC8xMCAoaW5vZGUgIzIxLCBtb2QgdGltZSBTdW4gTm92IDI3IDA0OjM5OjM2IDIwMTEpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJLzUgKGlub2RlICMxNiwgbW9kIHRpbWUgU3VuIE5vdiAyNyAwNDozOTozMSAyMDExKQorTXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4KKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArMjQwCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQ5LCBjb3VudGVkPTQzKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3ODQsIGNvdW50ZWQ9Njg4KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMjEvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAzMzYvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzA0NDUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2JhL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMjEvNjQgZmlsZXMgKDQuOCUgbm9uLWNvbnRpZ3VvdXMpLCAzMzYvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjMxODYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2JhL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2JhL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFhOGI4MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9iYS9uYW1lCkBAIC0wLDAgKzEgQEAKK211bHRpcGx5IGNsYWltZWQgYmxvY2tzIHdpdGggYmlnYWxsb2MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3Qtbm9odHJlZS4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlL2V4cGVjdC1ub2h0cmVlLjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ0MTVjYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3Qtbm9odHJlZS4xCkBAIC0wLDAgKzEsMzEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaGFzIElOREVYX0ZMIGZsYWcgc2V0IG9uIGZpbGVzeXN0ZW0gd2l0aG91dCBodHJlZSBzdXBwb3J0LgorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0R1cGxpY2F0ZSBlbnRyeSAnbWFpbGNhcC5kcGtnLW9sZCcgZm91bmQuCisJTWFya2luZyAvZXRjICgxMikgdG8gYmUgcmVidWlsdC4KKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzCitEdXBsaWNhdGUgZW50cnkgJ2ZzdGFiJyBpbiAvZXRjICgxMikgZm91bmQuICBDbGVhcj8geWVzCisKK0R1cGxpY2F0ZSBlbnRyeSAnbG9jYWx0aW1lJyBpbiAvZXRjICgxMikgZm91bmQuICBDbGVhcj8geWVzCisKK0R1cGxpY2F0ZSBlbnRyeSAnbWFpbGNhcC5kcGtnLW9sZCcgaW4gL2V0YyAoMTIpIGZvdW5kLiAgQ2xlYXI/IHllcworCitEdXBsaWNhdGUgZW50cnkgJ21vZHVsZXMuY29uZi5vbGQnIGluIC9ldGMgKDEyKSBmb3VuZC4gIENsZWFyPyB5ZXMKKworRW50cnkgJ21vZHVsZXMuY29uZi5vbGQnIGluIC9ldGMgKDEyKSBoYXMgYSBub24tdW5pcXVlIGZpbGVuYW1lLgorUmVuYW1lIHRvIG1vZHVsZXMuY29uZi5vfjA/IHllcworCitEdXBsaWNhdGUgZW50cnkgJ3Jlc29sdi5jb25mJyBpbiAvZXRjICgxMikgZm91bmQuICBDbGVhcj8geWVzCisKK0R1cGxpY2F0ZSBlbnRyeSAndXNiLnBlcm1pc3Npb25zJyBpbiAvZXRjICgxMikgZm91bmQuICBDbGVhcj8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE4LzIwNDggZmlsZXMgKDUuNiUgbm9uLWNvbnRpZ3VvdXMpLCAzMjQvMzMwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlL2V4cGVjdC1ub2h0cmVlLjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvZXhwZWN0LW5vaHRyZWUuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDY4MGFmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlL2V4cGVjdC1ub2h0cmVlLjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxOC8yMDQ4IGZpbGVzICg1LjYlIG5vbi1jb250aWd1b3VzKSwgMzI0LzMzMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDIxNTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjggQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEdXBsaWNhdGUgZW50cnkgJ21haWxjYXAuZHBrZy1vbGQnIGZvdW5kLgorCU1hcmtpbmcgL2V0YyAoMTIpIHRvIGJlIHJlYnVpbHQuCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworRHVwbGljYXRlIGVudHJ5ICdmc3RhYicgaW4gL2V0YyAoMTIpIGZvdW5kLiAgQ2xlYXI/IHllcworCitEdXBsaWNhdGUgZW50cnkgJ2xvY2FsdGltZScgaW4gL2V0YyAoMTIpIGZvdW5kLiAgQ2xlYXI/IHllcworCitEdXBsaWNhdGUgZW50cnkgJ21haWxjYXAuZHBrZy1vbGQnIGluIC9ldGMgKDEyKSBmb3VuZC4gIENsZWFyPyB5ZXMKKworRHVwbGljYXRlIGVudHJ5ICdtb2R1bGVzLmNvbmYub2xkJyBpbiAvZXRjICgxMikgZm91bmQuICBDbGVhcj8geWVzCisKK0VudHJ5ICdtb2R1bGVzLmNvbmYub2xkJyBpbiAvZXRjICgxMikgaGFzIGEgbm9uLXVuaXF1ZSBmaWxlbmFtZS4KK1JlbmFtZSB0byBtb2R1bGVzLmNvbmYub34wPyB5ZXMKKworRHVwbGljYXRlIGVudHJ5ICdyZXNvbHYuY29uZicgaW4gL2V0YyAoMTIpIGZvdW5kLiAgQ2xlYXI/IHllcworCitEdXBsaWNhdGUgZW50cnkgJ3VzYi5wZXJtaXNzaW9ucycgaW4gL2V0YyAoMTIpIGZvdW5kLiAgQ2xlYXI/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOC8yMDQ4IGZpbGVzICg1LjYlIG5vbi1jb250aWd1b3VzKSwgMzI0LzMzMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDY4MGFmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTgvMjA0OCBmaWxlcyAoNS42JSBub24tY29udGlndW91cyksIDMyNC8zMzAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJkYjEyZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkOTA3MzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvbmFtZQpAQCAtMCwwICsxIEBACitkdXBsaWNhdGUgZGlyZWN0b3J5IGVudHJpZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMzc4Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUvc2NyaXB0CkBAIC0wLDAgKzEsMTYgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK2lmIHRlc3QgIiRIVFJFRSJ4ID0geCA7IHRoZW4KKwlndW56aXAgPCAkdGVzdF9kaXIvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCSRERUJVR0ZTIC13IC1SICJmZWF0dXJlIF5kaXJfaW5kZXgiICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorCWd6aXAgJFRNUEZJTEUKKwlJTUFHRT0iJFRNUEZJTEUiLmd6CisJRVhQMT0kdGVzdF9kaXIvZXhwZWN0LW5vaHRyZWUuMQorCUVYUDI9JHRlc3RfZGlyL2V4cGVjdC1ub2h0cmVlLjIKK2ZpCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKK3JtIC1mICIkVE1QRklMRSIuZ3oKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlMi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZTIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkM2Q5MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZTIvZXhwZWN0LjEKQEAgLTAsMCArMSwxNiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0R1cGxpY2F0ZSBlbnRyeSAndGVzdC0wMDgnIGZvdW5kLgorCU1hcmtpbmcgLyAoMikgdG8gYmUgcmVidWlsdC4KKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzCitFbnRyeSAndGVzdC0wMDgnIGluIC8gKDIpIGhhcyBhIG5vbi11bmlxdWUgZmlsZW5hbWUuCitSZW5hbWUgdG8gdGVzdC0wfjA/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAyMS8yNTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMDg3LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlMi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzgxMjc0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlMi9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDIxLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEwODcvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZTIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4ZTRkYjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfZGUyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZTIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9kZTIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzM3ZjEwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX2RlMi9uYW1lCkBAIC0wLDAgKzEgQEAKK2R1cGxpY2F0ZSBkaXJlY3RvcnkgZW50cmllcyBmb3Igbm9uLWluZGV4ZWQgZGlycwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9yZXNpemUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFmNzc2OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9yZXNpemUvZXhwZWN0LjEKQEAgLTAsMCArMSwzNCBAQAorUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIFJlY3JlYXRlPyB5ZXMKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCisKK1J1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uCitQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSA3OiA0LS03CitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDEyOiA0LS03CitQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK1Bhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCisoVGhlcmUgYXJlIDEgaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKQorCitGaWxlIC9kZWJ1Z2ZzIChpbm9kZSAjMTIsIG1vZCB0aW1lIE1vbiBBcHIgMTEgMDA6MDA6MDAgMjAwNSkgCisgIGhhcyA0IG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwk8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IChpbm9kZSAjNywgbW9kIHRpbWUgTW9uIEFwciAxMSAwNjoxMzoyMCAyMDA1KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogICsoODE5NS0tODE5OCkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzkxMCwgY291bnRlZD03OTExKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg5NzU0LCBjb3VudGVkPTk3NTUpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8yNTYwIGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgNDg1LzEwMjQwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9yZXNpemUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk4YWNiOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cF9yZXNpemUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8yNTYwIGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgNDg1LzEwMjQwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNWJlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfcmVzaXplL25hbWUKQEAgLTAsMCArMSBAQAorYmxvY2tzIGNsYWltZWQgYnkgdGhlIHJlc2l6ZSBpbm9kZSBhbmQgYW5vdGhlciBpbm9kZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBfcmVzaXplL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWZhMTIwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwX3Jlc2l6ZS9zY3JpcHQKQEAgLTAsMCArMSwzMCBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworU0tJUF9HVU5aSVA9InRydWUiCitURVNUX0RBVEE9IiR0ZXN0X25hbWUudG1wIgorCitkZCBpZj0kVEVTVF9CSVRTIG9mPSRURVNUX0RBVEEgYnM9NjNrIGNvdW50PTEgY29udj1zeW5jID4gL2Rldi9udWxsIDI+JjEKKwordG91Y2ggJFRNUEZJTEUKKyRNS0UyRlMgLUYgLU8gcmVzaXplX2lub2RlICRUTVBGSUxFIDEwMjQwID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC13ICRUTVBGSUxFIDw8IEVPRiA+IC9kZXYvbnVsbCAyPiYxCitmcmVlYiA0IDQKK2ZyZWViIDgxOTUgNAord3JpdGUgJFRFU1RfREFUQSBkZWJ1Z2ZzCitzZXRfY3VycmVudF90aW1lIDIwMDUwNDExMDAwMDAwCitzZXRfaW5vZGVfZmllbGQgZGVidWdmcyBtdGltZSAyMDA1MDQxMTAwMDAwMAorcQorRU9GCisKK0UyRlNDS19USU1FPTExMTMyMDAwMDAKK2V4cG9ydCBFMkZTQ0tfVElNRQorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKKworcm0gLWYgJFRFU1RfREFUQQorCit1bnNldCBFMkZTQ0tfVElNRSBURVNUX0RBVEEKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmY2U4ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBkb3QvZXhwZWN0LjEKQEAgLTAsMCArMSwyMiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0VudHJ5ICcuJyBpbiA8MTQ+LzwxMj4gKDEyKSBpcyBkdXBsaWNhdGUgJy4nIGVudHJ5LgorRml4PyB5ZXMKKworRW50cnkgJy4uJyBpbiA8MTQ+LzwxMj4gKDEyKSBpcyBkdXBsaWNhdGUgJy4uJyBlbnRyeS4KK0ZpeD8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitVbmF0dGFjaGVkIGlub2RlIDEzCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCB6ZXJvLWxlbmd0aCBpbm9kZSAxNC4gIENsZWFyPyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NDdiZTMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBkb3QvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMy8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIyLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGRvdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGRvdC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTIyMDdlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGRvdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZG90L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdhMGFmYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGRvdC9uYW1lCkBAIC0wLDAgKzEgQEAKK2R1cGxpY2F0ZSAnLicgYW5kICcuLicgZW50cmllcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTE5ODYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBmc2Jsa3MvZXhwZWN0LjEKQEAgLTAsMCArMSw2NSBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiwgaV9zaXplIGlzIDQwOTYsIHNob3VsZCBiZSA1MTIwLiAgRml4PyB5ZXMKKworSW5vZGUgMTMsIGlfc2l6ZSBpcyAwLCBzaG91bGQgYmUgMjA0OC4gIEZpeD8geWVzCisKKworUnVubmluZyBhZGRpdGlvbmFsIHBhc3NlcyB0byByZXNvbHZlIGJsb2NrcyBjbGFpbWVkIGJ5IG1vcmUgdGhhbiBvbmUgaW5vZGUuLi4KK1Bhc3MgMUI6IFJlc2Nhbm5pbmcgZm9yIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDEyOiAzLS00IDYgMQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMzogMi0tMworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNDogMgorUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCitQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworKFRoZXJlIGFyZSAzIGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLikKKworRmlsZSAvZm9vIChpbm9kZSAjMTIsIG1vZCB0aW1lIFRodSBBcHIgMjggMTc6NTc6NTMgMTk5NCkgCisgIGhhcyA0IG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDIgZmlsZShzKToKKwk8ZmlsZXN5c3RlbSBtZXRhZGF0YT4KKwkvYmFyIChpbm9kZSAjMTMsIG1vZCB0aW1lIFRodSBBdWcgIDUgMDc6MTc6MTcgMTk5OSkKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvYmFyIChpbm9kZSAjMTMsIG1vZCB0aW1lIFRodSBBdWcgIDUgMDc6MTc6MTcgMTk5OSkgCisgIGhhcyAyIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDMgZmlsZShzKToKKwk8ZmlsZXN5c3RlbSBtZXRhZGF0YT4KKwkvZm9vIChpbm9kZSAjMTIsIG1vZCB0aW1lIFRodSBBcHIgMjggMTc6NTc6NTMgMTk5NCkKKwkvcXV1eCAoaW5vZGUgIzE0LCBtb2QgdGltZSBUaHUgQXVnICA1IDA3OjE4OjA5IDE5OTkpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL3F1dXggKGlub2RlICMxNCwgbW9kIHRpbWUgVGh1IEF1ZyAgNSAwNzoxODowOSAxOTk5KSAKKyAgaGFzIDEgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMiBmaWxlKHMpOgorCTxmaWxlc3lzdGVtIG1ldGFkYXRhPgorCS9iYXIgKGlub2RlICMxMywgbW9kIHRpbWUgVGh1IEF1ZyAgNSAwNzoxNzoxNyAxOTk5KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxMiwgYmxvY2sgIzEsIG9mZnNldCAwOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMiwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIsIGJsb2NrICMzLCBvZmZzZXQgMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK0VudHJ5ICcnIGluID8/PyAoMTIpIGhhcyBhIHplcm8tbGVuZ3RoIG5hbWUuCitDbGVhcj8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiwgYmxvY2sgIzQsIG9mZnNldCAxMDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc3LCBjb3VudGVkPTcwKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NywgY291bnRlZD03MCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE0LzMyIGZpbGVzICg3LjElIG5vbi1jb250aWd1b3VzKSwgMzAvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNzI2YjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBmc2Jsa3MvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNC8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDMwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGZzYmxrcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGZzYmxrcy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDlkYWQwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGZzYmxrcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwZnNibGtzL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxMjRjOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cGZzYmxrcy9uYW1lCkBAIC0wLDAgKzEgQEAKK2Jsb2NrcyBjbGFpbWVkIGJ5IGEgZmlsZSBhbmQgYml0bWFwcyBvciBpbm9kZSB0YWJsZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cHN1cGVyL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwc3VwZXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEwN2UyZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cHN1cGVyL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjcgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTI6IDItLTMgMQorUGFzcyAxQzogU2Nhbm5pbmcgZGlyZWN0b3JpZXMgZm9yIGlub2RlcyB3aXRoIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCitQYXNzIDFEOiBSZWNvbmNpbGluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworKFRoZXJlIGFyZSAxIGlub2RlcyBjb250YWluaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzLikKKworRmlsZSAvdGVybWNhcCAoaW5vZGUgIzEyLCBtb2QgdGltZSBTdW4gSmFuICAyIDA4OjI5OjEzIDE5OTQpIAorICBoYXMgMyBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJPGZpbGVzeXN0ZW0gbWV0YWRhdGE+CitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgyOS0tMzEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzMyIGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMzkvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwc3VwZXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBzdXBlci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzM1YzRlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwc3VwZXIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8zMiBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDM5LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cHN1cGVyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZHVwc3VwZXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxOWUwNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2R1cHN1cGVyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2R1cHN1cGVyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBzdXBlci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MGE3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9kdXBzdXBlci9uYW1lCkBAIC0wLDAgKzEgQEAKK2Jsb2NrcyBjbGFpbWVkIGJ5IGEgZmlsZSBhbmQgc3VwZXJibG9jayBvciBncm91cCBkZXNjcmlwdG9ycwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9iYWRfY3N1bS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmMzNjVmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vZXhwZWN0LjEKQEAgLTAsMCArMSwyOSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgYSBiYWQgZXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIDEwNzQuICBDbGVhcj8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAyLCBzaG91bGQgYmUgMC4gIEZpeD8geWVzCisKK0V4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbm9kZSAxMyBoYXMgYSBoYXNoICgxNjMxNjM3MTk2KSB3aGljaCBpcyBpbnZhbGlkCitDbGVhcj8geWVzCisKK0lub2RlIDEzLCBpX2Jsb2NrcyBpcyAyLCBzaG91bGQgYmUgMC4gIEZpeD8geWVzCisKK0lub2RlIDE0IGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAxMDc2IHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBibG9jay4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgxMDc0LS0xMDc1KQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg5NzEsIGNvdW50ZWQ9OTczKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg5NzEsIGNvdW50ZWQ9OTczKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICg3LjElIG5vbi1jb250aWd1b3VzKSwgMTA3NS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9iYWRfY3N1bS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODNmZGZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNC8xMjggZmlsZXMgKDcuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxMDc1LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9iYWRfY3N1bS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2JhZF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YTI1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9iYWRfY3N1bS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9iYWRfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NThiMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfYmFkX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACitFQSBibG9jayB3aXRoIGJhZCBjaGVja3N1bSAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjIxNWEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfY2hlY2tzL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTMgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAyNi4gIENsZWFyPyB5ZXMKKworSW5vZGUgMTMsIGlfYmxvY2tzIGlzIDQsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworRXh0ZW5kZWQgYXR0cmlidXRlIGluIGlub2RlIDE0IGhhcyBhIGhhc2ggKDE2NDkzNDAxODkpIHdoaWNoIGlzIGludmFsaWQKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTQsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworSW5vZGUgMTcgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAyOC4gIENsZWFyPyB5ZXMKKworSW5vZGUgMTcsIGlfYmxvY2tzIGlzIDQsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworSW5vZGUgMTYgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAyOS4gIENsZWFyPyB5ZXMKKworSW5vZGUgMTYsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworSW5vZGUgMTkgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayAzMy4gIENsZWFyPyB5ZXMKKworSW5vZGUgMTksIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworSW5vZGUgMTIgaGFzIGEgYmFkIGV4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayA1NS4gIENsZWFyPyB5ZXMKKworSW5vZGUgMTIsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworSW5vZGUgMTUsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDE1ICgvZmFyKSBpcyBpbnZhbGlkICg5OTkpLgorQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDI2LS0yOSkgLTMzIC01NQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0ODEsIGNvdW50ZWQ9NDg0KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg0ODEsIGNvdW50ZWQ9NDg0KS4KK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0xOAorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0NywgY291bnRlZD00NikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoNDcsIGNvdW50ZWQ9NDYpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOC82NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTExY2QyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfY2hlY2tzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTgvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9jaGVja3MvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9jaGVja3MvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUzZGEwNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9jaGVja3MvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX2NoZWNrcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MGZkZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV9jaGVja3MvbmFtZQpAQCAtMCwwICsxIEBACitleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgY2hlY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX3ZhbHVlX2NyYXNoL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMTUzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9leHBlY3QuMQpAQCAtMCwwICsxLDE1IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgVHJ1bmNhdGU/IHllcworCitJbm9kZSAxMiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgQ2xlYXI/IHllcworCitJbm9kZSAxMyBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfdmFsdWVfY3Jhc2gvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjg4NmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfdmFsdWVfY3Jhc2gvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMy8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNy81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2VhX3ZhbHVlX2NyYXNoL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NWZiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lYV92YWx1ZV9jcmFzaC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfdmFsdWVfY3Jhc2gvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTRiYmVkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZWFfdmFsdWVfY3Jhc2gvbmFtZQpAQCAtMCwwICsxIEBACitleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUgY29uZmxpY3RzIHdpdGgga2V5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lbXB0eWRpci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MTI2MjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbXB0eWRpci9leHBlY3QuMQpAQCAtMCwwICsxLDE5IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyLCBpX3NpemUgaXMgMTAyNCwgc2hvdWxkIGJlIDAuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzAuICBBbGxvY2F0ZT8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoOTU3LCBjb3VudGVkPTk1NikuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoOTU3LCBjb3VudGVkPTk1NikuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzI1NiBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW1wdHlkaXIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjMDUxNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMjU2IGZpbGVzICgxNi43JSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW1wdHlkaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2ZjhmOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VtcHR5ZGlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbXB0eWRpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1YmM2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbXB0eWRpci9uYW1lCkBAIC0wLDAgKzEsMiBAQAorYWx3YXlzIGl0ZXJhdGUgZGlyIGJsb2NrIDAgb3IgZTJmc2NrIGdvZXMgaW50byBpbmZpbml0ZSBsb29wCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VuY3J5cHRlZF9scGYvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmNyeXB0ZWRfbHBmL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMjE1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmNyeXB0ZWRfbHBmL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1VuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAxMiAoLz8/PykKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCisvbG9zdCtmb3VuZCBpcyBlbmNyeXB0ZWQKK0NsZWFyPyB5ZXMKKworL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTEgKC8/Pz8pCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAxMiByZWYgY291bnQgaXMgMywgc2hvdWxkIGJlIDIuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lbmNyeXB0ZWRfbHBmL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5jcnlwdGVkX2xwZi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTU5OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5jcnlwdGVkX2xwZi9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzLzY0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5jcnlwdGVkX2xwZi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2VuY3J5cHRlZF9scGYvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M4OWUwNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VuY3J5cHRlZF9scGYvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5jcnlwdGVkX2xwZi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5jcnlwdGVkX2xwZi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NDI1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmNyeXB0ZWRfbHBmL25hbWUKQEAgLTAsMCArMSBAQAorZW5jcnlwdGVkIGxvc3QrZm91bmQgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5kLWJpdG1hcC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2UyZmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5kLWJpdG1hcC9leHBlY3QuMQpAQCAtMCwwICsxLDE2IEBACitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0NCwgY291bnRlZD02MykuCitGaXg/IHllcworCitQYWRkaW5nIGF0IGVuZCBvZiBibG9jayBiaXRtYXAgaXMgbm90IHNldC4gRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM3LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VuZC1iaXRtYXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDlmOTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAzNy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5kLWJpdG1hcC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjIwZDBhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW5kLWJpdG1hcC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lbmQtYml0bWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYzYjZkNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VuZC1iaXRtYXAvbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0aW9uIGF0IGVuZCBvZiBibG9jayBiaXRtYXAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2VvZmJsb2Nrcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VvZmJsb2Nrcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTkxMzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW9mYmxvY2tzL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTMgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMzAsIGlfc2l6ZSBpcyAyMDQ4LCBzaG91bGQgYmUgNDA5Ni4gIEZpeD8geWVzCisKK0lub2RlIDMxLCBpX3NpemUgaXMgMjA0OCwgc2hvdWxkIGJlIDQwOTYuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMzEvNTYgZmlsZXMgKDI5LjAlIG5vbi1jb250aWd1b3VzKSwgODMvNDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZW9mYmxvY2tzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZW9mYmxvY2tzL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMmJjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lb2ZibG9ja3MvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAzMS81NiBmaWxlcyAoMjkuMCUgbm9uLWNvbnRpZ3VvdXMpLCA4My80MDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lb2ZibG9ja3MvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9lb2ZibG9ja3MvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4NmE2YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2VvZmJsb2Nrcy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9lb2ZibG9ja3MvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2VvZmJsb2Nrcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5M2FkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9lb2ZibG9ja3MvbmFtZQpAQCAtMCwwICsxIEBACitibG9ja3MgYWZ0ZXIgaV9zaXplCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvZXhwZWN0LjEuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvZXhwZWN0LjEuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAxNWUxNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZC9leHBlY3QuMS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBjMDBjNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDUxMDkvNTUwNCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDgwMy85MDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRjMThmYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZWJlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmQvbmFtZQpAQCAtMCwwICsxIEBACitleHBhbmRpbmcgbG9zdCtmb3VuZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXhwYW5kcm9vdF9jcmVhdGVfbG5mL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXhwYW5kcm9vdF9jcmVhdGVfbG5mL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1OTNkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvZXhwZWN0LjEKQEAgLTAsMCArMSwxMiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTYvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAzMy8xMDI0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXhwYW5kcm9vdF9jcmVhdGVfbG5mL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXhwYW5kcm9vdF9jcmVhdGVfbG5mL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlZWMxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi82NCBmaWxlcyAoNi4zJSBub24tY29udGlndW91cyksIDMzLzEwMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkYmZhNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZHJvb3RfY3JlYXRlX2xuZi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4cGFuZHJvb3RfY3JlYXRlX2xuZi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMjU0MmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHBhbmRyb290X2NyZWF0ZV9sbmYvbmFtZQpAQCAtMCwwICsxIEBACitubyBzcGFjZSBpbiByb290IHRvIGNyZWF0ZSBsb3N0K2ZvdW5kIGVudHJ5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YzgyMDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9leHBlY3QuMQpAQCAtMCwwICsxLDggQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA4OS8yNTYwIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcwLzI1NjAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZDBkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDg5LzI1NjAgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNzAvMjU2MCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X2pvdXJuYWwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUzODM3MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL2pvdXJuYWwuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9qb3VybmFsLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMmM3MmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9qb3VybmFsLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZTk1MGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfam91cm5hbC9uYW1lCkBAIC0wLDAgKzEgQEAKK3Rlc3QgZXh0ZXJuYWwgam91cm5hbCBkZXZpY2UKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF9qb3VybmFsL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDgxZWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X2pvdXJuYWwvc2NyaXB0CkBAIC0wLDAgKzEsOCBAQAorRlNDS19PUFQ9Ii1meSAtaiBqb3VybmFsLmltZyIKK1NFQ09ORF9GU0NLX09QVD0iLWZ5IC1qIGpvdXJuYWwuaW1nIgorCitndW56aXAgPCAkdGVzdF9kaXIvam91cm5hbC5neiA+IGpvdXJuYWwuaW1nCisKKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworCitybSAtZiBqb3VybmFsLmltZwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMTA5YjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfemVyb19sZW4vZXhwZWN0LjEKQEAgLTAsMCArMSwxMyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgemVybyBsZW5ndGggZXh0ZW50CisJKGludmFsaWQgbG9naWNhbCBibG9jayAwLCBwaHlzaWNhbCBibG9jayAzNykKK0NsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZTVkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRfemVyb19sZW4vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF96ZXJvX2xlbi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF96ZXJvX2xlbi9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDNlNWZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF96ZXJvX2xlbi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0X3plcm9fbGVuL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRhNGE3MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dF96ZXJvX2xlbi9uYW1lCkBAIC0wLDAgKzEgQEAKK2V4dGVudCB3aXRoIHplcm8gbGVuZ3RoCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFjMjVhMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9iYWRfbm9kZS9leHBlY3QuMQpAQCAtMCwwICsxLDI2IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgMjIsIGxibGsgMCkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTIgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgMTYsIHNob3VsZCBiZSA4LiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgyMS0tMjMpIC0yNQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3MywgY291bnRlZD03NykuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzMsIGNvdW50ZWQ9NzcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9iYWRfbm9kZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9iYWRfbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzhiMTkzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2JhZF9ub2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkOWI0NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9iYWRfbm9kZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9iYWRfbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNGFiOGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfYmFkX25vZGUvbmFtZQpAQCAtMCwwICsxIEBACitiYWQgaW50ZXJpb3Igbm9kZSBpbiBleHRlbnQgdHJlZSAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjNjYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjkgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXMKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCisKKyAgICAgICAgIDM1MiBpbm9kZXMgdXNlZCAoNDEuMTIlLCBvdXQgb2YgODU2KQorICAgICAgICAgICAwIG5vbi1jb250aWd1b3VzIGZpbGVzICgwLjAlKQorICAgICAgICAgICAxIG5vbi1jb250aWd1b3VzIGRpcmVjdG9yeSAoMC4zJSkKKyAgICAgICAgICAgICAjIG9mIGlub2RlcyB3aXRoIGluZC9kaW5kL3RpbmQgYmxvY2tzOiAwLzAvMAorICAgICAgICAgICAgIEV4dGVudCBkZXB0aCBoaXN0b2dyYW06IDM0Mi8xCisgICAgICAgICA1ODYgYmxvY2tzIHVzZWQgKDY4Ljk0JSwgb3V0IG9mIDg1MCkKKyAgICAgICAgICAgMCBiYWQgYmxvY2tzCisgICAgICAgICAgIDAgbGFyZ2UgZmlsZXMKKworICAgICAgICAgMzQwIHJlZ3VsYXIgZmlsZXMKKyAgICAgICAgICAgMyBkaXJlY3RvcmllcworICAgICAgICAgICAwIGNoYXJhY3RlciBkZXZpY2UgZmlsZXMKKyAgICAgICAgICAgMCBibG9jayBkZXZpY2UgZmlsZXMKKyAgICAgICAgICAgMCBmaWZvcworICAgICAgICAgICAwIGxpbmtzCisgICAgICAgICAgIDAgc3ltYm9saWMgbGlua3MgKDAgZmFzdCBzeW1ib2xpYyBsaW5rcykKKyAgICAgICAgICAgMCBzb2NrZXRzCistLS0tLS0tLS0tLS0KKyAgICAgICAgIDM0MyBmaWxlcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MGI0OTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAzNTIvODU2IGZpbGVzICgwLjMlIG5vbi1jb250aWd1b3VzKSwgNTg2Lzg1MCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODQyMDdlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMzODEyZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2h0cmVlIGV4dGVudCBjb21wcmVzc2lvbgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVhYWYxOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9odHJlZS9zY3JpcHQKQEAgLTAsMCArMSw3MCBAQAorIyEvYmluL2Jhc2gKKworRlNDS19PUFQ9Ii1meXZEIgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCitybSAtZiAkVE1QRklMRQorCitleGl0IDAKKyMgVGhpcyBzY3JpcHQgZGVwZW5kcyBvbiAibWtlMmZzIC1kIiwgd2hpY2ggaXMgb25seSBpbiBtYXN0ZXIgYW5kIG5vdCBtYWludCwKKyMgdG8gcG9wdWxhdGUgdGhlIGZpbGUgZGlyZWN0b3J5IHRyZWUgcG9vcmx5IChuYW1lbHkgdGhhdCB0aGVyZSBhcmUgbm8KKyMgY29udGlndW91cyBibG9ja3MgaW4gdGhlIGRpcmVjdG9yeSBsZWFmIGFuZCB0aGUgZXh0ZW50IHRyZWUgaXMgbGFyZ2UpLgorCisjIE9uY2UgdGhlICJta2UyZnMgLWQiIG9wdGlvbiBpcyBhdmFpbGFibGUgb24gdGhlICJtYWludCIgYnJhbmNoLCB0aGUKKyMgYWJvdmUgZmV3IGxpbmVzIHNob3VsZCBiZSBkZWxldGVkLCBhbG9uZyB3aXRoIHRoZSAiaW1hZ2UuZ3oiIGZpbGUuCisKK1RNUERJUj0ke1RNUERJUjotIi90bXAifQorT1VUPSR0ZXN0X25hbWUubG9nCisKK0ZTQ0tfT1BUPSItZnl2RCIKK1NLSVBfR1VOWklQPSJ0cnVlIgorCitOQU1FTEVOPTI1MAorU1JDPSRUTVBESVIvJHRlc3RfbmFtZS50bXAKK1NVQj1zdWJkaXIKK0JBU0U9JFNSQy8kU1VCLyQoeWVzIHwgdHIgLWQgJ1xuJyB8IGRkIGJzPSROQU1FTEVOIGNvdW50PTEgMj4gL2Rldi9udWxsKQorVE1QRklMRT0ke1RNUEZJTEU6LSIkVE1QRElSL2ltYWdlIn0KK0JTSVpFPTEwMjQKKworPiAkT1VUCitta2RpciAtcCAkU1JDLyRTVUIKKyMgY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGV4dGVudCB0cmVlCisjIGRlZXAgZW5vdWdoIHRvIGV4Y2VlZCB0aGUgaW4taW5vZGUgaW5kZXggYW5kIHNwaWxsIGludG8gYW4gaW5kZXggYmxvY2suCisjCisjIGRpcmVudHMgcGVyIGJsb2NrICogZXh0ZW50cyBwZXIgYmxvY2sgKiAoaW5kZXggYmxvY2tzID4gaV9ibG9ja3MpCitOVU09JCgoKEJTSVpFIC8gKE5BTUVMRU4gKyA4KSkgKiAoQlNJWkUgLyAxMikgKiAyKSkKKyMgQ3JlYXRlIHNvdXJjZSBmaWxlcy4gVW5mb3J0dW5hdGVseSBoYXJkIGxpbmtzIHdpbGwgYmUgY29waWVkIGFzIGxpbmtzLAorIyBhbmQgYmxvY2tzIHdpdGggb25seSBOVUxzIHdpbGwgYmUgdHVybmVkIGludG8gaG9sZXMuCitpZiBbICEgLWYgJEJBU0UuMSBdOyB0aGVuCisJZm9yIE4gaW4gJChzZXEgJE5VTSk7IGRvCisJCWVjaG8gImZvbyIgPiAkQkFTRS4kTgorCWRvbmUgPj4gJE9VVAorZmkKKworIyBtYWtlIGZpbGVzeXN0ZW0gd2l0aCBlbm91Z2ggaW5vZGVzIGFuZCBibG9ja3MgdG8gaG9sZCBhbGwgdGhlIHRlc3QgZmlsZXMKKz4gJFRNUEZJTEUKK05VTT0kKChOVU0gKiA1IC8gMykpCitlY2hvICJta2UyZnMgLWIgJEJTSVpFIC1PIGRpcl9pbmRleCxleHRlbnQgLWQkU1JDIC1OJE5VTSAkVE1QRklMRSAkTlVNIiA+PiAkT1VUCiskTUtFMkZTIC1iICRCU0laRSAtTyBkaXJfaW5kZXgsZXh0ZW50IC1kJFNSQyAtTiROVU0gJFRNUEZJTEUgJE5VTSA+PiAkT1VUIDI+JjEKK3JtIC1yICRTUkMKKworIyBSdW4gZTJmc2NrIHRvIGNvbnZlcnQgZGlyIHRvIGh0cmVlIGJlZm9yZSBkZWxldGluZyB0aGUgZmlsZXMsIGFzIG1rZTJmcworIyBkb2Vzbid0IGRvIHRoaXMuICBSdW4gc2Vjb25kIGUyZnNjayB0byB2ZXJpZnkgdGhlcmUgaXMgbm8gY29ycnVwdGlvbiB5ZXQuCisoCisJRVhQMT0kdGVzdF9kaXIvZXhwZWN0LnByZS4xCisJRVhQMj0kdGVzdF9kaXIvZXhwZWN0LnByZS4yCisJT1VUMT0kdGVzdF9uYW1lLnByZS4xLmxvZworCU9VVDI9JHRlc3RfbmFtZS5wcmUuMi5sb2cKKwlERVNDUklQVElPTj0iJChjYXQgJHRlc3RfZGlyL25hbWUpIHNldHVwIgorCS4gJGNtZF9kaXIvcnVuX2UyZnNjaworKQorCisjIGdlbmVyYXRlIGEgbGlzdCBvZiBmaWxlbmFtZXMgZm9yIGRlYnVnZnMgdG8gZGVsZXRlLCBvbmUgZnJvbSBlYWNoIGxlYWYgYmxvY2sKK0RFTEVURV9MSVNUPSRUTVBESVIvZGVsZXRlLiQkCiskREVCVUdGUyAtYyAtUiAiaHRyZWUgc3ViZGlyIiAkVE1QRklMRSAyPj4gJE9VVCB8CisJZ3JlcCAtQTIgIlJlYWRpbmcgZGlyZWN0b3J5IGJsb2NrIiB8CisJYXdrICcveXl5eXkvIHsgcHJpbnQgInJtICckU1VCJy8iJDQgfScgPiAkREVMRVRFX0xJU1QKKyRERUJVR0ZTIC13IC1mICRERUxFVEVfTElTVCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3JtICRERUxFVEVfTElTVAorY3AgJFRNUEZJTEUgJFRNUEZJTEUuc2F2CisKKy4gJGNtZF9kaXIvcnVuX2UyZnNjawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfY3N1bS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0MTJiOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vZXhwZWN0LjEKQEAgLTAsMCArMSwxMSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBleHRlbnQgYmxvY2sgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDY5OCwgcGh5c2ljYWwgYmxvY2sgMTc4OCwgbGVuIDEpCitGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgxNi43JSBub24tY29udGlndW91cyksIDE0NDYvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9jc3VtL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzNkOTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgxNi43JSBub24tY29udGlndW91cyksIDE0NDYvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzODc4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9jc3VtL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzMxN2UzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfY3N1bS9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBjc3VtIGluIGludGVybmFsIGV4dGVudCAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2V4dGVudC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX2V4dGVudC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDJmYjU4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L2V4cGVjdC4xCkBAIC0wLDAgKzEsMjQgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA0Mjk0OTY3Mjk1LCBsZW4gMTY4KQorQ2xlYXI/IHllcworCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgNzEyLCBzaG91bGQgYmUgNTQyLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDEwOTAtLTEwOTEpIC0xMDkzIC0xMDk1IC0xMDk3IC0xMDk5IC0xMTAxIC0xMTAzIC0xMTA1IC0xMTA3IC0xMTA5IC0xMTExIC0xMTEzIC0xMTE1IC0xMTE3IC0xMTE5IC0xMTIxIC0xMTIzIC0xMTI1IC0xMTI3IC0xMTI5IC0xMTMxIC0xMTMzIC0xMTM1IC0xMTM3IC0xMTM5IC0xMTQxIC0xMTQzIC0xMTQ1IC0xMTQ3IC0xMTQ5IC0xMTUxIC0xMTUzIC0xMTU1IC0xMTU3IC0xMTU5IC0xMTYxIC0xMTYzIC0xMTY1IC0xMTY3IC0xMTY5IC0xMTcxIC0xMTczIC0xMTc1IC0xMTc3IC0xMTc5IC0xMTgxIC0xMTgzIC0xMTg1IC0xMTg3IC0xMTg5IC0xMTkxIC0xMTkzIC0xMTk1IC0xMTk3IC0xMTk5IC0xMjAxIC0xMjAzIC0xMjA1IC0xMjA3IC0xMjA5IC0xMjExIC0xMjEzIC0xMjE1IC0xMjE3IC0xMjE5IC0xMjIxIC0xMjIzIC0xMjI1IC0xMjI3IC0xMjI5IC0xMjMxIC0xMjMzIC0xMjM1IC0xMjM3IC0xMjM5IC0xMjQxIC0xMjQzIC0xMjQ1IC0xMjQ3IC0xMjQ5IC0xMjUxIC0xMjUzIC0xMjU1IC0xMjU3CitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDYwMiwgY291bnRlZD02ODcpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDYwMiwgY291bnRlZD02ODcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDE2LjclIG5vbi1jb250aWd1b3VzKSwgMTM2MS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzJlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9leHRlbnQvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDE2LjclIG5vbi1jb250aWd1b3VzKSwgMTM2MS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NzQ1YmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9leHRlbnQvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9leHRlbnQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjJmNmI0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfZXh0ZW50L25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGV4dGVudCBpbiBpbnRlcm5hbCBleHRlbnQgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX21hZ2ljL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDkxYWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9leHBlY3QuMQpAQCAtMCwwICsxLDI2IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgMTI5NSwgbGJsayAwKQorQ2xlYXI/IHllcworCitJbm9kZSAxMiBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyA3MTIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgxMDkwLS0xMDkzKSAtMTA5NSAtMTA5NyAtMTA5OSAtMTEwMSAtMTEwMyAtMTEwNSAtMTEwNyAtMTEwOSAtMTExMSAtMTExMyAtMTExNSAtMTExNyAtMTExOSAtMTEyMSAtMTEyMyAtMTEyNSAtMTEyNyAtMTEyOSAtMTEzMSAtMTEzMyAtMTEzNSAtMTEzNyAtMTEzOSAtMTE0MSAtMTE0MyAtMTE0NSAtMTE0NyAtMTE0OSAtMTE1MSAtMTE1MyAtMTE1NSAtMTE1NyAtMTE1OSAtMTE2MSAtMTE2MyAtMTE2NSAtMTE2NyAtMTE2OSAtMTE3MSAtMTE3MyAtMTE3NSAtMTE3NyAtMTE3OSAtMTE4MSAtMTE4MyAtMTE4NSAtMTE4NyAtMTE4OSAtMTE5MSAtMTE5MyAtMTE5NSAtMTE5NyAtMTE5OSAtMTIwMSAtMTIwMyAtMTIwNSAtMTIwNyAtMTIwOSAtMTIxMSAtMTIxMyAtMTIxNSAtMTIxNyAtMTIxOSAtMTIyMSAtMTIyMyAtMTIyNSAtMTIyNyAtMTIyOSAtMTIzMSAtMTIzMyAtMTIzNSAtMTIzNyAtMTIzOSAtMTI0MSAtMTI0MyAtMTI0NSAtMTI0NyAtMTI0OSAtMTI1MSAtMTI1MyAtMTI1NSAtMTI1NyAtMTI1OSAtMTI2MSAtMTI2MyAtMTI2NSAtMTI2NyAtMTI2OSAtMTI3MSAtMTI3MyAtMTI3NSAtMTI3NyAtMTI3OSAtMTI4MSAtMTI4MyAtMTI4NSAtMTI4NyAtKDEyODktLTEyOTgpIC0xMzAwIC0xMzAyIC0xMzA0IC0xMzA2IC0xMzA4IC0xMzEwIC0xMzEyIC0xMzE0IC0xMzE2IC0xMzE4IC0xMzIwIC0xMzIyIC0xMzI0IC0xMzI2IC0xMzI4IC0xMzMwIC0xMzMyIC0xMzM0IC0xMzM2IC0xMzM4IC0xMzQwIC0xMzQyIC0xMzQ0IC0xMzQ2IC0xMzQ4IC0xMzUwIC0xMzUyIC0xMzU0IC0xMzU2IC0xMzU4IC0xMzYwIC0xMzYyIC0xMzY0IC0xMzY2IC0xMzY4IC0xMzcwIC0xMzcyIC0xMzc0IC0xMzc2IC0xMzc4IC0xMzgwIC0xMzgyIC0xMzg0IC0xMzg2IC0xMzg4IC0xMzkwIC0xMzkyIC0xMzk0IC0xMzk2IC0xMzk4IC0xNDAwIC0xNDAyIC0xNDA0IC0xNDA2IC0xNDA4IC0xNDEwIC0xNDEyIC0xNDE0IC0xNDE2IC0xNDE4IC0xNDIwIC0xNDIyIC0xNDI0IC0xNDI2IC0xNDI4IC0xNDMwIC0xNDMyIC0xNDM0IC0xNDM2IC0xNDM4IC0xNDQwIC0xNDQyIC0xNDQ0IC0xNDQ2IC0xNDQ4IC0xNDUwIC0xNDUyIC0xNDU0IC0xNDU2IC0xNDU4IC0xNDYwIC0xNDYyIC0xNDY0IC0xNDY2IC0xNDY4IC0xNDcwIC0xNDcyIC0xNDc0IC0xNDc2IC0xNDc4IC0xNDgwIC0xNDgyIC0xNDg0IC0xNDg2IC0xNDg4IC0xNDkwIC0xNDkyIC0xNDk0IC0xNDk2IC0xNDk4IC0xNTAwIC0xNTAyIC0xNTA0IC0xNTA2IC0xNTA4IC0xNTEwIC0xNTEyIC0xNTE0IC0xNTE2IC0xNTE4IC0xNTIwIC0xNTIyIC0xNTI0IC0xNTI2IC0xNTI4IC0xNTMwIC0xNTMyIC0xNTM0IC0xNTM2IC0xNTM4IC0xNTQwIC0xNTQyIC0xNTQ0IC0xNTQ2IC0xNTQ4IC0xNTUwIC0xNTUyIC0xNTU0IC0xNTU2IC0xNTU4IC0xNTYwIC0xNTYyIC0xNTY0IC0xNTY2IC0xNTY4IC0xNTcwIC0xNTcyIC0xNTc0IC0xNTc2IC0xNTc4IC0xNTgwIC0xNTgyIC0xNTg0IC0xNTg2IC0xNTg4IC0xNTkwIC0xNTkyIC0xNTk0IC0xNTk2IC0xNTk4IC0xNjAwIC0xNjAyIC0xNjA0IC0xNjA2IC0xNjA4IC0xNjEwIC0xNjEyIC0xNjE0IC0xNjE2IC0xNjE4IC0xNjIwIC0xNjIyIC0xNjI0IC0xNjI2IC0xNjI4IC0xNjMwIC0xNjMyIC0xNjM0IC0xNjM2IC0xNjM4IC0xNjQwIC0xNjQyIC0xNjQ0IC0xNjQ2IC0xNjQ4IC0xNjUwIC0xNjUyIC0xNjU0IC0xNjU2IC0xNjU4IC0xNjYwIC0xNjYyIC0xNjY0IC0xNjY2IC0xNjY4IC0xNjcwIC0xNjcyIC0xNjc0IC0xNjc2IC0xNjc4IC0xNjgwIC0xNjgyIC0xNjg0IC0xNjg2IC0xNjg4IC0xNjkwIC0xNjkyIC0xNjk0IC0xNjk2IC0xNjk4IC0xNzAwIC0xNzAyIC0xNzA0IC0xNzA2IC0xNzA4IC0xNzEwIC0xNzEyIC0xNzE0IC0xNzE2IC0xNzE4IC0xNzIwIC0xNzIyIC0xNzI0IC0xNzI2IC0xNzI4IC0xNzMwIC0xNzMyIC0xNzM0IC0xNzM2IC0xNzM4IC0xNzQwIC0xNzQyIC0xNzQ0IC0xNzQ2IC0xNzQ4IC0xNzUwIC0xNzUyIC0xNzU0IC0xNzU2IC0xNzU4IC0xNzYwIC0xNzYyIC0xNzY0IC0xNzY2IC0xNzY4IC0xNzcwIC0xNzcyIC0xNzc0IC0xNzc2IC0xNzc4IC0xNzgwIC0xNzgyIC0xNzg0IC0xNzg2IC0xNzg4CitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDYwMiwgY291bnRlZD05NTgpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDYwMiwgY291bnRlZD05NTgpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX21hZ2ljL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4M2NjMWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTAvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX21hZ2ljL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludF9iYWRfbWFnaWMvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAwZjg4NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX21hZ2ljL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRfYmFkX21hZ2ljL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NTFlOWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50X2JhZF9tYWdpYy9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBtYWdpYyBudW1iZXIgaW4gaW50ZXJuYWwgZXh0ZW50IChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludGVyaW9yX3N0YXJ0X2xibGsvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50ZXJpb3Jfc3RhcnRfbGJsay9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWI3ZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludGVyaW9yX3N0YXJ0X2xibGsvZXhwZWN0LjEKQEAgLTAsMCArMSwxMiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbnRlcmlvciBleHRlbnQgbm9kZSBsZXZlbCAwIG9mIGlub2RlIDEyOgorTG9naWNhbCBzdGFydCAwIGRvZXMgbm90IG1hdGNoIGxvZ2ljYWwgc3RhcnQgMiBhdCBuZXh0IGxldmVsLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjkvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludGVyaW9yX3N0YXJ0X2xibGsvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50ZXJpb3Jfc3RhcnRfbGJsay9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmM2MDgyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludGVyaW9yX3N0YXJ0X2xibGsvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI5LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRlcmlvcl9zdGFydF9sYmxrL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2ludGVyaW9yX3N0YXJ0X2xibGsvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkNzEyOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRlcmlvcl9zdGFydF9sYmxrL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9pbnRlcmlvcl9zdGFydF9sYmxrL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50ZXJpb3Jfc3RhcnRfbGJsay9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZDVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfaW50ZXJpb3Jfc3RhcnRfbGJsay9uYW1lCkBAIC0wLDAgKzEgQEAKK2luY29ycmVjdCBzdGFydGluZyBsYmxrIGluIGFuIGludGVyaW9yIG5vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9jc3VtL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZlNTAxYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9jc3VtL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgZXh0ZW50IGJsb2NrIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBleHRlbnQKKwkobG9naWNhbCBibG9jayA3LCBwaHlzaWNhbCBibG9jayAxMDkwLCBsZW4gMSkKK0ZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDE2LjclIG5vbi1jb250aWd1b3VzKSwgMTA5OS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfY3N1bS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTY0NzYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDE2LjclIG5vbi1jb250aWd1b3VzKSwgMTA5OS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfY3N1bS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yzc3OGY2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJhMjI4NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGNzdW0gaW4gbGVhZiBleHRlbnQgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfZXh0ZW50L2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2V4dGVudC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTZhOGE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2V4dGVudC9leHBlY3QuMQpAQCAtMCwwICsxLDI0IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBhbiBpbnZhbGlkIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDIsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgNDI5NDk2NzI5NSwgbGVuIDEpCitDbGVhcj8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAxOCwgc2hvdWxkIGJlIDE2LiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMTA5NgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg5NDksIGNvdW50ZWQ9OTUwKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg5NDksIGNvdW50ZWQ9OTUwKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgxNi43JSBub24tY29udGlndW91cyksIDEwOTgvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9leHRlbnQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfZXh0ZW50L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMTcyN2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfZXh0ZW50L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgxNi43JSBub24tY29udGlndW91cyksIDEwOTgvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9leHRlbnQvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfZXh0ZW50L2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNGQ0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfZXh0ZW50L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9leHRlbnQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9leHRlbnQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQ4YmQxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX2V4dGVudC9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBleHRlbnQgaW4gbGVhZiBleHRlbnQgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfbWFnaWMvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfbWFnaWMvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxNzc3YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9leHBlY3QuMQpAQCAtMCwwICsxLDI2IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBhbiBpbnZhbGlkIGV4dGVudCBub2RlIChibGsgMTYwNCwgbGJsayAwKQorQ2xlYXI/IHllcworCitJbm9kZSAxMiBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAxOCwgc2hvdWxkIGJlIDAuICBGaXg/IHllcworCitQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDEwOTAtLTEwOTcpIC0xNjA0CitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDk0OSwgY291bnRlZD05NTgpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDk0OSwgY291bnRlZD05NTgpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfbWFnaWMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfbGVhZl9iYWRfbWFnaWMvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzY2MxZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTAvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGQwNDRmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX21hZ2ljL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X2xlYWZfYmFkX21hZ2ljL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmNzU2ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9sZWFmX2JhZF9tYWdpYy9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBtYWdpYyBudW1iZXIgaW4gbGVhZiBleHRlbnQgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfb29ib3VuZHMvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfb29ib3VuZHMvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU2Njg5ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9vb2JvdW5kcy9leHBlY3QuMQpAQCAtMCwwICsxLDI3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyLCBlbmQgb2YgZXh0ZW50IGV4Y2VlZHMgYWxsb3dlZCB2YWx1ZQorCShsb2dpY2FsIGJsb2NrIDE1LCBwaHlzaWNhbCBibG9jayAyMDAsIGxlbiAzMCkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTIgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIG5hcnJvd2VyLiAgRml4PyB5ZXMKKworSW5vZGUgMTIsIGlfYmxvY2tzIGlzIDE1NCwgc2hvdWxkIGJlIDk0LiAgRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgyMDAtLTIyOSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMTU4LCBjb3VudGVkPTE4OCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMTU4LCBjb3VudGVkPTE4OCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzMyIGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgNjgvMjU2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X29vYm91bmRzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X29vYm91bmRzL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MjkyODMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfb29ib3VuZHMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8zMiBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDY4LzI1NiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF9vb2JvdW5kcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfb29ib3VuZHMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0Njc0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfb29ib3VuZHMvc2NyaXB0CkBAIC0wLDAgKzEsNDIgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK1NLSVBfR1VOWklQPSJ0cnVlIgorVEVTVF9EQVRBPSIkdGVzdF9uYW1lLnRtcCIKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTI1NiA+IC9kZXYvbnVsbCAyPiYxCiskTUtFMkZTIC1GdCBleHQ0ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC13ICRUTVBGSUxFIDw8IEVPRiAgPiAvZGV2L251bGwgMj4mMQord3JpdGUgL2Rldi9udWxsIHRlc3RmaWxlCitzZXRiIDEwMCAxNQorc2V0YiAxMzAgMzAKK3NldGIgMjAwIDMwCitleHRlbnRfb3BlbiB0ZXN0ZmlsZQorICBpbnNlcnRfbm9kZSAwIDE1IDEwMAorICBpbnNlcnRfbm9kZSAtLWFmdGVyIDE1IDE1IDExNQorICBpbnNlcnRfbm9kZSAtLWFmdGVyIDMwIDE1IDEzMAorICBpbnNlcnRfbm9kZSAtLWFmdGVyIDQ1IDE1IDE0NQorICBzcGxpdAorICBkb3duCisgIHNwbGl0CisgIHJvb3QKKyAgZG93bgorICBuZXh0CisgIHJlcGxhY2Vfbm9kZSAxNSAzMCAyMDAKKyAgZXh0ZW50X2Nsb3NlCitzZXRfaW5vZGVfZmllbGQgdGVzdGZpbGUgaV9zaXplIDYxNDAwCitzZXRfaW5vZGVfZmllbGQgdGVzdGZpbGUgaV9ibG9ja3MgMTU0CitzZXRfYmcgMCBmcmVlX2Jsb2Nrc19jb3VudCAxNTYKK3NldF9iZyAwIGJnX2NoZWNrc3VtIGNhbGMKK3NldF9zdXBlcl92YWx1ZSBmcmVlX2Jsb2Nrc19jb3VudCAxNTYKK3EKK0VPRgorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKKworcm0gLWYgJFRFU1RfREFUQQorCit1bnNldCBFMkZTQ0tfVElNRSBURVNUX0RBVEEKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTU5NTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9leHBlY3QuMQpAQCAtMCwwICsxLDIzIEBACitkZWJ1Z2ZzOiBleCAvYQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gNyAgIDEvICAxICAgICAwIC0gICAgIDAgICAgMTIgICAgICAgICAgICAgIDEKKyAxLyA3ICAgMS8gIDEgICAgIDAgLSAgICAgMCAgICAxMyAgICAgICAgICAgICAgMQorIDIvIDcgICAxLyAgMSAgICAgMCAtICAgICAwICAgIDE0ICAgICAgICAgICAgICAxCisgMy8gNyAgIDEvICAxICAgICAwIC0gICAgIDAgICAgMTUgICAgICAgICAgICAgIDEKKyA0LyA3ICAgMS8gIDEgICAgIDAgLSAgICAgMCAgICAxNiAgICAgICAgICAgICAgMQorIDUvIDcgICAxLyAgMSAgICAgMCAtICAgICAwICAgIDE3ICAgICAgICAgICAgICAxCisgNi8gNyAgIDEvICAxICAgICAwIC0gICAgIDAgICAgIDkgICAgICAgICAgICAgIDEKKyA3LyA3ICAgMS8gIDEgICAgIDAgLSAgICAgMCAgICAxMCAtICAgIDEwICAgICAgMSAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgZXh0ZW50IHRyZWUgY291bGQgYmUgbW9yZSBzaGFsbG93ICg3OyBjb3VsZCBiZSA8PSA0KQorRml4PyB5ZXMKKworUGFzcyAxRTogT3B0aW1pemluZyBleHRlbnQgdHJlZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFkMjhiMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9leHBlY3QuMgpAQCAtMCwwICsxLDEwIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBleCAvYQorTGV2ZWwgRW50cmllcyAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMCAgIDEvICAxICAgICAwIC0gICAgIDAgICAgMTAgLSAgICAxMCAgICAgIDEgCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY1YWRmZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlODY1NGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRfdG9vX2RlZXAvbmFtZQpAQCAtMCwwICsxIEBACitleHRlbnQgdHJlZSBpcyBkZWVwZXIgdGhhbiBpdCBuZWVkcyB0byBiZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50X3Rvb19kZWVwL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUxODQzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudF90b29fZGVlcC9zY3JpcHQKQEAgLTAsMCArMSwxMTggQEAKK2lmIFsgIiRERVNDUklQVElPTiJ4ICE9IHggXTsgdGhlbgorCXRlc3RfZGVzY3JpcHRpb249IiRERVNDUklQVElPTiIKK2ZpCitpZiBbICIkSU1BR0UieCA9IHggXTsgdGhlbgorCUlNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorZmkKKworaWYgWyAiJEZTQ0tfT1BUInggPSB4IF07IHRoZW4KKwlGU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRTRUNPTkRfRlNDS19PUFQieCA9IHggXTsgdGhlbgorCVNFQ09ORF9GU0NLX09QVD0teWYKK2ZpCisKK2lmIFsgIiRPVVQxInggPSB4IF07IHRoZW4KKwlPVVQxPSR0ZXN0X25hbWUuMS5sb2cKK2ZpCisKK2lmIFsgIiRPVVQyInggPSB4IF07IHRoZW4KKwlPVVQyPSR0ZXN0X25hbWUuMi5sb2cKK2ZpCisKK2lmIFsgIiRFWFAxInggPSB4IF07IHRoZW4KKwlpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuMS5neiBdOyB0aGVuCisJCUVYUDE9JHRlc3RfbmFtZS4xLnRtcAorCQlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0LjEuZ3ogPiAkRVhQMQorCWVsc2UKKwkJRVhQMT0kdGVzdF9kaXIvZXhwZWN0LjEKKwlmaQorZmkKKworaWYgWyAiJEVYUDIieCA9IHggXTsgdGhlbgorCWlmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC4yLmd6IF07IHRoZW4KKwkJRVhQMj0kdGVzdF9uYW1lLjIudG1wCisJCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuMi5neiA+ICRFWFAyCisJZWxzZQorCQlFWFAyPSR0ZXN0X2Rpci9leHBlY3QuMgorCWZpCitmaQorCitpZiBbICIkU0tJUF9HVU5aSVAiICE9ICJ0cnVlIiBdIDsgdGhlbgorCWd1bnppcCA8ICRJTUFHRSA+ICRUTVBGSUxFCitmaQorCitjcCAvZGV2L251bGwgJE9VVDEKKworZXZhbCAkUFJFUF9DTUQKKworZWNobyAnZXggL2EnID4gJFRNUEZJTEUuY21kCiskREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPiAkT1VUMS5uZXcgMj4mMQorcm0gLXJmICRUTVBGSUxFLmNtZAorJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVDEubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQxLm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMS5uZXcgPj4gJE9VVDEKK3JtIC1mICRPVVQxLm5ldworCitpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkkRlNDSyAkU0VDT05EX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQyLm5ldyAyPiYxIAorCXN0YXR1cz0kPworCWVjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUMi5uZXcKKwllY2hvICdleCAvYScgPiAkVE1QRklMRS5jbWQKKwkkREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgPj4gJE9VVDIubmV3IDI+JjEKKwlybSAtcmYgJFRNUEZJTEUuY21kCisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMi5uZXcgPiAkT1VUMgorCXJtIC1mICRPVVQyLm5ldworZmkKKworZXZhbCAkQUZURVJfQ01ECisKK2lmIFsgIiRTS0lQX1ZFUklGWSIgIT0gInRydWUiIF0gOyB0aGVuCisJcm0gLWYgJHRlc3RfbmFtZS5vayAkdGVzdF9uYW1lLmZhaWxlZAorCWNtcCAtcyAkT1VUMSAkRVhQMQorCXN0YXR1czE9JD8KKwlpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkJY21wIC1zICRPVVQyICRFWFAyCisJCXN0YXR1czI9JD8KKwllbHNlCisJCXN0YXR1czI9MAorCWZpCisJaWYgWyAiJFBBU1NfWkVSTyIgPSAidHJ1ZSIgXTsgdGhlbgorCQljbXAgLXMgJHRlc3RfbmFtZS4wLmxvZwkkdGVzdF9kaXIvZXhwZWN0LjAKKwkJc3RhdHVzMz0kPworCWVsc2UKKwkJc3RhdHVzMz0wCisJZmkKKworCWlmIFsgLXogIiR0ZXN0X2Rlc2NyaXB0aW9uIiBdIDsgdGhlbgorCQlkZXNjcmlwdGlvbj0iJHRlc3RfbmFtZSIKKwllbHNlCisJCWRlc2NyaXB0aW9uPSIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbiIKKwlmaQorCisJaWYgWyAiJHN0YXR1czEiIC1lcSAwIC1hICIkc3RhdHVzMiIgLWVxIDAgLWEgIiRzdGF0dXMzIiAtZXEgMCBdIDsgdGhlbgorCQllY2hvICIkZGVzY3JpcHRpb246IG9rIgorCQl0b3VjaCAkdGVzdF9uYW1lLm9rCisJZWxzZQorCQllY2hvICIkZGVzY3JpcHRpb246IGZhaWxlZCIKKwkJcm0gLWYgJHRlc3RfbmFtZS5mYWlsZWQKKwkJaWYgWyAiJFBBU1NfWkVSTyIgPSAidHJ1ZSIgXTsgdGhlbgorCQkJZGlmZiAkRElGRl9PUFRTICR0ZXN0X2Rpci9leHBlY3QuMCBcCisJCQkJJHRlc3RfbmFtZS4wLmxvZyA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlmaQorCQlkaWZmICRESUZGX09QVFMgJEVYUDEgJE9VVDEgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwkJaWYgWyAiJE9ORV9QQVNTX09OTFkiICE9ICJ0cnVlIiBdOyB0aGVuCisJCQlkaWZmICRESUZGX09QVFMgJEVYUDIgJE9VVDIgPj4gJHRlc3RfbmFtZS5mYWlsZWQKKwkJZmkKKwlmaQorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK2lmIFsgIiRTS0lQX0NMRUFOVVAiICE9ICJ0cnVlIiBdIDsgdGhlbgorCXVuc2V0IElNQUdFIEZTQ0tfT1BUIFNFQ09ORF9GU0NLX09QVCBPVVQxIE9VVDIgRVhQMSBFWFAyIAorCXVuc2V0IFNLSVBfVkVSSUZZIFNLSVBfQ0xFQU5VUCBTS0lQX0dVTlpJUCBPTkVfUEFTU19PTkxZIFBSRVBfQ01ECisJdW5zZXQgREVTQ1JJUFRJT04gU0tJUF9VTkxJTksgQUZURVJfQ01EIFBBU1NfWkVSTworZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50cy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2NWY5NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMvZXhwZWN0LjEKQEAgLTAsMCArMSw2NSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBpcyBpbiBleHRlbnQgZm9ybWF0LCBidXQgc3VwZXJibG9jayBpcyBtaXNzaW5nIEVYVEVOVFMgZmVhdHVyZQorRml4PyB5ZXMKKworSW5vZGUgMTIgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayAyMTk5NDUyNzUyNzk0OSwgbGVuIDE3KQorQ2xlYXI/IHllcworCitJbm9kZSAxMiBleHRlbnQgdHJlZSAoYXQgbGV2ZWwgMSkgY291bGQgYmUgc2hvcnRlci4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAzNCwgc2hvdWxkIGJlIDAuICBGaXg/IHllcworCitJbm9kZSAxMyBtaXNzaW5nIEVYVEVOVF9GTCwgYnV0IGlzIGluIGV4dGVudHMgZm9ybWF0CitGaXg/IHllcworCitJbm9kZSAxNiBoYXMgYSBkdXBsaWNhdGUgZXh0ZW50IG1hcHBpbmcKKwkobG9naWNhbCBibG9jayAzLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDQ2MTMsIGxlbiAyKQorQ2xlYXI/IHllcworCitJbm9kZSAxNiwgaV9ibG9ja3MgaXMgMTYsIHNob3VsZCBiZSAxMi4gIEZpeD8geWVzCisKK0lub2RlIDE3IGhhcyBhbiBpbnZhbGlkIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgMjIwMTE3MDczOTcxMzUsIGxlbiAxNSkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTcgZXh0ZW50IHRyZWUgKGF0IGxldmVsIDEpIGNvdWxkIGJlIHNob3J0ZXIuICBGaXg/IHllcworCitJbm9kZSAxNywgaV9ibG9ja3MgaXMgMzIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworSW5vZGUgMTggaGFzIGNvcnJ1cHQgZXh0ZW50IGhlYWRlci4gIENsZWFyIGlub2RlPyB5ZXMKKworSW5vZGUgMTgsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBmaWxlIChpbm9kZSAxOSkgaGFzIGV4dGVudHMKK29yIGlubGluZS1kYXRhIGZsYWcgc2V0LiAgQ2xlYXI/IHllcworCitQYXNzIDFFOiBPcHRpbWl6aW5nIGV4dGVudCB0cmVlcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnZmJhZC1mbGFnJyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTguICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0xMDgxICs0NjExIC0oNDYxMy0tNDYxNCkgLSg1MTIxLS01MTQyKQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3MDgxLCBjb3VudGVkPTcxMDApLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDcwODEsIGNvdW50ZWQ9NzEwMCkuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMTgKK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMjM3LCBjb3VudGVkPTIzOCkuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMjM3LCBjb3VudGVkPTIzOCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE4LzI1NiBmaWxlcyAoNS42JSBub24tY29udGlndW91cyksIDEwOTIvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOWQ2YTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTgvMjU2IGZpbGVzICg1LjYlIG5vbi1jb250aWd1b3VzKSwgMTA5Mi84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50cy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZmYzJmYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50cy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50cy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZWRlNTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzL25hbWUKQEAgLTAsMCArMSBAQAorYmFzaWMgZXh0ZW50cyBzdXBwb3J0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzMi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MDU2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzMi9leHBlY3QuMQpAQCAtMCwwICsxLDcwIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBvdXQgb2Ygb3JkZXIgZXh0ZW50cworCShpbnZhbGlkIGxvZ2ljYWwgYmxvY2sgMCwgcGh5c2ljYWwgYmxvY2sgMjMsIGxlbiAxMikKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTIsIGlfYmxvY2tzIGlzIDg2LCBzaG91bGQgYmUgNjIuICBGaXg/IHllcworCitJbm9kZSAxMywgaV9zaXplIGlzIDEzMjk1LCBzaG91bGQgYmUgMTQzMzYuICBGaXg/IHllcworCitJbm9kZSAxMywgaV9ibG9ja3MgaXMgMjYsIHNob3VsZCBiZSAyOC4gIEZpeD8geWVzCisKK0lub2RlIDE1LCBpX3NpemUgaXMgNDIxOTcsIHNob3VsZCBiZSA0NDAzMi4gIEZpeD8geWVzCisKK0lub2RlIDE1LCBpX2Jsb2NrcyBpcyA4NCwgc2hvdWxkIGJlIDg2LiAgRml4PyB5ZXMKKworSW5vZGUgMTYgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA1MDAsIGxlbiAxMCkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTcgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgcGh5c2ljYWwgYmxvY2sgMTIwLCBpbnZhbGlkIGxlbiA2MDAwKQorQ2xlYXI/IHllcworCitJbm9kZSAxOCBoYXMgb3V0IG9mIG9yZGVyIGV4dGVudHMKKwkoaW52YWxpZCBsb2dpY2FsIGJsb2NrIDEwLCBwaHlzaWNhbCBibG9jayAxNTUsIGxlbiA0NSkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTgsIGlfYmxvY2tzIGlzIDExNiwgc2hvdWxkIGJlIDI0LiAgRml4PyB5ZXMKKworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTM6IDgwIDgwCitNdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpIGluIGlub2RlIDE0OiA4NQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxNTogODUKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgMyBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgL2Jsb2NrLmMgKGlub2RlICMxMywgbW9kIHRpbWUgTW9uIEp1biAgMiAwNToyMDoyMiAyMDA4KSAKKyAgaGFzIDIgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMCBmaWxlKHMpOgorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9pbm9kZS5jIChpbm9kZSAjMTQsIG1vZCB0aW1lIE1vbiBKdW4gIDIgMDU6Mjg6MTYgMjAwOCkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvZXh0MmZzLmggKGlub2RlICMxNSwgbW9kIHRpbWUgTW9uIEp1biAgMiAwNzoyMjo1NyAyMDA4KQorQ2xvbmUgbXVsdGlwbHktY2xhaW1lZCBibG9ja3M/IHllcworCitGaWxlIC9leHQyZnMuaCAoaW5vZGUgIzE1LCBtb2QgdGltZSBNb24gSnVuICAyIDA3OjIyOjU3IDIwMDgpIAorICBoYXMgMSBtdWx0aXBseS1jbGFpbWVkIGJsb2NrKHMpLCBzaGFyZWQgd2l0aCAxIGZpbGUocyk6CisJL2lub2RlLmMgKGlub2RlICMxNCwgbW9kIHRpbWUgTW9uIEp1biAgMiAwNToyODoxNiAyMDA4KQorTXVsdGlwbHktY2xhaW1lZCBibG9ja3MgYWxyZWFkeSByZWFzc2lnbmVkIG9yIGNsb25lZC4KKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDI1LS0zMykgLSgxNTQtLTE5OSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNjU1MzUsIGNvdW50ZWQ9NTUpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDQyOTQ5NjcyOTUsIGNvdW50ZWQ9NTUpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOC8zMiBmaWxlcyAoMjIuMiUgbm9uLWNvbnRpZ3VvdXMpLCAxNDUvMjAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50czIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzMi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDgyYTY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50czIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxOC8zMiBmaWxlcyAoMjIuMiUgbm9uLWNvbnRpZ3VvdXMpLCAxNDUvMjAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50czIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRlbnRzMi9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmRmMjU3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50czIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0ZW50czIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3ZTRlYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dGVudHMyL25hbWUKQEAgLTAsMCArMSBAQAorbXVsdGlwbHkgY2xhaW1lZCBibG9ja3MgaW4gZXh0ZW50cyBhbmQgb3RoZXIgaWxsZWdhbCBleHRlbnRzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRyYV9qb3VybmFsL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTE3Mzk2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9leHBlY3QuMQpAQCAtMCwwICsxLDIzIEBACitTdXBlcmJsb2NrIGhhc19qb3VybmFsIGZsYWcgaXMgY2xlYXIsIGJ1dCBhIGpvdXJuYWwgaXMgcHJlc2VudC4KK0NsZWFyPyB5ZXMKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitKb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oNTAtLTEwNzkpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDk2OCwgY291bnRlZD0xOTk4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg5NjgsIGNvdW50ZWQ9MTk5OCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRyYV9qb3VybmFsL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRhMTIwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRyYV9qb3VybmFsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTM5NjE5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZXh0cmFfam91cm5hbC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9leHRyYV9qb3VybmFsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9leHRyYV9qb3VybmFsL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1NDBlMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2V4dHJhX2pvdXJuYWwvbmFtZQpAQCAtMCwwICsxIEBACitWYWxpZCBqb3VybmFsIGlub2RlLCBidXQgaGFzX2pvdXJuYWwgZmVhdHVyZSBub3QgcHJlc2VudApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZmFzdF9zeW1saW5rX2V4dGVudHMvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9mYXN0X3N5bWxpbmtfZXh0ZW50cy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzE2Yzk3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmFzdF9zeW1saW5rX2V4dGVudHMvZXhwZWN0LjEKQEAgLTAsMCArMSwxMSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitGYXN0IHN5bWxpbmsgMTMgaGFzIEVYVEVOVF9GTCBzZXQuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Zhc3Rfc3ltbGlua19leHRlbnRzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmFzdF9zeW1saW5rX2V4dGVudHMvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2ZjQ5YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Zhc3Rfc3ltbGlua19leHRlbnRzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTMvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9mYXN0X3N5bWxpbmtfZXh0ZW50cy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2Zhc3Rfc3ltbGlua19leHRlbnRzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZWIwYWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9mYXN0X3N5bWxpbmtfZXh0ZW50cy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9mYXN0X3N5bWxpbmtfZXh0ZW50cy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmFzdF9zeW1saW5rX2V4dGVudHMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzNjYjUyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmFzdF9zeW1saW5rX2V4dGVudHMvbmFtZQpAQCAtMCwwICsxIEBACitmYXN0IHN5bWxpbmsgd2l0aCBleHRlbnRzIGZsYWcgc2V0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZV9hY2xfaGlnaC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGQ2ZTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZV9hY2xfaGlnaC9leHBlY3QuMQpAQCAtMCwwICsxLDEyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQoraV9maWxlX2FjbF9oaSBmb3IgaW5vZGUgMTIgKC9tb3RkKSBpcyAyLCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIyLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGVfYWNsX2hpZ2gvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNTQ3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZV9hY2xfaGlnaC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzQyZDU4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZV9hY2xfaGlnaC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9maWxlX2FjbF9oaWdoL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ1NGIwNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGVfYWNsX2hpZ2gvbmFtZQpAQCAtMCwwICsxIEBACitpX2ZpbGVfYWNsX2hpZ2ggc2hvdWxkIGJlIHplcm8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGV0eXBlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZXR5cGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyNGJmYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGV0eXBlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDkgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlIDE0KSBoYXMgaW1tdXRhYmxlCitvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlIDE1KSBoYXMgaW1tdXRhYmxlCitvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlIDE2KSBoYXMgaW1tdXRhYmxlCitvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvL3N5bWxpbmspIGZpbGUgKGlub2RlIDE3KSBoYXMgaW1tdXRhYmxlCitvciBhcHBlbmQtb25seSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnLicgaW4gLyAoMikgdG8gMi4KK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICcuLicgaW4gLyAoMikgdG8gMi4KK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICdsb3N0K2ZvdW5kJyBpbiAvICgyKSB0byAyLgorU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJ2ZpbGUnIGluIC8gKDIpIHRvIDEuCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnZGlyJyBpbiAvICgyKSB0byAyLgorU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJ2ZpZm8nIGluIC8gKDIpIHRvIDUuCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnYmxvY2snIGluIC8gKDIpIHRvIDQuCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnY2hhcicgaW4gLyAoMikgdG8gMy4KK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICdzeW1saW5rJyBpbiAvICgyKSB0byA3LgorSW5vZGUgMTggKC9iYWRjaGFyKSBpcyBhbiBpbGxlZ2FsIGNoYXJhY3RlciBkZXZpY2UuCitDbGVhcj8geWVzCisKK0lub2RlIDE5ICgvYmFkYmxvY2spIGlzIGFuIGlsbGVnYWwgYmxvY2sgZGV2aWNlLgorQ2xlYXI/IHllcworCitJbm9kZSAyMCAoL2JhZGZpZm8pIGlzIGFuIGlsbGVnYWwgRklGTy4KK0NsZWFyPyB5ZXMKKworU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJy4nIGluIC9sb3N0K2ZvdW5kICgxMSkgdG8gMi4KK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICcuLicgaW4gL2xvc3QrZm91bmQgKDExKSB0byAyLgorU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJy4nIGluIC9kaXIgKDEzKSB0byAyLgorU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJy4uJyBpbiAvZGlyICgxMykgdG8gMi4KK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNTAsIGNvdW50ZWQ9NDcpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKDUwLCBjb3VudGVkPTQ3KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTcvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maWxldHlwZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGV0eXBlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NjgxYWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9maWxldHlwZS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE3LzY0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjcvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZXR5cGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9maWxldHlwZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDBiMmVjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZXR5cGUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlsZXR5cGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGV0eXBlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwMjFmNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpbGV0eXBlL25hbWUKQEAgLTAsMCArMSBAQAorc2V0IGZpbGV0eXBlIGluZm9ybWF0aW9uIGFuZCBpbGxlZ2FsIHNwZWNpYWwgZmlsZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTc4NmJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlyc3RfbWV0YV9iZ190b29fYmlnL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjAgQEAKK0ZpcnN0X21ldGFfYmcgaXMgdG9vIGJpZy4gICgyLCBtYXggdmFsdWUgMSkuICBDbGVhcj8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMworRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3OSwgY291bnRlZD04MCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzksIGNvdW50ZWQ9ODApLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGJmZjYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZmlyc3RfbWV0YV9iZ190b29fYmlnL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maXJzdF9tZXRhX2JnX3Rvb19iaWcvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9maXJzdF9tZXRhX2JnX3Rvb19iaWcvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI3OTM3MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9maXJzdF9tZXRhX2JnX3Rvb19iaWcvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2ZpcnN0X21ldGFfYmdfdG9vX2JpZy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZWM5NmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9maXJzdF9tZXRhX2JnX3Rvb19iaWcvbmFtZQpAQCAtMCwwICsxIEBACitzX2ZpcnN0X21ldGFfYmcgaXMgdG9vIGxhcmdlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9mdWxsX2JnL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZnVsbF9iZy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDU0NTNmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZnVsbF9iZy9leHBlY3QuMQpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzM3NDQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA2ODUvNzY5IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfZnVsbF9iZy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2Z1bGxfYmcvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1NDUzZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2Z1bGxfYmcvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zNzQ0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNjg1Lzc2OSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Z1bGxfYmcvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9mdWxsX2JnL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZTQxOWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9mdWxsX2JnL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2Z1bGxfYmcvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2Z1bGxfYmcvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDYxNGRlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfZnVsbF9iZy9uYW1lCkBAIC0wLDAgKzEgQEAKK2lub2RlIHRhYmxlIGluIGxhc3QgYmxvY2sgb2YgZmlyc3QgYmcKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkbm9kZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkbm9kZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWIxY2VlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTggQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxMjkyOTogYmxvY2sgIzUzMSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxMjkyOTogYmxvY2sgIzk5MyByZWZlcmVuY2VkIHR3aWNlCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxMjkyOTogYmxvY2sgIzEwNjEgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTI5Mjk6IGJsb2NrICMxMDYyIGhhcyBpbnZhbGlkIGRlcHRoICgyKQorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTI5Mjk6IGJsb2NrICMxMDYyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDEyOTI5OiBibG9jayAjMTA2MiBub3QgcmVmZXJlbmNlZAorSW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTI5MjkgKC90ZXN0MikuICBDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogNDc3MzAvMTAwMTkyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTM1NTAvMzE3NDUgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU5ODVkMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkbm9kZS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDQ3NzMwLzEwMDE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEzNTUwLzMxNzQ1IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRub2RlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYzQxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjA3N2ZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRub2RlL25hbWUKQEAgLTAsMCArMSBAQAoraGFzaCBkaXJlY3Rvcnkgd2l0aCBiYWQgSFRSRUUgbm9kZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkbm9kZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1ZmM2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZG5vZGUvc2NyaXB0CkBAIC0wLDAgKzEsNSBAQAoraWYgdGVzdCAiJEhUUkVFInggPSB5eCA7IHRoZW4KKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGViYTUxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L2V4cGVjdC4xCkBAIC0wLDAgKzEsNDAgQEAKK0JhY2tpbmcgdXAgam91cm5hbCBpbm9kZSBibG9jayBpbmZvcm1hdGlvbi4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTMzNDUgaGFzIGFuIGludmFsaWQgcm9vdCBub2RlLgorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjY2ODkgaGFzIGFuIHVuc3VwcG9ydGVkIGhhc2ggdmVyc2lvbiAoMjQwKQorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitIVFJFRSBkaXJlY3RvcnkgaW5vZGUgNDAwMzMgaGFzIGFuIGludmFsaWQgcm9vdCBub2RlLgorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitIVFJFRSBkaXJlY3RvcnkgaW5vZGUgNTMzNzcgaGFzIGEgdHJlZSBkZXB0aCAoOCkgd2hpY2ggaXMgdG9vIGJpZworQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitIVFJFRSBkaXJlY3RvcnkgaW5vZGUgNjY3MjEgdXNlcyBhbiBpbmNvbXBhdGlibGUgaHRyZWUgcm9vdCBub2RlIGZsYWcuCitDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgODAwNjU6IGJsb2NrICMwIGhhcyBhbiB1bm9yZGVyZWQgaGFzaCB0YWJsZQorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSA4NjczNzogYmxvY2sgIzAgaGFzIGludmFsaWQgbGltaXQgKDUxMSkKK0NsZWFyIEhUcmVlIGluZGV4PyB5ZXMKKworUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgOTM0MDk6IGJsb2NrICMwIGhhcyBpbnZhbGlkIGNvdW50ICgyMzQpCitDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDczMzkzOiBibG9jayAjMSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSA3MzM5MzogYmxvY2sgIzIgaGFzIGJhZCBtYXggaGFzaAorSW52YWxpZCBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgNzMzOTMgKC90ZXN0NikuICBDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTkyMS8xMDAwODAgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzY0Ni8xNTM2MSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTc3MmMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTkyMS8xMDAwODAgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzY0Ni8xNTM2MSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTYwY2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJhYzdmZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfYmFkcm9vdC9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBodHJlZSByb290IG5vZGVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9oX2JhZHJvb3Qvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWZjNmIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9iYWRyb290L3NjcmlwdApAQCAtMCwwICsxLDUgQEAKK2lmIHRlc3QgIiRIVFJFRSJ4ID0geXggOyB0aGVuCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9oX25vcm1hbC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNzU3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX25vcm1hbC9leHBlY3QuMQpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDQ3NzMwLzEwMDE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEzMzc4LzMxNzQ1IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9ub3JtYWwvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX25vcm1hbC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjc1NzlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9ub3JtYWwvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA0NzczMC8xMDAxOTIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzM3OC8zMTc0NSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9ub3JtYWwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI0ZGFlZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX25vcm1hbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOTBmMzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX25vcm1hbC9uYW1lCkBAIC0wLDAgKzEgQEAKK05vcm1hbCAoc2lnbmVkKSBIVFJFRSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfbm9ybWFsL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWZjNmIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9ub3JtYWwvc2NyaXB0CkBAIC0wLDAgKzEsNSBAQAoraWYgdGVzdCAiJEhUUkVFInggPSB5eCA7IHRoZW4KKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yODg3MjM5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L2V4cGVjdC4xCkBAIC0wLDAgKzEsOTU4IEBACitCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxNjAwMTogYmxvY2sgIzEgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTYwMDE6IGJsb2NrICMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDE2MDAxOiBibG9jayAjMiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxNjAwMTogYmxvY2sgIzMgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTYwMDE6IGJsb2NrICMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDE2MDAxOiBibG9jayAjNCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxNjAwMTogYmxvY2sgIzQgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTYwMDE6IGJsb2NrICM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDE2MDAxOiBibG9jayAjNSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxNjAwMTogYmxvY2sgIzYgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTYwMDE6IGJsb2NrICM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDE2MDAxOiBibG9jayAjNyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxNjAwMTogYmxvY2sgIzcgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMTYwMDE6IGJsb2NrICM4IGhhcyBiYWQgbWluIGhhc2gKK0ludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlIDE2MDAxICgvdGVzdCkuICBDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzIgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzYgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzcgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzkgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxMCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzEwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxMiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzEyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxMyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzE0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxNSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzE1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxNiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzE3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxOCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzE4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMxOSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzIwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyMSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzIxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyMiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzIzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyNCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzI0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyNSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzI2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyNyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzI3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjggaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMyOCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzI5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzMCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzMwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzMSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzMyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzNCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzNiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzNyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzM4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzggaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICMzOSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzM5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0MCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0MiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0MyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQ0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0NSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQ1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0NiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQ3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0OCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzQ4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDkgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM0OSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzUwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTAgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1MSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzUxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTIgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1MiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzUzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTMgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1NCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzU0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTUgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1NSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzU2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTYgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1NyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzU3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTggaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM1OCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzU5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNTkgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2MCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzYwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjEgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2MSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzYyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjIgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2MyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzYzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjQgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2NCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzY1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjUgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2NiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzY2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjcgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2NyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzY4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNjggaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM2OSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzY5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzAgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3MCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzcxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzEgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3MiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzcyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzMgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3MyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzc0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzQgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3NSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzc1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzYgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3NiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzc3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzcgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3OCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzc4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNzkgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM3OSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzgwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODAgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4MSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzgxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODIgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4MiBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzgzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODMgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4NCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzg0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODUgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4NSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzg2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODYgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4NyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzg3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODggaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM4OCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzg5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjODkgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5MCBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzkwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTEgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5MSBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzkyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTIgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5MyBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzkzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTQgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5NCBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzk1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTUgaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5NiBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzk2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTcgaGFzIGJhZCBtaW4gaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5NyBoYXMgYmFkIG1heCBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzk4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjOTggaGFzIGJhZCBtYXggaGFzaAorUHJvYmxlbSBpbiBIVFJFRSBkaXJlY3RvcnkgaW5vZGUgMjQwMDE6IGJsb2NrICM5OSBoYXMgYmFkIG1pbiBoYXNoCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAyNDAwMTogYmxvY2sgIzk5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTAzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTA5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTExIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTExIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTEzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTE5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTIzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTI5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTM5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTQ5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTUzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTU5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTYzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTY5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTcyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTczIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTczIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTc5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTgzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTg5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTkzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMTk5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjAzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjA5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjExIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjExIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjEzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjE5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjIzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjI5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjM5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjQ5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjUzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjU5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjYzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjY5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjcyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjczIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjczIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjc5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjgzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjg5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjkzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMjk5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzAzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzA5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzExIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzExIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzEzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzE5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzIzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzI5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzM5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzQ5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzUzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzU5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzYzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzY5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzcyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzczIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzczIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzc5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzgzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzg5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzkzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjMzk5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDAzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDA5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDExIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDExIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDEzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDE5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDIzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDI5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDMzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDM5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDQ5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDUzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU1IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU3IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDU5IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYwIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYzIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDYzIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY0IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY0IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY1IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY2IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY2IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY3IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY4IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY4IGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDY5IGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcwIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcxIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcxIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcyIGhhcyBiYWQgbWluIGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDcyIGhhcyBiYWQgbWF4IGhhc2gKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxOiBibG9jayAjNDczIGhhcyBiYWQgbWluIGhhc2gKK0ludmFsaWQgSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0MDAxICgvdGVzdDIpLiAgQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXMKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDMwNTE0LzMyMDAwIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTY2OS84MDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNzg1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX3JlaW5kZXgvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAzMDUxNC8zMjAwMCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDU2NjkvODAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWFlNzJmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0NjI1ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9uYW1lCkBAIC0wLDAgKzEgQEAKK3JlaW5kZXggSFRSRUUgRGlyZWN0b3J5IHdpdGggZGlmZmVyZW50IGhhc2ggc2VlZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF9yZWluZGV4L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVmYzZiMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfcmVpbmRleC9zY3JpcHQKQEAgLTAsMCArMSw1IEBACitpZiB0ZXN0ICIkSFRSRUUieCA9IHl4IDsgdGhlbgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaF91bnNpZ25lZC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY3NTc5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvZXhwZWN0LjEKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA0NzczMC8xMDAxOTIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzM3OC8zMTc0NSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX3Vuc2lnbmVkL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNzU3OWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX3Vuc2lnbmVkL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogNDc3MzAvMTAwMTkyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMzNzgvMzE3NDUgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9oX3Vuc2lnbmVkL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF91bnNpZ25lZC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWY5Yzg0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF91bnNpZ25lZC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9oX3Vuc2lnbmVkL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9oX3Vuc2lnbmVkL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYwNjk1OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvbmFtZQpAQCAtMCwwICsxIEBACitVbnNpZ25lZCBIVFJFRSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaF91bnNpZ25lZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVmYzZiMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hfdW5zaWduZWQvc2NyaXB0CkBAIC0wLDAgKzEsNSBAQAoraWYgdGVzdCAiJEhUUkVFInggPSB5eCA7IHRoZW4KKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkNzRmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL2V4cGVjdC4xCkBAIC0wLDAgKzEsMzMgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTEgaGFzIGlsbGVnYWwgYmxvY2socykuICBDbGVhcj8geWVzCisKK0lsbGVnYWwgYmxvY2sgIzYgKDIwMCkgaW4gaW5vZGUgMTEuICBDTEVBUkVELgorSW5vZGUgMTEsIGlfc2l6ZSBpcyAxMjI4OCwgc2hvdWxkIGJlIDExMjY0LiAgRml4PyB5ZXMKKworSW5vZGUgMTEsIGlfYmxvY2tzIGlzIDI0LCBzaG91bGQgYmUgMTYuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxMSBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzAuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMSBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzMuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMSBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzYuICBBbGxvY2F0ZT8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0yMQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3OCwgY291bnRlZD03OSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzgsIGNvdW50ZWQ9NzkpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMGI0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpci9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTI2YWI4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpci9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDExZjY1NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIvbmFtZQpAQCAtMCwwICsxIEBACitkaXJlY3Rvcnkgd2l0aCBob2xlcyBhbmQgaWxsZWdhbCBibG9ja3MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIyL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU1ZjRiMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIyL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjIgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIsIGlfc2l6ZSBpcyAwLCBzaG91bGQgYmUgNTEyMC4gIEZpeD8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMyBibG9jayAyIHNob3VsZCBiZSBhdCBibG9jayAxLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMzLiAgQWxsb2NhdGU/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXMKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc4LCBjb3VudGVkPTc3KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3OCwgY291bnRlZD03NykuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzE2IGZpbGVzICg3LjclIG5vbi1jb250aWd1b3VzKSwgMjMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzZjNmU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMy8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNkZGEwNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMTUzZjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMi9uYW1lCkBAIC0wLDAgKzEsMiBAQAorZGlyZWN0b3JpZXMgd2l0aCBob2xlcyBhbmQgemVybyBpX3NpemUKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzRjYTZjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvZXhwZWN0LjEKQEAgLTAsMCArMSwxMyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitEaXJlY3RvcnkgaW5vZGUgMTIgYmxvY2sgNSBzaG91bGQgYmUgYXQgYmxvY2sgMi4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX3NpemUgaXMgNjE0NCwgc2hvdWxkIGJlIDMwNzIuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTcvMTI4IGZpbGVzICg1LjklIG5vbi1jb250aWd1b3VzKSwgMTA5My8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjc1ZTZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNy8xMjggZmlsZXMgKDUuOSUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkzLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXIzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1ZWViMzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyMy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTI2Nzg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjMvbmFtZQpAQCAtMCwwICsxLDIgQEAKK3JlYWwgZGlyZWN0b3JpZXMgd2l0aCBob2xlcyBhbmQgemVybyBpX3NpemUKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyNC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTY2ZmI2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjQvZXhwZWN0LjEKQEAgLTAsMCArMSw2OCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitEaXJlY3RvcnkgaW5vZGUgMTIgYmxvY2sgMjExIHNob3VsZCBiZSBhdCBibG9jayAyNS4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX3NpemUgaXMgNDA5Niwgc2hvdWxkIGJlIDExMDU5Mi4gIEZpeD8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAxMjgsIHNob3VsZCBiZSAyNTYuICBGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzIuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzMuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzQuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzUuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzYuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzcuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzguICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzkuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzEwLiAgQWxsb2NhdGU/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMxMS4gIEFsbG9jYXRlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyIGhhcyBhbiB1bmFsbG9jYXRlZCBibG9jayAjMTIuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzEzLiAgQWxsb2NhdGU/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMxNC4gIEFsbG9jYXRlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyIGhhcyBhbiB1bmFsbG9jYXRlZCBibG9jayAjMTUuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzE2LiAgQWxsb2NhdGU/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMxNy4gIEFsbG9jYXRlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyIGhhcyBhbiB1bmFsbG9jYXRlZCBibG9jayAjMTguICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzE5LiAgQWxsb2NhdGU/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMyMC4gIEFsbG9jYXRlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyIGhhcyBhbiB1bmFsbG9jYXRlZCBibG9jayAjMjEuICBBbGxvY2F0ZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiBoYXMgYW4gdW5hbGxvY2F0ZWQgYmxvY2sgIzIyLiAgQWxsb2NhdGU/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGFuIHVuYWxsb2NhdGVkIGJsb2NrICMyMy4gIEFsbG9jYXRlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEyIGhhcyBhbiB1bmFsbG9jYXRlZCBibG9jayAjMjQuICBBbGxvY2F0ZT8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMjYsIGNvdW50ZWQ9MjUpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDQxNiwgY291bnRlZD00MDApLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy8zMiBmaWxlcyAoNy43JSBub24tY29udGlndW91cyksIDExMi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyNC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXI0L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMGUzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyNC9leHBlY3QuMgpAQCAtMCwwICsxLDExIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyAzMDcyLCBzaG91bGQgYmUgMTI4LiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTEyLzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXI0L2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaG9sZWRpcjQvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFiMTI0NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXI0L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2hvbGVkaXI0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyNC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYjU1YzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ob2xlZGlyNC9uYW1lCkBAIC0wLDAgKzEgQEAKK2JpZ2FsbG9jIGRpcmVjdG9yeSB3aXRoIGhvbGUgYW5kIG1pc2FsaWduZWQgZXh0ZW50IGFmdGVyIGhvbGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2h0cmVlX2JhZF9jc3VtL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfYmFkX2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4MzYyYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2h0cmVlX2JhZF9jc3VtL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjggQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxMjogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLgorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitQcm9ibGVtIGluIEhUUkVFIGRpcmVjdG9yeSBpbm9kZSAxODogcm9vdCBub2RlIGZhaWxzIGNoZWNrc3VtLgorQ2xlYXIgSFRyZWUgaW5kZXg/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMjQsIGJsb2NrICMwLCBvZmZzZXQgMTAyMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDI0OiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uCitDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDMwOiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uCitDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Byb2JsZW0gaW4gSFRSRUUgZGlyZWN0b3J5IGlub2RlIDM2OiByb290IG5vZGUgZmFpbHMgY2hlY2tzdW0uCitDbGVhciBIVHJlZSBpbmRleD8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogNDcvMTI4IGZpbGVzICgyLjElIG5vbi1jb250aWd1b3VzKSwgMTEwOC8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfYmFkX2NzdW0vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9iYWRfY3N1bS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM1MjNiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfYmFkX2NzdW0vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA0Ny8xMjggZmlsZXMgKDIuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxMTA4LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9iYWRfY3N1bS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2h0cmVlX2JhZF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZjU3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9iYWRfY3N1bS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9iYWRfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfYmFkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmZjM2VhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfYmFkX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACitodHJlZSBibG9jayB3LyBtaXNzaW5nL2JhZCBjc3VtLCBiYWQgcHJvdGVjdGl2ZSBkaXJlbnQsIG9yIGh0cmVlIGluZGV4IGNvcnJ1cHRpb24gKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9sZWFmX2NzdW0vZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9sZWFmX2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZiMTc5ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2h0cmVlX2xlYWZfY3N1bS9leHBlY3QuMQpAQCAtMCwwICsxLDEyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMTogZGlyZWN0b3J5IHBhc3NlcyBjaGVja3MgYnV0IGZhaWxzIGNoZWNrc3VtLgorRml4PyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiA0MzAvNTEyIGZpbGVzICgwLjIlIG5vbi1jb250aWd1b3VzKSwgNDUvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MDk3ODUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9sZWFmX2NzdW0vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA0MzAvNTEyIGZpbGVzICgwLjIlIG5vbi1jb250aWd1b3VzKSwgNDUvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZTQ2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9sZWFmX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odHJlZV9sZWFmX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2M2YWRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHRyZWVfbGVhZl9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorYmFkIGNzdW0gaW4gaHRyZWUgbGVhZiBibG9jawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odWdlZGlyX2Jsb2Nrcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OThhN2FjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvZXhwZWN0LjEKQEAgLTAsMCArMSwxMCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBpcyB0b28gYmlnLiAgVHJ1bmNhdGU/IHllcworCitCbG9jayAjMTA3NDc5MTQzNSAoMTMpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIENMRUFSRUQuCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMjIvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odWdlZGlyX2Jsb2Nrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzVmNGMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAyMi81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9odWdlZGlyX2Jsb2Nrcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2h1Z2VkaXJfYmxvY2tzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNTRkZTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odWdlZGlyX2Jsb2Nrcy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9odWdlZGlyX2Jsb2Nrcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzQ3NjFiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVnZWRpcl9ibG9ja3MvbmFtZQpAQCAtMCwwICsxIEBACitjcmFzaCBlMmZzY2sgd2l0aCBhIGRpciB3aXRoIGFuIGltcG9zc2libHkgaGlnaCBsb2dpY2FsIGJsayBvZmZzZXQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odXJkL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YmZjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odXJkL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTIgQEAKK1RoZSBIdXJkIGRvZXMgbm90IHN1cHBvcnQgdGhlIGZpbGV0eXBlIGZlYXR1cmUuCitDbGVhcj8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjAvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVyZC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRiZmY2MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9odXJkL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZmZlMGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9odXJkL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2h1cmQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjkyOTg2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaHVyZC9uYW1lCkBAIC0wLDAgKzEgQEAKK0dOVS9IdXJkIHNwZWNpZmljIHRlc3RzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lkYXRhX2FuZF9leHRlbnRzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmN2ZiZjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9leHBlY3QuMQpAQCAtMCwwICsxLDM1IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1NwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgMTkpIGhhcyBleHRlbnRzCitvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworSW5vZGUgMjAgaGFzIGV4dGVudCBoZWFkZXIgYnV0IGlubGluZSBkYXRhIGZsYWcgaXMgc2V0LgorRml4PyB5ZXMKKworSW5vZGUgMjEgaGFzIGlubGluZSBkYXRhIGFuZCBleHRlbnQgZmxhZ3Mgc2V0IGJ1dCBpX2Jsb2NrIGNvbnRhaW5zIGp1bmsuCitDbGVhciBpbm9kZT8geWVzCisKK0lub2RlIDIyIHNlZW1zIHRvIGhhdmUgYmxvY2sgbWFwIGJ1dCBpbmxpbmUgZGF0YSBhbmQgZXh0ZW50IGZsYWdzIHNldC4KK0ZpeD8geWVzCisKK0lub2RlIDIzIHNlZW1zIHRvIGhhdmUgaW5saW5lIGRhdGEgYnV0IGV4dGVudCBmbGFnIGlzIHNldC4KK0ZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJ2dhcmJhZ2UnIGluIC9iYWQgKDE4KSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMjEuICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0yMQorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxMDUsIGNvdW50ZWQ9MTA2KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxMDUsIGNvdW50ZWQ9MTA2KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMjIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWRhdGFfYW5kX2V4dGVudHMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDdkM2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWRhdGFfYW5kX2V4dGVudHMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAyMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lkYXRhX2FuZF9leHRlbnRzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxODdiYTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pZGF0YV9hbmRfZXh0ZW50cy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWRhdGFfYW5kX2V4dGVudHMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjJjZTBlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWRhdGFfYW5kX2V4dGVudHMvbmFtZQpAQCAtMCwwICsxIEBACitjb25mbGljdGluZyBleHRlbnRzIGFuZCBpbmxpbmVfZGF0YSBpbm9kZSBmbGFncwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsYmJpdG1hcC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGJiaXRtYXAvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc0NmQyMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGJiaXRtYXAvZXhwZWN0LjEKQEAgLTAsMCArMSwyOCBAQAorZXh0MmZzX2NoZWNrX2Rlc2M6IENvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAKK05vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0CitvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5CitydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgODE5Mycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW0KK21heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQKK3RoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLgorCitCbG9jayBiaXRtYXAgZm9yIGdyb3VwIDAgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrIDQwOTYpCitSZWxvY2F0ZT8geWVzCisKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUmVsb2NhdGluZyBncm91cCAwJ3MgYmxvY2sgYml0bWFwIHRvIDQuLi4KK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0yMSkKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMTItLTIxKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIyLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGJiaXRtYXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxiYml0bWFwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MjFmODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxiYml0bWFwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxiYml0bWFwL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsYmJpdG1hcC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjE2ZWJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsYmJpdG1hcC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxiYml0bWFwL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxiYml0bWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkNGY1OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGJiaXRtYXAvbmFtZQpAQCAtMCwwICsxIEBACitpbGxlZ2FsIGJsb2NrIGJpdG1hcApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGliaXRtYXAvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhZTI1ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGliaXRtYXAvZXhwZWN0LjEKQEAgLTAsMCArMSwyNSBAQAorZXh0MmZzX2NoZWNrX2Rlc2M6IENvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAKK05vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0CitvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5CitydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgODE5Mycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW0KK21heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQKK3RoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLgorCitJbm9kZSBiaXRtYXAgZm9yIGdyb3VwIDAgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrIDQwMDApCitSZWxvY2F0ZT8geWVzCisKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUmVsb2NhdGluZyBncm91cCAwJ3MgaW5vZGUgYml0bWFwIHRvIDQuLi4KK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0xMSkKK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpYml0bWFwL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODIxZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGliaXRtYXAvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwODkyZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGliaXRtYXAvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaWJpdG1hcC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYzQwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpYml0bWFwL25hbWUKQEAgLTAsMCArMSBAQAoraWxsZWdhbCBpbm9kZSBiaXRtYXAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYWE1Njg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDkgQEAKK2V4dDJmc19jaGVja19kZXNjOiBDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUKK05vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0CitvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5CitydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgODE5Mycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW0KK21heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQKK3RoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLgorCitJbm9kZSB0YWJsZSBmb3IgZ3JvdXAgMCBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgNDAwMDApCitXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLgorUmVsb2NhdGU/IHllcworCisuLi9lMmZzY2svZTJmc2NrOiBBIGJsb2NrIGdyb3VwIGlzIG1pc3NpbmcgYW4gaW5vZGUgdGFibGUgd2hpbGUgcmVhZGluZyBiYWQgYmxvY2tzIGlub2RlCitUaGlzIGRvZXNuJ3QgYm9kZSB3ZWxsLCBidXQgd2UnbGwgdHJ5IHRvIGdvIG9uLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1JlbG9jYXRpbmcgZ3JvdXAgMCdzIGlub2RlIHRhYmxlIHRvIDcuLi4KK1Jlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitSb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Jvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIEFsbG9jYXRlPyB5ZXMKKworL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMTEtLTIxKQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3NywgY291bnRlZD04OSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNzcsIGNvdW50ZWQ9ODkpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgyMCwgY291bnRlZD0yMSkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDMsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMjAsIGNvdW50ZWQ9MjEpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDExLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWFkNWNmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwMjE5NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMWU3M2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGUvbmFtZQpAQCAtMCwwICsxIEBACitpbGxlZ2FsIGlub2RlIHRhYmxlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGVfZmxleGJnL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlX2ZsZXhiZy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTQyYTBmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlX2ZsZXhiZy9leHBlY3QuMQpAQCAtMCwwICsxLDI0IEBACitleHQyZnNfY2hlY2tfZGVzYzogQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGlub2RlIHRhYmxlCisuLi9lMmZzY2svZTJmc2NrOiBHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorSW5vZGUgdGFibGUgZm9yIGdyb3VwIDEgaXMgbm90IGluIGdyb3VwLiAgKGJsb2NrIDApCitXQVJOSU5HOiBTRVZFUkUgREFUQSBMT1NTIFBPU1NJQkxFLgorUmVsb2NhdGU/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1JlbG9jYXRpbmcgZ3JvdXAgMSdzIGlub2RlIHRhYmxlIHRvIDE0Mi4uLgorUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uCitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMSBjaGVja3N1bSBpcyAweDFjZWUsIHNob3VsZCBiZSAweGY4MDkuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDY1LS0xMjgpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDMxMTYzLzMyNzY4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlX2ZsZXhiZy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZV9mbGV4YmcvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmNDNjMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZV9mbGV4YmcvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8yNTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAzMTE2My8zMjc2OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZV9mbGV4YmcvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGVfZmxleGJnL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdmYTE0NDYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbGxpdGFibGVfZmxleGJnL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZV9mbGV4YmcvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lsbGl0YWJsZV9mbGV4YmcvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGIwODUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaWxsaXRhYmxlX2ZsZXhiZy9uYW1lCkBAIC0wLDAgKzEgQEAKK2lsbGVnYWwgaW5vZGUgdGFibGUgd2l0aCBGTEVYX0JHCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJlZTE5MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpYy9leHBlY3QuMQpAQCAtMCwwICsxLDQ3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBpbWFnaWMgZmxhZyBzZXQuICBDbGVhcj8geWVzCisKK0lub2RlIDEzIGhhcyBpbWFnaWMgZmxhZyBzZXQuICBDbGVhcj8geWVzCisKK0lub2RlIDE0IGhhcyBpbWFnaWMgZmxhZyBzZXQuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDIgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxMgorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDEyIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTQKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxNCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oOS0tMTkpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDc1LCBjb3VudGVkPTg3KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg3NSwgY291bnRlZD04NykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDEsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDMsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMSwgY291bnRlZD0yKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY0MTFjMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpYy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE0LzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMmIzZmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjk0MDA4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljL25hbWUKQEAgLTAsMCArMSBAQAorbm9uLWltYWdpYyBmaWxlc3lzdGVtIHdpdGggaW1hZ2ljIGlub2RlcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljX2ZzL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljX2ZzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyMWZkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWNfZnMvZXhwZWN0LjEKQEAgLTAsMCArMSwzMSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAyIHJlZiBjb3VudCBpcyA0LCBzaG91bGQgYmUgMy4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSg5LS0xOSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzUsIGNvdW50ZWQ9ODcpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDc1LCBjb3VudGVkPTg3KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMSwgY291bnRlZD0yKS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMywgY291bnRlZD0yKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxLCBjb3VudGVkPTIpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNC8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpY19mcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpY19mcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQxMWMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW1hZ2ljX2ZzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTQvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWNfZnMvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpY19mcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwMzY5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWNfZnMvbmFtZQpAQCAtMCwwICsxIEBACitpbWFnaWMgZmlsZXN5c3RlbSB3aXRoIGltYWdpYyBpbm9kZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ltYWdpY19mcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWNfZnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNjBmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbWFnaWNfZnMvc2NyaXB0CkBAIC0wLDAgKzEsOSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyLy4uL2ZfaW1hZ2ljL2ltYWdlLmd6CitQUkVQX0NNRD0nJERFQlVHRlMgLXcgLVIgImZlYXR1cmUgaW1hZ2ljX2lub2RlcyIgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMScKKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkgCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmRfaW5vZGVfY29sbGlzaW9uL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5kX2lub2RlX2NvbGxpc2lvbi9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTJjZDlmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5kX2lub2RlX2NvbGxpc2lvbi9leHBlY3QuMQpAQCAtMCwwICsxLDE0NyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBibG9jayA0MSBjb25mbGljdHMgd2l0aCBjcml0aWNhbCBtZXRhZGF0YSwgc2tpcHBpbmcgYmxvY2sgY2hlY2tzLgorSW5vZGUgMTIgYmxvY2sgNDAgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy4KK0lub2RlIDEyIGJsb2NrIDM0IGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNjc3NzIxNSBmb3IgbWV0YWRhdGEgYmxvY2sgbWFwCitJbm9kZSAxMiBibG9jayAxIGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuCitJbm9kZSAxMiwgaV9zaXplIGlzIDMzLCBzaG91bGQgYmUgMjUyMjcyNjQuICBGaXg/IHllcworCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgOTk5LCBzaG91bGQgYmUgMTg0LiAgRml4PyB5ZXMKKworCitSdW5uaW5nIGFkZGl0aW9uYWwgcGFzc2VzIHRvIHJlc29sdmUgYmxvY2tzIGNsYWltZWQgYnkgbW9yZSB0aGFuIG9uZSBpbm9kZS4uLgorUGFzcyAxQjogUmVzY2FubmluZyBmb3IgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMjogMworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSA3OiAxMQorTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMTogNC0tNworTXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSBpbiBpbm9kZSAxMjogNDEgNDBJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNjg3NyBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzQwOTYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxOTY2MDggZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCisgMzQgOCAzSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzMzMTUyIGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDI0MzQ1NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzY1NTM2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorIDI4IDggMTEgMUlsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNjgzMiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE2Mzg0IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTMxMDcyIGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorIDI4IDQtLTdJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMzMyMDYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMyNTIyNzI2NCBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzOTcgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzk3IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM5NyBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzY1NTM2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorIDI4IDQxSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM5NyBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE2Nzc3MjE1IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorIDI4CitFcnJvciB3aGlsZSBpdGVyYXRpbmcgb3ZlciBibG9ja3MgaW4gaW5vZGUgMTIgKHBhc3MxYik6IElsbGVnYWwgaW5kaXJlY3QgYmxvY2sgZm91bmQKK1Bhc3MgMUM6IFNjYW5uaW5nIGRpcmVjdG9yaWVzIGZvciBpbm9kZXMgd2l0aCBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworUGFzcyAxRDogUmVjb25jaWxpbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKKyhUaGVyZSBhcmUgMyBpbm9kZXMgY29udGFpbmluZyBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcy4pCisKK0ZpbGUgLyAoaW5vZGUgIzIsIG1vZCB0aW1lIFNhdCBKYW4gMTcgMjE6MTY6MTYgMjAxNSkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwkvYSAoaW5vZGUgIzEyLCBtb2QgdGltZSBTYXQgSmFuIDE3IDIxOjE2OjM3IDIwMTUpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0ZpbGUgL2xvc3QrZm91bmQgKGlub2RlICMxMSwgbW9kIHRpbWUgU2F0IEphbiAxNyAyMToxNjoxNiAyMDE1KSAKKyAgaGFzIDQgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggMSBmaWxlKHMpOgorCS9hIChpbm9kZSAjMTIsIG1vZCB0aW1lIFNhdCBKYW4gMTcgMjE6MTY6MzcgMjAxNSkKK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworRmlsZSAvYSAoaW5vZGUgIzEyLCBtb2QgdGltZSBTYXQgSmFuIDE3IDIxOjE2OjM3IDIwMTUpIAorICBoYXMgMTcgbXVsdGlwbHktY2xhaW1lZCBibG9jayhzKSwgc2hhcmVkIHdpdGggNCBmaWxlKHMpOgorCTxmaWxlc3lzdGVtIG1ldGFkYXRhPgorCS9sb3N0K2ZvdW5kIChpbm9kZSAjMTEsIG1vZCB0aW1lIFNhdCBKYW4gMTcgMjE6MTY6MTYgMjAxNSkKKwk8VGhlIGdyb3VwIGRlc2NyaXB0b3IgaW5vZGU+IChpbm9kZSAjNywgbW9kIHRpbWUgU2F0IEphbiAxNyAyMToxNjoxNiAyMDE1KQorCS8gKGlub2RlICMyLCBtb2QgdGltZSBTYXQgSmFuIDE3IDIxOjE2OjE2IDIwMTUpCitDbG9uZSBtdWx0aXBseS1jbGFpbWVkIGJsb2Nrcz8geWVzCisKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE2ODc3IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDA5NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE5NjYwOCBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMzMzE1MiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzQyNDM0NTYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM2NTUzNiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNjgzMiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE2Mzg0IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzNzYgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzc2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTMxMDcyIGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM3NiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzMzMjA2IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMjUyMjcyNjQgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNDIxNTI5Mzk3IGZvciBtdWx0aXBseSBjbGFpbWVkIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjMTQyMTUyOTM5NyBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzOTcgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM2NTUzNiBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzE0MjE1MjkzOTcgZm9yIG11bHRpcGx5IGNsYWltZWQgYmxvY2sgbWFwCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICMxNjc3NzIxNSBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgQ2xlYXI/IHllcworCitJbGxlZ2FsIGJsb2NrICMxMDM4ICgxNDIxNTI5Mzc2KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxMDM5ICgxNDIxNTI5Mzc2KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxMDQwICgxNDIxNTI5Mzc2KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxMTAwICgxNjg3NykgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTEwMSAoNDA5NikgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTEwMiAoMTQyMTUyOTM3NikgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTEwMyAoMTQyMTUyOTM3NikgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTEwNCAoMTQyMTUyOTM3NikgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTEwNiAoMTk2NjA4KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxMTM2ICgxNDIxNTI5Mzc2KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxNDIwICgzMzE1MikgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorVG9vIG1hbnkgaWxsZWdhbCBibG9ja3MgaW4gaW5vZGUgMTIuCitDbGVhciBpbm9kZT8geWVzCisKK1Jlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0VudHJ5ICdhJyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTIuICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMy0tNykgLSgxNS0tMTcpIC0oMTktLTI0KQorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTEyCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDExNiwgY291bnRlZD0xMTcpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKDExNiwgY291bnRlZD0xMTcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDkuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmRfaW5vZGVfY29sbGlzaW9uL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5kX2lub2RlX2NvbGxpc2lvbi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGE2ZGFjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5kX2lub2RlX2NvbGxpc2lvbi9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2luZF9pbm9kZV9jb2xsaXNpb24vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmRfaW5vZGVfY29sbGlzaW9uL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNGQyMjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmRfaW5vZGVfY29sbGlzaW9uL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2luZF9pbm9kZV9jb2xsaXNpb24vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2luZF9pbm9kZV9jb2xsaXNpb24vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWZlZWUzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5kX2lub2RlX2NvbGxpc2lvbi9uYW1lCkBAIC0wLDAgKzEgQEAKK211bHRpcGxlICppbmQgY29sbGlzaW9ucyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfZGlyYmxvY2tzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZDBlZTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9leHBlY3QuMQpAQCAtMCwwICsxLDI1IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJy4uJyBpbiA/Pz8gKDEyKSBoYXMgaW52YWxpZCBpbm9kZSAjOiAxNzUyNDQwODY3LgorQ2xlYXI/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMTIsIGJsb2NrICMwLCBvZmZzZXQgNDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiwgYmxvY2sgIzEsIG9mZnNldCAwOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisnLi4nIGluIC9hb28gKDEyKSBpcyA/Pz8gKDE3NTI0NDA4NjcpLCBzaG91bGQgYmUgLyAoMikuCitGaXg/IHllcworCitFcnJvciB3aGlsZSBhZGp1c3RpbmcgaW5vZGUgY291bnQgb24gaW5vZGUgMAorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMiwgY291bnRlZD0zKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGF0YV9kaXJibG9ja3MvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjYwNzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGF0YV9kaXJibG9ja3MvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNy81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfZGlyYmxvY2tzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjZDY0ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX2RpcmJsb2Nrcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGF0YV9kaXJibG9ja3MvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjI2NzU4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGF0YV9kaXJibG9ja3MvbmFtZQpAQCAtMCwwICsxIEBACitjaGVjayBpbmxpbmUgZGlyIGFzIHR3byBkaXJlbnQgYmxvY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfcmVwYWlyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljODRiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9leHBlY3QuMQpAQCAtMCwwICsxLDU4IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBJTkxJTkVfREFUQV9GTCBmbGFnIGJ1dCBleHRlbmRlZCBhdHRyaWJ1dGUgbm90IGZvdW5kLiAgVHJ1bmNhdGU/IHllcworCitJbm9kZSAxNiwgaV9zaXplIGlzIDU2LCBzaG91bGQgYmUgNjAuICBGaXg/IHllcworCitJbm9kZSAyNCwgaV9zaXplIGlzIDU5LCBzaG91bGQgYmUgNjAuICBGaXg/IHllcworCitJbm9kZSAyOCBpcyBhIHVua25vd24gZmlsZSB0eXBlIHdpdGggbW9kZSAwMCBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuCitGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAyMCwgYmxvY2sgIzAsIG9mZnNldCA0OiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDI4LCBibG9jayAjMCwgb2Zmc2V0IDQ6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitEaXJlY3RvcnkgaW5vZGUgMzIsIGJsb2NrICMwLCBvZmZzZXQgNDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAzMiwgYmxvY2sgIzAsIG9mZnNldCA0OiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworU3ltbGluayAvMSAoaW5vZGUgIzEyKSBpcyBpbnZhbGlkLgorQ2xlYXI/IHllcworCitTeW1saW5rIC8zIChpbm9kZSAjMTQpIGlzIGludmFsaWQuCitDbGVhcj8geWVzCisKK0lub2RlIDM4ICgvQikgaGFzIGludmFsaWQgbW9kZSAoMDApLgorQ2xlYXI/IHllcworCitJbm9kZSAzNiAoL0EpIGhhcyBpbnZhbGlkIG1vZGUgKDAwKS4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMjIuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMjMuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMjkuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMzAuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMzEuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMzMuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMzQuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMzUuICBDbGVhcj8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAyNi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfcmVwYWlyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZDg3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDI2LzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfcmVwYWlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGF0YV9yZXBhaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzMzZDgxZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfcmVwYWlyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRhdGFfcmVwYWlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlN2U4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkYXRhX3JlcGFpci9uYW1lCkBAIC0wLDAgKzEgQEAKK3JlcGFpciBjb3JydXB0IGlubGluZSBkYXRhIGZpbGVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkaXJfZGV0ZWN0b3IvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkaXJfZGV0ZWN0b3IvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiNzUxOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRpcl9kZXRlY3Rvci9leHBlY3QuMQpAQCAtMCwwICsxLDIwIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1NwZWNpYWwgKGRldmljZS9zb2NrZXQvZmlmbykgZmlsZSAoaW5vZGUgMTIpIGhhcyBleHRlbnRzCitvciBpbmxpbmUtZGF0YSBmbGFnIHNldC4gIENsZWFyPyB5ZXMKKworU3BlY2lhbCAoZGV2aWNlL3NvY2tldC9maWZvKSBpbm9kZSAxMiBoYXMgbm9uLXplcm8gc2l6ZS4gIEZpeD8geWVzCisKK0lub2RlIDEzIGlzIGEgbmFtZWQgcGlwZSBidXQgaXQgbG9va3MgbGlrZSBpdCBpcyByZWFsbHkgYSBkaXJlY3RvcnkuCitGaXg/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0VudHJ5ICdtb28nIGluIC8gKDIpIGhhcyBhbiBpbmNvcnJlY3QgZmlsZXR5cGUgKHdhcyAxLCBzaG91bGQgYmUgNSkuCitGaXg/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE3LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRpcl9kZXRlY3Rvci9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2lubGluZWRpcl9kZXRlY3Rvci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjg4NmE0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGlyX2RldGVjdG9yL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTMvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGlyX2RldGVjdG9yL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGlyX2RldGVjdG9yL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YjQ1MTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkaXJfZGV0ZWN0b3IvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGlyX2RldGVjdG9yL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbmxpbmVkaXJfZGV0ZWN0b3IvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzY4YWY1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5saW5lZGlyX2RldGVjdG9yL25hbWUKQEAgLTAsMCArMSBAQAorZGV0ZWN0IGlubGluZSBkaXJzIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5vZGVfZWFfY29sbGlzaW9uL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5vZGVfZWFfY29sbGlzaW9uL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2N2E1ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vZXhwZWN0LjEKQEAgLTAsMCArMSwxNSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgQ2xlYXI/IHllcworCitJbm9kZSAxMyBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgQ2xlYXI/IHllcworCitJbm9kZSAxNCBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgY29ycnVwdCAoYWxsb2NhdGlvbiBjb2xsaXNpb24pLiAgQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5vZGVfZWFfY29sbGlzaW9uL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW5vZGVfZWFfY29sbGlzaW9uL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2NhODYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNC8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxN2Y2NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2lub2RlX2VhX2NvbGxpc2lvbi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2lub2RlX2VhX2NvbGxpc2lvbi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NDExOWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbm9kZV9lYV9jb2xsaXNpb24vbmFtZQpAQCAtMCwwICsxIEBACitjb2xsaXNpb25zIGluIHRoZSBpbm9kZSBlYSBhcmVhCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2JhZF9pbm9kZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfYmFkX2lub2RlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhMzdjYjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2JhZF9pbm9kZS9leHBlY3QuMQpAQCAtMCwwICsxLDExIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1RoZSBiYWQgYmxvY2sgaW5vZGUgbG9va3MgaW52YWxpZC4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9iYWRfaW5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2JhZF9pbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNlZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9iYWRfaW5vZGUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfYmFkX2lub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9iYWRfaW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhYzE0NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfYmFkX2lub2RlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfYmFkX2lub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2JhZF9pbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ODFlOGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2JhZF9pbm9kZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NoZWNrIGZvciBib2d1cyBiYWQgaW5vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfZXh0ZW50X3N5bWxpbmsvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2V4dGVudF9zeW1saW5rL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGEwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2V4dGVudF9zeW1saW5rL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTIgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitTeW1saW5rIC9hIChpbm9kZSAjMTIpIGlzIGludmFsaWQuCitDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMTYgZmlsZXMgKDkuMSUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2V4dGVudF9zeW1saW5rL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9leHRlbnRfc3ltbGluay9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWNlZWZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9leHRlbnRfc3ltbGluay9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9leHRlbnRfc3ltbGluay9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfZXh0ZW50X3N5bWxpbmsvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRhNmVlZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2ludmFsaWRfZXh0ZW50X3N5bWxpbmsvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9leHRlbnRfc3ltbGluay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaW52YWxpZF9leHRlbnRfc3ltbGluay9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OTJhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pbnZhbGlkX2V4dGVudF9zeW1saW5rL25hbWUKQEAgLTAsMCArMSBAQAorZXh0ZW50LW1hcHBlZCBzeW1saW5rIHdpdGggdHdvIGJsb2NrcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaXRhYmxlX2NvbGxpc2lvbi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBjZGNlZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vZXhwZWN0LjEKQEAgLTAsMCArMSwxMDEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgYmxvY2sgMzcgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy4KK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzI2ODQzNTQ1NSBmb3IgaW4tdXNlIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCAjMjY4NDM1NDU1IGZvciBpbi11c2UgYmxvY2sgbWFwCitJbm9kZSAxMiwgaV9ibG9ja3MgaXMgNDgsIHNob3VsZCBiZSA1Ni4gIEZpeD8geWVzCisKK0lub2RlIDEzIGhhcyBhIGJhZCBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgMzQuICBDbGVhcj8geWVzCisKK0RlbGV0ZWQgaW5vZGUgMzMgaGFzIHplcm8gZHRpbWUuICBGaXg/IHllcworCitJbm9kZXMgdGhhdCB3ZXJlIHBhcnQgb2YgYSBjb3JydXB0ZWQgb3JwaGFuIGxpbmtlZCBsaXN0IGZvdW5kLiAgRml4PyB5ZXMKKworSW5vZGUgNDkgd2FzIHBhcnQgb2YgdGhlIG9ycGhhbmVkIGlub2RlIGxpc3QuICBGSVhFRC4KK0lub2RlIDE0IGJsb2NrIDM2IGNvbmZsaWN0cyB3aXRoIGNyaXRpY2FsIG1ldGFkYXRhLCBza2lwcGluZyBibG9jayBjaGVja3MuCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM0Mjk0OTY3Mjk1IGZvciBtZXRhZGF0YSBibG9jayBtYXAKK0lub2RlIDE0IGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgQ2xlYXI/IHllcworCitJbGxlZ2FsIGluZGlyZWN0IGJsb2NrICg0Mjk0OTY3Mjk1KSBpbiBpbm9kZSAxNC4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM0Mjk0OTY3Mjk1IGZvciBtZXRhZGF0YSBibG9jayBtYXAKK0lsbGVnYWwgaW5kaXJlY3QgYmxvY2sgKDQyOTQ5NjcyOTUpIGluIGlub2RlIDE0LiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzQyOTQ5NjcyOTUgZm9yIG1ldGFkYXRhIGJsb2NrIG1hcAorSWxsZWdhbCBpbmRpcmVjdCBibG9jayAoNDI5NDk2NzI5NSkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDI5NDk2NzI5NSBmb3IgbWV0YWRhdGEgYmxvY2sgbWFwCitJbGxlZ2FsIGluZGlyZWN0IGJsb2NrICg0Mjk0OTY3Mjk1KSBpbiBpbm9kZSAxNC4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM0Mjk0OTY3Mjk1IGZvciBtZXRhZGF0YSBibG9jayBtYXAKK0lsbGVnYWwgaW5kaXJlY3QgYmxvY2sgKDQyOTQ5NjcyOTUpIGluIGlub2RlIDE0LiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzQyOTQ5NjcyOTUgZm9yIG1ldGFkYXRhIGJsb2NrIG1hcAorSWxsZWdhbCBpbmRpcmVjdCBibG9jayAoNDI5NDk2NzI5NSkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDI5NDk2NzI5NSBmb3IgbWV0YWRhdGEgYmxvY2sgbWFwCitJbGxlZ2FsIGluZGlyZWN0IGJsb2NrICg0Mjk0OTY3Mjk1KSBpbiBpbm9kZSAxNC4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrIG51bWJlciBwYXNzZWQgdG8gZXh0MmZzX3Rlc3RfYmxvY2tfYml0bWFwICM0Mjk0OTY3Mjk1IGZvciBtZXRhZGF0YSBibG9jayBtYXAKK1RvbyBtYW55IGlsbGVnYWwgYmxvY2tzIGluIGlub2RlIDE0LgorQ2xlYXIgaW5vZGU/IHllcworCitSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgYmxvY2sgMzcgY29uZmxpY3RzIHdpdGggY3JpdGljYWwgbWV0YWRhdGEsIHNraXBwaW5nIGJsb2NrIGNoZWNrcy4KK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzQyOTQ5NjcyOTQgZm9yIGluLXVzZSBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfbWFya19ibG9ja19iaXRtYXAgIzQyOTQ5NjcyOTQgZm9yIGluLXVzZSBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzI2ODQzNTQ1NSBmb3IgaW4tdXNlIGJsb2NrIG1hcAorSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc19tYXJrX2Jsb2NrX2JpdG1hcCAjMjY4NDM1NDU1IGZvciBpbi11c2UgYmxvY2sgbWFwCisKK1J1bm5pbmcgYWRkaXRpb25hbCBwYXNzZXMgdG8gcmVzb2x2ZSBibG9ja3MgY2xhaW1lZCBieSBtb3JlIHRoYW4gb25lIGlub2RlLi4uCitQYXNzIDFCOiBSZXNjYW5uaW5nIGZvciBtdWx0aXBseS1jbGFpbWVkIGJsb2NrcworSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDI5NDk2NzI5NCBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzI2ODQzNTQ1NSBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK011bHRpcGx5LWNsYWltZWQgYmxvY2socykgaW4gaW5vZGUgMTI6IDM3CitQYXNzIDFDOiBTY2FubmluZyBkaXJlY3RvcmllcyBmb3IgaW5vZGVzIHdpdGggbXVsdGlwbHktY2xhaW1lZCBibG9ja3MKK1Bhc3MgMUQ6IFJlY29uY2lsaW5nIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzCisoVGhlcmUgYXJlIDEgaW5vZGVzIGNvbnRhaW5pbmcgbXVsdGlwbHktY2xhaW1lZCBibG9ja3MuKQorCitGaWxlIC9hIChpbm9kZSAjMTIsIG1vZCB0aW1lIEZyaSBKdW4gMjcgMTg6MzQ6NDQgMjAxNCkgCisgIGhhcyAxIG11bHRpcGx5LWNsYWltZWQgYmxvY2socyksIHNoYXJlZCB3aXRoIDEgZmlsZShzKToKKwk8ZmlsZXN5c3RlbSBtZXRhZGF0YT4KK0Nsb25lIG11bHRpcGx5LWNsYWltZWQgYmxvY2tzPyB5ZXMKKworSWxsZWdhbCBibG9jayBudW1iZXIgcGFzc2VkIHRvIGV4dDJmc190ZXN0X2Jsb2NrX2JpdG1hcCAjNDI5NDk2NzI5NCBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK0lsbGVnYWwgYmxvY2sgbnVtYmVyIHBhc3NlZCB0byBleHQyZnNfdGVzdF9ibG9ja19iaXRtYXAgIzI2ODQzNTQ1NSBmb3IgbXVsdGlwbHkgY2xhaW1lZCBibG9jayBtYXAKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJ2JhZDEnIGluIC8gKDIpIHRvIDEuCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnYmFkMicgaW4gLyAoMikgdG8gMS4KK1Jlc3RhcnRpbmcgZTJmc2NrIGZyb20gdGhlIGJlZ2lubmluZy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDQyOTQ5NjcyOTQsIGxlbiAxKQorQ2xlYXI/IHllcworCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayA1LCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDI2ODQzNTQ1NSwgbGVuIDEpCitDbGVhcj8geWVzCisKK0lub2RlIDEyLCBpX2Jsb2NrcyBpcyA1Niwgc2hvdWxkIGJlIDQwLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnYicgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDE0LiAgQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtOSAtMTMgLTQyCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQ4NSwgY291bnRlZD00ODgpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDQ4NSwgY291bnRlZD00ODgpLgorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTE0ICszNCArNTAKK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMTE0LCBjb3VudGVkPTExMykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMTE0LCBjb3VudGVkPTExMykuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE1LzEyOCBmaWxlcyAoNi43JSBub24tY29udGlndW91cyksIDI0LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pdGFibGVfY29sbGlzaW9uL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYmM2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pdGFibGVfY29sbGlzaW9uL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMTI4IGZpbGVzICg2LjclIG5vbi1jb250aWd1b3VzKSwgMjQvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaXRhYmxlX2NvbGxpc2lvbi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIxOGIxNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfaXRhYmxlX2NvbGxpc2lvbi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaXRhYmxlX2NvbGxpc2lvbi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYjNkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9pdGFibGVfY29sbGlzaW9uL25hbWUKQEAgLTAsMCArMSBAQAorY29sbGlzaW9uIGJldHdlZW4gSU5EL2V4dGVudCB0cmVlIGJsb2NrcyBhbmQgaW5vZGUgdGFibGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfaXRhYmxlX2NvbGxpc2lvbi9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTJiNjlhMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2l0YWJsZV9jb2xsaXNpb24vc2NyaXB0CkBAIC0wLDAgKzEsMzcgQEAKKyMhL2Jpbi9iYXNoCisKKyMgUnVuIHRoaXMgdGVzdCB3aXRoIGEgc3BlY2lmaWMgdGltZSwgYmVjYXVzZSB3ZSdyZSBjcm9zc2xpbmtpbmcgYW4gZXh0ZW50IHRyZWUKKyMgYmxvY2sgd2l0aCB0aGUgaW5vZGUgdGFibGUuICBXaGVuIGZzY2sgc2V0cyBkdGltZSB0byBub3csIHdlIHdhbnQgIm5vdyIgdG8gYmUKKyMgb3VyIHByZXByb2dyYW1tZWQgdmFsdWUuCisKK0ZTQ0tfT1BUPS1meQorSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitFMkZTQ0tfVElNRT00Mjk0OTY3Mjk0CitleHBvcnQgRTJGU0NLX1RJTUUKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisKKyMgUnVuIGZzY2sgdG8gZml4IHRoaW5ncz8KK0VYUDE9JHRlc3RfZGlyL2V4cGVjdC4xCitPVVQxPSR0ZXN0X25hbWUuMS5sb2cKK3JtIC1yZiAkdGVzdF9uYW1lLmZhaWxlZCAkdGVzdF9uYW1lLm9rCisKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgMj4mMSB8IHRhaWwgLW4gKzIgPiAkT1VUMQorZWNobyAiRXhpdCBzdGF0dXMgaXMgJD8iID4+ICRPVVQxCisKKyMgUnVuIGEgc2Vjb25kIHRpbWUKK0VYUDI9JHRlc3RfZGlyL2V4cGVjdC4yCitPVVQyPSR0ZXN0X25hbWUuMi5sb2cKKworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSAyPiYxIHwgdGFpbCAtbiArMiA+ICRPVVQyCitlY2hvICJFeGl0IHN0YXR1cyBpcyAkPyIgPj4gJE9VVDIKKworIyBGaWd1cmUgb3V0IHdoYXQgaGFwcGVuZWQKK2lmIGNtcCAtcyAkRVhQMSAkT1VUMSAmJiBjbXAgLXMgJEVYUDIgJE9VVDI7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAtdSAkRVhQMSAkT1VUMSA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCWRpZmYgLXUgJEVYUDIgJE9VVDIgPj4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfMzJiaXQvZXhwZWN0LjAgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfMzJiaXQvZXhwZWN0LjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdkZTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9leHBlY3QuMApAQCAtMCwwICsxLDU2NyBAQAorSm91cm5hbCBzdGFydHMgYXQgYmxvY2sgMSwgdHJhbnNhY3Rpb24gMgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxCitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDIsIGF0IGJsb2NrIDE6CisgIEZTIGJsb2NrIDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMiAoZmxhZ3MgMHg4KQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDMsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNAorRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSAzLCBhdCBibG9jayA0OgorICBGUyBibG9jayA4MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1IChmbGFncyAweDApCisgIEZTIGJsb2NrIDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTA3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYxMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTI0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYxOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDY0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDY3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYyMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTI4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDcwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYyMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjIzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDczIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDc2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYyNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDc5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYyNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjI3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDgyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTM2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDg1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM1OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MjkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTM3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDg4IChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDg5CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDMsIGF0IGJsb2NrIDg5OgorICBGUyBibG9jayAxMzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTAgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgNjMwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDkxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYzMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDk3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYzNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2MzUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjM2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTA0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM1OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjM3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYzOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDYzOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NDAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjQxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY0MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTUyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY0MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTIyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM2MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjQ1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTI1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY0NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjQ5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTM0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzYxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQ2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY1NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTY3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQ5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY1NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTUyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY1OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTU1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjYwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTU4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzYyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NjEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTYxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjYyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTY0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY2MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTc2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTY3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTc4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTcwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjY2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTczIChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE3NAorRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSAzLCBhdCBibG9jayAxNzQ6CisgIEZTIGJsb2NrIDY2NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzUgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgMTgxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTc3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM2MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjY5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTgwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTgzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY3MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTg2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjczIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTg5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjc0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTkyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY3NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTkzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjc5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjA0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjgxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTk3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTk5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjg2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjg3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyMSAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMywgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDIyMgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgNCwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjMKK0R1bXBpbmcgZGVzY3JpcHRvciBibG9jaywgc2VxdWVuY2UgNCwgYXQgYmxvY2sgMjIzOgorICBGUyBibG9jayAyMDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjI0IChmbGFncyAweDApCisgIEZTIGJsb2NrIDY4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjAzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjI3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjM0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjg5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQ3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjk0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjUwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjUzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjU2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjk4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjU5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjE3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjYyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNjcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjY1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjIwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjY4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzAzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjcxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjc0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzA2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjc3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjI2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjgwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjI4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjgzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcwOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjI5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjg2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzExIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjg5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcxMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjkyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcxMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjM0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjk1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzE1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjk4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcxNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjM4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzA0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNDAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzA3IChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSA0LCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMwOAorRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSA0LCBhdCBibG9jayAzMDg6CisgIEZTIGJsb2NrIDcyMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDkgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgMjQxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MjEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzExIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzE0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzIzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzE3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcyNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzIwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcyNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzIzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDcyNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3MjcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzI2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjcgKGZsYWdzIDB4YSkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDQsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayAzMjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDUsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayAzMjkKK0R1bXBpbmcgcmV2b2tlIGJsb2NrLCBzZXF1ZW5jZSA1LCBhdCBibG9jayAzMjk6CisgIFJldm9rZSBGUyBibG9jayA2NDAKKyAgUmV2b2tlIEZTIGJsb2NrIDY0MQorICBSZXZva2UgRlMgYmxvY2sgNjQyCisgIFJldm9rZSBGUyBibG9jayA2NDMKKyAgUmV2b2tlIEZTIGJsb2NrIDY0NAorICBSZXZva2UgRlMgYmxvY2sgNjQ1CisgIFJldm9rZSBGUyBibG9jayA2NDYKKyAgUmV2b2tlIEZTIGJsb2NrIDY0NworICBSZXZva2UgRlMgYmxvY2sgNjQ4CisgIFJldm9rZSBGUyBibG9jayA2NDkKKyAgUmV2b2tlIEZTIGJsb2NrIDY1MAorICBSZXZva2UgRlMgYmxvY2sgNjUxCisgIFJldm9rZSBGUyBibG9jayA2NTIKKyAgUmV2b2tlIEZTIGJsb2NrIDY1MworICBSZXZva2UgRlMgYmxvY2sgNjU0CisgIFJldm9rZSBGUyBibG9jayA2NTUKKyAgUmV2b2tlIEZTIGJsb2NrIDY1NgorICBSZXZva2UgRlMgYmxvY2sgNjU3CisgIFJldm9rZSBGUyBibG9jayA4MQorICBSZXZva2UgRlMgYmxvY2sgNjU4CisgIFJldm9rZSBGUyBibG9jayA2NTkKKyAgUmV2b2tlIEZTIGJsb2NrIDY2MAorICBSZXZva2UgRlMgYmxvY2sgODQKKyAgUmV2b2tlIEZTIGJsb2NrIDY2MQorICBSZXZva2UgRlMgYmxvY2sgODUKKyAgUmV2b2tlIEZTIGJsb2NrIDY2MgorICBSZXZva2UgRlMgYmxvY2sgODYKKyAgUmV2b2tlIEZTIGJsb2NrIDY2MworICBSZXZva2UgRlMgYmxvY2sgODcKKyAgUmV2b2tlIEZTIGJsb2NrIDY2NAorICBSZXZva2UgRlMgYmxvY2sgODgKKyAgUmV2b2tlIEZTIGJsb2NrIDY2NQorICBSZXZva2UgRlMgYmxvY2sgODkKKyAgUmV2b2tlIEZTIGJsb2NrIDY2NgorICBSZXZva2UgRlMgYmxvY2sgOTAKKyAgUmV2b2tlIEZTIGJsb2NrIDY2NworICBSZXZva2UgRlMgYmxvY2sgOTEKKyAgUmV2b2tlIEZTIGJsb2NrIDY2OAorICBSZXZva2UgRlMgYmxvY2sgOTIKKyAgUmV2b2tlIEZTIGJsb2NrIDY2OQorICBSZXZva2UgRlMgYmxvY2sgOTMKKyAgUmV2b2tlIEZTIGJsb2NrIDY3MAorICBSZXZva2UgRlMgYmxvY2sgOTQKKyAgUmV2b2tlIEZTIGJsb2NrIDY3MQorICBSZXZva2UgRlMgYmxvY2sgOTUKKyAgUmV2b2tlIEZTIGJsb2NrIDY3MgorICBSZXZva2UgRlMgYmxvY2sgOTYKKyAgUmV2b2tlIEZTIGJsb2NrIDY3MworICBSZXZva2UgRlMgYmxvY2sgOTcKKyAgUmV2b2tlIEZTIGJsb2NrIDY3NAorICBSZXZva2UgRlMgYmxvY2sgNjc1CisgIFJldm9rZSBGUyBibG9jayA2MTEKKyAgUmV2b2tlIEZTIGJsb2NrIDY3NgorICBSZXZva2UgRlMgYmxvY2sgNjEyCisgIFJldm9rZSBGUyBibG9jayA2NzcKKyAgUmV2b2tlIEZTIGJsb2NrIDYxMworICBSZXZva2UgRlMgYmxvY2sgNjc4CisgIFJldm9rZSBGUyBibG9jayA2MTQKKyAgUmV2b2tlIEZTIGJsb2NrIDY3OQorICBSZXZva2UgRlMgYmxvY2sgNjE1CisgIFJldm9rZSBGUyBibG9jayA2MTYKKyAgUmV2b2tlIEZTIGJsb2NrIDYxNworICBSZXZva2UgRlMgYmxvY2sgNjgyCisgIFJldm9rZSBGUyBibG9jayA2MTgKKyAgUmV2b2tlIEZTIGJsb2NrIDY4MworICBSZXZva2UgRlMgYmxvY2sgNjE5CisgIFJldm9rZSBGUyBibG9jayA2ODQKKyAgUmV2b2tlIEZTIGJsb2NrIDYyMAorICBSZXZva2UgRlMgYmxvY2sgNjg1CisgIFJldm9rZSBGUyBibG9jayA2MjEKKyAgUmV2b2tlIEZTIGJsb2NrIDYyMgorICBSZXZva2UgRlMgYmxvY2sgNjg3CisgIFJldm9rZSBGUyBibG9jayA2MjMKKyAgUmV2b2tlIEZTIGJsb2NrIDY4OAorICBSZXZva2UgRlMgYmxvY2sgNjI0CisgIFJldm9rZSBGUyBibG9jayA2ODkKKyAgUmV2b2tlIEZTIGJsb2NrIDYyNQorICBSZXZva2UgRlMgYmxvY2sgNjkwCisgIFJldm9rZSBGUyBibG9jayA2MjYKKyAgUmV2b2tlIEZTIGJsb2NrIDY5MQorICBSZXZva2UgRlMgYmxvY2sgNjI3CisgIFJldm9rZSBGUyBibG9jayA2MjgKKyAgUmV2b2tlIEZTIGJsb2NrIDYyOQorICBSZXZva2UgRlMgYmxvY2sgNjMwCisgIFJldm9rZSBGUyBibG9jayA2MzEKKyAgUmV2b2tlIEZTIGJsb2NrIDYzMgorICBSZXZva2UgRlMgYmxvY2sgNjMzCisgIFJldm9rZSBGUyBibG9jayA2MzQKKyAgUmV2b2tlIEZTIGJsb2NrIDYzNQorICBSZXZva2UgRlMgYmxvY2sgNjM2CisgIFJldm9rZSBGUyBibG9jayA2MzcKKyAgUmV2b2tlIEZTIGJsb2NrIDYzOAorICBSZXZva2UgRlMgYmxvY2sgNjM5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSA1LCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMzMAorRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSA1LCBhdCBibG9jayAzMzA6CisgIEZTIGJsb2NrIDk4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzMSAoZmxhZ3MgMHgwKQorICBGUyBibG9jayA5OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzM1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzM2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzM4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQ1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTA4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQ4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTEwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzUxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTA2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzU2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTI2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzU5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzYyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzY1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzY4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM1NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzcxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDM1OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzc0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTI5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzc3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTM0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzgwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTM4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzgzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzU5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzg2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzg5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzkyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzk1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTUyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzk4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzYwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzYxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDA0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTQgKGZsYWdzIDB4YSkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDUsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDE1CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDUsIGF0IGJsb2NrIDQxNToKKyAgRlMgYmxvY2sgMTYxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxNiAoZmxhZ3MgMHgwKQorICBGUyBibG9jayAzNjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDE3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTczIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDIwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MjEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTcxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDIzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MjQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTc2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDI2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MjcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTc5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDI5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzYzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDMyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzY0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDM1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDM4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTkyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQ0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTgyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzNjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQ3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjAwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDUwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDUzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDU2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDU5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjgxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ2MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDYyIChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSA1LCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDYzCitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNDY0OiBlbmQgb2Ygam91cm5hbC4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmFhYjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzMyYml0L2V4cGVjdC4xCkBAIC0wLDAgKzEsMTYgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDE0Njk5LCBjb3VudGVkPTE0NjYwKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICg0MDg1LCBjb3VudGVkPTM2OTcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAzOTkvNDA5NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE3MjQvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfMzJiaXQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfMzJiaXQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU5NDhkMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDM5OS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcyNC8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzA4MTAyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzMyYml0L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzMyYml0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBlOTkxMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF8zMmJpdC9uYW1lCkBAIC0wLDAgKzEgQEAKK29uLWRpc2sgMzItYml0IGpvdXJuYWwgZm9ybWF0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfMzJiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzMyYml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmI0MzY2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzMyYml0L3NjcmlwdApAQCAtMCwwICsxLDQgQEAKK1BSRVBfQ01EPSckREVCVUdGUyAtUiAibG9nZHVtcCAtYSIgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJHRlc3RfbmFtZS4wLmxvZycKK1BBU1NfWkVSTz10cnVlCisKKy4gJGNtZF9kaXIvcnVuX2UyZnNjawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzY0Yml0L2V4cGVjdC4wIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzY0Yml0L2V4cGVjdC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWYyZDgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvZXhwZWN0LjAKQEAgLTAsMCArMSw3NTcgQEAKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDY3LCB0cmFuc2FjdGlvbiAzMgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA2NworRHVtcGluZyByZXZva2UgYmxvY2ssIHNlcXVlbmNlIDMyLCBhdCBibG9jayA2NzoKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzUKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzYKKyAgUmV2b2tlIEZTIGJsb2NrIDE1NDEKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzcKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzgKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODAKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODEKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODUKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODcKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODgKKyAgUmV2b2tlIEZTIGJsb2NrIDE0ODkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTAKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTEKKyAgUmV2b2tlIEZTIGJsb2NrIDE1NTYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0MjkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTUKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0MzIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTcKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTgKKyAgUmV2b2tlIEZTIGJsb2NrIDE0MzQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0OTkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0MzUKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDAKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDEKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDIKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDMKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDQKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDUKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NDIKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDcKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDgKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NDQKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MDkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NDUKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTAKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTEKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTIKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NDkKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTQKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTUKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTYKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTcKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NTMKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTgKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MTkKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjAKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NTYKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjEKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NTcKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NTgKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NTkKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjAKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjUKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjEKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjYKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjIKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjcKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjMKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjgKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjQKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MjkKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjUKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzAKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjYKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzEKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjcKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzIKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjgKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzMKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NjkKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzQKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzAKKyAgUmV2b2tlIEZTIGJsb2NrIDE1MzUKKyAgUmV2b2tlIEZTIGJsb2NrIDE0NzEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDMyLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDY4CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDMyLCBhdCBibG9jayA2ODoKKyAgRlMgYmxvY2sgODAyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDY5IChmbGFncyAweDApCisgIEZTIGJsb2NrIDgwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDczIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3ODMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDc2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA3NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzg4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDc5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDc4OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3ODUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzg2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDgyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDc4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3OTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNzk5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDg1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgODcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDg4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgxMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA4OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA3OTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDkxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODM5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDk3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgzNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA5OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgOTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODI5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODI0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTA0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODE3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODE2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg0MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg0MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODQ2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODQ4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDExOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgzNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODM1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NDAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTIyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDgyMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODIyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4MzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTI1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg0NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODUyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg3MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODcyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg2OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTM0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg2MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODU2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg1OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxMzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODU5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDEzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODUxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg2MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODczIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQ2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg2NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE0OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTQ5IChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzMiwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTAKK0R1bXBpbmcgZGVzY3JpcHRvciBibG9jaywgc2VxdWVuY2UgMzIsIGF0IGJsb2NrIDE1MDoKKyAgRlMgYmxvY2sgODc1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1MSAoZmxhZ3MgMHgwKQorICBGUyBibG9jayA4NzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTUyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg3OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODc5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4ODAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTU1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg4MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODc3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE1NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4NjcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTU4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg1NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODU1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4ODUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTYxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg4NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTAzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTY0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTAyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4OTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTY3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg5NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNjggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODg4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE2OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4ODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTcwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODkyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4ODIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTczIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg4MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODkzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTc2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxNzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODk3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE3OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4OTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTc5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkwOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTExIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTgyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg5MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTEzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4OTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTg1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkwOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTAwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE4NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTg4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDg4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxODkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgODg0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA4OTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTkxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkxMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTE3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1MzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkzNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAxOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTM3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDE5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMTk5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkzNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDAgKGZsYWdzIDB4YSkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDMyLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgMjAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzMywgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDIwMgorRHVtcGluZyByZXZva2UgYmxvY2ssIHNlcXVlbmNlIDMzLCBhdCBibG9jayAyMDI6CisgIFJldm9rZSBGUyBibG9jayAxNjAwCisgIFJldm9rZSBGUyBibG9jayAxNjAxCisgIFJldm9rZSBGUyBibG9jayAxNTM3CisgIFJldm9rZSBGUyBibG9jayAxNjAyCisgIFJldm9rZSBGUyBibG9jayAxNTM4CisgIFJldm9rZSBGUyBibG9jayAxNjAzCisgIFJldm9rZSBGUyBibG9jayAxNTM5CisgIFJldm9rZSBGUyBibG9jayAxNjA0CisgIFJldm9rZSBGUyBibG9jayAxNTQwCisgIFJldm9rZSBGUyBibG9jayAxNjA1CisgIFJldm9rZSBGUyBibG9jayAxNjA2CisgIFJldm9rZSBGUyBibG9jayAxNTQyCisgIFJldm9rZSBGUyBibG9jayAxNjA3CisgIFJldm9rZSBGUyBibG9jayAxNTQzCisgIFJldm9rZSBGUyBibG9jayAxNjA4CisgIFJldm9rZSBGUyBibG9jayAxNTQ0CisgIFJldm9rZSBGUyBibG9jayAxNjA5CisgIFJldm9rZSBGUyBibG9jayAxNTQ1CisgIFJldm9rZSBGUyBibG9jayAxNjEwCisgIFJldm9rZSBGUyBibG9jayAxNTQ2CisgIFJldm9rZSBGUyBibG9jayAxNjExCisgIFJldm9rZSBGUyBibG9jayAxNTQ3CisgIFJldm9rZSBGUyBibG9jayAxNjEyCisgIFJldm9rZSBGUyBibG9jayAxNTQ4CisgIFJldm9rZSBGUyBibG9jayAxNjEzCisgIFJldm9rZSBGUyBibG9jayAxNTQ5CisgIFJldm9rZSBGUyBibG9jayAxNjE0CisgIFJldm9rZSBGUyBibG9jayAxNTUwCisgIFJldm9rZSBGUyBibG9jayAxNjE1CisgIFJldm9rZSBGUyBibG9jayAxNTUxCisgIFJldm9rZSBGUyBibG9jayAxNjE2CisgIFJldm9rZSBGUyBibG9jayAxNTUyCisgIFJldm9rZSBGUyBibG9jayAxNjE3CisgIFJldm9rZSBGUyBibG9jayAxNTUzCisgIFJldm9rZSBGUyBibG9jayAxNTU0CisgIFJldm9rZSBGUyBibG9jayAxNTU1CisgIFJldm9rZSBGUyBibG9jayAxNTU3CisgIFJldm9rZSBGUyBibG9jayAxNTU4CisgIFJldm9rZSBGUyBibG9jayAxNTU5CisgIFJldm9rZSBGUyBibG9jayAxNTYwCisgIFJldm9rZSBGUyBibG9jayAxNTYxCisgIFJldm9rZSBGUyBibG9jayAxNTYyCisgIFJldm9rZSBGUyBibG9jayAxNTYzCisgIFJldm9rZSBGUyBibG9jayAxNTY0CisgIFJldm9rZSBGUyBibG9jayAxNTY1CisgIFJldm9rZSBGUyBibG9jayAxNTY2CisgIFJldm9rZSBGUyBibG9jayAxNTY3CisgIFJldm9rZSBGUyBibG9jayAxNTY4CisgIFJldm9rZSBGUyBibG9jayAxNTY5CisgIFJldm9rZSBGUyBibG9jayAxNTcwCisgIFJldm9rZSBGUyBibG9jayAxNTcxCisgIFJldm9rZSBGUyBibG9jayAxNTcyCisgIFJldm9rZSBGUyBibG9jayAxNTczCisgIFJldm9rZSBGUyBibG9jayAxNTc0CisgIFJldm9rZSBGUyBibG9jayAxNTc1CisgIFJldm9rZSBGUyBibG9jayAxNTc2CisgIFJldm9rZSBGUyBibG9jayAxNTc3CisgIFJldm9rZSBGUyBibG9jayAxNTc4CisgIFJldm9rZSBGUyBibG9jayAxNTc5CisgIFJldm9rZSBGUyBibG9jayAxNTgwCisgIFJldm9rZSBGUyBibG9jayAxNTgxCisgIFJldm9rZSBGUyBibG9jayAxNTgyCisgIFJldm9rZSBGUyBibG9jayAxNTgzCisgIFJldm9rZSBGUyBibG9jayAxNTg0CisgIFJldm9rZSBGUyBibG9jayAxNTg1CisgIFJldm9rZSBGUyBibG9jayAxNTg2CisgIFJldm9rZSBGUyBibG9jayAxNTg3CisgIFJldm9rZSBGUyBibG9jayAxNTg4CisgIFJldm9rZSBGUyBibG9jayAxNTg5CisgIFJldm9rZSBGUyBibG9jayAxNTkwCisgIFJldm9rZSBGUyBibG9jayAxNTkxCisgIFJldm9rZSBGUyBibG9jayAxNTkyCisgIFJldm9rZSBGUyBibG9jayAxNTkzCisgIFJldm9rZSBGUyBibG9jayAxNTk0CisgIFJldm9rZSBGUyBibG9jayAxNTk1CisgIFJldm9rZSBGUyBibG9jayAxNTk2CisgIFJldm9rZSBGUyBibG9jayAxNTk3CisgIFJldm9rZSBGUyBibG9jayAxNTk4CisgIFJldm9rZSBGUyBibG9jayAxNTk5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzMywgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMDMKK0R1bXBpbmcgZGVzY3JpcHRvciBibG9jaywgc2VxdWVuY2UgMzMsIGF0IGJsb2NrIDIwMzoKKyAgRlMgYmxvY2sgOTMzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwNCAoZmxhZ3MgMHgwKQorICBGUyBibG9jayAxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjA2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEzMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMDggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkxMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkyNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTI4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MjEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkyMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTIzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIxOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkyNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTE1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjIyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkyNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjI1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkzOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTQwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkzMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTQxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NDMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk0NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTQ1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjM0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk0MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkxOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyMzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTE5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDIzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5MjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDkxNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTI5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTUwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQ2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk2OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI0OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjQ5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk2NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTY4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjUyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk2MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjU1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk1NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI1NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjU4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk0OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTU4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjYxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTYyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NjMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjY0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTc2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjY3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNjggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTU5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI2OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjcwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjczIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk0OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTY0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5NTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjc2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk3OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyNzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTgyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI3OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5ODMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjc5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk4NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTk5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMDAwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4NCAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzMsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjg1CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDMzLCBhdCBibG9jayAyODU6CisgIEZTIGJsb2NrIDk5MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODYgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgOTkzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI4NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5OTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjg4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk4NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyODkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTg3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5ODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjkxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk5MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTgwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5ODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAyOTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTk1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDI5OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5OTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMjk5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzAwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzAyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAxMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgOTk3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA5OTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEwMDMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzA4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDk4NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMDkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTAwOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzEyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE0NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzE1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMxNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzE4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzE5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTY3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTU2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzIzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzI0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTg4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMyOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzI5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzMwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYyMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTczIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNDkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzM0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMzUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjc1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzMzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTc2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDMzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTUyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNzggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQ0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE3OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE5MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNDYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTgwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTkxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM0OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzQ5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExOTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzUwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYyMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTgzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2NzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzU0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzU1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjIzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM1OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzU5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MjQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzYwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTUzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxODggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzYzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNjQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTg5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzY2IChmbGFncyAweGEpCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAzMywgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNjcKK0R1bXBpbmcgZGVzY3JpcHRvciBibG9jaywgc2VxdWVuY2UgMzMsIGF0IGJsb2NrIDM2NzoKKyAgRlMgYmxvY2sgMTkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM2OCAoZmxhZ3MgMHgwKQorICBGUyBibG9jayAxNTYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzY5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzcyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzc1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTk0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM3NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzc4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzNzkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE5MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTk2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTk0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxOTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzgzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDExOTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzg0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE5OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE5NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzODYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTk5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTk3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM4OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzg5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY3OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTE5OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjAxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMTk5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayAzOTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjI1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDM5OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgMzk5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDAwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYyNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjA3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjI4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMDggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDA1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MjkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDA2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIwOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjc5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjMwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDExIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDE1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMDEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjE1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQxOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjAzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyMCAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzMsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA0MjEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDM0LCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQyMgorRHVtcGluZyBkZXNjcmlwdG9yIGJsb2NrLCBzZXF1ZW5jZSAzNCwgYXQgYmxvY2sgNDIyOgorICBGUyBibG9jayAxNDYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDIzIChmbGFncyAweDApCisgIEZTIGJsb2NrIDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDI0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjc5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjAzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDI4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTQ3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMDQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDMyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDM1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDM2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIxOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0MzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjgwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTU1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQzOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NDMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NDIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjIxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTQ0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQ1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDQ2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NDcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTMyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTU0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ0OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDUwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDUxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjI1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjA2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDU2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjI3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ1OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjA4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ2MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDYxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1MzcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDYyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIyOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjMwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ2NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTM4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ2NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDY2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1MzkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDY3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzMiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NjggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU0MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NjkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjMzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ3MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTU3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ3MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDcyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NTggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDczIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NzQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjgyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ3NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTU5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ3NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDc3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDc4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDIzNyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0NzkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIwOSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0ODAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjM4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ4MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyMzkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDgyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDgzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0ODQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIxMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0ODUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ4NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxMjEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ4NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDg4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDg5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0OTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIxNCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0OTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ5MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDkzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDEyMTUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDk0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0OTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTIxNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA0OTYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ5NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTQ1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDQ5OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNDk5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI0OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MDAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU0NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MDEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjQ5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUwMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTQ3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUwMyAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzQsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTA0CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDM0LCBhdCBibG9jayA1MDQ6CisgIEZTIGJsb2NrIDI1MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MDUgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgMTU0OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MDYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjUxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUwNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTQ5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUwOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTUwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUwOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTEwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MTEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU1MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MTIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjUzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUxMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTUyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUxNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTE1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NjEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTE2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI1NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MTcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU2MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjU2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUxOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNTcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTIwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NjMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTIxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI1OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MjIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU2NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MjMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjU5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUyNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTY1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUyNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNjAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTI2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NjYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTI3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI2MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MjggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgNjg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUyOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTY3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUzMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNjIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTMxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTMyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI2MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MzMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYwMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MzQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjY0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUzNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjAyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDUzNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNjUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTM3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI2NiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1MzkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjY3IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU0MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU0MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNjggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTQyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTQzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI2OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYwNiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NDUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjcwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU0NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTQ3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTQ4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI3MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NDkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYwOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjcyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU1MSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjA5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU1MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNzMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTUzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTU0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI3NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjc1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU1NiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjExIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU1NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNzYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTU4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE2MTIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTU5IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYxMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NjEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjc4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU2MiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU2MyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyNzkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTY0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTYxNSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjgwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU2NyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjE2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU2OCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTY5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU2OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTcwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NzAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTcxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI4MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU3MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NzMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjgzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU3NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyODQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTc1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NzIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTc2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI4NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU3MyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1NzggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjg2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU3OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTc0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU4MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyODcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTgxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY4OCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1ODIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU3NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1ODMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjg4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU4NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTc2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU4NSAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzQsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTg2CitEdW1waW5nIGRlc2NyaXB0b3IgYmxvY2ssIHNlcXVlbmNlIDM0LCBhdCBibG9jayA1ODY6CisgIEZTIGJsb2NrIDI4OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1ODcgKGZsYWdzIDB4MCkKKyAgRlMgYmxvY2sgMTU3NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1ODggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU4OSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTc4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU5MCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyOTEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTkxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1NzkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTkyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI5MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1OTMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjkzIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU5NCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTgwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDU5NSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyOTQgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTk2IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1ODEgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNTk3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI5NSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1OTggKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4MiBsb2dnZWQgYXQgam91cm5hbCBibG9jayA1OTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjk2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYwMCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayA2ODkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjAxIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1ODMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjAyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDI5NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MDMgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MDQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMjk4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYwNSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTg1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYwNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAyOTkgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjA3IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1ODYgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjA4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDMwMCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MDkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MTAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzAxIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYxMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzMDIgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjEyIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1ODggbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjEzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDMwMyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MTQgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU4OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MTUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzA0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYxNiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTkwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYxNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzMDUgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjE4IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5MCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MTkgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MjAgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzA2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYyMSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTkyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYyMiAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzMDcgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjIzIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDE1OTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjI0IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDMwOCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MjUgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU5NCBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MjYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzA5IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYyNyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTk1IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYyOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTk2IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYyOSAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzMTAgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjMwIChmbGFncyAweDIpCisgIEZTIGJsb2NrIDMxMSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MzEgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU5NyBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MzIgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzEyIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYzMyAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNTk4IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYzNCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAzMTMgbG9nZ2VkIGF0IGpvdXJuYWwgYmxvY2sgNjM1IChmbGFncyAweDIpCisgIEZTIGJsb2NrIDY5MSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MzYgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMTU5OSBsb2dnZWQgYXQgam91cm5hbCBibG9jayA2MzcgKGZsYWdzIDB4MikKKyAgRlMgYmxvY2sgMzE0IGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYzOCAoZmxhZ3MgMHgyKQorICBGUyBibG9jayAxNjAwIGxvZ2dlZCBhdCBqb3VybmFsIGJsb2NrIDYzOSAoZmxhZ3MgMHhhKQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMzQsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA2NDAKK05vIG1hZ2ljIG51bWJlciBhdCBibG9jayA2NDE6IGVuZCBvZiBqb3VybmFsLgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzY0Yml0L2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzY0Yml0L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNjBlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvZXhwZWN0LjEKQEAgLTAsMCArMSwxNiBAQAordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMTQwNTksIGNvdW50ZWQ9MTI3MTIpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKDgxODEsIGNvdW50ZWQ9NjgzNCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEzNTgvODE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM2NzIvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNjYjczMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF82NGJpdC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEzNTgvODE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM2NzIvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc1OGY5MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF82NGJpdC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF82NGJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjOGRkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfNjRiaXQvbmFtZQpAQCAtMCwwICsxIEBACitvbi1kaXNrIDY0LWJpdCBqb3VybmFsIGZvcm1hdApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sXzY0Yml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF82NGJpdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiNDM2NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF82NGJpdC9zY3JpcHQKQEAgLTAsMCArMSw0IEBACitQUkVQX0NNRD0nJERFQlVHRlMgLVIgImxvZ2R1bXAgLWEiICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICR0ZXN0X25hbWUuMC5sb2cnCitQQVNTX1pFUk89dHJ1ZQorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMCBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTk0MjZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4wCkBAIC0wLDAgKzEsNDggQEAKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgUmVtb3VudCByZWFkLW9ubHkKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMjA0OAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA4MTkyCitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDQwOQorRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA2ODYyCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDIwMzcKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMzEKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDIwNDgKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMjU2CitGbGV4IGJsb2NrIGdyb3VwIHNpemU6ICAgIDE2CitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMCAoPG5vbmU+KQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0pvdXJuYWwgaW5vZGU6ICAgICAgICAgICAgOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorSm91cm5hbCBiYWNrdXA6ICAgICAgICAgICBpbm9kZSBibG9ja3MKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitKb3VybmFsIHNpemU6ICAgICAgICAgICAgIDEwMjRrCitKb3VybmFsIGxlbmd0aDogICAgICAgICAgIDEwMjQKK0pvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHgwMDAwMDAwNQorSm91cm5hbCBzdGFydDogICAgICAgICAgICAwCisKKworR3JvdXAgMDogKEJsb2NrcyAxLTgxOTEpIFtJVEFCTEVfWkVST0VEXQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0yCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMy0zMworICBCbG9jayBiaXRtYXAgYXQgMzQgKCszMykKKyAgSW5vZGUgYml0bWFwIGF0IDUwICgrNDkpCisgIElub2RlIHRhYmxlIGF0IDY2LTMyMSAoKzY1KQorICA2ODYyIGZyZWUgYmxvY2tzLCAyMDM3IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzLCAyMDM3IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEzMzAtODE5MQorICBGcmVlIGlub2RlczogMTItMjA0OApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NzI5NTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEKQEAgLTAsMCArMSw5IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMTMzMC84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMTZhNzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMTMzMC84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NWM3NzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXJybm8vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXJybm8vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWY2NGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL25hbWUKQEAgLTAsMCArMSBAQAoram91cm5hbCBzX2Vycm5vIGhhbmRsaW5nCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXJybm8vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjUwMDZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2Vycm5vL3NjcmlwdApAQCAtMCwwICsxLDQgQEAKK0FGVEVSX0NNRD0nJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICR0ZXN0X25hbWUuMC5sb2cnCitQQVNTX1pFUk89dHJ1ZQorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9ldGJfYWxsb2NfZmFpbC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9ldGJfYWxsb2NfZmFpbC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDNhMTUxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2V0Yl9hbGxvY19mYWlsL2V4cGVjdC4xCkBAIC0wLDAgKzEsMzEgQEAKK1N1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgOCkuCitDbGVhcj8geWVzCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIGRlbGV0ZWQgKioqCisKK1N1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LgorQ2xlYXI/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0pvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgzMi0tMzMpIC0oMzUtLTQ5KSAtKDgzLS01MTEpIC0oNTEzLS0xMDg3KSAtMTA4OQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgwLCBjb3VudGVkPTEwMjIpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDAsIGNvdW50ZWQ9MTAyMikuCitGaXg/IHllcworCitSZWNyZWF0ZSBqb3VybmFsPyB5ZXMKKworQ3JlYXRpbmcgam91cm5hbCAoMTAyNCBibG9ja3MpOiBDb3VsZCBub3QgYWxsb2NhdGUgYmxvY2sgaW4gZXh0MiBmaWxlc3lzdGVtOiB3aGlsZSB0cnlpbmcgdG8gY3JlYXRlIGpvdXJuYWwKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMjA0OC8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2V0Yl9hbGxvY19mYWlsL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam5sX2V0Yl9hbGxvY19mYWlsL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ODU5ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXRiX2FsbG9jX2ZhaWwvZXhwZWN0LjIKQEAgLTAsMCArMSwyMCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitKb3VybmFsIGlub2RlIGlzIG5vdCBpbiB1c2UsIGJ1dCBjb250YWlucyBkYXRhLiAgQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMzItLTMzKSAtKDM1LS00OSkgLSg4My0tNTExKSAtKDUxMy0tMTA4NykgLTEwODkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMCwgY291bnRlZD0xMDIyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgwLCBjb3VudGVkPTEwMjIpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDI2LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXRiX2FsbG9jX2ZhaWwvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXRiX2FsbG9jX2ZhaWwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmMmRiZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9ldGJfYWxsb2NfZmFpbC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXRiX2FsbG9jX2ZhaWwvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2pubF9ldGJfYWxsb2NfZmFpbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NTFmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qbmxfZXRiX2FsbG9jX2ZhaWwvbmFtZQpAQCAtMCwwICsxIEBACitjYW4ndCBhbGxvY2F0ZSBleHRlbnQgdHJlZSBibG9jayB3aGlsZSByZWNyZWF0aW5nIGpvdXJuYWwKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2pvdXJuYWwvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMDJjODAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCkBAIC0wLDAgKzEsNjIgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSAzNyAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDkwICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA2NyAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDUwICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNTcgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDgwICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0NSAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNzEgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA4NiAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgODMgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDI3ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNTIgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0OCAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMTUgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSAxMDIgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA2NSAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDE0ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMzYgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDIxICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0MyAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNTEgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDk5ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMTkgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3MDAsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDM5ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA5NSAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDI1ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA4OCAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDIwICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0MSAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNzcgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSAxOCAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNjAgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA5OCAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDQ5ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA2MiAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDcyICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMjggKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0NyAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDUzICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA5NCAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNzYgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSAzOCAodWlkPTAsIGdpZD0wLCBtb2RlPTA0MDcwMCwgc2l6ZT0xMDI0KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMzMgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA0MCAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDczICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzAwLCBzaXplPTEwMjQpCitDbGVhcmluZyBvcnBoYW5lZCBpbm9kZSA1NSAodWlkPTAsIGdpZD0wLCBtb2RlPTAxMDA2MDAsIHNpemU9NDA5NikKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDI0ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDYwMCwgc2l6ZT00MDk2KQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgNTkgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjAwLCBzaXplPTQwOTYpCitCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uCisKK01vdmluZyBqb3VybmFsIGZyb20gL2pvdXJuYWwgdG8gaGlkZGVuIGlub2RlLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiA1My8yMDQ4IGZpbGVzICgxLjklIG5vbi1jb250aWd1b3VzKSwgMTQwOS84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam91cm5hbC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX2pvdXJuYWwvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdjNTJmNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pvdXJuYWwvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiA1My8yMDQ4IGZpbGVzICgxLjklIG5vbi1jb250aWd1b3VzKSwgMTQwOS84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam91cm5hbC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX2pvdXJuYWwvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEyZDllYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2pvdXJuYWwvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfam91cm5hbC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfam91cm5hbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjZTIzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9qb3VybmFsL25hbWUKQEAgLTAsMCArMSBAQAorcmVjb3ZlciBqb3VybmFsIGZyb20gY29ycnVwdGVkIGlub2RlIHRhYmxlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbG90c2JhZC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWU4YTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbG90c2JhZC9leHBlY3QuMQpAQCAtMCwwICsxLDYxIEBACitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEzIGlzIHRvbyBiaWcuICBUcnVuY2F0ZT8geWVzCisKK0Jsb2NrICMxNjU4MDg3NiAoNzQpIGNhdXNlcyBkaXJlY3RvcnkgdG8gYmUgdG9vIGJpZy4gIENMRUFSRUQuCitJbm9kZSAxMywgaV9zaXplIGlzIDE1MzYwLCBzaG91bGQgYmUgMTIyODguICBGaXg/IHllcworCitJbm9kZSAxMywgaV9ibG9ja3MgaXMgMzIsIHNob3VsZCBiZSAzMC4gIEZpeD8geWVzCisKK0lub2RlIDEyIGhhcyBpbGxlZ2FsIGJsb2NrKHMpLiAgQ2xlYXI/IHllcworCitJbGxlZ2FsIGJsb2NrICMxMiAoNzc4Mzk4ODE4KSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxMyAoMTc2ODQ0NDk2MCkgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTQgKDE3NTIzNzU0MTEpIGluIGlub2RlIDEyLiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgIzE1ICgxNjg0ODI5NTUxKSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxNiAoMTg4NjM0OTM0NCkgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTcgKDE4MTk2MzMyNTMpIGluIGlub2RlIDEyLiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgIzE4ICgxNjYzMDcyNjIwKSBpbiBpbm9kZSAxMi4gIENMRUFSRUQuCitJbGxlZ2FsIGJsb2NrICMxOSAoMTczNTI4NzE0NCkgaW4gaW5vZGUgMTIuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMjAgKDEzMTA3MzE4NzcpIGluIGlub2RlIDEyLiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgIzIxICg1NjAyOTcwNzEpIGluIGlub2RlIDEyLiAgQ0xFQVJFRC4KK0lsbGVnYWwgYmxvY2sgIzIyICg1NDM1MTIzNTIpIGluIGlub2RlIDEyLiAgQ0xFQVJFRC4KK1RvbyBtYW55IGlsbGVnYWwgYmxvY2tzIGluIGlub2RlIDEyLgorQ2xlYXIgaW5vZGU/IHllcworCitSZXN0YXJ0aW5nIGUyZnNjayBmcm9tIHRoZSBiZWdpbm5pbmcuLi4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAndGVybWNhcCcgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDEyLiAgQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMiByZWYgY291bnQgaXMgNSwgc2hvdWxkIGJlIDQuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMjctLTQxKSAtKDQ0LS00NSkgLSg3NC0tOTApCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDksIGNvdW50ZWQ9NDMpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDksIGNvdW50ZWQ9NDMpLgorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTEyIC0xNAorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxOCwgY291bnRlZD0yMCkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQsIGNvdW50ZWQ9MykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMTgsIGNvdW50ZWQ9MjApLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDU3LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2xvdHNiYWQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMTIwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1Ny8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbG90c2JhZC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmQ1ZDFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbG90c2JhZC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9sb3RzYmFkL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZiNzdjMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2xvdHNiYWQvbmFtZQpAQCAtMCwwICsxIEBACit0b28gbWFueSBpbGxlZ2FsIGJsb2NrcyBpbiBpbm9kZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjg1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvZXhwZWN0LjEKQEAgLTAsMCArMSw0OCBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMyBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworVW5hdHRhY2hlZCBpbm9kZSAxMworQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDEzIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTQKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxNCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDE1CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTUgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDIyLS0yMykgKzQ5ICsoNTctLTU4KQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgyNCwgY291bnRlZD0zMykuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMzgsIGNvdW50ZWQ9MzMpLgorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgKzEzCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDEsIGNvdW50ZWQ9MCkuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMSwgY291bnRlZD0wKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTYvMTYgZmlsZXMgKDEyLjUlIG5vbi1jb250aWd1b3VzKSwgNjcvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTEwZWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi8xNiBmaWxlcyAoMTIuNSUgbm9uLWNvbnRpZ3VvdXMpLCA2Ny8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3MWJjZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2xwZi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX2xwZi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMmRiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYvbmFtZQpAQCAtMCwwICsxIEBACittaXNzaW5nIGxvc3QrZm91bmQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2xwZjIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMzU4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1VuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAxMiAoLz8/PykKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTMgKC8/Pz8pCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAyIHJlZiBjb3VudCBpcyA0LCBzaG91bGQgYmUgMy4gIEZpeD8geWVzCisKK0lub2RlIDEyIHJlZiBjb3VudCBpcyAzLCBzaG91bGQgYmUgMi4gIEZpeD8geWVzCisKK0lub2RlIDEzIHJlZiBjb3VudCBpcyAzLCBzaG91bGQgYmUgMi4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSg5LS0xOSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzcsIGNvdW50ZWQ9ODkpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDc3LCBjb3VudGVkPTg5KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMiwgY291bnRlZD0zKS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNSwgY291bnRlZD00KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgyLCBjb3VudGVkPTMpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDExLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2xwZjIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NTE5MzIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTMvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmMi9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzAzZmIzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmMi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGYyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNkYTMxNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2xwZjIvbmFtZQpAQCAtMCwwICsxIEBACitjcmVhdGUgbG9zdCtmb3VuZCBhbmQgcmVjb25uZWN0IGxvc3QgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmZmlsZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNGNjZTRjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmZmlsZS9leHBlY3QuMQpAQCAtMCwwICsxLDMyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisvbG9zdCtmb3VuZCBpcyBub3QgYSBkaXJlY3RvcnkgKGlubz0xMSkKK1VubGluaz8geWVzCisKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworVW5hdHRhY2hlZCBpbm9kZSAxMQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTIKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxMiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDEzCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxNAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDE0IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE1LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX2xwZmZpbGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTgzMmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmZmlsZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTI3OGRmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbHBmZmlsZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9scGZmaWxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRlNDBiOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX2xwZmZpbGUvbmFtZQpAQCAtMCwwICsxIEBACitsb3N0K2ZvdW5kIGlzIG5vdCBhIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbWVzc3lfaW5vZGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tZXNzeV9pbm9kZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDhmMWRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWVzc3lfaW5vZGUvZXhwZWN0LjEKQEAgLTAsMCArMSwzOCBAQAorRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxNCBoYXMgaWxsZWdhbCBibG9jayhzKS4gIENsZWFyPyB5ZXMKKworSWxsZWdhbCBibG9jayAjMiAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMyAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjNCAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjNSAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjNiAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjNyAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjOCAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjOSAoNDI5NDkwMTc2MCkgaW4gaW5vZGUgMTQuICBDTEVBUkVELgorSWxsZWdhbCBibG9jayAjMTAgKDQyOTQ5MDE3NjApIGluIGlub2RlIDE0LiAgQ0xFQVJFRC4KK0lub2RlIDE0LCBpX3NpemUgaXMgMTg0NDY0NjI1OTg3MzI4NDkyOTEsIHNob3VsZCBiZSAyMDQ4LiAgRml4PyB5ZXMKKworSW5vZGUgMTQsIGlfYmxvY2tzIGlzIDE4LCBzaG91bGQgYmUgNC4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQoraV9maWxlX2FjbCBmb3IgaW5vZGUgMTQgKC9NQUtFREVWKSBpcyA0Mjk0OTAxNzYwLCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSg0My0tNDkpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDY4LCBjb3VudGVkPTc1KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg2OCwgY291bnRlZD03NSkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDI5LzMyIGZpbGVzICgzLjQlIG5vbi1jb250aWd1b3VzKSwgMjUvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbWVzc3lfaW5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tZXNzeV9pbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmZmYjAyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWVzc3lfaW5vZGUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAyOS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI1LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21lc3N5X2lub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWVzc3lfaW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMwYTY4OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX21lc3N5X2lub2RlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21lc3N5X2lub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tZXNzeV9pbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNDg1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tZXNzeV9pbm9kZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2JhZCBmaWxlIGFuZCBkaXJlY3RvcnkgYWNsIHBvaW50ZXJzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19ibGtfYm1hcC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OThiNjFhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19ibGtfYm1hcC9leHBlY3QuMQpAQCAtMCwwICsxLDIwIEBACitleHQyZnNfY2hlY2tfZGVzYzogQ29ycnVwdCBncm91cCBkZXNjcmlwdG9yOiBiYWQgYmxvY2sgZm9yIGJsb2NrIGJpdG1hcAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitSZWxvY2F0aW5nIGdyb3VwIDAncyBibG9jayBiaXRtYXAgdG8gMi4uLgorUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDAtLTEwKQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg5MCwgY291bnRlZD04OSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoOTAsIGNvdW50ZWQ9ODkpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS82NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDExLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3NfYmxrX2JtYXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzZjkyZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19ibGtfYm1hcC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODBkYmUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19ibGtfYm1hcC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2Jsa19ibWFwL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA1OTQ0MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3NfYmxrX2JtYXAvbmFtZQpAQCAtMCwwICsxIEBACittaXNzaW5nIGJsb2NrIGJpdG1hcApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MzU5NTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2pvdXJuYWwvZXhwZWN0LjEKQEAgLTAsMCArMSwyOCBAQAorU3VwZXJibG9jayBoYXMgYW4gaW52YWxpZCBqb3VybmFsIChpbm9kZSA4KS4KK0NsZWFyPyB5ZXMKKworKioqIGpvdXJuYWwgaGFzIGJlZW4gZGVsZXRlZCAqKioKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oNTAtLTEwNzkpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDk2OCwgY291bnRlZD0xOTk4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg5NjgsIGNvdW50ZWQ9MTk5OCkuCitGaXg/IHllcworCitSZWNyZWF0ZSBqb3VybmFsPyB5ZXMKKworQ3JlYXRpbmcgam91cm5hbCAoMTAyNCBibG9ja3MpOiAgRG9uZS4KKworKioqIGpvdXJuYWwgaGFzIGJlZW4gcmVnZW5lcmF0ZWQgKioqCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEwNzkvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3Nfam91cm5hbC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3Nfam91cm5hbC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDMyNzYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjU2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTA3OS8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NGQzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2pvdXJuYWwvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9taXNzX2pvdXJuYWwvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTliZTUyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc19qb3VybmFsL25hbWUKQEAgLTAsMCArMSBAQAorTm9uLWV4aXN0ZW50IGpvdXJuYWwgaW5vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGNmMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc3RhYmxlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNDkgQEAKK2V4dDJmc19jaGVja19kZXNjOiBDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgaW5vZGUgdGFibGUKKy4uL2UyZnNjay9lMmZzY2s6IEdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCitJbm9kZSB0YWJsZSBmb3IgZ3JvdXAgMSBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgMCkKK1dBUk5JTkc6IFNFVkVSRSBEQVRBIExPU1MgUE9TU0lCTEUuCitSZWxvY2F0ZT8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUmVsb2NhdGluZyBncm91cCAxJ3MgaW5vZGUgdGFibGUgdG8gODE5Ny4uLgorUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJ2V0YycgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDE1MDUuICBDbGVhcj8geWVzCisKK0VudHJ5ICdjYWNoZScgaW4gLyAoMikgaGFzIGRlbGV0ZWQvdW51c2VkIGlub2RlIDE1MTQuICBDbGVhcj8geWVzCisKK0VudHJ5ICdhJyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTUxNS4gIENsZWFyPyB5ZXMKKworRW50cnkgJ2InIGluIC8gKDIpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAxNTE2LiAgQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMiByZWYgY291bnQgaXMgOCwgc2hvdWxkIGJlIDQuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oODM4NS0tODQwNSkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzk4NywgY291bnRlZD03OTg0KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgxMTYwMiwgY291bnRlZD0xMTU5OSkuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDE1MDUtLTE1MTYpCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDE0OTMsIGNvdW50ZWQ9MTQ4OSkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDIsIGNvdW50ZWQ9MykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMjk5NywgY291bnRlZD0yOTkzKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTUvMzAwOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQwMS8xMjAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGNkMjFhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc3RhYmxlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMzAwOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQwMS8xMjAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmFjYTlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc3RhYmxlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWlzc3RhYmxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhMWFkYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX21pc3N0YWJsZS9uYW1lCkBAIC0wLDAgKzEgQEAKK21pc3NpbmcgaW5vZGUgdGFibGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21rZTJmczJiL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWtlMmZzMmIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZmZWRjYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX21rZTJmczJiL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjUgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUm9vdCBpbm9kZSBoYXMgZHRpbWUgc2V0IChwcm9iYWJseSBkdWUgdG8gb2xkIG1rZTJmcykuICBGaXg/IHllcworCitJbm9kZSAxMSBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PyB5ZXMKKworSW5vZGUgMTUgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgMTUuICBDbGVhcj8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxOCwgY291bnRlZD0xNykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMTgsIGNvdW50ZWQ9MTcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI1LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21rZTJmczJiL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWtlMmZzMmIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0NTVkNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX21rZTJmczJiL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ta2UyZnMyYi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX21rZTJmczJiL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNzQxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ta2UyZnMyYi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ta2UyZnMyYi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWtlMmZzMmIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjIyMDJhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbWtlMmZzMmIvbmFtZQpAQCAtMCwwICsxIEBACitta2UyZnMgdmVyc2lvbiAwLjJiIGNyZWF0ZWQgZmlsZXN5c3RlbQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXAvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGQ2NmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wL25hbWUKQEAgLTAsMCArMSBAQAorZGlzYWJsZSBNTVAgd2l0aCB0dW5lMmZzIGFmdGVyIGUyZnNjayBraWxsZWQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21tcC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXAvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZjE2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXAvc2NyaXB0CkBAIC0wLDAgKzEsNzUgQEAKK0ZTQ0tfT1BUPS15ZgorCisjIHVzZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIC90bXAgYmVjYXNlIHRtcGZzIGRvZXNuJ3Qgc3VwcG9ydCBESU8KK3JtIC1mICRUTVBGSUxFCitUTVBGSUxFPSQobWt0ZW1wIC4vdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQorCitzdGF0IC1mICRUTVBGSUxFIHwgZ3JlcCAtcSAiVHlwZTogdG1wZnMiCitpZiBbICQ/ID0gMCBdOyB0aGVuCisJcm0gLWYgJFRNUEZJTEUKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCBmb3IgdG1wZnMgKG5vIE9fRElSRUNUKSIKKwlyZXR1cm4gMAorZmkKKworZWNobyAibWFrZSB0aGUgdGVzdCBpbWFnZSAuLi4iID4gJHRlc3RfbmFtZS5sb2cKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLWIgNDA5NiAtTyBtbXAgLUUgbW1wX3VwZGF0ZV9pbnRlcnZhbD0xICRUTVBGSUxFIDEwMCA+PiAkdGVzdF9uYW1lLmxvZyAyPiYxCitzdGF0dXM9JD8KK2lmIFsgIiRzdGF0dXMiICE9IDAgXSA7IHRoZW4KKwllY2hvICJta2UyZnMgLU8gbW1wIGZhaWxlZCIgPiAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJcmV0dXJuICRzdGF0dXMKK2ZpCisKK2tpbGxfZGVidWdmcygpIHsKKwl0cmFwIDAKKwlQSUQ9JChwcyAtbyBwaWQsY29tbWFuZCB8IGdyZXAgLXYgZ3JlcCB8CisJCWdyZXAgImRlYnVnZnMgLXcgJFRNUEZJTEUiIHwgYXdrICJ7IHByaW50IFwkMSB9IikKKwlbICJ4JFBJRCIgIT0gIngiIF0gJiYga2lsbCAtOSAkUElECit9CisKKyMgdGhpcyB3aWxsIGNhdXNlIGRlYnVnZnMgdG8gY3JlYXRlIHRoZSAkdGVzdF9uYW1lLm1hcmsgZmlsZSBvbmNlIGl0IGhhcworIyBwYXNzZWQgdGhlIE1NUCBzdGFydHVwLCB0aGVuIGNvbnRpbnVlIHJlYWRpbmcgaW5wdXQgdW50aWwgaXQgaXMga2lsbGVkCitNQVJLRklMRT0kdGVzdF9uYW1lLm5ldworcm0gLWYgJE1BUktGSUxFCit0cmFwIGtpbGxfZGVidWdmcyBFWElUCitlY2hvICJzZXQgbW1wIHNlcXVlbmNlIHRvIEVYVDJfTU1QX1NFUV9GU0NLLi4uIiA+PiAkdGVzdF9uYW1lLmxvZworKCB7IGVjaG8gZHVtcF9tbXA7IGVjaG8gImR1bXBfaW5vZGUgPDI+ICRNQVJLRklMRSI7IGNhdCAvZGV2L3plcm87IH0gfAorCSRERUJVR0ZTIC13ICRUTVBGSUxFID4+ICR0ZXN0X25hbWUubG9nIDI+JjEgJiApID4gL2Rldi9udWxsIDI+JjEgJgorZWNobyAid2FpdCB1bnRpbCBkZWJ1Z2ZzIGhhcyBzdGFydGVkIC4uLiIgPj4gJHRlc3RfbmFtZS5sb2cKK3doaWxlIFsgISAtZSAkTUFSS0ZJTEUgXTsgZG8KKwlzbGVlcCAxCitkb25lCitybSAtZiAkTUFSS0ZJTEUKK2VjaG8gImtpbGwgZGVidWdmcyBhYnJ1cHRseSAoc2ltdWxhdGVzIGUyZnNjayBmYWlsdXJlKSAuLi4iID4+ICR0ZXN0X25hbWUubG9nCitraWxsX2RlYnVnZnMKKworCitlY2hvICJlMmZzY2sgKHNob3VsZCBmYWlsIG1tcF9zZXEgPSBFWFQyX01NUF9TRVFfRlNDSykgLi4uIiA+PiAkdGVzdF9uYW1lLmxvZworJEZTQ0sgJEZTQ0tfT1BUICRUTVBGSUxFID4+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiZTJmc2NrIHdpdGggTU1QIGFzIEVYVDJfTU1QX1NFUV9GU0NLIHJhbiEiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAxCitmaQorCitlY2hvICJjbGVhciBtbXBfc2VxIHdpdGggdHVuZTJmcyAuLi4iID4+ICR0ZXN0X25hbWUubG9nCiskVFVORTJGUyAtZiAtRSBjbGVhcl9tbXAgJFRNUEZJTEUgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiAhPSAwIF0gOyB0aGVuCisJZWNobyAidHVuZTJmcyBjbGVhcmluZyBFWFQyX01NUF9TRVFfRlNDSyBmYWlsZWQiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAxCitmaQorCitlY2hvICJydW4gZTJmc2NrIGFnYWluIChzaG91bGQgcGFzcyB3aXRoIGNsZWFuIG1tcF9zZXEpIC4uLiIgPj4gJHRlc3RfbmFtZS5sb2cKKyRGU0NLICRGU0NLX09QVCAkVE1QRklMRSA+PiAkdGVzdF9uYW1lLmxvZyAyPiYxCitzdGF0dXM9JD8KK2lmIFsgIiRzdGF0dXMiICE9IDAgXSA7IHRoZW4KKwllY2hvICJlMmZzY2sgYWZ0ZXIgY2xlYXJpbmcgRVhUMl9NTVBfU0VRX0ZTQ0sgZmFpbGVkIj4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCitlY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCitybSAtZiAkVE1QRklMRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wX2dhcmJhZ2UvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXBfZ2FyYmFnZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGFkZDEwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wX2dhcmJhZ2UvZXhwZWN0LjEKQEAgLTAsMCArMSw5IEBACitTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIEZpeD8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzY0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wX2dhcmJhZ2UvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXBfZ2FyYmFnZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjMwMDAyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wX2dhcmJhZ2UvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS82NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21tcF9nYXJiYWdlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXBfZ2FyYmFnZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZTBiMTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9tbXBfZ2FyYmFnZS9uYW1lCkBAIC0wLDAgKzEgQEAKK3JlcGFpciBNTVAgd2hlbiBpdCBpcyBjb3JydXB0ZWQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX21tcF9nYXJiYWdlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX21tcF9nYXJiYWdlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQ1MWE2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfbW1wX2dhcmJhZ2Uvc2NyaXB0CkBAIC0wLDAgKzEsMjggQEAKK0ZTQ0tfT1BUPS15ZgorCisjIHVzZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIC90bXAgYmVjYXNlIHRtcGZzIGRvZXNuJ3Qgc3VwcG9ydCBESU8KK3JtIC1mICRUTVBGSUxFCitUTVBGSUxFPSQobWt0ZW1wIC4vdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQorCitzdGF0IC1mICRUTVBGSUxFIHwgZ3JlcCAtcSAiVHlwZTogdG1wZnMiCitpZiBbICQ/ID0gMCBdIDsgdGhlbgorCXJtIC1mICRUTVBGSUxFCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQgZm9yIHRtcGZzIChubyBPX0RJUkVDVCkiCisJcmV0dXJuIDAKK2ZpCisKK2VjaG8gIm1ha2UgdGhlIHRlc3QgaW1hZ2UgLi4uIiA+ICR0ZXN0X25hbWUubG9nCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gbW1wIC1FIG1tcF91cGRhdGVfaW50ZXJ2YWw9MSAkVE1QRklMRSAxMDAgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiAhPSAwIF0gOyB0aGVuCisJZWNobyAibWtlMmZzIC1PIG1tcCBmYWlsZWQiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCisjIGNyZWF0ZSBhIGNvcnJ1cHRlZCBpbWFnZQorZWNobyAibW9kaWZ5IHRoZSBtbXAgc2VxdWVuY2UgLi4uIiA+PiAkdGVzdF9uYW1lLmxvZworJERFQlVHRlMgLXcgLVIgInNldF9tbXBfdmFsdWUgbWFnaWMgMHgxMjM0NTY3OCIgJFRNUEZJTEUgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorCitTS0lQX0dVTlpJUD10cnVlCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9mX25vL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2I2MTlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm8vZXhwZWN0CkBAIC0wLDAgKzEsNDggQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI8eT4/IG5vCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI8eT4/IG5vCitJbm9kZSAxMyBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PHk+PyBubworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMSwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODg4LCBsZW4gMSkKK0NsZWFyPHk+PyBubworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI8eT4/IG5vCitJbm9kZSAxNCBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PHk+PyBubworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMzAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDc3Nzc3Nzc3Nzc3NywgbGVuIDMwMCkKK0NsZWFyPHk+PyBubworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA3Nzc3Nzc3Nzc3LCBsZW4gMSkKK0NsZWFyPHk+PyBubworSW5vZGUgMTQsIGlfYmxvY2tzIGlzIDUyNTc0Njk0NzQ4MTEzLCBzaG91bGQgYmUgMC4gIEZpeDx5Pj8gbm8KK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAxMiAoL2EpIGlzIGludmFsaWQgKDk5OTk5OSkuCitDbGVhcjx5Pj8gbm8KK0V4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgMTMgKC9iKSBpcyBpbnZhbGlkICgyOTg5NTQyOTYpLgorQ2xlYXI8eT4/IG5vCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDE0ICgvYykgaXMgaW52YWxpZCAoMzg4Njk3MjAxKS4KK0NsZWFyPHk+PyBubworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDEyIHJlZiBjb3VudCBpcyAzNDQ2Mywgc2hvdWxkIGJlIDEuICBGaXg8eT4/IG5vCitJbm9kZSAxMyByZWYgY291bnQgaXMgOTk5OSwgc2hvdWxkIGJlIDEuICBGaXg8eT4/IG5vCitJbm9kZSAxNCByZWYgY291bnQgaXMgMTIyNDEsIHNob3VsZCBiZSAxLiAgRml4PHk+PyBubworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjAyIC0zODEgLTQ1NworRml4PHk+PyBubworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgwLCBjb3VudGVkPTQ5MSkuCitGaXg8eT4/IG5vCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNDk0LCBjb3VudGVkPTQ5MSkuCitGaXg8eT4/IG5vCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQyOTQ5NjcyOTMsIGNvdW50ZWQ9MTE0KS4KK0ZpeDx5Pj8gbm8KKwordGVzdF9maWxlc3lzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqCisKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgNApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfbm8vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm8vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNjdlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9uby9zY3JpcHQKQEAgLTAsMCArMSwyNyBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJmc2NrIHdpdGggcmVwZWF0ZWQgbm8iCitGU0NLX09QVD0tZgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorCitndW56aXAgPCAkdGVzdF9kaXIvLi4vZl95ZXNhbGwvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCitybSAtcmYgJE9VVAorZWNobyAibm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm4iIHwgRTJGU0NLX0ZPUkNFX0lOVEVSQUNUSVZFPXkgJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vX2NhY2hlX2NvcnJ1cHRfaW5vZGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub19jYWNoZV9jb3JydXB0X2lub2RlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmODJmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub19jYWNoZV9jb3JydXB0X2lub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgcGFzc2VzIGNoZWNrcywgYnV0IGNoZWNrc3VtIGRvZXMgbm90IG1hdGNoIGlub2RlLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE5LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vX2NhY2hlX2NvcnJ1cHRfaW5vZGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub19jYWNoZV9jb3JydXB0X2lub2RlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNDMzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub19jYWNoZV9jb3JydXB0X2lub2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTkvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9fY2FjaGVfY29ycnVwdF9pbm9kZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX25vX2NhY2hlX2NvcnJ1cHRfaW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3ZTkyMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX25vX2NhY2hlX2NvcnJ1cHRfaW5vZGUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9fY2FjaGVfY29ycnVwdF9pbm9kZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9fY2FjaGVfY29ycnVwdF9pbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMjEzZTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub19jYWNoZV9jb3JydXB0X2lub2RlL25hbWUKQEAgLTAsMCArMSBAQAorZG9uJ3QgY2FjaGUgaW5vZGVzIHRoYXQgZmFpbCBjaGVja3N1bSB2ZXJpZmljYXRpb24KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmRkN2NiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9yb290L2V4cGVjdC4xCkBAIC0wLDAgKzEsMzkgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTUgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJy4uJyBpbiAvbG9zdCtmb3VuZCAoMTEpIGhhcyBkZWxldGVkL3VudXNlZCBpbm9kZSAyLiAgQ2xlYXI/IHllcworCitFbnRyeSAnLi4nIGluIC9mb28gKDEyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMi4gIENsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitSb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICBBbGxvY2F0ZT8geWVzCisKK1VuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAxMSAoLi4uKQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK1VuY29ubmVjdGVkIGRpcmVjdG9yeSBpbm9kZSAxMiAoLi4uKQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMTEgcmVmIGNvdW50IGlzIDMsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCB6ZXJvLWxlbmd0aCBpbm9kZSAxNS4gIENsZWFyPyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDE3LCBjb3VudGVkPTE2KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxNywgY291bnRlZD0xNikuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE2LzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjYvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9yb290L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9yb290L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlYTViYzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub3Jvb3QvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI2LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTg3ZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9yb290L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9yb290L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcwZWJjMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX25vcm9vdC9uYW1lCkBAIC0wLDAgKzEgQEAKK21pc3Npbmcgcm9vdCBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vc3BjX2NyZWF0ZV9sbmYvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub3NwY19jcmVhdGVfbG5mL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NmZlMTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub3NwY19jcmVhdGVfbG5mL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjkgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK0Nhbm5vdCBhbGxvY2F0ZSBzcGFjZSBmb3IgL2xvc3QrZm91bmQuCitQbGFjZSBsb3N0IGZpbGVzIGluIHJvb3QgZGlyZWN0b3J5IGluc3RlYWQ/IHllcworCitJbnN1ZmZpY2llbnQgc3BhY2UgdG8gcmVjb3ZlciBsb3N0IGZpbGVzIQorTW92ZSBkYXRhIG9mZiB0aGUgZmlsZXN5c3RlbSBhbmQgcmUtcnVuIGUyZnNjay4KKworUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitVbmF0dGFjaGVkIGlub2RlIDEyNQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDEyNSByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNDk2LCBjb3VudGVkPTQ5NSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNDk2LCBjb3VudGVkPTQ5NSkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyOC8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNy81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9ub3NwY19jcmVhdGVfbG5mL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9zcGNfY3JlYXRlX2xuZi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTc1N2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9zcGNfY3JlYXRlX2xuZi9leHBlY3QuMgpAQCAtMCwwICsxLDI2IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitDYW5ub3QgYWxsb2NhdGUgc3BhY2UgZm9yIC9sb3N0K2ZvdW5kLgorUGxhY2UgbG9zdCBmaWxlcyBpbiByb290IGRpcmVjdG9yeSBpbnN0ZWFkPyB5ZXMKKworSW5zdWZmaWNpZW50IHNwYWNlIHRvIHJlY292ZXIgbG9zdCBmaWxlcyEKK01vdmUgZGF0YSBvZmYgdGhlIGZpbGVzeXN0ZW0gYW5kIHJlLXJ1biBlMmZzY2suCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtOQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0OTQsIGNvdW50ZWQ9NDk1KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICg0OTQsIGNvdW50ZWQ9NDk1KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTI4LzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE3LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vc3BjX2NyZWF0ZV9sbmYvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub3NwY19jcmVhdGVfbG5mL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNzFiNjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9ub3NwY19jcmVhdGVfbG5mL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX25vc3BjX2NyZWF0ZV9sbmYvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX25vc3BjX2NyZWF0ZV9sbmYvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjZjOTMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfbm9zcGNfY3JlYXRlX2xuZi9uYW1lCkBAIC0wLDAgKzEgQEAKK25vIHNwYWNlIHRvIGNyZWF0ZSBsb3N0K2ZvdW5kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9va2dyb3VwL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb2tncm91cC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDI5NzQxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb2tncm91cC9leHBlY3QuMQpAQCAtMCwwICsxLDkgQEAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzIwNDggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNzQvODE5MyBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29rZ3JvdXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9va2dyb3VwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ODU2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9va2dyb3VwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI3NC84MTkzIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb2tncm91cC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX29rZ3JvdXAvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZiNjdjNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29rZ3JvdXAvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb2tncm91cC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb2tncm91cC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYTY2YWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9va2dyb3VwL25hbWUKQEAgLTAsMCArMSBAQAorODE5MyBibG9jayBsb25nIGZpbGVzeXN0ZW0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0ODYzYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnQvZXhwZWN0CkBAIC0wLDAgKzEsNTUgQEAKK3R1bmUyZnMgbWV0YWRhdGFfY3N1bSB0ZXN0CitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNTI0Mjg4IDFrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDkKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorQ3JlYXRpbmcgNDc3IGh1Z2UgZmlsZShzKSB3aXRoIDEwMjQgYmxvY2tzIGVhY2g6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworCisKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0xMCw3ICsxMCw3IEBACisgSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorIEJsb2NrIGNvdW50OiAgICAgICAgICAgICAgNTI0Mjg4CisgUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAyNjIxNAorLUZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgNTcwCisrRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA1NjcKKyBGcmVlIGlub2RlczogICAgICAgICAgICAgIDY1MDQ3CisgRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCisgQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitAQCAtNDcsOCArNDcsOCBAQAorICAgQmxvY2sgYml0bWFwIGF0IDI2MiAoKzI2MSkKKyAgIElub2RlIGJpdG1hcCBhdCAyNzggKCsyNzcpCisgICBJbm9kZSB0YWJsZSBhdCAyOTQtNTQ5ICgrMjkzKQorLSAgMjEgZnJlZSBibG9ja3MsIDUzNSBmcmVlIGlub2RlcywgMyBkaXJlY3RvcmllcywgNTM1IHVudXNlZCBpbm9kZXMKKy0gIEZyZWUgYmxvY2tzOiA0NDE0LTQ0MzQKKysgIDE4IGZyZWUgYmxvY2tzLCA1MzUgZnJlZSBpbm9kZXMsIDMgZGlyZWN0b3JpZXMsIDUzNSB1bnVzZWQgaW5vZGVzCisrICBGcmVlIGJsb2NrczogNDQxNy00NDM0CisgICBGcmVlIGlub2RlczogNDkwLTEwMjQKKyBHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpIFtJTk9ERV9VTklOSVRdCisgICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4MTk0LTgxOTcKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDQzODljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudC9uYW1lCkBAIC0wLDAgKzEgQEAKK29wdGltaXplIGV4dGVudCB0cmVlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcHRfZXh0ZW50L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYTVlOTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcHRfZXh0ZW50L3NjcmlwdApAQCAtMCwwICsxLDY0IEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsNjRiaXQsbWV0YWRhdGFfY3N1bQorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAveHl6CisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInR1bmUyZnMgbWV0YWRhdGFfY3N1bSB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYmVmb3JlCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGNoZWNrCiskRlNDSyAtZnlEIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcHRfZXh0ZW50X2V4dDMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudF9leHQzL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzYxNDcxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudF9leHQzL2V4cGVjdApAQCAtMCwwICsxLDQ0IEBACityZWJ1aWxkIGV4dGVudCBtZXRhZGF0YV9jc3VtIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA1MjQyODggMWsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitta2UyZnM6IE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIGZvciBpbm9kZXMgY29udGFpbmluZyBleHRlbnRzIHdoaWxlIGNyZWF0aW5nIGh1Z2UgZmlsZXMKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworCisKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0yLDcgKzIsNyBAQAorIExhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CisgRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKKyBGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCistRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSBkaXJfbmxpbmsKKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSBkaXJfbmxpbmsKKyBEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIHVzZXJfeGF0dHIgYWNsCisgRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorIEVycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnRfZXh0My9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudF9leHQzL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2OTY4NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnRfZXh0My9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbnZlcnQgZXh0MyB0byBleHRlbnQgdHJlZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3B0X2V4dGVudF9leHQzL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnRfZXh0My9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxZWFlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29wdF9leHRlbnRfZXh0My9zY3JpcHQKQEAgLTAsMCArMSw2NSBAQAorRlNDS19PUFQ9LWZuCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitDT05GPSRUTVBGSUxFLmNvbmYKKworY2F0ID4gJENPTkYgPDwgRU5ETAorW2ZzX3R5cGVzXQorCWV4dDRoID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLF5leHRlbnQsaHVnZV9maWxlLF5mbGV4X2JnLF51bmluaXRfYmcsZGlyX25saW5rLF5leHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLHJlc2l6ZV9pbm9kZSxeNjRiaXQsXm1ldGFkYXRhX2NzdW0KKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQludW1faHVnZWZpbGVzID0gMTAwCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInJlYnVpbGQgZXh0ZW50IG1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjaGVjaworJEZTQ0sgLWZ5RCAtTiB0ZXN0X2ZpbGVzeXMgLUUgYm1hcDJleHRlbnQgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKKyMgZHVtcCBhbmQgY2hlY2sKKyREVU1QRTJGUyAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdeR3JvdXAgMDonIC1COTkgLUEyMCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5hZnRlcgorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtdSAkT1VULmJlZm9yZSAkT1VULmFmdGVyIHwgdGFpbCAtbiArMyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRSAkT1VULmJlZm9yZSAkT1VULmFmdGVyCisKKyMKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorIworCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIC1lICdzL3Rlc3RfZmlsZXN5czouKi8vZycgPCAkT1VUID4gJE9VVC5uZXcKK212ICRPVVQubmV3ICRPVVQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZGMxZjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEKQEAgLTAsMCArMSwxNCBAQAorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMTUgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3NTUsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDE3ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDY0NCwgc2l6ZT0wKQorQ2xlYXJpbmcgb3JwaGFuZWQgaW5vZGUgMTYgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wNDA3NTUsIHNpemU9MTAyNCkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDE0ICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDY0NCwgc2l6ZT02OSkKK0NsZWFyaW5nIG9ycGhhbmVkIGlub2RlIDEzICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDQwNzU1LCBzaXplPTEwMjQpCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMwMy84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1OWM5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8yMDQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTMwMy84MTkyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZGE0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW4vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW4vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjlmM2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuL25hbWUKQEAgLTAsMCArMSBAQAorY2xlYXJpbmcgb3JwaGFuIGlub2RlcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9kb3Rkb3RfZnQvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmExMzczZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9kb3Rkb3RfZnQvZXhwZWN0LjEKQEAgLTAsMCArMSw1NiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitTcGVjaWFsIChkZXZpY2Uvc29ja2V0L2ZpZm8pIGlub2RlIDEyIGhhcyBub24temVybyBzaXplLiAgRml4PyB5ZXMKKworSW5vZGUgMTIsIGlfYmxvY2tzIGlzIDIsIHNob3VsZCBiZSAwLiAgRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnZGlyJyBpbiAvICgyKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgMiwgc2hvdWxkIGJlIDYpLgorRml4PyB5ZXMKKworRW50cnkgJy4uJyBpbiA8MTI+LzwxMz4gKDEzKSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgMiwgc2hvdWxkIGJlIDYpLgorRml4PyB5ZXMKKworRW50cnkgJy4uJyBpbiA8MTI+LzwxND4gKDE0KSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgMiwgc2hvdWxkIGJlIDYpLgorRml4PyB5ZXMKKworRW50cnkgJy4uJyBpbiA8MTI+LzwxNT4gKDE1KSBoYXMgYW4gaW5jb3JyZWN0IGZpbGV0eXBlICh3YXMgMiwgc2hvdWxkIGJlIDYpLgorRml4PyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTMgKDwxMj4vPDEzPikKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTQgKDwxMj4vPDE0PikKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTUgKDwxMj4vPDE1PikKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDIgcmVmIGNvdW50IGlzIDQsIHNob3VsZCBiZSAzLiAgRml4PyB5ZXMKKworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDMsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworSW5vZGUgMTQgcmVmIGNvdW50IGlzIDMsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworSW5vZGUgMTUgcmVmIGNvdW50IGlzIDMsIHNob3VsZCBiZSAyLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjMKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzMsIGNvdW50ZWQ9NzQpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDczLCBjb3VudGVkPTc0KS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNiwgY291bnRlZD01KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTUvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5fZG90ZG90X2Z0L2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzY4ZTc5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE1LzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjYvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9kb3Rkb3RfZnQvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I5MWE2NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9kb3Rkb3RfZnQvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2RvdGRvdF9mdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNjJlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5fZG90ZG90X2Z0L25hbWUKQEAgLTAsMCArMSBAQAorZmlsZXR5cGUgb2YgLi4gaW4gb3JwaGFuZWQgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVhYWI3OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTAgQEAKK1RydW5jYXRpbmcgb3JwaGFuZWQgaW5vZGUgMTIgKHVpZD0wLCBnaWQ9MCwgbW9kZT0wMTAwNjQ0LCBzaXplPTApCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlNWQ5NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNTdmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzQ4ZWMyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvbmFtZQpAQCAtMCwwICsxIEBACit0cnVuY2F0aW5nIGFuIG9ycGhhbmVkIGV4dGVudC1tYXBwZWQgaW5vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTRhNjg4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2luZGlyZWN0X2lub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMyBAQAordGVzdF9maWxlc3lzOiBUcnVuY2F0aW5nIG9ycGhhbmVkIGlub2RlIDEyICh1aWQ9MCwgZ2lkPTAsIG1vZGU9MDEwMDY0NCwgc2l6ZT0wKQordGVzdF9maWxlc3lzOiBjbGVhbiwgMTIvMTYgZmlsZXMsIDIxLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWU1ZDk2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3JwaGFuX2luZGlyZWN0X2lub2RlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRiMzkwOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0Y2NiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvbmFtZQpAQCAtMCwwICsxIEBACit0cnVuY2F0aW5nIGFuIG9ycGhhbmVkIGlub2RlIGluIHByZWVuIG1vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX29ycGhhbl9pbmRpcmVjdF9pbm9kZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhM2I5M2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vcnBoYW5faW5kaXJlY3RfaW5vZGUvc2NyaXB0CkBAIC0wLDAgKzEsMiBAQAorRlNDS19PUFQ9LXAKKy4gJGNtZF9kaXIvcnVuX2UyZnNjawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX292ZXJmc2Jsa3MvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTViOTNmMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX292ZXJmc2Jsa3MvZXhwZWN0LjEKQEAgLTAsMCArMSwxOSBAQAorZXh0MmZzX2NoZWNrX2Rlc2M6IENvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBpbm9kZSBiaXRtYXAKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworR3JvdXAgMCdzIGlub2RlIGJpdG1hcCBhdCAzIGNvbmZsaWN0cyB3aXRoIHNvbWUgb3RoZXIgZnMgYmxvY2suCitSZWxvY2F0ZT8geWVzCisKK1JlbG9jYXRpbmcgZ3JvdXAgMCdzIGlub2RlIGJpdG1hcCBmcm9tIDMgdG8gNC4uLgorUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtKDEyLS0yMSkKK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9vdmVyZnNibGtzL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODIxZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjIvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX292ZXJmc2Jsa3MvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBiNmIyZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX292ZXJmc2Jsa3MvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfb3ZlcmZzYmxrcy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYjYwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9vdmVyZnNibGtzL25hbWUKQEAgLTAsMCArMSBAQAorb3ZlcmxhcHBpbmcgaW5vZGUgYW5kIGJsb2NrIGJpdG1hcHMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2RpbmcvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlXzE5NzBfZGF0ZV9lbmNvZGluZy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3MTU3MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2RpbmcvZXhwZWN0CkBAIC0wLDAgKzEsNDUgQEAKK3RpbWVzIGZvciB5ZWFyLTE5MDkgPQorIGN0aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAzCisgYXRpbWU6IDB4OGU0NzU0NDA6MDAwMDAwMDMKKyBtdGltZTogMHg4ZTQ3NTQ0MDowMDAwMDAwMworY3J0aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAzCit0aW1lcyBmb3IgeWVhci0xOTc5ID0KKyBjdGltZTogMHgxMWRiNjk0MDowMDAwMDAwMAorIGF0aW1lOiAweDExZGI2OTQwOjAwMDAwMDAwCisgbXRpbWU6IDB4MTFkYjY5NDA6MDAwMDAwMDAKK2NydGltZTogMHgxMWRiNjk0MDowMDAwMDAwMAordGltZXMgZm9yIHllYXItMjAzOSA9CisgY3RpbWU6IDB4ODJhMzdiNDA6MDAwMDAwMDEKKyBhdGltZTogMHg4MmEzN2I0MDowMDAwMDAwMQorIG10aW1lOiAweDgyYTM3YjQwOjAwMDAwMDAxCitjcnRpbWU6IDB4ODJhMzdiNDA6MDAwMDAwMDEKK3RpbWVzIGZvciB5ZWFyLTIxMzkgPQorIGN0aW1lOiAweDNlOWI5OTQwOjAwMDAwMDAxCisgYXRpbWU6IDB4M2U5Yjk5NDA6MDAwMDAwMDEKKyBtdGltZTogMHgzZTliOTk0MDowMDAwMDAwMQorY3J0aW1lOiAweDNlOWI5OTQwOjAwMDAwMDAxCit0aW1lcyBmb3IgeWVhci0xOTA5ID0KKyBjdGltZTogMHg4ZTQ3NTQ0MDowMDAwMDAwMAorIGF0aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAwCisgbXRpbWU6IDB4OGU0NzU0NDA6MDAwMDAwMDAKK2NydGltZTogMHg4ZTQ3NTQ0MDowMDAwMDAwMAordGltZXMgZm9yIHllYXItMTk3OSA9CisgY3RpbWU6IDB4MTFkYjY5NDA6MDAwMDAwMDAKKyBhdGltZTogMHgxMWRiNjk0MDowMDAwMDAwMAorIG10aW1lOiAweDExZGI2OTQwOjAwMDAwMDAwCitjcnRpbWU6IDB4MTFkYjY5NDA6MDAwMDAwMDAKK3RpbWVzIGZvciB5ZWFyLTIwMzkgPQorIGN0aW1lOiAweDgyYTM3YjQwOjAwMDAwMDAxCisgYXRpbWU6IDB4ODJhMzdiNDA6MDAwMDAwMDEKKyBtdGltZTogMHg4MmEzN2I0MDowMDAwMDAwMQorY3J0aW1lOiAweDgyYTM3YjQwOjAwMDAwMDAxCit0aW1lcyBmb3IgeWVhci0yMTM5ID0KKyBjdGltZTogMHgzZTliOTk0MDowMDAwMDAwMQorIGF0aW1lOiAweDNlOWI5OTQwOjAwMDAwMDAxCisgbXRpbWU6IDB4M2U5Yjk5NDA6MDAwMDAwMDEKK2NydGltZTogMHgzZTliOTk0MDowMDAwMDAwMQordGltZXMgZm9yIHllYXItMTkwOSA9CisgY3RpbWU6IDB4OGU0NzU0NDA6MDAwMDAwMDMKKyBhdGltZTogMHg4ZTQ3NTQ0MDowMDAwMDAwMworIG10aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAzCitjcnRpbWU6IDB4OGU0NzU0NDA6MDAwMDAwMDMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2RpbmcvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2RpbmcvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODA1MzI0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlXzE5NzBfZGF0ZV9lbmNvZGluZy9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJlY3QgbWlzLWVuY29kZWQgcHJlLTE5NzAgZGF0ZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2Rpbmcvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlXzE5NzBfZGF0ZV9lbmNvZGluZy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZmZjk4YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZV8xOTcwX2RhdGVfZW5jb2Rpbmcvc2NyaXB0CkBAIC0wLDAgKzEsMTA2IEBACitpZiAhIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQgKG5vIGRlYnVnZnMpIgorCXJldHVybiAwCitmaQorCitPVVQ9JHRlc3RfbmFtZS5sb2cKK1RJTUVTVEFNUFM9JHRlc3RfbmFtZS50aW1lc3RhbXBzLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0ZTQ0tfT1BUPS15ZgorCitjcmVhdGVfZmlsZV93aXRoX3h0aW1lX2FuZF9leHRyYSgpIHsKKwluYW1lPSQxCisJdGltZT0kMgorCWV4dHJhPSQzCisJeworCQllY2hvICJ3cml0ZSAvZGV2L251bGwgJG5hbWUiCisJCWZvciB4dGltZSBpbiBhdGltZSBjdGltZSBtdGltZSBjcnRpbWU7IGRvCisJCQllY2hvICJzZXRfaW5vZGVfZmllbGQgJG5hbWUgJHh0aW1lIEAkdGltZSIKKwkJCWVjaG8gInNldF9pbm9kZV9maWVsZCAkbmFtZSAke3h0aW1lfV9leHRyYSAkZXh0cmEiCisJCWRvbmUKKwl9IHwgJERFQlVHRlMgLXcgLWYgL2Rldi9zdGRpbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK30KKworZ2V0X2ZpbGVfeHRpbWVfYW5kX2V4dHJhKCkgeworCW5hbWU9JDEKKwllY2hvICJ0aW1lcyBmb3IgJG5hbWUgPSIgPj4gJFRJTUVTVEFNUFMKKwkkREVCVUdGUyAtUiAic3RhdCAkbmFtZSIgJFRNUEZJTEUgMj4mMSB8IGVncmVwICdeKCBhfCBjfCBtfGNyKXRpbWU6JyB8CisJCXNlZCAncy8gLS0uKi8vJyA+PiAkVElNRVNUQU1QUworfQorCitybSAtZiAkT1VUICRUSU1FU1RBTVBTCisKKyMgY3JlYXRlIGFuIGVtcHR5IGV4dDQgZmlsZXN5c3RlbSB3aXRoIDI1Ni1ieXRlIGlub2RlcyBmb3IgdGVzdGluZworPiAkVE1QRklMRQorZWNobyBta2ZzLmV4dDQgLWIgMTAyNCAtcSAtSSAyNTYgJFRNUEZJTEUgNTAwMCA+PiAkT1VUCiskTUtFMkZTIC10IGV4dDQgLWIgMTAyNCAtcSAtSSAyNTYgLUYgJFRNUEZJTEUgNTAwMCA+PiAkT1VUIDI+JjEKKworIyB0aGlzIGlzIGEgcHJlLTE5NzAgZmlsZSBlbmNvZGVkIHdpdGggdGhlIG9sZCBlbmNvZGluZy4KKyMgZnNjayBzaG91bGQgcmVwYWlyIHRoaXMKK2NyZWF0ZV9maWxlX3dpdGhfeHRpbWVfYW5kX2V4dHJhIHllYXItMTkwOSAtMTkwNzkyODAwMCAzCisKKyMgdGhlc2UgYXJlIGFsbCBhbHJlYWR5IGVuY29kZWQgY29ycmVjdGx5CitjcmVhdGVfZmlsZV93aXRoX3h0aW1lX2FuZF9leHRyYSB5ZWFyLTE5NzkgICAyOTk1OTIwMDAgMAorY3JlYXRlX2ZpbGVfd2l0aF94dGltZV9hbmRfZXh0cmEgeWVhci0yMDM5ICAyMTkxNzUyMDAwIDEKK2NyZWF0ZV9maWxlX3dpdGhfeHRpbWVfYW5kX2V4dHJhIHllYXItMjEzOSAgNTM0NTM1MjAwMCAxCisKKyMgY29uZmlybSB0aGF0IHRoZSB4dGltZSBpcyB3cm9uZyBvbiB0aGUgcHJlLTE5NzAgZmlsZQorZ2V0X2ZpbGVfeHRpbWVfYW5kX2V4dHJhIHllYXItMTkwOQorCisjIGFuZCBjb25maXJtIHRoYXQgaXQgaXMgcmlnaHQgb24gdGhlIHJlbWFpbmluZyBmaWxlcworZ2V0X2ZpbGVfeHRpbWVfYW5kX2V4dHJhIHllYXItMTk3OQorZ2V0X2ZpbGVfeHRpbWVfYW5kX2V4dHJhIHllYXItMjAzOQorZ2V0X2ZpbGVfeHRpbWVfYW5kX2V4dHJhIHllYXItMjEzOQorCisjIGJlZm9yZSB3ZSByZXBhaXIgdGhlIGZpbGVzeXN0ZW0sIHNhdmUgb2ZmIGEgY29weSBzbyB0aGF0CisjIHdlIGNhbiB1c2UgaXQgbGF0ZXIKKworY3AgLWEgJFRNUEZJTEUgJFRNUEZJTEUuc2F2CisKKyMgcmVwYWlyIHRoZSBmaWxlc3lzdGVtCitFMkZTQ0tfVElNRT0xMzg2MzkzNTM5ICRGU0NLICRGU0NLX09QVCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBjaGVjayB0aGF0IHRoZSBkYXRlcyBhbmQgeHRpbWVfZXh0cmEgb24gdGhlIGZpbGUgaXMgbm93IGNvcnJlY3QKK2dldF9maWxlX3h0aW1lX2FuZF9leHRyYSB5ZWFyLTE5MDkKKworIyBjaGVjayB0aGF0IHRoZSByZW1haW5pbmcgZGF0ZXMgaGF2ZSBub3QgYmVlbiBhbHRlcmVkCitnZXRfZmlsZV94dGltZV9hbmRfZXh0cmEgeWVhci0xOTc5CitnZXRfZmlsZV94dGltZV9hbmRfZXh0cmEgeWVhci0yMDM5CitnZXRfZmlsZV94dGltZV9hbmRfZXh0cmEgeWVhci0yMTM5CisKK2lmIHRlc3QgJFNJWkVPRl9USU1FX1QgLWd0IDQKK3RoZW4KKyAgIyBub3cgd2UgbmVlZCB0byBjaGVjayB0aGF0IGFmdGVyIHRoZSB5ZWFyIDIyNDIsIGUyZnNjayBkb2VzIG5vdAorICAjIG1vZGlmeSBkYXRlcyB3aXRoIGV4dHJhX3h0aW1lPTMKKworICAjIHJlc3RvcmUgdGhlIHVucmVwYWlyZWQgZmlsZXN5c3RlbQorICBtdiAkVE1QRklMRS5zYXYgJFRNUEZJTEUKKworICAjcmV0cnkgdGhlIHJlcGFpcgorICBFMkZTQ0tfVElNRT05MjcwMzkzNTM5ICRGU0NLICRGU0NLX09QVCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworICAjIGNoZWNrIHRoYXQgdGhlIDE5MDkgZmlsZSBpcyB1bmFsdGVyZWQgKGkuZS4gaXQgaGFzIGEgcG9zdC0yMzc4IGRhdGUpCisgIGdldF9maWxlX3h0aW1lX2FuZF9leHRyYSB5ZWFyLTE5MDkKK2Vsc2UKKyAgcm0gLWYgVE1QRklMRS5zYXYKK2NhdCA8PCBFT0YgPj4gJFRJTUVTVEFNUFMKK3RpbWVzIGZvciB5ZWFyLTE5MDkgPQorIGN0aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAzCisgYXRpbWU6IDB4OGU0NzU0NDA6MDAwMDAwMDMKKyBtdGltZTogMHg4ZTQ3NTQ0MDowMDAwMDAwMworY3J0aW1lOiAweDhlNDc1NDQwOjAwMDAwMDAzCitFT0YKK2ZpCisKK2NtcCAtcyAkVElNRVNUQU1QUyAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJFRJTUVTVEFNUFMgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgT1VUIFRJTUVTVEFNUFMgRVhQIEZTQ0tfT1BUCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9wcmVlbi9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjA1NzIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9wcmVlbi9leHBlY3QuMQpAQCAtMCwwICsxLDEyIEBACit0ZXN0X2ZpbGVzeXM6IE5vdGU6IGlmIHNldmVyYWwgaW5vZGUgb3IgYmxvY2sgYml0bWFwIGJsb2NrcyBvciBwYXJ0CitvZiB0aGUgaW5vZGUgdGFibGUgcmVxdWlyZSByZWxvY2F0aW9uLCB5b3UgbWF5IHdpc2ggdG8gdHJ5CitydW5uaW5nIGUyZnNjayB3aXRoIHRoZSAnLWIgODE5Mycgb3B0aW9uIGZpcnN0LiAgVGhlIHByb2JsZW0KK21heSBsaWUgb25seSB3aXRoIHRoZSBwcmltYXJ5IGJsb2NrIGdyb3VwIGRlc2NyaXB0b3JzLCBhbmQKK3RoZSBiYWNrdXAgYmxvY2sgZ3JvdXAgZGVzY3JpcHRvcnMgbWF5IGJlIE9LLgorCit0ZXN0X2ZpbGVzeXM6IEJsb2NrIGJpdG1hcCBmb3IgZ3JvdXAgMCBpcyBub3QgaW4gZ3JvdXAuICAoYmxvY2sgMCkKKworCit0ZXN0X2ZpbGVzeXM6IFVORVhQRUNURUQgSU5DT05TSVNURU5DWTsgUlVOIGZzY2sgTUFOVUFMTFkuCisJKGkuZS4sIHdpdGhvdXQgLWEgb3IgLXAgb3B0aW9ucykKK0V4aXQgc3RhdHVzIGlzIDQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlZW4vZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdmNmNlMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL2V4cGVjdC4yCkBAIC0wLDAgKzEsMzAgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDgwNDIsIGNvdW50ZWQ9NzYxNCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzEgKDE3MCwgY291bnRlZD0xNjkpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDgyMTIsIGNvdW50ZWQ9Nzc4MykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDEwNTMsIGNvdW50ZWQ9MTA1MikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzEgKDEwNjQsIGNvdW50ZWQ9MTA2MykuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzEgKDAsIGNvdW50ZWQ9MSkuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMjExNywgY291bnRlZD0yMTE1KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTMvMjEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDcxNy84NTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlZW4vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9wcmVlbi9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWE3Y2EwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlZW4vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcHJlZW4vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhM2E0ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL25hbWUKQEAgLTAsMCArMSBAQAorcHJlZW4gc2hvdWxkbid0IGRlc3Ryb3kgYmFja3VwIHN1cGVyYmxvY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9wcmVlbi9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9wcmVlbi9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBlZDExYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ByZWVuL3NjcmlwdApAQCAtMCwwICsxLDQgQEAKK0ZTQ0tfT1BUPS1wZgorU0VDT05EX0ZTQ0tfT1BUPS15ZmI4MTkzCisKKy4gJGNtZF9kaXIvcnVuX2UyZnNjawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvZGVidWdmcy1jbWRzIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvZGVidWdmcy1jbWRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMmEzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9kZWJ1Z2ZzLWNtZHMKQEAgLTAsMCArMSw3IEBACitsaXN0X3F1b3RhIHVzZXIKK2xpc3RfcXVvdGEgZ3JvdXAKK2dldF9xdW90YSB1c2VyIDAKK2dldF9xdW90YSB1c2VyIDEwMAorZ2V0X3F1b3RhIHVzZXIgMzQKK2dldF9xdW90YSBncm91cCAwCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL2V4cGVjdC4wIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvZXhwZWN0LjAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhZDYzZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL2V4cGVjdC4wCkBAIC0wLDAgKzEsMjEgQEAKK2RlYnVnZnM6IGxpc3RfcXVvdGEgdXNlcgorIHVzZXIgaWQgICAgIGJsb2NrcyAgICBxdW90YSAgICBsaW1pdCAgICAgIGlub2RlcyAgICBxdW90YSAgICBsaW1pdAorICAgICAgIDAgICAgICAxMzMxMiAgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgMiAgICAgICAgMCAgICAgICAgMAorICAgICAgMzQgICAgICAgMTAyNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgMSAgICAgICAgMCAgICAgICAgMAorICAgICAxMDAgICAgICAgMjA0OCAgICAgICAzMiAgICAgICA1MCAgICAgICAgICAgMiAgICAgICAyMCAgICAgICAzMAorZGVidWdmczogbGlzdF9xdW90YSBncm91cAorZ3JvdXAgaWQgICAgIGJsb2NrcyAgICBxdW90YSAgICBsaW1pdCAgICAgIGlub2RlcyAgICBxdW90YSAgICBsaW1pdAorICAgICAgIDAgICAgICAxNjM4NCAgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgNSAgICAgICAgMCAgICAgICAgMAorZGVidWdmczogZ2V0X3F1b3RhIHVzZXIgMAorIHVzZXIgaWQgICAgIGJsb2NrcyAgICBxdW90YSAgICBsaW1pdCAgICAgIGlub2RlcyAgICBxdW90YSAgICBsaW1pdAorICAgICAgIDAgICAgICAxMzMxMiAgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgMiAgICAgICAgMCAgICAgICAgMAorZGVidWdmczogZ2V0X3F1b3RhIHVzZXIgMTAwCisgdXNlciBpZCAgICAgYmxvY2tzICAgIHF1b3RhICAgIGxpbWl0ICAgICAgaW5vZGVzICAgIHF1b3RhICAgIGxpbWl0CisgICAgIDEwMCAgICAgICAyMDQ4ICAgICAgIDMyICAgICAgIDUwICAgICAgICAgICAyICAgICAgIDIwICAgICAgIDMwCitkZWJ1Z2ZzOiBnZXRfcXVvdGEgdXNlciAzNAorIHVzZXIgaWQgICAgIGJsb2NrcyAgICBxdW90YSAgICBsaW1pdCAgICAgIGlub2RlcyAgICBxdW90YSAgICBsaW1pdAorICAgICAgMzQgICAgICAgMTAyNCAgICAgICAgMCAgICAgICAgMCAgICAgICAgICAgMSAgICAgICAgMCAgICAgICAgMAorZGVidWdmczogZ2V0X3F1b3RhIGdyb3VwIDAKK2dyb3VwIGlkICAgICBibG9ja3MgICAgcXVvdGEgICAgbGltaXQgICAgICBpbm9kZXMgICAgcXVvdGEgICAgbGltaXQKKyAgICAgICAwICAgICAgMTYzODQgICAgICAgIDAgICAgICAgIDAgICAgICAgICAgIDUgICAgICAgIDAgICAgICAgIDAKK2RlYnVnZnM6IApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNiNGNmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvZXhwZWN0LjEKQEAgLTAsMCArMSwxMyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK1tRVU9UQSBXQVJOSU5HXSBVc2FnZSBpbmNvbnNpc3RlbnQgZm9yIElEIDA6YWN0dWFsICgxMzMxMiwgMikgIT0gZXhwZWN0ZWQgKDE0MzM2LCAzKQorW1FVT1RBIFdBUk5JTkddIFVzYWdlIGluY29uc2lzdGVudCBmb3IgSUQgMTAwOmFjdHVhbCAoMjA0OCwgMikgIT0gZXhwZWN0ZWQgKDEwMjQsIDEpCitVcGRhdGUgcXVvdGEgaW5mbyBmb3IgcXVvdGEgdHlwZSAwPyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNC8xNiBmaWxlcyAoMTQuMyUgbm9uLWNvbnRpZ3VvdXMpLCAzNi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYzU1OGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE0LzE2IGZpbGVzICgxNC4zJSBub24tY29udGlndW91cyksIDM2LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNlYTY1NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZWE4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9xdW90YS9uYW1lCkBAIC0wLDAgKzEgQEAKK2ZpeCBpbmNvcnJlY3QgdXNhZ2Ugc3RhdHMgaW4gcXVvdGEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3F1b3RhL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmU2YTlmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcXVvdGEvc2NyaXB0CkBAIC0wLDAgKzEsMTEgQEAKK0FGVEVSX0NNRD0nJERFQlVHRlMgLWYgJHRlc3RfZGlyL2RlYnVnZnMtY21kcyAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkdGVzdF9uYW1lLjAubG9nJworUEFTU19aRVJPPXRydWUKKworJFRVTkUyRlMgLWggMj4mMSB8IGdyZXAgLXEgcXVvdGFfb3B0aW9ucworaWYgWyAkPyAhPSAwIF0gOyB0aGVuCisgICAgICAgIHJtIC1mICRUTVBGSUxFCisgICAgICAgIGVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIChxdW90YSBub3QgZW5hYmxlZCkiCisgICAgICAgIHJldHVybiAwCitmaQorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlYWRvbmx5X2ZzY2svZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVhZG9ubHlfZnNjay9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0ZGZhNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlYWRvbmx5X2ZzY2svZXhwZWN0CkBAIC0wLDAgKzEsMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNDI5NDk2ODI1NCwgY291bnRlZD05NTgpLgorRml4PyBubworCit0ZXN0X2ZpbGVzeXM6IDExLzI1NiBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDE4NDQ2NzQ0MDY5NDE0NTg1NDEwLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitjcmMgZGlkIG5vdCBjaGFuZ2UuICAyNDY2MjE1MTYxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWFkb25seV9mc2NrL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVhZG9ubHlfZnNjay9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWY5Y2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVhZG9ubHlfZnNjay9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWFkb25seV9mc2NrL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWFkb25seV9mc2NrL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdhYjQyOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlYWRvbmx5X2ZzY2svbmFtZQpAQCAtMCwwICsxIEBACitlbnN1cmUgdGhhdCBhIHJlYWRvbmx5IGNoZWNrIGRvZXNuJ3QgbW9kaWZ5IHRoZSBmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVhZG9ubHlfZnNjay9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWFkb25seV9mc2NrL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDZjNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVhZG9ubHlfZnNjay9zY3JpcHQKQEAgLTAsMCArMSw0NiBAQAorRlNDS19PUFQ9LWZuCitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitnemlwIC1kIDwgJHRlc3RfZGlyL2ltYWdlLmd6ID4gJFRNUEZJTEUKKworb2xkPSIkKCRDUkNTVU0gPCAkVE1QRklMRSkiCisKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCituZXc9IiQoJENSQ1NVTSA8ICRUTVBGSUxFKSIKKworaWYgWyAiJHtvbGR9IiAhPSAiJHtuZXd9IiBdOyB0aGVuCisJZWNobyAiRVJST1I6IGNyYyBtaXNtYXRjaCEgICR7b2xkfSAke25ld30iID4+ICRPVVQKK2Vsc2UKKwllY2hvICJjcmMgZGlkIG5vdCBjaGFuZ2UuICAke29sZH0iID4+ICRPVVQKK2ZpCisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgb2xkIG5ldwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWJ1aWxkX2NzdW1fcm9vdGRpci9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGY1OGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvZXhwZWN0LjEKQEAgLTAsMCArMSwzMTEgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMiwgYmxvY2sgIzAsIG9mZnNldCAwOiBkaXJlY3RvcnkgaGFzIG5vIGNoZWNrc3VtLgorRml4PyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDIsIGJsb2NrICMwLCBvZmZzZXQgMDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK01pc3NpbmcgJy4nIGluIGRpcmVjdG9yeSBpbm9kZSAyLgorRml4PyB5ZXMKKworU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJy4nIGluID8/PyAoMikgdG8gMi4KK01pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgMi4KK0ZpeD8geWVzCisKK1NldHRpbmcgZmlsZXR5cGUgZm9yIGVudHJ5ICcuLicgaW4gPz8/ICgyKSB0byAyLgorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CisnLi4nIGluIC8gKDIpIGlzIDxUaGUgTlVMTCBpbm9kZT4gKDApLCBzaG91bGQgYmUgLyAoMikuCitGaXg/IHllcworCitVbmNvbm5lY3RlZCBkaXJlY3RvcnkgaW5vZGUgMTEgKC8/Pz8pCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAxMSByZWYgY291bnQgaXMgMywgc2hvdWxkIGJlIDIuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDEyCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxMworQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDEzIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTQKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxNCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDE1CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTUgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxNgorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDE2IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMTcKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxNyByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDE4CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTggcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxOQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDE5IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMjAKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAyMCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDIxCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMjEgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAyMgorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDIyIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMjMKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAyMyByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDI0CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMjQgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAyNQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDI1IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMjYKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAyNiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDI3CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMjcgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAyOAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDI4IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMjkKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAyOSByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDMwCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMzAgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAzMQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDMxIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMzIKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAzMiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDMzCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMzMgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAzNAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDM0IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMzUKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAzNSByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDM2CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMzYgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAzNworQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDM3IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgMzgKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAzOCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDM5CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMzkgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA0MAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDQwIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNDEKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA0MSByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDQyCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNDIgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA0MworQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDQzIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNDQKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA0NCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDQ1CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNDUgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA0NgorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDQ2IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNDcKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA0NyByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDQ4CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNDggcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA0OQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDQ5IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNTAKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA1MCByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDUxCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNTEgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA1MgorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDUyIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNTMKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA1MyByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDU0CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNTQgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA1NQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDU1IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNTYKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA1NiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDU3CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNTcgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA1OAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDU4IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNTkKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA1OSByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDYwCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNjAgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA2MQorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDYxIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNjIKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA2MiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDYzCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNjMgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSA2NAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDY0IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1VuYXR0YWNoZWQgemVyby1sZW5ndGggaW5vZGUgNjUuICBDbGVhcj8geWVzCisKK1VuYXR0YWNoZWQgaW5vZGUgNjYKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSA2NiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDY3CitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgNjcgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDY3LzUxMiBmaWxlcyAoMS41JSBub24tY29udGlndW91cyksIDExMjcvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlYnVpbGRfY3N1bV9yb290ZGlyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMzZjFiZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlYnVpbGRfY3N1bV9yb290ZGlyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogNjcvNTEyIGZpbGVzICgxLjUlIG5vbi1jb250aWd1b3VzKSwgMTEyNy8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWJ1aWxkX2NzdW1fcm9vdGRpci9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzJmZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVidWlsZF9jc3VtX3Jvb3RkaXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlYnVpbGRfY3N1bV9yb290ZGlyL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI0NmY0OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlYnVpbGRfY3N1bV9yb290ZGlyL25hbWUKQEAgLTAsMCArMSBAQAorZm9yY2UgZnNjayB0byByZWJ1aWxkIGEgY29ycnVwdGVkIHJvb3RkaXIgdy8gbWV0YWRhdGFfY3N1bQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjbmVjdF9iYWQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNuZWN0X2JhZC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmE4MWU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjbmVjdF9iYWQvZXhwZWN0LjEKQEAgLTAsMCArMSwzOCBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK2lfZmFkZHIgZm9yIGlub2RlIDE1ICgvdGVzdC9xdXV4KSBpcyAyMywgc2hvdWxkIGJlIHplcm8uCitDbGVhcj8geWVzCisKK2lfZGlyX2FjbCBmb3IgaW5vZGUgMTUgKC90ZXN0L3F1dXgpIGlzIDEyLCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworaV9maWxlX2FjbCBmb3IgaW5vZGUgMTMgKC90ZXN0Lz8/PykgaXMgMTIsIHNob3VsZCBiZSB6ZXJvLgorQ2xlYXI/IHllcworCitpX2ZhZGRyIGZvciBpbm9kZSAxMyAoL3Rlc3QvPz8/KSBpcyAxMiwgc2hvdWxkIGJlIHplcm8uCitDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorVW5jb25uZWN0ZWQgZGlyZWN0b3J5IGlub2RlIDEzICgvdGVzdC8/Pz8pCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAxMyByZWYgY291bnQgaXMgNCwgc2hvdWxkIGJlIDMuICBGaXg/IHllcworCitpX2ZpbGVfYWNsIGZvciBpbm9kZSAyOCAoLi4uKSBpcyA0Mjk0OTY3Mjk1LCBzaG91bGQgYmUgemVyby4KK0NsZWFyPyB5ZXMKKworSW5vZGUgMjggKC4uLikgaGFzIGludmFsaWQgbW9kZSAoMDE3Nzc3NykuCitDbGVhcj8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxOCwgY291bnRlZD0xNykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMTgsIGNvdW50ZWQ9MTcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI2LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlY25lY3RfYmFkL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjbmVjdF9iYWQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM2OGU3OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY25lY3RfYmFkL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTUvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNi8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNuZWN0X2JhZC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY25lY3RfYmFkL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZGNkZjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNuZWN0X2JhZC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNuZWN0X2JhZC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjbmVjdF9iYWQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzBjOGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjbmVjdF9iYWQvbmFtZQpAQCAtMCwwICsxIEBACitSZWNvbm5lY3RpbmcgYmFkIGlub2RlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzMxZDhiMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY29ubmVjdC9leHBlY3QuMQpAQCAtMCwwICsxLDI0IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1VuYXR0YWNoZWQgaW5vZGUgMTIKK0Nvbm5lY3QgdG8gL2xvc3QrZm91bmQ/IHllcworCitJbm9kZSAxMiByZWYgY291bnQgaXMgMiwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitVbmF0dGFjaGVkIGlub2RlIDEzCitDb25uZWN0IHRvIC9sb3N0K2ZvdW5kPyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDIsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworVW5hdHRhY2hlZCBpbm9kZSAxNAorQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDE0IHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNC8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI1LzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlY29ubmVjdC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY29ubmVjdC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODQ4ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVjb25uZWN0L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTQvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNS8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZiOTJjMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY29ubmVjdC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlY29ubmVjdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwOWMyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWNvbm5lY3QvbmFtZQpAQCAtMCwwICsxIEBACitzaW1wbGUgZGlzY29ubmVjdGVkIGZpbGUgaW5vZGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNzY3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTAgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgM0E6IE9wdGltaXppbmcgZGlyZWN0b3JpZXMKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEwNS8yMDQ4IGZpbGVzICgyLjklIG5vbi1jb250aWd1b3VzKSwgMzM2LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNzhmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTA1LzIwNDggZmlsZXMgKDMuOCUgbm9uLWNvbnRpZ3VvdXMpLCAzMzYvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVoYXNoX2Rpci9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzNmRjZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVoYXNoX2Rpci9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVoYXNoX2Rpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3YTg2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZWhhc2hfZGlyL25hbWUKQEAgLTAsMCArMSBAQAorb3B0aW1pemUgaHRyZWUgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfcmVoYXNoX2Rpci9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRkY2I3NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3JlaGFzaF9kaXIvc2NyaXB0CkBAIC0wLDAgKzEsMyBAQAorRlNDS19PUFQ9LXlmRAorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Jlc2l6ZV9pbm9kZS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZXNpemVfaW5vZGUvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNTdlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZXNpemVfaW5vZGUvZXhwZWN0CkBAIC0wLDAgKzEsMTU5IEBACitta2UyZnMgLUYgLU8gcmVzaXplX2lub2RlIC1vIExpbnV4IC1iIDEwMjQgLWcgMTAyNCB0ZXN0LmltZyAxNjM4NAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDE2Mzg0IDFrIGJsb2NrcyBhbmQgNDA5NiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkxMDI1LCAzMDczLCA1MTIxLCA3MTY5LCA5MjE3CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNDA5NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxMDcvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorZGVidWdmcyAtUiAnJ3NldF9pbm9kZV9maWVsZCA8Nz4gYmxvY2tbMl0gNDInJyAtdyB0ZXN0LmltZworRXhpdCBzdGF0dXMgaXMgMAorUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIFJlY3JlYXRlPyB5ZXMKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzE3LCBjb3VudGVkPTcxOCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMTQyNzYsIGNvdW50ZWQ9MTQyNzcpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEwNy8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzQwOTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMTA3LzE2Mzg0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKK2RlYnVnZnMgLVIgJydjbHJpIDw3PicnIC13IHRlc3QuaW1nCitFeGl0IHN0YXR1cyBpcyAwCitSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgUmVjcmVhdGU/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3MTcsIGNvdW50ZWQ9NzE4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgxNDI3NiwgY291bnRlZD0xNDI3NykuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzQwOTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMTA3LzE2Mzg0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNDA5NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxMDcvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorZGVidWdmcyAtUiAnJ3NldF9pbm9kZV9maWVsZCA8Nz4gYm1hcFs1MjRdIDU3JycgLXcgdGVzdC5pbWcKK0V4aXQgc3RhdHVzIGlzIDAKK1Jlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICBSZWNyZWF0ZT8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDcxNywgY291bnRlZD03MTgpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDE0Mjc2LCBjb3VudGVkPTE0Mjc3KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvNDA5NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIxMDcvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEwNy8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCitkZWJ1Z2ZzIC1SICcnc2V0X3N1cGVyX3ZhbHVlIHJlc2VydmVkX2dkdF9ibG9ja3MgMTU2NzknJyAtdyB0ZXN0LmltZworRXhpdCBzdGF0dXMgaXMgMAorZXh0MmZzX2NoZWNrX2Rlc2M6IENvcnJ1cHQgZ3JvdXAgZGVzY3JpcHRvcjogYmFkIGJsb2NrIGZvciBibG9jayBiaXRtYXAKKy4uL2UyZnNjay9lMmZzY2s6IEdyb3VwIGRlc2NyaXB0b3JzIGxvb2sgYmFkLi4uIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEwNy8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCitkZWJ1Z2ZzIC1SICcnc2V0X3N1cGVyX3ZhbHVlIHJlc2VydmVkX2dkdF9ibG9ja3MgMzInJyAtdyB0ZXN0LmltZworRXhpdCBzdGF0dXMgaXMgMAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogIC0oMzUtLTI1OCkgLSgxMDU5LS0xMjgyKSAtKDMxMDctLTMzMzApIC0oNTE1NS0tNTM3OCkgLSg3MjAzLS03NDI2KSAtKDkyNTEtLTk0NzQpCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDcxOCwgY291bnRlZD05NDIpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMxICg3MzIsIGNvdW50ZWQ9OTU2KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMyAoNzMyLCBjb3VudGVkPTk1NikuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzUgKDczMiwgY291bnRlZD05NTYpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICM3ICg3MzIsIGNvdW50ZWQ9OTU2KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjOSAoNzMyLCBjb3VudGVkPTk1NikuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMTQyNzcsIGNvdW50ZWQ9MTU2MjEpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNzYzLzE2Mzg0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNDA5NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDc2My8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Jlc2l6ZV9pbm9kZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZXNpemVfaW5vZGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5MDg3MWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9yZXNpemVfaW5vZGUvc2NyaXB0CkBAIC0wLDAgKzEsMTQzIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJlMmZzY2sgd2l0aCByZXNpemVfaW5vZGUiCitGU0NLX09QVD0teWYKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1GIC1PIHJlc2l6ZV9pbm9kZSAtbyBMaW51eCAtYiAxMDI0IC1nIDEwMjQgdGVzdC5pbWcgMTYzODQgPiAkT1VUCiskTUtFMkZTIC1GIC1PIHJlc2l6ZV9pbm9kZSAtbyBMaW51eCAtYiAxMDI0IC1nIDEwMjQgJFRNUEZJTEUgMTYzODQgMj4mMSB8CisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiA+PiAkT1VUCisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA+PiAkT1VUCisKK2VjaG8gIiAiID4+ICRPVVQKK2VjaG8gImRlYnVnZnMgLVIgJydzZXRfaW5vZGVfZmllbGQgPDc+IGJsb2NrWzJdIDQyJycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJzZXRfaW5vZGVfZmllbGQgPDc+IGJsb2NrWzJdIDQyIiAtdyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tID4+ICRPVVQKKworZWNobyAiICIgPj4gJE9VVAorZWNobyAiZGVidWdmcyAtUiAnJ2NscmkgPDc+JycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJjbHJpIDw3PiIgLXcgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSA+PiAkT1VUCisKK2VjaG8gIiAiID4+ICRPVVQKK2VjaG8gImRlYnVnZnMgLVIgJydzZXRfaW5vZGVfZmllbGQgPDc+IGJtYXBbNTI0XSA1NycnIC13IHRlc3QuaW1nIiA+ICRPVVQubmV3CiskREVCVUdGUyAtUiAic2V0X2lub2RlX2ZpZWxkIDw3PiBibWFwWzUyNF0gNTciIC13ICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gPj4gJE9VVAorCitlY2hvICIgIiA+PiAkT1VUCitlY2hvICJkZWJ1Z2ZzIC1SICcnc2V0X3N1cGVyX3ZhbHVlIHJlc2VydmVkX2dkdF9ibG9ja3MgMTU2NzknJyAtdyB0ZXN0LmltZyIgPiAkT1VULm5ldworJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSByZXNlcnZlZF9nZHRfYmxvY2tzIDE1Njc5IiAtdyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tID4+ICRPVVQKKworZWNobyAiICIgPj4gJE9VVAorZWNobyAiZGVidWdmcyAtUiAnJ3NldF9zdXBlcl92YWx1ZSByZXNlcnZlZF9nZHRfYmxvY2tzIDMyJycgLXcgdGVzdC5pbWciID4gJE9VVC5uZXcKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgcmVzZXJ2ZWRfZ2R0X2Jsb2NrcyAzMiIgLXcgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc2FsdmFnZV9kaXIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYWx2YWdlX2Rpci9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjg2Mzg0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2FsdmFnZV9kaXIvZXhwZWN0LjEKQEAgLTAsMCArMSwxOSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxMywgYmxvY2sgIzAsIG9mZnNldCA0ODogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK0RpcmVjdG9yeSBpbm9kZSAxMiwgYmxvY2sgIzEsIG9mZnNldCAwOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworU2V0dGluZyBmaWxldHlwZSBmb3IgZW50cnkgJ2MnIGluIC90ZXN0ICgxMikgdG8gMS4KK0RpcmVjdG9yeSBpbm9kZSAxMiwgYmxvY2sgIzEsIG9mZnNldCAxMDE2OiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOS82NCBmaWxlcyAoMTAuNSUgbm9uLWNvbnRpZ3VvdXMpLCAzMC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zYWx2YWdlX2Rpci9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3NhbHZhZ2VfZGlyL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiNzdjZDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYWx2YWdlX2Rpci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE5LzY0IGZpbGVzICgxMC41JSBub24tY29udGlndW91cyksIDMwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NhbHZhZ2VfZGlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2FsdmFnZV9kaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBhZGRlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3NhbHZhZ2VfZGlyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NhbHZhZ2VfZGlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYWx2YWdlX2Rpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NmY0M2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYWx2YWdlX2Rpci9uYW1lCkBAIC0wLDAgKzEgQEAKK3NhbHZhZ2UgY29ycnVwdGVkIGRpcmVjdG9yaWVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zYl9leHRyYV9pc2l6ZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3NiX2V4dHJhX2lzaXplL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZTIzOWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYl9leHRyYV9pc2l6ZS9leHBlY3QuMQpAQCAtMCwwICsxLDEzIEBACitCYWQgcmVxdWlyZWQgZXh0cmEgaXNpemUgaW4gc3VwZXJibG9jayAoMSkuICBGaXg/IHllcworCitCYWQgZGVzaXJlZCBleHRyYSBpc2l6ZSBpbiBzdXBlcmJsb2NrICgxMDI0KS4gIEZpeD8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzMyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjgvMjAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc2JfZXh0cmFfaXNpemUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYl9leHRyYV9pc2l6ZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2UwZTVmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2JfZXh0cmFfaXNpemUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI4LzIwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NiX2V4dHJhX2lzaXplL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2JfZXh0cmFfaXNpemUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdjYjgyNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3NiX2V4dHJhX2lzaXplL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NiX2V4dHJhX2lzaXplL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYl9leHRyYV9pc2l6ZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YmFiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zYl9leHRyYV9pc2l6ZS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NoZWNrIGludmFsaWQgZXh0cmFfaXNpemUgZmllbGRzIGluIHN1cGVyYmxvY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NlbGludXgvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZmNkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2V4cGVjdC4xCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTYvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS85NiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NlbGludXgvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZmNkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTYvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS85NiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NlbGludXgvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYTY3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zZWxpbnV4L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3NlbGludXgvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3NlbGludXgvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Mjg3NWVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2VsaW51eC9uYW1lCkBAIC0wLDAgKzEgQEAKK1NFIExpbnV4IGdlbmVyYXRlZCBzeW1saW5rcyB3aXRoIEVBIGRhdGEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Nob3J0X2VuY3J5cHRlZF9kaXJlbnQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjNjQ5MjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L2V4cGVjdC4xCkBAIC0wLDAgKzEsMTcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbmNyeXB0ZWQgZW50cnkgJ21vdGQnIGluIC9nZXRfc2hvcnR5ICgxMikgaXMgdG9vIHNob3J0LgorQ2xlYXI/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworVW5hdHRhY2hlZCBpbm9kZSAxMworQ29ubmVjdCB0byAvbG9zdCtmb3VuZD8geWVzCisKK0lub2RlIDEzIHJlZiBjb3VudCBpcyAyLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMy8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Nob3J0X2VuY3J5cHRlZF9kaXJlbnQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNmM2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTMvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMy8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2hvcnRfZW5jcnlwdGVkX2RpcmVudC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzViZmIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc2hvcnRfZW5jcnlwdGVkX2RpcmVudC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zaG9ydF9lbmNyeXB0ZWRfZGlyZW50L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1MDI4YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3Nob3J0X2VuY3J5cHRlZF9kaXJlbnQvbmFtZQpAQCAtMCwwICsxIEBACitzaG9ydCBlbmNyeXB0ZWQgZGlyZWN0b3J5IGVudHJ5CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zcGVjaWFsX2VhL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA3NmZlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9leHBlY3QuMQpAQCAtMCwwICsxLDExIEBACitCYWNraW5nIHVwIGpvdXJuYWwgaW5vZGUgYmxvY2sgaW5mb3JtYXRpb24uCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE3LzEwMjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMTgwLzQwOTYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zcGVjaWFsX2VhL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDQ3Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zcGVjaWFsX2VhL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zcGVjaWFsX2VhL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRmYjJmNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3NwZWNpYWxfZWEvbmFtZQpAQCAtMCwwICsxIEBACitTcGVjaWFsIGZpbGVzIHdpdGggZXh0ZW5kZWQgYXR0cmlidXRlcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zcGVjaWFsX2VhL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWIyYjljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3BlY2lhbF9lYS9zY3JpcHQKQEAgLTAsMCArMSwyIEBACitPTkVfUEFTU19PTkxZPSJ0cnVlIgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3N1bW1hcnlfY291bnRzL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYjE0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9leHBlY3QuMQpAQCAtMCwwICsxLDE5IEBACit0ZXN0X2ZpbGVzeXMgY29udGFpbnMgYSBmaWxlIHN5c3RlbSB3aXRoIGVycm9ycywgY2hlY2sgZm9yY2VkLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMjAwLCBjb3VudGVkPTgwKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMjUwLCBjb3VudGVkPTUpLgorRml4PyB5ZXMKKworRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxNTAsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjAvMTAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VtbWFyeV9jb3VudHMvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGJmZjYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VtbWFyeV9jb3VudHMvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3N1bW1hcnlfY291bnRzL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VtbWFyeV9jb3VudHMvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDUyN2U5YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3N1bW1hcnlfY291bnRzL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3N1bW1hcnlfY291bnRzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZDEwMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9uYW1lCkBAIC0wLDAgKzEgQEAKK2luY29ycmVjdCBpbm9kZS9ibG9jayBmcmVlIGNvdW50cwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VtbWFyeV9jb3VudHMvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VtbWFyeV9jb3VudHMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNDI1ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdW1tYXJ5X2NvdW50cy9zY3JpcHQKQEAgLTAsMCArMSw0IEBACitGU0NLX09QVD0teQorU0VDT05EX0ZTQ0tfT1BUPS15ZgorCisuICRjbWRfZGlyL3J1bl9lMmZzY2sKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3N1cGVyX2JhZF9jc3VtL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVjZWQ1YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3N1cGVyX2JhZF9jc3VtL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTMgQEAKK2V4dDJmc19vcGVuMjogU3VwZXJibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBzdXBlcmJsb2NrCisuLi9lMmZzY2svZTJmc2NrOiBTdXBlcmJsb2NrIGludmFsaWQsIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiBHcm91cCAxIGlub2RlIGJpdG1hcCBkb2VzIG5vdCBtYXRjaCBjaGVja3N1bS4KK0ZJWEVELgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xMDI0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTU1Ny8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3N1cGVyX2JhZF9jc3VtL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQyMDkxOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3N1cGVyX2JhZF9jc3VtL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTAyNCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE1NTcvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zdXBlcl9iYWRfY3N1bS9pbWFnZS5iejIgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdXBlcl9iYWRfY3N1bS9pbWFnZS5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q4MGQ0YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3N1cGVyX2JhZF9jc3VtL2ltYWdlLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl9zdXBlcl9iYWRfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDU1NjJmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACitiYWQgY3N1bSBpbiBzdXBlcmJsb2NrIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfc3VwZXJfYmFkX2NzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNmZDQxODkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl9zdXBlcl9iYWRfY3N1bS9zY3JpcHQKQEAgLTAsMCArMSwzMyBAQAorIyEvYmluL2Jhc2gKKworRlNDS19PUFQ9LWZ5CitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuYnoyCisKK2J6aXAyIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKyNlMmxhYmVsICRUTVBGSUxFIHRlc3RfZmlsZXN5cworCisjIFJ1biBmc2NrIHRvIGZpeCB0aGluZ3M/CitFWFAxPSR0ZXN0X2Rpci9leHBlY3QuMQorT1VUMT0kdGVzdF9uYW1lLjEubG9nCitybSAtcmYgJHRlc3RfbmFtZS5mYWlsZWQgJHRlc3RfbmFtZS5vaworCiskRlNDSyAkRlNDS19PUFQgJFRNUEZJTEUgMj4mMSB8IGhlYWQgLW4gMTAwMCB8IHRhaWwgLW4gKzIgPiAkT1VUMQorZWNobyAiRXhpdCBzdGF0dXMgaXMgJD8iID4+ICRPVVQxCisKKyMgUnVuIGEgc2Vjb25kIHRpbWUKK0VYUDI9JHRlc3RfZGlyL2V4cGVjdC4yCitPVVQyPSR0ZXN0X25hbWUuMi5sb2cKKworJEZTQ0sgJEZTQ0tfT1BUICRUTVBGSUxFIDI+JjEgfCBoZWFkIC1uIDEwMDAgfCB0YWlsIC1uICsyID4gJE9VVDIKK2VjaG8gIkV4aXQgc3RhdHVzIGlzICQ/IiA+PiAkT1VUMgorCisjIEZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZAoraWYgY21wIC1zICRFWFAxICRPVVQxICYmIGNtcCAtcyAkRVhQMiAkT1VUMjsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmIC11ICRFWFAxICRPVVQxID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJZGlmZiAtdSAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKK3Vuc2V0IEVYUDEgT1VUMSBFWFAyIE9VVDIgRlNDS19PUFQgSU1BR0UKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Rvb2JpZ19leHRlbnRfZGlyL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdG9vYmlnX2V4dGVudF9kaXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEwY2EzZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3Rvb2JpZ19leHRlbnRfZGlyL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTIgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaXMgdG9vIGJpZy4gIFRydW5jYXRlPyB5ZXMKKworQmxvY2sgIzQyOTQ5NjcyODEgKDkwKSBjYXVzZXMgZGlyZWN0b3J5IHRvIGJlIHRvbyBiaWcuICBDTEVBUkVELgorUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzU2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjgvNDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdG9vYmlnX2V4dGVudF9kaXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl90b29iaWdfZXh0ZW50X2Rpci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDI1NjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdG9vYmlnX2V4dGVudF9kaXIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi81NiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI4LzQwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Rvb2JpZ19leHRlbnRfZGlyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdG9vYmlnX2V4dGVudF9kaXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyZjY1YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3Rvb2JpZ19leHRlbnRfZGlyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Rvb2JpZ19leHRlbnRfZGlyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl90b29iaWdfZXh0ZW50X2Rpci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NDUzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl90b29iaWdfZXh0ZW50X2Rpci9uYW1lCkBAIC0wLDAgKzEgQEAKK2RpcmVjdG9yeSB3aXRoIGEgdmVyeSBsYXJnZSBsYmxrIGluIGV4dGVudApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdHJ1bmNfZGlyZW50X2hlYWRlci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3RydW5jX2RpcmVudF9oZWFkZXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNjZTQ3MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3RydW5jX2RpcmVudF9oZWFkZXIvZXhwZWN0LjEKQEAgLTAsMCArMSwxNSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK0RpcmVjdG9yeSBpbm9kZSAxNSwgYmxvY2sgIzAsIG9mZnNldCA0MDkyOiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDEzLCBibG9jayAjMSwgb2Zmc2V0IDI4OiBkaXJlY3RvcnkgY29ycnVwdGVkCitTYWx2YWdlPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAzMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl90cnVuY19kaXJlbnRfaGVhZGVyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdHJ1bmNfZGlyZW50X2hlYWRlci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjgxYzlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdHJ1bmNfZGlyZW50X2hlYWRlci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDMyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3RydW5jX2RpcmVudF9oZWFkZXIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl90cnVuY19kaXJlbnRfaGVhZGVyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNTliZjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl90cnVuY19kaXJlbnRfaGVhZGVyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3RydW5jX2RpcmVudF9oZWFkZXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3RydW5jX2RpcmVudF9oZWFkZXIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjQ0ZGJmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdHJ1bmNfZGlyZW50X2hlYWRlci9uYW1lCkBAIC0wLDAgKzEgQEAKK25vIHNwYWNlIGZvciBkaXJlbnQgaGVhZGVyIGF0IGVuZCBvZiBidWYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2NhdC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwYTVjZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvZXhwZWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfY2F0L2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYWU2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfY2F0L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmI1Njc0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2NhdC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NhdCBhIGZpbGUgd2l0aCB1bmluaXQgYmxvY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfY2F0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9jYXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg4Nzc1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfY2F0L3NjcmlwdApAQCAtMCwwICsxLDM3IEBACisjIS9iaW4vYmFzaAorCitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorRlNDS19PUFQ9LWZ5CitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisjZTJsYWJlbCAkVE1QRklMRSB0ZXN0X2ZpbGVzeXMKKworIyBSdW4gZnNjayB0byBmaXggdGhpbmdzPworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLXJmICR0ZXN0X25hbWUuZmFpbGVkICR0ZXN0X25hbWUub2sKKworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VUCitlY2hvICJFeGl0IHN0YXR1cyBpcyAkPyIgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIGNhdCB1bmluaXQgZmlsZSIgPj4gJE9VVAorZWNobyAiZXggL2EiID4gJFRNUEZJTEUuY21kCitlY2hvICJjYXQgL2EiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCitlY2hvID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldyAkVE1QRklMRSAkVE1QRklMRS5jbWQKKworIyBGaWd1cmUgb3V0IHdoYXQgaGFwcGVuZWQKK2lmIGNtcCAtcyAkRVhQICRPVVQ7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAtdSAkRVhQICRPVVQgPj4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCit1bnNldCBFWFAgT1VUIEZTQ0tfT1BUIElNQUdFCitlbHNlICNpZiB0ZXN0IC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorICAgICAgICBlY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2Rpci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9kaXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwNjVmMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9kaXIvZXhwZWN0LjEKQEAgLTAsMCArMSwyNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitEaXJlY3RvcnkgaW5vZGUgMTIgaGFzIGV4dGVudCBtYXJrZWQgdW5pbml0aWFsaXplZCBhdCBibG9jayAwLiAgRml4PyB5ZXMKKworRGlyZWN0b3J5IGlub2RlIDE0IGhhcyBleHRlbnQgbWFya2VkIHVuaW5pdGlhbGl6ZWQgYXQgYmxvY2sgMC4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRGlyZWN0b3J5IGlub2RlIDE0LCBibG9jayAjMCwgb2Zmc2V0IDA6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitNaXNzaW5nICcuJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTQuCitGaXg/IHllcworCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnLicgaW4gPz8/ICgxNCkgdG8gMi4KK01pc3NpbmcgJy4uJyBpbiBkaXJlY3RvcnkgaW5vZGUgMTQuCitGaXg/IHllcworCitTZXR0aW5nIGZpbGV0eXBlIGZvciBlbnRyeSAnLi4nIGluID8/PyAoMTQpIHRvIDIuCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKKycuLicgaW4gL2FiYyAoMTQpIGlzIDxUaGUgTlVMTCBpbm9kZT4gKDApLCBzaG91bGQgYmUgLyAoMikuCitGaXg/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNC8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMC81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZGlyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2Rpci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjI4ZjQzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2Rpci9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDE0LzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwLzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9kaXIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZGlyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOTEzMWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZGlyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9kaXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9kaXIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kN2Y1YmVlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2Rpci9uYW1lCkBAIC0wLDAgKzEgQEAKK2ZpeCB1bmluaXQgZmxhZyBvbiBkaXJlY3RvcnkgZXh0ZW50cyBhbmQgY2hlY2sgdGhlIGRpciBibG9ja3MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MjE1OWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mL2V4cGVjdC4xCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTAyNCBmaWxlcyAoMTYuNyUgbm9uLWNvbnRpZ3VvdXMpLCAxMjI3LzQwOTYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZi9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjIxNTljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZi9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEwMjQgZmlsZXMgKDE2LjclIG5vbi1jb250aWd1b3VzKSwgMTIyNy80MDk2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI2OTE1OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMGM2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mL25hbWUKQEAgLTAsMCArMSBAQAorZmFsbG9jYXRlZCBleHRlbnRzIGFmdGVyIGlfc2l6ZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZjIvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mMi9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjgyNDhlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZjIvZXhwZWN0LjEKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xNiBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDcwLzEwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YyL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZjIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI4MjQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YyL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCA3MC8xMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mMi9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9leHRfcGFzdF9lb2YyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MzllNDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mMi9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfZXh0X3Bhc3RfZW9mMi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZjIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTJhMGY1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2V4dF9wYXN0X2VvZjIvbmFtZQpAQCAtMCwwICsxIEBACitmYWxsb2NhdGVkIGV4dGVudHMgYWZ0ZXIgbm9uemVybyBpX3NpemUgYW5kIHRvdGFsIGV4dGVudHMgPiA0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfbGFzdF91bmluaXQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfbGFzdF91bmluaXQvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ4YmQyOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9leHBlY3QuMQpAQCAtMCwwICsxLDkgQEAKK0xhc3QgZ3JvdXAgYmxvY2sgYml0bWFwIHVuaW5pdGlhbGl6ZWQuICBGaXg/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEwNS8xMDAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTVlNWVkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2xhc3RfdW5pbml0L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMDUvMTAwMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfbGFzdF91bmluaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOTNlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bmluaXRfbGFzdF91bmluaXQvbmFtZQpAQCAtMCwwICsxLDIgQEAKK2xhc3QgZ3JvdXAgaGFzIEJMT0NLX1VOSU5JVCBzZXQKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5pbml0X2xhc3RfdW5pbml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc2Yzk3OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VuaW5pdF9sYXN0X3VuaW5pdC9zY3JpcHQKQEAgLTAsMCArMSwyNiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworU0tJUF9HVU5aSVA9InRydWUiCisKK3RvdWNoICRUTVBGSUxFCiskTUtFMkZTIC1OIDMyIC1GIC1vIExpbnV4IC1PIHVuaW5pdF9iZyAtYiAxMDI0ICRUTVBGSUxFIDEwMDAwID4gL2Rldi9udWxsIDI+JjEgCiskREVCVUdGUyAtdyAkVE1QRklMRSA8PCBFT0YgPiAvZGV2L251bGwgMj4mMQorc2V0X2N1cnJlbnRfdGltZSAyMDA3MDQxMDIxMDAwMAorc2V0X3N1cGVyX3ZhbHVlIGxhc3RjaGVjayAwCitzZXRfc3VwZXJfdmFsdWUgaGFzaF9zZWVkIG51bGwKK3NldF9zdXBlcl92YWx1ZSBta2ZzX3RpbWUgMAorc2V0X2JnIDEgZmxhZ3MgMHg3CitzZXRfYmcgMSBjaGVja3N1bSBjYWxjCitxCitFT0YKKworRTJGU0NLX1RJTUU9MjAwNzA0MTAyMTAwCitleHBvcnQgRTJGU0NLX1RJTUUKKworLiAkY21kX2Rpci9ydW5fZTJmc2NrCisKK3Vuc2V0IEUyRlNDS19USU1FCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaSAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDU4OGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEgQEAKK0FkZGluZyBkaXJoYXNoIGhpbnQgdG8gZmlsZXN5c3RlbS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEyOTQvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTRjYzI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEyOTQvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmFiNTAyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5YzljMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3Vuc29ydGVkX0VBcy9uYW1lCkBAIC0wLDAgKzEgQEAKK3Vuc29ydGVkIEVBcyBpbiBpbm9kZSBzaG91bGQgbm90IGJlIGRlbGV0ZWQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VudXNlZF9pdGFibGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZGE5ODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjggQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFbnRyeSAnZm9vJyBpbiAvICgyKSByZWZlcmVuY2VzIGlub2RlIDY1IGZvdW5kIGluIGdyb3VwIDEncyB1bnVzZWQgaW5vZGVzIGFyZWEuCitGaXg/IHllcworCitFbnRyeSAnMScgaW4gLyAoMikgcmVmZXJlbmNlcyBpbm9kZSAxMiBmb3VuZCBpbiBncm91cCAwJ3MgdW51c2VkIGlub2RlcyBhcmVhLgorRml4PyB5ZXMKKworUmVzdGFydGluZyBlMmZzY2sgZnJvbSB0aGUgYmVnaW5uaW5nLi4uCitPbmUgb3IgbW9yZSBibG9jayBncm91cCBkZXNjcmlwdG9yIGNoZWNrc3VtcyBhcmUgaW52YWxpZC4gIEZpeD8geWVzCisKK0dyb3VwIGRlc2NyaXB0b3IgMCBjaGVja3N1bSBpcyAweDI4OWQsIHNob3VsZCBiZSAweDc4OGEuICBGSVhFRC4KK0dyb3VwIGRlc2NyaXB0b3IgMSBjaGVja3N1bSBpcyAweGZhYWIsIHNob3VsZCBiZSAweDNhOWEuICBGSVhFRC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDUzLCBjb3VudGVkPTUxKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMSAoNjQsIGNvdW50ZWQ9NTgpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxOS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNjUvMTAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3VudXNlZF9pdGFibGUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OWQzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTkvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTY1LzEwMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW51c2VkX2l0YWJsZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTkzZTk4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdW51c2VkX2l0YWJsZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl91bnVzZWRfaXRhYmxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyOTEzNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3VudXNlZF9pdGFibGUvbmFtZQpAQCAtMCwwICsxIEBACitEb24ndCBtb3ZlIGZpbGVzIHRvIGxvc3QrZm91bmQgZm9yIGJnX3VudXNlZF9pdGFibGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ZhbGlkX2VhX2luX2lub2RlL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdmFsaWRfZWFfaW5faW5vZGUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRkNmRkMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ZhbGlkX2VhX2luX2lub2RlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMjIvMjA0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwNzIvODE5MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ZhbGlkX2VhX2luX2lub2RlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdmFsaWRfZWFfaW5faW5vZGUvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQwZjc4MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3ZhbGlkX2VhX2luX2lub2RlL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3ZhbGlkX2VhX2luX2lub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl92YWxpZF9lYV9pbl9pbm9kZS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMDI4NzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl92YWxpZF9lYV9pbl9pbm9kZS9uYW1lCkBAIC0wLDAgKzEgQEAKK3ZhbGlkIGVhLWluLWlub2RlIGV4YW1wbGFycwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfdmFsaWRfZWFfaW5faW5vZGUvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfdmFsaWRfZWFfaW5faW5vZGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYjJiOWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl92YWxpZF9lYV9pbl9pbm9kZS9zY3JpcHQKQEAgLTAsMCArMSwyIEBACitPTkVfUEFTU19PTkxZPSJ0cnVlIgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV9ub19leHRyYV9pc2l6ZS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX25vX2V4dHJhX2lzaXplL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZTc0MzgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV9ub19leHRyYV9pc2l6ZS9leHBlY3QuMQpAQCAtMCwwICsxLDEyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMCwgb2Zmc2V0IDQ6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE3LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX25vX2V4dHJhX2lzaXplL2V4cGVjdC4yIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfbm9fZXh0cmFfaXNpemUvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I2MDczZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX25vX2V4dHJhX2lzaXplL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfbm9fZXh0cmFfaXNpemUvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV9ub19leHRyYV9pc2l6ZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjhkYWZmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfbm9fZXh0cmFfaXNpemUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfbm9fZXh0cmFfaXNpemUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX25vX2V4dHJhX2lzaXplL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAwZTM2NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX25vX2V4dHJhX2lzaXplL25hbWUKQEAgLTAsMCArMSBAQAord3JpdGUgRUEgd2hlbiBpX2V4dHJhX3NpemUgaXMgemVybwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYTg2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29iaWdfZXh0cmFfaXNpemUvZXhwZWN0LjEKQEAgLTAsMCArMSwxNSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgYSBleHRyYSBzaXplICgxMjYpIHdoaWNoIGlzIGludmFsaWQKK0ZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRGlyZWN0b3J5IGlub2RlIDEyLCBibG9jayAjMCwgb2Zmc2V0IDQ6IGRpcmVjdG9yeSBjb3JydXB0ZWQKK1NhbHZhZ2U/IHllcworCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE3LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX3Rvb2JpZ19leHRyYV9pc2l6ZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX3Rvb2JpZ19leHRyYV9pc2l6ZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjYwNzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTkyNGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29iaWdfZXh0cmFfaXNpemUvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29iaWdfZXh0cmFfaXNpemUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWVkNzE4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vYmlnX2V4dHJhX2lzaXplL25hbWUKQEAgLTAsMCArMSBAQAord3JpdGUgRUEgd2hlbiBpX2V4dHJhX3NpemUgaXMgdG9vIGJpZyBmb3IgRUEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX3Rvb3NtYWxsX2V4dHJhX2lzaXplL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vc21hbGxfZXh0cmFfaXNpemUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVjZmM5ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX3Rvb3NtYWxsX2V4dHJhX2lzaXplL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTUgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaGFzIGEgZXh0cmEgc2l6ZSAoMSkgd2hpY2ggaXMgaW52YWxpZAorRml4PyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitEaXJlY3RvcnkgaW5vZGUgMTIsIGJsb2NrICMwLCBvZmZzZXQgNDogZGlyZWN0b3J5IGNvcnJ1cHRlZAorU2FsdmFnZT8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vc21hbGxfZXh0cmFfaXNpemUvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29zbWFsbF9leHRyYV9pc2l6ZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjYwNzNlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vc21hbGxfZXh0cmFfaXNpemUvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNy81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29zbWFsbF9leHRyYV9pc2l6ZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3dyaXRlX2VhX3Rvb3NtYWxsX2V4dHJhX2lzaXplL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YTAxNDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29zbWFsbF9leHRyYV9pc2l6ZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl93cml0ZV9lYV90b29zbWFsbF9leHRyYV9pc2l6ZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vc21hbGxfZXh0cmFfaXNpemUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MThjMTJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2Zfd3JpdGVfZWFfdG9vc21hbGxfZXh0cmFfaXNpemUvbmFtZQpAQCAtMCwwICsxIEBACit3cml0ZSBFQSB3aGVuIGlfZXh0cmFfc2l6ZSBpcyB0b28gc21hbGwgdG8gbWFrZSBzZW5zZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3llcy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzczZTYyMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3llcy9leHBlY3QKQEAgLTAsMCArMSw0NSBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OSwgbGVuIDEpCitDbGVhcjx5Pj8geWVzCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTMgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeDx5Pj8geWVzCitJbm9kZSAxMyBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDg4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTQgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeDx5Pj8geWVzCitJbm9kZSAxNCBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAzMDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgNzc3Nzc3Nzc3Nzc3LCBsZW4gMzAwKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA3Nzc3Nzc3Nzc3LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDE0LCBpX2Jsb2NrcyBpcyA1MjU3NDY5NDc0ODExMywgc2hvdWxkIGJlIDAuICBGaXg8eT4/IHllcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDEyICgvYSkgaXMgaW52YWxpZCAoOTk5OTk5KS4KK0NsZWFyICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpIDx5Pj8geWVzCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDEzICgvYikgaXMgaW52YWxpZCAoMjk4OTU0Mjk2KS4KK0NsZWFyICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpIDx5Pj8geWVzCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDE0ICgvYykgaXMgaW52YWxpZCAoMzg4Njk3MjAxKS4KK0NsZWFyICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpIDx5Pj8geWVzCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworSW5vZGUgMTIgcmVmIGNvdW50IGlzIDM0NDYzLCBzaG91bGQgYmUgMS4gIEZpeCAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSA8eT4/IHllcworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDk5OTksIHNob3VsZCBiZSAxLiAgRml4PHk+PyB5ZXMKK0lub2RlIDE0IHJlZiBjb3VudCBpcyAxMjI0MSwgc2hvdWxkIGJlIDEuICBGaXg8eT4/IHllcworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjAyIC0zODEgLTQ1NworRml4PHk+PyB5ZXMKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMCwgY291bnRlZD00OTQpLgorRml4PHk+PyB5ZXMKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNDI5NDk2NzI5MywgY291bnRlZD0xMTQpLgorRml4PHk+PyB5ZXMKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3llcy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxMTRjNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3llcy9zY3JpcHQKQEAgLTAsMCArMSwyNyBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJmc2NrIHdpdGggcmVwZWF0ZWQgeWVzIgorRlNDS19PUFQ9LWYKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKKworZ3VuemlwIDwgJHRlc3RfZGlyLy4uL2ZfeWVzYWxsL2ltYWdlLmd6ID4gJFRNUEZJTEUKKworcm0gLXJmICRPVVQKK2VjaG8gInl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5IiB8IEUyRlNDS19GT1JDRV9JTlRFUkFDVElWRT15ICRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiB0bXBfZXhwZWN0CitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl95ZXNhbGwvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzYWxsL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmQzYzJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzYWxsL2V4cGVjdApAQCAtMCwwICsxLDYyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBhbiBpbnZhbGlkIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgOTk5OTk5OTk5LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMgdG8gYWxsCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI/IHllcworCitJbm9kZSAxMyBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PyB5ZXMKKworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMSwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODg4LCBsZW4gMSkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI/IHllcworCitJbm9kZSAxNCBpcyBpbiB1c2UsIGJ1dCBoYXMgZHRpbWUgc2V0LiAgRml4PyB5ZXMKKworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMzAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDc3Nzc3Nzc3Nzc3NywgbGVuIDMwMCkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA3Nzc3Nzc3Nzc3LCBsZW4gMSkKK0NsZWFyPyB5ZXMKKworSW5vZGUgMTQsIGlfYmxvY2tzIGlzIDUyNTc0Njk0NzQ4MTEzLCBzaG91bGQgYmUgMC4gIEZpeD8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAxMiAoL2EpIGlzIGludmFsaWQgKDk5OTk5OSkuCitDbGVhcj8geWVzCisKK0V4dGVuZGVkIGF0dHJpYnV0ZSBibG9jayBmb3IgaW5vZGUgMTMgKC9iKSBpcyBpbnZhbGlkICgyOTg5NTQyOTYpLgorQ2xlYXI/IHllcworCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDE0ICgvYykgaXMgaW52YWxpZCAoMzg4Njk3MjAxKS4KK0NsZWFyPyB5ZXMKKworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDEyIHJlZiBjb3VudCBpcyAzNDQ2Mywgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitJbm9kZSAxMyByZWYgY291bnQgaXMgOTk5OSwgc2hvdWxkIGJlIDEuICBGaXg/IHllcworCitJbm9kZSAxNCByZWYgY291bnQgaXMgMTIyNDEsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjAyIC0zODEgLTQ1NworRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgwLCBjb3VudGVkPTQ5NCkuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQyOTQ5NjcyOTMsIGNvdW50ZWQ9MTE0KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzYWxsL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzYWxsL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGIyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl95ZXNhbGwvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzYWxsL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3llc2FsbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM3MjFmZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3llc2FsbC9zY3JpcHQKQEAgLTAsMCArMSwyNyBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJmc2NrIHdpdGggeWVzLXRvLWFsbCIKK0ZTQ0tfT1BUPS1mCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CisKK2d1bnppcCA8ICR0ZXN0X2Rpci9pbWFnZS5neiA+ICRUTVBGSUxFCisKK3JtIC1yZiAkT1VUCitlY2hvICJhbm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubiIgfCBFMkZTQ0tfRk9SQ0VfSU5URVJBQ1RJVkU9eSAkRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgdG1wX2V4cGVjdAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzdGhlbmFsbC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZl95ZXN0aGVuYWxsL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmMzYmRlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzdGhlbmFsbC9leHBlY3QKQEAgLTAsMCArMSw1MiBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OSwgbGVuIDEpCitDbGVhcjx5Pj8geWVzCitJbm9kZSAxMiBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDk5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTMgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeDx5Pj8geWVzCitJbm9kZSAxMyBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAxLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDg4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODgsIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTQgaXMgaW4gdXNlLCBidXQgaGFzIGR0aW1lIHNldC4gIEZpeDx5Pj8geWVzCitJbm9kZSAxNCBoYXMgYW4gaW52YWxpZCBleHRlbnQKKwkobG9naWNhbCBibG9jayAzMDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgNzc3Nzc3Nzc3Nzc3LCBsZW4gMzAwKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA3Nzc3Nzc3Nzc3LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDE0LCBpX2Jsb2NrcyBpcyA1MjU3NDY5NDc0ODExMywgc2hvdWxkIGJlIDAuICBGaXg8eT4/IHllcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDEyICgvYSkgaXMgaW52YWxpZCAoOTk5OTk5KS4KK0NsZWFyICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpIDx5Pj8geWVzCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDEzICgvYikgaXMgaW52YWxpZCAoMjk4OTU0Mjk2KS4KK0NsZWFyICgnYScgZW5hYmxlcyAneWVzJyB0byBhbGwpIDx5Pj8geWVzIHRvIGFsbAorRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAxNCAoL2MpIGlzIGludmFsaWQgKDM4ODY5NzIwMSkuCitDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitJbm9kZSAxMiByZWYgY291bnQgaXMgMzQ0NjMsIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworSW5vZGUgMTMgcmVmIGNvdW50IGlzIDk5OTksIHNob3VsZCBiZSAxLiAgRml4PyB5ZXMKKworSW5vZGUgMTQgcmVmIGNvdW50IGlzIDEyMjQxLCBzaG91bGQgYmUgMS4gIEZpeD8geWVzCisKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLTIwMiAtMzgxIC00NTcKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMCwgY291bnRlZD00OTQpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg0Mjk0OTY3MjkzLCBjb3VudGVkPTExNCkuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDE0LzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3llc3RoZW5hbGwvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzdGhlbmFsbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIxMWMyMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3llc3RoZW5hbGwvc2NyaXB0CkBAIC0wLDAgKzEsMjcgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUyZnNjayB3aXRoIHllcyB0aGVuIHllcy10by1hbGwiCitGU0NLX09QVD0tZgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorCitndW56aXAgPCAkdGVzdF9kaXIvLi4vZl95ZXNhbGwvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCitybSAtcmYgJE9VVAorZWNobyAieXl5eXl5eXl5eWFubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm4iIHwgRTJGU0NLX0ZPUkNFX0lOVEVSQUNUSVZFPXkgJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3llc3RoZW5uby9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvZl95ZXN0aGVubm8vZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNTVmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl95ZXN0aGVubm8vZXhwZWN0CkBAIC0wLDAgKzEsNTAgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworSW5vZGUgMTIgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMCwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA5OTk5OTk5OTksIGxlbiAxKQorQ2xlYXI8eT4/IHllcworSW5vZGUgMTIgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMSwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA5OTk5OTk5OTk5LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDEzIGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICBGaXg8eT4/IHllcworSW5vZGUgMTMgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMSwgaW52YWxpZCBwaHlzaWNhbCBibG9jayA4ODg4ODg4ODg4ODg4LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDEzIGhhcyBhbiBpbnZhbGlkIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgODg4ODg4ODg4ODg4LCBsZW4gMSkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDE0IGlzIGluIHVzZSwgYnV0IGhhcyBkdGltZSBzZXQuICBGaXg8eT4/IHllcworSW5vZGUgMTQgaGFzIGFuIGludmFsaWQgZXh0ZW50CisJKGxvZ2ljYWwgYmxvY2sgMzAwLCBpbnZhbGlkIHBoeXNpY2FsIGJsb2NrIDc3Nzc3Nzc3Nzc3NywgbGVuIDMwMCkKK0NsZWFyPHk+PyB5ZXMKK0lub2RlIDE0IGhhcyBhbiBpbnZhbGlkIGV4dGVudAorCShsb2dpY2FsIGJsb2NrIDAsIGludmFsaWQgcGh5c2ljYWwgYmxvY2sgNzc3Nzc3Nzc3NywgbGVuIDEpCitDbGVhcjx5Pj8geWVzCitJbm9kZSAxNCwgaV9ibG9ja3MgaXMgNTI1NzQ2OTQ3NDgxMTMsIHNob3VsZCBiZSAwLiAgRml4PHk+PyB5ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAxMiAoL2EpIGlzIGludmFsaWQgKDk5OTk5OSkuCitDbGVhciAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSA8eT4/IHllcworRXh0ZW5kZWQgYXR0cmlidXRlIGJsb2NrIGZvciBpbm9kZSAxMyAoL2IpIGlzIGludmFsaWQgKDI5ODk1NDI5NikuCitDbGVhciAoJ2EnIGVuYWJsZXMgJ3llcycgdG8gYWxsKSA8eT4/IG5vCitFeHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2sgZm9yIGlub2RlIDE0ICgvYykgaXMgaW52YWxpZCAoMzg4Njk3MjAxKS4KK0NsZWFyPHk+PyBubworUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK0lub2RlIDEyIHJlZiBjb3VudCBpcyAzNDQ2Mywgc2hvdWxkIGJlIDEuICBGaXg8eT4/IG5vCitJbm9kZSAxMyByZWYgY291bnQgaXMgOTk5OSwgc2hvdWxkIGJlIDEuICBGaXg8eT4/IG5vCitJbm9kZSAxNCByZWYgY291bnQgaXMgMTIyNDEsIHNob3VsZCBiZSAxLiAgRml4PHk+PyBubworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICAtMjAyIC0zODEgLTQ1NworRml4PHk+PyBubworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgwLCBjb3VudGVkPTQ5MSkuCitGaXg8eT4/IG5vCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNDk0LCBjb3VudGVkPTQ5MSkuCitGaXg8eT4/IG5vCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDQyOTQ5NjcyOTMsIGNvdW50ZWQ9MTE0KS4KK0ZpeDx5Pj8gbm8KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKKwordGVzdF9maWxlc3lzOiAqKioqKioqKioqIFdBUk5JTkc6IEZpbGVzeXN0ZW0gc3RpbGwgaGFzIGVycm9ycyAqKioqKioqKioqCisKK3Rlc3RfZmlsZXN5czogMTQvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTgvNTEyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgNApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfeWVzdGhlbm5vL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9mX3llc3RoZW5uby9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQxYjc4YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3llc3RoZW5uby9zY3JpcHQKQEAgLTAsMCArMSwyNyBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJmc2NrIHdpdGggeWVzIHRoZW4gbm8iCitGU0NLX09QVD0tZgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorCitndW56aXAgPCAkdGVzdF9kaXIvLi4vZl95ZXNhbGwvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCitybSAtcmYgJE9VVAorZWNobyAieXl5eXl5eXl5eW5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubm4iIHwgRTJGU0NLX0ZPUkNFX0lOVEVSQUNUSVZFPXkgJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mIHRtcF9leHBlY3QKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fZ3JvdXAvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMDc3NjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2V4cGVjdC4xCkBAIC0wLDAgKzEsMjMgQEAKK2V4dDJmc19jaGVja19kZXNjOiBDb3JydXB0IGdyb3VwIGRlc2NyaXB0b3I6IGJhZCBibG9jayBmb3IgYmxvY2sgYml0bWFwCisuLi9lMmZzY2svZTJmc2NrOiBHcm91cCBkZXNjcmlwdG9ycyBsb29rIGJhZC4uLiB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNzk4NywgY291bnRlZD03OTgyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgxMTYwMiwgY291bnRlZD0xMTU5NykuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDE0OTMsIGNvdW50ZWQ9MTQ4OCkuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMjk5NywgY291bnRlZD0yOTkyKS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTYvMzAwOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQwMy8xMjAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fZ3JvdXAvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MzNhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTYvMzAwOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQwMy8xMjAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fZ3JvdXAvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1NTQ5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2dyb3VwL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fZ3JvdXAvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fZ3JvdXAvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2IzYjk2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19ncm91cC9uYW1lCkBAIC0wLDAgKzEgQEAKK2ZhbGxiYWNrIGZvciBkYW1hZ2VkIGdyb3VwIGRlc2NyaXB0b3JzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2lub2RlX3NpemUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX2lub2RlX3NpemUvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhiZDdkYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9leHBlY3QuMQpAQCAtMCwwICsxLDExIEBACitleHQyZnNfb3BlbjI6IFRoZSBleHQyIHN1cGVyYmxvY2sgaXMgY29ycnVwdAorLi4vZTJmc2NrL2UyZnNjazogU3VwZXJibG9jayBpbnZhbGlkLCB0cnlpbmcgYmFja3VwIGJsb2Nrcy4uLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMjUxMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQxNS8xMDAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTk0ODA2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19pbm9kZV9zaXplL2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMjUxMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQxNS8xMDAwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDUwM2M4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19pbm9kZV9zaXplL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19pbm9kZV9zaXplL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4OGQ5NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9faW5vZGVfc2l6ZS9uYW1lCkBAIC0wLDAgKzEgQEAKK3N1cGVyYmxvY2sgd2l0aCBhIHplcm8gaW5vZGUgc2l6ZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19zdXBlci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJiOTU0ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvZXhwZWN0LjEKQEAgLTAsMCArMSwyMyBAQAorZXh0MmZzX29wZW4yOiBCYWQgbWFnaWMgbnVtYmVyIGluIHN1cGVyLWJsb2NrCisuLi9lMmZzY2svZTJmc2NrOiBTdXBlcmJsb2NrIGludmFsaWQsIHRyeWluZyBiYWNrdXAgYmxvY2tzLi4uCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg3OTg3LCBjb3VudGVkPTc5ODIpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDExNjAyLCBjb3VudGVkPTExNTk3KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMTQ5MywgY291bnRlZD0xNDg4KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgyOTk3LCBjb3VudGVkPTI5OTIpLgorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxNi8zMDA4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDAzLzEyMDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19zdXBlci9leHBlY3QuMiBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgzM2FlZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxNi8zMDA4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDAzLzEyMDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19zdXBlci9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVhOTE0MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9fc3VwZXIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19zdXBlci9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb19zdXBlci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOTk5ODQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX3N1cGVyL25hbWUKQEAgLTAsMCArMSBAQAorZmFsbGJhY2sgZm9yIGRhbWFnZWQgc3VwZXJibG9jawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb194YXR0ci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9feGF0dHIvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDczM2FmNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9feGF0dHIvZXhwZWN0LjEKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8yNCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI1LzIwMCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9feGF0dHIvaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX3hhdHRyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMDU1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX3hhdHRyL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9feGF0dHIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9feGF0dHIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmFhYjE1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb194YXR0ci9uYW1lCkBAIC0wLDAgKzEgQEAKK3plcm8gbGVuZ3RoIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiBpbi1pbm9kZSB4YXR0cgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb194YXR0ci9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvX3hhdHRyL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWIyYjljCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb194YXR0ci9zY3JpcHQKQEAgLTAsMCArMSwyIEBACitPTkVfUEFTU19PTkxZPSJ0cnVlIgorLiAkY21kX2Rpci9ydW5fZTJmc2NrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9lZF9leHRfaGVhZGVyL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTNlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9leHBlY3QuMQpAQCAtMCwwICsxLDIyIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIGhhcyBjb3JydXB0IGV4dGVudCBoZWFkZXIuICBDbGVhciBpbm9kZT8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorRW50cnkgJ3Rlc3RhJyBpbiAvICgyKSBoYXMgZGVsZXRlZC91bnVzZWQgaW5vZGUgMTIuICBDbGVhcj8geWVzCisKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogIC0xMgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgxMTUsIGNvdW50ZWQ9MTE2KS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxMTUsIGNvdW50ZWQ9MTE2KS4KK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTUvMjU2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb2VkX2V4dF9oZWFkZXIvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9leHBlY3QuMgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzcyODhmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb2VkX2V4dF9oZWFkZXIvZXhwZWN0LjIKQEAgLTAsMCArMSw3IEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNS8yNTYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9mX3plcm9lZF9leHRfaGVhZGVyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTQzMzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvZl96ZXJvZWRfZXh0X2hlYWRlci9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb2VkX2V4dF9oZWFkZXIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTM5NGNmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZfemVyb2VkX2V4dF9oZWFkZXIvbmFtZQpAQCAtMCwwICsxIEBACit6YXAgaW5vZGUgd2l0aCB6ZXJvZWQgZXh0ZW50IGhlYWRlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2ZpbHRlci5zZWQgYi9lMmZzcHJvZ3MvdGVzdHMvZmlsdGVyLnNlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjgzMDlkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2ZpbHRlci5zZWQKQEAgLTAsMCArMSwyOSBAQAorL15kZWJ1Z2ZzIFsxLTldXC5bMC05XSpbXiBdKiAoWzAtOV0qLVtBLVphLXpdKi1bMC05XSopL2QKKy9eZHVtcGUyZnMgWzEtOV1cLlswLTldKlteIF0qIChbMC05XSotW0EtWmEtel0qLVswLTldKikvZAorL15lMmZzY2sgWzEtOV1cLlswLTldKlteIF0qIChbMC05XSotW0EtWmEtel0qLVswLTldKikvZAorL15ta2UyZnMgWzEtOV1cLlswLTldKlteIF0qIChbMC05XSotW0EtWmEtel0qLVswLTldKikvZAorL15yZXNpemUyZnMgWzEtOV1cLlswLTldKlteIF0qIChbMC05XSotW0EtWmEtel0qLVswLTldKikvZAorL150dW5lMmZzIFsxLTldXC5bMC05XSpbXiBdKiAoWzAtOV0qLVtBLVphLXpdKi1bMC05XSopL2QKKy9eZTJpbWFnZSBbMS05XVwuWzAtOV0qW14gXSogKFswLTldKi1bQS1aYS16XSotWzAtOV0qKS9kCitzL1xcMDE1Ly9nCisvYXV0b21hdGljYWxseSBjaGVja2VkL2QKKy9eRGlyZWN0b3J5IEhhc2ggU2VlZDovZAorL0Rpc2NhcmRpbmcgZGV2aWNlIGJsb2Nrcy9kCisvXkZpbGVzeXN0ZW0gY3JlYXRlZDovZAorL15GaWxlc3lzdGVtIGZsYWdzOi9kCisvXkZpbGVzeXN0ZW0gVVVJRDovZAorL15KRlMgREVCVUc6L2QKKy9eTGFzdCB3cml0ZSB0aW1lOi9kCisvXkxhc3QgbW91bnQgdGltZTovZAorL15MYXN0IGNoZWNrZWQ6L2QKKy9eTGlmZXRpbWUgd3JpdGVzOi9kCisvXk1heGltdW0gbW91bnQgY291bnQ6L2QKKy9eTmV4dCBjaGVjayBhZnRlcjovZAorL15TdWdnZXN0aW9uOi9kCisvUmVzZXJ2ZWQgYmxvY2tzIHVpZDovcy8gKHVzZXIgLiopLy8KKy9SZXNlcnZlZCBibG9ja3MgZ2lkOi9zLyAoZ3JvdXAgLiopLy8KKy93aGljaGV2ZXIgY29tZXMgZmlyc3QvZAorL14gIENoZWNrc3VtIC9kCitzLywgY3N1bSAweFwoWzAtOWEtZl0qXCkvL2cKK3MvIGNzdW0gMHhcKFswLTlhLWZdKlwpLy9nCisvXkNoZWNrc3VtOi9kCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvaV9iYWRfY3N1bS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvaV9iYWRfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWViOTY3ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX2JhZF9jc3VtL2V4cGVjdApAQCAtMCwwICsxLDExIEBACitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0lub2RlIDEyIHBhc3NlcyBjaGVja3MsIGJ1dCBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBpbm9kZS4gIEZpeD8gbm8KKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5cy5iaW46ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKioKKwordGVzdF9maWxlc3lzLmJpbjogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTkvNTEyIGJsb2NrcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2lfYmFkX2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvaV9iYWRfY3N1bS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTdlOTIxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2lfYmFkX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2lfYmFkX2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9pX2JhZF9jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcxOTdmMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX2JhZF9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorcnVuIGUyaW1hZ2Ugb24gYSBmaWxlIHN5c3RlbSB3aXRoIGJhZCBjaGVja3N1bXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9pX2JhZF9jc3VtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9pX2JhZF9jc3VtL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzM4Y2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2lfYmFkX2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsMjYgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUyaW1hZ2UgY29ycnVwdCBmcyIKKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CisKK2d6aXAgLWQgPCAkSU1BR0UgPiAkVE1QRklMRQorJEUySU1BR0UgLXIgJFRNUEZJTEUgJFRNUEZJTEUuYmluID4+ICRPVVQgMj4mMQorJEZTQ0sgLWZuICRUTVBGSUxFLmJpbiA+PiAkT1VUIDI+JjEKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdF9maWxlc3lzOyIgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisgICAgICAgIGVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKyAgICAgICAgdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorICAgICAgICBlY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorICAgICAgICBkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKyAgICAgICAgcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3JtIC1yZiAkT1VUICRUTVBGSUxFICRUTVBGSUxFLmJpbiAkVE1QRklMRS50ZXN0Cit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvaV9xY293L2lfcWNvdy5jcmMgYi9lMmZzcHJvZ3MvdGVzdHMvaV9xY293L2lfcWNvdy5jcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBlNWU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaV9xY293LmNyYwpAQCAtMCwwICsxLDE1IEBACitpX3Fjb3cvaW1hZ2UxMDI0Lm9yaWcKKzIxNjEwNzg2NDcJaW1hZ2UxMDI0Lm9yaWcKKzQ2NzI3NzE5OAlfaW1hZ2UucmF3CisyMTY0MjEyNDQ5CV9pbWFnZS5xY293MgorNDY3Mjc3MTk4CV9pbWFnZS5xY293Mi5yYXcKK2lfcWNvdy9pbWFnZTIwNDgub3JpZworNjcyNzQwNjQyCWltYWdlMjA0OC5vcmlnCiszNjg4NDA4MzUwCV9pbWFnZS5yYXcKKzM4MjE0MTI3NTMJX2ltYWdlLnFjb3cyCiszNjg4NDA4MzUwCV9pbWFnZS5xY293Mi5yYXcKK2lfcWNvdy9pbWFnZTQwOTYub3JpZworNDA3NzU1MjQxMglpbWFnZTQwOTYub3JpZworNDE1OTQ3MTM4OAlfaW1hZ2UucmF3Cis2MzYzNTQ4OTQJX2ltYWdlLnFjb3cyCis0MTU5NDcxMzg4CV9pbWFnZS5xY293Mi5yYXcKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2UxMDI0Lm9yaWcuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2lfcWNvdy9pbWFnZTEwMjQub3JpZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM5MGY4NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2UxMDI0Lm9yaWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2UyMDQ4Lm9yaWcuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2lfcWNvdy9pbWFnZTIwNDgub3JpZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThkMDdhOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2UyMDQ4Lm9yaWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2U0MDk2Lm9yaWcuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2lfcWNvdy9pbWFnZTQwOTYub3JpZy5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3YjVhMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvaW1hZ2U0MDk2Lm9yaWcuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2lfcWNvdy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzViMDY2NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9pX3Fjb3cvc2NyaXB0CkBAIC0wLDAgKzEsNTkgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNyZWF0ZS9jb252ZXJ0IHJhdy9xY293MiBpbWFnZXMiCitpZiB0ZXN0IC14ICRFMklNQUdFX0VYRTsgdGhlbgorCitPUklHX0lNQUdFUz0iaW1hZ2UxMDI0Lm9yaWcgaW1hZ2UyMDQ4Lm9yaWcgaW1hZ2U0MDk2Lm9yaWciCisKK1JBV19JTUc9X2ltYWdlLnJhdworUUNPVzJfSU1HPV9pbWFnZS5xY293MgorUUNPVzJfVE9fUkFXPV9pbWFnZS5xY293Mi5yYXcKK09VVD0kdGVzdF9uYW1lLmxvZworQ1JDPSRTUkNESVIvJHRlc3RfbmFtZS8kdGVzdF9uYW1lLmNyYworQ1JDX1RNUD0kdGVzdF9uYW1lLmNyYy50bXAKKworcm0gLWYgJHRlc3RfbmFtZS9faW1hZ2UuKiAkQ1JDX1RNUCAkT1VUID4vZGV2L251bGwgMj4mMQorCisoCitmb3IgaSBpbiAkT1JJR19JTUFHRVM7IGRvCisJT1JJR19JTUc9JHRlc3RfbmFtZS8kaQorCWVjaG8gJE9SSUdfSU1HID4+ICRDUkNfVE1QCisKKwlidW56aXAyIDwgJFNSQ0RJUi8kT1JJR19JTUcuYnoyID4gJGkKKwllY2hvICIkKCRDUkNTVU0gJGkpCSRpIiA+PiAkQ1JDX1RNUAorCisJcm0gLWYgJFJBV19JTUcKKwllY2hvICJlMmltYWdlIC1yICRPUklHX0lNRyAkUkFXX0lNRyIKKwkkRTJJTUFHRSAgICAgIC1yICRpICRSQVdfSU1HCisJZWNobyAiJCgkQ1JDU1VNICRSQVdfSU1HKQkkUkFXX0lNRyIgID4+ICRDUkNfVE1QCisKKwllY2hvICJlMmltYWdlIC1RICRPUklHX0lNRyAkUUNPVzJfSU1HIgorCSRFMklNQUdFICAgICAgLVEgJGkgJFFDT1cyX0lNRworCWVjaG8gIiQoJENSQ1NVTSAkUUNPVzJfSU1HKQkkUUNPVzJfSU1HIiAgPj4gJENSQ19UTVAKKworCXJtIC1mICRRQ09XMl9UT19SQVcKKwllY2hvICJlMmltYWdlIC1yICRRQ09XMl9JTUcgJFFDT1cyX1RPX1JBVyIKKwkkRTJJTUFHRSAgICAgIC1yICRpICRRQ09XMl9UT19SQVcKKwllY2hvICIkKCRDUkNTVU0gJFFDT1cyX1RPX1JBVykJJFFDT1cyX1RPX1JBVyIgPj4gJENSQ19UTVAKKworCXJtIC1mICRpCitkb25lCispID4+ICRPVVQgMj4mMQorCitlY2hvICJjaGVja3N1bToiID4+ICRPVVQKK2NhdCAkQ1JDX1RNUCA+PiAkT1VUCitlY2hvICIiID4+ICRPVVQKKworZGlmZiAkQ1JDICRDUkNfVE1QID4+ICRPVVQgMj4mMQorCitpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWxuIC1mICR0ZXN0X25hbWUubG9nICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCisKK3JtIC1mIF9pbWFnZS4qICRDUkNfVE1QID4vZGV2L251bGwgMj4mMQorCitlbHNlICNpZiB0ZXN0IC14ICRFMklNQUdFX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc5OTc3MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vZXhwZWN0CkBAIC0wLDAgKzEsMTggQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitKb3VybmFsIHRyYW5zYWN0aW9uIDMgd2FzIGNvcnJ1cHQsIHJlcGxheSB3YXMgYWJvcnRlZC4KK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnM6IGNhdCAvYQorYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFkZWJ1Z2ZzOiAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNGZjZDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF9jc3VtL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWE5OWVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfY3N1bS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHQgY29tbWl0IGNzdW0gKGNzdW0gdjMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF9jc3VtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X2NzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMTY5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF9jc3VtL3NjcmlwdApAQCAtMCwwICsxLDUyIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitnemlwIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJjYXQgL2EiID4gJFRNUEZJTEUuY21kCitlY2hvID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLWYgJFRNUEZJTEUuY21kCisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF90aWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdkZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL2V4cGVjdApAQCAtMCwwICsxLDE3IEBACit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMTA5Mi8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMTA5Mi8yMDQ4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmczogY2F0IC9hCithYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWRlYnVnZnM6IApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4OGU1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF90aWQvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2NvbW1pdF90aWQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjQwNTRjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdCBjb21taXQgdGlkIChjc3VtIHYzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9jb21taXRfdGlkL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X3RpZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxNjk3NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfY29tbWl0X3RpZC9zY3JpcHQKQEAgLTAsMCArMSw1MiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiY2F0IC9hIiA+ICRUTVBGSUxFLmNtZAorZWNobyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1mICRUTVBGSUxFLmNtZAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJiOGY3MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfY3N1bS9leHBlY3QKQEAgLTAsMCArMSwxOCBAQAordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK0pvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gdGVzdF9maWxlc3lzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkzLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkzLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBjYXQgL2EKK2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWRlYnVnZnM6IApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhODFlNWQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX2NzdW0vaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTVjY2ZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorY29ycnVwdCBkZXNjciBjc3VtIChjc3VtIHYzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl9jc3VtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfY3N1bS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMxNjk3NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfY3N1bS9zY3JpcHQKQEAgLTAsMCArMSw1MiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiY2F0IC9hIiA+ICRUTVBGSUxFLmNtZAorZWNobyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1mICRUTVBGSUxFLmNtZAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl90aWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl90aWQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYmQyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX3RpZC9leHBlY3QKQEAgLTAsMCArMSwxNyBAQAordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTMvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTMvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnM6IGNhdCAvYQorYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhZGVidWdmczogCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX3RpZC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfdGlkL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZDg4ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX3RpZC9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2Rlc2NyX3RpZC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl90aWQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzI1ZDZkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl90aWQvbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IGRlc2NyIHRpZCAoY3N1bSB2MykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfdGlkL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZGVzY3JfdGlkL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE2OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9kZXNjcl90aWQvc2NyaXB0CkBAIC0wLDAgKzEsNTIgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0lNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2d6aXAgLWQgPCAkSU1BR0UgPiAkVE1QRklMRQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImNhdCAvYSIgPiAkVE1QRklMRS5jbWQKK2VjaG8gPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtZiAkVE1QRklMRS5jbWQKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfYmxvY2svZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MzhlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfYmxvY2svZXhwZWN0CkBAIC0wLDAgKzEsNSBAQAorRXh0ZXJuYWwgam91cm5hbCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgZmlsZXN5c3RlbQorCit0ZXN0X2ZpbGVzeXM6ICoqKioqKioqKiogV0FSTklORzogRmlsZXN5c3RlbSBzdGlsbCBoYXMgZXJyb3JzICoqKioqKioqKioKKworRXhpdCBzdGF0dXMgaXMgMTIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9pbWFnZS50YXIuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2Jsb2NrL2ltYWdlLnRhci5iejIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZiMzgyZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9pbWFnZS50YXIuYnoyCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2Jsb2NrL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUxODhiZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHQgZXh0ZXJuYWwgam91cm5hbCBmcyBzdXBlcmJsb2NrIGJsb2NrIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2Jsb2NrL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFkMzAwMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9ibG9jay9zY3JpcHQKQEAgLTAsMCArMSwzNiBAQAorRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2J6aXAyIC1kYyA8ICR0ZXN0X2Rpci9pbWFnZS50YXIuYnoyIHwgdGFyIHhmIC0KK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICR0ZXN0X25hbWUuaW1nICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICR0ZXN0X25hbWUuaW1nLmpubCAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWcuam5sIgorCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzIC1qICR0ZXN0X25hbWUuaW1nLmpubCAkdGVzdF9uYW1lLmltZyA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFICR0ZXN0X25hbWUuaW1nICR0ZXN0X25hbWUuaW1nLmpubAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfY3N1bS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBhNGZlNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfZXh0X2pubF9zYl9jc3VtL2V4cGVjdApAQCAtMCwwICsxLDI1IEBACitFeHRlcm5hbCBqb3VybmFsIHN1cGVyYmxvY2sgY2hlY2tzdW0gZG9lcyBub3QgbWF0Y2ggc3VwZXJibG9jay4gIEZpeD8geWVzCisKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0zMSkgKzM0ICsoNTAtLTgyKQorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0xMSkKK0ZpeD8geWVzCisKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNjYvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDY2LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfY3N1bS9pbWFnZS50YXIuYnoyIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vaW1hZ2UudGFyLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDRkNTg0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vaW1hZ2UudGFyLmJ6MgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTgyZjgxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IGV4dGVybmFsIGpvdXJuYWwgZnMgc3VwZXJibG9jayBjc3VtIChtZXRhZGF0YV9jc3VtKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9leHRfam5sX3NiX2NzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZGRmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2V4dF9qbmxfc2JfY3N1bS9zY3JpcHQKQEAgLTAsMCArMSw0MiBAQAorRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2J6aXAyIC1kYyA8ICR0ZXN0X2Rpci9pbWFnZS50YXIuYnoyIHwgdGFyIHhmIC0KK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICR0ZXN0X25hbWUuaW1nICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICR0ZXN0X25hbWUuaW1nLmpubCAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWcuam5sIgorCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzIC1qICR0ZXN0X25hbWUuaW1nLmpubCAkdGVzdF9uYW1lLmltZyA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgLWogJHRlc3RfbmFtZS5pbWcuam5sICR0ZXN0X25hbWUuaW1nID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJHRlc3RfbmFtZS5pbWcgJHRlc3RfbmFtZS5pbWcuam5sCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfam91cm5hbF9ibG9jay9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTc2OTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svZXhwZWN0CkBAIC0wLDAgKzEsMjAgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitKQkQyOiBJbnZhbGlkIGNoZWNrc3VtIHJlY292ZXJpbmcgYmxvY2sgMTA5MCBpbiBsb2cKK0pvdXJuYWwgY2hlY2tzdW0gZXJyb3IgZm91bmQgaW4gdGVzdF9maWxlc3lzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkzLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkzLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBjYXQgL2EKK2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRlYnVnZnM6IAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFiMTk2ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfam91cm5hbF9ibG9jay9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfam91cm5hbF9ibG9jay9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkODYyY2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IGpvdXJuYWwgYmxvY2sgKGNzdW0gdjMpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X2pvdXJuYWxfYmxvY2svc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9qb3VybmFsX2Jsb2NrL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmNlOTczCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9qb3VybmFsX2Jsb2NrL3NjcmlwdApAQCAtMCwwICsxLDUzIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitnemlwIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJjYXQgL2EiID4gJFRNUEZJTEUuY21kCitlY2hvID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorZWNobyA+PiAkT1VUCitybSAtZiAkVE1QRklMRS5jbWQKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2Jsb2NrL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2Jsb2NrL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzU3ZjUzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfYmxvY2svZXhwZWN0CkBAIC0wLDAgKzEsMTcgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBjYXQgL2EKK2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiZGVidWdmczogCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9ibG9jay9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2Jsb2NrL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNjVkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9ibG9jay9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9ibG9jay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfYmxvY2svbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2EwMDg4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfYmxvY2svbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IHJldm9rZSBibG9jayAoY3N1bSB2MykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2Jsb2NrL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2Jsb2NrL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE2OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfYmxvY2svc2NyaXB0CkBAIC0wLDAgKzEsNTIgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0lNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2d6aXAgLWQgPCAkSU1BR0UgPiAkVE1QRklMRQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImNhdCAvYSIgPiAkVE1QRklMRS5jbWQKK2VjaG8gPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtZiAkVE1QRklMRS5jbWQKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2NzdW0vZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1N2Y1MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2NzdW0vZXhwZWN0CkBAIC0wLDAgKzEsMTcgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBjYXQgL2EKK2JiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiZGVidWdmczogCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9jc3VtL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfY3N1bS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTA1NTkyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfY3N1bS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9jc3VtL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYzZWEyMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IHJldm9rZSBjc3VtIChjc3VtIHYzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfY3N1bS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9jc3VtL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE2OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfY3N1bS9zY3JpcHQKQEAgLTAsMCArMSw1MiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiY2F0IC9hIiA+ICRUTVBGSUxFLmNtZAorZWNobyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1mICRUTVBGSUxFLmNtZAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfcmNvdW50L2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfcmNvdW50L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMWI1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9yY291bnQvZXhwZWN0LjEKQEAgLTAsMCArMSw5IEBACit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorLi4vZTJmc2NrL2UyZnNjazogSW52YWxpZCBhcmd1bWVudCB3aGlsZSByZWNvdmVyaW5nIGpvdXJuYWwgb2YgdGVzdF9maWxlc3lzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS81MTIgZmlsZXMgKDkuMSUgbm9uLWNvbnRpZ3VvdXMpLCAxMDY2LzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9yY291bnQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3Jldm9rZV9yY291bnQvZXhwZWN0LjIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc0NmZkYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX3Jjb3VudC9leHBlY3QuMgpAQCAtMCwwICsxLDcgQEAKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzUxMiBmaWxlcyAoOS4xJSBub24tY29udGlndW91cyksIDEwNjYvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX3Jjb3VudC9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX3Jjb3VudC9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGIxOWU4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfcmNvdW50L2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX3Jjb3VudC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9yZXZva2VfcmNvdW50L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJiNTIzZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfcmV2b2tlX3Jjb3VudC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHQgcmV2b2tlIHJfY291bnQgYnVmZmVyIG92ZXJmbG93CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX2NzdW0vZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9jc3VtL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzg4YTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9jc3VtL2V4cGVjdApAQCAtMCwwICsxLDIxIEBACitKb3VybmFsIHN1cGVyYmxvY2sgaXMgY29ycnVwdC4KK0ZpeD8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDEwOTIvMjA0OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnM6IGNhdCAvYQorYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFkZWJ1Z2ZzOiAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfY3N1bS9pbWFnZS5neiBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfY3N1bS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTkyZjZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9jc3VtL2ltYWdlLmd6CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTIxYTBmZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfY3N1bS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvcnJ1cHQgc2IgY3N1bSAoY3N1bSB2MykKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfY3N1bS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX2NzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMTY5NzUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsNTIgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0lNQUdFPSR0ZXN0X2Rpci9pbWFnZS5negorRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2d6aXAgLWQgPCAkSU1BR0UgPiAkVE1QRklMRQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImNhdCAvYSIgPiAkVE1QRklMRS5jbWQKK2VjaG8gPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtZiAkVE1QRklMRS5jbWQKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfbWFnaWMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9tYWdpYy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkYWU4OAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfbWFnaWMvZXhwZWN0CkBAIC0wLDAgKzEsNDIgQEAKK1N1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgOCkuCitDbGVhcj8geWVzCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIGRlbGV0ZWQgKioqCisKK1N1cGVyYmxvY2sgaGFzX2pvdXJuYWwgZmxhZyBpcyBjbGVhciwgYnV0IGEgam91cm5hbCBpcyBwcmVzZW50LgorQ2xlYXI/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK0pvdXJuYWwgaW5vZGUgaXMgbm90IGluIHVzZSwgYnV0IGNvbnRhaW5zIGRhdGEuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgLSgzMi0tMzMpIC0oMzUtLTQ5KSAtKDgzLS0xMDg5KQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg5NTYsIGNvdW50ZWQ9MTk4MCkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoOTU2LCBjb3VudGVkPTE5ODApLgorRml4PyB5ZXMKKworUmVjcmVhdGUgam91cm5hbD8geWVzCisKK0NyZWF0aW5nIGpvdXJuYWwgKDEwMjQgYmxvY2tzKTogIERvbmUuCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMi8xMjggZmlsZXMgKDguMyUgbm9uLWNvbnRpZ3VvdXMpLCAxMDkyLzIwNDggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzOiBjYXQgL2EKK2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhZGVidWdmczogCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX21hZ2ljL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9tYWdpYy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDg5NWU3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9tYWdpYy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX21hZ2ljL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX21hZ2ljL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM3ODFhYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2NvcnJ1cHRfc2JfbWFnaWMvbmFtZQpAQCAtMCwwICsxIEBACitjb3JydXB0IHNiIG1hZ2ljIChjc3VtIHYzKQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9tYWdpYy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9jb3JydXB0X3NiX21hZ2ljL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzE2OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfY29ycnVwdF9zYl9tYWdpYy9zY3JpcHQKQEAgLTAsMCArMSw1MiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworZ3ppcCAtZCA8ICRJTUFHRSA+ICRUTVBGSUxFCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiY2F0IC9hIiA+ICRUTVBGSUxFLmNtZAorZWNobyA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1mICRUTVBGSUxFLmNtZAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2R1bXBlMmZzL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9kdW1wZTJmcy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjOTVjZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9kdW1wZTJmcy9leHBlY3QKQEAgLTAsMCArMSw1NCBAQAorZTJmc2NrIGV4dGVybmFsIGpvdXJuYWwKKy4uL2UyZnNjay9lMmZzY2s6IEZpbGVzeXN0ZW0gaGFzIHVuc3VwcG9ydGVkIGZlYXR1cmUocykgd2hpbGUgdHJ5aW5nIHRvIG9wZW4gdGVzdC5pbWcKKworVGhlIHN1cGVyYmxvY2sgY291bGQgbm90IGJlIHJlYWQgb3IgZG9lcyBub3QgZGVzY3JpYmUgYSB2YWxpZCBleHQyL2V4dDMvZXh0NAorZmlsZXN5c3RlbS4gIElmIHRoZSBkZXZpY2UgaXMgdmFsaWQgYW5kIGl0IHJlYWxseSBjb250YWlucyBhbiBleHQyL2V4dDMvZXh0NAorZmlsZXN5c3RlbSAoYW5kIG5vdCBzd2FwIG9yIHVmcyBvciBzb21ldGhpbmcgZWxzZSksIHRoZW4gdGhlIHN1cGVyYmxvY2sKK2lzIGNvcnJ1cHQsIGFuZCB5b3UgbWlnaHQgdHJ5IHJ1bm5pbmcgZTJmc2NrIHdpdGggYW4gYWx0ZXJuYXRlIHN1cGVyYmxvY2s6CisgICAgZTJmc2NrIC1iIDgxOTMgPGRldmljZT4KKyBvcgorICAgIGUyZnNjayAtYiAzMjc2OCA8ZGV2aWNlPgorCitFeGl0IHN0YXR1cyBpcyA4CitkdW1wZTJmcyBleHRlcm5hbCBqb3VybmFsCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGpvdXJuYWxfZGV2IG1ldGFkYXRhX2NzdW0KK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wgYmxvY2tfdmFsaWRpdHkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAyMDQ4CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDAKK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgMAorRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAwCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorSW5vZGVzIHBlciBncm91cDogICAgICAgICAwCitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDAKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAwICg8bm9uZT4pCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAyOAorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKK0pvdXJuYWwgY2hlY2tzdW0gdHlwZTogICAgY3JjMzJjCitKb3VybmFsIGNoZWNrc3VtOiAgICAgICAgIDB4NjYxZTgxNmYKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgam91cm5hbF82NGJpdCBqb3VybmFsX2NoZWNrc3VtX3YzCitKb3VybmFsIGJsb2NrIHNpemU6ICAgICAgIDEwMjQKK0pvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgMjA0OAorSm91cm5hbCBmaXJzdCBibG9jazogICAgICAzCitKb3VybmFsIHNlcXVlbmNlOiAgICAgICAgIDB4MDAwMDAwMDMKK0pvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgMAorSm91cm5hbCBudW1iZXIgb2YgdXNlcnM6ICAxCitKb3VybmFsIHVzZXJzOiAgICAgICAgICAgIDExN2Y3NTJlLWYyN2QtNGY2Zi1hNjUyLTA3MjU4NmEyOWI4MgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2R1bXBlMmZzL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2R1bXBlMmZzL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MWI1OTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfZHVtcGUyZnMvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2R1bXBlMmZzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfZHVtcGUyZnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGQyNzZjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2R1bXBlMmZzL25hbWUKQEAgLTAsMCArMSBAQAorZHVtcGUyZnMgb2YgZXh0ZXJuYWwgam91cm5hbCBkZXZpY2UKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9kdW1wZTJmcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfZHVtcGUyZnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MTFjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfZHVtcGUyZnMvc2NyaXB0CkBAIC0wLDAgKzEsNDAgQEAKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitndW56aXAgPCAkdGVzdF9kaXIvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCitlY2hvICJlMmZzY2sgZXh0ZXJuYWwgam91cm5hbCIgPj4gJE9VVAorJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImR1bXBlMmZzIGV4dGVybmFsIGpvdXJuYWwiID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfcmV2b2tlX3RyYW5zL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9sb25nX3Jldm9rZV90cmFucy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQxOTg3MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9sb25nX3Jldm9rZV90cmFucy9leHBlY3QKQEAgLTAsMCArMSw5MSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCAxayBibG9ja3MgYW5kIDAgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisKK1plcm9pbmcgam91cm5hbCBkZXZpY2U6ICAgICAgICAgICAgICAICAgICAgICAgICAgICitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjYyMTQ0IDFrIGJsb2NrcyBhbmQgMTYzODQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworZGVidWdmcyBhZGQgam91cm5hbCBkZXZpY2UvVVVJRAorZGVidWdmczogZmVhdHVyZSBoYXNfam91cm5hbAorRmlsZXN5c3RlbSBmZWF0dXJlczogaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKK2RlYnVnZnM6IHNzdiBqb3VybmFsX2RldiAweDk5OTkKK2RlYnVnZnM6IHNzdiBqb3VybmFsX3V1aWQgMWRiM2Y2NzctNjgzMi00YWRiLWJhZmMtOGU0MDU5YzMwYTM0CitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYyMzkvMjYyMTQ0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBqb3VybmFsCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitFeHQyIHN1cGVyYmxvY2sgaGVhZGVyIGZvdW5kLgorSm91cm5hbCBzdGFydHMgYXQgYmxvY2sgMywgdHJhbnNhY3Rpb24gMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDUwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2MjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNzUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDg3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMDAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDExMjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTI1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMzc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE1MDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTYyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNzUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE4NzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjAwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMTI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIyNTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjM3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI2MjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjc1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyODc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMwMDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzEyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMjUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMzNzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzUwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNjI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3NTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzg3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MDAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQxMjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA0MTM1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDEzNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxMzcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTM4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDEzOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQ0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQ3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTUwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNTIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA0MTUzCitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNDE1NDogZW5kIG9mIGpvdXJuYWwuCitkZWJ1Z2ZzIGZzY2sKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYyMzkvMjYyMTQ0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfcmV2b2tlX3RyYW5zL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfbG9uZ19yZXZva2VfdHJhbnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzcwMTBkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfcmV2b2tlX3RyYW5zL25hbWUKQEAgLTAsMCArMSBAQAorcmV2b2tlZCB0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZSB3LyBleHQuIGpvdXJuYWwKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9sb25nX3Jldm9rZV90cmFucy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfbG9uZ19yZXZva2VfdHJhbnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNDVjNzIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfbG9uZ19yZXZva2VfdHJhbnMvc2NyaXB0CkBAIC0wLDAgKzEsNzcgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitKTkxGSUxFPSRUTVBGSUxFLmpubAorCit0b3VjaCAkSk5MRklMRQorJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIGpvdXJuYWxfZGV2IC1UIGV4dDQgLVUgMWRiM2Y2NzctNjgzMi00YWRiLWJhZmMtOGU0MDU5YzMwYTM0ICRKTkxGSUxFIDI2MjE0NCAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gXmhhc19qb3VybmFsIC1UIGV4dDQgJFRNUEZJTEUgMjYyMTQ0IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworZWNobyAiZGVidWdmcyBhZGQgam91cm5hbCBkZXZpY2UvVVVJRCIgPj4gJE9VVAorJERFQlVHRlMgLXcgLWYgLSAkVE1QRklMRSA8PC1FT0YgPj4gJE9VVC5uZXcgMj4mMQorCWZlYXR1cmUgaGFzX2pvdXJuYWwKKwlzc3Ygam91cm5hbF9kZXYgMHg5OTk5CisJc3N2IGpvdXJuYWxfdXVpZCAxZGIzZjY3Ny02ODMyLTRhZGItYmFmYy04ZTQwNTljMzBhMzQKK0VPRgorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzIC1qICRKTkxGSUxFICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtZiAkSk5MRklMRSIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iIDI1OS00MzU2IC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqbyAtZiAkSk5MRklMRSIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtciAyNTktNDM1NiAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPj4gJE9VVC5uZXcgPiAvZGV2L251bGwKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICIkVE1QRklMRSIgIiRKT1VSTkFMX0RVTVBfRElSLyR0ZXN0X25hbWUuaW1nIgordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRKTkxGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWcuam5sIgorZWNobyAibG9nZHVtcCAtYyAtZiAkSk5MRklMRSIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICdzL2xvZ2R1bXAgLWMgLWYuKi9sb2dkdW1wIC1jL2cnID4+ICRPVVQKK3JtIC1yZiAkVE1QRklMRS5jbWQKKworZWNobyAiZGVidWdmcyBmc2NrIiA+PiAkT1VUCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzIC1qICRKTkxGSUxFICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJEpOTEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBKTkxGSUxFCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfdHJhbnMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfdHJhbnMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNzk2MTAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9leHRfbG9uZ190cmFucy9leHBlY3QKQEAgLTAsMCArMSwxMDQgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAyNjIxNDQgMWsgYmxvY2tzIGFuZCAwIGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCitaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAgICAgICAgICAgICAgCAgICAgICAgICAgICAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCAxayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK2RlYnVnZnMgYWRkIGpvdXJuYWwgZGV2aWNlL1VVSUQKK2RlYnVnZnM6IGZlYXR1cmUgaGFzX2pvdXJuYWwKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCitkZWJ1Z2ZzOiBzc3Ygam91cm5hbF9kZXYgMHg5OTk5CitkZWJ1Z2ZzOiBzc3Ygam91cm5hbF91dWlkIDFkYjNmNjc3LTY4MzItNGFkYi1iYWZjLThlNDA1OWMzMGEzNAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA2MjM5LzI2MjE0NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgd3JpdGUgam91cm5hbAorZGVidWdmczogbG9nZHVtcCAtYworRXh0MiBzdXBlcmJsb2NrIGhlYWRlciBmb3VuZC4KK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDMsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA1MDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDc1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4NzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTAwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyNTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTM3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE2MjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTc1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxODc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIwMDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjEyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzNzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNjI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3NTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjg3OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMxMjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzI1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMzc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM1MDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzYyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNzUzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM4NzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDAwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MTI4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDEzNQorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDQxMzY6IGVuZCBvZiBqb3VybmFsLgorZGVidWdmcyBmc2NrCit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUmVzaXplIGlub2RlIG5vdCB2YWxpZC4gIFJlY3JlYXRlPyB5ZXMKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitSb290IGlub2RlIGlzIG5vdCBhIGRpcmVjdG9yeS4gIENsZWFyPyB5ZXMKKworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Jvb3QgaW5vZGUgbm90IGFsbG9jYXRlZC4gIEFsbG9jYXRlPyB5ZXMKKworL2xvc3QrZm91bmQgbm90IGZvdW5kLiAgQ3JlYXRlPyB5ZXMKKworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMjU5KSArMjc1ICsoMjkxLS00MTgpICsyMzQxCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDU4MzgsIGNvdW50ZWQ9NTg1MSkuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoMjU1OTAzLCBjb3VudGVkPTI1NTkxNikuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArMSArKDMtLTEwKQorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg1MDAsIGNvdW50ZWQ9NTAxKS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMywgY291bnRlZD0yKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgxNjM3MiwgY291bnRlZD0xNjM3MykuCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNjIyOC8yNjIxNDQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9leHRfbG9uZ190cmFucy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfdHJhbnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWU1NzIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfdHJhbnMvbmFtZQpAQCAtMCwwICsxIEBACit0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZSB3LyBleHQuIGpvdXJuYWwKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9sb25nX3RyYW5zL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2V4dF9sb25nX3RyYW5zL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzFlNWE0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfZXh0X2xvbmdfdHJhbnMvc2NyaXB0CkBAIC0wLDAgKzEsNzQgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitKTkxGSUxFPSRUTVBGSUxFLmpubAorCit0b3VjaCAkSk5MRklMRQorJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIGpvdXJuYWxfZGV2IC1UIGV4dDQgLVUgMWRiM2Y2NzctNjgzMi00YWRiLWJhZmMtOGU0MDU5YzMwYTM0ICRKTkxGSUxFIDI2MjE0NCAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gXmhhc19qb3VybmFsIC1UIGV4dDQgJFRNUEZJTEUgMjYyMTQ0IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworZWNobyAiZGVidWdmcyBhZGQgam91cm5hbCBkZXZpY2UvVVVJRCIgPj4gJE9VVAorJERFQlVHRlMgLXcgLWYgLSAkVE1QRklMRSA8PC0gRU9GID4+ICRPVVQubmV3IDI+JjEKKwlmZWF0dXJlIGhhc19qb3VybmFsCisJc3N2IGpvdXJuYWxfZGV2IDB4OTk5OQorCXNzdiBqb3VybmFsX3V1aWQgMWRiM2Y2NzctNjgzMi00YWRiLWJhZmMtOGU0MDU5YzMwYTM0CitFT0YKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAtaiAkSk5MRklMRSAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2VjaG8gImRlYnVnZnMgd3JpdGUgam91cm5hbCIgPj4gJE9VVAorZWNobyAiam8gLWYgJEpOTEZJTEUiID4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtYiAyNTktNDM1NiAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPj4gJE9VVC5uZXcgPiAvZGV2L251bGwKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICIkVE1QRklMRSIgIiRKT1VSTkFMX0RVTVBfRElSLyR0ZXN0X25hbWUuaW1nIgordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRKTkxGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWcuam5sIgorZWNobyAibG9nZHVtcCAtYyAtZiAkSk5MRklMRSIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICdzL2xvZ2R1bXAgLWMgLWYuKi9sb2dkdW1wIC1jL2cnID4+ICRPVVQKK3JtIC1yZiAkVE1QRklMRS5jbWQKKworZWNobyAiZGVidWdmcyBmc2NrIiA+PiAkT1VUCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzIC1qICRKTkxGSUxFICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJEpOTEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBKTkxGSUxFCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzMwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFucy9leHBlY3QKQEAgLTAsMCArMSw4MSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCAxayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg4MTkyIGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNDQzMS8yNjIxNDQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA1MDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDc1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTAwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyNTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTM3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE2MjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTc1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxODc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIwMDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjEyNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzNzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNjI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3NTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjg3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMxMjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzI1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMzc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM1MDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzYyNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNzUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM4NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDAwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MTI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDEzMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxMzQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTM1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDEzNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxMzcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTM4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDEzOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQ0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTQ3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE0OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNDkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTUwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDE1MQorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDQxNTI6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTQ0MzEvMjYyMTQ0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnMvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NiYjJjZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zL25hbWUKQEAgLTAsMCArMSBAQAorcmV2b2tlZCB0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnMvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMGM1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFucy9zY3JpcHQKQEAgLTAsMCArMSw2MiBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKKyRNS0UyRlMgLUYgLW8gTGludXggLWIgMTAyNCAtTyBoYXNfam91cm5hbCAtVCBleHQ0ICRUTVBGSUxFIDI2MjE0NCAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgMjU5LTQzNTYgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1yIDI1OS00MzU2IiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fMzJiaXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fMzJiaXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NGEzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFuc19tY3N1bV8zMmJpdC9leHBlY3QKQEAgLTAsMCArMSwxMTcgQEAKKzY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSB0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LgorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNzA1MC81MjQyODggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorZGVidWdmcyB3cml0ZSBqb3VybmFsCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIGpvdXJuYWxfaW5jb21wYXRfcmV2b2tlIGpvdXJuYWxfY2hlY2tzdW1fdjMKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMjcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTkwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMTYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzc5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQ0MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA1MDUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTY4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDYzMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2OTQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNzU3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDgyMAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4ODMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgOTQ2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEwMDkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTA3MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTM1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDExOTgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTI2MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMzI0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEzODcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTQ1MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTEzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE1NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTYzOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNzAyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE3NjUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTgyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxODkxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE5NTQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjAxNworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMDgwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIxNDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjIwNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjY5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzMzIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjM5NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNDU4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1MjEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjU4NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNjQ3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3MTAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjc3MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyODM2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI4OTkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjk2MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDI1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMwODgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzE1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMjE0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMyNzcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzM0MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNDAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM0NjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzUyOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNTkyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM2NTUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzcxOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNzgxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM4NDQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzkwNworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzOTcwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQwMzMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDA5NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MTU5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDE2NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTY3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE2OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNjkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTcwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTczCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTc5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE4MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxODEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTgyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDE4MworTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDQxODQ6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyNzY4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjcwNTAvNTI0Mjg4IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fMzJiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzMyYml0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q3OGMwNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzMyYml0L25hbWUKQEAgLTAsMCArMSBAQAorcmV2b2tlZCB0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZSBvbiAzMmJpdCxtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFuc19tY3N1bV8zMmJpdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFuc19tY3N1bV8zMmJpdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMwZDBhZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzMyYml0L3NjcmlwdApAQCAtMCwwICsxLDY3IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIF42NGJpdCxoYXNfam91cm5hbCxtZXRhZGF0YV9jc3VtIC1UIGV4dDQgJFRNUEZJTEUgNTI0Mjg4IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgd3JpdGUgam91cm5hbCIgPj4gJE9VVAorZWNobyAiam8gLWMiID4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtYiAyNjAtNDM1NiAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiam8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLXIgMjYwLTQzNTYiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorIyRERUJVR0ZTX0VYRSAtdyAkVE1QRklMRSAtZiAkVE1QRklMRS5jbWQgPj4gJE9VVCAyPiYxCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWRjNDA3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0CkBAIC0wLDAgKzEsMTMyIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNTI0Mjg4IDFrIGJsb2NrcyBhbmQgMzI3NjggaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDkKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI3MDY4LzUyNDI4OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgam91cm5hbF9pbmNvbXBhdF9yZXZva2Ugam91cm5hbF82NGJpdCBqb3VybmFsX2NoZWNrc3VtX3YzCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTI3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE5MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzE2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0NDIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTA1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDU2OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2MzEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjk0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDc1NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4MjAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgODgzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDk0NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMDA5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEwNzIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTEzNQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTk4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyNjEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTMyNAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMzg3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE0NTAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTUxMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE2MzkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTcwMgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNzY1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE4MjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTg5MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxOTU0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIwMTcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjA4MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMTQzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIyMDYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjI2OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMzMyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzOTUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjQ1OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTIxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1ODQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjY0NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNzEwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3NzMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjgzNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyODk5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI5NjIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzAyNQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDg4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMxNTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzIxNAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMjc3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMzNDAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzQwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNDY2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM1MjkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzU5MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNjU1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3MTgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzc4MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzODQ0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM5MDcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzk3MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MDMzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQwOTYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDE1OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDQxNjUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTY2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE2NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTY5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTcyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTc1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxNzcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTc4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE3OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxODAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTgxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE4MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxODMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTg0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE4NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxODYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTg3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE4OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxODkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTkwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE5MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxOTIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTkzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE5NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxOTUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA0MTk2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgNDE5NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSA1IChyZXZva2UgdGFibGUpIGF0IGJsb2NrIDQxOTgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA0MTk5CitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNDIwMDogZW5kIG9mIGpvdXJuYWwuCit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNzA2OC81MjQyODggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3Jldm9rZV90cmFuc19tY3N1bV82NGJpdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDk5MDBiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZQpAQCAtMCwwICsxIEBACityZXZva2VkIHRyYW5zYWN0aW9uIG51a2luZyBmcmVlIHNwYWNlIG9uIDY0Yml0LG1ldGFkYXRhX2NzdW0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjA2Zjg4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ19yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNjcgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gNjRiaXQsaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDUyNDI4OCAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ15Kb3VybmFsIGZlYXR1cmVzOicgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIC1jIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgMjYyLTQzNTggL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1yIDI2Mi00MzU4IiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyMkREVCVUdGU19FWEUgLXcgJFRNUEZJTEUgLWYgJFRNUEZJTEUuY21kID4+ICRPVVQgMj4mMQorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPj4gJE9VVC5uZXcgPiAvZGV2L251bGwKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICIkVE1QRklMRSIgIiRKT1VSTkFMX0RVTVBfRElSLyR0ZXN0X25hbWUuaW1nIgorZWNobyAibG9nZHVtcCAtYyIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1yZiAkVE1QRklMRS5jbWQKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMTc1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zL2V4cGVjdApAQCAtMCwwICsxLDEwNyBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDI2MjE0NCAxayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg4MTkyIGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNDQzMS8yNjIxNDQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA1MDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDc1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTAwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyNTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTM3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE2MjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTc1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxODc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIwMDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjEyNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzNzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjUwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNjI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3NTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjg3NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMxMjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzI1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMzc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM1MDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzYyNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNzUxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM4NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDAwMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MTI2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDEzMworTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDQxMzQ6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1N1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgOCkuCitDbGVhcj8geWVzCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIGRlbGV0ZWQgKioqCisKK1Jlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICBSZWNyZWF0ZT8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitSb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICBBbGxvY2F0ZT8geWVzCisKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTI1OSkgKzI3MyArMjc1ICsyODkgKygyOTEtLTQxOCkgKygyMDgzLS0yMjEwKSArMjM0MQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg1ODM4LCBjb3VudGVkPTU4NTEpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMxNCAoMCwgY291bnRlZD04MTkyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nICgyNDc3MTEsIGNvdW50ZWQ9MjU1OTE2KS4KK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsxICsoMy0tMTApCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDUwMCwgY291bnRlZD01MDEpLgorRml4PyB5ZXMKKworRGlyZWN0b3JpZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICgzLCBjb3VudGVkPTIpLgorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgKDE2MzcyLCBjb3VudGVkPTE2MzczKS4KK0ZpeD8geWVzCisKK1JlY3JlYXRlIGpvdXJuYWw/IHllcworCitDcmVhdGluZyBqb3VybmFsICg4MTkyIGJsb2Nrcyk6ICBEb25lLgorCisqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKioKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNDQyMC8yNjIxNDQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3MGY4ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnMvbmFtZQpAQCAtMCwwICsxIEBACit0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFucy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODE3MmM0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFucy9zY3JpcHQKQEAgLTAsMCArMSw1OSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKKyRNS0UyRlMgLUYgLW8gTGludXggLWIgMTAyNCAtTyBoYXNfam91cm5hbCAtVCBleHQ0ICRUTVBGSUxFIDI2MjE0NCAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgMjU5LTQzNTYgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFuc19tY3N1bV8zMmJpdC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zX21jc3VtXzMyYml0L2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODA4ZDlmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFuc19tY3N1bV8zMmJpdC9leHBlY3QKQEAgLTAsMCArMSwxNDYgQEAKKzY0LWJpdCBmaWxlc3lzdGVtIHN1cHBvcnQgaXMgbm90IGVuYWJsZWQuICBUaGUgbGFyZ2VyIGZpZWxkcyBhZmZvcmRlZCBieSB0aGlzIGZlYXR1cmUgZW5hYmxlIGZ1bGwtc3RyZW5ndGggY2hlY2tzdW1taW5nLiAgUGFzcyAtTyA2NGJpdCB0byByZWN0aWZ5LgorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNzA1MC81MjQyODggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorZGVidWdmcyB3cml0ZSBqb3VybmFsCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIGpvdXJuYWxfY2hlY2tzdW1fdjMKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMjcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTkwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMTYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzc5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQ0MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA1MDUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTY4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDYzMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2OTQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNzU3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDgyMAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4ODMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgOTQ2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEwMDkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTA3MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTM1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDExOTgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTI2MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMzI0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEzODcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTQ1MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTEzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE1NzYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTYzOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNzAyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE3NjUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTgyOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxODkxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE5NTQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjAxNworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMDgwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIxNDMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjIwNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMjY5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzMzIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjM5NQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNDU4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1MjEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjU4NAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNjQ3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3MTAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjc3MworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyODM2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI4OTkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjk2MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDI1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMwODgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzE1MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMjE0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMyNzcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzM0MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNDAzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM0NjYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzUyOQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNTkyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM2NTUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzcxOAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNzgxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM4NDQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzkwNworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzOTcwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQwMzMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDA5NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MTU5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgNDE2NQorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDQxNjY6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1N1cGVyYmxvY2sgaGFzIGFuIGludmFsaWQgam91cm5hbCAoaW5vZGUgOCkuCitDbGVhcj8geWVzCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIGRlbGV0ZWQgKioqCisKK1Jlc2l6ZSBpbm9kZSBub3QgdmFsaWQuICBSZWNyZWF0ZT8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUm9vdCBpbm9kZSBpcyBub3QgYSBkaXJlY3RvcnkuICBDbGVhcj8geWVzCisKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitSb290IGlub2RlIG5vdCBhbGxvY2F0ZWQuICBBbGxvY2F0ZT8geWVzCisKKy9sb3N0K2ZvdW5kIG5vdCBmb3VuZC4gIENyZWF0ZT8geWVzCisKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCitCbG9jayBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTI2MCkgKzI3NiArKDI5Mi0tNDE5KSArMjM0MiAtKDEzOTI2NS0tMTU1NjQ4KQorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg1ODM3LCBjb3VudGVkPTU4NTApLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgZm9yIGdyb3VwICMxNyAoMCwgY291bnRlZD04MTkyKS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMTggKDAsIGNvdW50ZWQ9ODE5MikuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyAoNDk3MjM2LCBjb3VudGVkPTUxMzYzMykuCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArMSArKDMtLTEwKQorRml4PyB5ZXMKKworRnJlZSBpbm9kZXMgY291bnQgd3JvbmcgZm9yIGdyb3VwICMwICg1MDAsIGNvdW50ZWQ9NTAxKS4KK0ZpeD8geWVzCisKK0RpcmVjdG9yaWVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoMywgY291bnRlZD0yKS4KK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nICgzMjc1NiwgY291bnRlZD0zMjc1NykuCitGaXg/IHllcworCitSZWNyZWF0ZSBqb3VybmFsPyB5ZXMKKworQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogIERvbmUuCisKKyoqKiBqb3VybmFsIGhhcyBiZWVuIHJlZ2VuZXJhdGVkICoqKgorCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI3MDM5LzUyNDI4OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fMzJiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fMzJiaXQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzQzZjUxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFuc19tY3N1bV8zMmJpdC9uYW1lCkBAIC0wLDAgKzEgQEAKK3RyYW5zYWN0aW9uIG51a2luZyBmcmVlIHNwYWNlIG9uIDMyYml0LG1ldGFkYXRhX2NzdW0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fMzJiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFuc19tY3N1bV8zMmJpdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcyMjI0MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fMzJiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNjMgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gXjY0Yml0LGhhc19qb3VybmFsLG1ldGFkYXRhX2NzdW0gLVQgZXh0NCAkVE1QRklMRSA1MjQyODggMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtYyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iIDI2MC00MzU2IC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfbG9uZ190cmFuc19tY3N1bV82NGJpdC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZlMTA5YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0CkBAIC0wLDAgKzEsMTQ1IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNTI0Mjg4IDFrIGJsb2NrcyBhbmQgMzI3NjggaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDkKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDI3MDY4LzUyNDI4OCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgam91cm5hbF82NGJpdCBqb3VybmFsX2NoZWNrc3VtX3YzCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTI3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE5MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzE2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0NDIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNTA1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDU2OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA2MzEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNjk0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDc1NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA4MjAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgODgzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDk0NgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMDA5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEwNzIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTEzNQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMTk4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEyNjEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTMyNAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxMzg3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE0NTAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTUxMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNTc2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE2MzkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTcwMgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxNzY1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDE4MjgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMTg5MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxOTU0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIwMTcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjA4MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMTQzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIyMDYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjI2OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyMzMyCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDIzOTUKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjQ1OAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNTIxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI1ODQKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjY0NworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyNzEwCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI3NzMKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMjgzNgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAyODk5CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDI5NjIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzAyNQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMDg4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMxNTEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzIxNAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzMjc3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDMzNDAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzQwMworRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNDY2CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM1MjkKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzU5MgorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzNjU1CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM3MTgKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzc4MQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAzODQ0CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDM5MDcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMzk3MAorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayA0MDMzCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDQwOTYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgNDE1OQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDQxNjUKK05vIG1hZ2ljIG51bWJlciBhdCBibG9jayA0MTY2OiBlbmQgb2Ygam91cm5hbC4KK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitTdXBlcmJsb2NrIGhhcyBhbiBpbnZhbGlkIGpvdXJuYWwgKGlub2RlIDgpLgorQ2xlYXI/IHllcworCisqKiogam91cm5hbCBoYXMgYmVlbiBkZWxldGVkICoqKgorCitSZXNpemUgaW5vZGUgbm90IHZhbGlkLiAgUmVjcmVhdGU/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Jvb3QgaW5vZGUgaXMgbm90IGEgZGlyZWN0b3J5LiAgQ2xlYXI/IHllcworCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUm9vdCBpbm9kZSBub3QgYWxsb2NhdGVkLiAgQWxsb2NhdGU/IHllcworCisvbG9zdCtmb3VuZCBub3QgZm91bmQuICBDcmVhdGU/IHllcworCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0yNjIpICsyNzggKygyOTQtLTQyMSkgKzIzNDQgLSgxMzkyNjUtLTE1NTY0OCkKK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNTgzNSwgY291bnRlZD01ODQ4KS4KK0ZpeD8geWVzCisKK0ZyZWUgYmxvY2tzIGNvdW50IHdyb25nIGZvciBncm91cCAjMTcgKDAsIGNvdW50ZWQ9ODE5MikuCitGaXg/IHllcworCitGcmVlIGJsb2NrcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzE4ICgwLCBjb3VudGVkPTgxOTIpLgorRml4PyB5ZXMKKworRnJlZSBibG9ja3MgY291bnQgd3JvbmcgKDQ5NzIxOCwgY291bnRlZD01MTM2MTUpLgorRml4PyB5ZXMKKworSW5vZGUgYml0bWFwIGRpZmZlcmVuY2VzOiAgKzEgKygzLS0xMCkKK0ZpeD8geWVzCisKK0ZyZWUgaW5vZGVzIGNvdW50IHdyb25nIGZvciBncm91cCAjMCAoNTAwLCBjb3VudGVkPTUwMSkuCitGaXg/IHllcworCitEaXJlY3RvcmllcyBjb3VudCB3cm9uZyBmb3IgZ3JvdXAgIzAgKDMsIGNvdW50ZWQ9MikuCitGaXg/IHllcworCitGcmVlIGlub2RlcyBjb3VudCB3cm9uZyAoMzI3NTYsIGNvdW50ZWQ9MzI3NTcpLgorRml4PyB5ZXMKKworUmVjcmVhdGUgam91cm5hbD8geWVzCisKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6ICBEb25lLgorCisqKiogam91cm5hbCBoYXMgYmVlbiByZWdlbmVyYXRlZCAqKioKKwordGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyNzA1Ny81MjQyODggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zX21jc3VtXzY0Yml0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zX21jc3VtXzY0Yml0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRhYjMzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZQpAQCAtMCwwICsxIEBACit0cmFuc2FjdGlvbiBudWtpbmcgZnJlZSBzcGFjZSBvbiA2NGJpdCxtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX2xvbmdfdHJhbnNfbWNzdW1fNjRiaXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1Y2ExYjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9sb25nX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApAQCAtMCwwICsxLDYzIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIDY0Yml0LGhhc19qb3VybmFsLG1ldGFkYXRhX2NzdW0gLVQgZXh0NCAkVE1QRklMRSA1MjQyODggMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtYyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iIDI2Mi00MzU4IC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3JlY292ZXJfY3N1bTJfMzJiaXQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MTc4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L2V4cGVjdC4xCkBAIC0wLDAgKzEsMTYgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0yNTkpICsyNjUgKygyNzQtLTI3NSkgKzI4MSArKDI5MC0tNDE4KSArKDEwNTktLTExODYpICsoMjIxMS0tMjM1MikKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMTEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzgxOTIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA3NzM5LzEzMTA3MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3JlY292ZXJfY3N1bTJfMzJiaXQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMjMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvODE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDc3MzkvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9pbWFnZS5iejIgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L2ltYWdlLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjEyZWRkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9pbWFnZS5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZDM3OGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L25hbWUKQEAgLTAsMCArMSBAQAorcmVjb3ZlciAzMi1iaXQgam91cm5hbCBjaGVja3N1bSB2MgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzMyYml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40YjBlYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl8zMmJpdC9zY3JpcHQKQEAgLTAsMCArMSwzMSBAQAorIyEvYmluL2Jhc2gKKworRlNDS19PUFQ9LWZ5CitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuYnoyCisKK2J6aXAyIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKworIyBSdW4gZnNjayB0byBmaXggdGhpbmdzPworRVhQMT0kdGVzdF9kaXIvZXhwZWN0LjEKK09VVDE9JHRlc3RfbmFtZS4xLmxvZworcm0gLXJmICR0ZXN0X25hbWUuZmFpbGVkICR0ZXN0X25hbWUub2sKKworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSAyPiYxIHwgaGVhZCAtbiAxMDAwIHwgdGFpbCAtbiArMiA+ICRPVVQxCitlY2hvICJFeGl0IHN0YXR1cyBpcyAkPyIgPj4gJE9VVDEKKworIyBSdW4gYSBzZWNvbmQgdGltZQorRVhQMj0kdGVzdF9kaXIvZXhwZWN0LjIKK09VVDI9JHRlc3RfbmFtZS4yLmxvZworCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFIDI+JjEgfCBoZWFkIC1uIDEwMDAgfCB0YWlsIC1uICsyID4gJE9VVDIKK2VjaG8gIkV4aXQgc3RhdHVzIGlzICQ/IiA+PiAkT1VUMgorCisjIEZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZAoraWYgY21wIC1zICRFWFAxICRPVVQxICYmIGNtcCAtcyAkRVhQMiAkT1VUMjsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmIC11ICRFWFAxICRPVVQxID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJZGlmZiAtdSAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3JlY292ZXJfY3N1bTJfNjRiaXQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5MTc4NGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L2V4cGVjdC4xCkBAIC0wLDAgKzEsMTYgQEAKK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygxLS0yNTkpICsyNjUgKygyNzQtLTI3NSkgKzI4MSArKDI5MC0tNDE4KSArKDEwNTktLTExODYpICsoMjIxMS0tMjM1MikKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMTEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzgxOTIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA3NzM5LzEzMTA3MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3JlY292ZXJfY3N1bTJfNjRiaXQvZXhwZWN0LjIgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L2V4cGVjdC4yCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMjMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L2V4cGVjdC4yCkBAIC0wLDAgKzEsNyBAQAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvODE5MiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDc3MzkvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9pbWFnZS5iejIgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L2ltYWdlLmJ6MgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2YxZGFlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9pbWFnZS5iejIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3NzA1MDIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L25hbWUKQEAgLTAsMCArMSBAQAorcmVjb3ZlciA2NC1iaXQgam91cm5hbCBjaGVja3N1bSB2MgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9yZWNvdmVyX2NzdW0yXzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40YjBlYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfcmVjb3Zlcl9jc3VtMl82NGJpdC9zY3JpcHQKQEAgLTAsMCArMSwzMSBAQAorIyEvYmluL2Jhc2gKKworRlNDS19PUFQ9LWZ5CitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuYnoyCisKK2J6aXAyIC1kIDwgJElNQUdFID4gJFRNUEZJTEUKKworIyBSdW4gZnNjayB0byBmaXggdGhpbmdzPworRVhQMT0kdGVzdF9kaXIvZXhwZWN0LjEKK09VVDE9JHRlc3RfbmFtZS4xLmxvZworcm0gLXJmICR0ZXN0X25hbWUuZmFpbGVkICR0ZXN0X25hbWUub2sKKworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSAyPiYxIHwgaGVhZCAtbiAxMDAwIHwgdGFpbCAtbiArMiA+ICRPVVQxCitlY2hvICJFeGl0IHN0YXR1cyBpcyAkPyIgPj4gJE9VVDEKKworIyBSdW4gYSBzZWNvbmQgdGltZQorRVhQMj0kdGVzdF9kaXIvZXhwZWN0LjIKK09VVDI9JHRlc3RfbmFtZS4yLmxvZworCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFIDI+JjEgfCBoZWFkIC1uIDEwMDAgfCB0YWlsIC1uICsyID4gJE9VVDIKK2VjaG8gIkV4aXQgc3RhdHVzIGlzICQ/IiA+PiAkT1VUMgorCisjIEZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZAoraWYgY21wIC1zICRFWFAxICRPVVQxICYmIGNtcCAtcyAkRVhQMiAkT1VUMjsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmIC11ICRFWFAxICRPVVQxID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJZGlmZiAtdSAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFucy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4M2M1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnMvZXhwZWN0CkBAIC0wLDAgKzEsMzIgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA2NTUzNiA0ayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDYKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA3CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgOAorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDk6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTE2NC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFucy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfcmV2b2tlX3RyYW5zL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3MDAxOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFucy9uYW1lCkBAIC0wLDAgKzEgQEAKK3Jldm9rZSBibG9ja3Mgb2YgdHJhbnNhY3Rpb24gbnVraW5nIGJpdG1hcHMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFucy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlZWM0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnMvc2NyaXB0CkBAIC0wLDAgKzEsNjQgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gaGFzX2pvdXJuYWwgLVQgZXh0NCAkVE1QRklMRSA2NTUzNiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iICRiaXRtYXBzIC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqbyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtciAkYml0bWFwcyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFuc19tY3N1bV82NGJpdC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMGVlYjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0CkBAIC0wLDAgKzEsMzQgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxMzEwNzIgNGsgYmxvY2tzIGFuZCAzMjc2OCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OCwgOTgzMDQKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDQwOTYgYmxvY2tzKTogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyNzY4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNjM1My8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorZGVidWdmcyB3cml0ZSBqb3VybmFsCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIGpvdXJuYWxfaW5jb21wYXRfcmV2b2tlIGpvdXJuYWxfNjRiaXQgam91cm5hbF9jaGVja3N1bV92MworZGVidWdmczogbG9nZHVtcCAtYworSm91cm5hbCBzdGFydHMgYXQgYmxvY2sgMSwgdHJhbnNhY3Rpb24gMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAxIChkZXNjcmlwdG9yIGJsb2NrKSBhdCBibG9jayAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgMTAKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayAxMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMiwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDEyCitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgMTM6IGVuZCBvZiBqb3VybmFsLgordGVzdF9maWxlc3lzOiByZWNvdmVyaW5nIGpvdXJuYWwKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyNzY4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNjM1My8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3Jldm9rZV90cmFuc19tY3N1bV82NGJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMjg2ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZQpAQCAtMCwwICsxIEBACityZXZva2UgYmxvY2tzIG9mIHRyYW5zYWN0aW9uIG51a2luZyB0aGUgYml0bWFwcyBvbiA2NGJpdCxtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF9yZXZva2VfdHJhbnNfbWNzdW1fNjRiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTQzZWZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfcmV2b2tlX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApAQCAtMCwwICsxLDY4IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworJE1LRTJGUyAtRiAtbyBMaW51eCAtYiA0MDk2IC1PIDY0Yml0LGhhc19qb3VybmFsLG1ldGFkYXRhX2NzdW0gLVQgZXh0NCAkVE1QRklMRSAxMzEwNzIgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworYml0bWFwcz0iJCgkRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ2JpdG1hcCBhdCcgfCBzZWQgLWUgJ3MvXi4qYml0bWFwIGF0IFwoWzAtOV0qXCkuKiQvXDEvZycgfCB0ciAnXG4nICcsJykiCisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgd3JpdGUgam91cm5hbCIgPj4gJE9VVAorZWNobyAiam8gLWMiID4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtYiAkYml0bWFwcyAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiam8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLXIgJGJpdG1hcHMiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPj4gJE9VVC5uZXcgPiAvZGV2L251bGwKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICIkVE1QRklMRSIgIiRKT1VSTkFMX0RVTVBfRElSLyR0ZXN0X25hbWUuaW1nIgorZWNobyAibG9nZHVtcCAtYyIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1yZiAkVE1QRklMRS5jbWQKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFucy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFucy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNjOGZlOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zL2V4cGVjdApAQCAtMCwwICsxLDM4IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgNGsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1MTY0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBqb3VybmFsCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA2CitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNzogZW5kIG9mIGpvdXJuYWwuCit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMC0tMTA1MCkgKygzMjc2OC0tMzY4ODApCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTExKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFucy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzBmYmFkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnMvbmFtZQpAQCAtMCwwICsxIEBACit0cmFuc2FjdGlvbiBudWtpbmcgdGhlIGJpdG1hcHMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTJlN2E1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnMvc2NyaXB0CkBAIC0wLDAgKzEsNjEgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gaGFzX2pvdXJuYWwgLVQgZXh0NCAkVE1QRklMRSA2NTUzNiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iICRiaXRtYXBzIC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zXzY0Yml0L2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zXzY0Yml0L2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTk3MWViCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfNjRiaXQvZXhwZWN0CkBAIC0wLDAgKzEsNDAgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA2NTUzNiA0ayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxOTYvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorZGVidWdmcyB3cml0ZSBqb3VybmFsCitKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIGpvdXJuYWxfNjRiaXQKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDYKK05vIG1hZ2ljIG51bWJlciBhdCBibG9jayA3OiBlbmQgb2Ygam91cm5hbC4KK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygwLS0xMDY2KSArKDMyNzY4LS0zNjg5NikKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMTEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTE5Ni82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zXzY0Yml0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc182NGJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3YjcwZDAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc182NGJpdC9uYW1lCkBAIC0wLDAgKzEgQEAKK3RyYW5zYWN0aW9uIG51a2luZyB0aGUgYml0bWFwcyBvbiA2NGJpdApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfNjRiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfNjRiaXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NGZhMjEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc182NGJpdC9zY3JpcHQKQEAgLTAsMCArMSw2NSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKKyRNS0UyRlMgLUYgLW8gTGludXggLWIgNDA5NiAtTyA2NGJpdCxoYXNfam91cm5hbCAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2JpdG1hcHM9IiQoJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdiaXRtYXAgYXQnIHwgc2VkIC1lICdzL14uKmJpdG1hcCBhdCBcKFswLTldKlwpLiokL1wxL2cnIHwgdHIgJ1xuJyAnLCcpIgorCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ15Kb3VybmFsIGZlYXR1cmVzOicgPj4gJE9VVAorCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgJGJpdG1hcHMgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ15Kb3VybmFsIGZlYXR1cmVzOicgPj4gJE9VVAorCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NzZmZjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19tY3N1bV82NGJpdC9leHBlY3QKQEAgLTAsMCArMSw0MCBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDEzMTA3MiA0ayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4LCA5ODMwNAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA2MzUzLzEzMTA3MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgam91cm5hbF82NGJpdCBqb3VybmFsX2NoZWNrc3VtX3YzCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayAxMAorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDExOiBlbmQgb2Ygam91cm5hbC4KK3Rlc3RfZmlsZXN5czogcmVjb3ZlcmluZyBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygwLS02NSkgKyg2Ny0tNjkpICsoNzEtLTU4NCkgKygxMDk3LS0yMTI2KSArKDY1NTM2LS02OTYzMSkgKyg5ODMwNC0tOTgzNjgpCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTExKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYzNTMvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX21jc3VtXzY0Yml0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1MWNjMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX21jc3VtXzY0Yml0L25hbWUKQEAgLTAsMCArMSBAQAordHJhbnNhY3Rpb24gbnVraW5nIHRoZSBiaXRtYXBzIG9uIDY0Yml0LG1ldGFkYXRhX2NzdW0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzRiMjM3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfbWNzdW1fNjRiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNjUgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gNjRiaXQsaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDEzMTA3MiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtYyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iICRiaXRtYXBzIC9kZXYvemVybyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJFRNUEZJTEUuY21kCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vbGRfY3N1bS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vbGRfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjlhYzI3ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX29sZF9jc3VtL2V4cGVjdApAQCAtMCwwICsxLDQwIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgNGsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1MTY0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorSm91cm5hbCBmZWF0dXJlczogICAgICAgICAobm9uZSkKK2RlYnVnZnMgd3JpdGUgam91cm5hbAorSm91cm5hbCBmZWF0dXJlczogICAgICAgICBqb3VybmFsX2NoZWNrc3VtCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA2CitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNzogZW5kIG9mIGpvdXJuYWwuCit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMC0tMTA1MCkgKygzMjc2OC0tMzY4ODApCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTExKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vbGRfY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfb2xkX2NzdW0vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTgxZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfb2xkX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACit0cmFuc2FjdGlvbiBudWtpbmcgdGhlIGJpdG1hcHMgd2l0aCBvbGQgam91cm5hbCBjaGVja3N1bSAodjEpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vbGRfY3N1bS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vbGRfY3N1bS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmOGJjYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX29sZF9jc3VtL3NjcmlwdApAQCAtMCwwICsxLDY1IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworJE1LRTJGUyAtRiAtbyBMaW51eCAtYiA0MDk2IC1PIGhhc19qb3VybmFsIC1UIGV4dDQgJFRNUEZJTEUgNjU1MzYgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworYml0bWFwcz0iJCgkRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ2JpdG1hcCBhdCcgfCBzZWQgLWUgJ3MvXi4qYml0bWFwIGF0IFwoWzAtOV0qXCkuKiQvXDEvZycgfCB0ciAnXG4nICcsJykiCisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK2VjaG8gImRlYnVnZnMgd3JpdGUgam91cm5hbCIgPj4gJE9VVAorZWNobyAiam8gLWMiID4gJFRNUEZJTEUuY21kCitlY2hvICJqdyAtYiAkYml0bWFwcyAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPj4gJE9VVC5uZXcgPiAvZGV2L251bGwKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnXkpvdXJuYWwgZmVhdHVyZXM6JyA+PiAkT1VUCisKK3Rlc3QgLWQgIiRKT1VSTkFMX0RVTVBfRElSIiAtYSAtdyAiJEpPVVJOQUxfRFVNUF9ESVIiICYmIGNwICIkVE1QRklMRSIgIiRKT1VSTkFMX0RVTVBfRElSLyR0ZXN0X25hbWUuaW1nIgorZWNobyAibG9nZHVtcCAtYyIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQKK3JtIC1yZiAkVE1QRklMRS5jbWQKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vcGVuX3JlY292ZXIvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfb3Blbl9yZWNvdmVyL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTZlMzYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfb3Blbl9yZWNvdmVyL2V4cGVjdApAQCAtMCwwICsxLDQzIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgNGsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1MTY0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBqb3VybmFsCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAxLCB0cmFuc2FjdGlvbiAxCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAxLCB0eXBlIDEgKGRlc2NyaXB0b3IgYmxvY2spIGF0IGJsb2NrIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayA2CitObyBtYWdpYyBudW1iZXIgYXQgYmxvY2sgNzogZW5kIG9mIGpvdXJuYWwuCitkZWJ1Z2ZzIGNhbid0IHJlY292ZXIgb3BlbiBqb3VybmFsCitkZWJ1Z2ZzOiBqbworZGVidWdmczoganIKK1BsZWFzZSBjbG9zZSB0aGUgam91cm5hbCBiZWZvcmUgcmVjb3ZlcmluZyBpdC4KK2RlYnVnZnM6IGpjCit0ZXN0X2ZpbGVzeXM6IHJlY292ZXJpbmcgam91cm5hbAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK0Jsb2NrIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMC0tMTA1MCkgKygzMjc2OC0tMzY4ODApCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTExKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vcGVuX3JlY292ZXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX29wZW5fcmVjb3Zlci9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MmU5NWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19vcGVuX3JlY292ZXIvbmFtZQpAQCAtMCwwICsxIEBACitlbnN1cmUgd2UgY2FuJ3QgcmVjb3ZlciB0aGUgam91cm5hbCB3aXRoIGpvdXJuYWwgb3BlbgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfb3Blbl9yZWNvdmVyL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX29wZW5fcmVjb3Zlci9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxMzZmZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX29wZW5fcmVjb3Zlci9zY3JpcHQKQEAgLTAsMCArMSw2OSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKKyRNS0UyRlMgLUYgLW8gTGludXggLWIgNDA5NiAtTyBoYXNfam91cm5hbCAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2JpdG1hcHM9IiQoJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdiaXRtYXAgYXQnIHwgc2VkIC1lICdzL14uKmJpdG1hcCBhdCBcKFswLTldKlwpLiokL1wxL2cnIHwgdHIgJ1xuJyAnLCcpIgorCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgJGJpdG1hcHMgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKK2VjaG8gImRlYnVnZnMgY2FuJ3QgcmVjb3ZlciBvcGVuIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAianIiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC13IC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIDwgJE9VVC5uZXcgPj4gJE9VVAorcm0gLXJmICRPVVQubmV3CisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRSAkVE1QRklMRS5jbWQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlci9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU4NjczMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvZXhwZWN0CkBAIC0wLDAgKzEsNDAgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA2NTUzNiA0ayBibG9ja3MgYW5kIDE2Mzg0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDcKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgNSAocmV2b2tlIHRhYmxlKSBhdCBibG9jayA4CitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDIgKGNvbW1pdCBibG9jaykgYXQgYmxvY2sgOQorTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDEwOiBlbmQgb2Ygam91cm5hbC4KK2RlYnVnZnMgcmVjb3ZlciBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygwLS0xMDUwKSArKDMyNzY4LS0zNjg4MCkKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMTEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTE2NC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGUzNTUzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlci9uYW1lCkBAIC0wLDAgKzEgQEAKK3RyYW5zYWN0aW9uIG51a2luZyB0aGUgYml0bWFwcyAoZGVidWdmcyByZWNvdmVyeSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlci9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdiNDk0MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXIvc2NyaXB0CkBAIC0wLDAgKzEsNzAgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gaGFzX2pvdXJuYWwgLVQgZXh0NCAkVE1QRklMRSA2NTUzNiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iIDMzMywkYml0bWFwcyAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiam8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLXIgMzMzIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKK2VjaG8gImRlYnVnZnMgcmVjb3ZlciBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqciIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJFRNUEZJTEUuY21kCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19yZWNvdmVyX21jc3VtXzY0Yml0L2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXJfbWNzdW1fNjRiaXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljYzMzMDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19yZWNvdmVyX21jc3VtXzY0Yml0L2V4cGVjdApAQCAtMCwwICsxLDQyIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMTMxMDcyIDRrIGJsb2NrcyBhbmQgMzI3NjggaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJMzI3NjgsIDk4MzA0CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYzNTMvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorSm91cm5hbCBmZWF0dXJlczogICAgICAgICAobm9uZSkKK2RlYnVnZnMgd3JpdGUgam91cm5hbAorSm91cm5hbCBmZWF0dXJlczogICAgICAgICBqb3VybmFsX2luY29tcGF0X3Jldm9rZSBqb3VybmFsXzY0Yml0IGpvdXJuYWxfY2hlY2tzdW1fdjMKK2RlYnVnZnM6IGxvZ2R1bXAgLWMKK0pvdXJuYWwgc3RhcnRzIGF0IGJsb2NrIDEsIHRyYW5zYWN0aW9uIDEKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDEsIHR5cGUgMSAoZGVzY3JpcHRvciBibG9jaykgYXQgYmxvY2sgMQorRm91bmQgZXhwZWN0ZWQgc2VxdWVuY2UgMSwgdHlwZSAyIChjb21taXQgYmxvY2spIGF0IGJsb2NrIDExCitGb3VuZCBleHBlY3RlZCBzZXF1ZW5jZSAyLCB0eXBlIDUgKHJldm9rZSB0YWJsZSkgYXQgYmxvY2sgMTIKK0ZvdW5kIGV4cGVjdGVkIHNlcXVlbmNlIDIsIHR5cGUgMiAoY29tbWl0IGJsb2NrKSBhdCBibG9jayAxMworTm8gbWFnaWMgbnVtYmVyIGF0IGJsb2NrIDE0OiBlbmQgb2Ygam91cm5hbC4KK2RlYnVnZnMgcmVjb3ZlciBqb3VybmFsCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygwLS02NSkgKyg2Ny0tNjkpICsoNzEtLTU4NCkgKygxMDk3LS0yMTI2KSArKDY1NTM2LS02OTYzMSkgKyg5ODMwNC0tOTgzNjgpCitGaXg/IHllcworCitJbm9kZSBiaXRtYXAgZGlmZmVyZW5jZXM6ICArKDEtLTExKQorRml4PyB5ZXMKKworCit0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYzNTMvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlcl9tY3N1bV82NGJpdC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlcl9tY3N1bV82NGJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjY2RjYjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF90cmFuc19yZWNvdmVyX21jc3VtXzY0Yml0L25hbWUKQEAgLTAsMCArMSBAQAordW5jb21taXR0ZWQgdHJhbnNhY3Rpb24gbnVraW5nIHRoZSBiaXRtYXBzIG9uIDY0Yml0LG1ldGFkYXRhX2NzdW0gKGRlYnVnZnMgcmVjb3ZlcikKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXJfbWNzdW1fNjRiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdHJhbnNfcmVjb3Zlcl9tY3N1bV82NGJpdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM1NmUwZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3RyYW5zX3JlY292ZXJfbWNzdW1fNjRiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNzQgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gNjRiaXQsaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDEzMTA3MiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtYyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iIDMzMywkYml0bWFwcyAvZGV2L3plcm8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiamMiID4+ICRUTVBGSUxFLmNtZAorZWNobyAiam8iID4+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLXIgMzMzIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ15Kb3VybmFsIGZlYXR1cmVzOicgPj4gJE9VVAorCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKK2VjaG8gImRlYnVnZnMgcmVjb3ZlciBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqciIgPiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUgJFRNUEZJTEUuY21kCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF91bmNvbW1pdHRlZF90cmFucy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF91bmNvbW1pdHRlZF90cmFucy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVkZGRiNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3VuY29tbWl0dGVkX3RyYW5zL2V4cGVjdApAQCAtMCwwICsxLDI2IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgNGsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1MTY0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBqb3VybmFsCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAwLCB0cmFuc2FjdGlvbiAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDUxNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF91bmNvbW1pdHRlZF90cmFucy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjE3MjMxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnMvbmFtZQpAQCAtMCwwICsxIEBACit1bmNvbW1pdHRlZCB0cmFuc2FjdGlvbiBudWtpbmcgYml0bWFwcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnMvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZmMzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF91bmNvbW1pdHRlZF90cmFucy9zY3JpcHQKQEAgLTAsMCArMSw2MSBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZ5CitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKKyRNS0UyRlMgLUYgLW8gTGludXggLWIgNDA5NiAtTyBoYXNfam91cm5hbCAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2JpdG1hcHM9IiQoJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdiaXRtYXAgYXQnIHwgc2VkIC1lICdzL14uKmJpdG1hcCBhdCBcKFswLTldKlwpLiokL1wxL2cnIHwgdHIgJ1xuJyAnLCcpIgorCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgJGJpdG1hcHMgLWMgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCit0ZXN0IC1kICIkSk9VUk5BTF9EVU1QX0RJUiIgLWEgLXcgIiRKT1VSTkFMX0RVTVBfRElSIiAmJiBjcCAiJFRNUEZJTEUiICIkSk9VUk5BTF9EVU1QX0RJUi8kdGVzdF9uYW1lLmltZyIKK2VjaG8gImxvZ2R1bXAgLWMiID4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUCitybSAtcmYgJFRNUEZJTEUuY21kCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnNfbWNzdW1fNjRiaXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZmZjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMval9zaG9ydF91bmNvbW1pdHRlZF90cmFuc19tY3N1bV82NGJpdC9leHBlY3QKQEAgLTAsMCArMSwyOCBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDEzMTA3MiA0ayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4LCA5ODMwNAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA2MzUzLzEzMTA3MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgam91cm5hbF82NGJpdCBqb3VybmFsX2NoZWNrc3VtX3YzCitkZWJ1Z2ZzOiBsb2dkdW1wIC1jCitKb3VybmFsIHN0YXJ0cyBhdCBibG9jayAwLCB0cmFuc2FjdGlvbiAxCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8zMjc2OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDYzNTMvMTMxMDcyIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnNfbWNzdW1fNjRiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3VuY29tbWl0dGVkX3RyYW5zX21jc3VtXzY0Yml0L25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc3MWY0YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3VuY29tbWl0dGVkX3RyYW5zX21jc3VtXzY0Yml0L25hbWUKQEAgLTAsMCArMSBAQAordW5jb21taXR0ZWQgdHJhbnNhY3Rpb24gbnVraW5nIHRoZSBiaXRtYXBzIG9uIDY0Yml0LG1ldGFkYXRhX2NzdW0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3VuY29tbWl0dGVkX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9qX3Nob3J0X3VuY29tbWl0dGVkX3RyYW5zX21jc3VtXzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGI4YzdmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL2pfc2hvcnRfdW5jb21taXR0ZWRfdHJhbnNfbWNzdW1fNjRiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNjUgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gNjRiaXQsaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDEzMTA3MiAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitiaXRtYXBzPSIkKCREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnYml0bWFwIGF0JyB8IHNlZCAtZSAncy9eLipiaXRtYXAgYXQgXChbMC05XSpcKS4qJC9cMS9nJyB8IHRyICdcbicgJywnKSIKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKworZWNobyAiZGVidWdmcyB3cml0ZSBqb3VybmFsIiA+PiAkT1VUCitlY2hvICJqbyAtYyIgPiAkVE1QRklMRS5jbWQKK2VjaG8gImp3IC1iICRiaXRtYXBzIC9kZXYvemVybyAtYyIgPj4gJFRNUEZJTEUuY21kCitlY2hvICJqYyIgPj4gJFRNUEZJTEUuY21kCiskREVCVUdGU19FWEUgLXcgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+PiAkT1VULm5ldyA+IC9kZXYvbnVsbAorc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPCAkT1VULm5ldyA+PiAkT1VUCitybSAtcmYgJE9VVC5uZXcKKworJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdeSm91cm5hbCBmZWF0dXJlczonID4+ICRPVVQKKwordGVzdCAtZCAiJEpPVVJOQUxfRFVNUF9ESVIiIC1hIC13ICIkSk9VUk5BTF9EVU1QX0RJUiIgJiYgY3AgIiRUTVBGSUxFIiAiJEpPVVJOQUxfRFVNUF9ESVIvJHRlc3RfbmFtZS5pbWciCitlY2hvICJsb2dkdW1wIC1jIiA+ICRUTVBGSUxFLmNtZAorJERFQlVHRlNfRVhFIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorcm0gLXJmICRUTVBGSUxFLmNtZAorCiskRlNDSyAtZnkgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworcm0gLWYgJFRNUEZJTEUKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tXzY0Yml0X2ZsZXhiZy9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9tXzY0Yml0X2ZsZXhiZy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmEzYmM5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fNjRiaXRfZmxleGJnL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTYgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxMDI0IDFrIGJsb2NrcyBhbmQgMTI4IGlub2RlcworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA0Mi8xMDI0IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMTI4CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgNTEKK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgOTgyCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDExNworRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICA2NAorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICA3CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorSW5vZGVzIHBlciBncm91cDogICAgICAgICAxMjgKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMTYKK0ZsZXggYmxvY2sgZ3JvdXAgc2l6ZTogICAgMTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS0xMDIzKQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0yCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMy05CisgIEJsb2NrIGJpdG1hcCBhdCAxMCAoKzkpCisgIElub2RlIGJpdG1hcCBhdCAyNiAoKzI1KQorICBJbm9kZSB0YWJsZSBhdCA0Mi01NyAoKzQxKQorICA5ODIgZnJlZSBibG9ja3MsIDExNyBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQtMjUsIDI4LTQxLCA1OC0xMDIzCisgIEZyZWUgaW5vZGVzOiAxMi0xMjgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tXzY0Yml0X2ZsZXhiZy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV82NGJpdF9mbGV4Ymcvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4Njg0ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV82NGJpdF9mbGV4Ymcvc2NyaXB0CkBAIC0wLDAgKzEsNCBAQAorREVTQ1JJUFRJT049Im1rZnMgd2l0aCA2NGJpdCBhbmQgZmxleF9iZyIKK0ZTX1NJWkU9MU0KK01LRTJGU19PUFRTPSItTyA2NGJpdCxleHRlbnRzLGZsZXhfYmciCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2JpZ2pvdXJuYWwvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvbV9iaWdqb3VybmFsL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDA1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9iaWdqb3VybmFsL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTczIEBACitGaWxlc3lzdGVtIGZlYXR1cmVzOiBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xMzQ0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTI4Njk4OS8yNzUwMDAwIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxMzQ0CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDI3NTAwMDAKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMTM3NTAwCitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDE0NjMwMTEKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgMTMzMworRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAwCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDQwOTYKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgNDA5NgorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICA2NzEKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgMzI3NjgKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMzI3NjgKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMTYKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMQorRmxleCBibG9jayBncm91cCBzaXplOiAgICA1MTIKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAzMgorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAzMgorSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CitKb3VybmFsIGJhY2t1cDogICAgICAgICAgIGlub2RlIGJsb2NrcworSm91cm5hbCBmZWF0dXJlczogICAgICAgICAobm9uZSkKK0pvdXJuYWwgc2l6ZTogICAgICAgICAgICAgNTAwME0KK0pvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgMTI4MDAwMAorSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweDAwMDAwMDAxCitKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgIDAKKworCitHcm91cCAwOiAoQmxvY2tzIDAtMzI3NjcpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAwLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxLTEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyLTY3MgorICBCbG9jayBiaXRtYXAgYXQgNjczICgrNjczKSwgSW5vZGUgYml0bWFwIGF0IDc1NyAoKzc1NykKKyAgSW5vZGUgdGFibGUgYXQgODQxLTg0MSAoKzg0MSkKKyAgMzE4MzcgZnJlZSBibG9ja3MsIDUgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMsIDUgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogOTMxLTMyNzY3CisgIEZyZWUgaW5vZGVzOiAxMi0xNgorR3JvdXAgMTogKEJsb2NrcyAzMjc2OC02NTUzNSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAzMjc2OCwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzI3NjktMzI3NjkKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzMjc3MC0zMzQ0MAorICBCbG9jayBiaXRtYXAgYXQgNjc0IChiZyAjMCArIDY3NCksIElub2RlIGJpdG1hcCBhdCA3NTggKGJnICMwICsgNzU4KQorICBJbm9kZSB0YWJsZSBhdCA4NDItODQyIChiZyAjMCArIDg0MikKKyAgMzIwOTUgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAzMzQ0MS02NTUzNQorICBGcmVlIGlub2RlczogMTctMzIKK0dyb3VwIDI6IChCbG9ja3MgNjU1MzYtOTgzMDMpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY3NSAoYmcgIzAgKyA2NzUpLCBJbm9kZSBiaXRtYXAgYXQgNzU5IChiZyAjMCArIDc1OSkKKyAgSW5vZGUgdGFibGUgYXQgODQzLTg0MyAoYmcgIzAgKyA4NDMpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNjU1MzYtOTgzMDMKKyAgRnJlZSBpbm9kZXM6IDMzLTQ4CitHcm91cCAzOiAoQmxvY2tzIDk4MzA0LTEzMTA3MSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA5ODMwNCwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgOTgzMDUtOTgzMDUKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA5ODMwNi05ODk3NgorICBCbG9jayBiaXRtYXAgYXQgNjc2IChiZyAjMCArIDY3NiksIElub2RlIGJpdG1hcCBhdCA3NjAgKGJnICMwICsgNzYwKQorICBJbm9kZSB0YWJsZSBhdCA4NDQtODQ0IChiZyAjMCArIDg0NCkKKyAgMzIwOTUgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA5ODk3Ny0xMzEwNzEKKyAgRnJlZSBpbm9kZXM6IDQ5LTY0CitHcm91cCA0OiAoQmxvY2tzIDEzMTA3Mi0xNjM4MzkpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY3NyAoYmcgIzAgKyA2NzcpLCBJbm9kZSBiaXRtYXAgYXQgNzYxIChiZyAjMCArIDc2MSkKKyAgSW5vZGUgdGFibGUgYXQgODQ1LTg0NSAoYmcgIzAgKyA4NDUpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMTMxMDcyLTE2MzgzOQorICBGcmVlIGlub2RlczogNjUtODAKK0dyb3VwIDU6IChCbG9ja3MgMTYzODQwLTE5NjYwNykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxNjM4NDAsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDE2Mzg0MS0xNjM4NDEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxNjM4NDItMTY0NTEyCisgIEJsb2NrIGJpdG1hcCBhdCA2NzggKGJnICMwICsgNjc4KSwgSW5vZGUgYml0bWFwIGF0IDc2MiAoYmcgIzAgKyA3NjIpCisgIElub2RlIHRhYmxlIGF0IDg0Ni04NDYgKGJnICMwICsgODQ2KQorICAzMjA5NSBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDE2NDUxMy0xOTY2MDcKKyAgRnJlZSBpbm9kZXM6IDgxLTk2CitHcm91cCA2OiAoQmxvY2tzIDE5NjYwOC0yMjkzNzUpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY3OSAoYmcgIzAgKyA2NzkpLCBJbm9kZSBiaXRtYXAgYXQgNzYzIChiZyAjMCArIDc2MykKKyAgSW5vZGUgdGFibGUgYXQgODQ3LTg0NyAoYmcgIzAgKyA4NDcpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMTk2NjA4LTIyOTM3NQorICBGcmVlIGlub2RlczogOTctMTEyCitHcm91cCA3OiAoQmxvY2tzIDIyOTM3Ni0yNjIxNDMpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjI5Mzc2LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyMjkzNzctMjI5Mzc3CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjI5Mzc4LTIzMDA0OAorICBCbG9jayBiaXRtYXAgYXQgNjgwIChiZyAjMCArIDY4MCksIElub2RlIGJpdG1hcCBhdCA3NjQgKGJnICMwICsgNzY0KQorICBJbm9kZSB0YWJsZSBhdCA4NDgtODQ4IChiZyAjMCArIDg0OCkKKyAgMzIwOTUgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAyMzAwNDktMjYyMTQzCisgIEZyZWUgaW5vZGVzOiAxMTMtMTI4CitHcm91cCA4OiAoQmxvY2tzIDI2MjE0NC0yOTQ5MTEpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY4MSAoYmcgIzAgKyA2ODEpLCBJbm9kZSBiaXRtYXAgYXQgNzY1IChiZyAjMCArIDc2NSkKKyAgSW5vZGUgdGFibGUgYXQgODQ5LTg0OSAoYmcgIzAgKyA4NDkpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMjYyMTQ0LTI5NDkxMQorICBGcmVlIGlub2RlczogMTI5LTE0NAorR3JvdXAgOTogKEJsb2NrcyAyOTQ5MTItMzI3Njc5KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDI5NDkxMiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjk0OTEzLTI5NDkxMworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDI5NDkxNC0yOTU1ODQKKyAgQmxvY2sgYml0bWFwIGF0IDY4MiAoYmcgIzAgKyA2ODIpLCBJbm9kZSBiaXRtYXAgYXQgNzY2IChiZyAjMCArIDc2NikKKyAgSW5vZGUgdGFibGUgYXQgODUwLTg1MCAoYmcgIzAgKyA4NTApCisgIDMyMDk1IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMjk1NTg1LTMyNzY3OQorICBGcmVlIGlub2RlczogMTQ1LTE2MAorR3JvdXAgMTA6IChCbG9ja3MgMzI3NjgwLTM2MDQ0NykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNjgzIChiZyAjMCArIDY4MyksIElub2RlIGJpdG1hcCBhdCA3NjcgKGJnICMwICsgNzY3KQorICBJbm9kZSB0YWJsZSBhdCA4NTEtODUxIChiZyAjMCArIDg1MSkKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAzMjc2ODAtMzYwNDQ3CisgIEZyZWUgaW5vZGVzOiAxNjEtMTc2CitHcm91cCAxMTogKEJsb2NrcyAzNjA0NDgtMzkzMjE1KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA2ODQgKGJnICMwICsgNjg0KSwgSW5vZGUgYml0bWFwIGF0IDc2OCAoYmcgIzAgKyA3NjgpCisgIElub2RlIHRhYmxlIGF0IDg1Mi04NTIgKGJnICMwICsgODUyKQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDM2MDQ0OC0zOTMyMTUKKyAgRnJlZSBpbm9kZXM6IDE3Ny0xOTIKK0dyb3VwIDEyOiAoQmxvY2tzIDM5MzIxNi00MjU5ODMpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY4NSAoYmcgIzAgKyA2ODUpLCBJbm9kZSBiaXRtYXAgYXQgNzY5IChiZyAjMCArIDc2OSkKKyAgSW5vZGUgdGFibGUgYXQgODUzLTg1MyAoYmcgIzAgKyA4NTMpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMzkzMjE2LTQyNTk4MworICBGcmVlIGlub2RlczogMTkzLTIwOAorR3JvdXAgMTM6IChCbG9ja3MgNDI1OTg0LTQ1ODc1MSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNjg2IChiZyAjMCArIDY4NiksIElub2RlIGJpdG1hcCBhdCA3NzAgKGJnICMwICsgNzcwKQorICBJbm9kZSB0YWJsZSBhdCA4NTQtODU0IChiZyAjMCArIDg1NCkKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA0MjU5ODQtNDU4NzUxCisgIEZyZWUgaW5vZGVzOiAyMDktMjI0CitHcm91cCAxNDogKEJsb2NrcyA0NTg3NTItNDkxNTE5KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA2ODcgKGJnICMwICsgNjg3KSwgSW5vZGUgYml0bWFwIGF0IDc3MSAoYmcgIzAgKyA3NzEpCisgIElub2RlIHRhYmxlIGF0IDg1NS04NTUgKGJnICMwICsgODU1KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDQ1ODc1Mi00OTE1MTkKKyAgRnJlZSBpbm9kZXM6IDIyNS0yNDAKK0dyb3VwIDE1OiAoQmxvY2tzIDQ5MTUyMC01MjQyODcpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY4OCAoYmcgIzAgKyA2ODgpLCBJbm9kZSBiaXRtYXAgYXQgNzcyIChiZyAjMCArIDc3MikKKyAgSW5vZGUgdGFibGUgYXQgODU2LTg1NiAoYmcgIzAgKyA4NTYpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNDkxNTIwLTUyNDI4NworICBGcmVlIGlub2RlczogMjQxLTI1NgorR3JvdXAgMTY6IChCbG9ja3MgNTI0Mjg4LTU1NzA1NSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNjg5IChiZyAjMCArIDY4OSksIElub2RlIGJpdG1hcCBhdCA3NzMgKGJnICMwICsgNzczKQorICBJbm9kZSB0YWJsZSBhdCA4NTctODU3IChiZyAjMCArIDg1NykKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA1MjQyODgtNTU3MDU1CisgIEZyZWUgaW5vZGVzOiAyNTctMjcyCitHcm91cCAxNzogKEJsb2NrcyA1NTcwNTYtNTg5ODIzKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA2OTAgKGJnICMwICsgNjkwKSwgSW5vZGUgYml0bWFwIGF0IDc3NCAoYmcgIzAgKyA3NzQpCisgIElub2RlIHRhYmxlIGF0IDg1OC04NTggKGJnICMwICsgODU4KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDU1NzA1Ni01ODk4MjMKKyAgRnJlZSBpbm9kZXM6IDI3My0yODgKK0dyb3VwIDE4OiAoQmxvY2tzIDU4OTgyNC02MjI1OTEpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY5MSAoYmcgIzAgKyA2OTEpLCBJbm9kZSBiaXRtYXAgYXQgNzc1IChiZyAjMCArIDc3NSkKKyAgSW5vZGUgdGFibGUgYXQgODU5LTg1OSAoYmcgIzAgKyA4NTkpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNTg5ODI0LTYyMjU5MQorICBGcmVlIGlub2RlczogMjg5LTMwNAorR3JvdXAgMTk6IChCbG9ja3MgNjIyNTkyLTY1NTM1OSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNjkyIChiZyAjMCArIDY5MiksIElub2RlIGJpdG1hcCBhdCA3NzYgKGJnICMwICsgNzc2KQorICBJbm9kZSB0YWJsZSBhdCA4NjAtODYwIChiZyAjMCArIDg2MCkKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA2MjI1OTItNjU1MzU5CisgIEZyZWUgaW5vZGVzOiAzMDUtMzIwCitHcm91cCAyMDogKEJsb2NrcyA2NTUzNjAtNjg4MTI3KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA2OTMgKGJnICMwICsgNjkzKSwgSW5vZGUgYml0bWFwIGF0IDc3NyAoYmcgIzAgKyA3NzcpCisgIElub2RlIHRhYmxlIGF0IDg2MS04NjEgKGJnICMwICsgODYxKQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDY1NTM2MC02ODgxMjcKKyAgRnJlZSBpbm9kZXM6IDMyMS0zMzYKK0dyb3VwIDIxOiAoQmxvY2tzIDY4ODEyOC03MjA4OTUpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY5NCAoYmcgIzAgKyA2OTQpLCBJbm9kZSBiaXRtYXAgYXQgNzc4IChiZyAjMCArIDc3OCkKKyAgSW5vZGUgdGFibGUgYXQgODYyLTg2MiAoYmcgIzAgKyA4NjIpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNjg4MTI4LTcyMDg5NQorICBGcmVlIGlub2RlczogMzM3LTM1MgorR3JvdXAgMjI6IChCbG9ja3MgNzIwODk2LTc1MzY2MykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNjk1IChiZyAjMCArIDY5NSksIElub2RlIGJpdG1hcCBhdCA3NzkgKGJnICMwICsgNzc5KQorICBJbm9kZSB0YWJsZSBhdCA4NjMtODYzIChiZyAjMCArIDg2MykKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA3MjA4OTYtNzUzNjYzCisgIEZyZWUgaW5vZGVzOiAzNTMtMzY4CitHcm91cCAyMzogKEJsb2NrcyA3NTM2NjQtNzg2NDMxKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA2OTYgKGJnICMwICsgNjk2KSwgSW5vZGUgYml0bWFwIGF0IDc4MCAoYmcgIzAgKyA3ODApCisgIElub2RlIHRhYmxlIGF0IDg2NC04NjQgKGJnICMwICsgODY0KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDc1MzY2NC03ODY0MzEKKyAgRnJlZSBpbm9kZXM6IDM2OS0zODQKK0dyb3VwIDI0OiAoQmxvY2tzIDc4NjQzMi04MTkxOTkpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY5NyAoYmcgIzAgKyA2OTcpLCBJbm9kZSBiaXRtYXAgYXQgNzgxIChiZyAjMCArIDc4MSkKKyAgSW5vZGUgdGFibGUgYXQgODY1LTg2NSAoYmcgIzAgKyA4NjUpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNzg2NDMyLTgxOTE5OQorICBGcmVlIGlub2RlczogMzg1LTQwMAorR3JvdXAgMjU6IChCbG9ja3MgODE5MjAwLTg1MTk2NykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkyMDAsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTIwMS04MTkyMDEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4MTkyMDItODE5ODcyCisgIEJsb2NrIGJpdG1hcCBhdCA2OTggKGJnICMwICsgNjk4KSwgSW5vZGUgYml0bWFwIGF0IDc4MiAoYmcgIzAgKyA3ODIpCisgIElub2RlIHRhYmxlIGF0IDg2Ni04NjYgKGJnICMwICsgODY2KQorICAzMjA5NSBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDgxOTg3My04NTE5NjcKKyAgRnJlZSBpbm9kZXM6IDQwMS00MTYKK0dyb3VwIDI2OiAoQmxvY2tzIDg1MTk2OC04ODQ3MzUpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDY5OSAoYmcgIzAgKyA2OTkpLCBJbm9kZSBiaXRtYXAgYXQgNzgzIChiZyAjMCArIDc4MykKKyAgSW5vZGUgdGFibGUgYXQgODY3LTg2NyAoYmcgIzAgKyA4NjcpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogODUxOTY4LTg4NDczNQorICBGcmVlIGlub2RlczogNDE3LTQzMgorR3JvdXAgMjc6IChCbG9ja3MgODg0NzM2LTkxNzUwMykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4ODQ3MzYsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDg4NDczNy04ODQ3MzcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4ODQ3MzgtODg1NDA4CisgIEJsb2NrIGJpdG1hcCBhdCA3MDAgKGJnICMwICsgNzAwKSwgSW5vZGUgYml0bWFwIGF0IDc4NCAoYmcgIzAgKyA3ODQpCisgIElub2RlIHRhYmxlIGF0IDg2OC04NjggKGJnICMwICsgODY4KQorICAzMjA5NSBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDg4NTQwOS05MTc1MDMKKyAgRnJlZSBpbm9kZXM6IDQzMy00NDgKK0dyb3VwIDI4OiAoQmxvY2tzIDkxNzUwNC05NTAyNzEpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcwMSAoYmcgIzAgKyA3MDEpLCBJbm9kZSBiaXRtYXAgYXQgNzg1IChiZyAjMCArIDc4NSkKKyAgSW5vZGUgdGFibGUgYXQgODY5LTg2OSAoYmcgIzAgKyA4NjkpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogOTE3NTA0LTk1MDI3MQorICBGcmVlIGlub2RlczogNDQ5LTQ2NAorR3JvdXAgMjk6IChCbG9ja3MgOTUwMjcyLTk4MzAzOSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzAyIChiZyAjMCArIDcwMiksIElub2RlIGJpdG1hcCBhdCA3ODYgKGJnICMwICsgNzg2KQorICBJbm9kZSB0YWJsZSBhdCA4NzAtODcwIChiZyAjMCArIDg3MCkKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA5NTAyNzItOTgzMDM5CisgIEZyZWUgaW5vZGVzOiA0NjUtNDgwCitHcm91cCAzMDogKEJsb2NrcyA5ODMwNDAtMTAxNTgwNykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzAzIChiZyAjMCArIDcwMyksIElub2RlIGJpdG1hcCBhdCA3ODcgKGJnICMwICsgNzg3KQorICBJbm9kZSB0YWJsZSBhdCA4NzEtODcxIChiZyAjMCArIDg3MSkKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA5ODMwNDAtMTAxNTgwNworICBGcmVlIGlub2RlczogNDgxLTQ5NgorR3JvdXAgMzE6IChCbG9ja3MgMTAxNTgwOC0xMDQ4NTc1KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDQgKGJnICMwICsgNzA0KSwgSW5vZGUgYml0bWFwIGF0IDc4OCAoYmcgIzAgKyA3ODgpCisgIElub2RlIHRhYmxlIGF0IDg3Mi04NzIgKGJnICMwICsgODcyKQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEwMTU4MDgtMTA0ODU3NQorICBGcmVlIGlub2RlczogNDk3LTUxMgorR3JvdXAgMzI6IChCbG9ja3MgMTA0ODU3Ni0xMDgxMzQzKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDUgKGJnICMwICsgNzA1KSwgSW5vZGUgYml0bWFwIGF0IDc4OSAoYmcgIzAgKyA3ODkpCisgIElub2RlIHRhYmxlIGF0IDg3My04NzMgKGJnICMwICsgODczKQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEwNDg1NzYtMTA4MTM0MworICBGcmVlIGlub2RlczogNTEzLTUyOAorR3JvdXAgMzM6IChCbG9ja3MgMTA4MTM0NC0xMTE0MTExKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDYgKGJnICMwICsgNzA2KSwgSW5vZGUgYml0bWFwIGF0IDc5MCAoYmcgIzAgKyA3OTApCisgIElub2RlIHRhYmxlIGF0IDg3NC04NzQgKGJnICMwICsgODc0KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEwODEzNDQtMTExNDExMQorICBGcmVlIGlub2RlczogNTI5LTU0NAorR3JvdXAgMzQ6IChCbG9ja3MgMTExNDExMi0xMTQ2ODc5KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDcgKGJnICMwICsgNzA3KSwgSW5vZGUgYml0bWFwIGF0IDc5MSAoYmcgIzAgKyA3OTEpCisgIElub2RlIHRhYmxlIGF0IDg3NS04NzUgKGJnICMwICsgODc1KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDExMTQxMTItMTE0Njg3OQorICBGcmVlIGlub2RlczogNTQ1LTU2MAorR3JvdXAgMzU6IChCbG9ja3MgMTE0Njg4MC0xMTc5NjQ3KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDggKGJnICMwICsgNzA4KSwgSW5vZGUgYml0bWFwIGF0IDc5MiAoYmcgIzAgKyA3OTIpCisgIElub2RlIHRhYmxlIGF0IDg3Ni04NzYgKGJnICMwICsgODc2KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDExNDY4ODAtMTE3OTY0NworICBGcmVlIGlub2RlczogNTYxLTU3NgorR3JvdXAgMzY6IChCbG9ja3MgMTE3OTY0OC0xMjEyNDE1KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MDkgKGJnICMwICsgNzA5KSwgSW5vZGUgYml0bWFwIGF0IDc5MyAoYmcgIzAgKyA3OTMpCisgIElub2RlIHRhYmxlIGF0IDg3Ny04NzcgKGJnICMwICsgODc3KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDExNzk2NDgtMTIxMjQxNQorICBGcmVlIGlub2RlczogNTc3LTU5MgorR3JvdXAgMzc6IChCbG9ja3MgMTIxMjQxNi0xMjQ1MTgzKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MTAgKGJnICMwICsgNzEwKSwgSW5vZGUgYml0bWFwIGF0IDc5NCAoYmcgIzAgKyA3OTQpCisgIElub2RlIHRhYmxlIGF0IDg3OC04NzggKGJnICMwICsgODc4KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEyMTI0MTYtMTI0NTE4MworICBGcmVlIGlub2RlczogNTkzLTYwOAorR3JvdXAgMzg6IChCbG9ja3MgMTI0NTE4NC0xMjc3OTUxKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MTEgKGJnICMwICsgNzExKSwgSW5vZGUgYml0bWFwIGF0IDc5NSAoYmcgIzAgKyA3OTUpCisgIElub2RlIHRhYmxlIGF0IDg3OS04NzkgKGJnICMwICsgODc5KQorICAzMjc2OCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDEyNDUxODQtMTI3Nzk1MQorICBGcmVlIGlub2RlczogNjA5LTYyNAorR3JvdXAgMzk6IChCbG9ja3MgMTI3Nzk1Mi0xMzEwNzE5KSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzEyIChiZyAjMCArIDcxMiksIElub2RlIGJpdG1hcCBhdCA3OTYgKGJnICMwICsgNzk2KQorICBJbm9kZSB0YWJsZSBhdCA4ODAtODgwIChiZyAjMCArIDg4MCkKKyAgMzI3NjcgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAxMjc3OTUyLTEzMTA3MTgKKyAgRnJlZSBpbm9kZXM6IDYyNS02NDAKK0dyb3VwIDQwOiAoQmxvY2tzIDEzMTA3MjAtMTM0MzQ4NykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxMyAoYmcgIzAgKyA3MTMpLCBJbm9kZSBiaXRtYXAgYXQgNzk3IChiZyAjMCArIDc5NykKKyAgSW5vZGUgdGFibGUgYXQgODgxLTg4MSAoYmcgIzAgKyA4ODEpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDY0MS02NTYKK0dyb3VwIDQxOiAoQmxvY2tzIDEzNDM0ODgtMTM3NjI1NSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxNCAoYmcgIzAgKyA3MTQpLCBJbm9kZSBiaXRtYXAgYXQgNzk4IChiZyAjMCArIDc5OCkKKyAgSW5vZGUgdGFibGUgYXQgODgyLTg4MiAoYmcgIzAgKyA4ODIpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDY1Ny02NzIKK0dyb3VwIDQyOiAoQmxvY2tzIDEzNzYyNTYtMTQwOTAyMykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxNSAoYmcgIzAgKyA3MTUpLCBJbm9kZSBiaXRtYXAgYXQgNzk5IChiZyAjMCArIDc5OSkKKyAgSW5vZGUgdGFibGUgYXQgODgzLTg4MyAoYmcgIzAgKyA4ODMpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDY3My02ODgKK0dyb3VwIDQzOiAoQmxvY2tzIDE0MDkwMjQtMTQ0MTc5MSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxNiAoYmcgIzAgKyA3MTYpLCBJbm9kZSBiaXRtYXAgYXQgODAwIChiZyAjMCArIDgwMCkKKyAgSW5vZGUgdGFibGUgYXQgODg0LTg4NCAoYmcgIzAgKyA4ODQpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDY4OS03MDQKK0dyb3VwIDQ0OiAoQmxvY2tzIDE0NDE3OTItMTQ3NDU1OSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxNyAoYmcgIzAgKyA3MTcpLCBJbm9kZSBiaXRtYXAgYXQgODAxIChiZyAjMCArIDgwMSkKKyAgSW5vZGUgdGFibGUgYXQgODg1LTg4NSAoYmcgIzAgKyA4ODUpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDcwNS03MjAKK0dyb3VwIDQ1OiAoQmxvY2tzIDE0NzQ1NjAtMTUwNzMyNykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxOCAoYmcgIzAgKyA3MTgpLCBJbm9kZSBiaXRtYXAgYXQgODAyIChiZyAjMCArIDgwMikKKyAgSW5vZGUgdGFibGUgYXQgODg2LTg4NiAoYmcgIzAgKyA4ODYpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDcyMS03MzYKK0dyb3VwIDQ2OiAoQmxvY2tzIDE1MDczMjgtMTU0MDA5NSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcxOSAoYmcgIzAgKyA3MTkpLCBJbm9kZSBiaXRtYXAgYXQgODAzIChiZyAjMCArIDgwMykKKyAgSW5vZGUgdGFibGUgYXQgODg3LTg4NyAoYmcgIzAgKyA4ODcpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDczNy03NTIKK0dyb3VwIDQ3OiAoQmxvY2tzIDE1NDAwOTYtMTU3Mjg2MykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcyMCAoYmcgIzAgKyA3MjApLCBJbm9kZSBiaXRtYXAgYXQgODA0IChiZyAjMCArIDgwNCkKKyAgSW5vZGUgdGFibGUgYXQgODg4LTg4OCAoYmcgIzAgKyA4ODgpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDc1My03NjgKK0dyb3VwIDQ4OiAoQmxvY2tzIDE1NzI4NjQtMTYwNTYzMSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDcyMSAoYmcgIzAgKyA3MjEpLCBJbm9kZSBiaXRtYXAgYXQgODA1IChiZyAjMCArIDgwNSkKKyAgSW5vZGUgdGFibGUgYXQgODg5LTg4OSAoYmcgIzAgKyA4ODkpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDc2OS03ODQKK0dyb3VwIDQ5OiAoQmxvY2tzIDE2MDU2MzItMTYzODM5OSkgW0lOT0RFX1VOSU5JVF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTYwNTYzMiwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTYwNTYzMy0xNjA1NjMzCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTYwNTYzNC0xNjA2MzA0CisgIEJsb2NrIGJpdG1hcCBhdCA3MjIgKGJnICMwICsgNzIyKSwgSW5vZGUgYml0bWFwIGF0IDgwNiAoYmcgIzAgKyA4MDYpCisgIElub2RlIHRhYmxlIGF0IDg5MC04OTAgKGJnICMwICsgODkwKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA3ODUtODAwCitHcm91cCA1MDogKEJsb2NrcyAxNjM4NDAwLTE2NzExNjcpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjMgKGJnICMwICsgNzIzKSwgSW5vZGUgYml0bWFwIGF0IDgwNyAoYmcgIzAgKyA4MDcpCisgIElub2RlIHRhYmxlIGF0IDg5MS04OTEgKGJnICMwICsgODkxKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4MDEtODE2CitHcm91cCA1MTogKEJsb2NrcyAxNjcxMTY4LTE3MDM5MzUpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjQgKGJnICMwICsgNzI0KSwgSW5vZGUgYml0bWFwIGF0IDgwOCAoYmcgIzAgKyA4MDgpCisgIElub2RlIHRhYmxlIGF0IDg5Mi04OTIgKGJnICMwICsgODkyKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4MTctODMyCitHcm91cCA1MjogKEJsb2NrcyAxNzAzOTM2LTE3MzY3MDMpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjUgKGJnICMwICsgNzI1KSwgSW5vZGUgYml0bWFwIGF0IDgwOSAoYmcgIzAgKyA4MDkpCisgIElub2RlIHRhYmxlIGF0IDg5My04OTMgKGJnICMwICsgODkzKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4MzMtODQ4CitHcm91cCA1MzogKEJsb2NrcyAxNzM2NzA0LTE3Njk0NzEpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjYgKGJnICMwICsgNzI2KSwgSW5vZGUgYml0bWFwIGF0IDgxMCAoYmcgIzAgKyA4MTApCisgIElub2RlIHRhYmxlIGF0IDg5NC04OTQgKGJnICMwICsgODk0KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4NDktODY0CitHcm91cCA1NDogKEJsb2NrcyAxNzY5NDcyLTE4MDIyMzkpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjcgKGJnICMwICsgNzI3KSwgSW5vZGUgYml0bWFwIGF0IDgxMSAoYmcgIzAgKyA4MTEpCisgIElub2RlIHRhYmxlIGF0IDg5NS04OTUgKGJnICMwICsgODk1KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4NjUtODgwCitHcm91cCA1NTogKEJsb2NrcyAxODAyMjQwLTE4MzUwMDcpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjggKGJnICMwICsgNzI4KSwgSW5vZGUgYml0bWFwIGF0IDgxMiAoYmcgIzAgKyA4MTIpCisgIElub2RlIHRhYmxlIGF0IDg5Ni04OTYgKGJnICMwICsgODk2KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4ODEtODk2CitHcm91cCA1NjogKEJsb2NrcyAxODM1MDA4LTE4Njc3NzUpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MjkgKGJnICMwICsgNzI5KSwgSW5vZGUgYml0bWFwIGF0IDgxMyAoYmcgIzAgKyA4MTMpCisgIElub2RlIHRhYmxlIGF0IDg5Ny04OTcgKGJnICMwICsgODk3KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA4OTctOTEyCitHcm91cCA1NzogKEJsb2NrcyAxODY3Nzc2LTE5MDA1NDMpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzAgKGJnICMwICsgNzMwKSwgSW5vZGUgYml0bWFwIGF0IDgxNCAoYmcgIzAgKyA4MTQpCisgIElub2RlIHRhYmxlIGF0IDg5OC04OTggKGJnICMwICsgODk4KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5MTMtOTI4CitHcm91cCA1ODogKEJsb2NrcyAxOTAwNTQ0LTE5MzMzMTEpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzEgKGJnICMwICsgNzMxKSwgSW5vZGUgYml0bWFwIGF0IDgxNSAoYmcgIzAgKyA4MTUpCisgIElub2RlIHRhYmxlIGF0IDg5OS04OTkgKGJnICMwICsgODk5KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5MjktOTQ0CitHcm91cCA1OTogKEJsb2NrcyAxOTMzMzEyLTE5NjYwNzkpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzIgKGJnICMwICsgNzMyKSwgSW5vZGUgYml0bWFwIGF0IDgxNiAoYmcgIzAgKyA4MTYpCisgIElub2RlIHRhYmxlIGF0IDkwMC05MDAgKGJnICMwICsgOTAwKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5NDUtOTYwCitHcm91cCA2MDogKEJsb2NrcyAxOTY2MDgwLTE5OTg4NDcpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzMgKGJnICMwICsgNzMzKSwgSW5vZGUgYml0bWFwIGF0IDgxNyAoYmcgIzAgKyA4MTcpCisgIElub2RlIHRhYmxlIGF0IDkwMS05MDEgKGJnICMwICsgOTAxKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5NjEtOTc2CitHcm91cCA2MTogKEJsb2NrcyAxOTk4ODQ4LTIwMzE2MTUpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzQgKGJnICMwICsgNzM0KSwgSW5vZGUgYml0bWFwIGF0IDgxOCAoYmcgIzAgKyA4MTgpCisgIElub2RlIHRhYmxlIGF0IDkwMi05MDIgKGJnICMwICsgOTAyKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5NzctOTkyCitHcm91cCA2MjogKEJsb2NrcyAyMDMxNjE2LTIwNjQzODMpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzUgKGJnICMwICsgNzM1KSwgSW5vZGUgYml0bWFwIGF0IDgxOSAoYmcgIzAgKyA4MTkpCisgIElub2RlIHRhYmxlIGF0IDkwMy05MDMgKGJnICMwICsgOTAzKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiA5OTMtMTAwOAorR3JvdXAgNjM6IChCbG9ja3MgMjA2NDM4NC0yMDk3MTUxKSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzM2IChiZyAjMCArIDczNiksIElub2RlIGJpdG1hcCBhdCA4MjAgKGJnICMwICsgODIwKQorICBJbm9kZSB0YWJsZSBhdCA5MDQtOTA0IChiZyAjMCArIDkwNCkKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTAwOS0xMDI0CitHcm91cCA2NDogKEJsb2NrcyAyMDk3MTUyLTIxMjk5MTkpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3MzcgKGJnICMwICsgNzM3KSwgSW5vZGUgYml0bWFwIGF0IDgyMSAoYmcgIzAgKyA4MjEpCisgIElub2RlIHRhYmxlIGF0IDkwNS05MDUgKGJnICMwICsgOTA1KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiAxMDI1LTEwNDAKK0dyb3VwIDY1OiAoQmxvY2tzIDIxMjk5MjAtMjE2MjY4NykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDczOCAoYmcgIzAgKyA3MzgpLCBJbm9kZSBiaXRtYXAgYXQgODIyIChiZyAjMCArIDgyMikKKyAgSW5vZGUgdGFibGUgYXQgOTA2LTkwNiAoYmcgIzAgKyA5MDYpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDEwNDEtMTA1NgorR3JvdXAgNjY6IChCbG9ja3MgMjE2MjY4OC0yMTk1NDU1KSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzM5IChiZyAjMCArIDczOSksIElub2RlIGJpdG1hcCBhdCA4MjMgKGJnICMwICsgODIzKQorICBJbm9kZSB0YWJsZSBhdCA5MDctOTA3IChiZyAjMCArIDkwNykKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTA1Ny0xMDcyCitHcm91cCA2NzogKEJsb2NrcyAyMTk1NDU2LTIyMjgyMjMpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3NDAgKGJnICMwICsgNzQwKSwgSW5vZGUgYml0bWFwIGF0IDgyNCAoYmcgIzAgKyA4MjQpCisgIElub2RlIHRhYmxlIGF0IDkwOC05MDggKGJnICMwICsgOTA4KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiAxMDczLTEwODgKK0dyb3VwIDY4OiAoQmxvY2tzIDIyMjgyMjQtMjI2MDk5MSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDc0MSAoYmcgIzAgKyA3NDEpLCBJbm9kZSBiaXRtYXAgYXQgODI1IChiZyAjMCArIDgyNSkKKyAgSW5vZGUgdGFibGUgYXQgOTA5LTkwOSAoYmcgIzAgKyA5MDkpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDEwODktMTEwNAorR3JvdXAgNjk6IChCbG9ja3MgMjI2MDk5Mi0yMjkzNzU5KSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzQyIChiZyAjMCArIDc0MiksIElub2RlIGJpdG1hcCBhdCA4MjYgKGJnICMwICsgODI2KQorICBJbm9kZSB0YWJsZSBhdCA5MTAtOTEwIChiZyAjMCArIDkxMCkKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTEwNS0xMTIwCitHcm91cCA3MDogKEJsb2NrcyAyMjkzNzYwLTIzMjY1MjcpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3NDMgKGJnICMwICsgNzQzKSwgSW5vZGUgYml0bWFwIGF0IDgyNyAoYmcgIzAgKyA4MjcpCisgIElub2RlIHRhYmxlIGF0IDkxMS05MTEgKGJnICMwICsgOTExKQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiAxMTIxLTExMzYKK0dyb3VwIDcxOiAoQmxvY2tzIDIzMjY1MjgtMjM1OTI5NSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDc0NCAoYmcgIzAgKyA3NDQpLCBJbm9kZSBiaXRtYXAgYXQgODI4IChiZyAjMCArIDgyOCkKKyAgSW5vZGUgdGFibGUgYXQgOTEyLTkxMiAoYmcgIzAgKyA5MTIpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDExMzctMTE1MgorR3JvdXAgNzI6IChCbG9ja3MgMjM1OTI5Ni0yMzkyMDYzKSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzQ1IChiZyAjMCArIDc0NSksIElub2RlIGJpdG1hcCBhdCA4MjkgKGJnICMwICsgODI5KQorICBJbm9kZSB0YWJsZSBhdCA5MTMtOTEzIChiZyAjMCArIDkxMykKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTE1My0xMTY4CitHcm91cCA3MzogKEJsb2NrcyAyMzkyMDY0LTI0MjQ4MzEpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3NDYgKGJnICMwICsgNzQ2KSwgSW5vZGUgYml0bWFwIGF0IDgzMCAoYmcgIzAgKyA4MzApCisgIElub2RlIHRhYmxlIGF0IDkxNC05MTQgKGJnICMwICsgOTE0KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiAxMTY5LTExODQKK0dyb3VwIDc0OiAoQmxvY2tzIDI0MjQ4MzItMjQ1NzU5OSkgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDc0NyAoYmcgIzAgKyA3NDcpLCBJbm9kZSBiaXRtYXAgYXQgODMxIChiZyAjMCArIDgzMSkKKyAgSW5vZGUgdGFibGUgYXQgOTE1LTkxNSAoYmcgIzAgKyA5MTUpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDExODUtMTIwMAorR3JvdXAgNzU6IChCbG9ja3MgMjQ1NzYwMC0yNDkwMzY3KSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzQ4IChiZyAjMCArIDc0OCksIElub2RlIGJpdG1hcCBhdCA4MzIgKGJnICMwICsgODMyKQorICBJbm9kZSB0YWJsZSBhdCA5MTYtOTE2IChiZyAjMCArIDkxNikKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTIwMS0xMjE2CitHcm91cCA3NjogKEJsb2NrcyAyNDkwMzY4LTI1MjMxMzUpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3NDkgKGJnICMwICsgNzQ5KSwgSW5vZGUgYml0bWFwIGF0IDgzMyAoYmcgIzAgKyA4MzMpCisgIElub2RlIHRhYmxlIGF0IDkxNy05MTcgKGJnICMwICsgOTE3KQorICAwIGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogCisgIEZyZWUgaW5vZGVzOiAxMjE3LTEyMzIKK0dyb3VwIDc3OiAoQmxvY2tzIDI1MjMxMzYtMjU1NTkwMykgW0lOT0RFX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDc1MCAoYmcgIzAgKyA3NTApLCBJbm9kZSBiaXRtYXAgYXQgODM0IChiZyAjMCArIDgzNCkKKyAgSW5vZGUgdGFibGUgYXQgOTE4LTkxOCAoYmcgIzAgKyA5MTgpCisgIDAgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAKKyAgRnJlZSBpbm9kZXM6IDEyMzMtMTI0OAorR3JvdXAgNzg6IChCbG9ja3MgMjU1NTkwNC0yNTg4NjcxKSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzUxIChiZyAjMCArIDc1MSksIElub2RlIGJpdG1hcCBhdCA4MzUgKGJnICMwICsgODM1KQorICBJbm9kZSB0YWJsZSBhdCA5MTktOTE5IChiZyAjMCArIDkxOSkKKyAgMCBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IAorICBGcmVlIGlub2RlczogMTI0OS0xMjY0CitHcm91cCA3OTogKEJsb2NrcyAyNTg4NjcyLTI2MjE0MzkpIFtJTk9ERV9VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA3NTIgKGJnICMwICsgNzUyKSwgSW5vZGUgYml0bWFwIGF0IDgzNiAoYmcgIzAgKyA4MzYpCisgIElub2RlIHRhYmxlIGF0IDkyMC05MjAgKGJnICMwICsgOTIwKQorICAzMDA0NyBmcmVlIGJsb2NrcywgMTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDI1OTEzOTMtMjYyMTQzOQorICBGcmVlIGlub2RlczogMTI2NS0xMjgwCitHcm91cCA4MDogKEJsb2NrcyAyNjIxNDQwLTI2NTQyMDcpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVF0KKyAgQmxvY2sgYml0bWFwIGF0IDc1MyAoYmcgIzAgKyA3NTMpLCBJbm9kZSBiaXRtYXAgYXQgODM3IChiZyAjMCArIDgzNykKKyAgSW5vZGUgdGFibGUgYXQgOTIxLTkyMSAoYmcgIzAgKyA5MjEpCisgIDMyNzY4IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMjYyMTQ0MC0yNjU0MjA3CisgIEZyZWUgaW5vZGVzOiAxMjgxLTEyOTYKK0dyb3VwIDgxOiAoQmxvY2tzIDI2NTQyMDgtMjY4Njk3NSkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNjU0MjA4LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNjU0MjA5LTI2NTQyMDkKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNjU0MjEwLTI2NTQ4ODAKKyAgQmxvY2sgYml0bWFwIGF0IDc1NCAoYmcgIzAgKyA3NTQpLCBJbm9kZSBiaXRtYXAgYXQgODM4IChiZyAjMCArIDgzOCkKKyAgSW5vZGUgdGFibGUgYXQgOTIyLTkyMiAoYmcgIzAgKyA5MjIpCisgIDMyMDk1IGZyZWUgYmxvY2tzLCAxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMjY1NDg4MS0yNjg2OTc1CisgIEZyZWUgaW5vZGVzOiAxMjk3LTEzMTIKK0dyb3VwIDgyOiAoQmxvY2tzIDI2ODY5NzYtMjcxOTc0MykgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzU1IChiZyAjMCArIDc1NSksIElub2RlIGJpdG1hcCBhdCA4MzkgKGJnICMwICsgODM5KQorICBJbm9kZSB0YWJsZSBhdCA5MjMtOTIzIChiZyAjMCArIDkyMykKKyAgMzI3NjggZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAyNjg2OTc2LTI3MTk3NDMKKyAgRnJlZSBpbm9kZXM6IDEzMTMtMTMyOAorR3JvdXAgODM6IChCbG9ja3MgMjcxOTc0NC0yNzQ5OTk5KSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgNzU2IChiZyAjMCArIDc1NiksIElub2RlIGJpdG1hcCBhdCA4NDAgKGJnICMwICsgODQwKQorICBJbm9kZSB0YWJsZSBhdCA5MjQtOTI0IChiZyAjMCArIDkyNCkKKyAgMzAyNTYgZnJlZSBibG9ja3MsIDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxNiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAyNzE5NzQ0LTI3NDk5OTkKKyAgRnJlZSBpbm9kZXM6IDEzMjktMTM0NApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fYmlnam91cm5hbC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9iaWdqb3VybmFsL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmVhMDgyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fYmlnam91cm5hbC9zY3JpcHQKQEAgLTAsMCArMSwxMiBAQAorREVTQ1JJUFRJT049ImpvdXJuYWwgb3ZlciA0R0IgaW4gc2l6ZSIKK0ZTX1NJWkU9MTEwMDAwMDAKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCitNS0UyRlNfT1BUUz0iLXQgZXh0NCAtRyA1MTIgLU4gMTI4MCAtSiBzaXplPTUwMDAgLXEgLUUgbGF6eV9qb3VybmFsX2luaXQsbGF6eV9pdGFibGVfaW5pdCxub2Rpc2NhcmQiCitpZiBbICQodW5hbWUgLXMpID0gIkRhcndpbiIgXTsgdGhlbgorCSMgY3JlYXRlcyBhIDQ0R0IgZmlsZXN5c3RlbQorCWVjaG8gIiR0ZXN0X25hbWU6ICRERVNDUklQVElPTjogc2tpcHBlZCBmb3IgSEZTKyAobm8gc3BhcnNlIGZpbGVzKSIKKwlyZXR1cm4gMAorZmkKKy4gJGNtZF9kaXIvcnVuX21rZTJmcwordW5zZXQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9kYXNkX2JzL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL21fZGFzZF9icy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTU1ZThmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fZGFzZF9icy9leHBlY3QuMQpAQCAtMCwwICsxLDY1IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMzI3NjggMmsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkxNjM4NAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDExMDQvMzI3NjggYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxNjM4NAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAzMjc2OAorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAxNjM4CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDMxNjY0CitGcmVlIGlub2RlczogICAgICAgICAgICAgIDE2MzczCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDAKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMjA0OAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAyMDQ4CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDMxCitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDE2Mzg0CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDE2Mzg0CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgNTEyCitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDAtMTYzODMpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAwLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxLTEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyLTMyCisgIEJsb2NrIGJpdG1hcCBhdCAzMyAoKzMzKQorICBJbm9kZSBiaXRtYXAgYXQgMzQgKCszNCkKKyAgSW5vZGUgdGFibGUgYXQgMzUtNTQ2ICgrMzUpCisgIDE1ODI3IGZyZWUgYmxvY2tzLCA4MTgxIGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NTctMTYzODMKKyAgRnJlZSBpbm9kZXM6IDEyLTgxOTIKK0dyb3VwIDE6IChCbG9ja3MgMTYzODQtMzI3NjcpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDE2Mzg0LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxNjM4NS0xNjM4NQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDE2Mzg2LTE2NDE2CisgIEJsb2NrIGJpdG1hcCBhdCAxNjQxNyAoKzMzKQorICBJbm9kZSBiaXRtYXAgYXQgMTY0MTggKCszNCkKKyAgSW5vZGUgdGFibGUgYXQgMTY0MTktMTY5MzAgKCszNSkKKyAgMTU4MzcgZnJlZSBibG9ja3MsIDgxOTIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2OTMxLTMyNzY3CisgIEZyZWUgaW5vZGVzOiA4MTkzLTE2Mzg0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9kYXNkX2JzL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2Rhc2RfYnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YjkwODUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9kYXNkX2JzL3NjcmlwdApAQCAtMCwwICsxLDYgQEAKK0RFU0NSSVBUSU9OPSIyMDQ4IGJ5dGUgc2VjdG9yIGRldmljZXMiCitGU19TSVpFPTY1NTM2CitNS0UyRlNfREVWSUNFX1NFQ1RTSVpFPTIwNDgKK2V4cG9ydCBNS0UyRlNfREVWSUNFX1NFQ1RTSVpFCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IE1LRTJGU19ERVZJQ0VfU0VDVFNJWkUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2Rlc2Nfc2l6ZV8xMjgvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvbV9kZXNjX3NpemVfMTI4L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2RhODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9kZXNjX3NpemVfMTI4L2V4cGVjdC4xCkBAIC0wLDAgKzEsODM4IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMTMxMDcyIDFrIGJsb2NrcyBhbmQgODE5MiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkxMDI1LCAzMDczLCA1MTIxLCA3MTY5LCA5MjE3LCAyNTYwMSwgMjc2NDksIDUwMTc3LCA4Mjk0NSwgMTI4MDAxCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgICAgCAgICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAgIAgICAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgICAgCAgICAgICGRvbmUKKworRmlsZXN5c3RlbSBmZWF0dXJlczogZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgc3BhcnNlX3N1cGVyCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS84MTkyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDI5OC8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgODE5MgorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAxMzEwNzIKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgNjU1MworRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxMjY3NzQKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgODE4MQorRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICAxMjgKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMjU2CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDEwMjQKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMTAyNAorSW5vZGVzIHBlciBncm91cDogICAgICAgICA2NAorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICA4CitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMTAyNCkKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMTcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxOC0yNzMKKyAgQmxvY2sgYml0bWFwIGF0IDI3NCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCAyNzUgKCsyNzQpCisgIElub2RlIHRhYmxlIGF0IDI3Ni0yODMgKCsyNzUpCisgIDcyNyBmcmVlIGJsb2NrcywgNTMgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5OC0xMDI0CisgIEZyZWUgaW5vZGVzOiAxMi02NAorR3JvdXAgMTogKEJsb2NrcyAxMDI1LTIwNDgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDEwMjUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEwMjYtMTA0MQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDEwNDItMTI5NworICBCbG9jayBiaXRtYXAgYXQgMTI5OCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCAxMjk5ICgrMjc0KQorICBJbm9kZSB0YWJsZSBhdCAxMzAwLTEzMDcgKCsyNzUpCisgIDc0MSBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzMDgtMjA0OAorICBGcmVlIGlub2RlczogNjUtMTI4CitHcm91cCAyOiAoQmxvY2tzIDIwNDktMzA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDUxLTIwNTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA1OS0zMDcyCisgIEZyZWUgaW5vZGVzOiAxMjktMTkyCitHcm91cCAzOiAoQmxvY2tzIDMwNzMtNDA5NikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMzA3MywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzA3NC0zMDg5CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMzA5MC0zMzQ1CisgIEJsb2NrIGJpdG1hcCBhdCAzMzQ2ICgrMjczKSwgSW5vZGUgYml0bWFwIGF0IDMzNDcgKCsyNzQpCisgIElub2RlIHRhYmxlIGF0IDMzNDgtMzM1NSAoKzI3NSkKKyAgNzQxIGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM1Ni00MDk2CisgIEZyZWUgaW5vZGVzOiAxOTMtMjU2CitHcm91cCA0OiAoQmxvY2tzIDQwOTctNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk5LTQxMDYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEwNy01MTIwCisgIEZyZWUgaW5vZGVzOiAyNTctMzIwCitHcm91cCA1OiAoQmxvY2tzIDUxMjEtNjE0NCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTEyMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNTEyMi01MTM3CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNTEzOC01MzkzCisgIEJsb2NrIGJpdG1hcCBhdCA1Mzk0ICgrMjczKSwgSW5vZGUgYml0bWFwIGF0IDUzOTUgKCsyNzQpCisgIElub2RlIHRhYmxlIGF0IDUzOTYtNTQwMyAoKzI3NSkKKyAgNzQxIGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTQwNC02MTQ0CisgIEZyZWUgaW5vZGVzOiAzMjEtMzg0CitHcm91cCA2OiAoQmxvY2tzIDYxNDUtNzE2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYxNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYxNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ3LTYxNTQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE1NS03MTY4CisgIEZyZWUgaW5vZGVzOiAzODUtNDQ4CitHcm91cCA3OiAoQmxvY2tzIDcxNjktODE5MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNzE2OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNzE3MC03MTg1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNzE4Ni03NDQxCisgIEJsb2NrIGJpdG1hcCBhdCA3NDQyICgrMjczKSwgSW5vZGUgYml0bWFwIGF0IDc0NDMgKCsyNzQpCisgIElub2RlIHRhYmxlIGF0IDc0NDQtNzQ1MSAoKzI3NSkKKyAgNzQxIGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzQ1Mi04MTkyCisgIEZyZWUgaW5vZGVzOiA0NDktNTEyCitHcm91cCA4OiAoQmxvY2tzIDgxOTMtOTIxNikKKyAgQmxvY2sgYml0bWFwIGF0IDgxOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTk1LTgyMDIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODIwMy05MjE2CisgIEZyZWUgaW5vZGVzOiA1MTMtNTc2CitHcm91cCA5OiAoQmxvY2tzIDkyMTctMTAyNDApCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDkyMTcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDkyMTgtOTIzMworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDkyMzQtOTQ4OQorICBCbG9jayBiaXRtYXAgYXQgOTQ5MCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCA5NDkxICgrMjc0KQorICBJbm9kZSB0YWJsZSBhdCA5NDkyLTk0OTkgKCsyNzUpCisgIDc0MSBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk1MDAtMTAyNDAKKyAgRnJlZSBpbm9kZXM6IDU3Ny02NDAKK0dyb3VwIDEwOiAoQmxvY2tzIDEwMjQxLTExMjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDMtMTAyNTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNTEtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDY0MS03MDQKK0dyb3VwIDExOiAoQmxvY2tzIDExMjY1LTEyMjg4KQorICBCbG9jayBiaXRtYXAgYXQgMTEyNjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExMjY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTEyNjctMTEyNzQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNzUtMTIyODgKKyAgRnJlZSBpbm9kZXM6IDcwNS03NjgKK0dyb3VwIDEyOiAoQmxvY2tzIDEyMjg5LTEzMzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTIyODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyOTEtMTIyOTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIyOTktMTMzMTIKKyAgRnJlZSBpbm9kZXM6IDc2OS04MzIKK0dyb3VwIDEzOiAoQmxvY2tzIDEzMzEzLTE0MzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMzE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMzMTUtMTMzMjIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzMjMtMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDgzMy04OTYKK0dyb3VwIDE0OiAoQmxvY2tzIDE0MzM3LTE1MzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTQzMzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0MzM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQzMzktMTQzNDYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQzNDctMTUzNjAKKyAgRnJlZSBpbm9kZXM6IDg5Ny05NjAKK0dyb3VwIDE1OiAoQmxvY2tzIDE1MzYxLTE2Mzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTUzNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUzNjMtMTUzNzAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUzNzEtMTYzODQKKyAgRnJlZSBpbm9kZXM6IDk2MS0xMDI0CitHcm91cCAxNjogKEJsb2NrcyAxNjM4NS0xNzQwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE2Mzg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjM4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2Mzg3LTE2Mzk0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2Mzk1LTE3NDA4CisgIEZyZWUgaW5vZGVzOiAxMDI1LTEwODgKK0dyb3VwIDE3OiAoQmxvY2tzIDE3NDA5LTE4NDMyKQorICBCbG9jayBiaXRtYXAgYXQgMTc0MDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE3NDEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTc0MTEtMTc0MTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTc0MTktMTg0MzIKKyAgRnJlZSBpbm9kZXM6IDEwODktMTE1MgorR3JvdXAgMTg6IChCbG9ja3MgMTg0MzMtMTk0NTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxODQzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTg0MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODQzNS0xODQ0MiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxODQ0My0xOTQ1NgorICBGcmVlIGlub2RlczogMTE1My0xMjE2CitHcm91cCAxOTogKEJsb2NrcyAxOTQ1Ny0yMDQ4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE5NDU3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxOTQ1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE5NDU5LTE5NDY2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5NDY3LTIwNDgwCisgIEZyZWUgaW5vZGVzOiAxMjE3LTEyODAKK0dyb3VwIDIwOiAoQmxvY2tzIDIwNDgxLTIxNTA0KQorICBCbG9jayBiaXRtYXAgYXQgMjA0ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwNDgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA0ODMtMjA0OTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA0OTEtMjE1MDQKKyAgRnJlZSBpbm9kZXM6IDEyODEtMTM0NAorR3JvdXAgMjE6IChCbG9ja3MgMjE1MDUtMjI1MjgpCisgIEJsb2NrIGJpdG1hcCBhdCAyMTUwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjE1MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMTUwNy0yMTUxNCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMTUxNS0yMjUyOAorICBGcmVlIGlub2RlczogMTM0NS0xNDA4CitHcm91cCAyMjogKEJsb2NrcyAyMjUyOS0yMzU1MikKKyAgQmxvY2sgYml0bWFwIGF0IDIyNTI5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMjUzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIyNTMxLTIyNTM4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIyNTM5LTIzNTUyCisgIEZyZWUgaW5vZGVzOiAxNDA5LTE0NzIKK0dyb3VwIDIzOiAoQmxvY2tzIDIzNTUzLTI0NTc2KQorICBCbG9jayBiaXRtYXAgYXQgMjM1NTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIzNTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjM1NTUtMjM1NjIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjM1NjMtMjQ1NzYKKyAgRnJlZSBpbm9kZXM6IDE0NzMtMTUzNgorR3JvdXAgMjQ6IChCbG9ja3MgMjQ1NzctMjU2MDApCisgIEJsb2NrIGJpdG1hcCBhdCAyNDU3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjQ1NzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNDU3OS0yNDU4NiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDU4Ny0yNTYwMAorICBGcmVlIGlub2RlczogMTUzNy0xNjAwCitHcm91cCAyNTogKEJsb2NrcyAyNTYwMS0yNjYyNCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjU2MDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI1NjAyLTI1NjE3CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjU2MTgtMjU4NzMKKyAgQmxvY2sgYml0bWFwIGF0IDI1ODc0ICgrMjczKSwgSW5vZGUgYml0bWFwIGF0IDI1ODc1ICgrMjc0KQorICBJbm9kZSB0YWJsZSBhdCAyNTg3Ni0yNTg4MyAoKzI3NSkKKyAgNzQxIGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU4ODQtMjY2MjQKKyAgRnJlZSBpbm9kZXM6IDE2MDEtMTY2NAorR3JvdXAgMjY6IChCbG9ja3MgMjY2MjUtMjc2NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjYyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjY2MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjYyNy0yNjYzNCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjYzNS0yNzY0OAorICBGcmVlIGlub2RlczogMTY2NS0xNzI4CitHcm91cCAyNzogKEJsb2NrcyAyNzY0OS0yODY3MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjc2NDksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI3NjUwLTI3NjY1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjc2NjYtMjc5MjEKKyAgQmxvY2sgYml0bWFwIGF0IDI3OTIyICgrMjczKSwgSW5vZGUgYml0bWFwIGF0IDI3OTIzICgrMjc0KQorICBJbm9kZSB0YWJsZSBhdCAyNzkyNC0yNzkzMSAoKzI3NSkKKyAgNzQxIGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjc5MzItMjg2NzIKKyAgRnJlZSBpbm9kZXM6IDE3MjktMTc5MgorR3JvdXAgMjg6IChCbG9ja3MgMjg2NzMtMjk2OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyODY3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjg2NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyODY3NS0yODY4MiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODY4My0yOTY5NgorICBGcmVlIGlub2RlczogMTc5My0xODU2CitHcm91cCAyOTogKEJsb2NrcyAyOTY5Ny0zMDcyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDI5Njk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyOTY5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI5Njk5LTI5NzA2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5NzA3LTMwNzIwCisgIEZyZWUgaW5vZGVzOiAxODU3LTE5MjAKK0dyb3VwIDMwOiAoQmxvY2tzIDMwNzIxLTMxNzQ0KQorICBCbG9jayBiaXRtYXAgYXQgMzA3MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMwNzIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzA3MjMtMzA3MzAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA3MzEtMzE3NDQKKyAgRnJlZSBpbm9kZXM6IDE5MjEtMTk4NAorR3JvdXAgMzE6IChCbG9ja3MgMzE3NDUtMzI3NjgpCisgIEJsb2NrIGJpdG1hcCBhdCAzMTc0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzE3NDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMTc0Ny0zMTc1NCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTc1NS0zMjc2OAorICBGcmVlIGlub2RlczogMTk4NS0yMDQ4CitHcm91cCAzMjogKEJsb2NrcyAzMjc2OS0zMzc5MikKKyAgQmxvY2sgYml0bWFwIGF0IDMyNzY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMjc3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMyNzcxLTMyNzc4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMyNzc5LTMzNzkyCisgIEZyZWUgaW5vZGVzOiAyMDQ5LTIxMTIKK0dyb3VwIDMzOiAoQmxvY2tzIDMzNzkzLTM0ODE2KQorICBCbG9jayBiaXRtYXAgYXQgMzM3OTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMzNzk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzM3OTUtMzM4MDIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM4MDMtMzQ4MTYKKyAgRnJlZSBpbm9kZXM6IDIxMTMtMjE3NgorR3JvdXAgMzQ6IChCbG9ja3MgMzQ4MTctMzU4NDApCisgIEJsb2NrIGJpdG1hcCBhdCAzNDgxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzQ4MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNDgxOS0zNDgyNiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNDgyNy0zNTg0MAorICBGcmVlIGlub2RlczogMjE3Ny0yMjQwCitHcm91cCAzNTogKEJsb2NrcyAzNTg0MS0zNjg2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDM1ODQxICgrMCksIElub2RlIGJpdG1hcCBhdCAzNTg0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM1ODQzLTM1ODUwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM1ODUxLTM2ODY0CisgIEZyZWUgaW5vZGVzOiAyMjQxLTIzMDQKK0dyb3VwIDM2OiAoQmxvY2tzIDM2ODY1LTM3ODg4KQorICBCbG9jayBiaXRtYXAgYXQgMzY4NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM2ODY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzY4NjctMzY4NzQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzY4NzUtMzc4ODgKKyAgRnJlZSBpbm9kZXM6IDIzMDUtMjM2OAorR3JvdXAgMzc6IChCbG9ja3MgMzc4ODktMzg5MTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzNzg4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzc4OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNzg5MS0zNzg5OCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNzg5OS0zODkxMgorICBGcmVlIGlub2RlczogMjM2OS0yNDMyCitHcm91cCAzODogKEJsb2NrcyAzODkxMy0zOTkzNikKKyAgQmxvY2sgYml0bWFwIGF0IDM4OTEzICgrMCksIElub2RlIGJpdG1hcCBhdCAzODkxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM4OTE1LTM4OTIyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM4OTIzLTM5OTM2CisgIEZyZWUgaW5vZGVzOiAyNDMzLTI0OTYKK0dyb3VwIDM5OiAoQmxvY2tzIDM5OTM3LTQwOTYwKQorICBCbG9jayBiaXRtYXAgYXQgMzk5MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM5OTM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzk5MzktMzk5NDYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzk5NDctNDA5NjAKKyAgRnJlZSBpbm9kZXM6IDI0OTctMjU2MAorR3JvdXAgNDA6IChCbG9ja3MgNDA5NjEtNDE5ODQpCisgIEJsb2NrIGJpdG1hcCBhdCA0MDk2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDA5NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk2My00MDk3MCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MDk3MS00MTk4NAorICBGcmVlIGlub2RlczogMjU2MS0yNjI0CitHcm91cCA0MTogKEJsb2NrcyA0MTk4NS00MzAwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQxOTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0MTk4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQxOTg3LTQxOTk0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQxOTk1LTQzMDA4CisgIEZyZWUgaW5vZGVzOiAyNjI1LTI2ODgKK0dyb3VwIDQyOiAoQmxvY2tzIDQzMDA5LTQ0MDMyKQorICBCbG9jayBiaXRtYXAgYXQgNDMwMDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQzMDEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDMwMTEtNDMwMTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDMwMTktNDQwMzIKKyAgRnJlZSBpbm9kZXM6IDI2ODktMjc1MgorR3JvdXAgNDM6IChCbG9ja3MgNDQwMzMtNDUwNTYpCisgIEJsb2NrIGJpdG1hcCBhdCA0NDAzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDQwMzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NDAzNS00NDA0MiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NDA0My00NTA1NgorICBGcmVlIGlub2RlczogMjc1My0yODE2CitHcm91cCA0NDogKEJsb2NrcyA0NTA1Ny00NjA4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ1MDU3ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NTA1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ1MDU5LTQ1MDY2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ1MDY3LTQ2MDgwCisgIEZyZWUgaW5vZGVzOiAyODE3LTI4ODAKK0dyb3VwIDQ1OiAoQmxvY2tzIDQ2MDgxLTQ3MTA0KQorICBCbG9jayBiaXRtYXAgYXQgNDYwODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ2MDgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDYwODMtNDYwOTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDYwOTEtNDcxMDQKKyAgRnJlZSBpbm9kZXM6IDI4ODEtMjk0NAorR3JvdXAgNDY6IChCbG9ja3MgNDcxMDUtNDgxMjgpCisgIEJsb2NrIGJpdG1hcCBhdCA0NzEwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDcxMDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NzEwNy00NzExNCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NzExNS00ODEyOAorICBGcmVlIGlub2RlczogMjk0NS0zMDA4CitHcm91cCA0NzogKEJsb2NrcyA0ODEyOS00OTE1MikKKyAgQmxvY2sgYml0bWFwIGF0IDQ4MTI5ICgrMCksIElub2RlIGJpdG1hcCBhdCA0ODEzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ4MTMxLTQ4MTM4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ4MTM5LTQ5MTUyCisgIEZyZWUgaW5vZGVzOiAzMDA5LTMwNzIKK0dyb3VwIDQ4OiAoQmxvY2tzIDQ5MTUzLTUwMTc2KQorICBCbG9jayBiaXRtYXAgYXQgNDkxNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ5MTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDkxNTUtNDkxNjIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDkxNjMtNTAxNzYKKyAgRnJlZSBpbm9kZXM6IDMwNzMtMzEzNgorR3JvdXAgNDk6IChCbG9ja3MgNTAxNzctNTEyMDApCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDUwMTc3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCA1MDE3OC01MDE5MworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDUwMTk0LTUwNDQ5CisgIEJsb2NrIGJpdG1hcCBhdCA1MDQ1MCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCA1MDQ1MSAoKzI3NCkKKyAgSW5vZGUgdGFibGUgYXQgNTA0NTItNTA0NTkgKCsyNzUpCisgIDc0MSBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUwNDYwLTUxMjAwCisgIEZyZWUgaW5vZGVzOiAzMTM3LTMyMDAKK0dyb3VwIDUwOiAoQmxvY2tzIDUxMjAxLTUyMjI0KQorICBCbG9jayBiaXRtYXAgYXQgNTEyMDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUxMjAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTEyMDMtNTEyMTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTEyMTEtNTIyMjQKKyAgRnJlZSBpbm9kZXM6IDMyMDEtMzI2NAorR3JvdXAgNTE6IChCbG9ja3MgNTIyMjUtNTMyNDgpCisgIEJsb2NrIGJpdG1hcCBhdCA1MjIyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTIyMjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MjIyNy01MjIzNCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MjIzNS01MzI0OAorICBGcmVlIGlub2RlczogMzI2NS0zMzI4CitHcm91cCA1MjogKEJsb2NrcyA1MzI0OS01NDI3MikKKyAgQmxvY2sgYml0bWFwIGF0IDUzMjQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCA1MzI1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUzMjUxLTUzMjU4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzMjU5LTU0MjcyCisgIEZyZWUgaW5vZGVzOiAzMzI5LTMzOTIKK0dyb3VwIDUzOiAoQmxvY2tzIDU0MjczLTU1Mjk2KQorICBCbG9jayBiaXRtYXAgYXQgNTQyNzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU0Mjc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTQyNzUtNTQyODIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTQyODMtNTUyOTYKKyAgRnJlZSBpbm9kZXM6IDMzOTMtMzQ1NgorR3JvdXAgNTQ6IChCbG9ja3MgNTUyOTctNTYzMjApCisgIEJsb2NrIGJpdG1hcCBhdCA1NTI5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTUyOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NTI5OS01NTMwNiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NTMwNy01NjMyMAorICBGcmVlIGlub2RlczogMzQ1Ny0zNTIwCitHcm91cCA1NTogKEJsb2NrcyA1NjMyMS01NzM0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDU2MzIxICgrMCksIElub2RlIGJpdG1hcCBhdCA1NjMyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU2MzIzLTU2MzMwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU2MzMxLTU3MzQ0CisgIEZyZWUgaW5vZGVzOiAzNTIxLTM1ODQKK0dyb3VwIDU2OiAoQmxvY2tzIDU3MzQ1LTU4MzY4KQorICBCbG9jayBiaXRtYXAgYXQgNTczNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU3MzQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTczNDctNTczNTQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTczNTUtNTgzNjgKKyAgRnJlZSBpbm9kZXM6IDM1ODUtMzY0OAorR3JvdXAgNTc6IChCbG9ja3MgNTgzNjktNTkzOTIpCisgIEJsb2NrIGJpdG1hcCBhdCA1ODM2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTgzNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1ODM3MS01ODM3OCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1ODM3OS01OTM5MgorICBGcmVlIGlub2RlczogMzY0OS0zNzEyCitHcm91cCA1ODogKEJsb2NrcyA1OTM5My02MDQxNikKKyAgQmxvY2sgYml0bWFwIGF0IDU5MzkzICgrMCksIElub2RlIGJpdG1hcCBhdCA1OTM5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU5Mzk1LTU5NDAyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU5NDAzLTYwNDE2CisgIEZyZWUgaW5vZGVzOiAzNzEzLTM3NzYKK0dyb3VwIDU5OiAoQmxvY2tzIDYwNDE3LTYxNDQwKQorICBCbG9jayBiaXRtYXAgYXQgNjA0MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYwNDE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjA0MTktNjA0MjYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjA0MjctNjE0NDAKKyAgRnJlZSBpbm9kZXM6IDM3NzctMzg0MAorR3JvdXAgNjA6IChCbG9ja3MgNjE0NDEtNjI0NjQpCisgIEJsb2NrIGJpdG1hcCBhdCA2MTQ0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjE0NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ0My02MTQ1MCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTQ1MS02MjQ2NAorICBGcmVlIGlub2RlczogMzg0MS0zOTA0CitHcm91cCA2MTogKEJsb2NrcyA2MjQ2NS02MzQ4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYyNDY1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MjQ2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYyNDY3LTYyNDc0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYyNDc1LTYzNDg4CisgIEZyZWUgaW5vZGVzOiAzOTA1LTM5NjgKK0dyb3VwIDYyOiAoQmxvY2tzIDYzNDg5LTY0NTEyKQorICBCbG9jayBiaXRtYXAgYXQgNjM0ODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYzNDkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjM0OTEtNjM0OTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjM0OTktNjQ1MTIKKyAgRnJlZSBpbm9kZXM6IDM5NjktNDAzMgorR3JvdXAgNjM6IChCbG9ja3MgNjQ1MTMtNjU1MzYpCisgIEJsb2NrIGJpdG1hcCBhdCA2NDUxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjQ1MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2NDUxNS02NDUyMiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NDUyMy02NTUzNgorICBGcmVlIGlub2RlczogNDAzMy00MDk2CitHcm91cCA2NDogKEJsb2NrcyA2NTUzNy02NjU2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDY1NTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2NTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY1NTM5LTY1NTQ2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY1NTQ3LTY2NTYwCisgIEZyZWUgaW5vZGVzOiA0MDk3LTQxNjAKK0dyb3VwIDY1OiAoQmxvY2tzIDY2NTYxLTY3NTg0KQorICBCbG9jayBiaXRtYXAgYXQgNjY1NjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY2NTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjY1NjMtNjY1NzAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjY1NzEtNjc1ODQKKyAgRnJlZSBpbm9kZXM6IDQxNjEtNDIyNAorR3JvdXAgNjY6IChCbG9ja3MgNjc1ODUtNjg2MDgpCisgIEJsb2NrIGJpdG1hcCBhdCA2NzU4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjc1ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2NzU4Ny02NzU5NCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NzU5NS02ODYwOAorICBGcmVlIGlub2RlczogNDIyNS00Mjg4CitHcm91cCA2NzogKEJsb2NrcyA2ODYwOS02OTYzMikKKyAgQmxvY2sgYml0bWFwIGF0IDY4NjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCA2ODYxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY4NjExLTY4NjE4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY4NjE5LTY5NjMyCisgIEZyZWUgaW5vZGVzOiA0Mjg5LTQzNTIKK0dyb3VwIDY4OiAoQmxvY2tzIDY5NjMzLTcwNjU2KQorICBCbG9jayBiaXRtYXAgYXQgNjk2MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY5NjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjk2MzUtNjk2NDIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjk2NDMtNzA2NTYKKyAgRnJlZSBpbm9kZXM6IDQzNTMtNDQxNgorR3JvdXAgNjk6IChCbG9ja3MgNzA2NTctNzE2ODApCisgIEJsb2NrIGJpdG1hcCBhdCA3MDY1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzA2NTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MDY1OS03MDY2NiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MDY2Ny03MTY4MAorICBGcmVlIGlub2RlczogNDQxNy00NDgwCitHcm91cCA3MDogKEJsb2NrcyA3MTY4MS03MjcwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNjgxICgrMCksIElub2RlIGJpdG1hcCBhdCA3MTY4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDcxNjgzLTcxNjkwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcxNjkxLTcyNzA0CisgIEZyZWUgaW5vZGVzOiA0NDgxLTQ1NDQKK0dyb3VwIDcxOiAoQmxvY2tzIDcyNzA1LTczNzI4KQorICBCbG9jayBiaXRtYXAgYXQgNzI3MDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDcyNzA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzI3MDctNzI3MTQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzI3MTUtNzM3MjgKKyAgRnJlZSBpbm9kZXM6IDQ1NDUtNDYwOAorR3JvdXAgNzI6IChCbG9ja3MgNzM3MjktNzQ3NTIpCisgIEJsb2NrIGJpdG1hcCBhdCA3MzcyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzM3MzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MzczMS03MzczOCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MzczOS03NDc1MgorICBGcmVlIGlub2RlczogNDYwOS00NjcyCitHcm91cCA3MzogKEJsb2NrcyA3NDc1My03NTc3NikKKyAgQmxvY2sgYml0bWFwIGF0IDc0NzUzICgrMCksIElub2RlIGJpdG1hcCBhdCA3NDc1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc0NzU1LTc0NzYyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0NzYzLTc1Nzc2CisgIEZyZWUgaW5vZGVzOiA0NjczLTQ3MzYKK0dyb3VwIDc0OiAoQmxvY2tzIDc1Nzc3LTc2ODAwKQorICBCbG9jayBiaXRtYXAgYXQgNzU3NzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc1Nzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzU3NzktNzU3ODYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzU3ODctNzY4MDAKKyAgRnJlZSBpbm9kZXM6IDQ3MzctNDgwMAorR3JvdXAgNzU6IChCbG9ja3MgNzY4MDEtNzc4MjQpCisgIEJsb2NrIGJpdG1hcCBhdCA3NjgwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzY4MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NjgwMy03NjgxMCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NjgxMS03NzgyNAorICBGcmVlIGlub2RlczogNDgwMS00ODY0CitHcm91cCA3NjogKEJsb2NrcyA3NzgyNS03ODg0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDc3ODI1ICgrMCksIElub2RlIGJpdG1hcCBhdCA3NzgyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc3ODI3LTc3ODM0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc3ODM1LTc4ODQ4CisgIEZyZWUgaW5vZGVzOiA0ODY1LTQ5MjgKK0dyb3VwIDc3OiAoQmxvY2tzIDc4ODQ5LTc5ODcyKQorICBCbG9jayBiaXRtYXAgYXQgNzg4NDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc4ODUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzg4NTEtNzg4NTggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzg4NTktNzk4NzIKKyAgRnJlZSBpbm9kZXM6IDQ5MjktNDk5MgorR3JvdXAgNzg6IChCbG9ja3MgNzk4NzMtODA4OTYpCisgIEJsb2NrIGJpdG1hcCBhdCA3OTg3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzk4NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3OTg3NS03OTg4MiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3OTg4My04MDg5NgorICBGcmVlIGlub2RlczogNDk5My01MDU2CitHcm91cCA3OTogKEJsb2NrcyA4MDg5Ny04MTkyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDgwODk3ICgrMCksIElub2RlIGJpdG1hcCBhdCA4MDg5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgwODk5LTgwOTA2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgwOTA3LTgxOTIwCisgIEZyZWUgaW5vZGVzOiA1MDU3LTUxMjAKK0dyb3VwIDgwOiAoQmxvY2tzIDgxOTIxLTgyOTQ0KQorICBCbG9jayBiaXRtYXAgYXQgODE5MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5MjMtODE5MzAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODE5MzEtODI5NDQKKyAgRnJlZSBpbm9kZXM6IDUxMjEtNTE4NAorR3JvdXAgODE6IChCbG9ja3MgODI5NDUtODM5NjgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgyOTQ1LCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4Mjk0Ni04Mjk2MQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDgyOTYyLTgzMjE3CisgIEJsb2NrIGJpdG1hcCBhdCA4MzIxOCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCA4MzIxOSAoKzI3NCkKKyAgSW5vZGUgdGFibGUgYXQgODMyMjAtODMyMjcgKCsyNzUpCisgIDc0MSBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgzMjI4LTgzOTY4CisgIEZyZWUgaW5vZGVzOiA1MTg1LTUyNDgKK0dyb3VwIDgyOiAoQmxvY2tzIDgzOTY5LTg0OTkyKQorICBCbG9jayBiaXRtYXAgYXQgODM5NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgzOTcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODM5NzEtODM5NzggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODM5NzktODQ5OTIKKyAgRnJlZSBpbm9kZXM6IDUyNDktNTMxMgorR3JvdXAgODM6IChCbG9ja3MgODQ5OTMtODYwMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4NDk5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODQ5OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NDk5NS04NTAwMiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NTAwMy04NjAxNgorICBGcmVlIGlub2RlczogNTMxMy01Mzc2CitHcm91cCA4NDogKEJsb2NrcyA4NjAxNy04NzA0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDg2MDE3ICgrMCksIElub2RlIGJpdG1hcCBhdCA4NjAxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg2MDE5LTg2MDI2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg2MDI3LTg3MDQwCisgIEZyZWUgaW5vZGVzOiA1Mzc3LTU0NDAKK0dyb3VwIDg1OiAoQmxvY2tzIDg3MDQxLTg4MDY0KQorICBCbG9jayBiaXRtYXAgYXQgODcwNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg3MDQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODcwNDMtODcwNTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODcwNTEtODgwNjQKKyAgRnJlZSBpbm9kZXM6IDU0NDEtNTUwNAorR3JvdXAgODY6IChCbG9ja3MgODgwNjUtODkwODgpCisgIEJsb2NrIGJpdG1hcCBhdCA4ODA2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODgwNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4ODA2Ny04ODA3NCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4ODA3NS04OTA4OAorICBGcmVlIGlub2RlczogNTUwNS01NTY4CitHcm91cCA4NzogKEJsb2NrcyA4OTA4OS05MDExMikKKyAgQmxvY2sgYml0bWFwIGF0IDg5MDg5ICgrMCksIElub2RlIGJpdG1hcCBhdCA4OTA5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg5MDkxLTg5MDk4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg5MDk5LTkwMTEyCisgIEZyZWUgaW5vZGVzOiA1NTY5LTU2MzIKK0dyb3VwIDg4OiAoQmxvY2tzIDkwMTEzLTkxMTM2KQorICBCbG9jayBiaXRtYXAgYXQgOTAxMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkwMTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTAxMTUtOTAxMjIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTAxMjMtOTExMzYKKyAgRnJlZSBpbm9kZXM6IDU2MzMtNTY5NgorR3JvdXAgODk6IChCbG9ja3MgOTExMzctOTIxNjApCisgIEJsb2NrIGJpdG1hcCBhdCA5MTEzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTExMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5MTEzOS05MTE0NiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MTE0Ny05MjE2MAorICBGcmVlIGlub2RlczogNTY5Ny01NzYwCitHcm91cCA5MDogKEJsb2NrcyA5MjE2MS05MzE4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDkyMTYxICgrMCksIElub2RlIGJpdG1hcCBhdCA5MjE2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkyMTYzLTkyMTcwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkyMTcxLTkzMTg0CisgIEZyZWUgaW5vZGVzOiA1NzYxLTU4MjQKK0dyb3VwIDkxOiAoQmxvY2tzIDkzMTg1LTk0MjA4KQorICBCbG9jayBiaXRtYXAgYXQgOTMxODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkzMTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTMxODctOTMxOTQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTMxOTUtOTQyMDgKKyAgRnJlZSBpbm9kZXM6IDU4MjUtNTg4OAorR3JvdXAgOTI6IChCbG9ja3MgOTQyMDktOTUyMzIpCisgIEJsb2NrIGJpdG1hcCBhdCA5NDIwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTQyMTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NDIxMS05NDIxOCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDIxOS05NTIzMgorICBGcmVlIGlub2RlczogNTg4OS01OTUyCitHcm91cCA5MzogKEJsb2NrcyA5NTIzMy05NjI1NikKKyAgQmxvY2sgYml0bWFwIGF0IDk1MjMzICgrMCksIElub2RlIGJpdG1hcCBhdCA5NTIzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk1MjM1LTk1MjQyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk1MjQzLTk2MjU2CisgIEZyZWUgaW5vZGVzOiA1OTUzLTYwMTYKK0dyb3VwIDk0OiAoQmxvY2tzIDk2MjU3LTk3MjgwKQorICBCbG9jayBiaXRtYXAgYXQgOTYyNTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk2MjU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTYyNTktOTYyNjYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTYyNjctOTcyODAKKyAgRnJlZSBpbm9kZXM6IDYwMTctNjA4MAorR3JvdXAgOTU6IChCbG9ja3MgOTcyODEtOTgzMDQpCisgIEJsb2NrIGJpdG1hcCBhdCA5NzI4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTcyODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NzI4My05NzI5MCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NzI5MS05ODMwNAorICBGcmVlIGlub2RlczogNjA4MS02MTQ0CitHcm91cCA5NjogKEJsb2NrcyA5ODMwNS05OTMyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDk4MzA1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5ODMwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk4MzA3LTk4MzE0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk4MzE1LTk5MzI4CisgIEZyZWUgaW5vZGVzOiA2MTQ1LTYyMDgKK0dyb3VwIDk3OiAoQmxvY2tzIDk5MzI5LTEwMDM1MikKKyAgQmxvY2sgYml0bWFwIGF0IDk5MzI5ICgrMCksIElub2RlIGJpdG1hcCBhdCA5OTMzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk5MzMxLTk5MzM4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk5MzM5LTEwMDM1MgorICBGcmVlIGlub2RlczogNjIwOS02MjcyCitHcm91cCA5ODogKEJsb2NrcyAxMDAzNTMtMTAxMzc2KQorICBCbG9jayBiaXRtYXAgYXQgMTAwMzUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDAzNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDAzNTUtMTAwMzYyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMDM2My0xMDEzNzYKKyAgRnJlZSBpbm9kZXM6IDYyNzMtNjMzNgorR3JvdXAgOTk6IChCbG9ja3MgMTAxMzc3LTEwMjQwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwMTM3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTAxMzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAxMzc5LTEwMTM4NiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDEzODctMTAyNDAwCisgIEZyZWUgaW5vZGVzOiA2MzM3LTY0MDAKK0dyb3VwIDEwMDogKEJsb2NrcyAxMDI0MDEtMTAzNDI0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDAxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDI0MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDI0MDMtMTAyNDEwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMjQxMS0xMDM0MjQKKyAgRnJlZSBpbm9kZXM6IDY0MDEtNjQ2NAorR3JvdXAgMTAxOiAoQmxvY2tzIDEwMzQyNS0xMDQ0NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDM0MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMzQyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMzQyNy0xMDM0MzQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAzNDM1LTEwNDQ0OAorICBGcmVlIGlub2RlczogNjQ2NS02NTI4CitHcm91cCAxMDI6IChCbG9ja3MgMTA0NDQ5LTEwNTQ3MikKKyAgQmxvY2sgYml0bWFwIGF0IDEwNDQ0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA0NDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA0NDUxLTEwNDQ1OCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDQ0NTktMTA1NDcyCisgIEZyZWUgaW5vZGVzOiA2NTI5LTY1OTIKK0dyb3VwIDEwMzogKEJsb2NrcyAxMDU0NzMtMTA2NDk2KQorICBCbG9jayBiaXRtYXAgYXQgMTA1NDczICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDU0NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDU0NzUtMTA1NDgyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNTQ4My0xMDY0OTYKKyAgRnJlZSBpbm9kZXM6IDY1OTMtNjY1NgorR3JvdXAgMTA0OiAoQmxvY2tzIDEwNjQ5Ny0xMDc1MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMDY0OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwNjQ5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwNjQ5OS0xMDY1MDYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA2NTA3LTEwNzUyMAorICBGcmVlIGlub2RlczogNjY1Ny02NzIwCitHcm91cCAxMDU6IChCbG9ja3MgMTA3NTIxLTEwODU0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwNzUyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA3NTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA3NTIzLTEwNzUzMCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDc1MzEtMTA4NTQ0CisgIEZyZWUgaW5vZGVzOiA2NzIxLTY3ODQKK0dyb3VwIDEwNjogKEJsb2NrcyAxMDg1NDUtMTA5NTY4KQorICBCbG9jayBiaXRtYXAgYXQgMTA4NTQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDg1NDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDg1NDctMTA4NTU0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwODU1NS0xMDk1NjgKKyAgRnJlZSBpbm9kZXM6IDY3ODUtNjg0OAorR3JvdXAgMTA3OiAoQmxvY2tzIDEwOTU2OS0xMTA1OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDk1NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwOTU3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwOTU3MS0xMDk1NzggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA5NTc5LTExMDU5MgorICBGcmVlIGlub2RlczogNjg0OS02OTEyCitHcm91cCAxMDg6IChCbG9ja3MgMTEwNTkzLTExMTYxNikKKyAgQmxvY2sgYml0bWFwIGF0IDExMDU5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEwNTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTEwNTk1LTExMDYwMiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTA2MDMtMTExNjE2CisgIEZyZWUgaW5vZGVzOiA2OTEzLTY5NzYKK0dyb3VwIDEwOTogKEJsb2NrcyAxMTE2MTctMTEyNjQwKQorICBCbG9jayBiaXRtYXAgYXQgMTExNjE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTE2MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTE2MTktMTExNjI2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMTYyNy0xMTI2NDAKKyAgRnJlZSBpbm9kZXM6IDY5NzctNzA0MAorR3JvdXAgMTEwOiAoQmxvY2tzIDExMjY0MS0xMTM2NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExMjY0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMjY0My0xMTI2NTAgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNjUxLTExMzY2NAorICBGcmVlIGlub2RlczogNzA0MS03MTA0CitHcm91cCAxMTE6IChCbG9ja3MgMTEzNjY1LTExNDY4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMzY2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEzNjY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTEzNjY3LTExMzY3NCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTM2NzUtMTE0Njg4CisgIEZyZWUgaW5vZGVzOiA3MTA1LTcxNjgKK0dyb3VwIDExMjogKEJsb2NrcyAxMTQ2ODktMTE1NzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTE0Njg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTQ2OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTQ2OTEtMTE0Njk4ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExNDY5OS0xMTU3MTIKKyAgRnJlZSBpbm9kZXM6IDcxNjktNzIzMgorR3JvdXAgMTEzOiAoQmxvY2tzIDExNTcxMy0xMTY3MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTU3MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNTcxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExNTcxNS0xMTU3MjIgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE1NzIzLTExNjczNgorICBGcmVlIGlub2RlczogNzIzMy03Mjk2CitHcm91cCAxMTQ6IChCbG9ja3MgMTE2NzM3LTExNzc2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDExNjczNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE2NzM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE2NzM5LTExNjc0NiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTY3NDctMTE3NzYwCisgIEZyZWUgaW5vZGVzOiA3Mjk3LTczNjAKK0dyb3VwIDExNTogKEJsb2NrcyAxMTc3NjEtMTE4Nzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTE3NzYxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTc3NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTc3NjMtMTE3NzcwICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExNzc3MS0xMTg3ODQKKyAgRnJlZSBpbm9kZXM6IDczNjEtNzQyNAorR3JvdXAgMTE2OiAoQmxvY2tzIDExODc4NS0xMTk4MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTg3ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExODc4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExODc4Ny0xMTg3OTQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE4Nzk1LTExOTgwOAorICBGcmVlIGlub2RlczogNzQyNS03NDg4CitHcm91cCAxMTc6IChCbG9ja3MgMTE5ODA5LTEyMDgzMikKKyAgQmxvY2sgYml0bWFwIGF0IDExOTgwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE5ODEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE5ODExLTExOTgxOCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTk4MTktMTIwODMyCisgIEZyZWUgaW5vZGVzOiA3NDg5LTc1NTIKK0dyb3VwIDExODogKEJsb2NrcyAxMjA4MzMtMTIxODU2KQorICBCbG9jayBiaXRtYXAgYXQgMTIwODMzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjA4MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjA4MzUtMTIwODQyICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMDg0My0xMjE4NTYKKyAgRnJlZSBpbm9kZXM6IDc1NTMtNzYxNgorR3JvdXAgMTE5OiAoQmxvY2tzIDEyMTg1Ny0xMjI4ODApCisgIEJsb2NrIGJpdG1hcCBhdCAxMjE4NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMTg1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMTg1OS0xMjE4NjYgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIxODY3LTEyMjg4MAorICBGcmVlIGlub2RlczogNzYxNy03NjgwCitHcm91cCAxMjA6IChCbG9ja3MgMTIyODgxLTEyMzkwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyMjg4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIyODgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyODgzLTEyMjg5MCAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjI4OTEtMTIzOTA0CisgIEZyZWUgaW5vZGVzOiA3NjgxLTc3NDQKK0dyb3VwIDEyMTogKEJsb2NrcyAxMjM5MDUtMTI0OTI4KQorICBCbG9jayBiaXRtYXAgYXQgMTIzOTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjM5MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjM5MDctMTIzOTE0ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMzkxNS0xMjQ5MjgKKyAgRnJlZSBpbm9kZXM6IDc3NDUtNzgwOAorR3JvdXAgMTIyOiAoQmxvY2tzIDEyNDkyOS0xMjU5NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjQ5MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyNDkzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyNDkzMS0xMjQ5MzggKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI0OTM5LTEyNTk1MgorICBGcmVlIGlub2RlczogNzgwOS03ODcyCitHcm91cCAxMjM6IChCbG9ja3MgMTI1OTUzLTEyNjk3NikKKyAgQmxvY2sgYml0bWFwIGF0IDEyNTk1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI1OTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTI1OTU1LTEyNTk2MiAoKzIpCisgIDEwMTQgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjU5NjMtMTI2OTc2CisgIEZyZWUgaW5vZGVzOiA3ODczLTc5MzYKK0dyb3VwIDEyNDogKEJsb2NrcyAxMjY5NzctMTI4MDAwKQorICBCbG9jayBiaXRtYXAgYXQgMTI2OTc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjY5NzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjY5NzktMTI2OTg2ICgrMikKKyAgMTAxNCBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyNjk4Ny0xMjgwMDAKKyAgRnJlZSBpbm9kZXM6IDc5MzctODAwMAorR3JvdXAgMTI1OiAoQmxvY2tzIDEyODAwMS0xMjkwMjQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDEyODAwMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTI4MDAyLTEyODAxNworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDEyODAxOC0xMjgyNzMKKyAgQmxvY2sgYml0bWFwIGF0IDEyODI3NCAoKzI3MyksIElub2RlIGJpdG1hcCBhdCAxMjgyNzUgKCsyNzQpCisgIElub2RlIHRhYmxlIGF0IDEyODI3Ni0xMjgyODMgKCsyNzUpCisgIDc0MSBmcmVlIGJsb2NrcywgNjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODI4NC0xMjkwMjQKKyAgRnJlZSBpbm9kZXM6IDgwMDEtODA2NAorR3JvdXAgMTI2OiAoQmxvY2tzIDEyOTAyNS0xMzAwNDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjkwMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyOTAyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyOTAyNy0xMjkwMzQgKCsyKQorICAxMDE0IGZyZWUgYmxvY2tzLCA2NCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI5MDM1LTEzMDA0OAorICBGcmVlIGlub2RlczogODA2NS04MTI4CitHcm91cCAxMjc6IChCbG9ja3MgMTMwMDQ5LTEzMTA3MSkKKyAgQmxvY2sgYml0bWFwIGF0IDEzMDA0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTMwMDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMwMDUxLTEzMDA1OCAoKzIpCisgIDEwMTMgZnJlZSBibG9ja3MsIDY0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzAwNTktMTMxMDcxCisgIEZyZWUgaW5vZGVzOiA4MTI5LTgxOTIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2Rlc2Nfc2l6ZV8xMjgvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fZGVzY19zaXplXzEyOC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRkZWYyMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2Rlc2Nfc2l6ZV8xMjgvc2NyaXB0CkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT049ImVuYWJsZSAxMjgtYnl0ZSBncm91cCBkZXNjcmlwdG9yIG9uIG1rZnMiCitGU19TSVpFPTEzMTA3MgorRFVNUEUyRlNfSUdOT1JFXzgwQ09MPTEKK2V4cG9ydCBEVU1QRTJGU19JR05PUkVfODBDT0wKK01LRTJGU19PUFRTPSItYiAxMDI0IC1PIDY0Yml0LGV4dGVudHMgLWcgMTAyNCAtTiA4MTkyIC1FIGRlc2Nfc2l6ZT0xMjgiCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IERVTVBFMkZTX0lHTk9SRV84MENPTApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fZGV2ZGlyL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2RldmRpci9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyNjY5OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2RldmRpci9zY3JpcHQKQEAgLTAsMCArMSwzMyBAQAoraWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwordGVzdF9kZXNjcmlwdGlvbj0iY3JlYXRlIGZzIGltYWdlIGZyb20gL2RldiIKK01LRlNfRElSPS9kZXYKK09VVD0kdGVzdF9uYW1lLmxvZworCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gbWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAtZCAkTUtGU19ESVIgJFRNUEZJTEUgMTYzODQgPiAkT1VUIDI+JjEKK21rZnNfc3RhdHVzPSQ/CisKKyREVU1QRTJGUyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKyRERUJVR0ZTIC1SICdscyAvJyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitmc2NrX3N0YXR1cz0kPworCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIDwgJE9VVCA+ICRPVVQudG1wCittdiAkT1VULnRtcCAkT1VUCisKK2lmIFsgJG1rZnNfc3RhdHVzIC1uZSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2VsaWYgWyAkbWtmc19zdGF0dXMgLWVxIDAgXSAmJiBbICRmc2NrX3N0YXR1cyAtZXEgMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKyAgICAgICAgZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCisKK3JtIC1yZiAkVE1QRklMRS5jbWQgJE9VVC5zZWQKK3Vuc2V0IE1LRlNfRElSIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9lcnJvcl9iZWhhdmlvci9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvbV9lcnJvcl9iZWhhdmlvci9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg1MTRiZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2Vycm9yX2JlaGF2aW9yL2V4cGVjdApAQCAtMCwwICsxLDI0IEBACitlcnJvciBkZWZhdWx0CitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitlcnJvciBjb250aW51ZQorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorZXJyb3IgcGFuaWMKK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgUGFuaWMKK2Vycm9yIHJlbW91bnQtcm8KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgUmVtb3VudCByZWFkLW9ubHkKK2Vycm9yIGdhcmJhZ2UKK2Vycm9yIGRlZmF1bHQgcHJvZmlsZSBjb250aW51ZQorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorZXJyb3IgZGVmYXVsdCBwcm9maWxlIHBhbmljCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIFBhbmljCitlcnJvciBkZWZhdWx0IHByb2ZpbGUgcmVtb3VudC1ybworRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBSZW1vdW50IHJlYWQtb25seQorZXJyb3IgZGVmYXVsdCBwcm9maWxlIGJyb2tlbgorZXJyb3IgZnNfdHlwZXMgcHJvZmlsZSBjb250aW51ZQorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorZXJyb3IgZnNfdHlwZXMgcHJvZmlsZSBwYW5pYworRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBQYW5pYworZXJyb3IgZnNfdHlwZXMgcHJvZmlsZSByZW1vdW50LXJvCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIFJlbW91bnQgcmVhZC1vbmx5CitlcnJvciBmc190eXBlcyBwcm9maWxlIHJlbW91bnQtcm8KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgUGFuaWMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2Vycm9yX2JlaGF2aW9yL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2Vycm9yX2JlaGF2aW9yL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNWM1NTNiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fZXJyb3JfYmVoYXZpb3Ivc2NyaXB0CkBAIC0wLDAgKzEsMTEwIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJta2UyZnMgd2l0aCBlcnJvciBiZWhhdmlvciIKKworY29uZj0kVE1QRklMRS5jb25mCit3cml0ZV9kZWZhdWx0c19jb25mKCkKK3sKKwllcnJvcnM9IiQxIgorCWNhdCA+ICRjb25mIDw8IEVOREwKK1tkZWZhdWx0c10KKwllcnJvcnMgPSAkZXJyb3JzCitFTkRMCit9CisKK3dyaXRlX3NlY3Rpb25fY29uZigpCit7CisJZXJyb3JzPSIkMSIKKwljYXQgPiAkY29uZiA8PCBFTkRMCitbZGVmYXVsdHNdCisJZXJyb3JzID0gYnJva2VuCisKK1tmc190eXBlc10KKwl0ZXN0X3N1aXRlID0geworCQllcnJvcnMgPSAkZXJyb3JzCisJfQorRU5ETAorfQorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiZXJyb3IgZGVmYXVsdCIgPj4gJE9VVAorJE1LRTJGUyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciBjb250aW51ZSIgPj4gJE9VVAorJE1LRTJGUyAtZSBjb250aW51ZSAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciBwYW5pYyIgPj4gJE9VVAorJE1LRTJGUyAtZSBwYW5pYyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciByZW1vdW50LXJvIiA+PiAkT1VUCiskTUtFMkZTIC1lIHJlbW91bnQtcm8gLUYgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdFcnJvcnMgYmVoYXZpb3InID4+ICRPVVQKKworZWNobyAiZXJyb3IgZ2FyYmFnZSIgPj4gJE9VVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCiskTUtFMkZTIC1lIGJyb2tlbiAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCisjIFRlc3QgZXJyb3JzPSBpbiBkZWZhdWx0CitlY2hvICJlcnJvciBkZWZhdWx0IHByb2ZpbGUgY29udGludWUiID4+ICRPVVQKK3dyaXRlX2RlZmF1bHRzX2NvbmYgY29udGludWUKK01LRTJGU19DT05GSUc9JGNvbmYgJE1LRTJGUyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciBkZWZhdWx0IHByb2ZpbGUgcGFuaWMiID4+ICRPVVQKK3dyaXRlX2RlZmF1bHRzX2NvbmYgcGFuaWMKK01LRTJGU19DT05GSUc9JGNvbmYgJE1LRTJGUyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciBkZWZhdWx0IHByb2ZpbGUgcmVtb3VudC1ybyIgPj4gJE9VVAord3JpdGVfZGVmYXVsdHNfY29uZiByZW1vdW50LXJvCitNS0UyRlNfQ09ORklHPSRjb25mICRNS0UyRlMgLUYgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdFcnJvcnMgYmVoYXZpb3InID4+ICRPVVQKKworZWNobyAiZXJyb3IgZGVmYXVsdCBwcm9maWxlIGJyb2tlbiIgPj4gJE9VVAord3JpdGVfZGVmYXVsdHNfY29uZiBicm9rZW4KK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorTUtFMkZTX0NPTkZJRz0kY29uZiAkTUtFMkZTIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnRXJyb3JzIGJlaGF2aW9yJyA+PiAkT1VUCisKKyMgVGVzdCBlcnJvcnM9IGluIGEgZnMgdHlwZQorZWNobyAiZXJyb3IgZnNfdHlwZXMgcHJvZmlsZSBjb250aW51ZSIgPj4gJE9VVAord3JpdGVfc2VjdGlvbl9jb25mIGNvbnRpbnVlCitNS0UyRlNfQ09ORklHPSRjb25mICRNS0UyRlMgLVQgdGVzdF9zdWl0ZSAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgJ0Vycm9ycyBiZWhhdmlvcicgPj4gJE9VVAorCitlY2hvICJlcnJvciBmc190eXBlcyBwcm9maWxlIHBhbmljIiA+PiAkT1VUCit3cml0ZV9zZWN0aW9uX2NvbmYgcGFuaWMKK01LRTJGU19DT05GSUc9JGNvbmYgJE1LRTJGUyAtVCB0ZXN0X3N1aXRlIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnRXJyb3JzIGJlaGF2aW9yJyA+PiAkT1VUCisKK2VjaG8gImVycm9yIGZzX3R5cGVzIHByb2ZpbGUgcmVtb3VudC1ybyIgPj4gJE9VVAord3JpdGVfc2VjdGlvbl9jb25mIHJlbW91bnQtcm8KK01LRTJGU19DT05GSUc9JGNvbmYgJE1LRTJGUyAtVCB0ZXN0X3N1aXRlIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnRXJyb3JzIGJlaGF2aW9yJyA+PiAkT1VUCisKKyMgVGVzdCBjb21tYW5kIGxpbmUgb3ZlcnJpZGUKK2VjaG8gImVycm9yIGZzX3R5cGVzIHByb2ZpbGUgcmVtb3VudC1ybyIgPj4gJE9VVAord3JpdGVfc2VjdGlvbl9jb25mIHJlbW91bnQtcm8KK01LRTJGU19DT05GSUc9JGNvbmYgJE1LRTJGUyAtVCB0ZXN0X3N1aXRlIC1lIHBhbmljIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnRXJyb3JzIGJlaGF2aW9yJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2V4dGVudF9qb3VybmFsL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL21fZXh0ZW50X2pvdXJuYWwvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzRlOGE4MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2V4dGVudF9qb3VybmFsL2V4cGVjdC4xCkBAIC0wLDAgKzEsMTEzIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgMWsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICg0MDk2IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitGaWxlc3lzdGVtIGZlYXR1cmVzOiBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCBzcGFyc2Vfc3VwZXIKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNzQ2MC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxNjM4NAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAzMjc2CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDU4MDc2CitGcmVlIGlub2RlczogICAgICAgICAgICAgIDE2MzczCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1NQorQmxvY2tzIHBlciBncm91cDogICAgICAgICA4MTkyCitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDgxOTIKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMjA0OAorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAyNTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CitKb3VybmFsIGJhY2t1cDogICAgICAgICAgIGlub2RlIGJsb2NrcworSm91cm5hbCBmZWF0dXJlczogICAgICAgICAobm9uZSkKK0pvdXJuYWwgc2l6ZTogICAgICAgICAgICAgNDA5NmsKK0pvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgNDA5NgorSm91cm5hbCBzZXF1ZW5jZTogICAgICAgICAweDAwMDAwMDAxCitKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgIDAKKworCitHcm91cCAwOiAoQmxvY2tzIDEtODE5MikKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDMtMjU3CisgIEJsb2NrIGJpdG1hcCBhdCAyNTggKCsyNTcpLCBJbm9kZSBiaXRtYXAgYXQgMjU5ICgrMjU4KQorICBJbm9kZSB0YWJsZSBhdCAyNjAtNTE1ICgrMjU5KQorICA3NjYzIGZyZWUgYmxvY2tzLCAyMDM3IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MzAtODE5MgorICBGcmVlIGlub2RlczogMTItMjA0OAorR3JvdXAgMTogKEJsb2NrcyA4MTkzLTE2Mzg0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4MTk0LTgxOTQKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4MTk1LTg0NDkKKyAgQmxvY2sgYml0bWFwIGF0IDg0NTAgKCsyNTcpLCBJbm9kZSBiaXRtYXAgYXQgODQ1MSAoKzI1OCkKKyAgSW5vZGUgdGFibGUgYXQgODQ1Mi04NzA3ICgrMjU5KQorICA3Njc3IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NzA4LTE2Mzg0CisgIEZyZWUgaW5vZGVzOiAyMDQ5LTQwOTYKK0dyb3VwIDI6IChCbG9ja3MgMTYzODUtMjQ1NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjM4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTYzODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjM4Ny0xNjY0MiAoKzIpCisgIDM4MzggZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwNzM5LTI0NTc2CisgIEZyZWUgaW5vZGVzOiA0MDk3LTYxNDQKK0dyb3VwIDM6IChCbG9ja3MgMjQ1NzctMzI3NjgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDI0NTc3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNDU3OC0yNDU3OAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDI0NTc5LTI0ODMzCisgIEJsb2NrIGJpdG1hcCBhdCAyNDgzNCAoKzI1NyksIElub2RlIGJpdG1hcCBhdCAyNDgzNSAoKzI1OCkKKyAgSW5vZGUgdGFibGUgYXQgMjQ4MzYtMjUwOTEgKCsyNTkpCisgIDc2NzcgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1MDkyLTMyNzY4CisgIEZyZWUgaW5vZGVzOiA2MTQ1LTgxOTIKK0dyb3VwIDQ6IChCbG9ja3MgMzI3NjktNDA5NjApCisgIEJsb2NrIGJpdG1hcCBhdCAzMjc2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzI3NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMjc3MS0zMzAyNiAoKzIpCisgIDc5MzQgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzMDI3LTQwOTYwCisgIEZyZWUgaW5vZGVzOiA4MTkzLTEwMjQwCitHcm91cCA1OiAoQmxvY2tzIDQwOTYxLTQ5MTUyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA0MDk2MSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNDA5NjItNDA5NjIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA0MDk2My00MTIxNworICBCbG9jayBiaXRtYXAgYXQgNDEyMTggKCsyNTcpLCBJbm9kZSBiaXRtYXAgYXQgNDEyMTkgKCsyNTgpCisgIElub2RlIHRhYmxlIGF0IDQxMjIwLTQxNDc1ICgrMjU5KQorICA3Njc3IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MTQ3Ni00OTE1MgorICBGcmVlIGlub2RlczogMTAyNDEtMTIyODgKK0dyb3VwIDY6IChCbG9ja3MgNDkxNTMtNTczNDQpCisgIEJsb2NrIGJpdG1hcCBhdCA0OTE1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDkxNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0OTE1NS00OTQxMCAoKzIpCisgIDc5MzQgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ5NDExLTU3MzQ0CisgIEZyZWUgaW5vZGVzOiAxMjI4OS0xNDMzNgorR3JvdXAgNzogKEJsb2NrcyA1NzM0NS02NTUzNSkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTczNDUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDU3MzQ2LTU3MzQ2CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNTczNDctNTc2MDEKKyAgQmxvY2sgYml0bWFwIGF0IDU3NjAyICgrMjU3KSwgSW5vZGUgYml0bWFwIGF0IDU3NjAzICgrMjU4KQorICBJbm9kZSB0YWJsZSBhdCA1NzYwNC01Nzg1OSAoKzI1OSkKKyAgNzY3NiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTc4NjAtNjU1MzUKKyAgRnJlZSBpbm9kZXM6IDE0MzM3LTE2Mzg0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9leHRlbnRfam91cm5hbC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9leHRlbnRfam91cm5hbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhZGUyMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2V4dGVudF9qb3VybmFsL3NjcmlwdApAQCAtMCwwICsxLDcgQEAKK0RFU0NSSVBUSU9OPSJleHRlbnQtbWFwcGVkIGpvdXJuYWwiCitGU19TSVpFPTY1NTM2CitEVU1QRTJGU19JR05PUkVfODBDT0w9MQorZXhwb3J0IERVTVBFMkZTX0lHTk9SRV84MENPTAorTUtFMkZTX09QVFM9Ii1PIGV4dGVudHMgLWoiCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IERVTVBFMkZTX0lHTk9SRV84MENPTApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGUvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGUvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYTYwMzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9odWdlZmlsZS9leHBlY3QKQEAgLTAsMCArMSwzNiBAQAorbWtlMmZzIC1GIC1UIGh1Z2VmaWxlIHRlc3QuaW1nIDRUCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMTA3Mzc0MTgyNCA0ayBibG9ja3MgYW5kIDEwNDg1NzYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiBkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgICAgICAgCAgICAgICAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgMSBodWdlIGZpbGUocykgOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgICAgICAgCAgICAgICAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK2RlYnVnZnMgLVIgImV4dGVudHMgL3N0b3JlL2JpZy1kYXRhIiB0ZXN0LmltZyB8IGhlYWQKK0xldmVsIEVudHJpZXMgICAgICAgICAgICAgICAgIExvZ2ljYWwgICAgICAgICAgICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCisgMC8gMiAgIDEvICAxICAgICAgICAgIDAgLSAxMDczNjEwNzUxICAgICAxMzEwNzAgICAgICAgICAgICAgIDEwNzM2MTA3NTIKKyAxLyAyICAgMS8gOTcgICAgICAgICAgMCAtICAgMTExMDgzNTEgICAgIDEzMTA3MSAgICAgICAgICAgICAgMTExMDgzNTIKKyAyLyAyICAgMS8zMzkgICAgICAgICAgMCAtICAgICAgMzI3NjcgICAgIDEzMTA3MiAtICAgICAxNjM4MzkgIDMyNzY4IAorIDIvIDIgICAyLzMzOSAgICAgIDMyNzY4IC0gICAgICA2NTUzNSAgICAgMTYzODQwIC0gICAgIDE5NjYwNyAgMzI3NjggCisgMi8gMiAgIDMvMzM5ICAgICAgNjU1MzYgLSAgICAgIDk4MzAzICAgICAxOTY2MDggLSAgICAgMjI5Mzc1ICAzMjc2OCAKKyAyLyAyICAgNC8zMzkgICAgICA5ODMwNCAtICAgICAxMzEwNzEgICAgIDIyOTM3NiAtICAgICAyNjIxNDMgIDMyNzY4IAorIDIvIDIgICA1LzMzOSAgICAgMTMxMDcyIC0gICAgIDE2MzgzOSAgICAgMjYyMTQ0IC0gICAgIDI5NDkxMSAgMzI3NjggCisgMi8gMiAgIDYvMzM5ICAgICAxNjM4NDAgLSAgICAgMTk2NjA3ICAgICAyOTQ5MTIgLSAgICAgMzI3Njc5ICAzMjc2OCAKKyAyLyAyICAgNy8zMzkgICAgIDE5NjYwOCAtICAgICAyMjkzNzUgICAgIDMyNzY4MCAtICAgICAzNjA0NDcgIDMyNzY4IAorIDIvIDIgICA4LzMzOSAgICAgMjI5Mzc2IC0gICAgIDI2MjE0MyAgICAgMzYwNDQ4IC0gICAgIDM5MzIxNSAgMzI3NjggCisgMi8gMiAgIDkvMzM5ICAgICAyNjIxNDQgLSAgICAgMjk0OTExICAgICAzOTMyMTYgLSAgICAgNDI1OTgzICAzMjc2OCAKKyAyLyAyICAxMC8zMzkgICAgIDI5NDkxMiAtICAgICAzMjc2NzkgICAgIDQyNTk4NCAtICAgICA0NTg3NTEgIDMyNzY4IAorIDIvIDIgIDExLzMzOSAgICAgMzI3NjgwIC0gICAgIDM2MDQ0NyAgICAgNDU4NzUyIC0gICAgIDQ5MTUxOSAgMzI3NjggCisgMi8gMiAgMTIvMzM5ICAgICAzNjA0NDggLSAgICAgMzkzMjE1ICAgICA0OTE1MjAgLSAgICAgNTI0Mjg3ICAzMjc2OCAKKyAyLyAyICAxMy8zMzkgICAgIDM5MzIxNiAtICAgICA0MjU5ODMgICAgIDUyNDI4OCAtICAgICA1NTcwNTUgIDMyNzY4IAorIDIvIDIgIDE0LzMzOSAgICAgNDI1OTg0IC0gICAgIDQ1ODc1MSAgICAgNTU3MDU2IC0gICAgIDU4OTgyMyAgMzI3NjggCisgMi8gMiAgMTUvMzM5ICAgICA0NTg3NTIgLSAgICAgNDkxNTE5ICAgICA1ODk4MjQgLSAgICAgNjIyNTkxICAzMjc2OCAKKyAyLyAyICAxNi8zMzkgICAgIDQ5MTUyMCAtICAgICA1MjQyODcgICAgIDYyMjU5MiAtICAgICA2NTUzNTkgIDMyNzY4IApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyODM5OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlL25hbWUKQEAgLTAsMCArMSBAQAorY3JlYXRlIGEgaHVnZWZpbGUgZnMgd2l0aCBhIHNpbmdsZSBodWdlIGZpbGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzUwZDUzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGUvc2NyaXB0CkBAIC0wLDAgKzEsNzEgQEAKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKK2lmIFsgJCh1bmFtZSAtcykgPSAiRGFyd2luIiBdOyB0aGVuCisJIyBjcmVhdGVzIGEgNFRCIGZpbGVzeXN0ZW0KKwllY2hvICIkdGVzdF9uYW1lOiAkREVTQ1JJUFRJT046IHNraXBwZWQgZm9yIEhGUysgKG5vIHNwYXJzZSBmaWxlcykiCisJcmV0dXJuIDAKK2ZpCisKK2lmIFsgJCh1bmFtZSAtcykgPSAiRnJlZUJTRCIgXTsgdGhlbgorCSMgY3JlYXRlcyBhIDRUQiBmaWxlc3lzdGVtCisJZWNobyAiJHRlc3RfbmFtZTogJERFU0NSSVBUSU9OOiBza2lwcGVkIGZvciBGcmVlQlNEIChubyBzcGFyc2UgZmlsZXMpIgorCXJldHVybiAwCitmaQorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJaHVnZWZpbGUgPSB7CisJCWZlYXR1cmVzID0gZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsXnJlc2l6ZV9pbm9kZSxzcGFyc2Vfc3VwZXIyCisJCWhhc2hfYWxnID0gaGFsZl9tZDQKKwkJbnVtX2JhY2t1cF9zYiA9IDAKKwkJcGFja2VkX21ldGFfYmxvY2tzID0gMQorCQltYWtlX2h1Z2VmaWxlcyA9IDEKKwkJaW5vZGVfcmF0aW8gPSA0MTk0MzA0CisJCWh1Z2VmaWxlc19kaXIgPSAvc3RvcmUKKwkJaHVnZWZpbGVzX25hbWUgPSBiaWctZGF0YQorCQlodWdlZmlsZXNfZGlnaXRzID0gMAorCQlodWdlZmlsZXNfc2l6ZSA9IDAKKwkJaHVnZWZpbGVzX2FsaWduID0gMjU2TQorCQludW1faHVnZWZpbGVzID0gMQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJCWZsZXhfYmdfc2l6ZSA9IDI2MjE0NAorCX0KK0VOREwKKworZWNobyAibWtlMmZzIC1GIC1UIGh1Z2VmaWxlIHRlc3QuaW1nIDRUIiA+ICRPVVQKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBodWdlZmlsZSAkVE1QRklMRSA0VCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGNoZWNrIHRoZSBmaWxlIHN5c3RlbSBpZiB3ZSBnZXQgdGhpcyBmYXIsIHdlIHN1Y2NlZWRlZC4uLgorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworZWNobyAnZGVidWdmcyAtUiAiZXh0ZW50cyAvc3RvcmUvYmlnLWRhdGEiIHRlc3QuaW1nIHwgaGVhZCcgPj4gJE9VVAorCiskREVCVUdGUyAtUiAiZXh0ZW50cyAvc3RvcmUvYmlnLWRhdGEiICRUTVBGSUxFIDI+JjEgfCBoZWFkIC1uIDIwID4+ICRPVVQgMj4mMQorCitybSAkVE1QRklMRQorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlX3NsYWNrL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlX3NsYWNrL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzQwY2RiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGVfc2xhY2svZXhwZWN0CkBAIC0wLDAgKzEsMTggQEAKK21rZTJmcyAtRiAtVCBleHQ0aCAtSSAxMjggdGVzdC5pbWcgNzg2NDMyCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNzg2NDMyIDFrIGJsb2NrcyBhbmQgOTgzMDQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDksIDY2MzU1MworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA2MzY4IGh1Z2UgZmlsZShzKSB3aXRoIDExNyBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9odWdlZmlsZV9zbGFjay9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGVfc2xhY2svbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDUxZmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21faHVnZWZpbGVfc2xhY2svbmFtZQpAQCAtMCwwICsxIEBACitta2UyZnMgY3JlYXRpbmcgYSBodWdlZmlsZSBmcyB3aXRoIGEgbG90IG9mIHNsYWNrCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9odWdlZmlsZV9zbGFjay9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9odWdlZmlsZV9zbGFjay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EwZjA1NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX2h1Z2VmaWxlX3NsYWNrL3NjcmlwdApAQCAtMCwwICsxLDUzIEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCisjZ3ppcCAtZCA8ICRFWFAuZ3ogPiAkRVhQCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixecmVzaXplX2lub2RlLF5tZXRhX2JnLF5mbGV4X2JnLDY0Yml0CisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMTIwMDBLCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxMTdLCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gIm1rZTJmcyAtRiAtVCBleHQ0aCAtSSAxMjggdGVzdC5pbWcgNzg2NDMyIiA+ICRPVVQKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAtSSAxMjggJFRNUEZJTEUgNzg2NDMyID4+ICRPVVQgMj4mMQorcm0gLXJmICRDT05GCisKKyMgZHVtcCBhbmQgY2hlY2suIGlmIHdlIGdldCB0aGlzIGZhciwgd2Ugc3VjY2VlZGVkLi4uCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRQorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX2xhcmdlX2ZpbGUvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvbV9sYXJnZV9maWxlL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzgyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9sYXJnZV9maWxlL2V4cGVjdC4xCkBAIC0wLDAgKzEsNTYgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxNjM4NCA0ayBibG9ja3MgYW5kIDY0IGlub2RlcworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzY0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTcvMTYzODQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUKK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgKG5vbmUpCitGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitGaWxlc3lzdGVtIE9TIHR5cGU6ICAgICAgIExpbnV4CitJbm9kZSBjb3VudDogICAgICAgICAgICAgIDY0CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDE2Mzg0CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDgxOQorRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxNjM2NworRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA1MworRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAwCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDQwOTYKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgNDA5NgorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAzCitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDMyNzY4CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDMyNzY4CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDY0CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDQKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAzMgorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAzMgorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMC0xNjM4MykKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDAsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEtMQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDItNAorICBCbG9jayBiaXRtYXAgYXQgNSAoKzUpCisgIElub2RlIGJpdG1hcCBhdCA2ICgrNikKKyAgSW5vZGUgdGFibGUgYXQgNy0xMCAoKzcpCisgIDE2MzY3IGZyZWUgYmxvY2tzLCA1MyBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTctMTYzODMKKyAgRnJlZSBpbm9kZXM6IDEyLTY0CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9sYXJnZV9maWxlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX2xhcmdlX2ZpbGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNWIyYmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9sYXJnZV9maWxlL3NjcmlwdApAQCAtMCwwICsxLDcgQEAKK0RFU0NSSVBUSU9OPSJsYXJnZWZpbGUgZnMgdHlwZSIKK0ZTX1NJWkU9NjU1MzYKK01LRTJGU19ERVZJQ0VfU0VDVFNJWkU9MjA0OAorZXhwb3J0IE1LRTJGU19ERVZJQ0VfU0VDVFNJWkUKK01LRTJGU19PUFRTPSItVCBsYXJnZWZpbGUiCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IE1LRTJGU19ERVZJQ0VfU0VDVFNJWkUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21jc3VtX2V4dGpvdXJuYWwvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbWNzdW1fZXh0am91cm5hbC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY4OTVmOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21jc3VtX2V4dGpvdXJuYWwvZXhwZWN0CkBAIC0wLDAgKzEsNSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDQwOTYgMWsgYmxvY2tzIGFuZCAwIGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCitaZXJvaW5nIGpvdXJuYWwgZGV2aWNlOiAgICAgICAgICAICAgICAgICAgKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgam91cm5hbF9kZXYgbWV0YWRhdGFfY3N1bQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbWNzdW1fZXh0am91cm5hbC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWNzdW1fZXh0am91cm5hbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZjgzODkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tY3N1bV9leHRqb3VybmFsL25hbWUKQEAgLTAsMCArMSBAQAorY3JlYXRlIGV4dGVybmFsIGpvdXJuYWwgd2l0aCBzYiBjaGVja3N1bSAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21jc3VtX2V4dGpvdXJuYWwvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbWNzdW1fZXh0am91cm5hbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0YmYwMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21jc3VtX2V4dGpvdXJuYWwvc2NyaXB0CkBAIC0wLDAgKzEsMjkgQEAKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDEwMjQgLU8gam91cm5hbF9kZXYsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDQwOTYgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4+ICRPVVQgMj4mMQorJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+JjEgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicgPj4gJE9VVAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tZXRhX2JnL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWV0YV9iZy9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGY0MjMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWV0YV9iZy9leHBlY3QuMQpAQCAtMCwwICsxLDgzNSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDEzMTA3MiAxayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTEwMjUsIDMwNzMsIDUxMjEsIDcxNjksIDkyMTcsIDI1NjAxLCAyNzY0OSwgNTAxNzcsIDgyOTQ1LCAxMjgwMDEKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgICAICAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgICAgCAgICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgICAICAgICAgIZG9uZQorCitGaWxlc3lzdGVtIGZlYXR1cmVzOiBleHRfYXR0ciBkaXJfaW5kZXggZmlsZXR5cGUgbWV0YV9iZyBzcGFyc2Vfc3VwZXIKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyNzY4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNDM4OS8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIGRpcl9pbmRleCBmaWxldHlwZSBtZXRhX2JnIHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMzI3NjgKK0Jsb2NrIGNvdW50OiAgICAgICAgICAgICAgMTMxMDcyCitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDY1NTMKK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgMTI2NjgzCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDMyNzU3CitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDEwMjQKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMTAyNAorSW5vZGVzIHBlciBncm91cDogICAgICAgICAyNTYKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMzIKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS0xMDI0KQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvciBhdCAyCisgIEJsb2NrIGJpdG1hcCBhdCAzICgrMiksIElub2RlIGJpdG1hcCBhdCA0ICgrMykKKyAgSW5vZGUgdGFibGUgYXQgNS0zNiAoKzQpCisgIDk3NSBmcmVlIGJsb2NrcywgMjQ1IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MC0xMDI0CisgIEZyZWUgaW5vZGVzOiAxMi0yNTYKK0dyb3VwIDE6IChCbG9ja3MgMTAyNS0yMDQ4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMDI1LCBHcm91cCBkZXNjcmlwdG9yIGF0IDEwMjYKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjcgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDEwMjggKCszKQorICBJbm9kZSB0YWJsZSBhdCAxMDI5LTEwNjAgKCs0KQorICA5ODggZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA2MS0yMDQ4CisgIEZyZWUgaW5vZGVzOiAyNTctNTEyCitHcm91cCAyOiAoQmxvY2tzIDIwNDktMzA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDUxLTIwODIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA4My0zMDcyCisgIEZyZWUgaW5vZGVzOiA1MTMtNzY4CitHcm91cCAzOiAoQmxvY2tzIDMwNzMtNDA5NikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMzA3MworICBCbG9jayBiaXRtYXAgYXQgMzA3NCAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgMzA3NSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDMwNzYtMzEwNyAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTA4LTQwOTYKKyAgRnJlZSBpbm9kZXM6IDc2OS0xMDI0CitHcm91cCA0OiAoQmxvY2tzIDQwOTctNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk5LTQxMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEzMS01MTIwCisgIEZyZWUgaW5vZGVzOiAxMDI1LTEyODAKK0dyb3VwIDU6IChCbG9ja3MgNTEyMS02MTQ0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA1MTIxCisgIEJsb2NrIGJpdG1hcCBhdCA1MTIyICgrMSksIElub2RlIGJpdG1hcCBhdCA1MTIzICgrMikKKyAgSW5vZGUgdGFibGUgYXQgNTEyNC01MTU1ICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUxNTYtNjE0NAorICBGcmVlIGlub2RlczogMTI4MS0xNTM2CitHcm91cCA2OiAoQmxvY2tzIDYxNDUtNzE2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYxNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYxNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ3LTYxNzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE3OS03MTY4CisgIEZyZWUgaW5vZGVzOiAxNTM3LTE3OTIKK0dyb3VwIDc6IChCbG9ja3MgNzE2OS04MTkyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA3MTY5CisgIEJsb2NrIGJpdG1hcCBhdCA3MTcwICgrMSksIElub2RlIGJpdG1hcCBhdCA3MTcxICgrMikKKyAgSW5vZGUgdGFibGUgYXQgNzE3Mi03MjAzICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcyMDQtODE5MgorICBGcmVlIGlub2RlczogMTc5My0yMDQ4CitHcm91cCA4OiAoQmxvY2tzIDgxOTMtOTIxNikKKyAgQmxvY2sgYml0bWFwIGF0IDgxOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTk1LTgyMjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODIyNy05MjE2CisgIEZyZWUgaW5vZGVzOiAyMDQ5LTIzMDQKK0dyb3VwIDk6IChCbG9ja3MgOTIxNy0xMDI0MCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgOTIxNworICBCbG9jayBiaXRtYXAgYXQgOTIxOCAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgOTIxOSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDkyMjAtOTI1MSAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MjUyLTEwMjQwCisgIEZyZWUgaW5vZGVzOiAyMzA1LTI1NjAKK0dyb3VwIDEwOiAoQmxvY2tzIDEwMjQxLTExMjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDMtMTAyNzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNzUtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDI1NjEtMjgxNgorR3JvdXAgMTE6IChCbG9ja3MgMTEyNjUtMTIyODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTI2Ny0xMTI5OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTI5OS0xMjI4OAorICBGcmVlIGlub2RlczogMjgxNy0zMDcyCitHcm91cCAxMjogKEJsb2NrcyAxMjI4OS0xMzMxMikKKyAgQmxvY2sgYml0bWFwIGF0IDEyMjg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjI5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMjkxLTEyMzIyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMzIzLTEzMzEyCisgIEZyZWUgaW5vZGVzOiAzMDczLTMzMjgKK0dyb3VwIDEzOiAoQmxvY2tzIDEzMzEzLTE0MzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMzE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMzMTUtMTMzNDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzNDctMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDMzMjktMzU4NAorR3JvdXAgMTQ6IChCbG9ja3MgMTQzMzctMTUzNjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNDMzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDMzOS0xNDM3MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDM3MS0xNTM2MAorICBGcmVlIGlub2RlczogMzU4NS0zODQwCitHcm91cCAxNTogKEJsb2NrcyAxNTM2MS0xNjM4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1MzYxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTM2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzYzLTE1Mzk0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1Mzk1LTE2Mzg0CisgIEZyZWUgaW5vZGVzOiAzODQxLTQwOTYKK0dyb3VwIDE2OiAoQmxvY2tzIDE2Mzg1LTE3NDA4KQorICBCbG9jayBiaXRtYXAgYXQgMTYzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2Mzg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYzODctMTY0MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTY0MTktMTc0MDgKKyAgRnJlZSBpbm9kZXM6IDQwOTctNDM1MgorR3JvdXAgMTc6IChCbG9ja3MgMTc0MDktMTg0MzIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNzQwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTc0MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNzQxMS0xNzQ0MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzQ0My0xODQzMgorICBGcmVlIGlub2RlczogNDM1My00NjA4CitHcm91cCAxODogKEJsb2NrcyAxODQzMy0xOTQ1NikKKyAgQmxvY2sgYml0bWFwIGF0IDE4NDMzICgrMCksIElub2RlIGJpdG1hcCBhdCAxODQzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4NDM1LTE4NDY2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4NDY3LTE5NDU2CisgIEZyZWUgaW5vZGVzOiA0NjA5LTQ4NjQKK0dyb3VwIDE5OiAoQmxvY2tzIDE5NDU3LTIwNDgwKQorICBCbG9jayBiaXRtYXAgYXQgMTk0NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5NDU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTk0NTktMTk0OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk0OTEtMjA0ODAKKyAgRnJlZSBpbm9kZXM6IDQ4NjUtNTEyMAorR3JvdXAgMjA6IChCbG9ja3MgMjA0ODEtMjE1MDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjA0ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDQ4My0yMDUxNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDUxNS0yMTUwNAorICBGcmVlIGlub2RlczogNTEyMS01Mzc2CitHcm91cCAyMTogKEJsb2NrcyAyMTUwNS0yMjUyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDIxNTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMTUwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIxNTA3LTIxNTM4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIxNTM5LTIyNTI4CisgIEZyZWUgaW5vZGVzOiA1Mzc3LTU2MzIKK0dyb3VwIDIyOiAoQmxvY2tzIDIyNTI5LTIzNTUyKQorICBCbG9jayBiaXRtYXAgYXQgMjI1MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIyNTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjI1MzEtMjI1NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjI1NjMtMjM1NTIKKyAgRnJlZSBpbm9kZXM6IDU2MzMtNTg4OAorR3JvdXAgMjM6IChCbG9ja3MgMjM1NTMtMjQ1NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAyMzU1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjM1NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMzU1NS0yMzU4NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzU4Ny0yNDU3NgorICBGcmVlIGlub2RlczogNTg4OS02MTQ0CitHcm91cCAyNDogKEJsb2NrcyAyNDU3Ny0yNTYwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDI0NTc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNDU3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI0NTc5LTI0NjEwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0NjExLTI1NjAwCisgIEZyZWUgaW5vZGVzOiA2MTQ1LTY0MDAKK0dyb3VwIDI1OiAoQmxvY2tzIDI1NjAxLTI2NjI0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNTYwMQorICBCbG9jayBiaXRtYXAgYXQgMjU2MDIgKCsxKSwgSW5vZGUgYml0bWFwIGF0IDI1NjAzICgrMikKKyAgSW5vZGUgdGFibGUgYXQgMjU2MDQtMjU2MzUgKCszKQorICA5ODkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU2MzYtMjY2MjQKKyAgRnJlZSBpbm9kZXM6IDY0MDEtNjY1NgorR3JvdXAgMjY6IChCbG9ja3MgMjY2MjUtMjc2NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjYyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjY2MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjYyNy0yNjY1OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjY1OS0yNzY0OAorICBGcmVlIGlub2RlczogNjY1Ny02OTEyCitHcm91cCAyNzogKEJsb2NrcyAyNzY0OS0yODY3MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjc2NDkKKyAgQmxvY2sgYml0bWFwIGF0IDI3NjUwICgrMSksIElub2RlIGJpdG1hcCBhdCAyNzY1MSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDI3NjUyLTI3NjgzICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3Njg0LTI4NjcyCisgIEZyZWUgaW5vZGVzOiA2OTEzLTcxNjgKK0dyb3VwIDI4OiAoQmxvY2tzIDI4NjczLTI5Njk2KQorICBCbG9jayBiaXRtYXAgYXQgMjg2NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4Njc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjg2NzUtMjg3MDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjg3MDctMjk2OTYKKyAgRnJlZSBpbm9kZXM6IDcxNjktNzQyNAorR3JvdXAgMjk6IChCbG9ja3MgMjk2OTctMzA3MjApCisgIEJsb2NrIGJpdG1hcCBhdCAyOTY5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjk2OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyOTY5OS0yOTczMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyOTczMS0zMDcyMAorICBGcmVlIGlub2RlczogNzQyNS03NjgwCitHcm91cCAzMDogKEJsb2NrcyAzMDcyMS0zMTc0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDMwNzIxICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDcyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMwNzIzLTMwNzU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMwNzU1LTMxNzQ0CisgIEZyZWUgaW5vZGVzOiA3NjgxLTc5MzYKK0dyb3VwIDMxOiAoQmxvY2tzIDMxNzQ1LTMyNzY4KQorICBHcm91cCBkZXNjcmlwdG9yIGF0IDMxNzQ1CisgIEJsb2NrIGJpdG1hcCBhdCAzMTc0NiAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgMzE3NDcgKCsyKQorICBJbm9kZSB0YWJsZSBhdCAzMTc0OC0zMTc3OSAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTc4MC0zMjc2OAorICBGcmVlIGlub2RlczogNzkzNy04MTkyCitHcm91cCAzMjogKEJsb2NrcyAzMjc2OS0zMzc5MikKKyAgR3JvdXAgZGVzY3JpcHRvciBhdCAzMjc2OQorICBCbG9jayBiaXRtYXAgYXQgMzI3NzAgKCsxKSwgSW5vZGUgYml0bWFwIGF0IDMyNzcxICgrMikKKyAgSW5vZGUgdGFibGUgYXQgMzI3NzItMzI4MDMgKCszKQorICA5ODkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzI4MDQtMzM3OTIKKyAgRnJlZSBpbm9kZXM6IDgxOTMtODQ0OAorR3JvdXAgMzM6IChCbG9ja3MgMzM3OTMtMzQ4MTYpCisgIEdyb3VwIGRlc2NyaXB0b3IgYXQgMzM3OTMKKyAgQmxvY2sgYml0bWFwIGF0IDMzNzk0ICgrMSksIElub2RlIGJpdG1hcCBhdCAzMzc5NSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDMzNzk2LTMzODI3ICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzODI4LTM0ODE2CisgIEZyZWUgaW5vZGVzOiA4NDQ5LTg3MDQKK0dyb3VwIDM0OiAoQmxvY2tzIDM0ODE3LTM1ODQwKQorICBCbG9jayBiaXRtYXAgYXQgMzQ4MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM0ODE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzQ4MTktMzQ4NTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzQ4NTEtMzU4NDAKKyAgRnJlZSBpbm9kZXM6IDg3MDUtODk2MAorR3JvdXAgMzU6IChCbG9ja3MgMzU4NDEtMzY4NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAzNTg0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzU4NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNTg0My0zNTg3NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNTg3NS0zNjg2NAorICBGcmVlIGlub2RlczogODk2MS05MjE2CitHcm91cCAzNjogKEJsb2NrcyAzNjg2NS0zNzg4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDM2ODY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNjg2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM2ODY3LTM2ODk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM2ODk5LTM3ODg4CisgIEZyZWUgaW5vZGVzOiA5MjE3LTk0NzIKK0dyb3VwIDM3OiAoQmxvY2tzIDM3ODg5LTM4OTEyKQorICBCbG9jayBiaXRtYXAgYXQgMzc4ODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM3ODkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzc4OTEtMzc5MjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzc5MjMtMzg5MTIKKyAgRnJlZSBpbm9kZXM6IDk0NzMtOTcyOAorR3JvdXAgMzg6IChCbG9ja3MgMzg5MTMtMzk5MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAzODkxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzg5MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzODkxNS0zODk0NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzODk0Ny0zOTkzNgorICBGcmVlIGlub2RlczogOTcyOS05OTg0CitHcm91cCAzOTogKEJsb2NrcyAzOTkzNy00MDk2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDM5OTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAzOTkzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM5OTM5LTM5OTcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM5OTcxLTQwOTYwCisgIEZyZWUgaW5vZGVzOiA5OTg1LTEwMjQwCitHcm91cCA0MDogKEJsb2NrcyA0MDk2MS00MTk4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTYxICgrMCksIElub2RlIGJpdG1hcCBhdCA0MDk2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQwOTYzLTQwOTk0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQwOTk1LTQxOTg0CisgIEZyZWUgaW5vZGVzOiAxMDI0MS0xMDQ5NgorR3JvdXAgNDE6IChCbG9ja3MgNDE5ODUtNDMwMDgpCisgIEJsb2NrIGJpdG1hcCBhdCA0MTk4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDE5ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MTk4Ny00MjAxOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MjAxOS00MzAwOAorICBGcmVlIGlub2RlczogMTA0OTctMTA3NTIKK0dyb3VwIDQyOiAoQmxvY2tzIDQzMDA5LTQ0MDMyKQorICBCbG9jayBiaXRtYXAgYXQgNDMwMDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQzMDEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDMwMTEtNDMwNDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDMwNDMtNDQwMzIKKyAgRnJlZSBpbm9kZXM6IDEwNzUzLTExMDA4CitHcm91cCA0MzogKEJsb2NrcyA0NDAzMy00NTA1NikKKyAgQmxvY2sgYml0bWFwIGF0IDQ0MDMzICgrMCksIElub2RlIGJpdG1hcCBhdCA0NDAzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ0MDM1LTQ0MDY2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ0MDY3LTQ1MDU2CisgIEZyZWUgaW5vZGVzOiAxMTAwOS0xMTI2NAorR3JvdXAgNDQ6IChCbG9ja3MgNDUwNTctNDYwODApCisgIEJsb2NrIGJpdG1hcCBhdCA0NTA1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDUwNTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NTA1OS00NTA5MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NTA5MS00NjA4MAorICBGcmVlIGlub2RlczogMTEyNjUtMTE1MjAKK0dyb3VwIDQ1OiAoQmxvY2tzIDQ2MDgxLTQ3MTA0KQorICBCbG9jayBiaXRtYXAgYXQgNDYwODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ2MDgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDYwODMtNDYxMTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDYxMTUtNDcxMDQKKyAgRnJlZSBpbm9kZXM6IDExNTIxLTExNzc2CitHcm91cCA0NjogKEJsb2NrcyA0NzEwNS00ODEyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ3MTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NzEwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ3MTA3LTQ3MTM4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ3MTM5LTQ4MTI4CisgIEZyZWUgaW5vZGVzOiAxMTc3Ny0xMjAzMgorR3JvdXAgNDc6IChCbG9ja3MgNDgxMjktNDkxNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA0ODEyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDgxMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0ODEzMS00ODE2MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0ODE2My00OTE1MgorICBGcmVlIGlub2RlczogMTIwMzMtMTIyODgKK0dyb3VwIDQ4OiAoQmxvY2tzIDQ5MTUzLTUwMTc2KQorICBCbG9jayBiaXRtYXAgYXQgNDkxNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ5MTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDkxNTUtNDkxODYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDkxODctNTAxNzYKKyAgRnJlZSBpbm9kZXM6IDEyMjg5LTEyNTQ0CitHcm91cCA0OTogKEJsb2NrcyA1MDE3Ny01MTIwMCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTAxNzcKKyAgQmxvY2sgYml0bWFwIGF0IDUwMTc4ICgrMSksIElub2RlIGJpdG1hcCBhdCA1MDE3OSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDUwMTgwLTUwMjExICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUwMjEyLTUxMjAwCisgIEZyZWUgaW5vZGVzOiAxMjU0NS0xMjgwMAorR3JvdXAgNTA6IChCbG9ja3MgNTEyMDEtNTIyMjQpCisgIEJsb2NrIGJpdG1hcCBhdCA1MTIwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTEyMDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MTIwMy01MTIzNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MTIzNS01MjIyNAorICBGcmVlIGlub2RlczogMTI4MDEtMTMwNTYKK0dyb3VwIDUxOiAoQmxvY2tzIDUyMjI1LTUzMjQ4KQorICBCbG9jayBiaXRtYXAgYXQgNTIyMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUyMjI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTIyMjctNTIyNTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTIyNTktNTMyNDgKKyAgRnJlZSBpbm9kZXM6IDEzMDU3LTEzMzEyCitHcm91cCA1MjogKEJsb2NrcyA1MzI0OS01NDI3MikKKyAgQmxvY2sgYml0bWFwIGF0IDUzMjQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCA1MzI1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUzMjUxLTUzMjgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzMjgzLTU0MjcyCisgIEZyZWUgaW5vZGVzOiAxMzMxMy0xMzU2OAorR3JvdXAgNTM6IChCbG9ja3MgNTQyNzMtNTUyOTYpCisgIEJsb2NrIGJpdG1hcCBhdCA1NDI3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTQyNzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NDI3NS01NDMwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NDMwNy01NTI5NgorICBGcmVlIGlub2RlczogMTM1NjktMTM4MjQKK0dyb3VwIDU0OiAoQmxvY2tzIDU1Mjk3LTU2MzIwKQorICBCbG9jayBiaXRtYXAgYXQgNTUyOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU1Mjk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTUyOTktNTUzMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTUzMzEtNTYzMjAKKyAgRnJlZSBpbm9kZXM6IDEzODI1LTE0MDgwCitHcm91cCA1NTogKEJsb2NrcyA1NjMyMS01NzM0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDU2MzIxICgrMCksIElub2RlIGJpdG1hcCBhdCA1NjMyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU2MzIzLTU2MzU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU2MzU1LTU3MzQ0CisgIEZyZWUgaW5vZGVzOiAxNDA4MS0xNDMzNgorR3JvdXAgNTY6IChCbG9ja3MgNTczNDUtNTgzNjgpCisgIEJsb2NrIGJpdG1hcCBhdCA1NzM0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTczNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NzM0Ny01NzM3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NzM3OS01ODM2OAorICBGcmVlIGlub2RlczogMTQzMzctMTQ1OTIKK0dyb3VwIDU3OiAoQmxvY2tzIDU4MzY5LTU5MzkyKQorICBCbG9jayBiaXRtYXAgYXQgNTgzNjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU4MzcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTgzNzEtNTg0MDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTg0MDMtNTkzOTIKKyAgRnJlZSBpbm9kZXM6IDE0NTkzLTE0ODQ4CitHcm91cCA1ODogKEJsb2NrcyA1OTM5My02MDQxNikKKyAgQmxvY2sgYml0bWFwIGF0IDU5MzkzICgrMCksIElub2RlIGJpdG1hcCBhdCA1OTM5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU5Mzk1LTU5NDI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU5NDI3LTYwNDE2CisgIEZyZWUgaW5vZGVzOiAxNDg0OS0xNTEwNAorR3JvdXAgNTk6IChCbG9ja3MgNjA0MTctNjE0NDApCisgIEJsb2NrIGJpdG1hcCBhdCA2MDQxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjA0MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MDQxOS02MDQ1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MDQ1MS02MTQ0MAorICBGcmVlIGlub2RlczogMTUxMDUtMTUzNjAKK0dyb3VwIDYwOiAoQmxvY2tzIDYxNDQxLTYyNDY0KQorICBCbG9jayBiaXRtYXAgYXQgNjE0NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYxNDQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0NDMtNjE0NzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE0NzUtNjI0NjQKKyAgRnJlZSBpbm9kZXM6IDE1MzYxLTE1NjE2CitHcm91cCA2MTogKEJsb2NrcyA2MjQ2NS02MzQ4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYyNDY1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MjQ2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYyNDY3LTYyNDk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYyNDk5LTYzNDg4CisgIEZyZWUgaW5vZGVzOiAxNTYxNy0xNTg3MgorR3JvdXAgNjI6IChCbG9ja3MgNjM0ODktNjQ1MTIpCisgIEJsb2NrIGJpdG1hcCBhdCA2MzQ4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjM0OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MzQ5MS02MzUyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MzUyMy02NDUxMgorICBGcmVlIGlub2RlczogMTU4NzMtMTYxMjgKK0dyb3VwIDYzOiAoQmxvY2tzIDY0NTEzLTY1NTM2KQorICBHcm91cCBkZXNjcmlwdG9yIGF0IDY0NTEzCisgIEJsb2NrIGJpdG1hcCBhdCA2NDUxNCAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgNjQ1MTUgKCsyKQorICBJbm9kZSB0YWJsZSBhdCA2NDUxNi02NDU0NyAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NDU0OC02NTUzNgorICBGcmVlIGlub2RlczogMTYxMjktMTYzODQKK0dyb3VwIDY0OiAoQmxvY2tzIDY1NTM3LTY2NTYwKQorICBHcm91cCBkZXNjcmlwdG9yIGF0IDY1NTM3CisgIEJsb2NrIGJpdG1hcCBhdCA2NTUzOCAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgNjU1MzkgKCsyKQorICBJbm9kZSB0YWJsZSBhdCA2NTU0MC02NTU3MSAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NTU3Mi02NjU2MAorICBGcmVlIGlub2RlczogMTYzODUtMTY2NDAKK0dyb3VwIDY1OiAoQmxvY2tzIDY2NTYxLTY3NTg0KQorICBHcm91cCBkZXNjcmlwdG9yIGF0IDY2NTYxCisgIEJsb2NrIGJpdG1hcCBhdCA2NjU2MiAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgNjY1NjMgKCsyKQorICBJbm9kZSB0YWJsZSBhdCA2NjU2NC02NjU5NSAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NjU5Ni02NzU4NAorICBGcmVlIGlub2RlczogMTY2NDEtMTY4OTYKK0dyb3VwIDY2OiAoQmxvY2tzIDY3NTg1LTY4NjA4KQorICBCbG9jayBiaXRtYXAgYXQgNjc1ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY3NTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjc1ODctNjc2MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjc2MTktNjg2MDgKKyAgRnJlZSBpbm9kZXM6IDE2ODk3LTE3MTUyCitHcm91cCA2NzogKEJsb2NrcyA2ODYwOS02OTYzMikKKyAgQmxvY2sgYml0bWFwIGF0IDY4NjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCA2ODYxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY4NjExLTY4NjQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY4NjQzLTY5NjMyCisgIEZyZWUgaW5vZGVzOiAxNzE1My0xNzQwOAorR3JvdXAgNjg6IChCbG9ja3MgNjk2MzMtNzA2NTYpCisgIEJsb2NrIGJpdG1hcCBhdCA2OTYzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjk2MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2OTYzNS02OTY2NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2OTY2Ny03MDY1NgorICBGcmVlIGlub2RlczogMTc0MDktMTc2NjQKK0dyb3VwIDY5OiAoQmxvY2tzIDcwNjU3LTcxNjgwKQorICBCbG9jayBiaXRtYXAgYXQgNzA2NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDcwNjU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzA2NTktNzA2OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzA2OTEtNzE2ODAKKyAgRnJlZSBpbm9kZXM6IDE3NjY1LTE3OTIwCitHcm91cCA3MDogKEJsb2NrcyA3MTY4MS03MjcwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNjgxICgrMCksIElub2RlIGJpdG1hcCBhdCA3MTY4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDcxNjgzLTcxNzE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcxNzE1LTcyNzA0CisgIEZyZWUgaW5vZGVzOiAxNzkyMS0xODE3NgorR3JvdXAgNzE6IChCbG9ja3MgNzI3MDUtNzM3MjgpCisgIEJsb2NrIGJpdG1hcCBhdCA3MjcwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzI3MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MjcwNy03MjczOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MjczOS03MzcyOAorICBGcmVlIGlub2RlczogMTgxNzctMTg0MzIKK0dyb3VwIDcyOiAoQmxvY2tzIDczNzI5LTc0NzUyKQorICBCbG9jayBiaXRtYXAgYXQgNzM3MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDczNzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzM3MzEtNzM3NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzM3NjMtNzQ3NTIKKyAgRnJlZSBpbm9kZXM6IDE4NDMzLTE4Njg4CitHcm91cCA3MzogKEJsb2NrcyA3NDc1My03NTc3NikKKyAgQmxvY2sgYml0bWFwIGF0IDc0NzUzICgrMCksIElub2RlIGJpdG1hcCBhdCA3NDc1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc0NzU1LTc0Nzg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0Nzg3LTc1Nzc2CisgIEZyZWUgaW5vZGVzOiAxODY4OS0xODk0NAorR3JvdXAgNzQ6IChCbG9ja3MgNzU3NzctNzY4MDApCisgIEJsb2NrIGJpdG1hcCBhdCA3NTc3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzU3NzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NTc3OS03NTgxMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NTgxMS03NjgwMAorICBGcmVlIGlub2RlczogMTg5NDUtMTkyMDAKK0dyb3VwIDc1OiAoQmxvY2tzIDc2ODAxLTc3ODI0KQorICBCbG9jayBiaXRtYXAgYXQgNzY4MDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc2ODAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzY4MDMtNzY4MzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzY4MzUtNzc4MjQKKyAgRnJlZSBpbm9kZXM6IDE5MjAxLTE5NDU2CitHcm91cCA3NjogKEJsb2NrcyA3NzgyNS03ODg0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDc3ODI1ICgrMCksIElub2RlIGJpdG1hcCBhdCA3NzgyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc3ODI3LTc3ODU4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc3ODU5LTc4ODQ4CisgIEZyZWUgaW5vZGVzOiAxOTQ1Ny0xOTcxMgorR3JvdXAgNzc6IChCbG9ja3MgNzg4NDktNzk4NzIpCisgIEJsb2NrIGJpdG1hcCBhdCA3ODg0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzg4NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3ODg1MS03ODg4MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3ODg4My03OTg3MgorICBGcmVlIGlub2RlczogMTk3MTMtMTk5NjgKK0dyb3VwIDc4OiAoQmxvY2tzIDc5ODczLTgwODk2KQorICBCbG9jayBiaXRtYXAgYXQgNzk4NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc5ODc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzk4NzUtNzk5MDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzk5MDctODA4OTYKKyAgRnJlZSBpbm9kZXM6IDE5OTY5LTIwMjI0CitHcm91cCA3OTogKEJsb2NrcyA4MDg5Ny04MTkyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDgwODk3ICgrMCksIElub2RlIGJpdG1hcCBhdCA4MDg5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgwODk5LTgwOTMwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgwOTMxLTgxOTIwCisgIEZyZWUgaW5vZGVzOiAyMDIyNS0yMDQ4MAorR3JvdXAgODA6IChCbG9ja3MgODE5MjEtODI5NDQpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODE5MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTkyMy04MTk1NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4MTk1NS04Mjk0NAorICBGcmVlIGlub2RlczogMjA0ODEtMjA3MzYKK0dyb3VwIDgxOiAoQmxvY2tzIDgyOTQ1LTgzOTY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4Mjk0NQorICBCbG9jayBiaXRtYXAgYXQgODI5NDYgKCsxKSwgSW5vZGUgYml0bWFwIGF0IDgyOTQ3ICgrMikKKyAgSW5vZGUgdGFibGUgYXQgODI5NDgtODI5NzkgKCszKQorICA5ODkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODI5ODAtODM5NjgKKyAgRnJlZSBpbm9kZXM6IDIwNzM3LTIwOTkyCitHcm91cCA4MjogKEJsb2NrcyA4Mzk2OS04NDk5MikKKyAgQmxvY2sgYml0bWFwIGF0IDgzOTY5ICgrMCksIElub2RlIGJpdG1hcCBhdCA4Mzk3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgzOTcxLTg0MDAyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg0MDAzLTg0OTkyCisgIEZyZWUgaW5vZGVzOiAyMDk5My0yMTI0OAorR3JvdXAgODM6IChCbG9ja3MgODQ5OTMtODYwMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4NDk5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODQ5OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NDk5NS04NTAyNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NTAyNy04NjAxNgorICBGcmVlIGlub2RlczogMjEyNDktMjE1MDQKK0dyb3VwIDg0OiAoQmxvY2tzIDg2MDE3LTg3MDQwKQorICBCbG9jayBiaXRtYXAgYXQgODYwMTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg2MDE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODYwMTktODYwNTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODYwNTEtODcwNDAKKyAgRnJlZSBpbm9kZXM6IDIxNTA1LTIxNzYwCitHcm91cCA4NTogKEJsb2NrcyA4NzA0MS04ODA2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDg3MDQxICgrMCksIElub2RlIGJpdG1hcCBhdCA4NzA0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg3MDQzLTg3MDc0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MDc1LTg4MDY0CisgIEZyZWUgaW5vZGVzOiAyMTc2MS0yMjAxNgorR3JvdXAgODY6IChCbG9ja3MgODgwNjUtODkwODgpCisgIEJsb2NrIGJpdG1hcCBhdCA4ODA2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODgwNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4ODA2Ny04ODA5OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4ODA5OS04OTA4OAorICBGcmVlIGlub2RlczogMjIwMTctMjIyNzIKK0dyb3VwIDg3OiAoQmxvY2tzIDg5MDg5LTkwMTEyKQorICBCbG9jayBiaXRtYXAgYXQgODkwODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg5MDkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODkwOTEtODkxMjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODkxMjMtOTAxMTIKKyAgRnJlZSBpbm9kZXM6IDIyMjczLTIyNTI4CitHcm91cCA4ODogKEJsb2NrcyA5MDExMy05MTEzNikKKyAgQmxvY2sgYml0bWFwIGF0IDkwMTEzICgrMCksIElub2RlIGJpdG1hcCBhdCA5MDExNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkwMTE1LTkwMTQ2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkwMTQ3LTkxMTM2CisgIEZyZWUgaW5vZGVzOiAyMjUyOS0yMjc4NAorR3JvdXAgODk6IChCbG9ja3MgOTExMzctOTIxNjApCisgIEJsb2NrIGJpdG1hcCBhdCA5MTEzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTExMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5MTEzOS05MTE3MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MTE3MS05MjE2MAorICBGcmVlIGlub2RlczogMjI3ODUtMjMwNDAKK0dyb3VwIDkwOiAoQmxvY2tzIDkyMTYxLTkzMTg0KQorICBCbG9jayBiaXRtYXAgYXQgOTIxNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkyMTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTIxNjMtOTIxOTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTIxOTUtOTMxODQKKyAgRnJlZSBpbm9kZXM6IDIzMDQxLTIzMjk2CitHcm91cCA5MTogKEJsb2NrcyA5MzE4NS05NDIwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDkzMTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5MzE4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkzMTg3LTkzMjE4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkzMjE5LTk0MjA4CisgIEZyZWUgaW5vZGVzOiAyMzI5Ny0yMzU1MgorR3JvdXAgOTI6IChCbG9ja3MgOTQyMDktOTUyMzIpCisgIEJsb2NrIGJpdG1hcCBhdCA5NDIwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTQyMTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NDIxMS05NDI0MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDI0My05NTIzMgorICBGcmVlIGlub2RlczogMjM1NTMtMjM4MDgKK0dyb3VwIDkzOiAoQmxvY2tzIDk1MjMzLTk2MjU2KQorICBCbG9jayBiaXRtYXAgYXQgOTUyMzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk1MjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTUyMzUtOTUyNjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTUyNjctOTYyNTYKKyAgRnJlZSBpbm9kZXM6IDIzODA5LTI0MDY0CitHcm91cCA5NDogKEJsb2NrcyA5NjI1Ny05NzI4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDk2MjU3ICgrMCksIElub2RlIGJpdG1hcCBhdCA5NjI1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk2MjU5LTk2MjkwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk2MjkxLTk3MjgwCisgIEZyZWUgaW5vZGVzOiAyNDA2NS0yNDMyMAorR3JvdXAgOTU6IChCbG9ja3MgOTcyODEtOTgzMDQpCisgIEdyb3VwIGRlc2NyaXB0b3IgYXQgOTcyODEKKyAgQmxvY2sgYml0bWFwIGF0IDk3MjgyICgrMSksIElub2RlIGJpdG1hcCBhdCA5NzI4MyAoKzIpCisgIElub2RlIHRhYmxlIGF0IDk3Mjg0LTk3MzE1ICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk3MzE2LTk4MzA0CisgIEZyZWUgaW5vZGVzOiAyNDMyMS0yNDU3NgorR3JvdXAgOTY6IChCbG9ja3MgOTgzMDUtOTkzMjgpCisgIEdyb3VwIGRlc2NyaXB0b3IgYXQgOTgzMDUKKyAgQmxvY2sgYml0bWFwIGF0IDk4MzA2ICgrMSksIElub2RlIGJpdG1hcCBhdCA5ODMwNyAoKzIpCisgIElub2RlIHRhYmxlIGF0IDk4MzA4LTk4MzM5ICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk4MzQwLTk5MzI4CisgIEZyZWUgaW5vZGVzOiAyNDU3Ny0yNDgzMgorR3JvdXAgOTc6IChCbG9ja3MgOTkzMjktMTAwMzUyKQorICBHcm91cCBkZXNjcmlwdG9yIGF0IDk5MzI5CisgIEJsb2NrIGJpdG1hcCBhdCA5OTMzMCAoKzEpLCBJbm9kZSBiaXRtYXAgYXQgOTkzMzEgKCsyKQorICBJbm9kZSB0YWJsZSBhdCA5OTMzMi05OTM2MyAoKzMpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5OTM2NC0xMDAzNTIKKyAgRnJlZSBpbm9kZXM6IDI0ODMzLTI1MDg4CitHcm91cCA5ODogKEJsb2NrcyAxMDAzNTMtMTAxMzc2KQorICBCbG9jayBiaXRtYXAgYXQgMTAwMzUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDAzNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDAzNTUtMTAwMzg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMDM4Ny0xMDEzNzYKKyAgRnJlZSBpbm9kZXM6IDI1MDg5LTI1MzQ0CitHcm91cCA5OTogKEJsb2NrcyAxMDEzNzctMTAyNDAwKQorICBCbG9jayBiaXRtYXAgYXQgMTAxMzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDEzNzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDEzNzktMTAxNDEwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMTQxMS0xMDI0MDAKKyAgRnJlZSBpbm9kZXM6IDI1MzQ1LTI1NjAwCitHcm91cCAxMDA6IChCbG9ja3MgMTAyNDAxLTEwMzQyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjQwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTAyNDAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDAzLTEwMjQzNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDI0MzUtMTAzNDI0CisgIEZyZWUgaW5vZGVzOiAyNTYwMS0yNTg1NgorR3JvdXAgMTAxOiAoQmxvY2tzIDEwMzQyNS0xMDQ0NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDM0MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMzQyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMzQyNy0xMDM0NTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAzNDU5LTEwNDQ0OAorICBGcmVlIGlub2RlczogMjU4NTctMjYxMTIKK0dyb3VwIDEwMjogKEJsb2NrcyAxMDQ0NDktMTA1NDcyKQorICBCbG9jayBiaXRtYXAgYXQgMTA0NDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDQ0NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDQ0NTEtMTA0NDgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNDQ4My0xMDU0NzIKKyAgRnJlZSBpbm9kZXM6IDI2MTEzLTI2MzY4CitHcm91cCAxMDM6IChCbG9ja3MgMTA1NDczLTEwNjQ5NikKKyAgQmxvY2sgYml0bWFwIGF0IDEwNTQ3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA1NDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA1NDc1LTEwNTUwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDU1MDctMTA2NDk2CisgIEZyZWUgaW5vZGVzOiAyNjM2OS0yNjYyNAorR3JvdXAgMTA0OiAoQmxvY2tzIDEwNjQ5Ny0xMDc1MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMDY0OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwNjQ5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwNjQ5OS0xMDY1MzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA2NTMxLTEwNzUyMAorICBGcmVlIGlub2RlczogMjY2MjUtMjY4ODAKK0dyb3VwIDEwNTogKEJsb2NrcyAxMDc1MjEtMTA4NTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTA3NTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDc1MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDc1MjMtMTA3NTU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNzU1NS0xMDg1NDQKKyAgRnJlZSBpbm9kZXM6IDI2ODgxLTI3MTM2CitHcm91cCAxMDY6IChCbG9ja3MgMTA4NTQ1LTEwOTU2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwODU0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA4NTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA4NTQ3LTEwODU3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDg1NzktMTA5NTY4CisgIEZyZWUgaW5vZGVzOiAyNzEzNy0yNzM5MgorR3JvdXAgMTA3OiAoQmxvY2tzIDEwOTU2OS0xMTA1OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDk1NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwOTU3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwOTU3MS0xMDk2MDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA5NjAzLTExMDU5MgorICBGcmVlIGlub2RlczogMjczOTMtMjc2NDgKK0dyb3VwIDEwODogKEJsb2NrcyAxMTA1OTMtMTExNjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTEwNTkzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTA1OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTA1OTUtMTEwNjI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMDYyNy0xMTE2MTYKKyAgRnJlZSBpbm9kZXM6IDI3NjQ5LTI3OTA0CitHcm91cCAxMDk6IChCbG9ja3MgMTExNjE3LTExMjY0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMTYxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTExNjE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTExNjE5LTExMTY1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTE2NTEtMTEyNjQwCisgIEZyZWUgaW5vZGVzOiAyNzkwNS0yODE2MAorR3JvdXAgMTEwOiAoQmxvY2tzIDExMjY0MS0xMTM2NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExMjY0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMjY0My0xMTI2NzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNjc1LTExMzY2NAorICBGcmVlIGlub2RlczogMjgxNjEtMjg0MTYKK0dyb3VwIDExMTogKEJsb2NrcyAxMTM2NjUtMTE0Njg4KQorICBCbG9jayBiaXRtYXAgYXQgMTEzNjY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTM2NjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTM2NjctMTEzNjk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMzY5OS0xMTQ2ODgKKyAgRnJlZSBpbm9kZXM6IDI4NDE3LTI4NjcyCitHcm91cCAxMTI6IChCbG9ja3MgMTE0Njg5LTExNTcxMikKKyAgQmxvY2sgYml0bWFwIGF0IDExNDY4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE0NjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE0NjkxLTExNDcyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTQ3MjMtMTE1NzEyCisgIEZyZWUgaW5vZGVzOiAyODY3My0yODkyOAorR3JvdXAgMTEzOiAoQmxvY2tzIDExNTcxMy0xMTY3MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTU3MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNTcxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExNTcxNS0xMTU3NDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE1NzQ3LTExNjczNgorICBGcmVlIGlub2RlczogMjg5MjktMjkxODQKK0dyb3VwIDExNDogKEJsb2NrcyAxMTY3MzctMTE3NzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTE2NzM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTY3MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTY3MzktMTE2NzcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExNjc3MS0xMTc3NjAKKyAgRnJlZSBpbm9kZXM6IDI5MTg1LTI5NDQwCitHcm91cCAxMTU6IChCbG9ja3MgMTE3NzYxLTExODc4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDExNzc2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE3NzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE3NzYzLTExNzc5NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTc3OTUtMTE4Nzg0CisgIEZyZWUgaW5vZGVzOiAyOTQ0MS0yOTY5NgorR3JvdXAgMTE2OiAoQmxvY2tzIDExODc4NS0xMTk4MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTg3ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExODc4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExODc4Ny0xMTg4MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE4ODE5LTExOTgwOAorICBGcmVlIGlub2RlczogMjk2OTctMjk5NTIKK0dyb3VwIDExNzogKEJsb2NrcyAxMTk4MDktMTIwODMyKQorICBCbG9jayBiaXRtYXAgYXQgMTE5ODA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTk4MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTk4MTEtMTE5ODQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExOTg0My0xMjA4MzIKKyAgRnJlZSBpbm9kZXM6IDI5OTUzLTMwMjA4CitHcm91cCAxMTg6IChCbG9ja3MgMTIwODMzLTEyMTg1NikKKyAgQmxvY2sgYml0bWFwIGF0IDEyMDgzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIwODM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIwODM1LTEyMDg2NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjA4NjctMTIxODU2CisgIEZyZWUgaW5vZGVzOiAzMDIwOS0zMDQ2NAorR3JvdXAgMTE5OiAoQmxvY2tzIDEyMTg1Ny0xMjI4ODApCisgIEJsb2NrIGJpdG1hcCBhdCAxMjE4NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMTg1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMTg1OS0xMjE4OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIxODkxLTEyMjg4MAorICBGcmVlIGlub2RlczogMzA0NjUtMzA3MjAKK0dyb3VwIDEyMDogKEJsb2NrcyAxMjI4ODEtMTIzOTA0KQorICBCbG9jayBiaXRtYXAgYXQgMTIyODgxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjI4ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjI4ODMtMTIyOTE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMjkxNS0xMjM5MDQKKyAgRnJlZSBpbm9kZXM6IDMwNzIxLTMwOTc2CitHcm91cCAxMjE6IChCbG9ja3MgMTIzOTA1LTEyNDkyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyMzkwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIzOTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIzOTA3LTEyMzkzOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjM5MzktMTI0OTI4CisgIEZyZWUgaW5vZGVzOiAzMDk3Ny0zMTIzMgorR3JvdXAgMTIyOiAoQmxvY2tzIDEyNDkyOS0xMjU5NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjQ5MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyNDkzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyNDkzMS0xMjQ5NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI0OTYzLTEyNTk1MgorICBGcmVlIGlub2RlczogMzEyMzMtMzE0ODgKK0dyb3VwIDEyMzogKEJsb2NrcyAxMjU5NTMtMTI2OTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTI1OTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjU5NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjU5NTUtMTI1OTg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyNTk4Ny0xMjY5NzYKKyAgRnJlZSBpbm9kZXM6IDMxNDg5LTMxNzQ0CitHcm91cCAxMjQ6IChCbG9ja3MgMTI2OTc3LTEyODAwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyNjk3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI2OTc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTI2OTc5LTEyNzAxMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjcwMTEtMTI4MDAwCisgIEZyZWUgaW5vZGVzOiAzMTc0NS0zMjAwMAorR3JvdXAgMTI1OiAoQmxvY2tzIDEyODAwMS0xMjkwMjQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDEyODAwMQorICBCbG9jayBiaXRtYXAgYXQgMTI4MDAyICgrMSksIElub2RlIGJpdG1hcCBhdCAxMjgwMDMgKCsyKQorICBJbm9kZSB0YWJsZSBhdCAxMjgwMDQtMTI4MDM1ICgrMykKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODAzNi0xMjkwMjQKKyAgRnJlZSBpbm9kZXM6IDMyMDAxLTMyMjU2CitHcm91cCAxMjY6IChCbG9ja3MgMTI5MDI1LTEzMDA0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyOTAyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI5MDI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTI5MDI3LTEyOTA1OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjkwNTktMTMwMDQ4CisgIEZyZWUgaW5vZGVzOiAzMjI1Ny0zMjUxMgorR3JvdXAgMTI3OiAoQmxvY2tzIDEzMDA0OS0xMzEwNzEpCisgIEdyb3VwIGRlc2NyaXB0b3IgYXQgMTMwMDQ5CisgIEJsb2NrIGJpdG1hcCBhdCAxMzAwNTAgKCsxKSwgSW5vZGUgYml0bWFwIGF0IDEzMDA1MSAoKzIpCisgIElub2RlIHRhYmxlIGF0IDEzMDA1Mi0xMzAwODMgKCszKQorICA5ODggZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMwMDg0LTEzMTA3MQorICBGcmVlIGlub2RlczogMzI1MTMtMzI3NjgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21ldGFfYmcvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbWV0YV9iZy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyODViNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21ldGFfYmcvc2NyaXB0CkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT049Im1ldGEgYmxvY2tncm91cCBmZWF0dXJlIgorRlNfU0laRT0xMzEwNzIKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCitNS0UyRlNfT1BUUz0iLU8gbWV0YV9iZyxzcGFyc2Vfc3VwZXIsXnJlc2l6ZV9pbm9kZSAtZyAxMDI0IgorLiAkY21kX2Rpci9ydW5fbWtlMmZzCit1bnNldCBEVU1QRTJGU19JR05PUkVfODBDT0wKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21pbnJvb3RkaXIvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbWlucm9vdGRpci9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAxNThkYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21pbnJvb3RkaXIvZXhwZWN0CkBAIC0wLDAgKzEsMjE2IEBACitjcmVhdGUgZnMKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgZXh0X2F0dHIgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlciBodWdlX2ZpbGUgZGlyX25saW5rIGV4dHJhX2lzaXplIG1ldGFkYXRhX2NzdW0KK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgKG5vbmUpCitGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitGaWxlc3lzdGVtIE9TIHR5cGU6ICAgICAgIExpbnV4CitJbm9kZSBjb3VudDogICAgICAgICAgICAgIDEwMjQKK0Jsb2NrIGNvdW50OiAgICAgICAgICAgICAgMTYzODQKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgODE5CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDE2MDY1CitGcmVlIGlub2RlczogICAgICAgICAgICAgIDEwMDYKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK0dyb3VwIGRlc2NyaXB0b3Igc2l6ZTogICAgNjQKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDUxMgorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAxMjgKK0ZsZXggYmxvY2sgZ3JvdXAgc2l6ZTogICAgMTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAzMgorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAzMgorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKKworCitHcm91cCAwOiAoQmxvY2tzIDEtODE5MikKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMgorICBCbG9jayBiaXRtYXAgYXQgMyAoKzIpCisgIElub2RlIGJpdG1hcCBhdCA1ICgrNCkKKyAgSW5vZGUgdGFibGUgYXQgNy0xMzQgKCs2KQorICA3ODc2IGZyZWUgYmxvY2tzLCA0OTQgZnJlZSBpbm9kZXMsIDQgZGlyZWN0b3JpZXMsIDQ5NCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAzMTctODE5MgorICBGcmVlIGlub2RlczogMTktNTEyCitHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODMpIFtJTk9ERV9VTklOSVRdCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NAorICBCbG9jayBiaXRtYXAgYXQgNCAoYmcgIzAgKyAzKQorICBJbm9kZSBiaXRtYXAgYXQgNiAoYmcgIzAgKyA1KQorICBJbm9kZSB0YWJsZSBhdCAxMzUtMjYyIChiZyAjMCArIDEzNCkKKyAgODE4OSBmcmVlIGJsb2NrcywgNTEyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCA1MTIgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogODE5NS0xNjM4MworICBGcmVlIGlub2RlczogNTEzLTEwMjQKK2RlYnVnZnM6IHN0YXQgL2VtcHR5ZmlsZQorSW5vZGU6IElJSSAgIFR5cGU6IHJlZ3VsYXIgICAgCitTaXplOiAwCitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2RlYnVnZnM6IHN0YXQgL2JpZ2ZpbGUKK0lub2RlOiBJSUkgICBUeXBlOiByZWd1bGFyICAgIAorU2l6ZTogMzI3NjgKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvc3BhcnNlZmlsZQorSW5vZGU6IElJSSAgIFR5cGU6IHJlZ3VsYXIgICAgCitTaXplOiAxMDczNzQxODI1CitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2RlYnVnZnM6IHN0YXQgL2JpZ3plcm9maWxlCitJbm9kZTogSUlJICAgVHlwZTogcmVndWxhciAgICAKK1NpemU6IDEwNzM3NDE4MjUKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvZmlmbworZGVidWdmczogc3RhdCAvZW1wdHlkaXIKK0lub2RlOiBJSUkgICBUeXBlOiBkaXJlY3RvcnkgICAgCitTaXplOiAxMDI0CitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2RlYnVnZnM6IHN0YXQgL2RpcgorSW5vZGU6IElJSSAgIFR5cGU6IGRpcmVjdG9yeSAgICAKK1NpemU6IDEwMjQKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvZGlyL2ZpbGUKK0lub2RlOiBJSUkgICBUeXBlOiByZWd1bGFyICAgIAorU2l6ZTogOAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitkZWJ1Z2ZzOiBleCAvZW1wdHlmaWxlCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK2RlYnVnZnM6IGV4IC9iaWdmaWxlCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK1ggMC8wIDEvMSAwLTMxIEFBQS1CQkIgMzIgCitkZWJ1Z2ZzOiBleCAvc3BhcnNlZmlsZQorTGV2ZWwgRW50cmllcyAgICAgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworWSAwLzEgMS8xIDEtMTA0ODU3NiBBQUEgMTA0ODU3NgorWCAxLzEgMS81IDEtMSBBQUEtQkJCIDEgCitYIDEvMSAyLzUgNTEyLTUxMiBBQUEtQkJCIDEgCitYIDEvMSAzLzUgMTAyNC0xMDI0IEFBQS1CQkIgMSAKK1ggMS8xIDQvNSA1MjQyODgtNTI0Mjg4IEFBQS1CQkIgMSAKK1ggMS8xIDUvNSAxMDQ4NTc2LTEwNDg1NzYgQUFBLUJCQiAxIAorZGVidWdmczogZXggL2JpZ3plcm9maWxlCitMZXZlbCBFbnRyaWVzICAgICAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCitkZWJ1Z2ZzOiBleCAvZGlyCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK1ggMC8wIDEvMSAwLTAgQUFBLUJCQiAxIAorZGVidWdmczogZXggL2Rpci9maWxlCitMZXZlbCBFbnRyaWVzICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK1ggMC8wIDEvMSAwLTAgQUFBLUJCQiAxIAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3QuaW1nOiAxOC8xMDI0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMzE5LzE2Mzg0IGJsb2NrcworbWluaWZ5IGZzCitTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvIDAlICgwIGJsb2NrcykKK1Jlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIHRvIDMzOCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAzMzggKDFrKSBibG9ja3MgbG9uZy4KKworRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGh1Z2VfZmlsZSBkaXJfbmxpbmsgZXh0cmFfaXNpemUgbWV0YWRhdGFfY3N1bQorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgNTEyCitCbG9jayBjb3VudDogICAgICAgICAgICAgIDMzOAorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAwCitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDE1MQorRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA0OTQKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK0dyb3VwIGRlc2NyaXB0b3Igc2l6ZTogICAgNjQKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDUxMgorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAxMjgKK0ZsZXggYmxvY2sgZ3JvdXAgc2l6ZTogICAgMTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAzMgorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAzMgorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMzM3KQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0yCisgIEJsb2NrIGJpdG1hcCBhdCAzICgrMikKKyAgSW5vZGUgYml0bWFwIGF0IDUgKCs0KQorICBJbm9kZSB0YWJsZSBhdCA3LTEzNCAoKzYpCisgIDE1MSBmcmVlIGJsb2NrcywgNDk0IGZyZWUgaW5vZGVzLCA0IGRpcmVjdG9yaWVzLCA0OTQgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNCwgNiwgMTM1LTI2MiwgMzE3LTMzNworICBGcmVlIGlub2RlczogMTktNTEyCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdC5pbWc6IDE4LzUxMiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4Ny8zMzggYmxvY2tzCittaW5pZnkgZnMgKDIpCitTZXR0aW5nIHJlc2VydmVkIGJsb2NrcyBwZXJjZW50YWdlIHRvIDAlICgwIGJsb2NrcykKK1Jlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIHRvIDE4OCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAxODggKDFrKSBibG9ja3MgbG9uZy4KKworRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGh1Z2VfZmlsZSBkaXJfbmxpbmsgZXh0cmFfaXNpemUgbWV0YWRhdGFfY3N1bQorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgNTEyCitCbG9jayBjb3VudDogICAgICAgICAgICAgIDE4OAorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAwCitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDEKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgNDk0CitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitHcm91cCBkZXNjcmlwdG9yIHNpemU6ICAgIDY0CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorSW5vZGVzIHBlciBncm91cDogICAgICAgICA1MTIKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMTI4CitGbGV4IGJsb2NrIGdyb3VwIHNpemU6ICAgIDE2CitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAyNTYKK1JlcXVpcmVkIGV4dHJhIGlzaXplOiAgICAgMzIKK0Rlc2lyZWQgZXh0cmEgaXNpemU6ICAgICAgMzIKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKK0NoZWNrc3VtIHR5cGU6ICAgICAgICAgICAgY3JjMzJjCisKKworR3JvdXAgMDogKEJsb2NrcyAxLTE4NykKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMgorICBCbG9jayBiaXRtYXAgYXQgMyAoKzIpCisgIElub2RlIGJpdG1hcCBhdCA1ICgrNCkKKyAgSW5vZGUgdGFibGUgYXQgNy0xMzQgKCs2KQorICAxIGZyZWUgYmxvY2tzLCA0OTQgZnJlZSBpbm9kZXMsIDQgZGlyZWN0b3JpZXMsIDQ5NCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAxODcKKyAgRnJlZSBpbm9kZXM6IDE5LTUxMgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3QuaW1nOiAxOC81MTIgZmlsZXMgKDUuNiUgbm9uLWNvbnRpZ3VvdXMpLCAxODcvMTg4IGJsb2NrcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbWlucm9vdGRpci9vdXRwdXQuc2VkIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWlucm9vdGRpci9vdXRwdXQuc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNzY5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9taW5yb290ZGlyL291dHB1dC5zZWQKQEAgLTAsMCArMSw1IEBACitzL15bWzpzcGFjZTpdXSpcKFswLTldKlwpXC9bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qXChbMC05XSpcKVwvW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKlwoWzAtOV0qXClbWzpzcGFjZTpdXSotW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKlswLTldKltbOnNwYWNlOl1dKi1bWzpzcGFjZTpdXSpbMC05XSpbWzpzcGFjZTpdXSpcKFswLTldKlwpL1ggXDFcL1wyIFwzXC9cNCBcNS1cNiBBQUEtQkJCIFw3L2cKK3MvXltbOnNwYWNlOl1dKlwoWzAtOV0qXClcL1tbOnNwYWNlOl1dKlwoWzAtOV0qXClbWzpzcGFjZTpdXSpcKFswLTldKlwpXC9bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKi1bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qWzAtOV0qW1s6c3BhY2U6XV0qXChbMC05XSpcKS9ZIFwxXC9cMiBcM1wvXDQgXDUtXDYgQUFBIFw3L2cKK3MvTW9kZTouKiQvL2cKK3MvVXNlcjouKlNpemU6L1NpemU6L2cKK3MvXklub2RlOiBbMC05XSovSW5vZGU6IElJSS9nCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9taW5yb290ZGlyL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX21pbnJvb3RkaXIvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MmU3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9taW5yb290ZGlyL3NjcmlwdApAQCAtMCwwICsxLDgxIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRSAtYSAteCAkUkVTSVpFMkZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJjcmVhdGUgZnMgaW1hZ2UgZnJvbSBkaXIsIHRoZW4gbWluaW1pemUgaXQiCitNS0ZTX0RJUj0kVE1QRklMRS5kaXIKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKKworcm0gLXJmICRNS0ZTX0RJUgorbWtkaXIgLXAgJE1LRlNfRElSCitta2RpciAkTUtGU19ESVIvZGlyCitta2RpciAkTUtGU19ESVIvZW1wdHlkaXIKK2RkIGlmPS9kZXYvemVybyBvZj0kTUtGU19ESVIvYmlnemVyb2ZpbGUgYnM9MSBjb3VudD0xIHNlZWs9MTA3Mzc0MTgyNCAyPiAvZGV2L251bGwKK2VjaG8gIk0iIHwgZGQgb2Y9JE1LRlNfRElSL3NwYXJzZWZpbGUgYnM9MSBjb3VudD0xIHNlZWs9MTAyNCAyPiAvZGV2L251bGwKK2VjaG8gIk0iIHwgZGQgb2Y9JE1LRlNfRElSL3NwYXJzZWZpbGUgYnM9MSBjb3VudD0xIHNlZWs9NTI0Mjg4IGNvbnY9bm90cnVuYyAyPiAvZGV2L251bGwKK2VjaG8gIk0iIHwgZGQgb2Y9JE1LRlNfRElSL3NwYXJzZWZpbGUgYnM9MSBjb3VudD0xIHNlZWs9MTA0ODU3NiBjb252PW5vdHJ1bmMgMj4gL2Rldi9udWxsCitlY2hvICJNIiB8IGRkIG9mPSRNS0ZTX0RJUi9zcGFyc2VmaWxlIGJzPTEgY291bnQ9MSBzZWVrPTUzNjg3MDkxMiBjb252PW5vdHJ1bmMgMj4gL2Rldi9udWxsCitlY2hvICJNIiB8IGRkIG9mPSRNS0ZTX0RJUi9zcGFyc2VmaWxlIGJzPTEgY291bnQ9MSBzZWVrPTEwNzM3NDE4MjQgY29udj1ub3RydW5jIDI+IC9kZXYvbnVsbAorZGQgaWY9L2Rldi96ZXJvIGJzPTEwMjQgY291bnQ9MzIgMj4gL2Rldi9udWxsIHwgdHIgJ1wwJyAnYScgPiAkTUtGU19ESVIvYmlnZmlsZQordG91Y2ggJE1LRlNfRElSL2VtcHR5ZmlsZQorZWNobyAiVGVzdCBtZSIgPiAkTUtGU19ESVIvZGlyL2ZpbGUKKworZWNobyAiY3JlYXRlIGZzIiA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBeaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSw2NGJpdCxecmVzaXplX2lub2RlIC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0IC1kICRNS0ZTX0RJUiAkVE1QRklMRSAxNjM4NCA+PiAkT1VUIDI+JjEKKworJERVTVBFMkZTICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY2F0ID4gJFRNUEZJTEUuY21kIDw8IEVOREwKK3N0YXQgL2VtcHR5ZmlsZQorc3RhdCAvYmlnZmlsZQorc3RhdCAvc3BhcnNlZmlsZQorc3RhdCAvYmlnemVyb2ZpbGUKK3N0YXQgL2ZpZm8KK3N0YXQgL2VtcHR5ZGlyCitzdGF0IC9kaXIKK3N0YXQgL2Rpci9maWxlCitFTkRMCiskREVCVUdGUyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4mMSB8IGVncmVwICIoc3RhdHxTaXplOnxUeXBlOikiIHwgc2VkIC1mICR0ZXN0X2Rpci9vdXRwdXQuc2VkID4+ICRPVVQKKworY2F0ID4gJFRNUEZJTEUuY21kIDw8IEVOREwKK2V4IC9lbXB0eWZpbGUKK2V4IC9iaWdmaWxlCitleCAvc3BhcnNlZmlsZQorZXggL2JpZ3plcm9maWxlCitleCAvZGlyCitleCAvZGlyL2ZpbGUKK0VOREwKKyRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICR0ZXN0X2Rpci9vdXRwdXQuc2VkID4+ICRPVVQKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCitlY2hvICJtaW5pZnkgZnMiID4+ICRPVVQKKyRUVU5FMkZTIC1tIDAgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCiskUkVTSVpFMkZTIC1NICRUTVBGSUxFID4+ICRPVVQgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFID4+ICRPVVQgMj4mMQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKK2VjaG8gIm1pbmlmeSBmcyAoMikiID4+ICRPVVQKKyRUVU5FMkZTIC1tIDAgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCiskUkVTSVpFMkZTIC1NICRUTVBGSUxFID4+ICRPVVQgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFID4+ICRPVVQgMj4mMQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPCAkT1VUID4gJE9VVC50bXAKK212ICRPVVQudG1wICRPVVQKKworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKyAgICAgICAgZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKyAgICAgICAgZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCitybSAtcmYgJFRNUEZJTEUuY21kICRNS0ZTX0RJUiAkT1VULnNlZAordW5zZXQgTUtGU19ESVIgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRSAtYSAteCBSRVNJWkUyRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbWtmc19vdmVyaGVhZC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvbV9ta2ZzX292ZXJoZWFkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGI4ZmQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWtmc19vdmVyaGVhZC9leHBlY3QKQEAgLTAsMCArMSBAQAordGVzdC5pbWc6IENhbm5vdCBjcmVhdGUgZmlsZXN5c3RlbSB3aXRoIHJlcXVlc3RlZCBudW1iZXIgb2YgaW5vZGVzIHdoaWxlIHNldHRpbmcgdXAgc3VwZXJibG9jawpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbWtmc19vdmVyaGVhZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9ta2ZzX292ZXJoZWFkL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjFkYTBjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbWtmc19vdmVyaGVhZC9zY3JpcHQKQEAgLTAsMCArMSwzMSBAQAordGVzdF9kZXNjcmlwdGlvbj0idGVzdCBiZyBvdmVyaGVhZCBjYWxjdWxhdGlvbiIKKworT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorRlNfU0laRT0xMDI0CitNS0UyRlNfT1BUUz0iLWIgMTAyNCAtbSAwIC1nIDI1NiAtTiAzNzQ1IgorCitNS0UyRlNfU0tJUF9QUk9HUkVTUz10cnVlCitNS0UyRlNfU0tJUF9DSEVDS19NU0c9dHJ1ZQorZXhwb3J0IE1LRTJGU19TS0lQX1BST0dSRVNTIE1LRTJGU19TS0lQX0NIRUNLX01TRworPiAkVE1QRklMRQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4ICRNS0UyRlNfT1BUUyAkVE1QRklMRSAkRlNfU0laRSAyPiYxIHwKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiID4gJE9VVAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXMxPSQ/CisKK2lmIFsgIiRzdGF0dXMxIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBPVVQgRVhQIERFU0NSSVBUSU9OIEZTX1NJWkUgTUtFMkZTX09QVFMgTUtFMkZTX1NLSVBfUFJPR1JFU1MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21tcC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTQ1MmU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wL2V4cGVjdC4xCkBAIC0wLDAgKzEsNjggQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA2NTUzNiA0ayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTMyNzY4CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitNdWx0aXBsZSBtb3VudCBwcm90ZWN0aW9uIGlzIGVuYWJsZWQgd2l0aCB1cGRhdGUgaW50ZXJ2YWwgNSBzZWNvbmRzLgorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgbW1wIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS82NTUzNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIwOTMvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgbW1wIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAzMjc2CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDYzNDQzCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDY1NTI1CitGaXJzdCBibG9jazogICAgICAgICAgICAgIDAKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgNDA5NgorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICA0MDk2CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDE1CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDMyNzY4CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDMyNzY4CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDMyNzY4CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDEwMjQKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorTU1QIGJsb2NrIG51bWJlcjogICAgICAgICAxMDQ5CitNTVAgdXBkYXRlIGludGVydmFsOiAgICAgIDUKKworCitHcm91cCAwOiAoQmxvY2tzIDAtMzI3NjcpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAwLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxLTEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyLTE2CisgIEJsb2NrIGJpdG1hcCBhdCAxNyAoKzE3KQorICBJbm9kZSBiaXRtYXAgYXQgMTggKCsxOCkKKyAgSW5vZGUgdGFibGUgYXQgMTktMTA0MiAoKzE5KQorICAzMTcxOCBmcmVlIGJsb2NrcywgMzI3NTcgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNTAtMzI3NjcKKyAgRnJlZSBpbm9kZXM6IDEyLTMyNzY4CitHcm91cCAxOiAoQmxvY2tzIDMyNzY4LTY1NTM1KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAzMjc2OCwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzI3NjktMzI3NjkKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzMjc3MC0zMjc4NAorICBCbG9jayBiaXRtYXAgYXQgMzI3ODUgKCsxNykKKyAgSW5vZGUgYml0bWFwIGF0IDMyNzg2ICgrMTgpCisgIElub2RlIHRhYmxlIGF0IDMyNzg3LTMzODEwICgrMTkpCisgIDMxNzI1IGZyZWUgYmxvY2tzLCAzMjc2OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM4MTEtNjU1MzUKKyAgRnJlZSBpbm9kZXM6IDMyNzY5LTY1NTM2CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXAvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTkzOTRkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wL3NjcmlwdApAQCAtMCwwICsxLDE4IEBACitERVNDUklQVElPTj0iZW5hYmxlIE1NUCBkdXJpbmcgbWtlMmZzIgorRlNfU0laRT02NTUzNgorTUtFMkZTX0RFVklDRV9TRUNUU0laRT0yMDQ4CitleHBvcnQgTUtFMkZTX0RFVklDRV9TRUNUU0laRQorCisjIHVzZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIC90bXAgYmVjYXNlIHRtcGZzIGRvZXNuJ3Qgc3VwcG9ydCBESU8KK3JtIC1mICRUTVBGSUxFCitUTVBGSUxFPSQobWt0ZW1wIC4vdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQorCitzdGF0IC1mICRUTVBGSUxFIHwgZ3JlcCAtcSAiVHlwZTogdG1wZnMiCitpZiBbICQ/ID0gMCBdOyB0aGVuCisJcm0gLWYgJFRNUEZJTEUKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCBmb3IgdG1wZnMgKG5vIE9fRElSRUNUKSIKKwlyZXR1cm4gMAorZmkKK01LRTJGU19PUFRTPSItYiA0MDk2IC1PIG1tcCIKKy4gJGNtZF9kaXIvcnVuX21rZTJmcwordW5zZXQgTUtFMkZTX0RFVklDRV9TRUNUU0laRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9jc3VtL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE1ZTdiNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfY3N1bS9leHBlY3QKQEAgLTAsMCArMSw5IEBACitTdXBlcmJsb2NrIE1NUCBibG9jayBjaGVja3N1bSBkb2VzIG5vdCBtYXRjaCBNTVAgYmxvY2suICBGaXg/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vaW1hZ2UuZ3ogYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vaW1hZ2UuZ3oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg5NmZmNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfY3N1bS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfY3N1bS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYzMxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vbmFtZQpAQCAtMCwwICsxIEBACittbXAgd2l0aCBiYWQgY3N1bSAobWV0YWRhdGFfY3N1bSkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfY3N1bS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZTg3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsMzAgQEAKKyMgdXNlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgL3RtcCBiZWNhc2UgdG1wZnMgZG9lc24ndCBzdXBwb3J0IERJTworcm0gLWYgJFRNUEZJTEUKK1RNUEZJTEU9JChta3RlbXAgLi90bXAtJHRlc3RfbmFtZS5YWFhYWFgpCisKK3N0YXQgLWYgJFRNUEZJTEUgfCBncmVwIC1xICJUeXBlOiB0bXBmcyIKK2lmIFsgJD8gPSAwIF07IHRoZW4KKwlybSAtZiAkVE1QRklMRQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIGZvciB0bXBmcyAobm8gT19ESVJFQ1QpIgorCXJldHVybiAwCitmaQorZ3ppcCAtZGMgPCAkdGVzdF9kaXIvaW1hZ2UuZ3ogPiAkVE1QRklMRQorCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CiskRlNDSyAtZnkgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVAorZWNobyBFeGl0IHN0YXR1cyBpcyAkPyA+PiAkT1VUCisKK3JtIC1mICRUTVBGSUxFCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQordW5zZXQgT1VUIEVYUApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9tYWdpYy8ubG9nIGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9tYWdpYy8ubG9nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZGZiODkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljLy5sb2cKQEAgLTAsMCArMSw5IEBACitTdXBlcmJsb2NrIGhhcyBpbnZhbGlkIE1NUCBtYWdpYy4gIEZpeD8geWVzCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzEyOCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE5LzUxMiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfbWFnaWMvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9tYWdpYy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVkZmI4OQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfbWFnaWMvZXhwZWN0CkBAIC0wLDAgKzEsOSBAQAorU3VwZXJibG9jayBoYXMgaW52YWxpZCBNTVAgbWFnaWMuICBGaXg/IHllcworCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xMjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxOS81MTIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9tYWdpYy9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDU3ZmJmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbW1wX2JhZF9tYWdpYy9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhMmQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfbWFnaWMvbmFtZQpAQCAtMCwwICsxIEBACittbXAgd2l0aCBiYWQgbWFnaWMgKG1ldGFkYXRhX2NzdW0pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX21tcF9iYWRfbWFnaWMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ZTg3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9tbXBfYmFkX21hZ2ljL3NjcmlwdApAQCAtMCwwICsxLDMwIEBACisjIHVzZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIC90bXAgYmVjYXNlIHRtcGZzIGRvZXNuJ3Qgc3VwcG9ydCBESU8KK3JtIC1mICRUTVBGSUxFCitUTVBGSUxFPSQobWt0ZW1wIC4vdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQorCitzdGF0IC1mICRUTVBGSUxFIHwgZ3JlcCAtcSAiVHlwZTogdG1wZnMiCitpZiBbICQ/ID0gMCBdOyB0aGVuCisJcm0gLWYgJFRNUEZJTEUKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCBmb3IgdG1wZnMgKG5vIE9fRElSRUNUKSIKKwlyZXR1cm4gMAorZmkKK2d6aXAgLWRjIDwgJHRlc3RfZGlyL2ltYWdlLmd6ID4gJFRNUEZJTEUKKworT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorJEZTQ0sgLWZ5ICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQKK2VjaG8gRXhpdCBzdGF0dXMgaXMgJD8gPj4gJE9VVAorCitybSAtZiAkVE1QRklMRQorY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKK3Vuc2V0IE9VVCBFWFAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX25vX29wdC9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9tX25vX29wdC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGIzMTFjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fbm9fb3B0L2V4cGVjdC4xCkBAIC0wLDAgKzEsMTAyIEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgMWsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAxNjM4NSwgMjQ1NzcsIDMyNzY5LCA0MDk2MSwgNDkxNTMsIDU3MzQ1CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworRmlsZXN5c3RlbSBmZWF0dXJlczoobm9uZSkKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjA5NC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgKG5vbmUpCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxNjM4NAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAzMjc2CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDYzNDQyCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDE2MzczCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorSW5vZGVzIHBlciBncm91cDogICAgICAgICAyMDQ4CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDI1NgorTW91bnQgY291bnQ6ICAgICAgICAgICAgICAwCitDaGVjayBpbnRlcnZhbDogICAgICAgICAgIDE1NTUyMDAwICg2IG1vbnRocykKK1Jlc2VydmVkIGJsb2NrcyB1aWQ6ICAgICAgMAorUmVzZXJ2ZWQgYmxvY2tzIGdpZDogICAgICAwCitGaXJzdCBpbm9kZTogICAgICAgICAgICAgIDExCitJbm9kZSBzaXplOgkgICAgICAgICAgMTI4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisKKworR3JvdXAgMDogKEJsb2NrcyAxLTgxOTIpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTIKKyAgQmxvY2sgYml0bWFwIGF0IDMgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDQgKCszKQorICBJbm9kZSB0YWJsZSBhdCA1LTI2MCAoKzQpCisgIDc5MTkgZnJlZSBibG9ja3MsIDIwMzcgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3NC04MTkyCisgIEZyZWUgaW5vZGVzOiAxMi0yMDQ4CitHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NAorICBCbG9jayBiaXRtYXAgYXQgODE5NSAoKzIpLCBJbm9kZSBiaXRtYXAgYXQgODE5NiAoKzMpCisgIElub2RlIHRhYmxlIGF0IDgxOTctODQ1MiAoKzQpCisgIDc5MzIgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg0NTMtMTYzODQKKyAgRnJlZSBpbm9kZXM6IDIwNDktNDA5NgorR3JvdXAgMjogKEJsb2NrcyAxNjM4NS0yNDU3NikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTYzODUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDE2Mzg2LTE2Mzg2CisgIEJsb2NrIGJpdG1hcCBhdCAxNjM4NyAoKzIpLCBJbm9kZSBiaXRtYXAgYXQgMTYzODggKCszKQorICBJbm9kZSB0YWJsZSBhdCAxNjM4OS0xNjY0NCAoKzQpCisgIDc5MzIgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2NjQ1LTI0NTc2CisgIEZyZWUgaW5vZGVzOiA0MDk3LTYxNDQKK0dyb3VwIDM6IChCbG9ja3MgMjQ1NzctMzI3NjgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDI0NTc3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNDU3OC0yNDU3OAorICBCbG9jayBiaXRtYXAgYXQgMjQ1NzkgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDI0NTgwICgrMykKKyAgSW5vZGUgdGFibGUgYXQgMjQ1ODEtMjQ4MzYgKCs0KQorICA3OTMyIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDgzNy0zMjc2OAorICBGcmVlIGlub2RlczogNjE0NS04MTkyCitHcm91cCA0OiAoQmxvY2tzIDMyNzY5LTQwOTYwKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAzMjc2OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzI3NzAtMzI3NzAKKyAgQmxvY2sgYml0bWFwIGF0IDMyNzcxICgrMiksIElub2RlIGJpdG1hcCBhdCAzMjc3MiAoKzMpCisgIElub2RlIHRhYmxlIGF0IDMyNzczLTMzMDI4ICgrNCkKKyAgNzkzMiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzMwMjktNDA5NjAKKyAgRnJlZSBpbm9kZXM6IDgxOTMtMTAyNDAKK0dyb3VwIDU6IChCbG9ja3MgNDA5NjEtNDkxNTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDQwOTYxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA0MDk2Mi00MDk2MgorICBCbG9jayBiaXRtYXAgYXQgNDA5NjMgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDQwOTY0ICgrMykKKyAgSW5vZGUgdGFibGUgYXQgNDA5NjUtNDEyMjAgKCs0KQorICA3OTMyIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MTIyMS00OTE1MgorICBGcmVlIGlub2RlczogMTAyNDEtMTIyODgKK0dyb3VwIDY6IChCbG9ja3MgNDkxNTMtNTczNDQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDQ5MTUzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA0OTE1NC00OTE1NAorICBCbG9jayBiaXRtYXAgYXQgNDkxNTUgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDQ5MTU2ICgrMykKKyAgSW5vZGUgdGFibGUgYXQgNDkxNTctNDk0MTIgKCs0KQorICA3OTMyIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0OTQxMy01NzM0NAorICBGcmVlIGlub2RlczogMTIyODktMTQzMzYKK0dyb3VwIDc6IChCbG9ja3MgNTczNDUtNjU1MzUpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDU3MzQ1LCBHcm91cCBkZXNjcmlwdG9ycyBhdCA1NzM0Ni01NzM0NgorICBCbG9jayBiaXRtYXAgYXQgNTczNDcgKCsyKSwgSW5vZGUgYml0bWFwIGF0IDU3MzQ4ICgrMykKKyAgSW5vZGUgdGFibGUgYXQgNTczNDktNTc2MDQgKCs0KQorICA3OTMxIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NzYwNS02NTUzNQorICBGcmVlIGlub2RlczogMTQzMzctMTYzODQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX25vX29wdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9ub19vcHQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyM2YxMTcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9ub19vcHQvc2NyaXB0CkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT049Im5vIGZpbGVzeXN0ZW0gZXh0ZW5zaW9ucyIKK0ZTX1NJWkU9NjU1MzYKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCitNS0UyRlNfT1BUUz0iLU8gXnNwYXJzZV9zdXBlcixeZmlsZXR5cGUsXnJlc2l6ZV9pbm9kZSxeZGlyX2luZGV4LF5leHRfYXR0ciIKKy4gJGNtZF9kaXIvcnVuX21rZTJmcwordW5zZXQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9vZmZzZXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fb2Zmc2V0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNGJjM2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fb2Zmc2V0L3NjcmlwdApAQCAtMCwwICsxLDM0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJta2UyZnMgd2l0aCBvZmZzZXQgb3B0aW9uICgtRSBvZmZzZXQ9TikiCitPVVQ9IiR0ZXN0X25hbWUubG9nIgorCitlY2hvICJ0ZXN0aW5nIG1rZTJmcyB3aXRoIC1FIG9mZnNldD01MjQyODggb3B0aW9uIChubyBmc3NpemUpIiA+ICIkT1VUIgoreWVzIGEgfCBkZCBvZj0iJFRNUEZJTEUiIGJzPTFrIGNvdW50PTIwNDggaWZsYWc9ZnVsbGJsb2NrIDI+PiIkT1VUIgorJE1LRTJGUyAtRiAtYiAxMDI0IC1FIG9mZnNldD01MjQyODggIiRUTVBGSUxFIiA+PiAiJE9VVCIgMj4mMQorIyBjb21wdXRlIGNyYyBvZiB0aGUgZmlyc3QgNTEyIDFrIGJsb2NrcworY3JjX2ZpcnN0MT1gZGQgaWY9IiRUTVBGSUxFIiBicz0xayBjb3VudD01MTIgMj4vZGV2L251bGwgfCAkQ1JDU1VNYAorCitlY2hvICJ0ZXN0aW5nIG1rZTJmcyB3aXRoIC1FIG9mZnNldD01MjQyODggb3B0aW9uIChleHBsaWNpdCBmc3NpemUpIiA+PiAiJE9VVCIKK3llcyBhIHwgZGQgb2Y9IiRUTVBGSUxFIiBicz0xayBjb3VudD0yMDQ4IGlmbGFnPWZ1bGxibG9jayAyPj4iJE9VVCIKKyRNS0UyRlMgLUYgLWIgMTAyNCAtRSBvZmZzZXQ9NTI0Mjg4ICIkVE1QRklMRSIgMTAyNCA+PiAiJE9VVCIgMj4mMQorIyBjb21wdXRlIGNyYyBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgNTEyIDFrIGJsb2NrcworY3JjX2ZpcnN0Mj1gZGQgaWY9IiRUTVBGSUxFIiBicz0xayBjb3VudD01MTIgMj4vZGV2L251bGwgfCAkQ1JDU1VNYAorY3JjX2xhc3QyPWBkZCBpZj0iJFRNUEZJTEUiIGJzPTFrIGNvdW50PTUxMiBza2lwPTE1MzYgMj4vZGV2L251bGwgfCAkQ1JDU1VNYAorY3JjX2V4cD1geWVzIGEgfCBkZCBicz0xayBjb3VudD01MTIgMj4vZGV2L251bGwgfCAkQ1JDU1VNYAorIyBhIHdhcm5pbmcgc2hvdWxkIGJlIG9ubHkgZW1pdHRlZCBieSB0aGUgZmlyc3QgbWtlMmZzIGNhbGwKK3dhcm5pbmc9YGdyZXAgLWMgIm9mZnNldCBzcGVjaWZpZWQgd2l0aG91dCBhbiBleHBsaWNpdCBmaWxlIHN5c3RlbSBzaXplLiIgXAorCSIkT1VUImAKKworaWYgWyAiJHdhcm5pbmciIC1lcSAxIC1hIFwKKwkgIiRjcmNfZmlyc3QxIiA9ICIkY3JjX2ZpcnN0MiIgLWEgXAorCSAiJGNyY19maXJzdDIiID0gIiRjcmNfbGFzdDIiIC1hIFwKKwkgIiRjcmNfZmlyc3QyIiA9ICIkY3JjX2V4cCIgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAiJHRlc3RfbmFtZS5vayIKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWVjaG8gIndhcm5pbmc6ICR3YXJuaW5nIiA+ICIkdGVzdF9uYW1lLmZhaWxlZCIKKwllY2hvICJjcmNfZmlyc3QxOiAkY3JjX2ZpcnN0MSIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCWVjaG8gImNyY19maXJzdDI6ICRjcmNfZmlyc3QyIiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJZWNobyAiY3JjX2xhc3QyOiAkY3JjX2xhc3QyIiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJZWNobyAiY3JjX2V4cDogJGNyY19leHAiID4+ICIkdGVzdF9uYW1lLmZhaWxlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9xdW90YS9leHBlY3QuMSBiL2UyZnNwcm9ncy90ZXN0cy9tX3F1b3RhL2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZGFkMzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9xdW90YS9leHBlY3QuMQpAQCAtMCwwICsxLDE2MCBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDEzMTA3MiAxayBibG9ja3MgYW5kIDMyNzY4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworRmlsZXN5c3RlbSBmZWF0dXJlczogZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBzcGFyc2Vfc3VwZXIgcXVvdGEgcHJvamVjdAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTIvMzI3NjggZmlsZXMgKDI1LjAlIG5vbi1jb250aWd1b3VzKSwgOTgwNS8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIHF1b3RhIHByb2plY3QKK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgKG5vbmUpCitGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitGaWxlc3lzdGVtIE9TIHR5cGU6ICAgICAgIExpbnV4CitJbm9kZSBjb3VudDogICAgICAgICAgICAgIDMyNzY4CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDEzMTA3MgorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICA2NTUzCitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDEyMTI2NworRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAzMjc1NgorRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAyNTYKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDIwNDgKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgNTEyCitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAyNTYKK1JlcXVpcmVkIGV4dHJhIGlzaXplOiAgICAgMzIKK0Rlc2lyZWQgZXh0cmEgaXNpemU6ICAgICAgMzIKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKK1VzZXIgcXVvdGEgaW5vZGU6ICAgICAgICAgMworR3JvdXAgcXVvdGEgaW5vZGU6ICAgICAgICA0CitQcm9qZWN0IHF1b3RhIGlub2RlOiAgICAgIDEyCisKKworR3JvdXAgMDogKEJsb2NrcyAxLTgxOTIpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzLTI1OAorICBCbG9jayBiaXRtYXAgYXQgMjU5ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDI2MCAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgMjYxLTc3MiAoKzI2MCkKKyAgNzM4OCBmcmVlIGJsb2NrcywgMjAzNiBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODA1LTgxOTIKKyAgRnJlZSBpbm9kZXM6IDEzLTIwNDgKK0dyb3VwIDE6IChCbG9ja3MgODE5My0xNjM4NCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgODE5MywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgODE5NC04MTk0CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgODE5NS04NDUwCisgIEJsb2NrIGJpdG1hcCBhdCA4NDUxICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDg0NTIgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDg0NTMtODk2NCAoKzI2MCkKKyAgNzQyMCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODk2NS0xNjM4NAorICBGcmVlIGlub2RlczogMjA0OS00MDk2CitHcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTI0NTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTYzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2Mzg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYzODctMTY4OTggKCsyKQorICA3Njc4IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjg5OS0yNDU3NgorICBGcmVlIGlub2RlczogNDA5Ny02MTQ0CitHcm91cCAzOiAoQmxvY2tzIDI0NTc3LTMyNzY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNDU3NywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjQ1NzgtMjQ1NzgKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNDU3OS0yNDgzNAorICBCbG9jayBiaXRtYXAgYXQgMjQ4MzUgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgMjQ4MzYgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDI0ODM3LTI1MzQ4ICgrMjYwKQorICA3NDIwIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNTM0OS0zMjc2OAorICBGcmVlIGlub2RlczogNjE0NS04MTkyCitHcm91cCA0OiAoQmxvY2tzIDMyNzY5LTQwOTYwKQorICBCbG9jayBiaXRtYXAgYXQgMzI3NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMyNzcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzI3NzEtMzMyODIgKCsyKQorICA3Njc4IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMzI4My00MDk2MAorICBGcmVlIGlub2RlczogODE5My0xMDI0MAorR3JvdXAgNTogKEJsb2NrcyA0MDk2MS00OTE1MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNDA5NjEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDQwOTYyLTQwOTYyCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNDA5NjMtNDEyMTgKKyAgQmxvY2sgYml0bWFwIGF0IDQxMjE5ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDQxMjIwICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA0MTIyMS00MTczMiAoKzI2MCkKKyAgNzQyMCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDE3MzMtNDkxNTIKKyAgRnJlZSBpbm9kZXM6IDEwMjQxLTEyMjg4CitHcm91cCA2OiAoQmxvY2tzIDQ5MTUzLTU3MzQ0KQorICBCbG9jayBiaXRtYXAgYXQgNDkxNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ5MTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDkxNTUtNDk2NjYgKCsyKQorICA3Njc4IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0OTY2Ny01NzM0NAorICBGcmVlIGlub2RlczogMTIyODktMTQzMzYKK0dyb3VwIDc6IChCbG9ja3MgNTczNDUtNjU1MzYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDU3MzQ1LCBHcm91cCBkZXNjcmlwdG9ycyBhdCA1NzM0Ni01NzM0NgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDU3MzQ3LTU3NjAyCisgIEJsb2NrIGJpdG1hcCBhdCA1NzYwMyAoKzI1OCksIElub2RlIGJpdG1hcCBhdCA1NzYwNCAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgNTc2MDUtNTgxMTYgKCsyNjApCisgIDc0MjAgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU4MTE3LTY1NTM2CisgIEZyZWUgaW5vZGVzOiAxNDMzNy0xNjM4NAorR3JvdXAgODogKEJsb2NrcyA2NTUzNy03MzcyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDY1NTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2NTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY1NTM5LTY2MDUwICgrMikKKyAgNzY3OCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjYwNTEtNzM3MjgKKyAgRnJlZSBpbm9kZXM6IDE2Mzg1LTE4NDMyCitHcm91cCA5OiAoQmxvY2tzIDczNzI5LTgxOTIwKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA3MzcyOSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNzM3MzAtNzM3MzAKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA3MzczMS03Mzk4NgorICBCbG9jayBiaXRtYXAgYXQgNzM5ODcgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgNzM5ODggKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDczOTg5LTc0NTAwICgrMjYwKQorICA3NDIwIGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NDUwMS04MTkyMAorICBGcmVlIGlub2RlczogMTg0MzMtMjA0ODAKK0dyb3VwIDEwOiAoQmxvY2tzIDgxOTIxLTkwMTEyKQorICBCbG9jayBiaXRtYXAgYXQgODE5MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5MjMtODI0MzQgKCsyKQorICA3Njc4IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4MjQzNS05MDExMgorICBGcmVlIGlub2RlczogMjA0ODEtMjI1MjgKK0dyb3VwIDExOiAoQmxvY2tzIDkwMTEzLTk4MzA0KQorICBCbG9jayBiaXRtYXAgYXQgOTAxMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkwMTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTAxMTUtOTA2MjYgKCsyKQorICA3Njc4IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MDYyNy05ODMwNAorICBGcmVlIGlub2RlczogMjI1MjktMjQ1NzYKK0dyb3VwIDEyOiAoQmxvY2tzIDk4MzA1LTEwNjQ5NikKKyAgQmxvY2sgYml0bWFwIGF0IDk4MzA1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5ODMwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk4MzA3LTk4ODE4ICgrMikKKyAgNzY3OCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTg4MTktMTA2NDk2CisgIEZyZWUgaW5vZGVzOiAyNDU3Ny0yNjYyNAorR3JvdXAgMTM6IChCbG9ja3MgMTA2NDk3LTExNDY4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwNjQ5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA2NDk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA2NDk5LTEwNzAxMCAoKzIpCisgIDc2NzggZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNzAxMS0xMTQ2ODgKKyAgRnJlZSBpbm9kZXM6IDI2NjI1LTI4NjcyCitHcm91cCAxNDogKEJsb2NrcyAxMTQ2ODktMTIyODgwKQorICBCbG9jayBiaXRtYXAgYXQgMTE0Njg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTQ2OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTQ2OTEtMTE1MjAyICgrMikKKyAgNzY3OCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE1MjAzLTEyMjg4MAorICBGcmVlIGlub2RlczogMjg2NzMtMzA3MjAKK0dyb3VwIDE1OiAoQmxvY2tzIDEyMjg4MS0xMzEwNzEpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjI4ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMjg4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMjg4My0xMjMzOTQgKCsyKQorICA3Njc3IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjMzOTUtMTMxMDcxCisgIEZyZWUgaW5vZGVzOiAzMDcyMS0zMjc2OApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fcXVvdGEvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fcXVvdGEvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyYTEyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9xdW90YS9zY3JpcHQKQEAgLTAsMCArMSwxMSBAQAorREVTQ1JJUFRJT049ImVuYWJsZSBxdW90YSBmZWF0dXJlIG9uIG1rZnMiCitGU19TSVpFPTEzMTA3MgorTUtFMkZTX09QVFM9Ii1PIHF1b3RhLHByb2plY3QgLUkgMjU2IgoraWYgWyAiJFFVT1RBIiAhPSAieSIgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICRERVNDUklQVElPTjogc2tpcHBlZCIKKwlyZXR1cm4gMAorZmkKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IERVTVBFMkZTX0lHTk9SRV84MENPTApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fcmFpZF9vcHQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvbV9yYWlkX29wdC9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmNjYjdjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fcmFpZF9vcHQvZXhwZWN0LjEKQEAgLTAsMCArMSw4MzggQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxMzEwNzIgMWsgYmxvY2tzIGFuZCAzMjc2OCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkxMDI1LCAzMDczLCA1MTIxLCA3MTY5LCA5MjE3LCAyNTYwMSwgMjc2NDksIDUwMTc3LCA4Mjk0NSwgMTI4MDAxCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgICAgCAgICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAgIAgICAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgICAgCAgICAgICGRvbmUKKworRmlsZXN5c3RlbSBmZWF0dXJlczogZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBzcGFyc2Vfc3VwZXIKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzMyNzY4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNzIzOC8xMzEwNzIgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAzMjc2OAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAxMzEwNzIKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgNjU1MworRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxMjM4MzQKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgMzI3NTcKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMjU2CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDEwMjQKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMTAyNAorSW5vZGVzIHBlciBncm91cDogICAgICAgICAyNTYKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMzIKK1JBSUQgc3RyaWRlOiAgICAgICAgICAgICAgMTMKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS0xMDI0KQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi01CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNi0yNjEKKyAgQmxvY2sgYml0bWFwIGF0IDI5NCAoKzI5MyksIElub2RlIGJpdG1hcCBhdCAyOTUgKCsyOTQpCisgIElub2RlIHRhYmxlIGF0IDI2Mi0yOTMgKCsyNjEpCisgIDcxNSBmcmVlIGJsb2NrcywgMjQ1IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTAtMTAyNAorICBGcmVlIGlub2RlczogMTItMjU2CitHcm91cCAxOiAoQmxvY2tzIDEwMjUtMjA0OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTAyNSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTAyNi0xMDI5CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTAzMC0xMjg1CisgIEJsb2NrIGJpdG1hcCBhdCAxMzMxICgrMzA2KSwgSW5vZGUgYml0bWFwIGF0IDEzMzIgKCszMDcpCisgIElub2RlIHRhYmxlIGF0IDEyODYtMTMxNyAoKzI2MSkKKyAgNzI5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzMTgtMTMzMCwgMTMzMy0yMDQ4CisgIEZyZWUgaW5vZGVzOiAyNTctNTEyCitHcm91cCAyOiAoQmxvY2tzIDIwNDktMzA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDIxMDcgKCs1OCksIElub2RlIGJpdG1hcCBhdCAyMTA4ICgrNTkpCisgIElub2RlIHRhYmxlIGF0IDIwNDktMjA4MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA4MS0yMTA2LCAyMTA5LTMwNzIKKyAgRnJlZSBpbm9kZXM6IDUxMy03NjgKK0dyb3VwIDM6IChCbG9ja3MgMzA3My00MDk2KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAzMDczLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAzMDc0LTMwNzcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzMDc4LTMzMzMKKyAgQmxvY2sgYml0bWFwIGF0IDM0MDUgKCszMzIpLCBJbm9kZSBiaXRtYXAgYXQgMzQwNiAoKzMzMykKKyAgSW5vZGUgdGFibGUgYXQgMzMzNC0zMzY1ICgrMjYxKQorICA3MjkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM2Ni0zNDA0LCAzNDA3LTQwOTYKKyAgRnJlZSBpbm9kZXM6IDc2OS0xMDI0CitHcm91cCA0OiAoQmxvY2tzIDQwOTctNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQxODEgKCs4NCksIElub2RlIGJpdG1hcCBhdCA0MTgyICgrODUpCisgIElub2RlIHRhYmxlIGF0IDQwOTctNDEyOAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEyOS00MTgwLCA0MTgzLTUxMjAKKyAgRnJlZSBpbm9kZXM6IDEwMjUtMTI4MAorR3JvdXAgNTogKEJsb2NrcyA1MTIxLTYxNDQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDUxMjEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDUxMjItNTEyNQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDUxMjYtNTM4MQorICBCbG9jayBiaXRtYXAgYXQgNTQ3OSAoKzM1OCksIElub2RlIGJpdG1hcCBhdCA1NDgwICgrMzU5KQorICBJbm9kZSB0YWJsZSBhdCA1MzgyLTU0MTMgKCsyNjEpCisgIDcyOSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NDE0LTU0NzgsIDU0ODEtNjE0NAorICBGcmVlIGlub2RlczogMTI4MS0xNTM2CitHcm91cCA2OiAoQmxvY2tzIDYxNDUtNzE2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYyNTUgKCsxMTApLCBJbm9kZSBiaXRtYXAgYXQgNjI1NiAoKzExMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0NS02MTc2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTc3LTYyNTQsIDYyNTctNzE2OAorICBGcmVlIGlub2RlczogMTUzNy0xNzkyCitHcm91cCA3OiAoQmxvY2tzIDcxNjktODE5MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNzE2OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNzE3MC03MTczCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNzE3NC03NDI5CisgIEJsb2NrIGJpdG1hcCBhdCA3NTUzICgrMzg0KSwgSW5vZGUgYml0bWFwIGF0IDc1NTQgKCszODUpCisgIElub2RlIHRhYmxlIGF0IDc0MzAtNzQ2MSAoKzI2MSkKKyAgNzI5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0NjItNzU1MiwgNzU1NS04MTkyCisgIEZyZWUgaW5vZGVzOiAxNzkzLTIwNDgKK0dyb3VwIDg6IChCbG9ja3MgODE5My05MjE2KQorICBCbG9jayBiaXRtYXAgYXQgODMyOSAoKzEzNiksIElub2RlIGJpdG1hcCBhdCA4MzMwICgrMTM3KQorICBJbm9kZSB0YWJsZSBhdCA4MTkzLTgyMjQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgyMjUtODMyOCwgODMzMS05MjE2CisgIEZyZWUgaW5vZGVzOiAyMDQ5LTIzMDQKK0dyb3VwIDk6IChCbG9ja3MgOTIxNy0xMDI0MCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgOTIxNywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgOTIxOC05MjIxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgOTIyMi05NDc3CisgIEJsb2NrIGJpdG1hcCBhdCA5NjI3ICgrNDEwKSwgSW5vZGUgYml0bWFwIGF0IDk2MjggKCs0MTEpCisgIElub2RlIHRhYmxlIGF0IDk0NzgtOTUwOSAoKzI2MSkKKyAgNzI5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk1MTAtOTYyNiwgOTYyOS0xMDI0MAorICBGcmVlIGlub2RlczogMjMwNS0yNTYwCitHcm91cCAxMDogKEJsb2NrcyAxMDI0MS0xMTI2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwNDAzICgrMTYyKSwgSW5vZGUgYml0bWFwIGF0IDEwNDA0ICgrMTYzKQorICBJbm9kZSB0YWJsZSBhdCAxMDI0MS0xMDI3MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNzMtMTA0MDIsIDEwNDA1LTExMjY0CisgIEZyZWUgaW5vZGVzOiAyNTYxLTI4MTYKK0dyb3VwIDExOiAoQmxvY2tzIDExMjY1LTEyMjg4KQorICBCbG9jayBiaXRtYXAgYXQgMTE0NDAgKCsxNzUpLCBJbm9kZSBiaXRtYXAgYXQgMTE0NDEgKCsxNzYpCisgIElub2RlIHRhYmxlIGF0IDExMjY1LTExMjk2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTI5Ny0xMTQzOSwgMTE0NDItMTIyODgKKyAgRnJlZSBpbm9kZXM6IDI4MTctMzA3MgorR3JvdXAgMTI6IChCbG9ja3MgMTIyODktMTMzMTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjQ3NyAoKzE4OCksIElub2RlIGJpdG1hcCBhdCAxMjQ3OCAoKzE4OSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyODktMTIzMjAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMzIxLTEyNDc2LCAxMjQ3OS0xMzMxMgorICBGcmVlIGlub2RlczogMzA3My0zMzI4CitHcm91cCAxMzogKEJsb2NrcyAxMzMxMy0xNDMzNikKKyAgQmxvY2sgYml0bWFwIGF0IDEzNTE0ICgrMjAxKSwgSW5vZGUgYml0bWFwIGF0IDEzNTE1ICgrMjAyKQorICBJbm9kZSB0YWJsZSBhdCAxMzMxMy0xMzM0NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzNDUtMTM1MTMsIDEzNTE2LTE0MzM2CisgIEZyZWUgaW5vZGVzOiAzMzI5LTM1ODQKK0dyb3VwIDE0OiAoQmxvY2tzIDE0MzM3LTE1MzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTQ1NTEgKCsyMTQpLCBJbm9kZSBiaXRtYXAgYXQgMTQ1NTIgKCsyMTUpCisgIElub2RlIHRhYmxlIGF0IDE0MzM3LTE0MzY4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDM2OS0xNDU1MCwgMTQ1NTMtMTUzNjAKKyAgRnJlZSBpbm9kZXM6IDM1ODUtMzg0MAorR3JvdXAgMTU6IChCbG9ja3MgMTUzNjEtMTYzODQpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTU4OCAoKzIyNyksIElub2RlIGJpdG1hcCBhdCAxNTU4OSAoKzIyOCkKKyAgSW5vZGUgdGFibGUgYXQgMTUzNjEtMTUzOTIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MzkzLTE1NTg3LCAxNTU5MC0xNjM4NAorICBGcmVlIGlub2RlczogMzg0MS00MDk2CitHcm91cCAxNjogKEJsb2NrcyAxNjM4NS0xNzQwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE2NjI1ICgrMjQwKSwgSW5vZGUgYml0bWFwIGF0IDE2NjI2ICgrMjQxKQorICBJbm9kZSB0YWJsZSBhdCAxNjM4NS0xNjQxNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTY0MTctMTY2MjQsIDE2NjI3LTE3NDA4CisgIEZyZWUgaW5vZGVzOiA0MDk3LTQzNTIKK0dyb3VwIDE3OiAoQmxvY2tzIDE3NDA5LTE4NDMyKQorICBCbG9jayBiaXRtYXAgYXQgMTc2NjIgKCsyNTMpLCBJbm9kZSBiaXRtYXAgYXQgMTc2NjMgKCsyNTQpCisgIElub2RlIHRhYmxlIGF0IDE3NDA5LTE3NDQwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzQ0MS0xNzY2MSwgMTc2NjQtMTg0MzIKKyAgRnJlZSBpbm9kZXM6IDQzNTMtNDYwOAorR3JvdXAgMTg6IChCbG9ja3MgMTg0MzMtMTk0NTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxODY5OSAoKzI2NiksIElub2RlIGJpdG1hcCBhdCAxODcwMCAoKzI2NykKKyAgSW5vZGUgdGFibGUgYXQgMTg0MzMtMTg0NjQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4NDY1LTE4Njk4LCAxODcwMS0xOTQ1NgorICBGcmVlIGlub2RlczogNDYwOS00ODY0CitHcm91cCAxOTogKEJsb2NrcyAxOTQ1Ny0yMDQ4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE5NzM2ICgrMjc5KSwgSW5vZGUgYml0bWFwIGF0IDE5NzM3ICgrMjgwKQorICBJbm9kZSB0YWJsZSBhdCAxOTQ1Ny0xOTQ4OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk0ODktMTk3MzUsIDE5NzM4LTIwNDgwCisgIEZyZWUgaW5vZGVzOiA0ODY1LTUxMjAKK0dyb3VwIDIwOiAoQmxvY2tzIDIwNDgxLTIxNTA0KQorICBCbG9jayBiaXRtYXAgYXQgMjA3NzMgKCsyOTIpLCBJbm9kZSBiaXRtYXAgYXQgMjA3NzQgKCsyOTMpCisgIElub2RlIHRhYmxlIGF0IDIwNDgxLTIwNTEyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDUxMy0yMDc3MiwgMjA3NzUtMjE1MDQKKyAgRnJlZSBpbm9kZXM6IDUxMjEtNTM3NgorR3JvdXAgMjE6IChCbG9ja3MgMjE1MDUtMjI1MjgpCisgIEJsb2NrIGJpdG1hcCBhdCAyMTgxMCAoKzMwNSksIElub2RlIGJpdG1hcCBhdCAyMTgxMSAoKzMwNikKKyAgSW5vZGUgdGFibGUgYXQgMjE1MDUtMjE1MzYKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIxNTM3LTIxODA5LCAyMTgxMi0yMjUyOAorICBGcmVlIGlub2RlczogNTM3Ny01NjMyCitHcm91cCAyMjogKEJsb2NrcyAyMjUyOS0yMzU1MikKKyAgQmxvY2sgYml0bWFwIGF0IDIyODQ3ICgrMzE4KSwgSW5vZGUgYml0bWFwIGF0IDIyODQ4ICgrMzE5KQorICBJbm9kZSB0YWJsZSBhdCAyMjUyOS0yMjU2MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjI1NjEtMjI4NDYsIDIyODQ5LTIzNTUyCisgIEZyZWUgaW5vZGVzOiA1NjMzLTU4ODgKK0dyb3VwIDIzOiAoQmxvY2tzIDIzNTUzLTI0NTc2KQorICBCbG9jayBiaXRtYXAgYXQgMjM4ODQgKCszMzEpLCBJbm9kZSBiaXRtYXAgYXQgMjM4ODUgKCszMzIpCisgIElub2RlIHRhYmxlIGF0IDIzNTUzLTIzNTg0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzU4NS0yMzg4MywgMjM4ODYtMjQ1NzYKKyAgRnJlZSBpbm9kZXM6IDU4ODktNjE0NAorR3JvdXAgMjQ6IChCbG9ja3MgMjQ1NzctMjU2MDApCisgIEJsb2NrIGJpdG1hcCBhdCAyNDkyMSAoKzM0NCksIElub2RlIGJpdG1hcCBhdCAyNDkyMiAoKzM0NSkKKyAgSW5vZGUgdGFibGUgYXQgMjQ1NzctMjQ2MDgKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0NjA5LTI0OTIwLCAyNDkyMy0yNTYwMAorICBGcmVlIGlub2RlczogNjE0NS02NDAwCitHcm91cCAyNTogKEJsb2NrcyAyNTYwMS0yNjYyNCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjU2MDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI1NjAyLTI1NjA1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjU2MDYtMjU4NjEKKyAgQmxvY2sgYml0bWFwIGF0IDI2MjE5ICgrNjE4KSwgSW5vZGUgYml0bWFwIGF0IDI2MjIwICgrNjE5KQorICBJbm9kZSB0YWJsZSBhdCAyNTg2Mi0yNTg5MyAoKzI2MSkKKyAgNzI5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1ODk0LTI2MjE4LCAyNjIyMS0yNjYyNAorICBGcmVlIGlub2RlczogNjQwMS02NjU2CitHcm91cCAyNjogKEJsb2NrcyAyNjYyNS0yNzY0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDI2OTk1ICgrMzcwKSwgSW5vZGUgYml0bWFwIGF0IDI2OTk2ICgrMzcxKQorICBJbm9kZSB0YWJsZSBhdCAyNjYyNS0yNjY1NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjY2NTctMjY5OTQsIDI2OTk3LTI3NjQ4CisgIEZyZWUgaW5vZGVzOiA2NjU3LTY5MTIKK0dyb3VwIDI3OiAoQmxvY2tzIDI3NjQ5LTI4NjcyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNzY0OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjc2NTAtMjc2NTMKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNzY1NC0yNzkwOQorICBCbG9jayBiaXRtYXAgYXQgMjgyOTMgKCs2NDQpLCBJbm9kZSBiaXRtYXAgYXQgMjgyOTQgKCs2NDUpCisgIElub2RlIHRhYmxlIGF0IDI3OTEwLTI3OTQxICgrMjYxKQorICA3MjkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjc5NDItMjgyOTIsIDI4Mjk1LTI4NjcyCisgIEZyZWUgaW5vZGVzOiA2OTEzLTcxNjgKK0dyb3VwIDI4OiAoQmxvY2tzIDI4NjczLTI5Njk2KQorICBCbG9jayBiaXRtYXAgYXQgMjkwNjkgKCszOTYpLCBJbm9kZSBiaXRtYXAgYXQgMjkwNzAgKCszOTcpCisgIElub2RlIHRhYmxlIGF0IDI4NjczLTI4NzA0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODcwNS0yOTA2OCwgMjkwNzEtMjk2OTYKKyAgRnJlZSBpbm9kZXM6IDcxNjktNzQyNAorR3JvdXAgMjk6IChCbG9ja3MgMjk2OTctMzA3MjApCisgIEJsb2NrIGJpdG1hcCBhdCAzMDEwNiAoKzQwOSksIElub2RlIGJpdG1hcCBhdCAzMDEwNyAoKzQxMCkKKyAgSW5vZGUgdGFibGUgYXQgMjk2OTctMjk3MjgKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5NzI5LTMwMTA1LCAzMDEwOC0zMDcyMAorICBGcmVlIGlub2RlczogNzQyNS03NjgwCitHcm91cCAzMDogKEJsb2NrcyAzMDcyMS0zMTc0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDMxMTQzICgrNDIyKSwgSW5vZGUgYml0bWFwIGF0IDMxMTQ0ICgrNDIzKQorICBJbm9kZSB0YWJsZSBhdCAzMDcyMS0zMDc1MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA3NTMtMzExNDIsIDMxMTQ1LTMxNzQ0CisgIEZyZWUgaW5vZGVzOiA3NjgxLTc5MzYKK0dyb3VwIDMxOiAoQmxvY2tzIDMxNzQ1LTMyNzY4KQorICBCbG9jayBiaXRtYXAgYXQgMzIxODAgKCs0MzUpLCBJbm9kZSBiaXRtYXAgYXQgMzIxODEgKCs0MzYpCisgIElub2RlIHRhYmxlIGF0IDMxNzQ1LTMxNzc2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTc3Ny0zMjE3OSwgMzIxODItMzI3NjgKKyAgRnJlZSBpbm9kZXM6IDc5MzctODE5MgorR3JvdXAgMzI6IChCbG9ja3MgMzI3NjktMzM3OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzMzIxNyAoKzQ0OCksIElub2RlIGJpdG1hcCBhdCAzMzIxOCAoKzQ0OSkKKyAgSW5vZGUgdGFibGUgYXQgMzI3NjktMzI4MDAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMyODAxLTMzMjE2LCAzMzIxOS0zMzc5MgorICBGcmVlIGlub2RlczogODE5My04NDQ4CitHcm91cCAzMzogKEJsb2NrcyAzMzc5My0zNDgxNikKKyAgQmxvY2sgYml0bWFwIGF0IDM0MjU0ICgrNDYxKSwgSW5vZGUgYml0bWFwIGF0IDM0MjU1ICgrNDYyKQorICBJbm9kZSB0YWJsZSBhdCAzMzc5My0zMzgyNAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM4MjUtMzQyNTMsIDM0MjU2LTM0ODE2CisgIEZyZWUgaW5vZGVzOiA4NDQ5LTg3MDQKK0dyb3VwIDM0OiAoQmxvY2tzIDM0ODE3LTM1ODQwKQorICBCbG9jayBiaXRtYXAgYXQgMzUyOTEgKCs0NzQpLCBJbm9kZSBiaXRtYXAgYXQgMzUyOTIgKCs0NzUpCisgIElub2RlIHRhYmxlIGF0IDM0ODE3LTM0ODQ4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNDg0OS0zNTI5MCwgMzUyOTMtMzU4NDAKKyAgRnJlZSBpbm9kZXM6IDg3MDUtODk2MAorR3JvdXAgMzU6IChCbG9ja3MgMzU4NDEtMzY4NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAzNjMyOCAoKzQ4NyksIElub2RlIGJpdG1hcCBhdCAzNjMyOSAoKzQ4OCkKKyAgSW5vZGUgdGFibGUgYXQgMzU4NDEtMzU4NzIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM1ODczLTM2MzI3LCAzNjMzMC0zNjg2NAorICBGcmVlIGlub2RlczogODk2MS05MjE2CitHcm91cCAzNjogKEJsb2NrcyAzNjg2NS0zNzg4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDM3MzY1ICgrNTAwKSwgSW5vZGUgYml0bWFwIGF0IDM3MzY2ICgrNTAxKQorICBJbm9kZSB0YWJsZSBhdCAzNjg2NS0zNjg5NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzY4OTctMzczNjQsIDM3MzY3LTM3ODg4CisgIEZyZWUgaW5vZGVzOiA5MjE3LTk0NzIKK0dyb3VwIDM3OiAoQmxvY2tzIDM3ODg5LTM4OTEyKQorICBCbG9jayBiaXRtYXAgYXQgMzg0MDIgKCs1MTMpLCBJbm9kZSBiaXRtYXAgYXQgMzg0MDMgKCs1MTQpCisgIElub2RlIHRhYmxlIGF0IDM3ODg5LTM3OTIwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNzkyMS0zODQwMSwgMzg0MDQtMzg5MTIKKyAgRnJlZSBpbm9kZXM6IDk0NzMtOTcyOAorR3JvdXAgMzg6IChCbG9ja3MgMzg5MTMtMzk5MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAzOTQzOSAoKzUyNiksIElub2RlIGJpdG1hcCBhdCAzOTQ0MCAoKzUyNykKKyAgSW5vZGUgdGFibGUgYXQgMzg5MTMtMzg5NDQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM4OTQ1LTM5NDM4LCAzOTQ0MS0zOTkzNgorICBGcmVlIGlub2RlczogOTcyOS05OTg0CitHcm91cCAzOTogKEJsb2NrcyAzOTkzNy00MDk2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwNDc2ICgrNTM5KSwgSW5vZGUgYml0bWFwIGF0IDQwNDc3ICgrNTQwKQorICBJbm9kZSB0YWJsZSBhdCAzOTkzNy0zOTk2OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzk5NjktNDA0NzUsIDQwNDc4LTQwOTYwCisgIEZyZWUgaW5vZGVzOiA5OTg1LTEwMjQwCitHcm91cCA0MDogKEJsb2NrcyA0MDk2MS00MTk4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDQxNTEzICgrNTUyKSwgSW5vZGUgYml0bWFwIGF0IDQxNTE0ICgrNTUzKQorICBJbm9kZSB0YWJsZSBhdCA0MDk2MS00MDk5MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDA5OTMtNDE1MTIsIDQxNTE1LTQxOTg0CisgIEZyZWUgaW5vZGVzOiAxMDI0MS0xMDQ5NgorR3JvdXAgNDE6IChCbG9ja3MgNDE5ODUtNDMwMDgpCisgIEJsb2NrIGJpdG1hcCBhdCA0MjU1MCAoKzU2NSksIElub2RlIGJpdG1hcCBhdCA0MjU1MSAoKzU2NikKKyAgSW5vZGUgdGFibGUgYXQgNDE5ODUtNDIwMTYKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQyMDE3LTQyNTQ5LCA0MjU1Mi00MzAwOAorICBGcmVlIGlub2RlczogMTA0OTctMTA3NTIKK0dyb3VwIDQyOiAoQmxvY2tzIDQzMDA5LTQ0MDMyKQorICBCbG9jayBiaXRtYXAgYXQgNDM1ODcgKCs1NzgpLCBJbm9kZSBiaXRtYXAgYXQgNDM1ODggKCs1NzkpCisgIElub2RlIHRhYmxlIGF0IDQzMDA5LTQzMDQwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MzA0MS00MzU4NiwgNDM1ODktNDQwMzIKKyAgRnJlZSBpbm9kZXM6IDEwNzUzLTExMDA4CitHcm91cCA0MzogKEJsb2NrcyA0NDAzMy00NTA1NikKKyAgQmxvY2sgYml0bWFwIGF0IDQ0NjI0ICgrNTkxKSwgSW5vZGUgYml0bWFwIGF0IDQ0NjI1ICgrNTkyKQorICBJbm9kZSB0YWJsZSBhdCA0NDAzMy00NDA2NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDQwNjUtNDQ2MjMsIDQ0NjI2LTQ1MDU2CisgIEZyZWUgaW5vZGVzOiAxMTAwOS0xMTI2NAorR3JvdXAgNDQ6IChCbG9ja3MgNDUwNTctNDYwODApCisgIEJsb2NrIGJpdG1hcCBhdCA0NTY2MSAoKzYwNCksIElub2RlIGJpdG1hcCBhdCA0NTY2MiAoKzYwNSkKKyAgSW5vZGUgdGFibGUgYXQgNDUwNTctNDUwODgKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ1MDg5LTQ1NjYwLCA0NTY2My00NjA4MAorICBGcmVlIGlub2RlczogMTEyNjUtMTE1MjAKK0dyb3VwIDQ1OiAoQmxvY2tzIDQ2MDgxLTQ3MTA0KQorICBCbG9jayBiaXRtYXAgYXQgNDY2OTggKCs2MTcpLCBJbm9kZSBiaXRtYXAgYXQgNDY2OTkgKCs2MTgpCisgIElub2RlIHRhYmxlIGF0IDQ2MDgxLTQ2MTEyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NjExMy00NjY5NywgNDY3MDAtNDcxMDQKKyAgRnJlZSBpbm9kZXM6IDExNTIxLTExNzc2CitHcm91cCA0NjogKEJsb2NrcyA0NzEwNS00ODEyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ3NzM1ICgrNjMwKSwgSW5vZGUgYml0bWFwIGF0IDQ3NzM2ICgrNjMxKQorICBJbm9kZSB0YWJsZSBhdCA0NzEwNS00NzEzNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDcxMzctNDc3MzQsIDQ3NzM3LTQ4MTI4CisgIEZyZWUgaW5vZGVzOiAxMTc3Ny0xMjAzMgorR3JvdXAgNDc6IChCbG9ja3MgNDgxMjktNDkxNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA0ODc3MiAoKzY0MyksIElub2RlIGJpdG1hcCBhdCA0ODc3MyAoKzY0NCkKKyAgSW5vZGUgdGFibGUgYXQgNDgxMjktNDgxNjAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ4MTYxLTQ4NzcxLCA0ODc3NC00OTE1MgorICBGcmVlIGlub2RlczogMTIwMzMtMTIyODgKK0dyb3VwIDQ4OiAoQmxvY2tzIDQ5MTUzLTUwMTc2KQorICBCbG9jayBiaXRtYXAgYXQgNDk4MDkgKCs2NTYpLCBJbm9kZSBiaXRtYXAgYXQgNDk4MTAgKCs2NTcpCisgIElub2RlIHRhYmxlIGF0IDQ5MTUzLTQ5MTg0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0OTE4NS00OTgwOCwgNDk4MTEtNTAxNzYKKyAgRnJlZSBpbm9kZXM6IDEyMjg5LTEyNTQ0CitHcm91cCA0OTogKEJsb2NrcyA1MDE3Ny01MTIwMCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTAxNzcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDUwMTc4LTUwMTgxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNTAxODItNTA0MzcKKyAgQmxvY2sgYml0bWFwIGF0IDUxMTA3ICgrOTMwKSwgSW5vZGUgYml0bWFwIGF0IDUxMTA4ICgrOTMxKQorICBJbm9kZSB0YWJsZSBhdCA1MDQzOC01MDQ2OSAoKzI2MSkKKyAgNzI5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUwNDcwLTUxMTA2LCA1MTEwOS01MTIwMAorICBGcmVlIGlub2RlczogMTI1NDUtMTI4MDAKK0dyb3VwIDUwOiAoQmxvY2tzIDUxMjAxLTUyMjI0KQorICBCbG9jayBiaXRtYXAgYXQgNTE4ODMgKCs2ODIpLCBJbm9kZSBiaXRtYXAgYXQgNTE4ODQgKCs2ODMpCisgIElub2RlIHRhYmxlIGF0IDUxMjAxLTUxMjMyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MTIzMy01MTg4MiwgNTE4ODUtNTIyMjQKKyAgRnJlZSBpbm9kZXM6IDEyODAxLTEzMDU2CitHcm91cCA1MTogKEJsb2NrcyA1MjIyNS01MzI0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDUyOTIwICgrNjk1KSwgSW5vZGUgYml0bWFwIGF0IDUyOTIxICgrNjk2KQorICBJbm9kZSB0YWJsZSBhdCA1MjIyNS01MjI1NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTIyNTctNTI5MTksIDUyOTIyLTUzMjQ4CisgIEZyZWUgaW5vZGVzOiAxMzA1Ny0xMzMxMgorR3JvdXAgNTI6IChCbG9ja3MgNTMyNDktNTQyNzIpCisgIEJsb2NrIGJpdG1hcCBhdCA1Mzk1NyAoKzcwOCksIElub2RlIGJpdG1hcCBhdCA1Mzk1OCAoKzcwOSkKKyAgSW5vZGUgdGFibGUgYXQgNTMyNDktNTMyODAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzMjgxLTUzOTU2LCA1Mzk1OS01NDI3MgorICBGcmVlIGlub2RlczogMTMzMTMtMTM1NjgKK0dyb3VwIDUzOiAoQmxvY2tzIDU0MjczLTU1Mjk2KQorICBCbG9jayBiaXRtYXAgYXQgNTQ5OTQgKCs3MjEpLCBJbm9kZSBiaXRtYXAgYXQgNTQ5OTUgKCs3MjIpCisgIElub2RlIHRhYmxlIGF0IDU0MjczLTU0MzA0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NDMwNS01NDk5MywgNTQ5OTYtNTUyOTYKKyAgRnJlZSBpbm9kZXM6IDEzNTY5LTEzODI0CitHcm91cCA1NDogKEJsb2NrcyA1NTI5Ny01NjMyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDU2MDMxICgrNzM0KSwgSW5vZGUgYml0bWFwIGF0IDU2MDMyICgrNzM1KQorICBJbm9kZSB0YWJsZSBhdCA1NTI5Ny01NTMyOAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTUzMjktNTYwMzAsIDU2MDMzLTU2MzIwCisgIEZyZWUgaW5vZGVzOiAxMzgyNS0xNDA4MAorR3JvdXAgNTU6IChCbG9ja3MgNTYzMjEtNTczNDQpCisgIEJsb2NrIGJpdG1hcCBhdCA1NzA2OCAoKzc0NyksIElub2RlIGJpdG1hcCBhdCA1NzA2OSAoKzc0OCkKKyAgSW5vZGUgdGFibGUgYXQgNTYzMjEtNTYzNTIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU2MzUzLTU3MDY3LCA1NzA3MC01NzM0NAorICBGcmVlIGlub2RlczogMTQwODEtMTQzMzYKK0dyb3VwIDU2OiAoQmxvY2tzIDU3MzQ1LTU4MzY4KQorICBCbG9jayBiaXRtYXAgYXQgNTgxMDUgKCs3NjApLCBJbm9kZSBiaXRtYXAgYXQgNTgxMDYgKCs3NjEpCisgIElub2RlIHRhYmxlIGF0IDU3MzQ1LTU3Mzc2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NzM3Ny01ODEwNCwgNTgxMDctNTgzNjgKKyAgRnJlZSBpbm9kZXM6IDE0MzM3LTE0NTkyCitHcm91cCA1NzogKEJsb2NrcyA1ODM2OS01OTM5MikKKyAgQmxvY2sgYml0bWFwIGF0IDU5MTQyICgrNzczKSwgSW5vZGUgYml0bWFwIGF0IDU5MTQzICgrNzc0KQorICBJbm9kZSB0YWJsZSBhdCA1ODM2OS01ODQwMAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTg0MDEtNTkxNDEsIDU5MTQ0LTU5MzkyCisgIEZyZWUgaW5vZGVzOiAxNDU5My0xNDg0OAorR3JvdXAgNTg6IChCbG9ja3MgNTkzOTMtNjA0MTYpCisgIEJsb2NrIGJpdG1hcCBhdCA2MDE3OSAoKzc4NiksIElub2RlIGJpdG1hcCBhdCA2MDE4MCAoKzc4NykKKyAgSW5vZGUgdGFibGUgYXQgNTkzOTMtNTk0MjQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU5NDI1LTYwMTc4LCA2MDE4MS02MDQxNgorICBGcmVlIGlub2RlczogMTQ4NDktMTUxMDQKK0dyb3VwIDU5OiAoQmxvY2tzIDYwNDE3LTYxNDQwKQorICBCbG9jayBiaXRtYXAgYXQgNjEyMTYgKCs3OTkpLCBJbm9kZSBiaXRtYXAgYXQgNjEyMTcgKCs4MDApCisgIElub2RlIHRhYmxlIGF0IDYwNDE3LTYwNDQ4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MDQ0OS02MTIxNSwgNjEyMTgtNjE0NDAKKyAgRnJlZSBpbm9kZXM6IDE1MTA1LTE1MzYwCitHcm91cCA2MDogKEJsb2NrcyA2MTQ0MS02MjQ2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDYyMjUzICgrODEyKSwgSW5vZGUgYml0bWFwIGF0IDYyMjU0ICgrODEzKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ0MS02MTQ3MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE0NzMtNjIyNTIsIDYyMjU1LTYyNDY0CisgIEZyZWUgaW5vZGVzOiAxNTM2MS0xNTYxNgorR3JvdXAgNjE6IChCbG9ja3MgNjI0NjUtNjM0ODgpCisgIEJsb2NrIGJpdG1hcCBhdCA2MzI5MCAoKzgyNSksIElub2RlIGJpdG1hcCBhdCA2MzI5MSAoKzgyNikKKyAgSW5vZGUgdGFibGUgYXQgNjI0NjUtNjI0OTYKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYyNDk3LTYzMjg5LCA2MzI5Mi02MzQ4OAorICBGcmVlIGlub2RlczogMTU2MTctMTU4NzIKK0dyb3VwIDYyOiAoQmxvY2tzIDYzNDg5LTY0NTEyKQorICBCbG9jayBiaXRtYXAgYXQgNjQzMjcgKCs4MzgpLCBJbm9kZSBiaXRtYXAgYXQgNjQzMjggKCs4MzkpCisgIElub2RlIHRhYmxlIGF0IDYzNDg5LTYzNTIwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MzUyMS02NDMyNiwgNjQzMjktNjQ1MTIKKyAgRnJlZSBpbm9kZXM6IDE1ODczLTE2MTI4CitHcm91cCA2MzogKEJsb2NrcyA2NDUxMy02NTUzNikKKyAgQmxvY2sgYml0bWFwIGF0IDY1MzY0ICgrODUxKSwgSW5vZGUgYml0bWFwIGF0IDY1MzY1ICgrODUyKQorICBJbm9kZSB0YWJsZSBhdCA2NDUxMy02NDU0NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjQ1NDUtNjUzNjMsIDY1MzY2LTY1NTM2CisgIEZyZWUgaW5vZGVzOiAxNjEyOS0xNjM4NAorR3JvdXAgNjQ6IChCbG9ja3MgNjU1MzctNjY1NjApCisgIEJsb2NrIGJpdG1hcCBhdCA2NjQwMSAoKzg2NCksIElub2RlIGJpdG1hcCBhdCA2NjQwMiAoKzg2NSkKKyAgSW5vZGUgdGFibGUgYXQgNjU1MzctNjU1NjgKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY1NTY5LTY2NDAwLCA2NjQwMy02NjU2MAorICBGcmVlIGlub2RlczogMTYzODUtMTY2NDAKK0dyb3VwIDY1OiAoQmxvY2tzIDY2NTYxLTY3NTg0KQorICBCbG9jayBiaXRtYXAgYXQgNjc0MzggKCs4NzcpLCBJbm9kZSBiaXRtYXAgYXQgNjc0MzkgKCs4NzgpCisgIElub2RlIHRhYmxlIGF0IDY2NTYxLTY2NTkyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NjU5My02NzQzNywgNjc0NDAtNjc1ODQKKyAgRnJlZSBpbm9kZXM6IDE2NjQxLTE2ODk2CitHcm91cCA2NjogKEJsb2NrcyA2NzU4NS02ODYwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDY4NDc1ICgrODkwKSwgSW5vZGUgYml0bWFwIGF0IDY4NDc2ICgrODkxKQorICBJbm9kZSB0YWJsZSBhdCA2NzU4NS02NzYxNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjc2MTctNjg0NzQsIDY4NDc3LTY4NjA4CisgIEZyZWUgaW5vZGVzOiAxNjg5Ny0xNzE1MgorR3JvdXAgNjc6IChCbG9ja3MgNjg2MDktNjk2MzIpCisgIEJsb2NrIGJpdG1hcCBhdCA2OTUxMiAoKzkwMyksIElub2RlIGJpdG1hcCBhdCA2OTUxMyAoKzkwNCkKKyAgSW5vZGUgdGFibGUgYXQgNjg2MDktNjg2NDAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY4NjQxLTY5NTExLCA2OTUxNC02OTYzMgorICBGcmVlIGlub2RlczogMTcxNTMtMTc0MDgKK0dyb3VwIDY4OiAoQmxvY2tzIDY5NjMzLTcwNjU2KQorICBCbG9jayBiaXRtYXAgYXQgNzA1NDkgKCs5MTYpLCBJbm9kZSBiaXRtYXAgYXQgNzA1NTAgKCs5MTcpCisgIElub2RlIHRhYmxlIGF0IDY5NjMzLTY5NjY0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2OTY2NS03MDU0OCwgNzA1NTEtNzA2NTYKKyAgRnJlZSBpbm9kZXM6IDE3NDA5LTE3NjY0CitHcm91cCA2OTogKEJsb2NrcyA3MDY1Ny03MTY4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNTg2ICgrOTI5KSwgSW5vZGUgYml0bWFwIGF0IDcxNTg3ICgrOTMwKQorICBJbm9kZSB0YWJsZSBhdCA3MDY1Ny03MDY4OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzA2ODktNzE1ODUsIDcxNTg4LTcxNjgwCisgIEZyZWUgaW5vZGVzOiAxNzY2NS0xNzkyMAorR3JvdXAgNzA6IChCbG9ja3MgNzE2ODEtNzI3MDQpCisgIEJsb2NrIGJpdG1hcCBhdCA3MjYyMyAoKzk0MiksIElub2RlIGJpdG1hcCBhdCA3MjYyNCAoKzk0MykKKyAgSW5vZGUgdGFibGUgYXQgNzE2ODEtNzE3MTIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcxNzEzLTcyNjIyLCA3MjYyNS03MjcwNAorICBGcmVlIGlub2RlczogMTc5MjEtMTgxNzYKK0dyb3VwIDcxOiAoQmxvY2tzIDcyNzA1LTczNzI4KQorICBCbG9jayBiaXRtYXAgYXQgNzM2NjAgKCs5NTUpLCBJbm9kZSBiaXRtYXAgYXQgNzM2NjEgKCs5NTYpCisgIElub2RlIHRhYmxlIGF0IDcyNzA1LTcyNzM2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MjczNy03MzY1OSwgNzM2NjItNzM3MjgKKyAgRnJlZSBpbm9kZXM6IDE4MTc3LTE4NDMyCitHcm91cCA3MjogKEJsb2NrcyA3MzcyOS03NDc1MikKKyAgQmxvY2sgYml0bWFwIGF0IDc0Njk3ICgrOTY4KSwgSW5vZGUgYml0bWFwIGF0IDc0Njk4ICgrOTY5KQorICBJbm9kZSB0YWJsZSBhdCA3MzcyOS03Mzc2MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzM3NjEtNzQ2OTYsIDc0Njk5LTc0NzUyCisgIEZyZWUgaW5vZGVzOiAxODQzMy0xODY4OAorR3JvdXAgNzM6IChCbG9ja3MgNzQ3NTMtNzU3NzYpCisgIEJsb2NrIGJpdG1hcCBhdCA3NTczNCAoKzk4MSksIElub2RlIGJpdG1hcCBhdCA3NTczNSAoKzk4MikKKyAgSW5vZGUgdGFibGUgYXQgNzQ3NTMtNzQ3ODQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0Nzg1LTc1NzMzLCA3NTczNi03NTc3NgorICBGcmVlIGlub2RlczogMTg2ODktMTg5NDQKK0dyb3VwIDc0OiAoQmxvY2tzIDc1Nzc3LTc2ODAwKQorICBCbG9jayBiaXRtYXAgYXQgNzY3NzEgKCs5OTQpLCBJbm9kZSBiaXRtYXAgYXQgNzY3NzIgKCs5OTUpCisgIElub2RlIHRhYmxlIGF0IDc1Nzc3LTc1ODA4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NTgwOS03Njc3MCwgNzY3NzMtNzY4MDAKKyAgRnJlZSBpbm9kZXM6IDE4OTQ1LTE5MjAwCitHcm91cCA3NTogKEJsb2NrcyA3NjgwMS03NzgyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDc3ODA4ICgrMTAwNyksIElub2RlIGJpdG1hcCBhdCA3NzgwOSAoKzEwMDgpCisgIElub2RlIHRhYmxlIGF0IDc2ODAxLTc2ODMyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NjgzMy03NzgwNywgNzc4MTAtNzc4MjQKKyAgRnJlZSBpbm9kZXM6IDE5MjAxLTE5NDU2CitHcm91cCA3NjogKEJsb2NrcyA3NzgyNS03ODg0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDc4ODQ1ICgrMTAyMCksIElub2RlIGJpdG1hcCBhdCA3ODg0NiAoKzEwMjEpCisgIElub2RlIHRhYmxlIGF0IDc3ODI1LTc3ODU2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3Nzg1Ny03ODg0NCwgNzg4NDctNzg4NDgKKyAgRnJlZSBpbm9kZXM6IDE5NDU3LTE5NzEyCitHcm91cCA3NzogKEJsb2NrcyA3ODg0OS03OTg3MikKKyAgQmxvY2sgYml0bWFwIGF0IDc4ODkwICgrNDEpLCBJbm9kZSBiaXRtYXAgYXQgNzg4OTEgKCs0MikKKyAgSW5vZGUgdGFibGUgYXQgNzg4NDktNzg4ODAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc4ODgxLTc4ODg5LCA3ODg5Mi03OTg3MgorICBGcmVlIGlub2RlczogMTk3MTMtMTk5NjgKK0dyb3VwIDc4OiAoQmxvY2tzIDc5ODczLTgwODk2KQorICBCbG9jayBiaXRtYXAgYXQgNzk5MjcgKCs1NCksIElub2RlIGJpdG1hcCBhdCA3OTkyOCAoKzU1KQorICBJbm9kZSB0YWJsZSBhdCA3OTg3My03OTkwNAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzk5MDUtNzk5MjYsIDc5OTI5LTgwODk2CisgIEZyZWUgaW5vZGVzOiAxOTk2OS0yMDIyNAorR3JvdXAgNzk6IChCbG9ja3MgODA4OTctODE5MjApCisgIEJsb2NrIGJpdG1hcCBhdCA4MDk2NCAoKzY3KSwgSW5vZGUgYml0bWFwIGF0IDgwOTY1ICgrNjgpCisgIElub2RlIHRhYmxlIGF0IDgwODk3LTgwOTI4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4MDkyOS04MDk2MywgODA5NjYtODE5MjAKKyAgRnJlZSBpbm9kZXM6IDIwMjI1LTIwNDgwCitHcm91cCA4MDogKEJsb2NrcyA4MTkyMS04Mjk0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDgyMDAxICgrODApLCBJbm9kZSBiaXRtYXAgYXQgODIwMDIgKCs4MSkKKyAgSW5vZGUgdGFibGUgYXQgODE5MjEtODE5NTIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgxOTUzLTgyMDAwLCA4MjAwMy04Mjk0NAorICBGcmVlIGlub2RlczogMjA0ODEtMjA3MzYKK0dyb3VwIDgxOiAoQmxvY2tzIDgyOTQ1LTgzOTY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4Mjk0NSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgODI5NDYtODI5NDkKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4Mjk1MC04MzIwNQorICBCbG9jayBiaXRtYXAgYXQgODM1NjAgKCs2MTUpLCBJbm9kZSBiaXRtYXAgYXQgODM1NjEgKCs2MTYpCisgIElub2RlIHRhYmxlIGF0IDgzMjA2LTgzMjM3ICgrMjYxKQorICA3MjkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODMyMzgtODM1NTksIDgzNTYyLTgzOTY4CisgIEZyZWUgaW5vZGVzOiAyMDczNy0yMDk5MgorR3JvdXAgODI6IChCbG9ja3MgODM5NjktODQ5OTIpCisgIEJsb2NrIGJpdG1hcCBhdCA4NDA3NSAoKzEwNiksIElub2RlIGJpdG1hcCBhdCA4NDA3NiAoKzEwNykKKyAgSW5vZGUgdGFibGUgYXQgODM5NjktODQwMDAKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg0MDAxLTg0MDc0LCA4NDA3Ny04NDk5MgorICBGcmVlIGlub2RlczogMjA5OTMtMjEyNDgKK0dyb3VwIDgzOiAoQmxvY2tzIDg0OTkzLTg2MDE2KQorICBCbG9jayBiaXRtYXAgYXQgODUxMTIgKCsxMTkpLCBJbm9kZSBiaXRtYXAgYXQgODUxMTMgKCsxMjApCisgIElub2RlIHRhYmxlIGF0IDg0OTkzLTg1MDI0CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NTAyNS04NTExMSwgODUxMTQtODYwMTYKKyAgRnJlZSBpbm9kZXM6IDIxMjQ5LTIxNTA0CitHcm91cCA4NDogKEJsb2NrcyA4NjAxNy04NzA0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDg2MTQ5ICgrMTMyKSwgSW5vZGUgYml0bWFwIGF0IDg2MTUwICgrMTMzKQorICBJbm9kZSB0YWJsZSBhdCA4NjAxNy04NjA0OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODYwNDktODYxNDgsIDg2MTUxLTg3MDQwCisgIEZyZWUgaW5vZGVzOiAyMTUwNS0yMTc2MAorR3JvdXAgODU6IChCbG9ja3MgODcwNDEtODgwNjQpCisgIEJsb2NrIGJpdG1hcCBhdCA4NzE4NiAoKzE0NSksIElub2RlIGJpdG1hcCBhdCA4NzE4NyAoKzE0NikKKyAgSW5vZGUgdGFibGUgYXQgODcwNDEtODcwNzIKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MDczLTg3MTg1LCA4NzE4OC04ODA2NAorICBGcmVlIGlub2RlczogMjE3NjEtMjIwMTYKK0dyb3VwIDg2OiAoQmxvY2tzIDg4MDY1LTg5MDg4KQorICBCbG9jayBiaXRtYXAgYXQgODgyMjMgKCsxNTgpLCBJbm9kZSBiaXRtYXAgYXQgODgyMjQgKCsxNTkpCisgIElub2RlIHRhYmxlIGF0IDg4MDY1LTg4MDk2CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4ODA5Ny04ODIyMiwgODgyMjUtODkwODgKKyAgRnJlZSBpbm9kZXM6IDIyMDE3LTIyMjcyCitHcm91cCA4NzogKEJsb2NrcyA4OTA4OS05MDExMikKKyAgQmxvY2sgYml0bWFwIGF0IDg5MjYwICgrMTcxKSwgSW5vZGUgYml0bWFwIGF0IDg5MjYxICgrMTcyKQorICBJbm9kZSB0YWJsZSBhdCA4OTA4OS04OTEyMAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODkxMjEtODkyNTksIDg5MjYyLTkwMTEyCisgIEZyZWUgaW5vZGVzOiAyMjI3My0yMjUyOAorR3JvdXAgODg6IChCbG9ja3MgOTAxMTMtOTExMzYpCisgIEJsb2NrIGJpdG1hcCBhdCA5MDI5NyAoKzE4NCksIElub2RlIGJpdG1hcCBhdCA5MDI5OCAoKzE4NSkKKyAgSW5vZGUgdGFibGUgYXQgOTAxMTMtOTAxNDQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkwMTQ1LTkwMjk2LCA5MDI5OS05MTEzNgorICBGcmVlIGlub2RlczogMjI1MjktMjI3ODQKK0dyb3VwIDg5OiAoQmxvY2tzIDkxMTM3LTkyMTYwKQorICBCbG9jayBiaXRtYXAgYXQgOTEzMzQgKCsxOTcpLCBJbm9kZSBiaXRtYXAgYXQgOTEzMzUgKCsxOTgpCisgIElub2RlIHRhYmxlIGF0IDkxMTM3LTkxMTY4CisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MTE2OS05MTMzMywgOTEzMzYtOTIxNjAKKyAgRnJlZSBpbm9kZXM6IDIyNzg1LTIzMDQwCitHcm91cCA5MDogKEJsb2NrcyA5MjE2MS05MzE4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDkyMzcxICgrMjEwKSwgSW5vZGUgYml0bWFwIGF0IDkyMzcyICgrMjExKQorICBJbm9kZSB0YWJsZSBhdCA5MjE2MS05MjE5MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTIxOTMtOTIzNzAsIDkyMzczLTkzMTg0CisgIEZyZWUgaW5vZGVzOiAyMzA0MS0yMzI5NgorR3JvdXAgOTE6IChCbG9ja3MgOTMxODUtOTQyMDgpCisgIEJsb2NrIGJpdG1hcCBhdCA5MzQwOCAoKzIyMyksIElub2RlIGJpdG1hcCBhdCA5MzQwOSAoKzIyNCkKKyAgSW5vZGUgdGFibGUgYXQgOTMxODUtOTMyMTYKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkzMjE3LTkzNDA3LCA5MzQxMC05NDIwOAorICBGcmVlIGlub2RlczogMjMyOTctMjM1NTIKK0dyb3VwIDkyOiAoQmxvY2tzIDk0MjA5LTk1MjMyKQorICBCbG9jayBiaXRtYXAgYXQgOTQ0NDUgKCsyMzYpLCBJbm9kZSBiaXRtYXAgYXQgOTQ0NDYgKCsyMzcpCisgIElub2RlIHRhYmxlIGF0IDk0MjA5LTk0MjQwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDI0MS05NDQ0NCwgOTQ0NDctOTUyMzIKKyAgRnJlZSBpbm9kZXM6IDIzNTUzLTIzODA4CitHcm91cCA5MzogKEJsb2NrcyA5NTIzMy05NjI1NikKKyAgQmxvY2sgYml0bWFwIGF0IDk1NDgyICgrMjQ5KSwgSW5vZGUgYml0bWFwIGF0IDk1NDgzICgrMjUwKQorICBJbm9kZSB0YWJsZSBhdCA5NTIzMy05NTI2NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTUyNjUtOTU0ODEsIDk1NDg0LTk2MjU2CisgIEZyZWUgaW5vZGVzOiAyMzgwOS0yNDA2NAorR3JvdXAgOTQ6IChCbG9ja3MgOTYyNTctOTcyODApCisgIEJsb2NrIGJpdG1hcCBhdCA5NjUxOSAoKzI2MiksIElub2RlIGJpdG1hcCBhdCA5NjUyMCAoKzI2MykKKyAgSW5vZGUgdGFibGUgYXQgOTYyNTctOTYyODgKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk2Mjg5LTk2NTE4LCA5NjUyMS05NzI4MAorICBGcmVlIGlub2RlczogMjQwNjUtMjQzMjAKK0dyb3VwIDk1OiAoQmxvY2tzIDk3MjgxLTk4MzA0KQorICBCbG9jayBiaXRtYXAgYXQgOTc1NTYgKCsyNzUpLCBJbm9kZSBiaXRtYXAgYXQgOTc1NTcgKCsyNzYpCisgIElub2RlIHRhYmxlIGF0IDk3MjgxLTk3MzEyCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NzMxMy05NzU1NSwgOTc1NTgtOTgzMDQKKyAgRnJlZSBpbm9kZXM6IDI0MzIxLTI0NTc2CitHcm91cCA5NjogKEJsb2NrcyA5ODMwNS05OTMyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDk4NTkzICgrMjg4KSwgSW5vZGUgYml0bWFwIGF0IDk4NTk0ICgrMjg5KQorICBJbm9kZSB0YWJsZSBhdCA5ODMwNS05ODMzNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTgzMzctOTg1OTIsIDk4NTk1LTk5MzI4CisgIEZyZWUgaW5vZGVzOiAyNDU3Ny0yNDgzMgorR3JvdXAgOTc6IChCbG9ja3MgOTkzMjktMTAwMzUyKQorICBCbG9jayBiaXRtYXAgYXQgOTk2MzAgKCszMDEpLCBJbm9kZSBiaXRtYXAgYXQgOTk2MzEgKCszMDIpCisgIElub2RlIHRhYmxlIGF0IDk5MzI5LTk5MzYwCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5OTM2MS05OTYyOSwgOTk2MzItMTAwMzUyCisgIEZyZWUgaW5vZGVzOiAyNDgzMy0yNTA4OAorR3JvdXAgOTg6IChCbG9ja3MgMTAwMzUzLTEwMTM3NikKKyAgQmxvY2sgYml0bWFwIGF0IDEwMDY2NyAoKzMxNCksIElub2RlIGJpdG1hcCBhdCAxMDA2NjggKCszMTUpCisgIElub2RlIHRhYmxlIGF0IDEwMDM1My0xMDAzODQKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMDM4NS0xMDA2NjYsIDEwMDY2OS0xMDEzNzYKKyAgRnJlZSBpbm9kZXM6IDI1MDg5LTI1MzQ0CitHcm91cCA5OTogKEJsb2NrcyAxMDEzNzctMTAyNDAwKQorICBCbG9jayBiaXRtYXAgYXQgMTAxNzA0ICgrMzI3KSwgSW5vZGUgYml0bWFwIGF0IDEwMTcwNSAoKzMyOCkKKyAgSW5vZGUgdGFibGUgYXQgMTAxMzc3LTEwMTQwOAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAxNDA5LTEwMTcwMywgMTAxNzA2LTEwMjQwMAorICBGcmVlIGlub2RlczogMjUzNDUtMjU2MDAKK0dyb3VwIDEwMDogKEJsb2NrcyAxMDI0MDEtMTAzNDI0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNzQxICgrMzQwKSwgSW5vZGUgYml0bWFwIGF0IDEwMjc0MiAoKzM0MSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDAxLTEwMjQzMgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNDMzLTEwMjc0MCwgMTAyNzQzLTEwMzQyNAorICBGcmVlIGlub2RlczogMjU2MDEtMjU4NTYKK0dyb3VwIDEwMTogKEJsb2NrcyAxMDM0MjUtMTA0NDQ4KQorICBCbG9jayBiaXRtYXAgYXQgMTAzNzc4ICgrMzUzKSwgSW5vZGUgYml0bWFwIGF0IDEwMzc3OSAoKzM1NCkKKyAgSW5vZGUgdGFibGUgYXQgMTAzNDI1LTEwMzQ1NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAzNDU3LTEwMzc3NywgMTAzNzgwLTEwNDQ0OAorICBGcmVlIGlub2RlczogMjU4NTctMjYxMTIKK0dyb3VwIDEwMjogKEJsb2NrcyAxMDQ0NDktMTA1NDcyKQorICBCbG9jayBiaXRtYXAgYXQgMTA0ODE1ICgrMzY2KSwgSW5vZGUgYml0bWFwIGF0IDEwNDgxNiAoKzM2NykKKyAgSW5vZGUgdGFibGUgYXQgMTA0NDQ5LTEwNDQ4MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA0NDgxLTEwNDgxNCwgMTA0ODE3LTEwNTQ3MgorICBGcmVlIGlub2RlczogMjYxMTMtMjYzNjgKK0dyb3VwIDEwMzogKEJsb2NrcyAxMDU0NzMtMTA2NDk2KQorICBCbG9jayBiaXRtYXAgYXQgMTA1ODUyICgrMzc5KSwgSW5vZGUgYml0bWFwIGF0IDEwNTg1MyAoKzM4MCkKKyAgSW5vZGUgdGFibGUgYXQgMTA1NDczLTEwNTUwNAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA1NTA1LTEwNTg1MSwgMTA1ODU0LTEwNjQ5NgorICBGcmVlIGlub2RlczogMjYzNjktMjY2MjQKK0dyb3VwIDEwNDogKEJsb2NrcyAxMDY0OTctMTA3NTIwKQorICBCbG9jayBiaXRtYXAgYXQgMTA2ODg5ICgrMzkyKSwgSW5vZGUgYml0bWFwIGF0IDEwNjg5MCAoKzM5MykKKyAgSW5vZGUgdGFibGUgYXQgMTA2NDk3LTEwNjUyOAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA2NTI5LTEwNjg4OCwgMTA2ODkxLTEwNzUyMAorICBGcmVlIGlub2RlczogMjY2MjUtMjY4ODAKK0dyb3VwIDEwNTogKEJsb2NrcyAxMDc1MjEtMTA4NTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTA3OTI2ICgrNDA1KSwgSW5vZGUgYml0bWFwIGF0IDEwNzkyNyAoKzQwNikKKyAgSW5vZGUgdGFibGUgYXQgMTA3NTIxLTEwNzU1MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA3NTUzLTEwNzkyNSwgMTA3OTI4LTEwODU0NAorICBGcmVlIGlub2RlczogMjY4ODEtMjcxMzYKK0dyb3VwIDEwNjogKEJsb2NrcyAxMDg1NDUtMTA5NTY4KQorICBCbG9jayBiaXRtYXAgYXQgMTA4OTYzICgrNDE4KSwgSW5vZGUgYml0bWFwIGF0IDEwODk2NCAoKzQxOSkKKyAgSW5vZGUgdGFibGUgYXQgMTA4NTQ1LTEwODU3NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA4NTc3LTEwODk2MiwgMTA4OTY1LTEwOTU2OAorICBGcmVlIGlub2RlczogMjcxMzctMjczOTIKK0dyb3VwIDEwNzogKEJsb2NrcyAxMDk1NjktMTEwNTkyKQorICBCbG9jayBiaXRtYXAgYXQgMTEwMDAwICgrNDMxKSwgSW5vZGUgYml0bWFwIGF0IDExMDAwMSAoKzQzMikKKyAgSW5vZGUgdGFibGUgYXQgMTA5NTY5LTEwOTYwMAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA5NjAxLTEwOTk5OSwgMTEwMDAyLTExMDU5MgorICBGcmVlIGlub2RlczogMjczOTMtMjc2NDgKK0dyb3VwIDEwODogKEJsb2NrcyAxMTA1OTMtMTExNjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTExMDM3ICgrNDQ0KSwgSW5vZGUgYml0bWFwIGF0IDExMTAzOCAoKzQ0NSkKKyAgSW5vZGUgdGFibGUgYXQgMTEwNTkzLTExMDYyNAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEwNjI1LTExMTAzNiwgMTExMDM5LTExMTYxNgorICBGcmVlIGlub2RlczogMjc2NDktMjc5MDQKK0dyb3VwIDEwOTogKEJsb2NrcyAxMTE2MTctMTEyNjQwKQorICBCbG9jayBiaXRtYXAgYXQgMTEyMDc0ICgrNDU3KSwgSW5vZGUgYml0bWFwIGF0IDExMjA3NSAoKzQ1OCkKKyAgSW5vZGUgdGFibGUgYXQgMTExNjE3LTExMTY0OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTExNjQ5LTExMjA3MywgMTEyMDc2LTExMjY0MAorICBGcmVlIGlub2RlczogMjc5MDUtMjgxNjAKK0dyb3VwIDExMDogKEJsb2NrcyAxMTI2NDEtMTEzNjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTEzMTExICgrNDcwKSwgSW5vZGUgYml0bWFwIGF0IDExMzExMiAoKzQ3MSkKKyAgSW5vZGUgdGFibGUgYXQgMTEyNjQxLTExMjY3MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNjczLTExMzExMCwgMTEzMTEzLTExMzY2NAorICBGcmVlIGlub2RlczogMjgxNjEtMjg0MTYKK0dyb3VwIDExMTogKEJsb2NrcyAxMTM2NjUtMTE0Njg4KQorICBCbG9jayBiaXRtYXAgYXQgMTE0MTQ4ICgrNDgzKSwgSW5vZGUgYml0bWFwIGF0IDExNDE0OSAoKzQ4NCkKKyAgSW5vZGUgdGFibGUgYXQgMTEzNjY1LTExMzY5NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEzNjk3LTExNDE0NywgMTE0MTUwLTExNDY4OAorICBGcmVlIGlub2RlczogMjg0MTctMjg2NzIKK0dyb3VwIDExMjogKEJsb2NrcyAxMTQ2ODktMTE1NzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTE1MTg1ICgrNDk2KSwgSW5vZGUgYml0bWFwIGF0IDExNTE4NiAoKzQ5NykKKyAgSW5vZGUgdGFibGUgYXQgMTE0Njg5LTExNDcyMAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE0NzIxLTExNTE4NCwgMTE1MTg3LTExNTcxMgorICBGcmVlIGlub2RlczogMjg2NzMtMjg5MjgKK0dyb3VwIDExMzogKEJsb2NrcyAxMTU3MTMtMTE2NzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTE2MjIyICgrNTA5KSwgSW5vZGUgYml0bWFwIGF0IDExNjIyMyAoKzUxMCkKKyAgSW5vZGUgdGFibGUgYXQgMTE1NzEzLTExNTc0NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE1NzQ1LTExNjIyMSwgMTE2MjI0LTExNjczNgorICBGcmVlIGlub2RlczogMjg5MjktMjkxODQKK0dyb3VwIDExNDogKEJsb2NrcyAxMTY3MzctMTE3NzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTE3MjU5ICgrNTIyKSwgSW5vZGUgYml0bWFwIGF0IDExNzI2MCAoKzUyMykKKyAgSW5vZGUgdGFibGUgYXQgMTE2NzM3LTExNjc2OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE2NzY5LTExNzI1OCwgMTE3MjYxLTExNzc2MAorICBGcmVlIGlub2RlczogMjkxODUtMjk0NDAKK0dyb3VwIDExNTogKEJsb2NrcyAxMTc3NjEtMTE4Nzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTE4Mjk2ICgrNTM1KSwgSW5vZGUgYml0bWFwIGF0IDExODI5NyAoKzUzNikKKyAgSW5vZGUgdGFibGUgYXQgMTE3NzYxLTExNzc5MgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE3NzkzLTExODI5NSwgMTE4Mjk4LTExODc4NAorICBGcmVlIGlub2RlczogMjk0NDEtMjk2OTYKK0dyb3VwIDExNjogKEJsb2NrcyAxMTg3ODUtMTE5ODA4KQorICBCbG9jayBiaXRtYXAgYXQgMTE5MzMzICgrNTQ4KSwgSW5vZGUgYml0bWFwIGF0IDExOTMzNCAoKzU0OSkKKyAgSW5vZGUgdGFibGUgYXQgMTE4Nzg1LTExODgxNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE4ODE3LTExOTMzMiwgMTE5MzM1LTExOTgwOAorICBGcmVlIGlub2RlczogMjk2OTctMjk5NTIKK0dyb3VwIDExNzogKEJsb2NrcyAxMTk4MDktMTIwODMyKQorICBCbG9jayBiaXRtYXAgYXQgMTIwMzcwICgrNTYxKSwgSW5vZGUgYml0bWFwIGF0IDEyMDM3MSAoKzU2MikKKyAgSW5vZGUgdGFibGUgYXQgMTE5ODA5LTExOTg0MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE5ODQxLTEyMDM2OSwgMTIwMzcyLTEyMDgzMgorICBGcmVlIGlub2RlczogMjk5NTMtMzAyMDgKK0dyb3VwIDExODogKEJsb2NrcyAxMjA4MzMtMTIxODU2KQorICBCbG9jayBiaXRtYXAgYXQgMTIxNDA3ICgrNTc0KSwgSW5vZGUgYml0bWFwIGF0IDEyMTQwOCAoKzU3NSkKKyAgSW5vZGUgdGFibGUgYXQgMTIwODMzLTEyMDg2NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIwODY1LTEyMTQwNiwgMTIxNDA5LTEyMTg1NgorICBGcmVlIGlub2RlczogMzAyMDktMzA0NjQKK0dyb3VwIDExOTogKEJsb2NrcyAxMjE4NTctMTIyODgwKQorICBCbG9jayBiaXRtYXAgYXQgMTIyNDQ0ICgrNTg3KSwgSW5vZGUgYml0bWFwIGF0IDEyMjQ0NSAoKzU4OCkKKyAgSW5vZGUgdGFibGUgYXQgMTIxODU3LTEyMTg4OAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIxODg5LTEyMjQ0MywgMTIyNDQ2LTEyMjg4MAorICBGcmVlIGlub2RlczogMzA0NjUtMzA3MjAKK0dyb3VwIDEyMDogKEJsb2NrcyAxMjI4ODEtMTIzOTA0KQorICBCbG9jayBiaXRtYXAgYXQgMTIzNDgxICgrNjAwKSwgSW5vZGUgYml0bWFwIGF0IDEyMzQ4MiAoKzYwMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyODgxLTEyMjkxMgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIyOTEzLTEyMzQ4MCwgMTIzNDgzLTEyMzkwNAorICBGcmVlIGlub2RlczogMzA3MjEtMzA5NzYKK0dyb3VwIDEyMTogKEJsb2NrcyAxMjM5MDUtMTI0OTI4KQorICBCbG9jayBiaXRtYXAgYXQgMTI0NTE4ICgrNjEzKSwgSW5vZGUgYml0bWFwIGF0IDEyNDUxOSAoKzYxNCkKKyAgSW5vZGUgdGFibGUgYXQgMTIzOTA1LTEyMzkzNgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIzOTM3LTEyNDUxNywgMTI0NTIwLTEyNDkyOAorICBGcmVlIGlub2RlczogMzA5NzctMzEyMzIKK0dyb3VwIDEyMjogKEJsb2NrcyAxMjQ5MjktMTI1OTUyKQorICBCbG9jayBiaXRtYXAgYXQgMTI1NTU1ICgrNjI2KSwgSW5vZGUgYml0bWFwIGF0IDEyNTU1NiAoKzYyNykKKyAgSW5vZGUgdGFibGUgYXQgMTI0OTI5LTEyNDk2MAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI0OTYxLTEyNTU1NCwgMTI1NTU3LTEyNTk1MgorICBGcmVlIGlub2RlczogMzEyMzMtMzE0ODgKK0dyb3VwIDEyMzogKEJsb2NrcyAxMjU5NTMtMTI2OTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTI2NTkyICgrNjM5KSwgSW5vZGUgYml0bWFwIGF0IDEyNjU5MyAoKzY0MCkKKyAgSW5vZGUgdGFibGUgYXQgMTI1OTUzLTEyNTk4NAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI1OTg1LTEyNjU5MSwgMTI2NTk0LTEyNjk3NgorICBGcmVlIGlub2RlczogMzE0ODktMzE3NDQKK0dyb3VwIDEyNDogKEJsb2NrcyAxMjY5NzctMTI4MDAwKQorICBCbG9jayBiaXRtYXAgYXQgMTI3NjI5ICgrNjUyKSwgSW5vZGUgYml0bWFwIGF0IDEyNzYzMCAoKzY1MykKKyAgSW5vZGUgdGFibGUgYXQgMTI2OTc3LTEyNzAwOAorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI3MDA5LTEyNzYyOCwgMTI3NjMxLTEyODAwMAorICBGcmVlIGlub2RlczogMzE3NDUtMzIwMDAKK0dyb3VwIDEyNTogKEJsb2NrcyAxMjgwMDEtMTI5MDI0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMjgwMDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEyODAwMi0xMjgwMDUKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxMjgwMDYtMTI4MjYxCisgIEJsb2NrIGJpdG1hcCBhdCAxMjg0NTcgKCs0NTYpLCBJbm9kZSBiaXRtYXAgYXQgMTI4NDU4ICgrNDU3KQorICBJbm9kZSB0YWJsZSBhdCAxMjgyNjItMTI4MjkzICgrMjYxKQorICA3MjkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI4Mjk0LTEyODQ1NiwgMTI4NDU5LTEyOTAyNAorICBGcmVlIGlub2RlczogMzIwMDEtMzIyNTYKK0dyb3VwIDEyNjogKEJsb2NrcyAxMjkwMjUtMTMwMDQ4KQorICBCbG9jayBiaXRtYXAgYXQgMTI5NzAzICgrNjc4KSwgSW5vZGUgYml0bWFwIGF0IDEyOTcwNCAoKzY3OSkKKyAgSW5vZGUgdGFibGUgYXQgMTI5MDI1LTEyOTA1NgorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI5MDU3LTEyOTcwMiwgMTI5NzA1LTEzMDA0OAorICBGcmVlIGlub2RlczogMzIyNTctMzI1MTIKK0dyb3VwIDEyNzogKEJsb2NrcyAxMzAwNDktMTMxMDcxKQorICBCbG9jayBiaXRtYXAgYXQgMTMwNzQxICgrNjkyKSwgSW5vZGUgYml0bWFwIGF0IDEzMDc0MiAoKzY5MykKKyAgSW5vZGUgdGFibGUgYXQgMTMwMDQ5LTEzMDA4MAorICA5ODkgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMwMDgxLTEzMDc0MCwgMTMwNzQzLTEzMTA3MQorICBGcmVlIGlub2RlczogMzI1MTMtMzI3NjgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX3JhaWRfb3B0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX3JhaWRfb3B0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzg1OWUwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fcmFpZF9vcHQvc2NyaXB0CkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT049InJhaWQgb3B0aW9ucyIKK0ZTX1NJWkU9MTMxMDcyCitNS0UyRlNfT1BUUz0iLUUgc3RyaWRlPTEzIC1PIHNwYXJzZV9zdXBlciAtZyAxMDI0IgorRFVNUEUyRlNfSUdOT1JFXzgwQ09MPTEKK2V4cG9ydCBEVU1QRTJGU19JR05PUkVfODBDT0wKKy4gJGNtZF9kaXIvcnVuX21rZTJmcwordW5zZXQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9yb290X293bmVyL2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdF9vd25lci9leHBlY3QuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGQxMTllCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdF9vd25lci9leHBlY3QuMQpAQCAtMCwwICsxLDU0IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMTAyNCAxayBibG9ja3MgYW5kIDEyOCBpbm9kZXMKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitGaWxlc3lzdGVtIGZlYXR1cmVzOiBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIHNwYXJzZV9zdXBlcgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMzgvMTAyNCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBzcGFyc2Vfc3VwZXIKK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgKG5vbmUpCitGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitGaWxlc3lzdGVtIE9TIHR5cGU6ICAgICAgIExpbnV4CitJbm9kZSBjb3VudDogICAgICAgICAgICAgIDEyOAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDUxCitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDk4NgorRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAxMTcKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMworQmxvY2tzIHBlciBncm91cDogICAgICAgICA4MTkyCitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDgxOTIKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMTI4CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDE2CitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMTAyMykKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDMtNQorICBCbG9jayBiaXRtYXAgYXQgNiAoKzUpCisgIElub2RlIGJpdG1hcCBhdCA3ICgrNikKKyAgSW5vZGUgdGFibGUgYXQgOC0yMyAoKzcpCisgIDk4NiBmcmVlIGJsb2NrcywgMTE3IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzOC0xMDIzCisgIEZyZWUgaW5vZGVzOiAxMi0xMjgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX3Jvb3Rfb3duZXIvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdF9vd25lci9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJjNWVmNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX3Jvb3Rfb3duZXIvc2NyaXB0CkBAIC0wLDAgKzEsNCBAQAorREVTQ1JJUFRJT049InJvb3QgZGlyZWN0b3J5IG93bmVyIgorRlNfU0laRT0xMDI0CitNS0UyRlNfT1BUUz0iLUUgcm9vdF9vd25lcj0xMjM0OjEyMzQiCisuICRjbWRfZGlyL3J1bl9ta2UyZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX3Jvb3RkaXIvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdGRpci9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1YzE4ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX3Jvb3RkaXIvZXhwZWN0CkBAIC0wLDAgKzEsMTE3IEBACitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGh1Z2VfZmlsZSBkaXJfbmxpbmsgZXh0cmFfaXNpemUgbWV0YWRhdGFfY3N1bQorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMTAyNAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAxNjM4NAorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICA4MTkKK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgMTQ3ODYKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgMTAwNQorRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICA2NAorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAxMjcKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDUxMgorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAxMjgKK0ZsZXggYmxvY2sgZ3JvdXAgc2l6ZTogICAgMTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUmVxdWlyZWQgZXh0cmEgaXNpemU6ICAgICAzMgorRGVzaXJlZCBleHRyYSBpc2l6ZTogICAgICAzMgorSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CitKb3VybmFsIGJhY2t1cDogICAgICAgICAgIGlub2RlIGJsb2NrcworQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKK0pvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCitKb3VybmFsIHNpemU6ICAgICAgICAgICAgIDEwMjRrCitKb3VybmFsIGxlbmd0aDogICAgICAgICAgIDEwMjQKK0pvdXJuYWwgc2VxdWVuY2U6ICAgICAgICAgMHgwMDAwMDAwMQorSm91cm5hbCBzdGFydDogICAgICAgICAgICAwCisKKworR3JvdXAgMDogKEJsb2NrcyAxLTgxOTIpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzLTEyOQorICBCbG9jayBiaXRtYXAgYXQgMTMwICgrMTI5KQorICBJbm9kZSBiaXRtYXAgYXQgMTMyICgrMTMxKQorICBJbm9kZSB0YWJsZSBhdCAxMzQtMjYxICgrMTMzKQorICA3NzQ4IGZyZWUgYmxvY2tzLCA0OTMgZnJlZSBpbm9kZXMsIDQgZGlyZWN0b3JpZXMsIDQ5MyB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA0NDUtODE5MgorICBGcmVlIGlub2RlczogMjAtNTEyCitHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODMpIFtJTk9ERV9VTklOSVRdCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDgxOTUtODMyMQorICBCbG9jayBiaXRtYXAgYXQgMTMxIChiZyAjMCArIDEzMCkKKyAgSW5vZGUgYml0bWFwIGF0IDEzMyAoYmcgIzAgKyAxMzIpCisgIElub2RlIHRhYmxlIGF0IDI2Mi0zODkgKGJnICMwICsgMjYxKQorICA3MDM4IGZyZWUgYmxvY2tzLCA1MTIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDUxMiB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA5MzQ2LTE2MzgzCisgIEZyZWUgaW5vZGVzOiA1MTMtMTAyNAorZGVidWdmczogc3RhdCAvZW1wdHlmaWxlCitJbm9kZTogSUlJICAgVHlwZTogcmVndWxhciAgICAKK1NpemU6IDAKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvYmlnZmlsZQorSW5vZGU6IElJSSAgIFR5cGU6IHJlZ3VsYXIgICAgCitTaXplOiAzMjc2OAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitkZWJ1Z2ZzOiBzdGF0IC9zcGFyc2VmaWxlCitJbm9kZTogSUlJICAgVHlwZTogcmVndWxhciAgICAKK1NpemU6IDEwNzM3NDE4MjUKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvYmlnemVyb2ZpbGUKK0lub2RlOiBJSUkgICBUeXBlOiByZWd1bGFyICAgIAorU2l6ZTogMTA3Mzc0MTgyNQorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitkZWJ1Z2ZzOiBzdGF0IC9maWZvCitkZWJ1Z2ZzOiBzdGF0IC9lbXB0eWRpcgorSW5vZGU6IElJSSAgIFR5cGU6IGRpcmVjdG9yeSAgICAKK1NpemU6IDEwMjQKK0ZyYWdtZW50OiAgQWRkcmVzczogMCAgICBOdW1iZXI6IDAgICAgU2l6ZTogMAorZGVidWdmczogc3RhdCAvZGlyCitJbm9kZTogSUlJICAgVHlwZTogZGlyZWN0b3J5ICAgIAorU2l6ZTogMTAyNAorRnJhZ21lbnQ6ICBBZGRyZXNzOiAwICAgIE51bWJlcjogMCAgICBTaXplOiAwCitkZWJ1Z2ZzOiBzdGF0IC9kaXIvZmlsZQorSW5vZGU6IElJSSAgIFR5cGU6IHJlZ3VsYXIgICAgCitTaXplOiA4CitGcmFnbWVudDogIEFkZHJlc3M6IDAgICAgTnVtYmVyOiAwICAgIFNpemU6IDAKK2RlYnVnZnM6IGV4IC9lbXB0eWZpbGUKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworZGVidWdmczogZXggL2JpZ2ZpbGUKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworWCAwLzAgMS8xIDAtMzEgQUFBLUJCQiAzMiAKK2RlYnVnZnM6IGV4IC9zcGFyc2VmaWxlCitMZXZlbCBFbnRyaWVzICAgICAgICAgICBMb2dpY2FsICAgICAgUGh5c2ljYWwgTGVuZ3RoIEZsYWdzCitZIDAvMSAxLzEgMS0xMDQ4NTc2IEFBQSAxMDQ4NTc2CitYIDEvMSAxLzUgMS0xIEFBQS1CQkIgMSAKK1ggMS8xIDIvNSA1MTItNTEyIEFBQS1CQkIgMSAKK1ggMS8xIDMvNSAxMDI0LTEwMjQgQUFBLUJCQiAxIAorWCAxLzEgNC81IDUyNDI4OC01MjQyODggQUFBLUJCQiAxIAorWCAxLzEgNS81IDEwNDg1NzYtMTA0ODU3NiBBQUEtQkJCIDEgCitkZWJ1Z2ZzOiBleCAvYmlnemVyb2ZpbGUKK0xldmVsIEVudHJpZXMgICAgICAgICAgIExvZ2ljYWwgICAgICBQaHlzaWNhbCBMZW5ndGggRmxhZ3MKK2RlYnVnZnM6IGV4IC9kaXIKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworWCAwLzAgMS8xIDAtMCBBQUEtQkJCIDEgCitkZWJ1Z2ZzOiBleCAvZGlyL2ZpbGUKK0xldmVsIEVudHJpZXMgICAgICAgTG9naWNhbCAgICAgIFBoeXNpY2FsIExlbmd0aCBGbGFncworWCAwLzAgMS8xIDAtMCBBQUEtQkJCIDEgCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdC5pbWc6IDE5LzEwMjQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxNTk4LzE2Mzg0IGJsb2NrcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdGRpci9vdXRwdXQuc2VkIGIvZTJmc3Byb2dzL3Rlc3RzL21fcm9vdGRpci9vdXRwdXQuc2VkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNzY5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9yb290ZGlyL291dHB1dC5zZWQKQEAgLTAsMCArMSw1IEBACitzL15bWzpzcGFjZTpdXSpcKFswLTldKlwpXC9bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qXChbMC05XSpcKVwvW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKlwoWzAtOV0qXClbWzpzcGFjZTpdXSotW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKlswLTldKltbOnNwYWNlOl1dKi1bWzpzcGFjZTpdXSpbMC05XSpbWzpzcGFjZTpdXSpcKFswLTldKlwpL1ggXDFcL1wyIFwzXC9cNCBcNS1cNiBBQUEtQkJCIFw3L2cKK3MvXltbOnNwYWNlOl1dKlwoWzAtOV0qXClcL1tbOnNwYWNlOl1dKlwoWzAtOV0qXClbWzpzcGFjZTpdXSpcKFswLTldKlwpXC9bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qXChbMC05XSpcKVtbOnNwYWNlOl1dKi1bWzpzcGFjZTpdXSpcKFswLTldKlwpW1s6c3BhY2U6XV0qWzAtOV0qW1s6c3BhY2U6XV0qXChbMC05XSpcKS9ZIFwxXC9cMiBcM1wvXDQgXDUtXDYgQUFBIFw3L2cKK3MvTW9kZTouKiQvL2cKK3MvVXNlcjouKlNpemU6L1NpemU6L2cKK3MvXklub2RlOiBbMC05XSovSW5vZGU6IElJSS9nCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9yb290ZGlyL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9tX3Jvb3RkaXIvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZTFiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9yb290ZGlyL3NjcmlwdApAQCAtMCwwICsxLDcxIEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJjcmVhdGUgZnMgaW1hZ2UgZnJvbSBkaXIiCitNS0ZTX0RJUj0kVE1QRklMRS5kaXIKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKKworcm0gLXJmICRNS0ZTX0RJUgorbWtkaXIgLXAgJE1LRlNfRElSCit0b3VjaCAkTUtGU19ESVIvZW1wdHlmaWxlCitkZCBpZj0vZGV2L3plcm8gYnM9MTAyNCBjb3VudD0zMiAyPiAvZGV2L251bGwgfCB0ciAnXDAnICdhJyA+ICRNS0ZTX0RJUi9iaWdmaWxlCitlY2hvICJNIiB8IGRkIG9mPSRNS0ZTX0RJUi9zcGFyc2VmaWxlIGJzPTEgY291bnQ9MSBzZWVrPTEwMjQgMj4gL2Rldi9udWxsCitlY2hvICJNIiB8IGRkIG9mPSRNS0ZTX0RJUi9zcGFyc2VmaWxlIGJzPTEgY291bnQ9MSBzZWVrPTUyNDI4OCBjb252PW5vdHJ1bmMgMj4gL2Rldi9udWxsCitlY2hvICJNIiB8IGRkIG9mPSRNS0ZTX0RJUi9zcGFyc2VmaWxlIGJzPTEgY291bnQ9MSBzZWVrPTEwNDg1NzYgY29udj1ub3RydW5jIDI+IC9kZXYvbnVsbAorZWNobyAiTSIgfCBkZCBvZj0kTUtGU19ESVIvc3BhcnNlZmlsZSBicz0xIGNvdW50PTEgc2Vlaz01MzY4NzA5MTIgY29udj1ub3RydW5jIDI+IC9kZXYvbnVsbAorZWNobyAiTSIgfCBkZCBvZj0kTUtGU19ESVIvc3BhcnNlZmlsZSBicz0xIGNvdW50PTEgc2Vlaz0xMDczNzQxODI0IGNvbnY9bm90cnVuYyAyPiAvZGV2L251bGwKK2RkIGlmPS9kZXYvemVybyBvZj0kTUtGU19ESVIvYmlnemVyb2ZpbGUgYnM9MSBjb3VudD0xIHNlZWs9MTA3Mzc0MTgyNCAyPiAvZGV2L251bGwKK2xuICRNS0ZTX0RJUi9iaWd6ZXJvZmlsZSAkTUtGU19ESVIvYmlnemVyb2ZpbGVfaGFyZGxpbmsKK2xuIC1zIC9zaWxseV9ic19saW5rICRNS0ZTX0RJUi9zaWxseV9ic19saW5rCitta2RpciAkTUtGU19ESVIvZW1wdHlkaXIKK21rZGlyICRNS0ZTX0RJUi9kaXIKK2VjaG8gIlRlc3QgbWUiID4gJE1LRlNfRElSL2Rpci9maWxlCisKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBtZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0IC1kICRNS0ZTX0RJUiAkVE1QRklMRSAxNjM4NCA+ICRPVVQgMj4mMQorCiskRFVNUEUyRlMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjYXQgPiAkVE1QRklMRS5jbWQgPDwgRU5ETAorc3RhdCAvZW1wdHlmaWxlCitzdGF0IC9iaWdmaWxlCitzdGF0IC9zcGFyc2VmaWxlCitzdGF0IC9iaWd6ZXJvZmlsZQorc3RhdCAvZmlmbworc3RhdCAvZW1wdHlkaXIKK3N0YXQgL2Rpcgorc3RhdCAvZGlyL2ZpbGUKK0VOREwKKyRERUJVR0ZTIC1mICRUTVBGSUxFLmNtZCAkVE1QRklMRSAyPiYxIHwgZWdyZXAgIihzdGF0fFNpemU6fFR5cGU6KSIgfCBzZWQgLWYgJHRlc3RfZGlyL291dHB1dC5zZWQgPj4gJE9VVAorCitjYXQgPiAkVE1QRklMRS5jbWQgPDwgRU5ETAorZXggL2VtcHR5ZmlsZQorZXggL2JpZ2ZpbGUKK2V4IC9zcGFyc2VmaWxlCitleCAvYmlnemVyb2ZpbGUKK2V4IC9kaXIKK2V4IC9kaXIvZmlsZQorRU5ETAorJERFQlVHRlMgLWYgJFRNUEZJTEUuY21kICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJHRlc3RfZGlyL291dHB1dC5zZWQgPj4gJE9VVCAyPiYxCisKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIDwgJE9VVCA+ICRPVVQudG1wCittdiAkT1VULnRtcCAkT1VUCisKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisgICAgICAgIGVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisgICAgICAgIGRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKworcm0gLXJmICRUTVBGSUxFLmNtZCAkTUtGU19ESVIgJE9VVC5zZWQKK3Vuc2V0IE1LRlNfRElSIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbV9zdGQvZXhwZWN0LjEgYi9lMmZzcHJvZ3MvdGVzdHMvbV9zdGQvZXhwZWN0LjEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA1MDMxZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9tX3N0ZC9leHBlY3QuMQpAQCAtMCwwICsxLDEwNSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDY1NTM2IDFrIGJsb2NrcyBhbmQgMTYzODQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDMzNjQvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxNjM4NAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAzMjc2CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDYyMTcyCitGcmVlIGlub2RlczogICAgICAgICAgICAgIDE2MzczCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1NQorQmxvY2tzIHBlciBncm91cDogICAgICAgICA4MTkyCitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDgxOTIKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMjA0OAorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAyNTYKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS04MTkyKQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0yCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMy0yNTcKKyAgQmxvY2sgYml0bWFwIGF0IDI1OCAoKzI1NyksIElub2RlIGJpdG1hcCBhdCAyNTkgKCsyNTgpCisgIElub2RlIHRhYmxlIGF0IDI2MC01MTUgKCsyNTkpCisgIDc2NjMgZnJlZSBibG9ja3MsIDIwMzcgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzMC04MTkyCisgIEZyZWUgaW5vZGVzOiAxMi0yMDQ4CitHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDgxOTUtODQ0OQorICBCbG9jayBiaXRtYXAgYXQgODQ1MCAoKzI1NyksIElub2RlIGJpdG1hcCBhdCA4NDUxICgrMjU4KQorICBJbm9kZSB0YWJsZSBhdCA4NDUyLTg3MDcgKCsyNTkpCisgIDc2NzcgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MDgtMTYzODQKKyAgRnJlZSBpbm9kZXM6IDIwNDktNDA5NgorR3JvdXAgMjogKEJsb2NrcyAxNjM4NS0yNDU3NikKKyAgQmxvY2sgYml0bWFwIGF0IDE2Mzg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjM4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2Mzg3LTE2NjQyICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTY2NDMtMjQ1NzYKKyAgRnJlZSBpbm9kZXM6IDQwOTctNjE0NAorR3JvdXAgMzogKEJsb2NrcyAyNDU3Ny0zMjc2OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjQ1NzcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI0NTc4LTI0NTc4CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjQ1NzktMjQ4MzMKKyAgQmxvY2sgYml0bWFwIGF0IDI0ODM0ICgrMjU3KSwgSW5vZGUgYml0bWFwIGF0IDI0ODM1ICgrMjU4KQorICBJbm9kZSB0YWJsZSBhdCAyNDgzNi0yNTA5MSAoKzI1OSkKKyAgNzY3NyBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjUwOTItMzI3NjgKKyAgRnJlZSBpbm9kZXM6IDYxNDUtODE5MgorR3JvdXAgNDogKEJsb2NrcyAzMjc2OS00MDk2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDMyNzY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMjc3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMyNzcxLTMzMDI2ICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzMwMjctNDA5NjAKKyAgRnJlZSBpbm9kZXM6IDgxOTMtMTAyNDAKK0dyb3VwIDU6IChCbG9ja3MgNDA5NjEtNDkxNTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDQwOTYxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA0MDk2Mi00MDk2MgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDQwOTYzLTQxMjE3CisgIEJsb2NrIGJpdG1hcCBhdCA0MTIxOCAoKzI1NyksIElub2RlIGJpdG1hcCBhdCA0MTIxOSAoKzI1OCkKKyAgSW5vZGUgdGFibGUgYXQgNDEyMjAtNDE0NzUgKCsyNTkpCisgIDc2NzcgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQxNDc2LTQ5MTUyCisgIEZyZWUgaW5vZGVzOiAxMDI0MS0xMjI4OAorR3JvdXAgNjogKEJsb2NrcyA0OTE1My01NzM0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ5MTUzICgrMCksIElub2RlIGJpdG1hcCBhdCA0OTE1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ5MTU1LTQ5NDEwICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDk0MTEtNTczNDQKKyAgRnJlZSBpbm9kZXM6IDEyMjg5LTE0MzM2CitHcm91cCA3OiAoQmxvY2tzIDU3MzQ1LTY1NTM1KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA1NzM0NSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNTczNDYtNTczNDYKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA1NzM0Ny01NzYwMQorICBCbG9jayBiaXRtYXAgYXQgNTc2MDIgKCsyNTcpLCBJbm9kZSBiaXRtYXAgYXQgNTc2MDMgKCsyNTgpCisgIElub2RlIHRhYmxlIGF0IDU3NjA0LTU3ODU5ICgrMjU5KQorICA3Njc2IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1Nzg2MC02NTUzNQorICBGcmVlIGlub2RlczogMTQzMzctMTYzODQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX3N0ZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV9zdGQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYzUwYzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV9zdGQvc2NyaXB0CkBAIC0wLDAgKzEsNiBAQAorREVTQ1JJUFRJT049InN0YW5kYXJkIGZpbGVzeXN0ZW0gb3B0aW9ucyIKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCitGU19TSVpFPTY1NTM2CisuICRjbWRfZGlyL3J1bl9ta2UyZnMKK3Vuc2V0IERVTVBFMkZTX0lHTk9SRV84MENPTApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL21fdW5pbml0L2V4cGVjdC4xIGIvZTJmc3Byb2dzL3Rlc3RzL21fdW5pbml0L2V4cGVjdC4xCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ODZkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV91bmluaXQvZXhwZWN0LjEKQEAgLTAsMCArMSwxNTUgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAxMzEwNzIgMWsgYmxvY2tzIGFuZCAzMjc2OCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6IGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIHVuaW5pdF9iZworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMzI3NjggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1NjkxLzEzMTA3MiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBzcGFyc2Vfc3VwZXIgdW5pbml0X2JnCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAzMjc2OAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICAxMzEwNzIKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgNjU1MworRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxMjUzODEKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgMzI3NTcKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMjU2CitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorSW5vZGVzIHBlciBncm91cDogICAgICAgICAyMDQ4CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDI1NgorTW91bnQgY291bnQ6ICAgICAgICAgICAgICAwCitDaGVjayBpbnRlcnZhbDogICAgICAgICAgIDE1NTUyMDAwICg2IG1vbnRocykKK1Jlc2VydmVkIGJsb2NrcyB1aWQ6ICAgICAgMAorUmVzZXJ2ZWQgYmxvY2tzIGdpZDogICAgICAwCitGaXJzdCBpbm9kZTogICAgICAgICAgICAgIDExCitJbm9kZSBzaXplOgkgICAgICAgICAgMTI4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisKKworR3JvdXAgMDogKEJsb2NrcyAxLTgxOTIpIFtJVEFCTEVfWkVST0VEXQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0yCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMy0yNTgKKyAgQmxvY2sgYml0bWFwIGF0IDI1OSAoKzI1OCksIElub2RlIGJpdG1hcCBhdCAyNjAgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDI2MS01MTYgKCsyNjApCisgIDc2NjIgZnJlZSBibG9ja3MsIDIwMzcgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMsIDIwMzcgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogNTMxLTgxOTIKKyAgRnJlZSBpbm9kZXM6IDEyLTIwNDgKK0dyb3VwIDE6IChCbG9ja3MgODE5My0xNjM4NCkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4MTk0LTgxOTQKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4MTk1LTg0NTAKKyAgQmxvY2sgYml0bWFwIGF0IDg0NTEgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgODQ1MiAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgODQ1My04NzA4ICgrMjYwKQorICA3Njc2IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAyMDQ4IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDg3MDktMTYzODQKKyAgRnJlZSBpbm9kZXM6IDIwNDktNDA5NgorR3JvdXAgMjogKEJsb2NrcyAxNjM4NS0yNDU3NikgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCbG9jayBiaXRtYXAgYXQgMTYzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2Mzg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYzODctMTY2NDIgKCsyKQorICA3OTM0IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAyMDQ4IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDE2NjQzLTI0NTc2CisgIEZyZWUgaW5vZGVzOiA0MDk3LTYxNDQKK0dyb3VwIDM6IChCbG9ja3MgMjQ1NzctMzI3NjgpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjQ1NzcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI0NTc4LTI0NTc4CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjQ1NzktMjQ4MzQKKyAgQmxvY2sgYml0bWFwIGF0IDI0ODM1ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDI0ODM2ICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCAyNDgzNy0yNTA5MiAoKzI2MCkKKyAgNzY3NiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAyNTA5My0zMjc2OAorICBGcmVlIGlub2RlczogNjE0NS04MTkyCitHcm91cCA0OiAoQmxvY2tzIDMyNzY5LTQwOTYwKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVQsIElUQUJMRV9aRVJPRURdCisgIEJsb2NrIGJpdG1hcCBhdCAzMjc2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzI3NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMjc3MS0zMzAyNiAoKzIpCisgIDc5MzQgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDIwNDggdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMzMwMjctNDA5NjAKKyAgRnJlZSBpbm9kZXM6IDgxOTMtMTAyNDAKK0dyb3VwIDU6IChCbG9ja3MgNDA5NjEtNDkxNTIpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNDA5NjEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDQwOTYyLTQwOTYyCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNDA5NjMtNDEyMTgKKyAgQmxvY2sgYml0bWFwIGF0IDQxMjE5ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDQxMjIwICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA0MTIyMS00MTQ3NiAoKzI2MCkKKyAgNzY3NiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA0MTQ3Ny00OTE1MgorICBGcmVlIGlub2RlczogMTAyNDEtMTIyODgKK0dyb3VwIDY6IChCbG9ja3MgNDkxNTMtNTczNDQpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmxvY2sgYml0bWFwIGF0IDQ5MTUzICgrMCksIElub2RlIGJpdG1hcCBhdCA0OTE1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ5MTU1LTQ5NDEwICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA0OTQxMS01NzM0NAorICBGcmVlIGlub2RlczogMTIyODktMTQzMzYKK0dyb3VwIDc6IChCbG9ja3MgNTczNDUtNjU1MzYpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTczNDUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDU3MzQ2LTU3MzQ2CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNTczNDctNTc2MDIKKyAgQmxvY2sgYml0bWFwIGF0IDU3NjAzICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDU3NjA0ICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA1NzYwNS01Nzg2MCAoKzI2MCkKKyAgNzY3NiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA1Nzg2MS02NTUzNgorICBGcmVlIGlub2RlczogMTQzMzctMTYzODQKK0dyb3VwIDg6IChCbG9ja3MgNjU1MzctNzM3MjgpIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmxvY2sgYml0bWFwIGF0IDY1NTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2NTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY1NTM5LTY1Nzk0ICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA2NTc5NS03MzcyOAorICBGcmVlIGlub2RlczogMTYzODUtMTg0MzIKK0dyb3VwIDk6IChCbG9ja3MgNzM3MjktODE5MjApIFtJTk9ERV9VTklOSVQsIEJMT0NLX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNzM3MjksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDczNzMwLTczNzMwCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNzM3MzEtNzM5ODYKKyAgQmxvY2sgYml0bWFwIGF0IDczOTg3ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDczOTg4ICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA3Mzk4OS03NDI0NCAoKzI2MCkKKyAgNzY3NiBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiA3NDI0NS04MTkyMAorICBGcmVlIGlub2RlczogMTg0MzMtMjA0ODAKK0dyb3VwIDEwOiAoQmxvY2tzIDgxOTIxLTkwMTEyKSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVQsIElUQUJMRV9aRVJPRURdCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODE5MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTkyMy04MjE3OCAoKzIpCisgIDc5MzQgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDIwNDggdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogODIxNzktOTAxMTIKKyAgRnJlZSBpbm9kZXM6IDIwNDgxLTIyNTI4CitHcm91cCAxMTogKEJsb2NrcyA5MDExMy05ODMwNCkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCbG9jayBiaXRtYXAgYXQgOTAxMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkwMTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTAxMTUtOTAzNzAgKCsyKQorICA3OTM0IGZyZWUgYmxvY2tzLCAyMDQ4IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAyMDQ4IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDkwMzcxLTk4MzA0CisgIEZyZWUgaW5vZGVzOiAyMjUyOS0yNDU3NgorR3JvdXAgMTI6IChCbG9ja3MgOTgzMDUtMTA2NDk2KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVQsIElUQUJMRV9aRVJPRURdCisgIEJsb2NrIGJpdG1hcCBhdCA5ODMwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTgzMDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5ODMwNy05ODU2MiAoKzIpCisgIDc5MzQgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDIwNDggdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogOTg1NjMtMTA2NDk2CisgIEZyZWUgaW5vZGVzOiAyNDU3Ny0yNjYyNAorR3JvdXAgMTM6IChCbG9ja3MgMTA2NDk3LTExNDY4OCkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCbG9jayBiaXRtYXAgYXQgMTA2NDk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDY0OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDY0OTktMTA2NzU0ICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAxMDY3NTUtMTE0Njg4CisgIEZyZWUgaW5vZGVzOiAyNjYyNS0yODY3MgorR3JvdXAgMTQ6IChCbG9ja3MgMTE0Njg5LTEyMjg4MCkgW0lOT0RFX1VOSU5JVCwgQkxPQ0tfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCbG9jayBiaXRtYXAgYXQgMTE0Njg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTQ2OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTQ2OTEtMTE0OTQ2ICgrMikKKyAgNzkzNCBmcmVlIGJsb2NrcywgMjA0OCBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgMjA0OCB1bnVzZWQgaW5vZGVzCisgIEZyZWUgYmxvY2tzOiAxMTQ5NDctMTIyODgwCisgIEZyZWUgaW5vZGVzOiAyODY3My0zMDcyMAorR3JvdXAgMTU6IChCbG9ja3MgMTIyODgxLTEzMTA3MSkgW0lOT0RFX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgQmxvY2sgYml0bWFwIGF0IDEyMjg4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIyODgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyODgzLTEyMzEzOCAoKzIpCisgIDc5MzMgZnJlZSBibG9ja3MsIDIwNDggZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDIwNDggdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMTIzMTM5LTEzMTA3MQorICBGcmVlIGlub2RlczogMzA3MjEtMzI3NjgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9tX3VuaW5pdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvbV91bmluaXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZDM3M2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvbV91bmluaXQvc2NyaXB0CkBAIC0wLDAgKzEsNyBAQAorREVTQ1JJUFRJT049InVuaW5pdGlhbGl6ZWQgZ3JvdXAgZmVhdHVyZSIKK0RVTVBFMkZTX0lHTk9SRV84MENPTD0xCitleHBvcnQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCitGU19TSVpFPTEzMTA3MgorTUtFMkZTX09QVFM9Ii1PIHVuaW5pdF9iZyIKKy4gJGNtZF9kaXIvcnVuX21rZTJmcwordW5zZXQgRFVNUEUyRlNfSUdOT1JFXzgwQ09MCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvbWtlMmZzLmNvbmYuaW4gYi9lMmZzcHJvZ3MvdGVzdHMvbWtlMmZzLmNvbmYuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2MDUwZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9ta2UyZnMuY29uZi5pbgpAQCAtMCwwICsxLDQ5IEBACitbZGVmYXVsdHNdCisJYmFzZV9mZWF0dXJlcyA9IHNwYXJzZV9zdXBlcixmaWxldHlwZSxyZXNpemVfaW5vZGUsZGlyX2luZGV4LGV4dF9hdHRyCisJYmxvY2tzaXplID0gNDA5NgorCWlub2RlX3NpemUgPSAyNTYKKwlpbm9kZV9yYXRpbyA9IDE2Mzg0CisJcmVzZXJ2ZWRfcmF0aW8gPSA1LjAKKwllbmFibGVfcGVyaW9kaWNfZnNjayA9IHRydWUKKwlsYXp5X2l0YWJsZV9pbml0ID0gZmFsc2UKKwlub19kaXNjYXJkID0gdHJ1ZQorCWRlZmF1bHRfbW50b3B0cyA9IF5hY2wKKworW2ZzX3R5cGVzXQorCWV4dDMgPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwKKwl9CisJZXh0NCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZQorCQlpbm9kZV9zaXplID0gMjU2CisJfQorCWV4dDRkZXYgPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQlvcHRpb25zID0gdGVzdF9mcz0xCisJfQorCXNtYWxsID0geworCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAxMjgKKwkJaW5vZGVfcmF0aW8gPSA0MDk2CisJfQorCWZsb3BweSA9IHsKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMTI4CisJCWlub2RlX3JhdGlvID0gODE5MgorCX0KKwluZXdzID0geworCQlpbm9kZV9yYXRpbyA9IDQwOTYKKwl9CisJbGFyZ2VmaWxlID0geworCQlpbm9kZV9yYXRpbyA9IDEwNDg1NzYKKwkJYmxvY2tzaXplID0gNDA5NgorCX0KKwlsYXJnZWZpbGU0ID0geworCQlpbm9kZV9yYXRpbyA9IDQxOTQzMDQKKwkJYmxvY2tzaXplID0gNDA5NgorCX0KKwlodXJkID0geworCSAgICAgYmxvY2tzaXplID0gNDA5NgorCSAgICAgaW5vZGVfc2l6ZSA9IDEyOAorCX0KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy9NYWtlZmlsZS5pbiBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmEzMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL01ha2VmaWxlLmluCkBAIC0wLDAgKzEsODAgQEAKKyMKKyMgU3RhbmRhcmQgZTJmc3Byb2dzIHByb2xvZ3VlLi4uLgorIworCitzcmNkaXIgPSBAc3JjZGlyQAordG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAorVlBBVEggPSBAc3JjZGlyQAordG9wX2J1aWxkZGlyID0gLi4vLi4KK215X2RpciA9IHRlc3RzL3Byb2dzCitJTlNUQUxMID0gQElOU1RBTExACisKK0BNQ09ORklHQAorCitNS19DTURTPQlfU1NfRElSX09WRVJSSURFPSQoc3JjZGlyKS8uLi8uLi9saWIvc3MgLi4vLi4vbGliL3NzL21rX2NtZHMKKworUFJPR1M9CQl0ZXN0X2ljb3VudCBjcmNzdW0KKworVEVTVF9SRUxfT0JKUz0JdGVzdF9yZWwubyB0ZXN0X3JlbF9jbWRzLm8KKworVEVTVF9JQ09VTlRfT0JKUz0JdGVzdF9pY291bnQubyB0ZXN0X2ljb3VudF9jbWRzLm8KKworU1JDUz0JJChzcmNkaXIpL3Rlc3RfcmVsLmMgCisKK0xJQlM9ICQoTElCRVhUMkZTKSAkKExJQlNTKSAkKExJQkNPTV9FUlIpICQoU1lTTElCUykKK0RFUExJQlM9ICQoTElCRVhUMkZTKSAkKERFUExJQlNTKSAkKERFUExJQkNPTV9FUlIpCisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChDQykgLWMgJChBTExfQ0ZMQUdTKSAkPCAtbyAkQAorCSQoUSkgJChDSEVDS19DTUQpICQoQUxMX0NGTEFHUykgJDwKKwkkKFEpICQoQ1BQQ0hFQ0tfQ01EKSAkKENQUEZMQUdTKSAkPAorCithbGw6OiAkKFBST0dTKQorCit0ZXN0X3JlbDogJChURVNUX1JFTF9PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChMRCkgJChBTExfTERGTEFHUykgLW8gdGVzdF9yZWwgJChURVNUX1JFTF9PQkpTKSAkKExJQlMpCisKK2NyY3N1bTogY3Jjc3VtLm8gJChERVBMSUJTKQorCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoTEQpICQoQUxMX0xERkxBR1MpIC1vIGNyY3N1bSBjcmNzdW0ubyAkKExJQlMpCisKK3Rlc3RfcmVsX2NtZHMuYzogdGVzdF9yZWxfY21kcy5jdAorCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgJChNS19DTURTKSAkKHNyY2RpcikvdGVzdF9yZWxfY21kcy5jdAorCit0ZXN0X2ljb3VudDogJChURVNUX0lDT1VOVF9PQkpTKSAkKERFUExJQlMpCisJJChFKSAiCUxEICRAIgorCSQoUSkgJChMRCkgJChBTExfTERGTEFHUykgLW8gdGVzdF9pY291bnQgJChURVNUX0lDT1VOVF9PQkpTKSAkKExJQlMpCisKK3Rlc3RfaWNvdW50X2NtZHMuYzogdGVzdF9pY291bnRfY21kcy5jdAorCSQoRSkgIglNS19DTURTICRAIgorCSQoUSkgJChNS19DTURTKSAkKHNyY2RpcikvdGVzdF9pY291bnRfY21kcy5jdAorCitjbGVhbjo6CisJJChSTSkgLWYgJChQUk9HUykgdGVzdF9yZWxfY21kcy5jIHRlc3RfaWNvdW50X2NtZHMuYyBcCisJCVwjKiAqLnMgKi5vICouYSAqfiBjb3JlCisKK2luc3RhbGw6CisKK2luc3RhbGwtc3RyaXA6CisKK3VuaW5zdGFsbDoKKworbW9zdGx5Y2xlYW46IGNsZWFuCitkaXN0Y2xlYW46IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBNYWtlZmlsZSAkKHNyY2RpcikvVEFHUyAkKHNyY2RpcikvTWFrZWZpbGUuaW4ub2xkCisKKyMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysKKyMgCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpbgorIyB0aGUgTWFrZWZpbGUuaW4gZmlsZQorIwordGVzdF9yZWwubzogJChzcmNkaXIpL3Rlc3RfcmVsLmMgJCh0b3Bfc3JjZGlyKS9saWIvZXQvY29tX2Vyci5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9zcy9zcy5oICQodG9wX2J1aWxkZGlyKS9saWIvc3Mvc3NfZXJyLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9leHQyX2ZzLmggJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml90eXBlcy5oIFwKKyAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvZXh0MmZzLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2V4dDJfaW8uaCBcCisgJCh0b3BfYnVpbGRkaXIpL2xpYi9leHQyZnMvZXh0Ml9lcnIuaCAkKHRvcF9zcmNkaXIpL2xpYi9leHQyZnMvYml0b3BzLmggXAorICQodG9wX3NyY2RpcikvbGliL2V4dDJmcy9pcmVsLmggJCh0b3Bfc3JjZGlyKS9saWIvZXh0MmZzL2JyZWwuaCBcCisgJChzcmNkaXIpL3Rlc3RfcmVsLmgKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy9jcmNzdW0uYyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy9jcmNzdW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Nzk0ZTEwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL2NyY3N1bS5jCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBjcmNzdW0uYworICoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgImV0L2NvbV9lcnIuaCIKKyNpbmNsdWRlICJzcy9zcy5oIgorI2luY2x1ZGUgImV4dDJmcy9leHQyZnMuaCIKKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CQljOworCXVpbnQzMl90CWNyYyA9IH4wOworCXVpbnQzMl90CSgqY3N1bV9mdW5jKSh1aW50MzJfdCBjcmMsIHVuc2lnbmVkIGNoYXIgY29uc3QgKnAsCisJCQkJICAgICBzaXplX3QgbGVuKTsKKwlGSUxFCQkqZjsKKworCWNzdW1fZnVuYyA9IGV4dDJmc19jcmMzMmNfbGU7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJoIikpICE9IEVPRikgeworCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAnaCc6CisJCWRlZmF1bHQ6CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogY3Jjc3VtIFtmaWxlXVxuIik7CisJCQlyZXR1cm4gMTsKKwkJfQorCX0KKworCWlmIChvcHRpbmQgPT0gYXJnYykKKwkJZiA9IHN0ZGluOworCWVsc2UgeworCQlmID0gZm9wZW4oYXJndltvcHRpbmRdLCAiciIpOworCQlpZiAoIWYpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgZXJybm8sICJ3aGlsZSB0cnlpbmcgdG8gb3BlbiAlc1xuIiwKKwkJCQlhcmd2W29wdGluZF0pOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCXdoaWxlICghZmVvZihmKSkgeworCQl1bnNpZ25lZCBjaGFyIGJ1Zls0MDk2XTsKKworCQlpbnQgYyA9IGZyZWFkKGJ1ZiwgMSwgc2l6ZW9mKGJ1ZiksIGYpOworCisJCWlmIChjKQorCQkJY3JjID0gY3N1bV9mdW5jKGNyYywgYnVmLCBjKTsKKwl9CisJcHJpbnRmKCIldVxuIiwgY3JjKTsKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy9ob2xkX2lub2RlLmMgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvaG9sZF9pbm9kZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MmFhNzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvaG9sZF9pbm9kZS5jCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBob2xkX2lub2RlLmMgLS0tIHRlc3QgcHJvZ3JhbSB3aGljaCBob2xkcyBhbiBpbm9kZSBvciBkaXJlY3RvcnkKKyAqIG9wZW4uCisgKgorICogQ29weXJpZ2h0IChDKSAyMDAwIFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKworbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJc3RydWN0IHN0YXQJc3RhdGJ1ZjsKKwljaGFyICpmaWxlbmFtZTsKKworCWlmIChhcmdjICE9IDIpIHsKKwkJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgZGlyXG4iLCBhcmd2WzBdKTsKKwkJZXhpdCgxKTsKKwl9CisJZmlsZW5hbWUgPSBhcmd2WzFdOworCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1ZikgPCAwKSB7CisJCXBlcnJvcihmaWxlbmFtZSk7CisJCWV4aXQoMSk7CisJfQorCWlmIChTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpIHsKKwkJaWYgKCFvcGVuZGlyKGZpbGVuYW1lKSkgeworCQkJcGVycm9yKGZpbGVuYW1lKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAob3BlbihmaWxlbmFtZSwgT19SRE9OTFkpIDwgMCkgeworCQkJcGVycm9yKGZpbGVuYW1lKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJc2xlZXAoMzApOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3JhbmRvbV9leGVyY2lzZS5jIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3JhbmRvbV9leGVyY2lzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4MjE3YWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvcmFuZG9tX2V4ZXJjaXNlLmMKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiByYW5kb21fZXhlcmNpc2UuYyAtLS0gVGVzdCBwcm9ncmFtIHdoaWNoIGV4ZXJjaXNlcyBhbiBleHQyCisgKiAJZmlsZXN5c3RlbS4gIEl0IGNyZWF0ZXMgYSBsb3Qgb2YgcmFuZG9tIGZpbGVzIGluIHRoZSBjdXJyZW50CisgKiAJZGlyZWN0b3J5LCB3aGlsZSBob2xkaW5nIHNvbWUgZmlsZXMgb3BlbiB3aGlsZSB0aGV5IGFyZSBiZWluZworICogCWRlbGV0ZWQuICBUaGlzIGV4ZXJjaXNlcyB0aGUgb3JwaGFuIGxpc3QgY29kZSwgYXMgd2VsbCBhcworICogCWNyZWF0aW5nIGxvdHMgb2YgZm9kZGVyIGZvciB0aGUgZXh0MyBqb3VybmFsLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjZGVmaW5lIE1BWEZEUwkxMjgKKworc3RydWN0IHN0YXRlIHsKKwljaGFyCW5hbWVbMTZdOworCWludAlzdGF0ZTsKKwlpbnQJaXNkaXI7Cit9OworCisjZGVmaW5lIFNUQVRFX0NMRUFSCTAKKyNkZWZpbmUgU1RBVEVfQ1JFQVRFRAkxCisjZGVmaW5lIFNUQVRFX0RFTEVURUQJMgorCitzdHJ1Y3Qgc3RhdGUgc3RhdGVfYXJyYXlbTUFYRkRTXTsKKworI2RlZmluZSBEQVRBX1NJWkUgNjU1MzYKKworY2hhciBkYXRhX2J1ZmZlcltEQVRBX1NJWkVdOworCit2b2lkIGNsZWFyX3N0YXRlX2FycmF5KCkKK3sKKwlpbnQJaTsKKworCWZvciAoaSA9IDA7IGkgPCBNQVhGRFM7IGkrKykKKwkJc3RhdGVfYXJyYXlbaV0uc3RhdGUgPSBTVEFURV9DTEVBUjsKK30KKworaW50IGdldF9yYW5kb21fZmQoKQoreworCWludAlmZDsKKworCXdoaWxlICgxKSB7CisJCWZkID0gKChpbnQpIHJhbmRvbSgpKSAlIE1BWEZEUzsKKwkJaWYgKGZkID4gMikKKwkJCXJldHVybiBmZDsKKwl9Cit9CisKK3Vuc2lnbmVkIGludCBnZXRfaW5vZGVfbnVtKGludCBmZCkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKworCWlmIChmc3RhdChmZCwgJnN0KSA8IDApIHsKKwkJcGVycm9yKCJmc3RhdCIpOworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIHN0LnN0X2lubzsKK30KKworCit2b2lkIGNyZWF0ZV9yYW5kb21fZmlsZSgpCit7CisJY2hhciB0ZW1wbGF0ZVsxNl0gPSAiRVguWFhYWFhYIjsKKwlpbnQJZmQ7CisJaW50CWlzZGlyID0gMDsKKwlpbnQJc2l6ZTsKKworCW1rdGVtcCh0ZW1wbGF0ZSk7CisJaXNkaXIgPSByYW5kb20oKSAmIDE7CisJaWYgKGlzZGlyKSB7CisJCWlmIChta2Rpcih0ZW1wbGF0ZSwgMDcwMCkgPCAwKQorCQkJcmV0dXJuOworCQlmZCA9IG9wZW4odGVtcGxhdGUsIE9fUkRPTkxZLCAwNjAwKTsKKwkJcHJpbnRmKCJDcmVhdGVkIHRlbXAgZGlyZWN0b3J5ICVzLCBmZCA9ICVkXG4iLAorCQkgICAgICAgdGVtcGxhdGUsIGZkKTsKKwl9IGVsc2UgeworCQlzaXplID0gcmFuZG9tKCkgJiAoREFUQV9TSVpFLTEpOworCQlmZCA9IG9wZW4odGVtcGxhdGUsIE9fQ1JFQVR8T19SRFdSLCAwNjAwKTsKKwkJd3JpdGUoZmQsIGRhdGFfYnVmZmVyLCBzaXplKTsKKwkJcHJpbnRmKCJDcmVhdGVkIHRlbXAgZmlsZSAlcywgZmQgPSAlZCwgc2l6ZT0lZFxuIiwKKwkJICAgICAgIHRlbXBsYXRlLCBmZCwgc2l6ZSk7CisJfQorCXN0YXRlX2FycmF5W2ZkXS5pc2RpciA9IGlzZGlyOworCWlmIChmZCA8IDApCisJCXJldHVybjsKKwlzdGF0ZV9hcnJheVtmZF0uaXNkaXIgPSBpc2RpcjsKKwlzdGF0ZV9hcnJheVtmZF0uc3RhdGUgPSBTVEFURV9DUkVBVEVEOworCXN0cmNweShzdGF0ZV9hcnJheVtmZF0ubmFtZSwgdGVtcGxhdGUpOworfQorCit2b2lkIHRydW5jYXRlX2ZpbGUoaW50IGZkKQoreworCWludAlzaXplOworCisJc2l6ZSA9IHJhbmRvbSgpICYgKERBVEFfU0laRS0xKTsKKworCWlmIChzdGF0ZV9hcnJheVtmZF0uaXNkaXIpCisJCXJldHVybjsKKworCWZ0cnVuY2F0ZShmZCwgc2l6ZSk7CisJcHJpbnRmKCJUcnVuY2F0aW5nIHRlbXAgZmlsZSAlcywgZmQgPSAlZCwgaW5vPSV1LCBzaXplPSVkXG4iLAorCSAgICAgICBzdGF0ZV9hcnJheVtmZF0ubmFtZSwgZmQsIGdldF9pbm9kZV9udW0oZmQpLCBzaXplKTsKK30KKworCit2b2lkIHVubGlua19maWxlKGludCBmZCkKK3sKKwljaGFyICpmaWxlbmFtZSA9IHN0YXRlX2FycmF5W2ZkXS5uYW1lOworCisJcHJpbnRmKCJEZWxldGluZyAlcywgZmQgPSAlZCwgaW5vID0gJXVcbiIsIGZpbGVuYW1lLCBmZCwKKwkgICAgICAgZ2V0X2lub2RlX251bShmZCkpOworCisJaWYgKHN0YXRlX2FycmF5W2ZkXS5pc2RpcikKKwkJcm1kaXIoZmlsZW5hbWUpOworCWVsc2UKKwkJdW5saW5rKGZpbGVuYW1lKTsKKwlzdGF0ZV9hcnJheVtmZF0uc3RhdGUgPSBTVEFURV9ERUxFVEVEOworfQorCit2b2lkIGNsb3NlX2ZpbGUoaW50IGZkKQoreworCWNoYXIgKmZpbGVuYW1lID0gc3RhdGVfYXJyYXlbZmRdLm5hbWU7CisKKwlwcmludGYoIkNsb3NpbmcgJXMsIGZkID0gJWQsIGlubyA9ICV1XG4iLCBmaWxlbmFtZSwgZmQsCisJICAgICAgIGdldF9pbm9kZV9udW0oZmQpKTsKKworCWNsb3NlKGZkKTsKKwlzdGF0ZV9hcnJheVtmZF0uc3RhdGUgPSBTVEFURV9DTEVBUjsKK30KKworCittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpbnQJaSwgZmQ7CisKKwltZW1zZXQoZGF0YV9idWZmZXIsIDAsIHNpemVvZihkYXRhX2J1ZmZlcikpOworCXNwcmludGYoZGF0YV9idWZmZXIsICJUaGlzIGlzIGEgdGVzdCBmaWxlIGNyZWF0ZWQgYnkgdGhlICIKKwkJInJhbmRvbV9leGVyY2lzZXIgcHJvZ3JhbVxuIik7CisKKwlmb3IgKGk9MDsgaSA8IDEwMDAwMDsgaSsrKSB7CisJCWZkID0gZ2V0X3JhbmRvbV9mZCgpOworCQlzd2l0Y2ggKHN0YXRlX2FycmF5W2ZkXS5zdGF0ZSkgeworCQljYXNlIFNUQVRFX0NMRUFSOgorCQkJY3JlYXRlX3JhbmRvbV9maWxlKCk7CisJCQlicmVhazsKKwkJY2FzZSBTVEFURV9DUkVBVEVEOgorCQkJaWYgKChzdGF0ZV9hcnJheVtmZF0uaXNkaXIgPT0gMCkgJiYKKwkJCSAgICAocmFuZG9tKCkgJiAyKSkKKwkJCQl0cnVuY2F0ZV9maWxlKGZkKTsKKwkJCWVsc2UKKwkJCQl1bmxpbmtfZmlsZShmZCk7CisJCQlicmVhazsKKwkJY2FzZSBTVEFURV9ERUxFVEVEOgorCQkJY2xvc2VfZmlsZShmZCk7CisJCQlicmVhazsKKwkJfQorCX0KK30KKworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2JtYS5zZXR1cCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvYm1hLnNldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0N2U1MTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2JtYS5zZXR1cApAQCAtMCwwICsxIEBACistYm1hX2NyZWF0ZSB0ZXN0IDIzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2V4cGVjdC5icmVsIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS9leHBlY3QuYnJlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODU4NjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS9leHBlY3QuYnJlbApAQCAtMCwwICsxLDQxIEBACit0ZXN0X3JlbDogYnJlbF9kdW1wCit0ZXN0X3JlbDogYnJlbF9wdXQgMiAxMQordGVzdF9yZWw6IGJyZWxfcHV0IDEgMTAKK3Rlc3RfcmVsOiBicmVsX3B1dCAzIDkKK3Rlc3RfcmVsOiBicmVsX3B1dCAxIDEwIDQgMTI4Cit0ZXN0X3JlbDogYnJlbF9wdXQgMjMgMTIKK3Rlc3RfcmVsOiBicmVsX3B1dCAyNCAxMworYnJlbF9wdXQ6IEludmFsaWQgYXJndW1lbnQgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9wdXQKK3Rlc3RfcmVsOiBicmVsX2dldCAyNAorYnJlbF9nZXQ6IEludmFsaWQgYXJndW1lbnQgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9nZXQKK3Rlc3RfcmVsOiBicmVsX2RlbGV0ZSAyNAorYnJlbF9kZWxldGU6IEludmFsaWQgYXJndW1lbnQgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9kZWxldGUKK3Rlc3RfcmVsOiBicmVsX2dldCA1CiticmVsX2dldDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19icmVsX2dldAordGVzdF9yZWw6IGJyZWxfZ2V0IDMKK09sZD0gMywgTmV3PSA5LCBPd25lcj0gMDowCit0ZXN0X3JlbDogYnJlbF9nZXQgMQorT2xkPSAxLCBOZXc9IDEwLCBPd25lcj0gNDoxMjgKK3Rlc3RfcmVsOiBicmVsX3N0YXJ0X2l0ZXIKK3Rlc3RfcmVsOiBicmVsX25leHQKK09sZD0gMSwgTmV3PSAxMCwgT3duZXI9IDQ6MTI4Cit0ZXN0X3JlbDogYnJlbF9uZXh0CitPbGQ9IDIsIE5ldz0gMTEsIE93bmVyPSAwOjAKK3Rlc3RfcmVsOiBicmVsX25leHQKK09sZD0gMywgTmV3PSA5LCBPd25lcj0gMDowCit0ZXN0X3JlbDogYnJlbF9uZXh0CitObyBtb3JlIGVudHJpZXMhCit0ZXN0X3JlbDogYnJlbF9kZWxldGUgMgordGVzdF9yZWw6IGJyZWxfZGVsZXRlIDIKK2JyZWxfZGVsZXRlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IHdoaWxlIGNhbGxpbmcgZXh0MmZzX2JyZWxfZGVsZXRlCit0ZXN0X3JlbDogYnJlbF9kZWxldGUgNQorYnJlbF9kZWxldGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9kZWxldGUKK3Rlc3RfcmVsOiBicmVsX21vdmUgMSAyCit0ZXN0X3JlbDogYnJlbF9kZWxldGUgMQorYnJlbF9kZWxldGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9kZWxldGUKK3Rlc3RfcmVsOiBicmVsX21vdmUgMSA0CiticmVsX21vdmU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9tb3ZlCit0ZXN0X3JlbDogYnJlbF9tb3ZlIDIgNQordGVzdF9yZWw6IGJyZWxfZHVtcAorT2xkPSAzLCBOZXc9IDksIE93bmVyPSAwOjAKK09sZD0gNSwgTmV3PSAxMCwgT3duZXI9IDQ6MTI4CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2V4cGVjdC5pY291bnQgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2V4cGVjdC5pY291bnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4YTM3MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvZXhwZWN0Lmljb3VudApAQCAtMCwwICsxLDE5MyBAQAordGVzdF9pY291bnQ6IHZhbGlkYXRlCitJY291bnQgc3RydWN0dXJlIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQKK3Rlc3RfaWNvdW50OiBzdG9yZSAwIDAKK3N0b3JlOiBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaWNvdW50X3N0b3JlCit0ZXN0X2ljb3VudDogZmV0Y2ggMAorZmV0Y2g6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZmV0Y2gKK3Rlc3RfaWNvdW50OiBpbmNyZW1lbnQgMAoraW5jcmVtZW50OiBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaWNvdW50X2luY3JlbWVudAordGVzdF9pY291bnQ6IGRlY3JlbWVudCAwCitkZWNyZW1lbnQ6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZGVjcmVtZW50Cit0ZXN0X2ljb3VudDogc3RvcmUgMjAwMDEgMAorc3RvcmU6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfc3RvcmUKK3Rlc3RfaWNvdW50OiBmZXRjaCAyMDAwMQorZmV0Y2g6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZmV0Y2gKK3Rlc3RfaWNvdW50OiBpbmNyZW1lbnQgMjAwMDEKK2luY3JlbWVudDogSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IHdoaWxlIGNhbGxpbmcgZXh0MmZzX2ljb3VudF9pbmNyZW1lbnQKK3Rlc3RfaWNvdW50OiBkZWNyZW1lbnQgMjAwMDEKK2RlY3JlbWVudDogSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IHdoaWxlIGNhbGxpbmcgZXh0MmZzX2ljb3VudF9kZWNyZW1lbnQKK3Rlc3RfaWNvdW50OiB2YWxpZGF0ZQorSWNvdW50IHN0cnVjdHVyZSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkCit0ZXN0X2ljb3VudDogZmV0Y2ggMQorQ291bnQgaXMgMAordGVzdF9pY291bnQ6IHN0b3JlIDEgMQordGVzdF9pY291bnQ6IGZldGNoIDEKK0NvdW50IGlzIDEKK3Rlc3RfaWNvdW50OiBzdG9yZSAxIDIKK3Rlc3RfaWNvdW50OiBmZXRjaCAxCitDb3VudCBpcyAyCit0ZXN0X2ljb3VudDogc3RvcmUgMSAzCit0ZXN0X2ljb3VudDogZmV0Y2ggMQorQ291bnQgaXMgMwordGVzdF9pY291bnQ6IHN0b3JlIDEgMQordGVzdF9pY291bnQ6IGZldGNoIDEKK0NvdW50IGlzIDEKK3Rlc3RfaWNvdW50OiBzdG9yZSAxIDAKK3Rlc3RfaWNvdW50OiBmZXRjaCAxCitDb3VudCBpcyAwCit0ZXN0X2ljb3VudDogZmV0Y2ggMjAwMDAKK0NvdW50IGlzIDAKK3Rlc3RfaWNvdW50OiBzdG9yZSAyMDAwMCAwCit0ZXN0X2ljb3VudDogZmV0Y2ggMjAwMDAKK0NvdW50IGlzIDAKK3Rlc3RfaWNvdW50OiBzdG9yZSAyMDAwMCAzCit0ZXN0X2ljb3VudDogZmV0Y2ggMjAwMDAKK0NvdW50IGlzIDMKK3Rlc3RfaWNvdW50OiBzdG9yZSAyMDAwMCAwCit0ZXN0X2ljb3VudDogZmV0Y2ggMjAwMDAKK0NvdW50IGlzIDAKK3Rlc3RfaWNvdW50OiBzdG9yZSAyMDAwMCA0MgordGVzdF9pY291bnQ6IGZldGNoIDIwMDAwCitDb3VudCBpcyA0MgordGVzdF9pY291bnQ6IHN0b3JlIDIwMDAwIDEKK3Rlc3RfaWNvdW50OiBmZXRjaCAyMDAwMAorQ291bnQgaXMgMQordGVzdF9pY291bnQ6IHN0b3JlIDIwMDAwIDAKK3Rlc3RfaWNvdW50OiBmZXRjaCAyMDAwMAorQ291bnQgaXMgMAordGVzdF9pY291bnQ6IGdldF9zaXplCitTaXplIG9mIGljb3VudCBpczogNQordGVzdF9pY291bnQ6IGRlY3JlbWVudCAyCitkZWNyZW1lbnQ6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZGVjcmVtZW50Cit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDIKK0NvdW50IGlzIG5vdyAxCit0ZXN0X2ljb3VudDogZmV0Y2ggMgorQ291bnQgaXMgMQordGVzdF9pY291bnQ6IGluY3JlbWVudCAyCitDb3VudCBpcyBub3cgMgordGVzdF9pY291bnQ6IGZldGNoIDIKK0NvdW50IGlzIDIKK3Rlc3RfaWNvdW50OiBpbmNyZW1lbnQgMgorQ291bnQgaXMgbm93IDMKK3Rlc3RfaWNvdW50OiBmZXRjaCAyCitDb3VudCBpcyAzCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDIKK0NvdW50IGlzIG5vdyA0Cit0ZXN0X2ljb3VudDogZmV0Y2ggMgorQ291bnQgaXMgNAordGVzdF9pY291bnQ6IGRlY3JlbWVudCAyCitDb3VudCBpcyBub3cgMwordGVzdF9pY291bnQ6IGZldGNoIDIKK0NvdW50IGlzIDMKK3Rlc3RfaWNvdW50OiBkZWNyZW1lbnQgMgorQ291bnQgaXMgbm93IDIKK3Rlc3RfaWNvdW50OiBmZXRjaCAyCitDb3VudCBpcyAyCit0ZXN0X2ljb3VudDogZGVjcmVtZW50IDIKK0NvdW50IGlzIG5vdyAxCit0ZXN0X2ljb3VudDogZmV0Y2ggMgorQ291bnQgaXMgMQordGVzdF9pY291bnQ6IGRlY3JlbWVudCAyCitDb3VudCBpcyBub3cgMAordGVzdF9pY291bnQ6IGRlY3JlbWVudCAyCitkZWNyZW1lbnQ6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZGVjcmVtZW50Cit0ZXN0X2ljb3VudDogc3RvcmUgMyAxCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDMKK0NvdW50IGlzIG5vdyAyCit0ZXN0X2ljb3VudDogZmV0Y2ggMworQ291bnQgaXMgMgordGVzdF9pY291bnQ6IGRlY3JlbWVudCAzCitDb3VudCBpcyBub3cgMQordGVzdF9pY291bnQ6IGZldGNoIDMKK0NvdW50IGlzIDEKK3Rlc3RfaWNvdW50OiBkZWNyZW1lbnQgMworQ291bnQgaXMgbm93IDAKK3Rlc3RfaWNvdW50OiBzdG9yZSA0IDAKK3Rlc3RfaWNvdW50OiBmZXRjaCA0CitDb3VudCBpcyAwCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDQKK0NvdW50IGlzIG5vdyAxCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDQKK0NvdW50IGlzIG5vdyAyCit0ZXN0X2ljb3VudDogZmV0Y2ggNAorQ291bnQgaXMgMgordGVzdF9pY291bnQ6IGRlY3JlbWVudCA0CitDb3VudCBpcyBub3cgMQordGVzdF9pY291bnQ6IGRlY3JlbWVudCA0CitDb3VudCBpcyBub3cgMAordGVzdF9pY291bnQ6IHN0b3JlIDQgIDQyCit0ZXN0X2ljb3VudDogc3RvcmUgNCAwCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDQKK0NvdW50IGlzIG5vdyAxCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDQKK0NvdW50IGlzIG5vdyAyCit0ZXN0X2ljb3VudDogaW5jcmVtZW50IDQKK0NvdW50IGlzIG5vdyAzCit0ZXN0X2ljb3VudDogZGVjcmVtZW50IDQKK0NvdW50IGlzIG5vdyAyCit0ZXN0X2ljb3VudDogZGVjcmVtZW50IDQKK0NvdW50IGlzIG5vdyAxCit0ZXN0X2ljb3VudDogZGVjcmVtZW50IDQKK0NvdW50IGlzIG5vdyAwCit0ZXN0X2ljb3VudDogZGVjcmVtZW50IDQKK2RlY3JlbWVudDogSW52YWxpZCBhcmd1bWVudCBwYXNzZWQgdG8gZXh0MiBsaWJyYXJ5IHdoaWxlIGNhbGxpbmcgZXh0MmZzX2ljb3VudF9kZWNyZW1lbnQKK3Rlc3RfaWNvdW50OiBkZWNyZW1lbnQgNAorZGVjcmVtZW50OiBJbnZhbGlkIGFyZ3VtZW50IHBhc3NlZCB0byBleHQyIGxpYnJhcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaWNvdW50X2RlY3JlbWVudAordGVzdF9pY291bnQ6IHN0b3JlIDUgNAordGVzdF9pY291bnQ6IGRlY3JlbWVudCA1CitDb3VudCBpcyBub3cgMwordGVzdF9pY291bnQ6IGRlY3JlbWVudCA1CitDb3VudCBpcyBub3cgMgordGVzdF9pY291bnQ6IGRlY3JlbWVudCA1CitDb3VudCBpcyBub3cgMQordGVzdF9pY291bnQ6IGRlY3JlbWVudCA1CitDb3VudCBpcyBub3cgMAordGVzdF9pY291bnQ6IGRlY3JlbWVudCA1CitkZWNyZW1lbnQ6IEludmFsaWQgYXJndW1lbnQgcGFzc2VkIHRvIGV4dDIgbGlicmFyeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfZGVjcmVtZW50Cit0ZXN0X2ljb3VudDogZ2V0X3NpemUKK1NpemUgb2YgaWNvdW50IGlzOiAxMDUKK3Rlc3RfaWNvdW50OiB2YWxpZGF0ZQorSWNvdW50IHN0cnVjdHVyZSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkCit0ZXN0X2ljb3VudDogc3RvcmUgMTAgMTAKK3Rlc3RfaWNvdW50OiBzdG9yZSAyMCAyMAordGVzdF9pY291bnQ6IHN0b3JlIDMwIDMwCit0ZXN0X2ljb3VudDogc3RvcmUgNDAgNDAKK3Rlc3RfaWNvdW50OiBzdG9yZSA1MCA1MAordGVzdF9pY291bnQ6IHN0b3JlIDYwIDYwCit0ZXN0X2ljb3VudDogc3RvcmUgNzAgNzAKK3Rlc3RfaWNvdW50OiBzdG9yZSA4MCA4MAordGVzdF9pY291bnQ6IHN0b3JlIDkwIDkwCit0ZXN0X2ljb3VudDogc3RvcmUgMTAwIDEwMAordGVzdF9pY291bnQ6IHN0b3JlIDE1IDE1Cit0ZXN0X2ljb3VudDogc3RvcmUgMjUgMjUKK3Rlc3RfaWNvdW50OiBzdG9yZSAzNSAzNQordGVzdF9pY291bnQ6IHN0b3JlIDQ1IDQ1Cit0ZXN0X2ljb3VudDogc3RvcmUgNTUgNTUKK3Rlc3RfaWNvdW50OiBzdG9yZSA2NSA2NQordGVzdF9pY291bnQ6IHN0b3JlIDc1IDc1Cit0ZXN0X2ljb3VudDogc3RvcmUgODUgODUKK3Rlc3RfaWNvdW50OiBzdG9yZSA5NSA5NQordGVzdF9pY291bnQ6IGR1bXAKKzEwOiAxMAorMTU6IDE1CisyMDogMjAKKzI1OiAyNQorMzA6IDMwCiszNTogMzUKKzQwOiA0MAorNDU6IDQ1Cis1MDogNTAKKzU1OiA1NQorNjA6IDYwCis2NTogNjUKKzcwOiA3MAorNzU6IDc1Cis4MDogODAKKzg1OiA4NQorOTA6IDkwCis5NTogOTUKKzEwMDogMTAwCit0ZXN0X2ljb3VudDogZ2V0X3NpemUKK1NpemUgb2YgaWNvdW50IGlzOiAxMDUKK3Rlc3RfaWNvdW50OiB2YWxpZGF0ZQorSWNvdW50IHN0cnVjdHVyZSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2V4cGVjdC5pcmVsIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS9leHBlY3QuaXJlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTQ3OTM4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS9leHBlY3QuaXJlbApAQCAtMCwwICsxLDYyIEBACit0ZXN0X3JlbDogaXJlbF9kdW1wCit0ZXN0X3JlbDogaXJlbF9wdXQgMiAxMSAzCit0ZXN0X3JlbDogaXJlbF9wdXQgMSAxMCAyCit0ZXN0X3JlbDogaXJlbF9wdXQgMyA5IDEKK3Rlc3RfcmVsOiBpcmVsX2FkZF9yZWYgMSA0IDEyOAordGVzdF9yZWw6IGlyZWxfYWRkX3JlZiAxIDUgNjQKK3Rlc3RfcmVsOiBpcmVsX2FkZF9yZWYgMSA2IDUxMgoraXJlbF9hZGRfcmVmOiBObyBzcGFjZSBsZWZ0IG9uIGRldmljZSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2FkZF9yZWYKK3Rlc3RfcmVsOiBpcmVsX3B1dCAxIDggMwordGVzdF9yZWw6IGlyZWxfYWRkX3JlZiAxIDYgNTEyCit0ZXN0X3JlbDogaXJlbF9hZGRfcmVmIDIgNCA2NAordGVzdF9yZWw6IGlyZWxfcHV0IDIzIDEyIDEKK3Rlc3RfcmVsOiBpcmVsX3B1dCAyNCAxMyAxCitpcmVsX3B1dDogSW52YWxpZCBhcmd1bWVudCB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX3B1dAordGVzdF9yZWw6IGlyZWxfZ2V0IDI0CitpcmVsX2dldDogSW52YWxpZCBhcmd1bWVudCB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2dldAordGVzdF9yZWw6IGlyZWxfZGVsZXRlIDI0CitpcmVsX2RlbGV0ZTogSW52YWxpZCBhcmd1bWVudCB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2RlbGV0ZQordGVzdF9yZWw6IGlyZWxfZ2V0IDMKK09sZD0gMywgTmV3PSA5LCBPcmlnaW5hbD0zLCBNYXhfcmVmcz0xCit0ZXN0X3JlbDogaXJlbF9nZXQgMQorT2xkPSAxLCBOZXc9IDgsIE9yaWdpbmFsPTEsIE1heF9yZWZzPTMKKwk0OjEyOCwgNTo2NCwgNjo1MTIKK3Rlc3RfcmVsOiBpcmVsX3N0YXJ0X2l0ZXIKK3Rlc3RfcmVsOiBpcmVsX25leHQKK09sZD0gMSwgTmV3PSA4LCBPcmlnaW5hbD0xLCBNYXhfcmVmcz0zCisJNDoxMjgsIDU6NjQsIDY6NTEyCit0ZXN0X3JlbDogaXJlbF9uZXh0CitPbGQ9IDIsIE5ldz0gMTEsIE9yaWdpbmFsPTIsIE1heF9yZWZzPTMKKwk0OjY0Cit0ZXN0X3JlbDogaXJlbF9uZXh0CitPbGQ9IDMsIE5ldz0gOSwgT3JpZ2luYWw9MywgTWF4X3JlZnM9MQordGVzdF9yZWw6IGlyZWxfbmV4dAorTm8gbW9yZSBlbnRyaWVzIQordGVzdF9yZWw6IGlyZWxfZGVsZXRlIDIKK3Rlc3RfcmVsOiBpcmVsX2RlbGV0ZSAyCitpcmVsX2RlbGV0ZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2RlbGV0ZQordGVzdF9yZWw6IGlyZWxfZGVsZXRlIDQKK2lyZWxfZGVsZXRlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IHdoaWxlIGNhbGxpbmcgZXh0MmZzX2lyZWxfZGVsZXRlCit0ZXN0X3JlbDogaXJlbF9tb3ZlIDEgMgordGVzdF9yZWw6IGlyZWxfZHVtcAorT2xkPSAyLCBOZXc9IDgsIE9yaWdpbmFsPTEsIE1heF9yZWZzPTMKKwk0OjEyOCwgNTo2NCwgNjo1MTIKK09sZD0gMywgTmV3PSA5LCBPcmlnaW5hbD0zLCBNYXhfcmVmcz0xCit0ZXN0X3JlbDogaXJlbF9kZWxldGUgNAoraXJlbF9kZWxldGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9kZWxldGUKK3Rlc3RfcmVsOiBpcmVsX21vdmUgMSA0CitpcmVsX21vdmU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9tb3ZlCit0ZXN0X3JlbDogaXJlbF9tb3ZlIDIgNAordGVzdF9yZWw6IGlyZWxfZHVtcAorT2xkPSAzLCBOZXc9IDksIE9yaWdpbmFsPTMsIE1heF9yZWZzPTEKK09sZD0gNCwgTmV3PSA4LCBPcmlnaW5hbD0xLCBNYXhfcmVmcz0zCisJNDoxMjgsIDU6NjQsIDY6NTEyCit0ZXN0X3JlbDogaXJlbF9nZXRfYnlfb3JpZyAzCitPbGQ9IDMsIE5ldz0gOSwgT3JpZ2luYWw9MywgTWF4X3JlZnM9MQordGVzdF9yZWw6IGlyZWxfZ2V0X2J5X29yaWcgMQorT2xkPSA0LCBOZXc9IDgsIE9yaWdpbmFsPTEsIE1heF9yZWZzPTMKKwk0OjEyOCwgNTo2NCwgNjo1MTIKK3Rlc3RfcmVsOiBpcmVsX2dldF9ieV9vcmlnIDUKK2lyZWxfZ2V0X2J5X29yaWc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkgd2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9nZXRfYnlfb3JpZwordGVzdF9yZWw6IGlyZWxfZ2V0X2J5X29yaWcgMgoraXJlbF9nZXRfYnlfb3JpZzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSB3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2dldF9ieV9vcmlnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2ltYS5zZXR1cCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvaW1hLnNldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MTE2MDYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL2ltYS5zZXR1cApAQCAtMCwwICsxIEBACistaW1hX2NyZWF0ZSB0ZXN0IDIzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL25vcm1hbC5zZXR1cCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvbm9ybWFsLnNldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYzZjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL25vcm1hbC5zZXR1cApAQCAtMCwwICsxIEBACistY3JlYXRlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL29wdC5zZXR1cCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvb3B0LnNldHVwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NDU4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL29wdC5zZXR1cApAQCAtMCwwICsxIEBACistY3JlYXRlIC1pCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL3Rlc3QuYnJlbCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvdGVzdC5icmVsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MDU0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL3Rlc3QuYnJlbApAQCAtMCwwICsxLDQ3IEBACisjCisjIFRoaXMgaXMgdGhlIHRlc3Qgc2NyaXB0IGZvciB0aGUgYmxvY2sgcmVsb2NhdGlvbiB0YWJsZS4KKyMKKyMgQ29weXJpZ2h0IDE5OTcgYnkgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCAKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisjCisjCiticmVsX2R1bXAKK2JyZWxfcHV0IDIgMTEKK2JyZWxfcHV0IDEgMTAKK2JyZWxfcHV0IDMgOQorYnJlbF9wdXQgMSAxMCA0IDEyOAorIworIyBUZXN0IGJvdW5kYXJ5IGNhc2VzIGZvciBicmVsX3B1dAorIworYnJlbF9wdXQgMjMgMTIKK2JyZWxfcHV0IDI0IDEzCisjCisjIFRlc3Qgb3RoZXIgYm91bmRhcnkgY2FzZXMKKyMKK2JyZWxfZ2V0IDI0CiticmVsX2RlbGV0ZSAyNAorIworIyBUZXN0IGdldHRpbmcgZXhpc3RpbmcgYW5kIG5vbi1leGlzdGVudCBlbnRyaWVzCisjCiticmVsX2dldCA1CiticmVsX2dldCAzCiticmVsX2dldCAxCisjCisjIFRlc3QgdGhlIGl0ZXJhdG9yIGZ1bmN0aW9ucworIworYnJlbF9zdGFydF9pdGVyCiticmVsX25leHQKK2JyZWxfbmV4dAorYnJlbF9uZXh0CiticmVsX25leHQKKyMKKyMgVGVzdCBkZWxldGUgYW5kIG1vdmUKKyMKK2JyZWxfZGVsZXRlIDIKK2JyZWxfZGVsZXRlIDIKK2JyZWxfZGVsZXRlIDUKK2JyZWxfbW92ZSAxIDIKK2JyZWxfZGVsZXRlIDEKK2JyZWxfbW92ZSAxIDQKK2JyZWxfbW92ZSAyIDUKK2JyZWxfZHVtcApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS90ZXN0Lmljb3VudCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvdGVzdC5pY291bnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNiMTk1NQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2RhdGEvdGVzdC5pY291bnQKQEAgLTAsMCArMSwxMzYgQEAKKyMKKyMgVGhpcyBpcyB0aGUgdGVzdCBzY3JpcHQgZm9yIHRoZSBpY291bnQgYWJzdHJhY3Rpb24KKyMKKyMgQ29weXJpZ2h0IDE5OTcgYnkgVGhlb2RvcmUgVHMnby4gIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCAKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisjCisjCisjIEZpcnN0IGxldCdzIHRlc3QgdGhlIGJvdW5kYXJ5IGNhc2VzIGZvciBpbGxlZ2FsIGFyZ3VtZW50cworIwordmFsaWRhdGUKK3N0b3JlIDAgMAorZmV0Y2ggMAoraW5jcmVtZW50IDAKK2RlY3JlbWVudCAwCitzdG9yZSAyMDAwMSAwCitmZXRjaCAyMDAwMQoraW5jcmVtZW50IDIwMDAxCitkZWNyZW1lbnQgMjAwMDEKK3ZhbGlkYXRlCisjCisjIE9LLCBub3cgbGV0J3MgdGVzdCBmZXRjaCBhbmQgc3RvcmUuICBXZSBhbHNvIHRlc3QgdGhlIGJvdW5kYXJ5IGNhc2VzCisjIGZvciBsZWdhbCBpbm9kZXMgaGVyZS4KKyMKK2ZldGNoIDEKK3N0b3JlIDEgMQorZmV0Y2ggMQorc3RvcmUgMSAyCitmZXRjaCAxCitzdG9yZSAxIDMKK2ZldGNoIDEKK3N0b3JlIDEgMQorZmV0Y2ggMQorc3RvcmUgMSAwCitmZXRjaCAxCitmZXRjaCAyMDAwMAorc3RvcmUgMjAwMDAgMAorZmV0Y2ggMjAwMDAKK3N0b3JlIDIwMDAwIDMKK2ZldGNoIDIwMDAwCitzdG9yZSAyMDAwMCAwCitmZXRjaCAyMDAwMAorc3RvcmUgMjAwMDAgNDIKK2ZldGNoIDIwMDAwCitzdG9yZSAyMDAwMCAxCitmZXRjaCAyMDAwMAorc3RvcmUgMjAwMDAgMAorZmV0Y2ggMjAwMDAKK2dldF9zaXplCisjCisjIFRpbWUgdG8gdGVzdCBpbmNyZW1lbnQuICBGaXJzdCBpbmNyZW1lbnQgZnJvbSAwIChwcmV2aW91c2x5IHVucmVmZXJlbmNlZCkKKyMKK2RlY3JlbWVudCAyCitpbmNyZW1lbnQgMgorZmV0Y2ggMgoraW5jcmVtZW50IDIKK2ZldGNoIDIKK2luY3JlbWVudCAyCitmZXRjaCAyCitpbmNyZW1lbnQgMgorZmV0Y2ggMgorZGVjcmVtZW50IDIKK2ZldGNoIDIKK2RlY3JlbWVudCAyCitmZXRjaCAyCitkZWNyZW1lbnQgMgorZmV0Y2ggMgorZGVjcmVtZW50IDIKK2RlY3JlbWVudCAyCisjCisjIFN0b3JlIDEgdGhlbiB0ZXN0Li4uCisjCitzdG9yZSAzIDEKK2luY3JlbWVudCAzCitmZXRjaCAzCitkZWNyZW1lbnQgMworZmV0Y2ggMworZGVjcmVtZW50IDMKKyMKKyMgU3RvcmUgMCB0aGVuIHRlc3QKKyMgCitzdG9yZSA0IDAKK2ZldGNoIDQKK2luY3JlbWVudCA0CitpbmNyZW1lbnQgNAorZmV0Y2ggNAorZGVjcmVtZW50IDQKK2RlY3JlbWVudCA0CisjCisjIFN0b3JlIHNvbWV0aGluZywgdGhlbiBzdG9yZSAwLCB0aGVuIHRlc3QuLi4KKyMKK3N0b3JlIDQgIDQyCitzdG9yZSA0IDAKK2luY3JlbWVudCA0CitpbmNyZW1lbnQgNAoraW5jcmVtZW50IDQKK2RlY3JlbWVudCA0CitkZWNyZW1lbnQgNAorZGVjcmVtZW50IDQKK2RlY3JlbWVudCA0CitkZWNyZW1lbnQgNAorIworIyBzdG9yZSBzb21ldGhpbmcsIHRoZW4gZGVjcmVtZW50IHRvIHplcm8KKyMKK3N0b3JlIDUgNAorZGVjcmVtZW50IDUKK2RlY3JlbWVudCA1CitkZWNyZW1lbnQgNQorZGVjcmVtZW50IDUKK2RlY3JlbWVudCA1CisjCisjIFRlc3QgaW5zZXJ0CisjCitnZXRfc2l6ZQordmFsaWRhdGUKK3N0b3JlIDEwIDEwCitzdG9yZSAyMCAyMAorc3RvcmUgMzAgMzAKK3N0b3JlIDQwIDQwCitzdG9yZSA1MCA1MAorc3RvcmUgNjAgNjAKK3N0b3JlIDcwIDcwCitzdG9yZSA4MCA4MAorc3RvcmUgOTAgOTAKK3N0b3JlIDEwMCAxMDAKK3N0b3JlIDE1IDE1CitzdG9yZSAyNSAyNQorc3RvcmUgMzUgMzUKK3N0b3JlIDQ1IDQ1CitzdG9yZSA1NSA1NQorc3RvcmUgNjUgNjUKK3N0b3JlIDc1IDc1CitzdG9yZSA4NSA4NQorc3RvcmUgOTUgOTUKK2R1bXAKK2dldF9zaXplCit2YWxpZGF0ZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS90ZXN0LmlyZWwgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9kYXRhL3Rlc3QuaXJlbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzMzOGJjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfZGF0YS90ZXN0LmlyZWwKQEAgLTAsMCArMSw2OSBAQAorIworIyBUaGlzIGlzIHRoZSB0ZXN0IHNjcmlwdCBmb3IgdGhlIGlub2RlIHJlbG9jYXRpb24gdGFibGUuCisjCisjIENvcHlyaWdodCAxOTk3IGJ5IFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgCisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorIworIworaXJlbF9kdW1wCitpcmVsX3B1dCAyIDExIDMKK2lyZWxfcHV0IDEgMTAgMgoraXJlbF9wdXQgMyA5IDEKK2lyZWxfYWRkX3JlZiAxIDQgMTI4CitpcmVsX2FkZF9yZWYgMSA1IDY0CisjCisjIENoZWNrIHRvIHNlZSB3aGF0IGhhcHBlbnMgaWYgd2UgYWRkIHRvbyBtYW55IHJlZmVyZW5jZXMKKyMKK2lyZWxfYWRkX3JlZiAxIDYgNTEyCisjCisjIFRyeSByZXNpemluZyB0aGUgbnVtYmVyIG9mIHJlZmVyZW5jZXMgYW5kIHJldHJ5IHRoZSBhZGQKKyMKK2lyZWxfcHV0IDEgOCAzCitpcmVsX2FkZF9yZWYgMSA2IDUxMgorIworaXJlbF9hZGRfcmVmIDIgNCA2NAorIworIyBUZXN0IGJvdW5kYXJ5IGNhc2VzIG9mIGlyZWxfcHV0CisjCitpcmVsX3B1dCAyMyAxMiAxCitpcmVsX3B1dCAyNCAxMyAxCisjCisjIFRlc3Qgb3RoZXIgYm91bmRhcnkgY2FzZXMuLi4uCisjCitpcmVsX2dldCAyNAoraXJlbF9kZWxldGUgMjQKKyMKKyMgVGVzdCByZXRyaXZhbHMKKyMKK2lyZWxfZ2V0IDMKK2lyZWxfZ2V0IDEKKyMKKyMgVGVzdCB0aGUgaXRlcmF0b3IgZnVuY3Rpb25zCisjCitpcmVsX3N0YXJ0X2l0ZXIKK2lyZWxfbmV4dAoraXJlbF9uZXh0CitpcmVsX25leHQKK2lyZWxfbmV4dAorIworIyBOb3cgdHJ5IHRoZSBkZWxldGUgZnVuY3Rpb24sIG9uIGV4aXN0aW5nIGFuZCBub24tZXhpc3RlbnQgZW50cmllcworIworaXJlbF9kZWxldGUgMgoraXJlbF9kZWxldGUgMgoraXJlbF9kZWxldGUgNAorIworIyBNb3ZlIHRlc3RzLi4uCisjCitpcmVsX21vdmUgMSAyCitpcmVsX2R1bXAKK2lyZWxfZGVsZXRlIDQKK2lyZWxfbW92ZSAxIDQKK2lyZWxfbW92ZSAyIDQKKyMKKyMgR2V0IGJ5IG9yaWcgdGVzdHMKKyMKK2lyZWxfZHVtcAoraXJlbF9nZXRfYnlfb3JpZyAzCitpcmVsX2dldF9ieV9vcmlnIDEKK2lyZWxfZ2V0X2J5X29yaWcgNQoraXJlbF9nZXRfYnlfb3JpZyAyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9pY291bnQuYyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2ljb3VudC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMjhhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9pY291bnQuYwpAQCAtMCwwICsxLDM2MyBAQAorLyoKKyAqIHRlc3RfaWNvdW50LmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2lmZGVmIEhBVkVfR0VUT1BUX0gKKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisKKyNpbmNsdWRlIDxleHQyZnMvZXh0Ml9mcy5oPgorCisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorI2luY2x1ZGUgPHNzL3NzLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJmcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9pcmVsLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2JyZWwuaD4KKworZXh0ZXJuIHNzX3JlcXVlc3RfdGFibGUgdGVzdF9jbWRzOworCisjaW5jbHVkZSAidGVzdF9pY291bnQuaCIKKworZXh0Ml9maWxzeXMgdGVzdF9mczsKK2V4dDJfaWNvdW50X3QgdGVzdF9pY291bnQ7CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggYXNzdXJlcyB0aGF0IHRoZSBpY291bnQgc3RydWN0dXJlIGlzIHZhbGlkCisgKi8KK3N0YXRpYyBpbnQgY2hlY2tfaWNvdW50KGNoYXIgKnJlcXVlc3QpCit7CisJaWYgKHRlc3RfaWNvdW50KQorCQlyZXR1cm4gMDsKKwljb21fZXJyKHJlcXVlc3QsIDAsICJUaGUgaWNvdW50IHN0cnVjdHVyZSBtdXN0IGJlIGFsbG9jYXRlZC4iKTsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCBwYXJzZXMgYW4gaW5vZGUgbnVtYmVyLgorICovCitzdGF0aWMgaW50IHBhcnNlX2lub2RlKGNvbnN0IGNoYXIgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKmRlc2MsCisJCSAgICAgICBjb25zdCBjaGFyICpzdHIsIGV4dDJfaW5vX3QgKmlubykKK3sKKwljaGFyICp0bXA7CisKKwkqaW5vID0gc3RydG91bChzdHIsICZ0bXAsIDApOworCWlmICgqdG1wKSB7CisJCWNvbV9lcnIocmVxdWVzdCwgMCwgIkJhZCAlcyAtICVzIiwgZGVzYywgc3RyKTsKKwkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCit2b2lkIGRvX2NyZWF0ZV9pY291bnQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWVycmNvZGVfdAlyZXR2YWw7CisJY2hhcgkJKnByb2duYW1lOworCWludAkJZmxhZ3MgPSAwOworCWV4dDJfaW5vX3QJc2l6ZSA9IDU7CisKKwlwcm9nbmFtZSA9ICphcmd2OworCWFyZ3YrKzsgYXJnYyAtLTsKKworCWlmIChhcmdjICYmICFzdHJjbXAoIi1pIiwgKmFyZ3YpKSB7CisJCWZsYWdzIHw9IEVYVDJfSUNPVU5UX09QVF9JTkNSRU1FTlQ7CisJCWFyZ3YrKzsgYXJnYy0tOworCX0KKwlpZiAoYXJnYykgeworCQlpZiAocGFyc2VfaW5vZGUocHJvZ25hbWUsICJpY291bnQgc2l6ZSIsIGFyZ3ZbMF0sICZzaXplKSkKKwkJCXJldHVybjsKKwkJYXJndisrOyBhcmdjLS07CisJfQorI2lmIDAKKwlwcmludGYoIkNyZWF0aW5nIGljb3VudC4uLiBmbGFncz0lZCwgc2l6ZT0lZFxuIiwgZmxhZ3MsIChpbnQpIHNpemUpOworI2VuZGlmCisJcmV0dmFsID0gZXh0MmZzX2NyZWF0ZV9pY291bnQodGVzdF9mcywgZmxhZ3MsIChpbnQpIHNpemUsCisJCQkJICAgICAgJnRlc3RfaWNvdW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIocHJvZ25hbWUsIHJldHZhbCwgIndoaWxlIGNyZWF0aW5nIGljb3VudCIpOworCQlyZXR1cm47CisJfQorfQorCit2b2lkIGRvX2ZyZWVfaWNvdW50KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpZiAoY2hlY2tfaWNvdW50KGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlleHQyZnNfZnJlZV9pY291bnQodGVzdF9pY291bnQpOworCXRlc3RfaWNvdW50ID0gMDsKK30KKwordm9pZCBkb19mZXRjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY29uc3QgY2hhcgkqdXNhZ2UgPSAidXNhZ2U6ICVzIGlub2RlXG4iOworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pbm9fdAlpbm87CisJX191MTYJCWNvdW50OworCisJaWYgKGFyZ2MgPCAyKSB7CisJCXByaW50Zih1c2FnZSwgYXJndlswXSk7CisJCXJldHVybjsKKwl9CisJaWYgKGNoZWNrX2ljb3VudChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAiaW5vZGUiLCBhcmd2WzFdLCAmaW5vKSkKKwkJcmV0dXJuOworCXJldHZhbCA9IGV4dDJmc19pY291bnRfZmV0Y2godGVzdF9pY291bnQsIGlubywgJmNvdW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaWNvdW50X2ZldGNoIik7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJDb3VudCBpcyAldVxuIiwgY291bnQpOworfQorCit2b2lkIGRvX2luY3JlbWVudChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY29uc3QgY2hhcgkqdXNhZ2UgPSAidXNhZ2U6ICVzIGlub2RlXG4iOworCWVycmNvZGVfdAlyZXR2YWw7CisJZXh0Ml9pbm9fdAlpbm87CisJX191MTYJCWNvdW50OworCisJaWYgKGFyZ2MgPCAyKSB7CisJCXByaW50Zih1c2FnZSwgYXJndlswXSk7CisJCXJldHVybjsKKwl9CisJaWYgKGNoZWNrX2ljb3VudChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAiaW5vZGUiLCBhcmd2WzFdLCAmaW5vKSkKKwkJcmV0dXJuOworCXJldHZhbCA9IGV4dDJmc19pY291bnRfaW5jcmVtZW50KHRlc3RfaWNvdW50LCBpbm8sICZjb3VudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCSJ3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfaW5jcmVtZW50Iik7CisJCXJldHVybjsKKwl9CisJcHJpbnRmKCJDb3VudCBpcyBub3cgJXVcbiIsIGNvdW50KTsKK30KKwordm9pZCBkb19kZWNyZW1lbnQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gInVzYWdlOiAlcyBpbm9kZVxuIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaW5vOworCV9fdTE2CQljb3VudDsKKworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChjaGVja19pY291bnQoYXJndlswXSkpCisJCXJldHVybjsKKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgImlub2RlIiwgYXJndlsxXSwgJmlubykpCisJCXJldHVybjsKKwlyZXR2YWwgPSBleHQyZnNfaWNvdW50X2RlY3JlbWVudCh0ZXN0X2ljb3VudCwgaW5vLCAmY291bnQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsCisJCQkid2hpbGUgY2FsbGluZyBleHQyZnNfaWNvdW50X2RlY3JlbWVudCIpOworCQlyZXR1cm47CisJfQorCXByaW50ZigiQ291bnQgaXMgbm93ICV1XG4iLCBjb3VudCk7Cit9CisKK3ZvaWQgZG9fc3RvcmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gInVzYWdlOiAlcyBpbm9kZSBjb3VudFxuIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaW5vOworCWV4dDJfaW5vX3QJY291bnQ7CisKKwlpZiAoYXJnYyA8IDMpIHsKKwkJcHJpbnRmKHVzYWdlLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAoY2hlY2tfaWNvdW50KGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJaWYgKHBhcnNlX2lub2RlKGFyZ3ZbMF0sICJpbm9kZSIsIGFyZ3ZbMV0sICZpbm8pKQorCQlyZXR1cm47CisJaWYgKHBhcnNlX2lub2RlKGFyZ3ZbMF0sICJjb3VudCIsIGFyZ3ZbMl0sICZjb3VudCkpCisJCXJldHVybjsKKwlpZiAoY291bnQgPiA2NTUzNSkgeworCQlwcmludGYoIkNvdW50IHRvbyBsYXJnZS5cbiIpOworCQlyZXR1cm47CisJfQorCXJldHZhbCA9IGV4dDJmc19pY291bnRfc3RvcmUodGVzdF9pY291bnQsIGlubywgKF9fdTE2KSBjb3VudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwKKwkJCSJ3aGlsZSBjYWxsaW5nIGV4dDJmc19pY291bnRfc3RvcmUiKTsKKwkJcmV0dXJuOworCX0KK30KKwordm9pZCBkb19kdW1wKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaTsKKwlfX3UxNgkJY291bnQ7CisKKwlpZiAoY2hlY2tfaWNvdW50KGFyZ3ZbMF0pKQorCQlyZXR1cm47CisJZm9yIChpPTE7IGkgPD0gdGVzdF9mcy0+c3VwZXItPnNfaW5vZGVzX2NvdW50OyBpKyspIHsKKwkJcmV0dmFsID0gZXh0MmZzX2ljb3VudF9mZXRjaCh0ZXN0X2ljb3VudCwgaSwgJmNvdW50KTsKKwkJaWYgKHJldHZhbCkgeworCQkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsCisJCQkJIndoaWxlIGZldGNoaW5nIGljb3VudCBmb3IgJWx1IiwgKHVuc2lnbmVkIGxvbmcpaSk7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKGNvdW50KQorCQkJcHJpbnRmKCIlbHU6ICV1XG4iLCAodW5zaWduZWQgbG9uZylpLCBjb3VudCk7CisJfQorfQorCit2b2lkIGRvX3ZhbGlkYXRlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwllcnJjb2RlX3QJcmV0dmFsOworCisJaWYgKGNoZWNrX2ljb3VudChhcmd2WzBdKSkKKwkJcmV0dXJuOworCXJldHZhbCA9IGV4dDJmc19pY291bnRfdmFsaWRhdGUodGVzdF9pY291bnQsIHN0ZG91dCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIHZhbGlkYXRpbmcgaWNvdW50IHN0cnVjdHVyZSIpOworCQlyZXR1cm47CisJfQorCXByaW50ZigiSWNvdW50IHN0cnVjdHVyZSBzdWNjZXNzZnVsbHkgdmFsaWRhdGVkXG4iKTsKK30KKwordm9pZCBkb19nZXRfc2l6ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXh0Ml9pbm9fdAlzaXplOworCisJaWYgKGNoZWNrX2ljb3VudChhcmd2WzBdKSkKKwkJcmV0dXJuOworCXNpemUgPSBleHQyZnNfZ2V0X2ljb3VudF9zaXplKHRlc3RfaWNvdW50KTsKKwlwcmludGYoIlNpemUgb2YgaWNvdW50IGlzOiAlbHVcbiIsICh1bnNpZ25lZCBsb25nKXNpemUpOworfQorCitzdGF0aWMgaW50IHNvdXJjZV9maWxlKGNvbnN0IGNoYXIgKmNtZF9maWxlLCBpbnQgc2NpX2lkeCkKK3sKKwlGSUxFCQkqZjsKKwljaGFyCQlidWZbMjU2XTsKKwljaGFyCQkqY3A7CisJaW50CQlleGl0X3N0YXR1cyA9IDA7CisJaW50CQlyZXR2YWw7CisJaW50IAkJbm9lY2hvOworCisJaWYgKHN0cmNtcChjbWRfZmlsZSwgIi0iKSA9PSAwKQorCQlmID0gc3RkaW47CisJZWxzZSB7CisJCWYgPSBmb3BlbihjbWRfZmlsZSwgInIiKTsKKwkJaWYgKCFmKSB7CisJCQlwZXJyb3IoY21kX2ZpbGUpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlmZmx1c2goc3Rkb3V0KTsKKwlmZmx1c2goc3RkZXJyKTsKKwlzZXRidWYoc3Rkb3V0LCBOVUxMKTsKKwlzZXRidWYoc3RkZXJyLCBOVUxMKTsKKwl3aGlsZSAoIWZlb2YoZikpIHsKKwkJaWYgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIGYpID09IE5VTEwpCisJCQlicmVhazsKKwkJaWYgKGJ1ZlswXSA9PSAnIycpCisJCQljb250aW51ZTsKKwkJbm9lY2hvID0gMDsKKwkJaWYgKGJ1ZlswXSA9PSAnLScpIHsKKwkJCW5vZWNobyA9IDE7CisJCQlidWZbMF0gPSAnICc7CisJCX0KKwkJY3AgPSBzdHJjaHIoYnVmLCAnXG4nKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJY3AgPSBzdHJjaHIoYnVmLCAnXHInKTsKKwkJaWYgKGNwKQorCQkJKmNwID0gMDsKKwkJaWYgKCFub2VjaG8pCisJCQlwcmludGYoInRlc3RfaWNvdW50OiAlc1xuIiwgYnVmKTsKKwkJcmV0dmFsID0gc3NfZXhlY3V0ZV9saW5lKHNjaV9pZHgsIGJ1Zik7CisJCWlmIChyZXR2YWwpIHsKKwkJCXNzX3BlcnJvcihzY2lfaWR4LCByZXR2YWwsIGJ1Zik7CisJCQlleGl0X3N0YXR1cysrOworCQl9CisJfQorCWlmIChmICE9IHN0ZGluKQorCQlmY2xvc2UoZik7CisJcmV0dXJuIGV4aXRfc3RhdHVzOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CQlyZXR2YWw7CisJaW50CQlzY2lfaWR4OworCWludAkJYzsKKwljaGFyCQkqcmVxdWVzdCA9IDA7CisJaW50CQlleGl0X3N0YXR1cyA9IDA7CisJY2hhcgkJKmNtZF9maWxlID0gMDsKKwlzdHJ1Y3QgZXh0Ml9zdXBlcl9ibG9jayBwYXJhbTsKKworCWluaXRpYWxpemVfZXh0Ml9lcnJvcl90YWJsZSgpOworCisJLyoKKwkgKiBDcmVhdGUgYSBzYW1wbGUgZmlsZXN5c3RlbSBzdHJ1Y3R1cmUKKwkgKi8KKwltZW1zZXQoJnBhcmFtLCAwLCBzaXplb2Yoc3RydWN0IGV4dDJfc3VwZXJfYmxvY2spKTsKKwlleHQyZnNfYmxvY2tzX2NvdW50X3NldCgmcGFyYW0sIDgwMDAwKTsKKwlwYXJhbS5zX2lub2Rlc19jb3VudCA9IDIwMDAwOworCXJldHZhbCA9IGV4dDJmc19pbml0aWFsaXplKCIvZGV2L251bGwiLCAwLCAmcGFyYW0sCisJCQkJICAgdW5peF9pb19tYW5hZ2VyLCAmdGVzdF9mcyk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKCIvZGV2L251bGwiLCByZXR2YWwsICJ3aGlsZSBzZXR0aW5nIHVwIHRlc3QgZnMiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJ3UjpmOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ1InOgorCQkJcmVxdWVzdCA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWNtZF9maWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsICJVc2FnZTogdGVzdF9pY291bnQgIgorCQkJCSJbLVIgcmVxdWVzdF0gWy1mIGNtZF9maWxlXSIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKwlzY2lfaWR4ID0gc3NfY3JlYXRlX2ludm9jYXRpb24oInRlc3RfaWNvdW50IiwgIjAuMCIsIChjaGFyICopIE5VTEwsCisJCQkJICAgICAgICZ0ZXN0X2NtZHMsICZyZXR2YWwpOworCWlmIChyZXR2YWwpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgImNyZWF0aW5nIGludm9jYXRpb24iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkodm9pZCkgc3NfYWRkX3JlcXVlc3RfdGFibGUgKHNjaV9pZHgsICZzc19zdGRfcmVxdWVzdHMsIDEsICZyZXR2YWwpOworCWlmIChyZXR2YWwpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgImFkZGluZyBzdGFuZGFyZCByZXF1ZXN0cyIpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKHJlcXVlc3QpIHsKKwkJcmV0dmFsID0gMDsKKwkJcmV0dmFsID0gc3NfZXhlY3V0ZV9saW5lKHNjaV9pZHgsIHJlcXVlc3QpOworCQlpZiAocmV0dmFsKSB7CisJCQlzc19wZXJyb3Ioc2NpX2lkeCwgcmV0dmFsLCByZXF1ZXN0KTsKKwkJCWV4aXRfc3RhdHVzKys7CisJCX0KKwl9IGVsc2UgaWYgKGNtZF9maWxlKSB7CisJCWV4aXRfc3RhdHVzID0gc291cmNlX2ZpbGUoY21kX2ZpbGUsIHNjaV9pZHgpOworCX0gZWxzZSB7CisJCXNzX2xpc3RlbihzY2lfaWR4KTsKKwl9CisKKwlyZXR1cm4oZXhpdF9zdGF0dXMpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfaWNvdW50LmggYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9pY291bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWVhMWE0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfaWNvdW50LmgKQEAgLTAsMCArMSwxMCBAQAordm9pZCBkb19jcmVhdGVfaWNvdW50KGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2ZyZWVfaWNvdW50KGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2ZldGNoKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2luY3JlbWVudChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19kZWNyZW1lbnQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fc3RvcmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fZ2V0X3NpemUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fZHVtcChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb192YWxpZGF0ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9pY291bnRfY21kcy5jdCBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X2ljb3VudF9jbWRzLmN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzY2M2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9pY291bnRfY21kcy5jdApAQCAtMCwwICsxLDM3IEBACisjCisjIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLiAgVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkCisjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYyBMaWNlbnNlLgorIworY29tbWFuZF90YWJsZSB0ZXN0X2NtZHM7CisKKyMKKyMgSWNvdW50IHRhYmxlIGNvbW1hbmRzCisjCityZXF1ZXN0IGRvX2NyZWF0ZV9pY291bnQsICJDcmVhdGUgYW4gaWNvdW50IHN0cnVjdHVyZSIsCisJY3JlYXRlX2ljb3VudCwgY3JlYXRlOworCityZXF1ZXN0IGRvX2ZyZWVfaWNvdW50LCAiRnJlZSBhbiBpY291bnQgc3RydWN0dXJlIiwKKwlmcmVlX2ljb3VudCwgZnJlZTsKKworcmVxdWVzdCBkb19mZXRjaCwgIkZldGNoIGFuIGljb3VudCBlbnRyeSIsCisJZmV0Y2g7CisKK3JlcXVlc3QgZG9faW5jcmVtZW50LCAiSW5jcmVtZW50IGFuIGljb3VudCBlbnRyeSIsCisJaW5jcmVtZW50LCBpbmM7CisKK3JlcXVlc3QgZG9fZGVjcmVtZW50LCAiRGVjcmVtZW50IGFuIGljb3VudCBlbnRyeSIsCisJZGVjcmVtZW50LCBkZWM7CisKK3JlcXVlc3QgZG9fc3RvcmUsICJTdG9yZSBhbiBpY291bnQgZW50cnkiLAorCXN0b3JlOworCityZXF1ZXN0IGRvX2dldF9zaXplLCAiR2V0IHRoZSBzaXplIG9mIHRoZSBpY291bnQgc3RydWN0dXJlIiwKKwlnZXRfc2l6ZTsKKworcmVxdWVzdCBkb19kdW1wLCAiRHVtcCB0aGUgaWNvdW50IHN0cnVjdHVyZSIsCisJZHVtcDsKKworcmVxdWVzdCBkb192YWxpZGF0ZSwgIlZhbGlkYXRlIHRoZSBpY291bnQgc3RydWN0dXJlIiwKKwl2YWxpZGF0ZSwgY2hlY2s7CisKK2VuZDsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X3JlbC5jIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfcmVsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY3MjgwYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X3JlbC5jCkBAIC0wLDAgKzEsNzY0IEBACisvKgorICogdGVzdF9yZWwuYworICoKKyAqIENvcHlyaWdodCAoQykgMTk5NyBUaGVvZG9yZSBUcydvLgorICoKKyAqICVCZWdpbi1IZWFkZXIlCisgKiBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljCisgKiBMaWNlbnNlLgorICogJUVuZC1IZWFkZXIlCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2VuZGlmCisjaW5jbHVkZSA8ZmNudGwuaD4KKworI2luY2x1ZGUgPGV0L2NvbV9lcnIuaD4KKyNpbmNsdWRlIDxzcy9zcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9leHQyX2ZzLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2V4dDJmcy5oPgorI2luY2x1ZGUgPGV4dDJmcy9pcmVsLmg+CisjaW5jbHVkZSA8ZXh0MmZzL2JyZWwuaD4KKworI2luY2x1ZGUgInRlc3RfcmVsLmgiCisKK2V4dGVybiBzc19yZXF1ZXN0X3RhYmxlIHRlc3RfY21kczsKKworZXh0Ml9pcmVsIGlyZWwgPSBOVUxMOworZXh0Ml9icmVsIGJyZWwgPSBOVUxMOworCisvKgorICogSGVscGVyIGZ1bmN0aW9uIHdoaWNoIHBhcnNlcyBhbiBpbm9kZSBudW1iZXIuCisgKi8KK3N0YXRpYyBpbnQgcGFyc2VfaW5vZGUoY29uc3QgY2hhciAqcmVxdWVzdCwgY29uc3QgY2hhciAqZGVzYywKKwkJICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgZXh0Ml9pbm9fdCAqaW5vKQoreworCWNoYXIgKnRtcDsKKworCSppbm8gPSBzdHJ0b3VsKHN0ciwgJnRtcCwgMCk7CisJaWYgKCp0bXApIHsKKwkJY29tX2VycihyZXF1ZXN0LCAwLCAiQmFkICVzIC0gJXMiLCBkZXNjLCBzdHIpOworCQlyZXR1cm4gMTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcGFyc2VzIGEgYmxvY2sgbnVtYmVyLgorICovCitzdGF0aWMgaW50IHBhcnNlX2Jsb2NrKGNvbnN0IGNoYXIgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKmRlc2MsCisJCSAgICAgICBjb25zdCBjaGFyICpzdHIsIGJsa190ICpibGspCit7CisJY2hhciAqdG1wOworCisJKmJsayA9IHN0cnRvdWwoc3RyLCAmdG1wLCAwKTsKKwlpZiAoKnRtcCkgeworCQljb21fZXJyKHJlcXVlc3QsIDAsICJCYWQgJXMgLSAlcyIsIGRlc2MsIHN0cik7CisJCXJldHVybiAxOworCX0KKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCBhc3N1cmVzIHRoYXQgYSBicmVsIHRhYmxlIGlzIG9wZW4KKyAqLworc3RhdGljIGludCBjaGVja19icmVsKGNoYXIgKnJlcXVlc3QpCit7CisJaWYgKGJyZWwpCisJCXJldHVybiAwOworCWNvbV9lcnIocmVxdWVzdCwgMCwgIkEgYmxvY2sgcmVsb2NhdGlvbiB0YWJsZSBtdXN0IGJlIG9wZW4uIik7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggYXNzdXJlcyB0aGF0IGFuIGlyZWwgdGFibGUgaXMgb3BlbgorICovCitzdGF0aWMgaW50IGNoZWNrX2lyZWwoY2hhciAqcmVxdWVzdCkKK3sKKwlpZiAoaXJlbCkKKwkJcmV0dXJuIDA7CisJY29tX2VycihyZXF1ZXN0LCAwLCAiQW4gaW5vZGUgcmVsb2NhdGlvbiB0YWJsZSBtdXN0IGJlIG9wZW4uIik7CisJcmV0dXJuIDE7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggZGlzcGxheXMgYSBicmVsIGVudHJ5CisgKi8KK3N0YXRpYyB2b2lkIGRpc3BsYXlfYnJlbF9lbnRyeShibGtfdCBvbGQsCisJCQkgICAgICAgc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGVfZW50cnkgKmVudCkKK3sKKwlwcmludGYoIk9sZD0gJXUsIE5ldz0gJXUsIE93bmVyPSAldToldVxuIiwgb2xkLCBlbnQtPm5ldywKKwkgICAgICAgZW50LT5vd25lci5ibG9ja19yZWYsIGVudC0+b2Zmc2V0KTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB3aGljaCBkaXNwbGF5cyBhbiBpcmVsIGVudHJ5CisgKi8KK3N0YXRpYyB2b2lkIGRpc3BsYXlfaXJlbF9lbnRyeShleHQyX2lub190IG9sZCwKKwkJCSAgICAgICBzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSAqZW50LAorCQkJICAgICAgIGludCBkb19yZWZzKQoreworCXN0cnVjdCBleHQyX2lub2RlX3JlZmVyZW5jZSByZWY7CisJZXJyY29kZV90CXJldHZhbDsKKwlpbnQJCWZpcnN0ID0gMTsKKworCXByaW50ZigiT2xkPSAlbHUsIE5ldz0gJWx1LCBPcmlnaW5hbD0lbHUsIE1heF9yZWZzPSV1XG4iLCBvbGQsCisJICAgICAgIGVudC0+bmV3LCBlbnQtPm9yaWcsIGVudC0+bWF4X3JlZnMpOworCWlmICghZG9fcmVmcykKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2lyZWxfc3RhcnRfaXRlcl9yZWYoaXJlbCwgb2xkKTsKKwlpZiAocmV0dmFsKSB7CisJCXByaW50ZigiXHRDb3VsZG4ndCBnZXQgcmVmZXJlbmNlczogJXNcbiIsCisJCSAgICAgICBlcnJvcl9tZXNzYWdlKHJldHZhbCkpOworCQlyZXR1cm47CisJfQorCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IGV4dDJmc19pcmVsX25leHRfcmVmKGlyZWwsICZyZWYpOworCQlpZiAocmV0dmFsKSB7CisJCQlwcmludGYoIiglcykgIiwgZXJyb3JfbWVzc2FnZShyZXR2YWwpKTsKKwkJCWJyZWFrOworCQl9CisJCWlmIChyZWYuYmxvY2sgPT0gMCkKKwkJCWJyZWFrOworCQlpZiAoZmlyc3QpIHsKKwkJCWZwdXRjKCdcdCcsIHN0ZG91dCk7CisJCQlmaXJzdCA9IDA7CisJCX0gZWxzZQorCQkJcHJpbnRmKCIsICIpOworCQlwcmludGYoIiV1OiV1IiwgcmVmLmJsb2NrLCByZWYub2Zmc2V0KTsKKwl9CisJaWYgKCFmaXJzdCkKKwkJZnB1dGMoJ1xuJywgc3Rkb3V0KTsKK30KKworLyoKKyAqIFRoZXNlIGFyZSB0aGUgYWN0dWFsIGNvbW1hbmQgdGFibGUgcHJvY2VkdXJlcworICovCit2b2lkIGRvX2JyZWxfbWFfY3JlYXRlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyICp1c2FnZSA9ICJVc2FnZTogJXMgbmFtZSBtYXhfYmxvY2tzXG4iOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrX3QJCW1heF9ibGs7CisKKwlpZiAoYXJnYyA8IDMpIHsKKwkJcHJpbnRmKHVzYWdlLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocGFyc2VfYmxvY2soYXJndlswXSwgIm1heF9ibG9ja3MiLCBhcmd2WzJdLCAmbWF4X2JsaykpCisJCXJldHVybjsKKwlyZXR2YWwgPSBleHQyZnNfYnJlbF9tZW1hcnJheV9jcmVhdGUoYXJndlsxXSwgbWF4X2JsaywgJmJyZWwpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBvcGVuaW5nIG1lbWFycmF5IGJyZWwiKTsKKwkJcmV0dXJuOworCX0KKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fYnJlbF9mcmVlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWV4dDJmc19icmVsX2ZyZWUoYnJlbCk7CisJYnJlbCA9IE5VTEw7CisJcmV0dXJuOworfQorCit2b2lkIGRvX2JyZWxfcHV0KGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyICp1c2FnZSA9ICJ1c2FnZTogJXMgb2xkX2Jsb2NrIG5ld19ibG9jayBbb3duZXJdIFtvZmZzZXRdIjsKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5IGVudDsKKwlibGtfdAlvbGQsIG5ldywgb2Zmc2V0PTAsIG93bmVyPTA7CisKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPCAzKSB7CisJCXByaW50Zih1c2FnZSwgYXJndlswXSk7CisJCXJldHVybjsKKwl9CisJaWYgKHBhcnNlX2Jsb2NrKGFyZ3ZbMF0sICJvbGQgYmxvY2siLCBhcmd2WzFdLCAmb2xkKSkKKwkJcmV0dXJuOworCWlmIChwYXJzZV9ibG9jayhhcmd2WzBdLCAibmV3IGJsb2NrIiwgYXJndlsyXSwgJm5ldykpCisJCXJldHVybjsKKwlpZiAoYXJnYyA+IDMgJiYKKwkgICAgcGFyc2VfYmxvY2soYXJndlswXSwgIm93bmVyIGJsb2NrIiwgYXJndlszXSwgJm93bmVyKSkKKwkJcmV0dXJuOworCWlmIChhcmdjID4gNCAmJgorCSAgICBwYXJzZV9ibG9jayhhcmd2WzBdLCAib2Zmc2V0IiwgYXJndls0XSwgJm9mZnNldCkpCisJCXJldHVybjsKKwlpZiAob2Zmc2V0ID4gNjU1MzUpIHsKKwkJcHJpbnRmKCJPZmZzZXQgdG9vIGxhcmdlLlxuIik7CisJCXJldHVybjsKKwl9CisJZW50Lm5ldyA9IG5ldzsKKwllbnQub2Zmc2V0ID0gKF9fdTE2KSBvZmZzZXQ7CisJZW50LmZsYWdzID0gMDsKKwllbnQub3duZXIuYmxvY2tfcmVmID0gb3duZXI7CisKKwlyZXR2YWwgPSBleHQyZnNfYnJlbF9wdXQoYnJlbCwgb2xkLCAmZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9wdXQiKTsKKwkJcmV0dXJuOworCX0KKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9fYnJlbF9nZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIgKnVzYWdlID0gIiVzIGJsb2NrIjsKKwllcnJjb2RlX3QgcmV0dmFsOworCXN0cnVjdCBleHQyX2Jsb2NrX3JlbG9jYXRlX2VudHJ5IGVudDsKKwlibGtfdAlibGs7CisKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9ibG9jayhhcmd2WzBdLCAiYmxvY2siLCBhcmd2WzFdLCAmYmxrKSkKKwkJcmV0dXJuOworCXJldHZhbCA9IGV4dDJmc19icmVsX2dldChicmVsLCBibGssICZlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19icmVsX2dldCIpOworCQlyZXR1cm47CisJfQorCWRpc3BsYXlfYnJlbF9lbnRyeShibGssICZlbnQpOworCXJldHVybjsKK30KKwordm9pZCBkb19icmVsX3N0YXJ0X2l0ZXIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2JyZWxfc3RhcnRfaXRlcihicmVsKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9zdGFydF9pdGVyIik7CisJCXJldHVybjsKKwl9CisJcmV0dXJuOworfQorCit2b2lkIGRvX2JyZWxfbmV4dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXJyY29kZV90IHJldHZhbDsKKwlzdHJ1Y3QgZXh0Ml9ibG9ja19yZWxvY2F0ZV9lbnRyeSBlbnQ7CisJYmxrX3QJYmxrOworCisJaWYgKGNoZWNrX2JyZWwoYXJndlswXSkpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19icmVsX25leHQoYnJlbCwgJmJsaywgJmVudCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2JyZWxfbmV4dCIpOworCQlyZXR1cm47CisJfQorCWlmIChibGsgPT0gMCkgeworCQlwcmludGYoIk5vIG1vcmUgZW50cmllcyFcbiIpOworCQlyZXR1cm47CisJfQorCWRpc3BsYXlfYnJlbF9lbnRyeShibGssICZlbnQpOworCXJldHVybjsKK30KKwordm9pZCBkb19icmVsX2R1bXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWVycmNvZGVfdCByZXR2YWw7CisJc3RydWN0IGV4dDJfYmxvY2tfcmVsb2NhdGVfZW50cnkgZW50OworCWJsa190CWJsazsKKworCWlmIChjaGVja19icmVsKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfYnJlbF9zdGFydF9pdGVyKGJyZWwpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19icmVsX3N0YXJ0X2l0ZXIiKTsKKwkJcmV0dXJuOworCX0KKworCXdoaWxlICgxKSB7CisJCXJldHZhbCA9IGV4dDJmc19icmVsX25leHQoYnJlbCwgJmJsaywgJmVudCk7CisJCWlmIChyZXR2YWwpIHsKKwkJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9uZXh0Iik7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKGJsayA9PSAwKQorCQkJYnJlYWs7CisKKwkJZGlzcGxheV9icmVsX2VudHJ5KGJsaywgJmVudCk7CisJfQorCXJldHVybjsKK30KKwordm9pZCBkb19icmVsX21vdmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIgKnVzYWdlID0gIiVzIG9sZF9ibG9jayBuZXdfYmxvY2siOworCWVycmNvZGVfdCByZXR2YWw7CisJYmxrX3QJb2xkLCBuZXc7CisKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9ibG9jayhhcmd2WzBdLCAib2xkIGJsb2NrIiwgYXJndlsxXSwgJm9sZCkpCisJCXJldHVybjsKKwlpZiAocGFyc2VfYmxvY2soYXJndlswXSwgIm5ldyBibG9jayIsIGFyZ3ZbMl0sICZuZXcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfYnJlbF9tb3ZlKGJyZWwsIG9sZCwgbmV3KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfYnJlbF9tb3ZlIik7CisJCXJldHVybjsKKwl9CisJcmV0dXJuOworfQorCit2b2lkIGRvX2JyZWxfZGVsZXRlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyICp1c2FnZSA9ICIlcyBibG9jayI7CisJZXJyY29kZV90IHJldHZhbDsKKwlibGtfdAlibGs7CisKKwlpZiAoY2hlY2tfYnJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9ibG9jayhhcmd2WzBdLCAiYmxvY2siLCBhcmd2WzFdLCAmYmxrKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2JyZWxfZGVsZXRlKGJyZWwsIGJsayk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2JyZWxfZGVsZXRlIik7CisJCXJldHVybjsKKwl9Cit9CisKK3ZvaWQgZG9faXJlbF9tYV9jcmVhdGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gIlVzYWdlOiAlcyBuYW1lIG1heF9pbm9kZVxuIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJbWF4X2lubzsKKworCWlmIChhcmdjIDwgMykgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAibWF4X2lub2RlcyIsIGFyZ3ZbMl0sICZtYXhfaW5vKSkKKwkJcmV0dXJuOworCXJldHZhbCA9IGV4dDJmc19pcmVsX21lbWFycmF5X2NyZWF0ZShhcmd2WzFdLCBtYXhfaW5vLCAmaXJlbCk7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIG9wZW5pbmcgbWVtYXJyYXkgaXJlbCIpOworCQlyZXR1cm47CisJfQorCXJldHVybjsKK30KKwordm9pZCBkb19pcmVsX2ZyZWUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWlmIChjaGVja19pcmVsKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlleHQyZnNfaXJlbF9mcmVlKGlyZWwpOworCWlyZWwgPSBOVUxMOworCXJldHVybjsKK30KKwordm9pZCBkb19pcmVsX3B1dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY29uc3QgY2hhcgkqdXNhZ2UgPSAiJXMgb2xkIG5ldyBtYXhfcmVmcyI7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CW9sZCwgbmV3LCBtYXhfcmVmczsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSBlbnQ7CisKKwlpZiAoY2hlY2tfaXJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJaWYgKGFyZ2MgPCA0KSB7CisJCXByaW50Zih1c2FnZSwgYXJndlswXSk7CisJCXJldHVybjsKKwl9CisJaWYgKHBhcnNlX2lub2RlKGFyZ3ZbMF0sICJvbGQgaW5vZGUiLCBhcmd2WzFdLCAmb2xkKSkKKwkJcmV0dXJuOworCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAibmV3IGlub2RlIiwgYXJndlsyXSwgJm5ldykpCisJCXJldHVybjsKKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgIm1heF9yZWZzIiwgYXJndlszXSwgJm1heF9yZWZzKSkKKwkJcmV0dXJuOworCWlmIChtYXhfcmVmcyA+IDY1NTM1KSB7CisJCXByaW50ZigibWF4X3JlZnMgdG9vIGJpZ1xuIik7CisJCXJldHVybjsKKwl9CisJZW50Lm5ldyA9IG5ldzsKKwllbnQubWF4X3JlZnMgPSAoX191MTYpIG1heF9yZWZzOworCWVudC5mbGFncyA9IDA7CisKKwlyZXR2YWwgPSBleHQyZnNfaXJlbF9wdXQoaXJlbCwgb2xkLCAmZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9wdXQiKTsKKwkJcmV0dXJuOworCX0KKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9faXJlbF9nZXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gIiVzIGlub2RlIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJb2xkOworCXN0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRlX2VudHJ5IGVudDsKKworCWlmIChjaGVja19pcmVsKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJcHJpbnRmKHVzYWdlLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgImlub2RlIiwgYXJndlsxXSwgJm9sZCkpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19pcmVsX2dldChpcmVsLCBvbGQsICZlbnQpOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2dldCIpOworCQlyZXR1cm47CisJfQorCWRpc3BsYXlfaXJlbF9lbnRyeShvbGQsICZlbnQsIDEpOworCXJldHVybjsKK30KKwordm9pZCBkb19pcmVsX2dldF9ieV9vcmlnKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyCSp1c2FnZSA9ICIlcyBvcmlnX2lub2RlIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJb3JpZywgb2xkOworCXN0cnVjdCBleHQyX2lub2RlX3JlbG9jYXRlX2VudHJ5IGVudDsKKworCWlmIChjaGVja19pcmVsKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJcHJpbnRmKHVzYWdlLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgIm9yaWdpbmFsIGlub2RlIiwgYXJndlsxXSwgJm9yaWcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfaXJlbF9nZXRfYnlfb3JpZyhpcmVsLCBvcmlnLCAmb2xkLCAmZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9nZXRfYnlfb3JpZyIpOworCQlyZXR1cm47CisJfQorCWRpc3BsYXlfaXJlbF9lbnRyeShvbGQsICZlbnQsIDEpOworCXJldHVybjsKK30KKwordm9pZCBkb19pcmVsX3N0YXJ0X2l0ZXIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoY2hlY2tfaXJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2lyZWxfc3RhcnRfaXRlcihpcmVsKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9zdGFydF9pdGVyIik7CisJCXJldHVybjsKKwl9CisJcmV0dXJuOworfQorCit2b2lkIGRvX2lyZWxfbmV4dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CW9sZDsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSBlbnQ7CisKKwlpZiAoY2hlY2tfaXJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2lyZWxfbmV4dChpcmVsLCAmb2xkLCAmZW50KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9uZXh0Iik7CisJCXJldHVybjsKKwl9CisJaWYgKG9sZCA9PSAwKSB7CisJCXByaW50ZigiTm8gbW9yZSBlbnRyaWVzIVxuIik7CisJCXJldHVybjsKKwl9CisJZGlzcGxheV9pcmVsX2VudHJ5KG9sZCwgJmVudCwgMSk7CisJcmV0dXJuOworfQorCit2b2lkIGRvX2lyZWxfZHVtcChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CWlubzsKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWxvY2F0ZV9lbnRyeSBlbnQ7CisKKwlpZiAoY2hlY2tfaXJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2lyZWxfc3RhcnRfaXRlcihpcmVsKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9zdGFydF9pdGVyIik7CisJCXJldHVybjsKKwl9CisKKwl3aGlsZSAoMSkgeworCQlyZXR2YWwgPSBleHQyZnNfaXJlbF9uZXh0KGlyZWwsICZpbm8sICZlbnQpOworCQlpZiAocmV0dmFsKSB7CisJCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2lyZWxfbmV4dCIpOworCQkJcmV0dXJuOworCQl9CisJCWlmIChpbm8gPT0gMCkKKwkJCWJyZWFrOworCisJCWRpc3BsYXlfaXJlbF9lbnRyeShpbm8sICZlbnQsIDEpOworCX0KKwlyZXR1cm47Cit9CisKK3ZvaWQgZG9faXJlbF9hZGRfcmVmKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyCSp1c2FnZSA9ICIlcyBpbm9kZSBibG9jayBvZmZzZXQiOworCWVycmNvZGVfdAlyZXR2YWw7CisJYmxrX3QJCWJsb2NrLCBvZmZzZXQ7CisJZXh0Ml9pbm9fdAlpbm87CisJc3RydWN0IGV4dDJfaW5vZGVfcmVmZXJlbmNlIHJlZjsKKworCisJaWYgKGNoZWNrX2lyZWwoYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjIDwgNCkgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAiaW5vZGUiLCBhcmd2WzFdLCAmaW5vKSkKKwkJcmV0dXJuOworCWlmIChwYXJzZV9ibG9jayhhcmd2WzBdLCAiYmxvY2siLCBhcmd2WzJdLCAmYmxvY2spKQorCQlyZXR1cm47CisJaWYgKHBhcnNlX2Jsb2NrKGFyZ3ZbMF0sICJvZmZzZXQiLCBhcmd2WzNdLCAmb2Zmc2V0KSkKKwkJcmV0dXJuOworCWlmIChvZmZzZXQgPiA2NTUzNSkgeworCQlwcmludGYoIk9mZnNldCB0b28gYmlnLlxuIik7CisJCXJldHVybjsKKwl9CisJcmVmLmJsb2NrID0gYmxvY2s7CisJcmVmLm9mZnNldCA9IG9mZnNldDsKKworCXJldHZhbCA9IGV4dDJmc19pcmVsX2FkZF9yZWYoaXJlbCwgaW5vLCAmcmVmKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9hZGRfcmVmIik7CisJCXJldHVybjsKKwl9CisJcmV0dXJuOworfQorCit2b2lkIGRvX2lyZWxfc3RhcnRfaXRlcl9yZWYoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworCWNvbnN0IGNoYXIJKnVzYWdlID0gIiVzIGlub2RlIjsKKwllcnJjb2RlX3QJcmV0dmFsOworCWV4dDJfaW5vX3QJaW5vOworCisJaWYgKGNoZWNrX2lyZWwoYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjIDwgMikgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCisJaWYgKHBhcnNlX2lub2RlKGFyZ3ZbMF0sICJpbm9kZSIsIGFyZ3ZbMV0sICZpbm8pKQorCQlyZXR1cm47CisJcmV0dmFsID0gZXh0MmZzX2lyZWxfc3RhcnRfaXRlcl9yZWYoaXJlbCwgaW5vKTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9zdGFydF9pdGVyX3JlZiIpOworCQlyZXR1cm47CisJfQorCXJldHVybjsKK30KKwordm9pZCBkb19pcmVsX25leHRfcmVmKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgZXh0Ml9pbm9kZV9yZWZlcmVuY2UgcmVmOworCWVycmNvZGVfdCByZXR2YWw7CisKKwlpZiAoY2hlY2tfaXJlbChhcmd2WzBdKSkKKwkJcmV0dXJuOworCisJcmV0dmFsID0gZXh0MmZzX2lyZWxfbmV4dF9yZWYoaXJlbCwgJnJlZik7CisJaWYgKHJldHZhbCkgeworCQljb21fZXJyKGFyZ3ZbMF0sIHJldHZhbCwgIndoaWxlIGNhbGxpbmcgZXh0MmZzX2lyZWxfbmV4dF9yZWYiKTsKKwkJcmV0dXJuOworCX0KKwlwcmludGYoIklub2RlIHJlZmVyZW5jZTogJXU6JXVcbiIsIHJlZi5ibG9jaywgcmVmLm9mZnNldCk7CisJcmV0dXJuOworfQorCit2b2lkIGRvX2lyZWxfbW92ZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY29uc3QgY2hhcgkqdXNhZ2UgPSAiJXMgb2xkIG5ldyI7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CW9sZCwgbmV3OworCisJaWYgKGNoZWNrX2lyZWwoYXJndlswXSkpCisJCXJldHVybjsKKworCWlmIChhcmdjIDwgMykgeworCQlwcmludGYodXNhZ2UsIGFyZ3ZbMF0pOworCQlyZXR1cm47CisJfQorCWlmIChwYXJzZV9pbm9kZShhcmd2WzBdLCAib2xkIGlub2RlIiwgYXJndlsxXSwgJm9sZCkpCisJCXJldHVybjsKKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgIm5ldyBpbm9kZSIsIGFyZ3ZbMl0sICZuZXcpKQorCQlyZXR1cm47CisKKwlyZXR2YWwgPSBleHQyZnNfaXJlbF9tb3ZlKGlyZWwsIG9sZCwgbmV3KTsKKwlpZiAocmV0dmFsKSB7CisJCWNvbV9lcnIoYXJndlswXSwgcmV0dmFsLCAid2hpbGUgY2FsbGluZyBleHQyZnNfaXJlbF9tb3ZlIik7CisJCXJldHVybjsKKwl9CisJcmV0dXJuOworfQorCit2b2lkIGRvX2lyZWxfZGVsZXRlKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwljb25zdCBjaGFyCSp1c2FnZSA9ICIlcyBpbm9kZSI7CisJZXJyY29kZV90CXJldHZhbDsKKwlleHQyX2lub190CWlubzsKKworCWlmIChjaGVja19pcmVsKGFyZ3ZbMF0pKQorCQlyZXR1cm47CisKKwlpZiAoYXJnYyA8IDIpIHsKKwkJcHJpbnRmKHVzYWdlLCBhcmd2WzBdKTsKKwkJcmV0dXJuOworCX0KKwlpZiAocGFyc2VfaW5vZGUoYXJndlswXSwgImlub2RlIiwgYXJndlsxXSwgJmlubykpCisJCXJldHVybjsKKworCXJldHZhbCA9IGV4dDJmc19pcmVsX2RlbGV0ZShpcmVsLCBpbm8pOworCWlmIChyZXR2YWwpIHsKKwkJY29tX2Vycihhcmd2WzBdLCByZXR2YWwsICJ3aGlsZSBjYWxsaW5nIGV4dDJmc19pcmVsX2RlbGV0ZSIpOworCQlyZXR1cm47CisJfQorCXJldHVybjsKK30KKworc3RhdGljIGludCBzb3VyY2VfZmlsZShjb25zdCBjaGFyICpjbWRfZmlsZSwgaW50IHNjaV9pZHgpCit7CisJRklMRQkJKmY7CisJY2hhcgkJYnVmWzI1Nl07CisJY2hhcgkJKmNwOworCWludAkJZXhpdF9zdGF0dXMgPSAwOworCWludAkJcmV0dmFsOworCWludCAJCW5vZWNobzsKKworCWlmIChzdHJjbXAoY21kX2ZpbGUsICItIikgPT0gMCkKKwkJZiA9IHN0ZGluOworCWVsc2UgeworCQlmID0gZm9wZW4oY21kX2ZpbGUsICJyIik7CisJCWlmICghZikgeworCQkJcGVycm9yKGNtZF9maWxlKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisJZmZsdXNoKHN0ZG91dCk7CisJZmZsdXNoKHN0ZGVycik7CisJc2V0YnVmKHN0ZG91dCwgTlVMTCk7CisJc2V0YnVmKHN0ZGVyciwgTlVMTCk7CisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCWlmIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCWlmIChidWZbMF0gPT0gJyMnKQorCQkJY29udGludWU7CisJCW5vZWNobyA9IDA7CisJCWlmIChidWZbMF0gPT0gJy0nKSB7CisJCQlub2VjaG8gPSAxOworCQkJYnVmWzBdID0gJyAnOworCQl9CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xuJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xyJyk7CisJCWlmIChjcCkKKwkJCSpjcCA9IDA7CisJCWlmICghbm9lY2hvKQorCQkJcHJpbnRmKCJ0ZXN0X3JlbDogJXNcbiIsIGJ1Zik7CisJCXJldHZhbCA9IHNzX2V4ZWN1dGVfbGluZShzY2lfaWR4LCBidWYpOworCQlpZiAocmV0dmFsKSB7CisJCQlzc19wZXJyb3Ioc2NpX2lkeCwgcmV0dmFsLCBidWYpOworCQkJZXhpdF9zdGF0dXMrKzsKKwkJfQorCX0KKwlyZXR1cm4gZXhpdF9zdGF0dXM7Cit9CisKK3ZvaWQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJaW50CQlyZXR2YWw7CisJaW50CQlzY2lfaWR4OworCWNvbnN0IGNoYXIJKnVzYWdlID0gIlVzYWdlOiB0ZXN0X3JlbCBbLVIgcmVxdWVzdF0gWy1mIGNtZF9maWxlXSI7CisJaW50CQljOworCWNoYXIJCSpyZXF1ZXN0ID0gMDsKKwlpbnQJCWV4aXRfc3RhdHVzID0gMDsKKwljaGFyCQkqY21kX2ZpbGUgPSAwOworCisJaW5pdGlhbGl6ZV9leHQyX2Vycm9yX3RhYmxlKCk7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQgKGFyZ2MsIGFyZ3YsICJ3UjpmOiIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ1InOgorCQkJcmVxdWVzdCA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdmJzoKKwkJCWNtZF9maWxlID0gb3B0YXJnOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQljb21fZXJyKGFyZ3ZbMF0sIDAsIHVzYWdlKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKwlzY2lfaWR4ID0gc3NfY3JlYXRlX2ludm9jYXRpb24oInRlc3RfcmVsIiwgIjAuMCIsIChjaGFyICopIE5VTEwsCisJCQkJICAgICAgICZ0ZXN0X2NtZHMsICZyZXR2YWwpOworCWlmIChyZXR2YWwpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgImNyZWF0aW5nIGludm9jYXRpb24iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkodm9pZCkgc3NfYWRkX3JlcXVlc3RfdGFibGUgKHNjaV9pZHgsICZzc19zdGRfcmVxdWVzdHMsIDEsICZyZXR2YWwpOworCWlmIChyZXR2YWwpIHsKKwkJc3NfcGVycm9yKHNjaV9pZHgsIHJldHZhbCwgImFkZGluZyBzdGFuZGFyZCByZXF1ZXN0cyIpOworCQlleGl0ICgxKTsKKwl9CisJaWYgKHJlcXVlc3QpIHsKKwkJcmV0dmFsID0gMDsKKwkJcmV0dmFsID0gc3NfZXhlY3V0ZV9saW5lKHNjaV9pZHgsIHJlcXVlc3QpOworCQlpZiAocmV0dmFsKSB7CisJCQlzc19wZXJyb3Ioc2NpX2lkeCwgcmV0dmFsLCByZXF1ZXN0KTsKKwkJCWV4aXRfc3RhdHVzKys7CisJCX0KKwl9IGVsc2UgaWYgKGNtZF9maWxlKSB7CisJCWV4aXRfc3RhdHVzID0gc291cmNlX2ZpbGUoY21kX2ZpbGUsIHNjaV9pZHgpOworCX0gZWxzZSB7CisJCXNzX2xpc3RlbihzY2lfaWR4KTsKKwl9CisKKwlleGl0KGV4aXRfc3RhdHVzKTsKK30KKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfcmVsLmggYi9lMmZzcHJvZ3MvdGVzdHMvcHJvZ3MvdGVzdF9yZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2M0ZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfcmVsLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIHRlc3RfcmVsLmgKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTcgVGhlb2RvcmUgVHMnby4KKyAqCisgKiAlQmVnaW4tSGVhZGVyJQorICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIFB1YmxpYworICogTGljZW5zZS4KKyAqICVFbmQtSGVhZGVyJQorICovCisKKworCit2b2lkIGRvX2JyZWxfbWFfY3JlYXRlKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2JyZWxfZnJlZShpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19icmVsX3B1dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19icmVsX2dldChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19icmVsX3N0YXJ0X2l0ZXIoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fYnJlbF9uZXh0KGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2JyZWxfZHVtcChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19icmVsX21vdmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9fYnJlbF9kZWxldGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9tYV9jcmVhdGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9mcmVlKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2lyZWxfcHV0KGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2lyZWxfZ2V0KGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2lyZWxfZ2V0X2J5X29yaWcoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9zdGFydF9pdGVyKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2lyZWxfbmV4dChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19pcmVsX2R1bXAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9hZGRfcmVmKGludCBhcmdjLCBjaGFyICoqYXJndik7Cit2b2lkIGRvX2lyZWxfc3RhcnRfaXRlcl9yZWYoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9uZXh0X3JlZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwordm9pZCBkb19pcmVsX21vdmUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK3ZvaWQgZG9faXJlbF9kZWxldGUoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X3JlbF9jbWRzLmN0IGIvZTJmc3Byb2dzL3Rlc3RzL3Byb2dzL3Rlc3RfcmVsX2NtZHMuY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkNmFlMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9wcm9ncy90ZXN0X3JlbF9jbWRzLmN0CkBAIC0wLDAgKzEsODIgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAxOTk3IFRoZW9kb3JlIFRzJ28uICBUaGlzIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgUHVibGljIExpY2Vuc2UuCisjCitjb21tYW5kX3RhYmxlIHRlc3RfY21kczsKKworIworIyBCbG9jayByZWxvY2F0aW9uIHRhYmxlIGNvbW1hbmRzCisjCisKK3JlcXVlc3QgZG9fYnJlbF9tYV9jcmVhdGUsICJPcGVuIGEgbWVtb3J5IGFycmF5IGJsb2NrIHJlbG9jYXRpb24gdGFibGUiLAorCWJyZWxfbWFfY3JlYXRlLCBibWFfY3JlYXRlOworCityZXF1ZXN0IGRvX2JyZWxfZnJlZSwgIkZyZWUgYSBibG9jayByZWxvY2F0aW9uIHRhYmxlIiwKKwlicmVsX2ZyZWUsIGJmcmVlOworCityZXF1ZXN0IGRvX2JyZWxfcHV0LCAiQWRkIG9yIG1vZGlmeSBhIGJsb2NrIHJlbG9jYXRpb24gZW50cnkiLAorCWJyZWxfcHV0LCBicHV0OworCityZXF1ZXN0IGRvX2JyZWxfZ2V0LCAiR2V0IGEgYmxvY2sgcmVsb2NhdGlvbiBlbnRyeSIsCisJYnJlbF9nZXQsIGJnZXQ7CisKK3JlcXVlc3QgZG9fYnJlbF9zdGFydF9pdGVyLCAiU3RhcnQgaXRlcmF0aW5nIG92ZXIgdGhlIGJsb2NrIHRhYmxlIiwKKwlicmVsX3N0YXJ0X2l0ZXIsIGJzdGFydDsKKworcmVxdWVzdCBkb19icmVsX25leHQsICJHZXQgdGhlIG5leHQgYmxvY2sgcmVsb2NhdGlvbiBlbnRyeSIsCisJYnJlbF9uZXh0LCBibmV4dDsKKworcmVxdWVzdCBkb19icmVsX2R1bXAsICJEdW1wIHRoZSBibG9jayByZWxvY2F0aW9uIHRhYmxlIiwKKwlicmVsX2R1bXAsIGJkdW1wOworCityZXF1ZXN0IGRvX2JyZWxfbW92ZSwgIk1vdmUgYW4gZW50cnkgaW4gdGhlIGJsb2NrIHJlbG9jYXRpb24gdGFibGUiLAorCWJyZWxfbW92ZSwgYm1vdmU7CisKK3JlcXVlc3QgZG9fYnJlbF9kZWxldGUsICJEZWxldGUgYW4gZW50cnkgaW4gdGhlIGJsb2NrIHJlbG9jYXRpb24gdGFibGUiLAorCWJyZWxfZGVsZXRlLCBiZGVsZXRlLCBiZGVsOworCisjCisjIElub2RlIHJlbG9jYXRpb24gdGFibGUgY29tbWFuZHMKKyMKKworcmVxdWVzdCBkb19pcmVsX21hX2NyZWF0ZSwgIk9wZW4gYSBtZW1vcnkgYXJyYXkgaW5vZGUgcmVsb2NhdGlvbiB0YWJsZSIsCisJaXJlbF9tYV9jcmVhdGUsIGltYV9jcmVhdGU7CisKK3JlcXVlc3QgZG9faXJlbF9mcmVlLCAiRnJlZSBhbiBpbm9kZSByZWxvY2F0aW9uIHRhYmxlIiwKKwlpcmVsX2ZyZWUsIGlmcmVlOworCityZXF1ZXN0IGRvX2lyZWxfcHV0LCAiQWRkIG9yIG1vZGlmeSBhbiBpbm9kZSByZWxvY2F0aW9uIGVudHJ5IiwKKwlpcmVsX3B1dCwgaXB1dDsKKworcmVxdWVzdCBkb19pcmVsX2dldCwgIkdldCBhbiBpbm9kZSByZWxvY2F0aW9uIGVudHJ5IiwKKwlpcmVsX2dldCwgaWdldDsKKworcmVxdWVzdCBkb19pcmVsX2dldF9ieV9vcmlnLCAKKwkiR2V0IGFuIGlub2RlIHJlbG9jYXRpb24gZW50cnkgYnkgaXRzIG9yaWdpbmFsIG51bWJlciIsCisJaXJlbF9nZXRfYnlfb3JpZywgaWdldG9yaWcsIGlnZXRvOworCityZXF1ZXN0IGRvX2lyZWxfc3RhcnRfaXRlciwgIlN0YXJ0IGl0ZXJhdGluZyBvdmVyIHRoZSBpbm9kZSB0YWJsZSIsCisJaXJlbF9zdGFydF9pdGVyLCBpc3RhcnQ7CisKK3JlcXVlc3QgZG9faXJlbF9uZXh0LCAiR2V0IHRoZSBuZXh0IGJsb2NrIHJlbG9jYXRpb24gZW50cnkiLAorCWlyZWxfbmV4dCwgaW5leHQ7CisKK3JlcXVlc3QgZG9faXJlbF9kdW1wLCAiRHVtcCB0aGUgaW5vZGUgcmVsb2NhdGlvbiB0YWJsZSIsCisJaXJlbF9kdW1wLCBpZHVtcDsKKworcmVxdWVzdCBkb19pcmVsX2FkZF9yZWYsICJBZGQgYSByZWZlcmVuY2UgdG8gYW4gaW5vZGUgZW50cnkiLAorCWlyZWxfYWRkX3JlZiwgaWFkZHJlZiwgaWFkZHI7CisKK3JlcXVlc3QgZG9faXJlbF9zdGFydF9pdGVyX3JlZiwgIlN0YXJ0IGl0ZXJhdGluZyBvdmVyIHJlZmVyZW5jZXMgdG8gYW4gaW5vZGUiLAorCWlyZWxfc3RhcnRfaXRlcl9yZWYsIGlzdGFydHJlZiwgaXN0YXJ0cjsKKworcmVxdWVzdCBkb19pcmVsX25leHRfcmVmLCAiR2V0IHRoZSBuZXh0IHJlZmVyZW5jZSBmb3IgYW4gaW5vZGUgZW50cnkiLAorCWlyZWxfbmV4dF9yZWYsIGluZXh0cmVmLCBpbmV4dHI7CisKK3JlcXVlc3QgZG9faXJlbF9tb3ZlLCAiTW92ZSBhbiBlbnRyeSBpbiB0aGUgaW5vZGUgcmVsb2NhdGlvbiB0YWJsZSIsIAorCWlyZWxfbW92ZSwgaW1vdmU7CisKK3JlcXVlc3QgZG9faXJlbF9kZWxldGUsICJEZWxldGUgYW4gZW50cnkgaW4gdGhlIGlub2RlIHJlbG9jYXRpb24gdGFibGUiLAorCWlyZWxfZGVsZXRlLCBpZGVsZXRlLCBpZGVsOworCitlbmQ7CmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl8xMDI0X3NtYWxsX2JnL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzEwMjRfc21hbGxfYmcvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzhjYjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl8xMDI0X3NtYWxsX2JnL3NjcmlwdApAQCAtMCwwICsxLDMxIEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJleHQyIDEwMjQgYmxvY2tzaXplIHdpdGggc21hbGwgYmxvY2sgZ3JvdXBzIgorRkVBVFVSRVM9Ii10IGV4dDIgLU8gXnJlc2l6ZV9pbm9kZSAtYiAxMDI0IC1nIDEwMjQiCitTSVpFXzE9NjRNCitTSVpFXzI9MkcKK0xPRz0kdGVzdF9uYW1lLmxvZworRTJGU0NLPS4uL2UyZnNjay9lMmZzY2sKKworCisuICRjbWRfZGlyL3NjcmlwdHMvcmVzaXplX3Rlc3QKKworcmVzaXplX3Rlc3QKK1JDPSQ/CitpZiBbICRSQyAtZXEgMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2VsaWYgWyAkUkMgLWVxIDExMSBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJbG4gJExPRyAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgRkVBVFVSRVMgU0laRV8xIFNJWkVfMiBMT0cgRTJGU0NLCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaSAKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0L2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmYTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdC9leHBlY3QKQEAgLTAsMCArMSw5NCBAQAorcmVzaXplMmZzIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA1MjQyODggMWsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA0NzcgaHVnZSBmaWxlKHMpIHdpdGggMTAyNCBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCityZXNpemUyZnMgdGVzdC5pbWcgLWIKK0NvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LgorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDUyNDI4OCAoMWspIGJsb2NrcyBsb25nLgorCitFeGl0IHN0YXR1cyBpcyAwCitDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6CitAQCAtMiw3ICsyLDcgQEAKKyBMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorIEZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCisgRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorLUZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorIERlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wKKyBGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCisgRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorQEAgLTE1LDcgKzE1LDggQEAKKyBGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKKyBCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKKyBGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKKy1SZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1NgorK0dyb3VwIGRlc2NyaXB0b3Igc2l6ZTogICAgNjQKKytSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1NAorIEJsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorIEZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorIElub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMTAyNAorQEAgLTQwLDE2ICs0MSwxNiBAQAorIAorIAorIGdyb3VwOmJsb2NrOnN1cGVyOmdkdDpiYml0bWFwOmliaXRtYXA6aXRhYmxlCistMDoxOjE6Mi0zOjI2MDoyNzY6MjkyCistMTo4MTkzOjgxOTM6ODE5NC04MTk1OjI2MToyNzc6NTQ4CisrMDoxOjE6Mi01OjI2MDoyNzY6MjkyCisrMTo4MTkzOjgxOTM6ODE5NC04MTk3OjI2MToyNzc6NTQ4CisgMjoxNjM4NTotMTotMToyNjI6Mjc4OjgwNAorLTM6MjQ1Nzc6MjQ1Nzc6MjQ1NzgtMjQ1Nzk6MjYzOjI3OToxMDYwCisrMzoyNDU3NzoyNDU3NzoyNDU3OC0yNDU4MToyNjM6Mjc5OjEwNjAKKyA0OjMyNzY5Oi0xOi0xOjI2NDoyODA6MTMxNgorLTU6NDA5NjE6NDA5NjE6NDA5NjItNDA5NjM6MjY1OjI4MToxNTcyCisrNTo0MDk2MTo0MDk2MTo0MDk2Mi00MDk2NToyNjU6MjgxOjE1NzIKKyA2OjQ5MTUzOi0xOi0xOjI2NjoyODI6MTgyOAorLTc6NTczNDU6NTczNDU6NTczNDYtNTczNDc6MjY3OjI4MzoyMDg0CisrNzo1NzM0NTo1NzM0NTo1NzM0Ni01NzM0OToyNjc6MjgzOjIwODQKKyA4OjY1NTM3Oi0xOi0xOjI2ODoyODQ6MjM0MAorLTk6NzM3Mjk6NzM3Mjk6NzM3MzAtNzM3MzE6MjY5OjI4NToyNTk2CisrOTo3MzcyOTo3MzcyOTo3MzczMC03MzczMzoyNjk6Mjg1OjI1OTYKKyAxMDo4MTkyMTotMTotMToyNzA6Mjg2OjI4NTIKKyAxMTo5MDExMzotMTotMToyNzE6Mjg3OjMxMDgKKyAxMjo5ODMwNTotMTotMToyNzI6Mjg4OjMzNjQKK0BAIC02NSw5ICs2Niw5IEBACisgMjI6MTgwMjI1Oi0xOi0xOjEzMTA3OToxMzEwOTU6MTMyNjQxCisgMjM6MTg4NDE3Oi0xOi0xOjEzMTA4MDoxMzEwOTY6MTMyODk3CisgMjQ6MTk2NjA5Oi0xOi0xOjEzMTA4MToxMzEwOTc6MTMzMTUzCistMjU6MjA0ODAxOjIwNDgwMToyMDQ4MDItMjA0ODAzOjEzMTA4MjoxMzEwOTg6MTMzNDA5CisrMjU6MjA0ODAxOjIwNDgwMToyMDQ4MDItMjA0ODA1OjEzMTA4MjoxMzEwOTg6MTMzNDA5CisgMjY6MjEyOTkzOi0xOi0xOjEzMTA4MzoxMzEwOTk6MTMzNjY1CistMjc6MjIxMTg1OjIyMTE4NToyMjExODYtMjIxMTg3OjEzMTA4NDoxMzExMDA6MTMzOTIxCisrMjc6MjIxMTg1OjIyMTE4NToyMjExODYtMjIxMTg5OjEzMTA4NDoxMzExMDA6MTMzOTIxCisgMjg6MjI5Mzc3Oi0xOi0xOjEzMTA4NToxMzExMDE6MTM0MTc3CisgMjk6MjM3NTY5Oi0xOi0xOjEzMTA4NjoxMzExMDI6MTM0NDMzCisgMzA6MjQ1NzYxOi0xOi0xOjEzMTA4NzoxMzExMDM6MTM0Njg5CitAQCAtODksNyArOTAsNyBAQAorIDQ2OjM3NjgzMzotMTotMToyNjIxNTk6MjYyMTc1OjI2NTc2MQorIDQ3OjM4NTAyNTotMTotMToyNjIxNjA6MjYyMTc2OjI2NjAxNworIDQ4OjM5MzIxNzotMTotMTozOTMyMTc6MzkzMjMzOjM5MzI0OQorLTQ5OjQwMTQwOTo0MDE0MDk6NDAxNDEwLTQwMTQxMTozOTMyMTg6MzkzMjM0OjM5MzUwNQorKzQ5OjQwMTQwOTo0MDE0MDk6NDAxNDEwLTQwMTQxMzozOTMyMTg6MzkzMjM0OjM5MzUwNQorIDUwOjQwOTYwMTotMTotMTozOTMyMTk6MzkzMjM1OjM5Mzc2MQorIDUxOjQxNzc5MzotMTotMTozOTMyMjA6MzkzMjM2OjM5NDAxNworIDUyOjQyNTk4NTotMTotMTozOTMyMjE6MzkzMjM3OjM5NDI3MworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXQvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjQ1ZmFiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0L25hbWUKQEAgLTAsMCArMSBAQAorY29udmVydCBmbGV4X2JnIDMyYml0IGZzIHRvIDY0Yml0IGZzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTA4YmZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0L3NjcmlwdApAQCAtMCwwICsxLDc0IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJyZXNpemUyZnMgdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworKCREVU1QRTJGUyAtaCAkVE1QRklMRTsgJERVTVBFMkZTIC1nICRUTVBGSUxFKSAyPiAvZGV2L251bGwgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYmVmb3JlCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIHJlc2l6ZSBpdAorZWNobyAicmVzaXplMmZzIHRlc3QuaW1nIC1iIiA+PiAkT1VUCiskUkVTSVpFMkZTIC1iIC1mICRUTVBGSUxFIDI+JjEgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgZHVtcCBhbmQgY2hlY2sKKygkRFVNUEUyRlMgLWggJFRNUEZJTEU7ICREVU1QRTJGUyAtZyAkVE1QRklMRSkgMj4gL2Rldi9udWxsIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfZXhwYW5kX2Z1bGwvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X2V4cGFuZF9mdWxsL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWUzMGYzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X2V4cGFuZF9mdWxsL2V4cGVjdApAQCAtMCwwICsxLDEzOSBAQAorcmVzaXplMmZzIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA3ODY0MzIgMWsgYmxvY2tzIGFuZCA5ODMwNCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOSwgNjYzNTUzCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDcyNyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3Jlc2l6ZTJmcyAtYiB0ZXN0LmltZworQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byA2NC1iaXQuCitUaGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyBpcyBub3cgNzg2NDMyICgxaykgYmxvY2tzIGxvbmcuCisKK3Jlc2l6ZTJmcyB0ZXN0LmltZworUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgdG8gMTE3OTY0OCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAxMTc5NjQ4ICgxaykgYmxvY2tzIGxvbmcuCisKK0V4aXQgc3RhdHVzIGlzIDAKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0xLDE1ICsxLDE1IEBACisgCisgZ3JvdXA6YmxvY2s6c3VwZXI6Z2R0OmJiaXRtYXA6aWJpdG1hcDppdGFibGUKKy0wOjE6MToyLTc6ODo5OjEwCistMTo4MTkzOjgxOTM6ODE5NC04MTk5OjgyMDA6ODIwMTo4MjAyCisrMDoxOjE6Mi0xMDoyNjY6MjY3OjI2OAorKzE6ODE5Mzo4MTkzOjgxOTQtODIwMjo4NDU4Ojg0NTk6ODQ2MAorIDI6MTYzODU6LTE6LTE6MTYzODU6MTYzODY6MTYzODcKKy0zOjI0NTc3OjI0NTc3OjI0NTc4LTI0NTgzOjI0NTg0OjI0NTg1OjI0NTg2CisrMzoyNDU3NzoyNDU3NzoyNDU3OC0yNDU4NjoyNDg0MjoyNDg0MzoyNDg0NAorIDQ6MzI3Njk6LTE6LTE6MzI3Njk6MzI3NzA6MzI3NzEKKy01OjQwOTYxOjQwOTYxOjQwOTYyLTQwOTY3OjQwOTY4OjQwOTY5OjQwOTcwCisrNTo0MDk2MTo0MDk2MTo0MDk2Mi00MDk3MDo0MTIyNjo0MTIyNzo0MTIyOAorIDY6NDkxNTM6LTE6LTE6NDkxNTM6NDkxNTQ6NDkxNTUKKy03OjU3MzQ1OjU3MzQ1OjU3MzQ2LTU3MzUxOjU3MzUyOjU3MzUzOjU3MzU0CisrNzo1NzM0NTo1NzM0NTo1NzM0Ni01NzM1NDo1NzYxMDo1NzYxMTo1NzYxMgorIDg6NjU1Mzc6LTE6LTE6NjU1Mzc6NjU1Mzg6NjU1MzkKKy05OjczNzI5OjczNzI5OjczNzMwLTczNzM1OjczNzM2OjczNzM3OjczNzM4CisrOTo3MzcyOTo3MzcyOTo3MzczMC03MzczODo3Mzk5NDo3Mzk5NTo3Mzk5NgorIDEwOjgxOTIxOi0xOi0xOjgxOTIxOjgxOTIyOjgxOTIzCisgMTE6OTAxMTM6LTE6LTE6OTAxMTM6OTAxMTQ6OTAxMTUKKyAxMjo5ODMwNTotMTotMTo5ODMwNTo5ODMwNjo5ODMwNworQEAgLTI1LDkgKzI1LDkgQEAKKyAyMjoxODAyMjU6LTE6LTE6MTgwMjI1OjE4MDIyNjoxODAyMjcKKyAyMzoxODg0MTc6LTE6LTE6MTg4NDE3OjE4ODQxODoxODg0MTkKKyAyNDoxOTY2MDk6LTE6LTE6MTk2NjA5OjE5NjYxMDoxOTY2MTEKKy0yNToyMDQ4MDE6MjA0ODAxOjIwNDgwMi0yMDQ4MDc6MjA0ODA4OjIwNDgwOToyMDQ4MTAKKysyNToyMDQ4MDE6MjA0ODAxOjIwNDgwMi0yMDQ4MTA6MjA1MDY2OjIwNTA2NzoyMDUwNjgKKyAyNjoyMTI5OTM6LTE6LTE6MjEyOTkzOjIxMjk5NDoyMTI5OTUKKy0yNzoyMjExODU6MjIxMTg1OjIyMTE4Ni0yMjExOTE6MjIxMTkyOjIyMTE5MzoyMjExOTQKKysyNzoyMjExODU6MjIxMTg1OjIyMTE4Ni0yMjExOTQ6MjIxNDUwOjIyMTQ1MToyMjE0NTIKKyAyODoyMjkzNzc6LTE6LTE6MjI5Mzc3OjIyOTM3ODoyMjkzNzkKKyAyOToyMzc1Njk6LTE6LTE6MjM3NTY5OjIzNzU3MDoyMzc1NzEKKyAzMDoyNDU3NjE6LTE6LTE6MjQ1NzYxOjI0NTc2MjoyNDU3NjMKK0BAIC00OSw3ICs0OSw3IEBACisgNDY6Mzc2ODMzOi0xOi0xOjM3NjgzMzozNzY4MzQ6Mzc2ODM1CisgNDc6Mzg1MDI1Oi0xOi0xOjM4NTAyNTozODUwMjY6Mzg1MDI3CisgNDg6MzkzMjE3Oi0xOi0xOjM5MzIxNzozOTMyMTg6MzkzMjE5CistNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTAtNDAxNDE1OjQwMTQxNjo0MDE0MTc6NDAxNDE4CisrNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTAtNDAxNDE4OjQwMTY3NDo0MDE2NzU6NDAxNjc2CisgNTA6NDA5NjAxOi0xOi0xOjQwOTYwMTo0MDk2MDI6NDA5NjAzCisgNTE6NDE3NzkzOi0xOi0xOjQxNzc5Mzo0MTc3OTQ6NDE3Nzk1CisgNTI6NDI1OTg1Oi0xOi0xOjQyNTk4NTo0MjU5ODY6NDI1OTg3CitAQCAtODEsNyArODEsNyBAQAorIDc4OjYzODk3NzotMTotMTo2Mzg5Nzc6NjM4OTc4OjYzODk3OQorIDc5OjY0NzE2OTotMTotMTo2NDcxNjk6NjQ3MTcwOjY0NzE3MQorIDgwOjY1NTM2MTotMTotMTo2NTUzNjE6NjU1MzYyOjY1NTM2MworLTgxOjY2MzU1Mzo2NjM1NTM6NjYzNTU0LTY2MzU1OTo2NjM1NjA6NjYzNTYxOjY2MzU2MgorKzgxOjY2MzU1Mzo2NjM1NTM6NjYzNTU0LTY2MzU2Mjo2NjM4MTg6NjYzODE5OjY2MzgyMAorIDgyOjY3MTc0NTotMTotMTo2NzE3NDU6NjcxNzQ2OjY3MTc0NworIDgzOjY3OTkzNzotMTotMTo2Nzk5Mzc6Njc5OTM4OjY3OTkzOQorIDg0OjY4ODEyOTotMTotMTo2ODgxMjk6Njg4MTMwOjY4ODEzMQorQEAgLTk2LDMgKzk2LDUxIEBACisgOTM6NzYxODU3Oi0xOi0xOjc2MTg1Nzo3NjE4NTg6NzYxODU5CisgOTQ6NzcwMDQ5Oi0xOi0xOjc3MDA0OTo3NzAwNTA6NzcwMDUxCisgOTU6Nzc4MjQxOi0xOi0xOjc3ODI0MTo3NzgyNDI6Nzc4MjQzCisrOTY6Nzg2NDMzOi0xOi0xOjc4NjQzMzo3ODY0MzQ6Nzg2NDM1CisrOTc6Nzk0NjI1Oi0xOi0xOjc5NDYyNTo3OTQ2MjY6Nzk0NjI3CisrOTg6ODAyODE3Oi0xOi0xOjgwMjgxNzo4MDI4MTg6ODAyODE5CisrOTk6ODExMDA5Oi0xOi0xOjgxMTAwOTo4MTEwMTA6ODExMDExCisrMTAwOjgxOTIwMTotMTotMTo4MTkyMDE6ODE5MjAyOjgxOTIwMworKzEwMTo4MjczOTM6LTE6LTE6ODI3MzkzOjgyNzM5NDo4MjczOTUKKysxMDI6ODM1NTg1Oi0xOi0xOjgzNTU4NTo4MzU1ODY6ODM1NTg3CisrMTAzOjg0Mzc3NzotMTotMTo4NDM3Nzc6ODQzNzc4Ojg0Mzc3OQorKzEwNDo4NTE5Njk6LTE6LTE6ODUxOTY5Ojg1MTk3MDo4NTE5NzEKKysxMDU6ODYwMTYxOi0xOi0xOjg2MDE2MTo4NjAxNjI6ODYwMTYzCisrMTA2Ojg2ODM1MzotMTotMTo4NjgzNTM6ODY4MzU0Ojg2ODM1NQorKzEwNzo4NzY1NDU6LTE6LTE6ODc2NTQ1Ojg3NjU0Njo4NzY1NDcKKysxMDg6ODg0NzM3Oi0xOi0xOjg4NDczNzo4ODQ3Mzg6ODg0NzM5CisrMTA5Ojg5MjkyOTotMTotMTo4OTI5Mjk6ODkyOTMwOjg5MjkzMQorKzExMDo5MDExMjE6LTE6LTE6OTAxMTIxOjkwMTEyMjo5MDExMjMKKysxMTE6OTA5MzEzOi0xOi0xOjkwOTMxMzo5MDkzMTQ6OTA5MzE1CisrMTEyOjkxNzUwNTotMTotMTo5MTc1MDU6OTE3NTA2OjkxNzUwNworKzExMzo5MjU2OTc6LTE6LTE6OTI1Njk3OjkyNTY5ODo5MjU2OTkKKysxMTQ6OTMzODg5Oi0xOi0xOjkzMzg4OTo5MzM4OTA6OTMzODkxCisrMTE1Ojk0MjA4MTotMTotMTo5NDIwODE6OTQyMDgyOjk0MjA4MworKzExNjo5NTAyNzM6LTE6LTE6OTUwMjczOjk1MDI3NDo5NTAyNzUKKysxMTc6OTU4NDY1Oi0xOi0xOjk1ODQ2NTo5NTg0NjY6OTU4NDY3CisrMTE4Ojk2NjY1NzotMTotMTo5NjY2NTc6OTY2NjU4Ojk2NjY1OQorKzExOTo5NzQ4NDk6LTE6LTE6OTc0ODQ5Ojk3NDg1MDo5NzQ4NTEKKysxMjA6OTgzMDQxOi0xOi0xOjk4MzA0MTo5ODMwNDI6OTgzMDQzCisrMTIxOjk5MTIzMzotMTotMTo5OTEyMzM6OTkxMjM0Ojk5MTIzNQorKzEyMjo5OTk0MjU6LTE6LTE6OTk5NDI1Ojk5OTQyNjo5OTk0MjcKKysxMjM6MTAwNzYxNzotMTotMToxMDA3NjE3OjEwMDc2MTg6MTAwNzYxOQorKzEyNDoxMDE1ODA5Oi0xOi0xOjEwMTU4MDk6MTAxNTgxMDoxMDE1ODExCisrMTI1OjEwMjQwMDE6MTAyNDAwMToxMDI0MDAyLTEwMjQwMTA6MTAyNDAxMToxMDI0MDEyOjEwMjQwMTMKKysxMjY6MTAzMjE5MzotMTotMToxMDMyMTkzOjEwMzIxOTQ6MTAzMjE5NQorKzEyNzoxMDQwMzg1Oi0xOi0xOjEwNDAzODU6MTA0MDM4NjoxMDQwMzg3CisrMTI4OjEwNDg1Nzc6LTE6LTE6MTA0ODU3NzoxMDQ4NTc4OjEwNDg1NzkKKysxMjk6MTA1Njc2OTotMTotMToxMDU2NzY5OjEwNTY3NzA6MTA1Njc3MQorKzEzMDoxMDY0OTYxOi0xOi0xOjEwNjQ5NjE6MTA2NDk2MjoxMDY0OTYzCisrMTMxOjEwNzMxNTM6LTE6LTE6MTA3MzE1MzoxMDczMTU0OjEwNzMxNTUKKysxMzI6MTA4MTM0NTotMTotMToxMDgxMzQ1OjEwODEzNDY6MTA4MTM0NworKzEzMzoxMDg5NTM3Oi0xOi0xOjEwODk1Mzc6MTA4OTUzODoxMDg5NTM5CisrMTM0OjEwOTc3Mjk6LTE6LTE6MTA5NzcyOToxMDk3NzMwOjEwOTc3MzEKKysxMzU6MTEwNTkyMTotMTotMToxMTA1OTIxOjExMDU5MjI6MTEwNTkyMworKzEzNjoxMTE0MTEzOi0xOi0xOjExMTQxMTM6MTExNDExNDoxMTE0MTE1CisrMTM3OjExMjIzMDU6LTE6LTE6MTEyMjMwNToxMTIyMzA2OjExMjIzMDcKKysxMzg6MTEzMDQ5NzotMTotMToxMTMwNDk3OjExMzA0OTg6MTEzMDQ5OQorKzEzOToxMTM4Njg5Oi0xOi0xOjExMzg2ODk6MTEzODY5MDoxMTM4NjkxCisrMTQwOjExNDY4ODE6LTE6LTE6MTE0Njg4MToxMTQ2ODgyOjExNDY4ODMKKysxNDE6MTE1NTA3MzotMTotMToxMTU1MDczOjExNTUwNzQ6MTE1NTA3NQorKzE0MjoxMTYzMjY1Oi0xOi0xOjExNjMyNjU6MTE2MzI2NjoxMTYzMjY3CisrMTQzOjExNzE0NTc6LTE6LTE6MTE3MTQ1NzoxMTcxNDU4OjExNzE0NTkKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9leHBhbmRfZnVsbC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X2V4cGFuZF9mdWxsL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYwNDYwMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9leHBhbmRfZnVsbC9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbnZlcnQgYSB0b3RhbGx5IGZ1bGwgZmlsZXN5c3RlbSB0byA2NGJpdCwgdGhlbiBleHBhbmQKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9leHBhbmRfZnVsbC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfZXhwYW5kX2Z1bGwvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNTcwODQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfZXhwYW5kX2Z1bGwvc2NyaXB0CkBAIC0wLDAgKzEsODMgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKKyNnemlwIC1kIDwgJEVYUC5neiA+ICRFWFAKKworY2F0ID4gJENPTkYgPDwgRU5ETAorW2ZzX3R5cGVzXQorCWV4dDRoID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLF5yZXNpemVfaW5vZGUsXm1ldGFfYmcsXmZsZXhfYmcKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJyZXNpemUyZnMgdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA3ODY0MzIgPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBjaGVjaworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjb252ZXJ0IGl0CitlY2hvICJyZXNpemUyZnMgLWIgdGVzdC5pbWciID4+ICRPVVQKKyRSRVNJWkUyRlMgLWIgLWYgJFRNUEZJTEUgMj4mMSA+PiAkT1VUIDI+JjEKKyREVU1QRTJGUyAtZyAkVE1QRklMRSAyPiYxID4+ICRPVVQuYmVmb3JlIDI+IC9kZXYvbnVsbAorCisjIGdyb3cgaXQKK2VjaG8gInJlc2l6ZTJmcyB0ZXN0LmltZyIgPj4gJE9VVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGNvbnY9bm90cnVuYyBicz0xIGNvdW50PTEgc2Vlaz0xMjA3OTU5NTUyIDI+IC9kZXYvbnVsbAorJFJFU0laRTJGUyAtZiAkVE1QRklMRSAyPiYxID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgLWcgJFRNUEZJTEUgMj4mMSA+PiAkT1VULmFmdGVyIDI+IC9kZXYvbnVsbAorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtdSAkT1VULmJlZm9yZSAkT1VULmFmdGVyIHwgdGFpbCAtbiArMyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRQorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCitybSAkT1VULmJlZm9yZSAkT1VULmFmdGVyCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgorCitlbHNlICNpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21ldGEvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21ldGEvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYWNkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbWV0YS9leHBlY3QKQEAgLTAsMCArMSw4MCBAQAorcmVzaXplMmZzIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA1MjQyODggMWsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA0NzkgaHVnZSBmaWxlKHMpIHdpdGggMTAyNCBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCityZXNpemUyZnMgdGVzdC5pbWcgLWIKK0NvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LgorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDUyNDI4OCAoMWspIGJsb2NrcyBsb25nLgorCitFeGl0IHN0YXR1cyBpcyAwCitDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6CitAQCAtMiw3ICsyLDcgQEAKKyBMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorIEZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCisgRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorLUZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgZGlyX2luZGV4IGZpbGV0eXBlIG1ldGFfYmcgZXh0ZW50IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIGRpcl9pbmRleCBmaWxldHlwZSBtZXRhX2JnIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCisgRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICB1c2VyX3hhdHRyIGFjbAorIEZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KKyBFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitAQCAtMTAsMTEgKzEwLDEyIEBACisgSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorIEJsb2NrIGNvdW50OiAgICAgICAgICAgICAgNTI0Mjg4CisgUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAyNjIxNAorLUZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgODU4CisrRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA4NTIKKyBGcmVlIGlub2RlczogICAgICAgICAgICAgIDY1MDQ2CisgRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCisgQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CisgRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CisrR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICA2NAorIEJsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgODE5MgorIEZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgODE5MgorIElub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMTAyNAorQEAgLTU0LDkgKzU1LDkgQEAKKyAxMjo5ODMwNTotMTotMToxNTozMTozMTA3CisgMTM6MTA2NDk3Oi0xOi0xOjE2OjMyOjMzNjMKKyAxNDoxMTQ2ODk6LTE6LTE6MTc6MzM6MzYxOQorLTE1OjEyMjg4MTotMTotMToxODozNDozODc1CistMTY6MTMxMDczOi0xOi0xOjEzMTA3MzoxMzEwODk6MTMxMTA1CistMTc6MTM5MjY1Oi0xOi0xOjEzMTA3NDoxMzEwOTA6MTMxMzYxCisrMTU6MTIyODgxOi0xOjEyMjg4MToxODozNDozODc1CisrMTY6MTMxMDczOi0xOjEzMTA3MzoxMzUyMDE6MTMxMDg5OjEzMTEwNQorKzE3OjEzOTI2NTotMToxMzkyNjU6MTMxMDc0OjEzMTA5MDoxMzEzNjEKKyAxODoxNDc0NTc6LTE6LTE6MTMxMDc1OjEzMTA5MToxMzE2MTcKKyAxOToxNTU2NDk6LTE6LTE6MTMxMDc2OjEzMTA5MjoxMzE4NzMKKyAyMDoxNjM4NDE6LTE6LTE6MTMxMDc3OjEzMTA5MzoxMzIxMjkKK0BAIC04Niw5ICs4Nyw5IEBACisgNDQ6MzYwNDQ5Oi0xOi0xOjI2MjE1ODoyNjIxNzQ6MjY1MjUwCisgNDU6MzY4NjQxOi0xOi0xOjI2MjE1OToyNjIxNzU6MjY1NTA2CisgNDY6Mzc2ODMzOi0xOi0xOjI2MjE2MDoyNjIxNzY6MjY1NzYyCistNDc6Mzg1MDI1Oi0xOi0xOjI2MjE2MToyNjIxNzc6MjY2MDE4CistNDg6MzkzMjE3Oi0xOi0xOjM5MzIxNzozOTMyMzM6MzkzMjQ5CistNDk6NDAxNDA5OjQwMTQwOTotMTozOTMyMTg6MzkzMjM0OjM5MzUwNQorKzQ3OjM4NTAyNTotMTozODUwMjU6MjYyMTYxOjI2MjE3NzoyNjYwMTgKKys0ODozOTMyMTc6LTE6MzkzMjE3OjM5NzM0NTozOTMyMzM6MzkzMjQ5CisrNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTA6MzkzMjE4OjM5MzIzNDozOTM1MDUKKyA1MDo0MDk2MDE6LTE6LTE6MzkzMjE5OjM5MzIzNTozOTM3NjEKKyA1MTo0MTc3OTM6LTE6LTE6MzkzMjIwOjM5MzIzNjozOTQwMTcKKyA1Mjo0MjU5ODU6LTE6LTE6MzkzMjIxOjM5MzIzNzozOTQyNzMKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9tZXRhL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbWV0YS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MzQ5MmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbWV0YS9uYW1lCkBAIC0wLDAgKzEgQEAKK2NvbnZlcnQgbWV0YV9iZyAzMmJpdCBmcyB0byA2NGJpdCBmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21ldGEvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21ldGEvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ODcyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbWV0YS9zY3JpcHQKQEAgLTAsMCArMSw3NCBAQAoraWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LWZuCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitDT05GPSRUTVBGSUxFLmNvbmYKKworY2F0ID4gJENPTkYgPDwgRU5ETAorW2ZzX3R5cGVzXQorCWV4dDRoID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIsbWV0YV9iZyxecmVzaXplX2lub2RlCisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMAorCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMU0KKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyAicmVzaXplMmZzIHRlc3QiID4gJE9VVAorCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLUYgLVQgZXh0NGggJFRNUEZJTEUgNTI0Mjg4ID4+ICRPVVQgMj4mMQorcm0gLXJmICRDT05GCisKKyMgZHVtcCBhbmQgY2hlY2sKKygkRFVNUEUyRlMgLWggJFRNUEZJTEU7ICREVU1QRTJGUyAtZyAkVE1QRklMRSkgMj4gL2Rldi9udWxsIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyByZXNpemUgaXQKK2VjaG8gInJlc2l6ZTJmcyB0ZXN0LmltZyAtYiIgPj4gJE9VVAorJFJFU0laRTJGUyAtYiAtZiAkVE1QRklMRSAyPiYxID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGR1bXAgYW5kIGNoZWNrCisoJERVTVBFMkZTIC1oICRUTVBGSUxFOyAkRFVNUEUyRlMgLWcgJFRNUEZJTEUpIDI+IC9kZXYvbnVsbCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5hZnRlcgorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtdSAkT1VULmJlZm9yZSAkT1VULmFmdGVyIHwgdGFpbCAtbiArMyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRSAkT1VULmJlZm9yZSAkT1VULmFmdGVyCisKKyMKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorIworCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIC1lICdzL3Rlc3RfZmlsZXN5czouKi8vZycgPCAkT1VUID4gJE9VVC5uZXcKK212ICRPVVQubmV3ICRPVVQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgorCitlbHNlICNpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21vdmVfaXRhYmxlL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9tb3ZlX2l0YWJsZS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxNjYzZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yXzMydG82NGJpdF9tb3ZlX2l0YWJsZS9leHBlY3QKQEAgLTAsMCArMSwxMDcgQEAKK3Jlc2l6ZTJmcyB0ZXN0CitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNzg2NDMyIDFrIGJsb2NrcyBhbmQgOTgzMDQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDksIDY2MzU1MworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA3MjcgaHVnZSBmaWxlKHMpIHdpdGggMTAyNCBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCityZXNpemUyZnMgdGVzdC5pbWcgLWIKK0NvbnZlcnRpbmcgdGhlIGZpbGVzeXN0ZW0gdG8gNjQtYml0LgorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDc4NjQzMiAoMWspIGJsb2NrcyBsb25nLgorCitFeGl0IHN0YXR1cyBpcyAwCitDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6CitAQCAtMiw3ICsyLDcgQEAKKyBMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorIEZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCisgRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorLUZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorIERlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wKKyBGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCisgRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorQEAgLTEwLDExICsxMCwxMiBAQAorIElub2RlIGNvdW50OiAgICAgICAgICAgICAgOTgzMDQKKyBCbG9jayBjb3VudDogICAgICAgICAgICAgIDc4NjQzMgorIFJlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMzkzMjEKKy1GcmVlIGJsb2NrczogICAgICAgICAgICAgIDc2NAorK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgNzM0CisgRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA5NzU2NgorIEZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorIEJsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorIEZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorK0dyb3VwIGRlc2NyaXB0b3Igc2l6ZTogICAgNjQKKyBCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKKyBGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDgxOTIKKyBJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDEwMjQKK0BAIC0zOCwxNiArMzksMTYgQEAKKyAKKyAKKyBncm91cDpibG9jazpzdXBlcjpnZHQ6YmJpdG1hcDppYml0bWFwOml0YWJsZQorLTA6MToxOjItNDo1OjY6NworLTE6ODE5Mzo4MTkzOjgxOTQtODE5Njo4MTk3OjgxOTg6ODE5OQorKzA6MToxOjItNzo4Ojk6MTAKKysxOjgxOTM6ODE5Mzo4MTk0LTgxOTk6ODIwMDo4MjAxOjgyMDIKKyAyOjE2Mzg1Oi0xOi0xOjE2Mzg1OjE2Mzg2OjE2Mzg3CistMzoyNDU3NzoyNDU3NzoyNDU3OC0yNDU4MDoyNDU4MToyNDU4MjoyNDU4MworKzM6MjQ1Nzc6MjQ1Nzc6MjQ1NzgtMjQ1ODM6MjQ1ODQ6MjQ1ODU6MjQ1ODYKKyA0OjMyNzY5Oi0xOi0xOjMyNzY5OjMyNzcwOjMyNzcxCistNTo0MDk2MTo0MDk2MTo0MDk2Mi00MDk2NDo0MDk2NTo0MDk2Njo0MDk2NworKzU6NDA5NjE6NDA5NjE6NDA5NjItNDA5Njc6NDA5Njg6NDA5Njk6NDA5NzAKKyA2OjQ5MTUzOi0xOi0xOjQ5MTUzOjQ5MTU0OjQ5MTU1CistNzo1NzM0NTo1NzM0NTo1NzM0Ni01NzM0ODo1NzM0OTo1NzM1MDo1NzM1MQorKzc6NTczNDU6NTczNDU6NTczNDYtNTczNTE6NTczNTI6NTczNTM6NTczNTQKKyA4OjY1NTM3Oi0xOi0xOjY1NTM3OjY1NTM4OjY1NTM5CistOTo3MzcyOTo3MzcyOTo3MzczMC03MzczMjo3MzczMzo3MzczNDo3MzczNQorKzk6NzM3Mjk6NzM3Mjk6NzM3MzAtNzM3MzU6NzM3MzY6NzM3Mzc6NzM3MzgKKyAxMDo4MTkyMTotMTotMTo4MTkyMTo4MTkyMjo4MTkyMworIDExOjkwMTEzOi0xOi0xOjkwMTEzOjkwMTE0OjkwMTE1CisgMTI6OTgzMDU6LTE6LTE6OTgzMDU6OTgzMDY6OTgzMDcKK0BAIC02Myw5ICs2NCw5IEBACisgMjI6MTgwMjI1Oi0xOi0xOjE4MDIyNToxODAyMjY6MTgwMjI3CisgMjM6MTg4NDE3Oi0xOi0xOjE4ODQxNzoxODg0MTg6MTg4NDE5CisgMjQ6MTk2NjA5Oi0xOi0xOjE5NjYwOToxOTY2MTA6MTk2NjExCistMjU6MjA0ODAxOjIwNDgwMToyMDQ4MDItMjA0ODA0OjIwNDgwNToyMDQ4MDY6MjA0ODA3CisrMjU6MjA0ODAxOjIwNDgwMToyMDQ4MDItMjA0ODA3OjIwNDgwODoyMDQ4MDk6MjA0ODEwCisgMjY6MjEyOTkzOi0xOi0xOjIxMjk5MzoyMTI5OTQ6MjEyOTk1CistMjc6MjIxMTg1OjIyMTE4NToyMjExODYtMjIxMTg4OjIyMTE4OToyMjExOTA6MjIxMTkxCisrMjc6MjIxMTg1OjIyMTE4NToyMjExODYtMjIxMTkxOjIyMTE5MjoyMjExOTM6MjIxMTk0CisgMjg6MjI5Mzc3Oi0xOi0xOjIyOTM3NzoyMjkzNzg6MjI5Mzc5CisgMjk6MjM3NTY5Oi0xOi0xOjIzNzU2OToyMzc1NzA6MjM3NTcxCisgMzA6MjQ1NzYxOi0xOi0xOjI0NTc2MToyNDU3NjI6MjQ1NzYzCitAQCAtODcsNyArODgsNyBAQAorIDQ2OjM3NjgzMzotMTotMTozNzY4MzM6Mzc2ODM0OjM3NjgzNQorIDQ3OjM4NTAyNTotMTotMTozODUwMjU6Mzg1MDI2OjM4NTAyNworIDQ4OjM5MzIxNzotMTotMTozOTMyMTc6MzkzMjE4OjM5MzIxOQorLTQ5OjQwMTQwOTo0MDE0MDk6NDAxNDEwLTQwMTQxMjo0MDE0MTM6NDAxNDE0OjQwMTQxNQorKzQ5OjQwMTQwOTo0MDE0MDk6NDAxNDEwLTQwMTQxNTo0MDE0MTY6NDAxNDE3OjQwMTQxOAorIDUwOjQwOTYwMTotMTotMTo0MDk2MDE6NDA5NjAyOjQwOTYwMworIDUxOjQxNzc5MzotMTotMTo0MTc3OTM6NDE3Nzk0OjQxNzc5NQorIDUyOjQyNTk4NTotMTotMTo0MjU5ODU6NDI1OTg2OjQyNTk4NworQEAgLTExOSw3ICsxMjAsNyBAQAorIDc4OjYzODk3NzotMTotMTo2Mzg5Nzc6NjM4OTc4OjYzODk3OQorIDc5OjY0NzE2OTotMTotMTo2NDcxNjk6NjQ3MTcwOjY0NzE3MQorIDgwOjY1NTM2MTotMTotMTo2NTUzNjE6NjU1MzYyOjY1NTM2MworLTgxOjY2MzU1Mzo2NjM1NTM6NjYzNTU0LTY2MzU1Njo2NjM1NTc6NjYzNTU4OjY2MzU1OQorKzgxOjY2MzU1Mzo2NjM1NTM6NjYzNTU0LTY2MzU1OTo2NjM1NjA6NjYzNTYxOjY2MzU2MgorIDgyOjY3MTc0NTotMTotMTo2NzE3NDU6NjcxNzQ2OjY3MTc0NworIDgzOjY3OTkzNzotMTotMTo2Nzk5Mzc6Njc5OTM4OjY3OTkzOQorIDg0OjY4ODEyOTotMTotMTo2ODgxMjk6Njg4MTMwOjY4ODEzMQorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21vdmVfaXRhYmxlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbW92ZV9pdGFibGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZiYjI1Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21vdmVfaXRhYmxlL25hbWUKQEAgLTAsMCArMSBAQAorY29udmVydCAzMmJpdCBmcyB0byA2NGJpdCBmcywgZm9yY2luZyBpbm9kZSB0YWJsZSBtb3ZlCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl8zMnRvNjRiaXRfbW92ZV9pdGFibGUvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21vdmVfaXRhYmxlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTg4YWNkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfMzJ0bzY0Yml0X21vdmVfaXRhYmxlL3NjcmlwdApAQCAtMCwwICsxLDc0IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIsXnJlc2l6ZV9pbm9kZSxebWV0YV9iZyxeZmxleF9iZworCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInJlc2l6ZTJmcyB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoICRUTVBGSUxFIDc4NjQzMiA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCisoJERVTVBFMkZTIC1oICRUTVBGSUxFOyAkRFVNUEUyRlMgLWcgJFRNUEZJTEUpIDI+IC9kZXYvbnVsbCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5iZWZvcmUKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgY29udmVydCBpdAorZWNobyAicmVzaXplMmZzIHRlc3QuaW1nIC1iIiA+PiAkT1VUCiskUkVTSVpFMkZTIC1iIC1mICRUTVBGSUxFIDI+JjEgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgZHVtcCBhbmQgY2hlY2sKKygkRFVNUEUyRlMgLWggJFRNUEZJTEU7ICREVU1QRTJGUyAtZyAkVE1QRklMRSkgMj4gL2Rldi9udWxsIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl82NGJpdF9iaWdfZXhwYW5kL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzY0Yml0X2JpZ19leHBhbmQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMTlmMGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl82NGJpdF9iaWdfZXhwYW5kL3NjcmlwdApAQCAtMCwwICsxLDM2IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJ2ZXJ5IGxhcmdlIGZzIGdyb3d0aCB1c2luZyBleHQ0IHcvNjRiaXQiCitGRUFUVVJFUz0iLXQgZXh0NCAtTyA2NGJpdCIKK1NJWkVfMT01MTJNCitTSVpFXzI9MlQKK0xPRz0kdGVzdF9uYW1lLmxvZworRTJGU0NLPS4uL2UyZnNjay9lMmZzY2sKKworaWYgWyAkKHVuYW1lIC1zKSA9ICJGcmVlQlNEIiBdOyB0aGVuCisJIyBjcmVhdGVzIGEgMlRCIGZpbGVzeXN0ZW0KKwllY2hvICIkdGVzdF9uYW1lOiAkREVTQ1JJUFRJT046IHNraXBwZWQgZm9yIEZyZWVCU0QiCisJcmV0dXJuIDAKK2ZpCisKKy4gJGNtZF9kaXIvc2NyaXB0cy9yZXNpemVfdGVzdAorCityZXNpemVfdGVzdAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxpZiBbICRSQyAtZXEgMTExIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlsbiAkTE9HICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBGRUFUVVJFUyBTSVpFXzEgU0laRV8yIExPRyBFMkZTQ0sKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0L2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2U5NGEyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0L2V4cGVjdApAQCAtMCwwICsxLDk4IEBACityZXNpemUyZnMgdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ3NyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3Jlc2l6ZTJmcyB0ZXN0LmltZyAtcworQ29udmVydGluZyB0aGUgZmlsZXN5c3RlbSB0byAzMi1iaXQuCitUaGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyBpcyBub3cgNTI0Mjg4ICgxaykgYmxvY2tzIGxvbmcuCisKK0V4aXQgc3RhdHVzIGlzIDAKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0yLDcgKzIsNyBAQAorIExhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CisgRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKKyBGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCistRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCisrRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCisgRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICB1c2VyX3hhdHRyIGFjbAorIEZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KKyBFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitAQCAtMTAsMTIgKzEwLDExIEBACisgSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorIEJsb2NrIGNvdW50OiAgICAgICAgICAgICAgNTI0Mjg4CisgUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAyNjIxNAorLUZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgNTcxCisrRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA1ODkKKyBGcmVlIGlub2RlczogICAgICAgICAgICAgIDY1MDQ4CisgRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCisgQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CisgRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CistR3JvdXAgZGVzY3JpcHRvciBzaXplOiAgICA2NAorIFJlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMjU2CisgQmxvY2tzIHBlciBncm91cDogICAgICAgICA4MTkyCisgRnJhZ21lbnRzIHBlciBncm91cDogICAgICA4MTkyCitAQCAtNDEsMTYgKzQwLDE2IEBACisgCisgCisgZ3JvdXA6YmxvY2s6c3VwZXI6Z2R0OmJiaXRtYXA6aWJpdG1hcDppdGFibGUKKy0wOjE6MToyLTU6MjYyOjI3ODoyOTQKKy0xOjgxOTM6ODE5Mzo4MTk0LTgxOTc6MjYzOjI3OTo1NTAKKyswOjE6MToyLTM6MjYyOjI3ODoyOTQKKysxOjgxOTM6ODE5Mzo4MTk0LTgxOTU6MjYzOjI3OTo1NTAKKyAyOjE2Mzg1Oi0xOi0xOjI2NDoyODA6ODA2CistMzoyNDU3NzoyNDU3NzoyNDU3OC0yNDU4MToyNjU6MjgxOjEwNjIKKyszOjI0NTc3OjI0NTc3OjI0NTc4LTI0NTc5OjI2NToyODE6MTA2MgorIDQ6MzI3Njk6LTE6LTE6MjY2OjI4MjoxMzE4CistNTo0MDk2MTo0MDk2MTo0MDk2Mi00MDk2NToyNjc6MjgzOjE1NzQKKys1OjQwOTYxOjQwOTYxOjQwOTYyLTQwOTYzOjI2NzoyODM6MTU3NAorIDY6NDkxNTM6LTE6LTE6MjY4OjI4NDoxODMwCistNzo1NzM0NTo1NzM0NTo1NzM0Ni01NzM0OToyNjk6Mjg1OjIwODYKKys3OjU3MzQ1OjU3MzQ1OjU3MzQ2LTU3MzQ3OjI2OToyODU6MjA4NgorIDg6NjU1Mzc6LTE6LTE6MjcwOjI4NjoyMzQyCistOTo3MzcyOTo3MzcyOTo3MzczMC03MzczMzoyNzE6Mjg3OjI1OTgKKys5OjczNzI5OjczNzI5OjczNzMwLTczNzMxOjI3MToyODc6MjU5OAorIDEwOjgxOTIxOi0xOi0xOjI3MjoyODg6Mjg1NAorIDExOjkwMTEzOi0xOi0xOjI3MzoyODk6MzExMAorIDEyOjk4MzA1Oi0xOi0xOjI3NDoyOTA6MzM2NgorQEAgLTY2LDkgKzY1LDkgQEAKKyAyMjoxODAyMjU6LTE6LTE6MTMxMDc5OjEzMTA5NToxMzI2NDEKKyAyMzoxODg0MTc6LTE6LTE6MTMxMDgwOjEzMTA5NjoxMzI4OTcKKyAyNDoxOTY2MDk6LTE6LTE6MTMxMDgxOjEzMTA5NzoxMzMxNTMKKy0yNToyMDQ4MDE6MjA0ODAxOjIwNDgwMi0yMDQ4MDU6MTMxMDgyOjEzMTA5ODoxMzM0MDkKKysyNToyMDQ4MDE6MjA0ODAxOjIwNDgwMi0yMDQ4MDM6MTMxMDgyOjEzMTA5ODoxMzM0MDkKKyAyNjoyMTI5OTM6LTE6LTE6MTMxMDgzOjEzMTA5OToxMzM2NjUKKy0yNzoyMjExODU6MjIxMTg1OjIyMTE4Ni0yMjExODk6MTMxMDg0OjEzMTEwMDoxMzM5MjEKKysyNzoyMjExODU6MjIxMTg1OjIyMTE4Ni0yMjExODc6MTMxMDg0OjEzMTEwMDoxMzM5MjEKKyAyODoyMjkzNzc6LTE6LTE6MTMxMDg1OjEzMTEwMToxMzQxNzcKKyAyOToyMzc1Njk6LTE6LTE6MTMxMDg2OjEzMTEwMjoxMzQ0MzMKKyAzMDoyNDU3NjE6LTE6LTE6MTMxMDg3OjEzMTEwMzoxMzQ2ODkKK0BAIC05MCw3ICs4OSw3IEBACisgNDY6Mzc2ODMzOi0xOi0xOjI2MjE1OToyNjIxNzU6MjY1NzYxCisgNDc6Mzg1MDI1Oi0xOi0xOjI2MjE2MDoyNjIxNzY6MjY2MDE3CisgNDg6MzkzMjE3Oi0xOi0xOjM5MzIxNzozOTMyMzM6MzkzMjQ5CistNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTAtNDAxNDEzOjM5MzIxODozOTMyMzQ6MzkzNTA1CisrNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTAtNDAxNDExOjM5MzIxODozOTMyMzQ6MzkzNTA1CisgNTA6NDA5NjAxOi0xOi0xOjM5MzIxOTozOTMyMzU6MzkzNzYxCisgNTE6NDE3NzkzOi0xOi0xOjM5MzIyMDozOTMyMzY6Mzk0MDE3CisgNTI6NDI1OTg1Oi0xOi0xOjM5MzIyMTozOTMyMzc6Mzk0MjczCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXQvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjODIzNzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXQvbmFtZQpAQCAtMCwwICsxIEBACitjb252ZXJ0IGZsZXhfYmcgNjRiaXQgZnMgdG8gMzJiaXQgZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkOTU5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXQvc2NyaXB0CkBAIC0wLDAgKzEsNzYgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLHJlc2l6ZV9pbm9kZSw2NGJpdAorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInJlc2l6ZTJmcyB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCisoJERVTVBFMkZTIC1oICRUTVBGSUxFOyAkRFVNUEUyRlMgLWcgJFRNUEZJTEUpIDI+IC9kZXYvbnVsbCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5iZWZvcmUKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgcmVzaXplIGl0CitlY2hvICJyZXNpemUyZnMgdGVzdC5pbWcgLXMiID4+ICRPVVQKKyRSRVNJWkUyRlMgLXMgLWYgJFRNUEZJTEUgMj4mMSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBkdW1wIGFuZCBjaGVjaworKCREVU1QRTJGUyAtaCAkVE1QRklMRTsgJERVTVBFMkZTIC1nICRUTVBGSUxFKSAyPiAvZGV2L251bGwgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYWZ0ZXIKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKworcm0gJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdF9tZXRhL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdF9tZXRhL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmUyZGNjCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0X21ldGEvZXhwZWN0CkBAIC0wLDAgKzEsODAgQEAKK3Jlc2l6ZTJmcyB0ZXN0CitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNTI0Mjg4IDFrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDkKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorQ3JlYXRpbmcgNDc5IGh1Z2UgZmlsZShzKSB3aXRoIDEwMjQgYmxvY2tzIGVhY2g6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMAorcmVzaXplMmZzIHRlc3QuaW1nIC1zCitDb252ZXJ0aW5nIHRoZSBmaWxlc3lzdGVtIHRvIDMyLWJpdC4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyA1MjQyODggKDFrKSBibG9ja3MgbG9uZy4KKworRXhpdCBzdGF0dXMgaXMgMAorQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTIsNyArMiw3IEBACisgTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KKyBGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworIEZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIGRpcl9pbmRleCBmaWxldHlwZSBtZXRhX2JnIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSB1bmluaXRfYmcgZGlyX25saW5rIGV4dHJhX2lzaXplCisrRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciBkaXJfaW5kZXggZmlsZXR5cGUgbWV0YV9iZyBleHRlbnQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorIERlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wKKyBGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCisgRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorQEAgLTEwLDEyICsxMCwxMSBAQAorIElub2RlIGNvdW50OiAgICAgICAgICAgICAgNjU1MzYKKyBCbG9jayBjb3VudDogICAgICAgICAgICAgIDUyNDI4OAorIFJlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMjYyMTQKKy1GcmVlIGJsb2NrczogICAgICAgICAgICAgIDg1MgorK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgODU4CisgRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA2NTA0NgorIEZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorIEJsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorIEZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorLUdyb3VwIGRlc2NyaXB0b3Igc2l6ZTogICAgNjQKKyBCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDgxOTIKKyBGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDgxOTIKKyBJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDEwMjQKK0BAIC01NSw5ICs1NCw5IEBACisgMTI6OTgzMDU6LTE6LTE6MTU6MzE6MzEwNworIDEzOjEwNjQ5NzotMTotMToxNjozMjozMzYzCisgMTQ6MTE0Njg5Oi0xOi0xOjE3OjMzOjM2MTkKKy0xNToxMjI4ODE6LTE6MTIyODgxOjE4OjM0OjM4NzUKKy0xNjoxMzEwNzM6LTE6MTMxMDczOjEzMTA3NDoxMzEwOTA6MTMxMTA2CistMTc6MTM5MjY1Oi0xOjEzOTI2NToxMzEwNzU6MTMxMDkxOjEzMTM2MgorKzE1OjEyMjg4MTotMTotMToxODozNDozODc1CisrMTY6MTMxMDczOi0xOi0xOjEzMTA3NDoxMzEwOTA6MTMxMTA2CisrMTc6MTM5MjY1Oi0xOi0xOjEzMTA3NToxMzEwOTE6MTMxMzYyCisgMTg6MTQ3NDU3Oi0xOi0xOjEzMTA3NjoxMzEwOTI6MTMxNjE4CisgMTk6MTU1NjQ5Oi0xOi0xOjEzMTA3NzoxMzEwOTM6MTMxODc0CisgMjA6MTYzODQxOi0xOi0xOjEzMTA3ODoxMzEwOTQ6MTMyMTMwCitAQCAtODcsOSArODYsOSBAQAorIDQ0OjM2MDQ0OTotMTotMToyNjIxNTg6MjYyMTc0OjI2NTI1MAorIDQ1OjM2ODY0MTotMTotMToyNjIxNTk6MjYyMTc1OjI2NTUwNgorIDQ2OjM3NjgzMzotMTotMToyNjIxNjA6MjYyMTc2OjI2NTc2MgorLTQ3OjM4NTAyNTotMTozODUwMjU6MjYyMTYxOjI2MjE3NzoyNjYwMTgKKy00ODozOTMyMTc6LTE6MzkzMjE3OjM5MzIxODozOTMyMzQ6MzkzMjUwCistNDk6NDAxNDA5OjQwMTQwOTo0MDE0MTA6MzkzMjE5OjM5MzIzNTozOTM1MDYKKys0NzozODUwMjU6LTE6LTE6MjYyMTYxOjI2MjE3NzoyNjYwMTgKKys0ODozOTMyMTc6LTE6LTE6MzkzMjE4OjM5MzIzNDozOTMyNTAKKys0OTo0MDE0MDk6NDAxNDA5Oi0xOjM5MzIxOTozOTMyMzU6MzkzNTA2CisgNTA6NDA5NjAxOi0xOi0xOjM5MzIyMDozOTMyMzY6MzkzNzYyCisgNTE6NDE3NzkzOi0xOi0xOjM5MzIyMTozOTMyMzc6Mzk0MDE4CisgNTI6NDI1OTg1Oi0xOi0xOjM5MzIyMjozOTMyMzg6Mzk0Mjc0CitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl82NHRvMzJiaXRfbWV0YS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0X21ldGEvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTllZDhiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0X21ldGEvbmFtZQpAQCAtMCwwICsxIEBACitjb252ZXJ0IG1ldGFfYmcgNjRiaXQgZnMgdG8gMzJiaXQgZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdF9tZXRhL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yXzY0dG8zMmJpdF9tZXRhL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAyZTI2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfNjR0bzMyYml0X21ldGEvc2NyaXB0CkBAIC0wLDAgKzEsNzYgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLG1ldGFfYmcsXnJlc2l6ZV9pbm9kZSw2NGJpdAorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInJlc2l6ZTJmcyB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCisoJERVTVBFMkZTIC1oICRUTVBGSUxFOyAkRFVNUEUyRlMgLWcgJFRNUEZJTEUpIDI+IC9kZXYvbnVsbCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5iZWZvcmUKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgcmVzaXplIGl0CitlY2hvICJyZXNpemUyZnMgdGVzdC5pbWcgLXMiID4+ICRPVVQKKyRSRVNJWkUyRlMgLXMgLWYgJFRNUEZJTEUgMj4mMSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBkdW1wIGFuZCBjaGVjaworKCREVU1QRTJGUyAtaCAkVE1QRklMRTsgJERVTVBFMkZTIC1nICRUTVBGSUxFKSAyPiAvZGV2L251bGwgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYWZ0ZXIKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKworcm0gJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yX2JpZ2FsbG9jX2JpZ19leHBhbmQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfYmlnYWxsb2NfYmlnX2V4cGFuZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkzOWFlYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX2JpZ2FsbG9jX2JpZ19leHBhbmQvc2NyaXB0CkBAIC0wLDAgKzEsMzcgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK3Rlc3RfZGVzY3JpcHRpb249ImV4dDQgd2l0aCBiaWdhbGxvYyIKK0ZFQVRVUkVTPSItdCBleHQ0IC1PIGJpZ2FsbG9jIgorU0laRV8xPTUxMk0KK1NJWkVfMj0yVAorTE9HPSR0ZXN0X25hbWUubG9nCitFMkZTQ0s9Li4vZTJmc2NrL2UyZnNjaworUkVTSVpFMkZTX09QVFM9LWYKKworaWYgWyAkKHVuYW1lIC1zKSA9ICJGcmVlQlNEIiBdOyB0aGVuCisJIyBjcmVhdGVzIGEgMlRCIGZpbGVzeXN0ZW0KKwllY2hvICIkdGVzdF9uYW1lOiAkREVTQ1JJUFRJT046IHNraXBwZWQgZm9yIEZyZWVCU0QiCisJcmV0dXJuIDAKK2ZpCisKKy4gJGNtZF9kaXIvc2NyaXB0cy9yZXNpemVfdGVzdAorCityZXNpemVfdGVzdAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxpZiBbICRSQyAtZXEgMTExIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlsbiAkTE9HICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBGRUFUVVJFUyBTSVpFXzEgU0laRV8yIExPRyBFMkZTQ0sKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgwYmFhMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX2V4cGFuZF9mdWxsL2V4cGVjdApAQCAtMCwwICsxLDM3NSBAQAorcmVzaXplMmZzIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA3ODY0MzIgMWsgYmxvY2tzIGFuZCA5ODMwNCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOSwgNjYzNTUzCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDcyNyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3Jlc2l6ZTJmcyB0ZXN0LmltZworUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgdG8gMzE0NTcyOCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAzMTQ1NzI4ICgxaykgYmxvY2tzIGxvbmcuCisKK0V4aXQgc3RhdHVzIGlzIDAKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0xLDE1ICsxLDE1IEBACisgCisgZ3JvdXA6YmxvY2s6c3VwZXI6Z2R0OmJiaXRtYXA6aWJpdG1hcDppdGFibGUKKy0wOjE6MToyLTQ6NTo2OjcKKy0xOjgxOTM6ODE5Mzo4MTk0LTgxOTY6ODE5Nzo4MTk4OjgxOTkKKyswOjE6MToyLTEzOjI2MzoyNjQ6MjY1CisrMTo4MTkzOjgxOTM6ODE5NC04MjA1Ojg0NTU6ODQ1Njo4NDU3CisgMjoxNjM4NTotMTotMToxNjM4NToxNjM4NjoxNjM4NworLTM6MjQ1Nzc6MjQ1Nzc6MjQ1NzgtMjQ1ODA6MjQ1ODE6MjQ1ODI6MjQ1ODMKKyszOjI0NTc3OjI0NTc3OjI0NTc4LTI0NTg5OjI0ODM5OjI0ODQwOjI0ODQxCisgNDozMjc2OTotMTotMTozMjc2OTozMjc3MDozMjc3MQorLTU6NDA5NjE6NDA5NjE6NDA5NjItNDA5NjQ6NDA5NjU6NDA5NjY6NDA5NjcKKys1OjQwOTYxOjQwOTYxOjQwOTYyLTQwOTczOjQxMjIzOjQxMjI0OjQxMjI1CisgNjo0OTE1MzotMTotMTo0OTE1Mzo0OTE1NDo0OTE1NQorLTc6NTczNDU6NTczNDU6NTczNDYtNTczNDg6NTczNDk6NTczNTA6NTczNTEKKys3OjU3MzQ1OjU3MzQ1OjU3MzQ2LTU3MzU3OjU3NjA3OjU3NjA4OjU3NjA5CisgODo2NTUzNzotMTotMTo2NTUzNzo2NTUzODo2NTUzOQorLTk6NzM3Mjk6NzM3Mjk6NzM3MzAtNzM3MzI6NzM3MzM6NzM3MzQ6NzM3MzUKKys5OjczNzI5OjczNzI5OjczNzMwLTczNzQxOjczOTkxOjczOTkyOjczOTkzCisgMTA6ODE5MjE6LTE6LTE6ODE5MjE6ODE5MjI6ODE5MjMKKyAxMTo5MDExMzotMTotMTo5MDExMzo5MDExNDo5MDExNQorIDEyOjk4MzA1Oi0xOi0xOjk4MzA1Ojk4MzA2Ojk4MzA3CitAQCAtMjUsOSArMjUsOSBAQAorIDIyOjE4MDIyNTotMTotMToxODAyMjU6MTgwMjI2OjE4MDIyNworIDIzOjE4ODQxNzotMTotMToxODg0MTc6MTg4NDE4OjE4ODQxOQorIDI0OjE5NjYwOTotMTotMToxOTY2MDk6MTk2NjEwOjE5NjYxMQorLTI1OjIwNDgwMToyMDQ4MDE6MjA0ODAyLTIwNDgwNDoyMDQ4MDU6MjA0ODA2OjIwNDgwNworKzI1OjIwNDgwMToyMDQ4MDE6MjA0ODAyLTIwNDgxMzoyMDUwNjM6MjA1MDY0OjIwNTA2NQorIDI2OjIxMjk5MzotMTotMToyMTI5OTM6MjEyOTk0OjIxMjk5NQorLTI3OjIyMTE4NToyMjExODU6MjIxMTg2LTIyMTE4ODoyMjExODk6MjIxMTkwOjIyMTE5MQorKzI3OjIyMTE4NToyMjExODU6MjIxMTg2LTIyMTE5NzoyMjE0NDc6MjIxNDQ4OjIyMTQ0OQorIDI4OjIyOTM3NzotMTotMToyMjkzNzc6MjI5Mzc4OjIyOTM3OQorIDI5OjIzNzU2OTotMTotMToyMzc1Njk6MjM3NTcwOjIzNzU3MQorIDMwOjI0NTc2MTotMTotMToyNDU3NjE6MjQ1NzYyOjI0NTc2MworQEAgLTQ5LDcgKzQ5LDcgQEAKKyA0NjozNzY4MzM6LTE6LTE6Mzc2ODMzOjM3NjgzNDozNzY4MzUKKyA0NzozODUwMjU6LTE6LTE6Mzg1MDI1OjM4NTAyNjozODUwMjcKKyA0ODozOTMyMTc6LTE6LTE6MzkzMjE3OjM5MzIxODozOTMyMTkKKy00OTo0MDE0MDk6NDAxNDA5OjQwMTQxMC00MDE0MTI6NDAxNDEzOjQwMTQxNDo0MDE0MTUKKys0OTo0MDE0MDk6NDAxNDA5OjQwMTQxMC00MDE0MjE6NDAxNjcxOjQwMTY3Mjo0MDE2NzMKKyA1MDo0MDk2MDE6LTE6LTE6NDA5NjAxOjQwOTYwMjo0MDk2MDMKKyA1MTo0MTc3OTM6LTE6LTE6NDE3NzkzOjQxNzc5NDo0MTc3OTUKKyA1Mjo0MjU5ODU6LTE6LTE6NDI1OTg1OjQyNTk4Njo0MjU5ODcKK0BAIC04MSw3ICs4MSw3IEBACisgNzg6NjM4OTc3Oi0xOi0xOjYzODk3Nzo2Mzg5Nzg6NjM4OTc5CisgNzk6NjQ3MTY5Oi0xOi0xOjY0NzE2OTo2NDcxNzA6NjQ3MTcxCisgODA6NjU1MzYxOi0xOi0xOjY1NTM2MTo2NTUzNjI6NjU1MzYzCistODE6NjYzNTUzOjY2MzU1Mzo2NjM1NTQtNjYzNTU2OjY2MzU1Nzo2NjM1NTg6NjYzNTU5CisrODE6NjYzNTUzOjY2MzU1Mzo2NjM1NTQtNjYzNTY1OjY2MzgxNTo2NjM4MTY6NjYzODE3CisgODI6NjcxNzQ1Oi0xOi0xOjY3MTc0NTo2NzE3NDY6NjcxNzQ3CisgODM6Njc5OTM3Oi0xOi0xOjY3OTkzNzo2Nzk5Mzg6Njc5OTM5CisgODQ6Njg4MTI5Oi0xOi0xOjY4ODEyOTo2ODgxMzA6Njg4MTMxCitAQCAtOTYsMyArOTYsMjkxIEBACisgOTM6NzYxODU3Oi0xOi0xOjc2MTg1Nzo3NjE4NTg6NzYxODU5CisgOTQ6NzcwMDQ5Oi0xOi0xOjc3MDA0OTo3NzAwNTA6NzcwMDUxCisgOTU6Nzc4MjQxOi0xOi0xOjc3ODI0MTo3NzgyNDI6Nzc4MjQzCisrOTY6Nzg2NDMzOi0xOi0xOjc4NjQzMzo3ODY0MzQ6Nzg2NDM1CisrOTc6Nzk0NjI1Oi0xOi0xOjc5NDYyNTo3OTQ2MjY6Nzk0NjI3CisrOTg6ODAyODE3Oi0xOi0xOjgwMjgxNzo4MDI4MTg6ODAyODE5CisrOTk6ODExMDA5Oi0xOi0xOjgxMTAwOTo4MTEwMTA6ODExMDExCisrMTAwOjgxOTIwMTotMTotMTo4MTkyMDE6ODE5MjAyOjgxOTIwMworKzEwMTo4MjczOTM6LTE6LTE6ODI3MzkzOjgyNzM5NDo4MjczOTUKKysxMDI6ODM1NTg1Oi0xOi0xOjgzNTU4NTo4MzU1ODY6ODM1NTg3CisrMTAzOjg0Mzc3NzotMTotMTo4NDM3Nzc6ODQzNzc4Ojg0Mzc3OQorKzEwNDo4NTE5Njk6LTE6LTE6ODUxOTY5Ojg1MTk3MDo4NTE5NzEKKysxMDU6ODYwMTYxOi0xOi0xOjg2MDE2MTo4NjAxNjI6ODYwMTYzCisrMTA2Ojg2ODM1MzotMTotMTo4NjgzNTM6ODY4MzU0Ojg2ODM1NQorKzEwNzo4NzY1NDU6LTE6LTE6ODc2NTQ1Ojg3NjU0Njo4NzY1NDcKKysxMDg6ODg0NzM3Oi0xOi0xOjg4NDczNzo4ODQ3Mzg6ODg0NzM5CisrMTA5Ojg5MjkyOTotMTotMTo4OTI5Mjk6ODkyOTMwOjg5MjkzMQorKzExMDo5MDExMjE6LTE6LTE6OTAxMTIxOjkwMTEyMjo5MDExMjMKKysxMTE6OTA5MzEzOi0xOi0xOjkwOTMxMzo5MDkzMTQ6OTA5MzE1CisrMTEyOjkxNzUwNTotMTotMTo5MTc1MDU6OTE3NTA2OjkxNzUwNworKzExMzo5MjU2OTc6LTE6LTE6OTI1Njk3OjkyNTY5ODo5MjU2OTkKKysxMTQ6OTMzODg5Oi0xOi0xOjkzMzg4OTo5MzM4OTA6OTMzODkxCisrMTE1Ojk0MjA4MTotMTotMTo5NDIwODE6OTQyMDgyOjk0MjA4MworKzExNjo5NTAyNzM6LTE6LTE6OTUwMjczOjk1MDI3NDo5NTAyNzUKKysxMTc6OTU4NDY1Oi0xOi0xOjk1ODQ2NTo5NTg0NjY6OTU4NDY3CisrMTE4Ojk2NjY1NzotMTotMTo5NjY2NTc6OTY2NjU4Ojk2NjY1OQorKzExOTo5NzQ4NDk6LTE6LTE6OTc0ODQ5Ojk3NDg1MDo5NzQ4NTEKKysxMjA6OTgzMDQxOi0xOi0xOjk4MzA0MTo5ODMwNDI6OTgzMDQzCisrMTIxOjk5MTIzMzotMTotMTo5OTEyMzM6OTkxMjM0Ojk5MTIzNQorKzEyMjo5OTk0MjU6LTE6LTE6OTk5NDI1Ojk5OTQyNjo5OTk0MjcKKysxMjM6MTAwNzYxNzotMTotMToxMDA3NjE3OjEwMDc2MTg6MTAwNzYxOQorKzEyNDoxMDE1ODA5Oi0xOi0xOjEwMTU4MDk6MTAxNTgxMDoxMDE1ODExCisrMTI1OjEwMjQwMDE6MTAyNDAwMToxMDI0MDAyLTEwMjQwMTM6MTAyNDAxNDoxMDI0MDE1OjEwMjQwMTYKKysxMjY6MTAzMjE5MzotMTotMToxMDMyMTkzOjEwMzIxOTQ6MTAzMjE5NQorKzEyNzoxMDQwMzg1Oi0xOi0xOjEwNDAzODU6MTA0MDM4NjoxMDQwMzg3CisrMTI4OjEwNDg1Nzc6LTE6LTE6MTA0ODU3NzoxMDQ4NTc4OjEwNDg1NzkKKysxMjk6MTA1Njc2OTotMTotMToxMDU2NzY5OjEwNTY3NzA6MTA1Njc3MQorKzEzMDoxMDY0OTYxOi0xOi0xOjEwNjQ5NjE6MTA2NDk2MjoxMDY0OTYzCisrMTMxOjEwNzMxNTM6LTE6LTE6MTA3MzE1MzoxMDczMTU0OjEwNzMxNTUKKysxMzI6MTA4MTM0NTotMTotMToxMDgxMzQ1OjEwODEzNDY6MTA4MTM0NworKzEzMzoxMDg5NTM3Oi0xOi0xOjEwODk1Mzc6MTA4OTUzODoxMDg5NTM5CisrMTM0OjEwOTc3Mjk6LTE6LTE6MTA5NzcyOToxMDk3NzMwOjEwOTc3MzEKKysxMzU6MTEwNTkyMTotMTotMToxMTA1OTIxOjExMDU5MjI6MTEwNTkyMworKzEzNjoxMTE0MTEzOi0xOi0xOjExMTQxMTM6MTExNDExNDoxMTE0MTE1CisrMTM3OjExMjIzMDU6LTE6LTE6MTEyMjMwNToxMTIyMzA2OjExMjIzMDcKKysxMzg6MTEzMDQ5NzotMTotMToxMTMwNDk3OjExMzA0OTg6MTEzMDQ5OQorKzEzOToxMTM4Njg5Oi0xOi0xOjExMzg2ODk6MTEzODY5MDoxMTM4NjkxCisrMTQwOjExNDY4ODE6LTE6LTE6MTE0Njg4MToxMTQ2ODgyOjExNDY4ODMKKysxNDE6MTE1NTA3MzotMTotMToxMTU1MDczOjExNTUwNzQ6MTE1NTA3NQorKzE0MjoxMTYzMjY1Oi0xOi0xOjExNjMyNjU6MTE2MzI2NjoxMTYzMjY3CisrMTQzOjExNzE0NTc6LTE6LTE6MTE3MTQ1NzoxMTcxNDU4OjExNzE0NTkKKysxNDQ6MTE3OTY0OTotMTotMToxMTc5NjQ5OjExNzk2NTA6MTE3OTY1MQorKzE0NToxMTg3ODQxOi0xOi0xOjExODc4NDE6MTE4Nzg0MjoxMTg3ODQzCisrMTQ2OjExOTYwMzM6LTE6LTE6MTE5NjAzMzoxMTk2MDM0OjExOTYwMzUKKysxNDc6MTIwNDIyNTotMTotMToxMjA0MjI1OjEyMDQyMjY6MTIwNDIyNworKzE0ODoxMjEyNDE3Oi0xOi0xOjEyMTI0MTc6MTIxMjQxODoxMjEyNDE5CisrMTQ5OjEyMjA2MDk6LTE6LTE6MTIyMDYwOToxMjIwNjEwOjEyMjA2MTEKKysxNTA6MTIyODgwMTotMTotMToxMjI4ODAxOjEyMjg4MDI6MTIyODgwMworKzE1MToxMjM2OTkzOi0xOi0xOjEyMzY5OTM6MTIzNjk5NDoxMjM2OTk1CisrMTUyOjEyNDUxODU6LTE6LTE6MTI0NTE4NToxMjQ1MTg2OjEyNDUxODcKKysxNTM6MTI1MzM3NzotMTotMToxMjUzMzc3OjEyNTMzNzg6MTI1MzM3OQorKzE1NDoxMjYxNTY5Oi0xOi0xOjEyNjE1Njk6MTI2MTU3MDoxMjYxNTcxCisrMTU1OjEyNjk3NjE6LTE6LTE6MTI2OTc2MToxMjY5NzYyOjEyNjk3NjMKKysxNTY6MTI3Nzk1MzotMTotMToxMjc3OTUzOjEyNzc5NTQ6MTI3Nzk1NQorKzE1NzoxMjg2MTQ1Oi0xOi0xOjEyODYxNDU6MTI4NjE0NjoxMjg2MTQ3CisrMTU4OjEyOTQzMzc6LTE6LTE6MTI5NDMzNzoxMjk0MzM4OjEyOTQzMzkKKysxNTk6MTMwMjUyOTotMTotMToxMzAyNTI5OjEzMDI1MzA6MTMwMjUzMQorKzE2MDoxMzEwNzIxOi0xOi0xOjEzMTA3MjE6MTMxMDcyMjoxMzEwNzIzCisrMTYxOjEzMTg5MTM6LTE6LTE6MTMxODkxMzoxMzE4OTE0OjEzMTg5MTUKKysxNjI6MTMyNzEwNTotMTotMToxMzI3MTA1OjEzMjcxMDY6MTMyNzEwNworKzE2MzoxMzM1Mjk3Oi0xOi0xOjEzMzUyOTc6MTMzNTI5ODoxMzM1Mjk5CisrMTY0OjEzNDM0ODk6LTE6LTE6MTM0MzQ4OToxMzQzNDkwOjEzNDM0OTEKKysxNjU6MTM1MTY4MTotMTotMToxMzUxNjgxOjEzNTE2ODI6MTM1MTY4MworKzE2NjoxMzU5ODczOi0xOi0xOjEzNTk4NzM6MTM1OTg3NDoxMzU5ODc1CisrMTY3OjEzNjgwNjU6LTE6LTE6MTM2ODA2NToxMzY4MDY2OjEzNjgwNjcKKysxNjg6MTM3NjI1NzotMTotMToxMzc2MjU3OjEzNzYyNTg6MTM3NjI1OQorKzE2OToxMzg0NDQ5Oi0xOi0xOjEzODQ0NDk6MTM4NDQ1MDoxMzg0NDUxCisrMTcwOjEzOTI2NDE6LTE6LTE6MTM5MjY0MToxMzkyNjQyOjEzOTI2NDMKKysxNzE6MTQwMDgzMzotMTotMToxNDAwODMzOjE0MDA4MzQ6MTQwMDgzNQorKzE3MjoxNDA5MDI1Oi0xOi0xOjE0MDkwMjU6MTQwOTAyNjoxNDA5MDI3CisrMTczOjE0MTcyMTc6LTE6LTE6MTQxNzIxNzoxNDE3MjE4OjE0MTcyMTkKKysxNzQ6MTQyNTQwOTotMTotMToxNDI1NDA5OjE0MjU0MTA6MTQyNTQxMQorKzE3NToxNDMzNjAxOi0xOi0xOjE0MzM2MDE6MTQzMzYwMjoxNDMzNjAzCisrMTc2OjE0NDE3OTM6LTE6LTE6MTQ0MTc5MzoxNDQxNzk0OjE0NDE3OTUKKysxNzc6MTQ0OTk4NTotMTotMToxNDQ5OTg1OjE0NDk5ODY6MTQ0OTk4NworKzE3ODoxNDU4MTc3Oi0xOi0xOjE0NTgxNzc6MTQ1ODE3ODoxNDU4MTc5CisrMTc5OjE0NjYzNjk6LTE6LTE6MTQ2NjM2OToxNDY2MzcwOjE0NjYzNzEKKysxODA6MTQ3NDU2MTotMTotMToxNDc0NTYxOjE0NzQ1NjI6MTQ3NDU2MworKzE4MToxNDgyNzUzOi0xOi0xOjE0ODI3NTM6MTQ4Mjc1NDoxNDgyNzU1CisrMTgyOjE0OTA5NDU6LTE6LTE6MTQ5MDk0NToxNDkwOTQ2OjE0OTA5NDcKKysxODM6MTQ5OTEzNzotMTotMToxNDk5MTM3OjE0OTkxMzg6MTQ5OTEzOQorKzE4NDoxNTA3MzI5Oi0xOi0xOjE1MDczMjk6MTUwNzMzMDoxNTA3MzMxCisrMTg1OjE1MTU1MjE6LTE6LTE6MTUxNTUyMToxNTE1NTIyOjE1MTU1MjMKKysxODY6MTUyMzcxMzotMTotMToxNTIzNzEzOjE1MjM3MTQ6MTUyMzcxNQorKzE4NzoxNTMxOTA1Oi0xOi0xOjE1MzE5MDU6MTUzMTkwNjoxNTMxOTA3CisrMTg4OjE1NDAwOTc6LTE6LTE6MTU0MDA5NzoxNTQwMDk4OjE1NDAwOTkKKysxODk6MTU0ODI4OTotMTotMToxNTQ4Mjg5OjE1NDgyOTA6MTU0ODI5MQorKzE5MDoxNTU2NDgxOi0xOi0xOjE1NTY0ODE6MTU1NjQ4MjoxNTU2NDgzCisrMTkxOjE1NjQ2NzM6LTE6LTE6MTU2NDY3MzoxNTY0Njc0OjE1NjQ2NzUKKysxOTI6MTU3Mjg2NTotMTotMToxNTcyODY1OjE1NzI4NjY6MTU3Mjg2NworKzE5MzoxNTgxMDU3Oi0xOi0xOjE1ODEwNTc6MTU4MTA1ODoxNTgxMDU5CisrMTk0OjE1ODkyNDk6LTE6LTE6MTU4OTI0OToxNTg5MjUwOjE1ODkyNTEKKysxOTU6MTU5NzQ0MTotMTotMToxNTk3NDQxOjE1OTc0NDI6MTU5NzQ0MworKzE5NjoxNjA1NjMzOi0xOi0xOjE2MDU2MzM6MTYwNTYzNDoxNjA1NjM1CisrMTk3OjE2MTM4MjU6LTE6LTE6MTYxMzgyNToxNjEzODI2OjE2MTM4MjcKKysxOTg6MTYyMjAxNzotMTotMToxNjIyMDE3OjE2MjIwMTg6MTYyMjAxOQorKzE5OToxNjMwMjA5Oi0xOi0xOjE2MzAyMDk6MTYzMDIxMDoxNjMwMjExCisrMjAwOjE2Mzg0MDE6LTE6LTE6MTYzODQwMToxNjM4NDAyOjE2Mzg0MDMKKysyMDE6MTY0NjU5MzotMTotMToxNjQ2NTkzOjE2NDY1OTQ6MTY0NjU5NQorKzIwMjoxNjU0Nzg1Oi0xOi0xOjE2NTQ3ODU6MTY1NDc4NjoxNjU0Nzg3CisrMjAzOjE2NjI5Nzc6LTE6LTE6MTY2Mjk3NzoxNjYyOTc4OjE2NjI5NzkKKysyMDQ6MTY3MTE2OTotMTotMToxNjcxMTY5OjE2NzExNzA6MTY3MTE3MQorKzIwNToxNjc5MzYxOi0xOi0xOjE2NzkzNjE6MTY3OTM2MjoxNjc5MzYzCisrMjA2OjE2ODc1NTM6LTE6LTE6MTY4NzU1MzoxNjg3NTU0OjE2ODc1NTUKKysyMDc6MTY5NTc0NTotMTotMToxNjk1NzQ1OjE2OTU3NDY6MTY5NTc0NworKzIwODoxNzAzOTM3Oi0xOi0xOjE3MDM5Mzc6MTcwMzkzODoxNzAzOTM5CisrMjA5OjE3MTIxMjk6LTE6LTE6MTcxMjEyOToxNzEyMTMwOjE3MTIxMzEKKysyMTA6MTcyMDMyMTotMTotMToxNzIwMzIxOjE3MjAzMjI6MTcyMDMyMworKzIxMToxNzI4NTEzOi0xOi0xOjE3Mjg1MTM6MTcyODUxNDoxNzI4NTE1CisrMjEyOjE3MzY3MDU6LTE6LTE6MTczNjcwNToxNzM2NzA2OjE3MzY3MDcKKysyMTM6MTc0NDg5NzotMTotMToxNzQ0ODk3OjE3NDQ4OTg6MTc0NDg5OQorKzIxNDoxNzUzMDg5Oi0xOi0xOjE3NTMwODk6MTc1MzA5MDoxNzUzMDkxCisrMjE1OjE3NjEyODE6LTE6LTE6MTc2MTI4MToxNzYxMjgyOjE3NjEyODMKKysyMTY6MTc2OTQ3MzotMTotMToxNzY5NDczOjE3Njk0NzQ6MTc2OTQ3NQorKzIxNzoxNzc3NjY1Oi0xOi0xOjE3Nzc2NjU6MTc3NzY2NjoxNzc3NjY3CisrMjE4OjE3ODU4NTc6LTE6LTE6MTc4NTg1NzoxNzg1ODU4OjE3ODU4NTkKKysyMTk6MTc5NDA0OTotMTotMToxNzk0MDQ5OjE3OTQwNTA6MTc5NDA1MQorKzIyMDoxODAyMjQxOi0xOi0xOjE4MDIyNDE6MTgwMjI0MjoxODAyMjQzCisrMjIxOjE4MTA0MzM6LTE6LTE6MTgxMDQzMzoxODEwNDM0OjE4MTA0MzUKKysyMjI6MTgxODYyNTotMTotMToxODE4NjI1OjE4MTg2MjY6MTgxODYyNworKzIyMzoxODI2ODE3Oi0xOi0xOjE4MjY4MTc6MTgyNjgxODoxODI2ODE5CisrMjI0OjE4MzUwMDk6LTE6LTE6MTgzNTAwOToxODM1MDEwOjE4MzUwMTEKKysyMjU6MTg0MzIwMTotMTotMToxODQzMjAxOjE4NDMyMDI6MTg0MzIwMworKzIyNjoxODUxMzkzOi0xOi0xOjE4NTEzOTM6MTg1MTM5NDoxODUxMzk1CisrMjI3OjE4NTk1ODU6LTE6LTE6MTg1OTU4NToxODU5NTg2OjE4NTk1ODcKKysyMjg6MTg2Nzc3NzotMTotMToxODY3Nzc3OjE4Njc3Nzg6MTg2Nzc3OQorKzIyOToxODc1OTY5Oi0xOi0xOjE4NzU5Njk6MTg3NTk3MDoxODc1OTcxCisrMjMwOjE4ODQxNjE6LTE6LTE6MTg4NDE2MToxODg0MTYyOjE4ODQxNjMKKysyMzE6MTg5MjM1MzotMTotMToxODkyMzUzOjE4OTIzNTQ6MTg5MjM1NQorKzIzMjoxOTAwNTQ1Oi0xOi0xOjE5MDA1NDU6MTkwMDU0NjoxOTAwNTQ3CisrMjMzOjE5MDg3Mzc6LTE6LTE6MTkwODczNzoxOTA4NzM4OjE5MDg3MzkKKysyMzQ6MTkxNjkyOTotMTotMToxOTE2OTI5OjE5MTY5MzA6MTkxNjkzMQorKzIzNToxOTI1MTIxOi0xOi0xOjE5MjUxMjE6MTkyNTEyMjoxOTI1MTIzCisrMjM2OjE5MzMzMTM6LTE6LTE6MTkzMzMxMzoxOTMzMzE0OjE5MzMzMTUKKysyMzc6MTk0MTUwNTotMTotMToxOTQxNTA1OjE5NDE1MDY6MTk0MTUwNworKzIzODoxOTQ5Njk3Oi0xOi0xOjE5NDk2OTc6MTk0OTY5ODoxOTQ5Njk5CisrMjM5OjE5NTc4ODk6LTE6LTE6MTk1Nzg4OToxOTU3ODkwOjE5NTc4OTEKKysyNDA6MTk2NjA4MTotMTotMToxOTY2MDgxOjE5NjYwODI6MTk2NjA4MworKzI0MToxOTc0MjczOi0xOi0xOjE5NzQyNzM6MTk3NDI3NDoxOTc0Mjc1CisrMjQyOjE5ODI0NjU6LTE6LTE6MTk4MjQ2NToxOTgyNDY2OjE5ODI0NjcKKysyNDM6MTk5MDY1NzoxOTkwNjU3OjE5OTA2NTgtMTk5MDY2OToxOTkwNjcwOjE5OTA2NzE6MTk5MDY3MgorKzI0NDoxOTk4ODQ5Oi0xOi0xOjE5OTg4NDk6MTk5ODg1MDoxOTk4ODUxCisrMjQ1OjIwMDcwNDE6LTE6LTE6MjAwNzA0MToyMDA3MDQyOjIwMDcwNDMKKysyNDY6MjAxNTIzMzotMTotMToyMDE1MjMzOjIwMTUyMzQ6MjAxNTIzNQorKzI0NzoyMDIzNDI1Oi0xOi0xOjIwMjM0MjU6MjAyMzQyNjoyMDIzNDI3CisrMjQ4OjIwMzE2MTc6LTE6LTE6MjAzMTYxNzoyMDMxNjE4OjIwMzE2MTkKKysyNDk6MjAzOTgwOTotMTotMToyMDM5ODA5OjIwMzk4MTA6MjAzOTgxMQorKzI1MDoyMDQ4MDAxOi0xOi0xOjIwNDgwMDE6MjA0ODAwMjoyMDQ4MDAzCisrMjUxOjIwNTYxOTM6LTE6LTE6MjA1NjE5MzoyMDU2MTk0OjIwNTYxOTUKKysyNTI6MjA2NDM4NTotMTotMToyMDY0Mzg1OjIwNjQzODY6MjA2NDM4NworKzI1MzoyMDcyNTc3Oi0xOi0xOjIwNzI1Nzc6MjA3MjU3ODoyMDcyNTc5CisrMjU0OjIwODA3Njk6LTE6LTE6MjA4MDc2OToyMDgwNzcwOjIwODA3NzEKKysyNTU6MjA4ODk2MTotMTotMToyMDg4OTYxOjIwODg5NjI6MjA4ODk2MworKzI1NjoyMDk3MTUzOi0xOi0xOjIwOTcxNTM6MjA5NzE1NDoyMDk3MTU1CisrMjU3OjIxMDUzNDU6LTE6LTE6MjEwNTM0NToyMTA1MzQ2OjIxMDUzNDcKKysyNTg6MjExMzUzNzotMTotMToyMTEzNTM3OjIxMTM1Mzg6MjExMzUzOQorKzI1OToyMTIxNzI5Oi0xOi0xOjIxMjE3Mjk6MjEyMTczMDoyMTIxNzMxCisrMjYwOjIxMjk5MjE6LTE6LTE6MjEyOTkyMToyMTI5OTIyOjIxMjk5MjMKKysyNjE6MjEzODExMzotMTotMToyMTM4MTEzOjIxMzgxMTQ6MjEzODExNQorKzI2MjoyMTQ2MzA1Oi0xOi0xOjIxNDYzMDU6MjE0NjMwNjoyMTQ2MzA3CisrMjYzOjIxNTQ0OTc6LTE6LTE6MjE1NDQ5NzoyMTU0NDk4OjIxNTQ0OTkKKysyNjQ6MjE2MjY4OTotMTotMToyMTYyNjg5OjIxNjI2OTA6MjE2MjY5MQorKzI2NToyMTcwODgxOi0xOi0xOjIxNzA4ODE6MjE3MDg4MjoyMTcwODgzCisrMjY2OjIxNzkwNzM6LTE6LTE6MjE3OTA3MzoyMTc5MDc0OjIxNzkwNzUKKysyNjc6MjE4NzI2NTotMTotMToyMTg3MjY1OjIxODcyNjY6MjE4NzI2NworKzI2ODoyMTk1NDU3Oi0xOi0xOjIxOTU0NTc6MjE5NTQ1ODoyMTk1NDU5CisrMjY5OjIyMDM2NDk6LTE6LTE6MjIwMzY0OToyMjAzNjUwOjIyMDM2NTEKKysyNzA6MjIxMTg0MTotMTotMToyMjExODQxOjIyMTE4NDI6MjIxMTg0MworKzI3MToyMjIwMDMzOi0xOi0xOjIyMjAwMzM6MjIyMDAzNDoyMjIwMDM1CisrMjcyOjIyMjgyMjU6LTE6LTE6MjIyODIyNToyMjI4MjI2OjIyMjgyMjcKKysyNzM6MjIzNjQxNzotMTotMToyMjM2NDE3OjIyMzY0MTg6MjIzNjQxOQorKzI3NDoyMjQ0NjA5Oi0xOi0xOjIyNDQ2MDk6MjI0NDYxMDoyMjQ0NjExCisrMjc1OjIyNTI4MDE6LTE6LTE6MjI1MjgwMToyMjUyODAyOjIyNTI4MDMKKysyNzY6MjI2MDk5MzotMTotMToyMjYwOTkzOjIyNjA5OTQ6MjI2MDk5NQorKzI3NzoyMjY5MTg1Oi0xOi0xOjIyNjkxODU6MjI2OTE4NjoyMjY5MTg3CisrMjc4OjIyNzczNzc6LTE6LTE6MjI3NzM3NzoyMjc3Mzc4OjIyNzczNzkKKysyNzk6MjI4NTU2OTotMTotMToyMjg1NTY5OjIyODU1NzA6MjI4NTU3MQorKzI4MDoyMjkzNzYxOi0xOi0xOjIyOTM3NjE6MjI5Mzc2MjoyMjkzNzYzCisrMjgxOjIzMDE5NTM6LTE6LTE6MjMwMTk1MzoyMzAxOTU0OjIzMDE5NTUKKysyODI6MjMxMDE0NTotMTotMToyMzEwMTQ1OjIzMTAxNDY6MjMxMDE0NworKzI4MzoyMzE4MzM3Oi0xOi0xOjIzMTgzMzc6MjMxODMzODoyMzE4MzM5CisrMjg0OjIzMjY1Mjk6LTE6LTE6MjMyNjUyOToyMzI2NTMwOjIzMjY1MzEKKysyODU6MjMzNDcyMTotMTotMToyMzM0NzIxOjIzMzQ3MjI6MjMzNDcyMworKzI4NjoyMzQyOTEzOi0xOi0xOjIzNDI5MTM6MjM0MjkxNDoyMzQyOTE1CisrMjg3OjIzNTExMDU6LTE6LTE6MjM1MTEwNToyMzUxMTA2OjIzNTExMDcKKysyODg6MjM1OTI5NzotMTotMToyMzU5Mjk3OjIzNTkyOTg6MjM1OTI5OQorKzI4OToyMzY3NDg5Oi0xOi0xOjIzNjc0ODk6MjM2NzQ5MDoyMzY3NDkxCisrMjkwOjIzNzU2ODE6LTE6LTE6MjM3NTY4MToyMzc1NjgyOjIzNzU2ODMKKysyOTE6MjM4Mzg3MzotMTotMToyMzgzODczOjIzODM4NzQ6MjM4Mzg3NQorKzI5MjoyMzkyMDY1Oi0xOi0xOjIzOTIwNjU6MjM5MjA2NjoyMzkyMDY3CisrMjkzOjI0MDAyNTc6LTE6LTE6MjQwMDI1NzoyNDAwMjU4OjI0MDAyNTkKKysyOTQ6MjQwODQ0OTotMTotMToyNDA4NDQ5OjI0MDg0NTA6MjQwODQ1MQorKzI5NToyNDE2NjQxOi0xOi0xOjI0MTY2NDE6MjQxNjY0MjoyNDE2NjQzCisrMjk2OjI0MjQ4MzM6LTE6LTE6MjQyNDgzMzoyNDI0ODM0OjI0MjQ4MzUKKysyOTc6MjQzMzAyNTotMTotMToyNDMzMDI1OjI0MzMwMjY6MjQzMzAyNworKzI5ODoyNDQxMjE3Oi0xOi0xOjI0NDEyMTc6MjQ0MTIxODoyNDQxMjE5CisrMjk5OjI0NDk0MDk6LTE6LTE6MjQ0OTQwOToyNDQ5NDEwOjI0NDk0MTEKKyszMDA6MjQ1NzYwMTotMTotMToyNDU3NjAxOjI0NTc2MDI6MjQ1NzYwMworKzMwMToyNDY1NzkzOi0xOi0xOjI0NjU3OTM6MjQ2NTc5NDoyNDY1Nzk1CisrMzAyOjI0NzM5ODU6LTE6LTE6MjQ3Mzk4NToyNDczOTg2OjI0NzM5ODcKKyszMDM6MjQ4MjE3NzotMTotMToyNDgyMTc3OjI0ODIxNzg6MjQ4MjE3OQorKzMwNDoyNDkwMzY5Oi0xOi0xOjI0OTAzNjk6MjQ5MDM3MDoyNDkwMzcxCisrMzA1OjI0OTg1NjE6LTE6LTE6MjQ5ODU2MToyNDk4NTYyOjI0OTg1NjMKKyszMDY6MjUwNjc1MzotMTotMToyNTA2NzUzOjI1MDY3NTQ6MjUwNjc1NQorKzMwNzoyNTE0OTQ1Oi0xOi0xOjI1MTQ5NDU6MjUxNDk0NjoyNTE0OTQ3CisrMzA4OjI1MjMxMzc6LTE6LTE6MjUyMzEzNzoyNTIzMTM4OjI1MjMxMzkKKyszMDk6MjUzMTMyOTotMTotMToyNTMxMzI5OjI1MzEzMzA6MjUzMTMzMQorKzMxMDoyNTM5NTIxOi0xOi0xOjI1Mzk1MjE6MjUzOTUyMjoyNTM5NTIzCisrMzExOjI1NDc3MTM6LTE6LTE6MjU0NzcxMzoyNTQ3NzE0OjI1NDc3MTUKKyszMTI6MjU1NTkwNTotMTotMToyNTU1OTA1OjI1NTU5MDY6MjU1NTkwNworKzMxMzoyNTY0MDk3Oi0xOi0xOjI1NjQwOTc6MjU2NDA5ODoyNTY0MDk5CisrMzE0OjI1NzIyODk6LTE6LTE6MjU3MjI4OToyNTcyMjkwOjI1NzIyOTEKKyszMTU6MjU4MDQ4MTotMTotMToyNTgwNDgxOjI1ODA0ODI6MjU4MDQ4MworKzMxNjoyNTg4NjczOi0xOi0xOjI1ODg2NzM6MjU4ODY3NDoyNTg4Njc1CisrMzE3OjI1OTY4NjU6LTE6LTE6MjU5Njg2NToyNTk2ODY2OjI1OTY4NjcKKyszMTg6MjYwNTA1NzotMTotMToyNjA1MDU3OjI2MDUwNTg6MjYwNTA1OQorKzMxOToyNjEzMjQ5Oi0xOi0xOjI2MTMyNDk6MjYxMzI1MDoyNjEzMjUxCisrMzIwOjI2MjE0NDE6LTE6LTE6MjYyMTQ0MToyNjIxNDQyOjI2MjE0NDMKKyszMjE6MjYyOTYzMzotMTotMToyNjI5NjMzOjI2Mjk2MzQ6MjYyOTYzNQorKzMyMjoyNjM3ODI1Oi0xOi0xOjI2Mzc4MjU6MjYzNzgyNjoyNjM3ODI3CisrMzIzOjI2NDYwMTc6LTE6LTE6MjY0NjAxNzoyNjQ2MDE4OjI2NDYwMTkKKyszMjQ6MjY1NDIwOTotMTotMToyNjU0MjA5OjI2NTQyMTA6MjY1NDIxMQorKzMyNToyNjYyNDAxOi0xOi0xOjI2NjI0MDE6MjY2MjQwMjoyNjYyNDAzCisrMzI2OjI2NzA1OTM6LTE6LTE6MjY3MDU5MzoyNjcwNTk0OjI2NzA1OTUKKyszMjc6MjY3ODc4NTotMTotMToyNjc4Nzg1OjI2Nzg3ODY6MjY3ODc4NworKzMyODoyNjg2OTc3Oi0xOi0xOjI2ODY5Nzc6MjY4Njk3ODoyNjg2OTc5CisrMzI5OjI2OTUxNjk6LTE6LTE6MjY5NTE2OToyNjk1MTcwOjI2OTUxNzEKKyszMzA6MjcwMzM2MTotMTotMToyNzAzMzYxOjI3MDMzNjI6MjcwMzM2MworKzMzMToyNzExNTUzOi0xOi0xOjI3MTE1NTM6MjcxMTU1NDoyNzExNTU1CisrMzMyOjI3MTk3NDU6LTE6LTE6MjcxOTc0NToyNzE5NzQ2OjI3MTk3NDcKKyszMzM6MjcyNzkzNzotMTotMToyNzI3OTM3OjI3Mjc5Mzg6MjcyNzkzOQorKzMzNDoyNzM2MTI5Oi0xOi0xOjI3MzYxMjk6MjczNjEzMDoyNzM2MTMxCisrMzM1OjI3NDQzMjE6LTE6LTE6Mjc0NDMyMToyNzQ0MzIyOjI3NDQzMjMKKyszMzY6Mjc1MjUxMzotMTotMToyNzUyNTEzOjI3NTI1MTQ6Mjc1MjUxNQorKzMzNzoyNzYwNzA1Oi0xOi0xOjI3NjA3MDU6Mjc2MDcwNjoyNzYwNzA3CisrMzM4OjI3Njg4OTc6LTE6LTE6Mjc2ODg5NzoyNzY4ODk4OjI3Njg4OTkKKyszMzk6Mjc3NzA4OTotMTotMToyNzc3MDg5OjI3NzcwOTA6Mjc3NzA5MQorKzM0MDoyNzg1MjgxOi0xOi0xOjI3ODUyODE6Mjc4NTI4MjoyNzg1MjgzCisrMzQxOjI3OTM0NzM6LTE6LTE6Mjc5MzQ3MzoyNzkzNDc0OjI3OTM0NzUKKyszNDI6MjgwMTY2NTotMTotMToyODAxNjY1OjI4MDE2NjY6MjgwMTY2NworKzM0MzoyODA5ODU3OjI4MDk4NTc6MjgwOTg1OC0yODA5ODY5OjI4MDk4NzA6MjgwOTg3MToyODA5ODcyCisrMzQ0OjI4MTgwNDk6LTE6LTE6MjgxODA0OToyODE4MDUwOjI4MTgwNTEKKyszNDU6MjgyNjI0MTotMTotMToyODI2MjQxOjI4MjYyNDI6MjgyNjI0MworKzM0NjoyODM0NDMzOi0xOi0xOjI4MzQ0MzM6MjgzNDQzNDoyODM0NDM1CisrMzQ3OjI4NDI2MjU6LTE6LTE6Mjg0MjYyNToyODQyNjI2OjI4NDI2MjcKKyszNDg6Mjg1MDgxNzotMTotMToyODUwODE3OjI4NTA4MTg6Mjg1MDgxOQorKzM0OToyODU5MDA5Oi0xOi0xOjI4NTkwMDk6Mjg1OTAxMDoyODU5MDExCisrMzUwOjI4NjcyMDE6LTE6LTE6Mjg2NzIwMToyODY3MjAyOjI4NjcyMDMKKyszNTE6Mjg3NTM5MzotMTotMToyODc1MzkzOjI4NzUzOTQ6Mjg3NTM5NQorKzM1MjoyODgzNTg1Oi0xOi0xOjI4ODM1ODU6Mjg4MzU4NjoyODgzNTg3CisrMzUzOjI4OTE3Nzc6LTE6LTE6Mjg5MTc3NzoyODkxNzc4OjI4OTE3NzkKKyszNTQ6Mjg5OTk2OTotMTotMToyODk5OTY5OjI4OTk5NzA6Mjg5OTk3MQorKzM1NToyOTA4MTYxOi0xOi0xOjI5MDgxNjE6MjkwODE2MjoyOTA4MTYzCisrMzU2OjI5MTYzNTM6LTE6LTE6MjkxNjM1MzoyOTE2MzU0OjI5MTYzNTUKKyszNTc6MjkyNDU0NTotMTotMToyOTI0NTQ1OjI5MjQ1NDY6MjkyNDU0NworKzM1ODoyOTMyNzM3Oi0xOi0xOjI5MzI3Mzc6MjkzMjczODoyOTMyNzM5CisrMzU5OjI5NDA5Mjk6LTE6LTE6Mjk0MDkyOToyOTQwOTMwOjI5NDA5MzEKKyszNjA6Mjk0OTEyMTotMTotMToyOTQ5MTIxOjI5NDkxMjI6Mjk0OTEyMworKzM2MToyOTU3MzEzOi0xOi0xOjI5NTczMTM6Mjk1NzMxNDoyOTU3MzE1CisrMzYyOjI5NjU1MDU6LTE6LTE6Mjk2NTUwNToyOTY1NTA2OjI5NjU1MDcKKyszNjM6Mjk3MzY5NzotMTotMToyOTczNjk3OjI5NzM2OTg6Mjk3MzY5OQorKzM2NDoyOTgxODg5Oi0xOi0xOjI5ODE4ODk6Mjk4MTg5MDoyOTgxODkxCisrMzY1OjI5OTAwODE6LTE6LTE6Mjk5MDA4MToyOTkwMDgyOjI5OTAwODMKKyszNjY6Mjk5ODI3MzotMTotMToyOTk4MjczOjI5OTgyNzQ6Mjk5ODI3NQorKzM2NzozMDA2NDY1Oi0xOi0xOjMwMDY0NjU6MzAwNjQ2NjozMDA2NDY3CisrMzY4OjMwMTQ2NTc6LTE6LTE6MzAxNDY1NzozMDE0NjU4OjMwMTQ2NTkKKyszNjk6MzAyMjg0OTotMTotMTozMDIyODQ5OjMwMjI4NTA6MzAyMjg1MQorKzM3MDozMDMxMDQxOi0xOi0xOjMwMzEwNDE6MzAzMTA0MjozMDMxMDQzCisrMzcxOjMwMzkyMzM6LTE6LTE6MzAzOTIzMzozMDM5MjM0OjMwMzkyMzUKKyszNzI6MzA0NzQyNTotMTotMTozMDQ3NDI1OjMwNDc0MjY6MzA0NzQyNworKzM3MzozMDU1NjE3Oi0xOi0xOjMwNTU2MTc6MzA1NTYxODozMDU1NjE5CisrMzc0OjMwNjM4MDk6LTE6LTE6MzA2MzgwOTozMDYzODEwOjMwNjM4MTEKKyszNzU6MzA3MjAwMTotMTotMTozMDcyMDAxOjMwNzIwMDI6MzA3MjAwMworKzM3NjozMDgwMTkzOi0xOi0xOjMwODAxOTM6MzA4MDE5NDozMDgwMTk1CisrMzc3OjMwODgzODU6LTE6LTE6MzA4ODM4NTozMDg4Mzg2OjMwODgzODcKKyszNzg6MzA5NjU3NzotMTotMTozMDk2NTc3OjMwOTY1Nzg6MzA5NjU3OQorKzM3OTozMTA0NzY5Oi0xOi0xOjMxMDQ3Njk6MzEwNDc3MDozMTA0NzcxCisrMzgwOjMxMTI5NjE6LTE6LTE6MzExMjk2MTozMTEyOTYyOjMxMTI5NjMKKyszODE6MzEyMTE1MzotMTotMTozMTIxMTUzOjMxMjExNTQ6MzEyMTE1NQorKzM4MjozMTI5MzQ1Oi0xOi0xOjMxMjkzNDU6MzEyOTM0NjozMTI5MzQ3CisrMzgzOjMxMzc1Mzc6LTE6LTE6MzEzNzUzNzozMTM3NTM4OjMxMzc1MzkKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yX2V4cGFuZF9mdWxsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNDBjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9uYW1lCkBAIC0wLDAgKzEgQEAKK2V4cGFuZCBhIHRvdGFsbHkgZnVsbCBmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHBhbmRfZnVsbC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJjMDlkYgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX2V4cGFuZF9mdWxsL3NjcmlwdApAQCAtMCwwICsxLDc5IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCisjZ3ppcCAtZCA8ICRFWFAuZ3ogPiAkRVhQCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixecmVzaXplX2lub2RlLF5tZXRhX2JnLF5mbGV4X2JnCisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMAorCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMU0KKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyAicmVzaXplMmZzIHRlc3QiID4gJE9VVAorCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLUYgLVQgZXh0NGggJFRNUEZJTEUgNzg2NDMyID4+ICRPVVQgMj4mMQorcm0gLXJmICRDT05GCisKKyMgZHVtcCBhbmQgY2hlY2sKKyREVU1QRTJGUyAtZyAkVE1QRklMRSAyPiYxID4+ICRPVVQuYmVmb3JlIDI+IC9kZXYvbnVsbAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjb252ZXJ0IGl0CitlY2hvICJyZXNpemUyZnMgdGVzdC5pbWciID4+ICRPVVQKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBjb252PW5vdHJ1bmMgYnM9MSBjb3VudD0xIHNlZWs9MzIyMTIyNTQ3MSAyPiAvZGV2L251bGwKKyRSRVNJWkUyRlMgLWYgJFRNUEZJTEUgMj4mMSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTIC1nICRUTVBGSUxFIDI+JjEgPj4gJE9VVC5hZnRlciAyPiAvZGV2L251bGwKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKworcm0gJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yX2V4dDRfYmlnX2V4cGFuZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHQ0X2JpZ19leHBhbmQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiOGM4MjMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHQ0X2JpZ19leHBhbmQvc2NyaXB0CkBAIC0wLDAgKzEsMzYgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK3Rlc3RfZGVzY3JpcHRpb249InZlcnkgbGFyZ2UgZnMgZ3Jvd3RoIHVzaW5nIGV4dDQiCitGRUFUVVJFUz0iLXQgZXh0NCIKK1NJWkVfMT01MTJNCitTSVpFXzI9MlQKK0xPRz0kdGVzdF9uYW1lLmxvZworRTJGU0NLPS4uL2UyZnNjay9lMmZzY2sKKworaWYgWyAkKHVuYW1lIC1zKSA9ICJGcmVlQlNEIiBdOyB0aGVuCisJIyBjcmVhdGVzIGEgMlRCIGZpbGVzeXN0ZW0KKwllY2hvICIkdGVzdF9uYW1lOiAkREVTQ1JJUFRJT046IHNraXBwZWQgZm9yIEZyZWVCU0QiCisJcmV0dXJuIDAKK2ZpCisKKy4gJGNtZF9kaXIvc2NyaXB0cy9yZXNpemVfdGVzdAorCityZXNpemVfdGVzdAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxpZiBbICRSQyAtZXEgMTExIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlsbiAkTE9HICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBGRUFUVVJFUyBTSVpFXzEgU0laRV8yIExPRyBFMkZTQ0sKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9leHQ0X3NtYWxsX2JnL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yX2V4dDRfc21hbGxfYmcvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYzZlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9leHQ0X3NtYWxsX2JnL3NjcmlwdApAQCAtMCwwICsxLDMxIEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCit0ZXN0X2Rlc2NyaXB0aW9uPSJleHQ0IDEwMjQgYmxvY2tzaXplIHdpdGggc21hbGwgYmxvY2sgZ3JvdXBzIgorRkVBVFVSRVM9Ii10IGV4dDQgLU8gXnJlc2l6ZV9pbm9kZSAtYiAxMDI0IC1nIDUxMiIKK1NJWkVfMT02NE0KK1NJWkVfMj0yRworTE9HPSR0ZXN0X25hbWUubG9nCitFMkZTQ0s9Li4vZTJmc2NrL2UyZnNjaworCisKKy4gJGNtZF9kaXIvc2NyaXB0cy9yZXNpemVfdGVzdAorCityZXNpemVfdGVzdAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxpZiBbICRSQyAtZXEgMTExIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlsbiAkTE9HICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBGRUFUVVJFUyBTSVpFXzEgU0laRV8yIExPRyBFMkZTQ0sKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIAorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0YmcvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfZml4dXBfbGFzdGJnL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmIxNTRhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfZml4dXBfbGFzdGJnL2V4cGVjdApAQCAtMCwwICsxLDM5IEBACitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggMjAwMDAgMWsgYmxvY2tzIGFuZCAxMjQ4IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDEwMjQgYmxvY2tzKTogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAICAhkb25lCisKK0dyb3VwIDI6IChCbG9ja3MgMTYzODUtMTk5OTkpIFtJTk9ERV9VTklOSVQsIElUQUJMRV9aRVJPRURdCisgIEJsb2NrIGJpdG1hcCBhdCA4MyAoYmcgIzAgKyA4MikKKyAgSW5vZGUgYml0bWFwIGF0IDg2IChiZyAjMCArIDg1KQorICBJbm9kZSB0YWJsZSBhdCAyOTUtMzk4IChiZyAjMCArIDI5NCkKKyAgMzYxNSBmcmVlIGJsb2NrcywgNDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCA0MTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMTYzODUtMTk5OTkKKyAgRnJlZSBpbm9kZXM6IDgzMy0xMjQ4CitHcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTE5OTk5KQorICBCbG9jayBiaXRtYXAgYXQgODMgKGJnICMwICsgODIpCisgIElub2RlIGJpdG1hcCBhdCA4NiAoYmcgIzAgKyA4NSkKKyAgSW5vZGUgdGFibGUgYXQgMjk1LTM5OCAoYmcgIzAgKyAyOTQpCisgIDM2MTUgZnJlZSBibG9ja3MsIDQxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTYzODUtMTk5OTkKKyAgRnJlZSBpbm9kZXM6IDgzMy0xMjQ4CitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byAyMDAwNCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAyMDAwNCAoMWspIGJsb2NrcyBsb25nLgorCitHcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTIwMDAzKSBbSU5PREVfVU5JTklUXQorICBCbG9jayBiaXRtYXAgYXQgODMgKGJnICMwICsgODIpCisgIElub2RlIGJpdG1hcCBhdCA4NiAoYmcgIzAgKyA4NSkKKyAgSW5vZGUgdGFibGUgYXQgMjk1LTM5OCAoYmcgIzAgKyAyOTQpCisgIDM2MTkgZnJlZSBibG9ja3MsIDQxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgNDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDE2Mzg1LTIwMDAzCisgIEZyZWUgaW5vZGVzOiA4MzMtMTI0OAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3QuaW1nOiAxMS8xMjQ4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTUxNy8yMDAwNCBibG9ja3MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yX2ZpeHVwX2xhc3RiZy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0Ymcvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZhNWM1YWYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0Ymcvc2NyaXB0CkBAIC0wLDAgKzEsMzcgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCit0ZXN0X2Rlc2NyaXB0aW9uPSJmaXggdXAgbGFzdCBiZyB3aGVuIGV4cGFuZGluZyB3aXRoaW4gdGhlIGxhc3QgYmciCisKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitPVVQ9JHRlc3RfbmFtZS5vdXQKK0xPRz0kdGVzdF9uYW1lLmxvZworRTJGU0NLPS4uL2UyZnNjay9lMmZzY2sKKworJE1LRTJGUyAtVCBleHQ0IC1iIDEwMjQgLUYgLVUgNTZkM2VlNTAtODUzMi00ZjI5LTgxODEtZDdjNmVhNGE5NGE2ICRUTVBGSUxFIDIwMDAwID4gJE9VVCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGdyZXAgLUExMCAnXkdyb3VwIDI6JyA+PiAkT1VUCiskREVCVUdGUyAtUiAic2V0X2JnIDIgaXRhYmxlX3VudXNlZCAwIiAtdyAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X2JnIDIgZmxhZ3MgMCIgLXcgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9iZyAyIGNoZWNrc3VtIDB4ZDMxOCIgLXcgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwIC1BMTAgJ15Hcm91cCAyOicgPj4gJE9VVAorI2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xIGNvdW50PTEgc2Vlaz0kKCgxMDI0ICogMjAwMDQpKSBjb252PW5vdHJ1bmMgPj4gJE9VVCAyPiAvZGV2L251bGwKKyRSRVNJWkUyRlNfRVhFIC1mIC1wICRUTVBGSUxFIDIwMDA0ID4+ICRPVVQgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwIC1BMTAgJ15Hcm91cCAyOicgPj4gJE9VVAorJEUyRlNDSyAtZnkgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPCAkT1VUID4gJExPRworcm0gLXJmICRPVVQKKworY21wIC1zICRMT0cgJEVYUAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAtdSAkRVhQICRMT0cgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgRVhQIExPRyBPVVQgRTJGU0NLCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfZml4dXBfbGFzdGJnX2JpZy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0YmdfYmlnL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGFhYmFmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfZml4dXBfbGFzdGJnX2JpZy9leHBlY3QKQEAgLTAsMCArMSw0NSBAQAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDIwMDAwIDFrIGJsb2NrcyBhbmQgMTI0OCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzCisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgIAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxMDI0IGJsb2Nrcyk6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgCAgIZG9uZQorCitHcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTE5OTk5KSBbSU5PREVfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCbG9jayBiaXRtYXAgYXQgODMgKGJnICMwICsgODIpCisgIElub2RlIGJpdG1hcCBhdCA4NiAoYmcgIzAgKyA4NSkKKyAgSW5vZGUgdGFibGUgYXQgMjk1LTM5OCAoYmcgIzAgKyAyOTQpCisgIDM2MTUgZnJlZSBibG9ja3MsIDQxNiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcywgNDE2IHVudXNlZCBpbm9kZXMKKyAgRnJlZSBibG9ja3M6IDE2Mzg1LTE5OTk5CisgIEZyZWUgaW5vZGVzOiA4MzMtMTI0OAorR3JvdXAgMjogKEJsb2NrcyAxNjM4NS0xOTk5OSkKKyAgQmxvY2sgYml0bWFwIGF0IDgzIChiZyAjMCArIDgyKQorICBJbm9kZSBiaXRtYXAgYXQgODYgKGJnICMwICsgODUpCisgIElub2RlIHRhYmxlIGF0IDI5NS0zOTggKGJnICMwICsgMjk0KQorICAzNjE1IGZyZWUgYmxvY2tzLCA0MTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2Mzg1LTE5OTk5CisgIEZyZWUgaW5vZGVzOiA4MzMtMTI0OAorUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgdG8gNDAwMDAgKDFrKSBibG9ja3MuCitCZWdpbiBwYXNzIDEgKG1heCA9IDIpCitFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyA0MDAwMCAoMWspIGJsb2NrcyBsb25nLgorCitHcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTI0NTc2KSBbSU5PREVfVU5JTklULCBCTE9DS19VTklOSVRdCisgIEJsb2NrIGJpdG1hcCBhdCA4MyAoYmcgIzAgKyA4MikKKyAgSW5vZGUgYml0bWFwIGF0IDg2IChiZyAjMCArIDg1KQorICBJbm9kZSB0YWJsZSBhdCAyOTUtMzk4IChiZyAjMCArIDI5NCkKKyAgODE5MiBmcmVlIGJsb2NrcywgNDE2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCA0MTYgdW51c2VkIGlub2RlcworICBGcmVlIGJsb2NrczogMTYzODUtMjQ1NzYKKyAgRnJlZSBpbm9kZXM6IDgzMy0xMjQ4CitHcm91cCAzOiAoQmxvY2tzIDI0NTc3LTMyNzY4KSBbSU5PREVfVU5JTklULCBJVEFCTEVfWkVST0VEXQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNDU3NywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjQ1NzgtMjQ1NzgKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNDU3OS0yNDY1NgorICBCbG9jayBiaXRtYXAgYXQgNDEzIChiZyAjMCArIDQxMikKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0LmltZzogMTEvMjA4MCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDE4MDkvNDAwMDAgYmxvY2tzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0YmdfYmlnL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yX2ZpeHVwX2xhc3RiZ19iaWcvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk3ZDlmZDQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9maXh1cF9sYXN0YmdfYmlnL3NjcmlwdApAQCAtMCwwICsxLDM3IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgordGVzdF9kZXNjcmlwdGlvbj0iZml4IHVwIGxhc3QgYmcgd2hlbiBleHBhbmRpbmcgYmV5b25kIHRoZSBsYXN0IGJnIgorCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorT1VUPSR0ZXN0X25hbWUub3V0CitMT0c9JHRlc3RfbmFtZS5sb2cKK0UyRlNDSz0uLi9lMmZzY2svZTJmc2NrCisKKyRNS0UyRlMgLVQgZXh0NCAtYiAxMDI0IC1GIC1VIDU2ZDNlZTUwLTg1MzItNGYyOS04MTgxLWQ3YzZlYTRhOTRhNiAkVE1QRklMRSAyMDAwMCA+ICRPVVQgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwIC1BMTAgJ15Hcm91cCAyOicgPj4gJE9VVAorJERFQlVHRlMgLVIgInNldF9iZyAyIGl0YWJsZV91bnVzZWQgMCIgLXcgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9iZyAyIGZsYWdzIDAiIC13ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC1SICJzZXRfYmcgMiBjaGVja3N1bSAweGQzMTgiIC13ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAtQTEwICdeR3JvdXAgMjonID4+ICRPVVQKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xIGNvdW50PTEgc2Vlaz0kKCgxMDI0ICogNDAwMDApKSBjb252PW5vdHJ1bmMgPj4gJE9VVCAyPiAvZGV2L251bGwKK1JFU0laRTJGU19GT1JDRV9JVEFCTEVfSU5JVD0xICRSRVNJWkUyRlNfRVhFIC1mIC1wICRUTVBGSUxFID4+ICRPVVQgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwIC1BMTAgJ15Hcm91cCAyOicgPj4gJE9VVAorJEUyRlNDSyAtZnkgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPCAkT1VUID4gJExPRworcm0gLXJmICRPVVQKKworY21wIC1zICRMT0cgJEVYUAorUkM9JD8KK2lmIFsgJFJDIC1lcSAwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAtdSAkRVhQICRMT0cgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgRVhQIExPRyBPVVQgRTJGU0NLCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yX2lubGluZV94YXR0ci9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZlYmEwOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX2lubGluZV94YXR0ci9leHBlY3QKQEAgLTAsMCArMSwxNCBAQAorcmVzaXplMmZzIHRlc3QKK2RlYnVnZnMgLVIgJydzdGF0IGZpbGUnJyB0ZXN0LmltZyAyPiYxIHwgZ3JlcCAnJ15Jbm9kZVx8aW4gaW5vZGUgYm9keVx8bmFtZSA9ICcnCitJbm9kZTogMTU1MCAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NDQgICBGbGFnczogMHgwCisgIHVzZXIubmFtZSA9ICJwcm9wZXJ2YWx1ZSIgKDExKQorRXhpdCBzdGF0dXMgaXMgMAorcmVzaXplMmZzIHRlc3QuaW1nIDVNCitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byA1MTIwICgxaykgYmxvY2tzLgorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDUxMjAgKDFrKSBibG9ja3MgbG9uZy4KKworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyAtUiAnJ3N0YXQgZmlsZScnIHRlc3QuaW1nIDI+JjEgfCBncmVwICcnXklub2RlXHxpbiBpbm9kZSBib2R5XHxuYW1lID0gJycKK0lub2RlOiAxMiAgIFR5cGU6IHJlZ3VsYXIgICAgTW9kZTogIDA2NDQgICBGbGFnczogMHgwCisgIHVzZXIubmFtZSA9ICJwcm9wZXJ2YWx1ZSIgKDExKQorRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL2ltYWdlLmd6Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZDI4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9pbmxpbmVfeGF0dHIvaW1hZ2UuZ3oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl9pbmxpbmVfeGF0dHIvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzY1NGZiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL25hbWUKQEAgLTAsMCArMSBAQAorc2hyaW5raW5nIGZpbGVzeXN0ZW0gd2l0aCBpbi1pbm9kZSBleHRlbmRlZCBhdHRyaWJ1dGVzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9pbmxpbmVfeGF0dHIvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kODgyNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfaW5saW5lX3hhdHRyL3NjcmlwdApAQCAtMCwwICsxLDUzIEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKK0ZTQ0tfT1BUPS15ZgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorCitndW56aXAgPCAkSU1BR0UgPiAkVE1QRklMRQorCitlY2hvICJyZXNpemUyZnMgdGVzdCIgPiAkT1VUCisKKyMgTG9vayBhdCBleGlzdGluZyBpbmxpbmUgZXh0ZW5kZWQgYXR0cmlidXRlCitlY2hvICJkZWJ1Z2ZzIC1SICcnc3RhdCBmaWxlJycgdGVzdC5pbWcgMj4mMSB8IGdyZXAgJydeSW5vZGVcfGluIGlub2RlIGJvZHlcfG5hbWUgPSAnJyIgPj4gJE9VVAorJERFQlVHRlMgLVIgInN0YXQgZmlsZSIgJFRNUEZJTEUgMj4mMSB8IGdyZXAgIl5Jbm9kZVx8aW4gaW5vZGUgYm9keVx8bmFtZSA9ICIgPj4gJE9VVAorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIHJlc2l6ZSBpdAorZWNobyAicmVzaXplMmZzIHRlc3QuaW1nIDVNIiA+PiAkT1VUCiskUkVTSVpFMkZTICRUTVBGSUxFIDVNIDI+JjEgPj4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorCisjIExvb2sgYXQgaW5saW5lIGV4dGVuZGVkIGF0dHJpYnV0ZSBpbiByZXNpemVkIGZzCitlY2hvICJkZWJ1Z2ZzIC1SICcnc3RhdCBmaWxlJycgdGVzdC5pbWcgMj4mMSB8IGdyZXAgJydeSW5vZGVcfGluIGlub2RlIGJvZHlcfG5hbWUgPSAnJyIgPj4gJE9VVAorJERFQlVHRlMgLVIgInN0YXQgZmlsZSIgJFRNUEZJTEUgMj4mMSB8IGdyZXAgIl5Jbm9kZVx8aW4gaW5vZGUgYm9keVx8bmFtZSA9ICIgPj4gJE9VVAorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRSAkT1VULm5ldworCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9yX21ldGFfYmdfc2hyaW5rL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yX21ldGFfYmdfc2hyaW5rL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTc3Nzc3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfbWV0YV9iZ19zaHJpbmsvc2NyaXB0CkBAIC0wLDAgKzEsMzQgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK3Rlc3RfZGVzY3JpcHRpb249Im1ldGFfYmcgc2hyaW5rIgorRkVBVFVSRVM9Ii10IGV4dDQgLU8gNjRiaXQsbWV0YV9iZyxecmVzaXplX2lub2RlIC1iIDEwMjQiCitTSVpFXzE9MUcKK1NJWkVfMj00OE0KK0xPRz0kdGVzdF9uYW1lLmxvZworRTJGU0NLPS4uL2UyZnNjay9lMmZzY2sKK1JFU0laRTJGU19PUFRTPS1mCisKKy4gJGNtZF9kaXIvc2NyaXB0cy9yZXNpemVfdGVzdAorCitleHBvcnQgTUtFMkZTX0ZJUlNUX01FVEFfQkc9MgorcmVzaXplX3Rlc3QKK3Vuc2V0IE1LRTJGU19GSVJTVF9NRVRBX0JHCisKK1JDPSQ/CitpZiBbICRSQyAtZXEgMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2VsaWYgWyAkUkMgLWVxIDExMSBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJbG4gJExPRyAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgRkVBVFVSRVMgU0laRV8xIFNJWkVfMiBMT0cgRTJGU0NLCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yX21pbl9pdGFibGUvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMTA0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL2V4cGVjdApAQCAtMCwwICsxLDE1IEBACityZXNpemUyZnMgdGVzdAorcmVzaXplMmZzIC1NIHRlc3QuaW1nCitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byAxMTI0ICgxaykgYmxvY2tzLgorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDExMjQgKDFrKSBibG9ja3MgbG9uZy4KKworRXhpdCBzdGF0dXMgaXMgMAorIAorZnNjayAteWYgLU4gdGVzdF9maWxlc3lzIHRlc3QuaW1nCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMy81MTIgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMTIwLzExMjQgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL2ltYWdlLmd6IGIvZTJmc3Byb2dzL3Rlc3RzL3JfbWluX2l0YWJsZS9pbWFnZS5negpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzQwYzU2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfbWluX2l0YWJsZS9pbWFnZS5negpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQxYjA0MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX21pbl9pdGFibGUvbmFtZQpAQCAtMCwwICsxIEBACityZXNpemUyZnMgLU0gd2l0aCBpbm9kZSB0YWJsZSBpbiBtaWRkbGUgb2YgbGFzdCBibG9jayBncm91cApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfbWluX2l0YWJsZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvcl9taW5faXRhYmxlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWI2Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfbWluX2l0YWJsZS9zY3JpcHQKQEAgLTAsMCArMSw0NSBAQAoraWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKworSU1BR0U9JHRlc3RfZGlyL2ltYWdlLmd6CitGU0NLX09QVD0teWYKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKKworZ3VuemlwIDwgJElNQUdFID4gJFRNUEZJTEUKKworZWNobyAicmVzaXplMmZzIHRlc3QiID4gJE9VVAorCitlY2hvICJyZXNpemUyZnMgLU0gdGVzdC5pbWciID4+ICRPVVQKKyRSRVNJWkUyRlMgLU0gJFRNUEZJTEUgMj4mMSA+PiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworCitlY2hvICIgIiA+PiAkT1VULm5ldworZWNobyBmc2NrICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgdGVzdC5pbWcgPj4gJE9VVC5uZXcKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVC5uZXcgMj4mMQorZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gJFRNUEZJTEUgJE9VVC5uZXcKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCisKK2Vsc2UgI2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcl9tb3ZlX2l0YWJsZS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvcl9tb3ZlX2l0YWJsZS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VjMDAzOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX21vdmVfaXRhYmxlL2V4cGVjdApAQCAtMCwwICsxLDI2MTIgQEAKK21rZTJmcyAtcSAtRiAtbyBMaW51eCAtYiAxMDI0IC1nIDI1NiB0ZXN0LmltZyAxMDI0CityZXNpemUyZnMgLXAgdGVzdC5pbWcgMTAwMDAKK1Jlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIHRvIDEwMDAwICgxaykgYmxvY2tzLgorQmVnaW4gcGFzcyAxIChtYXggPSAzNSkKK0V4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDk5ODUgKDFrKSBibG9ja3MgbG9uZy4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTI0OCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDEyODEvOTk4NSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2R1bXBlMmZzIHRlc3QuaW1nCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAxMjQ4CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDk5ODUKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgNDk3CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDg3MDQKK0ZyZWUgaW5vZGVzOiAgICAgICAgICAgICAgMTIzNworRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAxMjYKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgMjU2CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDI1NgorSW5vZGVzIHBlciBncm91cDogICAgICAgICAzMgorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICA0CitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMjU2KQorICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi0zCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNC0xMjkKKyAgQmxvY2sgYml0bWFwIGF0IDEzMCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAxMzEgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDEzMi0xMzUgKCsxMzEpCisgIDEwNyBmcmVlIGJsb2NrcywgMjEgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MC0yNTYKKyAgRnJlZSBpbm9kZXM6IDEyLTMyCitHcm91cCAxOiAoQmxvY2tzIDI1Ny01MTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDI1NywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjU4LTI1OQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDI2MC0zODUKKyAgQmxvY2sgYml0bWFwIGF0IDM4NiAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAzODcgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDM4OC0zOTEgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM5Mi01MTIKKyAgRnJlZSBpbm9kZXM6IDMzLTY0CitHcm91cCAyOiAoQmxvY2tzIDUxMy03NjgpCisgIEJsb2NrIGJpdG1hcCBhdCA1MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUxNS01MTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MTktNzY4CisgIEZyZWUgaW5vZGVzOiA2NS05NgorR3JvdXAgMzogKEJsb2NrcyA3NjktMTAyNCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNzY5LCBHcm91cCBkZXNjcmlwdG9ycyBhdCA3NzAtNzcxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNzcyLTg5NworICBCbG9jayBiaXRtYXAgYXQgODk4ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDg5OSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgOTAwLTkwMyAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTA0LTEwMjQKKyAgRnJlZSBpbm9kZXM6IDk3LTEyOAorR3JvdXAgNDogKEJsb2NrcyAxMDI1LTEyODApCisgIEJsb2NrIGJpdG1hcCBhdCAxMDI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNy0xMDMwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAzMS0xMjgwCisgIEZyZWUgaW5vZGVzOiAxMjktMTYwCitHcm91cCA1OiAoQmxvY2tzIDEyODEtMTUzNikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTI4MSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTI4Mi0xMjgzCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTI4NC0xNDA5CisgIEJsb2NrIGJpdG1hcCBhdCAxNDEwICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDE0MTEgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDE0MTItMTQxNSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQxNi0xNTM2CisgIEZyZWUgaW5vZGVzOiAxNjEtMTkyCitHcm91cCA2OiAoQmxvY2tzIDE1MzctMTc5MikKKyAgQmxvY2sgYml0bWFwIGF0IDE1MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTM5LTE1NDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTQzLTE3OTIKKyAgRnJlZSBpbm9kZXM6IDE5My0yMjQKK0dyb3VwIDc6IChCbG9ja3MgMTc5My0yMDQ4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxNzkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxNzk0LTE3OTUKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxNzk2LTE5MjEKKyAgQmxvY2sgYml0bWFwIGF0IDE5MjIgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMTkyMyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMTkyNC0xOTI3ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTI4LTIwNDgKKyAgRnJlZSBpbm9kZXM6IDIyNS0yNTYKK0dyb3VwIDg6IChCbG9ja3MgMjA0OS0yMzA0KQorICBCbG9jayBiaXRtYXAgYXQgMjA0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjA1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIwNTEtMjA1NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwNTUtMjMwNAorICBGcmVlIGlub2RlczogMjU3LTI4OAorR3JvdXAgOTogKEJsb2NrcyAyMzA1LTI1NjApCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDIzMDUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDIzMDYtMjMwNworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDIzMDgtMjQzMworICBCbG9jayBiaXRtYXAgYXQgMjQzNCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAyNDM1ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAyNDM2LTI0MzkgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0NDAtMjU2MAorICBGcmVlIGlub2RlczogMjg5LTMyMAorR3JvdXAgMTA6IChCbG9ja3MgMjU2MS0yODE2KQorICBCbG9jayBiaXRtYXAgYXQgMjU2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjU2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI1NjMtMjU2NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1NjctMjgxNgorICBGcmVlIGlub2RlczogMzIxLTM1MgorR3JvdXAgMTE6IChCbG9ja3MgMjgxNy0zMDcyKQorICBCbG9jayBiaXRtYXAgYXQgMjgxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjgxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI4MTktMjgyMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI4MjMtMzA3MgorICBGcmVlIGlub2RlczogMzUzLTM4NAorR3JvdXAgMTI6IChCbG9ja3MgMzA3My0zMzI4KQorICBCbG9jayBiaXRtYXAgYXQgMzA3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzA3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMwNzUtMzA3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMwNzktMzMyOAorICBGcmVlIGlub2RlczogMzg1LTQxNgorR3JvdXAgMTM6IChCbG9ja3MgMzMyOS0zNTg0KQorICBCbG9jayBiaXRtYXAgYXQgMzMyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzMzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMzMzEtMzMzNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzMzUtMzU4NAorICBGcmVlIGlub2RlczogNDE3LTQ0OAorR3JvdXAgMTQ6IChCbG9ja3MgMzU4NS0zODQwKQorICBCbG9jayBiaXRtYXAgYXQgMzU4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzU4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM1ODctMzU5MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM1OTEtMzg0MAorICBGcmVlIGlub2RlczogNDQ5LTQ4MAorR3JvdXAgMTU6IChCbG9ja3MgMzg0MS00MDk2KQorICBCbG9jayBiaXRtYXAgYXQgMzg0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzg0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM4NDMtMzg0NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM4NDctNDA5NgorICBGcmVlIGlub2RlczogNDgxLTUxMgorR3JvdXAgMTY6IChCbG9ja3MgNDA5Ny00MzUyKQorICBCbG9jayBiaXRtYXAgYXQgNDA5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDA5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQwOTktNDEwMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQxMDMtNDM1MgorICBGcmVlIGlub2RlczogNTEzLTU0NAorR3JvdXAgMTc6IChCbG9ja3MgNDM1My00NjA4KQorICBCbG9jayBiaXRtYXAgYXQgNDM1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDM1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQzNTUtNDM1OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQzNTktNDYwOAorICBGcmVlIGlub2RlczogNTQ1LTU3NgorR3JvdXAgMTg6IChCbG9ja3MgNDYwOS00ODY0KQorICBCbG9jayBiaXRtYXAgYXQgNDYwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDYxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ2MTEtNDYxNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ2MTUtNDg2NAorICBGcmVlIGlub2RlczogNTc3LTYwOAorR3JvdXAgMTk6IChCbG9ja3MgNDg2NS01MTIwKQorICBCbG9jayBiaXRtYXAgYXQgNDg2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDg2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ4NjctNDg3MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ4NzEtNTEyMAorICBGcmVlIGlub2RlczogNjA5LTY0MAorR3JvdXAgMjA6IChCbG9ja3MgNTEyMS01Mzc2KQorICBCbG9jayBiaXRtYXAgYXQgNTEyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTEyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUxMjMtNTEyNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUxMjctNTM3NgorICBGcmVlIGlub2RlczogNjQxLTY3MgorR3JvdXAgMjE6IChCbG9ja3MgNTM3Ny01NjMyKQorICBCbG9jayBiaXRtYXAgYXQgNTM3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTM3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUzNzktNTM4MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzODMtNTYzMgorICBGcmVlIGlub2RlczogNjczLTcwNAorR3JvdXAgMjI6IChCbG9ja3MgNTYzMy01ODg4KQorICBCbG9jayBiaXRtYXAgYXQgNTYzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTYzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU2MzUtNTYzOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU2MzktNTg4OAorICBGcmVlIGlub2RlczogNzA1LTczNgorR3JvdXAgMjM6IChCbG9ja3MgNTg4OS02MTQ0KQorICBCbG9jayBiaXRtYXAgYXQgNTg4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTg5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU4OTEtNTg5NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU4OTUtNjE0NAorICBGcmVlIGlub2RlczogNzM3LTc2OAorR3JvdXAgMjQ6IChCbG9ja3MgNjE0NS02NDAwKQorICBCbG9jayBiaXRtYXAgYXQgNjE0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjE0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYxNDctNjE1MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYxNTEtNjQwMAorICBGcmVlIGlub2RlczogNzY5LTgwMAorR3JvdXAgMjU6IChCbG9ja3MgNjQwMS02NjU2KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA2NDAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA2NDAyLTY0MDMKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA2NDA0LTY1MjkKKyAgQmxvY2sgYml0bWFwIGF0IDY1MzAgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgNjUzMSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgNjUzMi02NTM1ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NTM2LTY2NTYKKyAgRnJlZSBpbm9kZXM6IDgwMS04MzIKK0dyb3VwIDI2OiAoQmxvY2tzIDY2NTctNjkxMikKKyAgQmxvY2sgYml0bWFwIGF0IDY2NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY2NTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2NjU5LTY2NjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NjYzLTY5MTIKKyAgRnJlZSBpbm9kZXM6IDgzMy04NjQKK0dyb3VwIDI3OiAoQmxvY2tzIDY5MTMtNzE2OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNjkxMywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNjkxNC02OTE1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNjkxNi03MDQxCisgIEJsb2NrIGJpdG1hcCBhdCA3MDQyICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDcwNDMgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDcwNDQtNzA0NyAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzA0OC03MTY4CisgIEZyZWUgaW5vZGVzOiA4NjUtODk2CitHcm91cCAyODogKEJsb2NrcyA3MTY5LTc0MjQpCisgIEJsb2NrIGJpdG1hcCBhdCA3MTY5ICgrMCksIElub2RlIGJpdG1hcCBhdCA3MTcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzE3MS03MTc0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzE3NS03NDI0CisgIEZyZWUgaW5vZGVzOiA4OTctOTI4CitHcm91cCAyOTogKEJsb2NrcyA3NDI1LTc2ODApCisgIEJsb2NrIGJpdG1hcCBhdCA3NDI1ICgrMCksIElub2RlIGJpdG1hcCBhdCA3NDI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzQyNy03NDMwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzQzMS03NjgwCisgIEZyZWUgaW5vZGVzOiA5MjktOTYwCitHcm91cCAzMDogKEJsb2NrcyA3NjgxLTc5MzYpCisgIEJsb2NrIGJpdG1hcCBhdCA3NjgxICgrMCksIElub2RlIGJpdG1hcCBhdCA3NjgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzY4My03Njg2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzY4Ny03OTM2CisgIEZyZWUgaW5vZGVzOiA5NjEtOTkyCitHcm91cCAzMTogKEJsb2NrcyA3OTM3LTgxOTIpCisgIEJsb2NrIGJpdG1hcCBhdCA3OTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCA3OTM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzkzOS03OTQyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzk0My04MTkyCisgIEZyZWUgaW5vZGVzOiA5OTMtMTAyNAorR3JvdXAgMzI6IChCbG9ja3MgODE5My04NDQ4KQorICBCbG9jayBiaXRtYXAgYXQgODE5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODE5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgxOTUtODE5OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgxOTktODQ0OAorICBGcmVlIGlub2RlczogMTAyNS0xMDU2CitHcm91cCAzMzogKEJsb2NrcyA4NDQ5LTg3MDQpCisgIEJsb2NrIGJpdG1hcCBhdCA4NDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCA4NDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODQ1MS04NDU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODQ1NS04NzA0CisgIEZyZWUgaW5vZGVzOiAxMDU3LTEwODgKK0dyb3VwIDM0OiAoQmxvY2tzIDg3MDUtODk2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDg3MDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg3MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NzA3LTg3MTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NzExLTg5NjAKKyAgRnJlZSBpbm9kZXM6IDEwODktMTEyMAorR3JvdXAgMzU6IChCbG9ja3MgODk2MS05MjE2KQorICBCbG9jayBiaXRtYXAgYXQgODk2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODk2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg5NjMtODk2NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg5NjctOTIxNgorICBGcmVlIGlub2RlczogMTEyMS0xMTUyCitHcm91cCAzNjogKEJsb2NrcyA5MjE3LTk0NzIpCisgIEJsb2NrIGJpdG1hcCBhdCA5MjE3ICgrMCksIElub2RlIGJpdG1hcCBhdCA5MjE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTIxOS05MjIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTIyMy05NDcyCisgIEZyZWUgaW5vZGVzOiAxMTUzLTExODQKK0dyb3VwIDM3OiAoQmxvY2tzIDk0NzMtOTcyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDk0NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk0NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NDc1LTk0NzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDc5LTk3MjgKKyAgRnJlZSBpbm9kZXM6IDExODUtMTIxNgorR3JvdXAgMzg6IChCbG9ja3MgOTcyOS05OTg0KQorICBCbG9jayBiaXRtYXAgYXQgOTcyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTczMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk3MzEtOTczNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk3MzUtOTk4NAorICBGcmVlIGlub2RlczogMTIxNy0xMjQ4CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcmVzaXplMmZzIC1wIHRlc3QuaW1nIDIwMDAwCitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byAyMDAwMCAoMWspIGJsb2Nrcy4KK0JlZ2luIHBhc3MgMSAobWF4ID0gMzkpCitFeHRlbmRpbmcgdGhlIGlub2RlIHRhYmxlICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFgKK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAxOTk2OSAoMWspIGJsb2NrcyBsb25nLgorCitGaWxlc3lzdGVtIGRpZCBub3QgaGF2ZSBhIFVVSUQ7IGdlbmVyYXRpbmcgb25lLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8yNDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTY0NC8xOTk2OSBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2R1bXBlMmZzIHRlc3QuaW1nCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICAyNDk2CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDE5OTY5CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDk5MworRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxODMyNQorRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAyNDg1CitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDEyNQorQmxvY2tzIHBlciBncm91cDogICAgICAgICAyNTYKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMjU2CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDMyCitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDQKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS0yNTYpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTQKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA1LTEyOQorICBCbG9jayBiaXRtYXAgYXQgMTMwICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDEzMSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMTMyLTEzNSAoKzEzMSkKKyAgMTA3IGZyZWUgYmxvY2tzLCAyMSBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUwLTI1NgorICBGcmVlIGlub2RlczogMTItMzIKK0dyb3VwIDE6IChCbG9ja3MgMjU3LTUxMikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjU3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNTgtMjYwCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjYxLTM4NQorICBCbG9jayBiaXRtYXAgYXQgMzg2ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDM4NyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMzg4LTM5MSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzkyLTUxMgorICBGcmVlIGlub2RlczogMzMtNjQKK0dyb3VwIDI6IChCbG9ja3MgNTEzLTc2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDUxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTE1LTUxOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUxOS03NjgKKyAgRnJlZSBpbm9kZXM6IDY1LTk2CitHcm91cCAzOiAoQmxvY2tzIDc2OS0xMDI0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA3NjksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDc3MC03NzIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA3NzMtODk3CisgIEJsb2NrIGJpdG1hcCBhdCA4OTggKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgODk5ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCA5MDAtOTAzICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MDQtMTAyNAorICBGcmVlIGlub2RlczogOTctMTI4CitHcm91cCA0OiAoQmxvY2tzIDEwMjUtMTI4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDI3LTEwMzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDMxLTEyODAKKyAgRnJlZSBpbm9kZXM6IDEyOS0xNjAKK0dyb3VwIDU6IChCbG9ja3MgMTI4MS0xNTM2KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMjgxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxMjgyLTEyODQKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxMjg1LTE0MDkKKyAgQmxvY2sgYml0bWFwIGF0IDE0MTAgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMTQxMSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMTQxMi0xNDE1ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDE2LTE1MzYKKyAgRnJlZSBpbm9kZXM6IDE2MS0xOTIKK0dyb3VwIDY6IChCbG9ja3MgMTUzNy0xNzkyKQorICBCbG9jayBiaXRtYXAgYXQgMTUzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzktMTU0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1NDMtMTc5MgorICBGcmVlIGlub2RlczogMTkzLTIyNAorR3JvdXAgNzogKEJsb2NrcyAxNzkzLTIwNDgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDE3OTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDE3OTQtMTc5NgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDE3OTctMTkyMQorICBCbG9jayBiaXRtYXAgYXQgMTkyMiAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAxOTIzICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxOTI0LTE5MjcgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5MjgtMjA0OAorICBGcmVlIGlub2RlczogMjI1LTI1NgorR3JvdXAgODogKEJsb2NrcyAyMDQ5LTIzMDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA1MS0yMDU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA1NS0yMzA0CisgIEZyZWUgaW5vZGVzOiAyNTctMjg4CitHcm91cCA5OiAoQmxvY2tzIDIzMDUtMjU2MCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjMwNSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjMwNi0yMzA4CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjMwOS0yNDMzCisgIEJsb2NrIGJpdG1hcCBhdCAyNDM0ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDI0MzUgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDI0MzYtMjQzOSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQ0MC0yNTYwCisgIEZyZWUgaW5vZGVzOiAyODktMzIwCitHcm91cCAxMDogKEJsb2NrcyAyNTYxLTI4MTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyNTYxICgrMCksIElub2RlIGJpdG1hcCBhdCAyNTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjU2My0yNTY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU2Ny0yODE2CisgIEZyZWUgaW5vZGVzOiAzMjEtMzUyCitHcm91cCAxMTogKEJsb2NrcyAyODE3LTMwNzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyODE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyODE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjgxOS0yODIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjgyMy0zMDcyCisgIEZyZWUgaW5vZGVzOiAzNTMtMzg0CitHcm91cCAxMjogKEJsb2NrcyAzMDczLTMzMjgpCisgIEJsb2NrIGJpdG1hcCBhdCAzMDczICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzA3NS0zMDc4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA3OS0zMzI4CisgIEZyZWUgaW5vZGVzOiAzODUtNDE2CitHcm91cCAxMzogKEJsb2NrcyAzMzI5LTM1ODQpCisgIEJsb2NrIGJpdG1hcCBhdCAzMzI5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzMzMS0zMzM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzMzNS0zNTg0CisgIEZyZWUgaW5vZGVzOiA0MTctNDQ4CitHcm91cCAxNDogKEJsb2NrcyAzNTg1LTM4NDApCisgIEJsb2NrIGJpdG1hcCBhdCAzNTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzU4Ny0zNTkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzU5MS0zODQwCisgIEZyZWUgaW5vZGVzOiA0NDktNDgwCitHcm91cCAxNTogKEJsb2NrcyAzODQxLTQwOTYpCisgIEJsb2NrIGJpdG1hcCBhdCAzODQxICgrMCksIElub2RlIGJpdG1hcCBhdCAzODQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzg0My0zODQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzg0Ny00MDk2CisgIEZyZWUgaW5vZGVzOiA0ODEtNTEyCitHcm91cCAxNjogKEJsb2NrcyA0MDk3LTQzNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA0MDk3ICgrMCksIElub2RlIGJpdG1hcCBhdCA0MDk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDA5OS00MTAyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEwMy00MzUyCisgIEZyZWUgaW5vZGVzOiA1MTMtNTQ0CitHcm91cCAxNzogKEJsb2NrcyA0MzUzLTQ2MDgpCisgIEJsb2NrIGJpdG1hcCBhdCA0MzUzICgrMCksIElub2RlIGJpdG1hcCBhdCA0MzU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDM1NS00MzU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDM1OS00NjA4CisgIEZyZWUgaW5vZGVzOiA1NDUtNTc2CitHcm91cCAxODogKEJsb2NrcyA0NjA5LTQ4NjQpCisgIEJsb2NrIGJpdG1hcCBhdCA0NjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NjEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDYxMS00NjE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDYxNS00ODY0CisgIEZyZWUgaW5vZGVzOiA1NzctNjA4CitHcm91cCAxOTogKEJsb2NrcyA0ODY1LTUxMjApCisgIEJsb2NrIGJpdG1hcCBhdCA0ODY1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0ODY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDg2Ny00ODcwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDg3MS01MTIwCisgIEZyZWUgaW5vZGVzOiA2MDktNjQwCitHcm91cCAyMDogKEJsb2NrcyA1MTIxLTUzNzYpCisgIEJsb2NrIGJpdG1hcCBhdCA1MTIxICgrMCksIElub2RlIGJpdG1hcCBhdCA1MTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTEyMy01MTI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTEyNy01Mzc2CisgIEZyZWUgaW5vZGVzOiA2NDEtNjcyCitHcm91cCAyMTogKEJsb2NrcyA1Mzc3LTU2MzIpCisgIEJsb2NrIGJpdG1hcCBhdCA1Mzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCA1Mzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTM3OS01MzgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTM4My01NjMyCisgIEZyZWUgaW5vZGVzOiA2NzMtNzA0CitHcm91cCAyMjogKEJsb2NrcyA1NjMzLTU4ODgpCisgIEJsb2NrIGJpdG1hcCBhdCA1NjMzICgrMCksIElub2RlIGJpdG1hcCBhdCA1NjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTYzNS01NjM4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTYzOS01ODg4CisgIEZyZWUgaW5vZGVzOiA3MDUtNzM2CitHcm91cCAyMzogKEJsb2NrcyA1ODg5LTYxNDQpCisgIEJsb2NrIGJpdG1hcCBhdCA1ODg5ICgrMCksIElub2RlIGJpdG1hcCBhdCA1ODkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTg5MS01ODk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTg5NS02MTQ0CisgIEZyZWUgaW5vZGVzOiA3MzctNzY4CitHcm91cCAyNDogKEJsb2NrcyA2MTQ1LTY0MDApCisgIEJsb2NrIGJpdG1hcCBhdCA2MTQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0Ny02MTUwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE1MS02NDAwCisgIEZyZWUgaW5vZGVzOiA3NjktODAwCitHcm91cCAyNTogKEJsb2NrcyA2NDAxLTY2NTYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDY0MDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDY0MDItNjQwNAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDY0MDUtNjUyOQorICBCbG9jayBiaXRtYXAgYXQgNjUzMCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCA2NTMxICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCA2NTMyLTY1MzUgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY1MzYtNjY1NgorICBGcmVlIGlub2RlczogODAxLTgzMgorR3JvdXAgMjY6IChCbG9ja3MgNjY1Ny02OTEyKQorICBCbG9jayBiaXRtYXAgYXQgNjY1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjY1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY2NTktNjY2MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY2NjMtNjkxMgorICBGcmVlIGlub2RlczogODMzLTg2NAorR3JvdXAgMjc6IChCbG9ja3MgNjkxMy03MTY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA2OTEzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA2OTE0LTY5MTYKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA2OTE3LTcwNDEKKyAgQmxvY2sgYml0bWFwIGF0IDcwNDIgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgNzA0MyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgNzA0NC03MDQ3ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MDQ4LTcxNjgKKyAgRnJlZSBpbm9kZXM6IDg2NS04OTYKK0dyb3VwIDI4OiAoQmxvY2tzIDcxNjktNzQyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDcxNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MTcxLTcxNzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MTc1LTc0MjQKKyAgRnJlZSBpbm9kZXM6IDg5Ny05MjgKK0dyb3VwIDI5OiAoQmxvY2tzIDc0MjUtNzY4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDc0MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc0MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NDI3LTc0MzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NDMxLTc2ODAKKyAgRnJlZSBpbm9kZXM6IDkyOS05NjAKK0dyb3VwIDMwOiAoQmxvY2tzIDc2ODEtNzkzNikKKyAgQmxvY2sgYml0bWFwIGF0IDc2ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc2ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NjgzLTc2ODYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3Njg3LTc5MzYKKyAgRnJlZSBpbm9kZXM6IDk2MS05OTIKK0dyb3VwIDMxOiAoQmxvY2tzIDc5MzctODE5MikKKyAgQmxvY2sgYml0bWFwIGF0IDc5MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc5MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3OTM5LTc5NDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3OTQzLTgxOTIKKyAgRnJlZSBpbm9kZXM6IDk5My0xMDI0CitHcm91cCAzMjogKEJsb2NrcyA4MTkzLTg0NDgpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkzICgrMCksIElub2RlIGJpdG1hcCBhdCA4MTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5NS04MTk4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODE5OS04NDQ4CisgIEZyZWUgaW5vZGVzOiAxMDI1LTEwNTYKK0dyb3VwIDMzOiAoQmxvY2tzIDg0NDktODcwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDg0NDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg0NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NDUxLTg0NTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NDU1LTg3MDQKKyAgRnJlZSBpbm9kZXM6IDEwNTctMTA4OAorR3JvdXAgMzQ6IChCbG9ja3MgODcwNS04OTYwKQorICBCbG9jayBiaXRtYXAgYXQgODcwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODcwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg3MDctODcxMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MTEtODk2MAorICBGcmVlIGlub2RlczogMTA4OS0xMTIwCitHcm91cCAzNTogKEJsb2NrcyA4OTYxLTkyMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4OTYxICgrMCksIElub2RlIGJpdG1hcCBhdCA4OTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODk2My04OTY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODk2Ny05MjE2CisgIEZyZWUgaW5vZGVzOiAxMTIxLTExNTIKK0dyb3VwIDM2OiAoQmxvY2tzIDkyMTctOTQ3MikKKyAgQmxvY2sgYml0bWFwIGF0IDkyMTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkyMTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5MjE5LTkyMjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MjIzLTk0NzIKKyAgRnJlZSBpbm9kZXM6IDExNTMtMTE4NAorR3JvdXAgMzc6IChCbG9ja3MgOTQ3My05NzI4KQorICBCbG9jayBiaXRtYXAgYXQgOTQ3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTQ3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk0NzUtOTQ3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk0NzktOTcyOAorICBGcmVlIGlub2RlczogMTE4NS0xMjE2CitHcm91cCAzODogKEJsb2NrcyA5NzI5LTk5ODQpCisgIEJsb2NrIGJpdG1hcCBhdCA5NzI5ICgrMCksIElub2RlIGJpdG1hcCBhdCA5NzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTczMS05NzM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTczNS05OTg0CisgIEZyZWUgaW5vZGVzOiAxMjE3LTEyNDgKK0dyb3VwIDM5OiAoQmxvY2tzIDk5ODUtMTAyNDApCisgIEJsb2NrIGJpdG1hcCBhdCA5OTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5OTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTk4Ny05OTkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTk5MS0xMDI0MAorICBGcmVlIGlub2RlczogMTI0OS0xMjgwCitHcm91cCA0MDogKEJsb2NrcyAxMDI0MS0xMDQ5NikKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjQxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDI0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMjQzLTEwMjQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNDctMTA0OTYKKyAgRnJlZSBpbm9kZXM6IDEyODEtMTMxMgorR3JvdXAgNDE6IChCbG9ja3MgMTA0OTctMTA3NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDQ5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA0OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDQ5OS0xMDUwMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNTAzLTEwNzUyCisgIEZyZWUgaW5vZGVzOiAxMzEzLTEzNDQKK0dyb3VwIDQyOiAoQmxvY2tzIDEwNzUzLTExMDA4KQorICBCbG9jayBiaXRtYXAgYXQgMTA3NTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwNzU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA3NTUtMTA3NTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDc1OS0xMTAwOAorICBGcmVlIGlub2RlczogMTM0NS0xMzc2CitHcm91cCA0MzogKEJsb2NrcyAxMTAwOS0xMTI2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMDA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTAxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMDExLTExMDE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEwMTUtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDEzNzctMTQwOAorR3JvdXAgNDQ6IChCbG9ja3MgMTEyNjUtMTE1MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTI2Ny0xMTI3MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMjcxLTExNTIwCisgIEZyZWUgaW5vZGVzOiAxNDA5LTE0NDAKK0dyb3VwIDQ1OiAoQmxvY2tzIDExNTIxLTExNzc2KQorICBCbG9jayBiaXRtYXAgYXQgMTE1MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE1MjMtMTE1MjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTUyNy0xMTc3NgorICBGcmVlIGlub2RlczogMTQ0MS0xNDcyCitHcm91cCA0NjogKEJsb2NrcyAxMTc3Ny0xMjAzMikKKyAgQmxvY2sgYml0bWFwIGF0IDExNzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTc3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExNzc5LTExNzgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE3ODMtMTIwMzIKKyAgRnJlZSBpbm9kZXM6IDE0NzMtMTUwNAorR3JvdXAgNDc6IChCbG9ja3MgMTIwMzMtMTIyODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjAzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIwMzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjAzNS0xMjAzOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMDM5LTEyMjg4CisgIEZyZWUgaW5vZGVzOiAxNTA1LTE1MzYKK0dyb3VwIDQ4OiAoQmxvY2tzIDEyMjg5LTEyNTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTIyODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyOTEtMTIyOTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjI5NS0xMjU0NAorICBGcmVlIGlub2RlczogMTUzNy0xNTY4CitHcm91cCA0OTogKEJsb2NrcyAxMjU0NS0xMjgwMCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTI1NDUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEyNTQ2LTEyNTQ4CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTI1NDktMTI2NzMKKyAgQmxvY2sgYml0bWFwIGF0IDEyNjc0ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDEyNjc1ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxMjY3Ni0xMjY3OSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI2ODAtMTI4MDAKKyAgRnJlZSBpbm9kZXM6IDE1NjktMTYwMAorR3JvdXAgNTA6IChCbG9ja3MgMTI4MDEtMTMwNTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjgwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI4MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjgwMy0xMjgwNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODA3LTEzMDU2CisgIEZyZWUgaW5vZGVzOiAxNjAxLTE2MzIKK0dyb3VwIDUxOiAoQmxvY2tzIDEzMDU3LTEzMzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTMwNTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMDU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMwNTktMTMwNjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzA2My0xMzMxMgorICBGcmVlIGlub2RlczogMTYzMy0xNjY0CitHcm91cCA1MjogKEJsb2NrcyAxMzMxMy0xMzU2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEzMzEzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzMxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzMzE1LTEzMzE4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzMTktMTM1NjgKKyAgRnJlZSBpbm9kZXM6IDE2NjUtMTY5NgorR3JvdXAgNTM6IChCbG9ja3MgMTM1NjktMTM4MjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzU2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTM1NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzU3MS0xMzU3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzNTc1LTEzODI0CisgIEZyZWUgaW5vZGVzOiAxNjk3LTE3MjgKK0dyb3VwIDU0OiAoQmxvY2tzIDEzODI1LTE0MDgwKQorICBCbG9jayBiaXRtYXAgYXQgMTM4MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzODI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTM4MjctMTM4MzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzgzMS0xNDA4MAorICBGcmVlIGlub2RlczogMTcyOS0xNzYwCitHcm91cCA1NTogKEJsb2NrcyAxNDA4MS0xNDMzNikKKyAgQmxvY2sgYml0bWFwIGF0IDE0MDgxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDA4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0MDgzLTE0MDg2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQwODctMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDE3NjEtMTc5MgorR3JvdXAgNTY6IChCbG9ja3MgMTQzMzctMTQ1OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNDMzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDMzOS0xNDM0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0MzQzLTE0NTkyCisgIEZyZWUgaW5vZGVzOiAxNzkzLTE4MjQKK0dyb3VwIDU3OiAoQmxvY2tzIDE0NTkzLTE0ODQ4KQorICBCbG9jayBiaXRtYXAgYXQgMTQ1OTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0NTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQ1OTUtMTQ1OTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDU5OS0xNDg0OAorICBGcmVlIGlub2RlczogMTgyNS0xODU2CitHcm91cCA1ODogKEJsb2NrcyAxNDg0OS0xNTEwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDE0ODQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDg1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0ODUxLTE0ODU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQ4NTUtMTUxMDQKKyAgRnJlZSBpbm9kZXM6IDE4NTctMTg4OAorR3JvdXAgNTk6IChCbG9ja3MgMTUxMDUtMTUzNjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNTEwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUxMDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTEwNy0xNTExMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MTExLTE1MzYwCisgIEZyZWUgaW5vZGVzOiAxODg5LTE5MjAKK0dyb3VwIDYwOiAoQmxvY2tzIDE1MzYxLTE1NjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTUzNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUzNjMtMTUzNjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTM2Ny0xNTYxNgorICBGcmVlIGlub2RlczogMTkyMS0xOTUyCitHcm91cCA2MTogKEJsb2NrcyAxNTYxNy0xNTg3MikKKyAgQmxvY2sgYml0bWFwIGF0IDE1NjE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTYxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1NjE5LTE1NjIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU2MjMtMTU4NzIKKyAgRnJlZSBpbm9kZXM6IDE5NTMtMTk4NAorR3JvdXAgNjI6IChCbG9ja3MgMTU4NzMtMTYxMjgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTg3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTU4NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTg3NS0xNTg3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1ODc5LTE2MTI4CisgIEZyZWUgaW5vZGVzOiAxOTg1LTIwMTYKK0dyb3VwIDYzOiAoQmxvY2tzIDE2MTI5LTE2Mzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTYxMjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2MTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYxMzEtMTYxMzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjEzNS0xNjM4NAorICBGcmVlIGlub2RlczogMjAxNy0yMDQ4CitHcm91cCA2NDogKEJsb2NrcyAxNjM4NS0xNjY0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE2Mzg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjM4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2Mzg3LTE2MzkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTYzOTEtMTY2NDAKKyAgRnJlZSBpbm9kZXM6IDIwNDktMjA4MAorR3JvdXAgNjU6IChCbG9ja3MgMTY2NDEtMTY4OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjY0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTY2NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjY0My0xNjY0NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2NjQ3LTE2ODk2CisgIEZyZWUgaW5vZGVzOiAyMDgxLTIxMTIKK0dyb3VwIDY2OiAoQmxvY2tzIDE2ODk3LTE3MTUyKQorICBCbG9jayBiaXRtYXAgYXQgMTY4OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2ODk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTY4OTktMTY5MDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjkwMy0xNzE1MgorICBGcmVlIGlub2RlczogMjExMy0yMTQ0CitHcm91cCA2NzogKEJsb2NrcyAxNzE1My0xNzQwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE3MTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzE1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3MTU1LTE3MTU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTcxNTktMTc0MDgKKyAgRnJlZSBpbm9kZXM6IDIxNDUtMjE3NgorR3JvdXAgNjg6IChCbG9ja3MgMTc0MDktMTc2NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxNzQwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTc0MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNzQxMS0xNzQxNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE3NDE1LTE3NjY0CisgIEZyZWUgaW5vZGVzOiAyMTc3LTIyMDgKK0dyb3VwIDY5OiAoQmxvY2tzIDE3NjY1LTE3OTIwKQorICBCbG9jayBiaXRtYXAgYXQgMTc2NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE3NjY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTc2NjctMTc2NzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzY3MS0xNzkyMAorICBGcmVlIGlub2RlczogMjIwOS0yMjQwCitHcm91cCA3MDogKEJsb2NrcyAxNzkyMS0xODE3NikKKyAgQmxvY2sgYml0bWFwIGF0IDE3OTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzkyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3OTIzLTE3OTI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTc5MjctMTgxNzYKKyAgRnJlZSBpbm9kZXM6IDIyNDEtMjI3MgorR3JvdXAgNzE6IChCbG9ja3MgMTgxNzctMTg0MzIpCisgIEJsb2NrIGJpdG1hcCBhdCAxODE3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTgxNzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODE3OS0xODE4MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4MTgzLTE4NDMyCisgIEZyZWUgaW5vZGVzOiAyMjczLTIzMDQKK0dyb3VwIDcyOiAoQmxvY2tzIDE4NDMzLTE4Njg4KQorICBCbG9jayBiaXRtYXAgYXQgMTg0MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE4NDM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTg0MzUtMTg0MzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxODQzOS0xODY4OAorICBGcmVlIGlub2RlczogMjMwNS0yMzM2CitHcm91cCA3MzogKEJsb2NrcyAxODY4OS0xODk0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE4Njg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxODY5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4NjkxLTE4Njk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTg2OTUtMTg5NDQKKyAgRnJlZSBpbm9kZXM6IDIzMzctMjM2OAorR3JvdXAgNzQ6IChCbG9ja3MgMTg5NDUtMTkyMDApCisgIEJsb2NrIGJpdG1hcCBhdCAxODk0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTg5NDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODk0Ny0xODk1MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4OTUxLTE5MjAwCisgIEZyZWUgaW5vZGVzOiAyMzY5LTI0MDAKK0dyb3VwIDc1OiAoQmxvY2tzIDE5MjAxLTE5NDU2KQorICBCbG9jayBiaXRtYXAgYXQgMTkyMDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5MjAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTkyMDMtMTkyMDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTIwNy0xOTQ1NgorICBGcmVlIGlub2RlczogMjQwMS0yNDMyCitHcm91cCA3NjogKEJsb2NrcyAxOTQ1Ny0xOTcxMikKKyAgQmxvY2sgYml0bWFwIGF0IDE5NDU3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxOTQ1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE5NDU5LTE5NDYyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk0NjMtMTk3MTIKKyAgRnJlZSBpbm9kZXM6IDI0MzMtMjQ2NAorR3JvdXAgNzc6IChCbG9ja3MgMTk3MTMtMTk5NjgpCisgIEJsb2NrIGJpdG1hcCBhdCAxOTcxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTk3MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxOTcxNS0xOTcxOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5NzE5LTE5OTY4CisgIEZyZWUgaW5vZGVzOiAyNDY1LTI0OTYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityZXNpemUyZnMgLXAgdGVzdC5pbWcgMzAwMDAKK1Jlc2l6aW5nIHRoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIHRvIDMwMDAwICgxaykgYmxvY2tzLgorQmVnaW4gcGFzcyAxIChtYXggPSAzOSkKK0V4dGVuZGluZyB0aGUgaW5vZGUgdGFibGUgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWAorVGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgaXMgbm93IDI5OTUzICgxaykgYmxvY2tzIGxvbmcuCisKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzM3NDQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMDA3LzI5OTUzIGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZHVtcGUyZnMgdGVzdC5pbWcKK0ZpbGVzeXN0ZW0gdm9sdW1lIG5hbWU6ICAgPG5vbmU+CitMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorRmlsZXN5c3RlbSBtYWdpYyBudW1iZXI6ICAweEVGNTMKK0ZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBzcGFyc2Vfc3VwZXIKK0RlZmF1bHQgbW91bnQgb3B0aW9uczogICAgKG5vbmUpCitGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCitFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitGaWxlc3lzdGVtIE9TIHR5cGU6ICAgICAgIExpbnV4CitJbm9kZSBjb3VudDogICAgICAgICAgICAgIDM3NDQKK0Jsb2NrIGNvdW50OiAgICAgICAgICAgICAgMjk5NTMKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMTQ4OQorRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAyNzk0NgorRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAzNzMzCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDEyNAorQmxvY2tzIHBlciBncm91cDogICAgICAgICAyNTYKK0ZyYWdtZW50cyBwZXIgZ3JvdXA6ICAgICAgMjU2CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDMyCitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDQKK01vdW50IGNvdW50OiAgICAgICAgICAgICAgMAorQ2hlY2sgaW50ZXJ2YWw6ICAgICAgICAgICAxNTU1MjAwMCAoNiBtb250aHMpCitSZXNlcnZlZCBibG9ja3MgdWlkOiAgICAgIDAKK1Jlc2VydmVkIGJsb2NrcyBnaWQ6ICAgICAgMAorRmlyc3QgaW5vZGU6ICAgICAgICAgICAgICAxMQorSW5vZGUgc2l6ZToJICAgICAgICAgIDEyOAorRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorCisKK0dyb3VwIDA6IChCbG9ja3MgMS0yNTYpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTUKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA2LTEyOQorICBCbG9jayBiaXRtYXAgYXQgMTMwICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDEzMSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMTMyLTEzNSAoKzEzMSkKKyAgMTA3IGZyZWUgYmxvY2tzLCAyMSBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUwLTI1NgorICBGcmVlIGlub2RlczogMTItMzIKK0dyb3VwIDE6IChCbG9ja3MgMjU3LTUxMikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjU3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNTgtMjYxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjYyLTM4NQorICBCbG9jayBiaXRtYXAgYXQgMzg2ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDM4NyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMzg4LTM5MSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzkyLTUxMgorICBGcmVlIGlub2RlczogMzMtNjQKK0dyb3VwIDI6IChCbG9ja3MgNTEzLTc2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDUxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTE1LTUxOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUxOS03NjgKKyAgRnJlZSBpbm9kZXM6IDY1LTk2CitHcm91cCAzOiAoQmxvY2tzIDc2OS0xMDI0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA3NjksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDc3MC03NzMKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA3NzQtODk3CisgIEJsb2NrIGJpdG1hcCBhdCA4OTggKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgODk5ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCA5MDAtOTAzICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MDQtMTAyNAorICBGcmVlIGlub2RlczogOTctMTI4CitHcm91cCA0OiAoQmxvY2tzIDEwMjUtMTI4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDI3LTEwMzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDMxLTEyODAKKyAgRnJlZSBpbm9kZXM6IDEyOS0xNjAKK0dyb3VwIDU6IChCbG9ja3MgMTI4MS0xNTM2KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMjgxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxMjgyLTEyODUKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxMjg2LTE0MDkKKyAgQmxvY2sgYml0bWFwIGF0IDE0MTAgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMTQxMSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMTQxMi0xNDE1ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDE2LTE1MzYKKyAgRnJlZSBpbm9kZXM6IDE2MS0xOTIKK0dyb3VwIDY6IChCbG9ja3MgMTUzNy0xNzkyKQorICBCbG9jayBiaXRtYXAgYXQgMTUzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzktMTU0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1NDMtMTc5MgorICBGcmVlIGlub2RlczogMTkzLTIyNAorR3JvdXAgNzogKEJsb2NrcyAxNzkzLTIwNDgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDE3OTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDE3OTQtMTc5NworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDE3OTgtMTkyMQorICBCbG9jayBiaXRtYXAgYXQgMTkyMiAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAxOTIzICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxOTI0LTE5MjcgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5MjgtMjA0OAorICBGcmVlIGlub2RlczogMjI1LTI1NgorR3JvdXAgODogKEJsb2NrcyAyMDQ5LTIzMDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA1MS0yMDU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA1NS0yMzA0CisgIEZyZWUgaW5vZGVzOiAyNTctMjg4CitHcm91cCA5OiAoQmxvY2tzIDIzMDUtMjU2MCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjMwNSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjMwNi0yMzA5CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjMxMC0yNDMzCisgIEJsb2NrIGJpdG1hcCBhdCAyNDM0ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDI0MzUgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDI0MzYtMjQzOSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQ0MC0yNTYwCisgIEZyZWUgaW5vZGVzOiAyODktMzIwCitHcm91cCAxMDogKEJsb2NrcyAyNTYxLTI4MTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyNTYxICgrMCksIElub2RlIGJpdG1hcCBhdCAyNTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjU2My0yNTY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU2Ny0yODE2CisgIEZyZWUgaW5vZGVzOiAzMjEtMzUyCitHcm91cCAxMTogKEJsb2NrcyAyODE3LTMwNzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyODE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyODE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjgxOS0yODIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjgyMy0zMDcyCisgIEZyZWUgaW5vZGVzOiAzNTMtMzg0CitHcm91cCAxMjogKEJsb2NrcyAzMDczLTMzMjgpCisgIEJsb2NrIGJpdG1hcCBhdCAzMDczICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzA3NS0zMDc4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA3OS0zMzI4CisgIEZyZWUgaW5vZGVzOiAzODUtNDE2CitHcm91cCAxMzogKEJsb2NrcyAzMzI5LTM1ODQpCisgIEJsb2NrIGJpdG1hcCBhdCAzMzI5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzMzMS0zMzM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzMzNS0zNTg0CisgIEZyZWUgaW5vZGVzOiA0MTctNDQ4CitHcm91cCAxNDogKEJsb2NrcyAzNTg1LTM4NDApCisgIEJsb2NrIGJpdG1hcCBhdCAzNTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzU4Ny0zNTkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzU5MS0zODQwCisgIEZyZWUgaW5vZGVzOiA0NDktNDgwCitHcm91cCAxNTogKEJsb2NrcyAzODQxLTQwOTYpCisgIEJsb2NrIGJpdG1hcCBhdCAzODQxICgrMCksIElub2RlIGJpdG1hcCBhdCAzODQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzg0My0zODQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzg0Ny00MDk2CisgIEZyZWUgaW5vZGVzOiA0ODEtNTEyCitHcm91cCAxNjogKEJsb2NrcyA0MDk3LTQzNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA0MDk3ICgrMCksIElub2RlIGJpdG1hcCBhdCA0MDk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDA5OS00MTAyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEwMy00MzUyCisgIEZyZWUgaW5vZGVzOiA1MTMtNTQ0CitHcm91cCAxNzogKEJsb2NrcyA0MzUzLTQ2MDgpCisgIEJsb2NrIGJpdG1hcCBhdCA0MzUzICgrMCksIElub2RlIGJpdG1hcCBhdCA0MzU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDM1NS00MzU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDM1OS00NjA4CisgIEZyZWUgaW5vZGVzOiA1NDUtNTc2CitHcm91cCAxODogKEJsb2NrcyA0NjA5LTQ4NjQpCisgIEJsb2NrIGJpdG1hcCBhdCA0NjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NjEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDYxMS00NjE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDYxNS00ODY0CisgIEZyZWUgaW5vZGVzOiA1NzctNjA4CitHcm91cCAxOTogKEJsb2NrcyA0ODY1LTUxMjApCisgIEJsb2NrIGJpdG1hcCBhdCA0ODY1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0ODY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDg2Ny00ODcwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDg3MS01MTIwCisgIEZyZWUgaW5vZGVzOiA2MDktNjQwCitHcm91cCAyMDogKEJsb2NrcyA1MTIxLTUzNzYpCisgIEJsb2NrIGJpdG1hcCBhdCA1MTIxICgrMCksIElub2RlIGJpdG1hcCBhdCA1MTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTEyMy01MTI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTEyNy01Mzc2CisgIEZyZWUgaW5vZGVzOiA2NDEtNjcyCitHcm91cCAyMTogKEJsb2NrcyA1Mzc3LTU2MzIpCisgIEJsb2NrIGJpdG1hcCBhdCA1Mzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCA1Mzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTM3OS01MzgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTM4My01NjMyCisgIEZyZWUgaW5vZGVzOiA2NzMtNzA0CitHcm91cCAyMjogKEJsb2NrcyA1NjMzLTU4ODgpCisgIEJsb2NrIGJpdG1hcCBhdCA1NjMzICgrMCksIElub2RlIGJpdG1hcCBhdCA1NjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTYzNS01NjM4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTYzOS01ODg4CisgIEZyZWUgaW5vZGVzOiA3MDUtNzM2CitHcm91cCAyMzogKEJsb2NrcyA1ODg5LTYxNDQpCisgIEJsb2NrIGJpdG1hcCBhdCA1ODg5ICgrMCksIElub2RlIGJpdG1hcCBhdCA1ODkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTg5MS01ODk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTg5NS02MTQ0CisgIEZyZWUgaW5vZGVzOiA3MzctNzY4CitHcm91cCAyNDogKEJsb2NrcyA2MTQ1LTY0MDApCisgIEJsb2NrIGJpdG1hcCBhdCA2MTQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0Ny02MTUwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE1MS02NDAwCisgIEZyZWUgaW5vZGVzOiA3NjktODAwCitHcm91cCAyNTogKEJsb2NrcyA2NDAxLTY2NTYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDY0MDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDY0MDItNjQwNQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDY0MDYtNjUyOQorICBCbG9jayBiaXRtYXAgYXQgNjUzMCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCA2NTMxICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCA2NTMyLTY1MzUgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY1MzYtNjY1NgorICBGcmVlIGlub2RlczogODAxLTgzMgorR3JvdXAgMjY6IChCbG9ja3MgNjY1Ny02OTEyKQorICBCbG9jayBiaXRtYXAgYXQgNjY1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjY1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY2NTktNjY2MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY2NjMtNjkxMgorICBGcmVlIGlub2RlczogODMzLTg2NAorR3JvdXAgMjc6IChCbG9ja3MgNjkxMy03MTY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA2OTEzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA2OTE0LTY5MTcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA2OTE4LTcwNDEKKyAgQmxvY2sgYml0bWFwIGF0IDcwNDIgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgNzA0MyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgNzA0NC03MDQ3ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MDQ4LTcxNjgKKyAgRnJlZSBpbm9kZXM6IDg2NS04OTYKK0dyb3VwIDI4OiAoQmxvY2tzIDcxNjktNzQyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDcxNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MTcxLTcxNzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MTc1LTc0MjQKKyAgRnJlZSBpbm9kZXM6IDg5Ny05MjgKK0dyb3VwIDI5OiAoQmxvY2tzIDc0MjUtNzY4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDc0MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc0MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NDI3LTc0MzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NDMxLTc2ODAKKyAgRnJlZSBpbm9kZXM6IDkyOS05NjAKK0dyb3VwIDMwOiAoQmxvY2tzIDc2ODEtNzkzNikKKyAgQmxvY2sgYml0bWFwIGF0IDc2ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc2ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NjgzLTc2ODYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3Njg3LTc5MzYKKyAgRnJlZSBpbm9kZXM6IDk2MS05OTIKK0dyb3VwIDMxOiAoQmxvY2tzIDc5MzctODE5MikKKyAgQmxvY2sgYml0bWFwIGF0IDc5MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc5MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3OTM5LTc5NDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3OTQzLTgxOTIKKyAgRnJlZSBpbm9kZXM6IDk5My0xMDI0CitHcm91cCAzMjogKEJsb2NrcyA4MTkzLTg0NDgpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkzICgrMCksIElub2RlIGJpdG1hcCBhdCA4MTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5NS04MTk4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODE5OS04NDQ4CisgIEZyZWUgaW5vZGVzOiAxMDI1LTEwNTYKK0dyb3VwIDMzOiAoQmxvY2tzIDg0NDktODcwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDg0NDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg0NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NDUxLTg0NTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NDU1LTg3MDQKKyAgRnJlZSBpbm9kZXM6IDEwNTctMTA4OAorR3JvdXAgMzQ6IChCbG9ja3MgODcwNS04OTYwKQorICBCbG9jayBiaXRtYXAgYXQgODcwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODcwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg3MDctODcxMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MTEtODk2MAorICBGcmVlIGlub2RlczogMTA4OS0xMTIwCitHcm91cCAzNTogKEJsb2NrcyA4OTYxLTkyMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4OTYxICgrMCksIElub2RlIGJpdG1hcCBhdCA4OTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODk2My04OTY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODk2Ny05MjE2CisgIEZyZWUgaW5vZGVzOiAxMTIxLTExNTIKK0dyb3VwIDM2OiAoQmxvY2tzIDkyMTctOTQ3MikKKyAgQmxvY2sgYml0bWFwIGF0IDkyMTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkyMTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5MjE5LTkyMjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MjIzLTk0NzIKKyAgRnJlZSBpbm9kZXM6IDExNTMtMTE4NAorR3JvdXAgMzc6IChCbG9ja3MgOTQ3My05NzI4KQorICBCbG9jayBiaXRtYXAgYXQgOTQ3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTQ3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk0NzUtOTQ3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk0NzktOTcyOAorICBGcmVlIGlub2RlczogMTE4NS0xMjE2CitHcm91cCAzODogKEJsb2NrcyA5NzI5LTk5ODQpCisgIEJsb2NrIGJpdG1hcCBhdCA5NzI5ICgrMCksIElub2RlIGJpdG1hcCBhdCA5NzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTczMS05NzM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTczNS05OTg0CisgIEZyZWUgaW5vZGVzOiAxMjE3LTEyNDgKK0dyb3VwIDM5OiAoQmxvY2tzIDk5ODUtMTAyNDApCisgIEJsb2NrIGJpdG1hcCBhdCA5OTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5OTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTk4Ny05OTkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTk5MS0xMDI0MAorICBGcmVlIGlub2RlczogMTI0OS0xMjgwCitHcm91cCA0MDogKEJsb2NrcyAxMDI0MS0xMDQ5NikKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjQxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDI0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMjQzLTEwMjQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNDctMTA0OTYKKyAgRnJlZSBpbm9kZXM6IDEyODEtMTMxMgorR3JvdXAgNDE6IChCbG9ja3MgMTA0OTctMTA3NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDQ5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA0OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDQ5OS0xMDUwMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNTAzLTEwNzUyCisgIEZyZWUgaW5vZGVzOiAxMzEzLTEzNDQKK0dyb3VwIDQyOiAoQmxvY2tzIDEwNzUzLTExMDA4KQorICBCbG9jayBiaXRtYXAgYXQgMTA3NTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwNzU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA3NTUtMTA3NTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDc1OS0xMTAwOAorICBGcmVlIGlub2RlczogMTM0NS0xMzc2CitHcm91cCA0MzogKEJsb2NrcyAxMTAwOS0xMTI2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMDA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTAxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMDExLTExMDE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEwMTUtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDEzNzctMTQwOAorR3JvdXAgNDQ6IChCbG9ja3MgMTEyNjUtMTE1MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTI2Ny0xMTI3MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMjcxLTExNTIwCisgIEZyZWUgaW5vZGVzOiAxNDA5LTE0NDAKK0dyb3VwIDQ1OiAoQmxvY2tzIDExNTIxLTExNzc2KQorICBCbG9jayBiaXRtYXAgYXQgMTE1MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE1MjMtMTE1MjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTUyNy0xMTc3NgorICBGcmVlIGlub2RlczogMTQ0MS0xNDcyCitHcm91cCA0NjogKEJsb2NrcyAxMTc3Ny0xMjAzMikKKyAgQmxvY2sgYml0bWFwIGF0IDExNzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTc3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExNzc5LTExNzgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE3ODMtMTIwMzIKKyAgRnJlZSBpbm9kZXM6IDE0NzMtMTUwNAorR3JvdXAgNDc6IChCbG9ja3MgMTIwMzMtMTIyODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjAzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIwMzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjAzNS0xMjAzOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMDM5LTEyMjg4CisgIEZyZWUgaW5vZGVzOiAxNTA1LTE1MzYKK0dyb3VwIDQ4OiAoQmxvY2tzIDEyMjg5LTEyNTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTIyODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyOTEtMTIyOTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjI5NS0xMjU0NAorICBGcmVlIGlub2RlczogMTUzNy0xNTY4CitHcm91cCA0OTogKEJsb2NrcyAxMjU0NS0xMjgwMCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTI1NDUsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEyNTQ2LTEyNTQ5CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTI1NTAtMTI2NzMKKyAgQmxvY2sgYml0bWFwIGF0IDEyNjc0ICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDEyNjc1ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxMjY3Ni0xMjY3OSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI2ODAtMTI4MDAKKyAgRnJlZSBpbm9kZXM6IDE1NjktMTYwMAorR3JvdXAgNTA6IChCbG9ja3MgMTI4MDEtMTMwNTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjgwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI4MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjgwMy0xMjgwNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODA3LTEzMDU2CisgIEZyZWUgaW5vZGVzOiAxNjAxLTE2MzIKK0dyb3VwIDUxOiAoQmxvY2tzIDEzMDU3LTEzMzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTMwNTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMDU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMwNTktMTMwNjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzA2My0xMzMxMgorICBGcmVlIGlub2RlczogMTYzMy0xNjY0CitHcm91cCA1MjogKEJsb2NrcyAxMzMxMy0xMzU2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEzMzEzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzMxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzMzE1LTEzMzE4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzMTktMTM1NjgKKyAgRnJlZSBpbm9kZXM6IDE2NjUtMTY5NgorR3JvdXAgNTM6IChCbG9ja3MgMTM1NjktMTM4MjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzU2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTM1NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzU3MS0xMzU3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzNTc1LTEzODI0CisgIEZyZWUgaW5vZGVzOiAxNjk3LTE3MjgKK0dyb3VwIDU0OiAoQmxvY2tzIDEzODI1LTE0MDgwKQorICBCbG9jayBiaXRtYXAgYXQgMTM4MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzODI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTM4MjctMTM4MzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzgzMS0xNDA4MAorICBGcmVlIGlub2RlczogMTcyOS0xNzYwCitHcm91cCA1NTogKEJsb2NrcyAxNDA4MS0xNDMzNikKKyAgQmxvY2sgYml0bWFwIGF0IDE0MDgxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDA4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0MDgzLTE0MDg2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQwODctMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDE3NjEtMTc5MgorR3JvdXAgNTY6IChCbG9ja3MgMTQzMzctMTQ1OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNDMzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDMzOS0xNDM0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0MzQzLTE0NTkyCisgIEZyZWUgaW5vZGVzOiAxNzkzLTE4MjQKK0dyb3VwIDU3OiAoQmxvY2tzIDE0NTkzLTE0ODQ4KQorICBCbG9jayBiaXRtYXAgYXQgMTQ1OTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0NTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQ1OTUtMTQ1OTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDU5OS0xNDg0OAorICBGcmVlIGlub2RlczogMTgyNS0xODU2CitHcm91cCA1ODogKEJsb2NrcyAxNDg0OS0xNTEwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDE0ODQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDg1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0ODUxLTE0ODU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQ4NTUtMTUxMDQKKyAgRnJlZSBpbm9kZXM6IDE4NTctMTg4OAorR3JvdXAgNTk6IChCbG9ja3MgMTUxMDUtMTUzNjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNTEwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUxMDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTEwNy0xNTExMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MTExLTE1MzYwCisgIEZyZWUgaW5vZGVzOiAxODg5LTE5MjAKK0dyb3VwIDYwOiAoQmxvY2tzIDE1MzYxLTE1NjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTUzNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUzNjMtMTUzNjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTM2Ny0xNTYxNgorICBGcmVlIGlub2RlczogMTkyMS0xOTUyCitHcm91cCA2MTogKEJsb2NrcyAxNTYxNy0xNTg3MikKKyAgQmxvY2sgYml0bWFwIGF0IDE1NjE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTYxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1NjE5LTE1NjIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU2MjMtMTU4NzIKKyAgRnJlZSBpbm9kZXM6IDE5NTMtMTk4NAorR3JvdXAgNjI6IChCbG9ja3MgMTU4NzMtMTYxMjgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTg3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTU4NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTg3NS0xNTg3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1ODc5LTE2MTI4CisgIEZyZWUgaW5vZGVzOiAxOTg1LTIwMTYKK0dyb3VwIDYzOiAoQmxvY2tzIDE2MTI5LTE2Mzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTYxMjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2MTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYxMzEtMTYxMzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjEzNS0xNjM4NAorICBGcmVlIGlub2RlczogMjAxNy0yMDQ4CitHcm91cCA2NDogKEJsb2NrcyAxNjM4NS0xNjY0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE2Mzg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjM4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2Mzg3LTE2MzkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTYzOTEtMTY2NDAKKyAgRnJlZSBpbm9kZXM6IDIwNDktMjA4MAorR3JvdXAgNjU6IChCbG9ja3MgMTY2NDEtMTY4OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjY0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTY2NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjY0My0xNjY0NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2NjQ3LTE2ODk2CisgIEZyZWUgaW5vZGVzOiAyMDgxLTIxMTIKK0dyb3VwIDY2OiAoQmxvY2tzIDE2ODk3LTE3MTUyKQorICBCbG9jayBiaXRtYXAgYXQgMTY4OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2ODk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTY4OTktMTY5MDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjkwMy0xNzE1MgorICBGcmVlIGlub2RlczogMjExMy0yMTQ0CitHcm91cCA2NzogKEJsb2NrcyAxNzE1My0xNzQwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE3MTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzE1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3MTU1LTE3MTU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTcxNTktMTc0MDgKKyAgRnJlZSBpbm9kZXM6IDIxNDUtMjE3NgorR3JvdXAgNjg6IChCbG9ja3MgMTc0MDktMTc2NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxNzQwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTc0MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNzQxMS0xNzQxNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE3NDE1LTE3NjY0CisgIEZyZWUgaW5vZGVzOiAyMTc3LTIyMDgKK0dyb3VwIDY5OiAoQmxvY2tzIDE3NjY1LTE3OTIwKQorICBCbG9jayBiaXRtYXAgYXQgMTc2NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE3NjY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTc2NjctMTc2NzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzY3MS0xNzkyMAorICBGcmVlIGlub2RlczogMjIwOS0yMjQwCitHcm91cCA3MDogKEJsb2NrcyAxNzkyMS0xODE3NikKKyAgQmxvY2sgYml0bWFwIGF0IDE3OTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzkyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3OTIzLTE3OTI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTc5MjctMTgxNzYKKyAgRnJlZSBpbm9kZXM6IDIyNDEtMjI3MgorR3JvdXAgNzE6IChCbG9ja3MgMTgxNzctMTg0MzIpCisgIEJsb2NrIGJpdG1hcCBhdCAxODE3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTgxNzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODE3OS0xODE4MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4MTgzLTE4NDMyCisgIEZyZWUgaW5vZGVzOiAyMjczLTIzMDQKK0dyb3VwIDcyOiAoQmxvY2tzIDE4NDMzLTE4Njg4KQorICBCbG9jayBiaXRtYXAgYXQgMTg0MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE4NDM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTg0MzUtMTg0MzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxODQzOS0xODY4OAorICBGcmVlIGlub2RlczogMjMwNS0yMzM2CitHcm91cCA3MzogKEJsb2NrcyAxODY4OS0xODk0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE4Njg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxODY5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4NjkxLTE4Njk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTg2OTUtMTg5NDQKKyAgRnJlZSBpbm9kZXM6IDIzMzctMjM2OAorR3JvdXAgNzQ6IChCbG9ja3MgMTg5NDUtMTkyMDApCisgIEJsb2NrIGJpdG1hcCBhdCAxODk0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTg5NDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODk0Ny0xODk1MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4OTUxLTE5MjAwCisgIEZyZWUgaW5vZGVzOiAyMzY5LTI0MDAKK0dyb3VwIDc1OiAoQmxvY2tzIDE5MjAxLTE5NDU2KQorICBCbG9jayBiaXRtYXAgYXQgMTkyMDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5MjAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTkyMDMtMTkyMDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTIwNy0xOTQ1NgorICBGcmVlIGlub2RlczogMjQwMS0yNDMyCitHcm91cCA3NjogKEJsb2NrcyAxOTQ1Ny0xOTcxMikKKyAgQmxvY2sgYml0bWFwIGF0IDE5NDU3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxOTQ1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE5NDU5LTE5NDYyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk0NjMtMTk3MTIKKyAgRnJlZSBpbm9kZXM6IDI0MzMtMjQ2NAorR3JvdXAgNzc6IChCbG9ja3MgMTk3MTMtMTk5NjgpCisgIEJsb2NrIGJpdG1hcCBhdCAxOTcxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTk3MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxOTcxNS0xOTcxOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5NzE5LTE5OTY4CisgIEZyZWUgaW5vZGVzOiAyNDY1LTI0OTYKK0dyb3VwIDc4OiAoQmxvY2tzIDE5OTY5LTIwMjI0KQorICBCbG9jayBiaXRtYXAgYXQgMTk5NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5OTcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTk5NzEtMTk5NzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTk3NS0yMDIyNAorICBGcmVlIGlub2RlczogMjQ5Ny0yNTI4CitHcm91cCA3OTogKEJsb2NrcyAyMDIyNS0yMDQ4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDIwMjI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDIyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIwMjI3LTIwMjMwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjAyMzEtMjA0ODAKKyAgRnJlZSBpbm9kZXM6IDI1MjktMjU2MAorR3JvdXAgODA6IChCbG9ja3MgMjA0ODEtMjA3MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjA0ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDQ4My0yMDQ4NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwNDg3LTIwNzM2CisgIEZyZWUgaW5vZGVzOiAyNTYxLTI1OTIKK0dyb3VwIDgxOiAoQmxvY2tzIDIwNzM3LTIwOTkyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyMDczNywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjA3MzgtMjA3NDEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyMDc0Mi0yMDg2NQorICBCbG9jayBiaXRtYXAgYXQgMjA4NjYgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMjA4NjcgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDIwODY4LTIwODcxICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDg3Mi0yMDk5MgorICBGcmVlIGlub2RlczogMjU5My0yNjI0CitHcm91cCA4MjogKEJsb2NrcyAyMDk5My0yMTI0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDIwOTkzICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDk5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIwOTk1LTIwOTk4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA5OTktMjEyNDgKKyAgRnJlZSBpbm9kZXM6IDI2MjUtMjY1NgorR3JvdXAgODM6IChCbG9ja3MgMjEyNDktMjE1MDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMTI0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjEyNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMTI1MS0yMTI1NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIxMjU1LTIxNTA0CisgIEZyZWUgaW5vZGVzOiAyNjU3LTI2ODgKK0dyb3VwIDg0OiAoQmxvY2tzIDIxNTA1LTIxNzYwKQorICBCbG9jayBiaXRtYXAgYXQgMjE1MDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIxNTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjE1MDctMjE1MTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMTUxMS0yMTc2MAorICBGcmVlIGlub2RlczogMjY4OS0yNzIwCitHcm91cCA4NTogKEJsb2NrcyAyMTc2MS0yMjAxNikKKyAgQmxvY2sgYml0bWFwIGF0IDIxNzYxICgrMCksIElub2RlIGJpdG1hcCBhdCAyMTc2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIxNzYzLTIxNzY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjE3NjctMjIwMTYKKyAgRnJlZSBpbm9kZXM6IDI3MjEtMjc1MgorR3JvdXAgODY6IChCbG9ja3MgMjIwMTctMjIyNzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyMjAxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjIwMTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMjAxOS0yMjAyMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIyMDIzLTIyMjcyCisgIEZyZWUgaW5vZGVzOiAyNzUzLTI3ODQKK0dyb3VwIDg3OiAoQmxvY2tzIDIyMjczLTIyNTI4KQorICBCbG9jayBiaXRtYXAgYXQgMjIyNzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIyMjc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjIyNzUtMjIyNzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMjI3OS0yMjUyOAorICBGcmVlIGlub2RlczogMjc4NS0yODE2CitHcm91cCA4ODogKEJsb2NrcyAyMjUyOS0yMjc4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDIyNTI5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMjUzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIyNTMxLTIyNTM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjI1MzUtMjI3ODQKKyAgRnJlZSBpbm9kZXM6IDI4MTctMjg0OAorR3JvdXAgODk6IChCbG9ja3MgMjI3ODUtMjMwNDApCisgIEJsb2NrIGJpdG1hcCBhdCAyMjc4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjI3ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMjc4Ny0yMjc5MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIyNzkxLTIzMDQwCisgIEZyZWUgaW5vZGVzOiAyODQ5LTI4ODAKK0dyb3VwIDkwOiAoQmxvY2tzIDIzMDQxLTIzMjk2KQorICBCbG9jayBiaXRtYXAgYXQgMjMwNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIzMDQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjMwNDMtMjMwNDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzA0Ny0yMzI5NgorICBGcmVlIGlub2RlczogMjg4MS0yOTEyCitHcm91cCA5MTogKEJsb2NrcyAyMzI5Ny0yMzU1MikKKyAgQmxvY2sgYml0bWFwIGF0IDIzMjk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMzI5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIzMjk5LTIzMzAyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjMzMDMtMjM1NTIKKyAgRnJlZSBpbm9kZXM6IDI5MTMtMjk0NAorR3JvdXAgOTI6IChCbG9ja3MgMjM1NTMtMjM4MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAyMzU1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjM1NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMzU1NS0yMzU1OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIzNTU5LTIzODA4CisgIEZyZWUgaW5vZGVzOiAyOTQ1LTI5NzYKK0dyb3VwIDkzOiAoQmxvY2tzIDIzODA5LTI0MDY0KQorICBCbG9jayBiaXRtYXAgYXQgMjM4MDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIzODEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjM4MTEtMjM4MTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzgxNS0yNDA2NAorICBGcmVlIGlub2RlczogMjk3Ny0zMDA4CitHcm91cCA5NDogKEJsb2NrcyAyNDA2NS0yNDMyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDI0MDY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNDA2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI0MDY3LTI0MDcwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQwNzEtMjQzMjAKKyAgRnJlZSBpbm9kZXM6IDMwMDktMzA0MAorR3JvdXAgOTU6IChCbG9ja3MgMjQzMjEtMjQ1NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAyNDMyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjQzMjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNDMyMy0yNDMyNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0MzI3LTI0NTc2CisgIEZyZWUgaW5vZGVzOiAzMDQxLTMwNzIKK0dyb3VwIDk2OiAoQmxvY2tzIDI0NTc3LTI0ODMyKQorICBCbG9jayBiaXRtYXAgYXQgMjQ1NzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI0NTc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjQ1NzktMjQ1ODIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDU4My0yNDgzMgorICBGcmVlIGlub2RlczogMzA3My0zMTA0CitHcm91cCA5NzogKEJsb2NrcyAyNDgzMy0yNTA4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDI0ODMzICgrMCksIElub2RlIGJpdG1hcCBhdCAyNDgzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI0ODM1LTI0ODM4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQ4MzktMjUwODgKKyAgRnJlZSBpbm9kZXM6IDMxMDUtMzEzNgorR3JvdXAgOTg6IChCbG9ja3MgMjUwODktMjUzNDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyNTA4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjUwOTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNTA5MS0yNTA5NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1MDk1LTI1MzQ0CisgIEZyZWUgaW5vZGVzOiAzMTM3LTMxNjgKK0dyb3VwIDk5OiAoQmxvY2tzIDI1MzQ1LTI1NjAwKQorICBCbG9jayBiaXRtYXAgYXQgMjUzNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI1MzQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjUzNDctMjUzNTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNTM1MS0yNTYwMAorICBGcmVlIGlub2RlczogMzE2OS0zMjAwCitHcm91cCAxMDA6IChCbG9ja3MgMjU2MDEtMjU4NTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyNTYwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjU2MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNTYwMy0yNTYwNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1NjA3LTI1ODU2CisgIEZyZWUgaW5vZGVzOiAzMjAxLTMyMzIKK0dyb3VwIDEwMTogKEJsb2NrcyAyNTg1Ny0yNjExMikKKyAgQmxvY2sgYml0bWFwIGF0IDI1ODU3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNTg1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI1ODU5LTI1ODYyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU4NjMtMjYxMTIKKyAgRnJlZSBpbm9kZXM6IDMyMzMtMzI2NAorR3JvdXAgMTAyOiAoQmxvY2tzIDI2MTEzLTI2MzY4KQorICBCbG9jayBiaXRtYXAgYXQgMjYxMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI2MTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjYxMTUtMjYxMTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjExOS0yNjM2OAorICBGcmVlIGlub2RlczogMzI2NS0zMjk2CitHcm91cCAxMDM6IChCbG9ja3MgMjYzNjktMjY2MjQpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjM2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjYzNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjM3MS0yNjM3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI2Mzc1LTI2NjI0CisgIEZyZWUgaW5vZGVzOiAzMjk3LTMzMjgKK0dyb3VwIDEwNDogKEJsb2NrcyAyNjYyNS0yNjg4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDI2NjI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNjYyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI2NjI3LTI2NjMwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjY2MzEtMjY4ODAKKyAgRnJlZSBpbm9kZXM6IDMzMjktMzM2MAorR3JvdXAgMTA1OiAoQmxvY2tzIDI2ODgxLTI3MTM2KQorICBCbG9jayBiaXRtYXAgYXQgMjY4ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI2ODgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjY4ODMtMjY4ODYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjg4Ny0yNzEzNgorICBGcmVlIGlub2RlczogMzM2MS0zMzkyCitHcm91cCAxMDY6IChCbG9ja3MgMjcxMzctMjczOTIpCisgIEJsb2NrIGJpdG1hcCBhdCAyNzEzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjcxMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNzEzOS0yNzE0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3MTQzLTI3MzkyCisgIEZyZWUgaW5vZGVzOiAzMzkzLTM0MjQKK0dyb3VwIDEwNzogKEJsb2NrcyAyNzM5My0yNzY0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDI3MzkzICgrMCksIElub2RlIGJpdG1hcCBhdCAyNzM5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI3Mzk1LTI3Mzk4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjczOTktMjc2NDgKKyAgRnJlZSBpbm9kZXM6IDM0MjUtMzQ1NgorR3JvdXAgMTA4OiAoQmxvY2tzIDI3NjQ5LTI3OTA0KQorICBCbG9jayBiaXRtYXAgYXQgMjc2NDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI3NjUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjc2NTEtMjc2NTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNzY1NS0yNzkwNAorICBGcmVlIGlub2RlczogMzQ1Ny0zNDg4CitHcm91cCAxMDk6IChCbG9ja3MgMjc5MDUtMjgxNjApCisgIEJsb2NrIGJpdG1hcCBhdCAyNzkwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjc5MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNzkwNy0yNzkxMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3OTExLTI4MTYwCisgIEZyZWUgaW5vZGVzOiAzNDg5LTM1MjAKK0dyb3VwIDExMDogKEJsb2NrcyAyODE2MS0yODQxNikKKyAgQmxvY2sgYml0bWFwIGF0IDI4MTYxICgrMCksIElub2RlIGJpdG1hcCBhdCAyODE2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI4MTYzLTI4MTY2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjgxNjctMjg0MTYKKyAgRnJlZSBpbm9kZXM6IDM1MjEtMzU1MgorR3JvdXAgMTExOiAoQmxvY2tzIDI4NDE3LTI4NjcyKQorICBCbG9jayBiaXRtYXAgYXQgMjg0MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4NDE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjg0MTktMjg0MjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODQyMy0yODY3MgorICBGcmVlIGlub2RlczogMzU1My0zNTg0CitHcm91cCAxMTI6IChCbG9ja3MgMjg2NzMtMjg5MjgpCisgIEJsb2NrIGJpdG1hcCBhdCAyODY3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjg2NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyODY3NS0yODY3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI4Njc5LTI4OTI4CisgIEZyZWUgaW5vZGVzOiAzNTg1LTM2MTYKK0dyb3VwIDExMzogKEJsb2NrcyAyODkyOS0yOTE4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDI4OTI5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyODkzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI4OTMxLTI4OTM0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjg5MzUtMjkxODQKKyAgRnJlZSBpbm9kZXM6IDM2MTctMzY0OAorR3JvdXAgMTE0OiAoQmxvY2tzIDI5MTg1LTI5NDQwKQorICBCbG9jayBiaXRtYXAgYXQgMjkxODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI5MTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjkxODctMjkxOTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyOTE5MS0yOTQ0MAorICBGcmVlIGlub2RlczogMzY0OS0zNjgwCitHcm91cCAxMTU6IChCbG9ja3MgMjk0NDEtMjk2OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyOTQ0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjk0NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyOTQ0My0yOTQ0NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5NDQ3LTI5Njk2CisgIEZyZWUgaW5vZGVzOiAzNjgxLTM3MTIKK0dyb3VwIDExNjogKEJsb2NrcyAyOTY5Ny0yOTk1MikKKyAgQmxvY2sgYml0bWFwIGF0IDI5Njk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyOTY5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI5Njk5LTI5NzAyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjk3MDMtMjk5NTIKKyAgRnJlZSBpbm9kZXM6IDM3MTMtMzc0NAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3Jlc2l6ZTJmcyAtcCB0ZXN0LmltZyA0MDAwMAorUmVzaXppbmcgdGhlIGZpbGVzeXN0ZW0gb24gdGVzdC5pbWcgdG8gNDAwMDAgKDFrKSBibG9ja3MuCitCZWdpbiBwYXNzIDEgKG1heCA9IDQwKQorRXh0ZW5kaW5nIHRoZSBpbm9kZSB0YWJsZSAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYCitUaGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyBpcyBub3cgNDAwMDAgKDFrKSBibG9ja3MgbG9uZy4KKworRmlsZXN5c3RlbSBkaWQgbm90IGhhdmUgYSBVVUlEOyBnZW5lcmF0aW5nIG9uZS4KKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNTAyNCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDIzNzYvNDAwMDAgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkdW1wZTJmcyB0ZXN0LmltZworRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgNTAyNAorQmxvY2sgY291bnQ6ICAgICAgICAgICAgICA0MDAwMAorUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAxOTg4CitGcmVlIGJsb2NrczogICAgICAgICAgICAgIDM3NjI0CitGcmVlIGlub2RlczogICAgICAgICAgICAgIDUwMTMKK0ZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitGcmFnbWVudCBzaXplOiAgICAgICAgICAgIDEwMjQKK1Jlc2VydmVkIEdEVCBibG9ja3M6ICAgICAgMTIzCitCbG9ja3MgcGVyIGdyb3VwOiAgICAgICAgIDI1NgorRnJhZ21lbnRzIHBlciBncm91cDogICAgICAyNTYKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMzIKK0lub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgNAorTW91bnQgY291bnQ6ICAgICAgICAgICAgICAwCitDaGVjayBpbnRlcnZhbDogICAgICAgICAgIDE1NTUyMDAwICg2IG1vbnRocykKK1Jlc2VydmVkIGJsb2NrcyB1aWQ6ICAgICAgMAorUmVzZXJ2ZWQgYmxvY2tzIGdpZDogICAgICAwCitGaXJzdCBpbm9kZTogICAgICAgICAgICAgIDExCitJbm9kZSBzaXplOgkgICAgICAgICAgMTI4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisKKworR3JvdXAgMDogKEJsb2NrcyAxLTI1NikKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItNgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDctMTI5CisgIEJsb2NrIGJpdG1hcCBhdCAxMzAgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMTMxICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxMzItMTM1ICgrMTMxKQorICAxMDcgZnJlZSBibG9ja3MsIDIxIGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTAtMjU2CisgIEZyZWUgaW5vZGVzOiAxMi0zMgorR3JvdXAgMTogKEJsb2NrcyAyNTctNTEyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNTcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI1OC0yNjIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNjMtMzg1CisgIEJsb2NrIGJpdG1hcCBhdCAzODYgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMzg3ICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAzODgtMzkxICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzOTItNTEyCisgIEZyZWUgaW5vZGVzOiAzMy02NAorR3JvdXAgMjogKEJsb2NrcyA1MTMtNzY4KQorICBCbG9jayBiaXRtYXAgYXQgNTEzICgrMCksIElub2RlIGJpdG1hcCBhdCA1MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MTUtNTE4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTE5LTc2OAorICBGcmVlIGlub2RlczogNjUtOTYKK0dyb3VwIDM6IChCbG9ja3MgNzY5LTEwMjQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDc2OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNzcwLTc3NAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDc3NS04OTcKKyAgQmxvY2sgYml0bWFwIGF0IDg5OCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCA4OTkgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDkwMC05MDMgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkwNC0xMDI0CisgIEZyZWUgaW5vZGVzOiA5Ny0xMjgKK0dyb3VwIDQ6IChCbG9ja3MgMTAyNS0xMjgwKQorICBCbG9jayBiaXRtYXAgYXQgMTAyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTAyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMjctMTAzMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMzEtMTI4MAorICBGcmVlIGlub2RlczogMTI5LTE2MAorR3JvdXAgNTogKEJsb2NrcyAxMjgxLTE1MzYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDEyODEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDEyODItMTI4NgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDEyODctMTQwOQorICBCbG9jayBiaXRtYXAgYXQgMTQxMCAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAxNDExICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCAxNDEyLTE0MTUgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0MTYtMTUzNgorICBGcmVlIGlub2RlczogMTYxLTE5MgorR3JvdXAgNjogKEJsb2NrcyAxNTM3LTE3OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUzOS0xNTQyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU0My0xNzkyCisgIEZyZWUgaW5vZGVzOiAxOTMtMjI0CitHcm91cCA3OiAoQmxvY2tzIDE3OTMtMjA0OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTc5MywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTc5NC0xNzk4CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTc5OS0xOTIxCisgIEJsb2NrIGJpdG1hcCBhdCAxOTIyICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDE5MjMgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDE5MjQtMTkyNyAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTkyOC0yMDQ4CisgIEZyZWUgaW5vZGVzOiAyMjUtMjU2CitHcm91cCA4OiAoQmxvY2tzIDIwNDktMjMwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDUxLTIwNTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDU1LTIzMDQKKyAgRnJlZSBpbm9kZXM6IDI1Ny0yODgKK0dyb3VwIDk6IChCbG9ja3MgMjMwNS0yNTYwKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyMzA1LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyMzA2LTIzMTAKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyMzExLTI0MzMKKyAgQmxvY2sgYml0bWFwIGF0IDI0MzQgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMjQzNSAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMjQzNi0yNDM5ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDQwLTI1NjAKKyAgRnJlZSBpbm9kZXM6IDI4OS0zMjAKK0dyb3VwIDEwOiAoQmxvY2tzIDI1NjEtMjgxNikKKyAgQmxvY2sgYml0bWFwIGF0IDI1NjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI1NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNTYzLTI1NjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNTY3LTI4MTYKKyAgRnJlZSBpbm9kZXM6IDMyMS0zNTIKK0dyb3VwIDExOiAoQmxvY2tzIDI4MTctMzA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDI4MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyODE5LTI4MjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODIzLTMwNzIKKyAgRnJlZSBpbm9kZXM6IDM1My0zODQKK0dyb3VwIDEyOiAoQmxvY2tzIDMwNzMtMzMyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDMwNzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMwNzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMDc1LTMwNzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMDc5LTMzMjgKKyAgRnJlZSBpbm9kZXM6IDM4NS00MTYKK0dyb3VwIDEzOiAoQmxvY2tzIDMzMjktMzU4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDMzMjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMzMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMzMxLTMzMzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMzM1LTM1ODQKKyAgRnJlZSBpbm9kZXM6IDQxNy00NDgKK0dyb3VwIDE0OiAoQmxvY2tzIDM1ODUtMzg0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDM1ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM1ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNTg3LTM1OTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNTkxLTM4NDAKKyAgRnJlZSBpbm9kZXM6IDQ0OS00ODAKK0dyb3VwIDE1OiAoQmxvY2tzIDM4NDEtNDA5NikKKyAgQmxvY2sgYml0bWFwIGF0IDM4NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM4NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzODQzLTM4NDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzODQ3LTQwOTYKKyAgRnJlZSBpbm9kZXM6IDQ4MS01MTIKK0dyb3VwIDE2OiAoQmxvY2tzIDQwOTctNDM1MikKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk5LTQxMDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MTAzLTQzNTIKKyAgRnJlZSBpbm9kZXM6IDUxMy01NDQKK0dyb3VwIDE3OiAoQmxvY2tzIDQzNTMtNDYwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQzNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQzNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MzU1LTQzNTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MzU5LTQ2MDgKKyAgRnJlZSBpbm9kZXM6IDU0NS01NzYKK0dyb3VwIDE4OiAoQmxvY2tzIDQ2MDktNDg2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ2MDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ2MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NjExLTQ2MTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NjE1LTQ4NjQKKyAgRnJlZSBpbm9kZXM6IDU3Ny02MDgKK0dyb3VwIDE5OiAoQmxvY2tzIDQ4NjUtNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ4NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ4NjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0ODY3LTQ4NzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0ODcxLTUxMjAKKyAgRnJlZSBpbm9kZXM6IDYwOS02NDAKK0dyb3VwIDIwOiAoQmxvY2tzIDUxMjEtNTM3NikKKyAgQmxvY2sgYml0bWFwIGF0IDUxMjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUxMjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MTIzLTUxMjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MTI3LTUzNzYKKyAgRnJlZSBpbm9kZXM6IDY0MS02NzIKK0dyb3VwIDIxOiAoQmxvY2tzIDUzNzctNTYzMikKKyAgQmxvY2sgYml0bWFwIGF0IDUzNzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUzNzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1Mzc5LTUzODIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MzgzLTU2MzIKKyAgRnJlZSBpbm9kZXM6IDY3My03MDQKK0dyb3VwIDIyOiAoQmxvY2tzIDU2MzMtNTg4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDU2MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU2MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NjM1LTU2MzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NjM5LTU4ODgKKyAgRnJlZSBpbm9kZXM6IDcwNS03MzYKK0dyb3VwIDIzOiAoQmxvY2tzIDU4ODktNjE0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDU4ODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU4OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1ODkxLTU4OTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1ODk1LTYxNDQKKyAgRnJlZSBpbm9kZXM6IDczNy03NjgKK0dyb3VwIDI0OiAoQmxvY2tzIDYxNDUtNjQwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDYxNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYxNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ3LTYxNTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTUxLTY0MDAKKyAgRnJlZSBpbm9kZXM6IDc2OS04MDAKK0dyb3VwIDI1OiAoQmxvY2tzIDY0MDEtNjY1NikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNjQwMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNjQwMi02NDA2CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNjQwNy02NTI5CisgIEJsb2NrIGJpdG1hcCBhdCA2NTMwICgrMTI5KSwgSW5vZGUgYml0bWFwIGF0IDY1MzEgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDY1MzItNjUzNSAoKzEzMSkKKyAgMTIxIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjUzNi02NjU2CisgIEZyZWUgaW5vZGVzOiA4MDEtODMyCitHcm91cCAyNjogKEJsb2NrcyA2NjU3LTY5MTIpCisgIEJsb2NrIGJpdG1hcCBhdCA2NjU3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2NjU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjY1OS02NjYyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjY2My02OTEyCisgIEZyZWUgaW5vZGVzOiA4MzMtODY0CitHcm91cCAyNzogKEJsb2NrcyA2OTEzLTcxNjgpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDY5MTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDY5MTQtNjkxOAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDY5MTktNzA0MQorICBCbG9jayBiaXRtYXAgYXQgNzA0MiAoKzEyOSksIElub2RlIGJpdG1hcCBhdCA3MDQzICgrMTMwKQorICBJbm9kZSB0YWJsZSBhdCA3MDQ0LTcwNDcgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcwNDgtNzE2OAorICBGcmVlIGlub2RlczogODY1LTg5NgorR3JvdXAgMjg6IChCbG9ja3MgNzE2OS03NDI0KQorICBCbG9jayBiaXRtYXAgYXQgNzE2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzE3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDcxNzEtNzE3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcxNzUtNzQyNAorICBGcmVlIGlub2RlczogODk3LTkyOAorR3JvdXAgMjk6IChCbG9ja3MgNzQyNS03NjgwKQorICBCbG9jayBiaXRtYXAgYXQgNzQyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzQyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc0MjctNzQzMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0MzEtNzY4MAorICBGcmVlIGlub2RlczogOTI5LTk2MAorR3JvdXAgMzA6IChCbG9ja3MgNzY4MS03OTM2KQorICBCbG9jayBiaXRtYXAgYXQgNzY4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzY4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc2ODMtNzY4NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc2ODctNzkzNgorICBGcmVlIGlub2RlczogOTYxLTk5MgorR3JvdXAgMzE6IChCbG9ja3MgNzkzNy04MTkyKQorICBCbG9jayBiaXRtYXAgYXQgNzkzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzkzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc5MzktNzk0MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc5NDMtODE5MgorICBGcmVlIGlub2RlczogOTkzLTEwMjQKK0dyb3VwIDMyOiAoQmxvY2tzIDgxOTMtODQ0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDgxOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTk1LTgxOTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4MTk5LTg0NDgKKyAgRnJlZSBpbm9kZXM6IDEwMjUtMTA1NgorR3JvdXAgMzM6IChCbG9ja3MgODQ0OS04NzA0KQorICBCbG9jayBiaXRtYXAgYXQgODQ0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODQ1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg0NTEtODQ1NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg0NTUtODcwNAorICBGcmVlIGlub2RlczogMTA1Ny0xMDg4CitHcm91cCAzNDogKEJsb2NrcyA4NzA1LTg5NjApCisgIEJsb2NrIGJpdG1hcCBhdCA4NzA1ICgrMCksIElub2RlIGJpdG1hcCBhdCA4NzA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODcwNy04NzEwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODcxMS04OTYwCisgIEZyZWUgaW5vZGVzOiAxMDg5LTExMjAKK0dyb3VwIDM1OiAoQmxvY2tzIDg5NjEtOTIxNikKKyAgQmxvY2sgYml0bWFwIGF0IDg5NjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg5NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4OTYzLTg5NjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4OTY3LTkyMTYKKyAgRnJlZSBpbm9kZXM6IDExMjEtMTE1MgorR3JvdXAgMzY6IChCbG9ja3MgOTIxNy05NDcyKQorICBCbG9jayBiaXRtYXAgYXQgOTIxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTIxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkyMTktOTIyMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkyMjMtOTQ3MgorICBGcmVlIGlub2RlczogMTE1My0xMTg0CitHcm91cCAzNzogKEJsb2NrcyA5NDczLTk3MjgpCisgIEJsb2NrIGJpdG1hcCBhdCA5NDczICgrMCksIElub2RlIGJpdG1hcCBhdCA5NDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTQ3NS05NDc4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTQ3OS05NzI4CisgIEZyZWUgaW5vZGVzOiAxMTg1LTEyMTYKK0dyb3VwIDM4OiAoQmxvY2tzIDk3MjktOTk4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDk3MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk3MzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NzMxLTk3MzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NzM1LTk5ODQKKyAgRnJlZSBpbm9kZXM6IDEyMTctMTI0OAorR3JvdXAgMzk6IChCbG9ja3MgOTk4NS0xMDI0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDk5ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk5ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5OTg3LTk5OTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5OTkxLTEwMjQwCisgIEZyZWUgaW5vZGVzOiAxMjQ5LTEyODAKK0dyb3VwIDQwOiAoQmxvY2tzIDEwMjQxLTEwNDk2KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDMtMTAyNDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDI0Ny0xMDQ5NgorICBGcmVlIGlub2RlczogMTI4MS0xMzEyCitHcm91cCA0MTogKEJsb2NrcyAxMDQ5Ny0xMDc1MikKKyAgQmxvY2sgYml0bWFwIGF0IDEwNDk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDQ5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwNDk5LTEwNTAyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA1MDMtMTA3NTIKKyAgRnJlZSBpbm9kZXM6IDEzMTMtMTM0NAorR3JvdXAgNDI6IChCbG9ja3MgMTA3NTMtMTEwMDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDc1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA3NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDc1NS0xMDc1OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNzU5LTExMDA4CisgIEZyZWUgaW5vZGVzOiAxMzQ1LTEzNzYKK0dyb3VwIDQzOiAoQmxvY2tzIDExMDA5LTExMjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTEwMDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExMDEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTEwMTEtMTEwMTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTAxNS0xMTI2NAorICBGcmVlIGlub2RlczogMTM3Ny0xNDA4CitHcm91cCA0NDogKEJsb2NrcyAxMTI2NS0xMTUyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMjY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTI2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMjY3LTExMjcwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNzEtMTE1MjAKKyAgRnJlZSBpbm9kZXM6IDE0MDktMTQ0MAorR3JvdXAgNDU6IChCbG9ja3MgMTE1MjEtMTE3NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTUyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE1MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTUyMy0xMTUyNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExNTI3LTExNzc2CisgIEZyZWUgaW5vZGVzOiAxNDQxLTE0NzIKK0dyb3VwIDQ2OiAoQmxvY2tzIDExNzc3LTEyMDMyKQorICBCbG9jayBiaXRtYXAgYXQgMTE3NzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE3NzktMTE3ODIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTc4My0xMjAzMgorICBGcmVlIGlub2RlczogMTQ3My0xNTA0CitHcm91cCA0NzogKEJsb2NrcyAxMjAzMy0xMjI4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyMDMzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjAzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMDM1LTEyMDM4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIwMzktMTIyODgKKyAgRnJlZSBpbm9kZXM6IDE1MDUtMTUzNgorR3JvdXAgNDg6IChCbG9ja3MgMTIyODktMTI1NDQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjI4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIyOTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjI5MS0xMjI5NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMjk1LTEyNTQ0CisgIEZyZWUgaW5vZGVzOiAxNTM3LTE1NjgKK0dyb3VwIDQ5OiAoQmxvY2tzIDEyNTQ1LTEyODAwKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMjU0NSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTI1NDYtMTI1NTAKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxMjU1MS0xMjY3MworICBCbG9jayBiaXRtYXAgYXQgMTI2NzQgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMTI2NzUgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDEyNjc2LTEyNjc5ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjY4MC0xMjgwMAorICBGcmVlIGlub2RlczogMTU2OS0xNjAwCitHcm91cCA1MDogKEJsb2NrcyAxMjgwMS0xMzA1NikKKyAgQmxvY2sgYml0bWFwIGF0IDEyODAxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjgwMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyODAzLTEyODA2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI4MDctMTMwNTYKKyAgRnJlZSBpbm9kZXM6IDE2MDEtMTYzMgorR3JvdXAgNTE6IChCbG9ja3MgMTMwNTctMTMzMTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzA1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTMwNTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzA1OS0xMzA2MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzMDYzLTEzMzEyCisgIEZyZWUgaW5vZGVzOiAxNjMzLTE2NjQKK0dyb3VwIDUyOiAoQmxvY2tzIDEzMzEzLTEzNTY4KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMzE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMzMTUtMTMzMTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzMxOS0xMzU2OAorICBGcmVlIGlub2RlczogMTY2NS0xNjk2CitHcm91cCA1MzogKEJsb2NrcyAxMzU2OS0xMzgyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDEzNTY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzU3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzNTcxLTEzNTc0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTM1NzUtMTM4MjQKKyAgRnJlZSBpbm9kZXM6IDE2OTctMTcyOAorR3JvdXAgNTQ6IChCbG9ja3MgMTM4MjUtMTQwODApCisgIEJsb2NrIGJpdG1hcCBhdCAxMzgyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTM4MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzgyNy0xMzgzMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzODMxLTE0MDgwCisgIEZyZWUgaW5vZGVzOiAxNzI5LTE3NjAKK0dyb3VwIDU1OiAoQmxvY2tzIDE0MDgxLTE0MzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTQwODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0MDgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQwODMtMTQwODYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDA4Ny0xNDMzNgorICBGcmVlIGlub2RlczogMTc2MS0xNzkyCitHcm91cCA1NjogKEJsb2NrcyAxNDMzNy0xNDU5MikKKyAgQmxvY2sgYml0bWFwIGF0IDE0MzM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDMzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0MzM5LTE0MzQyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQzNDMtMTQ1OTIKKyAgRnJlZSBpbm9kZXM6IDE3OTMtMTgyNAorR3JvdXAgNTc6IChCbG9ja3MgMTQ1OTMtMTQ4NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNDU5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQ1OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDU5NS0xNDU5OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0NTk5LTE0ODQ4CisgIEZyZWUgaW5vZGVzOiAxODI1LTE4NTYKK0dyb3VwIDU4OiAoQmxvY2tzIDE0ODQ5LTE1MTA0KQorICBCbG9jayBiaXRtYXAgYXQgMTQ4NDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0ODUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQ4NTEtMTQ4NTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDg1NS0xNTEwNAorICBGcmVlIGlub2RlczogMTg1Ny0xODg4CitHcm91cCA1OTogKEJsb2NrcyAxNTEwNS0xNTM2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1MTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTEwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MTA3LTE1MTEwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUxMTEtMTUzNjAKKyAgRnJlZSBpbm9kZXM6IDE4ODktMTkyMAorR3JvdXAgNjA6IChCbG9ja3MgMTUzNjEtMTU2MTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTM2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUzNjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTM2My0xNTM2NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MzY3LTE1NjE2CisgIEZyZWUgaW5vZGVzOiAxOTIxLTE5NTIKK0dyb3VwIDYxOiAoQmxvY2tzIDE1NjE3LTE1ODcyKQorICBCbG9jayBiaXRtYXAgYXQgMTU2MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1NjE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTU2MTktMTU2MjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTYyMy0xNTg3MgorICBGcmVlIGlub2RlczogMTk1My0xOTg0CitHcm91cCA2MjogKEJsb2NrcyAxNTg3My0xNjEyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1ODczICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTg3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1ODc1LTE1ODc4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU4NzktMTYxMjgKKyAgRnJlZSBpbm9kZXM6IDE5ODUtMjAxNgorR3JvdXAgNjM6IChCbG9ja3MgMTYxMjktMTYzODQpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjEyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTYxMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjEzMS0xNjEzNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2MTM1LTE2Mzg0CisgIEZyZWUgaW5vZGVzOiAyMDE3LTIwNDgKK0dyb3VwIDY0OiAoQmxvY2tzIDE2Mzg1LTE2NjQwKQorICBCbG9jayBiaXRtYXAgYXQgMTYzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2Mzg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYzODctMTYzOTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjM5MS0xNjY0MAorICBGcmVlIGlub2RlczogMjA0OS0yMDgwCitHcm91cCA2NTogKEJsb2NrcyAxNjY0MS0xNjg5NikKKyAgQmxvY2sgYml0bWFwIGF0IDE2NjQxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjY0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2NjQzLTE2NjQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTY2NDctMTY4OTYKKyAgRnJlZSBpbm9kZXM6IDIwODEtMjExMgorR3JvdXAgNjY6IChCbG9ja3MgMTY4OTctMTcxNTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjg5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTY4OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjg5OS0xNjkwMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2OTAzLTE3MTUyCisgIEZyZWUgaW5vZGVzOiAyMTEzLTIxNDQKK0dyb3VwIDY3OiAoQmxvY2tzIDE3MTUzLTE3NDA4KQorICBCbG9jayBiaXRtYXAgYXQgMTcxNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE3MTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTcxNTUtMTcxNTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzE1OS0xNzQwOAorICBGcmVlIGlub2RlczogMjE0NS0yMTc2CitHcm91cCA2ODogKEJsb2NrcyAxNzQwOS0xNzY2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE3NDA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzQxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3NDExLTE3NDE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTc0MTUtMTc2NjQKKyAgRnJlZSBpbm9kZXM6IDIxNzctMjIwOAorR3JvdXAgNjk6IChCbG9ja3MgMTc2NjUtMTc5MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNzY2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTc2NjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNzY2Ny0xNzY3MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE3NjcxLTE3OTIwCisgIEZyZWUgaW5vZGVzOiAyMjA5LTIyNDAKK0dyb3VwIDcwOiAoQmxvY2tzIDE3OTIxLTE4MTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTc5MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE3OTIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTc5MjMtMTc5MjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzkyNy0xODE3NgorICBGcmVlIGlub2RlczogMjI0MS0yMjcyCitHcm91cCA3MTogKEJsb2NrcyAxODE3Ny0xODQzMikKKyAgQmxvY2sgYml0bWFwIGF0IDE4MTc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxODE3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4MTc5LTE4MTgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTgxODMtMTg0MzIKKyAgRnJlZSBpbm9kZXM6IDIyNzMtMjMwNAorR3JvdXAgNzI6IChCbG9ja3MgMTg0MzMtMTg2ODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxODQzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTg0MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxODQzNS0xODQzOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4NDM5LTE4Njg4CisgIEZyZWUgaW5vZGVzOiAyMzA1LTIzMzYKK0dyb3VwIDczOiAoQmxvY2tzIDE4Njg5LTE4OTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTg2ODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE4NjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTg2OTEtMTg2OTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxODY5NS0xODk0NAorICBGcmVlIGlub2RlczogMjMzNy0yMzY4CitHcm91cCA3NDogKEJsb2NrcyAxODk0NS0xOTIwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDE4OTQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxODk0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4OTQ3LTE4OTUwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTg5NTEtMTkyMDAKKyAgRnJlZSBpbm9kZXM6IDIzNjktMjQwMAorR3JvdXAgNzU6IChCbG9ja3MgMTkyMDEtMTk0NTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxOTIwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTkyMDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxOTIwMy0xOTIwNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5MjA3LTE5NDU2CisgIEZyZWUgaW5vZGVzOiAyNDAxLTI0MzIKK0dyb3VwIDc2OiAoQmxvY2tzIDE5NDU3LTE5NzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTk0NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5NDU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTk0NTktMTk0NjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTQ2My0xOTcxMgorICBGcmVlIGlub2RlczogMjQzMy0yNDY0CitHcm91cCA3NzogKEJsb2NrcyAxOTcxMy0xOTk2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDE5NzEzICgrMCksIElub2RlIGJpdG1hcCBhdCAxOTcxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE5NzE1LTE5NzE4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk3MTktMTk5NjgKKyAgRnJlZSBpbm9kZXM6IDI0NjUtMjQ5NgorR3JvdXAgNzg6IChCbG9ja3MgMTk5NjktMjAyMjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxOTk2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTk5NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxOTk3MS0xOTk3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE5OTc1LTIwMjI0CisgIEZyZWUgaW5vZGVzOiAyNDk3LTI1MjgKK0dyb3VwIDc5OiAoQmxvY2tzIDIwMjI1LTIwNDgwKQorICBCbG9jayBiaXRtYXAgYXQgMjAyMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwMjI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjAyMjctMjAyMzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDIzMS0yMDQ4MAorICBGcmVlIGlub2RlczogMjUyOS0yNTYwCitHcm91cCA4MDogKEJsb2NrcyAyMDQ4MS0yMDczNikKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDgxICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDQ4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIwNDgzLTIwNDg2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA0ODctMjA3MzYKKyAgRnJlZSBpbm9kZXM6IDI1NjEtMjU5MgorR3JvdXAgODE6IChCbG9ja3MgMjA3MzctMjA5OTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDIwNzM3LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyMDczOC0yMDc0MgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDIwNzQzLTIwODY1CisgIEJsb2NrIGJpdG1hcCBhdCAyMDg2NiAoKzEyOSksIElub2RlIGJpdG1hcCBhdCAyMDg2NyAoKzEzMCkKKyAgSW5vZGUgdGFibGUgYXQgMjA4NjgtMjA4NzEgKCsxMzEpCisgIDEyMSBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwODcyLTIwOTkyCisgIEZyZWUgaW5vZGVzOiAyNTkzLTI2MjQKK0dyb3VwIDgyOiAoQmxvY2tzIDIwOTkzLTIxMjQ4KQorICBCbG9jayBiaXRtYXAgYXQgMjA5OTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwOTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA5OTUtMjA5OTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDk5OS0yMTI0OAorICBGcmVlIGlub2RlczogMjYyNS0yNjU2CitHcm91cCA4MzogKEJsb2NrcyAyMTI0OS0yMTUwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDIxMjQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMTI1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIxMjUxLTIxMjU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjEyNTUtMjE1MDQKKyAgRnJlZSBpbm9kZXM6IDI2NTctMjY4OAorR3JvdXAgODQ6IChCbG9ja3MgMjE1MDUtMjE3NjApCisgIEJsb2NrIGJpdG1hcCBhdCAyMTUwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjE1MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMTUwNy0yMTUxMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIxNTExLTIxNzYwCisgIEZyZWUgaW5vZGVzOiAyNjg5LTI3MjAKK0dyb3VwIDg1OiAoQmxvY2tzIDIxNzYxLTIyMDE2KQorICBCbG9jayBiaXRtYXAgYXQgMjE3NjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIxNzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjE3NjMtMjE3NjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMTc2Ny0yMjAxNgorICBGcmVlIGlub2RlczogMjcyMS0yNzUyCitHcm91cCA4NjogKEJsb2NrcyAyMjAxNy0yMjI3MikKKyAgQmxvY2sgYml0bWFwIGF0IDIyMDE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMjAxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIyMDE5LTIyMDIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjIwMjMtMjIyNzIKKyAgRnJlZSBpbm9kZXM6IDI3NTMtMjc4NAorR3JvdXAgODc6IChCbG9ja3MgMjIyNzMtMjI1MjgpCisgIEJsb2NrIGJpdG1hcCBhdCAyMjI3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjIyNzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMjI3NS0yMjI3OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIyMjc5LTIyNTI4CisgIEZyZWUgaW5vZGVzOiAyNzg1LTI4MTYKK0dyb3VwIDg4OiAoQmxvY2tzIDIyNTI5LTIyNzg0KQorICBCbG9jayBiaXRtYXAgYXQgMjI1MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIyNTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjI1MzEtMjI1MzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMjUzNS0yMjc4NAorICBGcmVlIGlub2RlczogMjgxNy0yODQ4CitHcm91cCA4OTogKEJsb2NrcyAyMjc4NS0yMzA0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDIyNzg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMjc4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIyNzg3LTIyNzkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjI3OTEtMjMwNDAKKyAgRnJlZSBpbm9kZXM6IDI4NDktMjg4MAorR3JvdXAgOTA6IChCbG9ja3MgMjMwNDEtMjMyOTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyMzA0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjMwNDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMzA0My0yMzA0NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIzMDQ3LTIzMjk2CisgIEZyZWUgaW5vZGVzOiAyODgxLTI5MTIKK0dyb3VwIDkxOiAoQmxvY2tzIDIzMjk3LTIzNTUyKQorICBCbG9jayBiaXRtYXAgYXQgMjMyOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIzMjk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjMyOTktMjMzMDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzMwMy0yMzU1MgorICBGcmVlIGlub2RlczogMjkxMy0yOTQ0CitHcm91cCA5MjogKEJsb2NrcyAyMzU1My0yMzgwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDIzNTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAyMzU1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIzNTU1LTIzNTU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjM1NTktMjM4MDgKKyAgRnJlZSBpbm9kZXM6IDI5NDUtMjk3NgorR3JvdXAgOTM6IChCbG9ja3MgMjM4MDktMjQwNjQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMzgwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjM4MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMzgxMS0yMzgxNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIzODE1LTI0MDY0CisgIEZyZWUgaW5vZGVzOiAyOTc3LTMwMDgKK0dyb3VwIDk0OiAoQmxvY2tzIDI0MDY1LTI0MzIwKQorICBCbG9jayBiaXRtYXAgYXQgMjQwNjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI0MDY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjQwNjctMjQwNzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDA3MS0yNDMyMAorICBGcmVlIGlub2RlczogMzAwOS0zMDQwCitHcm91cCA5NTogKEJsb2NrcyAyNDMyMS0yNDU3NikKKyAgQmxvY2sgYml0bWFwIGF0IDI0MzIxICgrMCksIElub2RlIGJpdG1hcCBhdCAyNDMyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI0MzIzLTI0MzI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQzMjctMjQ1NzYKKyAgRnJlZSBpbm9kZXM6IDMwNDEtMzA3MgorR3JvdXAgOTY6IChCbG9ja3MgMjQ1NzctMjQ4MzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyNDU3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjQ1NzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNDU3OS0yNDU4MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0NTgzLTI0ODMyCisgIEZyZWUgaW5vZGVzOiAzMDczLTMxMDQKK0dyb3VwIDk3OiAoQmxvY2tzIDI0ODMzLTI1MDg4KQorICBCbG9jayBiaXRtYXAgYXQgMjQ4MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI0ODM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjQ4MzUtMjQ4MzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNDgzOS0yNTA4OAorICBGcmVlIGlub2RlczogMzEwNS0zMTM2CitHcm91cCA5ODogKEJsb2NrcyAyNTA4OS0yNTM0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDI1MDg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNTA5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI1MDkxLTI1MDk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjUwOTUtMjUzNDQKKyAgRnJlZSBpbm9kZXM6IDMxMzctMzE2OAorR3JvdXAgOTk6IChCbG9ja3MgMjUzNDUtMjU2MDApCisgIEJsb2NrIGJpdG1hcCBhdCAyNTM0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjUzNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNTM0Ny0yNTM1MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI1MzUxLTI1NjAwCisgIEZyZWUgaW5vZGVzOiAzMTY5LTMyMDAKK0dyb3VwIDEwMDogKEJsb2NrcyAyNTYwMS0yNTg1NikKKyAgQmxvY2sgYml0bWFwIGF0IDI1NjAxICgrMCksIElub2RlIGJpdG1hcCBhdCAyNTYwMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI1NjAzLTI1NjA2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU2MDctMjU4NTYKKyAgRnJlZSBpbm9kZXM6IDMyMDEtMzIzMgorR3JvdXAgMTAxOiAoQmxvY2tzIDI1ODU3LTI2MTEyKQorICBCbG9jayBiaXRtYXAgYXQgMjU4NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI1ODU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjU4NTktMjU4NjIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNTg2My0yNjExMgorICBGcmVlIGlub2RlczogMzIzMy0zMjY0CitHcm91cCAxMDI6IChCbG9ja3MgMjYxMTMtMjYzNjgpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjExMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjYxMTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjExNS0yNjExOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI2MTE5LTI2MzY4CisgIEZyZWUgaW5vZGVzOiAzMjY1LTMyOTYKK0dyb3VwIDEwMzogKEJsb2NrcyAyNjM2OS0yNjYyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDI2MzY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNjM3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI2MzcxLTI2Mzc0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjYzNzUtMjY2MjQKKyAgRnJlZSBpbm9kZXM6IDMyOTctMzMyOAorR3JvdXAgMTA0OiAoQmxvY2tzIDI2NjI1LTI2ODgwKQorICBCbG9jayBiaXRtYXAgYXQgMjY2MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI2NjI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjY2MjctMjY2MzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjYzMS0yNjg4MAorICBGcmVlIGlub2RlczogMzMyOS0zMzYwCitHcm91cCAxMDU6IChCbG9ja3MgMjY4ODEtMjcxMzYpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjg4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjY4ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjg4My0yNjg4NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI2ODg3LTI3MTM2CisgIEZyZWUgaW5vZGVzOiAzMzYxLTMzOTIKK0dyb3VwIDEwNjogKEJsb2NrcyAyNzEzNy0yNzM5MikKKyAgQmxvY2sgYml0bWFwIGF0IDI3MTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNzEzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI3MTM5LTI3MTQyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjcxNDMtMjczOTIKKyAgRnJlZSBpbm9kZXM6IDMzOTMtMzQyNAorR3JvdXAgMTA3OiAoQmxvY2tzIDI3MzkzLTI3NjQ4KQorICBCbG9jayBiaXRtYXAgYXQgMjczOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI3Mzk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjczOTUtMjczOTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNzM5OS0yNzY0OAorICBGcmVlIGlub2RlczogMzQyNS0zNDU2CitHcm91cCAxMDg6IChCbG9ja3MgMjc2NDktMjc5MDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyNzY0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjc2NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNzY1MS0yNzY1NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3NjU1LTI3OTA0CisgIEZyZWUgaW5vZGVzOiAzNDU3LTM0ODgKK0dyb3VwIDEwOTogKEJsb2NrcyAyNzkwNS0yODE2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDI3OTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNzkwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI3OTA3LTI3OTEwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjc5MTEtMjgxNjAKKyAgRnJlZSBpbm9kZXM6IDM0ODktMzUyMAorR3JvdXAgMTEwOiAoQmxvY2tzIDI4MTYxLTI4NDE2KQorICBCbG9jayBiaXRtYXAgYXQgMjgxNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4MTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjgxNjMtMjgxNjYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODE2Ny0yODQxNgorICBGcmVlIGlub2RlczogMzUyMS0zNTUyCitHcm91cCAxMTE6IChCbG9ja3MgMjg0MTctMjg2NzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyODQxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjg0MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyODQxOS0yODQyMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI4NDIzLTI4NjcyCisgIEZyZWUgaW5vZGVzOiAzNTUzLTM1ODQKK0dyb3VwIDExMjogKEJsb2NrcyAyODY3My0yODkyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDI4NjczICgrMCksIElub2RlIGJpdG1hcCBhdCAyODY3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI4Njc1LTI4Njc4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjg2NzktMjg5MjgKKyAgRnJlZSBpbm9kZXM6IDM1ODUtMzYxNgorR3JvdXAgMTEzOiAoQmxvY2tzIDI4OTI5LTI5MTg0KQorICBCbG9jayBiaXRtYXAgYXQgMjg5MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4OTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjg5MzEtMjg5MzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODkzNS0yOTE4NAorICBGcmVlIGlub2RlczogMzYxNy0zNjQ4CitHcm91cCAxMTQ6IChCbG9ja3MgMjkxODUtMjk0NDApCisgIEJsb2NrIGJpdG1hcCBhdCAyOTE4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjkxODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyOTE4Ny0yOTE5MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5MTkxLTI5NDQwCisgIEZyZWUgaW5vZGVzOiAzNjQ5LTM2ODAKK0dyb3VwIDExNTogKEJsb2NrcyAyOTQ0MS0yOTY5NikKKyAgQmxvY2sgYml0bWFwIGF0IDI5NDQxICgrMCksIElub2RlIGJpdG1hcCBhdCAyOTQ0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI5NDQzLTI5NDQ2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjk0NDctMjk2OTYKKyAgRnJlZSBpbm9kZXM6IDM2ODEtMzcxMgorR3JvdXAgMTE2OiAoQmxvY2tzIDI5Njk3LTI5OTUyKQorICBCbG9jayBiaXRtYXAgYXQgMjk2OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI5Njk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjk2OTktMjk3MDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyOTcwMy0yOTk1MgorICBGcmVlIGlub2RlczogMzcxMy0zNzQ0CitHcm91cCAxMTc6IChCbG9ja3MgMjk5NTMtMzAyMDgpCisgIEJsb2NrIGJpdG1hcCBhdCAyOTk1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjk5NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyOTk1NS0yOTk1OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5OTU5LTMwMjA4CisgIEZyZWUgaW5vZGVzOiAzNzQ1LTM3NzYKK0dyb3VwIDExODogKEJsb2NrcyAzMDIwOS0zMDQ2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDMwMjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDIxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMwMjExLTMwMjE0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzAyMTUtMzA0NjQKKyAgRnJlZSBpbm9kZXM6IDM3NzctMzgwOAorR3JvdXAgMTE5OiAoQmxvY2tzIDMwNDY1LTMwNzIwKQorICBCbG9jayBiaXRtYXAgYXQgMzA0NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMwNDY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzA0NjctMzA0NzAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMDQ3MS0zMDcyMAorICBGcmVlIGlub2RlczogMzgwOS0zODQwCitHcm91cCAxMjA6IChCbG9ja3MgMzA3MjEtMzA5NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAzMDcyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzA3MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMDcyMy0zMDcyNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMwNzI3LTMwOTc2CisgIEZyZWUgaW5vZGVzOiAzODQxLTM4NzIKK0dyb3VwIDEyMTogKEJsb2NrcyAzMDk3Ny0zMTIzMikKKyAgQmxvY2sgYml0bWFwIGF0IDMwOTc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDk3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMwOTc5LTMwOTgyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA5ODMtMzEyMzIKKyAgRnJlZSBpbm9kZXM6IDM4NzMtMzkwNAorR3JvdXAgMTIyOiAoQmxvY2tzIDMxMjMzLTMxNDg4KQorICBCbG9jayBiaXRtYXAgYXQgMzEyMzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMxMjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzEyMzUtMzEyMzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTIzOS0zMTQ4OAorICBGcmVlIGlub2RlczogMzkwNS0zOTM2CitHcm91cCAxMjM6IChCbG9ja3MgMzE0ODktMzE3NDQpCisgIEJsb2NrIGJpdG1hcCBhdCAzMTQ4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzE0OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMTQ5MS0zMTQ5NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMxNDk1LTMxNzQ0CisgIEZyZWUgaW5vZGVzOiAzOTM3LTM5NjgKK0dyb3VwIDEyNDogKEJsb2NrcyAzMTc0NS0zMjAwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDMxNzQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMTc0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMxNzQ3LTMxNzUwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzE3NTEtMzIwMDAKKyAgRnJlZSBpbm9kZXM6IDM5NjktNDAwMAorR3JvdXAgMTI1OiAoQmxvY2tzIDMyMDAxLTMyMjU2KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAzMjAwMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzIwMDItMzIwMDYKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAzMjAwNy0zMjEyOQorICBCbG9jayBiaXRtYXAgYXQgMzIxMzAgKCsxMjkpLCBJbm9kZSBiaXRtYXAgYXQgMzIxMzEgKCsxMzApCisgIElub2RlIHRhYmxlIGF0IDMyMTMyLTMyMTM1ICgrMTMxKQorICAxMjEgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMjEzNi0zMjI1NgorICBGcmVlIGlub2RlczogNDAwMS00MDMyCitHcm91cCAxMjY6IChCbG9ja3MgMzIyNTctMzI1MTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzMjI1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzIyNTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMjI1OS0zMjI2MiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMyMjYzLTMyNTEyCisgIEZyZWUgaW5vZGVzOiA0MDMzLTQwNjQKK0dyb3VwIDEyNzogKEJsb2NrcyAzMjUxMy0zMjc2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDMyNTEzICgrMCksIElub2RlIGJpdG1hcCBhdCAzMjUxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMyNTE1LTMyNTE4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzI1MTktMzI3NjgKKyAgRnJlZSBpbm9kZXM6IDQwNjUtNDA5NgorR3JvdXAgMTI4OiAoQmxvY2tzIDMyNzY5LTMzMDI0KQorICBCbG9jayBiaXRtYXAgYXQgMzI3NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMyNzcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzI3NzEtMzI3NzQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMjc3NS0zMzAyNAorICBGcmVlIGlub2RlczogNDA5Ny00MTI4CitHcm91cCAxMjk6IChCbG9ja3MgMzMwMjUtMzMyODApCisgIEJsb2NrIGJpdG1hcCBhdCAzMzAyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzMwMjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMzAyNy0zMzAzMCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzMDMxLTMzMjgwCisgIEZyZWUgaW5vZGVzOiA0MTI5LTQxNjAKK0dyb3VwIDEzMDogKEJsb2NrcyAzMzI4MS0zMzUzNikKKyAgQmxvY2sgYml0bWFwIGF0IDMzMjgxICgrMCksIElub2RlIGJpdG1hcCBhdCAzMzI4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMzMjgzLTMzMjg2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzMyODctMzM1MzYKKyAgRnJlZSBpbm9kZXM6IDQxNjEtNDE5MgorR3JvdXAgMTMxOiAoQmxvY2tzIDMzNTM3LTMzNzkyKQorICBCbG9jayBiaXRtYXAgYXQgMzM1MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMzNTM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzM1MzktMzM1NDIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMzU0My0zMzc5MgorICBGcmVlIGlub2RlczogNDE5My00MjI0CitHcm91cCAxMzI6IChCbG9ja3MgMzM3OTMtMzQwNDgpCisgIEJsb2NrIGJpdG1hcCBhdCAzMzc5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzM3OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMzc5NS0zMzc5OCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzNzk5LTM0MDQ4CisgIEZyZWUgaW5vZGVzOiA0MjI1LTQyNTYKK0dyb3VwIDEzMzogKEJsb2NrcyAzNDA0OS0zNDMwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDM0MDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNDA1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM0MDUxLTM0MDU0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzQwNTUtMzQzMDQKKyAgRnJlZSBpbm9kZXM6IDQyNTctNDI4OAorR3JvdXAgMTM0OiAoQmxvY2tzIDM0MzA1LTM0NTYwKQorICBCbG9jayBiaXRtYXAgYXQgMzQzMDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM0MzA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzQzMDctMzQzMTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNDMxMS0zNDU2MAorICBGcmVlIGlub2RlczogNDI4OS00MzIwCitHcm91cCAxMzU6IChCbG9ja3MgMzQ1NjEtMzQ4MTYpCisgIEJsb2NrIGJpdG1hcCBhdCAzNDU2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzQ1NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNDU2My0zNDU2NiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM0NTY3LTM0ODE2CisgIEZyZWUgaW5vZGVzOiA0MzIxLTQzNTIKK0dyb3VwIDEzNjogKEJsb2NrcyAzNDgxNy0zNTA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDM0ODE3ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNDgxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM0ODE5LTM0ODIyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzQ4MjMtMzUwNzIKKyAgRnJlZSBpbm9kZXM6IDQzNTMtNDM4NAorR3JvdXAgMTM3OiAoQmxvY2tzIDM1MDczLTM1MzI4KQorICBCbG9jayBiaXRtYXAgYXQgMzUwNzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM1MDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzUwNzUtMzUwNzggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNTA3OS0zNTMyOAorICBGcmVlIGlub2RlczogNDM4NS00NDE2CitHcm91cCAxMzg6IChCbG9ja3MgMzUzMjktMzU1ODQpCisgIEJsb2NrIGJpdG1hcCBhdCAzNTMyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzUzMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNTMzMS0zNTMzNCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM1MzM1LTM1NTg0CisgIEZyZWUgaW5vZGVzOiA0NDE3LTQ0NDgKK0dyb3VwIDEzOTogKEJsb2NrcyAzNTU4NS0zNTg0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDM1NTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNTU4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM1NTg3LTM1NTkwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzU1OTEtMzU4NDAKKyAgRnJlZSBpbm9kZXM6IDQ0NDktNDQ4MAorR3JvdXAgMTQwOiAoQmxvY2tzIDM1ODQxLTM2MDk2KQorICBCbG9jayBiaXRtYXAgYXQgMzU4NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM1ODQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzU4NDMtMzU4NDYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNTg0Ny0zNjA5NgorICBGcmVlIGlub2RlczogNDQ4MS00NTEyCitHcm91cCAxNDE6IChCbG9ja3MgMzYwOTctMzYzNTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzNjA5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzYwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNjA5OS0zNjEwMiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM2MTAzLTM2MzUyCisgIEZyZWUgaW5vZGVzOiA0NTEzLTQ1NDQKK0dyb3VwIDE0MjogKEJsb2NrcyAzNjM1My0zNjYwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDM2MzUzICgrMCksIElub2RlIGJpdG1hcCBhdCAzNjM1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM2MzU1LTM2MzU4ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzYzNTktMzY2MDgKKyAgRnJlZSBpbm9kZXM6IDQ1NDUtNDU3NgorR3JvdXAgMTQzOiAoQmxvY2tzIDM2NjA5LTM2ODY0KQorICBCbG9jayBiaXRtYXAgYXQgMzY2MDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM2NjEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzY2MTEtMzY2MTQgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNjYxNS0zNjg2NAorICBGcmVlIGlub2RlczogNDU3Ny00NjA4CitHcm91cCAxNDQ6IChCbG9ja3MgMzY4NjUtMzcxMjApCisgIEJsb2NrIGJpdG1hcCBhdCAzNjg2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzY4NjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNjg2Ny0zNjg3MCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM2ODcxLTM3MTIwCisgIEZyZWUgaW5vZGVzOiA0NjA5LTQ2NDAKK0dyb3VwIDE0NTogKEJsb2NrcyAzNzEyMS0zNzM3NikKKyAgQmxvY2sgYml0bWFwIGF0IDM3MTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAzNzEyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM3MTIzLTM3MTI2ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzcxMjctMzczNzYKKyAgRnJlZSBpbm9kZXM6IDQ2NDEtNDY3MgorR3JvdXAgMTQ2OiAoQmxvY2tzIDM3Mzc3LTM3NjMyKQorICBCbG9jayBiaXRtYXAgYXQgMzczNzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM3Mzc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzczNzktMzczODIgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNzM4My0zNzYzMgorICBGcmVlIGlub2RlczogNDY3My00NzA0CitHcm91cCAxNDc6IChCbG9ja3MgMzc2MzMtMzc4ODgpCisgIEJsb2NrIGJpdG1hcCBhdCAzNzYzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzc2MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNzYzNS0zNzYzOCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM3NjM5LTM3ODg4CisgIEZyZWUgaW5vZGVzOiA0NzA1LTQ3MzYKK0dyb3VwIDE0ODogKEJsb2NrcyAzNzg4OS0zODE0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDM3ODg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNzg5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM3ODkxLTM3ODk0ICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzc4OTUtMzgxNDQKKyAgRnJlZSBpbm9kZXM6IDQ3MzctNDc2OAorR3JvdXAgMTQ5OiAoQmxvY2tzIDM4MTQ1LTM4NDAwKQorICBCbG9jayBiaXRtYXAgYXQgMzgxNDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM4MTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzgxNDctMzgxNTAgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzODE1MS0zODQwMAorICBGcmVlIGlub2RlczogNDc2OS00ODAwCitHcm91cCAxNTA6IChCbG9ja3MgMzg0MDEtMzg2NTYpCisgIEJsb2NrIGJpdG1hcCBhdCAzODQwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzg0MDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzODQwMy0zODQwNiAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM4NDA3LTM4NjU2CisgIEZyZWUgaW5vZGVzOiA0ODAxLTQ4MzIKK0dyb3VwIDE1MTogKEJsb2NrcyAzODY1Ny0zODkxMikKKyAgQmxvY2sgYml0bWFwIGF0IDM4NjU3ICgrMCksIElub2RlIGJpdG1hcCBhdCAzODY1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM4NjU5LTM4NjYyICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzg2NjMtMzg5MTIKKyAgRnJlZSBpbm9kZXM6IDQ4MzMtNDg2NAorR3JvdXAgMTUyOiAoQmxvY2tzIDM4OTEzLTM5MTY4KQorICBCbG9jayBiaXRtYXAgYXQgMzg5MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM4OTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzg5MTUtMzg5MTggKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzODkxOS0zOTE2OAorICBGcmVlIGlub2RlczogNDg2NS00ODk2CitHcm91cCAxNTM6IChCbG9ja3MgMzkxNjktMzk0MjQpCisgIEJsb2NrIGJpdG1hcCBhdCAzOTE2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzkxNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzOTE3MS0zOTE3NCAoKzIpCisgIDI1MCBmcmVlIGJsb2NrcywgMzIgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM5MTc1LTM5NDI0CisgIEZyZWUgaW5vZGVzOiA0ODk3LTQ5MjgKK0dyb3VwIDE1NDogKEJsb2NrcyAzOTQyNS0zOTY4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDM5NDI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzOTQyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM5NDI3LTM5NDMwICgrMikKKyAgMjUwIGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzk0MzEtMzk2ODAKKyAgRnJlZSBpbm9kZXM6IDQ5MjktNDk2MAorR3JvdXAgMTU1OiAoQmxvY2tzIDM5NjgxLTM5OTM2KQorICBCbG9jayBiaXRtYXAgYXQgMzk2ODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM5NjgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzk2ODMtMzk2ODYgKCsyKQorICAyNTAgZnJlZSBibG9ja3MsIDMyIGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzOTY4Ny0zOTkzNgorICBGcmVlIGlub2RlczogNDk2MS00OTkyCitHcm91cCAxNTY6IChCbG9ja3MgMzk5MzctMzk5OTkpCisgIEJsb2NrIGJpdG1hcCBhdCAzOTkzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzk5MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzOTkzOS0zOTk0MiAoKzIpCisgIDU3IGZyZWUgYmxvY2tzLCAzMiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzk5NDMtMzk5OTkKKyAgRnJlZSBpbm9kZXM6IDQ5OTMtNTAyNApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfbW92ZV9pdGFibGUvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy9yX21vdmVfaXRhYmxlL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThjMmQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX21vdmVfaXRhYmxlL25hbWUKQEAgLTAsMCArMSBAQAorZmlsZXN5c3RlbSByZXNpemUgd2hpY2ggcmVxdWlyZXMgbW92aW5nIHRoZSBpbm9kZSB0YWJsZQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfbW92ZV9pdGFibGUvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3JfbW92ZV9pdGFibGUvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMDJhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcl9tb3ZlX2l0YWJsZS9zY3JpcHQKQEAgLTAsMCArMSwxMTYgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS15ZgorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAtZyAyNTYgdGVzdC5pbWcgMTAyNCA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAtZyAyNTYgJFRNUEZJTEUgMTAyNCAyPiYxIHwKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiID4+ICRPVVQKKworZWNobyByZXNpemUyZnMgLXAgdGVzdC5pbWcgMTAwMDAgPj4gJE9VVAorJFJFU0laRTJGUyAtcCAkVE1QRklMRSAxMDAwMCAyPiYxIHwKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiID4+ICRPVVQKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIGxhc3RjaGVjayAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgaGFzaF9zZWVkIG51bGwiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBta2ZzX3RpbWUgMCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskVFVORTJGUyAtYyAyMCAtVSBjbGVhciAkVE1QRklMRSAgPi9kZXYvbnVsbCAyPiYxCisKK2VjaG8gZHVtcGUyZnMgdGVzdC5pbWcgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAnL0Jsb2NrIGJpdG1hcC4qJC9OO3MvXG4gIElub2RlIGJpdG1hcC8sIElub2RlIGJpdG1hcC9nJyA+PiAkT1VUCisKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA+PiAkT1VUCisKK2VjaG8gcmVzaXplMmZzIC1wIHRlc3QuaW1nIDIwMDAwID4+ICRPVVQKKyRSRVNJWkUyRlMgLXAgJFRNUEZJTEUgMjAwMDAgMj4mMSB8CisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiA+PiAkT1VUCisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVC5uZXcgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVC5uZXcKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgJE9VVC5uZXcgPj4gJE9VVAorcm0gLWYgJE9VVC5uZXcKKworJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBsYXN0Y2hlY2sgMCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIGhhc2hfc2VlZCBudWxsIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgbWtmc190aW1lIDAiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJFRVTkUyRlMgLWMgMjAgLVUgY2xlYXIgJFRNUEZJTEUgID4vZGV2L251bGwgMj4mMQorCitlY2hvIGR1bXBlMmZzIHRlc3QuaW1nID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgJy9CbG9jayBiaXRtYXAuKiQvTjtzL1xuICBJbm9kZSBiaXRtYXAvLCBJbm9kZSBiaXRtYXAvZycgPj4gJE9VVAorCitlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPj4gJE9VVAorCitlY2hvIHJlc2l6ZTJmcyAtcCB0ZXN0LmltZyAzMDAwMCA+PiAkT1VUCiskUkVTSVpFMkZTIC1wICRUTVBGSUxFIDMwMDAwIDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgbGFzdGNoZWNrIDAiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBoYXNoX3NlZWQgbnVsbCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIG1rZnNfdGltZSAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRUVU5FMkZTIC1jIDIwIC1VIGNsZWFyICRUTVBGSUxFICA+L2Rldi9udWxsIDI+JjEKKworZWNobyBkdW1wZTJmcyB0ZXN0LmltZyA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvQmxvY2sgYml0bWFwLiokL047cy9cbiAgSW5vZGUgYml0bWFwLywgSW5vZGUgYml0bWFwL2cnID4+ICRPVVQKKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iID4+ICRPVVQKKworZWNobyByZXNpemUyZnMgLXAgdGVzdC5pbWcgNDAwMDAgPj4gJE9VVAorJFJFU0laRTJGUyAtcCAkVE1QRklMRSA0MDAwMCAyPiYxIHwKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiID4+ICRPVVQKKworJEZTQ0sgJEZTQ0tfT1BUICAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIGxhc3RjaGVjayAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgaGFzaF9zZWVkIG51bGwiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBta2ZzX3RpbWUgMCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskVFVORTJGUyAtYyAyMCAtVSBjbGVhciAkVE1QRklMRSAgPi9kZXYvbnVsbCAyPiYxCisKK2VjaG8gZHVtcGUyZnMgdGVzdC5pbWcgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAnL0Jsb2NrIGJpdG1hcC4qJC9OO3MvXG4gIElub2RlIGJpdG1hcC8sIElub2RlIGJpdG1hcC9nJyA+PiAkT1VUCisKK3JtIC1mICRUTVBGSUxFCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpIApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfcmVzaXplX2lub2RlL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy9yX3Jlc2l6ZV9pbm9kZS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmExNjQ3ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX3Jlc2l6ZV9pbm9kZS9leHBlY3QKQEAgLTAsMCArMSwxNjM5IEBACitta2UyZnMgLXEgLUYgLU8gcmVzaXplX2lub2RlIC1vIExpbnV4IC1iIDEwMjQgLWcgMTAyNCB0ZXN0LmltZyAxNjM4NAorcmVzaXplMmZzIHRlc3QuaW1nIDY1NTM2CitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byA2NTUzNiAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyA2NTUzNiAoMWspIGJsb2NrcyBsb25nLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS8xNjM4NCBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDQ1MTMvNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkdW1wZTJmcyB0ZXN0LmltZworRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgMTYzODQKK0Jsb2NrIGNvdW50OiAgICAgICAgICAgICAgNjU1MzYKK1Jlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMzI3NgorRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA2MTAyMworRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICAxNjM3MworRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCitCbG9jayBzaXplOiAgICAgICAgICAgICAgIDEwMjQKK0ZyYWdtZW50IHNpemU6ICAgICAgICAgICAgMTAyNAorUmVzZXJ2ZWQgR0RUIGJsb2NrczogICAgICAyNTUKK0Jsb2NrcyBwZXIgZ3JvdXA6ICAgICAgICAgMTAyNAorRnJhZ21lbnRzIHBlciBncm91cDogICAgICAxMDI0CitJbm9kZXMgcGVyIGdyb3VwOiAgICAgICAgIDI1NgorSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAzMgorTW91bnQgY291bnQ6ICAgICAgICAgICAgICAwCitDaGVjayBpbnRlcnZhbDogICAgICAgICAgIDE1NTUyMDAwICg2IG1vbnRocykKK1Jlc2VydmVkIGJsb2NrcyB1aWQ6ICAgICAgMAorUmVzZXJ2ZWQgYmxvY2tzIGdpZDogICAgICAwCitGaXJzdCBpbm9kZTogICAgICAgICAgICAgIDExCitJbm9kZSBzaXplOgkgICAgICAgICAgMTI4CitEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisKKworR3JvdXAgMDogKEJsb2NrcyAxLTEwMjQpCisgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTMKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA0LTI1OAorICBCbG9jayBiaXRtYXAgYXQgMjU5ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDI2MCAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgMjYxLTI5MiAoKzI2MCkKKyAgNzE4IGZyZWUgYmxvY2tzLCAyNDUgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMwNy0xMDI0CisgIEZyZWUgaW5vZGVzOiAxMi0yNTYKK0dyb3VwIDE6IChCbG9ja3MgMTAyNS0yMDQ4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAxMDI1LCBHcm91cCBkZXNjcmlwdG9ycyBhdCAxMDI2LTEwMjcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAxMDI4LTEyODIKKyAgQmxvY2sgYml0bWFwIGF0IDEyODMgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgMTI4NCAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgMTI4NS0xMzE2ICgrMjYwKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMxNy0yMDQ4CisgIEZyZWUgaW5vZGVzOiAyNTctNTEyCitHcm91cCAyOiAoQmxvY2tzIDIwNDktMzA3MikKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIwNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDUxLTIwODIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjA4My0zMDcyCisgIEZyZWUgaW5vZGVzOiA1MTMtNzY4CitHcm91cCAzOiAoQmxvY2tzIDMwNzMtNDA5NikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMzA3MywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMzA3NC0zMDc1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMzA3Ni0zMzMwCisgIEJsb2NrIGJpdG1hcCBhdCAzMzMxICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDMzMzIgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDMzMzMtMzM2NCAoKzI2MCkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzNjUtNDA5NgorICBGcmVlIGlub2RlczogNzY5LTEwMjQKK0dyb3VwIDQ6IChCbG9ja3MgNDA5Ny01MTIwKQorICBCbG9jayBiaXRtYXAgYXQgNDA5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDA5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQwOTktNDEzMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MTMxLTUxMjAKKyAgRnJlZSBpbm9kZXM6IDEwMjUtMTI4MAorR3JvdXAgNTogKEJsb2NrcyA1MTIxLTYxNDQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDUxMjEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDUxMjItNTEyMworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDUxMjQtNTM3OAorICBCbG9jayBiaXRtYXAgYXQgNTM3OSAoKzI1OCksIElub2RlIGJpdG1hcCBhdCA1MzgwICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA1MzgxLTU0MTIgKCsyNjApCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NDEzLTYxNDQKKyAgRnJlZSBpbm9kZXM6IDEyODEtMTUzNgorR3JvdXAgNjogKEJsb2NrcyA2MTQ1LTcxNjgpCisgIEJsb2NrIGJpdG1hcCBhdCA2MTQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0Ny02MTc4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYxNzktNzE2OAorICBGcmVlIGlub2RlczogMTUzNy0xNzkyCitHcm91cCA3OiAoQmxvY2tzIDcxNjktODE5MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNzE2OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNzE3MC03MTcxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNzE3Mi03NDI2CisgIEJsb2NrIGJpdG1hcCBhdCA3NDI3ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDc0MjggKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDc0MjktNzQ2MCAoKzI2MCkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0NjEtODE5MgorICBGcmVlIGlub2RlczogMTc5My0yMDQ4CitHcm91cCA4OiAoQmxvY2tzIDgxOTMtOTIxNikKKyAgQmxvY2sgYml0bWFwIGF0IDgxOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDgxOTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTk1LTgyMjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODIyNy05MjE2CisgIEZyZWUgaW5vZGVzOiAyMDQ5LTIzMDQKK0dyb3VwIDk6IChCbG9ja3MgOTIxNy0xMDI0MCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgOTIxNywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgOTIxOC05MjE5CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgOTIyMC05NDc0CisgIEJsb2NrIGJpdG1hcCBhdCA5NDc1ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDk0NzYgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDk0NzctOTUwOCAoKzI2MCkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk1MDktMTAyNDAKKyAgRnJlZSBpbm9kZXM6IDIzMDUtMjU2MAorR3JvdXAgMTA6IChCbG9ja3MgMTAyNDEtMTEyNjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDI0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTAyNDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDI0My0xMDI3NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDI3NS0xMTI2NAorICBGcmVlIGlub2RlczogMjU2MS0yODE2CitHcm91cCAxMTogKEJsb2NrcyAxMTI2NS0xMjI4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMjY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTI2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMjY3LTExMjk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMjk5LTEyMjg4CisgIEZyZWUgaW5vZGVzOiAyODE3LTMwNzIKK0dyb3VwIDEyOiAoQmxvY2tzIDEyMjg5LTEzMzEyKQorICBCbG9jayBiaXRtYXAgYXQgMTIyODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIyOTEtMTIzMjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIzMjMtMTMzMTIKKyAgRnJlZSBpbm9kZXM6IDMwNzMtMzMyOAorR3JvdXAgMTM6IChCbG9ja3MgMTMzMTMtMTQzMzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzMxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTMzMTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzMxNS0xMzM0NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzM0Ny0xNDMzNgorICBGcmVlIGlub2RlczogMzMyOS0zNTg0CitHcm91cCAxNDogKEJsb2NrcyAxNDMzNy0xNTM2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDE0MzM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDMzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0MzM5LTE0MzcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0MzcxLTE1MzYwCisgIEZyZWUgaW5vZGVzOiAzNTg1LTM4NDAKK0dyb3VwIDE1OiAoQmxvY2tzIDE1MzYxLTE2Mzg0KQorICBCbG9jayBiaXRtYXAgYXQgMTUzNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUzNjMtMTUzOTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUzOTUtMTYzODQKKyAgRnJlZSBpbm9kZXM6IDM4NDEtNDA5NgorR3JvdXAgMTY6IChCbG9ja3MgMTYzODUtMTc0MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNjM4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTYzODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjM4Ny0xNjQxOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjQxOS0xNzQwOAorICBGcmVlIGlub2RlczogNDA5Ny00MzUyCitHcm91cCAxNzogKEJsb2NrcyAxNzQwOS0xODQzMikKKyAgQmxvY2sgYml0bWFwIGF0IDE3NDA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNzQxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE3NDExLTE3NDQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE3NDQzLTE4NDMyCisgIEZyZWUgaW5vZGVzOiA0MzUzLTQ2MDgKK0dyb3VwIDE4OiAoQmxvY2tzIDE4NDMzLTE5NDU2KQorICBCbG9jayBiaXRtYXAgYXQgMTg0MzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE4NDM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTg0MzUtMTg0NjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTg0NjctMTk0NTYKKyAgRnJlZSBpbm9kZXM6IDQ2MDktNDg2NAorR3JvdXAgMTk6IChCbG9ja3MgMTk0NTctMjA0ODApCisgIEJsb2NrIGJpdG1hcCBhdCAxOTQ1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTk0NTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxOTQ1OS0xOTQ5MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxOTQ5MS0yMDQ4MAorICBGcmVlIGlub2RlczogNDg2NS01MTIwCitHcm91cCAyMDogKEJsb2NrcyAyMDQ4MS0yMTUwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDIwNDgxICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDQ4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIwNDgzLTIwNTE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwNTE1LTIxNTA0CisgIEZyZWUgaW5vZGVzOiA1MTIxLTUzNzYKK0dyb3VwIDIxOiAoQmxvY2tzIDIxNTA1LTIyNTI4KQorICBCbG9jayBiaXRtYXAgYXQgMjE1MDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIxNTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjE1MDctMjE1MzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjE1MzktMjI1MjgKKyAgRnJlZSBpbm9kZXM6IDUzNzctNTYzMgorR3JvdXAgMjI6IChCbG9ja3MgMjI1MjktMjM1NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAyMjUyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjI1MzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMjUzMS0yMjU2MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMjU2My0yMzU1MgorICBGcmVlIGlub2RlczogNTYzMy01ODg4CitHcm91cCAyMzogKEJsb2NrcyAyMzU1My0yNDU3NikKKyAgQmxvY2sgYml0bWFwIGF0IDIzNTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAyMzU1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIzNTU1LTIzNTg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIzNTg3LTI0NTc2CisgIEZyZWUgaW5vZGVzOiA1ODg5LTYxNDQKK0dyb3VwIDI0OiAoQmxvY2tzIDI0NTc3LTI1NjAwKQorICBCbG9jayBiaXRtYXAgYXQgMjQ1NzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI0NTc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjQ1NzktMjQ2MTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjQ2MTEtMjU2MDAKKyAgRnJlZSBpbm9kZXM6IDYxNDUtNjQwMAorR3JvdXAgMjU6IChCbG9ja3MgMjU2MDEtMjY2MjQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDI1NjAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyNTYwMi0yNTYwMworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDI1NjA0LTI1ODU4CisgIEJsb2NrIGJpdG1hcCBhdCAyNTg1OSAoKzI1OCksIElub2RlIGJpdG1hcCBhdCAyNTg2MCAoKzI1OSkKKyAgSW5vZGUgdGFibGUgYXQgMjU4NjEtMjU4OTIgKCsyNjApCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNTg5My0yNjYyNAorICBGcmVlIGlub2RlczogNjQwMS02NjU2CitHcm91cCAyNjogKEJsb2NrcyAyNjYyNS0yNzY0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDI2NjI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNjYyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI2NjI3LTI2NjU4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI2NjU5LTI3NjQ4CisgIEZyZWUgaW5vZGVzOiA2NjU3LTY5MTIKK0dyb3VwIDI3OiAoQmxvY2tzIDI3NjQ5LTI4NjcyKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNzY0OSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjc2NTAtMjc2NTEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNzY1Mi0yNzkwNgorICBCbG9jayBiaXRtYXAgYXQgMjc5MDcgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgMjc5MDggKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDI3OTA5LTI3OTQwICgrMjYwKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjc5NDEtMjg2NzIKKyAgRnJlZSBpbm9kZXM6IDY5MTMtNzE2OAorR3JvdXAgMjg6IChCbG9ja3MgMjg2NzMtMjk2OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAyODY3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjg2NzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyODY3NS0yODcwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyODcwNy0yOTY5NgorICBGcmVlIGlub2RlczogNzE2OS03NDI0CitHcm91cCAyOTogKEJsb2NrcyAyOTY5Ny0zMDcyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDI5Njk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyOTY5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI5Njk5LTI5NzMwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI5NzMxLTMwNzIwCisgIEZyZWUgaW5vZGVzOiA3NDI1LTc2ODAKK0dyb3VwIDMwOiAoQmxvY2tzIDMwNzIxLTMxNzQ0KQorICBCbG9jayBiaXRtYXAgYXQgMzA3MjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMwNzIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzA3MjMtMzA3NTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzA3NTUtMzE3NDQKKyAgRnJlZSBpbm9kZXM6IDc2ODEtNzkzNgorR3JvdXAgMzE6IChCbG9ja3MgMzE3NDUtMzI3NjgpCisgIEJsb2NrIGJpdG1hcCBhdCAzMTc0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzE3NDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMTc0Ny0zMTc3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMTc3OS0zMjc2OAorICBGcmVlIGlub2RlczogNzkzNy04MTkyCitHcm91cCAzMjogKEJsb2NrcyAzMjc2OS0zMzc5MikKKyAgQmxvY2sgYml0bWFwIGF0IDMyNzY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAzMjc3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMyNzcxLTMyODAyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMyODAzLTMzNzkyCisgIEZyZWUgaW5vZGVzOiA4MTkzLTg0NDgKK0dyb3VwIDMzOiAoQmxvY2tzIDMzNzkzLTM0ODE2KQorICBCbG9jayBiaXRtYXAgYXQgMzM3OTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMzNzk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzM3OTUtMzM4MjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzM4MjctMzQ4MTYKKyAgRnJlZSBpbm9kZXM6IDg0NDktODcwNAorR3JvdXAgMzQ6IChCbG9ja3MgMzQ4MTctMzU4NDApCisgIEJsb2NrIGJpdG1hcCBhdCAzNDgxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzQ4MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNDgxOS0zNDg1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNDg1MS0zNTg0MAorICBGcmVlIGlub2RlczogODcwNS04OTYwCitHcm91cCAzNTogKEJsb2NrcyAzNTg0MS0zNjg2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDM1ODQxICgrMCksIElub2RlIGJpdG1hcCBhdCAzNTg0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM1ODQzLTM1ODc0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM1ODc1LTM2ODY0CisgIEZyZWUgaW5vZGVzOiA4OTYxLTkyMTYKK0dyb3VwIDM2OiAoQmxvY2tzIDM2ODY1LTM3ODg4KQorICBCbG9jayBiaXRtYXAgYXQgMzY4NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM2ODY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzY4NjctMzY4OTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzY4OTktMzc4ODgKKyAgRnJlZSBpbm9kZXM6IDkyMTctOTQ3MgorR3JvdXAgMzc6IChCbG9ja3MgMzc4ODktMzg5MTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzNzg4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzc4OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNzg5MS0zNzkyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNzkyMy0zODkxMgorICBGcmVlIGlub2RlczogOTQ3My05NzI4CitHcm91cCAzODogKEJsb2NrcyAzODkxMy0zOTkzNikKKyAgQmxvY2sgYml0bWFwIGF0IDM4OTEzICgrMCksIElub2RlIGJpdG1hcCBhdCAzODkxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM4OTE1LTM4OTQ2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM4OTQ3LTM5OTM2CisgIEZyZWUgaW5vZGVzOiA5NzI5LTk5ODQKK0dyb3VwIDM5OiAoQmxvY2tzIDM5OTM3LTQwOTYwKQorICBCbG9jayBiaXRtYXAgYXQgMzk5MzcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM5OTM4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzk5MzktMzk5NzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzk5NzEtNDA5NjAKKyAgRnJlZSBpbm9kZXM6IDk5ODUtMTAyNDAKK0dyb3VwIDQwOiAoQmxvY2tzIDQwOTYxLTQxOTg0KQorICBCbG9jayBiaXRtYXAgYXQgNDA5NjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDA5NjMtNDA5OTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDA5OTUtNDE5ODQKKyAgRnJlZSBpbm9kZXM6IDEwMjQxLTEwNDk2CitHcm91cCA0MTogKEJsb2NrcyA0MTk4NS00MzAwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQxOTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0MTk4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQxOTg3LTQyMDE4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQyMDE5LTQzMDA4CisgIEZyZWUgaW5vZGVzOiAxMDQ5Ny0xMDc1MgorR3JvdXAgNDI6IChCbG9ja3MgNDMwMDktNDQwMzIpCisgIEJsb2NrIGJpdG1hcCBhdCA0MzAwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDMwMTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MzAxMS00MzA0MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MzA0My00NDAzMgorICBGcmVlIGlub2RlczogMTA3NTMtMTEwMDgKK0dyb3VwIDQzOiAoQmxvY2tzIDQ0MDMzLTQ1MDU2KQorICBCbG9jayBiaXRtYXAgYXQgNDQwMzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ0MDM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDQwMzUtNDQwNjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDQwNjctNDUwNTYKKyAgRnJlZSBpbm9kZXM6IDExMDA5LTExMjY0CitHcm91cCA0NDogKEJsb2NrcyA0NTA1Ny00NjA4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ1MDU3ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NTA1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ1MDU5LTQ1MDkwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ1MDkxLTQ2MDgwCisgIEZyZWUgaW5vZGVzOiAxMTI2NS0xMTUyMAorR3JvdXAgNDU6IChCbG9ja3MgNDYwODEtNDcxMDQpCisgIEJsb2NrIGJpdG1hcCBhdCA0NjA4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDYwODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NjA4My00NjExNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NjExNS00NzEwNAorICBGcmVlIGlub2RlczogMTE1MjEtMTE3NzYKK0dyb3VwIDQ2OiAoQmxvY2tzIDQ3MTA1LTQ4MTI4KQorICBCbG9jayBiaXRtYXAgYXQgNDcxMDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ3MTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDcxMDctNDcxMzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDcxMzktNDgxMjgKKyAgRnJlZSBpbm9kZXM6IDExNzc3LTEyMDMyCitHcm91cCA0NzogKEJsb2NrcyA0ODEyOS00OTE1MikKKyAgQmxvY2sgYml0bWFwIGF0IDQ4MTI5ICgrMCksIElub2RlIGJpdG1hcCBhdCA0ODEzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ4MTMxLTQ4MTYyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ4MTYzLTQ5MTUyCisgIEZyZWUgaW5vZGVzOiAxMjAzMy0xMjI4OAorR3JvdXAgNDg6IChCbG9ja3MgNDkxNTMtNTAxNzYpCisgIEJsb2NrIGJpdG1hcCBhdCA0OTE1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDkxNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0OTE1NS00OTE4NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0OTE4Ny01MDE3NgorICBGcmVlIGlub2RlczogMTIyODktMTI1NDQKK0dyb3VwIDQ5OiAoQmxvY2tzIDUwMTc3LTUxMjAwKQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA1MDE3NywgR3JvdXAgZGVzY3JpcHRvcnMgYXQgNTAxNzgtNTAxNzkKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA1MDE4MC01MDQzNAorICBCbG9jayBiaXRtYXAgYXQgNTA0MzUgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgNTA0MzYgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDUwNDM3LTUwNDY4ICgrMjYwKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTA0NjktNTEyMDAKKyAgRnJlZSBpbm9kZXM6IDEyNTQ1LTEyODAwCitHcm91cCA1MDogKEJsb2NrcyA1MTIwMS01MjIyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDUxMjAxICgrMCksIElub2RlIGJpdG1hcCBhdCA1MTIwMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUxMjAzLTUxMjM0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUxMjM1LTUyMjI0CisgIEZyZWUgaW5vZGVzOiAxMjgwMS0xMzA1NgorR3JvdXAgNTE6IChCbG9ja3MgNTIyMjUtNTMyNDgpCisgIEJsb2NrIGJpdG1hcCBhdCA1MjIyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTIyMjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MjIyNy01MjI1OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MjI1OS01MzI0OAorICBGcmVlIGlub2RlczogMTMwNTctMTMzMTIKK0dyb3VwIDUyOiAoQmxvY2tzIDUzMjQ5LTU0MjcyKQorICBCbG9jayBiaXRtYXAgYXQgNTMyNDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUzMjUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTMyNTEtNTMyODIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTMyODMtNTQyNzIKKyAgRnJlZSBpbm9kZXM6IDEzMzEzLTEzNTY4CitHcm91cCA1MzogKEJsb2NrcyA1NDI3My01NTI5NikKKyAgQmxvY2sgYml0bWFwIGF0IDU0MjczICgrMCksIElub2RlIGJpdG1hcCBhdCA1NDI3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU0Mjc1LTU0MzA2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU0MzA3LTU1Mjk2CisgIEZyZWUgaW5vZGVzOiAxMzU2OS0xMzgyNAorR3JvdXAgNTQ6IChCbG9ja3MgNTUyOTctNTYzMjApCisgIEJsb2NrIGJpdG1hcCBhdCA1NTI5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTUyOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NTI5OS01NTMzMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NTMzMS01NjMyMAorICBGcmVlIGlub2RlczogMTM4MjUtMTQwODAKK0dyb3VwIDU1OiAoQmxvY2tzIDU2MzIxLTU3MzQ0KQorICBCbG9jayBiaXRtYXAgYXQgNTYzMjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU2MzIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTYzMjMtNTYzNTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTYzNTUtNTczNDQKKyAgRnJlZSBpbm9kZXM6IDE0MDgxLTE0MzM2CitHcm91cCA1NjogKEJsb2NrcyA1NzM0NS01ODM2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDU3MzQ1ICgrMCksIElub2RlIGJpdG1hcCBhdCA1NzM0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU3MzQ3LTU3Mzc4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU3Mzc5LTU4MzY4CisgIEZyZWUgaW5vZGVzOiAxNDMzNy0xNDU5MgorR3JvdXAgNTc6IChCbG9ja3MgNTgzNjktNTkzOTIpCisgIEJsb2NrIGJpdG1hcCBhdCA1ODM2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTgzNzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1ODM3MS01ODQwMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1ODQwMy01OTM5MgorICBGcmVlIGlub2RlczogMTQ1OTMtMTQ4NDgKK0dyb3VwIDU4OiAoQmxvY2tzIDU5MzkzLTYwNDE2KQorICBCbG9jayBiaXRtYXAgYXQgNTkzOTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU5Mzk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTkzOTUtNTk0MjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTk0MjctNjA0MTYKKyAgRnJlZSBpbm9kZXM6IDE0ODQ5LTE1MTA0CitHcm91cCA1OTogKEJsb2NrcyA2MDQxNy02MTQ0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDYwNDE3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MDQxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYwNDE5LTYwNDUwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYwNDUxLTYxNDQwCisgIEZyZWUgaW5vZGVzOiAxNTEwNS0xNTM2MAorR3JvdXAgNjA6IChCbG9ja3MgNjE0NDEtNjI0NjQpCisgIEJsb2NrIGJpdG1hcCBhdCA2MTQ0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjE0NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MTQ0My02MTQ3NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTQ3NS02MjQ2NAorICBGcmVlIGlub2RlczogMTUzNjEtMTU2MTYKK0dyb3VwIDYxOiAoQmxvY2tzIDYyNDY1LTYzNDg4KQorICBCbG9jayBiaXRtYXAgYXQgNjI0NjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYyNDY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjI0NjctNjI0OTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjI0OTktNjM0ODgKKyAgRnJlZSBpbm9kZXM6IDE1NjE3LTE1ODcyCitHcm91cCA2MjogKEJsb2NrcyA2MzQ4OS02NDUxMikKKyAgQmxvY2sgYml0bWFwIGF0IDYzNDg5ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MzQ5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYzNDkxLTYzNTIyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYzNTIzLTY0NTEyCisgIEZyZWUgaW5vZGVzOiAxNTg3My0xNjEyOAorR3JvdXAgNjM6IChCbG9ja3MgNjQ1MTMtNjU1MzUpCisgIEJsb2NrIGJpdG1hcCBhdCA2NDUxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjQ1MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2NDUxNS02NDU0NiAoKzIpCisgIDk4OSBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NDU0Ny02NTUzNQorICBGcmVlIGlub2RlczogMTYxMjktMTYzODQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitta2UyZnMgLXEgLUYgLU8gcmVzaXplX2lub2RlIC1vIExpbnV4IC1iIDEwMjQgLWcgMTAyNCB0ZXN0LmltZyA2NTUzNgorcmVzaXplMmZzIHRlc3QuaW1nIDE2Mzg0CitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byAxNjM4NCAoMWspIGJsb2Nrcy4KK1RoZSBmaWxlc3lzdGVtIG9uIHRlc3QuaW1nIGlzIG5vdyAxNjM4NCAoMWspIGJsb2NrcyBsb25nLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS80MDk2IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjEwNy8xNjM4NCBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDAKK2R1bXBlMmZzIHRlc3QuaW1nCitGaWxlc3lzdGVtIHZvbHVtZSBuYW1lOiAgIDxub25lPgorTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KK0ZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCitGaWxlc3lzdGVtIHJldmlzaW9uICM6ICAgIDEgKGR5bmFtaWMpCitGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyCitEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIChub25lKQorRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorRmlsZXN5c3RlbSBPUyB0eXBlOiAgICAgICBMaW51eAorSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA0MDk2CitCbG9jayBjb3VudDogICAgICAgICAgICAgIDE2Mzg0CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDgxOQorRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxNDI3NworRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA0MDg1CitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1NgorQmxvY2tzIHBlciBncm91cDogICAgICAgICAxMDI0CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDEwMjQKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMjU2CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDMyCitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMTAyNCkKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItMgorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDMtMjU4CisgIEJsb2NrIGJpdG1hcCBhdCAyNjAgKCsyNTkpLCBJbm9kZSBiaXRtYXAgYXQgMjYxICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCAyNjItMjkzICgrMjYxKQorICA3MTggZnJlZSBibG9ja3MsIDI0NSBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU5LCAzMDgtMTAyNAorICBGcmVlIGlub2RlczogMTItMjU2CitHcm91cCAxOiAoQmxvY2tzIDEwMjUtMjA0OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTAyNSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTAyNi0xMDI2CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTAyNy0xMjgyCisgIEJsb2NrIGJpdG1hcCBhdCAxMjg0ICgrMjU5KSwgSW5vZGUgYml0bWFwIGF0IDEyODUgKCsyNjApCisgIElub2RlIHRhYmxlIGF0IDEyODYtMTMxNyAoKzI2MSkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODMsIDEzMTgtMjA0OAorICBGcmVlIGlub2RlczogMjU3LTUxMgorR3JvdXAgMjogKEJsb2NrcyAyMDQ5LTMwNzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA1MS0yMDgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwODMtMzA3MgorICBGcmVlIGlub2RlczogNTEzLTc2OAorR3JvdXAgMzogKEJsb2NrcyAzMDczLTQwOTYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDMwNzMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDMwNzQtMzA3NAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDMwNzUtMzMzMAorICBCbG9jayBiaXRtYXAgYXQgMzMzMiAoKzI1OSksIElub2RlIGJpdG1hcCBhdCAzMzMzICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCAzMzM0LTMzNjUgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMzMxLCAzMzY2LTQwOTYKKyAgRnJlZSBpbm9kZXM6IDc2OS0xMDI0CitHcm91cCA0OiAoQmxvY2tzIDQwOTctNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk5LTQxMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEzMS01MTIwCisgIEZyZWUgaW5vZGVzOiAxMDI1LTEyODAKK0dyb3VwIDU6IChCbG9ja3MgNTEyMS02MTQ0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA1MTIxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA1MTIyLTUxMjIKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA1MTIzLTUzNzgKKyAgQmxvY2sgYml0bWFwIGF0IDUzODAgKCsyNTkpLCBJbm9kZSBiaXRtYXAgYXQgNTM4MSAoKzI2MCkKKyAgSW5vZGUgdGFibGUgYXQgNTM4Mi01NDEzICgrMjYxKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTM3OSwgNTQxNC02MTQ0CisgIEZyZWUgaW5vZGVzOiAxMjgxLTE1MzYKK0dyb3VwIDY6IChCbG9ja3MgNjE0NS03MTY4KQorICBCbG9jayBiaXRtYXAgYXQgNjE0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjE0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYxNDctNjE3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTc5LTcxNjgKKyAgRnJlZSBpbm9kZXM6IDE1MzctMTc5MgorR3JvdXAgNzogKEJsb2NrcyA3MTY5LTgxOTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDcxNjksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDcxNzAtNzE3MAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDcxNzEtNzQyNgorICBCbG9jayBiaXRtYXAgYXQgNzQyOCAoKzI1OSksIElub2RlIGJpdG1hcCBhdCA3NDI5ICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCA3NDMwLTc0NjEgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NDI3LCA3NDYyLTgxOTIKKyAgRnJlZSBpbm9kZXM6IDE3OTMtMjA0OAorR3JvdXAgODogKEJsb2NrcyA4MTkzLTkyMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkzICgrMCksIElub2RlIGJpdG1hcCBhdCA4MTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5NS04MjI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgyMjctOTIxNgorICBGcmVlIGlub2RlczogMjA0OS0yMzA0CitHcm91cCA5OiAoQmxvY2tzIDkyMTctMTAyNDApCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDkyMTcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDkyMTgtOTIxOAorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDkyMTktOTQ3NAorICBCbG9jayBiaXRtYXAgYXQgOTQ3NiAoKzI1OSksIElub2RlIGJpdG1hcCBhdCA5NDc3ICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCA5NDc4LTk1MDkgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDc1LCA5NTEwLTEwMjQwCisgIEZyZWUgaW5vZGVzOiAyMzA1LTI1NjAKK0dyb3VwIDEwOiAoQmxvY2tzIDEwMjQxLTExMjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDMtMTAyNzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNzUtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDI1NjEtMjgxNgorR3JvdXAgMTE6IChCbG9ja3MgMTEyNjUtMTIyODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTI2Ny0xMTI5OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTI5OS0xMjI4OAorICBGcmVlIGlub2RlczogMjgxNy0zMDcyCitHcm91cCAxMjogKEJsb2NrcyAxMjI4OS0xMzMxMikKKyAgQmxvY2sgYml0bWFwIGF0IDEyMjg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjI5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMjkxLTEyMzIyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMzIzLTEzMzEyCisgIEZyZWUgaW5vZGVzOiAzMDczLTMzMjgKK0dyb3VwIDEzOiAoQmxvY2tzIDEzMzEzLTE0MzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMzE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMzMTUtMTMzNDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzNDctMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDMzMjktMzU4NAorR3JvdXAgMTQ6IChCbG9ja3MgMTQzMzctMTUzNjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNDMzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDMzOS0xNDM3MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDM3MS0xNTM2MAorICBGcmVlIGlub2RlczogMzU4NS0zODQwCitHcm91cCAxNTogKEJsb2NrcyAxNTM2MS0xNjM4MykKKyAgQmxvY2sgYml0bWFwIGF0IDE1MzYxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTM2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzYzLTE1Mzk0ICgrMikKKyAgOTg5IGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1Mzk1LTE2MzgzCisgIEZyZWUgaW5vZGVzOiAzODQxLTQwOTYKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityZXNpemUyZnMgdGVzdC5pbWcgMTY1NTM2CitSZXNpemluZyB0aGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyB0byAxNjU1MzYgKDFrKSBibG9ja3MuCitUaGUgZmlsZXN5c3RlbSBvbiB0ZXN0LmltZyBpcyBub3cgMTY1NTM2ICgxaykgYmxvY2tzIGxvbmcuCisKK0ZpbGVzeXN0ZW0gZGlkIG5vdCBoYXZlIGEgVVVJRDsgZ2VuZXJhdGluZyBvbmUuCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCit0ZXN0X2ZpbGVzeXM6IDExLzQxNDcyIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgODM2MS8xNjU1MzYgYmxvY2tzCitFeGl0IHN0YXR1cyBpcyAwCitkdW1wZTJmcyB0ZXN0LmltZworRmlsZXN5c3RlbSB2b2x1bWUgbmFtZTogICA8bm9uZT4KK0xhc3QgbW91bnRlZCBvbjogICAgICAgICAgPG5vdCBhdmFpbGFibGU+CitGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIHNwYXJzZV9zdXBlcgorRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICAobm9uZSkKK0ZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KK0Vycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0ZpbGVzeXN0ZW0gT1MgdHlwZTogICAgICAgTGludXgKK0lub2RlIGNvdW50OiAgICAgICAgICAgICAgNDE0NzIKK0Jsb2NrIGNvdW50OiAgICAgICAgICAgICAgMTY1NTM2CitSZXNlcnZlZCBibG9jayBjb3VudDogICAgIDgyNzQKK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgMTU3MTc1CitGcmVlIGlub2RlczogICAgICAgICAgICAgIDQxNDYxCitGaXJzdCBibG9jazogICAgICAgICAgICAgIDEKK0Jsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorRnJhZ21lbnQgc2l6ZTogICAgICAgICAgICAxMDI0CitSZXNlcnZlZCBHRFQgYmxvY2tzOiAgICAgIDI1MQorQmxvY2tzIHBlciBncm91cDogICAgICAgICAxMDI0CitGcmFnbWVudHMgcGVyIGdyb3VwOiAgICAgIDEwMjQKK0lub2RlcyBwZXIgZ3JvdXA6ICAgICAgICAgMjU2CitJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDMyCitNb3VudCBjb3VudDogICAgICAgICAgICAgIDAKK0NoZWNrIGludGVydmFsOiAgICAgICAgICAgMTU1NTIwMDAgKDYgbW9udGhzKQorUmVzZXJ2ZWQgYmxvY2tzIHVpZDogICAgICAwCitSZXNlcnZlZCBibG9ja3MgZ2lkOiAgICAgIDAKK0ZpcnN0IGlub2RlOiAgICAgICAgICAgICAgMTEKK0lub2RlIHNpemU6CSAgICAgICAgICAxMjgKK0RlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKworCitHcm91cCAwOiAoQmxvY2tzIDEtMTAyNCkKKyAgUHJpbWFyeSBzdXBlcmJsb2NrIGF0IDEsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDItNworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDgtMjU4CisgIEJsb2NrIGJpdG1hcCBhdCAyNjAgKCsyNTkpLCBJbm9kZSBiaXRtYXAgYXQgMjYxICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCAyNjItMjkzICgrMjYxKQorICA3MTggZnJlZSBibG9ja3MsIDI0NSBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU5LCAzMDgtMTAyNAorICBGcmVlIGlub2RlczogMTItMjU2CitHcm91cCAxOiAoQmxvY2tzIDEwMjUtMjA0OCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMTAyNSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTAyNi0xMDMxCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMTAzMi0xMjgyCisgIEJsb2NrIGJpdG1hcCBhdCAxMjg0ICgrMjU5KSwgSW5vZGUgYml0bWFwIGF0IDEyODUgKCsyNjApCisgIElub2RlIHRhYmxlIGF0IDEyODYtMTMxNyAoKzI2MSkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyODMsIDEzMTgtMjA0OAorICBGcmVlIGlub2RlczogMjU3LTUxMgorR3JvdXAgMjogKEJsb2NrcyAyMDQ5LTMwNzIpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMDUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjA1MS0yMDgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIwODMtMzA3MgorICBGcmVlIGlub2RlczogNTEzLTc2OAorR3JvdXAgMzogKEJsb2NrcyAzMDczLTQwOTYpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDMwNzMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDMwNzQtMzA3OQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDMwODAtMzMzMAorICBCbG9jayBiaXRtYXAgYXQgMzMzMiAoKzI1OSksIElub2RlIGJpdG1hcCBhdCAzMzMzICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCAzMzM0LTMzNjUgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMzMxLCAzMzY2LTQwOTYKKyAgRnJlZSBpbm9kZXM6IDc2OS0xMDI0CitHcm91cCA0OiAoQmxvY2tzIDQwOTctNTEyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQwOTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MDk5LTQxMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDEzMS01MTIwCisgIEZyZWUgaW5vZGVzOiAxMDI1LTEyODAKK0dyb3VwIDU6IChCbG9ja3MgNTEyMS02MTQ0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA1MTIxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA1MTIyLTUxMjcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA1MTI4LTUzNzgKKyAgQmxvY2sgYml0bWFwIGF0IDUzODAgKCsyNTkpLCBJbm9kZSBiaXRtYXAgYXQgNTM4MSAoKzI2MCkKKyAgSW5vZGUgdGFibGUgYXQgNTM4Mi01NDEzICgrMjYxKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTM3OSwgNTQxNC02MTQ0CisgIEZyZWUgaW5vZGVzOiAxMjgxLTE1MzYKK0dyb3VwIDY6IChCbG9ja3MgNjE0NS03MTY4KQorICBCbG9jayBiaXRtYXAgYXQgNjE0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjE0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYxNDctNjE3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MTc5LTcxNjgKKyAgRnJlZSBpbm9kZXM6IDE1MzctMTc5MgorR3JvdXAgNzogKEJsb2NrcyA3MTY5LTgxOTIpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDcxNjksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDcxNzAtNzE3NQorICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDcxNzYtNzQyNgorICBCbG9jayBiaXRtYXAgYXQgNzQyOCAoKzI1OSksIElub2RlIGJpdG1hcCBhdCA3NDI5ICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCA3NDMwLTc0NjEgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NDI3LCA3NDYyLTgxOTIKKyAgRnJlZSBpbm9kZXM6IDE3OTMtMjA0OAorR3JvdXAgODogKEJsb2NrcyA4MTkzLTkyMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkzICgrMCksIElub2RlIGJpdG1hcCBhdCA4MTk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODE5NS04MjI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgyMjctOTIxNgorICBGcmVlIGlub2RlczogMjA0OS0yMzA0CitHcm91cCA5OiAoQmxvY2tzIDkyMTctMTAyNDApCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDkyMTcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDkyMTgtOTIyMworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDkyMjQtOTQ3NAorICBCbG9jayBiaXRtYXAgYXQgOTQ3NiAoKzI1OSksIElub2RlIGJpdG1hcCBhdCA5NDc3ICgrMjYwKQorICBJbm9kZSB0YWJsZSBhdCA5NDc4LTk1MDkgKCsyNjEpCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDc1LCA5NTEwLTEwMjQwCisgIEZyZWUgaW5vZGVzOiAyMzA1LTI1NjAKK0dyb3VwIDEwOiAoQmxvY2tzIDEwMjQxLTExMjY0KQorICBCbG9jayBiaXRtYXAgYXQgMTAyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMjQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDMtMTAyNzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAyNzUtMTEyNjQKKyAgRnJlZSBpbm9kZXM6IDI1NjEtMjgxNgorR3JvdXAgMTE6IChCbG9ja3MgMTEyNjUtMTIyODgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTEyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTI2Ny0xMTI5OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTI5OS0xMjI4OAorICBGcmVlIGlub2RlczogMjgxNy0zMDcyCitHcm91cCAxMjogKEJsb2NrcyAxMjI4OS0xMzMxMikKKyAgQmxvY2sgYml0bWFwIGF0IDEyMjg5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjI5MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMjkxLTEyMzIyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMzIzLTEzMzEyCisgIEZyZWUgaW5vZGVzOiAzMDczLTMzMjgKK0dyb3VwIDEzOiAoQmxvY2tzIDEzMzEzLTE0MzM2KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMzE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMzMTUtMTMzNDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMzNDctMTQzMzYKKyAgRnJlZSBpbm9kZXM6IDMzMjktMzU4NAorR3JvdXAgMTQ6IChCbG9ja3MgMTQzMzctMTUzNjApCisgIEJsb2NrIGJpdG1hcCBhdCAxNDMzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDMzOS0xNDM3MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDM3MS0xNTM2MAorICBGcmVlIGlub2RlczogMzU4NS0zODQwCitHcm91cCAxNTogKEJsb2NrcyAxNTM2MS0xNjM4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1MzYxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTM2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzYzLTE1Mzk0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1Mzk1LTE2Mzg0CisgIEZyZWUgaW5vZGVzOiAzODQxLTQwOTYKK0dyb3VwIDE2OiAoQmxvY2tzIDE2Mzg1LTE3NDA4KQorICBCbG9jayBiaXRtYXAgYXQgMTYzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2Mzg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYzODctMTY0MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTY0MTktMTc0MDgKKyAgRnJlZSBpbm9kZXM6IDQwOTctNDM1MgorR3JvdXAgMTc6IChCbG9ja3MgMTc0MDktMTg0MzIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNzQwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTc0MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNzQxMS0xNzQ0MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNzQ0My0xODQzMgorICBGcmVlIGlub2RlczogNDM1My00NjA4CitHcm91cCAxODogKEJsb2NrcyAxODQzMy0xOTQ1NikKKyAgQmxvY2sgYml0bWFwIGF0IDE4NDMzICgrMCksIElub2RlIGJpdG1hcCBhdCAxODQzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE4NDM1LTE4NDY2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE4NDY3LTE5NDU2CisgIEZyZWUgaW5vZGVzOiA0NjA5LTQ4NjQKK0dyb3VwIDE5OiAoQmxvY2tzIDE5NDU3LTIwNDgwKQorICBCbG9jayBiaXRtYXAgYXQgMTk0NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE5NDU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTk0NTktMTk0OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTk0OTEtMjA0ODAKKyAgRnJlZSBpbm9kZXM6IDQ4NjUtNTEyMAorR3JvdXAgMjA6IChCbG9ja3MgMjA0ODEtMjE1MDQpCisgIEJsb2NrIGJpdG1hcCBhdCAyMDQ4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjA0ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMDQ4My0yMDUxNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMDUxNS0yMTUwNAorICBGcmVlIGlub2RlczogNTEyMS01Mzc2CitHcm91cCAyMTogKEJsb2NrcyAyMTUwNS0yMjUyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDIxNTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCAyMTUwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDIxNTA3LTIxNTM4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDIxNTM5LTIyNTI4CisgIEZyZWUgaW5vZGVzOiA1Mzc3LTU2MzIKK0dyb3VwIDIyOiAoQmxvY2tzIDIyNTI5LTIzNTUyKQorICBCbG9jayBiaXRtYXAgYXQgMjI1MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDIyNTMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjI1MzEtMjI1NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjI1NjMtMjM1NTIKKyAgRnJlZSBpbm9kZXM6IDU2MzMtNTg4OAorR3JvdXAgMjM6IChCbG9ja3MgMjM1NTMtMjQ1NzYpCisgIEJsb2NrIGJpdG1hcCBhdCAyMzU1MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjM1NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyMzU1NS0yMzU4NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyMzU4Ny0yNDU3NgorICBGcmVlIGlub2RlczogNTg4OS02MTQ0CitHcm91cCAyNDogKEJsb2NrcyAyNDU3Ny0yNTYwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDI0NTc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAyNDU3OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDI0NTc5LTI0NjEwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI0NjExLTI1NjAwCisgIEZyZWUgaW5vZGVzOiA2MTQ1LTY0MDAKK0dyb3VwIDI1OiAoQmxvY2tzIDI1NjAxLTI2NjI0KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCAyNTYwMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMjU2MDItMjU2MDcKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCAyNTYwOC0yNTg1OAorICBCbG9jayBiaXRtYXAgYXQgMjU4NTkgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgMjU4NjAgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDI1ODYxLTI1ODkyICgrMjYwKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjU4OTMtMjY2MjQKKyAgRnJlZSBpbm9kZXM6IDY0MDEtNjY1NgorR3JvdXAgMjY6IChCbG9ja3MgMjY2MjUtMjc2NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAyNjYyNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjY2MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyNjYyNy0yNjY1OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyNjY1OS0yNzY0OAorICBGcmVlIGlub2RlczogNjY1Ny02OTEyCitHcm91cCAyNzogKEJsb2NrcyAyNzY0OS0yODY3MikKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgMjc2NDksIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDI3NjUwLTI3NjU1CisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgMjc2NTYtMjc5MDYKKyAgQmxvY2sgYml0bWFwIGF0IDI3OTA3ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDI3OTA4ICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCAyNzkwOS0yNzk0MCAoKzI2MCkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDI3OTQxLTI4NjcyCisgIEZyZWUgaW5vZGVzOiA2OTEzLTcxNjgKK0dyb3VwIDI4OiAoQmxvY2tzIDI4NjczLTI5Njk2KQorICBCbG9jayBiaXRtYXAgYXQgMjg2NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDI4Njc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMjg2NzUtMjg3MDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMjg3MDctMjk2OTYKKyAgRnJlZSBpbm9kZXM6IDcxNjktNzQyNAorR3JvdXAgMjk6IChCbG9ja3MgMjk2OTctMzA3MjApCisgIEJsb2NrIGJpdG1hcCBhdCAyOTY5NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMjk2OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAyOTY5OS0yOTczMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAyOTczMS0zMDcyMAorICBGcmVlIGlub2RlczogNzQyNS03NjgwCitHcm91cCAzMDogKEJsb2NrcyAzMDcyMS0zMTc0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDMwNzIxICgrMCksIElub2RlIGJpdG1hcCBhdCAzMDcyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMwNzIzLTMwNzU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMwNzU1LTMxNzQ0CisgIEZyZWUgaW5vZGVzOiA3NjgxLTc5MzYKK0dyb3VwIDMxOiAoQmxvY2tzIDMxNzQ1LTMyNzY4KQorICBCbG9jayBiaXRtYXAgYXQgMzE3NDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDMxNzQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzE3NDctMzE3NzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzE3NzktMzI3NjgKKyAgRnJlZSBpbm9kZXM6IDc5MzctODE5MgorR3JvdXAgMzI6IChCbG9ja3MgMzI3NjktMzM3OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAzMjc2OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzI3NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzMjc3MS0zMjgwMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzMjgwMy0zMzc5MgorICBGcmVlIGlub2RlczogODE5My04NDQ4CitHcm91cCAzMzogKEJsb2NrcyAzMzc5My0zNDgxNikKKyAgQmxvY2sgYml0bWFwIGF0IDMzNzkzICgrMCksIElub2RlIGJpdG1hcCBhdCAzMzc5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDMzNzk1LTMzODI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDMzODI3LTM0ODE2CisgIEZyZWUgaW5vZGVzOiA4NDQ5LTg3MDQKK0dyb3VwIDM0OiAoQmxvY2tzIDM0ODE3LTM1ODQwKQorICBCbG9jayBiaXRtYXAgYXQgMzQ4MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM0ODE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzQ4MTktMzQ4NTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzQ4NTEtMzU4NDAKKyAgRnJlZSBpbm9kZXM6IDg3MDUtODk2MAorR3JvdXAgMzU6IChCbG9ja3MgMzU4NDEtMzY4NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAzNTg0MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzU4NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzNTg0My0zNTg3NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzNTg3NS0zNjg2NAorICBGcmVlIGlub2RlczogODk2MS05MjE2CitHcm91cCAzNjogKEJsb2NrcyAzNjg2NS0zNzg4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDM2ODY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAzNjg2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM2ODY3LTM2ODk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM2ODk5LTM3ODg4CisgIEZyZWUgaW5vZGVzOiA5MjE3LTk0NzIKK0dyb3VwIDM3OiAoQmxvY2tzIDM3ODg5LTM4OTEyKQorICBCbG9jayBiaXRtYXAgYXQgMzc4ODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDM3ODkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMzc4OTEtMzc5MjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMzc5MjMtMzg5MTIKKyAgRnJlZSBpbm9kZXM6IDk0NzMtOTcyOAorR3JvdXAgMzg6IChCbG9ja3MgMzg5MTMtMzk5MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAzODkxMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMzg5MTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAzODkxNS0zODk0NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAzODk0Ny0zOTkzNgorICBGcmVlIGlub2RlczogOTcyOS05OTg0CitHcm91cCAzOTogKEJsb2NrcyAzOTkzNy00MDk2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDM5OTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAzOTkzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDM5OTM5LTM5OTcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDM5OTcxLTQwOTYwCisgIEZyZWUgaW5vZGVzOiA5OTg1LTEwMjQwCitHcm91cCA0MDogKEJsb2NrcyA0MDk2MS00MTk4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDQwOTYxICgrMCksIElub2RlIGJpdG1hcCBhdCA0MDk2MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQwOTYzLTQwOTk0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQwOTk1LTQxOTg0CisgIEZyZWUgaW5vZGVzOiAxMDI0MS0xMDQ5NgorR3JvdXAgNDE6IChCbG9ja3MgNDE5ODUtNDMwMDgpCisgIEJsb2NrIGJpdG1hcCBhdCA0MTk4NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDE5ODYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0MTk4Ny00MjAxOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0MjAxOS00MzAwOAorICBGcmVlIGlub2RlczogMTA0OTctMTA3NTIKK0dyb3VwIDQyOiAoQmxvY2tzIDQzMDA5LTQ0MDMyKQorICBCbG9jayBiaXRtYXAgYXQgNDMwMDkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQzMDEwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDMwMTEtNDMwNDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDMwNDMtNDQwMzIKKyAgRnJlZSBpbm9kZXM6IDEwNzUzLTExMDA4CitHcm91cCA0MzogKEJsb2NrcyA0NDAzMy00NTA1NikKKyAgQmxvY2sgYml0bWFwIGF0IDQ0MDMzICgrMCksIElub2RlIGJpdG1hcCBhdCA0NDAzNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ0MDM1LTQ0MDY2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ0MDY3LTQ1MDU2CisgIEZyZWUgaW5vZGVzOiAxMTAwOS0xMTI2NAorR3JvdXAgNDQ6IChCbG9ja3MgNDUwNTctNDYwODApCisgIEJsb2NrIGJpdG1hcCBhdCA0NTA1NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDUwNTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0NTA1OS00NTA5MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0NTA5MS00NjA4MAorICBGcmVlIGlub2RlczogMTEyNjUtMTE1MjAKK0dyb3VwIDQ1OiAoQmxvY2tzIDQ2MDgxLTQ3MTA0KQorICBCbG9jayBiaXRtYXAgYXQgNDYwODEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ2MDgyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDYwODMtNDYxMTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDYxMTUtNDcxMDQKKyAgRnJlZSBpbm9kZXM6IDExNTIxLTExNzc2CitHcm91cCA0NjogKEJsb2NrcyA0NzEwNS00ODEyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDQ3MTA1ICgrMCksIElub2RlIGJpdG1hcCBhdCA0NzEwNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDQ3MTA3LTQ3MTM4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDQ3MTM5LTQ4MTI4CisgIEZyZWUgaW5vZGVzOiAxMTc3Ny0xMjAzMgorR3JvdXAgNDc6IChCbG9ja3MgNDgxMjktNDkxNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA0ODEyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNDgxMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA0ODEzMS00ODE2MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA0ODE2My00OTE1MgorICBGcmVlIGlub2RlczogMTIwMzMtMTIyODgKK0dyb3VwIDQ4OiAoQmxvY2tzIDQ5MTUzLTUwMTc2KQorICBCbG9jayBiaXRtYXAgYXQgNDkxNTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDQ5MTU0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNDkxNTUtNDkxODYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNDkxODctNTAxNzYKKyAgRnJlZSBpbm9kZXM6IDEyMjg5LTEyNTQ0CitHcm91cCA0OTogKEJsb2NrcyA1MDE3Ny01MTIwMCkKKyAgQmFja3VwIHN1cGVyYmxvY2sgYXQgNTAxNzcsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDUwMTc4LTUwMTgzCisgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNTAxODQtNTA0MzQKKyAgQmxvY2sgYml0bWFwIGF0IDUwNDM1ICgrMjU4KSwgSW5vZGUgYml0bWFwIGF0IDUwNDM2ICgrMjU5KQorICBJbm9kZSB0YWJsZSBhdCA1MDQzNy01MDQ2OCAoKzI2MCkKKyAgNzMyIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUwNDY5LTUxMjAwCisgIEZyZWUgaW5vZGVzOiAxMjU0NS0xMjgwMAorR3JvdXAgNTA6IChCbG9ja3MgNTEyMDEtNTIyMjQpCisgIEJsb2NrIGJpdG1hcCBhdCA1MTIwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTEyMDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1MTIwMy01MTIzNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1MTIzNS01MjIyNAorICBGcmVlIGlub2RlczogMTI4MDEtMTMwNTYKK0dyb3VwIDUxOiAoQmxvY2tzIDUyMjI1LTUzMjQ4KQorICBCbG9jayBiaXRtYXAgYXQgNTIyMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDUyMjI2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTIyMjctNTIyNTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTIyNTktNTMyNDgKKyAgRnJlZSBpbm9kZXM6IDEzMDU3LTEzMzEyCitHcm91cCA1MjogKEJsb2NrcyA1MzI0OS01NDI3MikKKyAgQmxvY2sgYml0bWFwIGF0IDUzMjQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCA1MzI1MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDUzMjUxLTUzMjgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDUzMjgzLTU0MjcyCisgIEZyZWUgaW5vZGVzOiAxMzMxMy0xMzU2OAorR3JvdXAgNTM6IChCbG9ja3MgNTQyNzMtNTUyOTYpCisgIEJsb2NrIGJpdG1hcCBhdCA1NDI3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTQyNzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NDI3NS01NDMwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NDMwNy01NTI5NgorICBGcmVlIGlub2RlczogMTM1NjktMTM4MjQKK0dyb3VwIDU0OiAoQmxvY2tzIDU1Mjk3LTU2MzIwKQorICBCbG9jayBiaXRtYXAgYXQgNTUyOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU1Mjk4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTUyOTktNTUzMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTUzMzEtNTYzMjAKKyAgRnJlZSBpbm9kZXM6IDEzODI1LTE0MDgwCitHcm91cCA1NTogKEJsb2NrcyA1NjMyMS01NzM0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDU2MzIxICgrMCksIElub2RlIGJpdG1hcCBhdCA1NjMyMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU2MzIzLTU2MzU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU2MzU1LTU3MzQ0CisgIEZyZWUgaW5vZGVzOiAxNDA4MS0xNDMzNgorR3JvdXAgNTY6IChCbG9ja3MgNTczNDUtNTgzNjgpCisgIEJsb2NrIGJpdG1hcCBhdCA1NzM0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNTczNDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA1NzM0Ny01NzM3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA1NzM3OS01ODM2OAorICBGcmVlIGlub2RlczogMTQzMzctMTQ1OTIKK0dyb3VwIDU3OiAoQmxvY2tzIDU4MzY5LTU5MzkyKQorICBCbG9jayBiaXRtYXAgYXQgNTgzNjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDU4MzcwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNTgzNzEtNTg0MDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNTg0MDMtNTkzOTIKKyAgRnJlZSBpbm9kZXM6IDE0NTkzLTE0ODQ4CitHcm91cCA1ODogKEJsb2NrcyA1OTM5My02MDQxNikKKyAgQmxvY2sgYml0bWFwIGF0IDU5MzkzICgrMCksIElub2RlIGJpdG1hcCBhdCA1OTM5NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDU5Mzk1LTU5NDI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDU5NDI3LTYwNDE2CisgIEZyZWUgaW5vZGVzOiAxNDg0OS0xNTEwNAorR3JvdXAgNTk6IChCbG9ja3MgNjA0MTctNjE0NDApCisgIEJsb2NrIGJpdG1hcCBhdCA2MDQxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjA0MTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MDQxOS02MDQ1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MDQ1MS02MTQ0MAorICBGcmVlIGlub2RlczogMTUxMDUtMTUzNjAKK0dyb3VwIDYwOiAoQmxvY2tzIDYxNDQxLTYyNDY0KQorICBCbG9jayBiaXRtYXAgYXQgNjE0NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDYxNDQyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjE0NDMtNjE0NzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjE0NzUtNjI0NjQKKyAgRnJlZSBpbm9kZXM6IDE1MzYxLTE1NjE2CitHcm91cCA2MTogKEJsb2NrcyA2MjQ2NS02MzQ4OCkKKyAgQmxvY2sgYml0bWFwIGF0IDYyNDY1ICgrMCksIElub2RlIGJpdG1hcCBhdCA2MjQ2NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDYyNDY3LTYyNDk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDYyNDk5LTYzNDg4CisgIEZyZWUgaW5vZGVzOiAxNTYxNy0xNTg3MgorR3JvdXAgNjI6IChCbG9ja3MgNjM0ODktNjQ1MTIpCisgIEJsb2NrIGJpdG1hcCBhdCA2MzQ4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjM0OTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2MzQ5MS02MzUyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2MzUyMy02NDUxMgorICBGcmVlIGlub2RlczogMTU4NzMtMTYxMjgKK0dyb3VwIDYzOiAoQmxvY2tzIDY0NTEzLTY1NTM2KQorICBCbG9jayBiaXRtYXAgYXQgNjQ1MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY0NTE0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjQ1MTUtNjQ1NDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjQ1NDctNjU1MzYKKyAgRnJlZSBpbm9kZXM6IDE2MTI5LTE2Mzg0CitHcm91cCA2NDogKEJsb2NrcyA2NTUzNy02NjU2MCkKKyAgQmxvY2sgYml0bWFwIGF0IDY1NTM3ICgrMCksIElub2RlIGJpdG1hcCBhdCA2NTUzOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY1NTM5LTY1NTcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY1NTcxLTY2NTYwCisgIEZyZWUgaW5vZGVzOiAxNjM4NS0xNjY0MAorR3JvdXAgNjU6IChCbG9ja3MgNjY1NjEtNjc1ODQpCisgIEJsb2NrIGJpdG1hcCBhdCA2NjU2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjY1NjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2NjU2My02NjU5NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2NjU5NS02NzU4NAorICBGcmVlIGlub2RlczogMTY2NDEtMTY4OTYKK0dyb3VwIDY2OiAoQmxvY2tzIDY3NTg1LTY4NjA4KQorICBCbG9jayBiaXRtYXAgYXQgNjc1ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDY3NTg2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNjc1ODctNjc2MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNjc2MTktNjg2MDgKKyAgRnJlZSBpbm9kZXM6IDE2ODk3LTE3MTUyCitHcm91cCA2NzogKEJsb2NrcyA2ODYwOS02OTYzMikKKyAgQmxvY2sgYml0bWFwIGF0IDY4NjA5ICgrMCksIElub2RlIGJpdG1hcCBhdCA2ODYxMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDY4NjExLTY4NjQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDY4NjQzLTY5NjMyCisgIEZyZWUgaW5vZGVzOiAxNzE1My0xNzQwOAorR3JvdXAgNjg6IChCbG9ja3MgNjk2MzMtNzA2NTYpCisgIEJsb2NrIGJpdG1hcCBhdCA2OTYzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNjk2MzQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA2OTYzNS02OTY2NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA2OTY2Ny03MDY1NgorICBGcmVlIGlub2RlczogMTc0MDktMTc2NjQKK0dyb3VwIDY5OiAoQmxvY2tzIDcwNjU3LTcxNjgwKQorICBCbG9jayBiaXRtYXAgYXQgNzA2NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDcwNjU4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzA2NTktNzA2OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzA2OTEtNzE2ODAKKyAgRnJlZSBpbm9kZXM6IDE3NjY1LTE3OTIwCitHcm91cCA3MDogKEJsb2NrcyA3MTY4MS03MjcwNCkKKyAgQmxvY2sgYml0bWFwIGF0IDcxNjgxICgrMCksIElub2RlIGJpdG1hcCBhdCA3MTY4MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDcxNjgzLTcxNzE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDcxNzE1LTcyNzA0CisgIEZyZWUgaW5vZGVzOiAxNzkyMS0xODE3NgorR3JvdXAgNzE6IChCbG9ja3MgNzI3MDUtNzM3MjgpCisgIEJsb2NrIGJpdG1hcCBhdCA3MjcwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzI3MDYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3MjcwNy03MjczOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3MjczOS03MzcyOAorICBGcmVlIGlub2RlczogMTgxNzctMTg0MzIKK0dyb3VwIDcyOiAoQmxvY2tzIDczNzI5LTc0NzUyKQorICBCbG9jayBiaXRtYXAgYXQgNzM3MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDczNzMwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzM3MzEtNzM3NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzM3NjMtNzQ3NTIKKyAgRnJlZSBpbm9kZXM6IDE4NDMzLTE4Njg4CitHcm91cCA3MzogKEJsb2NrcyA3NDc1My03NTc3NikKKyAgQmxvY2sgYml0bWFwIGF0IDc0NzUzICgrMCksIElub2RlIGJpdG1hcCBhdCA3NDc1NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc0NzU1LTc0Nzg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc0Nzg3LTc1Nzc2CisgIEZyZWUgaW5vZGVzOiAxODY4OS0xODk0NAorR3JvdXAgNzQ6IChCbG9ja3MgNzU3NzctNzY4MDApCisgIEJsb2NrIGJpdG1hcCBhdCA3NTc3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzU3NzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3NTc3OS03NTgxMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3NTgxMS03NjgwMAorICBGcmVlIGlub2RlczogMTg5NDUtMTkyMDAKK0dyb3VwIDc1OiAoQmxvY2tzIDc2ODAxLTc3ODI0KQorICBCbG9jayBiaXRtYXAgYXQgNzY4MDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc2ODAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzY4MDMtNzY4MzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzY4MzUtNzc4MjQKKyAgRnJlZSBpbm9kZXM6IDE5MjAxLTE5NDU2CitHcm91cCA3NjogKEJsb2NrcyA3NzgyNS03ODg0OCkKKyAgQmxvY2sgYml0bWFwIGF0IDc3ODI1ICgrMCksIElub2RlIGJpdG1hcCBhdCA3NzgyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDc3ODI3LTc3ODU4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDc3ODU5LTc4ODQ4CisgIEZyZWUgaW5vZGVzOiAxOTQ1Ny0xOTcxMgorR3JvdXAgNzc6IChCbG9ja3MgNzg4NDktNzk4NzIpCisgIEJsb2NrIGJpdG1hcCBhdCA3ODg0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgNzg4NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA3ODg1MS03ODg4MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA3ODg4My03OTg3MgorICBGcmVlIGlub2RlczogMTk3MTMtMTk5NjgKK0dyb3VwIDc4OiAoQmxvY2tzIDc5ODczLTgwODk2KQorICBCbG9jayBiaXRtYXAgYXQgNzk4NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDc5ODc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgNzk4NzUtNzk5MDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogNzk5MDctODA4OTYKKyAgRnJlZSBpbm9kZXM6IDE5OTY5LTIwMjI0CitHcm91cCA3OTogKEJsb2NrcyA4MDg5Ny04MTkyMCkKKyAgQmxvY2sgYml0bWFwIGF0IDgwODk3ICgrMCksIElub2RlIGJpdG1hcCBhdCA4MDg5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgwODk5LTgwOTMwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDgwOTMxLTgxOTIwCisgIEZyZWUgaW5vZGVzOiAyMDIyNS0yMDQ4MAorR3JvdXAgODA6IChCbG9ja3MgODE5MjEtODI5NDQpCisgIEJsb2NrIGJpdG1hcCBhdCA4MTkyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODE5MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4MTkyMy04MTk1NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4MTk1NS04Mjk0NAorICBGcmVlIGlub2RlczogMjA0ODEtMjA3MzYKK0dyb3VwIDgxOiAoQmxvY2tzIDgyOTQ1LTgzOTY4KQorICBCYWNrdXAgc3VwZXJibG9jayBhdCA4Mjk0NSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgODI5NDYtODI5NTEKKyAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4Mjk1Mi04MzIwMgorICBCbG9jayBiaXRtYXAgYXQgODMyMDMgKCsyNTgpLCBJbm9kZSBiaXRtYXAgYXQgODMyMDQgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDgzMjA1LTgzMjM2ICgrMjYwKQorICA3MzIgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODMyMzctODM5NjgKKyAgRnJlZSBpbm9kZXM6IDIwNzM3LTIwOTkyCitHcm91cCA4MjogKEJsb2NrcyA4Mzk2OS04NDk5MikKKyAgQmxvY2sgYml0bWFwIGF0IDgzOTY5ICgrMCksIElub2RlIGJpdG1hcCBhdCA4Mzk3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDgzOTcxLTg0MDAyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg0MDAzLTg0OTkyCisgIEZyZWUgaW5vZGVzOiAyMDk5My0yMTI0OAorR3JvdXAgODM6IChCbG9ja3MgODQ5OTMtODYwMTYpCisgIEJsb2NrIGJpdG1hcCBhdCA4NDk5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODQ5OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4NDk5NS04NTAyNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4NTAyNy04NjAxNgorICBGcmVlIGlub2RlczogMjEyNDktMjE1MDQKK0dyb3VwIDg0OiAoQmxvY2tzIDg2MDE3LTg3MDQwKQorICBCbG9jayBiaXRtYXAgYXQgODYwMTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg2MDE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODYwMTktODYwNTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODYwNTEtODcwNDAKKyAgRnJlZSBpbm9kZXM6IDIxNTA1LTIxNzYwCitHcm91cCA4NTogKEJsb2NrcyA4NzA0MS04ODA2NCkKKyAgQmxvY2sgYml0bWFwIGF0IDg3MDQxICgrMCksIElub2RlIGJpdG1hcCBhdCA4NzA0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDg3MDQzLTg3MDc0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDg3MDc1LTg4MDY0CisgIEZyZWUgaW5vZGVzOiAyMTc2MS0yMjAxNgorR3JvdXAgODY6IChCbG9ja3MgODgwNjUtODkwODgpCisgIEJsb2NrIGJpdG1hcCBhdCA4ODA2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgODgwNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA4ODA2Ny04ODA5OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA4ODA5OS04OTA4OAorICBGcmVlIGlub2RlczogMjIwMTctMjIyNzIKK0dyb3VwIDg3OiAoQmxvY2tzIDg5MDg5LTkwMTEyKQorICBCbG9jayBiaXRtYXAgYXQgODkwODkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDg5MDkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgODkwOTEtODkxMjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogODkxMjMtOTAxMTIKKyAgRnJlZSBpbm9kZXM6IDIyMjczLTIyNTI4CitHcm91cCA4ODogKEJsb2NrcyA5MDExMy05MTEzNikKKyAgQmxvY2sgYml0bWFwIGF0IDkwMTEzICgrMCksIElub2RlIGJpdG1hcCBhdCA5MDExNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkwMTE1LTkwMTQ2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkwMTQ3LTkxMTM2CisgIEZyZWUgaW5vZGVzOiAyMjUyOS0yMjc4NAorR3JvdXAgODk6IChCbG9ja3MgOTExMzctOTIxNjApCisgIEJsb2NrIGJpdG1hcCBhdCA5MTEzNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTExMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5MTEzOS05MTE3MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5MTE3MS05MjE2MAorICBGcmVlIGlub2RlczogMjI3ODUtMjMwNDAKK0dyb3VwIDkwOiAoQmxvY2tzIDkyMTYxLTkzMTg0KQorICBCbG9jayBiaXRtYXAgYXQgOTIxNjEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDkyMTYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTIxNjMtOTIxOTQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTIxOTUtOTMxODQKKyAgRnJlZSBpbm9kZXM6IDIzMDQxLTIzMjk2CitHcm91cCA5MTogKEJsb2NrcyA5MzE4NS05NDIwOCkKKyAgQmxvY2sgYml0bWFwIGF0IDkzMTg1ICgrMCksIElub2RlIGJpdG1hcCBhdCA5MzE4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDkzMTg3LTkzMjE4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDkzMjE5LTk0MjA4CisgIEZyZWUgaW5vZGVzOiAyMzI5Ny0yMzU1MgorR3JvdXAgOTI6IChCbG9ja3MgOTQyMDktOTUyMzIpCisgIEJsb2NrIGJpdG1hcCBhdCA5NDIwOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTQyMTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NDIxMS05NDI0MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NDI0My05NTIzMgorICBGcmVlIGlub2RlczogMjM1NTMtMjM4MDgKK0dyb3VwIDkzOiAoQmxvY2tzIDk1MjMzLTk2MjU2KQorICBCbG9jayBiaXRtYXAgYXQgOTUyMzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk1MjM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTUyMzUtOTUyNjYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTUyNjctOTYyNTYKKyAgRnJlZSBpbm9kZXM6IDIzODA5LTI0MDY0CitHcm91cCA5NDogKEJsb2NrcyA5NjI1Ny05NzI4MCkKKyAgQmxvY2sgYml0bWFwIGF0IDk2MjU3ICgrMCksIElub2RlIGJpdG1hcCBhdCA5NjI1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDk2MjU5LTk2MjkwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDk2MjkxLTk3MjgwCisgIEZyZWUgaW5vZGVzOiAyNDA2NS0yNDMyMAorR3JvdXAgOTU6IChCbG9ja3MgOTcyODEtOTgzMDQpCisgIEJsb2NrIGJpdG1hcCBhdCA5NzI4MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTcyODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5NzI4My05NzMxNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5NzMxNS05ODMwNAorICBGcmVlIGlub2RlczogMjQzMjEtMjQ1NzYKK0dyb3VwIDk2OiAoQmxvY2tzIDk4MzA1LTk5MzI4KQorICBCbG9jayBiaXRtYXAgYXQgOTgzMDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDk4MzA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgOTgzMDctOTgzMzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogOTgzMzktOTkzMjgKKyAgRnJlZSBpbm9kZXM6IDI0NTc3LTI0ODMyCitHcm91cCA5NzogKEJsb2NrcyA5OTMyOS0xMDAzNTIpCisgIEJsb2NrIGJpdG1hcCBhdCA5OTMyOSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgOTkzMzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCA5OTMzMS05OTM2MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiA5OTM2My0xMDAzNTIKKyAgRnJlZSBpbm9kZXM6IDI0ODMzLTI1MDg4CitHcm91cCA5ODogKEJsb2NrcyAxMDAzNTMtMTAxMzc2KQorICBCbG9jayBiaXRtYXAgYXQgMTAwMzUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDAzNTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDAzNTUtMTAwMzg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMDM4Ny0xMDEzNzYKKyAgRnJlZSBpbm9kZXM6IDI1MDg5LTI1MzQ0CitHcm91cCA5OTogKEJsb2NrcyAxMDEzNzctMTAyNDAwKQorICBCbG9jayBiaXRtYXAgYXQgMTAxMzc3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDEzNzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDEzNzktMTAxNDEwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwMTQxMS0xMDI0MDAKKyAgRnJlZSBpbm9kZXM6IDI1MzQ1LTI1NjAwCitHcm91cCAxMDA6IChCbG9ja3MgMTAyNDAxLTEwMzQyNCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwMjQwMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTAyNDAyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTAyNDAzLTEwMjQzNCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDI0MzUtMTAzNDI0CisgIEZyZWUgaW5vZGVzOiAyNTYwMS0yNTg1NgorR3JvdXAgMTAxOiAoQmxvY2tzIDEwMzQyNS0xMDQ0NDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDM0MjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwMzQyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwMzQyNy0xMDM0NTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTAzNDU5LTEwNDQ0OAorICBGcmVlIGlub2RlczogMjU4NTctMjYxMTIKK0dyb3VwIDEwMjogKEJsb2NrcyAxMDQ0NDktMTA1NDcyKQorICBCbG9jayBiaXRtYXAgYXQgMTA0NDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDQ0NTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDQ0NTEtMTA0NDgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNDQ4My0xMDU0NzIKKyAgRnJlZSBpbm9kZXM6IDI2MTEzLTI2MzY4CitHcm91cCAxMDM6IChCbG9ja3MgMTA1NDczLTEwNjQ5NikKKyAgQmxvY2sgYml0bWFwIGF0IDEwNTQ3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA1NDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA1NDc1LTEwNTUwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDU1MDctMTA2NDk2CisgIEZyZWUgaW5vZGVzOiAyNjM2OS0yNjYyNAorR3JvdXAgMTA0OiAoQmxvY2tzIDEwNjQ5Ny0xMDc1MjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMDY0OTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwNjQ5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwNjQ5OS0xMDY1MzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA2NTMxLTEwNzUyMAorICBGcmVlIGlub2RlczogMjY2MjUtMjY4ODAKK0dyb3VwIDEwNTogKEJsb2NrcyAxMDc1MjEtMTA4NTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTA3NTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMDc1MjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMDc1MjMtMTA3NTU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEwNzU1NS0xMDg1NDQKKyAgRnJlZSBpbm9kZXM6IDI2ODgxLTI3MTM2CitHcm91cCAxMDY6IChCbG9ja3MgMTA4NTQ1LTEwOTU2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEwODU0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTA4NTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTA4NTQ3LTEwODU3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMDg1NzktMTA5NTY4CisgIEZyZWUgaW5vZGVzOiAyNzEzNy0yNzM5MgorR3JvdXAgMTA3OiAoQmxvY2tzIDEwOTU2OS0xMTA1OTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMDk1NjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEwOTU3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEwOTU3MS0xMDk2MDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTA5NjAzLTExMDU5MgorICBGcmVlIGlub2RlczogMjczOTMtMjc2NDgKK0dyb3VwIDEwODogKEJsb2NrcyAxMTA1OTMtMTExNjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTEwNTkzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTA1OTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTA1OTUtMTEwNjI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMDYyNy0xMTE2MTYKKyAgRnJlZSBpbm9kZXM6IDI3NjQ5LTI3OTA0CitHcm91cCAxMDk6IChCbG9ja3MgMTExNjE3LTExMjY0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDExMTYxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTExNjE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTExNjE5LTExMTY1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTE2NTEtMTEyNjQwCisgIEZyZWUgaW5vZGVzOiAyNzkwNS0yODE2MAorR3JvdXAgMTEwOiAoQmxvY2tzIDExMjY0MS0xMTM2NjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTI2NDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExMjY0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExMjY0My0xMTI2NzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTEyNjc1LTExMzY2NAorICBGcmVlIGlub2RlczogMjgxNjEtMjg0MTYKK0dyb3VwIDExMTogKEJsb2NrcyAxMTM2NjUtMTE0Njg4KQorICBCbG9jayBiaXRtYXAgYXQgMTEzNjY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTM2NjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTM2NjctMTEzNjk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExMzY5OS0xMTQ2ODgKKyAgRnJlZSBpbm9kZXM6IDI4NDE3LTI4NjcyCitHcm91cCAxMTI6IChCbG9ja3MgMTE0Njg5LTExNTcxMikKKyAgQmxvY2sgYml0bWFwIGF0IDExNDY4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE0NjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE0NjkxLTExNDcyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTQ3MjMtMTE1NzEyCisgIEZyZWUgaW5vZGVzOiAyODY3My0yODkyOAorR3JvdXAgMTEzOiAoQmxvY2tzIDExNTcxMy0xMTY3MzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTU3MTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExNTcxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExNTcxNS0xMTU3NDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE1NzQ3LTExNjczNgorICBGcmVlIGlub2RlczogMjg5MjktMjkxODQKK0dyb3VwIDExNDogKEJsb2NrcyAxMTY3MzctMTE3NzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTE2NzM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTY3MzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTY3MzktMTE2NzcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExNjc3MS0xMTc3NjAKKyAgRnJlZSBpbm9kZXM6IDI5MTg1LTI5NDQwCitHcm91cCAxMTU6IChCbG9ja3MgMTE3NzYxLTExODc4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDExNzc2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTE3NzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTE3NzYzLTExNzc5NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMTc3OTUtMTE4Nzg0CisgIEZyZWUgaW5vZGVzOiAyOTQ0MS0yOTY5NgorR3JvdXAgMTE2OiAoQmxvY2tzIDExODc4NS0xMTk4MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMTg3ODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDExODc4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDExODc4Ny0xMTg4MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTE4ODE5LTExOTgwOAorICBGcmVlIGlub2RlczogMjk2OTctMjk5NTIKK0dyb3VwIDExNzogKEJsb2NrcyAxMTk4MDktMTIwODMyKQorICBCbG9jayBiaXRtYXAgYXQgMTE5ODA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMTk4MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMTk4MTEtMTE5ODQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDExOTg0My0xMjA4MzIKKyAgRnJlZSBpbm9kZXM6IDI5OTUzLTMwMjA4CitHcm91cCAxMTg6IChCbG9ja3MgMTIwODMzLTEyMTg1NikKKyAgQmxvY2sgYml0bWFwIGF0IDEyMDgzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIwODM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIwODM1LTEyMDg2NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjA4NjctMTIxODU2CisgIEZyZWUgaW5vZGVzOiAzMDIwOS0zMDQ2NAorR3JvdXAgMTE5OiAoQmxvY2tzIDEyMTg1Ny0xMjI4ODApCisgIEJsb2NrIGJpdG1hcCBhdCAxMjE4NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyMTg1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyMTg1OS0xMjE4OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTIxODkxLTEyMjg4MAorICBGcmVlIGlub2RlczogMzA0NjUtMzA3MjAKK0dyb3VwIDEyMDogKEJsb2NrcyAxMjI4ODEtMTIzOTA0KQorICBCbG9jayBiaXRtYXAgYXQgMTIyODgxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjI4ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjI4ODMtMTIyOTE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyMjkxNS0xMjM5MDQKKyAgRnJlZSBpbm9kZXM6IDMwNzIxLTMwOTc2CitHcm91cCAxMjE6IChCbG9ja3MgMTIzOTA1LTEyNDkyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyMzkwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTIzOTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTIzOTA3LTEyMzkzOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjM5MzktMTI0OTI4CisgIEZyZWUgaW5vZGVzOiAzMDk3Ny0zMTIzMgorR3JvdXAgMTIyOiAoQmxvY2tzIDEyNDkyOS0xMjU5NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjQ5MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyNDkzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyNDkzMS0xMjQ5NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI0OTYzLTEyNTk1MgorICBGcmVlIGlub2RlczogMzEyMzMtMzE0ODgKK0dyb3VwIDEyMzogKEJsb2NrcyAxMjU5NTMtMTI2OTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTI1OTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMjU5NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMjU5NTUtMTI1OTg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEyNTk4Ny0xMjY5NzYKKyAgRnJlZSBpbm9kZXM6IDMxNDg5LTMxNzQ0CitHcm91cCAxMjQ6IChCbG9ja3MgMTI2OTc3LTEyODAwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDEyNjk3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTI2OTc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTI2OTc5LTEyNzAxMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjcwMTEtMTI4MDAwCisgIEZyZWUgaW5vZGVzOiAzMTc0NS0zMjAwMAorR3JvdXAgMTI1OiAoQmxvY2tzIDEyODAwMS0xMjkwMjQpCisgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDEyODAwMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMTI4MDAyLTEyODAwNworICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDEyODAwOC0xMjgyNTgKKyAgQmxvY2sgYml0bWFwIGF0IDEyODI1OSAoKzI1OCksIElub2RlIGJpdG1hcCBhdCAxMjgyNjAgKCsyNTkpCisgIElub2RlIHRhYmxlIGF0IDEyODI2MS0xMjgyOTIgKCsyNjApCisgIDczMiBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMjgyOTMtMTI5MDI0CisgIEZyZWUgaW5vZGVzOiAzMjAwMS0zMjI1NgorR3JvdXAgMTI2OiAoQmxvY2tzIDEyOTAyNS0xMzAwNDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxMjkwMjUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEyOTAyNiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEyOTAyNy0xMjkwNTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTI5MDU5LTEzMDA0OAorICBGcmVlIGlub2RlczogMzIyNTctMzI1MTIKK0dyb3VwIDEyNzogKEJsb2NrcyAxMzAwNDktMTMxMDcyKQorICBCbG9jayBiaXRtYXAgYXQgMTMwMDQ5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzAwNTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzAwNTEtMTMwMDgyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzMDA4My0xMzEwNzIKKyAgRnJlZSBpbm9kZXM6IDMyNTEzLTMyNzY4CitHcm91cCAxMjg6IChCbG9ja3MgMTMxMDczLTEzMjA5NikKKyAgQmxvY2sgYml0bWFwIGF0IDEzMTA3MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTMxMDc0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTMxMDc1LTEzMTEwNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzExMDctMTMyMDk2CisgIEZyZWUgaW5vZGVzOiAzMjc2OS0zMzAyNAorR3JvdXAgMTI5OiAoQmxvY2tzIDEzMjA5Ny0xMzMxMjApCisgIEJsb2NrIGJpdG1hcCBhdCAxMzIwOTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzMjA5OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzMjA5OS0xMzIxMzAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTMyMTMxLTEzMzEyMAorICBGcmVlIGlub2RlczogMzMwMjUtMzMyODAKK0dyb3VwIDEzMDogKEJsb2NrcyAxMzMxMjEtMTM0MTQ0KQorICBCbG9jayBiaXRtYXAgYXQgMTMzMTIxICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzMxMjIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzMxMjMtMTMzMTU0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzMzE1NS0xMzQxNDQKKyAgRnJlZSBpbm9kZXM6IDMzMjgxLTMzNTM2CitHcm91cCAxMzE6IChCbG9ja3MgMTM0MTQ1LTEzNTE2OCkKKyAgQmxvY2sgYml0bWFwIGF0IDEzNDE0NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTM0MTQ2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTM0MTQ3LTEzNDE3OCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzQxNzktMTM1MTY4CisgIEZyZWUgaW5vZGVzOiAzMzUzNy0zMzc5MgorR3JvdXAgMTMyOiAoQmxvY2tzIDEzNTE2OS0xMzYxOTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzUxNjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzNTE3MCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzNTE3MS0xMzUyMDIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTM1MjAzLTEzNjE5MgorICBGcmVlIGlub2RlczogMzM3OTMtMzQwNDgKK0dyb3VwIDEzMzogKEJsb2NrcyAxMzYxOTMtMTM3MjE2KQorICBCbG9jayBiaXRtYXAgYXQgMTM2MTkzICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzYxOTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzYxOTUtMTM2MjI2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzNjIyNy0xMzcyMTYKKyAgRnJlZSBpbm9kZXM6IDM0MDQ5LTM0MzA0CitHcm91cCAxMzQ6IChCbG9ja3MgMTM3MjE3LTEzODI0MCkKKyAgQmxvY2sgYml0bWFwIGF0IDEzNzIxNyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTM3MjE4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTM3MjE5LTEzNzI1MCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxMzcyNTEtMTM4MjQwCisgIEZyZWUgaW5vZGVzOiAzNDMwNS0zNDU2MAorR3JvdXAgMTM1OiAoQmxvY2tzIDEzODI0MS0xMzkyNjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxMzgyNDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDEzODI0MiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDEzODI0My0xMzgyNzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTM4Mjc1LTEzOTI2NAorICBGcmVlIGlub2RlczogMzQ1NjEtMzQ4MTYKK0dyb3VwIDEzNjogKEJsb2NrcyAxMzkyNjUtMTQwMjg4KQorICBCbG9jayBiaXRtYXAgYXQgMTM5MjY1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxMzkyNjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxMzkyNjctMTM5Mjk4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDEzOTI5OS0xNDAyODgKKyAgRnJlZSBpbm9kZXM6IDM0ODE3LTM1MDcyCitHcm91cCAxMzc6IChCbG9ja3MgMTQwMjg5LTE0MTMxMikKKyAgQmxvY2sgYml0bWFwIGF0IDE0MDI4OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQwMjkwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQwMjkxLTE0MDMyMiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDAzMjMtMTQxMzEyCisgIEZyZWUgaW5vZGVzOiAzNTA3My0zNTMyOAorR3JvdXAgMTM4OiAoQmxvY2tzIDE0MTMxMy0xNDIzMzYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNDEzMTMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0MTMxNCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0MTMxNS0xNDEzNDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQxMzQ3LTE0MjMzNgorICBGcmVlIGlub2RlczogMzUzMjktMzU1ODQKK0dyb3VwIDEzOTogKEJsb2NrcyAxNDIzMzctMTQzMzYwKQorICBCbG9jayBiaXRtYXAgYXQgMTQyMzM3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDIzMzggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDIzMzktMTQyMzcwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0MjM3MS0xNDMzNjAKKyAgRnJlZSBpbm9kZXM6IDM1NTg1LTM1ODQwCitHcm91cCAxNDA6IChCbG9ja3MgMTQzMzYxLTE0NDM4NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE0MzM2MSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQzMzYyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQzMzYzLTE0MzM5NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDMzOTUtMTQ0Mzg0CisgIEZyZWUgaW5vZGVzOiAzNTg0MS0zNjA5NgorR3JvdXAgMTQxOiAoQmxvY2tzIDE0NDM4NS0xNDU0MDgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNDQzODUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0NDM4NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0NDM4Ny0xNDQ0MTggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQ0NDE5LTE0NTQwOAorICBGcmVlIGlub2RlczogMzYwOTctMzYzNTIKK0dyb3VwIDE0MjogKEJsb2NrcyAxNDU0MDktMTQ2NDMyKQorICBCbG9jayBiaXRtYXAgYXQgMTQ1NDA5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDU0MTAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDU0MTEtMTQ1NDQyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0NTQ0My0xNDY0MzIKKyAgRnJlZSBpbm9kZXM6IDM2MzUzLTM2NjA4CitHcm91cCAxNDM6IChCbG9ja3MgMTQ2NDMzLTE0NzQ1NikKKyAgQmxvY2sgYml0bWFwIGF0IDE0NjQzMyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQ2NDM0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQ2NDM1LTE0NjQ2NiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDY0NjctMTQ3NDU2CisgIEZyZWUgaW5vZGVzOiAzNjYwOS0zNjg2NAorR3JvdXAgMTQ0OiAoQmxvY2tzIDE0NzQ1Ny0xNDg0ODApCisgIEJsb2NrIGJpdG1hcCBhdCAxNDc0NTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE0NzQ1OCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE0NzQ1OS0xNDc0OTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTQ3NDkxLTE0ODQ4MAorICBGcmVlIGlub2RlczogMzY4NjUtMzcxMjAKK0dyb3VwIDE0NTogKEJsb2NrcyAxNDg0ODEtMTQ5NTA0KQorICBCbG9jayBiaXRtYXAgYXQgMTQ4NDgxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNDg0ODIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNDg0ODMtMTQ4NTE0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE0ODUxNS0xNDk1MDQKKyAgRnJlZSBpbm9kZXM6IDM3MTIxLTM3Mzc2CitHcm91cCAxNDY6IChCbG9ja3MgMTQ5NTA1LTE1MDUyOCkKKyAgQmxvY2sgYml0bWFwIGF0IDE0OTUwNSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTQ5NTA2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTQ5NTA3LTE0OTUzOCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNDk1MzktMTUwNTI4CisgIEZyZWUgaW5vZGVzOiAzNzM3Ny0zNzYzMgorR3JvdXAgMTQ3OiAoQmxvY2tzIDE1MDUyOS0xNTE1NTIpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTA1MjkgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MDUzMCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MDUzMS0xNTA1NjIgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUwNTYzLTE1MTU1MgorICBGcmVlIGlub2RlczogMzc2MzMtMzc4ODgKK0dyb3VwIDE0ODogKEJsb2NrcyAxNTE1NTMtMTUyNTc2KQorICBCbG9jayBiaXRtYXAgYXQgMTUxNTUzICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTE1NTQgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTE1NTUtMTUxNTg2ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1MTU4Ny0xNTI1NzYKKyAgRnJlZSBpbm9kZXM6IDM3ODg5LTM4MTQ0CitHcm91cCAxNDk6IChCbG9ja3MgMTUyNTc3LTE1MzYwMCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1MjU3NyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTUyNTc4ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTUyNTc5LTE1MjYxMCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTI2MTEtMTUzNjAwCisgIEZyZWUgaW5vZGVzOiAzODE0NS0zODQwMAorR3JvdXAgMTUwOiAoQmxvY2tzIDE1MzYwMS0xNTQ2MjQpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTM2MDEgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1MzYwMiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1MzYwMy0xNTM2MzQgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTUzNjM1LTE1NDYyNAorICBGcmVlIGlub2RlczogMzg0MDEtMzg2NTYKK0dyb3VwIDE1MTogKEJsb2NrcyAxNTQ2MjUtMTU1NjQ4KQorICBCbG9jayBiaXRtYXAgYXQgMTU0NjI1ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTQ2MjYgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTQ2MjctMTU0NjU4ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1NDY1OS0xNTU2NDgKKyAgRnJlZSBpbm9kZXM6IDM4NjU3LTM4OTEyCitHcm91cCAxNTI6IChCbG9ja3MgMTU1NjQ5LTE1NjY3MikKKyAgQmxvY2sgYml0bWFwIGF0IDE1NTY0OSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTU1NjUwICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTU1NjUxLTE1NTY4MiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTU2ODMtMTU2NjcyCisgIEZyZWUgaW5vZGVzOiAzODkxMy0zOTE2OAorR3JvdXAgMTUzOiAoQmxvY2tzIDE1NjY3My0xNTc2OTYpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTY2NzMgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1NjY3NCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1NjY3NS0xNTY3MDYgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU2NzA3LTE1NzY5NgorICBGcmVlIGlub2RlczogMzkxNjktMzk0MjQKK0dyb3VwIDE1NDogKEJsb2NrcyAxNTc2OTctMTU4NzIwKQorICBCbG9jayBiaXRtYXAgYXQgMTU3Njk3ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNTc2OTggKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNTc2OTktMTU3NzMwICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE1NzczMS0xNTg3MjAKKyAgRnJlZSBpbm9kZXM6IDM5NDI1LTM5NjgwCitHcm91cCAxNTU6IChCbG9ja3MgMTU4NzIxLTE1OTc0NCkKKyAgQmxvY2sgYml0bWFwIGF0IDE1ODcyMSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTU4NzIyICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTU4NzIzLTE1ODc1NCAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNTg3NTUtMTU5NzQ0CisgIEZyZWUgaW5vZGVzOiAzOTY4MS0zOTkzNgorR3JvdXAgMTU2OiAoQmxvY2tzIDE1OTc0NS0xNjA3NjgpCisgIEJsb2NrIGJpdG1hcCBhdCAxNTk3NDUgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE1OTc0NiAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE1OTc0Ny0xNTk3NzggKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTU5Nzc5LTE2MDc2OAorICBGcmVlIGlub2RlczogMzk5MzctNDAxOTIKK0dyb3VwIDE1NzogKEJsb2NrcyAxNjA3NjktMTYxNzkyKQorICBCbG9jayBiaXRtYXAgYXQgMTYwNzY5ICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjA3NzAgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjA3NzEtMTYwODAyICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2MDgwMy0xNjE3OTIKKyAgRnJlZSBpbm9kZXM6IDQwMTkzLTQwNDQ4CitHcm91cCAxNTg6IChCbG9ja3MgMTYxNzkzLTE2MjgxNikKKyAgQmxvY2sgYml0bWFwIGF0IDE2MTc5MyAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTYxNzk0ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTYxNzk1LTE2MTgyNiAoKzIpCisgIDk5MCBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjE4MjctMTYyODE2CisgIEZyZWUgaW5vZGVzOiA0MDQ0OS00MDcwNAorR3JvdXAgMTU5OiAoQmxvY2tzIDE2MjgxNy0xNjM4NDApCisgIEJsb2NrIGJpdG1hcCBhdCAxNjI4MTcgKCswKSwgSW5vZGUgYml0bWFwIGF0IDE2MjgxOCAoKzEpCisgIElub2RlIHRhYmxlIGF0IDE2MjgxOS0xNjI4NTAgKCsyKQorICA5OTAgZnJlZSBibG9ja3MsIDI1NiBmcmVlIGlub2RlcywgMCBkaXJlY3RvcmllcworICBGcmVlIGJsb2NrczogMTYyODUxLTE2Mzg0MAorICBGcmVlIGlub2RlczogNDA3MDUtNDA5NjAKK0dyb3VwIDE2MDogKEJsb2NrcyAxNjM4NDEtMTY0ODY0KQorICBCbG9jayBiaXRtYXAgYXQgMTYzODQxICgrMCksIElub2RlIGJpdG1hcCBhdCAxNjM4NDIgKCsxKQorICBJbm9kZSB0YWJsZSBhdCAxNjM4NDMtMTYzODc0ICgrMikKKyAgOTkwIGZyZWUgYmxvY2tzLCAyNTYgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgRnJlZSBibG9ja3M6IDE2Mzg3NS0xNjQ4NjQKKyAgRnJlZSBpbm9kZXM6IDQwOTYxLTQxMjE2CitHcm91cCAxNjE6IChCbG9ja3MgMTY0ODY1LTE2NTUzNSkKKyAgQmxvY2sgYml0bWFwIGF0IDE2NDg2NSAoKzApLCBJbm9kZSBiaXRtYXAgYXQgMTY0ODY2ICgrMSkKKyAgSW5vZGUgdGFibGUgYXQgMTY0ODY3LTE2NDg5OCAoKzIpCisgIDYzNyBmcmVlIGJsb2NrcywgMjU2IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzCisgIEZyZWUgYmxvY2tzOiAxNjQ4OTktMTY1NTM1CisgIEZyZWUgaW5vZGVzOiA0MTIxNy00MTQ3MgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfcmVzaXplX2lub2RlL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvcl9yZXNpemVfaW5vZGUvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzgzYmFmCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3JfcmVzaXplX2lub2RlL25hbWUKQEAgLTAsMCArMSwyIEBACitmaWxlc3lzdGVtIHJlc2l6ZSB3aXRoIGEgcmVzaXplX2lub2RlIHByZXNlbnQKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3JfcmVzaXplX2lub2RlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy9yX3Jlc2l6ZV9pbm9kZS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUzZWIxOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9yX3Jlc2l6ZV9pbm9kZS9zY3JpcHQKQEAgLTAsMCArMSwxMDEgQEAKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEU7IHRoZW4KKworRlNDS19PUFQ9LXlmCitPVVQ9JHRlc3RfbmFtZS5sb2cKK2lmIFsgLWYgJHRlc3RfZGlyL2V4cGVjdC5neiBdOyB0aGVuCisJRVhQPSR0ZXN0X25hbWUudG1wCisJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC5neiA+ICRFWFAxCitlbHNlCisJRVhQPSR0ZXN0X2Rpci9leHBlY3QKK2ZpCisKK2NwIC9kZXYvbnVsbCAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtTyByZXNpemVfaW5vZGUgLW8gTGludXggLWIgMTAyNCAtZyAxMDI0IHRlc3QuaW1nIDE2Mzg0ID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtTyByZXNpemVfaW5vZGUgLW8gTGludXggLWIgMTAyNCAtZyAxMDI0ICRUTVBGSUxFIDE2Mzg0IDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCitlY2hvIHJlc2l6ZTJmcyB0ZXN0LmltZyA2NTUzNiA+PiAkT1VUCiskUkVTSVpFMkZTICRUTVBGSUxFIDY1NTM2IDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgbGFzdGNoZWNrIDAiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBoYXNoX3NlZWQgbnVsbCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIG1rZnNfdGltZSAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRUVU5FMkZTIC1jIDIwIC1VIGNsZWFyICRUTVBGSUxFICA+L2Rldi9udWxsIDI+JjEKKworZWNobyBkdW1wZTJmcyB0ZXN0LmltZyA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvQmxvY2sgYml0bWFwLiokL047cy9cbiAgSW5vZGUgYml0bWFwLywgSW5vZGUgYml0bWFwL2cnID4+ICRPVVQKKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iID4+ICRPVVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1PIHJlc2l6ZV9pbm9kZSAtbyBMaW51eCAtYiAxMDI0IC1nIDEwMjQgdGVzdC5pbWcgNjU1MzYgPj4gJE9VVAorJE1LRTJGUyAtcSAtRiAtTyByZXNpemVfaW5vZGUgLW8gTGludXggLWIgMTAyNCAtZyAxMDI0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCitlY2hvIHJlc2l6ZTJmcyB0ZXN0LmltZyAxNjM4NCA+PiAkT1VUCiskUkVTSVpFMkZTICRUTVBGSUxFIDE2Mzg0IDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgbGFzdGNoZWNrIDAiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBoYXNoX3NlZWQgbnVsbCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIG1rZnNfdGltZSAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRUVU5FMkZTIC1jIDIwIC1VIGNsZWFyICRUTVBGSUxFICA+L2Rldi9udWxsIDI+JjEKKworZWNobyBkdW1wZTJmcyB0ZXN0LmltZyA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvQmxvY2sgYml0bWFwLiokL047cy9cbiAgSW5vZGUgYml0bWFwLywgSW5vZGUgYml0bWFwL2cnID4+ICRPVVQKKworZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iID4+ICRPVVQKKworZWNobyByZXNpemUyZnMgdGVzdC5pbWcgMTY1NTM2ID4+ICRPVVQKKyRSRVNJWkUyRlMgJFRNUEZJTEUgMTY1NTM2IDI+JjEgfAorCXNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgPj4gJE9VVAorCiskRlNDSyAkRlNDS19PUFQgIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKKyRERUJVR0ZTIC1SICJzZXRfc3VwZXJfdmFsdWUgbGFzdGNoZWNrIDAiIC13ICRUTVBGSUxFID4vZGV2L251bGwgMj4mMQorJERFQlVHRlMgLVIgInNldF9zdXBlcl92YWx1ZSBoYXNoX3NlZWQgbnVsbCIgLXcgJFRNUEZJTEUgPi9kZXYvbnVsbCAyPiYxCiskREVCVUdGUyAtUiAic2V0X3N1cGVyX3ZhbHVlIG1rZnNfdGltZSAwIiAtdyAkVE1QRklMRSA+L2Rldi9udWxsIDI+JjEKKyRUVU5FMkZTIC1jIDIwIC1VIGNsZWFyICRUTVBGSUxFICA+L2Rldi9udWxsIDI+JjEKKworZWNobyBkdW1wZTJmcyB0ZXN0LmltZyA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvQmxvY2sgYml0bWFwLiokL047cy9cbiAgSW5vZGUgYml0bWFwLywgSW5vZGUgYml0bWFwL2cnID4+ICRPVVQKKworcm0gLWYgJFRNUEZJTEUKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IHNraXBwZWQiCitmaSAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9ydW5fZTJmc2NrIGIvZTJmc3Byb2dzL3Rlc3RzL3J1bl9lMmZzY2sKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYyOGQ5MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9ydW5fZTJmc2NrCkBAIC0wLDAgKzEsMTEyIEBACitpZiBbICIkREVTQ1JJUFRJT04ieCAhPSB4IF07IHRoZW4KKwl0ZXN0X2Rlc2NyaXB0aW9uPSIkREVTQ1JJUFRJT04iCitmaQoraWYgWyAiJElNQUdFInggPSB4IF07IHRoZW4KKwlJTUFHRT0kdGVzdF9kaXIvaW1hZ2UuZ3oKK2ZpCisKK2lmIFsgIiRGU0NLX09QVCJ4ID0geCBdOyB0aGVuCisJRlNDS19PUFQ9LXlmCitmaQorCitpZiBbICIkU0VDT05EX0ZTQ0tfT1BUInggPSB4IF07IHRoZW4KKwlTRUNPTkRfRlNDS19PUFQ9LXlmCitmaQorCitpZiBbICIkT1VUMSJ4ID0geCBdOyB0aGVuCisJT1VUMT0kdGVzdF9uYW1lLjEubG9nCitmaQorCitpZiBbICIkT1VUMiJ4ID0geCBdOyB0aGVuCisJT1VUMj0kdGVzdF9uYW1lLjIubG9nCitmaQorCitpZiBbICIkRVhQMSJ4ID0geCBdOyB0aGVuCisJaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0LjEuZ3ogXTsgdGhlbgorCQlFWFAxPSR0ZXN0X25hbWUuMS50bXAKKwkJZ3VuemlwIDwgJHRlc3RfZGlyL2V4cGVjdC4xLmd6ID4gJEVYUDEKKwllbHNlCisJCUVYUDE9JHRlc3RfZGlyL2V4cGVjdC4xCisJZmkKK2ZpCisKK2lmIFsgIiRFWFAyInggPSB4IF07IHRoZW4KKwlpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuMi5neiBdOyB0aGVuCisJCUVYUDI9JHRlc3RfbmFtZS4yLnRtcAorCQlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0LjIuZ3ogPiAkRVhQMgorCWVsc2UKKwkJRVhQMj0kdGVzdF9kaXIvZXhwZWN0LjIKKwlmaQorZmkKKworaWYgWyAiJFNLSVBfR1VOWklQIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlndW56aXAgPCAkSU1BR0UgPiAkVE1QRklMRQorZmkKKworY3AgL2Rldi9udWxsICRPVVQxCisKK2V2YWwgJFBSRVBfQ01ECisKKyRGU0NLICRGU0NLX09QVCAgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4gJE9VVDEubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQxLm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VUMS5uZXcgPj4gJE9VVDEKK3JtIC1mICRPVVQxLm5ldworCitpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkkRlNDSyAkU0VDT05EX0ZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQyLm5ldyAyPiYxIAorCXN0YXR1cz0kPworCWVjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUMi5uZXcKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQyLm5ldyA+ICRPVVQyCisJcm0gLWYgJE9VVDIubmV3CitmaQorCitldmFsICRBRlRFUl9DTUQKKworaWYgWyAiJFNLSVBfVkVSSUZZIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlybSAtZiAkdGVzdF9uYW1lLm9rICR0ZXN0X25hbWUuZmFpbGVkCisJY21wIC1zICRPVVQxICRFWFAxCisJc3RhdHVzMT0kPworCWlmIFsgIiRPTkVfUEFTU19PTkxZIiAhPSAidHJ1ZSIgXTsgdGhlbgorCQljbXAgLXMgJE9VVDIgJEVYUDIKKwkJc3RhdHVzMj0kPworCWVsc2UKKwkJc3RhdHVzMj0wCisJZmkKKwlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCWNtcCAtcyAkdGVzdF9uYW1lLjAubG9nCSR0ZXN0X2Rpci9leHBlY3QuMAorCQlzdGF0dXMzPSQ/CisJZWxzZQorCQlzdGF0dXMzPTAKKwlmaQorCisJaWYgWyAteiAiJHRlc3RfZGVzY3JpcHRpb24iIF0gOyB0aGVuCisJCWRlc2NyaXB0aW9uPSIkdGVzdF9uYW1lIgorCWVsc2UKKwkJZGVzY3JpcHRpb249IiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uIgorCWZpCisKKwlpZiBbICIkc3RhdHVzMSIgLWVxIDAgLWEgIiRzdGF0dXMyIiAtZXEgMCAtYSAiJHN0YXR1czMiIC1lcSAwIF0gOyB0aGVuCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogb2siCisJCXRvdWNoICR0ZXN0X25hbWUub2sKKwllbHNlCisJCWVjaG8gIiRkZXNjcmlwdGlvbjogZmFpbGVkIgorCQlybSAtZiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkUEFTU19aRVJPIiA9ICJ0cnVlIiBdOyB0aGVuCisJCQlkaWZmICRESUZGX09QVFMgJHRlc3RfZGlyL2V4cGVjdC4wIFwKKwkJCQkkdGVzdF9uYW1lLjAubG9nID4+ICR0ZXN0X25hbWUuZmFpbGVkCisJCWZpCisJCWRpZmYgJERJRkZfT1BUUyAkRVhQMSAkT1VUMSA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlpZiBbICIkT05FX1BBU1NfT05MWSIgIT0gInRydWUiIF07IHRoZW4KKwkJCWRpZmYgJERJRkZfT1BUUyAkRVhQMiAkT1VUMiA+PiAkdGVzdF9uYW1lLmZhaWxlZAorCQlmaQorCWZpCisJcm0gLWYgdG1wX2V4cGVjdAorZmkKKworaWYgWyAiJFNLSVBfQ0xFQU5VUCIgIT0gInRydWUiIF0gOyB0aGVuCisJdW5zZXQgSU1BR0UgRlNDS19PUFQgU0VDT05EX0ZTQ0tfT1BUIE9VVDEgT1VUMiBFWFAxIEVYUDIgCisJdW5zZXQgU0tJUF9WRVJJRlkgU0tJUF9DTEVBTlVQIFNLSVBfR1VOWklQIE9ORV9QQVNTX09OTFkgUFJFUF9DTUQKKwl1bnNldCBERVNDUklQVElPTiBTS0lQX1VOTElOSyBBRlRFUl9DTUQgUEFTU19aRVJPCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvcnVuX21rZTJmcyBiL2UyZnNwcm9ncy90ZXN0cy9ydW5fbWtlMmZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZWNhNDEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvcnVuX21rZTJmcwpAQCAtMCwwICsxLDI3IEBACitpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitpZiBbICIkRlNfU0laRSJ4ID0geCBdOyB0aGVuCisJRlNfU0laRT0xMDI0CitmaQorT1VUMT0kdGVzdF9uYW1lLjEubG9nCitPVVQyPSR0ZXN0X25hbWUuMi5sb2cKK1NLSVBfR1VOWklQPXRydWUKK09ORV9QQVNTX09OTFk9dHJ1ZQorTUtFMkZTX1NLSVBfUFJPR1JFU1M9dHJ1ZQorTUtFMkZTX1NLSVBfQ0hFQ0tfTVNHPXRydWUKK2V4cG9ydCBNS0UyRlNfU0tJUF9QUk9HUkVTUyBNS0UyRlNfU0tJUF9DSEVDS19NU0cKKz4gJFRNUEZJTEUKK1BSRVBfQ01EPSckTUtFMkZTIC1GIC1vIExpbnV4ICRNS0UyRlNfT1BUUyAkVE1QRklMRSAkRlNfU0laRSAyPiYxIHwKKwlzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiID4gJE9VVDE7CisJJERFQlVHRlMgLVIgZmVhdHVyZXMgJFRNUEZJTEUgMj4mMSB8CisJc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiA+PiAkT1VUMScKK0FGVEVSX0NNRD0nJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUMScKKy4gJGNtZF9kaXIvcnVuX2UyZnNjaworCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCXJtIC1mICR0ZXN0X25hbWUub2sgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICJza2lwcGVkIgorZmkgCisKK3Vuc2V0IERFU0NSSVBUSU9OIEZTX1NJWkUgTUtFMkZTX09QVFMgTUtFMkZTX1NLSVBfUFJPR1JFU1MgXAorCU1LRTJGU19ERVZJQ0VfU0VDVFNJWkUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9zY3JpcHRzL21rZHVwIGIvZTJmc3Byb2dzL3Rlc3RzL3NjcmlwdHMvbWtkdXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzQ4YTlmMAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9zY3JpcHRzL21rZHVwCkBAIC0wLDAgKzEsNDkgQEAKKyMhL2Jpbi9zaAorT1BUUz0iLU8gYmlnYWxsb2MgLUMgODE5MiIKK1NJWkU9NDA5NgorSU1HPS90bXAvZm9vLmltZworVE1QPSQobWt0ZW1wKQorU0laRV9BPTE1MDAwCitTSVpFX0I9NTAwMAorU0laRV9DPTIwMDAwCisKK0RFQlVHRlM9Li9kZWJ1Z2ZzL2RlYnVnZnMKK01LRTJGUz0uL21pc2MvbWtlMmZzCitGU0NLPS4vZTJmc2NrL2UyZnNjaworCitkZCBpZj0vZGV2L3plcm8gb2Y9JElNRyBicz0xayBjb3VudD0kU0laRQorZWNobyAkTUtFMkZTIC1GIC10IGV4dDQgLUwgdGVzdCAkT1BUUyB0ZXN0LmltZyAkU0laRQorJE1LRTJGUyAtRiAtdCBleHQ0IC1MIHRlc3QgJE9QVFMgJElNRyAkU0laRQorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVAgYnM9JFNJWkVfQSBjb3VudD0xID4mIC9kZXYvbnVsbAorZWNobyBXcml0aW5nICRTSVpFX0EgYnl0ZXMgdG8gYQorJERFQlVHRlMgLXcgLVIgIndyaXRlICRUTVAgYSIgJElNRworQkxLUz0kKC4vZGVidWdmcy9kZWJ1Z2ZzIC1SICJibG9ja3MgYSIgJElNRykKK2NwIC9kZXYvbnVsbCAkVE1QCitlY2hvICJSZWxlYXNpbmcgYmxvY2tzICRCTEtTIgorZm9yIGkgaW4gJEJMS1MgOyBkbyBlY2hvICJmcmVlYiAkaSIgPj4gJFRNUDsgZG9uZQorJERFQlVHRlMgLXcgJElNRyA8ICRUTVAgPiYgL2Rldi9udWxsCisKK2VjaG8gV3JpdGluZyAkU0laRV9CIGJ5dGVzIHRvIGIKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QIGJzPSRTSVpFX0IgY291bnQ9MSA+JiAvZGV2L251bGwKKyRERUJVR0ZTIC13IC1SICJ3cml0ZSAkVE1QIGIiICRJTUcKK2lmIFsgLW4gIiRTSVpFX0MiIF07IHRoZW4KKyAgICBCTEtTPSQoLi9kZWJ1Z2ZzL2RlYnVnZnMgLVIgImJsb2NrcyBiIiAkSU1HKQorICAgIGNwIC9kZXYvbnVsbCAkVE1QCisgICAgZWNobyAiUmVsZWFzaW5nIGJsb2NrcyAkQkxLUyIKKyAgICBmb3IgaSBpbiAkQkxLUyA7IGRvIGVjaG8gImZyZWViICRpIiA+PiAkVE1QOyBkb25lCisgICAgJERFQlVHRlMgLXcgJElNRyA8ICRUTVAgPiYgL2Rldi9udWxsCisKKyAgICBlY2hvIFdyaXRpbmcgJFNJWkVfQyBieXRlcyB0byBjCisgICAgZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVAgYnM9JFNJWkVfQyBjb3VudD0xID4mIC9kZXYvbnVsbAorICAgICRERUJVR0ZTIC13IC1SICJ3cml0ZSAkVE1QIGMiICRJTUcKK2ZpCitlY2hvICJzZXRfaW5vZGVfZmllbGQgYSBtdGltZSAyMDExMDcwNDAwMDAiID4gJFRNUAorZWNobyAic2V0X2lub2RlX2ZpZWxkIGIgbXRpbWUgMjAxMTA3MDUwMDAwIiA+PiAkVE1QCitpZiBbIC1uICIkU0laRV9DIiBdOyB0aGVuCisgICAgZWNobyAic2V0X2lub2RlX2ZpZWxkIGMgbXRpbWUgMjAxMTA3MDYwMDAwIiA+PiAkVE1QCitmaQorJERFQlVHRlMgLXcgJElNRyA8ICRUTVAgPiYgL2Rldi9udWxsCisKKyRGU0NLIC1meSAkSU1HCitybSAkVE1QCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy9zY3JpcHRzL3Jlc2l6ZV90ZXN0IGIvZTJmc3Byb2dzL3Rlc3RzL3NjcmlwdHMvcmVzaXplX3Rlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2M1ZTI2MAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy9zY3JpcHRzL3Jlc2l6ZV90ZXN0CkBAIC0wLDAgKzEsMTczIEBACisjIS9iaW4vc2gKKworIyBvbGQgZGlzdHJvcyBhcmUgbWlzc2luZyAidHJ1bmNhdGUiLCBlbXVsYXRlIGl0IHdpdGggImRkIgordHJ1bmNhdGUoKQoreworCVsgIiQxIiA9ICItcyIgXSAmJiBzaXplPSQyICYmIHNoaWZ0IDIKKworCWRkIGlmPS9kZXYvemVybyBvZj0kMSBicz0xIGNvdW50PTAgc2Vlaz0kc2l6ZSA+PiAkTE9HIDI+JjEKK30KKworcmVzaXplX3Rlc3QgKCkgeworREJHX0ZMQUdTPTYzCisKK2VjaG8gJHRlc3RfZGVzY3JpcHRpb24gc3RhcnRpbmcgPiAkTE9HCitybSAtZiAkVE1QRklMRQordG91Y2ggJFRNUEZJTEUKKworIyBWZXJpZnkgdGhhdCB0aGUgJFRNUCBmaWxlc3lzdGVtIGhhbmRsZXMgJFNJWkVfMiBzcGFyc2UgZmlsZXMuCisjIElmIHRoYXQgZmFpbHMsIHRyeSB0aGUgbG9jYWwgZmlsZXN5c3RlbSBpbnN0ZWFkLgoraWYgdHJ1bmNhdGUgLXMgJFNJWkVfMiAkVE1QRklMRSAyPiAvZGV2L251bGw7IHRoZW4KKwllY2hvICJ1c2luZyAkVE1QRklMRSIgPj4gJExPRworZWxzZQorCXJtICRUTVBGSUxFCisJZXhwb3J0IFRNUEZJTEU9JChta3RlbXAgLi8kdGVzdF9uYW1lLnRtcC5YWFhYWFgpCisJdG91Y2ggJFRNUEZJTEUKKwllY2hvICJ1c2luZyAkVE1QRklMRSIgPj4gJExPRworCWlmICEgdHJ1bmNhdGUgLXMgJFNJWkVfMiAkVE1QRklMRSA+PiAkTE9HIDI+JjE7IHRoZW4KKwkJcm0gJFRNUEZJTEUKKwkJcmV0dXJuIDExMQorCWZpCitmaQorPiAkVE1QRklMRQorCitlY2hvICRNS0UyRlMgJEZFQVRVUkVTIC1xRiAkVE1QRklMRSAkU0laRV8xID4+ICRMT0cKKyRNS0UyRlMgJEZFQVRVUkVTIC1xRiAkVE1QRklMRSAkU0laRV8xID4+ICRMT0cKKworT1VUX1RNUD0kKG1rdGVtcCAke1RNUERJUjotL3RtcH0vY3N1bS10bXAuWFhYWFhYKQorCitkYXRlID4gJE9VVF9UTVAKK2NhdCAkRTJGU0NLID4+ICRPVVRfVE1QCitlY2hvICRDUkNTVU0gJE9VVF9UTVAgPj4gJExPRyAyPiYxCitDU1VNXzE9JCgkQ1JDU1VNICRPVVRfVE1QKQorZWNobyBDaGVja3N1bSBpcyAkQ1NVTV8xID4+ICRMT0cKKworZWNobyBTZXR0aW5nIHVwIGZpbGUgc3lzdGVtID4+ICRMT0cKKyRERUJVR0ZTIC13ICRUTVBGSUxFICA+PiAkTE9HIDI+JjEgPDwgRU9GCitta2RpciB0ZXN0CitjZCB0ZXN0Cit3cml0ZSAkT1VUX1RNUCBlMmZzY2sKK2xzIC90ZXN0CitzdGF0IC90ZXN0L2UyZnNjaworcXVpdAorRU9GCitlY2hvICIgIiA+PiAkTE9HCisKK3JtIC1mICRPVVRfVE1QCisKK2VjaG8gJEZTQ0sgLWZ5ICRUTVBGSUxFID4+ICRMT0cgMj4mMSAKKyRGU0NLIC1meSAkVE1QRklMRSA+PiAkTE9HIDI+JjEgCisKK2VjaG8gJFJFU0laRTJGUyAkUkVTSVpFMkZTX09QVFMgLWQgJERCR19GTEFHUyAkVE1QRklMRSAkU0laRV8yID4+ICRMT0cgMj4mMQoraWYgISAkUkVTSVpFMkZTICRSRVNJWkUyRlNfT1BUUyAtZCAkREJHX0ZMQUdTICRUTVBGSUxFICRTSVpFXzIgPj4gJExPRyAyPiYxCit0aGVuCisJcmV0dXJuIDEKK2ZpCisKK2VjaG8gJEZTQ0sgLWZ5ICRUTVBGSUxFID4+ICRMT0cgMj4mMQoraWYgISAkRlNDSyAtZnkgJFRNUEZJTEUgPj4gJExPRyAyPiYxCit0aGVuCisJJERVTVBFMkZTICRUTVBGSUxFID4+ICRMT0cKKwlyZXR1cm4gMQorZmkKKworZWNobyAkREVCVUdGUyAtUiAiZHVtcCAvdGVzdC9lMmZzY2sgJE9VVF9UTVAiICRUTVBGSUxFID4+ICRMT0cgMj4mMQorJERFQlVHRlMgLVIgImR1bXAgL3Rlc3QvZTJmc2NrICRPVVRfVE1QIiAkVE1QRklMRSA+PiAkTE9HIDI+JjEKKworZWNobyAkQ1JDU1VNICRPVVRfVE1QID4+ICRMT0cgMj4mMQorQ1NVTV8yPSQoJENSQ1NVTSAkT1VUX1RNUCkKK2VjaG8gQ2hlY2tzdW0gaXMgJENTVU1fMiA+PiAkTE9HCisKK2lmIHRlc3QgIiRDU1VNXzEiICE9ICIkQ1NVTV8yIgordGhlbgorCXJldHVybiAxCitmaQorCisjIFVuY29tbWVudCB0byBncmFiIGV4dHJhIGRlYnVnZ2luZyBpbWFnZQorIworI212ICRUTVBGSUxFIC90bXAvZm9vLmltZworI3JldHVybiAwCisKK2VjaG8gJFJFU0laRTJGUyAkUkVTSVpFMkZTX09QVFMgLWQgJERCR19GTEFHUyAtTSAkVE1QRklMRSAkU0laRV8yID4+ICRMT0cgMj4mMQoraWYgISAkUkVTSVpFMkZTICRSRVNJWkUyRlNfT1BUUyAtZCAkREJHX0ZMQUdTIC1NICRUTVBGSUxFICRTSVpFXzIgPj4gJExPRyAyPiYxCit0aGVuCisJcmV0dXJuIDEKK2ZpCisKK2VjaG8gJEZTQ0sgLWZ5ICRUTVBGSUxFID4+ICRMT0cgMj4mMQoraWYgISAkRlNDSyAtZnkgJFRNUEZJTEUgPj4gJExPRyAyPiYxCit0aGVuCisJJERVTVBFMkZTICRUTVBGSUxFID4+ICRMT0cKKwlyZXR1cm4gMQorZmkKKworZWNobyAkREVCVUdGUyAtUiAiZHVtcCAvdGVzdC9lMmZzY2sgJE9VVF9UTVAiICRUTVBGSUxFID4+ICRMT0cgMj4mMQorJERFQlVHRlMgLVIgImR1bXAgL3Rlc3QvZTJmc2NrICRPVVRfVE1QIiAkVE1QRklMRSA+PiAkTE9HIDI+JjEKKworZWNobyAkQ1JDU1VNICRPVVRfVE1QID4+ICRMT0cgMj4mMQorQ1NVTV8yPSQoJENSQ1NVTSAkT1VUX1RNUCkKK2VjaG8gQ2hlY2tzdW0gaXMgJENTVU1fMiA+PiAkTE9HCisKK2lmIHRlc3QgIiRDU1VNXzEiICE9ICIkQ1NVTV8yIgordGhlbgorCXJldHVybiAxCitmaQorCitlY2hvICRSRVNJWkUyRlMgJFJFU0laRTJGU19PUFRTIC1kICREQkdfRkxBR1MgLU0gJFRNUEZJTEUgJFNJWkVfMiA+PiAkTE9HIDI+JjEKK2lmICEgJFJFU0laRTJGUyAkUkVTSVpFMkZTX09QVFMgLWQgJERCR19GTEFHUyAtTSAkVE1QRklMRSAkU0laRV8yID4+ICRMT0cgMj4mMQordGhlbgorCXJldHVybiAxCitmaQorCitlY2hvICRGU0NLIC1meSAkVE1QRklMRSA+PiAkTE9HIDI+JjEKK2lmICEgJEZTQ0sgLWZ5ICRUTVBGSUxFID4+ICRMT0cgMj4mMQordGhlbgorCSREVU1QRTJGUyAkVE1QRklMRSA+PiAkTE9HCisJcmV0dXJuIDEKK2ZpCisKK2VjaG8gJERFQlVHRlMgLVIgImR1bXAgL3Rlc3QvZTJmc2NrICRPVVRfVE1QIiAkVE1QRklMRSA+PiAkTE9HIDI+JjEKKyRERUJVR0ZTIC1SICJkdW1wIC90ZXN0L2UyZnNjayAkT1VUX1RNUCIgJFRNUEZJTEUgPj4gJExPRyAyPiYxCisKK2VjaG8gJENSQ1NVTSAkT1VUX1RNUCA+PiAkTE9HIDI+JjEKK0NTVU1fMj0kKCRDUkNTVU0gJE9VVF9UTVApCitlY2hvIENoZWNrc3VtIGlzICRDU1VNXzIgPj4gJExPRworCitpZiB0ZXN0ICIkQ1NVTV8xIiAhPSAiJENTVU1fMiIKK3RoZW4KKwlyZXR1cm4gMQorZmkKKworZWNobyAkUkVTSVpFMkZTICRSRVNJWkUyRlNfT1BUUyAtZCAkREJHX0ZMQUdTIC1NICRUTVBGSUxFICRTSVpFXzIgPj4gJExPRyAyPiYxCitpZiAhICRSRVNJWkUyRlMgJFJFU0laRTJGU19PUFRTIC1kICREQkdfRkxBR1MgLU0gJFRNUEZJTEUgJFNJWkVfMiA+PiAkTE9HIDI+JjEKK3RoZW4KKwlyZXR1cm4gMQorZmkKKworZWNobyAkRlNDSyAtZnkgJFRNUEZJTEUgPj4gJExPRyAyPiYxCitpZiAhICRGU0NLIC1meSAkVE1QRklMRSA+PiAkTE9HIDI+JjEKK3RoZW4KKwkkRFVNUEUyRlMgJFRNUEZJTEUgPj4gJExPRworCXJldHVybiAxCitmaQorCitlY2hvICRERUJVR0ZTIC1SICJkdW1wIC90ZXN0L2UyZnNjayAkT1VUX1RNUCIgJFRNUEZJTEUgPj4gJExPRyAyPiYxCiskREVCVUdGUyAtUiAiZHVtcCAvdGVzdC9lMmZzY2sgJE9VVF9UTVAiICRUTVBGSUxFID4+ICRMT0cgMj4mMQorCitlY2hvICRDUkNTVU0gJE9VVF9UTVAgPj4gJExPRyAyPiYxCitDU1VNXzI9JCgkQ1JDU1VNICRPVVRfVE1QKQorZWNobyBDaGVja3N1bSBpcyAkQ1NVTV8yID4+ICRMT0cKKworcm0gJE9VVF9UTVAKK3Vuc2V0IE9VVF9UTVAKKworcm0gLWYgJFRNUEZJTEUKKworaWYgdGVzdCAiJENTVU1fMSIgIT0gIiRDU1VNXzIiCit0aGVuCisJcmV0dXJuIDEKK2ZpCisKK3JldHVybiAwCisKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTliMjBlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWQvZXhwZWN0CkBAIC0wLDAgKzEsNyBAQAorY3JlYXRlIGZzIHdpdGhvdXQgbWV0YWRhdGFfY3N1bQorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK2NoYW5nZSBVVUlECitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQorY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmU4Y2JmYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkL3NjcmlwdApAQCAtMCwwICsxLDM0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJjaGFuZ2UgdXVpZCBvbiBhIHByZS1tZXRhZGF0YS1jc3VtIgorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiY3JlYXRlIGZzIHdpdGhvdXQgbWV0YWRhdGFfY3N1bSIgPj4gJE9VVAorJE1LRTJGUyAtTyBebWV0YWRhdGFfY3N1bSxebWV0YWRhdGFfY3N1bV9zZWVkIC1VIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hhbmdlIFVVSUQiID4+ICRPVVQKKyRUVU5FMkZTIC1VIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bS9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyNmU3MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkX21jc3VtL2V4cGVjdApAQCAtMCwwICsxLDcgQEAKK2NyZWF0ZSBmcyB3aXRoIG1ldGFkYXRhX2NzdW0KK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCitjaGFuZ2UgVVVJRAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEKK2NoZWNrIGZpbGVzeXN0ZW0KK2ZzY2sgcmV0dXJucyAwCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgyNmQyODcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bS9zY3JpcHQKQEAgLTAsMCArMSwzNCBAQAordGVzdF9kZXNjcmlwdGlvbj0iY2hhbmdlIHV1aWQgb24gYSBtZXRhZGF0YS1jc3VtIgorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiY3JlYXRlIGZzIHdpdGggbWV0YWRhdGFfY3N1bSIgPj4gJE9VVAorJE1LRTJGUyAtTyBtZXRhZGF0YV9jc3VtLF5tZXRhZGF0YV9jc3VtX3NlZWQgLVUgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGFuZ2UgVVVJRCIgPj4gJE9VVAorJFRVTkUyRlMgLVUgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkX21jc3VtX21vdW50ZWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW1fbW91bnRlZC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwZTlhOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkX21jc3VtX21vdW50ZWQvZXhwZWN0CkBAIC0wLDAgKzEsNyBAQAorY3JlYXRlIGZzIHdpdGggbWV0YWRhdGFfY3N1bQorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK2NoYW5nZSBVVUlECitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bV9tb3VudGVkL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkX21jc3VtX21vdW50ZWQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBlZmNhZTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bV9tb3VudGVkL3NjcmlwdApAQCAtMCwwICsxLDM0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJjaGFuZ2UgdXVpZCBvbiBhIG1ldGFkYXRhLWNzdW0iCisKK3RyYXAgInJtIC1yZiAkVE1QRklMRSAkVE1QRklMRS5jb25mIiBFWElUIElOVCBRVUlUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK3JtIC1yZiAkT1VUCisKKyMgVGVzdCBjb21tYW5kIGxpbmUgb3B0aW9uCitlY2hvICJjcmVhdGUgZnMgd2l0aCBtZXRhZGF0YV9jc3VtIiA+PiAkT1VUCiskTUtFMkZTIC1PIG1ldGFkYXRhX2NzdW0sXm1ldGFkYXRhX2NzdW1fc2VlZCAtVSA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMgLUYgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gImNoYW5nZSBVVUlEIiA+PiAkT1VUCitFWFQyRlNfUFJFVEVORF9SV19NT1VOVD0xICRUVU5FMkZTIC1VIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bV9zZWVkX21vdW50ZWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW1fc2VlZF9tb3VudGVkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmQyZDkxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW1fc2VlZF9tb3VudGVkL2V4cGVjdApAQCAtMCwwICsxLDIxIEBACitjcmVhdGUgZnMgd2l0aCBtZXRhZGF0YV9jc3VtCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworY2hhbmdlIFVVSUQKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCitjaGVjayBmaWxlc3lzdGVtCitmc2NrIHJldHVybnMgMAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK3R1cm4gb24gY3N1bSBzZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCitjaGVjayBmaWxlc3lzdGVtCitmc2NrIHJldHVybnMgMAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQorY2hhbmdlIFVVSUQKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxCitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKK2NoZWNrIGZpbGVzeXN0ZW0KK2ZzY2sgcmV0dXJucyAwCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQorQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tY3N1bV9zZWVkX21vdW50ZWQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW1fc2VlZF9tb3VudGVkL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNWIwYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbWNzdW1fc2VlZF9tb3VudGVkL3NjcmlwdApAQCAtMCwwICsxLDUyIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJjaGFuZ2UgdXVpZCBvbiBhIG1ldGFkYXRhLWNzdW0gd2l0aCBtY3N1bS1zZWVkIgorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiY3JlYXRlIGZzIHdpdGggbWV0YWRhdGFfY3N1bSIgPj4gJE9VVAorJE1LRTJGUyAtTyBtZXRhZGF0YV9jc3VtLF5tZXRhZGF0YV9jc3VtX3NlZWQgLVUgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGFuZ2UgVVVJRCIgPj4gJE9VVAorRVhUMkZTX1BSRVRFTkRfUldfTU9VTlQ9MSAkVFVORTJGUyAtVSBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gImNoZWNrIGZpbGVzeXN0ZW0iID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtZnkgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorZWNobyAiZnNjayByZXR1cm5zICQ/IiA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAidHVybiBvbiBjc3VtIHNlZWQiID4+ICRPVVQKK0VYVDJGU19QUkVURU5EX1JXX01PVU5UPTEgJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1TV9zZWVkICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gImNoYW5nZSBVVUlEIiA+PiAkT1VUCitFWFQyRlNfUFJFVEVORF9SV19NT1VOVD0xICRUVU5FMkZTIC1VIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tb3VudGVkL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2NoYW5nZV91dWlkX21vdW50ZWQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhOWIyMGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tb3VudGVkL2V4cGVjdApAQCAtMCwwICsxLDcgQEAKK2NyZWF0ZSBmcyB3aXRob3V0IG1ldGFkYXRhX2NzdW0KK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCitjaGFuZ2UgVVVJRAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEKK2NoZWNrIGZpbGVzeXN0ZW0KK2ZzY2sgcmV0dXJucyAwCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbW91bnRlZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9jaGFuZ2VfdXVpZF9tb3VudGVkL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MjdmZjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfY2hhbmdlX3V1aWRfbW91bnRlZC9zY3JpcHQKQEAgLTAsMCArMSwzNCBAQAordGVzdF9kZXNjcmlwdGlvbj0iY2hhbmdlIHV1aWQgb24gYSBtb3VudGVkIHByZS1tZXRhZGF0YS1jc3VtIgorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiY3JlYXRlIGZzIHdpdGhvdXQgbWV0YWRhdGFfY3N1bSIgPj4gJE9VVAorJE1LRTJGUyAtTyBebWV0YWRhdGFfY3N1bSxebWV0YWRhdGFfY3N1bV9zZWVkIC1VIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hhbmdlIFVVSUQiID4+ICRPVVQKK0VYVDJGU19QUkVURU5EX1JXX01PVU5UPTEgJFRVTkUyRlMgLVUgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rhbmdlcm91cy9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kYW5nZXJvdXMvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMzNmM2IKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kYW5nZXJvdXMvZXhwZWN0CkBAIC0wLDAgKzEsOTcgQEAKK3R1bmUyZnMgZGFuZ2Vyb3VzIHByb21wdHMgdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ0NSBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZworCitQbGVhc2UgcnVuIGUyZnNjayAtZiBvbiB0aGUgZmlsZXN5c3RlbS4KKworRXhpdCBzdGF0dXMgaXMgMQordHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtIHRlc3QuaW1nCitFeGl0IHN0YXR1cyBpcyAwCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNTI0Mjg4IDFrIGJsb2NrcyBhbmQgNjU1MzYgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDkKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorQ3JlYXRpbmcgNDQ1IGh1Z2UgZmlsZShzKSB3aXRoIDEwMjQgYmxvY2tzIGVhY2g6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMAordHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtIHRlc3QuaW1nCitFbmFibGluZyBjaGVja3N1bXMgY291bGQgdGFrZSBzb21lIHRpbWUuCitQcm9jZWVkIGFueXdheSAob3Igd2FpdCA1IHNlY29uZHMpID8gKHksbikgCitFeGl0IHN0YXR1cyBpcyAxCit0dW5lMmZzIC1JIDUxMiB0ZXN0LmltZworUmVzaXppbmcgaW5vZGVzIGNvdWxkIHRha2Ugc29tZSB0aW1lLgorUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgNSBzZWNvbmRzKSA/ICh5LG4pIAorRXhpdCBzdGF0dXMgaXMgMQordHVuZTJmcyAtVSByYW5kb20gdGVzdC5pbWcKK1NldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuCitQcm9jZWVkIGFueXdheSAob3Igd2FpdCA1IHNlY29uZHMpID8gKHksbikgCitFeGl0IHN0YXR1cyBpcyAxCisKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZworRW5hYmxpbmcgY2hlY2tzdW1zIGNvdWxkIHRha2Ugc29tZSB0aW1lLgorUHJvY2VlZCBhbnl3YXkgKG9yIHdhaXQgNSBzZWNvbmRzKSA/ICh5LG4pIAorUGxlYXNlIHJ1biBlMmZzY2sgLWZEIG9uIHRoZSBmaWxlc3lzdGVtLgorCitFeGl0IHN0YXR1cyBpcyAwCit0ZXN0X2ZpbGVzeXMgd2FzIG5vdCBjbGVhbmx5IHVubW91bnRlZCwgY2hlY2sgZm9yY2VkLgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyAzQTogT3B0aW1pemluZyBkaXJlY3RvcmllcworUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworCisKK3R1bmUyZnMgLUkgNTEyIHRlc3QuaW1nCitSZXNpemluZyBpbm9kZXMgY291bGQgdGFrZSBzb21lIHRpbWUuCitQcm9jZWVkIGFueXdheSAob3Igd2FpdCA1IHNlY29uZHMpID8gKHksbikgU2V0dGluZyBpbm9kZSBzaXplIDUxMgorRXhpdCBzdGF0dXMgaXMgMAordHVuZTJmcyAtVSBmMGYwZjBmMC1mMGYwLWYwZjAtZjBmMC1mMGYwZjBmMGYwZjAgdGVzdC5pbWcKK1NldHRpbmcgVVVJRCBvbiBhIGNoZWNrc3VtbWVkIGZpbGVzeXN0ZW0gY291bGQgdGFrZSBzb21lIHRpbWUuCitQcm9jZWVkIGFueXdheSAob3Igd2FpdCA1IHNlY29uZHMpID8gKHksbikgRXhpdCBzdGF0dXMgaXMgMAorQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLgorCisKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0xLDMgKzEsMyBAQAorLUZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmZjM2RhYTQtMTgwZC00ZjJiLWE2ZjItZjdhNWVmYjc5YmNmCistRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgdW5pbml0X2JnIGRpcl9ubGluayBleHRyYV9pc2l6ZQorLUlub2RlIHNpemU6CSAgICAgICAgICAyNTYKKytGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGYwZjBmMGYwLWYwZjAtZjBmMC1mMGYwLWYwZjBmMGYwZjBmMAorK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIGRpcl9ubGluayBleHRyYV9pc2l6ZSBtZXRhZGF0YV9jc3VtCisrSW5vZGUgc2l6ZToJICAgICAgICAgIDUxMgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGFuZ2Vyb3VzL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kYW5nZXJvdXMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWExMDMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGFuZ2Vyb3VzL25hbWUKQEAgLTAsMCArMSBAQAorZGFuZ2Vyb3VzIHR1bmUyZnMgb3BlcmF0aW9uIHByb21wdHMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rhbmdlcm91cy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kYW5nZXJvdXMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNzBhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kYW5nZXJvdXMvc2NyaXB0CkBAIC0wLDAgKzEsMTM0IEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxeZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIscmVzaXplX2lub2RlLDY0Yml0CisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMzJNCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJ0dW5lMmZzIGRhbmdlcm91cyBwcm9tcHRzIHRlc3QiID4gJE9VVAorCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLUYgLVQgZXh0NGggLVUgNmZjM2RhYTQtMTgwZC00ZjJiLWE2ZjItZjdhNWVmYjc5YmNmICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUIDI+JjEKKworIyB0cmlnZ2VyIGEgZmlsZXN5c3RlbSBjaGVjaworJERFQlVHRlMgLXcgLVIgJ3NzdiBtdGltZSBub3cnICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyRERUJVR0ZTIC13IC1SICdzc3YgbGFzdGNoZWNrIDIwMDAwJyAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCisKKyMgYWRkIG1jc3VtCitlY2hvICJ0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW0gdGVzdC5pbWciID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgY2hlY2sgZnMKKyRGU0NLIC1mIC15IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCisKKyMgYWRkIG1jc3VtCitlY2hvICJ0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW0gdGVzdC5pbWciID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAtVSA2ZmMzZGFhNC0xODBkLTRmMmItYTZmMi1mN2E1ZWZiNzliY2YgJFRNUEZJTEUgNTI0Mjg4ID4+ICRPVVQgMj4mMQorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYmVmb3JlCiskRlNDSyAkRlNDS19PUFQgLWYgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGFkZCBtY3N1bQorZWNobyAidHVuZTJmcyAtTyBtZXRhZGF0YV9jc3VtIHRlc3QuaW1nIiA+PiAkT1VUCitlY2hvICduJyB8IFRVTkUyRlNfRk9SQ0VfUFJPTVBUPTEgJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjaGFuZ2UgaW5vZGUgc2l6ZQorZWNobyAidHVuZTJmcyAtSSA1MTIgdGVzdC5pbWciID4+ICRPVVQKK2VjaG8gJ24nIHwgVFVORTJGU19GT1JDRV9QUk9NUFQ9MSAkVFVORTJGUyAtSSA1MTIgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgY2hhbmdlIHV1aWQKK2VjaG8gInR1bmUyZnMgLVUgcmFuZG9tIHRlc3QuaW1nIiA+PiAkT1VUCitlY2hvICduJyB8IFRVTkUyRlNfRk9SQ0VfUFJPTVBUPTEgJFRVTkUyRlMgLVUgcmFuZG9tICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGNoZWNrCiskRlNDSyAteUQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYWZ0ZXIKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGVncmVwICdeKEZpbGVzeXN0ZW0gZmVhdHVyZXM6fEZpbGVzeXN0ZW0gVVVJRDp8SW5vZGUgc2l6ZTopJyA+ICRPVVQuYmVmb3JlCisKKyMgYWRkIG1jc3VtCitlY2hvICJ0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW0gdGVzdC5pbWciID4+ICRPVVQKK2VjaG8gJ3knIHwgVFVORTJGU19GT1JDRV9QUk9NUFQ9MSAkVFVORTJGUyAtTyBtZXRhZGF0YV9jc3VtICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorJEZTQ0sgLXlEIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBjaGFuZ2UgaW5vZGUgc2l6ZQorZWNobyAidHVuZTJmcyAtSSA1MTIgdGVzdC5pbWciID4+ICRPVVQKK2VjaG8gJ3knIHwgVFVORTJGU19GT1JDRV9QUk9NUFQ9MSAkVFVORTJGUyAtSSA1MTIgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgY2hhbmdlIHV1aWQKK2VjaG8gInR1bmUyZnMgLVUgZjBmMGYwZjAtZjBmMC1mMGYwLWYwZjAtZjBmMGYwZjBmMGYwIHRlc3QuaW1nIiA+PiAkT1VUCitlY2hvICd5JyB8IFRVTkUyRlNfRk9SQ0VfUFJPTVBUPTEgJFRVTkUyRlMgLVUgZjBmMGYwZjAtZjBmMC1mMGYwLWYwZjAtZjBmMGYwZjBmMGYwICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGNoZWNrCiskRlNDSyAteUQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZWdyZXAgJ14oRmlsZXN5c3RlbSBmZWF0dXJlczp8RmlsZXN5c3RlbSBVVUlEOnxJbm9kZSBzaXplOiknID4gJE9VVC5hZnRlcgorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtdSAkT1VULmJlZm9yZSAkT1VULmFmdGVyIHwgdGFpbCAtbiArMyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRSAkT1VULmJlZm9yZSAkT1VULmFmdGVyICRDT05GCisKKyMKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorIworCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIC1lICdzL3Rlc3RfZmlsZXN5czouKi8vZycgPCAkT1VUID4gJE9VVC5uZXcKK212ICRPVVQubmV3ICRPVVQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9jaGFuZ2VkX2NzdW1fc2VlZC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDBmMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9jaGFuZ2VkX2NzdW1fc2VlZC9leHBlY3QKQEAgLTAsMCArMSwxNyBAQAorY3JlYXRlIGZzIHdpdGhvdXQgY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YwordHVybiBvbiBjc3VtX3NlZWQKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKK2NoYW5nZSBVVUlECitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQorQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCitjaGVjayBmaWxlc3lzdGVtCitmc2NrIHJldHVybnMgMAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQordHVybiBvZmYgY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIGE2MWJlMmUwLWIzYjgtNGZiYy1iMmNkLWQ4NGIzMDZiOTczMQorY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY2hhbmdlZF9jc3VtX3NlZWQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk0NDM3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkL3NjcmlwdApAQCAtMCwwICsxLDQ3IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJkaXNhYmxlIGNzdW0gc2VlZCB2aWEgdHVuZTJmcyBhZnRlciBjaGFuZ2luZyB1dWlkIgorCit0cmFwICJybSAtcmYgJFRNUEZJTEUgJFRNUEZJTEUuY29uZiIgRVhJVCBJTlQgUVVJVAorZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitybSAtcmYgJE9VVAorCisjIFRlc3QgY29tbWFuZCBsaW5lIG9wdGlvbgorZWNobyAiY3JlYXRlIGZzIHdpdGhvdXQgY3N1bV9zZWVkIiA+PiAkT1VUCiskTUtFMkZTIC1PIG1ldGFkYXRhX2NzdW0sXm1ldGFkYXRhX2NzdW1fc2VlZCAtVSA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMgLUYgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gInR1cm4gb24gY3N1bV9zZWVkIiA+PiAkT1VUCiskVFVORTJGUyAtTyBtZXRhZGF0YV9jc3VtX3NlZWQgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gImNoYW5nZSBVVUlEIiA+PiAkT1VUCiskVFVORTJGUyAtVSBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gImNoZWNrIGZpbGVzeXN0ZW0iID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtZnkgJFRNUEZJTEUgPiAvZGV2L251bGwgMj4mMQorZWNobyAiZnNjayByZXR1cm5zICQ/IiA+PiAkT1VUCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAidHVybiBvZmYgY3N1bV9zZWVkIiA+PiAkT1VUCiskVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bV9zZWVkICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY2hhbmdlZF9jc3VtX3NlZWRfbW91bnRlZC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkX21vdW50ZWQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ODQ5NGIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkX21vdW50ZWQvZXhwZWN0CkBAIC0wLDAgKzEsMTkgQEAKK2NyZWF0ZSBmcyB3aXRob3V0IGNzdW1fc2VlZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK3R1cm4gb24gY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCitjaGFuZ2UgVVVJRAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQorY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxCitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKK3R1cm4gb2ZmIGNzdW1fc2VlZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICBhNjFiZTJlMC1iM2I4LTRmYmMtYjJjZC1kODRiMzA2Yjk3MzEKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQorY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxCitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY2hhbmdlZF9jc3VtX3NlZWRfbW91bnRlZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkX21vdW50ZWQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNiZTZkZDkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NoYW5nZWRfY3N1bV9zZWVkX21vdW50ZWQvc2NyaXB0CkBAIC0wLDAgKzEsNDcgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImRpc2FibGUgY3N1bSBzZWVkIG9uIG1vdW50ZWQgZnMgdmlhIHR1bmUyZnMgYWZ0ZXIgY2hhbmdpbmcgdXVpZCIKKwordHJhcCAicm0gLXJmICRUTVBGSUxFICRUTVBGSUxFLmNvbmYiIEVYSVQgSU5UIFFVSVQKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorcm0gLXJmICRPVVQKKworIyBUZXN0IGNvbW1hbmQgbGluZSBvcHRpb24KK2VjaG8gImNyZWF0ZSBmcyB3aXRob3V0IGNzdW1fc2VlZCIgPj4gJE9VVAorJE1LRTJGUyAtTyBtZXRhZGF0YV9jc3VtLF5tZXRhZGF0YV9jc3VtX3NlZWQgLVUgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJ0dXJuIG9uIGNzdW1fc2VlZCIgPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGFuZ2UgVVVJRCIgPj4gJE9VVAorJFRVTkUyRlMgLVUgYTYxYmUyZTAtYjNiOC00ZmJjLWIyY2QtZDg0YjMwNmI5NzMxICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gInR1cm4gb2ZmIGNzdW1fc2VlZCIgPj4gJE9VVAorRVhUMkZTX1BSRVRFTkRfUldfTU9VTlQ9MSAkVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bV9zZWVkICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY3N1bV9zZWVkL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY3N1bV9zZWVkL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmM1MGZlCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9jc3VtX3NlZWQvZXhwZWN0CkBAIC0wLDAgKzEsMTQgQEAKK2NyZWF0ZSBmcyB3aXRob3V0IGNzdW1fc2VlZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK3R1cm4gb24gY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCitjaGVjayBmaWxlc3lzdGVtCitmc2NrIHJldHVybnMgMAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQordHVybiBvZmYgY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NzdW1fc2VlZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX2NzdW1fc2VlZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjhmZGM1YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfY3N1bV9zZWVkL3NjcmlwdApAQCAtMCwwICsxLDQzIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJkaXNhYmxlIGNzdW0gc2VlZCB2aWEgdHVuZTJmcyIKKwordHJhcCAicm0gLXJmICRUTVBGSUxFICRUTVBGSUxFLmNvbmYiIEVYSVQgSU5UIFFVSVQKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorcm0gLXJmICRPVVQKKworIyBUZXN0IGNvbW1hbmQgbGluZSBvcHRpb24KK2VjaG8gImNyZWF0ZSBmcyB3aXRob3V0IGNzdW1fc2VlZCIgPj4gJE9VVAorJE1LRTJGUyAtTyBtZXRhZGF0YV9jc3VtLF5tZXRhZGF0YV9jc3VtX3NlZWQgLVUgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJ0dXJuIG9uIGNzdW1fc2VlZCIgPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bV9zZWVkICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2VjaG8gInR1cm4gb2ZmIGNzdW1fc2VlZCIgPj4gJE9VVAorJFRVTkUyRlMgLU8gXm1ldGFkYXRhX2NzdW1fc2VlZCAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW0vZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNGYyNmEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtL2V4cGVjdApAQCAtMCwwICsxLDQ1IEBACit0dW5lMmZzIF5tZXRhZGF0YV9jc3VtIHRlc3QKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA1MjQyODggMWsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwk4MTkzLCAyNDU3NywgNDA5NjEsIDU3MzQ1LCA3MzcyOSwgMjA0ODAxLCAyMjExODUsIDQwMTQwOQorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA0NzcgaHVnZSBmaWxlKHMpIHdpdGggMTAyNCBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCit0dW5lMmZzIC1PIF5tZXRhZGF0YV9jc3VtIHRlc3QuaW1nCitFeGl0IHN0YXR1cyBpcyAwCitDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6CitAQCAtMiw3ICsyLDcgQEAKKyBMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorIEZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCisgRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorLUZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgZGlyX25saW5rIGV4dHJhX2lzaXplIG1ldGFkYXRhX2NzdW0KKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKyBEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIHVzZXJfeGF0dHIgYWNsCisgRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorIEVycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0BAIC0zMyw3ICszMyw2IEBACisgSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CisgRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorIEpvdXJuYWwgYmFja3VwOiAgICAgICAgICAgaW5vZGUgYmxvY2tzCistQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKKyBKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorIEpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgMTZNCisgSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAxNjM4NAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOWRjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorZGlzYWJsZSBtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMWIzYjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtL3NjcmlwdApAQCAtMCwwICsxLDY3IEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsNjRiaXQsbWV0YWRhdGFfY3N1bQorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInR1bmUyZnMgXm1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyByZW1vdmUgbWNzdW0KK2VjaG8gInR1bmUyZnMgLU8gXm1ldGFkYXRhX2NzdW0gdGVzdC5pbWciID4+ICRPVVQKKyRUVU5FMkZTIC1PIF5tZXRhZGF0YV9jc3VtICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYWZ0ZXIKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1fbm9pbml0YmcvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV9ub2luaXRiZy9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAyMjYzMQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1fbm9pbml0YmcvZXhwZWN0CkBAIC0wLDAgKzEsNjggQEAKK3R1bmUyZnMgXm1ldGFkYXRhX2NzdW0gdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ3NyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3R1bmUyZnMgLU8gXm1ldGFkYXRhX2NzdW0sXnVuaW5pdF9iZyB0ZXN0LmltZworRXhpdCBzdGF0dXMgaXMgMAorQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTIsNyArMiw3IEBACisgTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KKyBGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworIEZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIGRpcl9ubGluayBleHRyYV9pc2l6ZSBtZXRhZGF0YV9jc3VtCisrRmlsZXN5c3RlbSBmZWF0dXJlczogICAgICBoYXNfam91cm5hbCBleHRfYXR0ciByZXNpemVfaW5vZGUgZGlyX2luZGV4IGZpbGV0eXBlIGV4dGVudCA2NGJpdCBmbGV4X2JnIHNwYXJzZV9zdXBlciBsYXJnZV9maWxlIGh1Z2VfZmlsZSBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKyBEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIHVzZXJfeGF0dHIgYWNsCisgRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorIEVycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0BAIC0zMyw3ICszMyw2IEBACisgSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CisgRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorIEpvdXJuYWwgYmFja3VwOiAgICAgICAgICAgaW5vZGUgYmxvY2tzCistQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKKyBKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorIEpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgMTZNCisgSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAxNjM4NAorQEAgLTQ3LDE4ICs0NiwxOCBAQAorICAgQmxvY2sgYml0bWFwIGF0IDI2MiAoKzI2MSkKKyAgIElub2RlIGJpdG1hcCBhdCAyNzggKCsyNzcpCisgICBJbm9kZSB0YWJsZSBhdCAyOTQtNTQ5ICgrMjkzKQorLSAgMjEgZnJlZSBibG9ja3MsIDUzNiBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcywgNTM2IHVudXNlZCBpbm9kZXMKKysgIDIxIGZyZWUgYmxvY2tzLCA1MzYgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMKKyAgIEZyZWUgYmxvY2tzOiA0NDEzLTQ0MzMKKyAgIEZyZWUgaW5vZGVzOiA0ODktMTAyNAorLUdyb3VwIDE6IChCbG9ja3MgODE5My0xNjM4NCkgW0lOT0RFX1VOSU5JVF0KKytHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpCisgICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4MTk0LTgxOTcKKyAgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgODE5OC04NDUzCisgICBCbG9jayBiaXRtYXAgYXQgMjYzIChiZyAjMCArIDI2MikKKyAgIElub2RlIGJpdG1hcCBhdCAyNzkgKGJnICMwICsgMjc4KQorICAgSW5vZGUgdGFibGUgYXQgNTUwLTgwNSAoYmcgIzAgKyA1NDkpCistICAwIGZyZWUgYmxvY2tzLCAxMDI0IGZyZWUgaW5vZGVzLCAwIGRpcmVjdG9yaWVzLCAxMDI0IHVudXNlZCBpbm9kZXMKKysgIDAgZnJlZSBibG9ja3MsIDEwMjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgIEZyZWUgYmxvY2tzOiAKKyAgIEZyZWUgaW5vZGVzOiAxMDI1LTIwNDgKKy1Hcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTI0NTc2KSBbSU5PREVfVU5JTklUXQorK0dyb3VwIDI6IChCbG9ja3MgMTYzODUtMjQ1NzYpCisgICBCbG9jayBiaXRtYXAgYXQgMjY0IChiZyAjMCArIDI2MykKKyAgIElub2RlIGJpdG1hcCBhdCAyODAgKGJnICMwICsgMjc5KQorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV9ub2luaXRiZy9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV9ub2luaXRiZy9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiOTA2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtX25vaW5pdGJnL25hbWUKQEAgLTAsMCArMSBAQAorZGlzYWJsZSBtZXRhZGF0YV9jc3VtIGFuZCB1bmluaXRfYmcKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1fbm9pbml0Ymcvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV9ub2luaXRiZy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0OTg2NAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1fbm9pbml0Ymcvc2NyaXB0CkBAIC0wLDAgKzEsNjcgQEAKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLHJlc2l6ZV9pbm9kZSw2NGJpdCxtZXRhZGF0YV9jc3VtCisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMAorCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMU0KKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyAidHVuZTJmcyBebWV0YWRhdGFfY3N1bSB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYmVmb3JlCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIHJlbW92ZSBtY3N1bQorZWNobyAidHVuZTJmcyAtTyBebWV0YWRhdGFfY3N1bSxedW5pbml0X2JnIHRlc3QuaW1nIiA+PiAkT1VUCiskVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bSxedW5pbml0X2JnICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGR1bXAgYW5kIGNoZWNrCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnXkdyb3VwIDA6JyAtQjk5IC1BMjAgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+ICRPVVQuYWZ0ZXIKK2VjaG8gIkNoYW5nZSBpbiBGUyBtZXRhZGF0YToiID4+ICRPVVQKK2RpZmYgLXUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHRhaWwgLW4gKzMgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUgJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1feWVzaW5pdGJnL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1feWVzaW5pdGJnL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjNkNmMwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV95ZXNpbml0YmcvZXhwZWN0CkBAIC0wLDAgKzEsNDUgQEAKK3R1bmUyZnMgXm1ldGFkYXRhX2NzdW0gdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ3NyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3R1bmUyZnMgLU8gXm1ldGFkYXRhX2NzdW0sdW5pbml0X2JnIHRlc3QuaW1nCitFeGl0IHN0YXR1cyBpcyAwCitDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6CitAQCAtMiw3ICsyLDcgQEAKKyBMYXN0IG1vdW50ZWQgb246ICAgICAgICAgIDxub3QgYXZhaWxhYmxlPgorIEZpbGVzeXN0ZW0gbWFnaWMgbnVtYmVyOiAgMHhFRjUzCisgRmlsZXN5c3RlbSByZXZpc2lvbiAjOiAgICAxIChkeW5hbWljKQorLUZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgZGlyX25saW5rIGV4dHJhX2lzaXplIG1ldGFkYXRhX2NzdW0KKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKyBEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIHVzZXJfeGF0dHIgYWNsCisgRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorIEVycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0BAIC0zMyw3ICszMyw2IEBACisgSm91cm5hbCBpbm9kZTogICAgICAgICAgICA4CisgRGVmYXVsdCBkaXJlY3RvcnkgaGFzaDogICBoYWxmX21kNAorIEpvdXJuYWwgYmFja3VwOiAgICAgICAgICAgaW5vZGUgYmxvY2tzCistQ2hlY2tzdW0gdHlwZTogICAgICAgICAgICBjcmMzMmMKKyBKb3VybmFsIGZlYXR1cmVzOiAgICAgICAgIChub25lKQorIEpvdXJuYWwgc2l6ZTogICAgICAgICAgICAgMTZNCisgSm91cm5hbCBsZW5ndGg6ICAgICAgICAgICAxNjM4NAorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tY3N1bV95ZXNpbml0YmcvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1feWVzaW5pdGJnL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgwZGUxYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1feWVzaW5pdGJnL25hbWUKQEAgLTAsMCArMSBAQAorZGlzYWJsZSBtZXRhZGF0YV9jc3VtIGFuZCBlbmFibGUgdW5pbml0X2JnCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtX3llc2luaXRiZy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21jc3VtX3llc2luaXRiZy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwNDA0MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWNzdW1feWVzaW5pdGJnL3NjcmlwdApAQCAtMCwwICsxLDY3IEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsNjRiaXQsbWV0YWRhdGFfY3N1bQorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gInR1bmUyZnMgXm1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyByZW1vdmUgbWNzdW0KK2VjaG8gInR1bmUyZnMgLU8gXm1ldGFkYXRhX2NzdW0sdW5pbml0X2JnIHRlc3QuaW1nIiA+PiAkT1VUCiskVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bSx1bmluaXRfYmcgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgZHVtcCBhbmQgY2hlY2sKKyREVU1QRTJGUyAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdeR3JvdXAgMDonIC1COTkgLUEyMCB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkID4gJE9VVC5hZnRlcgorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtdSAkT1VULmJlZm9yZSAkT1VULmFmdGVyIHwgdGFpbCAtbiArMyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRSAkT1VULmJlZm9yZSAkT1VULmFmdGVyCisKKyMKKyMgRG8gdGhlIHZlcmlmaWNhdGlvbgorIworCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiIC1lICdzL3Rlc3RfZmlsZXN5czouKi8vZycgPCAkT1VUID4gJE9VVC5uZXcKK212ICRPVVQubmV3ICRPVVQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKK2ZpCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tZXRhX2NzdW1fYW5kX3NlZWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZGlzYWJsZV9tZXRhX2NzdW1fYW5kX3NlZWQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYzljY2EKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21ldGFfY3N1bV9hbmRfc2VlZC9leHBlY3QKQEAgLTAsMCArMSwxNCBAQAorY3JlYXRlIGZzIHdpdGhvdXQgY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YwordHVybiBvbiBjc3VtX3NlZWQKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKK2NoZWNrIGZpbGVzeXN0ZW0KK2ZzY2sgcmV0dXJucyAwCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCit0dXJuIG9mZiBtZXRhZGF0YV9jc3VtCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21ldGFfY3N1bV9hbmRfc2VlZC9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9kaXNhYmxlX21ldGFfY3N1bV9hbmRfc2VlZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWViMThlMwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Rpc2FibGVfbWV0YV9jc3VtX2FuZF9zZWVkL3NjcmlwdApAQCAtMCwwICsxLDQ0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJkaXNhYmxlIGNzdW0gc2VlZCBhbmQgY3N1bXMgdmlhIHR1bmUyZnMiCisKK3RyYXAgInJtIC1yZiAkVE1QRklMRSAkVE1QRklMRS5jb25mIiBFWElUIElOVCBRVUlUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK3JtIC1yZiAkT1VUCisKKyMgVGVzdCBjb21tYW5kIGxpbmUgb3B0aW9uCitlY2hvICJjcmVhdGUgZnMgd2l0aG91dCBjc3VtX3NlZWQiID4+ICRPVVQKKyRNS0UyRlMgLU8gbWV0YWRhdGFfY3N1bSxebWV0YWRhdGFfY3N1bV9zZWVkIC1VIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAidHVybiBvbiBjc3VtX3NlZWQiID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJ0dXJuIG9mZiBtZXRhZGF0YV9jc3VtIiA+PiAkT1VUCiskVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZ3JlcCAnbWV0YWRhdGFfY3N1bScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9jc3VtX3NlZWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX2NzdW1fc2VlZC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdkOWE0ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9jc3VtX3NlZWQvZXhwZWN0CkBAIC0wLDAgKzEsMTIgQEAKK2NyZWF0ZSBmcyB3aXRob3V0IGNzdW1fc2VlZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK3R1cm4gb24gY3N1bV9zZWVkCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YworQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCitjaGFuZ2UgdXVpZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICAxZGQxMzZjNi1lNDdhLTQ4MzMtOWJmNS01MTlmOGFhY2FiZTQKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQorY2hlY2sgZmlsZXN5c3RlbQorZnNjayByZXR1cm5zIDAKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgMWRkMTM2YzYtZTQ3YS00ODMzLTliZjUtNTE5ZjhhYWNhYmU0CitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9jc3VtX3NlZWQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX2NzdW1fc2VlZC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTVjYWRlNgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9jc3VtX3NlZWQvc2NyaXB0CkBAIC0wLDAgKzEsMzggQEAKK3Rlc3RfZGVzY3JpcHRpb249ImVuYWJsZSBjc3VtIHNlZWQgdmlhIHR1bmUyZnMiCisKK3RyYXAgInJtIC1yZiAkVE1QRklMRSAkVE1QRklMRS5jb25mIiBFWElUIElOVCBRVUlUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK3JtIC1yZiAkT1VUCisKKyMgVGVzdCBjb21tYW5kIGxpbmUgb3B0aW9uCitlY2hvICJjcmVhdGUgZnMgd2l0aG91dCBjc3VtX3NlZWQiID4+ICRPVVQKKyRNS0UyRlMgLU8gbWV0YWRhdGFfY3N1bSxebWV0YWRhdGFfY3N1bV9zZWVkIC1VIDZiMzNmNTg2LWExODMtNDM4My05MjFkLTMwZGEzZmVmMmU1YyAtRiAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAidHVybiBvbiBjc3VtX3NlZWQiID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW1fc2VlZCAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hhbmdlIHV1aWQiID4+ICRPVVQKKyRUVU5FMkZTIC1VIDFkZDEzNmM2LWU0N2EtNDgzMy05YmY1LTUxOWY4YWFjYWJlNCAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCiskRFVNUEUyRlMgJFRNUEZJTEUgMj4mMSB8IGVncmVwICcoQ2hlY2tzdW0gc2VlZDp8VVVJRCknID4+ICRPVVQKKworZWNobyAiY2hlY2sgZmlsZXN5c3RlbSIgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1meSAkVE1QRklMRSA+IC9kZXYvbnVsbCAyPiYxCitlY2hvICJmc2NrIHJldHVybnMgJD8iID4+ICRPVVQKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW0vZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTFhMzNhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtL2V4cGVjdApAQCAtMCwwICsxLDc4IEBACit0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ3NyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZworCitQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3Rlc3RfZmlsZXN5cyB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkLCBjaGVjayBmb3JjZWQuCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCisKKworQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTIsNyArMiw3IEBACisgTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KKyBGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworIEZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIGRpcl9ubGluayBleHRyYV9pc2l6ZSBtZXRhZGF0YV9jc3VtCisgRGVmYXVsdCBtb3VudCBvcHRpb25zOiAgICB1c2VyX3hhdHRyIGFjbAorIEZpbGVzeXN0ZW0gc3RhdGU6ICAgICAgICAgY2xlYW4KKyBFcnJvcnMgYmVoYXZpb3I6ICAgICAgICAgIENvbnRpbnVlCitAQCAtMTAsNyArMTAsNyBAQAorIElub2RlIGNvdW50OiAgICAgICAgICAgICAgNjU1MzYKKyBCbG9jayBjb3VudDogICAgICAgICAgICAgIDUyNDI4OAorIFJlc2VydmVkIGJsb2NrIGNvdW50OiAgICAgMjYyMTQKKy1GcmVlIGJsb2NrczogICAgICAgICAgICAgIDU3MQorK0ZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgNTY4CisgRnJlZSBpbm9kZXM6ICAgICAgICAgICAgICA2NTA0OAorIEZpcnN0IGJsb2NrOiAgICAgICAgICAgICAgMQorIEJsb2NrIHNpemU6ICAgICAgICAgICAgICAgMTAyNAorQEAgLTMzLDYgKzMzLDcgQEAKKyBKb3VybmFsIGlub2RlOiAgICAgICAgICAgIDgKKyBEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisgSm91cm5hbCBiYWNrdXA6ICAgICAgICAgICBpbm9kZSBibG9ja3MKKytDaGVja3N1bSB0eXBlOiAgICAgICAgICAgIGNyYzMyYworIEpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCisgSm91cm5hbCBzaXplOiAgICAgICAgICAgICAxNk0KKyBKb3VybmFsIGxlbmd0aDogICAgICAgICAgIDE2Mzg0CitAQCAtNDYsOCArNDcsOCBAQAorICAgQmxvY2sgYml0bWFwIGF0IDI2MiAoKzI2MSkKKyAgIElub2RlIGJpdG1hcCBhdCAyNzggKCsyNzcpCisgICBJbm9kZSB0YWJsZSBhdCAyOTQtNTQ5ICgrMjkzKQorLSAgMjEgZnJlZSBibG9ja3MsIDUzNiBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcywgNTM2IHVudXNlZCBpbm9kZXMKKy0gIEZyZWUgYmxvY2tzOiA0NDEzLTQ0MzMKKysgIDE4IGZyZWUgYmxvY2tzLCA1MzYgZnJlZSBpbm9kZXMsIDIgZGlyZWN0b3JpZXMsIDUzNiB1bnVzZWQgaW5vZGVzCisrICBGcmVlIGJsb2NrczogNDQxMywgNDQxNy00NDMzCisgICBGcmVlIGlub2RlczogNDg5LTEwMjQKKyBHcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpIFtJTk9ERV9VTklOSVRdCisgICBCYWNrdXAgc3VwZXJibG9jayBhdCA4MTkzLCBHcm91cCBkZXNjcmlwdG9ycyBhdCA4MTk0LTgxOTcKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJmMjk1YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bS9uYW1lCkBAIC0wLDAgKzEgQEAKK2VuYWJsZSBtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjM5ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtL3NjcmlwdApAQCAtMCwwICsxLDcwIEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsNjRiaXQKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJ0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBhZGQgbWNzdW0KK2VjaG8gInR1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZyIgPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjaGVjaworJEZTQ0sgLXlEIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1fZXh0My9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1fZXh0My9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY3NjFhOQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9leHQzL2V4cGVjdApAQCAtMCwwICsxLDc0IEBACit0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK21rZTJmczogT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGlub2RlcyBjb250YWluaW5nIGV4dGVudHMgd2hpbGUgY3JlYXRpbmcgaHVnZSBmaWxlcworV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCit0dW5lMmZzIC1PIG1ldGFkYXRhX2NzdW0gdGVzdC5pbWcKK0V4dGVudHMgYXJlIG5vdCBlbmFibGVkLiAgVGhlIGZpbGUgZXh0ZW50IHRyZWUgY2FuIGJlIGNoZWNrc3VtbWVkLCB3aGVyZWFzIGJsb2NrIG1hcHMgY2Fubm90LiAgTm90IGVuYWJsaW5nIGV4dGVudHMgcmVkdWNlcyB0aGUgY292ZXJhZ2Ugb2YgbWV0YWRhdGEgY2hlY2tzdW1taW5nLiAgUmUtcnVuIHdpdGggLU8gZXh0ZW50IHRvIHJlY3RpZnkuCis2NC1iaXQgZmlsZXN5c3RlbSBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLiAgVGhlIGxhcmdlciBmaWVsZHMgYWZmb3JkZWQgYnkgdGhpcyBmZWF0dXJlIGVuYWJsZSBmdWxsLXN0cmVuZ3RoIGNoZWNrc3VtbWluZy4gIFJ1biByZXNpemUyZnMgLWIgdG8gcmVjdGlmeS4KK0V4aXQgc3RhdHVzIGlzIDAKKworQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTIsNyArMiw3IEBACisgTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KKyBGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworIEZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUKKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgbWV0YWRhdGFfY3N1bQorIERlZmF1bHQgbW91bnQgb3B0aW9uczogICAgdXNlcl94YXR0ciBhY2wKKyBGaWxlc3lzdGVtIHN0YXRlOiAgICAgICAgIGNsZWFuCisgRXJyb3JzIGJlaGF2aW9yOiAgICAgICAgICBDb250aW51ZQorQEAgLTI5LDYgKzI5LDcgQEAKKyBKb3VybmFsIGlub2RlOiAgICAgICAgICAgIDgKKyBEZWZhdWx0IGRpcmVjdG9yeSBoYXNoOiAgIGhhbGZfbWQ0CisgSm91cm5hbCBiYWNrdXA6ICAgICAgICAgICBpbm9kZSBibG9ja3MKKytDaGVja3N1bSB0eXBlOiAgICAgICAgICAgIGNyYzMyYworIEpvdXJuYWwgZmVhdHVyZXM6ICAgICAgICAgKG5vbmUpCisgSm91cm5hbCBzaXplOiAgICAgICAgICAgICAxNk0KKyBKb3VybmFsIGxlbmd0aDogICAgICAgICAgIDE2Mzg0CitAQCAtMzYsNyArMzcsNyBAQAorIEpvdXJuYWwgc3RhcnQ6ICAgICAgICAgICAgMAorIAorIAorLUdyb3VwIDA6IChCbG9ja3MgMS04MTkyKQorK0dyb3VwIDA6IChCbG9ja3MgMS04MTkyKSBbSVRBQkxFX1pFUk9FRF0KKyAgIFByaW1hcnkgc3VwZXJibG9jayBhdCAxLCBHcm91cCBkZXNjcmlwdG9ycyBhdCAyLTMKKyAgIFJlc2VydmVkIEdEVCBibG9ja3MgYXQgNC0yNTkKKyAgIEJsb2NrIGJpdG1hcCBhdCAyNjAgKCsyNTkpCitAQCAtNDUsNyArNDYsNyBAQAorICAgMCBmcmVlIGJsb2NrcywgMTAxMyBmcmVlIGlub2RlcywgMiBkaXJlY3RvcmllcworICAgRnJlZSBibG9ja3M6IAorICAgRnJlZSBpbm9kZXM6IDEyLTEwMjQKKy1Hcm91cCAxOiAoQmxvY2tzIDgxOTMtMTYzODQpCisrR3JvdXAgMTogKEJsb2NrcyA4MTkzLTE2Mzg0KSBbSVRBQkxFX1pFUk9FRF0KKyAgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NQorICAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4MTk2LTg0NTEKKyAgIEJsb2NrIGJpdG1hcCBhdCA4NDUyICgrMjU5KQorQEAgLTU0LDYgKzU1LDYgQEAKKyAgIDAgZnJlZSBibG9ja3MsIDEwMjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKyAgIEZyZWUgYmxvY2tzOiAKKyAgIEZyZWUgaW5vZGVzOiAxMDI1LTIwNDgKKy1Hcm91cCAyOiAoQmxvY2tzIDE2Mzg1LTI0NTc2KQorK0dyb3VwIDI6IChCbG9ja3MgMTYzODUtMjQ1NzYpIFtJVEFCTEVfWkVST0VEXQorICAgQmxvY2sgYml0bWFwIGF0IDE2Mzg1ICgrMCkKKyAgIElub2RlIGJpdG1hcCBhdCAxNjM4NiAoKzEpCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1fZXh0My9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtX2V4dDMvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWEyOWM4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtX2V4dDMvbmFtZQpAQCAtMCwwICsxIEBACitlbmFibGUgbWV0YWRhdGFfY3N1bSBvbiBleHQzIGZzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1fZXh0My9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1fZXh0My9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM2Mzg2NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9leHQzL3NjcmlwdApAQCAtMCwwICsxLDcwIEBACitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsXmV4dGVudCxeaHVnZV9maWxlLF5mbGV4X2JnLF51bmluaXRfYmcsXmRpcl9ubGluayxeZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsXjY0Yml0CisJCWJsb2Nrc2l6ZSA9IDEwMjQKKwkJaW5vZGVfc2l6ZSA9IDEyOAorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJbnVtX2h1Z2VmaWxlcyA9IDEwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJ0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBhZGQgbWNzdW0KK2VjaG8gInR1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZyIgPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjaGVjaworJEZTQ0sgLXlEIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1faW5pdGJnL2V4cGVjdCBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9pbml0YmcvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNDc3NGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1faW5pdGJnL2V4cGVjdApAQCAtMCwwICsxLDk4IEBACit0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDUyNDI4OCAxayBibG9ja3MgYW5kIDY1NTM2IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5CisKK0FsbG9jYXRpbmcgZ3JvdXAgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAgIAgICAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK0NyZWF0aW5nIGpvdXJuYWwgKDE2Mzg0IGJsb2Nrcyk6IGRvbmUKK0NyZWF0aW5nIDQ3NyBodWdlIGZpbGUocykgd2l0aCAxMDI0IGJsb2NrcyBlYWNoOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgICAgCAgICAhkb25lCisKK1Bhc3MgMTogQ2hlY2tpbmcgaW5vZGVzLCBibG9ja3MsIGFuZCBzaXplcworUGFzcyAyOiBDaGVja2luZyBkaXJlY3Rvcnkgc3RydWN0dXJlCitQYXNzIDM6IENoZWNraW5nIGRpcmVjdG9yeSBjb25uZWN0aXZpdHkKK1Bhc3MgNDogQ2hlY2tpbmcgcmVmZXJlbmNlIGNvdW50cworUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3R1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZworCitQbGVhc2UgcnVuIGUyZnNjayAtZkQgb24gdGhlIGZpbGVzeXN0ZW0uCisKK0V4aXQgc3RhdHVzIGlzIDAKK3Rlc3RfZmlsZXN5cyB3YXMgbm90IGNsZWFubHkgdW5tb3VudGVkLCBjaGVjayBmb3JjZWQuCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCisKKworQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTIsNyArMiw3IEBACisgTGFzdCBtb3VudGVkIG9uOiAgICAgICAgICA8bm90IGF2YWlsYWJsZT4KKyBGaWxlc3lzdGVtIG1hZ2ljIG51bWJlcjogIDB4RUY1MworIEZpbGVzeXN0ZW0gcmV2aXNpb24gIzogICAgMSAoZHluYW1pYykKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIHJlc2l6ZV9pbm9kZSBkaXJfaW5kZXggZmlsZXR5cGUgZXh0ZW50IDY0Yml0IGZsZXhfYmcgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIGRpcl9ubGluayBleHRyYV9pc2l6ZQorK0ZpbGVzeXN0ZW0gZmVhdHVyZXM6ICAgICAgaGFzX2pvdXJuYWwgZXh0X2F0dHIgcmVzaXplX2lub2RlIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgZmxleF9iZyBzcGFyc2Vfc3VwZXIgbGFyZ2VfZmlsZSBodWdlX2ZpbGUgZGlyX25saW5rIGV4dHJhX2lzaXplIG1ldGFkYXRhX2NzdW0KKyBEZWZhdWx0IG1vdW50IG9wdGlvbnM6ICAgIHVzZXJfeGF0dHIgYWNsCisgRmlsZXN5c3RlbSBzdGF0ZTogICAgICAgICBjbGVhbgorIEVycm9ycyBiZWhhdmlvcjogICAgICAgICAgQ29udGludWUKK0BAIC0xMCw3ICsxMCw3IEBACisgSW5vZGUgY291bnQ6ICAgICAgICAgICAgICA2NTUzNgorIEJsb2NrIGNvdW50OiAgICAgICAgICAgICAgNTI0Mjg4CisgUmVzZXJ2ZWQgYmxvY2sgY291bnQ6ICAgICAyNjIxNAorLUZyZWUgYmxvY2tzOiAgICAgICAgICAgICAgNTcxCisrRnJlZSBibG9ja3M6ICAgICAgICAgICAgICA1NjgKKyBGcmVlIGlub2RlczogICAgICAgICAgICAgIDY1MDQ4CisgRmlyc3QgYmxvY2s6ICAgICAgICAgICAgICAxCisgQmxvY2sgc2l6ZTogICAgICAgICAgICAgICAxMDI0CitAQCAtMzMsNiArMzMsNyBAQAorIEpvdXJuYWwgaW5vZGU6ICAgICAgICAgICAgOAorIERlZmF1bHQgZGlyZWN0b3J5IGhhc2g6ICAgaGFsZl9tZDQKKyBKb3VybmFsIGJhY2t1cDogICAgICAgICAgIGlub2RlIGJsb2NrcworK0NoZWNrc3VtIHR5cGU6ICAgICAgICAgICAgY3JjMzJjCisgSm91cm5hbCBmZWF0dXJlczogICAgICAgICAobm9uZSkKKyBKb3VybmFsIHNpemU6ICAgICAgICAgICAgIDE2TQorIEpvdXJuYWwgbGVuZ3RoOiAgICAgICAgICAgMTYzODQKK0BAIC00MCwyNCArNDEsMjQgQEAKKyBKb3VybmFsIHN0YXJ0OiAgICAgICAgICAgIDAKKyAKKyAKKy1Hcm91cCAwOiAoQmxvY2tzIDEtODE5MikKKytHcm91cCAwOiAoQmxvY2tzIDEtODE5MikgW0lUQUJMRV9aRVJPRURdCisgICBQcmltYXJ5IHN1cGVyYmxvY2sgYXQgMSwgR3JvdXAgZGVzY3JpcHRvcnMgYXQgMi01CisgICBSZXNlcnZlZCBHRFQgYmxvY2tzIGF0IDYtMjYxCisgICBCbG9jayBiaXRtYXAgYXQgMjYyICgrMjYxKQorICAgSW5vZGUgYml0bWFwIGF0IDI3OCAoKzI3NykKKyAgIElub2RlIHRhYmxlIGF0IDI5NC01NDkgKCsyOTMpCistICAyMSBmcmVlIGJsb2NrcywgNTM2IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzCistICBGcmVlIGJsb2NrczogNDQxMy00NDMzCisrICAxOCBmcmVlIGJsb2NrcywgNTM2IGZyZWUgaW5vZGVzLCAyIGRpcmVjdG9yaWVzLCA1MzYgdW51c2VkIGlub2RlcworKyAgRnJlZSBibG9ja3M6IDQ0MTMsIDQ0MTctNDQzMworICAgRnJlZSBpbm9kZXM6IDQ4OS0xMDI0CistR3JvdXAgMTogKEJsb2NrcyA4MTkzLTE2Mzg0KQorK0dyb3VwIDE6IChCbG9ja3MgODE5My0xNjM4NCkgW0lOT0RFX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgIEJhY2t1cCBzdXBlcmJsb2NrIGF0IDgxOTMsIEdyb3VwIGRlc2NyaXB0b3JzIGF0IDgxOTQtODE5NworICAgUmVzZXJ2ZWQgR0RUIGJsb2NrcyBhdCA4MTk4LTg0NTMKKyAgIEJsb2NrIGJpdG1hcCBhdCAyNjMgKGJnICMwICsgMjYyKQorICAgSW5vZGUgYml0bWFwIGF0IDI3OSAoYmcgIzAgKyAyNzgpCisgICBJbm9kZSB0YWJsZSBhdCA1NTAtODA1IChiZyAjMCArIDU0OSkKKy0gIDAgZnJlZSBibG9ja3MsIDEwMjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMKKysgIDAgZnJlZSBibG9ja3MsIDEwMjQgZnJlZSBpbm9kZXMsIDAgZGlyZWN0b3JpZXMsIDEwMjQgdW51c2VkIGlub2RlcworICAgRnJlZSBibG9ja3M6IAorICAgRnJlZSBpbm9kZXM6IDEwMjUtMjA0OAorLUdyb3VwIDI6IChCbG9ja3MgMTYzODUtMjQ1NzYpCisrR3JvdXAgMjogKEJsb2NrcyAxNjM4NS0yNDU3NikgW0lOT0RFX1VOSU5JVCwgSVRBQkxFX1pFUk9FRF0KKyAgIEJsb2NrIGJpdG1hcCBhdCAyNjQgKGJnICMwICsgMjYzKQorICAgSW5vZGUgYml0bWFwIGF0IDI4MCAoYmcgIzAgKyAyNzkpCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1faW5pdGJnL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvdF9lbmFibGVfbWNzdW1faW5pdGJnL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkxZWI2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9pbml0YmcvbmFtZQpAQCAtMCwwICsxIEBACitlbmFibGUgbWV0YWRhdGFfY3N1bSB3aGVuIF51bmluaXRfYmcKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9pbml0Ymcvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZW5hYmxlX21jc3VtX2luaXRiZy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjNDU0MQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2VuYWJsZV9tY3N1bV9pbml0Ymcvc2NyaXB0CkBAIC0wLDAgKzEsNzAgQEAKK0ZTQ0tfT1BUPS1mbgorT1VUPSR0ZXN0X25hbWUubG9nCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorQ09ORj0kVE1QRklMRS5jb25mCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsXnVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUsNjRiaXQKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJ0dW5lMmZzIG1ldGFkYXRhX2NzdW0gdGVzdCIgPiAkT1VUCisKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtRiAtVCBleHQ0aCAkVE1QRklMRSA1MjQyODggPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmJlZm9yZQorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBhZGQgbWNzdW0KK2VjaG8gInR1bmUyZnMgLU8gbWV0YWRhdGFfY3N1bSB0ZXN0LmltZyIgPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjaGVjaworJEZTQ0sgLXlEIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBkdW1wIGFuZCBjaGVjaworJERVTVBFMkZTICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ15Hcm91cCAwOicgLUI5OSAtQTIwIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPiAkT1VULmFmdGVyCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC11ICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCB0YWlsIC1uICszID4+ICRPVVQKKyRGU0NLICRGU0NLX09QVCAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKK3JtICRUTVBGSUxFICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUCBDT05GCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9leHRfam5sX2ZhaWwvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZXh0X2pubF9mYWlsL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjBhZWNiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZXh0X2pubF9mYWlsL2V4cGVjdApAQCAtMCwwICsxLDYgQEAKK0NyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCA0MDk2IDFrIGJsb2NrcyBhbmQgMCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKworWmVyb2luZyBqb3VybmFsIGRldmljZTogICAgICAgICAgCAgICAgICAgICit0dW5lMmZzIGV4dGVybmFsIGpvdXJuYWwKK0Nhbm5vdCBtb2RpZnkgYSBqb3VybmFsIGRldmljZS4KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2V4dF9qbmxfZmFpbC9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZXh0X2pubF9mYWlsL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZlN2QwNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2V4dF9qbmxfZmFpbC9uYW1lCkBAIC0wLDAgKzEgQEAKK3R1bmUyZnMgZmFpbCBleHRlcm5hbCBqb3VybmFsCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9leHRfam5sX2ZhaWwvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZXh0X2pubF9mYWlsL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjMxY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfZXh0X2pubF9mYWlsL3NjcmlwdApAQCAtMCwwICsxLDMwIEBACitGU0NLX09QVD0tZnkKK09VVD0kdGVzdF9uYW1lLmxvZworaWYgWyAtZiAkdGVzdF9kaXIvZXhwZWN0Lmd6IF07IHRoZW4KKwlFWFA9JHRlc3RfbmFtZS50bXAKKwlndW56aXAgPCAkdGVzdF9kaXIvZXhwZWN0Lmd6ID4gJEVYUDEKK2Vsc2UKKwlFWFA9JHRlc3RfZGlyL2V4cGVjdAorZmkKKworY3AgL2Rldi9udWxsICRPVVQKKworJE1LRTJGUyAtRiAtbyBMaW51eCAtYiAxMDI0IC1PIGpvdXJuYWxfZGV2LG1ldGFkYXRhX2NzdW0gLVQgZXh0NCAkVE1QRklMRSA0MDk2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKK2VjaG8gInR1bmUyZnMgZXh0ZXJuYWwgam91cm5hbCIgPj4gJE9VVAorJFRVTkUyRlMgLWkgMCAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVAorCitybSAtZiAkVE1QRklMRQorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorCXJtIC1mICR0ZXN0X25hbWUudG1wCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9leHRfam5sX3JtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2V4dF9qbmxfcm0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYWY4MGMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9leHRfam5sX3JtL3NjcmlwdApAQCAtMCwwICsxLDI2IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJyZW1vdmUgbWlzc2luZyBleHRlcm5hbCBqb3VybmFsIGRldmljZSIKK09VVD0kdGVzdF9uYW1lLmxvZworCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAkVE1QRklMRSA+PiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1JIDEyOCAtYiAxMDI0ICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCitlY2hvICJkZWJ1Z2ZzIGFkZCBqb3VybmFsIGRldmljZS9VVUlEIiA+PiAkT1VUCiskREVCVUdGUyAtdyAtZiAtICRUTVBGSUxFIDw8LSBFT0YgPj4gJE9VVCAyPiYxCisJZmVhdHVyZSBoYXNfam91cm5hbAorCXNzdiBqb3VybmFsX2RldiAweDk5OTkKKwlzc3Ygam91cm5hbF91dWlkIDFkYjNmNjc3LTY4MzItNGFkYi1iYWZjLThlNDA1OWMzMGEzMworRU9GCisKK2VjaG8gInR1bmUyZnMgLWYgLU8gXmhhc19qb3VybmFsICRUTVBGSUxFIiA+PiAkT1VUCiskVFVORTJGUyAtZiAtTyBeaGFzX2pvdXJuYWwgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCiskRFVNUEUyRlMgLWggJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitpZiBbICIkKGdyZXAgJ0pvdXJuYWwgVVVJRDonICRPVVQpIiBdOyB0aGVuCisJbXYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwltdiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLm9rCitmaQorcm0gLWYgJFRNUEZJTEUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2Zvcm1hdF9jc3VtX3NlZWQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfZm9ybWF0X2NzdW1fc2VlZC9leHBlY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllNmQ2YQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X2Zvcm1hdF9jc3VtX3NlZWQvZXhwZWN0CkBAIC0wLDAgKzEsMTAgQEAKK2NyZWF0ZSBmcyB3aXRoIGNzdW1fc2VlZAorRmlsZXN5c3RlbSBVVUlEOiAgICAgICAgICA2YjMzZjU4Ni1hMTgzLTQzODMtOTIxZC0zMGRhM2ZlZjJlNWMKK0NoZWNrc3VtIHNlZWQ6ICAgICAgICAgICAgMHgzYmE2MjcyMQorY2hhbmdlIHV1aWQKK0ZpbGVzeXN0ZW0gVVVJRDogICAgICAgICAgMWRkMTM2YzYtZTQ3YS00ODMzLTliZjUtNTE5ZjhhYWNhYmU0CitDaGVja3N1bSBzZWVkOiAgICAgICAgICAgIDB4M2JhNjI3MjEKK2NoZWNrIGZpbGVzeXN0ZW0KK2ZzY2sgcmV0dXJucyAwCitGaWxlc3lzdGVtIFVVSUQ6ICAgICAgICAgIDFkZDEzNmM2LWU0N2EtNDgzMy05YmY1LTUxOWY4YWFjYWJlNAorQ2hlY2tzdW0gc2VlZDogICAgICAgICAgICAweDNiYTYyNzIxCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9mb3JtYXRfY3N1bV9zZWVkL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2Zvcm1hdF9jc3VtX3NlZWQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE4Mjk1MTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9mb3JtYXRfY3N1bV9zZWVkL3NjcmlwdApAQCAtMCwwICsxLDM0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJmb3JtYXQgd2l0aCBjc3VtX3NlZWQiCisKK3RyYXAgInJtIC1yZiAkVE1QRklMRSAkVE1QRklMRS5jb25mIiBFWElUIElOVCBRVUlUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK3JtIC1yZiAkT1VUCisKKyMgVGVzdCBjb21tYW5kIGxpbmUgb3B0aW9uCitlY2hvICJjcmVhdGUgZnMgd2l0aCBjc3VtX3NlZWQiID4+ICRPVVQKKyRNS0UyRlMgLU8gbWV0YWRhdGFfY3N1bSxtZXRhZGF0YV9jc3VtX3NlZWQgLVUgNmIzM2Y1ODYtYTE4My00MzgzLTkyMWQtMzBkYTNmZWYyZTVjIC1GICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGFuZ2UgdXVpZCIgPj4gJE9VVAorJFRVTkUyRlMgLVUgMWRkMTM2YzYtZTQ3YS00ODMzLTliZjUtNTE5ZjhhYWNhYmU0ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKKyREVU1QRTJGUyAkVE1QRklMRSAyPiYxIHwgZWdyZXAgJyhDaGVja3N1bSBzZWVkOnxVVUlEKScgPj4gJE9VVAorCitlY2hvICJjaGVjayBmaWxlc3lzdGVtIiA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLWZ5ICRUTVBGSUxFID4gL2Rldi9udWxsIDI+JjEKK2VjaG8gImZzY2sgcmV0dXJucyAkPyIgPj4gJE9VVAorJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBlZ3JlcCAnKENoZWNrc3VtIHNlZWQ6fFVVSUQpJyA+PiAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCisJcm0gLWYgJHRlc3RfbmFtZS50bXAKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X2lleHBhbmRfZnVsbC9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX2Z1bGwvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYjE3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX2Z1bGwvZXhwZWN0CkBAIC0wLDAgKzEsMzggQEAKK3R1bmUyZnMgdGVzdAorQ3JlYXRpbmcgZmlsZXN5c3RlbSB3aXRoIDc4NjQzMiAxayBibG9ja3MgYW5kIDk4MzA0IGlub2RlcworU3VwZXJibG9jayBiYWNrdXBzIHN0b3JlZCBvbiBibG9ja3M6IAorCTgxOTMsIDI0NTc3LCA0MDk2MSwgNTczNDUsIDczNzI5LCAyMDQ4MDEsIDIyMTE4NSwgNDAxNDA5LCA2NjM1NTMKKworQWxsb2NhdGluZyBncm91cCB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorV3JpdGluZyBpbm9kZSB0YWJsZXM6ICAgICAgCAgICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoMTYzODQgYmxvY2tzKTogZG9uZQorQ3JlYXRpbmcgNjM2OCBodWdlIGZpbGUocykgd2l0aCAxMTcgYmxvY2tzIGVhY2g6IGRvbmUKK1dyaXRpbmcgc3VwZXJibG9ja3MgYW5kIGZpbGVzeXN0ZW0gYWNjb3VudGluZyBpbmZvcm1hdGlvbjogICAgICAICAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMAordHVuZTJmcyAtSSAyNTYgdGVzdC5pbWcKK1NldHRpbmcgaW5vZGUgc2l6ZSAyNTYKK0V4aXQgc3RhdHVzIGlzIDAKK0NoYW5nZSBpbiBGUyBtZXRhZGF0YToKK0BAIC0xMyArMTMgQEAKKy1GcmVlIGJsb2NrczogICAgICAgICAgICAgIDEyMzAxCisrRnJlZSBibG9ja3M6ICAgICAgICAgICAgICAxMgorQEAgLTIyICsyMiBAQAorLUlub2RlIGJsb2NrcyBwZXIgZ3JvdXA6ICAgMTI4CisrSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAyNTYKK0BAIC0yOCArMjggQEAKKy1Jbm9kZSBzaXplOgkgICAgICAgICAgMTI4CisrSW5vZGUgc2l6ZToJICAgICAgICAgIDI1NgorUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9mdWxsL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX2Z1bGwvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjQxYjM0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9mdWxsL25hbWUKQEAgLTAsMCArMSBAQAorZXhwYW5kIGlub2RlcyBvbiBhIHRvdGFsbHkgZnVsbCBmaWxlc3lzdGVtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX2Z1bGwvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9mdWxsL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODU2NWE3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9mdWxsL3NjcmlwdApAQCAtMCwwICsxLDg1IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitpZiBbICQodW5hbWUgLXMpID0gIkRhcndpbiIgXTsgdGhlbgorCSMgY3JlYXRlcyBhIDNHQiBmaWxlc3lzdGVtCisJZWNobyAiJHRlc3RfbmFtZTogJERFU0NSSVBUSU9OOiBza2lwcGVkIGZvciBIRlMrIChubyBzcGFyc2UgZmlsZXMpIgorCXJldHVybiAwCitmaQorCitGU0NLX09QVD0tZm4KK09VVD0kdGVzdF9uYW1lLmxvZworRVhQPSR0ZXN0X2Rpci9leHBlY3QKK0NPTkY9JFRNUEZJTEUuY29uZgorCisjZ3ppcCAtZCA8ICRFWFAuZ3ogPiAkRVhQCisKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixecmVzaXplX2lub2RlLF5tZXRhX2JnLF5mbGV4X2JnLG1ldGFkYXRhX2NzdW0sNjRiaXQKKwkJYmxvY2tzaXplID0gMTAyNAorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAxMjAwMEsKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDExN0sKKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyAidHVuZTJmcyB0ZXN0IiA+ICRPVVQKKworTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1GIC1UIGV4dDRoIC1JIDEyOCAkVE1QRklMRSA3ODY0MzIgPj4gJE9VVCAyPiYxCitybSAtcmYgJENPTkYKKworIyBkdW1wIGFuZCBjaGVjaworKCREVU1QRTJGUyAtaCAkVE1QRklMRTsgJERVTVBFMkZTIC1nICRUTVBGSUxFKSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgJy9eQ2hlY2tzdW06LiovZCcgPj4gJE9VVC5iZWZvcmUgMj4gL2Rldi9udWxsCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCisjIGNvbnZlcnQgaXQKK2VjaG8gInR1bmUyZnMgLUkgMjU2IHRlc3QuaW1nIiA+PiAkT1VUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgY29udj1ub3RydW5jIGJzPTEgY291bnQ9MSBzZWVrPTMyMjEyMjU0NzEgMj4gL2Rldi9udWxsCiskVFVORTJGUyAtSSAyNTYgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VUCisKKyMgZHVtcCBhbmQgY2hlY2sKKygkRFVNUEUyRlMgLWggJFRNUEZJTEU7ICREVU1QRTJGUyAtZyAkVE1QRklMRSkgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvXkNoZWNrc3VtOi4qL2QnID4+ICRPVVQuYWZ0ZXIgMj4gL2Rldi9udWxsCitlY2hvICJDaGFuZ2UgaW4gRlMgbWV0YWRhdGE6IiA+PiAkT1VUCitkaWZmIC1VIDAgJE9VVC5iZWZvcmUgJE9VVC5hZnRlciB8IHNlZCAtZSAnL14tLS0uKi9kJyAtZSAnL14rKysuKi9kJyA+PiAkT1VUCiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQgMj4mMQorc3RhdHVzPSQ/CitlY2hvIEV4aXQgc3RhdHVzIGlzICRzdGF0dXMgPj4gJE9VVAorCitybSAkVE1QRklMRQorCisjCisjIERvIHRoZSB2ZXJpZmljYXRpb24KKyMKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAtZSAncy90ZXN0X2ZpbGVzeXM6LiovL2cnIDwgJE9VVCA+ICRPVVQubmV3CittdiAkT1VULm5ldyAkT1VUCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCitybSAkT1VULmJlZm9yZSAkT1VULmFmdGVyCisKK3Vuc2V0IElNQUdFIEZTQ0tfT1BUIE9VVCBFWFAgQ09ORgorCitlbHNlICNpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9tY3N1bS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX21jc3VtL2V4cGVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWJmMTYyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9tY3N1bS9leHBlY3QKQEAgLTAsMCArMSw1NCBAQAordHVuZTJmcyB0ZXN0CitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNzg2NDMyIDFrIGJsb2NrcyBhbmQgOTgzMDQgaW5vZGVzCitTdXBlcmJsb2NrIGJhY2t1cHMgc3RvcmVkIG9uIGJsb2NrczogCisJODE5MywgMjQ1NzcsIDQwOTYxLCA1NzM0NSwgNzM3MjksIDIwNDgwMSwgMjIxMTg1LCA0MDE0MDksIDY2MzU1MworCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitXcml0aW5nIGlub2RlIHRhYmxlczogICAgICAICAgICGRvbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitDcmVhdGluZyBqb3VybmFsICgxNjM4NCBibG9ja3MpOiBkb25lCitDcmVhdGluZyA2MzM0IGh1Z2UgZmlsZShzKSB3aXRoIDExNyBibG9ja3MgZWFjaDogZG9uZQorV3JpdGluZyBzdXBlcmJsb2NrcyBhbmQgZmlsZXN5c3RlbSBhY2NvdW50aW5nIGluZm9ybWF0aW9uOiAgICAgIAgICAgIZG9uZQorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCitFeGl0IHN0YXR1cyBpcyAwCit0dW5lMmZzIC1JIDI1NiAtTyBtZXRhZGF0YV9jc3VtIHRlc3QuaW1nCitTZXR0aW5nIGlub2RlIHNpemUgMjU2CisKK1BsZWFzZSBydW4gZTJmc2NrIC1mRCBvbiB0aGUgZmlsZXN5c3RlbS4KKworRXhpdCBzdGF0dXMgaXMgMAorQmFja2luZyB1cCBqb3VybmFsIGlub2RlIGJsb2NrIGluZm9ybWF0aW9uLgorCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDNBOiBPcHRpbWl6aW5nIGRpcmVjdG9yaWVzCitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorCisKKworQ2hhbmdlIGluIEZTIG1ldGFkYXRhOgorQEAgLTUgKzUgQEAKKy1GaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIHVuaW5pdF9iZyBkaXJfbmxpbmsgZXh0cmFfaXNpemUKKytGaWxlc3lzdGVtIGZlYXR1cmVzOiAgICAgIGhhc19qb3VybmFsIGV4dF9hdHRyIGRpcl9pbmRleCBmaWxldHlwZSBleHRlbnQgNjRiaXQgc3BhcnNlX3N1cGVyIGxhcmdlX2ZpbGUgaHVnZV9maWxlIGRpcl9ubGluayBleHRyYV9pc2l6ZSBtZXRhZGF0YV9jc3VtCitAQCAtMjEgKzIxIEBACistSW5vZGUgYmxvY2tzIHBlciBncm91cDogICAxMjgKKytJbm9kZSBibG9ja3MgcGVyIGdyb3VwOiAgIDI1NgorQEAgLTI3ICsyNyBAQAorLUlub2RlIHNpemU6CSAgICAgICAgICAxMjgKKytJbm9kZSBzaXplOgkgICAgICAgICAgMjU2CitAQCAtMzAsMCArMzEgQEAKKytDaGVja3N1bSB0eXBlOiAgICAgICAgICAgIGNyYzMyYworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KKworRXhpdCBzdGF0dXMgaXMgMApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9tY3N1bS9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfaWV4cGFuZF9tY3N1bS9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3Njc3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX21jc3VtL25hbWUKQEAgLTAsMCArMSBAQAorZXhwYW5kIGlub2RlcyBhbmQgdHVybiBvbiBtZXRhZGF0YV9jc3VtCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX21jc3VtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X2lleHBhbmRfbWNzdW0vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNTg0ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9pZXhwYW5kX21jc3VtL3NjcmlwdApAQCAtMCwwICsxLDg1IEBACitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgoraWYgWyAkKHVuYW1lIC1zKSA9ICJEYXJ3aW4iIF07IHRoZW4KKwkjIGNyZWF0ZXMgYSAzR0IgZmlsZXN5c3RlbQorCWVjaG8gIiR0ZXN0X25hbWU6ICRERVNDUklQVElPTjogc2tpcHBlZCBmb3IgSEZTKyAobm8gc3BhcnNlIGZpbGVzKSIKKwlyZXR1cm4gMAorZmkKKworRlNDS19PUFQ9LWZuCitPVVQ9JHRlc3RfbmFtZS5sb2cKK0VYUD0kdGVzdF9kaXIvZXhwZWN0CitDT05GPSRUTVBGSUxFLmNvbmYKKworI2d6aXAgLWQgPCAkRVhQLmd6ID4gJEVYUAorCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIsXnJlc2l6ZV9pbm9kZSxebWV0YV9iZyxeZmxleF9iZyxebWV0YWRhdGFfY3N1bSw2NGJpdAorCQlibG9ja3NpemUgPSAxMDI0CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDE2MDAwSworCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMTE3SworCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvICJ0dW5lMmZzIHRlc3QiID4gJE9VVAorCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLUYgLVQgZXh0NGggLUkgMTI4ICRUTVBGSUxFIDc4NjQzMiA+PiAkT1VUIDI+JjEKK3JtIC1yZiAkQ09ORgorCisjIGR1bXAgYW5kIGNoZWNrCisoJERVTVBFMkZTIC1oICRUTVBGSUxFIHwgZ3JlcCAtdiAnXkZyZWUgYmxvY2tzOic7ICREVU1QRTJGUyAtZyAkVE1QRklMRSkgMj4mMSB8IHNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICcvXkNoZWNrc3VtOi4qL2QnID4+ICRPVVQuYmVmb3JlIDI+IC9kZXYvbnVsbAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworIyBjb252ZXJ0IGl0CitlY2hvICJ0dW5lMmZzIC1JIDI1NiAtTyBtZXRhZGF0YV9jc3VtIHRlc3QuaW1nIiA+PiAkT1VUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgY29udj1ub3RydW5jIGJzPTEgY291bnQ9MSBzZWVrPTMyMjEyMjU0NzEgMj4gL2Rldi9udWxsCiskVFVORTJGUyAtSSAyNTYgLU8gbWV0YWRhdGFfY3N1bSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKyRGU0NLIC1OIHRlc3RfZmlsZXN5cyAteSAtZiAtRCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKKworIyBkdW1wIGFuZCBjaGVjaworKCREVU1QRTJGUyAtaCAkVE1QRklMRSB8IGdyZXAgLXYgJ15GcmVlIGJsb2NrczonOyAkRFVNUEUyRlMgLWcgJFRNUEZJTEUpIDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAnL15DaGVja3N1bTouKi9kJyA+PiAkT1VULmFmdGVyIDI+IC9kZXYvbnVsbAorZWNobyAiQ2hhbmdlIGluIEZTIG1ldGFkYXRhOiIgPj4gJE9VVAorZGlmZiAtVSAwICRPVVQuYmVmb3JlICRPVVQuYWZ0ZXIgfCBzZWQgLWUgJy9eLS0tLiovZCcgLWUgJy9eKysrLiovZCcgPj4gJE9VVAorJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQKKworcm0gJFRNUEZJTEUKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK3NlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIC1lICJzOyRUTVBGSUxFO3Rlc3QuaW1nOyIgLWUgJ3MvdGVzdF9maWxlc3lzOi4qLy9nJyA8ICRPVVQgPiAkT1VULm5ldworbXYgJE9VVC5uZXcgJE9VVAorCitjbXAgLXMgJE9VVCAkRVhQCitzdGF0dXM9JD8KKworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCWRpZmYgJERJRkZfT1BUUyAkRVhQICRPVVQgPiAkdGVzdF9uYW1lLmZhaWxlZAorZmkKKworcm0gJE9VVC5iZWZvcmUgJE9VVC5hZnRlcgorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQIENPTkYKKworZWxzZSAjaWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkREVCVUdGU19FWEU7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKK2ZpCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X21tcF8xb24vbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy90X21tcF8xb24vbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmUxNmIyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfbW1wXzFvbi9uYW1lCkBAIC0wLDAgKzEgQEAKK2VuYWJsZSBNTVAgdXNpbmcgdHVuZTJmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfbW1wXzFvbi9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9tbXBfMW9uL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmVkMmNhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfbW1wXzFvbi9zY3JpcHQKQEAgLTAsMCArMSw0MCBAQAorRlNDS19PUFQ9LXlmCisKKyMgdXNlIGN1cnJlbnQgZGlyZWN0b3J5IGluc3RlYWQgb2YgL3RtcCBiZWNhc2UgdG1wZnMgZG9lc24ndCBzdXBwb3J0IERJTworcm0gLWYgJFRNUEZJTEUKK1RNUEZJTEU9JChta3RlbXAgLi90bXAtJHRlc3RfbmFtZS5YWFhYWFgpCisKK3N0YXQgLWYgJFRNUEZJTEUgfCBncmVwIC1xICJUeXBlOiB0bXBmcyIKK2lmIFsgJD8gPSAwIF0gOyB0aGVuCisJcm0gLWYgJFRNUEZJTEUKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCBmb3IgdG1wZnMgKG5vIE9fRElSRUNUKSIKKwlyZXR1cm4gMAorZmkKKworJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtYiA0MDk2ICRUTVBGSUxFIDEwMCA+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgIT0gMCBdIDsgdGhlbgorCWVjaG8gIm1rZTJmcyBmYWlsZWQiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCiskVFVORTJGUyAtTyBtbXAgLUUgbW1wX3VwZGF0ZV9pbnRlcnZhbD0xICRUTVBGSUxFID4+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgIT0gMCBdIDsgdGhlbgorCWVjaG8gInR1bmUyZnMgLU8gbW1wIGZhaWxlZCB3aXRoICRzdGF0dXMiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCiskRlNDSyAkRlNDS19PUFQgJFRNUEZJTEUgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gImUyZnNjayB3aXRoIE1NUCBlbmFibGVkIGZhaWxlZCB3aXRoICRzdGF0dXMiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorcm0gLWYgJFRNUEZJTEUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X21tcF8yb2ZmL25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvdF9tbXBfMm9mZi9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3Y2FjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9tbXBfMm9mZi9uYW1lCkBAIC0wLDAgKzEgQEAKK2Rpc2FibGUgTU1QIHVzaW5nIHR1bmUyZnMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X21tcF8yb2ZmL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X21tcF8yb2ZmL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTU2MjAxCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfbW1wXzJvZmYvc2NyaXB0CkBAIC0wLDAgKzEsNDAgQEAKK0ZTQ0tfT1BUPS15ZgorCisjIHVzZSBjdXJyZW50IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIC90bXAgYmVjYXNlIHRtcGZzIGRvZXNuJ3Qgc3VwcG9ydCBESU8KK3JtIC1mICRUTVBGSUxFCitUTVBGSUxFPSQobWt0ZW1wIC4vdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQorCitzdGF0IC1mICRUTVBGSUxFIHwgZ3JlcCAtcSAiVHlwZTogdG1wZnMiCitpZiBbICQ/ID0gMCBdOyB0aGVuCisJcm0gLWYgJFRNUEZJTEUKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCBmb3IgdG1wZnMgKG5vIE9fRElSRUNUKSIKKwlyZXR1cm4gMAorZmkKKworJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtYiA0MDk2IC1PIG1tcCAkVE1QRklMRSAxMDAgPiAkdGVzdF9uYW1lLmxvZyAyPiYxCitzdGF0dXM9JD8KK2lmIFsgIiRzdGF0dXMiICE9IDAgXSA7IHRoZW4KKwllY2hvICJta2UyZnMgLU8gbW1wIGZhaWxlZCIgPiAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJcmV0dXJuICRzdGF0dXMKK2ZpCisKKyRUVU5FMkZTIC1PIF5tbXAgJFRNUEZJTEUgPiAkdGVzdF9uYW1lLmxvZyAyPiYxCitzdGF0dXM9JD8KK2lmIFsgIiRzdGF0dXMiICE9IDAgXSA7IHRoZW4KKwllY2hvICJ0dW5lMmZzIC1PIF5tbXAgZmFpbGVkIiA+ICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlyZXR1cm4gJHN0YXR1cworZmkKKworJEZTQ0sgJEZTQ0tfT1BUICRUTVBGSUxFID4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gImUyZnNjayBhZnRlciBNTVAgZGlzYWJsZSBmYWlsZWQiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorcm0gLWYgJFRNUEZJTEUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X3F1b3RhXzFvbi9uYW1lIGIvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMW9uL25hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkyZTJkNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X3F1b3RhXzFvbi9uYW1lCkBAIC0wLDAgKzEgQEAKK2VuYWJsZSBxdW90YSB1c2luZyB0dW5lMmZzCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdF9xdW90YV8xb24vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMW9uL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDE3ZjMzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMW9uL3NjcmlwdApAQCAtMCwwICsxLDQyIEBACitGU0NLX09QVD0teWYKKworaWYgWyAiJFFVT1RBIiAhPSAieSIgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorCXJldHVybiAwCitmaQorCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1iIDQwOTYgJFRNUEZJTEUgMTAwMDAgPiAkdGVzdF9uYW1lLmxvZyAyPiYxCitzdGF0dXM9JD8KK2lmIFsgIiRzdGF0dXMiICE9IDAgXSA7IHRoZW4KKwllY2hvICJta2UyZnMgZmFpbGVkIiA+ICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlyZXR1cm4gJHN0YXR1cworZmkKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFLjIgYnM9MTA0ODU3NiBjb3VudD0xID4+ICR0ZXN0X25hbWUubG9nIDI+JjEKK2NhdCA8PC0gRU9GIHwgJERFQlVHRlMgLXcgLWYgL2Rldi9zdGRpbiAkVE1QRklMRSA+PiAkdGVzdF9uYW1lLmxvZyAyPiYxCisJd3JpdGUgJFRNUEZJTEUuMiBmaWxlMQorCXNldF9pbm9kZV9maWVsZCBmaWxlMSB1aWQgNTAwCisJc2V0X2lub2RlX2ZpZWxkIGZpbGUxIGdpZCA1MDAKK0VPRgorcm0gLWYgJFRNUEZJTEUuMgorCiskVFVORTJGUyAtTyBxdW90YSAgJFRNUEZJTEUgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiAhPSAwIF0gOyB0aGVuCisJZWNobyAidHVuZTJmcyAtTyBxdW90YSBmYWlsZWQgd2l0aCAkc3RhdHVzIiA+ICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlyZXR1cm4gJHN0YXR1cworZmkKKworJEZTQ0sgJEZTQ0tfT1BUICRUTVBGSUxFID4+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICJlMmZzY2sgd2l0aCBxdW90YSBlbmFibGVkIGZhaWxlZCB3aXRoICRzdGF0dXMiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorcm0gLWYgJFRNUEZJTEUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X3F1b3RhXzJvZmYvbmFtZSBiL2UyZnNwcm9ncy90ZXN0cy90X3F1b3RhXzJvZmYvbmFtZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjBlYzk4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMm9mZi9uYW1lCkBAIC0wLDAgKzEgQEAKK2Rpc2FibGUgcXVvdGEgdXNpbmcgdHVuZTJmcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMm9mZi9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdF9xdW90YV8yb2ZmL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTcwYzU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfcXVvdGFfMm9mZi9zY3JpcHQKQEAgLTAsMCArMSwzNSBAQAorRlNDS19PUFQ9LXlmCisKK2lmIFsgIiRRVU9UQSIgIT0gInkiIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogc2tpcHBlZCIKKwlyZXR1cm4gMAorZmkKKworJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtYiA0MDk2IC1PIHF1b3RhICRUTVBGSUxFIDEwMCA+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgIT0gMCBdIDsgdGhlbgorCWVjaG8gIm1rZTJmcyAtTyBxdW90YSBmYWlsZWQiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCiskVFVORTJGUyAtTyBecXVvdGEgJFRNUEZJTEUgPj4gJHRlc3RfbmFtZS5sb2cgMj4mMQorc3RhdHVzPSQ/CitpZiBbICIkc3RhdHVzIiAhPSAwIF0gOyB0aGVuCisJZWNobyAidHVuZTJmcyAtTyBecXVvdGEgZmFpbGVkIiA+ICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlyZXR1cm4gJHN0YXR1cworZmkKKworJEZTQ0sgJEZTQ0tfT1BUICRUTVBGSUxFID4+ICR0ZXN0X25hbWUubG9nIDI+JjEKK3N0YXR1cz0kPworaWYgWyAiJHN0YXR1cyIgPSAwIF0gOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwllY2hvICJlMmZzY2sgd2l0aCBxdW90YSBlbmFibGVkIGZhaWxlZCB3aXRoICRzdGF0dXMiID4gJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorCXJldHVybiAkc3RhdHVzCitmaQorCitybSAtZiAkVE1QRklMRQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfcmVwbGF5X2FuZF9zZXQvZXhwZWN0IGIvZTJmc3Byb2dzL3Rlc3RzL3RfcmVwbGF5X2FuZF9zZXQvZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTE5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9yZXBsYXlfYW5kX3NldC9leHBlY3QKQEAgLTAsMCArMSwzNiBAQAorNjQtYml0IGZpbGVzeXN0ZW0gc3VwcG9ydCBpcyBub3QgZW5hYmxlZC4gIFRoZSBsYXJnZXIgZmllbGRzIGFmZm9yZGVkIGJ5IHRoaXMgZmVhdHVyZSBlbmFibGUgZnVsbC1zdHJlbmd0aCBjaGVja3N1bW1pbmcuICBQYXNzIC1PIDY0Yml0IHRvIHJlY3RpZnkuCitDcmVhdGluZyBmaWxlc3lzdGVtIHdpdGggNjU1MzYgNGsgYmxvY2tzIGFuZCAxNjM4NCBpbm9kZXMKK1N1cGVyYmxvY2sgYmFja3VwcyBzdG9yZWQgb24gYmxvY2tzOiAKKwkzMjc2OAorCitBbGxvY2F0aW5nIGdyb3VwIHRhYmxlczogICAgCAgIZG9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK1dyaXRpbmcgaW5vZGUgdGFibGVzOiAgICAICAhkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorQ3JlYXRpbmcgam91cm5hbCAoNDA5NiBibG9ja3MpOiBkb25lCitXcml0aW5nIHN1cGVyYmxvY2tzIGFuZCBmaWxlc3lzdGVtIGFjY291bnRpbmcgaW5mb3JtYXRpb246ICAgIAgICGRvbmUKKworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvMTYzODQgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCA1MTY0LzY1NTM2IGJsb2NrcworRXhpdCBzdGF0dXMgaXMgMAorZGVidWdmcyB3cml0ZSBqb3VybmFsCitkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBkaXJ0eS1qb3VybmFsIGZzCitSZWNvdmVyaW5nIGpvdXJuYWwuCitmc2NrIHRoZSB3aG9sZSBtZXNzCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgorQmxvY2sgYml0bWFwIGRpZmZlcmVuY2VzOiAgKygwLS0xMDUwKSArKDMyNzY4LS0zNjg4MCkKK0ZpeD8geWVzCisKK0lub2RlIGJpdG1hcCBkaWZmZXJlbmNlczogICsoMS0tMTEpCitGaXg/IHllcworCisKK3Rlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCit0ZXN0X2ZpbGVzeXM6IDExLzE2Mzg0IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgNTE2NC82NTUzNiBibG9ja3MKK0V4aXQgc3RhdHVzIGlzIDEKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X3JlcGxheV9hbmRfc2V0L25hbWUgYi9lMmZzcHJvZ3MvdGVzdHMvdF9yZXBsYXlfYW5kX3NldC9uYW1lCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNDc1OWUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF9yZXBsYXlfYW5kX3NldC9uYW1lCkBAIC0wLDAgKzEgQEAKK3JlY292ZXIgam91cm5hbCBhbmQgY2xlYXIgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X3JlcGxheV9hbmRfc2V0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X3JlcGxheV9hbmRfc2V0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmUxMGVhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3RfcmVwbGF5X2FuZF9zZXQvc2NyaXB0CkBAIC0wLDAgKzEsNjAgQEAKK2lmIHRlc3QgLXggJERFQlVHRlNfRVhFOyB0aGVuCisKK0ZTQ0tfT1BUPS1meQorT1VUPSR0ZXN0X25hbWUubG9nCitpZiBbIC1mICR0ZXN0X2Rpci9leHBlY3QuZ3ogXTsgdGhlbgorCUVYUD0kdGVzdF9uYW1lLnRtcAorCWd1bnppcCA8ICR0ZXN0X2Rpci9leHBlY3QuZ3ogPiAkRVhQMQorZWxzZQorCUVYUD0kdGVzdF9kaXIvZXhwZWN0CitmaQorCitjcCAvZGV2L251bGwgJE9VVAorCiskTUtFMkZTIC1GIC1vIExpbnV4IC1iIDQwOTYgLU8gaGFzX2pvdXJuYWwsbWV0YWRhdGFfY3N1bSAtVCBleHQ0ICRUTVBGSUxFIDY1NTM2IDI+JjEgfCBzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA+PiAkT1VUIDI+JjEKKworJEZTQ0sgLWZ5IC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+ICRPVVQubmV3IDI+JjEKK3N0YXR1cz0kPworZWNobyBFeGl0IHN0YXR1cyBpcyAkc3RhdHVzID4+ICRPVVQubmV3CitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCAtZSAiczskVE1QRklMRTt0ZXN0LmltZzsiICRPVVQubmV3ID4+ICRPVVQKK3JtIC1mICRPVVQubmV3CisKK2JpdG1hcHM9IiQoJERVTVBFMkZTICRUTVBGSUxFIDI+JjEgfCBncmVwICdiaXRtYXAgYXQnIHwgc2VkIC1lICdzL14uKmJpdG1hcCBhdCBcKFswLTldKlwpLiokL1wxL2cnIHwgdHIgJ1xuJyAnLCcpIgorCitlY2hvICJkZWJ1Z2ZzIHdyaXRlIGpvdXJuYWwiID4+ICRPVVQKK2VjaG8gImpvIiA+ICRUTVBGSUxFLmNtZAorZWNobyAiancgLWIgJGJpdG1hcHMgL2Rldi96ZXJvIiA+PiAkVE1QRklMRS5jbWQKK2VjaG8gImpjIiA+PiAkVE1QRklMRS5jbWQKKyRERUJVR0ZTX0VYRSAtdyAtZiAkVE1QRklMRS5jbWQgJFRNUEZJTEUgMj4+ICRPVVQubmV3ID4gL2Rldi9udWxsCitzZWQgLWYgJGNtZF9kaXIvZmlsdGVyLnNlZCA8ICRPVVQubmV3ID4+ICRPVVQKK3JtIC1yZiAkT1VULm5ldworCitlY2hvICJkaXNhYmxlIG1ldGFkYXRhX2NzdW0gb24gYSBkaXJ0eS1qb3VybmFsIGZzIiA+PiAkT1VUCiskVFVORTJGUyAtTyBebWV0YWRhdGFfY3N1bSAkVE1QRklMRSAyPiYxIHwgc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgPj4gJE9VVCAyPiYxCisKK2VjaG8gImZzY2sgdGhlIHdob2xlIG1lc3MiID4+ICRPVVQKKyRGU0NLIC1meSAtTiB0ZXN0X2ZpbGVzeXMgJFRNUEZJTEUgPiAkT1VULm5ldyAyPiYxCitzdGF0dXM9JD8KK2VjaG8gRXhpdCBzdGF0dXMgaXMgJHN0YXR1cyA+PiAkT1VULm5ldworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+PiAkT1VUCitybSAtZiAkT1VULm5ldworCitybSAtZiAkVE1QRklMRSAkVE1QRklMRS5jbWQKKworY21wIC1zICRPVVQgJEVYUAorc3RhdHVzPSQ/CisKK2lmIFsgIiRzdGF0dXMiID0gMCBdIDsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKKwlkaWZmICRESUZGX09QVFMgJEVYUCAkT1VUID4gJHRlc3RfbmFtZS5mYWlsZWQKKwlybSAtZiAkdGVzdF9uYW1lLnRtcAorZmkKKwordW5zZXQgSU1BR0UgRlNDS19PUFQgT1VUIEVYUAorCitlbHNlICNpZiB0ZXN0IC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBza2lwcGVkIgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90X3VuaW5pdF9iZ19ybS9leHBlY3QgYi9lMmZzcHJvZ3MvdGVzdHMvdF91bmluaXRfYmdfcm0vZXhwZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZjhiNTEKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdF91bmluaXRfYmdfcm0vZXhwZWN0CkBAIC0wLDAgKzEsMjEgQEAKK21rZTJmcyAtcSAtdCBleHQ0IC1GIC1vIExpbnV4IC1iIDEwMjQgdGVzdC5pbWcgMUcKK3R1bmUyZnMgLWYgLU8gXnVuaW5pdF9iZyB0ZXN0LmltZworIAorZnNjayAteWYgLU4gdGVzdF9maWxlc3lzIHRlc3QuaW1nCitQYXNzIDE6IENoZWNraW5nIGlub2RlcywgYmxvY2tzLCBhbmQgc2l6ZXMKK1Bhc3MgMjogQ2hlY2tpbmcgZGlyZWN0b3J5IHN0cnVjdHVyZQorUGFzcyAzOiBDaGVja2luZyBkaXJlY3RvcnkgY29ubmVjdGl2aXR5CitQYXNzIDQ6IENoZWNraW5nIHJlZmVyZW5jZSBjb3VudHMKK1Bhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgordGVzdF9maWxlc3lzOiAxMS82NTUzNiBmaWxlcyAoMC4wJSBub24tY29udGlndW91cyksIDM1OTEwLzEwNDg1NzYgYmxvY2tzCisgCitta2UyZnMgLXEgLXQgZXh0NCAtTyBiaWdhbGxvYyAtRiAtbyBMaW51eCAtYiAxMDI0IC1DIDgxOTIgdGVzdC5pbWcgMTBHCit0dW5lMmZzIC1mIC1PIF51bmluaXRfYmcgdGVzdC5pbWcKKyAKK2ZzY2sgLXlmIC1OIHRlc3RfZmlsZXN5cyB0ZXN0LmltZworUGFzcyAxOiBDaGVja2luZyBpbm9kZXMsIGJsb2NrcywgYW5kIHNpemVzCitQYXNzIDI6IENoZWNraW5nIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKK1Bhc3MgMzogQ2hlY2tpbmcgZGlyZWN0b3J5IGNvbm5lY3Rpdml0eQorUGFzcyA0OiBDaGVja2luZyByZWZlcmVuY2UgY291bnRzCitQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KK3Rlc3RfZmlsZXN5czogMTEvNjU1MzYwIGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMjMyNjMyLzEwNDg1NzYwIGJsb2NrcwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3RfdW5pbml0X2JnX3JtL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy90X3VuaW5pdF9iZ19ybS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA4ZWYyNQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90X3VuaW5pdF9iZ19ybS9zY3JpcHQKQEAgLTAsMCArMSw1NiBAQAordGVzdF9kZXNjcmlwdGlvbj0icmVtb3ZlIHVuaW5pdF9iZyIKK09VVD0kdGVzdF9uYW1lLmxvZworRlNDS19PUFQ9LXlmCitFWFA9JHRlc3RfZGlyL2V4cGVjdAorCitpZiBbICQodW5hbWUgLXMpID0gIkRhcndpbiIgXTsgdGhlbgorCSMgY3JlYXRlcyBhIDEwR0IgZmlsZXN5c3RlbQorCWVjaG8gIiR0ZXN0X25hbWU6ICRERVNDUklQVElPTjogc2tpcHBlZCBmb3IgSEZTKyAobm8gc3BhcnNlIGZpbGVzKSIKKwlyZXR1cm4gMAorZmkKKworY3AgL2Rldi9udWxsICRUTVBGSUxFCitybSAtZiAkT1VULm5ldworCitlY2hvIG1rZTJmcyAtcSAtdCBleHQ0IC1GIC1vIExpbnV4IC1iIDEwMjQgJFRNUEZJTEUgMUcgPj4gJE9VVC5uZXcKKyRNS0UyRlMgLXEgLXQgZXh0NCAtRiAtbyBMaW51eCAtYiAxMDI0ICRUTVBGSUxFIDFHID4+ICRPVVQubmV3IDI+JjEKKworZWNobyAidHVuZTJmcyAtZiAtTyBedW5pbml0X2JnICRUTVBGSUxFIiA+PiAkT1VULm5ldworJFRVTkUyRlMgLWYgLU8gXnVuaW5pdF9iZyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCisKK2VjaG8gIiAiID4+ICRPVVQubmV3CitlY2hvIGZzY2sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyB0ZXN0LmltZyA+PiAkT1VULm5ldworJEZTQ0sgJEZTQ0tfT1BUIC1OIHRlc3RfZmlsZXN5cyAkVE1QRklMRSA+PiAkT1VULm5ldyAyPiYxCisKK2VjaG8gIiAiID4+ICRPVVQubmV3CitjcCAvZGV2L251bGwgJFRNUEZJTEUKK2VjaG8gbWtlMmZzIC1xIC10IGV4dDQgLU8gYmlnYWxsb2MgLUYgLW8gTGludXggLWIgMTAyNCAtQyA4MTkyICRUTVBGSUxFIDEwRyA+PiAkT1VULm5ldworJE1LRTJGUyAtcSAtdCBleHQ0IC1PIGJpZ2FsbG9jIC1GIC1vIExpbnV4IC1iIDEwMjQgLUMgODE5MiAkVE1QRklMRSAxMEcgPj4gJE9VVC5uZXcgMj4mMQorCitlY2hvICJ0dW5lMmZzIC1mIC1PIF51bmluaXRfYmcgJFRNUEZJTEUiID4+ICRPVVQubmV3CiskVFVORTJGUyAtZiAtTyBedW5pbml0X2JnICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKKworZWNobyAiICIgPj4gJE9VVC5uZXcKK2VjaG8gZnNjayAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzIHRlc3QuaW1nID4+ICRPVVQubmV3CiskRlNDSyAkRlNDS19PUFQgLU4gdGVzdF9maWxlc3lzICRUTVBGSUxFID4+ICRPVVQubmV3IDI+JjEKKworc2VkIC1mICRjbWRfZGlyL2ZpbHRlci5zZWQgLWUgInM7JFRNUEZJTEU7dGVzdC5pbWc7IiAkT1VULm5ldyA+ICRPVVQKKworcm0gLWYgJE9VVC5uZXcgJFRNUEZJTEUKKworIworIyBEbyB0aGUgdmVyaWZpY2F0aW9uCisjCisKK2NtcCAtcyAkT1VUICRFWFAKK3N0YXR1cz0kPworCitpZiBbICIkc3RhdHVzIiA9IDAgXSA7IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCisJZGlmZiAkRElGRl9PUFRTICRFWFAgJE9VVCA+ICR0ZXN0X25hbWUuZmFpbGVkCitmaQorCit1bnNldCBJTUFHRSBGU0NLX09QVCBPVVQgRVhQCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdGVzdF9jb25maWcgYi9lMmZzcHJvZ3MvdGVzdHMvdGVzdF9jb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3ZWY0YwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90ZXN0X2NvbmZpZwpAQCAtMCwwICsxLDQzIEBACisjCisjIFRlc3QgY29uZmlndXJhdGlvbgorIworCit1bnNldCBMQU5HIExBTkdVQUdFIExDX0FERFJFU1MgTENfQUxMIExDX0NPTExBVEUgTENfQ1RZUEUgTENfSURFTlRJRklDQVRJT04gTENfTUVBU1VSRU1FTlQgTENfTUVTU0FHRVMgTENfTU9ORVRBUlkgTENfTkFNRSBMQ19OVU1FUklDIExDX1BBUEVSIExDX1RFTEVQSE9ORSBMQ19USU1FIFBBR0VSCitGU0NLPSIkVVNFX1ZBTEdSSU5EIC4uL2UyZnNjay9lMmZzY2siCitNS0UyRlM9IiRVU0VfVkFMR1JJTkQgLi4vbWlzYy9ta2UyZnMiCitEVU1QRTJGUz0iJFVTRV9WQUxHUklORCAuLi9taXNjL2R1bXBlMmZzIgorVFVORTJGUz0iJFVTRV9WQUxHUklORCAuLi9taXNjL3R1bmUyZnMiCitDSEFUVFI9IiRVU0VfVkFMR1JJTkQuLi9taXNjL2NoYXR0ciIKK0xTQVRUUj0iJFVTRV9WQUxHUklORCAuLi9taXNjL2xzYXR0ciIKK0UySU1BR0U9IiRVU0VfVkFMR1JJTkQgLi4vbWlzYy9lMmltYWdlIgorRTJJTUFHRV9FWEU9Ii4uL21pc2MvZTJpbWFnZSIKK0RFQlVHRlM9IiRVU0VfVkFMR1JJTkQgLi4vZGVidWdmcy9kZWJ1Z2ZzIgorREVCVUdGU19FWEU9Ii4uL2RlYnVnZnMvZGVidWdmcyIKK1RFU1RfQklUUz0iLi4vZGVidWdmcy9kZWJ1Z2ZzIgorUkVTSVpFMkZTX0VYRT0iLi4vcmVzaXplL3Jlc2l6ZTJmcyIKK1JFU0laRTJGUz0iJFVTRV9WQUxHUklORCAkUkVTSVpFMkZTX0VYRSIKK0UyVU5ET19FWEU9Ii4uL21pc2MvZTJ1bmRvIgorRTJVTkRPPSIkVVNFX1ZBTEdSSU5EICRFMlVORE9fRVhFIgorVEVTVF9SRUw9Li4vdGVzdHMvcHJvZ3MvdGVzdF9yZWwKK1RFU1RfSUNPVU5UPS4uL3Rlc3RzL3Byb2dzL3Rlc3RfaWNvdW50CitDUkNTVU09Li4vdGVzdHMvcHJvZ3MvY3Jjc3VtCitDTEVBTl9PVVRQVVQ9InNlZCAtZiAkY21kX2Rpci9maWx0ZXIuc2VkIgorTERfTElCUkFSWV9QQVRIPS4uL2xpYjouLi9saWIvZXh0MmZzOi4uL2xpYi9lMnA6Li4vbGliL2V0Oi4uL2xpYi9zczoke0xEX0xJQlJBUllfUEFUSH0KK0RZTERfTElCUkFSWV9QQVRIPS4uL2xpYjouLi9saWIvZXh0MmZzOi4uL2xpYi9lMnA6Li4vbGliL2V0Oi4uL2xpYi9zczoke0RZTERfTElCUkFSWV9QQVRIfQorZXhwb3J0IExEX0xJQlJBUllfUEFUSAorZXhwb3J0IERZTERfTElCUkFSWV9QQVRICitUWj1HTVQwCitleHBvcnQgVFoKK0xDX0FMTD1DCitleHBvcnQgTENfQUxMCitFMkZTQ0tfQ09ORklHPS9kZXYvbnVsbAorZXhwb3J0IEUyRlNDS19DT05GSUcKK01LRTJGU19DT05GSUc9Li9ta2UyZnMuY29uZgorZXhwb3J0IE1LRTJGU19DT05GSUcKK3Vuc2V0IE1LRTJGU19GSVJTVF9NRVRBX0JHCitFMkZTUFJPR1NfU0tJUF9QUk9HUkVTUz15ZXMKK2V4cG9ydCBFMkZTUFJPR1NfU0tJUF9QUk9HUkVTUworRVhUMkZTX05PX01UQUJfT0s9eWVzCitleHBvcnQgRVhUMkZTX05PX01UQUJfT0sKK0UyRlNQUk9HU19MSUJNQUdJQ19TVVBQUkVTUz15ZXMKK2V4cG9ydCBFMkZTUFJPR1NfTElCTUFHSUNfU1VQUFJFU1MKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy90ZXN0X29uZS5pbiBiL2UyZnNwcm9ncy90ZXN0cy90ZXN0X29uZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjMwZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3Rlc3Rfb25lLmluCkBAIC0wLDAgKzEsNzAgQEAKKyMhL2Jpbi9zaAorIyBydW4gYSBzaW5nbGUgcmVncmVzc2lvbiB0ZXN0CisKK0xDX0FMTD1DCitleHBvcnQgTENfQUxMCisKK2Nhc2UgIiQxIiBpbgorICAgIC0tdmFsZ3JpbmQpCisgICAgCWV4cG9ydCBVU0VfVkFMR1JJTkQ9InZhbGdyaW5kIC1xIC0tc2ltLWhpbnRzPWxheC1pb2N0bHMiCisJc2hpZnQ7CisJOzsKKyAgICAtLXZhbGdyaW5kLWxlYWtjaGVjaykKKyAgICAJZXhwb3J0IFVTRV9WQUxHUklORD0idmFsZ3JpbmQgLS1zaW0taGludHM9bGF4LWlvY3RscyAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyAtLWxvZy1maWxlPS90bXAvdmFsZ3JpbmQtJXAubG9nIgorCXNoaWZ0OworCTs7Citlc2FjCisKK2Nhc2UgIiQxIiBpbgorICAgICouZmFpbGVkfCoubmV3fCoub2t8Ki5sb2d8Ki50bXApCWV4aXQgMCA7OworZXNhYworCit0ZXN0X2Rpcj0kMQorY21kX2Rpcj0kU1JDRElSCisKK2lmIHRlc3QgIiRURVNUX0NPTkZJRyJ4ID0geDsgdGhlbgorCVRFU1RfQ09ORklHPSRTUkNESVIvdGVzdF9jb25maWcKK2ZpCisKKy4gJFRFU1RfQ09ORklHCisKK3Rlc3RfbmFtZT1gZWNobyAkdGVzdF9kaXIgfCBzZWQgLWUgJ3M7LiovOzsnYAorCitUTVBGSUxFPSQobWt0ZW1wICR7VE1QRElSOi0vdG1wfS9lMmZzcHJvZ3MtdG1wLSR0ZXN0X25hbWUuWFhYWFhYKQordHJhcCAncm0gLWYgJFRNUEZJTEUgOyBleGl0JyAxIDIgMTUKKworaWYgWyAtZiAkdGVzdF9kaXIgXSA7IHRoZW4KKwlleGl0IDA7CitmaQoraWYgWyAhIC1kICR0ZXN0X2RpciBdIDsgdGhlbgorCWVjaG8gIlRoZSB0ZXN0ICckdGVzdF9uYW1lJyBkb2VzIG5vdCBleGlzdC4iCisJZXhpdCAwOworZmkKK2lmIFsgLXogImBscyAkdGVzdF9kaXJgIiBdOyB0aGVuCisJZXhpdCAwCitmaQoraWYgWyAtZiAkdGVzdF9kaXIvbmFtZSBdOyB0aGVuCisJdGVzdF9kZXNjcmlwdGlvbj1gY2F0ICR0ZXN0X2Rpci9uYW1lYAorZWxzZQorCXRlc3RfZGVzY3JpcHRpb249CitmaQorCitybSAtZiAkdGVzdF9uYW1lLm9rICR0ZXN0X25hbWUuZmFpbGVkCisjZWNobyAtZSAtbiAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246XHIiCisKK2lmIFsgLWYgJHRlc3RfZGlyL3NjcmlwdCBdOyB0aGVuCisJLiAkdGVzdF9kaXIvc2NyaXB0CitlbHNlCisJdGVzdF9iYXNlPWBlY2hvICR0ZXN0X25hbWUgfCBzZWQgLWUgJ3MvXy4qLy8nYAorCWRlZmF1bHRfc2NyaXB0PSRTUkNESVIvZGVmYXVsdHMvJHt0ZXN0X2Jhc2V9X3NjcmlwdAorCWlmIFsgLWYgJGRlZmF1bHRfc2NyaXB0IF07IHRoZW4KKwkJLiAkU1JDRElSL2RlZmF1bHRzLyR7dGVzdF9iYXNlfV9zY3JpcHQKKwllbHNlCisJCWVjaG8gIiR0ZXN0X25hbWU6IE1pc3NpbmcgdGVzdCBzY3JpcHQgJGRlZmF1bHRfc2NyaXB0ISIKKwlmaQorZmkKKworaWYgWyAiJFNLSVBfVU5MSU5LIiAhPSAidHJ1ZSIgXSA7IHRoZW4KKwlybSAtZiAkVE1QRklMRQorZmkKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Rlc3RfcG9zdCBiL2UyZnNwcm9ncy90ZXN0cy90ZXN0X3Bvc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTI1MTI2NgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy90ZXN0X3Bvc3QKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisjIHJlcG9ydCBzdGF0cyBhYm91dCB0ZXN0IHNjcmlwdHMgdGhhdCB3ZXJlIHJ1bgorCitudW1fb2s9YGxzICoub2sgMj4vZGV2L251bGwgfCB3YyAtbGAKK251bV9mYWlsZWQ9YGxzICouZmFpbGVkIDI+L2Rldi9udWxsIHwgd2MgLWxgCisKK2VjaG8gIiRudW1fb2sgdGVzdHMgc3VjY2VlZGVkCSRudW1fZmFpbGVkIHRlc3RzIGZhaWxlZCIKKwordGVzdCAiJG51bV9mYWlsZWQiIC1lcSAwICYmIGV4aXQgMAorCitlY2hvIC1uICJUZXN0cyBmYWlsZWQ6ICIKK2ZvciBmbmFtZSBpbiAkKGxzICouZmFpbGVkKTsgZG8KKwllY2hvIC1uICIke2ZuYW1lJSUuZmFpbGVkfSAiCitkb25lCitlY2hvICIiCisKK2V4aXQgMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluIGIvZTJmc3Byb2dzL3Rlc3RzL3Rlc3Rfc2NyaXB0LmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5NTllMzAKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdGVzdF9zY3JpcHQuaW4KQEAgLTAsMCArMSw1MiBAQAorIyEvYmluL3NoCisjIFJ1biBhbGwgb3Igc3BlY2lmaWVkIHRlc3Qgc2NyaXB0cworIworCitjYXNlICIkMSIgaW4KKyAgICAtLXZhbGdyaW5kKQorICAgIAlleHBvcnQgVVNFX1ZBTEdSSU5EPSJ2YWxncmluZCAtcSAtLXNpbS1oaW50cz1sYXgtaW9jdGxzIgorCXNoaWZ0CisJOzsKKyAgICAtLXZhbGdyaW5kLWxlYWtjaGVjaykKKyAgICAJZXhwb3J0IFVTRV9WQUxHUklORD0idmFsZ3JpbmQgLS1zaW0taGludHM9bGF4LWlvY3RscyAtLWxlYWstY2hlY2s9ZnVsbCAtLXNob3ctcmVhY2hhYmxlPXllcyAtLWxvZy1maWxlPS90bXAvdmFsZ3JpbmQtJXAubG9nIgorCXNoaWZ0CisJOzsKKyAgICAtLWZhaWxlZCkKKwlET19GQUlMRUQ9eWVzCisJc2hpZnQKKwk7OworZXNhYworCitURVNUUz0KKworaWYgdGVzdCAtbiAiJERPX0ZBSUxFRCI7IHRoZW4KKyAgICBGQUlMRUQ9JChmaW5kIC4gLW1heGRlcHRoIDEgLW5hbWUgXCouZmFpbGVkKQorICAgIGlmIHRlc3QgLXogIiRGQUlMRUQiIDsgdGhlbgorCWVjaG8gIiAiCisJZWNobyAiTm8gKG1vcmUpIGZhaWxlZCB0ZXN0cyEiCisJZWNobyAiICIKKyAgICBmaQorICAgIGZvciBmbmFtZSBpbiAkRkFJTEVEIDsgZG8KKwlURVNUUz0iJFRFU1RTICRTUkNESVIvJHtmbmFtZSUlLmZhaWxlZH0iCisgICAgZG9uZQorZmkKKworZm9yIGk7IGRvCisgIGNhc2UgJGkgaW4KKwlbYS16QS1aXSkJVEVTVFM9IiRURVNUUyAkU1JDRElSLyR7aX1fKiIgOzsKKwkqKQkJVEVTVFM9IiRURVNUUyAkU1JDRElSLyRpIiA7OworICBlc2FjCitkb25lCisKK2lmIHRlc3QgIiRURVNUUyJ4ID0geCA7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICJET19GQUlMRUQiOyB0aGVuCisJZXhpdCAwCisgICAgZmkKKyAgICBURVNUUz1gbHMgLWQgJFNSQ0RJUi9bYS16QS1aXV8qYAorZmkKKworZm9yIHRlc3RfZGlyIGluICRURVNUUzsgZG8KKwkuL3Rlc3Rfb25lICR0ZXN0X2RpcgorZG9uZQorCiskU1JDRElSL3Rlc3RfcG9zdApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfY29tcG91bmRfYmFkX3JvbGxiYWNrL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2NvbXBvdW5kX2JhZF9yb2xsYmFjay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0ZGE3ZgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2NvbXBvdW5kX2JhZF9yb2xsYmFjay9zY3JpcHQKQEAgLTAsMCArMSw2MiBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIHdpdGggbWtlMmZzL3R1bmUyZnMvcmVzaXplMmZzL2UyZnNjayAteiIKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L3Jlc2l6ZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorCitlY2hvIGNvbXBvdW5kIGUydW5kbyByb2xsYmFjayB0ZXN0ID4gJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIG1rZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgLXogJFREQl9GSUxFLjAgJFRNUEZJTEUgMjU2ID4+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAteiAkVERCX0ZJTEUuMCAkVE1QRklMRSAyNTYgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIG1rZTJmcyAkY3JjMSA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtTyBtZXRhZGF0YV9jc3VtIC16ICRUREJfRklMRS4xICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMyID4+ICRPVVQKKworZWNobyB1c2luZyByZXNpemUyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJFJFU0laRTJGUyAteiAkVERCX0ZJTEUuMiAkVE1QRklMRSA1MTIgPj4gJE9VVCAyPiYxCitjcmMzPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHJlc2l6ZTJmcyAkY3JjMyA+PiAkT1VUCisKK2VjaG8gdXNpbmcgZTJmc2NrIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRGU0NLIC1mIC15IC1EIC16ICRUREJfRklMRS4zICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjND1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMmZzY2sgJGNyYzQgPj4gJE9VVAorCitlY2hvIHJvbGwgYmFjayBta2UyZnMgPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUuMCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwXzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIG1rZTJmcyAkY3JjMF8yID4+ICRPVVQKKworZWNobyByb2xsIGJhY2sgdHVuZTJmcyA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4xICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzFfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gdHVuZTJmcyAkY3JjMV8yID4+ICRPVVQKKworZWNobyByb2xsIGJhY2sgcmVzaXplMmZzID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjIgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMl8yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyByZXNpemUyZnMgJGNyYzJfMiA+PiAkT1VUCisKK2VjaG8gcm9sbCBiYWNrIGUyZnNjayA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4zICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzNfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gZTJmc2NrICRjcmMzXzIgPj4gJE9VVAorCitpZiBbICRjcmM0ID0gJGNyYzBfMiBdICYmIFsgJGNyYzQgPSAkY3JjMV8yIF0gJiYgWyAkY3JjNCA9ICRjcmMyXzIgXSAmJiBbICRjcmMzID0gJGNyYzNfMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFLjAgJFREQl9GSUxFLjEgJFREQl9GSUxFLjIgJFREQl9GSUxFLjMgJFRNUEZJTEUKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV9jb21wb3VuZF9yb2xsYmFjay9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV9jb21wb3VuZF9yb2xsYmFjay9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxZmJjYwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2NvbXBvdW5kX3JvbGxiYWNrL3NjcmlwdApAQCAtMCwwICsxLDYyIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJlMnVuZG8gd2l0aCBta2UyZnMvdHVuZTJmcy9yZXNpemUyZnMvZTJmc2NrIC16IgoraWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitUREJfRklMRT0ke1RNUERJUjotL3RtcH0vcmVzaXplMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2VjaG8gY29tcG91bmQgZTJ1bmRvIHJvbGxiYWNrIHRlc3QgPiAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgbWtlMmZzICRjcmMwID4+ICRPVVQKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAteiAkVERCX0ZJTEUuMCAkVE1QRklMRSAyNTYgPj4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0IC16ICRUREJfRklMRS4wICRUTVBGSUxFIDI1NiA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgbWtlMmZzICRjcmMxID4+ICRPVVQKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFLjEgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMyPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzIgPj4gJE9VVAorCitlY2hvIHVzaW5nIHJlc2l6ZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskUkVTSVpFMkZTIC16ICRUREJfRklMRS4yICRUTVBGSUxFIDUxMiA+PiAkT1VUIDI+JjEKK2NyYzM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgcmVzaXplMmZzICRjcmMzID4+ICRPVVQKKworZWNobyB1c2luZyBlMmZzY2sgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJEZTQ0sgLWYgLXkgLUQgLXogJFREQl9GSUxFLjMgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmM0PWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUyZnNjayAkY3JjNCA+PiAkT1VUCisKK2VjaG8gcm9sbCBiYWNrIGUyZnNjayA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4zICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzNfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gZTJmc2NrICRjcmMzXzIgPj4gJE9VVAorCitlY2hvIHJvbGwgYmFjayByZXNpemUyZnMgPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUuMiAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMyXzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIHJlc2l6ZTJmcyAkY3JjMl8yID4+ICRPVVQKKworZWNobyByb2xsIGJhY2sgdHVuZTJmcyA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4xICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzFfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gdHVuZTJmcyAkY3JjMV8yID4+ICRPVVQKKworZWNobyByb2xsIGJhY2sgbWtlMmZzID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjAgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMF8yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyBta2UyZnMgJGNyYzBfMiA+PiAkT1VUCisKK2lmIFsgJGNyYzAgPSAkY3JjMF8yIF0gJiYgWyAkY3JjMSA9ICRjcmMxXzIgXSAmJiBbICRjcmMyID0gJGNyYzJfMiBdICYmIFsgJGNyYzMgPSAkY3JjM18yIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWxuIC1mICR0ZXN0X25hbWUubG9nICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCitybSAtZiAkVERCX0ZJTEUuMCAkVERCX0ZJTEUuMSAkVERCX0ZJTEUuMiAkVERCX0ZJTEUuMyAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfYmxrX2NzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfY29ycnVwdF9ibGtfY3N1bS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUxNjU1MgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfYmxrX2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsMzggQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNvcnJ1cHQgZTJ1bmRvIGJsb2NrIGRhdGEiCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK0UyRlNQUk9HU19VTkRPX0RJUj0ke1RNUERJUjotL3RtcH0KK2V4cG9ydCBFMkZTUFJPR1NfVU5ET19ESVIKK1REQl9GSUxFPSRFMkZTUFJPR1NfVU5ET19ESVIvdHVuZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLWIgMTAyNCAkVE1QRklMRSAgPiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1JIDEyOCAtYiAxMDI0ICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIHR1bmUyZnMgJGNyYzAgPj4gJE9VVAorCitlY2hvIHVzaW5nIHR1bmUyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJFRVTkUyRlMgLUkgMjU2ICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgdHVuZTJmcyAkY3JjMSA+PiAkT1VUCisKK3VuZG9fYmxrcz0kKCggJChzdGF0IC1jICclcycgJFREQl9GSUxFIDI+L2Rldi9udWxsIHx8IHN0YXQgLWYgJyV6JyAkVERCX0ZJTEUgMj4vZGV2L251bGwpIC8gMTAyNCApKQorZGQgaWY9L2Rldi96ZXJvIG9mPSRUREJfRklMRSBicz0xMDI0IGNvdW50PTEgc2Vlaz0kKCh1bmRvX2Jsa3MgLSAyKSkgY29udj1ub3RydW5jID4gL2Rldi9udWxsIDI+JjEKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK3Jlcz0kPworY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gJGNyYzIgPj4gJE9VVAorCitpZiBbICRyZXMgLW5lIDAgXSAmJiBbICRjcmMyID0gJGNyYzEgXSAmJiBbICRjcmMyICE9ICRjcmMwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWxuIC1mICR0ZXN0X25hbWUubG9nICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCitybSAtZiAkVERCX0ZJTEUgJFRNUEZJTEUKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV9jb3JydXB0X2Jsa19jc3VtX2ZvcmNlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfYmxrX2NzdW1fZm9yY2Uvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhODI3MjYKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9jb3JydXB0X2Jsa19jc3VtX2ZvcmNlL3NjcmlwdApAQCAtMCwwICsxLDM4IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJmb3JjZSByZXBsYXkgb2YgY29ycnVwdCBlMnVuZG8gYmxvY2sgZGF0YSIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworRTJGU1BST0dTX1VORE9fRElSPSR7VE1QRElSOi0vdG1wfQorZXhwb3J0IEUyRlNQUk9HU19VTkRPX0RJUgorVERCX0ZJTEU9JEUyRlNQUk9HU19VTkRPX0RJUi90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLUkgMTI4IC1iIDEwMjQgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgdHVuZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtSSAyNTYgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKwordW5kb19ibGtzPSQoKCAkKHN0YXQgLWMgJyVzJyAkVERCX0ZJTEUgMj4vZGV2L251bGwgfHwgc3RhdCAtZiAnJXonICRUREJfRklMRSAyPi9kZXYvbnVsbCkgLyAxMDI0ICkpCitkZCBpZj0vZGV2L3plcm8gb2Y9JFREQl9GSUxFIGJzPTEwMjQgY291bnQ9MSBzZWVrPSQoKHVuZG9fYmxrcyAtIDIpKSBjb252PW5vdHJ1bmMgPiAvZGV2L251bGwgMj4mMQorCiskRTJVTkRPIC1mICRUREJfRklMRSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCityZXM9JD8KK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMiAhPSAkY3JjMSBdICYmIFsgJGNyYzIgIT0gJGNyYzAgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfaGRyX2NzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfY29ycnVwdF9oZHJfY3N1bS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjMzhjOAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfaGRyX2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsMzcgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNvcnJ1cHQgZTJ1bmRvIGhlYWRlciIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworRTJGU1BST0dTX1VORE9fRElSPSR7VE1QRElSOi0vdG1wfQorZXhwb3J0IEUyRlNQUk9HU19VTkRPX0RJUgorVERCX0ZJTEU9JEUyRlNQUk9HU19VTkRPX0RJUi90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLUkgMTI4IC1iIDEwMjQgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgdHVuZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtSSAyNTYgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUREJfRklMRSBicz0yNTYgY291bnQ9MSBzZWVrPTEgY29udj1ub3RydW5jID4gL2Rldi9udWxsIDI+JjEKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK3Jlcz0kPworY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gJGNyYzIgPj4gJE9VVAorCitpZiBbICRyZXMgLW5lIDAgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfa2V5X2NzdW0vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfY29ycnVwdF9rZXlfY3N1bS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA3NTU2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2NvcnJ1cHRfa2V5X2NzdW0vc2NyaXB0CkBAIC0wLDAgKzEsMzcgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNvcnJ1cHQgZTJ1bmRvIGtleSBkYXRhIgoraWYgdGVzdCAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitFMkZTUFJPR1NfVU5ET19ESVI9JHtUTVBESVI6LS90bXB9CitleHBvcnQgRTJGU1BST0dTX1VORE9fRElSCitUREJfRklMRT0kRTJGU1BST0dTX1VORE9fRElSL3R1bmUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1iIDEwMjQgJFRNUEZJTEUgID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtSSAxMjggLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSB0dW5lMmZzICRjcmMwID4+ICRPVVQKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1JIDI1NiAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzEgPj4gJE9VVAorCit1bmRvX2Jsa3M9JCgoICQoc3RhdCAtYyAnJXMnICRUREJfRklMRSAyPi9kZXYvbnVsbCB8fCBzdGF0IC1mICcleicgJFREQl9GSUxFIDI+L2Rldi9udWxsKSAvIDEwMjQgKSkKK2RkIGlmPS9kZXYvemVybyBvZj0kVERCX0ZJTEUgYnM9MTAyNCBjb3VudD0xIHNlZWs9JCgodW5kb19ibGtzIC0gMSkpIGNvbnY9bm90cnVuYyA+IC9kZXYvbnVsbCAyPiYxCisKKyRFMlVORE8gICRUREJfRklMRSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMyPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyAkY3JjMiA+PiAkT1VUCisKK2lmIFsgJGNyYzAgIT0gJGNyYzEgXSAmJiBbICRjcmMxID0gJGNyYzIgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X2RlYnVnZnNfb3B0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2RlYnVnZnNfb3B0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjkzOTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfZGVidWdmc19vcHQvc2NyaXB0CkBAIC0wLDAgKzEsMzIgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyB3aXRoIGRlYnVnZnMgLXoiCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFIC1hIC14ICRERUJVR0ZTX0VYRTsgdGhlbgorCitUREJfRklMRT0ke1RNUERJUjotL3RtcH0vdHVuZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgZGVidWdmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgZGVidWdmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskREVCVUdGUyAtdyAteiAkVERCX0ZJTEUgLVIgJ3phcCAtcCAweDU1IDAnICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBkZWJ1Z2ZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfZHJ5cnVuL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2RyeXJ1bi9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkwZWY0NwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2RyeXJ1bi9zY3JpcHQKQEAgLTAsMCArMSwzMiBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIGRyeSBydW4iCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSB0dW5lMmZzICRjcmMwID4+ICRPVVQKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAtbiAkVERCX0ZJTEUgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gJGNyYzIgPj4gJE9VVAorCitpZiBbICRjcmMxID0gJGNyYzIgXSAmJiBbICRjcmMxICE9ICRjcmMwIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWxuIC1mICR0ZXN0X25hbWUubG9nICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCitybSAtZiAkVERCX0ZJTEUgJFRNUEZJTEUKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV9lMmZzY2tfb3B0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2UyZnNja19vcHQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MWNkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9lMmZzY2tfb3B0L3NjcmlwdApAQCAtMCwwICsxLDMyIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJlMnVuZG8gd2l0aCBlMmZzY2sgLXoiCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS9lMmZzY2stJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgJFRNUEZJTEUgID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIGUyZnNjayAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgZTJmc2NrIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRGU0NLIC1mIC15IC16ICRUREJfRklMRSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJmc2NrICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfZXJyb3JvdXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfZXJyb3JvdXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYzUzZGUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9lcnJvcm91dC9zY3JpcHQKQEAgLTAsMCArMSw0OSBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIGEgZmFpbGVkIGNvbW1hbmQiCitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS9yZXNpemUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZWNobyBjaGVjayB0aGF0IHdlIGNhbnQgYXBwZW5kIGEgYmFkIHVuZG8gZmlsZSA+ICRPVVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSBta2UyZnMgJGNyYzAgPj4gJE9VVAorCitDT05GPSRUTVBGSUxFLmNvbmYKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBeaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUKKwkJYmxvY2tzaXplID0gNDA5NgorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxSworCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0aCAtTyBebWV0YWRhdGFfY3N1bSxeNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgLXogJFREQl9GSUxFLjAgJFRNUEZJTEUgNTI0Mjg4ID4+ICRPVVQKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0aCAtTyBebWV0YWRhdGFfY3N1bSxeNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgLXogJFREQl9GSUxFLjAgLWQgL2V0Yy8gJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIG1rZTJmcyAkY3JjMSA+PiAkT1VUCisKK2VjaG8gcm9sbCBiYWNrIG1rZTJmcyA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4wICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIG1rZTJmcyAkY3JjMiA+PiAkT1VUCisKK2lmIFsgJGNyYzAgIT0gJGNyYzEgXSAmJiBbICRjcmMxICE9ICRjcmMyIF0gJiYgWyAkY3JjMCA9ICRjcmMyIF07IHRoZW4KKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggJHRlc3RfbmFtZS5vaworZWxzZQorCWxuIC1mICR0ZXN0X25hbWUubG9nICR0ZXN0X25hbWUuZmFpbGVkCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2ZpCitybSAtZiAkVERCX0ZJTEUuMCAkVE1QRklMRSAkQ09ORgorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X2ZvcmNlL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2ZvcmNlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjM5ZTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfZm9yY2Uvc2NyaXB0CkBAIC0wLDAgKzEsNDAgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyBmb3JjZSIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L3R1bmUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgJFRNUEZJTEUgID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIHR1bmUyZnMgJGNyYzAgPj4gJE9VVAorCitlY2hvIHVzaW5nIHR1bmUyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAteiAkVERCX0ZJTEUgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzEgPj4gJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFREQl9GSUxFIGJzPTQgY291bnQ9MSBzZWVrPTEyNyBjb252PW5vdHJ1bmMgMj4gL2Rldi9udWxsCisKKyRFMlVORE8gJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworJEUyVU5ETyAtZiAkVERCX0ZJTEUgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMz1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gLWYgJGNyYzMgPj4gJE9VVAorCitNVVNUX0ZTQ0s9JCgkRFVNUEUyRlMgJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBzdGF0ZTouKm5vdCBjbGVhbicgLWMgKQorCitpZiBbICRNVVNUX0ZTQ0sgLWVxIDEgXSAmJiBbICRjcmMwICE9ICRjcmMzIF0gJiYgWyAkY3JjMSA9ICRjcmMyIF0gJiYgWyAkY3JjMiAhPSAkY3JjMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfZm9yY2VfZHJ5cnVuL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X2ZvcmNlX2RyeXJ1bi9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJkNzYyNAotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X2ZvcmNlX2RyeXJ1bi9zY3JpcHQKQEAgLTAsMCArMSwzOCBAQAordGVzdF9kZXNjcmlwdGlvbj0iZm9yY2UgZHJ5LXJ1biByZXBsYXkgb2YgY29ycnVwdCBlMnVuZG8gYmxvY2sgZGF0YSIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworRTJGU1BST0dTX1VORE9fRElSPSR7VE1QRElSOi0vdG1wfQorZXhwb3J0IEUyRlNQUk9HU19VTkRPX0RJUgorVERCX0ZJTEU9JEUyRlNQUk9HU19VTkRPX0RJUi90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLUkgMTI4IC1iIDEwMjQgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgdHVuZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtSSAyNTYgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKwordW5kb19ibGtzPSQoKCAkKHN0YXQgLWMgJyVzJyAkVERCX0ZJTEUgMj4vZGV2L251bGwgfHwgc3RhdCAtZiAnJXonICRUREJfRklMRSAyPi9kZXYvbnVsbCkgLyAxMDI0ICkpCitkZCBpZj0vZGV2L3plcm8gb2Y9JFREQl9GSUxFIGJzPTEwMjQgY291bnQ9MSBzZWVrPSQoKHVuZG9fYmxrcyAtIDIpKSBjb252PW5vdHJ1bmMgPiAvZGV2L251bGwgMj4mMQorCiskRTJVTkRPIC1mIC1uICRUREJfRklMRSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCityZXM9JD8KK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMiA9ICRjcmMxIF0gJiYgWyAkY3JjMiAhPSAkY3JjMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfaW5jb21wbGV0ZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV9pbmNvbXBsZXRlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmM3ODU4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfaW5jb21wbGV0ZS9zY3JpcHQKQEAgLTAsMCArMSwzOCBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIHdpdGggaW5jb21wbGV0ZSB1bmRvIGZpbGUiCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSB0dW5lMmZzICRjcmMwID4+ICRPVVQKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKK1VORE9fSU9fU0lNVUxBVEVfVU5GSU5JU0hFRD0xICRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworJEZTQ0sgLXkgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitmc2NrX3Jlcz0kPworY3JjMz1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBmc2NrICRjcmMzID4+ICRPVVQKK2VjaG8gZnNjayByZXN1bHQgJGZzY2tfcmVzID4+ICRPVVQKKworaWYgWyAkY3JjMCAhPSAkY3JjMiBdICYmIFsgJGNyYzEgIT0gJGNyYzIgXSAmJiBbICRjcmMwICE9ICRjcmMxIF0gJiYgWyAkZnNja19yZXMgLWVxIDEgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X21rZTJmcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV9ta2UyZnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMDQxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9ta2UyZnMvc2NyaXB0CkBAIC0wLDAgKzEsMzQgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyB3aXRoIG1rZTJmcyIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworRTJGU1BST0dTX1VORE9fRElSPSR7VE1QRElSOi0vdG1wfQorZXhwb3J0IEUyRlNQUk9HU19VTkRPX0RJUgorVERCX0ZJTEU9JEUyRlNQUk9HU19VTkRPX0RJUi9ta2UyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1iIDEwMjQgdGVzdC5pbWcgID4gJE9VVAorJE1LRTJGUyAtRiAtbyBMaW51eCAtSSAxMjggLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIG1rZTJmcyAkY3JjID4+ICRPVVQKKworZWNobyB1c2luZyBta2UyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtSSAyNTYgLU8gdW5pbml0X2JnIC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK25ld19jcmM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgbWtlMmZzICRuZXdfY3JjID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK25ld19jcmM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRuZXdfY3JjID4+ICRPVVQKKworaWYgWyAkY3JjID0gJG5ld19jcmMgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X21rZTJmc19vcHQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfbWtlMmZzX29wdC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2MmFiMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X21rZTJmc19vcHQvc2NyaXB0CkBAIC0wLDAgKzEsMzIgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyB3aXRoIG1rZTJmcyAteiIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L21rZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLUYgLW8gTGludXggLUkgMTI4IC1iIDEwMjQgdGVzdC5pbWcgID4gJE9VVAorJE1LRTJGUyAtRiAtbyBMaW51eCAtSSAxMjggLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSBta2UyZnMgJGNyYzAgPj4gJE9VVAorCitlY2hvIHVzaW5nIG1rZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgLXogJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgbWtlMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfbWtlMmZzX29wdF9vZGRzaXplL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X21rZTJmc19vcHRfb2Rkc2l6ZS9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlMGI5ZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X21rZTJmc19vcHRfb2Rkc2l6ZS9zY3JpcHQKQEAgLTAsMCArMSwzMSBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIHdpdGggbWtlMmZzIC16IGFuZCBub24tMzJrLWFsaWduZWQgYmRldiBzaXplIgoraWYgdGVzdCAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitUREJfRklMRT0ke1RNUERJUjotL3RtcH0vbWtlMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQoreWVzICJhYmMxMjNhYmMxMjNhYmMiIHwgZGQgYnM9MWsgY291bnQ9OCA+PiAkVE1QRklMRSAyPiAvZGV2L251bGwKKworY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgbWtlMmZzICRjcmMwID4gJE9VVAorCitlY2hvIHVzaW5nIG1rZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgLXogJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgbWtlMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfbWtlMmZzX29wdF9vZmZzZXQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfbWtlMmZzX29wdF9vZmZzZXQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNmI3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9ta2UyZnNfb3B0X29mZnNldC9zY3JpcHQKQEAgLTAsMCArMSwxMDQgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyBhbmQgbWtlMmZzIHdpdGggb2Zmc2V0IG9wdGlvbiIKK09VVD0iJHRlc3RfbmFtZS5sb2ciCitUREJfRklMRT0iJFRNUEZJTEUuZTJ1bmRvIgorCitFMlVORE9fRkVBVFVSRV9DT01QQVRfT0ZGU0VUPTEKKwordHJhcCAicm0gLWYgJFREQl9GSUxFIiBFWElUIElOVCBRVUlUCisKK3Rlc3RfZTJ1bmRvX21rZTJmc19vZmYoKSB7CisJT0ZGPSQxCisKKwlybSAtZiAiJFREQl9GSUxFIgorCWVjaG8gInRlc3RpbmcgZTJ1bmRvIGFuZCBta2UyZnMgd2l0aCB0aGUgLUUgb2Zmc2V0PSRPRkYgb3B0aW9uIiA+PiAiJE9VVCIKKwkjIHByZXBhcmUgJFRNUEZJTEUKKwl5ZXMgYSB8IGRkIG9mPSIkVE1QRklMRSIgYnM9IiRPRkYiIGNvdW50PTEgaWZsYWc9ZnVsbGJsb2NrIFwKKwkJPiAvZGV2L251bGwgMj4+IiRPVVQiCisJeWVzIGIgfCBkZCBicz0xayBjb3VudD0xMDI0IGlmbGFnPWZ1bGxibG9jayA+PiAiJFRNUEZJTEUiIDI+PiIkT1VUIgorCXllcyBjIHwgZGQgYnM9MWsgY291bnQ9MyBpZmxhZz1mdWxsYmxvY2sgPj4gIiRUTVBGSUxFIiAyPj4iJE9VVCIKKworCWNyY19leHA9YCRDUkNTVU0gIiRUTVBGSUxFImAKKwkkTUtFMkZTIC1GIC16ICIkVERCX0ZJTEUiIC1iIDEwMjQgLUUgb2Zmc2V0PSIkT0ZGIiAiJFRNUEZJTEUiIDEwMjQgXAorCQk+PiAiJE9VVCIgMj4mMQorCisJIyBzdXBwbGVtZW50IHRlc3Qgd2l0aCBvZmZzZXQgc3BlY2lmaWMgZGF0YQorCXN1cHBsZW1lbnRfdGVzdF8kT0ZGCisKKwkjIGR1bXAgdW5kbyBoZWFkZXIgKGp1c3QgdG8gZWFzZSBkZWJ1Z2dpbmcgaW4gY2FzZSBvZiBhIGZhaWx1cmUpCisJZWNobyAidW5kbyBoZWFkZXI6IiA+PiAiJE9VVCIKKwkkRTJVTkRPIC1oICIkVERCX0ZJTEUiICIkVE1QRklMRSIgPj4gIiRPVVQiIDI+JjEKKworCSMgb2Zmc2V0IGlzIHN0b3JlZCBpbiB0aGUgdW5kbyBoZWFkZXIKKwkkRTJVTkRPICIkVERCX0ZJTEUiICIkVE1QRklMRSIgPj4gIiRPVVQiIDI+JjEKKwljcmNfYWN0PWAkQ1JDU1VNICIkVE1QRklMRSJgCisKKwkjIGFsc28gdGVzdCB0aGUga2V5IGV4dGVuc2lvbiBjb2RlIHBhdGg6IHRoZSBrZXkgZm9yIHRoZSBmcyBibG9jayA5NjAKKwkjICh0ZGIgYmxvY2sgMzApIGlzIGV4dGVuZGVkIGJ5IHRoZSBmcyBibG9jayA5OTIgKHRkYiBibG9jayAzMSkKKwkjID0+IHdlIGhhdmUgZXhhY3RseSAzIGtleSBibG9ja3MgaW5zdGVhZCBvZiA0CisJbnVtX2tleXNfZXhwPTMKKwludW1fa2V5c19hY3Q9YCRFMlVORE8gLWggIiRUREJfRklMRSIgIiRUTVBGSUxFIiB8IGdyZXAgIl5uciBrZXlzOiIgXAorCQl8IGN1dCAtZjJgCisKKwlvZmZzZXRfZXhwPSRPRkYKKwlvZmZzZXRfYWN0PWAkRTJVTkRPIC1oICIkVERCX0ZJTEUiICIkVE1QRklMRSIgfCBncmVwICJeZnMgb2Zmc2V0OiIgXAorCQl8IGN1dCAtZjJgCisJY29tcGF0X2V4cD0kRTJVTkRPX0ZFQVRVUkVfQ09NUEFUX09GRlNFVAorCWNvbXBhdF9hY3Q9YCRFMlVORE8gLWggIiRUREJfRklMRSIgIiRUTVBGSUxFIiB8IGdyZXAgIl5jb21wYXQ6IiB8IGN1dCAtZjNgCisKKwlpZiBbICIkY3JjX2V4cCIgIT0gIiRjcmNfYWN0IiAtbyBcCisJCSAiJG51bV9rZXlzX2V4cCIgIT0gIiRudW1fa2V5c19hY3QiIC1vIFwKKwkJICIkb2Zmc2V0X2V4cCIgIT0gIiRvZmZzZXRfYWN0IiAtbyBcCisJCSAkKCgkY29tcGF0X2FjdCAmICRFMlVORE9fRkVBVFVSRV9DT01QQVRfT0ZGU0VUKSkgLW5lICRjb21wYXRfZXhwIF0KKwkJIHRoZW4KKwkJZWNobyAibWtlMmZzIGNhbGxlZCB3aXRoIG9mZnNldDogJE9GRiIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjcmNfZXhwOiAkY3JjX2V4cCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjcmNfYWN0OiAkY3JjX2FjdCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJudW1fa2V5c19leHA6ICRudW1fa2V5c19leHAiID4+ICIkdGVzdF9uYW1lLmZhaWxlZCIKKwkJZWNobyAibnVtX2tleXNfYWN0OiAkbnVtX2tleXNfYWN0IiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJCWVjaG8gIm9mZnNldF9leHA6ICRvZmZzZXRfZXhwIiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJCWVjaG8gIm9mZnNldF9hY3Q6ICRvZmZzZXRfYWN0IiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJCWVjaG8gImNvbXBhdF9leHA6ICRjb21wYXRfZXhwIiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJCWVjaG8gImNvbXBhdF9hY3Q6ICRjb21wYXRfYWN0IiA+PiAiJHRlc3RfbmFtZS5mYWlsZWQiCisJCWVjaG8gPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCWZpCit9CisKK3N1cHBsZW1lbnRfdGVzdF8yMDQ4KCkgeworCSMgbW9kaWZ5IHRoZSB0d28gc3Vic2VxdWVudCAxayBibG9ja3MgKDEwMjYgYW5kIDEwMjcpIGFmdGVyIHRoZSBmcyBlbmQ6CisJIyBlMnVuZG8gd2lsbCBvdmVyd3JpdGUgdGhlc2UgbW9kaWZpZWQgYmxvY2tzIHdpdGggdGhlIG9sZAorCSMgZGF0YSBhZ2FpbiAodGhpcyBtaWdodCBiZSBjb25zaWRlcmVkIGFzIGEgYnVnIChmb3Igbm93LAorCSMgdGhpcyB0ZXN0Y2FzZSBqdXN0IGRvY3VtZW50cyB0aGlzIGJlaGF2aW9yKSkKKwlTRUVLX0JMT0NLUz0kKCgoMjA0OCArIDEwMjQgKiAxMDI0KSAvIDEwMjQpKQorCXllcyBkIHwgZGQgb2Y9IiRUTVBGSUxFIiBicz0xayBjb3VudD0yIHNlZWs9IiRTRUVLX0JMT0NLUyIgXAorCQlpZmxhZz1mdWxsYmxvY2sgPiAvZGV2L251bGwgMj4+IiRPVVQiCit9CisKK3N1cHBsZW1lbnRfdGVzdF85NjI1NSgpIHsKKwkjIG5vdGhpbmcgdG8gc3VwcGxlbWVudAorCToKK30KKworIyB0ZXN0IGV2ZW4gb2Zmc2V0IDwgdGRiX2RhdGFfc2l6ZQorIyB3aXRoIGFuIG9mZnNldCBvZiAyMDQ4IHRoZSBvbGQgY29kZSB3cm90ZSBhbiBpbmNvcnJlY3QgdW5kbyBmaWxlLAorIyBmb3IgZXhhbXBsZSwgdGhlIGNvbXB1dGF0aW9ucyBmb3IgZnMgYmxvY2sgMCB3ZXJlIHdyb25nOgorIyAqIGJhY2tpbmdfYmxrX251bSB3YXMgc2V0IHRvIFVMTE9OR19NQVggLSAxIGluc3RlYWQgb2YgMAorIyAqIGRhdGEgd2FzIHJlYWQgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlIGluc3RlYWQgb2Ygb2Zmc2V0IDIwNDgKKyMgKiBkYXRhX3B0ciB3YXMgc2V0IHRvIHJlYWRfcHRyIC0gMjA0OAorIyBmb3IgZGV0YWlscywgc2VlIHRoZSBvbGQgdW5kb193cml0ZV90ZGIgY29kZSBpbiB1bmRvX2lvLmMKK3Rlc3RfZTJ1bmRvX21rZTJmc19vZmYgMjA0OAorCisjIHRlc3Qgb2RkIG9mZnNldCA+IHRkYl9kYXRhX3NpemU6IDMyNzY4ICogMyAtIDIgKiAxMDI0IC0gMQorIyBhIHNvbWV3aGF0IGFyYml0cmFyeSB2YWx1ZSwgZm9yIGV4YW1wbGUsIGR1cmluZyB0aGUgYmFja3VwIG9mCisjIGZzIGJsb2NrIDAgc3VjaCBhbiBvZmZzZXQgcmVzdWx0ZWQgaW46CisjICogdGhlIGxhcmdlc3QgImluIGZzIGJsb2NrIG9mZnNldCIgKDk2MjU1ICUgMTAyNCA9PSAxMDIzKQorIyAqIGEgd3JvbmcgdmFsdWUgZm9yIGRhdGFfc2l6ZSAoYWN0dWFsIGJ5dGVzIHJlYWQ6IDMxNzQ1KQorIyAqIGFuIGludmFsaWQgYWRkcmVzcyBmb3IgZGF0YV9wdHIKKyMgZm9yIGRldGFpbHMsIHNlZSB0aGUgb2xkIHVuZG9fd3JpdGVfdGRiIGNvZGUgaW4gdW5kb19pby5jCit0ZXN0X2UydW5kb19ta2UyZnNfb2ZmIDk2MjU1CisKK2lmIFsgLWUgIiR0ZXN0X25hbWUuZmFpbGVkIiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggIiR0ZXN0X25hbWUub2siCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Vfbm90X3VuZG8vc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3Vfbm90X3VuZG8vc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMDdkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9ub3RfdW5kby9zY3JpcHQKQEAgLTAsMCArMSwyOCBAQAordGVzdF9kZXNjcmlwdGlvbj0iZTJ1bmRvIGEgbm9uLXVuZG8gZmlsZSIKK2lmIHRlc3QgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L3R1bmUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitkZCBpZj0vZGV2L3plcm8gb2Y9JFREQl9GSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIGUydW5kbyAkY3JjMCA+ICRPVVQKKworb2QgLXR4MSAtQWQgLWMgPCAkVERCX0ZJTEUgPj4gJE9VVAorCiskRTJVTkRPICRUREJfRklMRSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMzPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyAkY3JjMyA+PiAkT1VUCisKK2lmIFsgJGNyYzMgPSAkY3JjMCBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Vfb2Zmc2V0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X29mZnNldC9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlMDNiNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X29mZnNldC9zY3JpcHQKQEAgLTAsMCArMSwxMzggQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyB3aXRoIHRoZSBvZmZzZXQgb3B0aW9uICgtbyBvZmZzZXQpIgorT1VUPSIkdGVzdF9uYW1lLmxvZyIKK1RNUEZJTEUyPSIke1RNUEZJTEV9XzIiCitUREJfRklMRT0iJFRNUEZJTEUuZTJ1bmRvIgorCitFMlVORE9fRkVBVFVSRV9DT01QQVRfT0ZGU0VUPTEKKwordHJhcCAicm0gLWYgJFRNUEZJTEUyICRUREJfRklMRSIgRVhJVCBJTlQgUVVJVAorCityZWFkX2hlYWRlcl9lbnRyeSgpIHsKKwkjICQyIGlzIGp1c3QgdXNlZCBhcyBhIGR1bW15IC0gaXQgaXMgbmV2ZXIgdXNlZCBieSBlMnVuZG8KKwkjIHdoZW4gZHVtcGluZyB0aGUgaGVhZGVyCisJJEUyVU5ETyAtaCAiJDEiICIkMiIgfCBncmVwICJeJDM6IgorfQorCityZWFkX2hlYWRlcl9vZmZzZXQoKSB7CisJcmVhZF9oZWFkZXJfZW50cnkgIiRUREJfRklMRSIgIiRUTVBGSUxFIiAiZnMgb2Zmc2V0IiB8IGN1dCAtZjIKK30KKworcmVhZF9oZWFkZXJfY29tcGF0KCkgeworCXJlYWRfaGVhZGVyX2VudHJ5ICIkVERCX0ZJTEUiICIkVE1QRklMRSIgImNvbXBhdCIgfCBjdXQgLWYzCit9CisKK2UydW5kb19vZmZzZXRfYXNzZXJ0KCkgeworCWlmIFsgIiRjcmNfZXhwIiAhPSAiJGNyY19hY3QiIC1vIFwKKwkJICIkb2Zmc2V0X2V4cCIgIT0gIiRvZmZzZXRfYWN0IiAtbyBcCisJCSAkKCgkY29tcGF0X2FjdCAmICRFMlVORE9fRkVBVFVSRV9DT01QQVRfT0ZGU0VUKSkgLW5lICRjb21wYXRfZXhwIF0KKwkJdGhlbgorCQllY2hvICIkMSIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjcmNfZXhwOiAkY3JjX2V4cCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjcmNfYWN0OiAkY3JjX2FjdCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJvZmZzZXRfZXhwOiAkb2Zmc2V0X2V4cCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJvZmZzZXRfYWN0OiAkb2Zmc2V0X2FjdCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjb21wYXRfZXhwOiAkY29tcGF0X2V4cCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCQllY2hvICJjb21wYXRfYWN0OiAkY29tcGF0X2FjdCIgPj4gIiR0ZXN0X25hbWUuZmFpbGVkIgorCWZpCit9CisKK2luaXRfZnMoKSB7CisJZWNobyAiIyIgPj4gIiRPVVQiCisJZWNobyAiIyBpbml0IGZzIGZvciAkMSIgPj4gIiRPVVQiCisJZWNobyAiIyIgPj4gIiRPVVQiCisJcm0gLWYgIiRUREJfRklMRSIKKwlkZCBpZj0vZGV2L3plcm8gb2Y9IiRUTVBGSUxFIiBicz0xayBjb3VudD0xMDI0ID4gL2Rldi9udWxsIDI+JjEKKwkkTUtFMkZTIC1GIC16ICIkVERCX0ZJTEUiIC1iIDEwMjQgLUUgb2Zmc2V0PTUyNDI4OCAiJFRNUEZJTEUiIDUxMiBcCisJCT4+ICIkT1VUIiAyPiYxCit9CisKKyMKKyMgdGVzdCBhYnNlbmNlIG9mIHRoZSAiLW8gTiIgb3B0aW9uCisjCit0ZXN0X2UydW5kb19vZmZzZXRfbm9fb3B0aW9uKCkgeworCWluaXRfZnMgInRlc3RfZTJ1bmRvX29mZnNldF9ub19vcHRpb24iCisKKwkkRTJVTkRPICIkVERCX0ZJTEUiICIkVE1QRklMRSIgPj4gIiRPVVQiIDI+JjEKKworCWNyY19leHA9YGRkIGlmPS9kZXYvemVybyBicz0xayBjb3VudD0xMDI0IDI+L2Rldi9udWxsIHwgJENSQ1NVTWAKKwljcmNfYWN0PWAkQ1JDU1VNICIkVE1QRklMRSJgCisJb2Zmc2V0X2V4cD01MjQyODgKKwlvZmZzZXRfYWN0PWByZWFkX2hlYWRlcl9vZmZzZXRgCisJY29tcGF0X2V4cD0kRTJVTkRPX0ZFQVRVUkVfQ09NUEFUX09GRlNFVAorCWNvbXBhdF9hY3Q9YHJlYWRfaGVhZGVyX2NvbXBhdGAKKwllMnVuZG9fb2Zmc2V0X2Fzc2VydCAidGVzdF9lMnVuZG9fb2Zmc2V0X25vX29wdGlvbiIKK30KKworIworIyB0ZXN0IHJlbW92YWwgb2YgdGhlIG9mZnNldCBmZWF0dXJlIGluIHRoZSB1bmRvIGhlYWRlcgorIwordGVzdF9lMnVuZG9fb2Zmc2V0X25vX29wdGlvbl9yZW1vdmVfb2Zmc2V0X2hlYWRlcigpIHsKKwlpbml0X2ZzICJ0ZXN0X2UydW5kb19vZmZzZXRfbm9fb3B0aW9uX3JlbW92ZV9vZmZzZXRfaGVhZGVyIgorCWRkIGlmPSIkVE1QRklMRSIgb2Y9IiRUTVBGSUxFMiIgYnM9MWsgY291bnQ9NTEyIHNraXA9NTEyIFwKKwkJPiAvZGV2L251bGwgMj4mMQorCSMgb2Zmc2V0IGZlYXR1cmUgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHVuZG8gaGVhZGVyCisJJFRVTkUyRlMgLXogIiRUREJfRklMRSIgLUMgNDIgIiRUTVBGSUxFMiIgPj4gIiRPVVQiIDI+JjEKKworCSRFMlVORE8gIiRUREJfRklMRSIgIiRUTVBGSUxFMiIgPj4gIiRPVVQiIDI+JjEKKworCWNyY19leHA9YGRkIGlmPS9kZXYvemVybyBicz0xayBjb3VudD01MTIgMj4vZGV2L251bGwgfCAkQ1JDU1VNYAorCWNyY19hY3Q9YCRDUkNTVU0gIiRUTVBGSUxFMiJgCisJb2Zmc2V0X2V4cD0KKwlvZmZzZXRfYWN0PWByZWFkX2hlYWRlcl9vZmZzZXRgCisJY29tcGF0X2V4cD0wCisJY29tcGF0X2FjdD1gcmVhZF9oZWFkZXJfY29tcGF0YAorCWUydW5kb19vZmZzZXRfYXNzZXJ0ICJ0ZXN0X2UydW5kb19vZmZzZXRfbm9fb3B0aW9uX3JlbW92ZV9vZmZzZXRfaGVhZGVyIgorfQorCisjCisjIHRlc3QgIi1vIDQwOTYiCisjCit0ZXN0X2UydW5kb19vZmZzZXRfNDA5NigpIHsKKwlpbml0X2ZzICJ0ZXN0X2UydW5kb19vZmZzZXRfNDA5NiIKKwlkZCBpZj0vZGV2L3plcm8gb2Y9IiRUTVBGSUxFMiIgYnM9MWsgY291bnQ9NCA+IC9kZXYvbnVsbCAyPiYxCisJZGQgaWY9IiRUTVBGSUxFIiBvZj0iJFRNUEZJTEUyIiBicz0xayBjb3VudD01MTIgc2tpcD01MTIgc2Vlaz00IFwKKwkJPiAvZGV2L251bGwgMj4mMQorCisJJEUyVU5ETyAtbyA0MDk2ICIkVERCX0ZJTEUiICIkVE1QRklMRTIiID4+ICIkT1VUIiAyPiYxCisKKwljcmNfZXhwPWBkZCBpZj0vZGV2L3plcm8gYnM9MWsgY291bnQ9NTE2IDI+L2Rldi9udWxsIHwgJENSQ1NVTWAKKwljcmNfYWN0PWAkQ1JDU1VNICIkVE1QRklMRTIiYAorCSMgdGhlIHNhbWUgYXMgaW4gdGVzdF9lMnVuZG9fb2Zmc2V0X25vX29wdGlvbgorCW9mZnNldF9leHA9NTI0Mjg4CisJb2Zmc2V0X2FjdD1gcmVhZF9oZWFkZXJfb2Zmc2V0YAorCWNvbXBhdF9leHA9JEUyVU5ET19GRUFUVVJFX0NPTVBBVF9PRkZTRVQKKwljb21wYXRfYWN0PWByZWFkX2hlYWRlcl9jb21wYXRgCisJZTJ1bmRvX29mZnNldF9hc3NlcnQgInRlc3RfZTJ1bmRvX29mZnNldF80MDk2IgorfQorCisjCisjIHRlc3QgIi1vIDAiCisjCit0ZXN0X2UydW5kb19vZmZzZXRfMCgpIHsKKwlpbml0X2ZzICJ0ZXN0X2UydW5kb19vZmZzZXRfMCIKKwlkZCBpZj0iJFRNUEZJTEUiIG9mPSIkVE1QRklMRTIiIGJzPTFrIGNvdW50PTUxMiBza2lwPTUxMiBcCisJCT4gL2Rldi9udWxsIDI+JjEKKworCSRFMlVORE8gLW8gMCAiJFREQl9GSUxFIiAiJFRNUEZJTEUyIiA+PiAiJE9VVCIgMj4mMQorCisJY3JjX2V4cD1gZGQgaWY9L2Rldi96ZXJvIGJzPTFrIGNvdW50PTUxMiAyPi9kZXYvbnVsbCB8ICRDUkNTVU1gCisJY3JjX2FjdD1gJENSQ1NVTSAiJFRNUEZJTEUyImAKKwkjIHRoZSBzYW1lIGFzIGluIHRlc3RfZTJ1bmRvX29mZnNldF9ub19vcHRpb24KKwlvZmZzZXRfZXhwPTUyNDI4OAorCW9mZnNldF9hY3Q9YHJlYWRfaGVhZGVyX29mZnNldGAKKwljb21wYXRfZXhwPSRFMlVORE9fRkVBVFVSRV9DT01QQVRfT0ZGU0VUCisJY29tcGF0X2FjdD1gcmVhZF9oZWFkZXJfY29tcGF0YAorCWUydW5kb19vZmZzZXRfYXNzZXJ0ICJ0ZXN0X2UydW5kb19vZmZzZXRfMCIKK30KKwordGVzdF9lMnVuZG9fb2Zmc2V0X25vX29wdGlvbgordGVzdF9lMnVuZG9fb2Zmc2V0X25vX29wdGlvbl9yZW1vdmVfb2Zmc2V0X2hlYWRlcgordGVzdF9lMnVuZG9fb2Zmc2V0XzQwOTYKK3Rlc3RfZTJ1bmRvX29mZnNldF8wCisKK2lmIFsgLWUgIiR0ZXN0X25hbWUuZmFpbGVkIiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IGZhaWxlZCIKK2Vsc2UKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogb2siCisJdG91Y2ggIiR0ZXN0X25hbWUub2siCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3Vfb25lZmlsZV9iYWQvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3Vfb25lZmlsZV9iYWQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYzlhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9vbmVmaWxlX2JhZC9zY3JpcHQKQEAgLTAsMCArMSwxMTUgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNoZWNrIHRoYXQgd2UgY2FudCBhcHBlbmQgYSBiYWQgdW5kbyBmaWxlIgoraWYgdGVzdCAteCAkUkVTSVpFMkZTX0VYRSAtYSAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitUREJfRklMRT0ke1RNUERJUjotL3RtcH0vcmVzaXplMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCitmYWlsPTAKKworZWNobyBjaGVjayB0aGF0IHdlIGNhbnQgYXBwZW5kIGEgYmFkIHVuZG8gZmlsZSA+ICRPVVQKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSBta2UyZnMgJGNyYzAgPj4gJE9VVAorCitDT05GPSRUTVBGSUxFLmNvbmYKK2NhdCA+ICRDT05GIDw8IEVOREwKK1tmc190eXBlc10KKwlleHQ0aCA9IHsKKwkJZmVhdHVyZXMgPSBoYXNfam91cm5hbCxleHRlbnQsaHVnZV9maWxlLGZsZXhfYmcsdW5pbml0X2JnLGRpcl9ubGluayxleHRyYV9pc2l6ZSxzcGFyc2Vfc3VwZXIsZmlsZXR5cGUsZGlyX2luZGV4LGV4dF9hdHRyLHJlc2l6ZV9pbm9kZQorCQlibG9ja3NpemUgPSA0MDk2CisJCWlub2RlX3NpemUgPSAyNTYKKwkJbWFrZV9odWdlZmlsZXMgPSB0cnVlCisJCWh1Z2VmaWxlc19kaXIgPSAvCisJCWh1Z2VmaWxlc19zbGFjayA9IDAKKwkJaHVnZWZpbGVzX25hbWUgPSBhYWFhYQorCQlodWdlZmlsZXNfZGlnaXRzID0gNAorCQlodWdlZmlsZXNfc2l6ZSA9IDFNCisJCXplcm9faHVnZWZpbGVzID0gZmFsc2UKKwl9CitFTkRMCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1UIGV4dDRoIC1PIF5tZXRhZGF0YV9jc3VtLF42NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgNDA5NiAteiAkVERCX0ZJTEUuMCAkVE1QRklMRSA1MjQyODggPj4gJE9VVAorTUtFMkZTX0NPTkZJRz0kQ09ORiAkTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDRoIC1PIF5tZXRhZGF0YV9jc3VtLF42NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgNDA5NiAteiAkVERCX0ZJTEUuMCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgbWtlMmZzICRjcmMxID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1ndCAwIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWd0IDAgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBub3QgaGF2ZSA2NGJpdCBvciBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyB1c2luZyByZXNpemUyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJFJFU0laRTJGUyAteiAkVERCX0ZJTEUuMSAtYiAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgcmVzaXplMmZzICRjcmMyID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1ndCAwIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWx0IDEgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBoYXZlIDY0Yml0IGJ1dCBub3QgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gY29ycnVwdCAkVERCX0ZJTEUuMSA+PiAkT1VUCitkZCBpZj0vZGV2L3plcm8gb2Y9JFREQl9GSUxFLjEgYnM9NDA5NiBjb3VudD0xIHNraXA9MSAyPiAvZGV2L251bGwKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFLjEgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMzPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzMgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYnV0IG5vdCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyB1c2luZyBlMmZzY2sgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJEZTQ0sgLWYgLXkgLUQgLXogJFREQl9GSUxFLjEgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmM0PWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUyZnNjayAkY3JjNCA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtZ3QgMCBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1sdCAxIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgaGF2ZSA2NGJpdCBidXQgbm90IG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHJvbGwgYmFjayBlMmZzY2svdHVuZTJmcy9yZXNpemUyZnMgPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUuMSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMxXzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIGUyZnNjay90dW5lMmZzL3Jlc2l6ZTJmcyAkY3JjMV8yID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1ndCAwIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWx0IDEgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBoYXZlIDY0Yml0IGJ1dCBub3QgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gcm9sbCBiYWNrIG1rZTJmcyA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4wICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzBfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gbWtlMmZzICRjcmMwXzIgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYnV0IG5vdCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworaWYgWyAkZmFpbCAtZXEgMCBdICYmIFsgJGNyYzAgIT0gJGNyYzEgXSAmJiBbICRjcmMxICE9ICRjcmMyIF0gJiYgWyAkY3JjMiA9ICRjcmMzIF0gJiYgWyAkY3JjMyA9ICRjcmM0IF0gJiYgWyAkY3JjMV8yID0gJGNyYzIgXSAmJiBbICRjcmMwXzIgPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFLjAgJFREQl9GSUxFLjEgJFRNUEZJTEUgJENPTkYKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV9yZXNpemUyZnNfb3B0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X3Jlc2l6ZTJmc19vcHQvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMWUwNGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV9yZXNpemUyZnNfb3B0L3NjcmlwdApAQCAtMCwwICsxLDMyIEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJlMnVuZG8gd2l0aCByZXNpemUyZnMgLXoiCitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS9yZXNpemUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgJFRNUEZJTEUgMjU2ID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFIDI1NiA+PiAkT1VUIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIHJlc2l6ZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgcmVzaXplMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRSRVNJWkUyRlMgLXogJFREQl9GSUxFICRUTVBGSUxFIDUxMiA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgcmVzaXplMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0XzY0Yml0bWNzdW1fb25lZmlsZS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV9yZXZlcnRfNjRiaXRtY3N1bV9vbmVmaWxlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWQ3YzJiCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0XzY0Yml0bWNzdW1fb25lZmlsZS9zY3JpcHQKQEAgLTAsMCArMSwxMTIgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNvbnZlcnQgZnMgdG8gNjRiaXQsbWV0YWRhdGFfY3N1bSBhbmQgcmV2ZXJ0IGFzIG9uZSB1bmRvIGZpbGUiCitpZiB0ZXN0IC14ICRSRVNJWkUyRlNfRVhFIC1hIC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS9yZXNpemUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKK2ZhaWw9MAorCitlY2hvIGNvbnZlcnQgZnMgdG8gNjRiaXQsbWV0YWRhdGFfY3N1bSBhbmQgcmV2ZXJ0IGJvdGggY2hhbmdlcyBhcyBvbmUgdW5kbyBmaWxlID4gJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIG1rZTJmcyAkY3JjMCA+PiAkT1VUCisKK0NPTkY9JFRNUEZJTEUuY29uZgorY2F0ID4gJENPTkYgPDwgRU5ETAorW2ZzX3R5cGVzXQorCWV4dDRoID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIscmVzaXplX2lub2RlCisJCWJsb2Nrc2l6ZSA9IDQwOTYKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMAorCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMU0KKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLVQgZXh0NGggLU8gXm1ldGFkYXRhX2NzdW0sXjY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiA0MDk2IC16ICRUREJfRklMRS4wICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NGggLU8gXm1ldGFkYXRhX2NzdW0sXjY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiA0MDk2IC16ICRUREJfRklMRS4wICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBta2UyZnMgJGNyYzEgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtZ3QgMCBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIG5vdCBoYXZlIDY0Yml0IG9yIG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHVzaW5nIHJlc2l6ZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskUkVTSVpFMkZTIC16ICRUREJfRklMRS4xIC1iICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciByZXNpemUyZnMgJGNyYzIgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYnV0IG5vdCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFLjEgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMzPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzMgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWx0IDEgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYW5kIG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHVzaW5nIGUyZnNjayB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskRlNDSyAtZiAteSAtRCAteiAkVERCX0ZJTEUuMSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzQ9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJmc2NrICRjcmM0ID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1sdCAxIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWx0IDEgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBoYXZlIDY0Yml0IGFuZCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyByb2xsIGJhY2sgZTJmc2NrL3R1bmUyZnMvcmVzaXplMmZzID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjEgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMV8yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyBlMmZzY2svdHVuZTJmcy9yZXNpemUyZnMgJGNyYzFfMiA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtZ3QgMCBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1ndCAwIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgbm90IGhhdmUgNjRiaXQgb3IgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gcm9sbCBiYWNrIG1rZTJmcyA+PiAkT1VUCiskRTJVTkRPICRUREJfRklMRS4wICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzBfMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMnVuZG8gbWtlMmZzICRjcmMwXzIgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbIC1uICIke2ZlYXR1cmVzfSIgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBub3QgaGF2ZSBhbnkgZmVhdHVyZXMgc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxICYmIGZhaWw9MQorCitpZiBbICRmYWlsIC1lcSAwIF0gJiYgWyAkY3JjMCA9ICRjcmMwXzIgXSAmJiBbICRjcmMxID0gJGNyYzFfMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFLjAgJFREQl9GSUxFLjEgJFRNUEZJTEUgJENPTkYKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV9yZXZlcnRfYWxsX29uZWZpbGUvc2NyaXB0IGIvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0X2FsbF9vbmVmaWxlL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2IzYjIzCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0X2FsbF9vbmVmaWxlL3NjcmlwdApAQCAtMCwwICsxLDEwMCBAQAordGVzdF9kZXNjcmlwdGlvbj0iY29udmVydCBmcyB0byA2NGJpdCxtZXRhZGF0YV9jc3VtIGFuZCByZXZlcnQgYXMgb25lIHVuZG8gZmlsZSIKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L3Jlc2l6ZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorZmFpbD0wCisKK2VjaG8gY29udmVydCBmcyB0byA2NGJpdCxtZXRhZGF0YV9jc3VtIGFuZCByZXZlcnQgYm90aCBjaGFuZ2VzIGFzIG9uZSB1bmRvIGZpbGUgPiAkT1VUCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgbWtlMmZzICRjcmMwID4+ICRPVVQKKworQ09ORj0kVE1QRklMRS5jb25mCitjYXQgPiAkQ09ORiA8PCBFTkRMCitbZnNfdHlwZXNdCisJZXh0NGggPSB7CisJCWZlYXR1cmVzID0gaGFzX2pvdXJuYWwsZXh0ZW50LGh1Z2VfZmlsZSxmbGV4X2JnLHVuaW5pdF9iZyxkaXJfbmxpbmssZXh0cmFfaXNpemUsc3BhcnNlX3N1cGVyLGZpbGV0eXBlLGRpcl9pbmRleCxleHRfYXR0cixyZXNpemVfaW5vZGUKKwkJYmxvY2tzaXplID0gNDA5NgorCQlpbm9kZV9zaXplID0gMjU2CisJCW1ha2VfaHVnZWZpbGVzID0gdHJ1ZQorCQlodWdlZmlsZXNfZGlyID0gLworCQlodWdlZmlsZXNfc2xhY2sgPSAwCisJCWh1Z2VmaWxlc19uYW1lID0gYWFhYWEKKwkJaHVnZWZpbGVzX2RpZ2l0cyA9IDQKKwkJaHVnZWZpbGVzX3NpemUgPSAxTQorCQl6ZXJvX2h1Z2VmaWxlcyA9IGZhbHNlCisJfQorRU5ETAorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0aCAtTyBebWV0YWRhdGFfY3N1bSxeNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDQwOTYgLXogJFREQl9GSUxFLjAgJFRNUEZJTEUgNTI0Mjg4ID4+ICRPVVQKK01LRTJGU19DT05GSUc9JENPTkYgJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0aCAtTyBebWV0YWRhdGFfY3N1bSxeNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDQwOTYgLXogJFREQl9GSUxFLjAgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIG1rZTJmcyAkY3JjMSA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtZ3QgMCBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1ndCAwIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgbm90IGhhdmUgNjRiaXQgb3IgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gdXNpbmcgcmVzaXplMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRSRVNJWkUyRlMgLXogJFREQl9GSUxFLjAgLWIgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMyPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHJlc2l6ZTJmcyAkY3JjMiA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtZ3QgMCBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1sdCAxIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgaGF2ZSA2NGJpdCBidXQgbm90IG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHVzaW5nIHR1bmUyZnMgdG8gdGVzdCBlMnVuZG8gPj4gJE9VVAorJFRVTkUyRlMgLU8gbWV0YWRhdGFfY3N1bSAteiAkVERCX0ZJTEUuMCAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgdHVuZTJmcyAkY3JjMyA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtbHQgMSBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1sdCAxIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgaGF2ZSA2NGJpdCBhbmQgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gdXNpbmcgZTJmc2NrIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRGU0NLIC1mIC15IC1EIC16ICRUREJfRklMRS4wICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjND1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBlMmZzY2sgJGNyYzQgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWx0IDEgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYW5kIG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHJvbGwgYmFjayBlMmZzY2svdHVuZTJmcy9yZXNpemUyZnMvbWtlMmZzID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjAgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMF8yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyBlMmZzY2svdHVuZTJmcy9yZXNpemUyZnMvbWtlMmZzICRjcmMxXzIgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbIC1uICIke2ZlYXR1cmVzfSIgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBub3QgaGF2ZSBhbnkgZmVhdHVyZXMgc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxICYmIGZhaWw9MQorCitpZiBbICRmYWlsIC1lcSAwIF0gJiYgWyAkY3JjMCA9ICRjcmMwXzIgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRS4wICRUREJfRklMRS4xICRUTVBGSUxFICRDT05GCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0X3VwZ3JhZGVfdG9fNjRiaXRtY3N1bS9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV9yZXZlcnRfdXBncmFkZV90b182NGJpdG1jc3VtL3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTIwZDAwCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfcmV2ZXJ0X3VwZ3JhZGVfdG9fNjRiaXRtY3N1bS9zY3JpcHQKQEAgLTAsMCArMSwxMzYgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImNvbnZlcnQgZnMgdG8gNjRiaXQsbWV0YWRhdGFfY3N1bSBhbmQgcmV2ZXJ0IGJvdGggY2hhbmdlcyIKK2lmIHRlc3QgLXggJFJFU0laRTJGU19FWEUgLWEgLXggJEUyVU5ET19FWEU7IHRoZW4KKworVERCX0ZJTEU9JHtUTVBESVI6LS90bXB9L3Jlc2l6ZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorZmFpbD0wCisKK2VjaG8gY29udmVydCBmcyB0byA2NGJpdCxtZXRhZGF0YV9jc3VtIGFuZCByZXZlcnQgYm90aCBjaGFuZ2VzID4gJE9VVAorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKK2NyYzA9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIG1rZTJmcyAkY3JjMCA+PiAkT1VUCisKK0NPTkY9JFRNUEZJTEUuY29uZgorY2F0ID4gJENPTkYgPDwgRU5ETAorW2ZzX3R5cGVzXQorCWV4dDRoID0geworCQlmZWF0dXJlcyA9IGhhc19qb3VybmFsLGV4dGVudCxodWdlX2ZpbGUsZmxleF9iZyx1bmluaXRfYmcsZGlyX25saW5rLGV4dHJhX2lzaXplLHNwYXJzZV9zdXBlcixmaWxldHlwZSxkaXJfaW5kZXgsZXh0X2F0dHIscmVzaXplX2lub2RlCisJCWJsb2Nrc2l6ZSA9IDQwOTYKKwkJaW5vZGVfc2l6ZSA9IDI1NgorCQltYWtlX2h1Z2VmaWxlcyA9IHRydWUKKwkJaHVnZWZpbGVzX2RpciA9IC8KKwkJaHVnZWZpbGVzX3NsYWNrID0gMAorCQlodWdlZmlsZXNfbmFtZSA9IGFhYWFhCisJCWh1Z2VmaWxlc19kaWdpdHMgPSA0CisJCWh1Z2VmaWxlc19zaXplID0gMU0KKwkJemVyb19odWdlZmlsZXMgPSBmYWxzZQorCX0KK0VOREwKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLVQgZXh0NGggLU8gXm1ldGFkYXRhX2NzdW0sXjY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiA0MDk2IC16ICRUREJfRklMRS4wICRUTVBGSUxFIDUyNDI4OCA+PiAkT1VUCitNS0UyRlNfQ09ORklHPSRDT05GICRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NGggLU8gXm1ldGFkYXRhX2NzdW0sXjY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiA0MDk2IC16ICRUREJfRklMRS4wICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciBta2UyZnMgJGNyYzEgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtZ3QgMCBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIG5vdCBoYXZlIDY0Yml0IG9yIG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHVzaW5nIHJlc2l6ZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskUkVTSVpFMkZTIC16ICRUREJfRklMRS4xIC1iICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMj1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciByZXNpemUyZnMgJGNyYzIgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWd0IDAgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYnV0IG5vdCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFLjIgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMzPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHR1bmUyZnMgJGNyYzMgPj4gJE9VVAorZmVhdHVyZXM9IiQoJERVTVBFMkZTIC1oICRUTVBGSUxFIDI+IC9kZXYvbnVsbCB8IGdyZXAgJ0ZpbGVzeXN0ZW0gZmVhdHVyZXM6JykiCitpZiBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgIm1ldGFkYXRhX2NzdW0iIC1jKSIgLWx0IDEgXSB8fCBbICIkKGVjaG8gIiR7ZmVhdHVyZXN9IiB8IGdyZXAgNjRiaXQgLWMpIiAtbHQgMSBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIGhhdmUgNjRiaXQgYW5kIG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHVzaW5nIGUyZnNjayB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskRlNDSyAtZiAteSAtRCAteiAkVERCX0ZJTEUuMyAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzQ9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJmc2NrICRjcmM0ID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1sdCAxIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWx0IDEgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBoYXZlIDY0Yml0IGFuZCBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyByb2xsIGJhY2sgZTJmc2NrID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjMgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjM18yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyBlMmZzY2sgJGNyYzNfMiA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtbHQgMSBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1sdCAxIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgaGF2ZSA2NGJpdCBhbmQgbWV0YWRhdGFfY3N1bSBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgfHwgZmFpbD0xCisKK2VjaG8gcm9sbCBiYWNrIHR1bmUyZnMgPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUuMiAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMyXzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIHR1bmUyZnMgJGNyYzJfMiA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCAibWV0YWRhdGFfY3N1bSIgLWMpIiAtZ3QgMCBdIHx8IFsgIiQoZWNobyAiJHtmZWF0dXJlc30iIHwgZ3JlcCA2NGJpdCAtYykiIC1sdCAxIF07IHRoZW4KKwllY2hvICJGUyBmZWF0dXJlczogJHtmZWF0dXJlc30iID4+ICRPVVQKKwllY2hvICJTaG91bGQgaGF2ZSA2NGJpdCBidXQgbm90IG1ldGFkYXRhX2NzdW0gc2V0IiA+PiAkT1VUCisJZmFpbD0xCitmaQorJEZTQ0sgLWYgLW4gJFRNUEZJTEUgPj4gJE9VVCAyPiYxIHx8IGZhaWw9MQorCitlY2hvIHJvbGwgYmFjayByZXNpemUyZnMgPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUuMSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMxXzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvIHJlc2l6ZTJmcyAkY3JjMV8yID4+ICRPVVQKK2ZlYXR1cmVzPSIkKCREVU1QRTJGUyAtaCAkVE1QRklMRSAyPiAvZGV2L251bGwgfCBncmVwICdGaWxlc3lzdGVtIGZlYXR1cmVzOicpIgoraWYgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwICJtZXRhZGF0YV9jc3VtIiAtYykiIC1ndCAwIF0gfHwgWyAiJChlY2hvICIke2ZlYXR1cmVzfSIgfCBncmVwIDY0Yml0IC1jKSIgLWd0IDAgXTsgdGhlbgorCWVjaG8gIkZTIGZlYXR1cmVzOiAke2ZlYXR1cmVzfSIgPj4gJE9VVAorCWVjaG8gIlNob3VsZCBub3QgaGF2ZSA2NGJpdCBvciBtZXRhZGF0YV9jc3VtIHNldCIgPj4gJE9VVAorCWZhaWw9MQorZmkKKyRGU0NLIC1mIC1uICRUTVBGSUxFID4+ICRPVVQgMj4mMSB8fCBmYWlsPTEKKworZWNobyByb2xsIGJhY2sgbWtlMmZzID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFLjAgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMF8yPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyBta2UyZnMgJGNyYzBfMiA+PiAkT1VUCitmZWF0dXJlcz0iJCgkRFVNUEUyRlMgLWggJFRNUEZJTEUgMj4gL2Rldi9udWxsIHwgZ3JlcCAnRmlsZXN5c3RlbSBmZWF0dXJlczonKSIKK2lmIFsgLW4gIiR7ZmVhdHVyZXN9IiBdOyB0aGVuCisJZWNobyAiRlMgZmVhdHVyZXM6ICR7ZmVhdHVyZXN9IiA+PiAkT1VUCisJZWNobyAiU2hvdWxkIG5vdCBoYXZlIGFueSBmZWF0dXJlcyBzZXQiID4+ICRPVVQKKwlmYWlsPTEKK2ZpCiskRlNDSyAtZiAtbiAkVE1QRklMRSA+PiAkT1VUIDI+JjEgJiYgZmFpbD0xCisKK2lmIFsgJGZhaWwgLWVxIDAgXSAmJiBbICRjcmMwID0gJGNyYzBfMiBdICYmIFsgJGNyYzEgPSAkY3JjMV8yIF0gJiYgWyAkY3JjMiA9ICRjcmMyXzIgXSAmJiBbICRjcmMzID0gJGNyYzNfMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFLjAgJFREQl9GSUxFLjEgJFREQl9GSUxFLjIgJFREQl9GSUxFLjMgJFRNUEZJTEUgJENPTkYKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV90dW5lMmZzL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X3R1bmUyZnMvc2NyaXB0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNWYzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdGVzdHMvdV90dW5lMmZzL3NjcmlwdApAQCAtMCwwICsxLDM0IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJlMnVuZG8gd2l0aCB0dW5lMmZzIgoraWYgdGVzdCAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitFMkZTUFJPR1NfVU5ET19ESVI9JHtUTVBESVI6LS90bXB9CitleHBvcnQgRTJGU1BST0dTX1VORE9fRElSCitUREJfRklMRT0kRTJGU1BST0dTX1VORE9fRElSL3R1bmUyZnMtJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitPVVQ9JHRlc3RfbmFtZS5sb2cKK3JtIC1mICRUREJfRklMRSA+L2Rldi9udWxsIDI+JjEKKworZGQgaWY9L2Rldi96ZXJvIG9mPSRUTVBGSUxFIGJzPTFrIGNvdW50PTUxMiA+IC9kZXYvbnVsbCAyPiYxCisKK2VjaG8gbWtlMmZzIC1xIC1GIC1vIExpbnV4IC1iIDEwMjQgJFRNUEZJTEUgID4gJE9VVAorJE1LRTJGUyAtcSAtRiAtbyBMaW51eCAtSSAxMjggLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYmVmb3JlIHR1bmUyZnMgJGNyYyA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtSSAyNTYgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorbmV3X2NyYz1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRuZXdfY3JjID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK25ld19jcmM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRuZXdfY3JjID4+ICRPVVQKKworaWYgWyAkY3JjID0gJG5ld19jcmMgXTsgdGhlbgorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBvayIKKwl0b3VjaCAkdGVzdF9uYW1lLm9rCitlbHNlCisJbG4gLWYgJHRlc3RfbmFtZS5sb2cgJHRlc3RfbmFtZS5mYWlsZWQKKwllY2hvICIkdGVzdF9uYW1lOiAkdGVzdF9kZXNjcmlwdGlvbjogZmFpbGVkIgorZmkKK3JtIC1mICRUREJfRklMRSAkVE1QRklMRQorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy90ZXN0cy91X3R1bmUyZnNfb3B0L3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X3R1bmUyZnNfb3B0L3NjcmlwdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDgxMGI5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3Rlc3RzL3VfdHVuZTJmc19vcHQvc2NyaXB0CkBAIC0wLDAgKzEsMzIgQEAKK3Rlc3RfZGVzY3JpcHRpb249ImUydW5kbyB3aXRoIHR1bmUyZnMgLXoiCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS90dW5lMmZzLSQoYmFzZW5hbWUgJFRNUEZJTEUpLmUydW5kbworT1VUPSR0ZXN0X25hbWUubG9nCitybSAtZiAkVERCX0ZJTEUgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSB0dW5lMmZzICRjcmMwID4+ICRPVVQKKworZWNobyB1c2luZyB0dW5lMmZzIHRvIHRlc3QgZTJ1bmRvID4+ICRPVVQKKyRUVU5FMkZTIC1PIG1ldGFkYXRhX2NzdW0gLXogJFREQl9GSUxFICRUTVBGSUxFID4+ICRPVVQgMj4mMQorY3JjMT1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBhZnRlciB0dW5lMmZzICRjcmMxID4+ICRPVVQKKworJEUyVU5ETyAgJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzI9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMyID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3Rlc3RzL3VfdW5kb191bmRvL3NjcmlwdCBiL2UyZnNwcm9ncy90ZXN0cy91X3VuZG9fdW5kby9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI2YTQ1MwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X3VuZG9fdW5kby9zY3JpcHQKQEAgLTAsMCArMSw1NCBAQAordGVzdF9kZXNjcmlwdGlvbj0idW5kbyBlMnVuZG8iCitpZiB0ZXN0IC14ICRFMlVORE9fRVhFOyB0aGVuCisKK1REQl9GSUxFPSR7VE1QRElSOi0vdG1wfS9lMmZzY2stJChiYXNlbmFtZSAkVE1QRklMRSkuZTJ1bmRvCitUREJfRklMRTI9JHtUTVBESVI6LS90bXB9L2UydW5kby0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFICRUREJfRklMRTIgPi9kZXYvbnVsbCAyPiYxCisKK2RkIGlmPS9kZXYvemVybyBvZj0kVE1QRklMRSBicz0xayBjb3VudD01MTIgPiAvZGV2L251bGwgMj4mMQorCitlY2hvIG1rZTJmcyAtcSAtRiAtbyBMaW51eCAtVCBleHQ0IC1PIF5tZXRhZGF0YV9jc3VtLDY0Yml0IC1FIGxhenlfaXRhYmxlX2luaXQ9MSAtYiAxMDI0ICRUTVBGSUxFICA+ICRPVVQKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMwPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGJlZm9yZSBlMmZzY2sgJGNyYzAgPj4gJE9VVAorCitlY2hvIHVzaW5nIGUyZnNjayB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskRlNDSyAtZiAteSAtRCAteiAkVERCX0ZJTEUgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCitjcmMxPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUyZnNjayAkY3JjMSA+PiAkT1VUCisKK2VjaG8gZTJ1bmRvIHRoZSBlMmZzY2sgPj4gJE9VVAorJEUyVU5ETyAteiAkVERCX0ZJTEUyICRUREJfRklMRSAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMyPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGUydW5kbyAkY3JjMiA+PiAkT1VUCisKK2VjaG8gZTJ1bmRvIHRoZSBlMnVuZG8gPj4gJE9VVAorJEUyVU5ETyAkVERCX0ZJTEUyICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMzID4+ICRPVVQKKworZWNobyBlMnVuZG8gdGhlIGUydW5kbyB0aGUgZTJ1bmRvID4+ICRPVVQKKyRFMlVORE8gJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzQ9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmM0ID4+ICRPVVQKKworJEUyVU5ETyAtaCAkVERCX0ZJTEUgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCiskRTJVTkRPIC1oICRUREJfRklMRTIgJFRNUEZJTEUgPj4gJE9VVCAyPiYxCisKKyRFMlVORE8gLXogJFREQl9GSUxFMiAkVERCX0ZJTEUyICRUTVBGSUxFID4+ICRPVVQgMj4mMQorCitjcmM1PWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIGZhaWxlZCBlMnVuZG8gJGNyYzUgPj4gJE9VVAorCitlY2hvICRjcmMwICRjcmMxICRjcmMyICRjcmMzICRjcmM0ICRjcmM1ID4+ICRPVVQKKworaWYgWyAkY3JjMCA9ICRjcmMyIF0gJiYgWyAkY3JjMiA9ICRjcmM0IF0gJiYgWyAkY3JjNSA9ICRjcmM0IF0gJiYgWyAkY3JjMSA9ICRjcmMzIF0gJiYgWyAkY3JjMSAhPSAkY3JjMiBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUREJfRklMRTIgJFRNUEZJTEUKK2ZpCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdGVzdHMvdV93cm9uZ19mcy9zY3JpcHQgYi9lMmZzcHJvZ3MvdGVzdHMvdV93cm9uZ19mcy9zY3JpcHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmMGQ2YgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy90ZXN0cy91X3dyb25nX2ZzL3NjcmlwdApAQCAtMCwwICsxLDM2IEBACit0ZXN0X2Rlc2NyaXB0aW9uPSJlMnVuZG8gb24gdGhlIHdyb25nIGZzIgoraWYgdGVzdCAteCAkRTJVTkRPX0VYRTsgdGhlbgorCitUREJfRklMRT0ke1RNUERJUjotL3RtcH0vdHVuZTJmcy0kKGJhc2VuYW1lICRUTVBGSUxFKS5lMnVuZG8KK09VVD0kdGVzdF9uYW1lLmxvZworcm0gLWYgJFREQl9GSUxFID4vZGV2L251bGwgMj4mMQorCitkZCBpZj0vZGV2L3plcm8gb2Y9JFRNUEZJTEUgYnM9MWsgY291bnQ9NTEyID4gL2Rldi9udWxsIDI+JjEKKworZWNobyBta2UyZnMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPiAkT1VUCiskTUtFMkZTIC1xIC1GIC1vIExpbnV4IC1UIGV4dDQgLU8gXm1ldGFkYXRhX2NzdW0sNjRiaXQgLUUgbGF6eV9pdGFibGVfaW5pdD0xIC1iIDEwMjQgJFRNUEZJTEUgID4+ICRPVVQgMj4mMQorY3JjMD1gJENSQ1NVTSAkVE1QRklMRWAKK2VjaG8gJENSQ1NVTSBiZWZvcmUgdHVuZTJmcyAkY3JjMCA+PiAkT1VUCisKK2VjaG8gdXNpbmcgdHVuZTJmcyB0byB0ZXN0IGUydW5kbyA+PiAkT1VUCiskVFVORTJGUyAtTyBtZXRhZGF0YV9jc3VtIC16ICRUREJfRklMRSAkVE1QRklMRSA+PiAkT1VUIDI+JjEKK2NyYzE9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgdHVuZTJmcyAkY3JjMSA+PiAkT1VUCisKKyRNS0UyRlMgLXEgLUYgLW8gTGludXggLVQgZXh0NCAtTyBebWV0YWRhdGFfY3N1bSw2NGJpdCAtRSBsYXp5X2l0YWJsZV9pbml0PTEgLWIgMTAyNCAkVE1QRklMRSAgPj4gJE9VVCAyPiYxCitjcmMyPWAkQ1JDU1VNICRUTVBGSUxFYAorZWNobyAkQ1JDU1VNIGFmdGVyIHJlLW1rZTJmcyAkY3JjMiA+PiAkT1VUCisKKyRFMlVORE8gJFREQl9GSUxFICRUTVBGSUxFICA+PiAkT1VUIDI+JjEKK2NyYzM9YCRDUkNTVU0gJFRNUEZJTEVgCitlY2hvICRDUkNTVU0gYWZ0ZXIgZTJ1bmRvICRjcmMzID4+ICRPVVQKKworaWYgWyAkY3JjMyA9ICRjcmMyIF0gJiYgWyAkY3JjMiAhPSAkY3JjMSBdOyB0aGVuCisJZWNobyAiJHRlc3RfbmFtZTogJHRlc3RfZGVzY3JpcHRpb246IG9rIgorCXRvdWNoICR0ZXN0X25hbWUub2sKK2Vsc2UKKwlsbiAtZiAkdGVzdF9uYW1lLmxvZyAkdGVzdF9uYW1lLmZhaWxlZAorCWVjaG8gIiR0ZXN0X25hbWU6ICR0ZXN0X2Rlc2NyaXB0aW9uOiBmYWlsZWQiCitmaQorcm0gLWYgJFREQl9GSUxFICRUTVBGSUxFCitmaQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvTWFrZWZpbGUuaW4gYi9lMmZzcHJvZ3MvdXRpbC9NYWtlZmlsZS5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjExN2Q5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSw2OCBAQAorIworIyBTdGFuZGFyZCBlMmZzcHJvZ3MgcHJvbG9ndWUuLi4uCisjCisKK3NyY2RpciA9IEBzcmNkaXJACit0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACitWUEFUSCA9IEBzcmNkaXJACit0b3BfYnVpbGRkaXIgPSAuLgorbXlfZGlyID0gdXRpbAorSU5TVEFMTCA9IEBJTlNUQUxMQAorCitTUkNTID0gJChzcmNkaXIpL3N1YnN0LmMKKworQE1DT05GSUdACisKKy5jLm86CisJJChFKSAiCUNDICQ8IgorCSQoUSkgJChCVUlMRF9DQykgLWMgJChCVUlMRF9DRkxBR1MpICQ8IC1vICRACisJJChRKSAkKENIRUNLX0NNRCkgJChBTExfQ0ZMQUdTKSAkPAorCSQoUSkgJChDUFBDSEVDS19DTUQpICQoQ1BQRkxBR1MpICQ8CisKK1BST0dTPQkJc3Vic3Qgc3ltbGlua3MKKworYWxsOjogJChQUk9HUykgZ2VuLXRhcmJhbGwKKworZGlycGF0aHMuaDoKKwkkKEUpICIJQ1JFQVRFIGRpcnBhdGhzLmgiCisJJChRKSBlY2hvICIvKiBmYWtlIGRpcnBhdGhzLmggZm9yIGNvbmZpZy5oICovIiA+IGRpcnBhdGhzLmgKKworc3Vic3QubzogZGlycGF0aHMuaAorCitzdWJzdDogc3Vic3QubworCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQlVJTERfQ0MpICQoQlVJTERfTERGTEFHUykgLW8gc3Vic3Qgc3Vic3QubworCitjb3B5X3NwYXJzZTogY29weV9zcGFyc2UubworCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQlVJTERfQ0MpICQoQlVJTERfTERGTEFHUykgLW8gY29weV9zcGFyc2UgY29weV9zcGFyc2UubworCitzeW1saW5rczogc3ltbGlua3MubworCSQoRSkgIglMRCAkQCIKKwkkKFEpICQoQlVJTERfQ0MpICQoQlVJTERfTERGTEFHUykgLW8gc3ltbGlua3Mgc3ltbGlua3MubworCitnZW4tdGFyYmFsbDogJChzcmNkaXIpL2dlbi10YXJiYWxsLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCisJJChFKSAiCUNPTkZJRy5TVEFUVVMgJEAiCisJJChRKSBjZCAkKHRvcF9idWlsZGRpcik7IENPTkZJR19GSUxFUz11dGlsL2dlbi10YXJiYWxsIC4vY29uZmlnLnN0YXR1cworCSQoUSkgY2htb2QgK3ggZ2VuLXRhcmJhbGwKKwordGFyYmFsbHM6IGdlbi10YXJiYWxsCisJc2ggZ2VuLXRhcmJhbGwgZGViaWFuCisJc2ggZ2VuLXRhcmJhbGwgYWxsCisJc2ggZ2VuLXRhcmJhbGwgc3Vic2V0CisKK2NsZWFuOjoKKwkkKFJNKSAtZiAkKFBST0dTKSBcIyogKi5zICoubyAqLmEgKn4gY29yZSAqLnRhci5neiBnZW4tdGFyYmFsbCBcCisJCWNvcHktc3BhcnNlIGRpcnBhdGhzLmggaW5zdGFsbC1zeW1saW5rCisKK21vc3RseWNsZWFuOiBjbGVhbgorCitkaXN0Y2xlYW46IGNsZWFuCisJJChSTSkgLWYgLmRlcGVuZCBNYWtlZmlsZSAkKHNyY2RpcikvVEFHUyAkKHNyY2RpcikvTWFrZWZpbGUuaW4ub2xkCisKKyMgKysrIERlcGVuZGVuY3kgbGluZSBlYXRlciArKysKKyMgCisjIE1ha2VmaWxlIGRlcGVuZGVuY2llcyBmb2xsb3cuICBUaGlzIG11c3QgYmUgdGhlIGxhc3Qgc2VjdGlvbiBpbgorIyB0aGUgTWFrZWZpbGUuaW4gZmlsZQorIworc3Vic3QubzogJChzcmNkaXIpL3N1YnN0LmMgJCh0b3BfYnVpbGRkaXIpL2xpYi9jb25maWcuaCBkaXJwYXRocy5oCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9NYWtlZmlsZS5wcSBiL2UyZnNwcm9ncy91dGlsL01ha2VmaWxlLnBxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjZGUxMTgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9NYWtlZmlsZS5wcQpAQCAtMCwwICsxLDEwIEBACitUT1BTUkM9Li4KKworIWluY2x1ZGUgJChUT1BTUkMpXHBvd2VycXVlc3RcTUNPTkZJRworCitBTEw6OiBsaWJlY2hvLmV4ZQorCitsaWJlY2hvLmV4ZTogbGliZWNoby5jCisKK2NsZWFuOjogCisJJChSTSkgbGliZWNoby5leGUKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy91dGlsL2FsbC5leGNsdWRlIGIvZTJmc3Byb2dzL3V0aWwvYWxsLmV4Y2x1ZGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdkMDNiMgotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy91dGlsL2FsbC5leGNsdWRlCkBAIC0wLDAgKzEsMTUgQEAKKy5naXQKKy5oZworLmhnaWdub3JlCisucGMKK3BhdGNoZXMKK1JFQURNRS5zdWJzZXQKK2J1aWxkCitidWlsZFteL10qCitycG0ubG9nCitUT0RPCitwb3dlcnF1ZXN0CisuZXhjbHVkZS1maWxlCitwby9zdGFtcC1jYXQtaWQKK3BvL2NhdC1pZC10YmwuYworTWV0YQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvYW5kcm9pZC1SRUFETUUudmVyc2lvbi5pbiBiL2UyZnNwcm9ncy91dGlsL2FuZHJvaWQtUkVBRE1FLnZlcnNpb24uaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlM2NiYQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy91dGlsL2FuZHJvaWQtUkVBRE1FLnZlcnNpb24uaW4KQEAgLTAsMCArMSwzIEBACitVUkw6IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC9wZW9wbGUvdHl0c28vZTJmc3Byb2dzL3Rlc3RpbmcvdkBWRVJAL2UyZnNwcm9ncy5ARk5ALnRhci5negorVmVyc2lvbjogQEZOQAorQnVnQ29tcG9uZW50OiA5NTIyMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvYW5kcm9pZF9jb25maWcuaCBiL2UyZnNwcm9ncy91dGlsL2FuZHJvaWRfY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNjMTJhNwotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy91dGlsL2FuZHJvaWRfY29uZmlnLmgKQEAgLTAsMCArMSw1MiBAQAorLyogd29yayBhcm91bmQgYnVnIGluIEFuZHJvaWRDb25maWcuaCAqLworI2lmZGVmIEhBVkVfTUFMTE9DX0gKKyN1bmRlZiBIQVZFX01BTExPQ19ICisjZGVmaW5lIEhBVkVfTUFMTE9DX0ggMQorI2VuZGlmCisKKyNkZWZpbmUgUk9PVF9TWVNDT05GRElSICIvZXRjIgorCisjZGVmaW5lIERJU0FCTEVfQkFDS1RSQUNFIDEKKyNkZWZpbmUgSEFWRV9ESVJFTlRfSCAxCisjZGVmaW5lIEhBVkVfRVJSTk9fSCAxCisjZGVmaW5lIEhBVkVfRVhUMl9JT0NUTFMgMQorI2RlZmluZSBIQVZFX0ZBTExPQ0FURSAxCisjZGVmaW5lIEhBVkVfR0VUT1BUX0ggMQorI2RlZmluZSBIQVZFX0dFVFBBR0VTSVpFIDEKKyNkZWZpbmUgSEFWRV9HRVRQV1VJRF9SIDEKKyNkZWZpbmUgSEFWRV9JTlRQVFJfVCAxCisjZGVmaW5lIEhBVkVfSU5UVFlQRVNfSCAxCisjZGVmaW5lIEhBVkVfTElOVVhfRkRfSCAxCisjZGVmaW5lIEhBVkVfTFNFRUs2NCAxCisjZGVmaW5lIEhBVkVfTFNFRUs2NF9QUk9UT1RZUEUgMQorI2RlZmluZSBIQVZFX01NQVAgMQorI2RlZmluZSBIQVZFX05FVElORVRfSU5fSCAxCisjZGVmaW5lIEhBVkVfTkVUX0lGX0ggMQorI2RlZmluZSBIQVZFX1BPU0lYX01FTUFMSUdOIDEKKyNkZWZpbmUgSEFWRV9QUkVBRCAxCisjZGVmaW5lIEhBVkVfUFJFQUQ2NCAxCisjZGVmaW5lIEhBVkVfUFdSSVRFIDEKKyNkZWZpbmUgSEFWRV9QV1JJVEU2NCAxCisjZGVmaW5lIEhBVkVfU0VUSk1QX0ggMQorI2RlZmluZSBIQVZFX1NOUFJJTlRGIDEKKyNkZWZpbmUgSEFWRV9TVERMSUJfSCAxCisjZGVmaW5lIEhBVkVfU1RSQ0FTRUNNUCAxCisjZGVmaW5lIEhBVkVfU1RSRFVQIDEKKyNkZWZpbmUgSEFWRV9TVFJJTkdTX0ggMQorI2RlZmluZSBIQVZFX1NUUk5MRU4gMQorI2RlZmluZSBIQVZFX1NUUlBUSU1FIDEKKyNkZWZpbmUgSEFWRV9TWVNDT05GIDEKKyNkZWZpbmUgSEFWRV9TWVNfSU9DVExfSCAxCisjZGVmaW5lIEhBVkVfU1lTX01NQU5fSCAxCisjZGVmaW5lIEhBVkVfU1lTX01PVU5UX0ggMQorI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDEKKyNkZWZpbmUgSEFWRV9TWVNfUFJDVExfSCAxCisjZGVmaW5lIEhBVkVfU1lTX1JFU09VUkNFX0ggMQorI2RlZmluZSBIQVZFX1NZU19TRUxFQ1RfSCAxCisjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCisjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxCisjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQorI2RlZmluZSBIQVZFX1NZU19XQUlUX0ggMQorI2RlZmluZSBIQVZFX1RZUEVfU1NJWkVfVCAxCisjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorI2RlZmluZSBIQVZFX1VUSU1FX0ggMQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvYW5kcm9pZF90eXBlcy5oIGIvZTJmc3Byb2dzL3V0aWwvYW5kcm9pZF90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljM2Y3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9hbmRyb2lkX3R5cGVzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogCisgKiBJZiBsaW51eC90eXBlcy5oIGlzIGFscmVhZHkgYmVlbiBpbmNsdWRlZCwgYXNzdW1lIGl0IGhhcyBkZWZpbmVkCisgKiBldmVyeXRoaW5nIHdlIG5lZWQuICAoY3Jvc3MgZmluZ2VycykgIE90aGVyIGhlYWRlciBmaWxlcyBtYXkgaGF2ZQorICogYWxzbyBkZWZpbmVkIHRoZSB0eXBlcyB0aGF0IHdlIG5lZWQuCisgKi8KKyNpZiAoIWRlZmluZWQoX0xJTlVYX1RZUEVTX0gpICYmICFkZWZpbmVkKF9CTEtJRF9UWVBFU19IKSAmJiBcCisJIWRlZmluZWQoX0VYVDJfVFlQRVNfSCkpCisjZGVmaW5lIF9FWFQyX1RZUEVTX0gKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdTg7Cit0eXBlZGVmIF9fc2lnbmVkX18gY2hhciBfX3M4OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBfX3UxNjsKK3R5cGVkZWYgX19zaWduZWRfXyBzaG9ydCBfX3MxNjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IF9fdTMyOwordHlwZWRlZiBfX3NpZ25lZF9fIGludCBfX3MzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIF9fdTY0OwordHlwZWRlZiBfX3NpZ25lZF9fIGxvbmcgbG9uZyBfX3M2NDsKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW50Lmg+IC8vdWludHB0cl90CisKKy8qIGVuZGlhbiBjaGVja2luZyBzdHVmZiAqLworI2lmbmRlZiBFWFQyX0VORElBTl9IXworI2RlZmluZSBFWFQyX0VORElBTl9IXworCisjaWZkZWYgX19DSEVDS0VSX18KKyNkZWZpbmUgX19iaXR3aXNlCQlfX2F0dHJpYnV0ZV9fKChiaXR3aXNlKSkKKyNkZWZpbmUgX19mb3JjZQkJCV9fYXR0cmlidXRlX18oKGZvcmNlKSkKKyNlbHNlCisjZGVmaW5lIF9fYml0d2lzZQorI2RlZmluZSBfX2ZvcmNlCisjZW5kaWYKKwordHlwZWRlZiBfX3UxNglfX2JpdHdpc2UJX19sZTE2OwordHlwZWRlZiBfX3UzMglfX2JpdHdpc2UJX19sZTMyOwordHlwZWRlZiBfX3U2NAlfX2JpdHdpc2UJX19sZTY0OwordHlwZWRlZiBfX3UxNglfX2JpdHdpc2UJX19iZTE2OwordHlwZWRlZiBfX3UzMglfX2JpdHdpc2UJX19iZTMyOwordHlwZWRlZiBfX3U2NAlfX2JpdHdpc2UJX19iZTY0OworCisjZW5kaWYgLyogRVhUMl9FTkRJQU5fSF8gKi8KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy91dGlsL2NvcHlfc3BhcnNlLmMgYi9lMmZzcHJvZ3MvdXRpbC9jb3B5X3NwYXJzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYWIyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9jb3B5X3NwYXJzZS5jCkBAIC0wLDAgKzEsMjI4IEBACisvKgorICogY29weV9zcGFyc2UuYyAtLSBjb3B5IGEgdmVyeSBsYXJnZSBzcGFyc2UgZmlsZXMgZWZmaWNpZW50bHkKKyAqIAkocmVxdWlyZXMgcm9vdCBwcml2aWxlZ2VzKQorICoKKyAqIENvcHlyaWdodCAyMDAzLCAyMDA0IGJ5IFRoZW9kb3JlIFRzJ28uCisgKgorICogJUJlZ2luLUhlYWRlciUKKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBQdWJsaWMKKyAqIExpY2Vuc2UuCisgKiAlRW5kLUhlYWRlciUKKyAqLworCisjaWZuZGVmIF9fbGludXhfXworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK2ludCBtYWluKHZvaWQpIHsKKyAgICBmcHV0cygiVGhpcyBwcm9ncmFtIGlzIG9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IVxuIiwgc3RkZXJyKTsKKyAgICBleGl0KEVYSVRfRkFJTFVSRSk7Cit9CisjZWxzZQorI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8c3lzL3Zmcy5oPgorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2luY2x1ZGUgPGxpbnV4L2ZkLmg+CisKK2ludCB2ZXJib3NlID0gMDsKKworI2RlZmluZSBGSUJNQVAJICAgX0lPKDB4MDAsMSkJLyogYm1hcCBhY2Nlc3MgKi8KKyNkZWZpbmUgRklHRVRCU1ogICBfSU8oMHgwMCwyKQkvKiBnZXQgdGhlIGJsb2NrIHNpemUgdXNlZCBmb3IgYm1hcCAqLworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfYm1hcChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgYmxvY2spCit7CisJaW50CXJldDsKKwl1bnNpZ25lZCBsb25nIGI7CisKKwliID0gYmxvY2s7CisJcmV0ID0gaW9jdGwoZmQsIEZJQk1BUCwgJmIpOworCWlmIChyZXQgPCAwKSB7CisJCWlmIChlcnJubyA9PSBFUEVSTSkgeworCQkJZnByaW50ZihzdGRlcnIsICJObyBwZXJtaXNzaW9uIHRvIHVzZSBGSUJNQVAgaW9jdGw7IG11c3QgaGF2ZSByb290IHByaXZpbGVnZXNcbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlwZXJyb3IoIkZJQk1BUCIpOworCX0KKwlyZXR1cm4gYjsKK30KKworc3RhdGljIGludCBmdWxsX3JlYWQoaW50IGZkLCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sKKwlpbnQgZ290LCB0b3RhbCA9IDA7CisJaW50IHBhc3MgPSAwOworCisJd2hpbGUgKGNvdW50ID4gMCkgeworCQlnb3QgPSByZWFkKGZkLCBidWYsIGNvdW50KTsKKwkJaWYgKGdvdCA9PSAtMSkgeworCQkJaWYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpCisJCQkJY29udGludWU7CisJCQlyZXR1cm4gdG90YWwgPyB0b3RhbCA6IC0xOworCQl9CisJCWlmIChnb3QgPT0gMCkgeworCQkJaWYgKHBhc3MrKyA+PSAzKQorCQkJCXJldHVybiB0b3RhbDsKKwkJCWNvbnRpbnVlOworCQl9CisJCXBhc3MgPSAwOworCQlidWYgKz0gZ290OworCQl0b3RhbCArPSBnb3Q7CisJCWNvdW50IC09IGdvdDsKKwl9CisJcmV0dXJuIHRvdGFsOworfQorCitzdGF0aWMgdm9pZCBjb3B5X3NwYXJzZV9maWxlKGNvbnN0IGNoYXIgKnNyYywgY29uc3QgY2hhciAqZGVzdCkKK3sKKwlzdHJ1Y3Qgc3RhdDY0CWZpbGVpbmZvOworCWxvbmcJCWxiLCBpLCBmZCwgb2ZkLCBicywgYmxvY2ssIG51bWJsb2NrczsKKwlzc2l6ZV90CQlnb3QsIGdvdDI7CisJb2ZmNjRfdAkJb2Zmc2V0ID0gMCwgc2hvdWxkX2JlOworCWNoYXIJCSpidWY7CisKKwlpZiAodmVyYm9zZSkKKwkJcHJpbnRmKCJDb3B5aW5nIHNwYXJzZSBmaWxlIGZyb20gJXMgdG8gJXNcbiIsIHNyYywgZGVzdCk7CisKKwlpZiAoc3RyY21wKHNyYywgIi0iKSkgeworCQlpZiAoc3RhdDY0KHNyYywgJmZpbGVpbmZvKSA8IDApIHsKKwkJCXBlcnJvcigic3RhdCIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoIVNfSVNSRUcoZmlsZWluZm8uc3RfbW9kZSkpIHsKKwkJCXByaW50ZigiJXM6IE5vdCBhIHJlZ3VsYXIgZmlsZVxuIiwgc3JjKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJZmQgPSBvcGVuKHNyYywgT19SRE9OTFkgfCBPX0xBUkdFRklMRSk7CisJCWlmIChmZCA8IDApIHsKKwkJCXBlcnJvcigib3BlbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoaW9jdGwoZmQsIEZJR0VUQlNaLCAmYnMpIDwgMCkgeworCQkJcGVycm9yKCJGSUdFVEJTWiIpOworCQkJY2xvc2UoZmQpOworCQkJZXhpdCgxKTsKKwkJfQorCQlpZiAoYnMgPCAwKSB7CisJCQlwcmludGYoIiVzOiBJbnZhbGlkIGJsb2NrIHNpemU6ICVsZFxuIiwgc3JjLCBicyk7CisJCQlleGl0KDEpOworCQl9CisJCWlmICh2ZXJib3NlKQorCQkJcHJpbnRmKCJCbG9ja3NpemUgb2YgZmlsZSAlcyBpcyAlbGRcbiIsIHNyYywgYnMpOworCQludW1ibG9ja3MgPSAoZmlsZWluZm8uc3Rfc2l6ZSArIChicy0xKSkgLyBiczsKKwkJaWYgKHZlcmJvc2UpCisJCQlwcmludGYoIkZpbGUgc2l6ZSBvZiAlcyBpcyAlbGxkICglbGQgYmxvY2tzKVxuIiwgc3JjLAorCQkJICAgICAgIChsb25nIGxvbmcpIGZpbGVpbmZvLnN0X3NpemUsIG51bWJsb2Nrcyk7CisJfSBlbHNlIHsKKwkJZmQgPSAwOworCQlicyA9IDEwMjQ7CisJfQorCisJb2ZkID0gb3BlbihkZXN0LCBPX1dST05MWXxPX0NSRUFUfE9fVFJVTkN8T19MQVJHRUZJTEUsIDA3NzcpOworCWlmIChvZmQgPCAwKSB7CisJCXBlcnJvcihkZXN0KTsKKwkJZXhpdCgxKTsKKwl9CisKKwlidWYgPSBtYWxsb2MoYnMpOworCWlmICghYnVmKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQ291bGRuJ3QgYWxsb2NhdGUgYnVmZmVyIik7CisJCWV4aXQoMSk7CisJfQorCisJZm9yIChsYiA9IDA7ICFmZCB8fCBsYiA8IG51bWJsb2NrczsgbGIrKykgeworCQlpZiAoZmQpIHsKKwkJCWJsb2NrID0gZ2V0X2JtYXAoZmQsIGxiKTsKKwkJCWlmICghYmxvY2spCisJCQkJY29udGludWU7CisJCQlzaG91bGRfYmUgPSAoKG9mZjY0X3QpIGxiKSAqIGJzOworCQkJaWYgKG9mZnNldCAhPSBzaG91bGRfYmUpIHsKKwkJCQlpZiAodmVyYm9zZSkKKwkJCQkJcHJpbnRmKCJTZWVraW5nIHRvICVsbGRcbiIsIHNob3VsZF9iZSk7CisJCQkJaWYgKGxzZWVrNjQoZmQsIHNob3VsZF9iZSwgU0VFS19TRVQpID09IChvZmZfdCkgLTEpIHsKKwkJCQkJcGVycm9yKCJsc2VlayBzcmMiKTsKKwkJCQkJZXhpdCgxKTsKKwkJCQl9CisJCQkJaWYgKGxzZWVrNjQob2ZkLCBzaG91bGRfYmUsIFNFRUtfU0VUKSA9PSAob2ZmX3QpIC0xKSB7CisJCQkJCXBlcnJvcigibHNlZWsgZGVzdCIpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQlvZmZzZXQgPSBzaG91bGRfYmU7CisJCQl9CisJCX0KKwkJZ290ID0gZnVsbF9yZWFkKGZkLCBidWYsIGJzKTsKKworCQlpZiAoZmQgPT0gMCAmJiBnb3QgPT0gMCkKKwkJCWJyZWFrOworCisJCWlmIChnb3QgPT0gYnMpIHsKKwkJCWZvciAoaT0wOyBpIDwgYnM7IGkrKykKKwkJCQlpZiAoYnVmW2ldKQorCQkJCQlicmVhazsKKwkJCWlmIChpID09IGJzKSB7CisJCQkJbHNlZWsob2ZkLCBicywgU0VFS19DVVIpOworCQkJCW9mZnNldCArPSBiczsKKwkJCQljb250aW51ZTsKKwkJCX0KKwkJfQorCQlnb3QyID0gd3JpdGUob2ZkLCBidWYsIGdvdCk7CisJCWlmIChnb3QgIT0gZ290MikgeworCQkJcHJpbnRmKCJzaG9ydCB3cml0ZVxuIik7CisJCQlleGl0KDEpOworCQl9CisJCW9mZnNldCArPSBnb3Q7CisJfQorCW9mZnNldCA9IGZpbGVpbmZvLnN0X3NpemU7CisJaWYgKGZzdGF0NjQob2ZkLCAmZmlsZWluZm8pIDwgMCkgeworCQlwZXJyb3IoImZzdGF0Iik7CisJCWV4aXQoMSk7CisJfQorCWlmIChmaWxlaW5mby5zdF9zaXplICE9IG9mZnNldCkgeworCQlsc2VlazY0KG9mZCwgb2Zmc2V0LTEsIFNFRUtfQ1VSKTsKKwkJYnVmWzBdID0gMDsKKwkJd3JpdGUob2ZkLCBidWYsIDEpOworCX0KKwljbG9zZShmZCk7CisJY2xvc2Uob2ZkKTsKK30KKworc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCit7CisJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgWy12XSBzb3VyY2VfZmlsZSBkZXN0aW5hdGlvbl9maWxlXG4iLCBwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKmFyZ3YpCit7CisJaW50IGM7CisKKwl3aGlsZSAoKGMgPSBnZXRvcHQoYXJnYywgYXJndiwgInYiKSkgIT0gRU9GKQorCQlzd2l0Y2ggKGMpIHsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlKys7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGFyZ3ZbMF0pOworCQkJYnJlYWs7CisJCX0KKwlpZiAob3B0aW5kKzIgIT0gYXJnYykKKwkJdXNhZ2UoYXJndlswXSk7CisJY29weV9zcGFyc2VfZmlsZShhcmd2W29wdGluZF0sIGFyZ3Zbb3B0aW5kKzFdKTsKKworCXJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9nY2Mtd2FsbC1jbGVhbnVwIGIvZTJmc3Byb2dzL3V0aWwvZ2NjLXdhbGwtY2xlYW51cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWY3YTJkCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvZ2NjLXdhbGwtY2xlYW51cApAQCAtMCwwICsxLDIzIEBACisjIS9iaW4vc2VkIC1mCisjCisjIFRoaXMgc2NyaXB0IGZpbHRlcnMgb3V0IGdjYy13YWxsIGNydWQgdGhhdCB3ZSdyZSBub3QgaW50ZXJlc3RlZCBpbiBzZWVpbmcuCisjCisvXmNjIC9kCisvXmtjYyAvZAorL15nY2MgL2QKKy9kb2VzIG5vdCBzdXBwb3J0IGBsb25nIGxvbmcnL2QKKy9mb3JiaWRzIGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50cy9kCisvZG9lcyBub3Qgc3VwcG9ydCB0aGUgYGxsJyBsZW5ndGggbW9kaWZpZXIvZAorL2RvZXMgbm90IHN1cHBvcnQgdGhlIGBsbCcgcHJpbnRmIGxlbmd0aCBtb2RpZmllci9kCisvQU5TSSBDIGZvcmJpZHMgbG9uZyBsb25nIGludGVnZXIgY29uc3RhbnRzL2QKKy90cmFkaXRpb25hbCBDIHJlamVjdHMgc3RyaW5nIGNvbmNhdGVuYXRpb24vZAorL2ludGVnZXIgY29uc3RhbnQgaXMgdW5zaWduZWQgaW4gQU5TSSBDLCBzaWduZWQgd2l0aCAtdHJhZGl0aW9uYWwvZAorL0lTTyBDIGZvcmJpZHMgY29udmVyc2lvbiBvZiBvYmplY3QgcG9pbnRlciB0byBmdW5jdGlvbiBwb2ludGVyIHR5cGUvLCsyZAorL0lTTyBDIGRvZXMgbm90IHN1cHBvcnQg4oCYX19GVU5DVElPTl9f4oCZIHByZWRlZmluZWQgaWRlbnRpZmllci9kCisvQXQgdG9wIGxldmVsOi9kCisvSW4gZmlsZSBpbmNsdWRlZCBmcm9tL2QKKy9JbiBmdW5jdGlvbiBgLionOi9kCisvemVyby1sZW5ndGggZm9ybWF0IHN0cmluZy9kCisvd2FybmluZzogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yL2QKKy9eWyAJXSpmcm9tL2QKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvZ2VuLWFuZHJvaWQtZmlsZXMgYi9lMmZzcHJvZ3MvdXRpbC9nZW4tYW5kcm9pZC1maWxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lYmQ4Nzc4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvZ2VuLWFuZHJvaWQtZmlsZXMKQEAgLTAsMCArMSwxMTEgQEAKKyMhL2Jpbi9zaAorCitBTkRST0lEX0dFTkVSQVRFRF9GSUxFUz0ibGliL2V4dDJmcy9leHQyX2Vyci5jIGxpYi9leHQyZnMvZXh0Ml9lcnIuaCBcCisJbGliL3NzL3NzX2Vyci5jIGxpYi9zcy9zc19lcnIuaCBsaWIvc3VwcG9ydC9wcm9mX2Vyci5jIFwKKwlsaWIvc3VwcG9ydC9wcm9mX2Vyci5oIFwKKwlsaWIvYmxraWQvYmxraWRfdHlwZXMuaCBsaWIvdXVpZC91dWlkX3R5cGVzLmggXAorCWxpYi9leHQyZnMvZXh0Ml90eXBlcy5oIGxpYi9jb25maWcuaCBsaWIvYmxraWQvYmxraWQuaCBcCisJbGliL3V1aWQvdXVpZC5oIGxpYi9leHQyZnMvY3JjMzJjX3RhYmxlLmggbWlzYy9kZWZhdWx0X3Byb2ZpbGUuYyBcCisJbGliL3NzL3N0ZF9ycXMuYyBkZWJ1Z2ZzL2RlYnVnX2NtZHMuYyBkZWJ1Z2ZzL3JvX2RlYnVnX2NtZHMuYyBcCisJZGVidWdmcy9leHRlbnRfY21kcy5jIGRlYnVnZnMvZTJmcmVlZnJhZy5jIGRlYnVnZnMvY3JlYXRlX2lub2RlLmMgXAorCWRlYnVnZnMvcmVjb3ZlcnkuYyBkZWJ1Z2ZzL3Jldm9rZS5jIFwKKwlNT0RVTEVfTElDRU5TRV9HUEwgUkVBRE1FLnZlcnNpb24iCisKK1NTX0RJUj0kKHB3ZCkvbGliL3NzCitNS19DTURTPS90bXAvbWtfY21kcyQkLnNoCisKK3NlZCAtZSAicy9AQVdLQC9hd2svIiA8ICRTU19ESVIvbWtfY21kcy5zaC5pbiBcCisgICAgfCBzZWQgLWUgInMvQFNFREAvc2VkLyIgPiAkTUtfQ01EUworCitzZWQgLWUgInMvQEUyRlNQUk9HU19WRVJTSU9OQC8kKGdpdCBkZXNjcmliZSkvIiA8IGxpYi9leHQyZnMvZXh0Ml9lcnIuZXQuaW4gPiBsaWIvZXh0MmZzL2V4dDJfZXJyLmV0CisKK2ZvciBpIGluIGxpYi9zcy9zc19lcnIgbGliL3N1cHBvcnQvcHJvZl9lcnIgbGliL2V4dDJmcy9leHQyX2VycgorZG8KKyAgIHJtIC1mICRpLmMgJGkuaAorICAgYXdrIC1mIGxpYi9ldC9ldF9jLmF3ayBvdXRmaWxlPSRpLmMgb3V0Zm49JChiYXNlbmFtZSAkaS5jKSAkaS5ldAorICAgYXdrIC1mIGxpYi9ldC9ldF9oLmF3ayBvdXRmaWxlPSRpLmggb3V0Zm49JChiYXNlbmFtZSAkaS5oKSAkaS5ldAorZG9uZQorCitmb3IgaSBpbiBsaWIvc3Mvc3RkX3JxcyBkZWJ1Z2ZzL2RlYnVnX2NtZHMgZGVidWdmcy9yb19kZWJ1Z19jbWRzIFwKKwkJCWRlYnVnZnMvZXh0ZW50X2NtZHMKK2RvCisgICAgX1NTX0RJUl9PVkVSUklERT1saWIvc3MgL2Jpbi9zaCAkTUtfQ01EUyAkaS5jdAorICAgIG12IC1mICQoYmFzZW5hbWUgJGkpLmMgJGkuYworZG9uZQorCitybSAtZiAkTUtfQ01EUworCitjcCBsaWIvYmxraWQvYmxraWQuaC5pbiBsaWIvYmxraWQvYmxraWQuaAorY3AgbGliL3V1aWQvdXVpZC5oLmluIGxpYi91dWlkL3V1aWQuaAorY3AgdXRpbC9hbmRyb2lkX3R5cGVzLmggbGliL2V4dDJmcy9leHQyX3R5cGVzLmgKK2NwIHV0aWwvYW5kcm9pZF90eXBlcy5oIGxpYi9ibGtpZC9ibGtpZF90eXBlcy5oCitjcCB1dGlsL2FuZHJvaWRfdHlwZXMuaCBsaWIvdXVpZC91dWlkX3R5cGVzLmgKK2NwIHV0aWwvYW5kcm9pZF9jb25maWcuaCBsaWIvY29uZmlnLmgKK2NwIG1pc2MvZTJmcmVlZnJhZy5jIG1pc2MvY3JlYXRlX2lub2RlLmMgZGVidWdmcy8KK2NwIGUyZnNjay9yZWNvdmVyeS5jIGUyZnNjay9yZXZva2UuYyBkZWJ1Z2ZzLworCitnY2MgLW8gZ2VuX2NyYzMyY3RhYmxlIGxpYi9leHQyZnMvZ2VuX2NyYzMyY3RhYmxlLmMKKy4vZ2VuX2NyYzMyY3RhYmxlID4gbGliL2V4dDJmcy9jcmMzMmNfdGFibGUuaAorCithd2sgLWYgbWlzYy9wcm9maWxlLXRvLWMuYXdrIDwgbWlzYy9ta2UyZnMuY29uZi5pbiA+IG1pc2MvZGVmYXVsdF9wcm9maWxlLmMKKworcm0gLWYgLi9nZW5fY3JjMzJ0YWJsZSAuL2dlbl9jcmMzMmN0YWJsZSBsaWIvZXh0MmZzL2V4dDJfZXJyLmV0CisKK3RvdWNoIE1PRFVMRV9MSUNFTlNFX0dQTAorCitFMkZTUFJPR1NfVkVSU0lPTj1gZ3JlcCBFMkZTUFJPR1NfVkVSU0lPTiB2ZXJzaW9uLmggIFwKKwl8IGF3ayAne3ByaW50ICQzfScgfCB0ciBcIiAiICIgfCBhd2sgJ3twcmludCAkMX0nYAorREFURT1gZ3JlcCBFMkZTUFJPR1NfREFURSB2ZXJzaW9uLmggfCBhd2sgJ3twcmludCAkM30nIFwKKwl8IHRyIFwiICIgImAKK0UyRlNQUk9HU19EQVk9JChlY2hvICREQVRFIHwgYXdrIC1GLSAne3ByaW50ICQxfScgfCBzZWQgLWUgJy9eWzEtOV0kL3MvXi8wLycpCitNT05USD1gZWNobyAkREFURSB8IGF3ayAtRi0gJ3twcmludCAkMn0nYAorWUVBUj1gZWNobyAkREFURSB8IGF3ayAtRi0gJ3twcmludCAkM30nYAorCitpZiBleHByICRZRUFSICI+IiAxOTAwID4gL2Rldi9udWxsIDsgdGhlbgorCUUyRlNQUk9HU19ZRUFSPSRZRUFSCitlbGlmIGV4cHIgJFlFQVIgIj4iIDkwID4vZGV2L251bGwgOyB0aGVuCisJRTJGU1BST0dTX1lFQVI9MTkkWUVBUgorZWxzZQorCUUyRlNQUk9HU19ZRUFSPTIwJFlFQVIKK2ZpCisKK2Nhc2UgJE1PTlRIIGluCitKYW4pCU1PTlRIX05VTT0wMTsgRTJGU1BST0dTX01PTlRIPSJKYW51YXJ5IiA7OworRmViKQlNT05USF9OVU09MDI7IEUyRlNQUk9HU19NT05USD0iRmVicnVhcnkiIDs7CitNYXIpCU1PTlRIX05VTT0wMzsgRTJGU1BST0dTX01PTlRIPSJNYXJjaCIgOzsKK0FwcikJTU9OVEhfTlVNPTA0OyBFMkZTUFJPR1NfTU9OVEg9IkFwcmlsIiA7OworTWF5KQlNT05USF9OVU09MDU7IEUyRlNQUk9HU19NT05USD0iTWF5IiA7OworSnVuKQlNT05USF9OVU09MDY7IEUyRlNQUk9HU19NT05USD0iSnVuZSIgOzsKK0p1bCkJTU9OVEhfTlVNPTA3OyBFMkZTUFJPR1NfTU9OVEg9Ikp1bHkiIDs7CitBdWcpCU1PTlRIX05VTT0wODsgRTJGU1BST0dTX01PTlRIPSJBdWd1c3QiIDs7CitTZXApCU1PTlRIX05VTT0wOTsgRTJGU1BST0dTX01PTlRIPSJTZXB0ZW1iZXIiIDs7CitPY3QpCU1PTlRIX05VTT0xMDsgRTJGU1BST0dTX01PTlRIPSJPY3RvYmVyIiA7OworTm92KQlNT05USF9OVU09MTE7IEUyRlNQUk9HU19NT05USD0iTm92ZW1iZXIiIDs7CitEZWMpCU1PTlRIX05VTT0xMjsgRTJGU1BST0dTX01PTlRIPSJEZWNlbWJlciIgOzsKKyopCU1PTlRIX05VTT0xMzsgRTJGU1BST0dTX01PTlRIPSJVTktOT1dOIiA7OworZXNhYworCitiYXNlX3Zlcj1gZWNobyAkRTJGU1BST0dTX1ZFUlNJT04gfCBcCisJICAgICAgIHNlZCAtZSAncy8tV0lQLy8nIC1lICdzL3ByZS0vLycgLWUgJ3MvLVBMVVMvLydgCisKK2RhdGVfc3BlYz0ke0UyRlNQUk9HU19ZRUFSfSR7TU9OVEhfTlVNfSR7RTJGU1BST0dTX0RBWX0KKworY2FzZSAkRTJGU1BST0dTX1ZFUlNJT04gaW4KKyotV0lQfHByZS0qKQorCVZFUj0iJGJhc2VfdmVyLVdJUC0kZGF0ZV9zcGVjIgorCUZOPSIkYmFzZV92ZXJ+V0lQLiRFMkZTUFJPR1NfWUVBUi4kTU9OVEhfTlVNLiRFMkZTUFJPR1NfREFZIgorCTs7CisqKQorCVZFUj0iJGJhc2VfdmVyIgorCUZOPSIkYmFzZV92ZXIiCisJOzsKK2VzYWMKKworc2VkIC1lICJzL0BWRVJALyRWRVIvZyIgLWUgInMvQEZOQC8kRk4vIiA8IHV0aWwvYW5kcm9pZC1SRUFETUUudmVyc2lvbi5pbiA+IFJFQURNRS52ZXJzaW9uCisKK2dpdCBhZGQgLWYgJEFORFJPSURfR0VORVJBVEVEX0ZJTEVTCitpZiB0ZXN0IC1mIENPUFlJTkcKK3RoZW4KKyAgIGdpdCBtdiBDT1BZSU5HIE5PVElDRQorZmkKK2dpdCBjb21taXQgLW0gIlVwZGF0ZSBnZW5lcmF0ZWQgZmlsZXMgZm9yIEFuZHJvaWQiCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9nZW4tdGFyYmFsbC5pbiBiL2UyZnNwcm9ncy91dGlsL2dlbi10YXJiYWxsLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MmYxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9nZW4tdGFyYmFsbC5pbgpAQCAtMCwwICsxLDU2IEBACisjIS9iaW4vc2gKKyMKKyMgVGhpcyBzY3JpcHQgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgZGlzdHJpYnV0aW9uIHRhcmJhbGwKKyMKK3NyY2Rpcj1Ac3JjZGlyQAordG9wX3NyY2Rpcj1AdG9wX3NyY2RpckAKK3RvcF9kaXI9YGNkICR0b3Bfc3JjZGlyOyBwd2RgCitiYXNlX3Zlcj1gZWNobyBARTJGU1BST0dTX1ZFUlNJT05AIHwgc2VkIC1lICdzLy1XSVAvLycgLWUgJ3MvcHJlLS8vJyAtZSAncy8tUExVUy8vJ2AKK2Jhc2VfZTJmc3Byb2dzPWBiYXNlbmFtZSAkdG9wX2RpcmAKK2V4Y2x1ZGU9L3RtcC9leGNsdWRlCitHWklQPWd6aXAKKworIworIyBUaGlzIGhhY2sgaXMgbmVlZGVkIGJlY2F1c2UgdGV4aTJkdmkgYmxvd3MgdXAgaG9ycmlibHkgaWYgdGhlcmUgYXJlIAorIyBhbnkgJ34nIGNocmFjdGVycyBpbiB0aGUgZGlyZWN0b3J5IHBhdGhuYW1lLiAgU28gd2Uga2x1ZGdlIGFyb3VuZCBpdCBieQorIyB1c2luZyBhIG5vbi1zdGFuZGFyZCBkaXJlY3RvcnkgbmFtZSBmb3IgV0lQIHJlbGVhc2VzLiAgZHBrZy1zb3VyY2UKKyMgY29tcGxhaW5zLCBidXQgbGlmZSBnb2VzIG9uLgorIworZGViX3BrZ3Zlcj1gZWNobyBARTJGU1BST0dTX1BLR1ZFUkAgfCBzZWQgLWUgJ3Mvfi8tL2cnYAorICAgIAorY2FzZSAkMSBpbgorICAgIGRlYmlhbnx1YnVudHUpCisJU1JDUk9PVD0iZTJmc3Byb2dzLSRkZWJfcGtndmVyIgorCXJlbmFtZV90YXJiYWxsPSJlMmZzcHJvZ3NfQEUyRlNQUk9HU19QS0dWRVJALm9yaWcudGFyLmd6IgorCWxpc3Q9YWxsCisJOzsKKyAgICBzdWJzZXQpCisJU1JDUk9PVD0iZTJmc3Byb2dzLWxpYnMtJGJhc2VfdmVyIgorCWxpc3Q9c3Vic2V0CisJOzsKKyAgIGFsbHwqKQorCVNSQ1JPT1Q9ImUyZnNwcm9ncy0kYmFzZV92ZXIiCisJbGlzdD1hbGwKKwk7OworZXNhYworCittdiAuLi9lMmZzcHJvZ3Muc3BlYyAkdG9wX3NyY2Rpci9lMmZzcHJvZ3Muc3BlYworKGNkICR0b3Bfc3JjZGlyLy4uIDsgZmluZCAkYmFzZV9lMmZzcHJvZ3MgXCggLW5hbWUgXCp+IC1vIC1uYW1lIFwqLm9yaWcgXAorCQktbyAtbmFtZSBDVlMgLW8gLW5hbWUgXCoucmVqIC1vIC1uYW1lIE1ha2VmaWxlLnBxIFwKKwkJLW8gLW5hbWUgVEFHUyAtbyAtbmFtZSBcKi5vbGQgLW8gLW5hbWUgU0NDUyBcCisJCS1vIC1uYW1lIGNoYW5nZWQtZmlsZXMgLW8gLW5hbWUgLiNcKiAtbyAtbmFtZSBcKi50YXIuZ3ogXAorCQktbyAtbmFtZSBhdXRvbTR0ZS5jYWNoZSBcKSBcCisJCS1wcmludCkgfCBzZWQgLWUgInMvXiRiYXNlX2UyZnNwcm9ncy8kU1JDUk9PVC8iID4gJGV4Y2x1ZGUKK3NlZCAtZSAiczteOyRTUkNST09ULzsiIDwgJHNyY2Rpci8kbGlzdC5leGNsdWRlID4+ICRleGNsdWRlCisKKyhjZCAkdG9wX3NyY2Rpci8uLiA7IHJtIC1mICRTUkNST09UIDsgbG4gLXNmICRiYXNlX2UyZnNwcm9ncyAkU1JDUk9PVCkKKworKGNkICR0b3Bfc3JjZGlyLy4uIDsgdGFyIC1jIC1oIC12IC1mIC0gLVggJGV4Y2x1ZGUgJFNSQ1JPT1QpIFwKKwkgfCAkR1pJUCAtOSAtYyA+ICRTUkNST09ULnRhci5negorJEdaSVAgLWwgJFNSQ1JPT1QudGFyLmd6CisKKyhjZCAkdG9wX3NyY2Rpci8uLiA7IHJtIC1mICRTUkNST09UKQorbXYgJHRvcF9zcmNkaXIvZTJmc3Byb2dzLnNwZWMgLi4vZTJmc3Byb2dzLnNwZWMgCitpZiB0ZXN0IC1uICIkcmVuYW1lX3RhcmJhbGwiOyB0aGVuCisgICAgbXYgJFNSQ1JPT1QudGFyLmd6ICRyZW5hbWVfdGFyYmFsbAorZmkKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy91dGlsL2dldC12ZXIgYi9lMmZzcHJvZ3MvdXRpbC9nZXQtdmVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkZTdkMjIKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9nZXQtdmVyCkBAIC0wLDAgKzEsNCBAQAorIyEvYmluL3NoCisKK3Zlcj0kKGdpdCBkZXNjcmliZSAtLWFsd2F5cyAtLWRpcnR5KTsgZWNobyAiZTJmc3Byb2dzCSR2ZXIgKCQoZ2l0IGxvZyAtMSAtLXByZXR0eT0lY0QpKSIKKwpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvaW5zdGFsbC1zeW1saW5rLmluIGIvZTJmc3Byb2dzL3V0aWwvaW5zdGFsbC1zeW1saW5rLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MzQxYjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9pbnN0YWxsLXN5bWxpbmsuaW4KQEAgLTAsMCArMSw4OSBAQAorIyEvYmluL3NoCisjCisjIGluc3RhbGwtc3ltbGluayBzb3VyY2UgZGVzdGluYXRpb24gZGVzdGRpcgorIworCitTWU1MSU5LUz1zeW1saW5rcworTE5fUz0iQExOX1NAIgorUk09IkBSTUAiCitGT1JDRV9SRUxBVElWRT1OTworRk9SQ0VfQUJTT0xVVEU9Tk8KKword2hpbGUgZWNobyAkMSB8IGdyZXAgLXEgLS0gXi0gOworZG8KKwljYXNlICQxIGluCisJCS0tcmVsYXRpdmUpCisJCQlGT1JDRV9SRUxBVElWRT1ZRVMKKwkJCTs7CisJCS0tYWJzb2x1dGUpCisJCQlGT1JDRV9BQlNPTFVURT1ZRVMKKwkJCTs7CisJCS0tZGViaWFuKQorCQkJRk9SQ0VfQUJTT0xVVEU9Tk8KKwkJCUZPUkNFX1JFTEFUSVZFPU5PCisJCQk7OworCQktLXN5bWxpbmtzPSopCisJCQlTWU1MSU5LUz0kKGVjaG8gJDEgfCBzZWQgLWUgJ3MvLS1zeW1saW5rcz0vLycpCisJCQk7OworCQkqKQorCQkJZWNobyAiVW5rbm93biBvcHRpb24gJDEiCisJCQlleGl0IDEKKwkJCTs7CisJZXNhYwkJCQkJICAgICAKKwlzaGlmdDsKK2RvbmUKKworCitGSVhfU1lNTElOSz0iJFNZTUxJTktTIC1jIgorCitTUkM9IiQxIgorREVTVD0iJDIiCitERVNURElSPSIkMyIKKworaWYgISBlY2hvICRTUkMgfCBncmVwIC1xIF4vIDsgdGhlbgorCWVjaG8gJFNSQzogU291cmNlIHBhdGhuYW1lIG11c3QgYmUgYWJzb2x1dGUKKwlleGl0IDEKK2ZpCisKK2lmICEgZWNobyAkREVTVCB8IGdyZXAgLXEgXi8gOyB0aGVuCisJZWNobyAkREVTVDogRGVzdGluYXRpb24gcGF0aG5hbWUgbXVzdCBiZSBhYnNvbHV0ZQorCWV4aXQgMQorZmkKKworaWYgISB0ZXN0IC1lICIkREVTVERJUiRTUkMiIDsgdGhlbgorCWVjaG8gJERFU1RESVIkU1JDOiBmaWxlIG9yIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdAorCWV4aXQgMQorZmkKKworJFJNIC1mICIkREVTVERJUiRERVNUIgorCitpZiB0ZXN0ICIkTE5fUyIgIT0gImxuIC1zIiA7IHRoZW4KKwkkTE5fUyAiJERFU1RESVIkU1JDIiAiJERFU1RESVIkREVTVCIKKwlleGl0IDAKK2ZpCisKK2lmIHRlc3QgJChkaXJuYW1lICIkU1JDIikgPSAkKGRpcm5hbWUgIiRERVNUIikgOyB0aGVuCisJJExOX1MgIiQoYmFzZW5hbWUgIiRTUkMiKSIgIiRERVNURElSJERFU1QiCisJZXhpdCAwCitmaQorCitUT1BfU1JDPSQoZWNobyAkU1JDIHwgYXdrIC1GLyAne3ByaW50ICQyfScpCitUT1BfREVTVD0kKGVjaG8gJERFU1QgfCBhd2sgLUYvICd7cHJpbnQgJDJ9JykKKworaWYgdGVzdCAkRk9SQ0VfUkVMQVRJVkUgPSBZRVMgOyB0aGVuCisJVE9QX1NSQz1GT1JDRQorCVRPUF9ERVNUPUZPUkNFCitmaQorCitpZiB0ZXN0ICRGT1JDRV9BQlNPTFVURSA9IFlFUyA7IHRoZW4KKwlUT1BfU1JDPUZPUkNFCisJVE9QX0RFU1Q9Rk9SQ0VfQUJTT0xVVEUKK2ZpCisKK2lmIHRlc3QgJFRPUF9TUkMgIT0gJFRPUF9ERVNUIDsgdGhlbgorCSRMTl9TICIkU1JDIiAiJERFU1RESVIkREVTVCIKK2Vsc2UKKwkkTE5fUyAiJERFU1RESVIkU1JDIiAiJERFU1RESVIkREVTVCIKKwkkRklYX1NZTUxJTksgIiRERVNURElSJERFU1QiCitmaQorCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9saWJlY2hvLmMgYi9lMmZzcHJvZ3MvdXRpbC9saWJlY2hvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUyY2UxZQotLS0gL2Rldi9udWxsCisrKyBiL2UyZnNwcm9ncy91dGlsL2xpYmVjaG8uYwpAQCAtMCwwICsxLDc4IEBACisvKgorICogbGliZWNoby5jCisgKgorICogRm9yIGVhY2ggYXJndW1lbnQgb24gdGhlIGNvbW1hbmQgbGluZSwgZWNobyBpdC4gIFNob3VsZCBleHBhbmQKKyAqIERPUyB3aWxkY2FyZHMgY29ycmVjdGx5LgorICoKKyAqIFN5bnRheDogbGliZWNobyBbLXAgcHJlZml4XSBsaXN0Li4uCisgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3ZvaWQgZWNob19maWxlcyhjaGFyICosIGNoYXIgKik7CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBpbnQgaTsKKyAgY2hhciAqcHJlZml4OworCisgIHByZWZpeCA9ICIiOworCisgIGlmIChhcmdjIDwgMikgeworICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICBsaWJlY2hvIFstcCBwcmVmaXhdIGxpc3QuLi5cbiIpOworICAgIHJldHVybiAxOworICB9CisKKyAgZm9yIChpID0gMSA7IGkgPCBhcmdjIDsgaSsrKQorICAgIGlmICghc3RyaWNtcChhcmd2W2ldLCAiLXAiKSkKKyAgICAgIHByZWZpeCA9IGFyZ3ZbKytpXTsKKyAgICBlbHNlCisgICAgICBlY2hvX2ZpbGVzKHByZWZpeCwgYXJndltpXSk7CisKKyAgcmV0dXJuIDA7Cit9CisKK3ZvaWQKK2VjaG9fZmlsZXMoY2hhciAqcHJlZml4LCBjaGFyICpmKQoreworICBsb25nIGZmOworICBzdHJ1Y3QgX2ZpbmRkYXRhX3QgZmR0OworICBjaGFyICpzbGFzaDsKKyAgY2hhciBmaWxlcGF0aFsyNTZdOworCisgIC8qCisgICAqIFdlJ3JlIHVuaXggYmFzZWQgcXVpdGUgYSBiaXQgaGVyZS4gIExvb2sgZm9yIG5vcm1hbCBzbGFzaGVzIGFuZAorICAgKiBtYWtlIHRoZW0gcmV2ZXJzZSBzbGFzaGVzLgorICAgKi8KKyAgd2hpbGUoKHNsYXNoID0gc3RycmNocihmLCAnLycpKSAhPSBOVUxMKQorICAgICpzbGFzaCA9ICdcXCc7CisKKyAgc3RyY3B5KGZpbGVwYXRoLCBmKTsKKworICBzbGFzaCA9IHN0cnJjaHIoZmlsZXBhdGgsICdcXCcpOworCisgIGlmIChzbGFzaCkgeworICAgIHNsYXNoKys7CisgICAgKnNsYXNoID0gMDsKKyAgfSBlbHNlIHsKKyAgICBmaWxlcGF0aFswXSA9ICdcMCc7CisgIH0KKworICBmZiA9IF9maW5kZmlyc3QoZiwgJmZkdCk7CisKKyAgaWYgKGZmIDwgMCkgeworICAgIHByaW50ZigiJXMlc1xuIiwgcHJlZml4LCBmKTsKKyAgICByZXR1cm47CisgIH0KKworICBwcmludGYoIiVzJXMlc1xuIiwgcHJlZml4LCBmaWxlcGF0aCwgZmR0Lm5hbWUpOworCisgIGZvciAoOzspIHsKKyAgICBpZiAoX2ZpbmRuZXh0KGZmLCAmZmR0KSA8IDApCisgICAgICBicmVhazsKKyAgICBwcmludGYoIiVzJXMlc1xuIiwgcHJlZml4LCBmaWxlcGF0aCwgZmR0Lm5hbWUpOworICB9CisgIF9maW5kY2xvc2UoZmYpOworfQpkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvc3RhdGljLWFuYWx5c2lzLWNsZWFudXAgYi9lMmZzcHJvZ3MvdXRpbC9zdGF0aWMtYW5hbHlzaXMtY2xlYW51cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzQ5MjU5Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvc3RhdGljLWFuYWx5c2lzLWNsZWFudXAKQEAgLTAsMCArMSwyMCBAQAorIyEvYmluL3NlZCAtZgorIworIyBUaGlzIHNjcmlwdCBmaWx0ZXJzIG91dCBnY2Mtd2FsbCBjcnVkIHRoYXQgd2UncmUgbm90IGludGVyZXN0ZWQgaW4gc2VlaW5nLgorIworL15jYyAvZAorL15rY2MgL2QKKy9eZ2NjIC9kCisvZG9lcyBub3Qgc3VwcG9ydCBgbG9uZyBsb25nJy9kCisvZm9yYmlkcyBsb25nIGxvbmcgaW50ZWdlciBjb25zdGFudHMvZAorL2RvZXMgbm90IHN1cHBvcnQgdGhlIGBsbCcgbGVuZ3RoIG1vZGlmaWVyL2QKKy9kb2VzIG5vdCBzdXBwb3J0IHRoZSBgbGwnIHByaW50ZiBsZW5ndGggbW9kaWZpZXIvZAorL0FOU0kgQyBmb3JiaWRzIGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50cy9kCisvdHJhZGl0aW9uYWwgQyByZWplY3RzIHN0cmluZyBjb25jYXRlbmF0aW9uL2QKKy9pbnRlZ2VyIGNvbnN0YW50IGlzIHVuc2lnbmVkIGluIEFOU0kgQywgc2lnbmVkIHdpdGggLXRyYWRpdGlvbmFsL2QKKy93YXJuaW5nOiBtaXNzaW5nIGluaXRpYWxpemVyL2QKKy93YXJuaW5nOiAobmVhciBpbml0aWFsaXphdGlvbiBmb3IvZAorL15bIAldKmZyb20vZAorL3VudXNlZCBwYXJhbWV0ZXIvZAorL2UyX3R5cGVzLmgiIG5vdCBmb3VuZC4kL2QKKy9lMl9iaXRvcHMuaCIgbm90IGZvdW5kLiQvZApkaWZmIC0tZ2l0IGEvZTJmc3Byb2dzL3V0aWwvc3Vic2V0LmV4Y2x1ZGUgYi9lMmZzcHJvZ3MvdXRpbC9zdWJzZXQuZXhjbHVkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTEwOGQyCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvc3Vic2V0LmV4Y2x1ZGUKQEAgLTAsMCArMSwzNiBAQAorLmdpdAorLmhnCisuaGdpZ25vcmUKKy5wYworcGF0Y2hlcworYnVpbGQKK2J1aWxkW14vXSoKK3JwbS5sb2cKK1RPRE8KK3Bvd2VycXVlc3QKKy5leGNsdWRlLXN1YnNldAorcG8vc3RhbXAtY2F0LWlkCitwby9jYXQtaWQtdGJsLmMKK01ldGEKK2UyZnNjaworZXh0MmVkCitkZWJ1Z2ZzCittaXNjCit0ZXN0cworcmVzaXplCitjb250cmliCitwbworaW5jbHVkZQorZGViaWFuCitsaWIvZTJwCitsaWIvZXZtcworbGliL2V4dDJmcworbGliL3N1cHBvcnQKK0FCT1VULU5MUworUkVBRE1FCitJTlNUQUxMCitJTlNUQUxMLmRsbGJpbgorSU5TVEFMTC5lbGZiaW4KK1JFTEVBU0UtTk9URVMKK2UyZnNwcm9ncy5sc20KK2UyZnNwcm9ncy5zcGVjCmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9zdWJzdC5jIGIvZTJmc3Byb2dzL3V0aWwvc3Vic3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzQ1ZDg2Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvc3Vic3QuYwpAQCAtMCwwICsxLDQ2MyBAQAorLyoKKyAqIHN1YnN0LmMgLS0tIHN1YnN0aXR1dGlvbiBwcm9ncmFtCisgKgorICogU3Vic3QgaXMgdXNlZCBhcyBhIHF1aWNreSBwcm9ncmFtIHRvIGRvIEAgc3Vic3RpdHV0aW9ucworICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2Vsc2UKKyNkZWZpbmUgSEFWRV9TWVNfVElNRV9ICisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHV0aW1lLmg+CisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9HRVRPUFRfSAorI2luY2x1ZGUgPGdldG9wdC5oPgorI2Vsc2UKK2V4dGVybiBjaGFyICpvcHRhcmc7CitleHRlcm4gaW50IG9wdGluZDsKKyNlbmRpZgorCisKK3N0cnVjdCBzdWJzdF9lbnRyeSB7CisJY2hhciAqbmFtZTsKKwljaGFyICp2YWx1ZTsKKwlzdHJ1Y3Qgc3Vic3RfZW50cnkgKm5leHQ7Cit9OworCitzdGF0aWMgc3RydWN0IHN1YnN0X2VudHJ5ICpzdWJzdF90YWJsZSA9IDA7CisKK3N0YXRpYyBpbnQgYWRkX3N1YnN0KGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlKQoreworCXN0cnVjdCBzdWJzdF9lbnRyeQkqZW50ID0gMDsKKworCWVudCA9IChzdHJ1Y3Qgc3Vic3RfZW50cnkgKikgbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc3Vic3RfZW50cnkpKTsKKwlpZiAoIWVudCkKKwkJZ290byBmYWlsOworCWVudC0+bmFtZSA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4obmFtZSkrMSk7CisJaWYgKCFlbnQtPm5hbWUpCisJCWdvdG8gZmFpbDsKKwllbnQtPnZhbHVlID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbih2YWx1ZSkrMSk7CisJaWYgKCFlbnQtPnZhbHVlKQorCQlnb3RvIGZhaWw7CisJc3RyY3B5KGVudC0+bmFtZSwgbmFtZSk7CisJc3RyY3B5KGVudC0+dmFsdWUsIHZhbHVlKTsKKwllbnQtPm5leHQgPSBzdWJzdF90YWJsZTsKKwlzdWJzdF90YWJsZSA9IGVudDsKKwlyZXR1cm4gMDsKK2ZhaWw6CisJaWYgKGVudCkgeworCQlmcmVlKGVudC0+bmFtZSk7CisJCWZyZWUoZW50KTsKKwl9CisJcmV0dXJuIEVOT01FTTsKK30KKworc3RhdGljIHN0cnVjdCBzdWJzdF9lbnRyeSAqZmV0Y2hfc3Vic3RfZW50cnkoY2hhciAqbmFtZSkKK3sKKwlzdHJ1Y3Qgc3Vic3RfZW50cnkgKmVudDsKKworCWZvciAoZW50ID0gc3Vic3RfdGFibGU7IGVudDsgZW50ID0gZW50LT5uZXh0KSB7CisJCWlmIChzdHJjbXAobmFtZSwgZW50LT5uYW1lKSA9PSAwKQorCQkJYnJlYWs7CisJfQorCXJldHVybiBlbnQ7Cit9CisKKy8qCisgKiBHaXZlbiB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgcmVwbGFjZW1lbnQgbmFtZSwKKyAqIGNoZWNrIHRvIHNlZSBpZiBpdCBpcyB2YWxpZCwgYW5kIHB1bGwgaXQgb3V0IGlmIGl0IGlzLgorICovCitzdGF0aWMgY2hhciAqZ2V0X3N1YnN0X3N5bWJvbChjb25zdCBjaGFyICpiZWdpbiwgc2l6ZV90IGxlbiwgY2hhciBwcmVmaXgpCit7CisJc3RhdGljIGNoYXIgcmVwbGFjZV9uYW1lWzEyOF07CisJY2hhciAqY3AsICpzdGFydDsKKworCXN0YXJ0ID0gcmVwbGFjZV9uYW1lOworCWlmIChwcmVmaXgpCisJCSpzdGFydCsrID0gcHJlZml4OworCisJaWYgKGxlbiA+IHNpemVvZihyZXBsYWNlX25hbWUpLTIpCisJCXJldHVybiBOVUxMOworCW1lbWNweShzdGFydCwgYmVnaW4sIGxlbik7CisJc3RhcnRbbGVuXSA9IDA7CisKKwkvKgorCSAqIFRoZSBzdWJzdGl0dXRpb24gdmFyaWFibGUgbXVzdCBhbGwgYmUgaW4gdGhlIG9mIFswLTlBLVphLXpfXS4KKwkgKiBJZiBpdCBpc24ndCwgdGhpcyBtdXN0IGJlIGFuIGludmFsaWQgc3ltYm9sIG5hbWUuCisJICovCisJZm9yIChjcCA9IHN0YXJ0OyAqY3A7IGNwKyspIHsKKwkJaWYgKCEoKmNwID49ICdhJyAmJiAqY3AgPD0gJ3onKSAmJgorCQkgICAgISgqY3AgPj0gJ0EnICYmICpjcCA8PSAnWicpICYmCisJCSAgICAhKCpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JykgJiYKKwkJICAgICEoKmNwID09ICdfJykpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisJcmV0dXJuIChyZXBsYWNlX25hbWUpOworfQorCitzdGF0aWMgdm9pZCByZXBsYWNlX3N0cmluZyhjaGFyICpiZWdpbiwgY2hhciAqZW5kLCBjaGFyICpuZXdzdHIpCit7CisJaW50CXJlcGxhY2VfbGVuLCBsZW47CisKKwlyZXBsYWNlX2xlbiA9IHN0cmxlbihuZXdzdHIpOworCWxlbiA9IGVuZCAtIGJlZ2luOworCWlmIChyZXBsYWNlX2xlbiA9PSAwKQorCQltZW1tb3ZlKGJlZ2luLCBlbmQrMSwgc3RybGVuKGVuZCkrMSk7CisJZWxzZSBpZiAocmVwbGFjZV9sZW4gIT0gbGVuKzEpCisJCW1lbW1vdmUoZW5kKyhyZXBsYWNlX2xlbi1sZW4tMSksIGVuZCwKKwkJCXN0cmxlbihlbmQpKzEpOworCW1lbWNweShiZWdpbiwgbmV3c3RyLCByZXBsYWNlX2xlbik7Cit9CisKK3N0YXRpYyB2b2lkIHN1YnN0aXR1dGVfbGluZShjaGFyICpsaW5lKQoreworCWNoYXIJKnB0ciwgKm5hbWVfcHRyLCAqZW5kX3B0cjsKKwlzdHJ1Y3Qgc3Vic3RfZW50cnkgKmVudDsKKwljaGFyCSpyZXBsYWNlX25hbWU7CisJc2l6ZV90CWxlbjsKKworCS8qCisJICogRXhwYW5kIGFsbCBARk9PQCBzdWJzdGl0dXRpb25zCisJICovCisJcHRyID0gbGluZTsKKwl3aGlsZSAocHRyKSB7CisJCW5hbWVfcHRyID0gc3RyY2hyKHB0ciwgJ0AnKTsKKwkJaWYgKCFuYW1lX3B0cikKKwkJCWJyZWFrOwkvKiBObyBtb3JlICovCisJCWlmICgqKCsrbmFtZV9wdHIpID09ICdAJykgeworCQkJLyoKKwkJCSAqIEhhbmRsZSB0eXRzb0BAbWl0LmVkdSAtLT4gdHl0c29AbWl0LmVkdQorCQkJICovCisJCQltZW1tb3ZlKG5hbWVfcHRyLTEsIG5hbWVfcHRyLCBzdHJsZW4obmFtZV9wdHIpKzEpOworCQkJcHRyID0gbmFtZV9wdHIrMTsKKwkJCWNvbnRpbnVlOworCQl9CisJCWVuZF9wdHIgPSBzdHJjaHIobmFtZV9wdHIsICdAJyk7CisJCWlmICghZW5kX3B0cikKKwkJCWJyZWFrOworCQlsZW4gPSBlbmRfcHRyIC0gbmFtZV9wdHI7CisJCXJlcGxhY2VfbmFtZSA9IGdldF9zdWJzdF9zeW1ib2wobmFtZV9wdHIsIGxlbiwgMCk7CisJCWlmICghcmVwbGFjZV9uYW1lKSB7CisJCQlwdHIgPSBuYW1lX3B0cjsKKwkJCWNvbnRpbnVlOworCQl9CisJCWVudCA9IGZldGNoX3N1YnN0X2VudHJ5KHJlcGxhY2VfbmFtZSk7CisJCWlmICghZW50KSB7CisJCQlmcHJpbnRmKHN0ZGVyciwgIlVuZm91bmQgZXhwYW5zaW9uOiAnJXMnXG4iLAorCQkJCXJlcGxhY2VfbmFtZSk7CisJCQlwdHIgPSBlbmRfcHRyICsgMTsKKwkJCWNvbnRpbnVlOworCQl9CisjaWYgMAorCQlmcHJpbnRmKHN0ZGVyciwgIlJlcGxhY2UgbmFtZSA9ICclcycgd2l0aCAnJXMnXG4iLAorCQkgICAgICAgcmVwbGFjZV9uYW1lLCBlbnQtPnZhbHVlKTsKKyNlbmRpZgorCQlwdHIgPSBuYW1lX3B0ci0xOworCQlyZXBsYWNlX3N0cmluZyhwdHIsIGVuZF9wdHIsIGVudC0+dmFsdWUpOworCQlpZiAoKGVudC0+dmFsdWVbMF0gPT0gJ0AnKSAmJgorCQkgICAgKHN0cmxlbihyZXBsYWNlX25hbWUpID09IHN0cmxlbihlbnQtPnZhbHVlKS0yKSAmJgorCQkgICAgIXN0cm5jbXAocmVwbGFjZV9uYW1lLCBlbnQtPnZhbHVlKzEsCisJCQkgICAgIHN0cmxlbihlbnQtPnZhbHVlKS0yKSkKKwkJCS8qIGF2b2lkIGFuIGluZmluaXRlIGxvb3AgKi8KKwkJCXB0ciArPSBzdHJsZW4oZW50LT52YWx1ZSk7CisJfQorCS8qCisJICogTm93IGRvIGEgc2Vjb25kIHBhc3MgdG8gZXhwYW5kICR7Rk9PfQorCSAqLworCXB0ciA9IGxpbmU7CisJd2hpbGUgKHB0cikgeworCQluYW1lX3B0ciA9IHN0cmNocihwdHIsICckJyk7CisJCWlmICghbmFtZV9wdHIpCisJCQlicmVhazsJLyogTm8gbW9yZSAqLworCQlpZiAoKigrK25hbWVfcHRyKSAhPSAneycpIHsKKwkJCXB0ciA9IG5hbWVfcHRyOworCQkJY29udGludWU7CisJCX0KKwkJbmFtZV9wdHIrKzsKKwkJZW5kX3B0ciA9IHN0cmNocihuYW1lX3B0ciwgJ30nKTsKKwkJaWYgKCFlbmRfcHRyKQorCQkJYnJlYWs7CisJCWxlbiA9IGVuZF9wdHIgLSBuYW1lX3B0cjsKKwkJcmVwbGFjZV9uYW1lID0gZ2V0X3N1YnN0X3N5bWJvbChuYW1lX3B0ciwgbGVuLCAnJCcpOworCQlpZiAoIXJlcGxhY2VfbmFtZSkgeworCQkJcHRyID0gbmFtZV9wdHI7CisJCQljb250aW51ZTsKKwkJfQorCQllbnQgPSBmZXRjaF9zdWJzdF9lbnRyeShyZXBsYWNlX25hbWUpOworCQlpZiAoIWVudCkgeworCQkJcHRyID0gZW5kX3B0ciArIDE7CisJCQljb250aW51ZTsKKwkJfQorI2lmIDAKKwkJZnByaW50ZihzdGRlcnIsICJSZXBsYWNlIG5hbWUgPSAnJXMnIHdpdGggJyVzJ1xuIiwKKwkJICAgICAgIHJlcGxhY2VfbmFtZSwgZW50LT52YWx1ZSk7CisjZW5kaWYKKwkJcHRyID0gbmFtZV9wdHItMjsKKwkJcmVwbGFjZV9zdHJpbmcocHRyLCBlbmRfcHRyLCBlbnQtPnZhbHVlKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHBhcnNlX2NvbmZpZ19maWxlKEZJTEUgKmYpCit7CisJY2hhcglsaW5lWzIwNDhdOworCWNoYXIJKmNwLCAqcHRyOworCisJd2hpbGUgKCFmZW9mKGYpKSB7CisJCW1lbXNldChsaW5lLCAwLCBzaXplb2YobGluZSkpOworCQlpZiAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBmKSA9PSBOVUxMKQorCQkJYnJlYWs7CisJCS8qCisJCSAqIFN0cmlwIG5ld2xpbmVzIGFuZCBjb21tZW50cy4KKwkJICovCisJCWNwID0gc3RyY2hyKGxpbmUsICdcbicpOworCQlpZiAoY3ApCisJCQkqY3AgPSAwOworCQljcCA9IHN0cmNocihsaW5lLCAnIycpOworCQlpZiAoY3ApCisJCQkqY3AgPSAwOworCQkvKgorCQkgKiBTa2lwIHRyYWlsaW5nIGFuZCBsZWFkaW5nIHdoaXRlc3BhY2UKKwkJICovCisJCWZvciAoY3AgPSBsaW5lICsgc3RybGVuKGxpbmUpIC0gMTsgY3AgPj0gbGluZTsgY3AtLSkgeworCQkJaWYgKCpjcCA9PSAnICcgfHwgKmNwID09ICdcdCcpCisJCQkJKmNwID0gMDsKKwkJCWVsc2UKKwkJCQlicmVhazsKKwkJfQorCQljcCA9IGxpbmU7CisJCXdoaWxlICgqY3AgJiYgaXNzcGFjZSgqY3ApKQorCQkJY3ArKzsKKwkJcHRyID0gY3A7CisJCS8qCisJCSAqIFNraXAgZW1wdHkgbGluZXMKKwkJICovCisJCWlmICgqcHRyID09IDApCisJCQljb250aW51ZTsKKwkJLyoKKwkJICogSWdub3JlIGZ1dHVyZSBleHRlbnNpb25zCisJCSAqLworCQlpZiAoKnB0ciA9PSAnQCcpCisJCQljb250aW51ZTsKKwkJLyoKKwkJICogUGFyc2Ugc3Vic3RpdHV0aW9ucworCQkgKi8KKwkJZm9yIChjcCA9IHB0cjsgKmNwOyBjcCsrKQorCQkJaWYgKGlzc3BhY2UoKmNwKSkKKwkJCQlicmVhazsKKwkJKmNwID0gMDsKKwkJZm9yIChjcCsrOyAqY3A7IGNwKyspCisJCQlpZiAoIWlzc3BhY2UoKmNwKSkKKwkJCQlicmVhazsKKyNpZiAwCisJCXByaW50ZigiU3Vic3RpdHV0ZTogJyVzJyBmb3IgJyVzJ1xuIiwgcHRyLCBjcCA/IGNwIDogIjxOVUxMPiIpOworI2VuZGlmCisJCWFkZF9zdWJzdChwdHIsIGNwKTsKKwl9Cit9CisKKy8qCisgKiBSZXR1cm4gMCBpZiB0aGUgZmlsZXMgYXJlIGRpZmZlcmVudCwgMSBpZiB0aGUgZmlsZXMgYXJlIHRoZSBzYW1lLgorICovCitzdGF0aWMgaW50IGNvbXBhcmVfZmlsZShGSUxFICpvbGRfZiwgRklMRSAqbmV3X2YpCit7CisJY2hhcglvbGRidWZbMjA0OF0sIG5ld2J1ZlsyMDQ4XSwgKm9sZGNwLCAqbmV3Y3A7CisJaW50CXJldHZhbDsKKworCXdoaWxlICgxKSB7CisJCW9sZGNwID0gZmdldHMob2xkYnVmLCBzaXplb2Yob2xkYnVmKSwgb2xkX2YpOworCQluZXdjcCA9IGZnZXRzKG5ld2J1Ziwgc2l6ZW9mKG5ld2J1ZiksIG5ld19mKTsKKwkJaWYgKCFvbGRjcCAmJiAhbmV3Y3ApIHsKKwkJCXJldHZhbCA9IDE7CisJCQlicmVhazsKKwkJfQorCQlpZiAoIW9sZGNwIHx8ICFuZXdjcCB8fCBzdHJjbXAob2xkYnVmLCBuZXdidWYpKSB7CisJCQlyZXR2YWwgPSAwOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIHJldHZhbDsKK30KKwordm9pZCBzZXRfdXRpbWVzKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIGNvbnN0IHN0cnVjdCB0aW1ldmFsIHRpbWVzWzJdKQoreworI2lmZGVmIEhBVkVfRlVUSU1FUworCWlmIChmdXRpbWVzKGZkLCB0aW1lcykgPCAwKQorCQlwZXJyb3IoImZ1dGltZXMiKTsKKyNlbGlmIEhBVkVfVVRJTUVTCisJaWYgKHV0aW1lcyhmaWxlbmFtZSwgdGltZXMpIDwgMCkKKwkJcGVycm9yKCJ1dGltZXMiKTsKKyNlbHNlCisJc3RydWN0IHV0aW1idWYgdXQ7CisKKwl1dC5hY3RpbWUgPSB0aW1lc1swXS50dl9zZWM7CisJdXQubW9kdGltZSA9IHRpbWVzWzFdLnR2X3NlYzsKKwlpZiAodXRpbWUoZmlsZW5hbWUsICZ1dCkgPCAwKQorCQlwZXJyb3IoInV0aW1lIik7CisjZW5kaWYKK30KKworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisJY2hhcglsaW5lWzIwNDhdOworCWludAljOworCWludAlmZCwgb2ZkID0gLTE7CisJRklMRQkqaW4sICpvdXQsICpvbGQgPSBOVUxMOworCWNoYXIJKm91dGZuID0gTlVMTCwgKm5ld2ZuID0gTlVMTDsKKwlpbnQJdmVyYm9zZSA9IDA7CisJaW50CWFkanVzdF90aW1lc3RhbXAgPSAwOworCWludAlnb3RfYXRpbWUgPSAwOworCXN0cnVjdCBzdGF0IHN0YnVmOworCXN0cnVjdCB0aW1ldmFsIHR2WzJdOworCisJd2hpbGUgKChjID0gZ2V0b3B0IChhcmdjLCBhcmd2LCAiZjp0diIpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChjKSB7CisJCWNhc2UgJ2YnOgorCQkJaW4gPSBmb3BlbihvcHRhcmcsICJyIik7CisJCQlpZiAoIWluKSB7CisJCQkJcGVycm9yKG9wdGFyZyk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJCXBhcnNlX2NvbmZpZ19maWxlKGluKTsKKwkJCWZjbG9zZShpbik7CisJCQlicmVhazsKKwkJY2FzZSAndCc6CisJCQlhZGp1c3RfdGltZXN0YW1wKys7CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlKys7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZwcmludGYoc3RkZXJyLCAiJXM6IFstZiBjb25maWctZmlsZV0gW2ZpbGVdXG4iLAorCQkJCWFyZ3ZbMF0pOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKG9wdGluZCA8IGFyZ2MpIHsKKwkJaW4gPSBmb3Blbihhcmd2W29wdGluZF0sICJyIik7CisJCWlmICghaW4pIHsKKwkJCXBlcnJvcihhcmd2W29wdGluZF0pOworCQkJZXhpdCgxKTsKKwkJfQorCQlvcHRpbmQrKzsKKwl9IGVsc2UKKwkJaW4gPSBzdGRpbjsKKworCWlmIChvcHRpbmQgPCBhcmdjKSB7CisJCW91dGZuID0gYXJndltvcHRpbmRdOworCQluZXdmbiA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4ob3V0Zm4pKzIwKTsKKwkJaWYgKCFuZXdmbikgeworCQkJZnByaW50ZihzdGRlcnIsICJNZW1vcnkgZXJyb3IhICBFeGl0aW5nLlxuIik7CisJCQlleGl0KDEpOworCQl9CisJCXN0cmNweShuZXdmbiwgb3V0Zm4pOworCQlzdHJjYXQobmV3Zm4sICIubmV3Iik7CisJCW9mZCA9IG9wZW4obmV3Zm4sIE9fQ1JFQVR8T19UUlVOQ3xPX1JEV1IsIDA2NDQpOworCQlpZiAob2ZkIDwgMCkgeworCQkJcGVycm9yKG5ld2ZuKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJb3V0ID0gZmRvcGVuKG9mZCwgIncrIik7CisJCWlmICghb3V0KSB7CisJCQlwZXJyb3IoImZkb3BlbiIpOworCQkJZXhpdCgxKTsKKwkJfQorCisJCWZkID0gb3BlbihvdXRmbiwgT19SRE9OTFkpOworCQlpZiAoZmQgPiAwKSB7CisJCQkvKiBzYXZlIHRoZSBvcmlnaW5hbCBhdGltZSwgaWYgcG9zc2libGUgKi8KKwkJCWlmIChmc3RhdChmZCwgJnN0YnVmKSA9PSAwKSB7CisjaWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9BVElNCisJCQkJdHZbMF0udHZfc2VjID0gc3RidWYuc3RfYXRpbS50dl9zZWM7CisJCQkJdHZbMF0udHZfdXNlYyA9IHN0YnVmLnN0X2F0aW0udHZfbnNlYyAvIDEwMDA7CisjZWxzZQorCQkJCXR2WzBdLnR2X3NlYyA9IHN0YnVmLnN0X2F0aW1lOworCQkJCXR2WzBdLnR2X3VzZWMgPSAwOworI2VuZGlmCisJCQkJZ290X2F0aW1lID0gMTsKKwkJCX0KKwkJCW9sZCA9IGZkb3BlbihmZCwgInIiKTsKKwkJCWlmICghb2xkKQorCQkJCWNsb3NlKGZkKTsKKwkJfQorCX0gZWxzZSB7CisJCW91dCA9IHN0ZG91dDsKKwkJb3V0Zm4gPSAwOworCX0KKworCXdoaWxlICghZmVvZihpbikpIHsKKwkJaWYgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pID09IE5VTEwpCisJCQlicmVhazsKKwkJc3Vic3RpdHV0ZV9saW5lKGxpbmUpOworCQlmcHV0cyhsaW5lLCBvdXQpOworCX0KKwlmY2xvc2UoaW4pOworCWlmIChvdXRmbikgeworCQlmZmx1c2gob3V0KTsKKwkJcmV3aW5kKG91dCk7CisJCWlmIChvbGQgJiYgY29tcGFyZV9maWxlKG9sZCwgb3V0KSkgeworCQkJaWYgKHZlcmJvc2UpCisJCQkJcHJpbnRmKCJObyBjaGFuZ2UsIGtlZXBpbmcgJXMuXG4iLCBvdXRmbik7CisJCQlpZiAoYWRqdXN0X3RpbWVzdGFtcCkgeworCQkJCWlmICh2ZXJib3NlKQorCQkJCQlwcmludGYoIlVwZGF0aW5nIG1vZHRpbWUgZm9yICVzXG4iLCBvdXRmbik7CisJCQkJaWYgKGdldHRpbWVvZmRheSgmdHZbMV0sIE5VTEwpIDwgMCkgeworCQkJCQlwZXJyb3IoImdldHRpbWVvZmRheSIpOworCQkJCQlleGl0KDEpOworCQkJCX0KKwkJCQlpZiAoZ290X2F0aW1lID09IDApCisJCQkJCXR2WzBdID0gdHZbMV07CisJCQkJZWxzZSBpZiAodmVyYm9zZSkKKwkJCQkJcHJpbnRmKCJVc2luZyBvcmlnaW5hbCBhdGltZVxuIik7CisJCQkJc2V0X3V0aW1lcyhvdXRmbiwgZmlsZW5vKG9sZCksIHR2KTsKKwkJCX0KKwkJCWlmIChvZmQgPj0gMCkKKwkJCQkodm9pZCkgZmNobW9kKG9mZCwgMDQ0NCk7CisJCQlmY2xvc2Uob3V0KTsKKwkJCWlmICh1bmxpbmsobmV3Zm4pIDwgMCkKKwkJCQlwZXJyb3IoInVubGluayIpOworCQl9IGVsc2UgeworCQkJaWYgKHZlcmJvc2UpCisJCQkJcHJpbnRmKCJDcmVhdGluZyBvciByZXBsYWNpbmcgJXMuXG4iLCBvdXRmbik7CisJCQlpZiAob2ZkID49IDApCisJCQkJKHZvaWQpIGZjaG1vZChvZmQsIDA0NDQpOworCQkJZmNsb3NlKG91dCk7CisJCQlpZiAob2xkKQorCQkJCWZjbG9zZShvbGQpOworCQkJb2xkID0gTlVMTDsKKwkJCWlmIChyZW5hbWUobmV3Zm4sIG91dGZuKSA8IDApIHsKKwkJCQlwZXJyb3IoInJlbmFtZSIpOworCQkJCWV4aXQoMSk7CisJCQl9CisJCX0KKwl9CisJaWYgKG9sZCkKKwkJZmNsb3NlKG9sZCk7CisJaWYgKG5ld2ZuKQorCQlmcmVlKG5ld2ZuKTsKKwlyZXR1cm4gKDApOworfQorCisKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy91dGlsL3N1YnN0LmNvbmYuaW4gYi9lMmZzcHJvZ3MvdXRpbC9zdWJzdC5jb25mLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYzA0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdXRpbC9zdWJzdC5jb25mLmluCkBAIC0wLDAgKzEsMjAgQEAKK0FXSwkJCUBBV0tACitTRUQJCQlAU0VEQAorRTJGU1BST0dTX01PTlRICQlARTJGU1BST0dTX01PTlRIQAorRTJGU1BST0dTX1lFQVIJCUBFMkZTUFJPR1NfWUVBUkAKK0UyRlNQUk9HU19WRVJTSU9OCUBFMkZTUFJPR1NfVkVSU0lPTkAKK1NJWkVPRl9MT05HX0xPTkcJQFNJWkVPRl9MT05HX0xPTkdACitTSVpFT0ZfTE9ORwkJQFNJWkVPRl9MT05HQAorU0laRU9GX0lOVAkJQFNJWkVPRl9JTlRACitTSVpFT0ZfU0hPUlQJCUBTSVpFT0ZfU0hPUlRACitkYXRhcm9vdGRpcgkJQGRhdGFyb290ZGlyQAorZGF0YWRpcgkJCUBkYXRhZGlyQAorcm9vdF9zeXNjb25mZGlyCQlAcm9vdF9zeXNjb25mZGlyQAorJGRhdGFyb290ZGlyCQlAZGF0YXJvb3RkaXJACiskcm9vdF9wcmVmaXgJCUByb290X3ByZWZpeEAKKyRwcmVmaXgJCQlAcHJlZml4QAorIyBFbmFibGUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBqb3VybmFsIGRldmljZSBta2UyZnMsIHR1bmUyZnMsIGFuZAorIyBlMmZzY2sncyBtYW4gcGFnZQorSkRFVgkJCQorIyBFbmFibGUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSB0ZGIgcHJvZmlsZSBpbiBlMmZzY2suY29uZidzIG1hbiBwYWdlCitUREJfTUFOX0NPTU1FTlQJCUBUREJfTUFOX0NPTU1FTlRACmRpZmYgLS1naXQgYS9lMmZzcHJvZ3MvdXRpbC9zeW1saW5rcy5jIGIvZTJmc3Byb2dzL3V0aWwvc3ltbGlua3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDBlZmZhCi0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3V0aWwvc3ltbGlua3MuYwpAQCAtMCwwICsxLDM5MSBAQAorI2RlZmluZSBfRklMRV9PRkZTRVRfQklUUyA2NAorI2lmbmRlZiBfTEFSR0VGSUxFX1NPVVJDRQorI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRQorI2VuZGlmCisjaWZuZGVmIF9MQVJHRUZJTEU2NF9TT1VSQ0UKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRQorI2VuZGlmCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpZm5kZWYgX1BPU0lYX1NPVVJDRQorI2RlZmluZSBfUE9TSVhfU09VUkNFCisjZW5kaWYKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmZGVmIEhBVkVfTUFMTE9DX0gKKyNpbmNsdWRlIDxtYWxsb2MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2lmbmRlZiBTX0lTTE5LCisjZGVmaW5lIFNfSVNMTksobW9kZSkgKCgobW9kZSkgJiAoX1NfSUZNVCkpID09IChfU19JRkxOSykpCisjZW5kaWYKKworI2lmbmRlZiBQQVRIX01BWAorI2RlZmluZSBQQVRIX01BWCAxMDI0CisjZW5kaWYKKworI2RlZmluZSBwcm9ndmVyICIlczogc2Nhbi9jaGFuZ2Ugc3ltYm9saWMgbGlua3MgLSB2MS4zIC0gYnkgTWFyayBMb3JkXG5cbiIKK3N0YXRpYyBjaGFyICpwcm9nbmFtZTsKK3N0YXRpYyBpbnQgdmVyYm9zZSA9IDAsIGZpeF9saW5rcyA9IDAsIHJlY3Vyc2UgPSAwLCBkZWxldGUgPSAwLCBzaG9ydGVuID0gMCwKKwkJdGVzdGluZyA9IDAsIHNpbmdsZV9mcyA9IDE7CisKKy8qCisgKiB0aWR5cGF0aCByZW1vdmVzIGV4Y2VzcyBzbGFzaGVzIGFuZCAiLiIgcmVmZXJlbmNlcyBmcm9tIGEgcGF0aCBzdHJpbmcKKyAqLworCitzdGF0aWMgaW50IHN1YnN0ciAoY2hhciAqcywgY2hhciAqb2xkLCBjaGFyICpuZXcpCit7CisJY2hhciAqdG1wID0gTlVMTDsKKwlpbnQgb2xkbGVuID0gc3RybGVuKG9sZCksIG5ld2xlbiA9IDA7CisKKwlpZiAoTlVMTCA9PSBzdHJzdHIocywgb2xkKSkKKwkJcmV0dXJuIDA7CisKKwlpZiAobmV3KQorCQluZXdsZW4gPSBzdHJsZW4obmV3KTsKKworCWlmIChuZXdsZW4gPiBvbGRsZW4pIHsKKwkJaWYgKCh0bXAgPSBtYWxsb2Moc3RybGVuKHMpKSkgPT0gTlVMTCkgeworCQkJZnByaW50ZihzdGRlcnIsICJubyBtZW1vcnlcbiIpOworCQkJZXhpdCAoMSk7CisJCX0KKwl9CisKKwl3aGlsZSAoTlVMTCAhPSAocyA9IHN0cnN0cihzLCBvbGQpKSkgeworCQljaGFyICpwLCAqb2xkX3MgPSBzOworCisJCWlmIChuZXcpIHsKKwkJCWlmIChuZXdsZW4gPiBvbGRsZW4pCisJCQkJb2xkX3MgPSBzdHJjcHkodG1wLCBzKTsKKwkJCXAgPSBuZXc7CisJCQl3aGlsZSAoKnApCisJCQkJKnMrKyA9ICpwKys7CisJCX0KKwkJcCA9IG9sZF9zICsgb2xkbGVuOworCQl3aGlsZSAoKCpzKysgPSAqcCsrKSk7CisJfQorCWlmICh0bXApCisJCWZyZWUodG1wKTsKKwlyZXR1cm4gMTsKK30KKworCitzdGF0aWMgaW50IHRpZHlfcGF0aCAoY2hhciAqcGF0aCkKK3sKKwlpbnQgdGlkaWVkID0gMDsKKwljaGFyICpzLCAqcDsKKworCXMgPSBwYXRoICsgc3RybGVuKHBhdGgpIC0gMTsKKwlpZiAoc1swXSAhPSAnLycpIHsJLyogdG1wIHRyYWlsaW5nIHNsYXNoIHNpbXBsaWZpZXMgdGhpbmdzICovCisJCXNbMV0gPSAnLyc7CisJCXNbMl0gPSAnXDAnOworCX0KKwl3aGlsZSAoc3Vic3RyKHBhdGgsICIvLi8iLCAiLyIpKQorCQl0aWRpZWQgPSAxOworCXdoaWxlIChzdWJzdHIocGF0aCwgIi8vIiwgIi8iKSkKKwkJdGlkaWVkID0gMTsKKworCXdoaWxlICgocCA9IHN0cnN0cihwYXRoLCIvLi4vIikpICE9IE5VTEwpIHsKKwkJcyA9IHArMzsKKwkJZm9yIChwLS07IHAgIT0gcGF0aDsgcC0tKSBpZiAoKnAgPT0gJy8nKSBicmVhazsKKwkJaWYgKCpwICE9ICcvJykKKwkJCWJyZWFrOworCQl3aGlsZSAoKCpwKysgPSAqcysrKSk7CisJCXRpZGllZCA9IDE7CisJfQorCWlmICgqcGF0aCA9PSAnXDAnKQorCQlzdHJjcHkocGF0aCwiLyIpOworCXAgPSBwYXRoICsgc3RybGVuKHBhdGgpIC0gMTsKKwlpZiAocCAhPSBwYXRoICYmICpwID09ICcvJykKKwkJKnAtLSA9ICdcMCc7CS8qIHJlbW92ZSB0bXAgdHJhaWxpbmcgc2xhc2ggKi8KKwl3aGlsZSAocCAhPSBwYXRoICYmICpwID09ICcvJykgewkvKiByZW1vdmUgYW55IG90aGVycyAqLworCQkqcC0tID0gJ1wwJzsKKwkJdGlkaWVkID0gMTsKKwl9CisJd2hpbGUgKCFzdHJuY21wKHBhdGgsIi4vIiwyKSkgeworCQlmb3IgKHAgPSBwYXRoLCBzID0gcGF0aCsyOyAoKnArKyA9ICpzKyspOyk7CisJCXRpZGllZCA9IDE7CisJfQorCXJldHVybiB0aWRpZWQ7Cit9CisKK3N0YXRpYyBpbnQgc2hvcnRlbl9wYXRoIChjaGFyICpwYXRoLCBjaGFyICphYnNwYXRoKQoreworCXN0YXRpYyBjaGFyIGRpcltQQVRIX01BWF07CisJaW50IHNob3J0ZW5lZCA9IDA7CisJY2hhciAqcDsKKworCS8qIGdldCByaWQgb2YgdW5uZWNlc3NhcnkgIi4uL2RpciIgc2VxdWVuY2VzICovCisJd2hpbGUgKGFic3BhdGggJiYgc3RybGVuKGFic3BhdGgpID4gMSAmJiAocCA9IHN0cnN0cihwYXRoLCIuLi8iKSkpIHsKKwkJLyogZmluZCBpbm5lcm1vc3Qgb2NjdXJhbmNlIG9mICIuLi9kaXIiLCBhbmQgc2F2ZSAiZGlyIiAqLworCQlpbnQgc2xhc2hlcyA9IDI7CisJCWNoYXIgKmEsICpzLCAqZCA9IGRpcjsKKwkJd2hpbGUgKChzID0gc3Ryc3RyKHArMywgIi4uLyIpKSkgeworCQkJKytzbGFzaGVzOworCQkJcCA9IHM7CisJCX0KKwkJcyA9IHArMzsKKwkJKmQrKyA9ICcvJzsKKwkJd2hpbGUgKCpzICYmICpzICE9ICcvJykKKwkJCSpkKysgPSAqcysrOworCQkqZCsrID0gJy8nOworCQkqZCA9ICdcMCc7CisJCWlmICghc3RyY21wKGRpciwiLy8iKSkKKwkJCWJyZWFrOworCQkvKiBub3RlOiBwIHN0aWxsIHBvaW50cyBhdCAuLi9kaXIgKi8KKwkJaWYgKCpzICE9ICcvJyB8fCAhKisrcykKKwkJCWJyZWFrOworCQlhID0gYWJzcGF0aCArIHN0cmxlbihhYnNwYXRoKSAtIDE7CisJCXdoaWxlIChzbGFzaGVzLS0gPiAwKSB7CisJCQlpZiAoYSA8PSBhYnNwYXRoKQorCQkJCWdvdG8gdWdoaDsKKwkJCXdoaWxlICgqLS1hICE9ICcvJykgeworCQkJCWlmIChhIDw9IGFic3BhdGgpCisJCQkJCWdvdG8gdWdoaDsKKwkJCX0KKwkJfQorCQlpZiAoc3RybmNtcChkaXIsIGEsIHN0cmxlbihkaXIpKSkKKwkJCWJyZWFrOworCQl3aGlsZSAoKCpwKysgPSAqcysrKSk7IC8qIGRlbGV0ZSB0aGUgLi4vZGlyICovCisJCXNob3J0ZW5lZCA9IDE7CisJfQordWdoaDoKKwlyZXR1cm4gc2hvcnRlbmVkOworfQorCisKK3N0YXRpYyB2b2lkIGZpeF9zeW1saW5rIChjaGFyICpwYXRoLCBkZXZfdCBteV9kZXYpCit7CisJc3RhdGljIGNoYXIgbHBhdGhbUEFUSF9NQVhdLCBuZXdbUEFUSF9NQVhdLCBhYnNwYXRoW1BBVEhfTUFYXTsKKwljaGFyICpwLCAqbnAsICpscCwgKnRhaWwsICptc2c7CisJc3RydWN0IHN0YXQgc3RidWYsIGxzdGJ1ZjsKKwlpbnQgYywgZml4X2FicyA9IDAsIGZpeF9tZXNzeSA9IDAsIGZpeF9sb25nID0gMDsKKworCWlmICgoYyA9IHJlYWRsaW5rKHBhdGgsIGxwYXRoLCBzaXplb2YobHBhdGgpIC0gMSkpID09IC0xKSB7CisJCXBlcnJvcihwYXRoKTsKKwkJcmV0dXJuOworCX0KKwlscGF0aFtjXSA9ICdcMCc7CS8qIHJlYWRsaW5rIGRvZXMgbm90IG51bGwgdGVybWluYXRlIGl0ICovCisKKwkvKiBjb25zdHJ1Y3QgdGhlIGFic29sdXRlIGFkZHJlc3Mgb2YgdGhlIGxpbmsgKi8KKwlhYnNwYXRoWzBdID0gJ1wwJzsKKwlpZiAobHBhdGhbMF0gIT0gJy8nKSB7CisJCXN0cmNhdChhYnNwYXRoLHBhdGgpOworCQljID0gc3RybGVuKGFic3BhdGgpOworCQlpZiAoKGMgPiAwKSAmJiAoYWJzcGF0aFtjLTFdID09ICcvJykpCisJCQlhYnNwYXRoW2MtMV0gPSAnXDAnOyAvKiBjdXQgdHJhaWxpbmcgLyAqLworCQlpZiAoKHAgPSBzdHJyY2hyKGFic3BhdGgsJy8nKSkgIT0gTlVMTCkKKwkJCSpwID0gJ1wwJzsgLyogY3V0IGxhc3QgY29tcG9uZW50ICovCisJCXN0cmNhdChhYnNwYXRoLCIvIik7CisJfQorCXN0cmNhdChhYnNwYXRoLGxwYXRoKTsKKwkodm9pZCkgdGlkeV9wYXRoKGFic3BhdGgpOworCisJLyogY2hlY2sgZm9yIHZhcmlvdXMgdGhpbmdzICovCisJaWYgKHN0YXQoYWJzcGF0aCwgJnN0YnVmKSA9PSAtMSkgeworCQlwcmludGYoImRhbmdsaW5nOiAlcyAtPiAlc1xuIiwgcGF0aCwgbHBhdGgpOworCQlpZiAoZGVsZXRlKSB7CisJCQlpZiAodW5saW5rIChwYXRoKSkgeworCQkJCXBlcnJvcihwYXRoKTsgCisJCQl9IGVsc2UKKwkJCQlwcmludGYoImRlbGV0ZWQ6ICAlcyAtPiAlc1xuIiwgcGF0aCwgbHBhdGgpOworCQl9CisJCXJldHVybjsKKwl9CisKKwlpZiAoc2luZ2xlX2ZzKQorCQlsc3RhdChhYnNwYXRoLCAmbHN0YnVmKTsgLyogaWYgdGhlIGFib3ZlIGRpZG4ndCBmYWlsLCB0aGVuIHRoaXMgc2hvdWxkbid0ICovCisJCisJaWYgKHNpbmdsZV9mcyAmJiBsc3RidWYuc3RfZGV2ICE9IG15X2RldikgeworCQltc2cgPSAib3RoZXJfZnM6IjsKKwl9IGVsc2UgaWYgKGxwYXRoWzBdID09ICcvJykgeworCQltc2cgPSAiYWJzb2x1dGU6IjsKKwkJZml4X2FicyA9IDE7CisJfSBlbHNlIGlmICh2ZXJib3NlKSB7CisJCW1zZyA9ICJyZWxhdGl2ZToiOworCX0gZWxzZQorCQltc2cgPSBOVUxMOworCWZpeF9tZXNzeSA9IHRpZHlfcGF0aChzdHJjcHkobmV3LGxwYXRoKSk7CisJaWYgKHNob3J0ZW4pCisJCWZpeF9sb25nID0gc2hvcnRlbl9wYXRoKG5ldywgcGF0aCk7CisJaWYgKCFmaXhfYWJzKSB7CisJCWlmIChmaXhfbWVzc3kpCisJCQltc2cgPSAibWVzc3k6ICAgIjsKKwkJZWxzZSBpZiAoZml4X2xvbmcpCisJCQltc2cgPSAibGVuZ3RoeTogIjsKKwl9CisJaWYgKG1zZyAhPSBOVUxMKQorCQlwcmludGYoIiVzICVzIC0+ICVzXG4iLCBtc2csIHBhdGgsIGxwYXRoKTsKKwlpZiAoIShmaXhfbGlua3MgfHwgdGVzdGluZykgfHwgIShmaXhfbWVzc3kgfHwgZml4X2FicyB8fCBmaXhfbG9uZykpCisJCXJldHVybjsKKworCWlmIChmaXhfYWJzKSB7CisJCS8qIGNvbnZlcnQgYW4gYWJzb2x1dGUgbGluayB0byByZWxhdGl2ZTogKi8KKwkJLyogcG9pbnQgdGFpbCBhdCBmaXJzdCBwYXJ0IG9mIGxwYXRoIHRoYXQgZGlmZmVycyBmcm9tIHBhdGggKi8KKwkJLyogcG9pbnQgcCAgICBhdCBmaXJzdCBwYXJ0IG9mIHBhdGggIHRoYXQgZGlmZmVycyBmcm9tIGxwYXRoICovCisJCSh2b2lkKSB0aWR5X3BhdGgobHBhdGgpOworCQl0YWlsID0gbHAgPSBscGF0aDsKKwkJcCA9IHBhdGg7CisJCXdoaWxlICgqcCAmJiAoKnAgPT0gKmxwKSkgeworCQkJaWYgKCpscCsrID09ICcvJykgeworCQkJCXRhaWwgPSBscDsKKwkJCQl3aGlsZSAoKisrcCA9PSAnLycpOworCQkJfQorCQl9CisKKwkJLyogbm93IGNyZWF0ZSBuZXcsIHdpdGggIi4uLyJzIGZvbGxvd2VkIGJ5IHRhaWwgKi8KKwkJbnAgPSBuZXc7CisJCXdoaWxlICgqcCkgeworCQkJaWYgKCpwKysgPT0gJy8nKSB7CisJCQkJKm5wKysgPSAnLic7CisJCQkJKm5wKysgPSAnLic7CisJCQkJKm5wKysgPSAnLyc7CisJCQkJd2hpbGUgKCpwID09ICcvJykgKytwOworCQkJfQorCQl9CisJCXN0cmNweSAobnAsIHRhaWwpOworCQkodm9pZCkgdGlkeV9wYXRoKG5ldyk7CisJCWlmIChzaG9ydGVuKSAodm9pZCkgc2hvcnRlbl9wYXRoKG5ldywgcGF0aCk7CisJfQorCXNob3J0ZW5fcGF0aChuZXcscGF0aCk7CisJaWYgKCF0ZXN0aW5nKSB7CisJCWlmICh1bmxpbmsgKHBhdGgpKSB7CisJCQlwZXJyb3IocGF0aCk7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKHN5bWxpbmsobmV3LCBwYXRoKSkgeworCQkJcGVycm9yKHBhdGgpOworCQkJcmV0dXJuOworCQl9CisJfQorCXByaW50ZigiY2hhbmdlZDogICVzIC0+ICVzXG4iLCBwYXRoLCBuZXcpOworfQorCitzdGF0aWMgdm9pZCBkaXJ3YWxrIChjaGFyICpwYXRoLCBpbnQgcGF0aGxlbiwgZGV2X3QgZGV2KQoreworIAljaGFyICpuYW1lOworCURJUiAqZGZkOworCXN0YXRpYyBzdHJ1Y3Qgc3RhdCBzdDsKKwlzdGF0aWMgc3RydWN0IGRpcmVudCAqZHA7CisKKwlpZiAoKGRmZCA9IG9wZW5kaXIocGF0aCkpID09IE5VTEwpIHsKKwkJcGVycm9yKHBhdGgpOworCQlyZXR1cm47CisJfQorCisJbmFtZSA9IHBhdGggKyBwYXRobGVuOworCWlmICgqKG5hbWUtMSkgIT0gJy8nKQorCQkqbmFtZSsrID0gJy8nOyAKKworCXdoaWxlICgoZHAgPSByZWFkZGlyKGRmZCkpICE9IE5VTEwgKSB7CisJCXN0cmNweShuYW1lLCBkcC0+ZF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyY21wKG5hbWUsICIuIikgJiYgc3RyY21wKG5hbWUsIi4uIikpIHsKKwkJCWlmIChsc3RhdChwYXRoLCAmc3QpID09IC0xKSB7CisJCQkJcGVycm9yKHBhdGgpOworCQkJfSBlbHNlIGlmIChzdC5zdF9kZXYgPT0gZGV2KSB7CisJCQkJaWYgKFNfSVNMTksoc3Quc3RfbW9kZSkpIHsKKwkJCQkJZml4X3N5bWxpbmsgKHBhdGgsIGRldik7CisJCQkJfSBlbHNlIGlmIChyZWN1cnNlICYmIFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJCQkJZGlyd2FsayhwYXRoLCBzdHJsZW4ocGF0aCksIGRldik7CisJCQkJfQorCQkJfQorCQl9CisJfSAKKwljbG9zZWRpcihkZmQpOworCXBhdGhbcGF0aGxlbl0gPSAnXDAnOworfQorCitzdGF0aWMgdm9pZCB1c2FnZV9lcnJvciAodm9pZCkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgcHJvZ3ZlciwgcHJvZ25hbWUpOworCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6XHQlcyBbLWNkb3JzdHZdIExJTkt8RElSIC4uLlxuXG4iLCBwcm9nbmFtZSk7CisJZnByaW50ZihzdGRlcnIsICJGbGFnczoiCisJCSJcdC1jID09IGNoYW5nZSBhYnNvbHV0ZS9tZXNzeSBsaW5rcyB0byByZWxhdGl2ZVxuIgorCQkiXHQtZCA9PSBkZWxldGUgZGFuZ2xpbmcgbGlua3NcbiIKKwkJIlx0LW8gPT0gd2FybiBhYm91dCBsaW5rcyBhY3Jvc3MgZmlsZSBzeXN0ZW1zXG4iCisJCSJcdC1yID09IHJlY3Vyc2UgaW50byBzdWJkaXJzXG4iCisJCSJcdC1zID09IHNob3J0ZW4gbGVuZ3RoeSBsaW5rcyAoZGlzcGxheWVkIGluIG91dHB1dCBvbmx5IHdoZW4gLWMgbm90IHNwZWNpZmllZClcbiIKKwkJIlx0LXQgPT0gc2hvdyB3aGF0IHdvdWxkIGJlIGRvbmUgYnkgLWNcbiIKKwkJIlx0LXYgPT0gdmVyYm9zZSAoc2hvdyBhbGwgc3ltbGlua3MpXG5cbiIpOworCWV4aXQoMSk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyNpZiBkZWZpbmVkIChfR05VX1NPVVJDRSkgJiYgZGVmaW5lZCAoX19HTElCQ19fKQorCXN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVgrMl07CisJY2hhciogY3dkID0gZ2V0X2N1cnJlbnRfZGlyX25hbWUoKTsKKyNlbHNlCisJc3RhdGljIGNoYXIgcGF0aFtQQVRIX01BWCsyXSwgY3dkW1BBVEhfTUFYKzJdOworI2VuZGlmCisJaW50IGRpcmNvdW50ID0gMDsKKwljaGFyIGMsICpwOworCisJaWYgICgocHJvZ25hbWUgPSAoY2hhciAqKSBzdHJyY2hyKCphcmd2LCAnLycpKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHByb2duYW1lID0gKmFyZ3Y7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwcm9nbmFtZSsrOworCisjaWYgZGVmaW5lZCAoX0dOVV9TT1VSQ0UpICYmIGRlZmluZWQgKF9fR0xJQkNfXykKKwlpZiAoTlVMTCA9PSBjd2QpIHsKKwkJZnByaW50ZihzdGRlcnIsImdldF9jdXJyZW50X2Rpcl9uYW1lKCkgZmFpbGVkXG4iKTsKKyNlbHNlCisJaWYgKE5VTEwgPT0gZ2V0Y3dkKGN3ZCxQQVRIX01BWCkpIHsKKwkJZnByaW50ZihzdGRlcnIsImdldGN3ZCgpIGZhaWxlZFxuIik7CisjZW5kaWYKKwkJZXhpdCAoMSk7CisJfQorI2lmIGRlZmluZWQgKF9HTlVfU09VUkNFKSAmJiBkZWZpbmVkIChfX0dMSUJDX18pCisJY3dkID0gcmVhbGxvYyhjd2QsIHN0cmxlbihjd2QpKzIpOworCWlmIChjd2QgPT0gTlVMTCkgeworCQlmcHJpbnRmKHN0ZGVyciwgInJlYWxsb2MoKSBmYWlsZWRcbiIpOworCQlleGl0ICgxKTsKKwl9CisjZW5kaWYKKwlpZiAoISpjd2QgfHwgY3dkW3N0cmxlbihjd2QpLTFdICE9ICcvJykKKwkJc3RyY2F0KGN3ZCwiLyIpOworCisJd2hpbGUgKC0tYXJnYykgeworCQlwID0gKisrYXJndjsKKwkJaWYgKCpwID09ICctJykgeworCQkJaWYgKCorK3AgPT0gJ1wwJykKKwkJCQl1c2FnZV9lcnJvcigpOworCQkJd2hpbGUgKChjID0gKnArKykpIHsKKwkJCQkgICAgIGlmIChjID09ICdjJykJZml4X2xpbmtzID0gMTsKKwkJCQllbHNlIGlmIChjID09ICdkJykJZGVsZXRlICAgID0gMTsKKwkJCQllbHNlIGlmIChjID09ICdvJykJc2luZ2xlX2ZzID0gMDsKKwkJCQllbHNlIGlmIChjID09ICdyJykJcmVjdXJzZSAgID0gMTsKKwkJCQllbHNlIGlmIChjID09ICdzJykJc2hvcnRlbiAgID0gMTsKKwkJCQllbHNlIGlmIChjID09ICd0JykJdGVzdGluZyAgID0gMTsKKwkJCQllbHNlIGlmIChjID09ICd2JykJdmVyYm9zZSAgID0gMTsKKwkJCQllbHNlCQkJdXNhZ2VfZXJyb3IoKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXN0cnVjdCBzdGF0IHN0OworCQkJaWYgKCpwID09ICcvJykKKwkJCQkqcGF0aCA9ICdcMCc7CisJCQllbHNlCisJCQkJc3RyY3B5KHBhdGgsY3dkKTsKKwkJCXRpZHlfcGF0aChzdHJjYXQocGF0aCwgcCkpOworCQkJaWYgKGxzdGF0KHBhdGgsICZzdCkgPT0gLTEpCisJCQkJcGVycm9yKHBhdGgpOworCQkJZWxzZSBpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkKKwkJCQlmaXhfc3ltbGluayhwYXRoLCBzdC5zdF9kZXYpOworCQkJZWxzZQorCQkJCWRpcndhbGsocGF0aCwgc3RybGVuKHBhdGgpLCBzdC5zdF9kZXYpOworCQkJKytkaXJjb3VudDsKKwkJfQorCX0KKwlpZiAoZGlyY291bnQgPT0gMCkKKwkJdXNhZ2VfZXJyb3IoKTsKKwlleGl0ICgwKTsKK30KZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy92ZXJzaW9uLmggYi9lMmZzcHJvZ3MvdmVyc2lvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNjdiZjgKLS0tIC9kZXYvbnVsbAorKysgYi9lMmZzcHJvZ3MvdmVyc2lvbi5oCkBAIC0wLDAgKzEsMTEgQEAKKy8qCisgKiB2ZXJzaW9uLmggLS0tIGNvbnRyb2xzIHRoZSB2ZXJzaW9uIG51bWJlciBwcmludGVkIGJ5IHRoZSBlMmZzCisgKiBwcm9ncmFtcy4KKyAqCisgKiBDb3B5cmlnaHQgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywKKyAqIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgYnkgVGhlb2RvcmUgVHMnby4gIFRoaXMKKyAqIGZpbGUgbWF5IGJlIHJlZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBQdWJsaWMgTGljZW5zZSB2Mi4KKyAqLworCisjZGVmaW5lIEUyRlNQUk9HU19WRVJTSU9OICIxLjQzLjMiCisjZGVmaW5lIEUyRlNQUk9HU19EQVRFICIwNC1TZXAtMjAxNiIKZGlmZiAtLWdpdCBhL2UyZnNwcm9ncy93b3Jkd3JhcC5wbCBiL2UyZnNwcm9ncy93b3Jkd3JhcC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDdjNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvZTJmc3Byb2dzL3dvcmR3cmFwLnBsCkBAIC0wLDAgKzEsMjkgQEAKKyMhL3Vzci9iaW4vcGVybAorIworIyB3b3Jkd3JhcC5wbCAtLS0gZG9lcyB3b3JkIHdyYXAKKyMKK3doaWxlICg8PikgeworICAgIGlmICgvXiMvKSB7CQkjIGRvbid0IHdvcmQgd3JhcCBjb21tZW50cworCXByaW50OworCW5leHQ7CisgICAgfQorICAgIG5leHQgaWYgKC9eJC8pOwkjIHNraXAgYmxhbmsgbGluZXMKKyAgICAkbGluZWxlbiA9IDA7CisgICAgQHdvcmRzID0gc3BsaXQ7CisgICAgd2hpbGUgKGRlZmluZWQoJHdvcmQgPSBzaGlmdCBAd29yZHMpKSB7CisJJHdvcmQgPX4gcyNcJFwoc3JjZGlyXCkvXC5cLi92ZXJzaW9uLmgjXCRcKHRvcF9zcmNkaXJcKS92ZXJzaW9uLmgjOworCSR3b3JkID1+IHMjXCRcKHNyY2RpclwpLy5cLlwvXC5cLi92ZXJzaW9uLmgjXCRcKHRvcF9zcmNkaXJcKS92ZXJzaW9uLmgjOworCSR3b3JkID1+IHMjXCRcKHNyY2RpclwpLy5cLlwvZXQvY29tX2Vyci5oI1wkXCh0b3Bfc3JjZGlyXCkvbGliL2V0L2NvbV9lcnIuaCM7CisJaWYgKCRsaW5lbGVuID4gMCkgeworCSAgICBwcmludGYoIiAiKTsKKwl9CisJJGxlbiA9IGxlbmd0aCgkd29yZCkgKyAxOworCSRsaW5lbGVuICs9ICRsZW47CisJaWYgKCRsaW5lbGVuID4gNzgpIHsKKwkgICAgcHJpbnRmKCJcXFxuICIpOworCSAgICAkbGluZWxlbiA9IDErJGxlbjsKKwl9CisJcHJpbnRmKCIlcyIsICR3b3JkKTsKKyAgICB9CisgICAgcHJpbnRmKCJcbiIpOworfQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0FVVEhPUlMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvQVVUSE9SUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTI4NDU2Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0FVVEhPUlMKQEAgLTAsMCArMSwxMiBAQAorTWFpbnRhaW5lcjoKKwlKb24gTWFzdGVycyA8amNtQGpvbm1hc3RlcnMub3JnPgorCitNYW55IHRoYW5rcyB0bzoKKwlBZGFtIEouIFJpY2h0ZXIgPGFkYW1AeWdnZHJhc2lsLmNvbT4KKwlBbGFuIEplbmtpbnMgPGFsYW4tamVua2luc0B0dWZmbWFpbC5jby51az4KKwlKb24gTWFzdGVycyA8amNtQGpvbm1hc3RlcnMub3JnPgorCUtheSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4KKwlNYXJjbyBkJ0l0cmkgPG1kQGxpbnV4Lml0PgorCU1pY2hhbCBNYXJlayA8bW1hcmVrQHN1c2UuY3o+CisJUm9iYnkgV29ya21hbiA8cndvcmttYW5Ac2xhY2t3YXJlLmNvbT4KKwlSdXN0eSBSdXNzZWxsIDxydXN0eUBydXN0Y29ycC5jb20uYXU+CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvQ09ESU5HIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0NPRElORwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGQ2YzE4Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0NPRElORwpAQCAtMCwwICsxLDY4IEBACittb2R1bGUtaW5pdC10b29scyBjb2Rpbmcgc3RhbmRhcmRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BhdGNoZXMgdG8gbW9kdWxlLWluaXQtdG9vbHMgYXJlIHdlbGNvbWUuICBQbGVhc2Ugbm90ZSB0aGUgZm9sbG93aW5nCitkZXNpZ24gZ29hbHM6CisKKzEpIGluc21vZCBhbmQgcm1tb2QgYXJlIGRlc2lnbmVkIHRvIGJlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZS4KKworMikgbW9kcHJvYmUgaXMgZGVzaWduZWQgdG8gYmUgYSBzd2lzcy1hcm15LWtuaWZlLCBidXQgdGhlIGNvbmZpZyBmaWxlCisgICBmb3JtYXQgaXMgZGVzaWduZWQgdG8gYmUgYXMgc2ltcGxlIGFzIHBvc3NpYmxlOiBsZXQgdGhlIHVzZXIgY3JlYXRlCisgICBjb21wbGV4aXR5IGlmIHRoZXkgd2lzaC4gSGF2aW5nIHNhaWQgdGhhdCwgdGhlICJpbnN0YWxsIiBhbmQgInJlbW92ZSIKKyAgIGNvbW1hbmRzIHNlcnZlIGFzIGV4YW1wbGVzIG9mIHdoYXQgd2UgZG9uJ3Qgd2FudCB0byBkbyBpbiB0aGUgZnV0dXJlLAorICAgZHVlIHRvIHRoZSBwcm9ibGVtcyB0aGV5IGNhdXNlIHdpdGggaWRlbnRpZnlpbmcgbW9kdWxlIGRlcGVuZGVuY2llcy4KKworMykgbW9kdWxlLWluaXQtdG9vbHMgY29udGFpbnMgYSB0ZXN0c3VpdGUuICBQYXRjaGVzIHdoaWNoIGRvIG5vdCBwYXNzCisgICB0aGUgdGVzdHN1aXRlIGdldCBhIGZyb3dueSBmYWNlLiBJdCdzIGVhc3kgdG8gcnVuIHRoZSB0ZXN0c3VpdGUsCisgICBhcyB5b3UgY2FuIHNlZSBiZWxvdy4gUGxlYXNlIGRvIHRlc3QgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZy4KKworVGhlIHRlc3RzdWl0ZQorLS0tLS0tLS0tLS0tLQorCitUaGUgdGVzdHN1aXRlIGlzIHVuZGVyIHRlc3RzL3Rlc3QtKjogb25lIGRpcmVjdG9yeSBmb3IgZWFjaCB0b29sLiBUbworcnVuIHRoZSB0ZXN0c3VpdGUsIHR5cGUgdGhlIGZvbGxvd2luZyBmcm9tIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5OgorCisJLi90ZXN0cy9ydW50ZXN0cworCitUbyBzdGFydCB0aGUgdGVzdHMgYXQgYSBwYXJ0aWN1bGFyIHRlc3QsIHVzZSB0aGF0IHRlc3QgbmFtZSBvbiB0aGUKK2NvbW1hbmQgbGluZSwgZWcuICIuL3Rlc3RzL3J1bnRlc3RzIDI2YmxhY2tsaXN0LnNoIi4gIFRvIHNlZSBleGFjdGx5Cit3aGF0IHRoZSB0ZXN0IGlzIGRvaW5nLCB1c2UgLXZ2LCBlZworCisJLi90ZXN0cy9ydW50ZXN0cyAtdnYgMjZibGFja2xpc3Quc2gKKworVG8gb25seSB0ZXN0IGEgZ2l2ZW4gZW5kaWFuZXNzIG9yIGJpdG5lc3MsIHVzZQorCisJVEVTVF9FTkRJQU49MzIgVEVTVF9CSVRTPWxlIC4vdGVzdHMvcnVudGVzdHMKKworRWFjaCB0ZXN0IGlzIGEgc2hlbGwgc2NyaXB0IHJ1biB3aXRoICItZSI6IGllLiBpZiBhbnkgY29tbWFuZCBmYWlscywKK3RoZSB0ZXN0IHdpbGwgZmFpbC4gIFRoZSBwYXRoIGlzIHNldCB1cCB3aXRoIHNwZWNpYWwgdGVzdCB2ZXJzaW9ucyBvZgordGhlIHV0aWxpdGllcyAoYW5kIHBvc3NpYmx5IHZhbGdyaW5kIHdyYXBwZXJzKSwgc28ganVzdCBpbnZva2UKKyJtb2Rwcm9iZSIgZXRjLiBhcyBub3JtYWwuICBFbnZpcm9ubWVudCB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8KK2NvbnRyb2wgbm9ybWFsbHkgaGFyZHdpcmVkIGJlaGF2aW91cjoKKworMSkgJE1PRFRFU1RfVU5BTUU6CisJVGhlIHJlc3VsdCAidW5hbWUiIGlzIHRvIHJldHVybi4gIFNldCB0byAyLjYuMjcgYnkgZGVmYXVsdC4KKworMikgJE1PRFRFU1RfT1ZFUlJJREU8bj4sICRNT0RURVNUX09WRVJSSURFX1dJVEg8bj4KKwlUaGVzZSBjYXVzZSBmaWxlIG9wZXJhdGlvbnMgb24gJE1PRFRFU1RfT1ZFUlJJREUxIHRvIG9jY3VyIG9uCisJJE1PRFRFU1RfT1ZFUlJJREVfV0lUSDEsIGV0Yy4gIFRoZSBudW1iZXJzIG11c3QgYmUgY29uc2VjdXRpdmU6CisJdGhlIGNvZGUgc3RvcHMgc2VhcmNoaW5nIGZvciBhIHJlcGxhY2VtZW50IHdoZW4gYSBudW1iZXIgaXMgbm90CisJZm91bmQuICBUaGlzIGlzIHVzZWQgdG8gc3RvcCB0aGUgdXRpbGl0aWVzIGxvb2tpbmcgaW4gCisJL2xpYi9tb2R1bGVzLzIuNi4yNy8gZm9yIGV4YW1wbGUuCisKKwlPdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY2FuIGJlIGZvdW5kIGluIHRlc3RpbmcuaC4KKworVGhlcmUgYXJlIHZhcmlvdXMgcHJlLWNvbXBpbGVkIHRlc3QgbW9kdWxlcyB1bmRlciB0ZXN0cy9kYXRhLy4gIEVhY2gKK29uZSBoYXMgYmlnIGFuZCBsaXR0bGUgZW5kaWFuIGFuZCAzMiBhbmQgNjQtYml0IHZhcmlhbnRzOiBtb2Rwcm9iZQorbXVzdCBoYW5kbGUgYm90aCAzMiBhbmQgNjQgYml0IChmb3IgeDg2LTY0LCBQUEM2NCwgU3BhcmM2NCwgSUE2NCksIGFuZAorZGVwbW9kIGFuZCBtb2RpbmZvIG11c3QgaGFuZGxlIGFueSBlbmRpYW5uZXNzIGFzIHdlbGwuICBJZiB5b3UgbmVlZCB0bworYWRkIGEgbmV3IG1vZHVsZSB0byB0ZXN0IHNvbWV0aGluZywgcHV0IHRoZSBzb3VyY2UgdW5kZXIgdGVzdHMvc3JjLAorbWFrZSBzdXJlIGl0IHBhc3NlcyBmb3IgdGhlIGNhc2VzIHlvdSBjYW4gdGVzdCwgYW5kIEknbGwgY29tcGlsZSBhbmQKK3Rlc3QgdGhlIG90aGVycy4KKworV2hlbiB3cml0aW5nIHRlc3RzLCBtYWtlIHN1cmUgeW91ciB0ZXN0IGFib3J0cyBvbiBhbnkgdW5leHBlY3RlZAorYmVoYXZpb3VyOiBlZy4gY29tcGFyZSB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIHdoYXQgeW91IGV4cGVjdCwgcmF0aGVyCit0aGFuIG5vdCBlcXVhbCB0byBzb21ldGhpbmcuCisKK0NoZWVycyEKK1J1c3R5IGFuZCBKb24uCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvQ09QWUlORyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MGMzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvQ09QWUlORwpAQCAtMCwwICsxLDM0MCBAQAorCQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKKwkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCisKKyBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKyBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKKyBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KKworCQkJICAgIFByZWFtYmxlCisKKyAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKK0xpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKK3NvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCitHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZCB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwordXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQordGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvCit5b3VyIHByb2dyYW1zLCB0b28uCisKKyAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdAorcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQoraGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgordGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0CitpZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAoraW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCisgIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKK2FueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KK1RoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91CitkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCisKKyAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcgorZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0Cit5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQorc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcgorcmlnaHRzLgorCisgIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQKKygyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCitkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorCisgIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCit0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlCit3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwordGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKK2F1dGhvcnMnIHJlcHV0YXRpb25zLgorCisgIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCitwYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlCitwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCitwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKK3BhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCisKKyAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKK21vZGlmaWNhdGlvbiBmb2xsb3cuCisMCisJCSAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucworYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlByb2dyYW0iLCBiZWxvdywKK3JlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgorbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKK3RoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCitlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgorbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgordGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCisKK0FjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90Citjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mCitydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCitpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KK1doZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgorCisgIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncworc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91Citjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCitjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCitub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CithbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCithbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorCitZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKK3lvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuCisKKyAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgorb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZAorZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCithYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KKworICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgorICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQorICAgIHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8gYWxsIHRoaXJkCisgICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFuZHMgaW50ZXJhY3RpdmVseQorICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKKyAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCisgICAgYW5ub3VuY2VtZW50IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCisgICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCisgICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgorICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRoZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCisgICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKKyAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCisgICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCisMCitUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmCitpZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAorYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCit0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlCitzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKK2Rpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZAorb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mCit0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQorZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgorCitUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKK3lvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bworZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yCitjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgorCitJbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBQcm9ncmFtCit3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKK2Egc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCit0aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLgorCisgIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAordW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mCitTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRhYmxlCisgICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCisgICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCisKKyAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQorICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCisgICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291cmNlIGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQorICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKKyAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQorICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKKworICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCisgICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAgKFRoaXMgYWx0ZXJuYXRpdmUgaXMKKyAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQorICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKKyAgICBhbiBvZmZlciwgaW4gYWNjb3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikKKworVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgorbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UKK2NvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55Cithc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KK2NvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGEKK3NwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQorYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKK2Zvcm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlCitvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAoraXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgorCitJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCithY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CithY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMKK2Rpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdAorY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KKwwKKyAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCitleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0CitvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKK3ZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KK0hvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyCit0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaAorcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCisgIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdAorc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKK2Rpc3RyaWJ1dGUgdGhlIFByb2dyYW0gb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQorcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQorbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCitQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZAorYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwordGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKyAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQorUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKK29yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8KK3RoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCityZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCitZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB0bwordGhpcyBMaWNlbnNlLgorCisgIDcuIElmLCBhcyBhIGNvbnNlcXVlbmNlIG9mIGEgY291cnQganVkZ21lbnQgb3IgYWxsZWdhdGlvbiBvZiBwYXRlbnQKK2luZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCitjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCitvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CitleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAorZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcworTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdQorbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQorYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuCit0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCityZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKK2FueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KK2FwcGx5IGFuZCB0aGUgc2VjdGlvbiBhcyBhIHdob2xlIGlzIGludGVuZGVkIHRvIGFwcGx5IGluIG90aGVyCitjaXJjdW1zdGFuY2VzLgorCitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55CitwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQorc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQoraW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzCitpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKK2dlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKK3Rocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0CitzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCit0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKK2ltcG9zZSB0aGF0IGNob2ljZS4KKworVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCitiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4KKwwKKyAgOC4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBQcm9ncmFtIGlzIHJlc3RyaWN0ZWQgaW4KK2NlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQorb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQorbWF5IGFkZCBhbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nCit0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCitjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKK3RoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgorCisgIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCitvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwKK2JlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bworYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0KK3NwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CitsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zCitlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgordGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbi4KKworICAxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlCitwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCit0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcworbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKK29mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKK29mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgorCisJCQkgICAgTk8gV0FSUkFOVFkKKworICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKK0ZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgorT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUworUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKK09SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTCitUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCitQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKK1JFUEFJUiBPUiBDT1JSRUNUSU9OLgorCisgIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKK1dJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTUFZIE1PRElGWSBBTkQvT1IKK1JFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCitJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKK09VVCBPRiBUSEUgVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQKK1RPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQorWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKK1BST0dSQU1TKSwgRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorCisJCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisMCisJICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcworCisgIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKK3Bvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKK2ZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgorCisgIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0Cit0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5Citjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAordGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCisKKyAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgorICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+CisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCisKK0lmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKK3doZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisKKyAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgIG5hbWUgb2YgYXV0aG9yCisgICAgR25vbW92aXNpb24gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLgorICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKKyAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCisKK1RoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQorcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRoZSBjb21tYW5kcyB5b3UgdXNlIG1heQorYmUgY2FsbGVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGBzaG93IHcnIGFuZCBgc2hvdyBjJzsgdGhleSBjb3VsZCBldmVuIGJlCittb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgorCitZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cgorc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKK25lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKKworICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCisgIGBHbm9tb3Zpc2lvbicgKHdoaWNoIG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgorCisgIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQorICBUeSBDb29uLCBQcmVzaWRlbnQgb2YgVmljZQorCitUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KK3Byb3ByaWV0YXJ5IHByb2dyYW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UgbWF5Citjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUKK2xpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbAorUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvQ2hhbmdlTG9nIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0NoYW5nZUxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTk3YWIwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0NoYW5nZUxvZwpAQCAtMCwwICsxLDM5NSBAQAorMy4xMSBWZXJzaW9uOgorbyBtb2RpbmZvOiBGaXggY3Jhc2ggaWYgbW9kdWxlIHJlY2VudGx5IGRlbGV0ZWQgZnJvbSBzeXN0ZW0gKE96YW4pCitvIG1vZHByb2JlOiBIYW5kbGUgYnVpbHQtaW4gbW9kdWxlcyAoTWljaGFsKQorCiszLjEwIFZlcnNpb246CitvIG1vZHByb2JlOiBjbGVhbnVwIHNvbWUgb3B0aW9uIGhhbmRsaW5nIChBbGFuKQorbyB0ZXN0c3VpdGU6IFJlYnVpbGQgYWxsIHRoZSB0ZXN0IG1vZHVsZXMgKDMyLzY0L2JlL2xlKSB0byBhdm9pZCBiaXRyb3QKKworMy45IFZlcnNpb246CitvIE5PVEU6IHRvb2xzIG5vdyBmYWlsIGxvdWRseSBpbiB0aGUgY2FzZSBvZiBub24tRUxGIGZpbGVzIGJlaW5nIHVzZWQKK28gZWxmb3BzOiByZW5hbWUgbW9kdWxlb3BzIHRvIGVsZm9wcywgcmVtb3ZlIHN0cnVjdCBtb2R1bGUgZnJvbSBpdCAoQW5kcmVhcykKK28gZGVwbW9kOiB2YXJpb3VzIHN5bWJvbCBsb29rdXAgYW5kIGRlcGVuZGVuY3kgY2FsY3VsYXRpb24gZml4ZXMgKEFuZHJlYXMpCitvIGRvYzogdmFyaW91cyBjbGVhbnVwIG9mIG1hbiBwYWdlcyAoUm9iYnkpCisKKzMuOCBWZXJzaW9uOgorbyBkb2M6IEZpeCBidWlsZCBkb2N1bWVudGF0aW9uCitvIHpsaWI6IGFsbG93IGR5bmFtaWMgbGlua2luZyAoTWljaGFsKQorCisKKzMuNyBWZXJzaW9uOgorbyBOT1RFOiAqKiogc3VwcG9ydCBmb3IgcHJlLTIuNiBrZXJuZWxzIHdhcyByZW1vdmVkIGluIHRoaXMgdmVyc2lvbiAqKioKK28gYmluZGV4OiBtb2R1bGVzLm9yZGVyIHN1cHBvcnQgYW5kIGZhbGxiYWNrIGluIGNhc2UgdHJpZSBpcyBvdXRkYXRlZCAoQWxhbikKK28gZGVwbW9kOiBmaXggaXNfaGlnaGVyX3ByaW9yaXR5KCkgKE1pY2hhbCkKK28gZGVwbW9kOiBvZmZpY2lhbGx5IGRpc2FsbG93IHNwZWNpZnlpbmcgbW9kdWxlcyB1c2luZyByZWxhdGl2ZSBwYXRocyAoQWxhbikKK28gbGliOiBmaXggdW5kZXJzY29yZSBjb252ZXJzaW9uIChBbGFuKQorbyBtb2Rwcm9iZTogcGFyc2UgZW1wdHkgb3B0aW9ucyBjb3JyZWN0bHkKK28gdGVzdHN1aXRlOiBsb3RzIG9mIHJhbmRvbSBmaXhlcyBhbmQgY2xlYW51cHMKKworMy42IFZlcnNpb246CitvIGRlcG1vZDogbWFrZSBidWlsZGluZyBtYXAgZmlsZXMgb3B0aW9uYWwgKGRvZXMgYW55b25lIHVzZSB0aGVtIGFueXdheT8pCitvIGRlbW9kOiB1c2Ugc2hvcnRlbmVkIHBhdGggbmFtZXMgaW4gaW5kZXggZmlsZXMgKHJlbGF0aXZlIHBhdGhzIHVzZWQpCitvIG1vZHByb2JlOiB1c2UgL3N5cy9tb2R1bGUgcmF0aGVyIHRoYW4gL3Byb2MvbW9kdWxlcyAoQW5kcmVhcykKK28gbW9kcHJvYmU6IHJlbW92ZSBsZWdhY3kgc3VwcG9ydCBmb3IgcHJlLTIuNiBrZXJuZWxzIChBbmRyZWFzKQorbyBtb2Rwcm9iZTogY2hlY2sgdGhhdCBhc3ByaW50ZigpIGNhbGxzIGFjdHVhbGx5IGFsbG9jYXRlIChBbmRyZWFzKQorCiszLjUgVmVyc2lvbjoKK28gYmluYXJ5IGluZGV4aW5nIGZpbGUgc3VwcG9ydCAoQWxhbiBKZW5raW5zKQorbyBkZXBtb2Q6IGZpeCBzb21lIG1lbW9yeSBsZWFrcywgcmVkdWNlIG92ZXJoZWFkIChBbGFuIEplbmtpbnMpCitvIG1vZHByb2JlOiBmaXggc29tZSBtZW1vcnkgbGVha3MsIHJlZHVjZSBvdmVyaGVhZCAoQWxhbiBKZW5raW5zKQorbyBybW1vZDogZml4IHNvbWUgbWVtb3J5IGxlYWtzIChBbGFuIEplbmtpbnMpCitvIHRlc3RzdWl0ZTogdXBkYXRlIHRoZSB0ZXN0cyAoQWxhbiBKZW5raW5zKQorbyB2YXJpb3VzIG90aGVyIGZpeGVzCisKKzMuNCBWZXJzaW9uOgorbyBtb2Rwcm9iZTogYWRkIGFiaWxpdHkgdG8gcGFyc2Uga2VybmVsIGNvbW1hbmQgbGluZSBmb3IgbW9kdWxlIG9wdGlvbnMuCisKKzMuMyBWZXJzaW9uOgorbyBtb2RpbmZvOiBhZGQgYSBrZXJuZWwgcGFyYW1ldGVyIGZvciBpbmZvIG9uIG1vZHVsZXMgdXNlZCBieSBvdGhlciBrZXJuZWxzLgorbyBsc21vZDogbW9kcHJvYmU6IENvbW1lbnQgZml4ZXMgKHRoYW5rcyBTYXRvcnUgVGFrZXVjaGkpCitvIG1vZHByb2JlOiBkb24ndCBtYW5nbGUgLSBpbiB3aWxkY2FyZHMgd2l0aGluIFsgXSAocGF0Y2ggZnJvbSBTYW0gTW9ycmlzKQorbyBuZXcgbWludGFpbmVyOiBKb24gTWFzdGVycyA8amNtQGpvbm1hc3RlcnMub3JnPgorbyBzd2l0Y2ggdG8gdXNpbmcgZ2l0IGZvciBwcm9qZWN0IG1haW50YWluYW5jZQorbyBtaXNjLiBtZW1vcnkgbGVha2FnZS9idWlsZC9kb2NzIGZpeGVzIChMdWl6IEZlcm5hbmRvIE4uIENhcGl0dWxpbm8pCitvIGNvcnJlY3QgZXJyb3IgaGFuZGxpbmcgYW5kIGluc21vZC5zdGF0aWMgaGFuZGxpbmcgKFRvYmlhcyBTdG9lY2ttYW5uKQorbyB2YXJpb3VzIG90aGVyIGZpeGVzIHRvIGJ1aWxkL2RldmVsb3BtZW50IHByb2Nlc3MuCisJCiszLjIuMiBWZXJzaW9uOgorbyBkZXBtb2Q6IFRyeSB0byBnZW5lcmF0ZSBjb3JyZWN0IGlucHV0IHRhYmxlcyBmb3IgMi42LjE0IGFuZCBhYm92ZSAodGhhbmtzIHRvIHJlcG9ydCBmcm9tIFNjb3R0IEphbWVzIFJlbW5hbnQpCisKKzMuMi4xIFZlcnNpb246CitvIGRlcG1vZDogbWFjaW8gZGV2aWNlIHN1cHBvcnQgKHBhdGNoIGZyb20gSmVmZiBNYWhvbmV5KQorCiszLjIgVmVyc2lvbjoKK28gZGVwbW9kOiBzZXJpbyBzdXBwb3J0IChwYXRjaCBmcm9tIERtaXRyeSBUb3Jva2hvdikKK28gbW9kcHJvYmU6IEZpeCBsb2FkIGJ5IHN5bWJvbCAodGhhbmtzIHRvIE5hdGhhbiBMdXRjaGFuc2t5KQorbyBtb2RpbmZvOiBIYW5kbGUgcGFybXR5cGU6IGZvciAyLjYuMTEKK28gZGVwbW9kOiBoYW5kbGUgb3RoZXIgZW5kaWFuIChhbHJlYWR5IGhhbmRsZSA2NCAmIDMyIGJpdCkKK28gbW9kcHJvYmUsIHJtbW9kLCBkZXBtb2Q6IGNoZWNrIGZvciBPT00gKHBhdGNoIGZyb20gQW5kcmVhcyBHcnVlbmJhY2hlcikKK28gZGVwbW9kOiBkb24ndCBza2lwIGZpcnN0IGFyZ3VtZW50IGZvciBleHBsaWNpdCBmaWxlcyAocGF0Y2ggZnJvbSBBbmRyZXcgU25hcmUpCitvIGRlcG1vZDogaGFuZGxlIHJlbGF0aXZlIHBhdGhzIGluIGV4cGxpY2l0IGZpbGVzCitvIG1vZHByb2JlOiBsb2FkIGFsbCBtYXRjaGluZyBhbGlhc2VzIChpZGVhIGZyb20gRG9taW5payBCcm9kb3dza2kpCitvIG1vZHByb2JlOiBuZXcgYmxhY2tsaXN0IGtleXdvcmQgKHBhdGNoIGZyb20gRXJpayB2YW4gS29uaWpuZW5idXJnKQorbyBDT0RJTkc6IG5ldyBkb2N1bWVudCBkZXNjcmliaW5nIHRlc3RzdWl0ZQorbyBNYWtlZmlsZTogaW5jbHVkZSB0ZXN0c3VpdGUgaW5zaWRlIGFsbCBzb3VyY2UgcmVsZWFzZXMKK28gbW9kcHJvYmU6IHNsb3cgZG93biBtb2Rwcm9iZSB3aXRoIGdyYXR1aXRvdXMgc3RhdCBmb3IgUmVpc2VyNCBicmFpbmRhbWFnZSAoUmVwb3J0ZWQgYnkgR2VudG9vKQorbyBNYWtlZmlsZS5hbTogVXNlIEBtYW5kaXJALCB1bmxlc3MgaXQncyBqdXN0IHByZWZpeC9tYW5kaXIgKGRpc2N1c3Npb24gd2l0aCBKZXJlbXkgQy4gUmVlZCkKK28gQWRkZWQgJENNRExJTkVfT1BUUyBzdWJzdGl0dXRpb24gdG8gaW5zdGFsbCBjb21tYW5kcy4KK28gZGVwbW9kOiBkb24ndCBleHBsb2RlIG9uIGludmFsaWQgbW9kdWxlcyAocGF0Y2ggZnJvbSBCaWxsIE5vdHRpbmdoYW0pCitvIG1vZHByb2JlOiB1bmxvY2sgZmQgd2hlbiBtb2R1bGUgYWxyZWFkeSBpbiBrZXJuZWwgKGVpdGhlciBhIHJhY2UsIG9yIGEgcmVuYW1lKSAocGF0Y2ggZnJvbSBPbGl2ZXIgQmxpbiwgcmV3b3JrZWQpCitvIG1vZHByb2JlLmNvbmYuc2dtbDogZG9jYm9vazJtYW4gdXNlcyBsYXN0IHJlZmVudHJ5dGl0bGUgZm9yIG91dHB1dCBmaWxlIChmaXhlcyBlbmR1c2VycyBuZWVkaW5nIGRvY2Jvb2sgdXRpbHMgZm9yIGJ1aWxkKQorbyBtb2Rwcm9iZTogZml4IGdjYy0yLjk1IGNvbXBpbGF0aW9uIGJ5IGRlY2xhcmluZyB2YV9saXN0IGF0IHRvcCBvZiB3YXJuKCkgKHRoYW5rcyBSYWZpcSBJc21haWwpCitvIG1vZHByb2JlOiBkb2NvIGZpeDogLWEgdGFrZXMgbW9kdWxlIG5hbWVzLCBub3Qgd2lsZGNhcmRzLgorbyBkZXBtb2QsIG1vZHByb2JlOiBnY2MgNCBzaWduZWRuZXNzIHdhcm5pbmcgZml4ZXMgKHRoYW5rcyB0byBNYXJjbyBkJ0l0cmkpCitvIG1vZHByb2JlOiBsb2NrIGJlZm9yZSBzZWVpbmcgaWYgbW9kdWxlIGluIGtlcm5lbCAobWlnaHQgYmUgZG9pbmcgaW5pdCBub3chKQorbyB0ZXN0c3VpdGU6IHVzZSAtLWxvZy1mZCAodmFsZ3JpbmQgMykgbm90IC0tbG9nZmlsZS1mZC4KK28gbW9kcHJvYmU6IHNwaW4gdG8gYXZvaWQgcGFyYWxsZWwgbG9hZCBhdHRlbXB0cyB3aGVuIGxvY2sgZmFpbGVkLiAgRml4ZXMgInVua25vd24gc3ltYm9scyBmb3IgZWhjaV9oY2QiIGJ1ZyB3aXRoIHBhcmFsbGVsIHVkZXYgb24gcm8gcm9vdC4gIChQYXRjaCBmcm9tIFBvenNhciBCYWxhenMpCisKKzMuMSBWZXJzaW9uOgorbyBtb2Rwcm9iZSwgcm1tb2Q6IEZpeCBmb3JtYXQgc3RyaW5nICh0aGFua3MgdG8gU2VyZ2V5IFZsYXNvdikKK28gbW9kaW5mbzogc3VwcG9ydCAtbiwgYW5kIGJ5IGRlZmF1bHQgZGlzcGxheSBmaWxlbmFtZS4KK28gbW9kcHJvYmU6IGFsbG93IC1vIHdpdGggLXIgdG8gcmVtb3ZlIHJlbmFtZWQgbW9kdWxlcyB3aXRoIGRlcHMgY29ycmVjdC4KK28gbW9kcHJvYmU6IGZhbGwgYmFjayB0byAvZXRjL21vZHByb2JlLmQgaWYgZmFpbCBvbiAvZXRjL21vZHByb2JlLmNvbmYuCitvIG1vZHByb2JlOiBhbGxvdyBjb25maWcgZmlsZXMgdG8gYmUgZGlyZWN0b3JpZXMsIGFuZCByZWN1cnNlLgorbyBtb2Rwcm9iZTogRml4IHF1b3Rpbmcgb2YgY21kbGluZSBvcHRpb25zLgorbyBpbnNtb2Q6IHJlbW92ZSBxdW90ZSBoYW5kbGluZywgc2luY2Ugd2UgZGlkbid0IGRvIGl0IHJpZ2h0LgorbyBkZXBtb2Q6IGlnbm9yZSBzeW1ib2xzIChlZy4gUENJIGlkcykgaW4gQlNTIChwYXRjaCBmcm9tIE1hcmMgQm91Y2hlcikuCitvIGRlcG1vZDogZXhpdCBhZnRlciAtaC4KK28gbW9kcHJvYmU6IGZpbGUgbG9ja2luZyBvbiBtb2R1bGVzIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9ycyBpZiB0aGV5IHJhY2UgKHJlcG9ydCBmcm9tIE1hcmMgQm91Y2hlcikKK28gbW9kcHJvYmU6IEZhbGwgYmFjayB0byByZWFkLW9ubHkgKG5vIGxvY2tpbmcpIGlmIHJ3IG9wZW4gb24gbW9kdWxlIGZhaWxzCitvIGRlcG1vZDogdXBkYXRlcy8gZGlyIG92ZXJyaWRlcyAoZm9yIFJILCB0aGFua3MgdG8gVGhvbWFzIFZhbmRlciBTdGljaGVsZSkKK28gZGVwbW9kOiBkb24ndCBmb2xsb3cgc3ltbGlua3MsIGJyb2tlbiBpbiB1cGRhdGVzLyByZXdvcmsgKHRoYW5rcyB0byBNYXJjbyBkJ0l0cmkpCitvIEJhc2hpc21zIHJlbW92ZWQgKHRoYW5rcyB0byBEYXZpZCBXZWluZWhhbGwpCitvIG1vZGluZm86IHVzZSBtb2R1bGVzLmRlcCwgbm90IG1hbnVhbCBzZWFyY2gsIHNvIHdlIGdldCB1cGRhdGVzLyByaWdodC4KK28gRml4IG1vZGluZm8gbWFucGFnZSBtaXNzaW5nIHdvcmQgKHRoYW5rcyBEZWJpYW4pCitvIG1vZHByb2JlLmRldmZzOiBhZGRlZCBhcG1fYmlvcyBkZXZpY2VzICh0aGFua3MgRGViaWFuKQorbyBtb2Rwcm9iZTogZG9uJ3QgZmF0YWwoKSBvbiBtaXNzaW5nIGluY2x1ZGVzICh0aGFua3MgRGViaWFuKQorbyBtb2Rwcm9iZTogaW5zdGFsbC9yZW1vdmUgY29tbWFuZHMgbXVzdCBvdmVycmlkZSBtb2R1bGVzLmFsaWFzIGZpbGUuCitvIEZpeCBtb2Rwcm9iZSBtYW4gcGFnZSB0byBkb2N1bWVudCAtLXNob3ctZGVwZW5kcyBhbmQgaW5zdGFsbCBjb21tYW5kcyAocmVwb3J0ZWQgYnkgRXJpYyBDLiBDb29wZXIpCitvIEZpeCBtb2Rwcm9iZSBtYW4gcGFnZTogLXQgLWEgcmVtb3ZlZCBpbiAzLjAgKHJlcG9ydCBmcm9tIFRob21hcyBIb29kKQorbyBEb2N1bWVudCBtb2Rwcm9iZS5kIGluIG1vZHByb2JlKC5jb25mKSBtYW4gcGFnZSAocmVwb3J0IGZyb20gU3RlZmFuIFJpY2h0ZXIpCisJCiszLjAgVmVyc2lvbjoKK28gVXBkYXRlIG1pc3Npbmcgc2NyaXB0IChyZXBvcnQgZnJvbSBSb2JpbiBHcmluZGxleSkKK28gImRlcG1vZCA8dmVyc2lvbj4iIGltcGxpZXMgLWEgKHJlcG9ydCBmcm9tIFJvYmluIEdyaW5kbGV5KQorbyBtb2Rwcm9iZTogcmVtb3ZlIC10IHdpdGhvdXQgLWw6IGl0IGRpZG4ndCB3b3JrLCBzbyBvYnZpb3VzbHkgbm9vbmUgd2FzCisJdXNpbmcgaXQuCitvIG1vZHByb2JlOiBBbGxvdyAiLWEgbW9kMSBtb2QyIiAocmVwb3J0IGZyb20gRnLpZOlyaWMgTC4gVy4gTWV1bmllcikuCitvIG1vZHByb2JlOiBGaXhlZCBzaG9ydCBhbGxvYyBpbiBtZXJnZV9hcmdzLgorbyB0ZXN0c3VpdGU6IHJ1biBldmVyeXRoaW5nIHVuZGVyIHZhbGdyaW5kLgorbyBtb2Rwcm9iZTogY2hhbmdlIHRhYnMgdG8gc3BhY2VzIGluIG1vZHVsZSBwYXJhbWV0ZXJzLgorbyBtb2Rwcm9iZTogZGVmaW5lIFNUVF9SRUdJU1RFUiBpZiBub3QgZGVmaW5lZCAocmVwb3J0IEJpbGwgTm90dGluZ2hhbSkKK28gbW9kaW5mbzogLXAgbWVhbnMgInBhcm0iIG5vdCAicGFyYW0iIChyZXBvcnQgZnJvbSBQZXRlciBDb3JkZXMpCitvIFJtbW9kIG1hbiBwYWdlIGRlc2NyaXB0aW9uIGlzIHdyb25nIChyZXBvcnQgZnJvbSBQYXdlbCkKK28gbW9kcHJvYmU6IGRvbid0IGFjY2VzcyBvZmYgZW5kIG9mIGFyZ3ZbXSB3aGVuICctYycgdXNlZC4KK28gZGVwbW9kOiBtZXJnZWQgVGFrYXNoaSBJd2FpJ3MgaXNhcG5wIHRhYmxlIGNvZGUgKHdpdGggY2hhbmdlcykuCitvIG1vZHByb2JlLmNvbmYuc2dtbDogSW5kaWNhdGUgdGhhdCBjb21tYW5kIGlzIGEgc2hlbGwgY29tbWFuZC4KK28gcm1tb2Q6IGV4aXQgd2l0aCBub24temVybyBvbiBhbnkgZmFpbHVyZSAodGhhbmtzIHRvIFNlcnVlIEhhbGx5ZW4pCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IGZpeCB1cCBjaGFyIGFuZCBibG9jayBhbGlhc2VzCisJKHRoYW5rcyB0byBPR0FXQSBIaXJvZnVtaSkKK28gbW9kcHJvYmU6IEZpeCB3YXJuaW5nIGFib3V0IHBhc3NpbmcgKGFuZCBmaXggdGhhdCBmaXggdGhhbmtzIHRvIEtlaXRoIE1vb3JlKQorbyBkZXBtb2Q6IG1lcmdlZCBBbmRyZXkgQm9yemVua292J3MgaW5wdXQgdGFibGUgY29kZSAod2l0aCBjaGFuZ2VzKS4KK28gbW9kcHJvYmU6IGluc3RhbGwvcmVtb3ZlIGNvbW1hbmRzIGNhbiBiZSB3aWxkY2FyZHMsIHNldCAkTU9EUFJPQkVfTU9EVUxFLgorbyBtb2Rwcm9iZTogaW5zZXJ0aW5nIGFscmVhZHktaW5zZXJ0ZWQgaXMgZmluZSwgYXMgaXMgcmVtb3ZpbmcgYWxyZWFkeS1yZW1vdmVkLgorbyBtb2Rwcm9iZTogQWRkIC0tZmlyc3QtdGltZSBmb3Igb2xkIGJlaGF2aW9yCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IFVzZSAtLWZpcnN0LXRpbWUgZm9yIGFib3ZlIGFuZCBiZWxvdyBjb21tYW5kcy4KK28gRkFROiBGaXggZ2VuZXJhdGUtbW9kcHJvYmUuY29uZiBxdWVzdGlvbiAocmVwb3J0IGZyb20gTm9ybWFuIERpYW1vbmQpCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IERvbid0IGNvbXBsYWluIGFib3V0IGNvbW1vbiAobm8gbG9uZ2VyIHJlcXVpcmVkKSBvcHRpb25zCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IFByZXZlbnQgIm1vZHByb2JlLm9sZDogY29tbWFuZCBub3QgZm91bmQiIG1lc3NhZ2UuCitvIG1vZHByb2JlOiBmaXggc2VtYW50aWNzIG9mIC10IHRvIG1hdGNoIGFueSBkaXIgcGFydCAodGhhbmtzIHRvIFBhdWwgV2hpdHRha2VyKQorbyB0ZXN0c3VpdGU6IHRlc3Qtcm1tb2QvMDVub3Byb2Muc2ggcmVsaWVzIG9uIG5vdCBiZWluZyByb290ICh0aGFua3MgdG8gUGllcnJlKQorbyBtb2Rwcm9iZTogaGFuZGxlIGluZmluaXRlIHJlY3Vyc2lvbiBjYXVzZWQgYnkgYWxyZWFkeS1pbnNlcnRlZCwgd2hlcmUKKwlkZXBlbmRlbmN5IGhhcyBpbnN0YWxsIGNvbW1hbmQgYnV0IGlzIGFscmVhZHkgaW5zdGFsbGVkICh0aGFua3MgdG8gVHJvbmQgTXlrbGVidXN0KQorbyBjb25maWd1cmUuaW46IHJlbW92ZSAtV2Nhc3QtYWxpZ24sIGdpdmVzIHdhcm5pbmdzIG9uIElBNjQgKHRoYW5rcyB0bworCUFuZHJldyBNb3J0b24pLiAKK28gaW5zdGFsbC13aXRoLWNhcmU6IGRvbid0IGhhcmRjb2RlIC91c3IvYmluL2luc3RhbGwgKHRoYW5rcyBQaWVycmUpCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IGhhbmRsZSAiYWRkIiBsaW5lcyBpbiBtb2R1bGVzLmNvbmYKK28gbW9kcHJvYmU6IC1xIG5vdyBvbmx5IG1lYW5zICJzaWxlbnRseSBzdWNjZWVkIG9uIHVua25vd24gbW9kdWxlcyIuCitvIG1vZHByb2JlOiB1cGRhdGUgdXNhZ2UgbWVzc2FnZQorbyBtb2Rwcm9iZTogZmx1c2ggc3Rkb3V0IG9uIHZlcmJvc2UsIHNvIHdlIGFsd2F5cyBwcmludCBiZWZvcmUgY2hpbGRyZW4uCitvIHJ1bnRlc3RzOiBjb250aW51ZSBhZnRlciAob3B0aW9uYWwpIHRlc3QgbmFtZS4KK28gTWFrZWZpbGUuYW06IG1vdmVvbGQgY2hlY2tzIGZvciBhbHJlYWR5IGhhdmluZyBiZWVuIHJ1bi4KK28gZGVwbW9kOiBIYW5kbGUgLUMgY29ycmVjdGx5ICh0aGFua3MgUmljaGFyZCBIaXJzdCkKK28gTWFrZWZpbGUuYW06ICJtYWtlIGNoZWNrIiBzdWNjZWVkcyBpZiBubyB0ZXN0Y2FzZSwgb3Igbm8gdmFsZ3JpbmQuCitvIGRlcG1vZDogUmVtb3ZlIG5vbi13b3JraW5nIF9fc3RhcnQgYW5kIF9fc3RvcCBsb2dpYywgYW5kIGlnbm9yZSB1bmtub3duCisJIl9HTE9CQUxfT0ZGU0VUX1RBQkxFXyIgZm9yIHMzOTAgKHBhdGNoIGZyb20gQXJuZCBCZXJnbWFubikKK28gbW9kcHJvYmU6IHJldmVydCAiaW5ub2N1b3VzIGNoYW5nZSIgdG8gc2tpcCByZXN0IG9mIGRlcGVuZHMgb24gaW5zZXJ0aW9uLAorCWlmIHRoaXMgbW9kdWxlIGlzIGFscmVhZHkgaW4ga2VybmVsLiAgQnV0IGluIGEgZGVwZW5kcyBvbiBiIGFuZCBjLAorCWFuZCBiIGlzIGFscmVhZHkgaW5zZXJ0ZWQsIHdlIHNob3VsZCBub3Qgc2tpcCBpbnNlcnRpbmcgYyEKK28gY29uZmlndXJlLmluOiByZW1vdmUgdW51c2VkICQoc3RhdF96bGliX2ZsYWdzKQorbyBNYWtlZmlsZS5hbTogYnVpbGQgaW5zbW9kLnN0YXRpYyBwcm9wZXJseSB3aXRoIC0tZW5hYmxlLXpsaWIKKwkodGhhbmtzIHRvIEFuZHkgV2FuZykKK28gZ2VuZXJhdGUtbW9kcHJvYmUuY29uZjogaGFuZGxlICJhZGQgYWxpYXMgeHh4IG9mZiIgY29ycmVjdGx5CisJKHRoYW5rcyB0byBNYXJ0aW4gU2NobGVtbWVyKQorbyBtb2Rwcm9iZS5jOiByZXZlcnQgLXEgYmVoYXZpb3VyOiBzaWxlbnQsIGJ1dCBleGl0IGNvZGUgMS4KKwkKKzAuOS4xNCBWZXJzaW9uOgorbyBEb24ndCB1c2Ugc3lzY2FsbCBtYWNyb3MsIHVzZSBsaWJjIHdyYXBwZXJzIGluc3RlYWQKKyAgKHBhdGNoIGZyb20gTWFyaWFuIEphbmNhcikKK28gaW5zbW9kOiBBbGxvdyBtb2R1bGUgZnJvbSBzdGRpbiAoZWcuIHpjYXQgZm9vLmtvLmd6IHwgaW5zbW9kIC0pLgorbyBkZXBtb2Q6IFJlbW92ZSBvbGQgY29tcGF0IGNvZGUgdG8gcmVjb2duaXNlICIubyIgYW5kICIua2xtIiBhcyBtb2R1bGVzLgorbyBkZXBtb2Q6IEltcGxlbWVudCAtQSBwcm9wZXJseSAoemxpYiBpcyB0b28gc2xvdykuCitvIGRlcG1vZDogemxpYiBzdXBwb3J0LgorbyBtb2RpbmZvOiB6bGliIHN1cHBvcnQuCitvIG1vZGluZm86IGhhbmRsZSAtIHZzIF8gd2hlbiBzZWFyY2hpbmcgZm9yIG1vZHVsZS4KK28gbW9kcHJvYmU6IHpsaWIgc3VwcG9ydC4KK28gbW9kcHJvYmU6IHJlbW92ZSB1bnVzZWQgZmQgdmFyIChwYXRjaCBmcm9tIEFuZHJleSBCb3J6ZW5rb3YpCitvIGRlcG1vZDogZml4IC5rby5neiBzaG9ydCBuYW1lcyBpbiB0YWJsZXMgKHBhdGNoIGZyb20gQW5kcmV5IEJvcnplbmtvdikKK28gY29uZmlndXJlLmluOiAtLW1vZGRpciAocGF0Y2ggZnJvbSBMdWNhcyBDb3JyZWlhIFZpbGxhIFJlYWwsIEdvYm9MaW51eCkKK28gbW9kcHJvYmU6IC1yIHdpdGggbXVsdGlwbGUgYXJncyAoYXMgcGVyIG1vZHV0aWxzKSAoYnVnIGZyb20gSGFyYWxkIER1bmtlbCkKK28gbW9kcHJvYmU6IE1ha2UgLXEgaWdub3JlIHVua25vd24gbW9kdWxlcworbyBtb2Rwcm9iZTogTWFrZSAtcSBzdGlsbCBzZXQgZXhpdCB2YWx1ZSAoYnVnIGZyb20gSmFtaWUgTG9raWVyKS4KKwkKKzAuOS4xMyBWZXJzaW9uOgorbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBBZGQgLS1zdGRpbiAocGF0Y2ggZnJvbSBCaWxsIE5vdHRpbmdoYW0pCitvIFJFQURNRTogU3BlbGxpbmcgZml4IChwYXRjaCBmcm9tIEFsZXggR29kZGFyZCkKK28gbW9kcHJvYmU6IHByaW50IG9wdGlvbnMgb3V0IGFmdGVyIG1vZHVsZXMgZm9yIC0tc2hvdy1kZXBlbmRzLCBhbmQKKwlwcmVmaXggd2l0aCAiaW5zbW9kIiAoaW4gY2FzZSB3ZSB3YW50IHRvIHNob3cgY29tbWFuZHMgbGF0ZXIpLgorbyBtb2Rwcm9iZTogbWFrZSAtLXNob3ctZGVwZW5kcyBzaG93IGNvbW1hbmRzIChwcmVmaXg6IGluc3RhbGwpLgorbyBBbHdheXMgdXNlIHN5c2NhbGwoKSBpbiBiYWNrd2FyZHNfY29tcGF0LmM6IG90aGVyIGFyY2hzIHdhbnQgaXQuCitvIGRlcG1vZC5jOiBGaXggZmQgbGVhayBmb3IgZGVlcCBkaXJzIChwYXRjaCBmcm9tIEFyamFuIHZhbiBkZSBWZW4pCitvIG1vZHByb2JlLnNnbWw6IGRvY3VtZW50IC1vLy0tbmFtZSBvcHRpb24uCitvIG1vZHByb2JlOiBpbmNsdWRlIGZpbGVzIGFsaWFzZXMgc2hvdWxkIG92ZXJyaWRlOiBtb2Rwcm9iZS5kZXZmcyB3YW50cyB0aGlzCisJc28gdXNlcnMgY2FuIG92ZXJyaWRlIChwYXRjaCBmcm9tIE1hcnRpbiBTY2hsZW1tZXIpCitvIGRlcG1vZDogZml4IGhhbmRsaW5nIG9mIGJhZCBhcmdzIChyZXBvcnRlZCBieSBHb3JpayBWYW4gU3RlZW5iZXJnZSkKK28gaW5zbW9kOiBkbyAtLXZlcnNpb24vLVYKK28gZGVwbW9kOiBmaXggImFsbCBtb2R1bGVzIGFyZSBpbnNpZGUgbG9vcCIgY29ybmVyIGNhc2UKK28gZGVwbW9kOiBUZW1wb3JhcnkgZmlsZSB0aGVuIG1vdmUgKHBhdGNoIGZyb20gQW5kcmV5IEJvcnplbmtvdikuCitvIGdlbmVyYXRlLW1vZHByb2JlLmNvbmY6IEFkZGVkIHNwYWNlIHRvIFBSRUlOU1RBTEwgYW5kIFBSRVJFTU9WRQorCWJlZm9yZSBzZW1pY29sb24gKFBhdGNoIGZyb20gTWFyaWFuIEphbmNhcikKK28gaW5zbW9kOiBCYWNrd2FyZHMgY29tcGF0IGZvciBpbnNtb2Quc3RhdGljLCB0b28gKFRoYW5rcyB0byBNYXJpYW4gSmFuY2FyKQorCQorMC45LjEyIFZlcnNpb246CitvIG1vZHByb2JlLjg6IERvY3VtZW50IC0tc2V0LXZlcnNpb24gKERlYmlhbiBidWcgIzE4NzEyMywgdGhhbmtzIEhlcmJlcnQpCitvIHJtbW9kLjg6IEZpeCByYXcgbHNtb2QoOCkgcmVmZXJlbmNlcyAodXNlIHByb3BlciBzZ21sIG1hcmt1cCkuCitvIG1vZGluZm8uYywgcm1tb2QuYzogRml4IGluY2x1ZGVzIGZvciB3aGVuIG5vIGJhY2t3YXJkcyBjb21wYXQKKwkoVGhhbmtzIHRvIEJpbGwgTm90dGluZ2hhbSkuCitvIE1ha2VmaWxlLmFtOiBsc21vZC5vbGQgc3ltbGluayBmcm9tIC9iaW4gdG8gL3NiaW4gaW4gbW92ZS1vbGQtdGFyZ2V0cworbyBkZXBtb2Q6IHNwYXJjIGdjYyByZWdpc3RlciB2YXJpYWJsZSBmYWtlIHVuZGVmaW5lZCBmaXguCitvIE1ha2VmaWxlLmFtOiBIYW5kbGUgTWFuZHJha2UncyAuYnoyIG1hbiBwYWdlcyAoVGhhbmtzIHRvIFBhb2xvIEdpYXJydXNzbykKK28gZGVwbW9kOiBiYWNrd2FyZHMgY29tcGF0IGF0IDIuNS40OCwgbm90IDIuNS40NyAoVGhhbmtzIHRvIE1hcnRpbiBTY2hpbXNjaGFrKQorbyBkZXBtb2Q6IGllZWUxMzk0IHN1cHBvcnQgKFRoYW5rcyB0byBCZW4gQ29sbGlucykKK28gZGVwbW9kOiB1cGRhdGVkIHRlc3Qgc3VpdGUgZm9yIGllZWUxMzk0CitvIE1ha2VmaWxlOiBtYWtlIHN5bWxpbmsgZnJvbSAvc2Jpbi9sc21vZCB0byAvYmluL2xzbW9kIGlmIHRoYXQncyB3aGVyZSB3ZSdyZSBnb2luZy4KK28gbW9kaW5mbzogYWRkIG1hbnVhbCBwYWdlLgorbyBtb2Rwcm9iZTogLS1zaG93LWRlcGVuZHMgKEFza2VkIGJ5IEhlcmJlcnQgWHUgZm9yIG1raW5pdHJkKS4KK28gZGVwbW9kOiBTaW1wbHkgYW5kIGZpeCBsb29wIGRldGVjdGlvbiBmb3Igbm9uLXRyaXZpYWwgbG9vcHMKKwkKKzAuOS4xMWEgVmVyc2lvbjoKK28gTWFrZWZpbGU6IGRvY2Jvb2sybWFuIGZpeCAoVGhhbmtzIHRvIFRlcmplIFJvc3RlbikKK28gTWFrZWZpbGU6IG1ha2UgaW5zdGFsbCBtYW4gcGFnZXMgd29yayB3aXRoIGF1dG9jb25mIDEuNCAoVGhhbmtzIHRvIFRlcmplIFJvc3RlbikKKwkKKzAuOS4xMSBWZXJzaW9uOgorbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBBdm9pZCAibW9kcHJvYmUgdmVyc2lvbiIgaW4gc3Rkb3V0LgorbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBGaXggdHJhbnNsYXRpb24gb2YgIm9wdGlvbnMgZHVtbXkwIC1vIGR1bW15MCIKK28gbW9kcHJvYmU6IGFkZCAtLXNldC12ZXJzaW9uCitvIG1vZHByb2JlOiBBZGQgTU9EUFJPQkVfT1BUSU9OUyBlbnYuIHZhciwgYW5kIHVzZSBpdCB0byBwYXNzIHNvbWUgb3B0aW9ucy4KK28gRml4IG1ha2UgbW92ZW9sZDogKFRoYW5rcyB0byBQYXZlbCBSb3NraW4sIFdpbGwgU3RlcGhlbnNvbikKK28gUkVBRE1FOiBNZW50aW9uIG1vZHByb2JlLmRldmZzIGZvciBkZXZmcyB1c2VycyAoVGhhbmtzIHRvIFBhdmVsIFJvc2tpbikKK28gbHNtb2Q6IGJlbG9uZ3MgaW4gL2Jpbiwgbm90IC9zYmluIChUaGFua3MgdG8gTWFyY28gZCdJdHJpKQorbyBNYWtlZmlsZTogY3JlYXRlIG1hbiBkaXJlY3RvcmllcyAoVGhhbmtzIHRvIEpvaG4gTGV2b24pCitvIE1ha2VmaWxlOiBubywgdXNlIG5vcm1hbCBhdXRvbWFrZSAoVGhhbmtzIHYuIG11Y2ggdG8gSm9obiBMZXZvbikKK28gTWFrZWZpbGU6IGRvY2Jvb2sybWFuIHR3ZWFrcyBhbmQgY2xlYW51cHMgKFRoYW5rcyB0byBUZXJqZSBSb3N0ZW4pCitvIE1ha2VmaWxlOiBpbmNsdWRlIG1hbiBwYWdlcyBpbiBkaXN0LCBhbmQgY2xlYW4gaW4gbWFpbnRhaW5lci1jbGVhbgorCShNYXJ0aW4gU2NobGVtbWVyJ3MgcmVwb3J0KS4KKwkKKzAuOS4xMCBWZXJzaW9uOgorbyBtb2Rwcm9iZTogUmVtb3ZlIG9sZCAuZ251LmxpbmtvbmNlLm1vZG5hbWUgcmVuYW1pbmcgY29kZQorbyBtb2Rwcm9iZTogQWRkIC1xIGZsYWcuCitvIHNycG06IGluc3RhbGwgZ2VuZXJhdGUtbW9kcHJvYmUuY29uZiwgdG9vLgorbyBpbnN0YWxsOiBtb3ZlIGthbGxzeW1zIGFuZCBrc3ltcyBhcyB3ZWxsIHRvIHBvaW50IHRvIGluc21vZC5vbGQKKwkoQW5kcmV3IE1vcnRvbidzIHJlcG9ydCkKK28gZ2VuZXJhdGUtbW9kcHJvYmUuY29uZjogZG9uJ3Qgd29ycnkgYWJvdXQgaWYgc3RhdGVtZW50czogbW9kcHJvYmUgLWMKKwlleHBhbmRzIHRoZW0gYWxyZWFkeQorbyBtb2Rwcm9iZTogTG9vayBmb3IgX19tb2R1bGUgc2VjdGlvbiBhcyB3ZWxsIGFzCisJLmdudS5saW5rb25jZS50aGlzX21vZHVsZSBpbiByZW5hbWluZyBjb2RlLgorbyBtb2Rwcm9iZTogbW9kdWxlcy5kZXZmc2QgaGFuZGxpbmcsIHRvbyAodGhhbmtzIHRvIE1hcnRpbiBTY2hsZW1tZXIpLgorbyBtb2Rwcm9iZS5kZXZmczogTmV3IGZpbGUgZm9yIGRldmZzIHBlb3BsZS4KK28gbW9kcHJvYmU6IEhhbmRsZSB2ZXJtYWdpYyBpbiAubW9kaW5mbyBzZWN0aW9uIGFzIHdlbGwgYXMgb3duIHNlY3Rpb24uCitvIGRlcG1vZDogSGFuZGxlIGFsaWFzZXMgaW4gLm1vZGluZm8gc2VjdGlvbiBhcyB3ZWxsIGFzIC5tb2RhbGlhcyBzZWN0aW9uCitvIFdhcm5pbmdzIGFkZGVkIHRvIGJ1aWxkIHByb2Nlc3MuCitvIG1vZGluZm86IG5ldyBiaW5hcnkKK28gbW9kaW5mbzogbmV3IHRlc3RjYXNlcworbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBoYW5kbGUgbWlzc2luZyBta3RlbXAKKwkKKzAuOS45IFZlcnNpb246CitvIEluc3RhbGwgZ2VuZXJhdGUtbW9kcHJvYmUuY29uZiwgdG9vLgorbyBTdGFydCBhbiBGQVEKK28gZ2VuZXJhdGUtbW9kcHJvYmUuY29uZjogdXNlIG1rdGVtcCB3aXRoIGFuIGFyZyAoTHV1ayB2YW4gZGVyIER1aW0ncyByZXBvcnQpCitvIFJpY2hhcmQgSGVuZGVyc29uJ3Mgd2VhayBzeW1ib2wgc3VwcG9ydC4KK28gQW50b24ncyAuZm9vID09IGZvbyBzdXBwb3J0IGZvciBQUEM2NC4KK28gLS1mb3JjZSBmb3IgcmVtb3ZpbmcgdmVyc2lvbiBpbmZvcm1hdGlvbgorbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBmaXggb25lIGFyZyB1c2FnZSAoQnVnIGZyb20gRGF2aWQgdmFuIEhvb3NlKQorbyBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mOiBhZGQgOyBpbnNpZGUgeyB9IChmcm9tIE1hcnRpbiBTY2hsZW1tZXIpCitvIEthaSdzIC0tZm9yY2UtdmVyc2lvbiBwYXRjaCwgbW9kaWZpZWQuCitvIFppYnggVmVyaXR1c2UncyBtdWx0aXBsZSB3aGl0ZXNwYWNlIGluIHBhcnNlciBwYXRjaC4KK28gZGVwbW9kOiBIYW5kbGUgc3RyaW5ncyBmb3IgR1BMIGluIHNlcGFyYXRlIHNlY3Rpb24sIHRvby4KK28gbHNtb2Q6IHJlbW92ZSBkb3VibGUgdW5pc3RkIGluY2x1ZGUgKEJ1ZyBmcm9tIERlbm5pcyBTY2h1bHopCitvIG1vZHByb2JlOiBEb2N1bWVudCAtLWZvcmNlKiBhbmQgLXMKKwkKKzAuOS44IFZlcnNpb246CitvIFVzZSBkb2Nib29rMm1hbiBpZiBkb2Nib29rLXRvLW1hbiBub3QgZm91bmQgKFdhcnJlbiBUb2dhbWkncyBidWcgcmVwb3J0KSAKK28gSW1wbGVtZW50IC1zIGluIG1vZHByb2JlCitvIElmIHN0ZGVyciBpcyBub3Qgb3BlbiwgYWN0IGFzIGlmICItLXN5c2xvZyIgd2FzIGdpdmVuLgorbyBSZW1vdmUgZG9jdW1lbnRhdGlvbiBhYm91dCBhbGlhc2VzIG5vdCBvdmVycmlkaW5nIHJlYWwgbW9kdWxlcy4KK28gQWRkIHN1cHBvcnQgZm9yIG1vZHVsZXMuYWxpYXMgYW5kIG1vZHVsZXMuc3ltYm9scyB0byBkZXBtb2QgYW5kIG1vZHByb2JlLgorbyBGaXggaGFuZGxpbmcgb2YgZXJyb3JzIGluIG1vZHByb2JlLmNvbmYgKFJvZ2VyIEx1ZXRoaSdzIGJ1ZyByZXBvcnQpCitvIFBldHIgVmFuZHJvdmVjJ3MgX19ncGxfa3N5bXRhYiBmaXguCisJCiswLjkuNyBWZXJzaW9uOgorbyBNYW4gcGFnZXMKK28gbW9kdWxlcy5jb25mMm1vZHByb2JlLmNvbmYgImFib3ZlIiBhbmQgImJlbG93IiBzdXBwb3J0LgorbyBTaWxseSB0eXBvIGluIGZpbGVuYW1lIHRvIG1vZG5hbWUgY29udmVyc2lvbi4KK28gRG91YmxlIGZyZWUgZml4IChNYXJjbyBkJ0l0cmkpCitvIEFkZCAtLWRyeS1ydW4gYXMgc3lub255bSBmb3IgLS1zaG93IGV2ZXJ5d2hlcmUuCitvIENoYW5nZSBiYWNrd2FyZHMgY29tcGF0IHRlc3QgdG8gc3lzX2NyZWF0ZV9tb2R1bGUoTlVMTCwgMCkgIT0gLUVOT1NZUywKKyAgZm9yIHBlb3BsZSB3aG8gd2FudCAvcHJvYy9rc3ltcy4KK28gbW9kdWxlcy5jb25mMm1vZHByb2JlLmNvbmYgcmVuYW1lZCB0byBnZW5lcmF0ZS1tb2Rwcm9iZS5jb25mLCB1c2VzCisgIG1vZHByb2JlIC1jIHRvIGdldCBidWlsdC1pbnMgYXMgd2VsbC4KKwkKKzAuOS42IFZlcnNpb246CitvIEZpeCBhbGlhc2VzIHVzaW5nIC0gYW5kIF8gKHRoYW5rcyB0byBSb2dlciBMdWV0aGkpCitvIEF1ZGl0IGZvciBtb3JlIF8gLSBjb21wYXJpc29uczogY2Fub25pY2FsaXplIGF0IGlucHV0LgorbyBGaXggImluY2x1ZGUgb3ZlcnJpZGVzIGFsaWFzIiBidWcgZm91bmQgZHVyaW5nIGF1ZGl0LgorbyBUZXN0c3VpdGUgYWRkZWQKK28gbHNtb2QgaWdub3JlcyB0cmFpbGluZyAobmV3LXN0eWxlKSBlbnRyaWVzIGluIC9wcm9jL21vZHVsZXMsIGFuZCBkZWxldGVzICwuCitvIG1lc3NhZ2Ugc2VnZmF1bHQgZHVlIHRvIHJldXNpbmcgdmFyYXJncyBmaXhlZC4KK28gR2l2ZSAwIGV4aXQgc3RhdHVzIHdpdGggLS1kcnktcnVuIHdpdGggd2lsZGNhcmRzIChSb2dlciBMdWV0aGkncyBidWcgcmVwb3J0KQorbyBBZGQgLS1hbGwgb3B0aW9uIChSb2dlciBMdWV0aGkncyBidWcgcmVwb3J0KQorbyBGaXggZG91YmxlLWluc2VydCBwcm9ibGVtIGNhdXNlZCBieSBzeW1saW5rcyAoUm9nZXIgTHVldGhpJ3MgYnVnIHJlcG9ydCkKK28gSWdub3JlIHVuZGVmaW5lZCBfX3N0YXJ0XyBhbmQgX19zdG9wXyBhcyBmdXR1cmUga2VybmVsIG1pZ2h0LgorbyBSZXBvcnQgbG9vcHMgb25seSBvbmNlLgorbyBGaXggY29tcGxleCBkdXBsaWNhdGUgZWxpbWluYXRpb24gaGFuZGxpbmcuCitvIEltcGxlbWVudGVkIC0taWdub3JlLWNvbW1hbmQgaW4gbW9kcHJvYmUKK28gSW1wbGVtZW50ZWQgInJlbW92ZSIgaW4gbW9kcHJvYmUncyBtb2Rwcm9iZS5jb25mIHBhcnNpbmcuCitvIERvbid0IGRpZSBpZiAvcHJvYy9tb2R1bGVzIGNhbid0IGJlIG9wZW5lZC4KK28gTW9kcHJvYmUgLXIgY2hlY2tzIGZvciBpbi11c2UgbW9kdWxlcyBiZWZvcmUgdHJ5aW5nLgorbyBXYXJuIGFib3V0IGxpbmVzIGluIG1vZHByb2JlLmNvbmYgd2hpY2ggYXJlbid0IHVuZGVyc3Rvb2QuCitvIFJlbW92ZSBleHRyYSBzcGFjZXMgaW4gb3B0aW9ucyBnZW5lcmF0ZWQgYnkgbW9kcHJvYmUuCitvIEV4dHJhY3QgNjQvMzIgbW9kdWxlb3BzIGludG8gY29tbW9uIGNvZGUuCitvIFJlaW1wbGVtZW50ZWQgd2lsZGNhcmQgYWxpYXNlcy4KK28gSG9ycmlibGUgd29ya2Fyb3VuZCBmb3IgZGV2ZnNkLgorbyBGaXggaGFuZGxpbmcgb2Ygd2lsZGNhcmRzIGluIG1vZHVsZXMuY29uZjJtb2Rwcm9iZS5jb25mCisKKzAuOS41IFZlcnNpb246CitvIEZpeCBib2d1cyBjb21wYXJlIGNvZGUgd2hlcmUgIm1vZHByb2JlIHR1bmVyIiBsb2FkZWQgdHVuIG1vZHVsZQorICAoVGhhbmtzIHRvIE1hcmNvIGQnSXRyaSdzIGJ1ZyByZXBvcnQpLgorbyBIYW5kbGUgcnRoLXN0eWxlIG1vZHVsZXMgaW4gbW9kcHJvYmUgbmFtZWNoYW5nZSBjb2RlLgorbyBNYXJjbyBkJ0l0cmkncyBwYXRjaCB0byBjb3JyZWN0IHF1b3RlcworbyBNYXJjbyBkJ0l0cmkncyBwYXRjaCB0byBpbXBsZW1lbnQgLUEuCitvIEZpeGVkIHJtbW9kJ3MgbWVzc2FnZSB3aGVuIG5vIHVubG9hZCBzdXBwb3J0LgorbyBGaXggYmFja3dhcmRzIGNvbXBhdCByZWN1cnNpb24gcHJvdGVjdGlvbiB0byBjb21wYXJlIFBJRHMgKFBldHIgVmFuZHJvdmVjKQorbyBJbXBsZW1lbnQgLUYgYW5kIC1lLgorbyBUd2VhayBtZXNzYWdlIHdoZW4gaW52YWxpZCBwYXJhbWV0ZXIgZ2l2ZW4gKFJvZ2VyIEx1ZXRoaSdzIHJlcG9ydCkKKwkKKzAuOS40IFZlcnNpb24KK28gSW1wbGVtZW50IGxvb3AgZGV0ZWN0aW9uIGFuZCBkdXBsaWNhdGUgZWxpbWluYXRpb24gKHRoYW5rcyB0byBKZWZmCisgIENodWEncyBpZGUua28gLyBpZGUtaW8ua28gYnVnIHJlcG9ydCkKK28gRml4IHN0cmVzc19tb2R1bGVzLnNoIHNjcmlwdCBmb3IgbmV3IG5hbWVzIGFuZCBkaXIgbGF5b3V0CitvIFVwZGF0ZWQgUkVBRE1FIHRvIHB1dCBhdXRvY29uZiBhdCB0aGUgYm90dG9tIChtb3N0IHBlb3BsZSBkb24ndCBuZWVkIGl0KQorbyBJbXBsZW1lbnRlZCAtdiBpbiBkZXBtb2QKK28gSW1wbGVtZW50ZWQgLWwgYW5kIC10IGluIG1vZHByb2JlLgorbyBJbXBsZW1lbnRlZCAtYSBpbiBtb2Rwcm9iZS4KK28gUmVtb3ZlZCBncmF0dWl0b3VzIGNvbmZpZ3VyZS5pbiB0YXJnZXQgdGVzdCAod2UgZG8gNjQvMzIgZHluYW1pY2FsbHkpCitvIEFkYW0gUmljaHRlcidzIGRlcG1vZCBwYXRjaCB0byB0cmF2ZXJzZSBhYm92ZSBrZXJuZWwvIGRpci4KK28gRml4IC1yIHRvIGJlIHByb3Blcmx5IGlnbm9yZWQgKENocmlzIENoZW5leSdzIGJ1ZyByZXBvcnQpCisKKzAuOS4zIFZlcnNpb24KK28gRml4IG1vZHByb2JlIC1yIG9yZGVyaW5nICh0cmllZCB0byByZW1vdmUgYmFja3dhcmRzKSAoSmltIFJhZGZvcmQncyByZXBvcnQpCitvIERhdmlkIEJyb3duZWxsJ3MgZXh0cmEgcm1tb2Qgb3B0aW9ucyAobW9kaWZpZWQpCisKKzAuOS4yIFZlcnNpb24KK28gTWF0dGhpZXUgVmVyYmVydCA8bXZlQHp1cmljaC5pYm0uY29tPidzIG9iamRpciAhPSBzcmNkaXIgaW5zdGFsbCBmaXguCitvIEZpeGVkIGluc21vZCBvcHRpb24gaWdub3JlcyAoUGV0ciBWYW5kcm92ZWMncyBidWcgcmVwb3J0KQorbyBBcm5kIEJlcmdtYW5uIDxhcm5kQGJlcmdtYW5uLWRhbGxkb3JmLmRlPidzIG1vZHVsZXMuY2N3bWFwIGltcGxlbWVudGF0aW9uLgorbyBKaW0gUmFkZm9yZCA8cmFkZm9yZEBibGFja2JlYW4ub3JnPidzIG1vZHByb2JlIC1yIGltcGxlbWVudGF0aW9uLgorCQorMC45LjEgVmVyc2lvbgorbyBJbmNsdWRlIGluc3RhbGwtd2l0aC1jYXJlIHNjcmlwdCBpbiBkaXN0CisKKzAuOSBWZXJzaW9uCitvIEFkZGVkIGluc3RhbGwtd2l0aC1jYXJlIHNjcmlwdCB0byBjaGVjayB3ZSdyZSBub3QgZGVzdHJveWluZyBvbGQgdXRpbHMKK28gU3BsaXQgbW92ZW9sZCBpbnRvIHR3byB0YXJnZXRzIGZvciBnZW50b28KK28gRG9uJ3QgdXNlIHJlYWRsaW5rIGluIG1vdmVvbGQ6IFJIOC4wIGRvZXNuJ3QgaGF2ZSBpdCBieSBkZWZhdWx0CitvIEZpeCBpYTY0IF9zeXNjYWxsNSBwcm9ibGVtICh1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2lhNjRfc3lzY2FsbCcpCisJCiswLjktYWxwaGEgVmVyc2lvbgorbyBGaXhlZCBwYXRjaCBpbiBORVdTIHRvIGxlYXZlICNpbmNsdWRlIGxpbnV4L2VsZi5oLCBuZWVkZWQgZm9yCisgIENPTkZJR19LQUxMU1lNUy4KK28gRml4ZWQgZXh0cmEgbmV3bGluZSBpbiAiaW4gdXNlIGJ5IiBtZXNzYWdlLgorbyBGaXhlZCBwYXJzaW5nIGZvciBuZXctc3R5bGUgL3Byb2MvbW9kdWxlcy4KK28gRml4ZWQgdmVyc2lvbiBwYXJzaW5nIGNvZGUgKHRoYW5rcyB0byBBZGFtIFJpY2h0ZXIncyByZXBvcnQpCitvIEZpeGVkICJydW5uaW5nIG91dCBvZiBmaWxlZGVzY3JpcHRvcnMiIChBZGFtIFJpY2h0ZXIpCQorbyBJbXBsZW1lbnRlZCBvcHRpb25zIGluIG1vZHByb2JlCitvIEltcGxlbWVudGVkIGluc3RhbGwgaW4gbW9kcHJvYmUKK28gSW1wbGVtZW50ZWQgb3B0aW9ucyBpbiBtb2R1bGVzLmNvbmYybW9kcHJvYmUuY29uZgorbyBJbXBsZW1lbnRlZCBpbnN0YWxsIGluIG1vZHVsZXMuY29uZjJtb2Rwcm9iZS5jb25mCitvIEltcGxlbWVudGVkIHByb2JlYWxsIGluIG1vZHVsZXMuY29uZjJtb2Rwcm9iZS5jb25mCitvIEltcGxlbWVudGVkIHByb2JlIGluIG1vZHVsZXMuY29uZjJtb2Rwcm9iZS5jb25mCitvIENoYW5nZWQgbW9kcHJvYmUgdmVyc2lvbiB0byBiZSBjb25zdGFudCBzdHJpbmcsIGZvciAic3RyaW5ncyIgdG8gd29yayBlYXNpbHkuCisJCiswLjhhIFZlcnNpb24KK28gRml4ZWQgZXJyb25lb3VzIHdhcm5pbmcgb24gcm1tb2Qgc2F5aW5nIGl0IGRpZG4ndCBmaW5kIG1vZHVsZSBpbgorICAvcHJvYy9tb2R1bGVzCisJCiswLjggVmVyc2lvbgorbyBDaHJpcyBDaGVuZXkncyBhdXRvbWFrZSBwYXRjaAorbyBBZGFtIEouIFJpY2h0ZXIncyAidXNlIGRlcG1vZCIgcGF0Y2ggKHNpbXBsaWZpZXMgYWxpYXNlcywgaGFuZGxlcyBpbmNsdWRlKQorbyBDbGVhbmVkIHVwIGVycm9yIGhhbmRsaW5nIGEgbGl0dGxlCitvIEltcGxlbWVudGVkIC0tbmFtZS8tbyB0byBjaGFuZ2UgbW9kdWxlIG5hbWUgKHJlcXVpcmVzIEthaSdzIG1vZG5hbWUgcGF0Y2gpCitvIERhdmlkIEhhcmRlbWFuJ3MgZHVtbXkgb3B0aW9ucyBwYXRjaCBmb3IgRGViaWFuLgorbyBVcGRhdGVkIHZlcnNpb24gbnVtYmVyICh0aGFua3MgdG8gRGF2aWQgSGFyZGVtYW4pLgorbyBGaXggInNiaW4gbm90IGluIHBhdGgiIC5vbGQgZXhlYyBwcm9ibGVtLgorbyBSZW1vdmUgYXNzdW1wdGlvbnMgYWJvdXQgbW9kdWxlIGV4dGVuc2lvbi4KK28gQWRkZWQgImxpbmtzIiBhbmQgIm1vdmVvbGQiIHRhcmdldHMsIGFuZCBsZWF2ZSB1c2luZyB0aGVtIHRvIHRoZSB1c2VyLgorbyBJbXBsZW1lbnRlZCBuZXcgZGVwbW9kIHdoaWNoIHdvcmtzIHdpdGggY3VycmVudCBrZXJuZWxzLCBjYWxscyBvbGQKKyAgb25lIGZvciBwcmV2aW91cyBrZXJuZWxzLgorbyBGaXJzdCBjdXQgb2YgbW9kdWxlcy5jb25mMm1vZHByb2JlLmNvbmYKK28gSW1wbGVtZW50ZWQgZHVtbXkgaW5zbW9kIC1wLCAtcyBhbmQgLWYgb3B0aW9ucywgcmVxdWVzdGVkIGJ5IFBldHIgVmFuZHJvdmVjCisKKzAuN2EgVmVyc2lvbgorbyA2NC8zMiBiaXQgYXV0b2RldGVjdGlvbiB0aGFua3MgdG8gRGF2ZSBNaWxsZXIKK28gUHJlbGltaW5hcnkgYWxpYXMgc3VwcG9ydC4KK28gVmVyeSBwcmltaXRpdmUgL2V0Yy9tb2Rwcm9iZS5jb25mIHN1cHBvcnQKK28gRml4IGZvciAicm1tb2QgaWRlLWNkIiAoYnVnIGZyb20gSmVucyBBeGJvZSkKK28gT3B0aW9ucyBhcmdzIGZvciBtb2Rwcm9iZQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0ZBUSBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9GQVEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RiNDcxNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9GQVEKQEAgLTAsMCArMSwxMyBAQAorRnJlcXVlbnRseSBBc2tlZCBNb2R1bGUgVXNlciBRdWVzdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1EpIFdoZXJlIHNob3VsZCBJIHJlcG9ydCBidWdzPworQSkgUGxlYXNlIHBvc3QgdG8gdGhlIGxpbnV4LW1vZHVsZXNAdmdlci5rZXJuZWwub3JnIG1haWxpbmcgbGlzdCwgYWxvbmcgd2l0aAorICAgYSBkZXNjcmlwdGlvbiBvZiBob3cgdG8gcmVwcm9kdWNlLiBDb3B5IEpvbiBNYXN0ZXJzIDxqY21Aam9ubWFzdGVycy5vcmc+LgorCitRKSBJIGdldCAiL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sYyIKK0EpIFlvdSBuZWVkIHRvIGluc3RhbGwgYSBkZXZlbG9wbWVudCBwYWNrYWdlIHdoaWNoIGNvbnRhaW5zIGxpYmMuYS4KKyAgIEZvciBleGFtcGxlLCBvbiBGZWRvcmEgc3lzdGVtcywgeW91IHdvdWxkIHR5cGUgInl1bSBpbnN0YWxsIGdsaWJjLXN0YXRpYyIuCisKK1EpIEknbSBoYXZpbmcgdHJvdWJsZSBpbnNlcnRpbmcgb3V0LW9mLXRyZWUgbW9kdWxlcworQSkgU2VlIGtlcm5lbCBzb3VyY2UgdHJlZSBkb2N1bWVudGF0aW9uOiBEb2N1bWVudGF0aW9uL2tidWlsZC9tb2R1bGVzLnR4dApkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0lOU1RBTEwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvSU5TVEFMTApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2M1YjQwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL0lOU1RBTEwKQEAgLTAsMCArMSwyMzcgQEAKK0luc3RhbGxhdGlvbiBJbnN0cnVjdGlvbnMKKyoqKioqKioqKioqKioqKioqKioqKioqKioKKworQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDA0LCAyMDA1LAorMjAwNiwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBmaWxlIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwordW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IGl0LgorCitCYXNpYyBJbnN0YWxsYXRpb24KKz09PT09PT09PT09PT09PT09PQorCitCcmllZmx5LCB0aGUgc2hlbGwgY29tbWFuZHMgYC4vY29uZmlndXJlOyBtYWtlOyBtYWtlIGluc3RhbGwnIHNob3VsZAorY29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgdGhpcyBwYWNrYWdlLiAgVGhlIGZvbGxvd2luZworbW9yZS1kZXRhaWxlZCBpbnN0cnVjdGlvbnMgYXJlIGdlbmVyaWM7IHNlZSB0aGUgYFJFQURNRScgZmlsZSBmb3IKK2luc3RydWN0aW9ucyBzcGVjaWZpYyB0byB0aGlzIHBhY2thZ2UuCisKKyAgIFRoZSBgY29uZmlndXJlJyBzaGVsbCBzY3JpcHQgYXR0ZW1wdHMgdG8gZ3Vlc3MgY29ycmVjdCB2YWx1ZXMgZm9yCit2YXJpb3VzIHN5c3RlbS1kZXBlbmRlbnQgdmFyaWFibGVzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uLiAgSXQgdXNlcwordGhvc2UgdmFsdWVzIHRvIGNyZWF0ZSBhIGBNYWtlZmlsZScgaW4gZWFjaCBkaXJlY3Rvcnkgb2YgdGhlIHBhY2thZ2UuCitJdCBtYXkgYWxzbyBjcmVhdGUgb25lIG9yIG1vcmUgYC5oJyBmaWxlcyBjb250YWluaW5nIHN5c3RlbS1kZXBlbmRlbnQKK2RlZmluaXRpb25zLiAgRmluYWxseSwgaXQgY3JlYXRlcyBhIHNoZWxsIHNjcmlwdCBgY29uZmlnLnN0YXR1cycgdGhhdAoreW91IGNhbiBydW4gaW4gdGhlIGZ1dHVyZSB0byByZWNyZWF0ZSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLCBhbmQgYQorZmlsZSBgY29uZmlnLmxvZycgY29udGFpbmluZyBjb21waWxlciBvdXRwdXQgKHVzZWZ1bCBtYWlubHkgZm9yCitkZWJ1Z2dpbmcgYGNvbmZpZ3VyZScpLgorCisgICBJdCBjYW4gYWxzbyB1c2UgYW4gb3B0aW9uYWwgZmlsZSAodHlwaWNhbGx5IGNhbGxlZCBgY29uZmlnLmNhY2hlJworYW5kIGVuYWJsZWQgd2l0aCBgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScgb3Igc2ltcGx5IGAtQycpIHRoYXQgc2F2ZXMKK3RoZSByZXN1bHRzIG9mIGl0cyB0ZXN0cyB0byBzcGVlZCB1cCByZWNvbmZpZ3VyaW5nLiAgQ2FjaGluZyBpcworZGlzYWJsZWQgYnkgZGVmYXVsdCB0byBwcmV2ZW50IHByb2JsZW1zIHdpdGggYWNjaWRlbnRhbCB1c2Ugb2Ygc3RhbGUKK2NhY2hlIGZpbGVzLgorCisgICBJZiB5b3UgbmVlZCB0byBkbyB1bnVzdWFsIHRoaW5ncyB0byBjb21waWxlIHRoZSBwYWNrYWdlLCBwbGVhc2UgdHJ5Cit0byBmaWd1cmUgb3V0IGhvdyBgY29uZmlndXJlJyBjb3VsZCBjaGVjayB3aGV0aGVyIHRvIGRvIHRoZW0sIGFuZCBtYWlsCitkaWZmcyBvciBpbnN0cnVjdGlvbnMgdG8gdGhlIGFkZHJlc3MgZ2l2ZW4gaW4gdGhlIGBSRUFETUUnIHNvIHRoZXkgY2FuCitiZSBjb25zaWRlcmVkIGZvciB0aGUgbmV4dCByZWxlYXNlLiAgSWYgeW91IGFyZSB1c2luZyB0aGUgY2FjaGUsIGFuZCBhdAorc29tZSBwb2ludCBgY29uZmlnLmNhY2hlJyBjb250YWlucyByZXN1bHRzIHlvdSBkb24ndCB3YW50IHRvIGtlZXAsIHlvdQorbWF5IHJlbW92ZSBvciBlZGl0IGl0LgorCisgICBUaGUgZmlsZSBgY29uZmlndXJlLmFjJyAob3IgYGNvbmZpZ3VyZS5pbicpIGlzIHVzZWQgdG8gY3JlYXRlCitgY29uZmlndXJlJyBieSBhIHByb2dyYW0gY2FsbGVkIGBhdXRvY29uZicuICBZb3UgbmVlZCBgY29uZmlndXJlLmFjJyBpZgoreW91IHdhbnQgdG8gY2hhbmdlIGl0IG9yIHJlZ2VuZXJhdGUgYGNvbmZpZ3VyZScgdXNpbmcgYSBuZXdlciB2ZXJzaW9uCitvZiBgYXV0b2NvbmYnLgorCitUaGUgc2ltcGxlc3Qgd2F5IHRvIGNvbXBpbGUgdGhpcyBwYWNrYWdlIGlzOgorCisgIDEuIGBjZCcgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBwYWNrYWdlJ3Mgc291cmNlIGNvZGUgYW5kIHR5cGUKKyAgICAgYC4vY29uZmlndXJlJyB0byBjb25maWd1cmUgdGhlIHBhY2thZ2UgZm9yIHlvdXIgc3lzdGVtLgorCisgICAgIFJ1bm5pbmcgYGNvbmZpZ3VyZScgbWlnaHQgdGFrZSBhIHdoaWxlLiAgV2hpbGUgcnVubmluZywgaXQgcHJpbnRzCisgICAgIHNvbWUgbWVzc2FnZXMgdGVsbGluZyB3aGljaCBmZWF0dXJlcyBpdCBpcyBjaGVja2luZyBmb3IuCisKKyAgMi4gVHlwZSBgbWFrZScgdG8gY29tcGlsZSB0aGUgcGFja2FnZS4KKworICAzLiBPcHRpb25hbGx5LCB0eXBlIGBtYWtlIGNoZWNrJyB0byBydW4gYW55IHNlbGYtdGVzdHMgdGhhdCBjb21lIHdpdGgKKyAgICAgdGhlIHBhY2thZ2UuCisKKyAgNC4gVHlwZSBgbWFrZSBpbnN0YWxsJyB0byBpbnN0YWxsIHRoZSBwcm9ncmFtcyBhbmQgYW55IGRhdGEgZmlsZXMgYW5kCisgICAgIGRvY3VtZW50YXRpb24uCisKKyAgNS4gWW91IGNhbiByZW1vdmUgdGhlIHByb2dyYW0gYmluYXJpZXMgYW5kIG9iamVjdCBmaWxlcyBmcm9tIHRoZQorICAgICBzb3VyY2UgY29kZSBkaXJlY3RvcnkgYnkgdHlwaW5nIGBtYWtlIGNsZWFuJy4gIFRvIGFsc28gcmVtb3ZlIHRoZQorICAgICBmaWxlcyB0aGF0IGBjb25maWd1cmUnIGNyZWF0ZWQgKHNvIHlvdSBjYW4gY29tcGlsZSB0aGUgcGFja2FnZSBmb3IKKyAgICAgYSBkaWZmZXJlbnQga2luZCBvZiBjb21wdXRlciksIHR5cGUgYG1ha2UgZGlzdGNsZWFuJy4gIFRoZXJlIGlzCisgICAgIGFsc28gYSBgbWFrZSBtYWludGFpbmVyLWNsZWFuJyB0YXJnZXQsIGJ1dCB0aGF0IGlzIGludGVuZGVkIG1haW5seQorICAgICBmb3IgdGhlIHBhY2thZ2UncyBkZXZlbG9wZXJzLiAgSWYgeW91IHVzZSBpdCwgeW91IG1heSBoYXZlIHRvIGdldAorICAgICBhbGwgc29ydHMgb2Ygb3RoZXIgcHJvZ3JhbXMgaW4gb3JkZXIgdG8gcmVnZW5lcmF0ZSBmaWxlcyB0aGF0IGNhbWUKKyAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgIDYuIE9mdGVuLCB5b3UgY2FuIGFsc28gdHlwZSBgbWFrZSB1bmluc3RhbGwnIHRvIHJlbW92ZSB0aGUgaW5zdGFsbGVkCisgICAgIGZpbGVzIGFnYWluLgorCitDb21waWxlcnMgYW5kIE9wdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHN5c3RlbXMgcmVxdWlyZSB1bnVzdWFsIG9wdGlvbnMgZm9yIGNvbXBpbGF0aW9uIG9yIGxpbmtpbmcgdGhhdCB0aGUKK2Bjb25maWd1cmUnIHNjcmlwdCBkb2VzIG5vdCBrbm93IGFib3V0LiAgUnVuIGAuL2NvbmZpZ3VyZSAtLWhlbHAnIGZvcgorZGV0YWlscyBvbiBzb21lIG9mIHRoZSBwZXJ0aW5lbnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgorCisgICBZb3UgY2FuIGdpdmUgYGNvbmZpZ3VyZScgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycworYnkgc2V0dGluZyB2YXJpYWJsZXMgaW4gdGhlIGNvbW1hbmQgbGluZSBvciBpbiB0aGUgZW52aXJvbm1lbnQuICBIZXJlCitpcyBhbiBleGFtcGxlOgorCisgICAgIC4vY29uZmlndXJlIENDPWM5OSBDRkxBR1M9LWcgTElCUz0tbHBvc2l4CisKKyAgICpOb3RlIERlZmluaW5nIFZhcmlhYmxlczo6LCBmb3IgbW9yZSBkZXRhaWxzLgorCitDb21waWxpbmcgRm9yIE11bHRpcGxlIEFyY2hpdGVjdHVyZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitZb3UgY2FuIGNvbXBpbGUgdGhlIHBhY2thZ2UgZm9yIG1vcmUgdGhhbiBvbmUga2luZCBvZiBjb21wdXRlciBhdCB0aGUKK3NhbWUgdGltZSwgYnkgcGxhY2luZyB0aGUgb2JqZWN0IGZpbGVzIGZvciBlYWNoIGFyY2hpdGVjdHVyZSBpbiB0aGVpcgorb3duIGRpcmVjdG9yeS4gIFRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlIEdOVSBgbWFrZScuICBgY2QnIHRvIHRoZQorZGlyZWN0b3J5IHdoZXJlIHlvdSB3YW50IHRoZSBvYmplY3QgZmlsZXMgYW5kIGV4ZWN1dGFibGVzIHRvIGdvIGFuZCBydW4KK3RoZSBgY29uZmlndXJlJyBzY3JpcHQuICBgY29uZmlndXJlJyBhdXRvbWF0aWNhbGx5IGNoZWNrcyBmb3IgdGhlCitzb3VyY2UgY29kZSBpbiB0aGUgZGlyZWN0b3J5IHRoYXQgYGNvbmZpZ3VyZScgaXMgaW4gYW5kIGluIGAuLicuCisKKyAgIFdpdGggYSBub24tR05VIGBtYWtlJywgaXQgaXMgc2FmZXIgdG8gY29tcGlsZSB0aGUgcGFja2FnZSBmb3Igb25lCithcmNoaXRlY3R1cmUgYXQgYSB0aW1lIGluIHRoZSBzb3VyY2UgY29kZSBkaXJlY3RvcnkuICBBZnRlciB5b3UgaGF2ZQoraW5zdGFsbGVkIHRoZSBwYWNrYWdlIGZvciBvbmUgYXJjaGl0ZWN0dXJlLCB1c2UgYG1ha2UgZGlzdGNsZWFuJyBiZWZvcmUKK3JlY29uZmlndXJpbmcgZm9yIGFub3RoZXIgYXJjaGl0ZWN0dXJlLgorCitJbnN0YWxsYXRpb24gTmFtZXMKKz09PT09PT09PT09PT09PT09PQorCitCeSBkZWZhdWx0LCBgbWFrZSBpbnN0YWxsJyBpbnN0YWxscyB0aGUgcGFja2FnZSdzIGNvbW1hbmRzIHVuZGVyCitgL3Vzci9sb2NhbC9iaW4nLCBpbmNsdWRlIGZpbGVzIHVuZGVyIGAvdXNyL2xvY2FsL2luY2x1ZGUnLCBldGMuICBZb3UKK2NhbiBzcGVjaWZ5IGFuIGluc3RhbGxhdGlvbiBwcmVmaXggb3RoZXIgdGhhbiBgL3Vzci9sb2NhbCcgYnkgZ2l2aW5nCitgY29uZmlndXJlJyB0aGUgb3B0aW9uIGAtLXByZWZpeD1QUkVGSVgnLgorCisgICBZb3UgY2FuIHNwZWNpZnkgc2VwYXJhdGUgaW5zdGFsbGF0aW9uIHByZWZpeGVzIGZvcgorYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGZpbGVzIGFuZCBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMuICBJZiB5b3UKK3Bhc3MgdGhlIG9wdGlvbiBgLS1leGVjLXByZWZpeD1QUkVGSVgnIHRvIGBjb25maWd1cmUnLCB0aGUgcGFja2FnZSB1c2VzCitQUkVGSVggYXMgdGhlIHByZWZpeCBmb3IgaW5zdGFsbGluZyBwcm9ncmFtcyBhbmQgbGlicmFyaWVzLgorRG9jdW1lbnRhdGlvbiBhbmQgb3RoZXIgZGF0YSBmaWxlcyBzdGlsbCB1c2UgdGhlIHJlZ3VsYXIgcHJlZml4LgorCisgICBJbiBhZGRpdGlvbiwgaWYgeW91IHVzZSBhbiB1bnVzdWFsIGRpcmVjdG9yeSBsYXlvdXQgeW91IGNhbiBnaXZlCitvcHRpb25zIGxpa2UgYC0tYmluZGlyPURJUicgdG8gc3BlY2lmeSBkaWZmZXJlbnQgdmFsdWVzIGZvciBwYXJ0aWN1bGFyCitraW5kcyBvZiBmaWxlcy4gIFJ1biBgY29uZmlndXJlIC0taGVscCcgZm9yIGEgbGlzdCBvZiB0aGUgZGlyZWN0b3JpZXMKK3lvdSBjYW4gc2V0IGFuZCB3aGF0IGtpbmRzIG9mIGZpbGVzIGdvIGluIHRoZW0uCisKKyAgIElmIHRoZSBwYWNrYWdlIHN1cHBvcnRzIGl0LCB5b3UgY2FuIGNhdXNlIHByb2dyYW1zIHRvIGJlIGluc3RhbGxlZAord2l0aCBhbiBleHRyYSBwcmVmaXggb3Igc3VmZml4IG9uIHRoZWlyIG5hbWVzIGJ5IGdpdmluZyBgY29uZmlndXJlJyB0aGUKK29wdGlvbiBgLS1wcm9ncmFtLXByZWZpeD1QUkVGSVgnIG9yIGAtLXByb2dyYW0tc3VmZml4PVNVRkZJWCcuCisKK09wdGlvbmFsIEZlYXR1cmVzCis9PT09PT09PT09PT09PT09PQorCitTb21lIHBhY2thZ2VzIHBheSBhdHRlbnRpb24gdG8gYC0tZW5hYmxlLUZFQVRVUkUnIG9wdGlvbnMgdG8KK2Bjb25maWd1cmUnLCB3aGVyZSBGRUFUVVJFIGluZGljYXRlcyBhbiBvcHRpb25hbCBwYXJ0IG9mIHRoZSBwYWNrYWdlLgorVGhleSBtYXkgYWxzbyBwYXkgYXR0ZW50aW9uIHRvIGAtLXdpdGgtUEFDS0FHRScgb3B0aW9ucywgd2hlcmUgUEFDS0FHRQoraXMgc29tZXRoaW5nIGxpa2UgYGdudS1hcycgb3IgYHgnIChmb3IgdGhlIFggV2luZG93IFN5c3RlbSkuICBUaGUKK2BSRUFETUUnIHNob3VsZCBtZW50aW9uIGFueSBgLS1lbmFibGUtJyBhbmQgYC0td2l0aC0nIG9wdGlvbnMgdGhhdCB0aGUKK3BhY2thZ2UgcmVjb2duaXplcy4KKworICAgRm9yIHBhY2thZ2VzIHRoYXQgdXNlIHRoZSBYIFdpbmRvdyBTeXN0ZW0sIGBjb25maWd1cmUnIGNhbiB1c3VhbGx5CitmaW5kIHRoZSBYIGluY2x1ZGUgYW5kIGxpYnJhcnkgZmlsZXMgYXV0b21hdGljYWxseSwgYnV0IGlmIGl0IGRvZXNuJ3QsCit5b3UgY2FuIHVzZSB0aGUgYGNvbmZpZ3VyZScgb3B0aW9ucyBgLS14LWluY2x1ZGVzPURJUicgYW5kCitgLS14LWxpYnJhcmllcz1ESVInIHRvIHNwZWNpZnkgdGhlaXIgbG9jYXRpb25zLgorCitTcGVjaWZ5aW5nIHRoZSBTeXN0ZW0gVHlwZQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlcmUgbWF5IGJlIHNvbWUgZmVhdHVyZXMgYGNvbmZpZ3VyZScgY2Fubm90IGZpZ3VyZSBvdXQgYXV0b21hdGljYWxseSwKK2J1dCBuZWVkcyB0byBkZXRlcm1pbmUgYnkgdGhlIHR5cGUgb2YgbWFjaGluZSB0aGUgcGFja2FnZSB3aWxsIHJ1biBvbi4KK1VzdWFsbHksIGFzc3VtaW5nIHRoZSBwYWNrYWdlIGlzIGJ1aWx0IHRvIGJlIHJ1biBvbiB0aGUgX3NhbWVfCithcmNoaXRlY3R1cmVzLCBgY29uZmlndXJlJyBjYW4gZmlndXJlIHRoYXQgb3V0LCBidXQgaWYgaXQgcHJpbnRzIGEKK21lc3NhZ2Ugc2F5aW5nIGl0IGNhbm5vdCBndWVzcyB0aGUgbWFjaGluZSB0eXBlLCBnaXZlIGl0IHRoZQorYC0tYnVpbGQ9VFlQRScgb3B0aW9uLiAgVFlQRSBjYW4gZWl0aGVyIGJlIGEgc2hvcnQgbmFtZSBmb3IgdGhlIHN5c3RlbQordHlwZSwgc3VjaCBhcyBgc3VuNCcsIG9yIGEgY2Fub25pY2FsIG5hbWUgd2hpY2ggaGFzIHRoZSBmb3JtOgorCisgICAgIENQVS1DT01QQU5ZLVNZU1RFTQorCit3aGVyZSBTWVNURU0gY2FuIGhhdmUgb25lIG9mIHRoZXNlIGZvcm1zOgorCisgICAgIE9TIEtFUk5FTC1PUworCisgICBTZWUgdGhlIGZpbGUgYGNvbmZpZy5zdWInIGZvciB0aGUgcG9zc2libGUgdmFsdWVzIG9mIGVhY2ggZmllbGQuICBJZgorYGNvbmZpZy5zdWInIGlzbid0IGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSwgdGhlbiB0aGlzIHBhY2thZ2UgZG9lc24ndAorbmVlZCB0byBrbm93IHRoZSBtYWNoaW5lIHR5cGUuCisKKyAgIElmIHlvdSBhcmUgX2J1aWxkaW5nXyBjb21waWxlciB0b29scyBmb3IgY3Jvc3MtY29tcGlsaW5nLCB5b3Ugc2hvdWxkCit1c2UgdGhlIG9wdGlvbiBgLS10YXJnZXQ9VFlQRScgdG8gc2VsZWN0IHRoZSB0eXBlIG9mIHN5c3RlbSB0aGV5IHdpbGwKK3Byb2R1Y2UgY29kZSBmb3IuCisKKyAgIElmIHlvdSB3YW50IHRvIF91c2VfIGEgY3Jvc3MgY29tcGlsZXIsIHRoYXQgZ2VuZXJhdGVzIGNvZGUgZm9yIGEKK3BsYXRmb3JtIGRpZmZlcmVudCBmcm9tIHRoZSBidWlsZCBwbGF0Zm9ybSwgeW91IHNob3VsZCBzcGVjaWZ5IHRoZQorImhvc3QiIHBsYXRmb3JtIChpLmUuLCB0aGF0IG9uIHdoaWNoIHRoZSBnZW5lcmF0ZWQgcHJvZ3JhbXMgd2lsbAorZXZlbnR1YWxseSBiZSBydW4pIHdpdGggYC0taG9zdD1UWVBFJy4KKworU2hhcmluZyBEZWZhdWx0cworPT09PT09PT09PT09PT09PQorCitJZiB5b3Ugd2FudCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGBjb25maWd1cmUnIHNjcmlwdHMgdG8gc2hhcmUsIHlvdQorY2FuIGNyZWF0ZSBhIHNpdGUgc2hlbGwgc2NyaXB0IGNhbGxlZCBgY29uZmlnLnNpdGUnIHRoYXQgZ2l2ZXMgZGVmYXVsdAordmFsdWVzIGZvciB2YXJpYWJsZXMgbGlrZSBgQ0MnLCBgY2FjaGVfZmlsZScsIGFuZCBgcHJlZml4Jy4KK2Bjb25maWd1cmUnIGxvb2tzIGZvciBgUFJFRklYL3NoYXJlL2NvbmZpZy5zaXRlJyBpZiBpdCBleGlzdHMsIHRoZW4KK2BQUkVGSVgvZXRjL2NvbmZpZy5zaXRlJyBpZiBpdCBleGlzdHMuICBPciwgeW91IGNhbiBzZXQgdGhlCitgQ09ORklHX1NJVEUnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgc2l0ZSBzY3JpcHQuCitBIHdhcm5pbmc6IG5vdCBhbGwgYGNvbmZpZ3VyZScgc2NyaXB0cyBsb29rIGZvciBhIHNpdGUgc2NyaXB0LgorCitEZWZpbmluZyBWYXJpYWJsZXMKKz09PT09PT09PT09PT09PT09PQorCitWYXJpYWJsZXMgbm90IGRlZmluZWQgaW4gYSBzaXRlIHNoZWxsIHNjcmlwdCBjYW4gYmUgc2V0IGluIHRoZQorZW52aXJvbm1lbnQgcGFzc2VkIHRvIGBjb25maWd1cmUnLiAgSG93ZXZlciwgc29tZSBwYWNrYWdlcyBtYXkgcnVuCitjb25maWd1cmUgYWdhaW4gZHVyaW5nIHRoZSBidWlsZCwgYW5kIHRoZSBjdXN0b21pemVkIHZhbHVlcyBvZiB0aGVzZQordmFyaWFibGVzIG1heSBiZSBsb3N0LiAgSW4gb3JkZXIgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLCB5b3Ugc2hvdWxkIHNldAordGhlbSBpbiB0aGUgYGNvbmZpZ3VyZScgY29tbWFuZCBsaW5lLCB1c2luZyBgVkFSPXZhbHVlJy4gIEZvciBleGFtcGxlOgorCisgICAgIC4vY29uZmlndXJlIENDPS91c3IvbG9jYWwyL2Jpbi9nY2MKKworY2F1c2VzIHRoZSBzcGVjaWZpZWQgYGdjYycgdG8gYmUgdXNlZCBhcyB0aGUgQyBjb21waWxlciAodW5sZXNzIGl0IGlzCitvdmVycmlkZGVuIGluIHRoZSBzaXRlIHNoZWxsIHNjcmlwdCkuCisKK1VuZm9ydHVuYXRlbHksIHRoaXMgdGVjaG5pcXVlIGRvZXMgbm90IHdvcmsgZm9yIGBDT05GSUdfU0hFTEwnIGR1ZSB0bworYW4gQXV0b2NvbmYgYnVnLiAgVW50aWwgdGhlIGJ1ZyBpcyBmaXhlZCB5b3UgY2FuIHVzZSB0aGlzIHdvcmthcm91bmQ6CisKKyAgICAgQ09ORklHX1NIRUxMPS9iaW4vYmFzaCAvYmluL2Jhc2ggLi9jb25maWd1cmUgQ09ORklHX1NIRUxMPS9iaW4vYmFzaAorCitgY29uZmlndXJlJyBJbnZvY2F0aW9uCis9PT09PT09PT09PT09PT09PT09PT09CisKK2Bjb25maWd1cmUnIHJlY29nbml6ZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IGl0IG9wZXJhdGVzLgorCitgLS1oZWxwJworYC1oJworICAgICBQcmludCBhIHN1bW1hcnkgb2YgdGhlIG9wdGlvbnMgdG8gYGNvbmZpZ3VyZScsIGFuZCBleGl0LgorCitgLS12ZXJzaW9uJworYC1WJworICAgICBQcmludCB0aGUgdmVyc2lvbiBvZiBBdXRvY29uZiB1c2VkIHRvIGdlbmVyYXRlIHRoZSBgY29uZmlndXJlJworICAgICBzY3JpcHQsIGFuZCBleGl0LgorCitgLS1jYWNoZS1maWxlPUZJTEUnCisgICAgIEVuYWJsZSB0aGUgY2FjaGU6IHVzZSBhbmQgc2F2ZSB0aGUgcmVzdWx0cyBvZiB0aGUgdGVzdHMgaW4gRklMRSwKKyAgICAgdHJhZGl0aW9uYWxseSBgY29uZmlnLmNhY2hlJy4gIEZJTEUgZGVmYXVsdHMgdG8gYC9kZXYvbnVsbCcgdG8KKyAgICAgZGlzYWJsZSBjYWNoaW5nLgorCitgLS1jb25maWctY2FjaGUnCitgLUMnCisgICAgIEFsaWFzIGZvciBgLS1jYWNoZS1maWxlPWNvbmZpZy5jYWNoZScuCisKK2AtLXF1aWV0JworYC0tc2lsZW50JworYC1xJworICAgICBEbyBub3QgcHJpbnQgbWVzc2FnZXMgc2F5aW5nIHdoaWNoIGNoZWNrcyBhcmUgYmVpbmcgbWFkZS4gIFRvCisgICAgIHN1cHByZXNzIGFsbCBub3JtYWwgb3V0cHV0LCByZWRpcmVjdCBpdCB0byBgL2Rldi9udWxsJyAoYW55IGVycm9yCisgICAgIG1lc3NhZ2VzIHdpbGwgc3RpbGwgYmUgc2hvd24pLgorCitgLS1zcmNkaXI9RElSJworICAgICBMb29rIGZvciB0aGUgcGFja2FnZSdzIHNvdXJjZSBjb2RlIGluIGRpcmVjdG9yeSBESVIuICBVc3VhbGx5CisgICAgIGBjb25maWd1cmUnIGNhbiBkZXRlcm1pbmUgdGhhdCBkaXJlY3RvcnkgYXV0b21hdGljYWxseS4KKworYGNvbmZpZ3VyZScgYWxzbyBhY2NlcHRzIHNvbWUgb3RoZXIsIG5vdCB3aWRlbHkgdXNlZnVsLCBvcHRpb25zLiAgUnVuCitgY29uZmlndXJlIC0taGVscCcgZm9yIG1vcmUgZGV0YWlscy4KKwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL01ha2VmaWxlLmFtIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmODNjMTIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwxMTQgQEAKK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00CisKK2luc21vZF9TT1VSQ0VTID0gaW5zbW9kLmMgdGVzdGluZy5oCitsc21vZF9TT1VSQ0VTID0gbHNtb2QuYyB0ZXN0aW5nLmgKK21vZHByb2JlX1NPVVJDRVMgPSBtb2Rwcm9iZS5jIHpsaWJzdXBwb3J0LmMgemxpYnN1cHBvcnQuaCB0ZXN0aW5nLmgKK3JtbW9kX1NPVVJDRVMgPSBybW1vZC5jIHRlc3RpbmcuaAorZGVwbW9kX1NPVVJDRVMgPSBkZXBtb2QuYyB6bGlic3VwcG9ydC5jIHRhYmxlcy5jIFwKKwl6bGlic3VwcG9ydC5oIHRhYmxlcy5oIHRlc3RpbmcuaAorbW9kaW5mb19TT1VSQ0VTID0gbW9kaW5mby5jIHpsaWJzdXBwb3J0LmMgemxpYnN1cHBvcnQuaCB0ZXN0aW5nLmgKK21vZGluZGV4X1NPVVJDRVMgPSBtb2RpbmRleC5jIHpsaWJzdXBwb3J0LmMgemxpYnN1cHBvcnQuaCB0ZXN0aW5nLmgKKworaW5zbW9kX3N0YXRpY19TT1VSQ0VTID0gaW5zbW9kLmMKK2luc21vZF9zdGF0aWNfTERGTEFHUyA9IC1zdGF0aWMKKyMgV2UgZG9uJ3Qgd2FudCB0aGUgJCh6bGliX2ZsYWdzKSBoZXJlOiB0aGF0IG1ha2VzIGEgZHluYW1pYyBleGVjdXRhYmxlCitpbnNtb2Rfc3RhdGljX0xEQUREID0gbGlibW9kdG9vbHMuYQorCitFWFRSQV9pbnNtb2RfU09VUkNFUyA9CitFWFRSQV9sc21vZF9TT1VSQ0VTID0KK0VYVFJBX21vZHByb2JlX1NPVVJDRVMgPSAKK0VYVFJBX3JtbW9kX1NPVVJDRVMgPQorRVhUUkFfaW5zbW9kX3N0YXRpY19TT1VSQ0VTID0KK0VYVFJBX2RlcG1vZF9TT1VSQ0VTID0KK0VYVFJBX21vZGluZm9fU09VUkNFUyA9CisKK2xpYm1vZHRvb2xzX2FfU09VUkNFUyA9IHV0aWwuYyBsb2dnaW5nLmMgaW5kZXguYyBjb25maWdfZmlsdGVyLmMgZWxmb3BzLmMgXAorCXV0aWwuaCBkZXBtb2QuaCBsb2dnaW5nLmggaW5kZXguaCBsaXN0LmggY29uZmlnX2ZpbHRlci5oIGVsZm9wcy5oCitsaWJtb2R0b29sc19hX0NGTEFHUyA9IC1mZnVuY3Rpb24tc2VjdGlvbnMKKworRVhUUkFfbGlibW9kdG9vbHNfYV9TT1VSQ0VTID0gZWxmb3BzX2NvcmUuYworCitpbnNtb2RfTERBREQgPSAkKExEQUREKSBsaWJtb2R0b29scy5hCitsc21vZF9MREFERCA9ICQoTERBREQpIGxpYm1vZHRvb2xzLmEKK21vZHByb2JlX0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorcm1tb2RfTERBREQgPSAkKExEQUREKSBsaWJtb2R0b29scy5hCitkZXBtb2RfTERBREQgPSAkKExEQUREKSBsaWJtb2R0b29scy5hCittb2RpbmZvX0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorbW9kaW5kZXhfTERBREQgPSAkKExEQUREKSBsaWJtb2R0b29scy5hCisKK01BTjUgPSBtb2Rwcm9iZS5jb25mLjUgbW9kdWxlcy5kZXAuNSBkZXBtb2QuY29uZi41IG1vZHByb2JlLmQuNQorTUFOOCA9IGRlcG1vZC44IGluc21vZC44IGxzbW9kLjggcm1tb2QuOCBtb2Rwcm9iZS44IG1vZGluZm8uOAorU0dNTCA9ICQoYWRkcHJlZml4IGRvYy8sICAkKE1BTjU6JS41PSUuc2dtbCkgJChNQU44OiUuOD0lLnNnbWwpKQorZGlzdF9tYW5fTUFOUyA9ICQoTUFONSkgJChNQU44KQorIyBJZiB0aGV5IGhhdmVuJ3Qgb3ZlcnJpZGRlbiBtYW5kaXIsIGZpeCBpdCAobmV2ZXIgL21hbiEpCittYW5kaXIgPSQoc2hlbGwgaWYgWyBAbWFuZGlyQCA9ICQocHJlZml4KS9tYW4gXTsgdGhlbiBpZiBbICQocHJlZml4KSA9IC8gXTsgdGhlbiBlY2hvIC91c3Ivc2hhcmUvbWFuOyBlbHNlIGVjaG8gJChwcmVmaXgpL3NoYXJlL21hbjsgZmk7IGVsc2UgZWNobyBAbWFuZGlyQDsgZmkpCisKK1RFU1RTVUlURSA6PSAkKHNoZWxsIHRlc3QgLWUgQHNyY2RpckAvdGVzdHMgJiYgZmluZCBAc3JjZGlyQC90ZXN0cyAtdHlwZSBmICEgLW5hbWUgJyp+JykKKworRVhUUkFfRElTVCA9IGdlbmVyYXRlLW1vZHByb2JlLmNvbmYgRkFRIENPRElORyBzdHJlc3NfbW9kdWxlcy5zaCBpbnN0YWxsLXdpdGgtY2FyZSAkKFNHTUwpICQobWFuX01BTlMpICQoVEVTVFNVSVRFKQorCitzYmluX1BST0dSQU1TID0gaW5zbW9kIG1vZHByb2JlIHJtbW9kIGRlcG1vZCBtb2RpbmZvCitpZiBCVUlMRF9TVEFUSUNfVVRJTFMKK3NiaW5fUFJPR1JBTVMgKz0gaW5zbW9kLnN0YXRpYworZW5kaWYKK2Jpbl9QUk9HUkFNUyA9IGxzbW9kCitub2luc3RfUFJPR1JBTVM9bW9kaW5kZXgKK25vaW5zdF9MSUJSQVJJRVMgPSBsaWJtb2R0b29scy5hCitJTlNUQUxMID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9pbnN0YWxsLXdpdGgtY2FyZQorCitESVNUX0RJUiA6PSAvZGF0YS93b3JrL3JlbGVhc2VzL21vZHVsZS1pbml0LXRvb2xzLworCitNQUlOVEFJTkVSQ0xFQU5GSUxFUyA6PSAkKG1hbl9NQU5TKQorCisjIGRvY2Jvb2sybWFuIHdyaXRlcyBmaWxlIGl0c2VsZiwgZG9lc24ndCBkbyBzdGRvdXQuCislLjg6IGRvYy8lLnNnbWwKKwlpZiBbICIkKERPQ0JPT0tUT01BTikiID0gImRvY2Jvb2sybWFuIiBdOyB0aGVuICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAkKERPQ0JPT0tUT01BTikgJDwgPiAvZGV2L251bGwgMj4mMTsgICAgICAgICAgICAgICAgICAgICAgIFwKKwllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAkKERPQ0JPT0tUT01BTikgJDwgMj4mMSA+ICRAIHwgc2VkICdzL15bXjpdKjovLyc7ICAgICAgICAgICAgICBcCisJZmkKKworJS41OiBkb2MvJS5zZ21sCisJaWYgWyAiJChET0NCT09LVE9NQU4pIiA9ICJkb2Nib29rMm1hbiIgXTsgdGhlbiAgICAgICAgICAgICAgICAgICAgIFwKKwkgICAgJChET0NCT09LVE9NQU4pICQ8ID4gL2Rldi9udWxsIDI+JjE7ICAgICAgICAgICAgICAgICAgICAgICBcCisJZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkgICAgJChET0NCT09LVE9NQU4pICQ8IDI+JjEgPiAkQCB8IHNlZCAncy9eW146XSo6Ly8nOyAgICAgICAgICAgICAgXAorCWZpCisKKyMgZG9jYm9vazJtYW4gY3JlYXRlcyBleHRyYSBjcmFwIGZpbGVzIHdoaWNoIG5lZWQgY2xlYW5pbmcuCitkaXN0Y2xlYW4tbG9jYWw6IGtpbGxidWlsZG1hbnBhZ2VzCisKK2tpbGxidWlsZG1hbnBhZ2VzOgorCXJtIC1mIGRvYy8qLnRtcCBtYW5wYWdlLnJlZnMgbWFucGFnZS5saW5rcworCit0YXJiYWxsOiAkKERJU1RfRElSKS9tb2R1bGUtaW5pdC10b29scy0kKFZFUlNJT04pLnRhci5negorCiskKERJU1RfRElSKS9tb2R1bGUtaW5pdC10b29scy0kKFZFUlNJT04pLnRhci5nejogZGlzdAorCW12IG1vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikudGFyLmd6ICRACisKK3NycG06ICQoRElTVF9ESVIpL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikudGFyLmd6CisJbG4gLXNmICQoRElTVF9ESVIpL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikudGFyLmd6IC91c3Ivc3JjL3JwbS9TT1VSQ0VTLworCXNldCAtZTsgUkVMRUFTRT1gZ3JlcCAnXlJlbGVhc2U6JyAvdXNyL3NyYy9ycG0vU1BFQ1MvbW9kdXRpbHMuc3BlYyB8IGF3ayAneyBwcmludCAkJDIgfSdgOyBcCisJaWYgWyAiYGdyZXAgJyVkZWZpbmUgbWl0X3ZlcicgL3Vzci9zcmMvcnBtL1NQRUNTL21vZHV0aWxzLnNwZWMgfCBhd2sgJ3twcmludCAkJDN9J2AiICE9ICQoVkVSU0lPTikgXTsgdGhlbiBcCisJCXNlZCAtZSAicy9SZWxlYXNlOiAkJFJFTEVBU0UvUmVsZWFzZTogYGV4cHIgJCRSRUxFQVNFICsgMWAvIiAtZSAncy8lZGVmaW5lIG1pdF92ZXIuKi8lZGVmaW5lIG1pdF92ZXIgJChWRVJTSU9OKS8nIDwgL3Vzci9zcmMvcnBtL1NQRUNTL21vZHV0aWxzLnNwZWMgPiAvdG1wL21vZHV0aWxzLnNwZWM7IFwKKwkJcnBtIC1iYSAvdG1wL21vZHV0aWxzLnNwZWM7IFwKKwkJbXYgL3Vzci9zcmMvcnBtL1NSUE1TL21vZHV0aWxzLTIuNC4yMS1gZXhwciAkJFJFTEVBU0UgKyAxYC5zcmMucnBtICQoRElTVF9ESVIpOyBcCisJCW12IC90bXAvbW9kdXRpbHMuc3BlYyAvdXNyL3NyYy9ycG0vU1BFQ1MvbW9kdXRpbHMuc3BlYzsgXAorCWVsc2UgXAorCQlycG0gLWJhIC91c3Ivc3JjL3JwbS9TUEVDUy9tb2R1dGlscy5zcGVjOyBcCisJCW12IC91c3Ivc3JjL3JwbS9TUlBNUy9tb2R1dGlscy0yLjQuMjEtJCRSRUxFQVNFLnNyYy5ycG0gJChESVNUX0RJUik7IFwKKwlmaQorCisjIE5vIHRlc3RzdWl0ZT8KK3Rlc3RzL3J1bnRlc3RzOgorCW1rZGlyIHRlc3RzCisJZWNobyAnIyEgL2Jpbi9zaCcgPiAkQAorCWVjaG8gJyMgSW5zdGFsbCB0aGUgdGVzdHN1aXRlIG92ZXIgdGhpcyBkaXIuICcgPj4gJEAKKwljaG1vZCBhK3ggJEAKKworJChESVNUX0RJUikvbW9kdWxlLWluaXQtdG9vbHMtdGVzdHN1aXRlLSQoVkVSU0lPTikudGFyLmd6OgorCWxuIC1zZm4gYHB3ZGAgL3RtcC9tb2R1bGUtaW5pdC10b29scy0kKFZFUlNJT04pIAorCWNkIC90bXAgJiYgdGFyIC0tZXhjbHVkZSAnKn4nIC1jIC16IC1mICRAIG1vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikvdGVzdHMKKwlybSAvdG1wL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikKKworcmVsZWFzZTogY2hlY2sgY2xlYW4gdGFyYmFsbApkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL01ha2VmaWxlLmluIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL01ha2VmaWxlLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZGNlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvTWFrZWZpbGUuaW4KQEAgLTAsMCArMSwxMDQ3IEBACisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjExLjEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKworIyBDb3B5cmlnaHQgKEMpIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgorIyBUaGlzIE1ha2VmaWxlLmluIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dAorIyBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBCisjIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworQFNFVF9NQUtFQAorCisKK1ZQQVRIID0gQHNyY2RpckAKK3BrZ2RhdGFkaXIgPSAkKGRhdGFkaXIpL0BQQUNLQUdFQAorcGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvQFBBQ0tBR0VACitwa2dsaWJkaXIgPSAkKGxpYmRpcikvQFBBQ0tBR0VACitwa2dsaWJleGVjZGlyID0gJChsaWJleGVjZGlyKS9AUEFDS0FHRUAKK2FtX19jZCA9IENEUEFUSD0iJCR7WlNIX1ZFUlNJT04rLn0kKFBBVEhfU0VQQVJBVE9SKSIgJiYgY2QKK2luc3RhbGxfc2hfREFUQSA9ICQoaW5zdGFsbF9zaCkgLWMgLW0gNjQ0CitpbnN0YWxsX3NoX1BST0dSQU0gPSAkKGluc3RhbGxfc2gpIC1jCitpbnN0YWxsX3NoX1NDUklQVCA9ICQoaW5zdGFsbF9zaCkgLWMKK0lOU1RBTExfSEVBREVSID0gJChJTlNUQUxMX0RBVEEpCit0cmFuc2Zvcm0gPSAkKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpCitOT1JNQUxfSU5TVEFMTCA9IDoKK1BSRV9JTlNUQUxMID0gOgorUE9TVF9JTlNUQUxMID0gOgorTk9STUFMX1VOSU5TVEFMTCA9IDoKK1BSRV9VTklOU1RBTEwgPSA6CitQT1NUX1VOSU5TVEFMTCA9IDoKK2J1aWxkX3RyaXBsZXQgPSBAYnVpbGRACitob3N0X3RyaXBsZXQgPSBAaG9zdEAKK3RhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKK3NiaW5fUFJPR1JBTVMgPSBpbnNtb2QkKEVYRUVYVCkgbW9kcHJvYmUkKEVYRUVYVCkgcm1tb2QkKEVYRUVYVCkgXAorCWRlcG1vZCQoRVhFRVhUKSBtb2RpbmZvJChFWEVFWFQpICQoYW1fX0VYRUVYVF8xKQorQEJVSUxEX1NUQVRJQ19VVElMU19UUlVFQGFtX19hcHBlbmRfMSA9IGluc21vZC5zdGF0aWMKK2Jpbl9QUk9HUkFNUyA9IGxzbW9kJChFWEVFWFQpCitub2luc3RfUFJPR1JBTVMgPSBtb2RpbmRleCQoRVhFRVhUKQorc3ViZGlyID0gLgorRElTVF9DT01NT04gPSBSRUFETUUgJChhbV9fY29uZmlndXJlX2RlcHMpICQoZGlzdF9tYW5fTUFOUykgXAorCSQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAorCSQodG9wX3NyY2RpcikvY29uZmlndXJlIEFVVEhPUlMgQ09QWUlORyBDaGFuZ2VMb2cgSU5TVEFMTCBORVdTIFwKKwlUT0RPIGNvbmZpZy5ndWVzcyBjb25maWcuc3ViIGRlcGNvbXAgaW5zdGFsbC1zaCBtaXNzaW5nCitBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CithbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9tNC9heF9jb25maWd1cmVfYXJncy5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQgXAorCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCithbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAorCSQoQUNMT0NBTF9NNCkKK2FtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTID0gY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUgY29uZmlnLmxvZyBcCisgY29uZmlndXJlLmxpbmVubyBjb25maWcuc3RhdHVzLmxpbmVubworbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKK0NPTkZJR19DTEVBTl9GSUxFUyA9CitDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQorTElCUkFSSUVTID0gJChub2luc3RfTElCUkFSSUVTKQorQVIgPSBhcgorQVJGTEFHUyA9IGNydQorbGlibW9kdG9vbHNfYV9BUiA9ICQoQVIpICQoQVJGTEFHUykKK2xpYm1vZHRvb2xzX2FfTElCQUREID0KK2FtX2xpYm1vZHRvb2xzX2FfT0JKRUNUUyA9IGxpYm1vZHRvb2xzX2EtdXRpbC4kKE9CSkVYVCkgXAorCWxpYm1vZHRvb2xzX2EtbG9nZ2luZy4kKE9CSkVYVCkgbGlibW9kdG9vbHNfYS1pbmRleC4kKE9CSkVYVCkgXAorCWxpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci4kKE9CSkVYVCkgXAorCWxpYm1vZHRvb2xzX2EtZWxmb3BzLiQoT0JKRVhUKQorbGlibW9kdG9vbHNfYV9PQkpFQ1RTID0gJChhbV9saWJtb2R0b29sc19hX09CSkVDVFMpCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSIgIiQoREVTVERJUikkKHNiaW5kaXIpIiBcCisJIiQoREVTVERJUikkKG1hbjVkaXIpIiAiJChERVNURElSKSQobWFuOGRpcikiCitAQlVJTERfU1RBVElDX1VUSUxTX1RSVUVAYW1fX0VYRUVYVF8xID0gaW5zbW9kLnN0YXRpYyQoRVhFRVhUKQorUFJPR1JBTVMgPSAkKGJpbl9QUk9HUkFNUykgJChub2luc3RfUFJPR1JBTVMpICQoc2Jpbl9QUk9HUkFNUykKK2FtX2RlcG1vZF9PQkpFQ1RTID0gZGVwbW9kLiQoT0JKRVhUKSB6bGlic3VwcG9ydC4kKE9CSkVYVCkgXAorCXRhYmxlcy4kKE9CSkVYVCkKK2RlcG1vZF9PQkpFQ1RTID0gJChhbV9kZXBtb2RfT0JKRUNUUykKK2FtX19ERVBFTkRFTkNJRVNfMSA9CitkZXBtb2RfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIGxpYm1vZHRvb2xzLmEKK2FtX2luc21vZF9PQkpFQ1RTID0gaW5zbW9kLiQoT0JKRVhUKQoraW5zbW9kX09CSkVDVFMgPSAkKGFtX2luc21vZF9PQkpFQ1RTKQoraW5zbW9kX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBsaWJtb2R0b29scy5hCithbV9pbnNtb2Rfc3RhdGljX09CSkVDVFMgPSBpbnNtb2QuJChPQkpFWFQpCitpbnNtb2Rfc3RhdGljX09CSkVDVFMgPSAkKGFtX2luc21vZF9zdGF0aWNfT0JKRUNUUykKK2luc21vZF9zdGF0aWNfREVQRU5ERU5DSUVTID0gbGlibW9kdG9vbHMuYQoraW5zbW9kX3N0YXRpY19MSU5LID0gJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGluc21vZF9zdGF0aWNfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorYW1fbHNtb2RfT0JKRUNUUyA9IGxzbW9kLiQoT0JKRVhUKQorbHNtb2RfT0JKRUNUUyA9ICQoYW1fbHNtb2RfT0JKRUNUUykKK2xzbW9kX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBsaWJtb2R0b29scy5hCithbV9tb2RpbmRleF9PQkpFQ1RTID0gbW9kaW5kZXguJChPQkpFWFQpIHpsaWJzdXBwb3J0LiQoT0JKRVhUKQorbW9kaW5kZXhfT0JKRUNUUyA9ICQoYW1fbW9kaW5kZXhfT0JKRUNUUykKK21vZGluZGV4X0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBsaWJtb2R0b29scy5hCithbV9tb2RpbmZvX09CSkVDVFMgPSBtb2RpbmZvLiQoT0JKRVhUKSB6bGlic3VwcG9ydC4kKE9CSkVYVCkKK21vZGluZm9fT0JKRUNUUyA9ICQoYW1fbW9kaW5mb19PQkpFQ1RTKQorbW9kaW5mb19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgbGlibW9kdG9vbHMuYQorYW1fbW9kcHJvYmVfT0JKRUNUUyA9IG1vZHByb2JlLiQoT0JKRVhUKSB6bGlic3VwcG9ydC4kKE9CSkVYVCkKK21vZHByb2JlX09CSkVDVFMgPSAkKGFtX21vZHByb2JlX09CSkVDVFMpCittb2Rwcm9iZV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgbGlibW9kdG9vbHMuYQorYW1fcm1tb2RfT0JKRUNUUyA9IHJtbW9kLiQoT0JKRVhUKQorcm1tb2RfT0JKRUNUUyA9ICQoYW1fcm1tb2RfT0JKRUNUUykKK3JtbW9kX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBsaWJtb2R0b29scy5hCitERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQAorZGVwY29tcCA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX2RlcGZpbGVzX21heWJlID0gZGVwZmlsZXMKK2FtX19tdiA9IG12IC1mCitDT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwKKwkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCitDQ0xEID0gJChDQykKK0xJTksgPSAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitTT1VSQ0VTID0gJChsaWJtb2R0b29sc19hX1NPVVJDRVMpICQoRVhUUkFfbGlibW9kdG9vbHNfYV9TT1VSQ0VTKSBcCisJJChkZXBtb2RfU09VUkNFUykgJChFWFRSQV9kZXBtb2RfU09VUkNFUykgJChpbnNtb2RfU09VUkNFUykgXAorCSQoRVhUUkFfaW5zbW9kX1NPVVJDRVMpICQoaW5zbW9kX3N0YXRpY19TT1VSQ0VTKSBcCisJJChFWFRSQV9pbnNtb2Rfc3RhdGljX1NPVVJDRVMpICQobHNtb2RfU09VUkNFUykgXAorCSQoRVhUUkFfbHNtb2RfU09VUkNFUykgJChtb2RpbmRleF9TT1VSQ0VTKSAkKG1vZGluZm9fU09VUkNFUykgXAorCSQoRVhUUkFfbW9kaW5mb19TT1VSQ0VTKSAkKG1vZHByb2JlX1NPVVJDRVMpIFwKKwkkKEVYVFJBX21vZHByb2JlX1NPVVJDRVMpICQocm1tb2RfU09VUkNFUykgXAorCSQoRVhUUkFfcm1tb2RfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGlibW9kdG9vbHNfYV9TT1VSQ0VTKSAkKEVYVFJBX2xpYm1vZHRvb2xzX2FfU09VUkNFUykgXAorCSQoZGVwbW9kX1NPVVJDRVMpICQoRVhUUkFfZGVwbW9kX1NPVVJDRVMpICQoaW5zbW9kX1NPVVJDRVMpIFwKKwkkKEVYVFJBX2luc21vZF9TT1VSQ0VTKSAkKGluc21vZF9zdGF0aWNfU09VUkNFUykgXAorCSQoRVhUUkFfaW5zbW9kX3N0YXRpY19TT1VSQ0VTKSAkKGxzbW9kX1NPVVJDRVMpIFwKKwkkKEVYVFJBX2xzbW9kX1NPVVJDRVMpICQobW9kaW5kZXhfU09VUkNFUykgJChtb2RpbmZvX1NPVVJDRVMpIFwKKwkkKEVYVFJBX21vZGluZm9fU09VUkNFUykgJChtb2Rwcm9iZV9TT1VSQ0VTKSBcCisJJChFWFRSQV9tb2Rwcm9iZV9TT1VSQ0VTKSAkKHJtbW9kX1NPVVJDRVMpIFwKKwkkKEVYVFJBX3JtbW9kX1NPVVJDRVMpCithbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKK2FtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCisgICAgJChzcmNkaXIpLyopIGY9YGVjaG8gIiQkcCIgfCBzZWQgInN8XiQkc3JjZGlyc3RyaXAvfHwiYDs7IFwKKyAgICAqKSBmPSQkcDs7IFwKKyAgZXNhYzsKK2FtX19zdHJpcF9kaXIgPSBmPWBlY2hvICQkcCB8IHNlZCAtZSAnc3xeLiovfHwnYDsKK2FtX19pbnN0YWxsX21heCA9IDQwCithbV9fbm9iYXNlX3N0cmlwX3NldHVwID0gXAorICBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgCithbV9fbm9iYXNlX3N0cmlwID0gXAorICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBzZWQgLWUgInN8JCRzcmNkaXJzdHJpcC98fCIKK2FtX19ub2Jhc2VfbGlzdCA9ICQoYW1fX25vYmFzZV9zdHJpcF9zZXR1cCk7IFwKKyAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAgJCRwIjsgZG9uZSB8IFwKKyAgc2VkICJzfCAkJHNyY2RpcnN0cmlwL3wgfDsiJyAvIC4qXC8vIXMvIC4qLyAuLzsgcyxcKCAuKlwpL1teL10qJCQsXDEsJyB8IFwKKyAgJChBV0spICdCRUdJTiB7IGZpbGVzWyIuIl0gPSAiIiB9IHsgZmlsZXNbJCQyXSA9IGZpbGVzWyQkMl0gIiAiICQkMTsgXAorICAgIGlmICgrK25bJCQyXSA9PSAkKGFtX19pbnN0YWxsX21heCkpIFwKKyAgICAgIHsgcHJpbnQgJCQyLCBmaWxlc1skJDJdOyBuWyQkMl0gPSAwOyBmaWxlc1skJDJdID0gIiIgfSB9IFwKKyAgICBFTkQgeyBmb3IgKGRpciBpbiBmaWxlcykgcHJpbnQgZGlyLCBmaWxlc1tkaXJdIH0nCithbV9fYmFzZV9saXN0ID0gXAorICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAorICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCittYW41ZGlyID0gJChtYW5kaXIpL21hbjUKK21hbjhkaXIgPSAkKG1hbmRpcikvbWFuOAorTlJPRkYgPSBucm9mZgorTUFOUyA9ICQoZGlzdF9tYW5fTUFOUykKK0VUQUdTID0gZXRhZ3MKK0NUQUdTID0gY3RhZ3MKK0RJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCitkaXN0ZGlyID0gJChQQUNLQUdFKS0kKFZFUlNJT04pCit0b3BfZGlzdGRpciA9ICQoZGlzdGRpcikKK2FtX19yZW1vdmVfZGlzdGRpciA9IFwKKyAgeyB0ZXN0ICEgLWQgIiQoZGlzdGRpcikiIFwKKyAgICB8fCB7IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1leGVjIGNobW9kIHUrdyB7fSAnOycgXAorICAgICAgICAgJiYgcm0gLWZyICIkKGRpc3RkaXIpIjsgfTsgfQorRElTVF9BUkNISVZFUyA9ICQoZGlzdGRpcikudGFyLmd6CitHWklQX0VOViA9IC0tYmVzdAorZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyA9IGZpbmQgLiAtdHlwZSBmIC1wcmludAorZGlzdGNsZWFuY2hlY2tfbGlzdGZpbGVzID0gZmluZCAuIC10eXBlIGYgLXByaW50CitBQ0xPQ0FMID0gQEFDTE9DQUxACitBTVRBUiA9IEBBTVRBUkAKK0FVVE9DT05GID0gQEFVVE9DT05GQAorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQAorQVVUT01BS0UgPSBAQVVUT01BS0VACitBV0sgPSBAQVdLQAorQ0MgPSBAQ0NACitDQ0RFUE1PREUgPSBAQ0NERVBNT0RFQAorQ0ZMQUdTID0gQENGTEFHU0AKK0NQUEZMQUdTID0gQENQUEZMQUdTQAorQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKK0RFRlMgPSBAREVGU0AKK0RFUERJUiA9IEBERVBESVJACitET0NCT09LVE9NQU4gPSBARE9DQk9PS1RPTUFOQAorRUNIT19DID0gQEVDSE9fQ0AKK0VDSE9fTiA9IEBFQ0hPX05ACitFQ0hPX1QgPSBARUNIT19UQAorRVhFRVhUID0gQEVYRUVYVEAKK0lOU1RBTEwgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL2luc3RhbGwtd2l0aC1jYXJlCitJTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAorSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUAKK0lOU1RBTExfU0NSSVBUID0gQElOU1RBTExfU0NSSVBUQAorSU5TVEFMTF9TVFJJUF9QUk9HUkFNID0gQElOU1RBTExfU1RSSVBfUFJPR1JBTUAKK0xEQUREID0gQExEQUREQAorTERGTEFHUyA9IEBMREZMQUdTQAorTElCT0JKUyA9IEBMSUJPQkpTQAorTElCUyA9IEBMSUJTQAorTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK01BS0VJTkZPID0gQE1BS0VJTkZPQAorTUtESVJfUCA9IEBNS0RJUl9QQAorTU9EVUxFX0RJUiA9IEBNT0RVTEVfRElSQAorT0JKRVhUID0gQE9CSkVYVEAKK1BBQ0tBR0UgPSBAUEFDS0FHRUAKK1BBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAorUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKK1BBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAorUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACitQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKK1JBTkxJQiA9IEBSQU5MSUJACitTRVRfTUFLRSA9IEBTRVRfTUFLRUAKK1NIRUxMID0gQFNIRUxMQAorU1RSSVAgPSBAU1RSSVBACitWRVJTSU9OID0gQFZFUlNJT05ACithYnNfYnVpbGRkaXIgPSBAYWJzX2J1aWxkZGlyQAorYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAorYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAorYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9DQyA9IEBhY19jdF9DQ0AKK2FtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQAorYW1fX2xlYWRpbmdfZG90ID0gQGFtX19sZWFkaW5nX2RvdEAKK2FtX19xdW90ZSA9IEBhbV9fcXVvdGVACithbV9fdGFyID0gQGFtX190YXJACithbV9fdW50YXIgPSBAYW1fX3VudGFyQAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCA9IEBheF9lbmFibGVfYnVpbGRkaXJfc2VkQAorYmluZGlyID0gQGJpbmRpckAKK2J1aWxkID0gQGJ1aWxkQAorYnVpbGRfYWxpYXMgPSBAYnVpbGRfYWxpYXNACitidWlsZF9jcHUgPSBAYnVpbGRfY3B1QAorYnVpbGRfb3MgPSBAYnVpbGRfb3NACitidWlsZF92ZW5kb3IgPSBAYnVpbGRfdmVuZG9yQAorYnVpbGRkaXIgPSBAYnVpbGRkaXJACitkYXRhZGlyID0gQGRhdGFkaXJACitkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKK2RvY2RpciA9IEBkb2NkaXJACitkdmlkaXIgPSBAZHZpZGlyQAorZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACitob3N0ID0gQGhvc3RACitob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACitob3N0X2NwdSA9IEBob3N0X2NwdUAKK2hvc3Rfb3MgPSBAaG9zdF9vc0AKK2hvc3RfdmVuZG9yID0gQGhvc3RfdmVuZG9yQAoraHRtbGRpciA9IEBodG1sZGlyQAoraW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAoraW5mb2RpciA9IEBpbmZvZGlyQAoraW5zdGFsbF9zaCA9IEBpbnN0YWxsX3NoQAorbGliZGlyID0gQGxpYmRpckAKK2xpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKK2xvY2FsZWRpciA9IEBsb2NhbGVkaXJACitsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACisjIElmIHRoZXkgaGF2ZW4ndCBvdmVycmlkZGVuIG1hbmRpciwgZml4IGl0IChuZXZlciAvbWFuISkKK21hbmRpciA9ICQoc2hlbGwgaWYgWyBAbWFuZGlyQCA9ICQocHJlZml4KS9tYW4gXTsgdGhlbiBpZiBbICQocHJlZml4KSA9IC8gXTsgdGhlbiBlY2hvIC91c3Ivc2hhcmUvbWFuOyBlbHNlIGVjaG8gJChwcmVmaXgpL3NoYXJlL21hbjsgZmk7IGVsc2UgZWNobyBAbWFuZGlyQDsgZmkpCitta2Rpcl9wID0gQG1rZGlyX3BACitvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACitwZGZkaXIgPSBAcGRmZGlyQAorcHJlZml4ID0gQHByZWZpeEAKK3Byb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKK3BzZGlyID0gQHBzZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACitzcmNkaXIgPSBAc3JjZGlyQAorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAordGFyZ2V0ID0gQHRhcmdldEAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACit0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAordGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAordG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAordG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00CitpbnNtb2RfU09VUkNFUyA9IGluc21vZC5jIHRlc3RpbmcuaAorbHNtb2RfU09VUkNFUyA9IGxzbW9kLmMgdGVzdGluZy5oCittb2Rwcm9iZV9TT1VSQ0VTID0gbW9kcHJvYmUuYyB6bGlic3VwcG9ydC5jIHpsaWJzdXBwb3J0LmggdGVzdGluZy5oCitybW1vZF9TT1VSQ0VTID0gcm1tb2QuYyB0ZXN0aW5nLmgKK2RlcG1vZF9TT1VSQ0VTID0gZGVwbW9kLmMgemxpYnN1cHBvcnQuYyB0YWJsZXMuYyBcCisJemxpYnN1cHBvcnQuaCB0YWJsZXMuaCB0ZXN0aW5nLmgKKworbW9kaW5mb19TT1VSQ0VTID0gbW9kaW5mby5jIHpsaWJzdXBwb3J0LmMgemxpYnN1cHBvcnQuaCB0ZXN0aW5nLmgKK21vZGluZGV4X1NPVVJDRVMgPSBtb2RpbmRleC5jIHpsaWJzdXBwb3J0LmMgemxpYnN1cHBvcnQuaCB0ZXN0aW5nLmgKK2luc21vZF9zdGF0aWNfU09VUkNFUyA9IGluc21vZC5jCitpbnNtb2Rfc3RhdGljX0xERkxBR1MgPSAtc3RhdGljCisjIFdlIGRvbid0IHdhbnQgdGhlICQoemxpYl9mbGFncykgaGVyZTogdGhhdCBtYWtlcyBhIGR5bmFtaWMgZXhlY3V0YWJsZQoraW5zbW9kX3N0YXRpY19MREFERCA9IGxpYm1vZHRvb2xzLmEKK0VYVFJBX2luc21vZF9TT1VSQ0VTID0gCitFWFRSQV9sc21vZF9TT1VSQ0VTID0gCitFWFRSQV9tb2Rwcm9iZV9TT1VSQ0VTID0gCitFWFRSQV9ybW1vZF9TT1VSQ0VTID0gCitFWFRSQV9pbnNtb2Rfc3RhdGljX1NPVVJDRVMgPSAKK0VYVFJBX2RlcG1vZF9TT1VSQ0VTID0gCitFWFRSQV9tb2RpbmZvX1NPVVJDRVMgPSAKK2xpYm1vZHRvb2xzX2FfU09VUkNFUyA9IHV0aWwuYyBsb2dnaW5nLmMgaW5kZXguYyBjb25maWdfZmlsdGVyLmMgZWxmb3BzLmMgXAorCXV0aWwuaCBkZXBtb2QuaCBsb2dnaW5nLmggaW5kZXguaCBsaXN0LmggY29uZmlnX2ZpbHRlci5oIGVsZm9wcy5oCisKK2xpYm1vZHRvb2xzX2FfQ0ZMQUdTID0gLWZmdW5jdGlvbi1zZWN0aW9ucworRVhUUkFfbGlibW9kdG9vbHNfYV9TT1VSQ0VTID0gZWxmb3BzX2NvcmUuYworaW5zbW9kX0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorbHNtb2RfTERBREQgPSAkKExEQUREKSBsaWJtb2R0b29scy5hCittb2Rwcm9iZV9MREFERCA9ICQoTERBREQpIGxpYm1vZHRvb2xzLmEKK3JtbW9kX0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorZGVwbW9kX0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorbW9kaW5mb19MREFERCA9ICQoTERBREQpIGxpYm1vZHRvb2xzLmEKK21vZGluZGV4X0xEQUREID0gJChMREFERCkgbGlibW9kdG9vbHMuYQorTUFONSA9IG1vZHByb2JlLmNvbmYuNSBtb2R1bGVzLmRlcC41IGRlcG1vZC5jb25mLjUgbW9kcHJvYmUuZC41CitNQU44ID0gZGVwbW9kLjggaW5zbW9kLjggbHNtb2QuOCBybW1vZC44IG1vZHByb2JlLjggbW9kaW5mby44CitTR01MID0gJChhZGRwcmVmaXggZG9jLywgICQoTUFONTolLjU9JS5zZ21sKSAkKE1BTjg6JS44PSUuc2dtbCkpCitkaXN0X21hbl9NQU5TID0gJChNQU41KSAkKE1BTjgpCitURVNUU1VJVEUgOj0gJChzaGVsbCB0ZXN0IC1lIEBzcmNkaXJAL3Rlc3RzICYmIGZpbmQgQHNyY2RpckAvdGVzdHMgLXR5cGUgZiAhIC1uYW1lICcqficpCitFWFRSQV9ESVNUID0gZ2VuZXJhdGUtbW9kcHJvYmUuY29uZiBGQVEgQ09ESU5HIHN0cmVzc19tb2R1bGVzLnNoIGluc3RhbGwtd2l0aC1jYXJlICQoU0dNTCkgJChtYW5fTUFOUykgJChURVNUU1VJVEUpCitub2luc3RfTElCUkFSSUVTID0gbGlibW9kdG9vbHMuYQorRElTVF9ESVIgOj0gL2RhdGEvd29yay9yZWxlYXNlcy9tb2R1bGUtaW5pdC10b29scy8KK01BSU5UQUlORVJDTEVBTkZJTEVTIDo9ICQobWFuX01BTlMpCithbGw6IGFsbC1hbQorCisuU1VGRklYRVM6CisuU1VGRklYRVM6IC5jIC5vIC5vYmoKK2FtLS1yZWZyZXNoOgorCUA6CiskKHNyY2RpcikvTWFrZWZpbGUuaW46ICAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQorCUBmb3IgZGVwIGluICQ/OyBkbyBcCisJICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKKwkgICAgKiQkZGVwKikgXAorCSAgICAgIGVjaG8gJyBjZCAkKHNyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUnOyBcCisJICAgICAgJChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBcCisJCSYmIGV4aXQgMDsgXAorCSAgICAgIGV4aXQgMTs7IFwKKwkgIGVzYWM7IFwKKwlkb25lOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgTWFrZWZpbGUKKy5QUkVDSU9VUzogTWFrZWZpbGUKK01ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKwlAY2FzZSAnJD8nIGluIFwKKwkgICpjb25maWcuc3RhdHVzKikgXAorCSAgICBlY2hvICcgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzJzsgXAorCSAgICAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXM7OyBcCisJICAqKSBcCisJICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRAICQoYW1fX2RlcGZpbGVzX21heWJlKSc7IFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCisJZXNhYzsKKworJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXM6ICQodG9wX3NyY2RpcikvY29uZmlndXJlICQoQ09ORklHX1NUQVRVU19ERVBFTkRFTkNJRVMpCisJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjaworCiskKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQorCSQoYW1fX2NkKSAkKHNyY2RpcikgJiYgJChBVVRPQ09ORikKKyQoQUNMT0NBTF9NNCk6ICAkKGFtX19hY2xvY2FsX200X2RlcHMpCisJJChhbV9fY2QpICQoc3JjZGlyKSAmJiAkKEFDTE9DQUwpICQoQUNMT0NBTF9BTUZMQUdTKQorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKKworY2xlYW4tbm9pbnN0TElCUkFSSUVTOgorCS10ZXN0IC16ICIkKG5vaW5zdF9MSUJSQVJJRVMpIiB8fCBybSAtZiAkKG5vaW5zdF9MSUJSQVJJRVMpCitsaWJtb2R0b29scy5hOiAkKGxpYm1vZHRvb2xzX2FfT0JKRUNUUykgJChsaWJtb2R0b29sc19hX0RFUEVOREVOQ0lFUykgCisJLXJtIC1mIGxpYm1vZHRvb2xzLmEKKwkkKGxpYm1vZHRvb2xzX2FfQVIpIGxpYm1vZHRvb2xzLmEgJChsaWJtb2R0b29sc19hX09CSkVDVFMpICQobGlibW9kdG9vbHNfYV9MSUJBREQpCisJJChSQU5MSUIpIGxpYm1vZHRvb2xzLmEKK2luc3RhbGwtYmluUFJPR1JBTVM6ICQoYmluX1BST0dSQU1TKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQoYmluZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQoYmluZGlyKSIKKwlAbGlzdD0nJChiaW5fUFJPR1JBTVMpJzsgdGVzdCAtbiAiJChiaW5kaXIpIiB8fCBsaXN0PTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwICQkcCI7IGRvbmUgfCBcCisJc2VkICdzLyQoRVhFRVhUKSQkLy8nIHwgXAorCXdoaWxlIHJlYWQgcCBwMTsgZG8gaWYgdGVzdCAtZiAkJHA7IFwKKwkgIHRoZW4gZWNobyAiJCRwIjsgZWNobyAiJCRwIjsgZWxzZSA6OyBmaTsgXAorCWRvbmUgfCBcCisJc2VkIC1lICdwO3MsLiovLCw7bjtoJyAtZSAnc3wuKnwufCcgXAorCSAgICAtZSAncDt4O3MsLiovLCw7cy8kKEVYRUVYVCkkJC8vOyQodHJhbnNmb3JtKTtzLyQkLyQoRVhFRVhUKS8nIHwgXAorCXNlZCAnTjtOO047cyxcbiwgLGcnIHwgXAorCSQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiI7IGRpcnNbIi4iXSA9IDEgfSBcCisJICB7IGQ9JCQzOyBpZiAoZGlyc1tkXSAhPSAxKSB7IHByaW50ICJkIiwgZDsgZGlyc1tkXSA9IDEgfSBcCisJICAgIGlmICgkJDIgPT0gJCQ0KSBmaWxlc1tkXSA9IGZpbGVzW2RdICIgIiAkJDE7IFwKKwkgICAgZWxzZSB7IHByaW50ICJmIiwgJCQzICIvIiAkJDQsICQkMTsgfSB9IFwKKwkgIEVORCB7IGZvciAoZCBpbiBmaWxlcykgcHJpbnQgImYiLCBkLCBmaWxlc1tkXSB9JyB8IFwKKwl3aGlsZSByZWFkIHR5cGUgZGlyIGZpbGVzOyBkbyBcCisJICAgIGlmIHRlc3QgIiQkZGlyIiA9IC47IHRoZW4gZGlyPTsgZWxzZSBkaXI9LyQkZGlyOyBmaTsgXAorCSAgICB0ZXN0IC16ICIkJGZpbGVzIiB8fCB7IFwKKwkgICAgICBlY2hvICIgJChJTlNUQUxMX1BST0dSQU1fRU5WKSAkKElOU1RBTExfUFJPR1JBTSkgJCRmaWxlcyAnJChERVNURElSKSQoYmluZGlyKSQkZGlyJyI7IFwKKwkgICAgICAkKElOU1RBTExfUFJPR1JBTV9FTlYpICQoSU5TVEFMTF9QUk9HUkFNKSAkJGZpbGVzICIkKERFU1RESVIpJChiaW5kaXIpJCRkaXIiIHx8IGV4aXQgJCQ/OyBcCisJICAgIH0gXAorCTsgZG9uZQorCit1bmluc3RhbGwtYmluUFJPR1JBTVM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChiaW5fUFJPR1JBTVMpJzsgdGVzdCAtbiAiJChiaW5kaXIpIiB8fCBsaXN0PTsgXAorCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBcCisJICBzZWQgLWUgJ2g7cyxeLiovLCw7cy8kKEVYRUVYVCkkJC8vOyQodHJhbnNmb3JtKScgXAorCSAgICAgIC1lICdzLyQkLyQoRVhFRVhUKS8nIGA7IFwKKwl0ZXN0IC1uICIkJGxpc3QiIHx8IGV4aXQgMDsgXAorCWVjaG8gIiAoIGNkICckKERFU1RESVIpJChiaW5kaXIpJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKwljZCAiJChERVNURElSKSQoYmluZGlyKSIgJiYgcm0gLWYgJCRmaWxlcworCitjbGVhbi1iaW5QUk9HUkFNUzoKKwktdGVzdCAteiAiJChiaW5fUFJPR1JBTVMpIiB8fCBybSAtZiAkKGJpbl9QUk9HUkFNUykKKworY2xlYW4tbm9pbnN0UFJPR1JBTVM6CisJLXRlc3QgLXogIiQobm9pbnN0X1BST0dSQU1TKSIgfHwgcm0gLWYgJChub2luc3RfUFJPR1JBTVMpCitpbnN0YWxsLXNiaW5QUk9HUkFNUzogJChzYmluX1BST0dSQU1TKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQoc2JpbmRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKHNiaW5kaXIpIgorCUBsaXN0PSckKHNiaW5fUFJPR1JBTVMpJzsgdGVzdCAtbiAiJChzYmluZGlyKSIgfHwgbGlzdD07IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAorCXNlZCAncy8kKEVYRUVYVCkkJC8vJyB8IFwKKwl3aGlsZSByZWFkIHAgcDE7IGRvIGlmIHRlc3QgLWYgJCRwOyBcCisJICB0aGVuIGVjaG8gIiQkcCI7IGVjaG8gIiQkcCI7IGVsc2UgOjsgZmk7IFwKKwlkb25lIHwgXAorCXNlZCAtZSAncDtzLC4qLywsO247aCcgLWUgJ3N8Lip8LnwnIFwKKwkgICAgLWUgJ3A7eDtzLC4qLywsO3MvJChFWEVFWFQpJCQvLzskKHRyYW5zZm9ybSk7cy8kJC8kKEVYRUVYVCkvJyB8IFwKKwlzZWQgJ047TjtOO3MsXG4sICxnJyB8IFwKKwkkKEFXSykgJ0JFR0lOIHsgZmlsZXNbIi4iXSA9ICIiOyBkaXJzWyIuIl0gPSAxIH0gXAorCSAgeyBkPSQkMzsgaWYgKGRpcnNbZF0gIT0gMSkgeyBwcmludCAiZCIsIGQ7IGRpcnNbZF0gPSAxIH0gXAorCSAgICBpZiAoJCQyID09ICQkNCkgZmlsZXNbZF0gPSBmaWxlc1tkXSAiICIgJCQxOyBcCisJICAgIGVsc2UgeyBwcmludCAiZiIsICQkMyAiLyIgJCQ0LCAkJDE7IH0gfSBcCisJICBFTkQgeyBmb3IgKGQgaW4gZmlsZXMpIHByaW50ICJmIiwgZCwgZmlsZXNbZF0gfScgfCBcCisJd2hpbGUgcmVhZCB0eXBlIGRpciBmaWxlczsgZG8gXAorCSAgICBpZiB0ZXN0ICIkJGRpciIgPSAuOyB0aGVuIGRpcj07IGVsc2UgZGlyPS8kJGRpcjsgZmk7IFwKKwkgICAgdGVzdCAteiAiJCRmaWxlcyIgfHwgeyBcCisJICAgICAgZWNobyAiICQoSU5TVEFMTF9QUk9HUkFNX0VOVikgJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZXMgJyQoREVTVERJUikkKHNiaW5kaXIpJCRkaXInIjsgXAorCSAgICAgICQoSU5TVEFMTF9QUk9HUkFNX0VOVikgJChJTlNUQUxMX1BST0dSQU0pICQkZmlsZXMgIiQoREVTVERJUikkKHNiaW5kaXIpJCRkaXIiIHx8IGV4aXQgJCQ/OyBcCisJICAgIH0gXAorCTsgZG9uZQorCit1bmluc3RhbGwtc2JpblBST0dSQU1TOgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9JyQoc2Jpbl9QUk9HUkFNUyknOyB0ZXN0IC1uICIkKHNiaW5kaXIpIiB8fCBsaXN0PTsgXAorCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBcCisJICBzZWQgLWUgJ2g7cyxeLiovLCw7cy8kKEVYRUVYVCkkJC8vOyQodHJhbnNmb3JtKScgXAorCSAgICAgIC1lICdzLyQkLyQoRVhFRVhUKS8nIGA7IFwKKwl0ZXN0IC1uICIkJGxpc3QiIHx8IGV4aXQgMDsgXAorCWVjaG8gIiAoIGNkICckKERFU1RESVIpJChzYmluZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisJY2QgIiQoREVTVERJUikkKHNiaW5kaXIpIiAmJiBybSAtZiAkJGZpbGVzCisKK2NsZWFuLXNiaW5QUk9HUkFNUzoKKwktdGVzdCAteiAiJChzYmluX1BST0dSQU1TKSIgfHwgcm0gLWYgJChzYmluX1BST0dSQU1TKQorZGVwbW9kJChFWEVFWFQpOiAkKGRlcG1vZF9PQkpFQ1RTKSAkKGRlcG1vZF9ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBkZXBtb2QkKEVYRUVYVCkKKwkkKExJTkspICQoZGVwbW9kX09CSkVDVFMpICQoZGVwbW9kX0xEQUREKSAkKExJQlMpCitpbnNtb2QkKEVYRUVYVCk6ICQoaW5zbW9kX09CSkVDVFMpICQoaW5zbW9kX0RFUEVOREVOQ0lFUykgCisJQHJtIC1mIGluc21vZCQoRVhFRVhUKQorCSQoTElOSykgJChpbnNtb2RfT0JKRUNUUykgJChpbnNtb2RfTERBREQpICQoTElCUykKK2luc21vZC5zdGF0aWMkKEVYRUVYVCk6ICQoaW5zbW9kX3N0YXRpY19PQkpFQ1RTKSAkKGluc21vZF9zdGF0aWNfREVQRU5ERU5DSUVTKSAKKwlAcm0gLWYgaW5zbW9kLnN0YXRpYyQoRVhFRVhUKQorCSQoaW5zbW9kX3N0YXRpY19MSU5LKSAkKGluc21vZF9zdGF0aWNfT0JKRUNUUykgJChpbnNtb2Rfc3RhdGljX0xEQUREKSAkKExJQlMpCitsc21vZCQoRVhFRVhUKTogJChsc21vZF9PQkpFQ1RTKSAkKGxzbW9kX0RFUEVOREVOQ0lFUykgCisJQHJtIC1mIGxzbW9kJChFWEVFWFQpCisJJChMSU5LKSAkKGxzbW9kX09CSkVDVFMpICQobHNtb2RfTERBREQpICQoTElCUykKK21vZGluZGV4JChFWEVFWFQpOiAkKG1vZGluZGV4X09CSkVDVFMpICQobW9kaW5kZXhfREVQRU5ERU5DSUVTKSAKKwlAcm0gLWYgbW9kaW5kZXgkKEVYRUVYVCkKKwkkKExJTkspICQobW9kaW5kZXhfT0JKRUNUUykgJChtb2RpbmRleF9MREFERCkgJChMSUJTKQorbW9kaW5mbyQoRVhFRVhUKTogJChtb2RpbmZvX09CSkVDVFMpICQobW9kaW5mb19ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBtb2RpbmZvJChFWEVFWFQpCisJJChMSU5LKSAkKG1vZGluZm9fT0JKRUNUUykgJChtb2RpbmZvX0xEQUREKSAkKExJQlMpCittb2Rwcm9iZSQoRVhFRVhUKTogJChtb2Rwcm9iZV9PQkpFQ1RTKSAkKG1vZHByb2JlX0RFUEVOREVOQ0lFUykgCisJQHJtIC1mIG1vZHByb2JlJChFWEVFWFQpCisJJChMSU5LKSAkKG1vZHByb2JlX09CSkVDVFMpICQobW9kcHJvYmVfTERBREQpICQoTElCUykKK3JtbW9kJChFWEVFWFQpOiAkKHJtbW9kX09CSkVDVFMpICQocm1tb2RfREVQRU5ERU5DSUVTKSAKKwlAcm0gLWYgcm1tb2QkKEVYRUVYVCkKKwkkKExJTkspICQocm1tb2RfT0JKRUNUUykgJChybW1vZF9MREFERCkgJChMSUJTKQorCittb3N0bHljbGVhbi1jb21waWxlOgorCS1ybSAtZiAqLiQoT0JKRVhUKQorCitkaXN0Y2xlYW4tY29tcGlsZToKKwktcm0gLWYgKi50YWIuYworCitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZGVwbW9kLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9pbnNtb2QuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGlibW9kdG9vbHNfYS1lbGZvcHMuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYm1vZHRvb2xzX2EtZWxmb3BzX2NvcmUuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYm1vZHRvb2xzX2EtaW5kZXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYm1vZHRvb2xzX2EtbG9nZ2luZy5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGlibW9kdG9vbHNfYS11dGlsLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9sc21vZC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbW9kaW5kZXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL21vZGluZm8uUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL21vZHByb2JlLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9ybW1vZC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvdGFibGVzLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS96bGlic3VwcG9ydC5Qb0BhbV9fcXVvdGVACisKKy5jLm86CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJCouVHBvIC1jIC1vICRAICQ8CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJChERVBESVIpLyQqLlRwbyAkKERFUERJUikvJCouUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENPTVBJTEUpIC1jICQ8CisKKy5jLm9iajoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKi5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS8kKi5UcG8gJChERVBESVIpLyQqLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDT01QSUxFKSAtYyBgJChDWUdQQVRIX1cpICckPCdgCisKK2xpYm1vZHRvb2xzX2EtdXRpbC5vOiB1dGlsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYm1vZHRvb2xzX2EtdXRpbC5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtdXRpbC5vIGB0ZXN0IC1mICd1dGlsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHV0aWwuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuVHBvICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J3V0aWwuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLXV0aWwubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJtb2R0b29sc19hLXV0aWwubyBgdGVzdCAtZiAndXRpbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B1dGlsLmMKKworbGlibW9kdG9vbHNfYS11dGlsLm9iajogdXRpbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLXV0aWwub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtdXRpbC5vYmogYGlmIHRlc3QgLWYgJ3V0aWwuYyc7IHRoZW4gJChDWUdQQVRIX1cpICd1dGlsLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3V0aWwuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuVHBvICQoREVQRElSKS9saWJtb2R0b29sc19hLXV0aWwuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J3V0aWwuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLXV0aWwub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYm1vZHRvb2xzX2EtdXRpbC5vYmogYGlmIHRlc3QgLWYgJ3V0aWwuYyc7IHRoZW4gJChDWUdQQVRIX1cpICd1dGlsLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL3V0aWwuYyc7IGZpYAorCitsaWJtb2R0b29sc19hLWxvZ2dpbmcubzogbG9nZ2luZy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWxvZ2dpbmcubyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlRwbyAtYyAtbyBsaWJtb2R0b29sc19hLWxvZ2dpbmcubyBgdGVzdCAtZiAnbG9nZ2luZy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bsb2dnaW5nLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSdsb2dnaW5nLmMnIG9iamVjdD0nbGlibW9kdG9vbHNfYS1sb2dnaW5nLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlibW9kdG9vbHNfYS1sb2dnaW5nLm8gYHRlc3QgLWYgJ2xvZ2dpbmcuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbG9nZ2luZy5jCisKK2xpYm1vZHRvb2xzX2EtbG9nZ2luZy5vYmo6IGxvZ2dpbmcuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlibW9kdG9vbHNfYS1sb2dnaW5nLm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlRwbyAtYyAtbyBsaWJtb2R0b29sc19hLWxvZ2dpbmcub2JqIGBpZiB0ZXN0IC1mICdsb2dnaW5nLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbG9nZ2luZy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9sb2dnaW5nLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1sb2dnaW5nLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSdsb2dnaW5nLmMnIG9iamVjdD0nbGlibW9kdG9vbHNfYS1sb2dnaW5nLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJtb2R0b29sc19hLWxvZ2dpbmcub2JqIGBpZiB0ZXN0IC1mICdsb2dnaW5nLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbG9nZ2luZy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9sb2dnaW5nLmMnOyBmaWAKKworbGlibW9kdG9vbHNfYS1pbmRleC5vOiBpbmRleC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWluZGV4Lm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYm1vZHRvb2xzX2EtaW5kZXguVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtaW5kZXgubyBgdGVzdCAtZiAnaW5kZXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgaW5kZXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWluZGV4LlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1pbmRleC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0naW5kZXguYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWluZGV4Lm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlibW9kdG9vbHNfYS1pbmRleC5vIGB0ZXN0IC1mICdpbmRleC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BpbmRleC5jCisKK2xpYm1vZHRvb2xzX2EtaW5kZXgub2JqOiBpbmRleC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWluZGV4Lm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlibW9kdG9vbHNfYS1pbmRleC5UcG8gLWMgLW8gbGlibW9kdG9vbHNfYS1pbmRleC5vYmogYGlmIHRlc3QgLWYgJ2luZGV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnaW5kZXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvaW5kZXguYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWluZGV4LlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1pbmRleC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0naW5kZXguYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWluZGV4Lm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJtb2R0b29sc19hLWluZGV4Lm9iaiBgaWYgdGVzdCAtZiAnaW5kZXguYyc7IHRoZW4gJChDWUdQQVRIX1cpICdpbmRleC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9pbmRleC5jJzsgZmlgCisKK2xpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5vOiBjb25maWdfZmlsdGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5vIGB0ZXN0IC1mICdjb25maWdfZmlsdGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGNvbmZpZ19maWx0ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuVHBvICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J2NvbmZpZ19maWx0ZXIuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIubyBgdGVzdCAtZiAnY29uZmlnX2ZpbHRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bjb25maWdfZmlsdGVyLmMKKworbGlibW9kdG9vbHNfYS1jb25maWdfZmlsdGVyLm9iajogY29uZmlnX2ZpbHRlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5vYmogYGlmIHRlc3QgLWYgJ2NvbmZpZ19maWx0ZXIuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdjb25maWdfZmlsdGVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2NvbmZpZ19maWx0ZXIuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuVHBvICQoREVQRElSKS9saWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlzb3VyY2U9J2NvbmZpZ19maWx0ZXIuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWNvbmZpZ19maWx0ZXIub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYm1vZHRvb2xzX2EtY29uZmlnX2ZpbHRlci5vYmogYGlmIHRlc3QgLWYgJ2NvbmZpZ19maWx0ZXIuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdjb25maWdfZmlsdGVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2NvbmZpZ19maWx0ZXIuYyc7IGZpYAorCitsaWJtb2R0b29sc19hLWVsZm9wcy5vOiBlbGZvcHMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlibW9kdG9vbHNfYS1lbGZvcHMubyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlibW9kdG9vbHNfYS1lbGZvcHMuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtZWxmb3BzLm8gYHRlc3QgLWYgJ2VsZm9wcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGZvcHMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWVsZm9wcy5UcG8gJChERVBESVIpL2xpYm1vZHRvb2xzX2EtZWxmb3BzLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSdlbGZvcHMuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWVsZm9wcy5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYm1vZHRvb2xzX2EtZWxmb3BzLm8gYHRlc3QgLWYgJ2VsZm9wcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGZvcHMuYworCitsaWJtb2R0b29sc19hLWVsZm9wcy5vYmo6IGVsZm9wcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWVsZm9wcy5vYmogLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYm1vZHRvb2xzX2EtZWxmb3BzLlRwbyAtYyAtbyBsaWJtb2R0b29sc19hLWVsZm9wcy5vYmogYGlmIHRlc3QgLWYgJ2VsZm9wcy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZm9wcy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGZvcHMuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWVsZm9wcy5UcG8gJChERVBESVIpL2xpYm1vZHRvb2xzX2EtZWxmb3BzLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJc291cmNlPSdlbGZvcHMuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWVsZm9wcy5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlibW9kdG9vbHNfYS1lbGZvcHMub2JqIGBpZiB0ZXN0IC1mICdlbGZvcHMuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGZvcHMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxmb3BzLmMnOyBmaWAKKworbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5vOiBlbGZvcHNfY29yZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWVsZm9wc19jb3JlLm8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYm1vZHRvb2xzX2EtZWxmb3BzX2NvcmUuVHBvIC1jIC1vIGxpYm1vZHRvb2xzX2EtZWxmb3BzX2NvcmUubyBgdGVzdCAtZiAnZWxmb3BzX2NvcmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxmb3BzX2NvcmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWVsZm9wc19jb3JlLlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nZWxmb3BzX2NvcmUuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWVsZm9wc19jb3JlLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYm1vZHRvb2xzX2FfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5vIGB0ZXN0IC1mICdlbGZvcHNfY29yZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGZvcHNfY29yZS5jCisKK2xpYm1vZHRvb2xzX2EtZWxmb3BzX2NvcmUub2JqOiBlbGZvcHNfY29yZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJtb2R0b29sc19hX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJtb2R0b29sc19hLWVsZm9wc19jb3JlLm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5UcG8gLWMgLW8gbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5vYmogYGlmIHRlc3QgLWYgJ2VsZm9wc19jb3JlLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxmb3BzX2NvcmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxmb3BzX2NvcmUuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQoREVQRElSKS9saWJtb2R0b29sc19hLWVsZm9wc19jb3JlLlRwbyAkKERFUERJUikvbGlibW9kdG9vbHNfYS1lbGZvcHNfY29yZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACXNvdXJjZT0nZWxmb3BzX2NvcmUuYycgb2JqZWN0PSdsaWJtb2R0b29sc19hLWVsZm9wc19jb3JlLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlibW9kdG9vbHNfYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJtb2R0b29sc19hLWVsZm9wc19jb3JlLm9iaiBgaWYgdGVzdCAtZiAnZWxmb3BzX2NvcmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGZvcHNfY29yZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGZvcHNfY29yZS5jJzsgZmlgCitpbnN0YWxsLW1hbjU6ICQoZGlzdF9tYW5fTUFOUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwl0ZXN0IC16ICIkKG1hbjVkaXIpIiB8fCAkKE1LRElSX1ApICIkKERFU1RESVIpJChtYW41ZGlyKSIKKwlAbGlzdD0nJzsgdGVzdCAtbiAiJChtYW41ZGlyKSIgfHwgZXhpdCAwOyBcCisJeyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkaSI7IGRvbmU7IFwKKwlsMj0nJChkaXN0X21hbl9NQU5TKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCisJICBzZWQgLW4gJy9cLjVbYS16XSokJC9wJzsgXAorCX0gfCB3aGlsZSByZWFkIHA7IGRvIFwKKwkgIGlmIHRlc3QgLWYgJCRwOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgZWNobyAiJCRwIjsgXAorCWRvbmUgfCBcCisJc2VkIC1lICduO3MsLiovLCw7cDtoO3MsLipcLiwsO3MsXlteNV1bMC05YS16XSokJCw1LDt4JyBcCisJICAgICAgLWUgJ3MsXC5bMC05YS16XSokJCwsOyQodHJhbnNmb3JtKTtHO3MsXG4sLiwnIHwgXAorCXNlZCAnTjtOO3MsXG4sICxnJyB8IHsgXAorCWxpc3Q9OyB3aGlsZSByZWFkIGZpbGUgYmFzZSBpbnN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJGJhc2UiID0gIiQkaW5zdCI7IHRoZW4gbGlzdD0iJCRsaXN0ICQkZmlsZSI7IGVsc2UgXAorCSAgICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICckJGZpbGUnICckKERFU1RESVIpJChtYW41ZGlyKS8kJGluc3QnIjsgXAorCSAgICAkKElOU1RBTExfREFUQSkgIiQkZmlsZSIgIiQoREVTVERJUikkKG1hbjVkaXIpLyQkaW5zdCIgfHwgZXhpdCAkJD87IFwKKwkgIGZpOyBcCisJZG9uZTsgXAorCWZvciBpIGluICQkbGlzdDsgZG8gZWNobyAiJCRpIjsgZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgdGVzdCAteiAiJCRmaWxlcyIgfHwgeyBcCisJICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQobWFuNWRpciknIjsgXAorCSAgICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQobWFuNWRpcikiIHx8IGV4aXQgJCQ/OyB9OyBcCisJZG9uZTsgfQorCit1bmluc3RhbGwtbWFuNToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PScnOyB0ZXN0IC1uICIkKG1hbjVkaXIpIiB8fCBleGl0IDA7IFwKKwlmaWxlcz1geyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkaSI7IGRvbmU7IFwKKwlsMj0nJChkaXN0X21hbl9NQU5TKSc7IGZvciBpIGluICQkbDI7IGRvIGVjaG8gIiQkaSI7IGRvbmUgfCBcCisJICBzZWQgLW4gJy9cLjVbYS16XSokJC9wJzsgXAorCX0gfCBzZWQgLWUgJ3MsLiovLCw7aDtzLC4qXC4sLDtzLF5bXjVdWzAtOWEtel0qJCQsNSw7eCcgXAorCSAgICAgIC1lICdzLFwuWzAtOWEtel0qJCQsLDskKHRyYW5zZm9ybSk7RztzLFxuLC4sJ2A7IFwKKwl0ZXN0IC16ICIkJGZpbGVzIiB8fCB7IFwKKwkgIGVjaG8gIiAoIGNkICckKERFU1RESVIpJChtYW41ZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisJICBjZCAiJChERVNURElSKSQobWFuNWRpcikiICYmIHJtIC1mICQkZmlsZXM7IH0KK2luc3RhbGwtbWFuODogJChkaXN0X21hbl9NQU5TKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCXRlc3QgLXogIiQobWFuOGRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKG1hbjhkaXIpIgorCUBsaXN0PScnOyB0ZXN0IC1uICIkKG1hbjhkaXIpIiB8fCBleGl0IDA7IFwKKwl7IGZvciBpIGluICQkbGlzdDsgZG8gZWNobyAiJCRpIjsgZG9uZTsgXAorCWwyPSckKGRpc3RfbWFuX01BTlMpJzsgZm9yIGkgaW4gJCRsMjsgZG8gZWNobyAiJCRpIjsgZG9uZSB8IFwKKwkgIHNlZCAtbiAnL1wuOFthLXpdKiQkL3AnOyBcCisJfSB8IHdoaWxlIHJlYWQgcDsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBlY2hvICIkJHAiOyBcCisJZG9uZSB8IFwKKwlzZWQgLWUgJ247cywuKi8sLDtwO2g7cywuKlwuLCw7cyxeW144XVswLTlhLXpdKiQkLDgsO3gnIFwKKwkgICAgICAtZSAncyxcLlswLTlhLXpdKiQkLCw7JCh0cmFuc2Zvcm0pO0c7cyxcbiwuLCcgfCBcCisJc2VkICdOO047cyxcbiwgLGcnIHwgeyBcCisJbGlzdD07IHdoaWxlIHJlYWQgZmlsZSBiYXNlIGluc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkYmFzZSIgPSAiJCRpbnN0IjsgdGhlbiBsaXN0PSIkJGxpc3QgJCRmaWxlIjsgZWxzZSBcCisJICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZmlsZScgJyQoREVTVERJUikkKG1hbjhkaXIpLyQkaW5zdCciOyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAiJCRmaWxlIiAiJChERVNURElSKSQobWFuOGRpcikvJCRpbnN0IiB8fCBleGl0ICQkPzsgXAorCSAgZmk7IFwKKwlkb25lOyBcCisJZm9yIGkgaW4gJCRsaXN0OyBkbyBlY2hvICIkJGkiOyBkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICB0ZXN0IC16ICIkJGZpbGVzIiB8fCB7IFwKKwkgICAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICckKERFU1RESVIpJChtYW44ZGlyKSciOyBcCisJICAgICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICIkKERFU1RESVIpJChtYW44ZGlyKSIgfHwgZXhpdCAkJD87IH07IFwKKwlkb25lOyB9CisKK3VuaW5zdGFsbC1tYW44OgorCUAkKE5PUk1BTF9VTklOU1RBTEwpCisJQGxpc3Q9Jyc7IHRlc3QgLW4gIiQobWFuOGRpcikiIHx8IGV4aXQgMDsgXAorCWZpbGVzPWB7IGZvciBpIGluICQkbGlzdDsgZG8gZWNobyAiJCRpIjsgZG9uZTsgXAorCWwyPSckKGRpc3RfbWFuX01BTlMpJzsgZm9yIGkgaW4gJCRsMjsgZG8gZWNobyAiJCRpIjsgZG9uZSB8IFwKKwkgIHNlZCAtbiAnL1wuOFthLXpdKiQkL3AnOyBcCisJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteOF1bMC05YS16XSokJCw4LDt4JyBcCisJICAgICAgLWUgJ3MsXC5bMC05YS16XSokJCwsOyQodHJhbnNmb3JtKTtHO3MsXG4sLiwnYDsgXAorCXRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAorCSAgZWNobyAiICggY2QgJyQoREVTVERJUikkKG1hbjhkaXIpJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKKwkgIGNkICIkKERFU1RESVIpJChtYW44ZGlyKSIgJiYgcm0gLWYgJCRmaWxlczsgfQorCitJRDogJChIRUFERVJTKSAkKFNPVVJDRVMpICQoTElTUCkgJChUQUdTX0ZJTEVTKQorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAkKExJU1ApICQoVEFHU19GSUxFUyknOyBcCisJdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCisJICBkb25lIHwgXAorCSAgJChBV0spICd7IGZpbGVzWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAorCSAgICAgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gZmlsZXMpIHByaW50IGk7IH07IH0nYDsgXAorCW1raWQgLWZJRCAkJHVuaXF1ZQordGFnczogVEFHUworCitUQUdTOiAgJChIRUFERVJTKSAkKFNPVVJDRVMpICAkKFRBR1NfREVQRU5ERU5DSUVTKSBcCisJCSQoVEFHU19GSUxFUykgJChMSVNQKQorCXNldCB4OyBcCisJaGVyZT1gcHdkYDsgXAorCWxpc3Q9JyQoU09VUkNFUykgJChIRUFERVJTKSAgJChMSVNQKSAkKFRBR1NfRklMRVMpJzsgXAorCXVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAorCSAgZG9uZSB8IFwKKwkgICQoQVdLKSAneyBmaWxlc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKKwkgICAgICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGZpbGVzKSBwcmludCBpOyB9OyB9J2A7IFwKKwlzaGlmdDsgXAorCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCisJICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCisJICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAorCSAgZWxzZSBcCisJICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKKwkgICAgICAkJHVuaXF1ZTsgXAorCSAgZmk7IFwKKwlmaQorY3RhZ3M6IENUQUdTCitDVEFHUzogICQoSEVBREVSUykgJChTT1VSQ0VTKSAgJChUQUdTX0RFUEVOREVOQ0lFUykgXAorCQkkKFRBR1NfRklMRVMpICQoTElTUCkKKwlsaXN0PSckKFNPVVJDRVMpICQoSEVBREVSUykgICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKKwl1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAorCSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKwkgIGRvbmUgfCBcCisJICAkKEFXSykgJ3sgZmlsZXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisJICAgICAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBmaWxlcykgcHJpbnQgaTsgfTsgfSdgOyBcCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdW5pcXVlIiBcCisJICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCisJICAgICAkJHVuaXF1ZQorCitHVEFHUzoKKwloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAorCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAorCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgorCitkaXN0Y2xlYW4tdGFnczoKKwktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncworCitkaXN0ZGlyOiAkKERJU1RGSUxFUykKKwlAbGlzdD0nJChNQU5TKSc7IGlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgbGlzdD1gZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICAgIGlmIHRlc3QgLWYgJCRwOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgICBpZiB0ZXN0IC1mICIkJGQkJHAiOyB0aGVuIGVjaG8gIiQkZCQkcCI7IGVsc2UgOjsgZmk7IGRvbmVgOyBcCisJICBpZiB0ZXN0IC1uICIkJGxpc3QiICYmIFwKKwkgICAgZ3JlcCAnYWIgaGVscDJtYW4gaXMgcmVxdWlyZWQgdG8gZ2VuZXJhdGUgdGhpcyBwYWdlJyAkJGxpc3QgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgIGVjaG8gImVycm9yOiBmb3VuZCBtYW4gcGFnZXMgY29udGFpbmluZyB0aGUgXGBtaXNzaW5nIGhlbHAybWFuJyByZXBsYWNlbWVudCB0ZXh0OiIgPiYyOyBcCisJICAgIGdyZXAgLWwgJ2FiIGhlbHAybWFuIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoaXMgcGFnZScgJCRsaXN0IHwgc2VkICdzL14vICAgICAgICAgLycgPiYyOyBcCisJICAgIGVjaG8gIiAgICAgICB0byBmaXggdGhlbSwgaW5zdGFsbCBoZWxwMm1hbiwgcmVtb3ZlIGFuZCByZWdlbmVyYXRlIHRoZSBtYW4gcGFnZXM7IiA+JjI7IFwKKwkgICAgZWNobyAiICAgICAgIHR5cGljYWxseSBcYG1ha2UgbWFpbnRhaW5lci1jbGVhbicgd2lsbCByZW1vdmUgdGhlbSIgPiYyOyBcCisJICAgIGV4aXQgMTsgXAorCSAgZWxzZSA6OyBmaTsgXAorCWVsc2UgOjsgZmkKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKwl0ZXN0IC1kICIkKGRpc3RkaXIpIiB8fCBta2RpciAiJChkaXN0ZGlyKSIKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKKwkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCisJICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAorCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKwljYXNlICQkZGlzdF9maWxlcyBpbiBcCisJICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCisJCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCisJCQkgICBzb3J0IC11YCA7OyBcCisJZXNhYzsgXAorCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKwkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKKwkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCisJICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwktdGVzdCAtbiAiJChhbV9fc2tpcF9tb2RlX2ZpeCkiIFwKKwl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc1NSBcCisJCS1leGVjIGNobW9kIHUrcnd4LGdvK3J4IHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWxpbmtzIDEgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00MDAgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKKwkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWV4ZWMgJChpbnN0YWxsX3NoKSAtYyAtbSBhK3Ige30ge30gXDsgXAorCXx8IGNobW9kIC1SIGErciAiJChkaXN0ZGlyKSIKK2Rpc3QtZ3ppcDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRpcikudGFyLmd6CisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisKK2Rpc3QtYnppcDI6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgYnppcDIgLTkgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LWx6bWE6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgbHptYSAtOSAtYyA+JChkaXN0ZGlyKS50YXIubHptYQorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LXh6OiBkaXN0ZGlyCisJdGFyZGlyPSQoZGlzdGRpcikgJiYgJChhbV9fdGFyKSB8IHh6IC1jID4kKGRpc3RkaXIpLnRhci54egorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LXRhclo6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgY29tcHJlc3MgLWMgPiQoZGlzdGRpcikudGFyLloKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC1zaGFyOiBkaXN0ZGlyCisJc2hhciAkKGRpc3RkaXIpIHwgR1pJUD0kKEdaSVBfRU5WKSBnemlwIC1jID4kKGRpc3RkaXIpLnNoYXIuZ3oKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdC16aXA6IGRpc3RkaXIKKwktcm0gLWYgJChkaXN0ZGlyKS56aXAKKwl6aXAgLXJxICQoZGlzdGRpcikuemlwICQoZGlzdGRpcikKKwkkKGFtX19yZW1vdmVfZGlzdGRpcikKKworZGlzdCBkaXN0LWFsbDogZGlzdGRpcgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWMgPiQoZGlzdGRpcikudGFyLmd6CisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisKKyMgVGhpcyB0YXJnZXQgdW50YXJzIHRoZSBkaXN0IGZpbGUgYW5kIHRyaWVzIGEgVlBBVEggY29uZmlndXJhdGlvbi4gIFRoZW4KKyMgaXQgZ3VhcmFudGVlcyB0aGF0IHRoZSBkaXN0cmlidXRpb24gaXMgc2VsZi1jb250YWluZWQgYnkgbWFraW5nIGFub3RoZXIKKyMgdGFyZmlsZS4KK2Rpc3RjaGVjazogZGlzdAorCWNhc2UgJyQoRElTVF9BUkNISVZFUyknIGluIFwKKwkqLnRhci5neiopIFwKKwkgIEdaSVA9JChHWklQX0VOVikgZ3ppcCAtZGMgJChkaXN0ZGlyKS50YXIuZ3ogfCAkKGFtX191bnRhcikgOztcCisJKi50YXIuYnoyKikgXAorCSAgYnppcDIgLWRjICQoZGlzdGRpcikudGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci5sem1hKikgXAorCSAgbHptYSAtZGMgJChkaXN0ZGlyKS50YXIubHptYSB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci54eiopIFwKKwkgIHh6IC1kYyAkKGRpc3RkaXIpLnRhci54eiB8ICQoYW1fX3VudGFyKSA7O1wKKwkqLnRhci5aKikgXAorCSAgdW5jb21wcmVzcyAtYyAkKGRpc3RkaXIpLnRhci5aIHwgJChhbV9fdW50YXIpIDs7XAorCSouc2hhci5neiopIFwKKwkgIEdaSVA9JChHWklQX0VOVikgZ3ppcCAtZGMgJChkaXN0ZGlyKS5zaGFyLmd6IHwgdW5zaGFyIDs7XAorCSouemlwKikgXAorCSAgdW56aXAgJChkaXN0ZGlyKS56aXAgOztcCisJZXNhYworCWNobW9kIC1SIGEtdyAkKGRpc3RkaXIpOyBjaG1vZCBhK3cgJChkaXN0ZGlyKQorCW1rZGlyICQoZGlzdGRpcikvX2J1aWxkCisJbWtkaXIgJChkaXN0ZGlyKS9faW5zdAorCWNobW9kIGEtdyAkKGRpc3RkaXIpCisJdGVzdCAtZCAkKGRpc3RkaXIpL19idWlsZCB8fCBleGl0IDA7IFwKKwlkY19pbnN0YWxsX2Jhc2U9YCQoYW1fX2NkKSAkKGRpc3RkaXIpL19pbnN0ICYmIHB3ZCB8IHNlZCAtZSAncyxeW146XFwvXTpbXFwvXSwvLCdgIFwKKwkgICYmIGRjX2Rlc3RkaXI9IiQke1RNUERJUi0vdG1wfS9hbS1kYy0kJCQkLyIgXAorCSAgJiYgYW1fX2N3ZD1gcHdkYCBcCisJICAmJiAkKGFtX19jZCkgJChkaXN0ZGlyKS9fYnVpbGQgXAorCSAgJiYgLi4vY29uZmlndXJlIC0tc3JjZGlyPS4uIC0tcHJlZml4PSIkJGRjX2luc3RhbGxfYmFzZSIgXAorCSAgICAkKERJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGR2aSBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBjaGVjayBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGxjaGVjayBcCisJICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSB1bmluc3RhbGwgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZGlzdHVuaW5zdGFsbGNoZWNrX2Rpcj0iJCRkY19pbnN0YWxsX2Jhc2UiIFwKKwkgICAgICAgIGRpc3R1bmluc3RhbGxjaGVjayBcCisJICAmJiBjaG1vZCAtUiBhLXcgIiQkZGNfaW5zdGFsbF9iYXNlIiBcCisJICAmJiAoeyBcCisJICAgICAgIChjZCAuLi8uLiAmJiB1bWFzayAwNzcgJiYgbWtkaXIgIiQkZGNfZGVzdGRpciIpIFwKKwkgICAgICAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgREVTVERJUj0iJCRkY19kZXN0ZGlyIiBpbnN0YWxsIFwKKwkgICAgICAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgREVTVERJUj0iJCRkY19kZXN0ZGlyIiB1bmluc3RhbGwgXAorCSAgICAgICAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBERVNURElSPSIkJGRjX2Rlc3RkaXIiIFwKKwkgICAgICAgICAgICBkaXN0dW5pbnN0YWxsY2hlY2tfZGlyPSIkJGRjX2Rlc3RkaXIiIGRpc3R1bmluc3RhbGxjaGVjazsgXAorCSAgICAgIH0gfHwgeyBybSAtcmYgIiQkZGNfZGVzdGRpciI7IGV4aXQgMTsgfSkgXAorCSAgJiYgcm0gLXJmICIkJGRjX2Rlc3RkaXIiIFwKKwkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGRpc3QgXAorCSAgJiYgcm0gLXJmICQoRElTVF9BUkNISVZFUykgXAorCSAgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgZGlzdGNsZWFuY2hlY2sgXAorCSAgJiYgY2QgIiQkYW1fX2N3ZCIgXAorCSAgfHwgZXhpdCAxCisJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCisJQChlY2hvICIkKGRpc3RkaXIpIGFyY2hpdmVzIHJlYWR5IGZvciBkaXN0cmlidXRpb246ICI7IFwKKwkgIGxpc3Q9JyQoRElTVF9BUkNISVZFUyknOyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRpOyBkb25lKSB8IFwKKwkgIHNlZCAtZSAxaCAtZSAxcy8uLz0vZyAtZSAxcCAtZSAxeCAtZSAnJCRwJyAtZSAnJCR4JworZGlzdHVuaW5zdGFsbGNoZWNrOgorCUAkKGFtX19jZCkgJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIFwKKwkmJiB0ZXN0IGAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1sZSAxIFwKKwkgICB8fCB7IGVjaG8gIkVSUk9SOiBmaWxlcyBsZWZ0IGFmdGVyIHVuaW5zdGFsbDoiIDsgXAorCSAgICAgICAgaWYgdGVzdCAtbiAiJChERVNURElSKSI7IHRoZW4gXAorCSAgICAgICAgICBlY2hvICIgIChjaGVjayBERVNURElSIHN1cHBvcnQpIjsgXAorCSAgICAgICAgZmkgOyBcCisJICAgICAgICAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIDsgXAorCSAgICAgICAgZXhpdCAxOyB9ID4mMgorZGlzdGNsZWFuY2hlY2s6IGRpc3RjbGVhbgorCUBpZiB0ZXN0ICckKHNyY2RpciknID0gLiA7IHRoZW4gXAorCSAgZWNobyAiRVJST1I6IGRpc3RjbGVhbmNoZWNrIGNhbiBvbmx5IHJ1biBmcm9tIGEgVlBBVEggYnVpbGQiIDsgXAorCSAgZXhpdCAxIDsgXAorCWZpCisJQHRlc3QgYCQoZGlzdGNsZWFuY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtZXEgMCBcCisJICB8fCB7IGVjaG8gIkVSUk9SOiBmaWxlcyBsZWZ0IGluIGJ1aWxkIGRpcmVjdG9yeSBhZnRlciBkaXN0Y2xlYW46IiA7IFwKKwkgICAgICAgJChkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMpIDsgXAorCSAgICAgICBleGl0IDE7IH0gPiYyCitjaGVjay1hbTogYWxsLWFtCitjaGVjazogY2hlY2stYW0KK2FsbC1hbTogTWFrZWZpbGUgJChMSUJSQVJJRVMpICQoUFJPR1JBTVMpICQoTUFOUykKK2luc3RhbGxkaXJzOgorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChzYmluZGlyKSIgIiQoREVTVERJUikkKG1hbjVkaXIpIiAiJChERVNURElSKSQobWFuOGRpcikiOyBkbyBcCisJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCisJZG9uZQoraW5zdGFsbDogaW5zdGFsbC1hbQoraW5zdGFsbC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0KK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtCit1bmluc3RhbGw6IHVuaW5zdGFsbC1hbQorCitpbnN0YWxsLWFtOiBhbGwtYW0KKwlAJChNQUtFKSAkKEFNX01BS0VGTEFHUykgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtZGF0YS1hbQorCitpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQoraW5zdGFsbC1zdHJpcDoKKwkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKKwkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKK21vc3RseWNsZWFuLWdlbmVyaWM6CisKK2NsZWFuLWdlbmVyaWM6CisKK2Rpc3RjbGVhbi1nZW5lcmljOgorCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorCS10ZXN0IC4gPSAiJChzcmNkaXIpIiB8fCB0ZXN0IC16ICIkKENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKQorCittYWludGFpbmVyLWNsZWFuLWdlbmVyaWM6CisJQGVjaG8gIlRoaXMgY29tbWFuZCBpcyBpbnRlbmRlZCBmb3IgbWFpbnRhaW5lcnMgdG8gdXNlIgorCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKKwktdGVzdCAteiAiJChNQUlOVEFJTkVSQ0xFQU5GSUxFUykiIHx8IHJtIC1mICQoTUFJTlRBSU5FUkNMRUFORklMRVMpCitjbGVhbjogY2xlYW4tYW0KKworY2xlYW4tYW06IGNsZWFuLWJpblBST0dSQU1TIGNsZWFuLWdlbmVyaWMgY2xlYW4tbm9pbnN0TElCUkFSSUVTIFwKKwljbGVhbi1ub2luc3RQUk9HUkFNUyBjbGVhbi1zYmluUFJPR1JBTVMgbW9zdGx5Y2xlYW4tYW0KKworZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KKwktcm0gLWYgJChhbV9fQ09ORklHX0RJU1RDTEVBTl9GSUxFUykKKwktcm0gLXJmIC4vJChERVBESVIpCisJLXJtIC1mIE1ha2VmaWxlCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4tbG9jYWwgZGlzdGNsZWFuLXRhZ3MKKworZHZpOiBkdmktYW0KKworZHZpLWFtOgorCitodG1sOiBodG1sLWFtCisKK2h0bWwtYW06CisKK2luZm86IGluZm8tYW0KKworaW5mby1hbToKKworaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLW1hbgorCitpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktYW0KKworaW5zdGFsbC1kdmktYW06CisKK2luc3RhbGwtZXhlYy1hbTogaW5zdGFsbC1iaW5QUk9HUkFNUyBpbnN0YWxsLXNiaW5QUk9HUkFNUworCitpbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQorCitpbnN0YWxsLWh0bWwtYW06CisKK2luc3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLWFtCisKK2luc3RhbGwtaW5mby1hbToKKworaW5zdGFsbC1tYW46IGluc3RhbGwtbWFuNSBpbnN0YWxsLW1hbjgKKworaW5zdGFsbC1wZGY6IGluc3RhbGwtcGRmLWFtCisKK2luc3RhbGwtcGRmLWFtOgorCitpbnN0YWxsLXBzOiBpbnN0YWxsLXBzLWFtCisKK2luc3RhbGwtcHMtYW06CisKK2luc3RhbGxjaGVjay1hbToKKworbWFpbnRhaW5lci1jbGVhbjogbWFpbnRhaW5lci1jbGVhbi1hbQorCS1ybSAtZiAkKGFtX19DT05GSUdfRElTVENMRUFOX0ZJTEVTKQorCS1ybSAtcmYgJCh0b3Bfc3JjZGlyKS9hdXRvbTR0ZS5jYWNoZQorCS1ybSAtcmYgLi8kKERFUERJUikKKwktcm0gLWYgTWFrZWZpbGUKK21haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMKKworbW9zdGx5Y2xlYW46IG1vc3RseWNsZWFuLWFtCisKK21vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMKKworcGRmOiBwZGYtYW0KKworcGRmLWFtOgorCitwczogcHMtYW0KKworcHMtYW06CisKK3VuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWJpblBST0dSQU1TIHVuaW5zdGFsbC1tYW4gXAorCXVuaW5zdGFsbC1zYmluUFJPR1JBTVMKKwordW5pbnN0YWxsLW1hbjogdW5pbnN0YWxsLW1hbjUgdW5pbnN0YWxsLW1hbjgKKworLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAorCisuUEhPTlk6IENUQUdTIEdUQUdTIGFsbCBhbGwtYW0gYW0tLXJlZnJlc2ggY2hlY2sgY2hlY2stYW0gY2xlYW4gXAorCWNsZWFuLWJpblBST0dSQU1TIGNsZWFuLWdlbmVyaWMgY2xlYW4tbm9pbnN0TElCUkFSSUVTIFwKKwljbGVhbi1ub2luc3RQUk9HUkFNUyBjbGVhbi1zYmluUFJPR1JBTVMgY3RhZ3MgZGlzdCBkaXN0LWFsbCBcCisJZGlzdC1iemlwMiBkaXN0LWd6aXAgZGlzdC1sem1hIGRpc3Qtc2hhciBkaXN0LXRhclogZGlzdC14eiBcCisJZGlzdC16aXAgZGlzdGNoZWNrIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBcCisJZGlzdGNsZWFuLWdlbmVyaWMgZGlzdGNsZWFuLWxvY2FsIGRpc3RjbGVhbi10YWdzIFwKKwlkaXN0Y2xlYW5jaGVjayBkaXN0ZGlyIGRpc3R1bmluc3RhbGxjaGVjayBkdmkgZHZpLWFtIGh0bWwgXAorCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWJpblBST0dSQU1TIFwKKwlpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIFwKKwlpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gXAorCWluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1tYW41IFwKKwlpbnN0YWxsLW1hbjggaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBcCisJaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXNiaW5QUk9HUkFNUyBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCisJaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB1bmluc3RhbGwgXAorCXVuaW5zdGFsbC1hbSB1bmluc3RhbGwtYmluUFJPR1JBTVMgdW5pbnN0YWxsLW1hbiBcCisJdW5pbnN0YWxsLW1hbjUgdW5pbnN0YWxsLW1hbjggdW5pbnN0YWxsLXNiaW5QUk9HUkFNUworCisKKyMgZG9jYm9vazJtYW4gd3JpdGVzIGZpbGUgaXRzZWxmLCBkb2Vzbid0IGRvIHN0ZG91dC4KKyUuODogZG9jLyUuc2dtbAorCWlmIFsgIiQoRE9DQk9PS1RPTUFOKSIgPSAiZG9jYm9vazJtYW4iIF07IHRoZW4gICAgICAgICAgICAgICAgICAgICBcCisJICAgICQoRE9DQk9PS1RPTUFOKSAkPCA+IC9kZXYvbnVsbCAyPiYxOyAgICAgICAgICAgICAgICAgICAgICAgXAorCWVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJICAgICQoRE9DQk9PS1RPTUFOKSAkPCAyPiYxID4gJEAgfCBzZWQgJ3MvXlteOl0qOi8vJzsgICAgICAgICAgICAgIFwKKwlmaQorCislLjU6IGRvYy8lLnNnbWwKKwlpZiBbICIkKERPQ0JPT0tUT01BTikiID0gImRvY2Jvb2sybWFuIiBdOyB0aGVuICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAkKERPQ0JPT0tUT01BTikgJDwgPiAvZGV2L251bGwgMj4mMTsgICAgICAgICAgICAgICAgICAgICAgIFwKKwllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCSAgICAkKERPQ0JPT0tUT01BTikgJDwgMj4mMSA+ICRAIHwgc2VkICdzL15bXjpdKjovLyc7ICAgICAgICAgICAgICBcCisJZmkKKworIyBkb2Nib29rMm1hbiBjcmVhdGVzIGV4dHJhIGNyYXAgZmlsZXMgd2hpY2ggbmVlZCBjbGVhbmluZy4KK2Rpc3RjbGVhbi1sb2NhbDoga2lsbGJ1aWxkbWFucGFnZXMKKwora2lsbGJ1aWxkbWFucGFnZXM6CisJcm0gLWYgZG9jLyoudG1wIG1hbnBhZ2UucmVmcyBtYW5wYWdlLmxpbmtzCisKK3RhcmJhbGw6ICQoRElTVF9ESVIpL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikudGFyLmd6CisKKyQoRElTVF9ESVIpL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikudGFyLmd6OiBkaXN0CisJbXYgbW9kdWxlLWluaXQtdG9vbHMtJChWRVJTSU9OKS50YXIuZ3ogJEAKKworc3JwbTogJChESVNUX0RJUikvbW9kdWxlLWluaXQtdG9vbHMtJChWRVJTSU9OKS50YXIuZ3oKKwlsbiAtc2YgJChESVNUX0RJUikvbW9kdWxlLWluaXQtdG9vbHMtJChWRVJTSU9OKS50YXIuZ3ogL3Vzci9zcmMvcnBtL1NPVVJDRVMvCisJc2V0IC1lOyBSRUxFQVNFPWBncmVwICdeUmVsZWFzZTonIC91c3Ivc3JjL3JwbS9TUEVDUy9tb2R1dGlscy5zcGVjIHwgYXdrICd7IHByaW50ICQkMiB9J2A7IFwKKwlpZiBbICJgZ3JlcCAnJWRlZmluZSBtaXRfdmVyJyAvdXNyL3NyYy9ycG0vU1BFQ1MvbW9kdXRpbHMuc3BlYyB8IGF3ayAne3ByaW50ICQkM30nYCIgIT0gJChWRVJTSU9OKSBdOyB0aGVuIFwKKwkJc2VkIC1lICJzL1JlbGVhc2U6ICQkUkVMRUFTRS9SZWxlYXNlOiBgZXhwciAkJFJFTEVBU0UgKyAxYC8iIC1lICdzLyVkZWZpbmUgbWl0X3Zlci4qLyVkZWZpbmUgbWl0X3ZlciAkKFZFUlNJT04pLycgPCAvdXNyL3NyYy9ycG0vU1BFQ1MvbW9kdXRpbHMuc3BlYyA+IC90bXAvbW9kdXRpbHMuc3BlYzsgXAorCQlycG0gLWJhIC90bXAvbW9kdXRpbHMuc3BlYzsgXAorCQltdiAvdXNyL3NyYy9ycG0vU1JQTVMvbW9kdXRpbHMtMi40LjIxLWBleHByICQkUkVMRUFTRSArIDFgLnNyYy5ycG0gJChESVNUX0RJUik7IFwKKwkJbXYgL3RtcC9tb2R1dGlscy5zcGVjIC91c3Ivc3JjL3JwbS9TUEVDUy9tb2R1dGlscy5zcGVjOyBcCisJZWxzZSBcCisJCXJwbSAtYmEgL3Vzci9zcmMvcnBtL1NQRUNTL21vZHV0aWxzLnNwZWM7IFwKKwkJbXYgL3Vzci9zcmMvcnBtL1NSUE1TL21vZHV0aWxzLTIuNC4yMS0kJFJFTEVBU0Uuc3JjLnJwbSAkKERJU1RfRElSKTsgXAorCWZpCisKKyMgTm8gdGVzdHN1aXRlPwordGVzdHMvcnVudGVzdHM6CisJbWtkaXIgdGVzdHMKKwllY2hvICcjISAvYmluL3NoJyA+ICRACisJZWNobyAnIyBJbnN0YWxsIHRoZSB0ZXN0c3VpdGUgb3ZlciB0aGlzIGRpci4gJyA+PiAkQAorCWNobW9kIGEreCAkQAorCiskKERJU1RfRElSKS9tb2R1bGUtaW5pdC10b29scy10ZXN0c3VpdGUtJChWRVJTSU9OKS50YXIuZ3o6CisJbG4gLXNmbiBgcHdkYCAvdG1wL21vZHVsZS1pbml0LXRvb2xzLSQoVkVSU0lPTikgCisJY2QgL3RtcCAmJiB0YXIgLS1leGNsdWRlICcqficgLWMgLXogLWYgJEAgbW9kdWxlLWluaXQtdG9vbHMtJChWRVJTSU9OKS90ZXN0cworCXJtIC90bXAvbW9kdWxlLWluaXQtdG9vbHMtJChWRVJTSU9OKQorCityZWxlYXNlOiBjaGVjayBjbGVhbiB0YXJiYWxsCisKKyMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSB0byBub3QgZXhwb3J0IGFsbCB2YXJpYWJsZXMuCisjIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy5OT0VYUE9SVDoKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9ORVdTIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL05FV1MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRhYTQyNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9ORVdTCkBAIC0wLDAgKzEsNSBAQAorTkVXUyBmb3IgbW9kdWxlLWluaXQtdG9vbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzIwMTAtMDMtMDEgLSBOZXcgd2lraSBjcmVhdGVkIChodHRwOi8vbW9kdWxlcy53aWtpLmtlcm5lbC5vcmcvKS4gUGxlYXNlCisJICAgICBoZWxwIHRvIGFkZCBkb2N1bWVudGF0aW9uIHRvIGFpZCBvdGhlciBkZXZlbG9wZXJzLgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL1JFQURNRSBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4YmU4ZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9SRUFETUUKQEAgLTAsMCArMSw4NCBAQAorbW9kdWxlLWluaXQtdG9vbHMgLSBMaW51eCB1c2Vyc3BhY2UgbW9kdWxlIGxvYWRpbmcgdXRpbGl0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGFuZHkgUmVzb3VyY2VzOgorCS0gQnVnczogUGxlYXNlIHNlbmQgZW1haWwgdG8gbGlzdAorCS0gR2l0OiAgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9rZXJuZWwvbW9kdWxlLWluaXQtdG9vbHMvbW9kdWxlLWluaXQtdG9vbHMuZ2l0CisJLSBJUkM6ICBpcmMuZnJlZW5vZGUub3JnLyNtb2R1bGUtaW5pdC10b29scworCS0gTWFpbDogbGludXgtbW9kdWxlc0B2Z2VyLmtlcm5lbC5vcmcKKwktIFdlYjogIGh0dHA6Ly9tb2R1bGVzLndpa2kua2VybmVsLm9yZy8KKworVGhlIG1vZHVsZS1pbml0LXRvb2xzIGFyZSB1c2VkIGJ5IG1vZGVybiAyLjYgc2VyaWVzIExpbnV4IHN5c3RlbXMgdG8gcHJvdmlkZQordXNlcnNwYWNlLXNpZGUgYXNzaXN0YW5jZSBpbiBsb2FkaW5nIGtlcm5lbCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMuCitPcmlnaW5hbGx5IHdyaXR0ZW4gdG8gcmVwbGFjZSB0aGUgb2xkZXIgIm1vZHV0aWxzIiwgdGhlIHV0aWxpdGllcyBpbmNsdWRlCit0aGUgIm1vZHByb2JlIiAobG9hZCBtb2R1bGVzIGFuZCB0aGVpciBkZXBlbmRlbmNpZXMpLCAiaW5zbW9kIiAobG9hZCBqdXN0CithIHNpbmdsZSBtb2R1bGUpLCAibW9kaW5mbyIgKHJldHJpZXZlIG1vZHVsZSBpbmZvcm1hdGlvbiksIGFuZCBvdGhlciByZWxhdGVkCittb2R1bGUgbWFuYWdlbWVudCBjb21tYW5kcy4gVGhlc2UgYXJlIGludGVuZGVkIHRvIGJlIHJlbGF0aXZlbHkgbGlnaHR3ZWlnaHQKK2luIHRoZWlyIGRlc2lnbiwgc2luY2UgMi42IHNlcmllcyBrZXJuZWxzIGRvIG11Y2ggb2YgdGhlIHdvcmsgaW50ZXJuYWxseS4KKworWW91IHdpbGwgZmluZCBkb2N1bWVudGF0aW9uIHdpdGhpbiB0aGUgbWFuIHBhZ2VzIGFuZCBpbiB0aGlzIFJFQURNRSBmaWxlLAorYXMgd2VsbCBhcyBzb21lIGhpbnRzIG9uIGRldmVsb3BtZW50IHdpdGhpbiB0aGUgSEFDS0lORyBmaWxlLiBZb3UgYXJlCitlbmNvdXJhZ2VkIHRvIGdldCBpbnZvbHZlZCBieSBzaWduaW5nIHVwIHRvIHRoZSBsaW51eC1tb2R1bGVzQHZnZXIua2VybmVsLm9yZworcHJvamVjdCBtYWlsaW5nIGxpc3QsIGFuZCBwb3N0aW5nIHBhdGNoZXMgKGdpdCBwdWxsIHJlcXVlc3RzIGFyZSB3ZWxjb21lKS4KK1lvdSBjYW4gYWxzbyBmaW5kIGZ1cnRoZXIgaW5mb3JtYXRpb24sIGluY2x1ZGluZyB0aGUgYWRkcmVzcyBvZiB0aGUgbWFpbGluZworbGlzdCwgdGhpcyBnaXQgcmVwb3NpdG9yeSwgYW5kIHNvIGZvcnRoIG9uIHRoZSBtb2R1bGUtaW5pdC10b29scyB3aWtpLgorCitEZXZlbG9wbWVudCB0YWtlcyBwbGFjZSBhZ2FpbnN0IHRoZSBsYXRlc3QgdXBzdHJlYW0gTGludXgga2VybmVscyAoMi42LjMzCithcyBvZiB0aGlzIHdyaXRpbmcsIHRob3VnaCBrZXJuZWwgZGV2ZWxvcG1lbnQgbW92ZXMgcXVpY2tseSkuIEJhY2t3YXJkCitjb21wYXRpYmlsaXR5IGlzIGdlbmVyYWxseSBhdHRlbXB0ZWQsIGJ1dCBmb3J3YXJkIGNvbXBhdGliaWxpdHkgKGkuZS4gdGhlCithYmlsaXR5IGZvciBhIHNwZWNpZmljIHJlbGVhc2Ugb2YgbW9kdWxlLWluaXQtdG9vbHMgdG8gd29yayBhZ2FpbnN0IGRhdGEKK2ZpbGVzIGNyZWF0ZWQgYnkgYSBsYXRlciB2ZXJzaW9uIGFzIHlldCB1bnJlbGVhc2VkIHZlcnNpb24pIGlzIG5vdC4gSW4KK3BhcnRpY3VsYXIsIHRoZSBnZW5lcmF0ZWQgZGF0YSBmaWxlcyB3aXRoaW4gL2xpYi9tb2R1bGVzLzxrZXJuZWwgdmVyc2lvbj4KK211c3Qgbm90IGJlIGFzc3VtZWQgdG8gaGF2ZSBhbnkgcGFydGljdWxhciBmb3JtYXQsIG5vciBzaG91bGQgdGhleSBiZQorcGFyc2VkIGJlIGFueSBvdGhlciB0b29scy4gVGhlcmUgaXMgYSBzcGVjaWZpYyAibW9kaW5mbyIgdXRpbGl0eSBpbnRlbmRlZAorZm9yIHRoZSBwdXJwb3NlcyBvZiBwcm92aWRpbmcgdGhlIGluZm9ybWF0aW9uIHN0b3JlZCB3aXRoaW4gdGhvc2UgZmlsZXMuCisKK1JlY2VudCBDaGFuZ2VzOgorCS0gVGhlcmUgaXMgbm8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIHByZS0yLjYgc2VyaWVzIGtlcm5lbHMuIElmCisJICB5b3UgaW50ZW5kIHRvIHVzZSBhbiBvbGRlciBrZXJuZWwgKHdoZXJlaW4gdGhlIG1vZHVsZSB1dGlsaXRpZXMKKwkgIG11c3QgcGVyZm9ybSB2YXJpb3VzIGxpbmtpbmcgc3RhZ2VzIGluIHVzZXJzcGFjZSksIHVzZSBhbiBvbGRlcgorCSAgdG9vbCBzdWNoIGFzIHByb3ZpZGVkIGluIHRoZSAibW9kdXRpbHMiIGxlZ2FjeSBrZXJuZWwgcGFja2FnZS4KKworCS0gRXhwbGljaXQgbG9ja2luZyBvZiBrZXJuZWwgbW9kdWxlcyBpcyBubyBsb25nZXIgYmVpbmcgcGVyZm9ybWVkIGF0CisJICBsb2FkIHRpbWUgKHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiByZXF1aXJlZCBhIHdyaXRlYWJsZSBtb3VudAorCSAgaW4gL2xpYi9tb2R1bGVzIHRoYXQgaXMgYnkgbm8gbWVhbnMgYXNzdXJlZCAtIGFuIGFsdGVybmF0aXZlIG9mCisJICB1c2luZyBTWVNWIGxvY2tzIHdhcyBleHBlcmltZW50ZWQgd2l0aCBidXQgZGVlbWVkIHVubmVjZXNzYXJ5KS4KKwkgIFRoZSBrZXJuZWwgd2lsbCBoYW5kbGUgb25lIG1vZHByb2JlIGluc3RhbmNlIHJhY2luZyB3aXRoIGFub3RoZXIKKwkgIGJ5IGRlbnlpbmcgdGhlIGxvYWQgYW5kIHJldHVybmluZyBhbiBlcnJvciBtZXNzYWdlLgorCitXb3JrIGluIHByb2dyZXNzOgorCS0gV2UgYXJlIHdvcmtpbmcgb24gc29mdC1kZXBlbmRlbmN5IHN1cHBvcnQgdGhhdCB3aWxsIGFsbG93IG1vZHVsZXMKKwkgIHRvIHByb3ZpZGUgaGludHMgYXMgdG8gZGVwZW5kZW5jaWVzIHRoYXQgbWF5IG5vdCBiZSBleHBsaWNpdC4KKworUmVxdWlyZW1lbnRzOgorCS0gQSAyLjYgc2VyaWVzIExpbnV4IGtlcm5lbCB3aXRoIHN5c2ZzLCBwcm9jZnMsIGFuZCBsb2FkYWJsZSBtb2R1bGUKKwkgIHN1cHBvcnQgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEl0IGlzIGFsc28gcmVxdWlyZWQKKwkgIHRoYXQgc3lzZnMgYW5kIHByb2NmcyBiZSBtb3VudGVkIGluIHRoZWlyIHVzdWFsIC9wcm9jIGFuZCAvc3lzCisJICBsb2NhdGlvbnMgaW4gb3JkZXIgZm9yIGNlcnRhaW4gZnVuY3Rpb25hbGl0eSB0byBiZSBwcm92aWRlZC4KKworCS0gTW9kdWxlIHJlbW92ZSBzdXBwb3J0IG11c3QgYmUgZW5hYmxlZCBpZiByZW1vdmluZyBpcyByZXF1aXJlZC4gWW8KKwkgIGNhbiBhbHNvIGVuYWJsZSBvdGhlciBvcHRpb25zIHN1Y2ggYXMgZm9yY2VkIHJlbW92YWwsIGJ1dCB0aGlzIGlzCisJICByZWFsbHkgYSBiYWQgaWRlYSBmb3IgYW55dGhpbmcgb3RoZXIgdGhhbiBkZXZlbG9wbWVudC4KKworCS0gTW9kdWxlIHZlcnNpb25pbmcgKE1PRFZFUlNJT05TKSBtdXN0IGJlIGVuYWJsZWQgaWYgeW91IHdvdWxkCisJICBsaWtlIHRvIHRyeSB0byB1c2UgbW9kdWxlcyBmcm9tIG9uZSBrZXJuZWwgd2l0aCBhbm90aGVyLCBzaW1pbGFyCisJICBvbmUgd2l0aG91dCB0aGUga2VybmVsIGNvbXBsYWluaW5nIGxvdWRseSBhdCB0aGUgZGlmZmVyZW5jZS4KKworUXVpY2tzdGFydDoKKwktIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhcHByb3ByaWF0ZSBkZXZlbG9wbWVudCB0b29scyAoZ2NjLCBHTlUgYXV0b3Rvb2xzLAorCSAgZG9jYm9vazJtYW4sIGV0Yy4gU29tZSBkaXN0cmlidXRpb25zIG1heSByZXF1aXJlIG9wdGlvbmFsIHBhY2thZ2VzCisJICBmb3IgYSBzdGF0aWMgdmVyc2lvbiBvZiBnbGliYywgYXMgYW4gZXhhbXBsZSkuCisKKwktIFRvIGJlZ2luIGhhY2tpbmcgb24gbW9kdWxlLWluaXQtdG9vbHMsIHlvdSBjYW4gZG8gdGhlIGZvbGxvd2luZzoKKworCTEpLiBhY2xvY2FsIC1JIG00ICYmIGF1dG9tYWtlIC0tYWRkLW1pc3NpbmcgLS1jb3B5ICYmIGF1dG9jb25mCisJICAgIChvciBydW4gImF1dG9yZWNvbmYiIGZyb20gYW4gZXhpc3Rpbmcgc2V0dXApCisJMikuIC4vY29uZmlndXJlCisJICAgIChvcHRpb25hbGx5IHNwZWNpZnkgIi0tcHJlZml4IiBvciAiLS1tYW5kaXIiIGZvciBub24gL3Vzci9sb2NhbCkKKwkzKS4gbWFrZQorCTQpLiBtYWtlIGluc3RhbGwKKwk1KS4gZGVwbW9kCisJICAgICh0byB1cGRhdGUgL2xpYi9tb2R1bGVzLzxrZXJuZWwgdmVyc2lvbj4gZm9yIHRoZSBsYXRlc3QgcmVsZWFzZSkKKworUGxlYXNlIGRpcmVjdCBhbnkgY29tbWVudC9xdWVzdGlvbiB0byB0aGUgbGludXgtbW9kdWxlcyBtYWlsaW5nIGxpc3QgYXQ6CisJbGludXgtbW9kdWxlc0B2Z2VyLmtlcm5lbC5vcmcKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9UT0RPIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL1RPRE8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdhNWRlZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9UT0RPCkBAIC0wLDAgKzEsMTggQEAKK1NvbWUgVE9ET3MsIGdyb3VwZWQgYnkgdGhlIGluZGl2aWR1YWwgdXRpbHR5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitidWlsZAorLS0tLS0KKwkqIEZpeCAibWFrZSBkaXN0IiB0byBidWlsZCBkb2N1bWVudGF0aW9uLgorCSogRml4ICJtYWtlIGRpc3RjaGVjayIgYXQgdGhlIHNhbWUgdGltZS4KKworZGVwbW9kCistLS0tLS0KKwkqIEtpbGwgb2ZmIHRoZSAibWFwIiBmaWxlcy4gVGhleSBhcmVuJ3QgcmVhbGx5IG5lZWRlZCBhbnkgbW9yZS4KKworbW9kcHJvYmUKKy0tLS0tLS0tCisJKiBLaWxsIG9mZiBzb21lIG9mIHRoZSBsZWdhY3kgb3B0aW9ucy4KKwkqIEZpeCBncmFiX2VsZl9maWxlX2ZkIGVycm9yIGhhbmRsaW5nIGZvciB0ZXN0LW1vZHVsZS8xMGFsaWFzLnNoLgorCSogRW5mb3JjZSB1c2Ugb2YgKi5jb25mIGZpbGVzIGluIC9ldGMvbW9kcHJvYmUuZCBhcyBmaWxlbmFtZSBleHRlbnNpb24uCisJKiBBZGQgYSAiZGVwZW5kcyIgY29uZmlnIGZpbGUgZGlyZWN0aXZlIHRvIG9idmlhdGUgImluc3RhbGwiIGhhY2tzLgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2FjbG9jYWwubTQgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvYWNsb2NhbC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODFiMzAyCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2FjbG9jYWwubTQKQEAgLTAsMCArMSw5NTMgQEAKKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjExLjEgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwKKyMgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK200X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKK200X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjNdLCwKK1ttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42My4KK1lvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEl0IG1heSB3b3JrLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8uCitJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KK1RvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fQVVUT01BS0VfVkVSU0lPTihWRVJTSU9OKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEF1dG9tYWtlIFguWSB0cmFjZXMgdGhpcyBtYWNybyB0byBlbnN1cmUgYWNsb2NhbC5tNCBoYXMgYmVlbgorIyBnZW5lcmF0ZWQgZnJvbSB0aGUgbTQgZmlsZXMgYWNjb21wYW55aW5nIEF1dG9tYWtlIFguWS4KKyMgKFRoaXMgcHJpdmF0ZSBtYWNybyBzaG91bGQgbm90IGJlIGNhbGxlZCBvdXRzaWRlIHRoaXMgZmlsZS4pCitBQ19ERUZVTihbQU1fQVVUT01BS0VfVkVSU0lPTl0sCitbYW1fX2FwaV92ZXJzaW9uPScxLjExJworZG5sIFNvbWUgdXNlcnMgZmluZCBBTV9BVVRPTUFLRV9WRVJTSU9OIGFuZCBtaXN0YWtlIGl0IGZvciBhIHdheSB0bworZG5sIHJlcXVpcmUgc29tZSBtaW5pbXVtIHZlcnNpb24uICBQb2ludCB0aGVtIHRvIHRoZSByaWdodCBtYWNyby4KK200X2lmKFskMV0sIFsxLjExLjFdLCBbXSwKKyAgICAgIFtBQ19GQVRBTChbRG8gbm90IGNhbGwgJDAsIHVzZSBBTV9JTklUX0FVVE9NQUtFKFskMV0pLl0pXSlkbmwKK10pCisKKyMgX0FNX0FVVE9DT05GX1ZFUlNJT04oVkVSU0lPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYWNsb2NhbCB0cmFjZXMgdGhpcyBtYWNybyB0byBmaW5kIHRoZSBBdXRvY29uZiB2ZXJzaW9uLgorIyBUaGlzIGlzIGEgcHJpdmF0ZSBtYWNybyB0b28uICBVc2luZyBtNF9kZWZpbmUgc2ltcGxpZmllcworIyB0aGUgbG9naWMgaW4gYWNsb2NhbCwgd2hpY2ggY2FuIHNpbXBseSBpZ25vcmUgdGhpcyBkZWZpbml0aW9uLgorbTRfZGVmaW5lKFtfQU1fQVVUT0NPTkZfVkVSU0lPTl0sIFtdKQorCisjIEFNX1NFVF9DVVJSRU5UX0FVVE9NQUtFX1ZFUlNJT04KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gdGhleSBjYW4gYmUgdHJhY2VkLgorIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFNX0lOSVRfQVVUT01BS0UuCitBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCitbQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMS4xXSlkbmwKK200X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCisgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKK19BTV9BVVRPQ09ORl9WRVJTSU9OKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSldKQorCisjIEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIEZvciBwcm9qZWN0cyB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMKKyMgJGFjX2F1eF9kaXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQgdG8KKyMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGlyLy4uLy4uJy4KKyMKKyMgT2YgY291cnNlLCBBdXRvbWFrZSBtdXN0IGhvbm9yIHRoaXMgdmFyaWFibGUgd2hlbmV2ZXIgaXQgY2FsbHMgYQorIyB0b29sIGZyb20gdGhlIGF1eGlsaWFyeSBkaXJlY3RvcnkuICBUaGUgcHJvYmxlbSBpcyB0aGF0ICRzcmNkaXIgKGFuZAorIyB0aGVyZWZvcmUgJGFjX2F1eF9kaXIgYXMgd2VsbCkgY2FuIGJlIGVpdGhlciBhYnNvbHV0ZSBvciByZWxhdGl2ZSwKKyMgZGVwZW5kaW5nIG9uIGhvdyBjb25maWd1cmUgaXMgcnVuLiAgVGhpcyBpcyBwcmV0dHkgYW5ub3lpbmcsIHNpbmNlCisjIGl0IG1ha2VzICRhY19hdXhfZGlyIHF1aXRlIHVudXNhYmxlIGluIHN1YmRpcmVjdG9yaWVzOiBpbiB0aGUgdG9wCisjIHNvdXJjZSBkaXJlY3RvcnksIGFueSBmb3JtIHdpbGwgd29yayBmaW5lLCBidXQgaW4gc3ViZGlyZWN0b3JpZXMgYQorIyByZWxhdGl2ZSBwYXRoIG5lZWRzIHRvIGJlIGFkanVzdGVkIGZpcnN0LgorIworIyAkYWNfYXV4X2Rpci9taXNzaW5nCisjICAgIGZhaWxzIHdoZW4gY2FsbGVkIGZyb20gYSBzdWJkaXJlY3RvcnkgaWYgJGFjX2F1eF9kaXIgaXMgcmVsYXRpdmUKKyMgJHRvcF9zcmNkaXIvJGFjX2F1eF9kaXIvbWlzc2luZworIyAgICBmYWlscyBpZiAkYWNfYXV4X2RpciBpcyBhYnNvbHV0ZSwKKyMgICAgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSBhIHN1YmRpcmVjdG9yeSBpbiBhIFZQQVRIIGJ1aWxkIHdpdGgKKyMgICAgICAgICAgYSByZWxhdGl2ZSAkYWNfYXV4X2RpcgorIworIyBUaGUgcmVhc29uIG9mIHRoZSBsYXR0ZXIgZmFpbHVyZSBpcyB0aGF0ICR0b3Bfc3JjZGlyIGFuZCAkYWNfYXV4X2RpcgorIyBhcmUgYm90aCBwcmVmaXhlZCBieSAkc3JjZGlyLiAgSW4gYW4gaW4tc291cmNlIGJ1aWxkIHRoaXMgaXMgdXN1YWxseQorIyBoYXJtbGVzcyBiZWNhdXNlICRzcmNkaXIgaXMgYC4nLCBidXQgdGhpbmdzIHdpbGwgYnJva2Ugd2hlbiB5b3UKKyMgc3RhcnQgYSBWUEFUSCBidWlsZCBvciB1c2UgYW4gYWJzb2x1dGUgJHNyY2Rpci4KKyMKKyMgU28gd2UgY291bGQgdXNlIHNvbWV0aGluZyBzaW1pbGFyIHRvICR0b3Bfc3JjZGlyLyRhY19hdXhfZGlyL21pc3NpbmcsCisjIGlmZiB3ZSBzdHJpcCB0aGUgbGVhZGluZyAkc3JjZGlyIGZyb20gJGFjX2F1eF9kaXIuICBUaGF0IHdvdWxkIGJlOgorIyAgIGFtX2F1eF9kaXI9J1wkKHRvcF9zcmNkaXIpLydgZXhwciAiJGFjX2F1eF9kaXIiIDogIiRzcmNkaXIvLypcKC4qXCkiYAorIyBhbmQgdGhlbiB3ZSB3b3VsZCBkZWZpbmUgJE1JU1NJTkcgYXMKKyMgICBNSVNTSU5HPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvbWlzc2luZyIKKyMgVGhpcyB3aWxsIHdvcmsgYXMgbG9uZyBhcyBNSVNTSU5HIGlzIG5vdCBjYWxsZWQgZnJvbSBjb25maWd1cmUsIGJlY2F1c2UKKyMgdW5mb3J0dW5hdGVseSAkKHRvcF9zcmNkaXIpIGhhcyBubyBtZWFuaW5nIGluIGNvbmZpZ3VyZS4KKyMgSG93ZXZlciB0aGVyZSBhcmUgb3RoZXIgdmFyaWFibGVzLCBsaWtlIENDLCB3aGljaCBhcmUgb2Z0ZW4gdXNlZCBpbgorIyBjb25maWd1cmUsIGFuZCBjb3VsZCB0aGVyZWZvcmUgbm90IHVzZSB0aGlzICJmaXhlZCIgJGFjX2F1eF9kaXIuCisjCisjIEFub3RoZXIgc29sdXRpb24sIHVzZWQgaGVyZSwgaXMgdG8gYWx3YXlzIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbgorIyBhYnNvbHV0ZSBQQVRILiAgVGhlIGRyYXdiYWNrIGlzIHRoYXQgdXNpbmcgYWJzb2x1dGUgcGF0aHMgcHJldmVudCBhCisjIGNvbmZpZ3VyZWQgdHJlZSB0byBiZSBtb3ZlZCB3aXRob3V0IHJlY29uZmlndXJhdGlvbi4KKworQUNfREVGVU4oW0FNX0FVWF9ESVJfRVhQQU5EXSwKK1tkbmwgUmVseSBvbiBhdXRvY29uZiB0byBzZXQgdXAgQ0RQQVRIIHByb3Blcmx5LgorQUNfUFJFUkVRKFsyLjUwXSlkbmwKKyMgZXhwYW5kICRhY19hdXhfZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKK2FtX2F1eF9kaXI9YGNkICRhY19hdXhfZGlyICYmIHB3ZGAKK10pCisKKyMgQU1fQ09ORElUSU9OQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDgKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgOQorCisjIEFNX0NPTkRJVElPTkFMKE5BTUUsIFNIRUxMLUNPTkRJVElPTikKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgYSBjb25kaXRpb25hbC4KK0FDX0RFRlVOKFtBTV9DT05ESVRJT05BTF0sCitbQUNfUFJFUkVRKDIuNTIpZG5sCisgaWZlbHNlKFskMV0sIFtUUlVFXSwgIFtBQ19GQVRBTChbJDA6IGludmFsaWQgY29uZGl0aW9uOiAkMV0pXSwKKwlbJDFdLCBbRkFMU0VdLCBbQUNfRkFUQUwoWyQwOiBpbnZhbGlkIGNvbmRpdGlvbjogJDFdKV0pZG5sCitBQ19TVUJTVChbJDFfVFJVRV0pZG5sCitBQ19TVUJTVChbJDFfRkFMU0VdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoWyQxX1RSVUVdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoWyQxX0ZBTFNFXSlkbmwKK200X2RlZmluZShbX0FNX0NPTkRfVkFMVUVfJDFdLCBbJDJdKWRubAoraWYgJDI7IHRoZW4KKyAgJDFfVFJVRT0KKyAgJDFfRkFMU0U9JyMnCitlbHNlCisgICQxX1RSVUU9JyMnCisgICQxX0ZBTFNFPQorZmkKK0FDX0NPTkZJR19DT01NQU5EU19QUkUoCitbaWYgdGVzdCAteiAiJHskMV9UUlVFfSIgJiYgdGVzdCAteiAiJHskMV9GQUxTRX0iOyB0aGVuCisgIEFDX01TR19FUlJPUihbW2NvbmRpdGlvbmFsICIkMSIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkKK2ZpXSldKQorCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOQorIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAxMAorCisjIFRoZXJlIGFyZSBhIGZldyBkaXJ0eSBoYWNrcyBiZWxvdyB0byBhdm9pZCBsZXR0aW5nIGBBQ19QUk9HX0NDJyBiZQorIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2NhbC5tNCwKKyMgd2lsbCB0aGluayBpdCBzZWVzIGEgKnVzZSosIGFuZCB0aGVyZWZvcmUgd2lsbCB0cmlnZ2VyIGFsbCBpdCdzCisjIEMgc3VwcG9ydCBtYWNoaW5lcnkuICBBbHNvIG5vdGUgdGhhdCBpdCBtZWFucyB0aGF0IGF1dG9zY2FuLCBzZWVpbmcKKyMgQ0MgZXRjLiBpbiB0aGUgTWFrZWZpbGUsIHdpbGwgYXNrIGZvciBhbiBBQ19QUk9HX0NDIHVzZS4uLgorCisKKyMgX0FNX0RFUEVOREVOQ0lFUyhOQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNlZSBob3cgdGhlIGNvbXBpbGVyIGltcGxlbWVudHMgZGVwZW5kZW5jeSBjaGVja2luZy4KKyMgTkFNRSBpcyAiQ0MiLCAiQ1hYIiwgIkdDSiIsIG9yICJPQkpDIi4KKyMgV2UgdHJ5IGEgZmV3IHRlY2huaXF1ZXMgYW5kIHVzZSB0aGF0IHRvIHNldCBhIHNpbmdsZSBjYWNoZSB2YXJpYWJsZS4KKyMKKyMgV2UgZG9uJ3QgQUNfUkVRVUlSRSB0aGUgY29ycmVzcG9uZGluZyBBQ19QUk9HX0NDIHNpbmNlIHRoZSBsYXR0ZXIgd2FzCisjIG1vZGlmaWVkIHRvIGludm9rZSBfQU1fREVQRU5ERU5DSUVTKENDKTsgd2Ugd291bGQgaGF2ZSBhIGNpcmN1bGFyCisjIGRlcGVuZGVuY3ksIGFuZCBnaXZlbiB0aGF0IHRoZSB1c2VyIGlzIG5vdCBleHBlY3RlZCB0byBydW4gdGhpcyBtYWNybywKKyMganVzdCByZWx5IG9uIEFDX1BST0dfQ0MuCitBQ19ERUZVTihbX0FNX0RFUEVOREVOQ0lFU10sCitbQUNfUkVRVUlSRShbQU1fU0VUX0RFUERJUl0pZG5sCitBQ19SRVFVSVJFKFtBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10pZG5sCitBQ19SRVFVSVJFKFtBTV9NQUtFX0lOQ0xVREVdKWRubAorQUNfUkVRVUlSRShbQU1fREVQX1RSQUNLXSlkbmwKKworaWZlbHNlKFskMV0sIENDLCAgIFtkZXBjYz0iJENDIiAgIGFtX2NvbXBpbGVyX2xpc3Q9XSwKKyAgICAgICBbJDFdLCBDWFgsICBbZGVwY2M9IiRDWFgiICBhbV9jb21waWxlcl9saXN0PV0sCisgICAgICAgWyQxXSwgT0JKQywgW2RlcGNjPSIkT0JKQyIgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwKKyAgICAgICBbJDFdLCBVUEMsICBbZGVwY2M9IiRVUEMiICBhbV9jb21waWxlcl9saXN0PV0sCisgICAgICAgWyQxXSwgR0NKLCAgW2RlcGNjPSIkR0NKIiAgYW1fY29tcGlsZXJfbGlzdD0nZ2NjMyBnY2MnXSwKKyAgICAgICAgICAgICAgICAgICBbZGVwY2M9IiQkMSIgICBhbV9jb21waWxlcl9saXN0PV0pCisKK0FDX0NBQ0hFX0NIRUNLKFtkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjY10sCisgICAgICAgICAgICAgICBbYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdLAorW2lmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KKyAgIyBXZSBtYWtlIGEgc3ViZGlyIGFuZCBkbyB0aGUgdGVzdHMgdGhlcmUuICBPdGhlcndpc2Ugd2UgY2FuIGVuZCB1cAorICAjIG1ha2luZyBib2d1cyBmaWxlcyB0aGF0IHdlIGRvbid0IGtub3cgYWJvdXQgYW5kIG5ldmVyIHJlbW92ZS4gIEZvcgorICAjIGluc3RhbmNlIGl0IHdhcyByZXBvcnRlZCB0aGF0IG9uIEhQLVVYIHRoZSBnY2MgdGVzdCB3aWxsIGVuZCB1cAorICAjIG1ha2luZyBhIGR1bW15IGZpbGUgbmFtZWQgYEQnIC0tIGJlY2F1c2UgYC1NRCcgbWVhbnMgYHB1dCB0aGUgb3V0cHV0CisgICMgaW4gRCcuCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQorICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgorICBjcCAiJGFtX2RlcGNvbXAiIGNvbmZ0ZXN0LmRpcgorICBjZCBjb25mdGVzdC5kaXIKKyAgIyBXZSB3aWxsIGJ1aWxkIG9iamVjdHMgYW5kIGRlcGVuZGVuY2llcyBpbiBhIHN1YmRpcmVjdG9yeSBiZWNhdXNlCisgICMgaXQgaGVscHMgdG8gZGV0ZWN0IGluYXBwbGljYWJsZSBkZXBlbmRlbmN5IG1vZGVzLiAgRm9yIGluc3RhbmNlCisgICMgYm90aCBUcnU2NCdzIGNjIGFuZCBJQ0Mgc3VwcG9ydCAtTUQgdG8gb3V0cHV0IGRlcGVuZGVuY2llcyBhcyBhCisgICMgc2lkZSBlZmZlY3Qgb2YgY29tcGlsYXRpb24sIGJ1dCBJQ0Mgd2lsbCBwdXQgdGhlIGRlcGVuZGVuY2llcyBpbgorICAjIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aGlsZSBUcnU2NCB3aWxsIHB1dCB0aGVtIGluIHRoZSBvYmplY3QKKyAgIyBkaXJlY3RvcnkuCisgIG1rZGlyIHN1YgorCisgIGFtX2N2XyQxX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlPW5vbmUKKyAgaWYgdGVzdCAiJGFtX2NvbXBpbGVyX2xpc3QiID0gIiI7IHRoZW4KKyAgICAgYW1fY29tcGlsZXJfbGlzdD1gc2VkIC1uIFsncy9eIypcKFthLXpBLVowLTldKlwpKSQvXDEvcCddIDwgLi9kZXBjb21wYAorICBmaQorICBhbV9fdW5pdmVyc2FsPWZhbHNlCisgIG00X2Nhc2UoWyQxXSwgW0NDXSwKKyAgICBbY2FzZSAiICRkZXBjYyAiIGluICMoCisgICAgICpcIC1hcmNoXCAqXCAtYXJjaFwgKikgYW1fX3VuaXZlcnNhbD10cnVlIDs7CisgICAgIGVzYWNdLAorICAgIFtDWFhdLAorICAgIFtjYXNlICIgJGRlcGNjICIgaW4gIygKKyAgICAgKlwgLWFyY2hcICpcIC1hcmNoXCAqKSBhbV9fdW5pdmVyc2FsPXRydWUgOzsKKyAgICAgZXNhY10pCisKKyAgZm9yIGRlcG1vZGUgaW4gJGFtX2NvbXBpbGVyX2xpc3Q7IGRvCisgICAgIyBTZXR1cCBhIHNvdXJjZSB3aXRoIG1hbnkgZGVwZW5kZW5jaWVzLCBiZWNhdXNlIHNvbWUgY29tcGlsZXJzCisgICAgIyBsaWtlIHRvIHdyYXAgbGFyZ2UgZGVwZW5kZW5jeSBsaXN0cyBvbiBjb2x1bW4gODAgKHdpdGggXCksIGFuZAorICAgICMgd2Ugc2hvdWxkIG5vdCBjaG9vc2UgYSBkZXBjb21wIG1vZGUgd2hpY2ggaXMgY29uZnVzZWQgYnkgdGhpcy4KKyAgICAjCisgICAgIyBXZSBuZWVkIHRvIHJlY3JlYXRlIHRoZXNlIGZpbGVzIGZvciBlYWNoIHRlc3QsIGFzIHRoZSBjb21waWxlciBtYXkKKyAgICAjIG92ZXJ3cml0ZSBzb21lIG9mIHRoZW0gd2hlbiB0ZXN0aW5nIHdpdGggb2JzY3VyZSBjb21tYW5kIGxpbmVzLgorICAgICMgVGhpcyBoYXBwZW5zIGF0IGxlYXN0IHdpdGggdGhlIEFJWCBDIGNvbXBpbGVyLgorICAgIDogPiBzdWIvY29uZnRlc3QuYworICAgIGZvciBpIGluIDEgMiAzIDQgNSA2OyBkbworICAgICAgZWNobyAnI2luY2x1ZGUgImNvbmZ0c3QnJGknLmgiJyA+PiBzdWIvY29uZnRlc3QuYworICAgICAgIyBVc2luZyBgOiA+IHN1Yi9jb25mdHN0JGkuaCcgY3JlYXRlcyBvbmx5IHN1Yi9jb25mdHN0MS5oIHdpdGgKKyAgICAgICMgU29sYXJpcyA4J3Mgey91c3IsfS9iaW4vc2guCisgICAgICB0b3VjaCBzdWIvY29uZnRzdCRpLmgKKyAgICBkb25lCisgICAgZWNobyAiJHthbV9faW5jbHVkZX0gJHthbV9fcXVvdGV9c3ViL2NvbmZ0ZXN0LlBvJHthbV9fcXVvdGV9IiA+IGNvbmZtZgorCisgICAgIyBXZSBjaGVjayB3aXRoIGAtYycgYW5kIGAtbycgZm9yIHRoZSBzYWtlIG9mIHRoZSAiZGFzaG1zdGRvdXQiCisgICAgIyBtb2RlLiAgSXQgdHVybnMgb3V0IHRoYXQgdGhlIFN1blBybyBDKysgY29tcGlsZXIgZG9lcyBub3QgcHJvcGVybHkKKyAgICAjIGhhbmRsZSBgLU0gLW8nLCBhbmQgd2UgbmVlZCB0byBkZXRlY3QgdGhpcy4gIEFsc28sIHNvbWUgSW50ZWwKKyAgICAjIHZlcnNpb25zIGhhZCB0cm91YmxlIHdpdGggb3V0cHV0IGluIHN1YmRpcnMKKyAgICBhbV9fb2JqPXN1Yi9jb25mdGVzdC4ke09CSkVYVC1vfQorICAgIGFtX19taW51c19vYmo9Ii1vICRhbV9fb2JqIgorICAgIGNhc2UgJGRlcG1vZGUgaW4KKyAgICBnY2MpCisgICAgICAjIFRoaXMgZGVwbW9kZSBjYXVzZXMgYSBjb21waWxlciByYWNlIGluIHVuaXZlcnNhbCBtb2RlLgorICAgICAgdGVzdCAiJGFtX191bml2ZXJzYWwiID0gZmFsc2UgfHwgY29udGludWUKKyAgICAgIDs7CisgICAgbm9zaWRlZWZmZWN0KQorICAgICAgIyBhZnRlciB0aGlzIHRhZywgbWVjaGFuaXNtcyBhcmUgbm90IGJ5IHNpZGUtZWZmZWN0LCBzbyB0aGV5J2xsCisgICAgICAjIG9ubHkgYmUgdXNlZCB3aGVuIGV4cGxpY2l0bHkgcmVxdWVzdGVkCisgICAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiA9IHh5ZXM7IHRoZW4KKwljb250aW51ZQorICAgICAgZWxzZQorCWJyZWFrCisgICAgICBmaQorICAgICAgOzsKKyAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKKyAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAorICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KKyAgICAgIGFtX19vYmo9Y29uZnRlc3QuJHtPQkpFWFQtb30KKyAgICAgIGFtX19taW51c19vYmo9CisgICAgICA7OworICAgIG5vbmUpIGJyZWFrIDs7CisgICAgZXNhYworICAgIGlmIGRlcG1vZGU9JGRlcG1vZGUgXAorICAgICAgIHNvdXJjZT1zdWIvY29uZnRlc3QuYyBvYmplY3Q9JGFtX19vYmogXAorICAgICAgIGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlBvIHRtcGRlcGZpbGU9c3ViL2NvbmZ0ZXN0LlRQbyBcCisgICAgICAgJFNIRUxMIC4vZGVwY29tcCAkZGVwY2MgLWMgJGFtX19taW51c19vYmogc3ViL2NvbmZ0ZXN0LmMgXAorICAgICAgICAgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0LmVyciAmJgorICAgICAgIGdyZXAgc3ViL2NvbmZ0c3QxLmggc3ViL2NvbmZ0ZXN0LlBvID4gL2Rldi9udWxsIDI+JjEgJiYKKyAgICAgICBncmVwIHN1Yi9jb25mdHN0Ni5oIHN1Yi9jb25mdGVzdC5QbyA+IC9kZXYvbnVsbCAyPiYxICYmCisgICAgICAgZ3JlcCAkYW1fX29iaiBzdWIvY29uZnRlc3QuUG8gPiAvZGV2L251bGwgMj4mMSAmJgorICAgICAgICR7TUFLRS1tYWtlfSAtcyAtZiBjb25mbWYgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgIyBpY2MgZG9lc24ndCBjaG9rZSBvbiB1bmtub3duIG9wdGlvbnMsIGl0IHdpbGwganVzdCBpc3N1ZSB3YXJuaW5ncworICAgICAgIyBvciByZW1hcmtzIChldmVuIHdpdGggLVdlcnJvcikuICBTbyB3ZSBncmVwIHN0ZGVyciBmb3IgYW55IG1lc3NhZ2UKKyAgICAgICMgdGhhdCBzYXlzIGFuIG9wdGlvbiB3YXMgaWdub3JlZCBvciBub3Qgc3VwcG9ydGVkLgorICAgICAgIyBXaGVuIGdpdmVuIC1NUCwgaWNjIDcuMCBhbmQgNy4xIGNvbXBsYWluIHRodXNseToKKyAgICAgICMgICBpY2M6IENvbW1hbmQgbGluZSB3YXJuaW5nOiBpZ25vcmluZyBvcHRpb24gJy1NJzsgbm8gYXJndW1lbnQgcmVxdWlyZWQKKyAgICAgICMgVGhlIGRpYWdub3NpcyBjaGFuZ2VkIGluIGljYyA4LjA6CisgICAgICAjICAgaWNjOiBDb21tYW5kIGxpbmUgcmVtYXJrOiBvcHRpb24gJy1NUCcgbm90IHN1cHBvcnRlZAorICAgICAgaWYgKGdyZXAgJ2lnbm9yaW5nIG9wdGlvbicgY29uZnRlc3QuZXJyIHx8CisgICAgICAgICAgZ3JlcCAnbm90IHN1cHBvcnRlZCcgY29uZnRlc3QuZXJyKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOjsgZWxzZQorICAgICAgICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT0kZGVwbW9kZQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBmaQorICBkb25lCisKKyAgY2QgLi4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgorZWxzZQorICBhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZT1ub25lCitmaQorXSkKK0FDX1NVQlNUKFskMURFUE1PREVdLCBbZGVwbW9kZT0kYW1fY3ZfJDFfZGVwZW5kZW5jaWVzX2NvbXBpbGVyX3R5cGVdKQorQU1fQ09ORElUSU9OQUwoW2FtX19mYXN0ZGVwJDFdLCBbCisgIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubyBcCisgICYmIHRlc3QgIiRhbV9jdl8kMV9kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSIgPSBnY2MzXSkKK10pCisKKworIyBBTV9TRVRfREVQRElSCisjIC0tLS0tLS0tLS0tLS0KKyMgQ2hvb3NlIGEgZGlyZWN0b3J5IG5hbWUgZm9yIGRlcGVuZGVuY3kgZmlsZXMuCisjIFRoaXMgbWFjcm8gaXMgQUNfUkVRVUlSRWQgaW4gX0FNX0RFUEVOREVOQ0lFUworQUNfREVGVU4oW0FNX1NFVF9ERVBESVJdLAorW0FDX1JFUVVJUkUoW0FNX1NFVF9MRUFESU5HX0RPVF0pZG5sCitBQ19TVUJTVChbREVQRElSXSwgWyIke2FtX19sZWFkaW5nX2RvdH1kZXBzIl0pZG5sCitdKQorCisKKyMgQU1fREVQX1RSQUNLCisjIC0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0FNX0RFUF9UUkFDS10sCitbQUNfQVJHX0VOQUJMRShkZXBlbmRlbmN5LXRyYWNraW5nLAorWyAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgIHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAorICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICAgZG8gbm90IHJlamVjdCBzbG93IGRlcGVuZGVuY3kgZXh0cmFjdG9yc10pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nIiAhPSB4bm87IHRoZW4KKyAgYW1fZGVwY29tcD0iJGFjX2F1eF9kaXIvZGVwY29tcCIKKyAgQU1ERVBCQUNLU0xBU0g9J1wnCitmaQorQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pCitBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoW0FNREVQQkFDS1NMQVNIXSlkbmwKK10pCisKKyMgR2VuZXJhdGUgY29kZSB0byBzZXQgdXAgZGVwZW5kZW5jeSB0cmFja2luZy4gICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworI3NlcmlhbCA1CisKKyMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW19BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCitbeworICAjIEF1dG9jb25mIDIuNjIgcXVvdGVzIC0tZmlsZSBhcmd1bWVudHMgZm9yIGV2YWwsIGJ1dCBub3Qgd2hlbiBmaWxlcworICAjIGFyZSBsaXN0ZWQgd2l0aG91dCAtLWZpbGUuICBMZXQncyBwbGF5IHNhZmUgYW5kIG9ubHkgZW5hYmxlIHRoZSBldmFsCisgICMgaWYgd2UgZGV0ZWN0IHRoZSBxdW90aW5nLgorICBjYXNlICRDT05GSUdfRklMRVMgaW4KKyAgKlwnKikgZXZhbCBzZXQgeCAiJENPTkZJR19GSUxFUyIgOzsKKyAgKikgICBzZXQgeCAkQ09ORklHX0ZJTEVTIDs7CisgIGVzYWMKKyAgc2hpZnQKKyAgZm9yIG1mCisgIGRvCisgICAgIyBTdHJpcCBNRiBzbyB3ZSBlbmQgdXAgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4KKyAgICBtZj1gZWNobyAiJG1mIiB8IHNlZCAtZSAncy86LiokLy8nYAorICAgICMgQ2hlY2sgd2hldGhlciB0aGlzIGlzIGFuIEF1dG9tYWtlIGdlbmVyYXRlZCBNYWtlZmlsZSBvciBub3QuCisgICAgIyBXZSB1c2VkIHRvIG1hdGNoIG9ubHkgdGhlIGZpbGVzIG5hbWVkIGBNYWtlZmlsZS5pbicsIGJ1dAorICAgICMgc29tZSBwZW9wbGUgcmVuYW1lIHRoZW07IHNvIGluc3RlYWQgd2UgbG9vayBhdCB0aGUgZmlsZSBjb250ZW50LgorICAgICMgR3JlcCdpbmcgdGhlIGZpcnN0IGxpbmUgaXMgbm90IGVub3VnaDogc29tZSBwZW9wbGUgcG9zdC1wcm9jZXNzCisgICAgIyBlYWNoIE1ha2VmaWxlLmluIGFuZCBhZGQgYSBuZXcgbGluZSBvbiB0b3Agb2YgZWFjaCBmaWxlIHRvIHNheSBzby4KKyAgICAjIEdyZXAnaW5nIHRoZSB3aG9sZSBmaWxlIGlzIG5vdCBnb29kIGVpdGhlcjogQUlYIGdyZXAgaGFzIGEgbGluZQorICAgICMgbGltaXQgb2YgMjA0OCwgYnV0IGFsbCBzZWQncyB3ZSBrbm93IGhhdmUgdW5kZXJzdGFuZCBhdCBsZWFzdCA0MDAwLgorICAgIGlmIHNlZCAtbiAncyxeIy4qZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlLiosWCxwJyAiJG1mIiB8IGdyZXAgWCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgIGRpcnBhcnQ9YEFTX0RJUk5BTUUoIiRtZiIpYAorICAgIGVsc2UKKyAgICAgIGNvbnRpbnVlCisgICAgZmkKKyAgICAjIEV4dHJhY3QgdGhlIGRlZmluaXRpb24gb2YgREVQRElSLCBhbV9faW5jbHVkZSwgYW5kIGFtX19xdW90ZQorICAgICMgZnJvbSB0aGUgTWFrZWZpbGUgd2l0aG91dCBydW5uaW5nIGBtYWtlJy4KKyAgICBERVBESVI9YHNlZCAtbiAncy9eREVQRElSID0gLy9wJyA8ICIkbWYiYAorICAgIHRlc3QgLXogIiRERVBESVIiICYmIGNvbnRpbnVlCisgICAgYW1fX2luY2x1ZGU9YHNlZCAtbiAncy9eYW1fX2luY2x1ZGUgPSAvL3AnIDwgIiRtZiJgCisgICAgdGVzdCAteiAiYW1fX2luY2x1ZGUiICYmIGNvbnRpbnVlCisgICAgYW1fX3F1b3RlPWBzZWQgLW4gJ3MvXmFtX19xdW90ZSA9IC8vcCcgPCAiJG1mImAKKyAgICAjIFdoZW4gdXNpbmcgYW5zaTJrbnIsIFUgbWF5IGJlIGVtcHR5IG9yIGFuIHVuZGVyc2NvcmU7IGV4cGFuZCBpdAorICAgIFU9YHNlZCAtbiAncy9eVSA9IC8vcCcgPCAiJG1mImAKKyAgICAjIEZpbmQgYWxsIGRlcGVuZGVuY3kgb3V0cHV0IGZpbGVzLCB0aGV5IGFyZSBpbmNsdWRlZCBmaWxlcyB3aXRoCisgICAgIyAkKERFUERJUikgaW4gdGhlaXIgbmFtZXMuICBXZSBpbnZva2Ugc2VkIHR3aWNlIGJlY2F1c2UgaXQgaXMgdGhlCisgICAgIyBzaW1wbGVzdCBhcHByb2FjaCB0byBjaGFuZ2luZyAkKERFUERJUikgdG8gaXRzIGFjdHVhbCB2YWx1ZSBpbiB0aGUKKyAgICAjIGV4cGFuc2lvbi4KKyAgICBmb3IgZmlsZSBpbiBgc2VkIC1uICIKKyAgICAgIHMvXiRhbV9faW5jbHVkZSAkYW1fX3F1b3RlXCguKihERVBESVIpLipcKSRhbV9fcXVvdGUiJyQvXDEvcCcgPCIkbWYiIHwgXAorCSBzZWQgLWUgJ3MvXCQoREVQRElSKS8nIiRERVBESVIiJy9nJyAtZSAncy9cJFUvJyIkVSInL2cnYDsgZG8KKyAgICAgICMgTWFrZSBzdXJlIHRoZSBkaXJlY3RvcnkgZXhpc3RzLgorICAgICAgdGVzdCAtZiAiJGRpcnBhcnQvJGZpbGUiICYmIGNvbnRpbnVlCisgICAgICBmZGlyPWBBU19ESVJOQU1FKFsiJGZpbGUiXSlgCisgICAgICBBU19NS0RJUl9QKFskZGlycGFydC8kZmRpcl0pCisgICAgICAjIGVjaG8gImNyZWF0aW5nICRkaXJwYXJ0LyRmaWxlIgorICAgICAgZWNobyAnIyBkdW1teScgPiAiJGRpcnBhcnQvJGZpbGUiCisgICAgZG9uZQorICBkb25lCit9CitdKSMgX0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTCisKKworIyBBTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUaGlzIG1hY3JvIHNob3VsZCBvbmx5IGJlIGludm9rZWQgb25jZSAtLSB1c2UgdmlhIEFDX1JFUVVJUkUuCisjCisjIFRoaXMgY29kZSBpcyBvbmx5IHJlcXVpcmVkIHdoZW4gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcKKyMgaXMgZW5hYmxlZC4gIEZJWE1FLiAgVGhpcyBjcmVhdGVzIGVhY2ggYC5QJyBmaWxlIHRoYXQgd2Ugd2lsbAorIyBuZWVkIGluIG9yZGVyIHRvIGJvb3RzdHJhcCB0aGUgZGVwZW5kZW5jeSBoYW5kbGluZyBjb2RlLgorQUNfREVGVU4oW0FNX09VVFBVVF9ERVBFTkRFTkNZX0NPTU1BTkRTXSwKK1tBQ19DT05GSUdfQ09NTUFORFMoW2RlcGZpbGVzXSwKKyAgICAgW3Rlc3QgeCIkQU1ERVBfVFJVRSIgIT0geCIiIHx8IF9BTV9PVVRQVVRfREVQRU5ERU5DWV9DT01NQU5EU10sCisgICAgIFtBTURFUF9UUlVFPSIkQU1ERVBfVFJVRSIgYWNfYXV4X2Rpcj0iJGFjX2F1eF9kaXIiXSkKK10pCisKKyMgRG8gYWxsIHRoZSB3b3JrIGZvciBBdXRvbWFrZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCisjIDIwMDUsIDIwMDYsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMTYKKworIyBUaGlzIG1hY3JvIGFjdHVhbGx5IGRvZXMgdG9vIG11Y2guICBTb21lIGNoZWNrcyBhcmUgb25seSBuZWVkZWQgaWYKKyMgeW91ciBwYWNrYWdlIGRvZXMgY2VydGFpbiB0aGluZ3MuICBCdXQgdGhpcyBpc24ndCByZWFsbHkgYSBiaWcgZGVhbC4KKworIyBBTV9JTklUX0FVVE9NQUtFKFBBQ0tBR0UsIFZFUlNJT04sIFtOTy1ERUZJTkVdKQorIyBBTV9JTklUX0FVVE9NQUtFKFtPUFRJT05TXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhlIGNhbGwgd2l0aCBQQUNLQUdFIGFuZCBWRVJTSU9OIGFyZ3VtZW50cyBpcyB0aGUgb2xkIHN0eWxlCisjIGNhbGwgKHByZSBhdXRvY29uZi0yLjUwKSwgd2hpY2ggaXMgYmVpbmcgcGhhc2VkIG91dC4gIFBBQ0tBR0UKKyMgYW5kIFZFUlNJT04gc2hvdWxkIG5vdyBiZSBwYXNzZWQgdG8gQUNfSU5JVCBhbmQgcmVtb3ZlZCBmcm9tCisjIHRoZSBjYWxsIHRvIEFNX0lOSVRfQVVUT01BS0UuCisjIFdlIHN1cHBvcnQgYm90aCBjYWxsIHN0eWxlcyBmb3IgdGhlIHRyYW5zaXRpb24uICBBZnRlcgorIyB0aGUgbmV4dCBBdXRvbWFrZSByZWxlYXNlLCBBdXRvY29uZiBjYW4gbWFrZSB0aGUgQUNfSU5JVAorIyBhcmd1bWVudHMgbWFuZGF0b3J5LCBhbmQgdGhlbiB3ZSBjYW4gZGVwZW5kIG9uIGEgbmV3IEF1dG9jb25mCisjIHJlbGVhc2UgYW5kIGRyb3AgdGhlIG9sZCBjYWxsIHN1cHBvcnQuCitBQ19ERUZVTihbQU1fSU5JVF9BVVRPTUFLRV0sCitbQUNfUFJFUkVRKFsyLjYyXSlkbmwKK2RubCBBdXRvY29uZiB3YW50cyB0byBkaXNhbGxvdyBBTV8gbmFtZXMuICBXZSBleHBsaWNpdGx5IGFsbG93CitkbmwgdGhlIG9uZXMgd2UgY2FyZSBhYm91dC4KK200X3BhdHRlcm5fYWxsb3coW15BTV9bQS1aXStGTEFHUyRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAoraWYgdGVzdCAiYGNkICRzcmNkaXIgJiYgcHdkYCIgIT0gImBwd2RgIjsgdGhlbgorICAjIFVzZSAtSSQoc3JjZGlyKSBvbmx5IHdoZW4gJChzcmNkaXIpICE9IC4sIHNvIHRoYXQgbWFrZSdzIG91dHB1dAorICAjIGlzIG5vdCBwb2xsdXRlZCB3aXRoIHJlcGVhdGVkICItSS4iCisgIEFDX1NVQlNUKFthbV9faXNyY10sIFsnIC1JJChzcmNkaXIpJ10pX0FNX1NVQlNUX05PVE1BS0UoW2FtX19pc3JjXSlkbmwKKyAgIyB0ZXN0IHRvIHNlZSBpZiBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkCisgIGlmIHRlc3QgLWYgJHNyY2Rpci9jb25maWcuc3RhdHVzOyB0aGVuCisgICAgQUNfTVNHX0VSUk9SKFtzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuICJtYWtlIGRpc3RjbGVhbiIgdGhlcmUgZmlyc3RdKQorICBmaQorZmkKKworIyB0ZXN0IHdoZXRoZXIgd2UgaGF2ZSBjeWdwYXRoCitpZiB0ZXN0IC16ICIkQ1lHUEFUSF9XIjsgdGhlbgorICBpZiAoY3lncGF0aCAtLXZlcnNpb24pID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKyAgICBDWUdQQVRIX1c9J2N5Z3BhdGggLXcnCisgIGVsc2UKKyAgICBDWUdQQVRIX1c9ZWNobworICBmaQorZmkKK0FDX1NVQlNUKFtDWUdQQVRIX1ddKQorCisjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCitkbmwgRGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjYWxscy4KK200X2lmdmFsKFskMl0sCitbbTRfaWZ2YWwoWyQzXSwgW19BTV9TRVRfT1BUSU9OKFtuby1kZWZpbmVdKV0pZG5sCisgQUNfU1VCU1QoW1BBQ0tBR0VdLCBbJDFdKWRubAorIEFDX1NVQlNUKFtWRVJTSU9OXSwgWyQyXSldLAorW19BTV9TRVRfT1BUSU9OUyhbJDFdKWRubAorZG5sIERpYWdub3NlIG9sZC1zdHlsZSBBQ19JTklUIHdpdGggbmV3LXN0eWxlIEFNX0FVVE9NQUtFX0lOSVQuCittNF9pZihtNF9pZmRlZihbQUNfUEFDS0FHRV9OQU1FXSwgMSltNF9pZmRlZihbQUNfUEFDS0FHRV9WRVJTSU9OXSwgMSksIDExLCwKKyAgW200X2ZhdGFsKFtBQ19JTklUIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBwYWNrYWdlIGFuZCB2ZXJzaW9uIGFyZ3VtZW50c10pXSlkbmwKKyBBQ19TVUJTVChbUEFDS0FHRV0sIFsnQUNfUEFDS0FHRV9UQVJOQU1FJ10pZG5sCisgQUNfU1VCU1QoW1ZFUlNJT05dLCBbJ0FDX1BBQ0tBR0VfVkVSU0lPTiddKV0pZG5sCisKK19BTV9JRl9PUFRJT04oW25vLWRlZmluZV0sLAorW0FDX0RFRklORV9VTlFVT1RFRChQQUNLQUdFLCAiJFBBQ0tBR0UiLCBbTmFtZSBvZiBwYWNrYWdlXSkKKyBBQ19ERUZJTkVfVU5RVU9URUQoVkVSU0lPTiwgIiRWRVJTSU9OIiwgW1ZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2VdKV0pZG5sCisKKyMgU29tZSB0b29scyBBdXRvbWFrZSBuZWVkcy4KK0FDX1JFUVVJUkUoW0FNX1NBTklUWV9DSEVDS10pZG5sCitBQ19SRVFVSVJFKFtBQ19BUkdfUFJPR1JBTV0pZG5sCitBTV9NSVNTSU5HX1BST0coQUNMT0NBTCwgYWNsb2NhbC0ke2FtX19hcGlfdmVyc2lvbn0pCitBTV9NSVNTSU5HX1BST0coQVVUT0NPTkYsIGF1dG9jb25mKQorQU1fTUlTU0lOR19QUk9HKEFVVE9NQUtFLCBhdXRvbWFrZS0ke2FtX19hcGlfdmVyc2lvbn0pCitBTV9NSVNTSU5HX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikKK0FNX01JU1NJTkdfUFJPRyhNQUtFSU5GTywgbWFrZWluZm8pCitBQ19SRVFVSVJFKFtBTV9QUk9HX0lOU1RBTExfU0hdKWRubAorQUNfUkVRVUlSRShbQU1fUFJPR19JTlNUQUxMX1NUUklQXSlkbmwKK0FDX1JFUVVJUkUoW0FNX1BST0dfTUtESVJfUF0pZG5sCisjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgorIyBzb21lIHBsYXRmb3Jtcy4KK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorQUNfUkVRVUlSRShbQU1fU0VUX0xFQURJTkdfRE9UXSlkbmwKK19BTV9JRl9PUFRJT04oW3Rhci11c3Rhcl0sIFtfQU1fUFJPR19UQVIoW3VzdGFyXSldLAorCSAgICAgIFtfQU1fSUZfT1BUSU9OKFt0YXItcGF4XSwgW19BTV9QUk9HX1RBUihbcGF4XSldLAorCQkJICAgICBbX0FNX1BST0dfVEFSKFt2N10pXSldKQorX0FNX0lGX09QVElPTihbbm8tZGVwZW5kZW5jaWVzXSwsCitbQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfQ0NdLAorCQkgIFtfQU1fREVQRU5ERU5DSUVTKENDKV0sCisJCSAgW2RlZmluZShbQUNfUFJPR19DQ10sCisJCQkgIGRlZm4oW0FDX1BST0dfQ0NdKVtfQU1fREVQRU5ERU5DSUVTKENDKV0pXSlkbmwKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCisJCSAgW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0sCisJCSAgW2RlZmluZShbQUNfUFJPR19DWFhdLAorCQkJICBkZWZuKFtBQ19QUk9HX0NYWF0pW19BTV9ERVBFTkRFTkNJRVMoQ1hYKV0pXSlkbmwKK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX09CSkNdLAorCQkgIFtfQU1fREVQRU5ERU5DSUVTKE9CSkMpXSwKKwkJICBbZGVmaW5lKFtBQ19QUk9HX09CSkNdLAorCQkJICBkZWZuKFtBQ19QUk9HX09CSkNdKVtfQU1fREVQRU5ERU5DSUVTKE9CSkMpXSldKWRubAorXSkKK19BTV9JRl9PUFRJT04oW3NpbGVudC1ydWxlc10sIFtBQ19SRVFVSVJFKFtBTV9TSUxFTlRfUlVMRVNdKV0pZG5sCitkbmwgVGhlIGBwYXJhbGxlbC10ZXN0cycgZHJpdmVyIG1heSBuZWVkIHRvIGtub3cgYWJvdXQgRVhFRVhULCBzbyBhZGQgdGhlCitkbmwgYGFtX19FWEVFWFQnIGNvbmRpdGlvbmFsIGlmIF9BTV9DT01QSUxFUl9FWEVFWFQgd2FzIHNlZW4uICBUaGlzIG1hY3JvCitkbmwgaXMgaG9va2VkIG9udG8gX0FDX0NPTVBJTEVSX0VYRUVYVCBlYXJseSwgc2VlIGJlbG93LgorQUNfQ09ORklHX0NPTU1BTkRTX1BSRShkbmwKK1ttNF9wcm92aWRlX2lmKFtfQU1fQ09NUElMRVJfRVhFRVhUXSwKKyAgW0FNX0NPTkRJVElPTkFMKFthbV9fRVhFRVhUXSwgW3Rlc3QgLW4gIiRFWEVFWFQiXSldKV0pZG5sCitdKQorCitkbmwgSG9vayBpbnRvIGBfQUNfQ09NUElMRVJfRVhFRVhUJyBlYXJseSB0byBsZWFybiBpdHMgZXhwYW5zaW9uLiAgRG8gbm90CitkbmwgYWRkIHRoZSBjb25kaXRpb25hbCByaWdodCBoZXJlLCBhcyBfQUNfQ09NUElMRVJfRVhFRVhUIG1heSBiZSBmdXJ0aGVyCitkbmwgbWFuZ2xlZCBieSBBdXRvY29uZiBhbmQgcnVuIGluIGEgc2hlbGwgY29uZGl0aW9uYWwgc3RhdGVtZW50LgorbTRfZGVmaW5lKFtfQUNfQ09NUElMRVJfRVhFRVhUXSwKK200X2RlZm4oW19BQ19DT01QSUxFUl9FWEVFWFRdKVttNF9wcm92aWRlKFtfQU1fQ09NUElMRVJfRVhFRVhUXSldKQorCisKKyMgV2hlbiBjb25maWcuc3RhdHVzIGdlbmVyYXRlcyBhIGhlYWRlciwgd2UgbXVzdCB1cGRhdGUgdGhlIHN0YW1wLWggZmlsZS4KKyMgVGhpcyBmaWxlIHJlc2lkZXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBjb25maWcgaGVhZGVyCisjIHRoYXQgaXMgZ2VuZXJhdGVkLiAgVGhlIHN0YW1wIGZpbGVzIGFyZSBudW1iZXJlZCB0byBoYXZlIGRpZmZlcmVudCBuYW1lcy4KKworIyBBdXRvY29uZiBjYWxscyBfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LICh3aGVuIGRlZmluZWQpIGluIHRoZQorIyBsb29wIHdoZXJlIGNvbmZpZy5zdGF0dXMgY3JlYXRlcyB0aGUgaGVhZGVycywgc28gd2UgY2FuIGdlbmVyYXRlCisjIG91ciBzdGFtcCBmaWxlcyB0aGVyZS4KK0FDX0RFRlVOKFtfQUNfQU1fQ09ORklHX0hFQURFUl9IT09LXSwKK1sjIENvbXB1dGUgJDEncyBpbmRleCBpbiAkY29uZmlnX2hlYWRlcnMuCitfYW1fYXJnPSQxCitfYW1fc3RhbXBfY291bnQ9MQorZm9yIF9hbV9oZWFkZXIgaW4gJGNvbmZpZ19oZWFkZXJzIDo7IGRvCisgIGNhc2UgJF9hbV9oZWFkZXIgaW4KKyAgICAkX2FtX2FyZyB8ICRfYW1fYXJnOiogKQorICAgICAgYnJlYWsgOzsKKyAgICAqICkKKyAgICAgIF9hbV9zdGFtcF9jb3VudD1gZXhwciAkX2FtX3N0YW1wX2NvdW50ICsgMWAgOzsKKyAgZXNhYworZG9uZQorZWNobyAidGltZXN0YW1wIGZvciAkX2FtX2FyZyIgPmBBU19ESVJOQU1FKFsiJF9hbV9hcmciXSlgL3N0YW1wLWhbXSRfYW1fc3RhbXBfY291bnRdKQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMywgMjAwNSwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBBTV9QUk9HX0lOU1RBTExfU0gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSAkaW5zdGFsbF9zaC4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU0hdLAorW0FDX1JFUVVJUkUoW0FNX0FVWF9ESVJfRVhQQU5EXSlkbmwKK2lmIHRlc3QgeCIke2luc3RhbGxfc2h9IiAhPSB4c2V0OyB0aGVuCisgIGNhc2UgJGFtX2F1eF9kaXIgaW4KKyAgKlwgKiB8ICpcCSopCisgICAgaW5zdGFsbF9zaD0iXCR7U0hFTEx9ICckYW1fYXV4X2Rpci9pbnN0YWxsLXNoJyIgOzsKKyAgKikKKyAgICBpbnN0YWxsX3NoPSJcJHtTSEVMTH0gJGFtX2F1eF9kaXIvaW5zdGFsbC1zaCIKKyAgZXNhYworZmkKK0FDX1NVQlNUKGluc3RhbGxfc2gpXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDIKKworIyBDaGVjayB3aGV0aGVyIHRoZSB1bmRlcmx5aW5nIGZpbGUtc3lzdGVtIHN1cHBvcnRzIGZpbGVuYW1lcworIyB3aXRoIGEgbGVhZGluZyBkb3QuICBGb3IgaW5zdGFuY2UgTVMtRE9TIGRvZXNuJ3QuCitBQ19ERUZVTihbQU1fU0VUX0xFQURJTkdfRE9UXSwKK1tybSAtcmYgLnRzdCAyPi9kZXYvbnVsbAorbWtkaXIgLnRzdCAyPi9kZXYvbnVsbAoraWYgdGVzdCAtZCAudHN0OyB0aGVuCisgIGFtX19sZWFkaW5nX2RvdD0uCitlbHNlCisgIGFtX19sZWFkaW5nX2RvdD1fCitmaQorcm1kaXIgLnRzdCAyPi9kZXYvbnVsbAorQUNfU1VCU1QoW2FtX19sZWFkaW5nX2RvdF0pXSkKKworIyBDaGVjayB0byBzZWUgaG93ICdtYWtlJyB0cmVhdHMgaW5jbHVkZXMuCSAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDQKKworIyBBTV9NQUtFX0lOQ0xVREUoKQorIyAtLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB0byBzZWUgaG93IG1ha2UgdHJlYXRzIGluY2x1ZGVzLgorQUNfREVGVU4oW0FNX01BS0VfSU5DTFVERV0sCitbYW1fbWFrZT0ke01BS0UtbWFrZX0KK2NhdCA+IGNvbmZpbmMgPDwgJ0VORCcKK2FtX19kb2l0OgorCUBlY2hvIHRoaXMgaXMgdGhlIGFtX19kb2l0IHRhcmdldAorLlBIT05ZOiBhbV9fZG9pdAorRU5ECisjIElmIHdlIGRvbid0IGZpbmQgYW4gaW5jbHVkZSBkaXJlY3RpdmUsIGp1c3QgY29tbWVudCBvdXQgdGhlIGNvZGUuCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzdHlsZSBvZiBpbmNsdWRlIHVzZWQgYnkgJGFtX21ha2VdKQorYW1fX2luY2x1ZGU9IiMiCithbV9fcXVvdGU9CitfYW1fcmVzdWx0PW5vbmUKKyMgRmlyc3QgdHJ5IEdOVSBtYWtlIHN0eWxlIGluY2x1ZGUuCitlY2hvICJpbmNsdWRlIGNvbmZpbmMiID4gY29uZm1mCisjIElnbm9yZSBhbGwga2luZHMgb2YgYWRkaXRpb25hbCBvdXRwdXQgZnJvbSBgbWFrZScuCitjYXNlIGAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCBpbiAjKAorKnRoZVwgYW1fX2RvaXRcIHRhcmdldCopCisgIGFtX19pbmNsdWRlPWluY2x1ZGUKKyAgYW1fX3F1b3RlPQorICBfYW1fcmVzdWx0PUdOVQorICA7OworZXNhYworIyBOb3cgdHJ5IEJTRCBtYWtlIHN0eWxlIGluY2x1ZGUuCitpZiB0ZXN0ICIkYW1fX2luY2x1ZGUiID0gIiMiOyB0aGVuCisgICBlY2hvICcuaW5jbHVkZSAiY29uZmluYyInID4gY29uZm1mCisgICBjYXNlIGAkYW1fbWFrZSAtcyAtZiBjb25mbWYgMj4gL2Rldi9udWxsYCBpbiAjKAorICAgKnRoZVwgYW1fX2RvaXRcIHRhcmdldCopCisgICAgIGFtX19pbmNsdWRlPS5pbmNsdWRlCisgICAgIGFtX19xdW90ZT0iXCIiCisgICAgIF9hbV9yZXN1bHQ9QlNECisgICAgIDs7CisgICBlc2FjCitmaQorQUNfU1VCU1QoW2FtX19pbmNsdWRlXSkKK0FDX1NVQlNUKFthbV9fcXVvdGVdKQorQUNfTVNHX1JFU1VMVChbJF9hbV9yZXN1bHRdKQorcm0gLWYgY29uZmluYyBjb25mbWYKK10pCisKKyMgRmFrZSB0aGUgZXhpc3RlbmNlIG9mIHByb2dyYW1zIHRoYXQgR05VIG1haW50YWluZXJzIHVzZS4gIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDgKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNgorCisjIEFNX01JU1NJTkdfUFJPRyhOQU1FLCBQUk9HUkFNKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBTV9NSVNTSU5HX1BST0ddLAorW0FDX1JFUVVJUkUoW0FNX01JU1NJTkdfSEFTX1JVTl0pCiskMT0keyQxLSIke2FtX21pc3NpbmdfcnVufSQyIn0KK0FDX1NVQlNUKCQxKV0pCisKKworIyBBTV9NSVNTSU5HX0hBU19SVU4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBNSVNTSU5HIGlmIG5vdCBkZWZpbmVkIHNvIGZhciBhbmQgdGVzdCBpZiBpdCBzdXBwb3J0cyAtLXJ1bi4KKyMgSWYgaXQgZG9lcywgc2V0IGFtX21pc3NpbmdfcnVuIHRvIHVzZSBpdCwgb3RoZXJ3aXNlLCB0byBub3RoaW5nLgorQUNfREVGVU4oW0FNX01JU1NJTkdfSEFTX1JVTl0sCitbQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKWRubAorQUNfUkVRVUlSRV9BVVhfRklMRShbbWlzc2luZ10pZG5sCitpZiB0ZXN0IHgiJHtNSVNTSU5HK3NldH0iICE9IHhzZXQ7IHRoZW4KKyAgY2FzZSAkYW1fYXV4X2RpciBpbgorICAqXCAqIHwgKlwJKikKKyAgICBNSVNTSU5HPSJcJHtTSEVMTH0gXCIkYW1fYXV4X2Rpci9taXNzaW5nXCIiIDs7CisgICopCisgICAgTUlTU0lORz0iXCR7U0hFTEx9ICRhbV9hdXhfZGlyL21pc3NpbmciIDs7CisgIGVzYWMKK2ZpCisjIFVzZSBldmFsIHRvIGV4cGFuZCAkU0hFTEwKK2lmIGV2YWwgIiRNSVNTSU5HIC0tcnVuIHRydWUiOyB0aGVuCisgIGFtX21pc3NpbmdfcnVuPSIkTUlTU0lORyAtLXJ1biAiCitlbHNlCisgIGFtX21pc3NpbmdfcnVuPQorICBBQ19NU0dfV0FSTihbYG1pc3NpbmcnIHNjcmlwdCBpcyB0b28gb2xkIG9yIG1pc3NpbmddKQorZmkKK10pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIEFNX1BST0dfTUtESVJfUAorIyAtLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgZm9yIGBta2RpciAtcCcuCitBQ19ERUZVTihbQU1fUFJPR19NS0RJUl9QXSwKK1tBQ19QUkVSRVEoWzIuNjBdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19NS0RJUl9QXSlkbmwKK2RubCBBdXRvbWFrZSAxLjggdG8gMS45LjYgdXNlZCB0byBkZWZpbmUgbWtkaXJfcC4gIFdlIG5vdyB1c2UgTUtESVJfUCwKK2RubCB3aGlsZSBrZWVwaW5nIGEgZGVmaW5pdGlvbiBvZiBta2Rpcl9wIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorZG5sIEBNS0RJUl9QQCBpcyBtYWdpYzogQUNfT1VUUFVUIGFkanVzdHMgaXRzIHZhbHVlIGZvciBlYWNoIE1ha2VmaWxlLgorZG5sIEhvd2V2ZXIgd2UgY2Fubm90IGRlZmluZSBta2Rpcl9wIGFzICQoTUtESVJfUCkgZm9yIHRoZSBzYWtlIG9mCitkbmwgTWFrZWZpbGUuaW5zIHRoYXQgZG8gbm90IGRlZmluZSBNS0RJUl9QLCBzbyB3ZSBkbyBvdXIgb3duCitkbmwgYWRqdXN0bWVudCB1c2luZyB0b3BfYnVpbGRkaXIgKHdoaWNoIGlzIGRlZmluZWQgbW9yZSBvZnRlbiB0aGFuCitkbmwgTUtESVJfUCkuCitBQ19TVUJTVChbbWtkaXJfcF0sIFsiJE1LRElSX1AiXSlkbmwKK2Nhc2UgJG1rZGlyX3AgaW4KKyAgW1tcXC8kXV0qIHwgPzpbW1xcL11dKikgOzsKKyAgKi8qKSBta2Rpcl9wPSJcJCh0b3BfYnVpbGRkaXIpLyRta2Rpcl9wIiA7OworZXNhYworXSkKKworIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAgLSotIEF1dG9jb25mIC0qLQorCisjIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNSwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNAorCisjIF9BTV9NQU5HTEVfT1BUSU9OKE5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0FNX01BTkdMRV9PUFRJT05dLAorW1tfQU1fT1BUSU9OX11tNF9icGF0c3Vic3QoJDEsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCisKKyMgX0FNX1NFVF9PUFRJT04oTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBvcHRpb24gTkFNRS4gIFByZXNlbnRseSB0aGF0IG9ubHkgbWVhbnMgZGVmaW5pbmcgYSBmbGFnIGZvciB0aGlzIG9wdGlvbi4KK0FDX0RFRlVOKFtfQU1fU0VUX09QVElPTl0sCitbbTRfZGVmaW5lKF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCAxKV0pCisKKyMgX0FNX1NFVF9PUFRJT05TKE9QVElPTlMpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT1BUSU9OUyBpcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIEF1dG9tYWtlIG9wdGlvbnMuCitBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05TXSwKK1ttNF9mb3JlYWNoX3coW19BTV9PcHRpb25dLCBbJDFdLCBbX0FNX1NFVF9PUFRJT04oX0FNX09wdGlvbildKV0pCisKKyMgX0FNX0lGX09QVElPTihPUFRJT04sIElGLVNFVCwgW0lGLU5PVC1TRVRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5PVC1TRVQgb3RoZXJ3aXNlLgorQUNfREVGVU4oW19BTV9JRl9PUFRJT05dLAorW200X2lmc2V0KF9BTV9NQU5HTEVfT1BUSU9OKFskMV0pLCBbJDJdLCBbJDNdKV0pCisKKyMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGJ1aWxkIGVudmlyb25tZW50IGlzIHNhbmUuICAgIC0qLSBBdXRvY29uZiAtKi0KKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDgKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgNQorCisjIEFNX1NBTklUWV9DSEVDSworIyAtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtBTV9TQU5JVFlfQ0hFQ0tdLAorW0FDX01TR19DSEVDS0lORyhbd2hldGhlciBidWlsZCBlbnZpcm9ubWVudCBpcyBzYW5lXSkKKyMgSnVzdCBpbiBjYXNlCitzbGVlcCAxCitlY2hvIHRpbWVzdGFtcCA+IGNvbmZ0ZXN0LmZpbGUKKyMgUmVqZWN0IHVuc2FmZSBjaGFyYWN0ZXJzIGluICRzcmNkaXIgb3IgdGhlIGFic29sdXRlIHdvcmtpbmcgZGlyZWN0b3J5CisjIG5hbWUuICBBY2NlcHQgc3BhY2UgYW5kIHRhYiBvbmx5IGluIHRoZSBsYXR0ZXIuCithbV9sZj0nCisnCitjYXNlIGBwd2RgIGluCisgICpbW1xcXCJcI1wkXCZcJ1xgJGFtX2xmXV0qKQorICAgIEFDX01TR19FUlJPUihbdW5zYWZlIGFic29sdXRlIHdvcmtpbmcgZGlyZWN0b3J5IG5hbWVdKTs7Citlc2FjCitjYXNlICRzcmNkaXIgaW4KKyAgKltbXFxcIlwjXCRcJlwnXGAkYW1fbGZcIFwJXV0qKQorICAgIEFDX01TR19FUlJPUihbdW5zYWZlIHNyY2RpciB2YWx1ZTogYCRzcmNkaXInXSk7OworZXNhYworCisjIERvIGBzZXQnIGluIGEgc3Vic2hlbGwgc28gd2UgZG9uJ3QgY2xvYmJlciB0aGUgY3VycmVudCBzaGVsbCdzCisjIGFyZ3VtZW50cy4gIE11c3QgdHJ5IC1MIGZpcnN0IGluIGNhc2UgY29uZmlndXJlIGlzIGFjdHVhbGx5IGEKKyMgc3ltbGluazsgc29tZSBzeXN0ZW1zIHBsYXkgd2VpcmQgZ2FtZXMgd2l0aCB0aGUgbW9kIHRpbWUgb2Ygc3ltbGlua3MKKyMgKGVnIEZyZWVCU0QgcmV0dXJucyB0aGUgbW9kIHRpbWUgb2YgdGhlIHN5bWxpbmsncyBjb250YWluaW5nCisjIGRpcmVjdG9yeSkuCitpZiAoCisgICBzZXQgWCBgbHMgLUx0ICIkc3JjZGlyL2NvbmZpZ3VyZSIgY29uZnRlc3QuZmlsZSAyPiAvZGV2L251bGxgCisgICBpZiB0ZXN0ICIkWypdIiA9ICJYIjsgdGhlbgorICAgICAgIyAtTCBkaWRuJ3Qgd29yay4KKyAgICAgIHNldCBYIGBscyAtdCAiJHNyY2Rpci9jb25maWd1cmUiIGNvbmZ0ZXN0LmZpbGVgCisgICBmaQorICAgcm0gLWYgY29uZnRlc3QuZmlsZQorICAgaWYgdGVzdCAiJFsqXSIgIT0gIlggJHNyY2Rpci9jb25maWd1cmUgY29uZnRlc3QuZmlsZSIgXAorICAgICAgJiYgdGVzdCAiJFsqXSIgIT0gIlggY29uZnRlc3QuZmlsZSAkc3JjZGlyL2NvbmZpZ3VyZSI7IHRoZW4KKworICAgICAgIyBJZiBuZWl0aGVyIG1hdGNoZWQsIHRoZW4gd2UgaGF2ZSBhIGJyb2tlbiBscy4gIFRoaXMgY2FuIGhhcHBlbgorICAgICAgIyBpZiwgZm9yIGluc3RhbmNlLCBDT05GSUdfU0hFTEwgaXMgYmFzaCBhbmQgaXQgaW5oZXJpdHMgYQorICAgICAgIyBicm9rZW4gbHMgYWxpYXMgZnJvbSB0aGUgZW52aXJvbm1lbnQuICBUaGlzIGhhcyBhY3R1YWxseQorICAgICAgIyBoYXBwZW5lZC4gIFN1Y2ggYSBzeXN0ZW0gY291bGQgbm90IGJlIGNvbnNpZGVyZWQgInNhbmUiLgorICAgICAgQUNfTVNHX0VSUk9SKFtscyAtdCBhcHBlYXJzIHRvIGZhaWwuICBNYWtlIHN1cmUgdGhlcmUgaXMgbm90IGEgYnJva2VuCithbGlhcyBpbiB5b3VyIGVudmlyb25tZW50XSkKKyAgIGZpCisKKyAgIHRlc3QgIiRbMl0iID0gY29uZnRlc3QuZmlsZQorICAgKQordGhlbgorICAgIyBPay4KKyAgIDoKK2Vsc2UKKyAgIEFDX01TR19FUlJPUihbbmV3bHkgY3JlYXRlZCBmaWxlIGlzIG9sZGVyIHRoYW4gZGlzdHJpYnV0ZWQgZmlsZXMhCitDaGVjayB5b3VyIHN5c3RlbSBjbG9ja10pCitmaQorQUNfTVNHX1JFU1VMVCh5ZXMpXSkKKworIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgQU1fUFJPR19JTlNUQUxMX1NUUklQCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBPbmUgaXNzdWUgd2l0aCB2ZW5kb3IgYGluc3RhbGwnIChldmVuIEdOVSkgaXMgdGhhdCB5b3UgY2FuJ3QKKyMgc3BlY2lmeSB0aGUgcHJvZ3JhbSB1c2VkIHRvIHN0cmlwIGJpbmFyaWVzLiAgVGhpcyBpcyBlc3BlY2lhbGx5CisjIGFubm95aW5nIGluIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudHMsIHdoZXJlIHRoZSBidWlsZCdzIHN0cmlwCisjIGlzIHVubGlrZWx5IHRvIGhhbmRsZSB0aGUgaG9zdCdzIGJpbmFyaWVzLgorIyBGb3J0dW5hdGVseSBpbnN0YWxsLXNoIHdpbGwgaG9ub3IgYSBTVFJJUFBST0cgdmFyaWFibGUsIHNvIHdlCisjIGFsd2F5cyB1c2UgaW5zdGFsbC1zaCBpbiBgbWFrZSBpbnN0YWxsLXN0cmlwJywgYW5kIGluaXRpYWxpemUKKyMgU1RSSVBQUk9HIHdpdGggdGhlIHZhbHVlIG9mIHRoZSBTVFJJUCB2YXJpYWJsZSAoc2V0IGJ5IHRoZSB1c2VyKS4KK0FDX0RFRlVOKFtBTV9QUk9HX0lOU1RBTExfU1RSSVBdLAorW0FDX1JFUVVJUkUoW0FNX1BST0dfSU5TVEFMTF9TSF0pZG5sCisjIEluc3RhbGxlZCBiaW5hcmllcyBhcmUgdXN1YWxseSBzdHJpcHBlZCB1c2luZyBgc3RyaXAnIHdoZW4gdGhlIHVzZXIKKyMgcnVuIGBtYWtlIGluc3RhbGwtc3RyaXAnLiAgSG93ZXZlciBgc3RyaXAnIG1pZ2h0IG5vdCBiZSB0aGUgcmlnaHQKKyMgdG9vbCB0byB1c2UgaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnRzLCB0aGVyZWZvcmUgQXV0b21ha2UKKyMgd2lsbCBob25vciB0aGUgYFNUUklQJyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBvdmVycnVsZSB0aGlzIHByb2dyYW0uCitkbmwgRG9uJ3QgdGVzdCBmb3IgJGNyb3NzX2NvbXBpbGluZyA9IHllcywgYmVjYXVzZSBpdCBtaWdodCBiZSBgbWF5YmUnLgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgIT0gbm87IHRoZW4KKyAgQUNfQ0hFQ0tfVE9PTChbU1RSSVBdLCBbc3RyaXBdLCA6KQorZmkKK0lOU1RBTExfU1RSSVBfUFJPR1JBTT0iXCQoaW5zdGFsbF9zaCkgLWMgLXMiCitBQ19TVUJTVChbSU5TVEFMTF9TVFJJUF9QUk9HUkFNXSldKQorCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBzZXJpYWwgMgorCisjIF9BTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJldmVudCBBdXRvbWFrZSBmcm9tIG91dHB1dHRpbmcgVkFSSUFCTEUgPSBAVkFSSUFCTEVAIGluIE1ha2VmaWxlLmluLgorIyBUaGlzIG1hY3JvIGlzIHRyYWNlZCBieSBBdXRvbWFrZS4KK0FDX0RFRlVOKFtfQU1fU1VCU1RfTk9UTUFLRV0pCisKKyMgQU1fU1VCU1RfTk9UTUFLRShWQVJJQUJMRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFB1YmxpYyBzaXN0ZXIgb2YgX0FNX1NVQlNUX05PVE1BS0UuCitBQ19ERUZVTihbQU1fU1VCU1RfTk9UTUFLRV0sIFtfQU1fU1VCU1RfTk9UTUFLRSgkQCldKQorCisjIENoZWNrIGhvdyB0byBjcmVhdGUgYSB0YXJiYWxsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCisKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyMgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCAyCisKKyMgX0FNX1BST0dfVEFSKEZPUk1BVCkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwgaW4gZm9ybWF0IEZPUk1BVC4KKyMgRk9STUFUIHNob3VsZCBiZSBvbmUgb2YgYHY3JywgYHVzdGFyJywgb3IgYHBheCcuCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX190YXIpIHRoYXQgaXMgYSBjb21tYW5kCisjIHdyaXRpbmcgdG8gc3Rkb3V0IGEgRk9STUFULXRhcmJhbGwgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisjICR0YXJkaXIuCisjICAgICB0YXJkaXI9ZGlyZWN0b3J5ICYmICQoYW1fX3RhcikgPiByZXN1bHQudGFyCisjCisjIFN1YnN0aXR1dGUgYSB2YXJpYWJsZSAkKGFtX191bnRhcikgdGhhdCBleHRyYWN0IHN1Y2gKKyMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KKyMgICAgICQoYW1fX3VudGFyKSA8IHJlc3VsdC50YXIKK0FDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAorWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KK0FNX01JU1NJTkdfUFJPRyhbQU1UQVJdLCBbdGFyXSkKK200X2lmKFskMV0sIFt2N10sCisgICAgIFthbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLSddLAorICAgICBbbTRfY2FzZShbJDFdLCBbdXN0YXJdLCwgW3BheF0sLAorICAgICAgICAgICAgICBbbTRfZmF0YWwoW1Vua25vd24gdGFyIGZvcm1hdF0pXSkKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNyZWF0ZSBhICQxIHRhciBhcmNoaXZlXSkKKyMgTG9vcCBvdmVyIGFsbCBrbm93biBtZXRob2RzIHRvIGNyZWF0ZSBhIHRhciBhcmNoaXZlIHVudGlsIG9uZSB3b3Jrcy4KK19hbV90b29scz0nZ251dGFyIG00X2lmKFskMV0sIFt1c3Rhcl0sIFtwbGFpbnRhcl0pIHBheCBjcGlvIG5vbmUnCitfYW1fdG9vbHM9JHthbV9jdl9wcm9nX3Rhcl8kMS0kX2FtX3Rvb2xzfQorIyBEbyBub3QgZm9sZCB0aGUgYWJvdmUgdHdvIGxpbmUgaW50byBvbmUsIGJlY2F1c2UgVHJ1NjQgc2ggYW5kCisjIFNvbGFyaXMgc2ggd2lsbCBub3QgZ3JvayBzcGFjZXMgaW4gdGhlIHJocyBvZiBgLScuCitmb3IgX2FtX3Rvb2wgaW4gJF9hbV90b29scworZG8KKyAgY2FzZSAkX2FtX3Rvb2wgaW4KKyAgZ251dGFyKQorICAgIGZvciBfYW1fdGFyIGluIHRhciBnbnV0YXIgZ3RhcjsKKyAgICBkbworICAgICAgQU1fUlVOX0xPRyhbJF9hbV90YXIgLS12ZXJzaW9uXSkgJiYgYnJlYWsKKyAgICBkb25lCisgICAgYW1fX3Rhcj0iJF9hbV90YXIgLS1mb3JtYXQ9bTRfaWYoWyQxXSwgW3BheF0sIFtwb3NpeF0sIFskMV0pIC1jaGYgLSAiJyIkJHRhcmRpciInCisgICAgYW1fX3Rhcl89IiRfYW1fdGFyIC0tZm9ybWF0PW00X2lmKFskMV0sIFtwYXhdLCBbcG9zaXhdLCBbJDFdKSAtY2hmIC0gIiciJHRhcmRpciInCisgICAgYW1fX3VudGFyPSIkX2FtX3RhciAteGYgLSIKKyAgICA7OworICBwbGFpbnRhcikKKyAgICAjIE11c3Qgc2tpcCBHTlUgdGFyOiBpZiBpdCBkb2VzIG5vdCBzdXBwb3J0IC0tZm9ybWF0PSBpdCBkb2Vzbid0IGNyZWF0ZQorICAgICMgdXN0YXIgdGFyYmFsbCBlaXRoZXIuCisgICAgKHRhciAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSAmJiBjb250aW51ZQorICAgIGFtX190YXI9J3RhciBjaGYgLSAiJCR0YXJkaXIiJworICAgIGFtX190YXJfPSd0YXIgY2hmIC0gIiR0YXJkaXIiJworICAgIGFtX191bnRhcj0ndGFyIHhmIC0nCisgICAgOzsKKyAgcGF4KQorICAgIGFtX190YXI9J3BheCAtTCAteCAkMSAtdyAiJCR0YXJkaXIiJworICAgIGFtX190YXJfPSdwYXggLUwgLXggJDEgLXcgIiR0YXJkaXIiJworICAgIGFtX191bnRhcj0ncGF4IC1yJworICAgIDs7CisgIGNwaW8pCisgICAgYW1fX3Rhcj0nZmluZCAiJCR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnCisgICAgYW1fX3Rhcl89J2ZpbmQgIiR0YXJkaXIiIC1wcmludCB8IGNwaW8gLW8gLUggJDEgLUwnCisgICAgYW1fX3VudGFyPSdjcGlvIC1pIC1IICQxIC1kJworICAgIDs7CisgIG5vbmUpCisgICAgYW1fX3Rhcj1mYWxzZQorICAgIGFtX190YXJfPWZhbHNlCisgICAgYW1fX3VudGFyPWZhbHNlCisgICAgOzsKKyAgZXNhYworCisgICMgSWYgdGhlIHZhbHVlIHdhcyBjYWNoZWQsIHN0b3Agbm93LiAgV2UganVzdCB3YW50ZWQgdG8gaGF2ZSBhbV9fdGFyCisgICMgYW5kIGFtX191bnRhciBzZXQuCisgIHRlc3QgLW4gIiR7YW1fY3ZfcHJvZ190YXJfJDF9IiAmJiBicmVhaworCisgICMgdGFyL3VudGFyIGEgZHVtbXkgZGlyZWN0b3J5LCBhbmQgc3RvcCBpZiB0aGUgY29tbWFuZCB3b3JrcworICBybSAtcmYgY29uZnRlc3QuZGlyCisgIG1rZGlyIGNvbmZ0ZXN0LmRpcgorICBlY2hvIEdyZXBNZSA+IGNvbmZ0ZXN0LmRpci9maWxlCisgIEFNX1JVTl9MT0coW3RhcmRpcj1jb25mdGVzdC5kaXIgJiYgZXZhbCAkYW1fX3Rhcl8gPmNvbmZ0ZXN0LnRhcl0pCisgIHJtIC1yZiBjb25mdGVzdC5kaXIKKyAgaWYgdGVzdCAtcyBjb25mdGVzdC50YXI7IHRoZW4KKyAgICBBTV9SVU5fTE9HKFskYW1fX3VudGFyIDxjb25mdGVzdC50YXJdKQorICAgIGdyZXAgR3JlcE1lIGNvbmZ0ZXN0LmRpci9maWxlID4vZGV2L251bGwgMj4mMSAmJiBicmVhaworICBmaQorZG9uZQorcm0gLXJmIGNvbmZ0ZXN0LmRpcgorCitBQ19DQUNIRV9WQUwoW2FtX2N2X3Byb2dfdGFyXyQxXSwgW2FtX2N2X3Byb2dfdGFyXyQxPSRfYW1fdG9vbF0pCitBQ19NU0dfUkVTVUxUKFskYW1fY3ZfcHJvZ190YXJfJDFdKV0pCitBQ19TVUJTVChbYW1fX3Rhcl0pCitBQ19TVUJTVChbYW1fX3VudGFyXSkKK10pICMgX0FNX1BST0dfVEFSCisKK200X2luY2x1ZGUoW200L2F4X2NvbmZpZ3VyZV9hcmdzLm00XSkKK200X2luY2x1ZGUoW200L2F4X2VuYWJsZV9idWlsZGRpci5tNF0pCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnLmd1ZXNzIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZy5ndWVzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYzg0YzY4Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZy5ndWVzcwpAQCAtMCwwICsxLDE1MDEgQEAKKyMhIC9iaW4vc2gKKyMgQXR0ZW1wdCB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMDktMTEtMjAnCisKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKKyMgMDIxMTAtMTMwMSwgVVNBLgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuICBQbGVhc2Ugc2VuZCBwYXRjaGVzIChjb250ZXh0CisjIGRpZmYgZm9ybWF0KSB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gYW5kIGluY2x1ZGUgYSBDaGFuZ2VMb2cKKyMgZW50cnkuCisjCisjIFRoaXMgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lIHNpbWlsYXIgdG8KKyMgY29uZmlnLnN1Yi4gIElmIGl0IHN1Y2NlZWRzLCBpdCBwcmludHMgdGhlIHN5c3RlbSBuYW1lIG9uIHN0ZG91dCwgYW5kCisjIGV4aXRzIHdpdGggMC4gIE90aGVyd2lzZSwgaXQgZXhpdHMgd2l0aCAxLgorIworIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dCisKK091dHB1dCB0aGUgY29uZmlndXJhdGlvbiBuYW1lIG9mIHRoZSBzeXN0ZW0gXGAkbWUnIGlzIHJ1biBvbi4KKworT3BlcmF0aW9uIG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQorCitPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCisyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTword2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgorCitoZWxwPSIKK1RyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKworIyBQYXJzZSBjb21tYW5kIGxpbmUKK3doaWxlIHRlc3QgJCMgLWd0IDAgOyBkbworICBjYXNlICQxIGluCisgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKyAgICAgICBlY2hvICIkdGltZXN0YW1wIiA7IGV4aXQgOzsKKyAgICAtLXZlcnNpb24gfCAtdiApCisgICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCA7OworICAgIC0taGVscCB8IC0taCogfCAtaCApCisgICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCA7OworICAgIC0tICkgICAgICMgU3RvcCBvcHRpb24gcHJvY2Vzc2luZworICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgIC0gKQkjIFVzZSBzdGRpbiBhcyBpbnB1dC4KKyAgICAgICBicmVhayA7OworICAgIC0qICkKKyAgICAgICBlY2hvICIkbWU6IGludmFsaWQgb3B0aW9uICQxJGhlbHAiID4mMgorICAgICAgIGV4aXQgMSA7OworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworaWYgdGVzdCAkIyAhPSAwOyB0aGVuCisgIGVjaG8gIiRtZTogdG9vIG1hbnkgYXJndW1lbnRzJGhlbHAiID4mMgorICBleGl0IDEKK2ZpCisKK3RyYXAgJ2V4aXQgMScgMSAyIDE1CisKKyMgQ0NfRk9SX0JVSUxEIC0tIGNvbXBpbGVyIHVzZWQgYnkgdGhpcyBzY3JpcHQuIE5vdGUgdGhhdCB0aGUgdXNlIG9mIGEKKyMgY29tcGlsZXIgdG8gYWlkIGluIHN5c3RlbSBkZXRlY3Rpb24gaXMgZGlzY291cmFnZWQgYXMgaXQgcmVxdWlyZXMKKyMgdGVtcG9yYXJ5IGZpbGVzIHRvIGJlIGNyZWF0ZWQgYW5kLCBhcyB5b3UgY2FuIHNlZSBiZWxvdywgaXQgaXMgYQorIyBoZWFkYWNoZSB0byBkZWFsIHdpdGggaW4gYSBwb3J0YWJsZSBmYXNoaW9uLgorCisjIEhpc3RvcmljYWxseSwgYENDX0ZPUl9CVUlMRCcgdXNlZCB0byBiZSBuYW1lZCBgSE9TVF9DQycuIFdlIHN0aWxsCisjIHVzZSBgSE9TVF9DQycgaWYgZGVmaW5lZCwgYnV0IGl0IGlzIGRlcHJlY2F0ZWQuCisKKyMgUG9ydGFibGUgdG1wIGRpcmVjdG9yeSBjcmVhdGlvbiBpbnNwaXJlZCBieSB0aGUgQXV0b2NvbmYgdGVhbS4KKworc2V0X2NjX2Zvcl9idWlsZD0nCit0cmFwICJleGl0Y29kZT1cJD87IChybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbCkgJiYgZXhpdCBcJGV4aXRjb2RlIiAwIDsKK3RyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7Cis6ICR7VE1QRElSPS90bXB9IDsKKyB7IHRtcD1gKHVtYXNrIDA3NyAmJiBta3RlbXAgLWQgIiRUTVBESVIvY2dYWFhYWFgiKSAyPi9kZXYvbnVsbGAgJiYgdGVzdCAtbiAiJHRtcCIgJiYgdGVzdCAtZCAiJHRtcCIgOyB9IHx8CisgeyB0ZXN0IC1uICIkUkFORE9NIiAmJiB0bXA9JFRNUERJUi9jZyQkLSRSQU5ET00gJiYgKHVtYXNrIDA3NyAmJiBta2RpciAkdG1wKSA7IH0gfHwKKyB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyB7IGVjaG8gIiRtZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYyIDsgZXhpdCAxIDsgfSA7CitkdW1teT0kdG1wL2R1bW15IDsKK3RtcGZpbGVzPSIkZHVtbXkuYyAkZHVtbXkubyAkZHVtbXkucmVsICRkdW1teSIgOworY2FzZSAkQ0NfRk9SX0JVSUxELCRIT1NUX0NDLCRDQyBpbgorICwsKSAgICBlY2hvICJpbnQgeDsiID4gJGR1bW15LmMgOworCWZvciBjIGluIGNjIGdjYyBjODkgYzk5IDsgZG8KKwkgIGlmICgkYyAtYyAtbyAkZHVtbXkubyAkZHVtbXkuYykgPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgICAgQ0NfRk9SX0JVSUxEPSIkYyI7IGJyZWFrIDsKKwkgIGZpIDsKKwlkb25lIDsKKwlpZiB0ZXN0IHgiJENDX0ZPUl9CVUlMRCIgPSB4IDsgdGhlbgorCSAgQ0NfRk9SX0JVSUxEPW5vX2NvbXBpbGVyX2ZvdW5kIDsKKwlmaQorCTs7CisgLCwqKSAgIENDX0ZPUl9CVUlMRD0kQ0MgOzsKKyAsKiwqKSAgQ0NfRk9SX0JVSUxEPSRIT1NUX0NDIDs7Citlc2FjIDsgc2V0X2NjX2Zvcl9idWlsZD0gOycKKworIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KKyMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAxOTk0LTA4LTI0KQoraWYgKHRlc3QgLWYgLy5hdHRiaW4vdW5hbWUpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlQQVRIPSRQQVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKK2ZpCisKK1VOQU1FX01BQ0hJTkU9YCh1bmFtZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgorVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3duCitVTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgICB8fCBVTkFNRV9TWVNURU09dW5rbm93bgorVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCisKKyMgTm90ZTogb3JkZXIgaXMgc2lnbmlmaWNhbnQgLSB0aGUgY2FzZSBicmFuY2hlcyBhcmUgbm90IGV4Y2x1c2l2ZS4KKworY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorICAgICo6TmV0QlNEOio6KikKKwkjIE5ldEJTRCAobmJzZCkgdGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9uZSBvcgorCSMgbW9yZSBvZiB0aGUgdHVwcGxlczogKi0qLW5ldGJzZGVsZiosICotKi1uZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRhcmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3VsZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBib3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20gZm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBOZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3RsPSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5lPWFybS11bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUtdW5rbm93biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duIDs7CisJZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3JtYXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRoZSBmdXR1cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJfCBncmVwIC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBSZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQorCQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJICAgICAgICBvcz1uZXRic2QKKwkJOzsKKwllc2FjCisJIyBUaGUgT1MgcmVsZWFzZQorCSMgRGViaWFuIEdOVS9OZXRCU0QgbWFjaGluZXMgaGF2ZSBhIGRpZmZlcmVudCB1c2VybGFuZCwgYW5kCisJIyB0aHVzLCBuZWVkIGEgZGlzdGluY3QgdHJpcGxldC4gSG93ZXZlciwgdGhleSBkbyBub3QgbmVlZAorCSMga2VybmVsIHZlcnNpb24gaW5mb3JtYXRpb24sIHNvIGl0IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEKKwkjIHN1aXRhYmxlIHRhZywgaW4gdGhlIHN0eWxlIG9mIGxpbnV4LWdudS4KKwljYXNlICIke1VOQU1FX1ZFUlNJT059IiBpbgorCSAgICBEZWJpYW4qKQorCQlyZWxlYXNlPSctZ251JworCQk7OworCSAgICAqKQorCQlyZWxlYXNlPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stX10uKi9cLi8nYAorCQk7OworCWVzYWMKKwkjIFNpbmNlIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTToKKwkjIGNvbnRhaW5zIHJlZHVuZGFudCBpbmZvcm1hdGlvbiwgdGhlIHNob3J0ZXIgZm9ybToKKwkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNIGlzIHVzZWQuCisJZWNobyAiJHttYWNoaW5lfS0ke29zfSR7cmVsZWFzZX0iCisJZXhpdCA7OworICAgICo6T3BlbkJTRDoqOiopCisJVU5BTUVfTUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL09wZW5CU0QuLy8nYAorCWVjaG8gJHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpla2tvQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1la2tvYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOlNvbGlkQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1zb2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWFjcHBjOk1pckJTRDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOk1pckJTRDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbWlyYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhbHBoYTpPU0YxOio6KikKKwljYXNlICRVTkFNRV9SRUxFQVNFIGluCisJKjQuMCkKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKKwkJOzsKKwkqNS4qKQorCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJOzsKKwllc2FjCisJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKwkjIE9TRi8xIGFuZCBUcnU2NCBzeXN0ZW1zIHByb2R1Y2VkIHNpbmNlIDE5OTUuICBJIGhvcGUgdGhhdAorCSMgY292ZXJzIG1vc3Qgc3lzdGVtcyBydW5uaW5nIHRvZGF5LiAgVGhpcyBjb2RlIHBpcGVzIHRoZSBDUFUKKwkjIHR5cGVzIHRocm91Z2ggaGVhZCAtbiAxLCBzbyB3ZSBvbmx5IGRldGVjdCB0aGUgdHlwZSBvZiBDUFUgMC4KKwlBTFBIQV9DUFVfVFlQRT1gL3Vzci9zYmluL3BzcmluZm8gLXYgfCBzZWQgLW4gLWUgJ3MvXiAgVGhlIGFscGhhIFwoLipcKSBwcm9jZXNzb3IuKiQvXDEvcCcgfCBoZWFkIC1uIDFgCisJY2FzZSAiJEFMUEhBX0NQVV9UWVBFIiBpbgorCSAgICAiRVY0ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNC41ICgyMTA2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkxDQTQgKDIxMDY2LzIxMDY4KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhIiA7OworCSAgICAiRVY1ICgyMTE2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NSIgOzsKKwkgICAgIkVWNS42ICgyMTE2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjU2IiA7OworCSAgICAiRVY1LjYgKDIxMTY0UEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFwY2E1NiIgOzsKKwkgICAgIkVWNS43ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTciIDs7CisJICAgICJFVjYgKDIxMjY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2IiA7OworCSAgICAiRVY2LjcgKDIxMjY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjciIDs7CisJICAgICJFVjYuOENCICgyMTI2NEMpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjhBTCAoMjEyNjRCKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44Q1ggKDIxMjY0RCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOUEgKDIxMjY0L0VWNjlBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OSIgOzsKKwkgICAgIkVWNyAoMjEzNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjciIDs7CisJICAgICJFVjcuOSAoMjEzNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3OSIgOzsKKwllc2FjCisJIyBBIFBuLm4gdmVyc2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKwkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgdmVyc2lvbi4KKwkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVzdCB2ZXJzaW9uLgorCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50YWwgYmFzZWxldmVsLgorCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonYAorCWV4aXQgOzsKKyAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQorCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KKwkjIFNob3VsZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQKKwkjIG9mIHRoZSBzcGVjaWZpYyBBbHBoYSBtb2RlbD8KKwllY2hvIGFscGhhLXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgMjEwNjQ6V2luZG93c19OVDo1MDozKQorCWVjaG8gYWxwaGEtZGVjLXdpbm50My41CisJZXhpdCA7OworICAgIEFtaWdhKjpVTklYX1N5c3RlbV9WOjQuMDoqKQorCWVjaG8gbTY4ay11bmtub3duLXN5c3Y0CisJZXhpdCA7OworICAgICo6W0FhXW1pZ2FbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYW1pZ2FvcworCWV4aXQgOzsKKyAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKKwlleGl0IDs7CisgICAgKjpPUy8zOTA6KjoqKQorCWVjaG8gaTM3MC1pYm0tb3BlbmVkaXRpb24KKwlleGl0IDs7CisgICAgKjp6L1ZNOio6KikKKwllY2hvIHMzOTAtaWJtLXp2bW9lCisJZXhpdCA7OworICAgICo6T1M0MDA6KjoqKQorICAgICAgICBlY2hvIHBvd2VycGMtaWJtLW9zNDAwCisJZXhpdCA7OworICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKKwllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFybTpyaXNjb3M6KjoqfGFybTpSSVNDT1M6KjoqKQorCWVjaG8gYXJtLXVua25vd24tcmlzY29zCisJZXhpdCA7OworICAgIFNSMj8wMTpISS1VWC9NUFA6KjoqIHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCisJZWNobyBocHBhMS4xLWhpdGFjaGktaGl1eG1wcAorCWV4aXQgOzsKKyAgICBQeXJhbWlkKjpPU3gqOio6KiB8IE1JUyo6T1N4KjoqOiogfCBNSVMqOlNNUF9EQy1PU3gqOio6KikKKwkjIGFrZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFuZCBOSUxFLgorCWlmIHRlc3QgImAoL2Jpbi91bml2ZXJzZSkgMj4vZGV2L251bGxgIiA9IGF0dCA7IHRoZW4KKwkJZWNobyBweXJhbWlkLXB5cmFtaWQtc3lzdjMKKwllbHNlCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLWJzZAorCWZpCisJZXhpdCA7OworICAgIE5JTEUqOio6KjpkY29zeCkKKwllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0CisJZXhpdCA7OworICAgIERSUz82MDAwOnVuaXg6NC4wOjYqKQorCWVjaG8gc3BhcmMtaWNsLW54NgorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDppc2lzOjQuMio6NyopCisJY2FzZSBgL3Vzci9iaW4vdW5hbWUgLXBgIGluCisJICAgIHNwYXJjKSBlY2hvIHNwYXJjLWljbC1ueDc7IGV4aXQgOzsKKwllc2FjIDs7CisgICAgczM5MHg6U3VuT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNEg6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKwllY2hvIHNwYXJjLXN1bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBpODZwYzpBdXJvcmFVWDo1Lio6KiB8IGk4NnhlbjpBdXJvcmFVWDo1Lio6KikKKwllY2hvIGkzODYtcGMtYXVyb3JhdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2eGVuOlN1bk9TOjUuKjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlTVU5fQVJDSD0iaTM4NiIKKwkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVkIGZvciA2NC1iaXQgb2JqZWN0cy4KKwkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCisJIyBUaGlzIHRlc3Qgd29ya3MgZm9yIGJvdGggY29tcGlsZXJzLgorCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCSAgICBpZiAoZWNobyAnI2lmZGVmIF9fYW1kNjQnOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQlncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCSAgICB0aGVuCisJCVNVTl9BUkNIPSJ4ODZfNjQiCisJICAgIGZpCisJZmkKKwllY2hvICR7U1VOX0FSQ0h9LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjYqOiopCisJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKwkjIFN1bk9TNi4gIEhhcmQgdG8gZ3Vlc3MgZXhhY3RseSB3aGF0IFN1bk9TNiB3aWxsIGJlIGxpa2UsIGJ1dAorCSMgaXQncyBsaWtlbHkgdG8gYmUgbW9yZSBsaWtlIFNvbGFyaXMgdGhhbiBTdW5PUzQuCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgc3VuNCo6U3VuT1M6KjoqKQorCWNhc2UgImAvdXNyL2Jpbi9hcmNoIC1rYCIgaW4KKwkgICAgU2VyaWVzKnxTNCopCisJCVVOQU1FX1JFTEVBU0U9YHVuYW1lIC12YAorCQk7OworCWVzYWMKKwkjIEphcGFuZXNlIExhbmd1YWdlIHZlcnNpb25zIGhhdmUgYSB2ZXJzaW9uIG51bWJlciBsaWtlIGA0LjEuMy1KTCcuCisJZWNobyBzcGFyYy1zdW4tc3Vub3NgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vJ2AKKwlleGl0IDs7CisgICAgc3VuMyo6U3VuT1M6KjoqKQorCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHN1bio6Kjo0LjJCU0Q6KikKKwlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAne3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAorCXRlc3QgIngke1VOQU1FX1JFTEVBU0V9IiA9ICJ4IiAmJiBVTkFNRV9SRUxFQVNFPTMKKwljYXNlICJgL2Jpbi9hcmNoYCIgaW4KKwkgICAgc3VuMykKKwkJZWNobyBtNjhrLXN1bi1zdW5vcyR7VU5BTUVfUkVMRUFTRX0KKwkJOzsKKwkgICAgc3VuNCkKKwkJZWNobyBzcGFyYy1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJZXNhYworCWV4aXQgOzsKKyAgICBhdXNocDpTdW5PUzoqOiopCisJZWNobyBzcGFyYy1hdXNwZXgtc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICMgVGhlIHNpdHVhdGlvbiBmb3IgTWlOVCBpcyBhIGxpdHRsZSBjb25mdXNpbmcuICBUaGUgbWFjaGluZSBuYW1lCisgICAgIyBjYW4gYmUgdmlydHVhbGx5IGV2ZXJ5dGhpbmcgKGV2ZXJ5dGhpbmcgd2hpY2ggaXMgbm90CisgICAgIyAiYXRhcmlzdCIgb3IgImF0YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorICAgICMgPiBtNjgwMDApLiAgVGhlIHN5c3RlbSBuYW1lIHJhbmdlcyBmcm9tICJNaU5UIiBvdmVyICJGcmVlTWlOVCIKKyAgICAjIHRvIHRoZSBsb3dlcmNhc2UgdmVyc2lvbiAibWludCIgKG9yICJmcmVlbWludCIpLiAgRmluYWxseQorICAgICMgdGhlIHN5c3RlbSBuYW1lICJUT1MiIGRlbm90ZXMgYSBzeXN0ZW0gd2hpY2ggaXMgYWN0dWFsbHkgbm90CisgICAgIyBNaU5ULiAgQnV0IE1pTlQgaXMgZG93bndhcmQgY29tcGF0aWJsZSB0byBUT1MsIHNvIHRoaXMgc2hvdWxkCisgICAgIyBiZSBubyBwcm9ibGVtLgorICAgIGF0YXJpc3RbZV06Kk1pTlQ6KjoqIHwgYXRhcmlzdFtlXToqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDs7CisgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCisgICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCisgICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDs7CisgICAgaGFkZXMqOipNaU5UOio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKyAgICAgICAgZXhpdCA7OworICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQorICAgICAgICBlY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorICAgICAgICBleGl0IDs7CisgICAgbTY4azptYWNodGVuOio6KikKKwllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgcG93ZXJwYzptYWNodGVuOio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUklTQyo6TWFjaDoqOiopCisJZWNobyBtaXBzLWRlYy1tYWNoX2JzZDQuMworCWV4aXQgOzsKKyAgICBSSVNDKjpVTFRSSVg6KjoqKQorCWVjaG8gbWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBWQVgqOlVMVFJJWCo6KjoqKQorCWVjaG8gdmF4LWRlYy11bHRyaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIDIwMjA6Q0xJWDoqOiogfCAyNDMwOkNMSVg6KjoqKQorCWVjaG8gY2xpcHBlci1pbnRlcmdyYXBoLWNsaXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG1pcHM6KjoqOlVNSVBTIHwgbWlwczoqOio6UklTQ29zKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworI2lmZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkaW8uaD4gIC8qIGZvciBwcmludGYoKSBwcm90b3R5cGUgKi8KKwlpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworI2Vsc2UKKwlpbnQgbWFpbiAoYXJnYywgYXJndikgaW50IGFyZ2M7IGNoYXIgKmFyZ3ZbXTsgeworI2VuZGlmCisJI2lmIGRlZmluZWQgKGhvc3RfbWlwcykgJiYgZGVmaW5lZCAoTUlQU0VCKQorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NZU1YpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzeXN2XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfU1ZSNCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc3N2cjRcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0MykgfHwgZGVmaW5lZChTWVNUWVBFX0JTRCkKKwkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Mlc2JzZFxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNlbmRpZgorCSAgZXhpdCAoLTEpOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmCisJICBkdW1teWFyZz1gZWNobyAiJHtVTkFNRV9SRUxFQVNFfSIgfCBzZWQgLW4gJ3MvXChbMC05XSpcKS4qL1wxL3AnYCAmJgorCSAgU1lTVEVNX05BTUU9YCRkdW1teSAkZHVtbXlhcmdgICYmCisJICAgIHsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gbWlwcy1taXBzLXJpc2NvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTW90b3JvbGE6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1tb3Rvcm9sYS1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CisJZXhpdCA7OworICAgIE5pZ2h0X0hhd2s6KjoqOlBvd2VyTUFYX09TIHwgU3luZXJneTpQb3dlck1BWF9PUzoqOiopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOlBvd2VyX1VOSVg6KjoqKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJ1bml4CisJZXhpdCA7OworICAgIG04OGs6Q1gvVVg6Nyo6KikKKwllY2hvIG04OGstaGFycmlzLWN4dXg3CisJZXhpdCA7OworICAgIG04OGs6Kjo0KjpSNCopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3Y0CisJZXhpdCA7OworICAgIG04OGs6KjozKjpSMyopCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIEFWaWlPTjpkZ3V4Oio6KikKKyAgICAgICAgIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKyAgICAgICAgVU5BTUVfUFJPQ0VTU09SPWAvdXNyL2Jpbi91bmFtZSAtcGAKKwlpZiBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTAwIF0gfHwgWyAkVU5BTUVfUFJPQ0VTU09SID0gbWM4ODExMCBdCisJdGhlbgorCSAgICBpZiBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IG04OGtkZ3V4ZWxmeCBdIHx8IFwKKwkgICAgICAgWyAke1RBUkdFVF9CSU5BUllfSU5URVJGQUNFfXggPSB4IF0KKwkgICAgdGhlbgorCQllY2hvIG04OGstZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZWxzZQorCQllY2hvIG04OGstZGctZGd1eGJjcyR7VU5BTUVfUkVMRUFTRX0KKwkgICAgZmkKKwllbHNlCisJICAgIGVjaG8gaTU4Ni1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCWZpCisgCWV4aXQgOzsKKyAgICBNODgqOkRvbHBoaW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorCWVjaG8gbTg4ay1kb2xwaGluLXN5c3YzCisJZXhpdCA7OworICAgIE04OCo6KjpSMyo6KikKKwkjIERlbHRhIDg4ayBzeXN0ZW0gcnVubmluZyBTVlIzCisJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCisJZXhpdCA7OworICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBydW5uaW5nIFVUZWtWIChTVlIzKQorCWVjaG8gbTg4ay10ZWt0cm9uaXgtc3lzdjMKKwlleGl0IDs7CisgICAgVGVrNDNbMC05XVswLTldOlVUZWs6KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKKwllY2hvIG02OGstdGVrdHJvbml4LWJzZAorCWV4aXQgOzsKKyAgICAqOklSSVgqOio6KikKKwllY2hvIG1pcHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCisJZXhpdCA7OworICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKwllY2hvIHJvbXAtaWJtLWFpeCAgICAgIyB1bmFtZSAtbSBnaXZlcyBhbiA4IGhleC1jb2RlIENQVSBpZAorCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAtc2AnIiBnaXZlcyAnQUlYICcKKyAgICBpKjg2OkFJWDoqOiopCisJZWNobyBpMzg2LWlibS1haXgKKwlleGl0IDs7CisgICAgaWE2NDpBSVg6KjoqKQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoyOjMpCisJaWYgZ3JlcCBib3MzMjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJc2VkICdzL14JCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSNpbmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+CisKKwkJbWFpbigpCisJCQl7CisJCQlpZiAoIV9fcG93ZXJfcGMoKSkKKwkJCQlleGl0KDEpOworCQkJcHV0cygicG93ZXJwYy1pYm0tYWl4My4yLjUiKTsKKwkJCWV4aXQoMCk7CisJCQl9CitFT0YKKwkJaWYgJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKwkJdGhlbgorCQkJZWNobyAiJFNZU1RFTV9OQU1FIgorCQllbHNlCisJCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjUKKwkJZmkKKwllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yLjQKKwllbHNlCisJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKwlmaQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOls0NTZdKQorCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAorCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlJQk1fQVJDSD1yczYwMDAKKwllbHNlCisJCUlCTV9BUkNIPXBvd2VycGMKKwlmaQorCWlmIFsgLXggL3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAorCWVsc2UKKwkJSUJNX1JFVj0ke1VOQU1FX1ZFUlNJT059LiR7VU5BTUVfUkVMRUFTRX0KKwlmaQorCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6KjoqKQorCWVjaG8gcnM2MDAwLWlibS1haXgKKwlleGl0IDs7CisgICAgaWJtcnQ6NC40QlNEOip8cm9tcC1pYm06QlNEOiopCisJZWNobyByb21wLWlibS1ic2Q0LjQKKwlleGl0IDs7CisgICAgaWJtcnQ6KkJTRDoqfHJvbXAtaWJtOkJTRDoqKSAgICAgICAgICAgICMgY292ZXJzIFJUL1BDIEJTRCBhbmQKKwllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVMRUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCisJZXhpdCA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXBvcnQ6IHJvbXAtaWJtIEJTRCA0LjMKKyAgICAqOkJPU1g6KjoqKQorCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorCWV4aXQgOzsKKyAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorCWVjaG8gbTY4ay1idWxsLXN5c3YzCisJZXhpdCA7OworICAgIDkwMDAvWzM0XT8/OjQuM2JzZDoxLio6KikKKwllY2hvIG02OGstaHAtYnNkCisJZXhpdCA7OworICAgIGhwMzAwOjQuNEJTRDoqOiogfCA5MDAwL1szNF0/Pzo0LjNic2Q6Mi4qOiopCisJZWNobyBtNjhrLWhwLWJzZDQuNAorCWV4aXQgOzsKKyAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgOTAwMC8zMT8gKSAgICAgICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7CisJICAgIDkwMDAvWzM0XT8/ICkgICAgICAgICBIUF9BUkNIPW02OGsgOzsKKwkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCisJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCisJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKKyAgICAgICAgICAgICAgICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisgICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgorICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAorICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkJICAnJykgSFBfQVJDSD0iaHBwYTIuMCIgOzsgICAjIEhQLVVYIDEwLjIwCisgICAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAgICAgIGVzYWMKKwkJZmkKKwkJaWYgWyAiJHtIUF9BUkNIfSIgPSAiIiBdOyB0aGVuCisJCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCSAgICBzZWQgJ3MvXiAgICAgICAgICAgICAgLy8nIDw8IEVPRiA+JGR1bW15LmMKKworICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQorICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+CisgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKworICAgICAgICAgICAgICBpbnQgbWFpbiAoKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKyAgICAgICAgICAgICAgICAgIGxvbmcgYml0cyA9IHN5c2NvbmYoX1NDX0tFUk5FTF9CSVRTKTsKKyAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgICBsb25nIGNwdSAgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOworCisgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNwdSkKKyAgICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMl8wOgorICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisgICAgICAgICAgICAgIAkgICAgc3dpdGNoIChiaXRzKQorICAgICAgICAgICAgICAJCXsKKyAgICAgICAgICAgICAgCQljYXNlIDY0OiBwdXRzICgiaHBwYTIuMHciKTsgYnJlYWs7CisgICAgICAgICAgICAgIAkJY2FzZSAzMjogcHV0cyAoImhwcGEyLjBuIik7IGJyZWFrOworICAgICAgICAgICAgICAJCWRlZmF1bHQ6IHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOworICAgICAgICAgICAgICAJCX0gYnJlYWs7CisgICAgICAgICAgICAgICNlbHNlICAvKiAhZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpICovCisgICAgICAgICAgICAgIAkgICAgcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAJZGVmYXVsdDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICBleGl0ICgwKTsKKyAgICAgICAgICAgICAgfQorRU9GCisJCSAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCkgJiYgSFBfQVJDSD1gJGR1bW15YAorCQkgICAgdGVzdCAteiAiJEhQX0FSQ0giICYmIEhQX0FSQ0g9aHBwYQorCQlmaSA7OworCWVzYWMKKwlpZiBbICR7SFBfQVJDSH0gPSAiaHBwYTIuMHciIF0KKwl0aGVuCisJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKworCSAgICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZworCSAgICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJuZWwgYW5kIGEgY29tcGlsZXIKKwkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05VIGFuZCBIUCB1c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKKwkgICAgIworCSAgICAjICQgQ0NfRk9SX0JVSUxEPWNjIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTIuMHctaHAtaHB1eDExLjIzCisJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmlnLmd1ZXNzCisJICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMworCisJICAgIGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwKKwkJZ3JlcCAtcSBfX0xQNjRfXworCSAgICB0aGVuCisJCUhQX0FSQ0g9ImhwcGEyLjB3IgorCSAgICBlbHNlCisJCUhQX0FSQ0g9ImhwcGE2NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtIUF9BUkNIfS1ocC1ocHV4JHtIUFVYX1JFVn0KKwlleGl0IDs7CisgICAgaWE2NDpIUC1VWDoqOiopCisJSFBVWF9SRVY9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSouWzBCXSovLydgCisJZWNobyBpYTY0LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICAzMDUwKjpISS1VWDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCWludAorCW1haW4gKCkKKwl7CisJICBsb25nIGNwdSA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisJICAvKiBUaGUgb3JkZXIgbWF0dGVycywgYmVjYXVzZSBDUFVfSVNfSFBfTUM2OEsgZXJyb25lb3VzbHkgcmV0dXJucworCSAgICAgdHJ1ZSBmb3IgQ1BVX1BBX1JJU0MxXzAuICBDUFVfSVNfUEFfUklTQyByZXR1cm5zIGNvcnJlY3QKKwkgICAgIHJlc3VsdHMsIGhvd2V2ZXIuICAqLworCSAgaWYgKENQVV9JU19QQV9SSVNDIChjcHUpKQorCSAgICB7CisJICAgICAgc3dpdGNoIChjcHUpCisJCXsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzFfMTogcHV0cyAoImhwcGExLjEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGNhc2UgQ1BVX1BBX1JJU0MyXzA6IHB1dHMgKCJocHBhMi4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBkZWZhdWx0OiBwdXRzICgiaHBwYS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCX0KKwkgICAgfQorCSAgZWxzZSBpZiAoQ1BVX0lTX0hQX01DNjhLIChjcHUpKQorCSAgICBwdXRzICgibTY4ay1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGVsc2UgcHV0cyAoInVua25vd24taGl0YWNoaS1oaXV4d2UyIik7CisJICBleGl0ICgwKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCQl7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIHVua25vd24taGl0YWNoaS1oaXV4d2UyCisJZXhpdCA7OworICAgIDkwMDAvNz8/OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKwllY2hvIGhwcGExLjEtaHAtYnNkCisJZXhpdCA7OworICAgIDkwMDAvOD8/OjQuM2JzZDoqOiopCisJZWNobyBocHBhMS4wLWhwLWJzZAorCWV4aXQgOzsKKyAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1QRS9pWDoqOiopCisJZWNobyBocHBhMS4wLWhwLW1wZWl4CisJZXhpdCA7OworICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06T1NGMToqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1vc2YKKwlleGl0IDs7CisgICAgaHA4Pz86T1NGMToqOiopCisJZWNobyBocHBhMS4wLWhwLW9zZgorCWV4aXQgOzsKKyAgICBpKjg2Ok9TRjE6KjoqKQorCWlmIFsgLXggL3Vzci9zYmluL3N5c3ZlcnNpb24gXSA7IHRoZW4KKwkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3NmMW1rCisJZWxzZQorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCisJZmkKKwlleGl0IDs7CisgICAgcGFyaXNjKjpMaXRlcyo6KjoqKQorCWVjaG8gaHBwYTEuMS1ocC1saXRlcworCWV4aXQgOzsKKyAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQorCWVjaG8gYzEtY29udmV4LWJzZAorICAgICAgICBleGl0IDs7CisgICAgQzIqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMio6KikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisgICAgICAgIGV4aXQgOzsKKyAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJzZAorICAgICAgICBleGl0IDs7CisgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKyAgICAgICAgZXhpdCA7OworICAgIEM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCisJZWNobyBjNC1jb252ZXgtYnNkCisgICAgICAgIGV4aXQgOzsKKyAgICBDUkFZKlktTVA6KjoqOiopCisJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUM0U6KjoqOiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21rJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8gc3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikKKwllY2hvIGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQorCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisgICAgICAgIEZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKyAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKKyAgICAgICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKyAgICAgICAgZXhpdCA7OworICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKKyAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OworICAgIGkqODY6QlNELzM4NjoqOiogfCBpKjg2OkJTRC9PUzoqOiogfCAqOkFzY2VuZFwgRW1iZWRkZWQvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzcGFyYyo6QlNEL09TOio6KikKKwllY2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpCU0QvT1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6RnJlZUJTRDoqOiopCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJICAgIHBjOTgpCisJCWVjaG8gaTM4Ni11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgIGFtZDY0KQorCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgICopCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJZXNhYworCWV4aXQgOzsKKyAgICBpKjpDWUdXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorCWV4aXQgOzsKKyAgICAqOk1JTkdXKjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1taW5ndzMyCisJZXhpdCA7OworICAgIGkqOndpbmRvd3MzMio6KikKKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KKyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKKwlleGl0IDs7CisgICAgaSo6UFcqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKKwlleGl0IDs7CisgICAgKjpJbnRlcml4KjoqKQorICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwkgICAgeDg2KQorCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBhdXRoZW50aWNhbWQgfCBnZW51aW5laW50ZWwgfCBFTTY0VCkKKwkJZWNobyB4ODZfNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJICAgIElBNjQpCisJCWVjaG8gaWE2NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwllc2FjIDs7CisgICAgWzM0NV04NjpXaW5kb3dzXzk1OiogfCBbMzQ1XTg2OldpbmRvd3NfOTg6KiB8IFszNDVdODY6V2luZG93c19OVDoqKQorCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCisJZXhpdCA7OworICAgIDg2NjQ6V2luZG93c19OVDoqKQorCWVjaG8geDg2XzY0LXBjLW1rcworCWV4aXQgOzsKKyAgICBpKjpXaW5kb3dzX05UKjoqIHwgUGVudGl1bSo6V2luZG93c19OVCo6KikKKwkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhhbiB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisJIyBJdCBhbHNvIGNvbmZsaWN0cyB3aXRoIHByZS0yLjAgdmVyc2lvbnMgb2YgQVQmVCBVV0lOLiBTaG91bGQgd2UKKwkjIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91dHB1dCBvZiB1bmFtZSBpbnN0ZWFkIG9mIGkzODY/CisJZWNobyBpNTg2LXBjLWludGVyaXgKKwlleGl0IDs7CisgICAgaSo6VVdJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtdXdpbgorCWV4aXQgOzsKKyAgICBhbWQ2NDpDWUdXSU4qOio6KiB8IHg4Nl82NDpDWUdXSU4qOio6KikKKwllY2hvIHg4Nl82NC11bmtub3duLWN5Z3dpbgorCWV4aXQgOzsKKyAgICBwKjpDWUdXSU4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcHJlcCo6U3VuT1M6NS4qOiopCisJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICAqOkdOVToqOiopCisJIyB0aGUgR05VIHN5c3RlbQorCWVjaG8gYGVjaG8gJHtVTkFNRV9NQUNISU5FfXxzZWQgLWUgJ3MsWy0vXS4qJCwsJ2AtdW5rbm93bi1nbnVgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncywvLiokLCwnYAorCWV4aXQgOzsKKyAgICAqOkdOVS8qOio6KikKKwkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBhbmQgdXNlcmxhbmQKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1gZWNobyAke1VOQU1FX1NZU1RFTX0gfCBzZWQgJ3MsXlteL10qLywsJyB8IHRyICdbQS1aXScgJ1thLXpdJ2BgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgLWdudQorCWV4aXQgOzsKKyAgICBpKjg2Ok1pbml4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbWluaXgKKwlleGl0IDs7CisgICAgYWxwaGE6TGludXg6KjoqKQorCWNhc2UgYHNlZCAtbiAnL15jcHUgbW9kZWwvcy9eLio6IFwoLipcKS9cMS9wJyA8IC9wcm9jL2NwdWluZm9gIGluCisJICBFVjUpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCSAgRVY1NikgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjU2IDs7CisJICBQQ0E1NikgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBQQ0E1NykgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBFVjYpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OworCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CisJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKyAgICAgICAgZXNhYworCW9iamR1bXAgLS1wcml2YXRlLWhlYWRlcnMgL2Jpbi9zaCB8IGdyZXAgLXEgbGQuc28uMQorCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorCWV4aXQgOzsKKyAgICBhcm0qOkxpbnV4Oio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisJdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwlmaQorCWV4aXQgOzsKKyAgICBhdnIzMio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBjcmlzOkxpbnV4Oio6KikKKwllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3Jpc3YzMjpMaW51eDoqOiopCisJZWNobyBjcmlzdjMyLWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGZydjpMaW51eDoqOiopCisgICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIGkqODY6TGludXg6KjoqKQorCUxJQkM9Z251CisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI2lmZGVmIF9fZGlldGxpYmNfXworCUxJQkM9ZGlldGxpYmMKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeTElCQydgCisJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgorCWV4aXQgOzsKKyAgICBpYTY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbTMycio6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtNjgqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSN1bmRlZiBDUFUKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKKwkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQorCUNQVT0ke1VOQU1FX01BQ0hJTkV9ZWwKKwkjZWxzZQorCSNpZiBkZWZpbmVkKF9fTUlQU0VCX18pIHx8IGRlZmluZWQoX19NSVBTRUIpIHx8IGRlZmluZWQoX01JUFNFQikgfHwgZGVmaW5lZChNSVBTRUIpCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KKwkjZWxzZQorCUNQVT0KKwkjZW5kaWYKKwkjZW5kaWYKK0VPRgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQorCTs7CisgICAgb3IzMjpMaW51eDoqOiopCisJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhZHJlOkxpbnV4Oio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQorCSMgTG9vayBmb3IgQ1BVIGxldmVsCisJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OworCSAgUEE4KikgZWNobyBocHBhMi4wLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKwllc2FjCisJZXhpdCA7OworICAgIHBwYzY0OkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwcGM6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4CisJZXhpdCA7OworICAgIHNoNjQqOkxpbnV4Oio6KikKKyAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNoKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB2YXg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZXhpdCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgeHRlbnNhKjpMaW51eDoqOiopCisgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQorCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCisJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aAorCSMgc3lzbmFtZSBhbmQgbm9kZW5hbWUuCisJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKKyAgICAgICAgIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgorICAgICAgICAjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCisgICAgICAgICMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKKwkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisgICAgICAgICMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6T1MvMjoqOiopCisJIyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGliaWxpdHkKKwkjIGlzIHByb2JhYmx5IGluc3RhbGxlZC4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtb3MyLWVteAorCWV4aXQgOzsKKyAgICBpKjg2OlhUUy0zMDA6KjpTVE9QKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKwlleGl0IDs7CisgICAgaSo4NjphdGhlb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWF0aGVvcworCWV4aXQgOzsKKyAgICBpKjg2OnN5bGxhYmxlOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKKwlleGl0IDs7CisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCisJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpKjg2OipET1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIGkqODY6Kjo0Lio6KiB8IGkqODY6U1lTVEVNX1Y6NC4qOiopCisJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgJ3MvXC9NUCQvLydgCisJaWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsuaCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bml2ZWwtc3lzdiR7VU5BTUVfUkVMfQorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Yke1VOQU1FX1JFTH0KKwlmaQorCWV4aXQgOzsKKyAgICBpKjg2Oio6NTpbNjc4XSopCisgICAgCSMgVW5peFdhcmUgNy54LCBPcGVuVU5JWCBhbmQgT3BlblNlcnZlciA2LgorCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFjaGluZSJgIGluCisJICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworCSAgICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKKwkgICAgKlBlbnQqfCpDZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKKwllc2FjCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3lzdiR7VU5BTUVfUkVMRUFTRX0ke1VOQU1FX1NZU1RFTX0ke1VOQU1FX1ZFUlNJT059CisJZXhpdCA7OworICAgIGkqODY6KjozLjI6KikKKwlpZiB0ZXN0IC1mIC91c3Ivb3B0aW9ucy9jYi5uYW1lOyB0aGVuCisJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWlzYyRVTkFNRV9SRUwKKwllbGlmIC9iaW4vdW5hbWUgLVggMj4vZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfUkVMPWAoL2Jpbi91bmFtZSAtWHxncmVwIFJlbGVhc2V8c2VkIC1lICdzLy4qPSAvLycpYAorCQkoL2Jpbi91bmFtZSAtWHxncmVwIGk4MDQ4NiA+L2Rldi9udWxsKSAmJiBVTkFNRV9NQUNISU5FPWk0ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTU4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudCAqSUknID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQkoL2Jpbi91bmFtZSAtWHxncmVwICdeTWFjaGluZS4qUGVudGl1bSBQcm8nID4vZGV2L251bGwpIFwKKwkJCSYmIFVOQU1FX01BQ0hJTkU9aTY4NgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc2NvJFVOQU1FX1JFTAorCWVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3YzMgorCWZpCisJZXhpdCA7OworICAgIHBjOio6KjoqKQorCSMgTGVmdCBoZXJlIGZvciBjb21wYXRpYmlsaXR5OgorICAgICAgICAjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAorICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdlIHBsYXkgc2FmZSBieSBhc3N1bWluZyBpNTg2LgorCSMgTm90ZTogd2hhdGV2ZXIgdGhpcyBpcywgaXQgTVVTVCBiZSB0aGUgc2FtZSBhcyB3aGF0IGNvbmZpZy5zdWIKKwkjIHByaW50cyBmb3IgdGhlICJkamdwcCIgaG9zdCwgb3IgZWxzZSBHREIgY29uZmlndXJ5IHdpbGwgZGVjaWRlIHRoYXQKKwkjIHRoaXMgaXMgYSBjcm9zcy1idWlsZC4KKwllY2hvIGk1ODYtcGMtbXNkb3NkamdwcAorICAgICAgICBleGl0IDs7CisgICAgSW50ZWw6TWFjaDozKjoqKQorCWVjaG8gaTM4Ni1wYy1tYWNoMworCWV4aXQgOzsKKyAgICBwYXJhZ29uOio6KjoqKQorCWVjaG8gaTg2MC1pbnRlbC1vc2YxCisJZXhpdCA7OworICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKwlpZiBncmVwIFN0YXJkZW50IC91c3IvaW5jbHVkZS9zeXMvdWFkbWluLmggPi9kZXYvbnVsbCAyPiYxIDsgdGhlbgorCSAgZWNobyBpODYwLXN0YXJkZW50LXN5c3Yke1VOQU1FX1JFTEVBU0V9ICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAorCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292ZXJlZC4KKwkgIGVjaG8gaTg2MC11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9ICAjIFVua25vd24gaTg2MC1TVlI0CisJZmkKKwlleGl0IDs7CisgICAgbWluaSo6Q1RJWDpTWVMqNToqKQorCSMgIm1pbmlmcmFtZSIKKwllY2hvIG02ODAxMC1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgbWM2OGs6VU5JWDpTWVNURU01OjMuNTFtKQorCWVjaG8gbTY4ay1jb252ZXJnZW50LXN5c3YKKwlleGl0IDs7CisgICAgTTY4MD8wOkQtTklYOjUuMzoqKQorCWVjaG8gbTY4ay1kaWFiLWRuaXgKKwlleGl0IDs7CisgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKwl0ZXN0IC1yIC9zeXNWNjggJiYgeyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7CisgICAgM1szNDVdPz86Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4wIHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4wOjMuMCB8IFM3NTAxKjoqOjQuMDozLjApCisJT1NfUkVMPScnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKyAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OworICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQorCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWM2ODAzMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCWVjaG8gbTY4ay1hdGFyaS1zeXN2NAorCWV4aXQgOzsKKyAgICBUU1VOQU1JOkx5bnhPUzoyLio6KikKKwllY2hvIHNwYXJjLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICByczYwMDA6THlueE9TOjIuKjoqKQorCWVjaG8gcnM2MDAwLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6THlueE9TOjMuWzAxXSo6KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNNW0JFXVM6VU5JWF9TVjoqOiopCisJZWNobyBtaXBzLWRkZS1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBSTSo6UmVsaWFudFVOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICBSTSo6U0lOSVgtKjoqOiopCisJZWNobyBtaXBzLXNuaS1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlNJTklYLSo6KjoqKQorCWlmIHVuYW1lIC1wIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zbmktc3lzdjQKKwllbHNlCisJCWVjaG8gbnMzMmstc25pLXN5c3YKKwlmaQorCWV4aXQgOzsKKyAgICBQRU5USVVNOio6NC4wKjoqKSAjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAorICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKyAgICAgICAgZWNobyBpNTg2LXVuaXN5cy1zeXN2NAorICAgICAgICBleGl0IDs7CisgICAgKjpVTklYX1N5c3RlbV9WOjQqOkZUWCopCisJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3ZXNAb3Blbm1hcmtldC5jb20+LgorCSMgSG93IGFib3V0IGRpZmZlcmVudGlhdGluZyBiZXR3ZWVuIHN0cmF0dXMgYXJjaGl0ZWN0dXJlcz8gLWRqbQorCWVjaG8gaHBwYTEuMS1zdHJhdHVzLXN5c3Y0CisJZXhpdCA7OworICAgICo6KjoqOkZUWCopCisJIyBGcm9tIHNlYW5mQHN3ZGMuc3RyYXR1cy5jb20uCisJZWNobyBpODYwLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpWT1M6KjoqKQorCSMgRnJvbSBQYXVsLkdyZWVuQHN0cmF0dXMuY29tLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworCWV4aXQgOzsKKyAgICAqOlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyBocHBhMS4xLXN0cmF0dXMtdm9zCisJZXhpdCA7OworICAgIG1jNjgqOkEvVVg6KjoqKQorCWVjaG8gbTY4ay1hcHBsZS1hdXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG5ld3MqOk5FV1MtT1M6Nio6KikKKwllY2hvIG1pcHMtc29ueS1uZXdzb3M2CisJZXhpdCA7OworICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQorCWlmIFsgLWQgL3Vzci9uZWMgXTsgdGhlbgorCSAgICAgICAgZWNobyBtaXBzLW5lYy1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCWVsc2UKKwkgICAgICAgIGVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZmkKKyAgICAgICAgZXhpdCA7OworICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJlLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYmUtYmVvcworCWV4aXQgOzsKKyAgICBCZU1hYzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gTWFjIG9yIE1hYyBjbG9uZSwgUFBDIG9ubHkuCisJZWNobyBwb3dlcnBjLWFwcGxlLWJlb3MKKwlleGl0IDs7CisgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OworICAgIFNYLTQ6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC01OlNVUEVSLVVYOio6KikKKwllY2hvIHN4NS1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTc6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g3LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04OlNVUEVSLVVYOio6KikKKwllY2hvIHN4OC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4ci1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKwllY2hvIHBvd2VycGMtYXBwbGUtcmhhcHNvZHkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UmhhcHNvZHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEYXJ3aW46KjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgIHx8IFVOQU1FX1BST0NFU1NPUj11bmtub3duCisJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisJICAgIGkzODYpCisJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJCSAgaWYgKGVjaG8gJyNpZmRlZiBfX0xQNjRfXyc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCSAgICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCSAgdGhlbgorCQkgICAgICBVTkFNRV9QUk9DRVNTT1I9Ing4Nl82NCIKKwkJICBmaQorCQlmaSA7OworCSAgICB1bmtub3duKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7OworCWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS1hcHBsZS1kYXJ3aW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6cHJvY250byo6KjoqIHwgKjpRTlg6WzAxMjM0NTY3ODldKjoqKQorCVVOQU1FX1BST0NFU1NPUj1gdW5hbWUgLXBgCisJaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSAieDg2IjsgdGhlbgorCQlVTkFNRV9QUk9DRVNTT1I9aTM4NgorCQlVTkFNRV9NQUNISU5FPXBjCisJZmkKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UU5YOio6NCopCisJZWNobyBpMzg2LXBjLXFueAorCWV4aXQgOzsKKyAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuc2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNSLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6Tm9uU3RvcC1VWDoqOiopCisJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKKwlleGl0IDs7CisgICAgQlMyMDAwOlBPU0lYKjoqOiopCisJZWNobyBiczIwMDAtc2llbWVucy1zeXN2CisJZXhpdCA7OworICAgIERTLyo6VU5JWF9TeXN0ZW1fVjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LSR7VU5BTUVfU1lTVEVNfS0ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UGxhbjk6KjoqKQorCSMgInVuYW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3RlYWQuIDM4NgorCSMgaXMgY29udmVydGVkIHRvIGkzODYgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgeDg2CisJIyBvcGVyYXRpbmcgc3lzdGVtcy4KKwlpZiB0ZXN0ICIkY3B1dHlwZSIgPSAiMzg2IjsgdGhlbgorCSAgICBVTkFNRV9NQUNISU5FPWkzODYKKwllbHNlCisJICAgIFVOQU1FX01BQ0hJTkU9IiRjcHV0eXBlIgorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkKKwlleGl0IDs7CisgICAgKjpUT1BTLTEwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczEwCisJZXhpdCA7OworICAgICo6VEVORVg6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10ZW5leAorCWV4aXQgOzsKKyAgICBLUzEwOlRPUFMtMjA6KjoqIHwgS0wxMDpUT1BTLTIwOio6KiB8IFRZUEU0OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtZGVjLXRvcHMyMAorCWV4aXQgOzsKKyAgICBYS0wtMTpUT1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAteGtsLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMjAKKwlleGl0IDs7CisgICAgKjpJVFM6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKKwlleGl0IDs7CisgICAgU0VJOio6KjpTRUlVWCkKKyAgICAgICAgZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpEcmFnb25GbHk6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKKwlleGl0IDs7CisgICAgKjoqVk1TOio6KikKKyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICBBKikgZWNobyBhbHBoYS1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisJICAgIFYqKSBlY2hvIHZheC1kZWMtdm1zIDsgZXhpdCA7OworCWVzYWMgOzsKKyAgICAqOlhFTklYOio6U3lzVikKKwllY2hvIGkzODYtcGMteGVuaXgKKwlleGl0IDs7CisgICAgaSo4Njpza3lvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNreW9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfWAgfCBzZWQgLWUgJ3MvIC4qJC8vJworCWV4aXQgOzsKKyAgICBpKjg2OnJkb3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCisJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7Citlc2FjCisKKyNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgorI2VjaG8gIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgMT4mMgorCitldmFsICRzZXRfY2NfZm9yX2J1aWxkCitjYXQgPiRkdW1teS5jIDw8RU9GCisjaWZkZWYgX1NFUVVFTlRfCisjIGluY2x1ZGUgPHN5cy90eXBlcy5oPgorIyBpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCittYWluICgpCit7CisjaWYgZGVmaW5lZCAoc29ueSkKKyNpZiBkZWZpbmVkIChNSVBTRUIpCisgIC8qIEJGRCB3YW50cyAiYnNkIiBpbnN0ZWFkIG9mICJuZXdzb3MiLiAgUGVyaGFwcyBCRkQgc2hvdWxkIGJlIGNoYW5nZWQsCisgICAgIEkgZG9uJ3Qga25vdy4uLi4gICovCisgIHByaW50ZiAoIm1pcHMtc29ueS1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisgIHByaW50ZiAoIm02OGstc29ueS1uZXdzb3Mlc1xuIiwKKyNpZmRlZiBORVdTT1M0CisgICAgICAgICAgIjQiCisjZWxzZQorCSAgIiIKKyNlbmRpZgorICAgICAgICAgKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKyAgcHJpbnRmICgiYXJtLWFjb3JuLXJpc2NpeFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChocDMwMCkgJiYgIWRlZmluZWQgKGhwdXgpCisgIHByaW50ZiAoIm02OGstaHAtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE5lWFQpCisjaWYgIWRlZmluZWQgKF9fQVJDSElURUNUVVJFX18pCisjZGVmaW5lIF9fQVJDSElURUNUVVJFX18gIm02OGsiCisjZW5kaWYKKyAgaW50IHZlcnNpb247CisgIHZlcnNpb249YChob3N0aW5mbyB8IHNlZCAtbiAncy8uKk5lWFQgTWFjaCBcKFswLTldKlwpLiovXDEvcCcpIDI+L2Rldi9udWxsYDsKKyAgaWYgKHZlcnNpb24gPCA0KQorICAgIHByaW50ZiAoIiVzLW5leHQtbmV4dHN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy1uZXh0LW9wZW5zdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOworICBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTVVMVElNQVgpIHx8IGRlZmluZWQgKG4xNikKKyNpZiBkZWZpbmVkIChVTUFYVikKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLXN5c3ZcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaWYgZGVmaW5lZCAoQ01VKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtbWFjaFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX18zODZCU0RfXykKKyAgcHJpbnRmICgiaTM4Ni1wYy1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoc2VxdWVudCkKKyNpZiBkZWZpbmVkIChpMzg2KQorICBwcmludGYgKCJpMzg2LXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2lmIGRlZmluZWQgKG5zMzIwMDApCisgIHByaW50ZiAoIm5zMzJrLXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfU0VRVUVOVF8pCisgICAgc3RydWN0IHV0c25hbWUgdW47CisKKyAgICB1bmFtZSgmdW4pOworCisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYyIiwgMikgPT0gMCkgeworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgyXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMSIsIDIpID09IDApIHsgLyogWFhYIGlzIFYxIGNvcnJlY3Q/ICovCisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDFcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eFxuIik7IGV4aXQgKDApOworCisjZW5kaWYKKworI2lmIGRlZmluZWQgKHZheCkKKyMgaWYgIWRlZmluZWQgKHVsdHJpeCkKKyMgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorIyAgaWYgZGVmaW5lZCAoQlNEKQorIyAgIGlmIEJTRCA9PSA0MworICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNcbiIpOyBleGl0ICgwKTsKKyMgICBlbHNlCisjICAgIGlmIEJTRCA9PSAxOTkwMDYKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zcmVub1xuIik7IGV4aXQgKDApOworIyAgICBlbHNlCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKKyMgIGVuZGlmCisjIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLXVsdHJpeFxuIik7IGV4aXQgKDApOworIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChhbGxpYW50KSAmJiBkZWZpbmVkIChpODYwKQorICBwcmludGYgKCJpODYwLWFsbGlhbnQtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworICBleGl0ICgxKTsKK30KK0VPRgorCiskQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCisjIEFwb2xsb3MgcHV0IHRoZSBzeXN0ZW0gdHlwZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBlY2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorCisjIENvbnZleCB2ZXJzaW9ucyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMyKikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIGMzNCopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzQqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBlc2FjCitmaQorCitjYXQgPiYyIDw8RU9GCiskMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3RlbSB0eXBlCisKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWlsZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBpcyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24gb2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKworICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKK2FuZAorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKK0lmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQorc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKK3BlcnRpbmVudCB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgbmVlZGVkCitpbmZvcm1hdGlvbiB0byBoYW5kbGUgeW91ciBzeXN0ZW0uCisKK2NvbmZpZy5ndWVzcyB0aW1lc3RhbXAgPSAkdGltZXN0YW1wCisKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsYAorCitob3N0aW5mbyAgICAgICAgICAgICAgID0gYChob3N0aW5mbykgMj4vZGV2L251bGxgCisvYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAKKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsYAorL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbGAKKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsYAorL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGxgCisKK1VOQU1FX01BQ0hJTkUgPSAke1VOQU1FX01BQ0hJTkV9CitVTkFNRV9SRUxFQVNFID0gJHtVTkFNRV9SRUxFQVNFfQorVU5BTUVfU1lTVEVNICA9ICR7VU5BTUVfU1lTVEVNfQorVU5BTUVfVkVSU0lPTiA9ICR7VU5BTUVfVkVSU0lPTn0KK0VPRgorCitleGl0IDEKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZy5zdWIgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnLnN1YgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYTU1YTUwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZy5zdWIKQEAgLTAsMCArMSwxNzA1IEBACisjISAvYmluL3NoCisjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMDktMTEtMjAnCisKKyMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgorIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCisjIGNhbiBoYW5kbGUgdGhhdCBtYWNoaW5lLiAgSXQgZG9lcyBub3QgaW1wbHkgQUxMIEdOVSBzb2Z0d2FyZSBjYW4uCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCAtIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCisjIDAyMTEwLTEzMDEsIFVTQS4KKyMKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisKKyMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0CisjIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIEdOVSBDaGFuZ2VMb2cgZW50cnkuCisjCisjIENvbmZpZ3VyYXRpb24gc3Vicm91dGluZSB0byB2YWxpZGF0ZSBhbmQgY2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiB0eXBlLgorIyBTdXBwbHkgdGhlIHNwZWNpZmllZCBjb25maWd1cmF0aW9uIHR5cGUgYXMgYW4gYXJndW1lbnQuCisjIElmIGl0IGlzIGludmFsaWQsIHdlIHByaW50IGFuIGVycm9yIG1lc3NhZ2Ugb24gc3RkZXJyIGFuZCBleGl0IHdpdGggY29kZSAxLgorIyBPdGhlcndpc2UsIHdlIHByaW50IHRoZSBjYW5vbmljYWwgY29uZmlnIHR5cGUgb24gc3Rkb3V0IGFuZCBzdWNjZWVkLgorCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKKyMgVGhpcyBmaWxlIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGZvciBhbGwgR05VIHBhY2thZ2VzCisjIGFuZCByZWNvZ25pemUgYWxsIHRoZSBDUFUgdHlwZXMsIHN5c3RlbSB0eXBlcyBhbmQgYWxpYXNlcworIyB0aGF0IGFyZSBtZWFuaW5nZnVsIHdpdGggKmFueSogR05VIHNvZnR3YXJlLgorIyBFYWNoIHBhY2thZ2UgaXMgcmVzcG9uc2libGUgZm9yIHJlcG9ydGluZyB3aGljaCB2YWxpZCBjb25maWd1cmF0aW9ucworIyBpdCBkb2VzIG5vdCBzdXBwb3J0LiAgVGhlIHVzZXIgc2hvdWxkIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2gKKyMgYSBmYWlsdXJlIHRvIHN1cHBvcnQgYSB2YWxpZCBjb25maWd1cmF0aW9uIGZyb20gYSBtZWFuaW5nbGVzcworIyBjb25maWd1cmF0aW9uLgorCisjIFRoZSBnb2FsIG9mIHRoaXMgZmlsZSBpcyB0byBtYXAgYWxsIHRoZSB2YXJpb3VzIHZhcmlhdGlvbnMgb2YgYSBnaXZlbgorIyBtYWNoaW5lIHNwZWNpZmljYXRpb24gaW50byBhIHNpbmdsZSBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvciBpbiBzb21lIGNhc2VzLCB0aGUgbmV3ZXIgZm91ci1wYXJ0IGZvcm06CisjCUNQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQorIyBJdCBpcyB3cm9uZyB0byBlY2hvIGFueSBvdGhlciB0eXBlIG9mIHNwZWNpZmljYXRpb24uCisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dIENQVS1NRlItT1BTWVMKKyAgICAgICAkMCBbT1BUSU9OXSBBTElBUworCitDYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIG5hbWUuCisKK09wZXJhdGlvbiBtb2RlczoKKyAgLWgsIC0taGVscCAgICAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC10LCAtLXRpbWUtc3RhbXAgICBwcmludCBkYXRlIG9mIGxhc3QgbW9kaWZpY2F0aW9uLCB0aGVuIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgICAgIHByaW50IHZlcnNpb24gbnVtYmVyLCB0aGVuIGV4aXQKKworUmVwb3J0IGJ1Z3MgYW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiIKKwordmVyc2lvbj0iXAorR05VIGNvbmZpZy5zdWIgKCR0aW1lc3RhbXApCisKK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKKzIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCit3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCisKK2hlbHA9IgorVHJ5IFxgJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorCisjIFBhcnNlIGNvbW1hbmQgbGluZQord2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQorICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OworICAgIC0tdmVyc2lvbiB8IC12ICkKKyAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7CisgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgc2hpZnQ7IGJyZWFrIDs7CisgICAgLSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgorICAgICAgIGJyZWFrIDs7CisgICAgLSogKQorICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIKKyAgICAgICBleGl0IDEgOzsKKworICAgICpsb2NhbCopCisgICAgICAgIyBGaXJzdCBwYXNzIHRocm91Z2ggYW55IGxvY2FsIG1hY2hpbmUgdHlwZXMuCisgICAgICAgZWNobyAkMQorICAgICAgIGV4aXQgOzsKKworICAgICogKQorICAgICAgIGJyZWFrIDs7CisgIGVzYWMKK2RvbmUKKworY2FzZSAkIyBpbgorIDApIGVjaG8gIiRtZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworIDEpIDs7CisgKikgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIgPiYyCisgICAgZXhpdCAxOzsKK2VzYWMKKworIyBTZXBhcmF0ZSB3aGF0IHRoZSB1c2VyIGdhdmUgaW50byBDUFUtQ09NUEFOWSBhbmQgT1Mgb3IgS0VSTkVMLU9TIChpZiBhbnkpLgorIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KK21heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAorY2FzZSAkbWF5YmVfb3MgaW4KKyAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKKyAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCisgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKKyAgICBvcz0tJG1heWJlX29zCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKKyAgICA7OworICAqKQorICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvLVteLV0qJC8vJ2AKKyAgICBpZiBbICRiYXNpY19tYWNoaW5lICE9ICQxIF0KKyAgICB0aGVuIG9zPWBlY2hvICQxIHwgc2VkICdzLy4qLS8tLydgCisgICAgZWxzZSBvcz07IGZpCisgICAgOzsKK2VzYWMKKworIyMjIExldCdzIHJlY29nbml6ZSBjb21tb24gbWFjaGluZXMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zIHNvCisjIyMgdGhhdCB0aGluZ3MgbGlrZSBjb25maWcuc3ViIGRlY3N0YXRpb24tMzEwMCB3b3JrLiAgV2UgYWxzbworIyMjIHJlY29nbml6ZSBzb21lIG1hbnVmYWN0dXJlcnMgYXMgbm90IGJlaW5nIG9wZXJhdGluZyBzeXN0ZW1zLCBzbyB3ZQorIyMjIGNhbiBwcm92aWRlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgYmVsb3cuCitjYXNlICRvcyBpbgorCS1zdW4qb3MqKQorCQkjIFByZXZlbnQgZm9sbG93aW5nIGNsYXVzZSBmcm9tIGhhbmRsaW5nIHRoaXMgaW52YWxpZCBpbnB1dC4KKwkJOzsKKwktZGVjKiB8IC1taXBzKiB8IC1zZXF1ZW50KiB8IC1lbmNvcmUqIHwgLXBjNTMyKiB8IC1zZ2kqIHwgLXNvbnkqIHwgXAorCS1hdHQqIHwgLTczMDAqIHwgLTMzMDAqIHwgLWRlbHRhKiB8IC1tb3Rvcm9sYSogfCAtc3VuWzIzNF0qIHwgXAorCS11bmljb20qIHwgLWlibSogfCAtbmV4dCB8IC1ocCB8IC1pc2kqIHwgLWFwb2xsbyB8IC1hbHRvcyogfCBcCisJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKKwktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAorCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkgfCAtbWljcm9ibGF6ZSkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKyAgICAgICAgLWJsdWVnZW5lKikKKwkgICAgICAgIG9zPS1jbmsKKwkJOzsKKwktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktc2NvdXQpCisJCTs7CisJLXdycykKKwkJb3M9LXZ4d29ya3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1jaG9ydXNvcyopCisJCW9zPS1jaG9ydXNvcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisgCS1jaG9ydXNyZGIpCisgCQlvcz0tY2hvcnVzcmRiCisJCWJhc2ljX21hY2hpbmU9JDEKKyAJCTs7CisJLWhpdXgqKQorCQlvcz0taGl1eHdlMgorCQk7OworCS1zY282KQorCQlvcz0tc2NvNXY2CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNSkKKwkJb3M9LXNjbzMuMnY1CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNCkKKwkJb3M9LXNjbzMuMnY0CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4yLls0LTldKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3NjbzMuMi4vc2NvMy4ydi8nYAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMnZbNC05XSopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNXY2KikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28qKQorCQlvcz0tc2NvMy4ydjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS11ZGsqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWlzYykKKwkJb3M9LWlzYzIuMgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWNsaXgqKQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaW50ZXJncmFwaAorCQk7OworCS1pc2MqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWx5bngqKQorCQlvcz0tbHlueG9zCisJCTs7CisJLXB0eCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtc2VxdWVudC8nYAorCQk7OworCS13aW5kb3dzbnQqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvd2luZG93c250L3dpbm50LydgCisJCTs7CisJLXBzb3MqKQorCQlvcz0tcHNvcworCQk7OworCS1taW50IHwgLW1pbnRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworZXNhYworCisjIERlY29kZSBhbGlhc2VzIGZvciBjZXJ0YWluIENQVS1DT01QQU5ZIGNvbWJpbmF0aW9ucy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLgorCSMgU29tZSBhcmUgb21pdHRlZCBoZXJlIGJlY2F1c2UgdGhleSBoYXZlIHNwZWNpYWwgbWVhbmluZ3MgYmVsb3cuCisJMTc1MGEgfCA1ODAgXAorCXwgYTI5ayBcCisJfCBhbHBoYSB8IGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhZXY2Wzc4XSB8IGFscGhhcGNhNVs2N10gXAorCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCisJfCBhbTMzXzIuMCBcCisJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCisJfCBiZmluIFwKKwl8IGM0eCB8IGNsaXBwZXIgXAorCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKKwl8IGZpZG8gfCBmcjMwIHwgZnJ2IFwKKwl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCisJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKKwl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbG0zMiBcCisJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKKwl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKKwl8IG1pcHMgfCBtaXBzYmUgfCBtaXBzZWIgfCBtaXBzZWwgfCBtaXBzbGUgXAorCXwgbWlwczE2IFwKKwl8IG1pcHM2NCB8IG1pcHM2NGVsIFwKKwl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwKKwl8IG1pcHM2NG9yaW9uIHwgbWlwczY0b3Jpb25lbCBcCisJfCBtaXBzNjRyNTkwMCB8IG1pcHM2NHI1OTAwZWwgXAorCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKKwl8IG1pcHM2NHZyNDEwMCB8IG1pcHM2NHZyNDEwMGVsIFwKKwl8IG1pcHM2NHZyNDMwMCB8IG1pcHM2NHZyNDMwMGVsIFwKKwl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwKKwl8IG1pcHM2NHZyNTkwMCB8IG1pcHM2NHZyNTkwMGVsIFwKKwl8IG1pcHNpc2EzMiB8IG1pcHNpc2EzMmVsIFwKKwl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCisJfCBtaXBzaXNhNjQgfCBtaXBzaXNhNjRlbCBcCisJfCBtaXBzaXNhNjRyMiB8IG1pcHNpc2E2NHIyZWwgXAorCXwgbWlwc2lzYTY0c2IxIHwgbWlwc2lzYTY0c2IxZWwgXAorCXwgbWlwc2lzYTY0c3I3MWsgfCBtaXBzaXNhNjRzcjcxa2VsIFwKKwl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisJfCBtbjEwMjAwIHwgbW4xMDMwMCBcCisJfCBtb3hpZSBcCisJfCBtdCBcCisJfCBtc3A0MzAgXAorCXwgbmlvcyB8IG5pb3MyIFwKKwl8IG5zMTZrIHwgbnMzMmsgXAorCXwgb3IzMiBcCisJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAorCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAorCXwgcHlyYW1pZCBcCisJfCByeCBcCisJfCBzY29yZSBcCisJfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzI0XWFlYiB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2g2NCB8IHNoNjRsZSBcCisJfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBzcGFyY2xldCB8IHNwYXJjbGl0ZSBcCisJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3BhcmN2OXYgXAorCXwgc3B1IHwgc3Ryb25nYXJtIFwKKwl8IHRhaG9lIHwgdGh1bWIgfCB0aWM0eCB8IHRpYzgwIHwgdHJvbiBcCisJfCB1Ymljb20zMiBcCisJfCB2ODUwIHwgdjg1MGUgXAorCXwgd2UzMmsgXAorCXwgeDg2IHwgeGMxNnggfCB4c2NhbGUgfCB4c2NhbGVlW2JsXSB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB6OGsgfCB6ODApCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IHBpY29jaGlwKQorCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1ub25lCisJCTs7CisJbTg4MTEwIHwgbTY4MFsxMjM0Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisJCTs7CisJbXMxKQorCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKwkJOzsKKworCSMgV2UgdXNlIGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisJIyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCisJIyAoMikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJzLgorCWkqODYgfCB4ODZfNjQpCisJICBiYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXBjCisJICA7OworCSMgT2JqZWN0IGlmIG1vcmUgdGhhbiBvbmUgY29tcGFueSBuYW1lIHdvcmQuCisJKi0qLSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGggY29tcGFueSBuYW1lLgorCTU4MC0qIFwKKwl8IGEyOWstKiBcCisJfCBhbHBoYS0qIHwgYWxwaGFldls0LThdLSogfCBhbHBoYWV2NTYtKiB8IGFscGhhZXY2Wzc4XS0qIFwKKwl8IGFscGhhNjQtKiB8IGFscGhhNjRldls0LThdLSogfCBhbHBoYTY0ZXY1Ni0qIHwgYWxwaGE2NGV2Nls3OF0tKiBcCisJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIFwKKwl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAorCXwgYXZyLSogfCBhdnIzMi0qIFwKKwl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKKwl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKKwl8IGVseHNpLSogXAorCXwgZjMwWzAxXS0qIHwgZjcwMC0qIHwgZmlkby0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorCXwgaDgzMDAtKiB8IGg4NTAwLSogXAorCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBwYTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKwl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhNjQtKiBcCisJfCBpcDJrLSogfCBpcTIwMDAtKiBcCisJfCBsbTMyLSogXAorCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAorCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFnLSogfCBtaWNyb2JsYXplLSogXAorCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAorCXwgbWlwczE2LSogXAorCXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwKKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisJfCBtaXBzNjRvcmlvbi0qIHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHI1OTAwLSogfCBtaXBzNjRyNTkwMGVsLSogXAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjR2cjQxMDAtKiB8IG1pcHM2NHZyNDEwMGVsLSogXAorCXwgbWlwczY0dnI0MzAwLSogfCBtaXBzNjR2cjQzMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisJfCBtaXBzNjR2cjU5MDAtKiB8IG1pcHM2NHZyNTkwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKKwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTY0LSogfCBtaXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSogXAorCXwgbWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKKwl8IG1pcHNpc2E2NHNyNzFrLSogfCBtaXBzaXNhNjRzcjcxa2VsLSogXAorCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCisJfCBtbWl4LSogXAorCXwgbXQtKiBcCisJfCBtc3A0MzAtKiBcCisJfCBuaW9zLSogfCBuaW9zMi0qIFwKKwl8IG5vbmUtKiB8IG5wMS0qIHwgbnMxNmstKiB8IG5zMzJrLSogXAorCXwgb3Jpb24tKiBcCisJfCBwZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKKwl8IHBvd2VycGMtKiB8IHBvd2VycGM2NC0qIHwgcG93ZXJwYzY0bGUtKiB8IHBvd2VycGNsZS0qIHwgcHBjYmUtKiBcCisJfCBweXJhbWlkLSogXAorCXwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKKwl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKKwl8IHNobGUtKiB8IHNoWzEyMzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAorCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAorCXwgc3BhcmNsaXRlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdHJvbmdhcm0tKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiB8IHRodW1iLSogXAorCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogfCB0aWxlLSogXAorCXwgdHJvbi0qIFwKKwl8IHViaWNvbTMyLSogXAorCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHZheC0qIFwKKwl8IHdlMzJrLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKiBcCisJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCisJfCB5bXAtKiBcCisJfCB6OGstKiB8IHo4MC0qKQorCQk7OworCSMgUmVjb2duaXplIHRoZSBiYXNpYyBDUFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUsIHdpdGggZ2xvYiBtYXRjaC4KKwl4dGVuc2EqKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5kCisJIyBmb3IgYSBDUFUgdHlwZSBhbmQgYSBjb21wYW55IGFuZCBzb21ldGltZXMgZXZlbiBhbiBPUy4KKwkzODZic2QpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1ic2QKKwkJOzsKKwkzYjEgfCA3MzAwIHwgNzMwMC1hdHQgfCBhdHQtNzMwMCB8IHBjNzMwMCB8IHNhZmFyaSB8IHVuaXhwYykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtYXR0CisJCTs7CisJM2IqKQorCQliYXNpY19tYWNoaW5lPXdlMzJrLWF0dAorCQk7OworCWEyOWtoaWYpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworICAgIAlhYmFjdXMpCisJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KKwkJOzsKKwlhZG9iZTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMTAtYWRvYmUKKwkJb3M9LXNjb3V0CisJCTs7CisJYWxsaWFudCB8IGZ4ODApCisJCWJhc2ljX21hY2hpbmU9Zng4MC1hbGxpYW50CisJCTs7CisJYWx0b3MgfCBhbHRvczMwNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hbHRvcworCQk7OworCWFtMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstbm9uZQorCQlvcz0tYnNkCisJCTs7CisJYW1kNjQpCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LXBjCisJCTs7CisJYW1kNjQtKikKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlhbWRhaGwpCisJCWJhc2ljX21hY2hpbmU9NTgwLWFtZGFobAorCQlvcz0tc3lzdgorCQk7OworCWFtaWdhIHwgYW1pZ2EtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJOzsKKwlhbWlnYW9zIHwgYW1pZ2Fkb3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1hbWlnYW9zCisJCTs7CisJYW1pZ2F1bml4IHwgYW1peCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LXN5c3Y0CisJCTs7CisJYXBvbGxvNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcG9sbG8KKwkJb3M9LXN5c3YKKwkJOzsKKwlhcG9sbG82OGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tYnNkCisJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CisJYXV4KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKKwkJb3M9LWF1eAorCQk7OworCWJhbGFuY2UpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwlibGFja2ZpbikKKwkJYmFzaWNfbWFjaGluZT1iZmluLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJYmxhY2tmaW4tKikKKwkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzkwKQorCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKyAgICAgICAgY2VnY2MpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LWNlZ2NjCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTYpCisJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwljcmRzIHwgdW5vcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKKwkJOzsKKwljcmlzdjMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhmcyopCisJCWJhc2ljX21hY2hpbmU9Y3Jpc3YzMi1heGlzCisJCTs7CisJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKKwkJYmFzaWNfbWFjaGluZT1jcmlzLWF4aXMKKwkJOzsKKwljcngpCisJCWJhc2ljX21hY2hpbmU9Y3J4LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWRhMzAgfCBkYTMwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1kYTMwCisJCTs7CisJZGVjc3RhdGlvbiB8IGRlY3N0YXRpb24tMzEwMCB8IHBtYXggfCBwbWF4LSogfCBwbWluIHwgZGVjMzEwMCB8IGRlY3N0YXRuKQorCQliYXNpY19tYWNoaW5lPW1pcHMtZGVjCisJCTs7CisJZGVjc3lzdGVtMTAqIHwgZGVjMTAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczEwCisJCTs7CisJZGVjc3lzdGVtMjAqIHwgZGVjMjAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczIwCisJCTs7CisJZGVsdGEgfCAzMzAwIHwgbW90b3JvbGEtMzMwMCB8IG1vdG9yb2xhLWRlbHRhIFwKKwkgICAgICB8IDMzMDAtbW90b3JvbGEgfCBkZWx0YS1tb3Rvcm9sYSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW1vdG9yb2xhCisJCTs7CisJZGVsdGE4OCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLW1vdG9yb2xhCisJCW9zPS1zeXN2MworCQk7OworCWRpY29zKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJb3M9LWRpY29zCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJtb24yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4c2kpCisJCWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29yZSB8IHVtYXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVzMTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2MC1hbGxpYW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsKKwlnbWljcm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsKKwlnbzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1MHIqIHwgaGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJCTs7CisJaHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJOzsKKwlocDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0gfCBocDc4WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBocDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tb3NmCisJCTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJvZWxmCisJCTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQk7OworIyBJJ20gbm90IHN1cmUgd2hhdCAiU3lzdjMyIiBtZWFucy4gIFNob3VsZCB0aGlzIGJlIHN5c3YzLjI/CisJaSo4NnYzMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2MzIKKwkJOzsKKwlpKjg2djQqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3Y0CisJCTs7CisJaSo4NnYpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdgorCQk7OworCWkqODZzb2wyKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJaTM4Nm1hY2gpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1tYWNoCisJCW9zPS1tYWNoCisJCTs7CisJaTM4Ni12c3RhIHwgdnN0YSkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LXZzdGEKKwkJOzsKKwlpcmlzIHwgaXJpczRkKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2dpCisJCWNhc2UgJG9zIGluCisJCSAgICAtaXJpeCopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1pcml4NAorCQkJOzsKKwkJZXNhYworCQk7OworCWlzaTY4IHwgaXNpKQorCQliYXNpY19tYWNoaW5lPW02OGstaXNpCisJCW9zPS1zeXN2CisJCTs7CisJbTY4a25vbW11KQorCQliYXNpY19tYWNoaW5lPW02OGstdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwltNjhrbm9tbXUtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCW04OGstb21yb24qKQorCQliYXNpY19tYWNoaW5lPW04OGstb21yb24KKwkJOzsKKwltYWdudW0gfCBtMzIzMCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLW1pcHMKKwkJb3M9LXN5c3YKKwkJOzsKKwltZXJsaW4pCisJCWJhc2ljX21hY2hpbmU9bnMzMmstdXRlaworCQlvcz0tc3lzdgorCQk7OworICAgICAgICBtaWNyb2JsYXplKQorCQliYXNpY19tYWNoaW5lPW1pY3JvYmxhemUteGlsaW54CisJCTs7CisJbWluZ3czMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJbWluZ3czMmNlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1taW5ndzMyY2UKKwkJOzsKKwltaW5pZnJhbWUpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWNvbnZlcmdlbnQKKwkJOzsKKwkqbWludCB8IC1taW50WzAtOV0qIHwgKk1pTlQgfCAqTWlOVFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7CisJbWlwczMqLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgCisJCTs7CisJbWlwczMqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYC11bmtub3duCisJCTs7CisJbW9uaXRvcikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCW1vcnBob3MpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCW9zPS1tb3JwaG9zCisJCTs7CisJbXNkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbXNkb3MKKwkJOzsKKwltczEtKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9tczEtL210LS8nYAorCQk7OworCW12cykKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQlvcz0tbXZzCisJCTs7CisJbmNyMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgorCQlvcz0tc3lzdjQKKwkJOzsKKwluZXRic2QzODYpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS1uZXRic2QKKwkJOzsKKwluZXR3aW5kZXIpCisJCWJhc2ljX21hY2hpbmU9YXJtdjRsLXJlYmVsCisJCW9zPS1saW51eAorCQk7OworCW5ld3MgfCBuZXdzNzAwIHwgbmV3czgwMCB8IG5ld3M5MDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzMTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMzAtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmV3cy0zNjAwIHwgcmlzYy1uZXdzKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc29ueQorCQlvcz0tbmV3c29zCisJCTs7CisJbmVjdjcwKQorCQliYXNpY19tYWNoaW5lPXY3MC1uZWMKKwkJb3M9LXN5c3YKKwkJOzsKKwluZXh0IHwgbSotbmV4dCApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uZXh0CisJCWNhc2UgJG9zIGluCisJCSAgICAtbmV4dHN0ZXAqICkKKwkJCTs7CisJCSAgICAtbnMyKikKKwkJICAgICAgb3M9LW5leHRzdGVwMgorCQkJOzsKKwkJICAgICopCisJCSAgICAgIG9zPS1uZXh0c3RlcDMKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwluaDMwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaFs0NV0wMDApCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LWN4dXgKKwkJOzsKKwluaW5keTk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1uaW5keQorCQk7OworCW1vbjk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCisJCW9zPS1tb245NjAKKwkJOzsKKwlub25zdG9wdXgpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1jb21wYXEKKwkJb3M9LW5vbnN0b3B1eAorCQk7OworCW5wMSkKKwkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKKwkJOzsKKwluc3ItdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KKwkJOzsKKwlvcDUwbi0qIHwgb3A2MGMtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQlvcz0tcHJvZWxmCisJCTs7CisJb3BlbnJpc2MgfCBvcGVucmlzYy0qKQorCQliYXNpY19tYWNoaW5lPW9yMzItdW5rbm93bgorCQk7OworCW9zNDAwKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCisJCW9zPS1vczQwMAorCQk7OworCU9TRTY4MDAwIHwgb3NlNjgwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlvczY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5vbmUKKwkJb3M9LW9zNjhrCisJCTs7CisJcGEtaGl0YWNoaSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhpdGFjaGkKKwkJb3M9LWhpdXh3ZTIKKwkJOzsKKwlwYXJhZ29uKQorCQliYXNpY19tYWNoaW5lPWk4NjAtaW50ZWwKKwkJb3M9LW9zZgorCQk7OworCXBhcmlzYykKKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJcGFyaXNjLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwlwYmQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtdHRpCisJCTs7CisJcGJiKQorCQliYXNpY19tYWNoaW5lPW02OGstdHRpCisJCTs7CisJcGM1MzIgfCBwYzUzMi0qKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXBjNTMyCisJCTs7CisJcGM5OCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCTs7CisJcGM5OC0qKQorCQliYXNpY19tYWNoaW5lPWkzODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtIHwgcDUgfCBrNSB8IGs2IHwgbmV4Z2VuIHwgdmlhYzMpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQk7OworCXBlbnRpdW1wcm8gfCBwNiB8IDZ4ODYgfCBhdGhsb24gfCBhdGhsb25fKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bWlpIHwgcGVudGl1bTIgfCBwZW50aXVtaWlpIHwgcGVudGl1bTMpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQk7OworCXBlbnRpdW00KQorCQliYXNpY19tYWNoaW5lPWk3ODYtcGMKKwkJOzsKKwlwZW50aXVtLSogfCBwNS0qIHwgazUtKiB8IGs2LSogfCBuZXhnZW4tKiB8IHZpYWMzLSopCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW1wcm8tKiB8IHA2LSogfCA2eDg2LSogfCBhdGhsb24tKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bWlpLSogfCBwZW50aXVtMi0qIHwgcGVudGl1bWlpaS0qIHwgcGVudGl1bTMtKikKKwkJYmFzaWNfbWFjaGluZT1pNjg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bTQtKikKKwkJYmFzaWNfbWFjaGluZT1pNzg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcG4pCisJCWJhc2ljX21hY2hpbmU9cG4tZ291bGQKKwkJOzsKKwlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KKwkJOzsKKwlwcGMpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCTs7CisJcHBjLSopCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwY2xlIHwgcG93ZXJwY2xpdHRsZSB8IHBwYy1sZSB8IHBvd2VycGMtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS11bmtub3duCisJCTs7CisJcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjbGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NCkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtdW5rbm93bgorCQk7OworCXBwYzY0LSopIGJhc2ljX21hY2hpbmU9cG93ZXJwYzY0LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjNjRsZSB8IHBvd2VycGM2NGxpdHRsZSB8IHBwYzY0LWxlIHwgcG93ZXJwYzY0LWxpdHRsZSkKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS11bmtub3duCisJCTs7CisJcHBjNjRsZS0qIHwgcG93ZXJwYzY0bGl0dGxlLSopCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYzY0bGUtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwczIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1pYm0KKwkJOzsKKwlwdzMyKQorCQliYXNpY19tYWNoaW5lPWk1ODYtdW5rbm93bgorCQlvcz0tcHczMgorCQk7OworCXJkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tcmRvcworCQk7OworCXJvbTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCXJtWzQ2XTAwKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2llbWVucworCQk7OworCXJ0cGMgfCBydHBjLSopCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwlzMzkwIHwgczM5MC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTAtaWJtCisJCTs7CisJczM5MHggfCBzMzkweC0qKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQk7OworCXNhMjkyMDApCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXNiMSkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhNjRzYjEtdW5rbm93bgorCQk7OworCXNiMWVsKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVua25vd24KKwkJOzsKKwlzZGUpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTMyLXNkZQorCQlvcz0tZWxmCisJCTs7CisJc2VpKQorCQliYXNpY19tYWNoaW5lPW1pcHMtc2VpCisJCW9zPS1zZWl1eAorCQk7OworCXNlcXVlbnQpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zZXF1ZW50CisJCTs7CisJc2gpCisJCWJhc2ljX21hY2hpbmU9c2gtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJc2g1ZWwpCisJCWJhc2ljX21hY2hpbmU9c2g1bGUtdW5rbm93bgorCQk7OworCXNoNjQpCisJCWJhc2ljX21hY2hpbmU9c2g2NC11bmtub3duCisJCTs7CisJc3BhcmNsaXRlLXdycyB8IHNpbXNvLXdycykKKwkJYmFzaWNfbWFjaGluZT1zcGFyY2xpdGUtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJc3BzNykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YyCisJCTs7CisJc3B1cikKKwkJYmFzaWNfbWFjaGluZT1zcHVyLXVua25vd24KKwkJOzsKKwlzdDIwMDApCisJCWJhc2ljX21hY2hpbmU9bTY4ay10YW5kZW0KKwkJOzsKKwlzdHJhdHVzKQorCQliYXNpY19tYWNoaW5lPWk4NjAtc3RyYXR1cworCQlvcz0tc3lzdjQKKwkJOzsKKwlzdW4yKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJOzsKKwlzdW4yb3MzKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjJvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuM29zMykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuM29zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNG9zMykKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjRvczQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40c29sMikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJc3VuMyB8IHN1bjMtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQk7OworCXN1bjQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJc3VuMzg2IHwgc3VuMzg2aSB8IHJvYWRydW5uZXIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zdW4KKwkJOzsKKwlzdjEpCisJCWJhc2ljX21hY2hpbmU9c3YxLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXN5bW1ldHJ5KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwl0M2UpCisJCWJhc2ljX21hY2hpbmU9YWxwaGFldjUtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdDkwKQorCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0aWM1NHggfCBjNTR4KikKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eCB8IGM1NXgqKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNnggfCBjNngqKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJb3M9LWNvZmYKKwkJOzsKKwl0aWxlKikKKwkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KKwkJb3M9LWxpbnV4LWdudQorCQk7OworCXR4MzkpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzktdW5rbm93bgorCQk7OworCXR4MzllbCkKKwkJYmFzaWNfbWFjaGluZT1taXBzdHgzOWVsLXVua25vd24KKwkJOzsKKwl0b2FkMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC14a2wKKwkJb3M9LXRvcHMyMAorCQk7OworCXRvd2VyIHwgdG93ZXItMzIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1uY3IKKwkJOzsKKwl0cGYpCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCW9zPS10cGYKKwkJOzsKKwl1ZGkyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LXVkaQorCQk7OworCXVsdHJhMykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQorCQlvcz0tc3ltMQorCQk7OworCXY4MTAgfCBuZWN2ODEwKQorCQliYXNpY19tYWNoaW5lPXY4MTAtbmVjCisJCW9zPS1ub25lCisJCTs7CisJdmF4dikKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS1zeXN2CisJCTs7CisJdm1zKQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJb3M9LXZtcworCQk7OworCXZwcCp8dnh8dngtKikKKwkJYmFzaWNfbWFjaGluZT1mMzAxLWZ1aml0c3UKKwkJOzsKKwl2eHdvcmtzOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczY4KQorCQliYXNpY19tYWNoaW5lPW02OGstd3JzCisJCW9zPS12eHdvcmtzCisJCTs7CisJdnh3b3JrczI5aykKKwkJYmFzaWNfbWFjaGluZT1hMjlrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXc2NSopCisJCWJhc2ljX21hY2hpbmU9dzY1LXdkYworCQlvcz0tbm9uZQorCQk7OworCXc4OWstKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJb3M9LXByb2VsZgorCQk7OworCXhib3gpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tbWluZ3czMgorCQk7OworCXhwcyB8IHhwczEwMCkKKwkJYmFzaWNfbWFjaGluZT14cHMxMDAtaG9uZXl3ZWxsCisJCTs7CisJeW1wKQorCQliYXNpY19tYWNoaW5lPXltcC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl6OGstKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKKwlub25lKQorCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQorCQlvcz0tbm9uZQorCQk7OworCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcy4gIEl0IGlzIGluCisjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFudWZhY3R1cmVyLCBpbiBvdGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCisJdzg5aykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLXdpbmJvbmQKKwkJOzsKKwlvcDUwbikKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCW9wNjBjKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCTs7CisJcm9tcCkKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCW1taXgpCisJCWJhc2ljX21hY2hpbmU9bW1peC1rbnV0aAorCQk7OworCXJzNjAwMCkKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtaWJtCisJCTs7CisJdmF4KQorCQliYXNpY19tYWNoaW5lPXZheC1kZWMKKwkJOzsKKwlwZHAxMCkKKwkJIyB0aGVyZSBhcmUgbWFueSBjbG9uZXMsIHNvIERFQyBpcyBub3QgYSBzYWZlIGJldAorCQliYXNpY19tYWNoaW5lPXBkcDEwLXVua25vd24KKwkJOzsKKwlwZHAxMSkKKwkJYmFzaWNfbWFjaGluZT1wZHAxMS1kZWMKKwkJOzsKKwl3ZTMyaykKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJCWJhc2ljX21hY2hpbmU9c2gtdW5rbm93bgorCQk7OworCXNwYXJjIHwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2KQorCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgorCQk7OworCWN5ZHJhKQorCQliYXNpY19tYWNoaW5lPWN5ZHJhLWN5ZHJvbWUKKwkJOzsKKwlvcmlvbikKKwkJYmFzaWNfbWFjaGluZT1vcmlvbi1oaWdobGV2ZWwKKwkJOzsKKwlvcmlvbjEwNSkKKwkJYmFzaWNfbWFjaGluZT1jbGlwcGVyLWhpZ2hsZXZlbAorCQk7OworCW1hYyB8IG1wdyB8IG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcHBsZQorCQk7OworCXBtYWMgfCBwbWFjLW1wdykKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWFwcGxlCisJCTs7CisJKi11bmtub3duKQorCQkjIE1ha2Ugc3VyZSB0byBtYXRjaCBhbiBhbHJlYWR5LWNhbm9uaWNhbGl6ZWQgbWFjaGluZSBuYW1lLgorCQk7OworCSopCisJCWVjaG8gSW52YWxpZCBjb25maWd1cmF0aW9uIFxgJDFcJzogbWFjaGluZSBcYCRiYXNpY19tYWNoaW5lXCcgbm90IHJlY29nbml6ZWQgMT4mMgorCQlleGl0IDEKKwkJOzsKK2VzYWMKKworIyBIZXJlIHdlIGNhbm9uaWNhbGl6ZSBjZXJ0YWluIGFsaWFzZXMgZm9yIG1hbnVmYWN0dXJlcnMuCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi1kaWdpdGFsKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9kaWdpdGFsLiovZGVjLydgCisJCTs7CisJKi1jb21tb2RvcmUqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL2NvbW1vZG9yZS4qL2NibS8nYAorCQk7OworCSopCisJCTs7Citlc2FjCisKKyMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBjZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zLgorCitpZiBbIHgiJG9zIiAhPSB4IiIgXQordGhlbgorY2FzZSAkb3MgaW4KKyAgICAgICAgIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKKyAgICAgICAgIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KKwkjIC1zb2xhcmlzKiBpcyBhIGJhc2ljIHN5c3RlbSB0eXBlLCB3aXRoIHRoaXMgb25lIGV4Y2VwdGlvbi4KKyAgICAgICAgLWF1cm9yYXV4KQorCSAgICAgICAgb3M9LWF1cm9yYXV4CisJCTs7CisJLXNvbGFyaXMxIHwgLXNvbGFyaXMxLiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzb2xhcmlzMXxzdW5vczR8J2AKKwkJOzsKKwktc29sYXJpcykKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJLXN2cjQqKQorCQlvcz0tc3lzdjQKKwkJOzsKKwktdW5peHdhcmUqKQorCQlvcz0tc3lzdjQuMnV3CisJCTs7CisJLWdudS9saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xnbnUvbGludXh8bGludXgtZ251fCdgCisJCTs7CisJIyBGaXJzdCBhY2NlcHQgdGhlIGJhc2ljIHN5c3RlbSB0eXBlcy4KKwkjIFRoZSBwb3J0YWJsZSBzeXN0ZW1zIGNvbWVzIGZpcnN0LgorCSMgRWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiBBICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJIyAtc3lzdiogaXMgbm90IGhlcmUgYmVjYXVzZSBpdCBjb21lcyBsYXRlciwgYWZ0ZXIgc3lzdnI0LgorCS1nbnUqIHwgLWJzZCogfCAtbWFjaCogfCAtbWluaXgqIHwgLWdlbml4KiB8IC11bHRyaXgqIHwgLWlyaXgqIFwKKwkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCisJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCisJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKKwkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKKwkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCisJICAgICAgfCAtb3BlbmJzZCogfCAtc29saWRic2QqIFwKKwkgICAgICB8IC1la2tvYnNkKiB8IC1rZnJlZWJzZCogfCAtZnJlZWJzZCogfCAtcmlzY2l4KiB8IC1seW54b3MqIFwKKwkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCisJICAgICAgfCAtcHR4KiB8IC1jb2ZmKiB8IC1lY29mZiogfCAtd2lubnQqIHwgLWRvbWFpbiogfCAtdnN0YSogXAorCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAorCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIHwgLWNlZ2NjKiBcCisJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAorCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKKwkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCisJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKwkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKKwkgICAgICB8IC1zdG9ybS1jaGFvcyogfCAtdG9wczEwKiB8IC10ZW5leCogfCAtdG9wczIwKiB8IC1pdHMqIFwKKwkgICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBcCisJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCisJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKKwkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyopCisJIyBSZW1lbWJlciwgZWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiAqLCB0byBtYXRjaCBhIHZlcnNpb24gbnVtYmVyLgorCQk7OworCS1xbngqKQorCQljYXNlICRiYXNpY19tYWNoaW5lIGluCisJCSAgICB4ODYtKiB8IGkqODYtKikKKwkJCTs7CisJCSAgICAqKQorCQkJb3M9LW50byRvcworCQkJOzsKKwkJZXNhYworCQk7OworCS1udG8tcW54KikKKwkJOzsKKwktbnRvKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8tcW54fCdgCisJCTs7CisJLXNpbSB8IC1lczE4MDAqIHwgLWhtcyogfCAteHJheSB8IC1vczY4ayogfCAtbm9uZSogfCAtdjg4ciogXAorCSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAtYmVvcyogfCAtaGFpa3UqIFwKKwkgICAgICB8IC1tYWNvcyogfCAtbXB3KiB8IC1tYWdpYyogfCAtbW1peHdhcmUqIHwgLW1vbjk2MCogfCAtbG5ld3MqKQorCQk7OworCS1tYWMqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bWFjfG1hY29zfCdgCisJCTs7CisJLWxpbnV4LWRpZXRsaWJjKQorCQlvcz0tbGludXgtZGlldGxpYmMKKwkJOzsKKwktbGludXgqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8bGludXh8bGludXgtZ251fCdgCisJCTs7CisJLXN1bm9zNSopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczV8c29sYXJpczJ8J2AKKwkJOzsKKwktc3Vub3M2KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfHN1bm9zNnxzb2xhcmlzM3wnYAorCQk7OworCS1vcGVuZWQqKQorCQlvcz0tb3BlbmVkaXRpb24KKwkJOzsKKyAgICAgICAgLW9zNDAwKikKKwkJb3M9LW9zNDAwCisJCTs7CisJLXdpbmNlKikKKwkJb3M9LXdpbmNlCisJCTs7CisJLW9zZnJvc2UqKQorCQlvcz0tb3Nmcm9zZQorCQk7OworCS1vc2YqKQorCQlvcz0tb3NmCisJCTs7CisJLXV0ZWsqKQorCQlvcz0tYnNkCisJCTs7CisJLWR5bml4KikKKwkJb3M9LWJzZAorCQk7OworCS1hY2lzKikKKwkJb3M9LWFvcworCQk7OworCS1hdGhlb3MqKQorCQlvcz0tYXRoZW9zCisJCTs7CisJLXN5bGxhYmxlKikKKwkJb3M9LXN5bGxhYmxlCisJCTs7CisJLTM4NmJzZCkKKwkJb3M9LWJzZAorCQk7OworCS1jdGl4KiB8IC11dHMqKQorCQlvcz0tc3lzdgorCQk7OworCS1ub3ZhKikKKwkJb3M9LXJ0bWstbm92YQorCQk7OworCS1uczIgKQorCQlvcz0tbmV4dHN0ZXAyCisJCTs7CisJLW5zayopCisJCW9zPS1uc2sKKwkJOzsKKwkjIFByZXNlcnZlIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBzaW5peDUuCisJLXNpbml4NS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c2luaXh8c3lzdnwnYAorCQk7OworCS1zaW5peCopCisJCW9zPS1zeXN2NAorCQk7OworICAgICAgICAtdHBmKikKKwkJb3M9LXRwZgorCQk7OworCS10cml0b24qKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktb3NzKikKKwkJb3M9LXN5c3YzCisJCTs7CisJLXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCS1zdnIzKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3lzdnI0KQorCQlvcz0tc3lzdjQKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGFmdGVyIC1zeXN2cjQuCisJLXN5c3YqKQorCQk7OworCS1vc2UqKQorCQlvcz0tb3NlCisJCTs7CisJLWVzMTgwMCopCisJCW9zPS1vc2UKKwkJOzsKKwkteGVuaXgpCisJCW9zPS14ZW5peAorCQk7OworCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCW9zPS1taW50CisJCTs7CisJLWFyb3MqKQorCQlvcz0tYXJvcworCQk7OworCS1rYW9zKikKKwkJb3M9LWthb3MKKwkJOzsKKwktenZtb2UpCisJCW9zPS16dm1vZQorCQk7OworCS1kaWNvcyopCisJCW9zPS1kaWNvcworCQk7OworCS1ub25lKQorCQk7OworCSopCisJCSMgR2V0IHJpZCBvZiB0aGUgYC0nIGF0IHRoZSBiZWdpbm5pbmcgb2YgJG9zLgorCQlvcz1gZWNobyAkb3MgfCBzZWQgJ3MvW14tXSotLy8nYAorCQllY2hvIEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IHN5c3RlbSBcYCRvc1wnIG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCitlbHNlCisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBjb21lIHdpdGggdmFyaW91cyBtYWNoaW5lcy4KKyMgVGhlIHZhbHVlIHNob3VsZCBiZSB3aGF0IHRoZSB2ZW5kb3IgY3VycmVudGx5IHNoaXBzIG91dCB0aGUgZG9vciB3aXRoIHRoZWlyCisjIG1hY2hpbmUgb3IgcHV0IGFub3RoZXIgd2F5LCB0aGUgbW9zdCBwb3B1bGFyIG9zIHByb3ZpZGVkIHdpdGggdGhlIG1hY2hpbmUuCisKKyMgTm90ZSB0aGF0IGlmIHlvdSdyZSBnb2luZyB0byB0cnkgdG8gbWF0Y2ggIi1NQU5VRkFDVFVSRVIiIGhlcmUgKHNheSwKKyMgIi1zdW4iKSwgdGhlbiB5b3UgaGF2ZSB0byB0ZWxsIHRoZSBjYXNlIHN0YXRlbWVudCB1cCB0b3dhcmRzIHRoZSB0b3AKKyMgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nIHN5c3RlbS4gIE90aGVyd2lzZSwgY29kZSBhYm92ZQorIyB3aWxsIHNpZ25hbCBhbiBlcnJvciBzYXlpbmcgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nCisjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgorCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisgICAgICAgIHNjb3JlLSopCisJCW9zPS1lbGYKKwkJOzsKKyAgICAgICAgc3B1LSopCisJCW9zPS1lbGYKKwkJOzsKKwkqLWFjb3JuKQorCQlvcz0tcmlzY2l4MS4yCisJCTs7CisJYXJtKi1yZWJlbCkKKwkJb3M9LWxpbnV4CisJCTs7CisJYXJtKi1zZW1pKQorCQlvcz0tYW91dAorCQk7OworICAgICAgICBjNHgtKiB8IHRpYzR4LSopCisgICAgICAgIAlvcz0tY29mZgorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBlbnRyeS4KKwlwZHAxMC0qKQorCQlvcz0tdG9wczIwCisJCTs7CisJcGRwMTEtKikKKwkJb3M9LW5vbmUKKwkJOzsKKwkqLWRlYyB8IHZheC0qKQorCQlvcz0tdWx0cml4NC4yCisJCTs7CisJbTY4Ki1hcG9sbG8pCisJCW9zPS1kb21haW4KKwkJOzsKKwlpMzg2LXN1bikKKwkJb3M9LXN1bm9zNC4wLjIKKwkJOzsKKwltNjgwMDAtc3VuKQorCQlvcz0tc3Vub3MzCisJCSMgVGhpcyBhbHNvIGV4aXN0cyBpbiB0aGUgY29uZmlndXJlIHByb2dyYW0sIGJ1dCB3YXMgbm90IHRoZQorCQkjIGRlZmF1bHQuCisJCSMgb3M9LXN1bm9zNAorCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7CisgICAgICAgIG1lcC0qKQorCQlvcz0tZWxmCisJCTs7CisJbWlwcyotY2lzY28pCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi0qKQorCQlvcz0tZWxmCisJCTs7CisJb3IzMi0qKQorCQlvcz0tY29mZgorCQk7OworCSotdHRpKQkjIG11c3QgYmUgYmVmb3JlIHNwYXJjIGVudHJ5IG9yIHdlIGdldCB0aGUgd3Jvbmcgb3MuCisJCW9zPS1zeXN2MworCQk7OworCXNwYXJjLSogfCAqLXN1bikKKwkJb3M9LXN1bm9zNC4xLjEKKwkJOzsKKwkqLWJlKQorCQlvcz0tYmVvcworCQk7OworCSotaGFpa3UpCisJCW9zPS1oYWlrdQorCQk7OworCSotaWJtKQorCQlvcz0tYWl4CisJCTs7CisgICAgCSota251dGgpCisJCW9zPS1tbWl4d2FyZQorCQk7OworCSotd2VjKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi13aW5ib25kKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1va2kpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwkqLWhwKQorCQlvcz0taHB1eAorCQk7OworCSotaGl0YWNoaSkKKwkJb3M9LWhpdXgKKwkJOzsKKwlpODYwLSogfCAqLWF0dCB8ICotbmNyIHwgKi1hbHRvcyB8ICotbW90b3JvbGEgfCAqLWNvbnZlcmdlbnQpCisJCW9zPS1zeXN2CisJCTs7CisJKi1jYm0pCisJCW9zPS1hbWlnYW9zCisJCTs7CisJKi1kZykKKwkJb3M9LWRndXgKKwkJOzsKKwkqLWRvbHBoaW4pCisJCW9zPS1zeXN2MworCQk7OworCW02OGstY2N1cikKKwkJb3M9LXJ0dQorCQk7OworCW04OGstb21yb24qKQorCQlvcz0tbHVuYQorCQk7OworCSotbmV4dCApCisJCW9zPS1uZXh0c3RlcAorCQk7OworCSotc2VxdWVudCkKKwkJb3M9LXB0eAorCQk7OworCSotY3JkcykKKwkJb3M9LXVub3MKKwkJOzsKKwkqLW5zKQorCQlvcz0tZ2VuaXgKKwkJOzsKKwlpMzcwLSopCisJCW9zPS1tdnMKKwkJOzsKKwkqLW5leHQpCisJCW9zPS1uZXh0c3RlcDMKKwkJOzsKKwkqLWdvdWxkKQorCQlvcz0tc3lzdgorCQk7OworCSotaGlnaGxldmVsKQorCQlvcz0tYnNkCisJCTs7CisJKi1lbmNvcmUpCisJCW9zPS1ic2QKKwkJOzsKKwkqLXNnaSkKKwkJb3M9LWlyaXgKKwkJOzsKKwkqLXNpZW1lbnMpCisJCW9zPS1zeXN2NAorCQk7OworCSotbWFzc2NvbXApCisJCW9zPS1ydHUKKwkJOzsKKwlmMzBbMDFdLWZ1aml0c3UgfCBmNzAwLWZ1aml0c3UpCisJCW9zPS11eHB2CisJCTs7CisJKi1yb202OGspCisJCW9zPS1jb2ZmCisJCTs7CisJKi0qYnVnKQorCQlvcz0tY29mZgorCQk7OworCSotYXBwbGUpCisJCW9zPS1tYWNvcworCQk7OworCSotYXRhcmkqKQorCQlvcz0tbWludAorCQk7OworCSopCisJCW9zPS1ub25lCisJCTs7Citlc2FjCitmaQorCisjIEhlcmUgd2UgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHdlIGtub3cgdGhlIG9zLCBhbmQgdGhlIENQVSB0eXBlLCBidXQgbm90IHRoZQorIyBtYW51ZmFjdHVyZXIuICBXZSBwaWNrIHRoZSBsb2dpY2FsIG1hbnVmYWN0dXJlci4KK3ZlbmRvcj11bmtub3duCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJKi11bmtub3duKQorCQljYXNlICRvcyBpbgorCQkJLXJpc2NpeCopCisJCQkJdmVuZG9yPWFjb3JuCisJCQkJOzsKKwkJCS1zdW5vcyopCisJCQkJdmVuZG9yPXN1bgorCQkJCTs7CisJCQktY25rKnwtYWl4KikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1iZW9zKikKKwkJCQl2ZW5kb3I9YmUKKwkJCQk7OworCQkJLWhwdXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktbXBlaXgqKQorCQkJCXZlbmRvcj1ocAorCQkJCTs7CisJCQktaGl1eCopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLXVub3MqKQorCQkJCXZlbmRvcj1jcmRzCisJCQkJOzsKKwkJCS1kZ3V4KikKKwkJCQl2ZW5kb3I9ZGcKKwkJCQk7OworCQkJLWx1bmEqKQorCQkJCXZlbmRvcj1vbXJvbgorCQkJCTs7CisJCQktZ2VuaXgqKQorCQkJCXZlbmRvcj1ucworCQkJCTs7CisJCQktbXZzKiB8IC1vcGVuZWQqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLW9zNDAwKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1wdHgqKQorCQkJCXZlbmRvcj1zZXF1ZW50CisJCQkJOzsKKwkJCS10cGYqKQorCQkJCXZlbmRvcj1pYm0KKwkJCQk7OworCQkJLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC13aW5kaXNzKikKKwkJCQl2ZW5kb3I9d3JzCisJCQkJOzsKKwkJCS1hdXgqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktaG1zKikKKwkJCQl2ZW5kb3I9aGl0YWNoaQorCQkJCTs7CisJCQktbXB3KiB8IC1tYWNvcyopCisJCQkJdmVuZG9yPWFwcGxlCisJCQkJOzsKKwkJCS0qbWludCB8IC1taW50WzAtOV0qIHwgLSpNaU5UIHwgLU1pTlRbMC05XSopCisJCQkJdmVuZG9yPWF0YXJpCisJCQkJOzsKKwkJCS12b3MqKQorCQkJCXZlbmRvcj1zdHJhdHVzCisJCQkJOzsKKwkJZXNhYworCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICJzL3Vua25vd24vJHZlbmRvci8iYAorCQk7OworZXNhYworCitlY2hvICRiYXNpY19tYWNoaW5lJG9zCitleGl0CisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgorIyB0aW1lLXN0YW1wLWVuZDogIiciCisjIEVuZDoKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWdfZmlsdGVyLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnX2ZpbHRlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmM2MzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnX2ZpbHRlci5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qIGNvbmZpZ19maWx0ZXIuYzogaGFuZGxlIGhpZGRlbiBvciBub24tY29uZmlndXJhdGlvbiBmaWxlcyBpbiBjb25maWcgZGlycy4KKworICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2hlbmV2ZXIgd2Ugd2lsbCBwYXJzZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBlbnN1cmUgd2UgYXJlIG5vdCBwaWNraW5nIHVwIGJhY2t1cHMsIFNDTSBtZXRhIGRhdGEsIHBhY2thZ2UgYXJ0aWZhY3RzLgorICAgRXZlbnR1YWxseSBhbGwgY29uZmlnIGZpbGVzIHdpbGwgaGF2ZSB0byBmb2xsb3cgYSBjb252ZW50aW9uIHNvIHRoZXNlCisgICBsaXN0cyBvZiBwb3NzaWJsZSBleGNlcHRpb25zIHNob3VsZCBub3QgaGF2ZSB0byBncm93IGJ5IHZlcnkgbXVjaC4KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJjb25maWdfZmlsdGVyLmgiCisKK2ludCBjb25maWdfZmlsdGVyKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJY29uc3QgY2hhciAqY29uc3QgKnA7CisKKwlzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2tpcF9wcmVmaXhbXSA9IHsKKwkJIi4iLAorCQkifiIsCisJCSJDVlMiLAorCQlOVUxMCisJfTsKKworCXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBza2lwX3N1ZmZpeFtdID0geworCQkiLnJwbXNhdmUiLAorCQkiLnJwbW9yaWciLAorCQkiLnJwbW5ldyIsCisJCSIuZHBrZy1vbGQiLAorCQkiLmRwa2ctZGlzdCIsCisJCSIuZHBrZy1uZXciLAorCQkiLmRwa2ctYmFrIiwKKwkJIi5iYWsiLAorCQkiLm9yaWciLAorCQkiLnJlaiIsCisJCSIuWWFTVDJzYXZlIiwKKwkJIi4tIiwKKwkJIn4iLAorCQkiLHYiLAorCQlOVUxMCisJfTsKKworCWZvciAocCA9IHNraXBfcHJlZml4OyAqcDsgcCsrKSB7CisJCWlmIChzdHJzdGFydHMobmFtZSwgKnApKQorCQkJcmV0dXJuIDA7CisJfQorCisJZm9yIChwID0gc2tpcF9zdWZmaXg7ICpwOyBwKyspIHsKKwkJaWYgKHN0cmxlbihuYW1lKSA+PSBzdHJsZW4oKnApICYmCisJCSAgICBzdHJlcSgqcCwgc3RyY2hyKG5hbWUsIDApIC0gc3RybGVuKCpwKSkpCisJCSAgICByZXR1cm4gMDsKKyAJfQorCisJcmV0dXJuIDE7Cit9CisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWdfZmlsdGVyLmggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnX2ZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4ZGM5NTcKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvY29uZmlnX2ZpbHRlci5oCkBAIC0wLDAgKzEsMTQgQEAKKy8qIGNvbmZpZ19maWx0ZXIuaDogaGFuZGxlIGhpZGRlbiBvciBub24tY29uZmlndXJhdGlvbiBmaWxlcyBpbiBjb25maWcgZGlycy4KKworICAgVGhlc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2hlbmV2ZXIgd2Ugd2lsbCBwYXJzZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBlbnN1cmUgd2UgYXJlIG5vdCBwaWNraW5nIHVwIGJhY2t1cHMsIFNDTSBtZXRhIGRhdGEsIHBhY2thZ2UgYXJ0aWZhY3RzLgorICAgRXZlbnR1YWxseSBhbGwgY29uZmlnIGZpbGVzIHdpbGwgaGF2ZSB0byBmb2xsb3cgYSBjb252ZW50aW9uIHNvIHRoZXNlCisgICBsaXN0cyBvZiBwb3NzaWJsZSBleGNlcHRpb25zIHNob3VsZCBub3QgaGF2ZSB0byBncm93IGJ5IHZlcnkgbXVjaC4KKyovCisjaWZuZGVmIF9NT0RJTklUVE9PTFNfQ09ORklHX0ZJTFRFUl9ICisjZGVmaW5lIF9NT0RJTklUVE9PTFNfQ09ORklHX0ZJTFRFUl9ICisKKy8qIHJldHVybnMgMCBpZiB0aGUgbmFtZSBtYXRjaGVzIGEgd2VsbC1rbm93biBiYWNrdXAgcGF0dGVybiAqLworaW50IGNvbmZpZ19maWx0ZXIoY29uc3QgY2hhciAqbmFtZSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZ3VyZSBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWd1cmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2Q3OTE4OAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWd1cmUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2NvbmZpZ3VyZS5hYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWd1cmUuYWMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ1NDljZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9jb25maWd1cmUuYWMKQEAgLTAsMCArMSw3MiBAQAorQUNfSU5JVChtb2R1bGUtaW5pdC10b29scywzLjEyLXByZTIpCisKK0FDX0NBTk9OSUNBTF9TWVNURU0KKworQVhfRU5BQkxFX0JVSUxERElSKFtidWlsZF0pCisKKyMgVXNlIC1uby1wb3J0YWJpbGl0eSBzaW5jZSB3ZSdyZSBuZXZlciBnb2luZyB0byB1c2UgbW9kdWxlLWluaXQtdG9vbHMgb24KKyMgbm9uLUxpbnV4IHN5c3RlbXMgYW5kIGl0J3MgcmVhc29uYWJsZSB0byBleHBlY3QgR05VLWNvbXBhdGliaWxpdHkgaGVyZS4KK0FNX0lOSVRfQVVUT01BS0UoWy1Xbm8tcG9ydGFiaWxpdHldKQorCisjIElmIHpsaWIgaXMgcmVxdWlyZWQsIGxpYnogbXVzdCBiZSBsaW5rZWQgc3RhdGljLCBtb2Rwcm9iZSBpcyBpbgorIyAvc2JpbiwgbGlieiBpcyBpbiAvdXNyL2xpYiBhbmQgbWF5IG5vdCBiZSBhdmFpbGFibGUgd2hlbiBpdCBpcyBydW4uCitBQ19BUkdfRU5BQkxFKHpsaWIsCitbICAtLWVuYWJsZS16bGliICAgICAgICAgICAgICAgSGFuZGxlIGd6aXBwZWQgbW9kdWxlc10sCitbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSAieWVzIjsgdGhlbgorICBBQ19ERUZJTkUoQ09ORklHX1VTRV9aTElCKQorICB6bGliX2ZsYWdzPSItV2wsLUJzdGF0aWMgLWx6IC1XbCwtQmR5bmFtaWMiCitmaV0pCisKK0FDX0FSR19FTkFCTEUoemxpYi1keW5hbWljLAorWyAgLS1lbmFibGUtemxpYi1keW5hbWljICAgICAgIEhhbmRsZSBnemlwcGVkIG1vZHVsZXMsIHpsaWIgd2lsbCBiZSBsaW5rZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeW5hbWljYWxseS4gTm90ZSB0aGF0IGxpYnogbXVzdCBiZSBpbnN0YWxsZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiAvbGliIGZvciB0aGlzIHRvIHdvcmsuXSwKK1tpZiB0ZXN0ICIkZW5hYmxldmFsIiA9ICJ5ZXMiOyB0aGVuCisgIEFDX0RFRklORShDT05GSUdfVVNFX1pMSUIpCisgIHpsaWJfZmxhZ3M9Ii1seiIKK2ZpXSkKKworQUNfUFJPR19DQworQUNfUFJPR19SQU5MSUIKKworQUNfQ0hFQ0tfUFJPR1MoRE9DQk9PS1RPTUFOLCBkb2Nib29rLXRvLW1hbiBkb2Nib29rMm1hbiwgW25vXSwpCitpZiB0ZXN0IHgiJERPQ0JPT0tUT01BTiIgPSB4bm8KK3RoZW4KKwlBQ19NU0dfV0FSTihbZG9jYm9vazJtYW4gbm90IGZvdW5kXSkKKwkjIGZhaWwgd2l0aCBhIG1lYW5pbmdmdWxsIGVycm9yIGlmICRET0NCT09LVE9NQU4gY2FsbGVkIGJ5IHRoZSBtYWtlZmlsZQorCURPQ0JPT0tUT01BTj1kb2Nib29rMm1hbgorZmkKKyAKKyMgRGVsYXkgYWRkaW5nIHRoZSB6bGliX2ZsYWdzIHVudGlsIGFmdGVyIEFDX1BST0dfQ0MsIHNvIHdlIGNhbiBkaXN0aW5ndWlzaAorIyBiZXR3ZWVuIGEgYnJva2VuIGNjIGFuZCBhIHdvcmtpbmcgY2MgYnV0IG1pc3NpbmcgbGliei5hLgorTERBREQ9IiRMREFERCAkemxpYl9mbGFncyIKK0FDX1NVQlNUKExEQUREKQorCitjYXNlICR0YXJnZXQgaW4KKyotKi1saW51eCopIDs7CisqKSBBQ19NU0dfRVJST1IoW0xpbnV4IG9ubHksIGR1ZGUhXSk7OworZXNhYworCisjIFRoYW5rcyB0byBNYXJ0aW4gUG9vbAoraWYgdGVzdCB4IiRHQ0MiID0geHllcyAKK3RoZW4KKyAgICBDRkxBR1M9IiRDRkxBR1MgLVd1bnVzZWQgLVdhbGwiCisgICAgQUNfTVNHX05PVElDRShbQWRkaW5nIGdjYyBvcHRpb25zOiAkQ0ZMQUdTXSkKK2ZpCisKK0FDX0FSR19FTkFCTEUoc3RhdGljLXV0aWxzLAorQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1zdGF0aWMtdXRpbHNdLCBbRG8gbm90IGJ1aWxkIHN0YXRpYyB1dGlsc10pLAorW10sW2VuYWJsZV9zdGF0aWNfdXRpbHM9eWVzXSkKK0FNX0NPTkRJVElPTkFMKEJVSUxEX1NUQVRJQ19VVElMUywgdGVzdCAiJGVuYWJsZV9zdGF0aWNfdXRpbHMiID0gInllcyIpCisKK0FDX0FSR19XSVRIKG1vZGRpciwKK1sgIC0td2l0aC1tb2RkaXI9cGF0aCAgICAgIEdpdmUgdGhlIHBhdGggZm9yIHN5c3RlbSBtb2R1bGVzIGRpcmVjdG9yeS5dCitbICAgICAgICAgICAgICAgICAgICAgICAgIFsgRGVmYXVsdHMgdG8gL2xpYi9tb2R1bGVzIF1dLAorW2lmIHRlc3QgISAteiAiJHdpdGh2YWwiOyB0aGVuCisgIE1PRFVMRV9ESVI9IlxcXCIkd2l0aHZhbC9cXFwiIgorICBDRkxBR1M9IiRDRkxBR1MgLURNT0RVTEVfRElSPSRNT0RVTEVfRElSIgorZmldKQorQUNfU1VCU1QoTU9EVUxFX0RJUikKKworQUNfT1VUUFVUKFtNYWtlZmlsZV0pCisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBjb21wIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RlcGNvbXAKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGY4ZWVhNwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBjb21wCkBAIC0wLDAgKzEsNjMwIEBACisjISAvYmluL3NoCisjIGRlcGNvbXAgLSBjb21waWxlIGEgcHJvZ3JhbSBnZW5lcmF0aW5nIGRlcGVuZGVuY2llcyBhcyBzaWRlLWVmZmVjdHMKKworc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQworCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOSBGcmVlCisjIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKKyMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKKyMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgorCisjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBBbGV4YW5kcmUgT2xpdmEgPG9saXZhQGRjYy51bmljYW1wLmJyPi4KKworY2FzZSAkMSBpbgorICAnJykKKyAgICAgZWNobyAiJDA6IE5vIGNvbW1hbmQuICBUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgMT4mMgorICAgICBleGl0IDE7CisgICAgIDs7CisgIC1oIHwgLS1oKikKKyAgICBjYXQgPDxcRU9GCitVc2FnZTogZGVwY29tcCBbLS1oZWxwXSBbLS12ZXJzaW9uXSBQUk9HUkFNIFtBUkdTXQorCitSdW4gUFJPR1JBTVMgQVJHUyB0byBjb21waWxlIGEgZmlsZSwgZ2VuZXJhdGluZyBkZXBlbmRlbmNpZXMKK2FzIHNpZGUtZWZmZWN0cy4KKworRW52aXJvbm1lbnQgdmFyaWFibGVzOgorICBkZXBtb2RlICAgICBEZXBlbmRlbmN5IHRyYWNraW5nIG1vZGUuCisgIHNvdXJjZSAgICAgIFNvdXJjZSBmaWxlIHJlYWQgYnkgYFBST0dSQU1TIEFSR1MnLgorICBvYmplY3QgICAgICBPYmplY3QgZmlsZSBvdXRwdXQgYnkgYFBST0dSQU1TIEFSR1MnLgorICBERVBESVIgICAgICBkaXJlY3Rvcnkgd2hlcmUgdG8gc3RvcmUgZGVwZW5kZW5jaWVzLgorICBkZXBmaWxlICAgICBEZXBlbmRlbmN5IGZpbGUgdG8gb3V0cHV0LgorICB0bXBkZXBmaWxlICBUZW1wb3JhcnkgZmlsZSB0byB1c2Ugd2hlbiBvdXRwdXRpbmcgZGVwZW5kZW5jaWVzLgorICBsaWJ0b29sICAgICBXaGV0aGVyIGxpYnRvb2wgaXMgdXNlZCAoeWVzL25vKS4KKworUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPi4KK0VPRgorICAgIGV4aXQgJD8KKyAgICA7OworICAtdiB8IC0tdiopCisgICAgZWNobyAiZGVwY29tcCAkc2NyaXB0dmVyc2lvbiIKKyAgICBleGl0ICQ/CisgICAgOzsKK2VzYWMKKworaWYgdGVzdCAteiAiJGRlcG1vZGUiIHx8IHRlc3QgLXogIiRzb3VyY2UiIHx8IHRlc3QgLXogIiRvYmplY3QiOyB0aGVuCisgIGVjaG8gImRlcGNvbXA6IFZhcmlhYmxlcyBzb3VyY2UsIG9iamVjdCBhbmQgZGVwbW9kZSBtdXN0IGJlIHNldCIgMT4mMgorICBleGl0IDEKK2ZpCisKKyMgRGVwZW5kZW5jaWVzIGZvciBzdWIvYmFyLm8gb3Igc3ViL2Jhci5vYmogZ28gaW50byBzdWIvLmRlcHMvYmFyLlBvLgorZGVwZmlsZT0ke2RlcGZpbGUtYGVjaG8gIiRvYmplY3QiIHwKKyAgc2VkICdzfFteXFwvXSokfCcke0RFUERJUi0uZGVwc30nLyZ8O3N8XC5cKFteLl0qXCkkfC5QXDF8O3N8UG9iaiR8UG98J2B9Cit0bXBkZXBmaWxlPSR7dG1wZGVwZmlsZS1gZWNobyAiJGRlcGZpbGUiIHwgc2VkICdzL1wuXChbXi5dKlwpJC8uVFwxLydgfQorCitybSAtZiAiJHRtcGRlcGZpbGUiCisKKyMgU29tZSBtb2RlcyB3b3JrIGp1c3QgbGlrZSBvdGhlciBtb2RlcywgYnV0IHVzZSBkaWZmZXJlbnQgZmxhZ3MuICBXZQorIyBwYXJhbWV0ZXJpemUgaGVyZSwgYnV0IHN0aWxsIGxpc3QgdGhlIG1vZGVzIGluIHRoZSBiaWcgY2FzZSBiZWxvdywKKyMgdG8gbWFrZSBkZXBlbmQubTQgZWFzaWVyIHRvIHdyaXRlLiAgTm90ZSB0aGF0IHdlICpjYW5ub3QqIHVzZSBhIGNhc2UKKyMgaGVyZSwgYmVjYXVzZSB0aGlzIGZpbGUgY2FuIG9ubHkgY29udGFpbiBvbmUgY2FzZSBzdGF0ZW1lbnQuCitpZiB0ZXN0ICIkZGVwbW9kZSIgPSBocDsgdGhlbgorICAjIEhQIGNvbXBpbGVyIHVzZXMgLU0gYW5kIG5vIGV4dHJhIGFyZy4KKyAgZ2NjZmxhZz0tTQorICBkZXBtb2RlPWdjYworZmkKKworaWYgdGVzdCAiJGRlcG1vZGUiID0gZGFzaFhtc3Rkb3V0OyB0aGVuCisgICAjIFRoaXMgaXMganVzdCBsaWtlIGRhc2htc3Rkb3V0IHdpdGggYSBkaWZmZXJlbnQgYXJndW1lbnQuCisgICBkYXNobWZsYWc9LXhNCisgICBkZXBtb2RlPWRhc2htc3Rkb3V0CitmaQorCitjeWdwYXRoX3U9ImN5Z3BhdGggLXUgLWYgLSIKK2lmIHRlc3QgIiRkZXBtb2RlIiA9IG1zdmNtc3lzOyB0aGVuCisgICAjIFRoaXMgaXMganVzdCBsaWtlIG1zdmlzdWFsY3BwIGJ1dCB3L28gY3lncGF0aCB0cmFuc2xhdGlvbi4KKyAgICMgSnVzdCBjb252ZXJ0IHRoZSBiYWNrc2xhc2gtZXNjYXBlZCBiYWNrc2xhc2hlcyB0byBzaW5nbGUgZm9yd2FyZAorICAgIyBzbGFzaGVzIHRvIHNhdGlzZnkgZGVwZW5kLm00CisgICBjeWdwYXRoX3U9InNlZCBzLFxcXFxcXFxcLC8sZyIKKyAgIGRlcG1vZGU9bXN2aXN1YWxjcHAKK2ZpCisKK2Nhc2UgIiRkZXBtb2RlIiBpbgorZ2NjMykKKyMjIGdjYyAzIGltcGxlbWVudHMgZGVwZW5kZW5jeSB0cmFja2luZyB0aGF0IGRvZXMgZXhhY3RseSB3aGF0CisjIyB3ZSB3YW50LiAgWWF5ISAgTm90ZTogZm9yIHNvbWUgcmVhc29uIGxpYnRvb2wgMS40IGRvZXNuJ3QgbGlrZQorIyMgaXQgaWYgLU1EIC1NUCBjb21lcyBhZnRlciB0aGUgLU1GIHN0dWZmLiAgSG1tLgorIyMgVW5mb3J0dW5hdGVseSwgRnJlZUJTRCBjODkgYWNjZXB0YW5jZSBvZiBmbGFncyBkZXBlbmRzIHVwb24KKyMjIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgb3JkZXI7IHNvIGFkZCB0aGUgZmxhZ3Mgd2hlcmUgdGhleQorIyMgYXBwZWFyIGluIGRlcGVuZDIuYW0uICBOb3RlIHRoYXQgdGhlIHNsb3dkb3duIGluY3VycmVkIGhlcmUKKyMjIGFmZmVjdHMgb25seSBjb25maWd1cmU6IGluIG1ha2VmaWxlcywgJUZBU1RERVAlIHNob3J0Y3V0cyB0aGlzLgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAkYXJnIGluCisgICAgLWMpIHNldCBmbm9yZCAiJEAiIC1NVCAiJG9iamVjdCIgLU1EIC1NUCAtTUYgIiR0bXBkZXBmaWxlIiAiJGFyZyIgOzsKKyAgICAqKSAgc2V0IGZub3JkICIkQCIgIiRhcmciIDs7CisgICAgZXNhYworICAgIHNoaWZ0ICMgZm5vcmQKKyAgICBzaGlmdCAjICRhcmcKKyAgZG9uZQorICAiJEAiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBtdiAiJHRtcGRlcGZpbGUiICIkZGVwZmlsZSIKKyAgOzsKKworZ2NjKQorIyMgVGhlcmUgYXJlIHZhcmlvdXMgd2F5cyB0byBnZXQgZGVwZW5kZW5jeSBvdXRwdXQgZnJvbSBnY2MuICBIZXJlJ3MKKyMjIHdoeSB3ZSBwaWNrIHRoaXMgcmF0aGVyIG9ic2N1cmUgbWV0aG9kOgorIyMgLSBEb24ndCB3YW50IHRvIHVzZSAtTUQgYmVjYXVzZSB3ZSdkIGxpa2UgdGhlIGRlcGVuZGVuY2llcyB0byBlbmQKKyMjICAgdXAgaW4gYSBzdWJkaXIuICBIYXZpbmcgdG8gcmVuYW1lIGJ5IGhhbmQgaXMgdWdseS4KKyMjICAgKFdlIG1pZ2h0IGVuZCB1cCBkb2luZyB0aGlzIGFueXdheSB0byBzdXBwb3J0IG90aGVyIGNvbXBpbGVycy4pCisjIyAtIFRoZSBERVBFTkRFTkNJRVNfT1VUUFVUIGVudmlyb25tZW50IHZhcmlhYmxlIG1ha2VzIGdjYyBhY3QgbGlrZQorIyMgICAtTU0sIG5vdCAtTSAoZGVzcGl0ZSB3aGF0IHRoZSBkb2NzIHNheSkuCisjIyAtIFVzaW5nIC1NIGRpcmVjdGx5IG1lYW5zIHJ1bm5pbmcgdGhlIGNvbXBpbGVyIHR3aWNlIChldmVuIHdvcnNlCisjIyAgIHRoYW4gcmVuYW1pbmcpLgorICBpZiB0ZXN0IC16ICIkZ2NjZmxhZyI7IHRoZW4KKyAgICBnY2NmbGFnPS1NRCwKKyAgZmkKKyAgIiRAIiAtV3AsIiRnY2NmbGFnJHRtcGRlcGZpbGUiCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIGFscGhhPUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKKyMjIFRoZSBzZWNvbmQgLWUgZXhwcmVzc2lvbiBoYW5kbGVzIERPUy1zdHlsZSBmaWxlIG5hbWVzIHdpdGggZHJpdmUgbGV0dGVycy4KKyAgc2VkIC1lICdzL15bXjpdKjogLyAvJyBcCisgICAgICAtZSAncy9eWyckYWxwaGEnXTpcL1teOl0qOiAvIC8nIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisjIyBUaGlzIG5leHQgcGllY2Ugb2YgbWFnaWMgYXZvaWRzIHRoZSBgZGVsZXRlZCBoZWFkZXIgZmlsZScgcHJvYmxlbS4KKyMjIFRoZSBwcm9ibGVtIGlzIHRoYXQgd2hlbiBhIGhlYWRlciBmaWxlIHdoaWNoIGFwcGVhcnMgaW4gYSAuUCBmaWxlCisjIyBpcyBkZWxldGVkLCB0aGUgZGVwZW5kZW5jeSBjYXVzZXMgbWFrZSB0byBkaWUgKGJlY2F1c2UgdGhlcmUgaXMKKyMjIHR5cGljYWxseSBubyB3YXkgdG8gcmVidWlsZCB0aGUgaGVhZGVyKS4gIFdlIGF2b2lkIHRoaXMgYnkgYWRkaW5nCisjIyBkdW1teSBkZXBlbmRlbmNpZXMgZm9yIGVhY2ggaGVhZGVyIGZpbGUuICBUb28gYmFkIGdjYyBkb2Vzbid0IGRvCisjIyB0aGlzIGZvciB1cyBkaXJlY3RseS4KKyAgdHIgJyAnICcKKycgPCAiJHRtcGRlcGZpbGUiIHwKKyMjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIHB1dCBhIHNwYWNlIGJlZm9yZSB0aGUgYDonLiAgT24gdGhlIHRoZW9yeQorIyMgdGhhdCB0aGUgc3BhY2UgbWVhbnMgc29tZXRoaW5nLCB3ZSBhZGQgYSBzcGFjZSB0byB0aGUgb3V0cHV0IGFzCisjIyB3ZWxsLgorIyMgU29tZSB2ZXJzaW9ucyBvZiB0aGUgSFBVWCAxMC4yMCBzZWQgY2FuJ3QgcHJvY2VzcyB0aGlzIGludm9jYXRpb24KKyMjIGNvcnJlY3RseS4gIEJyZWFraW5nIGl0IGludG8gdHdvIHNlZCBpbnZvY2F0aW9ucyBpcyBhIHdvcmthcm91bmQuCisgICAgc2VkIC1lICdzL15cXCQvLycgLWUgJy9eJC9kJyAtZSAnLzokL2QnIHwgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHApCisgICMgVGhpcyBjYXNlIGV4aXN0cyBvbmx5IHRvIGxldCBkZXBlbmQubTQgZG8gaXRzIHdvcmsuICBJdCB3b3JrcyBieQorICAjIGxvb2tpbmcgYXQgdGhlIHRleHQgb2YgdGhpcyBzY3JpcHQuICBUaGlzIGNhc2Ugd2lsbCBuZXZlciBiZSBydW4sCisgICMgc2luY2UgaXQgaXMgY2hlY2tlZCBmb3IgYWJvdmUuCisgIGV4aXQgMQorICA7OworCitzZ2kpCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgICIkQCIgIi1XcCwtTUR1cGRhdGUsJHRtcGRlcGZpbGUiCisgIGVsc2UKKyAgICAiJEAiIC1NRHVwZGF0ZSAiJHRtcGRlcGZpbGUiCisgIGZpCisgIHN0YXQ9JD8KKyAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgIGVsc2UKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUiCisgICAgZXhpdCAkc3RhdAorICBmaQorICBybSAtZiAiJGRlcGZpbGUiCisKKyAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuICAjIHllcywgdGhlIHNvdXJjZWZpbGUgZGVwZW5kIG9uIG90aGVyIGZpbGVzCisgICAgZWNobyAiJG9iamVjdCA6IFxcIiA+ICIkZGVwZmlsZSIKKworICAgICMgQ2xpcCBvZmYgdGhlIGluaXRpYWwgZWxlbWVudCAodGhlIGRlcGVuZGVudCkuICBEb24ndCB0cnkgdG8gYmUKKyAgICAjIGNsZXZlciBhbmQgcmVwbGFjZSB0aGlzIHdpdGggc2VkIGNvZGUsIGFzIElSSVggc2VkIHdvbid0IGhhbmRsZQorICAgICMgbGluZXMgd2l0aCBtb3JlIHRoYW4gYSBmaXhlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoNDA5NiBpbgorICAgICMgSVJJWCA2LjIgc2VkLCA4MTkyIGluIElSSVggNi41KS4gIFdlIGFsc28gcmVtb3ZlIGNvbW1lbnQgbGluZXM7CisgICAgIyB0aGUgSVJJWCBjYyBhZGRzIGNvbW1lbnRzIGxpa2UgYCM6ZmVjJyB0byB0aGUgZW5kIG9mIHRoZQorICAgICMgZGVwZW5kZW5jeSBsaW5lLgorICAgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiBcCisgICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIHwgXAorICAgIHRyICcKKycgJyAnID4+ICIkZGVwZmlsZSIKKyAgICBlY2hvID4+ICIkZGVwZmlsZSIKKworICAgICMgVGhlIHNlY29uZCBwYXNzIGdlbmVyYXRlcyBhIGR1bW15IGVudHJ5IGZvciBlYWNoIGhlYWRlciBmaWxlLgorICAgIHRyICcgJyAnCisnIDwgIiR0bXBkZXBmaWxlIiBcCisgICB8IHNlZCAtZSAncy9eLipcLm86Ly8nIC1lICdzLyMuKiQvLycgLWUgJy9eJC8gZCcgLWUgJ3MvJC86LycgXAorICAgPj4gIiRkZXBmaWxlIgorICBlbHNlCisgICAgIyBUaGUgc291cmNlZmlsZSBkb2VzIG5vdCBjb250YWluIGFueSBkZXBlbmRlbmNpZXMsIHNvIGp1c3QKKyAgICAjIHN0b3JlIGEgZHVtbXkgY29tbWVudCBsaW5lLCB0byBhdm9pZCBlcnJvcnMgd2l0aCB0aGUgTWFrZWZpbGUKKyAgICAjICJpbmNsdWRlIGJhc2VuYW1lLlBsbyIgc2NoZW1lLgorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworYWl4KQorICAjIFRoZSBDIGZvciBBSVggQ29tcGlsZXIgdXNlcyAtTSBhbmQgb3V0cHV0cyB0aGUgZGVwZW5kZW5jaWVzCisgICMgaW4gYSAudSBmaWxlLiAgSW4gb2xkZXIgdmVyc2lvbnMsIHRoaXMgZmlsZSBhbHdheXMgbGl2ZXMgaW4gdGhlCisgICMgY3VycmVudCBkaXJlY3RvcnkuICBBbHNvLCB0aGUgQUlYIGNvbXBpbGVyIHB1dHMgYCRvYmplY3Q6JyBhdCB0aGUKKyAgIyBzdGFydCBvZiBlYWNoIGxpbmU7ICRvYmplY3QgZG9lc24ndCBoYXZlIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KKyAgIyBWZXJzaW9uIDYgdXNlcyB0aGUgZGlyZWN0b3J5IGluIGJvdGggY2FzZXMuCisgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgIHRlc3QgIngkZGlyIiA9ICJ4JG9iamVjdCIgJiYgZGlyPQorICBiYXNlPWBlY2hvICIkb2JqZWN0IiB8IHNlZCAtZSAnc3xeLiovfHwnIC1lICdzL1wubyQvLycgLWUgJ3MvXC5sbyQvLydgCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGJhc2UudQorICAgIHRtcGRlcGZpbGUzPSRkaXIubGlicy8kYmFzZS51CisgICAgIiRAIiAtV2MsLU0KKyAgZWxzZQorICAgIHRtcGRlcGZpbGUxPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTI9JGRpciRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMz0kZGlyJGJhc2UudQorICAgICIkQCIgLU0KKyAgZmkKKyAgc3RhdD0kPworCisgIGlmIHRlc3QgJHN0YXQgLWVxIDA7IHRoZW4gOgorICBlbHNlCisgICAgcm0gLWYgIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgICBleGl0ICRzdGF0CisgIGZpCisKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQorICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICAjIEVhY2ggbGluZSBpcyBvZiB0aGUgZm9ybSBgZm9vLm86IGRlcGVuZGVudC5oJy4KKyAgICAjIERvIHR3byBwYXNzZXMsIG9uZSB0byBqdXN0IGNoYW5nZSB0aGVzZSB0bworICAgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICMgVGhhdCdzIGEgdGFiIGFuZCBhIHNwYWNlIGluIHRoZSBbXS4KKyAgICBzZWQgLWUgJ3MsXi4qXC5bYS16XSo6WwkgXSosLCcgLWUgJ3MsJCw6LCcgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgZWxzZQorICAgICMgVGhlIHNvdXJjZWZpbGUgZG9lcyBub3QgY29udGFpbiBhbnkgZGVwZW5kZW5jaWVzLCBzbyBqdXN0CisgICAgIyBzdG9yZSBhIGR1bW15IGNvbW1lbnQgbGluZSwgdG8gYXZvaWQgZXJyb3JzIHdpdGggdGhlIE1ha2VmaWxlCisgICAgIyAiaW5jbHVkZSBiYXNlbmFtZS5QbG8iIHNjaGVtZS4KKyAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgorICBmaQorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK2ljYykKKyAgIyBJbnRlbCdzIEMgY29tcGlsZXIgdW5kZXJzdGFuZHMgYC1NRCAtTUYgZmlsZScuICBIb3dldmVyIG9uCisgICMgICAgaWNjIC1NRCAtTUYgZm9vLmQgLWMgLW8gc3ViL2Zvby5vIHN1Yi9mb28uYworICAjIElDQyA3LjAgd2lsbCBmaWxsIGZvby5kIHdpdGggc29tZXRoaW5nIGxpa2UKKyAgIyAgICBmb28ubzogc3ViL2Zvby5jCisgICMgICAgZm9vLm86IHN1Yi9mb28uaAorICAjIHdoaWNoIGlzIHdyb25nLiAgV2Ugd2FudDoKKyAgIyAgICBzdWIvZm9vLm86IHN1Yi9mb28uYworICAjICAgIHN1Yi9mb28ubzogc3ViL2Zvby5oCisgICMgICAgc3ViL2Zvby5jOgorICAjICAgIHN1Yi9mb28uaDoKKyAgIyBJQ0MgNy4xIHdpbGwgb3V0cHV0CisgICMgICAgZm9vLm86IHN1Yi9mb28uYyBzdWIvZm9vLmgKKyAgIyBhbmQgd2lsbCB3cmFwIGxvbmcgbGluZXMgdXNpbmcgXCA6CisgICMgICAgZm9vLm86IHN1Yi9mb28uYyAuLi4gXAorICAjICAgICBzdWIvZm9vLmggLi4uIFwKKyAgIyAgICAgLi4uCisKKyAgIiRAIiAtTUQgLU1GICIkdG1wZGVwZmlsZSIKKyAgc3RhdD0kPworICBpZiB0ZXN0ICRzdGF0IC1lcSAwOyB0aGVuIDoKKyAgZWxzZQorICAgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgICBleGl0ICRzdGF0CisgIGZpCisgIHJtIC1mICIkZGVwZmlsZSIKKyAgIyBFYWNoIGxpbmUgaXMgb2YgdGhlIGZvcm0gYGZvby5vOiBkZXBlbmRlbnQuaCcsCisgICMgb3IgYGZvby5vOiBkZXAxLmggZGVwMi5oIFwnLCBvciBgIGRlcDMuaCBkZXA0LmggXCcuCisgICMgRG8gdHdvIHBhc3Nlcywgb25lIHRvIGp1c3QgY2hhbmdlIHRoZXNlIHRvCisgICMgYCRvYmplY3Q6IGRlcGVuZGVudC5oJyBhbmQgb25lIHRvIHNpbXBseSBgZGVwZW5kZW50Lmg6Jy4KKyAgc2VkICJzLF5bXjpdKjosJG9iamVjdCA6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAjIFNvbWUgdmVyc2lvbnMgb2YgdGhlIEhQVVggMTAuMjAgc2VkIGNhbid0IHByb2Nlc3MgdGhpcyBpbnZvY2F0aW9uCisgICMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgc2VkICdzLF5bXjpdKjogXCguKlwpJCxcMSw7cy9eXFwkLy87L14kL2Q7LzokL2QnIDwgIiR0bXBkZXBmaWxlIiB8CisgICAgc2VkIC1lICdzLyQvIDovJyA+PiAiJGRlcGZpbGUiCisgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgOzsKKworaHAyKQorICAjIFRoZSAiaHAiIHN0YW56YSBhYm92ZSBkb2VzIG5vdCB3b3JrIHdpdGggYUNDIChDKyspIGFuZCBIUCdzIGlhNjQKKyAgIyBjb21waWxlcnMsIHdoaWNoIGhhdmUgaW50ZWdyYXRlZCBwcmVwcm9jZXNzb3JzLiAgVGhlIGNvcnJlY3Qgb3B0aW9uCisgICMgdG8gdXNlIHdpdGggdGhlc2UgaXMgK01ha2VkOyBpdCB3cml0ZXMgZGVwZW5kZW5jaWVzIHRvIGEgZmlsZSBuYW1lZAorICAjICdmb28uZCcsIHdoaWNoIGxhbmRzIG5leHQgdG8gdGhlIG9iamVjdCBmaWxlLCB3aGVyZXZlciB0aGF0CisgICMgaGFwcGVucyB0byBiZS4KKyAgIyBNdWNoIG9mIHRoaXMgaXMgc2ltaWxhciB0byB0aGUgdHJ1NjQgY2FzZTsgc2VlIGNvbW1lbnRzIHRoZXJlLgorICBkaXI9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfC9bXi9dKiR8L3wnYAorICB0ZXN0ICJ4JGRpciIgPSAieCRvYmplY3QiICYmIGRpcj0KKyAgYmFzZT1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLm8kLy8nIC1lICdzL1wubG8kLy8nYAorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UuZAorICAgIHRtcGRlcGZpbGUyPSRkaXIubGlicy8kYmFzZS5kCisgICAgIiRAIiAtV2MsK01ha2VkCisgIGVsc2UKKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UuZAorICAgIHRtcGRlcGZpbGUyPSRkaXIkYmFzZS5kCisgICAgIiRAIiArTWFrZWQKKyAgZmkKKyAgc3RhdD0kPworICBpZiB0ZXN0ICRzdGF0IC1lcSAwOyB0aGVuIDoKKyAgZWxzZQorICAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIgorICAgICBleGl0ICRzdGF0CisgIGZpCisKKyAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIKKyAgZG8KKyAgICB0ZXN0IC1mICIkdG1wZGVwZmlsZSIgJiYgYnJlYWsKKyAgZG9uZQorICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KKyAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgICAjIEFkZCBgZGVwZW5kZW50Lmg6JyBsaW5lcy4KKyAgICBzZWQgLW5lICcyLCR7CisJICAgICAgIHMvXiAqLy8KKwkgICAgICAgcy8gXFwqJC8vCisJICAgICAgIHMvJC86LworCSAgICAgICBwCisJICAgICB9JyAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgZWxzZQorICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCisgIGZpCisgIHJtIC1mICIkdG1wZGVwZmlsZSIgIiR0bXBkZXBmaWxlMiIKKyAgOzsKKwordHJ1NjQpCisgICAjIFRoZSBUcnU2NCBjb21waWxlciB1c2VzIC1NRCB0byBnZW5lcmF0ZSBkZXBlbmRlbmNpZXMgYXMgYSBzaWRlCisgICAjIGVmZmVjdC4gIGBjYyAtTUQgLW8gZm9vLm8gLi4uJyBwdXRzIHRoZSBkZXBlbmRlbmNpZXMgaW50byBgZm9vLm8uZCcuCisgICAjIEF0IGxlYXN0IG9uIEFscGhhL1JlZGhhdCA2LjEsIENvbXBhcSBDQ0MgVjYuMi01MDQgc2VlbXMgdG8gcHV0CisgICAjIGRlcGVuZGVuY2llcyBpbiBgZm9vLmQnIGluc3RlYWQsIHNvIHdlIGNoZWNrIGZvciB0aGF0IHRvby4KKyAgICMgU3ViZGlyZWN0b3JpZXMgYXJlIHJlc3BlY3RlZC4KKyAgIGRpcj1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8L1teL10qJHwvfCdgCisgICB0ZXN0ICJ4JGRpciIgPSAieCRvYmplY3QiICYmIGRpcj0KKyAgIGJhc2U9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5vJC8vJyAtZSAncy9cLmxvJC8vJ2AKKworICAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgICAjIFdpdGggVHJ1NjQgY2MsIHNoYXJlZCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQgdG8gbWFrZSBhCisgICAgICAjIHN0YXRpYyBsaWJyYXJ5LiAgVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBpbiBsaWJ0b29sIDEuNCBzZXJpZXMgdG8KKyAgICAgICMgaGFuZGxlIGJvdGggc2hhcmVkIGFuZCBzdGF0aWMgbGlicmFyaWVzIGluIGEgc2luZ2xlIGNvbXBpbGF0aW9uLgorICAgICAgIyBXaXRoIGxpYnRvb2wgMS40LCBkZXBlbmRlbmNpZXMgd2VyZSBvdXRwdXQgaW4gJGRpci5saWJzLyRiYXNlLmxvLmQuCisgICAgICAjCisgICAgICAjIFdpdGggbGlidG9vbCAxLjUgdGhpcyBleGNlcHRpb24gd2FzIHJlbW92ZWQsIGFuZCBsaWJ0b29sIG5vdworICAgICAgIyBnZW5lcmF0ZXMgMiBzZXBhcmF0ZSBvYmplY3RzIGZvciB0aGUgMiBsaWJyYXJpZXMuICBUaGVzZSB0d28KKyAgICAgICMgY29tcGlsYXRpb25zIG91dHB1dCBkZXBlbmRlbmNpZXMgaW4gJGRpci5saWJzLyRiYXNlLm8uZCBhbmQKKyAgICAgICMgaW4gJGRpciRiYXNlLm8uZC4gIFdlIGhhdmUgdG8gY2hlY2sgZm9yIGJvdGggZmlsZXMsIGJlY2F1c2UKKyAgICAgICMgb25lIG9mIHRoZSB0d28gY29tcGlsYXRpb25zIGNhbiBiZSBkaXNhYmxlZC4gIFdlIHNob3VsZCBwcmVmZXIKKyAgICAgICMgJGRpciRiYXNlLm8uZCBvdmVyICRkaXIubGlicy8kYmFzZS5vLmQgYmVjYXVzZSB0aGUgbGF0dGVyIGlzCisgICAgICAjIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB3aGVuIC5saWJzLyBpcyBkZWxldGVkLCB3aGlsZSBpZ25vcmluZworICAgICAgIyB0aGUgZm9ybWVyIHdvdWxkIGNhdXNlIGEgZGlzdGNsZWFuY2hlY2sgcGFuaWMuCisgICAgICB0bXBkZXBmaWxlMT0kZGlyLmxpYnMvJGJhc2UubG8uZCAgICMgbGlidG9vbCAxLjQKKyAgICAgIHRtcGRlcGZpbGUyPSRkaXIkYmFzZS5vLmQgICAgICAgICAgIyBsaWJ0b29sIDEuNQorICAgICAgdG1wZGVwZmlsZTM9JGRpci5saWJzLyRiYXNlLm8uZCAgICAjIGxpYnRvb2wgMS41CisgICAgICB0bXBkZXBmaWxlND0kZGlyLmxpYnMvJGJhc2UuZCAgICAgICMgQ29tcGFxIENDQyBWNi4yLTUwNAorICAgICAgIiRAIiAtV2MsLU1ECisgICBlbHNlCisgICAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2Uuby5kCisgICAgICB0bXBkZXBmaWxlMj0kZGlyJGJhc2UuZAorICAgICAgdG1wZGVwZmlsZTM9JGRpciRiYXNlLmQKKyAgICAgIHRtcGRlcGZpbGU0PSRkaXIkYmFzZS5kCisgICAgICAiJEAiIC1NRAorICAgZmkKKworICAgc3RhdD0kPworICAgaWYgdGVzdCAkc3RhdCAtZXEgMDsgdGhlbiA6CisgICBlbHNlCisgICAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIiAiJHRtcGRlcGZpbGUzIiAiJHRtcGRlcGZpbGU0IgorICAgICAgZXhpdCAkc3RhdAorICAgZmkKKworICAgZm9yIHRtcGRlcGZpbGUgaW4gIiR0bXBkZXBmaWxlMSIgIiR0bXBkZXBmaWxlMiIgIiR0bXBkZXBmaWxlMyIgIiR0bXBkZXBmaWxlNCIKKyAgIGRvCisgICAgIHRlc3QgLWYgIiR0bXBkZXBmaWxlIiAmJiBicmVhaworICAgZG9uZQorICAgaWYgdGVzdCAtZiAiJHRtcGRlcGZpbGUiOyB0aGVuCisgICAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICAgICAgIyBUaGF0J3MgYSB0YWIgYW5kIGEgc3BhY2UgaW4gdGhlIFtdLgorICAgICAgc2VkIC1lICdzLF4uKlwuW2Etel0qOlsJIF0qLCwnIC1lICdzLCQsOiwnIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgICBlbHNlCisgICAgICBlY2hvICIjZHVtbXkiID4gIiRkZXBmaWxlIgorICAgZmkKKyAgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgIDs7CisKKyNub3NpZGVlZmZlY3QpCisgICMgVGhpcyBjb21tZW50IGFib3ZlIGlzIHVzZWQgYnkgYXV0b21ha2UgdG8gdGVsbCBzaWRlLWVmZmVjdAorICAjIGRlcGVuZGVuY3kgdHJhY2tpbmcgbWVjaGFuaXNtcyBmcm9tIHNsb3dlciBvbmVzLgorCitkYXNobXN0ZG91dCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQsIHJlZ2FyZGxlc3Mgb2YgLW8uCisgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCisgICMgUmVtb3ZlIGAtbyAkb2JqZWN0Jy4KKyAgSUZTPSIgIgorICBmb3IgYXJnCisgIGRvCisgICAgY2FzZSAkYXJnIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgKikKKyAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgICAgc2hpZnQgIyAkYXJnCisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorCisgIHRlc3QgLXogIiRkYXNobWZsYWciICYmIGRhc2htZmxhZz0tTQorICAjIFJlcXVpcmUgYXQgbGVhc3QgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIHNlYXJjaGluZyBmb3IgYDonCisgICMgaW4gdGhlIHRhcmdldCBuYW1lLiAgVGhpcyBpcyB0byBjb3BlIHdpdGggRE9TLXN0eWxlIGZpbGVuYW1lczoKKyAgIyBhIGRlcGVuZGVuY3kgc3VjaCBhcyBgYzovZm9vL2JhcicgY291bGQgYmUgc2VlbiBhcyB0YXJnZXQgYGMnIG90aGVyd2lzZS4KKyAgIiRAIiAkZGFzaG1mbGFnIHwKKyAgICBzZWQgJ3M6XlsgIF0qW146IF1bXjpdW146XSpcOlsgICAgXSo6JyIkb2JqZWN0IidcOiA6JyA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4gIiRkZXBmaWxlIgorICB0ciAnICcgJworJyA8ICIkdG1wZGVwZmlsZSIgfCBcCisjIyBTb21lIHZlcnNpb25zIG9mIHRoZSBIUFVYIDEwLjIwIHNlZCBjYW4ndCBwcm9jZXNzIHRoaXMgaW52b2NhdGlvbgorIyMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgICBzZWQgLWUgJ3MvXlxcJC8vJyAtZSAnL14kL2QnIC1lICcvOiQvZCcgfCBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCitkYXNoWG1zdGRvdXQpCisgICMgVGhpcyBjYXNlIG9ubHkgZXhpc3RzIHRvIHNhdGlzZnkgZGVwZW5kLm00LiAgSXQgaXMgbmV2ZXIgYWN0dWFsbHkKKyAgIyBydW4sIGFzIHRoaXMgbW9kZSBpcyBzcGVjaWFsbHkgcmVjb2duaXplZCBpbiB0aGUgcHJlYW1ibGUuCisgIGV4aXQgMQorICA7OworCittYWtlZGVwZW5kKQorICAiJEAiIHx8IGV4aXQgJD8KKyAgIyBSZW1vdmUgYW55IExpYnRvb2wgY2FsbAorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbworICAgICAgc2hpZnQKKyAgICBkb25lCisgICAgc2hpZnQKKyAgZmkKKyAgIyBYIG1ha2VkZXBlbmQKKyAgc2hpZnQKKyAgY2xlYXJlZD1ubyBlYXQ9bm8KKyAgZm9yIGFyZworICBkbworICAgIGNhc2UgJGNsZWFyZWQgaW4KKyAgICBubykKKyAgICAgIHNldCAiIjsgc2hpZnQKKyAgICAgIGNsZWFyZWQ9eWVzIDs7CisgICAgZXNhYworICAgIGlmIHRlc3QgJGVhdCA9IHllczsgdGhlbgorICAgICAgZWF0PW5vCisgICAgICBjb250aW51ZQorICAgIGZpCisgICAgY2FzZSAiJGFyZyIgaW4KKyAgICAtRCp8LUkqKQorICAgICAgc2V0IGZub3JkICIkQCIgIiRhcmciOyBzaGlmdCA7OworICAgICMgU3RyaXAgYW55IG9wdGlvbiB0aGF0IG1ha2VkZXBlbmQgbWF5IG5vdCB1bmRlcnN0YW5kLiAgUmVtb3ZlCisgICAgIyB0aGUgb2JqZWN0IHRvbywgb3RoZXJ3aXNlIG1ha2VkZXBlbmQgd2lsbCBwYXJzZSBpdCBhcyBhIHNvdXJjZSBmaWxlLgorICAgIC1hcmNoKQorICAgICAgZWF0PXllcyA7OworICAgIC0qfCRvYmplY3QpCisgICAgICA7OworICAgICopCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CisgICAgZXNhYworICBkb25lCisgIG9ial9zdWZmaXg9YGVjaG8gIiRvYmplY3QiIHwgc2VkICdzL14uKlwuLy4vJ2AKKyAgdG91Y2ggIiR0bXBkZXBmaWxlIgorICAke01BS0VERVBFTkQtbWFrZWRlcGVuZH0gLW8iJG9ial9zdWZmaXgiIC1mIiR0bXBkZXBmaWxlIiAiJEAiCisgIHJtIC1mICIkZGVwZmlsZSIKKyAgY2F0IDwgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgc2VkICcxLDJkJyAiJHRtcGRlcGZpbGUiIHwgdHIgJyAnICcKKycgfCBcCisjIyBTb21lIHZlcnNpb25zIG9mIHRoZSBIUFVYIDEwLjIwIHNlZCBjYW4ndCBwcm9jZXNzIHRoaXMgaW52b2NhdGlvbgorIyMgY29ycmVjdGx5LiAgQnJlYWtpbmcgaXQgaW50byB0d28gc2VkIGludm9jYXRpb25zIGlzIGEgd29ya2Fyb3VuZC4KKyAgICBzZWQgLWUgJ3MvXlxcJC8vJyAtZSAnL14kL2QnIC1lICcvOiQvZCcgfCBzZWQgLWUgJ3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIiAiJHRtcGRlcGZpbGUiLmJhaworICA7OworCitjcHApCisgICMgSW1wb3J0YW50IG5vdGU6IGluIG9yZGVyIHRvIHN1cHBvcnQgdGhpcyBtb2RlLCBhIGNvbXBpbGVyICptdXN0KgorICAjIGFsd2F5cyB3cml0ZSB0aGUgcHJlcHJvY2Vzc2VkIGZpbGUgdG8gc3Rkb3V0LgorICAiJEAiIHx8IGV4aXQgJD8KKworICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgorICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB3aGlsZSB0ZXN0ICJYJDEiICE9ICdYLS1tb2RlPWNvbXBpbGUnOyBkbworICAgICAgc2hpZnQKKyAgICBkb25lCisgICAgc2hpZnQKKyAgZmkKKworICAjIFJlbW92ZSBgLW8gJG9iamVjdCcuCisgIElGUz0iICIKKyAgZm9yIGFyZworICBkbworICAgIGNhc2UgJGFyZyBpbgorICAgIC1vKQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgJG9iamVjdCkKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICopCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyIKKyAgICAgIHNoaWZ0ICMgZm5vcmQKKyAgICAgIHNoaWZ0ICMgJGFyZworICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAiJEAiIC1FIHwKKyAgICBzZWQgLW4gLWUgJy9eIyBbMC05XVswLTldKiAiXChbXiJdKlwpIi4qLyBzOjogXDEgXFw6cCcgXAorICAgICAgIC1lICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLiovIHM6OiBcMSBcXDpwJyB8CisgICAgc2VkICckIHM6IFxcJDo6JyA+ICIkdG1wZGVwZmlsZSIKKyAgcm0gLWYgIiRkZXBmaWxlIgorICBlY2hvICIkb2JqZWN0IDogXFwiID4gIiRkZXBmaWxlIgorICBjYXQgPCAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgc2VkIDwgIiR0bXBkZXBmaWxlIiAnL14kL2Q7cy9eIC8vO3MvIFxcJC8vO3MvJC8gOi8nID4+ICIkZGVwZmlsZSIKKyAgcm0gLWYgIiR0bXBkZXBmaWxlIgorICA7OworCittc3Zpc3VhbGNwcCkKKyAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCisgICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQuCisgICIkQCIgfHwgZXhpdCAkPworCisgICMgUmVtb3ZlIHRoZSBjYWxsIHRvIExpYnRvb2wuCisgIGlmIHRlc3QgIiRsaWJ0b29sIiA9IHllczsgdGhlbgorICAgIHdoaWxlIHRlc3QgIlgkMSIgIT0gJ1gtLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgICBzaGlmdAorICAgIGRvbmUKKyAgICBzaGlmdAorICBmaQorCisgIElGUz0iICIKKyAgZm9yIGFyZworICBkbworICAgIGNhc2UgIiRhcmciIGluCisgICAgLW8pCisgICAgICBzaGlmdAorICAgICAgOzsKKyAgICAkb2JqZWN0KQorICAgICAgc2hpZnQKKyAgICAgIDs7CisgICAgIi1HbSJ8Ii9HbSJ8Ii1HaSJ8Ii9HaSJ8Ii1aSSJ8Ii9aSSIpCisJc2V0IGZub3JkICIkQCIKKwlzaGlmdAorCXNoaWZ0CisJOzsKKyAgICAqKQorCXNldCBmbm9yZCAiJEAiICIkYXJnIgorCXNoaWZ0CisJc2hpZnQKKwk7OworICAgIGVzYWMKKyAgZG9uZQorICAiJEAiIC1FIDI+L2Rldi9udWxsIHwKKyAgc2VkIC1uICcvXiNsaW5lIFswLTldWzAtOV0qICJcKFteIl0qXCkiLyBzOjpcMTpwJyB8ICRjeWdwYXRoX3UgfCBzb3J0IC11ID4gIiR0bXBkZXBmaWxlIgorICBybSAtZiAiJGRlcGZpbGUiCisgIGVjaG8gIiRvYmplY3QgOiBcXCIgPiAiJGRlcGZpbGUiCisgIHNlZCA8ICIkdG1wZGVwZmlsZSIgLW4gLWUgJ3MlICVcXCAlZycgLWUgJy9eXCguKlwpJC8gczo6CVwxIFxcOnAnID4+ICIkZGVwZmlsZSIKKyAgZWNobyAiCSIgPj4gIiRkZXBmaWxlIgorICBzZWQgPCAiJHRtcGRlcGZpbGUiIC1uIC1lICdzJSAlXFwgJWcnIC1lICcvXlwoLipcKSQvIHM6OlwxXDo6cCcgPj4gIiRkZXBmaWxlIgorICBybSAtZiAiJHRtcGRlcGZpbGUiCisgIDs7CisKK21zdmNtc3lzKQorICAjIFRoaXMgY2FzZSBleGlzdHMgb25seSB0byBsZXQgZGVwZW5kLm00IGRvIGl0cyB3b3JrLiAgSXQgd29ya3MgYnkKKyAgIyBsb29raW5nIGF0IHRoZSB0ZXh0IG9mIHRoaXMgc2NyaXB0LiAgVGhpcyBjYXNlIHdpbGwgbmV2ZXIgYmUgcnVuLAorICAjIHNpbmNlIGl0IGlzIGNoZWNrZWQgZm9yIGFib3ZlLgorICBleGl0IDEKKyAgOzsKKworbm9uZSkKKyAgZXhlYyAiJEAiCisgIDs7CisKKyopCisgIGVjaG8gIlVua25vd24gZGVwbW9kZSAkZGVwbW9kZSIgMT4mMgorICBleGl0IDEKKyAgOzsKK2VzYWMKKworZXhpdCAwCisKKyMgTG9jYWwgVmFyaWFibGVzOgorIyBtb2RlOiBzaGVsbC1zY3JpcHQKKyMgc2gtaW5kZW50YXRpb246IDIKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZGVwbW9kLjggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZGVwbW9kLjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ1OGM5YQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBtb2QuOApAQCAtMCwwICsxLDEwNyBAQAorLlxcIiBhdXRvLWdlbmVyYXRlZCBieSBkb2Nib29rMm1hbi1zcGVjICRSZXZpc2lvbjogMS4yICQKKy5USCAiREVQTU9EIiAiOCIgIjIwMTAtMDMtMDEiICIiICIiCisuU0ggTkFNRQorZGVwbW9kIFwtIHByb2dyYW0gdG8gZ2VuZXJhdGUgbW9kdWxlcy5kZXAgYW5kIG1hcCBmaWxlcy4KKy5TSCBTWU5PUFNJUworLnNwCitcZkJkZXBtb2RcZlIgWyBcZkItYiBcZkliYXNlZGlyXGZCXGZSIF0gIFsgXGZCLWVcZlIgXSAgWyBcZkItRiBcZklTeXN0ZW0ubWFwXGZCXGZSIF0gIFsgXGZCLW5cZlIgXSAgWyBcZkItdlxmUiBdICBbIFxmQlxmSXZlcnNpb25cZkJcZlIgXSAgWyBcZkItQVxmUiBdIAorLnNwCitcZkJkZXBtb2RcZlIgWyBcZkItZVxmUiBdICBbIFxmQi1GXGZJU3lzdGVtLm1hcFxmQlxmUiBdICBbIFxmQi1uXGZSIF0gIFsgXGZCLXZcZlIgXSAgWyBcZkJcZkl2ZXJzaW9uXGZCXGZSIF0gIFsgXGZCXGZJZmlsZW5hbWVcZkJcZlJcZkkuLi5cZlIgXSAKKy5TSCAiREVTQ1JJUFRJT04iCisuUFAKK0xpbnV4IGtlcm5lbCBtb2R1bGVzIGNhbiBwcm92aWRlIHNlcnZpY2VzIChjYWxsZWQgInN5bWJvbHMiKSBmb3IKK290aGVyIG1vZHVsZXMgdG8gdXNlICh1c2luZyBvbmUgb2YgdGhlIEVYUE9SVF9TWU1CT0wgdmFyaWFudHMgaW4gdGhlCitjb2RlKS4gSWYgYSBzZWNvbmQgbW9kdWxlIHVzZXMgdGhpcyBzeW1ib2wsIHRoYXQgc2Vjb25kIG1vZHVsZSBjbGVhcmx5CitkZXBlbmRzIG9uIHRoZSBmaXJzdCBtb2R1bGUuIFRoZXNlIGRlcGVuZGVuY2llcyBjYW4gZ2V0IHF1aXRlIGNvbXBsZXguCisuUFAKK1xmQmRlcG1vZFxmUiBjcmVhdGVzIGEgbGlzdCBvZiBtb2R1bGUgZGVwZW5kZW5jaWVzCitieSByZWFkaW5nIGVhY2ggbW9kdWxlIHVuZGVyCitcZkkvbGliL21vZHVsZXMvXGZSXGZJdmVyc2lvblxmUiAKK2FuZCBkZXRlcm1pbmluZyB3aGF0IHN5bWJvbHMgaXQgZXhwb3J0cyBhbmQgd2hhdCBzeW1ib2xzIGl0CituZWVkcy4gQnkgZGVmYXVsdCwgdGhpcyBsaXN0IGlzIHdyaXR0ZW4gdG8KK1xmSW1vZHVsZXMuZGVwXGZSLCBhbmQgYSBiaW5hcnkgaGFzaGVkIHZlcnNpb24gbmFtZWQKK1xmSW1vZHVsZXMuZGVwLmJpblxmUiwgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiBJZgorZmlsZW5hbWVzIGFyZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLCBvbmx5IHRob3NlIG1vZHVsZXMgYXJlCitleGFtaW5lZCAod2hpY2ggaXMgcmFyZWx5IHVzZWZ1bCB1bmxlc3MgYWxsIG1vZHVsZXMgYXJlIGxpc3RlZCkuCitcZkJkZXBtb2RcZlIgYWxzbyBjcmVhdGVzIGEgbGlzdCBvZiBzeW1ib2xzIHByb3ZpZGVkCitieSBtb2R1bGVzIGluIHRoZSBmaWxlIG5hbWVkIFxmSW1vZHVsZXMuc3ltYm9sc1xmUgorYW5kIGl0cyBiaW5hcnkgaGFzaGVkIHZlcnNpb24sIFxmSW1vZHVsZXMuc3ltYm9scy5iaW5cZlJcJi4KKy5QUAorSWYgYSBcZkl2ZXJzaW9uXGZSIGlzIHByb3ZpZGVkLCB0aGVuIHRoYXQKK2tlcm5lbCB2ZXJzaW9uJ3MgbW9kdWxlIGRpcmVjdG9yeSBpcyB1c2VkIHJhdGhlciB0aGFuIHRoZQorY3VycmVudCBrZXJuZWwgdmVyc2lvbiAoYXMgcmV0dXJuZWQgYnkgXGZCdW5hbWUgLXJcZlIpLgorLlBQCisuUFAKK1xmQmRlcG1vZFxmUiB3aWxsIGFsc28gZ2VuZXJhdGUgdmFyaW91cyBsZWdhY3kgbWFwCitmaWxlcyBpbiB0aGUgb3V0cHV0IGRpcmVjdG9yeSBmb3IgdXNlIGJ5IHRoZSBvbGRlciBob3RwbHVnCitpbmZyYXN0cnVjdHVyZS4gVGhlc2UgbWFwIGZpbGVzIGFyZSBsYXJnZWx5IGRlcHJlY2F0ZWQuCisuU0ggIk9QVElPTlMiCisuVFAKK1xmQi1hIC0tYWxsXGZSCitQcm9iZSBhbGwgbW9kdWxlcy4gVGhpcyBvcHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmIG5vCitmaWxlIG5hbWVzIGFyZSBnaXZlbiBpbiB0aGUgY29tbWFuZC1saW5lLgorLlRQCitcZkItQSAtLXF1aWNrXGZSCitUaGlzIG9wdGlvbiBzY2FucyB0byBzZWUgaWYgYW55IG1vZHVsZXMgYXJlIG5ld2VyIHRoYW4gdGhlCitcZkltb2R1bGVzLmRlcFxmUiBmaWxlIGJlZm9yZSBhbnkgd29yayBpcyBkb25lOgoraWYgbm90LCBpdCBzaWxlbnRseSBleGl0cyByYXRoZXIgdGhhbiByZWdlbmVyYXRpbmcgdGhlIGZpbGVzLgorLlRQCitcZkItYiBcZkliYXNlZGlyXGZCIC0tYmFzZWRpciBcZkliYXNlZGlyXGZCXGZSCitJZiB5b3VyIG1vZHVsZXMgYXJlIG5vdCBjdXJyZW50bHkgaW4gdGhlIChub3JtYWwpCitkaXJlY3RvcnkKK1xmSS9saWIvbW9kdWxlcy9cZlJcZkl2ZXJzaW9uXGZSLAorYnV0IGluIGEgc3RhZ2luZyBhcmVhLCB5b3UgY2FuIHNwZWNpZnkgYQorXGZJYmFzZWRpclxmUiB3aGljaCBpcyBwcmVwZW5kZWQgdG8KK3RoZSBkaXJlY3RvcnkgbmFtZS4gVGhpcworXGZJYmFzZWRpclxmUiBpcyBzdHJpcHBlZCBmcm9tIHRoZQorcmVzdWx0aW5nIFxmSW1vZHVsZXMuZGVwXGZSIGZpbGUsIHNvIGl0CitpcyByZWFkeSB0byBiZSBtb3ZlZCBpbnRvIHRoZSBub3JtYWwgbG9jYXRpb24uIFVzZSB0aGlzIG9wdGlvbgoraWYgeW91IGFyZSBhIGRpc3RyaWJ1dGlvbiB2ZW5kb3Igd2hvIG5lZWRzIHRvIHByZS1nZW5lcmF0ZSB0aGUKK21ldGEtZGF0YSBmaWxlcyByYXRoZXIgdGhhbiBydW5uaW5nIGRlcG1vZCBhZ2FpbiBsYXRlci4KKy5UUAorXGZCLUMgLS1jb25maWcgXGZJZmlsZSBvciBkaXJlY3RvcnlcZkJcZlIKK1RoaXMgb3B0aW9uIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUgYXQKK1xmSS9ldGMvZGVwbW9kLmNvbmZcZlIgKG9yIHRoZSAKK1xmSS9ldGMvZGVwbW9kLmQvXGZSIGRpcmVjdG9yeSBpZiB0aGF0IGlzIG5vdCBmb3VuZCkuCisuVFAKK1xmQi1lIC0tZXJyc3ltc1xmUgorV2hlbiBjb21iaW5lZCB3aXRoIHRoZSBcZkItRlxmUiBvcHRpb24sIHRoaXMKK3JlcG9ydHMgYW55IHN5bWJvbHMgd2hpY2ggYSBtb2R1bGUgbmVlZHMgd2hpY2ggYXJlIG5vdAorc3VwcGxpZWQgYnkgb3RoZXIgbW9kdWxlcyBvciB0aGUga2VybmVsLiBOb3JtYWxseSwgYW55CitzeW1ib2xzIG5vdCBwcm92aWRlZCBieSBtb2R1bGVzIGFyZSBhc3N1bWVkIHRvIGJlCitwcm92aWRlZCBieSB0aGUga2VybmVsICh3aGljaCBzaG91bGQgYmUgdHJ1ZSBpbiBhCitwZXJmZWN0IHdvcmxkKSwgYnV0IHRoaXMgYXNzdW1wdGlvbiBjYW4gYnJlYWsgZXNwZW5jaWFsbHkKK3doZW4gYWRkaXRpb25hbGx5IHVwZGF0ZWQgdGhpcmQgcGFydHkgZHJpdmVycyBhcmUgbm90Citjb3JyZWN0bHkgaW5zdGFsbGVkIG9yIHdlcmUgYnVpbHQgaW5jb3JyZWN0bHkuCisuVFAKK1xmQi1GIC0tZmlsZXN5bXMgXGZJU3lzdGVtLm1hcFxmQlxmUgorU3VwcGxpZWQgd2l0aCB0aGUgXGZJU3lzdGVtLm1hcFxmUiBwcm9kdWNlZAord2hlbiB0aGUga2VybmVsIHdhcyBidWlsdCwgdGhpcyBhbGxvd3MgdGhlCitcZkItZVxmUiBvcHRpb24gdG8gcmVwb3J0IHVucmVzb2x2ZWQgc3ltYm9scy4KKy5UUAorXGZCLWggLS1oZWxwXGZSCitQcmludCB0aGUgaGVscCBtZXNzYWdlIGFuZCBleGl0LgorLlRQCitcZkItbiAtLWRyeS1ydW5cZlIKK1RoaXMgc2VuZHMgdGhlIHJlc3VsdGluZyBtb2R1bGVzLmRlcCBhbmQgdGhlIHZhcmlvdXMKK21hcCBmaWxlcyB0byBzdGFuZGFyZCBvdXRwdXQgcmF0aGVyIHRoYW4gd3JpdGluZyB0aGVtIGludG8KK3RoZSBtb2R1bGUgZGlyZWN0b3J5LgorLlRQCitcZkItdiAtLXZlcmJvc2VcZlIKK0luIHZlcmJvc2UgbW9kZSwgXGZCZGVwbW9kXGZSIHdpbGwgcHJpbnQgKHRvIHN0ZG91dCkKK2FsbCB0aGUgc3ltYm9scyBlYWNoIG1vZHVsZSBkZXBlbmRzIG9uIGFuZCB0aGUgbW9kdWxlJ3MgZmlsZSBuYW1lCit3aGljaCBwcm92aWRlcyB0aGF0IHN5bWJvbC4KKy5UUAorXGZCLVYgLS12ZXJzaW9uXGZSCitTaG93IHZlcnNpb24gb2YgcHJvZ3JhbSBhbmQgZXhpdC4gU2VlIGJlbG93IGZvciBjYXZlYXRzIHdoZW4KK3J1biBvbiBvbGRlciBrZXJuZWxzLgorLlNIICJDT1BZUklHSFQiCisuUFAKK1RoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwMiwgUnVzdHkgUnVzc2VsbCwKK0lCTSBDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorLlNIICJTRUUgQUxTTyIKKy5QUAorXGZCZGVwbW9kLmNvbmZcZlIoNSksCitcZkJkZXBtb2QuZFxmUig1KSwKK1xmQm1vZHByb2JlXGZSKDgpLAorXGZCbW9kdWxlcy5kZXBcZlIoNSkKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBtb2QuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBtb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTc0NzdmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RlcG1vZC5jCkBAIC0wLDAgKzEsMTQ4NyBAQAorLyogTmV3IHNpbXBsaWZpZWQgZGVwbW9kIHdpdGhvdXQgYmFja3dhcmRzIGNvbXBhdCBzdHVmZiBhbmQgbm90CisgICByZXF1aXJpbmcga3N5bXMuCisKKyAgIChDKSAyMDEwIEpvbiBNYXN0ZXJzIDxqY21Aam9ubWFzdGVycy5vcmc+LCBhbmQgb3RoZXJzLgorICAgKEMpIDIwMDIgUnVzdHkgUnVzc2VsbCBJQk0gQ29ycG9yYXRpb24KKyAqLworI2RlZmluZSBfR05VX1NPVVJDRSAvKiBhc3ByaW50ZiAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGVsZi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNkZWZpbmUgQVJSQVlfU0laRSh4KSAoc2l6ZW9mKHgpIC8gc2l6ZW9mKCh4KVswXSkpCisKKyNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSAiemxpYnN1cHBvcnQuaCIKKyNpbmNsdWRlICJkZXBtb2QuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAiaW5kZXguaCIKKyNpbmNsdWRlICJlbGZvcHMuaCIKKyNpbmNsdWRlICJ0YWJsZXMuaCIKKyNpbmNsdWRlICJjb25maWdfZmlsdGVyLmgiCisKKyNpbmNsdWRlICJ0ZXN0aW5nLmgiCisKKyNpZm5kZWYgTU9EVUxFX0RJUgorI2RlZmluZSBNT0RVTEVfRElSICIvbGliL21vZHVsZXMvIgorI2VuZGlmCisKKyNpZm5kZWYgTU9EVUxFX0JVSUxUSU5fS0VZCisjZGVmaW5lIE1PRFVMRV9CVUlMVElOX0tFWSAiYnVpbHQtaW4iCisjZW5kaWYKKworc3RydWN0IG1vZHVsZV9vdmVycmlkZXMKK3sKKwkvKiBOZXh0IG92ZXJyaWRlICovCisJc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKm5leHQ7CisKKwkvKiBvdmVycmlkZGVuIG1vZHVsZSAqLworCWNoYXIgKm1vZGZpbGU7Cit9OworCitzdHJ1Y3QgbW9kdWxlX3NlYXJjaAoreworCS8qIE5leHQgc2VhcmNoICovCisJc3RydWN0IG1vZHVsZV9zZWFyY2ggKm5leHQ7CisKKwkvKiBzZWFyY2ggcGF0aCAqLworCWNoYXIgKnNlYXJjaF9wYXRoOworCXNpemVfdCBsZW47Cit9OworCitzdGF0aWMgdW5zaWduZWQgaW50IHNraXBjaGFyczsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgbWFrZV9tYXBfZmlsZXMgPSAxOyAvKiBkZWZhdWx0IHRvIG9uICovCitzdGF0aWMgdW5zaWduZWQgaW50IGZvcmNlX21hcF9maWxlcyA9IDA7IC8qIGRlZmF1bHQgdG8gb24gKi8KKworI2RlZmluZSBTWU1CT0xfSEFTSF9TSVpFIDEwMjQKK3N0cnVjdCBzeW1ib2wKK3sKKwlzdHJ1Y3Qgc3ltYm9sICpuZXh0OworCXN0cnVjdCBtb2R1bGUgKm93bmVyOworCXVpbnQ2NF90IHZlcjsKKwljaGFyIG5hbWVbMF07Cit9OworCitzdGF0aWMgc3RydWN0IHN5bWJvbCAqc3ltYm9saGFzaFtTWU1CT0xfSEFTSF9TSVpFXTsKKworLyogVGhpcyBpcyBiYXNlZCBvbiB0aGUgaGFzaCBhZ29yaXRobSBmcm9tIGdkYm0sIHZpYSB0ZGIgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHRkYl9oYXNoKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJdW5zaWduZWQgdmFsdWU7CS8qIFVzZWQgdG8gY29tcHV0ZSB0aGUgaGFzaCB2YWx1ZS4gICovCisJdW5zaWduZWQgICBpOwkvKiBVc2VkIHRvIGN5Y2xlIHRocm91Z2ggcmFuZG9tIHZhbHVlcy4gKi8KKworCS8qIFNldCB0aGUgaW5pdGlhbCB2YWx1ZSBmcm9tIHRoZSBrZXkgc2l6ZS4gKi8KKwlmb3IgKHZhbHVlID0gMHgyMzhGMTNBRiAqIHN0cmxlbihuYW1lKSwgaT0wOyBuYW1lW2ldOyBpKyspCisJCXZhbHVlID0gKHZhbHVlICsgKCgodW5zaWduZWQgY2hhciAqKW5hbWUpW2ldIDw8IChpKjUgJSAyNCkpKTsKKworCXJldHVybiAoMTEwMzUxNTI0MyAqIHZhbHVlICsgMTIzNDUpOworfQorCit2b2lkIGFkZF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmVyLCBzdHJ1Y3QgbW9kdWxlICpvd25lcikKK3sKKwl1bnNpZ25lZCBpbnQgaGFzaDsKKwlzdHJ1Y3Qgc3ltYm9sICpuZXcgPSBOT0ZBSUwobWFsbG9jKHNpemVvZiAqbmV3ICsgc3RybGVuKG5hbWUpICsgMSkpOworCisJbmV3LT5vd25lciA9IG93bmVyOworCW5ldy0+dmVyID0gdmVyOworCXN0cmNweShuZXctPm5hbWUsIG5hbWUpOworCisJaGFzaCA9IHRkYl9oYXNoKG5hbWUpICUgU1lNQk9MX0hBU0hfU0laRTsKKwluZXctPm5leHQgPSBzeW1ib2xoYXNoW2hhc2hdOworCXN5bWJvbGhhc2hbaGFzaF0gPSBuZXc7Cit9CisKK3N0YXRpYyBpbnQgcHJpbnRfdW5rbm93biwgY2hlY2tfc3ltdmVyczsKKworc3RydWN0IG1vZHVsZSAqZmluZF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSwgdWludDY0X3QgdmVyLAorCQljb25zdCBjaGFyICptb2RuYW1lLCBpbnQgd2VhaykKK3sKKwlzdHJ1Y3Qgc3ltYm9sICpzOworCisJLyogRm9yIG91ciBwdXJwb3NlcywgLmZvbyBtYXRjaGVzIGZvby4gIFBQQzY0IG5lZWRzIHRoaXMuICovCisJaWYgKG5hbWVbMF0gPT0gJy4nKQorCQluYW1lKys7CisKKwlmb3IgKHMgPSBzeW1ib2xoYXNoW3RkYl9oYXNoKG5hbWUpICUgU1lNQk9MX0hBU0hfU0laRV07IHM7IHM9cy0+bmV4dCkgeworCQlpZiAoc3RyZXEocy0+bmFtZSwgbmFtZSkpCisJCQlicmVhazsKKwl9CisJaWYgKHMpIHsKKwkJaWYgKHZlciAmJiBzLT52ZXIgJiYgcy0+dmVyICE9IHZlciAmJiBwcmludF91bmtub3duICYmICF3ZWFrKQorCQkJd2FybigiJXMgZGlzYWdyZWVzIGFib3V0IHZlcnNpb24gb2Ygc3ltYm9sICVzXG4iLAorCQkJCQltb2RuYW1lLCBuYW1lKTsKKwkJcmV0dXJuIHMtPm93bmVyOworCX0KKworCWlmIChwcmludF91bmtub3duICYmICF3ZWFrKQorCQl3YXJuKCIlcyBuZWVkcyB1bmtub3duIHN5bWJvbCAlc1xuIiwgbW9kbmFtZSwgbmFtZSk7CisKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCBhZGRfZGVwKHN0cnVjdCBtb2R1bGUgKm1vZCwgc3RydWN0IG1vZHVsZSAqZGVwZW5kc19vbikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBtb2QtPm51bV9kZXBzOyBpKyspCisJCWlmIChtb2QtPmRlcHNbaV0gPT0gZGVwZW5kc19vbikKKwkJCXJldHVybjsKKworCW1vZC0+ZGVwcyA9IE5PRkFJTChyZWFsbG9jKG1vZC0+ZGVwcywgc2l6ZW9mKG1vZC0+ZGVwc1swXSkqKG1vZC0+bnVtX2RlcHMrMSkpKTsKKwltb2QtPmRlcHNbbW9kLT5udW1fZGVwcysrXSA9IGRlcGVuZHNfb247Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9mYWtlX3N5bXModm9pZCkKK3sKKwkvKiBfX3RoaXNfbW9kdWxlIGlzIG1hZ2ljIGluc2VydGVkIGJ5IGtlcm5lbCBsb2FkZXIuICovCisJYWRkX3N5bWJvbCgiX190aGlzX21vZHVsZSIsIDAsIE5VTEwpOworCS8qIE9uIFMzOTAsIHRoaXMgaXMgZmFrZWQgdXAgdG9vICovCisJYWRkX3N5bWJvbCgiX0dMT0JBTF9PRkZTRVRfVEFCTEVfIiwgMCwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGxvYWRfc3lzdGVtX21hcChjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlGSUxFICpzeXN0ZW1fbWFwOworCWNoYXIgbGluZVsxMDI0MF07CisJY29uc3QgY2hhciBrc3ltc3RyW10gPSAiX19rc3ltdGFiXyI7CisJY29uc3QgaW50IGtzeW1zdHJfbGVuID0gc3RybGVuKGtzeW1zdHIpOworCisJc3lzdGVtX21hcCA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmICghc3lzdGVtX21hcCkKKwkJZmF0YWwoIkNvdWxkIG5vdCBvcGVuICclcyc6ICVzXG4iLCBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKworCS8qIGVnLiBjMDI5NDIwMCBSIF9fa3N5bXRhYl9kZXZmc19hbGxvY19kZXZudW0gKi8KKwl3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLTEsIHN5c3RlbV9tYXApKSB7CisJCWNoYXIgKnB0cjsKKworCQkvKiBTbmlwIFxuICovCisJCXB0ciA9IHN0cmNocihsaW5lLCAnXG4nKTsKKwkJaWYgKHB0cikKKwkJCSpwdHIgPSAnXDAnOworCisJCXB0ciA9IHN0cmNocihsaW5lLCAnICcpOworCQlpZiAoIXB0ciB8fCAhKHB0ciA9IHN0cmNocihwdHIgKyAxLCAnICcpKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIENvdmVycyBncGwtb25seSBhbmQgbm9ybWFsIHN5bWJvbHMuICovCisJCWlmIChzdHJzdGFydHMocHRyKzEsIGtzeW1zdHIpKQorCQkJYWRkX3N5bWJvbChwdHIrMStrc3ltc3RyX2xlbiwgMCwgTlVMTCk7CisJfQorCisJZmNsb3NlKHN5c3RlbV9tYXApOworCWFkZF9mYWtlX3N5bXMoKTsKK30KKworc3RhdGljIHZvaWQgbG9hZF9tb2R1bGVfc3ltdmVycyhjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlGSUxFICptb2R1bGVfc3ltdmVyczsKKwljaGFyIGxpbmVbMTAyNDBdOworCisJbW9kdWxlX3N5bXZlcnMgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKKwlpZiAoIW1vZHVsZV9zeW12ZXJzKQorCQlmYXRhbCgiQ291bGQgbm90IG9wZW4gJyVzJzogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCisJLyogZWcuICIweGIzNTIxNzdlXHRmaW5kX2ZpcnN0X2JpdFx0dm1saW51eFx0RVhQT1JUX1NZTUJPTCIgKi8KKwl3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLTEsIG1vZHVsZV9zeW12ZXJzKSkgeworCQljb25zdCBjaGFyICp2ZXIsICpzeW0sICp3aGVyZTsKKworCQl2ZXIgPSBzdHJ0b2sobGluZSwgIiBcdCIpOworCQlzeW0gPSBzdHJ0b2soTlVMTCwgIiBcdCIpOworCQl3aGVyZSA9IHN0cnRvayhOVUxMLCAiIFx0Iik7CisJCWlmICghdmVyIHx8ICFzeW0gfHwgIXdoZXJlKQorCQkJY29udGludWU7CisKKwkJaWYgKHN0cmVxKHdoZXJlLCAidm1saW51eCIpKQorCQkJYWRkX3N5bWJvbChzeW0sIHN0cnRvdWxsKHZlciwgTlVMTCwgMTYpLCBOVUxMKTsKKwl9CisKKwlmY2xvc2UobW9kdWxlX3N5bXZlcnMpOworCWFkZF9mYWtlX3N5bXMoKTsKK30KKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geyB7ICJhbGwiLCAwLCBOVUxMLCAnYScgfSwKKwkJCQkgICB7ICJxdWljayIsIDAsIE5VTEwsICdBJyB9LAorCQkJCSAgIHsgImJhc2VkaXIiLCAxLCBOVUxMLCAnYicgfSwKKwkJCQkgICB7ICJjb25maWciLCAxLCBOVUxMLCAnQycgfSwKKwkJCQkgICB7ICJzeW12ZXJzIiwgMSwgTlVMTCwgJ0UnIH0sCisJCQkJICAgeyAiZmlsZXN5bXMiLCAxLCBOVUxMLCAnRicgfSwKKwkJCQkgICB7ICJlcnJzeW1zIiwgMCwgTlVMTCwgJ2UnIH0sCisJCQkJICAgeyAidW5yZXNvbHZlZC1lcnJvciIsIDAsIE5VTEwsICd1JyB9LAorCQkJCSAgIHsgInF1aWV0IiwgMCwgTlVMTCwgJ3EnIH0sCisJCQkJICAgeyAicm9vdCIsIDAsIE5VTEwsICdyJyB9LAorCQkJCSAgIHsgInZlcmJvc2UiLCAwLCBOVUxMLCAndicgfSwKKwkJCQkgICB7ICJzaG93IiwgMCwgTlVMTCwgJ24nIH0sCisJCQkJICAgeyAiZHJ5LXJ1biIsIDAsIE5VTEwsICduJyB9LAorCQkJCSAgIHsgImhlbHAiLCAwLCBOVUxMLCAnaCcgfSwKKwkJCQkgICB7ICJ2ZXJzaW9uIiwgMCwgTlVMTCwgJ1YnIH0sCisJCQkJICAgeyAid2FybiIsIDAsIE5VTEwsICd3JyB9LAorCQkJCSAgIHsgIm1hcCIsIDAsIE5VTEwsICdtJyB9LAorCQkJCSAgIHsgTlVMTCwgMCwgTlVMTCwgMCB9IH07CisKKy8qIFZlcnNpb24gbnVtYmVyIG9yIG1vZHVsZSBuYW1lPyAgRG9uJ3QgYXNzdW1lIGV4dGVuc2lvbi4gKi8KK3N0YXRpYyBpbnQgaXNfdmVyc2lvbl9udW1iZXIoY29uc3QgY2hhciAqdmVyc2lvbikKK3sKKwl1bnNpZ25lZCBpbnQgZHVtbXk7CisKKwlyZXR1cm4gKHNzY2FuZih2ZXJzaW9uLCAiJXUuJXUuJXUiLCAmZHVtbXksICZkdW1teSwgJmR1bW15KSA9PSAzKTsKK30KKworc3RhdGljIGludCBvbGRfbW9kdWxlX3ZlcnNpb24oY29uc3QgY2hhciAqdmVyc2lvbikKK3sKKwkvKiBFeHBlY3QgdGhyZWUgcGFydCB2ZXJzaW9uLiAqLworCXVuc2lnbmVkIGludCBtYWpvciwgc3ViLCBtaW5vcjsKKworCXNzY2FuZih2ZXJzaW9uLCAiJXUuJXUuJXUiLCAmbWFqb3IsICZzdWIsICZtaW5vcik7CisKKwlpZiAobWFqb3IgPiAyKSByZXR1cm4gMDsKKwlpZiAobWFqb3IgPCAyKSByZXR1cm4gMTsKKworCS8qIDIueCAqLworCWlmIChzdWIgPiA1KSByZXR1cm4gMDsKKwlpZiAoc3ViIDwgNSkgcmV0dXJuIDE7CisKKwkvKiAyLjUueCAqLworCWlmIChtaW5vciA+PSA0OCkgcmV0dXJuIDA7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKm5hbWUpCit7CisJZnByaW50ZihzdGRlcnIsCisJIiVzICIgVkVSU0lPTiAiIC0tIHBhcnQgb2YgIiBQQUNLQUdFICJcbiIKKwkiJXMgLVthQV0gWy1uIC1lIC12IC1xIC1WIC1yIC11IC13IC1tXVxuIgorCSIgICAgICBbLWIgYmFzZWRpcmVjdG9yeV0gW2ZvcmNlZF92ZXJzaW9uXVxuIgorCSJkZXBtb2QgWy1uIC1lIC12IC1xIC1yIC11IC13XSBbLUYga2VybmVsc3ltc10gbW9kdWxlMS5rbyBtb2R1bGUyLmtvIC4uLlxuIgorCSJJZiBubyBhcmd1bWVudHMgKGV4Y2VwdCBvcHRpb25zKSBhcmUgZ2l2ZW4sIFwiZGVwbW9kIC1hXCIgaXMgYXNzdW1lZFxuIgorCSJcbiIKKwkiZGVwbW9kIHdpbGwgb3V0cHV0IGEgZGVwZW5kYW5jeSBsaXN0IHN1aXRhYmxlIGZvciB0aGUgbW9kcHJvYmUgdXRpbGl0eS5cbiIKKwkiXG4iCisJIlxuIgorCSJPcHRpb25zOlxuIgorCSJcdC1hLCAtLWFsbCAgICAgICAgICAgIFByb2JlIGFsbCBtb2R1bGVzXG4iCisJIlx0LUEsIC0tcXVpY2sgICAgICAgICAgT25seSBkb2VzIHRoZSB3b3JrIGlmIHRoZXJlJ3MgYSBuZXcgbW9kdWxlXG4iCisJIlx0LWUsIC0tZXJyc3ltcyAgICAgICAgUmVwb3J0IG5vdCBzdXBwbGllZCBzeW1ib2xzXG4iCisJIlx0LW0sIC0tbWFwICAgICAgICAgICAgQ3JlYXRlIHRoZSBsZWdhY3kgbWFwIGZpbGVzXG4iCisJIlx0LW4sIC0tc2hvdyAgICAgICAgICAgV3JpdGUgdGhlIGRlcGVuZGVuY3kgZmlsZSBvbiBzdGRvdXQgb25seVxuIgorCSJcdC1WLCAtLXZlcnNpb24gICAgICAgIFByaW50IHRoZSByZWxlYXNlIHZlcnNpb25cbiIKKwkiXHQtdiwgLS12ZXJib3NlICAgICAgICBFbmFibGUgdmVyYm9zZSBtb2RlXG4iCisJIlx0LXcsIC0td2FybgkJV2FybiBvbiBkdXBsaWNhdGVzXG4iCisJIlx0LWgsIC0taGVscCAgICAgICAgICAgUHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG4iCisJIlxuIgorCSJUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIHVzZWZ1bCBmb3IgcGVvcGxlIG1hbmFnaW5nIGRpc3RyaWJ1dGlvbnM6XG4iCisJIlx0LWIgYmFzZWRpcmVjdG9yeVxuIgorCSJcdCAgICAtLWJhc2VkaXIgYmFzZWRpcmVjdG9yeSAgICBVc2UgYW4gaW1hZ2Ugb2YgYSBtb2R1bGUgdHJlZS5cbiIKKwkiXHQtRiBrZXJuZWxzeW1zXG4iCisJIlx0ICAgIC0tZmlsZXN5bXMga2VybmVsc3ltcyAgICAgIFVzZSB0aGUgZmlsZSBpbnN0ZWFkIG9mIHRoZVxuIgorCSJcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50IGtlcm5lbCBzeW1ib2xzLlxuIgorCSJcdC1FIE1vZHVsZS5zeW12ZXJzXG4iCisJIlx0ICAgIC0tc3ltdmVycyBNb2R1bGUuc3ltdmVycyAgIFVzZSBNb2R1bGUuc3ltdmVycyBmaWxlIHRvIGNoZWNrXG4iCisJIlx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbCB2ZXJzaW9ucy5cbiIsCisJImRlcG1vZCIsICJkZXBtb2QiKTsKK30KKworc3RhdGljIGludCBlbmRzX2luKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmV4dCkKK3sKKwl1bnNpZ25lZCBpbnQgbmFtZWxlbiwgZXh0bGVuOworCisJLyogR3JhYiBsZW5ndGhzICovCisJbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKwlleHRsZW4gPSBzdHJsZW4oZXh0KTsKKworCWlmIChuYW1lbGVuIDwgZXh0bGVuKSByZXR1cm4gMDsKKworCWlmIChzdHJlcShuYW1lICsgbmFtZWxlbiAtIGV4dGxlbiwgZXh0KSkKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlICpncmFiX21vZHVsZShjb25zdCBjaGFyICpkaXJuYW1lLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICpuZXc7CisKKwluZXcgPSBOT0ZBSUwobWFsbG9jKHNpemVvZigqbmV3KQorCQkJICAgICsgc3RybGVuKGRpcm5hbWU/OiIiKSArIDEgKyBzdHJsZW4oZmlsZW5hbWUpICsgMSkpOworCWlmIChkaXJuYW1lKQorCQlzcHJpbnRmKG5ldy0+cGF0aG5hbWUsICIlcy8lcyIsIGRpcm5hbWUsIGZpbGVuYW1lKTsKKwllbHNlCisJCXN0cmNweShuZXctPnBhdGhuYW1lLCBmaWxlbmFtZSk7CisJbmV3LT5iYXNlbmFtZSA9IG15X2Jhc2VuYW1lKG5ldy0+cGF0aG5hbWUpOworCisJSU5JVF9MSVNUX0hFQUQoJm5ldy0+ZGVwX2xpc3QpOworCW5ldy0+b3JkZXIgPSBJTkRFWF9QUklPUklUWV9NSU47CisKKwluZXctPmZpbGUgPSBncmFiX2VsZl9maWxlKG5ldy0+cGF0aG5hbWUpOworCWlmICghbmV3LT5maWxlKSB7CisJCXdhcm4oIkNhbid0IHJlYWQgbW9kdWxlICVzOiAlc1xuIiwKKwkJICAgICBuZXctPnBhdGhuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlmcmVlKG5ldyk7CisJCXJldHVybiBOVUxMOworCX0KKwlyZXR1cm4gbmV3OworfQorCitzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlCit7CisJc3RydWN0IG1vZHVsZV90cmF2ZXJzZSAqcHJldjsKKwlzdHJ1Y3QgbW9kdWxlICptb2Q7Cit9OworCitzdGF0aWMgaW50IGluX2xvb3Aoc3RydWN0IG1vZHVsZSAqbW9kLCBjb25zdCBzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlICp0cmF2ZXJzZSkKK3sKKwljb25zdCBzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlICppOworCisJZm9yIChpID0gdHJhdmVyc2U7IGk7IGkgPSBpLT5wcmV2KSB7CisJCWlmIChpLT5tb2QgPT0gbW9kKQorCQkJcmV0dXJuIDE7CisJfQorCXJldHVybiAwOworfQorCisvKiBBc3N1bWUgd2UgYXJlIGRvaW5nIGFsbCB0aGUgbW9kdWxlcywgc28gb25seSByZXBvcnQgZWFjaCBsb29wIG9uY2UuICovCitzdGF0aWMgdm9pZCByZXBvcnRfbG9vcChjb25zdCBzdHJ1Y3QgbW9kdWxlICptb2QsCisJCQljb25zdCBzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlICp0cmF2ZXJzZSkKK3sKKwljb25zdCBzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlICppOworCisJLyogQ2hlY2sgdGhhdCBzdGFydCBpcyBsZWFzdCBhbHBoYWJldGljYWxseS4gIGVnLiAgYSBkZXBlbmRzCisJICAgb24gYiBkZXBlbmRzIG9uIGEgd2lsbCBnZXQgcmVwb3J0ZWQgZm9yIGEsIG5vdCBiLiAgKi8KKwlmb3IgKGkgPSB0cmF2ZXJzZS0+cHJldjsgaS0+cHJldjsgaSA9IGktPnByZXYpIHsKKwkJaWYgKHN0cmNtcChtb2QtPnBhdGhuYW1lLCBpLT5tb2QtPnBhdGhuYW1lKSA+IDApCisJCQlyZXR1cm47CisJfQorCisJLyogSXMgc3RhcnQgaW4gdGhlIGxvb3A/ICBJZiBub3QsIGRvbid0IHJlcG9ydCBub3cuIGVnLiBhCisJICAgZGVwZW5kcyBvbiBiIHdoaWNoIGRlcGVuZHMgb24gYyB3aGljaCBkZXBlbmRzIG9uIGIuICBEb24ndAorCSAgIHJlcG9ydCB3aGVuIGdlbmVyYXRpbmcgZGVwZW5kcyBmb3IgYS4gKi8KKwlpZiAobW9kICE9IGktPm1vZCkKKwkJcmV0dXJuOworCisJd2FybigiTG9vcCBkZXRlY3RlZDogJXMgIiwgbW9kLT5wYXRobmFtZSk7CisJZm9yIChpID0gdHJhdmVyc2UtPnByZXY7IGktPnByZXY7IGkgPSBpLT5wcmV2KQorCQlmcHJpbnRmKHN0ZGVyciwgIm5lZWRzICVzICIsIGktPm1vZC0+YmFzZW5hbWUpOworCWZwcmludGYoc3RkZXJyLCAid2hpY2ggbmVlZHMgJXMgYWdhaW4hXG4iLCBpLT5tb2QtPmJhc2VuYW1lKTsKK30KKworLyogVGhpcyBpcyBkYW1uIHNsb3csIGJ1dCBsb29wcyBhY3R1YWxseSBoYXBwZW4sIGFuZCB3ZSBkb24ndCB3YW50IHRvCisgICBqdXN0IGV4aXQoKSBhbmQgbGVhdmUgdGhlIHVzZXIgd2l0aG91dCBhbnkgbW9kdWxlcy4gKi8KK3N0YXRpYyBpbnQgaGFzX2RlcF9sb29wKHN0cnVjdCBtb2R1bGUgKm1vZHVsZSwgc3RydWN0IG1vZHVsZV90cmF2ZXJzZSAqcHJldikKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwlzdHJ1Y3QgbW9kdWxlX3RyYXZlcnNlIHRyYXZlcnNlID0geyAucHJldiA9IHByZXYsIC5tb2QgPSBtb2R1bGUgfTsKKworCWlmIChpbl9sb29wKG1vZHVsZSwgcHJldikpIHsKKwkJcmVwb3J0X2xvb3AobW9kdWxlLCAmdHJhdmVyc2UpOworCQlyZXR1cm4gMTsKKwl9CisKKwlmb3IgKGkgPSAwOyBpIDwgbW9kdWxlLT5udW1fZGVwczsgaSsrKQorCQlpZiAoaGFzX2RlcF9sb29wKG1vZHVsZS0+ZGVwc1tpXSwgJnRyYXZlcnNlKSkKKwkJCXJldHVybiAxOworCXJldHVybiAwOworfQorCisvKiBVbmlxdWlmaWVzIGFuZCBvcmRlcnMgYSBkZXBlbmRlbmN5IGxpc3QuICovCitzdGF0aWMgdm9pZCBvcmRlcl9kZXBfbGlzdChzdHJ1Y3QgbW9kdWxlICpzdGFydCwgc3RydWN0IG1vZHVsZSAqbW9kKQoreworCXVuc2lnbmVkIGludCBpOworCisJZm9yIChpID0gMDsgaSA8IG1vZC0+bnVtX2RlcHM7IGkrKykgeworCQkvKiBJZiBpdCB3YXMgcHJldmlvdXNseSBkZXBlbmRlZCBvbiwgbW92ZSBpdCB0byB0aGUKKwkJICAgdGFpbC4gIGllLiBpZiBhIG5lZWRzIGIgYW5kIGMsIGFuZCBjIG5lZWRzIGIsIHdlCisJCSAgIG11c3Qgb3JkZXIgYiBhZnRlciBjLiAqLworCQlsaXN0X2RlbCgmbW9kLT5kZXBzW2ldLT5kZXBfbGlzdCk7CisJCWxpc3RfYWRkX3RhaWwoJm1vZC0+ZGVwc1tpXS0+ZGVwX2xpc3QsICZzdGFydC0+ZGVwX2xpc3QpOworCQlvcmRlcl9kZXBfbGlzdChzdGFydCwgbW9kLT5kZXBzW2ldKTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlICpkZWxldGVkID0gTlVMTDsKKworc3RhdGljIHZvaWQgZGVsX21vZHVsZShzdHJ1Y3QgbW9kdWxlICoqbW9kdWxlcywgc3RydWN0IG1vZHVsZSAqZGVsbWUpCit7CisJc3RydWN0IG1vZHVsZSAqKmk7CisKKwkvKiBGaW5kIHBvaW50ZXIgdG8gaXQuICovIAorCWlmIChtb2R1bGVzKSB7CisJCWZvciAoaSA9IG1vZHVsZXM7ICppICE9IGRlbG1lOyBpID0gJigqaSktPm5leHQpOworCQkKKwkJKmkgPSBkZWxtZS0+bmV4dDsKKwl9CisJCisJLyogU2F2ZSBvbiBhIGxpc3QgdG8gcXVpZXQgdmFsZ3JpbmQuCisJICAgQ2FuJ3QgZnJlZSAtIG90aGVyIG1vZHVsZXMgbWF5IGRlcGVuZCBvbiB0aGVtICovCisJZGVsbWUtPm5leHQgPSBkZWxldGVkOworCWRlbGV0ZWQgPSBkZWxtZTsKK30KKworLyogY29udmVydCB0byByZWxhdGl2ZSBwYXRoIGlmIHBvc3NpYmxlICovCitzdGF0aWMgY29uc3QgY2hhciAqY29tcHJlc3NfcGF0aChjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpiYXNlZGlyKQoreworCWludCBsZW4gPSBzdHJsZW4oYmFzZWRpcik7CisKKwlpZiAoc3RybmNtcChwYXRoLCBiYXNlZGlyLCBsZW4pID09IDApCisJCXBhdGggKz0gbGVuICsgMTsKKwlyZXR1cm4gcGF0aDsKK30KKworc3RhdGljIGludCBvdXRwdXRfZGVwcyhzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLAorCQkJRklMRSAqb3V0LCBjaGFyICpkaXJuYW1lKQoreworCXN0cnVjdCBtb2R1bGUgKmk7CisKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQlzdHJ1Y3QgbGlzdF9oZWFkICpqLCAqdG1wOworCQlvcmRlcl9kZXBfbGlzdChpLCBpKTsKKworCQlmcHJpbnRmKG91dCwgIiVzOiIsIGNvbXByZXNzX3BhdGgoaS0+cGF0aG5hbWUsIGRpcm5hbWUpKTsKKwkJbGlzdF9mb3JfZWFjaF9zYWZlKGosIHRtcCwgJmktPmRlcF9saXN0KSB7CisJCQlzdHJ1Y3QgbW9kdWxlICpkZXAKKwkJCQk9IGxpc3RfZW50cnkoaiwgc3RydWN0IG1vZHVsZSwgZGVwX2xpc3QpOworCQkJZnByaW50ZihvdXQsICIgJXMiLAorCQkJICAgICAgICBjb21wcmVzc19wYXRoKGRlcC0+cGF0aG5hbWUsIGRpcm5hbWUpKTsKKwkJCWxpc3RfZGVsX2luaXQoaik7CisJCX0KKwkJZnByaW50ZihvdXQsICJcbiIpOworCX0KKwlyZXR1cm4gMTsKK30KKworLyogd2FybiB3aGVuZXZlciBkdXBsaWNhdGUgbW9kdWxlIGFsaWFzZXMsIGRlcHMsIG9yIHN5bWJvbHMgYXJlIGZvdW5kLiAqLworaW50IHdhcm5fZHVwcyA9IDA7CisKK3N0YXRpYyBpbnQgb3V0cHV0X2RlcHNfYmluKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsCisJCQlGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpCit7CisJc3RydWN0IG1vZHVsZSAqaTsKKwlzdHJ1Y3QgaW5kZXhfbm9kZSAqaW5kZXg7CisJY2hhciAqbGluZTsKKwljaGFyICpwOworCisJaW5kZXggPSBpbmRleF9jcmVhdGUoKTsKKworCWZvciAoaSA9IG1vZHVsZXM7IGk7IGkgPSBpLT5uZXh0KSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKmosICp0bXA7CisJCWNoYXIgbW9kbmFtZVtzdHJsZW4oaS0+cGF0aG5hbWUpKzFdOworCQkKKwkJb3JkZXJfZGVwX2xpc3QoaSwgaSk7CisJCQorCQlmaWxlbmFtZTJtb2RuYW1lKG1vZG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJbm9mYWlsX2FzcHJpbnRmKCZsaW5lLCAiJXM6IiwKKwkJICAgICAgICAgICAgICAgIGNvbXByZXNzX3BhdGgoaS0+cGF0aG5hbWUsIGRpcm5hbWUpKTsKKwkJcCA9IGxpbmU7CisJCWxpc3RfZm9yX2VhY2hfc2FmZShqLCB0bXAsICZpLT5kZXBfbGlzdCkgeworCQkJc3RydWN0IG1vZHVsZSAqZGVwCisJCQkJPSBsaXN0X2VudHJ5KGosIHN0cnVjdCBtb2R1bGUsIGRlcF9saXN0KTsKKwkJCW5vZmFpbF9hc3ByaW50ZigmbGluZSwgIiVzICVzIiwKKwkJCSAgICAgICAgICAgICAgICBwLAorCQkJICAgICAgICAgICAgICAgIGNvbXByZXNzX3BhdGgoZGVwLT5wYXRobmFtZSwgZGlybmFtZSkpOworCQkJZnJlZShwKTsKKwkJCXAgPSBsaW5lOworCQkJbGlzdF9kZWxfaW5pdChqKTsKKwkJfQorCQlpZiAoaW5kZXhfaW5zZXJ0KGluZGV4LCBtb2RuYW1lLCBsaW5lLCBpLT5vcmRlcikgJiYgd2Fybl9kdXBzKQorCQkJd2FybigiZHVwbGljYXRlIG1vZHVsZSBkZXBzOlxuJXNcbiIsbGluZSk7CisJCWZyZWUobGluZSk7CisJfQorCQorCWluZGV4X3dyaXRlKGluZGV4LCBvdXQpOworCWluZGV4X2Rlc3Ryb3koaW5kZXgpOworCisJcmV0dXJuIDE7Cit9CisKKworc3RhdGljIGludCBzbWVsbHNfbGlrZV9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlyZXR1cm4gZW5kc19pbihuYW1lLCIua28iKSB8fCBlbmRzX2luKG5hbWUsICIua28uZ3oiKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QgbW9kdWxlICooKmRvX21vZHVsZV90KShjb25zdCBjaGFyICpkaXJuYW1lLAorCQkJCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJCSAgICAgIHN0cnVjdCBtb2R1bGUgKm5leHQsCisJCQkJICAgICAgc3RydWN0IG1vZHVsZV9zZWFyY2ggKnNlYXJjaCwKKwkJCQkgICAgICBzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqb3ZlcnJpZGVzKTsKKworc3RhdGljIGludCBpc19oaWdoZXJfcHJpb3JpdHkoY29uc3QgY2hhciAqbmV3cGF0aCwgY29uc3QgY2hhciAqb2xkcGF0aCwKKwkJCSAgICAgIHN0cnVjdCBtb2R1bGVfc2VhcmNoICpzZWFyY2gsCisJCQkgICAgICBzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqb3ZlcnJpZGVzKQoreworCXN0cnVjdCBtb2R1bGVfc2VhcmNoICp0bXA7CisJc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKm92dG1wOworCWludCBpID0gMDsKKwlpbnQgcHJpb19idWlsdGluID0gLTE7CisJaW50IHByaW9fbmV3ID0gLTE7CisJaW50IHByaW9fb2xkID0gLTE7CisKKy8qIFRoZSBuYW1lcyBhbHJlYWR5IG1hdGNoLCBub3cgd2UgY2hlY2sgZm9yIG92ZXJyaWRlcyBhbmQgZGlyZWN0b3J5IHNlYXJjaAorICogb3JkZXIKKyAqLworCWZvciAob3Z0bXAgPSBvdmVycmlkZXM7IG92dG1wICE9IE5VTEw7IG92dG1wID0gb3Z0bXAtPm5leHQpIHsKKwkJaWYgKHN0cmVxKG92dG1wLT5tb2RmaWxlLCBuZXdwYXRoKSkKKwkJCXJldHVybiAxOworCQlpZiAoc3RyZXEob3Z0bXAtPm1vZGZpbGUsIG9sZHBhdGgpKQorCQkJcmV0dXJuIDA7CisJfQorCWZvciAoaSA9IDAsIHRtcCA9IHNlYXJjaDsgdG1wICE9IE5VTEw7IHRtcCA9IHRtcC0+bmV4dCwgaSsrKSB7CisJCWlmIChzdHJlcSh0bXAtPnNlYXJjaF9wYXRoLCBNT0RVTEVfQlVJTFRJTl9LRVkpKQorCQkJcHJpb19idWlsdGluID0gaTsKKwkJZWxzZSBpZiAoc3RybmNtcCh0bXAtPnNlYXJjaF9wYXRoLCBuZXdwYXRoLCB0bXAtPmxlbikgPT0gMCkKKwkJCXByaW9fbmV3ID0gaTsKKwkJZWxzZSBpZiAoc3RybmNtcCh0bXAtPnNlYXJjaF9wYXRoLCBvbGRwYXRoLCB0bXAtPmxlbikgPT0gMCkKKwkJCXByaW9fb2xkID0gaTsKKwl9CisJaWYgKHByaW9fbmV3IDwgMCkKKwkJcHJpb19uZXcgPSBwcmlvX2J1aWx0aW47CisJaWYgKHByaW9fb2xkIDwgMCkKKwkJcHJpb19vbGQgPSBwcmlvX2J1aWx0aW47CisKKwlyZXR1cm4gcHJpb19uZXcgPiBwcmlvX29sZDsKK30KKworCitzdGF0aWMgc3RydWN0IG1vZHVsZSAqZG9fbW9kdWxlKGNvbnN0IGNoYXIgKmRpcm5hbWUsCisJCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJCSAgICAgICBzdHJ1Y3QgbW9kdWxlICpsaXN0LAorCQkJCSAgICAgICBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqc2VhcmNoLAorCQkJCSAgICAgICBzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqb3ZlcnJpZGVzKQoreworCXN0cnVjdCBtb2R1bGUgKm5ldywgKippOworCisJbmV3ID0gZ3JhYl9tb2R1bGUoZGlybmFtZSwgZmlsZW5hbWUpOworCWlmICghbmV3KQorCQlyZXR1cm4gbGlzdDsKKworCS8qIENoZWNrIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluIHRoZSBsaXN0LiAqLworCWZvciAoaSA9ICZsaXN0OyAqaTsgaSA9ICYoKmkpLT5uZXh0KSB7CisKKwkJaWYgKHN0cmVxKCgqaSktPmJhc2VuYW1lLCBmaWxlbmFtZSkpIHsKKwkJCWNoYXIgbmV3cGF0aFtzdHJsZW4oZGlybmFtZSkgKyBzdHJsZW4oIi8iKQorCQkJCSAgICAgICsgc3RybGVuKGZpbGVuYW1lKSArIDFdOworCisJCQlzcHJpbnRmKG5ld3BhdGgsICIlcy8lcyIsIGRpcm5hbWUsIGZpbGVuYW1lKTsKKworCQkJaWYgKGlzX2hpZ2hlcl9wcmlvcml0eShuZXdwYXRoLCAoKmkpLT5wYXRobmFtZSxzZWFyY2gsCisJCQkJCSAgICAgICBvdmVycmlkZXMpKSB7CisJCQkJZGVsX21vZHVsZShpLCAqaSk7CisJCQkJCisJCQkJbmV3LT5uZXh0ID0gKmk7CisJCQkJKmkgPSBuZXc7CisJCQl9IGVsc2UKKwkJCQlkZWxfbW9kdWxlKE5VTEwsIG5ldyk7CisKKwkJCXJldHVybiBsaXN0OworCQl9CisJfQorCisJLyogTm90IGluIHRoZSBsaXN0IGFscmVhZHkuIEp1c3QgcHJlcGVuZC4gKi8KKwluZXctPm5leHQgPSBsaXN0OworCXJldHVybiBuZXc7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlICpncmFiX2Rpcihjb25zdCBjaGFyICpkaXJuYW1lLAorCQkJICAgICAgIERJUiAqZGlyLAorCQkJICAgICAgIHN0cnVjdCBtb2R1bGUgKm5leHQsCisJCQkgICAgICAgZG9fbW9kdWxlX3QgZG9fbW9kLAorCQkJICAgICAgIHN0cnVjdCBtb2R1bGVfc2VhcmNoICpzZWFyY2gsCisJCQkgICAgICAgc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKm92ZXJyaWRlcykKK3sKKwlzdHJ1Y3QgZGlyZW50ICpkaXJlbnQ7CisKKwl3aGlsZSAoKGRpcmVudCA9IHJlYWRkaXIoZGlyKSkgIT0gTlVMTCkgeworCQlpZiAoc21lbGxzX2xpa2VfbW9kdWxlKGRpcmVudC0+ZF9uYW1lKSkKKwkJCW5leHQgPSBkb19tb2QoZGlybmFtZSwgZGlyZW50LT5kX25hbWUsIG5leHQsCisJCQkJICAgICAgc2VhcmNoLCBvdmVycmlkZXMpOworCQllbHNlIGlmICghc3RyZXEoZGlyZW50LT5kX25hbWUsICIuIikKKwkJCSAmJiAhc3RyZXEoZGlyZW50LT5kX25hbWUsICIuLiIpCisJCQkgJiYgIXN0cmVxKGRpcmVudC0+ZF9uYW1lLCAic291cmNlIikKKwkJCSAmJiAhc3RyZXEoZGlyZW50LT5kX25hbWUsICJidWlsZCIpKSB7CisKKwkJCURJUiAqc3ViOworCQkJY2hhciBzdWJkaXJbc3RybGVuKGRpcm5hbWUpICsgMQorCQkJCSAgICsgc3RybGVuKGRpcmVudC0+ZF9uYW1lKSArIDFdOworCQkJc3ByaW50ZihzdWJkaXIsICIlcy8lcyIsIGRpcm5hbWUsIGRpcmVudC0+ZF9uYW1lKTsKKwkJCXN1YiA9IG9wZW5kaXIoc3ViZGlyKTsKKwkJCWlmIChzdWIpIHsKKwkJCQluZXh0ID0gZ3JhYl9kaXIoc3ViZGlyLCBzdWIsIG5leHQsIGRvX21vZCwKKwkJCQkJCXNlYXJjaCwgb3ZlcnJpZGVzKTsKKwkJCQljbG9zZWRpcihzdWIpOworCQkJfQorCQl9CisJfQorCXJldHVybiBuZXh0OworfQorCitzdGF0aWMgc3RydWN0IG1vZHVsZSAqZ3JhYl9iYXNlZGlyKGNvbnN0IGNoYXIgKmRpcm5hbWUsCisJCQkJICAgc3RydWN0IG1vZHVsZV9zZWFyY2ggKnNlYXJjaCwKKwkJCQkgICBzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqb3ZlcnJpZGVzKQoreworCURJUiAqZGlyOworCXN0cnVjdCBtb2R1bGUgKmxpc3Q7CisKKwlkaXIgPSBvcGVuZGlyKGRpcm5hbWUpOworCWlmICghZGlyKSB7CisJCXdhcm4oIkNvdWxkbid0IG9wZW4gZGlyZWN0b3J5ICVzOiAlc1xuIiwKKwkJICAgICBkaXJuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlyZXR1cm4gTlVMTDsKKwl9CisJbGlzdCA9IGdyYWJfZGlyKGRpcm5hbWUsIGRpciwgTlVMTCwgZG9fbW9kdWxlLCBzZWFyY2gsIG92ZXJyaWRlcyk7CisJY2xvc2VkaXIoZGlyKTsKKworCXJldHVybiBsaXN0OworfQorCitzdGF0aWMgc3RydWN0IG1vZHVsZSAqc29ydF9tb2R1bGVzKGNvbnN0IGNoYXIgKmRpcm5hbWUsIHN0cnVjdCBtb2R1bGUgKmxpc3QpCit7CisJc3RydWN0IG1vZHVsZSAqdGxpc3QgPSBOVUxMLCAqKnRwb3MgPSAmdGxpc3Q7CisJRklMRSAqbW9kb3JkZXI7CisJaW50IGRpcl9sZW4gPSBzdHJsZW4oZGlybmFtZSkgKyAxOworCWNoYXIgZmlsZV9uYW1lW2Rpcl9sZW4gKyBzdHJsZW4oIm1vZHVsZXMub3JkZXIiKSArIDFdOworCWNoYXIgbGluZVsxMDI0MF07CisJdW5zaWduZWQgaW50IGxpbmVudW0gPSAwOworCisJc3ByaW50ZihmaWxlX25hbWUsICIlcy8lcyIsIGRpcm5hbWUsICJtb2R1bGVzLm9yZGVyIik7CisKKwltb2RvcmRlciA9IGZvcGVuKGZpbGVfbmFtZSwgInIiKTsKKwlpZiAoIW1vZG9yZGVyKSB7CisJCS8qIE9sZGVyIGtlcm5lbHMgZG9uJ3QgZ2VuZXJhdGUgbW9kdWxlcy5vcmRlci4gIEp1c3QKKwkJICAgcmV0dXJuIGlmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QuICovCisJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQlyZXR1cm4gbGlzdDsKKwkJZmF0YWwoIkNvdWxkIG5vdCBvcGVuICclcyc6ICVzXG4iLCBmaWxlX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJfQorCisJc3ByaW50ZihsaW5lLCAiJXMvIiwgZGlybmFtZSk7CisKKwkvKiBtb3ZlIG1vZHVsZXMgbGlzdGVkIGluIG1vZG9yZGVyIGZpbGUgdG8gdGxpc3QgaW4gb3JkZXIgKi8KKwl3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBtb2RvcmRlcikpIHsKKwkJc3RydWN0IG1vZHVsZSAqKnBvcywgKm1vZDsKKwkJaW50IGxlbiA9IHN0cmxlbihsaW5lKTsKKworCQlsaW5lbnVtKys7CisJCWlmIChsaW5lW2xlbiAtIDFdID09ICdcbicpCisJCQlsaW5lW2xlbiAtIDFdID0gJ1wwJzsKKworCQlmb3IgKHBvcyA9ICZsaXN0OyAobW9kID0gKnBvcyk7IHBvcyA9ICYoKnBvcyktPm5leHQpIHsKKwkJCWlmIChzdHJlcShsaW5lLCBtb2QtPnBhdGhuYW1lICsgZGlyX2xlbikpIHsKKwkJCQltb2QtPm9yZGVyID0gbGluZW51bTsKKwkJCQkqcG9zID0gbW9kLT5uZXh0OworCQkJCW1vZC0+bmV4dCA9IE5VTEw7CisJCQkJKnRwb3MgPSBtb2Q7CisJCQkJdHBvcyA9ICZtb2QtPm5leHQ7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKKwkvKiBhcHBlbmQgdGhlIHJlc3QgKi8KKwkqdHBvcyA9IGxpc3Q7CisKKwlmY2xvc2UobW9kb3JkZXIpOworCisJcmV0dXJuIHRsaXN0OworfQorCisvKiBDYWxjdWxhdGUgdGhlIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUgKi8KK3N0YXRpYyB2b2lkIGNhbGN1bGF0ZV9kZXBzKHN0cnVjdCBtb2R1bGUgKm1vZHVsZSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpzeW1uYW1lczsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpzeW10eXBlczsKKwl1aW50NjRfdCAqc3ltdmVycyA9IE5VTEw7CisJc3RydWN0IGVsZl9maWxlICpmaWxlOworCisJbW9kdWxlLT5udW1fZGVwcyA9IDA7CisJbW9kdWxlLT5kZXBzID0gTlVMTDsKKwlmaWxlID0gbW9kdWxlLT5maWxlOworCisJc3ltbmFtZXMgPSBmaWxlLT5vcHMtPmxvYWRfZGVwX3N5bXMoZmlsZSwgJnN5bXR5cGVzLAorCQkJY2hlY2tfc3ltdmVycyA/ICZzeW12ZXJzIDogTlVMTCk7CisJaWYgKCFzeW1uYW1lcyB8fCAhc3ltdHlwZXMpCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7IGkgPCBzeW1uYW1lcy0+Y250OyBpKyspIHsKKwkJY29uc3QgY2hhciAqbmFtZTsKKwkJdWludDY0X3QgdmVyOworCQlzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKwkJaW50IHdlYWs7CisKKwkJbmFtZSA9IHN5bW5hbWVzLT5zdHJbaV07CisJCXZlciA9IHN5bXZlcnMgPyBzeW12ZXJzW2ldIDogMDsKKwkJd2VhayA9ICgqKHN5bXR5cGVzLT5zdHJbaV0pID09ICdXJyk7CisJCW93bmVyID0gZmluZF9zeW1ib2wobmFtZSwgdmVyLCBtb2R1bGUtPnBhdGhuYW1lLCB3ZWFrKTsKKwkJaWYgKG93bmVyKSB7CisJCQlpbmZvKCIlcyBuZWVkcyBcIiVzXCI6ICVzXG4iLAorCQkJICAgICAgIG1vZHVsZS0+cGF0aG5hbWUsIG5hbWUsCisJCQkgICAgICAgb3duZXItPnBhdGhuYW1lKTsKKwkJCWFkZF9kZXAobW9kdWxlLCBvd25lcik7CisJCX0KKwl9CisKKwlmcmVlKHN5bW5hbWVzKTsKKwlmcmVlKHN5bXR5cGVzKTsKKwlmcmVlKHN5bXZlcnMpOworfQorCitzdGF0aWMgc3RydWN0IG1vZHVsZSAqcGFyc2VfbW9kdWxlcyhzdHJ1Y3QgbW9kdWxlICpsaXN0KQoreworCXN0cnVjdCBtb2R1bGUgKmk7CisJc3RydWN0IGVsZl9maWxlICpmaWxlOworCXN0cnVjdCBzdHJpbmdfdGFibGUgKnN5bXM7CisJaW50IGo7CisKKwlmb3IgKGkgPSBsaXN0OyBpOyBpID0gaS0+bmV4dCkgeworCQl1aW50NjRfdCAqc3ltdmVycyA9IE5VTEw7CisJCWZpbGUgPSBpLT5maWxlOworCQlzeW1zID0gZmlsZS0+b3BzLT5sb2FkX3N5bWJvbHMoZmlsZSwKKwkJCQljaGVja19zeW12ZXJzID8gJnN5bXZlcnMgOiBOVUxMKTsKKwkJaWYgKHN5bXMpIHsKKwkJCWZvciAoaiA9IDA7IGogPCBzeW1zLT5jbnQ7IGorKykKKwkJCQlhZGRfc3ltYm9sKHN5bXMtPnN0cltqXSwKKwkJCQkJc3ltdmVycyA/IHN5bXZlcnNbal0gOiAwLCBpKTsKKwkJCXN0cnRibF9mcmVlKHN5bXMpOworCQl9CisJCWZyZWUoc3ltdmVycyk7CisJCWZpbGUtPm9wcy0+ZmV0Y2hfdGFibGVzKGZpbGUsICZpLT50YWJsZXMpOworCX0KKwkKKwlmb3IgKGkgPSBsaXN0OyBpOyBpID0gaS0+bmV4dCkKKwkJY2FsY3VsYXRlX2RlcHMoaSk7CisJCisJLyogU3RyaXAgb3V0IG1vZHVsZXMgd2l0aCBkZXBlbmRlbmN5IGxvb3BzLiAqLworIGFnYWluOgorCWZvciAoaSA9IGxpc3Q7IGk7IGkgPSBpLT5uZXh0KSB7CisJCWlmIChoYXNfZGVwX2xvb3AoaSwgTlVMTCkpIHsKKwkJCXdhcm4oIk1vZHVsZSAlcyBpZ25vcmVkLCBkdWUgdG8gbG9vcFxuIiwKKwkJCSAgICAgaS0+cGF0aG5hbWUgKyBza2lwY2hhcnMpOworCQkJZGVsX21vZHVsZSgmbGlzdCwgaSk7CisJCQlnb3RvIGFnYWluOworCQl9CisJfQorCQorCXJldHVybiBsaXN0OworfQorCisvKiBTaW1wbHkgZHVtcCBoYXNoIHRhYmxlLiAqLworc3RhdGljIGludCBvdXRwdXRfc3ltYm9scyhzdHJ1Y3QgbW9kdWxlICp1bnVzZWQsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKworCWZwcmludGYob3V0LCAiIyBBbGlhc2VzIGZvciBzeW1ib2xzLCB1c2VkIGJ5IHN5bWJvbF9yZXF1ZXN0KCkuXG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgU1lNQk9MX0hBU0hfU0laRTsgaSsrKSB7CisJCXN0cnVjdCBzeW1ib2wgKnM7CisKKwkJZm9yIChzID0gc3ltYm9saGFzaFtpXTsgczsgcyA9IHMtPm5leHQpIHsKKwkJCWlmIChzLT5vd25lcikgeworCQkJCWNoYXIgbW9kbmFtZVtzdHJsZW4ocy0+b3duZXItPnBhdGhuYW1lKSsxXTsKKwkJCQlmaWxlbmFtZTJtb2RuYW1lKG1vZG5hbWUsIHMtPm93bmVyLT5wYXRobmFtZSk7CisJCQkJZnByaW50ZihvdXQsICJhbGlhcyBzeW1ib2w6JXMgJXNcbiIsCisJCQkJCXMtPm5hbWUsIG1vZG5hbWUpOworCQkJfQorCQl9CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IG91dHB1dF9zeW1ib2xzX2JpbihzdHJ1Y3QgbW9kdWxlICp1bnVzZWQsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgaW5kZXhfbm9kZSAqaW5kZXg7CisJdW5zaWduZWQgaW50IGk7CisJY2hhciAqYWxpYXM7CisJaW50IGR1cGxpY2F0ZTsKKworCWluZGV4ID0gaW5kZXhfY3JlYXRlKCk7CisJCisJZm9yIChpID0gMDsgaSA8IFNZTUJPTF9IQVNIX1NJWkU7IGkrKykgeworCQlzdHJ1Y3Qgc3ltYm9sICpzOworCisJCWZvciAocyA9IHN5bWJvbGhhc2hbaV07IHM7IHMgPSBzLT5uZXh0KSB7CisJCQlpZiAocy0+b3duZXIpIHsKKwkJCQljaGFyIG1vZG5hbWVbc3RybGVuKHMtPm93bmVyLT5wYXRobmFtZSkrMV07CisJCQkJZmlsZW5hbWUybW9kbmFtZShtb2RuYW1lLCBzLT5vd25lci0+cGF0aG5hbWUpOworCQkJCW5vZmFpbF9hc3ByaW50ZigmYWxpYXMsICJzeW1ib2w6JXMiLCBzLT5uYW1lKTsKKwkJCQlkdXBsaWNhdGUgPSBpbmRleF9pbnNlcnQoaW5kZXgsIGFsaWFzLCBtb2RuYW1lLAorCQkJCQkJCSBzLT5vd25lci0+b3JkZXIpOworCQkJCWlmIChkdXBsaWNhdGUgJiYgd2Fybl9kdXBzKQorCQkJCQl3YXJuKCJkdXBsaWNhdGUgbW9kdWxlIHN5bXM6XG4lcyAlc1xuIiwKKwkJCQkJCWFsaWFzLCBtb2RuYW1lKTsKKwkJCQlmcmVlKGFsaWFzKTsKKwkJCX0KKwkJfQorCX0KKwkKKwlpbmRleF93cml0ZShpbmRleCwgb3V0KTsKKwlpbmRleF9kZXN0cm95KGluZGV4KTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IG91dHB1dF9idWlsdGluX2JpbihzdHJ1Y3QgbW9kdWxlICp1bnVzZWQsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgaW5kZXhfbm9kZSAqaW5kZXg7CisJY2hhciAqdGV4dGZpbGUsICpsaW5lOworCXVuc2lnbmVkIGludCBsaW5lbnVtOworCUZJTEUgKmY7CisKKwlub2ZhaWxfYXNwcmludGYoJnRleHRmaWxlLCAiJXMvbW9kdWxlcy5idWlsdGluIiwgZGlybmFtZSk7CisJaWYgKCEoZiA9IGZvcGVuKHRleHRmaWxlLCAiciIpKSkgeworCQlpZiAoZXJybm8gIT0gRU5PRU5UKQorCQkJZmF0YWwoIkNvdWxkIG5vdCBvcGVuICclcyc6ICVzXG4iLAorCQkJCQl0ZXh0ZmlsZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZnJlZSh0ZXh0ZmlsZSk7CisJCXJldHVybiAwOworCX0KKwlmcmVlKHRleHRmaWxlKTsKKwlpbmRleCA9IGluZGV4X2NyZWF0ZSgpOworCisJd2hpbGUgKChsaW5lID0gZ2V0bGluZV93cmFwcGVkKGYsICZsaW5lbnVtKSkgIT0gTlVMTCkgeworCQljaGFyICptb2R1bGUgPSBsaW5lOworCisJCWlmICghKmxpbmUgfHwgKmxpbmUgPT0gJyMnKSB7CisJCQlmcmVlKGxpbmUpOworCQkJY29udGludWU7CisJCX0KKwkJZmlsZW5hbWUybW9kbmFtZShtb2R1bGUsIG1vZHVsZSk7CisJCWluZGV4X2luc2VydChpbmRleCwgbW9kdWxlLCAiIiwgMCk7CisJCWZyZWUobGluZSk7CisJfQorCWZjbG9zZShmKTsKKwlpbmRleF93cml0ZShpbmRleCwgb3V0KTsKKwlpbmRleF9kZXN0cm95KGluZGV4KTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IG91dHB1dF9hbGlhc2VzKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCXN0cnVjdCBlbGZfZmlsZSAqZmlsZTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICp0Ymw7CisJaW50IGo7CisKKwlmcHJpbnRmKG91dCwgIiMgQWxpYXNlcyBleHRyYWN0ZWQgZnJvbSBtb2R1bGVzIHRoZW1zZWx2ZXMuXG4iKTsKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQljaGFyIG1vZG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSsxXTsKKworCQlmaWxlID0gaS0+ZmlsZTsKKwkJZmlsZW5hbWUybW9kbmFtZShtb2RuYW1lLCBpLT5wYXRobmFtZSk7CisKKwkJLyogR3JhYiBmcm9tIG9sZC1zdHlsZSAubW9kYWxpYXMgc2VjdGlvbi4gKi8KKwkJdGJsID0gZmlsZS0+b3BzLT5sb2FkX3N0cmluZ3MoZmlsZSwgIi5tb2RhbGlhcyIsIE5VTEwpOworCQlmb3IgKGogPSAwOyB0YmwgJiYgaiA8IHRibC0+Y250OyBqKyspCisJCQlmcHJpbnRmKG91dCwgImFsaWFzICVzICVzXG4iLCB0YmwtPnN0cltqXSwgbW9kbmFtZSk7CisJCXN0cnRibF9mcmVlKHRibCk7CisKKwkJLyogR3JhYiBmcm9tIG5ldy1zdHlsZSAubW9kaW5mbyBzZWN0aW9uLiAqLworCQl0YmwgPSBmaWxlLT5vcHMtPmxvYWRfc3RyaW5ncyhmaWxlLCAiLm1vZGluZm8iLCBOVUxMKTsKKwkJZm9yIChqID0gMDsgdGJsICYmIGogPCB0YmwtPmNudDsgaisrKSB7CisJCQljb25zdCBjaGFyICpwID0gdGJsLT5zdHJbal07CisJCQlpZiAoc3Ryc3RhcnRzKHAsICJhbGlhcz0iKSkKKwkJCQlmcHJpbnRmKG91dCwgImFsaWFzICVzICVzXG4iLAorCQkJCQlwICsgc3RybGVuKCJhbGlhcz0iKSwgbW9kbmFtZSk7CisJCX0KKwkJc3RydGJsX2ZyZWUodGJsKTsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgb3V0cHV0X2FsaWFzZXNfYmluKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCXN0cnVjdCBlbGZfZmlsZSAqZmlsZTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICp0Ymw7CisJaW50IGo7CisJY2hhciAqYWxpYXM7CisJc3RydWN0IGluZGV4X25vZGUgKmluZGV4OworCWludCBkdXBsaWNhdGU7CisKKwlpbmRleCA9IGluZGV4X2NyZWF0ZSgpOworCQorCWZvciAoaSA9IG1vZHVsZXM7IGk7IGkgPSBpLT5uZXh0KSB7CisJCWNoYXIgbW9kbmFtZVtzdHJsZW4oaS0+cGF0aG5hbWUpKzFdOworCisJCWZpbGUgPSBpLT5maWxlOworCQlmaWxlbmFtZTJtb2RuYW1lKG1vZG5hbWUsIGktPnBhdGhuYW1lKTsKKworCQkvKiBHcmFiIGZyb20gb2xkLXN0eWxlIC5tb2RhbGlhcyBzZWN0aW9uLiAqLworCQl0YmwgPSBmaWxlLT5vcHMtPmxvYWRfc3RyaW5ncyhmaWxlLCAiLm1vZGFsaWFzIiwgTlVMTCk7CisJCWZvciAoaiA9IDA7IHRibCAmJiBqIDwgdGJsLT5jbnQ7IGorKykgeworCQkJYWxpYXMgPSBOT0ZBSUwoc3RyZHVwKHRibC0+c3RyW2pdKSk7CisJCQl1bmRlcnNjb3JlcyhhbGlhcyk7CisJCQlkdXBsaWNhdGUgPSBpbmRleF9pbnNlcnQoaW5kZXgsIGFsaWFzLCBtb2RuYW1lLCBpLT5vcmRlcik7CisJCQlpZiAoZHVwbGljYXRlICYmIHdhcm5fZHVwcykKKwkJCQl3YXJuKCJkdXBsaWNhdGUgbW9kdWxlIGFsaWFzOlxuJXMgJXNcbiIsCisJCQkJCWFsaWFzLCBtb2RuYW1lKTsKKwkJCWZyZWUoYWxpYXMpOworCQl9CisJCXN0cnRibF9mcmVlKHRibCk7CisKKwkJLyogR3JhYiBmcm9tIG5ldy1zdHlsZSAubW9kaW5mbyBzZWN0aW9uLiAqLworCQl0YmwgPSBmaWxlLT5vcHMtPmxvYWRfc3RyaW5ncyhmaWxlLCAiLm1vZGluZm8iLCBOVUxMKTsKKwkJZm9yIChqID0gMDsgdGJsICYmIGogPCB0YmwtPmNudDsgaisrKSB7CisJCQljb25zdCBjaGFyICpwID0gdGJsLT5zdHJbal07CisJCQlpZiAoc3Ryc3RhcnRzKHAsICJhbGlhcz0iKSkgeworCQkJCWFsaWFzID0gTk9GQUlMKHN0cmR1cChwICsgc3RybGVuKCJhbGlhcz0iKSkpOworCQkJCXVuZGVyc2NvcmVzKGFsaWFzKTsKKwkJCQlkdXBsaWNhdGUgPSBpbmRleF9pbnNlcnQoaW5kZXgsIGFsaWFzLCBtb2RuYW1lLCBpLT5vcmRlcik7CisJCQkJaWYgKGR1cGxpY2F0ZSAmJiB3YXJuX2R1cHMpCisJCQkJCXdhcm4oImR1cGxpY2F0ZSBtb2R1bGUgYWxpYXM6XG4lcyAlc1xuIiwKKwkJCQkJCWFsaWFzLCBtb2RuYW1lKTsKKwkJCQlmcmVlKGFsaWFzKTsKKwkJCX0KKwkJfQorCQlzdHJ0YmxfZnJlZSh0YmwpOworCX0KKwkKKwlpbmRleF93cml0ZShpbmRleCwgb3V0KTsKKwlpbmRleF9kZXN0cm95KGluZGV4KTsKKworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IG91dHB1dF9zb2Z0ZGVwcyhzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpCit7CisJc3RydWN0IG1vZHVsZSAqaTsKKwlzdHJ1Y3QgZWxmX2ZpbGUgKmZpbGU7CisJc3RydWN0IHN0cmluZ190YWJsZSAqdGJsOworCWludCBqOworCisJZnByaW50ZihvdXQsICIjIFNvZnQgZGVwZW5kZW5jaWVzIGV4dHJhY3RlZCBmcm9tIG1vZHVsZXMgdGhlbXNlbHZlcy5cbiIpOworCWZwcmludGYob3V0LCAiIyBDb3B5LCB3aXRoIGEgLmNvbmYgZXh0ZW5zaW9uLCB0byAvZXRjL21vZHByb2JlLmQgdG8gdXNlICIKKwkJIml0IHdpdGggbW9kcHJvYmUuXG4iKTsKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQljaGFyIG1vZG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSsxXTsKKworCQlmaWxlID0gaS0+ZmlsZTsKKwkJZmlsZW5hbWUybW9kbmFtZShtb2RuYW1lLCBpLT5wYXRobmFtZSk7CisKKwkJLyogR3JhYiBmcm9tIG5ldy1zdHlsZSAubW9kaW5mbyBzZWN0aW9uLiAqLworCQl0YmwgPSBmaWxlLT5vcHMtPmxvYWRfc3RyaW5ncyhmaWxlLCAiLm1vZGluZm8iLCBOVUxMKTsKKwkJZm9yIChqID0gMDsgdGJsICYmIGogPCB0YmwtPmNudDsgaisrKSB7CisJCQljb25zdCBjaGFyICpwID0gdGJsLT5zdHJbal07CisJCQlpZiAoc3Ryc3RhcnRzKHAsICJzb2Z0ZGVwPSIpKQorCQkJCWZwcmludGYob3V0LCAic29mdGRlcCAlcyAlc1xuIiwKKwkJCQkJbW9kbmFtZSwgcCArIHN0cmxlbigic29mdGRlcD0iKSk7CisJCX0KKwkJc3RydGJsX2ZyZWUodGJsKTsKKwl9CisJcmV0dXJuIDE7Cit9CisKK3N0cnVjdCBkZXBmaWxlIHsKKwljaGFyICpuYW1lOworCWludCAoKmZ1bmMpKHN0cnVjdCBtb2R1bGUgKiwgRklMRSAqLCBjaGFyICpkaXJuYW1lKTsKKwlpbnQgbWFwX2ZpbGU7Cit9OworCitzdGF0aWMgc3RydWN0IGRlcGZpbGUgZGVwZmlsZXNbXSA9IHsKKwl7ICJtb2R1bGVzLmRlcCIsIG91dHB1dF9kZXBzLCAwIH0sIC8qIFRoaXMgaXMgd2hhdCB3ZSBjaGVjayBmb3IgJy1BJy4gKi8KKwl7ICJtb2R1bGVzLmRlcC5iaW4iLCBvdXRwdXRfZGVwc19iaW4sIDAgfSwKKwl7ICJtb2R1bGVzLnBjaW1hcCIsIG91dHB1dF9wY2lfdGFibGUsIDEgfSwKKwl7ICJtb2R1bGVzLnVzYm1hcCIsIG91dHB1dF91c2JfdGFibGUsIDEgfSwKKwl7ICJtb2R1bGVzLmNjd21hcCIsIG91dHB1dF9jY3dfdGFibGUsIDEgfSwKKwl7ICJtb2R1bGVzLmllZWUxMzk0bWFwIiwgb3V0cHV0X2llZWUxMzk0X3RhYmxlLCAxIH0sCisJeyAibW9kdWxlcy5pc2FwbnBtYXAiLCBvdXRwdXRfaXNhcG5wX3RhYmxlLCAxIH0sCisJeyAibW9kdWxlcy5pbnB1dG1hcCIsIG91dHB1dF9pbnB1dF90YWJsZSwgMSB9LAorCXsgIm1vZHVsZXMub2ZtYXAiLCBvdXRwdXRfb2ZfdGFibGUsIDEgfSwKKwl7ICJtb2R1bGVzLnNlcmlvbWFwIiwgb3V0cHV0X3NlcmlvX3RhYmxlLCAxIH0sCisJeyAibW9kdWxlcy5hbGlhcyIsIG91dHB1dF9hbGlhc2VzLCAwIH0sCisJeyAibW9kdWxlcy5hbGlhcy5iaW4iLCBvdXRwdXRfYWxpYXNlc19iaW4sIDAgfSwKKwl7ICJtb2R1bGVzLnNvZnRkZXAiLCBvdXRwdXRfc29mdGRlcHMsIDAgfSwKKwl7ICJtb2R1bGVzLnN5bWJvbHMiLCBvdXRwdXRfc3ltYm9scywgMCB9LAorCXsgIm1vZHVsZXMuc3ltYm9scy5iaW4iLCBvdXRwdXRfc3ltYm9sc19iaW4sIDAgfSwKKwl7ICJtb2R1bGVzLmJ1aWx0aW4uYmluIiwgb3V0cHV0X2J1aWx0aW5fYmluLCAwIH0sCit9OworCisvKiBJZiB3ZSBjYW4ndCBmaWd1cmUgaXQgb3V0LCBpdCdzIHNhZmUgdG8gc2F5ICJ0cnVlIi4gKi8KK3N0YXRpYyBpbnQgYW55X21vZHVsZXNfbmV3ZXIoY29uc3QgY2hhciAqZGlybmFtZSwgdGltZV90IG10aW1lKQoreworCURJUiAqZGlyOworCXN0cnVjdCBkaXJlbnQgKmRpcmVudDsKKworCWRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisJaWYgKCFkaXIpCisJCXJldHVybiAxOworCisJd2hpbGUgKChkaXJlbnQgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJc3RydWN0IHN0YXQgc3Q7CisJCWNoYXIgZmlsZVtzdHJsZW4oZGlybmFtZSkgKyAxICsgc3RybGVuKGRpcmVudC0+ZF9uYW1lKSArIDFdOworCisJCWlmIChzdHJlcShkaXJlbnQtPmRfbmFtZSwgIi4iKSB8fCBzdHJlcShkaXJlbnQtPmRfbmFtZSwgIi4uIikpCisJCQljb250aW51ZTsKKworCQlzcHJpbnRmKGZpbGUsICIlcy8lcyIsIGRpcm5hbWUsIGRpcmVudC0+ZF9uYW1lKTsKKwkJaWYgKGxzdGF0KGZpbGUsICZzdCkgIT0gMCkKKwkJCWdvdG8gcmV0X3RydWU7CisKKwkJaWYgKHNtZWxsc19saWtlX21vZHVsZShkaXJlbnQtPmRfbmFtZSkpIHsKKwkJCWlmIChzdC5zdF9tdGltZSA+IG10aW1lKQorCQkJCWdvdG8gcmV0X3RydWU7CisJCX0gZWxzZSBpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgeworCQkJaWYgKGFueV9tb2R1bGVzX25ld2VyKGZpbGUsIG10aW1lKSkKKwkJCQlnb3RvIHJldF90cnVlOworCQl9CisJfQorCWNsb3NlZGlyKGRpcik7CisJcmV0dXJuIDA7CisKK3JldF90cnVlOgorCWNsb3NlZGlyKGRpcik7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgZGVwZmlsZV9vdXRfb2ZfZGF0ZShjb25zdCBjaGFyICpkaXJuYW1lKQoreworCXN0cnVjdCBzdGF0IHN0OworCWNoYXIgZGVwZmlsZVtzdHJsZW4oZGlybmFtZSkgKyAxICsgc3RybGVuKGRlcGZpbGVzWzBdLm5hbWUpICsgMV07CisKKwlzcHJpbnRmKGRlcGZpbGUsICIlcy8lcyIsIGRpcm5hbWUsIGRlcGZpbGVzWzBdLm5hbWUpOworCisJaWYgKHN0YXQoZGVwZmlsZSwgJnN0KSAhPSAwKQorCQlyZXR1cm4gMTsKKworCXJldHVybiBhbnlfbW9kdWxlc19uZXdlcihkaXJuYW1lLCBzdC5zdF9tdGltZSk7Cit9CisKK3N0YXRpYyBjaGFyICpzdHJzZXBfc2tpcHNwYWNlKGNoYXIgKipzdHJpbmcsIGNoYXIgKmRlbGltKQoreworCWlmICghKnN0cmluZykKKwkJcmV0dXJuIE5VTEw7CisJKnN0cmluZyArPSBzdHJzcG4oKnN0cmluZywgZGVsaW0pOworCXJldHVybiBzdHJzZXAoc3RyaW5nLCBkZWxpbSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqYWRkX3NlYXJjaChjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwKKwkJCQkJc2l6ZV90IGxlbiwKKwkJCQkJc3RydWN0IG1vZHVsZV9zZWFyY2ggKnNlYXJjaCkKK3sKKworCXN0cnVjdCBtb2R1bGVfc2VhcmNoICpuZXc7CisJCisJbmV3ID0gTk9GQUlMKG1hbGxvYyhzaXplb2YoKm5ldykpKTsKKwluZXctPnNlYXJjaF9wYXRoID0gTk9GQUlMKHN0cmR1cChzZWFyY2hfcGF0aCkpOworCW5ldy0+bGVuID0gbGVuOworCW5ldy0+bmV4dCA9IHNlYXJjaDsKKworCXJldHVybiBuZXc7CisJCit9CisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqYWRkX292ZXJyaWRlKGNvbnN0IGNoYXIgKm1vZGZpbGUsCisJCQkJCSAgICAgc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKm92ZXJyaWRlcykKK3sKKworCXN0cnVjdCBtb2R1bGVfb3ZlcnJpZGVzICpuZXc7CisJCisJbmV3ID0gTk9GQUlMKG1hbGxvYyhzaXplb2YoKm5ldykpKTsKKwluZXctPm1vZGZpbGUgPSBOT0ZBSUwoc3RyZHVwKG1vZGZpbGUpKTsKKwluZXctPm5leHQgPSBvdmVycmlkZXM7CisKKwlyZXR1cm4gbmV3OworCQorfQorCitzdGF0aWMgaW50IHBhcnNlX2NvbmZpZ19zY2FuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJICAgICBjb25zdCBjaGFyICpiYXNlZGlyLAorCQkJICAgICBjb25zdCBjaGFyICprZXJuZWx2ZXJzaW9uLAorCQkJICAgICBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqKnNlYXJjaCwKKwkJCSAgICAgc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKipvdmVycmlkZXMpOworCitzdGF0aWMgaW50IHBhcnNlX2NvbmZpZ19maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJICAgICBjb25zdCBjaGFyICpiYXNlZGlyLAorCQkJICAgICBjb25zdCBjaGFyICprZXJuZWx2ZXJzaW9uLAorCQkJICAgICBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqKnNlYXJjaCwKKwkJCSAgICAgc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKipvdmVycmlkZXMpCit7CisJY2hhciAqbGluZTsKKwl1bnNpZ25lZCBpbnQgbGluZW51bSA9IDA7CisJRklMRSAqY2ZpbGU7CisKKwljZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmICghY2ZpbGUpIHsKKwkJaWYgKGVycm5vICE9IEVOT0VOVCkKKwkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiAnJXMnLCByZWFzb246ICVzXG4iLCBmaWxlbmFtZSwKKwkJCSAgICAgIHN0cmVycm9yKGVycm5vKSk7CisJCXJldHVybiAwOworCX0KKworCXdoaWxlICgobGluZSA9IGdldGxpbmVfd3JhcHBlZChjZmlsZSwgJmxpbmVudW0pKSAhPSBOVUxMKSB7CisJCWNoYXIgKnB0ciA9IGxpbmU7CisJCWNoYXIgKmNtZCwgKm1vZG5hbWU7CisKKwkJY21kID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisKKwkJaWYgKGNtZCA9PSBOVUxMIHx8IGNtZFswXSA9PSAnIycgfHwgY21kWzBdID09ICdcMCcpIHsKKwkJCWZyZWUobGluZSk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWlmIChzdHJlcShjbWQsICJzZWFyY2giKSkgeworCQkJY2hhciAqc2VhcmNoX3BhdGg7CisJCQkKKwkJCXdoaWxlICgoc2VhcmNoX3BhdGggPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKSkpIHsKKwkJCQljaGFyICpkaXJuYW1lOworCQkJCXNpemVfdCBsZW47CisKKwkJCQlpZiAoc3RyY21wKHNlYXJjaF9wYXRoLAorCQkJCQkJTU9EVUxFX0JVSUxUSU5fS0VZKSA9PSAwKSB7CisJCQkJCSpzZWFyY2ggPSBhZGRfc2VhcmNoKE1PRFVMRV9CVUlMVElOX0tFWSwKKwkJCQkJCQkgICAgIDAsICpzZWFyY2gpOworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJbm9mYWlsX2FzcHJpbnRmKCZkaXJuYW1lLCAiJXMlcyVzLyVzIiwgYmFzZWRpciwKKwkJCQkJTU9EVUxFX0RJUiwga2VybmVsdmVyc2lvbiwgc2VhcmNoX3BhdGgpOworCQkJCWxlbiA9IHN0cmxlbihkaXJuYW1lKTsKKwkJCQkqc2VhcmNoID0gYWRkX3NlYXJjaChkaXJuYW1lLCBsZW4sICpzZWFyY2gpOworCQkJCWZyZWUoZGlybmFtZSk7CisJCQl9CisJCX0gZWxzZSBpZiAoc3RyZXEoY21kLCAib3ZlcnJpZGUiKSkgeworCQkJY2hhciAqcGF0aG5hbWUgPSBOVUxMLCAqdmVyc2lvbiwgKnN1YmRpcjsKKwkJCW1vZG5hbWUgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCXZlcnNpb24gPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCXN1YmRpciA9IHN0cnNlcF9za2lwc3BhY2UoJnB0ciwgIlx0ICIpOworCisJCQlpZiAoIXJlZ2V4X21hdGNoKGtlcm5lbHZlcnNpb24sIChjb25zdCBjaGFyICopdmVyc2lvbikpCisJCQkJY29udGludWU7CisKKwkJCW5vZmFpbF9hc3ByaW50ZigmcGF0aG5hbWUsICIlcyVzJXMvJXMvJXMua28iLCBiYXNlZGlyLAorCQkJCU1PRFVMRV9ESVIsIGtlcm5lbHZlcnNpb24sIHN1YmRpciwgbW9kbmFtZSk7CisKKwkJCSpvdmVycmlkZXMgPSBhZGRfb3ZlcnJpZGUocGF0aG5hbWUsICpvdmVycmlkZXMpOworCQkJZnJlZShwYXRobmFtZSk7CisJCX0gZWxzZSBpZiAoc3RyZXEoY21kLCAiaW5jbHVkZSIpKSB7CisJCQljaGFyICpuZXdmaWxlbmFtZTsKKworCQkJbmV3ZmlsZW5hbWUgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCWlmICghbmV3ZmlsZW5hbWUpIHsKKwkJCQlncmFtbWFyKGNtZCwgZmlsZW5hbWUsIGxpbmVudW0pOworCQkJfSBlbHNlIHsKKwkJCQl3YXJuKCJcImluY2x1ZGUgJXNcIiBpcyBkZXByZWNhdGVkLCAiCisJCQkJICAgICAicGxlYXNlIHVzZSAvZXRjL2RlcG1vZC5kXG4iLCBuZXdmaWxlbmFtZSk7CisJCQkJaWYgKHN0cnN0YXJ0cyhuZXdmaWxlbmFtZSwgIi9ldGMvZGVwbW9kLmQiKSkgeworCQkJCQl3YXJuKCJcImluY2x1ZGUgL2V0Yy9kZXBtb2QuZFwiIGlzICIKKwkJCQkJICAgICAidGhlIGRlZmF1bHQsIGlnbm9yZWRcbiIpOworCQkJCX0gZWxzZSB7CisJCQkJCWlmICghcGFyc2VfY29uZmlnX3NjYW4obmV3ZmlsZW5hbWUsIGJhc2VkaXIsCisJCQkJCQkJICAgICAgIGtlcm5lbHZlcnNpb24sCisJCQkJCQkJICAgICAgIHNlYXJjaCwgb3ZlcnJpZGVzKSkKKwkJCQkJd2FybigiRmFpbGVkIHRvIG9wZW4gaW5jbHVkZWQiCisJCQkJCSAgICAgIiBjb25maWcgZmlsZSAlczogJXNcbiIsCisJCQkJCSAgICAgbmV3ZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJfQorCQkJfQorCQl9IGVsc2UgaWYgKHN0cmVxKGNtZCwgIm1ha2VfbWFwX2ZpbGVzIikpIHsKKwkJCWNoYXIgKm9wdGlvbjsKKworCQkJb3B0aW9uID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCQlpZiAoIW9wdGlvbikKKwkJCQlncmFtbWFyKGNtZCwgZmlsZW5hbWUsIGxpbmVudW0pOworCQkJZWxzZSB7CisJCQkJaWYgKHN0cmVxKG9wdGlvbiwgInllcyIpKQorCQkJCQltYWtlX21hcF9maWxlcyA9IDE7CisJCQkJZWxzZSBpZiAoc3RyZXEob3B0aW9uLCAibm8iKSkKKwkJCQkJbWFrZV9tYXBfZmlsZXMgPSAwOworCQkJCWVsc2UKKwkJCQkJZ3JhbW1hcihjbWQsIGZpbGVuYW1lLCBsaW5lbnVtKTsKKwkJCX0KKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGdyYW1tYXIoY21kLCBmaWxlbmFtZSwgbGluZW51bSk7CisKKyAgICAgICAgICAgICAgICBmcmVlKGxpbmUpOworICAgICAgICB9CisgICAgICAgIGZjbG9zZShjZmlsZSk7CisgICAgICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50IHBhcnNlX2NvbmZpZ19zY2FuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJICAgICBjb25zdCBjaGFyICpiYXNlZGlyLAorCQkJICAgICBjb25zdCBjaGFyICprZXJuZWx2ZXJzaW9uLAorCQkJICAgICBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqKnNlYXJjaCwKKwkJCSAgICAgc3RydWN0IG1vZHVsZV9vdmVycmlkZXMgKipvdmVycmlkZXMpCit7CisJRElSICpkaXI7CisJaW50IHJldCA9IDA7CisKKwlkaXIgPSBvcGVuZGlyKGZpbGVuYW1lKTsKKwlpZiAoZGlyKSB7CisJCXN0cnVjdCBmaWxlX2VudHJ5IHsKKwkJCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKwkJCWNoYXIgbmFtZVtdOworCQl9OworCQlMSVNUX0hFQUQoZmlsZXNfbGlzdCk7CisJCXN0cnVjdCBmaWxlX2VudHJ5ICpmZSwgKmZlX3RtcDsKKwkJc3RydWN0IGRpcmVudCAqaTsKKworCQkvKiBzb3J0IGZpbGVzIGZyb20gZGlyZWN0b3J5IGludG8gbGlzdCAqLworCQl3aGlsZSAoKGkgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJCXNpemVfdCBsZW47CisKKwkJCWlmIChpLT5kX25hbWVbMF0gPT0gJy4nKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKCFjb25maWdfZmlsdGVyKGktPmRfbmFtZSkpCisJCQkJY29udGludWU7CisKKwkJCWxlbiA9IHN0cmxlbihpLT5kX25hbWUpOworCQkJaWYgKGxlbiA8IDYgfHwgc3RyY21wKCZpLT5kX25hbWVbbGVuLTVdLCAiLmNvbmYiKSAhPSAwKQorCQkJCXdhcm4oIkFsbCBjb25maWcgZmlsZXMgbmVlZCAuY29uZjogJXMvJXMsICIKKwkJCQkgICAgICJpdCB3aWxsIGJlIGlnbm9yZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cbiIsCisJCQkJICAgICBmaWxlbmFtZSwgaS0+ZF9uYW1lKTsKKwkJCWZlID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmlsZV9lbnRyeSkgKyBsZW4gKyAxKTsKKwkJCWlmIChmZSA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQkJc3RyY3B5KGZlLT5uYW1lLCBpLT5kX25hbWUpOworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShmZV90bXAsICZmaWxlc19saXN0LCBub2RlKQorCQkJCWlmIChzdHJjbXAoZmVfdG1wLT5uYW1lLCBmZS0+bmFtZSkgPj0gMCkKKwkJCQkJYnJlYWs7CisJCQlsaXN0X2FkZF90YWlsKCZmZS0+bm9kZSwgJmZlX3RtcC0+bm9kZSk7CisJCX0KKwkJY2xvc2VkaXIoZGlyKTsKKworCQkvKiBwYXJzZSBsaXN0IG9mIGZpbGVzICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmZSwgZmVfdG1wLCAmZmlsZXNfbGlzdCwgbm9kZSkgeworCQkJY2hhciAqY2ZnZmlsZTsKKworCQkJbm9mYWlsX2FzcHJpbnRmKCZjZmdmaWxlLCAiJXMvJXMiLCBmaWxlbmFtZSwgZmUtPm5hbWUpOworCQkJaWYgKCFwYXJzZV9jb25maWdfZmlsZShjZmdmaWxlLCBiYXNlZGlyLCBrZXJuZWx2ZXJzaW9uLAorCQkJCQkgICAgICAgc2VhcmNoLCBvdmVycmlkZXMpKQorCQkJCXdhcm4oIkZhaWxlZCB0byBvcGVuIGNvbmZpZyBmaWxlICIKKwkJCQkgICAgICIlczogJXNcbiIsIGZlLT5uYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJZnJlZShjZmdmaWxlKTsKKwkJCWxpc3RfZGVsKCZmZS0+bm9kZSk7CisJCQlmcmVlKGZlKTsKKwkJfQorCisJCXJldCA9IDE7CisJfSBlbHNlIHsKKwkJaWYgKHBhcnNlX2NvbmZpZ19maWxlKGZpbGVuYW1lLCBiYXNlZGlyLCBrZXJuZWx2ZXJzaW9uLCBzZWFyY2gsCisJCQkJICAgICAgb3ZlcnJpZGVzKSkKKwkJCXJldCA9IDE7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgcGFyc2VfdG9wbGV2ZWxfY29uZmlnKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJCSAgY29uc3QgY2hhciAqYmFzZWRpciwKKwkJCQkgIGNvbnN0IGNoYXIgKmtlcm5lbHZlcnNpb24sCisJCQkJICBzdHJ1Y3QgbW9kdWxlX3NlYXJjaCAqKnNlYXJjaCwKKwkJCQkgIHN0cnVjdCBtb2R1bGVfb3ZlcnJpZGVzICoqb3ZlcnJpZGVzKQoreworCWlmIChmaWxlbmFtZSkgeworCQlpZiAoIXBhcnNlX2NvbmZpZ19zY2FuKGZpbGVuYW1lLCBiYXNlZGlyLCBrZXJuZWx2ZXJzaW9uLCBzZWFyY2gsCisJCQkJIG92ZXJyaWRlcykpCisJCQlmYXRhbCgiRmFpbGVkIHRvIG9wZW4gY29uZmlnIGZpbGUgJXM6ICVzXG4iLAorCQkJICAgICAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCXJldHVybjsKKwl9CisKKwkvKiBkZXByZWNhdGVkIGNvbmZpZyBmaWxlICovCisJaWYgKHBhcnNlX2NvbmZpZ19maWxlKCIvZXRjL2RlcG1vZC5jb25mIiwgYmFzZWRpciwga2VybmVsdmVyc2lvbiwKKwkJCSAgICAgIHNlYXJjaCwgb3ZlcnJpZGVzKSA+IDApCisJCXdhcm4oIkRlcHJlY2F0ZWQgY29uZmlnIGZpbGUgL2V0Yy9kZXBtb2QuY29uZiwgIgorCQkgICAgICAiYWxsIGNvbmZpZyBmaWxlcyBiZWxvbmcgaW50byAvZXRjL2RlcG1vZC5kLy5cbiIpOworCisJLyogZGVmYXVsdCBjb25maWcgKi8KKwlwYXJzZV9jb25maWdfc2NhbigiL2V0Yy9kZXBtb2QuZCIsIGJhc2VkaXIsIGtlcm5lbHZlcnNpb24sCisJCQkgIHNlYXJjaCwgb3ZlcnJpZGVzKTsKK30KKworLyogTG9jYWwgdG8gbWFpbiwgYnV0IG5vdCBmcmVlZCBvbiBleGl0LiAgS2VlcCB2YWxncmluZCBxdWlldC4gKi8KK3N0cnVjdCBtb2R1bGUgKmxpc3QgPSBOVUxMOworc3RydWN0IG1vZHVsZV9zZWFyY2ggKnNlYXJjaCA9IE5VTEw7CitzdHJ1Y3QgbW9kdWxlX292ZXJyaWRlcyAqb3ZlcnJpZGVzID0gTlVMTDsKKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwlpbnQgb3B0LCBhbGwgPSAwLCBtYXliZV9hbGwgPSAwLCBkb2luZ19zdGRvdXQgPSAwOworCWNoYXIgKmJhc2VkaXIgPSAiIiwgKmRpcm5hbWUsICp2ZXJzaW9uOworCWNoYXIgKnN5c3RlbV9tYXAgPSBOVUxMLCAqbW9kdWxlX3N5bXZlcnMgPSBOVUxMOworCWludCBpOworCWNvbnN0IGNoYXIgKmNvbmZpZyA9IE5VTEw7CisKKwlpZiAobmF0aXZlX2VuZGlhbm5lc3MoKSA9PSAwKQorCQlhYm9ydCgpOworCisJd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYUFiOkM6RTpGOmV1cXJ2bmhWd20iLCBvcHRpb25zLCBOVUxMKSkKKwkgICAgICAgIT0gLTEpIHsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAnYSc6CisJCQlhbGwgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ0EnOgorCQkJbWF5YmVfYWxsID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdiJzoKKwkJCWJhc2VkaXIgPSBvcHRhcmc7CisJCQlza2lwY2hhcnMgPSBzdHJsZW4oYmFzZWRpcik7CisJCQlicmVhazsKKwkJY2FzZSAnQyc6CisJCQljb25maWcgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnRSc6CisJCQltb2R1bGVfc3ltdmVycyA9IG9wdGFyZzsKKwkJCWNoZWNrX3N5bXZlcnMgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ0YnOgorCQkJc3lzdGVtX21hcCA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdlJzoKKwkJCXByaW50X3Vua25vd24gPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3UnOgorCQljYXNlICdxJzoKKwkJY2FzZSAncic6CisJCQlicmVhazsKKwkJY2FzZSAndic6CisJCQl2ZXJib3NlID0gMTsKKwkJCWJyZWFrOworCQljYXNlICduJzoKKwkJCWRvaW5nX3N0ZG91dCA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnaCc6CisJCQlwcmludF91c2FnZShhcmd2WzBdKTsKKwkJCWV4aXQoMCk7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CisJCQlwcmludGYoIiVzICVzXG4iLCBQQUNLQUdFLCBWRVJTSU9OKTsKKwkJCWV4aXQoMCk7CisJCWNhc2UgJ3cnOgorCQkJd2Fybl9kdXBzID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdtJzoKKwkJCWZvcmNlX21hcF9maWxlcyA9IDE7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50X3VzYWdlKGFyZ3ZbMF0pOworCQkJZXhpdCgxKTsKKwkJfQorCX0KKworCWlmIChtb2R1bGVfc3ltdmVycykKKwkJbG9hZF9tb2R1bGVfc3ltdmVycyhtb2R1bGVfc3ltdmVycyk7CisJZWxzZSBpZiAoc3lzdGVtX21hcCkKKwkJbG9hZF9zeXN0ZW1fbWFwKHN5c3RlbV9tYXApOworCWVsc2UgaWYgKHByaW50X3Vua25vd24pIHsKKwkJd2FybigiLWUgbmVlZHMgLUUgb3IgLUZcbiIpOworCQlwcmludF91bmtub3duID0gMDsKKwl9CisKKwkvKiBUaGV5IGNhbiBzcGVjaWZ5IHRoZSB2ZXJzaW9uIG5ha2VkIG9uIHRoZSBjb21tYW5kIGxpbmUgKi8KKwlpZiAob3B0aW5kIDwgYXJnYyAmJiBpc192ZXJzaW9uX251bWJlcihhcmd2W29wdGluZF0pKSB7CisJCXZlcnNpb24gPSBOT0ZBSUwoc3RyZHVwKGFyZ3Zbb3B0aW5kXSkpOworCQlvcHRpbmQrKzsKKwl9IGVsc2UgeworCQlzdHJ1Y3QgdXRzbmFtZSBidWY7CisJCXVuYW1lKCZidWYpOworCQl2ZXJzaW9uID0gTk9GQUlMKHN0cmR1cChidWYucmVsZWFzZSkpOworCX0KKworCS8qIENoZWNrIGZvciBvbGQgdmVyc2lvbi4gKi8KKwlpZiAob2xkX21vZHVsZV92ZXJzaW9uKHZlcnNpb24pKSB7CisJCWZwcmludGYoc3RkZXJyLCAiS2VybmVsIHZlcnNpb24gJXMgcmVxdWlyZXMgb2xkIGRlcG1vZFxuIiwKKwkJCXZlcnNpb24pOworCQlleGl0KDIpOworCX0KKworCS8qIERlcG1vZCAtYSBieSBkZWZhdWx0IGlmIG5vIG5hbWVzLiAqLworCWlmIChvcHRpbmQgPT0gYXJnYykKKwkJYWxsID0gMTsKKworCW5vZmFpbF9hc3ByaW50ZigmZGlybmFtZSwgIiVzJXMlcyIsIGJhc2VkaXIsIE1PRFVMRV9ESVIsIHZlcnNpb24pOworCisJaWYgKG1heWJlX2FsbCkgeworCQlpZiAoIWRvaW5nX3N0ZG91dCAmJiAhZGVwZmlsZV9vdXRfb2ZfZGF0ZShkaXJuYW1lKSkKKwkJCWV4aXQoMCk7CisJCWFsbCA9IDE7CisJfQorCisJcGFyc2VfdG9wbGV2ZWxfY29uZmlnKGNvbmZpZywgYmFzZWRpciwgdmVyc2lvbiwgJnNlYXJjaCwgJm92ZXJyaWRlcyk7CisKKwkvKiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhZGQgInVwZGF0ZXMiIHRvIHRoZSBoZWFkIG9mIHRoZSBzZWFyY2gKKwkgKiBsaXN0IGhlcmUuIEJ1dCBvbmx5IGlmIHRoZXJlIHdhcyBubyAic2VhcmNoIiBvcHRpb24gc3BlY2lmaWVkLgorCSAqLworCWlmICghc2VhcmNoKSB7CisJCWNoYXIgKmRpcm5hbWU7CisJCXNpemVfdCBsZW47CisKKwkJbm9mYWlsX2FzcHJpbnRmKCZkaXJuYW1lLCAiJXMlcyVzL3VwZGF0ZXMiLCBiYXNlZGlyLAorCQkJCU1PRFVMRV9ESVIsIHZlcnNpb24pOworCQlsZW4gPSBzdHJsZW4oZGlybmFtZSk7CisJCXNlYXJjaCA9IGFkZF9zZWFyY2goZGlybmFtZSwgbGVuLCBzZWFyY2gpOworCX0KKwlpZiAoIWFsbCkgeworCQkvKiBEbyBjb21tYW5kIGxpbmUgYXJncy4gKi8KKwkJZm9yIChvcHQgPSBvcHRpbmQ7IG9wdCA8IGFyZ2M7IG9wdCsrKSB7CisJCQlzdHJ1Y3QgbW9kdWxlICpuZXc7CisKKwkJCWlmIChhcmd2W29wdF1bMF0gIT0gJy8nKQorCQkJCWZhdGFsKCJtb2R1bGVzIG11c3QgYmUgc3BlY2lmaWVkIHVzaW5nIGFic29sdXRlIHBhdGhzLlxuIgorCQkJCQkiXCIlc1wiIGlzIGEgcmVsYXRpdmUgcGF0aFxuIiwgYXJndltvcHRdKTsKKworCQkJbmV3ID0gZ3JhYl9tb2R1bGUoTlVMTCwgYXJndltvcHRdKTsKKwkJCWlmICghbmV3KSB7CisJCQkJLyogY21kLWxpbmUgc3BlY2lmaWVkIG1vZHVsZXMgbXVzdCBleGlzdCAqLworCQkJCWZhdGFsKCJncmFiX21vZHVsZSgpIGZhaWxlZCBmb3IgbW9kdWxlICVzXG4iLCBhcmd2W29wdF0pOworCQkJfQorCQkJbmV3LT5uZXh0ID0gbGlzdDsKKwkJCWxpc3QgPSBuZXc7CisJCX0KKwl9IGVsc2UgeworCQlsaXN0ID0gZ3JhYl9iYXNlZGlyKGRpcm5hbWUsc2VhcmNoLG92ZXJyaWRlcyk7CisJfQorCWxpc3QgPSBzb3J0X21vZHVsZXMoZGlybmFtZSxsaXN0KTsKKwlsaXN0ID0gcGFyc2VfbW9kdWxlcyhsaXN0KTsKKworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoZGVwZmlsZXMpL3NpemVvZihkZXBmaWxlc1swXSk7IGkrKykgeworCQlGSUxFICpvdXQ7CisJCWludCByZXM7CisJCXN0cnVjdCBkZXBmaWxlICpkID0gJmRlcGZpbGVzW2ldOworCQljaGFyIGRlcG5hbWVbc3RybGVuKGRpcm5hbWUpICsgMSArIHN0cmxlbihkLT5uYW1lKSArIDFdOworCQljaGFyIHRtcG5hbWVbc3RybGVuKGRpcm5hbWUpICsgMSArIHN0cmxlbihkLT5uYW1lKSArCisJCQkJCQlzdHJsZW4oIi50ZW1wIikgKyAxXTsKKworCQlpZiAoZC0+bWFwX2ZpbGUgJiYgIW1ha2VfbWFwX2ZpbGVzICYmICFmb3JjZV9tYXBfZmlsZXMpCisJCQljb250aW51ZTsKKworCQlzcHJpbnRmKGRlcG5hbWUsICIlcy8lcyIsIGRpcm5hbWUsIGQtPm5hbWUpOworCQlzcHJpbnRmKHRtcG5hbWUsICIlcy8lcy50ZW1wIiwgZGlybmFtZSwgZC0+bmFtZSk7CisJCWlmICghZG9pbmdfc3Rkb3V0KSB7CisJCQlvdXQgPSBmb3Blbih0bXBuYW1lLCAidyIpOworCQkJaWYgKCFvdXQpCisJCQkJZmF0YWwoIkNvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0aW5nOiAlc1xuIiwKKwkJCQkJdG1wbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJfSBlbHNlIHsKKwkJCW91dCA9IHN0ZG91dDsKKwkJCWlmIChlbmRzX2luKGRlcG5hbWUsICIuYmluIikpCisJCQkJY29udGludWU7CisJCX0KKwkJcmVzID0gZC0+ZnVuYyhsaXN0LCBvdXQsIGRpcm5hbWUpOworCQlpZiAoZG9pbmdfc3Rkb3V0KQorCQkJY29udGludWU7CisJCWZjbG9zZShvdXQpOworCQlpZiAocmVzKSB7CisJCQlpZiAocmVuYW1lKHRtcG5hbWUsIGRlcG5hbWUpIDwgMCkKKwkJCQlmYXRhbCgiQ291bGQgbm90IHJlbmFtZSAlcyBpbnRvICVzOiAlc1xuIiwKKwkJCQkJdG1wbmFtZSwgZGVwbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJfSBlbHNlIHsKKwkJCWlmICh1bmxpbmsodG1wbmFtZSkgPCAwKQorCQkJCXdhcm4oIkNvdWxkIG5vdCBkZWxldGUgJXM6ICVzXG4iLAorCQkJCQl0bXBuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQl9CisJfQorCisJZnJlZShkaXJuYW1lKTsKKwlmcmVlKHZlcnNpb24pOworCQorCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RlcG1vZC5jb25mLjUgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZGVwbW9kLmNvbmYuNQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTk0Y2UwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RlcG1vZC5jb25mLjUKQEAgLTAsMCArMSw1OCBAQAorLlxcIiBhdXRvLWdlbmVyYXRlZCBieSBkb2Nib29rMm1hbi1zcGVjICRSZXZpc2lvbjogMS4yICQKKy5USCAiREVQTU9ELkNPTkYiICI1IiAiMjAxMC0wMy0wMSIgIiIgIiIKKy5TSCBOQU1FCitkZXBtb2QuY29uZiwgZGVwbW9kLmQgXC0gQ29uZmlndXJhdGlvbiBmaWxlL2RpcmVjdG9yeSBmb3IgZGVwbW9kCisuU0ggIkRFU0NSSVBUSU9OIgorLlBQCitUaGUgb3JkZXIgaW4gd2hpY2ggbW9kdWxlcyBhcmUgcHJvY2Vzc2VkIGJ5IHRoZQorXGZCZGVwbW9kXGZSIGNvbW1hbmQgY2FuIGJlIGFsdGVyZWQgb24gYSBnbG9iYWwgb3IKK3Blci1tb2R1bGUgYmFzaXMuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1bCBpbiBjYXNlcyB3aGVyZSBidWlsdC1pbgora2VybmVsIG1vZHVsZXMgYXJlIGNvbXBsZW1lbnRlZCBieSBjdXN0b20gYnVpbHQgdmVyc2lvbnMgb2YgdGhlCitzYW1lIGFuZCB0aGUgdXNlciB3aXNoZXMgdG8gYWZmZWN0IHRoZSBwcmlvcml0eSBvZiBwcm9jZXNzaW5nIGluCitvcmRlciB0byBvdmVycmlkZSB0aGUgbW9kdWxlIHZlcnNpb24gc3VwcGxpZWQgYnkgdGhlIGtlcm5lbC4KKy5QUAorVGhlIGZvcm1hdCBvZiBcZklkZXBtb2QuY29uZlxmUiBhbmQgZmlsZXMgdW5kZXIgXGZJZGVwbW9kLmRcZlIgaXMgc2ltcGxlOiBvbmUKK2NvbW1hbmQgcGVyIGxpbmUsIHdpdGggYmxhbmsgbGluZXMgYW5kIGxpbmVzIHN0YXJ0aW5nIHdpdGggJyMnCitpZ25vcmVkICh1c2VmdWwgZm9yIGFkZGluZyBjb21tZW50cykuIEEgJ1xcJyBhdCB0aGUgZW5kIG9mIGEgbGluZQorY2F1c2VzIGl0IHRvIGNvbnRpbnVlIG9uIHRoZSBuZXh0IGxpbmUsIHdoaWNoIG1ha2VzIHRoZSBmaWxlIGEKK2JpdCBuZWF0ZXIuCisuU0ggIkNPTU1BTkRTIgorLlRQCitcZkJzZWFyY2ggXGZJc3ViZGlyZWN0b3J5Li4uXGZCXGZSCitUaGlzIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgb3JkZXIgaW4gd2hpY2ggL2xpYi9tb2R1bGVzCisob3Igb3RoZXIgY29uZmlndXJlZCBtb2R1bGUgbG9jYXRpb24pIHN1YmRpcmVjdG9yaWVzIHdpbGwKK2JlIHByb2Nlc3NlZCBieSBcZkJkZXBtb2RcZlJcJi4gRGlyZWN0b3JpZXMgYXJlCitsaXN0ZWQgaW4gb3JkZXIsIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZ2l2ZW4gdG8gdGhlCitmaXJzdCBsaXN0ZWQgZGlyZWN0b3J5IGFuZCB0aGUgbG93ZXN0IHByaW9yaXR5IGdpdmVuIHRvIHRoZSBsYXN0CitkaXJlY3RvcnkgbGlzdGVkLiBUaGUgc3BlY2lhbCBrZXl3b3JkIFxmQmJ1aWx0LWluXGZSIAorcmVmZXJzIHRvIHRoZSBzdGFuZGFyZCBtb2R1bGUgZGlyZWN0b3JpZXMgaW5zdGFsbGVkIGJ5IHRoZSBrZXJuZWwuCisKK0J5IGRlZmF1bHQsIGRlcG1vZCB3aWxsIGdpdmUgYSBoaWdoZXIgcHJpb3JpdHkgdG8gCithIGRpcmVjdG9yeSB3aXRoIHRoZSBuYW1lIFxmQnVwZGF0ZXNcZlIKK3VzaW5nIHRoaXMgYnVpbHQtaW4gc2VhcmNoIHN0cmluZzogInVwZGF0ZXMgYnVpbHQtaW4iCitidXQgbW9yZSBjb21wbGV4IGFycmFuZ2VtZW50cyBhcmUgcG9zc2libGUgYW5kIGFyZQordXNlZCBpbiBzZXZlcmFsIHBvcHVsYXIgZGlzdHJpYnV0aW9ucy4KKy5UUAorXGZCb3ZlcnJpZGUgXGZJbW9kdWxlbmFtZVxmQiBcZklrZXJuZWx2ZXJzaW9uXGZCIFxmSW1vZHVsZXN1YmRpcmVjdG9yeVxmQlxmUgorVGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gb3ZlcnJpZGUgd2hpY2ggdmVyc2lvbiBvZiBhCitzcGVjaWZpYyBtb2R1bGUgd2lsbCBiZSB1c2VkIHdoZW4gbW9yZSB0aGFuIG9uZSBtb2R1bGUKK3NoYXJpbmcgdGhlIHNhbWUgbmFtZSBpcyBwcm9jZXNzZWQgYnkgdGhlCitcZkJkZXBtb2RcZlIgY29tbWFuZC4gSXQgaXMgcG9zc2libGUgdG8KK3NwZWNpZnkgb25lIGtlcm5lbCBvciBhbGwga2VybmVscyB1c2luZyB0aGUgKiB3aWxkY2FyZC4KK1xmSW1vZHVsZXN1YmRpcmVjdG9yeVxmUiBpcyB0aGUKK25hbWUgb2YgdGhlIHN1YmRpcmVjdG9yeSB1bmRlciAvbGliL21vZHVsZXMgKG9yIG90aGVyCittb2R1bGUgbG9jYXRpb24pIHdoZXJlIHRoZSB0YXJnZXQgbW9kdWxlIGlzIGluc3RhbGxlZC4KKworRm9yIGV4YW1wbGUsIGl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoZSBwcmlvcml0eSBvZgorYW4gdXBkYXRlZCB0ZXN0IG1vZHVsZSBjYWxsZWQgXGZCa21vZFxmUiBieQorc3BlY2lmeWluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6ICJvdmVycmlkZSBrbW9kICogZXh0cmEiLgorVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGFueSBtYXRjaGluZyBtb2R1bGUgbmFtZSBpbnN0YWxsZWQKK3VuZGVyIHRoZSBcZkJleHRyYVxmUiBzdWJkaXJlY3Rvcnkgd2l0aGluCisvbGliL21vZHVsZXMgKG9yIG90aGVyIG1vZHVsZSBsb2NhdGlvbikgd2lsbCB0YWtlIHByaW9yaXR5CitvdmVyIGFueSBsaWtlbmFtZWQgbW9kdWxlIGFscmVhZHkgcHJvdmlkZWQgYnkgdGhlIGtlcm5lbC4KKy5TSCAiQ09QWVJJR0hUIgorLlBQCitUaGlzIG1hbnVhbCBwYWdlIENvcHlyaWdodCAyMDA2LTIwMTAsIEpvbiBNYXN0ZXJzLCBSZWQgSGF0LCBJbmMuCisuU0ggIlNFRSBBTFNPIgorLlBQCitcZkJkZXBtb2RcZlIoOCkKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBtb2QuaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kZXBtb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Njc4MjQxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RlcG1vZC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBkZXBtb2QuaCAtIHByb3RvdHlwZXMgZm9yIHRoZSBkZXBtb2QgdXRpbGl0eQorICovCisKKyNpZm5kZWYgTU9ESU5JVFRPT0xTX0RFUE1PRF9ICisjZGVmaW5lIE1PRElOSVRUT09MU19ERVBNT0RfSAorI2luY2x1ZGUgImxpc3QuaCIKKyNpbmNsdWRlICJlbGZvcHMuaCIKKworc3RydWN0IG1vZHVsZTsKKworc3RydWN0IG1vZHVsZQoreworCS8qIE5leHQgbW9kdWxlIGluIGxpc3Qgb2YgYWxsIG1vZHVsZXMgKi8KKwlzdHJ1Y3QgbW9kdWxlICpuZXh0OworCisJLyogRGVwZW5kZW5jaWVzOiBmaWxsZWQgaW4gYnkgb3BzLT5jYWxjdWxhdGVfZGVwcygpICovCisJdW5zaWduZWQgaW50IG51bV9kZXBzOworCXN0cnVjdCBtb2R1bGUgKipkZXBzOworCisJLyogU2V0IHdoaWxlIHdlIGFyZSB0cmF2ZXJzaW5nIGRlcGVuZGVuY2llcyAqLworCXN0cnVjdCBsaXN0X2hlYWQgZGVwX2xpc3Q7CisKKwkvKiBMaW5lIG51bWJlciBpbiBtb2R1bGVzLm9yZGVyIChvciBJTkRFWF9QUklPUklUWV9NSU4pICovCisJdW5zaWduZWQgaW50IG9yZGVyOworCisJLyogVGFibGVzIGV4dHJhY3RlZCBmcm9tIG1vZHVsZSBieSBvcHMtPmZldGNoX3RhYmxlcygpLiAqLworCXN0cnVjdCBtb2R1bGVfdGFibGVzIHRhYmxlczsKKworCXN0cnVjdCBlbGZfZmlsZSAqZmlsZTsKKworCWNoYXIgKmJhc2VuYW1lOyAvKiBwb2ludHMgaW50byBwYXRobmFtZSAqLworCWNoYXIgcGF0aG5hbWVbMF07Cit9OworCisjZW5kaWYgLyogTU9ESU5JVFRPT0xTX0RFUE1PRF9IICovCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL2RlcG1vZC5jb25mLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL2RlcG1vZC5jb25mLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJjMzk5YgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvZGVwbW9kLmNvbmYuc2dtbApAQCAtMCwwICsxLDEzMiBAQAorPCFkb2N0eXBlIHJlZmVudHJ5IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFY0LjEvL0VOIiBbCisgIDwhRU5USVRZIGRlYmlhbiAgIjxwcm9kdWN0bmFtZT5EZWJpYW4gR05VL0xpbnV4PC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBkb2Nib29rICI8cHJvZHVjdG5hbWU+RG9jQm9vazwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgc2dtbCAgICAiPGFiYnJldj5TR01MPC9hYmJyZXY+Ij4KK10+CisKKzwhLS0gU3RvbGVuIGZyb20gbWFudWFsIHBhZ2UgZm9yIGRvY2Jvb2stdG8tbWFuLCBEb2NCb29rIHNvdXJjZSBmaWxlCisgICAgIChDKSAxOTk5IFcuIEJvcmdlcnQgZGViYWNsZUBkZWJpYW4ub3JnCisKKyAgICAgJElkOiBkb2Nib29rLXRvLW1hbi5zZ21sLHYgMS44IDIwMDIvMDQvMjcgMTU6Mjg6MDIgZGViYWNsZSBFeHAgJCAtLT4KKworPHJlZmVudHJ5PgorICA8cmVmZW50cnlpbmZvPgorICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmpjbUBqb25tYXN0ZXJzLm9yZzwvZW1haWw+CisgICAgPC9hZGRyZXNzPgorICAgIDxhdXRob3I+CisgICAgICA8Zmlyc3RuYW1lPkpvbjwvZmlyc3RuYW1lPgorICAgICAgPHN1cm5hbWU+TWFzdGVyczwvc3VybmFtZT4KKyAgICA8L2F1dGhvcj4KKyAgICA8ZGF0ZT4yMDEwLTAzLTAxPC9kYXRlPgorICA8L3JlZmVudHJ5aW5mbz4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+ZGVwbW9kLmQ8L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgICAgPHJlZmVudHJ5dGl0bGU+ZGVwbW9kLmNvbmY8L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+ZGVwbW9kLmNvbmY8L3JlZm5hbWU+PHJlZm5hbWU+ZGVwbW9kLmQ8L3JlZm5hbWU+IDxyZWZwdXJwb3NlPkNvbmZpZ3VyYXRpb24gZmlsZS9kaXJlY3RvcnkgZm9yIGRlcG1vZDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRFU0NSSVBUSU9OPC90aXRsZT4KKworICAgIDxwYXJhPlRoZSBvcmRlciBpbiB3aGljaCBtb2R1bGVzIGFyZSBwcm9jZXNzZWQgYnkgdGhlCisgICAgICA8Y29tbWFuZD5kZXBtb2Q8L2NvbW1hbmQ+IGNvbW1hbmQgY2FuIGJlIGFsdGVyZWQgb24gYSBnbG9iYWwgb3IKKyAgICAgIHBlci1tb2R1bGUgYmFzaXMuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWZ1bCBpbiBjYXNlcyB3aGVyZSBidWlsdC1pbgorICAgICAga2VybmVsIG1vZHVsZXMgYXJlIGNvbXBsZW1lbnRlZCBieSBjdXN0b20gYnVpbHQgdmVyc2lvbnMgb2YgdGhlCisgICAgICBzYW1lIGFuZCB0aGUgdXNlciB3aXNoZXMgdG8gYWZmZWN0IHRoZSBwcmlvcml0eSBvZiBwcm9jZXNzaW5nIGluCisgICAgICBvcmRlciB0byBvdmVycmlkZSB0aGUgbW9kdWxlIHZlcnNpb24gc3VwcGxpZWQgYnkgdGhlIGtlcm5lbC4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgZm9ybWF0IG9mIDxmaWxlbmFtZT5kZXBtb2QuY29uZjwvZmlsZW5hbWU+IGFuZCBmaWxlcyB1bmRlciA8ZmlsZW5hbWU+ZGVwbW9kLmQ8L2ZpbGVuYW1lPiBpcyBzaW1wbGU6IG9uZQorICAgICAgY29tbWFuZCBwZXIgbGluZSwgd2l0aCBibGFuayBsaW5lcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnIycKKyAgICAgIGlnbm9yZWQgKHVzZWZ1bCBmb3IgYWRkaW5nIGNvbW1lbnRzKS4gIEEgJ1wnIGF0IHRoZSBlbmQgb2YgYSBsaW5lCisgICAgICBjYXVzZXMgaXQgdG8gY29udGludWUgb24gdGhlIG5leHQgbGluZSwgd2hpY2ggbWFrZXMgdGhlIGZpbGUgYQorICAgICAgYml0IG5lYXRlci4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09NTUFORFM8L3RpdGxlPgorICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT5zZWFyY2ggPHJlcGxhY2VhYmxlPnN1YmRpcmVjdG9yeS4uLjwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4KKwkgICAgVGhpcyBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG9yZGVyIGluIHdoaWNoIC9saWIvbW9kdWxlcworCSAgICAob3Igb3RoZXIgY29uZmlndXJlZCBtb2R1bGUgbG9jYXRpb24pIHN1YmRpcmVjdG9yaWVzIHdpbGwKKwkgICAgYmUgcHJvY2Vzc2VkIGJ5IDxjb21tYW5kPmRlcG1vZDwvY29tbWFuZD4uIERpcmVjdG9yaWVzIGFyZQorCSAgICBsaXN0ZWQgaW4gb3JkZXIsIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgZ2l2ZW4gdG8gdGhlCisJICAgIGZpcnN0IGxpc3RlZCBkaXJlY3RvcnkgYW5kIHRoZSBsb3dlc3QgcHJpb3JpdHkgZ2l2ZW4gdG8gdGhlIGxhc3QKKwkgICAgZGlyZWN0b3J5IGxpc3RlZC4gVGhlIHNwZWNpYWwga2V5d29yZCA8Y29tbWFuZD5idWlsdC1pbjwvY29tbWFuZD4gCisJICAgIHJlZmVycyB0byB0aGUgc3RhbmRhcmQgbW9kdWxlIGRpcmVjdG9yaWVzIGluc3RhbGxlZCBieSB0aGUga2VybmVsLgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisJICAgIEJ5IGRlZmF1bHQsIGRlcG1vZCB3aWxsIGdpdmUgYSBoaWdoZXIgcHJpb3JpdHkgdG8gCisJICAgIGEgZGlyZWN0b3J5IHdpdGggdGhlIG5hbWUgPGNvbW1hbmQ+dXBkYXRlczwvY29tbWFuZD4KKwkgICAgdXNpbmcgdGhpcyBidWlsdC1pbiBzZWFyY2ggc3RyaW5nOiAidXBkYXRlcyBidWlsdC1pbiIKKwkgICAgYnV0IG1vcmUgY29tcGxleCBhcnJhbmdlbWVudHMgYXJlIHBvc3NpYmxlIGFuZCBhcmUKKwkgICAgdXNlZCBpbiBzZXZlcmFsIHBvcHVsYXIgZGlzdHJpYnV0aW9ucy4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+b3ZlcnJpZGUgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+a2VybmVsdmVyc2lvbjwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5tb2R1bGVzdWJkaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisJICAgIFRoaXMgY29tbWFuZCBhbGxvd3MgeW91IHRvIG92ZXJyaWRlIHdoaWNoIHZlcnNpb24gb2YgYQorCSAgICBzcGVjaWZpYyBtb2R1bGUgd2lsbCBiZSB1c2VkIHdoZW4gbW9yZSB0aGFuIG9uZSBtb2R1bGUKKwkgICAgc2hhcmluZyB0aGUgc2FtZSBuYW1lIGlzIHByb2Nlc3NlZCBieSB0aGUKKwkgICAgPGNvbW1hbmQ+ZGVwbW9kPC9jb21tYW5kPiBjb21tYW5kLiBJdCBpcyBwb3NzaWJsZSB0bworCSAgICBzcGVjaWZ5IG9uZSBrZXJuZWwgb3IgYWxsIGtlcm5lbHMgdXNpbmcgdGhlICogd2lsZGNhcmQuCisJICAgIDxyZXBsYWNlYWJsZT5tb2R1bGVzdWJkaXJlY3Rvcnk8L3JlcGxhY2VhYmxlPiBpcyB0aGUKKwkgICAgbmFtZSBvZiB0aGUgc3ViZGlyZWN0b3J5IHVuZGVyIC9saWIvbW9kdWxlcyAob3Igb3RoZXIKKwkgICAgbW9kdWxlIGxvY2F0aW9uKSB3aGVyZSB0aGUgdGFyZ2V0IG1vZHVsZSBpcyBpbnN0YWxsZWQuCisJICA8L3BhcmE+CisJICA8cGFyYT4KKwkgICAgRm9yIGV4YW1wbGUsIGl0IGlzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoZSBwcmlvcml0eSBvZgorCSAgICBhbiB1cGRhdGVkIHRlc3QgbW9kdWxlIGNhbGxlZCA8Y29tbWFuZD5rbW9kPC9jb21tYW5kPiBieQorCSAgICBzcGVjaWZ5aW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZDogIm92ZXJyaWRlIGttb2QgKiBleHRyYSIuCisJICAgIFRoaXMgd2lsbCBlbnN1cmUgdGhhdCBhbnkgbWF0Y2hpbmcgbW9kdWxlIG5hbWUgaW5zdGFsbGVkCisJICAgIHVuZGVyIHRoZSA8Y29tbWFuZD5leHRyYTwvY29tbWFuZD4gc3ViZGlyZWN0b3J5IHdpdGhpbgorCSAgICAvbGliL21vZHVsZXMgKG9yIG90aGVyIG1vZHVsZSBsb2NhdGlvbikgd2lsbCB0YWtlIHByaW9yaXR5CisJICAgIG92ZXIgYW55IGxpa2VuYW1lZCBtb2R1bGUgYWxyZWFkeSBwcm92aWRlZCBieSB0aGUga2VybmVsLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09QWVJJR0hUPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgbWFudWFsIHBhZ2UgQ29weXJpZ2h0IDIwMDYtMjAxMCwgSm9uIE1hc3RlcnMsIFJlZCBIYXQsIEluYy4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgICAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+CisgICAgPHBhcmE+PGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5kZXBtb2Q8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgorCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHNnbWwKK3NnbWwtb21pdHRhZzp0CitzZ21sLXNob3J0dGFnOnQKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1kZWZhdWx0LWR0ZC1maWxlOm5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL2RlcG1vZC5zZ21sIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9kZXBtb2Quc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDM5MDU2Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9kZXBtb2Quc2dtbApAQCAtMCwwICsxLDI1MiBAQAorPCFkb2N0eXBlIHJlZmVudHJ5IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFY0LjEvL0VOIiBbCisgIDwhRU5USVRZIGRlYmlhbiAgIjxwcm9kdWN0bmFtZT5EZWJpYW4gR05VL0xpbnV4PC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBkb2Nib29rICI8cHJvZHVjdG5hbWU+RG9jQm9vazwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgc2dtbCAgICAiPGFiYnJldj5TR01MPC9hYmJyZXY+Ij4KK10+CisKKzwhLS0gU3RvbGVuIGZyb20gbWFudWFsIHBhZ2UgZm9yIGRvY2Jvb2stdG8tbWFuLCBEb2NCb29rIHNvdXJjZSBmaWxlCisgICAgIChDKSAxOTk5IFcuIEJvcmdlcnQgZGViYWNsZUBkZWJpYW4ub3JnCisKKyAgICAgJElkOiBkb2Nib29rLXRvLW1hbi5zZ21sLHYgMS44IDIwMDIvMDQvMjcgMTU6Mjg6MDIgZGViYWNsZSBFeHAgJCAtLT4KKworPHJlZmVudHJ5PgorICA8cmVmZW50cnlpbmZvPgorICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmpjbUBqb25tYXN0ZXJzLm9yZzwvZW1haWw+CisgICAgPC9hZGRyZXNzPgorICAgIDxhdXRob3I+CisgICAgICA8Zmlyc3RuYW1lPkpvbjwvZmlyc3RuYW1lPgorICAgICAgPHN1cm5hbWU+TWFzdGVyczwvc3VybmFtZT4KKyAgICA8L2F1dGhvcj4KKyAgICA8ZGF0ZT4yMDEwLTAzLTAxPC9kYXRlPgorICA8L3JlZmVudHJ5aW5mbz4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+ZGVwbW9kPC9yZWZlbnRyeXRpdGxlPgorICAgIDxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICA8L3JlZm1ldGE+CisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPmRlcG1vZDwvcmVmbmFtZT4gPHJlZnB1cnBvc2U+cHJvZ3JhbSB0byBnZW5lcmF0ZSA8ZmlsZW5hbWU+bW9kdWxlcy5kZXA8L2ZpbGVuYW1lPiBhbmQgbWFwIGZpbGVzLjwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGNtZHN5bm9wc2lzPgorICAgICAgPGNvbW1hbmQ+ZGVwbW9kPC9jb21tYW5kPgorICAgICAgPGFyZz48b3B0aW9uPi1iIDxyZXBsYWNlYWJsZT5iYXNlZGlyPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tZTwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi1GIDxyZXBsYWNlYWJsZT5TeXN0ZW0ubWFwPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tbjwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi12PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi1BPC9vcHRpb24+PC9hcmc+CisgICAgPC9jbWRzeW5vcHNpcz4KKyAgICA8Y21kc3lub3BzaXM+CisgICAgICA8Y29tbWFuZD5kZXBtb2Q8L2NvbW1hbmQ+CisgICAgICA8YXJnPjxvcHRpb24+LWU8L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tRjxyZXBsYWNlYWJsZT5TeXN0ZW0ubWFwPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tbjwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi12PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZyByZXA9J3JlcGVhdCc+PG9wdGlvbj48cmVwbGFjZWFibGU+ZmlsZW5hbWU8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvYXJnPgorICAgIDwvY21kc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+REVTQ1JJUFRJT048L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgTGludXgga2VybmVsIG1vZHVsZXMgY2FuIHByb3ZpZGUgc2VydmljZXMgKGNhbGxlZCAic3ltYm9scyIpIGZvcgorICAgICAgb3RoZXIgbW9kdWxlcyB0byB1c2UgKHVzaW5nIG9uZSBvZiB0aGUgRVhQT1JUX1NZTUJPTCB2YXJpYW50cyBpbiB0aGUKKyAgICAgIGNvZGUpLiAgSWYgYSBzZWNvbmQgbW9kdWxlIHVzZXMgdGhpcyBzeW1ib2wsIHRoYXQgc2Vjb25kIG1vZHVsZSBjbGVhcmx5CisgICAgICBkZXBlbmRzIG9uIHRoZSBmaXJzdCBtb2R1bGUuICBUaGVzZSBkZXBlbmRlbmNpZXMgY2FuIGdldCBxdWl0ZSBjb21wbGV4LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIDxjb21tYW5kPmRlcG1vZDwvY29tbWFuZD4gY3JlYXRlcyBhIGxpc3Qgb2YgbW9kdWxlIGRlcGVuZGVuY2llcworICAgICAgYnkgcmVhZGluZyBlYWNoIG1vZHVsZSB1bmRlcgorICAgICAgPGZpbGVuYW1lPi9saWIvbW9kdWxlcy88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT52ZXJzaW9uPC9yZXBsYWNlYWJsZT4gCisgICAgICBhbmQgZGV0ZXJtaW5pbmcgd2hhdCBzeW1ib2xzIGl0IGV4cG9ydHMgYW5kIHdoYXQgc3ltYm9scyBpdAorICAgICAgbmVlZHMuICBCeSBkZWZhdWx0LCB0aGlzIGxpc3QgaXMgd3JpdHRlbiB0bworICAgICAgPGZpbGVuYW1lPm1vZHVsZXMuZGVwPC9maWxlbmFtZT4sIGFuZCBhIGJpbmFyeSBoYXNoZWQgdmVyc2lvbiBuYW1lZAorICAgICAgPGZpbGVuYW1lPm1vZHVsZXMuZGVwLmJpbjwvZmlsZW5hbWU+LCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuICBJZgorICAgICAgZmlsZW5hbWVzIGFyZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLCBvbmx5IHRob3NlIG1vZHVsZXMgYXJlCisgICAgICBleGFtaW5lZCAod2hpY2ggaXMgcmFyZWx5IHVzZWZ1bCB1bmxlc3MgYWxsIG1vZHVsZXMgYXJlIGxpc3RlZCkuCisgICAgICA8Y29tbWFuZD5kZXBtb2Q8L2NvbW1hbmQ+IGFsc28gY3JlYXRlcyBhIGxpc3Qgb2Ygc3ltYm9scyBwcm92aWRlZAorICAgICAgYnkgbW9kdWxlcyBpbiB0aGUgZmlsZSBuYW1lZCA8ZmlsZW5hbWU+bW9kdWxlcy5zeW1ib2xzPC9maWxlbmFtZT4KKyAgICAgIGFuZCBpdHMgYmluYXJ5IGhhc2hlZCB2ZXJzaW9uLCA8ZmlsZW5hbWU+bW9kdWxlcy5zeW1ib2xzLmJpbjwvZmlsZW5hbWU+LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIElmIGEgPHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPiBpcyBwcm92aWRlZCwgdGhlbiB0aGF0CisgICAgICBrZXJuZWwgdmVyc2lvbidzIG1vZHVsZSBkaXJlY3RvcnkgaXMgdXNlZCByYXRoZXIgdGhhbiB0aGUKKyAgICAgIGN1cnJlbnQga2VybmVsIHZlcnNpb24gKGFzIHJldHVybmVkIGJ5IDxjb21tYW5kPnVuYW1lIC1yPC9jb21tYW5kPikuCisgICAgPC9wYXJhPgorICAgIDxwYXJhPgorICAgICAgCisgICAgPHBhcmE+CisgICAgICA8Y29tbWFuZD5kZXBtb2Q8L2NvbW1hbmQ+IHdpbGwgYWxzbyBnZW5lcmF0ZSB2YXJpb3VzIGxlZ2FjeSBtYXAKKyAgICAgIGZpbGVzIGluIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGZvciB1c2UgYnkgdGhlIG9sZGVyIGhvdHBsdWcKKyAgICAgIGluZnJhc3RydWN0dXJlLiBUaGVzZSBtYXAgZmlsZXMgYXJlIGxhcmdlbHkgZGVwcmVjYXRlZC4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+T1BUSU9OUzwvdGl0bGU+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgICAgPHRlcm0+PG9wdGlvbj4tYTwvb3B0aW9uPiA8b3B0aW9uPi0tYWxsPC9vcHRpb24+CisgICAgICAgICAgPC90ZXJtPgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICBQcm9iZSBhbGwgbW9kdWxlcy4gVGhpcyBvcHRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0IGlmIG5vCisgICAgICAgICAgICAgIGZpbGUgbmFtZXMgYXJlIGdpdmVuIGluIHRoZSBjb21tYW5kLWxpbmUuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgICA8dGVybT48b3B0aW9uPi1BPC9vcHRpb24+IDxvcHRpb24+LS1xdWljazwvb3B0aW9uPgorICAgICAgICAgIDwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgVGhpcyBvcHRpb24gc2NhbnMgdG8gc2VlIGlmIGFueSBtb2R1bGVzIGFyZSBuZXdlciB0aGFuIHRoZQorICAgICAgICAgICAgICA8ZmlsZW5hbWU+bW9kdWxlcy5kZXA8L2ZpbGVuYW1lPiBmaWxlIGJlZm9yZSBhbnkgd29yayBpcyBkb25lOgorICAgICAgICAgICAgICBpZiBub3QsIGl0IHNpbGVudGx5IGV4aXRzIHJhdGhlciB0aGFuIHJlZ2VuZXJhdGluZyB0aGUgZmlsZXMuCisgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKwkgIDx0ZXJtPjxvcHRpb24+LWIgPHJlcGxhY2VhYmxlPmJhc2VkaXI8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPiA8b3B0aW9uPi0tYmFzZWRpciA8cmVwbGFjZWFibGU+YmFzZWRpcjwvcmVwbGFjZWFibGU+PC9vcHRpb24+CisJICA8L3Rlcm0+CisJICA8bGlzdGl0ZW0+CisJICAgIDxwYXJhPgorCSAgICAgIElmIHlvdXIgbW9kdWxlcyBhcmUgbm90IGN1cnJlbnRseSBpbiB0aGUgKG5vcm1hbCkKKwkgICAgICBkaXJlY3RvcnkKKwkgICAgICA8ZmlsZW5hbWU+L2xpYi9tb2R1bGVzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPiwKKwkgICAgICBidXQgaW4gYSBzdGFnaW5nIGFyZWEsIHlvdSBjYW4gc3BlY2lmeSBhCisJICAgICAgPHJlcGxhY2VhYmxlPmJhc2VkaXI8L3JlcGxhY2VhYmxlPiB3aGljaCBpcyBwcmVwZW5kZWQgdG8KKwkgICAgICB0aGUgZGlyZWN0b3J5IG5hbWUuICBUaGlzCisJICAgICAgPHJlcGxhY2VhYmxlPmJhc2VkaXI8L3JlcGxhY2VhYmxlPiBpcyBzdHJpcHBlZCBmcm9tIHRoZQorCSAgICAgIHJlc3VsdGluZyA8ZmlsZW5hbWU+bW9kdWxlcy5kZXA8L2ZpbGVuYW1lPiBmaWxlLCBzbyBpdAorCSAgICAgIGlzIHJlYWR5IHRvIGJlIG1vdmVkIGludG8gdGhlIG5vcm1hbCBsb2NhdGlvbi4gVXNlIHRoaXMgb3B0aW9uCisJICAgICAgaWYgeW91IGFyZSBhIGRpc3RyaWJ1dGlvbiB2ZW5kb3Igd2hvIG5lZWRzIHRvIHByZS1nZW5lcmF0ZSB0aGUKKwkgICAgICBtZXRhLWRhdGEgZmlsZXMgcmF0aGVyIHRoYW4gcnVubmluZyBkZXBtb2QgYWdhaW4gbGF0ZXIuCisJICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tQzwvb3B0aW9uPiA8b3B0aW9uPi0tY29uZmlnIDxyZXBsYWNlYWJsZT5maWxlIG9yIGRpcmVjdG9yeTwvcmVwbGFjZWFibGU+PC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhpcyBvcHRpb24gb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhdAorICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZGVwbW9kLmNvbmY8L2ZpbGVuYW1lPiAob3IgdGhlIAorICAgICAgICAgICAgPGZpbGVuYW1lPi9ldGMvZGVwbW9kLmQvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGlmIHRoYXQgaXMgbm90IGZvdW5kKS4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LWU8L29wdGlvbj4gPG9wdGlvbj4tLWVycnN5bXM8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorCSAgPGxpc3RpdGVtPgorCSAgICA8cGFyYT4KKwkgICAgICBXaGVuIGNvbWJpbmVkIHdpdGggdGhlIDxvcHRpb24+LUY8L29wdGlvbj4gb3B0aW9uLCB0aGlzCisJICAgICAgcmVwb3J0cyBhbnkgc3ltYm9scyB3aGljaCBhIG1vZHVsZSBuZWVkcyB3aGljaCBhcmUgbm90CisJICAgICAgc3VwcGxpZWQgYnkgb3RoZXIgbW9kdWxlcyBvciB0aGUga2VybmVsLiAgTm9ybWFsbHksIGFueQorCSAgICAgIHN5bWJvbHMgbm90IHByb3ZpZGVkIGJ5IG1vZHVsZXMgYXJlIGFzc3VtZWQgdG8gYmUKKwkgICAgICBwcm92aWRlZCBieSB0aGUga2VybmVsICh3aGljaCBzaG91bGQgYmUgdHJ1ZSBpbiBhCisJICAgICAgcGVyZmVjdCB3b3JsZCksIGJ1dCB0aGlzIGFzc3VtcHRpb24gY2FuIGJyZWFrIGVzcGVuY2lhbGx5CisJICAgICAgd2hlbiBhZGRpdGlvbmFsbHkgdXBkYXRlZCB0aGlyZCBwYXJ0eSBkcml2ZXJzIGFyZSBub3QKKwkgICAgICBjb3JyZWN0bHkgaW5zdGFsbGVkIG9yIHdlcmUgYnVpbHQgaW5jb3JyZWN0bHkuCisJICAgIDwvcGFyYT4KKwkgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LUY8L29wdGlvbj4gPG9wdGlvbj4tLWZpbGVzeW1zIDxyZXBsYWNlYWJsZT5TeXN0ZW0ubWFwPC9yZXBsYWNlYWJsZT48L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIFN1cHBsaWVkIHdpdGggdGhlIDxmaWxlbmFtZT5TeXN0ZW0ubWFwPC9maWxlbmFtZT4gcHJvZHVjZWQKKwkgICAgd2hlbiB0aGUga2VybmVsIHdhcyBidWlsdCwgdGhpcyBhbGxvd3MgdGhlCisJICAgIDxvcHRpb24+LWU8L29wdGlvbj4gb3B0aW9uIHRvIHJlcG9ydCB1bnJlc29sdmVkIHN5bWJvbHMuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LWg8L29wdGlvbj4gPG9wdGlvbj4tLWhlbHA8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmludCB0aGUgaGVscCBtZXNzYWdlIGFuZCBleGl0LgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tbjwvb3B0aW9uPiA8b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgVGhpcyBzZW5kcyB0aGUgcmVzdWx0aW5nIG1vZHVsZXMuZGVwIGFuZCB0aGUgdmFyaW91cworCSAgICBtYXAgZmlsZXMgdG8gc3RhbmRhcmQgb3V0cHV0IHJhdGhlciB0aGFuIHdyaXRpbmcgdGhlbSBpbnRvCisJICAgIHRoZSBtb2R1bGUgZGlyZWN0b3J5LgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi12PC9vcHRpb24+IDxvcHRpb24+LS12ZXJib3NlPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBJbiB2ZXJib3NlIG1vZGUsIDxjb21tYW5kPmRlcG1vZDwvY29tbWFuZD4gd2lsbCBwcmludCAodG8gc3Rkb3V0KQorICAgICAgICAgICAgYWxsIHRoZSBzeW1ib2xzIGVhY2ggbW9kdWxlIGRlcGVuZHMgb24gYW5kIHRoZSBtb2R1bGUncyBmaWxlIG5hbWUKKyAgICAgICAgICAgIHdoaWNoIHByb3ZpZGVzIHRoYXQgc3ltYm9sLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi1WPC9vcHRpb24+IDxvcHRpb24+LS12ZXJzaW9uPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgU2hvdyB2ZXJzaW9uIG9mIHByb2dyYW0gYW5kIGV4aXQuIFNlZSBiZWxvdyBmb3IgY2F2ZWF0cyB3aGVuCisgICAgICAgICAgICBydW4gb24gb2xkZXIga2VybmVscy4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT1BZUklHSFQ8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICBUaGlzIG1hbnVhbCBwYWdlIG9yaWdpbmFsbHkgQ29weXJpZ2h0IDIwMDIsIFJ1c3R5IFJ1c3NlbGwsCisgICAgICBJQk0gQ29ycG9yYXRpb24uIE1haW50YWluZWQgYnkgSm9uIE1hc3RlcnMgYW5kIG90aGVycy4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+U0VFIEFMU088L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5kZXBtb2QuY29uZjwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+ZGVwbW9kLmQ8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4sCisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5tb2R1bGVzLmRlcDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogc2dtbAorc2dtbC1vbWl0dGFnOnQKK3NnbWwtc2hvcnR0YWc6dAorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWRlZmF1bHQtZHRkLWZpbGU6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvaW5zbW9kLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL2luc21vZC5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiM2E0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL2luc21vZC5zZ21sCkBAIC0wLDAgKzEsOTQgQEAKKzwhZG9jdHlwZSByZWZlbnRyeSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLy9FTiIgWworICA8IUVOVElUWSBkZWJpYW4gICI8cHJvZHVjdG5hbWU+RGViaWFuIEdOVS9MaW51eDwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgZG9jYm9vayAiPHByb2R1Y3RuYW1lPkRvY0Jvb2s8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIHNnbWwgICAgIjxhYmJyZXY+U0dNTDwvYWJicmV2PiI+CitdPgorCis8IS0tIFN0b2xlbiBmcm9tIG1hbnVhbCBwYWdlIGZvciBkb2Nib29rLXRvLW1hbiwgRG9jQm9vayBzb3VyY2UgZmlsZQorICAgICAoQykgMTk5OSBXLiBCb3JnZXJ0IGRlYmFjbGVAZGViaWFuLm9yZworCisgICAgICRJZDogZG9jYm9vay10by1tYW4uc2dtbCx2IDEuOCAyMDAyLzA0LzI3IDE1OjI4OjAyIGRlYmFjbGUgRXhwICQgLS0+CisKKzxyZWZlbnRyeT4KKyAgPHJlZmVudHJ5aW5mbz4KKyAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5qY21Aam9ubWFzdGVycy5vcmc8L2VtYWlsPgorICAgIDwvYWRkcmVzcz4KKyAgICA8YXV0aG9yPgorICAgICAgPGZpcnN0bmFtZT5Kb248L2ZpcnN0bmFtZT4KKyAgICAgIDxzdXJuYW1lPk1hc3RlcnM8L3N1cm5hbWU+CisgICAgPC9hdXRob3I+CisgICAgPGRhdGU+MjAxMC0wMy0wMTwvZGF0ZT4KKyAgPC9yZWZlbnRyeWluZm8+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmluc21vZDwvcmVmZW50cnl0aXRsZT4KKyAgICA8bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgPC9yZWZtZXRhPgorICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5pbnNtb2Q8L3JlZm5hbWU+IDxyZWZwdXJwb3NlPnNpbXBsZSBwcm9ncmFtIHRvIGluc2VydCBhIG1vZHVsZSBpbnRvIHRoZSBMaW51eCBLZXJuZWw8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxjbWRzeW5vcHNpcz4KKyAgICAgIDxjb21tYW5kPmluc21vZDwvY29tbWFuZD4KKyAgICAgIDxhcmc+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT48L2FyZz4KKyAgICAgIDxhcmcgcmVwPSdyZXBlYXQnPjxyZXBsYWNlYWJsZT5tb2R1bGUgb3B0aW9uczwvcmVwbGFjZWFibGU+PC9hcmc+CisgICAgPC9jbWRzeW5vcHNpcz4KKyAgPC9yZWZzeW5vcHNpc2Rpdj4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5ERVNDUklQVElPTjwvdGl0bGU+CisKKyAgICA8cGFyYT48Y29tbWFuZD5pbnNtb2Q8L2NvbW1hbmQ+IGlzIGEgdHJpdmlhbCBwcm9ncmFtIHRvIGluc2VydCBhCisJbW9kdWxlIGludG8gdGhlIGtlcm5lbDogaWYgdGhlCisJPHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT4gaXMgYSBoeXBoZW4sIHRoZSBtb2R1bGUgaXMKKwl0YWtlbiBmcm9tIHN0YW5kYXJkIGlucHV0LiBNb3N0IHVzZXJzIHdpbGwgd2FudCB0byB1c2UKKwk8Y2l0ZXJlZmVudHJ5PjxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPgorCTxtYW52b2xudW0+ODwvbWFudm9sbnVtPiA8L2NpdGVyZWZlbnRyeT4gaW5zdGVhZCwgd2hpY2ggaXMKKwltb3JlIGNsZXZlciBhbmQgY2FuIGhhbmRsZSBtb2R1bGUgZGVwZW5kZW5jaWVzLjwvcGFyYT4KKworICAgIDxwYXJhPk9ubHkgdGhlIG1vc3QgZ2VuZXJhbCBvZiBlcnJvciBtZXNzYWdlcyBhcmUgcmVwb3J0ZWQ6IGFzIHRoZQorCXdvcmsgb2YgdHJ5aW5nIHRvIGxpbmsgdGhlIG1vZHVsZSBpcyBub3cgZG9uZSBpbnNpZGUgdGhlIGtlcm5lbCwKKwl0aGUgPGNvbW1hbmQ+ZG1lc2c8L2NvbW1hbmQ+IHVzdWFsbHkgZ2l2ZXMgbW9yZSBpbmZvcm1hdGlvbgorCWFib3V0IGVycm9ycy48L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09QWVJJR0hUPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwMiwgUnVzdHkgUnVzc2VsbCwgSUJNCisgICAgICBDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+CisKKyAgICA8cGFyYT48Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5ybW1vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bHNtb2Q8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4KKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kaW5mbzwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogc2dtbAorc2dtbC1vbWl0dGFnOnQKK3NnbWwtc2hvcnR0YWc6dAorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWRlZmF1bHQtZHRkLWZpbGU6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbHNtb2Quc2dtbCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbHNtb2Quc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjY3NDUxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9sc21vZC5zZ21sCkBAIC0wLDAgKzEsODMgQEAKKzwhZG9jdHlwZSByZWZlbnRyeSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLy9FTiIgWworICA8IUVOVElUWSBkZWJpYW4gICI8cHJvZHVjdG5hbWU+RGViaWFuIEdOVS9MaW51eDwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgZG9jYm9vayAiPHByb2R1Y3RuYW1lPkRvY0Jvb2s8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIHNnbWwgICAgIjxhYmJyZXY+U0dNTDwvYWJicmV2PiI+CitdPgorCis8IS0tIFN0b2xlbiBmcm9tIG1hbnVhbCBwYWdlIGZvciBkb2Nib29rLXRvLW1hbiwgRG9jQm9vayBzb3VyY2UgZmlsZQorICAgICAoQykgMTk5OSBXLiBCb3JnZXJ0IGRlYmFjbGVAZGViaWFuLm9yZworCisgICAgICRJZDogZG9jYm9vay10by1tYW4uc2dtbCx2IDEuOCAyMDAyLzA0LzI3IDE1OjI4OjAyIGRlYmFjbGUgRXhwICQgLS0+CisKKzxyZWZlbnRyeT4KKyAgPHJlZmVudHJ5aW5mbz4KKyAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5qY21Aam9ubWFzdGVycy5vcmc8L2VtYWlsPgorICAgIDwvYWRkcmVzcz4KKyAgICA8YXV0aG9yPgorICAgICAgPGZpcnN0bmFtZT5Kb248L2ZpcnN0bmFtZT4KKyAgICAgIDxzdXJuYW1lPk1hc3RlcnM8L3N1cm5hbWU+CisgICAgPC9hdXRob3I+CisgICAgPGRhdGU+MjAxMC0wMy0wMTwvZGF0ZT4KKyAgPC9yZWZlbnRyeWluZm8+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPmxzbW9kPC9yZWZlbnRyeXRpdGxlPgorICAgIDxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICA8L3JlZm1ldGE+CisgIDxyZWZuYW1lZGl2PgorICAgIDxyZWZuYW1lPmxzbW9kPC9yZWZuYW1lPiA8cmVmcHVycG9zZT5wcm9ncmFtIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBtb2R1bGVzIGluIHRoZSBMaW51eCBLZXJuZWw8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxjbWRzeW5vcHNpcz4KKyAgICAgIDxjb21tYW5kPmxzbW9kPC9jb21tYW5kPgorICAgIDwvY21kc3lub3BzaXM+CisgIDwvcmVmc3lub3BzaXNkaXY+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+REVTQ1JJUFRJT048L3RpdGxlPgorCisgICAgPHBhcmE+PGNvbW1hbmQ+bHNtb2Q8L2NvbW1hbmQ+IGlzIGEgdHJpdmlhbCBwcm9ncmFtIHdoaWNoIG5pY2VseQorICAgICAgZm9ybWF0cyB0aGUgY29udGVudHMgb2YgdGhlIDxmaWxlbmFtZT4vcHJvYy9tb2R1bGVzPC9maWxlbmFtZT4sCisgICAgICBzaG93aW5nIHdoYXQga2VybmVsIG1vZHVsZXMgYXJlIGN1cnJlbnRseSBsb2FkZWQuCisgICAgPC9wYXJhPgorCisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09QWVJJR0hUPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwMiwgUnVzdHkgUnVzc2VsbCwgSUJNCisgICAgICBDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+CisKKyAgICA8cGFyYT4KKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+aW5zbW9kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5tb2Rwcm9iZTwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kaW5mbzwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PgorPC9wYXJhPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiBzZ21sCitzZ21sLW9taXR0YWc6dAorc2dtbC1zaG9ydHRhZzp0CitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZGVmYXVsdC1kdGQtZmlsZTpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9tb2RpbmZvLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZGluZm8uc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzcyZWVmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9tb2RpbmZvLnNnbWwKQEAgLTAsMCArMSwxNjkgQEAKKzwhZG9jdHlwZSByZWZlbnRyeSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLy9FTiIgWworICA8IUVOVElUWSBkZWJpYW4gICI8cHJvZHVjdG5hbWU+RGViaWFuIEdOVS9MaW51eDwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgZG9jYm9vayAiPHByb2R1Y3RuYW1lPkRvY0Jvb2s8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIHNnbWwgICAgIjxhYmJyZXY+U0dNTDwvYWJicmV2PiI+CitdPgorCis8IS0tIFN0b2xlbiBmcm9tIG1hbnVhbCBwYWdlIGZvciBkb2Nib29rLXRvLW1hbiwgRG9jQm9vayBzb3VyY2UgZmlsZQorICAgICAoQykgMTk5OSBXLiBCb3JnZXJ0IGRlYmFjbGVAZGViaWFuLm9yZworCisgICAgICRJZDogZG9jYm9vay10by1tYW4uc2dtbCx2IDEuOCAyMDAyLzA0LzI3IDE1OjI4OjAyIGRlYmFjbGUgRXhwICQgLS0+CisKKzxyZWZlbnRyeT4KKyAgPHJlZmVudHJ5aW5mbz4KKyAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5qY21Aam9ubWFzdGVycy5vcmc8L2VtYWlsPgorICAgIDwvYWRkcmVzcz4KKyAgICA8YXV0aG9yPgorICAgICAgPGZpcnN0bmFtZT5Kb248L2ZpcnN0bmFtZT4KKyAgICAgIDxzdXJuYW1lPk1hc3RlcnM8L3N1cm5hbWU+CisgICAgPC9hdXRob3I+CisgICAgPGRhdGU+MjAxMC0wMy0wMTwvZGF0ZT4KKyAgPC9yZWZlbnRyeWluZm8+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPm1vZGluZm88L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+bW9kaW5mbzwvcmVmbmFtZT4gPHJlZnB1cnBvc2U+cHJvZ3JhbSB0byBzaG93IGluZm9ybWF0aW9uIGFib3V0IGEgTGludXggS2VybmVsIG1vZHVsZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGNtZHN5bm9wc2lzPgorICAgICAgPGNvbW1hbmQ+bW9kaW5mbzwvY29tbWFuZD4KKyAgICAgIDxhcmc+PG9wdGlvbj4tMDwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi1GIDxyZXBsYWNlYWJsZT5maWVsZDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+LWsgPHJlcGxhY2VhYmxlPmtlcm5lbDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnIHJlcD0ncmVwZWF0Jz5tb2R1bGVuYW1lfGZpbGVuYW1lPC9hcmc+CisgICAgPC9jbWRzeW5vcHNpcz4KKyAgICA8Y21kc3lub3BzaXM+CisgICAgICA8Y29tbWFuZD5tb2RpbmZvIC1WPC9jb21tYW5kPgorICAgIDwvY21kc3lub3BzaXM+CisgICAgPGNtZHN5bm9wc2lzPgorICAgICAgPGNvbW1hbmQ+bW9kaW5mbyAtaDwvY29tbWFuZD4KKyAgICA8L2NtZHN5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRFU0NSSVBUSU9OPC90aXRsZT4KKworICAgIDxwYXJhPjxjb21tYW5kPm1vZGluZm88L2NvbW1hbmQ+IGV4dHJhY3RzIGluZm9ybWF0aW9uIGZyb20gdGhlIExpbnV4CisgICAgICBLZXJuZWwgbW9kdWxlcyBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzCisgICAgICBub3QgYSBmaWxlbmFtZSwgdGhlbiB0aGUKKyAgICAgIDxmaWxlbmFtZT4vbGliL21vZHVsZXMvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+dmVyc2lvbjwvcmVwbGFjZWFibGU+CisgICAgICBkaXJlY3RvcnkgaXMgc2VhcmNoZWQsIGFzIGlzIGFsc28gZG9uZSBieQorICAgICAgPGNpdGVyZWZlbnRyeT48cmVmZW50cnl0aXRsZT5tb2Rwcm9iZTwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT48L2NpdGVyZWZlbnRyeT4gd2hlbiBsb2FkaW5nIGtlcm5lbCBtb2R1bGVzLgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPjxjb21tYW5kPm1vZGluZm88L2NvbW1hbmQ+IGJ5IGRlZmF1bHQgbGlzdHMgZWFjaCBhdHRyaWJ1dGUKKyAgICAgIG9mIHRoZSBtb2R1bGUgaW4gZm9ybSA8cmVwbGFjZWFibGU+ZmllbGRuYW1lPC9yZXBsYWNlYWJsZT4gOgorICAgICAgPHJlcGxhY2VhYmxlPnZhbHVlPC9yZXBsYWNlYWJsZT4sIGZvciBlYXN5IHJlYWRpbmcuICBUaGUKKyAgICAgIGZpbGVuYW1lIGlzIGxpc3RlZCB0aGUgc2FtZSB3YXkgKGFsdGhvdWdoIGl0J3Mgbm90IHJlYWxseSBhbgorICAgICAgYXR0cmlidXRlKS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT5UaGlzIHZlcnNpb24gb2YgPGNvbW1hbmQ+bW9kaW5mbzwvY29tbWFuZD4gY2FuIHVuZGVyc3RhbmQKKyAgICBtb2R1bGVzIG9mIGFueSBMaW51eCBLZXJuZWwgYXJjaGl0ZWN0dXJlLjwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5PUFRJT05TPC90aXRsZT4KKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tVjwvb3B0aW9uPiA8b3B0aW9uPi0tdmVyc2lvbjwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgUHJpbnQgdGhlIG1vZGluZm8gdmVyc2lvbi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tRjwvb3B0aW9uPiA8b3B0aW9uPi0tZmllbGQ8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIE9ubHkgcHJpbnQgdGhpcyBmaWVsZCB2YWx1ZSwgb25lIHBlciBsaW5lLiAgVGhpcyBpcyBtb3N0CisJICAgIHVzZWZ1bCBmb3Igc2NyaXB0cy4gIEZpZWxkIG5hbWVzIGFyZSBjYXNlLWluc2VuaXRpdmUuCisJICAgIENvbW1vbiBmaWVsZHMgKHdoaWNoIG1heSBub3QgYmUgaW4gZXZlcnkgbW9kdWxlKSBpbmNsdWRlCisJICAgIDxsaXRlcmFsPmF1dGhvcjwvbGl0ZXJhbD4sIDxsaXRlcmFsPmRlc2NyaXB0aW9uPC9saXRlcmFsPiwKKwkgICAgPGxpdGVyYWw+bGljZW5zZTwvbGl0ZXJhbD4sIDxsaXRlcmFsPnBhcm08L2xpdGVyYWw+LAorCSAgICA8bGl0ZXJhbD5kZXBlbmRzPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPmFsaWFzPC9saXRlcmFsPi4KKwkgICAgVGhlcmUgYXJlIG9mdGVuIG11bHRpcGxlIDxsaXRlcmFsPnBhcm08L2xpdGVyYWw+LAorCSAgICA8bGl0ZXJhbD5hbGlhczwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPmRlcGVuZHM8L2xpdGVyYWw+CisJICAgIGZpZWxkcy4gIFRoZSBzcGVjaWFsIGZpZWxkIDxsaXRlcmFsPmZpbGVuYW1lPC9saXRlcmFsPgorCSAgICBsaXN0cyB0aGUgZmlsZW5hbWUgb2YgdGhlIG1vZHVsZS4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tayA8cmVwbGFjZWFibGU+a2VybmVsPC9yZXBsYWNlYWJsZT48L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IGEga2VybmVsIG90aGVyIHRoYW4gdGhlIHJ1bm5pbmcgb25lLiBUaGlzCisgICAgICAgICAgICBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBkaXN0cmlidXRpb25zIG5lZWRpbmcgdG8gZXh0cmFjdAorICAgICAgICAgICAgaW5mb3JtYXRpb24gZnJvbSBhIG5ld2x5IGluc3RhbGxlZCAoYnV0IG5vdCB5ZXQgcnVubmluZykgc2V0IG9mCisgICAgICAgICAgICBrZXJuZWwgbW9kdWxlcy4gRm9yIGV4YW1wbGUsIHlvdSB3aXNoIHRvIGZpbmQgd2hpY2ggZmlybXdhcmUgZmlsZXMKKyAgICAgICAgICAgIGFyZSBuZWVkZWQgYnkgdmFyaW91cyBtb2R1bGVzIGluIGEgbmV3IGtlcm5lbCBmb3Igd2hpY2ggeW91IG11c3QKKyAgICAgICAgICAgIG1ha2UgYW4gaW5pdHJkL2luaXRyYW1mcyBpbWFnZSBwcmlvciB0byBib290aW5nLgorICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tMDwvb3B0aW9uPiA8b3B0aW9uPi0tbnVsbDwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgVXNlIHRoZSBBU0NJSSB6ZXJvIGNoYXJhY3RlciB0byBzZXBhcmF0ZSBmaWVsZCB2YWx1ZXMsCisJICAgIGluc3RlYWQgb2YgYSBuZXcgbGluZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzY3JpcHRzLCBzaW5jZQorCSAgICBhIG5ldyBsaW5lIGNhbiB0aGVvcmV0aWNhbGx5IGFwcGVhciBpbnNpZGUgYSBmaWVsZC4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tYTwvb3B0aW9uPiA8b3B0aW9uPi1kPC9vcHRpb24+IDxvcHRpb24+LWw8L29wdGlvbj4gPG9wdGlvbj4tcDwvb3B0aW9uPiA8b3B0aW9uPi1uPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBUaGVzZSBhcmUgc2hvcnRjdXRzIGZvciA8bGl0ZXJhbD5hdXRob3I8L2xpdGVyYWw+LAorCSAgICA8bGl0ZXJhbD5kZXNjcmlwdGlvbjwvbGl0ZXJhbD4sCisJICAgIDxsaXRlcmFsPmxpY2Vuc2U8L2xpdGVyYWw+LiAgPGxpdGVyYWw+cGFybTwvbGl0ZXJhbD4gYW5kCisJICAgIDxsaXRlcmFsPmZpbGVuYW1lPC9saXRlcmFsPiByZXNwZWN0aXZlbHksIHRvIGVhc2UgdGhlCisJICAgIHRyYW5zaXRpb24gZnJvbSB0aGUgb2xkIG1vZHV0aWxzCisJICAgIDxjb21tYW5kPm1vZGluZm88L2NvbW1hbmQ+LgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09QWVJJR0hUPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwMywgUnVzdHkgUnVzc2VsbCwgSUJNCisgICAgICBDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+CisKKyAgICA8cGFyYT48Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+Cis8L3BhcmE+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgorCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHNnbWwKK3NnbWwtb21pdHRhZzp0CitzZ21sLXNob3J0dGFnOnQKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1kZWZhdWx0LWR0ZC1maWxlOm5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZHByb2JlLmNvbmYuc2dtbCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbW9kcHJvYmUuY29uZi5zZ21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YzNkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZHByb2JlLmNvbmYuc2dtbApAQCAtMCwwICsxLDI1NSBAQAorPCFkb2N0eXBlIHJlZmVudHJ5IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFY0LjEvL0VOIiBbCisgIDwhRU5USVRZIGRlYmlhbiAgIjxwcm9kdWN0bmFtZT5EZWJpYW4gR05VL0xpbnV4PC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBkb2Nib29rICI8cHJvZHVjdG5hbWU+RG9jQm9vazwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgc2dtbCAgICAiPGFiYnJldj5TR01MPC9hYmJyZXY+Ij4KK10+CisKKzwhLS0gU3RvbGVuIGZyb20gbWFudWFsIHBhZ2UgZm9yIGRvY2Jvb2stdG8tbWFuLCBEb2NCb29rIHNvdXJjZSBmaWxlCisgICAgIChDKSAxOTk5IFcuIEJvcmdlcnQgZGViYWNsZUBkZWJpYW4ub3JnCisKKyAgICAgJElkOiBkb2Nib29rLXRvLW1hbi5zZ21sLHYgMS44IDIwMDIvMDQvMjcgMTU6Mjg6MDIgZGViYWNsZSBFeHAgJCAtLT4KKworPHJlZmVudHJ5PgorICA8cmVmZW50cnlpbmZvPgorICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmpjbUBqb25tYXN0ZXJzLm9yZzwvZW1haWw+CisgICAgPC9hZGRyZXNzPgorICAgIDxhdXRob3I+CisgICAgICA8Zmlyc3RuYW1lPkpvbjwvZmlyc3RuYW1lPgorICAgICAgPHN1cm5hbWU+TWFzdGVyczwvc3VybmFtZT4KKyAgICA8L2F1dGhvcj4KKyAgICA8ZGF0ZT4yMDEwLTAzLTA5PC9kYXRlPgorICA8L3JlZmVudHJ5aW5mbz4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmUuY29uZjwvcmVmZW50cnl0aXRsZT4KKyAgICA8bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgPC9yZWZtZXRhPgorICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5tb2Rwcm9iZS5kPC9yZWZuYW1lPjxyZWZuYW1lPm1vZHByb2JlLmNvbmY8L3JlZm5hbWU+IDxyZWZwdXJwb3NlPkNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5L2ZpbGUgZm9yIG1vZHByb2JlPC9yZWZwdXJwb3NlPgorICA8L3JlZm5hbWVkaXY+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+REVTQ1JJUFRJT048L3RpdGxlPgorCisgICAgPHBhcmE+QmVjYXVzZSB0aGUgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGNvbW1hbmQgY2FuIGFkZCBvcgorICAgICAgcmVtb3ZlIG1vcmUgdGhhbiBvbmUgbW9kdWxlLCBkdWUgdG8gbW9kdWxlcyBoYXZpbmcgZGVwZW5kZW5jaWVzLAorICAgICAgd2UgbmVlZCBhIG1ldGhvZCBvZiBzcGVjaWZ5aW5nIHdoYXQgb3B0aW9ucyBhcmUgdG8gYmUgdXNlZCB3aXRoCisgICAgICB0aG9zZSBtb2R1bGVzLiAgQWxsIGZpbGVzIHVuZGVybmVhdGggdGhlIAorICAgICAgPGZpbGVuYW1lPi9ldGMvbW9kcHJvYmUuZDwvZmlsZW5hbWU+IGRpcmVjdG9yeSB3aGljaCBlbmQgd2l0aCB0aGUKKyAgICAgIDxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+IGV4dGVuc2lvbiBzcGVjaWZ5IHRob3NlIG9wdGlvbnMgYXMKKyAgICAgIHJlcXVpcmVkLiAodGhlIDxmaWxlbmFtZT4vZXRjL21vZHByb2JlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGNhbgorICAgICAgYWxzbyBiZSB1c2VkIGlmIGl0IGV4aXN0cywgYnV0IHRoYXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIAorICAgICAgdmVyc2lvbikuICBUaGV5IGNhbiBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIGNvbnZlbmllbnQgYWxpYXNlczogCisgICAgICBhbHRlcm5hdGUgbmFtZXMgZm9yIGEgbW9kdWxlLCBvciB0aGV5IGNhbiBvdmVycmlkZSB0aGUgbm9ybWFsIAorICAgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGJlaGF2aW9yIGFsdG9nZXRoZXIgZm9yIHRob3NlIHdpdGggCisgICAgICBzcGVjaWFsIHJlcXVpcmVtZW50cyAoc3VjaCBhcyBpbnNlcnRpbmcgbW9yZSB0aGFuIG9uZSBtb2R1bGUpLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIE5vdGUgdGhhdCBtb2R1bGUgYW5kIGFsaWFzIG5hbWVzIChsaWtlIG90aGVyIG1vZHVsZSBuYW1lcykgY2FuCisgICAgICBoYXZlIC0gb3IgXyBpbiB0aGVtOiBib3RoIGFyZSBpbnRlcmNoYW5nYWJsZSB0aHJvdWdob3V0IGFsbCB0aGUKKyAgICAgIG1vZHVsZSBjb21tYW5kcyBhcyB1bmRlcnNjb3JlIGNvbnZlcnNpb24gaGFwcGVucyBhdXRvbWF0aWNhbGx5LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIFRoZSBmb3JtYXQgb2YgYW5kIGZpbGVzIHVuZGVyIDxmaWxlbmFtZT5tb2Rwcm9iZS5kPC9maWxlbmFtZT4gYW5kCisgICAgICA8ZmlsZW5hbWU+L2V0Yy9tb2Rwcm9iZS5jb25mPC9maWxlbmFtZT4gaXMgc2ltcGxlOiBvbmUKKyAgICAgIGNvbW1hbmQgcGVyIGxpbmUsIHdpdGggYmxhbmsgbGluZXMgYW5kIGxpbmVzIHN0YXJ0aW5nIHdpdGggJyMnCisgICAgICBpZ25vcmVkICh1c2VmdWwgZm9yIGFkZGluZyBjb21tZW50cykuICBBICdcJyBhdCB0aGUgZW5kIG9mIGEgbGluZQorICAgICAgY2F1c2VzIGl0IHRvIGNvbnRpbnVlIG9uIHRoZSBuZXh0IGxpbmUsIHdoaWNoIG1ha2VzIHRoZSBmaWxlIGEKKyAgICAgIGJpdCBuZWF0ZXIuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkNPTU1BTkRTPC90aXRsZT4KKyAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+YWxpYXMgPHJlcGxhY2VhYmxlPndpbGRjYXJkPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisJICAgIFRoaXMgYWxsb3dzIHlvdSB0byBnaXZlIGFsdGVybmF0ZSBuYW1lcyBmb3IgYSBtb2R1bGUuICBGb3IKKwkgICAgZXhhbXBsZTogImFsaWFzIG15LW1vZCByZWFsbHlfbG9uZ19tb2R1bGVuYW1lIgorCSAgICBtZWFucyB5b3UgY2FuIHVzZSAibW9kcHJvYmUgbXktbW9kIiBpbnN0ZWFkIG9mICJtb2Rwcm9iZQorCSAgICByZWFsbHlfbG9uZ19tb2R1bGVuYW1lIi4gIFlvdSBjYW4gYWxzbyB1c2Ugc2hlbGwtc3R5bGUKKwkgICAgd2lsZGNhcmRzLCBzbyAiYWxpYXMgbXktbW9kKiByZWFsbHlfbG9uZ19tb2R1bGVuYW1lIgorCSAgICBtZWFucyB0aGF0ICJtb2Rwcm9iZSBteS1tb2Qtc29tZXRoaW5nIiBoYXMgdGhlIHNhbWUKKwkgICAgZWZmZWN0LiAgWW91IGNhbid0IGhhdmUgYWxpYXNlcyB0byBvdGhlciBhbGlhc2VzICh0aGF0CisJICAgIHdheSBsaWVzIG1hZG5lc3MpLCBidXQgYWxpYXNlcyBjYW4gaGF2ZSBvcHRpb25zLCB3aGljaAorCSAgICB3aWxsIGJlIGFkZGVkIHRvIGFueSBvdGhlciBvcHRpb25zLgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisJICAgIE5vdGUgdGhhdCBtb2R1bGVzIGNhbiBhbHNvIGNvbnRhaW4gdGhlaXIgb3duIGFsaWFzZXMsCisJICAgIHdoaWNoIHlvdSBjYW4gc2VlIHVzaW5nIDxjb21tYW5kPm1vZGluZm88L2NvbW1hbmQ+LiAgVGhlc2UKKwkgICAgYWxpYXNlcyBhcmUgdXNlZCBhcyBhIGxhc3QgcmVzb3J0IChpZS4gaWYgdGhlcmUgaXMgbm8gcmVhbAorCSAgICBtb2R1bGUsIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+LAorCSAgICA8Y29tbWFuZD5yZW1vdmU8L2NvbW1hbmQ+LCBvciA8Y29tbWFuZD5hbGlhczwvY29tbWFuZD4KKwkgICAgY29tbWFuZCBpbiB0aGUgY29uZmlndXJhdGlvbikuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPmJsYWNrbGlzdCA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4KKwkgICAgTW9kdWxlcyBjYW4gY29udGFpbiB0aGVpciBvd24gYWxpYXNlczogdXN1YWxseSB0aGVzZSBhcmUKKwkgICAgYWxpYXNlcyBkZXNjcmliaW5nIHRoZSBkZXZpY2VzIHRoZXkgc3VwcG9ydCwgc3VjaCBhcworCSAgICAicGNpOjEyMy4uLiIuICBUaGVzZSAiaW50ZXJuYWwiIGFsaWFzZXMgY2FuIGJlIG92ZXJyaWRkZW4KKwkgICAgYnkgbm9ybWFsICJhbGlhcyIga2V5d29yZHMsIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdHdvCisJICAgIG9yIG1vcmUgbW9kdWxlcyBib3RoIHN1cHBvcnQgdGhlIHNhbWUgZGV2aWNlcywgb3IgYSBtb2R1bGUKKwkgICAgaW52YWxpZGx5IGNsYWltcyB0byBzdXBwb3J0IGEgZGV2aWNlaSB0aGF0IGl0IGRvZXMgbm90OiB0aGUKKwkgICAgPGNvbW1hbmQ+YmxhY2tsaXN0PC9jb21tYW5kPiBrZXl3b3JkIGluZGljYXRlcyB0aGF0IGFsbCBvZgorCSAgICB0aGF0IHBhcnRpY3VsYXIgbW9kdWxlJ3MgaW50ZXJuYWwgYWxpYXNlcyBhcmUgdG8gYmUgaWdub3JlZC4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+aW5zdGFsbCA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5jb21tYW5kLi4uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgPC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPgorCSAgICBUaGlzIGNvbW1hbmQgaW5zdHJ1Y3RzIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB0byBydW4geW91cgorCSAgICBjb21tYW5kIGluc3RlYWQgb2YgaW5zZXJ0aW5nIHRoZSBtb2R1bGUgaW4gdGhlIGtlcm5lbCBhcyBub3JtYWwuCisJICAgIFRoZSBjb21tYW5kIGNhbiBiZSBhbnkgc2hlbGwgY29tbWFuZDogdGhpcyBhbGxvd3MgeW91IHRvIGRvIGFueQorCSAgICBraW5kIG9mIGNvbXBsZXggcHJvY2Vzc2luZyB5b3UgbWlnaHQgd2lzaC4gIEZvciBleGFtcGxlLCBpZiB0aGUKKwkgICAgbW9kdWxlICJmcmVkIiB3b3JrcyBiZXR0ZXIgd2l0aCB0aGUgbW9kdWxlICJiYXJuZXkiCisJICAgIGFscmVhZHkgaW5zdGFsbGVkIChidXQgaXQgZG9lc24ndCBkZXBlbmQgb24gaXQsIHNvCisJICAgIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB3b24ndCBhdXRvbWF0aWNhbGx5IGxvYWQgaXQpLAorCSAgICB5b3UgY291bGQgc2F5ICJpbnN0YWxsIGZyZWQgL3NiaW4vbW9kcHJvYmUgYmFybmV5OworCSAgICAvc2Jpbi9tb2Rwcm9iZSAtLWlnbm9yZS1pbnN0YWxsIGZyZWQiLCB3aGljaCB3b3VsZCBkbyB3aGF0CisJICAgIHlvdSB3YW50ZWQuICBOb3RlIHRoZSA8b3B0aW9uPi0taWdub3JlLWluc3RhbGw8L29wdGlvbj4sCisJICAgIHdoaWNoIHN0b3BzIHRoZSBzZWNvbmQgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGZyb20KKwkgICAgcnVubmluZyB0aGUgc2FtZSA8Y29tbWFuZD5pbnN0YWxsPC9jb21tYW5kPiBjb21tYW5kIGFnYWluLgorCSAgICBTZWUgYWxzbyA8Y29tbWFuZD5yZW1vdmU8L2NvbW1hbmQ+IGJlbG93LgorCSAgPC9wYXJhPgorCSAgPHBhcmE+VGhlIGxvbmcgdGVybSBmdXR1cmUgb2YgdGhpcyBjb21tYW5kIGFzIGEgc29sdXRpb24gdG8gdGhlCisJICAgIHByb2JsZW0gb2YgcHJvdmlkaW5nIGFkZGl0aW9uYWwgbW9kdWxlIGRlcGVuZGVuY2llcyBpcyBub3QgYXNzdXJlZAorCSAgICBhbmQgaXQgaXMgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGlzIGNvbW1hbmQgd2l0aCBhIHdhcm5pbmcgYWJvdXQKKwkgICAgaXRzIGV2ZW50dWFsIHJlbW92YWwgb3IgZGVwcmVjYXRpb24gYXQgc29tZSBwb2ludCBpbiBhIGZ1dHVyZQorCSAgICByZWxlYXNlLiBJdHMgdXNlIGNvbXBsaWNhdGVzIHRoZSBhdXRvbWF0ZWQgZGV0ZXJtaW5hdGlvbiBvZiBtb2R1bGUKKwkgICAgZGVwZW5kZW5jaWVzIGJ5IGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMsIHN1Y2ggYXMgbWtpbml0cmQgKGJlY2F1c2UKKwkgICAgdGhlc2Ugbm93IG5lZWQgdG8gc29tZWhvdyBpbnRlcnByZXQgd2hhdCB0aGUKKwkgICAgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gY29tbWFuZHMgbWlnaHQgYmUgZG9pbmcuCisJICAgIEluIGEgcGVyZmVjdCB3b3JsZCwgbW9kdWxlcyB3b3VsZCBwcm92aWRlIGFsbCBkZXBlbmRlbmN5CisJICAgIGluZm9ybWF0aW9uIHdpdGhvdXQgdGhlIHVzZSBvZiB0aGlzIGNvbW1hbmQgYW5kIHdvcmsgaXMgdW5kZXJ3YXkKKwkgICAgdG8gaW1wbGVtZW50IHNvZnQgZGVwZW5kZW5jeSBzdXBwb3J0IHdpdGhpbiB0aGUgTGludXgga2VybmVsLgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisJICAgIElmIHlvdSB1c2UgdGhlIHN0cmluZyAiJENNRExJTkVfT1BUUyIgaW4gdGhlIGNvbW1hbmQsIGl0CisJICAgIHdpbGwgYmUgcmVwbGFjZWQgYnkgYW55IG9wdGlvbnMgc3BlY2lmaWVkIG9uIHRoZSBtb2Rwcm9iZQorCSAgICBjb21tYW5kIGxpbmUuICBUaGlzIGNhbiBiZSB1c2VmdWwgYmVjYXVzZSB1c2VycyBleHBlY3QKKwkgICAgIm1vZHByb2JlIGZyZWQgb3B0PTEiIHRvIHBhc3MgdGhlICJvcHQ9MSIgYXJnIHRvIHRoZQorCSAgICBtb2R1bGUsIGV2ZW4gaWYgdGhlcmUncyBhbiBpbnN0YWxsIGNvbW1hbmQgaW4gdGhlCisJICAgIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFNvIG91ciBhYm92ZSBleGFtcGxlIGJlY29tZXMgImluc3RhbGwKKwkgICAgZnJlZCAvc2Jpbi9tb2Rwcm9iZSBiYXJuZXk7IC9zYmluL21vZHByb2JlCisJICAgIC0taWdub3JlLWluc3RhbGwgZnJlZCAkQ01ETElORV9PUFRTIgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT5vcHRpb25zIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPm9wdGlvbi4uLjwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4KKwkgICAgVGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gYWRkIG9wdGlvbnMgdG8gdGhlIG1vZHVsZQorCSAgICA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+ICh3aGljaCBtaWdodCBiZSBhbgorCSAgICBhbGlhcykgZXZlcnkgdGltZSBpdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSBrZXJuZWw6IHdoZXRoZXIKKwkgICAgZGlyZWN0bHkgKHVzaW5nIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiAKKwkgICAgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiBvciBiZWNhdXNlIHRoZQorCSAgICBtb2R1bGUgYmVpbmcgaW5zZXJ0ZWQgZGVwZW5kcyBvbiB0aGlzIG1vZHVsZS4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPgorCSAgICBBbGwgb3B0aW9ucyBhcmUgYWRkZWQgdG9nZXRoZXI6IHRoZXkgY2FuIGNvbWUgZnJvbSBhbgorCSAgICA8Y29tbWFuZD5vcHRpb248L2NvbW1hbmQ+IGZvciB0aGUgbW9kdWxlIGl0c2VsZiwgZm9yIGFuCisJICAgIGFsaWFzLCBhbmQgb24gdGhlIGNvbW1hbmQgbGluZS4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+cmVtb3ZlIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPmNvbW1hbmQuLi48L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisJICAgIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gY29tbWFuZAorCSAgICBhYm92ZSwgZXhjZXB0IGl0IGlzIGludm9rZWQgd2hlbiAibW9kcHJvYmUgLXIiIGlzIHJ1bi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+c29mdGRlcCA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+IHByZTogPHJlcGxhY2VhYmxlPm1vZHVsZXMuLi48L3JlcGxhY2VhYmxlPiBwb3N0OiA8cmVwbGFjZWFibGU+bW9kdWxlcy4uLjwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSA8Y29tbWFuZD5zb2Z0ZGVwPC9jb21tYW5kPiBjb21tYW5kIGFsbG93cyB5b3UgdG8gc3BlY2lmeSBzb2Z0LAorICAgICAgICAgICAgb3Igb3B0aW9uYWwsIG1vZHVsZSBkZXBlbmRlbmNpZXMuIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgICAgIGNhbiBiZSB1c2VkIHdpdGhvdXQgdGhlc2Ugb3B0aW9uYWwgbW9kdWxlcyBpbnN0YWxsZWQsIGJ1dCB1c3VhbGx5IHdpdGgKKyAgICAgICAgICAgIHNvbWUgZmVhdHVyZXMgbWlzc2luZy4gRm9yIGV4YW1wbGUsIGEgZHJpdmVyIGZvciBhIHN0b3JhZ2UgSEJBIG1pZ2h0CisgICAgICAgICAgICByZXF1aXJlIGFub3RoZXIgbW9kdWxlIGJlIGxvYWRlZCBpbiBvcmRlciB0byB1c2UgbWFuYWdlbWVudCBmZWF0dXJlcy4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPgorICAgICAgICAgICAgcHJlLWRlcHMgYW5kIHBvc3QtZGVwcyBtb2R1bGVzIGFyZSBsaXN0cyBvZiBuYW1lcyBhbmQvb3IgYWxpYXNlcyBvZiBvdGhlcgorICAgICAgICAgICAgbW9kdWxlcyB0aGF0IG1vZHByb2JlIHdpbGwgYXR0ZW1wdCB0byBpbnN0YWxsIChvciByZW1vdmUpIGluIG9yZGVyCisgICAgICAgICAgICBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtYWluIG1vZHVsZSBnaXZlbiBpbiB0aGUKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4gYXJndW1lbnQuCisJICA8L3BhcmE+CisJICA8cGFyYT4KKyAgICAgICAgICAgIEV4YW1wbGU6IEFzc3VtZSAic29mdGRlcCBjIHByZTogYSBiIHBvc3Q6IGQgZSIgaXMgcHJvdmlkZWQgaW4gdGhlCisgICAgICAgICAgICBjb25maWd1cmF0aW9uLiBSdW5uaW5nICJtb2Rwcm9iZSBjIiBpcyBub3cgZXF1aXZhbGVudCB0bworICAgICAgICAgICAgIm1vZHByb2JlIGEgYiBjIGQgZSIgd2l0aG91dCB0aGUgc29mdGRlcC4KKyAgICAgICAgICAgIEZsYWdzIHN1Y2ggYXMgLS11c2UtYmxhY2tsaXN0IGFyZSBhcHBsaWVkIHRvIGFsbCB0aGUgc3BlY2lmaWVkCisgICAgICAgICAgICBtb2R1bGVzLCB3aGlsZSBtb2R1bGUgcGFyYW1ldGVycyBvbmx5IGFwcGx5IHRvIG1vZHVsZSBjLgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisgICAgICAgICAgICBOb3RlOiBpZiB0aGVyZSBhcmUgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gb3IKKyAgICAgICAgICAgIDxjb21tYW5kPnJlbW92ZTwvY29tbWFuZD4gY29tbWFuZHMgd2l0aCB0aGUgc2FtZQorICAgICAgICAgICAgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiBhcmd1bWVudCwKKyAgICAgICAgICAgIDxjb21tYW5kPnNvZnRkZXA8L2NvbW1hbmQ+IHRha2VzIHByZWNlZGVuY2UuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT01QQVRJQklMSVRZPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIEEgZnV0dXJlIHZlcnNpb24gb2YgbW9kdWxlLWluaXQtdG9vbHMgd2lsbCBjb21lIHdpdGggYSBzdHJvbmcgd2FybmluZworICAgICAgdG8gYXZvaWQgdXNlIG9mIHRoZSA8Y29tbWFuZD5pbnN0YWxsPC9jb21tYW5kPiBhcyBleHBsYWluZWQgYWJvdmUuIFRoaXMKKyAgICAgIHdpbGwgaGFwcGVuIG9uY2Ugc3VwcG9ydCBmb3Igc29mdCBkZXBlbmRlbmNpZXMgaW4gdGhlIGtlcm5lbCBpcyBjb21wbGV0ZS4KKyAgICAgIFRoYXQgc3VwcG9ydCB3aWxsIGNvbXBsZW1lbnQgdGhlIGV4aXN0aW5nIHNvZnRkZXAgc3VwcG9ydCB3aXRoaW4gdGhpcworICAgICAgdXRpbGl0eSBieSBwcm92aWRpbmcgc3VjaCBkZXBlbmRlbmNpZXMgZGlyZWN0bHkgd2l0aGluIHRoZSBtb2R1bGVzLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT1BZUklHSFQ8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDA0LCBSdXN0eSBSdXNzZWxsLCBJQk0KKyAgICAgIENvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlNFRSBBTFNPPC90aXRsZT4KKworICAgIDxwYXJhPjxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmU8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4sCisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHVsZXMuZGVwPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+NTwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+CisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiBzZ21sCitzZ21sLW9taXR0YWc6dAorc2dtbC1zaG9ydHRhZzp0CitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZGVmYXVsdC1kdGQtZmlsZTpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9tb2Rwcm9iZS5kLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZHByb2JlLmQuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWMzZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9tb2Rwcm9iZS5kLnNnbWwKQEAgLTAsMCArMSwyNTUgQEAKKzwhZG9jdHlwZSByZWZlbnRyeSBQVUJMSUMgIi0vL09BU0lTLy9EVEQgRG9jQm9vayBWNC4xLy9FTiIgWworICA8IUVOVElUWSBkZWJpYW4gICI8cHJvZHVjdG5hbWU+RGViaWFuIEdOVS9MaW51eDwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgZG9jYm9vayAiPHByb2R1Y3RuYW1lPkRvY0Jvb2s8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIHNnbWwgICAgIjxhYmJyZXY+U0dNTDwvYWJicmV2PiI+CitdPgorCis8IS0tIFN0b2xlbiBmcm9tIG1hbnVhbCBwYWdlIGZvciBkb2Nib29rLXRvLW1hbiwgRG9jQm9vayBzb3VyY2UgZmlsZQorICAgICAoQykgMTk5OSBXLiBCb3JnZXJ0IGRlYmFjbGVAZGViaWFuLm9yZworCisgICAgICRJZDogZG9jYm9vay10by1tYW4uc2dtbCx2IDEuOCAyMDAyLzA0LzI3IDE1OjI4OjAyIGRlYmFjbGUgRXhwICQgLS0+CisKKzxyZWZlbnRyeT4KKyAgPHJlZmVudHJ5aW5mbz4KKyAgICA8YWRkcmVzcz4KKyAgICAgIDxlbWFpbD5qY21Aam9ubWFzdGVycy5vcmc8L2VtYWlsPgorICAgIDwvYWRkcmVzcz4KKyAgICA8YXV0aG9yPgorICAgICAgPGZpcnN0bmFtZT5Kb248L2ZpcnN0bmFtZT4KKyAgICAgIDxzdXJuYW1lPk1hc3RlcnM8L3N1cm5hbWU+CisgICAgPC9hdXRob3I+CisgICAgPGRhdGU+MjAxMC0wMy0wOTwvZGF0ZT4KKyAgPC9yZWZlbnRyeWluZm8+CisgIDxyZWZtZXRhPgorICAgIDxyZWZlbnRyeXRpdGxlPm1vZHByb2JlLmNvbmY8L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+bW9kcHJvYmUuZDwvcmVmbmFtZT48cmVmbmFtZT5tb2Rwcm9iZS5jb25mPC9yZWZuYW1lPiA8cmVmcHVycG9zZT5Db25maWd1cmF0aW9uIGRpcmVjdG9yeS9maWxlIGZvciBtb2Rwcm9iZTwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRFU0NSSVBUSU9OPC90aXRsZT4KKworICAgIDxwYXJhPkJlY2F1c2UgdGhlIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiBjb21tYW5kIGNhbiBhZGQgb3IKKyAgICAgIHJlbW92ZSBtb3JlIHRoYW4gb25lIG1vZHVsZSwgZHVlIHRvIG1vZHVsZXMgaGF2aW5nIGRlcGVuZGVuY2llcywKKyAgICAgIHdlIG5lZWQgYSBtZXRob2Qgb2Ygc3BlY2lmeWluZyB3aGF0IG9wdGlvbnMgYXJlIHRvIGJlIHVzZWQgd2l0aAorICAgICAgdGhvc2UgbW9kdWxlcy4gIEFsbCBmaWxlcyB1bmRlcm5lYXRoIHRoZSAKKyAgICAgIDxmaWxlbmFtZT4vZXRjL21vZHByb2JlLmQ8L2ZpbGVuYW1lPiBkaXJlY3Rvcnkgd2hpY2ggZW5kIHdpdGggdGhlCisgICAgICA8ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPiBleHRlbnNpb24gc3BlY2lmeSB0aG9zZSBvcHRpb25zIGFzCisgICAgICByZXF1aXJlZC4gKHRoZSA8ZmlsZW5hbWU+L2V0Yy9tb2Rwcm9iZS5jb25mPC9maWxlbmFtZT4gZmlsZSBjYW4KKyAgICAgIGFsc28gYmUgdXNlZCBpZiBpdCBleGlzdHMsIGJ1dCB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSAKKyAgICAgIHZlcnNpb24pLiAgVGhleSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBjb252ZW5pZW50IGFsaWFzZXM6IAorICAgICAgYWx0ZXJuYXRlIG5hbWVzIGZvciBhIG1vZHVsZSwgb3IgdGhleSBjYW4gb3ZlcnJpZGUgdGhlIG5vcm1hbCAKKyAgICAgIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiBiZWhhdmlvciBhbHRvZ2V0aGVyIGZvciB0aG9zZSB3aXRoIAorICAgICAgc3BlY2lhbCByZXF1aXJlbWVudHMgKHN1Y2ggYXMgaW5zZXJ0aW5nIG1vcmUgdGhhbiBvbmUgbW9kdWxlKS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBOb3RlIHRoYXQgbW9kdWxlIGFuZCBhbGlhcyBuYW1lcyAobGlrZSBvdGhlciBtb2R1bGUgbmFtZXMpIGNhbgorICAgICAgaGF2ZSAtIG9yIF8gaW4gdGhlbTogYm90aCBhcmUgaW50ZXJjaGFuZ2FibGUgdGhyb3VnaG91dCBhbGwgdGhlCisgICAgICBtb2R1bGUgY29tbWFuZHMgYXMgdW5kZXJzY29yZSBjb252ZXJzaW9uIGhhcHBlbnMgYXV0b21hdGljYWxseS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGUgZm9ybWF0IG9mIGFuZCBmaWxlcyB1bmRlciA8ZmlsZW5hbWU+bW9kcHJvYmUuZDwvZmlsZW5hbWU+IGFuZAorICAgICAgPGZpbGVuYW1lPi9ldGMvbW9kcHJvYmUuY29uZjwvZmlsZW5hbWU+IGlzIHNpbXBsZTogb25lCisgICAgICBjb21tYW5kIHBlciBsaW5lLCB3aXRoIGJsYW5rIGxpbmVzIGFuZCBsaW5lcyBzdGFydGluZyB3aXRoICcjJworICAgICAgaWdub3JlZCAodXNlZnVsIGZvciBhZGRpbmcgY29tbWVudHMpLiAgQSAnXCcgYXQgdGhlIGVuZCBvZiBhIGxpbmUKKyAgICAgIGNhdXNlcyBpdCB0byBjb250aW51ZSBvbiB0aGUgbmV4dCBsaW5lLCB3aGljaCBtYWtlcyB0aGUgZmlsZSBhCisgICAgICBiaXQgbmVhdGVyLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT01NQU5EUzwvdGl0bGU+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPmFsaWFzIDxyZXBsYWNlYWJsZT53aWxkY2FyZDwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgPC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPgorCSAgICBUaGlzIGFsbG93cyB5b3UgdG8gZ2l2ZSBhbHRlcm5hdGUgbmFtZXMgZm9yIGEgbW9kdWxlLiAgRm9yCisJICAgIGV4YW1wbGU6ICJhbGlhcyBteS1tb2QgcmVhbGx5X2xvbmdfbW9kdWxlbmFtZSIKKwkgICAgbWVhbnMgeW91IGNhbiB1c2UgIm1vZHByb2JlIG15LW1vZCIgaW5zdGVhZCBvZiAibW9kcHJvYmUKKwkgICAgcmVhbGx5X2xvbmdfbW9kdWxlbmFtZSIuICBZb3UgY2FuIGFsc28gdXNlIHNoZWxsLXN0eWxlCisJICAgIHdpbGRjYXJkcywgc28gImFsaWFzIG15LW1vZCogcmVhbGx5X2xvbmdfbW9kdWxlbmFtZSIKKwkgICAgbWVhbnMgdGhhdCAibW9kcHJvYmUgbXktbW9kLXNvbWV0aGluZyIgaGFzIHRoZSBzYW1lCisJICAgIGVmZmVjdC4gIFlvdSBjYW4ndCBoYXZlIGFsaWFzZXMgdG8gb3RoZXIgYWxpYXNlcyAodGhhdAorCSAgICB3YXkgbGllcyBtYWRuZXNzKSwgYnV0IGFsaWFzZXMgY2FuIGhhdmUgb3B0aW9ucywgd2hpY2gKKwkgICAgd2lsbCBiZSBhZGRlZCB0byBhbnkgb3RoZXIgb3B0aW9ucy4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPgorCSAgICBOb3RlIHRoYXQgbW9kdWxlcyBjYW4gYWxzbyBjb250YWluIHRoZWlyIG93biBhbGlhc2VzLAorCSAgICB3aGljaCB5b3UgY2FuIHNlZSB1c2luZyA8Y29tbWFuZD5tb2RpbmZvPC9jb21tYW5kPi4gIFRoZXNlCisJICAgIGFsaWFzZXMgYXJlIHVzZWQgYXMgYSBsYXN0IHJlc29ydCAoaWUuIGlmIHRoZXJlIGlzIG5vIHJlYWwKKwkgICAgbW9kdWxlLCA8Y29tbWFuZD5pbnN0YWxsPC9jb21tYW5kPiwKKwkgICAgPGNvbW1hbmQ+cmVtb3ZlPC9jb21tYW5kPiwgb3IgPGNvbW1hbmQ+YWxpYXM8L2NvbW1hbmQ+CisJICAgIGNvbW1hbmQgaW4gdGhlIGNvbmZpZ3VyYXRpb24pLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT5ibGFja2xpc3QgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisJICAgIE1vZHVsZXMgY2FuIGNvbnRhaW4gdGhlaXIgb3duIGFsaWFzZXM6IHVzdWFsbHkgdGhlc2UgYXJlCisJICAgIGFsaWFzZXMgZGVzY3JpYmluZyB0aGUgZGV2aWNlcyB0aGV5IHN1cHBvcnQsIHN1Y2ggYXMKKwkgICAgInBjaToxMjMuLi4iLiAgVGhlc2UgImludGVybmFsIiBhbGlhc2VzIGNhbiBiZSBvdmVycmlkZGVuCisJICAgIGJ5IG5vcm1hbCAiYWxpYXMiIGtleXdvcmRzLCBidXQgdGhlcmUgYXJlIGNhc2VzIHdoZXJlIHR3bworCSAgICBvciBtb3JlIG1vZHVsZXMgYm90aCBzdXBwb3J0IHRoZSBzYW1lIGRldmljZXMsIG9yIGEgbW9kdWxlCisJICAgIGludmFsaWRseSBjbGFpbXMgdG8gc3VwcG9ydCBhIGRldmljZWkgdGhhdCBpdCBkb2VzIG5vdDogdGhlCisJICAgIDxjb21tYW5kPmJsYWNrbGlzdDwvY29tbWFuZD4ga2V5d29yZCBpbmRpY2F0ZXMgdGhhdCBhbGwgb2YKKwkgICAgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZSdzIGludGVybmFsIGFsaWFzZXMgYXJlIHRvIGJlIGlnbm9yZWQuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPmluc3RhbGwgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiA8cmVwbGFjZWFibGU+Y29tbWFuZC4uLjwvcmVwbGFjZWFibGU+CisgICAgICAgIDwvdGVybT4KKwk8bGlzdGl0ZW0+CisJICA8cGFyYT4KKwkgICAgVGhpcyBjb21tYW5kIGluc3RydWN0cyA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4gdG8gcnVuIHlvdXIKKwkgICAgY29tbWFuZCBpbnN0ZWFkIG9mIGluc2VydGluZyB0aGUgbW9kdWxlIGluIHRoZSBrZXJuZWwgYXMgbm9ybWFsLgorCSAgICBUaGUgY29tbWFuZCBjYW4gYmUgYW55IHNoZWxsIGNvbW1hbmQ6IHRoaXMgYWxsb3dzIHlvdSB0byBkbyBhbnkKKwkgICAga2luZCBvZiBjb21wbGV4IHByb2Nlc3NpbmcgeW91IG1pZ2h0IHdpc2guICBGb3IgZXhhbXBsZSwgaWYgdGhlCisJICAgIG1vZHVsZSAiZnJlZCIgd29ya3MgYmV0dGVyIHdpdGggdGhlIG1vZHVsZSAiYmFybmV5IgorCSAgICBhbHJlYWR5IGluc3RhbGxlZCAoYnV0IGl0IGRvZXNuJ3QgZGVwZW5kIG9uIGl0LCBzbworCSAgICA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4gd29uJ3QgYXV0b21hdGljYWxseSBsb2FkIGl0KSwKKwkgICAgeW91IGNvdWxkIHNheSAiaW5zdGFsbCBmcmVkIC9zYmluL21vZHByb2JlIGJhcm5leTsKKwkgICAgL3NiaW4vbW9kcHJvYmUgLS1pZ25vcmUtaW5zdGFsbCBmcmVkIiwgd2hpY2ggd291bGQgZG8gd2hhdAorCSAgICB5b3Ugd2FudGVkLiAgTm90ZSB0aGUgPG9wdGlvbj4tLWlnbm9yZS1pbnN0YWxsPC9vcHRpb24+LAorCSAgICB3aGljaCBzdG9wcyB0aGUgc2Vjb25kIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiBmcm9tCisJICAgIHJ1bm5pbmcgdGhlIHNhbWUgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gY29tbWFuZCBhZ2Fpbi4KKwkgICAgU2VlIGFsc28gPGNvbW1hbmQ+cmVtb3ZlPC9jb21tYW5kPiBiZWxvdy4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPlRoZSBsb25nIHRlcm0gZnV0dXJlIG9mIHRoaXMgY29tbWFuZCBhcyBhIHNvbHV0aW9uIHRvIHRoZQorCSAgICBwcm9ibGVtIG9mIHByb3ZpZGluZyBhZGRpdGlvbmFsIG1vZHVsZSBkZXBlbmRlbmNpZXMgaXMgbm90IGFzc3VyZWQKKwkgICAgYW5kIGl0IGlzIGludGVuZGVkIHRvIHJlcGxhY2UgdGhpcyBjb21tYW5kIHdpdGggYSB3YXJuaW5nIGFib3V0CisJICAgIGl0cyBldmVudHVhbCByZW1vdmFsIG9yIGRlcHJlY2F0aW9uIGF0IHNvbWUgcG9pbnQgaW4gYSBmdXR1cmUKKwkgICAgcmVsZWFzZS4gSXRzIHVzZSBjb21wbGljYXRlcyB0aGUgYXV0b21hdGVkIGRldGVybWluYXRpb24gb2YgbW9kdWxlCisJICAgIGRlcGVuZGVuY2llcyBieSBkaXN0cmlidXRpb24gdXRpbGl0aWVzLCBzdWNoIGFzIG1raW5pdHJkIChiZWNhdXNlCisJICAgIHRoZXNlIG5vdyBuZWVkIHRvIHNvbWVob3cgaW50ZXJwcmV0IHdoYXQgdGhlCisJICAgIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+IGNvbW1hbmRzIG1pZ2h0IGJlIGRvaW5nLgorCSAgICBJbiBhIHBlcmZlY3Qgd29ybGQsIG1vZHVsZXMgd291bGQgcHJvdmlkZSBhbGwgZGVwZW5kZW5jeQorCSAgICBpbmZvcm1hdGlvbiB3aXRob3V0IHRoZSB1c2Ugb2YgdGhpcyBjb21tYW5kIGFuZCB3b3JrIGlzIHVuZGVyd2F5CisJICAgIHRvIGltcGxlbWVudCBzb2Z0IGRlcGVuZGVuY3kgc3VwcG9ydCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPgorCSAgICBJZiB5b3UgdXNlIHRoZSBzdHJpbmcgIiRDTURMSU5FX09QVFMiIGluIHRoZSBjb21tYW5kLCBpdAorCSAgICB3aWxsIGJlIHJlcGxhY2VkIGJ5IGFueSBvcHRpb25zIHNwZWNpZmllZCBvbiB0aGUgbW9kcHJvYmUKKwkgICAgY29tbWFuZCBsaW5lLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGJlY2F1c2UgdXNlcnMgZXhwZWN0CisJICAgICJtb2Rwcm9iZSBmcmVkIG9wdD0xIiB0byBwYXNzIHRoZSAib3B0PTEiIGFyZyB0byB0aGUKKwkgICAgbW9kdWxlLCBldmVuIGlmIHRoZXJlJ3MgYW4gaW5zdGFsbCBjb21tYW5kIGluIHRoZQorCSAgICBjb25maWd1cmF0aW9uIGZpbGUuICBTbyBvdXIgYWJvdmUgZXhhbXBsZSBiZWNvbWVzICJpbnN0YWxsCisJICAgIGZyZWQgL3NiaW4vbW9kcHJvYmUgYmFybmV5OyAvc2Jpbi9tb2Rwcm9iZQorCSAgICAtLWlnbm9yZS1pbnN0YWxsIGZyZWQgJENNRExJTkVfT1BUUyIKKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+b3B0aW9ucyA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5vcHRpb24uLi48L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisJICAgIFRoaXMgY29tbWFuZCBhbGxvd3MgeW91IHRvIGFkZCBvcHRpb25zIHRvIHRoZSBtb2R1bGUKKwkgICAgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiAod2hpY2ggbWlnaHQgYmUgYW4KKwkgICAgYWxpYXMpIGV2ZXJ5IHRpbWUgaXQgaXMgaW5zZXJ0ZWQgaW50byB0aGUga2VybmVsOiB3aGV0aGVyCisJICAgIGRpcmVjdGx5ICh1c2luZyA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4gCisJICAgIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4gb3IgYmVjYXVzZSB0aGUKKwkgICAgbW9kdWxlIGJlaW5nIGluc2VydGVkIGRlcGVuZHMgb24gdGhpcyBtb2R1bGUuCisJICA8L3BhcmE+CisJICA8cGFyYT4KKwkgICAgQWxsIG9wdGlvbnMgYXJlIGFkZGVkIHRvZ2V0aGVyOiB0aGV5IGNhbiBjb21lIGZyb20gYW4KKwkgICAgPGNvbW1hbmQ+b3B0aW9uPC9jb21tYW5kPiBmb3IgdGhlIG1vZHVsZSBpdHNlbGYsIGZvciBhbgorCSAgICBhbGlhcywgYW5kIG9uIHRoZSBjb21tYW5kIGxpbmUuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPnJlbW92ZSA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5jb21tYW5kLi4uPC9yZXBsYWNlYWJsZT4KKyAgICAgICAgPC90ZXJtPgorCTxsaXN0aXRlbT4KKwkgIDxwYXJhPgorCSAgICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+IGNvbW1hbmQKKwkgICAgYWJvdmUsIGV4Y2VwdCBpdCBpcyBpbnZva2VkIHdoZW4gIm1vZHByb2JlIC1yIiBpcyBydW4uCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPnNvZnRkZXAgPHJlcGxhY2VhYmxlPm1vZHVsZW5hbWU8L3JlcGxhY2VhYmxlPiBwcmU6IDxyZXBsYWNlYWJsZT5tb2R1bGVzLi4uPC9yZXBsYWNlYWJsZT4gcG9zdDogPHJlcGxhY2VhYmxlPm1vZHVsZXMuLi48L3JlcGxhY2VhYmxlPgorICAgICAgICA8L3Rlcm0+CisJPGxpc3RpdGVtPgorCSAgPHBhcmE+CisgICAgICAgICAgICBUaGUgPGNvbW1hbmQ+c29mdGRlcDwvY29tbWFuZD4gY29tbWFuZCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgc29mdCwKKyAgICAgICAgICAgIG9yIG9wdGlvbmFsLCBtb2R1bGUgZGVwZW5kZW5jaWVzLiA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+CisgICAgICAgICAgICBjYW4gYmUgdXNlZCB3aXRob3V0IHRoZXNlIG9wdGlvbmFsIG1vZHVsZXMgaW5zdGFsbGVkLCBidXQgdXN1YWxseSB3aXRoCisgICAgICAgICAgICBzb21lIGZlYXR1cmVzIG1pc3NpbmcuIEZvciBleGFtcGxlLCBhIGRyaXZlciBmb3IgYSBzdG9yYWdlIEhCQSBtaWdodAorICAgICAgICAgICAgcmVxdWlyZSBhbm90aGVyIG1vZHVsZSBiZSBsb2FkZWQgaW4gb3JkZXIgdG8gdXNlIG1hbmFnZW1lbnQgZmVhdHVyZXMuCisJICA8L3BhcmE+CisJICA8cGFyYT4KKyAgICAgICAgICAgIHByZS1kZXBzIGFuZCBwb3N0LWRlcHMgbW9kdWxlcyBhcmUgbGlzdHMgb2YgbmFtZXMgYW5kL29yIGFsaWFzZXMgb2Ygb3RoZXIKKyAgICAgICAgICAgIG1vZHVsZXMgdGhhdCBtb2Rwcm9iZSB3aWxsIGF0dGVtcHQgdG8gaW5zdGFsbCAob3IgcmVtb3ZlKSBpbiBvcmRlcgorICAgICAgICAgICAgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWFpbiBtb2R1bGUgZ2l2ZW4gaW4gdGhlCisgICAgICAgICAgICA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+IGFyZ3VtZW50LgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisgICAgICAgICAgICBFeGFtcGxlOiBBc3N1bWUgInNvZnRkZXAgYyBwcmU6IGEgYiBwb3N0OiBkIGUiIGlzIHByb3ZpZGVkIGluIHRoZQorICAgICAgICAgICAgY29uZmlndXJhdGlvbi4gUnVubmluZyAibW9kcHJvYmUgYyIgaXMgbm93IGVxdWl2YWxlbnQgdG8KKyAgICAgICAgICAgICJtb2Rwcm9iZSBhIGIgYyBkIGUiIHdpdGhvdXQgdGhlIHNvZnRkZXAuCisgICAgICAgICAgICBGbGFncyBzdWNoIGFzIC0tdXNlLWJsYWNrbGlzdCBhcmUgYXBwbGllZCB0byBhbGwgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgbW9kdWxlcywgd2hpbGUgbW9kdWxlIHBhcmFtZXRlcnMgb25seSBhcHBseSB0byBtb2R1bGUgYy4KKwkgIDwvcGFyYT4KKwkgIDxwYXJhPgorICAgICAgICAgICAgTm90ZTogaWYgdGhlcmUgYXJlIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+IG9yCisgICAgICAgICAgICA8Y29tbWFuZD5yZW1vdmU8L2NvbW1hbmQ+IGNvbW1hbmRzIHdpdGggdGhlIHNhbWUKKyAgICAgICAgICAgIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4gYXJndW1lbnQsCisgICAgICAgICAgICA8Y29tbWFuZD5zb2Z0ZGVwPC9jb21tYW5kPiB0YWtlcyBwcmVjZWRlbmNlLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09NUEFUSUJJTElUWTwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBBIGZ1dHVyZSB2ZXJzaW9uIG9mIG1vZHVsZS1pbml0LXRvb2xzIHdpbGwgY29tZSB3aXRoIGEgc3Ryb25nIHdhcm5pbmcKKyAgICAgIHRvIGF2b2lkIHVzZSBvZiB0aGUgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gYXMgZXhwbGFpbmVkIGFib3ZlLiBUaGlzCisgICAgICB3aWxsIGhhcHBlbiBvbmNlIHN1cHBvcnQgZm9yIHNvZnQgZGVwZW5kZW5jaWVzIGluIHRoZSBrZXJuZWwgaXMgY29tcGxldGUuCisgICAgICBUaGF0IHN1cHBvcnQgd2lsbCBjb21wbGVtZW50IHRoZSBleGlzdGluZyBzb2Z0ZGVwIHN1cHBvcnQgd2l0aGluIHRoaXMKKyAgICAgIHV0aWxpdHkgYnkgcHJvdmlkaW5nIHN1Y2ggZGVwZW5kZW5jaWVzIGRpcmVjdGx5IHdpdGhpbiB0aGUgbW9kdWxlcy4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+Q09QWVJJR0hUPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIFRoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwNCwgUnVzdHkgUnVzc2VsbCwgSUJNCisgICAgICBDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5TRUUgQUxTTzwvdGl0bGU+CisKKyAgICA8cGFyYT48Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5tb2R1bGVzLmRlcDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKzwvcmVmZW50cnk+CisKKzwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQorTG9jYWwgdmFyaWFibGVzOgorbW9kZTogc2dtbAorc2dtbC1vbWl0dGFnOnQKK3NnbWwtc2hvcnR0YWc6dAorc2dtbC1taW5pbWl6ZS1hdHRyaWJ1dGVzOm5pbAorc2dtbC1hbHdheXMtcXVvdGUtYXR0cmlidXRlczp0CitzZ21sLWluZGVudC1zdGVwOjIKK3NnbWwtaW5kZW50LWRhdGE6dAorc2dtbC1wYXJlbnQtZG9jdW1lbnQ6bmlsCitzZ21sLWRlZmF1bHQtZHRkLWZpbGU6bmlsCitzZ21sLWV4cG9zZWQtdGFnczpuaWwKK3NnbWwtbG9jYWwtY2F0YWxvZ3M6bmlsCitzZ21sLWxvY2FsLWVjYXQtZmlsZXM6bmlsCitFbmQ6CistLT4KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbW9kcHJvYmUuc2dtbCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbW9kcHJvYmUuc2dtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGEzYjIyCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2RvYy9tb2Rwcm9iZS5zZ21sCkBAIC0wLDAgKzEsNTE1IEBACis8IWRvY3R5cGUgcmVmZW50cnkgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjQuMS8vRU4iIFsKKyAgPCFFTlRJVFkgZGViaWFuICAiPHByb2R1Y3RuYW1lPkRlYmlhbiBHTlUvTGludXg8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIGRvY2Jvb2sgIjxwcm9kdWN0bmFtZT5Eb2NCb29rPC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBzZ21sICAgICI8YWJicmV2PlNHTUw8L2FiYnJldj4iPgorXT4KKworPCEtLSBTdG9sZW4gZnJvbSBtYW51YWwgcGFnZSBmb3IgZG9jYm9vay10by1tYW4sIERvY0Jvb2sgc291cmNlIGZpbGUKKyAgICAgKEMpIDE5OTkgVy4gQm9yZ2VydCBkZWJhY2xlQGRlYmlhbi5vcmcKKworICAgICAkSWQ6IGRvY2Jvb2stdG8tbWFuLnNnbWwsdiAxLjggMjAwMi8wNC8yNyAxNToyODowMiBkZWJhY2xlIEV4cCAkIC0tPgorCis8cmVmZW50cnk+CisgIDxyZWZlbnRyeWluZm8+CisgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+amNtQGpvbm1hc3RlcnMub3JnPC9lbWFpbD4KKyAgICA8L2FkZHJlc3M+CisgICAgPGF1dGhvcj4KKyAgICAgIDxmaXJzdG5hbWU+Sm9uPC9maXJzdG5hbWU+CisgICAgICA8c3VybmFtZT5NYXN0ZXJzPC9zdXJuYW1lPgorICAgIDwvYXV0aG9yPgorICAgIDxkYXRlPjIwMTAtMDMtMDE8L2RhdGU+CisgIDwvcmVmZW50cnlpbmZvPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5tb2Rwcm9iZTwvcmVmZW50cnl0aXRsZT4KKyAgICA8bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgPC9yZWZtZXRhPgorICA8cmVmbmFtZWRpdj4KKyAgICA8cmVmbmFtZT5tb2Rwcm9iZTwvcmVmbmFtZT4gPHJlZnB1cnBvc2U+cHJvZ3JhbSB0byBhZGQgYW5kIHJlbW92ZSBtb2R1bGVzIGZyb20gdGhlIExpbnV4IEtlcm5lbDwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc3lub3BzaXNkaXY+CisgICAgPGNtZHN5bm9wc2lzPgorICAgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+CisgICAgICA8YXJnPjxvcHRpb24+LXY8L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tVjwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi1DIDxyZXBsYWNlYWJsZT5jb25maWctZmlsZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+LW48L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4taTwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi1xPC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+LWI8L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tbzwvb3B0aW9uPiA8cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+PC9hcmc+CisgICAgICA8YXJnPjxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT48L2FyZz4KKyAgICAgIDxhcmcgcmVwPSdyZXBlYXQnPjxvcHRpb24+PHJlcGxhY2VhYmxlPm1vZHVsZSBwYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L2FyZz4KKyAgICA8L2NtZHN5bm9wc2lzPgorICAgIDxjbWRzeW5vcHNpcz4KKyAgICAgIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPgorICAgICAgPGFyZz4tcjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi12PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+LW48L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4taTwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZyByZXA9J3JlcGVhdCc+PG9wdGlvbj48cmVwbGFjZWFibGU+bW9kdWxlbmFtZTwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC9hcmc+CisgICAgPC9jbWRzeW5vcHNpcz4KKyAgICA8Y21kc3lub3BzaXM+CisgICAgICA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4KKyAgICAgIDxhcmc+LWw8L2FyZz4KKyAgICAgIDxhcmc+LXQgPHJlcGxhY2VhYmxlPmRpcm5hbWU8L3JlcGxhY2VhYmxlPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPjxyZXBsYWNlYWJsZT53aWxkY2FyZDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC9hcmc+CisgICAgPC9jbWRzeW5vcHNpcz4KKyAgICA8Y21kc3lub3BzaXM+CisgICAgICA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4KKyAgICAgIDxhcmc+LWM8L2FyZz4KKyAgICA8L2NtZHN5bm9wc2lzPgorICAgIDxjbWRzeW5vcHNpcz4KKyAgICAgIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPgorICAgICAgPGFyZz4tLWR1bXAtbW9kdmVyc2lvbnM8L2FyZz4gPGFyZyByZXA9J3JlcGVhdCc+PHJlcGxhY2VhYmxlPmZpbGVuYW1lPC9yZXBsYWNlYWJsZT48L2FyZz4KKyAgICA8L2NtZHN5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRlc2NyaXB0aW9uPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGludGVsbGlnZW50bHkgYWRkcyBvciByZW1vdmVzIGEKKyAgICAgIG1vZHVsZSBmcm9tIHRoZSBMaW51eCBrZXJuZWw6IG5vdGUgdGhhdCBmb3IgY29udmVuaWVuY2UsIHRoZXJlCisgICAgICBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gXyBhbmQgLSBpbiBtb2R1bGUgbmFtZXMgKGF1dG9tYXRpYworICAgICAgdW5kZXJzY29yZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCkuCisgICAgICA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4gbG9va3MgaW4gdGhlIG1vZHVsZSBkaXJlY3RvcnkKKyAgICAgIDxmaWxlbmFtZT4vbGliL21vZHVsZXMvYHVuYW1lIC1yYDwvZmlsZW5hbWU+IGZvciBhbGwKKyAgICAgIHRoZSBtb2R1bGVzIGFuZCBvdGhlciBmaWxlcywgZXhjZXB0IGZvciB0aGUgb3B0aW9uYWwKKyAgICAgIDxmaWxlbmFtZT4vZXRjL21vZHByb2JlLmNvbmY8L2ZpbGVuYW1lPiBjb25maWd1cmF0aW9uIGZpbGUgYW5kCisgICAgICA8ZmlsZW5hbWU+L2V0Yy9tb2Rwcm9iZS5kPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAoc2VlIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmUuY29uZjwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PikuIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB3aWxsIGFsc28gdXNlIG1vZHVsZQorICAgICAgb3B0aW9ucyBzcGVjaWZpZWQgb24gdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgaW4gdGhlIGZvcm0gb2YKKyAgICAgICZsdDttb2R1bGUmZ3Q7LiZsdDtvcHRpb24mZ3Q7LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIE5vdGUgdGhhdCB1bmxpa2UgaW4gMi40IHNlcmllcyBMaW51eCBrZXJuZWxzICh3aGljaCBhcmUgbm90IHN1cHBvcnRlZAorICAgICAgYnkgdGhpcyB0b29sKSB0aGlzIHZlcnNpb24gb2YgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGRvZXMgbm90CisgICAgICBkbyBhbnl0aGluZyB0byB0aGUgbW9kdWxlIGl0c2VsZjogdGhlIHdvcmsgb2YgcmVzb2x2aW5nIHN5bWJvbHMKKyAgICAgIGFuZCB1bmRlcnN0YW5kaW5nIHBhcmFtZXRlcnMgaXMgZG9uZSBpbnNpZGUgdGhlIGtlcm5lbC4gIFNvCisgICAgICBtb2R1bGUgZmFpbHVyZSBpcyBzb21ldGltZXMgYWNjb21wYW5pZWQgYnkgYSBrZXJuZWwgbWVzc2FnZTogc2VlCisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPmRtZXNnPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiBleHBlY3RzIGFuIHVwLXRvLWRhdGUKKyAgICAgIDxmaWxlbmFtZT5tb2R1bGVzLmRlcC5iaW48L2ZpbGVuYW1lPiBmaWxlIChvciBmYWxsYmFjayBodW1hbgorICAgICAgcmVhZGFibGUgPGZpbGVuYW1lPm1vZHVsZXMuZGVwPC9maWxlbmFtZT4gZmlsZSksIGFzIGdlbmVyYXRlZAorICAgICAgYnkgdGhlIGNvcnJlc3BvbmRpbmcgPGNvbW1hbmQ+ZGVwbW9kPC9jb21tYW5kPiB1dGlsaXR5IHNoaXBwZWQKKyAgICAgIGFsb25nIHdpdGggPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IChzZWUKKyAgICAgIDxjaXRlcmVmZW50cnk+PHJlZmVudHJ5dGl0bGU+ZGVwbW9kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+KS4gIFRoaXMgZmlsZSBsaXN0cyB3aGF0IG90aGVyIG1vZHVsZXMgZWFjaAorICAgICAgbW9kdWxlIG5lZWRzIChpZiBhbnkpLCBhbmQgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IHVzZXMgdGhpcworICAgICAgdG8gYWRkIG9yIHJlbW92ZSB0aGVzZSBkZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBJZiBhbnkgYXJndW1lbnRzIGFyZSBnaXZlbiBhZnRlciB0aGUKKyAgICAgIDxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT4sIHRoZXkgYXJlIHBhc3NlZCB0byB0aGUKKyAgICAgIGtlcm5lbCAoaW4gYWRkaXRpb24gdG8gYW55IG9wdGlvbnMgbGlzdGVkIGluIHRoZSBjb25maWd1cmF0aW9uCisgICAgICBmaWxlKS4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+T1BUSU9OUzwvdGl0bGU+CisgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LWE8L29wdGlvbj4gPG9wdGlvbj4tLWFsbDwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT5JbnNlcnQgYWxsIG1vZHVsZSBuYW1lcyBvbiB0aGUgY29tbWFuZCBsaW5lLgorCSA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LWI8L29wdGlvbj4gPG9wdGlvbj4tLXVzZS1ibGFja2xpc3Q8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisJICA8cGFyYT4KKwkgICAgVGhpcyBvcHRpb24gY2F1c2VzIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB0byBhcHBseSB0aGUKKwkgICAgPGNvbW1hbmQ+YmxhY2tsaXN0PC9jb21tYW5kPiBjb21tYW5kcyBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcworCSAgICAoaWYgYW55KSB0byBtb2R1bGUgbmFtZXMgYXMgd2VsbC4gIEl0IGlzIHVzdWFsbHkgdXNlZCBieQorCSAgICA8Y2l0ZXJlZmVudHJ5PgorCSAgICAgIDxyZWZlbnRyeXRpdGxlPnVkZXY8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT43PC9tYW52b2xudW0+CisJICAgIDwvY2l0ZXJlZmVudHJ5Pi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tQzwvb3B0aW9uPiA8b3B0aW9uPi0tY29uZmlnPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPlRoaXMgb3B0aW9uIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS9maWxlCisJCSg8ZmlsZW5hbWU+L2V0Yy9tb2Rwcm9iZS5kPC9maWxlbmFtZT4gb3IgCisJCTxmaWxlbmFtZT4vZXRjL21vZHByb2JlLmNvbmY8L2ZpbGVuYW1lPikuCisJICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisJICAgIFRoaXMgb3B0aW9uIGlzIHBhc3NlZCB0aHJvdWdoIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+CisJICAgIG9yIDxjb21tYW5kPnJlbW92ZTwvY29tbWFuZD4gY29tbWFuZHMgdG8gb3RoZXIKKwkgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGNvbW1hbmRzIGluIHRoZQorCSAgICBNT0RQUk9CRV9PUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi1jPC9vcHRpb24+IDxvcHRpb24+LS1zaG93Y29uZmlnPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPkR1bXAgb3V0IHRoZSBlZmZlY3RpdmUgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBjb25maWcgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgYW5kIGV4aXQuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1kdW1wLW1vZHZlcnNpb25zPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgUHJpbnQgb3V0IGEgbGlzdCBvZiBtb2R1bGUgdmVyc2lvbmluZyBpbmZvcm1hdGlvbiByZXF1aXJlZCBieSBhCisgICAgICAgICAgICBtb2R1bGUuIFRoaXMgb3B0aW9uIGlzIGNvbW1vbmx5IHVzZWQgYnkgZGlzdHJpYnV0aW9ucyBpbiBvcmRlciB0bworICAgICAgICAgICAgcGFja2FnZSB1cCBhIExpbnV4IGtlcm5lbCBtb2R1bGUgdXNpbmcgbW9kdWxlIHZlcnNpb25pbmcgZGVwcy4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LWQ8L29wdGlvbj4gPG9wdGlvbj4tLWRpcm5hbWU8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEaXJlY3Rvcnkgd2hlcmUgbW9kdWxlcyBjYW4gYmUgZm91bmQsCisgICAgICAgICAgICA8ZmlsZW5hbWU+L2xpYi9tb2R1bGVzLzxyZXBsYWNlYWJsZT5SRUxFQVNFPC9yZXBsYWNlYWJsZT48L2ZpbGVuYW1lPgorICAgICAgICAgICAgYnkgZGVmYXVsdC4KKyAgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1maXJzdC10aW1lPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBOb3JtYWxseSwgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IHdpbGwgc3VjY2VlZCAoYW5kIGRvCisJICAgIG5vdGhpbmcpIGlmIHRvbGQgdG8gaW5zZXJ0IGEgbW9kdWxlIHdoaWNoIGlzIGFscmVhZHkKKwkgICAgcHJlc2VudCBvciB0byByZW1vdmUgYSBtb2R1bGUgd2hpY2ggaXNuJ3QgcHJlc2VudC4gIFRoaXMgaXMKKwkgICAgaWRlYWwgZm9yIHNpbXBsZSBzY3JpcHRzOyBob3dldmVyLCBtb3JlIGNvbXBsaWNhdGVkIHNjcmlwdHMgb2Z0ZW4KKwkgICAgd2FudCB0byBrbm93IHdoZXRoZXIgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IHJlYWxseQorCSAgICBkaWQgc29tZXRoaW5nOiB0aGlzIG9wdGlvbiBtYWtlcyBtb2Rwcm9iZSBmYWlsIGluIHRoZQorCSAgICBjYXNlIHRoYXQgaXQgYWN0dWFsbHkgZGlkbid0IGRvIGFueXRoaW5nLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi0tZm9yY2UtdmVybWFnaWM8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIEV2ZXJ5IG1vZHVsZSBjb250YWlucyBhIHNtYWxsIHN0cmluZyBjb250YWluaW5nIGltcG9ydGFudAorCSAgICBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUga2VybmVsIGFuZCBjb21waWxlciB2ZXJzaW9ucy4gIElmCisJICAgIGEgbW9kdWxlIGZhaWxzIHRvIGxvYWQgYW5kIHRoZSBrZXJuZWwgY29tcGxhaW5zIHRoYXQgdGhlCisJICAgICJ2ZXJzaW9uIG1hZ2ljIiBkb2Vzbid0IG1hdGNoLCB5b3UgY2FuIHVzZSB0aGlzIG9wdGlvbiB0bworCSAgICByZW1vdmUgaXQuICBOYXR1cmFsbHksIHRoaXMgY2hlY2sgaXMgdGhlcmUgZm9yIHlvdXIKKwkgICAgcHJvdGVjdGlvbiwgc28gdGhpcyB1c2luZyBvcHRpb24gaXMgZGFuZ2Vyb3VzIHVubGVzcworCSAgICB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KKwkgPC9wYXJhPgorCSA8cGFyYT4KKwkgICAgVGhpcyBhcHBsaWVzIHRvIGFueSBtb2R1bGVzIGluc2VydGVkOiBib3RoIHRoZSBtb2R1bGUgKG9yCisJICAgIGFsaWFzKSBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZCBhbnkgbW9kdWxlcyBvbiB3aGljaCBpdCBkZXBlbmRzLgorCSA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LS1mb3JjZS1tb2R2ZXJzaW9uPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBXaGVuIG1vZHVsZXMgYXJlIGNvbXBpbGVkIHdpdGggQ09ORklHX01PRFZFUlNJT05TIHNldCwgYQorCSAgICBzZWN0aW9uIGRldGFpbGluZyB0aGUgdmVyc2lvbnMgb2YgZXZlcnkgaW50ZXJmYWNlZCB1c2VkCisJICAgIGJ5IChvciBzdXBwbGllZCBieSkgdGhlIG1vZHVsZSBpcyBjcmVhdGVkLiAgSWYgYQorCSAgICBtb2R1bGUgZmFpbHMgdG8gbG9hZCBhbmQgdGhlIGtlcm5lbCBjb21wbGFpbnMgdGhhdCB0aGUKKwkgICAgbW9kdWxlIGRpc2FncmVlcyBhYm91dCBhIHZlcnNpb24gb2Ygc29tZSBpbnRlcmZhY2UsIHlvdQorCSAgICBjYW4gdXNlICItLWZvcmNlLW1vZHZlcnNpb24iIHRvIHJlbW92ZSB0aGUgdmVyc2lvbgorCSAgICBpbmZvcm1hdGlvbiBhbHRvZ2V0aGVyLiAgTmF0dXJhbGx5LCB0aGlzIGNoZWNrIGlzIHRoZXJlCisJICAgIGZvciB5b3VyIHByb3RlY3Rpb24sIHNvIHVzaW5nIHRoaXMgb3B0aW9uIGlzIGRhbmdlcm91cworCSAgICB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuCisJIDwvcGFyYT4KKwkgPHBhcmE+CisJICAgIFRoaXMgYXBwbGllcyBhbnkgbW9kdWxlcyBpbnNlcnRlZDogYm90aCB0aGUgbW9kdWxlIChvcgorCSAgICBhbGlhcykgb24gdGhlIGNvbW1hbmQgbGluZSBhbmQgYW55IG1vZHVsZXMgb24gd2hpY2ggaXQgZGVwZW5kcy4KKwkgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi1mPC9vcHRpb24+IDxvcHRpb24+LS1mb3JjZTwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgVHJ5IHRvIHN0cmlwIGFueSB2ZXJzaW9uaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIG1vZHVsZQorCSAgICB3aGljaCBtaWdodCBvdGhlcndpc2Ugc3RvcCBpdCBmcm9tIGxvYWRpbmc6IHRoaXMgaXMgdGhlCisJICAgIHNhbWUgYXMgdXNpbmcgYm90aCA8b3B0aW9uPi0tZm9yY2UtdmVybWFnaWM8L29wdGlvbj4gYW5kCisJICAgIDxvcHRpb24+LS1mb3JjZS1tb2R2ZXJzaW9uPC9vcHRpb24+LiAgTmF0dXJhbGx5LCB0aGVzZQorCSAgICBjaGVja3MgYXJlIHRoZXJlIGZvciB5b3VyIHByb3RlY3Rpb24sIHNvIHVzaW5nIHRoaXMgb3B0aW9uCisJICAgIGlzIGRhbmdlcm91cyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLgorCSA8L3BhcmE+CisJIDxwYXJhPgorCSAgICBUaGlzIGFwcGxpZXMgdG8gYW55IG1vZHVsZXMgaW5zZXJ0ZWQ6IGJvdGggdGhlIG1vZHVsZSAob3IKKwkgICAgYWxpYXMpIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGFueSBtb2R1bGVzIGl0IG9uIHdoaWNoIGl0IGRlcGVuZHMuCisJIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4taTwvb3B0aW9uPiA8b3B0aW9uPi0taWdub3JlLWluc3RhbGw8L29wdGlvbj4gPG9wdGlvbj4tLWlnbm9yZS1yZW1vdmU8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+VGhpcyBvcHRpb24gY2F1c2VzIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB0bworCQlpZ25vcmUgPGNvbW1hbmQ+aW5zdGFsbDwvY29tbWFuZD4gYW5kCisJCTxjb21tYW5kPnJlbW92ZTwvY29tbWFuZD4gY29tbWFuZHMgaW4gdGhlCisJCWNvbmZpZ3VyYXRpb24gZmlsZSAoaWYgYW55KSBmb3IgdGhlIG1vZHVsZSBzcGVjaWZpZWQgb24gdGhlCisJCWNvbW1hbmQgbGluZSAoYW55IGRlcGVuZGVudCBtb2R1bGVzIGFyZSBzdGlsbCBzdWJqZWN0CisJCXRvIGNvbW1hbmRzIHNldCBmb3IgdGhlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlKS4gQm90aAorCQk8Y29tbWFuZD5pbnN0YWxsPC9jb21tYW5kPiBhbmQgPGNvbW1hbmQ+cmVtb3ZlPC9jb21tYW5kPgorCQljb21tYW5kcyB3aWxsIGN1cnJlbnRseSBiZSBpZ25vcmVkIHdoZW4gdGhpcyBvcHRpb24gaXMgdXNlZAorCQlyZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHJlcXVlc3Qgd2FzIG1vcmUgc3BlY2lmaWNhbGx5CisJCW1hZGUgd2l0aCBvbmx5IG9uZSBvciBvdGhlciAoYW5kIG5vdCBib3RoKSBvZgorCQk8b3B0aW9uPi0taWdub3JlLWluc3RhbGw8L29wdGlvbj4gb3IKKwkJPG9wdGlvbj4tLWlnbm9yZS1yZW1vdmU8L29wdGlvbj4uCisJCVNlZSA8Y2l0ZXJlZmVudHJ5PgorPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmUuY29uZjwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKzwvY2l0ZXJlZmVudHJ5Pi4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tbDwvb3B0aW9uPiA8b3B0aW9uPi0tbGlzdDwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT5MaXN0IGFsbCBtb2R1bGVzIG1hdGNoaW5nIHRoZSBnaXZlbiB3aWxkY2FyZCAob3IgIioiCisJCWlmIG5vIHdpbGRjYXJkIGlzIGdpdmVuKS4gIFRoaXMgb3B0aW9uIGlzIHByb3ZpZGVkIGZvcgorCQliYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgbWF5IGdvIGF3YXkgaW4gZnV0dXJlOiBzZWUKKwkgICAgPGNpdGVyZWZlbnRyeT4KKwkgICAgICA8cmVmZW50cnl0aXRsZT5maW5kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+MTwvbWFudm9sbnVtPgorCSAgICA8L2NpdGVyZWZlbnRyeT4gYW5kCisJICAgIDxjaXRlcmVmZW50cnk+CisJICAgICAgPHJlZmVudHJ5dGl0bGU+YmFzZW5hbWU8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT4xPC9tYW52b2xudW0+CisJICAgIDwvY2l0ZXJlZmVudHJ5PiBmb3IgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlLgorCSA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LW48L29wdGlvbj4gPG9wdGlvbj4tLWRyeS1ydW48L29wdGlvbj4KKyAgICAgICAgPG9wdGlvbj4tLXNob3c8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+VGhpcyBvcHRpb24gZG9lcyBldmVyeXRoaW5nIGJ1dCBhY3R1YWxseSBpbnNlcnQgb3IKKwkJZGVsZXRlIHRoZSBtb2R1bGVzIChvciBydW4gdGhlIGluc3RhbGwgb3IgcmVtb3ZlCisJCWNvbW1hbmRzKS4gIENvbWJpbmVkIHdpdGggPG9wdGlvbj4tdjwvb3B0aW9uPiwgaXQgaXMKKwkJdXNlZnVsIGZvciBkZWJ1Z2dpbmcgcHJvYmxlbXMuIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMKKwkJYm90aCA8b3B0aW9uPi0tZHJ5LXJ1bjwvb3B0aW9uPiBhbmQgPG9wdGlvbj4tLXNob3c8L29wdGlvbj4KKwkJYWN0dWFsbHkgbWVhbiB0aGUgc2FtZSB0aGluZyBhbmQgYXJlIGludGVyY2hhbmdlYWJsZS4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tbzwvb3B0aW9uPiA8b3B0aW9uPi0tbmFtZTwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgVGhpcyBvcHRpb24gdHJpZXMgdG8gcmVuYW1lIHRoZSBtb2R1bGUgd2hpY2ggaXMgYmVpbmcKKwkgICAgaW5zZXJ0ZWQgaW50byB0aGUga2VybmVsLiAgU29tZSB0ZXN0aW5nIG1vZHVsZXMgY2FuCisJICAgIHVzZWZ1bGx5IGJlIGluc2VydGVkIG11bHRpcGxlIHRpbWVzLCBidXQgdGhlIGtlcm5lbAorCSAgICByZWZ1c2VzIHRvIGhhdmUgdHdvIG1vZHVsZXMgb2YgdGhlIHNhbWUgbmFtZS4gIE5vcm1hbGx5LAorCSAgICBtb2R1bGVzIHNob3VsZCBub3QgcmVxdWlyZSBtdWx0aXBsZSBpbnNlcnRpb25zLCBhcyB0aGF0CisJICAgIHdvdWxkIG1ha2UgdGhlbSB1c2VsZXNzIGlmIHRoZXJlIHdlcmUgbm8gbW9kdWxlIHN1cHBvcnQuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LXE8L29wdGlvbj4gPG9wdGlvbj4tLXF1aWV0PC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBXaXRoIHRoaXMgZmxhZywgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IHdvbid0IHByaW50IGFuIGVycm9yCisJICAgIG1lc3NhZ2UgaWYgeW91IHRyeSB0byByZW1vdmUgb3IgaW5zZXJ0IGEgbW9kdWxlIGl0IGNhbid0IGZpbmQgKGFuZAorCSAgICBpc24ndCBhbiBhbGlhcyBvcgorCSAgICA8Y29tbWFuZD5pbnN0YWxsPC9jb21tYW5kPi88Y29tbWFuZD5yZW1vdmU8L2NvbW1hbmQ+IGNvbW1hbmQpLgorCSAgICBIb3dldmVyLCBpdCB3aWxsIHN0aWxsIHJldHVybiB3aXRoIGEgbm9uLXplcm8gZXhpdCBzdGF0dXMuIFRoZQorCSAgICBrZXJuZWwgdXNlcyB0aGlzIHRvIG9wcG9ydHVuaXN0aWNhbGx5IHByb2JlIGZvciBtb2R1bGVzIHdoaWNoIG1pZ2h0CisJICAgIGV4aXN0IHVzaW5nIHJlcXVlc3RfbW9kdWxlLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi1SPC9vcHRpb24+IDxvcHRpb24+LS1yZXNvbHZlLWFsaWFzPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBQcmludCBhbGwgbW9kdWxlIG5hbWVzIG1hdGNoaW5nIGFuIGFsaWFzLiBUaGlzIGNhbiBiZSB1c2VmdWwKKwkgICAgZm9yIGRlYnVnZ2luZyBtb2R1bGUgYWxpYXMgcHJvYmxlbXMuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LXI8L29wdGlvbj4gPG9wdGlvbj4tLXJlbW92ZTwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgVGhpcyBvcHRpb24gY2F1c2VzIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB0byByZW1vdmUKKwkgICAgcmF0aGVyIHRoYW4gaW5zZXJ0IGEgbW9kdWxlLiAgSWYgdGhlIG1vZHVsZXMgaXQgZGVwZW5kcyBvbgorCSAgICBhcmUgYWxzbyB1bnVzZWQsIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPiB3aWxsIHRyeSB0bworCSAgICByZW1vdmUgdGhlbSB0b28uICBVbmxpa2UgaW5zZXJ0aW9uLCBtb3JlIHRoYW4gb25lIG1vZHVsZQorCSAgICBjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgKGl0IGRvZXMgbm90IG1ha2UKKwkgICAgc2Vuc2UgdG8gc3BlY2lmeSBtb2R1bGUgcGFyYW1ldGVycyB3aGVuIHJlbW92aW5nIG1vZHVsZXMpLgorCSAgPC9wYXJhPgorCSAgPHBhcmE+CisJICAgIFRoZXJlIGlzIHVzdWFsbHkgbm8gcmVhc29uIHRvIHJlbW92ZSBtb2R1bGVzLCBidXQgc29tZQorCSAgICBidWdneSBtb2R1bGVzIHJlcXVpcmUgaXQuICBZb3VyIGRpc3RyaWJ1dGlvbiBrZXJuZWwgbWF5IG5vdAorCSAgICBoYXZlIGJlZW4gYnVpbHQgdG8gc3VwcG9ydCByZW1vdmFsIG9mIG1vZHVsZXMgYXQgYWxsLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tUzwvb3B0aW9uPiA8b3B0aW9uPi0tc2V0LXZlcnNpb248L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIFNldCB0aGUga2VybmVsIHZlcnNpb24sIHJhdGhlciB0aGFuIHVzaW5nCisJICAgIDxjaXRlcmVmZW50cnk+PHJlZmVudHJ5dGl0bGU+dW5hbWU8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT4yPC9tYW52b2xudW0+PC9jaXRlcmVmZW50cnk+IHRvIGRlY2lkZSBvbiB0aGUga2VybmVsIHZlcnNpb24gKHdoaWNoIGRpY3RhdGVzIHdoZXJlIHRvCisJICAgIGZpbmQgdGhlIG1vZHVsZXMpLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi0tc2hvdy1kZXBlbmRzPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBMaXN0IHRoZSBkZXBlbmRlbmNpZXMgb2YgYSBtb2R1bGUgKG9yIGFsaWFzKSwgaW5jbHVkaW5nCisJICAgIHRoZSBtb2R1bGUgaXRzZWxmLiAgVGhpcyBwcm9kdWNlcyBhIChwb3NzaWJseSBlbXB0eSkgc2V0CisJICAgIG9mIG1vZHVsZSBmaWxlbmFtZXMsIG9uZSBwZXIgbGluZSwgZWFjaCBzdGFydGluZyB3aXRoCisJICAgICJpbnNtb2QiIGFuZCBpcyB0eXBpY2FsbHkgdXNlZCBieSBkaXN0cmlidXRpb25zIHRvIGRldGVybWluZQorCSAgICB3aGljaCBtb2R1bGVzIHRvIGluY2x1ZGUgd2hlbiBnZW5lcmF0aW5nIGluaXRyZC9pbml0cmFtZnMgaW1hZ2VzLgorCSAgICA8Y29tbWFuZD5JbnN0YWxsPC9jb21tbmQ+IGNvbW1hbmRzIHdoaWNoIGFwcGx5IGFyZSBzaG93biBwcmVmaXhlZCBieQorCSAgICAiaW5zdGFsbCIuICBJdCBkb2VzIG5vdCBydW4gYW55IG9mIHRoZSBpbnN0YWxsIGNvbW1hbmRzLiAgTm90ZSB0aGF0CisJICAgIDxjaXRlcmVmZW50cnk+PHJlZmVudHJ5dGl0bGU+bW9kaW5mbzwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT48L2NpdGVyZWZlbnRyeT4KKwkgICAgY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBkZXBlbmRlbmNpZXMgb2YgYSBtb2R1bGUgZnJvbSB0aGUKKwkgICAgbW9kdWxlIGl0c2VsZiwgYnV0IGtub3dzIG5vdGhpbmcgb2YgYWxpYXNlcyBvciBpbnN0YWxsIGNvbW1hbmRzLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tczwvb3B0aW9uPiA8b3B0aW9uPi0tc3lzbG9nPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBUaGlzIG9wdGlvbiBjYXVzZXMgYW55IGVycm9yIG1lc3NhZ2VzIHRvIGdvIHRocm91Z2ggdGhlCisJICAgIHN5c2xvZyBtZWNoYW5pc20gKGFzIExPR19EQUVNT04gd2l0aCBsZXZlbCBMT0dfTk9USUNFKQorCSAgICByYXRoZXIgdGhhbiB0byBzdGFuZGFyZCBlcnJvci4gIFRoaXMgaXMgYWxzbyBhdXRvbWF0aWNhbGx5CisJICAgIGVuYWJsZWQgd2hlbiBzdGRlcnIgaXMgdW5hdmFpbGFibGUuCisJICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisJICAgIFRoaXMgb3B0aW9uIGlzIHBhc3NlZCB0aHJvdWdoIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+CisJICAgIG9yIDxjb21tYW5kPnJlbW92ZTwvY29tbWFuZD4gY29tbWFuZHMgdG8gb3RoZXIKKwkgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGNvbW1hbmRzIGluIHRoZQorCSAgICBNT0RQUk9CRV9PUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi10PC9vcHRpb24+IDxvcHRpb24+LS10eXBlPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPlJlc3RyaWN0IDxvcHRpb24+LWw8L29wdGlvbj4gdG8gbW9kdWxlcworCQlpbiBkaXJlY3RvcmllcyBtYXRjaGluZyB0aGUKKwkJPHJlcGxhY2VhYmxlPmRpcm5hbWU8L3JlcGxhY2VhYmxlPiBnaXZlbi4gIFRoaXMgb3B0aW9uCisJCWlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhbmQgbWF5IGdvCisJCWF3YXkgaW4gZnV0dXJlOiBzZWUKKwkgICAgPGNpdGVyZWZlbnRyeT4KKwkgICAgICA8cmVmZW50cnl0aXRsZT5maW5kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+MTwvbWFudm9sbnVtPgorCSAgICA8L2NpdGVyZWZlbnRyeT4KKwkgICAgYW5kCisJICAgIDxjaXRlcmVmZW50cnk+CisJICAgICAgPHJlZmVudHJ5dGl0bGU+YmFzZW5hbWU8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT4xPC9tYW52b2xudW0+CisJICAgIDwvY2l0ZXJlZmVudHJ5PiBmb3IgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlLgorCSA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LVY8L29wdGlvbj4gPG9wdGlvbj4tLXZlcnNpb248L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+U2hvdyB2ZXJzaW9uIG9mIHByb2dyYW0gYW5kIGV4aXQuPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi12PC9vcHRpb24+IDxvcHRpb24+LS12ZXJib3NlPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBQcmludCBtZXNzYWdlcyBhYm91dCB3aGF0IHRoZSBwcm9ncmFtIGlzIGRvaW5nLiAgVXN1YWxseQorCSAgICA8Y29tbWFuZD5tb2Rwcm9iZTwvY29tbWFuZD4gb25seSBwcmludHMgbWVzc2FnZXMgaWYKKwkgICAgc29tZXRoaW5nIGdvZXMgd3JvbmcuCisJICA8L3BhcmE+CisgICAgICAgICAgPHBhcmE+CisJICAgIFRoaXMgb3B0aW9uIGlzIHBhc3NlZCB0aHJvdWdoIDxjb21tYW5kPmluc3RhbGw8L2NvbW1hbmQ+CisJICAgIG9yIDxjb21tYW5kPnJlbW92ZTwvY29tbWFuZD4gY29tbWFuZHMgdG8gb3RoZXIKKwkgICAgPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+IGNvbW1hbmRzIGluIHRoZQorCSAgICBNT0RQUk9CRV9PUFRJT05TIGVudmlyb25tZW50IHZhcmlhYmxlLgorCSAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgPC92YXJpYWJsZWxpc3Q+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+RU5WSVJPTk1FTlQ8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhlIE1PRFBST0JFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGFsc28gYmUgdXNlZCB0bworICAgICAgcGFzcyBhcmd1bWVudHMgdG8gPGNvbW1hbmQ+bW9kcHJvYmU8L2NvbW1hbmQ+LgorICAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT1BZUklHSFQ8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDAyLCBSdXN0eSBSdXNzZWxsLCBJQk0KKyAgICAgIENvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlNFRSBBTFNPPC90aXRsZT4KKyAgICA8cGFyYT4KKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmUuY29uZjwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmUuZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjU8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+aW5zbW9kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5ybW1vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bHNtb2Q8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4sCisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZGluZm88L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgorCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHNnbWwKK3NnbWwtb21pdHRhZzp0CitzZ21sLXNob3J0dGFnOnQKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1kZWZhdWx0LWR0ZC1maWxlOm5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZHVsZXMuZGVwLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL21vZHVsZXMuZGVwLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU4MDRjOQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2MvbW9kdWxlcy5kZXAuc2dtbApAQCAtMCwwICsxLDkxIEBACis8IWRvY3R5cGUgcmVmZW50cnkgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjQuMS8vRU4iIFsKKyAgPCFFTlRJVFkgZGViaWFuICAiPHByb2R1Y3RuYW1lPkRlYmlhbiBHTlUvTGludXg8L3Byb2R1Y3RuYW1lPiI+CisgIDwhRU5USVRZIGRvY2Jvb2sgIjxwcm9kdWN0bmFtZT5Eb2NCb29rPC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBzZ21sICAgICI8YWJicmV2PlNHTUw8L2FiYnJldj4iPgorXT4KKworPCEtLSBTdG9sZW4gZnJvbSBtYW51YWwgcGFnZSBmb3IgZG9jYm9vay10by1tYW4sIERvY0Jvb2sgc291cmNlIGZpbGUKKyAgICAgKEMpIDE5OTkgVy4gQm9yZ2VydCBkZWJhY2xlQGRlYmlhbi5vcmcKKworICAgICAkSWQ6IGRvY2Jvb2stdG8tbWFuLnNnbWwsdiAxLjggMjAwMi8wNC8yNyAxNToyODowMiBkZWJhY2xlIEV4cCAkIC0tPgorCis8cmVmZW50cnk+CisgIDxyZWZlbnRyeWluZm8+CisgICAgPGFkZHJlc3M+CisgICAgICA8ZW1haWw+amNtQGpvbm1hc3RlcnMub3JnPC9lbWFpbD4KKyAgICA8L2FkZHJlc3M+CisgICAgPGF1dGhvcj4KKyAgICAgIDxmaXJzdG5hbWU+Sm9uPC9maXJzdG5hbWU+CisgICAgICA8c3VybmFtZT5NYXN0ZXJzPC9zdXJuYW1lPgorICAgIDwvYXV0aG9yPgorICAgIDxkYXRlPjIwMTAtMDMtMDE8L2RhdGU+CisgIDwvcmVmZW50cnlpbmZvPgorICA8cmVmbWV0YT4KKyAgICA8cmVmZW50cnl0aXRsZT5tb2R1bGVzLmRlcC5iaW48L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgICAgPHJlZmVudHJ5dGl0bGU+bW9kdWxlcy5kZXA8L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT41PC9tYW52b2xudW0+CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+bW9kdWxlcy5kZXAuYmluPC9yZWZuYW1lPjxyZWZuYW1lPm1vZHVsZXMuZGVwPC9yZWZuYW1lPiA8cmVmcHVycG9zZT5Nb2R1bGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbjwvcmVmcHVycG9zZT4KKyAgPC9yZWZuYW1lZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRFU0NSSVBUSU9OPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgVGhlIDxmaWxlbmFtZT5tb2R1bGVzLmRlcC5iaW48L2ZpbGVuYW1lPiBhcyBnZW5lcmF0ZWQgYnkKKyAgICAgIG1vZHVsZS1pbml0LXRvb2xzIDxjb21tYW5kPmRlcG1vZDwvY29tbWFuZD4sIGxpc3RzIHRoZQorICAgICAgZGVwZW5kZW5jaWVzIGZvciBldmVyeSBtb2R1bGUgaW4gdGhlIGRpcmVjdG9yaWVzIHVuZGVyCisgICAgICA8ZmlsZW5hbWU+L2xpYi9tb2R1bGVzLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPnZlcnNpb248L3JlcGxhY2VhYmxlPiwKKyAgICAgIHdoZXJlIDxmaWxlbmFtZT5tb2R1bGVzLmRlcC5iaW48L2ZpbGVuYW1lPiAob3IgdGhlIGh1bWFuIHJlYWRhYmxlCisgICAgICB2ZXJzaW9uIDxmaWxlbmFtZT5tb2R1bGVzLmRlcDwvZmlsZW5hbWU+KSBpcyBhbHNvIGxvY2F0ZWQuIEl0IGlzCisgICAgICB1c2VkIGJ5IHV0aWxpdGllcyBzdWNoIGFzIDxjb21tYW5kPm1vZHByb2JlPC9jb21tYW5kPi4gVGhlCisgICAgICBiaW5hcnkgdmVyc2lvbiB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCwgaWYgaXQgd2FzIGdlbmVyYXRlZCBieQorICAgICAgYSBjb21wYXRpYmxlIHZlcnNpb24gb2YgPGNvbW1hbmQ+ZGVwbW9kPC9jb21tbmQ+LCB3aXRoIGZhbGxiYWNrCisgICAgICB0byB0aGUgZ2VuZXJpYyA8ZmlsZW5hbWU+bW9kdWxlcy5kZXA8L2ZpbGVuYW1lPi4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgICBUaGVzZSBmaWxlcyBhcmUgbm90IGludGVuZGVkIGZvciBlZGl0aW5nIG9yIHVzZSBieSBhbnkgYWRkaXRpb25hbAorICAgICAgdXRpbGl0aWVzIGFzIHRoZWlyIGZvcm1hdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBZb3UKKyAgICAgIHNob3VsZCB1c2UgdGhlCisgICAgICA8Y2l0ZXJlZmVudHJ5PjxyZWZlbnRyeXRpdGxlPm1vZGluZm88L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+PC9jaXRlcmVmZW50cnk+IGNvbW1hbmQgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IG1vZHVsZXMgaW4gYSBmdXR1cmUKKyAgICAgIHByb29mIGFuZCBjb21wYXRpYmxlIGZhc2hpb24gcmF0aGVyIHRoYW4gdG91Y2hpbmcgdGhlc2UgZmlsZXMuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkNPUFlSSUdIVDwvdGl0bGU+CisgICAgPHBhcmE+CisgICAgICBUaGlzIG1hbnVhbCBwYWdlIG9yaWdpbmFsbHkgQ29weXJpZ2h0IDIwMDIsIFJ1c3R5IFJ1c3NlbGwsIElCTQorICAgICAgQ29ycG9yYXRpb24uIE1haW50YWluZWQgYnkgSm9uIE1hc3RlcnMgYW5kIG90aGVycy4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+CisgIDxyZWZzZWN0MT4KKyAgICA8dGl0bGU+U0VFIEFMU088L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPmRlcG1vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+bW9kcHJvYmU8L3JlZmVudHJ5dGl0bGU+PG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgICAgICA8L2NpdGVyZWZlbnRyeT4KKyAgICA8L3BhcmE+CisgIDwvcmVmc2VjdDE+Cis8L3JlZmVudHJ5PgorCis8IS0tIEtlZXAgdGhpcyBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUKK0xvY2FsIHZhcmlhYmxlczoKK21vZGU6IHNnbWwKK3NnbWwtb21pdHRhZzp0CitzZ21sLXNob3J0dGFnOnQKK3NnbWwtbWluaW1pemUtYXR0cmlidXRlczpuaWwKK3NnbWwtYWx3YXlzLXF1b3RlLWF0dHJpYnV0ZXM6dAorc2dtbC1pbmRlbnQtc3RlcDoyCitzZ21sLWluZGVudC1kYXRhOnQKK3NnbWwtcGFyZW50LWRvY3VtZW50Om5pbAorc2dtbC1kZWZhdWx0LWR0ZC1maWxlOm5pbAorc2dtbC1leHBvc2VkLXRhZ3M6bmlsCitzZ21sLWxvY2FsLWNhdGFsb2dzOm5pbAorc2dtbC1sb2NhbC1lY2F0LWZpbGVzOm5pbAorRW5kOgorLS0+CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL3JtbW9kLnNnbWwgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZG9jL3JtbW9kLnNnbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQwMDliNwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9kb2Mvcm1tb2Quc2dtbApAQCAtMCwwICsxLDE1OSBAQAorPCFkb2N0eXBlIHJlZmVudHJ5IFBVQkxJQyAiLS8vT0FTSVMvL0RURCBEb2NCb29rIFY0LjEvL0VOIiBbCisgIDwhRU5USVRZIGRlYmlhbiAgIjxwcm9kdWN0bmFtZT5EZWJpYW4gR05VL0xpbnV4PC9wcm9kdWN0bmFtZT4iPgorICA8IUVOVElUWSBkb2Nib29rICI8cHJvZHVjdG5hbWU+RG9jQm9vazwvcHJvZHVjdG5hbWU+Ij4KKyAgPCFFTlRJVFkgc2dtbCAgICAiPGFiYnJldj5TR01MPC9hYmJyZXY+Ij4KK10+CisKKzwhLS0gU3RvbGVuIGZyb20gbWFudWFsIHBhZ2UgZm9yIGRvY2Jvb2stdG8tbWFuLCBEb2NCb29rIHNvdXJjZSBmaWxlCisgICAgIChDKSAxOTk5IFcuIEJvcmdlcnQgZGViYWNsZUBkZWJpYW4ub3JnCisKKyAgICAgJElkOiBkb2Nib29rLXRvLW1hbi5zZ21sLHYgMS44IDIwMDIvMDQvMjcgMTU6Mjg6MDIgZGViYWNsZSBFeHAgJCAtLT4KKworPHJlZmVudHJ5PgorICA8cmVmZW50cnlpbmZvPgorICAgIDxhZGRyZXNzPgorICAgICAgPGVtYWlsPmpjbUBqb25tYXN0ZXJzLm9yZzwvZW1haWw+CisgICAgPC9hZGRyZXNzPgorICAgIDxhdXRob3I+CisgICAgICA8Zmlyc3RuYW1lPkpvbjwvZmlyc3RuYW1lPgorICAgICAgPHN1cm5hbWU+TWFzdGVyczwvc3VybmFtZT4KKyAgICA8L2F1dGhvcj4KKyAgICA8ZGF0ZT4yMDEwLTAzLTAxPC9kYXRlPgorICA8L3JlZmVudHJ5aW5mbz4KKyAgPHJlZm1ldGE+CisgICAgPHJlZmVudHJ5dGl0bGU+cm1tb2Q8L3JlZmVudHJ5dGl0bGU+CisgICAgPG1hbnZvbG51bT44PC9tYW52b2xudW0+CisgIDwvcmVmbWV0YT4KKyAgPHJlZm5hbWVkaXY+CisgICAgPHJlZm5hbWU+cm1tb2Q8L3JlZm5hbWU+IDxyZWZwdXJwb3NlPnNpbXBsZSBwcm9ncmFtIHRvIHJlbW92ZSBhIG1vZHVsZSBmcm9tIHRoZSBMaW51eCBLZXJuZWw8L3JlZnB1cnBvc2U+CisgIDwvcmVmbmFtZWRpdj4KKyAgPHJlZnN5bm9wc2lzZGl2PgorICAgIDxjbWRzeW5vcHNpcz4KKyAgICAgIDxjb21tYW5kPnJtbW9kPC9jb21tYW5kPgorICAgICAgPGFyZz48b3B0aW9uPi1mPC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxvcHRpb24+LXc8L29wdGlvbj48L2FyZz4KKyAgICAgIDxhcmc+PG9wdGlvbj4tczwvb3B0aW9uPjwvYXJnPgorICAgICAgPGFyZz48b3B0aW9uPi12PC9vcHRpb24+PC9hcmc+CisgICAgICA8YXJnPjxyZXBsYWNlYWJsZT5tb2R1bGVuYW1lPC9yZXBsYWNlYWJsZT48L2FyZz4KKyAgICA8L2NtZHN5bm9wc2lzPgorICA8L3JlZnN5bm9wc2lzZGl2PgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPkRFU0NSSVBUSU9OPC90aXRsZT4KKworICAgIDxwYXJhPjxjb21tYW5kPnJtbW9kPC9jb21tYW5kPiBpcyBhIHRyaXZpYWwgcHJvZ3JhbSB0byByZW1vdmUgYQorICAgICAgbW9kdWxlICh3aGVuIG1vZHVsZSB1bmxvYWRpbmcgc3VwcG9ydCBpcyBwcm92aWRlZCkgZnJvbSB0aGUga2VybmVsLgorICAgICAgTW9zdCB1c2VycyB3aWxsIHdhbnQgdG8gdXNlCisgICAgICA8Y2l0ZXJlZmVudHJ5PgorCTxyZWZlbnRyeXRpdGxlPm1vZHByb2JlPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+IHdpdGggdGhlIDxvcHRpb24+LXI8L29wdGlvbj4gb3B0aW9uIGluc3RlYWQuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPk9QVElPTlM8L3RpdGxlPgorICAgIDx2YXJpYWJsZWxpc3Q+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48b3B0aW9uPi12PC9vcHRpb24+IDxvcHRpb24+LS12ZXJib3NlPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBQcmludCBtZXNzYWdlcyBhYm91dCB3aGF0IHRoZSBwcm9ncmFtIGlzIGRvaW5nLgorCSAgICBVc3VhbGx5IDxjb21tYW5kPnJtbW9kPC9jb21tYW5kPiBwcmludHMgbWVzc2FnZXMKKwkgICAgb25seSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tZjwvb3B0aW9uPiA8b3B0aW9uPi0tZm9yY2U8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIFRoaXMgb3B0aW9uIGNhbiBiZSBleHRyZW1lbHkgZGFuZ2Vyb3VzOiBpdCBoYXMgbm8gZWZmZWN0IHVubGVzcworCSAgICBDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCB3YXMgc2V0IHdoZW4gdGhlIGtlcm5lbCB3YXMKKwkgICAgY29tcGlsZWQuICBXaXRoIHRoaXMgb3B0aW9uLCB5b3UgY2FuIHJlbW92ZSBtb2R1bGVzIHdoaWNoIGFyZQorCSAgICBiZWluZyB1c2VkLCBvciB3aGljaCBhcmUgbm90IGRlc2lnbmVkIHRvIGJlIHJlbW92ZWQsIG9yIGhhdmUKKwkgICAgYmVlbiBtYXJrZWQgYXMgdW5zYWZlIChzZWUgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5sc21vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PikuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgIDx0ZXJtPjxvcHRpb24+LXc8L29wdGlvbj4gPG9wdGlvbj4tLXdhaXQ8L29wdGlvbj4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisJICAgIE5vcm1hbGx5LCA8Y29tbWFuZD5ybW1vZDwvY29tbWFuZD4gd2lsbCByZWZ1c2UgdG8KKwkgICAgdW5sb2FkIG1vZHVsZXMgd2hpY2ggYXJlIGluIHVzZS4gIFdpdGggdGhpcyBvcHRpb24sCisJICAgIDxjb21tYW5kPnJtbW9kPC9jb21tYW5kPiB3aWxsIGlzb2xhdGUgdGhlIG1vZHVsZSwgYW5kCisJICAgIHdhaXQgdW50aWwgdGhlIG1vZHVsZSBpcyBubyBsb25nZXIgdXNlZC4gIE5vdGhpbmcgbmV3CisJICAgIHdpbGwgYmUgYWJsZSB0byB1c2UgdGhlIG1vZHVsZSwgYnV0IGl0J3MgdXAgdG8geW91IHRvCisJICAgIG1ha2Ugc3VyZSB0aGUgY3VycmVudCB1c2VycyBldmVudHVhbGx5IGZpbmlzaCB3aXRoIGl0LgorCSAgICBTZWUgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5sc21vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PikgZm9yIGluZm9ybWF0aW9uIG9uIHVzYWdlIGNvdW50cy4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tczwvb3B0aW9uPiA8b3B0aW9uPi0tc3lzbG9nPC9vcHRpb24+CisgICAgICAgIDwvdGVybT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgIDxwYXJhPgorCSAgICBTZW5kIGVycm9ycyB0byBzeXNsb2cgaW5zdGVhZCBvZiBzdGFuZGFyZCBlcnJvci4KKwkgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICAgPHRlcm0+PG9wdGlvbj4tVjwvb3B0aW9uPiA8b3B0aW9uPi0tdmVyc2lvbjwvb3B0aW9uPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKwkgICAgU2hvdyB2ZXJzaW9uIG9mIHByb2dyYW0gYW5kIGV4aXQuCisJICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgPC9yZWZzZWN0MT4KKyAgPHJlZnNlY3QxPgorICAgIDx0aXRsZT5DT1BZUklHSFQ8L3RpdGxlPgorICAgIDxwYXJhPgorICAgICAgVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDAyLCBSdXN0eSBSdXNzZWxsLCBJQk0KKyAgICAgIENvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorICA8cmVmc2VjdDE+CisgICAgPHRpdGxlPlNFRSBBTFNPPC90aXRsZT4KKworICAgIDxwYXJhPgorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5tb2Rwcm9iZTwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PiwKKyAgICAgIDxjaXRlcmVmZW50cnk+CisJPHJlZmVudHJ5dGl0bGU+aW5zbW9kPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+LAorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5sc21vZDwvcmVmZW50cnl0aXRsZT48bWFudm9sbnVtPjg8L21hbnZvbG51bT4KKyAgICAgIDwvY2l0ZXJlZmVudHJ5PgorICAgICAgPGNpdGVyZWZlbnRyeT4KKwk8cmVmZW50cnl0aXRsZT5tb2RpbmZvPC9yZWZlbnRyeXRpdGxlPjxtYW52b2xudW0+ODwvbWFudm9sbnVtPgorICAgICAgPC9jaXRlcmVmZW50cnk+CisgICAgPC9wYXJhPgorICA8L3JlZnNlY3QxPgorPC9yZWZlbnRyeT4KKworPCEtLSBLZWVwIHRoaXMgY29tbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCitMb2NhbCB2YXJpYWJsZXM6Cittb2RlOiBzZ21sCitzZ21sLW9taXR0YWc6dAorc2dtbC1zaG9ydHRhZzp0CitzZ21sLW1pbmltaXplLWF0dHJpYnV0ZXM6bmlsCitzZ21sLWFsd2F5cy1xdW90ZS1hdHRyaWJ1dGVzOnQKK3NnbWwtaW5kZW50LXN0ZXA6Mgorc2dtbC1pbmRlbnQtZGF0YTp0CitzZ21sLXBhcmVudC1kb2N1bWVudDpuaWwKK3NnbWwtZGVmYXVsdC1kdGQtZmlsZTpuaWwKK3NnbWwtZXhwb3NlZC10YWdzOm5pbAorc2dtbC1sb2NhbC1jYXRhbG9nczpuaWwKK3NnbWwtbG9jYWwtZWNhdC1maWxlczpuaWwKK0VuZDoKKy0tPgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2VsZm9wcy5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2VsZm9wcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZTgwZWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZWxmb3BzLmMKQEAgLTAsMCArMSwxMTYgQEAKKy8qIFRoZSBuYXN0eSB3b3JrIG9mIHJlYWRpbmcgMzIgYW5kIDY0LWJpdCBtb2R1bGVzIGlzIGluIGhlcmUuICovCisjaW5jbHVkZSA8ZWxmLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgImRlcG1vZC5oIgorI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAiZWxmb3BzLmgiCisjaW5jbHVkZSAidGFibGVzLmgiCisjaW5jbHVkZSAiemxpYnN1cHBvcnQuaCIKKworI2luY2x1ZGUgInRlc3RpbmcuaCIKKworLyogU3ltYm9sIHR5cGVzLCByZXR1cm5lZCBieSBsb2FkX2RlcF9zeW1zICovCitzdGF0aWMgY29uc3QgY2hhciAqd2Vha19zeW0gPSAiVyI7CitzdGF0aWMgY29uc3QgY2hhciAqdW5kZWZfc3ltID0gIlUiOworCisvKiBkdW1wX21vZHZlcnNpb25zIGhlbHBlciAqLworc3RhdGljIGNvbnN0IGNoYXIgKnNraXBfZG90KGNvbnN0IGNoYXIgKnN0cikKK3sKKyAgICAgICAvKiBGb3Igb3VyIHB1cnBvc2VzLCAuZm9vIG1hdGNoZXMgZm9vLiAgUFBDNjQgbmVlZHMgdGhpcy4gKi8KKyAgICAgICBpZiAoc3RyICYmIHN0clswXSA9PSAnLicpCisgICAgICAgICAgICAgICByZXR1cm4gc3RyICsgMTsKKyAgICAgICByZXR1cm4gc3RyOworfQorCisjZGVmaW5lIEVMRjMyQklUCisjaW5jbHVkZSAiZWxmb3BzX2NvcmUuYyIKKyN1bmRlZiBFTEYzMkJJVAorCisjZGVmaW5lIEVMRjY0QklUCisjaW5jbHVkZSAiZWxmb3BzX2NvcmUuYyIKKyN1bmRlZiBFTEY2NEJJVAorCisvKgorICogQ2hlY2sgRUxGIGZpbGUgaGVhZGVyLgorICovCitzdGF0aWMgaW50IGVsZl9pZGVudCh2b2lkICpmaWxlLCB1bnNpZ25lZCBsb25nIGZzaXplLCBpbnQgKmNvbnYpCit7CisJLyogIlwxNzdFTEYiIDxieXRlPiB3aGVyZSBieXRlID0gMDAxIGZvciAzMi1iaXQsIDAwMiBmb3IgNjQgKi8KKwl1bnNpZ25lZCBjaGFyICppZGVudCA9IGZpbGU7CisKKwlpZiAoZnNpemUgPCBFSV9DTEFTUyB8fCBtZW1jbXAoZmlsZSwgRUxGTUFHLCBTRUxGTUFHKSAhPSAwKQorCQlyZXR1cm4gLUVOT0VYRUM7CS8qIE5vdCBhbiBFTEYgb2JqZWN0ICovCisJaWYgKGlkZW50W0VJX0RBVEFdID09IDAgfHwgaWRlbnRbRUlfREFUQV0gPiAyKQorCQlyZXR1cm4gLUVJTlZBTDsJCS8qIFVua25vd24gZW5kaWFubmVzcyAqLworCisJaWYgKGNvbnYgIT0gTlVMTCkKKwkJKmNvbnYgPSBuYXRpdmVfZW5kaWFubmVzcygpICE9IGlkZW50W0VJX0RBVEFdOworCXJldHVybiBpZGVudFtFSV9DTEFTU107Cit9CisKKy8qCisgKiBncmFiX2VsZl9maWxlIC0gcmVhZCBFTEYgZmlsZSBpbnRvIG1lbW9yeQorICogQHBhdGhhbWU6IGZpbGUgdG8gbG9hZAorICoKKyAqIFJldHVybnMgTlVMTCwgYW5kIGVycm5vIHNldCBvbiBlcnJvci4KKyAqLworc3RydWN0IGVsZl9maWxlICpncmFiX2VsZl9maWxlKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQoreworCXN0cnVjdCBlbGZfZmlsZSAqZmlsZTsKKworCWZpbGUgPSBtYWxsb2Moc2l6ZW9mKCpmaWxlKSk7CisJaWYgKCFmaWxlKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlnb3RvIGZhaWw7CisJfQorCWZpbGUtPnBhdGhuYW1lID0gc3RyZHVwKHBhdGhuYW1lKTsKKwlpZiAoIWZpbGUtPnBhdGhuYW1lKSB7CisJCWVycm5vID0gRU5PTUVNOworCQlnb3RvIGZhaWxfZnJlZV9maWxlOworCX0KKwlmaWxlLT5kYXRhID0gZ3JhYl9maWxlKHBhdGhuYW1lLCAmZmlsZS0+bGVuKTsKKwlpZiAoIWZpbGUtPmRhdGEpCisJCWdvdG8gZmFpbF9mcmVlX3BhdGhuYW1lOworCisJc3dpdGNoIChlbGZfaWRlbnQoZmlsZS0+ZGF0YSwgZmlsZS0+bGVuLCAmZmlsZS0+Y29udikpIHsKKwljYXNlIEVMRkNMQVNTMzI6CisJCWZpbGUtPm9wcyA9ICZtb2Rfb3BzMzI7CisJCWJyZWFrOworCWNhc2UgRUxGQ0xBU1M2NDoKKwkJZmlsZS0+b3BzID0gJm1vZF9vcHM2NDsKKwkJYnJlYWs7CisJY2FzZSAtRU5PRVhFQzogLyogTm90IGFuIEVMRiBvYmplY3QgKi8KKwljYXNlIC1FSU5WQUw6IC8qIFVua25vd24gZW5kaWFubmVzcyAqLworCWRlZmF1bHQ6IC8qIFVua25vd24gd29yZCBzaXplICovCisJCWVycm5vID0gRU5PRVhFQzsKKwkJZ290byBmYWlsOworCX0KKwlyZXR1cm4gZmlsZTsKKworZmFpbF9mcmVlX3BhdGhuYW1lOgorCWZyZWUoZmlsZS0+cGF0aG5hbWUpOworZmFpbF9mcmVlX2ZpbGU6CisJZnJlZShmaWxlKTsKK2ZhaWw6CisJcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgcmVsZWFzZV9lbGZfZmlsZShzdHJ1Y3QgZWxmX2ZpbGUgKmZpbGUpCit7CisJaW50IGVyciA9IGVycm5vOworCisJaWYgKCFmaWxlKQorCQlyZXR1cm47CisKKwlyZWxlYXNlX2ZpbGUoZmlsZS0+ZGF0YSwgZmlsZS0+bGVuKTsKKwlmcmVlKGZpbGUtPnBhdGhuYW1lKTsKKwlmcmVlKGZpbGUpOworCisJZXJybm8gPSBlcnI7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZWxmb3BzLmggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZWxmb3BzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY2YzhjZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9lbGZvcHMuaApAQCAtMCwwICsxLDg0IEBACisjaWZuZGVmIE1PRElOSVRUT09MU19NT0RVTEVPUFNfSAorI2RlZmluZSBNT0RJTklUVE9PTFNfTU9EVUxFT1BTX0gKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgImxvZ2dpbmcuaCIKKworLyogQWxsIHRoZSBpY2t5IHN0dWZmIHRvIGRvIHdpdGggbWFuaXB1bGF0aW5nIDY0IGFuZCAzMi1iaXQgbW9kdWxlcworICAgYmVsb25ncyBoZXJlLiAqLworc3RydWN0IG1vZHZlcl9pbmZvMzIKK3sKKwl1aW50MzJfdCBjcmM7CisJY2hhciBuYW1lWzY0IC0gc2l6ZW9mKHVpbnQzMl90KV07Cit9OworCitzdHJ1Y3QgbW9kdmVyX2luZm82NAoreworCXVpbnQ2NF90IGNyYzsKKwljaGFyIG5hbWVbNjQgLSBzaXplb2YodWludDY0X3QpXTsKK307CisKK3N0cnVjdCBlbGZfZmlsZQoreworCWNoYXIgKnBhdGhuYW1lOworCisJLyogRmlsZSBvcGVyYXRpb25zICovCisJc3RydWN0IG1vZHVsZV9vcHMgKm9wczsKKworCS8qIENvbnZlcnQgZW5kaWFuPyAqLworCWludCBjb252OworCisJLyogRmlsZSBjb250ZW50cyBhbmQgbGVuZ3RoLiAqLworCXZvaWQgKmRhdGE7CisJdW5zaWduZWQgbG9uZyBsZW47Cit9OworCisvKiBUYWJsZXMgZXh0cmFjdGVkIGZyb20gbW9kdWxlIGJ5IG9wcy0+ZmV0Y2hfdGFibGVzKCkuICovCitzdHJ1Y3QgbW9kdWxlX3RhYmxlcworeworCXVuc2lnbmVkIGludCBwY2lfc2l6ZTsKKwl2b2lkICpwY2lfdGFibGU7CisJdW5zaWduZWQgaW50IHVzYl9zaXplOworCXZvaWQgKnVzYl90YWJsZTsKKwl1bnNpZ25lZCBpbnQgaWVlZTEzOTRfc2l6ZTsKKwl2b2lkICppZWVlMTM5NF90YWJsZTsKKwl1bnNpZ25lZCBpbnQgY2N3X3NpemU7CisJdm9pZCAqY2N3X3RhYmxlOworCXVuc2lnbmVkIGludCBwbnBfc2l6ZTsKKwl2b2lkICpwbnBfdGFibGU7CisJdW5zaWduZWQgaW50IHBucF9jYXJkX3NpemU7CisJdW5zaWduZWQgaW50IHBucF9jYXJkX29mZnNldDsKKwl2b2lkICpwbnBfY2FyZF90YWJsZTsKKwl1bnNpZ25lZCBpbnQgaW5wdXRfc2l6ZTsKKwl2b2lkICppbnB1dF90YWJsZTsKKwl1bnNpZ25lZCBpbnQgaW5wdXRfdGFibGVfc2l6ZTsKKwl1bnNpZ25lZCBpbnQgc2VyaW9fc2l6ZTsKKwl2b2lkICpzZXJpb190YWJsZTsKKwl1bnNpZ25lZCBpbnQgb2Zfc2l6ZTsKKwl2b2lkICpvZl90YWJsZTsKK307CisKK3N0cnVjdCBtb2R1bGVfb3BzCit7CisJdm9pZCAqKCpsb2FkX3NlY3Rpb24pKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQljb25zdCBjaGFyICpzZWNuYW1lLCB1bnNpZ25lZCBsb25nICpzZWNzaXplKTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICooKmxvYWRfc3RyaW5ncykoc3RydWN0IGVsZl9maWxlICptb2R1bGUsCisJCWNvbnN0IGNoYXIgKnNlY25hbWUsIHN0cnVjdCBzdHJpbmdfdGFibGUgKnRibCk7CisJc3RydWN0IHN0cmluZ190YWJsZSAqKCpsb2FkX3N5bWJvbHMpKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQl1aW50NjRfdCAqKnZlcnNpb25zKTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICooKmxvYWRfZGVwX3N5bXMpKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICoqdHlwZXMsIHVpbnQ2NF90ICoqdmVyc2lvbnMpOworCXZvaWQgKCpmZXRjaF90YWJsZXMpKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQlzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdGFibGVzKTsKKwljaGFyICooKmdldF9hbGlhc2VzKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSk7CisJY2hhciAqKCpnZXRfbW9kaW5mbykoc3RydWN0IGVsZl9maWxlICptb2R1bGUsIHVuc2lnbmVkIGxvbmcgKnNpemUpOworCXZvaWQgKCpzdHJpcF9zZWN0aW9uKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwgY29uc3QgY2hhciAqc2VjbmFtZSk7CisJaW50ICgqZHVtcF9tb2R2ZXJzKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSk7Cit9OworCitleHRlcm4gc3RydWN0IG1vZHVsZV9vcHMgbW9kX29wczMyLCBtb2Rfb3BzNjQ7CisKK3N0cnVjdCBlbGZfZmlsZSAqZ3JhYl9lbGZfZmlsZShjb25zdCBjaGFyICpwYXRobmFtZSk7Cit2b2lkIHJlbGVhc2VfZWxmX2ZpbGUoc3RydWN0IGVsZl9maWxlICpmaWxlKTsKKworI2VuZGlmIC8qIE1PRElOSVRUT09MU19NT0RVTEVPUFNfSCAqLwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2VsZm9wc19jb3JlLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZWxmb3BzX2NvcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGE3OTQzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2VsZm9wc19jb3JlLmMKQEAgLTAsMCArMSw0NTYgQEAKKyNpZiBkZWZpbmVkKEVMRjMyQklUKQorCisjZGVmaW5lIFBFUkJJVCh4KSB4IyMzMgorI2RlZmluZSBFbGZQRVJCSVQoeCkgRWxmMzJfIyN4CisjZGVmaW5lIEVMRlBFUkJJVCh4KSBFTEYzMl8jI3gKKy8qIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyICovCisjZGVmaW5lIEVsZjMyX1VpbnQgRWxmMzJfV29yZAorCisjZWxpZiBkZWZpbmVkKEVMRjY0QklUKQorCisjZGVmaW5lIFBFUkJJVCh4KSB4IyM2NAorI2RlZmluZSBFbGZQRVJCSVQoeCkgRWxmNjRfIyN4CisjZGVmaW5lIEVMRlBFUkJJVCh4KSBFTEY2NF8jI3gKKy8qIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyICovCisjZGVmaW5lIEVsZjY0X1VpbnQgRWxmNjRfWHdvcmQKKworI2Vsc2UKKyMgIGVycm9yICJVbmRlZmluZWQgRUxGIHdvcmQgbGVuZ3RoIgorI2VuZGlmCisKK3N0YXRpYyB2b2lkICpQRVJCSVQoZ2V0X3NlY3Rpb24pKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQkJCSBjb25zdCBjaGFyICpzZWNuYW1lLAorCQkJCSBFbGZQRVJCSVQoU2hkcikgKipzZWNoZHIsCisJCQkJIHVuc2lnbmVkIGxvbmcgKnNlY3NpemUpCit7CisJdm9pZCAqZGF0YSA9IG1vZHVsZS0+ZGF0YTsKKwl1bnNpZ25lZCBsb25nIGxlbiA9IG1vZHVsZS0+bGVuOworCWludCBjb252ID0gbW9kdWxlLT5jb252OworCisJRWxmUEVSQklUKEVoZHIpICpoZHI7CisJRWxmUEVSQklUKFNoZHIpICpzZWNoZHJzOworCUVsZlBFUkJJVChPZmYpIGVfc2hvZmY7CisJRWxmUEVSQklUKEhhbGYpIGVfc2hudW0sIGVfc2hzdHJuZHg7CisJRWxmUEVSQklUKE9mZikgc2Vjb2Zmc2V0OworCisJY29uc3QgY2hhciAqc2VjbmFtZXM7CisJdW5zaWduZWQgaW50IGk7CisKKwkqc2Vjc2l6ZSA9IDA7CisKKwlpZiAobGVuIDw9IDAgfHwgbGVuIDwgc2l6ZW9mKCpoZHIpKQorCQlyZXR1cm4gTlVMTDsKKworCWhkciA9IGRhdGE7CisJZV9zaG9mZiA9IEVORChoZHItPmVfc2hvZmYsIGNvbnYpOworCWVfc2hudW0gPSBFTkQoaGRyLT5lX3NobnVtLCBjb252KTsKKwllX3Noc3RybmR4ID0gRU5EKGhkci0+ZV9zaHN0cm5keCwgY29udik7CisKKwlpZiAobGVuIDwgZV9zaG9mZiArIGVfc2hudW0gKiBzaXplb2Yoc2VjaGRyc1swXSkpCisJCXJldHVybiBOVUxMOworCisJc2VjaGRycyA9IGRhdGEgKyBlX3Nob2ZmOworCisJaWYgKGxlbiA8IEVORChzZWNoZHJzW2Vfc2hzdHJuZHhdLnNoX29mZnNldCwgY29udikpCisJCXJldHVybiBOVUxMOworCisJLyogRmluZCBzZWN0aW9uIGJ5IG5hbWU7IHJldHVybiBoZWFkZXIsIHBvaW50ZXIgYW5kIHNpemUuICovCisJc2VjbmFtZXMgPSBkYXRhICsgRU5EKHNlY2hkcnNbZV9zaHN0cm5keF0uc2hfb2Zmc2V0LCBjb252KTsKKwlmb3IgKGkgPSAxOyBpIDwgZV9zaG51bTsgaSsrKSB7CisJCWlmIChzdHJlcShzZWNuYW1lcyArIEVORChzZWNoZHJzW2ldLnNoX25hbWUsIGNvbnYpLCBzZWNuYW1lKSkgeworCQkJKnNlY3NpemUgPSBFTkQoc2VjaGRyc1tpXS5zaF9zaXplLCBjb252KTsKKwkJCXNlY29mZnNldCA9IEVORChzZWNoZHJzW2ldLnNoX29mZnNldCwgY29udik7CisJCQlpZiAoc2VjaGRyKQorCQkJCSpzZWNoZHIgPSBzZWNoZHJzICsgaTsKKwkJCWlmIChsZW4gPCBzZWNvZmZzZXQgKyAqc2Vjc2l6ZSkKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCXJldHVybiBkYXRhICsgc2Vjb2Zmc2V0OworCQl9CisJfQorCXJldHVybiBOVUxMOworfQorCisvKiBMb2FkIHRoZSBnaXZlbiBzZWN0aW9uOiBOVUxMIG9uIGVycm9yLiAqLworc3RhdGljIHZvaWQgKlBFUkJJVChsb2FkX3NlY3Rpb24pKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQkJCSAgY29uc3QgY2hhciAqc2VjbmFtZSwKKwkJCQkgIHVuc2lnbmVkIGxvbmcgKnNlY3NpemUpCit7CisJcmV0dXJuIFBFUkJJVChnZXRfc2VjdGlvbikobW9kdWxlLCBzZWNuYW1lLCBOVUxMLCBzZWNzaXplKTsKK30KKworc3RhdGljIHN0cnVjdCBzdHJpbmdfdGFibGUgKlBFUkJJVChsb2FkX3N0cmluZ3MpKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQkJCQkJIGNvbnN0IGNoYXIgKnNlY25hbWUsCisJCQkJCQkgc3RydWN0IHN0cmluZ190YWJsZSAqdGJsKQoreworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwljb25zdCBjaGFyICpzdHJpbmdzOworCisJc3RyaW5ncyA9IFBFUkJJVChsb2FkX3NlY3Rpb24pKG1vZHVsZSwgc2VjbmFtZSwgJnNpemUpOworCWlmIChzdHJpbmdzKSB7CisJCWlmIChzdHJpbmdzW3NpemUtMV0gIT0gMCkgeworCQkJd2FybigiJXMgbWF5IGJlIGNvcnJ1cHQ7IGFuIHVudGVybWluYXRlZCBzdHJpbmciCisJCQkgICAgICIgd2FzIGZvdW5kIGF0IHRoZSBlbmQgb2Ygc2VjdGlvbiAlc1xuIiwKKwkJCSAgICAgbW9kdWxlLT5wYXRobmFtZSwgc2VjbmFtZSk7CisJCX0KKwkJLyogU2tpcCBhbnkgemVybyBwYWRkaW5nLiAqLworCQl3aGlsZSAoIXN0cmluZ3NbMF0pIHsKKwkJCXN0cmluZ3MrKzsKKwkJCWlmIChzaXplLS0gPD0gMSkKKwkJCQlyZXR1cm4gdGJsOworCQl9CisJCWZvciAoOyBzdHJpbmdzOyBzdHJpbmdzID0gbmV4dF9zdHJpbmcoc3RyaW5ncywgJnNpemUpKQorCQkJdGJsID0gTk9GQUlMKHN0cnRibF9hZGQoc3RyaW5ncywgdGJsKSk7CisJfQorCXJldHVybiB0Ymw7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpQRVJCSVQobG9hZF9zeW1ib2xzKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCAqKnZlcnNpb25zKQoreworCXN0cnVjdCBzdHJpbmdfdGFibGUgKnN5bXRibCA9IE5VTEw7CisKKwlpZiAodmVyc2lvbnMpIHsKKwkJc3RhdGljIGNvbnN0IGNoYXIgY3JjW10gPSAiX19jcmNfIjsKKwkJc3RhdGljIGNvbnN0IGludCBjcmNfbGVuID0gc2l6ZW9mKGNyYykgLSAxOworCQl1bnNpZ25lZCBpbnQgbnVtX3N5bXMsIGk7CisJCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwkJRWxmUEVSQklUKFN5bSkgKnN5bXM7CisJCWNoYXIgKnN0cmluZ3M7CisJCWludCBjb252OworCisJCSp2ZXJzaW9ucyA9IE5VTEw7CisJCXN0cmluZ3MgPSBQRVJCSVQobG9hZF9zZWN0aW9uKShtb2R1bGUsICIuc3RydGFiIiwgJnNpemUpOworCQlzeW1zID0gUEVSQklUKGxvYWRfc2VjdGlvbikobW9kdWxlLCAiLnN5bXRhYiIsICZzaXplKTsKKwkJaWYgKCFzdHJpbmdzIHx8ICFzeW1zKQorCQkJZ290byBmYWxsYmFjazsKKwkJbnVtX3N5bXMgPSBzaXplIC8gc2l6ZW9mKHN5bXNbMF0pOworCQkqdmVyc2lvbnMgPSBOT0ZBSUwoY2FsbG9jKHNpemVvZigqKnZlcnNpb25zKSwgbnVtX3N5bXMpKTsKKworCQljb252ID0gbW9kdWxlLT5jb252OworCQlmb3IgKGkgPSAxOyBpIDwgbnVtX3N5bXM7IGkrKykgeworCQkJY29uc3QgY2hhciAqbmFtZTsKKwkJCW5hbWUgPSBzdHJpbmdzICsgRU5EKHN5bXNbaV0uc3RfbmFtZSwgY29udik7CisJCQlpZiAoc3RybmNtcChuYW1lLCBjcmMsIGNyY19sZW4pICE9IDApCisJCQkJY29udGludWU7CisJCQluYW1lICs9IGNyY19sZW47CisJCQlzeW10YmwgPSBOT0ZBSUwoc3RydGJsX2FkZChuYW1lLCBzeW10YmwpKTsKKwkJCSgqdmVyc2lvbnMpW3N5bXRibC0+Y250IC0gMV0gPSBFTkQoc3ltc1tpXS5zdF92YWx1ZSwKKwkJCQkJY29udik7CisJCX0KKwkJaWYgKCFzeW10YmwpIHsKKwkJCS8qIEVpdGhlciB0aGlzIG1vZHVsZSBkb2VzIG5vdCBleHBvcnQgYW55IHN5bWJvbHMsIG9yCisJCQkgKiBpdCB3YXMgY29tcGlsZWQgd2l0aG91dCBDT05GSUdfTU9EVkVSU0lPTlMuIElmIHRoZQorCQkJICogbGF0dGVyLCB3ZSB3aWxsIHByaW50IGEgd2FybmluZyBpbiBsb2FkX2RlcF9zeW1zLAorCQkJICogc28ganVzdCBzaWxlbnRseSBmYWxsYmFjayB0byBfX2tzeW10YWJfc3RyaW5ncyBpbgorCQkJICogYm90aCBjYXNlcy4KKwkJCSAqLworCQkJZnJlZSgqdmVyc2lvbnMpOworCQkJKnZlcnNpb25zID0gTlVMTDsKKwkJCWdvdG8gZmFsbGJhY2s7CisJCX0KKwkJcmV0dXJuIHN5bXRibDsKKwl9CitmYWxsYmFjazoKKwlyZXR1cm4gUEVSQklUKGxvYWRfc3RyaW5ncykobW9kdWxlLCAiX19rc3ltdGFiX3N0cmluZ3MiLCBzeW10YmwpOworfQorCitzdGF0aWMgY2hhciAqUEVSQklUKGdldF9hbGlhc2VzKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlyZXR1cm4gUEVSQklUKGxvYWRfc2VjdGlvbikobW9kdWxlLCAiLm1vZGFsaWFzIiwgc2l6ZSk7Cit9CisKK3N0YXRpYyBjaGFyICpQRVJCSVQoZ2V0X21vZGluZm8pKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLCB1bnNpZ25lZCBsb25nICpzaXplKQoreworCXJldHVybiBQRVJCSVQobG9hZF9zZWN0aW9uKShtb2R1bGUsICIubW9kaW5mbyIsIHNpemUpOworfQorCisjaWZuZGVmIFNUVF9SRUdJU1RFUgorI2RlZmluZSBTVFRfUkVHSVNURVIgICAgMTMgICAgICAgICAgICAgIC8qIEdsb2JhbCByZWdpc3RlciByZXNlcnZlZCB0byBhcHAuICovCisjZW5kaWYKKworc3RhdGljIHN0cnVjdCBzdHJpbmdfdGFibGUgKlBFUkJJVChsb2FkX2RlcF9zeW1zKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwKKwkJCQkJCSAgc3RydWN0IHN0cmluZ190YWJsZSAqKnR5cGVzLAorCQkJCQkJICB1aW50NjRfdCAqKnZlcnNpb25zKQoreworCXVuc2lnbmVkIGludCBpLCBudW1fc3ltczsKKwl1bnNpZ25lZCBpbnQgaiwgbnVtX3N5bXZlcnMsIHZlcnNpb25zX3NpemU7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWNoYXIgKnN0cmluZ3M7CisJRWxmUEVSQklUKFN5bSkgKnN5bXM7CisJRWxmUEVSQklUKEVoZHIpICpoZHI7CisJc3RydWN0IFBFUkJJVChtb2R2ZXJfaW5mbykgKipzeW12ZXJzOworCWludCBoYW5kbGVfcmVnaXN0ZXJfc3ltYm9sczsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpuYW1lczsKKwlpbnQgY29udjsKKworCW5hbWVzID0gTlVMTDsKKwkqdHlwZXMgPSBOVUxMOworCXN5bXZlcnMgPSBOVUxMOworCW51bV9zeW12ZXJzID0gdmVyc2lvbnNfc2l6ZSA9IDA7CisKKwlpZiAodmVyc2lvbnMpIHsKKwkJaW50IG9rID0gMTsKKwkJKnZlcnNpb25zID0gTlVMTDsKKwkJc3RydWN0IFBFUkJJVChtb2R2ZXJfaW5mbykgKnN5bXZlcnNfc2VjOworCisJCXN5bXZlcnNfc2VjID0gbW9kdWxlLT5vcHMtPmxvYWRfc2VjdGlvbihtb2R1bGUsICJfX3ZlcnNpb25zIiwKKwkJCQkmc2l6ZSk7CisJCWlmICghc3ltdmVyc19zZWMpIHsKKwkJCXdhcm4oIiVzIGlzIGJ1aWx0IHdpdGhvdXQgbW9kdmVyc2lvbnMiLAorCQkJCQltb2R1bGUtPnBhdGhuYW1lKTsKKwkJCW9rID0gMDsKKwkJfQorCQlpZiAoc2l6ZSAlIHNpemVvZihzeW12ZXJzWzBdKSAhPSAwKSB7CisJCQl3YXJuKCJpbnZhbGlkIF9fdmVyc2lvbnMgc2VjdGlvbiBzaXplIGluICVzIiwKKwkJCQkJbW9kdWxlLT5wYXRobmFtZSk7CisJCQlvayA9IDA7CisJCX0KKwkJaWYgKG9rKSB7CisJCQludW1fc3ltdmVycyA9IHNpemUgLyBzaXplb2Yoc3ltdmVyc19zZWNbMF0pOworCQkJLyogc3ltdmVycyBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgZWFjaCB2aXNpdGVkIGVudHJ5LgorCQkJICogVGhlIHRhYmxlIGFsc28gY29udGFpbnMgdGhlIGZha2Ugc3RydWN0X21vZHVsZSAvCisJCQkgKiBtb2R1bGVfbGF5b3V0IHN5bWJvbCB3aGljaCB3ZSBkb24ndCB3YW50IHRvIG1pc3MuCisJCQkgKi8KKwkJCXN5bXZlcnMgPSBOT0ZBSUwobWFsbG9jKG51bV9zeW12ZXJzICoKKwkJCQkJCXNpemVvZihzeW12ZXJzWzBdKSkpOworCQkJZm9yIChqID0gMDsgaiA8IG51bV9zeW12ZXJzOyBqKyspCisJCQkJc3ltdmVyc1tqXSA9ICZzeW12ZXJzX3NlY1tqXTsKKwkJfSBlbHNlIHsKKwkJCXZlcnNpb25zID0gTlVMTDsKKwkJfQorCX0KKworCXN0cmluZ3MgPSBQRVJCSVQobG9hZF9zZWN0aW9uKShtb2R1bGUsICIuc3RydGFiIiwgJnNpemUpOworCXN5bXMgPSBQRVJCSVQobG9hZF9zZWN0aW9uKShtb2R1bGUsICIuc3ltdGFiIiwgJnNpemUpOworCWlmICghc3RyaW5ncyB8fCAhc3ltcykgeworCQl3YXJuKCJDb3VsZG4ndCBmaW5kIHN5bXRhYiBhbmQgc3RydGFiIGluIG1vZHVsZSAlc1xuIiwKKwkJICAgICBtb2R1bGUtPnBhdGhuYW1lKTsKKwkJZ290byBvdXQ7CisJfQorCisJbnVtX3N5bXMgPSBzaXplIC8gc2l6ZW9mKHN5bXNbMF0pOworCWhkciA9IG1vZHVsZS0+ZGF0YTsKKwljb252ID0gbW9kdWxlLT5jb252OworCWlmICh2ZXJzaW9ucykgeworCQl2ZXJzaW9uc19zaXplID0gbnVtX3N5bXM7CisJCSp2ZXJzaW9ucyA9IE5PRkFJTChjYWxsb2Moc2l6ZW9mKCoqdmVyc2lvbnMpLCB2ZXJzaW9uc19zaXplKSk7CisJfQorCisJaGFuZGxlX3JlZ2lzdGVyX3N5bWJvbHMgPQorCQkoRU5EKGhkci0+ZV9tYWNoaW5lLCBjb252KSA9PSBFTV9TUEFSQyB8fAorCQkgRU5EKGhkci0+ZV9tYWNoaW5lLCBjb252KSA9PSBFTV9TUEFSQ1Y5KTsKKworCWZvciAoaSA9IDE7IGkgPCBudW1fc3ltczsgaSsrKSB7CisJCWlmIChFTkQoc3ltc1tpXS5zdF9zaG5keCwgY29udikgPT0gU0hOX1VOREVGKSB7CisJCQkvKiBMb29rIGZvciBzeW1ib2wgKi8KKwkJCWNvbnN0IGNoYXIgKm5hbWU7CisJCQlpbnQgd2VhazsKKworCQkJbmFtZSA9IHN0cmluZ3MgKyBFTkQoc3ltc1tpXS5zdF9uYW1lLCBjb252KTsKKworCQkJLyogTm90IHJlYWxseSB1bmRlZmluZWQ6IHNwYXJjIGdjYyAzLjMgY3JlYXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgVSByZWZlcmVuY2VzIHdoZW4geW91IGhhdmUgZ2xvYmFsIGFzbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCB0byBhdm9pZCBhbnlvbmUgZWxzZSBtaXN1c2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbS4gKi8KKwkJCWlmIChoYW5kbGVfcmVnaXN0ZXJfc3ltYm9scworCQkJICAgICYmIChFTEZQRVJCSVQoU1RfVFlQRSkoRU5EKHN5bXNbaV0uc3RfaW5mbywgY29udikpCisJCQkJPT0gU1RUX1JFR0lTVEVSKSkKKwkJCQljb250aW51ZTsKKworCQkJd2VhayA9IChFTEZQRVJCSVQoU1RfQklORCkoRU5EKHN5bXNbaV0uc3RfaW5mbywgY29udikpCisJCQkJPT0gU1RCX1dFQUspOworCQkJbmFtZXMgPSBOT0ZBSUwoc3RydGJsX2FkZChuYW1lLCBuYW1lcykpOworCQkJKnR5cGVzID0gTk9GQUlMKHN0cnRibF9hZGQod2VhayA/IHdlYWtfc3ltIDogdW5kZWZfc3ltLAorCQkJCSp0eXBlcykpOworCisJCQlpZiAoIXZlcnNpb25zKQorCQkJCWNvbnRpbnVlOworCQkJLyogTm90IG9wdGltYWwsIGJ1dCB0aGUgbnVtYmVyIG9mIHJlcXVpcmVkIHN5bWJvbHMKKwkJCSAqIGlzIHVzdWFsbHkgbm90IGh1Z2UgYW5kIHRoaXMgaXMgb25seSBjYWxsZWQgYnkKKwkJCSAqIGRlcG1vZC4KKwkJCSAqLworCQkJZm9yIChqID0gMDsgaiA8IG51bV9zeW12ZXJzOyBqKyspIHsKKwkJCQlzdHJ1Y3QgUEVSQklUKG1vZHZlcl9pbmZvKSAqaW5mbyA9IHN5bXZlcnNbal07CisKKwkJCQlpZiAoIWluZm8pCisJCQkJCWNvbnRpbnVlOworCQkJCWlmIChzdHJlcShuYW1lLCBpbmZvLT5uYW1lKSkgeworCQkJCQkoKnZlcnNpb25zKVtuYW1lcy0+Y250IC0gMV0gPQorCQkJCQkJRU5EKGluZm8tPmNyYywgY29udik7CisJCQkJCXN5bXZlcnNbal0gPSBOVUxMOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJLyogYWRkIHN0cnVjdF9tb2R1bGUgLyBtb2R1bGVfbGF5b3V0ICovCisJZm9yIChqID0gMDsgaiA8IG51bV9zeW12ZXJzOyBqKyspIHsKKwkJc3RydWN0IFBFUkJJVChtb2R2ZXJfaW5mbykgKmluZm8gPSBzeW12ZXJzW2pdOworCisJCWlmICghaW5mbykKKwkJCWNvbnRpbnVlOworCQlpZiAoKG5hbWVzID8gbmFtZXMtPmNudCA6IDApID49IHZlcnNpb25zX3NpemUpIHsKKwkJCXZlcnNpb25zX3NpemUrKzsKKwkJCSp2ZXJzaW9ucyA9IE5PRkFJTChyZWFsbG9jKCp2ZXJzaW9ucywgdmVyc2lvbnNfc2l6ZSkpOworCQl9CisJCW5hbWVzID0gTk9GQUlMKHN0cnRibF9hZGQoaW5mby0+bmFtZSwgbmFtZXMpKTsKKwkJKnR5cGVzID0gTk9GQUlMKHN0cnRibF9hZGQodW5kZWZfc3ltLCAqdHlwZXMpKTsKKwkJKCp2ZXJzaW9ucylbbmFtZXMtPmNudCAtIDFdID0gRU5EKGluZm8tPmNyYywgY29udik7CisJfQorb3V0OgorCWZyZWUoc3ltdmVycyk7CisJcmV0dXJuIG5hbWVzOworfQorCitzdGF0aWMgdm9pZCAqUEVSQklUKGRlcmVmX3N5bSkoRWxmUEVSQklUKEVoZHIpICpoZHIsCisJCQkgICAgICAgRWxmUEVSQklUKFNoZHIpICpzZWNoZHJzLAorCQkJICAgICAgIEVsZlBFUkJJVChTeW0pICpzeW0sCisJCQkgICAgICAgdW5zaWduZWQgaW50ICpzZWNzaXplLAorCQkJICAgICAgIGludCBjb252KQoreworCS8qIEluIEJTUz8gIEhhcHBlbnMgZm9yIGVtcHR5IGRldmljZSB0YWJsZXMgb24KKwkgKiByZWNlbnQgR0NDIHZlcnNpb25zLiAqLworCWlmIChFTkQoc2VjaGRyc1tFTkQoc3ltLT5zdF9zaG5keCwgY29udildLnNoX3R5cGUsY29udikgPT0gU0hUX05PQklUUykKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoc2Vjc2l6ZSkKKwkJKnNlY3NpemUgPSBFTkQoc3ltLT5zdF9zaXplLCBjb252KTsKKwlyZXR1cm4gKHZvaWQgKiloZHIKKwkJKyBFTkQoc2VjaGRyc1tFTkQoc3ltLT5zdF9zaG5keCwgY29udildLnNoX29mZnNldCwgY29udikKKwkJKyBFTkQoc3ltLT5zdF92YWx1ZSwgY29udik7Cit9CisKKy8qIEZJWE1FOiBDaGVjayBzaXplLCB1bmxlc3Mgd2UgZW5kIHVwIHVzaW5nIGFsaWFzZXMgYW55d2F5IC0tUlIgKi8KK3N0YXRpYyB2b2lkIFBFUkJJVChmZXRjaF90YWJsZXMpKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlLAorCQkJCSBzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdGFibGVzKQoreworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGxvbmcgc2l6ZTsKKwljaGFyICpzdHJpbmdzOworCUVsZlBFUkJJVChFaGRyKSAqaGRyOworCUVsZlBFUkJJVChTeW0pICpzeW1zOworCUVsZlBFUkJJVChTaGRyKSAqc2VjaGRyczsKKwlpbnQgY29udjsKKworCWhkciA9IG1vZHVsZS0+ZGF0YTsKKwljb252ID0gbW9kdWxlLT5jb252OworCisJc2VjaGRycyA9ICh2b2lkICopaGRyICsgRU5EKGhkci0+ZV9zaG9mZiwgY29udik7CisJc3RyaW5ncyA9IFBFUkJJVChsb2FkX3NlY3Rpb24pKG1vZHVsZSwgIi5zdHJ0YWIiLCAmc2l6ZSk7CisJc3ltcyA9IFBFUkJJVChsb2FkX3NlY3Rpb24pKG1vZHVsZSwgIi5zeW10YWIiLCAmc2l6ZSk7CisKKwkvKiBEb24ndCB3YXJuIGFnYWluOiB3ZSBhbHJlYWR5IGhhdmUgYWJvdmUgKi8KKwlpZiAoIXN0cmluZ3MgfHwgIXN5bXMpCisJCXJldHVybjsKKworCW1lbXNldCh0YWJsZXMsIDB4MDAsIHNpemVvZihzdHJ1Y3QgbW9kdWxlX3RhYmxlcykpOworCisJZm9yIChpID0gMDsgaSA8IHNpemUgLyBzaXplb2Yoc3ltc1swXSk7IGkrKykgeworCQljaGFyICpuYW1lID0gc3RyaW5ncyArIEVORChzeW1zW2ldLnN0X25hbWUsIGNvbnYpOworCisJCWlmICghdGFibGVzLT5wY2lfdGFibGUgJiYgc3RyZXEobmFtZSwgIl9fbW9kX3BjaV9kZXZpY2VfdGFibGUiKSkgeworCQkJdGFibGVzLT5wY2lfc2l6ZSA9IFBFUkJJVChQQ0lfREVWSUNFX1NJWkUpOworCQkJdGFibGVzLT5wY2lfdGFibGUgPSBQRVJCSVQoZGVyZWZfc3ltKShoZHIsIHNlY2hkcnMsICZzeW1zW2ldLAorCQkJCQkJCSAgICAgIE5VTEwsIGNvbnYpOworCQl9CisJCWVsc2UgaWYgKCF0YWJsZXMtPnVzYl90YWJsZSAmJiBzdHJlcShuYW1lLCAiX19tb2RfdXNiX2RldmljZV90YWJsZSIpKSB7CisJCQl0YWJsZXMtPnVzYl9zaXplID0gUEVSQklUKFVTQl9ERVZJQ0VfU0laRSk7CisJCQl0YWJsZXMtPnVzYl90YWJsZSA9IFBFUkJJVChkZXJlZl9zeW0pKGhkciwgc2VjaGRycywgJnN5bXNbaV0sCisJCQkJCQkJICAgICAgTlVMTCwgY29udik7CisJCX0KKwkJZWxzZSBpZiAoIXRhYmxlcy0+Y2N3X3RhYmxlICYmIHN0cmVxKG5hbWUsICJfX21vZF9jY3dfZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+Y2N3X3NpemUgPSBQRVJCSVQoQ0NXX0RFVklDRV9TSVpFKTsKKwkJCXRhYmxlcy0+Y2N3X3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkgICAgICBOVUxMLCBjb252KTsKKwkJfQorCQllbHNlIGlmICghdGFibGVzLT5pZWVlMTM5NF90YWJsZSAmJiBzdHJlcShuYW1lLCAiX19tb2RfaWVlZTEzOTRfZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+aWVlZTEzOTRfc2l6ZSA9IFBFUkJJVChJRUVFMTM5NF9ERVZJQ0VfU0laRSk7CisJCQl0YWJsZXMtPmllZWUxMzk0X3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkJICAgTlVMTCwgY29udik7CisJCX0KKwkJZWxzZSBpZiAoIXRhYmxlcy0+cG5wX3RhYmxlICYmIHN0cmVxKG5hbWUsICJfX21vZF9wbnBfZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+cG5wX3NpemUgPSBQRVJCSVQoUE5QX0RFVklDRV9TSVpFKTsKKwkJCXRhYmxlcy0+cG5wX3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkgICAgICBOVUxMLCBjb252KTsKKwkJfQorCQllbHNlIGlmICghdGFibGVzLT5wbnBfY2FyZF90YWJsZSAmJiBzdHJlcShuYW1lLCAiX19tb2RfcG5wX2NhcmRfZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+cG5wX2NhcmRfc2l6ZSA9IFBFUkJJVChQTlBfQ0FSRF9ERVZJQ0VfU0laRSk7CisJCQl0YWJsZXMtPnBucF9jYXJkX3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkJICAgTlVMTCwgY29udik7CisJCQl0YWJsZXMtPnBucF9jYXJkX29mZnNldCA9IFBFUkJJVChQTlBfQ0FSRF9ERVZJQ0VfT0ZGU0VUKTsKKwkJfQorCQllbHNlIGlmICghdGFibGVzLT5pbnB1dF90YWJsZSAmJiBzdHJlcShuYW1lLCAiX19tb2RfaW5wdXRfZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+aW5wdXRfc2l6ZSA9IFBFUkJJVChJTlBVVF9ERVZJQ0VfU0laRSk7CisJCQl0YWJsZXMtPmlucHV0X3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkgICAgICAgICZ0YWJsZXMtPmlucHV0X3RhYmxlX3NpemUsCisJCQkJCQkJICAgICAgICBjb252KTsKKwkJfQorCQllbHNlIGlmICghdGFibGVzLT5zZXJpb190YWJsZSAmJiBzdHJlcShuYW1lLCAiX19tb2Rfc2VyaW9fZGV2aWNlX3RhYmxlIikpIHsKKwkJCXRhYmxlcy0+c2VyaW9fc2l6ZSA9IFBFUkJJVChTRVJJT19ERVZJQ0VfU0laRSk7CisJCQl0YWJsZXMtPnNlcmlvX3RhYmxlID0gUEVSQklUKGRlcmVmX3N5bSkoaGRyLCBzZWNoZHJzLCAmc3ltc1tpXSwKKwkJCQkJCQkJTlVMTCwgY29udik7CisJCX0KKwkJZWxzZSBpZiAoIXRhYmxlcy0+b2ZfdGFibGUgJiYgc3RyZXEobmFtZSwgIl9fbW9kX29mX2RldmljZV90YWJsZSIpKSB7CisJCQl0YWJsZXMtPm9mX3NpemUgPSBQRVJCSVQoT0ZfREVWSUNFX1NJWkUpOworCQkJdGFibGVzLT5vZl90YWJsZSA9IFBFUkJJVChkZXJlZl9zeW0pKGhkciwgc2VjaGRycywgJnN5bXNbaV0sCisJCQkJCQkJICAgICBOVUxMLCBjb252KTsKKwkJfQorCX0KK30KKworLyoKKyAqIHN0cmlwX3NlY3Rpb24gLSB0ZWxsIHRoZSBrZXJuZWwgdG8gaWdub3JlIHRoZSBuYW1lZCBzZWN0aW9uCisgKi8KK3N0YXRpYyB2b2lkIFBFUkJJVChzdHJpcF9zZWN0aW9uKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwgY29uc3QgY2hhciAqc2VjbmFtZSkKK3sKKwl2b2lkICpwOworCUVsZlBFUkJJVChTaGRyKSAqc2VjaGRyOworCXVuc2lnbmVkIGxvbmcgc2Vjc2l6ZTsKKworCXAgPSBQRVJCSVQoZ2V0X3NlY3Rpb24pKG1vZHVsZSwgc2VjbmFtZSwgJnNlY2hkciwgJnNlY3NpemUpOworCWlmIChwKSB7CisJCUVsZlBFUkJJVChVaW50KSBtYXNrOworCQltYXNrID0gfigoRWxmUEVSQklUKFVpbnQpKVNIRl9BTExPQyk7CisJCXNlY2hkci0+c2hfZmxhZ3MgJj0gRU5EKG1hc2ssIG1vZHVsZS0+Y29udik7CisJfQorfQorCitzdGF0aWMgaW50IFBFUkJJVChkdW1wX21vZHZlcnNpb25zKShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSkKK3sKKwl1bnNpZ25lZCBsb25nIHNlY3NpemU7CisJc3RydWN0IFBFUkJJVChtb2R2ZXJfaW5mbykgKmluZm87CisJaW50IG4gPSAwOworCisJaW5mbyA9IG1vZHVsZS0+b3BzLT5sb2FkX3NlY3Rpb24obW9kdWxlLCAiX192ZXJzaW9ucyIsICZzZWNzaXplKTsKKwlpZiAoIWluZm8pCisJCXJldHVybiAwOyAvKiBub3QgYSBrZXJuZWwgbW9kdWxlICovCisJaWYgKHNlY3NpemUgJSBzaXplb2YoKmluZm8pICE9IDApCisJCXJldHVybiAtMTsgLyogaW52YWxpZCBzZWN0aW9uIHNpemUgKi8KKworCWZvciAobiA9IDA7IG4gPCBzZWNzaXplIC8gc2l6ZW9mKCppbmZvKTsgbisrKSB7CisjaWYgZGVmaW5lZChFTEYzMkJJVCkKKwkJcHJpbnRmKCIweCUwOGx4XHQlc1xuIiwgKHVuc2lnbmVkIGxvbmcpCisjZWxzZSAvKiBkZWZpbmVkKEVMRjY0QklUKSAqLworCQlwcmludGYoIjB4JTA4bGx4XHQlc1xuIiwgKHVuc2lnbmVkIGxvbmcgbG9uZykKKyNlbmRpZgorCQkJRU5EKGluZm9bbl0uY3JjLCBtb2R1bGUtPmNvbnYpLAorCQkJc2tpcF9kb3QoaW5mb1tuXS5uYW1lKSk7CisJfQorCXJldHVybiBuOworfQorCitzdHJ1Y3QgbW9kdWxlX29wcyBQRVJCSVQobW9kX29wcykgPSB7CisJLmxvYWRfc2VjdGlvbgk9IFBFUkJJVChsb2FkX3NlY3Rpb24pLAorCS5sb2FkX3N0cmluZ3MJPSBQRVJCSVQobG9hZF9zdHJpbmdzKSwKKwkubG9hZF9zeW1ib2xzCT0gUEVSQklUKGxvYWRfc3ltYm9scyksCisJLmxvYWRfZGVwX3N5bXMJPSBQRVJCSVQobG9hZF9kZXBfc3ltcyksCisJLmZldGNoX3RhYmxlcwk9IFBFUkJJVChmZXRjaF90YWJsZXMpLAorCS5nZXRfYWxpYXNlcwk9IFBFUkJJVChnZXRfYWxpYXNlcyksCisJLmdldF9tb2RpbmZvCT0gUEVSQklUKGdldF9tb2RpbmZvKSwKKwkuc3RyaXBfc2VjdGlvbgk9IFBFUkJJVChzdHJpcF9zZWN0aW9uKSwKKwkuZHVtcF9tb2R2ZXJzCT0gUEVSQklUKGR1bXBfbW9kdmVyc2lvbnMpLAorfTsKKworI3VuZGVmIFBFUkJJVAorI3VuZGVmIEVsZlBFUkJJVAorI3VuZGVmIEVMRlBFUkJJVApkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2dlbmVyYXRlLW1vZHByb2JlLmNvbmYgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvZ2VuZXJhdGUtbW9kcHJvYmUuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZDBkODk1Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2dlbmVyYXRlLW1vZHByb2JlLmNvbmYKQEAgLTAsMCArMSwyODEgQEAKKyMhIC9iaW4vc2ggLWUKKworIyBOYWl2ZSBzaGVsbCBzY3JpcHQgdG8gdHJhbnNsYXRlIG1vZHVsZXMuY29uZiArIGRlZmF1bHRzIHRvIG1vZHByb2JlLmNvbmYKKyMgTm9ybWFsIGNhdmVhdHMgYXBwbHksIGFzIHdpdGggYW55IG1hY2hpbmUgdHJhbnNsYXRpb24uCit1c2FnZSgpIHsKKwljYXQgPDwtRU9GCisJCVVzYWdlOiAkMCBbLS1hc3N1bWUta2VybmVsPW4ubi5uXSBbLS1zdGRpbl0gW21vZHByb2JlLmNvbmZdCisJCSAgIENvbnZlcnRzIHlvdXIgY3VycmVudCBtb2R1bGVzIHNldHVwIHRvIG1vZHByb2JlLmNvbmYuCisJCSAgIERvbid0IHRydXN0IGl0IHRvbyBtdWNoLgorCQkgVmVyc2lvbiAwLjEKKwlFT0YKKwlleGl0ICR7MTotMX0KK30KKworS1Y9JCh1bmFtZSAtcikKK1NURElOPQord2hpbGUgWyAtbiAiJDEiIF0gOyBkbworCWNhc2UgJDEgaW4KKwktLWFzc3VtZS1rZXJuZWwpICAgS1Y9JDI7IHNoaWZ0OzsKKwktLWFzc3VtZS1rZXJuZWw9KikgS1Y9JHsxIyo9fTs7CisJLS1zdGRpbikgICAgICAgICAgIFNURElOPTE7OworCS1ofC0taGVscCkgICAgICAgICB1c2FnZSAwOzsKKwkqKSAgICAgICAgICAgICAgICAgYnJlYWs7OworCWVzYWMKKwlzaGlmdAorZG9uZQorCisjIFNldCB1cCBvdXRwdXQgaWYgc3BlY2lmaWVkLgoraWYgWyAkIyAtZXEgMSBdIDsgdGhlbgorCWV4ZWMgPiAkMQorZWxzZQorCXVzYWdlIDEKK2ZpCisKK01PRFBST0JFQ09ORj1gbWt0ZW1wIC90bXAvbW9kcHJvYmUuWFhYWFhYIHx8IHRlbXBmaWxlIHx8IGVjaG8gL3RtcC9tb2Rwcm9iZS4kJGAKK3RyYXAgInJtIC1mICRNT0RQUk9CRUNPTkYiIDAKKworbW9kcHJvYmVfYWJvcnQoKQoreworICAgIGVjaG8gRmFpbGVkIHRvIHRvIHJ1biBtb2Rwcm9iZS4gIEdpdmluZyB1cC4gMT4mMgorICAgIGV4aXQgMQorfQorCitpZiBbIHgiJFRFU1RJTkdfTU9EUFJPQkVfQ09ORiIgIT0geCBdOyB0aGVuCisgICAgY3AgJFRFU1RJTkdfTU9EUFJPQkVfQ09ORiAkTU9EUFJPQkVDT05GCitlbGlmIFsgIiRTVERJTiIgPSAiMSIgXTsgdGhlbgorICAgIGNhdCA+ICRNT0RQUk9CRUNPTkYKK2VsaWYgWyAteCAvc2Jpbi9tb2Rwcm9iZS5vbGQgXTsgdGhlbgorICAgICMgSW4gc2Jpbi4KKyAgICAvc2Jpbi9tb2Rwcm9iZS5vbGQgLWMgPiAkTU9EUFJPQkVDT05GIHx8IG1vZHByb2JlX2Fib3J0CitlbGlmIG1vZHByb2JlLm9sZCAtYyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAjIFNvbWV3aGVyZSBpbiBwYXRoLgorICAgIG1vZHByb2JlLm9sZCAtYyA+ICRNT0RQUk9CRUNPTkYgfHwgbW9kcHJvYmVfYWJvcnQKK2VsaWYgL3NiaW4vbW9kcHJvYmUgLVYgMj4vZGV2L251bGwgfCBncmVwIC1xICdtb2Rwcm9iZSB2ZXJzaW9uJzsgdGhlbgorICAgICMgUnVubmluZyAvc2Jpbi9tb2Rwcm9iZSBnaXZlcyBvbGQgdmVyc2lvbi4KKyAgICAvc2Jpbi9tb2Rwcm9iZSAtYyA+ICRNT0RQUk9CRUNPTkYgfHwgbW9kcHJvYmVfYWJvcnQKK2VsaWYgbW9kcHJvYmUgLVYgMj4vZGV2L251bGwgfCBncmVwIC1xICdtb2Rwcm9iZSB2ZXJzaW9uJzsgdGhlbgorICAgICMgUnVubmluZyBtb2Rwcm9iZSBnaXZlcyBvbGQgdmVyc2lvbi4KKyAgICBtb2Rwcm9iZSAtYyA+ICRNT0RQUk9CRUNPTkYgfHwgbW9kcHJvYmVfYWJvcnQKK2Vsc2UKKyAgICBlY2hvIENhbm5vdCBmaW5kIG9sZCB2ZXJzaW9uIG9mIG1vZHByb2JlLiAgR2l2aW5nIHVwLiAyPiYxCisgICAgZXhpdCAxCitmaQorCisjIFJlc29sdmUgKHBvc3NpYmx5IHJlY3Vyc2l2ZSkgYWxpYXM6IGFyZ3MgZmlsZW5hbWUgYWxpYXMKK3Jlc29sdmVfYWxpYXMoKQoreworICAgIFJBX1JFU09MVkU9YGdyZXAgIl5hbGlhc1sgCV1bIAldKiQyWyAJXSIgLS0gJDEgfCBhd2sgJ3sgcHJpbnQgJDMgfSdgCisgICAgaWYgWyB4IiRSQV9SRVNPTFZFIiA9IHggXTsgdGhlbgorCWVjaG8gJDIKKwlyZXR1cm4KKyAgICBmaQorICAgICMgUmVjdXJzZS4KKyAgICAocmVzb2x2ZV9hbGlhcyAkMSAiJFJBX1JFU09MVkUiKQorfQorCisjIFBhcnNlIGFsaWFzOiBhcmdzIGZpbGVuYW1lIG1vZHVsZW5hbWUgYWxpYXN0by4KK3BhcnNlX2FsaWFzKCkKK3sKKyAgICBQQV9BTElBUz1gcmVzb2x2ZV9hbGlhcyAkMSAkM2AKKyAgICBOQU1FPWBlY2hvICQyfHNlZCAtZSAncy9cKGJsb2NrXHxjaGFyXCktbWFqb3ItXChbMC05XVwrXCkkL1wxLW1ham9yLVwyLSovJ2AKKworICAgIGVjaG8gImFsaWFzICROQU1FICRQQV9BTElBUyIKK30KKworIyBQYXJzZSBvcHRpb25zOiBhcmdzIG1vZHVsZW5hbWUgYWxpYXN0by4KK3BhcnNlX29wdGlvbnMoKQoreworICAgICMgU2Vjb25kIGFyZyBjYW4gYmUgbnVsbCBpZiBncmFiX25vbmluc3RhbGwgb3B0aW9ucyByZXR1cm5zIGVtcHR5LgorICAgIFsgeCIkMiIgPSB4IF0gfHwgZWNobyAib3B0aW9ucyAkMSAkMiIKK30KKworIyBTZXBhcmF0ZSBvdXQgdGhlIG1vZHByb2JlIG9wdGlvbnMgZnJvbSB0aGUgbW9kdWxlIG9wdGlvbnMKK2dyYWJfaW5zdGFsbF9vcHRpb25zKCkKK3sKKyAgICBHUkFCX09QVFM9IiIKKyAgICBHUkFCX05FWFQ9MAorICAgIGZvciBncmFiX2k7IGRvCisJY2FzZSAiJGdyYWJfaSIgaW4KKwktbykgR1JBQl9PUFRTPSIkR1JBQl9PUFRTIC1vIjsgR1JBQl9ORVhUPTE7OworCS0qKSBlY2hvIFdhcm5pbmc6IElnbm9yaW5nIHVua25vd24gYWxpYXMgb3B0aW9uICIkZ3JhYl9pIiA+JjI7OworCSopCisJICAgIFsgJEdSQUJfTkVYVCA9IDAgXSB8fCBHUkFCX09QVFM9IiRHUkFCX09QVFMgJGdyYWJfaSIKKwkgICAgR1JBQl9ORVhUPTAKKwkgICAgOzsKKwllc2FjCisgICAgZG9uZQorICAgIGVjaG8gIiRHUkFCX09QVFMiCit9CisKK2dyYWJfbm9uaW5zdGFsbF9vcHRpb25zKCkKK3sKKyAgICBHUkFCX09QVFM9IiIKKyAgICBHUkFCX05FWFQ9MAorICAgIGZvciBncmFiX2k7IGRvCisJY2FzZSAiJGdyYWJfaSIgaW4KKwktbykgR1JBQl9ORVhUPTE7OworCS0qKSA7OworCSopCisJICAgIFsgJEdSQUJfTkVYVCA9IDEgXSB8fCBHUkFCX09QVFM9IiRHUkFCX09QVFMgJGdyYWJfaSIKKwkgICAgR1JBQl9ORVhUPTAKKwkgICAgOzsKKwllc2FjCisgICAgZG9uZQorICAgIGVjaG8gIiRHUkFCX09QVFMiCit9CisKKyMgUHJvZHVjZSBhIG11bHRpcGxlIGluc3RhbGwvcmVtb3ZlIGNvbW1hbmRzLiBBcmdzOiBsaXN0LCBjb21tYW5kLCBzZXBhcmF0b3IuCittdWx0aSgpCit7CisgICAgbXBfcmVzPSIiCisgICAgZm9yIG1wX2FyZyBpbiAkMTsgZG8KKwlpZiBbIHgiJG1wX3JlcyIgPSB4IF07IHRoZW4gbXBfcmVzPSIvc2Jpbi8kMiAkbXBfYXJnIjsKKwllbHNlIG1wX3Jlcz0iJG1wX3JlcyR7M30vc2Jpbi8kMiAkbXBfYXJnIjsKKwlmaQorICAgIGRvbmUKKyAgICBlY2hvICIkbXBfcmVzIgorfQorCisjIEluc3RhbGwgYW5kIHJlbW92ZSBjb21tYW5kcyBmcmVxdWVudGx5IHJlZmVyIHRvIGluc21vZCBhbmQgcm1tb2QuCisjIFVzZSAibW9kcHJvYmUgLS1pZ25vcmUtaW5zdGFsbCAiIGFuZCAibW9kcHJvYmUgLXIgLS1pZ25vcmUtcmVtb3ZlIiBzaW5jZSAKKyMgb3VyIHZlcnNpb25zIG9mIHJtbW9kIGFuZCBpbnNtb2QgYXJlIGRlbGliZXJhdGVseSBzdHVwaWQuCitjb252ZXJ0X2NvbW1hbmQoKQoreworICAgIGVjaG8gIiRAIiB8IHNlZCAtZSAncyxpbnNtb2QsL3NiaW4vbW9kcHJvYmUgLS1pZ25vcmUtaW5zdGFsbCwnIC1lICdzLHJtbW9kLC9zYmluL21vZHByb2JlIC1yIC0taWdub3JlLXJlbW92ZSwnCit9CisKK3doaWxlIHJlYWQgQUREIE5BTUUgTU9EVUxFIFJFU1Q7IGRvCisgICAgIyBJZ25vcmUgYSBzcHVyaW91cyBhZGQsIG90aGVyd2lzZSBtb3ZlIHRoZW0gZG93bi4KKyAgICBpZiBbIHgiJEFERCIgPSB4ImFkZCIgXTsgdGhlbiA6OyBlbHNlCisJUkVTVD0iYGVjaG8gJE1PRFVMRSAkUkVTVCB8IHNlZCAncy8gKiQvLydgIgorCU1PRFVMRT0iJE5BTUUiCisJTkFNRT0iJEFERCI7CisgICAgZmkKKyAgICAjZWNobyAiTkFNRT0kTkFNRSBNT0RVTEU9JE1PRFVMRSBSRVNUPSRSRVNUIiA+JjIKKworICAgICMgTU9ETkFNRSBpcyB0aGUgY29udmVydGVkIG5hbWUgZm9yIHVzZSBpbiB2YXJpYWJsZXMuCisgICAgTU9ETkFNRT1gZWNobyAkTU9EVUxFIHwgdHIgLWMgQS1aYS16XzAtOSBfYAorICAgIGNhc2UgIiROQU1FIiBpbgorICAgICcjJyopIDogOzsgIyBDb21tZW50IAorICAgICcnKSA6IDs7ICAgIyBCbGFuayBsaW5lCisKKyAgICBrZWVwKSAjIERvIG5vdGhpbmcuCisJOzsKKworICAgIGFsaWFzKQorCWlmIFsgeCIkUkVTVCIgPSB4b2ZmIF0gfHwgWyB4IiRSRVNUIiA9IHhudWxsIF07IHRoZW4KKwkgICAgSU5TVEFMTF9DT01NQU5EUz0iJElOU1RBTExfQ09NTUFORFMgJE1PRFVMRSIKKwkgICAgZXZhbCBpbnN0YWxsXyRNT0ROQU1FPVwiL2Jpbi90cnVlXCIKKwllbHNlCisJICAgIHBhcnNlX2FsaWFzICRNT0RQUk9CRUNPTkYgIiRNT0RVTEUiICRSRVNUCisJZmkKKwk7OworCisgICAgb3B0aW9ucykgCisJIyBPcHRpb25zIHVzZWQgdG8gYmUgYWJsZSB0byBjb250YWluIGV4dHJhIGFyZ3MgdG8gaW5zbW9kCisJIyAoZWcuIC1vIGZvbykuICBOb3QgYW55IG1vcmUuCisJY2FzZSAiICRSRVNUIiBpbgorCSonICctWy1hLXpdKikKKwkgICAgcGFyc2Vfb3B0aW9ucyAkTU9EVUxFIGBncmFiX25vbmluc3RhbGxfb3B0aW9ucyAkUkVTVGAKKwkgICAgSU5TVEFMTF9PUFRJT05TPWBncmFiX2luc3RhbGxfb3B0aW9ucyAkUkVTVGAKKwkgICAgSU5TVEFMTF9DT01NQU5EUz0iJElOU1RBTExfQ09NTUFORFMgJE1PRFVMRSIKKwkgICAgZXZhbCBpbnN0YWxsXyRNT0ROQU1FPVwiL3NiaW4vbW9kcHJvYmUgJElOU1RBTExfT1BUSU9OUyAtLWlnbm9yZS1pbnN0YWxsIGByZXNvbHZlX2FsaWFzICRNT0RQUk9CRUNPTkYgJE1PRFVMRWBcIgorCSAgICA7OworCSopCisJICAgIHBhcnNlX29wdGlvbnMgJE1PRFVMRSAiJFJFU1QiCisJICAgIDs7CisJZXNhYworCTs7CisKKyAgICBhYm92ZSkKKwkjIFB1bGwgaW4gdGhlc2UgbW9kdWxlcyBhZnRlciBtZS4KKwlJTlNUQUxMX0NPTU1BTkRTPSIkSU5TVEFMTF9DT01NQU5EUyAkTU9EVUxFIgorCWV2YWwgcG9zdF9pbnN0YWxsXyRNT0ROQU1FPVwiYG11bHRpICIkUkVTVCIgJ21vZHByb2JlJyAnOyAnYFw7IC9iaW4vdHJ1ZVwiCisJUkVNT1ZFX0NPTU1BTkRTPSIkUkVNT1ZFX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBwcmVfcmVtb3ZlXyRNT0ROQU1FPVwiYG11bHRpICIkUkVTVCIgJ21vZHByb2JlIC1yJyAnOyAnYFwiCisJOzsKKyAgICBiZWxvdykKKwkjIFB1bGwgaW4gdGhlc2UgbW9kdWxlcyBiZWZvcmUgbWUuCisJSU5TVEFMTF9DT01NQU5EUz0iJElOU1RBTExfQ09NTUFORFMgJE1PRFVMRSIKKwlldmFsIHByZV9pbnN0YWxsXyRNT0ROQU1FPVwiYG11bHRpICIkUkVTVCIgJ21vZHByb2JlJyAnOyAnYFwiCisJUkVNT1ZFX0NPTU1BTkRTPSIkUkVNT1ZFX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBwb3N0X3JlbW92ZV8kTU9ETkFNRT1cImBtdWx0aSAiJFJFU1QiICdtb2Rwcm9iZSAtcicgJzsgJ2BcOyAvYmluL3RydWVcIgorCTs7CisgICAgcHJvYmUpIAorCUlOU1RBTExfQ09NTUFORFM9IiRJTlNUQUxMX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBpbnN0YWxsXyRNT0ROQU1FPVwiYG11bHRpICIkUkVTVCIgJ21vZHByb2JlJyAnIHx8ICdgXCIKKwk7OworICAgIHByb2JlYWxsKQorCSMgTm90IHF1aXRlIGNvcnJlY3QuICBJZiB0aGV5IGFsbCBmYWlsLCB3ZSBzaG91bGQgZmFpbC4KKwlJTlNUQUxMX0NPTU1BTkRTPSIkSU5TVEFMTF9DT01NQU5EUyAkTU9EVUxFIgorCWV2YWwgaW5zdGFsbF8kTU9ETkFNRT1cImBtdWx0aSAiJFJFU1QiICdtb2Rwcm9iZScgJzsgJ2BcOyAvYmluL3RydWVcIgorCTs7CisgICAgcG9zdC1pbnN0YWxsKQorCUlOU1RBTExfQ09NTUFORFM9IiRJTlNUQUxMX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBwb3N0X2luc3RhbGxfJE1PRE5BTUU9XCJgY29udmVydF9jb21tYW5kICIkUkVTVCJgXCIKKwk7OworICAgIHByZS1pbnN0YWxsKQorCUlOU1RBTExfQ09NTUFORFM9IiRJTlNUQUxMX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBwcmVfaW5zdGFsbF8kTU9ETkFNRT1cImBjb252ZXJ0X2NvbW1hbmQgIiRSRVNUImBcIgorCTs7CisgICAgaW5zdGFsbCkKKwlJTlNUQUxMX0NPTU1BTkRTPSIkSU5TVEFMTF9DT01NQU5EUyAkTU9EVUxFIgorCWV2YWwgaW5zdGFsbF8kTU9ETkFNRT1cImBjb252ZXJ0X2NvbW1hbmQgIiRSRVNUImBcIgorCTs7CisgICAgcG9zdC1yZW1vdmUpCisJUkVNT1ZFX0NPTU1BTkRTPSIkUkVNT1ZFX0NPTU1BTkRTICRNT0RVTEUiCisJZXZhbCBwb3N0X3JlbW92ZV8kTU9ETkFNRT1cImBjb252ZXJ0X2NvbW1hbmQgIiRSRVNUImBcIgorCTs7CisgICAgcHJlLXJlbW92ZSkKKwlSRU1PVkVfQ09NTUFORFM9IiRSRU1PVkVfQ09NTUFORFMgJE1PRFVMRSIKKwlldmFsIHByZV9yZW1vdmVfJE1PRE5BTUU9XCJgY29udmVydF9jb21tYW5kICIkUkVTVCJgXCIKKwk7OworICAgIHJlbW92ZSkKKwlSRU1PVkVfQ09NTUFORFM9IiRSRU1PVkVfQ09NTUFORFMgJE1PRFVMRSIKKwlldmFsIHJlbW92ZV8kTU9ETkFNRT1cImBjb252ZXJ0X2NvbW1hbmQgIiRSRVNUImBcIgorCTs7CisgICAgaW5jbHVkZSkKKwkjIFJlY3Vyc2UuCisJKCQwICRNT0RVTEUpCisJOzsKKyAgICAjIElnbm9yZSBkZWZhdWx0IGxpbmVzIHdoaWNoIGFyZSBub3QgcmVxdWlyZWQgYW55IG1vcmUuCisgICAgInBhdGhbYm9vdF09L2xpYi9tb2R1bGVzL2Jvb3QifCJwYXRoW3RvcGxldmVsXT0vbGliL21vZHVsZXMvJEtWInwicGF0aFt0b3BsZXZlbF09L2xpYi9tb2R1bGVzLzIuNCJ8InBhdGhba2VybmVsXT0vbGliL21vZHVsZXMva2VybmVsInwicGF0aFtmc109L2xpYi9tb2R1bGVzL2ZzInwicGF0aFtuZXRdPS9saWIvbW9kdWxlcy9uZXQifCJwYXRoW3Njc2ldPS9saWIvbW9kdWxlcy9zY3NpInwicGF0aFtibG9ja109L2xpYi9tb2R1bGVzL2Jsb2NrInwicGF0aFtjZHJvbV09L2xpYi9tb2R1bGVzL2Nkcm9tInwicGF0aFtpcHY0XT0vbGliL21vZHVsZXMvaXB2NCJ8InBhdGhbaXB2Nl09L2xpYi9tb2R1bGVzL2lwdjYifCJwYXRoW3NvdW5kXT0vbGliL21vZHVsZXMvc291bmQifCJwYXRoW2ZjNF09L2xpYi9tb2R1bGVzL2ZjNCJ8InBhdGhbdmlkZW9dPS9saWIvbW9kdWxlcy92aWRlbyJ8InBhdGhbbWlzY109L2xpYi9tb2R1bGVzL21pc2MifCJwYXRoW3BjbWNpYV09L2xpYi9tb2R1bGVzL3BjbWNpYSJ8InBhdGhbYXRtXT0vbGliL21vZHVsZXMvYXRtInwicGF0aFt1c2JdPS9saWIvbW9kdWxlcy91c2IifCJwYXRoW2lkZV09L2xpYi9tb2R1bGVzL2lkZSJ8InBhdGhbaWVlZTEzOTRdPS9saWIvbW9kdWxlcy9pZWVlMTM5NCJ8InBhdGhbbXRkXT0vbGliL21vZHVsZXMvbXRkInwiZ2VuZXJpY19zdHJpbmdmaWxlPS9saWIvbW9kdWxlcy8kS1YvbW9kdWxlcy5nZW5lcmljX3N0cmluZyJ8InBjaW1hcGZpbGU9L2xpYi9tb2R1bGVzLyRLVi9tb2R1bGVzLnBjaW1hcCJ8ImlzYXBucG1hcGZpbGU9L2xpYi9tb2R1bGVzLyRLVi9tb2R1bGVzLmlzYXBucG1hcCJ8InVzYm1hcGZpbGU9L2xpYi9tb2R1bGVzLyRLVi9tb2R1bGVzLnVzYm1hcCJ8InBhcnBvcnRtYXBmaWxlPS9saWIvbW9kdWxlcy8kS1YvbW9kdWxlcy5wYXJwb3J0bWFwInwiaWVlZTEzOTRtYXBmaWxlPS9saWIvbW9kdWxlcy8kS1YvbW9kdWxlcy5pZWVlMTM5NG1hcCJ8InBucGJpb3NtYXBmaWxlPS9saWIvbW9kdWxlcy8kS1YvbW9kdWxlcy5wbnBiaW9zbWFwInwiZGVwZmlsZT0vbGliL21vZHVsZXMvJEtWL21vZHVsZXMuZGVwInwicGVyc2lzdGRpcj0vdmFyL2xpYi9tb2R1bGVzL3BlcnNpc3QiKQorCTs7CisKKyAgICAjIElnbm9yZSBwcnVuZSBsaW5lcyB1bmxlc3MgdGhleSBlbmQgaW4gLm8gb3IgLmtvLCB3aGljaCB3b3VsZAorICAgICMgaGF2ZSBhbiBlZmZlY3QuCisgICAgcHJ1bmUpCisJY2FzZSAiJE1PRFVMRSIgaW4KKwkqLmtvfCoubykKKwkgICAgZWNobyAiV2FybmluZzogbm90IHRyYW5zbGF0aW5nICROQU1FICRNT0RVTEUgJFJFU1QiID4mMgorCSAgICA7OworCWVzYWMKKwk7OworICAgICopCisJZWNobyAiV2FybmluZzogbm90IHRyYW5zbGF0aW5nICROQU1FICRNT0RVTEUgJFJFU1QiID4mMgorCTs7CisgICAgZXNhYworZG9uZSA8ICRNT0RQUk9CRUNPTkYKKworZm9yIG1vZCBpbiBgZWNobyAkSU5TVEFMTF9DT01NQU5EUyB8IHRyICcgJyAnXG4nIHwgc29ydCAtdWA7IGRvCisgICAgIyBNT0ROQU1FIGlzIHRoZSBjb252ZXJ0ZWQgbmFtZSBmb3IgdXNlIGluIHZhcmlhYmxlcy4KKyAgICBNT0ROQU1FPWBlY2hvICRtb2QgfCB0ciAtYyBBLVphLXpfMC05IF9gCisgICAgZXZhbCBQUkVJTlNUQUxMPVwiXCRwcmVfaW5zdGFsbF8kTU9ETkFNRVwiCisgICAgZXZhbCBQT1NUSU5TVEFMTD1cIlwkcG9zdF9pbnN0YWxsXyRNT0ROQU1FXCIKKyAgICBldmFsIElOU1RBTEw9XCJcJFx7aW5zdGFsbF8kTU9ETkFNRTotL3NiaW4vbW9kcHJvYmUgLS1maXJzdC10aW1lIC0taWdub3JlLWluc3RhbGwgJG1vZH1cIgorICAgIGlmIFsgLW4gIiRQUkVJTlNUQUxMIiBdOyB0aGVuIFBSRUlOU1RBTEw9InsgJFBSRUlOU1RBTEw7IH0gOyAiOyBmaQorICAgIGlmIFsgLW4gIiRQT1NUSU5TVEFMTCIgXTsgdGhlbiBQT1NUSU5TVEFMTD0iJiYgeyAkUE9TVElOU1RBTEw7IH0iOyBmaQorICAgIGVjaG8gaW5zdGFsbCAkbW9kICRQUkVJTlNUQUxMICRJTlNUQUxMICRQT1NUSU5TVEFMTAorZG9uZQorCitmb3IgbW9kIGluIGBlY2hvICRSRU1PVkVfQ09NTUFORFMgfCB0ciAnICcgJ1xuJyB8IHNvcnQgLXVgOyBkbworICAgICMgTU9ETkFNRSBpcyB0aGUgY29udmVydGVkIG5hbWUgZm9yIHVzZSBpbiB2YXJpYWJsZXMuCisgICAgTU9ETkFNRT1gZWNobyAkbW9kIHwgdHIgLWMgQS1aYS16XzAtOSBfYAorICAgIGV2YWwgUFJFUkVNT1ZFPVwiXCRwcmVfcmVtb3ZlXyRNT0ROQU1FXCIKKyAgICBldmFsIFBPU1RSRU1PVkU9XCJcJHBvc3RfcmVtb3ZlXyRNT0ROQU1FXCIKKyAgICBldmFsIFJFTU9WRT1cIlwkXHtyZW1vdmVfJE1PRE5BTUU6LS9zYmluL21vZHByb2JlIC1yIC0tZmlyc3QtdGltZSAtLWlnbm9yZS1yZW1vdmUgJG1vZH1cIgorICAgIGlmIFsgLW4gIiRQUkVSRU1PVkUiIF07IHRoZW4gUFJFUkVNT1ZFPSJ7ICRQUkVSRU1PVkU7IH0gOyAiOyBmaQorICAgIGlmIFsgLW4gIiRQT1NUUkVNT1ZFIiBdOyB0aGVuIFBPU1RSRU1PVkU9IiYmIHsgJFBPU1RSRU1PVkU7IH0iOyBmaQorICAgIGVjaG8gcmVtb3ZlICRtb2QgJFBSRVJFTU9WRSAkUkVNT1ZFICRQT1NUUkVNT1ZFCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvaW5kZXguYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbmRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5N2JhMWQKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvaW5kZXguYwpAQCAtMCwwICsxLDgwNyBAQAorLyogaW5kZXguYzogbW9kdWxlIGluZGV4IGZpbGUgc2hhcmVkIGZ1bmN0aW9ucyBmb3IgbW9kcHJvYmUgYW5kIGRlcG1vZAorICAgIENvcHlyaWdodCAoQykgMjAwOCAgQWxhbiBKZW5raW5zIDxhbGFuLWplbmtpbnNAdHVmZm1haWwuY28udWs+LgorCisgICAgVGhlc2UgcHJvZ3JhbXMgYXJlIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhlc2UgcHJvZ3JhbXMuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisqLworCisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+IC8qIGh0b25sICovCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZubWF0Y2guaD4KKworI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAiaW5kZXguaCIKKworI2luY2x1ZGUgInRlc3RpbmcuaCIKKworLyoKKyAqIEluZGV4IGFic3RyYWN0IGRhdGEgdHlwZSAodXNlZCBvbmx5IGJ5IGRlcG1vZCkKKyAqLworCitzdHJ1Y3QgaW5kZXhfbm9kZSAqaW5kZXhfY3JlYXRlKCkKK3sKKwlzdHJ1Y3QgaW5kZXhfbm9kZSAqbm9kZTsKKworCW5vZGUgPSBOT0ZBSUwoY2FsbG9jKHNpemVvZihzdHJ1Y3QgaW5kZXhfbm9kZSksIDEpKTsKKwlub2RlLT5wcmVmaXggPSBOT0ZBSUwoc3RyZHVwKCIiKSk7CisJbm9kZS0+Zmlyc3QgPSBJTkRFWF9DSElMRE1BWDsKKwkKKwlyZXR1cm4gbm9kZTsKK30KKwordm9pZCBpbmRleF92YWx1ZXNfZnJlZShzdHJ1Y3QgaW5kZXhfdmFsdWUgKnZhbHVlcykKK3sKKwl3aGlsZSAodmFsdWVzKSB7CisJCXN0cnVjdCBpbmRleF92YWx1ZSAqdmFsdWUgPSB2YWx1ZXM7CisKKwkJdmFsdWVzID0gdmFsdWUtPm5leHQ7CisJCWZyZWUodmFsdWUpOworCX0KK30KKwordm9pZCBpbmRleF9kZXN0cm95KHN0cnVjdCBpbmRleF9ub2RlICpub2RlKQoreworCWludCBjOworCQorCWZvciAoYyA9IG5vZGUtPmZpcnN0OyBjIDw9IG5vZGUtPmxhc3Q7IGMrKykgeworCQlzdHJ1Y3QgaW5kZXhfbm9kZSAqY2hpbGQgPSBub2RlLT5jaGlsZHJlbltjXTsKKwkJCisJCWlmIChjaGlsZCkKKwkJCWluZGV4X2Rlc3Ryb3koY2hpbGQpOworCX0KKwlpbmRleF92YWx1ZXNfZnJlZShub2RlLT52YWx1ZXMpOworCWZyZWUobm9kZS0+cHJlZml4KTsKKwlmcmVlKG5vZGUpOworfQorCitzdGF0aWMgdm9pZCBpbmRleF9fY2hlY2tzdHJpbmcoY29uc3QgY2hhciAqc3RyKQoreworCWludCBpOworCQorCWZvciAoaSA9IDA7IHN0cltpXTsgaSsrKSB7CisJCWludCBjaCA9IHN0cltpXTsKKwkJCisJCWlmIChjaCA+PSBJTkRFWF9DSElMRE1BWCkKKwkJCWZhdGFsKCJNb2R1bGUgaW5kZXg6IGJhZCBjaGFyYWN0ZXIgJyVjJz0weCV4IC0gb25seSA3LWJpdCBBU0NJSSBpcyBzdXBwb3J0ZWQ6IgorCQkJICAgICAgIlxuJXNcbiIsIChjaGFyKSBjaCwgKGludCkgY2gsIHN0cik7CisJfQorfQorCitzdGF0aWMgaW50IGFkZF92YWx1ZShzdHJ1Y3QgaW5kZXhfdmFsdWUgKip2YWx1ZXMsCisJCSAgICAgY29uc3QgY2hhciAqdmFsdWUsIHVuc2lnbmVkIGludCBwcmlvcml0eSkKK3sKKwlzdHJ1Y3QgaW5kZXhfdmFsdWUgKnY7CisJaW50IGR1cGxpY2F0ZSA9IDA7CisJaW50IGxlbjsKKworCS8qIHJlcG9ydCB0aGUgcHJlc2VuY2Ugb2YgZHVwbGljYXRlIHZhbHVlcyAqLworCWZvciAodiA9ICp2YWx1ZXM7IHY7IHYgPSB2LT5uZXh0KSB7CisJCWlmIChzdHJlcSh2LT52YWx1ZSwgdmFsdWUpKQorCQkJZHVwbGljYXRlID0gMTsKKwl9CisKKwkvKiBmaW5kIHBvc2l0aW9uIHRvIGluc2VydCB2YWx1ZSAqLworCXdoaWxlICgqdmFsdWVzICYmICgqdmFsdWVzKS0+cHJpb3JpdHkgPCBwcmlvcml0eSkKKwkJdmFsdWVzID0gJigqdmFsdWVzKS0+bmV4dDsKKworCWxlbiA9IHN0cmxlbih2YWx1ZSk7CisJdiA9IE5PRkFJTChjYWxsb2Moc2l6ZW9mKHN0cnVjdCBpbmRleF92YWx1ZSkgKyBsZW4gKyAxLCAxKSk7CisJdi0+bmV4dCA9ICp2YWx1ZXM7CisJdi0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKwltZW1jcHkodi0+dmFsdWUsIHZhbHVlLCBsZW4gKyAxKTsKKwkqdmFsdWVzID0gdjsKKworCXJldHVybiBkdXBsaWNhdGU7Cit9CisKK2ludCBpbmRleF9pbnNlcnQoc3RydWN0IGluZGV4X25vZGUgKm5vZGUsIGNvbnN0IGNoYXIgKmtleSwKKwkJIGNvbnN0IGNoYXIgKnZhbHVlLCB1bnNpZ25lZCBpbnQgcHJpb3JpdHkpCit7CisJaW50IGkgPSAwOyAvKiBpbmRleCB3aXRoaW4gc3RyICovCisJaW50IGNoOworCQorCWluZGV4X19jaGVja3N0cmluZyhrZXkpOworCWluZGV4X19jaGVja3N0cmluZyh2YWx1ZSk7CisJCisJd2hpbGUoMSkgeworCQlpbnQgajsgLyogaW5kZXggd2l0aGluIG5vZGUtPnByZWZpeCAqLworCQorCQkvKiBFbnN1cmUgbm9kZS0+cHJlZml4IGlzIGEgcHJlZml4IG9mICZzdHJbaV0uCisJCSAgIElmIGl0IGlzIG5vdCBhbHJlYWR5LCB0aGVuIHdlIG11c3Qgc3BsaXQgbm9kZS4gKi8KKwkJZm9yIChqID0gMDsgbm9kZS0+cHJlZml4W2pdOyBqKyspIHsKKwkJCWNoID0gbm9kZS0+cHJlZml4W2pdOworCQkKKwkJCWlmIChjaCAhPSBrZXlbaStqXSkgeworCQkJCWNoYXIgKnByZWZpeCA9IG5vZGUtPnByZWZpeDsKKwkJCQlzdHJ1Y3QgaW5kZXhfbm9kZSAqbjsKKwkJCQkKKwkJCQkvKiBOZXcgY2hpbGQgaXMgY29weSBvZiBub2RlIHdpdGggcHJlZml4W2orMS4uTl0gKi8KKwkJCQluID0gTk9GQUlMKGNhbGxvYyhzaXplb2Yoc3RydWN0IGluZGV4X25vZGUpLCAxKSk7CisJCQkJbWVtY3B5KG4sIG5vZGUsIHNpemVvZihzdHJ1Y3QgaW5kZXhfbm9kZSkpOworCQkJCW4tPnByZWZpeCA9IE5PRkFJTChzdHJkdXAoJnByZWZpeFtqKzFdKSk7CisJCQkJCisJCQkJLyogUGFyZW50IGhhcyBwcmVmaXhbMC4ual0sIGNoaWxkIGF0IHByZWZpeFtqXSAqLworCQkJCW1lbXNldChub2RlLCAwLCBzaXplb2Yoc3RydWN0IGluZGV4X25vZGUpKTsKKwkJCQlwcmVmaXhbal0gPSAnXDAnOworCQkJCW5vZGUtPnByZWZpeCA9IHByZWZpeDsKKwkJCQlub2RlLT5maXJzdCA9IGNoOworCQkJCW5vZGUtPmxhc3QgPSBjaDsKKwkJCQlub2RlLT5jaGlsZHJlbltjaF0gPSBuOworCQkJCQorCQkJCWJyZWFrOworCQkJfQorCQl9CisJCS8qIGogaXMgbm93IGxlbmd0aCBvZiBub2RlLT5wcmVmaXggKi8KKwkJaSArPSBqOworCQorCQljaCA9IGtleVtpXTsKKwkJaWYoY2ggPT0gJ1wwJykKKwkJCXJldHVybiBhZGRfdmFsdWUoJm5vZGUtPnZhbHVlcywgdmFsdWUsIHByaW9yaXR5KTsKKwkJCisJCWlmICghbm9kZS0+Y2hpbGRyZW5bY2hdKSB7CisJCQlzdHJ1Y3QgaW5kZXhfbm9kZSAqY2hpbGQ7CisJCQorCQkJaWYgKGNoIDwgbm9kZS0+Zmlyc3QpCisJCQkJbm9kZS0+Zmlyc3QgPSBjaDsKKwkJCWlmIChjaCA+IG5vZGUtPmxhc3QpCisJCQkJbm9kZS0+bGFzdCA9IGNoOworCQkJbm9kZS0+Y2hpbGRyZW5bY2hdID0gTk9GQUlMKGNhbGxvYyhzaXplb2Yoc3RydWN0IGluZGV4X25vZGUpLCAxKSk7CisJCQkKKwkJCWNoaWxkID0gbm9kZS0+Y2hpbGRyZW5bY2hdOworCQkJY2hpbGQtPnByZWZpeCA9IE5PRkFJTChzdHJkdXAoJmtleVtpKzFdKSk7CisJCQljaGlsZC0+Zmlyc3QgPSBJTkRFWF9DSElMRE1BWDsKKwkJCWFkZF92YWx1ZSgmY2hpbGQtPnZhbHVlcywgdmFsdWUsIHByaW9yaXR5KTsKKworCQkJcmV0dXJuIDA7CisJCX0KKwkJCisJCS8qIERlc2NlbmQgaW50byBjaGlsZCBub2RlIGFuZCBjb250aW51ZSAqLworCQlub2RlID0gbm9kZS0+Y2hpbGRyZW5bY2hdOworCQlpKys7CisJfQorfQorCitzdGF0aWMgaW50IGluZGV4X19oYXNjaGlsZHJlbihjb25zdCBzdHJ1Y3QgaW5kZXhfbm9kZSAqbm9kZSkKK3sKKwlyZXR1cm4gbm9kZS0+Zmlyc3QgPCBJTkRFWF9DSElMRE1BWDsKK30KKworLyogUmVjdXJzaXZlIHBvc3Qtb3JkZXIgdHJhdmVyc2FsCisKKyAgIFByZS1vcmRlciB3b3VsZCBtYWtlIGZvciBiZXR0ZXIgcmVhZC1zaWRlIGJ1ZmZlcmluZyAvIHJlYWRhaGVhZCAvIGNhY2hpbmcuCisgICAocG9zdC1vcmRlciBtZWFucyB5b3UgZ28gYmFja3dhcmRzIGluIHRoZSBmaWxlIGFzIHlvdSBkZXNjZW5kIHRoZSB0cmVlKS4KKyAgIEhvd2V2ZXIsIGluZGV4IHJlYWRpbmcgaXMgYWxyZWFkeSBmYXN0IGVub3VnaC4KKyAgIFByZS1vcmRlciBpcyBzaW1wbGVyIGZvciB3cml0aW5nLCBhbmQgZGVwbW9kIGlzIGFscmVhZHkgc2xvdy4KKyAqLworc3RhdGljIHVpbnQzMl90IGluZGV4X3dyaXRlX19ub2RlKGNvbnN0IHN0cnVjdCBpbmRleF9ub2RlICpub2RlLCBGSUxFICpvdXQpCit7CisgCXVpbnQzMl90ICpjaGlsZF9vZmZzID0gTlVMTDsKKyAJaW50IGNoaWxkX2NvdW50ID0gMDsKKwlsb25nIG9mZnNldDsKKwkKKwlpZiAoIW5vZGUpCisJCXJldHVybiAwOworCQorCS8qIFdyaXRlIGNoaWxkcmVuIGFuZCBzYXZlIHRoZWlyIG9mZnNldHMgKi8KKwlpZiAoaW5kZXhfX2hhc2NoaWxkcmVuKG5vZGUpKSB7CisJCWNvbnN0IHN0cnVjdCBpbmRleF9ub2RlICpjaGlsZDsKKwkJaW50IGk7CisJCQorCQljaGlsZF9jb3VudCA9IG5vZGUtPmxhc3QgLSBub2RlLT5maXJzdCArIDE7CisJCWNoaWxkX29mZnMgPSBOT0ZBSUwobWFsbG9jKGNoaWxkX2NvdW50ICogc2l6ZW9mKHVpbnQzMl90KSkpOworCQkKKwkJZm9yIChpID0gMDsgaSA8IGNoaWxkX2NvdW50OyBpKyspIHsKKwkJCWNoaWxkID0gbm9kZS0+Y2hpbGRyZW5bbm9kZS0+Zmlyc3QgKyBpXTsKKwkJCWNoaWxkX29mZnNbaV0gPSBodG9ubChpbmRleF93cml0ZV9fbm9kZShjaGlsZCwgb3V0KSk7CisJCX0KKwl9CisJCQorCS8qIE5vdyB3cml0ZSB0aGlzIG5vZGUgKi8KKwlvZmZzZXQgPSBmdGVsbChvdXQpOworCQorCWlmIChub2RlLT5wcmVmaXhbMF0pIHsKKwkJZnB1dHMobm9kZS0+cHJlZml4LCBvdXQpOworCQlmcHV0YygnXDAnLCBvdXQpOworCQlvZmZzZXQgfD0gSU5ERVhfTk9ERV9QUkVGSVg7CisJfQorCQkKKwlpZiAoY2hpbGRfY291bnQpIHsKKwkJZnB1dGMobm9kZS0+Zmlyc3QsIG91dCk7CisJCWZwdXRjKG5vZGUtPmxhc3QsIG91dCk7CisJCWZ3cml0ZShjaGlsZF9vZmZzLCBzaXplb2YodWludDMyX3QpLCBjaGlsZF9jb3VudCwgb3V0KTsKKwkJZnJlZShjaGlsZF9vZmZzKTsKKwkJb2Zmc2V0IHw9IElOREVYX05PREVfQ0hJTERTOworCX0KKwkKKwlpZiAobm9kZS0+dmFsdWVzKSB7CisJCWNvbnN0IHN0cnVjdCBpbmRleF92YWx1ZSAqdjsKKwkJdW5zaWduZWQgaW50IHZhbHVlX2NvdW50OworCQl1aW50MzJfdCB1OworCisJCXZhbHVlX2NvdW50ID0gMDsKKwkJZm9yICh2ID0gbm9kZS0+dmFsdWVzOyB2ICE9IE5VTEw7IHYgPSB2LT5uZXh0KQorCQkJdmFsdWVfY291bnQrKzsKKwkJdSA9IGh0b25sKHZhbHVlX2NvdW50KTsKKwkJZndyaXRlKCZ1LCBzaXplb2YodSksIDEsIG91dCk7CisKKwkJZm9yICh2ID0gbm9kZS0+dmFsdWVzOyB2ICE9IE5VTEw7IHYgPSB2LT5uZXh0KSB7CisJCQl1ID0gaHRvbmwodi0+cHJpb3JpdHkpOworCQkJZndyaXRlKCZ1LCBzaXplb2YodSksIDEsIG91dCk7CisJCQlmcHV0cyh2LT52YWx1ZSwgb3V0KTsKKwkJCWZwdXRjKCdcMCcsIG91dCk7CisJCX0KKwkJb2Zmc2V0IHw9IElOREVYX05PREVfVkFMVUVTOworCX0KKwkKKwlyZXR1cm4gb2Zmc2V0OworfQorCit2b2lkIGluZGV4X3dyaXRlKGNvbnN0IHN0cnVjdCBpbmRleF9ub2RlICpub2RlLCBGSUxFICpvdXQpCit7CisJbG9uZyBpbml0aWFsX29mZnNldCwgZmluYWxfb2Zmc2V0OworCXVpbnQzMl90IHU7CisJCisJdSA9IGh0b25sKElOREVYX01BR0lDKTsKKwlmd3JpdGUoJnUsIHNpemVvZih1KSwgMSwgb3V0KTsKKwl1ID0gaHRvbmwoSU5ERVhfVkVSU0lPTik7CisJZndyaXRlKCZ1LCBzaXplb2YodSksIDEsIG91dCk7CisJCisJLyogU2Vjb25kIHdvcmQgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBvZmZzZXQgb2YgdGhlIHJvb3Qgbm9kZSAqLworCWluaXRpYWxfb2Zmc2V0ID0gZnRlbGwob3V0KTsKKwl1ID0gMDsKKwlmd3JpdGUoJnUsIHNpemVvZih1aW50MzJfdCksIDEsIG91dCk7CisJCisJLyogRHVtcCB0cmllICovCisJdSA9IGh0b25sKGluZGV4X3dyaXRlX19ub2RlKG5vZGUsIG91dCkpOworCQorCS8qIFVwZGF0ZSBmaXJzdCB3b3JkICovCisJZmluYWxfb2Zmc2V0ID0gZnRlbGwob3V0KTsKKwlmc2VlayhvdXQsIGluaXRpYWxfb2Zmc2V0LCBTRUVLX1NFVCk7CisJZndyaXRlKCZ1LCBzaXplb2YodWludDMyX3QpLCAxLCBvdXQpOworCWZzZWVrKG91dCwgZmluYWxfb2Zmc2V0LCBTRUVLX1NFVCk7Cit9CisKKworCitzdGF0aWMgdm9pZCByZWFkX2Vycm9yKCkKK3sKKwlmYXRhbCgiTW9kdWxlIGluZGV4OiB1bmV4cGVjdGVkIGVycm9yOiAlc1xuIgorCQkJIlRyeSByZS1ydW5uaW5nIGRlcG1vZFxuIiwgZXJybm8gPyBzdHJlcnJvcihlcnJubykgOiAiRU9GIik7Cit9CisKK3N0YXRpYyBpbnQgcmVhZF9jaGFyKEZJTEUgKmluKQoreworCWludCBjaDsKKworCWVycm5vID0gMDsKKwljaCA9IGdldGNfdW5sb2NrZWQoaW4pOworCWlmIChjaCA9PSBFT0YpCisJCXJlYWRfZXJyb3IoKTsKKwlyZXR1cm4gY2g7Cit9CisKK3N0YXRpYyB1aW50MzJfdCByZWFkX2xvbmcoRklMRSAqaW4pCit7CisJdWludDMyX3QgbDsKKworCWVycm5vID0gMDsKKwlpZiAoZnJlYWQoJmwsIHNpemVvZih1aW50MzJfdCksIDEsIGluKSA8PSAwKQorCQlyZWFkX2Vycm9yKCk7CisJcmV0dXJuIG50b2hsKGwpOworfQorCisvKgorICogQnVmZmVyIGFic3RyYWN0IGRhdGEgdHlwZQorICoKKyAqIFVzZWQgaW50ZXJuYWxseSB0byBzdG9yZSB0aGUgY3VycmVudCBwYXRoIGR1cmluZyB0cmVlIHRyYXZlcnNhbC4KKyAqIFRoZXkgaGVscCBidWlsZCB3aWxkY2FyZCBrZXkgc3RyaW5ncyB0byBwYXNzIHRvIGZubWF0Y2goKSwKKyAqIGFzIHdlbGwgYXMgYnVpbGRpbmcgdmFsdWVzIG9mIG1hdGNoaW5nIGtleXMuCisgKi8KKworc3RydWN0IGJ1ZmZlciB7CisJY2hhciAqYnl0ZXM7CisJdW5zaWduZWQgc2l6ZTsKKwl1bnNpZ25lZCB1c2VkOworfTsKKworc3RhdGljIHZvaWQgYnVmX19yZWFsbG9jKHN0cnVjdCBidWZmZXIgKmJ1ZiwgdW5zaWduZWQgc2l6ZSkKK3sKKwlpZiAoc2l6ZSA+IGJ1Zi0+c2l6ZSkgeworCQlidWYtPmJ5dGVzID0gTk9GQUlMKHJlYWxsb2MoYnVmLT5ieXRlcywgc2l6ZSkpOworCQlidWYtPnNpemUgPSBzaXplOworCX0KK30KKworc3RhdGljIHN0cnVjdCBidWZmZXIgKmJ1Zl9jcmVhdGUoKQoreworCXN0cnVjdCBidWZmZXIgKmJ1ZjsKKwkgCisJYnVmID0gTk9GQUlMKGNhbGxvYyhzaXplb2Yoc3RydWN0IGJ1ZmZlciksIDEpKTsKKwlidWZfX3JlYWxsb2MoYnVmLCAyNTYpOworCXJldHVybiBidWY7Cit9CisKK3N0YXRpYyB2b2lkIGJ1Zl9kZXN0cm95KHN0cnVjdCBidWZmZXIgKmJ1ZikKK3sKKwlmcmVlKGJ1Zi0+Ynl0ZXMpOworCWZyZWUoYnVmKTsKK30KKworLyogRGVzdHJveSBidWZmZXIgYW5kIHJldHVybiBhIGNvcHkgYXMgYSBDIHN0cmluZyAqLworc3RhdGljIGNoYXIgKmJ1Zl9kZXRhY2goc3RydWN0IGJ1ZmZlciAqYnVmKQoreworCWNoYXIgKmJ5dGVzOworCisJYnl0ZXMgPSBOT0ZBSUwocmVhbGxvYyhidWYtPmJ5dGVzLCBidWYtPnVzZWQgKyAxKSk7CisJYnl0ZXNbYnVmLT51c2VkXSA9ICdcMCc7CisKKwlmcmVlKGJ1Zik7CisJcmV0dXJuIGJ5dGVzOworfQorCisvKiBSZXR1cm4gYSBDIHN0cmluZyBvd25lZCBieSB0aGUgYnVmZmVyCisgICAoaW52YWxpZGF0ZWQgaWYgdGhlIGJ1ZmZlciBpcyBjaGFuZ2VkKS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKmJ1Zl9zdHIoc3RydWN0IGJ1ZmZlciAqYnVmKQoreworCWJ1Zl9fcmVhbGxvYyhidWYsIGJ1Zi0+dXNlZCArIDEpOworCWJ1Zi0+Ynl0ZXNbYnVmLT51c2VkXSA9ICdcMCc7CisJcmV0dXJuIGJ1Zi0+Ynl0ZXM7Cit9CisKK3N0YXRpYyBpbnQgYnVmX2Z3cml0ZShzdHJ1Y3QgYnVmZmVyICpidWYsIEZJTEUgKm91dCkKK3sKKwlyZXR1cm4gZndyaXRlKGJ1Zi0+Ynl0ZXMsIDEsIGJ1Zi0+dXNlZCwgb3V0KTsKK30KKworc3RhdGljIHZvaWQgYnVmX3B1c2hjaGFyKHN0cnVjdCBidWZmZXIgKmJ1ZiwgY2hhciBjaCkKK3sKKwlidWZfX3JlYWxsb2MoYnVmLCBidWYtPnVzZWQgKyAxKTsKKwlidWYtPmJ5dGVzW2J1Zi0+dXNlZF0gPSBjaDsKKwlidWYtPnVzZWQrKzsKK30KKworc3RhdGljIHVuc2lnbmVkIGJ1Zl9wdXNoY2hhcnMoc3RydWN0IGJ1ZmZlciAqYnVmLCBjb25zdCBjaGFyICpzdHIpCit7CisJdW5zaWduZWQgaSA9IDA7CisJaW50IGNoOworCisJd2hpbGUgKChjaCA9IHN0cltpXSkpIHsKKwkJYnVmX3B1c2hjaGFyKGJ1ZiwgY2gpOworCQlpKys7CisJfQorCXJldHVybiBpOworfQorCisvKiBsaWtlIGJ1Zl9wdXNoY2hhcnMoKSwgYnV0IHRoZSBzdHJpbmcgY29tZXMgZnJvbSBhIGZpbGUgKi8KK3N0YXRpYyB1bnNpZ25lZCBidWZfZnJlYWRjaGFycyhzdHJ1Y3QgYnVmZmVyICpidWYsIEZJTEUgKmluKQoreworCXVuc2lnbmVkIGkgPSAwOworCWludCBjaDsKKworCXdoaWxlICgoY2ggPSByZWFkX2NoYXIoaW4pKSkgeworCQlidWZfcHVzaGNoYXIoYnVmLCBjaCk7CisJCWkrKzsKKwl9CisKKwlyZXR1cm4gaTsKK30KKworc3RhdGljIHZvaWQgYnVmX3BvcGNoYXIoc3RydWN0IGJ1ZmZlciAqYnVmKQoreworCWJ1Zi0+dXNlZC0tOworfQorCitzdGF0aWMgdm9pZCBidWZfcG9wY2hhcnMoc3RydWN0IGJ1ZmZlciAqYnVmLCB1bnNpZ25lZCBuKQoreworCWJ1Zi0+dXNlZCAtPSBuOworfQorCitzdGF0aWMgdm9pZCBidWZfY2xlYXIoc3RydWN0IGJ1ZmZlciAqYnVmKQoreworCWJ1Zi0+dXNlZCA9IDA7Cit9CisKKy8qCisgKiBJbmRleCBmaWxlIHNlYXJjaGluZyAodXNlZCBvbmx5IGJ5IG1vZHByb2JlKQorICovCisKK3N0cnVjdCBpbmRleF9ub2RlX2YgeworCUZJTEUgKmZpbGU7CisJY2hhciAqcHJlZml4OwkJLyogcGF0aCBjb21wcmVzc2lvbiAqLworCXN0cnVjdCBpbmRleF92YWx1ZSAqdmFsdWVzOworCXVuc2lnbmVkIGNoYXIgZmlyc3Q7CS8qIHJhbmdlIG9mIGNoaWxkIG5vZGVzICovCisJdW5zaWduZWQgY2hhciBsYXN0OworCXVpbnQzMl90IGNoaWxkcmVuWzBdOworfTsKKworc3RhdGljIHN0cnVjdCBpbmRleF9ub2RlX2YgKmluZGV4X3JlYWQoRklMRSAqaW4sIHVpbnQzMl90IG9mZnNldCkKK3sKKwlzdHJ1Y3QgaW5kZXhfbm9kZV9mICpub2RlOworCWNoYXIgKnByZWZpeDsKKwlpbnQgaSwgY2hpbGRfY291bnQgPSAwOworCisJaWYgKChvZmZzZXQgJiBJTkRFWF9OT0RFX01BU0spID09IDApCisJCXJldHVybiBOVUxMOworCisJZnNlZWsoaW4sIG9mZnNldCAmIElOREVYX05PREVfTUFTSywgU0VFS19TRVQpOworCQorCWlmIChvZmZzZXQgJiBJTkRFWF9OT0RFX1BSRUZJWCkgeworCQlzdHJ1Y3QgYnVmZmVyICpidWYgPSBidWZfY3JlYXRlKCk7CisJCWJ1Zl9mcmVhZGNoYXJzKGJ1ZiwgaW4pOworCQlwcmVmaXggPSBidWZfZGV0YWNoKGJ1Zik7CisJfSBlbHNlCisJCXByZWZpeCA9IE5PRkFJTChzdHJkdXAoIiIpKTsKKwkJCisJaWYgKG9mZnNldCAmIElOREVYX05PREVfQ0hJTERTKSB7CisJCWNoYXIgZmlyc3QgPSByZWFkX2NoYXIoaW4pOworCQljaGFyIGxhc3QgPSByZWFkX2NoYXIoaW4pOworCQljaGlsZF9jb3VudCA9IGxhc3QgLSBmaXJzdCArIDE7CisJCQorCQlub2RlID0gTk9GQUlMKG1hbGxvYyhzaXplb2Yoc3RydWN0IGluZGV4X25vZGVfZikgKworCQkJCSAgICAgc2l6ZW9mKHVpbnQzMl90KSAqIGNoaWxkX2NvdW50KSk7CisJCQorCQlub2RlLT5maXJzdCA9IGZpcnN0OworCQlub2RlLT5sYXN0ID0gbGFzdDsKKworCQlmb3IgKGkgPSAwOyBpIDwgY2hpbGRfY291bnQ7IGkrKykKKwkJCW5vZGUtPmNoaWxkcmVuW2ldID0gcmVhZF9sb25nKGluKTsKKwl9IGVsc2UgeworCQlub2RlID0gTk9GQUlMKG1hbGxvYyhzaXplb2Yoc3RydWN0IGluZGV4X25vZGVfZikpKTsKKwkJbm9kZS0+Zmlyc3QgPSBJTkRFWF9DSElMRE1BWDsKKwkJbm9kZS0+bGFzdCA9IDA7CisJfQorCQorCW5vZGUtPnZhbHVlcyA9IE5VTEw7CisJaWYgKG9mZnNldCAmIElOREVYX05PREVfVkFMVUVTKSB7CisJCWludCB2YWx1ZV9jb3VudDsKKwkJc3RydWN0IGJ1ZmZlciAqYnVmID0gYnVmX2NyZWF0ZSgpOworCQljb25zdCBjaGFyICp2YWx1ZTsKKwkJdW5zaWduZWQgaW50IHByaW9yaXR5OworCisJCXZhbHVlX2NvdW50ID0gcmVhZF9sb25nKGluKTsKKworCQl3aGlsZSAodmFsdWVfY291bnQtLSkgeworCQkJcHJpb3JpdHkgPSByZWFkX2xvbmcoaW4pOworCQkJYnVmX2ZyZWFkY2hhcnMoYnVmLCBpbik7CisJCQl2YWx1ZSA9IGJ1Zl9zdHIoYnVmKTsKKwkJCWFkZF92YWx1ZSgmbm9kZS0+dmFsdWVzLCB2YWx1ZSwgcHJpb3JpdHkpOworCQkJYnVmX2NsZWFyKGJ1Zik7CisJCX0KKwkJYnVmX2Rlc3Ryb3koYnVmKTsKKwl9CisKKwlub2RlLT5wcmVmaXggPSBwcmVmaXg7CisJbm9kZS0+ZmlsZSA9IGluOworCXJldHVybiBub2RlOworfQorCitzdGF0aWMgdm9pZCBpbmRleF9jbG9zZShzdHJ1Y3QgaW5kZXhfbm9kZV9mICpub2RlKQoreworCWZyZWUobm9kZS0+cHJlZml4KTsKKwlpbmRleF92YWx1ZXNfZnJlZShub2RlLT52YWx1ZXMpOworCWZyZWUobm9kZSk7Cit9CisKK3N0cnVjdCBpbmRleF9maWxlIHsKKwlGSUxFICpmaWxlOworCXVpbnQzMl90IHJvb3Rfb2Zmc2V0OworfTsKKworLyogRmFpbHVyZXMgYXJlIHNpbGVudDsgbW9kcHJvYmUgd2lsbCBmYWxsIGJhY2sgdG8gdGV4dCBmaWxlcyAqLworc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4X2ZpbGVfb3Blbihjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlGSUxFICpmaWxlOworCXVpbnQzMl90IG1hZ2ljLCB2ZXJzaW9uOworCXN0cnVjdCBpbmRleF9maWxlICpuZXc7CisKKwlmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJyIik7CisJaWYgKCFmaWxlKQorCQlyZXR1cm4gTlVMTDsKKwllcnJubyA9IEVJTlZBTDsKKworCW1hZ2ljID0gcmVhZF9sb25nKGZpbGUpOworCWlmIChtYWdpYyAhPSBJTkRFWF9NQUdJQykKKwkJcmV0dXJuIE5VTEw7CisKKwl2ZXJzaW9uID0gcmVhZF9sb25nKGZpbGUpOworCWlmICh2ZXJzaW9uID4+IDE2ICE9IElOREVYX1ZFUlNJT05fTUFKT1IpCisJCXJldHVybiBOVUxMOworCisJbmV3ID0gTk9GQUlMKG1hbGxvYyhzaXplb2Yoc3RydWN0IGluZGV4X2ZpbGUpKSk7CisJbmV3LT5maWxlID0gZmlsZTsKKwluZXctPnJvb3Rfb2Zmc2V0ID0gcmVhZF9sb25nKG5ldy0+ZmlsZSk7CisKKwllcnJubyA9IDA7CisJcmV0dXJuIG5ldzsKK30KKwordm9pZCBpbmRleF9maWxlX2Nsb3NlKHN0cnVjdCBpbmRleF9maWxlICppbmRleCkKK3sKKwlmY2xvc2UoaW5kZXgtPmZpbGUpOworCWZyZWUoaW5kZXgpOworfQorCisKK3N0YXRpYyBzdHJ1Y3QgaW5kZXhfbm9kZV9mICppbmRleF9yZWFkcm9vdChzdHJ1Y3QgaW5kZXhfZmlsZSAqaW4pCit7CisJcmV0dXJuIGluZGV4X3JlYWQoaW4tPmZpbGUsIGluLT5yb290X29mZnNldCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW5kZXhfbm9kZV9mICppbmRleF9yZWFkY2hpbGQoY29uc3Qgc3RydWN0IGluZGV4X25vZGVfZiAqcGFyZW50LAorCQkJCQkgICAgaW50IGNoKQoreworCWlmIChwYXJlbnQtPmZpcnN0IDw9IGNoICYmIGNoIDw9IHBhcmVudC0+bGFzdCkKKwkJcmV0dXJuIGluZGV4X3JlYWQocGFyZW50LT5maWxlLAorCQkgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC0+Y2hpbGRyZW5bY2ggLSBwYXJlbnQtPmZpcnN0XSk7CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIER1bXAgYWxsIHN0cmluZ3MgYXMgbGluZXMgaW4gYSBwbGFpbiB0ZXh0IGZpbGUuCisgKi8KKworc3RhdGljIHZvaWQgaW5kZXhfZHVtcF9ub2RlKHN0cnVjdCBpbmRleF9ub2RlX2YgKm5vZGUsCisJCQkgICAgc3RydWN0IGJ1ZmZlciAqYnVmLAorCQkJICAgIEZJTEUgKm91dCwKKwkJCSAgICBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJc3RydWN0IGluZGV4X3ZhbHVlICp2OworCWludCBjaCwgcHVzaGVkOworCQorCXB1c2hlZCA9IGJ1Zl9wdXNoY2hhcnMoYnVmLCBub2RlLT5wcmVmaXgpOworCQorCWZvciAodiA9IG5vZGUtPnZhbHVlczsgdiAhPSBOVUxMOyB2ID0gdi0+bmV4dCkgeworCQlmcHV0cyhwcmVmaXgsIG91dCk7CisJCWJ1Zl9md3JpdGUoYnVmLCBvdXQpOworCQlmcHV0YygnICcsIG91dCk7CisJCWZwdXRzKHYtPnZhbHVlLCBvdXQpOworCQlmcHV0YygnXG4nLCBvdXQpOworCX0KKwkKKwlmb3IgKGNoID0gbm9kZS0+Zmlyc3Q7IGNoIDw9IG5vZGUtPmxhc3Q7IGNoKyspIHsKKwkJc3RydWN0IGluZGV4X25vZGVfZiAqY2hpbGQgPSBpbmRleF9yZWFkY2hpbGQobm9kZSwgY2gpOworCQkKKwkJaWYgKCFjaGlsZCkKKwkJCWNvbnRpbnVlOworCQkJCisJCWJ1Zl9wdXNoY2hhcihidWYsIGNoKTsKKwkJaW5kZXhfZHVtcF9ub2RlKGNoaWxkLCBidWYsIG91dCwgcHJlZml4KTsKKwkJYnVmX3BvcGNoYXIoYnVmKTsKKwl9CisJCisJYnVmX3BvcGNoYXJzKGJ1ZiwgcHVzaGVkKTsKKwlpbmRleF9jbG9zZShub2RlKTsKK30KKwordm9pZCBpbmRleF9kdW1wKHN0cnVjdCBpbmRleF9maWxlICppbiwgRklMRSAqb3V0LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJc3RydWN0IGluZGV4X25vZGVfZiAqcm9vdDsKKwlzdHJ1Y3QgYnVmZmVyICpidWY7CisJCisJYnVmID0gYnVmX2NyZWF0ZSgpOworCXJvb3QgPSBpbmRleF9yZWFkcm9vdChpbik7CisJaW5kZXhfZHVtcF9ub2RlKHJvb3QsIGJ1Ziwgb3V0LCBwcmVmaXgpOworCWJ1Zl9kZXN0cm95KGJ1Zik7Cit9CisKKy8qCisgKiBTZWFyY2ggdGhlIGluZGV4IGZvciBhIGtleQorICoKKyAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBtYXRjaAorICoKKyAqIFRoZSByZWN1cnNpdmUgZnVuY3Rpb25zIGZyZWUgdGhlaXIgbm9kZSBhcmd1bWVudCAodXNpbmcgaW5kZXhfY2xvc2UpLgorICovCisKK2NoYXIgKmluZGV4X3NlYXJjaChzdHJ1Y3QgaW5kZXhfZmlsZSAqaW4sIGNvbnN0IGNoYXIgKmtleSk7CitzdGF0aWMgY2hhciAqaW5kZXhfc2VhcmNoX19ub2RlKHN0cnVjdCBpbmRleF9ub2RlX2YgKm5vZGUsIGNvbnN0IGNoYXIgKmtleSwgaW50IGkpOworCitjaGFyICppbmRleF9zZWFyY2goc3RydWN0IGluZGV4X2ZpbGUgKmluLCBjb25zdCBjaGFyICprZXkpCit7CisJc3RydWN0IGluZGV4X25vZGVfZiAqcm9vdDsKKwljaGFyICp2YWx1ZTsKKwkKKwlyb290ID0gaW5kZXhfcmVhZHJvb3QoaW4pOworCXZhbHVlID0gaW5kZXhfc2VhcmNoX19ub2RlKHJvb3QsIGtleSwgMCk7CisJCisJcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgY2hhciAqaW5kZXhfc2VhcmNoX19ub2RlKHN0cnVjdCBpbmRleF9ub2RlX2YgKm5vZGUsIGNvbnN0IGNoYXIgKmtleSwgaW50IGkpCit7CisJY2hhciAqdmFsdWU7CisJc3RydWN0IGluZGV4X25vZGVfZiAqY2hpbGQ7CisJaW50IGNoOworCWludCBqOworCisJd2hpbGUobm9kZSkgeworCQlmb3IgKGogPSAwOyBub2RlLT5wcmVmaXhbal07IGorKykgeworCQkJY2ggPSBub2RlLT5wcmVmaXhbal07CisJCQkKKwkJCWlmIChjaCAhPSBrZXlbaStqXSkgeworCQkJCWluZGV4X2Nsb3NlKG5vZGUpOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQl9CisJCWkgKz0gajsKKwkJCisJCWlmIChrZXlbaV0gPT0gJ1wwJykgeworCQkJaWYgKG5vZGUtPnZhbHVlcykgeworCQkJCXZhbHVlID0gc3RyZHVwKG5vZGUtPnZhbHVlc1swXS52YWx1ZSk7CisJCQkJaW5kZXhfY2xvc2Uobm9kZSk7CisJCQkJcmV0dXJuIHZhbHVlOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KKwkJfQorCQkKKwkJY2hpbGQgPSBpbmRleF9yZWFkY2hpbGQobm9kZSwga2V5W2ldKTsKKwkJaW5kZXhfY2xvc2Uobm9kZSk7CisJCW5vZGUgPSBjaGlsZDsKKwkJaSsrOworCX0KKwkKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIFNlYXJjaCB0aGUgaW5kZXggZm9yIGEga2V5LiAgVGhlIGluZGV4IG1heSBjb250YWluIHdpbGRjYXJkcy4KKyAqCisgKiBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIHZhbHVlcyBvZiBtYXRjaGluZyBrZXlzLgorICovCisKKy8qIExldmVsIDE6IGludGVyZmFjZSBmdW5jdGlvbiAqLworc3RydWN0IGluZGV4X3ZhbHVlICppbmRleF9zZWFyY2h3aWxkKHN0cnVjdCBpbmRleF9maWxlICppbiwgY29uc3QgY2hhciAqa2V5KTsKKworLyogTGV2ZWwgMjogZGVzY2VuZCB0aGUgdHJlZSAodW50aWwgd2UgaGl0IGEgd2lsZGNhcmQpICovCitzdGF0aWMgdm9pZCBpbmRleF9zZWFyY2h3aWxkX19ub2RlKHN0cnVjdCBpbmRleF9ub2RlX2YgKm5vZGUsCisJCQkJICAgc3RydWN0IGJ1ZmZlciAqYnVmLAorCQkJCSAgIGNvbnN0IGNoYXIgKmtleSwgaW50IGksCisJCQkJICAgc3RydWN0IGluZGV4X3ZhbHVlICoqb3V0KTsKKworLyogTGV2ZWwgMzogdHJhdmVyc2UgYSBzdWIta2V5c3BhY2Ugd2hpY2ggc3RhcnRzIHdpdGggYSB3aWxkY2FyZCwKKyAgICAgICAgICAgIGxvb2tpbmcgZm9yIG1hdGNoZXMuCisqLworc3RhdGljIHZvaWQgaW5kZXhfc2VhcmNod2lsZF9fYWxsKHN0cnVjdCBpbmRleF9ub2RlX2YgKm5vZGUsIGludCBqLAorCQkJCSAgc3RydWN0IGJ1ZmZlciAqYnVmLAorCQkJCSAgY29uc3QgY2hhciAqc3Via2V5LAorCQkJCSAgc3RydWN0IGluZGV4X3ZhbHVlICoqb3V0KTsKKworLyogTGV2ZWwgNDogYWRkIGFsbCB0aGUgdmFsdWVzIGZyb20gYSBtYXRjaGluZyBub2RlICovCitzdGF0aWMgdm9pZCBpbmRleF9zZWFyY2h3aWxkX19hbGx2YWx1ZXMoc3RydWN0IGluZGV4X25vZGVfZiAqbm9kZSwKKwkJCQkJc3RydWN0IGluZGV4X3ZhbHVlICoqb3V0KTsKKworCitzdHJ1Y3QgaW5kZXhfdmFsdWUgKmluZGV4X3NlYXJjaHdpbGQoc3RydWN0IGluZGV4X2ZpbGUgKmluLCBjb25zdCBjaGFyICprZXkpCit7CisJc3RydWN0IGluZGV4X25vZGVfZiAqcm9vdCA9IGluZGV4X3JlYWRyb290KGluKTsKKwlzdHJ1Y3QgYnVmZmVyICpidWYgPSBidWZfY3JlYXRlKCk7CisJc3RydWN0IGluZGV4X3ZhbHVlICpvdXQgPSBOVUxMOworCQorCWluZGV4X3NlYXJjaHdpbGRfX25vZGUocm9vdCwgYnVmLCBrZXksIDAsICZvdXQpOworCWJ1Zl9kZXN0cm95KGJ1Zik7CisJcmV0dXJuIG91dDsKK30KKworc3RhdGljIHZvaWQgaW5kZXhfc2VhcmNod2lsZF9fbm9kZShzdHJ1Y3QgaW5kZXhfbm9kZV9mICpub2RlLAorCQkJCSAgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKKwkJCQkgICBjb25zdCBjaGFyICprZXksIGludCBpLAorCQkJCSAgIHN0cnVjdCBpbmRleF92YWx1ZSAqKm91dCkKK3sKKwlzdHJ1Y3QgaW5kZXhfbm9kZV9mICpjaGlsZDsKKwlpbnQgajsKKwlpbnQgY2g7CisKKwl3aGlsZShub2RlKSB7CisJCWZvciAoaiA9IDA7IG5vZGUtPnByZWZpeFtqXTsgaisrKSB7CisJCQljaCA9IG5vZGUtPnByZWZpeFtqXTsKKwkJCQorCQkJaWYgKGNoID09ICcqJyB8fCBjaCA9PSAnPycgfHwgY2ggPT0gJ1snKSB7CisJCQkJaW5kZXhfc2VhcmNod2lsZF9fYWxsKG5vZGUsIGosIGJ1ZiwKKwkJCQkJCSAgICAgICZrZXlbaStqXSwgb3V0KTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQkKKwkJCWlmIChjaCAhPSBrZXlbaStqXSkgeworCQkJCWluZGV4X2Nsb3NlKG5vZGUpOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCQlpICs9IGo7CisJCQorCQljaGlsZCA9IGluZGV4X3JlYWRjaGlsZChub2RlLCAnKicpOworCQlpZiAoY2hpbGQpIHsKKwkJCWJ1Zl9wdXNoY2hhcihidWYsICcqJyk7CisJCQlpbmRleF9zZWFyY2h3aWxkX19hbGwoY2hpbGQsIDAsIGJ1ZiwgJmtleVtpXSwgb3V0KTsKKwkJCWJ1Zl9wb3BjaGFyKGJ1Zik7CisJCX0KKwkJCisJCWNoaWxkID0gaW5kZXhfcmVhZGNoaWxkKG5vZGUsICc/Jyk7CisJCWlmIChjaGlsZCkgeworCQkJYnVmX3B1c2hjaGFyKGJ1ZiwgJz8nKTsKKwkJCWluZGV4X3NlYXJjaHdpbGRfX2FsbChjaGlsZCwgMCwgYnVmLCAma2V5W2ldLCBvdXQpOworCQkJYnVmX3BvcGNoYXIoYnVmKTsKKwkJfQorCQkKKwkJY2hpbGQgPSBpbmRleF9yZWFkY2hpbGQobm9kZSwgJ1snKTsKKwkJaWYgKGNoaWxkKSB7CisJCQlidWZfcHVzaGNoYXIoYnVmLCAnWycpOworCQkJaW5kZXhfc2VhcmNod2lsZF9fYWxsKGNoaWxkLCAwLCBidWYsICZrZXlbaV0sIG91dCk7CisJCQlidWZfcG9wY2hhcihidWYpOworCQl9CisJCQorCQlpZiAoa2V5W2ldID09ICdcMCcpIHsKKwkJCWluZGV4X3NlYXJjaHdpbGRfX2FsbHZhbHVlcyhub2RlLCBvdXQpOworCisJCQlyZXR1cm47CisJCX0KKwkJCisJCWNoaWxkID0gaW5kZXhfcmVhZGNoaWxkKG5vZGUsIGtleVtpXSk7CisJCWluZGV4X2Nsb3NlKG5vZGUpOworCQlub2RlID0gY2hpbGQ7CisJCWkrKzsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIGluZGV4X3NlYXJjaHdpbGRfX2FsbChzdHJ1Y3QgaW5kZXhfbm9kZV9mICpub2RlLCBpbnQgaiwKKwkJCQkgIHN0cnVjdCBidWZmZXIgKmJ1ZiwKKwkJCQkgIGNvbnN0IGNoYXIgKnN1YmtleSwKKwkJCQkgIHN0cnVjdCBpbmRleF92YWx1ZSAqKm91dCkKK3sKKwlpbnQgcHVzaGVkID0gMDsKKwlpbnQgY2g7CisJCisJd2hpbGUgKG5vZGUtPnByZWZpeFtqXSkgeworCQljaCA9IG5vZGUtPnByZWZpeFtqXTsKKwkJCisJCWJ1Zl9wdXNoY2hhcihidWYsIGNoKTsKKwkJcHVzaGVkKys7CisJCWorKzsKKwl9CisKKwlmb3IgKGNoID0gbm9kZS0+Zmlyc3Q7IGNoIDw9IG5vZGUtPmxhc3Q7IGNoKyspIHsKKwkJc3RydWN0IGluZGV4X25vZGVfZiAqY2hpbGQgPSBpbmRleF9yZWFkY2hpbGQobm9kZSwgY2gpOworCQkKKwkJaWYgKCFjaGlsZCkKKwkJCWNvbnRpbnVlOworCQkJCisJCWJ1Zl9wdXNoY2hhcihidWYsIGNoKTsKKwkJaW5kZXhfc2VhcmNod2lsZF9fYWxsKGNoaWxkLCAwLCBidWYsIHN1YmtleSwgb3V0KTsKKwkJYnVmX3BvcGNoYXIoYnVmKTsKKwl9CisJCisJaWYgKG5vZGUtPnZhbHVlcykgeworCQlpZiAoZm5tYXRjaChidWZfc3RyKGJ1ZiksIHN1YmtleSwgMCkgPT0gMCkKKwkJCWluZGV4X3NlYXJjaHdpbGRfX2FsbHZhbHVlcyhub2RlLCBvdXQpOworCX0gZWxzZSB7CisJCWluZGV4X2Nsb3NlKG5vZGUpOworCX0KKwkKKwlidWZfcG9wY2hhcnMoYnVmLCBwdXNoZWQpOworfQorCitzdGF0aWMgdm9pZCBpbmRleF9zZWFyY2h3aWxkX19hbGx2YWx1ZXMoc3RydWN0IGluZGV4X25vZGVfZiAqbm9kZSwKKwkJCQkJc3RydWN0IGluZGV4X3ZhbHVlICoqb3V0KQoreworCXN0cnVjdCBpbmRleF92YWx1ZSAqdjsKKwkKKwlmb3IgKHYgPSBub2RlLT52YWx1ZXM7IHYgIT0gTlVMTDsgdiA9IHYtPm5leHQpCisJCWFkZF92YWx1ZShvdXQsIHYtPnZhbHVlLCB2LT5wcmlvcml0eSk7CisKKwlpbmRleF9jbG9zZShub2RlKTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbmRleC5oIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2luZGV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhhY2VkNQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbmRleC5oCkBAIC0wLDAgKzEsMTg1IEBACisKKy8qIGluZGV4LmM6IG1vZHVsZSBpbmRleCBmaWxlIHNoYXJlZCBmdW5jdGlvbnMgZm9yIG1vZHByb2JlIGFuZCBkZXBtb2QKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggIEFsYW4gSmVua2lucyA8YWxhbi1qZW5raW5zQHR1ZmZtYWlsLmNvLnVrPi4KKworICAgIFRoZXNlIHByb2dyYW1zIGFyZSBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoZXNlIHByb2dyYW1zLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKi8KKworI2lmbmRlZiBNT0RJTklUVE9PTFNfSU5ERVhfSAorI2RlZmluZSBNT0RJTklUVE9PTFNfSU5ERVhfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKy8qIEludGVnZXJzIGFyZSBzdG9yZWQgYXMgMzIgYml0IHVuc2lnbmVkIGluICJuZXR3b3JrIiBvcmRlciwgaS5lLiBNU0IgZmlyc3QuCisgICBBbGwgZmlsZXMgc3RhcnQgd2l0aCBhIG1hZ2ljIG51bWJlci4KKworICAgTWFnaWMgc3BlbGxzICJCT09URkFTVCIuIFNlY29uZCBvbmUgdXNlZCBvbiBuZXdlciB2ZXJzaW9uZWQgYmluYXJ5IGZpbGVzLgorICovCisvKiAjZGVmaW5lIElOREVYX01BR0lDX09MRCAweEIwMDdGQTU3ICovCisjZGVmaW5lIElOREVYX01BR0lDIDB4QjAwN0Y0NTcKKworLyogV2UgdXNlIGEgdmVyc2lvbiBzdHJpbmcgdG8ga2VlcCB0cmFjayBvZiBjaGFuZ2VzIHRvIHRoZSBiaW5hcnkgZm9ybWF0CisgKiBUaGlzIGlzIHN0b3JlZCBpbiB0aGUgZm9ybTogSU5ERVhfTUFKT1IgKGhpKSBJTkRFWF9NSU5PUiAobG8pIGp1c3QgaW4KKyAqIGNhc2Ugd2UgZXZlciBkZWNpZGUgdG8gaGF2ZSBtaW5vciBjaGFuZ2VzIHRoYXQgYXJlIG5vdCBpbmNvbXBhdGlibGUuCisgKi8KKworI2RlZmluZSBJTkRFWF9WRVJTSU9OX01BSk9SIDB4MDAwMgorI2RlZmluZSBJTkRFWF9WRVJTSU9OX01JTk9SIDB4MDAwMQorI2RlZmluZSBJTkRFWF9WRVJTSU9OICgoSU5ERVhfVkVSU0lPTl9NQUpPUjw8MTYpfElOREVYX1ZFUlNJT05fTUlOT1IpCisKKy8qIFRoZSBpbmRleCBmaWxlIG1hcHMga2V5cyB0byB2YWx1ZXMuIEJvdGgga2V5cyBhbmQgdmFsdWVzIGFyZSBBU0NJSSBzdHJpbmdzLgorICAgRWFjaCBrZXkgY2FuIGhhdmUgbXVsdGlwbGUgdmFsdWVzLiBWYWx1ZXMgYXJlIHNvcnRlZCBieSBhbiBpbnRlZ2VyIHByaW9yaXR5LgorCisgICBUaGUgcmVhZGVyIGFsc28gaW1wbGVtZW50cyBhIHdpbGRjYXJkIHNlYXJjaCAoaW5jbHVkaW5nIHJhbmdlIGV4cHJlc3Npb25zKQorICAgd2hlcmUgdGhlIGtleXMgaW4gdGhlIGluZGV4IGFyZSB0cmVhdGVkIGFzIHBhdHRlcm5zLgorICAgVGhpcyBmZWF0dXJlIGlzIHJlcXVpcmVkIGZvciBtb2R1bGUgYWxpYXNlcy4KKyovCisKKy8qIEltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIGEgcmFkaXggdHJlZSwgb3IgInRyaWUiLgorICAgRWFjaCBhcmMgZnJvbSBwYXJlbnQgdG8gY2hpbGQgaXMgbGFiZWxsZWQgd2l0aCBhIGNoYXJhY3Rlci4KKyAgIEVhY2ggcGF0aCBmcm9tIHRoZSByb290IHJlcHJlc2VudHMgYSBzdHJpbmcuCisKKyAgID09IEV4YW1wbGUgc3RyaW5ncyA9PQorCisgICBhc2sKKyAgIGF0ZQorICAgb24KKyAgIG9uY2UKKyAgIG9uZQorCisgICA9PSBLZXkgPT0KKyAgICArIE5vcm1hbCBub2RlCisgICAgKiBNYXJrZWQgbm9kZSwgcmVwcmVzZW50aW5nIGEga2V5IGFuZCBpdCdzIHZhbHVlcy4KKworICAgKworICAgfC1hLSstcy0rLWstKgorICAgfCAgIHwKKyAgIHwgICBgLXQtKy1lLSoKKyAgIHwKKyAgIGAtby0rLW4tKi1jLSstZS0qCisgICAgICAgICAgIHwKKyAgICAgICAgICAgYC1lLSoKKworICAgTmFpdmUgaW1wbGVtZW50YXRpb25zIHRlbmQgdG8gYmUgdmVyeSBzcGFjZSBpbmVmZmljaWVudDsgY2hpbGQgcG9pbnRlcnMKKyAgIGFyZSBzdG9yZWQgaW4gYXJyYXlzIGluZGV4ZWQgYnkgY2hhcmFjdGVyLCBidXQgbW9zdCBjaGlsZCBwb2ludGVycyBhcmUgbnVsbC4KKworICAgT3VyIGltcGxlbWVudGF0aW9uIHVzZXMgYSBzY2hlbWUgZGVzY3JpYmVkIGJ5IFdpa2lwZWRpYSBhcyBhIFBhdHJpY2EgdHJpZSwKKworICAgICAgICJlYXNpZXN0IHRvIHVuZGVyc3RhbmQgYXMgYSBzcGFjZS1vcHRpbWl6ZWQgdHJpZSB3aGVyZQorICAgICAgICBlYWNoIG5vZGUgd2l0aCBvbmx5IG9uZSBjaGlsZCBpcyBtZXJnZWQgd2l0aCBpdHMgY2hpbGQiCisKKyAgICsKKyAgIHwtYS0rLXNrLSoKKyAgIHwgICB8CisgICB8ICAgYC10ZS0qCisgICB8CisgICBgLW9uLSotY2UtKgorICAgICAgICB8CisgICAgICAgIGAtZS0qCisKKyAgIFdlIHN0aWxsIHVzZSBhcnJheXMgb2YgY2hpbGQgcG9pbnRlcnMgaW5kZXhlZCBieSBhIHNpbmdsZSBjaGFyYWN0ZXI7CisgICB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgb2YgdGhlIGxhYmVsIGFyZSBzdG9yZWQgYXMgYSAicHJlZml4IiBpbiB0aGUgY2hpbGQuCisKKyAgIFRoZSBwYXBlciBkZXNjcmliaW5nIHRoZSBvcmlnaW5hbCBQYXRyaWNhIHRyaWUgd29ya3Mgb24gaW5kaXZpZGl1YWwgYml0cyAtCisgICBlYWNoIG5vZGUgaGFzIGEgbWF4aW11bSBvZiB0d28gY2hpbGRyZW4sIHdoaWNoIGluY3JlYXNlcyBzcGFjZSBlZmZpY2llbmN5LgorICAgSG93ZXZlciBmb3IgdGhpcyBhcHBsaWNhdGlvbiBpdCBpcyBzaW1wbGVyIHRvIHVzZSB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldC4KKyAgIFNpbmNlIHRoZSBpbmRleCBmaWxlIGlzIHJlYWQtb25seSwgaXQgY2FuIGJlIGNvbXByZXNzZWQgYnkgb21pdHRpbmcgbnVsbAorICAgY2hpbGQgcG9pbnRlcnMgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYXJyYXlzLgorKi8KKworI2RlZmluZSBJTkRFWF9QUklPUklUWV9NSU4gVUlOVDMyX01BWAorCitzdHJ1Y3QgaW5kZXhfdmFsdWUgeworCXN0cnVjdCBpbmRleF92YWx1ZSAqbmV4dDsKKwl1bnNpZ25lZCBpbnQgcHJpb3JpdHk7CisJY2hhciB2YWx1ZVswXTsKK307CisKKy8qIEluLW1lbW9yeSBpbmRleCAoZGVwbW9kIG9ubHkpICovCisKKyNkZWZpbmUgSU5ERVhfQ0hJTERNQVggMTI4CitzdHJ1Y3QgaW5kZXhfbm9kZSB7CisJY2hhciAqcHJlZml4OwkJLyogcGF0aCBjb21wcmVzc2lvbiAqLworCXN0cnVjdCBpbmRleF92YWx1ZSAqdmFsdWVzOworCXVuc2lnbmVkIGNoYXIgZmlyc3Q7CS8qIHJhbmdlIG9mIGNoaWxkIG5vZGVzICovCisJdW5zaWduZWQgY2hhciBsYXN0OworCXN0cnVjdCBpbmRleF9ub2RlICpjaGlsZHJlbltJTkRFWF9DSElMRE1BWF07IC8qIGluZGV4ZWQgYnkgY2hhcmFjdGVyICovCit9OworCisvKiBEaXNrIGZvcm1hdDoKKworICAgdWludDMyX3QgbWFnaWMgPSBJTkRFWF9NQUdJQzsKKyAgIHVpbnQzMl90IHZlcnNpb24gPSBJTkRFWF9WRVJTSU9OOworICAgdWludDMyX3Qgcm9vdF9vZmZzZXQ7CisKKyAgIChub2RlX29mZnNldCAmIElOREVYX05PREVfTUFTSykgc3BlY2lmaWVzIHRoZSBmaWxlIG9mZnNldCBvZiBub2RlczoKKworICAgICAgICBjaGFyW10gcHJlZml4OyAvLyBudWwgdGVybWluYXRlZAorCisgICAgICAgIGNoYXIgZmlyc3Q7CisgICAgICAgIGNoYXIgbGFzdDsKKyAgICAgICAgdWludDMyX3QgY2hpbGRyZW5bbGFzdCAtIGZpcnN0ICsgMV07CisKKyAgICAgICAgdWludDMyX3QgdmFsdWVfY291bnQ7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCBwcmlvcml0eTsKKyAgICAgICAgICAgIGNoYXJbXSB2YWx1ZTsgLy8gbnVsIHRlcm1pbmF0ZWQKKyAgICAgICAgfSB2YWx1ZXNbdmFsdWVfY291bnRdOworCisgICAobm9kZV9vZmZzZXQgJiBJTkRFWF9OT0RFX0ZMQUdTKSBpbmRpY2F0ZXMgd2hpY2ggZmllbGRzIGFyZSBwcmVzZW50LgorICAgRW1wdHkgcHJlZml4ZXMgYXJlIG9tbWl0dGVkLCBsZWFmIG5vZGVzIG9taXQgdGhlIHRocmVlIGNoaWxkLXJlbGF0ZWQgZmllbGRzLgorCisgICBUaGlzIGNvdWxkIGJlIG9wdGltaXNlZCBmdXJ0aGVyIGJ5IGFkZGluZyBhIHNwYXJzZSBjaGlsZCBmb3JtYXQKKyAgIChpbmRpY2F0ZWQgdXNpbmcgYSBuZXcgZmxhZykuCisgKi8KKworLyogRm9ybWF0IG9mIG5vZGUgb2Zmc2V0cyB3aXRoaW4gaW5kZXggZmlsZSAqLworZW51bSBub2RlX29mZnNldCB7CisJSU5ERVhfTk9ERV9GTEFHUyAgICA9IDB4RjAwMDAwMDAsIC8qIEZsYWdzIGluIGhpZ2ggbmliYmxlICovCisJSU5ERVhfTk9ERV9QUkVGSVggICA9IDB4ODAwMDAwMDAsCisJSU5ERVhfTk9ERV9WQUxVRVMgPSAweDQwMDAwMDAwLAorCUlOREVYX05PREVfQ0hJTERTICAgPSAweDIwMDAwMDAwLAorCisJSU5ERVhfTk9ERV9NQVNLICAgICA9IDB4MEZGRkZGRkYsIC8qIE9mZnNldCB2YWx1ZSAqLworfTsKKworc3RydWN0IGluZGV4X2ZpbGU7CisKK3N0cnVjdCBpbmRleF9ub2RlICppbmRleF9jcmVhdGUodm9pZCk7Cit2b2lkIGluZGV4X2Rlc3Ryb3koc3RydWN0IGluZGV4X25vZGUgKm5vZGUpOworaW50IGluZGV4X2luc2VydChzdHJ1Y3QgaW5kZXhfbm9kZSAqbm9kZSwgY29uc3QgY2hhciAqa2V5LAorCQkgY29uc3QgY2hhciAqdmFsdWUsIHVuc2lnbmVkIGludCBwcmlvcml0eSk7Cit2b2lkIGluZGV4X3dyaXRlKGNvbnN0IHN0cnVjdCBpbmRleF9ub2RlICpub2RlLCBGSUxFICpvdXQpOworCitzdHJ1Y3QgaW5kZXhfZmlsZSAqaW5kZXhfZmlsZV9vcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKK3ZvaWQgaW5kZXhfZmlsZV9jbG9zZShzdHJ1Y3QgaW5kZXhfZmlsZSAqaW5kZXgpOworCisvKiBEdW1wIGFsbCBzdHJpbmdzIGluIGluZGV4IGFzIGxpbmVzIGluIGEgcGxhaW4gdGV4dCBmaWxlCisgICAocHJlZml4IGlzIHByZXBlbmRlZCB0byBlYWNoIGxpbmUpCisqLwordm9pZCBpbmRleF9kdW1wKHN0cnVjdCBpbmRleF9maWxlICppbiwgRklMRSAqb3V0LCBjb25zdCBjaGFyICpwcmVmaXgpOworCisvKiBSZXR1cm4gdmFsdWUgZm9yIGZpcnN0IG1hdGNoaW5nIGtleS4KKyAgIEtleXMgbXVzdCBiZSBleGFjdGx5IGVxdWFsIHRvIG1hdGNoIC0gaS5lLiB0aGVyZSBhcmUgbm8gd2lsZGNhcmQgcGF0dGVybnMKKyovCitjaGFyICppbmRleF9zZWFyY2goc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4LCBjb25zdCBjaGFyICprZXkpOworCisvKiBSZXR1cm4gdmFsdWVzIGZvciBhbGwgbWF0Y2hpbmcga2V5cy4KKyAgIFRoZSBrZXlzIGluIHRoZSBpbmRleCBhcmUgdHJlYXRlZCBhcyB3aWxkY2FyZCBwYXR0ZXJucyB1c2luZyBmbm1hdGNoKCkKKyovCitzdHJ1Y3QgaW5kZXhfdmFsdWUgKmluZGV4X3NlYXJjaHdpbGQoc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4LCBjb25zdCBjaGFyICprZXkpOworCit2b2lkIGluZGV4X3ZhbHVlc19mcmVlKHN0cnVjdCBpbmRleF92YWx1ZSAqdmFsdWVzKTsKKworI2VuZGlmIC8qIE1PRElOSVRUT09MU19JTkRFWF9IICovCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvaW5zbW9kLjggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvaW5zbW9kLjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkMThlZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnNtb2QuOApAQCAtMCwwICsxLDMwIEBACisuXFwiIGF1dG8tZ2VuZXJhdGVkIGJ5IGRvY2Jvb2sybWFuLXNwZWMgJFJldmlzaW9uOiAxLjIgJAorLlRIICJJTlNNT0QiICI4IiAiMjAxMC0wMy0wMSIgIiIgIiIKKy5TSCBOQU1FCitpbnNtb2QgXC0gc2ltcGxlIHByb2dyYW0gdG8gaW5zZXJ0IGEgbW9kdWxlIGludG8gdGhlIExpbnV4IEtlcm5lbAorLlNIIFNZTk9QU0lTCisuc3AKK1xmQmluc21vZFxmUiBbIFxmQlxmSWZpbGVuYW1lXGZCXGZSIF0gIFsgXGZCXGZJbW9kdWxlIG9wdGlvbnNcZkJcZlJcZkkuLi5cZlIgXSAKKy5TSCAiREVTQ1JJUFRJT04iCisuUFAKK1xmQmluc21vZFxmUiBpcyBhIHRyaXZpYWwgcHJvZ3JhbSB0byBpbnNlcnQgYQorbW9kdWxlIGludG8gdGhlIGtlcm5lbDogaWYgdGhlCitcZklmaWxlbmFtZVxmUiBpcyBhIGh5cGhlbiwgdGhlIG1vZHVsZSBpcwordGFrZW4gZnJvbSBzdGFuZGFyZCBpbnB1dC4gTW9zdCB1c2VycyB3aWxsIHdhbnQgdG8gdXNlCitcZkJtb2Rwcm9iZVxmUig4KSBpbnN0ZWFkLCB3aGljaCBpcworbW9yZSBjbGV2ZXIgYW5kIGNhbiBoYW5kbGUgbW9kdWxlIGRlcGVuZGVuY2llcy4KKy5QUAorT25seSB0aGUgbW9zdCBnZW5lcmFsIG9mIGVycm9yIG1lc3NhZ2VzIGFyZSByZXBvcnRlZDogYXMgdGhlCit3b3JrIG9mIHRyeWluZyB0byBsaW5rIHRoZSBtb2R1bGUgaXMgbm93IGRvbmUgaW5zaWRlIHRoZSBrZXJuZWwsCit0aGUgXGZCZG1lc2dcZlIgdXN1YWxseSBnaXZlcyBtb3JlIGluZm9ybWF0aW9uCithYm91dCBlcnJvcnMuCisuU0ggIkNPUFlSSUdIVCIKKy5QUAorVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDAyLCBSdXN0eSBSdXNzZWxsLCBJQk0KK0NvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisuU0ggIlNFRSBBTFNPIgorLlBQCitcZkJtb2Rwcm9iZVxmUig4KSwKK1xmQnJtbW9kXGZSKDgpLAorXGZCbHNtb2RcZlIoOCkKK1xmQm1vZGluZm9cZlIoOCkKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnNtb2QuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnNtb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTRmNjhiCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2luc21vZC5jCkBAIC0wLDAgKzEsMTY5IEBACisvKiBpbnNtb2QuYzogaW5zZXJ0IGEgbW9kdWxlIGludG8gdGhlIGtlcm5lbC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDEgIFJ1c3R5IFJ1c3NlbGwuCisgICAgQ29weXJpZ2h0IChDKSAyMDAyICBSdXN0eSBSdXNzZWxsLCBJQk0gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisqLworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisKKyNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSAidGVzdGluZy5oIgorCitleHRlcm4gbG9uZyBpbml0X21vZHVsZSh2b2lkICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKik7CisKK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQoreworCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIGZpbGVuYW1lIFthcmdzXVxuIiwgcHJvZ25hbWUpOworCWV4aXQoMSk7Cit9CisKKy8qIFdlIHVzZSBlcnJvciBudW1iZXJzIGluIGEgbG9vc2UgdHJhbnNsYXRpb24uLi4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICptb2RlcnJvcihpbnQgZXJyKQoreworCXN3aXRjaCAoZXJyKSB7CisJY2FzZSBFTk9FWEVDOgorCQlyZXR1cm4gIkludmFsaWQgbW9kdWxlIGZvcm1hdCI7CisJY2FzZSBFTk9FTlQ6CisJCXJldHVybiAiVW5rbm93biBzeW1ib2wgaW4gbW9kdWxlIjsKKwljYXNlIEVTUkNIOgorCQlyZXR1cm4gIk1vZHVsZSBoYXMgd3Jvbmcgc3ltYm9sIHZlcnNpb24iOworCWNhc2UgRUlOVkFMOgorCQlyZXR1cm4gIkludmFsaWQgcGFyYW1ldGVycyI7CisJZGVmYXVsdDoKKwkJcmV0dXJuIHN0cmVycm9yKGVycik7CisJfQorfQorCitzdGF0aWMgdm9pZCAqZ3JhYl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBsb25nICpzaXplKQoreworCXVuc2lnbmVkIGludCBtYXggPSAxNjM4NDsKKwlpbnQgcmV0LCBmZCwgZXJyX3NhdmU7CisJdm9pZCAqYnVmZmVyOworCisJaWYgKHN0cmVxKGZpbGVuYW1lLCAiLSIpKQorCQlmZCA9IGR1cChTVERJTl9GSUxFTk8pOworCWVsc2UKKwkJZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisKKwlpZiAoZmQgPCAwKQorCQlyZXR1cm4gTlVMTDsKKworCWJ1ZmZlciA9IG1hbGxvYyhtYXgpOworCWlmICghYnVmZmVyKQorCQlnb3RvIG91dF9lcnJvcjsKKworCSpzaXplID0gMDsKKwl3aGlsZSAoKHJldCA9IHJlYWQoZmQsIGJ1ZmZlciArICpzaXplLCBtYXggLSAqc2l6ZSkpID4gMCkgeworCQkqc2l6ZSArPSByZXQ7CisJCWlmICgqc2l6ZSA9PSBtYXgpIHsKKwkJCXZvaWQgKnA7CisKKwkJCXAgPSByZWFsbG9jKGJ1ZmZlciwgbWF4ICo9IDIpOworCQkJaWYgKCFwKQorCQkJCWdvdG8gb3V0X2Vycm9yOworCQkJYnVmZmVyID0gcDsKKwkJfQorCX0KKwlpZiAocmV0IDwgMCkKKwkJZ290byBvdXRfZXJyb3I7CisKKwljbG9zZShmZCk7CisJcmV0dXJuIGJ1ZmZlcjsKKworb3V0X2Vycm9yOgorCWVycl9zYXZlID0gZXJybm87CisJZnJlZShidWZmZXIpOworCWNsb3NlKGZkKTsKKwllcnJubyA9IGVycl9zYXZlOworCXJldHVybiBOVUxMOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCXVuc2lnbmVkIGludCBpOworCWxvbmcgaW50IHJldDsKKwl1bnNpZ25lZCBsb25nIGxlbjsKKwl2b2lkICpmaWxlOworCWNoYXIgKmZpbGVuYW1lLCAqb3B0aW9ucyA9IHN0cmR1cCgiIik7CisJY2hhciAqcCwgKnByb2duYW1lID0gYXJndlswXTsKKworCWlmICghb3B0aW9ucykgeworCQlmcHJpbnRmKHN0ZGVyciwKKwkJCSJpbnNtb2Q6IGNhbid0IGFsbG9jYXRlIG1lbW9yeTogJXNcbiIsCisJCQlzdHJlcnJvcihlcnJubykpOworCQlleGl0KDEpOworCX0KKworCXAgPSBteV9iYXNlbmFtZShhcmd2WzBdKTsKKworCWlmIChhcmd2WzFdICYmIChzdHJlcShhcmd2WzFdLCAiLS12ZXJzaW9uIikgfHwgc3RyZXEoYXJndlsxXSwgIi1WIikpKSB7CisJCXB1dHMoUEFDS0FHRSAiIHZlcnNpb24gIiBWRVJTSU9OKTsKKwkJZXhpdCgwKTsKKwl9CisKKwkvKiBJZ25vcmUgb2xkIG9wdGlvbnMsIGZvciBiYWNrd2FyZHMgY29tcGF0LiAqLworCXdoaWxlIChhcmd2WzFdICYmIChzdHJlcShhcmd2WzFdLCAiLXAiKQorCQkJICAgfHwgc3RyZXEoYXJndlsxXSwgIi1zIikKKwkJCSAgIHx8IHN0cmVxKGFyZ3ZbMV0sICItZiIpKSkgeworCQlhcmd2Kys7CisJCWFyZ2MtLTsKKwl9CisKKwlmaWxlbmFtZSA9IGFyZ3ZbMV07CisJaWYgKCFmaWxlbmFtZSkKKwkJcHJpbnRfdXNhZ2UocHJvZ25hbWUpOworCisJLyogUmVzdCBpcyBvcHRpb25zICovCisJZm9yIChpID0gMjsgaSA8IGFyZ2M7IGkrKykgeworCQlvcHRpb25zID0gcmVhbGxvYyhvcHRpb25zLAorCQkJCSAgc3RybGVuKG9wdGlvbnMpICsgMSArIHN0cmxlbihhcmd2W2ldKSArIDEpOworCQlpZiAoIW9wdGlvbnMpIHsKKwkJCWZwcmludGYoc3RkZXJyLAorCQkJCSJpbnNtb2Q6IGNhbid0IGFsbG9jYXRlIG1lbW9yeTogJXNcbiIsCisJCQkJc3RyZXJyb3IoZXJybm8pKTsKKwkJCWV4aXQoMSk7CisJCX0KKwkJc3RyY2F0KG9wdGlvbnMsIGFyZ3ZbaV0pOworCQlzdHJjYXQob3B0aW9ucywgIiAiKTsKKwl9CisKKwlmaWxlID0gZ3JhYl9maWxlKGZpbGVuYW1lLCAmbGVuKTsKKwlpZiAoIWZpbGUpIHsKKwkJZnByaW50ZihzdGRlcnIsICJpbnNtb2Q6IGNhbid0IHJlYWQgJyVzJzogJXNcbiIsCisJCQlmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlyZXQgPSBpbml0X21vZHVsZShmaWxlLCBsZW4sIG9wdGlvbnMpOworCWlmIChyZXQgIT0gMCkgeworCQlmcHJpbnRmKHN0ZGVyciwgImluc21vZDogZXJyb3IgaW5zZXJ0aW5nICclcyc6ICVsaSAlc1xuIiwKKwkJCWZpbGVuYW1lLCByZXQsIG1vZGVycm9yKGVycm5vKSk7CisJfQorCWZyZWUoZmlsZSk7CisKKwlpZiAocmV0ICE9IDApCisJCWV4aXQoMSk7CisJZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnN0YWxsLXNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2luc3RhbGwtc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjc4MWI5OAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnN0YWxsLXNoCkBAIC0wLDAgKzEsNTIwIEBACisjIS9iaW4vc2gKKyMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCisKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKKworIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCisjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQorIyBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgorIworIyBDb3B5cmlnaHQgKEMpIDE5OTQgWCBDb25zb3J0aXVtCisjCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisjIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisjIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorIyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUMtCisjIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIHRoZSBYIENvbnNvcnRpdW0gc2hhbGwgbm90CisjIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorIyBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisjIHRpdW0uCisjCisjCisjIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCisjCisjIENhbGxpbmcgdGhpcyBzY3JpcHQgaW5zdGFsbC1zaCBpcyBwcmVmZXJyZWQgb3ZlciBpbnN0YWxsLnNoLCB0byBwcmV2ZW50CisjIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CisjIHdoZW4gdGhlcmUgaXMgbm8gTWFrZWZpbGUuCisjCisjIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KKyMgZnJvbSBzY3JhdGNoLgorCitubD0nCisnCitJRlM9IiAiIgkkbmwiCisKKyMgc2V0IERPSVRQUk9HIHRvIGVjaG8gdG8gdGVzdCB0aGlzIHNjcmlwdAorCisjIERvbid0IHVzZSA6LSBzaW5jZSA0LjNCU0QgYW5kIGVhcmxpZXIgc2hlbGxzIGRvbid0IGxpa2UgaXQuCitkb2l0PSR7RE9JVFBST0ctfQoraWYgdGVzdCAteiAiJGRvaXQiOyB0aGVuCisgIGRvaXRfZXhlYz1leGVjCitlbHNlCisgIGRvaXRfZXhlYz0kZG9pdAorZmkKKworIyBQdXQgaW4gYWJzb2x1dGUgZmlsZSBuYW1lcyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsKKyMgb3IgdXNlIGVudmlyb25tZW50IHZhcnMuCisKK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KKworcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KKycKKworcG9zaXhfbWtkaXI9CisKKyMgRGVzaXJlZCBtb2RlIG9mIGluc3RhbGxlZCBmaWxlLgorbW9kZT0wNzU1CisKK2NoZ3JwY21kPQorY2htb2RjbWQ9JGNobW9kcHJvZworY2hvd25jbWQ9CittdmNtZD0kbXZwcm9nCitybWNtZD0iJHJtcHJvZyAtZiIKK3N0cmlwY21kPQorCitzcmM9Citkc3Q9CitkaXJfYXJnPQorZHN0X2FyZz0KKworY29weV9vbl9jaGFuZ2U9ZmFsc2UKK25vX3RhcmdldF9kaXJlY3Rvcnk9CisKK3VzYWdlPSJcCitVc2FnZTogJDAgW09QVElPTl0uLi4gWy1UXSBTUkNGSUxFIERTVEZJTEUKKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiBTUkNGSUxFUy4uLiBESVJFQ1RPUlkKKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtdCBESVJFQ1RPUlkgU1JDRklMRVMuLi4KKyAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtZCBESVJFQ1RPUklFUy4uLgorCitJbiB0aGUgMXN0IGZvcm0sIGNvcHkgU1JDRklMRSB0byBEU1RGSUxFLgorSW4gdGhlIDJuZCBhbmQgM3JkLCBjb3B5IGFsbCBTUkNGSUxFUyB0byBESVJFQ1RPUlkuCitJbiB0aGUgNHRoLCBjcmVhdGUgRElSRUNUT1JJRVMuCisKK09wdGlvbnM6CisgICAgIC0taGVscCAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQuCisgICAgIC0tdmVyc2lvbiAgZGlzcGxheSB2ZXJzaW9uIGluZm8gYW5kIGV4aXQuCisKKyAgLWMgICAgICAgICAgICAoaWdub3JlZCkKKyAgLUMgICAgICAgICAgICBpbnN0YWxsIG9ubHkgaWYgZGlmZmVyZW50IChwcmVzZXJ2ZSB0aGUgbGFzdCBkYXRhIG1vZGlmaWNhdGlvbiB0aW1lKQorICAtZCAgICAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCisgIC1nIEdST1VQICAgICAgJGNoZ3JwcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCisgIC1tIE1PREUgICAgICAgJGNobW9kcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gTU9ERS4KKyAgLW8gVVNFUiAgICAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgorICAtcyAgICAgICAgICAgICRzdHJpcHByb2cgaW5zdGFsbGVkIGZpbGVzLgorICAtdCBESVJFQ1RPUlkgIGluc3RhbGwgaW50byBESVJFQ1RPUlkuCisgIC1UICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCisKK0Vudmlyb25tZW50IHZhcmlhYmxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb21tYW5kczoKKyAgQ0hHUlBQUk9HIENITU9EUFJPRyBDSE9XTlBST0cgQ01QUFJPRyBDUFBST0cgTUtESVJQUk9HIE1WUFJPRworICBSTVBST0cgU1RSSVBQUk9HCisiCisKK3doaWxlIHRlc3QgJCMgLW5lIDA7IGRvCisgIGNhc2UgJDEgaW4KKyAgICAtYykgOzsKKworICAgIC1DKSBjb3B5X29uX2NoYW5nZT10cnVlOzsKKworICAgIC1kKSBkaXJfYXJnPXRydWU7OworCisgICAgLWcpIGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgorCXNoaWZ0OzsKKworICAgIC0taGVscCkgZWNobyAiJHVzYWdlIjsgZXhpdCAkPzs7CisKKyAgICAtbSkgbW9kZT0kMgorCWNhc2UgJG1vZGUgaW4KKwkgIConICcqIHwgKicJJyogfCAqJworJyoJICB8IConKicqIHwgKic/JyogfCAqJ1snKikKKwkgICAgZWNobyAiJDA6IGludmFsaWQgbW9kZTogJG1vZGUiID4mMgorCSAgICBleGl0IDE7OworCWVzYWMKKwlzaGlmdDs7CisKKyAgICAtbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIiCisJc2hpZnQ7OworCisgICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2c7OworCisgICAgLXQpIGRzdF9hcmc9JDIKKwlzaGlmdDs7CisKKyAgICAtVCkgbm9fdGFyZ2V0X2RpcmVjdG9yeT10cnVlOzsKKworICAgIC0tdmVyc2lvbikgZWNobyAiJDAgJHNjcmlwdHZlcnNpb24iOyBleGl0ICQ/OzsKKworICAgIC0tKQlzaGlmdAorCWJyZWFrOzsKKworICAgIC0qKQllY2hvICIkMDogaW52YWxpZCBvcHRpb246ICQxIiA+JjIKKwlleGl0IDE7OworCisgICAgKikgIGJyZWFrOzsKKyAgZXNhYworICBzaGlmdAorZG9uZQorCitpZiB0ZXN0ICQjIC1uZSAwICYmIHRlc3QgLXogIiRkaXJfYXJnJGRzdF9hcmciOyB0aGVuCisgICMgV2hlbiAtZCBpcyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLgorICAjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkgc3BlY2lmaWVkLgorICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRlc3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCisgIGZvciBhcmcKKyAgZG8KKyAgICBpZiB0ZXN0IC1uICIkZHN0X2FyZyI7IHRoZW4KKyAgICAgICMgJEAgaXMgbm90IGVtcHR5OiBpdCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgorICAgICAgc2V0IGZub3JkICIkQCIgIiRkc3RfYXJnIgorICAgICAgc2hpZnQgIyBmbm9yZAorICAgIGZpCisgICAgc2hpZnQgIyBhcmcKKyAgICBkc3RfYXJnPSRhcmcKKyAgZG9uZQorZmkKKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgorICBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgICBlY2hvICIkMDogbm8gaW5wdXQgZmlsZSBzcGVjaWZpZWQuIiA+JjIKKyAgICBleGl0IDEKKyAgZmkKKyAgIyBJdCdzIE9LIHRvIGNhbGwgYGluc3RhbGwtc2ggLWQnIHdpdGhvdXQgYXJndW1lbnQuCisgICMgVGhpcyBjYW4gaGFwcGVuIHdoZW4gY3JlYXRpbmcgY29uZGl0aW9uYWwgZGlyZWN0b3JpZXMuCisgIGV4aXQgMAorZmkKKworaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CisKKyAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1wcyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KKyAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVpcmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgorICBjYXNlICRtb2RlIGluCisgICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisgICAgKjY0NCkgY3BfdW1hc2s9MTMzOzsKKyAgICAqNzU1KSBjcF91bWFzaz0yMjs7CisKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKK2ZvciBzcmMKK2RvCisgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KKyAgY2FzZSAkc3JjIGluCisgICAgLSopIHNyYz0uLyRzcmM7OworICBlc2FjCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgZHN0PSRzcmMKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPworICBlbHNlCisKKyAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAorICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKKyAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KKyAgICBpZiB0ZXN0ICEgLWYgIiRzcmMiICYmIHRlc3QgISAtZCAiJHNyYyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiAkc3JjIGRvZXMgbm90IGV4aXN0LiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCisgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZHN0PSRkc3RfYXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3Q7OworICAgIGVzYWMKKworICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKKyAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgorICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwlleGl0IDEKKyAgICAgIGZpCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPworICAgIGZpCisgIGZpCisKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQorCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CisKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKKworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCisJZWxzZQorCSAgbWtkaXJfbW9kZT0KKwlmaQorCisJcG9zaXhfbWtkaXI9ZmFsc2UKKwljYXNlICR1bWFzayBpbgorCSAgKlsxMjM1NjddWzAtN11bMC03XSkKKwkgICAgIyBQT1NJWCBta2RpciAtcCBzZXRzIHUrd3ggYml0cyByZWdhcmRsZXNzIG9mIHVtYXNrLCB3aGljaAorCSAgICAjIGlzIGluY29tcGF0aWJsZSB3aXRoIEZyZWVCU0QgJ2luc3RhbGwnIHdoZW4gKHVtYXNrICYgMzAwKSAhPSAwLgorCSAgICA7OworCSAgKikKKwkgICAgdG1wZGlyPSR7VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKKwkgICAgdHJhcCAncmV0PSQ/OyBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIgMj4vZGV2L251bGw7IGV4aXQgJHJldCcgMAorCisJICAgIGlmICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkJZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkdG1wZGlyL2QiKSA+L2Rldi9udWxsIDI+JjEKKwkgICAgdGhlbgorCSAgICAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIiB8fCB7CisJCSAgICMgQ2hlY2sgZm9yIFBPU0lYIGluY29tcGF0aWJpbGl0aWVzIHdpdGggLW0uCisJCSAgICMgSFAtVVggMTEuMjMgYW5kIElSSVggNi41IG1rZGlyIC1tIC1wIHNldHMgZ3JvdXAtIG9yCisJCSAgICMgb3RoZXItd3JpdGVhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQgc2hvdWxkbid0LgorCQkgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9kZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCisJCSAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgY2FzZSAkbHNfbGRfdG1wZGlyIGluCisJCSAgICAgZD8/Pz8tP3ItKikgZGlmZmVyZW50X21vZGU9NzAwOzsKKwkJICAgICBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OworCQkgICAgICopIGZhbHNlOzsKKwkJICAgZXNhYyAmJgorCQkgICAkbWtkaXJwcm9nIC1tJGRpZmZlcmVudF9tb2RlIC1wIC0tICIkdG1wZGlyIiAmJiB7CisJCSAgICAgbHNfbGRfdG1wZGlyXzE9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgICAgdGVzdCAiJGxzX2xkX3RtcGRpciIgPSAiJGxzX2xkX3RtcGRpcl8xIgorCQkgICB9CisJCSB9CisJICAgICAgdGhlbiBwb3NpeF9ta2Rpcj06CisJICAgICAgZmkKKwkgICAgICBybWRpciAiJHRtcGRpci9kIiAiJHRtcGRpciIKKwkgICAgZWxzZQorCSAgICAgICMgUmVtb3ZlIGFueSBkaXJzIGxlZnQgYmVoaW5kIGJ5IGFuY2llbnQgbWtkaXIgaW1wbGVtZW50YXRpb25zLgorCSAgICAgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAuLy0tIDI+L2Rldi9udWxsCisJICAgIGZpCisJICAgIHRyYXAgJycgMDs7CisJZXNhYzs7CisgICAgZXNhYworCisgICAgaWYKKyAgICAgICRwb3NpeF9ta2RpciAmJiAoCisJdW1hc2sgJG1rZGlyX3VtYXNrICYmCisJJGRvaXRfZXhlYyAkbWtkaXJwcm9nICRta2Rpcl9tb2RlIC1wIC0tICIkZHN0ZGlyIgorICAgICAgKQorICAgIHRoZW4gOgorICAgIGVsc2UKKworICAgICAgIyBUaGUgdW1hc2sgaXMgcmlkaWN1bG91cywgb3IgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKKyAgICAgICMgb3IgaXQgZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQorICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5nIGZvciByYWNlcyBhcyB3ZSBnby4KKworICAgICAgY2FzZSAkZHN0ZGlyIGluCisJLyopIHByZWZpeD0nLyc7OworCS0qKSBwcmVmaXg9Jy4vJzs7CisJKikgIHByZWZpeD0nJzs7CisgICAgICBlc2FjCisKKyAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiCisKKyAgICAgIG9JRlM9JElGUworICAgICAgSUZTPS8KKyAgICAgICRwb3NpeF9nbG9iIHNldCAtZgorICAgICAgc2V0IGZub3JkICRkc3RkaXIKKyAgICAgIHNoaWZ0CisgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YKKyAgICAgIElGUz0kb0lGUworCisgICAgICBwcmVmaXhlcz0KKworICAgICAgZm9yIGQKKyAgICAgIGRvCisJdGVzdCAteiAiJGQiICYmIGNvbnRpbnVlCisKKwlwcmVmaXg9JHByZWZpeCRkCisJaWYgdGVzdCAtZCAiJHByZWZpeCI7IHRoZW4KKwkgIHByZWZpeGVzPQorCWVsc2UKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQorCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCisKKyAgICAgIGlmIHRlc3QgLW4gIiRwcmVmaXhlcyI7IHRoZW4KKwkjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJKHVtYXNrICRta2Rpcl91bWFzayAmJgorCSBldmFsICJcJGRvaXRfZXhlYyBcJG1rZGlycHJvZyAkcHJlZml4ZXMiKSB8fAorCSAgdGVzdCAtZCAiJGRzdGRpciIgfHwgZXhpdCAxCisJb2Jzb2xldGVfbWtkaXJfdXNlZD10cnVlCisgICAgICBmaQorICAgIGZpCisgIGZpCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAiJG9ic29sZXRlX21rZGlyX3VzZWQkY2hvd25jbWQkY2hncnBjbWQiID0gZmFsc2UgfHwKKyAgICAgIHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0IjsgfSB8fCBleGl0IDEKKyAgZWxzZQorCisgICAgIyBNYWtlIGEgY291cGxlIG9mIHRlbXAgZmlsZSBuYW1lcyBpbiB0aGUgcHJvcGVyIGRpcmVjdG9yeS4KKyAgICBkc3R0bXA9JGRzdGRpci9faW5zdC4kJF8KKyAgICBybXRtcD0kZHN0ZGlyL19ybS4kJF8KKworICAgICMgVHJhcCB0byBjbGVhbiB1cCB0aG9zZSB0ZW1wIGZpbGVzIGF0IGV4aXQuCisgICAgdHJhcCAncmV0PSQ/OyBybSAtZiAiJGRzdHRtcCIgIiRybXRtcCIgJiYgZXhpdCAkcmV0JyAwCisKKyAgICAjIENvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lLgorICAgICh1bWFzayAkY3BfdW1hc2sgJiYgJGRvaXRfZXhlYyAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIpICYmCisKKyAgICAjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMuCisgICAgIworICAgICMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KKyAgICAjIGlnbm9yZSBlcnJvcnMgZnJvbSBhbnkgb2YgdGhlc2UsIGp1c3QgbWFrZSBzdXJlIG5vdCB0byBpZ25vcmUKKyAgICAjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCisgICAgIworICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCisKKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgorCisgICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYgJiYKKyAgICAgICBzZXQgWCAkb2xkICYmIG9sZD06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICBzZXQgWCAkbmV3ICYmIG5ldz06JDI6JDQ6JDU6JDYgJiYKKyAgICAgICAkcG9zaXhfZ2xvYiBzZXQgK2YgJiYKKworICAgICAgIHRlc3QgIiRvbGQiID0gIiRuZXciICYmCisgICAgICAgJGNtcHByb2cgIiRkc3QiICIkZHN0dG1wIiA+L2Rldi9udWxsIDI+JjEKKyAgICB0aGVuCisgICAgICBybSAtZiAiJGRzdHRtcCIKKyAgICBlbHNlCisgICAgICAjIFJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKyAgICAgICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKKworCSMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KKwkkZG9pdCAkbXZjbWQgIiRkc3R0bXAiICIkZHN0IgorICAgICAgfQorICAgIGZpIHx8IGV4aXQgMQorCisgICAgdHJhcCAnJyAwCisgIGZpCitkb25lCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyB0aW1lLXN0YW1wLWVuZDogIjsgIyBVVEMiCisjIEVuZDoKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnN0YWxsLXdpdGgtY2FyZSBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9pbnN0YWxsLXdpdGgtY2FyZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lYjY5OWNmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2luc3RhbGwtd2l0aC1jYXJlCkBAIC0wLDAgKzEsMzAgQEAKKyMhIC9iaW4vc2gKKworZWNobyBpbnN0YWxsLXdpdGgtY2FyZSAiJEAiCisKKyMgRmluYWwgYXJnIGlzIGRlc3QuCitldmFsIERFU1Q9XCQkIworCitjYXNlICQoZWNobyAkREVTVCB8IHRyIC1zIC8gLykgaW4KKyAgICAvc2Jpbi9pbnNtb2Quc3RhdGljKSA7OyMgVGhpcyBkaWRuJ3QgZXhpc3QgYmVmb3JlLCBPSy4KKyAgICAvc2Jpbi9pbnNtb2R8L3NiaW4vbHNtb2R8L3NiaW4vbW9kcHJvYmV8L3NiaW4vcm1tb2R8L3NiaW4vZGVwbW9kKQorCWlmIFsgLWYgJERFU1QgXSAmJiBbIC1mICRERVNULm9sZCBdOyB0aGVuCisJICAgIGVjaG8gUmVmdXNpbmcgdG8gaW5zdGFsbCAkREVTVCwgcmVtb3ZlICRERVNULm9sZCBmaXJzdC4gPiYyCisJICAgIGVjaG8gTm90ZTogJERFU1QgcmVxdWlyZXMga2VybmVsIHZlcnNpb24gMi41LjQ4IG9yIGFib3ZlLgorCSAgICBpZiBbICRERVNUID0gL3NiaW4vbW9kcHJvYmUgXTsgdGhlbgorY2F0IDw8IEVPRiA+JjIKKworTm90ZTogZ2VuZXJhdGUtbW9kcHJvYmUuY29uZiByZXF1aXJlcyAvc2Jpbi9tb2Rwcm9iZS5vbGQuCisoaS5lLiBpZiB5b3UgbmVlZCB0byBydW4gaXQsIGRvIHNvIGJlZm9yZSByZW1vdmluZyBtb2Rwcm9iZS5vbGQpLgorCitFT0YKKwkgICAgZmkKKwkgICAgZXhpdCAxCisJZmkKKwk7OworICAgIC9iaW4vbHNtb2QpICMgSWYgd2UncmUgaW5zdGFsbGluZyBpbnRvIC9iaW4sIG1ha2UgL3NiaW4vbHNtb2QgbGluay4KKwlsbiAtc2YgLi4vYmluL2xzbW9kIC9zYmluL2xzbW9kCisJOzsKK2VzYWMKKworZXhlYyBpbnN0YWxsICIkQCIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9saXN0LmggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1Y2E0M2MKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbGlzdC5oCkBAIC0wLDAgKzEsMjUxIEBACisvKiBTdG9sZW4gZnJvbSBMaW51eCBLZXJuZWwgU291cmNlJ3MgbGlzdC5oIC0tIEdQTC4gKi8KKyNpZm5kZWYgX01PRElOSVRUT09MU19MSVNUX0gKKyNkZWZpbmUgX01PRElOSVRUT09MU19MSVNUX0gKKworI3VuZGVmIG9mZnNldG9mCisjZGVmaW5lIG9mZnNldG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQorCisvKioKKyAqIGNvbnRhaW5lcl9vZiAtIGNhc3QgYSBtZW1iZXIgb2YgYSBzdHJ1Y3R1cmUgb3V0IHRvIHRoZSBjb250YWluaW5nIHN0cnVjdHVyZQorICoKKyAqIEBwdHI6CXRoZSBwb2ludGVyIHRvIHRoZSBtZW1iZXIuCisgKiBAdHlwZToJdGhlIHR5cGUgb2YgdGhlIGNvbnRhaW5lciBzdHJ1Y3QgdGhpcyBpcyBlbWJlZGRlZCBpbi4KKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgd2l0aGluIHRoZSBzdHJ1Y3QuCisgKgorICovCisjZGVmaW5lIGNvbnRhaW5lcl9vZihwdHIsIHR5cGUsIG1lbWJlcikgKHsJCQlcCisgICAgICAgIGNvbnN0IHR5cGVvZiggKCh0eXBlICopMCktPm1lbWJlciApICpfX21wdHIgPSAocHRyKTsJXAorICAgICAgICAodHlwZSAqKSggKGNoYXIgKilfX21wdHIgLSBvZmZzZXRvZih0eXBlLG1lbWJlcikgKTt9KQorCisvKgorICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBTb21lIG9mIHRoZSBpbnRlcm5hbCBmdW5jdGlvbnMgKCJfX3h4eCIpIGFyZSB1c2VmdWwgd2hlbgorICogbWFuaXB1bGF0aW5nIHdob2xlIGxpc3RzIHJhdGhlciB0aGFuIHNpbmdsZSBlbnRyaWVzLCBhcworICogc29tZXRpbWVzIHdlIGFscmVhZHkga25vdyB0aGUgbmV4dC9wcmV2IGVudHJpZXMgYW5kIHdlIGNhbgorICogZ2VuZXJhdGUgYmV0dGVyIGNvZGUgYnkgdXNpbmcgdGhlbSBkaXJlY3RseSByYXRoZXIgdGhhbgorICogdXNpbmcgdGhlIGdlbmVyaWMgc2luZ2xlLWVudHJ5IHJvdXRpbmVzLgorICovCisKK3N0cnVjdCBsaXN0X2hlYWQgeworCXN0cnVjdCBsaXN0X2hlYWQgKm5leHQsICpwcmV2OworfTsKKworI2RlZmluZSBMSVNUX0hFQURfSU5JVChuYW1lKSB7ICYobmFtZSksICYobmFtZSkgfQorCisjZGVmaW5lIExJU1RfSEVBRChuYW1lKSBcCisJc3RydWN0IGxpc3RfaGVhZCBuYW1lID0gTElTVF9IRUFEX0lOSVQobmFtZSkKKworI2RlZmluZSBJTklUX0xJU1RfSEVBRChwdHIpIGRvIHsgXAorCShwdHIpLT5uZXh0ID0gKHB0cik7IChwdHIpLT5wcmV2ID0gKHB0cik7IFwKK30gd2hpbGUgKDApCisKKy8qCisgKiBJbnNlcnQgYSBuZXcgZW50cnkgYmV0d2VlbiB0d28ga25vd24gY29uc2VjdXRpdmUgZW50cmllcy4gCisgKgorICogVGhpcyBpcyBvbmx5IGZvciBpbnRlcm5hbCBsaXN0IG1hbmlwdWxhdGlvbiB3aGVyZSB3ZSBrbm93CisgKiB0aGUgcHJldi9uZXh0IGVudHJpZXMgYWxyZWFkeSEKKyAqLworc3RhdGljIGlubGluZSB2b2lkIF9fbGlzdF9hZGQoc3RydWN0IGxpc3RfaGVhZCAqbmV3LAorCQkJICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcHJldiwKKwkJCSAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKm5leHQpCit7CisJbmV4dC0+cHJldiA9IG5ldzsKKwluZXctPm5leHQgPSBuZXh0OworCW5ldy0+cHJldiA9IHByZXY7CisJcHJldi0+bmV4dCA9IG5ldzsKK30KKworLyoqCisgKiBsaXN0X2FkZCAtIGFkZCBhIG5ldyBlbnRyeQorICogQG5ldzogbmV3IGVudHJ5IHRvIGJlIGFkZGVkCisgKiBAaGVhZDogbGlzdCBoZWFkIHRvIGFkZCBpdCBhZnRlcgorICoKKyAqIEluc2VydCBhIG5ldyBlbnRyeSBhZnRlciB0aGUgc3BlY2lmaWVkIGhlYWQuCisgKiBUaGlzIGlzIGdvb2QgZm9yIGltcGxlbWVudGluZyBzdGFja3MuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X2FkZChzdHJ1Y3QgbGlzdF9oZWFkICpuZXcsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJX19saXN0X2FkZChuZXcsIGhlYWQsIGhlYWQtPm5leHQpOworfQorCisvKioKKyAqIGxpc3RfYWRkX3RhaWwgLSBhZGQgYSBuZXcgZW50cnkKKyAqIEBuZXc6IG5ldyBlbnRyeSB0byBiZSBhZGRlZAorICogQGhlYWQ6IGxpc3QgaGVhZCB0byBhZGQgaXQgYmVmb3JlCisgKgorICogSW5zZXJ0IGEgbmV3IGVudHJ5IGJlZm9yZSB0aGUgc3BlY2lmaWVkIGhlYWQuCisgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaW1wbGVtZW50aW5nIHF1ZXVlcy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGxpc3RfYWRkX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbmV3LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCV9fbGlzdF9hZGQobmV3LCBoZWFkLT5wcmV2LCBoZWFkKTsKK30KKworLyoKKyAqIERlbGV0ZSBhIGxpc3QgZW50cnkgYnkgbWFraW5nIHRoZSBwcmV2L25leHQgZW50cmllcworICogcG9pbnQgdG8gZWFjaCBvdGhlci4KKyAqCisgKiBUaGlzIGlzIG9ubHkgZm9yIGludGVybmFsIGxpc3QgbWFuaXB1bGF0aW9uIHdoZXJlIHdlIGtub3cKKyAqIHRoZSBwcmV2L25leHQgZW50cmllcyBhbHJlYWR5IQorICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19saXN0X2RlbChzdHJ1Y3QgbGlzdF9oZWFkICogcHJldiwgc3RydWN0IGxpc3RfaGVhZCAqIG5leHQpCit7CisJbmV4dC0+cHJldiA9IHByZXY7CisJcHJldi0+bmV4dCA9IG5leHQ7Cit9CisKKy8qKgorICogbGlzdF9kZWwgLSBkZWxldGVzIGVudHJ5IGZyb20gbGlzdC4KKyAqIEBlbnRyeTogdGhlIGVsZW1lbnQgdG8gZGVsZXRlIGZyb20gdGhlIGxpc3QuCisgKiBOb3RlOiBsaXN0X2VtcHR5IG9uIGVudHJ5IGRvZXMgbm90IHJldHVybiB0cnVlIGFmdGVyIHRoaXMsIHRoZSBlbnRyeSBpcworICogaW4gYW4gdW5kZWZpbmVkIHN0YXRlLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9kZWwoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCit7CisJX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOworfQorCisvKioKKyAqIGxpc3RfZGVsX2luaXQgLSBkZWxldGVzIGVudHJ5IGZyb20gbGlzdCBhbmQgcmVpbml0aWFsaXplIGl0LgorICogQGVudHJ5OiB0aGUgZWxlbWVudCB0byBkZWxldGUgZnJvbSB0aGUgbGlzdC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkIGxpc3RfZGVsX2luaXQoc3RydWN0IGxpc3RfaGVhZCAqZW50cnkpCit7CisJX19saXN0X2RlbChlbnRyeS0+cHJldiwgZW50cnktPm5leHQpOworCUlOSVRfTElTVF9IRUFEKGVudHJ5KTsgCit9CisKKy8qKgorICogbGlzdF9tb3ZlIC0gZGVsZXRlIGZyb20gb25lIGxpc3QgYW5kIGFkZCBhcyBhbm90aGVyJ3MgaGVhZAorICogQGxpc3Q6IHRoZSBlbnRyeSB0byBtb3ZlCisgKiBAaGVhZDogdGhlIGhlYWQgdGhhdCB3aWxsIHByZWNlZGUgb3VyIGVudHJ5CisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X21vdmUoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKK3sKKyAgICAgICAgX19saXN0X2RlbChsaXN0LT5wcmV2LCBsaXN0LT5uZXh0KTsKKyAgICAgICAgbGlzdF9hZGQobGlzdCwgaGVhZCk7Cit9CisKKy8qKgorICogbGlzdF9tb3ZlX3RhaWwgLSBkZWxldGUgZnJvbSBvbmUgbGlzdCBhbmQgYWRkIGFzIGFub3RoZXIncyB0YWlsCisgKiBAbGlzdDogdGhlIGVudHJ5IHRvIG1vdmUKKyAqIEBoZWFkOiB0aGUgaGVhZCB0aGF0IHdpbGwgZm9sbG93IG91ciBlbnRyeQorICovCitzdGF0aWMgaW5saW5lIHZvaWQgbGlzdF9tb3ZlX3RhaWwoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKKwkJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisgICAgICAgIF9fbGlzdF9kZWwobGlzdC0+cHJldiwgbGlzdC0+bmV4dCk7CisgICAgICAgIGxpc3RfYWRkX3RhaWwobGlzdCwgaGVhZCk7Cit9CisKKy8qKgorICogbGlzdF9lbXB0eSAtIHRlc3RzIHdoZXRoZXIgYSBsaXN0IGlzIGVtcHR5CisgKiBAaGVhZDogdGhlIGxpc3QgdG8gdGVzdC4KKyAqLworc3RhdGljIGlubGluZSBpbnQgbGlzdF9lbXB0eShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCXJldHVybiBoZWFkLT5uZXh0ID09IGhlYWQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2xpc3Rfc3BsaWNlKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJc3RydWN0IGxpc3RfaGVhZCAqZmlyc3QgPSBsaXN0LT5uZXh0OworCXN0cnVjdCBsaXN0X2hlYWQgKmxhc3QgPSBsaXN0LT5wcmV2OworCXN0cnVjdCBsaXN0X2hlYWQgKmF0ID0gaGVhZC0+bmV4dDsKKworCWZpcnN0LT5wcmV2ID0gaGVhZDsKKwloZWFkLT5uZXh0ID0gZmlyc3Q7CisKKwlsYXN0LT5uZXh0ID0gYXQ7CisJYXQtPnByZXYgPSBsYXN0OworfQorCisvKioKKyAqIGxpc3Rfc3BsaWNlIC0gam9pbiB0d28gbGlzdHMKKyAqIEBsaXN0OiB0aGUgbmV3IGxpc3QgdG8gYWRkLgorICogQGhlYWQ6IHRoZSBwbGFjZSB0byBhZGQgaXQgaW4gdGhlIGZpcnN0IGxpc3QuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZShzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQoreworCWlmICghbGlzdF9lbXB0eShsaXN0KSkKKwkJX19saXN0X3NwbGljZShsaXN0LCBoZWFkKTsKK30KKworLyoqCisgKiBsaXN0X3NwbGljZV9pbml0IC0gam9pbiB0d28gbGlzdHMgYW5kIHJlaW5pdGlhbGlzZSB0aGUgZW1wdGllZCBsaXN0LgorICogQGxpc3Q6IHRoZSBuZXcgbGlzdCB0byBhZGQuCisgKiBAaGVhZDogdGhlIHBsYWNlIHRvIGFkZCBpdCBpbiB0aGUgZmlyc3QgbGlzdC4KKyAqCisgKiBUaGUgbGlzdCBhdCBAbGlzdCBpcyByZWluaXRpYWxpc2VkCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZCBsaXN0X3NwbGljZV9pbml0KHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCit7CisJaWYgKCFsaXN0X2VtcHR5KGxpc3QpKSB7CisJCV9fbGlzdF9zcGxpY2UobGlzdCwgaGVhZCk7CisJCUlOSVRfTElTVF9IRUFEKGxpc3QpOworCX0KK30KKworLyoqCisgKiBsaXN0X2VudHJ5IC0gZ2V0IHRoZSBzdHJ1Y3QgZm9yIHRoaXMgZW50cnkKKyAqIEBwdHI6CXRoZSAmc3RydWN0IGxpc3RfaGVhZCBwb2ludGVyLgorICogQHR5cGU6CXRoZSB0eXBlIG9mIHRoZSBzdHJ1Y3QgdGhpcyBpcyBlbWJlZGRlZCBpbi4KKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBsaXN0X3N0cnVjdCB3aXRoaW4gdGhlIHN0cnVjdC4KKyAqLworI2RlZmluZSBsaXN0X2VudHJ5KHB0ciwgdHlwZSwgbWVtYmVyKSBcCisJY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKQorCisvKioKKyAqIGxpc3RfZm9yX2VhY2gJLQlpdGVyYXRlIG92ZXIgYSBsaXN0CisgKiBAcG9zOgl0aGUgJnN0cnVjdCBsaXN0X2hlYWQgdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgorICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCisgKi8KKyNkZWZpbmUgbGlzdF9mb3JfZWFjaChwb3MsIGhlYWQpIFwKKwlmb3IgKHBvcyA9IChoZWFkKS0+bmV4dDsgcG9zICE9IChoZWFkKTsgcG9zID0gcG9zLT5uZXh0KQorCisvKioKKyAqIGxpc3RfZm9yX2VhY2hfcHJldgktCWl0ZXJhdGUgb3ZlciBhIGxpc3QgYmFja3dhcmRzCisgKiBAcG9zOgl0aGUgJnN0cnVjdCBsaXN0X2hlYWQgdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgorICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCisgKi8KKyNkZWZpbmUgbGlzdF9mb3JfZWFjaF9wcmV2KHBvcywgaGVhZCkgXAorCWZvciAocG9zID0gKGhlYWQpLT5wcmV2OyBwb3MgIT0gKGhlYWQpOyBwb3MgPSBwb3MtPnByZXYpCisgICAgICAgIAkKKy8qKgorICogbGlzdF9mb3JfZWFjaF9zYWZlCS0JaXRlcmF0ZSBvdmVyIGEgbGlzdCBzYWZlIGFnYWluc3QgcmVtb3ZhbCBvZiBsaXN0IGVudHJ5CisgKiBAcG9zOgl0aGUgJnN0cnVjdCBsaXN0X2hlYWQgdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgorICogQG46CQlhbm90aGVyICZzdHJ1Y3QgbGlzdF9oZWFkIHRvIHVzZSBhcyB0ZW1wb3Jhcnkgc3RvcmFnZQorICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCisgKi8KKyNkZWZpbmUgbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgbiwgaGVhZCkgXAorCWZvciAocG9zID0gKGhlYWQpLT5uZXh0LCBuID0gcG9zLT5uZXh0OyBwb3MgIT0gKGhlYWQpOyBcCisJCXBvcyA9IG4sIG4gPSBwb3MtPm5leHQpCisKKy8qKgorICogbGlzdF9mb3JfZWFjaF9lbnRyeQktCWl0ZXJhdGUgb3ZlciBsaXN0IG9mIGdpdmVuIHR5cGUKKyAqIEBwb3M6CXRoZSB0eXBlICogdG8gdXNlIGFzIGEgbG9vcCBjb3VudGVyLgorICogQGhlYWQ6CXRoZSBoZWFkIGZvciB5b3VyIGxpc3QuCisgKiBAbWVtYmVyOgl0aGUgbmFtZSBvZiB0aGUgbGlzdF9zdHJ1Y3Qgd2l0aGluIHRoZSBzdHJ1Y3QuCisgKi8KKyNkZWZpbmUgbGlzdF9mb3JfZWFjaF9lbnRyeShwb3MsIGhlYWQsIG1lbWJlcikJCQkJXAorCWZvciAocG9zID0gbGlzdF9lbnRyeSgoaGVhZCktPm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVyKTsJXAorCSAgICAgJnBvcy0+bWVtYmVyICE9IChoZWFkKTsJCQkJCVwKKwkgICAgIHBvcyA9IGxpc3RfZW50cnkocG9zLT5tZW1iZXIubmV4dCwgdHlwZW9mKCpwb3MpLCBtZW1iZXIpKQorCisvKioKKyAqIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSAtIGl0ZXJhdGUgb3ZlciBsaXN0IG9mIGdpdmVuIHR5cGUgc2FmZSBhZ2FpbnN0IHJlbW92YWwgb2YgbGlzdCBlbnRyeQorICogQHBvczoJdGhlIHR5cGUgKiB0byB1c2UgYXMgYSBsb29wIGN1cnNvci4KKyAqIEBuOgkJYW5vdGhlciB0eXBlICogdG8gdXNlIGFzIHRlbXBvcmFyeSBzdG9yYWdlCisgKiBAaGVhZDoJdGhlIGhlYWQgZm9yIHlvdXIgbGlzdC4KKyAqIEBtZW1iZXI6CXRoZSBuYW1lIG9mIHRoZSBsaXN0X3N0cnVjdCB3aXRoaW4gdGhlIHN0cnVjdC4KKyAqLworI2RlZmluZSBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocG9zLCBuLCBoZWFkLCBtZW1iZXIpCQkJXAorCWZvciAocG9zID0gbGlzdF9lbnRyeSgoaGVhZCktPm5leHQsIHR5cGVvZigqcG9zKSwgbWVtYmVyKSwJXAorCQluID0gbGlzdF9lbnRyeShwb3MtPm1lbWJlci5uZXh0LCB0eXBlb2YoKnBvcyksIG1lbWJlcik7CVwKKwkgICAgICZwb3MtPm1lbWJlciAhPSAoaGVhZCk7IAkJCQkJXAorCSAgICAgcG9zID0gbiwgbiA9IGxpc3RfZW50cnkobi0+bWVtYmVyLm5leHQsIHR5cGVvZigqbiksIG1lbWJlcikpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xvZ2dpbmcuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9sb2dnaW5nLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMzMDI2OQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9sb2dnaW5nLmMKQEAgLTAsMCArMSw3OSBAQAorI2RlZmluZSBfR05VX1NPVVJDRSAvKiBhc3ByaW50ZiAqLworCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXNsb2cuaD4KKworI2luY2x1ZGUgImxvZ2dpbmcuaCIKKworLyogRG8gd2UgdXNlIHN5c2xvZyBmb3IgbWVzc2FnZXMgb3Igc3RkZXJyPyAqLworaW50IGxvZ2dpbmcgPSAwOworCisvKiBEbyB3ZSB3YW50IHRvIHNpbGVudGx5IGRyb3AgYWxsIHdhcm5pbmdzPyAqLworaW50IHF1aWV0ID0gMDsKKworLyogRG8gd2Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBhcyB3ZWxsIGFzIGVycm9ycz8gKi8KK2ludCB2ZXJib3NlID0gMDsKKwordm9pZCBtZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0ICphcmdsaXN0KQoreworCWludCByZXQ7CisJY2hhciAqYnVmLCAqYnVmMjsKKworCXJldCA9IHZhc3ByaW50ZigmYnVmLCBmbXQsICphcmdsaXN0KTsKKwlpZiAocmV0ID49IDApCisJCXJldCA9IGFzcHJpbnRmKCZidWYyLCAiJXMlcyIsIHByZWZpeCwgYnVmKTsKKworCWlmIChyZXQgPCAwKQorCQlidWYyID0gIkZBVEFMOiBPdXQgb2YgbWVtb3J5LlxuIjsKKworCWlmIChsb2dnaW5nKQorCQlzeXNsb2coTE9HX05PVElDRSwgIiVzIiwgYnVmMik7CisJZWxzZQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzIiwgYnVmMik7CisKKwlpZiAocmV0IDwgMCkKKwkJZXhpdCgxKTsKKworCWZyZWUoYnVmMik7CisJZnJlZShidWYpOworfQorCit2b2lkIHdhcm4oY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdsaXN0OworCXZhX3N0YXJ0KGFyZ2xpc3QsIGZtdCk7CisJaWYgKCFxdWlldCkKKwkJbWVzc2FnZSgiV0FSTklORzogIiwgZm10LCAmYXJnbGlzdCk7CisJdmFfZW5kKGFyZ2xpc3QpOworfQorCit2b2lkIGVycm9yKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworCXZhX2xpc3QgYXJnbGlzdDsKKwl2YV9zdGFydChhcmdsaXN0LCBmbXQpOworCW1lc3NhZ2UoIkVSUk9SOiAiLCBmbXQsICZhcmdsaXN0KTsKKwl2YV9lbmQoYXJnbGlzdCk7Cit9CisKK3ZvaWQgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdsaXN0OworCXZhX3N0YXJ0KGFyZ2xpc3QsIGZtdCk7CisJbWVzc2FnZSgiRkFUQUw6ICIsIGZtdCwgJmFyZ2xpc3QpOworCXZhX2VuZChhcmdsaXN0KTsKKwlleGl0KDEpOworfQorCisvKiBJZiB3ZSBkb24ndCBmbHVzaCwgdGhlbiBjaGlsZCBwcm9jZXNzZXMgcHJpbnQgYmVmb3JlIHdlIGRvICovCit2b2lkIGluZm8oY29uc3QgY2hhciAqZm10LCAuLi4pCit7CisJdmFfbGlzdCBhcmdsaXN0OworCXZhX3N0YXJ0KGFyZ2xpc3QsIGZtdCk7CisJaWYgKHZlcmJvc2UpIHsKKwkJdmZwcmludGYoc3Rkb3V0LCBmbXQsIGFyZ2xpc3QpOworCQlmZmx1c2goc3Rkb3V0KTsKKwl9CisJdmFfZW5kKGFyZ2xpc3QpOworfQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xvZ2dpbmcuaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9sb2dnaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIxMWRmMAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9sb2dnaW5nLmgKQEAgLTAsMCArMSw0OSBAQAorI2lmbmRlZiBNT0RJTklUVE9PTFNfTE9HR0lOR19ICisjZGVmaW5lIE1PRElOSVRUT09MU19MT0dHSU5HX0gKKworLyogRG8gd2UgdXNlIHN5c2xvZyBmb3IgbWVzc2FnZXMgb3Igc3RkZXJyPyAqLworZXh0ZXJuIGludCBsb2dnaW5nOworCisvKiBEbyB3ZSB3YW50IHRvIHNpbGVudGx5IGRyb3AgYWxsIHdhcm5pbmdzPyAqLworZXh0ZXJuIGludCBxdWlldDsKKworLyogRG8gd2Ugd2FudCBpbmZvcm1hdGl2ZSBtZXNzYWdlcyBhcyB3ZWxsIGFzIGVycm9ycz8gKi8KK2V4dGVybiBpbnQgdmVyYm9zZTsKKworI2lmZGVmIF9fR05VQ19fCisjZGVmaW5lIF9wcmludGYgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMSwgMikpKQorI2Vsc2UKKyNkZWZpbmUgX3ByaW50ZgorI2VuZGlmCisKK2V4dGVybiB2b2lkIF9wcmludGYgZmF0YWwoY29uc3QgY2hhciAqZm10LCAuLi4pOworZXh0ZXJuIHZvaWQgX3ByaW50ZiBlcnJvcihjb25zdCBjaGFyICpmbXQsIC4uLik7CitleHRlcm4gdm9pZCBfcHJpbnRmIHdhcm4oY29uc3QgY2hhciAqZm10LCAuLi4pOworZXh0ZXJuIHZvaWQgX3ByaW50ZiBpbmZvKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKKwordHlwZWRlZiB2b2lkIF9wcmludGYgKCplcnJmbl90KShjb25zdCBjaGFyICpmbXQsIC4uLik7CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBncmFtbWFyKGNvbnN0IGNoYXIgKmNtZCwKKwkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBpbnQgbGluZSkKK3sKKwl3YXJuKCIlcyBsaW5lICV1OiBpZ25vcmluZyBiYWQgbGluZSBzdGFydGluZyB3aXRoICclcydcbiIsCisJICAgICBmaWxlbmFtZSwgbGluZSwgY21kKTsKK30KKworI2RlZmluZSBOT0ZBSUwocHRyKSAgZG9fbm9mYWlsKChwdHIpLCBfX0ZJTEVfXywgX19MSU5FX18sICNwdHIpCisKKyNkZWZpbmUgbm9mYWlsX2FzcHJpbnRmKHB0ciwgLi4uKQkJCQlcCisJZG8geyBpZiAoYXNwcmludGYoKHB0ciksIF9fVkFfQVJHU19fKSA8IDApIAkJXAorCQlkb19ub2ZhaWwoTlVMTCwgX19GSUxFX18sIF9fTElORV9fLCAjcHRyKTsJXAorCX0gd2hpbGUoMCkKKworc3RhdGljIGlubGluZSB2b2lkICpkb19ub2ZhaWwodm9pZCAqcHRyLCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZXhwcikKK3sKKwlpZiAoIXB0cikgeworCQlmYXRhbCgiTWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSAlcyBsaW5lICVkOiAlcy5cbiIsCisJCSAgICAgIGZpbGUsIGxpbmUsIGV4cHIpOworCX0KKwlyZXR1cm4gcHRyOworfQorCisjZW5kaWYgLyogTU9ESU5JVFRPT0xTX0xPR0dJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xzbW9kLjggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbHNtb2QuOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDZhMzEzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xzbW9kLjgKQEAgLTAsMCArMSwyMSBAQAorLlxcIiBhdXRvLWdlbmVyYXRlZCBieSBkb2Nib29rMm1hbi1zcGVjICRSZXZpc2lvbjogMS4yICQKKy5USCAiTFNNT0QiICI4IiAiMjAxMC0wMy0wMSIgIiIgIiIKKy5TSCBOQU1FCitsc21vZCBcLSBwcm9ncmFtIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBtb2R1bGVzIGluIHRoZSBMaW51eCBLZXJuZWwKKy5TSCBTWU5PUFNJUworLnNwCitcZkJsc21vZFxmUgorLlNIICJERVNDUklQVElPTiIKKy5QUAorXGZCbHNtb2RcZlIgaXMgYSB0cml2aWFsIHByb2dyYW0gd2hpY2ggbmljZWx5Citmb3JtYXRzIHRoZSBjb250ZW50cyBvZiB0aGUgXGZJL3Byb2MvbW9kdWxlc1xmUiwKK3Nob3dpbmcgd2hhdCBrZXJuZWwgbW9kdWxlcyBhcmUgY3VycmVudGx5IGxvYWRlZC4KKy5TSCAiQ09QWVJJR0hUIgorLlBQCitUaGlzIG1hbnVhbCBwYWdlIG9yaWdpbmFsbHkgQ29weXJpZ2h0IDIwMDIsIFJ1c3R5IFJ1c3NlbGwsIElCTQorQ29ycG9yYXRpb24uIE1haW50YWluZWQgYnkgSm9uIE1hc3RlcnMgYW5kIG90aGVycy4KKy5TSCAiU0VFIEFMU08iCisuUFAKK1xmQmluc21vZFxmUig4KSwKK1xmQm1vZHByb2JlXGZSKDgpLAorXGZCbW9kaW5mb1xmUig4KQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xzbW9kLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbHNtb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQyZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL2xzbW9kLmMKQEAgLTAsMCArMSw4MyBAQAorLyogbHNtb2QuYzogbGlzdCB0aGUgc3RhdHVzIG9mIGtlcm5lbCBtb2R1bGVzLgorICAgIENvcHlyaWdodCAoQykgMjAwMiAgUnVzdHkgUnVzc2VsbCwgSUJNIENvcnBvcmF0aW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorKi8KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisKKyNpbmNsdWRlICJ0ZXN0aW5nLmgiCisKK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQoreworCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzXG4iLCBwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljaGFyIGxpbmVbNDA5Nl07CisJRklMRSAqZmlsZTsKKworCWlmIChhcmdjICE9IDEpCisJCXByaW50X3VzYWdlKCJsc21vZCIpOworCisJZmlsZSA9IGZvcGVuKCIvcHJvYy9tb2R1bGVzIiwgInIiKTsKKwlpZiAoIWZpbGUpIHsKKwkJcGVycm9yKCJPcGVuaW5nIC9wcm9jL21vZHVsZXMiKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlwcmludGYoIk1vZHVsZSAgICAgICAgICAgICAgICAgIFNpemUgIFVzZWQgYnlcbiIpOworCXdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGZpbGUpKSB7CisJCWNoYXIgKnRvazsKKworCQl0b2sgPSBzdHJ0b2sobGluZSwgIiBcdCIpOworCQlwcmludGYoIiUtMTlzIiwgdG9rKTsKKwkJdG9rID0gc3RydG9rKE5VTEwsICIgXHRcbiIpOworCQlwcmludGYoIiAlOHMiLCB0b2spOworCQl0b2sgPSBzdHJ0b2soTlVMTCwgIiBcdFxuIik7CisJCS8qIE51bGwgaWYgbm8gbW9kdWxlIHVubG9hZGluZyBzdXBwb3J0LiAqLworCQlpZiAodG9rKSB7CisJCQlwcmludGYoIiAgJXMiLCB0b2spOworCQkJdG9rID0gc3RydG9rKE5VTEwsICJcbiIpOworCQkJaWYgKCF0b2spCisJCQkJdG9rID0gIiI7CisJCQkvKiBOZXctc3R5bGUgaGFzIGNvbW1hcywgb3IgLS4gIElmIHNvLAorCQkJICAgdHJ1bmNhdGUgKG90aGVyIGZpZWxkcyBtaWdodCBmb2xsb3cpLiAqLworCQkJZWxzZSBpZiAoc3RyY2hyKHRvaywgJywnKSkgeworCQkJCXRvayA9IHN0cnRvayh0b2ssICJcdCAiKTsKKwkJCQkvKiBTdHJpcCB0cmFpbGluZyBjb21tYS4gKi8KKwkJCQlpZiAodG9rW3N0cmxlbih0b2spLTFdID09ICcsJykKKwkJCQkJdG9rW3N0cmxlbih0b2spLTFdID0gJ1wwJzsKKwkJCX0gZWxzZSBpZiAodG9rWzBdID09ICctJworCQkJCSAgICYmICh0b2tbMV0gPT0gJ1wwJyB8fCBpc3NwYWNlKHRva1sxXSkpKQorCQkJCXRvayA9ICIiOworCQkJcHJpbnRmKCIgJXMiLCB0b2spOworCQl9CisJCXByaW50ZigiXG4iKTsKKwl9CisJZmNsb3NlKGZpbGUpOworCWV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbTQvYXhfY29uZmlndXJlX2FyZ3MubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjA5OWNmOQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tNC9heF9jb25maWd1cmVfYXJncy5tNApAQCAtMCwwICsxLDcyIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgaHR0cDovL2F1dG9jb25mLWFyY2hpdmUuY3J5cC50by9heF9jb25maWd1cmVfYXJncy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NPTkZJR1VSRV9BUkdTCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgSGVscGVyIG1hY3JvIGZvciBBWF9FTkFCTEVfQlVJTERESVIuCisjCisjICAgVGhlIHRyYWRpdGlvbmFsIHdheSBvZiBzdGFydGluZyBhIHN1YmRpci1jb25maWd1cmUgaXMgcnVubmluZyB0aGUgc2NyaXB0CisjICAgd2l0aCAkezErIiRAIn0gYnV0IHNpbmNlIGF1dG9jb25mIDIuNjAgdGhpcyBpcyBicm9rZW4uIEluc3RlYWQgd2UgaGF2ZQorIyAgIHRvIHJlbHkgb24gZXZhbCdpbmcgJGFjX2NvbmZpZ3VyZV9hcmdzIGhvd2V2ZXIgc29tZSBvbGQgYXV0b2NvbmYKKyMgICB2ZXJzaW9ucyBkbyBub3QgcHJvdmlkZSB0aGF0LiBUbyBlbnN1cmUgbWF4aW11bSBwb3J0YWJpbGl0eSBvZiBhdXRvY29uZgorIyAgIGV4dGVuc2lvbiBtYWNyb3MgdGhpcyBoZWxwZXIgY2FuIGJlIEFDX1JFUVVJUkUnZCBzbyB0aGF0CisjICAgJGFjX2NvbmZpZ3VyZV9hcmdzIHdpbGwgYWxzd2F5cyBiZSBwcmVzZW50LgorIworIyAgIFNhZGx5LCB0aGUgdHJhZGl0aW9uYWwgImV4ZWMgJFNIRUxMIiBvZiB0aGUgZW5hYmxlX2J1aWxkZGlyIG1hY3JvcyBpcworIyAgIHNwb2lsZWQgbm93IGFuZCBtdXN0IGJlIHJlcGxhY2VkIGJ5ICJldmFsICsgZXhpdCAkPyIuCisjCisjICAgRXhhbXBsZToKKyMKKyMgICAgICBBQ19ERUZVTihbQVhfRU5BQkxFX1NVQkRJUl0sW2RubAorIyAgICAgICAgQUNfUkVRVUlSRShbQVhfQ09ORklHVVJFX0FSR1NdKWRubAorIyAgICAgICAgZXZhbCAkU0hFTEwgJGFjX2NvbmZpZ3VyZV9hcmdzIHx8IGV4aXQgJD8KKyMgICAgICAgIC4uLl0pCisjCisjIExBU1QgTU9ESUZJQ0FUSU9OCisjCisjICAgMjAwOC0wNC0xMgorIworIyBDT1BZTEVGVAorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIE1hY3JvIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kCisjICAgZGlzdHJpYnV0ZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzCisjICAgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworQUNfREVGVU4oW0FYX0NPTkZJR1VSRV9BUkdTXSxbCisgICAjIFskXUAgaXMgdW5zYWJsZSBpbiAyLjYwKyBidXQgZWFybGllciBhdXRvY29uZiBoYWQgbm8gYWNfY29uZmlndXJlX2FyZ3MKKyAgIGlmIHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3Mrc2V0fSIgIT0gInNldCIgOyB0aGVuCisgICAgICBhY19jb25maWd1cmVfYXJncz0KKyAgICAgIGZvciBhY19hcmcgaW4gJHsxKyJbJF1AIn07IGRvCisgICAgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzICckYWNfYXJnJyIKKyAgICAgIGRvbmUKKyAgIGZpCitdKQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL200L2F4X2VuYWJsZV9idWlsZGRpci5tNCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3M2E1MwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tNC9heF9lbmFibGVfYnVpbGRkaXIubTQKQEAgLTAsMCArMSwzMDIgQEAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICBodHRwOi8vYXV0b2NvbmYtYXJjaGl2ZS5jcnlwLnRvL2F4X2VuYWJsZV9idWlsZGRpci5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0VOQUJMRV9CVUlMRERJUiBbKGRpcnN0cmluZy1vci1jb21tYW5kIFssTWFrZWZpbGUubWsgWywtYWxsXV0pXQorIworIyBERVNDUklQVElPTgorIworIyAgIElmIHRoZSBjdXJyZW50IGNvbmZpZ3VyZSB3YXMgcnVuIHdpdGhpbiB0aGUgc3JjZGlyIHRoZW4gd2UgbW92ZSBhbGwKKyMgICBjb25maWd1cmUtZmlsZXMgaW50byBhIHN1YmRpciBhbmQgbGV0IHRoZSBjb25maWd1cmUgc3RlcHMgY29udGludWUKKyMgICB0aGVyZS4gV2UgcHJvdmlkZSBhbiBvcHRpb24gLS1kaXNhYmxlLWJ1aWxkZGlyIHRvIHN1cHByZXNzIHRoZSBtb3ZlIGludG8KKyMgICBhIHNlcGFyYXRlIGJ1aWxkZGlyLgorIworIyAgIERlZmF1bHRzOgorIworIyAgICAgJDEgPSAkaG9zdCAob3ZlcnJpZGRlbiB3aXRoICRIT1NUKQorIyAgICAgJDIgPSBNYWtlZmlsZS5taworIyAgICAgJDMgPSAtYWxsCisjCisjICAgVGhpcyBtYWNybyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgQU1fSU5JVF9BVVRPTUFLRS4gSXQgY3JlYXRlcyBhIGRlZmF1bHQKKyMgICB0b3BsZXZlbCBzcmNkaXIgTWFrZWZpbGUgZnJvbSB0aGUgaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIGNyZWF0ZWQKKyMgICB0b3BsZXZlbCBidWlsZGRpciBNYWtlZmlsZS4gSXQganVzdCBjb3BpZXMgdGhlIHZhcmlhYmxlcyBhbmQKKyMgICBydWxlLXRhcmdldHMsIGVhY2ggZXh0ZW5kZWQgd2l0aCBhIGRlZmF1bHQgcnVsZS1leGVjdXRpb24gdGhhdCByZWN1cnNlcworIyAgIGludG8gdGhlIGJ1aWxkIGRpcmVjdG9yeSBvZiB0aGUgY3VycmVudCAiSE9TVCIuIFlvdSBjYW4gb3ZlcnJpZGUgdGhlCisjICAgYXV0by1kZWN0aW9uIHRocm91Z2ggYGNvbmZpZy5ndWVzc2AgYW5kIGJ1aWxkLXRpbWUgb2YgY291cnNlLCBhcyBpbgorIworIyAgICAgbWFrZSBIT1NUPWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICB3aGljaCBjYW4gb2YgY291cnNlIHNldCBhdCBjb25maWd1cmUgdGltZSBhcyB3ZWxsIHVzaW5nCisjCisjICAgICBjb25maWd1cmUgLS1ob3N0PWkzODYtbWluZ3ctY3Jvc3MKKyMKKyMgICBBZnRlciB0aGUgZGVmYXVsdCBoYXMgYmVlbiBjcmVhdGVkLCBhZGRpdGlvbmFsIHJ1bGVzIGNhbiBiZSBhcHBlbmRlZAorIyAgIHRoYXQgd2lsbCBub3QganVzdCByZWN1cnNlIGludG8gdGhlIHN1YmRpcmVjdG9yaWVzIGFuZCBvbmx5IGV2ZXIgZXhpc3QKKyMgICBpbiB0aGUgc3JjZGlyIHRvcGxldmVsIG1ha2VmaWxlIC0gdGhlc2UgcGFydHMgYXJlIHJlYWQgZnJvbSB0aGUgJDIgPQorIyAgIE1ha2VmaWxlLm1rIGZpbGUKKyMKKyMgICBUaGUgYXV0b21hdGljIHJ1bGVzIGFyZSB1c3VhbGx5IHNjYW5uaW5nIHRoZSB0b3BsZXZlbCBNYWtlZmlsZSBmb3IgbGluZXMKKyMgICBsaWtlICcjIyMjICRob3N0IHwkYnVpbGRkaXInIHRvIHJlY29nbml6ZSB0aGUgcGxhY2Ugd2hlcmUgdG8gcmVjdXJzZQorIyAgIGludG8uIFVzdWFsbHksIHRoZSBsYXN0IG9uZSBpcyB0aGUgb25seSBvbmUgdXNlZC4gSG93ZXZlciwgYWxtb3N0IGFsbAorIyAgIHRhcmdldHMgaGF2ZSBhbiBhZGRpdGlvbmFsICIqLWFsbCIgcnVsZSB3aGljaCBtYWtlcyB0aGUgc2NyaXB0IHRvCisjICAgcmVjdXJzZSBpbnRvIF9hbGxfIHZhcmlhbnRzIG9mIHRoZSBjdXJyZW50IEhPU1QgKCEhKSBzZXR0aW5nLiBUaGUgIi1hbGwiCisjICAgc3VmZml4IGNhbiBiZSBvdmVycmlkZW4gZm9yIHRoZSBtYWNybyBhcyB3ZWxsLgorIworIyAgIGEgc3BlY2lhbCBydWxlIGlzIG9ubHkgZ2l2ZW4gZm9yIHRoaW5ncyBsaWtlICJkaXN0IiB0aGF0IHdpbGwgY29weSB0aGUKKyMgICB0YXJiYWxsIGZyb20gdGhlIGJ1aWxkZGlyIHRvIHRoZSBzb3VyY2VkaXIgKG9yICQoUFVCKSkgZm9yIHJlYXNvbiBvZgorIyAgIGNvbnZlbmllbmNlLgorIworIyBMQVNUIE1PRElGSUNBVElPTgorIworIyAgIDIwMDktMDMtMDkKKyMKKyMgQ09QWUxFRlQKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDkgR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDkgQWxhbiBKZW5raW5zIDxhbGFuLWplbmtpbnNAdHVmZm1haWwuY28udWs+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgTWFjcm8gQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQKKyMgICBkaXN0cmlidXRlIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMKKyMgICBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCitBQ19ERUZVTihbQVhfRU5BQkxFX0JVSUxERElSXSxbCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pW11kbmwKK0FDX1JFUVVJUkUoW0FYX0NPTkZJR1VSRV9BUkdTXSlbXWRubAorQUNfUkVRVUlSRShbQU1fQVVYX0RJUl9FWFBBTkRdKVtdZG5sCitBQ19CRUZPUkUoWyQwXSxbQU1fSU5JVF9BVVRPTUFLRV0pZG5sCitBU19WQVJfUFVTSERFRihbU1VCXSxbYXhfZW5hYmxlX2J1aWxkZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtBVVhdLFtheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTRURdLFtheF9lbmFibGVfYnVpbGRkaXJfc2VkXSlkbmwKK1NVQj0iLiIKK0FDX0FSR19FTkFCTEUoW2J1aWxkZGlyXSwgQUNfSEVMUF9TVFJJTkcoCisgIFstLWRpc2FibGUtYnVpbGRkaXJdLFtkaXNhYmxlIGF1dG9tYXRpYyBidWlsZCBpbiBzdWJkaXIgb2Ygc291cmNlc10pCisgICxbU1VCPSIkZW5hYmxldmFsIl0sIFtTVUI9ImF1dG8iXSkKK2lmIHRlc3QgIi4kYWNfc3JjZGlyX2RlZmF1bHRlZCIgIT0gIi5ubyIgOyB0aGVuCitpZiB0ZXN0ICIuJHNyY2RpciIgPSAiLi4iIDsgdGhlbgorICBpZiB0ZXN0IC1mIGNvbmZpZy5zdGF0dXMgOyB0aGVuCisgICAgQUNfTVNHX05PVElDRSh0b3BsZXZlbCBzcmNkaXIgYWxyZWFkeSBjb25maWd1cmVkLi4uIHNraXBwaW5nIHN1YmRpciBidWlsZCkKKyAgZWxzZQorICAgIHRlc3QgIi4kU1VCIiA9ICIuIiAgJiYgU1VCPSIuIgorICAgIHRlc3QgIi4kU1VCIiA9ICIubm8iICAmJiBTVUI9Ii4iCisgICAgdGVzdCAiLiRUQVJHRVQiID0gIi4iICYmIFRBUkdFVD0iJHRhcmdldCIKKyAgICB0ZXN0ICIuJFNVQiIgPSAiLmF1dG8iICYmIFNVQj0ibTRfaWZ2YWwoWyQxXSwgWyQxXSxbJFRBUkdFVF0pIgorICAgIGlmIHRlc3QgIi4kU1VCIiAhPSAiLi4iIDsgdGhlbiAgICAjIHdlIGtub3cgd2hlcmUgdG8gZ28gYW5kCisgICAgICBBU19NS0RJUl9QKFskU1VCXSkKKyAgICAgIGVjaG8gX18uJFNVQi5fXyA+ICRTVUIvY29uZnRlc3QudG1wCisgICAgICBjZCAkU1VCCisgICAgICBpZiBncmVwIF9fLiRTVUIuX18gY29uZnRlc3QudG1wID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIHJtIGNvbmZ0ZXN0LnRtcAorICAgICAgICBBQ19NU0dfUkVTVUxUKFtjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciAiLi8kU1VCIl0pCisgICAgICBlbHNlCisgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGNoYW5nZSB0byBkZWZhdWx0IGJ1aWxkZGlyICIuLyRTVUIiXSkKKyAgICAgIGZpCisgICAgICBzcmNkaXI9YGVjaG8gIiRTVUIiIHwKKyAgICAgICAgICAgICAgc2VkIC1lICdzLF5cLi8sLDtzLFtbXi9dXSQsJi8sO3MsW1teL11dKi8sLi4vLGc7cyxbWy9dXSQsLDsnYAorICAgICAgIyBnb2luZyB0byByZXN0YXJ0IGZyb20gc3ViZGlyZWN0b3J5IGxvY2F0aW9uCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLmxvZyAgICYmIG12ICRzcmNkaXIvY29uZmlnLmxvZyAgIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25mZGVmcy5oICAgJiYgbXYgJHNyY2Rpci9jb25mZGVmcy5oICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAmJiBtdiAkc3JjZGlyL2NvbmZ0ZXN0LmxvZyAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvJGNhY2hlX2ZpbGUgICYmIG12ICRzcmNkaXIvJGNhY2hlX2ZpbGUgIC4KKyAgICAgIEFDX01TR19SRVNVTFQoLi4uLmV4ZWMgJFNIRUxMICRzcmNkaXIvWyRdMCAiLS1zcmNkaXI9JHNyY2RpciIgIi0tZW5hYmxlLWJ1aWxkZGlyPSRTVUIiICR7MSsiWyRdQCJ9KQorICAgICAgY2FzZSAiWyRdMCIgaW4gIyByZXN0YXJ0CisgICAgICAgWy9cXF0qKSBldmFsICRTSEVMTCAiJ1skXTAnIiAiJy0tc3JjZGlyPSRzcmNkaXInIiAiJy0tZW5hYmxlLWJ1aWxkZGlyPSRTVUInIiAkYWNfY29uZmlndXJlX2FyZ3MgOzsKKyAgICAgICAqKSBldmFsICRTSEVMTCAiJyRzcmNkaXIvWyRdMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JFNVQiciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgZXNhYyA7IGV4aXQgJD8KKyAgICBmaQorICBmaQorZmkgZmkKK3Rlc3QgIi4kU1VCIiA9ICIuYXV0byIgJiYgU1VCPSIuIgorZG5sIGFjX3BhdGhfcHJvZyB1c2VzICJzZXQgZHVtbXkiIHRvIG92ZXJyaWRlICRAIHdoaWNoIHdvdWxkIGRlZmVhdCB0aGUgImV4ZWMiCitBQ19QQVRIX1BST0coU0VELGdzZWQgc2VkLCBzZWQpCitBVVg9IiRhbV9hdXhfZGlyIgorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTVUJdKWRubAorQUNfQ09ORklHX0NPTU1BTkRTKFtidWlsZGlyXSxbZG5sIC4uLi4uLi4uLi4uLi4uIGNvbmZpZy5zdGF0dXMgLi4uLi4uLi4uLi4uLi4KK0FTX1ZBUl9QVVNIREVGKFtTVUJdLFtheF9lbmFibGVfYnVpbGRkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1RPUF0sW3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NSQ10sW2FjX3RvcF9zcmNkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW0FVWF0sW2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NFRF0sW2F4X2VuYWJsZV9idWlsZGRpcl9zZWRdKWRubAorcHVzaGRlZihbRU5EXSxbTWFrZWZpbGUubWtdKWRubAorcHVzaGRlZihbX0FMTF0sW2lmZWxzZShbJDNdLCxbLWFsbF0sWyQzXSldKWRubAorICBTUkM9IiRheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyIgorICBpZiB0ZXN0ICIuJFNVQiIgPSAiLi4iIDsgdGhlbgorICAgIGlmIHRlc3QgLWYgIiRUT1AvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbc2tpcHBpbmcgVE9QL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWRdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19OT1RJQ0UoW3NraXBwaW5nIFRPUC9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkXSkKKyAgICBmaQorICBlbHNlCisgICAgaWYgdGVzdCAtZiAiJFNSQy9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBhPWBncmVwICJeVkVSU0lPTiAiICIkU1JDL01ha2VmaWxlImAgOyBiPWBncmVwICJeVkVSU0lPTiAiIE1ha2VmaWxlYAorICAgICAgdGVzdCAiJGEiICE9ICIkYiIgJiYgcm0gIiRTUkMvTWFrZWZpbGUiCisgICAgZmkKKyAgICBpZiB0ZXN0IC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKwllY2hvICIkU1JDL01ha2VmaWxlIDogJFNSQy9NYWtlZmlsZS5pbiIgPiAkdG1wL2NvbmZ0ZW1wLm1rCisJZWNobyAiCVtdQCBlY2hvICdSRU1PVkVELCwsJyA+XCRbXUAiID4+ICR0bXAvY29uZnRlbXAubWsKKyAgICAgIGV2YWwgIiR7TUFLRS1tYWtlfSAtZiAkdG1wL2NvbmZ0ZW1wLm1rIDI+L2Rldi9udWxsID4vZGV2L251bGwiCisgICAgICBpZiBncmVwICdeUkVNT1ZFRCwsLCcgIiRTUkMvTWFrZWZpbGUiID4vZGV2L251bGwKKyAgICAgIHRoZW4gcm0gJFNSQy9NYWtlZmlsZSA7IGZpCisgICAgICBjcCAkdG1wL2NvbmZ0ZW1wLm1rICRTUkMvbWFrZWZpbGVzLm1rfiAgICAgICMjIERFQlVHR0lORworICAgIGZpCisgICAgaWYgdGVzdCAhIC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIEFDX01TR19OT1RJQ0UoW2NyZWF0ZSBUT1AvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlXSkKKyAgICAgIHg9J2AnIDsgY2F0ID4kdG1wL2NvbmZ0ZW1wLnNlZCA8PF9FT0YKKy9eXCQvbgoreAorL15cJC9iUworeAorL1xcXFxcJC97SDtkO30KK3tIO3MvLiovLzt4O30KK2JNCis6UworeAorL1xcXFxcJC97aDtkO30KK3toO3MvLiovLzt4O30KKzpNCitzL1xcKFxcblxcKQkvXFwxIC9nCisvXgkvZAorL15bWyAJXV0qW1tcXCNdXS9kCisvXlZQQVRIICo9L2QKK3MvXnNyY2RpciAqPS4qL3NyY2RpciA9IC4vCitzL150b3Bfc3JjZGlyICo9LiovdG9wX3NyY2RpciA9IC4vCisvW1s6PV1dLyFkCisvXlxcLi9kCitkbmwgTm93IGhhbmRsZSBydWxlcyAoaS5lLiBsaW5lcyBjb250YWluaW5nICI6IiBidXQgbm90ICIgPSAiKS4KKy8gPSAvYgorLyAuPSAvYgorLzovIWIKK3MvOi4qLzovCitzLyAvICAvZworcy8gXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvIFxcMSBcXDFbXV9BTExcXDIvZworcy9eXFwoW1thLXpdXVtbYS16LV1dKltbYS16QS1aMC05XV1cXClcXChbWyA6XV1cXCkvXFwxIFxcMVtdX0FMTFxcMi8KK3MvICAvIC9nCisvXmFsbCBhbGxbXV9BTExbWyA6XV0vaVxcCithbGwtY29uZmlndXJlZCA6IGFsbFtdX0FMTAorZG5sIGRpc3QtYWxsIGV4aXN0cy4uLiBhbmQgd291bGQgbWFrZSBmb3IgZGlzdC1hbGwtYWxsCitzLyBbW2EtekEtWjAtOS1dXSpbXV9BTEwgW1thLXpBLVowLTktXV0qW11fQUxMW11fQUxMLy9nCisvW11fQUxMW11fQUxML2QKK2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkQVVYL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiBfQUxMICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIjsgaWYgdGVzdCAiXCRcJG4iID0gIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IDsgZmkgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyB0ZXN0ICJcJFwkdXNlIiA9ICJcJFxAIiAmJiBCVUlMRD0keCBlY2hvICJcJFwkQlVJTEQiIHwgdGFpbCAtMSAkeCBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyAoY2QgIlwkXCRpIiAmJiB0ZXN0ICEgLWYgY29uZmlndXJlICYmIFwkKE1BS0UpIFwkXCR1c2UpIHx8IGV4aXQ7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdCIgY29waWVzIHRoZSB0YXJiYWxsIHRvICQoUFVCKS4gKHNvdXJjZSB0cmVlKQorL2Rpc3RbXV9BTEwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiID0gIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCitkbmwgc3BlY2lhbCBydWxlIGFkZC1vbjogImRpc3QtZm9vIiBjb3BpZXMgYWxsIHRoZSBhcmNoaXZlcyB0byAkKFBVQikuIChzb3VyY2UgdHJlZSkKKy9kaXN0LVtbYS16QS1aMC05XV0qW11fQUxMICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAuL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZm91bmQ9JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkZm91bmQgXCQoUEFDS0FHRSktXCQoVkVSU0lPTikuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiID0gIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKK2RubCBzcGVjaWFsIHJ1bGUgYWRkLW9uOiAiZGlzdGNsZWFuIiByZW1vdmVzIGFsbCBsb2NhbCBidWlsZGRpcnMgY29tcGxldGVseQorL2Rpc3RjbGVhbltdX0FMTCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJEFVWC9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgX0FMTCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCAoYWxsIGxvY2FsIGJ1aWxkcykiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIiMgcm0gLXIgXCRcJGkiOyBkb25lIDsgZWNobyAiIyAoc2xlZXAgMykiIDsgc2xlZXAgMyBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJcJFwkaSIgfCBncmVwICJeLi4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gInJtIC1yIFwkXCRpIjsgKHJtIC1yICJcJFwkaSIpIDsgZG9uZSA7IHJtIE1ha2VmaWxlCitfRU9GCisgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL21ha2VmaWxlLnNlZH4iICAgICAgICAgICAgIyMgREVCVUdHSU5HCisgICAgICAkU0VEIC1mICR0bXAvY29uZnRlbXAuc2VkIE1ha2VmaWxlID4kU1JDL01ha2VmaWxlCisgICAgICBpZiB0ZXN0IC1mICIkU1JDL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSkiIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtleHRlbmQgVE9QL01ha2VmaWxlIHdpdGggVE9QL200X2lmdmFsKFskMl0sWyQyXSxbRU5EXSldKQorICAgICAgICBjYXQgJFNSQy9FTkQgPj4kU1JDL01ha2VmaWxlCisgICAgICBmaSA7IHh4eHg9IiMjIyMiCisgICAgICBlY2hvICIkeHh4eCBDT05GSUdVUkFUSU9OUyBGT1IgVE9QTEVWRUwgTUFLRUZJTEU6ICIgPj4kU1JDL01ha2VmaWxlCisgICAgICAjIHNhbml0eSBjaGVjaworICAgICAgaWYgZ3JlcCAnXjsgZWNobyAiTUFLRSAnICRTUkMvTWFrZWZpbGUgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShbYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gImEiIHRleHQgcGFydHNdKQorICAgICAgICAkU0VEIC1lICcvXkAgSE9TVD0vcy9eLwkvJyAtZSAnL147IC9zL14vCS8nICRTUkMvTWFrZWZpbGUgXAorICAgICAgICAgID4kU1JDL01ha2VmaWxlfgorICAgICAgICAodGVzdCAtcyAkU1JDL01ha2VmaWxlfiAmJiBtdiAkU1JDL01ha2VmaWxlfiAkU1JDL01ha2VmaWxlKSAyPi9kZXYvbnVsbAorICAgICAgZmkKKyAgICBlbHNlCisgICAgICB4eHh4PSJcXCNcXCNcXCNcXCMiCisgICAgICAjIGVjaG8gIi9eJHh4eHggKiRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCAvZCIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICBlY2hvICJzIV4keHh4eCBbW158XV0qIHwgKiRTVUIgKlwkISR4eHh4IC4uLi4uLiAkU1VCISIgPiR0bXAvY29uZnRlbXAuc2VkCisgICAgICAkU0VEIC1mICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvTWFrZWZpbGUiID4kdG1wL21rZmlsZS50bXAKKyAgICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9tYWtlZmlsZXMuc2VkfiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICAgY3AgIiR0bXAvbWtmaWxlLnRtcCIgICAiJFNSQy9tYWtlZmlsZXMub3V0fiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgIGlmIGNtcCAtcyAiJFNSQy9NYWtlZmlsZSIgIiR0bXAvbWtmaWxlLnRtcCIgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2tlZXBpbmcgVE9QL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmVdKQorICAgICAgICBybSAiJHRtcC9ta2ZpbGUudG1wIgorICAgICAgZWxzZQorICAgICAgICBBQ19NU0dfTk9USUNFKFtyZXVzaW5nIFRPUC9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlXSkKKyAgICAgICAgbXYgIiR0bXAvbWtmaWxlLnRtcCIgIiRTUkMvTWFrZWZpbGUiCisgICAgICBmaQorICAgIGZpCisgICAgQUNfTVNHX05PVElDRShbYnVpbGQgaW4gJFNVQiAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpXSkKKyAgICB4eHh4PSIjIyMjIgorICAgIGVjaG8gIiR4eHh4IiAiJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IiAifCRTVUIiID4+JFNSQy9NYWtlZmlsZQorICBmaQorcG9wZGVmKFtFTkRdKWRubAorQVNfVkFSX1BPUERFRihbU0VEXSlkbmwKK0FTX1ZBUl9QT1BERUYoW0FVWF0pZG5sCitBU19WQVJfUE9QREVGKFtTUkNdKWRubAorQVNfVkFSX1BPUERFRihbVE9QXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NVQl0pZG5sCitdLFtkbmwKK2F4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXI9IiRzcmNkaXIiICAgICAgICAgICAgICAgICAgICAjICRzcmNkaXIKK2F4X2VuYWJsZV9idWlsZGRpcl9ob3N0PSIkSE9TVCIgICAgICAgICAgICAgICAgICAgICAgICAjICRIT1NUIC8gJGhvc3QKK2F4X2VuYWJsZV9idWlsZGRpcl92ZXJzaW9uPSIkVkVSU0lPTiIgICAgICAgICAgICAgICAgICAjICRWRVJTSU9OCitheF9lbmFibGVfYnVpbGRkaXJfcGFja2FnZT0iJFBBQ0tBR0UiICAgICAgICAgICAgICAgICAgIyAkUEFDS0FHRQorYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIiICMgJEFVWAorYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0iJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiICAgICAgICMgJFNFRAorYXhfZW5hYmxlX2J1aWxkZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyIiAgICAgICAgICAgICAgICMgJFNVQgorXSlkbmwKK10pCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbWlzc2luZyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9taXNzaW5nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4MDU1ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbWlzc2luZwpAQCAtMCwwICsxLDM3NiBAQAorIyEgL2Jpbi9zaAorIyBDb21tb24gc3R1YiBmb3IgYSBmZXcgbWlzc2luZyBHTlUgcHJvZ3JhbXMgd2hpbGUgaW5zdGFsbGluZy4KKworc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQworCisjIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OSwgMjAwMCwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKKyMgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgT3JpZ2luYWxseSBieSBGcmFuLGNvaXMgUGluYXJkIDxwaW5hcmRAaXJvLnVtb250cmVhbC5jYT4sIDE5OTYuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworaWYgdGVzdCAkIyAtZXEgMDsgdGhlbgorICBlY2hvIDE+JjIgIlRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCisgIGV4aXQgMQorZmkKKworcnVuPToKK3NlZF9vdXRwdXQ9J3MvLiogLS1vdXRwdXRbID1dXChbXiBdKlwpLiovXDEvcCcKK3NlZF9taW51c289J3MvLiogLW8gXChbXiBdKlwpLiovXDEvcCcKKworIyBJbiB0aGUgY2FzZXMgd2hlcmUgdGhpcyBtYXR0ZXJzLCBgbWlzc2luZycgaXMgYmVpbmcgcnVuIGluIHRoZQorIyBzcmNkaXIgYWxyZWFkeS4KK2lmIHRlc3QgLWYgY29uZmlndXJlLmFjOyB0aGVuCisgIGNvbmZpZ3VyZV9hYz1jb25maWd1cmUuYWMKK2Vsc2UKKyAgY29uZmlndXJlX2FjPWNvbmZpZ3VyZS5pbgorZmkKKworbXNnPSJtaXNzaW5nIG9uIHlvdXIgc3lzdGVtIgorCitjYXNlICQxIGluCistLXJ1bikKKyAgIyBUcnkgdG8gcnVuIHJlcXVlc3RlZCBwcm9ncmFtLCBhbmQganVzdCBleGl0IGlmIGl0IHN1Y2NlZWRzLgorICBydW49CisgIHNoaWZ0CisgICIkQCIgJiYgZXhpdCAwCisgICMgRXhpdCBjb2RlIDYzIG1lYW5zIHZlcnNpb24gbWlzbWF0Y2guICBUaGlzIG9mdGVuIGhhcHBlbnMKKyAgIyB3aGVuIHRoZSB1c2VyIHRyeSB0byB1c2UgYW4gYW5jaWVudCB2ZXJzaW9uIG9mIGEgdG9vbCBvbgorICAjIGEgZmlsZSB0aGF0IHJlcXVpcmVzIGEgbWluaW11bSB2ZXJzaW9uLiAgSW4gdGhpcyBjYXNlIHdlCisgICMgd2Ugc2hvdWxkIHByb2NlZWQgaGFzIGlmIHRoZSBwcm9ncmFtIGhhZCBiZWVuIGFic2VudCwgb3IKKyAgIyBpZiAtLXJ1biBoYWRuJ3QgYmVlbiBwYXNzZWQuCisgIGlmIHRlc3QgJD8gPSA2MzsgdGhlbgorICAgIHJ1bj06CisgICAgbXNnPSJwcm9iYWJseSB0b28gb2xkIgorICBmaQorICA7OworCisgIC1ofC0taHwtLWhlfC0taGVsfC0taGVscCkKKyAgICBlY2hvICJcCiskMCBbT1BUSU9OXS4uLiBQUk9HUkFNIFtBUkdVTUVOVF0uLi4KKworSGFuZGxlIFxgUFJPR1JBTSBbQVJHVU1FTlRdLi4uJyBmb3Igd2hlbiBQUk9HUkFNIGlzIG1pc3NpbmcsIG9yIHJldHVybiBhbgorZXJyb3Igc3RhdHVzIGlmIHRoZXJlIGlzIG5vIGtub3duIGhhbmRsaW5nIGZvciBQUk9HUkFNLgorCitPcHRpb25zOgorICAtaCwgLS1oZWxwICAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQKKyAgLXYsIC0tdmVyc2lvbiAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIC0tcnVuICAgICAgICAgICB0cnkgdG8gcnVuIHRoZSBnaXZlbiBjb21tYW5kLCBhbmQgZW11bGF0ZSBpdCBpZiBpdCBmYWlscworCitTdXBwb3J0ZWQgUFJPR1JBTSB2YWx1ZXM6CisgIGFjbG9jYWwgICAgICB0b3VjaCBmaWxlIFxgYWNsb2NhbC5tNCcKKyAgYXV0b2NvbmYgICAgIHRvdWNoIGZpbGUgXGBjb25maWd1cmUnCisgIGF1dG9oZWFkZXIgICB0b3VjaCBmaWxlIFxgY29uZmlnLmguaW4nCisgIGF1dG9tNHRlICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUsIG9yIGNyZWF0ZSBhIHN0dWIgb25lCisgIGF1dG9tYWtlICAgICB0b3VjaCBhbGwgXGBNYWtlZmlsZS5pbicgZmlsZXMKKyAgYmlzb24gICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQorICBmbGV4ICAgICAgICAgY3JlYXRlIFxgbGV4Lnl5LmMnLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuYworICBoZWxwMm1hbiAgICAgdG91Y2ggdGhlIG91dHB1dCBmaWxlCisgIGxleCAgICAgICAgICBjcmVhdGUgXGBsZXgueXkuYycsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5jCisgIG1ha2VpbmZvICAgICB0b3VjaCB0aGUgb3V0cHV0IGZpbGUKKyAgdGFyICAgICAgICAgIHRyeSB0YXIsIGdudXRhciwgZ3RhciwgdGhlbiB0YXIgd2l0aG91dCBub24tcG9ydGFibGUgZmxhZ3MKKyAgeWFjYyAgICAgICAgIGNyZWF0ZSBcYHkudGFiLltjaF0nLCBpZiBwb3NzaWJsZSwgZnJvbSBleGlzdGluZyAuW2NoXQorCitWZXJzaW9uIHN1ZmZpeGVzIHRvIFBST0dSQU0gYXMgd2VsbCBhcyB0aGUgcHJlZml4ZXMgXGBnbnUtJywgXGBnbnUnLCBhbmQKK1xgZycgYXJlIGlnbm9yZWQgd2hlbiBjaGVja2luZyB0aGUgbmFtZS4KKworU2VuZCBidWcgcmVwb3J0cyB0byA8YnVnLWF1dG9tYWtlQGdudS5vcmc+LiIKKyAgICBleGl0ICQ/CisgICAgOzsKKworICAtdnwtLXZ8LS12ZXwtLXZlcnwtLXZlcnN8LS12ZXJzaXwtLXZlcnNpb3wtLXZlcnNpb24pCisgICAgZWNobyAibWlzc2luZyAkc2NyaXB0dmVyc2lvbiAoR05VIEF1dG9tYWtlKSIKKyAgICBleGl0ICQ/CisgICAgOzsKKworICAtKikKKyAgICBlY2hvIDE+JjIgIiQwOiBVbmtub3duIFxgJDEnIG9wdGlvbiIKKyAgICBlY2hvIDE+JjIgIlRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCisgICAgZXhpdCAxCisgICAgOzsKKworZXNhYworCisjIG5vcm1hbGl6ZSBwcm9ncmFtIG5hbWUgdG8gY2hlY2sgZm9yLgorcHJvZ3JhbT1gZWNobyAiJDEiIHwgc2VkICcKKyAgcy9eZ251LS8vOyB0CisgIHMvXmdudS8vOyB0CisgIHMvXmcvLzsgdCdgCisKKyMgTm93IGV4aXQgaWYgd2UgaGF2ZSBpdCwgYnV0IGl0IGZhaWxlZC4gIEFsc28gZXhpdCBub3cgaWYgd2UKKyMgZG9uJ3QgaGF2ZSBpdCBhbmQgLS12ZXJzaW9uIHdhcyBwYXNzZWQgKG1vc3QgbGlrZWx5IHRvIGRldGVjdAorIyB0aGUgcHJvZ3JhbSkuICBUaGlzIGlzIGFib3V0IG5vbi1HTlUgcHJvZ3JhbXMsIHNvIHVzZSAkMSBub3QKKyMgJHByb2dyYW0uCitjYXNlICQxIGluCisgIGxleCp8eWFjYyopCisgICAgIyBOb3QgR05VIHByb2dyYW1zLCB0aGV5IGRvbid0IGhhdmUgLS12ZXJzaW9uLgorICAgIDs7CisKKyAgdGFyKikKKyAgICBpZiB0ZXN0IC1uICIkcnVuIjsgdGhlbgorICAgICAgIGVjaG8gMT4mMiAiRVJST1I6IFxgdGFyJyByZXF1aXJlcyAtLXJ1biIKKyAgICAgICBleGl0IDEKKyAgICBlbGlmIHRlc3QgIngkMiIgPSAieC0tdmVyc2lvbiIgfHwgdGVzdCAieCQyIiA9ICJ4LS1oZWxwIjsgdGhlbgorICAgICAgIGV4aXQgMQorICAgIGZpCisgICAgOzsKKworICAqKQorICAgIGlmIHRlc3QgLXogIiRydW4iICYmICgkMSAtLXZlcnNpb24pID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAjIFdlIGhhdmUgaXQsIGJ1dCBpdCBmYWlsZWQuCisgICAgICAgZXhpdCAxCisgICAgZWxpZiB0ZXN0ICJ4JDIiID0gIngtLXZlcnNpb24iIHx8IHRlc3QgIngkMiIgPSAieC0taGVscCI7IHRoZW4KKyAgICAgICAjIENvdWxkIG5vdCBydW4gLS12ZXJzaW9uIG9yIC0taGVscC4gIFRoaXMgaXMgcHJvYmFibHkgc29tZW9uZQorICAgICAgICMgcnVubmluZyBgJFRPT0wgLS12ZXJzaW9uJyBvciBgJFRPT0wgLS1oZWxwJyB0byBjaGVjayB3aGV0aGVyCisgICAgICAgIyAkVE9PTCBleGlzdHMgYW5kIG5vdCBrbm93aW5nICRUT09MIHVzZXMgbWlzc2luZy4KKyAgICAgICBleGl0IDEKKyAgICBmaQorICAgIDs7Citlc2FjCisKKyMgSWYgaXQgZG9lcyBub3QgZXhpc3QsIG9yIGZhaWxzIHRvIHJ1biAocG9zc2libHkgYW4gb3V0ZGF0ZWQgdmVyc2lvbiksCisjIHRyeSB0byBlbXVsYXRlIGl0LgorY2FzZSAkcHJvZ3JhbSBpbgorICBhY2xvY2FsKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgYWNpbmNsdWRlLm00JyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudAorICAgICAgICAgdG8gaW5zdGFsbCB0aGUgXGBBdXRvbWFrZScgYW5kIFxgUGVybCcgcGFja2FnZXMuICBHcmFiIHRoZW0gZnJvbQorICAgICAgICAgYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIHRvdWNoIGFjbG9jYWwubTQKKyAgICA7OworCisgIGF1dG9jb25mKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlCisgICAgICAgICBcYEF1dG9jb25mJyBhbmQgXGBHTlUgbTQnIHBhY2thZ2VzLiAgR3JhYiB0aGVtIGZyb20gYW55IEdOVQorICAgICAgICAgYXJjaGl2ZSBzaXRlLiIKKyAgICB0b3VjaCBjb25maWd1cmUKKyAgICA7OworCisgIGF1dG9oZWFkZXIqKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2NvbmZpZy5oJyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudAorICAgICAgICAgdG8gaW5zdGFsbCB0aGUgXGBBdXRvY29uZicgYW5kIFxgR05VIG00JyBwYWNrYWdlcy4gIEdyYWIgdGhlbQorICAgICAgICAgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgZmlsZXM9YHNlZCAtbiAncy9eWyBdKkFbQ01dX0NPTkZJR19IRUFERVIoXChbXildKlwpKS4qL1wxL3AnICR7Y29uZmlndXJlX2FjfWAKKyAgICB0ZXN0IC16ICIkZmlsZXMiICYmIGZpbGVzPSJjb25maWcuaCIKKyAgICB0b3VjaF9maWxlcz0KKyAgICBmb3IgZiBpbiAkZmlsZXM7IGRvCisgICAgICBjYXNlICRmIGluCisgICAgICAqOiopIHRvdWNoX2ZpbGVzPSIkdG91Y2hfZmlsZXMgImBlY2hvICIkZiIgfAorCQkJCSAgICAgICBzZWQgLWUgJ3MvXlteOl0qOi8vJyAtZSAncy86LiovLydgOzsKKyAgICAgICopIHRvdWNoX2ZpbGVzPSIkdG91Y2hfZmlsZXMgJGYuaW4iOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisgICAgdG91Y2ggJHRvdWNoX2ZpbGVzCisgICAgOzsKKworICBhdXRvbWFrZSopCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBcYE1ha2VmaWxlLmFtJywgXGBhY2luY2x1ZGUubTQnIG9yIFxgJHtjb25maWd1cmVfYWN9Jy4KKyAgICAgICAgIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlIFxgQXV0b21ha2UnIGFuZCBcYFBlcmwnIHBhY2thZ2VzLgorICAgICAgICAgR3JhYiB0aGVtIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIGZpbmQgLiAtdHlwZSBmIC1uYW1lIE1ha2VmaWxlLmFtIC1wcmludCB8CisJICAgc2VkICdzL1wuYW0kLy5pbi8nIHwKKwkgICB3aGlsZSByZWFkIGY7IGRvIHRvdWNoICIkZiI7IGRvbmUKKyAgICA7OworCisgIGF1dG9tNHRlKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG5lZWRlZCwgYnV0IGlzICRtc2cuCisgICAgICAgICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQorICAgICAgICAgcHJvcGVyIHRvb2xzIGZvciBmdXJ0aGVyIGhhbmRsaW5nIHRoZW0uCisgICAgICAgICBZb3UgY2FuIGdldCBcYCQxJyBhcyBwYXJ0IG9mIFxgQXV0b2NvbmYnIGZyb20gYW55IEdOVQorICAgICAgICAgYXJjaGl2ZSBzaXRlLiIKKworICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC1mICIkZmlsZSI7IHRoZW4KKwl0b3VjaCAkZmlsZQorICAgIGVsc2UKKwl0ZXN0IC16ICIkZmlsZSIgfHwgZXhlYyA+JGZpbGUKKwllY2hvICIjISAvYmluL3NoIgorCWVjaG8gIiMgQ3JlYXRlZCBieSBHTlUgQXV0b21ha2UgbWlzc2luZyBhcyBhIHJlcGxhY2VtZW50IG9mIgorCWVjaG8gIiMgICQgJEAiCisJZWNobyAiZXhpdCAwIgorCWNobW9kICt4ICRmaWxlCisJZXhpdCAxCisgICAgZmkKKyAgICA7OworCisgIGJpc29uKnx5YWNjKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAueScgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBCaXNvbicgcGFja2FnZQorICAgICAgICAgaW4gb3JkZXIgZm9yIHRob3NlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBlZmZlY3QuICBZb3UgY2FuIGdldAorICAgICAgICAgXGBCaXNvbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgcm0gLWYgeS50YWIuYyB5LnRhYi5oCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgorICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKKwljYXNlICRMQVNUQVJHIGluCisJKi55KQorCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvYy8nYAorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KKwkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmMKKwkgICAgZmkKKwkgICAgU1JDRklMRT1gZWNobyAiJExBU1RBUkciIHwgc2VkICdzL3kkL2gvJ2AKKwkgICAgaWYgdGVzdCAtZiAiJFNSQ0ZJTEUiOyB0aGVuCisJICAgICAgICAgY3AgIiRTUkNGSUxFIiB5LnRhYi5oCisJICAgIGZpCisJICA7OworCWVzYWMKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiB5LnRhYi5oOyB0aGVuCisJZWNobyA+eS50YWIuaAorICAgIGZpCisgICAgaWYgdGVzdCAhIC1mIHkudGFiLmM7IHRoZW4KKwllY2hvICdtYWluKCkgeyByZXR1cm4gMDsgfScgPnkudGFiLmMKKyAgICBmaQorICAgIDs7CisKKyAgbGV4KnxmbGV4KikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgorICAgICAgICAgeW91IG1vZGlmaWVkIGEgXGAubCcgZmlsZS4gIFlvdSBtYXkgbmVlZCB0aGUgXGBGbGV4JyBwYWNrYWdlCisgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CisgICAgICAgICBcYEZsZXgnIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorICAgIHJtIC1mIGxleC55eS5jCisgICAgaWYgdGVzdCAkIyAtbmUgMTsgdGhlbgorICAgICAgICBldmFsIExBU1RBUkc9IlwkeyQjfSIKKwljYXNlICRMQVNUQVJHIGluCisJKi5sKQorCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MvbCQvYy8nYAorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KKwkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIGxleC55eS5jCisJICAgIGZpCisJICA7OworCWVzYWMKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiBsZXgueXkuYzsgdGhlbgorCWVjaG8gJ21haW4oKSB7IHJldHVybiAwOyB9JyA+bGV4Lnl5LmMKKyAgICBmaQorICAgIDs7CisKKyAgaGVscDJtYW4qKQorICAgIGVjaG8gMT4mMiAiXAorV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCisJIHlvdSBtb2RpZmllZCBhIGRlcGVuZGVuY3kgb2YgYSBtYW51YWwgcGFnZS4gIFlvdSBtYXkgbmVlZCB0aGUKKwkgXGBIZWxwMm1hbicgcGFja2FnZSBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlCisJIGVmZmVjdC4gIFlvdSBjYW4gZ2V0IFxgSGVscDJtYW4nIGZyb20gYW55IEdOVSBhcmNoaXZlIHNpdGUuIgorCisgICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX291dHB1dCJgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9taW51c28iYAorICAgIGlmIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgorCXRvdWNoICRmaWxlCisgICAgZWxzZQorCXRlc3QgLXogIiRmaWxlIiB8fCBleGVjID4kZmlsZQorCWVjaG8gIi5hYiBoZWxwMm1hbiBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSB0aGlzIHBhZ2UiCisJZXhpdCAkPworICAgIGZpCisgICAgOzsKKworICBtYWtlaW5mbyopCisgICAgZWNobyAxPiYyICJcCitXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKKyAgICAgICAgIHlvdSBtb2RpZmllZCBhIFxgLnRleGknIG9yIFxgLnRleGluZm8nIGZpbGUsIG9yIGFueSBvdGhlciBmaWxlCisgICAgICAgICBpbmRpcmVjdGx5IGFmZmVjdGluZyB0aGUgYXNwZWN0IG9mIHRoZSBtYW51YWwuICBUaGUgc3B1cmlvdXMKKyAgICAgICAgIGNhbGwgbWlnaHQgYWxzbyBiZSB0aGUgY29uc2VxdWVuY2Ugb2YgdXNpbmcgYSBidWdneSBcYG1ha2UnIChBSVgsCisgICAgICAgICBEVSwgSVJJWCkuICBZb3UgbWlnaHQgd2FudCB0byBpbnN0YWxsIHRoZSBcYFRleGluZm8nIHBhY2thZ2Ugb3IKKyAgICAgICAgIHRoZSBcYEdOVSBtYWtlJyBwYWNrYWdlLiAgR3JhYiBlaXRoZXIgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCisgICAgIyBUaGUgZmlsZSB0byB0b3VjaCBpcyB0aGF0IHNwZWNpZmllZCB3aXRoIC1vIC4uLgorICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9vdXRwdXQiYAorICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gIiRzZWRfbWludXNvImAKKyAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KKyAgICAgICMgLi4uIG9yIGl0IGlzIHRoZSBvbmUgc3BlY2lmaWVkIHdpdGggQHNldGZpbGVuYW1lIC4uLgorICAgICAgaW5maWxlPWBlY2hvICIkKiIgfCBzZWQgJ3MvLiogXChbXiBdKlwpICokL1wxLydgCisgICAgICBmaWxlPWBzZWQgLW4gJworCS9eQHNldGZpbGVuYW1lL3sKKwkgIHMvLiogXChbXiBdKlwpICokL1wxLworCSAgcAorCSAgcQorCX0nICRpbmZpbGVgCisgICAgICAjIC4uLiBvciBpdCBpcyBkZXJpdmVkIGZyb20gdGhlIHNvdXJjZSBuYW1lIChkaXIvZi50ZXhpIGJlY29tZXMgZi5pbmZvKQorICAgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiRpbmZpbGUiIHwgc2VkICdzLC4qLywsO3MsLlteLl0qJCwsJ2AuaW5mbworICAgIGZpCisgICAgIyBJZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlIHVzZXIgcmVhbGx5IG5lZWRzIG1ha2VpbmZvOworICAgICMgbGV0J3MgZmFpbCB3aXRob3V0IHRvdWNoaW5nIGFueXRoaW5nLgorICAgIHRlc3QgLWYgJGZpbGUgfHwgZXhpdCAxCisgICAgdG91Y2ggJGZpbGUKKyAgICA7OworCisgIHRhciopCisgICAgc2hpZnQKKworICAgICMgV2UgaGF2ZSBhbHJlYWR5IHRyaWVkIHRhciBpbiB0aGUgZ2VuZXJpYyBwYXJ0LgorICAgICMgTG9vayBmb3IgZ251dGFyL2d0YXIgYmVmb3JlIGludm9jYXRpb24gdG8gYXZvaWQgdWdseSBlcnJvcgorICAgICMgbWVzc2FnZXMuCisgICAgaWYgKGdudXRhciAtLXZlcnNpb24gPiAvZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgICBnbnV0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGlmIChndGFyIC0tdmVyc2lvbiA+IC9kZXYvbnVsbCAyPiYxKTsgdGhlbgorICAgICAgIGd0YXIgIiRAIiAmJiBleGl0IDAKKyAgICBmaQorICAgIGZpcnN0YXJnPSIkMSIKKyAgICBpZiBzaGlmdDsgdGhlbgorCWNhc2UgJGZpcnN0YXJnIGluCisJKm8qKQorCSAgICBmaXJzdGFyZz1gZWNobyAiJGZpcnN0YXJnIiB8IHNlZCBzL28vL2AKKwkgICAgdGFyICIkZmlyc3RhcmciICIkQCIgJiYgZXhpdCAwCisJICAgIDs7CisJZXNhYworCWNhc2UgJGZpcnN0YXJnIGluCisJKmgqKQorCSAgICBmaXJzdGFyZz1gZWNobyAiJGZpcnN0YXJnIiB8IHNlZCBzL2gvL2AKKwkgICAgdGFyICIkZmlyc3RhcmciICIkQCIgJiYgZXhpdCAwCisJICAgIDs7CisJZXNhYworICAgIGZpCisKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IEkgY2FuJ3Qgc2VlbSB0byBiZSBhYmxlIHRvIHJ1biBcYHRhcicgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLgorICAgICAgICAgWW91IG1heSB3YW50IHRvIGluc3RhbGwgR05VIHRhciBvciBGcmVlIHBheHV0aWxzLCBvciBjaGVjayB0aGUKKyAgICAgICAgIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuIgorICAgIGV4aXQgMQorICAgIDs7CisKKyAgKikKKyAgICBlY2hvIDE+JjIgIlwKK1dBUk5JTkc6IFxgJDEnIGlzIG5lZWRlZCwgYW5kIGlzICRtc2cuCisgICAgICAgICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQorICAgICAgICAgcHJvcGVyIHRvb2xzIGZvciBmdXJ0aGVyIGhhbmRsaW5nIHRoZW0uICBDaGVjayB0aGUgXGBSRUFETUUnIGZpbGUsCisgICAgICAgICBpdCBvZnRlbiB0ZWxscyB5b3UgYWJvdXQgdGhlIG5lZWRlZCBwcmVyZXF1aXNpdGVzIGZvciBpbnN0YWxsaW5nCisgICAgICAgICB0aGlzIHBhY2thZ2UuICBZb3UgbWF5IGFsc28gcGVlayBhdCBhbnkgR05VIGFyY2hpdmUgc2l0ZSwgaW4gY2FzZQorICAgICAgICAgc29tZSBvdGhlciBwYWNrYWdlIHdvdWxkIGNvbnRhaW4gdGhpcyBtaXNzaW5nIFxgJDEnIHByb2dyYW0uIgorICAgIGV4aXQgMQorICAgIDs7Citlc2FjCisKK2V4aXQgMAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAic2NyaXB0dmVyc2lvbj0iCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZC4lMDJIIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kaW5kZXguYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2RpbmRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMzk3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kaW5kZXguYwpAQCAtMCwwICsxLDE2NSBAQAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Z2V0b3B0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAiaW5kZXguaCIKKworc3RhdGljIHZvaWQgd3JpdGVfaW5kZXgoY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RydWN0IGluZGV4X25vZGUgKmluZGV4OworCWNoYXIgKmxpbmUsICpwb3M7CisJRklMRSAqY2ZpbGU7CisJdW5zaWduZWQgaW50IGxpbmVudW0gPSAwOworCQorCWNmaWxlID0gZm9wZW4oZmlsZW5hbWUsICJ3Iik7CisJaWYgKCFjZmlsZSkKKwkJZmF0YWwoIkNvdWxkIG5vdCBvcGVuICVzIGZvciB3cml0aW5nOiAlc1xuIiwKKwkJICAgICAgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCisJaW5kZXggPSBpbmRleF9jcmVhdGUoKTsKKwkKKwl3aGlsZSgobGluZSA9IGdldGxpbmVfd3JhcHBlZChzdGRpbiwgJmxpbmVudW0pKSkgeworCQlwb3MgPSBzdHJjaHIobGluZSwgJyAnKTsKKwkJKnBvcysrID0gJ1wwJzsKKwkJaW5kZXhfaW5zZXJ0KGluZGV4LCBsaW5lLCBwb3MsIGxpbmVudW0pOworCQlmcmVlKGxpbmUpOworCX0KKwkKKwlpbmRleF93cml0ZShpbmRleCwgY2ZpbGUpOworCWluZGV4X2Rlc3Ryb3koaW5kZXgpOworCWZjbG9zZShjZmlsZSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW5kZXhfZmlsZSAqb3Blbl9pbmRleChjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwlzdHJ1Y3QgaW5kZXhfZmlsZSAqaW5kZXg7CisKKwlpbmRleCA9IGluZGV4X2ZpbGVfb3BlbihmaWxlbmFtZSk7CisJaWYgKCFpbmRleCkgeworCQlpZiAoZXJybm8gPT0gRUlOVkFMKQorCQkJZmF0YWwoIiVzIGhhcyB3cm9uZyBtYWdpYyBvciB2ZXJzaW9uIG51bWJlciIsIGZpbGVuYW1lKTsKKworCQlmYXRhbCgiQ291bGQgbm90IG9wZW4gJXMgZm9yIHJlYWRpbmc6ICVzXG4iLAorCQkgICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisKKwlyZXR1cm4gaW5kZXg7Cit9CisKK3N0YXRpYyB2b2lkIGR1bXBfaW5kZXgoY29uc3QgY2hhciAqZmlsZW5hbWUpCit7CisJc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4ID0gb3Blbl9pbmRleChmaWxlbmFtZSk7CisKKwlpbmRleF9kdW1wKGluZGV4LCBzdGRvdXQsICIiKTsKKworCWluZGV4X2ZpbGVfY2xvc2UoaW5kZXgpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hfaW5kZXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKmtleSkKK3sKKwlzdHJ1Y3QgaW5kZXhfZmlsZSAqaW5kZXggPSBvcGVuX2luZGV4KGZpbGVuYW1lKTsKKwljaGFyICp2YWx1ZTsKKworCXZhbHVlID0gaW5kZXhfc2VhcmNoKGluZGV4LCBrZXkpOworCWlmICh2YWx1ZSkKKwkJcHJpbnRmKCJGb3VuZCB2YWx1ZTpcbiVzXG4iLCB2YWx1ZSk7CisJZWxzZQorCQlwcmludGYoIk5vdCBmb3VuZC5cbiIpOworCQorCWZyZWUodmFsdWUpOworCWluZGV4X2ZpbGVfY2xvc2UoaW5kZXgpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2h3aWxkX2luZGV4KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICprZXkpCit7CisJc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4ID0gb3Blbl9pbmRleChmaWxlbmFtZSk7CisJc3RydWN0IGluZGV4X3ZhbHVlICp2YWx1ZXMsICp2OworCisJdmFsdWVzID0gaW5kZXhfc2VhcmNod2lsZChpbmRleCwga2V5KTsKKwlpZiAodmFsdWVzKQorCQlwcmludGYoIkZvdW5kIHZhbHVlKHMpOlxuIik7CisJZWxzZQorCQlwcmludGYoIk5vdCBmb3VuZC5cbiIpOwkKKworCWZvciAodiA9IHZhbHVlczsgdjsgdiA9IHYtPm5leHQpCisJCXByaW50ZigiJXNcbiIsIHYtPnZhbHVlKTsKKworCWluZGV4X3ZhbHVlc19mcmVlKHZhbHVlcyk7CisJaW5kZXhfZmlsZV9jbG9zZShpbmRleCk7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X3VzYWdlKGNvbnN0IGNoYXIgKnByb2duYW1lKQoreworCWZwcmludGYoc3RkZXJyLAorCQkiVXNhZ2U6ICVzIFtNT0RFXSBbRklMRV0gLi4uXG4iCisJCSIgLW8sIC0tb3V0cHV0IDxvdXRmaWxlPlxuIgorCQkiIC1kLCAtLWR1bXAgPGluZmlsZT5cbiIKKwkJIiAtcywgLS1zZWFyY2ggPGtleT4gPGluZmlsZT5cbiIKKwkJIiAtdywgLS1zZWFyY2h3aWxkIDxrZXk+IDxpbmZpbGU+XG4iCisJCSxwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCXsgIm91dHB1dCIsIDAsIE5VTEwsICdvJyB9LAorCXsgImR1bXAiLCAwLCBOVUxMLCAnZCcgfSwKKwl7ICJzZWFyY2giLCAxLCBOVUxMLCAncycgfSwKKwl7ICJzZWFyY2h3aWxkIiwgMSwgTlVMTCwgJ3cnIH0sCit9OworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworCWludCBvcHQ7CisJY2hhciBtb2RlID0gMDsKKwljaGFyICpmaWxlbmFtZSA9IE5VTEw7CisJY2hhciAqa2V5ID0gTlVMTDsKKwkKKwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJvZHM6dzoiLCBvcHRpb25zLCBOVUxMKSkKKwkJICAgICAgICE9IC0xKSB7CisJCXN3aXRjaCAob3B0KSB7CisJCQljYXNlICdvJzoKKwkJCQltb2RlID0gJ28nOworCQkJCWJyZWFrOworCQkJY2FzZSAnZCc6CisJCQkJbW9kZSA9ICdkJzsKKwkJCQlicmVhazsKKwkJCWNhc2UgJ3MnOgorCQkJCW1vZGUgPSAncyc7CisJCQkJa2V5ID0gb3B0YXJnOworCQkJCWJyZWFrOworCQkJY2FzZSAndyc6CisJCQkJbW9kZSA9ICd3JzsKKwkJCQlrZXkgPSBvcHRhcmc7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXByaW50X3VzYWdlKGFyZ3ZbMF0pOworCQl9CisJfQorCWlmICghbW9kZSkKKwkJcHJpbnRfdXNhZ2UoYXJndlswXSk7CisJCisJaWYgKG9wdGluZCA+PSBhcmdjKQorCQlwcmludF91c2FnZShhcmd2WzBdKTsKKwlmaWxlbmFtZSA9IGFyZ3Zbb3B0aW5kXTsKKwkKKwlzd2l0Y2gobW9kZSkgeworCQljYXNlICdvJzoKKwkJCXdyaXRlX2luZGV4KGZpbGVuYW1lKTsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWR1bXBfaW5kZXgoZmlsZW5hbWUpOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgorCQkJc2VhcmNoX2luZGV4KGZpbGVuYW1lLCBrZXkpOworCQkJYnJlYWs7CisJCWNhc2UgJ3cnOgorCQkJc2VhcmNod2lsZF9pbmRleChmaWxlbmFtZSwga2V5KTsKKwkJCWJyZWFrOworCX0KKwkKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2RpbmZvLjggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kaW5mby44Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyODU2ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kaW5mby44CkBAIC0wLDAgKzEsNzIgQEAKKy5cXCIgYXV0by1nZW5lcmF0ZWQgYnkgZG9jYm9vazJtYW4tc3BlYyAkUmV2aXNpb246IDEuMiAkCisuVEggIk1PRElORk8iICI4IiAiMjAxMC0wMy0wMSIgIiIgIiIKKy5TSCBOQU1FCittb2RpbmZvIFwtIHByb2dyYW0gdG8gc2hvdyBpbmZvcm1hdGlvbiBhYm91dCBhIExpbnV4IEtlcm5lbCBtb2R1bGUKKy5TSCBTWU5PUFNJUworLnNwCitcZkJtb2RpbmZvXGZSIFsgXGZCLTBcZlIgXSAgWyBcZkItRiBcZklmaWVsZFxmQlxmUiBdICBbIFxmQi1rIFxmSWtlcm5lbFxmQlxmUiBdICBbIFxmQm1vZHVsZW5hbWV8ZmlsZW5hbWVcZlJcZkkuLi5cZlIgXSAKKy5zcAorXGZCbW9kaW5mbyAtVlxmUgorLnNwCitcZkJtb2RpbmZvIC1oXGZSCisuU0ggIkRFU0NSSVBUSU9OIgorLlBQCitcZkJtb2RpbmZvXGZSIGV4dHJhY3RzIGluZm9ybWF0aW9uIGZyb20gdGhlIExpbnV4CitLZXJuZWwgbW9kdWxlcyBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMKK25vdCBhIGZpbGVuYW1lLCB0aGVuIHRoZQorXGZJL2xpYi9tb2R1bGVzL1xmUlxmSXZlcnNpb25cZlIKK2RpcmVjdG9yeSBpcyBzZWFyY2hlZCwgYXMgaXMgYWxzbyBkb25lIGJ5CitcZkJtb2Rwcm9iZVxmUig4KSB3aGVuIGxvYWRpbmcga2VybmVsIG1vZHVsZXMuCisuUFAKK1xmQm1vZGluZm9cZlIgYnkgZGVmYXVsdCBsaXN0cyBlYWNoIGF0dHJpYnV0ZQorb2YgdGhlIG1vZHVsZSBpbiBmb3JtIFxmSWZpZWxkbmFtZVxmUiA6CitcZkl2YWx1ZVxmUiwgZm9yIGVhc3kgcmVhZGluZy4gVGhlCitmaWxlbmFtZSBpcyBsaXN0ZWQgdGhlIHNhbWUgd2F5IChhbHRob3VnaCBpdCdzIG5vdCByZWFsbHkgYW4KK2F0dHJpYnV0ZSkuCisuUFAKK1RoaXMgdmVyc2lvbiBvZiBcZkJtb2RpbmZvXGZSIGNhbiB1bmRlcnN0YW5kCittb2R1bGVzIG9mIGFueSBMaW51eCBLZXJuZWwgYXJjaGl0ZWN0dXJlLgorLlNIICJPUFRJT05TIgorLlRQCitcZkItViAtLXZlcnNpb25cZlIKK1ByaW50IHRoZSBtb2RpbmZvIHZlcnNpb24uCisuVFAKK1xmQi1GIC0tZmllbGRcZlIKK09ubHkgcHJpbnQgdGhpcyBmaWVsZCB2YWx1ZSwgb25lIHBlciBsaW5lLiBUaGlzIGlzIG1vc3QKK3VzZWZ1bCBmb3Igc2NyaXB0cy4gRmllbGQgbmFtZXMgYXJlIGNhc2UtaW5zZW5pdGl2ZS4KK0NvbW1vbiBmaWVsZHMgKHdoaWNoIG1heSBub3QgYmUgaW4gZXZlcnkgbW9kdWxlKSBpbmNsdWRlCithdXRob3IsIGRlc2NyaXB0aW9uLAorbGljZW5zZSwgcGFybSwKK2RlcGVuZHMsIGFuZCBhbGlhc1wmLgorVGhlcmUgYXJlIG9mdGVuIG11bHRpcGxlIHBhcm0sCithbGlhcyBhbmQgZGVwZW5kcworZmllbGRzLiBUaGUgc3BlY2lhbCBmaWVsZCBmaWxlbmFtZQorbGlzdHMgdGhlIGZpbGVuYW1lIG9mIHRoZSBtb2R1bGUuCisuVFAKK1xmQi1rIFxmSWtlcm5lbFxmQlxmUgorUHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCBhIGtlcm5lbCBvdGhlciB0aGFuIHRoZSBydW5uaW5nIG9uZS4gVGhpcworaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgZGlzdHJpYnV0aW9ucyBuZWVkaW5nIHRvIGV4dHJhY3QKK2luZm9ybWF0aW9uIGZyb20gYSBuZXdseSBpbnN0YWxsZWQgKGJ1dCBub3QgeWV0IHJ1bm5pbmcpIHNldCBvZgora2VybmVsIG1vZHVsZXMuIEZvciBleGFtcGxlLCB5b3Ugd2lzaCB0byBmaW5kIHdoaWNoIGZpcm13YXJlIGZpbGVzCithcmUgbmVlZGVkIGJ5IHZhcmlvdXMgbW9kdWxlcyBpbiBhIG5ldyBrZXJuZWwgZm9yIHdoaWNoIHlvdSBtdXN0CittYWtlIGFuIGluaXRyZC9pbml0cmFtZnMgaW1hZ2UgcHJpb3IgdG8gYm9vdGluZy4KKy5UUAorXGZCLTAgLS1udWxsXGZSCitVc2UgdGhlIEFTQ0lJIHplcm8gY2hhcmFjdGVyIHRvIHNlcGFyYXRlIGZpZWxkIHZhbHVlcywKK2luc3RlYWQgb2YgYSBuZXcgbGluZS4gVGhpcyBpcyB1c2VmdWwgZm9yIHNjcmlwdHMsIHNpbmNlCithIG5ldyBsaW5lIGNhbiB0aGVvcmV0aWNhbGx5IGFwcGVhciBpbnNpZGUgYSBmaWVsZC4KKy5UUAorXGZCLWEgLWQgLWwgLXAgLW5cZlIKK1RoZXNlIGFyZSBzaG9ydGN1dHMgZm9yIGF1dGhvciwKK2Rlc2NyaXB0aW9uLAorbGljZW5zZVwmLiBwYXJtIGFuZAorZmlsZW5hbWUgcmVzcGVjdGl2ZWx5LCB0byBlYXNlIHRoZQordHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgbW9kdXRpbHMKK1xmQm1vZGluZm9cZlJcJi4KKy5TSCAiQ09QWVJJR0hUIgorLlBQCitUaGlzIG1hbnVhbCBwYWdlIG9yaWdpbmFsbHkgQ29weXJpZ2h0IDIwMDMsIFJ1c3R5IFJ1c3NlbGwsIElCTQorQ29ycG9yYXRpb24uIE1haW50YWluZWQgYnkgSm9uIE1hc3RlcnMgYW5kIG90aGVycy4KKy5TSCAiU0VFIEFMU08iCisuUFAKK1xmQm1vZHByb2JlXGZSKDgpCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kaW5mby5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZGluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGU5YWQzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZGluZm8uYwpAQCAtMCwwICsxLDMyMyBAQAorLyogRXh0cmFjdCBtb2R1bGUgaW5mbzogdXNlZnVsIGZvciBib3RoIHRoZSBjdXJpb3VzIGFuZCBmb3Igc2NyaXB0cy4gKi8KKyNkZWZpbmUgX0dOVV9TT1VSQ0UgLyogYXNwcmludGYgcm9ja3MgKi8KKyNpbmNsdWRlIDxlbGYuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSAibG9nZ2luZy5oIgorI2luY2x1ZGUgImVsZm9wcy5oIgorI2luY2x1ZGUgInpsaWJzdXBwb3J0LmgiCisjaW5jbHVkZSAidGVzdGluZy5oIgorCisjaWZuZGVmIE1PRFVMRV9ESVIKKyNkZWZpbmUgTU9EVUxFX0RJUiAiL2xpYi9tb2R1bGVzIgorI2VuZGlmCisKK3N0cnVjdCBwYXJhbQoreworCXN0cnVjdCBwYXJhbSAqbmV4dDsKKwljb25zdCBjaGFyICpuYW1lOyAJLyogVGVybWluYXRlZCBieSBhIGNvbG9uICovCisJY29uc3QgY2hhciAqcGFyYW07CisJY29uc3QgY2hhciAqdHlwZTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGFyYW0gKmFkZF9wYXJhbShjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgcGFyYW0gKipsaXN0KQoreworCXN0cnVjdCBwYXJhbSAqaTsKKwl1bnNpZ25lZCBpbnQgbmFtZWxlbiA9IHN0cmNzcG4obmFtZSwgIjoiKSArIDE7CisKKwlmb3IgKGkgPSAqbGlzdDsgaTsgaSA9IGktPm5leHQpCisJCWlmIChzdHJuY21wKGktPm5hbWUsIG5hbWUsIG5hbWVsZW4pID09IDApCisJCQlyZXR1cm4gaTsKKwlpID0gTk9GQUlMKG1hbGxvYyhzaXplb2YoKmkpICsgbmFtZWxlbisxKSk7CisJc3RybmNweSgoY2hhciAqKShpICsgMSksIG5hbWUsIG5hbWVsZW4pOworCSgoY2hhciAqKShpICsgMSkpW25hbWVsZW5dID0gJ1wwJzsKKwlpLT5uYW1lID0gKGNoYXIgKikoaSArIDEpOworCWktPnBhcmFtID0gTlVMTDsKKwlpLT50eXBlID0gTlVMTDsKKwlpLT5uZXh0ID0gKmxpc3Q7CisJKmxpc3QgPSBpOworCXJldHVybiBpOworfQorCitzdGF0aWMgdm9pZCBwcmludF90YWcoY29uc3QgY2hhciAqdGFnLCBzdHJ1Y3Qgc3RyaW5nX3RhYmxlICp0YWdzLAorCQkgICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciBzZXApCit7CisJaW50IGo7CisJdW5zaWduZWQgaW50IHRhZ2xlbiA9IHN0cmxlbih0YWcpOworCisJaWYgKHN0cmVxKHRhZywgImZpbGVuYW1lIikpIHsKKwkJcHJpbnRmKCIlcyVjIiwgZmlsZW5hbWUsIHNlcCk7CisJCXJldHVybjsKKwl9CisKKwlmb3IgKGogPSAwOyBqIDwgdGFncy0+Y250OyBqKyspIHsKKwkJY29uc3QgY2hhciAqaW5mbyA9IHRhZ3MtPnN0cltqXTsKKwkJaWYgKHN0cm5jbXAoaW5mbywgdGFnLCB0YWdsZW4pID09IDAgJiYgaW5mb1t0YWdsZW5dID09ICc9JykKKwkJCXByaW50ZigiJXMlYyIsIGluZm8gKyB0YWdsZW4gKyAxLCBzZXApOworCX0KK30KKworc3RhdGljIHZvaWQgcHJpbnRfYWxsKHN0cnVjdCBzdHJpbmdfdGFibGUgKnRhZ3MsCisJCSAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIHNlcCkKK3sKKwlpbnQgajsKKwlzdHJ1Y3QgcGFyYW0gKmksICpwYXJhbXMgPSBOVUxMOworCisJcHJpbnRmKCIlLTE2cyVzJWMiLCAiZmlsZW5hbWU6IiwgZmlsZW5hbWUsIHNlcCk7CisJZm9yIChqID0gMDsgaiA8IHRhZ3MtPmNudDsgaisrKSB7CisJCWNvbnN0IGNoYXIgKmluZm8gPSB0YWdzLT5zdHJbal07CisJCWNoYXIgKmVxLCAqY29sb247CisKKwkJLyogV2UgZXhwZWN0IHRoaXMgaW4gcGFybSBhbmQgcGFybXR5cGUuICovCisJCWNvbG9uID0gc3RyY2hyKGluZm8sICc6Jyk7CisKKwkJLyogV2Ugc3RvcmUgdGhlc2UgZm9yIGhhbmRsaW5nIGF0IHRoZSBlbmQgKi8KKwkJaWYgKHN0cnN0YXJ0cyhpbmZvLCAicGFybT0iKSAmJiBjb2xvbikgeworCQkJaSA9IGFkZF9wYXJhbShpbmZvICsgc3RybGVuKCJwYXJtPSIpLCAmcGFyYW1zKTsKKwkJCWktPnBhcmFtID0gY29sb24gKyAxOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKHN0cnN0YXJ0cyhpbmZvLCAicGFybXR5cGU9IikgJiYgY29sb24pIHsKKwkJCWkgPSBhZGRfcGFyYW0oaW5mbyArIHN0cmxlbigicGFybXR5cGU9IiksICZwYXJhbXMpOworCQkJaS0+dHlwZSA9IGNvbG9uICsgMTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJaWYgKCFzZXApIHsKKwkJCXByaW50ZigiJXMlYyIsIGluZm8sIHNlcCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWVxID0gc3RyY2hyKGluZm8sICc9Jyk7CisJCS8qIFdhcm4gaWYgbm8gJz0nIG1heWJlPyAqLworCQlpZiAoZXEpIHsKKwkJCWNoYXIgdGFnW2VxIC0gaW5mbyArIDJdOworCQkJc3RybmNweSh0YWcsIGluZm8sIGVxIC0gaW5mbyk7CisJCQl0YWdbZXEtaW5mb10gPSAnOic7CisJCQl0YWdbZXEtaW5mbysxXSA9ICdcMCc7CisJCQlwcmludGYoIiUtMTZzJXMlYyIsIHRhZywgZXErMSwgc2VwKTsKKwkJfQorCX0KKworCS8qIE5vdyBzaG93IHBhcmFtZXRlcnMuICovCisJZm9yIChpID0gcGFyYW1zOyBpOyBpID0gaS0+bmV4dCkgeworCQlpZiAoIWktPnBhcmFtKQorCQkJcHJpbnRmKCIlLTE2cyVzJXMlYyIsICJwYXJtOiIsIGktPm5hbWUsIGktPnR5cGUsIHNlcCk7CisJCWVsc2UgaWYgKGktPnR5cGUpCisJCQlwcmludGYoIiUtMTZzJXMlcyAoJXMpJWMiLAorCQkJICAgICAgICJwYXJtOiIsIGktPm5hbWUsIGktPnBhcmFtLCBpLT50eXBlLCBzZXApOworCQllbHNlIAorCQkJcHJpbnRmKCIlLTE2cyVzJXMlYyIsICJwYXJtOiIsIGktPm5hbWUsIGktPnBhcmFtLCBzZXApOworCX0KK30KKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0KK3sKKwl7ImF1dGhvciIsIDAsIDAsICdhJ30sCisJeyJkZXNjcmlwdGlvbiIsIDAsIDAsICdkJ30sCisJeyJsaWNlbnNlIiwgMCwgMCwgJ2wnfSwKKwl7InBhcmFtZXRlcnMiLCAwLCAwLCAncCd9LAorCXsiZmlsZW5hbWUiLCAwLCAwLCAnbid9LAorCXsidmVyc2lvbiIsIDAsIDAsICdWJ30sCisJeyJoZWxwIiwgMCwgMCwgJ2gnfSwKKwl7Im51bGwiLCAwLCAwLCAnMCd9LAorCXsiZmllbGQiLCAxLCAwLCAnRid9LAorCXswLCAwLCAwLCAwfQorfTsKKworLyogLSBhbmQgXyBhcmUgZXF1aXZhbGVudCwgYW5kIGV4cGVjdCBzdWZmaXguICovCitzdGF0aWMgaW50IG5hbWVfbWF0Y2hlcyhjb25zdCBjaGFyICpsaW5lLCBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKm1vZG5hbWUpCit7CisJdW5zaWduZWQgaW50IGk7CisJY2hhciAqcDsKKworCS8qIElnbm9yZSBjb21tZW50IGxpbmVzICovCisJaWYgKGxpbmVbc3Ryc3BuKGxpbmUsICJcdCAiKV0gPT0gJyMnKQorCQlyZXR1cm4gMDsKKworCS8qIEZpbmQgbGFzdCAvIGJlZm9yZSBjb2xvbi4gKi8KKwlwID0gbWVtY2hyKGxpbmUsICc6JywgZW5kIC0gbGluZSk7CisJaWYgKCFwKQorCQlyZXR1cm4gMDsKKwl3aGlsZSAocCA+IGxpbmUpIHsKKwkJaWYgKCpwID09ICcvJykgeworCQkJcCsrOworCQkJYnJlYWs7CisJCX0KKwkJcC0tOworCX0KKworCWZvciAoaSA9IDA7IG1vZG5hbWVbaV07IGkrKykgeworCQkvKiBNb2R1bGUgbmFtZXMgY2FuJ3QgaGF2ZSBjb2xvbnMuICovCisJCWlmIChtb2RuYW1lW2ldID09ICc6JykKKwkJCWNvbnRpbnVlOworCQlpZiAobW9kbmFtZVtpXSA9PSBwW2ldKQorCQkJY29udGludWU7CisJCWlmIChtb2RuYW1lW2ldID09ICdfJyAmJiBwW2ldID09ICctJykKKwkJCWNvbnRpbnVlOworCQlpZiAobW9kbmFtZVtpXSA9PSAnLScgJiYgcFtpXSA9PSAnXycpCisJCQljb250aW51ZTsKKwkJcmV0dXJuIDA7CisJfQorCS8qIE11c3QgbWF0Y2ggYWxsIHRoZSB3YXkgdG8gdGhlIGV4dGVuc2lvbiAqLworCXJldHVybiAocFtpXSA9PSAnLicpOworfQorCitzdGF0aWMgY2hhciAqbmV4dF9saW5lKGNoYXIgKnAsIGNvbnN0IGNoYXIgKmVuZCkKK3sKKwljaGFyICplb2w7CisKKwllb2wgPSBtZW1jaHIocCwgJ1xuJywgZW5kIC0gcCk7CisJaWYgKGVvbCkKKwkJcmV0dXJuIGVvbCArIDE7CisJcmV0dXJuIChjaGFyICopZW5kICsgMTsKK30KKworc3RhdGljIHN0cnVjdCBlbGZfZmlsZSAqZ3JhYl9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgY29uc3QgY2hhciAqa2VybmVsLAorCQkJCSAgICBjb25zdCBjaGFyICpiYXNlZGlyKQoreworCWNoYXIgKmRhdGE7CisJdW5zaWduZWQgbG9uZyBzaXplOworCXN0cnVjdCB1dHNuYW1lIGJ1ZjsKKwljaGFyICpkZXBuYW1lLCAqcCwgKm1vZGRpcjsKKwlzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZTsKKworCWlmIChzdHJjaHIobmFtZSwgJy4nKSB8fCBzdHJjaHIobmFtZSwgJy8nKSkgeworCQltb2R1bGUgPSBncmFiX2VsZl9maWxlKG5hbWUpOworCQlpZiAoIW1vZHVsZSkKKwkJCWVycm9yKCJtb2RpbmZvOiBjb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsCisJCQkJbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuIG1vZHVsZTsKKwl9CisKKwlpZiAoIWtlcm5lbCkgeworCQl1bmFtZSgmYnVmKTsKKwkJa2VybmVsID0gYnVmLnJlbGVhc2U7CisJfQorCWlmIChzdHJsZW4oYmFzZWRpcikpCisJCW5vZmFpbF9hc3ByaW50ZigmbW9kZGlyLCAiJXMvJXMvJXMiLCBiYXNlZGlyLCBNT0RVTEVfRElSLCBrZXJuZWwpOworCWVsc2UKKwkJbm9mYWlsX2FzcHJpbnRmKCZtb2RkaXIsICIlcy8lcyIsIE1PRFVMRV9ESVIsIGtlcm5lbCk7CisKKwkvKiBTZWFyY2ggZm9yIGl0IGluIG1vZHVsZXMuZGVwLiAqLworCW5vZmFpbF9hc3ByaW50ZigmZGVwbmFtZSwgIiVzLyVzIiwgbW9kZGlyLCAibW9kdWxlcy5kZXAiKTsKKwlkYXRhID0gZ3JhYl9maWxlKGRlcG5hbWUsICZzaXplKTsKKwlpZiAoIWRhdGEpIHsKKwkJZXJyb3IoIm1vZGluZm86IGNvdWxkIG5vdCBvcGVuICVzXG4iLCBkZXBuYW1lKTsKKwkJZnJlZShkZXBuYW1lKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWZyZWUoZGVwbmFtZSk7CisKKwlmb3IgKHAgPSBkYXRhOyBwIDwgZGF0YSArIHNpemU7IHAgPSBuZXh0X2xpbmUocCwgZGF0YSArIHNpemUpKSB7CisJCWlmIChuYW1lX21hdGNoZXMocCwgZGF0YSArIHNpemUsIG5hbWUpKSB7CisJCQlpbnQgbmFtZWxlbiA9IHN0cmNzcG4ocCwgIjoiKTsKKwkJCWNvbnN0IGNoYXIgKmRpcjsKKwkJCWNoYXIgKmZpbGVuYW1lOworCisJCQlpZiAoJy8nID09IHBbMF0pCisJCQkJZGlyID0gYmFzZWRpcjsgLyogb2xkIHN0eWxlIGRlcHMgLSBhYnMuIHBhdGggKi8KKwkJCWVsc2UKKwkJCQlkaXIgPSBtb2RkaXI7IC8qIG5ldyBzdHlsZSAtIHJlbGF0aXZlIHBhdGggKi8KKworCQkJaWYgKHN0cmxlbihkaXIpKSB7CisJCQkJbm9mYWlsX2FzcHJpbnRmKCZmaWxlbmFtZSwgIiVzLyVzIiwgZGlyLCBwKTsKKwkJCQlmaWxlbmFtZVtuYW1lbGVuICsgc3RybGVuKGRpcikgKyAxXSA9ICdcMCc7CisJCQl9IGVsc2UgeworCQkJCWZpbGVuYW1lID0gc3RybmR1cChwLCBuYW1lbGVuKTsKKwkJCX0KKwkJCXJlbGVhc2VfZmlsZShkYXRhLCBzaXplKTsKKwkJCW1vZHVsZSA9IGdyYWJfZWxmX2ZpbGUoZmlsZW5hbWUpOworCQkJaWYgKCFtb2R1bGUpCisJCQkJZXJyb3IoIm1vZGluZm86IGNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIiwKKwkJCQkJIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQkJZnJlZShmaWxlbmFtZSk7CisJCQlyZXR1cm4gbW9kdWxlOworCQl9CisJfQorCXJlbGVhc2VfZmlsZShkYXRhLCBzaXplKTsKKwllcnJvcigibW9kaW5mbzogY291bGQgbm90IGZpbmQgbW9kdWxlICVzXG4iLCBuYW1lKTsKKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqbmFtZSkKK3sKKwlmcHJpbnRmKHN0ZGVyciwgIlVzYWdlOiAlcyBbLTBdWy1GIGZpZWxkXVstayBrZXJuZWx2ZXJzaW9uXVstYiBiYXNlZGlyXSAgbW9kdWxlLi4uXG4iCisJCSIgUHJpbnRzIG91dCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgb25lIG9yIG1vcmUgbW9kdWxlKHMpLlxuIgorCQkiIElmIGEgZmllbGRuYW1lIGlzIGdpdmVuLCBqdXN0IHByaW50IG91dCB0aGF0IGZpZWxkIChvciBub3RoaW5nIGlmIG5vdCBmb3VuZCkuXG4iCisJCSIgT3RoZXJ3aXNlLCBwcmludCBhbGwgaW5mb3JtYXRpb24gb3V0IGluIGEgcmVhZGFibGUgZm9ybVxuIgorCQkiIElmIC0wIGlzIGdpdmVuLCBzZXBhcmF0ZSB3aXRoIG51bCwgbm90IG5ld2xpbmUuXG4iCisJCSIgSWYgLWIgaXMgZ2l2ZW4sIHVzZSBhbiBpbWFnZSBvZiB0aGUgbW9kdWxlIHRyZWUuXG4iLAorCQluYW1lKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwljb25zdCBjaGFyICpmaWVsZCA9IE5VTEw7CisJY29uc3QgY2hhciAqa2VybmVsID0gTlVMTDsKKwljaGFyIHNlcCA9ICdcbic7CisJaW50IG9wdCwgcmV0ID0gMDsKKwljaGFyICpiYXNlZGlyID0gIiI7CisKKwlsb2dnaW5nID0gMDsgLyogc2VuZCBtZXNzYWdlcyB0byBzdGRlcnIgKi8KKworCWlmIChuYXRpdmVfZW5kaWFubmVzcygpID09IDApCisJCWFib3J0KCk7CisKKwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsYXJndiwiYWRscFZobjBGOms6YjoiLG9wdGlvbnMsTlVMTCkpID49IDApeworCQlzd2l0Y2ggKG9wdCkgeworCQljYXNlICdhJzogZmllbGQgPSAiYXV0aG9yIjsgYnJlYWs7CisJCWNhc2UgJ2QnOiBmaWVsZCA9ICJkZXNjcmlwdGlvbiI7IGJyZWFrOworCQljYXNlICdsJzogZmllbGQgPSAibGljZW5zZSI7IGJyZWFrOworCQljYXNlICdwJzogZmllbGQgPSAicGFybSI7IGJyZWFrOworCQljYXNlICduJzogZmllbGQgPSAiZmlsZW5hbWUiOyBicmVhazsKKwkJY2FzZSAnVic6IHByaW50ZihQQUNLQUdFICIgdmVyc2lvbiAiIFZFUlNJT04gIlxuIik7IGV4aXQoMCk7CisJCWNhc2UgJ0YnOiBmaWVsZCA9IG9wdGFyZzsgYnJlYWs7CisJCWNhc2UgJzAnOiBzZXAgPSAnXDAnOyBicmVhazsKKwkJY2FzZSAnayc6IGtlcm5lbCA9IG9wdGFyZzsgYnJlYWs7CisJCWNhc2UgJ2InOiBiYXNlZGlyID0gb3B0YXJnOyBicmVhazsKKwkJY2FzZSAnaCc6IHVzYWdlKGFyZ3ZbMF0pOyBleGl0KDApOyBicmVhazsKKwkJZGVmYXVsdDoKKwkJCXVzYWdlKGFyZ3ZbMF0pOyBleGl0KDEpOworCQl9CisJfQorCWlmIChhcmdjIDwgb3B0aW5kICsgMSkgeworCQl1c2FnZShhcmd2WzBdKTsKKwkJZXhpdCgxKTsKKwl9CisKKwlmb3IgKG9wdCA9IG9wdGluZDsgb3B0IDwgYXJnYzsgb3B0KyspIHsKKwkJc3RydWN0IHN0cmluZ190YWJsZSAqdGFnczsKKwkJc3RydWN0IGVsZl9maWxlICptb2Q7CisKKwkJbW9kID0gZ3JhYl9tb2R1bGUoYXJndltvcHRdLCBrZXJuZWwsIGJhc2VkaXIpOworCQlpZiAoIW1vZCkgeworCQkJcmV0ID0gMTsKKwkJCWNvbnRpbnVlOworCQl9CisJCXRhZ3MgPSBtb2QtPm9wcy0+bG9hZF9zdHJpbmdzKG1vZCwgIi5tb2RpbmZvIiwgTlVMTCk7CisJCWlmICghdGFncykgeworCQkJcmVsZWFzZV9lbGZfZmlsZShtb2QpOworCQkJY29udGludWU7CisJCX0KKwkJaWYgKGZpZWxkKQorCQkJcHJpbnRfdGFnKGZpZWxkLCB0YWdzLCBtb2QtPnBhdGhuYW1lLCBzZXApOworCQllbHNlCisJCQlwcmludF9hbGwodGFncywgbW9kLT5wYXRobmFtZSwgc2VwKTsKKwkJc3RydGJsX2ZyZWUodGFncyk7CisJCXJlbGVhc2VfZWxmX2ZpbGUobW9kKTsKKwl9CisJcmV0dXJuIHJldDsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2Rwcm9iZS44IGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZHByb2JlLjgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjZmQ2MAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2Rwcm9iZS44CkBAIC0wLDAgKzEsMjYwIEBACisuXFwiIGF1dG8tZ2VuZXJhdGVkIGJ5IGRvY2Jvb2sybWFuLXNwZWMgJFJldmlzaW9uOiAxLjIgJAorLlRIICJNT0RQUk9CRSIgIjgiICIyMDEwLTAzLTAxIiAiIiAiIgorLlNIIE5BTUUKK21vZHByb2JlIFwtIHByb2dyYW0gdG8gYWRkIGFuZCByZW1vdmUgbW9kdWxlcyBmcm9tIHRoZSBMaW51eCBLZXJuZWwKKy5TSCBTWU5PUFNJUworLnNwCitcZkJtb2Rwcm9iZVxmUiBbIFxmQi12XGZSIF0gIFsgXGZCLVZcZlIgXSAgWyBcZkItQyBcZkljb25maWctZmlsZVxmQlxmUiBdICBbIFxmQi1uXGZSIF0gIFsgXGZCLWlcZlIgXSAgWyBcZkItcVxmUiBdICBbIFxmQi1iXGZSIF0gIFsgXGZCLW8gXGZJbW9kdWxlbmFtZVxmQlxmUiBdICBbIFxmQlxmSW1vZHVsZW5hbWVcZkJcZlIgXSAgWyBcZkJcZkltb2R1bGUgcGFyYW1ldGVyc1xmQlxmUlxmSS4uLlxmUiBdIAorLnNwCitcZkJtb2Rwcm9iZVxmUiBbIFxmQi1yXGZSIF0gIFsgXGZCLXZcZlIgXSAgWyBcZkItblxmUiBdICBbIFxmQi1pXGZSIF0gIFsgXGZCXGZJbW9kdWxlbmFtZVxmQlxmUlxmSS4uLlxmUiBdIAorLnNwCitcZkJtb2Rwcm9iZVxmUiBbIFxmQi1sXGZSIF0gIFsgXGZCLXQgXGZJZGlybmFtZVxmQlxmUiBdICBbIFxmQlxmSXdpbGRjYXJkXGZCXGZSIF0gCisuc3AKK1xmQm1vZHByb2JlXGZSIFsgXGZCLWNcZlIgXSAKKy5zcAorXGZCbW9kcHJvYmVcZlIgWyBcZkItLWR1bXAtbW9kdmVyc2lvbnNcZlIgXSAgWyBcZkJcZklmaWxlbmFtZVxmQlxmUlxmSS4uLlxmUiBdIAorLlNIICJERVNDUklQVElPTiIKKy5QUAorXGZCbW9kcHJvYmVcZlIgaW50ZWxsaWdlbnRseSBhZGRzIG9yIHJlbW92ZXMgYQorbW9kdWxlIGZyb20gdGhlIExpbnV4IGtlcm5lbDogbm90ZSB0aGF0IGZvciBjb252ZW5pZW5jZSwgdGhlcmUKK2lzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiBfIGFuZCAtIGluIG1vZHVsZSBuYW1lcyAoYXV0b21hdGljCit1bmRlcnNjb3JlIGNvbnZlcnNpb24gaXMgcGVyZm9ybWVkKS4KK1xmQm1vZHByb2JlXGZSIGxvb2tzIGluIHRoZSBtb2R1bGUgZGlyZWN0b3J5CitcZkkvbGliL21vZHVsZXMvYHVuYW1lIC1yYFxmUiBmb3IgYWxsCit0aGUgbW9kdWxlcyBhbmQgb3RoZXIgZmlsZXMsIGV4Y2VwdCBmb3IgdGhlIG9wdGlvbmFsCitcZkkvZXRjL21vZHByb2JlLmNvbmZcZlIgY29uZmlndXJhdGlvbiBmaWxlIGFuZAorXGZJL2V0Yy9tb2Rwcm9iZS5kXGZSIGRpcmVjdG9yeQorKHNlZSBcZkJtb2Rwcm9iZS5jb25mXGZSKDUpKS4gXGZCbW9kcHJvYmVcZlIgd2lsbCBhbHNvIHVzZSBtb2R1bGUKK29wdGlvbnMgc3BlY2lmaWVkIG9uIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIGluIHRoZSBmb3JtIG9mCis8bW9kdWxlPlwmLjxvcHRpb24+XCYuCisuUFAKK05vdGUgdGhhdCB1bmxpa2UgaW4gMi40IHNlcmllcyBMaW51eCBrZXJuZWxzICh3aGljaCBhcmUgbm90IHN1cHBvcnRlZAorYnkgdGhpcyB0b29sKSB0aGlzIHZlcnNpb24gb2YgXGZCbW9kcHJvYmVcZlIgZG9lcyBub3QKK2RvIGFueXRoaW5nIHRvIHRoZSBtb2R1bGUgaXRzZWxmOiB0aGUgd29yayBvZiByZXNvbHZpbmcgc3ltYm9scworYW5kIHVuZGVyc3RhbmRpbmcgcGFyYW1ldGVycyBpcyBkb25lIGluc2lkZSB0aGUga2VybmVsLiBTbworbW9kdWxlIGZhaWx1cmUgaXMgc29tZXRpbWVzIGFjY29tcGFuaWVkIGJ5IGEga2VybmVsIG1lc3NhZ2U6IHNlZQorXGZCZG1lc2dcZlIoOClcJi4KKy5QUAorXGZCbW9kcHJvYmVcZlIgZXhwZWN0cyBhbiB1cC10by1kYXRlCitcZkltb2R1bGVzLmRlcC5iaW5cZlIgZmlsZSAob3IgZmFsbGJhY2sgaHVtYW4KK3JlYWRhYmxlIFxmSW1vZHVsZXMuZGVwXGZSIGZpbGUpLCBhcyBnZW5lcmF0ZWQKK2J5IHRoZSBjb3JyZXNwb25kaW5nIFxmQmRlcG1vZFxmUiB1dGlsaXR5IHNoaXBwZWQKK2Fsb25nIHdpdGggXGZCbW9kcHJvYmVcZlIgKHNlZQorXGZCZGVwbW9kXGZSKDgpKS4gVGhpcyBmaWxlIGxpc3RzIHdoYXQgb3RoZXIgbW9kdWxlcyBlYWNoCittb2R1bGUgbmVlZHMgKGlmIGFueSksIGFuZCBcZkJtb2Rwcm9iZVxmUiB1c2VzIHRoaXMKK3RvIGFkZCBvciByZW1vdmUgdGhlc2UgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkuCisuUFAKK0lmIGFueSBhcmd1bWVudHMgYXJlIGdpdmVuIGFmdGVyIHRoZQorXGZJbW9kdWxlbmFtZVxmUiwgdGhleSBhcmUgcGFzc2VkIHRvIHRoZQora2VybmVsIChpbiBhZGRpdGlvbiB0byBhbnkgb3B0aW9ucyBsaXN0ZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24KK2ZpbGUpLgorLlNIICJPUFRJT05TIgorLlRQCitcZkItYSAtLWFsbFxmUgorSW5zZXJ0IGFsbCBtb2R1bGUgbmFtZXMgb24gdGhlIGNvbW1hbmQgbGluZS4KKy5UUAorXGZCLWIgLS11c2UtYmxhY2tsaXN0XGZSCitUaGlzIG9wdGlvbiBjYXVzZXMgXGZCbW9kcHJvYmVcZlIgdG8gYXBwbHkgdGhlCitcZkJibGFja2xpc3RcZlIgY29tbWFuZHMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMKKyhpZiBhbnkpIHRvIG1vZHVsZSBuYW1lcyBhcyB3ZWxsLiBJdCBpcyB1c3VhbGx5IHVzZWQgYnkKK1xmQnVkZXZcZlIoNylcJi4KKy5UUAorXGZCLUMgLS1jb25maWdcZlIKK1RoaXMgb3B0aW9uIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIGRpcmVjdG9yeS9maWxlCisoXGZJL2V0Yy9tb2Rwcm9iZS5kXGZSIG9yIAorXGZJL2V0Yy9tb2Rwcm9iZS5jb25mXGZSKS4KKworVGhpcyBvcHRpb24gaXMgcGFzc2VkIHRocm91Z2ggXGZCaW5zdGFsbFxmUgorb3IgXGZCcmVtb3ZlXGZSIGNvbW1hbmRzIHRvIG90aGVyCitcZkJtb2Rwcm9iZVxmUiBjb21tYW5kcyBpbiB0aGUKK01PRFBST0JFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisuVFAKK1xmQi1jIC0tc2hvd2NvbmZpZ1xmUgorRHVtcCBvdXQgdGhlIGVmZmVjdGl2ZSBjb25maWd1cmF0aW9uIGZyb20gdGhlIGNvbmZpZyBkaXJlY3RvcnkKK2FuZCBleGl0LgorLlRQCitcZkItLWR1bXAtbW9kdmVyc2lvbnNcZlIKK1ByaW50IG91dCBhIGxpc3Qgb2YgbW9kdWxlIHZlcnNpb25pbmcgaW5mb3JtYXRpb24gcmVxdWlyZWQgYnkgYQorbW9kdWxlLiBUaGlzIG9wdGlvbiBpcyBjb21tb25seSB1c2VkIGJ5IGRpc3RyaWJ1dGlvbnMgaW4gb3JkZXIgdG8KK3BhY2thZ2UgdXAgYSBMaW51eCBrZXJuZWwgbW9kdWxlIHVzaW5nIG1vZHVsZSB2ZXJzaW9uaW5nIGRlcHMuCisuVFAKK1xmQi1kIC0tZGlybmFtZVxmUgorRGlyZWN0b3J5IHdoZXJlIG1vZHVsZXMgY2FuIGJlIGZvdW5kLAorXGZJL2xpYi9tb2R1bGVzL1JFTEVBU0VcZlIKK2J5IGRlZmF1bHQuCisuVFAKK1xmQi0tZmlyc3QtdGltZVxmUgorTm9ybWFsbHksIFxmQm1vZHByb2JlXGZSIHdpbGwgc3VjY2VlZCAoYW5kIGRvCitub3RoaW5nKSBpZiB0b2xkIHRvIGluc2VydCBhIG1vZHVsZSB3aGljaCBpcyBhbHJlYWR5CitwcmVzZW50IG9yIHRvIHJlbW92ZSBhIG1vZHVsZSB3aGljaCBpc24ndCBwcmVzZW50LiBUaGlzIGlzCitpZGVhbCBmb3Igc2ltcGxlIHNjcmlwdHM7IGhvd2V2ZXIsIG1vcmUgY29tcGxpY2F0ZWQgc2NyaXB0cyBvZnRlbgord2FudCB0byBrbm93IHdoZXRoZXIgXGZCbW9kcHJvYmVcZlIgcmVhbGx5CitkaWQgc29tZXRoaW5nOiB0aGlzIG9wdGlvbiBtYWtlcyBtb2Rwcm9iZSBmYWlsIGluIHRoZQorY2FzZSB0aGF0IGl0IGFjdHVhbGx5IGRpZG4ndCBkbyBhbnl0aGluZy4KKy5UUAorXGZCLS1mb3JjZS12ZXJtYWdpY1xmUgorRXZlcnkgbW9kdWxlIGNvbnRhaW5zIGEgc21hbGwgc3RyaW5nIGNvbnRhaW5pbmcgaW1wb3J0YW50CitpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUga2VybmVsIGFuZCBjb21waWxlciB2ZXJzaW9ucy4gSWYKK2EgbW9kdWxlIGZhaWxzIHRvIGxvYWQgYW5kIHRoZSBrZXJuZWwgY29tcGxhaW5zIHRoYXQgdGhlCisidmVyc2lvbiBtYWdpYyIgZG9lc24ndCBtYXRjaCwgeW91IGNhbiB1c2UgdGhpcyBvcHRpb24gdG8KK3JlbW92ZSBpdC4gTmF0dXJhbGx5LCB0aGlzIGNoZWNrIGlzIHRoZXJlIGZvciB5b3VyCitwcm90ZWN0aW9uLCBzbyB0aGlzIHVzaW5nIG9wdGlvbiBpcyBkYW5nZXJvdXMgdW5sZXNzCit5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KKworVGhpcyBhcHBsaWVzIHRvIGFueSBtb2R1bGVzIGluc2VydGVkOiBib3RoIHRoZSBtb2R1bGUgKG9yCithbGlhcykgb24gdGhlIGNvbW1hbmQgbGluZSBhbmQgYW55IG1vZHVsZXMgb24gd2hpY2ggaXQgZGVwZW5kcy4KKy5UUAorXGZCLS1mb3JjZS1tb2R2ZXJzaW9uXGZSCitXaGVuIG1vZHVsZXMgYXJlIGNvbXBpbGVkIHdpdGggQ09ORklHX01PRFZFUlNJT05TIHNldCwgYQorc2VjdGlvbiBkZXRhaWxpbmcgdGhlIHZlcnNpb25zIG9mIGV2ZXJ5IGludGVyZmFjZWQgdXNlZAorYnkgKG9yIHN1cHBsaWVkIGJ5KSB0aGUgbW9kdWxlIGlzIGNyZWF0ZWQuIElmIGEKK21vZHVsZSBmYWlscyB0byBsb2FkIGFuZCB0aGUga2VybmVsIGNvbXBsYWlucyB0aGF0IHRoZQorbW9kdWxlIGRpc2FncmVlcyBhYm91dCBhIHZlcnNpb24gb2Ygc29tZSBpbnRlcmZhY2UsIHlvdQorY2FuIHVzZSAiLS1mb3JjZS1tb2R2ZXJzaW9uIiB0byByZW1vdmUgdGhlIHZlcnNpb24KK2luZm9ybWF0aW9uIGFsdG9nZXRoZXIuIE5hdHVyYWxseSwgdGhpcyBjaGVjayBpcyB0aGVyZQorZm9yIHlvdXIgcHJvdGVjdGlvbiwgc28gdXNpbmcgdGhpcyBvcHRpb24gaXMgZGFuZ2Vyb3VzCit1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcuCisKK1RoaXMgYXBwbGllcyBhbnkgbW9kdWxlcyBpbnNlcnRlZDogYm90aCB0aGUgbW9kdWxlIChvcgorYWxpYXMpIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGFueSBtb2R1bGVzIG9uIHdoaWNoIGl0IGRlcGVuZHMuCisuVFAKK1xmQi1mIC0tZm9yY2VcZlIKK1RyeSB0byBzdHJpcCBhbnkgdmVyc2lvbmluZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBtb2R1bGUKK3doaWNoIG1pZ2h0IG90aGVyd2lzZSBzdG9wIGl0IGZyb20gbG9hZGluZzogdGhpcyBpcyB0aGUKK3NhbWUgYXMgdXNpbmcgYm90aCBcZkItLWZvcmNlLXZlcm1hZ2ljXGZSIGFuZAorXGZCLS1mb3JjZS1tb2R2ZXJzaW9uXGZSXCYuIE5hdHVyYWxseSwgdGhlc2UKK2NoZWNrcyBhcmUgdGhlcmUgZm9yIHlvdXIgcHJvdGVjdGlvbiwgc28gdXNpbmcgdGhpcyBvcHRpb24KK2lzIGRhbmdlcm91cyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLgorCitUaGlzIGFwcGxpZXMgdG8gYW55IG1vZHVsZXMgaW5zZXJ0ZWQ6IGJvdGggdGhlIG1vZHVsZSAob3IKK2FsaWFzKSBvbiB0aGUgY29tbWFuZCBsaW5lIGFuZCBhbnkgbW9kdWxlcyBpdCBvbiB3aGljaCBpdCBkZXBlbmRzLgorLlRQCitcZkItaSAtLWlnbm9yZS1pbnN0YWxsIC0taWdub3JlLXJlbW92ZVxmUgorVGhpcyBvcHRpb24gY2F1c2VzIFxmQm1vZHByb2JlXGZSIHRvCitpZ25vcmUgXGZCaW5zdGFsbFxmUiBhbmQKK1xmQnJlbW92ZVxmUiBjb21tYW5kcyBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZSAoaWYgYW55KSBmb3IgdGhlIG1vZHVsZSBzcGVjaWZpZWQgb24gdGhlCitjb21tYW5kIGxpbmUgKGFueSBkZXBlbmRlbnQgbW9kdWxlcyBhcmUgc3RpbGwgc3ViamVjdAordG8gY29tbWFuZHMgc2V0IGZvciB0aGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGZpbGUpLiBCb3RoCitcZkJpbnN0YWxsXGZSIGFuZCBcZkJyZW1vdmVcZlIKK2NvbW1hbmRzIHdpbGwgY3VycmVudGx5IGJlIGlnbm9yZWQgd2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkCityZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHJlcXVlc3Qgd2FzIG1vcmUgc3BlY2lmaWNhbGx5CittYWRlIHdpdGggb25seSBvbmUgb3Igb3RoZXIgKGFuZCBub3QgYm90aCkgb2YKK1xmQi0taWdub3JlLWluc3RhbGxcZlIgb3IKK1xmQi0taWdub3JlLXJlbW92ZVxmUlwmLgorU2VlIFxmQm1vZHByb2JlLmNvbmZcZlIoNSlcJi4KKy5UUAorXGZCLWwgLS1saXN0XGZSCitMaXN0IGFsbCBtb2R1bGVzIG1hdGNoaW5nIHRoZSBnaXZlbiB3aWxkY2FyZCAob3IgIioiCitpZiBubyB3aWxkY2FyZCBpcyBnaXZlbikuIFRoaXMgb3B0aW9uIGlzIHByb3ZpZGVkIGZvcgorYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5kIG1heSBnbyBhd2F5IGluIGZ1dHVyZTogc2VlCitcZkJmaW5kXGZSKDEpIGFuZAorXGZCYmFzZW5hbWVcZlIoMSkgZm9yIGEgbW9yZSBmbGV4aWJsZSBhbHRlcm5hdGl2ZS4KKy5UUAorXGZCLW4gLS1kcnktcnVuXGZSCitUaGlzIG9wdGlvbiBkb2VzIGV2ZXJ5dGhpbmcgYnV0IGFjdHVhbGx5IGluc2VydCBvcgorZGVsZXRlIHRoZSBtb2R1bGVzIChvciBydW4gdGhlIGluc3RhbGwgb3IgcmVtb3ZlCitjb21tYW5kcykuIENvbWJpbmVkIHdpdGggXGZCLXZcZlIsIGl0IGlzCit1c2VmdWwgZm9yIGRlYnVnZ2luZyBwcm9ibGVtcy4gRm9yIGhpc3RvcmljYWwgcmVhc29ucworYm90aCBcZkItLWRyeS1ydW5cZlIgYW5kIFxmQi0tc2hvd1xmUgorYWN0dWFsbHkgbWVhbiB0aGUgc2FtZSB0aGluZyBhbmQgYXJlIGludGVyY2hhbmdlYWJsZS4KKy5UUAorXGZCLW8gLS1uYW1lXGZSCitUaGlzIG9wdGlvbiB0cmllcyB0byByZW5hbWUgdGhlIG1vZHVsZSB3aGljaCBpcyBiZWluZworaW5zZXJ0ZWQgaW50byB0aGUga2VybmVsLiBTb21lIHRlc3RpbmcgbW9kdWxlcyBjYW4KK3VzZWZ1bGx5IGJlIGluc2VydGVkIG11bHRpcGxlIHRpbWVzLCBidXQgdGhlIGtlcm5lbAorcmVmdXNlcyB0byBoYXZlIHR3byBtb2R1bGVzIG9mIHRoZSBzYW1lIG5hbWUuIE5vcm1hbGx5LAorbW9kdWxlcyBzaG91bGQgbm90IHJlcXVpcmUgbXVsdGlwbGUgaW5zZXJ0aW9ucywgYXMgdGhhdAord291bGQgbWFrZSB0aGVtIHVzZWxlc3MgaWYgdGhlcmUgd2VyZSBubyBtb2R1bGUgc3VwcG9ydC4KKy5UUAorXGZCLXEgLS1xdWlldFxmUgorV2l0aCB0aGlzIGZsYWcsIFxmQm1vZHByb2JlXGZSIHdvbid0IHByaW50IGFuIGVycm9yCittZXNzYWdlIGlmIHlvdSB0cnkgdG8gcmVtb3ZlIG9yIGluc2VydCBhIG1vZHVsZSBpdCBjYW4ndCBmaW5kIChhbmQKK2lzbid0IGFuIGFsaWFzIG9yCitcZkJpbnN0YWxsXGZSL1xmQnJlbW92ZVxmUiBjb21tYW5kKS4KK0hvd2V2ZXIsIGl0IHdpbGwgc3RpbGwgcmV0dXJuIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cy4gVGhlCitrZXJuZWwgdXNlcyB0aGlzIHRvIG9wcG9ydHVuaXN0aWNhbGx5IHByb2JlIGZvciBtb2R1bGVzIHdoaWNoIG1pZ2h0CitleGlzdCB1c2luZyByZXF1ZXN0X21vZHVsZS4KKy5UUAorXGZCLVIgLS1yZXNvbHZlLWFsaWFzXGZSCitQcmludCBhbGwgbW9kdWxlIG5hbWVzIG1hdGNoaW5nIGFuIGFsaWFzLiBUaGlzIGNhbiBiZSB1c2VmdWwKK2ZvciBkZWJ1Z2dpbmcgbW9kdWxlIGFsaWFzIHByb2JsZW1zLgorLlRQCitcZkItciAtLXJlbW92ZVxmUgorVGhpcyBvcHRpb24gY2F1c2VzIFxmQm1vZHByb2JlXGZSIHRvIHJlbW92ZQorcmF0aGVyIHRoYW4gaW5zZXJ0IGEgbW9kdWxlLiBJZiB0aGUgbW9kdWxlcyBpdCBkZXBlbmRzIG9uCithcmUgYWxzbyB1bnVzZWQsIFxmQm1vZHByb2JlXGZSIHdpbGwgdHJ5IHRvCityZW1vdmUgdGhlbSB0b28uIFVubGlrZSBpbnNlcnRpb24sIG1vcmUgdGhhbiBvbmUgbW9kdWxlCitjYW4gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgKGl0IGRvZXMgbm90IG1ha2UKK3NlbnNlIHRvIHNwZWNpZnkgbW9kdWxlIHBhcmFtZXRlcnMgd2hlbiByZW1vdmluZyBtb2R1bGVzKS4KKworVGhlcmUgaXMgdXN1YWxseSBubyByZWFzb24gdG8gcmVtb3ZlIG1vZHVsZXMsIGJ1dCBzb21lCitidWdneSBtb2R1bGVzIHJlcXVpcmUgaXQuIFlvdXIgZGlzdHJpYnV0aW9uIGtlcm5lbCBtYXkgbm90CitoYXZlIGJlZW4gYnVpbHQgdG8gc3VwcG9ydCByZW1vdmFsIG9mIG1vZHVsZXMgYXQgYWxsLgorLlRQCitcZkItUyAtLXNldC12ZXJzaW9uXGZSCitTZXQgdGhlIGtlcm5lbCB2ZXJzaW9uLCByYXRoZXIgdGhhbiB1c2luZworXGZCdW5hbWVcZlIoMikgdG8gZGVjaWRlIG9uIHRoZSBrZXJuZWwgdmVyc2lvbiAod2hpY2ggZGljdGF0ZXMgd2hlcmUgdG8KK2ZpbmQgdGhlIG1vZHVsZXMpLgorLlRQCitcZkItLXNob3ctZGVwZW5kc1xmUgorTGlzdCB0aGUgZGVwZW5kZW5jaWVzIG9mIGEgbW9kdWxlIChvciBhbGlhcyksIGluY2x1ZGluZwordGhlIG1vZHVsZSBpdHNlbGYuIFRoaXMgcHJvZHVjZXMgYSAocG9zc2libHkgZW1wdHkpIHNldAorb2YgbW9kdWxlIGZpbGVuYW1lcywgb25lIHBlciBsaW5lLCBlYWNoIHN0YXJ0aW5nIHdpdGgKKyJpbnNtb2QiIGFuZCBpcyB0eXBpY2FsbHkgdXNlZCBieSBkaXN0cmlidXRpb25zIHRvIGRldGVybWluZQord2hpY2ggbW9kdWxlcyB0byBpbmNsdWRlIHdoZW4gZ2VuZXJhdGluZyBpbml0cmQvaW5pdHJhbWZzIGltYWdlcy4KK1xmQkluc3RhbGwgY29tbWFuZHMgd2hpY2ggYXBwbHkgYXJlIHNob3duIHByZWZpeGVkIGJ5CisiaW5zdGFsbCIuIEl0IGRvZXMgbm90IHJ1biBhbnkgb2YgdGhlIGluc3RhbGwgY29tbWFuZHMuIE5vdGUgdGhhdAorbW9kaW5mbyg4KQorY2FuIGJlIHVzZWQgdG8gZXh0cmFjdCBkZXBlbmRlbmNpZXMgb2YgYSBtb2R1bGUgZnJvbSB0aGUKK21vZHVsZSBpdHNlbGYsIGJ1dCBrbm93cyBub3RoaW5nIG9mIGFsaWFzZXMgb3IgaW5zdGFsbCBjb21tYW5kcy4KK1xmUi5UUAorXGZCLXMgLS1zeXNsb2dcZlIKK1RoaXMgb3B0aW9uIGNhdXNlcyBhbnkgZXJyb3IgbWVzc2FnZXMgdG8gZ28gdGhyb3VnaCB0aGUKK3N5c2xvZyBtZWNoYW5pc20gKGFzIExPR19EQUVNT04gd2l0aCBsZXZlbCBMT0dfTk9USUNFKQorcmF0aGVyIHRoYW4gdG8gc3RhbmRhcmQgZXJyb3IuIFRoaXMgaXMgYWxzbyBhdXRvbWF0aWNhbGx5CitlbmFibGVkIHdoZW4gc3RkZXJyIGlzIHVuYXZhaWxhYmxlLgorCitUaGlzIG9wdGlvbiBpcyBwYXNzZWQgdGhyb3VnaCBcZkJpbnN0YWxsXGZSCitvciBcZkJyZW1vdmVcZlIgY29tbWFuZHMgdG8gb3RoZXIKK1xmQm1vZHByb2JlXGZSIGNvbW1hbmRzIGluIHRoZQorTU9EUFJPQkVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKy5UUAorXGZCLXQgLS10eXBlXGZSCitSZXN0cmljdCBcZkItbFxmUiB0byBtb2R1bGVzCitpbiBkaXJlY3RvcmllcyBtYXRjaGluZyB0aGUKK1xmSWRpcm5hbWVcZlIgZ2l2ZW4uIFRoaXMgb3B0aW9uCitpcyBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYW5kIG1heSBnbworYXdheSBpbiBmdXR1cmU6IHNlZQorXGZCZmluZFxmUigxKQorYW5kCitcZkJiYXNlbmFtZVxmUigxKSBmb3IgYSBtb3JlIGZsZXhpYmxlIGFsdGVybmF0aXZlLgorLlRQCitcZkItViAtLXZlcnNpb25cZlIKK1Nob3cgdmVyc2lvbiBvZiBwcm9ncmFtIGFuZCBleGl0LgorLlRQCitcZkItdiAtLXZlcmJvc2VcZlIKK1ByaW50IG1lc3NhZ2VzIGFib3V0IHdoYXQgdGhlIHByb2dyYW0gaXMgZG9pbmcuIFVzdWFsbHkKK1xmQm1vZHByb2JlXGZSIG9ubHkgcHJpbnRzIG1lc3NhZ2VzIGlmCitzb21ldGhpbmcgZ29lcyB3cm9uZy4KKworVGhpcyBvcHRpb24gaXMgcGFzc2VkIHRocm91Z2ggXGZCaW5zdGFsbFxmUgorb3IgXGZCcmVtb3ZlXGZSIGNvbW1hbmRzIHRvIG90aGVyCitcZkJtb2Rwcm9iZVxmUiBjb21tYW5kcyBpbiB0aGUKK01PRFBST0JFX09QVElPTlMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisuU0ggIkVOVklST05NRU5UIgorLlBQCitUaGUgTU9EUFJPQkVfT1BUSU9OUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBjYW4gYWxzbyBiZSB1c2VkIHRvCitwYXNzIGFyZ3VtZW50cyB0byBcZkJtb2Rwcm9iZVxmUlwmLgorLlNIICJDT1BZUklHSFQiCisuUFAKK1RoaXMgbWFudWFsIHBhZ2Ugb3JpZ2luYWxseSBDb3B5cmlnaHQgMjAwMiwgUnVzdHkgUnVzc2VsbCwgSUJNCitDb3Jwb3JhdGlvbi4gTWFpbnRhaW5lZCBieSBKb24gTWFzdGVycyBhbmQgb3RoZXJzLgorLlNIICJTRUUgQUxTTyIKKy5QUAorXGZCbW9kcHJvYmUuY29uZlxmUig1KSwKK1xmQm1vZHByb2JlLmRcZlIoNSksCitcZkJpbnNtb2RcZlIoOCksCitcZkJybW1vZFxmUig4KSwKK1xmQmxzbW9kXGZSKDgpLAorXGZCbW9kaW5mb1xmUig4KQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZHByb2JlLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kcHJvYmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYxNTFhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZHByb2JlLmMKQEAgLTAsMCArMSwxOTQzIEBACisvKiBtb2Rwcm9iZS5jOiBhZGQgb3IgcmVtb3ZlIGEgbW9kdWxlIGZyb20gdGhlIGtlcm5lbCwgaW50ZWxsaWdlbnRseS4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDEgIFJ1c3R5IFJ1c3NlbGwuCisgICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzICBSdXN0eSBSdXNzZWxsLCBJQk0gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisqLworI2RlZmluZSBfR05VX1NPVVJDRSAvKiBhc3ByaW50ZiAqLworCisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxlbGYuaD4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxmbm1hdGNoLmg+CisjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVkZSA8c3lzbG9nLmg+CisKKyNpbmNsdWRlICJ1dGlsLmgiCisjaW5jbHVkZSAiZWxmb3BzLmgiCisjaW5jbHVkZSAiemxpYnN1cHBvcnQuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAiaW5kZXguaCIKKyNpbmNsdWRlICJsaXN0LmgiCisjaW5jbHVkZSAiY29uZmlnX2ZpbHRlci5oIgorCisjaW5jbHVkZSAidGVzdGluZy5oIgorCitpbnQgdXNlX2JpbmFyeV9pbmRleGVzID0gMTsgLyogZGVmYXVsdCB0byBlbmFibGVkLiAqLworCisvKiBMaW1pdCBkb19zb2Z0ZGVwL2RvX21vZHByb2JlIHJlY3Vyc2lvbi4KKyAqIFRoaXMgaXMgYSBzaW1wbGUgd2F5IHRvIGhhbmRsZSBkZXBlbmRlbmN5IGxvb3BzCisgKiBjYXVzZWQgYnkgcG9vcmx5IHdyaXR0ZW4gc29mdGRlcCBjb21tYW5kcy4KKyAqLworc3RhdGljIGludCByZWN1cnNpb25fZGVwdGggPSAwOworY29uc3QgaW50IE1BWF9SRUNVUlNJT04gPSA1MDsgLyogQXJiaXRyYXJ5IGNob2ljZSAqLworCitleHRlcm4gbG9uZyBpbml0X21vZHVsZSh2b2lkICosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IGNoYXIgKik7CitleHRlcm4gbG9uZyBkZWxldGVfbW9kdWxlKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsKKworc3RydWN0IG1vZHVsZSB7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCWNoYXIgKm1vZG5hbWU7CisJY2hhciBmaWxlbmFtZVswXTsKK307CisKK3R5cGVkZWYgZW51bQoreworCW1pdF9yZW1vdmUgPSAxLAorCW1pdF9kcnlfcnVuID0gMiwKKwltaXRfZmlyc3RfdGltZSA9IDQsCisJbWl0X3VzZV9ibGFja2xpc3QgPSA4LAorCW1pdF9pZ25vcmVfY29tbWFuZHMgPSAxNiwKKwltaXRfaWdub3JlX2xvYWRlZCA9IDMyLAorCW1pdF9xdWlldF9pbnVzZSA9IDY0LAorCW1pdF9zdHJpcF92ZXJtYWdpYyA9IDEyOCwKKwltaXRfc3RyaXBfbW9kdmVyc2lvbiA9IDI1NiwKKwltaXRfcmVzb2x2ZV9hbGlhcyA9IDUxMgorCit9IG1vZHByb2JlX2ZsYWdzX3Q7CisKKyNpZm5kZWYgTU9EVUxFX0RJUgorI2RlZmluZSBNT0RVTEVfRElSICIvbGliL21vZHVsZXMiCisjZW5kaWYKKworc3RhdGljIHZvaWQgcHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCit7CisJZnByaW50ZihzdGRlcnIsCisJCSJVc2FnZTogJXMgWy12XSBbLVZdIFstQyBjb25maWctZmlsZV0gWy1kIDxkaXJuYW1lPiBdIFstbl0gWy1pXSBbLXFdIFstYl0gWy1vIDxtb2RuYW1lPl0gWyAtLWR1bXAtbW9kdmVyc2lvbnMgXSA8bW9kbmFtZT4gW3BhcmFtZXRlcnMuLi5dXG4iCisJCSIlcyAtciBbLW5dIFstaV0gWy12XSA8bW9kdWxlbmFtZT4gLi4uXG4iCisJCSIlcyAtbCAtdCA8ZGlybmFtZT4gWyAtYSA8bW9kdWxlbmFtZT4gLi4uXVxuIiwKKwkJcHJvZ25hbWUsIHByb2duYW1lLCBwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworc3RhdGljIHN0cnVjdCBtb2R1bGUgKmZpbmRfbW9kdWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQoreworCXN0cnVjdCBtb2R1bGUgKmk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGksIGxpc3QsIGxpc3QpIHsKKwkJaWYgKHN0cmVxKGktPmZpbGVuYW1lLCBmaWxlbmFtZSkpCisJCQlyZXR1cm4gaTsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9tb2R1bGUoY2hhciAqZmlsZW5hbWUsIGludCBuYW1lbGVuLCBzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0KQoreworCXN0cnVjdCBtb2R1bGUgKm1vZDsKKworCS8qIElmIGl0J3MgYSBkdXBsaWNhdGU6IG1vdmUgaXQgdG8gdGhlIGVuZCwgc28gaXQgZ2V0cworCSAgIGluc2VydGVkIHdoZXJlIGl0IGlzICpmaXJzdCogcmVxdWlyZWQuICovCisJbW9kID0gZmluZF9tb2R1bGUoZmlsZW5hbWUsIGxpc3QpOworCWlmIChtb2QpCisJCWxpc3RfZGVsKCZtb2QtPmxpc3QpOworCWVsc2UgeworCQkvKiBObyBtYXRjaC4gIENyZWF0ZSBhIG5ldyBtb2R1bGUuICovCisJCW1vZCA9IE5PRkFJTChtYWxsb2Moc2l6ZW9mKHN0cnVjdCBtb2R1bGUpICsgbmFtZWxlbiArIDEpKTsKKwkJbWVtY3B5KG1vZC0+ZmlsZW5hbWUsIGZpbGVuYW1lLCBuYW1lbGVuKTsKKwkJbW9kLT5maWxlbmFtZVtuYW1lbGVuXSA9ICdcMCc7CisJCW1vZC0+bW9kbmFtZSA9IE5PRkFJTChtYWxsb2MobmFtZWxlbiArIDEpKTsKKwkJZmlsZW5hbWUybW9kbmFtZShtb2QtPm1vZG5hbWUsIG1vZC0+ZmlsZW5hbWUpOworCX0KKworCWxpc3RfYWRkX3RhaWwoJm1vZC0+bGlzdCwgbGlzdCk7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfbW9kdWxlKHN0cnVjdCBtb2R1bGUgKm1vZCkKK3sKKwlmcmVlKG1vZC0+bW9kbmFtZSk7CisJZnJlZShtb2QpOworfQorCisvKiBDb21wYXJlIGxlbiBjaGFycyBvZiBhIHRvIGIsIHdpdGggXyBhbmQgLSBlcXVpdmFsZW50LiAqLworc3RhdGljIGludCBtb2RuYW1lX2VxdWFsKGNvbnN0IGNoYXIgKmEsIGNvbnN0IGNoYXIgKmIsIHVuc2lnbmVkIGludCBsZW4pCit7CisJdW5zaWduZWQgaW50IGk7CisKKwlpZiAoc3RybGVuKGIpICE9IGxlbikKKwkJcmV0dXJuIDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKwkJaWYgKChhW2ldID09ICdfJyB8fCBhW2ldID09ICctJykKKwkJICAgICYmIChiW2ldID09ICdfJyB8fCBiW2ldID09ICctJykpCisJCQljb250aW51ZTsKKwkJaWYgKGFbaV0gIT0gYltpXSkKKwkJCXJldHVybiAwOworCX0KKwlyZXR1cm4gMTsKK30KKworLyogRmlsbHMgaW4gbGlzdCBvZiBtb2R1bGVzIGlmIHRoaXMgaXMgdGhlIGxpbmUgd2Ugd2FudC4gKi8KK3N0YXRpYyBpbnQgYWRkX21vZHVsZXNfZGVwX2xpbmUoY2hhciAqbGluZSwKKwkJCQljb25zdCBjaGFyICpuYW1lLAorCQkJCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCQkJY29uc3QgY2hhciAqZGlybmFtZSkKK3sKKwljaGFyICpwdHI7CisJaW50IGxlbjsKKwljaGFyICptb2RuYW1lLCAqZnVsbHBhdGg7CisKKwkvKiBJZ25vcmUgbGluZXMgd2l0aG91dCA6IG9yIHdoaWNoIHN0YXJ0IHdpdGggYSAjICovCisJcHRyID0gc3RyY2hyKGxpbmUsICc6Jyk7CisJaWYgKHB0ciA9PSBOVUxMIHx8IGxpbmVbc3Ryc3BuKGxpbmUsICJcdCAiKV0gPT0gJyMnKQorCQlyZXR1cm4gMDsKKworCS8qIElzIHRoaXMgdGhlIG1vZHVsZSB3ZSBhcmUgbG9va2luZyBmb3I/ICovCisJKnB0ciA9ICdcMCc7CisJbW9kbmFtZSA9IG15X2Jhc2VuYW1lKGxpbmUpOworCisJbGVuID0gc3RybGVuKG1vZG5hbWUpOworCWlmIChzdHJjaHIobW9kbmFtZSwgJy4nKSkKKwkJbGVuID0gc3RyY2hyKG1vZG5hbWUsICcuJykgLSBtb2RuYW1lOworCWlmICghbW9kbmFtZV9lcXVhbChtb2RuYW1lLCBuYW1lLCBsZW4pKQorCQlyZXR1cm4gMDsKKworCS8qIENyZWF0ZSB0aGUgbGlzdC4gKi8KKwlpZiAoJy8nID09IGxpbmVbMF0pIHsJLyogb2xkIHN0eWxlIGRlcHMgLSBhYnNvbHV0ZSBwYXRoIHNwZWNpZmllZCAqLworCQlhZGRfbW9kdWxlKGxpbmUsIHB0ciAtIGxpbmUsIGxpc3QpOworCX0gZWxzZSB7CisJCW5vZmFpbF9hc3ByaW50ZigmZnVsbHBhdGgsICIlcy8lcyIsIGRpcm5hbWUsIGxpbmUpOworCQlhZGRfbW9kdWxlKGZ1bGxwYXRoLCBzdHJsZW4oZGlybmFtZSkrMSsocHRyIC0gbGluZSksIGxpc3QpOworCQlmcmVlKGZ1bGxwYXRoKTsKKwl9CisKKwlwdHIrKzsKKwlmb3IoOzspIHsKKwkJY2hhciAqZGVwX3N0YXJ0OworCQlwdHIgKz0gc3Ryc3BuKHB0ciwgIiBcdCIpOworCQlpZiAoKnB0ciA9PSAnXDAnKQorCQkJYnJlYWs7CisJCWRlcF9zdGFydCA9IHB0cjsKKwkJcHRyICs9IHN0cmNzcG4ocHRyLCAiIFx0Iik7CisJCWlmICgnLycgPT0gZGVwX3N0YXJ0WzBdKSB7CS8qIG9sZCBzdHlsZSBkZXBzICovCisJCQlhZGRfbW9kdWxlKGRlcF9zdGFydCwgcHRyIC0gZGVwX3N0YXJ0LCBsaXN0KTsKKwkJfSBlbHNlIHsKKwkJCW5vZmFpbF9hc3ByaW50ZigmZnVsbHBhdGgsICIlcy8lcyIsIGRpcm5hbWUsIGRlcF9zdGFydCk7CisJCQlhZGRfbW9kdWxlKGZ1bGxwYXRoLAorCQkJCSAgIHN0cmxlbihkaXJuYW1lKSsxKyhwdHIgLSBkZXBfc3RhcnQpLCBsaXN0KTsKKwkJCWZyZWUoZnVsbHBhdGgpOworCQl9CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHJlYWRfZGVwZW5kc19maWxlKGNvbnN0IGNoYXIgKmRpcm5hbWUsCisJCQkgICAgIGNvbnN0IGNoYXIgKnN0YXJ0X25hbWUsCisJCQkgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpCit7CisJY2hhciAqbW9kdWxlc19kZXBfbmFtZTsKKwljaGFyICpsaW5lOworCXN0cnVjdCBpbmRleF9maWxlICptb2R1bGVzX2RlcDsKKworCW5vZmFpbF9hc3ByaW50ZigmbW9kdWxlc19kZXBfbmFtZSwgIiVzLyVzIiwgZGlybmFtZSwgIm1vZHVsZXMuZGVwLmJpbiIpOworCW1vZHVsZXNfZGVwID0gaW5kZXhfZmlsZV9vcGVuKG1vZHVsZXNfZGVwX25hbWUpOworCWlmICghbW9kdWxlc19kZXApIHsKKwkJZnJlZShtb2R1bGVzX2RlcF9uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCisJbGluZSA9IGluZGV4X3NlYXJjaChtb2R1bGVzX2RlcCwgc3RhcnRfbmFtZSk7CisJaWYgKGxpbmUpIHsKKwkJLyogVmFsdWUgaXMgc3RhbmRhcmQgZGVwZW5kZW5jeSBsaW5lIGZvcm1hdCAqLworCQlpZiAoIWFkZF9tb2R1bGVzX2RlcF9saW5lKGxpbmUsIHN0YXJ0X25hbWUsIGxpc3QsIGRpcm5hbWUpKQorCQkJZmF0YWwoIk1vZHVsZSBpbmRleCBpcyBpbmNvbnNpc3RlbnRcbiIpOworCQlmcmVlKGxpbmUpOworCX0KKworCWluZGV4X2ZpbGVfY2xvc2UobW9kdWxlc19kZXApOworCWZyZWUobW9kdWxlc19kZXBfbmFtZSk7CisJCisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIHJlYWRfZGVwZW5kcyhjb25zdCBjaGFyICpkaXJuYW1lLAorCQkJIGNvbnN0IGNoYXIgKnN0YXJ0X25hbWUsCisJCQkgc3RydWN0IGxpc3RfaGVhZCAqbGlzdCkKK3sKKwljaGFyICptb2R1bGVzX2RlcF9uYW1lOworCWNoYXIgKmxpbmU7CisJRklMRSAqbW9kdWxlc19kZXA7CisJaW50IGRvbmUgPSAwOworCisJaWYgKHVzZV9iaW5hcnlfaW5kZXhlcykKKwkJaWYgKHJlYWRfZGVwZW5kc19maWxlKGRpcm5hbWUsIHN0YXJ0X25hbWUsIGxpc3QpKQorCQkJcmV0dXJuOworCisJbm9mYWlsX2FzcHJpbnRmKCZtb2R1bGVzX2RlcF9uYW1lLCAiJXMvJXMiLCBkaXJuYW1lLCAibW9kdWxlcy5kZXAiKTsKKwltb2R1bGVzX2RlcCA9IGZvcGVuKG1vZHVsZXNfZGVwX25hbWUsICJyIik7CisJaWYgKCFtb2R1bGVzX2RlcCkKKwkJZmF0YWwoIkNvdWxkIG5vdCBsb2FkICVzOiAlc1xuIiwKKwkJICAgICAgbW9kdWxlc19kZXBfbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKworCS8qIFN0b3AgYXQgZmlyc3QgbGluZSwgYXMgd2UgY2FuIGhhdmUgZHVwbGljYXRlcyAoZWcuIHN5bWxpbmtzCisgICAgICAgICAgIGZyb20gYm9vdC8gKi8KKwl3aGlsZSAoIWRvbmUgJiYgKGxpbmUgPSBnZXRsaW5lX3dyYXBwZWQobW9kdWxlc19kZXAsIE5VTEwpKSAhPSBOVUxMKSB7CisJCWRvbmUgPSBhZGRfbW9kdWxlc19kZXBfbGluZShsaW5lLCBzdGFydF9uYW1lLCBsaXN0LCBkaXJuYW1lKTsKKwkJZnJlZShsaW5lKTsKKwl9CisJZmNsb3NlKG1vZHVsZXNfZGVwKTsKKwlmcmVlKG1vZHVsZXNfZGVwX25hbWUpOworfQorCisvKiBXZSB1c2UgZXJyb3IgbnVtYmVycyBpbiBhIGxvb3NlIHRyYW5zbGF0aW9uLi4uICovCitzdGF0aWMgY29uc3QgY2hhciAqaW5zZXJ0X21vZGVycm9yKGludCBlcnIpCit7CisJc3dpdGNoIChlcnIpIHsKKwljYXNlIEVOT0VYRUM6CisJCXJldHVybiAiSW52YWxpZCBtb2R1bGUgZm9ybWF0IjsKKwljYXNlIEVOT0VOVDoKKwkJcmV0dXJuICJVbmtub3duIHN5bWJvbCBpbiBtb2R1bGUsIG9yIHVua25vd24gcGFyYW1ldGVyIChzZWUgZG1lc2cpIjsKKwljYXNlIEVOT1NZUzoKKwkJcmV0dXJuICJLZXJuZWwgZG9lcyBub3QgaGF2ZSBtb2R1bGUgc3VwcG9ydCI7CisJZGVmYXVsdDoKKwkJcmV0dXJuIHN0cmVycm9yKGVycik7CisJfQorfQorCitzdGF0aWMgY29uc3QgY2hhciAqcmVtb3ZlX21vZGVycm9yKGludCBlcnIpCit7CisJc3dpdGNoIChlcnIpIHsKKwljYXNlIEVOT0VOVDoKKwkJcmV0dXJuICJObyBzdWNoIG1vZHVsZSI7CisJY2FzZSBFTk9TWVM6CisJCXJldHVybiAiS2VybmVsIGRvZXMgbm90IGhhdmUgbW9kdWxlIHVubG9hZGluZyBzdXBwb3J0IjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gc3RyZXJyb3IoZXJyKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHJlcGxhY2VfbW9kbmFtZShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwKKwkJCSAgICB2b2lkICptZW0sIHVuc2lnbmVkIGxvbmcgbGVuLAorCQkJICAgIGNvbnN0IGNoYXIgKm9sZG5hbWUsIGNvbnN0IGNoYXIgKm5ld25hbWUpCit7CisJY2hhciAqcDsKKworCS8qIDY0IC0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpIC0gMSAqLworCWlmIChzdHJsZW4obmV3bmFtZSkgPiA1NSkKKwkJZmF0YWwoIk5ldyBuYW1lICVzIGlzIHRvbyBsb25nXG4iLCBuZXduYW1lKTsKKworCS8qIEZpbmQgd2hlcmUgaXQgaXMgaW4gdGhlIG1vZHVsZSBzdHJ1Y3R1cmUuICBEb24ndCBhc3N1bWUgbGF5b3V0ISAqLworCWZvciAocCA9IG1lbTsgcCA8IChjaGFyICopbWVtICsgbGVuIC0gc3RybGVuKG9sZG5hbWUpOyBwKyspIHsKKwkJaWYgKG1lbWNtcChwLCBvbGRuYW1lLCBzdHJsZW4ob2xkbmFtZSkpID09IDApIHsKKwkJCXN0cmNweShwLCBuZXduYW1lKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCXdhcm4oIkNvdWxkIG5vdCBmaW5kIG9sZCBuYW1lIGluICVzIHRvIHJlcGxhY2UhXG4iLCBtb2R1bGUtPnBhdGhuYW1lKTsKK30KKworc3RhdGljIHZvaWQgcmVuYW1lX21vZHVsZShzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZSwKKwkJCSAgY29uc3QgY2hhciAqb2xkbmFtZSwKKwkJCSAgY29uc3QgY2hhciAqbmV3bmFtZSkKK3sKKwl2b2lkICptb2RzdHJ1Y3Q7CisJdW5zaWduZWQgbG9uZyBsZW47CisKKwkvKiBPbGQtc3R5bGUgKi8KKwltb2RzdHJ1Y3QgPSBtb2R1bGUtPm9wcy0+bG9hZF9zZWN0aW9uKG1vZHVsZSwKKwkJIi5nbnUubGlua29uY2UudGhpc19tb2R1bGUiLCAmbGVuKTsKKwkvKiBOZXctc3R5bGUgKi8KKwlpZiAoIW1vZHN0cnVjdCkKKwkJbW9kc3RydWN0ID0gbW9kdWxlLT5vcHMtPmxvYWRfc2VjdGlvbihtb2R1bGUsICJfX21vZHVsZSIsICZsZW4pOworCWlmICghbW9kc3RydWN0KQorCQl3YXJuKCJDb3VsZCBub3QgZmluZCBtb2R1bGUgbmFtZSB0byBjaGFuZ2UgaW4gJXNcbiIsCisJCSAgICAgbW9kdWxlLT5wYXRobmFtZSk7CisJZWxzZQorCQlyZXBsYWNlX21vZG5hbWUobW9kdWxlLCBtb2RzdHJ1Y3QsIGxlbiwgb2xkbmFtZSwgbmV3bmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX21hZ2ljKHN0cnVjdCBlbGZfZmlsZSAqbW9kdWxlKQoreworCXN0cnVjdCBzdHJpbmdfdGFibGUgKnRibDsKKwlpbnQgajsKKworCS8qIE9sZC1zdHlsZTogX192ZXJtYWdpYyBzZWN0aW9uICovCisJbW9kdWxlLT5vcHMtPnN0cmlwX3NlY3Rpb24obW9kdWxlLCAiX192ZXJtYWdpYyIpOworCisJLyogTmV3LXN0eWxlOiBpbiAubW9kaW5mbyBzZWN0aW9uICovCisJdGJsID0gbW9kdWxlLT5vcHMtPmxvYWRfc3RyaW5ncyhtb2R1bGUsICIubW9kaW5mbyIsIE5VTEwpOworCWZvciAoaiA9IDA7IHRibCAmJiBqIDwgdGJsLT5jbnQ7IGorKykgeworCQljb25zdCBjaGFyICpwID0gdGJsLT5zdHJbal07CisJCWlmIChzdHJzdGFydHMocCwgInZlcm1hZ2ljPSIpKSB7CisJCQltZW1zZXQoKGNoYXIgKilwLCAwLCBzdHJsZW4ocCkpOworCQkJcmV0dXJuOworCQl9CisJfQorfQorCitzdHJ1Y3QgbW9kdWxlX29wdGlvbnMKK3sKKwlzdHJ1Y3QgbW9kdWxlX29wdGlvbnMgKm5leHQ7CisJY2hhciAqbW9kdWxlbmFtZTsKKwljaGFyICpvcHRpb25zOworfTsKKworc3RydWN0IG1vZHVsZV9jb21tYW5kCit7CisJc3RydWN0IG1vZHVsZV9jb21tYW5kICpuZXh0OworCWNoYXIgKm1vZHVsZW5hbWU7CisJY2hhciAqY29tbWFuZDsKK307CisKK3N0cnVjdCBtb2R1bGVfYWxpYXMKK3sKKwlzdHJ1Y3QgbW9kdWxlX2FsaWFzICpuZXh0OworCWNoYXIgKmFsaWFzbmFtZTsKKwljaGFyICptb2R1bGU7Cit9OworCitzdHJ1Y3QgbW9kdWxlX2JsYWNrbGlzdAoreworCXN0cnVjdCBtb2R1bGVfYmxhY2tsaXN0ICpuZXh0OworCWNoYXIgKm1vZHVsZW5hbWU7Cit9OworCitzdHJ1Y3QgbW9kdWxlX3NvZnRkZXAKK3sKKwlzdHJ1Y3QgbW9kdWxlX3NvZnRkZXAgKm5leHQ7CisJY2hhciAqYnVmOworCS8qIFRoZSBtb2RuYW1lIGFuZCBzdHJpbmcgdGFibGVzIHBvaW50IHRvIGJ1Zi4gKi8KKwljaGFyICptb2RuYW1lOworCXN0cnVjdCBzdHJpbmdfdGFibGUgKnByZTsKKwlzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpwb3N0OworfTsKKworc3RydWN0IG1vZHByb2JlX2NvbmYKK3sKKwlzdHJ1Y3QgbW9kdWxlX29wdGlvbnMgKm9wdGlvbnM7CisJc3RydWN0IG1vZHVsZV9jb21tYW5kICpjb21tYW5kczsKKwlzdHJ1Y3QgbW9kdWxlX2FsaWFzICphbGlhc2VzOworCXN0cnVjdCBtb2R1bGVfYmxhY2tsaXN0ICpibGFja2xpc3Q7CisJc3RydWN0IG1vZHVsZV9zb2Z0ZGVwICpzb2Z0ZGVwczsKK307CisKKy8qIExpbmsgaW4gYSBuZXcgb3B0aW9uIGxpbmUgZnJvbSB0aGUgY29uZmlnIGZpbGUuICovCitzdGF0aWMgc3RydWN0IG1vZHVsZV9vcHRpb25zICoKK2FkZF9vcHRpb25zKGNvbnN0IGNoYXIgKm1vZG5hbWUsCisJICAgIGNvbnN0IGNoYXIgKm9wdGlvbiwKKwkgICAgc3RydWN0IG1vZHVsZV9vcHRpb25zICpvcHRpb25zKQoreworCXN0cnVjdCBtb2R1bGVfb3B0aW9ucyAqbmV3OworCWNoYXIgKnRhYjsgCisKKwluZXcgPSBOT0ZBSUwobWFsbG9jKHNpemVvZigqbmV3KSkpOworCW5ldy0+bW9kdWxlbmFtZSA9IE5PRkFJTChzdHJkdXAobW9kbmFtZSkpOworCW5ldy0+b3B0aW9ucyA9IE5PRkFJTChzdHJkdXAob3B0aW9uKSk7CisJLyogV2UgY2FuIGhhbmRsZSB0YWJzLCBrZXJuZWwgY2FuJ3QuICovCisJZm9yICh0YWIgPSBzdHJjaHIobmV3LT5vcHRpb25zLCAnXHQnKTsgdGFiOyB0YWIgPSBzdHJjaHIodGFiLCAnXHQnKSkKKwkJKnRhYiA9ICcgJzsKKwluZXctPm5leHQgPSBvcHRpb25zOworCXJldHVybiBuZXc7Cit9CisKKy8qIExpbmsgaW4gYSBuZXcgaW5zdGFsbCBsaW5lIGZyb20gdGhlIGNvbmZpZyBmaWxlLiAqLworc3RhdGljIHN0cnVjdCBtb2R1bGVfY29tbWFuZCAqCithZGRfY29tbWFuZChjb25zdCBjaGFyICptb2RuYW1lLAorCSAgICAgICBjb25zdCBjaGFyICpjb21tYW5kLAorCSAgICAgICBzdHJ1Y3QgbW9kdWxlX2NvbW1hbmQgKmNvbW1hbmRzKQoreworCXN0cnVjdCBtb2R1bGVfY29tbWFuZCAqbmV3OworCisJbmV3ID0gTk9GQUlMKG1hbGxvYyhzaXplb2YoKm5ldykpKTsKKwluZXctPm1vZHVsZW5hbWUgPSBOT0ZBSUwoc3RyZHVwKG1vZG5hbWUpKTsKKwluZXctPmNvbW1hbmQgPSBOT0ZBSUwoc3RyZHVwKGNvbW1hbmQpKTsKKwluZXctPm5leHQgPSBjb21tYW5kczsKKwlyZXR1cm4gbmV3OworfQorCisvKiBMaW5rIGluIGEgbmV3IGFsaWFzIGxpbmUgZnJvbSB0aGUgY29uZmlnIGZpbGUuICovCitzdGF0aWMgc3RydWN0IG1vZHVsZV9hbGlhcyAqCithZGRfYWxpYXMoY29uc3QgY2hhciAqYWxpYXNuYW1lLCBjb25zdCBjaGFyICptb2RuYW1lLCBzdHJ1Y3QgbW9kdWxlX2FsaWFzICphbGlhc2VzKQoreworCXN0cnVjdCBtb2R1bGVfYWxpYXMgKm5ldzsKKworCW5ldyA9IE5PRkFJTChtYWxsb2Moc2l6ZW9mKCpuZXcpKSk7CisJbmV3LT5hbGlhc25hbWUgPSBOT0ZBSUwoc3RyZHVwKGFsaWFzbmFtZSkpOworCW5ldy0+bW9kdWxlID0gTk9GQUlMKHN0cmR1cChtb2RuYW1lKSk7CisJbmV3LT5uZXh0ID0gYWxpYXNlczsKKwlyZXR1cm4gbmV3OworfQorCisKKy8qIFJldHVybiBhIGxpc3Qgb2YgbWF0Y2hpbmcgYWxpYXNlcyAqLworc3RhdGljIHN0cnVjdCBtb2R1bGVfYWxpYXMgKgorZmluZF9hbGlhc2VzKGNvbnN0IHN0cnVjdCBtb2R1bGVfYWxpYXMgKmFsaWFzZXMsCisJICAgICBjb25zdCBjaGFyICpuYW1lKQoreworCXN0cnVjdCBtb2R1bGVfYWxpYXMgKnJlc3VsdCA9IE5VTEw7CisJd2hpbGUgKGFsaWFzZXMpIHsKKwkJY2hhciAqYWxpYXNuYW1lID0gYWxpYXNlcy0+YWxpYXNuYW1lOworCQljaGFyICptb2RuYW1lID0gYWxpYXNlcy0+bW9kdWxlOworCQlpZiAoZm5tYXRjaChhbGlhc25hbWUsIG5hbWUsIDApID09IDApCisJCQlyZXN1bHQgPSBhZGRfYWxpYXMoYWxpYXNuYW1lLCBtb2RuYW1lLCByZXN1bHQpOworCQlhbGlhc2VzID0gYWxpYXNlcy0+bmV4dDsKKwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQgZnJlZV9hbGlhc2VzKHN0cnVjdCBtb2R1bGVfYWxpYXMgKmFsaWFzX2xpc3QpCit7CisJd2hpbGUgKGFsaWFzX2xpc3QpIHsKKwkJc3RydWN0IG1vZHVsZV9hbGlhcyAqYWxpYXM7CisKKwkJYWxpYXMgPSBhbGlhc19saXN0OworCQlhbGlhc19saXN0ID0gYWxpYXNfbGlzdC0+bmV4dDsKKworCQlmcmVlKGFsaWFzLT5hbGlhc25hbWUpOworCQlmcmVlKGFsaWFzLT5tb2R1bGUpOworCQlmcmVlKGFsaWFzKTsKKwl9Cit9CisKKy8qIExpbmsgaW4gYSBuZXcgYmxhY2tsaXN0IGxpbmUgZnJvbSB0aGUgY29uZmlnIGZpbGUuICovCitzdGF0aWMgc3RydWN0IG1vZHVsZV9ibGFja2xpc3QgKgorYWRkX2JsYWNrbGlzdChjb25zdCBjaGFyICptb2RuYW1lLCBzdHJ1Y3QgbW9kdWxlX2JsYWNrbGlzdCAqYmxhY2tsaXN0KQoreworCXN0cnVjdCBtb2R1bGVfYmxhY2tsaXN0ICpuZXc7CisKKwluZXcgPSBOT0ZBSUwobWFsbG9jKHNpemVvZigqbmV3KSkpOworCW5ldy0+bW9kdWxlbmFtZSA9IE5PRkFJTChzdHJkdXAobW9kbmFtZSkpOworCW5ldy0+bmV4dCA9IGJsYWNrbGlzdDsKKwlyZXR1cm4gbmV3OworfQorCisvKiBGaW5kIGJsYWNrbGlzdCBjb21tYW5kcyBpZiBhbnkuICovCitzdGF0aWMgaW50CitmaW5kX2JsYWNrbGlzdChjb25zdCBjaGFyICptb2RuYW1lLCBjb25zdCBzdHJ1Y3QgbW9kdWxlX2JsYWNrbGlzdCAqYmxhY2tsaXN0KQoreworCXdoaWxlIChibGFja2xpc3QpIHsKKwkJaWYgKHN0cmVxKGJsYWNrbGlzdC0+bW9kdWxlbmFtZSwgbW9kbmFtZSkpCisJCQlyZXR1cm4gMTsKKwkJYmxhY2tsaXN0ID0gYmxhY2tsaXN0LT5uZXh0OworCX0KKwlyZXR1cm4gMDsKK30KKworLyogZGVsZXRlIGJhY2tsaXN0ZWQgZWxlbXMgZnJvbSBhIGxpc3Qgb2YgYWxpYXNlcyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2JsYWNrbGlzdChzdHJ1Y3QgbW9kdWxlX2FsaWFzICoqYWxpYXNlcywKKwkJY29uc3Qgc3RydWN0IG1vZHVsZV9ibGFja2xpc3QgKmJsYWNrbGlzdCkKK3sKKwlzdHJ1Y3QgbW9kdWxlX2FsaWFzICpyZXN1bHQgPSBOVUxMOworCXN0cnVjdCBtb2R1bGVfYWxpYXMgKmFsaWFzID0gKmFsaWFzZXM7CisJd2hpbGUgKGFsaWFzKSB7CisJCWNoYXIgKm1vZG5hbWUgPSBhbGlhcy0+bW9kdWxlOworCQlpZiAoIWZpbmRfYmxhY2tsaXN0KG1vZG5hbWUsIGJsYWNrbGlzdCkpCisJCQlyZXN1bHQgPSBhZGRfYWxpYXMoYWxpYXMtPmFsaWFzbmFtZSwgbW9kbmFtZSwgcmVzdWx0KTsKKwkJYWxpYXMgPSBhbGlhcy0+bmV4dDsKKwl9CisJZnJlZV9hbGlhc2VzKCphbGlhc2VzKTsKKwkqYWxpYXNlcyA9IHJlc3VsdDsKK30KKworLyogRmluZCBpbnN0YWxsIGNvbW1hbmRzIGlmIGFueS4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICpmaW5kX2NvbW1hbmQoY29uc3QgY2hhciAqbW9kbmFtZSwKKwkJCQljb25zdCBzdHJ1Y3QgbW9kdWxlX2NvbW1hbmQgKmNvbW1hbmRzKQoreworCXdoaWxlIChjb21tYW5kcykgeworCQlpZiAoZm5tYXRjaChjb21tYW5kcy0+bW9kdWxlbmFtZSwgbW9kbmFtZSwgMCkgPT0gMCkKKwkJCXJldHVybiBjb21tYW5kcy0+Y29tbWFuZDsKKwkJY29tbWFuZHMgPSBjb21tYW5kcy0+bmV4dDsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qIEZpbmQgc29mdCBkZXBlbmRlbmNpZXMsIGlmIGFueS4gKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbW9kdWxlX3NvZnRkZXAgKgorZmluZF9zb2Z0ZGVwKGNvbnN0IGNoYXIgKm1vZG5hbWUsIGNvbnN0IHN0cnVjdCBtb2R1bGVfc29mdGRlcCAqc29mdGRlcHMpCit7CisJd2hpbGUgKHNvZnRkZXBzKSB7CisJCWlmIChmbm1hdGNoKHNvZnRkZXBzLT5tb2RuYW1lLCBtb2RuYW1lLCAwKSA9PSAwKQorCQkJcmV0dXJuIHNvZnRkZXBzOworCQlzb2Z0ZGVwcyA9IHNvZnRkZXBzLT5uZXh0OworCX0KKwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNoYXIgKmFwcGVuZF9vcHRpb24oY2hhciAqb3B0aW9ucywgY29uc3QgY2hhciAqbmV3b3B0aW9uKQoreworCW9wdGlvbnMgPSBOT0ZBSUwocmVhbGxvYyhvcHRpb25zLCBzdHJsZW4ob3B0aW9ucykgKyAxCisJCQkJICsgc3RybGVuKG5ld29wdGlvbikgKyAxKSk7CisJaWYgKHN0cmxlbihvcHRpb25zKSkgc3RyY2F0KG9wdGlvbnMsICIgIik7CisJc3RyY2F0KG9wdGlvbnMsIG5ld29wdGlvbik7CisJcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBjaGFyICpwcmVwZW5kX29wdGlvbihjaGFyICpvcHRpb25zLCBjb25zdCBjaGFyICpuZXdvcHRpb24pCit7CisJc2l6ZV90IGwxLCBsMjsKKwlsMSA9IHN0cmxlbihvcHRpb25zKTsKKwlsMiA9IHN0cmxlbihuZXdvcHRpb24pOworCS8qIHRoZSByZXN1bHRpbmcgc3RyaW5nIHdpbGwgbG9vayBsaWtlCisJICogbmV3b3B0aW9uICsgJyAnICsgb3B0aW9ucyArICdcMCcgKi8KKwlpZiAobDEpIHsKKwkJb3B0aW9ucyA9IE5PRkFJTChyZWFsbG9jKG9wdGlvbnMsIGwyICsgMSArIGwxICsgMSkpOworCQltZW1tb3ZlKG9wdGlvbnMgKyBsMiArIDEsIG9wdGlvbnMsIGwxICsgMSk7CisJCW9wdGlvbnNbbDJdID0gJyAnOworCQltZW1jcHkob3B0aW9ucywgbmV3b3B0aW9uLCBsMik7CisJfSBlbHNlIHsKKwkJb3B0aW9ucyA9IE5PRkFJTChyZWFsbG9jKG9wdGlvbnMsIGwyICsgMSkpOworCQltZW1jcHkob3B0aW9ucywgbmV3b3B0aW9uLCBsMik7CisJCW9wdGlvbnNbbDJdID0gJ1wwJzsKKwl9CisJcmV0dXJuIG9wdGlvbnM7Cit9CisKKy8qIEFkZCB0byBvcHRpb25zICovCitzdGF0aWMgY2hhciAqYWRkX2V4dHJhX29wdGlvbnMoY29uc3QgY2hhciAqbW9kbmFtZSwKKwkJCSAgICAgICBjb25zdCBjaGFyICpvcHRzdHJpbmcsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IG1vZHVsZV9vcHRpb25zICpvcHRpb25zKQoreworCWNoYXIgKm9wdHMgPSBOT0ZBSUwoc3RyZHVwKG9wdHN0cmluZykpOworCisJd2hpbGUgKG9wdGlvbnMpIHsKKwkJaWYgKHN0cmVxKG9wdGlvbnMtPm1vZHVsZW5hbWUsIG1vZG5hbWUpKQorCQkJb3B0cyA9IHByZXBlbmRfb3B0aW9uKG9wdHMsIG9wdGlvbnMtPm9wdGlvbnMpOworCQlvcHRpb25zID0gb3B0aW9ucy0+bmV4dDsKKwl9CisJcmV0dXJuIG9wdHM7Cit9CisKKy8qIElzIG1vZHVsZSBpbiAvcHJvYy9tb2R1bGVzPyAgSWYgc28sIGZpbGwgaW4gdXNlY291bnQgaWYgbm90IE5VTEwuCisgICAwIG1lYW5zIG5vLCAxIG1lYW5zIHllcywgLTEgbWVhbnMgdW5rbm93bi4KKyAqLworc3RhdGljIGludCBtb2R1bGVfaW5fcHJvY2ZzKGNvbnN0IGNoYXIgKm1vZG5hbWUsIHVuc2lnbmVkIGludCAqdXNlY291bnQpCit7CisJRklMRSAqcHJvY19tb2R1bGVzOworCWNoYXIgKmxpbmU7CisKK2FnYWluOgorCS8qIE1pZ2h0IG5vdCBiZSBtb3VudGVkIHlldC4gIERvbid0IGZhaWwuICovCisJcHJvY19tb2R1bGVzID0gZm9wZW4oIi9wcm9jL21vZHVsZXMiLCAiciIpOworCWlmICghcHJvY19tb2R1bGVzKQorCQlyZXR1cm4gLTE7CisKKwl3aGlsZSAoKGxpbmUgPSBnZXRsaW5lX3dyYXBwZWQocHJvY19tb2R1bGVzLCBOVUxMKSkgIT0gTlVMTCkgeworCQljaGFyICplbnRyeSA9IHN0cnRvayhsaW5lLCAiIFxuIik7CisKKwkJaWYgKGVudHJ5ICYmIHN0cmVxKGVudHJ5LCBtb2RuYW1lKSkgeworCQkJLyogSWYgaXQgZXhpc3RzLCB1c2Vjb3VudCBpcyB0aGUgdGhpcmQgZW50cnkuICovCisJCQlpZiAoIXN0cnRvayhOVUxMLCAiIFxuIikpCisJCQkJZ290byBvdXQ7CisKKwkJCWlmICghKGVudHJ5ID0gc3RydG9rKE5VTEwsICIgXG4iKSkpIC8qIHVzZWNvdW50ICovCisJCQkJZ290byBvdXQ7CisJCQllbHNlCisJCQkJaWYgKHVzZWNvdW50KQorCQkJCQkqdXNlY291bnQgPSBhdG9pKGVudHJ5KTsKKworCQkJLyogRm9sbG93ZWQgYnkgLSB0aGVuIHN0YXR1cy4gKi8KKwkJCWlmIChzdHJ0b2soTlVMTCwgIiBcbiIpCisJCQkgICAgJiYgKGVudHJ5ID0gc3RydG9rKE5VTEwsICIgXG4iKSkgIT0gTlVMTCkgeworCQkJCS8qIE5vIGxvY2tpbmcsIHdlIG1pZ2h0IGhpdCBjYXNlcworCQkJCSAqIHdoZXJlIG1vZHVsZSBpcyBpbiBmbHV4LiAgU3Bpbi4gKi8KKwkJCQlpZiAoc3RyZXEoZW50cnksICJMb2FkaW5nIikKKwkJCQkgICAgfHwgc3RyZXEoZW50cnksICJVbmxvYWRpbmciKSkgeworCQkJCQl1c2xlZXAoMTAwMDAwKTsKKwkJCQkJZnJlZShsaW5lKTsKKwkJCQkJZmNsb3NlKHByb2NfbW9kdWxlcyk7CisJCQkJCWdvdG8gYWdhaW47CisJCQkJfQorCQkJfQorCisJCW91dDoKKwkJCWZyZWUobGluZSk7CisJCQlmY2xvc2UocHJvY19tb2R1bGVzKTsKKwkJCXJldHVybiAxOworCQl9CisJCWZyZWUobGluZSk7CisJfQorCWZjbG9zZShwcm9jX21vZHVsZXMpOworCXJldHVybiAwOworfQorCisvKiBSZWFkIHN5c2ZzIGF0dHJpYnV0ZSBpbnRvIGEgYnVmZmVyLgorICogcmV0dXJuczogMSA9IG9rLCAwID0gYXR0cmlidXRlIG1pc3NpbmcsCisgKiAtMSA9IGZpbGUgZXJyb3IgKG9yIGVtcHR5IGZpbGUsIGJ1dCB3ZSBkb24ndCBjYXJlKS4KKyAqLworc3RhdGljIGludCByZWFkX2F0dHJpYnV0ZShjb25zdCBjaGFyICpmaWxlbmFtZSwgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKQoreworCUZJTEUgKmZpbGU7CisJY2hhciAqczsKKworCWZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKKwlpZiAoZmlsZSA9PSBOVUxMKQorCQlyZXR1cm4gKGVycm5vID09IEVOT0VOVCkgPyAwIDogLTE7CisJcyA9IGZnZXRzKGJ1ZiwgYnVmbGVuLCBmaWxlKTsKKwlmY2xvc2UoZmlsZSk7CisKKwlyZXR1cm4gKHMgPT0gTlVMTCkgPyAtMSA6IDE7Cit9CisKKy8qIGlzIHRoaXMgYSBidWlsdC1pbiBtb2R1bGU/CisgKiAwOiBubywgMTogeWVzLCAtMTogZG9uJ3Qga25vdworICovCitzdGF0aWMgaW50IG1vZHVsZV9idWlsdGluKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGNvbnN0IGNoYXIgKm1vZG5hbWUpCit7CisJc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4OworCWNoYXIgKmZpbGVuYW1lLCAqdmFsdWU7CisKKwlub2ZhaWxfYXNwcmludGYoJmZpbGVuYW1lLCAiJXMvbW9kdWxlcy5idWlsdGluLmJpbiIsIGRpcm5hbWUpOworCWluZGV4ID0gaW5kZXhfZmlsZV9vcGVuKGZpbGVuYW1lKTsKKwlmcmVlKGZpbGVuYW1lKTsKKwlpZiAoIWluZGV4KQorCQlyZXR1cm4gLTE7CisJdmFsdWUgPSBpbmRleF9zZWFyY2goaW5kZXgsIG1vZG5hbWUpOworCWZyZWUodmFsdWUpOworCXJldHVybiB2YWx1ZSA/IDEgOiAwOworfQorCisvKiBJcyBtb2R1bGUgaW4gL3N5cy9tb2R1bGU/ICBJZiBzbywgZmlsbCBpbiB1c2Vjb3VudCBpZiBub3QgTlVMTC4KKyAgIDAgbWVhbnMgbm8sIDEgbWVhbnMgeWVzLCAtMSBtZWFucyB1bmtub3duLgorICovCitzdGF0aWMgaW50IG1vZHVsZV9pbl9zeXNmcyhjb25zdCBjaGFyICptb2RuYW1lLCB1bnNpZ25lZCBpbnQgKnVzZWNvdW50KQoreworCWludCByZXQ7CisJY2hhciAqbmFtZTsKKwlzdHJ1Y3Qgc3RhdCBmaW5mbzsKKworCWNvbnN0IGludCBBVFRSX0xFTiA9IDE2OworCWNoYXIgYXR0cltBVFRSX0xFTl07CisKKwkvKiBDaGVjayBzeXNmcyBpcyBtb3VudGVkICovCisJaWYgKHN0YXQoIi9zeXMvbW9kdWxlIiwgJmZpbmZvKSA8IDApCisJCXJldHVybiAtMTsKKworCS8qIEZpbmQgbW9kdWxlLiAqLworCW5vZmFpbF9hc3ByaW50ZigmbmFtZSwgIi9zeXMvbW9kdWxlLyVzIiwgbW9kbmFtZSk7CisJcmV0ID0gc3RhdChuYW1lLCAmZmluZm8pOworCWZyZWUobmFtZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiAoZXJybm8gPT0gRU5PRU5UKSA/IDAgOiAtMTsgLyogTm90IGZvdW5kIG9yIHVua25vd24uICovCisKKwlub2ZhaWxfYXNwcmludGYoJm5hbWUsICIvc3lzL21vZHVsZS8lcy9pbml0c3RhdGUiLCBtb2RuYW1lKTsKKwlyZXQgPSByZWFkX2F0dHJpYnV0ZShuYW1lLCBhdHRyLCBBVFRSX0xFTik7CisJaWYgKHJldCA9PSAwKSB7CisJCWZyZWUobmFtZSk7CisJCW5vZmFpbF9hc3ByaW50ZigmbmFtZSwgIi9zeXMvbW9kdWxlLyVzIiwgbW9kbmFtZSk7CisJCWlmIChzdGF0KG5hbWUsICZmaW5mbykgPCAwKSB7CisJCQkvKiBtb2R1bGUgd2FzIHJlbW92ZWQgYmVmb3JlIHdlIGNvdWxkIHJlYWQgaW5pdHN0YXRlICovCisJCQlyZXQgPSAwOworCQl9IGVsc2UgeworCQkJLyogaW5pdHN0YXRlIG5vdCBhdmFpbGFibGUgKDIuNi4xOSBvciBlYXJsaWVyKSAqLworCQkJcmV0ID0gLTE7CisJCX0KKwkJZnJlZShuYW1lKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBXYWl0IGZvciB0aGUgZXhpc3RpbmcgbW9kdWxlIHRvIGVpdGhlciBnbyBsaXZlIG9yIGRpc2FwcGVhci4gKi8KKwl3aGlsZSAocmV0ID09IDEgJiYgIXN0cmVxKGF0dHIsICJsaXZlXG4iKSkgeworCQl1c2xlZXAoMTAwMDAwKTsKKwkJcmV0ID0gcmVhZF9hdHRyaWJ1dGUobmFtZSwgYXR0ciwgQVRUUl9MRU4pOworCX0KKwlmcmVlKG5hbWUpOworCisJaWYgKHJldCAhPSAxKQorCQlyZXR1cm4gcmV0OworCisJLyogR2V0IHJlZmVyZW5jZSBjb3VudCwgaWYgaXQgZXhpc3RzLiAqLworCWlmICh1c2Vjb3VudCAhPSBOVUxMKSB7CisJCW5vZmFpbF9hc3ByaW50ZigmbmFtZSwgIi9zeXMvbW9kdWxlLyVzL3JlZmNudCIsIG1vZG5hbWUpOworCQlyZXQgPSByZWFkX2F0dHJpYnV0ZShuYW1lLCBhdHRyLCBBVFRSX0xFTik7CisJCWZyZWUobmFtZSk7CisJCWlmIChyZXQgPT0gMSkKKwkJCSp1c2Vjb3VudCA9IGF0b2koYXR0cik7CisJfQorCisJcmV0dXJuIDE7Cit9CisKKy8qIElzIG1vZHVsZSBsb2FkZWQ/ICBJZiBzbywgZmlsbCBpbiB1c2Vjb3VudCBpZiBub3QgTlVMTC4gCisgICAwIG1lYW5zIG5vLCAxIG1lYW5zIHllcywgLTEgbWVhbnMgdW5rbm93bi4KKyAqLworc3RhdGljIGludCBtb2R1bGVfaW5fa2VybmVsKGNvbnN0IGNoYXIgKm1vZG5hbWUsIHVuc2lnbmVkIGludCAqdXNlY291bnQpCit7CisJaW50IHJlc3VsdDsKKworCXJlc3VsdCA9IG1vZHVsZV9pbl9zeXNmcyhtb2RuYW1lLCB1c2Vjb3VudCk7CisJaWYgKHJlc3VsdCAhPSAtMSkKKwkJcmV0dXJuIHJlc3VsdDsKKworCS8qIC9zeXMvbW9kdWxlLyVzL2luaXRzdGF0ZSBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSAyLjYuMjAsCisJICAgZmFsbGJhY2sgdG8gL3Byb2MvbW9kdWxlcyB0byBnZXQgbW9kdWxlIHN0YXRlIG9uIGVhcmxpZXIga2VybmVscy4gKi8KKwlyZXR1cm4gbW9kdWxlX2luX3Byb2Nmcyhtb2RuYW1lLCB1c2Vjb3VudCk7Cit9CisKK3ZvaWQgZHVtcF9tb2R2ZXJzaW9ucyhjb25zdCBjaGFyICpmaWxlbmFtZSwgZXJyZm5fdCBlcnJvcikKK3sKKwlzdHJ1Y3QgZWxmX2ZpbGUgKm1vZHVsZTsKKworCW1vZHVsZSA9IGdyYWJfZWxmX2ZpbGUoZmlsZW5hbWUpOworCWlmICghbW9kdWxlKSB7CisJCWVycm9yKCIlczogJXNcbiIsIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOworCQlyZXR1cm47CisJfQorCWlmIChtb2R1bGUtPm9wcy0+ZHVtcF9tb2R2ZXJzKG1vZHVsZSkgPCAwKQorCQllcnJvcigiV3Jvbmcgc2VjdGlvbiBzaXplIGluICclcydcbiIsIGZpbGVuYW1lKTsKKwlyZWxlYXNlX2VsZl9maWxlKG1vZHVsZSk7Cit9CisKKy8qIERvZXMgcGF0aCBjb250YWluIGRpcmVjdG9yeShzKSBzdWJwYXRoPyAqLworc3RhdGljIGludCB0eXBlX21hdGNoZXMoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VicGF0aCkKK3sKKwljaGFyICpzdWJwYXRoX3dpdGhfc2xhc2hlczsKKwlpbnQgcmV0OworCisJbm9mYWlsX2FzcHJpbnRmKCZzdWJwYXRoX3dpdGhfc2xhc2hlcywgIi8lcy8iLCBzdWJwYXRoKTsKKworCXJldCA9IChzdHJzdHIocGF0aCwgc3VicGF0aF93aXRoX3NsYXNoZXMpICE9IE5VTEwpOworCWZyZWUoc3VicGF0aF93aXRoX3NsYXNoZXMpOworCXJldHVybiByZXQ7Cit9CisKKworc3RhdGljIGludCBkb193aWxkY2FyZChjb25zdCBjaGFyICpkaXJuYW1lLAorCQkgICAgICAgY29uc3QgY2hhciAqdHlwZSwKKwkJICAgICAgIGNvbnN0IGNoYXIgKndpbGRjYXJkKQoreworCWNoYXIgKm1vZHVsZXNfZGVwX25hbWU7CisJY2hhciAqbGluZSwgKndjYXJkOworCUZJTEUgKm1vZHVsZXNfZGVwOworCisJLyogQ2Fub25pY2FsaXplIHdpbGRjYXJkICovCisJd2NhcmQgPSBzdHJkdXAod2lsZGNhcmQpOworCXVuZGVyc2NvcmVzKHdjYXJkKTsKKworCW5vZmFpbF9hc3ByaW50ZigmbW9kdWxlc19kZXBfbmFtZSwgIiVzLyVzIiwgZGlybmFtZSwgIm1vZHVsZXMuZGVwIik7CisJbW9kdWxlc19kZXAgPSBmb3Blbihtb2R1bGVzX2RlcF9uYW1lLCAiciIpOworCWlmICghbW9kdWxlc19kZXApCisJCWZhdGFsKCJDb3VsZCBub3QgbG9hZCAlczogJXNcbiIsCisJCSAgICAgIG1vZHVsZXNfZGVwX25hbWUsIHN0cmVycm9yKGVycm5vKSk7CisKKwl3aGlsZSAoKGxpbmUgPSBnZXRsaW5lX3dyYXBwZWQobW9kdWxlc19kZXAsIE5VTEwpKSAhPSBOVUxMKSB7CisJCWNoYXIgKnB0cjsKKworCQkvKiBJZ25vcmUgbGluZXMgd2l0aG91dCA6IG9yIHdoaWNoIHN0YXJ0IHdpdGggYSAjICovCisJCXB0ciA9IHN0cmNocihsaW5lLCAnOicpOworCQlpZiAocHRyID09IE5VTEwgfHwgbGluZVtzdHJzcG4obGluZSwgIlx0ICIpXSA9PSAnIycpCisJCQlnb3RvIG5leHQ7CisJCSpwdHIgPSAnXDAnOworCisJCS8qICJ0eXBlIiBtdXN0IG1hdGNoIGNvbXBsZXRlIGRpcmVjdG9yeSBjb21wb25lbnQocykuICovCisJCWlmICghdHlwZSB8fCB0eXBlX21hdGNoZXMobGluZSwgdHlwZSkpIHsKKwkJCWNoYXIgbW9kbmFtZVtzdHJsZW4obGluZSkrMV07CisKKwkJCWZpbGVuYW1lMm1vZG5hbWUobW9kbmFtZSwgbGluZSk7CisJCQlpZiAoZm5tYXRjaCh3Y2FyZCwgbW9kbmFtZSwgMCkgPT0gMCkKKwkJCQlwcmludGYoIiVzXG4iLCBsaW5lKTsKKwkJfQorCW5leHQ6CisJCWZyZWUobGluZSk7CisJfQorCisJZnJlZShtb2R1bGVzX2RlcF9uYW1lKTsKKwlmcmVlKHdjYXJkKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNoYXIgKnN0cnNlcF9za2lwc3BhY2UoY2hhciAqKnN0cmluZywgY2hhciAqZGVsaW0pCit7CisJaWYgKCEqc3RyaW5nKQorCQlyZXR1cm4gTlVMTDsKKwkqc3RyaW5nICs9IHN0cnNwbigqc3RyaW5nLCBkZWxpbSk7CisJcmV0dXJuIHN0cnNlcChzdHJpbmcsIGRlbGltKTsKK30KKworc3RhdGljIGludCBwYXJzZV9jb25maWdfc2Nhbihjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCSAgICAgc3RydWN0IG1vZHByb2JlX2NvbmYgKmNvbmYsCisJCQkgICAgIGludCBkdW1wX29ubHksCisJCQkgICAgIGludCByZW1vdmluZyk7CisKK3N0YXRpYyBpbnQgcGFyc2VfY29uZmlnX2ZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsCisJCQkgICAgc3RydWN0IG1vZHByb2JlX2NvbmYgKmNvbmYsCisJCQkgICAgaW50IGR1bXBfb25seSwKKwkJCSAgICBpbnQgcmVtb3ZpbmcpCit7CisJY2hhciAqbGluZTsKKwl1bnNpZ25lZCBpbnQgbGluZW51bSA9IDA7CisJRklMRSAqY2ZpbGU7CisKKwlzdHJ1Y3QgbW9kdWxlX29wdGlvbnMgKipvcHRpb25zID0gJmNvbmYtPm9wdGlvbnM7CisJc3RydWN0IG1vZHVsZV9jb21tYW5kICoqY29tbWFuZHMgPSAmY29uZi0+Y29tbWFuZHM7CisJc3RydWN0IG1vZHVsZV9hbGlhcyAqKmFsaWFzZXMgPSAmY29uZi0+YWxpYXNlczsKKwlzdHJ1Y3QgbW9kdWxlX2JsYWNrbGlzdCAqKmJsYWNrbGlzdCA9ICZjb25mLT5ibGFja2xpc3Q7CisKKwljZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAiciIpOworCWlmICghY2ZpbGUpCisJCXJldHVybiAwOworCisJd2hpbGUgKChsaW5lID0gZ2V0bGluZV93cmFwcGVkKGNmaWxlLCAmbGluZW51bSkpICE9IE5VTEwpIHsKKwkJY2hhciAqcHRyID0gbGluZTsKKwkJY2hhciAqY21kLCAqbW9kbmFtZTsKKworCQlpZiAoZHVtcF9vbmx5KQorCQkJcHJpbnRmKCIlc1xuIiwgbGluZSk7CisKKwkJY21kID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCWlmIChjbWQgPT0gTlVMTCB8fCBjbWRbMF0gPT0gJyMnIHx8IGNtZFswXSA9PSAnXDAnKSB7CisJCQlmcmVlKGxpbmUpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoc3RyZXEoY21kLCAiYWxpYXMiKSkgeworCQkJY2hhciAqd2lsZGNhcmQgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCWNoYXIgKnJlYWxuYW1lID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCQlpZiAoIXdpbGRjYXJkIHx8ICFyZWFsbmFtZSkKKwkJCQlnb3RvIHN5bnRheF9lcnJvcjsKKwkJCSphbGlhc2VzID0gYWRkX2FsaWFzKHVuZGVyc2NvcmVzKHdpbGRjYXJkKSwKKwkJCQkJICAgICB1bmRlcnNjb3JlcyhyZWFsbmFtZSksCisJCQkJCSAgICAgKmFsaWFzZXMpOworCQl9IGVsc2UgaWYgKHN0cmVxKGNtZCwgImluY2x1ZGUiKSkgeworCQkJc3RydWN0IG1vZHByb2JlX2NvbmYgbmV3Y29uZiA9ICpjb25mOworCQkJbmV3Y29uZi5hbGlhc2VzID0gTlVMTDsKKwkJCWNoYXIgKm5ld2ZpbGVuYW1lOworCQkJbmV3ZmlsZW5hbWUgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCWlmICghbmV3ZmlsZW5hbWUpCisJCQkJZ290byBzeW50YXhfZXJyb3I7CisKKwkJCXdhcm4oIlwiaW5jbHVkZSAlc1wiIGlzIGRlcHJlY2F0ZWQsICIKKwkJCSAgICAgInBsZWFzZSB1c2UgL2V0Yy9tb2Rwcm9iZS5kXG4iLCBuZXdmaWxlbmFtZSk7CisJCQlpZiAoc3Ryc3RhcnRzKG5ld2ZpbGVuYW1lLCAiL2V0Yy9tb2Rwcm9iZS5kIikpIHsKKwkJCQl3YXJuKCJcImluY2x1ZGUgL2V0Yy9tb2Rwcm9iZS5kXCIgaXMgIgorCQkJCSAgICAgInRoZSBkZWZhdWx0LCBpZ25vcmVkXG4iKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFwYXJzZV9jb25maWdfc2NhbihuZXdmaWxlbmFtZSwKKwkJCQkJCSAgICAgICAmbmV3Y29uZiwgZHVtcF9vbmx5LAorCQkJCQkJICAgICAgIHJlbW92aW5nKSkKKwkJCQkJd2FybigiRmFpbGVkIHRvIG9wZW4gaW5jbHVkZWQiCisJCQkJCSAgICAgICIgY29uZmlnIGZpbGUgJXM6ICVzXG4iLAorCQkJCQkgICAgICBuZXdmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCX0KKwkJCS8qIEZpbGVzIGluY2x1ZGVkIG92ZXJyaWRlIGFsaWFzZXMsCisJCQkgICBldGMgdGhhdCB3YXMgYWxyZWFkeSBzZXQgLi4uICovCisJCQlpZiAobmV3Y29uZi5hbGlhc2VzKQorCQkJCSphbGlhc2VzID0gbmV3Y29uZi5hbGlhc2VzOworCisJCX0gZWxzZSBpZiAoc3RyZXEoY21kLCAib3B0aW9ucyIpKSB7CisJCQltb2RuYW1lID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCQlpZiAoIW1vZG5hbWUgfHwgIXB0cikKKwkJCQlnb3RvIHN5bnRheF9lcnJvcjsKKworCQkJcHRyICs9IHN0cnNwbihwdHIsICJcdCAiKTsKKwkJCSpvcHRpb25zID0gYWRkX29wdGlvbnModW5kZXJzY29yZXMobW9kbmFtZSksCisJCQkJCSAgICAgICBwdHIsICpvcHRpb25zKTsKKworCQl9IGVsc2UgaWYgKHN0cmVxKGNtZCwgImluc3RhbGwiKSkgeworCQkJbW9kbmFtZSA9IHN0cnNlcF9za2lwc3BhY2UoJnB0ciwgIlx0ICIpOworCQkJaWYgKCFtb2RuYW1lIHx8ICFwdHIpCisJCQkJZ290byBzeW50YXhfZXJyb3I7CisJCQlpZiAoIXJlbW92aW5nKSB7CisJCQkJcHRyICs9IHN0cnNwbihwdHIsICJcdCAiKTsKKwkJCQkqY29tbWFuZHMgPSBhZGRfY29tbWFuZCh1bmRlcnNjb3Jlcyhtb2RuYW1lKSwKKwkJCQkJCQlwdHIsICpjb21tYW5kcyk7CisJCQl9CisJCX0gZWxzZSBpZiAoc3RyZXEoY21kLCAiYmxhY2tsaXN0IikpIHsKKwkJCW1vZG5hbWUgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCWlmICghbW9kbmFtZSkKKwkJCQlnb3RvIHN5bnRheF9lcnJvcjsKKwkJCWlmICghcmVtb3ZpbmcpIHsKKwkJCQkqYmxhY2tsaXN0ID0gYWRkX2JsYWNrbGlzdCh1bmRlcnNjb3Jlcyhtb2RuYW1lKSwKKwkJCQkJCQkqYmxhY2tsaXN0KTsKKwkJCX0KKwkJfSBlbHNlIGlmIChzdHJlcShjbWQsICJyZW1vdmUiKSkgeworCQkJbW9kbmFtZSA9IHN0cnNlcF9za2lwc3BhY2UoJnB0ciwgIlx0ICIpOworCQkJaWYgKCFtb2RuYW1lIHx8ICFwdHIpCisJCQkJZ290byBzeW50YXhfZXJyb3I7CisJCQlpZiAocmVtb3ZpbmcpIHsKKwkJCQlwdHIgKz0gc3Ryc3BuKHB0ciwgIlx0ICIpOworCQkJCSpjb21tYW5kcyA9IGFkZF9jb21tYW5kKHVuZGVyc2NvcmVzKG1vZG5hbWUpLAorCQkJCQkJCXB0ciwgKmNvbW1hbmRzKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChzdHJlcShjbWQsICJzb2Z0ZGVwIikpIHsKKwkJCWNoYXIgKnRrOworCQkJaW50IHByZSA9IDAsIHBvc3QgPSAwOworCQkJc3RydWN0IHN0cmluZ190YWJsZSAqcHJlX21vZG5hbWVzID0gTlVMTDsKKwkJCXN0cnVjdCBzdHJpbmdfdGFibGUgKnBvc3RfbW9kbmFtZXMgPSBOVUxMOworCQkJc3RydWN0IG1vZHVsZV9zb2Z0ZGVwICpuZXc7CisKKwkJCW1vZG5hbWUgPSB1bmRlcnNjb3JlcyhzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKSk7CisJCQlpZiAoIW1vZG5hbWUgfHwgIXB0cikKKwkJCQlnb3RvIHN5bnRheF9lcnJvcjsKKwkJCXdoaWxlICgodGsgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKSkgIT0gTlVMTCkgeworCQkJCWlmIChzdHJlcSh0aywgInByZToiKSkgeworCQkJCQlwcmUgPSAxOyBwb3N0ID0gMDsKKwkJCQl9IGVsc2UgaWYgKHN0cmVxKHRrLCAicG9zdDoiKSkgeworCQkJCQlwcmUgPSAwOyBwb3N0ID0gMTsKKwkJCQl9IGVsc2UgaWYgKHByZSkgeworCQkJCQlwcmVfbW9kbmFtZXMgPSBOT0ZBSUwoCisJCQkJCQlzdHJ0YmxfYWRkKHRrLCBwcmVfbW9kbmFtZXMpKTsKKwkJCQl9IGVsc2UgaWYgKHBvc3QpIHsKKwkJCQkJcG9zdF9tb2RuYW1lcyA9IE5PRkFJTCgKKwkJCQkJCXN0cnRibF9hZGQodGssIHBvc3RfbW9kbmFtZXMpKTsKKwkJCQl9IGVsc2UgeworCQkJCQlzdHJ0YmxfZnJlZShwcmVfbW9kbmFtZXMpOworCQkJCQlzdHJ0YmxfZnJlZShwb3N0X21vZG5hbWVzKTsKKwkJCQkJZ290byBzeW50YXhfZXJyb3I7CisJCQkJfQorCQkJfQorCQkJbmV3ID0gTk9GQUlMKG1hbGxvYyhzaXplb2YoKm5ldykpKTsKKwkJCW5ldy0+YnVmID0gbGluZTsKKwkJCW5ldy0+bW9kbmFtZSA9IG1vZG5hbWU7CisJCQluZXctPnByZSA9IHByZV9tb2RuYW1lczsKKwkJCW5ldy0+cG9zdCA9IHBvc3RfbW9kbmFtZXM7CisJCQluZXctPm5leHQgPSBjb25mLT5zb2Z0ZGVwczsKKwkJCWNvbmYtPnNvZnRkZXBzID0gbmV3OworCisJCQlsaW5lID0gTlVMTDsgLyogRG9uJ3QgZnJlZSgpIHRoaXMgbGluZS4gKi8KKworCQl9IGVsc2UgaWYgKHN0cmVxKGNtZCwgImNvbmZpZyIpKSB7CisJCQljaGFyICp0bXAgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKworCQkJaWYgKCF0bXApCisJCQkJZ290byBzeW50YXhfZXJyb3I7CisJCQlpZiAoc3RyZXEodG1wLCAiYmluYXJ5X2luZGV4ZXMiKSkgeworCQkJCXRtcCA9IHN0cnNlcF9za2lwc3BhY2UoJnB0ciwgIlx0ICIpOworCQkJCWlmIChzdHJlcSh0bXAsICJ5ZXMiKSkKKwkJCQkJdXNlX2JpbmFyeV9pbmRleGVzID0gMTsKKwkJCQlpZiAoc3RyZXEodG1wLCAibm8iKSkKKwkJCQkJdXNlX2JpbmFyeV9pbmRleGVzID0gMDsKKwkJCX0KKwkJfSBlbHNlIHsKK3N5bnRheF9lcnJvcjoKKwkJCWdyYW1tYXIoY21kLCBmaWxlbmFtZSwgbGluZW51bSk7CisJCX0KKworCQlmcmVlKGxpbmUpOworCX0KKwlmY2xvc2UoY2ZpbGUpOworCXJldHVybiAxOworfQorCisvKiBSZWFkIGJpbmFyeSBpbmRleCBmaWxlIGNvbnRhaW5pbmcgYWxpYXNlcyBvbmx5ICovCitzdGF0aWMgaW50IHJlYWRfYWxpYXNlc19maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJICAgICBjb25zdCBjaGFyICpuYW1lLAorCQkJICAgICBpbnQgZHVtcF9vbmx5LAorCQkJICAgICBzdHJ1Y3QgbW9kdWxlX2FsaWFzICoqYWxpYXNlcykKK3sKKwlzdHJ1Y3QgaW5kZXhfdmFsdWUgKnJlYWxuYW1lczsKKwlzdHJ1Y3QgaW5kZXhfdmFsdWUgKnJlYWxuYW1lOworCWNoYXIgKmJpbmZpbGU7CisJc3RydWN0IGluZGV4X2ZpbGUgKmluZGV4OworCisJbm9mYWlsX2FzcHJpbnRmKCZiaW5maWxlLCAiJXMuYmluIiwgZmlsZW5hbWUpOworCWluZGV4ID0gaW5kZXhfZmlsZV9vcGVuKGJpbmZpbGUpOworCWlmICghaW5kZXgpIHsKKwkJZnJlZShiaW5maWxlKTsKKwkJcmV0dXJuIDA7CisJfQorCisJaWYgKGR1bXBfb25seSkgeworCQlpbmRleF9kdW1wKGluZGV4LCBzdGRvdXQsICJhbGlhcyAiKTsKKwkJZnJlZShiaW5maWxlKTsKKwkJaW5kZXhfZmlsZV9jbG9zZShpbmRleCk7CisJCXJldHVybiAxOworCX0KKworCXJlYWxuYW1lcyA9IGluZGV4X3NlYXJjaHdpbGQoaW5kZXgsIG5hbWUpOworCWZvciAocmVhbG5hbWUgPSByZWFsbmFtZXM7IHJlYWxuYW1lOyByZWFsbmFtZSA9IHJlYWxuYW1lLT5uZXh0KQorCQkqYWxpYXNlcyA9IGFkZF9hbGlhcygiKiIsIHJlYWxuYW1lLT52YWx1ZSwgKmFsaWFzZXMpOworCWluZGV4X3ZhbHVlc19mcmVlKHJlYWxuYW1lcyk7CisKKwlmcmVlKGJpbmZpbGUpOworCWluZGV4X2ZpbGVfY2xvc2UoaW5kZXgpOworCXJldHVybiAxOworfQorCisvKiBmYWxsYmFjayB0byBwbGFpbi10ZXh0IGFsaWFzZXMgZmlsZSBpZiBuZWNlc3NhcnkgKi8KK3N0YXRpYyBpbnQgcmVhZF9hbGlhc2VzKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJY29uc3QgY2hhciAqbmFtZSwKKwkJCWludCBkdW1wX29ubHksCisJCQlzdHJ1Y3QgbW9kdWxlX2FsaWFzICoqYWxpYXNlcykKK3sKKwljaGFyICpsaW5lOworCXVuc2lnbmVkIGludCBsaW5lbnVtID0gMDsKKwlGSUxFICpjZmlsZTsKKworCWlmICh1c2VfYmluYXJ5X2luZGV4ZXMpCisJCWlmIChyZWFkX2FsaWFzZXNfZmlsZShmaWxlbmFtZSwgbmFtZSwgZHVtcF9vbmx5LCBhbGlhc2VzKSkKKwkJCXJldHVybiAxOworCisJY2ZpbGUgPSBmb3BlbihmaWxlbmFtZSwgInIiKTsKKwlpZiAoIWNmaWxlKQorCQlyZXR1cm4gMDsKKworCXdoaWxlICgobGluZSA9IGdldGxpbmVfd3JhcHBlZChjZmlsZSwgJmxpbmVudW0pKSAhPSBOVUxMKSB7CisJCWNoYXIgKnB0ciA9IGxpbmU7CisJCWNoYXIgKmNtZDsKKworCQlpZiAoZHVtcF9vbmx5KQorCQkJcHJpbnRmKCIlc1xuIiwgbGluZSk7CisKKwkJY21kID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCWlmIChjbWQgPT0gTlVMTCB8fCBjbWRbMF0gPT0gJyMnIHx8IGNtZFswXSA9PSAnXDAnKSB7CisJCQlmcmVlKGxpbmUpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoc3RyZXEoY21kLCAiYWxpYXMiKSkgeworCQkJY2hhciAqd2lsZGNhcmQgPSBzdHJzZXBfc2tpcHNwYWNlKCZwdHIsICJcdCAiKTsKKwkJCWNoYXIgKnJlYWxuYW1lID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIik7CisJCQlpZiAoIXdpbGRjYXJkIHx8ICFyZWFsbmFtZSkKKwkJCQlnb3RvIHN5bnRheF9lcnJvcjsKKwkJCWlmIChmbm1hdGNoKHVuZGVyc2NvcmVzKHdpbGRjYXJkKSxuYW1lLDApID09IDApCisJCQkJKmFsaWFzZXMgPSBhZGRfYWxpYXMod2lsZGNhcmQsCisJCQkJCQkgICAgIHVuZGVyc2NvcmVzKHJlYWxuYW1lKSwKKwkJCQkJCSAgICAgKmFsaWFzZXMpOworCQl9IGVsc2Ugeworc3ludGF4X2Vycm9yOgorCQkJZ3JhbW1hcihjbWQsIGZpbGVuYW1lLCBsaW5lbnVtKTsKKwkJfQorCisJCWZyZWUobGluZSk7CisJfQorCWZjbG9zZShjZmlsZSk7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQgcGFyc2VfY29uZmlnX3NjYW4oY29uc3QgY2hhciAqZmlsZW5hbWUsCisJCQkgICAgIHN0cnVjdCBtb2Rwcm9iZV9jb25mICpjb25mLAorCQkJICAgICBpbnQgZHVtcF9vbmx5LAorCQkJICAgICBpbnQgcmVtb3ZpbmcpCit7CisJRElSICpkaXI7CisJaW50IHJldCA9IDA7CisKKwlkaXIgPSBvcGVuZGlyKGZpbGVuYW1lKTsKKwlpZiAoZGlyKSB7CisJCXN0cnVjdCBmaWxlX2VudHJ5IHsKKwkJCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKKwkJCWNoYXIgbmFtZVtdOworCQl9OworCQlMSVNUX0hFQUQoZmlsZXNfbGlzdCk7CisJCXN0cnVjdCBmaWxlX2VudHJ5ICpmZSwgKmZlX3RtcDsKKwkJc3RydWN0IGRpcmVudCAqaTsKKworCQkvKiBzb3J0IGZpbGVzIGZyb20gZGlyZWN0b3J5IGludG8gbGlzdCAqLworCQl3aGlsZSAoKGkgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKwkJCXNpemVfdCBsZW47CisKKwkJCWlmIChpLT5kX25hbWVbMF0gPT0gJy4nKQorCQkJCWNvbnRpbnVlOworCQkJaWYgKCFjb25maWdfZmlsdGVyKGktPmRfbmFtZSkpCisJCQkJY29udGludWU7CisKKwkJCWxlbiA9IHN0cmxlbihpLT5kX25hbWUpOworCQkJaWYgKGxlbiA8IDYgfHwKKwkJCSAgICAoc3RyY21wKCZpLT5kX25hbWVbbGVuLTVdLCAiLmNvbmYiKSAhPSAwICYmCisJCQkgICAgIHN0cmNtcCgmaS0+ZF9uYW1lW2xlbi02XSwgIi5hbGlhcyIpICE9IDApKQorCQkJCXdhcm4oIkFsbCBjb25maWcgZmlsZXMgbmVlZCAuY29uZjogJXMvJXMsICIKKwkJCQkgICAgICJpdCB3aWxsIGJlIGlnbm9yZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS5cbiIsCisJCQkJICAgICBmaWxlbmFtZSwgaS0+ZF9uYW1lKTsKKwkJCWZlID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgZmlsZV9lbnRyeSkgKyBsZW4gKyAxKTsKKwkJCWlmIChmZSA9PSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQkJc3RyY3B5KGZlLT5uYW1lLCBpLT5kX25hbWUpOworCQkJbGlzdF9mb3JfZWFjaF9lbnRyeShmZV90bXAsICZmaWxlc19saXN0LCBub2RlKQorCQkJCWlmIChzdHJjbXAoZmVfdG1wLT5uYW1lLCBmZS0+bmFtZSkgPj0gMCkKKwkJCQkJYnJlYWs7CisJCQlsaXN0X2FkZF90YWlsKCZmZS0+bm9kZSwgJmZlX3RtcC0+bm9kZSk7CisJCX0KKwkJY2xvc2VkaXIoZGlyKTsKKworCQkvKiBwYXJzZSBsaXN0IG9mIGZpbGVzICovCisJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmZSwgZmVfdG1wLCAmZmlsZXNfbGlzdCwgbm9kZSkgeworCQkJY2hhciAqY2ZnZmlsZTsKKworCQkJbm9mYWlsX2FzcHJpbnRmKCZjZmdmaWxlLCAiJXMvJXMiLCBmaWxlbmFtZSwgZmUtPm5hbWUpOworCQkJaWYgKCFwYXJzZV9jb25maWdfZmlsZShjZmdmaWxlLCBjb25mLAorCQkJCQkgICAgICAgZHVtcF9vbmx5LCByZW1vdmluZykpCisJCQkJd2FybigiRmFpbGVkIHRvIG9wZW4gY29uZmlnIGZpbGUgIgorCQkJCSAgICAgIiVzOiAlc1xuIiwgZmUtPm5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJCQlmcmVlKGNmZ2ZpbGUpOworCQkJbGlzdF9kZWwoJmZlLT5ub2RlKTsKKwkJCWZyZWUoZmUpOworCQl9CisKKwkJcmV0ID0gMTsKKwl9IGVsc2UgeworCQlpZiAocGFyc2VfY29uZmlnX2ZpbGUoZmlsZW5hbWUsIGNvbmYsIGR1bXBfb25seSwgcmVtb3ZpbmcpKQorCQkJcmV0ID0gMTsKKwl9CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgcGFyc2VfdG9wbGV2ZWxfY29uZmlnKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJCSAgc3RydWN0IG1vZHByb2JlX2NvbmYgKmNvbmYsCisJCQkJICBpbnQgZHVtcF9vbmx5LAorCQkJCSAgaW50IHJlbW92aW5nKQoreworCWlmIChmaWxlbmFtZSkgeworCQlpZiAoIXBhcnNlX2NvbmZpZ19zY2FuKGZpbGVuYW1lLCBjb25mLCBkdW1wX29ubHksIHJlbW92aW5nKSkKKwkJCWZhdGFsKCJGYWlsZWQgdG8gb3BlbiBjb25maWcgZmlsZSAlczogJXNcbiIsCisJCQkgICAgICBmaWxlbmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKwkJcmV0dXJuOworCX0KKworCS8qIGRlcHJlY2F0ZWQgY29uZmlnIGZpbGUgKi8KKwlpZiAocGFyc2VfY29uZmlnX2ZpbGUoIi9ldGMvbW9kcHJvYmUuY29uZiIsIGNvbmYsCisJCQkgICAgICBkdW1wX29ubHksIHJlbW92aW5nKSA+IDApCisJCXdhcm4oIkRlcHJlY2F0ZWQgY29uZmlnIGZpbGUgL2V0Yy9tb2Rwcm9iZS5jb25mLCAiCisJCSAgICAgICJhbGwgY29uZmlnIGZpbGVzIGJlbG9uZyBpbnRvIC9ldGMvbW9kcHJvYmUuZC8uXG4iKTsKKworCS8qIGRlZmF1bHQgY29uZmlnICovCisJcGFyc2VfY29uZmlnX3NjYW4oIi9ldGMvbW9kcHJvYmUuZCIsIGNvbmYsIGR1bXBfb25seSwgcmVtb3ZpbmcpOworfQorCisvKiBSZWFkIHBvc3NpYmxlIG1vZHVsZSBhcmd1bWVudHMgZnJvbSB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4gKi8KK3N0YXRpYyBpbnQgcGFyc2Vfa2NtZGxpbmUoaW50IGR1bXBfb25seSwgc3RydWN0IG1vZHVsZV9vcHRpb25zICoqb3B0aW9ucykKK3sKKwljaGFyICpsaW5lOworCXVuc2lnbmVkIGludCBsaW5lbnVtID0gMDsKKwlGSUxFICprY21kbGluZTsKKworCWtjbWRsaW5lID0gZm9wZW4oIi9wcm9jL2NtZGxpbmUiLCAiciIpOworCWlmICgha2NtZGxpbmUpCisJCXJldHVybiAwOworCisJd2hpbGUgKChsaW5lID0gZ2V0bGluZV93cmFwcGVkKGtjbWRsaW5lLCAmbGluZW51bSkpICE9IE5VTEwpIHsKKwkJY2hhciAqcHRyID0gbGluZTsKKwkJY2hhciAqYXJnOworCisJCXdoaWxlICgoYXJnID0gc3Ryc2VwX3NraXBzcGFjZSgmcHRyLCAiXHQgIikpICE9IE5VTEwpIHsKKwkJCWNoYXIgKnNlcCwgKm1vZG5hbWUsICpvcHQ7CisKKwkJCXNlcCA9IHN0cmNocihhcmcsICcuJyk7CisJCQlpZiAoc2VwKSB7CisJCQkJaWYgKCFzdHJjaHIoc2VwLCAnPScpKQorCQkJCQljb250aW51ZTsKKwkJCQltb2RuYW1lID0gYXJnOworCQkJCSpzZXAgPSAnXDAnOworCQkJCW9wdCA9ICsrc2VwOworCisJCQkJaWYgKGR1bXBfb25seSkKKwkJCQkJcHJpbnRmKCJvcHRpb25zICVzICVzXG4iLCBtb2RuYW1lLCBvcHQpOworCisJCQkJKm9wdGlvbnMgPSBhZGRfb3B0aW9ucyh1bmRlcnNjb3Jlcyhtb2RuYW1lKSwKKwkJCQkJCSAgICAgICBvcHQsICpvcHRpb25zKTsKKwkJCX0KKwkJfQorCisJCWZyZWUobGluZSk7CisJfQorCWZjbG9zZShrY21kbGluZSk7CisJcmV0dXJuIDE7Cit9CisKK3N0YXRpYyB2b2lkIGFkZF90b19lbnZfdmFyKGNvbnN0IGNoYXIgKm9wdGlvbikKK3sKKwljb25zdCBjaGFyICpvbGRlbnY7CisKKwlpZiAoKG9sZGVudiA9IGdldGVudigiTU9EUFJPQkVfT1BUSU9OUyIpKSAhPSBOVUxMKSB7CisJCWNoYXIgKm5ld2VudjsKKwkJbm9mYWlsX2FzcHJpbnRmKCZuZXdlbnYsICIlcyAlcyIsIG9sZGVudiwgb3B0aW9uKTsKKwkJc2V0ZW52KCJNT0RQUk9CRV9PUFRJT05TIiwgbmV3ZW52LCAxKTsKKwkJZnJlZShuZXdlbnYpOworCX0gZWxzZQorCQlzZXRlbnYoIk1PRFBST0JFX09QVElPTlMiLCBvcHRpb24sIDEpOworfQorCisvKiBQcmVwZW5kIG9wdGlvbnMgZnJvbSBlbnZpcm9ubWVudC4gKi8KK3N0YXRpYyBjaGFyICoqbWVyZ2VfYXJncyhjaGFyICphcmdzLCBjaGFyICphcmd2W10sIGludCAqYXJnYykKK3sKKwljaGFyICphcmcsICphcmdzdHJpbmc7CisJY2hhciAqKm5ld2FyZ3MgPSBOVUxMOworCXVuc2lnbmVkIGludCBpLCBudW1fZW52ID0gMDsKKworCWlmICghYXJncykKKwkJcmV0dXJuIGFyZ3Y7CisKKwlhcmdzdHJpbmcgPSBOT0ZBSUwoc3RyZHVwKGFyZ3MpKTsKKwlmb3IgKGFyZyA9IHN0cnRvayhhcmdzdHJpbmcsICIgIik7IGFyZzsgYXJnID0gc3RydG9rKE5VTEwsICIgIikpIHsKKwkJbnVtX2VudisrOworCQluZXdhcmdzID0gTk9GQUlMKHJlYWxsb2MobmV3YXJncywKKwkJCQkJIHNpemVvZihuZXdhcmdzWzBdKQorCQkJCQkgKiAobnVtX2VudiArICphcmdjICsgMSkpKTsKKwkJbmV3YXJnc1tudW1fZW52XSA9IGFyZzsKKwl9CisKKwlpZiAoIW5ld2FyZ3MpCisJCXJldHVybiBhcmd2OworCisJLyogQXBwZW5kIGNvbW1hbmRsaW5lIGFyZ3MgKi8KKwluZXdhcmdzWzBdID0gYXJndlswXTsKKwlmb3IgKGkgPSAxOyBpIDw9ICphcmdjOyBpKyspCisJCW5ld2FyZ3NbbnVtX2VuditpXSA9IGFyZ3ZbaV07CisKKwkqYXJnYyArPSBudW1fZW52OworCXJldHVybiBuZXdhcmdzOworfQorCitzdGF0aWMgY2hhciAqZ2F0aGVyX29wdGlvbnMoY2hhciAqYXJndltdKQoreworCWNoYXIgKm9wdHN0cmluZyA9IE5PRkFJTChzdHJkdXAoIiIpKTsKKworCS8qIFJlc3QgaXMgbW9kdWxlIG9wdGlvbnMgKi8KKwl3aGlsZSAoKmFyZ3YpIHsKKwkJLyogUXVvdGUgdmFsdWUgaWYgaXQgY29udGFpbnMgc3BhY2VzLiAqLworCQl1bnNpZ25lZCBpbnQgZXEgPSBzdHJjc3BuKCphcmd2LCAiPSIpOworCisJCWlmIChzdHJjaHIoKmFyZ3YrZXEsICcgJykgJiYgIXN0cmNocigqYXJndiwgJyInKSkgeworCQkJY2hhciBxdW90ZWRbc3RybGVuKCphcmd2KSArIDNdOworCQkJKCphcmd2KVtlcV0gPSAnXDAnOworCQkJc3ByaW50ZihxdW90ZWQsICIlcz1cIiVzXCIiLCAqYXJndiwgKmFyZ3YrZXErMSk7CisJCQlvcHRzdHJpbmcgPSBhcHBlbmRfb3B0aW9uKG9wdHN0cmluZywgcXVvdGVkKTsKKwkJfSBlbHNlCisJCQlvcHRzdHJpbmcgPSBhcHBlbmRfb3B0aW9uKG9wdHN0cmluZywgKmFyZ3YpOworCQlhcmd2Kys7CisJfQorCXJldHVybiBvcHRzdHJpbmc7Cit9CisKKy8qIERvIGFuIGluc3RhbGwvcmVtb3ZlIGNvbW1hbmQ6IHJlcGxhY2UgJENNRExJTkVfT1BUUyBpZiBpdCdzIHNwZWNpZmllZC4gKi8KK3N0YXRpYyB2b2lkIGRvX2NvbW1hbmQoY29uc3QgY2hhciAqbW9kbmFtZSwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmNvbW1hbmQsCisJCSAgICAgICBpbnQgZHJ5X3J1biwKKwkJICAgICAgIGVycmZuX3QgZXJyb3IsCisJCSAgICAgICBjb25zdCBjaGFyICp0eXBlLAorCQkgICAgICAgY29uc3QgY2hhciAqY21kbGluZV9vcHRzKQoreworCWludCByZXQ7CisJY2hhciAqcCwgKnJlcGxhY2VkX2NtZCA9IE5PRkFJTChzdHJkdXAoY29tbWFuZCkpOworCisJd2hpbGUgKChwID0gc3Ryc3RyKHJlcGxhY2VkX2NtZCwgIiRDTURMSU5FX09QVFMiKSkgIT0gTlVMTCkgeworCQljaGFyICpuZXc7CisJCW5vZmFpbF9hc3ByaW50ZigmbmV3LCAiJS4qcyVzJXMiLAorCQkJIChpbnQpKHAgLSByZXBsYWNlZF9jbWQpLCByZXBsYWNlZF9jbWQsIGNtZGxpbmVfb3B0cywKKwkJCSBwICsgc3RybGVuKCIkQ01ETElORV9PUFRTIikpOworCQlmcmVlKHJlcGxhY2VkX2NtZCk7CisJCXJlcGxhY2VkX2NtZCA9IG5ldzsKKwl9CisKKwlpbmZvKCIlcyAlc1xuIiwgdHlwZSwgcmVwbGFjZWRfY21kKTsKKwlpZiAoZHJ5X3J1bikKKwkJZ290byBvdXQ7CisKKwlzZXRlbnYoIk1PRFBST0JFX01PRFVMRSIsIG1vZG5hbWUsIDEpOworCXJldCA9IHN5c3RlbShyZXBsYWNlZF9jbWQpOworCWlmIChyZXQgPT0gLTEgfHwgV0VYSVRTVEFUVVMocmV0KSkKKwkJZXJyb3IoIkVycm9yIHJ1bm5pbmcgJXMgY29tbWFuZCBmb3IgJXNcbiIsIHR5cGUsIG1vZG5hbWUpOworCitvdXQ6CisJZnJlZShyZXBsYWNlZF9jbWQpOworfQorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitpbnQgZG9fbW9kcHJvYmUoY29uc3QgY2hhciAqbW9kbmFtZSwKKwkJY29uc3QgY2hhciAqbmV3bmFtZSwKKwkJY29uc3QgY2hhciAqY21kbGluZV9vcHRzLAorCQljb25zdCBzdHJ1Y3QgbW9kcHJvYmVfY29uZiAqY29uZiwKKwkJY29uc3QgY2hhciAqZGlybmFtZSwKKwkJZXJyZm5fdCBlcnJvciwKKwkJbW9kcHJvYmVfZmxhZ3NfdCBmbGFncyk7CisKK3N0YXRpYyB2b2lkIGRvX3NvZnRkZXAoY29uc3Qgc3RydWN0IG1vZHVsZV9zb2Z0ZGVwICpzb2Z0ZGVwLAorCQkgICAgICAgY29uc3QgY2hhciAqY21kbGluZV9vcHRzLAorCQkgICAgICAgY29uc3Qgc3RydWN0IG1vZHByb2JlX2NvbmYgKmNvbmYsCisJCSAgICAgICBjb25zdCBjaGFyICpkaXJuYW1lLAorCQkgICAgICAgZXJyZm5fdCBlcnJvciwKKwkJICAgICAgIG1vZHByb2JlX2ZsYWdzX3QgZmxhZ3MpCit7CisJc3RydWN0IHN0cmluZ190YWJsZSAqcHJlX21vZG5hbWVzLCAqcG9zdF9tb2RuYW1lczsKKwlpbnQgaSwgajsKKworCWlmICgrK3JlY3Vyc2lvbl9kZXB0aCA+PSBNQVhfUkVDVVJTSU9OKQorCQlmYXRhbCgibW9kcHJvYmU6IHNvZnRkZXAgZGVwZW5kZW5jeSBsb29wIGVuY291bnRlcmVkICVzICVzXG4iLAorCQkJKGZsYWdzICYgbWl0X3JlbW92ZSkgPyAicmVtb3ZpbmciIDogImluc2VydGluZyIsCisJCQlzb2Z0ZGVwLT5tb2RuYW1lKTsKKworCWlmIChmbGFncyAmIG1pdF9yZW1vdmUpIHsKKwkJLyogUmV2ZXJzZSBtb2R1bGUgb3JkZXIgaWYgcmVtb3ZpbmcuICovCisJCXByZV9tb2RuYW1lcyA9IHNvZnRkZXAtPnBvc3Q7CisJCXBvc3RfbW9kbmFtZXMgPSBzb2Z0ZGVwLT5wcmU7CisJfSBlbHNlIHsKKwkJcHJlX21vZG5hbWVzID0gc29mdGRlcC0+cHJlOworCQlwb3N0X21vZG5hbWVzID0gc29mdGRlcC0+cG9zdDsKKwl9CisKKwkvKiBNb2Rwcm9iZSBwcmVfbW9kbmFtZXMgKi8KKworCWZvciAoaSA9IDA7IHByZV9tb2RuYW1lcyAmJiBpIDwgcHJlX21vZG5hbWVzLT5jbnQ7IGkrKykgeworCQkvKiBSZXZlcnNlIG1vZHVsZSBvcmRlciBpZiByZW1vdmluZy4gKi8KKwkJaiA9IChmbGFncyAmIG1pdF9yZW1vdmUpID8gcHJlX21vZG5hbWVzLT5jbnQtMSAtIGkgOiBpOworCisJCWRvX21vZHByb2JlKHByZV9tb2RuYW1lcy0+c3RyW2pdLCBOVUxMLCAiIiwKKwkJCWNvbmYsIGRpcm5hbWUsIHdhcm4sIGZsYWdzKTsKKwl9CisKKwkvKiBNb2Rwcm9iZSBtYWluIG1vZHVsZSwgcGFzc2luZyBjbWRsaW5lX29wdHMsIGlnbm9yaW5nIHNvZnRkZXAgKi8KKworCWRvX21vZHByb2JlKHNvZnRkZXAtPm1vZG5hbWUsIE5VTEwsIGNtZGxpbmVfb3B0cywKKwkJY29uZiwgZGlybmFtZSwgd2FybiwgZmxhZ3MgfCBtaXRfaWdub3JlX2NvbW1hbmRzKTsKKworCS8qIE1vZHByb2JlIHBvc3RfbW9kbmFtZXMgKi8KKworCWZvciAoaSA9IDA7IHBvc3RfbW9kbmFtZXMgJiYgaSA8IHBvc3RfbW9kbmFtZXMtPmNudDsgaSsrKSB7CisJCS8qIFJldmVyc2UgbW9kdWxlIG9yZGVyIGlmIHJlbW92aW5nLiAqLworCQlqID0gKGZsYWdzICYgbWl0X3JlbW92ZSkgPyBwb3N0X21vZG5hbWVzLT5jbnQtMSAtIGkgOiBpOworCisJCWRvX21vZHByb2JlKHBvc3RfbW9kbmFtZXMtPnN0cltqXSwgTlVMTCwgIiIsIGNvbmYsCisJCQlkaXJuYW1lLCB3YXJuLCBmbGFncyk7CisJfQorfQorCisvKiBBY3R1YWxseSBkbyB0aGUgaW5zZXJ0LiAqLworc3RhdGljIGludCBpbnNtb2Qoc3RydWN0IGxpc3RfaGVhZCAqbGlzdCwKKwkJICAgY29uc3QgY2hhciAqb3B0c3RyaW5nLAorCQkgICBjb25zdCBjaGFyICpuZXduYW1lLAorCQkgICBjb25zdCBjaGFyICpjbWRsaW5lX29wdHMsCisJCSAgIGNvbnN0IHN0cnVjdCBtb2Rwcm9iZV9jb25mICpjb25mLAorCQkgICBjb25zdCBjaGFyICpkaXJuYW1lLAorCQkgICBlcnJmbl90IGVycm9yLAorCQkgICBtb2Rwcm9iZV9mbGFnc190IGZsYWdzKQoreworCWludCByZXQ7CisJc3RydWN0IGVsZl9maWxlICptb2R1bGU7CisJY29uc3Qgc3RydWN0IG1vZHVsZV9zb2Z0ZGVwICpzb2Z0ZGVwOworCWNvbnN0IGNoYXIgKmNvbW1hbmQ7CisJc3RydWN0IG1vZHVsZSAqbW9kID0gbGlzdF9lbnRyeShsaXN0LT5uZXh0LCBzdHJ1Y3QgbW9kdWxlLCBsaXN0KTsKKwlpbnQgcmMgPSAwOworCWludCBhbHJlYWR5X2xvYWRlZDsKKwljaGFyICpvcHRzID0gTlVMTDsKKworCS8qIFRha2UgdXMgb2ZmIHRoZSBsaXN0LiAqLworCWxpc3RfZGVsKCZtb2QtPmxpc3QpOworCisJLyogRG8gdGhpbmdzIHdlIChvciBwYXJlbnQpIGRlcGVuZCBvbiBmaXJzdC4gKi8KKwlpZiAoIWxpc3RfZW1wdHkobGlzdCkpIHsKKwkJbW9kcHJvYmVfZmxhZ3NfdCBmID0gZmxhZ3M7CisJCWYgJj0gfm1pdF9maXJzdF90aW1lOworCQlmICY9IH5taXRfaWdub3JlX2NvbW1hbmRzOworCQlpZiAoKHJjID0gaW5zbW9kKGxpc3QsICIiLCBOVUxMLAorCQkgICAgICAgIiIsIGNvbmYsIGRpcm5hbWUsIHdhcm4sIGYpKSAhPSAwKQorCQl7CisJCQllcnJvcigiRXJyb3IgaW5zZXJ0aW5nICVzICglcyk6ICVzXG4iLAorCQkJCW1vZC0+bW9kbmFtZSwgbW9kLT5maWxlbmFtZSwKKwkJCQlpbnNlcnRfbW9kZXJyb3IoZXJybm8pKTsKKwkJCWdvdG8gb3V0OworCQl9CisJfQorCisJLyogRG9uJ3QgZG8gQU5ZVEhJTkcgaWYgYWxyZWFkeSBpbiBrZXJuZWwuICovCisJYWxyZWFkeV9sb2FkZWQgPSBtb2R1bGVfaW5fa2VybmVsKG5ld25hbWUgPzogbW9kLT5tb2RuYW1lLCBOVUxMKTsKKworCWlmICghKGZsYWdzICYgbWl0X2lnbm9yZV9sb2FkZWQpICYmIGFscmVhZHlfbG9hZGVkID09IDEpIHsKKwkJaWYgKGZsYWdzICYgbWl0X2ZpcnN0X3RpbWUpCisJCQllcnJvcigiTW9kdWxlICVzIGFscmVhZHkgaW4ga2VybmVsLlxuIiwKKwkJCSAgICAgIG5ld25hbWUgPzogbW9kLT5tb2RuYW1lKTsKKwkJZ290byBvdXQ7CisJfQorCisJc29mdGRlcCA9IGZpbmRfc29mdGRlcChtb2QtPm1vZG5hbWUsIGNvbmYtPnNvZnRkZXBzKTsKKwlpZiAoc29mdGRlcCAmJiAhKGZsYWdzICYgbWl0X2lnbm9yZV9jb21tYW5kcykpIHsKKwkJZG9fc29mdGRlcChzb2Z0ZGVwLCBjbWRsaW5lX29wdHMsIGNvbmYsIGRpcm5hbWUsIAorCQkJICAgZXJyb3IsIGZsYWdzICYgKG1pdF9yZW1vdmUgfCBtaXRfZHJ5X3J1bikpOworCQlnb3RvIG91dDsKKwl9CisKKwljb21tYW5kID0gZmluZF9jb21tYW5kKG1vZC0+bW9kbmFtZSwgY29uZi0+Y29tbWFuZHMpOworCWlmIChjb21tYW5kICYmICEoZmxhZ3MgJiBtaXRfaWdub3JlX2NvbW1hbmRzKSkgeworCQlpZiAoYWxyZWFkeV9sb2FkZWQgPT0gLTEpIHsKKwkJCXdhcm4oIi9zeXMvbW9kdWxlLyBub3QgcHJlc2VudCBvciB0b28gb2xkLCIKKwkJCQkiIGFuZCAvcHJvYy9tb2R1bGVzIGRvZXMgbm90IGV4aXN0LlxuIik7CisJCQl3YXJuKCJJZ25vcmluZyBpbnN0YWxsIGNvbW1hbmRzIGZvciAlcyIKKwkJCQkiIGluIGNhc2UgaXQgaXMgYWxyZWFkeSBsb2FkZWQuXG4iLAorCQkJCW5ld25hbWUgPzogbW9kLT5tb2RuYW1lKTsKKwkJfSBlbHNlIHsKKwkJCWRvX2NvbW1hbmQobW9kLT5tb2RuYW1lLCBjb21tYW5kLCBmbGFncyAmIG1pdF9kcnlfcnVuLAorCQkJCSAgIGVycm9yLCAiaW5zdGFsbCIsIGNtZGxpbmVfb3B0cyk7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworCW1vZHVsZSA9IGdyYWJfZWxmX2ZpbGUobW9kLT5maWxlbmFtZSk7CisJaWYgKCFtb2R1bGUpIHsKKwkJZXJyb3IoIkNvdWxkIG5vdCByZWFkICclcyc6ICVzXG4iLCBtb2QtPmZpbGVuYW1lLAorCQkJKGVycm5vID09IEVOT0VYRUMpID8gIkludmFsaWQgbW9kdWxlIGZvcm1hdCIgOgorCQkJCXN0cmVycm9yKGVycm5vKSk7CisJCWdvdG8gb3V0OworCX0KKwlpZiAobmV3bmFtZSkKKwkJcmVuYW1lX21vZHVsZShtb2R1bGUsIG1vZC0+bW9kbmFtZSwgbmV3bmFtZSk7CisJaWYgKGZsYWdzICYgbWl0X3N0cmlwX21vZHZlcnNpb24pCisJCW1vZHVsZS0+b3BzLT5zdHJpcF9zZWN0aW9uKG1vZHVsZSwgIl9fdmVyc2lvbnMiKTsKKwlpZiAoZmxhZ3MgJiBtaXRfc3RyaXBfdmVybWFnaWMpCisJCWNsZWFyX21hZ2ljKG1vZHVsZSk7CisKKwkvKiBDb25maWcgZmlsZSBtaWdodCBoYXZlIGdpdmVuIG1vcmUgb3B0aW9ucyAqLworCW9wdHMgPSBhZGRfZXh0cmFfb3B0aW9ucyhtb2QtPm1vZG5hbWUsIG9wdHN0cmluZywgY29uZi0+b3B0aW9ucyk7CisKKwlpbmZvKCJpbnNtb2QgJXMgJXNcbiIsIG1vZC0+ZmlsZW5hbWUsIG9wdHMpOworCisJaWYgKGZsYWdzICYgbWl0X2RyeV9ydW4pCisJCWdvdG8gb3V0X2VsZl9maWxlOworCisJcmV0ID0gaW5pdF9tb2R1bGUobW9kdWxlLT5kYXRhLCBtb2R1bGUtPmxlbiwgb3B0cyk7CisJaWYgKHJldCAhPSAwKSB7CisJCWlmIChlcnJubyA9PSBFRVhJU1QpIHsKKwkJCWlmIChmbGFncyAmIG1pdF9maXJzdF90aW1lKQorCQkJCWVycm9yKCJNb2R1bGUgJXMgYWxyZWFkeSBpbiBrZXJuZWwuXG4iLAorCQkJCSAgICAgIG5ld25hbWUgPzogbW9kLT5tb2RuYW1lKTsKKwkJCWdvdG8gb3V0X2VsZl9maWxlOworCQl9CisJCS8qIGRvbid0IHdhcm4gbm9pc2VseSBpZiB3ZSdyZSBsb2FkaW5nIG11bHRpcGxlIGFsaWFzZXMuICovCisJCS8qIG9uZSBvZiB0aGUgYWxpYXNlcyBtYXkgdHJ5IHRvIHVzZSBoYXJkd2FyZSB3ZSBkb24ndCBoYXZlLiAqLworCQlpZiAoKGVycm9yICE9IHdhcm4pIHx8ICh2ZXJib3NlKSkKKwkJCWVycm9yKCJFcnJvciBpbnNlcnRpbmcgJXMgKCVzKTogJXNcbiIsCisJCQkgICAgICBtb2QtPm1vZG5hbWUsIG1vZC0+ZmlsZW5hbWUsCisJCQkgICAgICBpbnNlcnRfbW9kZXJyb3IoZXJybm8pKTsKKwkJcmMgPSAxOworCX0KKyBvdXRfZWxmX2ZpbGU6CisJcmVsZWFzZV9lbGZfZmlsZShtb2R1bGUpOworCWZyZWUob3B0cyk7Cisgb3V0OgorCWZyZWVfbW9kdWxlKG1vZCk7CisJcmV0dXJuIHJjOworfQorCisvKiBEbyByZWN1cnNpdmUgcmVtb3ZhbC4gKi8KK3N0YXRpYyB2b2lkIHJtbW9kKHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QsCisJCSAgY29uc3QgY2hhciAqbmFtZSwKKwkJICBjb25zdCBjaGFyICpjbWRsaW5lX29wdHMsCisJCSAgY29uc3Qgc3RydWN0IG1vZHByb2JlX2NvbmYgKmNvbmYsCisJCSAgY29uc3QgY2hhciAqZGlybmFtZSwKKwkJICBlcnJmbl90IGVycm9yLAorCQkgIG1vZHByb2JlX2ZsYWdzX3QgZmxhZ3MpCit7CisJY29uc3Qgc3RydWN0IG1vZHVsZV9zb2Z0ZGVwICpzb2Z0ZGVwOworCWNvbnN0IGNoYXIgKmNvbW1hbmQ7CisJdW5zaWduZWQgaW50IHVzZWNvdW50ID0gMDsKKwlzdHJ1Y3QgbW9kdWxlICptb2QgPSBsaXN0X2VudHJ5KGxpc3QtPm5leHQsIHN0cnVjdCBtb2R1bGUsIGxpc3QpOworCWludCBleGlzdHM7CisKKwkvKiBUYWtlIGZpcnN0IG9uZSBvZmYgdGhlIGxpc3QuICovCisJbGlzdF9kZWwoJm1vZC0+bGlzdCk7CisKKwlpZiAoIW5hbWUpCisJCW5hbWUgPSBtb2QtPm1vZG5hbWU7CisKKwkvKiBEb24ndCBkbyBBTllUSElORyBpZiBub3QgbG9hZGVkLiAqLworCWV4aXN0cyA9IG1vZHVsZV9pbl9rZXJuZWwobmFtZSwgJnVzZWNvdW50KTsKKwlpZiAoZXhpc3RzID09IDApCisJCWdvdG8gbm9uZXhpc3RlbnRfbW9kdWxlOworCisJLyogRXZlbiBpZiByZW5hbWVkLCBmaW5kIGNvbW1hbmRzL3NvZnRkZXBzIHRvIG9yaWcuIG5hbWUuICovCisKKwlzb2Z0ZGVwID0gZmluZF9zb2Z0ZGVwKG1vZC0+bW9kbmFtZSwgY29uZi0+c29mdGRlcHMpOworCWlmIChzb2Z0ZGVwICYmICEoZmxhZ3MgJiBtaXRfaWdub3JlX2NvbW1hbmRzKSkgeworCQlkb19zb2Z0ZGVwKHNvZnRkZXAsIGNtZGxpbmVfb3B0cywgY29uZiwgZGlybmFtZSwKKwkJCSAgIGVycm9yLCBmbGFncyAmIChtaXRfcmVtb3ZlIHwgbWl0X2RyeV9ydW4pKTsKKwkJZ290byByZW1vdmVfcmVzdDsKKwl9CisKKwljb21tYW5kID0gZmluZF9jb21tYW5kKG1vZC0+bW9kbmFtZSwgY29uZi0+Y29tbWFuZHMpOworCWlmIChjb21tYW5kICYmICEoZmxhZ3MgJiBtaXRfaWdub3JlX2NvbW1hbmRzKSkgeworCQlpZiAoZXhpc3RzID09IC0xKSB7CisJCQl3YXJuKCIvc3lzL21vZHVsZS8gbm90IHByZXNlbnQgb3IgdG9vIG9sZCwiCisJCQkJIiBhbmQgL3Byb2MvbW9kdWxlcyBkb2VzIG5vdCBleGlzdC5cbiIpOworCQkJd2FybigiSWdub3JpbmcgcmVtb3ZlIGNvbW1hbmRzIGZvciAlcyIKKwkJCQkiIGluIGNhc2UgaXQgaXMgbm90IGxvYWRlZC5cbiIsCisJCQkJbW9kLT5tb2RuYW1lKTsKKwkJfSBlbHNlIHsKKwkJCWRvX2NvbW1hbmQobW9kLT5tb2RuYW1lLCBjb21tYW5kLCBmbGFncyAmIG1pdF9kcnlfcnVuLAorCQkJCSAgIGVycm9yLCAicmVtb3ZlIiwgY21kbGluZV9vcHRzKTsKKwkJCWdvdG8gcmVtb3ZlX3Jlc3Q7CisJCX0KKwl9CisKKwlpZiAodXNlY291bnQgIT0gMCkgeworCQlpZiAoIShmbGFncyAmIG1pdF9xdWlldF9pbnVzZSkpCisJCQllcnJvcigiTW9kdWxlICVzIGlzIGluIHVzZS5cbiIsIG5hbWUpOworCQlnb3RvIHJlbW92ZV9yZXN0OworCX0KKworCWluZm8oInJtbW9kICVzXG4iLCBtb2QtPmZpbGVuYW1lKTsKKworCWlmIChmbGFncyAmIG1pdF9kcnlfcnVuKQorCQlnb3RvIHJlbW92ZV9yZXN0OworCisJaWYgKGRlbGV0ZV9tb2R1bGUobmFtZSwgT19FWENMKSAhPSAwKSB7CisJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQlnb3RvIG5vbmV4aXN0ZW50X21vZHVsZTsKKwkJZXJyb3IoIkVycm9yIHJlbW92aW5nICVzICglcyk6ICVzXG4iLAorCQkgICAgICBuYW1lLCBtb2QtPmZpbGVuYW1lLAorCQkgICAgICByZW1vdmVfbW9kZXJyb3IoZXJybm8pKTsKKwl9CisKKyByZW1vdmVfcmVzdDoKKwkvKiBOb3cgZG8gdGhpbmdzIHdlIGRlcGVuZC4gKi8KKwlpZiAoIWxpc3RfZW1wdHkobGlzdCkpIHsKKwkJZmxhZ3MgJj0gfm1pdF9maXJzdF90aW1lOworCQlmbGFncyAmPSB+bWl0X2lnbm9yZV9jb21tYW5kczsKKwkJZmxhZ3MgfD0gbWl0X3F1aWV0X2ludXNlOworCisJCXJtbW9kKGxpc3QsIE5VTEwsICIiLCBjb25mLCBkaXJuYW1lLCB3YXJuLCBmbGFncyk7CisJfQorCWZyZWVfbW9kdWxlKG1vZCk7CisJcmV0dXJuOworCitub25leGlzdGVudF9tb2R1bGU6CisJaWYgKGZsYWdzICYgbWl0X2ZpcnN0X3RpbWUpCisJCWZhdGFsKCJNb2R1bGUgJXMgaXMgbm90IGluIGtlcm5lbC5cbiIsIG1vZC0+bW9kbmFtZSk7CisJZ290byByZW1vdmVfcmVzdDsKK30KKworc3RhdGljIGludCBoYW5kbGVfbW9kdWxlKGNvbnN0IGNoYXIgKm1vZG5hbWUsCisJCQkgIHN0cnVjdCBsaXN0X2hlYWQgKnRvZG9fbGlzdCwKKwkJCSAgY29uc3QgY2hhciAqbmV3bmFtZSwKKwkJCSAgY29uc3QgY2hhciAqb3B0aW9ucywKKwkJCSAgY29uc3QgY2hhciAqY21kbGluZV9vcHRzLAorCQkJICBjb25zdCBzdHJ1Y3QgbW9kcHJvYmVfY29uZiAqY29uZiwKKwkJCSAgY29uc3QgY2hhciAqZGlybmFtZSwKKwkJCSAgZXJyZm5fdCBlcnJvciwKKwkJCSAgbW9kcHJvYmVfZmxhZ3NfdCBmbGFncykKK3sKKwlpZiAobGlzdF9lbXB0eSh0b2RvX2xpc3QpKSB7CisJCWNvbnN0IHN0cnVjdCBtb2R1bGVfc29mdGRlcCAqc29mdGRlcDsKKwkJY29uc3QgY2hhciAqY29tbWFuZDsKKworCQkvKiBUaGUgZGVwZW5kZW5jaWVzIGhhdmUgdG8gYmUgcmVhbCBtb2R1bGVzLCBidXQKKwkJICAgaGFuZGxlIGNhc2Ugd2hlcmUgdGhlIGZpcnN0IGlzIGNvbXBsZXRlbHkgYm9ndXMuICovCisKKwkJc29mdGRlcCA9IGZpbmRfc29mdGRlcChtb2RuYW1lLCBjb25mLT5zb2Z0ZGVwcyk7CisJCWlmIChzb2Z0ZGVwICYmICEoZmxhZ3MgJiBtaXRfaWdub3JlX2NvbW1hbmRzKSkgeworCQkJZG9fc29mdGRlcChzb2Z0ZGVwLCBjbWRsaW5lX29wdHMsIGNvbmYsIGRpcm5hbWUsCisJCQkJICAgZXJyb3IsIGZsYWdzICYgKG1pdF9yZW1vdmUgfCBtaXRfZHJ5X3J1bikpOworCQkJcmV0dXJuIDA7CisJCX0KKworCQljb21tYW5kID0gZmluZF9jb21tYW5kKG1vZG5hbWUsIGNvbmYtPmNvbW1hbmRzKTsKKwkJaWYgKGNvbW1hbmQgJiYgIShmbGFncyAmIG1pdF9pZ25vcmVfY29tbWFuZHMpKSB7CisJCQlkb19jb21tYW5kKG1vZG5hbWUsIGNvbW1hbmQsIGZsYWdzICYgbWl0X2RyeV9ydW4sIGVycm9yLAorCQkJCSAgIChmbGFncyAmIG1pdF9yZW1vdmUpID8gInJlbW92ZSI6Imluc3RhbGwiLCBjbWRsaW5lX29wdHMpOworCQkJcmV0dXJuIDA7CisJCX0KKworCQlpZiAoIXF1aWV0KQorCQkJZXJyb3IoIk1vZHVsZSAlcyBub3QgZm91bmQuXG4iLCBtb2RuYW1lKTsKKwkJcmV0dXJuIDE7CisJfQorCisJaWYgKGZsYWdzICYgbWl0X3JlbW92ZSkKKwkJcm1tb2QodG9kb19saXN0LCBuZXduYW1lLCBjbWRsaW5lX29wdHMsCisJCSAgICAgIGNvbmYsIGRpcm5hbWUsIGVycm9yLCBmbGFncyk7CisJZWxzZQorCQlpbnNtb2QodG9kb19saXN0LCBvcHRpb25zLCBuZXduYW1lLAorCQkgICAgICAgY21kbGluZV9vcHRzLCBjb25mLCBkaXJuYW1lLCBlcnJvciwgZmxhZ3MpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBoYW5kbGVfYnVpbHRpbl9tb2R1bGUoY29uc3QgY2hhciAqbW9kbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyZm5fdCBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kcHJvYmVfZmxhZ3NfdCBmbGFncykKK3sKKwlpZiAoZmxhZ3MgJiBtaXRfcmVtb3ZlKSB7CisJCWVycm9yKCJNb2R1bGUgJXMgaXMgYnVpbHRpblxuIiwgbW9kbmFtZSk7CisJCXJldHVybiAxOworCX0gZWxzZSBpZiAoZmxhZ3MgJiBtaXRfZmlyc3RfdGltZSkgeworCQllcnJvcigiTW9kdWxlICVzIGFscmVhZHkgaW4ga2VybmVsIChidWlsdGluKS5cbiIsIG1vZG5hbWUpOworCQlyZXR1cm4gMTsKKwl9IGVsc2UgaWYgKGZsYWdzICYgbWl0X2lnbm9yZV9sb2FkZWQpIHsKKwkJLyogLS1zaG93LWRlcGVuZHMgZ2l2ZW4gKi8KKwkJaW5mbygiYnVpbHRpbiAlc1xuIiwgbW9kbmFtZSk7CisJfQorCXJldHVybiAwOworfQorCitpbnQgZG9fbW9kcHJvYmUoY29uc3QgY2hhciAqbW9kdWxlbmFtZSwKKwkJY29uc3QgY2hhciAqbmV3bmFtZSwKKwkJY29uc3QgY2hhciAqY21kbGluZV9vcHRzLAorCQljb25zdCBzdHJ1Y3QgbW9kcHJvYmVfY29uZiAqY29uZiwKKwkJY29uc3QgY2hhciAqZGlybmFtZSwKKwkJZXJyZm5fdCBlcnJvciwKKwkJbW9kcHJvYmVfZmxhZ3NfdCBmbGFncykKK3sKKwljaGFyICptb2RuYW1lOworCXN0cnVjdCBtb2R1bGVfYWxpYXMgKm1hdGNoaW5nX2FsaWFzZXM7CisJTElTVF9IRUFEKGxpc3QpOworCWludCBmYWlsZWQgPSAwOworCisJLyogQ29udmVydCBuYW1lIHdlIGFyZSBsb29raW5nIGZvciAqLworCW1vZG5hbWUgPSB1bmRlcnNjb3JlcyhOT0ZBSUwoc3RyZHVwKG1vZHVsZW5hbWUpKSk7CisKKwltYXRjaGluZ19hbGlhc2VzID0gZmluZF9hbGlhc2VzKGNvbmYtPmFsaWFzZXMsIG1vZG5hbWUpOworCisJLyogTm8gbHVjaz8gIFRyeSBzeW1ib2wgbmFtZXMsIGlmIHN0YXJ0cyB3aXRoIHN5bWJvbDouICovCisJaWYgKCFtYXRjaGluZ19hbGlhc2VzICYmIHN0cnN0YXJ0cyhtb2RuYW1lLCAic3ltYm9sOiIpKSB7CisJCWNoYXIgKnN5bWZpbGVuYW1lOworCisJCW5vZmFpbF9hc3ByaW50Zigmc3ltZmlsZW5hbWUsICIlcy9tb2R1bGVzLnN5bWJvbHMiLCBkaXJuYW1lKTsKKwkJcmVhZF9hbGlhc2VzKHN5bWZpbGVuYW1lLCBtb2RuYW1lLCAwLCAmbWF0Y2hpbmdfYWxpYXNlcyk7CisJCWZyZWUoc3ltZmlsZW5hbWUpOworCX0KKwlpZiAoIW1hdGNoaW5nX2FsaWFzZXMpIHsKKwkJaWYoIXN0cmNocihtb2RuYW1lLCAnOicpKQorCQkJcmVhZF9kZXBlbmRzKGRpcm5hbWUsIG1vZG5hbWUsICZsaXN0KTsKKworCQkvKiBXZSBvbmx5IHVzZSBjYW5uZWQgYWxpYXNlcyBhcyBsYXN0IHJlc29ydC4gKi8KKwkJaWYgKGxpc3RfZW1wdHkoJmxpc3QpCisJCSAgICAmJiAhZmluZF9zb2Z0ZGVwKG1vZG5hbWUsIGNvbmYtPnNvZnRkZXBzKQorCQkgICAgJiYgIWZpbmRfY29tbWFuZChtb2RuYW1lLCBjb25mLT5jb21tYW5kcykpCisJCXsKKwkJCWNoYXIgKmFsaWFzZmlsZW5hbWU7CisKKwkJCW5vZmFpbF9hc3ByaW50ZigmYWxpYXNmaWxlbmFtZSwgIiVzL21vZHVsZXMuYWxpYXMiLAorCQkJCQlkaXJuYW1lKTsKKwkJCXJlYWRfYWxpYXNlcyhhbGlhc2ZpbGVuYW1lLCBtb2RuYW1lLCAwLAorCQkJCSAgICAgJm1hdGNoaW5nX2FsaWFzZXMpOworCQkJZnJlZShhbGlhc2ZpbGVuYW1lKTsKKwkJCS8qIGJ1aWx0aW4gbW9kdWxlPyAqLworCQkJaWYgKCFtYXRjaGluZ19hbGlhc2VzICYmIG1vZHVsZV9idWlsdGluKGRpcm5hbWUsIG1vZG5hbWUpID4gMCkgeworCQkJCWZhaWxlZCB8PSBoYW5kbGVfYnVpbHRpbl9tb2R1bGUobW9kbmFtZSwgZXJyb3IsCisJCQkJCQkJCWZsYWdzKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorCX0KKworCWFwcGx5X2JsYWNrbGlzdCgmbWF0Y2hpbmdfYWxpYXNlcywgY29uZi0+YmxhY2tsaXN0KTsKKwlpZihmbGFncyAmIG1pdF9yZXNvbHZlX2FsaWFzKSB7CisJCXN0cnVjdCBtb2R1bGVfYWxpYXMgKmFsaWFzZXMgPSBtYXRjaGluZ19hbGlhc2VzOworCisJCWZvcig7IGFsaWFzZXM7IGFsaWFzZXM9YWxpYXNlcy0+bmV4dCkKKwkJCXByaW50ZigiJXNcbiIsIGFsaWFzZXMtPm1vZHVsZSk7CisJCWdvdG8gb3V0OworCX0KKwlpZiAobWF0Y2hpbmdfYWxpYXNlcykgeworCQllcnJmbl90IGVyciA9IGVycm9yOworCQlzdHJ1Y3QgbW9kdWxlX2FsaWFzICphbGlhc2VzID0gbWF0Y2hpbmdfYWxpYXNlczsKKworCQkvKiBNb3JlIHRoYW4gb25lIGFsaWFzPyAgRG9uJ3QgYmFpbCBvdXQgb24gZmFpbHVyZS4gKi8KKwkJaWYgKGFsaWFzZXMtPm5leHQpCisJCQllcnIgPSB3YXJuOworCQl3aGlsZSAoYWxpYXNlcykgeworCQkJLyogQWRkIHRoZSBvcHRpb25zIGZvciB0aGlzIGFsaWFzLiAqLworCQkJY2hhciAqb3B0czsKKwkJCW9wdHMgPSBhZGRfZXh0cmFfb3B0aW9ucyhtb2RuYW1lLAorCQkJCQkJIGNtZGxpbmVfb3B0cywgY29uZi0+b3B0aW9ucyk7CisKKwkJCXJlYWRfZGVwZW5kcyhkaXJuYW1lLCBhbGlhc2VzLT5tb2R1bGUsICZsaXN0KTsKKwkJCWZhaWxlZCB8PSBoYW5kbGVfbW9kdWxlKGFsaWFzZXMtPm1vZHVsZSwKKwkJCQkmbGlzdCwgbmV3bmFtZSwgb3B0cywgY21kbGluZV9vcHRzLAorCQkJCWNvbmYsIGRpcm5hbWUsIGVyciwgZmxhZ3MpOworCisJCQlhbGlhc2VzID0gYWxpYXNlcy0+bmV4dDsKKwkJCWZyZWUob3B0cyk7CisJCQlJTklUX0xJU1RfSEVBRCgmbGlzdCk7CisJCX0KKwl9IGVsc2UgeworCQlpZiAoZmxhZ3MgJiBtaXRfdXNlX2JsYWNrbGlzdAorCQkgICAgJiYgZmluZF9ibGFja2xpc3QobW9kbmFtZSwgY29uZi0+YmxhY2tsaXN0KSkKKwkJCWdvdG8gb3V0OworCisJCWZhaWxlZCB8PSBoYW5kbGVfbW9kdWxlKG1vZG5hbWUsICZsaXN0LCBuZXduYW1lLCBjbWRsaW5lX29wdHMsCisJCQljbWRsaW5lX29wdHMsIGNvbmYsIGRpcm5hbWUsIGVycm9yLCBmbGFncyk7CisJfQorCitvdXQ6CisJZnJlZShtb2RuYW1lKTsKKwlmcmVlX2FsaWFzZXMobWF0Y2hpbmdfYWxpYXNlcyk7CisJcmV0dXJuIGZhaWxlZDsKK30KKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geyB7ICJ2ZXJzaW9uIiwgMCwgTlVMTCwgJ1YnIH0sCisJCQkJICAgeyAidmVyYm9zZSIsIDAsIE5VTEwsICd2JyB9LAorCQkJCSAgIHsgInF1aWV0IiwgMCwgTlVMTCwgJ3EnIH0sCisJCQkJICAgeyAic3lzbG9nIiwgMCwgTlVMTCwgJ3MnIH0sCisJCQkJICAgeyAic2hvdyIsIDAsIE5VTEwsICduJyB9LAorCQkJCSAgIHsgImRyeS1ydW4iLCAwLCBOVUxMLCAnbicgfSwKKwkJCQkgICB7ICJzaG93LWRlcGVuZHMiLCAwLCBOVUxMLCAnRCcgfSwKKwkJCQkgICB7ICJyZXNvbHZlLWFsaWFzIiwgMCwgTlVMTCwgJ1InIH0sCisJCQkJICAgeyAiZGlybmFtZSIsIDEsIE5VTEwsICdkJyB9LAorCQkJCSAgIHsgInNldC12ZXJzaW9uIiwgMSwgTlVMTCwgJ1MnIH0sCisJCQkJICAgeyAiY29uZmlnIiwgMSwgTlVMTCwgJ0MnIH0sCisJCQkJICAgeyAibmFtZSIsIDEsIE5VTEwsICdvJyB9LAorCQkJCSAgIHsgInJlbW92ZSIsIDAsIE5VTEwsICdyJyB9LAorCQkJCSAgIHsgInNob3djb25maWciLCAwLCBOVUxMLCAnYycgfSwKKwkJCQkgICB7ICJsaXN0IiwgMCwgTlVMTCwgJ2wnIH0sCisJCQkJICAgeyAidHlwZSIsIDEsIE5VTEwsICd0JyB9LAorCQkJCSAgIHsgImFsbCIsIDAsIE5VTEwsICdhJyB9LAorCQkJCSAgIHsgImlnbm9yZS1pbnN0YWxsIiwgMCwgTlVMTCwgJ2knIH0sCisJCQkJICAgeyAiaWdub3JlLXJlbW92ZSIsIDAsIE5VTEwsICdpJyB9LAorCQkJCSAgIHsgInVzZS1ibGFja2xpc3QiLCAwLCBOVUxMLCAnYicgfSwKKwkJCQkgICB7ICJmb3JjZSIsIDAsIE5VTEwsICdmJyB9LAorCQkJCSAgIHsgImZvcmNlLXZlcm1hZ2ljIiwgMCwgTlVMTCwgMSB9LAorCQkJCSAgIHsgImZvcmNlLW1vZHZlcnNpb24iLCAwLCBOVUxMLCAyIH0sCisJCQkJICAgeyAiZmlyc3QtdGltZSIsIDAsIE5VTEwsIDMgfSwKKwkJCQkgICB7ICJkdW1wLW1vZHZlcnNpb25zIiwgMCwgTlVMTCwgNCB9LAorCQkJCSAgIHsgTlVMTCwgMCwgTlVMTCwgMCB9IH07CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisJc3RydWN0IHV0c25hbWUgYnVmOworCXN0cnVjdCBzdGF0IHN0YXRidWY7CisJaW50IG9wdDsKKwlpbnQgZHVtcF9jb25maWcgPSAwOworCWludCBsaXN0X29ubHkgPSAwOworCWludCBhbGwgPSAwOworCWludCBkdW1wX21vZHZlciA9IDA7CisJdW5zaWduZWQgaW50IGksIG51bV9tb2R1bGVzOworCWNoYXIgKnR5cGUgPSBOVUxMOworCWNvbnN0IGNoYXIgKmNvbmZpZ25hbWUgPSBOVUxMOworCWNoYXIgKmJhc2VkaXIgPSAiIjsKKwljaGFyICpjbWRsaW5lX29wdHMgPSBOVUxMOworCWNoYXIgKm5ld25hbWUgPSBOVUxMOworCWNoYXIgKmRpcm5hbWU7CisJZXJyZm5fdCBlcnJvciA9IGZhdGFsOworCWludCBmYWlsZWQgPSAwOworCW1vZHByb2JlX2ZsYWdzX3QgZmxhZ3MgPSAwOworCXN0cnVjdCBtb2Rwcm9iZV9jb25mIGNvbmYgPSB7fTsKKworCXJlY3Vyc2lvbl9kZXB0aCA9IDA7CisKKwkvKiBQcmVwZW5kIG9wdGlvbnMgZnJvbSBlbnZpcm9ubWVudC4gKi8KKwlhcmd2ID0gbWVyZ2VfYXJncyhnZXRlbnYoIk1PRFBST0JFX09QVElPTlMiKSwgYXJndiwgJmFyZ2MpOworCisJdW5hbWUoJmJ1Zik7CisJd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiVnZxc25kOlM6QzpEUm86cmNsdDphaWJmIiwgb3B0aW9ucywgTlVMTCkpICE9IC0xKXsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAnVic6CisJCQlwdXRzKFBBQ0tBR0UgIiB2ZXJzaW9uICIgVkVSU0lPTik7CisJCQlleGl0KDApOworCQljYXNlICd2JzoKKwkJCWFkZF90b19lbnZfdmFyKCItdiIpOworCQkJdmVyYm9zZSA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAncSc6CisJCQlxdWlldCA9IDE7CisJCQlhZGRfdG9fZW52X3ZhcigiLXEiKTsKKwkJCWJyZWFrOworCQljYXNlICdzJzoKKwkJCWFkZF90b19lbnZfdmFyKCItcyIpOworCQkJbG9nZ2luZyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbic6CisJCQlmbGFncyB8PSBtaXRfZHJ5X3J1bjsKKwkJCWJyZWFrOworCQljYXNlICdkJzoKKwkJCWJhc2VkaXIgPSBvcHRhcmc7CisJCQlicmVhazsKKwkJY2FzZSAnUyc6CisJCQlzdHJuY3B5KGJ1Zi5yZWxlYXNlLCBvcHRhcmcsIHNpemVvZihidWYucmVsZWFzZSkpOworCQkJYnVmLnJlbGVhc2Vbc2l6ZW9mKGJ1Zi5yZWxlYXNlKS0xXSA9ICdcMCc7CisJCQlicmVhazsKKwkJY2FzZSAnQyc6CisJCQljb25maWduYW1lID0gb3B0YXJnOworCQkJYWRkX3RvX2Vudl92YXIoIi1DIik7CisJCQlhZGRfdG9fZW52X3Zhcihjb25maWduYW1lKTsKKwkJCWJyZWFrOworCQljYXNlICdEJzoKKwkJCWZsYWdzIHw9IG1pdF9kcnlfcnVuOworCQkJZmxhZ3MgfD0gbWl0X2lnbm9yZV9sb2FkZWQ7CisJCQl2ZXJib3NlID0gMTsKKwkJCWJyZWFrOworCQljYXNlICdSJzoKKwkJCWZsYWdzIHw9IG1pdF9yZXNvbHZlX2FsaWFzOworCQkJYnJlYWs7CisJCWNhc2UgJ28nOgorCQkJbmV3bmFtZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdyJzoKKwkJCWZsYWdzIHw9IG1pdF9yZW1vdmU7CisJCQlicmVhazsKKwkJY2FzZSAnYyc6CisJCQlkdW1wX2NvbmZpZyA9IDE7CisJCQlicmVhazsKKwkJY2FzZSAnbCc6CisJCQlsaXN0X29ubHkgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3QnOgorCQkJdHlwZSA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdhJzoKKwkJCWFsbCA9IDE7CisJCQllcnJvciA9IHdhcm47CisJCQlicmVhazsKKwkJY2FzZSAnaSc6CisJCQlmbGFncyB8PSBtaXRfaWdub3JlX2NvbW1hbmRzOworCQkJYnJlYWs7CisJCWNhc2UgJ2InOgorCQkJZmxhZ3MgfD0gbWl0X3VzZV9ibGFja2xpc3Q7CisJCQlicmVhazsKKwkJY2FzZSAnZic6CisJCQlmbGFncyB8PSBtaXRfc3RyaXBfdmVybWFnaWM7CisJCQlmbGFncyB8PSBtaXRfc3RyaXBfbW9kdmVyc2lvbjsKKwkJCWJyZWFrOworCQljYXNlIDE6CisJCQlmbGFncyB8PSBtaXRfc3RyaXBfdmVybWFnaWM7CisJCQlicmVhazsKKwkJY2FzZSAyOgorCQkJZmxhZ3MgfD0gbWl0X3N0cmlwX21vZHZlcnNpb247CisJCQlicmVhazsKKwkJY2FzZSAzOgorCQkJZmxhZ3MgfD0gbWl0X2ZpcnN0X3RpbWU7CisJCQlicmVhazsKKwkJY2FzZSA0OgorCQkJZHVtcF9tb2R2ZXIgPSAxOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlwcmludF91c2FnZShhcmd2WzBdKTsKKwkJfQorCX0KKworCS8qIElmIHN0ZGVyciBub3Qgb3BlbiwgZ28gdG8gc3lzbG9nICovCisJaWYgKGxvZ2dpbmcgfHwgZnN0YXQoU1RERVJSX0ZJTEVOTywgJnN0YXRidWYpICE9IDApIHsKKwkJb3BlbmxvZygibW9kcHJvYmUiLCBMT0dfQ09OUywgTE9HX0RBRU1PTik7CisJCWxvZ2dpbmcgPSAxOworCX0KKworCWlmIChhcmdjIDwgb3B0aW5kICsgMSAmJiAhZHVtcF9jb25maWcgJiYgIWxpc3Rfb25seSkKKwkJcHJpbnRfdXNhZ2UoYXJndlswXSk7CisKKwlub2ZhaWxfYXNwcmludGYoJmRpcm5hbWUsICIlcyVzLyVzIiwgYmFzZWRpciwgTU9EVUxFX0RJUiwgYnVmLnJlbGVhc2UpOworCisJLyogT2xkLXN0eWxlIC10IHh4eCB3aWxkY2FyZD8gIE9ubHkgd2l0aCAtbC4gKi8KKwlpZiAobGlzdF9vbmx5KSB7CisJCWlmIChvcHRpbmQrMSA8IGFyZ2MpCisJCQlmYXRhbCgiQ2FuJ3QgaGF2ZSBtdWx0aXBsZSB3aWxkY2FyZHNcbiIpOworCQkvKiBmcHJpbnRmKHN0ZGVyciwgIm1hbiBmaW5kXG4iKTsgcmV0dXJuIDE7ICovCisJCWZhaWxlZCA9IGRvX3dpbGRjYXJkKGRpcm5hbWUsIHR5cGUsIGFyZ3Zbb3B0aW5kXT86IioiKTsKKwkJZ290byBvdXQ7CisJfQorCWlmICh0eXBlKQorCQlmYXRhbCgiLXQgb25seSBzdXBwb3J0ZWQgd2l0aCAtbCIpOworCisJLyogUmVhZCBhbGlhc2VzLCBvcHRpb25zIGV0Yy4gKi8KKwlwYXJzZV90b3BsZXZlbF9jb25maWcoY29uZmlnbmFtZSwgJmNvbmYsIGR1bXBfY29uZmlnLCBmbGFncyAmIG1pdF9yZW1vdmUpOworCisJLyogUmVhZCBtb2R1bGUgb3B0aW9ucyBmcm9tIGtlcm5lbCBjb21tYW5kIGxpbmUgKi8KKwlwYXJzZV9rY21kbGluZSgxLCAmY29uZi5vcHRpb25zKTsKKwkKKwlpZiAoZHVtcF9jb25maWcpIHsKKwkJY2hhciAqYWxpYXNmaWxlbmFtZSwgKnN5bWZpbGVuYW1lOworCQlzdHJ1Y3QgbW9kcHJvYmVfY29uZiBjb25mID0ge307CisKKwkJbm9mYWlsX2FzcHJpbnRmKCZhbGlhc2ZpbGVuYW1lLCAiJXMvbW9kdWxlcy5hbGlhcyIsIGRpcm5hbWUpOworCQlub2ZhaWxfYXNwcmludGYoJnN5bWZpbGVuYW1lLCAiJXMvbW9kdWxlcy5zeW1ib2xzIiwgZGlybmFtZSk7CisKKwkJcGFyc2VfdG9wbGV2ZWxfY29uZmlnKGNvbmZpZ25hbWUsICZjb25mLCAxLCAwKTsKKwkJLyogUmVhZCBtb2R1bGUgb3B0aW9ucyBmcm9tIGtlcm5lbCBjb21tYW5kIGxpbmUgKi8KKwkJcGFyc2Vfa2NtZGxpbmUoMSwgJmNvbmYub3B0aW9ucyk7CisJCXJlYWRfYWxpYXNlcyhhbGlhc2ZpbGVuYW1lLCAiIiwgMSwgJmNvbmYuYWxpYXNlcyk7CisJCXJlYWRfYWxpYXNlcyhzeW1maWxlbmFtZSwgIiIsIDEsICZjb25mLmFsaWFzZXMpOworCisJCWdvdG8gb3V0OworCX0KKworCWlmICgoZmxhZ3MgJiBtaXRfcmVtb3ZlKSB8fCBhbGwpIHsKKwkJbnVtX21vZHVsZXMgPSBhcmdjIC0gb3B0aW5kOworCQljbWRsaW5lX29wdHMgPSBOT0ZBSUwoc3RyZHVwKCIiKSk7CisJfSBlbHNlIHsKKwkJbnVtX21vZHVsZXMgPSAxOworCQljbWRsaW5lX29wdHMgPSBnYXRoZXJfb3B0aW9ucyhhcmd2K29wdGluZCsxKTsKKwl9CisKKwkvKiBudW1fbW9kdWxlcyBpcyBhbHdheXMgMSBleGNlcHQgZm9yIC1yIG9yIC1hLiAqLworCWZvciAoaSA9IDA7IGkgPCBudW1fbW9kdWxlczsgaSsrKSB7CisJCWNoYXIgKm1vZG5hbWUgPSBhcmd2W29wdGluZCArIGldOworCisJCWlmIChkdW1wX21vZHZlcikKKwkJCWR1bXBfbW9kdmVyc2lvbnMobW9kbmFtZSwgZXJyb3IpOworCQllbHNlCisJCQlmYWlsZWQgfD0gZG9fbW9kcHJvYmUobW9kbmFtZSwgbmV3bmFtZSwgY21kbGluZV9vcHRzLAorCQkJCSZjb25mLCBkaXJuYW1lLCBlcnJvciwgZmxhZ3MpOworCisJfQorCitvdXQ6CisJaWYgKGxvZ2dpbmcpCisJCWNsb3NlbG9nKCk7CisJZnJlZShkaXJuYW1lKTsKKwlmcmVlKGNtZGxpbmVfb3B0cyk7CisJLyogRG9uJ3QgYm90aGVyIHRvIGZyZWUgY29uZiAqLworCisJZXhpdChmYWlsZWQpOworfQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZHByb2JlLmNvbmYuNSBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2Rwcm9iZS5jb25mLjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhZmJiNQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2Rwcm9iZS5jb25mLjUKQEAgLTAsMCArMSwxNDggQEAKKy5cXCIgYXV0by1nZW5lcmF0ZWQgYnkgZG9jYm9vazJtYW4tc3BlYyAkUmV2aXNpb246IDEuMiAkCisuVEggIk1PRFBST0JFLkNPTkYiICI1IiAiMjAxMC0wMy0wOSIgIiIgIiIKKy5TSCBOQU1FCittb2Rwcm9iZS5kLCBtb2Rwcm9iZS5jb25mIFwtIENvbmZpZ3VyYXRpb24gZGlyZWN0b3J5L2ZpbGUgZm9yIG1vZHByb2JlCisuU0ggIkRFU0NSSVBUSU9OIgorLlBQCitCZWNhdXNlIHRoZSBcZkJtb2Rwcm9iZVxmUiBjb21tYW5kIGNhbiBhZGQgb3IKK3JlbW92ZSBtb3JlIHRoYW4gb25lIG1vZHVsZSwgZHVlIHRvIG1vZHVsZXMgaGF2aW5nIGRlcGVuZGVuY2llcywKK3dlIG5lZWQgYSBtZXRob2Qgb2Ygc3BlY2lmeWluZyB3aGF0IG9wdGlvbnMgYXJlIHRvIGJlIHVzZWQgd2l0aAordGhvc2UgbW9kdWxlcy4gQWxsIGZpbGVzIHVuZGVybmVhdGggdGhlIAorXGZJL2V0Yy9tb2Rwcm9iZS5kXGZSIGRpcmVjdG9yeSB3aGljaCBlbmQgd2l0aCB0aGUKK1xmSVwmLmNvbmZcZlIgZXh0ZW5zaW9uIHNwZWNpZnkgdGhvc2Ugb3B0aW9ucyBhcworcmVxdWlyZWQuICh0aGUgXGZJL2V0Yy9tb2Rwcm9iZS5jb25mXGZSIGZpbGUgY2FuCithbHNvIGJlIHVzZWQgaWYgaXQgZXhpc3RzLCBidXQgdGhhdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgCit2ZXJzaW9uKS4gVGhleSBjYW4gYWxzbyBiZSB1c2VkIHRvIGNyZWF0ZSBjb252ZW5pZW50IGFsaWFzZXM6IAorYWx0ZXJuYXRlIG5hbWVzIGZvciBhIG1vZHVsZSwgb3IgdGhleSBjYW4gb3ZlcnJpZGUgdGhlIG5vcm1hbCAKK1xmQm1vZHByb2JlXGZSIGJlaGF2aW9yIGFsdG9nZXRoZXIgZm9yIHRob3NlIHdpdGggCitzcGVjaWFsIHJlcXVpcmVtZW50cyAoc3VjaCBhcyBpbnNlcnRpbmcgbW9yZSB0aGFuIG9uZSBtb2R1bGUpLgorLlBQCitOb3RlIHRoYXQgbW9kdWxlIGFuZCBhbGlhcyBuYW1lcyAobGlrZSBvdGhlciBtb2R1bGUgbmFtZXMpIGNhbgoraGF2ZSAtIG9yIF8gaW4gdGhlbTogYm90aCBhcmUgaW50ZXJjaGFuZ2FibGUgdGhyb3VnaG91dCBhbGwgdGhlCittb2R1bGUgY29tbWFuZHMgYXMgdW5kZXJzY29yZSBjb252ZXJzaW9uIGhhcHBlbnMgYXV0b21hdGljYWxseS4KKy5QUAorVGhlIGZvcm1hdCBvZiBhbmQgZmlsZXMgdW5kZXIgXGZJbW9kcHJvYmUuZFxmUiBhbmQKK1xmSS9ldGMvbW9kcHJvYmUuY29uZlxmUiBpcyBzaW1wbGU6IG9uZQorY29tbWFuZCBwZXIgbGluZSwgd2l0aCBibGFuayBsaW5lcyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCAnIycKK2lnbm9yZWQgKHVzZWZ1bCBmb3IgYWRkaW5nIGNvbW1lbnRzKS4gQSAnXFwnIGF0IHRoZSBlbmQgb2YgYSBsaW5lCitjYXVzZXMgaXQgdG8gY29udGludWUgb24gdGhlIG5leHQgbGluZSwgd2hpY2ggbWFrZXMgdGhlIGZpbGUgYQorYml0IG5lYXRlci4KKy5TSCAiQ09NTUFORFMiCisuVFAKK1xmQmFsaWFzIFxmSXdpbGRjYXJkXGZCIFxmSW1vZHVsZW5hbWVcZkJcZlIKK1RoaXMgYWxsb3dzIHlvdSB0byBnaXZlIGFsdGVybmF0ZSBuYW1lcyBmb3IgYSBtb2R1bGUuIEZvcgorZXhhbXBsZTogImFsaWFzIG15LW1vZCByZWFsbHlfbG9uZ19tb2R1bGVuYW1lIgorbWVhbnMgeW91IGNhbiB1c2UgIm1vZHByb2JlIG15LW1vZCIgaW5zdGVhZCBvZiAibW9kcHJvYmUKK3JlYWxseV9sb25nX21vZHVsZW5hbWUiLiBZb3UgY2FuIGFsc28gdXNlIHNoZWxsLXN0eWxlCit3aWxkY2FyZHMsIHNvICJhbGlhcyBteS1tb2QqIHJlYWxseV9sb25nX21vZHVsZW5hbWUiCittZWFucyB0aGF0ICJtb2Rwcm9iZSBteS1tb2Qtc29tZXRoaW5nIiBoYXMgdGhlIHNhbWUKK2VmZmVjdC4gWW91IGNhbid0IGhhdmUgYWxpYXNlcyB0byBvdGhlciBhbGlhc2VzICh0aGF0Cit3YXkgbGllcyBtYWRuZXNzKSwgYnV0IGFsaWFzZXMgY2FuIGhhdmUgb3B0aW9ucywgd2hpY2gKK3dpbGwgYmUgYWRkZWQgdG8gYW55IG90aGVyIG9wdGlvbnMuCisKK05vdGUgdGhhdCBtb2R1bGVzIGNhbiBhbHNvIGNvbnRhaW4gdGhlaXIgb3duIGFsaWFzZXMsCit3aGljaCB5b3UgY2FuIHNlZSB1c2luZyBcZkJtb2RpbmZvXGZSXCYuIFRoZXNlCithbGlhc2VzIGFyZSB1c2VkIGFzIGEgbGFzdCByZXNvcnQgKGllLiBpZiB0aGVyZSBpcyBubyByZWFsCittb2R1bGUsIFxmQmluc3RhbGxcZlIsCitcZkJyZW1vdmVcZlIsIG9yIFxmQmFsaWFzXGZSCitjb21tYW5kIGluIHRoZSBjb25maWd1cmF0aW9uKS4KKy5UUAorXGZCYmxhY2tsaXN0IFxmSW1vZHVsZW5hbWVcZkJcZlIKK01vZHVsZXMgY2FuIGNvbnRhaW4gdGhlaXIgb3duIGFsaWFzZXM6IHVzdWFsbHkgdGhlc2UgYXJlCithbGlhc2VzIGRlc2NyaWJpbmcgdGhlIGRldmljZXMgdGhleSBzdXBwb3J0LCBzdWNoIGFzCisicGNpOjEyMy4uLiIuIFRoZXNlICJpbnRlcm5hbCIgYWxpYXNlcyBjYW4gYmUgb3ZlcnJpZGRlbgorYnkgbm9ybWFsICJhbGlhcyIga2V5d29yZHMsIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdHdvCitvciBtb3JlIG1vZHVsZXMgYm90aCBzdXBwb3J0IHRoZSBzYW1lIGRldmljZXMsIG9yIGEgbW9kdWxlCitpbnZhbGlkbHkgY2xhaW1zIHRvIHN1cHBvcnQgYSBkZXZpY2VpIHRoYXQgaXQgZG9lcyBub3Q6IHRoZQorXGZCYmxhY2tsaXN0XGZSIGtleXdvcmQgaW5kaWNhdGVzIHRoYXQgYWxsIG9mCit0aGF0IHBhcnRpY3VsYXIgbW9kdWxlJ3MgaW50ZXJuYWwgYWxpYXNlcyBhcmUgdG8gYmUgaWdub3JlZC4KKy5UUAorXGZCaW5zdGFsbCBcZkltb2R1bGVuYW1lXGZCIFxmSWNvbW1hbmQuLi5cZkJcZlIKK1RoaXMgY29tbWFuZCBpbnN0cnVjdHMgXGZCbW9kcHJvYmVcZlIgdG8gcnVuIHlvdXIKK2NvbW1hbmQgaW5zdGVhZCBvZiBpbnNlcnRpbmcgdGhlIG1vZHVsZSBpbiB0aGUga2VybmVsIGFzIG5vcm1hbC4KK1RoZSBjb21tYW5kIGNhbiBiZSBhbnkgc2hlbGwgY29tbWFuZDogdGhpcyBhbGxvd3MgeW91IHRvIGRvIGFueQora2luZCBvZiBjb21wbGV4IHByb2Nlc3NpbmcgeW91IG1pZ2h0IHdpc2guIEZvciBleGFtcGxlLCBpZiB0aGUKK21vZHVsZSAiZnJlZCIgd29ya3MgYmV0dGVyIHdpdGggdGhlIG1vZHVsZSAiYmFybmV5IgorYWxyZWFkeSBpbnN0YWxsZWQgKGJ1dCBpdCBkb2Vzbid0IGRlcGVuZCBvbiBpdCwgc28KK1xmQm1vZHByb2JlXGZSIHdvbid0IGF1dG9tYXRpY2FsbHkgbG9hZCBpdCksCit5b3UgY291bGQgc2F5ICJpbnN0YWxsIGZyZWQgL3NiaW4vbW9kcHJvYmUgYmFybmV5OworL3NiaW4vbW9kcHJvYmUgLS1pZ25vcmUtaW5zdGFsbCBmcmVkIiwgd2hpY2ggd291bGQgZG8gd2hhdAoreW91IHdhbnRlZC4gTm90ZSB0aGUgXGZCLS1pZ25vcmUtaW5zdGFsbFxmUiwKK3doaWNoIHN0b3BzIHRoZSBzZWNvbmQgXGZCbW9kcHJvYmVcZlIgZnJvbQorcnVubmluZyB0aGUgc2FtZSBcZkJpbnN0YWxsXGZSIGNvbW1hbmQgYWdhaW4uCitTZWUgYWxzbyBcZkJyZW1vdmVcZlIgYmVsb3cuCisKK1RoZSBsb25nIHRlcm0gZnV0dXJlIG9mIHRoaXMgY29tbWFuZCBhcyBhIHNvbHV0aW9uIHRvIHRoZQorcHJvYmxlbSBvZiBwcm92aWRpbmcgYWRkaXRpb25hbCBtb2R1bGUgZGVwZW5kZW5jaWVzIGlzIG5vdCBhc3N1cmVkCithbmQgaXQgaXMgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGlzIGNvbW1hbmQgd2l0aCBhIHdhcm5pbmcgYWJvdXQKK2l0cyBldmVudHVhbCByZW1vdmFsIG9yIGRlcHJlY2F0aW9uIGF0IHNvbWUgcG9pbnQgaW4gYSBmdXR1cmUKK3JlbGVhc2UuIEl0cyB1c2UgY29tcGxpY2F0ZXMgdGhlIGF1dG9tYXRlZCBkZXRlcm1pbmF0aW9uIG9mIG1vZHVsZQorZGVwZW5kZW5jaWVzIGJ5IGRpc3RyaWJ1dGlvbiB1dGlsaXRpZXMsIHN1Y2ggYXMgbWtpbml0cmQgKGJlY2F1c2UKK3RoZXNlIG5vdyBuZWVkIHRvIHNvbWVob3cgaW50ZXJwcmV0IHdoYXQgdGhlCitcZkJpbnN0YWxsXGZSIGNvbW1hbmRzIG1pZ2h0IGJlIGRvaW5nLgorSW4gYSBwZXJmZWN0IHdvcmxkLCBtb2R1bGVzIHdvdWxkIHByb3ZpZGUgYWxsIGRlcGVuZGVuY3kKK2luZm9ybWF0aW9uIHdpdGhvdXQgdGhlIHVzZSBvZiB0aGlzIGNvbW1hbmQgYW5kIHdvcmsgaXMgdW5kZXJ3YXkKK3RvIGltcGxlbWVudCBzb2Z0IGRlcGVuZGVuY3kgc3VwcG9ydCB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbC4KKworSWYgeW91IHVzZSB0aGUgc3RyaW5nICIkQ01ETElORV9PUFRTIiBpbiB0aGUgY29tbWFuZCwgaXQKK3dpbGwgYmUgcmVwbGFjZWQgYnkgYW55IG9wdGlvbnMgc3BlY2lmaWVkIG9uIHRoZSBtb2Rwcm9iZQorY29tbWFuZCBsaW5lLiBUaGlzIGNhbiBiZSB1c2VmdWwgYmVjYXVzZSB1c2VycyBleHBlY3QKKyJtb2Rwcm9iZSBmcmVkIG9wdD0xIiB0byBwYXNzIHRoZSAib3B0PTEiIGFyZyB0byB0aGUKK21vZHVsZSwgZXZlbiBpZiB0aGVyZSdzIGFuIGluc3RhbGwgY29tbWFuZCBpbiB0aGUKK2NvbmZpZ3VyYXRpb24gZmlsZS4gU28gb3VyIGFib3ZlIGV4YW1wbGUgYmVjb21lcyAiaW5zdGFsbAorZnJlZCAvc2Jpbi9tb2Rwcm9iZSBiYXJuZXk7IC9zYmluL21vZHByb2JlCistLWlnbm9yZS1pbnN0YWxsIGZyZWQgJENNRExJTkVfT1BUUyIKKy5UUAorXGZCb3B0aW9ucyBcZkltb2R1bGVuYW1lXGZCIFxmSW9wdGlvbi4uLlxmQlxmUgorVGhpcyBjb21tYW5kIGFsbG93cyB5b3UgdG8gYWRkIG9wdGlvbnMgdG8gdGhlIG1vZHVsZQorXGZJbW9kdWxlbmFtZVxmUiAod2hpY2ggbWlnaHQgYmUgYW4KK2FsaWFzKSBldmVyeSB0aW1lIGl0IGlzIGluc2VydGVkIGludG8gdGhlIGtlcm5lbDogd2hldGhlcgorZGlyZWN0bHkgKHVzaW5nIFxmQm1vZHByb2JlXGZSIAorXGZJbW9kdWxlbmFtZVxmUiBvciBiZWNhdXNlIHRoZQorbW9kdWxlIGJlaW5nIGluc2VydGVkIGRlcGVuZHMgb24gdGhpcyBtb2R1bGUuCisKK0FsbCBvcHRpb25zIGFyZSBhZGRlZCB0b2dldGhlcjogdGhleSBjYW4gY29tZSBmcm9tIGFuCitcZkJvcHRpb25cZlIgZm9yIHRoZSBtb2R1bGUgaXRzZWxmLCBmb3IgYW4KK2FsaWFzLCBhbmQgb24gdGhlIGNvbW1hbmQgbGluZS4KKy5UUAorXGZCcmVtb3ZlIFxmSW1vZHVsZW5hbWVcZkIgXGZJY29tbWFuZC4uLlxmQlxmUgorVGhpcyBpcyBzaW1pbGFyIHRvIHRoZSBcZkJpbnN0YWxsXGZSIGNvbW1hbmQKK2Fib3ZlLCBleGNlcHQgaXQgaXMgaW52b2tlZCB3aGVuICJtb2Rwcm9iZSAtciIgaXMgcnVuLgorLlRQCitcZkJzb2Z0ZGVwIFxmSW1vZHVsZW5hbWVcZkIgcHJlOiBcZkltb2R1bGVzLi4uXGZCIHBvc3Q6IFxmSW1vZHVsZXMuLi5cZkJcZlIKK1RoZSBcZkJzb2Z0ZGVwXGZSIGNvbW1hbmQgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHNvZnQsCitvciBvcHRpb25hbCwgbW9kdWxlIGRlcGVuZGVuY2llcy4gXGZJbW9kdWxlbmFtZVxmUgorY2FuIGJlIHVzZWQgd2l0aG91dCB0aGVzZSBvcHRpb25hbCBtb2R1bGVzIGluc3RhbGxlZCwgYnV0IHVzdWFsbHkgd2l0aAorc29tZSBmZWF0dXJlcyBtaXNzaW5nLiBGb3IgZXhhbXBsZSwgYSBkcml2ZXIgZm9yIGEgc3RvcmFnZSBIQkEgbWlnaHQKK3JlcXVpcmUgYW5vdGhlciBtb2R1bGUgYmUgbG9hZGVkIGluIG9yZGVyIHRvIHVzZSBtYW5hZ2VtZW50IGZlYXR1cmVzLgorCitwcmUtZGVwcyBhbmQgcG9zdC1kZXBzIG1vZHVsZXMgYXJlIGxpc3RzIG9mIG5hbWVzIGFuZC9vciBhbGlhc2VzIG9mIG90aGVyCittb2R1bGVzIHRoYXQgbW9kcHJvYmUgd2lsbCBhdHRlbXB0IHRvIGluc3RhbGwgKG9yIHJlbW92ZSkgaW4gb3JkZXIKK2JlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1haW4gbW9kdWxlIGdpdmVuIGluIHRoZQorXGZJbW9kdWxlbmFtZVxmUiBhcmd1bWVudC4KKworRXhhbXBsZTogQXNzdW1lICJzb2Z0ZGVwIGMgcHJlOiBhIGIgcG9zdDogZCBlIiBpcyBwcm92aWRlZCBpbiB0aGUKK2NvbmZpZ3VyYXRpb24uIFJ1bm5pbmcgIm1vZHByb2JlIGMiIGlzIG5vdyBlcXVpdmFsZW50IHRvCisibW9kcHJvYmUgYSBiIGMgZCBlIiB3aXRob3V0IHRoZSBzb2Z0ZGVwLgorRmxhZ3Mgc3VjaCBhcyAtLXVzZS1ibGFja2xpc3QgYXJlIGFwcGxpZWQgdG8gYWxsIHRoZSBzcGVjaWZpZWQKK21vZHVsZXMsIHdoaWxlIG1vZHVsZSBwYXJhbWV0ZXJzIG9ubHkgYXBwbHkgdG8gbW9kdWxlIGMuCisKK05vdGU6IGlmIHRoZXJlIGFyZSBcZkJpbnN0YWxsXGZSIG9yCitcZkJyZW1vdmVcZlIgY29tbWFuZHMgd2l0aCB0aGUgc2FtZQorXGZJbW9kdWxlbmFtZVxmUiBhcmd1bWVudCwKK1xmQnNvZnRkZXBcZlIgdGFrZXMgcHJlY2VkZW5jZS4KKy5TSCAiQ09NUEFUSUJJTElUWSIKKy5QUAorQSBmdXR1cmUgdmVyc2lvbiBvZiBtb2R1bGUtaW5pdC10b29scyB3aWxsIGNvbWUgd2l0aCBhIHN0cm9uZyB3YXJuaW5nCit0byBhdm9pZCB1c2Ugb2YgdGhlIFxmQmluc3RhbGxcZlIgYXMgZXhwbGFpbmVkIGFib3ZlLiBUaGlzCit3aWxsIGhhcHBlbiBvbmNlIHN1cHBvcnQgZm9yIHNvZnQgZGVwZW5kZW5jaWVzIGluIHRoZSBrZXJuZWwgaXMgY29tcGxldGUuCitUaGF0IHN1cHBvcnQgd2lsbCBjb21wbGVtZW50IHRoZSBleGlzdGluZyBzb2Z0ZGVwIHN1cHBvcnQgd2l0aGluIHRoaXMKK3V0aWxpdHkgYnkgcHJvdmlkaW5nIHN1Y2ggZGVwZW5kZW5jaWVzIGRpcmVjdGx5IHdpdGhpbiB0aGUgbW9kdWxlcy4KKy5TSCAiQ09QWVJJR0hUIgorLlBQCitUaGlzIG1hbnVhbCBwYWdlIG9yaWdpbmFsbHkgQ29weXJpZ2h0IDIwMDQsIFJ1c3R5IFJ1c3NlbGwsIElCTQorQ29ycG9yYXRpb24uIE1haW50YWluZWQgYnkgSm9uIE1hc3RlcnMgYW5kIG90aGVycy4KKy5TSCAiU0VFIEFMU08iCisuUFAKK1xmQm1vZHByb2JlXGZSKDgpLAorXGZCbW9kdWxlcy5kZXBcZlIoNSkKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2Rwcm9iZS5kLjUgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kcHJvYmUuZC41Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZWQwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvbW9kcHJvYmUuZC41CkBAIC0wLDAgKzEgQEAKKy5zbyBtb2Rwcm9iZS5jb25mLjUKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2R1bGVzLmRlcC41IGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL21vZHVsZXMuZGVwLjUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM1ZmZhYQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9tb2R1bGVzLmRlcC41CkBAIC0wLDAgKzEsMzAgQEAKKy5cXCIgYXV0by1nZW5lcmF0ZWQgYnkgZG9jYm9vazJtYW4tc3BlYyAkUmV2aXNpb246IDEuMiAkCisuVEggIk1PRFVMRVMuREVQIiAiNSIgIjIwMTAtMDMtMDEiICIiICIiCisuU0ggTkFNRQorbW9kdWxlcy5kZXAuYmluLCBtb2R1bGVzLmRlcCBcLSBNb2R1bGUgZGVwZW5kZW5jeSBpbmZvcm1hdGlvbgorLlNIICJERVNDUklQVElPTiIKKy5QUAorVGhlIFxmSW1vZHVsZXMuZGVwLmJpblxmUiBhcyBnZW5lcmF0ZWQgYnkKK21vZHVsZS1pbml0LXRvb2xzIFxmQmRlcG1vZFxmUiwgbGlzdHMgdGhlCitkZXBlbmRlbmNpZXMgZm9yIGV2ZXJ5IG1vZHVsZSBpbiB0aGUgZGlyZWN0b3JpZXMgdW5kZXIKK1xmSS9saWIvbW9kdWxlcy9cZlJcZkl2ZXJzaW9uXGZSLAord2hlcmUgXGZJbW9kdWxlcy5kZXAuYmluXGZSIChvciB0aGUgaHVtYW4gcmVhZGFibGUKK3ZlcnNpb24gXGZJbW9kdWxlcy5kZXBcZlIpIGlzIGFsc28gbG9jYXRlZC4gSXQgaXMKK3VzZWQgYnkgdXRpbGl0aWVzIHN1Y2ggYXMgXGZCbW9kcHJvYmVcZlJcJi4gVGhlCitiaW5hcnkgdmVyc2lvbiB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdCwgaWYgaXQgd2FzIGdlbmVyYXRlZCBieQorYSBjb21wYXRpYmxlIHZlcnNpb24gb2YgXGZCZGVwbW9kLCB3aXRoIGZhbGxiYWNrCit0byB0aGUgZ2VuZXJpYyBcZkltb2R1bGVzLmRlcFxmQlwmLgorXGZSLlBQCitUaGVzZSBmaWxlcyBhcmUgbm90IGludGVuZGVkIGZvciBlZGl0aW5nIG9yIHVzZSBieSBhbnkgYWRkaXRpb25hbAordXRpbGl0aWVzIGFzIHRoZWlyIGZvcm1hdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBpbiB0aGUgZnV0dXJlLiBZb3UKK3Nob3VsZCB1c2UgdGhlCitcZkJtb2RpbmZvXGZSKDgpIGNvbW1hbmQgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IG1vZHVsZXMgaW4gYSBmdXR1cmUKK3Byb29mIGFuZCBjb21wYXRpYmxlIGZhc2hpb24gcmF0aGVyIHRoYW4gdG91Y2hpbmcgdGhlc2UgZmlsZXMuCisuU0ggIkNPUFlSSUdIVCIKKy5QUAorVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDAyLCBSdXN0eSBSdXNzZWxsLCBJQk0KK0NvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisuU0ggIlNFRSBBTFNPIgorLlBQCitcZkJkZXBtb2RcZlIoOCksCitcZkJtb2Rwcm9iZVxmUig4KQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3JtbW9kLjggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvcm1tb2QuOApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQyYTBkCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3JtbW9kLjgKQEAgLTAsMCArMSw1MSBAQAorLlxcIiBhdXRvLWdlbmVyYXRlZCBieSBkb2Nib29rMm1hbi1zcGVjICRSZXZpc2lvbjogMS4yICQKKy5USCAiUk1NT0QiICI4IiAiMjAxMC0wMy0wMSIgIiIgIiIKKy5TSCBOQU1FCitybW1vZCBcLSBzaW1wbGUgcHJvZ3JhbSB0byByZW1vdmUgYSBtb2R1bGUgZnJvbSB0aGUgTGludXggS2VybmVsCisuU0ggU1lOT1BTSVMKKy5zcAorXGZCcm1tb2RcZlIgWyBcZkItZlxmUiBdICBbIFxmQi13XGZSIF0gIFsgXGZCLXNcZlIgXSAgWyBcZkItdlxmUiBdICBbIFxmQlxmSW1vZHVsZW5hbWVcZkJcZlIgXSAKKy5TSCAiREVTQ1JJUFRJT04iCisuUFAKK1xmQnJtbW9kXGZSIGlzIGEgdHJpdmlhbCBwcm9ncmFtIHRvIHJlbW92ZSBhCittb2R1bGUgKHdoZW4gbW9kdWxlIHVubG9hZGluZyBzdXBwb3J0IGlzIHByb3ZpZGVkKSBmcm9tIHRoZSBrZXJuZWwuCitNb3N0IHVzZXJzIHdpbGwgd2FudCB0byB1c2UKK1xmQm1vZHByb2JlXGZSKDgpIHdpdGggdGhlIFxmQi1yXGZSIG9wdGlvbiBpbnN0ZWFkLgorLlNIICJPUFRJT05TIgorLlRQCitcZkItdiAtLXZlcmJvc2VcZlIKK1ByaW50IG1lc3NhZ2VzIGFib3V0IHdoYXQgdGhlIHByb2dyYW0gaXMgZG9pbmcuCitVc3VhbGx5IFxmQnJtbW9kXGZSIHByaW50cyBtZXNzYWdlcworb25seSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZy4KKy5UUAorXGZCLWYgLS1mb3JjZVxmUgorVGhpcyBvcHRpb24gY2FuIGJlIGV4dHJlbWVseSBkYW5nZXJvdXM6IGl0IGhhcyBubyBlZmZlY3QgdW5sZXNzCitDT05GSUdfTU9EVUxFX0ZPUkNFX1VOTE9BRCB3YXMgc2V0IHdoZW4gdGhlIGtlcm5lbCB3YXMKK2NvbXBpbGVkLiBXaXRoIHRoaXMgb3B0aW9uLCB5b3UgY2FuIHJlbW92ZSBtb2R1bGVzIHdoaWNoIGFyZQorYmVpbmcgdXNlZCwgb3Igd2hpY2ggYXJlIG5vdCBkZXNpZ25lZCB0byBiZSByZW1vdmVkLCBvciBoYXZlCitiZWVuIG1hcmtlZCBhcyB1bnNhZmUgKHNlZSBcZkJsc21vZFxmUig4KSkuCisuVFAKK1xmQi13IC0td2FpdFxmUgorTm9ybWFsbHksIFxmQnJtbW9kXGZSIHdpbGwgcmVmdXNlIHRvCit1bmxvYWQgbW9kdWxlcyB3aGljaCBhcmUgaW4gdXNlLiBXaXRoIHRoaXMgb3B0aW9uLAorXGZCcm1tb2RcZlIgd2lsbCBpc29sYXRlIHRoZSBtb2R1bGUsIGFuZAord2FpdCB1bnRpbCB0aGUgbW9kdWxlIGlzIG5vIGxvbmdlciB1c2VkLiBOb3RoaW5nIG5ldword2lsbCBiZSBhYmxlIHRvIHVzZSB0aGUgbW9kdWxlLCBidXQgaXQncyB1cCB0byB5b3UgdG8KK21ha2Ugc3VyZSB0aGUgY3VycmVudCB1c2VycyBldmVudHVhbGx5IGZpbmlzaCB3aXRoIGl0LgorU2VlIFxmQmxzbW9kXGZSKDgpKSBmb3IgaW5mb3JtYXRpb24gb24gdXNhZ2UgY291bnRzLgorLlRQCitcZkItcyAtLXN5c2xvZ1xmUgorU2VuZCBlcnJvcnMgdG8gc3lzbG9nIGluc3RlYWQgb2Ygc3RhbmRhcmQgZXJyb3IuCisuVFAKK1xmQi1WIC0tdmVyc2lvblxmUgorU2hvdyB2ZXJzaW9uIG9mIHByb2dyYW0gYW5kIGV4aXQuCisuU0ggIkNPUFlSSUdIVCIKKy5QUAorVGhpcyBtYW51YWwgcGFnZSBvcmlnaW5hbGx5IENvcHlyaWdodCAyMDAyLCBSdXN0eSBSdXNzZWxsLCBJQk0KK0NvcnBvcmF0aW9uLiBNYWludGFpbmVkIGJ5IEpvbiBNYXN0ZXJzIGFuZCBvdGhlcnMuCisuU0ggIlNFRSBBTFNPIgorLlBQCitcZkJtb2Rwcm9iZVxmUig4KSwKK1xmQmluc21vZFxmUig4KSwKK1xmQmxzbW9kXGZSKDgpCitcZkJtb2RpbmZvXGZSKDgpCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvcm1tb2QuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9ybW1vZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTdlZDkKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvcm1tb2QuYwpAQCAtMCwwICsxLDIxMSBAQAorLyogcm1tb2QuYzogcmVtb3ZlIGEgbW9kdWxlIGZyb20gdGhlIGtlcm5lbC4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDEgIFJ1c3R5IFJ1c3NlbGwuCisgICAgQ29weXJpZ2h0IChDKSAyMDAyICBSdXN0eSBSdXNzZWxsLCBJQk0gQ29ycG9yYXRpb24uCisKKyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisqLworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlIDxnZXRvcHQuaD4KKyNpbmNsdWRlIDxzeXNsb2cuaD4KKworI2luY2x1ZGUgInV0aWwuaCIKKyNpbmNsdWRlICJsb2dnaW5nLmgiCisjaW5jbHVkZSAidGVzdGluZy5oIgorCitleHRlcm4gbG9uZyBkZWxldGVfbW9kdWxlKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgaW50KTsKKworc3RhdGljIGNoYXIgKm5leHRfZmllbGQoY29uc3QgY2hhciAqbGluZSkKK3sKKwljb25zdCBjaGFyICpyZXN0OworCisJcmVzdCA9IGxpbmUgKyBzdHJjc3BuKGxpbmUsICIgIik7CisJcmVzdCArPSBzdHJzcG4ocmVzdCwgIiAiKTsKKwlyZXR1cm4gKGNoYXIgKilyZXN0OworfQorCisvKiBSZXBvcnQgdGhhdCB0aGUgbW9kdWxlIGlzIGluIHVzZS4gKi8KK3N0YXRpYyB2b2lkIG1vZF9pbl91c2UoY29uc3QgY2hhciAqbW9kbmFtZSwgY2hhciAqdXNlZGJ5KQoreworCS8qIE5ldyAvcHJvYy9tb2R1bGVzIHVzZXMgYSBzaW5nbGUgIi0iIHRvIG1lYW4gIm5vdGhpbmciLiAgT2xkCisgICAgICAgICAgIG9uZSBqdXN0IHB1dHMgbm90aGluZyB0aGVyZS4gKi8KKwlpZiAodXNlZGJ5WzBdID09ICctJyB8fCBzdHJlcSh1c2VkYnksICIiKSkgeworCQllcnJvcigiTW9kdWxlICVzIGlzIGluIHVzZVxuIiwgbW9kbmFtZSk7CisJCXJldHVybjsKKwl9CisKKwkvKiBOZXcgL3Byb2MvbW9kdWxlcyAqYWx3YXlzKiBwcmludHMgY29tbWFzIChldmVuIGlmIG9ubHkgb25lKSAqLworCWlmIChzdHJjaHIodXNlZGJ5LCAnLCcpKQorCQkvKiBCbGF0dCBvdmVyIHRyYWlsaW5nIGNvbW1hIGZvciBuZWF0bmVzcyAqLworCQl1c2VkYnlbc3RyY3Nwbih1c2VkYnksICIgXG4iKS0xXSA9ICdcMCc7CisJZWxzZSB7CisJCS8qIE9sZGVyIC9wcm9jL21vZHVsZXMganVzdCBwdXQgdGhlbSBhcworICAgICAgICAgICAgICAgICAgIHNwYWNlLXNlcGFyYXRlZCBuYW1lcy4gIEJsYXR0IG92ZXIgdHJhaWxpbmcgXG4gKi8KKwkJdXNlZGJ5W3N0cmxlbih1c2VkYnkpLTFdID0gJ1wwJzsKKwl9CisKKwllcnJvcigiTW9kdWxlICVzIGlzIGluIHVzZSBieSAlc1xuIiwgbW9kbmFtZSwgdXNlZGJ5KTsKK30KKworLyogSWYgd2UgY2FuIGNoZWNrIHVzYWdlIHdpdGhvdXQgZW50ZXJpbmcga2VybmVsLCBkbyBzby4gKi8KK3N0YXRpYyBpbnQgY2hlY2tfdXNhZ2UoY29uc3QgY2hhciAqbW9kbmFtZSkKK3sKKwlGSUxFICptb2R1bGVfbGlzdDsKKwljaGFyIGxpbmVbMTAyNDBdLCBuYW1lWzY0XTsKKwl1bnNpZ25lZCBsb25nIHNpemUsIHJlZnM7CisJaW50IHNjYW5uZWQ7CisKKwltb2R1bGVfbGlzdCA9IGZvcGVuKCIvcHJvYy9tb2R1bGVzIiwgInIiKTsKKwlpZiAoIW1vZHVsZV9saXN0KSB7CisJCWlmIChlcnJubyA9PSBFTk9FTlQpIC8qIC9wcm9jIG1heSBub3QgYmUgbW91bnRlZC4gKi8KKwkJCXJldHVybiAwOworCQlmYXRhbCgiY2FuJ3Qgb3BlbiAvcHJvYy9tb2R1bGVzOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwl9CisJd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKS0xLCBtb2R1bGVfbGlzdCkgIT0gTlVMTCkgeworCQlpZiAoc3RyY2hyKGxpbmUsICdcbicpID09IE5VTEwpIHsKKwkJCWZhdGFsKCJWLiB2LiBsb25nIGxpbmUgYnJva2Ugcm1tb2QuXG4iKTsKKwkJCWV4aXQoMSk7CisJCX0KKworCQlzY2FubmVkID0gc3NjYW5mKGxpbmUsICIlcyAlbHUgJWx1IiwgbmFtZSwgJnNpemUsICZyZWZzKTsKKwkJaWYgKHN0cmNtcChuYW1lLCBtb2RuYW1lKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJaWYgKHNjYW5uZWQgPCAyKQorCQkJZmF0YWwoIlVua25vd24gZm9ybWF0IGluIC9wcm9jL21vZHVsZXM6ICVzXG4iLCBsaW5lKTsKKworCQlpZiAoc2Nhbm5lZCA9PSAyKQorCQkJZmF0YWwoIktlcm5lbCBkb2VzIG5vdCBoYXZlIHVubG9hZCBzdXBwb3J0LlxuIik7CisKKwkJLyogSGFuZCBpdCBmaWVsZHMgMyBvbndhcmRzLiAqLworCQlpZiAocmVmcyAhPSAwKQorCQkJbW9kX2luX3VzZShtb2RuYW1lLAorCQkJCSAgIG5leHRfZmllbGQobmV4dF9maWVsZChuZXh0X2ZpZWxkKGxpbmUpKSkpOworCQlnb3RvIG91dDsKKwl9CisJZXJyb3IoIk1vZHVsZSAlcyBkb2VzIG5vdCBleGlzdCBpbiAvcHJvYy9tb2R1bGVzXG4iLCBtb2RuYW1lKTsKKwlyZWZzID0gMTsKKyBvdXQ6CisJZmNsb3NlKG1vZHVsZV9saXN0KTsKKwlyZXR1cm4gKHJlZnMgPT0gMCkgPyAwIDogLUVJTlZBTDsKK30KKworc3RhdGljIGludCBybW1vZChjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpCit7CisJbG9uZyByZXQ7CisJY2hhciBuYW1lW3N0cmxlbihwYXRoKSArIDFdOworCisJZmlsZW5hbWUybW9kbmFtZShuYW1lLCBwYXRoKTsKKworCWlmICgoZmxhZ3MgJiBPX05PTkJMT0NLKSAmJiAhKGZsYWdzICYgT19UUlVOQykpIHsKKwkJaWYgKGNoZWNrX3VzYWdlKG5hbWUpICE9IDApCisJCQlyZXR1cm4gMTsKKwl9CisKKwlpbmZvKCJybW1vZCAlcywgd2FpdD0lcyVzXG4iLCBuYW1lLAorCSAgICAgKGZsYWdzICYgT19OT05CTE9DSykgPyAibm8iIDogInllcyIsCisJICAgICAoZmxhZ3MgJiBPX1RSVU5DKSA/ICIgZm9yY2UiIDogIiIpOworCisJcmV0ID0gZGVsZXRlX21vZHVsZShuYW1lLCBmbGFncyk7CisJaWYgKHJldCAhPSAwKQorCQllcnJvcigiUmVtb3ZpbmcgJyVzJzogJXNcbiIsIG5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geyB7ICJhbGwiLCAwLCBOVUxMLCAnYScgfSwKKwkJCQkgICB7ICJmb3JjZSIsIDAsIE5VTEwsICdmJyB9LAorCQkJCSAgIHsgImhlbHAiLCAwLCBOVUxMLCAnaCcgfSwKKwkJCQkgICB7ICJzeXNsb2ciLCAwLCBOVUxMLCAncycgfSwKKwkJCQkgICB7ICJ2ZXJib3NlIiwgMCwgTlVMTCwgJ3YnIH0sCisJCQkJICAgeyAidmVyc2lvbiIsIDAsIE5VTEwsICdWJyB9LAorCQkJCSAgIHsgIndhaXQiLCAwLCBOVUxMLCAndycgfSwKKwkJCQkgICB7IE5VTEwsIDAsIE5VTEwsIDAgfSB9OworCitzdGF0aWMgdm9pZCBwcmludF91c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSkKK3sKKwlmcHJpbnRmKHN0ZGVyciwKKwkJIlVzYWdlOiAlcyBbLWZoc3d2Vl0gbW9kdWxlbmFtZSAuLi5cbiIKKwkJLy8gIiAtYSAob3IgLS1hbGwpIHRvIHJlbW92ZSBhbGwgbW9kdWxlcyAobm8gbmFtZXMgbmVlZGVkKVxuIgorCQkiIC1mIChvciAtLWZvcmNlKSBmb3JjZXMgYSBtb2R1bGUgdW5sb2FkLCBhbmQgbWF5IGNyYXNoIHlvdXJcbiIKKwkJIiAgICBtYWNoaW5lLiAgVGhpcyByZXF1aXJlcyB0aGUgRm9yY2VkIE1vZHVsZSBSZW1vdmFsIG9wdGlvblxuIgorCQkiICAgIHdoZW4gdGhlIGtlcm5lbCB3YXMgY29tcGlsZWQuXG4iCisJCSIgLWggKG9yIC0taGVscCkgcHJpbnRzIHRoaXMgaGVscCB0ZXh0XG4iCisJCSIgLXMgKG9yIC0tc3lzbG9nKSBzYXlzIHVzZSBzeXNsb2csIG5vdCBzdGRlcnJcbiIKKwkJIiAtdiAob3IgLS12ZXJib3NlKSBlbmFibGVzIG1vcmUgbWVzc2FnZXNcbiIKKwkJIiAtViAob3IgLS12ZXJzaW9uKSBwcmludHMgdGhlIHZlcnNpb24gY29kZVxuIgorCQkiIC13IChvciAtLXdhaXQpIGJlZ2lucyBhIG1vZHVsZSByZW1vdmFsIGV2ZW4gaWYgaXQgaXMgdXNlZFxuIgorCQkiICAgIGFuZCB3aWxsIHN0b3AgbmV3IHVzZXJzIGZyb20gYWNjZXNzaW5nIHRoZSBtb2R1bGUgKHNvIGl0XG4iCisJCSIgICAgc2hvdWxkIGV2ZW50dWFsbHkgZmFsbCB0byB6ZXJvKS5cbiIKKwkJLCBwcm9nbmFtZSk7CisJZXhpdCgxKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK3sKKwkvKiBPX0VYQ0wgc28ga2VybmVscyBjYW4gc3BvdCBvbGQgcm1tb2QgdmVyc2lvbnMgKi8KKwl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBPX05PTkJMT0NLfE9fRVhDTDsKKwlpbnQgaSwgb3B0LCBhbGwgPSAwOworCWludCByZXQsIGVycjsKKworCXdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwKKwkJCSJhZmg/c3d2ViIsIG9wdGlvbnMsIE5VTEwpKSAhPSBFT0YpIHsKKwkJc3dpdGNoIChvcHQpIHsKKwkJY2FzZSAnYSc6CS8vIC0tYWxsCisJCQlhbGwgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ2YnOgkvLyAtLWZvcmNlCisJCQlmbGFncyB8PSBPX1RSVU5DOworCQkJYnJlYWs7CisJCWNhc2UgJ3MnOgkvLyAtLXN5c2xvZworCQkJb3BlbmxvZygicm1tb2QiLCBMT0dfQ09OUywgTE9HX0RBRU1PTik7CisJCQlsb2dnaW5nID0gMTsKKwkJCWJyZWFrOworCQljYXNlICd3JzoJLy8gLS13YWl0CisJCQlmbGFncyAmPSB+T19OT05CTE9DSzsKKwkJCWJyZWFrOworCQljYXNlICd2JzoJLy8gLS12ZXJib3NlCisJCQl2ZXJib3NlKys7CisJCQlicmVhazsKKwkJY2FzZSAnVic6CS8vIC0tdmVyc2lvbgorCQkJcHV0cyhQQUNLQUdFICIgdmVyc2lvbiAiIFZFUlNJT04pOworCQkJcmV0dXJuIDA7CisKKwkJZGVmYXVsdDoKKwkJCXByaW50X3VzYWdlKGFyZ3ZbMF0pOworCQl9CisJfQorCWlmICghYXJndltvcHRpbmRdKSB7CisJCWZwcmludGYoc3RkZXJyLCAibm8gbW9kdWxlIG5hbWVzIGdpdmVuXG4iKTsKKwkJcHJpbnRfdXNhZ2UoYXJndlswXSk7CisJfQorCisJZXJyID0gMDsKKwkvKiByZW1vdmUgZWFjaCBzcGVjaWZpZWQgbW9kdWxlICovCisJZm9yIChpID0gb3B0aW5kOyBpIDwgYXJnYzsgaSsrKSB7CisJCXJldCA9IHJtbW9kKGFyZ3ZbaV0sIGZsYWdzKTsKKwkJaWYgKHJldCAhPSAwKQorCQkJZXJyID0gMTsKKwl9CisKKwlpZiAobG9nZ2luZykKKwkJY2xvc2Vsb2coKTsKKwlleGl0KGVycik7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvc3RyZXNzX21vZHVsZXMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvc3RyZXNzX21vZHVsZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzdjMWI1NwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi9zdHJlc3NfbW9kdWxlcy5zaApAQCAtMCwwICsxLDQyIEBACisjISAvYmluL3NoCisKK01PRFVMRV9ESVI9L2xpYi9tb2R1bGVzL2B1bmFtZSAtcmAva2VybmVsCisKK2Nhc2UgIiQxIiBpbgorICAgIG1vdW50LXVubW91bnQpCisJdHJhcCAidW1vdW50ICQzOyBybSAtZiAkMjsgcm1kaXIgJDMiIDAKKwlta2RpciAkMworCWRkIGJzPTEyMDRrIGNvdW50PTIwIGlmPS9kZXYvemVybyBvZj0kMgorCW1rZTJmcyAtRiAkMgorCXR1bmUyZnMgLWMgMCAkMgorCW1vZHByb2JlIGxvb3AKKwl3aGlsZSB0cnVlOyBkbyBtb3VudCAtbyBsb29wICQyICQzOyB1bW91bnQgJDM7IHNsZWVwIDE7IGRvbmUKKwk7OworICAgIGJhbmctb25lKQorCXRyYXAgInJtbW9kICQyIiAwCisJd2hpbGUgdHJ1ZTsgZG8gbW9kcHJvYmUgJDI7IHJtbW9kICQyOyBkb25lCisJOzsKKyAgICBiYW5nLWFsbCkKKwl3aGlsZSB0cnVlOyBkbworCSAgICAjIFJhbmRvbWl6ZSBvcmRlcgorCSAgICBmaW5kICRNT0RVTEVfRElSIC1uYW1lICcqLmtvJyB8ICggd2hpbGUgcmVhZCBtb2Q7IGRvIGVjaG8gJFJBTkRPTSAkbW9kOyBkb25lICkgfCBzb3J0IC1uIHwKKwkJd2hpbGUgcmVhZCBqdW5rIG1vZG5hbWU7IGRvCisgIAkJICAgIGlmIFsgJFJBTkRPTSAtZ3QgJFJBTkRPTSBdOyB0aGVuCisgCQkJcm1tb2QgYGJhc2VuYW1lICRtb2RuYW1lIC5rb2AKKyAJCSAgICBlbHNlCisgCQkJbW9kcHJvYmUgYGJhc2VuYW1lICRtb2RuYW1lIC5rb2AKKyAgCQkgICAgZmkKKwkJZG9uZQorCWRvbmUKKwk7OworICAgICIiKQorCSQwIG1vdW50LXVubW91bnQgdGVzdGZzLiQkIC90bXAvJCQgJgorCSQwIGJhbmctb25lIGV4dDIgJgorCSQwIGJhbmctYWxsICYKKwlleGl0IDAKKwk7OworICAgICopCisJZWNobyBVbmtub3duIGFyZyAiJDEiCisJZXhpdCAxCisJOzsKK2VzYWMKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90YWJsZXMuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90YWJsZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODYyOTIwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3RhYmxlcy5jCkBAIC0wLDAgKzEsNTcxIEBACisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgImRlcG1vZC5oIgorI2luY2x1ZGUgInRhYmxlcy5oIgorI2luY2x1ZGUgInV0aWwuaCIKKworLyogVHVybiAvbGliL21vZHVsZXMvMi41LjQ5L2tlcm5lbC9mb28ua28oLmd6KSA9PiBmb28gKi8KK3N0YXRpYyB2b2lkIG1ha2Vfc2hvcnRuYW1lKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKK3sKKwljaGFyICpleHQ7CisJY29uc3QgY2hhciAqYm5hbWU7CisKKwlibmFtZSA9IG15X2Jhc2VuYW1lKHNyYyk7CisJc3RyY3B5KGRlc3QsIGJuYW1lKTsKKwlleHQgPSBzdHJjaHIoZGVzdCwgJy4nKTsKKwlpZiAoZXh0KQorCQkqZXh0ID0gJ1wwJzsKK30KKworLyogV2Ugc2V0IGRyaXZlcl9kYXRhIHRvIHplcm8gKi8KK3N0YXRpYyB2b2lkIG91dHB1dF9wY2lfZW50cnkoc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaSwgY2hhciAqbmFtZSwgRklMRSAqb3V0LAorCQkJICAgICBpbnQgY29udikKK3sKKwlmcHJpbnRmKG91dCwKKwkJIiUtMjBzIDB4JTA4eCAweCUwOHggMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4IDB4MFxuIiwKKwkJbmFtZSwKKwkJRU5EKHBjaS0+dmVuZG9yLCBjb252KSwKKwkJRU5EKHBjaS0+ZGV2aWNlLCBjb252KSwKKwkJRU5EKHBjaS0+c3VidmVuZG9yLCBjb252KSwKKwkJRU5EKHBjaS0+c3ViZGV2aWNlLCBjb252KSwKKwkJRU5EKHBjaS0+Y2xhc3MsIGNvbnYpLAorCQlFTkQocGNpLT5jbGFzc19tYXNrLCBjb252KSk7Cit9CisKK2ludCBvdXRwdXRfcGNpX3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCisJZnByaW50ZihvdXQsICIjIHBjaSBtb2R1bGUgICAgICAgICB2ZW5kb3IgICAgIGRldmljZSAgICAgc3VidmVuZG9yIgorCQkiICBzdWJkZXZpY2UgIGNsYXNzICAgICAgY2xhc3NfbWFzayBkcml2ZXJfZGF0YVxuIik7CisKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQlzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZTsKKwkJY2hhciBzaG9ydG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSArIDFdOworCQlzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdCA9ICZpLT50YWJsZXM7CisKKwkJaWYgKCF0LT5wY2lfdGFibGUpCisJCQljb250aW51ZTsKKworCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJZm9yIChlID0gdC0+cGNpX3RhYmxlOyBlLT52ZW5kb3I7IGUgPSAodm9pZCAqKWUgKyB0LT5wY2lfc2l6ZSkKKwkJCW91dHB1dF9wY2lfZW50cnkoZSwgc2hvcnRuYW1lLCBvdXQsIGktPmZpbGUtPmNvbnYpOworCX0KKwlyZXR1cm4gMTsKK30KKworLyogV2Ugc2V0IGRyaXZlcl9pbmZvIHRvIHplcm8gKi8KK3N0YXRpYyB2b2lkIG91dHB1dF91c2JfZW50cnkoc3RydWN0IHVzYl9kZXZpY2VfaWQgKnVzYiwgY2hhciAqbmFtZSwgRklMRSAqb3V0LAorCQkJICAgICBpbnQgY29udikKK3sKKwlmcHJpbnRmKG91dCwgIiUtMjBzIDB4JTA0eCAgICAgIDB4JTA0eCAgIDB4JTA0eCAgICAweCUwNHgiCisJCSIgICAgICAgMHglMDR4ICAgICAgIDB4JTAyeCAgICAgICAgIDB4JTAyeCIKKwkJIiAgICAgICAgICAgIDB4JTAyeCAgICAgICAgICAgIDB4JTAyeCIKKwkJIiAgICAgICAgICAgIDB4JTAyeCAgICAgICAgICAgICAgIDB4JTAyeCIKKwkJIiAgICAgICAgICAgICAgIDB4MFxuIiwKKwkJbmFtZSwKKwkJRU5EKHVzYi0+bWF0Y2hfZmxhZ3MsIGNvbnYpLAorCQlFTkQodXNiLT5pZFZlbmRvciwgY29udiksCisJCUVORCh1c2ItPmlkUHJvZHVjdCwgY29udiksCisJCUVORCh1c2ItPmJjZERldmljZV9sbywgY29udiksCisJCUVORCh1c2ItPmJjZERldmljZV9oaSwgY29udiksCisJCUVORCh1c2ItPmJEZXZpY2VDbGFzcywgY29udiksCisJCUVORCh1c2ItPmJEZXZpY2VTdWJDbGFzcywgY29udiksCisJCUVORCh1c2ItPmJEZXZpY2VQcm90b2NvbCwgY29udiksCisJCUVORCh1c2ItPmJJbnRlcmZhY2VDbGFzcywgY29udiksCisJCUVORCh1c2ItPmJJbnRlcmZhY2VTdWJDbGFzcywgY29udiksCisJCUVORCh1c2ItPmJJbnRlcmZhY2VQcm90b2NvbCwgY29udikpOworfQorCitpbnQgb3V0cHV0X3VzYl90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpCit7CisJc3RydWN0IG1vZHVsZSAqaTsKKworCWZwcmludGYob3V0LCAiIyB1c2IgbW9kdWxlICAgICAgICAgIik7CisJLyogUmVxdWlyZXMgYWxsIHVzZXJzIHRvIGJlIG9uIGtlcm5lbCAyLjQuMCBvciBsYXRlciAqLworCWZwcmludGYob3V0LCAibWF0Y2hfZmxhZ3MgIik7CisJZnByaW50ZihvdXQsICJpZFZlbmRvciBpZFByb2R1Y3QgYmNkRGV2aWNlX2xvIGJjZERldmljZV9oaSIKKwkJIiBiRGV2aWNlQ2xhc3MgYkRldmljZVN1YkNsYXNzIGJEZXZpY2VQcm90b2NvbCIKKwkJIiBiSW50ZXJmYWNlQ2xhc3MgYkludGVyZmFjZVN1YkNsYXNzIgorCQkiIGJJbnRlcmZhY2VQcm90b2NvbCBkcml2ZXJfaW5mb1xuIik7CisKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQlzdHJ1Y3QgdXNiX2RldmljZV9pZCAqZTsKKwkJY2hhciBzaG9ydG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSArIDFdOworCQlzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdCA9ICZpLT50YWJsZXM7CisKKwkJaWYgKCF0LT51c2JfdGFibGUpCisJCQljb250aW51ZTsKKworCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJZm9yIChlID0gdC0+dXNiX3RhYmxlOworCQkgICAgIGUtPmlkVmVuZG9yIHx8IGUtPmJEZXZpY2VDbGFzcyB8fCBlLT5iSW50ZXJmYWNlQ2xhc3M7CisJCSAgICAgZSA9ICh2b2lkICopZSArIHQtPnVzYl9zaXplKQorCQkJb3V0cHV0X3VzYl9lbnRyeShlLCBzaG9ydG5hbWUsIG91dCwgaS0+ZmlsZS0+Y29udik7CisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBvdXRwdXRfaWVlZTEzOTRfZW50cnkoc3RydWN0IGllZWUxMzk0X2RldmljZV9pZCAqZncsIGNoYXIgKm5hbWUsCisJCQkJICBGSUxFICpvdXQsIGludCBjb252KQoreworCWZwcmludGYob3V0LCAiJS0yMHMgMHglMDh4ICAweCUwNnggIDB4JTA2eCAweCUwNnggICAgIDB4JTA2eFxuIiwKKwkJbmFtZSwKKwkJRU5EKGZ3LT5tYXRjaF9mbGFncywgY29udiksCisJCUVORChmdy0+dmVuZG9yX2lkLCBjb252KSwKKwkJRU5EKGZ3LT5tb2RlbF9pZCwgY29udiksCisJCUVORChmdy0+c3BlY2lmaWVyX2lkLCBjb252KSwKKwkJRU5EKGZ3LT52ZXJzaW9uLCBjb252KSk7Cit9CisKK2ludCBvdXRwdXRfaWVlZTEzOTRfdGFibGUoc3RydWN0IG1vZHVsZSAqbW9kdWxlcywgRklMRSAqb3V0LCBjaGFyICpkaXJuYW1lKQoreworCXN0cnVjdCBtb2R1bGUgKmk7CisKKwlmcHJpbnRmKG91dCwgIiMgaWVlZTEzOTQgbW9kdWxlICAgICIpOworCWZwcmludGYob3V0LCAibWF0Y2hfZmxhZ3MgdmVuZG9yX2lkIG1vZGVsX2lkIHNwZWNpZmllcl9pZCB2ZXJzaW9uXG4iKTsKKworCWZvciAoaSA9IG1vZHVsZXM7IGk7IGkgPSBpLT5uZXh0KSB7CisJCXN0cnVjdCBpZWVlMTM5NF9kZXZpY2VfaWQgKmZ3OworCQljaGFyIHNob3J0bmFtZVtzdHJsZW4oaS0+cGF0aG5hbWUpICsgMV07CisJCXN0cnVjdCBtb2R1bGVfdGFibGVzICp0ID0gJmktPnRhYmxlczsKKworCQlpZiAoIXQtPmllZWUxMzk0X3RhYmxlKQorCQkJY29udGludWU7CisKKwkJbWFrZV9zaG9ydG5hbWUoc2hvcnRuYW1lLCBpLT5wYXRobmFtZSk7CisJCWZvciAoZncgPSB0LT5pZWVlMTM5NF90YWJsZTsgZnctPm1hdGNoX2ZsYWdzOworCQkgICAgIGZ3ID0gKHZvaWQgKikgZncgKyB0LT5pZWVlMTM5NF9zaXplKQorCQkJb3V0cHV0X2llZWUxMzk0X2VudHJ5KGZ3LCBzaG9ydG5hbWUsIG91dCwgaS0+ZmlsZS0+Y29udik7CisJfQorCXJldHVybiAxOworfQorCisKKy8qIFdlIHNldCBkcml2ZXJfZGF0YSB0byB6ZXJvICovCitzdGF0aWMgdm9pZCBvdXRwdXRfY2N3X2VudHJ5KHN0cnVjdCBjY3dfZGV2aWNlX2lkICpjY3csIGNoYXIgKm5hbWUsIEZJTEUgKm91dCwKKwkJCSAgICAgaW50IGNvbnYpCit7CisJZnByaW50ZihvdXQsICIlLTIwcyAweCUwNHggICAgICAweCUwNHggIDB4JTAyeCAgICAgIDB4JTA0eCAgMHglMDJ4XG4iLAorCQluYW1lLCBFTkQoY2N3LT5tYXRjaF9mbGFncywgY29udiksCisJCUVORChjY3ctPmN1X3R5cGUsIGNvbnYpLCAgRU5EKGNjdy0+Y3VfbW9kZWwsIGNvbnYpLAorCQlFTkQoY2N3LT5kZXZfdHlwZSwgY29udiksIEVORChjY3ctPmRldl9tb2RlbCwgY29udikpOworfQorCitpbnQgb3V0cHV0X2Njd190YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpCit7CisJc3RydWN0IG1vZHVsZSAqaTsKKworCWZwcmludGYob3V0LCAiIyBjY3cgbW9kdWxlICAgICAgICAgIik7CisJZnByaW50ZihvdXQsICJtYXRjaF9mbGFncyBjdV90eXBlIGN1X21vZGVsIGRldl90eXBlIGRldl9tb2RlbFxuIik7CisKKwlmb3IgKGkgPSBtb2R1bGVzOyBpOyBpID0gaS0+bmV4dCkgeworCQlzdHJ1Y3QgY2N3X2RldmljZV9pZCAqZTsKKwkJY2hhciBzaG9ydG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSArIDFdOworCQlzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdCA9ICZpLT50YWJsZXM7CisKKwkJaWYgKCF0LT5jY3dfdGFibGUpCisJCQljb250aW51ZTsKKworCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJZm9yIChlID0gdC0+Y2N3X3RhYmxlOworCQkgICAgIGUtPmN1X3R5cGUgfHwgZS0+Y3VfbW9kZWwgfHwgZS0+ZGV2X3R5cGUgfHwgZS0+ZGV2X21vZGVsOworCQkgICAgIGUgPSAodm9pZCAqKSBlICsgdC0+Y2N3X3NpemUpCisJCQlvdXRwdXRfY2N3X2VudHJ5KGUsIHNob3J0bmFtZSwgb3V0LCBpLT5maWxlLT5jb252KTsKKwl9CisJcmV0dXJuIDE7Cit9CisKKyNkZWZpbmUgSVNBUE5QX1ZFTkRPUihhLGIsYykJKCgoKChhKS0nQScrMSkmMHgzZik8PDIpfFwKKwkJCQkoKCgoYiktJ0EnKzEpJjB4MTgpPj4zKXwoKCgoYiktJ0EnKzEpJjcpPDwxMyl8XAorCQkJCSgoKChjKS0nQScrMSkmMHgxZik8PDgpKQorI2RlZmluZSBJU0FQTlBfREVWSUNFKHgpCSgoKCh4KSYweGYwMDApPj44KXxcCisJCQkJICgoKHgpJjB4MGYwMCk+PjgpfFwKKwkJCQkgKCgoeCkmMHgwMGYwKTw8OCl8XAorCQkJCSAoKCh4KSYweDAwMGYpPDw4KSkKKworc3RhdGljIHZvaWQgcHV0X2lzYXBucF9pZChGSUxFICpvdXQsIGNvbnN0IGNoYXIgKmlkKQoreworCXVuc2lnbmVkIHNob3J0IHZlbmRvciwgZGV2aWNlOworCisJdmVuZG9yID0gSVNBUE5QX1ZFTkRPUihpZFswXSwgaWRbMV0sIGlkWzJdKTsKKwlkZXZpY2UgPSAodW5zaWduZWQgc2hvcnQpc3RydG9sKCZpZFszXSwgTlVMTCwgMTYpOworCWRldmljZSA9IElTQVBOUF9ERVZJQ0UoZGV2aWNlKTsKKwlmcHJpbnRmKG91dCwgIiAweCUwNHggICAgIDB4JTA0eCAgICAiLCB2ZW5kb3IsIGRldmljZSk7Cit9CisKK2ludCBvdXRwdXRfaXNhcG5wX3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCisJZnByaW50ZihvdXQsICIjIGlzYXBucCBtb2R1bGUgICAgICAiKTsKKwlmcHJpbnRmKG91dCwgImNhcmR2ZW5kb3IgY2FyZGRldmljZSBkcml2ZXJfZGF0YSB2ZW5kb3IgICAgIGZ1bmN0aW9uICAgLi4uXG4iKTsKKworCWZvciAoaSA9IG1vZHVsZXM7IGk7IGkgPSBpLT5uZXh0KSB7CisJCWNoYXIgc2hvcnRuYW1lW3N0cmxlbihpLT5wYXRobmFtZSkgKyAxXTsKKwkJc3RydWN0IG1vZHVsZV90YWJsZXMgKnQgPSAmaS0+dGFibGVzOworCisJCWlmICh0LT5wbnBfdGFibGUpIHsKKwkJCXN0cnVjdCBwbnBfZGV2aWNlX2lkICppZDsKKwkJCW1ha2Vfc2hvcnRuYW1lKHNob3J0bmFtZSwgaS0+cGF0aG5hbWUpOworCQkJZm9yIChpZCA9IHQtPnBucF90YWJsZTsKKwkJCSAgICAgaWQtPmlkWzBdOworCQkJICAgICBpZCA9ICh2b2lkICopaWQgKyB0LT5wbnBfc2l6ZSkgeworCQkJCWZwcmludGYob3V0LCAiJS0yMHMiLCBzaG9ydG5hbWUpOworCQkJCWZwcmludGYob3V0LCAiIDB4ZmZmZiAgICAgMHhmZmZmICAgICIpOworCQkJCWZwcmludGYob3V0LCAiIDB4MDAwMDAwMDAgIik7IC8qIGRyaXZlcl9kYXRhICovCisJCQkJcHV0X2lzYXBucF9pZChvdXQsIGlkLT5pZCk7CisJCQkJZnByaW50ZihvdXQsICJcbiIpOworCQkJfQorCQl9CisJCWlmICh0LT5wbnBfY2FyZF90YWJsZSkgeworCQkJdm9pZCAqaWQ7CisJCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJCWZvciAoaWQgPSB0LT5wbnBfY2FyZF90YWJsZTsKKwkJCSAgICAgKChjaGFyICopaWQpWzBdOworCQkJICAgICBpZCArPSB0LT5wbnBfY2FyZF9zaXplKSB7CisJCQkJaW50IGlkeDsKKwkJCQlzdHJ1Y3QgcG5wX2NhcmRfZGV2aWQgKmRldmlkCisJCQkJCT0gaWQgKyB0LT5wbnBfY2FyZF9vZmZzZXQ7CisKKwkJCQlmcHJpbnRmKG91dCwgIiUtMjBzIiwgc2hvcnRuYW1lKTsKKwkJCQlwdXRfaXNhcG5wX2lkKG91dCwgaWQpOworCQkJCWZwcmludGYob3V0LCAiIDB4MDAwMDAwMDAgIik7IC8qIGRyaXZlcl9kYXRhICovCisJCQkJZm9yIChpZHggPSAwOyBpZHggPCA4OyBpZHgrKykgeworCQkJCQlpZiAoIWRldmlkLT5kZXZpZFtpZHhdWzBdKQorCQkJCQkJYnJlYWs7CisJCQkJCXB1dF9pc2FwbnBfaWQob3V0LCBkZXZpZC0+ZGV2aWRbaWR4XSk7CisJCQkJfQorCQkJCWZwcmludGYob3V0LCAiXG4iKTsKKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gMTsKK30KKworI2RlZmluZSBNQVRDSF9idXN0eXBlICAgMQorI2RlZmluZSBNQVRDSF92ZW5kb3IgICAgMgorI2RlZmluZSBNQVRDSF9wcm9kdWN0ICAgNAorI2RlZmluZSBNQVRDSF92ZXJzaW9uICAgOAorCisjZGVmaW5lIE1BVENIX2V2Yml0ICAgICAweDAxMAorI2RlZmluZSBNQVRDSF9rZXliaXQgICAgMHgwMjAKKyNkZWZpbmUgTUFUQ0hfcmVsYml0ICAgIDB4MDQwCisjZGVmaW5lIE1BVENIX2Fic2JpdCAgICAweDA4MAorI2RlZmluZSBNQVRDSF9tc2NiaXQgICAgMHgxMDAKKyNkZWZpbmUgTUFUQ0hfbGVkYml0ICAgIDB4MjAwCisjZGVmaW5lIE1BVENIX3NuZGJpdCAgICAweDQwMAorI2RlZmluZSBNQVRDSF9mZmJpdCAgICAgMHg4MDAKKyNkZWZpbmUgTUFUQ0hfc3diaXQgICAgIDB4MTAwMAorCisjZGVmaW5lIE1BVENIKHgpIChFTkQoaW5wdXQtPm1hdGNoX2ZsYWdzLCBjb252KSAmIE1BVENIXyAjIyB4KQorI2RlZmluZSBQUklOVF9TQ0FMQVIobikgZnByaW50ZihvdXQsICIgIDB4JWx4IiwgTUFUQ0gobikgPyBFTkQoaW5wdXQtPm4sIGNvbnYpIDogMGwpCisjZGVmaW5lIFBSSU5UX0FSUkFZNjQobikgZG8gewkJCQkJCSAgICBcCisJZnByaW50ZihvdXQsICIgICIpOwkJCQkJCSAgICBcCisJaWYgKE1BVENIKG4pKQkJCQkJCQkgICAgXAorCQlvdXRwdXRfaW5wdXRfYml0c182NChvdXQsIGlucHV0LT5uLCBzaXplb2YoaW5wdXQtPm4pLCBjb252KTsgXAorCWVsc2UJCQkJCQkJCSAgICBcCisJCWZwcmludGYob3V0LCAiJWQiLCAwKTsJCQkJCSAgICBcCisJfSB3aGlsZSAoMCkKKworI2RlZmluZSBQUklOVF9BUlJBWTMyKG4pIGRvIHsJCQkJCQkgICAgXAorCWZwcmludGYob3V0LCAiICAiKTsJCQkJCQkgICAgXAorCWlmIChNQVRDSChuKSkJCQkJCQkJICAgIFwKKwkJb3V0cHV0X2lucHV0X2JpdHNfMzIob3V0LCBpbnB1dC0+biwgc2l6ZW9mKGlucHV0LT5uKSwgY29udik7IFwKKwllbHNlCQkJCQkJCQkgICAgXAorCQlmcHJpbnRmKG91dCwgIiVkIiwgMCk7CQkJCQkgICAgXAorCX0gd2hpbGUgKDApCisKK3N0YXRpYyB2b2lkIG91dHB1dF9pbnB1dF9iaXRzXzMyKEZJTEUgKm91dCwgdW5zaWduZWQgaW50ICpiaXRzLCBpbnQgc2l6ZSwKKwkJCQkgaW50IGNvbnYpCit7CisJaW50IGksIGo7CisKKwlzaXplIC89IHNpemVvZigqYml0cyk7CisJZm9yIChpID0gc2l6ZSAtIDE7IGkgPj0gMDsgaS0tKQorCQkgaWYgKEVORChiaXRzW2ldLCBjb252KSkKKwkJCSBicmVhazsKKwlpZiAoaSA8IDApCisJCWkgPSAwOworCWZwcmludGYob3V0LCAiJXgiLCBFTkQoYml0c1tpXSwgY29udikpOworCWZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkKKwkJZnByaW50ZihvdXQsICI6JXgiLCBFTkQoYml0c1tqXSwgY29udikpOworfQorCitzdGF0aWMgdm9pZCBvdXRwdXRfaW5wdXRfYml0c182NChGSUxFICpvdXQsIHVuc2lnbmVkIGxvbmcgbG9uZyAqYml0cywgaW50IHNpemUsCisJCQkJIGludCBjb252KQoreworCWludCBpLCBqOworCisJc2l6ZSAvPSBzaXplb2YoKmJpdHMpOworCWZvciAoaSA9IHNpemUgLSAxOyBpID49IDA7IGktLSkKKwkJIGlmIChFTkQoYml0c1tpXSwgY29udikpCisJCQkgYnJlYWs7CisJaWYgKGkgPCAwKQorCQlpID0gMDsKKwlmcHJpbnRmKG91dCwgIiVsbHgiLCBFTkQoYml0c1tpXSwgY29udikpOworCWZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkKKwkJZnByaW50ZihvdXQsICI6JWxseCIsIEVORChiaXRzW2pdLCBjb252KSk7Cit9CisKKy8qIEZvcm1hdHMgYXJlIHRvbyBkaWZmZXJlbnQgdG8gKi8KK3N0YXRpYyBpbnQgb3V0cHV0X2lucHV0X2VudHJ5XzMyKHN0cnVjdCBpbnB1dF9kZXZpY2VfaWRfMzIgKmlucHV0LAorCQkJCSBjaGFyICpuYW1lLCBGSUxFICpvdXQsIGludCBjb252KQoreworCWlmICghaW5wdXQtPm1hdGNoX2ZsYWdzICYmICFpbnB1dC0+ZHJpdmVyX2luZm8pCisJCXJldHVybiAxOworCisJZnByaW50ZihvdXQsICIlLTIwczB4JXgiLCBuYW1lLCBFTkQoaW5wdXQtPm1hdGNoX2ZsYWdzLCBjb252KSk7CisKKwlQUklOVF9TQ0FMQVIoYnVzdHlwZSk7CisJUFJJTlRfU0NBTEFSKHZlbmRvcik7CisJUFJJTlRfU0NBTEFSKHByb2R1Y3QpOworCVBSSU5UX1NDQUxBUih2ZXJzaW9uKTsKKworCVBSSU5UX0FSUkFZMzIoZXZiaXQpOworCVBSSU5UX0FSUkFZMzIoa2V5Yml0KTsKKwlQUklOVF9BUlJBWTMyKHJlbGJpdCk7CisJUFJJTlRfQVJSQVkzMihhYnNiaXQpOworCVBSSU5UX0FSUkFZMzIobXNjYml0KTsKKwlQUklOVF9BUlJBWTMyKGxlZGJpdCk7CisJUFJJTlRfQVJSQVkzMihzbmRiaXQpOworCVBSSU5UX0FSUkFZMzIoZmZiaXQpOworCVBSSU5UX0FSUkFZMzIoc3diaXQpOworCisJZnByaW50ZihvdXQsICIgIDB4JXhcbiIsIEVORChpbnB1dC0+ZHJpdmVyX2luZm8sIGNvbnYpKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBvdXRwdXRfaW5wdXRfZW50cnlfMzJfb2xkKHN0cnVjdCBpbnB1dF9kZXZpY2VfaWRfb2xkXzMyICppbnB1dCwKKwkJCQkgICAgIGNoYXIgKm5hbWUsIEZJTEUgKm91dCwgaW50IGNvbnYpCit7CisJaWYgKCFpbnB1dC0+bWF0Y2hfZmxhZ3MgJiYgIWlucHV0LT5kcml2ZXJfaW5mbykKKwkJcmV0dXJuIDE7CisKKwlmcHJpbnRmKG91dCwgIiUtMjBzMHgleCIsIG5hbWUsIEVORChpbnB1dC0+bWF0Y2hfZmxhZ3MsIGNvbnYpKTsKKworCVBSSU5UX1NDQUxBUihidXN0eXBlKTsKKwlQUklOVF9TQ0FMQVIodmVuZG9yKTsKKwlQUklOVF9TQ0FMQVIocHJvZHVjdCk7CisJUFJJTlRfU0NBTEFSKHZlcnNpb24pOworCisJUFJJTlRfQVJSQVkzMihldmJpdCk7CisJUFJJTlRfQVJSQVkzMihrZXliaXQpOworCVBSSU5UX0FSUkFZMzIocmVsYml0KTsKKwlQUklOVF9BUlJBWTMyKGFic2JpdCk7CisJUFJJTlRfQVJSQVkzMihtc2NiaXQpOworCVBSSU5UX0FSUkFZMzIobGVkYml0KTsKKwlQUklOVF9BUlJBWTMyKHNuZGJpdCk7CisJUFJJTlRfQVJSQVkzMihmZmJpdCk7CisKKwlmcHJpbnRmKG91dCwgIiAgMHgleFxuIiwgRU5EKGlucHV0LT5kcml2ZXJfaW5mbywgY29udikpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG91dHB1dF9pbnB1dF9lbnRyeV82NChzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkXzY0ICppbnB1dCwKKwkJCQkgY2hhciAqbmFtZSwgRklMRSAqb3V0LCBpbnQgY29udikKK3sKKwlpZiAoIWlucHV0LT5tYXRjaF9mbGFncyAmJiAhaW5wdXQtPmRyaXZlcl9pbmZvKQorCQlyZXR1cm4gMTsKKworCWZwcmludGYob3V0LCAiJS0yMHMweCVsbHgiLCBuYW1lLCBFTkQoaW5wdXQtPm1hdGNoX2ZsYWdzLCBjb252KSk7CisKKwlQUklOVF9TQ0FMQVIoYnVzdHlwZSk7CisJUFJJTlRfU0NBTEFSKHZlbmRvcik7CisJUFJJTlRfU0NBTEFSKHByb2R1Y3QpOworCVBSSU5UX1NDQUxBUih2ZXJzaW9uKTsKKworCVBSSU5UX0FSUkFZNjQoZXZiaXQpOworCVBSSU5UX0FSUkFZNjQoa2V5Yml0KTsKKwlQUklOVF9BUlJBWTY0KHJlbGJpdCk7CisJUFJJTlRfQVJSQVk2NChhYnNiaXQpOworCVBSSU5UX0FSUkFZNjQobXNjYml0KTsKKwlQUklOVF9BUlJBWTY0KGxlZGJpdCk7CisJUFJJTlRfQVJSQVk2NChzbmRiaXQpOworCVBSSU5UX0FSUkFZNjQoZmZiaXQpOworCVBSSU5UX0FSUkFZNjQoc3diaXQpOworCisJZnByaW50ZihvdXQsICIgIDB4JWxseFxuIiwgRU5EKGlucHV0LT5kcml2ZXJfaW5mbywgY29udikpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG91dHB1dF9pbnB1dF9lbnRyeV82NF9vbGQoc3RydWN0IGlucHV0X2RldmljZV9pZF9vbGRfNjQgKmlucHV0LAorCQkJCSAgICAgY2hhciAqbmFtZSwgRklMRSAqb3V0LCBpbnQgY29udikKK3sKKwlpZiAoIWlucHV0LT5tYXRjaF9mbGFncyAmJiAhaW5wdXQtPmRyaXZlcl9pbmZvKQorCQlyZXR1cm4gMTsKKworCWZwcmludGYob3V0LCAiJS0yMHMweCVsbHgiLCBuYW1lLCBFTkQoaW5wdXQtPm1hdGNoX2ZsYWdzLCBjb252KSk7CisKKwlQUklOVF9TQ0FMQVIoYnVzdHlwZSk7CisJUFJJTlRfU0NBTEFSKHZlbmRvcik7CisJUFJJTlRfU0NBTEFSKHByb2R1Y3QpOworCVBSSU5UX1NDQUxBUih2ZXJzaW9uKTsKKworCVBSSU5UX0FSUkFZNjQoZXZiaXQpOworCVBSSU5UX0FSUkFZNjQoa2V5Yml0KTsKKwlQUklOVF9BUlJBWTY0KHJlbGJpdCk7CisJUFJJTlRfQVJSQVk2NChhYnNiaXQpOworCVBSSU5UX0FSUkFZNjQobXNjYml0KTsKKwlQUklOVF9BUlJBWTY0KGxlZGJpdCk7CisJUFJJTlRfQVJSQVk2NChzbmRiaXQpOworCVBSSU5UX0FSUkFZNjQoZmZiaXQpOworCisJZnByaW50ZihvdXQsICIgIDB4JWxseFxuIiwgRU5EKGlucHV0LT5kcml2ZXJfaW5mbywgY29udikpOworCXJldHVybiAwOworfQorCitpbnQgb3V0cHV0X2lucHV0X3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCisJZnByaW50ZihvdXQsICIjIG1vZHVsZSAgICAgICAgIG1hdGNoQml0cyIpOworCWZwcmludGYob3V0LCAiIGJ1c3R5cGUgdmVuZG9yIHByb2R1Y3QgdmVyc2lvbiBldkJpdHMga2V5Qml0cyByZWxCaXRzIik7CisJZnByaW50ZihvdXQsICIgYWJzQml0cyBtc2NCaXRzIGxlZEJpdHMgc25kQml0cyBmZkJpdHMgW3N3Qml0c10gZHJpdmVyX2luZm9cbiIpOworCisJZm9yIChpID0gbW9kdWxlczsgaTsgaSA9IGktPm5leHQpIHsKKwkJdm9pZCAqcDsKKwkJY2hhciBzaG9ydG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSArIDFdOworCQlpbnQgZG9uZSA9IDA7CisJCXN0cnVjdCBtb2R1bGVfdGFibGVzICp0ID0gJmktPnRhYmxlczsKKwkJaW50IGNvbnYgPSBpLT5maWxlLT5jb252OworCisJCWlmICghdC0+aW5wdXRfdGFibGUpCisJCQljb250aW51ZTsKKworCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJLyogR3Vlc3Mgd2hhdCBzaXplIGl0IHJlYWxseSBpcywgYmFzZWQgb24gc2l6ZSBvZgorCQkgKiB3aG9sZSB0YWJsZS4gIFRhYmxlIGNoYW5nZWQgaW4gMi42LjE0LiAgVGhpcyBpcyBhIGhhY2suICovCisJCWlmICh0LT5pbnB1dF9zaXplID09IHNpemVvZihzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkX29sZF82NCkpIHsKKwkJCWlmICgodC0+aW5wdXRfdGFibGVfc2l6ZSAlIHQtPmlucHV0X3NpemUpICE9IDApIHsKKwkJCQl0LT5pbnB1dF9zaXplCisJCQkJCT0gc2l6ZW9mKHN0cnVjdCBpbnB1dF9kZXZpY2VfaWRfNjQpOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKCh0LT5pbnB1dF90YWJsZV9zaXplICUgdC0+aW5wdXRfc2l6ZSkgIT0gMCkgeworCQkJCXQtPmlucHV0X3NpemUKKwkJCQkJPSBzaXplb2Yoc3RydWN0IGlucHV0X2RldmljZV9pZF8zMik7CisJCQl9CisJCX0KKworCQlmb3IgKHAgPSB0LT5pbnB1dF90YWJsZTsgIWRvbmU7IHAgKz0gdC0+aW5wdXRfc2l6ZSkgeworCQkJc3dpdGNoICh0LT5pbnB1dF9zaXplKSB7CisJCQljYXNlIHNpemVvZihzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkX29sZF82NCk6CisJCQkJZG9uZSA9IG91dHB1dF9pbnB1dF9lbnRyeV82NF9vbGQocCwKKwkJCQkJCQkJIHNob3J0bmFtZSwKKwkJCQkJCQkJIG91dCwgY29udik7CisJCQkJYnJlYWs7CisJCQljYXNlIHNpemVvZihzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkXzY0KToKKwkJCQlkb25lID0gb3V0cHV0X2lucHV0X2VudHJ5XzY0KHAsIHNob3J0bmFtZSwKKwkJCQkJCQkgICAgIG91dCwgY29udik7CisJCQkJYnJlYWs7CisJCQljYXNlIHNpemVvZihzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkX29sZF8zMik6CisJCQkJZG9uZSA9IG91dHB1dF9pbnB1dF9lbnRyeV8zMl9vbGQocCwKKwkJCQkJCQkJIHNob3J0bmFtZSwKKwkJCQkJCQkJIG91dCwgY29udik7CisJCQkJYnJlYWs7CisJCQljYXNlIHNpemVvZihzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkXzMyKToKKwkJCQlkb25lID0gb3V0cHV0X2lucHV0X2VudHJ5XzMyKHAsIHNob3J0bmFtZSwKKwkJCQkJCQkgICAgIG91dCwgY29udik7CisJCQkJYnJlYWs7CisJCQl9CisJCX0JCQkJCisJfQorCXJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCBvdXRwdXRfc2VyaW9fZW50cnkoc3RydWN0IHNlcmlvX2RldmljZV9pZCAqc2VyaW8sIGNoYXIgKm5hbWUsIEZJTEUgKm91dCkKK3sKKwlmcHJpbnRmKG91dCwKKwkJIiUtMjBzIDB4JTAyeCAweCUwMnggIDB4JTAyeCAweCUwMnhcbiIsCisJCW5hbWUsCisJCXNlcmlvLT50eXBlLAorCQlzZXJpby0+ZXh0cmEsCisJCXNlcmlvLT5pZCwKKwkJc2VyaW8tPnByb3RvKTsKK30KKworCitpbnQgb3V0cHV0X3NlcmlvX3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCisJZnByaW50ZihvdXQsICIjIHNlcmlvIG1vZHVsZSAgICAgICB0eXBlIGV4dHJhIGlkICAgcHJvdG9cbiIpOworCisJZm9yIChpID0gbW9kdWxlczsgaTsgaSA9IGktPm5leHQpIHsKKwkJc3RydWN0IHNlcmlvX2RldmljZV9pZCAqZTsKKwkJY2hhciBzaG9ydG5hbWVbc3RybGVuKGktPnBhdGhuYW1lKSArIDFdOworCQlzdHJ1Y3QgbW9kdWxlX3RhYmxlcyAqdCA9ICZpLT50YWJsZXM7CisKKwkJaWYgKCF0LT5zZXJpb190YWJsZSkKKwkJCWNvbnRpbnVlOworCisJCW1ha2Vfc2hvcnRuYW1lKHNob3J0bmFtZSwgaS0+cGF0aG5hbWUpOworCQlmb3IgKGUgPSB0LT5zZXJpb190YWJsZTsgZS0+dHlwZSB8fCBlLT5wcm90bzsgZSA9ICh2b2lkICopZSArIHQtPnNlcmlvX3NpemUpCisJCQlvdXRwdXRfc2VyaW9fZW50cnkoZSwgc2hvcnRuYW1lLCBvdXQpOworCX0KKwlyZXR1cm4gMTsKK30KKworCitzdGF0aWMgdm9pZAorc3RyaXBfd2hpdGVzcGFjZSAoY2hhciAqc3RyLCBjaGFyIGNocikKK3sKKwlpbnQgaTsKKwlpZiAoIXN0cikKKwkJcmV0dXJuOworCWZvciAoaSA9IHN0cmxlbiAoc3RyKTsgaSA+PSAwOyAtLWkpCisJCWlmIChpc3NwYWNlICgqc3RyKSkKKwkJCSpzdHIgPSBjaHI7Cit9CisKKy8qIFdlIHNldCBkcml2ZXJfZGF0YSB0byB6ZXJvICovCitzdGF0aWMgdm9pZCBvdXRwdXRfb2ZfZW50cnkoc3RydWN0IG9mX2RldmljZV9pZCAqZGV2LCBjaGFyICpuYW1lLCBGSUxFICpvdXQpCit7CisJY2hhciAqb2ZuYW1lID0gTlVMTCwgKnR5cGUgPSBOVUxMLCAqY29tcGF0aWJsZSA9IE5VTEw7CisJaWYgKGRldi0+bmFtZVswXSkgeworCQlvZm5hbWUgPSBzdHJkdXAgKGRldi0+bmFtZSk7CisJCXN0cmlwX3doaXRlc3BhY2UgKG9mbmFtZSwgJ18nKTsKKwl9CisKKwlpZiAoZGV2LT50eXBlWzBdKSB7CisJCXR5cGUgPSBzdHJkdXAgKGRldi0+dHlwZSk7CisJCXN0cmlwX3doaXRlc3BhY2UgKHR5cGUsICdfJyk7CisgICAgICAgfQorCisJaWYgKGRldi0+Y29tcGF0aWJsZVswXSkgeworCQljb21wYXRpYmxlID0gc3RyZHVwIChkZXYtPmNvbXBhdGlibGUpOworCQlzdHJpcF93aGl0ZXNwYWNlIChjb21wYXRpYmxlLCAnXycpOworCX0KKworICAgICAgICBmcHJpbnRmIChvdXQsICIlLTIwcyAlLTIwcyAlLTIwcyAlc1xuIiwKKyAgICAgICAgICAgICAgICBuYW1lLCBvZm5hbWUgPyBvZm5hbWUgOiAiKiIsIHR5cGUgPyB0eXBlIDogIioiLAorICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPyBjb21wYXRpYmxlIDogIioiKTsKKwkKKwlmcmVlKG9mbmFtZSk7CisJZnJlZSh0eXBlKTsKKwlmcmVlKGNvbXBhdGlibGUpOworfQorCitpbnQgb3V0cHV0X29mX3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSkKK3sKKwlzdHJ1Y3QgbW9kdWxlICppOworCisgICAgICAgIGZwcmludGYgKG91dCwgIiMgb2YgbW9kdWxlICAgICAgICAgIG5hbWUgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgICAgICAgICAgIGNvbXBhdGlibGVcbiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCWZvciAoaSA9IG1vZHVsZXM7IGk7IGkgPSBpLT5uZXh0KSB7CisJCXN0cnVjdCBvZl9kZXZpY2VfaWQgKmU7CisJCWNoYXIgc2hvcnRuYW1lW3N0cmxlbihpLT5wYXRobmFtZSkgKyAxXTsKKwkJc3RydWN0IG1vZHVsZV90YWJsZXMgKnQgPSAmaS0+dGFibGVzOworCisJCWlmICghdC0+b2ZfdGFibGUpCisJCQljb250aW51ZTsKKworCQltYWtlX3Nob3J0bmFtZShzaG9ydG5hbWUsIGktPnBhdGhuYW1lKTsKKwkJZm9yIChlID0gdC0+b2ZfdGFibGU7IGUtPm5hbWVbMF18ZS0+dHlwZVswXXxlLT5jb21wYXRpYmxlWzBdOworICAgICAgICAgICAgICAgICAgICAgZSA9ICh2b2lkICopZSArIHQtPm9mX3NpemUpCisJCQlvdXRwdXRfb2ZfZW50cnkoZSwgc2hvcnRuYW1lLCBvdXQpOworCX0KKwlyZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90YWJsZXMuaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90YWJsZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjBlOGRmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3RhYmxlcy5oCkBAIC0wLDAgKzEsMTg3IEBACisjaWZuZGVmIE1PRElOSVRUT09MU19UQUJMRVNfSAorI2RlZmluZSBNT0RJTklUVE9PTFNfVEFCTEVTX0gKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworLyogVGFrZW4gZnJvbSB0aGUgMi41LjQ5IGtlcm5lbCwgd2l0aCB0aGUga2VybmVsIHNwZWNpZmljIGZpZWxkcyByZW1vdmVkICovCitzdHJ1Y3QgcGNpX2RldmljZV9pZCB7CisJdW5zaWduZWQgaW50IHZlbmRvciwgZGV2aWNlOwkJLyogVmVuZG9yIGFuZCBkZXZpY2UgSUQgb3IgUENJX0FOWV9JRCAqLworCXVuc2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsJLyogU3Vic3lzdGVtIElEJ3Mgb3IgUENJX0FOWV9JRCAqLworCXVuc2lnbmVkIGludCBjbGFzcywgY2xhc3NfbWFzazsJCS8qIChjbGFzcyxzdWJjbGFzcyxwcm9nLWlmKSB0cmlwbGV0ICovCit9OworI2RlZmluZSBQQ0lfREVWSUNFX1NJWkUzMiAoNiAqIDQgKyA0KQorI2RlZmluZSBQQ0lfREVWSUNFX1NJWkU2NCAoNiAqIDQgKyA4KQorCitzdHJ1Y3QgdXNiX2RldmljZV9pZCB7CisJLyogd2hpY2ggZmllbGRzIHRvIG1hdGNoIGFnYWluc3Q/ICovCisJdW5zaWduZWQgc2hvcnQJbWF0Y2hfZmxhZ3M7CisKKwkvKiBVc2VkIGZvciBwcm9kdWN0IHNwZWNpZmljIG1hdGNoZXM7IHJhbmdlIGlzIGluY2x1c2l2ZSAqLworCXVuc2lnbmVkIHNob3J0CWlkVmVuZG9yOworCXVuc2lnbmVkIHNob3J0CWlkUHJvZHVjdDsKKwl1bnNpZ25lZCBzaG9ydAliY2REZXZpY2VfbG87CisJdW5zaWduZWQgc2hvcnQJYmNkRGV2aWNlX2hpOworCisJLyogVXNlZCBmb3IgZGV2aWNlIGNsYXNzIG1hdGNoZXMgKi8KKwl1bnNpZ25lZCBjaGFyCWJEZXZpY2VDbGFzczsKKwl1bnNpZ25lZCBjaGFyCWJEZXZpY2VTdWJDbGFzczsKKwl1bnNpZ25lZCBjaGFyCWJEZXZpY2VQcm90b2NvbDsKKworCS8qIFVzZWQgZm9yIGludGVyZmFjZSBjbGFzcyBtYXRjaGVzICovCisJdW5zaWduZWQgY2hhcgliSW50ZXJmYWNlQ2xhc3M7CisJdW5zaWduZWQgY2hhcgliSW50ZXJmYWNlU3ViQ2xhc3M7CisJdW5zaWduZWQgY2hhcgliSW50ZXJmYWNlUHJvdG9jb2w7CisKK307CisjZGVmaW5lIFVTQl9ERVZJQ0VfU0laRTMyICg1ICogMiArIDYgKiAxICsgNCkKKyNkZWZpbmUgVVNCX0RFVklDRV9TSVpFNjQgKDUgKiAyICsgNiAqIDEgKyA4KQorCitzdHJ1Y3QgaWVlZTEzOTRfZGV2aWNlX2lkIHsKKwl1bnNpZ25lZCBpbnQgbWF0Y2hfZmxhZ3M7CisJdW5zaWduZWQgaW50IHZlbmRvcl9pZDsKKwl1bnNpZ25lZCBpbnQgbW9kZWxfaWQ7CisJdW5zaWduZWQgaW50IHNwZWNpZmllcl9pZDsKKwl1bnNpZ25lZCBpbnQgdmVyc2lvbjsKK307CisjZGVmaW5lIElFRUUxMzk0X0RFVklDRV9TSVpFMzIgKDUgKiA0ICsgNCkKKyNkZWZpbmUgSUVFRTEzOTRfREVWSUNFX1NJWkU2NCAoNSAqIDQgKyA0IC8qcGFkZGluZyovICsgOCkKKworc3RydWN0IGNjd19kZXZpY2VfaWQgeworCXVuc2lnbmVkIHNob3J0IG1hdGNoX2ZsYWdzOwkvKiB3aGljaCBmaWVsZHMgdG8gbWF0Y2ggYWdhaW5zdCAqLworCisJdW5zaWduZWQgc2hvcnQgY3VfdHlwZTsJCS8qIGNvbnRyb2wgdW5pdCB0eXBlICAgICAqLworCXVuc2lnbmVkIHNob3J0IGRldl90eXBlOwkvKiBkZXZpY2UgdHlwZSAgICAgICAgICAgKi8KKwl1bnNpZ25lZCBjaGFyICBjdV9tb2RlbDsJLyogY29udHJvbCB1bml0IG1vZGVsICAgICovCisJdW5zaWduZWQgY2hhciAgZGV2X21vZGVsOwkvKiBkZXZpY2UgbW9kZWwgICAgICAgICAgKi8KK307CisjZGVmaW5lIENDV19ERVZJQ0VfU0laRTMyICgzICogMiArIDIgKiAxICsgNCkKKyNkZWZpbmUgQ0NXX0RFVklDRV9TSVpFNjQgKDMgKiAyICsgMiAqIDEgKyA4KQorCitzdHJ1Y3QgcG5wX2RldmljZV9pZCB7CisJY2hhciBpZFs4XTsKK307CisjZGVmaW5lIFBOUF9ERVZJQ0VfU0laRTMyICg4ICsgNCkKKyNkZWZpbmUgUE5QX0RFVklDRV9TSVpFNjQgKDggKyA4KQorCitzdHJ1Y3QgcG5wX2NhcmRfZGV2aWQKK3sKKwljaGFyIGRldmlkWzhdWzhdOworfTsKK3N0cnVjdCBwbnBfY2FyZF9kZXZpY2VfaWRfMzIgeworCWNoYXIgaWRbOF07CisJY2hhciBkcml2ZXJfZGF0YVs0XTsKKwljaGFyIGRldmlkWzhdWzhdOworfTsKK3N0cnVjdCBwbnBfY2FyZF9kZXZpY2VfaWRfNjQgeworCWNoYXIgaWRbOF07CisJY2hhciBkcml2ZXJfZGF0YVs4XTsKKwljaGFyIGRldmlkWzhdWzhdOworfTsKKyNkZWZpbmUgUE5QX0NBUkRfREVWSUNFX1NJWkUzMiAoc2l6ZW9mKHN0cnVjdCBwbnBfY2FyZF9kZXZpY2VfaWRfMzIpKQorI2RlZmluZSBQTlBfQ0FSRF9ERVZJQ0VfU0laRTY0IChzaXplb2Yoc3RydWN0IHBucF9jYXJkX2RldmljZV9pZF82NCkpCisjZGVmaW5lIFBOUF9DQVJEX0RFVklDRV9PRkZTRVQzMiAob2Zmc2V0b2Yoc3RydWN0IHBucF9jYXJkX2RldmljZV9pZF8zMiwgZGV2aWQpKQorI2RlZmluZSBQTlBfQ0FSRF9ERVZJQ0VfT0ZGU0VUNjQgKG9mZnNldG9mKHN0cnVjdCBwbnBfY2FyZF9kZXZpY2VfaWRfNjQsIGRldmlkKSkKK3N0cnVjdCBpbnB1dF9kZXZpY2VfaWRfb2xkXzY0IHsKKwl1bnNpZ25lZCBsb25nIGxvbmcgbWF0Y2hfZmxhZ3M7CisJdW5zaWduZWQgc2hvcnQgYnVzdHlwZTsKKwl1bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CisJdW5zaWduZWQgc2hvcnQgcHJvZHVjdDsKKwl1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOworCXVuc2lnbmVkIGxvbmcgbG9uZyBldmJpdFsxXTsKKwl1bnNpZ25lZCBsb25nIGxvbmcga2V5Yml0WzhdOyAvKiA1MTIgYml0cyAqLworCXVuc2lnbmVkIGxvbmcgbG9uZyByZWxiaXRbMV07CisJdW5zaWduZWQgbG9uZyBsb25nIGFic2JpdFsxXTsgLyogNjQgYml0cyAqLworCXVuc2lnbmVkIGxvbmcgbG9uZyBtc2NiaXRbMV07CisJdW5zaWduZWQgbG9uZyBsb25nIGxlZGJpdFsxXTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgc25kYml0WzFdOworCXVuc2lnbmVkIGxvbmcgbG9uZyBmZmJpdFsyXTsgLyogMTI4IGJpdHMgKi8KKwl1bnNpZ25lZCBsb25nIGxvbmcgZHJpdmVyX2luZm87Cit9OworCitzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkX29sZF8zMiB7CisJdW5zaWduZWQgaW50IG1hdGNoX2ZsYWdzOworCXVuc2lnbmVkIHNob3J0IGJ1c3R5cGU7CisJdW5zaWduZWQgc2hvcnQgdmVuZG9yOworCXVuc2lnbmVkIHNob3J0IHByb2R1Y3Q7CisJdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsKKwl1bnNpZ25lZCBpbnQgZXZiaXRbMV07CisJdW5zaWduZWQgaW50IGtleWJpdFsxNl07IC8qIDUxMiBiaXRzICovCisJdW5zaWduZWQgaW50IHJlbGJpdFsxXTsKKwl1bnNpZ25lZCBpbnQgYWJzYml0WzJdOyAvKiA2NCBiaXRzICovCisJdW5zaWduZWQgaW50IG1zY2JpdFsxXTsKKwl1bnNpZ25lZCBpbnQgbGVkYml0WzFdOworCXVuc2lnbmVkIGludCBzbmRiaXRbMV07CisJdW5zaWduZWQgaW50IGZmYml0WzRdOyAvKiAxMjggYml0cyAqLworCXVuc2lnbmVkIGludCBkcml2ZXJfaW5mbzsKK307CisKKy8qIFdoZWUuLi4gc3RydWN0dXJlIGNoYW5nZWQgaW4gMi42LjE0IGFuZCBicm9rZSBtb2R1bGUtaW5pdC10b29scy4gKi8KK3N0cnVjdCBpbnB1dF9kZXZpY2VfaWRfNjQgeworCXVuc2lnbmVkIGxvbmcgbG9uZyBtYXRjaF9mbGFnczsKKwl1bnNpZ25lZCBzaG9ydCBidXN0eXBlOworCXVuc2lnbmVkIHNob3J0IHZlbmRvcjsKKwl1bnNpZ25lZCBzaG9ydCBwcm9kdWN0OworCXVuc2lnbmVkIHNob3J0IHZlcnNpb247CisJdW5zaWduZWQgbG9uZyBsb25nIGV2Yml0WzFdOworCXVuc2lnbmVkIGxvbmcgbG9uZyBrZXliaXRbOF07IC8qIDUxMiBiaXRzICovCisJdW5zaWduZWQgbG9uZyBsb25nIHJlbGJpdFsxXTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgYWJzYml0WzFdOyAvKiA2NCBiaXRzICovCisJdW5zaWduZWQgbG9uZyBsb25nIG1zY2JpdFsxXTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgbGVkYml0WzFdOworCXVuc2lnbmVkIGxvbmcgbG9uZyBzbmRiaXRbMV07CisJdW5zaWduZWQgbG9uZyBsb25nIGZmYml0WzJdOyAvKiAxMjggYml0cyAqLworCXVuc2lnbmVkIGxvbmcgbG9uZyBzd2JpdFsxXTsKKwl1bnNpZ25lZCBsb25nIGxvbmcgZHJpdmVyX2luZm87Cit9OworCitzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkXzMyIHsKKwl1bnNpZ25lZCBpbnQgbWF0Y2hfZmxhZ3M7CisJdW5zaWduZWQgc2hvcnQgYnVzdHlwZTsKKwl1bnNpZ25lZCBzaG9ydCB2ZW5kb3I7CisJdW5zaWduZWQgc2hvcnQgcHJvZHVjdDsKKwl1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOworCXVuc2lnbmVkIGludCBldmJpdFsxXTsKKwl1bnNpZ25lZCBpbnQga2V5Yml0WzE2XTsgLyogNTEyIGJpdHMgKi8KKwl1bnNpZ25lZCBpbnQgcmVsYml0WzFdOworCXVuc2lnbmVkIGludCBhYnNiaXRbMl07IC8qIDY0IGJpdHMgKi8KKwl1bnNpZ25lZCBpbnQgbXNjYml0WzFdOworCXVuc2lnbmVkIGludCBsZWRiaXRbMV07CisJdW5zaWduZWQgaW50IHNuZGJpdFsxXTsKKwl1bnNpZ25lZCBpbnQgZmZiaXRbNF07IC8qIDEyOCBiaXRzICovCisJdW5zaWduZWQgaW50IHN3Yml0WzFdOworCXVuc2lnbmVkIGludCBkcml2ZXJfaW5mbzsKK307CisKKy8qIFRoZXNlIGFyZSB0aGUgb2xkIHNpemVzLiAqLworI2RlZmluZSBJTlBVVF9ERVZJQ0VfU0laRTMyICg0ICsgNCAqIDIgKyA0ICsgMTYgKiA0ICsgNCArIDIgKiA0ICsgNCArIDQgKyA0ICsgNCAqIDQgKyA0KQorI2RlZmluZSBJTlBVVF9ERVZJQ0VfU0laRTY0ICg4ICsgNCAqIDIgKyA4ICsgOCAqIDggKyA4ICsgOCArIDggKyA4ICsgOCArIDIgKiA4ICsgOCkKKworc3RydWN0IHNlcmlvX2RldmljZV9pZCB7CisJdW5zaWduZWQgY2hhciB0eXBlOworCXVuc2lnbmVkIGNoYXIgZXh0cmE7CisJdW5zaWduZWQgY2hhciBpZDsKKwl1bnNpZ25lZCBjaGFyIHByb3RvOworfTsKKyNkZWZpbmUgU0VSSU9fREVWSUNFX1NJWkUzMiAoNCAqIDEpCisjZGVmaW5lIFNFUklPX0RFVklDRV9TSVpFNjQgKDQgKiAxICsgNCkKKworc3RydWN0IG9mX2RldmljZV9pZCB7CisJY2hhciBuYW1lWzMyXTsKKwljaGFyIHR5cGVbMzJdOworCWNoYXIgY29tcGF0aWJsZVsxMjhdOworfTsKKworI2RlZmluZSBPRl9ERVZJQ0VfU0laRTMyICgzMiAqIDIgKyAxMjggKyA0KQorI2RlZmluZSBPRl9ERVZJQ0VfU0laRTY0ICgzMiAqIDIgKyAxMjggKyA4KQorCisvKiBGdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGFibGVzLmMgKi8KK3N0cnVjdCBtb2R1bGU7CitpbnQgb3V0cHV0X3VzYl90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworaW50IG91dHB1dF9pZWVlMTM5NF90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworaW50IG91dHB1dF9wY2lfdGFibGUoc3RydWN0IG1vZHVsZSAqbW9kdWxlcywgRklMRSAqb3V0LCBjaGFyICpkaXJuYW1lKTsKK2ludCBvdXRwdXRfY2N3X3RhYmxlKHN0cnVjdCBtb2R1bGUgKm1vZHVsZXMsIEZJTEUgKm91dCwgY2hhciAqZGlybmFtZSk7CitpbnQgb3V0cHV0X2lzYXBucF90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworaW50IG91dHB1dF9pbnB1dF90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworaW50IG91dHB1dF9zZXJpb190YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworaW50IG91dHB1dF9vZl90YWJsZShzdHJ1Y3QgbW9kdWxlICptb2R1bGVzLCBGSUxFICpvdXQsIGNoYXIgKmRpcm5hbWUpOworCisjZW5kaWYgLyogTU9ESU5JVFRPT0xTX1RBQkxFU19IICovCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdGluZy5oIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmUyMzRhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RpbmcuaApAQCAtMCwwICsxLDI1MSBAQAorI2lmbmRlZiBfVEVTVElOR19ICisjZGVmaW5lIF9URVNUSU5HX0gKKworLyogVGVzdGluZyBjb2RlLiAqLworI2lmZGVmIEpVU1RfVEVTVElORworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CisjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKKy8qIFdlIGRvbid0IHVzZSBhbGwgb2YgdGhlc2UuICovCitzdGF0aWMgaW50IG1vZHRlc3RfdW5hbWUoc3RydWN0IHV0c25hbWUgKmJ1ZikgX19hdHRyaWJ1dGVfXygodW51c2VkKSk7CitzdGF0aWMgbG9uZyBtb2R0ZXN0X2NyZWF0ZV9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IHNpemUpCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKTsKK3N0YXRpYyB2b2lkICptb2R0ZXN0X2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKTsKK3N0YXRpYyBpbnQgbW9kdGVzdF9vcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUpCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKTsKK3N0YXRpYyBpbnQgbW9kdGVzdF9zdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1ZikKK19fYXR0cmlidXRlX18oKHVudXNlZCkpOworc3RhdGljIGludCBtb2R0ZXN0X2xzdGF0KGNvbnN0IGNoYXIgKmZpbGVfbmFtZSwgc3RydWN0IHN0YXQgKmJ1ZikKK19fYXR0cmlidXRlX18oKHVudXNlZCkpOworc3RhdGljIERJUiAqbW9kdGVzdF9vcGVuZGlyKGNvbnN0IGNoYXIgKm5hbWUpIF9fYXR0cmlidXRlX18oKHVudXNlZCkpOworc3RhdGljIGludCBtb2R0ZXN0X3N5c3RlbShjb25zdCBjaGFyICpzdHJpbmcpIF9fYXR0cmlidXRlX18oKHVudXNlZCkpOworc3RhdGljIGludCBtb2R0ZXN0X3JlbmFtZShjb25zdCBjaGFyICpvbGRwYXRoLCBjb25zdCBjaGFyICpuZXdwYXRoKQorX19hdHRyaWJ1dGVfXygodW51c2VkKSk7CitzdGF0aWMgbG9uZyBtb2R0ZXN0X2luaXRfbW9kdWxlKHZvaWQgKm1hcCwgdW5zaWduZWQgbG9uZyBzaXplLAorCQkJCWNvbnN0IGNoYXIgKm9wdHN0cmluZykgX19hdHRyaWJ1dGVfXygodW51c2VkKSk7CitzdGF0aWMgbG9uZyBtb2R0ZXN0X2RlbGV0ZV9tb2R1bGUoY29uc3QgY2hhciAqbW9kbmFtZSwgdW5zaWduZWQgaW50IGZsYWdzKQorX19hdHRyaWJ1dGVfXygodW51c2VkKSk7CisKK3N0YXRpYyBpbnQgbW9kdGVzdF9yZWFkbGluayhjb25zdCBjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXopCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKTsKKworc3RhdGljIGludCBtb2R0ZXN0X3VuYW1lKHN0cnVjdCB1dHNuYW1lICpidWYpCit7CisJY2hhciAqcmVsZWFzZSA9IE5VTEw7CisKKwlzdHJjcHkoYnVmLT5zeXNuYW1lLCAiTGludXgiKTsKKwlzdHJjcHkoYnVmLT5ub2RlbmFtZSwgImZha2Vub2RlbmFtZSIpOworCWlmICgocmVsZWFzZSA9IGdldGVudigiTU9EVEVTVF9VTkFNRSIpKSkKKwkJc3RyY3B5KGJ1Zi0+cmVsZWFzZSwgcmVsZWFzZSk7CisJZWxzZSB7CisJCXByaW50ZigiTU9EVEVTVF9PVkVSUklERV9ST09UIHVzZWQgYnV0IE1PRFRFU1RfVU5BTUUgbm90IHNldC5cbiIpOworCQlleGl0KDEpOworCX0KKwlzdHJjcHkoYnVmLT52ZXJzaW9uLCAiRmFrZXZlcnNpb24iKTsKKwlzdHJjcHkoYnVmLT5tYWNoaW5lLCAiZmFrZW1hY2hpbmUiKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGxvbmcgbW9kdGVzdF9jcmVhdGVfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBzaXplKQoreworCWlmIChnZXRlbnYoIk1PRFRFU1RfRE9fQ1JFQVRFX01PRFVMRSIpKQorCQlyZXR1cm4gMDsKKwllcnJubyA9IEVOT1NZUzsKKwlyZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgbW9kdGVzdF9kZWxheSA9IHsKKwkudHZfc2VjID0gMCwKKwkudHZfbnNlYyA9IDUwMCAqIDEwMDAgKiAxMDAwCit9OworCitzdGF0aWMgbG9uZyBtb2R0ZXN0X2luaXRfbW9kdWxlKHZvaWQgKm1hcCwgdW5zaWduZWQgbG9uZyBzaXplLAorCQkJCWNvbnN0IGNoYXIgKm9wdHN0cmluZykKK3sKKworCWlmIChnZXRlbnYoIk1PRFBST0JFX1dBSVQiKSkgeworCQlpbnQgZmQ7CisJCWNvbnN0IGNoYXIgKmZpbGUgPSBnZXRlbnYoIk1PRFBST0JFX1dBSVQiKTsKKworCQlwcmludGYoIkxvb3Bpbmcgb24gJXNcbiIsIGZpbGUpOworCQlmZmx1c2goc3Rkb3V0KTsKKwkJd2hpbGUgKChmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpKSA8IDApCisJCQluYW5vc2xlZXAoJm1vZHRlc3RfZGVsYXksIE5VTEwpOworCQljbG9zZShmZCk7CisJCXByaW50ZigiUmVtb3ZpbmcgJXNcbiIsIGZpbGUpOworCQl1bmxpbmsoZmlsZSk7CisJfQorCWlmIChnZXRlbnYoIk1PRFRFU1RfRFVNUF9JTklUIikpIHsKKwkJd2hpbGUgKHNpemUpIHsKKwkJCWludCByZXQ7CisJCQlyZXQgPSB3cml0ZSgyLCBtYXAsIHNpemUpOworCQkJaWYgKHJldCA8IDApIGV4aXQoMSk7CisJCQlzaXplIC09IHJldDsKKwkJCW1hcCArPSByZXQ7CisJCX0KKwl9IGVsc2UJCQorCQlwcmludGYoIklOSVRfTU9EVUxFOiAlbHUgJXNcbiIsIHNpemUsIG9wdHN0cmluZyk7CisJCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBsb25nIG1vZHRlc3RfZGVsZXRlX21vZHVsZShjb25zdCBjaGFyICptb2RuYW1lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCit7CisJY2hhciBmbGFnbmFtZXNbMTAwXTsKKworCWlmIChnZXRlbnYoIk1PRFBST0JFX1dBSVQiKSkgeworCQlpbnQgZmQ7CisJCWNvbnN0IGNoYXIgKmZpbGUgPSBnZXRlbnYoIk1PRFBST0JFX1dBSVQiKTsKKworCQlwcmludGYoIkxvb3Bpbmcgb24gJXNcbiIsIGZpbGUpOworCQlmZmx1c2goc3Rkb3V0KTsKKwkJd2hpbGUgKChmZCA9IG9wZW4oZmlsZSwgT19SRE9OTFkpKSA8IDApCisJCQluYW5vc2xlZXAoJm1vZHRlc3RfZGVsYXksIE5VTEwpOworCQljbG9zZShmZCk7CisJCXByaW50ZigiUmVtb3ZpbmcgJXNcbiIsIGZpbGUpOworCQlmZmx1c2goc3Rkb3V0KTsKKwkJdW5saW5rKGZpbGUpOworCX0KKwlmbGFnbmFtZXNbMF0gPSAnXDAnOworCWlmIChmbGFncyAmIE9fRVhDTCkKKwkJc3RyY2F0KGZsYWduYW1lcywgIkVYQ0wgIik7CisJaWYgKGZsYWdzICYgT19UUlVOQykKKwkJc3RyY2F0KGZsYWduYW1lcywgIlRSVU5DICIpOworCWlmIChmbGFncyAmIE9fTk9OQkxPQ0spCisJCXN0cmNhdChmbGFnbmFtZXMsICJOT05CTE9DSyAiKTsKKwlpZiAoZmxhZ3MgJiB+KE9fRVhDTHxPX1RSVU5DfE9fTk9OQkxPQ0spKQorCQlzdHJjYXQoZmxhZ25hbWVzLCAiVU5LTk9XTiAiKTsKKworCXByaW50ZigiREVMRVRFX01PRFVMRTogJXMgJXNcbiIsIG1vZG5hbWUsIGZsYWduYW1lcyk7CisJcmV0dXJuIDA7Cit9CisKKy8qIEFkZCBwcmVmaXggdG8gYWJzb2x1dGUgcGF0aHM7IHJlbGF0aXZlIHBhdGhzIGFyZSBsZWZ0IHVuY2hhbmdlZCAqLworc3RhdGljIGNvbnN0IGNoYXIgKm1vZHRlc3RfbWFwbmFtZShjb25zdCBjaGFyICpwYXRoLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4pCit7CisJY2hhciAqcm9vdDsgCisKKwlpZiAocGF0aFswXSAhPSAnLycpCisJCXJldHVybiBwYXRoOworCisJcm9vdCA9IGdldGVudigiTU9EVEVTVF9PVkVSUklERV9ST09UIik7CisJaWYgKCFyb290KQorCQlyZXR1cm4gcGF0aDsKKworCXNucHJpbnRmKGJ1ZiwgYnVmbGVuLCAiJXMlcyIsIHJvb3QsIHBhdGgpOworCXJldHVybiBidWY7Cit9CisKK3N0YXRpYyB2b2lkICptb2R0ZXN0X2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCit7CisJY2hhciBwYXRoX2J1ZltQQVRIX01BWF07CisKKwlwYXRoID0gbW9kdGVzdF9tYXBuYW1lKHBhdGgsIHBhdGhfYnVmLCBzaXplb2YocGF0aF9idWYpKTsKKwlyZXR1cm4gZm9wZW4ocGF0aCwgbW9kZSk7Cit9CisKK3N0YXRpYyBpbnQgbW9kdGVzdF9vcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgbW9kZV90IG1vZGUpCit7CisJY2hhciBwYXRoX2J1ZltQQVRIX01BWF07CisKKwlwYXRoID0gbW9kdGVzdF9tYXBuYW1lKHBhdGgsIHBhdGhfYnVmLCBzaXplb2YocGF0aF9idWYpKTsKKwlyZXR1cm4gb3BlbihwYXRoLCBmbGFncywgbW9kZSk7Cit9CisKK3N0YXRpYyBpbnQgbW9kdGVzdF9zdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCit7CisJY2hhciBwYXRoX2J1ZltQQVRIX01BWF07CisKKwlwYXRoID0gbW9kdGVzdF9tYXBuYW1lKHBhdGgsIHBhdGhfYnVmLCBzaXplb2YocGF0aF9idWYpKTsKKwlyZXR1cm4gc3RhdChwYXRoLCBidWYpOworfQorCitzdGF0aWMgaW50IG1vZHRlc3RfbHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKK3sKKwljaGFyIHBhdGhfYnVmW1BBVEhfTUFYXTsKKworCXBhdGggPSBtb2R0ZXN0X21hcG5hbWUocGF0aCwgcGF0aF9idWYsIHNpemVvZihwYXRoX2J1ZikpOworCXJldHVybiBsc3RhdChwYXRoLCBidWYpOworfQorCitzdGF0aWMgRElSICptb2R0ZXN0X29wZW5kaXIoY29uc3QgY2hhciAqcGF0aCkKK3sKKwljaGFyIHBhdGhfYnVmW1BBVEhfTUFYXTsKKworCXBhdGggPSBtb2R0ZXN0X21hcG5hbWUocGF0aCwgcGF0aF9idWYsIHNpemVvZihwYXRoX2J1ZikpOworCXJldHVybiBvcGVuZGlyKHBhdGgpOworfQorCitzdGF0aWMgaW50IG1vZHRlc3Rfc3lzdGVtKGNvbnN0IGNoYXIgKnN0cmluZykKK3sKKwlpZiAoZ2V0ZW52KCJNT0RURVNUX0RPX1NZU1RFTSIpKQorCQlyZXR1cm4gc3lzdGVtKHN0cmluZyk7CisJcHJpbnRmKCJTWVNURU06ICVzXG4iLCBzdHJpbmcpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IG1vZHRlc3RfcmVuYW1lKGNvbnN0IGNoYXIgKm9sZHBhdGgsIGNvbnN0IGNoYXIgKm5ld3BhdGgpCit7CisJY2hhciBvbGRwYXRoX2J1ZltQQVRIX01BWF07CisJY2hhciBuZXdwYXRoX2J1ZltQQVRIX01BWF07CisKKwlvbGRwYXRoID0gbW9kdGVzdF9tYXBuYW1lKG9sZHBhdGgsIG9sZHBhdGhfYnVmLCBzaXplb2Yob2xkcGF0aF9idWYpKTsKKwluZXdwYXRoID0gbW9kdGVzdF9tYXBuYW1lKG5ld3BhdGgsIG5ld3BhdGhfYnVmLCBzaXplb2YobmV3cGF0aF9idWYpKTsKKwlyZXR1cm4gcmVuYW1lKG9sZHBhdGgsIG5ld3BhdGgpOworfQorCitzdGF0aWMgaW50IG1vZHRlc3RfcmVhZGxpbmsoY29uc3QgY2hhciAqcGF0aCwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6KQoreworCWNoYXIgcGF0aF9idWZbUEFUSF9NQVhdOworCisJcGF0aCA9IG1vZHRlc3RfbWFwbmFtZShwYXRoLCBwYXRoX2J1Ziwgc2l6ZW9mKHBhdGhfYnVmKSk7CisJcmV0dXJuIHJlYWRsaW5rKHBhdGgsIGJ1ZiwgYnVmc2l6KTsKK30KKworI2lmZGVmIENPTkZJR19VU0VfWkxJQgorI2luY2x1ZGUgPHpsaWIuaD4KK3N0YXRpYyBnekZpbGUgKm1vZHRlc3RfZ3pvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCitfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKTsKKworc3RhdGljIGd6RmlsZSAqbW9kdGVzdF9nem9wZW4oY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKK3sKKwljaGFyIHBhdGhfYnVmW1BBVEhfTUFYXTsKKworCXBhdGggPSBtb2R0ZXN0X21hcG5hbWUocGF0aCwgcGF0aF9idWYsIHNpemVvZihwYXRoX2J1ZikpOworCXJldHVybiBnem9wZW4ocGF0aCwgbW9kZSk7Cit9CisjZW5kaWYKKworLyogY3JlYXRlX21vZHVsZSBjYWxsICovCisjdW5kZWYgY3JlYXRlX21vZHVsZQorI2RlZmluZSBjcmVhdGVfbW9kdWxlIG1vZHRlc3RfY3JlYXRlX21vZHVsZQorCisjZGVmaW5lIHVuYW1lIG1vZHRlc3RfdW5hbWUKKyNkZWZpbmUgZGVsZXRlX21vZHVsZSBtb2R0ZXN0X2RlbGV0ZV9tb2R1bGUKKyNkZWZpbmUgaW5pdF9tb2R1bGUgbW9kdGVzdF9pbml0X21vZHVsZQorI2RlZmluZSBvcGVuIG1vZHRlc3Rfb3BlbgorI2RlZmluZSBmb3BlbiBtb2R0ZXN0X2ZvcGVuCisjZGVmaW5lIHN0YXQobmFtZSwgcHRyKSBtb2R0ZXN0X3N0YXQobmFtZSwgcHRyKQorI2RlZmluZSBsc3RhdChuYW1lLCBwdHIpIG1vZHRlc3RfbHN0YXQobmFtZSwgcHRyKQorI2RlZmluZSBvcGVuZGlyIG1vZHRlc3Rfb3BlbmRpcgorI2RlZmluZSBzeXN0ZW0gbW9kdGVzdF9zeXN0ZW0KKyNkZWZpbmUgcmVuYW1lIG1vZHRlc3RfcmVuYW1lCisjZGVmaW5lIHJlYWRsaW5rIG1vZHRlc3RfcmVhZGxpbmsKKyNkZWZpbmUgZ3pvcGVuIG1vZHRlc3RfZ3pvcGVuCisKKyNlbmRpZiAvKiBKVVNUX1RFU1RJTkcgKi8KKyNlbmRpZiAvKiBfVEVTVElOR19IICovCisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2FsaWFzL2FsaWFzLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvYWxpYXMvYWxpYXMtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZmMGE3ZgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2FsaWFzL2FsaWFzLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9hLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvY29tcGxleC9jb21wbGV4X2EtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY0N2FiMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9hLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9iLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvY29tcGxleC9jb21wbGV4X2ItMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0YTlkMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9iLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9jLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvY29tcGxleC9jb21wbGV4X2MtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMyNTU2NAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9jLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9kLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvY29tcGxleC9jb21wbGV4X2QtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhZDA4YgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9kLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9lLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvY29tcGxleC9jb21wbGV4X2UtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJiZWMxNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2NvbXBsZXgvY29tcGxleF9lLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2xvb3AvbG9vcDEtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3AxLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0N2FiNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3AxLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2xvb3AvbG9vcDItMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3AyLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5YjI5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3AyLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL2xvb3AvbG9vcF9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3BfZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlZjYxYWYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9sb29wL2xvb3BfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9jY3dfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbWFwL2Njd19tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg4MDllNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9jY3dfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9pZWVlMTM5NF9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvaWVlZTEzOTRfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmODZmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvaWVlZTEzOTRfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9pbnB1dF9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvaW5wdXRfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NDU1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvaW5wdXRfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9pbnB1dF9tYXBfbmV3LTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbWFwL2lucHV0X21hcF9uZXctMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjODY4NgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9pbnB1dF9tYXBfbmV3LTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9vZl9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvb2ZfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlZjgzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9tYXAvb2ZfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9wY2lfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbWFwL3BjaV9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VkZjBmNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9wY2lfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9wbnBfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbWFwL3BucF9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGEzMjk2NQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC9wbnBfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC91c2JfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbWFwL3VzYl9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVlMTE4MQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21hcC91c2JfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21vZGluZm8vbW9kaW5mby0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL21vZGluZm8vbW9kaW5mby0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzEwNTE5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbW9kaW5mby9tb2RpbmZvLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9leHBvcnRfZGVwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbm9ybWFsL2V4cG9ydF9kZXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFmNDA3OQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9leHBvcnRfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9leHBvcnRfbm9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvZXhwb3J0X25vZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlMjRiMGUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvZXhwb3J0X25vZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9ub2V4cG9ydF9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvbm9leHBvcnRfZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZjBkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvbm9leHBvcnRfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MDc2Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1iZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTk4ZTRlCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvbm9ybWFsL25vZXhwb3J0X25vZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtbmV3LTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvcmVuYW1lL3JlbmFtZS1uZXctMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJkYzgyZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtbmV3LTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtb2xkLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvcmVuYW1lL3JlbmFtZS1vbGQtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjMTA5MwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtb2xkLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTQ3NzMxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvcmVuYW1lL3JlbmFtZS12ZXJzaW9uLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3Vua25vd24vdW5rbm93bi0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWJlL3Vua25vd24vdW5rbm93bi0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmQyMDI1Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItYmUvdW5rbm93bi91bmtub3duLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2FsaWFzL2FsaWFzLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvYWxpYXMvYWxpYXMtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThlZmRmMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2FsaWFzL2FsaWFzLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9hLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvY29tcGxleC9jb21wbGV4X2EtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlkZTg1MQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9hLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9iLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvY29tcGxleC9jb21wbGV4X2ItMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiOTk3YgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9iLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9jLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvY29tcGxleC9jb21wbGV4X2MtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgwYjNmYgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9jLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9kLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvY29tcGxleC9jb21wbGV4X2QtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAzZDQ3MAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9kLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9lLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvY29tcGxleC9jb21wbGV4X2UtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0NjE1OAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2NvbXBsZXgvY29tcGxleF9lLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2xvb3AvbG9vcDEtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3AxLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxOGYxMTIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3AxLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2xvb3AvbG9vcDItMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3AyLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYjg2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3AyLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL2xvb3AvbG9vcF9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3BfZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZjcxZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9sb29wL2xvb3BfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9jY3dfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbWFwL2Njd19tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZlZDY5YQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9jY3dfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9pZWVlMTM5NF9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvaWVlZTEzOTRfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZDg0NTUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvaWVlZTEzOTRfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9pbnB1dF9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvaW5wdXRfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYzgzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvaW5wdXRfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9pbnB1dF9tYXBfbmV3LTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbWFwL2lucHV0X21hcF9uZXctMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU0MDZiMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9pbnB1dF9tYXBfbmV3LTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9vZl9tYXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvb2ZfbWFwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5N2FhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9tYXAvb2ZfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9wY2lfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbWFwL3BjaV9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlODMzMQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9wY2lfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9wbnBfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbWFwL3BucF9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1NjE0OAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC9wbnBfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC91c2JfbWFwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbWFwL3VzYl9tYXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlYjg1ZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21hcC91c2JfbWFwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21vZGluZm8vbW9kaW5mby0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL21vZGluZm8vbW9kaW5mby0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2M0ZjFmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbW9kaW5mby9tb2RpbmZvLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9leHBvcnRfZGVwLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbm9ybWFsL2V4cG9ydF9kZXAtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRmZDgxZgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9leHBvcnRfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9leHBvcnRfbm9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvZXhwb3J0X25vZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNWY4YzIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvZXhwb3J0X25vZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9ub2V4cG9ydF9kZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvbm9leHBvcnRfZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5OTY2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvbm9leHBvcnRfZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtMzIua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTMyLmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOGRhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS8zMi1sZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTRhZWEzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvbm9ybWFsL25vZXhwb3J0X25vZGVwLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtbmV3LTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvcmVuYW1lL3JlbmFtZS1uZXctMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU2Y2EzZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtbmV3LTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtb2xkLTMyLmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvcmVuYW1lL3JlbmFtZS1vbGQtMzIua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFlNzIwZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtb2xkLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTFmN2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvcmVuYW1lL3JlbmFtZS12ZXJzaW9uLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3Vua25vd24vdW5rbm93bi0zMi5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzMyLWxlL3Vua25vd24vdW5rbm93bi0zMi5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTE4YzVhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvMzItbGUvdW5rbm93bi91bmtub3duLTMyLmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2FsaWFzL2FsaWFzLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvYWxpYXMvYWxpYXMtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU5MWQ3YgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2FsaWFzL2FsaWFzLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9hLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvY29tcGxleC9jb21wbGV4X2EtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE5MzIyNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9hLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9iLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvY29tcGxleC9jb21wbGV4X2ItNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZkOTY2MQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9iLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9jLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvY29tcGxleC9jb21wbGV4X2MtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwNDNhNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9jLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9kLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvY29tcGxleC9jb21wbGV4X2QtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI3N2FiNQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9kLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9lLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvY29tcGxleC9jb21wbGV4X2UtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFmYmVhNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2NvbXBsZXgvY29tcGxleF9lLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2xvb3AvbG9vcDEtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3AxLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzMTZhZTYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3AxLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2xvb3AvbG9vcDItNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3AyLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZmI2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3AyLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL2xvb3AvbG9vcF9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3BfZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NzBkMDcKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9sb29wL2xvb3BfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9jY3dfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbWFwL2Njd19tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyOWYxZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9jY3dfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9pZWVlMTM5NF9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvaWVlZTEzOTRfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMTg1MTUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvaWVlZTEzOTRfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9pbnB1dF9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvaW5wdXRfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMGQyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvaW5wdXRfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9pbnB1dF9tYXBfbmV3LTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbWFwL2lucHV0X21hcF9uZXctNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjUzOTk2NwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9pbnB1dF9tYXBfbmV3LTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9vZl9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvb2ZfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMTUxZjQKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9tYXAvb2ZfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9wY2lfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbWFwL3BjaV9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgxZGIxNQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9wY2lfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9wbnBfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbWFwL3BucF9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1MzQxNwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC9wbnBfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC91c2JfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbWFwL3VzYl9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU3OWY2NQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21hcC91c2JfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21vZGluZm8vbW9kaW5mby02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL21vZGluZm8vbW9kaW5mby02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2RmODkyCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbW9kaW5mby9tb2RpbmZvLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9leHBvcnRfZGVwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbm9ybWFsL2V4cG9ydF9kZXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE4MDRiZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9leHBvcnRfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9leHBvcnRfbm9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvZXhwb3J0X25vZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMDE4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvZXhwb3J0X25vZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9ub2V4cG9ydF9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvbm9leHBvcnRfZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYTkzMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvbm9leHBvcnRfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OGFjY2QKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1iZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmQyNmFiCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvbm9ybWFsL25vZXhwb3J0X25vZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtbmV3LTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvcmVuYW1lL3JlbmFtZS1uZXctNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1MGRlYwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtbmV3LTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtb2xkLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvcmVuYW1lL3JlbmFtZS1vbGQtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODE5MzkwMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtb2xkLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM3NGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvcmVuYW1lL3JlbmFtZS12ZXJzaW9uLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3Vua25vd24vdW5rbm93bi02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWJlL3Vua25vd24vdW5rbm93bi02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzc0NDRmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtYmUvdW5rbm93bi91bmtub3duLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2FsaWFzL2FsaWFzLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvYWxpYXMvYWxpYXMtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZiYjA1NQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2FsaWFzL2FsaWFzLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9hLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvY29tcGxleC9jb21wbGV4X2EtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkxZDRkYgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9hLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9iLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvY29tcGxleC9jb21wbGV4X2ItNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYwMTg1ZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9iLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9jLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvY29tcGxleC9jb21wbGV4X2MtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM5ZTg0NwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9jLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9kLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvY29tcGxleC9jb21wbGV4X2QtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUwNTIzMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9kLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9lLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvY29tcGxleC9jb21wbGV4X2UtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4YmU3ZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2NvbXBsZXgvY29tcGxleF9lLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2xvb3AvbG9vcDEtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3AxLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMDBhODEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3AxLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2xvb3AvbG9vcDItNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3AyLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNjA1MDMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3AyLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL2xvb3AvbG9vcF9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3BfZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzlhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9sb29wL2xvb3BfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9jY3dfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbWFwL2Njd19tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkYzA5NAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9jY3dfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9pZWVlMTM5NF9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvaWVlZTEzOTRfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzIyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvaWVlZTEzOTRfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9pbnB1dF9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvaW5wdXRfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NjFmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvaW5wdXRfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9pbnB1dF9tYXBfbmV3LTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbWFwL2lucHV0X21hcF9uZXctNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkNzVlNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9pbnB1dF9tYXBfbmV3LTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9vZl9tYXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvb2ZfbWFwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiYmNiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9tYXAvb2ZfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9wY2lfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbWFwL3BjaV9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTBjMTA4MwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9wY2lfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9wbnBfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbWFwL3BucF9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3MzkxNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC9wbnBfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC91c2JfbWFwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbWFwL3VzYl9tYXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdkNTM0NAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21hcC91c2JfbWFwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21vZGluZm8vbW9kaW5mby02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL21vZGluZm8vbW9kaW5mby02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjJjZjNmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbW9kaW5mby9tb2RpbmZvLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9leHBvcnRfZGVwLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbm9ybWFsL2V4cG9ydF9kZXAtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM3NzY3OAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9leHBvcnRfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9leHBvcnRfbm9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvZXhwb3J0X25vZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYzBlMzYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvZXhwb3J0X25vZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9ub2V4cG9ydF9kZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvbm9leHBvcnRfZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NmQ5MTUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvbm9leHBvcnRfZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtNjQua28gYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTY0LmtvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NTVkYjYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS82NC1sZS9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL25vcm1hbC9ub2V4cG9ydF9ub2RlcC02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODM0ODQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvbm9ybWFsL25vZXhwb3J0X25vZGVwLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtbmV3LTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvcmVuYW1lL3JlbmFtZS1uZXctNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1ZmRiNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtbmV3LTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtb2xkLTY0LmtvIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvcmVuYW1lL3JlbmFtZS1vbGQtNjQua28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdiMWQ5MQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtb2xkLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3JlbmFtZS9yZW5hbWUtdmVyc2lvbi02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZThjODUzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvcmVuYW1lL3JlbmFtZS12ZXJzaW9uLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3Vua25vd24vdW5rbm93bi02NC5rbyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhLzY0LWxlL3Vua25vd24vdW5rbm93bi02NC5rbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjUwNDQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvNjQtbGUvdW5rbm93bi91bmtub3duLTY0LmtvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL01ha2VmaWxlIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZhMTlmNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL01ha2VmaWxlCkBAIC0wLDAgKzEsNzUgQEAKKyMgTWFrZWZpbGUgdG8gcmVidWlsZCB0aGUgdGVzdCBtb2R1bGVzIGZvciBhIGdpdmVuIGJpdHMtZW5kaWFuZXNzIGNvbWJpbmF0aW9uCitVU0FHRSA6PSBtYWtlIEJJVFM9MzJ8NjQgRU5EPWJlfGxlIFtDQz0uLl0gW0NGTEFHUz0uLi5dCisKK0NDIDo9IGdjYworQ0ZMQUdTIDo9IC1XYWxsIC1EQklUU19QRVJfTE9ORz0kKEJJVFMpCisKK3RhcmdldHMgOj0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJYWxpYXMvYWxpYXMua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29tcGxleC9jb21wbGV4X2Eua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29tcGxleC9jb21wbGV4X2Iua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29tcGxleC9jb21wbGV4X2Mua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29tcGxleC9jb21wbGV4X2Qua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29tcGxleC9jb21wbGV4X2Uua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbG9vcC9sb29wMS5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbG9vcC9sb29wMi5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbG9vcC9sb29wX2RlcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL2Njd19tYXAua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL2llZWUxMzk0X21hcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL2lucHV0X21hcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL2lucHV0X21hcF9uZXcua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL29mX21hcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL3BjaV9tYXAua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL3BucF9tYXAua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbWFwL3VzYl9tYXAua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbW9kaW5mby9tb2RpbmZvLmtvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbm9ybWFsL2V4cG9ydF9kZXAua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbm9ybWFsL2V4cG9ydF9ub2RlcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbm9ybWFsL25vZXhwb3J0X2RlcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC5rbyAgICAgICAgICAgICAgICAgICAgICAgICBcCisJbm9ybWFsL25vZXhwb3J0X25vZGVwLmtvICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJcmVuYW1lL3JlbmFtZS1uZXcua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJcmVuYW1lL3JlbmFtZS1vbGQua28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJcmVuYW1lL3JlbmFtZS12ZXJzaW9uLmtvICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJdW5rbm93bi91bmtub3duLmtvCisKK2FsbDogY2hlY2tfdmFycyBidWlsZAorCitjaGVja192YXJzOgorCUBjYXNlICIkKEJJVFMpLSQoRU5EKSIgaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCTMyLWxlIHwgMzItYmUgfCA2NC1sZSB8IDY0LWJlKSA7OyAgICAgICAgICAgICAgICAgICAgXAorCSopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQllY2hvICJVc2FnZTogJChVU0FHRSkiID4mMjsgICAgICAgICAgICAgICAgICBcCisJCWV4aXQgMTs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwllc2FjCisKK2J1aWxkOiAkKHBhdHN1YnN0ICUua28sICQoQklUUyktJChFTkQpLyUtJChCSVRTKS5rbywgJCh0YXJnZXRzKSkKKworJS5rbzogJS5vCisJbXYgJF4gJEAKKworIyBGSVhNRSAtIHVnbHkKKyQoQklUUyktJChFTkQpL21hcC8lLSQoQklUUykubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiskKEJJVFMpLSQoRU5EKS9tb2RpbmZvLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorJChCSVRTKS0kKEVORCkvcmVuYW1lLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyQoQklUUyktJChFTkQpL25vcm1hbC8lLSQoQklUUykubyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiskKEJJVFMpLSQoRU5EKS91bmtub3duLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorJChCSVRTKS0kKEVORCkvY29tcGxleC8lLSQoQklUUykubyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyQoQklUUyktJChFTkQpL2FsaWFzLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiskKEJJVFMpLSQoRU5EKS9sb29wLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorJChCSVRTKS0kKEVORCkvbm9ybWFsLyUtJChCSVRTKS5vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKzogc3JjLyUuYworCW1rZGlyIC1wICQoZGlyICRAKQorCSQoQ0MpICQoQ0ZMQUdTKSAtbyAkQCAtYyAkXgorCUBjYXNlICIkKEVORCkiIGluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWxlKSAgICAgZW5kMj1MU0I7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCWJlKQllbmQyPU1TQjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZXNhYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZGVzYz1gZmlsZSAtYiAkQGA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJY2FzZSAiJCRkZXNjIiBpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJKlwgJChCSVRTKS1iaXRcICQkZW5kMlwgKikgOzsgICAgICAgICAgICAgICAgICAgICAgICBcCisJKikgZWNobyAiJEAgZG9lcyBub3QgbG9vayBsaWtlIGEgJChCSVRTKS0kKEVORCkgb2JqZWN0OiIgPiYyOyBcCisJICAgZWNobyAiJCRkZXNjIiA+JjIgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJICAgZXhpdCAxOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJZXNhYworCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvYWxpYXMuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9hbGlhcy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMjk3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvYWxpYXMuYwpAQCAtMCwwICsxLDEwIEBACisvKiBTaW1wbGUgbW9kdWxlIHdpdGggYWxpYXNlcy4gKi8KKy8qIEZvciB1c2Vyc3BhY2U6IHlvdSBjYW4gYWxzbyBjYWxsIG1lLi4uICovCisjZGVmaW5lIF9fX21vZHVsZV9jYXQoYSxiKSBhICMjIGIKKyNkZWZpbmUgX19tb2R1bGVfY2F0KGEsYikgX19fbW9kdWxlX2NhdChhLGIpCisjZGVmaW5lIE1PRFVMRV9BTElBUyhhbGlhcykJCQkJCVwKKwlzdGF0aWMgY29uc3QgY2hhciBfX21vZHVsZV9jYXQoX19hbGlhc18sX19MSU5FX18pW10JXAorCQlfX2F0dHJpYnV0ZV9fKChzZWN0aW9uKCIubW9kYWxpYXMiKSkpID0gYWxpYXMKKworTU9EVUxFX0FMSUFTKCJhbGlhczEiKTsKK01PRFVMRV9BTElBUygiYWxpYXMyIik7CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY2N3X21hcC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2Njd19tYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDU2MmViCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2Njd19tYXAuYwpAQCAtMCwwICsxLDQ4IEBACisvKiBTaW1wbGUgZmlsZSB3aXRoIGEgQ0NXIG1hcCBpbiBpdC4gKi8KKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4KQkjeAorI2RlZmluZSBfX3N0cmluZ2lmeSh4KQkJX19zdHJpbmdpZnlfMSh4KQorCisjZGVmaW5lIE1PRFVMRV9HRU5FUklDX1RBQkxFKGd0eXBlLG5hbWUpCQkJXAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgX19tb2R1bGVfIyNndHlwZSMjX3NpemUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBndHlwZSMjX2lkKTsJCVwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCAqIF9fbW9kdWxlXyMjZ3R5cGUjI190YWJsZQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IG5hbWU7CQkJCVwKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCBfX21vZF8jI2d0eXBlIyNfdGFibGUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgYWxpYXMoX19zdHJpbmdpZnkobmFtZSkpKSkKKworI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5cGUsbmFtZSkJCVwKKyAgTU9EVUxFX0dFTkVSSUNfVEFCTEUodHlwZSMjX2RldmljZSxuYW1lKQorCitzdHJ1Y3QgY2N3X2RldmljZV9pZCB7CisJdW5zaWduZWQgc2hvcnQJbWF0Y2hfZmxhZ3M7CS8qIHdoaWNoIGZpZWxkcyB0byBtYXRjaCBhZ2FpbnN0ICovCisKKwl1bnNpZ25lZCBzaG9ydAljdV90eXBlOwkvKiBjb250cm9sIHVuaXQgdHlwZSAgICAgKi8KKwl1bnNpZ25lZCBzaG9ydAlkZXZfdHlwZTsJLyogZGV2aWNlIHR5cGUgICAgICAgICAgICovCisJdW5zaWduZWQgY2hhcgljdV9tb2RlbDsJLyogY29udHJvbCB1bml0IG1vZGVsICAgICovCisJdW5zaWduZWQgY2hhcglkZXZfbW9kZWw7CS8qIGRldmljZSBtb2RlbCAgICAgICAgICAqLworCisJdW5zaWduZWQgbG9uZyBkcml2ZXJfaW5mbzsKK307CisKK2VudW0gbWF0Y2hfZmxhZyB7CisJQ0NXX0RFVklDRV9JRF9NQVRDSF9DVV9UWVBFICAgICAgPSAweDAxLAorCUNDV19ERVZJQ0VfSURfTUFUQ0hfQ1VfTU9ERUwgICAgID0gMHgwMiwKKwlDQ1dfREVWSUNFX0lEX01BVENIX0RFVklDRV9UWVBFICA9IDB4MDQsCisJQ0NXX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfTU9ERUwgPSAweDA4LAorfTsKKworc3RhdGljIHN0cnVjdCBjY3dfZGV2aWNlX2lkIGNjd19pZHNbXSA9IHsKKwl7IENDV19ERVZJQ0VfSURfTUFUQ0hfQ1VfVFlQRSB8CisJICBDQ1dfREVWSUNFX0lEX01BVENIX0NVX01PREVMIHwKKwkgIENDV19ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX1RZUEUgfAorCSAgQ0NXX0RFVklDRV9JRF9NQVRDSF9ERVZJQ0VfTU9ERUwsCisJICAxLCAyLCAzLCA0LCAweGRlYWRiZWVmIH0sCisJeyBDQ1dfREVWSUNFX0lEX01BVENIX0NVX1RZUEUgfAorCSAgQ0NXX0RFVklDRV9JRF9NQVRDSF9DVV9NT0RFTCB8CisJICBDQ1dfREVWSUNFX0lEX01BVENIX0RFVklDRV9UWVBFIHwKKwkgIENDV19ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX01PREVMLAorCSAgMTEsIDEyLCAxMywgMTQsIDB4ZGVhZGJlZTUgfSwKKwl7IC8qIGVuZCBvZiBsaXN0ICovIH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUoY2N3LCBjY3dfaWRzKTsKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9jb21wbGV4X2EuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9jb21wbGV4X2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjNhMzEzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2NvbXBsZXhfYS5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIEEgZGVwZW5kcyBvbiBCLCBDIGFuZCBELiAgQiBkZXBlbmRzIG9uIEUuICBDIGRlcGVuZHMgb24gQiBhbmQgRS4gIEQKKyAgIGRlcGVuZHMgb24gQi4gKi8KK2V4dGVybiBpbnQgYiwgYywgZDsKKworc3RhdGljIHZvaWQgZm9vKHZvaWQpCit7CisJYiA9IGMgPSBkID0gMDsKK30KKworCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9iLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9iLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI2OTFhOQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9jb21wbGV4X2IuYwpAQCAtMCwwICsxLDE1IEBACisvKiBBIGRlcGVuZHMgb24gQiwgQyBhbmQgRC4gIEIgZGVwZW5kcyBvbiBFLiAgQyBkZXBlbmRzIG9uIEIgYW5kIEUuICBECisgICBkZXBlbmRzIG9uIEIuICovCisjaW5jbHVkZSAibW9kdWxlLmgiCisKK2ludCBiOworZXh0ZXJuIGludCBlOworCitzdGF0aWMgdm9pZCBmb28odm9pZCkKK3sKKwliID0gZSA9IDA7Cit9CisKKworRVhQT1JUX1NZTUJPTChiKTsKKwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2NvbXBsZXhfYy5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2NvbXBsZXhfYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZTRiZWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9jLmMKQEAgLTAsMCArMSwxNSBAQAorLyogQSBkZXBlbmRzIG9uIEIsIEMgYW5kIEQuICBCIGRlcGVuZHMgb24gRS4gIEMgZGVwZW5kcyBvbiBCIGFuZCBFLiAgRAorICAgZGVwZW5kcyBvbiBCLiAqLworI2luY2x1ZGUgIm1vZHVsZS5oIgorCitpbnQgYzsKK2V4dGVybiBpbnQgYiwgZTsKKworc3RhdGljIHZvaWQgZm9vKHZvaWQpCit7CisJYyA9IGIgPSBlID0gMDsKK30KKworCitFWFBPUlRfU1lNQk9MKGMpOworCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9kLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVjYjQyMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9jb21wbGV4X2QuYwpAQCAtMCwwICsxLDE0IEBACisvKiBBIGRlcGVuZHMgb24gQiwgQyBhbmQgRC4gIEIgZGVwZW5kcyBvbiBFLiAgQyBkZXBlbmRzIG9uIEIgYW5kIEUuICBECisgICBkZXBlbmRzIG9uIEIuICovCisjaW5jbHVkZSAibW9kdWxlLmgiCisKK2ludCBkOworZXh0ZXJuIGludCBiOworCitzdGF0aWMgdm9pZCBmb28odm9pZCkKK3sKKwlkID0gYjsKK30KKworRVhQT1JUX1NZTUJPTChkKTsKKwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2NvbXBsZXhfZS5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2NvbXBsZXhfZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MTVjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvY29tcGxleF9lLmMKQEAgLTAsMCArMSw4IEBACisvKiBBIGRlcGVuZHMgb24gQiwgQyBhbmQgRC4gIEIgZGVwZW5kcyBvbiBFLiAgQyBkZXBlbmRzIG9uIEIgYW5kIEUuICBECisgICBkZXBlbmRzIG9uIEIuICovCisjaW5jbHVkZSAibW9kdWxlLmgiCisKK2ludCBlOworCitFWFBPUlRfU1lNQk9MKGUpOworCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvZXhwb3J0X2RlcC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2V4cG9ydF9kZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjMyNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2V4cG9ydF9kZXAuYwpAQCAtMCwwICsxLDEyIEBACisvKiBBIG1vZHVsZSBleHBvcnRpbmcgYSBzeW1ib2wsIGFuZCByZXF1aXJpbmcgYSBzeW1ib2wgKi8KKyNpbmNsdWRlICJtb2R1bGUuaCIKKworZXh0ZXJuIGludCBleHBvcnRlZDE7CitpbnQgZXhwb3J0ZWQzOworCitFWFBPUlRfU1lNQk9MKGV4cG9ydGVkMyk7CisKK3N0YXRpYyB2b2lkIGZvbyh2b2lkKQoreworCWV4cG9ydGVkMyA9IGV4cG9ydGVkMTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9leHBvcnRfbm9kZXAuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9leHBvcnRfbm9kZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGMyY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2V4cG9ydF9ub2RlcC5jCkBAIC0wLDAgKzEsNyBAQAorLyogQSBtb2R1bGUgZXhwb3J0aW5nIHR3byBzeW1ib2xzLCBhbmQgcmVxdWlyaW5nIG5vbmUuICovCisjaW5jbHVkZSAibW9kdWxlLmgiCisKK2ludCBleHBvcnRlZDEsIGV4cG9ydGVkMjsKKworRVhQT1JUX1NZTUJPTChleHBvcnRlZDEpOworRVhQT1JUX1NZTUJPTChleHBvcnRlZDIpOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2llZWUxMzk0X21hcC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2llZWUxMzk0X21hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZWU0N2UKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvaWVlZTEzOTRfbWFwLmMKQEAgLTAsMCArMSw1MSBAQAorLyogU2ltcGxlIGZpbGUgd2l0aCBhIGllZWUxMzk0IG1hcCBpbiBpdC4gKi8KKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4KQkjeAorI2RlZmluZSBfX3N0cmluZ2lmeSh4KQkJX19zdHJpbmdpZnlfMSh4KQorCisjZGVmaW5lIE1PRFVMRV9HRU5FUklDX1RBQkxFKGd0eXBlLG5hbWUpCQkJXAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgX19tb2R1bGVfIyNndHlwZSMjX3NpemUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBndHlwZSMjX2lkKTsJCVwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCAqIF9fbW9kdWxlXyMjZ3R5cGUjI190YWJsZQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IG5hbWU7CQkJCVwKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCBfX21vZF8jI2d0eXBlIyNfdGFibGUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgYWxpYXMoX19zdHJpbmdpZnkobmFtZSkpKSkKKworI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5cGUsbmFtZSkJCVwKKyAgTU9EVUxFX0dFTkVSSUNfVEFCTEUodHlwZSMjX2RldmljZSxuYW1lKQorCitzdHJ1Y3QgaWVlZTEzOTRfZGV2aWNlX2lkIHsKKwl1bnNpZ25lZCBpbnQgbWF0Y2hfZmxhZ3M7CisJdW5zaWduZWQgaW50IHZlbmRvcl9pZDsKKwl1bnNpZ25lZCBpbnQgbW9kZWxfaWQ7CisJdW5zaWduZWQgaW50IHNwZWNpZmllcl9pZDsKKwl1bnNpZ25lZCBpbnQgdmVyc2lvbjsKKwl2b2lkICpkcml2ZXJwdHI7Cit9OworCisjZGVmaW5lIElFRUUxMzk0X01BVENIX1ZFTkRPUl9JRAkweDAwMDEKKyNkZWZpbmUgSUVFRTEzOTRfTUFUQ0hfTU9ERUxfSUQJCTB4MDAwMgorI2RlZmluZSBJRUVFMTM5NF9NQVRDSF9TUEVDSUZJRVJfSUQJMHgwMDA0CisjZGVmaW5lIElFRUUxMzk0X01BVENIX1ZFUlNJT04JCTB4MDAwOAorCisvKgorICogVW5pdCBzcGVjIGlkIGFuZCBzdyB2ZXJzaW9uIGVudHJ5IGZvciBzb21lIHByb3RvY29scworICovCisjZGVmaW5lIEFWQ19VTklUX1NQRUNfSURfRU5UUlkJCQkJCTB4MDAwMEEwMkQKKyNkZWZpbmUgQVZDX1NXX1ZFUlNJT05fRU5UUlkJCQkJCTB4MDAwMTAwMDEKKyNkZWZpbmUgQ0FNRVJBX1VOSVRfU1BFQ19JRF9FTlRSWQkJCQkweDAwMDBBMDJECisjZGVmaW5lIENBTUVSQV9TV19WRVJTSU9OX0VOVFJZCQkJCQkweDAwMDAwMTAwCisKK3N0YXRpYyBzdHJ1Y3QgaWVlZTEzOTRfZGV2aWNlX2lkIGllZWUxMzk0X2lkc1tdIAorPSB7IHsKKwkubWF0Y2hfZmxhZ3MJPSBJRUVFMTM5NF9NQVRDSF9TUEVDSUZJRVJfSUQgfCBJRUVFMTM5NF9NQVRDSF9WRVJTSU9OLAorCS5zcGVjaWZpZXJfaWQJPSBBVkNfVU5JVF9TUEVDX0lEX0VOVFJZICYgMHhmZmZmZmYsCisJLnZlcnNpb24JPSBBVkNfU1dfVkVSU0lPTl9FTlRSWSAmIDB4ZmZmZmZmCit9LCB7CisJLm1hdGNoX2ZsYWdzCT0gSUVFRTEzOTRfTUFUQ0hfU1BFQ0lGSUVSX0lEIHwgSUVFRTEzOTRfTUFUQ0hfVkVSU0lPTiwKKwkuc3BlY2lmaWVyX2lkCT0gQ0FNRVJBX1VOSVRfU1BFQ19JRF9FTlRSWSAmIDB4ZmZmZmZmLAorCS52ZXJzaW9uCT0gQ0FNRVJBX1NXX1ZFUlNJT05fRU5UUlkgJiAweGZmZmZmZgorfSwKKyAgICB7IH0KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaWVlZTEzOTQsIGllZWUxMzk0X2lkcyk7CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvaW5wdXRfbWFwLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvaW5wdXRfbWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJlOGFjZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9pbnB1dF9tYXAuYwpAQCAtMCwwICsxLDg5IEBACisvKiBTaW1wbGUgZmlsZSB3aXRoIGFuIElOUFVUIG1hcCBpbiBpdC4gKi8KKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4KQkjeAorI2RlZmluZSBfX3N0cmluZ2lmeSh4KQkJX19zdHJpbmdpZnlfMSh4KQorCisjZGVmaW5lIE1PRFVMRV9HRU5FUklDX1RBQkxFKGd0eXBlLG5hbWUpCQkJXAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgX19tb2R1bGVfIyNndHlwZSMjX3NpemUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBndHlwZSMjX2lkKTsJCVwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCAqIF9fbW9kdWxlXyMjZ3R5cGUjI190YWJsZQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IG5hbWU7CQkJCVwKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCBfX21vZF8jI2d0eXBlIyNfdGFibGUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgYWxpYXMoX19zdHJpbmdpZnkobmFtZSkpKSkKKworI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5cGUsbmFtZSkJCVwKKyAgTU9EVUxFX0dFTkVSSUNfVEFCTEUodHlwZSMjX2RldmljZSxuYW1lKQorCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9WRU5ET1IJMgorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfUFJPRFVDVAk0CisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9WRVJTSU9OCTgKKworI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfRVZCSVQJMHgwMTAKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX0tFWUJJVAkweDAyMAorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfUkVMQklUCTB4MDQwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9BQlNCSVQJMHgwODAKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX01TQ0lUCTB4MTAwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9MRURCSVQJMHgyMDAKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX1NOREJJVAkweDQwMAorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfRkZCSVQJMHg4MDAKKworI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFXAorCShJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfQlVTIHwgSU5QVVRfREVWSUNFX0lEX01BVENIX1ZFTkRPUiB8IElOUFVUX0RFVklDRV9JRF9NQVRDSF9QUk9EVUNUKQorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX0FORF9WRVJTSU9OXAorCShJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFIHwgSU5QVVRfREVWSUNFX0lEX01BVENIX1ZFUlNJT04pCisKKyNkZWZpbmUgRVZfTUFYCQkJMHgxZgorI2RlZmluZSBLRVlfTUFYCQkJMHgxZmYKKyNkZWZpbmUgUkVMX01BWAkJCTB4MGYKKyNkZWZpbmUgQUJTX01BWAkJCTB4M2YKKyNkZWZpbmUgTVNDX01BWAkJCTB4MDcKKyNkZWZpbmUgTEVEX01BWAkJCTB4MGYKKyNkZWZpbmUgUkVQX01BWAkJCTB4MDEKKyNkZWZpbmUgU05EX01BWAkJCTB4MDcKKyNkZWZpbmUgRkZfTUFYCQkJMHg3ZgorCisjZGVmaW5lIEJJVCh4KQkoMVVMPDwoKHgpJUJJVFNfUEVSX0xPTkcpKQorI2RlZmluZSBOQklUUyh4KSAoKCgoeCktMSkvQklUU19QRVJfTE9ORykrMSkKKworc3RydWN0IGlucHV0X2lkIHsKKwl1bnNpZ25lZCBzaG9ydCBidXN0eXBlOworCXVuc2lnbmVkIHNob3J0IHZlbmRvcjsKKwl1bnNpZ25lZCBzaG9ydCBwcm9kdWN0OworCXVuc2lnbmVkIHNob3J0IHZlcnNpb247Cit9OworCitzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkIHsKKworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzdHJ1Y3QgaW5wdXRfaWQgaWQ7CisKKwl1bnNpZ25lZCBsb25nIGV2Yml0W05CSVRTKEVWX01BWCldOworCXVuc2lnbmVkIGxvbmcga2V5Yml0W05CSVRTKEtFWV9NQVgpXTsKKwl1bnNpZ25lZCBsb25nIHJlbGJpdFtOQklUUyhSRUxfTUFYKV07CisJdW5zaWduZWQgbG9uZyBhYnNiaXRbTkJJVFMoQUJTX01BWCldOworCXVuc2lnbmVkIGxvbmcgbXNjYml0W05CSVRTKE1TQ19NQVgpXTsKKwl1bnNpZ25lZCBsb25nIGxlZGJpdFtOQklUUyhMRURfTUFYKV07CisJdW5zaWduZWQgbG9uZyBzbmRiaXRbTkJJVFMoU05EX01BWCldOworCXVuc2lnbmVkIGxvbmcgZmZiaXRbTkJJVFMoRkZfTUFYKV07CisKKwl1bnNpZ25lZCBsb25nIGRyaXZlcl9pbmZvOworfTsKKworI2RlZmluZSBFVl9TTkQJCQkweDEyCisjZGVmaW5lIEVWX0tFWQkJCTB4MDEKKworc3RhdGljIHN0cnVjdCBpbnB1dF9kZXZpY2VfaWQga2JkX2lkc1tdID0geworCXsKKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfRVZCSVQsCisgICAgICAgICAgICAgICAgLmV2Yml0ID0geyBCSVQoRVZfS0VZKSB9LAorICAgICAgICB9LAorCQorCXsKKyAgICAgICAgICAgICAgICAuZmxhZ3MgPSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfRVZCSVQsCisgICAgICAgICAgICAgICAgLmV2Yml0ID0geyBCSVQoRVZfU05EKSB9LAorICAgICAgICB9LAkKKworCXsgfSwgICAgLyogVGVybWluYXRpbmcgZW50cnkgKi8KK307CisKK01PRFVMRV9ERVZJQ0VfVEFCTEUoaW5wdXQsIGtiZF9pZHMpOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2lucHV0X21hcF9uZXcuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9pbnB1dF9tYXBfbmV3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI0NTk5ZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9pbnB1dF9tYXBfbmV3LmMKQEAgLTAsMCArMSw5NCBAQAorLyogU2ltcGxlIGZpbGUgd2l0aCBhbiBJTlBVVCBtYXAgaW4gaXQuICovCisjZGVmaW5lIF9fc3RyaW5naWZ5XzEoeCkJI3gKKyNkZWZpbmUgX19zdHJpbmdpZnkoeCkJCV9fc3RyaW5naWZ5XzEoeCkKKworI2RlZmluZSBNT0RVTEVfR0VORVJJQ19UQUJMRShndHlwZSxuYW1lKQkJCVwKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIF9fbW9kdWxlXyMjZ3R5cGUjI19zaXplCQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IHNpemVvZihzdHJ1Y3QgZ3R5cGUjI19pZCk7CQlcCitzdGF0aWMgY29uc3Qgc3RydWN0IGd0eXBlIyNfaWQgKiBfX21vZHVsZV8jI2d0eXBlIyNfdGFibGUJXAorICBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgPSBuYW1lOwkJCQlcCitleHRlcm4gY29uc3Qgc3RydWN0IGd0eXBlIyNfaWQgX19tb2RfIyNndHlwZSMjX3RhYmxlCQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQsIGFsaWFzKF9fc3RyaW5naWZ5KG5hbWUpKSkpCisKKyNkZWZpbmUgTU9EVUxFX0RFVklDRV9UQUJMRSh0eXBlLG5hbWUpCQlcCisgIE1PRFVMRV9HRU5FUklDX1RBQkxFKHR5cGUjI19kZXZpY2UsbmFtZSkKKworI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfVkVORE9SCTIKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX1BST0RVQ1QJNAorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfVkVSU0lPTgk4CisKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX0VWQklUCTB4MDEwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9LRVlCSVQJMHgwMjAKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX1JFTEJJVAkweDA0MAorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfQUJTQklUCTB4MDgwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9NU0NJVAkweDEwMAorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfTEVEQklUCTB4MjAwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9TTkRCSVQJMHg0MDAKKyNkZWZpbmUgSU5QVVRfREVWSUNFX0lEX01BVENIX0ZGQklUCTB4ODAwCisjZGVmaW5lIElOUFVUX0RFVklDRV9JRF9NQVRDSF9TV0JJVCAgICAweDEwMDAKKworI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFXAorCShJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfQlVTIHwgSU5QVVRfREVWSUNFX0lEX01BVENIX1ZFTkRPUiB8IElOUFVUX0RFVklDRV9JRF9NQVRDSF9QUk9EVUNUKQorI2RlZmluZSBJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFX0FORF9WRVJTSU9OXAorCShJTlBVVF9ERVZJQ0VfSURfTUFUQ0hfREVWSUNFIHwgSU5QVVRfREVWSUNFX0lEX01BVENIX1ZFUlNJT04pCisKKyNkZWZpbmUgRVZfTUFYCQkJMHgxZgorI2RlZmluZSBLRVlfTUFYCQkJMHgxZmYKKyNkZWZpbmUgUkVMX01BWAkJCTB4MGYKKyNkZWZpbmUgQUJTX01BWAkJCTB4M2YKKyNkZWZpbmUgTVNDX01BWAkJCTB4MDcKKyNkZWZpbmUgTEVEX01BWAkJCTB4MGYKKyNkZWZpbmUgUkVQX01BWAkJCTB4MDEKKyNkZWZpbmUgU05EX01BWAkJCTB4MDcKKyNkZWZpbmUgRkZfTUFYCQkJMHg3ZgorI2RlZmluZSBTV19NQVgJCQkweDBmCisKKyNkZWZpbmUgQklUKHgpCSgxVUw8PCgoeCklQklUU19QRVJfTE9ORykpCisjZGVmaW5lIE5CSVRTKHgpICgoKCh4KS0xKS9CSVRTX1BFUl9MT05HKSsxKQorCitzdHJ1Y3QgaW5wdXRfaWQgeworCXVuc2lnbmVkIHNob3J0IGJ1c3R5cGU7CisJdW5zaWduZWQgc2hvcnQgdmVuZG9yOworCXVuc2lnbmVkIHNob3J0IHByb2R1Y3Q7CisJdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsKK307CisKK3N0cnVjdCBpbnB1dF9kZXZpY2VfaWQgeworCisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXN0cnVjdCBpbnB1dF9pZCBpZDsKKworCXVuc2lnbmVkIGxvbmcgZXZiaXRbTkJJVFMoRVZfTUFYKV07CisJdW5zaWduZWQgbG9uZyBrZXliaXRbTkJJVFMoS0VZX01BWCldOworCXVuc2lnbmVkIGxvbmcgcmVsYml0W05CSVRTKFJFTF9NQVgpXTsKKwl1bnNpZ25lZCBsb25nIGFic2JpdFtOQklUUyhBQlNfTUFYKV07CisJdW5zaWduZWQgbG9uZyBtc2NiaXRbTkJJVFMoTVNDX01BWCldOworCXVuc2lnbmVkIGxvbmcgbGVkYml0W05CSVRTKExFRF9NQVgpXTsKKwl1bnNpZ25lZCBsb25nIHNuZGJpdFtOQklUUyhTTkRfTUFYKV07CisJdW5zaWduZWQgbG9uZyBmZmJpdFtOQklUUyhGRl9NQVgpXTsKKwl1bnNpZ25lZCBsb25nIHN3Yml0W05CSVRTKFNXX01BWCldOworCisJdW5zaWduZWQgbG9uZyBkcml2ZXJfaW5mbzsKK307CisKKyNkZWZpbmUgRVZfU05ECQkJMHgxMgorI2RlZmluZSBFVl9LRVkJCQkweDAxCisjZGVmaW5lIFNXXzAJCQkwCisKK3N0YXRpYyBzdHJ1Y3QgaW5wdXRfZGV2aWNlX2lkIGtiZF9pZHNbXSA9IHsKKwl7CisgICAgICAgICAgICAgICAgLmZsYWdzID0gSU5QVVRfREVWSUNFX0lEX01BVENIX0VWQklUfElOUFVUX0RFVklDRV9JRF9NQVRDSF9TV0JJVCwKKyAgICAgICAgICAgICAgICAuZXZiaXQgPSB7IEJJVChFVl9LRVkpIH0sCisJCS5zd2JpdCA9IHsgQklUKFNXXzApIH0sCisgICAgICAgIH0sCisJCisJeworICAgICAgICAgICAgICAgIC5mbGFncyA9IElOUFVUX0RFVklDRV9JRF9NQVRDSF9FVkJJVCwKKyAgICAgICAgICAgICAgICAuZXZiaXQgPSB7IEJJVChFVl9TTkQpIH0sCisgICAgICAgIH0sCQorCisJeyB9LCAgICAvKiBUZXJtaW5hdGluZyBlbnRyeSAqLworfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShpbnB1dCwga2JkX2lkcyk7CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbG9vcDEuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9sb29wMS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMmNjMDEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbG9vcDEuYwpAQCAtMCwwICsxLDEzIEBACisvKiBQYXJ0IG9mIGEgc2ltcGxlIG1vZHVsZSBsb29wICovCisjaW5jbHVkZSAibW9kdWxlLmgiCisKK2V4dGVybiBpbnQgZnJvbV9sb29wMjsKKworaW50IGZyb21fbG9vcDE7CisKK0VYUE9SVF9TWU1CT0woZnJvbV9sb29wMSk7CisKK3N0YXRpYyB2b2lkIGZvbyh2b2lkKQoreworCWZyb21fbG9vcDEgPSBmcm9tX2xvb3AyOworfQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2xvb3AyLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbG9vcDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzc3OTcyCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2xvb3AyLmMKQEAgLTAsMCArMSwxMyBAQAorLyogUGFydCBvZiBhIHNpbXBsZSBtb2R1bGUgbG9vcCAqLworI2luY2x1ZGUgIm1vZHVsZS5oIgorCitleHRlcm4gaW50IGZyb21fbG9vcDE7CisKK2ludCBmcm9tX2xvb3AyOworCitFWFBPUlRfU1lNQk9MKGZyb21fbG9vcDIpOworCitzdGF0aWMgdm9pZCBmb28odm9pZCkKK3sKKwlmcm9tX2xvb3AyID0gZnJvbV9sb29wMTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9sb29wX2RlcC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL2xvb3BfZGVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2YzMjYzNQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9sb29wX2RlcC5jCkBAIC0wLDAgKzEsNyBAQAorLyogUmVxdWlyZXMgYSBtb2R1bGUgaW4gdGhlIGxvb3AgKi8KK2V4dGVybiBpbnQgZnJvbV9sb29wMTsKKworc3RhdGljIHZvaWQgZm9vKHZvaWQpCit7CisJZnJvbV9sb29wMSA9IDA7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbW9kaW5mby5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL21vZGluZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzZlYjMxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL21vZGluZm8uYwpAQCAtMCwwICsxLDMxIEBACisvKiBNb2R1bGUgd2l0aCByYW5kb20gY3JhcCBpbiBtb2RpbmZvICovCisjZGVmaW5lIF9fc3RyaW5naWZ5XzEoeCkJI3gKKyNkZWZpbmUgX19zdHJpbmdpZnkoeCkJCV9fc3RyaW5naWZ5XzEoeCkKKyNkZWZpbmUgX19fbW9kdWxlX2NhdChhLGIpIF9fbW9kXyAjIyBhICMjIGIKKyNkZWZpbmUgX19tb2R1bGVfY2F0KGEsYikgX19fbW9kdWxlX2NhdChhLGIpCisjZGVmaW5lIE1PRFVMRV9JTkZPKHRhZywgaW5mbykgXAorc3RhdGljIGNvbnN0IGNoYXIgX19tb2R1bGVfY2F0KHRhZyxfX0xJTkVfXylbXQlcCisJX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiLm1vZGluZm8iKSx1bnVzZWQpKSA9IF9fc3RyaW5naWZ5KHRhZykgIj0iIGluZm8KKworI2RlZmluZSBNT0RVTEVfQUxJQVMoX2FsaWFzKSBNT0RVTEVfSU5GTyhhbGlhcywgX2FsaWFzKQorI2RlZmluZSBNT0RVTEVfTElDRU5TRShfbGljZW5zZSkgTU9EVUxFX0lORk8obGljZW5zZSwgX2xpY2Vuc2UpCisjZGVmaW5lIE1PRFVMRV9BVVRIT1IoX2F1dGhvcikgTU9EVUxFX0lORk8oYXV0aG9yLCBfYXV0aG9yKQorI2RlZmluZSBNT0RVTEVfREVTQ1JJUFRJT04oX2Rlc2NyaXB0aW9uKSBNT0RVTEVfSU5GTyhkZXNjcmlwdGlvbiwgX2Rlc2NyaXB0aW9uKQorI2RlZmluZSBNT0RVTEVfUEFSTV9ERVNDKF9wYXJtLCBkZXNjKSBNT0RVTEVfSU5GTyhwYXJtLCAjX3Bhcm0gIjoiIGRlc2MpCisKK01PRFVMRV9JTkZPKHJhbmRvbWNyYXAsICJteSByYW5kb20gY3JhcCB3aGljaCBJIHVzZSB0byB0ZXN0IHN0dWZmIHdpdGgiKTsKK01PRFVMRV9JTkZPKHZlcm1hZ2ljLCAibXkgbWFnaWMiKTsKK01PRFVMRV9BVVRIT1IoIkFVVEhPUiIpOworTU9EVUxFX0RFU0NSSVBUSU9OKCJERVNDUklQVElPTiIpOworTU9EVUxFX0FMSUFTKCJBTElBUzEiKTsKK01PRFVMRV9BTElBUygiQUxJQVMyIik7CisKKy8qIFBhcmFtZXRlciBkZXNjcmlwdGlvbiwgbm8gcGFyYW0gdHlwZSAoYmVmb3JlIDIuNi4xMSkgKi8KK01PRFVMRV9QQVJNX0RFU0MoZm9vLCAiVGhlIG51bWJlciBvZiBmb29zIG9uIHRoZSBjYXJkIik7CisKKy8qIFBhcmFtZXRlciwgbm8gZGVzY3JpcHRpb24uICovCitNT0RVTEVfSU5GTyhwYXJtdHlwZSwgInVuZGVzY3JpYmVkOmludCIpOworCisvKiBQYXJhbWV0ZXIsIHdpdGggZGVzY3JpcHRpb24gKi8KK01PRFVMRV9JTkZPKHBhcm10eXBlLCAiZGVzY3JpYmVkOnVpbnQiKTsKK01PRFVMRV9QQVJNX0RFU0MoZGVzY3JpYmVkLCAiQSB3ZWxsLWRlc2NyaWJlZCBwYXJhbWV0ZXIiKTsKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9tb2R1bGUuaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9tb2R1bGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDc0ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL21vZHVsZS5oCkBAIC0wLDAgKzEsMTcgQEAKKyNpZm5kZWYgX01PRFVMRV9ICisjZGVmaW5lIF9NT0RVTEVfSAorCitzdHJ1Y3Qga2VybmVsX3N5bWJvbAoreworCXVuc2lnbmVkIGxvbmcgdmFsdWU7CisJY29uc3QgY2hhciAqbmFtZTsKK307CisKKyNkZWZpbmUgRVhQT1JUX1NZTUJPTChzeW0pCQkJCQlcCisJY29uc3QgY2hhciBfX2tzeW10YWJfc3RyaW5nXyMjc3ltW10JCQlcCisJX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiX19rc3ltdGFiX3N0cmluZ3MiKSkpID0gI3N5bTsJXAorCWNvbnN0IHN0cnVjdCBrZXJuZWxfc3ltYm9sIF9fa3N5bXRhYl8jI3N5bQkJXAorCV9fYXR0cmlidXRlX18oKHNlY3Rpb24oIl9fa3N5bXRhYiIpKSkJCQlcCisJPSB7ICh1bnNpZ25lZCBsb25nKSZzeW0sIF9fa3N5bXRhYl9zdHJpbmdfIyNzeW0gfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9ub2V4cG9ydF9kZXAuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9ub2V4cG9ydF9kZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOGQzNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL25vZXhwb3J0X2RlcC5jCkBAIC0wLDAgKzEsNyBAQAorLyogQSBtb2R1bGUgZXhwb3J0aW5nIG5vIHN5bWJvbHMsIGFuZCByZXF1aXJpbmcgdHdvICovCitleHRlcm4gaW50IGV4cG9ydGVkMSwgZXhwb3J0ZWQyOworCitzdGF0aWMgdm9pZCBmb28odm9pZCkKK3sKKwlleHBvcnRlZDEgPSBleHBvcnRlZDI7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbm9leHBvcnRfZG91YmxlZGVwLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbm9leHBvcnRfZG91YmxlZGVwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQzZGNiZgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9ub2V4cG9ydF9kb3VibGVkZXAuYwpAQCAtMCwwICsxLDcgQEAKKy8qIEEgbW9kdWxlIHdoaWNoIHJlcXVpcmVzIHN5bWJvbHMgZnJvbSB0d28gb3RoZXIgc291cmNlcyAqLworZXh0ZXJuIGludCBleHBvcnRlZDEsIGV4cG9ydGVkMiwgZXhwb3J0ZWQzOworCitzdGF0aWMgdm9pZCBmb28odm9pZCkKK3sKKwlleHBvcnRlZDEgPSBleHBvcnRlZDIgPSBleHBvcnRlZDM7Cit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbm9leHBvcnRfbm9kZXAuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9ub2V4cG9ydF9ub2RlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMjg3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvbm9leHBvcnRfbm9kZXAuYwpAQCAtMCwwICsxIEBACisvKiBBIG1vZHVsZSBleHBvcnRpbmcgbm8gc3ltYm9scywgYW5kIHJlcXVpcmluZyBub25lICovCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvb2ZfbWFwLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvb2ZfbWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZhYzEwYQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9vZl9tYXAuYwpAQCAtMCwwICsxLDUyIEBACisvKiBTaW1wbGUgZmlsZSB3aXRoIGEgUENJIG1hcCBpbiBpdC4gKi8KKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4KQkjeAorI2RlZmluZSBfX3N0cmluZ2lmeSh4KQkJX19zdHJpbmdpZnlfMSh4KQorCisjZGVmaW5lIE1PRFVMRV9HRU5FUklDX1RBQkxFKGd0eXBlLG5hbWUpCQkJXAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgX19tb2R1bGVfIyNndHlwZSMjX3NpemUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBndHlwZSMjX2lkKTsJCVwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCAqIF9fbW9kdWxlXyMjZ3R5cGUjI190YWJsZQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IG5hbWU7CQkJCVwKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCBfX21vZF8jI2d0eXBlIyNfdGFibGUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgYWxpYXMoX19zdHJpbmdpZnkobmFtZSkpKSkKKworI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5cGUsbmFtZSkJCVwKKyAgTU9EVUxFX0dFTkVSSUNfVEFCTEUodHlwZSMjX2RldmljZSxuYW1lKQorCitzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHsKKwljaGFyIG5hbWVbMzJdOworCWNoYXIgdHlwZVszMl07CisJY2hhciBjb21wYXRpYmxlWzEyOF07CisJdm9pZCAqZGF0YTsKK307CisKK3N0YXRpYyBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG9mX2lkc1tdID0geworCXsKKwkJLm5hbWUJCT0gInRlc3RfbmFtZV8xIiwKKwl9LAorCXsKKwkJLnR5cGUJCT0gInRlc3RfdHlwZV8xIiwKKwl9LAorCXsKKwkJLmNvbXBhdGlibGUJPSAidGVzdF9jb21wYXRfMSIsCisJfSwKKwl7CisJCS5uYW1lCQk9ICJ0ZXN0X25hbWVfMiIsCisJCS50eXBlCQk9ICJ0ZXN0X3R5cGVfMiIsCisJfSwKKwl7CisJCS5uYW1lCQk9ICJ0ZXN0X25hbWVfMyIsCisJCS5jb21wYXRpYmxlCT0gInRlc3RfY29tcGF0XzIiLAorCX0sCisJeworCQkudHlwZQkJPSAidGVzdF90eXBlXzMiLAorCQkuY29tcGF0aWJsZQk9ICJ0ZXN0X2NvbXBhdF8zIiwKKwl9LAorCXsKKwkJLm5hbWUJCT0gInRlc3RfbmFtZV80IiwKKwkJLnR5cGUJCT0gInRlc3RfdHlwZV80IiwKKwkJLmNvbXBhdGlibGUJPSAidGVzdF9jb21wYXRfNCIsCisJfSwKKwl7fQorfTsKK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX2lkcyk7CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvcGNpX21hcC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3BjaV9tYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OThkYmNjCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3BjaV9tYXAuYwpAQCAtMCwwICsxLDMwIEBACisvKiBTaW1wbGUgZmlsZSB3aXRoIGEgUENJIG1hcCBpbiBpdC4gKi8KKyNkZWZpbmUgX19zdHJpbmdpZnlfMSh4KQkjeAorI2RlZmluZSBfX3N0cmluZ2lmeSh4KQkJX19zdHJpbmdpZnlfMSh4KQorCisjZGVmaW5lIE1PRFVMRV9HRU5FUklDX1RBQkxFKGd0eXBlLG5hbWUpCQkJXAorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgX19tb2R1bGVfIyNndHlwZSMjX3NpemUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gc2l6ZW9mKHN0cnVjdCBndHlwZSMjX2lkKTsJCVwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCAqIF9fbW9kdWxlXyMjZ3R5cGUjI190YWJsZQlcCisgIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSA9IG5hbWU7CQkJCVwKK2V4dGVybiBjb25zdCBzdHJ1Y3QgZ3R5cGUjI19pZCBfX21vZF8jI2d0eXBlIyNfdGFibGUJCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCwgYWxpYXMoX19zdHJpbmdpZnkobmFtZSkpKSkKKworI2RlZmluZSBNT0RVTEVfREVWSUNFX1RBQkxFKHR5cGUsbmFtZSkJCVwKKyAgTU9EVUxFX0dFTkVSSUNfVEFCTEUodHlwZSMjX2RldmljZSxuYW1lKQorCisjZGVmaW5lIFBDSV9BTllfSUQgKH4wKQorCitzdHJ1Y3QgcGNpX2RldmljZV9pZCB7CisJdW5zaWduZWQgaW50IHZlbmRvciwgZGV2aWNlOwkJLyogVmVuZG9yIGFuZCBkZXZpY2UgSUQgb3IgUENJX0FOWV9JRCAqLworCXVuc2lnbmVkIGludCBzdWJ2ZW5kb3IsIHN1YmRldmljZTsJLyogU3Vic3lzdGVtIElEJ3Mgb3IgUENJX0FOWV9JRCAqLworCXVuc2lnbmVkIGludCBjbGFzcywgY2xhc3NfbWFzazsJCS8qIChjbGFzcyxzdWJjbGFzcyxwcm9nLWlmKSB0cmlwbGV0ICovCisJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJCS8qIERhdGEgcHJpdmF0ZSB0byB0aGUgZHJpdmVyICovCit9OworCitzdGF0aWMgc3RydWN0IHBjaV9kZXZpY2VfaWQgcGNpX2lkc1tdID0geworCXsgMSwgMiwgMywgNCwgNSwgNiwgMHhkZWFkYmVlZiB9LAorCXsgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMHhkZWFkYmVlNSB9LAorCXswLH0JLyogMCB0ZXJtaW5hdGVkIGxpc3QuICovCit9OworTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHBjaV9pZHMpOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3BucF9tYXAuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9wbnBfbWFwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhNDdiNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9wbnBfbWFwLmMKQEAgLTAsMCArMSw1NCBAQAorLyogU2ltcGxlIGZpbGUgd2l0aCBhbiBJU0FQTlAgbWFwIGluIGl0LiAqLworI2RlZmluZSBfX3N0cmluZ2lmeV8xKHgpCSN4CisjZGVmaW5lIF9fc3RyaW5naWZ5KHgpCQlfX3N0cmluZ2lmeV8xKHgpCisKKyNkZWZpbmUgTU9EVUxFX0dFTkVSSUNfVEFCTEUoZ3R5cGUsbmFtZSkJCQlcCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBfX21vZHVsZV8jI2d0eXBlIyNfc2l6ZQkJXAorICBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgPSBzaXplb2Yoc3RydWN0IGd0eXBlIyNfaWQpOwkJXAorc3RhdGljIGNvbnN0IHN0cnVjdCBndHlwZSMjX2lkICogX19tb2R1bGVfIyNndHlwZSMjX3RhYmxlCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gbmFtZTsJCQkJXAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBndHlwZSMjX2lkIF9fbW9kXyMjZ3R5cGUjI190YWJsZQkJXAorICBfX2F0dHJpYnV0ZV9fICgodW51c2VkLCBhbGlhcyhfX3N0cmluZ2lmeShuYW1lKSkpKQorCisjZGVmaW5lIE1PRFVMRV9ERVZJQ0VfVEFCTEUodHlwZSxuYW1lKQkJXAorICBNT0RVTEVfR0VORVJJQ19UQUJMRSh0eXBlIyNfZGV2aWNlLG5hbWUpCisKKyNkZWZpbmUgUE5QX01BWF9ERVZJQ0VTCQk4CisjZGVmaW5lIFBOUF9JRF9MRU4JCTgKKworc3RydWN0IHBucF9kZXZpY2VfaWQgeworCWNoYXIgaWRbUE5QX0lEX0xFTl07CisJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogZGF0YSBwcml2YXRlIHRvIHRoZSBkcml2ZXIgKi8KK307CisKK3N0cnVjdCBwbnBfY2FyZF9kZXZpY2VfaWQgeworCWNoYXIgaWRbUE5QX0lEX0xFTl07CisJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogZGF0YSBwcml2YXRlIHRvIHRoZSBkcml2ZXIgKi8KKwlzdHJ1Y3QgeworCQljaGFyIGlkW1BOUF9JRF9MRU5dOworCX0gZGV2c1tQTlBfTUFYX0RFVklDRVNdOwkvKiBsb2dpY2FsIGRldmljZXMgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgcG5wX2NhcmRfZGV2aWNlX2lkIHNuZF9hZDE4MTZhX3BucGlkc1tdID0geworCS8qIEFuYWxvZyBEZXZpY2VzIEFEMTgxNSAqLworCXsgLmlkID0gIkFEUzcxNTAiLCAuZGV2cyA9IHsgeyAuaWQgPSAiQURTNzE1MCIgfSwgeyAuaWQgPSAiQURTNzE1MSIgfSB9IH0sCisJLyogQW5hbG9nIERldmljZXMgQUQxODE2QSAtIGFkZGVkIGJ5IEtlbm5ldGggUGxhdHogPGt4cEBhdGwuaHAuY29tPiAqLworCXsgLmlkID0gIkFEUzcxODEiLCAuZGV2cyA9IHsgeyAuaWQgPSAiQURTNzE4MCIgfSwgeyAuaWQgPSAiQURTNzE4MSIgfSB9IH0sCisJLyogZW5kICovCisJeyAuaWQgPSAiIiB9Cit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKHBucF9jYXJkLCBzbmRfYWQxODE2YV9wbnBpZHMpOworCisvKiBBbGwgY3M0MjMyIGJhc2VkIGNhcmRzIGhhdmUgdGhlIG1haW4gYWQxODQ4IGNhcmQgZWl0aGVyIGFzIENTQzAwMDAgb3IKKyAqIENTQzAxMDAuICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHBucF9kZXZpY2VfaWQgY3M0MjMyX3BucF90YWJsZVtdID0geworCXsgLmlkID0gIkNTQzAxMDAiLCAuZHJpdmVyX2RhdGEgPSAwIH0sCisJeyAuaWQgPSAiQ1NDMDAwMCIsIC5kcml2ZXJfZGF0YSA9IDAgfSwKKwkvKiBHdWlsbGVtb3QgVHVydGxlYmVhY2ggc29tZXRoaW5nIGFwcGVhcnMgdG8gYmUgY3M0MjMyIGNvbXBhdGlibGUKKwkgKiAodW50ZXN0ZWQpICovCisJeyAuaWQgPSAiR0lNMDEwMCIsIC5kcml2ZXJfZGF0YSA9IDAgfSwKKwl7IC5pZCA9ICIifQorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShwbnAsIGNzNDIzMl9wbnBfdGFibGUpOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3JlbmFtZS1uZXcuYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9yZW5hbWUtbmV3LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBmNDk2ZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9yZW5hbWUtbmV3LmMKQEAgLTAsMCArMSw4NyBAQAorLyogT2xkLXN0eWxlIG1vZHVsZSB3aXRoIG1vZHVsZSBpbiBfX3RoaXNfbW9kdWxlICovCisKKyNkZWZpbmUgTU9EVUxFX05BTUVfTEVOICg2NCAtIHNpemVvZih1bnNpZ25lZCBsb25nKSkKK3N0cnVjdCBrZXJuZWxfc3ltYm9sCit7CisJdW5zaWduZWQgbG9uZyB2YWx1ZTsKKwljaGFyIG5hbWVbTU9EVUxFX05BTUVfTEVOXTsKK307CisKK3N0cnVjdCBsaXN0X2hlYWQgeworCXN0cnVjdCBsaXN0X2hlYWQgKm5leHQsICpwcmV2OworfTsKKworc3RydWN0IGtlcm5lbF9zeW1ib2xfZ3JvdXAKK3sKKwkvKiBMaW5rcyB1cyBpbnRvIHRoZSBnbG9iYWwgc3ltYm9sIGxpc3QgKi8KKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisKKwkvKiBNb2R1bGUgd2hpY2ggb3ducyBpdCAoaWYgYW55KSAqLworCXN0cnVjdCBtb2R1bGUgKm93bmVyOworCisJdW5zaWduZWQgaW50IG51bV9zeW1zOworCWNvbnN0IHN0cnVjdCBrZXJuZWxfc3ltYm9sICpzeW1zOworfTsKKworc3RydWN0IGV4Y2VwdGlvbl90YWJsZQoreworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCXVuc2lnbmVkIGludCBudW1fZW50cmllczsKKwljb25zdCBzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlX2VudHJ5ICplbnRyeTsKK307CisKK2VudW0gbW9kdWxlX3N0YXRlCit7CisJTU9EVUxFX1NUQVRFX0xJVkUsCisJTU9EVUxFX1NUQVRFX0NPTUlORywKKwlNT0RVTEVfU1RBVEVfR09JTkcsCit9OworCitzdHJ1Y3QgbW9kdWxlCit7CisJZW51bSBtb2R1bGVfc3RhdGUgc3RhdGU7CisKKwkvKiBNZW1iZXIgb2YgbGlzdCBvZiBtb2R1bGVzICovCisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCisJLyogVW5pcXVlIGhhbmRsZSBmb3IgdGhpcyBtb2R1bGUgKi8KKwljaGFyIG5hbWVbTU9EVUxFX05BTUVfTEVOXTsKKworCS8qIEV4cG9ydGVkIHN5bWJvbHMgKi8KKwlzdHJ1Y3Qga2VybmVsX3N5bWJvbF9ncm91cCBzeW1ib2xzOworCisJLyogRXhjZXB0aW9uIHRhYmxlcyAqLworCXN0cnVjdCBleGNlcHRpb25fdGFibGUgZXh0YWJsZTsKKworCS8qIFN0YXJ0dXAgZnVuY3Rpb24uICovCisJaW50ICgqaW5pdCkodm9pZCk7CisKKwkvKiBJZiB0aGlzIGlzIG5vbi1OVUxMLCB2ZnJlZSBhZnRlciBpbml0KCkgcmV0dXJucyAqLworCXZvaWQgKm1vZHVsZV9pbml0OworCisJLyogSGVyZSBpcyB0aGUgYWN0dWFsIGNvZGUgKyBkYXRhLCB2ZnJlZSdkIG9uIHVubG9hZC4gKi8KKwl2b2lkICptb2R1bGVfY29yZTsKKworCS8qIEhlcmUgYXJlIHRoZSBzaXplcyBvZiB0aGUgaW5pdCBhbmQgY29yZSBzZWN0aW9ucyAqLworCXVuc2lnbmVkIGxvbmcgaW5pdF9zaXplLCBjb3JlX3NpemU7CisKKwkvKiBBcmNoLXNwZWNpZmljIG1vZHVsZSB2YWx1ZXMgKi8KKwlzdHJ1Y3QgeyB9IGFyY2g7CisKKwkvKiBBbSBJIHVuc2FmZSB0byB1bmxvYWQ/ICovCisJaW50IHVuc2FmZTsKKworCS8qIFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIChtYXkgYmUgbWFuZ2xlZCkuICBQZW9wbGUgbGlrZQorCSAgIGtlZXBpbmcgcG9pbnRlcnMgdG8gdGhpcyBzdHVmZiAqLworCWNoYXIgKmFyZ3M7Cit9OworCisjZGVmaW5lIF9fc3RyaW5naWZ5XzEoeCkJI3gKKyNkZWZpbmUgX19zdHJpbmdpZnkoeCkJCV9fc3RyaW5naWZ5XzEoeCkKKworc3RhdGljIHN0cnVjdCBtb2R1bGUgX190aGlzX21vZHVsZQorX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiX19tb2R1bGUiKSkpID0geworCS5uYW1lID0gInJlbmFtZV9uZXdfIiBfX3N0cmluZ2lmeShCSVRTX1BFUl9MT05HKSwKK307CisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9yZW5hbWUtb2xkLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvcmVuYW1lLW9sZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTVkYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvcmVuYW1lLW9sZC5jCkBAIC0wLDAgKzEsODcgQEAKKy8qIE9sZC1zdHlsZSBtb2R1bGUgd2l0aCBtb2R1bGUgaW4gLmdudS5saW5rb25jZS50aGlzX21vZHVsZSAqLworCisjZGVmaW5lIE1PRFVMRV9OQU1FX0xFTiAoNjQgLSBzaXplb2YodW5zaWduZWQgbG9uZykpCitzdHJ1Y3Qga2VybmVsX3N5bWJvbAoreworCXVuc2lnbmVkIGxvbmcgdmFsdWU7CisJY2hhciBuYW1lW01PRFVMRV9OQU1FX0xFTl07Cit9OworCitzdHJ1Y3QgbGlzdF9oZWFkIHsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpuZXh0LCAqcHJldjsKK307CisKK3N0cnVjdCBrZXJuZWxfc3ltYm9sX2dyb3VwCit7CisJLyogTGlua3MgdXMgaW50byB0aGUgZ2xvYmFsIHN5bWJvbCBsaXN0ICovCisJc3RydWN0IGxpc3RfaGVhZCBsaXN0OworCisJLyogTW9kdWxlIHdoaWNoIG93bnMgaXQgKGlmIGFueSkgKi8KKwlzdHJ1Y3QgbW9kdWxlICpvd25lcjsKKworCXVuc2lnbmVkIGludCBudW1fc3ltczsKKwljb25zdCBzdHJ1Y3Qga2VybmVsX3N5bWJvbCAqc3ltczsKK307CisKK3N0cnVjdCBleGNlcHRpb25fdGFibGUKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisKKwl1bnNpZ25lZCBpbnQgbnVtX2VudHJpZXM7CisJY29uc3Qgc3RydWN0IGV4Y2VwdGlvbl90YWJsZV9lbnRyeSAqZW50cnk7Cit9OworCitlbnVtIG1vZHVsZV9zdGF0ZQoreworCU1PRFVMRV9TVEFURV9MSVZFLAorCU1PRFVMRV9TVEFURV9DT01JTkcsCisJTU9EVUxFX1NUQVRFX0dPSU5HLAorfTsKKworc3RydWN0IG1vZHVsZQoreworCWVudW0gbW9kdWxlX3N0YXRlIHN0YXRlOworCisJLyogTWVtYmVyIG9mIGxpc3Qgb2YgbW9kdWxlcyAqLworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKworCS8qIFVuaXF1ZSBoYW5kbGUgZm9yIHRoaXMgbW9kdWxlICovCisJY2hhciBuYW1lW01PRFVMRV9OQU1FX0xFTl07CisKKwkvKiBFeHBvcnRlZCBzeW1ib2xzICovCisJc3RydWN0IGtlcm5lbF9zeW1ib2xfZ3JvdXAgc3ltYm9sczsKKworCS8qIEV4Y2VwdGlvbiB0YWJsZXMgKi8KKwlzdHJ1Y3QgZXhjZXB0aW9uX3RhYmxlIGV4dGFibGU7CisKKwkvKiBTdGFydHVwIGZ1bmN0aW9uLiAqLworCWludCAoKmluaXQpKHZvaWQpOworCisJLyogSWYgdGhpcyBpcyBub24tTlVMTCwgdmZyZWUgYWZ0ZXIgaW5pdCgpIHJldHVybnMgKi8KKwl2b2lkICptb2R1bGVfaW5pdDsKKworCS8qIEhlcmUgaXMgdGhlIGFjdHVhbCBjb2RlICsgZGF0YSwgdmZyZWUnZCBvbiB1bmxvYWQuICovCisJdm9pZCAqbW9kdWxlX2NvcmU7CisKKwkvKiBIZXJlIGFyZSB0aGUgc2l6ZXMgb2YgdGhlIGluaXQgYW5kIGNvcmUgc2VjdGlvbnMgKi8KKwl1bnNpZ25lZCBsb25nIGluaXRfc2l6ZSwgY29yZV9zaXplOworCisJLyogQXJjaC1zcGVjaWZpYyBtb2R1bGUgdmFsdWVzICovCisJc3RydWN0IHsgfSBhcmNoOworCisJLyogQW0gSSB1bnNhZmUgdG8gdW5sb2FkPyAqLworCWludCB1bnNhZmU7CisKKwkvKiBUaGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAobWF5IGJlIG1hbmdsZWQpLiAgUGVvcGxlIGxpa2UKKwkgICBrZWVwaW5nIHBvaW50ZXJzIHRvIHRoaXMgc3R1ZmYgKi8KKwljaGFyICphcmdzOworfTsKKworI2RlZmluZSBfX3N0cmluZ2lmeV8xKHgpCSN4CisjZGVmaW5lIF9fc3RyaW5naWZ5KHgpCQlfX3N0cmluZ2lmeV8xKHgpCisKK3N0YXRpYyBzdHJ1Y3QgbW9kdWxlIF9fdGhpc19tb2R1bGUKK19fYXR0cmlidXRlX18oKHNlY3Rpb24oIi5nbnUubGlua29uY2UudGhpc19tb2R1bGUiKSkpID0geworCS5uYW1lID0gInJlbmFtZV9vbGRfIiBfX3N0cmluZ2lmeShCSVRTX1BFUl9MT05HKSwKK307CisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9yZW5hbWUtdmVyc2lvbi5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3JlbmFtZS12ZXJzaW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2NmFiNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy9yZW5hbWUtdmVyc2lvbi5jCkBAIC0wLDAgKzEsNCBAQAorLyogTW9kdWxlIHdpdGggdmVyc2lvbiBzZWN0aW9ucyBpbiBpdCAqLworCitjb25zdCBjaGFyIHZlcm1hZ2ljW10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiX192ZXJtYWdpYyIpKSkgPSAibXkgdmVyc2lvbiBtYWdpYyI7Citjb25zdCBjaGFyIG1vZHZlcnNpb25zW10gX19hdHRyaWJ1dGVfXygoc2VjdGlvbigiX192ZXJzaW9ucyIpKSkgPSAibXkgdmVyc2lvbnMiOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL2RhdGEvc3JjL3Vua25vd24uYyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy91bmtub3duLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhmMzhiZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy91bmtub3duLmMKQEAgLTAsMCArMSw3IEBACisvKiBBbiB1bmRlZmluZWQgc3ltYm9sICovCitleHRlcm4gaW50IHVuZGVmaW5lZDsKKworc3RhdGljIHZvaWQgZm9vKHZvaWQpCit7CisJdW5kZWZpbmVkID0gMTsKK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy9kYXRhL3NyYy91c2JfbWFwLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvdXNiX21hcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNTQ3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvZGF0YS9zcmMvdXNiX21hcC5jCkBAIC0wLDAgKzEsNTEgQEAKKy8qIFNpbXBsZSBmaWxlIHdpdGggYSBVU0IgbWFwIGluIGl0LiAqLworI2RlZmluZSBfX3N0cmluZ2lmeV8xKHgpCSN4CisjZGVmaW5lIF9fc3RyaW5naWZ5KHgpCQlfX3N0cmluZ2lmeV8xKHgpCisKKyNkZWZpbmUgTU9EVUxFX0dFTkVSSUNfVEFCTEUoZ3R5cGUsbmFtZSkJCQlcCitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBfX21vZHVsZV8jI2d0eXBlIyNfc2l6ZQkJXAorICBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgPSBzaXplb2Yoc3RydWN0IGd0eXBlIyNfaWQpOwkJXAorc3RhdGljIGNvbnN0IHN0cnVjdCBndHlwZSMjX2lkICogX19tb2R1bGVfIyNndHlwZSMjX3RhYmxlCVwKKyAgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpID0gbmFtZTsJCQkJXAorZXh0ZXJuIGNvbnN0IHN0cnVjdCBndHlwZSMjX2lkIF9fbW9kXyMjZ3R5cGUjI190YWJsZQkJXAorICBfX2F0dHJpYnV0ZV9fICgodW51c2VkLCBhbGlhcyhfX3N0cmluZ2lmeShuYW1lKSkpKQorCisjZGVmaW5lIE1PRFVMRV9ERVZJQ0VfVEFCTEUodHlwZSxuYW1lKQkJXAorICBNT0RVTEVfR0VORVJJQ19UQUJMRSh0eXBlIyNfZGV2aWNlLG5hbWUpCisKKyNkZWZpbmUgVVNCX0RFVklDRSh2ZW5kLHByb2QpIFwKKwkubWF0Y2hfZmxhZ3MgPSBVU0JfREVWSUNFX0lEX01BVENIX0RFVklDRSwgLmlkVmVuZG9yID0gKHZlbmQpLCAuaWRQcm9kdWN0ID0gKHByb2QpCisKK3N0cnVjdCB1c2JfZGV2aWNlX2lkIHsKKwkvKiB3aGljaCBmaWVsZHMgdG8gbWF0Y2ggYWdhaW5zdD8gKi8KKwl1bnNpZ25lZCBzaG9ydAkJbWF0Y2hfZmxhZ3M7CisKKwkvKiBVc2VkIGZvciBwcm9kdWN0IHNwZWNpZmljIG1hdGNoZXM7IHJhbmdlIGlzIGluY2x1c2l2ZSAqLworCXVuc2lnbmVkIHNob3J0CQlpZFZlbmRvcjsKKwl1bnNpZ25lZCBzaG9ydAkJaWRQcm9kdWN0OworCXVuc2lnbmVkIHNob3J0CQliY2REZXZpY2VfbG87CisJdW5zaWduZWQgc2hvcnQJCWJjZERldmljZV9oaTsKKworCS8qIFVzZWQgZm9yIGRldmljZSBjbGFzcyBtYXRjaGVzICovCisJdW5zaWduZWQgY2hhcgkJYkRldmljZUNsYXNzOworCXVuc2lnbmVkIGNoYXIJCWJEZXZpY2VTdWJDbGFzczsKKwl1bnNpZ25lZCBjaGFyCQliRGV2aWNlUHJvdG9jb2w7CisKKwkvKiBVc2VkIGZvciBpbnRlcmZhY2UgY2xhc3MgbWF0Y2hlcyAqLworCXVuc2lnbmVkIGNoYXIJCWJJbnRlcmZhY2VDbGFzczsKKwl1bnNpZ25lZCBjaGFyCQliSW50ZXJmYWNlU3ViQ2xhc3M7CisJdW5zaWduZWQgY2hhcgkJYkludGVyZmFjZVByb3RvY29sOworCisJLyogbm90IG1hdGNoZWQgYWdhaW5zdCAqLworCXVuc2lnbmVkIGxvbmcJZHJpdmVyX2luZm87Cit9OworCitzdHJ1Y3QgdXNiX2RldmljZV9pZCB1c2JfaWRzW10gPSB7CisJeyAgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLAorCSAgIDB4ZGVhZGJlZWYgfSwKKwl7ICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsCisJICAgMHhkZWFkYmVlNSB9LAorCXsgfQorfTsKKworTU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIHVzYl9pZHMpOwpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3J1bnRlc3RzIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3J1bnRlc3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU1YzgxODQKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvcnVudGVzdHMKQEAgLTAsMCArMSwxOTAgQEAKKyMhIC9iaW4vYmFzaAorIyBTaGVsbCBzY3JpcHQgdG8gcnVuIHRlc3Qgc3VpdGUuCisKK3NldCAtZQorCit1c2FnZSgpCit7CisgICAgZWNobyAiVXNhZ2U6IHRlc3RzL3J1bnRlc3RzIFstdl0gWy12XSBbLS12YWxncmluZF0gW3Rlc3RdIgorICAgIGVjaG8gIiAtdiAob3IgLS12ZXJib3NlKSBwcmludHMgZWFjaCB0ZXN0IGFzIGl0IGlzIHJ1biIKKyAgICBlY2hvICIgLXZ2ICh2ZXJ5IHZlcmJvc2UpIHRyYWNlcyB0ZXN0IGV4ZWN1dGlvbiIKKyAgICBlY2hvICIgLS12YWxncmluZCBydW5zIHRoZSB0ZXN0IHByb2dyYW1zIHVzaW5nIHRoZSB2YWxncmluZCBtZW1vcnkgY2hlY2tlciIKKyAgICBlY2hvICJUaGUgVEVTVF9FTkRJQU4gYW5kIFRFU1RfQklUUyB2YXJpYWJsZXMgY2FuIGJlIHVzZWQgdG8gbGltaXQgd2hpY2giCisgICAgZWNobyAiZW5kaWFuZXNzIChsZSwgYmUpIGFuZCBiaXRuZXNzICgzMiwgNjQpIHdpbGwgYmUgdGVzdGVkIgorICAgIGV4aXQKK30KKword2hpbGUgWyAkIyAhPSAwIF07IGRvCisgICAgY2FzZSAiJDEiIGluCisgICAgLXYpCisgICAgICAgIGlmIFsgLXogIiRWRVJCT1NFIiBdOyB0aGVuCisgICAgICAgICAgVkVSQk9TRT0xCisgICAgICAgIGVsc2UKKyAgICAgICAgICBFWFRSQV9BUkdTPS14CisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgLXZ2KQorICAgICAgICBWRVJCT1NFPTEKKyAgICAgICAgRVhUUkFfQVJHUz0teAorICAgICAgICA7OworICAgIC0tdmFsZ3JpbmQpCisgICAgICAgIFZBTEdSSU5EPTEKKyAgICAgICAgOzsKKyAgICAtaHwtLWhlbHB8LSopCisgICAgICAgIHVzYWdlCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgWyAtbiAiJFRFU1QiIF0gJiYgdXNhZ2UKKyAgICAgICAgVEVTVD0iJDEiCisgICAgICAgIDs7CisgICAgZXNhYworICAgIHNoaWZ0Citkb25lCisKKyMgQ3JlYXRlcyBhIHRlbXBvcmFyeSBmaWxlIGFuZCBleHBvcnRzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvCisjIHRoZSBwcm92aWRlZCBhcmd1bWVudC4gIEV4aXRzIG9uIGVycm9yLgorIyAKKyMgVXNhZ2U6IGNyZWF0ZV90ZW1wZmlsZSBURU1QRklMRQorIworY3JlYXRlX3RlbXBmaWxlKCkKK3sKKyAgICBpZiB0ZXN0ICQjID0gMAorICAgIHRoZW4KKyAgICAgICBlY2hvICJObyBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlX3RlbXBmaWxlKCkiCisgICAgICAgZXhpdCAxCisgICAgZmkKKworICAgIGlmIFsgLXggL2Jpbi90ZW1wZmlsZSBdCisgICAgdGhlbgorICAgICAgICAjIERlYmlhbiAKKyAgICAgICAgZXhwb3J0ICQxPSJgdGVtcGZpbGVgIgorICAgIGVsaWYgWyAteCAgL2Jpbi9ta3RlbXAgXQorICAgIHRoZW4KKyAgICAgICAgIyBSZWRIYXQgZXQuIGFsLgorICAgICAgICBleHBvcnQgJDE9ImBta3RlbXAgL3RtcC9tb2R0ZXN0LlhYWFhYWGAiCisgICAgZWxzZQorICAgICAgICBlY2hvICJEb24ndCBrbm93IGhvdyB0byBtYWtlIGEgdGVtcG9yYXJ5IGZpbGUgb24gdGhpcyAiCisgICAgICAgIGVjaG8gInN5c3RlbSwgc29ycnkuIgorICAgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgaWYgWyAkPyAtbmUgMCBdCisgICAgdGhlbgorICAgICAgICBlY2hvICJDYW4ndCBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUuIgorICAgICAgICBleGl0IDEKKyAgICBmaQorfQorZXhwb3J0IC1mIGNyZWF0ZV90ZW1wZmlsZQorCitpZiBbICEgLWUgInRlc3RzL2J1aWxkIiBdOyB0aGVuCisgICAgZWNobyBNYWtpbmcgYnVpbGQgZGlyZWN0b3J5IGZvciB0ZXN0cworICAgIG1rZGlyIHRlc3RzL2J1aWxkCitmaQoraWYgWyAhIC1lICJ0ZXN0cy90bXAiIF07IHRoZW4KKyAgICBlY2hvIE1ha2luZyB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciB0ZXN0cworICAgIG1rZGlyIHRlc3RzL3RtcAorZmkKKworOiAke1RFU1RfRU5ESUFOOj0tYmUgLWxlfQorX3RtcD0KK2ZvciBlIGluICRURVNUX0VORElBTjsgZG8KKwljYXNlICRlIGluCisJLWJlIHwgLWxlKQorCQlfdG1wPSIkX3RtcCAkZSIKKwkJOzsKKwliZSB8IGxlKQorCQlfdG1wPSIkX3RtcCAtJGUiCisJCTs7CisJKikKKwkJZWNobyAiVW5rbm93biBlbmRpYW46ICRlLCB2YWxpZCB2YWx1ZXMgYXJlIFwiYmVcIiBhbmQgXCJsZVwiIiA+JjIKKwkJZXhpdCAxCisJZXNhYworZG9uZQorVEVTVF9FTkRJQU49IiRfdG1wIgorCis6ICR7VEVTVF9CSVRTOj0zMiA2NH0KK2ZvciBiIGluICRURVNUX0JJVFM7IGRvCisJY2FzZSAkYiBpbgorCTMyIHwgNjQpCisJCTs7CisJKikKKwkJZWNobyAiVW5rbm93biB3b3JkIHNpemU6ICRiLCB2YWxpZCB2YWx1ZXMgYXJlIDMyIGFuZCA2NCIgPiYyCisJCWV4aXQgMQorCWVzYWMKK2RvbmUKKworZm9yIGNvbmZpZyBpbiAtLWVuYWJsZS16bGliIC0tZGlzYWJsZS16bGliOyBkbworICAgIGVjaG8gQnVpbGRpbmcgd2l0aCAkY29uZmlnLi4uCisKKyAgICBjZCB0ZXN0cy9idWlsZAorICAgIC4uLy4uL2NvbmZpZ3VyZSAkY29uZmlnIENGTEFHUz0iLURKVVNUX1RFU1RJTkcgLWcgLVdhbGwiID4vZGV2L251bGwKKyAgICBtYWtlIGNsZWFuID4vZGV2L251bGwKKyAgICAjIGlzbW9kLnN0YXRpYyBkb2Vzbid0IGJ1aWxkIHdpdGggLURKVVNUX1RFU1RJTkcgYW5kIC0tZW5hYmxlLXpsaWIKKyAgICBtYWtlIGluc21vZC5zdGF0aWMgPi9kZXYvbnVsbCAyPiYxIHx8IHRvdWNoIGluc21vZC5zdGF0aWMKKyAgICBtYWtlIGFsbCA+L2Rldi9udWxsCisgICAgY2QgLi4vLi4KKworICAgIGVjaG8gVGVzdGluZyB3aXRoICRjb25maWcuLi4KKyAgICBpZiBncmVwIC1xIENPTkZJR19VU0VfWkxJQj0xIHRlc3RzL2J1aWxkL01ha2VmaWxlOyB0aGVuCisJQ09ORklHX0hBVkVfWkxJQj0xCisJZXhwb3J0IENPTkZJR19IQVZFX1pMSUIKKyAgICBlbHNlCisJdW5zZXQgQ09ORklHX0hBVkVfWkxJQgorICAgIGZpCisKKyAgICAjIENyZWF0ZSBlbmRpYW5uZXNzIGxpbmtzCisgICAgY2FzZSBgZmlsZSB0ZXN0cy9idWlsZC9tb2Rwcm9iZWAgaW4KKwkqTVNCKikgRU5ESUFOPWJlOzsKKwkqTFNCKikgRU5ESUFOPWxlOzsKKwkqKSBlY2hvIFVua25vd24gZW5kaWFuISA+JjI7IGV4aXQgMTs7CisgICAgZXNhYworICAgIGxuIC1zZm4gNjQtJEVORElBTiB0ZXN0cy9kYXRhLzY0CisgICAgbG4gLXNmbiAzMi0kRU5ESUFOIHRlc3RzL2RhdGEvMzIKKworICAgICMgTWFrZSB0aGVtIHJ1biB0aGUgdmFsZ3JpbmQgd3JhcHBlcnMgaWYgcmVxdWVzdGVkLgorICAgIGlmIFsgLW4gIiRWQUxHUklORCIgXTsgdGhlbgorCVBBVEg9YHB3ZGAvdGVzdHMvdmFsZ3JpbmQ6JFBBVEgKKyAgICBlbHNlCisJUEFUSD1gcHdkYC90ZXN0cy9idWlsZDokUEFUSAorICAgIGZpCisKKyAgICAjIEJ5IGRlZmF1bHQsIHdlIHdhbnQgdG8gbG9vayBsaWtlIGEgbmV3IGtlcm5lbC4KKyAgICBNT0RURVNUX1VOQU1FPTIuNi4yNworICAgIGV4cG9ydCBNT0RURVNUX1VOQU1FCisKKyAgICBNT0RURVNUX09WRVJSSURFX1JPT1Q9dGVzdHMvdG1wCisgICAgZXhwb3J0IE1PRFRFU1RfT1ZFUlJJREVfUk9PVAorCisgICAgaWYgWyAtbiAiJFRFU1QiIF07IHRoZW4gRE9JTkc9MDsgZWxzZSBET0lORz0xOyBmaQorCisgICAgZm9yIGRpciBpbiBgZmluZCB0ZXN0cy90ZXN0LSogLXR5cGUgZCB8IHNvcnRgCisgICAgICBkbworCisgICAgICBpZiBbIC16ICIkVkVSQk9TRSIgXTsgdGhlbgorCSAgZWNobyAtbiBSdW5uaW5nIHRlc3RzIGZvciAkZGlyLgorICAgICAgZWxzZQorCSAgZWNobyBSdW5uaW5nIHRlc3RzIGZvciAkZGlyLgorICAgICAgZmkKKyAgICAgIHNob3B0IC1zIG51bGxnbG9iCisgICAgICBmb3IgZiBpbiAkZGlyL1swLTldKi5zaDsgZG8KKwkgIGlmIFsgJERPSU5HIC1lcSAwIF07IHRoZW4KKwkgICAgICBjYXNlICIkZiIgaW4gKiRURVNUKikgRE9JTkc9MTs7ICopIGNvbnRpbnVlOzsgZXNhYworCSAgZmkKKworCSAgcm0gLXJmIHRlc3RzL3RtcC8qCisJICBpZiBzaCAtZSAkRVhUUkFfQVJHUyAkZjsgdGhlbgorCSAgICAgIGlmIFsgLXogIiRWRVJCT1NFIiBdOyB0aGVuCisJCSAgZWNobyAtbiAuCisJICAgICAgZWxzZQorCQkgIGVjaG8gVGVzdHMgJGYgc3VjY2VlZGVkLgorCSAgICAgIGZpCisJICBlbHNlCisJICAgICAgZWNobyBUZXN0IGZvciAkZiBmYWlsZWQuCisJICAgICAgZXhpdCAxCisJICBmaQorICAgICAgZG9uZQorICAgICAgaWYgWyAteiAiJFZFUkJPU0UiIF07IHRoZW4gZWNobzsgZmkKKyAgICBkb25lCitkb25lCisKK2V4aXQgMApkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzAyc2ltcGxlLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzAyc2ltcGxlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcxOGUwNTgKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDJzaW1wbGUuc2gKQEAgLTAsMCArMSwxNDEgQEAKKyMhIC9iaW4vc2gKKyMgU2ltcGxlIHRlc3RzIG9mIGdlbmVyYXRpb24gb2YgMzItYml0IGFuZCA2NC1iaXQgbW9kdWxlcy5kZXAKKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIEV4cGVjdCBubyBvdXRwdXQuCitbICJgZGVwbW9kIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayBtb2R1bGVzLmRlcCByZXN1bHRzOiBleHBlY3QgNSBsaW5lcworWyAiYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIjUiIF0KKworWyAiYGdyZXAgLXcgZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJleHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBncmVwIC13IG5vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoiIF0KK1sgImBncmVwIC13IG5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzogZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KKworIyBDaGVjayBtb2R1bGVzLnN5bWJvbHMgcmVzdWx0czogZXhwZWN0IDMgbGluZXMKK1sgImBncmVwIC12YyAnXiMnIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiMyIgXQorCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQxICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDEgZXhwb3J0X25vZGVwXyRCSVRORVNTIiBdCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQyICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDIgZXhwb3J0X25vZGVwXyRCSVRORVNTIiBdCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDMgZXhwb3J0X2RlcF8kQklUTkVTUyIgXQorCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKKyMgU3lub255bXMKK1sgImBkZXBtb2QgJE1PRFRFU1RfVU5BTUVgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1hYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtYSAkTU9EVEVTVF9VTkFNRWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1BICRNT0RURVNUX1VOQU1FYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtZSAtQWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWUgLUEgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1hbGxgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC0tcXVpY2sgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1lcnJzeW1zIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tZXJyc3ltcyAtLXF1aWNrICRNT0RURVNUX1ZFUlNJT05gIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIENvbWJpbmVkIHNob3VsZCBmb3JtIHN0ZG91dCB2ZXJzaW9ucy4KK2dyZXAgLXZoICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworIyBTdGRvdXQgdmVyc2lvbnMuCitkZXBtb2QgLW4gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtYSAtbiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1uIC1hICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtZSAtbiAtQSAkTU9EVEVTVF9WRVJTSU9OIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDRtYXBzLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzA0bWFwcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZDMwZjhmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzA0bWFwcy5zaApAQCAtMCwwICsxLDE1OSBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IG9mIGdlbmVyYXRpb24gb2YgMzItYml0IGFuZCA2NC1iaXQgbWFwcworCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL2Njd19tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL3BjaV9tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL3VzYl9tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL2llZWUxMzk0X21hcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tYXAvcG5wX21hcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tYXAvaW5wdXRfbWFwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC9vZl9tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL2lucHV0X21hcF9uZXctJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBFeHBlY3Qgbm8gb3V0cHV0LgorWyAiYGRlcG1vZGAiID0gIiIgXQorCisjIENoZWNrIFBDSTogZXhwZWN0IDIgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcGAgPSAyIF0KKworWyAiYGdyZXAgcGNpX21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcGAiID0gInBjaV9tYXAtJEJJVE5FU1MgICAgICAgICAgIDB4MDAwMDAwMDEgMHgwMDAwMDAwMiAweDAwMDAwMDAzIDB4MDAwMDAwMDQgMHgwMDAwMDAwNSAweDAwMDAwMDA2IDB4MAorcGNpX21hcC0kQklUTkVTUyAgICAgICAgICAgMHgwMDAwMDAwYiAweDAwMDAwMDBjIDB4MDAwMDAwMGQgMHgwMDAwMDAwZSAweDAwMDAwMDBmIDB4MDAwMDAwMTAgMHgwIiBdCisKKyMgQ2hlY2sgVVNCOiBleHBlY3QgMiBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwYCA9IDIgXQorCitbICJgZ3JlcCB1c2JfbWFwICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwYCIgPSAidXNiX21hcC0kQklUTkVTUyAgICAgICAgICAgMHgwMDAxICAgICAgMHgwMDAyICAgMHgwMDAzICAgIDB4MDAwNCAgICAgICAweDAwMDUgICAgICAgMHgwNiAgICAgICAgIDB4MDcgICAgICAgICAgICAweDA4ICAgICAgICAgICAgMHgwOSAgICAgICAgICAgIDB4MGEgICAgICAgICAgICAgICAweDBiICAgICAgICAgICAgICAgMHgwCit1c2JfbWFwLSRCSVRORVNTICAgICAgICAgICAweDAwMGIgICAgICAweDAwMGMgICAweDAwMGQgICAgMHgwMDBlICAgICAgIDB4MDAwZiAgICAgICAweDEwICAgICAgICAgMHgxMSAgICAgICAgICAgIDB4MTIgICAgICAgICAgICAweDEzICAgICAgICAgICAgMHgxNCAgICAgICAgICAgICAgIDB4MTUgICAgICAgICAgICAgICAweDAiIF0KKworIyBDaGVjayBDQ1c6IGV4cGVjdCAyIGxpbmVzCitbIGBncmVwIC12YyAnXiMnIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXBgID0gMiBdCisKK1sgImBncmVwIGNjd19tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXBgIiA9ICJjY3dfbWFwLSRCSVRORVNTICAgICAgICAgICAweDAwMGYgICAgICAweDAwMDEgIDB4MDMgICAgICAweDAwMDIgIDB4MDQKK2Njd19tYXAtJEJJVE5FU1MgICAgICAgICAgIDB4MDAwZiAgICAgIDB4MDAwYiAgMHgwZCAgICAgIDB4MDAwYyAgMHgwZSIgXQorCisjIENoZWNrIGllZWUxMzk0OiBleHBlY3QgMiBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXBgID0gMiBdCisKKyMlLTIwcyAweCUwOHggIDB4JTA2eCAgMHglMDZ4IDB4JTA2eCAgICAgMHglMDZ4XG4iLAorIysJCW5hbWUsIGZ3LT5tYXRjaF9mbGFncywgZnctPnZlbmRvcl9pZCwgZnctPm1vZGVsX2lkLAorIysJCWZ3LT5zcGVjaWZpZXJfaWQsIGZ3LT52ZXJzaW9uKTsKK1sgImBncmVwIGllZWUxMzk0X21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwYCIgPSAiaWVlZTEzOTRfbWFwLSRCSVRORVNTICAgICAgMHgwMDAwMDAwYyAgMHgwMDAwMDAgIDB4MDAwMDAwIDB4MDBhMDJkICAgICAweDAxMDAwMQoraWVlZTEzOTRfbWFwLSRCSVRORVNTICAgICAgMHgwMDAwMDAwYyAgMHgwMDAwMDAgIDB4MDAwMDAwIDB4MDBhMDJkICAgICAweDAwMDEwMCIgXQorCisjIENoZWNrIHBucDogZXhwZWN0IDUgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcGAgPSA1IF0KKworIyUtMjBzICAweCUwNHggICAgIDB4JTA0eCAgICAgMHgwMDAwMDAwMCAgMHglMDR4ICAgICAweCUwNHggICAgLi4uCisjIEZvciBub3JtYWwgdGFibGU6CisjIG5hbWUsIDB4ZmZmZiwgMHhmZmZmLCAweDAwMDAwMDAwLCBkZXZpY2UsIHZlbmRvcgorIyBGb3IgY2FyZCB0YWJsZToKKyMgbmFtZSwgdmVuZG9yLCBkZXZpY2UsIGRyaXZlcmluZm8sIGRldmljZSwgdmVuZG9yLCBbIGRldmljZSwgdmVuZG9yIF0KK1sgImBncmVwIHBucF9tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5pc2FwbnBtYXBgIiA9ICJwbnBfbWFwLSRCSVRORVNTICAgICAgICAgICAweGZmZmYgICAgIDB4ZmZmZiAgICAgMHgwMDAwMDAwMCAgMHg2MzBlICAgICAweDAwMDEgICAgCitwbnBfbWFwLSRCSVRORVNTICAgICAgICAgICAweGZmZmYgICAgIDB4ZmZmZiAgICAgMHgwMDAwMDAwMCAgMHg2MzBlICAgICAweDAwMDAgICAgCitwbnBfbWFwLSRCSVRORVNTICAgICAgICAgICAweGZmZmYgICAgIDB4ZmZmZiAgICAgMHgwMDAwMDAwMCAgMHgyZDFkICAgICAweDAwMDEgICAgCitwbnBfbWFwLSRCSVRORVNTICAgICAgICAgICAweDkzMDQgICAgIDB4NTA3MSAgICAgMHgwMDAwMDAwMCAgMHg5MzA0ICAgICAweDUwNzEgICAgIDB4OTMwNCAgICAgMHg1MTcxICAgIAorcG5wX21hcC0kQklUTkVTUyAgICAgICAgICAgMHg5MzA0ICAgICAweDgxNzEgICAgIDB4MDAwMDAwMDAgIDB4OTMwNCAgICAgMHg4MDcxICAgICAweDkzMDQgICAgIDB4ODE3MSAgICAiIF0KKworIyBDaGVjayBpbnB1dDogZXhwZWN0IDQgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwYCA9IDQgXQorCisjIG1vZHVsZSAgICAgICAgIG1hdGNoQml0cyBidXN0eXBlIHZlbmRvciBwcm9kdWN0IHZlcnNpb24gZXZCaXRzIGtleUJpdHMgcmVsQml0cyBhYnNCaXRzIG1zY0JpdHMgbGVkQml0cyBzbmRCaXRzIGZmQml0cyBbc3dCaXRzXSBkcml2ZXJfaW5mbworWyAiYGdyZXAgaW5wdXRfbWFwICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXBgIiA9ICJpbnB1dF9tYXAtJEJJVE5FU1MgICAgICAgIDB4MTAgIDB4MCAgMHgwICAweDAgIDB4MCAgMiAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMHgwCitpbnB1dF9tYXAtJEJJVE5FU1MgICAgICAgIDB4MTAgIDB4MCAgMHgwICAweDAgIDB4MCAgNDAwMDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDB4MAoraW5wdXRfbWFwX25ldy0kQklUTkVTUyAgICAweDEwMTAgIDB4MCAgMHgwICAweDAgIDB4MCAgMiAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMSAgMHgwCitpbnB1dF9tYXBfbmV3LSRCSVRORVNTICAgIDB4MTAgIDB4MCAgMHgwICAweDAgIDB4MCAgNDAwMDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDB4MCIgXSB8fAorIFsgImBncmVwIGlucHV0X21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwYCIgPSAiaW5wdXRfbWFwX25ldy0kQklUTkVTUyAgICAweDEwMTAgIDB4MCAgMHgwICAweDAgIDB4MCAgMiAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMSAgMHgwCitpbnB1dF9tYXBfbmV3LSRCSVRORVNTICAgIDB4MTAgIDB4MCAgMHgwICAweDAgIDB4MCAgNDAwMDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDB4MAoraW5wdXRfbWFwLSRCSVRORVNTICAgICAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDIgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDB4MAoraW5wdXRfbWFwLSRCSVRORVNTICAgICAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDQwMDAwICAwICAwICAwICAwICAwICAwICAwICAweDAiIF0KKworIworIyBDaGVjayBvZjogZXhwZWN0IDcgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwYCA9IDcgXQorCisjIG9mIG1vZHVsZSAgICAgICAgICBuYW1lICAgICAgICAgICAgICAgICB0eXBlICAgICAgICAgICAgICAgICBjb21wYXRpYmxlCitbICJgZ3JlcCBvZl9tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcGAiID0gIm9mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8xICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZV8xICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfY29tcGF0XzEKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8yICAgICAgICAgIHRlc3RfdHlwZV8yICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8zICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfY29tcGF0XzIKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZV8zICAgICAgICAgIHRlc3RfY29tcGF0XzMKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV80ICAgICAgICAgIHRlc3RfdHlwZV80ICAgICAgICAgIHRlc3RfY29tcGF0XzQiIF0KKworbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwLm9sZAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcC5vbGQKKworIyBTeW5vbnltcworWyAiYGRlcG1vZCAtYWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pZWVlMTM5NG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pZWVlMTM5NG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pc2FwbnBtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwCisKK1sgImBkZXBtb2QgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pc2FwbnBtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcAorCitbICJgZGVwbW9kIC1lIC1BYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAKKworWyAiYGRlcG1vZCAtZSAtQSAkTU9EVEVTVF9WRVJTSU9OYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAKKworIyBXZSBleHBlY3QgdGhlIHNhbWUgZnJvbSAtbi4KK2dyZXAgLWh2ICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwLm9sZCA+IHRlc3RzL3RtcC9vdXQKKworIyBTdGRvdXQgdmVyc2lvbnMuCitkZXBtb2QgLW4gfCBncmVwIC12ICdeIycgPiB0ZXN0cy90bXAvc3Rkb3V0CitkaWZmIC11IHRlc3RzL3RtcC9vdXQgdGVzdHMvdG1wL3N0ZG91dAorCitkZXBtb2QgLWEgLW4gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZGVwbW9kIC1uIC1hICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZGVwbW9kIC1lIC1uIC1BICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZG9uZQorZG9uZQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzA1bG9vcC5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8wNWxvb3Auc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTJjNDdlMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8wNWxvb3Auc2gKQEAgLTAsMCArMSwzMyBAQAorIyEgL2Jpbi9zaAorIyBMb29wIGRldGVjdGlvbiB0ZXN0LgorCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbG9vcC9sb29wMS0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9sb29wL2xvb3AyLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL2xvb3AvbG9vcF9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBFeHBlY3Qgbm8gbm9ybWFsIG91dHB1dC4KK1sgImBkZXBtb2QgMj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiIiBdCisKKyMgQ2hlY2sgcmVzdWx0czogZXhwZWN0IDAgbGluZXMgKGFsbCBoYXZlIGxvb3BzKS4KK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAgPSAwIF0KKworIyBOb3csIHdlIHNob3VsZCBoYXZlIG9ubHkgb25lIGVycm9yIHJlcG9ydCwgZm9yIGxvb3AxLCBhbmQgMworIyB3YXJuaW5ncy4KK1sgYGdyZXAgLXZjICdeIycgPCB0ZXN0cy90bXAvc3RkZXJyYCA9IDQgXQorCitbICJgZ3JlcCAtdyAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbG9vcDEtJEJJVE5FU1Mua29cIGlnbm9yZWQgdGVzdHMvdG1wL3N0ZGVycmAiID0gIldBUk5JTkc6IE1vZHVsZSAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbG9vcDEtJEJJVE5FU1Mua28gaWdub3JlZCwgZHVlIHRvIGxvb3AiIF0KK1sgImBncmVwIC13IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9sb29wMi0kQklUTkVTUy5rbyB0ZXN0cy90bXAvc3RkZXJyYCIgPSAiV0FSTklORzogTW9kdWxlIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9sb29wMi0kQklUTkVTUy5rbyBpZ25vcmVkLCBkdWUgdG8gbG9vcCIgXQorWyAiYGdyZXAgLXcgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2xvb3BfZGVwLSRCSVRORVNTLmtvIHRlc3RzL3RtcC9zdGRlcnJgIiA9ICJXQVJOSU5HOiBNb2R1bGUgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2xvb3BfZGVwLSRCSVRORVNTLmtvIGlnbm9yZWQsIGR1ZSB0byBsb29wIiBdCitbICJgZ3JlcCAtdyBkZXRlY3RlZCB0ZXN0cy90bXAvc3RkZXJyYCIgPSAiV0FSTklORzogTG9vcCBkZXRlY3RlZDogL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2xvb3AxLSRCSVRORVNTLmtvIG5lZWRzIGxvb3AyLSRCSVRORVNTLmtvIHdoaWNoIG5lZWRzIGxvb3AxLSRCSVRORVNTLmtvIGFnYWluISIgXQorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDZ1bmRlZmluZWQuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDZ1bmRlZmluZWQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjY2MzU4ZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8wNnVuZGVmaW5lZC5zaApAQCAtMCwwICsxLDI2IEBACisjISAvYmluL3NoCisjIENoZWNrIGZvciB1bmRlZmluZWQgc3ltYm9scy4KKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL3Vua25vd24vdW5rbm93bi0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCit0b3VjaCB0ZXN0cy90bXAvZW1wdHkKKworIyBXaXRob3V0IC1lLCBkb2Vzbid0IG1hdHRlci4KK1sgImBkZXBtb2QgLUYgL2VtcHR5IDI+JjFgIiA9ICIiIF0KKworIyBXaXRob3V0IC1GIGRvZXNuJ3QgbWF0dGVyCitbICJgZGVwbW9kIC1lIDI+JjFgIiA9ICIiIF0KKworWyAiYGRlcG1vZCAtZSAtRiAvZW1wdHkgMj4mMWAiID0gIldBUk5JTkc6IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS91bmtub3duLSRCSVRORVNTLmtvIG5lZWRzIHVua25vd24gc3ltYm9sIHVuZGVmaW5lZCIgXQorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDdjb21wbGV4LnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzA3Y29tcGxleC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZWUwOTIxCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzA3Y29tcGxleC5zaApAQCAtMCwwICsxLDgzIEBACisjISAvYmluL3NoCisjIENvbXBsZXggdGVzdHMgb2YgZ2VuZXJhdGlvbiBvZiAzMi1iaXQgYW5kIDY0LWJpdCBtb2R1bGVzLmRlcAorIyBEaXJlY3QgZGVwZW5kZW5jaWVzOgorIyAgIEE6IEIgQyBECisjICAgQjogRQorIyAgIEM6IEIgRQorIyAgIEQ6IEIKKyMgICBFOgorCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vY29tcGxleC9jb21wbGV4X2EtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vY29tcGxleC9jb21wbGV4X2ItJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vY29tcGxleC9jb21wbGV4X2MtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vY29tcGxleC9jb21wbGV4X2QtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vY29tcGxleC9jb21wbGV4X2UtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBFeHBlY3Qgbm8gb3V0cHV0LgorWyAiYGRlcG1vZCAyPiYxYCIgPSAiIiBdCisKKyMgQ2hlY2sgcmVzdWx0czogZXhwZWN0IDUgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAgPSA1IF0KKworIyBDb3VsZCBiZSBhOiBjIGQgYiBlIG9yIEE6IGQgYyBiIGUuCitbICJgZ3JlcCAtdyBjb21wbGV4X2EtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAiY29tcGxleF9hLSRCSVRORVNTLmtvOiBjb21wbGV4X2MtJEJJVE5FU1Mua28gY29tcGxleF9kLSRCSVRORVNTLmtvIGNvbXBsZXhfYi0kQklUTkVTUy5rbyBjb21wbGV4X2UtJEJJVE5FU1Mua28iIF0gfHwgWyAiYGdyZXAgLXcgY29tcGxleF9hLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImNvbXBsZXhfYS0kQklUTkVTUy5rbzogY29tcGxleF9kLSRCSVRORVNTLmtvIGNvbXBsZXhfYy0kQklUTkVTUy5rbyBjb21wbGV4X2ItJEJJVE5FU1Mua28gY29tcGxleF9lLSRCSVRORVNTLmtvIiBdCisKK1sgImBncmVwIC13IGNvbXBsZXhfYi0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJjb21wbGV4X2ItJEJJVE5FU1Mua286IGNvbXBsZXhfZS0kQklUTkVTUy5rbyIgXQorCitbICJgZ3JlcCAtdyBjb21wbGV4X2MtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAiY29tcGxleF9jLSRCSVRORVNTLmtvOiBjb21wbGV4X2ItJEJJVE5FU1Mua28gY29tcGxleF9lLSRCSVRORVNTLmtvIiBdCisKK1sgImBncmVwIC13IGNvbXBsZXhfZC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJjb21wbGV4X2QtJEJJVE5FU1Mua286IGNvbXBsZXhfYi0kQklUTkVTUy5rbyBjb21wbGV4X2UtJEJJVE5FU1Mua28iIF0KKworWyAiYGdyZXAgLXcgY29tcGxleF9lLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImNvbXBsZXhfZS0kQklUTkVTUy5rbzoiIF0KKworbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIFN5bm9ueW1zCitbICJgZGVwbW9kIC1hYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCisKK1sgImBkZXBtb2QgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKKworWyAiYGRlcG1vZCAtZSAtQWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorCitbICJgZGVwbW9kIC1lIC1BICRNT0RURVNUX1ZFUlNJT05gIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKKworIyBDb21iaW5lZCBzaG91bGQgZm9ybSBzdGRvdXQgdmVyc2lvbnMuCitncmVwIC12aCAnXiMnICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKKyMgU3Rkb3V0IHZlcnNpb25zLgorZGVwbW9kIC1uIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1hIC1uIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1uIC1hICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkZXBtb2QgLWUgLW4gLUEgJE1PRFRFU1RfVkVSU0lPTiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RvbmUKK2RvbmUKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8wOGJhc2VkaXIuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDhiYXNlZGlyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIwMTNkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDhiYXNlZGlyLnNoCkBAIC0wLDAgKzEsNzkgQEAKKyMhIC9iaW4vc2gKKyMgU2ltcGxlIHRlc3RzIG9mIGdlbmVyYXRpb24gb2YgMzItYml0IGFuZCA2NC1iaXQgbW9kdWxlcy5kZXAgd2l0aCBiYXNlZGlyCisKK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvQkFTRURJUi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIEV4cGVjdCBubyBvdXRwdXQuCitbICJgZGVwbW9kIC1iIC9CQVNFRElSIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayByZXN1bHRzOiBleHBlY3QgNSBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCA9IDUgXQorCitbICJgZ3JlcCAtdyBleHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImV4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCitbICJgZ3JlcCAtdyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAiZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfZGVwLSRCSVRORVNTLmtvIGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKKworIyBTeW5vbnltcworWyAiYGRlcG1vZCAtYiAvQkFTRURJUiAgLWFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKKworWyAiYGRlcG1vZCAtYiAvQkFTRURJUiAtQWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorCitbICJgZGVwbW9kIC1iIC9CQVNFRElSIC1lIC1BYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCisKK1sgImBkZXBtb2QgLWIgL0JBU0VESVIgLWUgLUEgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorCitbICJgZGVwbW9kIC0tYmFzZWRpciAvQkFTRURJUiAtZSAtQSAkTU9EVEVTVF9WRVJTSU9OIDI+JjFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKKworWyAiYGRlcG1vZCAtLWJhc2VkaXI9L0JBU0VESVIgLWUgLUEgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorCisjIENvbWJpbmVkIHNob3VsZCBmb3JtIHN0ZG91dCB2ZXJzaW9ucy4KK2dyZXAgLXZoICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCisjIFN0ZG91dCB2ZXJzaW9ucy4KK2RlcG1vZCAtYiAvQkFTRURJUiAtbiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtYiAvQkFTRURJUiAtYSAtbiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtYiAvQkFTRURJUiAtbiAtYSAkTU9EVEVTVF9WRVJTSU9OIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1iIC9CQVNFRElSIC1lIC1uIC1BICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDlhbGlhcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8wOWFsaWFzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1NzQxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMDlhbGlhcy5zaApAQCAtMCwwICsxLDQyIEBACisjISAvYmluL3NoCisKKyMgVGVzdCBhbGlhcyBnZW5lcmF0aW9uLgorZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL2FsaWFzL2FsaWFzLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgRXhwZWN0IG5vIG5vcm1hbCBvdXRwdXQuCitbICJgZGVwbW9kIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayByZXN1bHRzOiBleHBlY3QgMiBsaW5lcy4KK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzYCA9IDIgXQorCitbICJgZ3JlcCBhbGlhczEgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzYCIgPSAiYWxpYXMgYWxpYXMxIGFsaWFzXyRCSVRORVNTIiBdCitbICJgZ3JlcCBhbGlhczIgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzYCIgPSAiYWxpYXMgYWxpYXMyIGFsaWFzXyRCSVRORVNTIiBdCisKKyMgVmVyc2lvbiB3aXRoIHN0dWZmIGluIC5tb2RpbmZvIHNlY3Rpb24uCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgRXhwZWN0IG5vIG5vcm1hbCBvdXRwdXQuCitbICJgZGVwbW9kIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayByZXN1bHRzOiBleHBlY3QgMiBsaW5lcy4KK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzYCA9IDIgXQorCitbICJgZ3JlcCBBTElBUzEgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzYCIgPSAiYWxpYXMgQUxJQVMxIG1vZGluZm9fJEJJVE5FU1MiIF0KK1sgImBncmVwIEFMSUFTMiA8ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXNgIiA9ICJhbGlhcyBBTElBUzIgbW9kaW5mb18kQklUTkVTUyIgXQorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTFxdWljay5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8xMXF1aWNrLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg0NDkzNzMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTFxdWljay5zaApAQCAtMCwwICsxLDc4IEBACisjISAvYmluL3NoCisjIENoZWNrIHRoYXQgLUEgd29ya3MgY29ycmVjdGx5LgorCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENvcHkgbW9kdWxlcyBpbnN0ZWFkIG9mIGxpbmtpbmcsIHNvIHdlIGNhbiBwbGF5IHdpdGggdGhlaXIgdGltZXN0YW1wcy4KK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorY3AgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgRmlyc3QgdGltZSwgdGhlcmUgaXMgbm8gbW9kdWxlcy5kZXAsIHNvIGl0IHdpbGwgYmUgZ2VuZXJhdGVkLgorIyBFeHBlY3Qgbm8gb3V0cHV0LgorWyAiYGRlcG1vZCAtQSAyPiYxYCIgPSAiIiBdCisKKyMgQ2hlY2sgbW9kdWxlcy5kZXAgcmVzdWx0czogZXhwZWN0IDUgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAgPSA1IF0KKworWyAiYGdyZXAgLXcgZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJleHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBncmVwIC13IG5vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoiIF0KK1sgImBncmVwIC13IG5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzogZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KKworIyBDaGVjayBtb2R1bGVzLnN5bWJvbHMgcmVzdWx0czogZXhwZWN0IDMgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgID0gMyBdCisKK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDEgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMSBleHBvcnRfbm9kZXBfJEJJVE5FU1MiIF0KK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDIgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMiBleHBvcnRfbm9kZXBfJEJJVE5FU1MiIF0KK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMyBleHBvcnRfZGVwXyRCSVRORVNTIiBdCisKK2NwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorY3AgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworIyBOb3csIHNlY29uZCBydW4gc2hvdWxkIGRvIG5vdGhpbmcuCitjcCAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2NwIC9kZXYvbnVsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMKK1sgImBkZXBtb2QgLUEgMj4mMWAiID0gIiIgXQorZGlmZiAtdSAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2RpZmYgLXUgL2Rldi9udWxsICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scworCisjIFRvdWNoIGEgZGlyZWN0b3J5LCBub3RoaW5nLgorc2xlZXAgMQordG91Y2ggJE1PRFVMRV9ESVIKKworWyAiYGRlcG1vZCAtQSAyPiYxYCIgPSAiIiBdCitkaWZmIC11IC9kZXYvbnVsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzCisKKyMgVG91Y2ggYSBub24tbW9kdWxlLCBub3RoaW5nLgorZWNobyAiVGVzdCIgPiAkTU9EVUxFX0RJUi9SRUFETUUKK1sgImBkZXBtb2QgLUEgMj4mMWAiID0gIiIgXQorZGlmZiAtdSAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2RpZmYgLXUgL2Rldi9udWxsICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scworCisjIFRvdWNoIGEgbW9kdWxlLCB3aGFtLgordG91Y2ggJE1PRFVMRV9ESVIvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvCitbICJgZGVwbW9kIC1BIDI+JjFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzCisKKyMgRGVsZXRpbmcgYSBtb2R1bGUgZG9lcyBub3RoaW5nLgorY3AgL2Rldi9udWxsICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitjcCAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzCitybSAkTU9EVUxFX0RJUi9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28KK1sgImBkZXBtb2QgLUEgMj4mMWAiID0gIiIgXQorZGlmZiAtdSAvZGV2L251bGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2RpZmYgLXUgL2Rldi9udWxsICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scworCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTJjb21wcmVzc2VkLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzEyY29tcHJlc3NlZC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42OTZmZDczCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzEyY29tcHJlc3NlZC5zaApAQCAtMCwwICsxLDE0NSBAQAorIyEgL2Jpbi9zaAorIyBDaGVjayB0aGF0IGNvbXByZXNzZWQgbW9kdWxlcyB3b3JrIGNvcnJlY3RseTsgYmFzZWQgb24gMDJzaW1wbGUuc2gKKworWyAtbiAiJENPTkZJR19IQVZFX1pMSUIiIF0gfHwgZXhpdCAwCisKK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ29weSBtb2R1bGVzIGluc3RlYWQgb2YgbGlua2luZywgc28gd2UgY2FuIGNvbXByZXNzIHRoZW0KK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorY3AgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCitnemlwIGBmaW5kICRNT0RVTEVfRElSIC1uYW1lICcqLmtvJ2AKKworIyBGaXJzdCB0aW1lLCB0aGVyZSBpcyBubyBtb2R1bGVzLmRlcCwgc28gaXQgd2lsbCBiZSBnZW5lcmF0ZWQuCisjIEV4cGVjdCBubyBvdXRwdXQuCitbICJgZGVwbW9kIC1BIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayBtb2R1bGVzLmRlcCByZXN1bHRzOiBleHBlY3QgNSBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCA9IDUgXQorCitbICJgZ3JlcCAtdyBleHBvcnRfZGVwLSRCSVRORVNTLmtvLmd6OiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImV4cG9ydF9kZXAtJEJJVE5FU1Mua28uZ3o6IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rby5neiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvLmd6OiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X2RlcC0kQklUTkVTUy5rby5nejogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvLmd6IiBdCitbICJgZ3JlcCAtdyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28uZ3o6ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAiZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvLmd6OiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28uZ3o6ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28uZ3o6IiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28uZ3o6ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvLmd6OiBleHBvcnRfZGVwLSRCSVRORVNTLmtvLmd6IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rby5neiIgXQorCisjIENoZWNrIG1vZHVsZXMuc3ltYm9scyByZXN1bHRzOiBleHBlY3QgMyBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AgPSAzIF0KKworWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQxIGV4cG9ydF9ub2RlcF8kQklUTkVTUyIgXQorWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQyIGV4cG9ydF9ub2RlcF8kQklUTkVTUyIgXQorWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQzIGV4cG9ydF9kZXBfJEJJVE5FU1MiIF0KKworbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIFN5bm9ueW1zCitbICJgZGVwbW9kICRNT0RURVNUX1VOQU1FYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtYWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWEgJE1PRFRFU1RfVU5BTUVgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1BYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtQSAkTU9EVEVTVF9VTkFNRWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWUgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC1BICRNT0RURVNUX1ZFUlNJT05gIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tYWxsYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtLXF1aWNrYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtZSAtLXF1aWNrYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtZSAtLXF1aWNrICRNT0RURVNUX1ZFUlNJT05gIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tZXJyc3ltcyAtLXF1aWNrYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtLWVycnN5bXMgLS1xdWljayAkTU9EVEVTVF9WRVJTSU9OYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworIyBDb21iaW5lZCBzaG91bGQgZm9ybSBzdGRvdXQgdmVyc2lvbnMuCitncmVwIC12aCAnXiMnICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKKyMgU3Rkb3V0IHZlcnNpb25zLgorZGVwbW9kIC1uIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkZXBtb2QgLWEgLW4gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtbiAtYSAkTU9EVEVTVF9WRVJTSU9OIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkZXBtb2QgLWUgLW4gLUEgJE1PRFRFU1RfVkVSU0lPTiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZG9uZQorZG9uZQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzEzY29tcHJlc3NlZC1tYXBzLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzEzY29tcHJlc3NlZC1tYXBzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVmMmEwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTNjb21wcmVzc2VkLW1hcHMuc2gKQEAgLTAsMCArMSwxNTQgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCBvZiBnZW5lcmF0aW9uIG9mIDMyLWJpdCBhbmQgNjQtYml0IG1hcHMsIGd6aXBwZWQgbW9kdWxlcy4KKworWyAtbiAiJENPTkZJR19IQVZFX1pMSUIiIF0gfHwgZXhpdCAwCisKK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK21rZGlyIHRlc3RzL3RtcC9kYXRhCitmb3IgZiBpbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tYXAvKi5rbzsgZG8KKyAgICBnemlwIDwgJGYgPiB0ZXN0cy90bXAvZGF0YS9gYmFzZW5hbWUgJGYgLmtvYC5rby5negorZG9uZQorCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENvcHkgbW9kdWxlcyBpbnN0ZWFkIG9mIGxpbmtpbmcsIHNvIHdlIGNhbiBjb21wcmVzcyB0aGVtCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2NwIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC9jY3dfbWFwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC9wY2lfbWFwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC91c2JfbWFwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC9pZWVlMTM5NF9tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL3BucF9tYXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbWFwL2lucHV0X21hcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tYXAvb2ZfbWFwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21hcC9pbnB1dF9tYXBfbmV3LSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCitnemlwIGBmaW5kICRNT0RVTEVfRElSIC1uYW1lICcqLmtvJ2AKKworIyBFeHBlY3Qgbm8gb3V0cHV0LgorWyAiYGRlcG1vZGAiID0gIiIgXQorCisjIENoZWNrIFBDSTogZXhwZWN0IDIgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcGAgPSAyIF0KKworWyAiYGdyZXAgcGNpX21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcGAiID0gInBjaV9tYXAtJEJJVE5FU1MgICAgICAgICAgIDB4MDAwMDAwMDEgMHgwMDAwMDAwMiAweDAwMDAwMDAzIDB4MDAwMDAwMDQgMHgwMDAwMDAwNSAweDAwMDAwMDA2IDB4MAorcGNpX21hcC0kQklUTkVTUyAgICAgICAgICAgMHgwMDAwMDAwYiAweDAwMDAwMDBjIDB4MDAwMDAwMGQgMHgwMDAwMDAwZSAweDAwMDAwMDBmIDB4MDAwMDAwMTAgMHgwIiBdCisKKyMgQ2hlY2sgVVNCOiBleHBlY3QgMiBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwYCA9IDIgXQorCitbICJgZ3JlcCB1c2JfbWFwICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwYCIgPSAidXNiX21hcC0kQklUTkVTUyAgICAgICAgICAgMHgwMDAxICAgICAgMHgwMDAyICAgMHgwMDAzICAgIDB4MDAwNCAgICAgICAweDAwMDUgICAgICAgMHgwNiAgICAgICAgIDB4MDcgICAgICAgICAgICAweDA4ICAgICAgICAgICAgMHgwOSAgICAgICAgICAgIDB4MGEgICAgICAgICAgICAgICAweDBiICAgICAgICAgICAgICAgMHgwCit1c2JfbWFwLSRCSVRORVNTICAgICAgICAgICAweDAwMGIgICAgICAweDAwMGMgICAweDAwMGQgICAgMHgwMDBlICAgICAgIDB4MDAwZiAgICAgICAweDEwICAgICAgICAgMHgxMSAgICAgICAgICAgIDB4MTIgICAgICAgICAgICAweDEzICAgICAgICAgICAgMHgxNCAgICAgICAgICAgICAgIDB4MTUgICAgICAgICAgICAgICAweDAiIF0KKworIyBDaGVjayBDQ1c6IGV4cGVjdCAyIGxpbmVzCitbIGBncmVwIC12YyAnXiMnIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXBgID0gMiBdCisKK1sgImBncmVwIGNjd19tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXBgIiA9ICJjY3dfbWFwLSRCSVRORVNTICAgICAgICAgICAweDAwMGYgICAgICAweDAwMDEgIDB4MDMgICAgICAweDAwMDIgIDB4MDQKK2Njd19tYXAtJEJJVE5FU1MgICAgICAgICAgIDB4MDAwZiAgICAgIDB4MDAwYiAgMHgwZCAgICAgIDB4MDAwYyAgMHgwZSIgXQorCisjIENoZWNrIGllZWUxMzk0OiBleHBlY3QgMiBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXBgID0gMiBdCisKKyMlLTIwcyAweCUwOHggIDB4JTA2eCAgMHglMDZ4IDB4JTA2eCAgICAgMHglMDZ4XG4iLAorIysJCW5hbWUsIGZ3LT5tYXRjaF9mbGFncywgZnctPnZlbmRvcl9pZCwgZnctPm1vZGVsX2lkLAorIysJCWZ3LT5zcGVjaWZpZXJfaWQsIGZ3LT52ZXJzaW9uKTsKK1sgImBncmVwIGllZWUxMzk0X21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwYCIgPSAiaWVlZTEzOTRfbWFwLSRCSVRORVNTICAgICAgMHgwMDAwMDAwYyAgMHgwMDAwMDAgIDB4MDAwMDAwIDB4MDBhMDJkICAgICAweDAxMDAwMQoraWVlZTEzOTRfbWFwLSRCSVRORVNTICAgICAgMHgwMDAwMDAwYyAgMHgwMDAwMDAgIDB4MDAwMDAwIDB4MDBhMDJkICAgICAweDAwMDEwMCIgXQorCisjIENoZWNrIGlucHV0OiBleHBlY3QgNCBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXBgID0gNCBdCisKKyMgbW9kdWxlICAgICAgICAgbWF0Y2hCaXRzIGJ1c3R5cGUgdmVuZG9yIHByb2R1Y3QgdmVyc2lvbiBldkJpdHMga2V5Qml0cyByZWxCaXRzIGFic0JpdHMgbXNjQml0cyBsZWRCaXRzIHNuZEJpdHMgZmZCaXRzIFtzd0JpdHNdIGRyaXZlcl9pbmZvCitbICJgZ3JlcCBpbnB1dF9tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcGAiID0gImlucHV0X21hcF9uZXctJEJJVE5FU1MgICAgMHgxMDEwICAweDAgIDB4MCAgMHgwICAweDAgIDIgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDEgIDB4MAoraW5wdXRfbWFwX25ldy0kQklUTkVTUyAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDQwMDAwICAwICAwICAwICAwICAwICAwICAwICAwICAweDAKK2lucHV0X21hcC0kQklUTkVTUyAgICAgICAgMHgxMCAgMHgwICAweDAgIDB4MCAgMHgwICAyICAwICAwICAwICAwICAwICAwICAwICAweDAKK2lucHV0X21hcC0kQklUTkVTUyAgICAgICAgMHgxMCAgMHgwICAweDAgIDB4MCAgMHgwICA0MDAwMCAgMCAgMCAgMCAgMCAgMCAgMCAgMCAgMHgwIiBdIHx8IFsgImBncmVwIGlucHV0X21hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwYCIgPSAiaW5wdXRfbWFwLSRCSVRORVNTICAgICAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDIgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDB4MAoraW5wdXRfbWFwLSRCSVRORVNTICAgICAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDQwMDAwICAwICAwICAwICAwICAwICAwICAwICAweDAKK2lucHV0X21hcF9uZXctJEJJVE5FU1MgICAgMHgxMDEwICAweDAgIDB4MCAgMHgwICAweDAgIDIgIDAgIDAgIDAgIDAgIDAgIDAgIDAgIDEgIDB4MAoraW5wdXRfbWFwX25ldy0kQklUTkVTUyAgICAweDEwICAweDAgIDB4MCAgMHgwICAweDAgIDQwMDAwICAwICAwICAwICAwICAwICAwICAwICAwICAweDAiIF0KKworIyBDaGVjayBvZjogZXhwZWN0IDcgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwYCA9IDcgXQorCisjIG9mIG1vZHVsZSAgICAgICAgICBuYW1lICAgICAgICAgICAgICAgICB0eXBlICAgICAgICAgICAgICAgICBjb21wYXRpYmxlCitbICJgZ3JlcCBvZl9tYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcGAiID0gIm9mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8xICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZV8xICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfY29tcGF0XzEKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8yICAgICAgICAgIHRlc3RfdHlwZV8yICAgICAgICAgICoKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV8zICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfY29tcGF0XzIKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZV8zICAgICAgICAgIHRlc3RfY29tcGF0XzMKK29mX21hcC0kQklUTkVTUyAgICAgICAgICAgIHRlc3RfbmFtZV80ICAgICAgICAgIHRlc3RfdHlwZV80ICAgICAgICAgIHRlc3RfY29tcGF0XzQiIF0KKworbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwLm9sZAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcC5vbGQKKworIyBTeW5vbnltcworWyAiYGRlcG1vZCAtYWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pZWVlMTM5NG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pZWVlMTM5NG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pc2FwbnBtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5pbnB1dG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwCisKK1sgImBkZXBtb2QgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5pc2FwbnBtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaW5wdXRtYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5vZm1hcAorCitbICJgZGVwbW9kIC1lIC1BYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAKKworWyAiYGRlcG1vZCAtZSAtQSAkTU9EVEVTVF9WRVJTSU9OYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnBjaW1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5wY2ltYXAKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy51c2JtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMudXNibWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuY2N3bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmNjd21hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmllZWUxMzk0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlzYXBucG1hcAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMub2ZtYXAKKworIyBXZSBleHBlY3QgdGhlIHNhbWUgZnJvbSAtbi4KK2dyZXAgLWh2ICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMucGNpbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnVzYm1hcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5jY3dtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaWVlZTEzOTRtYXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuaXNhcG5wbWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmlucHV0bWFwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLm9mbWFwLm9sZCA+IHRlc3RzL3RtcC9vdXQKKworIyBTdGRvdXQgdmVyc2lvbnMuCitkZXBtb2QgLW4gfCBncmVwIC12ICdeIycgPiB0ZXN0cy90bXAvc3Rkb3V0CitkaWZmIC11IHRlc3RzL3RtcC9vdXQgdGVzdHMvdG1wL3N0ZG91dAorCitkZXBtb2QgLWEgLW4gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZGVwbW9kIC1uIC1hICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZGVwbW9kIC1lIC1uIC1BICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZGlmZiAtdSB0ZXN0cy90bXAvb3V0IHRlc3RzL3RtcC9zdGRvdXQKKworZG9uZQorZG9uZQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzE0dXBkYXRlcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8xNHVwZGF0ZXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjQyYmY3NwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8xNHVwZGF0ZXMuc2gKQEAgLTAsMCArMSwxNTUgQEAKKyMhIC9iaW4vc2gKKyMgU2ltcGxlIHRlc3RzIG9mIGdlbmVyYXRpb24gb2YgMzItYml0IGFuZCA2NC1iaXQgbW9kdWxlcy5kZXAKKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIva2VybmVsCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIva2VybmVsCisKKyMgTW9yZSBpbnB1dHMKK21rZGlyIC1wICRNT0RVTEVfRElSL3VwZGF0ZXMKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIvdXBkYXRlcworCisjIEZpcnN0IHdlIHRyeSB1cGRhdGUgd2hpY2ggb3ZlcnJpZGVzLCB0aGVuIG5vdAorZm9yIGl0ZXIgaW4gb3ZlcnJpZGUgbm90LW92ZXJyaWRlOyBkbworCisjIEV4cGVjdCBubyBvdXRwdXQuCitbICJgZGVwbW9kIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayBtb2R1bGVzLmRlcCByZXN1bHRzOiBleHBlY3QgNSBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCA9IDUgXQorCisjIE90aGVyIGxpbmVzIG11c3QgcmVmZXIgdG8gdXBkYXRlcy8sIG5vdCBrZXJuZWxzLyBtb2R1bGUuCitbICJgZ3JlcCAtdyBleHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImtlcm5lbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiB1cGRhdGVzL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImtlcm5lbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IHVwZGF0ZXMvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJrZXJuZWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAia2VybmVsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzoga2VybmVsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gdXBkYXRlcy9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBncmVwIC13IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJ1cGRhdGVzL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoiIF0KKworIyBDaGVjayBtb2R1bGVzLnN5bWJvbHMgcmVzdWx0czogZXhwZWN0IDMgbGluZXMKK1sgYGdyZXAgLXZjICdeIycgPCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgID0gMyBdCisKK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDEgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMSBleHBvcnRfbm9kZXBfJEJJVE5FU1MiIF0KK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDIgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMiBleHBvcnRfbm9kZXBfJEJJVE5FU1MiIF0KK1sgImBncmVwIC13IHN5bWJvbDpleHBvcnRlZDMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCIgPSAiYWxpYXMgc3ltYm9sOmV4cG9ydGVkMyBleHBvcnRfZGVwXyRCSVRORVNTIiBdCisKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworIyBTeW5vbnltcworWyAiYGRlcG1vZCAkTU9EVEVTVF9VTkFNRWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1hICRNT0RURVNUX1VOQU1FYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtQWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLUEgJE1PRFRFU1RfVU5BTUVgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC1BYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtZSAtQSAkTU9EVEVTVF9WRVJTSU9OYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtLWFsbGAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1xdWlja2AiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWUgLS1xdWlja2AiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWUgLS1xdWljayAkTU9EVEVTVF9WRVJTSU9OYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtLWVycnN5bXMgLS1xdWlja2AiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1lcnJzeW1zIC0tcXVpY2sgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKKyMgQ29tYmluZWQgc2hvdWxkIGZvcm0gc3Rkb3V0IHZlcnNpb25zLgorZ3JlcCAtdmggJ14jJyAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCisjIFN0ZG91dCB2ZXJzaW9ucy4KK2RlcG1vZCAtbiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1hIC1uIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitkZXBtb2QgLW4gLWEgJE1PRFRFU1RfVkVSU0lPTiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1lIC1uIC1BICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKKyMgRm9yIHNlY29uZCBydW4sIGRvbid0IG92ZXJyaWRlLgorcm0gLWYgJE1PRFVMRV9ESVIva2VybmVsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworcm0gLWYgJE1PRFVMRV9ESVIvbW9kdWxlcyoKK2RvbmUgIyBvdmVycmlkZQorCitkb25lICMgMzIvNjQtYml0Citkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTVzeW1saW5rLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzE1c3ltbGluay5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NjhmNGZkCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtZGVwbW9kLzE1c3ltbGluay5zaApAQCAtMCwwICsxLDE1MyBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IHRoYXQgd2UgaWdub3JlIHN5bWxpbmtzLgorCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUi9rZXJuZWwKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUi9rZXJuZWwKKworIyBTaG91bGQgbm90IGZpbmQgdGhpcyB0aHJvdWdoIHN5bWxpbmsKK21rZGlyIHRlc3RzL3RtcC9ub2dvCitsbiAtcyAuLi8uLi8uLi9ub2dvICRNT0RVTEVfRElSL2J1aWxkCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9hbGlhcy9hbGlhcy0kQklUTkVTUy5rbyAkTU9EVUxFX0RJUi9ub2dvCisKKyMgU0hPVUxEIGdvIHRocm91Z2ggdXBkYXRlcyBzeW1saW5rIChTdVNFIHdhbnQgc2hhcmVkIHVwZGF0ZXMpCitta2RpciB0ZXN0cy90bXAvdXBkYXRlcworbG4gLXMgLi4vLi4vLi4vdXBkYXRlcyAkTU9EVUxFX0RJUi91cGRhdGVzCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9yZW5hbWUvcmVuYW1lLW5ldy0kQklUTkVTUy5rbyB0ZXN0cy90bXAvdXBkYXRlcworCisjIEV4cGVjdCBubyBvdXRwdXQuCitbICJgZGVwbW9kIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayBtb2R1bGVzLmRlcCByZXN1bHRzOiBleHBlY3QgNiBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCA9IDYgXQorCitbICJgZ3JlcCAtdyBleHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImtlcm5lbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiBrZXJuZWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAia2VybmVsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzoga2VybmVsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAia2VybmVsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImtlcm5lbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286IGtlcm5lbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIGtlcm5lbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBncmVwIC13IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJrZXJuZWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgcmVuYW1lLW5ldy0kQklUTkVTUy5rbzogJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXBgIiA9ICJ1cGRhdGVzL3JlbmFtZS1uZXctJEJJVE5FU1Mua286IiBdCisKKyMgQ2hlY2sgbW9kdWxlcy5zeW1ib2xzIHJlc3VsdHM6IGV4cGVjdCAzIGxpbmVzCitbIGBncmVwIC12YyAnXiMnIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzYCA9IDMgXQorCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQxICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDEgZXhwb3J0X25vZGVwXyRCSVRORVNTIiBdCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQyICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDIgZXhwb3J0X25vZGVwXyRCSVRORVNTIiBdCitbICJgZ3JlcCAtdyBzeW1ib2w6ZXhwb3J0ZWQzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AiID0gImFsaWFzIHN5bWJvbDpleHBvcnRlZDMgZXhwb3J0X2RlcF8kQklUTkVTUyIgXQorCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKKyMgU3lub255bXMKK1sgImBkZXBtb2QgJE1PRFRFU1RfVU5BTUVgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1hYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtYSAkTU9EVEVTVF9VTkFNRWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLUFgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1BICRNT0RURVNUX1VOQU1FYCIgPSAiIiBdCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQKKworWyAiYGRlcG1vZCAtZSAtQWAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLWUgLUEgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1hbGxgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lIC0tcXVpY2sgJE1PRFRFU1RfVkVSU0lPTmAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1lcnJzeW1zIC0tcXVpY2tgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tZXJyc3ltcyAtLXF1aWNrICRNT0RURVNUX1ZFUlNJT05gIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIENvbWJpbmVkIHNob3VsZCBmb3JtIHN0ZG91dCB2ZXJzaW9ucy4KK2dyZXAgLXZoICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworIyBTdGRvdXQgdmVyc2lvbnMuCitkZXBtb2QgLW4gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtYSAtbiB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1uIC1hICRNT0RURVNUX1ZFUlNJT04gfCBncmVwIC12ICdeIycgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkCisKK2RlcG1vZCAtZSAtbiAtQSAkTU9EVEVTVF9WRVJTSU9OIHwgZ3JlcCAtdiAnXiMnID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwKK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGwub2xkICRNT0RVTEVfRElSL21vZHVsZXMuYWxsID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZAorCitybSAtcmYgdGVzdHMvdG1wLyoKK2RvbmUgIyAzMi82NC1iaXQKK2RvbmUKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWRlcG1vZC8xNnNwZWNpZmljLW1vZHVsZXMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTZzcGVjaWZpYy1tb2R1bGVzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEzNjQ3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1kZXBtb2QvMTZzcGVjaWZpYy1tb2R1bGVzLnNoCkBAIC0wLDAgKzEsOTIgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCBkZXBtb2Qgd2l0aCBzcGVjaWZpYyBuYW1lcyBvbiB0aGUgY21kbGluZSAoYnVnIHJlcG9ydCBmcm9tIEFuZHJldyBTbmFyZSkKKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCitBTEw9Ii9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfZGVwLSRCSVRORVNTLmtvIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyIKKworIyBFeHBlY3Qgbm8gb3V0cHV0LgorWyAiYGRlcG1vZCAkQUxMIDI+JjFgIiA9ICIiIF0KKworIyBDaGVjayBtb2R1bGVzLmRlcCByZXN1bHRzOiBleHBlY3QgNSBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCA9IDUgXQorCitbICJgZ3JlcCAtdyBleHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gImV4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcGAiID0gIm5vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCitbICJgZ3JlcCAtdyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAiZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgXQorWyAiYGdyZXAgLXcgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiBdCitbICJgZ3JlcCAtdyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwYCIgPSAibm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfZGVwLSRCSVRORVNTLmtvIGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorCisjIENoZWNrIG1vZHVsZXMuc3ltYm9scyByZXN1bHRzOiBleHBlY3QgMyBsaW5lcworWyBgZ3JlcCAtdmMgJ14jJyA8ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9sc2AgPSAzIF0KKworWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQxIGV4cG9ydF9ub2RlcF8kQklUTkVTUyIgXQorWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQyIGV4cG9ydF9ub2RlcF8kQklUTkVTUyIgXQorWyAiYGdyZXAgLXcgc3ltYm9sOmV4cG9ydGVkMyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHNgIiA9ICJhbGlhcyBzeW1ib2w6ZXhwb3J0ZWQzIGV4cG9ydF9kZXBfJEJJVE5FU1MiIF0KKworbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIFN5bm9ueW1zCitbICJgZGVwbW9kICRNT0RURVNUX1VOQU1FICRBTExgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lICRBTExgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC1lICRNT0RURVNUX1ZFUlNJT04gJEFMTGAiID0gIiIgXQorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPi9kZXYvbnVsbAorbXYgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkCisKK1sgImBkZXBtb2QgLS1lcnJzeW1zICRBTExgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCitbICJgZGVwbW9kIC0tZXJyc3ltcyAkTU9EVEVTVF9WRVJTSU9OICRBTExgIiA9ICIiIF0KK2RpZmYgLXUgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuZGVwID4vZGV2L251bGwKK212ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLm9sZAorZGlmZiAtdSAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scyA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLnN5bWJvbHMgJE1PRFVMRV9ESVIvbW9kdWxlcy5zeW1ib2xzLm9sZAorCisjIENvbWJpbmVkIHNob3VsZCBmb3JtIHN0ZG91dCB2ZXJzaW9ucy4KK2dyZXAgLXZoICdeIycgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAub2xkICRNT0RVTEVfRElSL21vZHVsZXMuc3ltYm9scy5vbGQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworIyBTdGRvdXQgdmVyc2lvbnMuCitkZXBtb2QgLW4gJEFMTCB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1uICRNT0RURVNUX1ZFUlNJT04gJEFMTCB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZGVwbW9kIC1lIC1uICRNT0RURVNUX1ZFUlNJT04gJEFMTCB8IGdyZXAgLXYgJ14jJyA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsCitkaWZmIC11ICRNT0RVTEVfRElSL21vZHVsZXMuYWxsLm9sZCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCA+L2Rldi9udWxsCittdiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsbC5vbGQKKworZG9uZQorZG9uZQorCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTI0ODUxMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWluc21vZC8wMnNpbXBsZS5zaApAQCAtMCwwICsxLDEyIEBACisjISAvYmluL3NoCisKKyMgSWYgaXQgZG9lc24ndCBleGlzdCwga2lsbCBpdC4KK1sgImBpbnNtb2Qgbm9uZXhpc3RlbnQtZmlsZSAyPiYxYCIgPSAiaW5zbW9kOiBjYW4ndCByZWFkICdub25leGlzdGVudC1maWxlJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgXQorCisjIE1ha2Ugc3VyZSBpdCBwYXNzZXMgbW9kdWxlIGNvcnJlY3RseS4KK1NJWkU9YHdjIC1jIDwgdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2hgCitbICJgaW5zbW9kIHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorCisjIENoZWNrIG9wdGlvbnMgcGFzc2VkIGludGFjdC4KK1sgImBpbnNtb2QgdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2ggYWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBhICIgXQorWyAiYGluc21vZCB0ZXN0cy90ZXN0LWluc21vZC8wMnNpbXBsZS5zaCBhIGJgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgYSBiICIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtaW5zbW9kLzAzb3B0aW9ucy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWluc21vZC8wM29wdGlvbnMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjEyMDU2NAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWluc21vZC8wM29wdGlvbnMuc2gKQEAgLTAsMCArMSwxNiBAQAorIyEgL2Jpbi9zaAorCitTSVpFPWB3YyAtYyA8IHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoYAorIyBPbGQgb3B0aW9ucyBhcmUgaWdub3JlZC4KK1sgImBpbnNtb2QgLXAgdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2hgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgIiBdCitbICJgaW5zbW9kIC1zIHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorWyAiYGluc21vZCAtZiB0ZXN0cy90ZXN0LWluc21vZC8wMnNpbXBsZS5zaGAiID0gIklOSVRfTU9EVUxFOiAkU0laRSAiIF0KK1sgImBpbnNtb2QgLXAgLWYgLXMgdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2hgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgIiBdCisKKyMgLS12ZXJzaW9uIGFuZCAtdgorVkVSU0lPTj1gZ3JlcCBeVkVSU0lPTiB0ZXN0cy9idWlsZC9NYWtlZmlsZSB8IHNlZCAncy8uKj1bIAldKi8vJ2AKK1sgImBpbnNtb2QgLVZgIiA9ICJtb2R1bGUtaW5pdC10b29scyB2ZXJzaW9uICRWRVJTSU9OIiBdCitbICJgaW5zbW9kIC0tdmVyc2lvbmAiID0gIm1vZHVsZS1pbml0LXRvb2xzIHZlcnNpb24gJFZFUlNJT04iIF0KKworIyBEb24ndCB0cnkgdG8gcXVvdGUgb3IgYW55dGhpbmc6IHdlJ3JlIG5vdCBzbWFydCBlbm91Z2guCitbICJgaW5zbW9kIHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoICdmb289ImJheiBiYXIiJ2AiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXogYmFyXCIgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1pbnNtb2QvMDRzdGRpbi5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWluc21vZC8wNHN0ZGluLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE4OTE3NjAKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1pbnNtb2QvMDRzdGRpbi5zaApAQCAtMCwwICsxLDcgQEAKKyMhIC9iaW4vc2gKKworU0laRT1gd2MgLWMgPCB0ZXN0cy90ZXN0LWluc21vZC8wMnNpbXBsZS5zaGAKK1sgImBpbnNtb2QgLSA8IHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorWyAiYGluc21vZCAtcyAtIDwgdGVzdHMvdGVzdC1pbnNtb2QvMDJzaW1wbGUuc2hgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgIiBdCitbICJgaW5zbW9kIC1mIC0gPCB0ZXN0cy90ZXN0LWluc21vZC8wMnNpbXBsZS5zaGAiID0gIklOSVRfTU9EVUxFOiAkU0laRSAiIF0KK1sgImBpbnNtb2QgLXAgLWYgLXMgLSA8IHRlc3RzL3Rlc3QtaW5zbW9kLzAyc2ltcGxlLnNoYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbHNtb2QvMDFlbXB0eS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWxzbW9kLzAxZW1wdHkuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmJmYjRlOQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWxzbW9kLzAxZW1wdHkuc2gKQEAgLTAsMCArMSw3IEBACisjISAvYmluL3NoCisKK21rZGlyIC1wIHRlc3RzL3RtcC9wcm9jCit0b3VjaCB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCisKKyMgVGhpcyBzaG91bGQgYmUgdHJ1ZQorWyAiYGxzbW9kYCIgPSAiTW9kdWxlICAgICAgICAgICAgICAgICAgU2l6ZSAgVXNlZCBieSIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbHNtb2QvMDNvbGRzdHlsZS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWxzbW9kLzAzb2xkc3R5bGUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjA3ZTg3NAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWxzbW9kLzAzb2xkc3R5bGUuc2gKQEAgLTAsMCArMSwyOSBAQAorIyEgL2Jpbi9zaAorCitta2RpciAtcCB0ZXN0cy90bXAvcHJvYworCisjIE9sZCBzdHlsZSBoYXMgZGVwZW5kZW5jaWVzIGxpa2U6ICJuYW1lIHNpemUgdXNlY291bnQgW2RlcF0gW2RlcF0uLi4iCitlY2hvICdmb28gMTAwIDAnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnYmFyIDEwMSAxJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdiYXogMTAyIDEgYmF6X2RlcCcgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnYmF6eiAyMTQ3NDgzNjQ4IDIxNDc0ODM2NDggYmF6el9kZXAgYmF6el9kZXAyJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdmdXp6IDEwNCAxIGZ1enpfZGVwIFtwZXJtZW5hbnRdJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdmdXp6eSAxMDUgMSBmdXp6eV9kZXAgW3Blcm1lbmFudF0gW3Vuc2FmZV0nID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK2VjaG8gJ2Z1enppZXIgMTA2IDAgW3Blcm1lbmFudF0gW3Vuc2FmZV0nID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworWyAiYGxzbW9kYCIgPSAiTW9kdWxlICAgICAgICAgICAgICAgICAgU2l6ZSAgVXNlZCBieQorZm9vICAgICAgICAgICAgICAgICAgICAgIDEwMCAgMCAKK2JhciAgICAgICAgICAgICAgICAgICAgICAxMDEgIDEgCitiYXogICAgICAgICAgICAgICAgICAgICAgMTAyICAxIGJhel9kZXAKK2JhenogICAgICAgICAgICAgICAgMjE0NzQ4MzY0OCAgMjE0NzQ4MzY0OCBiYXp6X2RlcCBiYXp6X2RlcDIKK2Z1enogICAgICAgICAgICAgICAgICAgICAxMDQgIDEgZnV6el9kZXAgW3Blcm1lbmFudF0KK2Z1enp5ICAgICAgICAgICAgICAgICAgICAxMDUgIDEgZnV6enlfZGVwIFtwZXJtZW5hbnRdIFt1bnNhZmVdCitmdXp6aWVyICAgICAgICAgICAgICAgICAgMTA2ICAwIFtwZXJtZW5hbnRdIFt1bnNhZmVdIiBdCisKKyMgSWYgQ09ORklHX01PRFVMRV9VTkxPQUQ9bjogc2ltcGx5ICJuYW1lIHNpemUiCitlY2hvICdiYXogMTAyJyA+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK2VjaG8gJ2JhenogMjE0NzQ4MzY0OCcgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgbHNtb2RgIiA9ICJNb2R1bGUgICAgICAgICAgICAgICAgICBTaXplICBVc2VkIGJ5CitiYXogICAgICAgICAgICAgICAgICAgICAgMTAyCitiYXp6ICAgICAgICAgICAgICAgIDIxNDc0ODM2NDgiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LWxzbW9kLzA0bmV3c3R5bGUuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1sc21vZC8wNG5ld3N0eWxlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEzOTg3OGYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1sc21vZC8wNG5ld3N0eWxlLnNoCkBAIC0wLDAgKzEsMjYgQEAKKyMhIC9iaW4vc2gKKworbWtkaXIgLXAgdGVzdHMvdG1wL3Byb2MKKworIyBuZXcgc3R5bGUgaGFzIGRlcGVuZGVuY2llcyBsaWtlOiAibmFtZSBzaXplIHVzZWNvdW50IFtkZXBdLFtkZXBdIFtvdGhlcl0iCitlY2hvICdmb28gMTAwIDAgLScgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdiYXIgMTAxIDEgLScgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnYmF6IDEwMiAxIGJhel9kZXAsJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdiYXp6IDIxNDc0ODM2NDggMjE0NzQ4MzY0OCBiYXp6X2RlcCxiYXp6X2RlcDIsJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICdmdXp6IDEwNCAxIGZ1enpfZGVwLFtwZXJtZW5hbnRdLCcgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnZnV6enkgMTA1IDEgZnV6enlfZGVwLFtwZXJtZW5hbnRdLFt1bnNhZmVdLCcgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnZnV6emllciAxMDYgMCBbcGVybWVuYW50XSxbdW5zYWZlXSwnID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK2VjaG8gJ25ld3N0eWxlIDEwNyAwIC0gdW5rbm93bmZpZWxkJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICduZXdzdHlsZTIgMTA4IDAgbmV3c3R5bGUyX2RlcCwgdW5rbm93bmZpZWxkIHVua25vd25maWVsZDInID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworIyBUaGlzIHNob3VsZCBiZSB0cnVlCitbICJgbHNtb2RgIiA9ICJNb2R1bGUgICAgICAgICAgICAgICAgICBTaXplICBVc2VkIGJ5Citmb28gICAgICAgICAgICAgICAgICAgICAgMTAwICAwIAorYmFyICAgICAgICAgICAgICAgICAgICAgIDEwMSAgMSAKK2JheiAgICAgICAgICAgICAgICAgICAgICAxMDIgIDEgYmF6X2RlcAorYmF6eiAgICAgICAgICAgICAgICAyMTQ3NDgzNjQ4ICAyMTQ3NDgzNjQ4IGJhenpfZGVwLGJhenpfZGVwMgorZnV6eiAgICAgICAgICAgICAgICAgICAgIDEwNCAgMSBmdXp6X2RlcCxbcGVybWVuYW50XQorZnV6enkgICAgICAgICAgICAgICAgICAgIDEwNSAgMSBmdXp6eV9kZXAsW3Blcm1lbmFudF0sW3Vuc2FmZV0KK2Z1enppZXIgICAgICAgICAgICAgICAgICAxMDYgIDAgW3Blcm1lbmFudF0sW3Vuc2FmZV0KK25ld3N0eWxlICAgICAgICAgICAgICAgICAxMDcgIDAgCituZXdzdHlsZTIgICAgICAgICAgICAgICAgMTA4ICAwIG5ld3N0eWxlMl9kZXAiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZGV4LzA1b3JkZXIuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2RpbmRleC8wNW9yZGVyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0Njc2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2RpbmRleC8wNW9yZGVyLnNoCkBAIC0wLDAgKzEsNDcgQEAKKyMhIC9iaW4vc2gKKworIyBJbmRleCBwcmVzZXJ2ZXMgb3JkZXIgb2YgdmFsdWVzIGZvciBzYW1lIGtleQorCittb2RpbmRleCAtbyB0ZXN0cy90bXAvaW5kZXggPDwgRU9GCithIDEKK2EgMgorYSAzCitFT0YKKworWyAiYG1vZGluZGV4IC1kIHRlc3RzL3RtcC9pbmRleGAiID0gImEgMQorYSAyCithIDMiIF0KKworbW9kaW5kZXggLW8gdGVzdHMvdG1wL2luZGV4IDw8IEVPRgorYSAzCithIDIKK2EgMQorRU9GCisKK1sgImBtb2RpbmRleCAtZCB0ZXN0cy90bXAvaW5kZXhgIiA9ICJhIDMKK2EgMgorYSAxIiBdCisKKyMgSW5kZXggcHJlc2VydmVzIG9yZGVyIG9mIHZhbHVlcyBhY3Jvc3MgbXVsdGlwbGUga2V5cworCittb2RpbmRleCAtbyB0ZXN0cy90bXAvaW5kZXggPDwgRU9GCisqYSAxCitiKiAyCisqIDMKK0VPRgorCitbICJgbW9kaW5kZXggLXcgYmEgdGVzdHMvdG1wL2luZGV4YCIgPSAiRm91bmQgdmFsdWUocyk6CisxCisyCiszIiBdCisKK21vZGluZGV4IC1vIHRlc3RzL3RtcC9pbmRleCA8PCBFT0YKKyogMQorYiogMgorKmEgMworRU9GCisKK1sgImBtb2RpbmRleCAtdyBiYSB0ZXN0cy90bXAvaW5kZXhgIiA9ICJGb3VuZCB2YWx1ZShzKToKKzEKKzIKKzMiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZm8vMDJhbGwuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2RpbmZvLzAyYWxsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU5OGM3ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2RpbmZvLzAyYWxsLnNoCkBAIC0wLDAgKzEsNTAgQEAKKyMhIC9iaW4vc2gKKworIyBUZXN0IG1vZGluZm8gZXh0cmFjdGlvbjogd29ya3MgZm9yICphbnkqIGVuZGlhbm5lcy4KK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworZWNobyAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL21vZGluZm8tJEJJVE5FU1Mua286IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9tb2RpbmZvLWNyYXAtJEJJVE5FU1Mua28iID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBGb3VuZCBieSByZWFkaW5nIG1vZHVsZXMuZGVwCitPVVRQVVQxPWBtb2RpbmZvIG1vZGluZm8tJEJJVE5FU1MgMj4mMSB8IG1kNXN1bWAKKyMgRm91bmQgYnkgYWJzb2x1dGUgcGF0aC4KK09VVFBVVDI9YG1vZGluZm8gL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL21vZGluZm8tJEJJVE5FU1Mua28gMj4mMSB8IG1kNXN1bWAKKworIyBTYW1lIGV4Y2VwdCBmb3IgZmlsZW5hbWUKK1sgeCIkT1VUUFVUMSIgPSB4IiRPVVRQVVQyIiBdCisKKyMgRXhwZWN0IDEwIGxpbmVzLgorT1VUUFVUPWBtb2RpbmZvIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21vZGluZm8vbW9kaW5mby0kQklUTkVTUy5rbyAyPiYxYAorWyBgZWNobyAiJE9VVFBVVCIgfCB3YyAtbGAgLWVxIDEwIF0KKworIyBUZXN0IGVhY2ggb25lLgorWyAiYGVjaG8gIiRPVVRQVVQiIHwgZ3JlcCBmaWxlbmFtZWAiID0gICAgImZpbGVuYW1lOiAgICAgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28iIF0KK1sgImBlY2hvICIkT1VUUFVUIiB8IGdyZXAgdmVybWFnaWNgIiA9ICAgICJ2ZXJtYWdpYzogICAgICAgbXkgbWFnaWMiIF0KK1sgImBlY2hvICIkT1VUUFVUIiB8IGdyZXAgYXV0aG9yYCIgPSAgICAgICJhdXRob3I6ICAgICAgICAgQVVUSE9SIiBdCitbICJgZWNobyAiJE9VVFBVVCIgfCBncmVwIGRlc2NyaXB0aW9uYCIgPSAiZGVzY3JpcHRpb246ICAgIERFU0NSSVBUSU9OIiBdCitbICJgZWNobyAiJE9VVFBVVCIgfCBncmVwIEFMSUFTMWAiID0gICAgICAiYWxpYXM6ICAgICAgICAgIEFMSUFTMSIgXQorWyAiYGVjaG8gIiRPVVRQVVQiIHwgZ3JlcCBBTElBUzJgIiA9ICAgICAgImFsaWFzOiAgICAgICAgICBBTElBUzIiIF0KK1sgImBlY2hvICIkT1VUUFVUIiB8IGdyZXAgZm9vYCIgPSAgICAgICAgICJwYXJtOiAgICAgICAgICAgZm9vOlRoZSBudW1iZXIgb2YgZm9vcyBvbiB0aGUgY2FyZCIgXQorWyAiYGVjaG8gIiRPVVRQVVQiIHwgZ3JlcCAnIGRlc2NyaWJlZCdgIiA9ICAgICAgICAgInBhcm06ICAgICAgICAgICBkZXNjcmliZWQ6QSB3ZWxsLWRlc2NyaWJlZCBwYXJhbWV0ZXIgKHVpbnQpIiBdCitbICJgZWNobyAiJE9VVFBVVCIgfCBncmVwICcgdW5kZXNjcmliZWQnYCIgPSAgICAgICAgICJwYXJtOiAgICAgICAgICAgdW5kZXNjcmliZWQ6aW50IiBdCisKKyMgVGVzdCBmaWxlbmFtZSBmcm9tIG1vZHVsZXMuZGVwCitbICJgbW9kaW5mbyBtb2RpbmZvLSRCSVRORVNTIHwgZ3JlcCBmaWxlbmFtZWAiID0gICAgImZpbGVuYW1lOiAgICAgICAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbW9kaW5mby0kQklUTkVTUy5rbyIgXQorCisjIFRlc3QgbXVsdGlwbGUgbW9kdWxlcyBvbiBjbWRsaW5lLgorWyBgbW9kaW5mbyB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIDI+JjEgfCB3YyAtbGAgLWVxIDIwIF0KKworIyBUZXN0IDAtZmlsbAorWyAiYG1vZGluZm8gLTAgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIDI+JjEgfCB0ciAtZGMgJ1wwMDAnIHwgdHIgJ1wwMDAnIEBgIiA9ICJAQEBAQEBAQEBAIiBdCisKK2RvbmUKK2RvbmUKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZm8vMDNmaWVsZC5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZm8vMDNmaWVsZC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NjQ5MjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kaW5mby8wM2ZpZWxkLnNoCkBAIC0wLDAgKzEsNTQgQEAKKyMhIC9iaW4vc2gKKworIyBUZXN0IG1vZGluZm8gZXh0cmFjdGlvbjogd29ya3MgZm9yICphbnkqIGVuZGlhbm5lcy4KK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworZWNobyAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL21vZGluZm8tJEJJVE5FU1Mua286IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9tb2RpbmZvLWNyYXAtJEJJVE5FU1Mua28iID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBUZXN0IGluZGl2aWR1YWwgZmllbGQgZXh0cmFjdGlvbjogYnkgbW9kdWxlIHNlYXJjaCBhbmQgYWJzLiBwYXRoCitmb3IgZmlsZSBpbiBtb2RpbmZvLSRCSVRORVNTIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21vZGluZm8vbW9kaW5mby0kQklUTkVTUy5rbzsgZG8KKyAgICBbICJgbW9kaW5mbyAtRiByYW5kb21jcmFwICRmaWxlIDI+JjFgIiA9ICJteSByYW5kb20gY3JhcCB3aGljaCBJIHVzZSB0byB0ZXN0IHN0dWZmIHdpdGgiIF0KKyAgICBbICJgbW9kaW5mbyAtRiB2ZXJtYWdpYyAkZmlsZSAyPiYxYCIgPSAibXkgbWFnaWMiIF0KKyAgICBbICJgbW9kaW5mbyAtRiBhdXRob3IgJGZpbGUgMj4mMWAiID0gIkFVVEhPUiIgXQorICAgIFsgImBtb2RpbmZvIC1hICRmaWxlIDI+JjFgIiA9ICJBVVRIT1IiIF0KKyAgICBbICJgbW9kaW5mbyAtRiBkZXNjcmlwdGlvbiAkZmlsZSAyPiYxYCIgPSAiREVTQ1JJUFRJT04iIF0KKyAgICBbICJgbW9kaW5mbyAtZCAkZmlsZSAyPiYxYCIgPSAiREVTQ1JJUFRJT04iIF0KKyAgICBbICJgbW9kaW5mbyAtRiBhbGlhcyAkZmlsZSAyPiYxYCIgPSAiQUxJQVMxCitBTElBUzIiIF0gfHwgWyAiYG1vZGluZm8gLUYgYWxpYXMgJGZpbGUgMj4mMWAiID0gIkFMSUFTMgorQUxJQVMxIiBdCisgICAgWyAiYG1vZGluZm8gLUYgcGFybSAkZmlsZSAyPiYxYCIgPSAiZm9vOlRoZSBudW1iZXIgb2YgZm9vcyBvbiB0aGUgY2FyZAorZGVzY3JpYmVkOkEgd2VsbC1kZXNjcmliZWQgcGFyYW1ldGVyIiBdIHx8CisgICAgWyAiYG1vZGluZm8gLUYgcGFybSAkZmlsZSAyPiYxYCIgPSAiZGVzY3JpYmVkOkEgd2VsbC1kZXNjcmliZWQgcGFyYW1ldGVyCitmb286VGhlIG51bWJlciBvZiBmb29zIG9uIHRoZSBjYXJkIiBdCisKKyAgICBbICJgbW9kaW5mbyAtRiBwYXJtdHlwZSAkZmlsZSAyPiYxYCIgPSAiZGVzY3JpYmVkOnVpbnQKK3VuZGVzY3JpYmVkOmludCIgXSB8fAorICAgIFsgImBtb2RpbmZvIC1GIHBhcm10eXBlICRmaWxlIDI+JjFgIiA9ICJ1bmRlc2NyaWJlZDppbnQKK2Rlc2NyaWJlZDp1aW50IiBdCisgICAgWyAiYG1vZGluZm8gLUYgdW5rbm93biAkZmlsZSAyPiYxYCIgPSAiIiBdCitkb25lCisKKyMgVGVzdCBmaWxlbmFtZSBvdXRwdXQKK1sgImBtb2RpbmZvIC1GIGZpbGVuYW1lIG1vZGluZm8tJEJJVE5FU1MgMj4mMWAiID0gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9tb2RpbmZvLSRCSVRORVNTLmtvIiBdCitbICJgbW9kaW5mbyAtbiBtb2RpbmZvLSRCSVRORVNTIDI+JjFgIiA9ICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbW9kaW5mby0kQklUTkVTUy5rbyIgXQorWyAiYG1vZGluZm8gLUYgZmlsZW5hbWUgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIDI+JjFgIiA9ICJ0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28iIF0KK1sgImBtb2RpbmZvIC1uIHRlc3RzL2RhdGEvJEJJVE5FU1MkRU5ESUFOL21vZGluZm8vbW9kaW5mby0kQklUTkVTUy5rbyAyPiYxYCIgPSAidGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIiBdCisKKyMgVGVzdCBtdWx0aXBsZSBtb2R1bGVzIG9uIGNtZGxpbmUuCitbICJgbW9kaW5mbyAtRiB2ZXJtYWdpYyB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIDI+JjFgIiA9ICJteSBtYWdpYworbXkgbWFnaWMiIF0KKworIyBUZXN0IDAtZmlsbAorWyAiYG1vZGluZm8gLTAgLUYgYWxpYXMgdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vbW9kaW5mby9tb2RpbmZvLSRCSVRORVNTLmtvIDI+JjEgfCB0ciAnXDAwMCcgQGAiID0gIkFMSUFTMUBBTElBUzJAIiBdCisKK2RvbmUKK2RvbmUKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZm8vMDRjb21wcmVzc2VkLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kaW5mby8wNGNvbXByZXNzZWQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWZjMDkzMAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZGluZm8vMDRjb21wcmVzc2VkLnNoCkBAIC0wLDAgKzEsNTAgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCBtb2RpbmZvIGV4dHJhY3Rpb24gb24gY29tcHJlc3NlZCBtb2R1bGVzLgorCitbIC1uICIkQ09ORklHX0hBVkVfWkxJQiIgXSB8fCBleGl0IDAKKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDb3B5IG1vZHVsZXMgaW5zdGVhZCBvZiBsaW5raW5nLCBzbyB3ZSBjYW4gY29tcHJlc3MgdGhlbQorTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitjcCB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9tb2RpbmZvL21vZGluZm8tJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworZ3ppcCAkTU9EVUxFX0RJUi9tb2RpbmZvLSRCSVRORVNTLmtvCisKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9tb2RpbmZvLSRCSVRORVNTLmtvLmd6OiAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbW9kaW5mby1jcmFwLSRCSVRORVNTLmtvLmd6IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKKyMgVGVzdCBpbmRpdmlkdWFsIGZpZWxkIGV4dHJhY3Rpb246IGJ5IG1vZHVsZSBzZWFyY2ggYW5kIGFicy4gcGF0aAorZm9yIGZpbGUgaW4gbW9kaW5mby0kQklUTkVTUyAkTU9EVUxFX0RJUi9tb2RpbmZvLSRCSVRORVNTLmtvLmd6OyBkbworICAgIFsgImBtb2RpbmZvIC1GIHJhbmRvbWNyYXAgJGZpbGUgMj4mMWAiID0gIm15IHJhbmRvbSBjcmFwIHdoaWNoIEkgdXNlIHRvIHRlc3Qgc3R1ZmYgd2l0aCIgXQorICAgIFsgImBtb2RpbmZvIC1GIHZlcm1hZ2ljICRmaWxlIDI+JjFgIiA9ICJteSBtYWdpYyIgXQorICAgIFsgImBtb2RpbmZvIC1GIGF1dGhvciAkZmlsZSAyPiYxYCIgPSAiQVVUSE9SIiBdCisgICAgWyAiYG1vZGluZm8gLUYgZGVzY3JpcHRpb24gJGZpbGUgMj4mMWAiID0gIkRFU0NSSVBUSU9OIiBdCisgICAgWyAiYG1vZGluZm8gLUYgYWxpYXMgJGZpbGUgMj4mMWAiID0gIkFMSUFTMQorQUxJQVMyIiBdIHx8IFsgImBtb2RpbmZvIC1GIGFsaWFzICRmaWxlIDI+JjFgIiA9ICJBTElBUzIKK0FMSUFTMSIgXQorICAgIFsgImBtb2RpbmZvIC1GIHBhcm0gJGZpbGUgMj4mMWAiID0gImZvbzpUaGUgbnVtYmVyIG9mIGZvb3Mgb24gdGhlIGNhcmQKK2Rlc2NyaWJlZDpBIHdlbGwtZGVzY3JpYmVkIHBhcmFtZXRlciIgXSB8fAorICAgIFsgImBtb2RpbmZvIC1GIHBhcm0gJGZpbGUgMj4mMWAiID0gImRlc2NyaWJlZDpBIHdlbGwtZGVzY3JpYmVkIHBhcmFtZXRlcgorZm9vOlRoZSBudW1iZXIgb2YgZm9vcyBvbiB0aGUgY2FyZCIgXQorCisgICAgWyAiYG1vZGluZm8gLUYgcGFybXR5cGUgJGZpbGUgMj4mMWAiID0gImRlc2NyaWJlZDp1aW50Cit1bmRlc2NyaWJlZDppbnQiIF0gfHwKKyAgICBbICJgbW9kaW5mbyAtRiBwYXJtdHlwZSAkZmlsZSAyPiYxYCIgPSAidW5kZXNjcmliZWQ6aW50CitkZXNjcmliZWQ6dWludCIgXQorICAgIFsgImBtb2RpbmZvIC1GIHVua25vd24gJGZpbGUgMj4mMWAiID0gIiIgXQorZG9uZQorCisjIFRlc3QgbXVsdGlwbGUgbW9kdWxlcyBvbiBjbWRsaW5lLgorWyAiYG1vZGluZm8gLUYgdmVybWFnaWMgJE1PRFVMRV9ESVIvbW9kaW5mby0kQklUTkVTUy5rby5neiAkTU9EVUxFX0RJUi9tb2RpbmZvLSRCSVRORVNTLmtvLmd6IDI+JjFgIiA9ICJteSBtYWdpYworbXkgbWFnaWMiIF0KKworIyBUZXN0IDAtZmlsbAorWyAiYG1vZGluZm8gLTAgLUYgYWxpYXMgJE1PRFVMRV9ESVIvbW9kaW5mby0kQklUTkVTUy5rby5neiAyPiYxIHwgdHIgJ1wwMDAnIEBgIiA9ICJBTElBUzFAQUxJQVMyQCIgXQorCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS1pbmRleGVkLzAyc2ltcGxlLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUtaW5kZXhlZC8wMnNpbXBsZS5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODYxODk5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUtaW5kZXhlZC8wMnNpbXBsZS5zaApAQCAtMCwwICsxLDI4IEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAuYmluIGZpbGUKK2VjaG8gIm5vZXhwb3J0X25vZGVwXyRCSVRORVNTIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgfCBtb2RpbmRleCAtbyAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4KKworU0laRT1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKKworIyBObyBhcmdzCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSAiIF0KKworIyBXaXRoIHF1b3RlZCBhcmdzCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgJ2Zvbz0iYmFyIGJheiInIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCisjIFdpdGggdW5xdW90ZWQgYXJncworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIGZvbz1cImJhciBiYXpcIiAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFIGZvbz1cImJhciBiYXpcIiIgXQorCisjIENoZWNrIHVuZGVyc2NvcmUgZXF1aXZhbGVuY2UuCitbICJgbW9kcHJvYmUgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnQtbm9kZXBfJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS1pbmRleGVkLzAzZGVwcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMDNkZXBzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZmQzMmIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS1pbmRleGVkLzAzZGVwcy5zaApAQCAtMCwwICsxLDEwNSBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IG1vZHVsZSBkZXBlbmRlbmNpZXMuCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgTm93IGNyZWF0ZSBtb2R1bGVzLmRlcC5iaW4KK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLmJpbi50ZW1wIDw8RU9GCitub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286IGV4cG9ydF9kZXAtJEJJVE5FU1Mua28gZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitub2V4cG9ydF9kZXBfJEJJVE5FU1Mgbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK2V4cG9ydF9ub2RlcF8kQklUTkVTUyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitleHBvcnRfZGVwXyRCSVRORVNTIGV4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworRU9GCittb2RpbmRleCAtbyAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4gPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4udGVtcAorCisjIEluc2VydGlvbgorU0laRV9OT0VYUE9SVF9OT0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfRVhQT1JUX05PREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfTk9FWFBPUlRfREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfRVhQT1JUX0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvYAorU0laRV9OT0VYUE9SVF9ET1VCTEVERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvYAorCisjIEVtcHR5IC9zeXMvbW9kdWxlLworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKKworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAiIF0KK1sgImBtb2Rwcm9iZSBleHBvcnRfbm9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQICIgXQorWyAiYG1vZHByb2JlIG5vZXhwb3J0X2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RFUCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBleHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQICIgXQorWyAiYG1vZHByb2JlIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQIE9QVElPTlMiIF0KKworIyBOb3cgbWFrZSBhIGZha2UgL3N5cy9tb2R1bGUgc3RydWN0dXJlIGZvciB0aGUgdGVzdAorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKKyMgUmVtb3ZhbAorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK0RFTEVURV9NT0RVTEU6IGV4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IGV4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK0RFTEVURV9NT0RVTEU6IGV4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBSZW1vdmFsIHdpdGggcmVuYW1pbmcuCitybSAtcmYgdGVzdHMvdG1wL3N5cy9tb2R1bGUvKgorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9uZXduYW1lCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9uZXduYW1lL2luaXRzdGF0ZQorZWNobyAwID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvcmVmY250CitlY2hvIDAgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvcmVmY250CitlY2hvIDAgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MvcmVmY250CitlY2hvIDAgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTL3JlZmNudAorZWNobyAwID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbmV3bmFtZS9yZWZjbnQKKworWyAiYG1vZHByb2JlIC1vIG5ld25hbWUgLXIgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBuZXduYW1lIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMDN1bmRlcnNjb3Jlcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMDN1bmRlcnNjb3Jlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRmZjM5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUtaW5kZXhlZC8wM3VuZGVyc2NvcmVzLnNoCkBAIC0wLDAgKzEsNzAgQEAKKyMhIC9iaW4vc2gKKyMgQ2hlY2sgdW5kZXJzY29yZSBzeW5vbnltaXR5IGV2ZXJ5d2hlcmUuCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAuYmluIGZpbGUuCitjYXQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4udGVtcCA8PEVPRgorbm9leHBvcnRfbm9kZXBfJEJJVE5FU1Mgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitleHBvcnRfbm9kZXBfJEJJVE5FU1MgZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOgorRU9GCittb2RpbmRleCAtbyAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4gPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4udGVtcAorCisjIE5vdyBtYWtlIGEgZmFrZSAvc3lzL21vZHVsZSBzdHJ1Y3R1cmUgZm9yIHRoZSB0ZXN0Citta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZQorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MKK3RvdWNoIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQordG91Y2ggdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQordG91Y2ggdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQordG91Y2ggdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK3RvdWNoIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUy9pbml0c3RhdGUKKworIyBTZXQgdXAgY29uZmlnIGZpbGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2VjaG8gImFsaWFzIGFsaWFzLV8gbm9leHBvcnQtbm9kZXBfJEJJVE5FU1MiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIm9wdGlvbnMgZXhwb3J0LW5vZGVwXyRCSVRORVNTIG9wdGlvbi1fIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorZWNobyAiaW5zdGFsbCB0ZXN0LV8gZWNobyBpbnN0YWxsLV8iID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJyZW1vdmUgdGVzdC1fIGVjaG8gcmVtb3ZlLV8iID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJpbnN0YWxsIHRlc3QtaW5jbHVkZSBlY2hvIEluY2x1ZGVkIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUtaW5jbHVkZS5jb25mCisKK1NJWkUxPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRTI9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorCisjIE9uIGNvbW1hbmQgbGluZSAoLXIgYW5kIG5vcm1hbCkKK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFMSAiIF0KK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJbiBhbGlhcyBjb21tYW5kcyAoc291cmNlIGFuZCB0YXJnZXQpCitbICJgbW9kcHJvYmUgYWxpYXMtXyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFMSAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc18tIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUxICIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzLV8gMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfLSAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJbiBvcHRpb24gY29tbWFuZHMgKE5PVCBpbiBhcmd1bWVudHMpCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyIG9wdGlvbi1fIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0LW5vZGVwXyRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyIG9wdGlvbi1fIiBdCisKKyMgSW4gaW5zdGFsbCBjb21tYW5kcworWyAiYG1vZHByb2JlIHRlc3QtXyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIGluc3RhbGwtXyIgXQorWyAiYG1vZHByb2JlIHRlc3RfLSAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIGluc3RhbGwtXyIgXQorCisjIEluIHJlbW92ZSBjb21tYW5kcworWyAiYG1vZHByb2JlIC1yIHRlc3QtXyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIHJlbW92ZS1fIiBdCitbICJgbW9kcHJvYmUgLXIgdGVzdF8tIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gcmVtb3ZlLV8iIF0KKworIyBOT1QgaW4gaW5jbHVkZSBjb21tYW5kcworWyAiYG1vZHByb2JlIHRlc3QtaW5jbHVkZSAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluY2x1ZGVkIiBdCitbICJgbW9kcHJvYmUgdGVzdF9pbmNsdWRlIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5jbHVkZWQiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMTBhbGlhcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMTBhbGlhcy5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmEyZjVhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUtaW5kZXhlZC8xMGFsaWFzLnNoCkBAIC0wLDAgKzEsNjUgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCBmb3IgbW9kdWxlcy5hbGlhcyB1c2FnZS4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIva2VybmVsCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL2FsaWFzL2FsaWFzLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSL2tlcm5lbAorCitTSVpFPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1MvYWxpYXMvYWxpYXMtJEJJVE5FU1Mua29gCisKK2VjaG8gImFsaWFzXyRCSVRORVNTIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvYWxpYXMtJEJJVE5FU1Mua286IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLmJpbi50ZW1wCitlY2hvICJmb28gL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2tlcm5lbC9mb28ua286IiA+PiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcC5iaW4udGVtcAorbW9kaW5kZXggLW8gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAuYmluIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAuYmluLnRlbXAKKworcm0gLWYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcworcm0gLWYgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcy5iaW4KK3JtIC1mIHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCisKK2NwIHRlc3RzL2RhdGEvJEJJVE5FU1MvY29tcGxleC9jb21wbGV4X2EtJEJJVE5FU1Mua28gJE1PRFVMRV9ESVIva2VybmVsL2Zvby5rbworU0laRTI9YHdjIC1jIDwgJE1PRFVMRV9ESVIva2VybmVsL2Zvby5rb2AKKworIyBTaG91bGRuJ3QgY29tcGxhaW4gaWYgY2FuJ3Qgb3BlbiBtb2R1bGVzLmFsaWFzCitbICJgbW9kcHJvYmUgYmFyIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGJhciBub3QgZm91bmQuIiBdCisKKyMgTm93LCBhbGlhcyBmb3VuZCBpbiBtb2R1bGVzLmFsaWFzIHdvcmtzLgorZWNobyAiYmFyIGFsaWFzXyRCSVRORVNTIiA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMuYmluLnRlbXAKK21vZGluZGV4IC1vICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMuYmluIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcy5iaW4udGVtcAorWyAiYG1vZHByb2JlIGJhciAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorCisjIE5vcm1hbCBhbGlhcyBzaG91bGQgb3ZlcnJpZGUgaXQuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2VjaG8gJ2FsaWFzIGJhciBmb28nID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRTIgIiBdCisKKyMgSWYgdGhlcmUncyBhIHJlYWwgbW9kdWxlLCBhbGlhcyBmcm9tIG1vZHVsZXMuYWxpYXMgbXVzdCBOT1Qgb3ZlcnJpZGUuCitlY2hvICJmb28gYWxpYXNfJEJJVE5FU1MiID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcy5iaW4udGVtcAorbW9kaW5kZXggLW8gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcy5iaW4gPCAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzLmJpbi50ZW1wCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyICIgXQorCisjIElmIHRoZXJlJ3MgYW4gaW5zdGFsbCBjb21tYW5kLCBtb2R1bGVzLmFsaWFzIG11c3Qgbm90IG92ZXJyaWRlLgorZWNobyAnaW5zdGFsbCBiYXIgZWNobyBmb28nID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBmb28iIF0KK2VjaG8gJ3JlbW92ZSBiYXIgZWNobyBmb28gcmVtb3ZlJyA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitbICJgbW9kcHJvYmUgLXIgYmFyIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gZm9vIHJlbW92ZSIgXQorCisjIFNob3VsZCBnYXRoZXIgdXAgb3B0aW9ucyBmcm9tIG90aGVyIGFsaWFzIG5hbWUgYXMgd2VsbC4KK2VjaG8gImJhciBhbGlhc18kQklUTkVTUyIgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzLmJpbi50ZW1wCittb2RpbmRleCAtbyAkTU9EVUxFX0RJUi9tb2R1bGVzLmFsaWFzLmJpbiA8ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMuYmluLnRlbXAKK2VjaG8gIm9wdGlvbnMgYmFyIG9wdGlvbjEiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIm9wdGlvbnMgYWxpYXNfJEJJVE5FU1Mgb3B0aW9uMiIgPj4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBvcHRpb24yIG9wdGlvbjEiIF0KKworIyBEdXBsaWNhdGVkIGFsaWFzOiBib3RoIGdldCBwcm9iZWQgKGVpdGhlciBvcmRlcikKK2VjaG8gImJhciBmb28iID4+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMuYmluLnRlbXAKK21vZGluZGV4IC1vICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMuYmluIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcy5iaW4udGVtcAorT1VUPSJgbW9kcHJvYmUgYmFyIDI+JjFgIgorCitbICIkT1VUIiA9ICJJTklUX01PRFVMRTogJFNJWkUgb3B0aW9uMiBvcHRpb24xCitJTklUX01PRFVMRTogJFNJWkUyIG9wdGlvbjEiIF0gfHwgWyAiJE9VVCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFMiBvcHRpb24xCitJTklUX01PRFVMRTogJFNJWkUgb3B0aW9uMiBvcHRpb24xIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS1pbmRleGVkLzE2c2hvd2RlcGVuZHMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS1pbmRleGVkLzE2c2hvd2RlcGVuZHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThlNDE4MgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLWluZGV4ZWQvMTZzaG93ZGVwZW5kcy5zaApAQCAtMCwwICsxLDQwIEBACisjISAvYmluL3NoCisjIFRlc3QgLS1zaG93LWRlcGVuZHMuCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgTm93IGNyZWF0ZSBtb2R1bGVzLmRlcC5iaW4KK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwLnRlbXAgPDxFT0YKK25vZXhwb3J0X25vZGVwXyRCSVRORVNTIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOgorbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzogZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK25vZXhwb3J0X2RlcF8kQklUTkVTUyBub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworZXhwb3J0X25vZGVwXyRCSVRORVNTIGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK2V4cG9ydF9kZXBfJEJJVE5FU1MgZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitFT0YKKyMgQnVpbGQgbW9kdWxlcy5kZXAuYmluLCB3aGljaCBtb2Rwcm9iZSB3aWxsIHByZWZlcgorbW9kaW5kZXggLW8gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAuYmluIDwgJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAudGVtcAorCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIAoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvICIgXQorCisjIE5vdGhpbmcgaW4gc3RkZXJyLi4uCitbIGB3YyAtYyA8IHRlc3RzL3RtcC9zdGRlcnJgID0gMCBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wMnByb2Muc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wMnByb2Muc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDdkYjc3MAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAycHJvYy5zaApAQCAtMCwwICsxLDEwMyBAQAorIyEgL2Jpbi9zaAorCisjIFRlc3QgaGFuZGxpbmcgb2YgL3Byb2MvbW9kdWxlcy4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCitta2RpciB0ZXN0cy90bXAvcHJvYworCisjIE5vdyBjcmVhdGUgbW9kdWxlcy5kZXAKK2NhdCA+IHRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9tb2R1bGVzLmRlcCA8PEVPRgorbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitFT0YKKworU0laRV9OT0VYUE9SVF9OT0RFUD0kKGVjaG8gYHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua29gKQorU0laRV9FWFBPUlRfTk9ERVA9JChlY2hvIGB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2ApCisKKyMgSWYgaXQgY2FuJ3Qgb3BlbiAvcHJvYy9tb2R1bGVzLCBpdCBzaG91bGQgdHJ5IGFueXdheS4KK3JtIC1mIHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQICIgXQorCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJZiBpdCBkb2Vzbid0IGV4aXN0IGluIC9wcm9jL21vZHVsZXMsIHJlbW92ZSBzaG91bGQgc3VjY2VlZC4KK3RvdWNoIHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQICIgXQorWyAiYG1vZHByb2JlIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAiIF0KK1sgImBtb2Rwcm9iZSAtciAtdiBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorWyAiYG1vZHByb2JlIC1yIC12IGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorWyAiYG1vZHByb2JlIC1yIC12IG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCitbICJgbW9kcHJvYmUgLXIgLXYgZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCisjIC4uLiB1bmxlc3MgLS1maXJzdC10aW1lIGlzIHNwZWNpZmllZCAod29uJ3QgcHJpbnQgc3RhdHVzIGR1ZSB0byBzZXQgLWUpLgorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSAtciBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBpcyBub3QgaW4ga2VybmVsLiIgXQorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSAtciBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIG5vdCBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIC1yIG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIG5vdCBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIC1yIGV4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgbm90IGluIGtlcm5lbC4iIF0KKworIyBPbGQtc3R5bGUgL3Byb2MgKG5vIHVubG9hZCBzdXBwb3J0KS4KK2VjaG8gIm5vZXhwb3J0X25vZGVwXyRCSVRORVNTICRTSVpFX05PRVhQT1JUX05PREVQIiA+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK2VjaG8gImV4cG9ydF9ub2RlcF8kQklUTkVTUyAkU0laRV9FWFBPUlRfTk9ERVAiID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworIyBJZiBpdCBkb2VzIGV4aXN0LCBpbnNlcnRpb24gc2hvdWxkICJzdWNjZWVkIi4KK1sgImBtb2Rwcm9iZSAtdiBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorWyAiYG1vZHByb2JlIC12IGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorWyAiYG1vZHByb2JlIC12IG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCitbICJgbW9kcHJvYmUgLXYgZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCisjIC4uIHVubGVzcyAtLWZpcnN0LXRpbWUgaXMgc3BlY2lmaWVkLgorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIGV4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCisKKyMgUmVtb3ZhbCBzaG91bGQgc3RpbGwgdHJ5LgorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCisKKyMgTmV3LXN0eWxlIC9wcm9jIHdpdGhvdXQgdW5sb2FkIHN1cHBvcnQKK2VjaG8gIm5vZXhwb3J0X25vZGVwXyRCSVRORVNTICRTSVpFX05PRVhQT1JUX05PREVQIC0gLSIgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICJleHBvcnRfbm9kZXBfJEJJVE5FU1MgJFNJWkVfRVhQT1JUX05PREVQIC0gLSIgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBub2V4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KKyMgUmVtb3ZhbCBzaG91bGQgc3RpbGwgdHJ5LgorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCisKKyMgU2hvdWxkIGZhaWwgaWYgcmVmY291bnRzIG5vbi16ZXJvLiAgT2xkLXN0eWxlCitlY2hvICJub2V4cG9ydF9ub2RlcF8kQklUTkVTUyAkU0laRV9OT0VYUE9SVF9OT0RFUCAxIiA+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK2VjaG8gImV4cG9ydF9ub2RlcF8kQklUTkVTUyAkU0laRV9FWFBPUlRfTk9ERVAgMSIgPj4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIGluIHVzZS4iIF0KK1sgImBtb2Rwcm9iZSAtciBleHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIGluIHVzZS4iIF0KKworIyBOZXctc3R5bGUgL3Byb2MKK2VjaG8gIm5vZXhwb3J0X25vZGVwXyRCSVRORVNTICRTSVpFX05PRVhQT1JUX05PREVQIDEgLSIgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCitlY2hvICJleHBvcnRfbm9kZXBfJEJJVE5FU1MgJFNJWkVfRVhQT1JUX05PREVQIDEgc29tZXRoaW5nX2Vsc2UsIGV4dHJhZmllbGQiID4+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBhbHJlYWR5IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIGV4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCisKK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBpcyBpbiB1c2UuIiBdCitbICJgbW9kcHJvYmUgLXIgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBpcyBpbiB1c2UuIiBdCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wMnNpbXBsZS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAyc2ltcGxlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFhNDE3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wMnNpbXBsZS5zaApAQCAtMCwwICsxLDI5IEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAgZmlsZS4KK2VjaG8gIiMgQSBjb21tZW50IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiA+PiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorCitTSVpFPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorCisjIE5vIGFyZ3MKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorCisjIFdpdGggcXVvdGVkIGFyZ3MKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAnZm9vPSJiYXIgYmF6IicgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KKyMgV2l0aCB1bnF1b3RlZCBhcmdzCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCisKKyMgQ2hlY2sgdW5kZXJzY29yZSBlcXVpdmFsZW5jZS4KK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcC0kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAyc3lzLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDJzeXMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDYyZTQxOAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAyc3lzLnNoCkBAIC0wLDAgKzEsODggQEAKKyMhIC9iaW4vc2gKKworIyBUZXN0IGhhbmRsaW5nIG9mIC9zeXMvbW9kdWxlLy4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIE5vdyBjcmVhdGUgbW9kdWxlcy5kZXAKK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwIDw8RU9GCitub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK0VPRgorCitTSVpFX05PRVhQT1JUX05PREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRV9FWFBPUlRfTk9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorCisjIElmIGl0IGNhbid0IG9wZW4gL3N5cy9tb2R1bGUsIGl0IHNob3VsZCB0cnkgYW55d2F5LgorWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQICIgXQorCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJZiBpdCBkb2Vzbid0IGV4aXN0IGluIC9zeXMvbW9kdWxlLywgcmVtb3ZlIHNob3VsZCBzdWNjZWVkLgorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKKworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQICIgXQorWyAiYG1vZHByb2JlIC1yIC12IG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCitbICJgbW9kcHJvYmUgLXIgLXYgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjE7IGVjaG8gJD9gIiA9ICIwIiBdCitbICJgbW9kcHJvYmUgLXIgLXYgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMTsgZWNobyAkP2AiID0gIjAiIF0KK1sgImBtb2Rwcm9iZSAtciAtdiBleHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMTsgZWNobyAkP2AiID0gIjAiIF0KKyMgLi4uIHVubGVzcyAtLWZpcnN0LXRpbWUgaXMgc3BlY2lmaWVkICh3b24ndCBwcmludCBzdGF0dXMgZHVlIHRvIHNldCAtZSkuCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIG5vdCBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgbm90IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgLXIgbm9leHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgbm90IGluIGtlcm5lbC4iIF0KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgLXIgZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBpcyBub3QgaW4ga2VybmVsLiIgXQorCisjIE5vdyBtYWtlIGEgZmFrZSAvc3lzL21vZHVsZSBzdHJ1Y3R1cmUgZm9yIHRoZSB0ZXN0CisjIE5vdGU6IG5vIHJlZmNudCBmaWxlcyAobm8gdW5sb2FkIHN1cHBvcnQpCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZQorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUworZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKKyMgSWYgaXQgZG9lcyBleGlzdCwgaW5zZXJ0aW9uIHNob3VsZCAic3VjY2VlZCIuCitbICJgbW9kcHJvYmUgLXYgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMTsgZWNobyAkP2AiID0gIjAiIF0KK1sgImBtb2Rwcm9iZSAtdiBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMTsgZWNobyAkP2AiID0gIjAiIF0KK1sgImBtb2Rwcm9iZSAtdiBub2V4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorWyAiYG1vZHByb2JlIC12IGV4cG9ydC1ub2RlcC0kQklUTkVTUyAyPiYxOyBlY2hvICQ/YCIgPSAiMCIgXQorIyAuLiB1bmxlc3MgLS1maXJzdC10aW1lIGlzIHNwZWNpZmllZC4KK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBleHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorCisjIFJlbW92YWwgc2hvdWxkIHRyeSAoZGVzcGl0ZSBsYWNrIG9mIHVubG9hZCBzdXBwb3J0KQorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCisKKyMgTm90ZTogcmVmY250IGZpbGVzICh1bmxvYWQgc3VwcG9ydCkKK3JtIC1yZiB0ZXN0cy90bXAvc3lzL21vZHVsZQorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyAxID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL3JlZmNudAorZWNobyAxID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvcmVmY250CisKK1sgImBtb2Rwcm9iZSAtLWZpcnN0LXRpbWUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgYWxyZWFkeSBpbiBrZXJuZWwuIiBdCitbICJgbW9kcHJvYmUgLS1maXJzdC10aW1lIG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorWyAiYG1vZHByb2JlIC0tZmlyc3QtdGltZSBleHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGFscmVhZHkgaW4ga2VybmVsLiIgXQorCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorWyAiYG1vZHByb2JlIC1yIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBleHBvcnRfbm9kZXBfJEJJVE5FU1MgaXMgaW4gdXNlLiIgXQorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0LW5vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIGluIHVzZS4iIF0KK1sgImBtb2Rwcm9iZSAtciBleHBvcnQtbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZXhwb3J0X25vZGVwXyRCSVRORVNTIGlzIGluIHVzZS4iIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAzZGVwcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzAzZGVwcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZmMyMGNhCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDNkZXBzLnNoCkBAIC0wLDAgKzEsMTA1IEBACisjISAvYmluL3NoCisjIFRlc3QgbW9kdWxlIGRlcGVuZGVuY2llcy4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBOb3cgY3JlYXRlIG1vZHVsZXMuZGVwCitjYXQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA8PEVPRgorIyBTaG91bGQgaGFuZGxlIGNvbW1lbnRzLgorbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286Citub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286IGV4cG9ydF9kZXAtJEJJVE5FU1Mua28gZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOgorZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitFT0YKKworIyBJbnNlcnRpb24KK1NJWkVfTk9FWFBPUlRfTk9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua29gCitTSVpFX0VYUE9SVF9OT0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua29gCitTSVpFX05PRVhQT1JUX0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua29gCitTSVpFX0VYUE9SVF9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfTk9FWFBPUlRfRE9VQkxFREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rb2AKKworIyBFbXB0eSAvc3lzL21vZHVsZS8KK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQICIgXQorWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RFUCAiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQICIgXQorWyAiYG1vZHByb2JlIGV4cG9ydF9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RPVUJMRURFUCAiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RPVUJMRURFUCBPUFRJT05TIiBdCisKKyMgTm93IG1ha2UgYSBmYWtlIC9zeXMvbW9kdWxlIHN0cnVjdHVyZSBmb3IgdGhlIHRlc3QKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUworZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorCisjIFJlbW92YWwKK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KK1sgImBtb2Rwcm9iZSAtciBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IGV4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMICIgXQorWyAiYG1vZHByb2JlIC1yIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KK1sgImBtb2Rwcm9iZSAtciBleHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUyBFWENMIAorREVMRVRFX01PRFVMRTogZXhwb3J0X2RlcF8kQklUTkVTUyBFWENMIAorREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCisKKyMgUmVtb3ZhbCB3aXRoIHJlbmFtaW5nLgorcm0gLXJmIHRlc3RzL3RtcC9zeXMvbW9kdWxlLyoKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbmV3bmFtZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbmV3bmFtZS9pbml0c3RhdGUKK2VjaG8gMCA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL3JlZmNudAorZWNobyAwID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL3JlZmNudAorZWNobyAwID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTL3JlZmNudAorZWNobyAwID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUy9yZWZjbnQKK2VjaG8gMCA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25ld25hbWUvcmVmY250CisKK1sgImBtb2Rwcm9iZSAtbyBuZXduYW1lIC1yIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbmV3bmFtZSBFWENMIAorREVMRVRFX01PRFVMRTogZXhwb3J0X2RlcF8kQklUTkVTUyBFWENMIAorREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wM3VuZGVyc2NvcmVzLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDN1bmRlcnNjb3Jlcy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMWU1NWUyCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDN1bmRlcnNjb3Jlcy5zaApAQCAtMCwwICsxLDU1IEBACisjISAvYmluL3NoCisjIENoZWNrIHVuZGVyc2NvcmUgc3lub255bWl0eSBldmVyeXdoZXJlLgorCitCSVRORVNTPTMyCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgU2V0IHVwIG1vZHVsZXMuZGVwIGZpbGUuCitlY2hvICIjIEEgY29tbWVudCIgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZWNobyAibm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiA+PiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZWNobyAiZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgPj4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBTZXQgdXAgY29uZmlnIGZpbGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2VjaG8gImFsaWFzIGFsaWFzLV8gbm9leHBvcnQtbm9kZXBfJEJJVE5FU1MiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIm9wdGlvbnMgZXhwb3J0LW5vZGVwXyRCSVRORVNTIG9wdGlvbi1fIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorZWNobyAiaW5zdGFsbCB0ZXN0LV8gZWNobyBpbnN0YWxsLV8iID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJyZW1vdmUgdGVzdC1fIGVjaG8gcmVtb3ZlLV8iID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJpbnN0YWxsIHRlc3QtaW5jbHVkZSBlY2hvIEluY2x1ZGVkIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUtaW5jbHVkZS5jb25mCisKK1NJWkUxPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRTI9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorCisjIE9uIGNvbW1hbmQgbGluZSAoLXIgYW5kIG5vcm1hbCkKK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFMSAiIF0KK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJbiBhbGlhcyBjb21tYW5kcyAoc291cmNlIGFuZCB0YXJnZXQpCitbICJgbW9kcHJvYmUgYWxpYXMtXyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFMSAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc18tIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUxICIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzLV8gMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfLSAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KKworIyBJbiBvcHRpb24gY29tbWFuZHMgKE5PVCBpbiBhcmd1bWVudHMpCitbICJgbW9kcHJvYmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyIG9wdGlvbi1fIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0LW5vZGVwXyRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyIG9wdGlvbi1fIiBdCisKKyMgSW4gaW5zdGFsbCBjb21tYW5kcworWyAiYG1vZHByb2JlIHRlc3QtXyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIGluc3RhbGwtXyIgXQorWyAiYG1vZHByb2JlIHRlc3RfLSAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIGluc3RhbGwtXyIgXQorCisjIEluIHJlbW92ZSBjb21tYW5kcworWyAiYG1vZHByb2JlIC1yIHRlc3QtXyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIHJlbW92ZS1fIiBdCitbICJgbW9kcHJvYmUgLXIgdGVzdF8tIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gcmVtb3ZlLV8iIF0KKworIyBOT1QgaW4gaW5jbHVkZSBjb21tYW5kcworWyAiYG1vZHByb2JlIHRlc3QtaW5jbHVkZSAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluY2x1ZGVkIiBdCitbICJgbW9kcHJvYmUgdGVzdF9pbmNsdWRlIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5jbHVkZWQiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzA0Y29uZmlnLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDRjb25maWcuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzQyY2MxOAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzA0Y29uZmlnLnNoCkBAIC0wLDAgKzEsMjI4IEBACisjISAvYmluL3NoCisjIFRlc3QgY29uZmlndXJhdGlvbiBmaWxlIGhhbmRsaW5nLgorCitCSVRORVNTPTMyCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIFNpbXBsZSBkdW1wIG91dCB0ZXN0LgordG91Y2ggdGVzdHMvdG1wL2VtcHR5CitbICJgbW9kcHJvYmUgLUMgL2VtcHR5IC1jIDI+JjFgIiA9ICIiIF0KK1sgImBtb2Rwcm9iZSAtLWNvbmZpZyAvZW1wdHkgLS1zaG93Y29uZmlnIDI+JjFgIiA9ICIiIF0KKworIyBFeHBsaWNpdGx5IG1lbnRpb25lZCBjb25maWcgZmlsZXMgbXVzdCBleGlzdC4KK1sgImBtb2Rwcm9iZSAtQyBGSUxFLVdISUNILURPRVNOVC1FWElTVCBmb28gMj4mMWAiID0gIkZBVEFMOiBGYWlsZWQgdG8gb3BlbiBjb25maWcgZmlsZSBGSUxFLVdISUNILURPRVNOVC1FWElTVDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgXQorCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK3RvdWNoICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBDcmVhdGUgYSBzaW1wbGUgY29uZmlnIGZpbGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCisjIFZhcmlvdXMgYWxpYXNlcworYWxpYXMgYWxpYXNfdG9fZm9vIGZvbworYWxpYXMgYWxpYXNfdG9fYmFyIGJhcgorYWxpYXMgYWxpYXNfdG9fZXhwb3J0X2RlcC0kQklUTkVTUyBleHBvcnRfZGVwLSRCSVRORVNTCithbGlhcyBhbGlhc190b19ub2V4cG9ydF9kZXAtJEJJVE5FU1Mgbm9leHBvcnRfZGVwLSRCSVRORVNTCithbGlhcyBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUworYWxpYXMgYWxpYXNfdG9fbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUworYWxpYXMgYWxpYXNfdG9fbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Nfd2l0aF90YWJiZWRfb3B0aW9ucyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUworCisjIFZhcmlvdXMgb3B0aW9ucywgaW5jbHVkaW5nIG9wdGlvbnMgdG8gYWxpYXNlcy4KK29wdGlvbnMgYWxpYXNfdG9fZXhwb3J0X2RlcC0kQklUTkVTUyBJIGFtIGFsaWFzIHRvIGV4cG9ydF9kZXAKK29wdGlvbnMgZXhwb3J0X2RlcC0kQklUTkVTUyBJIGFtIGV4cG9ydF9kZXAKK29wdGlvbnMgYWxpYXNfdG9fbm9leHBvcnRfZGVwLSRCSVRORVNTIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfZGVwCitvcHRpb25zIG5vZXhwb3J0X2RlcC0kQklUTkVTUyBJIGFtIG5vZXhwb3J0X2RlcAorb3B0aW9ucyBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X25vZGVwCitvcHRpb25zIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIEkgYW0gbm9leHBvcnRfbm9kZXAKK29wdGlvbnMgYWxpYXNfdG9fbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfZG91YmxlZGVwCitvcHRpb25zIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyBJIGFtIG5vZXhwb3J0X2RvdWJsZWRlcAorb3B0aW9ucyBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTU193aXRoX3RhYmJlZF9vcHRpb25zIGluZGV4PTAgaWQ9IlRoaW5rcGFkIiBpc2FwbnA9MCBcXAorCXBvcnQ9MHg1MzAgY3BvcnQ9MHg1MzggZm1fcG9ydD0weDM4OCBcXAorCW1wdV9wb3J0PS0xIG1wdV9pcnE9LTEgXFwKKwlpcnE9OSBkbWExPTEgZG1hMj0zIFxcCisJZW5hYmxlPTEgaXNhcG5wPTAKKworIyBJbnN0YWxsIGNvbW1hbmRzCitpbnN0YWxsIGJhciBlY2hvIEluc3RhbGxpbmcgYmFyCitpbnN0YWxsIGZvbyBlY2hvIEluc3RhbGxpbmcgZm9vCitpbnN0YWxsIGV4cG9ydF9ub2RlcC0kQklUTkVTUyBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCisKKyMgUmVtb3ZlIGNvbW1hbmRzCityZW1vdmUgYmFyIGVjaG8gUmVtb3ZpbmcgYmFyCityZW1vdmUgZm9vIGVjaG8gUmVtb3ZpbmcgZm9vCityZW1vdmUgZXhwb3J0X25vZGVwLSRCSVRORVNTIGVjaG8gUmVtb3ZpbmcgZXhwb3J0X25vZGVwCitFT0YKKworIyBOb3cgY3JlYXRlIGEgc2Vjb25kIGZpbGUKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS1pbmNsdWRlLmNvbmYgPDxFT0YKK2luc3RhbGwgYmF6IGVjaG8gSW5zdGFsbGluZyBiYXoKK3JlbW92ZSBiYXogZWNobyBSZW1vdmluZyBiYXoKKworYWxpYXMgYWxpYXNfdG9fYmF6IGJhegorRU9GCisKKyMgQ3JlYXRlIGlucHV0cworbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIE5vdyBjcmVhdGUgbW9kdWxlcy5kZXAKK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwIDw8RU9GCitub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzogZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitleHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK0VPRgorCitTSVpFX05PRVhQT1JUX05PREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRV9FWFBPUlRfTk9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRV9OT0VYUE9SVF9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvYAorU0laRV9FWFBPUlRfREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua29gCitTSVpFX05PRVhQT1JUX0RPVUJMRURFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua29gCisKKyMgRW1wdHkgL3N5cy9tb2R1bGUvIGZvciBpbnN0YWxsIGNvbW1hbmRzCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZQorCisjIFRlc3QgaWdub3JpbmcgaW5zdGFsbCBjb21tYW5kcworWyAiYG1vZHByb2JlIC0taWdub3JlLWluc3RhbGwgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQICIgXQorWyAiYG1vZHByb2JlIC1pIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAiIF0KK1sgImBtb2Rwcm9iZSAtaSBmb28gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBUZXN0IGluc3RhbGwgY29tbWFuZHMgKGZha2UgbW9kdWxlcykKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGZvbyIgXQorWyAiYG1vZHByb2JlIGJhciAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgYmFyIiBdCitbICJgbW9kcHJvYmUgYmF6IDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBiYXoiIF0KKworIyBUZXN0IGluc3RhbGwgb2YgYSB3aGF0IGlzIGFsc28gYSByZWFsIG1vZHVsZS4KK1sgImBtb2Rwcm9iZSBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcCIgXQorCisjIFRlc3QgaW5zdGFsbCBvZiB3aGF0IGlzIGFsc28gYSByZWFsIG1vZHVsZSB2aWEgZGVwZW5kZW5jeS4KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RFUCBJIGFtIG5vZXhwb3J0X2RlcCIgXQorCisjIFRlc3QgaWdub3JpbmcgaW5zdGFsbCBjb21tYW5kczogb25seSBlZmZlY3RzIGNvbW1hbmRsaW5lLgorWyAiYG1vZHByb2JlIC1pIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQIEkgYW0gbm9leHBvcnRfZGVwIiBdCisKKyMgVGVzdCBvcHRpb25zCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCBJIGFtIG5vZXhwb3J0X25vZGVwIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQIEkgYW0gbm9leHBvcnRfbm9kZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgSSBhbSBub2V4cG9ydF9kZXAiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQIEkgYW0gbm9leHBvcnRfZGVwIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGV4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgSSBhbSBleHBvcnRfZGVwIiBdCitbICJgbW9kcHJvYmUgZXhwb3J0X2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgSSBhbSBleHBvcnRfZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQIEkgYW0gbm9leHBvcnRfZG91YmxlZGVwIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgSSBhbSBleHBvcnRfZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQIEkgYW0gbm9leHBvcnRfZG91YmxlZGVwIE9QVElPTlMiIF0KKworIyBUZXN0IGFsaWFzZXMgZG9pbmcgaW5zZXJ0aW9uLgorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgSSBhbSBub2V4cG9ydF9ub2RlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X25vZGVwIiBdCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQIEkgYW0gbm9leHBvcnRfbm9kZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9ub2RlcCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBhbGlhc190b19ub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RFUCBJIGFtIG5vZXhwb3J0X2RlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X2RlcCIgXQorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgSSBhbSBub2V4cG9ydF9kZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9kZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAgSSBhbSBhbGlhcyB0byBleHBvcnRfZGVwIiBdCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fZXhwb3J0X2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcCBJIGFtIGFsaWFzIHRvIGV4cG9ydF9kZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RPVUJMRURFUCBJIGFtIG5vZXhwb3J0X2RvdWJsZWRlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X2RvdWJsZWRlcCIgXQorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ET1VCTEVERVAgSSBhbSBub2V4cG9ydF9kb3VibGVkZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9kb3VibGVkZXAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ET1VCTEVERVAgSSBhbSBub2V4cG9ydF9kb3VibGVkZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9kb3VibGVkZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fZm9vIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyBmb28iIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19iYXIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nIGJhciIgXQorWyAiYG1vZHByb2JlIGFsaWFzX3RvX2JheiAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgYmF6IiBdCisKKyMgVGVzdCB0YWItdG8tc3BhY2VzIGNvbnZlcnNpb24sIGFuZCBcIHdyYXBwaW5nLgorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X25vZGVwLSRCSVRORVNTX3dpdGhfdGFiYmVkX29wdGlvbnMgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCBJIGFtIG5vZXhwb3J0X25vZGVwIGluZGV4PTAgaWQ9XCJUaGlua3BhZFwiIGlzYXBucD0wICBwb3J0PTB4NTMwIGNwb3J0PTB4NTM4IGZtX3BvcnQ9MHgzODggIG1wdV9wb3J0PS0xIG1wdV9pcnE9LTEgIGlycT05IGRtYTE9MSBkbWEyPTMgIGVuYWJsZT0xIGlzYXBucD0wIiBdCisKKyMgUG9wdWxhdGUgL3N5cy9tb2R1bGUvIGZvciByZW1vdmUgY29tbWFuZHMKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKKyMgVGVzdCBpZ25vcmluZyByZW1vdmUgY29tbWFuZHMuCitbICJgbW9kcHJvYmUgLXIgLS1pZ25vcmUtcmVtb3ZlIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgLWkgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KK1sgImBtb2Rwcm9iZSAtaSAtciBmb28gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBUZXN0IHJlbW92ZSBjb21tYW5kcyAoZmFrZSBtb2R1bGVzKQorWyAiYG1vZHByb2JlIC1yIGZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGZvbyIgXQorWyAiYG1vZHByb2JlIC1yIGJhciAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGJhciIgXQorWyAiYG1vZHByb2JlIC1yIGJheiAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGJheiIgXQorCisjIFRlc3QgcmVtb3ZlIG9mIGEgd2hhdCBpcyBhbHNvIGEgcmVhbCBtb2R1bGUuCitbICJgbW9kcHJvYmUgLXIgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gUmVtb3ZpbmcgZXhwb3J0X25vZGVwIiBdCisKKyMgVGVzdCByZW1vdmUgb2Ygd2hhdCBpcyBhbHNvIGEgcmVhbCBtb2R1bGUgdmlhIGRlcGVuZGVuY3kuCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK1NZU1RFTTogZWNobyBSZW1vdmluZyBleHBvcnRfbm9kZXAiIF0KKworIyBUZXN0IGlnbm9yaW5nIHJlbW92ZSBjb21tYW5kczogb25seSBlZmZlY3RzIGNvbW1hbmRsaW5lLgorWyAiYG1vZHByb2JlIC1yIC1pIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitTWVNURU06IGVjaG8gUmVtb3ZpbmcgZXhwb3J0X25vZGVwIiBdCisKKyMgVGVzdCBhbGlhc2VzIGRvaW5nIHJlbW92YWwuCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK1NZU1RFTTogZWNobyBSZW1vdmluZyBleHBvcnRfbm9kZXAiIF0KK1sgImBtb2Rwcm9iZSAtciBhbGlhc190b19leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitTWVNURU06IGVjaG8gUmVtb3ZpbmcgZXhwb3J0X25vZGVwIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MgRVhDTCAKK0RFTEVURV9NT0RVTEU6IGV4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK1NZU1RFTTogZWNobyBSZW1vdmluZyBleHBvcnRfbm9kZXAiIF0KKworWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX2ZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGZvbyIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX2JhciAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGJhciIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX2JheiAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nIGJheiIgXQorCisjIE5vdyB0ZXN0IGluc3RhbGwgcHJlY2F1dGlvbiBpbiB0aGUgYWJzZW5jZSBvZiAvc3lzL21vZHVsZXMKK3JtIC1yIHRlc3RzL3RtcC9zeXMvbW9kdWxlCisKKyMgVGVzdCBpbnN0YWxsIGFuZCByZW1vdmUgY29tbWFuZHMgKGZha2UgbW9kdWxlcykKKyMgTm8gY2F1dGlvbiBuZWNlc3NhcnkgaGVyZQorWyAiYG1vZHByb2JlIGZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgZm9vIiBdCitbICJgbW9kcHJvYmUgLXIgZm9vIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gUmVtb3ZpbmcgZm9vIiBdCisKKyMgVGVzdCBpbnN0YWxsIGFuZCByZW1vdmUgb2YgYSB3aGF0IGlzIGFsc28gYSByZWFsIG1vZHVsZS4KK1sgImBtb2Rwcm9iZSBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIldBUk5JTkc6IC9zeXMvbW9kdWxlLyBub3QgcHJlc2VudCBvciB0b28gb2xkLCBhbmQgL3Byb2MvbW9kdWxlcyBkb2VzIG5vdCBleGlzdC4KK1dBUk5JTkc6IElnbm9yaW5nIGluc3RhbGwgY29tbWFuZHMgZm9yIGV4cG9ydF9ub2RlcF8kQklUTkVTUyBpbiBjYXNlIGl0IGlzIGFscmVhZHkgbG9hZGVkLgorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9OT0RFUCAiIF0KK1sgImBtb2Rwcm9iZSAtciBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIldBUk5JTkc6IC9zeXMvbW9kdWxlLyBub3QgcHJlc2VudCBvciB0b28gb2xkLCBhbmQgL3Byb2MvbW9kdWxlcyBkb2VzIG5vdCBleGlzdC4KK1dBUk5JTkc6IElnbm9yaW5nIHJlbW92ZSBjb21tYW5kcyBmb3IgZXhwb3J0X25vZGVwXyRCSVRORVNTIGluIGNhc2UgaXQgaXMgbm90IGxvYWRlZC4KK0RFTEVURV9NT0RVTEU6IGV4cG9ydF9ub2RlcF8zMiBFWENMICIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDZyZW5hbWUuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wNnJlbmFtZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41OWI1ZjEzCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDZyZW5hbWUuc2gKQEAgLTAsMCArMSwxMDAgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCB0aGUgbW9kdWxlIHJlbmFtaW5nIGNvZGUuCisKK2ZvciBFTkRJQU4gaW4gJFRFU1RfRU5ESUFOOyBkbworZm9yIEJJVE5FU1MgaW4gJFRFU1RfQklUUzsgZG8KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgV2UgbmVlZCB0byBkdW1wIHRoZSBtb2R1bGUgdG8gbWFrZSBzdXJlIHRoZSBuYW1lIGhhcyBjaGFuZ2VkLgorTU9EVEVTVF9EVU1QX0lOSVQ9MQorZXhwb3J0IE1PRFRFU1RfRFVNUF9JTklUCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9yZW5hbWUvcmVuYW1lLW5ldy0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9yZW5hbWUvcmVuYW1lLW9sZC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIFNldCB1cCBtb2R1bGVzLmRlcCBmaWxlIChuZWl0aGVyIGhhcyBkZXBlbmRlbmNpZXMpLgorZWNobyAiIyBBIGNvbW1lbnQiID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9yZW5hbWUtbmV3LSRCSVRORVNTLmtvOiIgPj4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9yZW5hbWUtb2xkLSRCSVRORVNTLmtvOiIgPj4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBUZXN0IG9sZC1zdHlsZSBtb2R1bGUgCitbICJgbW9kcHJvYmUgcmVuYW1lLW9sZC0kQklUTkVTUyAyPiB0ZXN0cy90bXAvb3V0YCIgPSAiIiBdCitzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICdyZW5hbWVfb2xkJworaWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAnc2hvcnQnOyB0aGVuIGV4aXQgMTsgZmkKKworWyAiYG1vZHByb2JlIC1vIHNob3J0IHJlbmFtZS1vbGQtJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX29sZCc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAnc2hvcnQnCisKK1sgImBtb2Rwcm9iZSAtbyB2ZXJ5X3ZlcnlfbG9uZ19uYW1lIHJlbmFtZS1vbGQtJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX29sZCc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAndmVyeV92ZXJ5X2xvbmdfbmFtZScKKworWyAiYG1vZHByb2JlIC1vIHNob3J0IHJlbmFtZS1vbGQtJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX29sZCc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAnc2hvcnQnCisKK1sgImBtb2Rwcm9iZSAtbyB2ZXJ5X3ZlcnlfbG9uZ19uYW1lIHJlbmFtZS1vbGQtJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX29sZCc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAndmVyeV92ZXJ5X2xvbmdfbmFtZScKKworWyAiYG1vZHByb2JlIC0tbmFtZSBzaG9ydCByZW5hbWUtb2xkLSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9vbGQnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3Nob3J0JworCitbICJgbW9kcHJvYmUgLS1uYW1lIHZlcnlfdmVyeV9sb25nX25hbWUgcmVuYW1lLW9sZC0kQklUTkVTUyAyPiB0ZXN0cy90bXAvb3V0YCIgPSAiIiBdCitpZiBzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICdyZW5hbWVfb2xkJzsgdGhlbiBleGl0IDE7IGZpCitzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICd2ZXJ5X3ZlcnlfbG9uZ19uYW1lJworCitbICJgbW9kcHJvYmUgLS1uYW1lPXNob3J0IHJlbmFtZS1vbGQtJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX29sZCc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAnc2hvcnQnCisKK1sgImBtb2Rwcm9iZSAtLW5hbWU9dmVyeV92ZXJ5X2xvbmdfbmFtZSByZW5hbWUtb2xkLSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9vbGQnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3ZlcnlfdmVyeV9sb25nX25hbWUnCisKKyMgVGVzdCBuZXctc3R5bGUgbW9kdWxlIAorWyAiYG1vZHByb2JlIHJlbmFtZS1uZXctJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX25ldycKK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3Nob3J0JzsgdGhlbiBleGl0IDE7IGZpCisKK1sgImBtb2Rwcm9iZSAtbyBzaG9ydCByZW5hbWUtbmV3LSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9uZXcnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3Nob3J0JworCitbICJgbW9kcHJvYmUgLW8gdmVyeV92ZXJ5X2xvbmdfbmFtZSByZW5hbWUtbmV3LSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9uZXcnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3ZlcnlfdmVyeV9sb25nX25hbWUnCisKK1sgImBtb2Rwcm9iZSAtbyBzaG9ydCByZW5hbWUtbmV3LSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9uZXcnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3Nob3J0JworCitbICJgbW9kcHJvYmUgLW8gdmVyeV92ZXJ5X2xvbmdfbmFtZSByZW5hbWUtbmV3LSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9uZXcnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3ZlcnlfdmVyeV9sb25nX25hbWUnCisKK1sgImBtb2Rwcm9iZSAtLW5hbWUgc2hvcnQgcmVuYW1lLW5ldy0kQklUTkVTUyAyPiB0ZXN0cy90bXAvb3V0YCIgPSAiIiBdCitpZiBzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICdyZW5hbWVfbmV3JzsgdGhlbiBleGl0IDE7IGZpCitzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICdzaG9ydCcKKworWyAiYG1vZHByb2JlIC0tbmFtZSB2ZXJ5X3ZlcnlfbG9uZ19uYW1lIHJlbmFtZS1uZXctJEJJVE5FU1MgMj4gdGVzdHMvdG1wL291dGAiID0gIiIgXQoraWYgc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAncmVuYW1lX25ldyc7IHRoZW4gZXhpdCAxOyBmaQorc3RyaW5ncyB0ZXN0cy90bXAvb3V0IHwgZ3JlcCAtcSAndmVyeV92ZXJ5X2xvbmdfbmFtZScKKworWyAiYG1vZHByb2JlIC0tbmFtZT1zaG9ydCByZW5hbWUtbmV3LSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK2lmIHN0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3JlbmFtZV9uZXcnOyB0aGVuIGV4aXQgMTsgZmkKK3N0cmluZ3MgdGVzdHMvdG1wL291dCB8IGdyZXAgLXEgJ3Nob3J0JworCitbICJgbW9kcHJvYmUgLS1uYW1lPXZlcnlfdmVyeV9sb25nX25hbWUgcmVuYW1lLW5ldy0kQklUTkVTUyAyPiB0ZXN0cy90bXAvb3V0YCIgPSAiIiBdCitpZiBzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICdyZW5hbWVfbmV3JzsgdGhlbiBleGl0IDE7IGZpCitzdHJpbmdzIHRlc3RzL3RtcC9vdXQgfCBncmVwIC1xICd2ZXJ5X3ZlcnlfbG9uZ19uYW1lJworCitkb25lCitkb25lCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wN3dpbGRhbGlhcy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzA3d2lsZGFsaWFzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliZTUzYjcKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wN3dpbGRhbGlhcy5zaApAQCAtMCwwICsxLDI3IEBACisjISAvYmluL3NoCisjIFRlc3Qgd2lsZGNhcmQgYWxpYXNlcy4KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCit0b3VjaCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorCisjIENyZWF0ZSBhIHNpbXBsZSBjb25maWcgZmlsZS4KK21rZGlyIC1wIHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZAorY2F0ID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgPDxFT0YKKyMgVmFyaW91cyBhbGlhc2VzCithbGlhcyAqd2lsZGNhcmQtXyogZm9vCithbGlhcyAvZGV2L3Rlc3QqIGJhcgorRU9GCisKKyMgU2ltcGxlIHRlc3QuCitbICJgbW9kcHJvYmUgd2lsZGNhcmQtX2FhYSAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorWyAiYG1vZHByb2JlIHdpbGRjYXJkLV8gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KK1sgImBtb2Rwcm9iZSB3aWxkY2FyZF8tIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGZvbyBub3QgZm91bmQuIiBdCitbICJgbW9kcHJvYmUgYW5vdGhlcndpbGRjYXJkLV8gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KK1sgImBtb2Rwcm9iZSBhbm90aGVyd2lsZGNhcmQtX2FhYSAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorWyAiYG1vZHByb2JlIC9kZXYvdGVzdCAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBiYXIgbm90IGZvdW5kLiIgXQorWyAiYG1vZHByb2JlIC9kZXYvdGVzdC90bXAgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgYmFyIG5vdCBmb3VuZC4iIF0KK1sgImBtb2Rwcm9iZSAvZGV2L3Rlc3Q3ICAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBiYXIgbm90IGZvdW5kLiIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDljb25maWdlcnJvcnMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8wOWNvbmZpZ2Vycm9ycy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjE0MGU5Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMDljb25maWdlcnJvcnMuc2gKQEAgLTAsMCArMSwxMDEgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCB2YXJpb3VzIGNvbmZpZyBmaWxlIGVycm9ycy4KKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgordG91Y2ggJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBUZXN0IGJhZCBhbGlhcyBzeW50YXgKK21rZGlyIC1wIHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZAorY2F0ID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgPDxFT0YKK2FsaWFzCithbGlhcyBmb28KK0VPRgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDE6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ2FsaWFzJworV0FSTklORzogL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgbGluZSAyOiBpZ25vcmluZyBiYWQgbGluZSBzdGFydGluZyB3aXRoICdhbGlhcycKK0ZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBCYWQgb3B0aW9uIHN5bnRheAorY2F0ID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgPDxFT0YKK29wdGlvbnMKK29wdGlvbnMgZm9vCitFT0YKKworWyAiYG1vZHByb2JlIGZvbyAyPiYxYCIgPSAiV0FSTklORzogL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgbGluZSAxOiBpZ25vcmluZyBiYWQgbGluZSBzdGFydGluZyB3aXRoICdvcHRpb25zJworV0FSTklORzogL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgbGluZSAyOiBpZ25vcmluZyBiYWQgbGluZSBzdGFydGluZyB3aXRoICdvcHRpb25zJworRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCisjIEJhZCBpbmNsdWRlIHN5bnRheAorY2F0ID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgPDxFT0YKK2luY2x1ZGUKK0VPRgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDE6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ2luY2x1ZGUnCitGQVRBTDogTW9kdWxlIGZvbyBub3QgZm91bmQuIiBdCisKKyMgQmFkIGluc3RhbGwgc3ludGF4CitjYXQgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiA8PEVPRgoraW5zdGFsbAoraW5zdGFsbCBmb28KK0VPRgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDE6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ2luc3RhbGwnCitXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDI6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ2luc3RhbGwnCitGQVRBTDogTW9kdWxlIGZvbyBub3QgZm91bmQuIiBdCisKKyMgQmFkIHJlbW92ZSBzeW50YXgKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCityZW1vdmUKK3JlbW92ZSBmb28KK0VPRgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDE6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ3JlbW92ZScKK1dBUk5JTkc6IC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIGxpbmUgMjogaWdub3JpbmcgYmFkIGxpbmUgc3RhcnRpbmcgd2l0aCAncmVtb3ZlJworRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCisjIENvbXBsZXRlIGp1bmsKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCitjb21wbGV0ZSBqdW5rIGFuZCBzdHVmZgorcnViYmlzaAorRU9GCisKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIldBUk5JTkc6IC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIGxpbmUgMTogaWdub3JpbmcgYmFkIGxpbmUgc3RhcnRpbmcgd2l0aCAnY29tcGxldGUnCitXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDI6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ3J1YmJpc2gnCitGQVRBTDogTW9kdWxlIGZvbyBub3QgZm91bmQuIiBdCisKKyMgTGluZSBudW1iZXJpbmcgY291bnRlZCBjb3JyZWN0bHkuCitlY2hvICIjY29tbWVudCIgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorZWNobyAicmVtb3ZlIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDI6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ3JlbW92ZScKK0ZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworZWNobyAiIiA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJyZW1vdmUiID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCisKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIldBUk5JTkc6IC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIGxpbmUgMjogaWdub3JpbmcgYmFkIGxpbmUgc3RhcnRpbmcgd2l0aCAncmVtb3ZlJworRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCitlY2hvICIgICMgQ29tbWVudCIgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorZWNobyAicmVtb3ZlIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJXQVJOSU5HOiAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiBsaW5lIDI6IGlnbm9yaW5nIGJhZCBsaW5lIHN0YXJ0aW5nIHdpdGggJ3JlbW92ZScKK0ZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworZWNobyAiICAjIENvbW1lbnQgXFwiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIndpdGggbXVsdGlwbGUgbGluZXMiID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJyZW1vdmUiID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCisKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIldBUk5JTkc6IC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIGxpbmUgMzogaWdub3JpbmcgYmFkIGxpbmUgc3RhcnRpbmcgd2l0aCAncmVtb3ZlJworRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCitlY2hvICJyZW1vdmUgZm9vIFxcIiA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICIgIGJhciIgPj4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gInJlbW92ZSIgPj4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIldBUk5JTkc6IC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIGxpbmUgMzogaWdub3JpbmcgYmFkIGxpbmUgc3RhcnRpbmcgd2l0aCAncmVtb3ZlJworRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzEwYWxpYXMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xMGFsaWFzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM1YWJmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xMGFsaWFzLnNoCkBAIC0wLDAgKzEsNTYgQEAKKyMhIC9iaW4vc2gKKyMgVGVzdCBmb3IgbW9kdWxlcy5hbGlhcyB1c2FnZS4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIva2VybmVsCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL2FsaWFzL2FsaWFzLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSL2tlcm5lbAorCitTSVpFPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1MvYWxpYXMvYWxpYXMtJEJJVE5FU1Mua29gCisKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvYWxpYXMtJEJJVE5FU1Mua286IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUva2VybmVsL2Zvby5rbzoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK2NwIHRlc3RzL2RhdGEvJEJJVE5FU1MvY29tcGxleC9jb21wbGV4X2EtJEJJVE5FU1Mua28gJE1PRFVMRV9ESVIva2VybmVsL2Zvby5rbworU0laRTI9YHdjIC1jIDwgJE1PRFVMRV9ESVIva2VybmVsL2Zvby5rb2AKKworIyBTaG91bGRuJ3QgY29tcGxhaW4gaWYgY2FuJ3Qgb3BlbiBtb2R1bGVzLmFsaWFzCitbICJgbW9kcHJvYmUgYmFyIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGJhciBub3QgZm91bmQuIiBdCisKKyMgTm93LCBhbGlhcyBmb3VuZCBpbiBtb2R1bGVzLmFsaWFzIHdvcmtzLgorZWNobyAiYWxpYXMgYmFyIGFsaWFzLSRCSVRORVNTIiA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSAiIF0KKworIyBOb3JtYWwgYWxpYXMgc2hvdWxkIG92ZXJyaWRlIGl0LgorbWtkaXIgLXAgdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kCitlY2hvICdhbGlhcyBiYXIgZm9vJyA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitbICJgbW9kcHJvYmUgZm9vIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUyICIgXQorCisjIElmIHRoZXJlJ3MgYSByZWFsIG1vZHVsZSwgYWxpYXMgZnJvbSBtb2R1bGVzLmFsaWFzIG11c3QgTk9UIG92ZXJyaWRlLgorZWNobyAiYWxpYXMgZm9vIGFsaWFzLSRCSVRORVNTIiA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRTIgIiBdCisKKyMgSWYgdGhlcmUncyBhbiBpbnN0YWxsIGNvbW1hbmQsIG1vZHVsZXMuYWxpYXMgbXVzdCBub3Qgb3ZlcnJpZGUuCitlY2hvICdpbnN0YWxsIGJhciBlY2hvIGZvbycgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorWyAiYG1vZHByb2JlIGJhciAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIGZvbyIgXQorZWNobyAncmVtb3ZlIGJhciBlY2hvIGZvbyByZW1vdmUnID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSAtciBiYXIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBmb28gcmVtb3ZlIiBdCisKKyMgU2hvdWxkIGdhdGhlciB1cCBvcHRpb25zIGZyb20gb3RoZXIgYWxpYXMgbmFtZSBhcyB3ZWxsLgorZWNobyAiYWxpYXMgYmFyIGFsaWFzLSRCSVRORVNTIiA+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMKK2VjaG8gIm9wdGlvbnMgYmFyIG9wdGlvbjEiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIm9wdGlvbnMgYWxpYXMtJEJJVE5FU1Mgb3B0aW9uMiIgPj4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBvcHRpb24yIG9wdGlvbjEiIF0KKworIyBEdXBsaWNhdGVkIGFsaWFzOiBib3RoIGdldCBwcm9iZWQgKGVpdGhlciBvcmRlcikKK2VjaG8gImFsaWFzIGJhciBmb28iID4+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMKK09VVD0iYG1vZHByb2JlIGJhciAyPiYxYCIKKworWyAiJE9VVCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFIG9wdGlvbjIgb3B0aW9uMQorSU5JVF9NT0RVTEU6ICRTSVpFMiBvcHRpb24xIiBdIHx8IFsgIiRPVVQiID0gIklOSVRfTU9EVUxFOiAkU0laRTIgb3B0aW9uMQorSU5JVF9NT0RVTEU6ICRTSVpFIG9wdGlvbjIgb3B0aW9uMSIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTFzdHJpcHZlcnNpb25zLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTFzdHJpcHZlcnNpb25zLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFhZDc2ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xMXN0cmlwdmVyc2lvbnMuc2gKQEAgLTAsMCArMSw0OSBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IHRoZSB2ZXJzaW9uIHJlbW92YWwgY29kZQorCitzZWN0aW9uX2F0dHJpYnV0ZXMoKQoreworICAgIHJlYWRlbGYgLVcgLVMgIiQxIiB8IGN1dCAtZFxdIC1mMi0gfCBhd2sgJ3twcmludCAkMSAiICIgJDd9JyB8IGdyZXAgLXcgLS0gIiQyIgorfQorCitmb3IgRU5ESUFOIGluICRURVNUX0VORElBTjsgZG8KK2ZvciBCSVRORVNTIGluICRURVNUX0JJVFM7IGRvCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIFdlIG5lZWQgdG8gZHVtcCB0aGUgbW9kdWxlIHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBoYXMgY2hhbmdlZC4KK01PRFRFU1RfRFVNUF9JTklUPTEKK2V4cG9ydCBNT0RURVNUX0RVTVBfSU5JVAorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUyRFTkRJQU4vcmVuYW1lL3JlbmFtZS12ZXJzaW9uLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgU2V0IHVwIG1vZHVsZXMuZGVwIGZpbGUgKG5laXRoZXIgaGFzIGRlcGVuZGVuY2llcykuCitlY2hvICIjIEEgY29tbWVudCIgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorZWNobyAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL3JlbmFtZS12ZXJzaW9uLSRCSVRORVNTLmtvOiIgPj4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworIyBDaGVjayBpdCB3aXRob3V0IHJlbW92aW5nLgorWyAiYG1vZHByb2JlIHJlbmFtZS12ZXJzaW9uLSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK1sgImBzZWN0aW9uX2F0dHJpYnV0ZXMgdGVzdHMvdG1wL291dCBfX3ZlcnNpb25zYCIgPSAiX192ZXJzaW9ucyBBIiBdCitbICJgc2VjdGlvbl9hdHRyaWJ1dGVzIHRlc3RzL3RtcC9vdXQgX192ZXJtYWdpY2AiID0gIl9fdmVybWFnaWMgQSIgXQorCisjIE5vdyByZW1vdmUgdGhlbSAodHVybnMgb2ZmIEFMTE9DIGJpdCkKK1sgImBtb2Rwcm9iZSAtLWZvcmNlIHJlbmFtZS12ZXJzaW9uLSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK1sgImBzZWN0aW9uX2F0dHJpYnV0ZXMgdGVzdHMvdG1wL291dCBfX3ZlcnNpb25zYCIgPSAiX192ZXJzaW9ucyAwIiBdCitbICJgc2VjdGlvbl9hdHRyaWJ1dGVzIHRlc3RzL3RtcC9vdXQgX192ZXJtYWdpY2AiID0gIl9fdmVybWFnaWMgMCIgXQorCisjIE5vdyByZW1vdmUgdGhlbSBpbmRpdmlkdWFsbHkgaW5zdGVhZC4KK1sgImBtb2Rwcm9iZSAtLWZvcmNlLXZlcm1hZ2ljIHJlbmFtZS12ZXJzaW9uLSRCSVRORVNTIDI+IHRlc3RzL3RtcC9vdXRgIiA9ICIiIF0KK1sgImBzZWN0aW9uX2F0dHJpYnV0ZXMgdGVzdHMvdG1wL291dCBfX3ZlcnNpb25zYCIgPSAiX192ZXJzaW9ucyBBIiBdCitbICJgc2VjdGlvbl9hdHRyaWJ1dGVzIHRlc3RzL3RtcC9vdXQgX192ZXJtYWdpY2AiID0gIl9fdmVybWFnaWMgMCIgXQorWyAiYG1vZHByb2JlIC0tZm9yY2UtbW9kdmVyc2lvbiByZW5hbWUtdmVyc2lvbi0kQklUTkVTUyAyPiB0ZXN0cy90bXAvb3V0YCIgPSAiIiBdCitbICJgc2VjdGlvbl9hdHRyaWJ1dGVzIHRlc3RzL3RtcC9vdXQgX192ZXJzaW9uc2AiID0gIl9fdmVyc2lvbnMgMCIgXQorWyAiYHNlY3Rpb25fYXR0cmlidXRlcyB0ZXN0cy90bXAvb3V0IF9fdmVybWFnaWNgIiA9ICJfX3Zlcm1hZ2ljIEEiIF0KKworZG9uZQorZG9uZQorCitleGl0IDAKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzEyd2hpdGVzcGFjZS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzEyd2hpdGVzcGFjZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YTFkODE3Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTJ3aGl0ZXNwYWNlLnNoCkBAIC0wLDAgKzEsMjA0IEBACisjISAvYmluL3NoCisjIFRlc3QgZm9yIHNwYWNlcyBpbiBjb25maWd1cmF0aW9uIGZpbGVzOiBiYXNlZCBvbiAwNGNvbmZpZy5zaAorCitCSVRORVNTPTMyCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIFNpbXBsZSBkdW1wIG91dCB0ZXN0LgordG91Y2ggdGVzdHMvdG1wL2VtcHR5CitbICJgbW9kcHJvYmUgLUMgL2VtcHR5IC1jIDI+JjFgIiA9ICIiIF0KK1sgImBtb2Rwcm9iZSAtLWNvbmZpZyAvZW1wdHkgLS1zaG93Y29uZmlnIDI+JjFgIiA9ICIiIF0KKworIyBFeHBsaWNpdGx5IG1lbnRpb25lZCBjb25maWcgZmlsZXMgbXVzdCBleGlzdC4KK1sgImBtb2Rwcm9iZSAtQyBGSUxFLVdISUNILURPRVNOVC1FWElTVCBmb28gMj4mMWAiID0gIkZBVEFMOiBGYWlsZWQgdG8gb3BlbiBjb25maWcgZmlsZSBGSUxFLVdISUNILURPRVNOVC1FWElTVDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIgXQorCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK3RvdWNoICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK1sgImBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBDcmVhdGUgYSBzaW1wbGUgY29uZmlnIGZpbGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCisjIFZhcmlvdXMgYWxpYXNlcworYWxpYXMgICBhbGlhc190b19mb28gICBmb28KK2FsaWFzICAgYWxpYXNfdG9fYmFyICAgYmFyCithbGlhcyAgIGFsaWFzX3RvX2V4cG9ydF9kZXAtJEJJVE5FU1MgICBleHBvcnRfZGVwLSRCSVRORVNTCithbGlhcyAgIGFsaWFzX3RvX25vZXhwb3J0X2RlcC0kQklUTkVTUyAgIG5vZXhwb3J0X2RlcC0kQklUTkVTUworYWxpYXMgICBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAgIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTCithbGlhcyAgIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAgIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUworCisjIFZhcmlvdXMgb3B0aW9ucywgaW5jbHVkaW5nIG9wdGlvbnMgdG8gYWxpYXNlcy4KK29wdGlvbnMgICBhbGlhc190b19leHBvcnRfZGVwLSRCSVRORVNTICAgSSBhbSBhbGlhcyB0byBleHBvcnRfZGVwCitvcHRpb25zICAgZXhwb3J0X2RlcC0kQklUTkVTUyAgIEkgYW0gZXhwb3J0X2RlcAorb3B0aW9ucyAgIGFsaWFzX3RvX25vZXhwb3J0X2RlcC0kQklUTkVTUyAgIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfZGVwCitvcHRpb25zICAgbm9leHBvcnRfZGVwLSRCSVRORVNTICAgSSBhbSBub2V4cG9ydF9kZXAKK29wdGlvbnMgICBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAgIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfbm9kZXAKK29wdGlvbnMgICBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAgIEkgYW0gbm9leHBvcnRfbm9kZXAKK29wdGlvbnMgICBhbGlhc190b19ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgICBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X2RvdWJsZWRlcAorb3B0aW9ucyAgIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAgIEkgYW0gbm9leHBvcnRfZG91YmxlZGVwCisKKyMgSW5zdGFsbCBjb21tYW5kcworaW5zdGFsbCAgIGJhciAgIGVjaG8gSW5zdGFsbGluZyAgIGJhcgoraW5zdGFsbCAgIGZvbyAgIGVjaG8gSW5zdGFsbGluZyAgIGZvbworaW5zdGFsbCAgIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAgIGVjaG8gSW5zdGFsbGluZyAgIGV4cG9ydF9ub2RlcAorCisjIFJlbW92ZSBjb21tYW5kcworcmVtb3ZlICAgYmFyICAgZWNobyBSZW1vdmluZyAgIGJhcgorcmVtb3ZlICAgZm9vICAgZWNobyBSZW1vdmluZyAgIGZvbworcmVtb3ZlICAgZXhwb3J0X25vZGVwLSRCSVRORVNTICAgZWNobyBSZW1vdmluZyAgIGV4cG9ydF9ub2RlcAorRU9GCisKKyMgTm93IGNyZWF0ZSB0aGlzIGluY2x1ZGVkIGZpbGUKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS1pbmNsdWRlLmNvbmYgPDxFT0YKK2luc3RhbGwgICBiYXogICBlY2hvIEluc3RhbGxpbmcgICBiYXoKK3JlbW92ZSAgIGJheiAgIGVjaG8gUmVtb3ZpbmcgICBiYXoKKworYWxpYXMgICBhbGlhc190b19iYXogICBiYXoKK0VPRgorCisjIENyZWF0ZSBpbnB1dHMKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBOb3cgY3JlYXRlIG1vZHVsZXMuZGVwCitjYXQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA8PEVPRgorbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286Citub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286IGV4cG9ydF9kZXAtJEJJVE5FU1Mua28gZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOgorZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitFT0YKKworU0laRV9OT0VYUE9SVF9OT0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfRVhQT1JUX05PREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfTk9FWFBPUlRfREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfRVhQT1JUX0RFUD1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvYAorU0laRV9OT0VYUE9SVF9ET1VCTEVERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvYAorCisjIEVtcHR5IC9zeXMvbW9kdWxlLyBmb3IgaW5zdGFsbCBjb21tYW5kcworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKKworIyBUZXN0IGlnbm9yaW5nIGluc3RhbGwgY29tbWFuZHMuCitbICJgbW9kcHJvYmUgLS1pZ25vcmUtaW5zdGFsbCBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgIiBdCitbICJgbW9kcHJvYmUgLWkgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX05PREVQICIgXQorWyAiYG1vZHByb2JlIC1pIGZvbyAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBmb28gbm90IGZvdW5kLiIgXQorCisjIFRlc3QgaW5zdGFsbCBjb21tYW5kcyAoZmFrZSBtb2R1bGVzKQorWyAiYG1vZHByb2JlIGZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBmb28iIF0KK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgYmFyIiBdCitbICJgbW9kcHJvYmUgYmF6IDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyAgIGJheiIgXQorCisjIFRlc3QgaW5zdGFsbCBvZiBhIHdoYXQgaXMgYWxzbyBhIHJlYWwgbW9kdWxlLgorWyAiYG1vZHByb2JlIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAiIF0KKworIyBUZXN0IGluc3RhbGwgb2Ygd2hhdCBpcyBhbHNvIGEgcmVhbCBtb2R1bGUgdmlhIGRlcGVuZGVuY3kuCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyAgIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RFUCBJIGFtIG5vZXhwb3J0X2RlcCIgXQorCisjIFRlc3QgaWdub3JpbmcgaW5zdGFsbCBjb21tYW5kczogb25seSBlZmZlY3RzIGNvbW1hbmRsaW5lLgorWyAiYG1vZHByb2JlIC1pIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgSSBhbSBub2V4cG9ydF9kZXAiIF0KKworIyBUZXN0IG9wdGlvbnMKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQIEkgYW0gbm9leHBvcnRfbm9kZXAiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgSSBhbSBub2V4cG9ydF9ub2RlcCBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQIEkgYW0gbm9leHBvcnRfZGVwIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQIEkgYW0gbm9leHBvcnRfZGVwIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGV4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAiIF0KK1sgImBtb2Rwcm9iZSBleHBvcnRfZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyAgIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgSSBhbSBleHBvcnRfZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQIEkgYW0gbm9leHBvcnRfZG91YmxlZGVwIiBdCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ET1VCTEVERVAgSSBhbSBub2V4cG9ydF9kb3VibGVkZXAgT1BUSU9OUyIgXQorCisjIFRlc3QgYWxpYXNlcyBkb2luZyBpbnNlcnRpb24uCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCBJIGFtIG5vZXhwb3J0X25vZGVwIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfbm9kZXAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19ub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgSSBhbSBub2V4cG9ydF9ub2RlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X25vZGVwIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgSSBhbSBub2V4cG9ydF9kZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9kZXAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19ub2V4cG9ydF9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgSSBhbSBub2V4cG9ydF9kZXAgSSBhbSBhbGlhcyB0byBub2V4cG9ydF9kZXAgT1BUSU9OUyIgXQorCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcCBJIGFtIGFsaWFzIHRvIGV4cG9ydF9kZXAiIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19leHBvcnRfZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgZXhwb3J0X25vZGVwCitJTklUX01PRFVMRTogJFNJWkVfRVhQT1JUX0RFUCBJIGFtIGV4cG9ydF9kZXAgSSBhbSBhbGlhcyB0byBleHBvcnRfZGVwIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RPVUJMRURFUCBJIGFtIG5vZXhwb3J0X2RvdWJsZWRlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X2RvdWJsZWRlcCIgXQorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBleHBvcnRfbm9kZXAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfREVQIEkgYW0gZXhwb3J0X2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX0RPVUJMRURFUCBJIGFtIG5vZXhwb3J0X2RvdWJsZWRlcCBJIGFtIGFsaWFzIHRvIG5vZXhwb3J0X2RvdWJsZWRlcCIgXQorWyAiYG1vZHByb2JlIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyAgIGV4cG9ydF9ub2RlcAorSU5JVF9NT0RVTEU6ICRTSVpFX0VYUE9SVF9ERVAgSSBhbSBleHBvcnRfZGVwCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfRE9VQkxFREVQIEkgYW0gbm9leHBvcnRfZG91YmxlZGVwIEkgYW0gYWxpYXMgdG8gbm9leHBvcnRfZG91YmxlZGVwIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIGFsaWFzX3RvX2ZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIEluc3RhbGxpbmcgICBmb28iIF0KK1sgImBtb2Rwcm9iZSBhbGlhc190b19iYXIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBJbnN0YWxsaW5nICAgYmFyIiBdCitbICJgbW9kcHJvYmUgYWxpYXNfdG9fYmF6IDI+JjFgIiA9ICJTWVNURU06IGVjaG8gSW5zdGFsbGluZyAgIGJheiIgXQorCisjIFBvcHVsYXRlIC9zeXMvbW9kdWxlLyBmb3IgcmVtb3ZlIGNvbW1hbmRzCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUworZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorCisjIFRlc3QgaWdub3JpbmcgcmVtb3ZlIGNvbW1hbmRzLgorCitbICJgbW9kcHJvYmUgLXIgLS1pZ25vcmUtcmVtb3ZlIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgLWkgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBleHBvcnRfbm9kZXBfJEJJVE5FU1MgRVhDTCAiIF0KK1sgImBtb2Rwcm9iZSAtaSAtciBmb28gMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgZm9vIG5vdCBmb3VuZC4iIF0KKworIyBUZXN0IHJlbW92ZSBjb21tYW5kcyAoZmFrZSBtb2R1bGVzKQorWyAiYG1vZHByb2JlIC1yIGZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nICAgZm9vIiBdCitbICJgbW9kcHJvYmUgLXIgYmFyIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gUmVtb3ZpbmcgICBiYXIiIF0KK1sgImBtb2Rwcm9iZSAtciBiYXogMj4mMWAiID0gIlNZU1RFTTogZWNobyBSZW1vdmluZyAgIGJheiIgXQorCisjIFRlc3QgcmVtb3ZlIG9mIGEgd2hhdCBpcyBhbHNvIGEgcmVhbCBtb2R1bGUuCitbICJgbW9kcHJvYmUgLXIgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gUmVtb3ZpbmcgICBleHBvcnRfbm9kZXAiIF0KKworIyBUZXN0IHJlbW92ZSBvZiB3aGF0IGlzIGFsc28gYSByZWFsIG1vZHVsZSB2aWEgZGVwZW5kZW5jeS4KK1sgImBtb2Rwcm9iZSAtciBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X2RlcF8kQklUTkVTUyBFWENMIAorU1lTVEVNOiBlY2hvIFJlbW92aW5nICAgZXhwb3J0X25vZGVwIiBdCisKKyMgVGVzdCBpZ25vcmluZyByZW1vdmUgY29tbWFuZHM6IG9ubHkgZWZmZWN0cyBjb21tYW5kbGluZS4KK1sgImBtb2Rwcm9iZSAtciAtaSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X2RlcF8kQklUTkVTUyBFWENMIAorU1lTVEVNOiBlY2hvIFJlbW92aW5nICAgZXhwb3J0X25vZGVwIiBdCisKKyMgVGVzdCBhbGlhc2VzIGRvaW5nIHJlbW92YWwuCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK1NZU1RFTTogZWNobyBSZW1vdmluZyAgIGV4cG9ydF9ub2RlcCIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IGV4cG9ydF9kZXBfJEJJVE5FU1MgRVhDTCAKK1NZU1RFTTogZWNobyBSZW1vdmluZyAgIGV4cG9ydF9ub2RlcCIgXQorWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiREVMRVRFX01PRFVMRTogbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTIEVYQ0wgCitERUxFVEVfTU9EVUxFOiBleHBvcnRfZGVwXyRCSVRORVNTIEVYQ0wgCitTWVNURU06IGVjaG8gUmVtb3ZpbmcgICBleHBvcnRfbm9kZXAiIF0KKworWyAiYG1vZHByb2JlIC1yIGFsaWFzX3RvX2ZvbyAyPiYxYCIgPSAiU1lTVEVNOiBlY2hvIFJlbW92aW5nICAgZm9vIiBdCitbICJgbW9kcHJvYmUgLXIgYWxpYXNfdG9fYmFyIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gUmVtb3ZpbmcgICBiYXIiIF0KK1sgImBtb2Rwcm9iZSAtciBhbGlhc190b19iYXogMj4mMWAiID0gIlNZU1RFTTogZWNobyBSZW1vdmluZyAgIGJheiIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTNkcnlydW4uc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xM2RyeXJ1bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNDU1MmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTNkcnlydW4uc2gKQEAgLTAsMCArMSw4MSBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IG1vZHVsZSBkZXBlbmRlbmNpZXMuCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgTm93IGNyZWF0ZSBtb2R1bGVzLmRlcAorY2F0ID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPDxFT0YKKyMgU2hvdWxkIGhhbmRsZSBjb21tZW50cy4KK25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOgorbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfZGVwLSRCSVRORVNTLmtvIGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworRU9GCisKK1sgImBtb2Rwcm9iZSAtdiAtbiBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBPUFRJT05TIDI+JjFgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIC12IC1uIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLXYgLW4gZXhwb3J0X25vZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIC12IC1uIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiBub2V4cG9ydF9kZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBPUFRJT05TIiBdCisKK1sgImBtb2Rwcm9iZSAtdiAtbiBleHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiBleHBvcnRfZGVwLSRCSVRORVNTIE9QVElPTlMgMj4mMWAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIAoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfZGVwLSRCSVRORVNTLmtvIE9QVElPTlMiIF0KKworWyAiYG1vZHByb2JlIC12IC1uIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgT1BUSU9OUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBPUFRJT05TIiBdCisKKyMgVGVzdCBhbGlhcyBhbmQgb3B0aW9ucyByZXNvbHV0aW9uCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2VjaG8gImFsaWFzIGZvbyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gIm9wdGlvbnMgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIE9QVElPTlMiID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitbICJgbW9kcHJvYmUgLXYgLW4gZm9vIDI+JjFgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIE9QVElPTlMiIF0KKworIyBOb3cgbWFrZSBhIGZha2UgL3N5cy9tb2R1bGUgc3RydWN0dXJlIGZvciB0aGUgdGVzdAorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZG91YmxlZGVwXyRCSVRORVNTCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9ub2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCitlY2hvIGxpdmUgPiB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKKyMgUmVtb3ZhbAorWyAiYG1vZHByb2JlIC12IC1uIC1yIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJybW1vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiAtciBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gInJtbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiAtciBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gInJtbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28KK3JtbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KK1sgImBtb2Rwcm9iZSAtdiAtbiAtciBleHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJybW1vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbworcm1tb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorWyAiYG1vZHByb2JlIC12IC1uIC1yIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyAyPiYxYCIgPSAicm1tb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbworcm1tb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28KK3JtbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE1ZW52LnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTVlbnYuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDYxZTM0YQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE1ZW52LnNoCkBAIC0wLDAgKzEsNTYgQEAKKyMhIC9iaW4vc2gKKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIE5vdyBjcmVhdGUgbW9kdWxlcy5kZXAgYW5kIG1vZHVsZXMuY29uZgorZWNobyAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286ID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKKworbWtkaXIgLXAgdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kCitlY2hvIGluc3RhbGwgZm9vIG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK2VjaG8gaW5zdGFsbCBmb28gbW9kcHJvYmUgYmFyID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZTIuY29uZgorZWNobyBpbnN0YWxsIGJhciBlY2hvIERPSU5HIEJBUiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlMi5jb25mCisKK1NJWkVfTk9FWFBPUlRfTk9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua29gCisKKyMgVGVzdCBub3JtYWwgYXJncywgdGhlbiBpbiBlbnYuCitbICJgbW9kcHJvYmUgLXYgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgTU9EUFJPQkVfT1BUSU9OUz0tdiBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCAiIF0KKworWyAiYG1vZHByb2JlIC1xIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfTk9ERVAgIiBdCitbICJgTU9EUFJPQkVfT1BUSU9OUz0tcSBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFX05PRVhQT1JUX05PREVQICIgXQorCitbICJgbW9kcHJvYmUgLW4gbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIiIgXQorWyAiYE1PRFBST0JFX09QVElPTlM9LW4gbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIiIgXQorCitbICJgbW9kcHJvYmUgLW4gLXYgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgTU9EUFJPQkVfT1BUSU9OUz0iLW4gLXYiIG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvICIgXQorCisjIFRlc3QgYXJndW1lbnQgaW5oZXJpdGVuY2UuCitNT0RURVNUX0RPX1NZU1RFTT0xCitleHBvcnQgTU9EVEVTVF9ET19TWVNURU0KKworWyAiYG1vZHByb2JlIC12IGZvbyAyPiYxYCIgPSAiaW5zdGFsbCBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUworaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCAiIF0KK1sgImBNT0RQUk9CRV9PUFRJT05TPS12IG1vZHByb2JlIGZvbyAyPiYxYCIgPSAiaW5zdGFsbCBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUworaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9OT0RFUCAiIF0KKworWyAiYG1vZHByb2JlIC1DIC9ldGMvbW9kcHJvYmUyLmNvbmYgZm9vIDI+JjFgIiA9ICJET0lORyBCQVIiIF0KK1sgImBNT0RQUk9CRV9PUFRJT05TPSctQyAvZXRjL21vZHByb2JlMi5jb25mJyBtb2Rwcm9iZSBmb28gMj4mMWAiID0gIkRPSU5HIEJBUiIgXQorCitbICJgbW9kcHJvYmUgLUMgL2V0Yy9tb2Rwcm9iZTIuY29uZiAtdiBmb28gMj4mMWAiID0gImluc3RhbGwgbW9kcHJvYmUgYmFyCitpbnN0YWxsIGVjaG8gRE9JTkcgQkFSCitET0lORyBCQVIiIF0KK1sgImBNT0RQUk9CRV9PUFRJT05TPSctQyAvZXRjL21vZHByb2JlMi5jb25mJyBtb2Rwcm9iZSAtdiBmb28gMj4mMWAiID0gImluc3RhbGwgbW9kcHJvYmUgYmFyCitpbnN0YWxsIGVjaG8gRE9JTkcgQkFSCitET0lORyBCQVIiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE2c2hvd2RlcGVuZHMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xNnNob3dkZXBlbmRzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFkN2IwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xNnNob3dkZXBlbmRzLnNoCkBAIC0wLDAgKzEsMTEzIEBACisjISAvYmluL3NoCisjIFRlc3QgLS1zaG93LWRlcGVuZHMuCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgTm93IGNyZWF0ZSBtb2R1bGVzLmRlcAorY2F0ID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPDxFT0YKKyMgU2hvdWxkIGhhbmRsZSBjb21tZW50cy4KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua286IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfZGVwLSRCSVRORVNTLmtvIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua286IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CisvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworRU9GCisKK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvICIgXQorWyAiYG1vZHByb2JlIC0tc2hvdy1kZXBlbmRzIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBleHBvcnRfZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIAoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfZGVwLSRCSVRORVNTLmtvIAoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28gIiBdCisKKyMgTm90aGluZyBpbiBzdGRlcnIuLi4KK1sgYHdjIC1jIDwgdGVzdHMvdG1wL3N0ZGVycmAgPSAwIF0KKworIyBBbGwgaW4gL3N5cy9tb2R1bGUvOyBzaG91bGQgbWFrZSBubyBkaWZmZXJlbmNlLgorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIAoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyAKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvICIgXQorCisjIE5vdGhpbmcgaW4gc3RkZXJyLi4uCitbIGB3YyAtYyA8IHRlc3RzL3RtcC9zdGRlcnJgID0gMCBdCisKKyMgTW9kdWxlIGNvbW1hbmRzIHByaW50ZWQsIGlnbm9yZWQuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCitpbnN0YWxsIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIGVjaG8gbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MKK2luc3RhbGwgZXhwb3J0X25vZGVwLSRCSVRORVNTIGVjaG8gZXhwb3J0X25vZGVwLSRCSVRORVNTCitpbnN0YWxsIG5vZXhwb3J0X2RlcC0kQklUTkVTUyBlY2hvIG5vZXhwb3J0X2RlcC0kQklUTkVTUworaW5zdGFsbCBleHBvcnRfZGVwLSRCSVRORVNTIGVjaG8gZXhwb3J0X2RlcC0kQklUTkVTUworaW5zdGFsbCBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgZWNobyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MKK0VPRgorCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc3RhbGwgZWNobyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyIgXQorWyAiYG1vZHByb2JlIC0tc2hvdy1kZXBlbmRzIGV4cG9ydF9ub2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zdGFsbCBlY2hvIGV4cG9ydF9ub2RlcC0kQklUTkVTUyIgXQorWyAiYG1vZHByb2JlIC0tc2hvdy1kZXBlbmRzIG5vZXhwb3J0X2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zdGFsbCBlY2hvIGV4cG9ydF9ub2RlcC0kQklUTkVTUworaW5zdGFsbCBlY2hvIG5vZXhwb3J0X2RlcC0kQklUTkVTUyIgXQorWyAiYG1vZHByb2JlIC0tc2hvdy1kZXBlbmRzIGV4cG9ydF9kZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc3RhbGwgZWNobyBleHBvcnRfbm9kZXAtJEJJVE5FU1MKK2luc3RhbGwgZWNobyBleHBvcnRfZGVwLSRCSVRORVNTIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnN0YWxsIGVjaG8gZXhwb3J0X25vZGVwLSRCSVRORVNTCitpbnN0YWxsIGVjaG8gZXhwb3J0X2RlcC0kQklUTkVTUworaW5zdGFsbCBlY2hvIG5vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUyIgXQorIyBOb3RoaW5nIGluIHN0ZGVyci4uLgorWyBgd2MgLWMgPCB0ZXN0cy90bXAvc3RkZXJyYCA9IDAgXQorCisjIE1vZHVsZSBvcHRpb25zIHByaW50ZWQuCitjYXQgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiA8PEVPRgorb3B0aW9ucyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBvcHQxCitvcHRpb25zIGV4cG9ydF9ub2RlcC0kQklUTkVTUyBvcHQyCitvcHRpb25zIG5vZXhwb3J0X2RlcC0kQklUTkVTUyBvcHQzCitvcHRpb25zIGV4cG9ydF9kZXAtJEJJVE5FU1Mgb3B0NAorb3B0aW9ucyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mgb3B0NQorRU9GCisKK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBvcHQxIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBvcHQyIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+PnRlc3RzL3RtcC9zdGRlcnJgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBvcHQyCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBvcHQzIiBdCitbICJgbW9kcHJvYmUgLS1zaG93LWRlcGVuZHMgZXhwb3J0X2RlcC0kQklUTkVTUyAyPj50ZXN0cy90bXAvc3RkZXJyYCIgPSAiaW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gb3B0MgoraW5zbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9leHBvcnRfZGVwLSRCSVRORVNTLmtvIG9wdDQiIF0KK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1MgMj4+dGVzdHMvdG1wL3N0ZGVycmAiID0gImluc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIG9wdDIKK2luc21vZCAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBvcHQ0CitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBvcHQ1IiBdCisjIE5vdGhpbmcgaW4gc3RkZXJyLi4uCitbIGB3YyAtYyA8IHRlc3RzL3RtcC9zdGRlcnJgID0gMCBdCisKKyMgVmlhIGFsaWFzZXMgd29ya3MuCitjYXQgPiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiA8PEVPRgorb3B0aW9ucyBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBvcHQxCithbGlhcyBmb28gbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MKK29wdGlvbnMgZm9vIGZvb29wdAorRU9GCisKK1sgImBtb2Rwcm9iZSAtLXNob3ctZGVwZW5kcyBmb29gIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIG9wdDEgZm9vb3B0IiBdCisjIE5vdGhpbmcgaW4gc3RkZXJyLi4uCitbIGB3YyAtYyA8IHRlc3RzL3RtcC9zdGRlcnJgID0gMCBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xN2NvbXByZXNzZWQuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xN2NvbXByZXNzZWQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGE5MjAzNgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE3Y29tcHJlc3NlZC5zaApAQCAtMCwwICsxLDM3IEBACisjISAvYmluL3NoCisjIFRlc3QgY29tcHJlc3NlZCBtb2R1bGVzLgorCitbIC1uICIkQ09ORklHX0hBVkVfWkxJQiIgXSB8fCBleGl0IDAKKworZm9yIEVORElBTiBpbiAkVEVTVF9FTkRJQU47IGRvCitmb3IgQklUTkVTUyBpbiAkVEVTVF9CSVRTOyBkbworCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDb3B5IG1vZHVsZXMgaW5zdGVhZCBvZiBsaW5raW5nLCBzbyB3ZSBjYW4gY29tcHJlc3MgdGhlbQorTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitjcCB0ZXN0cy9kYXRhLyRCSVRORVNTJEVORElBTi9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworZ3ppcCAkTU9EVUxFX0RJUi9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworCisjIFNldCB1cCBtb2R1bGVzLmRlcCBmaWxlLgorZWNobyAiIyBBIGNvbW1lbnQiID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rby5nejoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK1NJWkU9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua29gCisKKyMgTm8gYXJncworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgIiBdCisKKyMgV2l0aCBhcmdzCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUgZm9vPVwiYmFyIGJhelwiIiBdCisKKyMgQ2hlY2sgdW5kZXJzY29yZSBlcXVpdmFsZW5jZS4KK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcC0kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydC1ub2RlcF8kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSBmb289XCJiYXIgYmF6XCIiIF0KKworZG9uZQorZG9uZQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMThtdWx0aXJlbW92ZS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE4bXVsdGlyZW1vdmUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjk2NTM2ZAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzE4bXVsdGlyZW1vdmUuc2gKQEAgLTAsMCArMSw0MyBAQAorIyEgL2Jpbi9zaAorIyBtb2Rwcm9iZSAtciBzdXBwb3J0cyBtdWx0aXBsZSBtb2R1bGUgbmFtZXMgbm93LgorCitCSVRORVNTPTMyCisKK3JtIC1yZiB0ZXN0cy90bXAvKgorCisjIENyZWF0ZSBpbnB1dHMKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUgorCisjIE5vdyBjcmVhdGUgbW9kdWxlcy5kZXAKK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwIDw8RU9GCisjIFNob3VsZCBoYW5kbGUgY29tbWVudHMuCitub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoKK25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbzogZXhwb3J0X2RlcC0kQklUTkVTUy5rbyBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitleHBvcnRfZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KK0VPRgorCisjIE5vdyBtYWtlIGEgZmFrZSAvc3lzL21vZHVsZSBzdHJ1Y3R1cmUgZm9yIHRoZSB0ZXN0Citta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZQorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUy9pbml0c3RhdGUKKworIyBSZW1vdmFsCitbICJgbW9kcHJvYmUgLXIgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJERUxFVEVfTU9EVUxFOiBub2V4cG9ydF9ub2RlcF8kQklUTkVTUyBFWENMIAorREVMRVRFX01PRFVMRTogZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8xOXF1aWV0LnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTlxdWlldC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYTk2NTgwCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMTlxdWlldC5zaApAQCAtMCwwICsxLDc5IEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAgZmlsZS4KK2VjaG8gIiMgQSBjb21tZW50IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICJub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICJib2d1cy0kQklUTkVTUy5rbzoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK21rZGlyIC1wIHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZAorZWNobyAiaW5zdGFsbCBzb21lLWNvbW1hbmQgbW9kcHJvYmUgY3JhcCAmJiBlY2hvIFNVQ0NFU1MiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYgCitlY2hvICJyZW1vdmUgc29tZS1jb21tYW5kIG1vZHByb2JlIC1yIGNyYXAgJiYgZWNobyBTVUNDRVNTIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiAKK2VjaG8gImFsaWFzIGZvb2JhciBjcmFwIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZiAKKworU0laRT1gd2MgLWMgPCB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKKworIyAtcSB3b3JrcyBhcyBub3JtYWwuCitbICJgbW9kcHJvYmUgLXEgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRSAiIF0KKworIyAtcSBvbiBub24tZXhpc3RlbnQgZmFpbCwgcXVpZXRseS4KK1sgImBtb2Rwcm9iZSAtcSBjcmFwIDI+JjFgIiA9ICIiIF0KK2lmIG1vZHByb2JlIC1xIGNyYXA7IHRoZW4gZXhpdCAxOyBmaQorCisjIC1xIG9uIGFsaWFzIHRvIG5vbi1leGlzdGVudCBzdWNjZWVkcywgcXVpZXRseS4KK1sgImBtb2Rwcm9iZSAtcSBmb29iYXIgMj4mMWAiID0gIiIgXQoraWYgbW9kcHJvYmUgLXEgZm9vYmFyOyB0aGVuIGV4aXQgMTsgZmkKKworIyAtcSBvbiBzb21lIG90aGVyIHByb2JsZW0gZ2l2ZXMgZXJyb3JzLgorWyAiYG1vZHByb2JlIC1xIGJvZ3VzLSRCSVRORVNTIDI+JjFgIiAhPSAiIiBdCitpZiBtb2Rwcm9iZSAtcSBib2d1cy0kQklUTkVTUyAyPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGZpCisKK01PRFRFU1RfRE9fU1lTVEVNPTEKK2V4cG9ydCBNT0RURVNUX0RPX1NZU1RFTQorIyBOb3JtYWwgaW5zdGFsbCBjb21tYW5kIHdpbGwgZmFpbC4KK1sgImBtb2Rwcm9iZSBzb21lLWNvbW1hbmQgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgY3JhcCBub3QgZm91bmQuCitGQVRBTDogRXJyb3IgcnVubmluZyBpbnN0YWxsIGNvbW1hbmQgZm9yIHNvbWVfY29tbWFuZCIgXQoraWYgbW9kcHJvYmUgc29tZS1jb21tYW5kIDI+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZmkKKworIyAtcSBkb2Vzbid0IGNhdXNlICJtb2Rwcm9iZSBjcmFwIiB0byBzdWNjZWVkLCBidXQgaXMgcGFzc2VkIHRocm91Z2ggaW5zdGFsbC4KK1sgImBtb2Rwcm9iZSAtcSBzb21lLWNvbW1hbmQgMj4mMWAiID0gIkZBVEFMOiBFcnJvciBydW5uaW5nIGluc3RhbGwgY29tbWFuZCBmb3Igc29tZV9jb21tYW5kIiBdCitpZiBtb2Rwcm9iZSAtcSBzb21lLWNvbW1hbmQgMj4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBmaQorCisjIE5vdyBtYWtlIGEgZmFrZSAvc3lzL21vZHVsZSBzdHJ1Y3R1cmUgZm9yIHRoZSB0ZXN0Citta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZQorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RlcF8kQklUTkVTUworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfZGVwXyRCSVRORVNTCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9ub2V4cG9ydF9kb3VibGVkZXBfJEJJVE5FU1MKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvbm9leHBvcnRfZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X25vZGVwXyRCSVRORVNTL2luaXRzdGF0ZQorZWNobyBsaXZlID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKK2VjaG8gbGl2ZSA+IHRlc3RzL3RtcC9zeXMvbW9kdWxlL25vZXhwb3J0X2RvdWJsZWRlcF8kQklUTkVTUy9pbml0c3RhdGUKKworIyAtcSB3b3JrcyBhcyBub3JtYWwuCitbICJgbW9kcHJvYmUgLXIgLXEgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIkRFTEVURV9NT0RVTEU6IG5vZXhwb3J0X25vZGVwXyRCSVRORVNTIEVYQ0wgIiBdCisKKyMgLXEgb24gbm9uLWV4aXN0ZW50IG1vZHVsZSBmYWlscywgc2lsZW50bHkuCitbICJgbW9kcHJvYmUgLXIgLXEgY3JhcCAyPiYxYCIgPSAiIiBdCitpZiBtb2Rwcm9iZSAtciAtcSBjcmFwOyB0aGVuIGV4aXQgMTsgZmkKKworTU9EVEVTVF9ET19TWVNURU09MQorZXhwb3J0IE1PRFRFU1RfRE9fU1lTVEVNCisjIE5vcm1hbCByZW1vdmUgY29tbWFuZCB3aWxsIGZhaWwuCitbICJgbW9kcHJvYmUgLXIgc29tZS1jb21tYW5kIDI+JjFgIiA9ICJGQVRBTDogTW9kdWxlIGNyYXAgbm90IGZvdW5kLgorRkFUQUw6IEVycm9yIHJ1bm5pbmcgcmVtb3ZlIGNvbW1hbmQgZm9yIHNvbWVfY29tbWFuZCIgXQoraWYgbW9kcHJvYmUgLXIgc29tZS1jb21tYW5kIDI+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZmkKKworIyAtcSBkb2Vzbid0IGNhdXNlICJtb2Rwcm9iZSAtciBjcmFwIiB0byBzdWNjZWVkLCBidXQgc2lsZW5jZXMgaXQuCitbICJgbW9kcHJvYmUgLXIgLXEgc29tZS1jb21tYW5kIDI+JjFgIiA9ICJGQVRBTDogRXJyb3IgcnVubmluZyByZW1vdmUgY29tbWFuZCBmb3Igc29tZV9jb21tYW5kIiBdCitpZiBtb2Rwcm9iZSAtciAtcSBzb21lLWNvbW1hbmQgMj4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBmaQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMjBvbGRzdHlsZS5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIwb2xkc3R5bGUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWU4OThkYwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIwb2xkc3R5bGUuc2gKQEAgLTAsMCArMSw3MSBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IG9sZC1zdHlsZSBtb2R1bGUgY3JhcC4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIvZHJpdmVycy90eXBlCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICAkTU9EVUxFX0RJUi9kcml2ZXJzL3R5cGUKKworbWtkaXIgLXAgJE1PRFVMRV9ESVIvb3RoZXIvdHlwZQorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSL290aGVyL3R5cGUKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAgZmlsZS4KK2VjaG8gIiMgQSBjb21tZW50IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZHJpdmVycy90eXBlL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvOiIgPj4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9vdGhlci90eXBlL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbzoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCisKK1NJWkUxPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRTI9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorCisjIC1sIGxpc3RzIGFsbCBvZiB0aGVtIChlaXRoZXIgb3JkZXIpCitbICJgbW9kcHJvYmUgLWwgMj4mMWAiID0gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9kcml2ZXJzL3R5cGUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9vdGhlci90eXBlL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXSB8fAorWyAiYG1vZHByb2JlIC1sIDI+JjFgIiA9ICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvb3RoZXIvdHlwZS9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9kcml2ZXJzL3R5cGUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KKworIyAtbCAtdCBmb28gbGlzdHMgbm9uZSBvZiB0aGVtLgorWyAiYG1vZHByb2JlIC1sIC10IGZvbyAyPiYxYCIgPSAiIiBdCisKKyMgLWwgLXQgdHlwZSBsaXN0cyBhbGwgb2YgdGhlbSAoZWl0aGVyIG9yZGVyKQorWyAiYG1vZHByb2JlIC1sIC10IHR5cGUgMj4mMWAiID0gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9kcml2ZXJzL3R5cGUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28KKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9vdGhlci90eXBlL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXSB8fAorWyAiYG1vZHByb2JlIC1sIC10IHR5cGUgMj4mMWAiID0gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9vdGhlci90eXBlL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2RyaXZlcnMvdHlwZS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorCisjIC1sIC10IGRyaXZlcnMgbGlzdHMgb25lLgorWyAiYG1vZHByb2JlIC1sIC10IGRyaXZlcnMgMj4mMWAiID0gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9kcml2ZXJzL3R5cGUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28iIF0KKworIyAtbCAtdCBkcml2ZXJzL3R5cGUgbGlzdHMgb25lLgorWyAiYG1vZHByb2JlIC1sIC10IGRyaXZlcnMvdHlwZSAyPiYxYCIgPSAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2RyaXZlcnMvdHlwZS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorCisjIC1sIC10IG90aGVyIGxpc3RzIG9uZS4KK1sgImBtb2Rwcm9iZSAtbCAtdCBvdGhlciAyPiYxYCIgPSAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL290aGVyL3R5cGUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCisKKyMgLWwgLXQgb3RoZXIvdHlwZSBsaXN0cyBvbmUuCitbICJgbW9kcHJvYmUgLWwgLXQgb3RoZXIvdHlwZSAyPiYxYCIgPSAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL290aGVyL3R5cGUvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvIiBdCisKKyMgV2lsZGNhcmQgd29ya3MuCitbICJgbW9kcHJvYmUgLWwgLXQgdHlwZSAnbm9leHBvcnQtbm9kZXAqJyAyPiYxYCIgPSAiL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2RyaXZlcnMvdHlwZS9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyIgXQorCisjIC10IHR5cGUgd2l0aG91dCAtbCBub3Qgc3VwcG9ydGVkCittb2Rwcm9iZSAtdCB0eXBlIDI+JjEgfCBncmVwIC1xIFVzYWdlCittb2Rwcm9iZSAtYSAtdCB0eXBlIDI+JjEgfCBncmVwIC1xIFVzYWdlCisKKyMgLWEgd2l0aCBvbmUgYXJnIHN1Y2NlZWRzLgorWyAiYG1vZHByb2JlIC1hIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJJTklUX01PRFVMRTogJFNJWkUxICIgXQorIyAuLi4gZXZlbiB3aXRoIC0gYW5kIF8gY29uZnVzZWQuCitbICJgbW9kcHJvYmUgLWEgbm9leHBvcnQtbm9kZXBfJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRTEgIiBdCisKKyMgV2l0aCB0d28gYXJncyBzdWNjZWVkcy4KK1sgImBtb2Rwcm9iZSAtYSBub2V4cG9ydF9ub2RlcC0kQklUTkVTUyBleHBvcnRfbm9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRTEgCitJTklUX01PRFVMRTogJFNJWkUyICIgXQorCisjIERvZXMgc2Vjb25kIGV2ZW4gaWYgZmlyc3Qgc2NyZXdzIHVwLgorWyAiYG1vZHByb2JlIC1hIGNyYXAgZXhwb3J0X25vZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJXQVJOSU5HOiBNb2R1bGUgY3JhcCBub3QgZm91bmQuCitJTklUX01PRFVMRTogJFNJWkUyICIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3QtbW9kcHJvYmUvMjF3aWxkaW5zdGFsbC5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIxd2lsZGluc3RhbGwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMThiMTkxMwotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIxd2lsZGluc3RhbGwuc2gKQEAgLTAsMCArMSwzMyBAQAorIyEgL2Jpbi9zaAorIyBUZXN0IHdpbGRjYXJkIGluc3RhbGwvcmVtb3ZlIGNvbW1hbmRzLgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCit0b3VjaCAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorCitNT0RURVNUX0RPX1NZU1RFTT0xCitleHBvcnQgTU9EVEVTVF9ET19TWVNURU0KKworIyBDcmVhdGUgYSBzaW1wbGUgY29uZmlnIGZpbGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8RU9GCisjIFZhcmlvdXMgYWxpYXNlcworaW5zdGFsbCAqd2lsZGNhcmQtXyogZWNobyBpbnN0YWxsaW5nIFwkTU9EUFJPQkVfTU9EVUxFLgorcmVtb3ZlICp3aWxkY2FyZC1fKiBlY2hvIHJlbW92aW5nIFwkTU9EUFJPQkVfTU9EVUxFLgorRU9GCisKKyMgSW5zdGFsbC4uLgorWyAiYG1vZHByb2JlIHdpbGRjYXJkLV9hYWEgMj4mMWAiID0gImluc3RhbGxpbmcgd2lsZGNhcmRfX2FhYS4iIF0KK1sgImBtb2Rwcm9iZSB3aWxkY2FyZC1fIDI+JjFgIiA9ICJpbnN0YWxsaW5nIHdpbGRjYXJkX18uIiBdCitbICJgbW9kcHJvYmUgd2lsZGNhcmRfLSAyPiYxYCIgPSAiaW5zdGFsbGluZyB3aWxkY2FyZF9fLiIgXQorWyAiYG1vZHByb2JlIGFub3RoZXJ3aWxkY2FyZC1fIDI+JjFgIiA9ICJpbnN0YWxsaW5nIGFub3RoZXJ3aWxkY2FyZF9fLiIgXQorWyAiYG1vZHByb2JlIGFub3RoZXJ3aWxkY2FyZC1fYWFhIDI+JjFgIiA9ICJpbnN0YWxsaW5nIGFub3RoZXJ3aWxkY2FyZF9fYWFhLiIgXQorCisjIFJlbW92ZS4uLgorWyAiYG1vZHByb2JlIC1yIHdpbGRjYXJkLV9hYWEgMj4mMWAiID0gInJlbW92aW5nIHdpbGRjYXJkX19hYWEuIiBdCitbICJgbW9kcHJvYmUgLXIgd2lsZGNhcmQtXyAyPiYxYCIgPSAicmVtb3Zpbmcgd2lsZGNhcmRfXy4iIF0KK1sgImBtb2Rwcm9iZSAtciB3aWxkY2FyZF8tIDI+JjFgIiA9ICJyZW1vdmluZyB3aWxkY2FyZF9fLiIgXQorWyAiYG1vZHByb2JlIC1yIGFub3RoZXJ3aWxkY2FyZC1fIDI+JjFgIiA9ICJyZW1vdmluZyBhbm90aGVyd2lsZGNhcmRfXy4iIF0KK1sgImBtb2Rwcm9iZSAtciBhbm90aGVyd2lsZGNhcmQtX2FhYSAyPiYxYCIgPSAicmVtb3ZpbmcgYW5vdGhlcndpbGRjYXJkX19hYWEuIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yMnJlY3Vyc2l2ZWluc3RhbGwuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yMnJlY3Vyc2l2ZWluc3RhbGwuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTNiMGM2MAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIycmVjdXJzaXZlaW5zdGFsbC5zaApAQCAtMCwwICsxLDYxIEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKKyMgQ3JlYXRlIGlucHV0cworTU9EVUxFX0RJUj10ZXN0cy90bXAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSCisKKyMgTm93IGNyZWF0ZSBtb2R1bGVzLmRlcAorY2F0ID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5kZXAgPDxFT0YKK25vZXhwb3J0X2RlcC0kQklUTkVTUy5rbzogZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvCitleHBvcnRfbm9kZXAtJEJJVE5FU1Mua286CitFT0YKKworIyBJbnNlcnRpb24KK1NJWkVfRVhQT1JUX05PREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rb2AKK1NJWkVfTk9FWFBPUlRfREVQPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL25vZXhwb3J0X2RlcC0kQklUTkVTUy5rb2AKKworIyBFbXB0eSAvc3lzL21vZHVsZS8KK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlCisKKyMgQ2hlY2sgaXQgcHVsbHMgaW4gYm90aC4KK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgCitJTklUX01PRFVMRTogJFNJWkVfTk9FWFBPUlRfREVQICIgXQorCisjIENoZWNrIGl0J3MgaGFwcHkgaWYgd2UgdGVsbCBpdCBkZXAgaXMgYWxyZWFkeSBpbnN0YWxsZWQKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK2VjaG8gImxpdmUiID50ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgIiBdCisKKyMgSWYgdGhlcmUncyBhbiBpbnN0YWxsIGNvbW1hbmQsIGl0IHdpbGwgYmUgZG9uZS4KKyMgQ2xlYW4gdXAgc3lzZnMgKHNvIHdlIGRvbid0IHRoaW5rIGl0J3MgbG9hZGVkKQorcm0gLXJmIHRlc3RzL3RtcC9zeXMvbW9kdWxlLyoKKworbWtkaXIgLXAgdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kCitlY2hvICJpbnN0YWxsIGV4cG9ydF9ub2RlcC0kQklUTkVTUyBDT01NQU5EIiA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitbICJgbW9kcHJvYmUgbm9leHBvcnRfZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJTWVNURU06IENPTU1BTkQKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgIiBdCisKKyMgSWYgaXQncyBpbiAvc3lzL21vZHVsZSwgaW5zdGFsbCBjb21tYW5kIFdPTlQgYmUgZG9uZS4KK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlCitta2RpciAtcCB0ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MKK2VjaG8gImxpdmUiID50ZXN0cy90bXAvc3lzL21vZHVsZS9leHBvcnRfbm9kZXBfJEJJVE5FU1MvaW5pdHN0YXRlCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ERVAgIiBdCisKKyMgRG8gZGVwZW5kZW5jaWVzIGV2ZW4gaWYgaW5zdGFsbCBjb21tYW5kLgorIyBjbGVhbiB1cCBzeXNmcyAoc28gd2UgZG9uJ3QgdGhpbmsgaXQncyBsb2FkZWQpCitybSAtcmYgdGVzdHMvdG1wL3N5cy9tb2R1bGUvKgorCitlY2hvICJpbnN0YWxsIG5vZXhwb3J0X2RlcC0kQklUTkVTUyBDT01NQU5EIiA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCisKK1sgImBtb2Rwcm9iZSBub2V4cG9ydF9kZXAtJEJJVE5FU1MgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgCitTWVNURU06IENPTU1BTkQiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzIzcmVjdXJzaXZlLWRlcHMuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yM3JlY3Vyc2l2ZS1kZXBzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY0MjVlOWIKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yM3JlY3Vyc2l2ZS1kZXBzLnNoCkBAIC0wLDAgKzEsMzggQEAKKyMhIC9iaW4vc2gKKworIyBJZiBBIGRlcGVuZHMgb24gQiBhbmQgQywgYW5kIEIgaXMgaW5zdGFsbGVkLCBDIHN0aWxsIG5lZWRzIHRvIGJlIGluc3RhbGxlZCEKKyMgKEJ1ZyBpbiAzLjAtcHJlNiAmIDMuMC1wcmU3KS4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIKK2xuIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9kZXAtJEJJVE5FU1Mua28gXAorICAgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZGVwLSRCSVRORVNTLmtvIFwKKyAgIHRlc3RzL2RhdGEvJEJJVE5FU1Mvbm9ybWFsL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyBcCisgICB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9kb3VibGVkZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBOb3cgY3JlYXRlIG1vZHVsZXMuZGVwCitjYXQgPiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcCA8PEVPRgorIyBTaG91bGQgaGFuZGxlIGNvbW1lbnRzLgorbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvOiBleHBvcnRfZGVwLSRCSVRORVNTLmtvIGV4cG9ydF9ub2RlcC0kQklUTkVTUy5rbworRU9GCisKKyMgTm93LCBleHBvcnQtZGVwIGlzIGluIC9zeXMvbW9kdWxlIChhY3R1YWxseSB0aGlzIGNhbid0IGhhcHBlbiwgc2luY2UgaXQKKyMgZGVwZW5kcyBvbiBleHBvcnRfbm9kZXAsIGJ1dCB0aGlzIGlzIHRvIHRlc3QpLgorbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKK21rZGlyIC1wIHRlc3RzL3RtcC9zeXMvbW9kdWxlL2V4cG9ydF9kZXBfJEJJVE5FU1MKK2VjaG8gImxpdmUiID4gdGVzdHMvdG1wL3N5cy9tb2R1bGUvZXhwb3J0X2RlcF8kQklUTkVTUy9pbml0c3RhdGUKKworU0laRV9FWFBPUlRfTk9ERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvZXhwb3J0X25vZGVwLSRCSVRORVNTLmtvYAorU0laRV9OT0VYUE9SVF9ET1VCTEVERVA9YHdjIC1jIDwgdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTLmtvYAorCitbICJgbW9kcHJvYmUgLXYgbm9leHBvcnRfZG91YmxlZGVwLSRCSVRORVNTIDI+JjFgIiA9ICJpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAKK0lOSVRfTU9EVUxFOiAkU0laRV9FWFBPUlRfTk9ERVAgCitpbnNtb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL25vZXhwb3J0X2RvdWJsZWRlcC0kQklUTkVTUy5rbyAKK0lOSVRfTU9EVUxFOiAkU0laRV9OT0VYUE9SVF9ET1VCTEVERVAgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yNmJsYWNrbGlzdC5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzI2YmxhY2tsaXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ4MmVlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yNmJsYWNrbGlzdC5zaApAQCAtMCwwICsxLDQzIEBACisjISAvYmluL3NoCisjIFRlc3QgZm9yIGJsYWNrbGlzdCB1c2FnZS4KKworQklUTkVTUz0zMgorCitybSAtcmYgdGVzdHMvdG1wLyoKKworIyBDcmVhdGUgaW5wdXRzCitNT0RVTEVfRElSPXRlc3RzL3RtcC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRQorbWtkaXIgLXAgJE1PRFVMRV9ESVIva2VybmVsCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL2FsaWFzL2FsaWFzLSRCSVRORVNTLmtvIFwKKyAgICRNT0RVTEVfRElSL2tlcm5lbAorCitTSVpFPWB3YyAtYyA8IHRlc3RzL2RhdGEvJEJJVE5FU1MvYWxpYXMvYWxpYXMtJEJJVE5FU1Mua29gCisKK2VjaG8gIi9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvYWxpYXMtJEJJVE5FU1Mua286IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUva2VybmVsL2Zvby5rbzoiID4+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitjcCB0ZXN0cy9kYXRhLyRCSVRORVNTL2NvbXBsZXgvY29tcGxleF9hLSRCSVRORVNTLmtvICRNT0RVTEVfRElSL2tlcm5lbC9mb28ua28KK1NJWkUyPWB3YyAtYyA8ICRNT0RVTEVfRElSL2tlcm5lbC9mb28ua29gCisKKyMgRmlyc3QsIGFsaWFzIGZvdW5kIGluIG1vZHVsZXMuYWxpYXMgd29ya3MuCitlY2hvICJhbGlhcyBiYXIgYWxpYXMtJEJJVE5FU1MiID4gJE1PRFVMRV9ESVIvbW9kdWxlcy5hbGlhcworWyAiYG1vZHByb2JlIGJhciAyPiYxYCIgPSAiSU5JVF9NT0RVTEU6ICRTSVpFICIgXQorCisjIEJsYWNrbGlzdCBtYWtlcyBpdCBmYWlsLgorbWtkaXIgLXAgdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kCitlY2hvICJibGFja2xpc3QgYWxpYXMtJEJJVE5FU1MiID4gdGVzdHMvdG1wL2V0Yy9tb2Rwcm9iZS5kL21vZHByb2JlLmNvbmYKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIkZBVEFMOiBNb2R1bGUgYmFyIG5vdCBmb3VuZC4iIF0KKworIyBCbGFja2xpc3QgZG9lc24ndCBlZmZlY3Qgb3RoZXIgYWxpYXNlcy4KK2VjaG8gImFsaWFzIGJhciBmb28iID4+ICRNT0RVTEVfRElSL21vZHVsZXMuYWxpYXMKK1sgImBtb2Rwcm9iZSBiYXIgMj4mMWAiID0gIklOSVRfTU9EVUxFOiAkU0laRTIgIiBdCisKKyMgQmxhY2tsaXN0IGJvdGguCitlY2hvICJibGFja2xpc3QgZm9vIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorWyAiYG1vZHByb2JlIGJhciAyPiYxYCIgPSAiRkFUQUw6IE1vZHVsZSBiYXIgbm90IGZvdW5kLiIgXQorCisjIFJlbW92ZSBibGFja2xpc3QsIGFsbCB3b3Jrcy4KK3JtIC1mIHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitSRVNVTFQ9ImBtb2Rwcm9iZSBiYXIgMj4mMWAiCitbICIkUkVTVUxUIiA9ICJJTklUX01PRFVMRTogJFNJWkUgCitJTklUX01PRFVMRTogJFNJWkUyICIgXSB8fCBbICIkUkVTVUxUIiA9ICJJTklUX01PRFVMRTogJFNJWkUyCitJTklUX01PRFVMRTogJFNJWkUgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yN2NtZGxpbmUtaW5zdGFsbC1yZW1vdmUuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yN2NtZGxpbmUtaW5zdGFsbC1yZW1vdmUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTQxMTIyMgotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzI3Y21kbGluZS1pbnN0YWxsLXJlbW92ZS5zaApAQCAtMCwwICsxLDMzIEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCitta2RpciAtcCAkTU9EVUxFX0RJUgorbG4gdGVzdHMvZGF0YS8kQklUTkVTUy9ub3JtYWwvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua28gXAorICAgJE1PRFVMRV9ESVIKKworIyBTZXQgdXAgbW9kdWxlcy5kZXAgZmlsZS4KK2VjaG8gIiMgQSBjb21tZW50IiA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwCitlY2hvICIvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvbm9leHBvcnRfbm9kZXAtJEJJVE5FU1Mua286IiA+PiAkTU9EVUxFX0RJUi9tb2R1bGVzLmRlcAorCisjIFNldCB1cCBtb2Rwcm9iZS5jb25mIGZpbGU6IG9uZSBhdCBlbmQsIG9uZSB3aXRoIHRleHQgZWl0aGVyIHNpZGUuCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2VjaG8gIm9wdGlvbnMgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgZmlsZS1vcHRpb25zIiA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJpbnN0YWxsIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIG1vZHByb2JlIC0taWdub3JlLWluc3RhbGwgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgXCRDTURMSU5FX09QVFMiID4+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mCitlY2hvICJpbnN0YWxsIG90aGVydGFyZ2V0IGVjaG8gXCRDTURMSU5FX09QVFMgb3RoZXJvcHRzIiA+PiB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQvbW9kcHJvYmUuY29uZgorCisjIEVtcHR5IC9zeXMvbW9kdWxlLyBmb3IgaW5zdGFsbCBjb21tYW5kcworbWtkaXIgLXAgdGVzdHMvdG1wL3N5cy9tb2R1bGUKKworIyBXaXRoIHF1b3RlZCBhcmdzCitbICJgbW9kcHJvYmUgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgJ2Zvbz0iYmFyIGJheiInIDI+JjFgIiA9ICJTWVNURU06IG1vZHByb2JlIC0taWdub3JlLWluc3RhbGwgbm9leHBvcnRfbm9kZXAtJEJJVE5FU1MgZm9vPVwiYmFyIGJhelwiIiBdCisjIFdpdGggdW5xdW90ZWQgYXJncworWyAiYG1vZHByb2JlIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIGZvbz1cImJhciBiYXpcIiAyPiYxYCIgPSAiU1lTVEVNOiBtb2Rwcm9iZSAtLWlnbm9yZS1pbnN0YWxsIG5vZXhwb3J0X25vZGVwLSRCSVRORVNTIGZvbz1cImJhciBiYXpcIiIgXQorCisjIFNhbWUgd2l0aCBvdGhlciB0YXJnZXQuCitbICJgbW9kcHJvYmUgb3RoZXJ0YXJnZXQgJ2Zvbz0iYmFyIGJheiInIDI+JjFgIiA9ICJTWVNURU06IGVjaG8gZm9vPVwiYmFyIGJhelwiIG90aGVyb3B0cyIgXQorIyBXaXRoIHVucXVvdGVkIGFyZ3MKK1sgImBtb2Rwcm9iZSBvdGhlcnRhcmdldCBmb289XCJiYXIgYmF6XCIgMj4mMWAiID0gIlNZU1RFTTogZWNobyBmb289XCJiYXIgYmF6XCIgb3RoZXJvcHRzIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yOHNvZnRkZXAuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1tb2Rwcm9iZS8yOHNvZnRkZXAuc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0YTIxNAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LW1vZHByb2JlLzI4c29mdGRlcC5zaApAQCAtMCwwICsxLDY3IEBACisjISAvYmluL3NoCisKK0JJVE5FU1M9MzIKKworcm0gLXJmIHRlc3RzL3RtcC8qCisKK01PRFVMRV9ESVI9dGVzdHMvdG1wL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FCisKKyMgU2V0IHVwIG1vZHVsZXMKK21rZGlyIC1wICRNT0RVTEVfRElSCitsbiB0ZXN0cy9kYXRhLyRCSVRORVNTL25vcm1hbC9ub2V4cG9ydF9ub2RlcC0kQklUTkVTUy5rbyAkTU9EVUxFX0RJUi9hLmtvCitsbiAtcyBhLmtvICRNT0RVTEVfRElSL2Iua28KK2xuIC1zIGEua28gJE1PRFVMRV9ESVIvYy5rbworbG4gLXMgYS5rbyAkTU9EVUxFX0RJUi9kLmtvCitsbiAtcyBhLmtvICRNT0RVTEVfRElSL2Uua28KK2xuIC1zIGEua28gJE1PRFVMRV9ESVIvZi5rbworCisjIFNldCB1cCBkZXBlbmRlbmNpZXMKK2NhdCA+ICRNT0RVTEVfRElSL21vZHVsZXMuZGVwIDw8IEVPRgorL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2Eua286CisvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvYi5rbzoKKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9jLmtvOgorL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2Qua286CisvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUvZS5rbzoKKy9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9mLmtvOgorRU9GCisKKyMgVGVzdCBzb2Z0ZGVwcworCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8IEVPRgorYWxpYXMgYV9hbGlhcyBhCithbGlhcyBjX2FsaWFzIGMKK3NvZnRkZXAgYyBwcmU6IGFfYWxpYXMgYiBwb3N0OiBkIGUKK3NvZnRkZXAgZSBwb3N0OiBmCitzb2Z0ZGVwIGYgcHJlOiBhCitFT0YKKworIyBJbnNlcnQtdGVzdAorCitSMT1gbW9kcHJvYmUgLXYgY19hbGlhcyAyPiYxIHwgXAorCWdyZXAgLXYgSU5JVF9NT0RVTEVcOiB8IFwKKwlzZWQgLWUgInMvXC9saWJcL21vZHVsZXNcLyRNT0RURVNUX1VOQU1FXC8vL2ciYAorUjI9YGVjaG8gJFIxYAkjIHJlbW92ZSBuZXdsaW5lcworWyAiJFIyIiA9ICJpbnNtb2QgYS5rbyBpbnNtb2QgYi5rbyBpbnNtb2QgYy5rbyBpbnNtb2QgZC5rbyBpbnNtb2QgZS5rbyBpbnNtb2QgYS5rbyBpbnNtb2QgZi5rbyIgXQorCisjIFJlbW92ZS10ZXN0CisKK1IxPWBtb2Rwcm9iZSAtdiAtciBjX2FsaWFzIDI+JjEgfCBcCisJZ3JlcCAtdiBERUxFVEVfTU9EVUxFXDogfCBcCisJc2VkIC1lICJzL1wvbGliXC9tb2R1bGVzXC8kTU9EVEVTVF9VTkFNRVwvLy9nImAKK1IyPWBlY2hvICRSMWAJIyByZW1vdmUgbmV3bGluZXMKK1sgIiRSMiIgPSAicm1tb2QgZi5rbyBybW1vZCBhLmtvIHJtbW9kIGUua28gcm1tb2QgZC5rbyBybW1vZCBjLmtvIHJtbW9kIGIua28gcm1tb2QgYS5rbyIgXQorCisjIFRlc3QgbG9vcCBkZXRlY3RvcgorCitta2RpciAtcCB0ZXN0cy90bXAvZXRjL21vZHByb2JlLmQKK2NhdCA+IHRlc3RzL3RtcC9ldGMvbW9kcHJvYmUuZC9tb2Rwcm9iZS5jb25mIDw8IEVPRgorYWxpYXMgYV9hbGlhcyBhCitzb2Z0ZGVwIGEgcHJlOiBiCitzb2Z0ZGVwIGIgcHJlOiBhCitFT0YKKworUjE9YG1vZHByb2JlIC12IGFfYWxpYXMgMj4mMSB8IGNhdGAgIyBzaGVsbCB3b24ndCBhc3NpZ24gdG8gUjEgd2l0aG91dCBuby1vcCBjYXQuCisjIFRoaXMgY29tcGFyaXNvbiB3aWxsIGZhaWwgaWYgTUFYX1JFQ1VSU0lPTiBpcyBvZGQuIEluIHRoYXQgY2FzZTogcy9iL2EvZworWyAiJFIxIiA9ICJGQVRBTDogbW9kcHJvYmU6IHNvZnRkZXAgZGVwZW5kZW5jeSBsb29wIGVuY291bnRlcmVkIGluc2VydGluZyBiIiBdCisKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LXJtbW9kLzAybmFtZWZpeC5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LXJtbW9kLzAybmFtZWZpeC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOGViMDJlCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3Qtcm1tb2QvMDJuYW1lZml4LnNoCkBAIC0wLDAgKzEsMTYgQEAKKyMhIC9iaW4vc2gKKworbWtkaXIgLXAgdGVzdHMvdG1wL3Byb2MKKworIyBPbGQgc3R5bGUKK2VjaG8gJ2Zvb19iYXIgMTAwIDAnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgZm9vX2JhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBOT05CTE9DSyAiIF0KKworWyAiYHJtbW9kIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvZm9vX2Jhci5vYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIE5PTkJMT0NLICIgXQorCitbICJgcm1tb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2tlcm5lbC9mb29fYmFyLmtvYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIE5PTkJMT0NLICIgXQorCitbICJgcm1tb2QgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2tlcm5lbC9mb28tYmFyLmtvYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIE5PTkJMT0NLICIgXQorCitbICJgcm1tb2QgZm9vLWJhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBOT05CTE9DSyAiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LXJtbW9kLzAzaW51c2Uuc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wM2ludXNlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVkNWFlMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wM2ludXNlLnNoCkBAIC0wLDAgKzEsNTAgQEAKKyMhIC9iaW4vc2gKKworbWtkaXIgLXAgdGVzdHMvdG1wL3Byb2MKKworIyBPbGQgc3R5bGUKK2VjaG8gJ2Zvb19iYXIgMTAwIDEnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgZm9vX2JhciAyPiYxYCIgPSAiRVJST1I6IE1vZHVsZSBmb29fYmFyIGlzIGluIHVzZSIgXQorWyAiYHJtbW9kIGZvby1iYXIgMj4mMWAiID0gIkVSUk9SOiBNb2R1bGUgZm9vX2JhciBpcyBpbiB1c2UiIF0KKworIyBPbGQgc3R5bGUgd2l0aCBkZXBlbmRlbmNpZXMKK2VjaG8gJ2Zvb19iYXIgMTAwIDEgZGVwMScgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCisKK1sgImBybW1vZCBmb29fYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIGJ5IGRlcDEiIF0KK1sgImBybW1vZCBmb28tYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIGJ5IGRlcDEiIF0KKworZWNobyAnZm9vX2JhciAxMDAgMSBkZXAxIGRlcDInID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgZm9vX2JhciAyPiYxYCIgPSAiRVJST1I6IE1vZHVsZSBmb29fYmFyIGlzIGluIHVzZSBieSBkZXAxIGRlcDIiIF0KK1sgImBybW1vZCBmb28tYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIGJ5IGRlcDEgZGVwMiIgXQorCisjIE5ldyBzdHlsZQorZWNobyAnZm9vX2JhciAxMDAgMSAtJyA+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKworWyAiYHJtbW9kIGZvb19iYXIgMj4mMWAiID0gIkVSUk9SOiBNb2R1bGUgZm9vX2JhciBpcyBpbiB1c2UiIF0KK1sgImBybW1vZCBmb28tYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIiBdCisKK2VjaG8gJ2Zvb19iYXIgMTAwIDEgYSwnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgZm9vX2JhciAyPiYxYCIgPSAiRVJST1I6IE1vZHVsZSBmb29fYmFyIGlzIGluIHVzZSBieSBhIiBdCitbICJgcm1tb2QgZm9vLWJhciAyPiYxYCIgPSAiRVJST1I6IE1vZHVsZSBmb29fYmFyIGlzIGluIHVzZSBieSBhIiBdCisKK2VjaG8gJ2Zvb19iYXIgMTAwIDEgYSxiLCcgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCisKK1sgImBybW1vZCBmb29fYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIGJ5IGEsYiIgXQorWyAiYHJtbW9kIGZvby1iYXIgMj4mMWAiID0gIkVSUk9SOiBNb2R1bGUgZm9vX2JhciBpcyBpbiB1c2UgYnkgYSxiIiBdCisKK2VjaG8gJ2Zvb19iYXIgMTAwIDEgYSxiLCBuZXdvcHRpb24nID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgZm9vX2JhciAyPiYxYCIgPSAiRVJST1I6IE1vZHVsZSBmb29fYmFyIGlzIGluIHVzZSBieSBhLGIiIF0KK1sgImBybW1vZCBmb28tYmFyIDI+JjFgIiA9ICJFUlJPUjogTW9kdWxlIGZvb19iYXIgaXMgaW4gdXNlIGJ5IGEsYiIgXQorCisjIE5vdCBpbiB1c2UgKG5ld3N0eWxlKQorZWNobyAnZm9vX2JhciAxMDAgMCAtJyA+IHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKK1sgImBybW1vZCBmb29fYmFyYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIE5PTkJMT0NLICIgXQorWyAiYHJtbW9kIGZvby1iYXJgIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgTk9OQkxPQ0sgIiBdCisKK2VjaG8gJ2Zvb19iYXIgMTAwIDAgLSBuZXdvcHRpb24nID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworWyAiYHJtbW9kIGZvb19iYXJgIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgTk9OQkxPQ0sgIiBdCitbICJgcm1tb2QgZm9vLWJhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBOT05CTE9DSyAiIF0KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LXJtbW9kLzA0ZmxhZ3Muc2ggYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wNGZsYWdzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUzYmRiY2UKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wNGZsYWdzLnNoCkBAIC0wLDAgKzEsMjYgQEAKKyMhIC9iaW4vc2gKKworbWtkaXIgLXAgdGVzdHMvdG1wL3Byb2MKKworIyBPbGQgc3R5bGUKK2VjaG8gJ2Zvb19iYXIgMTAwIDAnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCitbICJgcm1tb2QgLWYgZm9vX2JhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBUUlVOQyBOT05CTE9DSyAiIF0KK1sgImBybW1vZCAtZiBmb28tYmFyYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIFRSVU5DIE5PTkJMT0NLICIgXQorCitbICJgcm1tb2QgLWYgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2tlcm5lbC9mb29fYmFyLm9gIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgVFJVTkMgTk9OQkxPQ0sgIiBdCitbICJgcm1tb2QgLWYgL2xpYi9tb2R1bGVzLyRNT0RURVNUX1VOQU1FL2tlcm5lbC9mb29fYmFyLmtvYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIFRSVU5DIE5PTkJMT0NLICIgXQorWyAiYHJtbW9kIC1mIC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvZm9vLWJhci5rb2AiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBUUlVOQyBOT05CTE9DSyAiIF0KKworWyAiYHJtbW9kIC13IGZvb19iYXJgIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgIiBdCitbICJgcm1tb2QgLXcgZm9vLWJhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCAiIF0KKworWyAiYHJtbW9kIC13IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvZm9vX2Jhci5vYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMICIgXQorWyAiYHJtbW9kIC13IC9saWIvbW9kdWxlcy8kTU9EVEVTVF9VTkFNRS9rZXJuZWwvZm9vX2Jhci5rb2AiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCAiIF0KK1sgImBybW1vZCAtdyAvbGliL21vZHVsZXMvJE1PRFRFU1RfVU5BTUUva2VybmVsL2Zvby1iYXIua29gIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgIiBdCisKKyMgQm90aCBzaG91bGQgd29yayBvbiAiaW4tdXNlIiBtb2R1bGVzLgorZWNobyAnZm9vX2JhciAxMDAgMScgPiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCisKK1sgImBybW1vZCAtZiBmb29fYmFyYCIgPSAiREVMRVRFX01PRFVMRTogZm9vX2JhciBFWENMIFRSVU5DIE5PTkJMT0NLICIgXQorWyAiYHJtbW9kIC13IGZvb19iYXJgIiA9ICJERUxFVEVfTU9EVUxFOiBmb29fYmFyIEVYQ0wgIiBdCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wNW5vcHJvYy5zaCBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy90ZXN0LXJtbW9kLzA1bm9wcm9jLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmEwM2M3MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wNW5vcHJvYy5zaApAQCAtMCwwICsxLDE3IEBACisjISAvYmluL3NoCisKK21rZGlyIC1wIHRlc3RzL3RtcC9wcm9jCisKKyMgV2UgYWxsb3cgdGhpcyBpbiBjYXNlIHByb2MgaXMgbm90IG1vdW50ZWQuCitbICJgcm1tb2QgZm9vX2JhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBOT05CTE9DSyAiIF0KKworIyBXZSBkb24ndCBhbGxvdyBhbnkgb3RoZXIgZXJyb3JzLiAgRG9lc24ndCB3b3JrIGlmIHdlJ3JlIHJvb3QuCitpZiBbIGBpZCAtdWAgLW5lIDAgXTsgdGhlbgorICAgIHRvdWNoIHRlc3RzL3RtcC9wcm9jL21vZHVsZXMKKyAgICBjaG1vZCAwMDAgdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworCisgICAgWyAiYHJtbW9kIGZvb19iYXIgMj4mMWAiID0gIkZBVEFMOiBjYW4ndCBvcGVuIC9wcm9jL21vZHVsZXM6IFBlcm1pc3Npb24gZGVuaWVkIiBdCisKKyAgICAjIEJ1dCAtZiBkb2Vzbid0IGNhcmUKKyAgICBbICJgcm1tb2QgLWYgZm9vX2JhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvb19iYXIgRVhDTCBUUlVOQyBOT05CTE9DSyAiIF0KK2ZpCmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdGVzdHMvdGVzdC1ybW1vZC8wNm11bHRpLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3Qtcm1tb2QvMDZtdWx0aS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NzYyZWZmCi0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3Rlc3Qtcm1tb2QvMDZtdWx0aS5zaApAQCAtMCwwICsxLDI2IEBACisjISAvYmluL3NoCisKK21rZGlyIC1wIHRlc3RzL3RtcC9wcm9jCisKKyMgT2xkIHN0eWxlCitlY2hvICdmb28gMTAwIDAnID4gdGVzdHMvdG1wL3Byb2MvbW9kdWxlcworZWNobyAnYmFyIDEwMCAwJyA+PiB0ZXN0cy90bXAvcHJvYy9tb2R1bGVzCisKK1sgImBybW1vZCBmb28gYmFyYCIgPSAiREVMRVRFX01PRFVMRTogZm9vIEVYQ0wgTk9OQkxPQ0sgCitERUxFVEVfTU9EVUxFOiBiYXIgRVhDTCBOT05CTE9DSyAiIF0KKworWyAiYHJtbW9kIC1mIGZvbyBiYXJgIiA9ICJERUxFVEVfTU9EVUxFOiBmb28gRVhDTCBUUlVOQyBOT05CTE9DSyAKK0RFTEVURV9NT0RVTEU6IGJhciBFWENMIFRSVU5DIE5PTkJMT0NLICIgXQorCitbICJgcm1tb2QgLXcgZm9vIGJhcmAiID0gIkRFTEVURV9NT0RVTEU6IGZvbyBFWENMIAorREVMRVRFX01PRFVMRTogYmFyIEVYQ0wgIiBdCisKKyMgRmlyc3QgZXhhbWluZSBzdGRvdXQgKG1peGluZyB0aGVtIGdpdmVzIHVucHJlZGljdGFibGUgcmVzdWx0cykKK1sgImBybW1vZCBmb28gYmFyIGJheiAyPi9kZXYvbnVsbGAiID0gIkRFTEVURV9NT0RVTEU6IGZvbyBFWENMIE5PTkJMT0NLIAorREVMRVRFX01PRFVMRTogYmFyIEVYQ0wgTk9OQkxPQ0sgIiBdCitbICJgcm1tb2QgYmF6IGZvbyBiYXIgMj4vZGV2L251bGxgIiA9ICJERUxFVEVfTU9EVUxFOiBmb28gRVhDTCBOT05CTE9DSyAKK0RFTEVURV9NT0RVTEU6IGJhciBFWENMIE5PTkJMT0NLICIgXQorCisjIE5vdyBleGFtaW5lIHN0ZGVyci4KK1sgImBybW1vZCBmb28gYmFyIGJheiAyPiYxID4vZGV2L251bGxgIiA9ICJFUlJPUjogTW9kdWxlIGJheiBkb2VzIG5vdCBleGlzdCBpbiAvcHJvYy9tb2R1bGVzIiBdCitbICJgcm1tb2QgYmF6IGZvbyBiYXIgMj4mMSA+L2Rldi9udWxsYCIgPSAiRVJST1I6IE1vZHVsZSBiYXogZG9lcyBub3QgZXhpc3QgaW4gL3Byb2MvbW9kdWxlcyIgXQpkaWZmIC0tZ2l0IGEvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3ZhbGdyaW5kL3N1cHByZXNzaW9ucyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy92YWxncmluZC9zdXBwcmVzc2lvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyODlmOAotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy92YWxncmluZC9zdXBwcmVzc2lvbnMKQEAgLTAsMCArMSwzMyBAQAoreworICAgR2xpYmMgZ29lcyBib29tIGZyb20gX3N0YXJ0IChEZWJpYW4gZ2xpYmMgMi4zLjUtMykKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIG9iajovbGliL2xkLTIuMy41LnNvCisgICBvYmo6L2xpYi9sZC0yLjMuNS5zbworICAgb2JqOi9saWIvbGQtMi4zLjUuc28KKyAgIG9iajovbGliL2xkLTIuMy41LnNvCisgICBvYmo6L2xpYi9sZC0yLjMuNS5zbworfQoreworICAgIEdDQyBzdHJsZW4oKSBidWlsdGluIGdlbmVyYXRlcyBxdWVzdGlvbmFibGUgcmVhZHMKKyAgICBNZW1jaGVjazpBZGRyNAorICAgIGZ1bjpvdXRwdXRfc3ltYm9scworICAgIGZ1bjptYWluCit9Cit7CisgICAgR0NDIHN0cmxlbigpIGJ1aWx0aW4gZ2VuZXJhdGVzIHF1ZXN0aW9uYWJsZSByZWFkcworICAgIE1lbWNoZWNrOkFkZHI0CisgICAgZnVuOm91dHB1dF9hbGlhc2VzCisgICAgZnVuOm1haW4KK30KK3sKKyAgICBHQ0Mgc3RybGVuKCkgYnVpbHRpbiBnZW5lcmF0ZXMgcXVlc3Rpb25hYmxlIHJlYWRzCisgICAgTWVtY2hlY2s6QWRkcjQKKyAgICBmdW46b3V0cHV0X3N5bWJvbHNfYmluCisgICAgZnVuOm1haW4KK30KK3sKKyAgICBHQ0Mgc3RybGVuKCkgYnVpbHRpbiBnZW5lcmF0ZXMgcXVlc3Rpb25hYmxlIHJlYWRzCisgICAgTWVtY2hlY2s6QWRkcjQKKyAgICBmdW46b3V0cHV0X2FsaWFzZXNfYmluCisgICAgZnVuOm1haW4KK30KZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy92YWxncmluZC92YWxncmluZG1lLnNoIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3Rlc3RzL3ZhbGdyaW5kL3ZhbGdyaW5kbWUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWQ0Y2FkZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi90ZXN0cy92YWxncmluZC92YWxncmluZG1lLnNoCkBAIC0wLDAgKzEsMTQgQEAKKyMhIC9iaW4vc2gKKworIyBNYWtlIHN1cmUgaXQgZmluZHMgdGhlIHJlYWwgb25lIHRoaXMgdGltZS4KK1BBVEg9YHB3ZGAvdGVzdHMvYnVpbGQ6JFBBVEgKK3ZhbGdyaW5kIC1xIC0tbnVtLWNhbGxlcnM9OCAtLWxlYWstY2hlY2s9eWVzIC0tc3VwcHJlc3Npb25zPXRlc3RzL3ZhbGdyaW5kL3N1cHByZXNzaW9ucyAtLWxvZy1mZD0zIGBiYXNlbmFtZSAkMGAgIiRAIiAzPnRlc3RzL3RtcC92YWxncmluZAorcmV0PSQ/CisKK2lmIFsgLXMgdGVzdHMvdG1wL3ZhbGdyaW5kIF07IHRoZW4KKyAgICBlY2hvIFZBTEdSSU5EIEZBSUxFRCBmb3IgJDAgIiRAIiA+IC9wcm9jLyRQUElEL2ZkLzEKKyAgICBjYXQgdGVzdHMvdG1wL3ZhbGdyaW5kID4gL3Byb2MvJFBQSUQvZmQvMQorICAgIGtpbGwgJFBQSUQKKyAgICBleGl0IDEKK2ZpCitleGl0ICRyZXQKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi91dGlsLmMgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZGI5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdXRpbC5jCkBAIC0wLDAgKzEsMjM0IEBACisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGVsZi5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHJlZ2V4Lmg+CisjaW5jbHVkZSAibG9nZ2luZy5oIgorI2luY2x1ZGUgInV0aWwuaCIKKworLyoKKyAqIFJlYWQgb25lIGxvZ2ljYWwgbGluZSBmcm9tIGEgY29uZmlndXJhdGlvbiBmaWxlLgorICoKKyAqIExpbmUgZW5kaW5ncyBtYXkgYmUgZXNjYXBlZCB3aXRoIGJhY2tzbGFzaGVzLCB0byBmb3JtIG9uZSBsb2dpY2FsIGxpbmUgZnJvbQorICogc2V2ZXJhbCBwaHlzaWNhbCBsaW5lcy4gIE5vIGVuZCBvZiBsaW5lIGNoYXJhY3RlcihzKSBhcmUgaW5jbHVkZWQgaW4gdGhlCisgKiByZXN1bHQuCisgKgorICogSWYgbGluZW51bSBpcyBub3QgTlVMTCwgaXQgaXMgaW5jcmVtZW50ZWQgYnkgdGhlIG51bWJlciBvZiBwaHlzaWNhbCBsaW5lcworICogd2hpY2ggaGF2ZSBiZWVuIHJlYWQuCisgKi8KK2NoYXIgKmdldGxpbmVfd3JhcHBlZChGSUxFICpmaWxlLCB1bnNpZ25lZCBpbnQgKmxpbmVudW0pCit7CisJaW50IHNpemUgPSAyNTY7CisJaW50IGkgPSAwOworCWNoYXIgKmJ1ZiA9IE5PRkFJTChtYWxsb2Moc2l6ZSkpOworCWZvcig7OykgeworCQlpbnQgY2ggPSBnZXRjX3VubG9ja2VkKGZpbGUpOworCisJCXN3aXRjaChjaCkgeworCQljYXNlIEVPRjoKKwkJCWlmIChpID09IDApIHsKKwkJCQlmcmVlKGJ1Zik7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQkvKiBlbHNlIGZhbGwgdGhyb3VnaCAqLworCisJCWNhc2UgJ1xuJzoKKwkJCWlmIChsaW5lbnVtKQorCQkJCSgqbGluZW51bSkrKzsKKwkJCWlmIChpID09IHNpemUpCisJCQkJYnVmID0gTk9GQUlMKHJlYWxsb2MoYnVmLCBzaXplICsgMSkpOworCQkJYnVmW2ldID0gJ1wwJzsKKwkJCXJldHVybiBidWY7CisKKwkJY2FzZSAnXFwnOgorCQkJY2ggPSBnZXRjX3VubG9ja2VkKGZpbGUpOworCisJCQlpZiAoY2ggPT0gJ1xuJykgeworCQkJCWlmIChsaW5lbnVtKQorCQkJCQkoKmxpbmVudW0pKys7CisJCQkJY29udGludWU7CisJCQl9CisJCQkvKiBlbHNlIGZhbGwgdGhyb3VnaCAqLworCisJCWRlZmF1bHQ6CisJCQlidWZbaSsrXSA9IGNoOworCisJCQlpZiAoaSA9PSBzaXplKSB7CisJCQkJc2l6ZSAqPSAyOworCQkJCWJ1ZiA9IE5PRkFJTChyZWFsbG9jKGJ1Ziwgc2l6ZSkpOworCQkJfQorCQl9CisJfQorfQorCisvKgorICogQ29udmVydCBmaWxlbmFtZSB0byB0aGUgbW9kdWxlIG5hbWUuICBXb3JrcyBpZiBmaWxlbmFtZSA9PSBtb2RuYW1lLCB0b28uCisgKi8KK3ZvaWQgZmlsZW5hbWUybW9kbmFtZShjaGFyICptb2RuYW1lLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKK3sKKwljb25zdCBjaGFyICphZnRlcnNsYXNoOworCXVuc2lnbmVkIGludCBpOworCisJYWZ0ZXJzbGFzaCA9IG15X2Jhc2VuYW1lKGZpbGVuYW1lKTsKKworCS8qIENvbnZlcnQgdG8gdW5kZXJzY29yZXMsIHN0b3AgYXQgZmlyc3QgLiAqLworCWZvciAoaSA9IDA7IGFmdGVyc2xhc2hbaV0gJiYgYWZ0ZXJzbGFzaFtpXSAhPSAnLic7IGkrKykgeworCQlpZiAoYWZ0ZXJzbGFzaFtpXSA9PSAnLScpCisJCQltb2RuYW1lW2ldID0gJ18nOworCQllbHNlCisJCQltb2RuYW1lW2ldID0gYWZ0ZXJzbGFzaFtpXTsKKwl9CisJbW9kbmFtZVtpXSA9ICdcMCc7Cit9CisKKy8qCisgKiBSZXBsYWNlIGRhc2hlcyB3aXRoIHVuZGVyc2NvcmVzLgorICogRGFzaGVzIGluc2lkZSBjaGFyYWN0ZXIgcmFuZ2UgcGF0dGVybnMgKGUuZy4gWzAtOV0pIGFyZSBsZWZ0IHVuY2hhbmdlZC4KKyAqLworY2hhciAqdW5kZXJzY29yZXMoY2hhciAqc3RyaW5nKQoreworCXVuc2lnbmVkIGludCBpOworCisJaWYgKCFzdHJpbmcpCisJCXJldHVybiBOVUxMOworCisJZm9yIChpID0gMDsgc3RyaW5nW2ldOyBpKyspIHsKKwkJc3dpdGNoIChzdHJpbmdbaV0pIHsKKwkJY2FzZSAnLSc6CisJCQlzdHJpbmdbaV0gPSAnXyc7CisJCQlicmVhazsKKworCQljYXNlICddJzoKKwkJCXdhcm4oIlVubWF0Y2hlZCBicmFja2V0IGluICVzXG4iLCBzdHJpbmcpOworCQkJYnJlYWs7CisKKwkJY2FzZSAnWyc6CisJCQlpICs9IHN0cmNzcG4oJnN0cmluZ1tpXSwgIl0iKTsKKwkJCWlmICghc3RyaW5nW2ldKQorCQkJCXdhcm4oIlVubWF0Y2hlZCBicmFja2V0IGluICVzXG4iLCBzdHJpbmcpOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIHN0cmluZzsKK30KKworLyoKKyAqIHN0cnRibF9hZGQgLSBhZGQgYSBzdHJpbmcgdG8gYSBzdHJpbmcgdGFibGUuCisgKgorICogQHN0cjogc3RyaW5nIHRvIGFkZAorICogQHRibDogY3VycmVudCBzdHJpbmcgdGFibGUuIE5VTEwgPSBhbGxvY2F0ZSBuZXcgdGFibGUKKyAqCisgKiBBbGxvY2F0ZXMgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gc3RyaW5ncy4KKyAqIFRoZSBzdHJpbmdzIHRoZW1zZWx2ZXMgYXJlIG5vdCBhY3R1YWxseSBrZXB0IGluIHRoZSB0YWJsZS4KKyAqCisgKiBSZXR1cm5zIHJlYWxsb2NhdGVkIGFuZCB1cGRhdGVkIHN0cmluZyB0YWJsZS4gTlVMTCA9IG91dCBvZiBtZW1vcnkuCisgKgorICogSW1wbGVtZW50YXRpb24gbm90ZTogVGhlIHN0cmluZyB0YWJsZSBpcyBkZXNpZ25lZCB0byBiZSBsaWdodGVyLXdlaWdodAorICogYW5kIGZhc3RlciB0aGFuIGEgbW9yZSBjb252ZW50aW9uYWwgbGlua2VkIGxpc3QgdGhhdCBzdG9yZXMgdGhlIHN0cmluZ3MKKyAqIGluIHRoZSBsaXN0IGVsZW1lbnRzLCBhcyBpdCBkb2VzIGZhciBmZXdlciBtYWxsb2MvcmVhbGxvYyBjYWxscworICogYW5kIGF2b2lkcyBjb3B5aW5nIGVudGlyZWx5LgorICovCitzdHJ1Y3Qgc3RyaW5nX3RhYmxlICpzdHJ0YmxfYWRkKGNvbnN0IGNoYXIgKnN0ciwgc3RydWN0IHN0cmluZ190YWJsZSAqdGJsKQoreworCWlmICh0YmwgPT0gTlVMTCkgeworCQljb25zdCBjaGFyIG1heCA9IDEwMDsKKwkJdGJsID0gbWFsbG9jKHNpemVvZigqdGJsKSArIHNpemVvZihjaGFyICopICogbWF4KTsKKwkJaWYgKCF0YmwpCisJCQlyZXR1cm4gTlVMTDsKKwkJdGJsLT5tYXggPSBtYXg7CisJCXRibC0+Y250ID0gMDsKKwl9CisJaWYgKHRibC0+Y250ID49IHRibC0+bWF4KSB7CisJCXRibC0+bWF4ICo9IDI7CisJCXRibCA9IHJlYWxsb2ModGJsLCBzaXplb2YoKnRibCkgKyBzaXplb2YoY2hhciAqKSAqIHRibC0+bWF4KTsKKwkJaWYgKCF0YmwpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisJdGJsLT5zdHJbdGJsLT5jbnRdID0gc3RyOworCXRibC0+Y250ICs9IDE7CisKKwlyZXR1cm4gdGJsOworfQorCisvKgorICogc3RydGJsX2ZyZWUgLSBzdHJpbmcgdGFibGUgZGVzdHJ1Y3RvcgorICovCit2b2lkIHN0cnRibF9mcmVlKHN0cnVjdCBzdHJpbmdfdGFibGUgKnRibCkKK3sKKwlmcmVlKHRibCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGJhc2VuYW1lIGluIGEgcGF0aG5hbWUuCisgKiBVbmxpa2UgdGhlIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uLCB0aGlzIGRvZXMgbm90IGNvcHkgdGhlIHN0cmluZy4KKyAqLworY2hhciAqbXlfYmFzZW5hbWUoY29uc3QgY2hhciAqcGF0aCkKK3sKKwljb25zdCBjaGFyICpiYXNlID0gc3RycmNocihwYXRoLCAnLycpOworCWlmIChiYXNlKQorCQlyZXR1cm4gKGNoYXIgKikgYmFzZSArIDE7CisJcmV0dXJuIChjaGFyICopIHBhdGg7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBuZXh0IHN0cmluZyBpbiBhbiBFTEYgc2VjdGlvbi4KKyAqLworY29uc3QgY2hhciAqbmV4dF9zdHJpbmcoY29uc3QgY2hhciAqc3RyaW5nLCB1bnNpZ25lZCBsb25nICpzZWNzaXplKQoreworCS8qIFNraXAgbm9uLXplcm8gY2hhcnMgKi8KKwl3aGlsZSAoc3RyaW5nWzBdKSB7CisJCXN0cmluZysrOworCQlpZiAoKCpzZWNzaXplKS0tIDw9IDEpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBTa2lwIGFueSB6ZXJvIHBhZGRpbmcuICovCisJd2hpbGUgKCFzdHJpbmdbMF0pIHsKKwkJc3RyaW5nKys7CisJCWlmICgoKnNlY3NpemUpLS0gPD0gMSkKKwkJCXJldHVybiBOVUxMOworCX0KKwlyZXR1cm4gc3RyaW5nOworfQorCisvKgorICogR2V0IENQVSBlbmRpYW5uZXNzLiAwID0gdW5rbm93biwgMSA9IEVMRkRBVEEyTFNCID0gbGl0dGxlLCAyID0gRUxGREFUQTJNU0IgPSBiaWcKKyAqLworaW50IF9fYXR0cmlidXRlX18gKChwdXJlKSkgbmF0aXZlX2VuZGlhbm5lc3MoKQoreworCS8qIEVuY29kaW5nIHRoZSBlbmRpYW5uZXNzIGVudW1zIGluIGEgc3RyaW5nIGFuZCB0aGVuIHJlYWRpbmcgdGhhdAorCSAqIHN0cmluZyBhcyBhIDMyLWJpdCBpbnQsIHJldHVybnMgdGhlIGNvcnJlY3QgZW5kaWFubmVzcyBhdXRvbWFnaWNhbGx5LgorCSAqLworCXJldHVybiAoY2hhcikgKigodWludDMyX3QqKSgiXDFcMFwwXDIiKSk7Cit9CisKKy8qCisgKiBDb21wYXJlICJzdHJpbmciIHdpdGggZXh0ZW5kZWQgcmVnZXggInBhdHRlcm4iLiBJbmNsdWRlIGJhY2t3YXJkIGNvbXBhdGlibGUKKyAqIG1hdGNoaW5nIG9mICIqIiBhcyBhIHdpbGRjYXJkIGJ5IHJlcGxhY2luZyBpdCB3aXRoICIuKiIgYXV0b21hdGljYWxseS4KKyAqLworaW50IHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIgKnN0cmluZywgY29uc3QgY2hhciAqcGF0dGVybikKK3sKKwlpbnQgc3RhdHVzOworCXJlZ2V4X3QgcmU7CisJY2hhciAqZml4X3BhdHRlcm47CisKKwkvKiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkICJtYXRjaCIgY29kZSAqLworCWlmIChzdHJuY21wKCIqIiwgcGF0dGVybiwgMSkgIT0gMCkKKwkJZml4X3BhdHRlcm4gPSAoY2hhciAqKXBhdHRlcm47CisJZWxzZQorCQlmaXhfcGF0dGVybiA9ICIuKiI7IC8qIG1hdGNoIGV2ZXJ5dGhpbmcgKi8KKworCWlmIChyZWdjb21wKCZyZSwgZml4X3BhdHRlcm4sIFJFR19FWFRFTkRFRHxSRUdfTk9TVUIpICE9IDApCisJCXJldHVybiAwOwkvKiBhbGxvYyBmYWlsdXJlICovCisKKwlzdGF0dXMgPSByZWdleGVjKCZyZSwgc3RyaW5nLCAoc2l6ZV90KSAwLCBOVUxMLCAwKTsKKwlyZWdmcmVlKCZyZSk7CisKKwlpZiAoc3RhdHVzICE9IDApCisJCXJldHVybiAwOwkvKiBubyBtYXRjaCAqLworCisJcmV0dXJuIDE7CS8qIG1hdGNoICovCit9CmRpZmYgLS1naXQgYS9tb2R1bGUtaW5pdC10b29scy0zLjEyLXByZTIvdXRpbC5oIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3V0aWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjUwY2E1Ci0tLSAvZGV2L251bGwKKysrIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3V0aWwuaApAQCAtMCwwICsxLDQ5IEBACisjaWZuZGVmIF9VVElMX0gKKyNkZWZpbmUgX1VUSUxfSAorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RydWN0IHN0cmluZ190YWJsZQoreworCXVuc2lnbmVkIGludCBjbnQ7CisJdW5zaWduZWQgaW50IG1heDsKKwljb25zdCBjaGFyICpzdHJbMF07Cit9OworCitjaGFyICpnZXRsaW5lX3dyYXBwZWQoRklMRSAqZmlsZSwgdW5zaWduZWQgaW50ICpsaW5lbnVtKTsKKwordm9pZCBmaWxlbmFtZTJtb2RuYW1lKGNoYXIgKm1vZG5hbWUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKK2NoYXIgKnVuZGVyc2NvcmVzKGNoYXIgKnN0cmluZyk7CitjaGFyICpteV9iYXNlbmFtZShjb25zdCBjaGFyICpwYXRoKTsKKworc3RydWN0IHN0cmluZ190YWJsZSAqc3RydGJsX2FkZChjb25zdCBjaGFyICpzdHIsIHN0cnVjdCBzdHJpbmdfdGFibGUgKnRibCk7Cit2b2lkIHN0cnRibF9mcmVlKHN0cnVjdCBzdHJpbmdfdGFibGUgKnRibCk7CisKK2NvbnN0IGNoYXIgKm5leHRfc3RyaW5nKGNvbnN0IGNoYXIgKnN0cmluZywgdW5zaWduZWQgbG9uZyAqc2Vjc2l6ZSk7CisKKy8qCisgKiBDaGFuZ2UgZW5kaWFubmVzcyBvZiB4IGlmIGNvbnYgaXMgdHJ1ZS4KKyAqLworI2RlZmluZSBFTkQoeCwgY29udikJCQkJCQkJXAorKHsJCQkJCQkJCQlcCisJdHlwZW9mKHgpIF9feDsJCQkJCQkJXAorCWlmIChjb252KSBfX3N3YXBfYnl0ZXMoJih4KSwgJihfX3gpLCBzaXplb2YoX194KSk7CQlcCisJZWxzZSBfX3ggPSAoeCk7CQkJCQkJCVwKKwlfX3g7CQkJCQkJCQlcCit9KQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19zd2FwX2J5dGVzKGNvbnN0IHZvaWQgKnNyYywgdm9pZCAqZGVzdCwgdW5zaWduZWQgaW50IHNpemUpCit7CisJdW5zaWduZWQgaW50IGk7CisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKwkJKCh1bnNpZ25lZCBjaGFyKilkZXN0KVtpXSA9ICgodW5zaWduZWQgY2hhciopc3JjKVtzaXplIC0gaS0xXTsKK30KKworaW50IG5hdGl2ZV9lbmRpYW5uZXNzKHZvaWQpOworCisjZGVmaW5lIHN0cmVxKGEsYikgKHN0cmNtcCgoYSksKGIpKSA9PSAwKQorI2RlZmluZSBzdHJzdGFydHMoYSxzdGFydCkgKHN0cm5jbXAoKGEpLChzdGFydCksIHN0cmxlbihzdGFydCkpID09IDApCisKK2ludCByZWdleF9tYXRjaChjb25zdCBjaGFyICpzdHJpbmcsIGNvbnN0IGNoYXIgKnBhdHRlcm4pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi96bGlic3VwcG9ydC5jIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3psaWJzdXBwb3J0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk3ODIwZQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi96bGlic3VwcG9ydC5jCkBAIC0wLDAgKzEsMTAwIEBACisvKiBTdXBwb3J0IGZvciBjb21wcmVzc2VkIG1vZHVsZXMuICBXaWxseSBUYXJyZWF1IDx3aWxseUBtZXRhLXgub3JnPgorICogZGlkIHRoZSBzdXBwb3J0IGZvciBtb2R1dGlscywgQW5kcmV5IEJvcnplbmtvdiA8YXJ2aWRqYWFyQG1haWwucnU+CisgKiBwb3J0ZWQgaXQgdG8gbW9kdWxlLWluaXQtdG9vbHMsIGFuZCBJIHNhaWQgaXQgd2FzIHRvbyB1Z2x5IHRvIGxpdmUKKyAqIGFuZCByZXdyb3RlIGl0IDgpLgorICoKKyAqIChDKSAyMDAzIFJ1c3R5IFJ1c3NlbGwsIElCTSBDb3Jwb3JhdGlvbi4KKyAqLworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisKKyNpbmNsdWRlICJ6bGlic3VwcG9ydC5oIgorI2luY2x1ZGUgImxvZ2dpbmcuaCIKKyNpbmNsdWRlICJ0ZXN0aW5nLmgiCisKKyNpZmRlZiBDT05GSUdfVVNFX1pMSUIKKyNpbmNsdWRlIDx6bGliLmg+CisKK3ZvaWQgKmdyYWJfY29udGVudHMoZ3pGaWxlICpnemZkLCB1bnNpZ25lZCBsb25nICpzaXplKQoreworCXVuc2lnbmVkIGludCBtYXggPSAxNjM4NDsKKwl2b2lkICpidWZmZXIgPSBOT0ZBSUwobWFsbG9jKG1heCkpOworCWludCByZXQ7CisKKwkqc2l6ZSA9IDA7CisJd2hpbGUgKChyZXQgPSBnenJlYWQoZ3pmZCwgYnVmZmVyICsgKnNpemUsIG1heCAtICpzaXplKSkgPiAwKSB7CisJCSpzaXplICs9IHJldDsKKwkJaWYgKCpzaXplID09IG1heCkKKwkJCWJ1ZmZlciA9IE5PRkFJTChyZWFsbG9jKGJ1ZmZlciwgbWF4ICo9IDIpKTsKKwl9CisJaWYgKHJldCA8IDApIHsKKwkJZnJlZShidWZmZXIpOworCQlidWZmZXIgPSBOVUxMOworCX0KKworCXJldHVybiBidWZmZXI7Cit9CisKKy8qIGd6b3BlbiBoYW5kbGVzIHVuY29tcHJlc3NlZCBmaWxlcyB0cmFuc3BhcmVudGx5LiAqLwordm9pZCAqZ3JhYl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBsb25nICpzaXplKQoreworCWd6RmlsZSBnemZkOworCXZvaWQgKmJ1ZmZlcjsKKworCWVycm5vID0gMDsKKwlnemZkID0gZ3pvcGVuKGZpbGVuYW1lLCAicmIiKTsKKwlpZiAoIWd6ZmQpIHsKKwkJaWYgKGVycm5vID09IEVOT01FTSkKKwkJCWZhdGFsKCJNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIGd6b3BlblxuIik7CisJCXJldHVybiBOVUxMOworCX0KKwlidWZmZXIgPSBncmFiX2NvbnRlbnRzKGd6ZmQsIHNpemUpOworCWd6Y2xvc2UoZ3pmZCk7CisJcmV0dXJuIGJ1ZmZlcjsKK30KKwordm9pZCByZWxlYXNlX2ZpbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCWZyZWUoZGF0YSk7Cit9CisjZWxzZSAvKiAuLi4gIUNPTkZJR19VU0VfWkxJQiAqLworCit2b2lkICpncmFiX2ZkKGludCBmZCwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKwl2b2lkICptYXA7CisJaW50IHJldDsKKworCXJldCA9IGZzdGF0KGZkLCAmc3QpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gTlVMTDsKKwkqc2l6ZSA9IHN0LnN0X3NpemU7CisJbWFwID0gbW1hcCgwLCAqc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisJaWYgKG1hcCA9PSBNQVBfRkFJTEVEKQorCQltYXAgPSBOVUxMOworCXJldHVybiBtYXA7Cit9CisKK3ZvaWQgKmdyYWJfZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKK3sKKwlpbnQgZmQ7CisJdm9pZCAqbWFwOworCisJZmQgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSwgMCk7CisJaWYgKGZkIDwgMCkKKwkJcmV0dXJuIE5VTEw7CisJbWFwID0gZ3JhYl9mZChmZCwgc2l6ZSk7CisJY2xvc2UoZmQpOworCXJldHVybiBtYXA7Cit9CisKK3ZvaWQgcmVsZWFzZV9maWxlKHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKK3sKKwltdW5tYXAoZGF0YSwgc2l6ZSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi96bGlic3VwcG9ydC5oIGIvbW9kdWxlLWluaXQtdG9vbHMtMy4xMi1wcmUyL3psaWJzdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmUzYzcyOQotLS0gL2Rldi9udWxsCisrKyBiL21vZHVsZS1pbml0LXRvb2xzLTMuMTItcHJlMi96bGlic3VwcG9ydC5oCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX1pMSUJfU1VQUE9SVF9ICisjZGVmaW5lIF9aTElCX1NVUFBPUlRfSAorCisvKiBHcmFiIGZpbGUuICBEZWNvbXByZXNzZXMgaWYgdGhhdCBpcyBzdXBwb3J0ZWQuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IuICovCitleHRlcm4gdm9pZCAqZ3JhYl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1bnNpZ25lZCBsb25nICpzaXplKTsKK2V4dGVybiB2b2lkICpncmFiX2ZkKGludCBmZCwgdW5zaWduZWQgbG9uZyAqc2l6ZSk7CisKKy8qIEZyZWUgaXQgdXAuICovCitleHRlcm4gdm9pZCByZWxlYXNlX2ZpbGUodm9pZCAqZGF0YSwgdW5zaWduZWQgbG9uZyBzaXplKTsKKworI2VuZGlmIC8qIF9aTElCX1NVUFBPUlRfSCAqLwo=